From 6e1d88b4677077829a17282af2d6a33c302e0a99 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 14:29:15 +0100 Subject: [PATCH 01/75] Dumping the initial prototype from Mads --- .../Prototypes/TOF_train/DiskChopper.comp | 218 ++++ .../Prototypes/TOF_train/ESS_butterfly.comp | 614 ++++++++++ .../Prototypes/TOF_train/Monitor_nD.comp | 668 +++++++++++ .../TOF_train/MultiDiskChopper.comp | 351 ++++++ .../Prototypes/TOF_train/ODIN_wfm.instr | 1029 +++++++++++++++++ 5 files changed, 2880 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/TOF_train/DiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/TOF_train/ESS_butterfly.comp create mode 100644 mcstas-comps/examples/Prototypes/TOF_train/Monitor_nD.comp create mode 100644 mcstas-comps/examples/Prototypes/TOF_train/MultiDiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/TOF_train/ODIN_wfm.instr diff --git a/mcstas-comps/examples/Prototypes/TOF_train/DiskChopper.comp b/mcstas-comps/examples/Prototypes/TOF_train/DiskChopper.comp new file mode 100644 index 0000000000..06c37db584 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/TOF_train/DiskChopper.comp @@ -0,0 +1,218 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: DiskChopper +* +* %I +* Written by: Peter Willendrup +* Date: March 9 2006 +* Origin: Risoe +* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disc chopper with nslit identical slits, which are symmetrically distributed +* on the disc. At time t=0, the centre of the first slit opening will be situated at the +* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. +* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z +* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see +* related bug on GitHub) +* +* For more complicated gemometries, see component manual example of DiskChopper GROUPing. +* +* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. +* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the +* chopper timing and phasing (thus conserving your simulated statistics). +* +* The isfirst parameter is ONLY relevant for use in continuous source settings. +* +* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper +* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) +* +* NOTA BENE wrt. GROUPing and isfirst: +* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need +* to set up +* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening +* that spans the full angular extent of the openings of the subsequent GROUP +* 2) Add your DiskChopper GROUP setting isfirst=0 +* +* %P +* INPUT PARAMETERS: +* +* theta_0: [deg] Angular width of the slits. +* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. +* radius: [m] Radius of the disc +* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) +* nslit: [1] Number of slits, regularly arranged around the disk +* +* Optional parameters: +* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) +* n_pulse: [1] Number of pulses (Only if isfirst) +* jitter: [s] Jitter in the time phase +* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? +* delay: [s] Time 'delay' +* phase: [deg] Angular 'delay' (overrides delay) +* xwidth: [m] Horizontal slit width opening at beam center +* verbose: [1] Set to 1 to display Disk chopper configuration +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT DiskChopper + + + +SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +DECLARE +%{ + double Tg; + double To; + double delta_y; + double height; + double omega; +%} + +INITIALIZE +%{ + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } +%} + +TRACE +%{ + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + // Check whether each t_offset carried by the ray make it through + int train_index; + int one_did_hit = 0; + double this_train_t; + int all_dead = 1; + for (train_index=0; train_indexalive_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + _particle->alive_trains[train_index] = 0; + else one_did_hit = 1; + } + if (!one_did_hit || all_dead) ABSORB; + + } + SCATTER; +%} + +MCDISPLAY +%{ + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/TOF_train/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/TOF_train/ESS_butterfly.comp new file mode 100644 index 0000000000..e627ce669d --- /dev/null +++ b/mcstas-comps/examples/Prototypes/TOF_train/ESS_butterfly.comp @@ -0,0 +1,614 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2016, All rights reserved +* DTU Physics, Kongens Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: ESS_butterfly +* +* %I +* +* Written by: Peter Willendrup and Esben Klinkby +* Date: August-September 2016 +* Origin: DTU +* +* ESS butterfly moderator, 2016 revision +* +* %D +* ESS butterfly moderator with automatic choice of coordinate system, with origin +* placed at relevant "Moderator Focus Coordinate System" depending on sector location. +* +* To select beamport N 5 simply use +* +* COMPONENT Source = ESS_butterfly(sector="N",beamline=5,Lmin=0.1,Lmax=20,dist=2, +* cold_frac=0.5, yheight=0.03,focus_xw=0.1, focus_yh=0.1) +* +* Geometry +* The geometry corresponds correctly to the latest release of the butterfly moderator, +* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. +* A set of official release documents are available with this component, see the benchmarking +* website mentioned below. +* +* Brilliances, geometry adapted from earlier BF2 design +* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, +* are released as an updated component library for McStas 2.3, as well as a stand alone archive for +* use with earlier versions of McStas. +* +* The following features are worth highlighting: +* +* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be +* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. +* +*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance +* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation +* across sectors and potentially also performance losses due to engineering reality. +* +* Engineering reality +* An ad-hoc method for future implementation of "engineering reality" is included, use the +* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. +* +* References: +*

    +*
  1. Release document "Update to ESS Moderators, latest version" +*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" +*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures +*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. +*
  5. Source code for ESS_butterfly.comp at GitHub. +*
+* %P +* Input parameters: +* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" +* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector +* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m +* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator +* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 +* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 +* Lmin: [AA] Minimum wavelength simulated +* Lmax: [AA] Maximum wavelength simulated +* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. +* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index +* focus_xw: [m] Width of focusing rectangle +* focus_yh: [m] Height of focusing rectangle +* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. +* acc_power: [MW] Accelerator power in MW +* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. +* tfocus_dist: [m] Position of time focusing window along z axis +* tfocus_time: [s] Time position of time focusing window +* tfocus_width: [s] Time width of time focusing window +* +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT ESS_butterfly + +SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, + int target_index=0, dist=0, focus_xw=0, focus_yh=0, + c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, + acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0) + + +SHARE %{ + %include "ESS_butterfly-lib" + %include "ESS_butterfly-geometry.c" + + int nearest_angle(double angle) { + int AngleList[] = {5, 15, 25, 35, 45, 55}; + double diff = 180; + int jmin=0; + int j; + for (j=0; j<6; j++) { + if (fabs(AngleList[j]-angle) < diff) { + diff = fabs(AngleList[j]-angle); + jmin = j; + } + } + return AngleList[jmin]; + } + double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; + double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; + double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; + double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; + double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; + double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; + double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; + double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; + double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; + double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; + double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; + double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; + double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; +%} + +DECLARE +%{ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double *Beamlines; + double wfrac_cold; + double wfrac_thermal; + /* 'Corner' parametrization, i.e. where are the limits of the moderators */ + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + /* - plus rotated versions of the same... */ + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + + double cos_thermal; + double cos_cold; + + double orientation_angle; + /* Centering-parameters, which sector are we in? */ + double cx; + double cz; + int jmax; + double dxC; + double dxT; +%} + +INITIALIZE +%{ + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; +%} + +TRACE +%{ + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + for (train_index=0; train_index0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/N_trains; + _particle->alive_trains[train_index] = 1; + + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=1; + + SCATTER; +%} + +MCDISPLAY +%{ + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif +%} + +END diff --git a/mcstas-comps/examples/Prototypes/TOF_train/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/TOF_train/Monitor_nD.comp new file mode 100644 index 0000000000..4113a22334 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/TOF_train/Monitor_nD.comp @@ -0,0 +1,668 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Monitor_nD +* +* %Identification +* Written by: Emmanuel Farhi +* Date: 14th Feb 2000. +* Origin: ILL +* Release: McStas 1.6 +* Version: $Revision$ +* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi +* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) +* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster +* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) +* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) +* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) +* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) +* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) +* +* This component is a general Monitor that can output 0/1/2D signals +* (Intensity or signal vs. [something] and vs. [something] ...) +* +* %Description +* This component is a general Monitor that can output 0/1/2D signals +* It can produce many 1D signals (one for any variable specified in +* option list), or a single 2D output (two variables correlation). +* Also, an additional 'list' of neutron events can be produced. +* By default, monitor is square (in x/y plane). A disk shape is also possible +* The 'cylinder' and 'banana' option will change that for a banana shape +* The 'sphere' option simulates spherical detector. The 'box' is a box. +* The cylinder, sphere and banana should be centered on the scattering point. +* The monitored flux may be per monitor unit area, and weighted by +* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. +* In normal configuration, the Monitor_nD measures the current parameters +* of the neutron that is beeing detected. But a PreMonitor_nD component can +* be used in order to study correlations between a neutron being detected in +* a Monitor_nD place, and given parameters that are monitored elsewhere +* (at PreMonitor_nD). +* The monitor can also act as a 3He gas detector, taking into account the +* detection efficiency. +* +* The 'bins' and 'limits' modifiers are to be used after each variable, +* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 +* limits=[-5 5]) When placed after all variables, these two latter modifiers +* apply to the signal (e.g. intensity). Unknown keywords are ignored. +* If no limits are specified for a given observable, reasonable defaults will be +* applied. Note that these implicit limits are even applied in list mode. +* +* Implicit limits for typical variables: +* (consult monitor_nd-lib.c if you don't find your variable here) +* x, y, z: Derived from detection-object geometry +* k: [0 10] Angs-1 +* v: [0 1e6] m/s +* t: [0 1] s +* p: [0 FLT_MAX] in intensity-units +* vx, vy: [-1000 1000] m/s +* vz: [0 10000] m/s +* kx, ky: [-1 1] Angs-1 +* kz: [-10 10] Angs-1 +* energy, omega: [0 100] meV +* lambda,wavelength: [0 100] Angs +* sx, sy, sz: [-1 1] in polarisation-units +* angle: [-50 50] deg +* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg +* longitude, lattitude: [-180 180] deg +* neutron: [0 simulaton_ncount] +* id, pixel id: [0 FLT_MAX] +* uservars u1,u2,u3: [-1e10 1e10] +* +* In the case of multiple components at the same position, the 'parallel' +* keyword must be used in each instance instead of defining a GROUP. +* +* Possible options are +* Variables to record: +* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm +* vx vy vz v [m/s] Velocity on x,y,z and norm +* x y z radius [m] Distance, Position and norm +* xy, yz, xz [m] Radial position in xy, yz and xz plane +* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane +* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane +* t time [s] Time of Flight +* energy omega [meV] energy of neutron +* lambda wavelength [Angs] wavelength of neutron +* sx sy sz [1] Spin +* vdiv ydiv dy [deg] vertical divergence (y) +* hdiv divergence xdiv [deg] horizontal divergence (x) +* angle [deg] divergence from direction +* theta longitude [deg] longitude (x/z) for sphere and cylinder +* phi lattitude [deg] lattitude (y/z) for sphere and cylinder +* +* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} +* user2 user3 to be assigned in an other component (see below) +* +* p intensity flux [n/s or n/cm^2/s] +* ncounts n neutron [1] neutron ID, i.e current event index +* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. +* +* Other options keywords are: +* abs Will monitor the abs of the following variable or of the signal (if used after all variables) +* auto Automatically set detector limits for one/all +* all {limits|bins|auto} To set all limits or bins values or auto mode +* binary {float|double} with 'source' option, saves in compact files +* bins=[bins=20] Number of bins in the detector along dimension +* borders To also count off-limits neutrons (X < min or X > max) +* capture weight by lambda/lambda(2200m/s) capture flux +* file=string Detector image file name. default is component name, plus date and variable extension. +* incoming Monitor incoming beam in non flat det +* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) +* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events +* log Will monitor the log of the following variable or of the signal (if used after all variables) +* min=[min_value] Same as limits, but only sets the min or max +* max=[max_value] +* multiple Create multiple independant 1D monitors files +* no or not Revert next option +* outgoing Monitor outgoing beam (default) +* parallel Use this option when the next component is at the same position (parallel components) +* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. +* per steradian Displays beam solid angle in steradian +* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. +* signal=[var] Will monitor [var] instead of usual intensity +* slit or absorb Absorb neutrons that are out detector +* source The monitor will save neutron states +* inactivate To inactivate detector (0D detector) +* verbose To display additional informations +* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) +* +* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) +* box Box of size xwidth, yheight, zdepth. +* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). +* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). +* disk Disk flat xy monitor. diameter is xwidth. +* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). +* square Square flat xy monitor (xwidth, yheight). +* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. +* +* EXAMPLES: +*
    +*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, +*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with +*   borders, file = mon1"); +* will monitor neutron angle from [z] axis, between -5 +* and 5 degrees, in 10 bins, into "mon1.A" output 1D file +* +*
  • options = "sphere theta phi outgoing" +* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" +* +*
  • options = "banana, theta limits=[10,130], bins=120, y" +* a theta/height banana detector +* +*
  • options = "angle radius all auto" +* is a 2D monitor with automatic limits +* +*
  • options = "list=1000 kx ky kz energy" +* records 1000 neutron event in a file +* +*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" +* makes 4 output 1D files and produces a complete list for all neutrons +* and monitor log(abs(tof)) within automatic limits (for t) +* +*
  • options = "theta y, sphere, pixel min=100" +* a 4pi detector which outputs an event list with pixelID from the actual +* detector surface, starting from index 100. +* +*
+* To dynamically define a number of bins, or limits: +* Use in DECLARE: char op[256]; +* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); +* Use in TRACE: Monitor_nD(... options=op ...) +* +* How to monitor any instrument/component variable into a Monitor_nD +* Suppose you want to monitor a variable 'age' which you assign somwhere in +* the instrument: +* COMPONENT MyMonitor = Monitor_nD( +* xwidth = 0.1, yheight = 0.1, +* user1="age", username1="Age of the Captain [years]", +* options="user1, auto") +* AT ... +* +* See also the example in PreMonitor_nD to +* monitor neutron parameters cross-correlations. +* +* %BUGS +* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI +* as each process may use different limits. +* +* %Parameters +* INPUT PARAMETERS: +* +* xwidth: [m] Width of detector. +* yheight: [m] Height of detector. +* zdepth: [m] Thickness of detector (z). +* radius: [m] Radius of sphere/banana shape monitor +* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). +* +* Optional input parameters (override xwidth yheight zdepth): +* xmin: [m] Lower x bound of opening +* xmax: [m] Upper x bound of opening +* ymin: [m] Lower y bound of opening +* ymax: [m] Upper y bound of opening +* zmin: [m] Lower z bound of opening +* zmax: [m] Upper z bound of opening +* filename: [str] Output file name (overrides file=XX option). +* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins +* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits +* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits +* user1: [str] Variable name of USERVAR to be monitored by user1. +* user2: [str] Variable name of USERVAR to be monitored by user2. +* user3: [str] Variable name of USERVAR to be monitored by user3. +* username1: [str] Name assigned to User1 +* username2: [str] Name assigned to User2 +* username3: [str] Name assigned to User3 +* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. +* geometry: [str] Name of an OFF file to specify a complex geometry detector +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* DEFS: [struct] structure containing Monitor_nD Defines +* Vars: [struct] structure containing Monitor_nD variables +* +* %Link +* PreMonitor_nD +* +* %End +******************************************************************************/ +DEFINE COMPONENT Monitor_nD + +SETTING PARAMETERS ( + string user1="", string user2="", string user3="", + xwidth=0, yheight=0, zdepth=0, + xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, + int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, + string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, + string username1="NULL", string username2="NULL", string username3="NULL", + tsplit=0 +) +/* these are protected C variables */ + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + %include "monitor_nd-lib" + %include "read_table-lib" + %include "interoff-lib" +%} + +DECLARE +%{ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +%} + +INITIALIZE +%{ + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif +%} + +TRACE +%{ + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + int train_index; + double p_original = p; + + if (tsplit==1) { + double pp_array[N_trains]; + double t_original = t; + for (train_index=0; train_indexalive_trains[train_index] == 1) { + p = p_original*_particle->p_trains[train_index]; + t = t_original + _particle->t_offset[train_index]; + + pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + } else pp_array[train_index] = 0; + } + p = p_original; + t = t_original; + + int pp_total = 0; + for (train_index=0; train_index 0) { + SCATTER; + } + } else { + + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + + p = p_original; + } + + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } +%} + +FINALLY +%{ + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); +%} + +MCDISPLAY +%{ + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/TOF_train/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/TOF_train/MultiDiskChopper.comp new file mode 100644 index 0000000000..bb64311496 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/TOF_train/MultiDiskChopper.comp @@ -0,0 +1,351 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2015, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: MultiDiskChopper +* +* %I +* Written by: Markus Appel +* Date: 2015-10-19 +* Origin: ILL / FAU Erlangen-Nuernberg +* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), +* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disk chopper with a freely configurable slit pattern. For simple applications, +* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. +* If the chopper slit pattern should be dynamically configurable or a complicated pattern +* is to be used as first chopper on a continuous source, use this component. +* +* Width and position of the slits is defined as a list in string parameters so +* they can easily be taken from instrument parameters. +* The chopper axis is located on the y axis as defined by the parameter delta_y. +* When the chopper is the first chopper after a continuous (i.e. time-independent) +* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. +* +* +* Examples (see parameter definitions for details): +* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, delay=0.02) +* +* First chopper on a continuous source, creating pulse trains for one additional revolution +* before and after the revolution at t=0: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) +* +* %P +* INPUT PARAMETERS: +* +* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" +* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) +* nslits: [] Number of slits to read from slit_width and slit_center +* radius: [m] Outer radius of the disk +* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. +* nu: [Hz] Rotation speed of the disk, the sign determines the direction. +* +* Optional parameters: +* verbose: [0/1] Set to 1 to display more information during the simulation. +* phase: [deg] Phase angle located on top of the disk at t=delay (see below). +* delay: [s] Time delay of the chopper clock. +* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. +* jitter: [s] Jitter in the time phase. +* abs_out: If 1, absorb all neutrons outside the disk diameter. +* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events +* will be shifted in time to pass the component (with adapted weight). +* +* Additional parameters when isfirst=1 (that have no effect for isfirst=0): +* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. +* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). +* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT MultiDiskChopper + +SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) + + +DECLARE +%{ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +%} + +INITIALIZE +%{ + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + %} + +TRACE +%{ + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // Check whether each t_offset carried by the ray make it through + int train_index; + int one_did_hit = 0; + int this_t_hit; + double this_train_t; + int all_dead = 1; + for (train_index=0; train_indexalive_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + this_t_hit = 0; + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + this_t_hit = 1; + + islit++; + } + if (this_t_hit == 0) _particle->alive_trains[train_index] = 0; + else one_did_hit = 1; + } + // if not a single t_offset made it through a slit, absorb this ray + if (!one_did_hit || all_dead) ABSORB; + } + } +%} + +FINALLY +%{ + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); +%} + +MCDISPLAY +%{ + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/TOF_train/ODIN_wfm.instr b/mcstas-comps/examples/Prototypes/TOF_train/ODIN_wfm.instr new file mode 100644 index 0000000000..f9f32e1994 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/TOF_train/ODIN_wfm.instr @@ -0,0 +1,1029 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2, // 0: no choppers 1: BP 2: WFM +int N_trains_par = 10 +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap +%} + +USERVARS +%{ +double *t_offset; +double *p_trains; +int *alive_trains; +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + +#define N_trains INSTRUMENT_GETPAR(N_trains_par) + +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE +SEARCH "/Users/madsbertelsen/McStas/ESS/ODIN/gitlab/odin/odin_sim/required_mcstas_components" +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE +EXTEND %{ + t_offset = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + p_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + alive_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(int)); +%} + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Origin + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0) +AT (0, 0, 0) RELATIVE Origin + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + + COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]", + tsplit=1 + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", + tsplit=1 + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +// Start of finally for generated ODIN +%} + +END From 7a6e47ea55e4c4967c2f9a59fa881f23bca5e46e Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 14:39:59 +0100 Subject: [PATCH 02/75] Rename (also internally) Proto instr, add missing required comps --- .../DiskChopper.comp | 0 .../ESS_butterfly.comp | 0 .../ODIN_TOF_train/Graphite_Diffuser.comp | 115 +++ .../Monitor_nD.comp | 0 .../MultiDiskChopper.comp | 0 .../ODIN_TOF_train.instr} | 4 +- .../ODIN_TOF_train/bi_spec_ellipse.comp | 794 ++++++++++++++++++ 7 files changed, 911 insertions(+), 2 deletions(-) rename mcstas-comps/examples/Prototypes/{TOF_train => ODIN_TOF_train}/DiskChopper.comp (100%) rename mcstas-comps/examples/Prototypes/{TOF_train => ODIN_TOF_train}/ESS_butterfly.comp (100%) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/Graphite_Diffuser.comp rename mcstas-comps/examples/Prototypes/{TOF_train => ODIN_TOF_train}/Monitor_nD.comp (100%) rename mcstas-comps/examples/Prototypes/{TOF_train => ODIN_TOF_train}/MultiDiskChopper.comp (100%) rename mcstas-comps/examples/Prototypes/{TOF_train/ODIN_wfm.instr => ODIN_TOF_train/ODIN_TOF_train.instr} (99%) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/TOF_train/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/DiskChopper.comp similarity index 100% rename from mcstas-comps/examples/Prototypes/TOF_train/DiskChopper.comp rename to mcstas-comps/examples/Prototypes/ODIN_TOF_train/DiskChopper.comp diff --git a/mcstas-comps/examples/Prototypes/TOF_train/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ESS_butterfly.comp similarity index 100% rename from mcstas-comps/examples/Prototypes/TOF_train/ESS_butterfly.comp rename to mcstas-comps/examples/Prototypes/ODIN_TOF_train/ESS_butterfly.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/Graphite_Diffuser.comp new file mode 100644 index 0000000000..ea21aa714e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/Graphite_Diffuser.comp @@ -0,0 +1,115 @@ +/******************************************************************************* +* +* McStas, version 1.2 released February 2000 +* Maintained by Kristian Nielsen and Kim Lefmann, +* Risoe National Laboratory, Roskilde, Denmark +* +* %IDENTIFICATION +* +* Written by: Manuel Morgano +* Date: 18 Febrauary 2015 +* Version: $Revision: 1.1.1.1 $ +* Origin: PSI +* +* Graphite diffuser +* +* %DESCRIPTION +* +* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics +* +* The formula has only been verified for a diffuser thickness of 1 and 2 cm. +* No absorption is take into account. +* +* %PARAMETERS +* +* INPUT PARAMETERS: +* +* xwidth: (m) Size of diffuser +* ywidth: (m) Size of diffuser +* thick: (m) Thickness of diffuser +* abs (1) 0 = no absorption, 1 = absorption +* %LINKS +* %END +* +*******************************************************************************/ + +DEFINE COMPONENT Graphite_Diffuser +DEFINITION PARAMETERS () +SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) +OUTPUT PARAMETERS () +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) +SHARE +%{ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} +%} +INITIALIZE +%{ +%} +TRACE +%{ + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || y0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +%} + +MCDISPLAY +%{ + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i Date: Thu, 26 Feb 2026 15:07:02 +0100 Subject: [PATCH 03/75] Add 'baseline' model without any tricks, add %Example line, remove SEARCH --- .../ODIN_TOF_train/ODIN_TOF_train.instr | 2 +- .../ODIN_baseline/Graphite_Diffuser.comp | 115 + .../Prototypes/ODIN_baseline/ODIN_baseline.c | 34422 ++++++++++++++++ .../ODIN_baseline/ODIN_baseline.instr | 1023 + .../ODIN_baseline.c | 34422 ++++++++++++++++ .../ODIN_baseline.instr | 1022 + .../image.dat | 958 + .../mccode.sim | 175 + .../profile_x.dat | 353 + .../profile_y.dat | 353 + .../time.dat | 353 + .../wavelength.dat | 353 + .../wavelength_tof.dat | 958 + .../ODIN_baseline/bi_spec_ellipse.comp | 794 + .../Prototypes/ODIN_baseline/time_spent.txt | 2 + 15 files changed, 75304 insertions(+), 1 deletion(-) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/Graphite_Diffuser.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/image.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/mccode.sim create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/profile_x.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/profile_y.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/time.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/wavelength.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/wavelength_tof.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/bi_spec_ellipse.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/time_spent.txt diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr index 5efbff8233..a273553d57 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr @@ -156,7 +156,7 @@ struct timespec ts; %} TRACE -SEARCH "/Users/madsbertelsen/McStas/ESS/ODIN/gitlab/odin/odin_sim/required_mcstas_components" + COMPONENT Origin = Progress_bar() AT (0, 0, 0) ABSOLUTE EXTEND %{ diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_baseline/Graphite_Diffuser.comp new file mode 100644 index 0000000000..ea21aa714e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/Graphite_Diffuser.comp @@ -0,0 +1,115 @@ +/******************************************************************************* +* +* McStas, version 1.2 released February 2000 +* Maintained by Kristian Nielsen and Kim Lefmann, +* Risoe National Laboratory, Roskilde, Denmark +* +* %IDENTIFICATION +* +* Written by: Manuel Morgano +* Date: 18 Febrauary 2015 +* Version: $Revision: 1.1.1.1 $ +* Origin: PSI +* +* Graphite diffuser +* +* %DESCRIPTION +* +* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics +* +* The formula has only been verified for a diffuser thickness of 1 and 2 cm. +* No absorption is take into account. +* +* %PARAMETERS +* +* INPUT PARAMETERS: +* +* xwidth: (m) Size of diffuser +* ywidth: (m) Size of diffuser +* thick: (m) Thickness of diffuser +* abs (1) 0 = no absorption, 1 = absorption +* %LINKS +* %END +* +*******************************************************************************/ + +DEFINE COMPONENT Graphite_Diffuser +DEFINITION PARAMETERS () +SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) +OUTPUT PARAMETERS () +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) +SHARE +%{ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} +%} +INITIALIZE +%{ +%} +TRACE +%{ + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || y + * Instrument: ODIN_baseline.instr (ODIN_baseline) + * Date: Thu Feb 26 14:53:42 2026 + * File: ./ODIN_baseline.c + * CFLAGS= + */ + +#ifndef WIN32 +# ifndef OPENACC +# define _GNU_SOURCE +# endif +# define _POSIX_C_SOURCE 200809L +#endif +/* In case of cl.exe on Windows, supppress warnings about #pragma acc */ +#ifdef _MSC_EXTENSIONS +#pragma warning(disable: 4068) +#endif + +#define MCCODE_STRING " 3.99.99, git" +#define FLAVOR "mcstas" +#define FLAVOR_UPPER "MCSTAS" + +#define MC_USE_DEFAULT_MAIN +#define MC_TRACE_ENABLED + +#include +#include + +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#define MCCODE_BASE_TYPES + +/* available random number generators */ +#define _RNG_ALG_MT 1 +#define _RNG_ALG_KISS 2 +/* selection of random number generator */ +#ifndef RNG_ALG +# define RNG_ALG _RNG_ALG_KISS +#endif +#if RNG_ALG == _RNG_ALG_MT // MT +#define randstate_t uint32_t +#elif RNG_ALG == _RNG_ALG_KISS // KISS +#define randstate_t uint64_t +#endif + +#ifndef MC_NUSERVAR +#define MC_NUSERVAR 10 +#endif + +/* Particle JUMP control logic */ +struct particle_logic_struct { +int dummy; +}; + +struct _struct_particle { + double x,y,z; /* position [m] */ + double vx,vy,vz; /* velocity [m/s] */ + double sx,sy,sz; /* spin [0-1] */ + int mcgravitation; /* gravity-state */ + void *mcMagnet; /* precession-state */ + int allow_backprop; /* allow backprop */ + /* Generic Temporaries: */ + /* May be used internally by components e.g. for special */ + /* return-values from functions used in trace, thusreturned via */ + /* particle struct. (Example: Wolter Conics from McStas, silicon slabs.) */ + double _mctmp_a; /* temp a */ + double _mctmp_b; /* temp b */ + double _mctmp_c; /* temp c */ + randstate_t randstate[7]; + double t, p; /* time, event weight */ + long long _uid; /* Unique event ID */ + long _index; /* component index where to send this event */ + long _absorbed; /* flag set to TRUE when this event is to be removed/ignored */ + long _scattered; /* flag set to TRUE when this event has interacted with the last component instance */ + long _restore; /* set to true if neutron event must be restored */ + long flag_nocoordschange; /* set to true if particle is jumping */ + struct particle_logic_struct _logic; + // user variables and comp-injections: + double * t_offset; + double * p_trains; + int * alive_trains; +}; +typedef struct _struct_particle _class_particle; + +_class_particle _particle_global_randnbuse_var; +_class_particle* _particle = &_particle_global_randnbuse_var; + +#pragma acc routine +_class_particle mcgenstate(void); +#pragma acc routine +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop); +#pragma acc routine +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p); + +extern int mcgravitation; /* flag to enable gravitation */ +#pragma acc declare create ( mcgravitation ) + +_class_particle mcgenstate(void) { + _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0); + return(particle); +} +/*Generated user variable handlers:*/ + +#pragma acc routine +double particle_getvar(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +double particle_getvar(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + double rval=0; + if(!str_comp("x",name)){rval=p->x;s=0;} + if(!str_comp("y",name)){rval=p->y;s=0;} + if(!str_comp("z",name)){rval=p->z;s=0;} + if(!str_comp("vx",name)){rval=p->vx;s=0;} + if(!str_comp("vy",name)){rval=p->vy;s=0;} + if(!str_comp("vz",name)){rval=p->vz;s=0;} + if(!str_comp("sx",name)){rval=p->sx;s=0;} + if(!str_comp("sy",name)){rval=p->sy;s=0;} + if(!str_comp("sz",name)){rval=p->sz;s=0;} + if(!str_comp("t",name)){rval=p->t;s=0;} + if(!str_comp("p",name)){rval=p->p;s=0;} + if(!str_comp("_mctmp_a",name)){rval=p->_mctmp_a;s=0;} + if(!str_comp("_mctmp_b",name)){rval=p->_mctmp_b;s=0;} + if(!str_comp("_mctmp_c",name)){rval=p->_mctmp_c;s=0;} + if(!str_comp("t_offset",name)){rval=*( (double *)(&(p->t_offset)) );s=0;} + if(!str_comp("p_trains",name)){rval=*( (double *)(&(p->p_trains)) );s=0;} + if(!str_comp("alive_trains",name)){rval=*( (double *)(&(p->alive_trains)) );s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void* particle_getvar_void(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +void* particle_getvar_void(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + void* rval=0; + if(!str_comp("x",name)) {rval=(void*)&(p->x); s=0;} + if(!str_comp("y",name)) {rval=(void*)&(p->y); s=0;} + if(!str_comp("z",name)) {rval=(void*)&(p->z); s=0;} + if(!str_comp("vx",name)){rval=(void*)&(p->vx);s=0;} + if(!str_comp("vy",name)){rval=(void*)&(p->vy);s=0;} + if(!str_comp("vz",name)){rval=(void*)&(p->vz);s=0;} + if(!str_comp("sx",name)){rval=(void*)&(p->sx);s=0;} + if(!str_comp("sy",name)){rval=(void*)&(p->sy);s=0;} + if(!str_comp("sz",name)){rval=(void*)&(p->sz);s=0;} + if(!str_comp("t",name)) {rval=(void*)&(p->t); s=0;} + if(!str_comp("p",name)) {rval=(void*)&(p->p); s=0;} + if(!str_comp("t_offset",name)){rval=(void*)&(p->t_offset);s=0;} + if(!str_comp("p_trains",name)){rval=(void*)&(p->p_trains);s=0;} + if(!str_comp("alive_trains",name)){rval=(void*)&(p->alive_trains);s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +int particle_setvar_void(_class_particle *, char *, void*); + +int particle_setvar_void(_class_particle *p, char *name, void* value){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + if(!str_comp("x",name)) {memcpy(&(p->x), value, sizeof(double)); rval=0;} + if(!str_comp("y",name)) {memcpy(&(p->y), value, sizeof(double)); rval=0;} + if(!str_comp("z",name)) {memcpy(&(p->z), value, sizeof(double)); rval=0;} + if(!str_comp("vx",name)){memcpy(&(p->vx), value, sizeof(double)); rval=0;} + if(!str_comp("vy",name)){memcpy(&(p->vy), value, sizeof(double)); rval=0;} + if(!str_comp("vz",name)){memcpy(&(p->vz), value, sizeof(double)); rval=0;} + if(!str_comp("sx",name)){memcpy(&(p->sx), value, sizeof(double)); rval=0;} + if(!str_comp("sy",name)){memcpy(&(p->sy), value, sizeof(double)); rval=0;} + if(!str_comp("sz",name)){memcpy(&(p->sz), value, sizeof(double)); rval=0;} + if(!str_comp("p",name)) {memcpy(&(p->p), value, sizeof(double)); rval=0;} + if(!str_comp("t",name)) {memcpy(&(p->t), value, sizeof(double)); rval=0;} + return rval; +} + +#pragma acc routine +int particle_setvar_void_array(_class_particle *, char *, void*, int); + +int particle_setvar_void_array(_class_particle *p, char *name, void* value, int elements){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + if(!str_comp("t_offset",name)){memcpy(&(p->t_offset), value, elements * sizeof(double *)); rval=0;} + if(!str_comp("p_trains",name)){memcpy(&(p->p_trains), value, elements * sizeof(double *)); rval=0;} + if(!str_comp("alive_trains",name)){memcpy(&(p->alive_trains), value, elements * sizeof(int *)); rval=0;} + return rval; +} + +#pragma acc routine +void particle_restore(_class_particle *p, _class_particle *p0); + +void particle_restore(_class_particle *p, _class_particle *p0) { + p->x = p0->x; p->y = p0->y; p->z = p0->z; + p->vx = p0->vx; p->vy = p0->vy; p->vz = p0->vz; + p->sx = p0->sx; p->sy = p0->sy; p->sz = p0->sz; + p->t = p0->t; p->p = p0->p; + p->_absorbed=0; p->_restore=0; +} + +#pragma acc routine +double particle_getuservar_byid(_class_particle *p, int id, int *suc){ + int s=1; + double rval=0; + switch(id){ + case 0: { rval=*( (double *)(&(p->t_offset)) );s=0;break;} + case 1: { rval=*( (double *)(&(p->p_trains)) );s=0;break;} + case 2: { rval=*( (double *)(&(p->alive_trains)) );s=0;break;} + } + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void particle_uservar_init(_class_particle *p){ +} + +#define MC_EMBEDDED_RUNTIME +/* embedding file "mccode-r.h" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: mcstas 3.99.99 +* Version: $Revision$ +* +* Runtime system header for McStas/McXtrace. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int numipar; +* metadata_table_t metadata_table[]; +* int num_metadata; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM mcAbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas/McXtrace version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCCODE_R_H +#define MCCODE_R_H "$Revision$" + +#include +#include +#include +#include +#include +#include +#include +#ifndef _MSC_EXTENSIONS +#include +#endif +#include +#include +#include +#ifdef OPENACC +#include +#ifndef GCCOFFLOAD +#include +#else +#include +#endif +#pragma acc routine +int noprintf(); +#pragma acc routine +size_t str_len(const char *s); +#else +#include +#endif + +/* In case of gcc / clang, ensure to use + the built-in isnan/isinf functions */ +#if defined(__GNUC__) || defined(__clang__) +# ifdef isnan +# undef isnan +# endif +# ifdef isinf +# undef isinf +# endif +# define isnan(x) __builtin_isnan(x) +# define isinf(x) __builtin_isinf(x) +#endif + +#ifdef _MSC_EXTENSIONS +#ifndef _TIMES_H +#define _TIMES_H + +#if defined(WIN32) || defined(_WIN32) +#include +#include +#include + +int gettimeofday(struct timeval* t,void* timezone); + +#define __need_clock_t +#include + + +/* Structure describing CPU time used by a process and its children. */ +struct tms + { + clock_t tms_utime; /* User CPU time. */ + clock_t tms_stime; /* System CPU time. */ + + clock_t tms_cutime; /* User CPU time of dead children. */ + clock_t tms_cstime; /* System CPU time of dead children. */ + }; + +/* Store the CPU time used by this process and all its + dead children (and their dead children) in BUFFER. + Return the elapsed real time, or (clock_t) -1 for errors. + All times are in CLK_TCKths of a second. */ +clock_t times (struct tms *__buffer); + +typedef long long suseconds_t ; + + + +int gettimeofday(struct timeval* t,void* timezone) +{ struct _timeb timebuffer; + _ftime( &timebuffer ); + t->tv_sec=timebuffer.time; + t->tv_usec=1000*timebuffer.millitm; + return 0; +} + +clock_t times (struct tms *__buffer) { + + __buffer->tms_utime = clock(); + __buffer->tms_stime = 0; + __buffer->tms_cstime = 0; + __buffer->tms_cutime = 0; + return __buffer->tms_utime; +} + + +#endif +#endif +#endif + +/* If the runtime is embedded in the simulation program, some definitions can + be made static. */ + +#ifdef MC_EMBEDDED_RUNTIME +# define mcstatic +#else +# define mcstatic +#endif + +#ifdef __dest_os +# if (__dest_os == __mac_os) +# define MAC +# endif +#endif + +#ifdef __FreeBSD__ +# define NEED_STAT_H +#endif + +#if defined(__APPLE__) && defined(__GNUC__) +# define NEED_STAT_H +#endif + +#if defined(WIN32) || defined(_WIN32) +# define NEED_STAT_H +# define NEED_TYPES_H +#endif + +#ifdef NEED_STAT_H +# include +#endif + +#ifdef NEED_TYPES_H +# include +#endif + +#ifndef MC_PATHSEP_C +#if defined(WIN32) || defined(_WIN32) +# define MC_PATHSEP_C '\\' +# define MC_PATHSEP_S "\\" +# else /* !WIN32 */ +# define MC_PATHSEP_C '/' +# define MC_PATHSEP_S "/" +# endif /* !WIN32 */ +#endif /* MC_PATHSEP_C */ + +#if defined(WIN32) || defined(_WIN32) +#if defined _MSC_VER +#include +#elif defined __GNUC__ +#include +#include +#include +#endif +#define mkdir(a,b) mkdir(a) +#define getpid() _getpid() +#endif + +/* the version string is replaced when building distribution with mkdist */ +#ifndef MCCODE_STRING +# define MCCODE_STRING " 3.99.99, git" +#endif + +#ifndef MCCODE_DATE +# define MCCODE_DATE "git" +#endif + +#ifndef MCCODE_VERSION +# define MCCODE_VERSION "3.99.99" +#endif + +#ifndef __MCCODE_VERSION__ +#define __MCCODE_VERSION__ 399099L +#endif + +#ifndef MCCODE_NAME +# define MCCODE_NAME "mcstas" +#endif + +#ifndef MCCODE_PARTICLE +# define MCCODE_PARTICLE "neutron" +#endif + +#ifndef MCCODE_PARTICLE_CODE +# define MCCODE_PARTICLE_CODE 2112 +#endif + +#ifndef MCCODE_LIBENV +# define MCCODE_LIBENV "MCSTAS" +#endif + +#ifndef FLAVOR_UPPER +# define FLAVOR_UPPER MCCODE_NAME +#endif + +#ifdef MC_PORTABLE +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef MAC +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#if (USE_MPI == 0) +# undef USE_MPI +#endif + +#ifdef USE_MPI /* default is to disable signals with MPI, as MPICH uses them to communicate */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef OPENACC /* default is to disable signals with PGI/OpenACC */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifndef OPENACC +# ifndef USE_OFF /* default is to enable OFF when not using PGI/OpenACC */ +# define USE_OFF +# endif +# ifndef CPUFUNNEL /* allow to enable FUNNEL-mode on CPU */ +# ifdef FUNNEL /* by default disable FUNNEL-mode when not using PGI/OpenACC */ +# undef FUNNEL +# endif +# endif +#endif + +#if (NOSIGNALS == 0) +# undef NOSIGNALS +#endif + +/** Header information for metadata-r.c ----------------------------------------------------------------------------- */ +struct metadata_table_struct { /* stores metadata strings from components */ + char * source; // component name which provided the metadata + char * name; // the name of the metadata + char * type; // the MIME type of the metadata (free form, valid identifier) + char * value; // the metadata string contents +}; +typedef struct metadata_table_struct metadata_table_t; +char * metadata_table_key_component(char* key); +char * metadata_table_key_literal(char * key); +int metadata_table_defined(int, metadata_table_t *, char *); +char * metadata_table_name(int, metadata_table_t *, char *); +char * metadata_table_type(int, metadata_table_t *, char *); +char * metadata_table_literal(int, metadata_table_t *, char *); +void metadata_table_print_all_keys(int no, metadata_table_t * tab); +int metadata_table_print_all_components(int no, metadata_table_t * tab); +int metadata_table_print_component_keys(int no, metadata_table_t * tab, char * key); +/* -------------------------------------------------------------------------- Header information for metadata-r.c --- */ + +/* Note: the enum instr_formal_types definition MUST be kept + synchronized with the one in mccode.h and with the + instr_formal_type_names array in cogen.c. */ +enum instr_formal_types + { + instr_type_int, + instr_type_string, instr_type_char, + instr_type_vector, instr_type_double + }; +struct mcinputtable_struct { /* defines instrument parameters */ + char *name; /* name of parameter */ + void *par; /* pointer to instrument parameter (variable) */ + enum instr_formal_types type; + char *val; /* default value */ + char *unit; /* expected unit for parameter; informational only */ +}; + + +#ifndef MCCODE_BASE_TYPES +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#endif + +/* the following variables are defined in the McStas generated C code + but should be defined externally in case of independent library usage */ +#ifndef DANSE +extern struct mcinputtable_struct mcinputtable[]; /* list of instrument parameters */ +extern int numipar; /* number of instrument parameters */ +extern metadata_table_t metadata_table[]; /* list of component-defined string metadata */ +extern int num_metadata; /* number of component-defined string metadata */ +extern char instrument_name[], instrument_source[]; /* instrument name and filename */ +extern char *instrument_exe; /* executable path = argv[0] or NULL */ +extern char instrument_code[]; /* contains the initial 'instr' file */ + +#ifndef MC_ANCIENT_COMPATIBILITY +extern int traceenabled, defaultmain; +#endif +#endif + + +/* Useful macros ============================================================ */ + + +/* SECTION: Dynamic Arrays */ +typedef int* IArray1d; +IArray1d create_iarr1d(int n); +void destroy_iarr1d(IArray1d a); + +typedef int** IArray2d; +IArray2d create_iarr2d(int nx, int ny); +void destroy_iarr2d(IArray2d a); + +typedef int*** IArray3d; +IArray3d create_iarr3d(int nx, int ny, int nz); +void destroy_iarr3d(IArray3d a); + +typedef double* DArray1d; +DArray1d create_darr1d(int n); +void destroy_darr1d(DArray1d a); + +typedef double** DArray2d; +DArray2d create_darr2d(int nx, int ny); +void destroy_darr2d(DArray2d a); + +typedef double*** DArray3d; +DArray3d create_darr3d(int nx, int ny, int nz); +void destroy_darr3d(DArray3d a); + + +/* MPI stuff */ +#ifdef USE_MPI +#include "mpi.h" + +#ifdef OMPI_MPI_H /* openmpi does not use signals: we may install our sighandler */ +#ifndef OPENACC /* ... but only if we are not also running on GPU */ +#undef NOSIGNALS +#endif +#endif + +/* + * MPI_MASTER(i): + * execution of i only on master node + */ +#define MPI_MASTER(statement) { \ + if(mpi_node_rank == mpi_node_root)\ + { statement; } \ +} + +#ifndef MPI_REDUCE_BLOCKSIZE +#define MPI_REDUCE_BLOCKSIZE 100000 +#endif + +int mc_MPI_Sum(double* buf, long count); +int mc_MPI_Send(void *sbuf, long count, MPI_Datatype dtype, int dest); +int mc_MPI_Recv(void *rbuf, long count, MPI_Datatype dtype, int source); + +/* MPI_Finalize exits gracefully and should be preferred to MPI_Abort */ +#define exit(code) do { \ + MPI_Finalize(); \ + exit(code); \ + } while(0) + +#else /* !USE_MPI */ +#define MPI_MASTER(instr) instr +#endif /* USE_MPI */ + + +#ifdef USE_MPI +static int mpi_node_count; +#endif + +#ifdef USE_THREADS /* user want threads */ +#error Threading (USE_THREADS) support has been removed for very poor efficiency. Use MPI/SSH grid instead. +#endif + + +void mcset_ncount(unsigned long long count); /* wrapper to get mcncount */ +#pragma acc routine +unsigned long long int mcget_ncount(void); /* wrapper to set mcncount */ +unsigned long long mcget_run_num(void); /* wrapper to get mcrun_num=0:mcncount-1 */ + +/* Following part is only embedded when not redundant with mccode.h ========= */ + +#ifndef MCCODE_H + +#ifndef NOSIGNALS +#include +char *mcsig_message; +#define SIG_MESSAGE(msg) mcsig_message=(char *)(msg); +#else +#define SIG_MESSAGE(...) +#endif /* !NOSIGNALS */ + + +/* Useful macros and constants ============================================== */ + + +#ifndef FLT_MAX +#define FLT_MAX 3.40282347E+38F /* max decimal value of a "float" */ +#endif + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef SQR +#define SQR(x) ( (x) * (x) ) +#endif +#ifndef SIGN +#define SIGN(x) (((x)>0.0)?(1):(-1)) +#endif + + +# ifndef M_E +# define M_E 2.71828182845904523536 // e +# endif +# ifndef M_LOG2E +# define M_LOG2E 1.44269504088896340736 // log2(e) +# endif +# ifndef M_LOG10E +# define M_LOG10E 0.434294481903251827651 // log10(e) +# endif +# ifndef M_LN2 +# define M_LN2 0.693147180559945309417 // ln(2) +# endif +# ifndef M_LN10 +# define M_LN10 2.30258509299404568402 // ln(10) +# endif +# ifndef M_PI +# define M_PI 3.14159265358979323846 // pi +# endif +# ifndef PI +# define PI M_PI // pi - also used in some places +# endif +# ifndef M_PI_2 +# define M_PI_2 1.57079632679489661923 // pi/2 +# endif +# ifndef M_PI_4 +# define M_PI_4 0.785398163397448309616 // pi/4 +# endif +# ifndef M_1_PI +# define M_1_PI 0.318309886183790671538 // 1/pi +# endif +# ifndef M_2_PI +# define M_2_PI 0.636619772367581343076 // 2/pi +# endif +# ifndef M_2_SQRTPI +# define M_2_SQRTPI 1.12837916709551257390 // 2/sqrt(pi) +# endif +# ifndef M_SQRT2 +# define M_SQRT2 1.41421356237309504880 // sqrt(2) +# endif +# ifndef M_SQRT1_2 +# define M_SQRT1_2 0.707106781186547524401 // 1/sqrt(2) +# endif + +#define RAD2MIN ((180*60)/PI) +#define MIN2RAD (PI/(180*60)) +#define DEG2RAD (PI/180) +#define RAD2DEG (180/PI) +#define FWHM2RMS 0.424660900144 /* Convert between full-width-half-max and */ +#define RMS2FWHM 2.35482004503 /* root-mean-square (standard deviation) */ +#define HBAR 1.05457168e-34 /* [Js] h bar Planck constant CODATA 2002 */ +#define MNEUTRON 1.67492728e-27 /* [kg] mass of neutron CODATA 2002 */ +#define GRAVITY 9.81 /* [m/s^2] gravitational acceleration */ +#define NA 6.02214179e23 /* [#atoms/g .mole] Avogadro's number*/ + + +#define UNSET nan("0x6E6F74736574") +int nans_match(double, double); +int is_unset(double); +int is_valid(double); +int is_set(double); +int all_unset(int n, ...); +int all_set(int n, ...); +int any_unset(int n, ...); +int any_set(int n, ...); + + +/* wrapper to get absolute and relative position of comp */ +/* mccomp_posa and mccomp_posr are defined in McStas generated C code */ +#define POS_A_COMP_INDEX(index) (instrument->_position_absolute[index]) +#define POS_R_COMP_INDEX(index) (instrument->_position_relative[index]) + +/* setting parameters based COMP_GETPAR (returned as pointer) */ +/* compname must be given as a string, type and par are symbols. */ +#define COMP_GETPAR3(type, compname, par) \ + &( ((_class_ ## type ##_parameters *) _getvar_parameters(compname))->par ) +/* the body of this function depends on component instances, and is cogen'd */ +void* _getvar_parameters(char* compname); + +int _getcomp_index(char* compname); + +/* Note: The two-stage approach to COMP_GETPAR is NOT redundant; without it, +* after #define C sample, COMP_GETPAR(C,x) would refer to component C, not to +* component sample. Such are the joys of ANSI C. + +* Anyway the usage of COMP_GETPAR requires that we use sometimes bare names... +* NOTE: This can ONLY be used in instrument descriptions, not components. +*/ +#define COMP_GETPAR2(comp, par) (_ ## comp ## _var._parameters.par) +#define COMP_GETPAR(comp, par) COMP_GETPAR2(comp,par) + +#define INSTRUMENT_GETPAR(par) (_instrument_var._parameters.par) + +/* Current component name, index, position and orientation */ +/* These macros work because, using class-based functions, "comp" is usually +* the local variable of the active/current component. */ +#define INDEX_CURRENT_COMP (_comp->_index) +#define NAME_CURRENT_COMP (_comp->_name) +#define TYPE_CURRENT_COMP (_comp->_type) +#define POS_A_CURRENT_COMP (_comp->_position_absolute) +#define POS_R_CURRENT_COMP (_comp->_position_relative) +#define ROT_A_CURRENT_COMP (_comp->_rotation_absolute) +#define ROT_R_CURRENT_COMP (_comp->_rotation_relative) + +#define NAME_INSTRUMENT (instrument->_name) + + +/* MCDISPLAY/trace and debugging message sent to stdout */ +#ifdef MC_TRACE_ENABLED +#define DEBUG +#endif + +#ifdef DEBUG +#define DEBUG_INSTR() if(!mcdotrace); else { printf("INSTRUMENT:\n"); printf("Instrument '%s' (%s)\n", instrument_name, instrument_source); } +#define DEBUG_COMPONENT(name,c,t) if(!mcdotrace); else {\ + printf("COMPONENT: \"%s\"\n" \ + "POS: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + name, c.x, c.y, c.z, t[0][0], t[0][1], t[0][2], \ + t[1][0], t[1][1], t[1][2], t[2][0], t[2][1], t[2][2]); \ + printf("Component %30s AT (%g,%g,%g)\n", name, c.x, c.y, c.z); } +#define DEBUG_INSTR_END() if(!mcdotrace); else printf("INSTRUMENT END:\n"); +#define DEBUG_ENTER() if(!mcdotrace); else printf("ENTER:\n"); +#define DEBUG_COMP(c) if(!mcdotrace); else printf("COMP: \"%s\"\n", c); +#define DEBUG_LEAVE() if(!mcdotrace); else printf("LEAVE:\n"); +#define DEBUG_ABSORB() if(!mcdotrace); else printf("ABSORB:\n"); +#else +#define DEBUG_INSTR() +#define DEBUG_COMPONENT(name,c,t) +#define DEBUG_INSTR_END() +#define DEBUG_ENTER() +#define DEBUG_COMP(c) +#define DEBUG_LEAVE() +#define DEBUG_ABSORB() +#endif + +// mcDEBUG_STATE and mcDEBUG_SCATTER are defined by mcstas-r.h and mcxtrace-r.h + + + +#ifdef TEST +#define test_printf printf +#else +#define test_printf while(0) printf +#endif + +/* send MCDISPLAY message to stdout to show gemoetry */ +void mcdis_magnify(char *what); +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2); +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n); +void mcdis_multiline(int count, ...); +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height); +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz); +void mcdis_circle(char *plane, double x, double y, double z, double r); +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz); +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz); +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz); +void mcdis_sphere(double x, double y, double z, double r); + + +/* random number generation. ================================================ */ + +#if RNG_ALG == _RNG_ALG_MT // MT (currently not functional for GPU) +# define MC_RAND_MAX ((uint32_t)0xffffffffUL) +# define RANDSTATE_LEN 1 +# define srandom(seed) mt_srandom_empty() +# define random() mt_random() +# define _random() mt_random() +#elif RNG_ALG == _RNG_ALG_KISS // KISS +# ifndef UINT64_MAX +# define UINT64_MAX ((uint64_t)0xffffffffffffffffULL) +# endif +# define MC_RAND_MAX UINT64_MAX +# define RANDSTATE_LEN 7 +# define srandom(seed) kiss_srandom(_particle->randstate, seed) +# define random() kiss_random(_particle->randstate) +# define _random() kiss_random(state) +#endif + +#pragma acc routine +double _randnorm2(randstate_t* state); + +// Component writer interface +#define randnorm() _randnorm2(_particle->randstate) // NOTE: can't use _randnorm on GPU +#define rand01() _rand01(_particle->randstate) +#define randpm1() _randpm1(_particle->randstate) +#define rand0max(p1) _rand0max(p1, _particle->randstate) +#define randminmax(p1, p2) _randminmax(p1, p2, _particle->randstate) +#define randtriangle() _randtriangle(_particle->randstate) + +// Mersenne Twister rng +uint32_t mt_random(void); +void mt_srandom (uint32_t x); +void mt_srandom_empty(); + +// KISS rng +#pragma acc routine +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed); +#pragma acc routine +uint64_t kiss_random(uint64_t state[7]); + +// Scrambler / hash function +#pragma acc routine seq +randstate_t _hash(randstate_t x); + +// internal RNG (transforms) interface +#pragma acc routine +double _rand01(randstate_t* state); +#pragma acc routine +double _randpm1(randstate_t* state); +#pragma acc routine +double _rand0max(double max, randstate_t* state); +#pragma acc routine +double _randminmax(double min, double max, randstate_t* state); +#pragma acc routine +double _randtriangle(randstate_t* state); + + +#ifdef USE_OPENCL +#include "opencl-lib.h" +#include "opencl-lib.c" +#endif + +#ifndef DANSE +int init(void); +int raytrace(_class_particle*); +int save(FILE *); +int finally(void); +int display(void); +#endif + + +/* GPU related algorithms =================================================== */ + +/* +* Divide-and-conquer strategy for parallel sort absorbed last. +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier); +#endif +long sort_absorb_last_serial(_class_particle* particles, long len); + + +/* simple vector algebra ==================================================== */ + + +#define vec_prod(x, y, z, x1, y1, z1, x2, y2, z2) \ + vec_prod_func(&x, &y, &z, x1, y1, z1, x2, y2, z2) +#pragma acc routine seq +mcstatic void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic double scalar_prod( + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic void norm_func(double *x, double *y, double *z); +#define NORM(x,y,z) norm_func(&x, &y, &z) + +#pragma acc routine seq +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z); + +/** + * Rotate the vector vx,vy,vz psi radians around the vector ax,ay,az + * and put the result in x,y,z. + */ +#define rotate(x, y, z, vx, vy, vz, phi, ax, ay, az) \ + do { \ + double mcrt_tmpx = (ax), mcrt_tmpy = (ay), mcrt_tmpz = (az); \ + double mcrt_vp, mcrt_vpx, mcrt_vpy, mcrt_vpz; \ + double mcrt_vnx, mcrt_vny, mcrt_vnz, mcrt_vn1x, mcrt_vn1y, mcrt_vn1z; \ + double mcrt_bx, mcrt_by, mcrt_bz; \ + double mcrt_cos, mcrt_sin; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vp = scalar_prod((vx), (vy), (vz), mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vpx = mcrt_vp*mcrt_tmpx; \ + mcrt_vpy = mcrt_vp*mcrt_tmpy; \ + mcrt_vpz = mcrt_vp*mcrt_tmpz; \ + mcrt_vnx = (vx) - mcrt_vpx; \ + mcrt_vny = (vy) - mcrt_vpy; \ + mcrt_vnz = (vz) - mcrt_vpz; \ + vec_prod(mcrt_bx, mcrt_by, mcrt_bz, \ + mcrt_tmpx, mcrt_tmpy, mcrt_tmpz, mcrt_vnx, mcrt_vny, mcrt_vnz); \ + mcrt_cos = cos((phi)); mcrt_sin = sin((phi)); \ + mcrt_vn1x = mcrt_vnx*mcrt_cos + mcrt_bx*mcrt_sin; \ + mcrt_vn1y = mcrt_vny*mcrt_cos + mcrt_by*mcrt_sin; \ + mcrt_vn1z = mcrt_vnz*mcrt_cos + mcrt_bz*mcrt_sin; \ + (x) = mcrt_vpx + mcrt_vn1x; \ + (y) = mcrt_vpy + mcrt_vn1y; \ + (z) = mcrt_vpz + mcrt_vn1z; \ + } while(0) + +/** + * Mirror (xyz) in the plane given by the point (rx,ry,rz) and normal (nx,ny,nz) + * + * TODO: This define is seemingly never used... + */ +#define mirror(x,y,z,rx,ry,rz,nx,ny,nz) \ + do { \ + double mcrt_tmpx= (nx), mcrt_tmpy = (ny), mcrt_tmpz = (nz); \ + double mcrt_tmpt; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_tmpt=scalar_prod((rx),(ry),(rz),mcrt_tmpx,mcrt_tmpy,mcrt_tmpz); \ + (x) = rx -2 * mcrt_tmpt*mcrt_rmpx; \ + (y) = ry -2 * mcrt_tmpt*mcrt_rmpy; \ + (z) = rz -2 * mcrt_tmpt*mcrt_rmpz; \ + } while (0) + +#pragma acc routine +Coords coords_set(MCNUM x, MCNUM y, MCNUM z); +#pragma acc routine +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z); +#pragma acc routine +Coords coords_add(Coords a, Coords b); +#pragma acc routine +Coords coords_sub(Coords a, Coords b); +#pragma acc routine +Coords coords_neg(Coords a); +#pragma acc routine +Coords coords_scale(Coords b, double scale); +#pragma acc routine +double coords_sp(Coords a, Coords b); +#pragma acc routine +Coords coords_xp(Coords b, Coords c); +#pragma acc routine +double coords_len(Coords a); +#pragma acc routine seq +void coords_print(Coords a); +#pragma acc routine seq +mcstatic void coords_norm(Coords* c); + +#pragma acc routine seq +void rot_set_rotation(Rotation t, double phx, double phy, double phz); +#pragma acc routine seq +int rot_test_identity(Rotation t); +#pragma acc routine seq +void rot_mul(Rotation t1, Rotation t2, Rotation t3); +#pragma acc routine seq +void rot_copy(Rotation dest, Rotation src); +#pragma acc routine seq +void rot_transpose(Rotation src, Rotation dst); +#pragma acc routine seq +Coords rot_apply(Rotation t, Coords a); + +#pragma acc routine seq +void mccoordschange(Coords a, Rotation t, _class_particle *particle); +#pragma acc routine seq +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz); + +double mcestimate_error(double N, double p1, double p2); +void mcreadparams(void); + +/* this is now in mcstas-r.h and mcxtrace-r.h as the number of state parameters +is no longer equal */ + +_class_particle mcgenstate(void); + +// trajectory/shape intersection routines +#pragma acc routine seq +int inside_rectangle(double, double, double, double); +#pragma acc routine seq +int box_intersect(double *dt_in, double *dt_out, double x, double y, double z, + double vx, double vy, double vz, double dx, double dy, double dz); +#pragma acc routine seq +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h); +#pragma acc routine seq +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r); +// second order equation roots +#pragma acc routine seq +int solve_2nd_order(double *t1, double *t2, + double A, double B, double C); + +// random vector generation to shape +// defines silently introducing _particle as the last argument +#define randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius) \ + _randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius, _particle) +#define randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A) \ + _randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, _particle) +#define randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order) \ + _randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order, _particle) +// defines forwarding to "inner" functions +#define randvec_target_sphere randvec_target_circle +#define randvec_target_rect(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9) \ + randvec_target_rect_real(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,0,0,0,1) +// headers for randvec +#pragma acc routine seq +void _randvec_target_circle(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double radius, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_angular(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double height, + double width, Rotation A, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, double height, double width, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle); + + +// this is the main() +int mccode_main(int argc, char *argv[]); + + +#endif /* !MCCODE_H */ + +#ifndef MCCODE_R_IO_H +#define MCCODE_R_IO_H "$Revision$" + +#if (USE_NEXUS == 0) +#undef USE_NEXUS +#endif + +#ifndef CHAR_BUF_LENGTH +#define CHAR_BUF_LENGTH 1024 +#endif + + +/* I/O section part ========================================================= */ + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + + +/* main DETECTOR structure which stores most information to write to data files */ +struct mcdetector_struct { + char filename[CHAR_BUF_LENGTH]; /* file name of monitor */ + double Position[3]; /* position of detector component*/ + char position[CHAR_BUF_LENGTH]; /* position of detector component (string)*/ + Rotation Rotation; /* position of detector component*/ + char options[CHAR_BUF_LENGTH]; /* Monitor_nD style list-mode'options' (string)*/ + char component[CHAR_BUF_LENGTH]; /* component instance name */ + char nexuscomp[CHAR_BUF_LENGTH]; /* component naming in NeXus/HDF case */ + char instrument[CHAR_BUF_LENGTH]; /* instrument name */ + char type[CHAR_BUF_LENGTH]; /* data type, e.g. 0d, 1d, 2d, 3d */ + char user[CHAR_BUF_LENGTH]; /* user name, e.g. HOME */ + char date[CHAR_BUF_LENGTH]; /* date of simulation end/write time */ + char title[CHAR_BUF_LENGTH]; /* title of detector */ + char xlabel[CHAR_BUF_LENGTH]; /* X axis label */ + char ylabel[CHAR_BUF_LENGTH]; /* Y axis label */ + char zlabel[CHAR_BUF_LENGTH]; /* Z axis label */ + char xvar[CHAR_BUF_LENGTH]; /* X variable name */ + char yvar[CHAR_BUF_LENGTH]; /* Y variable name */ + char zvar[CHAR_BUF_LENGTH]; /* Z variable name */ + char ncount[CHAR_BUF_LENGTH]; /* number of events initially generated */ + char limits[CHAR_BUF_LENGTH]; /* X Y Z limits, e.g. [xmin xmax ymin ymax zmin zmax] */ + char variables[CHAR_BUF_LENGTH]; /* variables written into data block */ + char statistics[CHAR_BUF_LENGTH]; /* center, mean and half width along axis */ + char signal[CHAR_BUF_LENGTH]; /* min max and mean of signal (data block) */ + char values[CHAR_BUF_LENGTH]; /* integrated values e.g. [I I_err N] */ + double xmin,xmax; /* min max of axes */ + double ymin,ymax; + double zmin,zmax; + double intensity; /* integrated values for data block */ + double error; + double events; + double min; /* statistics for data block */ + double max; + double mean; + double centerX; /* statistics for axes */ + double halfwidthX; + double centerY; + double halfwidthY; + int rank; /* dimensionaly of monitor, e.g. 0 1 2 3 */ + char istransposed; /* flag to transpose matrix for some formats */ + + long m,n,p; /* dimensions of data block and along axes */ + long date_l; /* same as date, but in sec since 1970 */ + + double *p0, *p1, *p2; /* pointers to saved data, NULL when freed */ + char format[CHAR_BUF_LENGTH]; /* format for file generation */ +}; + +typedef struct mcdetector_struct MCDETECTOR; + +static char *dirname = NULL; /* name of output directory */ +static char *siminfo_name = "mccode"; /* default output sim file name */ +char *mcformat = NULL; /* NULL (default) or a specific format */ + +/* file I/O definitions and function prototypes */ + +#ifndef MC_EMBEDDED_RUNTIME /* the mcstatic variables (from mccode-r.c) */ +extern FILE * siminfo_file; /* handle to the output siminfo file */ +extern int mcgravitation; /* flag to enable gravitation */ +extern int mcdotrace; /* flag to print MCDISPLAY messages */ +#else +mcstatic FILE *siminfo_file = NULL; +#endif + +/* I/O function prototypes ================================================== */ + +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle); + +/* output functions */ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, long n, + double *p0, double *p1, double *p2, char *f, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, long m, + long n, double *p0, double *p1, double *p2, char *f, + char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rot,char* options, int index); + +/* wrappers to output functions, that automatically set NAME and POSITION */ +#define DETECTOR_OUT(p0,p1,p2) mcdetector_out_0D(NAME_CURRENT_COMP,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_0D(t,p0,p1,p2) mcdetector_out_0D(t,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f) \ + mcdetector_out_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f) \ + mcdetector_out_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) + +#ifdef USE_NEXUS +#include "napi.h" +NXhandle nxhandle; +#endif + +#endif /* ndef MCCODE_R_IO_H */ + +#endif /* MCCODE_R_H */ +/* End of file "mccode-r.h". */ + +/* embedding file "mcstas-r.h" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system header for McStas. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int mcnumipar; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM instrument.counter_AbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#define MCSTAS_R_H "$Revision$" + +/* Following part is only embedded when not redundent with mcstas.h */ + +#ifndef MCCODE_H + +#define AA2MS 629.622368 /* Convert k[1/AA] to v[m/s] */ +#define MS2AA 1.58825361e-3 /* Convert v[m/s] to k[1/AA] */ +#define K2V AA2MS +#define V2K MS2AA +#define Q2V AA2MS +#define V2Q MS2AA +#define SE2V 437.393377 /* Convert sqrt(E)[meV] to v[m/s] */ +#define VS2E 5.22703725e-6 /* Convert (v[m/s])**2 to E[meV] */ + +#define SCATTER0 do {DEBUG_SCATTER(); SCATTERED++;} while(0) +#define SCATTER SCATTER0 + +#define JUMPTOCOMP(comp) mcneutron->_index = INDEX_COMP(comp); + +#define MAGNET_ON \ + do { \ + mcMagnet = 1; \ + } while(0) + +#define MAGNET_OFF \ + do { \ + mcMagnet = 0; \ + } while(0) + +#define ALLOW_BACKPROP \ + do { \ + allow_backprop = 1; \ + } while(0) + +#define DISALLOW_BACKPROP \ + do { \ + allow_backprop = 0; \ + } while(0) + +#define PROP_MAGNET(dt) \ + do { \ + } while (0) + /* change coordinates from local system to magnet system */ +/* Rotation rotLM, rotTemp; \ + Coords posLM = coords_sub(POS_A_CURRENT_COMP, mcMagnetPos); \ + rot_transpose(ROT_A_CURRENT_COMP, rotTemp); \ + rot_mul(rotTemp, mcMagnetRot, rotLM); \ + mcMagnetPrecession(x, y, z, t, vx, vy, vz, \ + &sx, &sy, &sz, dt, posLM, rotLM); \ + } while(0) +*/ + +#define mcPROP_DT(dt) \ + do { \ + if (mcMagnet && dt > 0) PROP_MAGNET(dt);\ + x += vx*(dt); \ + y += vy*(dt); \ + z += vz*(dt); \ + t += (dt); \ + if (isnan(p) || isinf(p)) { ABSORB; }\ + } while(0) + +/* ADD: E. Farhi, Aug 6th, 2001 PROP_GRAV_DT propagation with acceleration */ +#define PROP_GRAV_DT(dt, Ax, Ay, Az) \ + do { \ + if(dt < 0 && allow_backprop == 0) { ABSORB; }\ + if (mcMagnet) /*printf("Spin precession gravity\n")*/; \ + x += vx*(dt) + (Ax)*(dt)*(dt)/2; \ + y += vy*(dt) + (Ay)*(dt)*(dt)/2; \ + z += vz*(dt) + (Az)*(dt)*(dt)/2; \ + vx += (Ax)*(dt); \ + vy += (Ay)*(dt); \ + vz += (Az)*(dt); \ + t += (dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_DT(dt) \ + do { \ + if(dt < 0 && allow_backprop == 0) { RESTORE=1; ABSORB; }; \ + if (mcgravitation) { Coords mcLocG; double mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + PROP_GRAV_DT(dt, mc_gx, mc_gy, mc_gz); } \ + else mcPROP_DT(dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_Z0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gz/2, -vz, -z); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); z=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Z0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_Z0 \ + do { \ + double mc_dt; \ + if(vz == 0) { ABSORB; }; \ + mc_dt = -z/vz; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + z = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_X0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gx/2, -vx, -x); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); x=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_X0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_X0 \ + do { \ + double mc_dt; \ + if(vx == 0) { ABSORB; }; \ + mc_dt = -x/vx; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + x = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_Y0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gy/2, -vy, -y); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); y=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Y0; \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define mcPROP_Y0 \ + do { \ + double mc_dt; \ + if(vy == 0) { ABSORB; }; \ + mc_dt = -y/vy; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + y = 0; \ + DISALLOW_BACKPROP; \ + } while(0) + + +#ifdef DEBUG + +#define DEBUG_STATE() if(!mcdotrace); else \ + printf("STATE: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); +#define DEBUG_SCATTER() if(!mcdotrace); else \ + printf("SCATTER: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); + +#else + +#define DEBUG_STATE() +#define DEBUG_SCATTER() + +#endif + +#endif /* !MCCODE_H */ + +#endif /* MCSTAS_R_H */ +/* End of file "mcstas-r.h". */ + +/* embedding file "mccode-r.c" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y/McXtrace X.Y +* Version: $Revision$ +* +* Runtime system for McStas and McXtrace. +* Embedded within instrument in runtime mode. +* Contains SECTIONS: +* MPI handling (sum, send, recv) +* format definitions +* I/O +* mcdisplay support +* random numbers +* coordinates handling +* vectors math (solve 2nd order, normals, randvec...) +* parameter handling +* signal and main handlers +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + + +/** Include header files to avoid implicit declarations (not allowed on LLVM) */ +#include +#include + +// UNIX specific headers (non-Windows) +#if defined(__unix__) || defined(__APPLE__) +#include +#include +#endif + + +#ifndef DANSE +#ifdef MC_ANCIENT_COMPATIBILITY +int traceenabled = 0; +int defaultmain = 0; +#endif +/* else defined directly in the McCode generated C code */ + +static long mcseed = 0; /* seed for random generator */ +#pragma acc declare create ( mcseed ) +static long mcstartdate = 0; /* start simulation time */ +static int mcdisable_output_files = 0; /* --no-output-files */ +mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ +mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ +mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ +mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ +#pragma acc declare create ( mcdotrace ) +int mcallowbackprop = 0; /* flag to enable negative/backprop */ + +/* OpenACC-related segmentation parameters: */ +int vecsize = 128; +int numgangs = 7813; +long gpu_innerloop = 2147483647; + +/* Monitor_nD list/buffer-size default */ +/* Starting value may be defined using -DND_BUFFER=N */ +/* Can further be controlled dynamically using --bufsiz input */ +long MONND_BUFSIZ = 10000000; +#ifdef ND_BUFFER +MONND_BUFSIZ = ND_BUFFER; +#endif + + +/* Number of particle histories to simulate. */ +#ifdef NEUTRONICS +mcstatic unsigned long long int mcncount = 1; +mcstatic unsigned long long int mcrun_num = 0; +#else +#ifdef MCDEFAULT_NCOUNT +mcstatic unsigned long long int mcncount = MCDEFAULT_NCOUNT; +#else +mcstatic unsigned long long int mcncount = 1000000; +#endif +#pragma acc declare create ( mcncount ) +mcstatic unsigned long long int mcrun_num = 0; +#pragma acc declare create ( mcrun_num ) +#endif /* NEUTRONICS */ + +#else +#include "mcstas-globals.h" +#endif /* !DANSE */ + +#ifndef NX_COMPRESSION +#define NX_COMPRESSION NX_COMP_NONE +#endif + +/* String nullification on GPU and other replacements */ +#ifdef OPENACC +int noprintf() { + return 0; +} + +int str_comp(char *str1, char *str2) { + while (*str1 && *str1 == *str2) { + str1++; + str2++; + } + return (*str1 - *str2); +} + +size_t str_len(const char *s) +{ + size_t len = 0; + if(s != NULL) + { + while(*s != '\0') + { + ++len; + ++s; + } + } + return len; +} + +#endif + +/* SECTION: Predefine (component) parameters ================================= */ + +int nans_match(double a, double b){ + return (*(uint64_t*)&a == *(uint64_t*)&b); +} +int is_unset(double x){ + return nans_match(x, UNSET); +} +int is_set(double x){ + return !nans_match(x, UNSET); +} +int is_valid(double x){ + return !isnan(x)||is_unset(x); +} +int all_unset(int n, ...){ + va_list ptr; + va_start(ptr, n); + int ret=1; + for (int i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Allreduce((double*)(sbuf+offset), (double*)(rbuf+offset), + length, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + for (i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Send((void*)((char*)sbuf+offset*dsize), length, dtype, dest, tag++, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Send */ + +/******************************************************************************* +* mc_MPI_Recv: Receives arrays from MPI nodes by blocks to avoid buffer limit +* the buffer must have been allocated previously. +*******************************************************************************/ +int mc_MPI_Recv(void *sbuf, + long count, MPI_Datatype dtype, + int source) +{ + int dsize; + long offset=0; + int tag=1; + int length=MPI_REDUCE_BLOCKSIZE; /* defined in mccode-r.h */ + + if (!sbuf || count <= 0) return(MPI_SUCCESS); /* nothing to recv */ + MPI_Type_size(dtype, &dsize); + + while (offset < count) { + if (offset+length > count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Recv((void*)((char*)sbuf+offset*dsize), length, dtype, source, tag++, + MPI_COMM_WORLD, MPI_STATUS_IGNORE) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Recv */ + +#endif /* USE_MPI */ + +/* SECTION: parameters handling ============================================= */ + +/* Instrument input parameter type handling. */ +/******************************************************************************* +* mcparm_double: extract double value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_double(char *s, void *vptr) +{ + char *p; + double *v = (double *)vptr; + + if (!s) { *v = 0; return(1); } + *v = strtod(s, &p); + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_double: display parameter type double +*******************************************************************************/ +static char * +mcparminfo_double(char *parmname) +{ + return "double"; +} + +/******************************************************************************* +* mcparmerror_double: display error message when failed extract double +*******************************************************************************/ +static void +mcparmerror_double(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for floating point parameter %s (mcparmerror_double)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_double: convert double to string +*******************************************************************************/ +static void +mcparmprinter_double(char *f, void *vptr) +{ + double *v = (double *)vptr; + sprintf(f, "%g", *v); +} + +/******************************************************************************* +* mcparm_int: extract int value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_int(char *s, void *vptr) +{ + char *p; + int *v = (int *)vptr; + long x; + + if (!s) { *v = 0; return(1); } + *v = 0; + x = strtol(s, &p, 10); + if(x < INT_MIN || x > INT_MAX) + return 0; /* Under/overflow */ + *v = x; + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_int: display parameter type int +*******************************************************************************/ +static char * +mcparminfo_int(char *parmname) +{ + return "int"; +} + +/******************************************************************************* +* mcparmerror_int: display error message when failed extract int +*******************************************************************************/ +static void +mcparmerror_int(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for integer parameter %s (mcparmerror_int)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_int: convert int to string +*******************************************************************************/ +static void +mcparmprinter_int(char *f, void *vptr) +{ + int *v = (int *)vptr; + sprintf(f, "%d", *v); +} + +/******************************************************************************* +* mcparm_string: extract char* value from 's' into 'vptr' (copy) +*******************************************************************************/ +static int +mcparm_string(char *s, void *vptr) +{ + char **v = (char **)vptr; + if (!s) { *v = NULL; return(1); } + *v = (char *)malloc(strlen(s) + 1); + if(*v == NULL) + { + exit(-fprintf(stderr, "Error: Out of memory %li (mcparm_string).\n", (long)strlen(s) + 1)); + } + strcpy(*v, s); + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_string: display parameter type string +*******************************************************************************/ +static char * +mcparminfo_string(char *parmname) +{ + return "string"; +} + +/******************************************************************************* +* mcparmerror_string: display error message when failed extract string +*******************************************************************************/ +static void +mcparmerror_string(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for string parameter %s (mcparmerror_string)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_string: convert string to string (including esc chars) +*******************************************************************************/ +static void +mcparmprinter_string(char *f, void *vptr) +{ + char **v = (char **)vptr; + char *p; + + if (!*v) { *f='\0'; return; } + strcpy(f, ""); + for(p = *v; *p != '\0'; p++) + { + switch(*p) + { + case '\n': + strcat(f, "\\n"); + break; + case '\r': + strcat(f, "\\r"); + break; + case '"': + strcat(f, "\\\""); + break; + case '\\': + strcat(f, "\\\\"); + break; + default: + strncat(f, p, 1); + } + } + /* strcat(f, "\""); */ +} /* mcparmprinter_string */ + +/* now we may define the parameter structure, using previous functions */ +static struct + { + int (*getparm)(char *, void *); + char * (*parminfo)(char *); + void (*error)(char *, char *); + void (*printer)(char *, void *); +} mcinputtypes[] = { + { + mcparm_int, mcparminfo_int, mcparmerror_int, + mcparmprinter_int + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + } +}; + +/******************************************************************************* +* mcestimate_error: compute sigma from N,p,p2 in Gaussian large numbers approx +*******************************************************************************/ +double mcestimate_error(double N, double p1, double p2) +{ + double pmean, n1; + if(N <= 1) + return p1; + pmean = p1 / N; + n1 = N - 1; + /* Note: underflow may cause p2 to become zero; the fabs() below guards + against this. */ + return sqrt((N/n1)*fabs(p2 - pmean*pmean)); +} + +double (*mcestimate_error_p) + (double V2, double psum, double p2sum)=mcestimate_error; + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + +#ifndef MCCODE_R_IO_C +#define MCCODE_R_IO_C "$Revision$" + +/* SECTION: file i/o handling ================================================ */ + +#ifndef HAVE_STRCASESTR +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle) +{ + int nlen = strlen(needle); + int hlen = strlen(haystack) - nlen + 1; + int i; + + for (i = 0; i < hlen; i++) { + int j; + for (j = 0; j < nlen; j++) { + unsigned char c1 = haystack[i+j]; + unsigned char c2 = needle[j]; + if (toupper(c1) != toupper(c2)) + goto next; + } + return (char *) haystack + i; + next: + ; + } + return NULL; +} + + +#endif +#ifndef HAVE_STRCASECMP +int strcasecmp( const char *s1, const char *s2 ) +{ + int c1, c2; + do { + c1 = tolower( (unsigned char) *s1++ ); + c2 = tolower( (unsigned char) *s2++ ); + } while (c1 == c2 && c1 != 0); + return c2 > c1 ? -1 : c1 > c2; +} +#endif + +#ifndef STRACPY +/* this is a replacement to strncpy, but ensures that the copy ends with NULL */ +/* http://stracpy.blogspot.fr/2011/04/stracpy-strncpy-replacement.html */ +#define STRACPY +char *stracpy(char *destination, const char *source, size_t amount) +{ + if (!destination || !source || !amount) return(NULL); + while(amount--) + if((*destination++ = *source++) == '\0') break; + *destination = '\0'; + return destination; +} +#endif + +/******************************************************************************* +* mcfull_file: allocates a full file name=dirname+file. Catenate extension if missing. +*******************************************************************************/ +char *mcfull_file(char *name, char *ext) +{ + int dirlen=0; + char *mem =NULL; + + dirlen = dirname ? strlen(dirname) : 0; + mem = (char*)malloc(dirlen + strlen(name) + CHAR_BUF_LENGTH); + if(!mem) { + exit(-fprintf(stderr, "Error: Out of memory %li (mcfull_file)\n", (long)(dirlen + strlen(name) + 256))); + } + strcpy(mem, ""); + + /* prepend directory name to path if name does not contain a path */ + if (dirlen > 0 && !strchr(name, MC_PATHSEP_C)) { + strcat(mem, dirname); + strcat(mem, MC_PATHSEP_S); + } /* dirlen */ + + strcat(mem, name); + if (!strchr(name, '.') && ext && strlen(ext)) + { /* add extension if not in file name already */ + strcat(mem, "."); + strcat(mem, ext); + } + return(mem); +} /* mcfull_file */ + +/******************************************************************************* +* mcnew_file: opens a new file within dirname if non NULL +* the file is opened in "a" (append, create if does not exist) +* the extension 'ext' is added if the file name does not include one. +* the last argument is set to 0 if file did not exist, else to 1. +*******************************************************************************/ +FILE *mcnew_file(char *name, char *ext, int *exists) +{ + char *mem; + FILE *file=NULL; + + if (!name || strlen(name) == 0 || mcdisable_output_files) return(NULL); + + mem = mcfull_file(name, ext); /* create dirname/name.ext */ + + /* check for existence */ + file = fopen(mem, "r"); /* for reading -> fails if does not exist */ + if (file) { + fclose(file); + *exists=1; + } else + *exists=0; + + /* open the file for writing/appending */ +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + /* NXhandle nxhandle is defined in the .h with USE_NEXUS */ + NXaccess mode = (*exists ? NXACC_CREATE5 | NXACC_RDWR : NXACC_CREATE5); + + if (NXopen(mem, mode, &nxhandle) != NX_OK) + file = NULL; + else + file = (FILE*)&nxhandle; /* to make it non NULL */ + } else +#endif + file = fopen(mem, "a+"); + + if(!file) + fprintf(stderr, "Warning: could not open output file '%s' for %s (mcnew_file)\n", + mem, *exists ? "append" : "create"); + free(mem); + + return file; +} /* mcnew_file */ + +/******************************************************************************* +* mcdetector_statistics: compute detector statistics, error bars, [x I I_err N] 1D +* RETURN: updated detector structure +* Used by: detector_import +*******************************************************************************/ +MCDETECTOR mcdetector_statistics( + MCDETECTOR detector) +{ + + if (!detector.p1 || !detector.m) + return(detector); + + /* compute statistics and update MCDETECTOR structure ===================== */ + double sum_z = 0, min_z = 0, max_z = 0; + double fmon_x =0, smon_x = 0, fmon_y =0, smon_y=0, mean_z=0; + double Nsum=0, P2sum=0; + + double sum_xz = 0, sum_yz = 0, sum_x = 0, sum_y = 0, sum_x2z = 0, sum_y2z = 0; + int i,j; + char hasnan=0, hasinf=0; + char israw = ((char*)strcasestr(detector.format,"raw") != NULL); + double *this_p1=NULL; /* new 1D McCode array [x I E N]. Freed after writing data */ + + /* if McCode/PGPLOT and rank==1 we create a new m*4 data block=[x I E N] */ + if (detector.rank == 1 && strcasestr(detector.format,"McCode")) { + this_p1 = (double *)calloc(detector.m*detector.n*detector.p*4, sizeof(double)); + if (!this_p1) + exit(-fprintf(stderr, "Error: Out of memory creating %zi 1D " MCCODE_STRING " data set for file '%s' (detector_import)\n", + detector.m*detector.n*detector.p*4*sizeof(double*), detector.filename)); + } + + max_z = min_z = detector.p1[0]; + + /* compute sum and moments (not for lists) */ + if (!strcasestr(detector.format,"list") && detector.m) + for(j = 0; j < detector.n*detector.p; j++) + { + for(i = 0; i < detector.m; i++) + { + double x,y,z; + double N, E; + long index= !detector.istransposed ? i*detector.n*detector.p + j : i+j*detector.m; + char hasnaninf=0; + + if (detector.m) + x = detector.xmin + (i + 0.5)/detector.m*(detector.xmax - detector.xmin); + else x = 0; + if (detector.n && detector.p) + y = detector.ymin + (j + 0.5)/detector.n/detector.p*(detector.ymax - detector.ymin); + else y = 0; + z = detector.p1[index]; + N = detector.p0 ? detector.p0[index] : 1; + E = detector.p2 ? detector.p2[index] : 0; + if (detector.p2 && !israw) + detector.p2[index] = (*mcestimate_error_p)(detector.p0[index],detector.p1[index],detector.p2[index]); /* set sigma */ + + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + /* fill-in 1D McCode array [x I E N] */ + this_p1[index*4] = x; + this_p1[index*4+1] = z; + this_p1[index*4+2] = detector.p2 ? detector.p2[index] : 0; + this_p1[index*4+3] = N; + } + + if (isnan(z) || isnan(E) || isnan(N)) hasnaninf=hasnan=1; + if (isinf(z) || isinf(E) || isinf(N)) hasnaninf=hasinf=1; + + /* compute stats integrals */ + if (!hasnaninf) { + sum_xz += x*z; + sum_yz += y*z; + sum_x += x; + sum_y += y; + sum_z += z; + sum_x2z += x*x*z; + sum_y2z += y*y*z; + if (z > max_z) max_z = z; + if (z < min_z) min_z = z; + + Nsum += N; + P2sum += E; + } + + } + } /* for j */ + + /* compute 1st and 2nd moments. For lists, sum_z=0 so this is skipped. */ + if (sum_z && detector.n*detector.m*detector.p) + { + fmon_x = sum_xz/sum_z; + fmon_y = sum_yz/sum_z; + smon_x = sum_x2z/sum_z-fmon_x*fmon_x; smon_x = smon_x > 0 ? sqrt(smon_x) : 0; + smon_y = sum_y2z/sum_z-fmon_y*fmon_y; smon_y = smon_y > 0 ? sqrt(smon_y) : 0; + mean_z = sum_z/detector.n/detector.m/detector.p; + } + /* store statistics into detector */ + detector.intensity = sum_z; + detector.error = Nsum ? (*mcestimate_error_p)(Nsum, sum_z, P2sum) : 0; + detector.events = Nsum; + detector.min = min_z; + detector.max = max_z; + detector.mean = mean_z; + detector.centerX = fmon_x; + detector.halfwidthX= smon_x; + detector.centerY = fmon_y; + detector.halfwidthY= smon_y; + + /* if McCode/PGPLOT and rank==1 replace p1 with new m*4 1D McCode and clear others */ + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + + detector.p1 = this_p1; + detector.n = detector.m; detector.m = 4; + detector.p0 = detector.p2 = NULL; + detector.istransposed = 1; + } + + if (detector.n*detector.m*detector.p > 1) + snprintf(detector.signal, CHAR_BUF_LENGTH, + "Min=%g; Max=%g; Mean=%g;", detector.min, detector.max, detector.mean); + else + strcpy(detector.signal, "None"); + snprintf(detector.values, CHAR_BUF_LENGTH, + "%g %g %g", detector.intensity, detector.error, detector.events); + + switch (detector.rank) { + case 1: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g;", + detector.centerX, detector.halfwidthX); break; + case 2: + case 3: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g; Y0=%g; dY=%g;", + detector.centerX, detector.halfwidthX, detector.centerY, detector.halfwidthY); + break; + default: strcpy(detector.statistics, "None"); + } + + if (hasnan) + printf("WARNING: Nan detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + if (hasinf) + printf("WARNING: Inf detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + + return(detector); + +} /* mcdetector_statistics */ + +/******************************************************************************* +* detector_import: build detector structure, merge non-lists from MPI +* compute basic stat, write "Detector:" line +* RETURN: detector structure. Invalid data if detector.p1 == NULL +* Invalid detector sets m=0 and filename="" +* Simulation data sets m=0 and filename=siminfo_name +* This function is equivalent to the old 'mcdetector_out', returning a structure +*******************************************************************************/ +MCDETECTOR detector_import( + char *format, + char *component, char *title, + long m, long n, long p, + char *xlabel, char *ylabel, char *zlabel, + char *xvar, char *yvar, char *zvar, + double x1, double x2, double y1, double y2, double z1, double z2, + char *filename, + double *p0, double *p1, double *p2, + Coords position, Rotation rotation, int index) +{ + time_t t; /* for detector.date */ + long date_l; /* date as a long number */ + char istransposed=0; + char c[CHAR_BUF_LENGTH]; /* temp var for signal label */ + + MCDETECTOR detector; + + /* build MCDETECTOR structure ============================================= */ + /* make sure we do not have NULL for char fields */ + + /* these also apply to simfile */ + strncpy (detector.filename, filename ? filename : "", CHAR_BUF_LENGTH); + strncpy (detector.format, format ? format : "McCode" , CHAR_BUF_LENGTH); + /* add extension if missing */ + if (strlen(detector.filename) && !strchr(detector.filename, '.')) + { /* add extension if not in file name already */ + strcat(detector.filename, ".dat"); + } + strncpy (detector.component, component ? component : MCCODE_STRING " component", CHAR_BUF_LENGTH); + #ifdef USE_NEXUS + char pref[5]; + if (index-1 < 10) { + sprintf(pref,"000"); + } else if (index-1 < 100) { + sprintf(pref,"00"); + } else if (index-1 < 1000) { + sprintf(pref,"0"); + } else if (index-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(detector.nexuscomp,"%s%d_%s",pref,index-1,detector.component); + #endif + + snprintf(detector.instrument, CHAR_BUF_LENGTH, "%s (%s)", instrument_name, instrument_source); + snprintf(detector.user, CHAR_BUF_LENGTH, "%s on %s", + getenv("USER") ? getenv("USER") : MCCODE_NAME, + getenv("HOST") ? getenv("HOST") : "localhost"); + time(&t); /* get current write time */ + date_l = (long)t; /* same but as a long */ + snprintf(detector.date, CHAR_BUF_LENGTH, "%s", ctime(&t)); + if (strlen(detector.date)) detector.date[strlen(detector.date)-1] = '\0'; /* remove last \n in date */ + detector.date_l = date_l; + + if (!mcget_run_num() || mcget_run_num() >= mcget_ncount()) + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%llu", mcget_ncount() +#ifdef USE_MPI +*mpi_node_count +#endif + ); + else + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%g/%g", (double)mcget_run_num(), (double)mcget_ncount()); + + detector.p0 = p0; + detector.p1 = p1; + detector.p2 = p2; + + /* handle transposition (not for NeXus) */ + if (!strcasestr(detector.format, "NeXus")) { + if (m<0 || n<0 || p<0) istransposed = !istransposed; + if (strcasestr(detector.format, "transpose")) istransposed = !istransposed; + if (istransposed) { /* do the swap once for all */ + long i=m; m=n; n=i; + } + } + + m=labs(m); n=labs(n); p=labs(p); /* make sure dimensions are positive */ + detector.istransposed = istransposed; + + /* determine detector rank (dimensionality) */ + if (!m || !n || !p || !p1) detector.rank = 4; /* invalid: exit with m=0 filename="" */ + else if (m*n*p == 1) detector.rank = 0; /* 0D */ + else if (n == 1 || m == 1) detector.rank = 1; /* 1D */ + else if (p == 1) detector.rank = 2; /* 2D */ + else detector.rank = 3; /* 3D */ + + /* from rank, set type */ + switch (detector.rank) { + case 0: strcpy(detector.type, "array_0d"); m=n=p=1; break; + case 1: snprintf(detector.type, CHAR_BUF_LENGTH, "array_1d(%ld)", m*n*p); m *= n*p; n=p=1; break; + case 2: snprintf(detector.type, CHAR_BUF_LENGTH, "array_2d(%ld, %ld)", m, n*p); n *= p; p=1; break; + case 3: snprintf(detector.type, CHAR_BUF_LENGTH, "array_3d(%ld, %ld, %ld)", m, n, p); break; + default: m=0; strcpy(detector.type, ""); strcpy(detector.filename, "");/* invalid */ + } + + detector.m = m; + detector.n = n; + detector.p = p; + + /* these only apply to detector files ===================================== */ + + detector.Position[0]=position.x; + detector.Position[1]=position.y; + detector.Position[2]=position.z; + rot_copy(detector.Rotation,rotation); + snprintf(detector.position, CHAR_BUF_LENGTH, "%g %g %g", position.x, position.y, position.z); + /* may also store actual detector orientation in the future */ + + strncpy(detector.title, title && strlen(title) ? title : component, CHAR_BUF_LENGTH); + strncpy(detector.xlabel, xlabel && strlen(xlabel) ? xlabel : "X", CHAR_BUF_LENGTH); /* axis labels */ + strncpy(detector.ylabel, ylabel && strlen(ylabel) ? ylabel : "Y", CHAR_BUF_LENGTH); + strncpy(detector.zlabel, zlabel && strlen(zlabel) ? zlabel : "Z", CHAR_BUF_LENGTH); + strncpy(detector.xvar, xvar && strlen(xvar) ? xvar : "x", CHAR_BUF_LENGTH); /* axis variables */ + strncpy(detector.yvar, yvar && strlen(yvar) ? yvar : detector.xvar, CHAR_BUF_LENGTH); + strncpy(detector.zvar, zvar && strlen(zvar) ? zvar : detector.yvar, CHAR_BUF_LENGTH); + + /* set "variables" as e.g. "I I_err N" */ + strcpy(c, "I "); + if (strlen(detector.zvar)) strncpy(c, detector.zvar,32); + else if (strlen(detector.yvar)) strncpy(c, detector.yvar,32); + else if (strlen(detector.xvar)) strncpy(c, detector.xvar,32); + + if (detector.rank == 1) + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s %s_err N", detector.xvar, c, c); + else + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s_err N", c, c); + + /* limits */ + detector.xmin = x1; + detector.xmax = x2; + detector.ymin = y1; + detector.ymax = y2; + detector.zmin = z1; + detector.zmax = z2; + if (abs(detector.rank) == 1) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g", x1, x2); + else if (detector.rank == 2) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g", x1, x2, y1, y2); + else + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g %g %g", x1, x2, y1, y2, z1, z2); + + /* if MPI and nodes_nb > 1: reduce data sets when using MPI =============== */ +#ifdef USE_MPI + if (!strcasestr(detector.format,"list") && mpi_node_count > 1 && m) { + /* we save additive data: reduce everything into mpi_node_root */ + if (p0) mc_MPI_Sum(p0, m*n*p); + if (p1) mc_MPI_Sum(p1, m*n*p); + if (p2) mc_MPI_Sum(p2, m*n*p); + if (!p0) { /* additive signal must be then divided by the number of nodes */ + int i; + for (i=0; i CHAR_BUF_LENGTH) break; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(Parameters) + strlen(ThisParam) + 1 >= CHAR_BUF_LENGTH) break; + strcat(Parameters, ThisParam); + } + + /* output data ============================================================ */ + if (f != stdout) + fprintf(f, "%sFile: %s%c%s\n", pre, dirname, MC_PATHSEP_C, siminfo_name); + else + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + + fprintf(f, "%sSource: %s\n", pre, instrument_source); + fprintf(f, "%sParameters: %s\n", pre, Parameters); + + fprintf(f, "%sTrace_enabled: %s\n", pre, traceenabled ? "yes" : "no"); + fprintf(f, "%sDefault_main: %s\n", pre, defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "yes"); +#else + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "no"); +#endif + + fflush(f); +} /* mcinfo_out */ + +/******************************************************************************* +* mcruninfo_out: output simulation tags/info (both in SIM and data files) +* Used in: siminfo_init (ascii case), mcdetector_out_xD_ascii +*******************************************************************************/ +static void mcruninfo_out(char *pre, FILE *f) +{ + int i; + char Parameters[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + fprintf(f, "%sFormat: %s%s\n", pre, + mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME, + mcformat && strcasestr(mcformat,"McCode") ? " with text headers" : ""); + fprintf(f, "%sURL: %s\n", pre, "http://www.mccode.org"); + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + fprintf(f, "%sInstrument: %s\n", pre, instrument_source); + fprintf(f, "%sNcount: %llu\n", pre, mcget_ncount()); + fprintf(f, "%sTrace: %s\n", pre, mcdotrace ? "yes" : "no"); + fprintf(f, "%sGravitation: %s\n", pre, mcgravitation ? "yes" : "no"); + snprintf(Parameters, CHAR_BUF_LENGTH, "%ld", mcseed); + fprintf(f, "%sSeed: %s\n", pre, Parameters); + fprintf(f, "%sDirectory: %s\n", pre, dirname ? dirname : "."); +#ifdef USE_MPI + if (mpi_node_count > 1) + fprintf(f, "%sNodes: %i\n", pre, mpi_node_count); +#endif + + // TODO Consider replacing this by a a call to `mcparameterinfo_out(pre+"Param: ", f)` + /* output parameter string ================================================ */ + for(i = 0; i < numipar; i++) { + if (mcinputtable[i].par){ + /* Parameters with a default value */ + if(mcinputtable[i].val && strlen(mcinputtable[i].val)){ + (*mcinputtypes[mcinputtable[i].type].printer)(Parameters, mcinputtable[i].par); + fprintf(f, "%sParam: %s=%s\n", pre, mcinputtable[i].name, Parameters); + /* ... and those without */ + }else{ + fprintf(f, "%sParam: %s=NULL\n", pre, mcinputtable[i].name); + } + } + } + fflush(f); +} /* mcruninfo_out */ + +/******************************************************************************* + * @brief Print parameter information to the specified file + * @param pre any beginning-of-line padding + * @param f the output file + */ +static void mcparameterinfo_out(char * pre, FILE *f){ + if (!f || mcdisable_output_files) return; + + unsigned int nchar = 4; + for (int i=0; i < numipar; ++i){ + if (mcinputtable[i].par && mcinputtable[i].val && strlen(mcinputtable[i].val) > nchar) + nchar = strlen(mcinputtable[i].val); + } + char * buffer = calloc(nchar+1, sizeof(char)); + + if (!buffer) { + exit(1); + } + + for (int i=0; i < numipar; ++i) { + if (mcinputtable[i].par) { + char * name = mcinputtable[i].name; + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + mcinputtypes[mcinputtable[i].type].printer(buffer, mcinputtable[i].par); + } else { + strcpy(buffer, "NULL"); + } + if (strlen(mcinputtable[i].unit)){ + //fprintf(f, "%s%s %s (\"%s\") = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + fprintf(f, "%s%s %s/\"%s\" = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + } else { + fprintf(f, "%s%s %s = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, buffer); + } + } + } + + free(buffer); +} + +/******************************************************************************* +* siminfo_out: wrapper to fprintf(siminfo_file) +*******************************************************************************/ +void siminfo_out(char *format, ...) +{ + va_list ap; + + if(siminfo_file && !mcdisable_output_files) + { + va_start(ap, format); + vfprintf(siminfo_file, format, ap); + va_end(ap); + } +} /* siminfo_out */ + + +/******************************************************************************* +* mcdatainfo_out: output detector header +* mcdatainfo_out(prefix, file_handle, detector) writes info to data file +*******************************************************************************/ +static void +mcdatainfo_out(char *pre, FILE *f, MCDETECTOR detector) +{ + if (!f || !detector.m || mcdisable_output_files) return; + + /* output data ============================================================ */ + fprintf(f, "%sDate: %s (%li)\n", pre, detector.date, detector.date_l); + fprintf(f, "%stype: %s\n", pre, detector.type); + fprintf(f, "%sSource: %s\n", pre, detector.instrument); + fprintf(f, "%scomponent: %s\n", pre, detector.component); + fprintf(f, "%sposition: %s\n", pre, detector.position); + + fprintf(f, "%stitle: %s\n", pre, detector.title); + fprintf(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "%sNcount: %s\n" : + "%sratio: %s\n", pre, detector.ncount); + + if (strlen(detector.filename)) { + fprintf(f, "%sfilename: %s\n", pre, detector.filename); + } + + fprintf(f, "%sstatistics: %s\n", pre, detector.statistics); + fprintf(f, "%ssignal: %s\n", pre, detector.signal); + fprintf(f, "%svalues: %s\n", pre, detector.values); + + if (detector.rank >= 1) + { + fprintf(f, "%sxvar: %s\n", pre, detector.xvar); + fprintf(f, "%syvar: %s\n", pre, detector.yvar); + fprintf(f, "%sxlabel: %s\n", pre, detector.xlabel); + fprintf(f, "%sylabel: %s\n", pre, detector.ylabel); + if (detector.rank > 1) { + fprintf(f, "%szvar: %s\n", pre, detector.zvar); + fprintf(f, "%szlabel: %s\n", pre, detector.zlabel); + } + } + + fprintf(f, + abs(detector.rank)==1 ? + "%sxlimits: %s\n" : + "%sxylimits: %s\n", pre, detector.limits); + fprintf(f, "%svariables: %s\n", pre, + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + fflush(f); + +} /* mcdatainfo_out */ + +/* mcdetector_out_array_ascii: output a single array to a file + * m: columns + * n: rows + * p: array + * f: file handle (already opened) + */ +static void mcdetector_out_array_ascii(long m, long n, double *p, FILE *f, char istransposed) +{ + if(f) + { + int i,j; + for(j = 0; j < n; j++) + { + for(i = 0; i < m; i++) + { + fprintf(f, "%.10g ", p[!istransposed ? i*n + j : j*m+i]); + } + fprintf(f,"\n"); + } + } +} /* mcdetector_out_array_ascii */ + +/******************************************************************************* +* mcdetector_out_0D_ascii: called by mcdetector_out_0D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + /* Write data set information to simulation description file. */ + MPI_MASTER( + siminfo_out("\nbegin data\n"); // detector.component + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.component, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* write I I_err N */ + fprintf(outfile, "%g %g %g\n", + detector.intensity, detector.error, detector.events); + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); +} /* mcdetector_out_0D_ascii */ + +/******************************************************************************* +* mcdetector_out_1D_ascii: called by mcdetector_out_1D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* output the 1D array columns */ + mcdetector_out_array_ascii(detector.m, detector.n, detector.p1, outfile, detector.istransposed); + + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); + +} /* mcdetector_out_1D_ascii */ + +/******************************************************************************* +* mcdetector_out_2D_ascii: called by mcdetector_out_2D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write header only if file has just been created (not appending) */ + if (!exists) { + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + } + /* Add # Data entry for any write to the file (e.g. via -USR2, see GitHub issue #2174 ) */ + fprintf(outfile, "# Data [%s/%s] %s:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p1, + outfile, detector.istransposed); + if (detector.p2) { + fprintf(outfile, "# Errors [%s/%s] %s_err:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p2, + outfile, detector.istransposed); + } + if (detector.p0) { + fprintf(outfile, "# Events [%s/%s] N:\n", detector.component, detector.filename); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p0, + outfile, detector.istransposed); + } + fclose(outfile); + + if (!exists) { + if (strcasestr(detector.format, "list")) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } + } /* if outfile */ + ); /* MPI_MASTER */ +#ifdef USE_MPI + if (strcasestr(detector.format, "list") && mpi_node_count > 1) { + int node_i=0; + /* loop along MPI nodes to write sequentially */ + for(node_i=0; node_i strlen(original)) n = strlen(original); + else original += strlen(original)-n; + strncpy(valid, original, n); + + for (i=0; i < n; i++) + { + if ( (valid[i] > 122) + || (valid[i] < 32) + || (strchr("!\"#$%&'()*+,-.:;<=>?@[\\]^`/ \n\r\t", valid[i]) != NULL) ) + { + if (i) valid[i] = '_'; else valid[i] = 'm'; + } + } + valid[i] = '\0'; + + return(valid); +} /* strcpy_valid */ + +/* end ascii output section ================================================= */ + + + + + + + +#ifdef USE_NEXUS + +/* ========================================================================== */ + +/* NeXus output */ + +/* ========================================================================== */ + +#define nxprintf(...) nxstr('d', __VA_ARGS__) +#define nxprintattr(...) nxstr('a', __VA_ARGS__) + +/******************************************************************************* +* nxstr: output a tag=value data set (char) in NeXus/current group +* when 'format' is larger that 1024 chars it is used as value for the 'tag' +* else the value is assembled with format and following arguments. +* type='d' -> data set +* 'a' -> attribute for current data set +*******************************************************************************/ +static int nxstr(char type, NXhandle *f, char *tag, char *format, ...) +{ + va_list ap; + char value[CHAR_BUF_LENGTH]; + int i; + int ret=NX_OK; + + if (!tag || !format || !strlen(tag) || !strlen(format)) return(NX_OK); + + /* assemble the value string */ + if (strlen(format) < CHAR_BUF_LENGTH) { + va_start(ap, format); + ret = vsnprintf(value, CHAR_BUF_LENGTH, format, ap); + va_end(ap); + + i = strlen(value); + } else { + i = strlen(format); + } + + if (type == 'd') { + /* open/put/close data set */ + if (NXmakedata (f, tag, NX_CHAR, 1, &i) != NX_OK) return(NX_ERROR); + NXopendata (f, tag); + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputdata (f, value); + else + ret = NXputdata (f, format); + NXclosedata(f); + } else { + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputattr (f, tag, value, strlen(value), NX_CHAR); + else + ret = NXputattr (f, tag, format, strlen(format), NX_CHAR); + } + + return(ret); + +} /* nxstr */ + +/******************************************************************************* +* mcinfo_readfile: read a full file into a string buffer which is allocated +* Think to free the buffer after use. +* Used in: mcinfo_out_nexus (nexus) +*******************************************************************************/ +char *mcinfo_readfile(char *filename) +{ + FILE *f = fopen(filename, "rb"); + if (!f) return(NULL); + fseek(f, 0, SEEK_END); + long fsize = ftell(f); + rewind(f); + char *string = malloc(fsize + 1); + if (string) { + int n = fread(string, fsize, 1, f); + fclose(f); + + string[fsize] = 0; + } + return(string); +} + +/******************************************************************************* +* mcinfo_out: output instrument/simulation groups in NeXus file +* Used in: siminfo_init (nexus) +*******************************************************************************/ +static void mcinfo_out_nexus(NXhandle f) +{ + FILE *fid; /* for intrument source code/C/IDF */ + char *buffer=NULL; + time_t t =time(NULL); /* for date */ + char entry0[CHAR_BUF_LENGTH]; + int count=0; + char name[CHAR_BUF_LENGTH]; + char class[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + /* write NeXus NXroot attributes */ + /* automatically added: file_name, HDF5_Version, file_time, NeXus_version */ + nxprintattr(f, "creator", "%s generated with " MCCODE_STRING, instrument_name); + + /* count the number of existing NXentry and create the next one */ + NXgetgroupinfo(f, &count, name, class); + sprintf(entry0, "entry%i", count+1); + + /* create the main NXentry (mandatory in NeXus) */ + if (NXmakegroup(f, entry0, "NXentry") == NX_OK) + if (NXopengroup(f, entry0, "NXentry") == NX_OK) { + nxprintf(nxhandle, "program_name", MCCODE_STRING); + nxprintf(f, "start_time", ctime(&t)); + nxprintf(f, "title", "%s%s%s simulation generated by instrument %s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name, + instrument_name); + nxprintattr(f, "program_name", MCCODE_STRING); + nxprintattr(f, "instrument", instrument_name); + nxprintattr(f, "simulation", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + /* write NeXus instrument group */ + if (NXmakegroup(f, "instrument", "NXinstrument") == NX_OK) + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + int i; + char *string=NULL; + + /* write NeXus parameters(types) data =================================== */ + string = (char*)malloc(CHAR_BUF_LENGTH); + if (string) { + strcpy(string, ""); + for(i = 0; i < numipar; i++) + { + char ThisParam[CHAR_BUF_LENGTH]; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(string) + strlen(ThisParam) < CHAR_BUF_LENGTH) + strcat(string, ThisParam); + } + nxprintattr(f, "Parameters", string); + free(string); + } + + nxprintattr(f, "name", instrument_name); + nxprintf (f, "name", instrument_name); + nxprintattr(f, "Source", instrument_source); + + nxprintattr(f, "Trace_enabled", traceenabled ? "yes" : "no"); + nxprintattr(f, "Default_main", defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + nxprintattr(f, "Embedded_runtime", "yes"); +#else + nxprintattr(f, "Embedded_runtime", "no"); +#endif + + /* add instrument source code when available */ + buffer = mcinfo_readfile(instrument_source); + if (buffer && strlen(buffer)) { + long length=strlen(buffer); + nxprintf (f, "description", buffer); + NXopendata(f,"description"); + nxprintattr(f, "file_name", instrument_source); + nxprintattr(f, "file_size", "%li", length); + nxprintattr(f, "MCCODE_STRING", MCCODE_STRING); + NXclosedata(f); + nxprintf (f,"instrument_source", "%s " MCCODE_NAME " " MCCODE_PARTICLE " Monte Carlo simulation", instrument_name); + free(buffer); + } else + nxprintf (f, "description", "File %s not found (instrument description %s is missing)", + instrument_source, instrument_name); + + if (mcnexus_embed_idf) { + /* add Mantid/IDF.xml when available */ + char *IDFfile=NULL; + IDFfile = (char*)malloc(CHAR_BUF_LENGTH); + sprintf(IDFfile,"%s%s",instrument_source,".xml"); + buffer = mcinfo_readfile(IDFfile); + if (buffer && strlen(buffer)) { + NXmakegroup (nxhandle, "instrument_xml", "NXnote"); + NXopengroup (nxhandle, "instrument_xml", "NXnote"); + nxprintf(f, "data", buffer); + nxprintf(f, "description", "IDF.xml file found with instrument %s", instrument_source); + nxprintf(f, "type", "text/xml"); + NXclosegroup(f); /* instrument_xml */ + free(buffer); + } + free(IDFfile); + } + + /* Add "components" entry */ + if (NXmakegroup(f, "components", "NXdata") == NX_OK) { + NXopengroup(f, "components", "NXdata"); + nxprintattr(f, "description", "Component list for instrument %s", instrument_name); + NXclosegroup(f); /* components */ + } else { + printf("Failed to create NeXus component hierarchy\n"); + } + NXclosegroup(f); /* instrument */ + } /* NXinstrument */ + + /* write NeXus simulation group */ + if (NXmakegroup(f, "simulation", "NXnote") == NX_OK) + if (NXopengroup(f, "simulation", "NXnote") == NX_OK) { + + nxprintattr(f, "name", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + nxprintf (f, "name", "%s", siminfo_name); + nxprintattr(f, "Format", mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME); + nxprintattr(f, "URL", "http://www.mccode.org"); + nxprintattr(f, "program", MCCODE_STRING); + nxprintattr(f, "Instrument",instrument_source); + nxprintattr(f, "Trace", mcdotrace ? "yes" : "no"); + nxprintattr(f, "Gravitation",mcgravitation ? "yes" : "no"); + nxprintattr(f, "Seed", "%li", mcseed); + nxprintattr(f, "Directory", dirname); + #ifdef USE_MPI + if (mpi_node_count > 1) + nxprintf(f, "Nodes", "%i", mpi_node_count); + #endif + + /* output parameter string ================================================ */ + if (NXmakegroup(f, "Param", "NXparameters") == NX_OK) { + NXopengroup(f,"Param", "NXparameters"); + int i; + char string[CHAR_BUF_LENGTH]; + for(i = 0; i < numipar; i++) { + if (mcget_run_num() || (mcinputtable[i].val && strlen(mcinputtable[i].val))) { + if (mcinputtable[i].par == NULL) + strncpy(string, (mcinputtable[i].val ? mcinputtable[i].val : ""), CHAR_BUF_LENGTH); + else + (*mcinputtypes[mcinputtable[i].type].printer)(string, mcinputtable[i].par); + + nxprintf(f, mcinputtable[i].name, "%s", string); + nxprintattr(f, mcinputtable[i].name, string); + } + } + NXclosegroup(f); /* Param */ + } /* NXparameters */ + NXclosegroup(f); /* simulation */ + } /* NXsimulation */ + + /* create a group to hold all links for all monitors */ + NXmakegroup(f, "data", "NXdetector"); + + /* leave the NXentry opened (closed at exit) */ + } /* NXentry */ +} /* mcinfo_out_nexus */ + +/******************************************************************************* +* mccomp_placement_type_nexus: +* Places +* - absolute (3x1) position +* - absolute (3x3) rotation +* - type / class of component instance into attributes under +* entry/instrument/compname +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_placement_type_nexus(NXhandle nxhandle, char* component, Coords position, Rotation rotation, char* comptype) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, component, "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + int64_t pdims[3]; pdims[0]=3; pdims[1]=0; pdims[2]=0; + if (NXcompmakedata64(nxhandle, "Position", NX_FLOAT64, 1, pdims, NX_COMPRESSION, pdims) == NX_OK) { + if (NXopendata(nxhandle, "Position") == NX_OK) { + double pos[3]; coords_get(position, &pos[0], &pos[1], &pos[2]); + if (NXputdata (nxhandle, pos) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Position field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Position field for component %s\n",component); + } + } + int64_t rdims[3]; rdims[0]=3; rdims[1]=3; rdims[2]=0; + if (NXcompmakedata64(nxhandle, "Rotation", NX_FLOAT64, 2, rdims, NX_COMPRESSION, rdims) == NX_OK) { + if (NXopendata(nxhandle, "Rotation") == NX_OK) { + if (NXputdata (nxhandle, rotation) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Rotation field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Rotation field for component %s\n",component); + } + } + nxprintf(nxhandle, "Component_type", comptype); + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + } else { + printf("FAILED to create comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } + #endif +} /* mccomp_placement_nexus */ + +/******************************************************************************* +* mccomp_param_nexus: +* Output parameter/value pair for component instance into +* the attribute +* entry/instrument/compname/parameter +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_param_nexus(NXhandle nxhandle, char* component, char* parameter, char* defval, char* value, char* type) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(nxhandle, "parameters", "NXdata"); + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + if (NXopengroup(nxhandle, "parameters", "NXdata") == NX_OK) { + NXmakegroup(nxhandle, parameter, "NXnote"); + if (NXopengroup(nxhandle, parameter, "NXnote") == NX_OK) { + nxprintattr(nxhandle, "type", type); + nxprintattr(nxhandle, "default", defval); + nxprintattr(nxhandle, "value", value); + NXclosegroup(nxhandle); // parameter + } else { + printf("FAILED to open parameters %s data group \n",parameter); + } + NXclosegroup(nxhandle); // "parameters" + } else { + printf("FAILED to open comp/parameters data group \n"); + } + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } +#endif +} /* mccomp_param_nexus */ + +/******************************************************************************* +* mcdatainfo_out_nexus: output detector header +* mcdatainfo_out_nexus(detector) create group and write info to NeXus data file +* open data:NXdetector then filename:NXdata and write headers/attributes +* requires: NXentry to be opened +*******************************************************************************/ +static void +mcdatainfo_out_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + if (!f || !detector.m || mcdisable_output_files) return; + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(f, detector.nexuscomp, "NXdata"); + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + NXmakegroup(f, "output", "NXdetector"); + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + if (NXmakegroup(f, data_name, "NXdata") == NX_OK) { + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + /* output metadata (as attributes) ======================================== */ + nxprintattr(f, "Date", detector.date); + nxprintattr(f, "type", detector.type); + nxprintattr(f, "Source", detector.instrument); + nxprintattr(f, "component", detector.component); + nxprintattr(f, "position", detector.position); + + nxprintattr(f, "title", detector.title); + nxprintattr(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "Ncount" : + "ratio", detector.ncount); + + if (strlen(detector.filename)) { + nxprintattr(f, "filename", detector.filename); + } + + nxprintattr(f, "statistics", detector.statistics); + nxprintattr(f, "signal", detector.signal); + nxprintattr(f, "values", detector.values); + + if (detector.rank >= 1) + { + nxprintattr(f, "xvar", detector.xvar); + nxprintattr(f, "yvar", detector.yvar); + nxprintattr(f, "xlabel", detector.xlabel); + nxprintattr(f, "ylabel", detector.ylabel); + if (detector.rank > 1) { + nxprintattr(f, "zvar", detector.zvar); + nxprintattr(f, "zlabel", detector.zlabel); + } + } + + nxprintattr(f, abs(detector.rank)==1 ? + "xlimits" : + "xylimits", detector.limits); + nxprintattr(f, "variables", + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + NXclosegroup(f); // data_name + } + } + } + NXclosegroup(f); // output + NXclosegroup(f); // detector.nexuscomp + } + NXclosegroup(f); // components + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + NXclosegroup(f); // instrument + } /* NXdetector (instrument) */ +} /* mcdatainfo_out_nexus */ + +/******************************************************************************* +* mcdetector_out_axis_nexus: write detector axis into current NXdata +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_axis_nexus(NXhandle f, char *label, char *var, int rank, long length, double min, double max) +{ + if (!f || length <= 1 || mcdisable_output_files || max == min) return(NX_OK); + else { + double *axis; + axis=malloc(sizeof(double)*length); + if (!axis ) { + printf("Fatal memory error allocating NeXus axis of length %li, exiting!\n", length); + return(NX_ERROR); + } + char *valid; + valid=malloc(sizeof(char)*CHAR_BUF_LENGTH); + if (!valid ) { + printf("Fatal memory error allocating label axis of length %li, exiting!\n", CHAR_BUF_LENGTH); + free(axis); + return(NX_ERROR); + } + int dim=(int)length; + int i; + int nprimary=1; + /* create an axis from [min:max] */ + for(i = 0; i < length; i++) + axis[i] = min+(max-min)*(i+0.5)/length; + /* create the data set */ + strcpy_valid(valid, label); + NXcompmakedata(f, valid, NX_FLOAT64, 1, &dim, NX_COMPRESSION, &dim); + /* open it */ + if (NXopendata(f, valid) != NX_OK) { + fprintf(stderr, "Warning: could not open axis rank %i '%s' (NeXus)\n", + rank, valid); + free(axis); + free(valid); + return(NX_ERROR); + } + /* put the axis and its attributes */ + NXputdata (f, axis); + nxprintattr(f, "long_name", label); + nxprintattr(f, "short_name", var); + NXputattr (f, "axis", &rank, 1, NX_INT32); + nxprintattr(f, "units", var); + NXputattr (f, "primary", &nprimary, 1, NX_INT32); + NXclosedata(f); + free(axis); + free(valid); + return(NX_OK); + } +} /* mcdetector_out_axis_nexus */ + +/******************************************************************************* +* mcdetector_out_array_nexus: write detector array into current NXdata (1D,2D) +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_array_nexus(NXhandle f, char *part, double *data, MCDETECTOR detector) +{ + + int64_t dims[3]={detector.m,detector.n,detector.p}; /* number of elements to write */ + int64_t fulldims[3]={detector.m,detector.n,detector.p}; + int signal=1; + int exists=0; + int64_t current_dims[3]={0,0,0}; + int ret=NX_OK; + + if (!f || !data || !detector.m || mcdisable_output_files) return(NX_OK); + + /* when this is a list, we set 1st dimension to NX_UNLIMITED for creation */ + if (strcasestr(detector.format, "list")) fulldims[0] = NX_UNLIMITED; + + /* create the data set in NXdata group */ + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + ret = NXcompmakedata64(f, part, NX_FLOAT64, detector.rank, fulldims, NX_COMPRESSION, dims); + if (ret != NX_OK) { + /* failed: data set already exists */ + int datatype=0; + int rank=0; + exists=1; + /* inquire current size of data set (nb of events stored) */ + NXopendata(f, part); + NXgetinfo64(f, &rank, current_dims, &datatype); + NXclosedata(f); + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + + /* open the data set */ + if (NXopendata(f, part) == NX_ERROR) { + fprintf(stderr, "Warning: could not open DataSet %s '%s' (NeXus)\n", + part, detector.title); + return(NX_ERROR); + } + if (strcasestr(detector.format, "list")) { + current_dims[1] = current_dims[2] = 0; /* set starting location for writing slab */ + NXputslab64(f, data, current_dims, dims); + if (!exists) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + else + printf("Append: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } else { + NXputdata (f, data); + } + + if (strstr(part,"data") || strstr(part, "events")) { + NXputattr(f, "signal", &signal, 1, NX_INT32); + nxprintattr(f, "short_name", strlen(detector.filename) ? + detector.filename : detector.component); + } + nxprintattr(f, "long_name", "%s '%s'", part, detector.title); + NXclosedata(f); + + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +/******************************************************************************* +* mcdetector_out_data_nexus: write detector axes+data into current NXdata +* The data:NXdetector is opened, then filename:NXdata +* requires: NXentry to be opened +*******************************************************************************/ +int mcdetector_out_data_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + + if (!f || !detector.m || mcdisable_output_files) return(NX_OK); + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + NXlink pLink; + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + + /* the NXdata group has been created in mcdatainfo_out_nexus */ + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + + MPI_MASTER( + nxprintattr(f, "options", + strlen(detector.options) ? detector.options : "None"); + ); + /* write axes, for histogram data sets, not for lists */ + if (!strcasestr(detector.format, "list")) { + mcdetector_out_axis_nexus(f, detector.xlabel, detector.xvar, + 1, detector.m, detector.xmin, detector.xmax); + mcdetector_out_axis_nexus(f, detector.ylabel, detector.yvar, + 2, detector.n, detector.ymin, detector.ymax); + mcdetector_out_axis_nexus(f, detector.zlabel, detector.zvar, + 3, detector.p, detector.zmin, detector.zmax); + } else { + MPI_MASTER( + nxprintattr(f, "dataset columns", + strlen(detector.ylabel) ? detector.ylabel : "None"); + ); + } + + /* write the actual data (appended if already exists) */ + if (!strcasestr(detector.format, "list") && !strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus(f, "data", detector.p1, detector); + mcdetector_out_array_nexus(f, "errors", detector.p2, detector); + mcdetector_out_array_nexus(f, "ncount", detector.p0, detector); + } else if (strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus( f, "pixels", detector.p1, detector); + } else { + mcdetector_out_array_nexus( f, "events", detector.p1, detector); + } + NXclosegroup(f); + NXopengroup(f, data_name, "NXdata"); + NXgetgroupID(nxhandle, &pLink); + NXclosegroup(f); + } /* NXdata data_name*/ + NXclosegroup(f); + } /* NXdetector output */ + NXclosegroup(f); + } /* NXdata detector.nexuscomp */ + NXclosegroup(f); + } /* NXdata components */ + NXclosegroup(f); + } /* NXdata instrument */ + + if (!strcasestr(detector.format, "pixels")) { + if (NXopengroup(f, "data", "NXdetector") == NX_OK) { + NXmakelink(nxhandle, &pLink); + NXclosegroup(f); + } + } + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +#ifdef USE_MPI +/******************************************************************************* +* mcdetector_out_list_slaves: slaves send their list data to master which writes +* requires: NXentry to be opened +* WARNING: this method has a flaw: it requires all nodes to flush the lists +* the same number of times. In case one node is just below the buffer size +* when finishing (e.g. monitor_nd), it may not trigger save but others may. +* Then the number of recv/send is not constant along nodes, and simulation stalls. +*******************************************************************************/ +MCDETECTOR mcdetector_out_list_slaves(MCDETECTOR detector) +{ + int node_i=0; + MPI_MASTER( + printf("\n** MPI master gathering slave node list data ** \n"); + ); + + if (mpi_node_rank != mpi_node_root) { + /* MPI slave: slaves send their data to master: 2 MPI_Send calls */ + /* m, n, p must be sent first, since all slaves do not have the same number of events */ + int mnp[3]={detector.m,detector.n,detector.p}; + + if (mc_MPI_Send(mnp, 3, MPI_INT, mpi_node_root)!= MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send mnp list error (mcdetector_out_list_slaves)\n", mpi_node_rank); + if (!detector.p1 + || mc_MPI_Send(detector.p1, mnp[0]*mnp[1]*mnp[2], MPI_DOUBLE, mpi_node_root) != MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send p1 list error: mnp=%i (mcdetector_out_list_slaves)\n", mpi_node_rank, abs(mnp[0]*mnp[1]*mnp[2])); + /* slaves are done: sent mnp and p1 */ + } /* end slaves */ + + /* MPI master: receive data from slaves sequentially: 2 MPI_Recv calls */ + + if (mpi_node_rank == mpi_node_root) { + for(node_i=0; node_i 1) { + mcdetector_out_list_slaves(detector); + } +#endif /* USE_MPI */ + + return(detector); +} /* mcdetector_out_2D_nexus */ + +MCDETECTOR mcdetector_out_3D_nexus(MCDETECTOR detector) +{ + printf("Received detector from %s\n",detector.component); + MPI_MASTER( + mcdatainfo_out_nexus(nxhandle, detector); + mcdetector_out_data_nexus(nxhandle, detector); + ); + return(detector); +} /* mcdetector_out_3D_nexus */ + + +#endif /* USE_NEXUS*/ + + + + + + + + +/* ========================================================================== */ + +/* Main input functions */ +/* DETECTOR_OUT_xD function calls -> ascii or NeXus */ + +/* ========================================================================== */ + +/******************************************************************************* +* siminfo_init: open SIM and write header +*******************************************************************************/ +FILE *siminfo_init(FILE *f) +{ + int exists=0; + + /* check format */ + if (!mcformat || !strlen(mcformat) + || !strcasecmp(mcformat, "MCSTAS") || !strcasecmp(mcformat, "MCXTRACE") + || !strcasecmp(mcformat, "PGPLOT") || !strcasecmp(mcformat, "GNUPLOT") || !strcasecmp(mcformat, "MCCODE") + || !strcasecmp(mcformat, "MATLAB")) { + mcformat="McCode"; +#ifdef USE_NEXUS + } else if (strcasestr(mcformat, "NeXus")) { + /* Do nothing */ +#endif + } else { + fprintf(stderr, + "Warning: You have requested the output format %s which is unsupported by this binary. Resetting to standard %s format.\n",mcformat ,"McCode"); + mcformat="McCode"; + } + + /* open the SIM file if not defined yet */ + if (siminfo_file || mcdisable_output_files) + return (siminfo_file); + +#ifdef USE_NEXUS + /* only master writes NeXus header: calls NXopen(nxhandle) */ + if (mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + siminfo_file = mcnew_file(siminfo_name, "h5", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + mcinfo_out_nexus(nxhandle); + ); + return(siminfo_file); /* points to nxhandle */ + } +#endif + + /* write main description file (only MASTER) */ + MPI_MASTER( + + siminfo_file = mcnew_file(siminfo_name, "sim", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + { + /* write SIM header */ + time_t t=time(NULL); + siminfo_out("%s simulation description file for %s.\n", + MCCODE_NAME, instrument_name); + siminfo_out("Date: %s", ctime(&t)); /* includes \n */ + siminfo_out("Program: %s\n\n", MCCODE_STRING); + + siminfo_out("begin instrument: %s\n", instrument_name); + mcinfo_out( " ", siminfo_file); + siminfo_out("end instrument\n"); + + siminfo_out("\nbegin simulation: %s\n", dirname); + mcruninfo_out(" ", siminfo_file); + siminfo_out("end simulation\n"); + + } + ); /* MPI_MASTER */ + return (siminfo_file); + +} /* siminfo_init */ + +/******************************************************************************* +* siminfo_close: close SIM +*******************************************************************************/ +void siminfo_close() +{ +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(siminfo_file && !mcdisable_output_files) { +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + time_t t=time(NULL); + nxprintf(nxhandle, "end_time", ctime(&t)); + nxprintf(nxhandle, "duration", "%li", (long)t-mcstartdate); + NXclosegroup(nxhandle); /* NXentry */ + NXclose(&nxhandle); + } else { +#endif + fclose(siminfo_file); +#ifdef USE_NEXUS + } +#endif +#ifdef USE_MPI + } +#endif + siminfo_file = NULL; + } +} /* siminfo_close */ + +/******************************************************************************* +* mcdetector_out_0D: wrapper for 0D (single value). +* Output single detector/monitor data (p0, p1, p2). +* Title is t, component name is c. +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI reduce) */ + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " data"), + 1, 1, 1, + "I", "", "", + "I", "", "", + 0, 0, 0, 0, 0, 0, c, + &p0, &p1, &p2, posa, rota, index); /* write Detector: line */ + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_0D_nexus(detector)); + else +#endif + return(mcdetector_out_0D_ascii(detector)); + +} /* mcdetector_out_0D */ + + + +/******************************************************************************* +* mcdetector_out_1D: wrapper for 1D. +* Output 1d detector data (p0, p1, p2) for n bins linearly +* distributed across the range x1..x2 (x1 is lower limit of first +* bin, x2 is upper limit of last bin). Title is t, axis labels are xl +* and yl. File name is f, component name is c. +* +* t: title +* xl: x-label +* yl: y-label +* xvar: measured variable length +* x1: x axus min +* x2: x axis max +* n: 1d data vector lenght +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, + long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + // detector_import calls mcdetector_statistics, which will return different + // MCDETECTOR versions for 1-D data based on the value of mcformat. + // + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + xl, yl, (n > 1 ? "Signal per bin" : " Signal"), + xvar, "(I,I_err)", "I", + x1, x2, 0, 0, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + detector = mcdetector_out_1D_nexus(detector); + else +#endif + detector = mcdetector_out_1D_ascii(detector); + if (detector.p1 != p1 && detector.p1) { + // mcdetector_statistics allocated memory but it hasn't been freed. + free(detector.p1); + // plus undo the other damage done there: + detector.p0 = p0; // was set to NULL + detector.p1 = p1; // was set to this_p1 + detector.p2 = p2; // was set to NULL + detector.m = detector.n; // (e.g., labs(n)) + detector.n = 1; // not (n x n) + detector.istransposed = n < 0 ? 1 : 0; + } + return detector; + +} /* mcdetector_out_1D */ + +/******************************************************************************* +* mcdetector_out_2D: wrapper for 2D. +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D */ + +/******************************************************************************* +* mcdetector_out_2D_list: List mode 2D including forwarding "options" from +* Monitor_nD +* +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_list(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + MPI_MASTER( + if (strlen(options)) { + strcpy(detector.options,options); + } else { + strcpy(detector.options,"None"); + } + ); + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D_list */ + +/******************************************************************************* +* mcdetector_out_list: wrapper for list output (calls out_2D with mcformat+"list"). +* m=number of events, n=size of each event +*******************************************************************************/ +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char format_new[CHAR_BUF_LENGTH]; + char *format_org; + MCDETECTOR detector; + + format_org = mcformat; + strcpy(format_new, mcformat); + strcat(format_new, " list"); + mcformat = format_new; + detector = mcdetector_out_2D_list(t, xl, yl, + 1,labs(m),1,labs(n), + m,n, + NULL, p1, NULL, f, + c, posa,rota,options, index); + + mcformat = format_org; + return(detector); +} + +/******************************************************************************* + * mcuse_dir: set data/sim storage directory and create it, + * or exit with error if exists + ******************************************************************************/ +static void +mcuse_dir(char *dir) +{ + if (!dir || !strlen(dir)) return; +#ifdef MC_PORTABLE + fprintf(stderr, "Error: " + "Directory output cannot be used with portable simulation (mcuse_dir)\n"); + exit(1); +#else /* !MC_PORTABLE */ + /* handle file://directory URL type */ + if (strncmp(dir, "file://", strlen("file://"))) + dirname = dir; + else + dirname = dir+strlen("file://"); + + +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(mkdir(dirname, 0777)) { +#ifndef DANSE + fprintf(stderr, "Error: unable to create directory '%s' (mcuse_dir)\n", dir); + fprintf(stderr, "(Maybe the directory already exists?)\n"); +#endif +#ifdef USE_MPI + MPI_Abort(MPI_COMM_WORLD, -1); +#endif + exit(-1); + } +#ifdef USE_MPI + } +#endif + + /* remove trailing PATHSEP (if any) */ + while (strlen(dirname) && dirname[strlen(dirname) - 1] == MC_PATHSEP_C) + dirname[strlen(dirname) - 1]='\0'; +#endif /* !MC_PORTABLE */ +} /* mcuse_dir */ + +/******************************************************************************* +* mcinfo: display instrument simulation info to stdout and exit +*******************************************************************************/ +static void +mcinfo(void) +{ + fprintf(stdout, "begin instrument: %s\n", instrument_name); + mcinfo_out(" ", stdout); + fprintf(stdout, "end instrument\n"); + fprintf(stdout, "begin simulation: %s\n", dirname ? dirname : "."); + mcruninfo_out(" ", stdout); + fprintf(stdout, "end simulation\n"); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcinfo */ + +/******************************************************************************* +* mcparameterinfo: display instrument parameter info to stdout and exit +*******************************************************************************/ +static void +mcparameterinfo(void) +{ + mcparameterinfo_out(" ", stdout); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcparameterinfo */ + + + +#endif /* ndef MCCODE_R_IO_C */ + +/* end of the I/O section =================================================== */ + + + + + + + +/******************************************************************************* +* mcset_ncount: set total number of rays to generate +*******************************************************************************/ +void mcset_ncount(unsigned long long int count) +{ + mcncount = count; +} + +/* mcget_ncount: get total number of rays to generate */ +unsigned long long int mcget_ncount(void) +{ + return mcncount; +} + +/* mcget_run_num: get curent number of rays */ +/* Within the TRACE scope we are now using _particle->uid directly */ +unsigned long long int mcget_run_num() // shuld be (_class_particle* _particle) somehow +{ + /* This function only remains for the few cases outside TRACE where we need to know + the number of simulated particles */ + return mcrun_num; +} + +/* mcsetn_arg: get ncount from a string argument */ +static void +mcsetn_arg(char *arg) +{ + mcset_ncount((long long int) strtod(arg, NULL)); +} + +/* mcsetseed: set the random generator seed from a string argument */ +static void +mcsetseed(char *arg) +{ + mcseed = atol(arg); + if(!mcseed) { + // srandom(mcseed); + //} else { + fprintf(stderr, "Error: seed must not be zero (mcsetseed)\n"); + exit(1); + } +} + +/* Following part is only embedded when not redundent with mccode-r.h ========= */ + +#ifndef MCCODE_H + +/* SECTION: MCDISPLAY support. =============================================== */ + +/******************************************************************************* +* Just output MCDISPLAY keywords to be caught by an external plotter client. +*******************************************************************************/ + +void mcdis_magnify(char *what){ + // Do nothing here, better use interactive zoom from the tools +} + +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: multiline(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} + +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n){ + int i; + const double dx = (x2-x1)/(2*n+1); + const double dy = (y2-y1)/(2*n+1); + const double dz = (z2-z1)/(2*n+1); + + for(i = 0; i < n+1; i++) + mcdis_line(x1 + 2*i*dx, y1 + 2*i*dy, z1 + 2*i*dz, + x1 + (2*i+1)*dx, y1 + (2*i+1)*dy, z1 + (2*i+1)*dz); +} + +void mcdis_multiline(int count, ...){ + va_list ap; + double x,y,z; + + printf("MCDISPLAY: multiline(%d", count); + va_start(ap, count); + while(count--) + { + x = va_arg(ap, double); + y = va_arg(ap, double); + z = va_arg(ap, double); + printf(",%g,%g,%g", x, y, z); + } + va_end(ap); + printf(")\n"); +} + +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height){ + /* draws a rectangle in the plane */ + /* x is ALWAYS width and y is ALWAYS height */ + if (strcmp("xy", plane)==0) { + mcdis_multiline(5, + x - width/2, y - height/2, z, + x + width/2, y - height/2, z, + x + width/2, y + height/2, z, + x - width/2, y + height/2, z, + x - width/2, y - height/2, z); + } else if (strcmp("xz", plane)==0) { + mcdis_multiline(5, + x - width/2, y, z - height/2, + x + width/2, y, z - height/2, + x + width/2, y, z + height/2, + x - width/2, y, z + height/2, + x - width/2, y, z - height/2); + } else if (strcmp("yz", plane)==0) { + mcdis_multiline(5, + x, y - height/2, z - width/2, + x, y - height/2, z + width/2, + x, y + height/2, z + width/2, + x, y + height/2, z - width/2, + x, y - height/2, z - width/2); + } else { + + fprintf(stderr, "Error: Definition of plane %s unknown\n", plane); + exit(1); + } +} + +void mcdis_circle(char *plane, double x, double y, double z, double r){ + printf("MCDISPLAY: circle('%s',%g,%g,%g,%g)\n", plane, x, y, z, r); +} + +void mcdis_new_circle(double x, double y, double z, double r, double nx, double ny, double nz){ + printf("MCDISPLAY: new_circle(%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, r, nx, ny, nz); +} + + +/* Draws a circle with center (x,y,z), radius (r), and in the plane + * with normal (nx,ny,nz)*/ +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz){ + int i; + if(nx==0 && ny && nz==0){ + for (i=0;i<24; i++){ + mcdis_line(x+r*sin(i*2*PI/24),y,z+r*cos(i*2*PI/24), + x+r*sin((i+1)*2*PI/24),y,z+r*cos((i+1)*2*PI/24)); + } + }else{ + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + /*draw circle*/ + for (i=0;i<24; i++){ + double ux,uy,uz; + double wx,wy,wz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + rotate(wx,wy,wz, mx,my,mz, (i+1)*2*PI/24, nx,ny,nz); + mcdis_line(x+ux*r,y+uy*r,z+uz*r, + x+wx*r,y+wy*r,z+wz*r); + } + } +} + + +/* OLD IMPLEMENTATION + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_legacy_box(double x, double y, double z, + double width, double height, double length){ + + mcdis_rectangle("xy", x, y, z-length/2, width, height); + mcdis_rectangle("xy", x, y, z+length/2, width, height); + mcdis_line(x-width/2, y-height/2, z-length/2, + x-width/2, y-height/2, z+length/2); + mcdis_line(x-width/2, y+height/2, z-length/2, + x-width/2, y+height/2, z+length/2); + mcdis_line(x+width/2, y-height/2, z-length/2, + x+width/2, y-height/2, z+length/2); + mcdis_line(x+width/2, y+height/2, z-length/2, + x+width/2, y+height/2, z+length/2); +} + +/* NEW 3D IMPLEMENTATION OF BOX SUPPORTS HOLLOW ALSO + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: box(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, width, height, length, thickness, nx, ny, nz); + } else { + mcdis_legacy_box(x, y, z, width, height, length); + if (thickness) + mcdis_legacy_box(x, y, z, width-thickness, height-thickness, length); + } +} + + +/* OLD IMPLEMENTATION +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz. */ +void mcdis_legacy_cylinder( double x, double y, double z, + double r, double height, int N, double nx, double ny, double nz){ + int i; + /*no lines make little sense - so trigger the default*/ + if(N<=0) N=5; + + NORM(nx,ny,nz); + double h_2=height/2.0; + mcdis_Circle(x+nx*h_2,y+ny*h_2,z+nz*h_2,r,nx,ny,nz); + mcdis_Circle(x-nx*h_2,y-ny*h_2,z-nz*h_2,r,nx,ny,nz); + + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + if(nx==0 && ny && nz==0){ + mx=my=0;mz=1; + }else{ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + } + /*draw circle*/ + for (i=0; i<24; i++){ + double ux,uy,uz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + mcdis_line(x+nx*h_2+ux*r, y+ny*h_2+uy*r, z+nz*h_2+uz*r, + x-nx*h_2+ux*r, y-ny*h_2+uy*r, z-nz*h_2+uz*r); + } +} + +/* NEW 3D IMPLEMENTATION ALSO SUPPORTING HOLLOW +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz.*/ +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cylinder(%g, %g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, thickness, nx, ny, nz); + } else { + mcdis_legacy_cylinder(x, y, z, + r, height, 12, nx, ny, nz); + } +} + +/* Draws a cone with center at (x,y,z) with extent (r,height). + * The cone axis is along the vector nx,ny,nz.*/ +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cone(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, nx, ny, nz); + } else { + mcdis_Circle(x, y, z, r, nx, ny, nz); + mcdis_Circle(x+0.25*height*nx, y+0.25*height*ny, z+0.25*height*nz, 0.75*r, nx, ny, nz); + mcdis_Circle(x+0.5*height*nx, y+0.5*height*ny, z+0.5*height*nz, 0.5*r, nx, ny, nz); + mcdis_Circle(x+0.75*height*nx, y+0.75*height*ny, z+0.75*height*nz, 0.25*r, nx, ny, nz); + mcdis_line(x, y, z, x+height*nx, y+height*ny, z+height*nz); + } +} + +/* Draws a disc with center at (x,y,z) with extent (r). + * The disc axis is along the vector nx,ny,nz.*/ +void mcdis_disc( double x, double y, double z, + double r, double nx, double ny, double nz){ + printf("MCDISPLAY: disc(%g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, nx, ny, nz); +} + +/* Draws a annulus with center at (x,y,z) with extent (outer_radius) and remove inner_radius. + * The annulus axis is along the vector nx,ny,nz.*/ +void mcdis_annulus( double x, double y, double z, + double outer_radius, double inner_radius, double nx, double ny, double nz){ + printf("MCDISPLAY: annulus(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, outer_radius, inner_radius, nx, ny, nz); +} + +/* draws a sphere with center at (x,y,z) with extent (r)*/ +void mcdis_sphere(double x, double y, double z, double r){ + if (mcdotrace==2) { + printf("MCDISPLAY: sphere(%g,%g,%g,%g)\n", x, y, z, r); + } else { + double nx,ny,nz; + int i; + int N=12; + + nx=0;ny=0;nz=1; + mcdis_Circle(x,y,z,r,nx,ny,nz); + for (i=1;i 3) { + /* Split in triangles - as many as polygon rank */ + faceSize=count; + vtxSize=count+1; + } else { + faceSize=1; + vtxSize=count; + } + + for (int i = 0; i < faceSize;) { + int num_indices = 3; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + if (count==3) { // Single, basic triangle + ptr += sprintf(ptr, "[%g, %g, %g], [%g, %g, %g], [%g, %g, %g]", x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2]); + } else { + for (int i = 0; i < vtxSize-1; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", x[i], y[i], z[i]); + if (i < vtxSize - 2) { + ptr += sprintf(ptr, ", "); + } else { + ptr += sprintf(ptr, ", [%g, %g, %g]", x0, y0, z0); + } + } + } + ptr += sprintf(ptr, "], \"faces\": ["); + if (count==3) { // Single, basic triangle, 1 face... + ptr += sprintf(ptr, "{ \"face\": ["); + ptr += sprintf(ptr, "0, 1, 2"); + ptr += sprintf(ptr, "]}"); + } else { + for (int i = 0; i < faceSize; i++) { + int num = 3; + ptr += sprintf(ptr, "{ \"face\": ["); + if (i < faceSize - 1) { + ptr += sprintf(ptr, "%d, %d, %d",i,i+1,count); + } else { + ptr += sprintf(ptr, "%d, %d, %d",i,count,0); + } + ptr += sprintf(ptr, "]}"); + if (i < faceSize-1) { + ptr += sprintf(ptr, ", "); + } + } + } + ptr += sprintf(ptr, "]}"); + mcdis_polyhedron(json_string); + + free(json_string); + } + free(x);free(y);free(z); +} +/* END NEW POLYGON IMPLEMENTATION*/ + +/* +void mcdis_polygon(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: polygon(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} +*/ + +/* SECTION: coordinates handling ============================================ */ + +/******************************************************************************* +* Since we use a lot of geometric calculations using Cartesian coordinates, +* we collect some useful routines here. However, it is also permissible to +* work directly on the underlying struct coords whenever that is most +* convenient (that is, the type Coords is not abstract). +* +* Coordinates are also used to store rotation angles around x/y/z axis. +* +* Since coordinates are used much like a basic type (such as double), the +* structure itself is passed and returned, rather than a pointer. +* +* At compile-time, the values of the coordinates may be unknown (for example +* a motor position). Hence coordinates are general expressions and not simple +* numbers. For this we used the type Coords_exp which has three CExp +* fields. For runtime (or calculations possible at compile time), we use +* Coords which contains three double fields. +*******************************************************************************/ + +/* coords_set: Assign coordinates. */ +Coords coords_set(MCNUM x, MCNUM y, MCNUM z) +{ + Coords a; + + a.x = x; + a.y = y; + a.z = z; + return a; +} + +/* coords_get: get coordinates. Required when 'x','y','z' are #defined as ray pars */ +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z) +{ + *x = a.x; + *y = a.y; + *z = a.z; + return a; +} + +/* coords_add: Add two coordinates. */ +Coords coords_add(Coords a, Coords b) +{ + Coords c; + + c.x = a.x + b.x; + c.y = a.y + b.y; + c.z = a.z + b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_sub: Subtract two coordinates. */ +Coords coords_sub(Coords a, Coords b) +{ + Coords c; + + c.x = a.x - b.x; + c.y = a.y - b.y; + c.z = a.z - b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_neg: Negate coordinates. */ +Coords coords_neg(Coords a) +{ + Coords b; + + b.x = -a.x; + b.y = -a.y; + b.z = -a.z; + return b; +} + +/* coords_scale: Scale a vector. */ +Coords coords_scale(Coords b, double scale) { + Coords a; + + a.x = b.x*scale; + a.y = b.y*scale; + a.z = b.z*scale; + return a; +} + +/* coords_sp: Scalar product: a . b */ +double coords_sp(Coords a, Coords b) { + double value; + + value = a.x*b.x + a.y*b.y + a.z*b.z; + return value; +} + +/* coords_xp: Cross product: a = b x c. */ +Coords coords_xp(Coords b, Coords c) { + Coords a; + + a.x = b.y*c.z - c.y*b.z; + a.y = b.z*c.x - c.z*b.x; + a.z = b.x*c.y - c.x*b.y; + return a; +} + +/* coords_len: Gives length of coords set. */ +double coords_len(Coords a) { + return sqrt(a.x*a.x + a.y*a.y + a.z*a.z); +} + +/* coords_mirror: Mirror a in plane (through the origin) defined by normal n*/ +Coords coords_mirror(Coords a, Coords n) { + double t = scalar_prod(n.x, n.y, n.z, n.x, n.y, n.z); + Coords b; + if (t!=1) { + t = sqrt(t); + n.x /= t; + n.y /= t; + n.z /= t; + } + t=scalar_prod(a.x, a.y, a.z, n.x, n.y, n.z); + b.x = a.x-2*t*n.x; + b.y = a.y-2*t*n.y; + b.z = a.z-2*t*n.z; + return b; +} + +/* coords_print: Print out vector values. */ +void coords_print(Coords a) { + #ifndef OPENACC + fprintf(stdout, "(%f, %f, %f)\n", a.x, a.y, a.z); + #endif + return; +} + +mcstatic void coords_norm(Coords* c) { + double temp = coords_sp(*c,*c); + + // Skip if we will end dividing by zero + if (temp == 0) return; + + temp = sqrt(temp); + + c->x /= temp; + c->y /= temp; + c->z /= temp; +} + +/* coords_test_zero: check if zero vector*/ +int coords_test_zero(Coords a){ + return ( a.x==0 && a.y==0 && a.z==0 ); +} + +/******************************************************************************* +* The Rotation type implements a rotation transformation of a coordinate +* system in the form of a double[3][3] matrix. +* +* Contrary to the Coords type in coords.c, rotations are passed by +* reference. Functions that yield new rotations do so by writing to an +* explicit result parameter; rotations are not returned from functions. The +* reason for this is that arrays cannot by returned from functions (though +* structures can; thus an alternative would have been to wrap the +* double[3][3] array up in a struct). Such are the ways of C programming. +* +* A rotation represents the tranformation of the coordinates of a vector when +* changing between coordinate systems that are rotated with respect to each +* other. For example, suppose that coordinate system Q is rotated 45 degrees +* around the Z axis with respect to coordinate system P. Let T be the +* rotation transformation representing a 45 degree rotation around Z. Then to +* get the coordinates of a vector r in system Q, apply T to the coordinates +* of r in P. If r=(1,0,0) in P, it will be (sqrt(1/2),-sqrt(1/2),0) in +* Q. Thus we should be careful when interpreting the sign of rotation angles: +* they represent the rotation of the coordinate systems, not of the +* coordinates (which has opposite sign). +*******************************************************************************/ + +/******************************************************************************* +* rot_set_rotation: Get transformation for rotation first phx around x axis, +* then phy around y, then phz around z. +*******************************************************************************/ +void rot_set_rotation(Rotation t, double phx, double phy, double phz) +{ + if ((phx == 0) && (phy == 0) && (phz == 0)) { + t[0][0] = 1.0; + t[0][1] = 0.0; + t[0][2] = 0.0; + t[1][0] = 0.0; + t[1][1] = 1.0; + t[1][2] = 0.0; + t[2][0] = 0.0; + t[2][1] = 0.0; + t[2][2] = 1.0; + } else { + double cx = cos(phx); + double sx = sin(phx); + double cy = cos(phy); + double sy = sin(phy); + double cz = cos(phz); + double sz = sin(phz); + + t[0][0] = cy*cz; + t[0][1] = sx*sy*cz + cx*sz; + t[0][2] = sx*sz - cx*sy*cz; + t[1][0] = -cy*sz; + t[1][1] = cx*cz - sx*sy*sz; + t[1][2] = sx*cz + cx*sy*sz; + t[2][0] = sy; + t[2][1] = -sx*cy; + t[2][2] = cx*cy; + } +} + +/******************************************************************************* +* rot_test_identity: Test if rotation is identity +*******************************************************************************/ +int rot_test_identity(Rotation t) +{ + return (t[0][0] + t[1][1] + t[2][2] == 3); +} + +/******************************************************************************* +* rot_mul: Matrix multiplication of transformations (this corresponds to +* combining transformations). After rot_mul(T1, T2, T3), doing T3 is +* equal to doing first T2, then T1. +* Note that T3 must not alias (use the same array as) T1 or T2. +*******************************************************************************/ +void rot_mul(Rotation t1, Rotation t2, Rotation t3) +{ + if (rot_test_identity(t1)) { + rot_copy(t3, t2); + } else if (rot_test_identity(t2)) { + rot_copy(t3, t1); + } else { + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + t3[i][j] = t1[i][0]*t2[0][j] + t1[i][1]*t2[1][j] + t1[i][2]*t2[2][j]; + } +} + +/******************************************************************************* +* rot_copy: Copy a rotation transformation (arrays cannot be assigned in C). +*******************************************************************************/ +void rot_copy(Rotation dest, Rotation src) +{ + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + dest[i][j] = src[i][j]; +} + +/******************************************************************************* +* rot_transpose: Matrix transposition, which is inversion for Rotation matrices +*******************************************************************************/ +void rot_transpose(Rotation src, Rotation dst) +{ + dst[0][0] = src[0][0]; + dst[0][1] = src[1][0]; + dst[0][2] = src[2][0]; + dst[1][0] = src[0][1]; + dst[1][1] = src[1][1]; + dst[1][2] = src[2][1]; + dst[2][0] = src[0][2]; + dst[2][1] = src[1][2]; + dst[2][2] = src[2][2]; +} + +/******************************************************************************* +* rot_apply: returns t*a +*******************************************************************************/ +Coords rot_apply(Rotation t, Coords a) +{ + Coords b; + if (rot_test_identity(t)) { + return a; + } else { + b.x = t[0][0]*a.x + t[0][1]*a.y + t[0][2]*a.z; + b.y = t[1][0]*a.x + t[1][1]*a.y + t[1][2]*a.z; + b.z = t[2][0]*a.x + t[2][1]*a.y + t[2][2]*a.z; + return b; + } +} + +/** + * Pretty-printing of rotation matrices. + */ +void rot_print(Rotation rot) { + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[0][0], rot[0][1], rot[0][2]); + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[1][0], rot[1][1], rot[1][2]); + printf("[ %4.2f %4.2f %4.2f ]\n\n", + rot[2][0], rot[2][1], rot[2][2]); +} + +/** + * Vector product: used by vec_prod (mccode-r.h). Use coords_xp for Coords. + */ +void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, + double x2, double y2, double z2) { + *x = (y1)*(z2) - (y2)*(z1); + *y = (z1)*(x2) - (z2)*(x1); + *z = (x1)*(y2) - (x2)*(y1); +} + +/** + * Scalar product: use coords_sp for Coords. + */ +double scalar_prod( + double x1, double y1, double z1, + double x2, double y2, double z2) { + return ((x1 * x2) + (y1 * y2) + (z1 * z2)); +} + +mcstatic void norm_func(double *x, double *y, double *z) { + double temp = (*x * *x) + (*y * *y) + (*z * *z); + if (temp != 0) { + temp = sqrt(temp); + *x /= temp; + *y /= temp; + *z /= temp; + } +} + + +/* SECTION: GPU algorithms ================================================== */ + + +/* +* Divide-and-conquer strategy for parallelizing this task: Sort absorbed +* particles last. +* +* particles: the particle array, required to checking _absorbed +* pbuffer: same-size particle buffer array required for parallel sort +* len: sorting area-of-interest size (e.g. from previous calls) +* buffer_len: total array size +* flag_split: if set, multiply live particles into absorbed slots, up to buffer_len +* multiplier: output arg, becomes the SPLIT multiplier if flag_split is set +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier) { + #define SAL_THREADS 1024 // num parallel sections + if (len_absorbed)); + + // return (no SPLIT) + if (flag_split != 1) + return accumlen; + + // SPLIT - repeat the non-absorbed block N-1 times, where len % accumlen = N + R + int mult = buffer_len / accumlen; // TODO: possibly use a new arg, bufferlen, rather than len + + // not enough space for full-block split, return + if (mult <= 1) + return accumlen; + + // copy non-absorbed block + #pragma acc parallel loop present(particles[0:buffer_len]) + for (long tidx = 0; tidx < accumlen; tidx++) { // tidx: thread index + randstate_t randstate[7]; + _class_particle sourcebuffer; + _class_particle targetbuffer; + // assign reduced weight to all particles + particles[tidx].p=particles[tidx].p/mult; + #pragma acc loop seq + for (long bidx = 1; bidx < mult; bidx++) { // bidx: block index + // preserve absorbed particle (for randstate) + sourcebuffer = particles[bidx*accumlen + tidx]; + // buffer full particle struct + targetbuffer = particles[tidx]; + // reassign previous randstate + targetbuffer.randstate[0] = sourcebuffer.randstate[0]; + targetbuffer.randstate[1] = sourcebuffer.randstate[1]; + targetbuffer.randstate[2] = sourcebuffer.randstate[2]; + targetbuffer.randstate[3] = sourcebuffer.randstate[3]; + targetbuffer.randstate[4] = sourcebuffer.randstate[4]; + targetbuffer.randstate[5] = sourcebuffer.randstate[5]; + targetbuffer.randstate[6] = sourcebuffer.randstate[6]; + // apply + particles[bidx*accumlen + tidx] = targetbuffer; + } + } + + // set out split multiplier value + *multiplier = mult; + + // return expanded array size + return accumlen * mult; +} + +#endif + +/* +* Fallback serial version of the one above. +*/ +long sort_absorb_last_serial(_class_particle* particles, long len) { + long i = 0; + long j = len - 1; + _class_particle pbuffer; + + // bubble + while (i < j) { + while (!particles[i]._absorbed && ix; + b.y = particle->y; + b.z = particle->z; + c = rot_apply(t, b); + b = coords_add(c, a); + particle->x = b.x; + particle->y = b.y; + particle->z = b.z; + +#if MCCODE_PARTICLE_CODE == 2112 + if (particle->vz != 0.0 || particle->vx != 0.0 || particle->vy != 0.0) + mccoordschange_polarisation(t, &(particle->vx), &(particle->vy), &(particle->vz)); + + if (particle->sz != 0.0 || particle->sx != 0.0 || particle->sy != 0.0) + mccoordschange_polarisation(t, &(particle->sx), &(particle->sy), &(particle->sz)); +#elif MCCODE_PARTICLE_CODE == 22 + if (particle->kz != 0.0 || particle->kx != 0.0 || particle->ky != 0.0) + mccoordschange_polarisation(t, &(particle->kx), &(particle->ky), &(particle->kz)); + + if (particle->Ez != 0.0 || particle->Ex != 0.0 || particle->Ey != 0.0) + mccoordschange_polarisation(t, &(particle->Ex), &(particle->Ey), &(particle->Ez)); +#endif +} + +/******************************************************************************* +* mccoordschange_polarisation: applies rotation to vector (sx sy sz) +*******************************************************************************/ +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *sx; + b.y = *sy; + b.z = *sz; + c = rot_apply(t, b); + *sx = c.x; + *sy = c.y; + *sz = c.z; +} + +/* SECTION: vector math ==================================================== */ + +/* normal_vec_func: Compute normal vector to (x,y,z). */ +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z) +{ + double ax = fabs(x); + double ay = fabs(y); + double az = fabs(z); + double l; + if(x == 0 && y == 0 && z == 0) + { + *nx = 0; + *ny = 0; + *nz = 0; + return; + } + if(ax < ay) + { + if(ax < az) + { /* Use X axis */ + l = sqrt(z*z + y*y); + *nx = 0; + *ny = z/l; + *nz = -y/l; + return; + } + } + else + { + if(ay < az) + { /* Use Y axis */ + l = sqrt(z*z + x*x); + *nx = z/l; + *ny = 0; + *nz = -x/l; + return; + } + } + /* Use Z axis */ + l = sqrt(y*y + x*x); + *nx = y/l; + *ny = -x/l; + *nz = 0; +} /* normal_vec */ + +/******************************************************************************* + * solve_2nd_order: second order equation solve: A*t^2 + B*t + C = 0 + * solve_2nd_order(&t1, NULL, A,B,C) + * returns 0 if no solution was found, or set 't1' to the smallest positive + * solution. + * solve_2nd_order(&t1, &t2, A,B,C) + * same as with &t2=NULL, but also returns the second solution. + * EXAMPLE usage for intersection of a trajectory with a plane in gravitation + * field (gx,gy,gz): + * The neutron starts at point r=(x,y,z) with velocityv=(vx vy vz). The plane + * has a normal vector n=(nx,ny,nz) and contains the point W=(wx,wy,wz). + * The problem consists in solving the 2nd order equation: + * 1/2.n.g.t^2 + n.v.t + n.(r-W) = 0 + * so that A = 0.5 n.g; B = n.v; C = n.(r-W); + * Without acceleration, t=-n.(r-W)/n.v + ******************************************************************************/ +int solve_2nd_order_old(double *t1, double *t2, + double A, double B, double C) +{ + int ret=0; + + if (!t1) return 0; + *t1 = 0; + if (t2) *t2=0; + + if (fabs(A) < 1E-10) /* approximate to linear equation: A ~ 0 */ + { + if (B) { *t1 = -C/B; ret=1; if (t2) *t2=*t1; } + /* else no intersection: A=B=0 ret=0 */ + } + else + { + double D; + D = B*B - 4*A*C; + if (D >= 0) /* Delta > 0: two solutions */ + { + double sD, dt1, dt2; + sD = sqrt(D); + dt1 = (-B + sD)/2/A; + dt2 = (-B - sD)/2/A; + /* we identify very small values with zero */ + if (fabs(dt1) < 1e-10) dt1=0.0; + if (fabs(dt2) < 1e-10) dt2=0.0; + + /* now we choose the smallest positive solution */ + if (dt1<=0.0 && dt2>0.0) ret=2; /* dt2 positive */ + else if (dt2<=0.0 && dt1>0.0) ret=1; /* dt1 positive */ + else if (dt1> 0.0 && dt2>0.0) + { if (dt1 < dt2) ret=1; else ret=2; } /* all positive: min(dt1,dt2) */ + /* else two solutions are negative. ret=-1 */ + if (ret==1) { *t1 = dt1; if (t2) *t2=dt2; } + else { *t1 = dt2; if (t2) *t2=dt1; } + ret=2; /* found 2 solutions and t1 is the positive one */ + } /* else Delta <0: no intersection. ret=0 */ + } + return(ret); +} /* solve_2nd_order */ + +int solve_2nd_order(double *t0, double *t1, double A, double B, double C){ + int retval=0; + double sign=copysign(1.0,B); + double dt0,dt1; + + dt0=0; + dt1=0; + if(t1){ *t1=0;} + + /*protect against rounding errors by locally equating DBL_EPSILON with 0*/ + if (fabs(A)=0){ + dt0=(-B - sign*sqrt(B*B-4*A*C))/(2*A); + dt1=C/(A*dt0); + retval=2; + }else{ + /*no real roots*/ + retval=0; + } + } + /*sort the solutions*/ + if (retval==1){ + /*put both solutions in t0 and t1*/ + *t0=dt0; + if(t1) *t1=dt1; + }else{ + /*we have two solutions*/ + /*swap if both are positive and t1 smaller than t0 or t1 the only positive*/ + int swap=0; + if(dt1>0 && ( dt1) + * + * If height or width is zero, choose random direction in full 4PI, no target. + * + * Traditionally, this routine had the name randvec_target_rect - this is now a + * a define (see mcstas-r.h) pointing here. If you use the old rouine, you are NOT + * taking the local emmission coordinate into account. +*******************************************************************************/ +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, + double width, double height, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle) +{ + double dx, dy, dist, dist_p, nx, ny, nz, mx, my, mz, n_norm, m_norm; + double cos_theta; + Coords tmp; + Rotation Ainverse; + + rot_transpose(A, Ainverse); + + if(height == 0.0 || width == 0.0) + { + randvec_target_circle(xo, yo, zo, solid_angle, + xi, yi, zi, 0); + return; + } + else + { + /* Now choose point uniformly on rectangle within width x height */ + dx = width*randpm1()/2.0; + dy = height*randpm1()/2.0; + + /* Determine distance to target plane*/ + dist = sqrt(xi*xi + yi*yi + zi*zi); + /* Go to global coordinate system */ + + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(Ainverse, tmp); + coords_get(tmp, &xi, &yi, &zi); + + /* Determine vector normal to trajectory axis (z) and gravity [0 1 0] */ + vec_prod(nx, ny, nz, xi, yi, zi, 0, 1, 0); + + /* This now defines the x-axis, normalize: */ + n_norm=sqrt(nx*nx + ny*ny + nz*nz); + nx = nx/n_norm; + ny = ny/n_norm; + nz = nz/n_norm; + + /* Now, determine our y-axis (vertical in many cases...) */ + vec_prod(mx, my, mz, xi, yi, zi, nx, ny, nz); + m_norm=sqrt(mx*mx + my*my + mz*mz); + mx = mx/m_norm; + my = my/m_norm; + mz = mz/m_norm; + + /* Our output, random vector can now be defined by linear combination: */ + + *xo = xi + dx * nx + dy * mx; + *yo = yi + dx * ny + dy * my; + *zo = zi + dx * nz + dy * mz; + + /* Go back to local coordinate system */ + tmp = coords_set(*xo, *yo, *zo); + tmp = rot_apply(A, tmp); + coords_get(tmp, &*xo, &*yo, &*zo); + + /* Go back to local coordinate system */ + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(A, tmp); + coords_get(tmp, &xi, &yi, &zi); + + if (solid_angle) { + /* Calculate vector from local point to remote random point */ + lx = *xo - lx; + ly = *yo - ly; + lz = *zo - lz; + dist_p = sqrt(lx*lx + ly*ly + lz*lz); + + /* Adjust the 'solid angle' */ + /* 1/r^2 to the chosen point times cos(\theta) between the normal */ + /* vector of the target rectangle and direction vector of the chosen point. */ + cos_theta = (xi * lx + yi * ly + zi * lz) / (dist * dist_p); + *solid_angle = width * height / (dist_p * dist_p); + int counter; + for (counter = 0; counter < order; counter++) { + *solid_angle = *solid_angle * cos_theta; + } + } + } +} +/* randvec_target_rect_real */ + + +/* SECTION: random numbers ================================================== + + How to add a new RNG: + + - Use an rng with a manegable state vector, e.g. of lengt 4 or 7. The state + will sit on the particle struct as a "randstate_t state[RANDSTATE_LEN]" + - If the rng has a long state (as MT), set an empty "srandom" and initialize + it explicitly using the appropriate define (RNG_ALG) + - Add a seed and a random function (the transforms will be reused) + - Write the proper defines in mccode-r.h, e.g. randstate_t and RANDSTATE_LEN, + srandom and random. + - Compile using -DRNG_ALG= + +============================================================================= */ + + +/* "Mersenne Twister", by Makoto Matsumoto and Takuji Nishimura. */ +/* See http://www.math.keio.ac.jp/~matumoto/emt.html for original source. */ +/* + A C-program for MT19937, with initialization improved 2002/1/26. + Coded by Takuji Nishimura and Makoto Matsumoto. + + Before using, initialize the state by using mt_srandom(seed) + or init_by_array(init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Any feedback is very welcome. + http://www.math.keio.ac.jp/matumoto/emt.html + email: matumoto@math.keio.ac.jp +*/ +#include +#include // for uint32_t +#include // for size_t + +/* Period parameters */ +#define N 624 +#define M 397 +#define MATRIX_A 0x9908b0dfU /* constant vector a */ +#define UPPER_MASK 0x80000000U /* most significant w-r bits */ +#define LOWER_MASK 0x7fffffffU /* least significant r bits */ + +static uint32_t mt[N]; /* the array for the state vector */ +static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ + +// Required for compatibility with common RNG interface (e.g., kiss/mt polymorphism) +void mt_srandom_empty(void) {} + +// Initializes mt[N] with a seed +void mt_srandom(uint32_t seed) { + mt[0] = seed; + for (mti = 1; mti < N; mti++) { + mt[mti] = 1812433253U * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti; + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array mt[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + mt[mti] &= 0xffffffffU; + /* for >32 bit machines */ + } +} +/* Initialize by an array with array-length. + Init_key is the array for initializing keys. + key_length is its length. */ +void init_by_array(uint32_t init_key[], size_t key_length) { + size_t i = 1, j = 0, k; + mt_srandom(19650218U); + k = (N > key_length ? N : key_length); + for (; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525U)) + + init_key[j] + (uint32_t)j; + mt[i] &= 0xffffffffU; + i++; j++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + if (j >= key_length) j = 0; + } + for (k = N - 1; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941U)) + - (uint32_t)i; + mt[i] &= 0xffffffffU; + i++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + } + mt[0] = 0x80000000U; /* MSB is 1; ensuring non-zero initial array */ +} + +// Generates a random number on [0, 0xffffffff]-interval +uint32_t mt_random(void) { + uint32_t y; + static const uint32_t mag01[2] = { 0x0U, MATRIX_A }; + /* mag01[x] = x * MATRIX_A for x=0,1 */ + + if (mti >= N) { /* generate N words at one time */ + int kk; + + if (mti == N + 1) /* if mt_srandom() has not been called, */ + mt_srandom(5489U); /* a default initial seed is used */ + + for (kk = 0; kk < N - M; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + for (; kk < N - 1; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); + mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1U]; + + mti = 0; + } + + y = mt[mti++]; + + /* Tempering */ + y ^= (y >> 11); + y ^= (y << 7) & 0x9d2c5680U; + y ^= (y << 15) & 0xefc60000U; + y ^= (y >> 18); + + return y; +} +#undef N +#undef M +#undef MATRIX_A +#undef UPPER_MASK +#undef LOWER_MASK +/* End of "Mersenne Twister". */ + + +/* +KISS + + From: http://www.helsbreth.org/random/rng_kiss.html + Scott Nelson 1999 + + Based on Marsaglia's KISS or (KISS+SWB) + + KISS - Keep it Simple Stupid PRNG + + the idea is to use simple, fast, individually promising + generators to get a composite that will be fast, easy to code + have a very long period and pass all the tests put to it. + The three components of KISS are + x(n)=a*x(n-1)+1 mod 2^32 + y(n)=y(n-1)(I+L^13)(I+R^17)(I+L^5), + z(n)=2*z(n-1)+z(n-2) +carry mod 2^32 + The y's are a shift register sequence on 32bit binary vectors + period 2^32-1; + The z's are a simple multiply-with-carry sequence with period + 2^63+2^32-1. The period of KISS is thus + 2^32*(2^32-1)*(2^63+2^32-1) > 2^127 + + In 2025 adapted for consistent 64-bit behavior across platforms. +*/ + +/* the KISS state is stored as a vector of 7 uint64_t */ +/* 0 1 2 3 4 5 6 */ +/* [ x, y, z, w, carry, k, m ] */ + +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed) { + if (seed == 0) seed = 1ull; + state[0] = seed | 1ull; // x + state[1] = seed | 2ull; // y + state[2] = seed | 4ull; // z + state[3] = seed | 8ull; // w + state[4] = 0ull; // carry + state[5] = 0ull; // k + state[6] = 0ull; // m + return state; +} + +uint64_t kiss_random(uint64_t state[7]) { + // Linear congruential generator + state[0] = state[0] * 69069ull + 1ull; + + // Xorshift + state[1] ^= state[1] << 13ull; + state[1] ^= state[1] >> 17ull; + state[1] ^= state[1] << 5ull; + + // Multiply-with-carry + state[5] = (state[2] >> 2ull) + (state[3] >> 3ull) + (state[4] >> 2ull); + state[6] = state[3] + state[3] + state[2] + state[4]; + state[2] = state[3]; + state[3] = state[6]; + state[4] = state[5] >> 62ull; // Top bit of carry (adjusted for 64-bit) + + return state[0] + state[1] + state[3]; +} +/* end of "KISS" rng */ + + +/* FAST KISS in another implementation (Hundt) */ + +////////////////////////////////////////////////////////////////////////////// +// fast keep it simple stupid generator +////////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// Thomas Mueller hash for initialization of rngs +// http://stackoverflow.com/questions/664014/ +// what-integer-hash-function-are-good-that-accepts-an-integer-hash-key +////////////////////////////////////////////////////////////////////////////// +randstate_t _hash(randstate_t x) { + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x); + return x; +} + + +// SECTION: random number transforms ========================================== + + + +// generate a random number from normal law +double _randnorm(randstate_t* state) +{ + static double v1, v2, s; /* removing static breaks comparison with McStas <= 2.5 */ + static int phase = 0; + double X, u1, u2; + + if(phase == 0) + { + do + { + u1 = _rand01(state); + u2 = _rand01(state); + v1 = 2*u1 - 1; + v2 = 2*u2 - 1; + s = v1*v1 + v2*v2; + } while(s >= 1 || s == 0); + + X = v1*sqrt(-2*log(s)/s); + } + else + { + X = v2*sqrt(-2*log(s)/s); + } + + phase = 1 - phase; + return X; +} +// another one +double _randnorm2(randstate_t* state) { + double x, y, r; + do { + x = 2.0 * _rand01(state) - 1.0; + y = 2.0 * _rand01(state) - 1.0; + r = x*x + y*y; + } while (r == 0.0 || r >= 1.0); + return x * sqrt((-2.0 * log(r)) / r); +} + +// Generate a random number from -1 to 1 with triangle distribution +double _randtriangle(randstate_t* state) { + double randnum = _rand01(state); + if (randnum>0.5) return(1-sqrt(2*(randnum-0.5))); + else return(sqrt(2*randnum)-1); +} +double _rand01(randstate_t* state) { + double randnum; + randnum = (double) _random(); + // TODO: can we mult instead of div? + randnum /= (double) MC_RAND_MAX + 1; + return randnum; +} +// Return a random number between 1 and -1 +double _randpm1(randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / 2; + randnum -= 1; + return randnum; +} +// Return a random number between 0 and max. +double _rand0max(double max, randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / max; + return randnum; +} +// Return a random number between min and max. +double _randminmax(double min, double max, randstate_t* state) { + return _rand0max(max - min, state) + max; +} + + +/* SECTION: main and signal handlers ======================================== */ + +/******************************************************************************* +* mchelp: displays instrument executable help with possible options +*******************************************************************************/ +static void +mchelp(char *pgmname) +{ + int i; + + fprintf(stderr, "%s (%s) instrument simulation, generated with " MCCODE_STRING " (" MCCODE_DATE ")\n", instrument_name, instrument_source); + fprintf(stderr, "Usage: %s [options] [parm=value ...]\n", pgmname); + fprintf(stderr, +"Options are:\n" +" -s SEED --seed=SEED Set random seed (must be != 0)\n" +" -n COUNT --ncount=COUNT Set number of particles to simulate.\n" +" -d DIR --dir=DIR Put all data files in directory DIR.\n" +" -t --trace Enable trace of " MCCODE_PARTICLE "s through instrument.\n" +" (Use -t=2 or --trace=2 for modernised mcdisplay rendering)\n" +" -g --gravitation Enable gravitation for all trajectories.\n" +" --no-output-files Do not write any data files.\n" +" -h --help Show this help message.\n" +" -i --info Detailed instrument information.\n" +" --list-parameters Print the instrument parameters to standard out\n" +" -y --yes Assume default values for all parameters with a default\n" +" --meta-list Print names of components which defined metadata\n" +" --meta-defined COMP[:NAME] Print component defined metadata names, or (0,1) if NAME provided\n" +" --meta-type COMP:NAME Print metadata format type specified in definition\n" +" --meta-data COMP:NAME Print the metadata text\n" +" --source Show the instrument code which was compiled.\n" +#ifdef OPENACC +"\n" +" --vecsize OpenACC vector-size (default: 128)\n" +" --numgangs Number of OpenACC gangs (default: 7813)\n" +" --gpu_innerloop Maximum rays to process pr. OpenACC \n" +" kernel run (default: 2147483647)\n" +"\n" +#endif +"\n" +" --bufsiz Monitor_nD list/buffer-size (default: 1000000)\n" +" --format=FORMAT Output data files using FORMAT=" + FLAVOR_UPPER +#ifdef USE_NEXUS + " NEXUS\n" +" --IDF Embed an xml-formatted IDF instrument definition\n" +" in the NeXus file (if existent in .)\n\n" +#else +"\n\n" +#endif +); +#ifdef USE_MPI + fprintf(stderr, + "This instrument has been compiled with MPI support.\n Use 'mpirun %s [options] [parm=value ...]'.\n", pgmname); +#endif +#ifdef OPENACC + fprintf(stderr, + "This instrument has been compiled with NVIDIA GPU support through OpenACC.\n Running on systems without such devices will lead to segfaults.\nFurter, fprintf, sprintf and printf have been removed from any component TRACE.\n"); +#endif + + if(numipar > 0) + { + fprintf(stderr, "Instrument parameters are:\n"); + for(i = 0; i < numipar; i++) + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + fprintf(stderr, " %-16s(%s) [default='%s']\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name), + mcinputtable[i].val); + else + fprintf(stderr, " %-16s(%s)\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name)); + } + +#ifndef NOSIGNALS + fprintf(stderr, "Known signals are: " +#ifdef SIGUSR1 + "USR1 (status) " +#endif +#ifdef SIGUSR2 + "USR2 (save) " +#endif +#ifdef SIGBREAK + "BREAK (save) " +#endif +#ifdef SIGTERM + "TERM (save and exit)" +#endif + "\n"); +#endif /* !NOSIGNALS */ +} /* mchelp */ + + +/* mcshowhelp: show help and exit with 0 */ +static void +mcshowhelp(char *pgmname) +{ + mchelp(pgmname); + exit(0); +} + +/* mcusage: display usage when error in input arguments and exit with 1 */ +static void +mcusage(char *pgmname) +{ + fprintf(stderr, "Error: incorrect command line arguments\n"); + mchelp(pgmname); + exit(1); +} + +/* mcenabletrace: enable trace/mcdisplay or error if requires recompile */ +static void +mcenabletrace(int mode) +{ + if(traceenabled) { + mcdotrace = mode; + #pragma acc update device ( mcdotrace ) + } else { + if (mode>0) { + fprintf(stderr, + "Error: trace not enabled (mcenabletrace)\n" + "Please re-run the " MCCODE_NAME " compiler " + "with the --trace option, or rerun the\n" + "C compiler with the MC_TRACE_ENABLED macro defined.\n"); + exit(1); + } + } +} + +/******************************************************************************* +* mcreadparams: request parameters from the prompt (or use default) +*******************************************************************************/ +void +mcreadparams(void) +{ + int i,j,status; + static char buf[CHAR_BUF_LENGTH]; + char *p; + int len; + + MPI_MASTER(printf("Instrument parameters for %s (%s)\n", + instrument_name, instrument_source)); + + for(i = 0; mcinputtable[i].name != 0; i++) + { + do + { + MPI_MASTER( + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + printf("Set value of instrument parameter %s (%s) [default='%s']:\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name), mcinputtable[i].val); + else + printf("Set value of instrument parameter %s (%s):\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + fflush(stdout); + ); +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) + { + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } + } + else + p = buf; + MPI_Bcast(buf, CHAR_BUF_LENGTH, MPI_CHAR, mpi_node_root, MPI_COMM_WORLD); +#else /* !USE_MPI */ + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } +#endif /* USE_MPI */ + len = strlen(buf); + if (!len || (len == 1 && (buf[0] == '\n' || buf[0] == '\r'))) + { + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + strncpy(buf, mcinputtable[i].val, CHAR_BUF_LENGTH); /* use default value */ + len = strlen(buf); + } + } + for(j = 0; j < 2; j++) + { + if(len > 0 && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) + { + len--; + buf[len] = '\0'; + } + } + + status = (*mcinputtypes[mcinputtable[i].type].getparm) + (buf, mcinputtable[i].par); + if(!status) + { + (*mcinputtypes[mcinputtable[i].type].error)(mcinputtable[i].name, buf); + if (!mcinputtable[i].val || strlen(mcinputtable[i].val)) { + fprintf(stderr, " Change %s default value in instrument definition.\n", mcinputtable[i].name); + exit(1); + } + } + } while(!status); + } +} /* mcreadparams */ + +/******************************************************************************* +* mcparseoptions: parse command line arguments (options, parameters) +*******************************************************************************/ +void +mcparseoptions(int argc, char *argv[]) +{ + int i, j; + char *p; + int paramset = 0, *paramsetarray; + char *usedir=NULL; + + /* Add one to numipar to avoid allocating zero size memory block. */ + paramsetarray = (int*)malloc((numipar + 1)*sizeof(*paramsetarray)); + if(paramsetarray == NULL) + { + fprintf(stderr, "Error: insufficient memory (mcparseoptions)\n"); + exit(1); + } + for(j = 0; j < numipar; j++) + { + paramsetarray[j] = 0; + if (mcinputtable[j].val != NULL && strlen(mcinputtable[j].val)) + { + int status; + char buf[CHAR_BUF_LENGTH]; + strncpy(buf, mcinputtable[j].val, CHAR_BUF_LENGTH); + status = (*mcinputtypes[mcinputtable[j].type].getparm) + (buf, mcinputtable[j].par); + if(!status) fprintf(stderr, "Invalid '%s' default value %s in instrument definition (mcparseoptions)\n", mcinputtable[j].name, buf); + else paramsetarray[j] = 1; + } else { + (*mcinputtypes[mcinputtable[j].type].getparm) + (NULL, mcinputtable[j].par); + paramsetarray[j] = 0; + } + } + for(i = 1; i < argc; i++) + { + if(!strcmp("-s", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("-s", argv[i], 2)) + mcsetseed(&argv[i][2]); + else if(!strcmp("--seed", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("--seed=", argv[i], 7)) + mcsetseed(&argv[i][7]); + else if(!strcmp("-n", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("-n", argv[i], 2)) + mcsetn_arg(&argv[i][2]); + else if(!strcmp("--ncount", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("--ncount=", argv[i], 9)) + mcsetn_arg(&argv[i][9]); + else if(!strcmp("-d", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; /* will create directory after parsing all arguments (end of this function) */ + else if(!strncmp("-d", argv[i], 2)) + usedir=&argv[i][2]; + else if(!strcmp("--dir", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; + else if(!strncmp("--dir=", argv[i], 6)) + usedir=&argv[i][6]; + else if(!strcmp("-h", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("--help", argv[i]) || !strcmp("--version", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("-i", argv[i])) { + mcformat=FLAVOR_UPPER; + mcinfo(); + } + else if(!strcmp("--info", argv[i])) + mcinfo(); + else if (!strcmp("--list-parameters", argv[i])) + mcparameterinfo(); + else if (!strcmp("--meta-list", argv[i]) && ((i+1) >= argc || argv[i+1][0] == '-')){ + //printf("Components with metadata defined:\n"); + exit(metadata_table_print_all_components(num_metadata, metadata_table) == 0); + } + else if (!strcmp("--meta-defined", argv[i]) && (i+1) < argc){ + exit(metadata_table_print_component_keys(num_metadata, metadata_table, argv[i+1]) == 0); + } + else if (!strcmp("--meta-type", argv[i]) && (i+1) < argc){ + char * literal_type = metadata_table_type(num_metadata, metadata_table, argv[i+1]); + if (literal_type == NULL) exit(1); + printf("%s\n", literal_type); + exit(0); + } + else if (!strcmp("--meta-data", argv[i]) && (i+1) < argc){ + char * literal = metadata_table_literal(num_metadata, metadata_table, argv[i+1]); + if (literal == NULL) exit(1); + printf("%s\n", literal); + exit(0); + } + else if(!strncmp("--trace=", argv[i], 8)) { + mcenabletrace(atoi(&argv[i][8])); + } else if(!strncmp("-t=", argv[i], 3) || !strcmp("--verbose", argv[i])) { + mcenabletrace(atoi(&argv[i][3])); + } else if(!strcmp("-t", argv[i])) + mcenabletrace(1); + else if(!strcmp("--trace", argv[i]) || !strcmp("--verbose", argv[i])) + mcenabletrace(1); + else if(!strcmp("--gravitation", argv[i])) + mcgravitation = 1; + else if(!strcmp("-g", argv[i])) + mcgravitation = 1; + else if(!strcmp("--yes", argv[i])) + mcusedefaults = 1; + else if(!strcmp("-y", argv[i])) + mcusedefaults = 1; + else if(!strncmp("--format=", argv[i], 9)) { + mcformat=&argv[i][9]; + } + else if(!strcmp("--format", argv[i]) && (i + 1) < argc) { + mcformat=argv[++i]; + } +#ifdef USE_NEXUS + else if(!strcmp("--IDF", argv[i])) { + mcnexus_embed_idf = 1; + } +#endif + else if(!strncmp("--vecsize=", argv[i], 10)) { + vecsize=atoi(&argv[i][10]); + } + else if(!strcmp("--vecsize", argv[i]) && (i + 1) < argc) { + vecsize=atoi(argv[++i]); + } + else if(!strncmp("--bufsiz=", argv[i], 9)) { + MONND_BUFSIZ=atoi(&argv[i][9]); + } + else if(!strcmp("--bufsiz", argv[i]) && (i + 1) < argc) { + MONND_BUFSIZ=atoi(argv[++i]); + } + else if(!strncmp("--numgangs=", argv[i], 11)) { + numgangs=atoi(&argv[i][11]); + } + else if(!strcmp("--numgangs", argv[i]) && (i + 1) < argc) { + numgangs=atoi(argv[++i]); + } + else if(!strncmp("--gpu_innerloop=", argv[i], 16)) { + gpu_innerloop=(long)strtod(&argv[i][16], NULL); + } + else if(!strcmp("--gpu_innerloop", argv[i]) && (i + 1) < argc) { + gpu_innerloop=(long)strtod(argv[++i], NULL); + } + + else if(!strcmp("--no-output-files", argv[i])) + mcdisable_output_files = 1; + else if(!strcmp("--source", argv[i])) { + printf("/* Source code %s from %s: */\n" + "/******************************************************************************/\n" + "%s\n" + "/******************************************************************************/\n" + "/* End of source code %s from %s */\n", + instrument_name, instrument_source, instrument_code, + instrument_name, instrument_source); + exit(1); + } + else if(argv[i][0] != '-' && (p = strchr(argv[i], '=')) != NULL) + { + *p++ = '\0'; + + for(j = 0; j < numipar; j++) + if(!strcmp(mcinputtable[j].name, argv[i])) + { + int status; + status = (*mcinputtypes[mcinputtable[j].type].getparm)(p, + mcinputtable[j].par); + if(!status || !strlen(p)) + { + (*mcinputtypes[mcinputtable[j].type].error) + (mcinputtable[j].name, p); + exit(1); + } + paramsetarray[j] = 1; + paramset = 1; + break; + } + if(j == numipar) + { /* Unrecognized parameter name */ + fprintf(stderr, "Error: unrecognized parameter %s (mcparseoptions)\n", argv[i]); + exit(1); + } + } + else if(argv[i][0] == '-') { + fprintf(stderr, "Error: unrecognized option argument %s (mcparseoptions). Ignored.\n", argv[i++]); + } + else { + fprintf(stderr, "Error: unrecognized argument %s (mcparseoptions). Aborting.\n", argv[i]); + mcusage(argv[0]); + } + } + if (mcusedefaults) { + MPI_MASTER( + printf("Using all default parameter values\n"); + ); + for(j = 0; j < numipar; j++) { + int status; + if(mcinputtable[j].val && strlen(mcinputtable[j].val)){ + status = (*mcinputtypes[mcinputtable[j].type].getparm)(mcinputtable[j].val, + mcinputtable[j].par); + paramsetarray[j] = 1; + paramset = 1; + } + } + } + if(!paramset) + mcreadparams(); /* Prompt for parameters if not specified. */ + else + { + for(j = 0; j < numipar; j++) + if(!paramsetarray[j]) + { + fprintf(stderr, "Error: Instrument parameter %s left unset (mcparseoptions)\n", + mcinputtable[j].name); + exit(1); + } + } + free(paramsetarray); +#ifdef USE_MPI + if (mcdotrace) mpi_node_count=1; /* disable threading when in trace mode */ +#endif + if (usedir && strlen(usedir) && !mcdisable_output_files) mcuse_dir(usedir); +} /* mcparseoptions */ + +#ifndef NOSIGNALS +/******************************************************************************* +* sighandler: signal handler that makes simulation stop, and save results +*******************************************************************************/ +void sighandler(int sig) +{ + /* MOD: E. Farhi, Sep 20th 2001: give more info */ + time_t t1, t0; +#define SIG_SAVE 0 +#define SIG_TERM 1 +#define SIG_STAT 2 +#define SIG_ABRT 3 + + printf("\n# " MCCODE_STRING ": [pid %i] Signal %i detected", getpid(), sig); +#ifdef USE_MPI + printf(" [proc %i]", mpi_node_rank); +#endif +#if defined(SIGUSR1) && defined(SIGUSR2) && defined(SIGKILL) + if (!strcmp(mcsig_message, "sighandler") && (sig != SIGUSR1) && (sig != SIGUSR2)) + { + printf("\n# Fatal : unrecoverable loop ! Suicide (naughty boy).\n"); + kill(0, SIGKILL); /* kill myself if error occurs within sighandler: loops */ + } +#endif + switch (sig) { +#ifdef SIGINT + case SIGINT : printf(" SIGINT (interrupt from terminal, Ctrl-C)"); sig = SIG_TERM; break; +#endif +#ifdef SIGILL + case SIGILL : printf(" SIGILL (Illegal instruction)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGFPE + case SIGFPE : printf(" SIGFPE (Math Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGSEGV + case SIGSEGV : printf(" SIGSEGV (Mem Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGTERM + case SIGTERM : printf(" SIGTERM (Termination)"); sig = SIG_TERM; break; +#endif +#ifdef SIGABRT + case SIGABRT : printf(" SIGABRT (Abort)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGQUIT + case SIGQUIT : printf(" SIGQUIT (Quit from terminal)"); sig = SIG_TERM; break; +#endif +#ifdef SIGTRAP + case SIGTRAP : printf(" SIGTRAP (Trace trap)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGPIPE + case SIGPIPE : printf(" SIGPIPE (Broken pipe)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGUSR1 + case SIGUSR1 : printf(" SIGUSR1 (Display info)"); sig = SIG_STAT; break; +#endif +#ifdef SIGUSR2 + case SIGUSR2 : printf(" SIGUSR2 (Save simulation)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGHUP + case SIGHUP : printf(" SIGHUP (Hangup/update)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGBUS + case SIGBUS : printf(" SIGBUS (Bus error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGURG + case SIGURG : printf(" SIGURG (Urgent socket condition)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGBREAK + case SIGBREAK: printf(" SIGBREAK (Break signal, Ctrl-Break)"); sig = SIG_SAVE; break; +#endif + default : printf(" (look at signal list for signification)"); sig = SIG_ABRT; break; + } + printf("\n"); + printf("# Simulation: %s (%s) \n", instrument_name, instrument_source); + printf("# Breakpoint: %s ", mcsig_message); + if (strstr(mcsig_message, "Save") && (sig == SIG_SAVE)) + sig = SIG_STAT; + SIG_MESSAGE("sighandler"); + if (mcget_ncount() == 0) + printf("(0 %%)\n" ); + else + { + printf("%.2f %% (%10.1f/%10.1f)\n", 100.0*mcget_run_num()/mcget_ncount(), 1.0*mcget_run_num(), 1.0*mcget_ncount()); + } + t0 = (time_t)mcstartdate; + t1 = time(NULL); + printf("# Date: %s", ctime(&t1)); + printf("# Started: %s", ctime(&t0)); + + if (sig == SIG_STAT) + { + printf("# " MCCODE_STRING ": Resuming simulation (continue)\n"); + fflush(stdout); + return; + } + else + if (sig == SIG_SAVE) + { + printf("# " MCCODE_STRING ": Saving data and resume simulation (continue)\n"); + save(NULL); + fflush(stdout); + return; + } + else + if (sig == SIG_TERM) + { + printf("# " MCCODE_STRING ": Finishing simulation (save results and exit)\n"); + finally(); + exit(0); + } + else + { + fflush(stdout); + perror("# Last I/O Error"); + printf("# " MCCODE_STRING ": Simulation stop (abort).\n"); +// This portion of the signal handling only works on UNIX +#if defined(__unix__) || defined(__APPLE__) + signal(sig, SIG_DFL); /* force to use default sighandler now */ + kill(getpid(), sig); /* and trigger it with the current signal */ +#endif + exit(-1); + } +#undef SIG_SAVE +#undef SIG_TERM +#undef SIG_STAT +#undef SIG_ABRT + +} /* sighandler */ +#endif /* !NOSIGNALS */ + +#ifdef NEUTRONICS +/*Main neutronics function steers the McStas calls, initializes parameters etc */ +/* Only called in case NEUTRONICS = TRUE */ +void neutronics_main_(float *inx, float *iny, float *inz, float *invx, float *invy, float *invz, float *intime, float *insx, float *insy, float *insz, float *inw, float *outx, float *outy, float *outz, float *outvx, float *outvy, float *outvz, float *outtime, float *outsx, float *outsy, float *outsz, float *outwgt) +{ + + extern double mcnx, mcny, mcnz, mcnvx, mcnvy, mcnvz; + extern double mcnt, mcnsx, mcnsy, mcnsz, mcnp; + + /* External code governs iteration - McStas is iterated once per call to neutronics_main. I.e. below counter must be initiancated for each call to neutronics_main*/ + mcrun_num=0; + + time_t t; + t = (time_t)mcstartdate; + mcstartdate = t; /* set start date before parsing options and creating sim file */ + init(); + + /* *** parse options *** */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat=getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + + /* Set neutron state based on input from neutronics code */ + mcsetstate(*inx,*iny,*inz,*invx,*invy,*invz,*intime,*insx,*insy,*insz,*inw); + + /* main neutron event loop - runs only one iteration */ + + //mcstas_raytrace(&mcncount); /* prior to McStas 1.12 */ + + mcallowbackprop = 1; //avoid absorbtion from negative dt + int argc=1; + char *argv[0]; + int dummy = mccode_main(argc, argv); + + *outx = mcnx; + *outy = mcny; + *outz = mcnz; + *outvx = mcnvx; + *outvy = mcnvy; + *outvz = mcnvz; + *outtime = mcnt; + *outsx = mcnsx; + *outsy = mcnsy; + *outsz = mcnsz; + *outwgt = mcnp; + + return; +} /* neutronics_main */ + +#endif /*NEUTRONICS*/ + +#endif /* !MCCODE_H */ +/* End of file "mccode-r.c". */ +/* End of file "mccode-r.c". */ + +/* embedding file "mcstas-r.c" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system for McStas. +* Embedded within instrument in runtime mode. +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#include "mcstas-r.h" +#endif +#ifdef DANSE +#include "mcstas-globals.h" +#endif + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + +/*the magnet stack*/ +#ifdef MC_POL_COMPAT +void (*mcMagnetPrecession) (double, double, double, double, double, double, + double, double*, double*, double*, double, Coords, Rotation)=NULL; +Coords mcMagnetPos; +Rotation mcMagnetRot; +double* mcMagnetData = NULL; +/* mcMagneticField(x, y, z, t, Bx, By, Bz) */ +int (*mcMagneticField) (double, double, double, double, + double*, double*, double*, void *) = NULL; +#endif + +#ifndef MCSTAS_H + +/******************************************************************************* +* mcsetstate: transfer parameters into global McStas variables +*******************************************************************************/ +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop) +{ + _class_particle mcneutron; + + mcneutron.x = x; + mcneutron.y = y; + mcneutron.z = z; + mcneutron.vx = vx; + mcneutron.vy = vy; + mcneutron.vz = vz; + mcneutron.t = t; + mcneutron.sx = sx; + mcneutron.sy = sy; + mcneutron.sz = sz; + mcneutron.p = p; + mcneutron.mcgravitation = mcgravitation; + mcneutron.mcMagnet = mcMagnet; + mcneutron.allow_backprop = mcallowbackprop; + mcneutron._uid = 0; + mcneutron._index = 1; + mcneutron._absorbed = 0; + mcneutron._restore = 0; + mcneutron._scattered = 0; + mcneutron.flag_nocoordschange = 0; + + /* init tmp-vars - FIXME are they used? */ + mcneutron._mctmp_a = mcneutron._mctmp_b = mcneutron._mctmp_c = 0; + // what about mcneutron._logic ? + mcneutron._logic.dummy=1; + // init uservars via cogen'd-function + particle_uservar_init(&mcneutron); + + return(mcneutron); +} /* mcsetstate */ + +/******************************************************************************* +* mcgetstate: get neutron parameters from particle structure +*******************************************************************************/ +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p) +{ + *x = mcneutron.x; + *y = mcneutron.y; + *z = mcneutron.z; + *vx = mcneutron.vx; + *vy = mcneutron.vy; + *vz = mcneutron.vz; + *t = mcneutron.t; + *sx = mcneutron.sx; + *sy = mcneutron.sy; + *sz = mcneutron.sz; + *p = mcneutron.p; + + return(mcneutron); +} /* mcgetstate */ + + +/******************************************************************************* +* mcgenstate: set default neutron parameters +*******************************************************************************/ +// Moved to generated code +/* #pragma acc routine seq */ +/* _class_particle mcgenstate(void) */ +/* { */ +/* return(mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, mcMagnet, mcallowbackprop)); */ +/* } */ + +/******************************************************************************* +* mccoordschanges: old style rotation routine rot -> (x y z) ,(vx vy vz),(sx,sy,sz) +*******************************************************************************/ +void +mccoordschanges(Coords a, Rotation t, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *x; + b.y = *y; + b.z = *z; + c = rot_apply(t, b); + b = coords_add(c, a); + *x = b.x; + *y = b.y; + *z = b.z; + + if ( (vz && vy && vx) && (*vz != 0.0 || *vx != 0.0 || *vy != 0.0) ) + mccoordschange_polarisation(t, vx, vy, vz); + + if ( (sz && sy && sx) && (*sz != 0.0 || *sx != 0.0 || *sy != 0.0) ) + mccoordschange_polarisation(t, sx, sy, sz); + +} + +/* intersection routines ==================================================== */ + +/******************************************************************************* +* inside_rectangle: Check if (x,y) is inside rectangle (xwidth, yheight) +* return 0 if outside and 1 if inside +*******************************************************************************/ +int inside_rectangle(double x, double y, double xwidth, double yheight) +{ + if (x>-xwidth/2 && x-yheight/2 && y -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[0] = tt; + else + t[0] = 0; + + tt = (dx/2 - x)/vx; + y_in = y + tt*vy; + z_in = z + tt*vz; + if( y_in > -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[1] = tt; + else + t[1] = 0; + } + else + t[0] = t[1] = 0; + + if(vy != 0) + { + tt = -(dy/2 + y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[2] = tt; + else + t[2] = 0; + + tt = (dy/2 - y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[3] = tt; + else + t[3] = 0; + } + else + t[2] = t[3] = 0; + + if(vz != 0) + { + tt = -(dz/2 + z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[4] = tt; + else + t[4] = 0; + + tt = (dz/2 - z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[5] = tt; + else + t[5] = 0; + } + else + t[4] = t[5] = 0; + + /* The intersection is evaluated and *dt_in and *dt_out are assigned */ + + a = b = s = 0; + count = 0; + + for( i = 0; i < 6; i = i + 1 ) + if( t[i] == 0 ) + s = s+1; + else if( count == 0 ) + { + a = t[i]; + count = 1; + } + else + { + b = t[i]; + count = 2; + } + + if ( a == 0 && b == 0 ) + return 0; + else if( a < b ) + { + *dt_in = a; + *dt_out = b; + return 1; + } + else + { + *dt_in = b; + *dt_out = a; + return 1; + } + +} /* box_intersect */ + +/******************************************************************************* + * cylinder_intersect: compute intersection with a cylinder + * returns 0 when no intersection is found + * or 2/4/8/16 bits depending on intersection, + * and resulting times t0 and t1 + * Written by: EM,NB,ABA 4.2.98 + *******************************************************************************/ +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h) +{ + double D, t_in, t_out, y_in, y_out; + int ret=1; + + D = (2*vx*x + 2*vz*z)*(2*vx*x + 2*vz*z) + - 4*(vx*vx + vz*vz)*(x*x + z*z - r*r); + + if (D>=0) + { + if (vz*vz + vx*vx) { + t_in = (-(2*vz*z + 2*vx*x) - sqrt(D))/(2*(vz*vz + vx*vx)); + t_out = (-(2*vz*z + 2*vx*x) + sqrt(D))/(2*(vz*vz + vx*vx)); + } else if (vy) { /* trajectory parallel to cylinder axis */ + t_in = (-h/2-y)/vy; + t_out = (h/2-y)/vy; + if (t_in>t_out){ + double tmp=t_in; + t_in=t_out;t_out=tmp; + } + } else return 0; + y_in = vy*t_in + y; + y_out =vy*t_out + y; + + if ( (y_in > h/2 && y_out > h/2) || (y_in < -h/2 && y_out < -h/2) ) + return 0; + else + { + if (y_in > h/2) + { t_in = ((h/2)-y)/vy; ret += 2; } + else if (y_in < -h/2) + { t_in = ((-h/2)-y)/vy; ret += 4; } + if (y_out > h/2) + { t_out = ((h/2)-y)/vy; ret += 8; } + else if (y_out < -h/2) + { t_out = ((-h/2)-y)/vy; ret += 16; } + } + *t0 = t_in; + *t1 = t_out; + return ret; + } + else + { + *t0 = *t1 = 0; + return 0; + } +} /* cylinder_intersect */ + + +/******************************************************************************* + * sphere_intersect: Calculate intersection between a line and a sphere. + * returns 0 when no intersection is found + * or 1 in case of intersection with resulting times t0 and t1 + *******************************************************************************/ +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r) +{ + double A, B, C, D, v; + + v = sqrt(vx*vx + vy*vy + vz*vz); + A = v*v; + B = 2*(x*vx + y*vy + z*vz); + C = x*x + y*y + z*z - r*r; + D = B*B - 4*A*C; + if(D < 0) + return 0; + D = sqrt(D); + *t0 = (-B - D) / (2*A); + *t1 = (-B + D) / (2*A); + return 1; +} /* sphere_intersect */ + +/******************************************************************************* + * plane_intersect: Calculate intersection between a plane and a line. + * returns 0 when no intersection is found (i.e. line is parallel to the plane) + * returns 1 or -1 when intersection time is positive and negative respectively + *******************************************************************************/ +int plane_intersect(double *t, double x, double y, double z, + double vx, double vy, double vz, double nx, double ny, double nz, double wx, double wy, double wz) +{ + double s; + if (fabs(s=scalar_prod(nx,ny,nz,vx,vy,vz)) height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(time +#include +#include + +#ifndef _MSC_EXTENSIONS +#include +#else +# include +# define strcasecmp _stricmp +# define strncasecmp _strnicmp +#endif + + typedef struct struct_table + { + char filename[1024]; + long filesize; + char *header; /* text header, e.g. comments */ + double *data; /* vector { x[0], y[0], ... x[n-1], y[n-1]... } */ + double min_x; /* min value of first column */ + double max_x; /* max value of first column */ + double step_x; /* minimal step value of first column */ + long rows; /* number of rows in matrix block */ + long columns; /* number of columns in matrix block */ + + long begin; /* start fseek index of block */ + long end; /* stop fseek index of block */ + long block_number; /* block index. 0 is catenation of all */ + long array_length; /* number of elements in the t_Table array */ + char monotonic; /* true when 1st column/vector data is monotonic */ + char constantstep; /* true when 1st column/vector data has constant step */ + char method[32]; /* interpolation method: nearest, linear */ + char quiet; /*output level for messages to the console 0: print all messages, 1:only print some/including errors, 2: never print anything.*/ + } t_Table; + +/*maximum number of rows to rebin a table = 1M*/ +enum { mcread_table_rebin_maxsize = 1000000 }; + +typedef struct t_Read_table_file_item { + int ref_count; + t_Table *table_ref; +} t_Read_table_file_item; + +typedef enum enum_Read_table_file_actions {STORE,FIND,GC} t_Read_table_file_actions; + +/* read_table-lib function prototypes */ +/* ========================================================================= */ + +/* 'public' functions */ +long Table_Read (t_Table *Table, char *File, long block_number); +long Table_Read_Offset (t_Table *Table, char *File, long block_number, + long *offset, long max_lines); +long Table_Read_Offset_Binary(t_Table *Table, char *File, char *Type, + long *Offset, long Rows, long Columns); +long Table_Rebin(t_Table *Table); /* rebin table with regular 1st column and interpolate all columns 2:end */ +long Table_Info (t_Table Table); +#pragma acc routine +double Table_Index(t_Table Table, long i, long j); /* get indexed value */ +#pragma acc routine +double Table_Value(t_Table Table, double X, long j); /* search X in 1st column and return interpolated value in j-column */ +t_Table *Table_Read_Array(char *File, long *blocks); +void Table_Free_Array(t_Table *Table); +long Table_Info_Array(t_Table *Table); +int Table_SetElement(t_Table *Table, long i, long j, double value); +long Table_Init(t_Table *Table, long rows, long columns); /* create a Table */ +#pragma acc routine +double Table_Value2d(t_Table Table, double X, double Y); /* same as Table_Index with non-integer indices and 2d interpolation */ +MCDETECTOR Table_Write(t_Table Table, char*file, char*xl, char*yl, + double x1, double x2, double y1, double y2); /* write Table to disk */ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier); +t_Table *Table_File_List_find(char *name, int block, int offset); +int Table_File_List_gc(t_Table *tab); +void *Table_File_List_store(t_Table *tab); + +#define Table_ParseHeader(header, ...) \ + Table_ParseHeader_backend(header,__VA_ARGS__,NULL); + +char **Table_ParseHeader_backend(char *header, ...); +FILE *Open_File(char *name, const char *Mode, char *path); + + +/* private functions */ +void Table_Free(t_Table *Table); +long Table_Read_Handle(t_Table *Table, FILE *fid, long block_number, long max_lines, char *name); +static void Table_Stat(t_Table *Table); +#pragma acc routine +double Table_Interp1d(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp1d_nearest(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp2d(double x, double y, double x1, double y1, double x2, double y2, +double z11, double z12, double z21, double z22); + + +#endif + +/* end of read_table-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/read_table-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Release: McStas CVS_090504 +* Version: $Revision$ +* +* This file is to be imported by components that may read data from table files +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "read_table-lib" +* +*******************************************************************************/ + +#ifndef READ_TABLE_LIB_H +#include "read_table-lib.h" +#endif + +#ifndef READ_TABLE_LIB_C +#define READ_TABLE_LIB_C "$Revision$" + + +/******************************************************************************* + * void *Table_File_List_Handler(action, item, item_modifier) + * ACTION: handle file entries in the read_table-lib file list. If a file is read - it is supposed to be + * stored in a list such that we can avoid reading the same file many times. + * input action: FIND, STORE, GC. check if file exists in the list, store an item in the list, or check if it can be garbage collected. + * input item: depends on the action. + * FIND) item is a filename, and item_modifier is the block number + * STORE) item is the Table to store - item_modifier is ignored + * GC) item is the Table to check. If it has a ref_count >1 then this is simply decremented. + * return depends on the action + * FIND) return a reference to a table+ref_count item if found - NULL otherwise. I.e. NULL means the file has not been read before and must be read again. + * STORE) return NULL always + * GC) return NULL if no garbage collection is needed, return an adress to the t_Table which should be garbage collected. 0x1 is returned if + * the item is not found in the list +*******************************************************************************/ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier){ + + /* logic here is Read_Table should include a call to FIND. If found the return value should just be used as + * if the table had been read from disk. If not found then read the table and STORE. + * Table_Free should include a call to GC. If this returns non-NULL then we should proceed with freeing the memory + * associated with the table item - otherwise only decrement the reference counter since there are more references + * that may need it.*/ + + static t_Read_table_file_item read_table_file_list[1024]; + static int read_table_file_count=0; + + t_Read_table_file_item *tr; + switch(action){ + case FIND: + /*interpret data item as a filename, if it is found return a pointer to the table and increment refcount. + * if not found return the item itself*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + int i=*((int*) item_modifier); + int j=*( ((int*) item_modifier)+1); + if ( !strcmp(tr->table_ref->filename,(char *) item) && + tr->table_ref->block_number==i && tr->table_ref->begin==j ){ + tr->ref_count++; + return (void *) tr; + } + tr++; + } + return NULL; + case STORE: + /*find an available slot and store references to table there*/ + tr=&(read_table_file_list[read_table_file_count++]); + tr->table_ref = ((t_Table *) item); + tr->ref_count++; + return NULL; + case GC: + /* Should this item be garbage collected (freed) - if so scratch the entry and return the address of the item - + * else decrement ref_count and return NULL. + * A non-NULL return expects the item to actually be freed afterwards.*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + if ( tr->table_ref->data ==((t_Table *)item)->data && + tr->table_ref->block_number == ((t_Table *)item)->block_number){ + /*matching item found*/ + if (tr->ref_count>1){ + /*the item is found and no garbage collection needed*/ + tr->ref_count--; + return NULL; + }else{ + /* The item is found and the reference counter is 1. + * This means we should garbage collect. Move remaining list items up one slot, + * and return the table for garbage collection by caller*/ + while (tr->table_ref!=NULL){ + *tr=*(tr+1); + tr++; + } + read_table_file_count--; + return (t_Table *) item; + } + } + tr++; + } + /* item not found, and so should be garbage collected. This could be the case if freeing a + * Table that has been constructed from code - not read from file. Return 0x1 to flag it for + * collection.*/ + return (void *) 0x1 ; + } + /* If we arrive here, nothing worked, return NULL */ + return NULL; +} + +/* Access functions to the handler*/ + +/******************************************** + * t_Table *Table_File_List_find(char *name, int block, int offset) + * input name: filename to search for in the file list + * input block: data block in the file as each file may contain more than 1 data block. + * return a ref. to a table if it is found (you may use this pointer and skip reading the file), NULL otherwise (i.e. go ahead and read the file) +*********************************************/ +t_Table *Table_File_List_find(char *name, int block, int offset){ + int vars[2]={block,offset}; + t_Read_table_file_item *item = Table_File_List_Handler(FIND,name, vars); + if (item == NULL){ + return NULL; + }else{ + return item->table_ref; + } +} +/******************************************** + * int Table_File_List_gc(t_Table *tab) + * input tab: the table to check for references. + * return 0: no garbage collection needed + * 1: Table's data and header (at least) should be freed. +*********************************************/ +int Table_File_List_gc(t_Table *tab){ + void *rval=Table_File_List_Handler(GC,tab,0); + if (rval==NULL) return 0; + else return 1; +} + + +/***************************************************************************** + * void *Table_File_List_store(t_Table *tab) + * input tab: pointer to table to store. + * return None. +*******************************************************************************/ +void *Table_File_List_store(t_Table *tab){ + return Table_File_List_Handler(STORE,tab,0); +} + + +/******************************************************************************* +* FILE *Open_File(char *name, char *Mode, char *path) +* ACTION: search for a file and open it. Optionally return the opened path. +* input name: file name from which table should be extracted +* mode: "r", "w", "a" or any valid fopen mode +* path: NULL or a pointer to at least 1024 allocated chars +* return initialized file handle or NULL in case of error +*******************************************************************************/ + + FILE *Open_File(char *File, const char *Mode, char *Path) + { + char path[1024]; + FILE *hfile = NULL; + + if (!File || File[0]=='\0') return(NULL); + if (!strcmp(File,"NULL") || !strcmp(File,"0")) return(NULL); + + /* search in current or full path */ + strncpy(path, File, 1024); + hfile = fopen(path, Mode); + if(!hfile) + { + char dir[1024]; + + if (!hfile && instrument_source[0] != '\0' && strlen(instrument_source)) /* search in instrument source location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_source, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_source; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_source, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile && instrument_exe[0] != '\0' && strlen(instrument_exe)) /* search in PWD instrument executable location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_exe, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_exe; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_exe, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile) /* search in HOME or . */ + { + strcpy(dir, getenv("HOME") ? getenv("HOME") : "."); + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MCSTAS/data */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "data", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MVCSTAS/contrib */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "contrib", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if(!hfile) + { + // fprintf(stderr, "Warning: Could not open input file '%s' (Open_File)\n", File); + return (NULL); + } + } + if (Path) strncpy(Path, path, 1024); + return(hfile); + } /* end Open_File */ + +/******************************************************************************* +* long Read_Table(t_Table *Table, char *name, int block_number) +* ACTION: read a single Table from a text file +* input Table: pointer to a t_Table structure +* name: file name from which table should be extracted +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* File is opened, read and closed +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebinned with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read(t_Table *Table, char *File, long block_number) + { /* reads all or a single data block from 'file' and returns a Table structure */ + return(Table_Read_Offset(Table, File, block_number, NULL, 0)); + } /* end Table_Read */ + +/******************************************************************************* +* long Table_Read_Offset(t_Table *Table, char *name, int block_number, long *offset +* long max_rows) +* ACTION: read a single Table from a text file, starting at offset +* Same as Table_Read(..) except: +* input offset: pointer to an offset (*offset should be 0 at start) +* max_rows: max number of data rows to read from file (0 means all) +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset(t_Table *Table, char *File, + long block_number, long *offset, + long max_rows) + { /* reads all/a data block in 'file' and returns a Table structure */ + FILE *hfile; + long nelements=0; + long begin=0; + long filesize=0; + char name[1024]; + char path[1024]; + struct stat stfile; + + /*Need to be able to store the pointer*/ + if (!Table) return(-1); + + /*TK: Valgrind flags it as usage of uninitialised variable: */ + Table->quiet = 0; + + //if (offset && *offset) snprintf(name, 1024, "%s@%li", File, *offset); + //else + strncpy(name, File, 1024); + if(offset && *offset){ + begin=*offset; + } + /* Check if the table has already been read from file. + * If so just reuse the table, if not (this is flagged by returning NULL + * set up a new table and read the data into it */ + t_Table *tab_p= Table_File_List_find(name,block_number,begin); + if ( tab_p!=NULL ){ + /*table was found in the Table_File_List*/ + *Table=*tab_p; + MPI_MASTER( + if(Table->quiet<1) + printf("Reusing input file '%s' (Table_Read_Offset)\n", name); + ); + return Table->rows*Table->columns; + } + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read_Offset)\n", path); + ); + } + + /* read file state */ + stat(path,&stfile); filesize = stfile.st_size; + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + + Table_Init(Table, 0, 0); + + /* read file content and set the Table */ + nelements = Table_Read_Handle(Table, hfile, block_number, max_rows, name); + Table->begin = begin; + Table->end = ftell(hfile); + Table->filesize = (filesize>0 ? filesize : 0); + Table_Stat(Table); + + Table_File_List_store(Table); + + if (offset) *offset=Table->end; + fclose(hfile); + return(nelements); + + } /* end Table_Read_Offset */ + +/******************************************************************************* +* long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, +* long *offset, long rows, long columns) +* ACTION: read a single Table from a binary file, starting at offset +* Same as Table_Read_Offset(..) except that it handles binary files. +* input type: may be "float"/NULL or "double" +* offset: pointer to an offset (*offset should be 0 at start) +* rows : number of rows (0 means read all) +* columns: number of columns +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, + long *offset, long rows, long columns) + { /* reads all/a data block in binary 'file' and returns a Table structure */ + long nelements, sizeofelement; + long filesize; + FILE *hfile; + char path[1024]; + struct stat stfile; + double *data = NULL; + double *datatmp = NULL; + long i; + long begin; + + if (!Table) return(-1); + + Table_Init(Table, 0, 0); + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read, Binary)\n", path); + ); + } + + /* read file state */ + stat(File,&stfile); + filesize = stfile.st_size; + Table->filesize=filesize; + + /* read file content */ + if (type && !strcmp(type,"double")) sizeofelement = sizeof(double); + else sizeofelement = sizeof(float); + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + if (rows && filesize > sizeofelement*columns*rows) + nelements = columns*rows; + else nelements = (long)(filesize/sizeofelement); + if (!nelements || filesize <= *offset) return(0); + data = (double*)malloc(nelements*sizeofelement); + if (!data) { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: allocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } + nelements = fread(data, sizeofelement, nelements, hfile); + + if (!data || !nelements) + { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: reading %ld elements from %s file '%s' (Table_Read_Offset_Binary)\n", nelements, type, File); + exit(-1); + } + Table->begin = begin; + Table->end = ftell(hfile); + if (offset) *offset=Table->end; + fclose(hfile); + + datatmp = (double*)realloc(data, (double)nelements*sizeofelement); + if (!datatmp) { + free(data); + fprintf(stderr,"Error: reallocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } else { + data = datatmp; + } + /* copy file data into Table */ + if (type && !strcmp(type,"double")) Table->data = data; + else { + float *s; + double *dataf; + s = (float*)data; + dataf = (double*)malloc(sizeof(double)*nelements); + if (!dataf) { + fprintf(stderr, "Could not allocate data block of size %ld\n", nelements); + exit(-1); + } + for (i=0; idata = dataf; + } + strncpy(Table->filename, File, 1024); + Table->rows = nelements/columns; + Table->columns = columns; + Table->array_length = 1; + Table->block_number = 1; + + Table_Stat(Table); + + return(nelements); + } /* end Table_Read_Offset_Binary */ + +/******************************************************************************* +* long Table_Read_Handle(t_Table *Table, FILE *fid, int block_number, long max_rows, char *name) +* ACTION: read a single Table from a text file handle (private) +* input Table:pointer to a t_Table structure +* fid: pointer to FILE handle +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* max_rows: if non 0, only reads that number of lines +* return initialized single Table t_Table structure containing data, header, ... +* modified Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebined with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read_Handle(t_Table *Table, FILE *hfile, + long block_number, long max_rows, char *name) + { /* reads all/a data block from 'file' handle and returns a Table structure */ + double *Data = NULL; + double *Datatmp = NULL; + char *Header = NULL; + char *Headertmp = NULL; + long malloc_size = CHAR_BUF_LENGTH; + long malloc_size_h = 4096; + long Rows = 0, Columns = 0; + long count_in_array = 0; + long count_in_header = 0; + long count_invalid = 0; + long block_Current_index = 0; + char flag_End_row_loop = 0; + + if (!Table) return(-1); + Table_Init(Table, 0, 0); + if (name && name[0]!='\0') strncpy(Table->filename, name, 1024); + + if(!hfile) { + fprintf(stderr, "Error: File handle is NULL (Table_Read_Handle).\n"); + return (-1); + } + Header = (char*) calloc(malloc_size_h, sizeof(char)); + Data = (double*)calloc(malloc_size, sizeof(double)); + if ((Header == NULL) || (Data == NULL)) { + fprintf(stderr, "Error: Could not allocate Table and Header (Table_Read_Handle).\n"); + return (-1); + } + + int flag_In_array = 0; + do { /* while (!flag_End_row_loop) */ + char *line=malloc(1024*CHAR_BUF_LENGTH*sizeof(char)); + long back_pos=0; /* ftell start of line */ + + if (!line) { + fprintf(stderr,"Could not allocate line buffer\n"); + exit(-1); + } + back_pos = ftell(hfile); + if (fgets(line, 1024*CHAR_BUF_LENGTH, hfile) != NULL) { /* analyse line */ + /* first skip blank and tabulation characters */ + int i = strspn(line, " \t"); + + /* handle comments: stored in header */ + if (NULL != strchr("#%;/", line[i])) + { /* line is a comment */ + count_in_header += strlen(line); + if (count_in_header >= malloc_size_h) { + /* if succeed and in array : add (and realloc if necessary) */ + malloc_size_h = count_in_header+4096; + char *Headertmp = (char*)realloc(Header, malloc_size_h*sizeof(char)); + if(!Headertmp) { + free(Header); + fprintf(stderr, "Error: Could not reallocate Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + strncat(Header, line, 4096); + flag_In_array=0; + /* exit line and file if passed desired block */ + if (block_number > 0 && block_number == block_Current_index) { + flag_End_row_loop = 1; + } + + /* Continue with next line */ + continue; + } + if (strstr(line, "***")) + { + count_invalid++; + /* Continue with next line */ + continue; + } + + /* get the number of columns splitting line with strtok */ + char *lexeme; + char flag_End_Line = 0; + long block_Num_Columns = 0; + const char seps[] = " ,;\t\n\r"; + + lexeme = strtok(line, seps); + while (!flag_End_Line) { + if ((lexeme != NULL) && (lexeme[0] != '\0')) { + /* reading line: the token is not empty */ + double X; + int count=1; + /* test if we have 'NaN','Inf' */ + if (!strncasecmp(lexeme,"NaN",3)) + X = 0; + else if (!strncasecmp(lexeme,"Inf",3) || !strncasecmp(lexeme,"+Inf",4)) + X = FLT_MAX; + else if (!strncasecmp(lexeme,"-Inf",4)) + X = -FLT_MAX; + else + count = sscanf(lexeme,"%lg",&X); + if (count == 1) { + /* reading line: the token is a number in the line */ + if (!flag_In_array) { + /* reading num: not already in a block: starts a new data block */ + block_Current_index++; + flag_In_array = 1; + block_Num_Columns= 0; + if (block_number > 0) { + /* initialise a new data block */ + Rows = 0; + count_in_array = 0; + } /* else append */ + } + /* reading num: all blocks or selected block */ + if (flag_In_array && (block_number == 0 || + block_number == block_Current_index)) { + /* starting block: already the desired number of rows ? */ + if (block_Num_Columns == 0 && + max_rows > 0 && Rows >= max_rows) { + flag_End_Line = 1; + flag_End_row_loop = 1; + flag_In_array = 0; + /* reposition to begining of line (ignore line) */ + fseek(hfile, back_pos, SEEK_SET); + } else { /* store into data array */ + if (count_in_array >= malloc_size) { + /* realloc data buffer if necessary */ + malloc_size = count_in_array*1.5; + Datatmp = (double*) realloc(Data, malloc_size*sizeof(double)); + if (Datatmp == NULL) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Handle).\n", + malloc_size*sizeof(double)); + free(Data); + return (-1); + } else { + Data=Datatmp; + } + } + if (0 == block_Num_Columns) Rows++; + Data[count_in_array] = X; + count_in_array++; + block_Num_Columns++; + } + } /* reading num: end if flag_In_array */ + } /* end reading num: end if sscanf lexeme -> numerical */ + else { + /* reading line: the token is not numerical in that line. end block */ + if (block_Current_index == block_number) { + flag_End_Line = 1; + flag_End_row_loop = 1; + } else { + flag_In_array = 0; + flag_End_Line = 1; + } + } + } + else { + /* no more tokens in line */ + flag_End_Line = 1; + if (block_Num_Columns > 0) Columns = block_Num_Columns; + } + + // parse next token + lexeme = strtok(NULL, seps); + + } /* while (!flag_End_Line) */ + } /* end: if fgets */ + else flag_End_row_loop = 1; /* else fgets : end of file */ + free(line); + } while (!flag_End_row_loop); /* end while flag_End_row_loop */ + + Table->block_number = block_number; + Table->array_length = 1; + + // shrink header to actual size (plus terminating 0-byte) + if (count_in_header) { + Headertmp = (char*)realloc(Header, count_in_header*sizeof(char) + 1); + if(!Headertmp) { + fprintf(stderr, "Error: Could not shrink Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + Table->header = Header; + + if (count_in_array*Rows*Columns == 0) + { + Table->rows = 0; + Table->columns = 0; + free(Data); + return (0); + } + if (Rows * Columns != count_in_array) + { + fprintf(stderr, "Warning: Read_Table :%s %s Data has %li values that should be %li x %li\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_in_array, Rows, Columns); + Columns = count_in_array; Rows = 1; + } + if (count_invalid) + { + fprintf(stderr,"Warning: Read_Table :%s %s Data has %li invalid lines (*****). Ignored.\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_invalid); + } + Datatmp = (double*)realloc(Data, count_in_array*sizeof(double)); + if(!Datatmp) { + fprintf(stderr, "Error: Could reallocate Data block to %li doubles (Table_Read_Handle).\n", count_in_array); + free(Data); + return (-1); + } else { + Data = Datatmp; + } + Table->data = Data; + Table->rows = Rows; + Table->columns = Columns; + + return (count_in_array); + + } /* end Table_Read_Handle */ + +/******************************************************************************* +* long Table_Rebin(t_Table *Table) +* ACTION: rebin a single Table, sorting 1st column in ascending order +* input Table: single table containing data. +* The data block is reallocated in this process +* return updated Table with increasing, evenly spaced first column (index 0) +* number of data elements (-1: error, 0:empty data) +*******************************************************************************/ + long Table_Rebin(t_Table *Table) + { + double new_step=0; + long i; + /* performs linear interpolation on X axis (0-th column) */ + + if (!Table) return(-1); + if (!Table->data + || Table->rows*Table->columns == 0 || !Table->step_x) + return(0); + Table_Stat(Table); /* recompute statitstics and minimal step */ + new_step = Table->step_x; /* minimal step in 1st column */ + + if (!(Table->constantstep)) /* not already evenly spaced */ + { + long Length_Table; + double *New_Table; + + Length_Table = ceil(fabs(Table->max_x - Table->min_x)/new_step)+1; + /*return early if the rebinned table will become too large*/ + if (Length_Table > mcread_table_rebin_maxsize){ + fprintf(stderr,"WARNING: (Table_Rebin): Rebinning table from %s would exceed 1M rows. Skipping.\n", Table->filename); + return(Table->rows*Table->columns); + } + New_Table = (double*)malloc(Length_Table*Table->columns*sizeof(double)); + if (!New_Table) { + fprintf(stderr,"Could not allocate New_Table of size %ld x %ld\n", Length_Table, Table->columns); + exit(-1); + } + for (i=0; i < Length_Table; i++) + { + long j; + double X; + X = Table->min_x + i*new_step; + New_Table[i*Table->columns] = X; + for (j=1; j < Table->columns; j++) + New_Table[i*Table->columns+j] + = Table_Value(*Table, X, j); + } /* end for i */ + + Table->rows = Length_Table; + Table->step_x = new_step; + Table->max_x = Table->min_x + (Length_Table-1)*new_step; + /*max might not be the same anymore + * Use Length_Table -1 since the first and laset rows are the limits of the defined interval.*/ + free(Table->data); + Table->data = New_Table; + Table->constantstep=1; + } /* end else (!constantstep) */ + return (Table->rows*Table->columns); + } /* end Table_Rebin */ + +/******************************************************************************* +* double Table_Index(t_Table Table, long i, long j) +* ACTION: read an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* return Value = data[i][j] +* Returns Value from the i-th row, j-th column of Table +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +double Table_Index(t_Table Table, long i, long j) +{ + long AbsIndex; + + if (Table.rows == 1 || Table.columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table.columns*Table.rows - 1); + i = 0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table.rows - 1); + j = MIN(MAX(0, j), Table.columns - 1); + } + + /* handle vectors specifically */ + AbsIndex = i*(Table.columns)+j; + + if (Table.data != NULL) + return (Table.data[AbsIndex]); + else + return 0; +} /* end Table_Index */ + +/******************************************************************************* +* void Table_SetElement(t_Table *Table, long i, long j, double value) +* ACTION: set an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* value = data[i][j] +* Returns 0 in case of error +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ +int Table_SetElement(t_Table *Table, long i, long j, + double value) +{ + long AbsIndex; + + if (Table->rows == 1 || Table->columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table->columns*Table->rows - 1); i=0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table->rows - 1); + j = MIN(MAX(0, j), Table->columns - 1); + } + + AbsIndex = i*(Table->columns)+j; + if (Table->data != NULL) { + Table->data[AbsIndex] = value; + return 1; + } + + return 0; +} /* end Table_SetElement */ + +/******************************************************************************* +* double Table_Value(t_Table Table, double X, long j) +* ACTION: read column [j] of a single Table at row which 1st column is X +* input Table: table containing data. +* X : data value in the first column (index 0) +* j : index of column from which is extracted the Value (0:Columns-1) +* return Value = data[index for X][j] with linear interpolation +* Returns Value from the j-th column of Table corresponding to the +* X value for the 1st column (index 0) +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value(t_Table Table, double X, long j) +{ + long Index = -1; + double X1=0, Y1=0, X2=0, Y2=0; + double ret=0; + + if (X > Table.max_x) return Table_Index(Table,Table.rows-1 ,j); + if (X < Table.min_x) return Table_Index(Table,0 ,j); + + // Use constant-time lookup when possible + if(Table.constantstep) { + Index = (long)floor( + (X - Table.min_x) / (Table.max_x - Table.min_x) * (Table.rows-1)); + X1 = Table_Index(Table,Index-1,0); + X2 = Table_Index(Table,Index ,0); + } + // Use binary search on large, monotonic tables + else if(Table.monotonic && Table.rows > 100) { + long left = Table.min_x; + long right = Table.max_x; + + while (!((X1 <= X) && (X < X2)) && (right - left > 1)) { + Index = (left + right) / 2; + + X1 = Table_Index(Table, Index-1, 0); + X2 = Table_Index(Table, Index, 0); + + if (X < X1) { + right = Index; + } else { + left = Index; + } + } + } + + // Fall back to linear search, if no-one else has set X1, X2 correctly + if (!((X1 <= X) && (X < X2))) { + /* look for index surrounding X in the table -> Index */ + for (Index=1; Index <= Table.rows-1; Index++) { + X1 = Table_Index(Table, Index-1,0); + X2 = Table_Index(Table, Index ,0); + if ((X1 <= X) && (X < X2)) break; + } /* end for Index */ + } + + Y1 = Table_Index(Table,Index-1, j); + Y2 = Table_Index(Table,Index , j); + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) { + ret = Table_Interp1d(X, X1,Y1, X2,Y2); + } + else if (!strcmp(Table.method,"nearest")) { + ret = Table_Interp1d_nearest(X, X1,Y1, X2,Y2); + } + +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + + return ret; +} /* end Table_Value */ + +/******************************************************************************* +* double Table_Value2d(t_Table Table, double X, double Y) +* ACTION: read element [X,Y] of a matrix Table +* input Table: table containing data. +* X : row index, may be non integer +* Y : column index, may be non integer +* return Value = data[index X][index Y] with bi-linear interpolation +* Returns Value for the indices [X,Y] +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value2d(t_Table Table, double X, double Y) + { + long x1,x2,y1,y2; + double z11,z12,z21,z22; + double ret=0; + + x1 = (long)floor(X); + y1 = (long)floor(Y); + + if (x1 > Table.rows-1 || x1 < 0) { + x2 = x1; + } else { + x2 = x1 + 1; + } + + if (y1 > Table.columns-1 || y1 < 0) { + y2 = y1; + } else { + y2 = y1 + 1; + } + + z11 = Table_Index(Table, x1, y1); + + if (y2 != y1) z12=Table_Index(Table, x1, y2); else z12 = z11; + if (x2 != x1) z21=Table_Index(Table, x2, y1); else z21 = z11; + if (y2 != y1) z22=Table_Index(Table, x2, y2); else z22 = z21; + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) + ret = Table_Interp2d(X,Y, x1,y1,x2,y2, z11,z12,z21,z22); +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + else { + if (fabs(X-x1) < fabs(X-x2)) { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z11; else ret = z12; + } else { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z21; else ret = z22; + } + } + return ret; + } /* end Table_Value2d */ + + +/******************************************************************************* +* void Table_Free(t_Table *Table) +* ACTION: free a single Table. First Call Table_File_list_gc. If this returns +* non-zero it means there are more refernces to the table, and so the table +* should not bee freed. +* return: empty Table +*******************************************************************************/ + void Table_Free(t_Table *Table) + { + if( !Table_File_List_gc(Table) ){ + return; + } + if (!Table) return; + if (Table->data != NULL) free(Table->data); + if (Table->header != NULL) free(Table->header); + Table->data = NULL; + Table->header = NULL; + } /* end Table_Free */ + +/****************************************************************************** +* void Table_Info(t_Table Table) +* ACTION: print informations about a single Table +*******************************************************************************/ + long Table_Info(t_Table Table) + { + char buffer[256]; + long ret=0; + + if (!Table.block_number) strcpy(buffer, "catenated"); + else sprintf(buffer, "block %li", Table.block_number); + printf("Table from file '%s' (%s)", + Table.filename[0] != '\0' ? Table.filename : "", buffer); + if ((Table.data != NULL) && (Table.rows*Table.columns)) + { + printf(" is %li x %li ", Table.rows, Table.columns); + if (Table.rows*Table.columns > 1) + printf("(x=%g:%g)", Table.min_x, Table.max_x); + else printf("(x=%g) ", Table.min_x); + ret = Table.rows*Table.columns; + if (Table.monotonic) printf(", monotonic"); + if (Table.constantstep) printf(", constant step"); + printf(". interpolation: %s\n", Table.method); + } + else printf(" is empty.\n"); + + if (Table.header && strlen(Table.header)) { + char *header; + int i; + header = malloc(80); + if (!header) return(ret); + for (i=0; i<80; header[i++]=0); + strncpy(header, Table.header, 75); + if (strlen(Table.header) > 75) { + strcat( header, " ..."); + } + for (i=0; iheader = NULL; + Table->filename[0]= '\0'; + Table->filesize= 0; + Table->min_x = 0; + Table->max_x = 0; + Table->step_x = 0; + Table->block_number = 0; + Table->array_length = 0; + Table->monotonic = 0; + Table->constantstep = 0; + Table->begin = 0; + Table->end = 0; + strcpy(Table->method,"linear"); + + if (rows*columns >= 1) { + data = (double*)malloc(rows*columns*sizeof(double)); + if (data) for (i=0; i < rows*columns; data[i++]=0); + else { + if(Table->quiet<2) + fprintf(stderr,"Error: allocating %ld double elements." + "Too big (Table_Init).\n", rows*columns); + rows = columns = 0; + } + } + Table->rows = (rows >= 1 ? rows : 0); + Table->columns = (columns >= 1 ? columns : 0); + Table->data = data; + return(Table->rows*Table->columns); +} /* end Table_Init */ + +/****************************************************************************** +* long Table_Write(t_Table Table, char *file, x1,x2, y1,y2) +* ACTION: write a Table to disk (ascii). +* when x1=x2=0 or y1=y2=0, the table default limits are used. +* return: 0=all is fine, non-0: error +*******************************************************************************/ +MCDETECTOR Table_Write(t_Table Table, char *file, char *xl, char *yl, + double x1, double x2, double y1, double y2) +{ + MCDETECTOR detector; + + if ((Table.data == NULL) && (Table.rows*Table.columns)) { + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + return(detector); /* Table is empty - nothing to do */ + } + if (!x1 && !x2) { + x1 = Table.min_x; + x2 = Table.max_x; + } + if (!y1 && !y2) { + y1 = 1; + y2 = Table.columns; + } + + /* transfer content of the Table into a 2D detector */ + Coords coords = { 0, 0, 0}; + Rotation rot; + rot_set_rotation(rot, 0, 0, 0); + + if (Table.rows == 1 || Table.columns == 1) { + detector = mcdetector_out_1D(Table.filename, + xl ? xl : "", yl ? yl : "", + "x", x1, x2, + Table.rows * Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } else { + detector = mcdetector_out_2D(Table.filename, + xl ? xl : "", yl ? yl : "", + x1, x2, y1, y2, + Table.rows, Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } + return(detector); +} + +/****************************************************************************** +* void Table_Stat(t_Table *Table) +* ACTION: computes min/max/mean step of 1st column for a single table (private) +* return: updated Table +*******************************************************************************/ + static void Table_Stat(t_Table *Table) + { + long i; + double max_x, min_x; + double row=1; + char monotonic=1; + char constantstep=1; + double step=0; + long n; + + if (!Table) return; + if (!Table->rows || !Table->columns) return; + if (Table->rows == 1) row=0; // single row + max_x = -FLT_MAX; + min_x = FLT_MAX; + n = (row ? Table->rows : Table->columns); + /* get min and max of first column/vector */ + for (i=0; i < n; i++) + { + double X; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + if (X < min_x) min_x = X; + if (X > max_x) max_x = X; + } /* for */ + + /* test for monotonicity and constant step if the table is an XY or single vector */ + if (n > 1) { + /* mean step */ + step = (max_x - min_x)/(n-1); + /* now test if table is monotonic on first column, and get minimal step size */ + for (i=0; i < n-1; i++) { + double X, diff;; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if (diff && fabs(diff) < fabs(step)) step = diff; + /* change sign ? */ + if ((max_x - min_x)*diff < 0 && monotonic) + monotonic = 0; + } /* end for */ + + /* now test if steps are constant within READ_TABLE_STEPTOL */ + if(!step){ + /*means there's a disconitnuity -> not constantstep*/ + constantstep=0; + }else if (monotonic) { + for (i=0; i < n-1; i++) { + double X, diff; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if ( fabs(step)*(1+READ_TABLE_STEPTOL) < fabs(diff) || + fabs(diff) < fabs(step)*(1-READ_TABLE_STEPTOL) ) + { constantstep = 0; break; } + } + } + + } + Table->step_x= step; + Table->max_x = max_x; + Table->min_x = min_x; + Table->monotonic = monotonic; + Table->constantstep = constantstep; + } /* end Table_Stat */ + +/****************************************************************************** +* t_Table *Table_Read_Array(char *File, long *blocks) +* ACTION: read as many data blocks as available, iteratively from file +* return: initialized t_Table array, last element is an empty Table. +* the number of extracted blocks in non NULL pointer *blocks +*******************************************************************************/ + t_Table *Table_Read_Array(char *File, long *blocks) + { + t_Table *Table_Array = NULL; + t_Table *Table_Arraytmp = NULL; + long offset=0; + long block_number=0; + long allocated=256; + long nelements=1; + + /* first allocate an initial empty t_Table array */ + Table_Array = (t_Table *)malloc(allocated*sizeof(t_Table)); + if (!Table_Array) { + fprintf(stderr, "Error: Can not allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + *blocks = 0; + return (NULL); + } + + while (nelements > 0) + { + t_Table Table; + + /* if ok, set t_Table block number else exit loop */ + block_number++; + Table.block_number = block_number; + + /* access file at offset and get following block. Block number is from the set offset + * hence the hardcoded 1 - i.e. the next block counted from offset.*/ + nelements = Table_Read_Offset(&Table, File, 1, &offset,0); + /*if the block is empty - don't store it*/ + if (nelements>0){ + /* if t_Table array is not long enough, expand and realocate */ + if (block_number >= allocated-1) { + allocated += 256; + Table_Arraytmp = (t_Table *)realloc(Table_Array, + allocated*sizeof(t_Table)); + if (!Table_Arraytmp) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + free(Table_Array); + *blocks = 0; + return (NULL); + } else { + Table_Array = Table_Arraytmp; + } + } + /* store it into t_Table array */ + //snprintf(Table.filename, 1024, "%s#%li", File, block_number-1); + Table_Array[block_number-1] = Table; + } + /* continues until we find an empty block */ + } + /* send back number of extracted blocks */ + if (blocks) *blocks = block_number-1; + + /* now store total number of elements in Table array */ + for (offset=0; offset < block_number; + Table_Array[offset++].array_length = block_number-1); + + return(Table_Array); + } /* end Table_Read_Array */ +/******************************************************************************* +* void Table_Free_Array(t_Table *Table) +* ACTION: free a Table array +*******************************************************************************/ + void Table_Free_Array(t_Table *Table) + { + long index; + if (!Table) return; + for (index=0;index < Table[0].array_length; index++){ + Table_Free(&Table[index]); + } + free(Table); + } /* end Table_Free_Array */ + +/****************************************************************************** +* long Table_Info_Array(t_Table *Table) +* ACTION: print informations about a Table array +* return: number of elements in the Table array +*******************************************************************************/ + long Table_Info_Array(t_Table *Table) + { + long index=0; + + if (!Table) return(-1); + while (index < Table[index].array_length + && (Table[index].data || Table[index].header) + && (Table[index].rows*Table[index].columns) ) { + Table_Info(Table[index]); + index++; + } + printf("This Table array contains %li elements\n", index); + return(index); + } /* end Table_Info_Array */ + +/****************************************************************************** +* char **Table_ParseHeader(char *header, symbol1, symbol2, ..., NULL) +* ACTION: search for char* symbols in header and return their value or NULL +* the search is not case sensitive. +* Last argument MUST be NULL +* return: array of char* with line following each symbol, or NULL if not found +*******************************************************************************/ +#ifndef MyNL_ARGMAX +#define MyNL_ARGMAX 50 +#endif + +char **Table_ParseHeader_backend(char *header, ...){ + va_list ap; + char exit_flag=0; + int counter =0; + char **ret =NULL; + if (!header || header[0]=='\0') return(NULL); + + ret = (char**)calloc(MyNL_ARGMAX, sizeof(char*)); + if (!ret) { + printf("Table_ParseHeader: Cannot allocate %i values array for Parser (Table_ParseHeader).\n", + MyNL_ARGMAX); + return(NULL); + } + for (counter=0; counter < MyNL_ARGMAX; ret[counter++] = NULL); + counter=0; + + va_start(ap, header); + while(!exit_flag && counter < MyNL_ARGMAX-1) + { + char *arg_char=NULL; + char *pos =NULL; + /* get variable argument value as a char */ + arg_char = va_arg(ap, char *); + if (!arg_char || arg_char[0]=='\0'){ + exit_flag = 1; break; + } + /* search for the symbol in the header */ + pos = (char*)strcasestr(header, arg_char); + if (pos) { + char *eol_pos; + eol_pos = strchr(pos+strlen(arg_char), '\n'); + if (!eol_pos) + eol_pos = strchr(pos+strlen(arg_char), '\r'); + if (!eol_pos) + eol_pos = pos+strlen(pos)-1; + ret[counter] = (char*)malloc(eol_pos - pos); + if (!ret[counter]) { + printf("Table_ParseHeader: Cannot allocate value[%i] array for Parser searching for %s (Table_ParseHeader).\n", + counter, arg_char); + exit_flag = 1; break; + } + strncpy(ret[counter], pos+strlen(arg_char), eol_pos - pos - strlen(arg_char)); + ret[counter][eol_pos - pos - strlen(arg_char)]='\0'; + } + counter++; + } + va_end(ap); + return(ret); +} /* Table_ParseHeader */ + +/****************************************************************************** +* double Table_Interp1d(x, x1, y1, x2, y2) +* ACTION: interpolates linearly at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d(double x, + double x1, double y1, + double x2, double y2) +{ + double slope; + if (x2 == x1) return (y1+y2)/2; + if (y1 == y2) return y1; + slope = (y2 - y1)/(x2 - x1); + return y1+slope*(x - x1); +} /* Table_Interp1d */ + +/****************************************************************************** +* double Table_Interp1d_nearest(x, x1, y1, x2, y2) +* ACTION: table lookup with nearest method at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d_nearest(double x, + double x1, double y1, + double x2, double y2) +{ + if (fabs(x-x1) < fabs(x-x2)) return (y1); + else return(y2); +} /* Table_Interp1d_nearest */ + +/****************************************************************************** +* double Table_Interp2d(x,y, x1,y1, x2,y2, z11,z12,z21,z22) +* ACTION: interpolates bi-linearly at (x,y) between z1=f(x1,y1) and z2=f(x2,y2) +* return: z=f(x,y) value +* x,y | x1 x2 +* ---------------- +* y1 | z11 z21 +* y2 | z12 z22 +*******************************************************************************/ +double Table_Interp2d(double x, double y, + double x1, double y1, + double x2, double y2, + double z11, double z12, double z21, double z22) +{ + double ratio_x, ratio_y; + if (x2 == x1) return Table_Interp1d(y, y1,z11, y2,z12); + if (y1 == y2) return Table_Interp1d(x, x1,z11, x2,z21); + + ratio_y = (y - y1)/(y2 - y1); + ratio_x = (x - x1)/(x2 - x1); + return (1-ratio_x)*(1-ratio_y)*z11 + ratio_x*(1-ratio_y)*z21 + + ratio_x*ratio_y*z22 + (1-ratio_x)*ratio_y*z12; +} /* Table_Interp2d */ + +/* end of read_table-lib.c */ +#endif // READ_TABLE_LIB_C + + +/* Shared user declarations for all components types 'Guide_four_side'. */ + + + void + TEST_INPUT (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s should \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + fprintf (stderr, " (for negative values use the global guide position !) \n"); + exit (-1); + }; + + void + TEST_INPUT_1 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s must \n", compname, name); + fprintf (stderr, " be -1 (transperent) or \n"); + fprintf (stderr, " be 0 (absorbing) or \n"); + fprintf (stderr, " be > 0 (reflecting) \n"); + exit (-1); + }; + + void + TEST_INPUT_2 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s can \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + exit (-1); + }; + + void + TEST_INPUT_3 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %sr must \n", compname, name); + fprintf (stderr, " be positive\n"); + exit (-1); + }; + + void + TEST_INPUT_4 (char name[20], char name1[20], double inputname, double inputname1, char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) \n", compname); + fprintf (stderr, " %s have to be bigger or equal %s \n", name, name1); + printf (" %s = %f \n", name, inputname); + printf (" %s = %f \n", name1, inputname1); + fprintf (stderr, " check curve parameter and wallthicknesses! \n"); + exit (-1); + }; + + /* function to calculate the needed parameters for an elliptic wall*/ + + void + ELLIPSE (double w1, double length, double lin, double lout, double wallthick, double* a, double* b, double* a2, double* b2, double* z0, double* w2, double* awt, + double* a2wt, double* bwt, double* b2wt, double* w2wt, double* w1wt) { + double DIV1, lb, u1, u2, u1wt, u2wt, dx, dz; + lb = lin + length + lout; /* lenght between the two focal points of the wall */ + *z0 = (lin - length - lout) / 2.0; + u1 = sqrt ((lin * lin) + (w1 * w1)); /* length between entrance focal point and starting point of the wall (INNER side)*/ + u2 = sqrt ((w1 * w1) + ((length + lout) * (length + lout))); /* length between exit focal point and end point of the wall (INNER side) */ + *a = (u1 + u2) / 2.0; /* long half axis a of the ellipse (INNER side)*/ + *a2 = *a * (*a); /* square of the long axis a (INNER side)*/ + *b = sqrt (*a2 - (lb * (lb) / 4.0)); /* short half axis b of the ellipse (INNER side)*/ + *b2 = *b * (*b); /* square of short half axis b of the ellipse (INNER side)*/ + DIV1 = sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2))); /* help variable to calculated the exit width (INNER side)*/ + *w2 = *b * (DIV1); /* exit width (INNER side)*/ + if (length < (lb) / 2 - lout) { /* if the maximum opening of the guide is smaller than the small half axis b, the OUTER side is defined by: */ + dx = wallthick * sin (atan (*a2 * w1 / (*b2 * (*z0)))); + dz = wallthick * cos (atan (*a2 * w1 / (*b2 * (*z0)))); + u1wt = sqrt (((lin + dz) * (lin + dz)) + ((w1 + dx) * (w1 + dx))); /* length between entrance focal point and starting point of the wall (OUTER side)*/ + u2wt = sqrt (((w1 + dx) * (w1 + dx)) + + ((length + lout - dz) * (length + lout - dz))); /* length between exit focal point and end point of the wall (OUTER side) */ + *awt = (u1wt + u2wt) / 2.0; /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *awt * (*awt); /* square of the long axis a (OUTER side)*/ + *bwt = sqrt (*a2wt - (lb * lb / 4.0)); /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout - length) * (lb / 2.0 - lout - length) / (*a2wt))); /* entrance width for OUTER side */ + } else { /* if the maximum opening of the guide is the small half axis b the OUTER wall is defined by:*/ + *bwt = *b + wallthick; /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of the long axis a (OUTER side)*/ + *awt = sqrt (*b2wt + (lb * lb / 4.0)); /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *b2wt + (lb * lb / 4.0); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lin) * (lb / 2.0 - lin) / (*a2wt))); /* entrance width for OUTER side */ + } + } + + /* function to calculate the needed parameters for a parabolical focusing wall*/ + + void + PARABEL_FOCUS (double w1, double length, double lout, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = (length + lout) * (length + lout); /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (lout + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = length + lout + *p2para / 4.0; /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = 1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (w1 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (w1 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (length + lout - dz) * (length + lout - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((w1 + dx) * (w1 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *pbwt = length + lout + *p2parawt / 4.0; /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = 1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + *w2wt = sqrt (*p2parawt * (lout + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lout + length + *p2parawt / 4.0)); /* entrance width (OUTER side) */ + } + + /* function to calculate the needed parameters for a parabolical defocusing wall*/ + + void + PARABEL_DEFOCUS (double w1, double length, double lin, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = lin * lin; /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (length + lin + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = -(lin + *p2para / 4.0); /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = -1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (-*w2 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (-*w2 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (lin + length - dz) * (lin + length - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((*w2 + dx) * (*w2 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lin + *p2parawt / 4.0)); /* entrance width for right focusing parabolic wall (OUTER side) */ + *w2wt = sqrt (*p2parawt * (lin + length + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *pbwt = -(lin + *p2parawt / 4.0); /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = -1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + } + + /* function to calculate the needed parameters for a linear wall*/ + + void + LINEAR (double w1, double w2, double length, double wallthick, double* w1wt, double* w2wt) { + *w1wt = w1 + wallthick / (cos (atan ((w1 - w2) / length))); /* entrance width (OUTER side) */ + *w2wt = w2 + wallthick / (cos (atan ((w1 - w2) / length))); /* exit width (OUTER side) */ + } + + /* function to calculate the intersection time with a linear wall at an negative axis*/ + + void + TIME_LINEAR (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (-w2 + w1) / length; + *t2 = (anstieg * zin - w1 - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (INNER side)*/ + *t2wt = (anstieg * zin - w1wt - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (OUTER side)*/ + if (*t2 < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (*t2wt < 1e-15) /* see comments above*/ + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with a linear wall at an positive axis*/ + + void + TIME_LINEAR_1 (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (w2 - w1) / length; + *t2 = (anstieg * zin + w1 - xin) / (vxin1 - anstieg * vzin1); + *t2wt = (anstieg * zin + w1wt - xin) / (vxin1 - anstieg * vzin1); + if (*t2 < 1e-15) + *t2 = t1in + 2.0; + if (*t2wt < 1e-15) + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with an elliptical wall at a negative axis*/ + + void + TIME_ELLIPSE (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + /* solving the elliptic equation in respect to z and the straight neutron trajectoty, only two z values possible! */ + + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); /* p parameter of quadratic equation for calulation the z component of the intersection point with + respect to the neutron trajectory (INNER side)*/ + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); /* q parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (INNER side)*/ + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; /* if the neutron never touch the ellipse the time is set to be bigger than the time (t1) needed to pass the component */ + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); /* first solution for z (INNER side)*/ + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); /* second solution for z (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* interaction time for first z value (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* interactime time for second z value (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) /* for the right wall x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); /* p parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (OUTER side)*/ + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); /* q parameter of quadratic equation for calulation the z component of the + intersection point with respect to the neutron trajectory (OUTER side)*/ + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; /* if the neutron never touch the ellipse the time is set bigger than need to pass the component */ + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); /* first solution for z (OUTER side) */ + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); /* second solution for z (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* interaction time for first z value (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* interactime time for second z value (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER side)*/ + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with an elliptical wall at a positive axis*/ + + void + TIME_ELLIPSE_1 (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; + n = -m * zin + xin; + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + } + + /* function to calculate the intersection time with a parabolical wall at an negative axis*/ + + void + TIME_PARABEL (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); /* p parameter of quadratic equation (INNER side) */ + q = n * n / (m * m) - pb / (pa * m * m); /* q parameter of quadratic equation (INNER side) */ + if (q > 0 + && q > (p * p + / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) the time is set to t1+2.0 */ + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { /* only neutron with a negativ x-component can hit the RIGHT wall (INNER side)*/ + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; /* the time solution for neutron with a positive x component is set to a time long behind the exit of the guide */ + /* (means will not scatter with the right wall)*/ + } + } else { /* if vx is not zero and x is a real variable*/ + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); /* first z-solution for intersection (INNER side)*/ + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); /* second z-solution for intersection (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* first time solution (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* second time solution (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) { /* the x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; + } /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); /* p parameter of quadratic equation (OUTER side)*/ + qwt = n * n / (m * m) - pbwt / (pawt * m * m); /* q parameter of quadratic equation (OUTER side)*/ + if (qwt > 0 && qwt > (pwt * pwt / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) and the + time is set to t1+2.0 */ + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; /* only neutron with a negativ x-component can hit the RIGHT wall (OUTER wall)*/ + } else { + *t2w1wt = t1in + 2.0; + } + } else { /* if vx is not zero */ + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); /* first z-solution for intersection (OUTER side)*/ + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); /* second z-solution for intersection (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* first time solution (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* second time solution (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER wall)*/ + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with a parabolical wall at an positive axis*/ + + void + TIME_PARABEL_1 (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; + n = -m * zin + xin; + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); + q = n * n / (m * m) - pb / (pa * m * m); + if (q > 0 && q > (p * p / 4)) { + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; + } + } else { + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); + qwt = n * n / (m * m) - pbwt / (pawt * m * m); + if (qwt > 0 && qwt > (pwt * pwt / 4)) { + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; + } else { + *t2w1wt = t1in + 2.0; + } + } else { + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + }; + + /* test if the left or right scattered neutron in the upper and lower limits defined by TOP und BOTTOM walls */ + + void + TEST_UP_DOWN (double t, double vzin, double zin, double vyin, double yin, double length, double linhdin, double louthdin, double linhuin, double louthuin, + double h2din, double h1din, double h2uin, double h1uin, double bhdin, double z0hdin, double a2hdin, double bhuin, double z0huin, double a2huin, + double pbhdin, double pahdin, double pbhuin, double pahuin, double* ylimitd, double* ylimitu, double* ytest) { + if (linhdin == 0 && louthdin == 0) { + *ylimitd + = (-h2din + h1din) / length * (vzin * t + zin) - h1din; /* calculation of the lower y-limit given by a linear bottom wall and the interaction time*/ + } else { + if (linhdin != 0 && louthdin != 0) { + *ylimitd = -bhdin + * sqrt (1 + - ((z0hdin + (vzin * t + zin)) * (z0hdin + (vzin * t + zin))) + / a2hdin); /* calculation of the lower y-limit given by a elliptic bottom wall and the interaction time*/ + } else { + *ylimitd = -sqrt (((vzin * t + zin) - pbhdin) / -pahdin); /* calculation of the lower y-limit given by a parabolic bottom wall and the interaction time*/ + } + } + if (linhuin == 0 && louthuin == 0) { + *ylimitu = (h2uin - h1uin) / length * (vzin * t + zin) + h1uin; /* calculation of the upper y-limit given by a linear top wall and the interaction time*/ + } else { + if (linhuin != 0 && louthuin != 0) { + *ylimitu = bhuin + * sqrt (1 + - ((z0huin + (vzin * t + zin)) * (z0huin + (vzin * t + zin))) + / a2huin); /* calculation of the upper y-limit given by a elliptic top wall and the interaction time*/ + } else { + *ylimitu = sqrt (((vzin * t + zin) - pbhuin) / -pahuin); /* calculation of the upper y-limit given by a parabolic top wall and the interaction time*/ + } + } + *ytest = vyin * t + yin; /* calculation of the y coordinate of the neutron at the interaction time */ + }; + + /* test if the up or down scattered neutron in the right and left limits defined by RIGHT und LEFT walls */ + + void + TEST_LEFT_RIGHT (double t, double vzin, double zin, double vxin, double xin, double length, double linwrin, double loutwrin, double linwlin, double loutwlin, + double w2rin, double w1rin, double w2lin, double w1lin, double bwrin, double z0wrin, double a2wrin, double bwlin, double z0wlin, double a2wlin, + double pbwrin, double pawrin, double pbwlin, double pawlin, double* xlimitr, double* xlimitl, double* xtest) { + if (linwrin == 0 && loutwrin == 0) { + *xlimitr = (-w2rin + w1rin) / length * (vzin * t + zin) - w1rin; + } else { + if (linwrin != 0 && loutwrin != 0) { + *xlimitr = -bwrin * sqrt (1 - ((z0wrin + (vzin * t + zin)) * (z0wrin + (vzin * t + zin))) / a2wrin); + } else { + *xlimitr = -sqrt (((vzin * t + zin) - pbwrin) / -pawrin); + } + } + if (linwlin == 0 && loutwlin == 0) { + *xlimitl = (w2lin - w1lin) / length * (vzin * t + zin) + w1lin; + } else { + if (linwlin != 0 && loutwlin != 0) { + *xlimitl = bwlin * sqrt (1 - ((z0wlin + (vzin * t + zin)) * (z0wlin + (vzin * t + zin))) / a2wlin); + } else { + *xlimitl = sqrt (((vzin * t + zin) - pbwlin) / -pawlin); + } + } + *xtest = vxin * t + xin; + }; + +/* Shared user declarations for all components types 'Slit'. */ + void + slit_print_if (int condition, char* level, char* message, char* component) { + if (condition) + fprintf (stderr, "Slit: %s: %s: %s\n", component, level, message); + } + void + slit_error_if (int condition, char* message, char* component) { + slit_print_if (condition, "Error", message, component); + if (condition) + exit (-1); + } + void + slit_warning_if (int condition, char* message, char* component) { + slit_print_if (condition, "Warning", message, component); + } + +/* Shared user declarations for all components types 'Graphite_Diffuser'. */ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} + +/* Shared user declarations for all components types 'Monitor_nD'. */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.h +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H + +#define MONITOR_ND_LIB_H "$Revision$" +#define MONnD_COORD_NMAX 30 /* max number of variables to record */ + + typedef struct MonitornD_Defines + { + int COORD_NONE ; + int COORD_X ; + int COORD_Y ; + int COORD_Z ; + int COORD_RADIUS; + int COORD_VX ; + int COORD_VY ; + int COORD_VZ ; + int COORD_V ; + int COORD_T ; + int COORD_P ; + int COORD_SX ; + int COORD_SY ; + int COORD_SZ ; + int COORD_KX ; + int COORD_KY ; + int COORD_KZ ; + int COORD_K ; + int COORD_ENERGY; + int COORD_LAMBDA; + int COORD_KXY ; + int COORD_KYZ ; + int COORD_KXZ ; + int COORD_VXY ; + int COORD_VYZ ; + int COORD_VXZ ; + int COORD_HDIV ; + int COORD_VDIV ; + int COORD_ANGLE ; + int COORD_NCOUNT; + int COORD_THETA ; + int COORD_PHI ; + int COORD_USER1 ; + int COORD_USER2 ; + int COORD_USER3 ; + int COORD_USERDOUBLE0 ; + int COORD_USERDOUBLE1 ; + int COORD_USERDOUBLE2 ; + int COORD_USERDOUBLE3 ; + int COORD_USERDOUBLE4 ; + int COORD_USERDOUBLE5 ; + int COORD_USERDOUBLE6 ; + int COORD_USERDOUBLE7 ; + int COORD_USERDOUBLE8 ; + int COORD_USERDOUBLE9 ; + int COORD_USERDOUBLE10 ; + int COORD_USERDOUBLE11 ; + int COORD_USERDOUBLE12 ; + int COORD_USERDOUBLE13 ; + int COORD_USERDOUBLE14 ; + int COORD_USERDOUBLE15 ; + int COORD_XY ; + int COORD_XZ ; + int COORD_YZ ; + int COORD_PIXELID; + + /* token modifiers */ + int COORD_VAR ; /* next token should be a variable or normal option */ + int COORD_MIN ; /* next token is a min value */ + int COORD_MAX ; /* next token is a max value */ + int COORD_DIM ; /* next token is a bin value */ + int COORD_FIL ; /* next token is a filename */ + int COORD_EVNT ; /* next token is a buffer size value */ + int COORD_3HE ; /* next token is a 3He pressure value */ + int COORD_LOG ; /* next variable will be in log scale */ + int COORD_ABS ; /* next variable will be in abs scale */ + int COORD_SIGNAL; /* next variable will be the signal var */ + int COORD_AUTO ; /* set auto limits */ + + char TOKEN_DEL[32]; /* token separators */ + + char SHAPE_SQUARE; /* shape of the monitor */ + char SHAPE_DISK ; + char SHAPE_SPHERE; + char SHAPE_CYLIND; + char SHAPE_BANANA; /* cylinder without top/bottom, on restricted angular area */ + char SHAPE_BOX ; + char SHAPE_PREVIOUS; + char SHAPE_OFF; + + } MonitornD_Defines_type; + + typedef struct MonitornD_Variables + { + double area; + double Sphere_Radius ; + double Cylinder_Height ; + char Flag_With_Borders ; /* 2 means xy borders too */ + char Flag_List ; /* 1 store 1 buffer, 2 is list all, 3 list all+append */ + char Flag_Multiple ; /* 1 when n1D, 0 for 2D */ + char Flag_Verbose ; + int Flag_Shape ; + char Flag_Auto_Limits ; /* get limits from first Buffer */ + char Flag_Absorb ; /* monitor is also a slit */ + char Flag_per_cm2 ; /* flux is per cm2 */ + char Flag_log ; /* log10 of the flux */ + char Flag_parallel ; /* set neutron state back after detection (parallel components) */ + char Flag_Binary_List ; + char Flag_capture ; /* lambda monitor with lambda/lambda(2200m/s = 1.7985 Angs) weightening */ + int Flag_signal ; /* 0:monitor p, else monitor a mean value */ + int Flag_mantid ; /* 0:normal monitor, else do mantid-event specifics */ + int Flag_OFF ; /* Flag to indicate external geometry from OFF file */ + long long OFF_polyidx; /* When intersection is done externally by off_intersect, this gives the + polygon number, i.e. pixel index */ + unsigned long Coord_Number ; /* total number of variables to monitor, plus intensity (0) */ + unsigned long Coord_NumberNoPixel; /* same but without counting PixelID */ + unsigned long Buffer_Block ; /* Buffer size for list or auto limits */ + long long Neutron_Counter ; /* event counter, simulation total counts is mcget_ncount() */ + unsigned long Buffer_Counter ; /* index in Buffer size (for realloc) */ + unsigned long Buffer_Size ; + int Coord_Type[MONnD_COORD_NMAX]; /* type of variable */ + char Coord_Label[MONnD_COORD_NMAX][30]; /* label of variable */ + char Coord_Var[MONnD_COORD_NMAX][30]; /* short id of variable */ + long Coord_Bin[MONnD_COORD_NMAX]; /* bins of variable array */ + long Coord_BinProd[MONnD_COORD_NMAX]; /* product of bins of variable array */ + double Coord_Min[MONnD_COORD_NMAX]; + double Coord_Max[MONnD_COORD_NMAX]; + char Monitor_Label[MONnD_COORD_NMAX*30];/* Label for monitor */ + char Mon_File[128]; /* output file name */ + + /* these don't seem to be used anymore as they are superseded by _particle + double cx, cy, cz; + double cvx, cvy, cvz; + double ckx, cky, ckz; + double csx, csy, csz; + double cEx, cEy, cEz; + double cs1, cs2, ct, cphi, cp; */ + + double He3_pressure; + char Flag_UsePreMonitor ; /* use a previously stored neutron parameter set */ + char UserName1[128]; + char UserName2[128]; + char UserName3[128]; + char UserVariable1[128]; + char UserVariable2[128]; + char UserVariable3[128]; + double UserDoubles[16]; + char option[CHAR_BUF_LENGTH]; + + long long int Nsum; + double psum, p2sum; + double **Mon2D_N; + double **Mon2D_p; + double **Mon2D_p2; + double *Mon2D_Buffer; + unsigned long PixelID; + + double mxmin,mxmax,mymin,mymax,mzmin,mzmax; + double mean_dx, mean_dy, min_x, min_y, max_x, max_y, mean_p; + + char compcurname[128]; + Coords compcurpos; + Rotation compcurrot; + int compcurindex; + } MonitornD_Variables_type; + +/* monitor_nd-lib function prototypes */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *, MonitornD_Variables_type *, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, int); +#pragma acc routine +int Monitor_nD_Trace(MonitornD_Defines_type *, MonitornD_Variables_type *, _class_particle* _particle); +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_Finally(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_McDisplay(MonitornD_Defines_type *, MonitornD_Variables_type *); + +#endif + +/* end of monitor_nd-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H +#error McStas : please import this library with %include "monitor_nd-lib" +#endif + +/* ========================================================================= */ +/* Monitor_nD_Init: this routine is used to parse options */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars, + MCNUM xwidth, + MCNUM yheight, + MCNUM zdepth, + MCNUM xmin, + MCNUM xmax, + MCNUM ymin, + MCNUM ymax, + MCNUM zmin, + MCNUM zmax, + int offflag) + { + long carg = 1; + char *option_copy, *token; + char Flag_New_token = 1; + char Flag_End = 1; + char Flag_All = 0; + char Flag_No = 0; + char Flag_abs = 0; + int Flag_auto = 0; /* -1: all, 1: the current variable */ + int Set_Vars_Coord_Type; + char Set_Vars_Coord_Label[64]; + char Set_Vars_Coord_Var[64]; + char Short_Label[MONnD_COORD_NMAX][64]; + int Set_Coord_Mode; + long i=0, j=0; + double lmin, lmax, XY=0; + long t; + int N_spatial_dims=0; + + t = (long)time(NULL); + +/* initialize DEFS */ +/* Variables to monitor */ + DEFS->COORD_NONE =0; + DEFS->COORD_X =1; + DEFS->COORD_Y =2; + DEFS->COORD_Z =3; + DEFS->COORD_RADIUS =19; + DEFS->COORD_VX =4; + DEFS->COORD_VY =5; + DEFS->COORD_VZ =6; + DEFS->COORD_V =16; + DEFS->COORD_T =7; + DEFS->COORD_P =8; + DEFS->COORD_SX =9; + DEFS->COORD_SY =10; + DEFS->COORD_SZ =11; + DEFS->COORD_KX =12; + DEFS->COORD_KY =13; + DEFS->COORD_KZ =14; + DEFS->COORD_K =15; + DEFS->COORD_ENERGY =17; + DEFS->COORD_LAMBDA =18; + DEFS->COORD_HDIV =20; + DEFS->COORD_VDIV =21; + DEFS->COORD_ANGLE =22; + DEFS->COORD_NCOUNT =23; + DEFS->COORD_THETA =24; + DEFS->COORD_PHI =25; + DEFS->COORD_USER1 =26; + DEFS->COORD_USER2 =27; + DEFS->COORD_USER3 =28; + DEFS->COORD_USERDOUBLE0=39; + DEFS->COORD_USERDOUBLE1=40; + DEFS->COORD_USERDOUBLE2=41; + DEFS->COORD_USERDOUBLE3=42; + DEFS->COORD_USERDOUBLE4=43; + DEFS->COORD_USERDOUBLE5=44; + DEFS->COORD_USERDOUBLE6=45; + DEFS->COORD_USERDOUBLE7=46; + DEFS->COORD_USERDOUBLE8=47; + DEFS->COORD_USERDOUBLE9=48; + DEFS->COORD_USERDOUBLE10=49; + DEFS->COORD_USERDOUBLE11=50; + DEFS->COORD_USERDOUBLE12=51; + DEFS->COORD_USERDOUBLE13=52; + DEFS->COORD_USERDOUBLE14=53; + DEFS->COORD_USERDOUBLE15=54; + DEFS->COORD_XY =37; + DEFS->COORD_YZ =31; + DEFS->COORD_XZ =32; + DEFS->COORD_VXY =30; + DEFS->COORD_VYZ =34; + DEFS->COORD_VXZ =36; + DEFS->COORD_KXY =29; + DEFS->COORD_KYZ =33; + DEFS->COORD_KXZ =35; + DEFS->COORD_PIXELID=38; + +/* token modifiers */ + DEFS->COORD_VAR =0; /* next token should be a variable or normal option */ + DEFS->COORD_MIN =1; /* next token is a min value */ + DEFS->COORD_MAX =2; /* next token is a max value */ + DEFS->COORD_DIM =3; /* next token is a bin value */ + DEFS->COORD_FIL =4; /* next token is a filename */ + DEFS->COORD_EVNT =5; /* next token is a buffer size value */ + DEFS->COORD_3HE =6; /* next token is a 3He pressure value */ + DEFS->COORD_LOG =64; /* next variable will be in log scale */ + DEFS->COORD_ABS =128; /* next variable will be in abs scale */ + DEFS->COORD_SIGNAL =256; /* next variable will be the signal var */ + DEFS->COORD_AUTO =512; /* set auto limits */ + + strcpy(DEFS->TOKEN_DEL, " =,;[](){}:"); /* token separators */ + + DEFS->SHAPE_SQUARE =0; /* shape of the monitor */ + DEFS->SHAPE_DISK =1; + DEFS->SHAPE_SPHERE =2; + DEFS->SHAPE_CYLIND =3; + DEFS->SHAPE_BANANA =4; + DEFS->SHAPE_BOX =5; + DEFS->SHAPE_PREVIOUS=6; + DEFS->SHAPE_OFF=7; + + Vars->Sphere_Radius = 0; + Vars->Cylinder_Height = 0; + Vars->Flag_With_Borders = 0; /* 2 means xy borders too */ + Vars->Flag_List = 0; /* 1=store 1 buffer, 2=list all, 3=re-use buffer */ + Vars->Flag_Multiple = 0; /* 1 when n1D, 0 for 2D */ + Vars->Flag_Verbose = 0; + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + Vars->Flag_Auto_Limits = 0; /* get limits from first Buffer */ + Vars->Flag_Absorb = 0; /* monitor is also a slit */ + Vars->Flag_per_cm2 = 0; /* flux is per cm2 */ + Vars->Flag_log = 0; /* log10 of the flux */ + Vars->Flag_parallel = 0; /* set neutron state back after detection (parallel components) */ + Vars->Flag_Binary_List = 0; /* save list as a binary file (smaller) */ + Vars->Coord_Number = 0; /* total number of variables to monitor, plus intensity (0) */ + Vars->Coord_NumberNoPixel=0; /* same but without counting PixelID */ + + Vars->Buffer_Block = MONND_BUFSIZ; /* Buffer size for list or auto limits */ + Vars->Neutron_Counter = 0; /* event counter, simulation total counts is mcget_ncount() */ + Vars->Buffer_Counter = 0; /* index in Buffer size (for realloc) */ + Vars->Buffer_Size = 0; + Vars->He3_pressure = 0; + Vars->Flag_capture = 0; + Vars->Flag_signal = DEFS->COORD_P; + Vars->Flag_mantid = 0; + Vars->Flag_OFF = offflag; + Vars->OFF_polyidx = -1; + Vars->mean_dx=Vars->mean_dy=0; + Vars->min_x = Vars->max_x =0; + Vars->min_y = Vars->max_y =0; + + Set_Vars_Coord_Type = DEFS->COORD_NONE; + Set_Coord_Mode = DEFS->COORD_VAR; + + /* handle size parameters */ + /* normal use is with xwidth, yheight, zdepth */ + /* if xmin,xmax,ymin,ymax,zmin,zmax are non 0, use them */ + if (fabs(xmin-xmax) == 0) + { Vars->mxmin = -fabs(xwidth)/2; Vars->mxmax = fabs(xwidth)/2; } + else + { if (xmin < xmax) {Vars->mxmin = xmin; Vars->mxmax = xmax;} + else {Vars->mxmin = xmax; Vars->mxmax = xmin;} + } + if (fabs(ymin-ymax) == 0) + { Vars->mymin = -fabs(yheight)/2; Vars->mymax = fabs(yheight)/2; } + else + { if (ymin < ymax) {Vars->mymin = ymin; Vars->mymax = ymax;} + else {Vars->mymin = ymax; Vars->mymax = ymin;} + } + if (fabs(zmin-zmax) == 0) + { Vars->mzmin = -fabs(zdepth)/2; Vars->mzmax = fabs(zdepth)/2; } + else + { if (zmin < zmax) {Vars->mzmin = zmin; Vars->mzmax = zmax; } + else {Vars->mzmin = zmax; Vars->mzmax = zmin; } + } + + if (fabs(Vars->mzmax-Vars->mzmin) == 0) + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + else + Vars->Flag_Shape = DEFS->SHAPE_BOX; + + if (Vars->Flag_OFF) { + N_spatial_dims++; + Vars->Flag_Shape = DEFS->SHAPE_OFF; + } + + /* parse option string */ + + option_copy = (char*)malloc(strlen(Vars->option)+1); + if (option_copy == NULL) + { + fprintf(stderr,"Monitor_nD: %s cannot allocate 'options' copy (%li). Fatal.\n", Vars->compcurname, (long)strlen(Vars->option)); + exit(-1); + } + + if (strlen(Vars->option)) + { + Flag_End = 0; + strcpy(option_copy, Vars->option); + } + + if (strstr(Vars->option, "cm2") || strstr(Vars->option, "cm^2")) Vars->Flag_per_cm2 = 1; + + if (strstr(Vars->option, "binary") || strstr(Vars->option, "float")) + Vars->Flag_Binary_List = 1; + if (strstr(Vars->option, "double")) + Vars->Flag_Binary_List = 2; + + strcpy(Vars->Coord_Label[0],"Intensity"); + strncpy(Vars->Coord_Var[0],"p",30); + Vars->Coord_Type[0] = DEFS->COORD_P; + Vars->Coord_Bin[0] = 1; + Vars->Coord_Min[0] = 0; + Vars->Coord_Max[0] = FLT_MAX; + + /* default file name is comp_name+dateID */ + sprintf(Vars->Mon_File, "%s_%li", Vars->compcurname, t); + + carg = 1; + while((Flag_End == 0) && (carg < 128)) + { + if (Flag_New_token) /* retain previous token or get a new one */ + { + if (carg == 1) token=(char *)strtok(option_copy,DEFS->TOKEN_DEL); + else token=(char *)strtok(NULL,DEFS->TOKEN_DEL); + if (token == NULL) Flag_End=1; + } + Flag_New_token = 1; + if ((token != NULL) && (strlen(token) != 0)) + { + char iskeyword=0; /* left at 0 when variables are processed, 1 for modifiers */ + int old_Mode; + /* change token to lower case */ + for (i=0; iCOORD_MAX) /* max=%i */ + { + if (!Flag_All) + Vars->Coord_Max[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Max[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_MIN) /* min=%i */ + { + if (!Flag_All) + Vars->Coord_Min[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Min[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_MAX; + } + if (Set_Coord_Mode == DEFS->COORD_DIM) /* bins=%i */ + { + if (!Flag_All) + Vars->Coord_Bin[Vars->Coord_Number] = atoi(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Bin[i++] = atoi(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_FIL) /* file=%s */ + { + if (!Flag_No) strncpy(Vars->Mon_File,token,128); + else { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1;} + Set_Coord_Mode = DEFS->COORD_VAR; + } + if (Set_Coord_Mode == DEFS->COORD_EVNT) /* list=%i */ + { + if (!strcmp(token, "all") || Flag_All) Vars->Flag_List = 2; + else { i = (long)ceil(atof(token)); if (i) Vars->Buffer_Block = i; + Vars->Flag_List = 1; } + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_3HE) /* pressure=%g */ + { + Vars->He3_pressure = atof(token); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + + /* now look for general option keywords */ + if (!strcmp(token, "borders")) {Vars->Flag_With_Borders = 1; iskeyword=1; } + if (!strcmp(token, "verbose")) {Vars->Flag_Verbose = 1; iskeyword=1; } + if (!strcmp(token, "log")) {Vars->Flag_log = 1; iskeyword=1; } + if (!strcmp(token, "abs")) {Flag_abs = 1; iskeyword=1; } + if (!strcmp(token, "multiple")) {Vars->Flag_Multiple = 1; iskeyword=1; } + if (!strcmp(token, "list") || !strcmp(token, "events")) { + Vars->Flag_List = 1; Set_Coord_Mode = DEFS->COORD_EVNT; } + if (!strcmp(token, "limits") || !strcmp(token, "min")) + Set_Coord_Mode = DEFS->COORD_MIN; + if (!strcmp(token, "slit") || !strcmp(token, "absorb")) { + Vars->Flag_Absorb = 1; iskeyword=1; } + if (!strcmp(token, "max")) Set_Coord_Mode = DEFS->COORD_MAX; + if (!strcmp(token, "bins") || !strcmp(token, "dim")) Set_Coord_Mode = DEFS->COORD_DIM; + if (!strcmp(token, "file") || !strcmp(token, "filename")) { + Set_Coord_Mode = DEFS->COORD_FIL; + if (Flag_No) { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1; } + } + if (!strcmp(token, "inactivate")) { + Flag_End = 1; Vars->Coord_Number = 0; iskeyword=1; } + if (!strcmp(token, "all")) { Flag_All = 1; iskeyword=1; } + if (!strcmp(token, "sphere")) { Vars->Flag_Shape = DEFS->SHAPE_SPHERE; iskeyword=1; } + if (!strcmp(token, "cylinder")) { Vars->Flag_Shape = DEFS->SHAPE_CYLIND; iskeyword=1; } + if (!strcmp(token, "banana")) { Vars->Flag_Shape = DEFS->SHAPE_BANANA; iskeyword=1; } + if (!strcmp(token, "square")) { Vars->Flag_Shape = DEFS->SHAPE_SQUARE; iskeyword=1; } + if (!strcmp(token, "disk")) { Vars->Flag_Shape = DEFS->SHAPE_DISK; iskeyword=1; } + if (!strcmp(token, "box")) { Vars->Flag_Shape = DEFS->SHAPE_BOX; iskeyword=1; } + if (!strcmp(token, "previous")) { Vars->Flag_Shape = DEFS->SHAPE_PREVIOUS; iskeyword=1; } + if (!strcmp(token, "parallel")){ Vars->Flag_parallel = 1; iskeyword=1; } + if (!strcmp(token, "capture")) { Vars->Flag_capture = 1; iskeyword=1; } + if (!strcmp(token, "auto")) { + #ifndef OPENACC + if (Flag_auto != -1) { + Vars->Flag_Auto_Limits = 1; + if (Flag_All) Flag_auto = -1; + else Flag_auto = 1; + iskeyword=1; Flag_All=0; + } + #endif + } + if (!strcmp(token, "premonitor")) { + Vars->Flag_UsePreMonitor = 1; iskeyword=1; } + if (!strcmp(token, "3He_pressure") || !strcmp(token, "pressure")) { + Vars->He3_pressure = 3; iskeyword=1; } + if (!strcmp(token, "no") || !strcmp(token, "not")) { Flag_No = 1; iskeyword=1; } + if (!strcmp(token, "signal")) Set_Coord_Mode = DEFS->COORD_SIGNAL; + if (!strcmp(token, "mantid")) { Vars->Flag_mantid = 1; iskeyword=1; } + + /* Mode has changed: this was a keyword or value ? */ + if (Set_Coord_Mode != old_Mode) iskeyword=1; + + /* now look for variable names to monitor */ + Set_Vars_Coord_Type = DEFS->COORD_NONE; lmin = 0; lmax = 0; + + if (!strcmp(token, "x")) + { Set_Vars_Coord_Type = DEFS->COORD_X; strcpy(Set_Vars_Coord_Label,"x [m]"); strcpy(Set_Vars_Coord_Var,"x"); + lmin = Vars->mxmin; lmax = Vars->mxmax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mxmin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mxmax; + N_spatial_dims++;} + if (!strcmp(token, "y")) + { Set_Vars_Coord_Type = DEFS->COORD_Y; strcpy(Set_Vars_Coord_Label,"y [m]"); strcpy(Set_Vars_Coord_Var,"y"); + lmin = Vars->mymin; lmax = Vars->mymax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mymin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mymax; + N_spatial_dims++;} + if (!strcmp(token, "z")) + { Set_Vars_Coord_Type = DEFS->COORD_Z; strcpy(Set_Vars_Coord_Label,"z [m]"); strcpy(Set_Vars_Coord_Var,"z"); lmin = Vars->mzmin; lmax = Vars->mzmax; + N_spatial_dims++;} + if (!strcmp(token, "k") || !strcmp(token, "wavevector")) + { Set_Vars_Coord_Type = DEFS->COORD_K; strcpy(Set_Vars_Coord_Label,"|k| [Angs-1]"); strcpy(Set_Vars_Coord_Var,"k"); lmin = 0; lmax = 10; } + if (!strcmp(token, "v")) + { Set_Vars_Coord_Type = DEFS->COORD_V; strcpy(Set_Vars_Coord_Label,"Velocity [m/s]"); strcpy(Set_Vars_Coord_Var,"v"); lmin = 0; lmax = 10000; } + if (!strcmp(token, "t") || !strcmp(token, "time") || !strcmp(token, "tof")) + { Set_Vars_Coord_Type = DEFS->COORD_T; strcpy(Set_Vars_Coord_Label,"TOF [s]"); strcpy(Set_Vars_Coord_Var,"t"); lmin = 0; lmax = 1.0; } + if ((!strcmp(token, "p") || !strcmp(token, "i") || !strcmp(token, "intensity") || !strcmp(token, "flux"))) + { Set_Vars_Coord_Type = DEFS->COORD_P; + strcpy(Set_Vars_Coord_Label,"Intensity"); + strncat(Set_Vars_Coord_Label, " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Set_Vars_Coord_Label, "/cm2", 30); + if (XY > 1 && Vars->Coord_Number) + strncat(Set_Vars_Coord_Label, "/bin", 30); + strncat(Set_Vars_Coord_Label, "]", 30); + strcpy(Set_Vars_Coord_Var,"I"); + lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + } + + if (!strcmp(token, "vx")) + { Set_Vars_Coord_Type = DEFS->COORD_VX; strcpy(Set_Vars_Coord_Label,"vx [m/s]"); strcpy(Set_Vars_Coord_Var,"vx"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vy")) + { Set_Vars_Coord_Type = DEFS->COORD_VY; strcpy(Set_Vars_Coord_Label,"vy [m/s]"); strcpy(Set_Vars_Coord_Var,"vy"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vz")) + { Set_Vars_Coord_Type = DEFS->COORD_VZ; strcpy(Set_Vars_Coord_Label,"vz [m/s]"); strcpy(Set_Vars_Coord_Var,"vz"); lmin = -10000; lmax = 10000; } + if (!strcmp(token, "kx")) + { Set_Vars_Coord_Type = DEFS->COORD_KX; strcpy(Set_Vars_Coord_Label,"kx [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "ky")) + { Set_Vars_Coord_Type = DEFS->COORD_KY; strcpy(Set_Vars_Coord_Label,"ky [Angs-1]"); strcpy(Set_Vars_Coord_Var,"ky"); lmin = -1; lmax = 1; } + if (!strcmp(token, "kz")) + { Set_Vars_Coord_Type = DEFS->COORD_KZ; strcpy(Set_Vars_Coord_Label,"kz [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kz"); lmin = -10; lmax = 10; } + if (!strcmp(token, "sx")) + { Set_Vars_Coord_Type = DEFS->COORD_SX; strcpy(Set_Vars_Coord_Label,"sx [1]"); strcpy(Set_Vars_Coord_Var,"sx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sy")) + { Set_Vars_Coord_Type = DEFS->COORD_SY; strcpy(Set_Vars_Coord_Label,"sy [1]"); strcpy(Set_Vars_Coord_Var,"sy"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sz")) + { Set_Vars_Coord_Type = DEFS->COORD_SZ; strcpy(Set_Vars_Coord_Label,"sz [1]"); strcpy(Set_Vars_Coord_Var,"sz"); lmin = -1; lmax = 1; } + + if (!strcmp(token, "energy") || !strcmp(token, "omega") || !strcmp(token, "e")) + { Set_Vars_Coord_Type = DEFS->COORD_ENERGY; strcpy(Set_Vars_Coord_Label,"Energy [meV]"); strcpy(Set_Vars_Coord_Var,"E"); lmin = 0; lmax = 100; } + if (!strcmp(token, "lambda") || !strcmp(token, "wavelength") || !strcmp(token, "l")) + { Set_Vars_Coord_Type = DEFS->COORD_LAMBDA; strcpy(Set_Vars_Coord_Label,"Wavelength [Angs]"); strcpy(Set_Vars_Coord_Var,"L"); lmin = 0; lmax = 100; } + if (!strcmp(token, "radius") || !strcmp(token, "r")) + { Set_Vars_Coord_Type = DEFS->COORD_RADIUS; strcpy(Set_Vars_Coord_Label,"Radius [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; } + if (!strcmp(token, "xy")) + { Set_Vars_Coord_Type = DEFS->COORD_XY; strcpy(Set_Vars_Coord_Label,"Radius (xy) [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "yz")) + { Set_Vars_Coord_Type = DEFS->COORD_YZ; strcpy(Set_Vars_Coord_Label,"Radius (yz) [m]"); strcpy(Set_Vars_Coord_Var,"yz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "xz")) + { Set_Vars_Coord_Type = DEFS->COORD_XZ; strcpy(Set_Vars_Coord_Label,"Radius (xz) [m]"); strcpy(Set_Vars_Coord_Var,"xz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "vxy")) + { Set_Vars_Coord_Type = DEFS->COORD_VXY; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xy) [m]"); strcpy(Set_Vars_Coord_Var,"Vxy"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxy")) + { Set_Vars_Coord_Type = DEFS->COORD_KXY; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xy) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxy"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vyz")) + { Set_Vars_Coord_Type = DEFS->COORD_VYZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (yz) [m]"); strcpy(Set_Vars_Coord_Var,"Vyz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kyz")) + { Set_Vars_Coord_Type = DEFS->COORD_KYZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (yz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kyz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vxz")) + { Set_Vars_Coord_Type = DEFS->COORD_VXZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xz) [m]"); strcpy(Set_Vars_Coord_Var,"Vxz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxz")) + { Set_Vars_Coord_Type = DEFS->COORD_KXZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "angle") || !strcmp(token, "a")) + { Set_Vars_Coord_Type = DEFS->COORD_ANGLE; strcpy(Set_Vars_Coord_Label,"Angle [deg]"); strcpy(Set_Vars_Coord_Var,"A"); lmin = -50; lmax = 50; N_spatial_dims++;} + if (!strcmp(token, "hdiv")|| !strcmp(token, "divergence") || !strcmp(token, "xdiv") || !strcmp(token, "hd") || !strcmp(token, "dx")) + { Set_Vars_Coord_Type = DEFS->COORD_HDIV; strcpy(Set_Vars_Coord_Label,"Hor. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"hd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "vdiv") || !strcmp(token, "ydiv") || !strcmp(token, "vd") || !strcmp(token, "dy")) + { Set_Vars_Coord_Type = DEFS->COORD_VDIV; strcpy(Set_Vars_Coord_Label,"Vert. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"vd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "theta") || !strcmp(token, "longitude") || !strcmp(token, "th")) + { Set_Vars_Coord_Type = DEFS->COORD_THETA; strcpy(Set_Vars_Coord_Label,"Longitude [deg]"); strcpy(Set_Vars_Coord_Var,"th"); lmin = -180; lmax = 180; N_spatial_dims++;} + if (!strcmp(token, "phi") || !strcmp(token, "latitude") || !strcmp(token, "ph")) + { Set_Vars_Coord_Type = DEFS->COORD_PHI; strcpy(Set_Vars_Coord_Label,"Latitude [deg]"); strcpy(Set_Vars_Coord_Var,"ph"); lmin = -90; lmax = 90; N_spatial_dims++;} + if (!strcmp(token, "ncounts") || !strcmp(token, "n") || !strcmp(token, "neutron")) + { Set_Vars_Coord_Type = DEFS->COORD_NCOUNT; strcpy(Set_Vars_Coord_Label,"Neutron ID [1]"); strcpy(Set_Vars_Coord_Var,"n"); lmin = 0; lmax = mcget_ncount(); if (Flag_auto>0) Flag_auto=0; } + if (!strcmp(token, "id") || !strcmp(token, "pixel")) + { Set_Vars_Coord_Type = DEFS->COORD_PIXELID; + strcpy(Set_Vars_Coord_Label,"Pixel ID [1]"); + strcpy(Set_Vars_Coord_Var,"id"); lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + Vars->Flag_List = 1; } + if (!strcmp(token, "user") || !strcmp(token, "user1") || !strcmp(token, "u1")) + { Set_Vars_Coord_Type = DEFS->COORD_USER1; strncpy(Set_Vars_Coord_Label,Vars->UserName1,30); strcpy(Set_Vars_Coord_Var,"U1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user2") || !strcmp(token, "u2")) + { Set_Vars_Coord_Type = DEFS->COORD_USER2; strncpy(Set_Vars_Coord_Label,Vars->UserName2,30); strcpy(Set_Vars_Coord_Var,"U2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user3") || !strcmp(token, "u3")) + { Set_Vars_Coord_Type = DEFS->COORD_USER3; strncpy(Set_Vars_Coord_Label,Vars->UserName3,30); strcpy(Set_Vars_Coord_Var,"U3"); lmin = -1e10; lmax = 1e10; } + + if (!strcmp(token, "userdouble0") || !strcmp(token, "ud0")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE0; strcpy(Set_Vars_Coord_Label,"ud0 [1]"); strcpy(Set_Vars_Coord_Var,"ud0"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble1") || !strcmp(token, "ud1")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE1; strcpy(Set_Vars_Coord_Label,"ud1 [1]"); strcpy(Set_Vars_Coord_Var,"ud1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble2") || !strcmp(token, "ud2")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE2; strcpy(Set_Vars_Coord_Label,"ud2 [1]"); strcpy(Set_Vars_Coord_Var,"ud2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble3") || !strcmp(token, "ud3")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE3; strcpy(Set_Vars_Coord_Label,"ud3 [1]"); strcpy(Set_Vars_Coord_Var,"ud3"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble4") || !strcmp(token, "ud4")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE4; strcpy(Set_Vars_Coord_Label,"ud4 [1]"); strcpy(Set_Vars_Coord_Var,"ud4"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble5") || !strcmp(token, "ud5")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE5; strcpy(Set_Vars_Coord_Label,"ud5 [1]"); strcpy(Set_Vars_Coord_Var,"ud5"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble6") || !strcmp(token, "ud6")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE6; strcpy(Set_Vars_Coord_Label,"ud6 [1]"); strcpy(Set_Vars_Coord_Var,"ud6"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble7") || !strcmp(token, "ud7")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE7; strcpy(Set_Vars_Coord_Label,"ud7 [1]"); strcpy(Set_Vars_Coord_Var,"ud7"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble8") || !strcmp(token, "ud8")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE8; strcpy(Set_Vars_Coord_Label,"ud8 [1]"); strcpy(Set_Vars_Coord_Var,"ud8"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble9") || !strcmp(token, "ud9")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE9; strcpy(Set_Vars_Coord_Label,"ud9 [1]"); strcpy(Set_Vars_Coord_Var,"ud9"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble10") || !strcmp(token, "ud10")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE10; strcpy(Set_Vars_Coord_Label,"ud10 [1]"); strcpy(Set_Vars_Coord_Var,"ud10"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble11") || !strcmp(token, "ud11")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE11; strcpy(Set_Vars_Coord_Label,"ud11 [1]"); strcpy(Set_Vars_Coord_Var,"ud11"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble12") || !strcmp(token, "ud12")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE12; strcpy(Set_Vars_Coord_Label,"ud12 [1]"); strcpy(Set_Vars_Coord_Var,"ud12"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble13") || !strcmp(token, "ud13")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE13; strcpy(Set_Vars_Coord_Label,"ud13 [1]"); strcpy(Set_Vars_Coord_Var,"ud13"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble14") || !strcmp(token, "ud14")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE14; strcpy(Set_Vars_Coord_Label,"ud14 [1]"); strcpy(Set_Vars_Coord_Var,"ud14"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble15") || !strcmp(token, "ud15")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE15; strcpy(Set_Vars_Coord_Label,"ud15 [1]"); strcpy(Set_Vars_Coord_Var,"ud15"); lmin = -1e10; lmax = 1e10; } + + /* now stores variable keywords detected, if any */ + if (Set_Vars_Coord_Type != DEFS->COORD_NONE) + { + int Coord_Number = Vars->Coord_Number; + if (Vars->Flag_log) { Set_Vars_Coord_Type |= DEFS->COORD_LOG; Vars->Flag_log = 0; } + if (Flag_abs) { Set_Vars_Coord_Type |= DEFS->COORD_ABS; Flag_abs = 0; } + if (Flag_auto != 0) { Set_Vars_Coord_Type |= DEFS->COORD_AUTO; + if (Flag_auto > 0) Flag_auto = 0; } + if (Set_Coord_Mode == DEFS->COORD_SIGNAL) + { + Coord_Number = 0; + Vars->Flag_signal = Set_Vars_Coord_Type; + } + else + { + if (Coord_Number < MONnD_COORD_NMAX) + { Coord_Number++; + Vars->Coord_Number = Coord_Number; + if (Set_Vars_Coord_Type != DEFS->COORD_PIXELID) + Vars->Coord_NumberNoPixel++; + } + else if (Vars->Flag_Verbose) printf("Monitor_nD: %s reached max number of variables (%i).\n", Vars->compcurname, MONnD_COORD_NMAX); + } + Vars->Coord_Type[Coord_Number] = Set_Vars_Coord_Type; + strncpy(Vars->Coord_Label[Coord_Number], Set_Vars_Coord_Label,30); + strncpy(Vars->Coord_Var[Coord_Number], Set_Vars_Coord_Var,30); + if (lmin > lmax) { XY = lmin; lmin=lmax; lmax = XY; } + Vars->Coord_Min[Coord_Number] = lmin; + Vars->Coord_Max[Coord_Number] = lmax; + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT || Set_Vars_Coord_Type == DEFS->COORD_PIXELID || Set_Vars_Coord_Type == DEFS->COORD_SIGNAL) + Vars->Coord_Bin[Coord_Number] = 1; + else + Vars->Coord_Bin[Coord_Number] = 20; + Set_Coord_Mode = DEFS->COORD_VAR; + Flag_All = 0; + Flag_No = 0; + } else { + /* no variable name could be read from options */ + if (!iskeyword) { + if (strcmp(token, "cm2") && strcmp(token, "incoming") + && strcmp(token, "outgoing") && strcmp(token, "cm2") + && strcmp(token, "cm^2") && strcmp(token, "float") + && strcmp(token, "double") && strcmp(token, "binary") + && strcmp(token, "steradian") && Vars->Flag_Verbose) + printf("Monitor_nD: %s: unknown '%s' keyword in 'options'. Ignoring.\n", Vars->compcurname, token); + } + } + carg++; + } /* end if token */ + } /* end while carg */ + free(option_copy); + if (carg == 128) printf("Monitor_nD: %s reached max number of tokens (%i). Skipping.\n", Vars->compcurname, 128); + + if ((Vars->Flag_Shape == DEFS->SHAPE_BOX) && (fabs(Vars->mzmax - Vars->mzmin) == 0)) Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + + if (Vars->Flag_log == 1) Vars->Coord_Type[0] |= DEFS->COORD_LOG; + if (Vars->Coord_Number == 0) + { Vars->Flag_Auto_Limits=0; Vars->Flag_Multiple=0; Vars->Flag_List=0; } + + /* now setting Monitor Name from variable labels */ + strcpy(Vars->Monitor_Label,""); + XY = 1; /* will contain total bin number */ + for (i = 0; i <= Vars->Coord_Number; i++) + { + if (Flag_auto != 0) Vars->Coord_Type[i] |= DEFS->COORD_AUTO; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if ((Set_Vars_Coord_Type == DEFS->COORD_X) + || (Set_Vars_Coord_Type == DEFS->COORD_Y) + || (Set_Vars_Coord_Type == DEFS->COORD_Z)) + strcpy(Short_Label[i],"Position"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_THETA) + || (Set_Vars_Coord_Type == DEFS->COORD_PHI) + || (Set_Vars_Coord_Type == DEFS->COORD_ANGLE)) + strcpy(Short_Label[i],"Angle"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_XY) + || (Set_Vars_Coord_Type == DEFS->COORD_XZ) + || (Set_Vars_Coord_Type == DEFS->COORD_YZ) + || (Set_Vars_Coord_Type == DEFS->COORD_RADIUS)) + strcpy(Short_Label[i],"Radius"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_VX) + || (Set_Vars_Coord_Type == DEFS->COORD_VY) + || (Set_Vars_Coord_Type == DEFS->COORD_VZ) + || (Set_Vars_Coord_Type == DEFS->COORD_V) + || (Set_Vars_Coord_Type == DEFS->COORD_VXY) + || (Set_Vars_Coord_Type == DEFS->COORD_VYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_VXZ)) + strcpy(Short_Label[i],"Velocity"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_KX) + || (Set_Vars_Coord_Type == DEFS->COORD_KY) + || (Set_Vars_Coord_Type == DEFS->COORD_KZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXY) + || (Set_Vars_Coord_Type == DEFS->COORD_KYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXZ) + || (Set_Vars_Coord_Type == DEFS->COORD_K)) + strcpy(Short_Label[i],"Wavevector"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_SX) + || (Set_Vars_Coord_Type == DEFS->COORD_SY) + || (Set_Vars_Coord_Type == DEFS->COORD_SZ)) + strcpy(Short_Label[i],"Spin"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_HDIV) + || (Set_Vars_Coord_Type == DEFS->COORD_VDIV)) + strcpy(Short_Label[i],"Divergence"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) + strcpy(Short_Label[i],"Energy"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) + strcpy(Short_Label[i],"Wavelength"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) + strcpy(Short_Label[i],"Neutron_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) + strcpy(Short_Label[i],"Pixel_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) + strcpy(Short_Label[i],"Time_Of_Flight"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) + strcpy(Short_Label[i],"Intensity"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) + strncpy(Short_Label[i],Vars->UserName1,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) + strncpy(Short_Label[i],Vars->UserName2,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) + strncpy(Short_Label[i],Vars->UserName3,30); + else + strcpy(Short_Label[i],"Unknown"); + + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) + { strcat(Vars->Coord_Label[i]," (abs)"); } + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) + { strcat(Vars->Coord_Label[i]," (log)"); } + + strcat(Vars->Monitor_Label, " "); + strcat(Vars->Monitor_Label, Short_Label[i]); + XY *= Vars->Coord_Bin[i]; + + } /* end for Short_Label */ + + if ((Vars->Coord_Type[0] & (DEFS->COORD_LOG-1)) == DEFS->COORD_P) { + strncat(Vars->Coord_Label[0], " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Vars->Coord_Label[0], "/cm2", 30); + + if (XY > 1 && Vars->Coord_Number) + strncat(Vars->Coord_Label[0], "/bin", 30); + strncat(Vars->Coord_Label[0], "]", 30); + } + + /* update label 'signal per bin' if more than 1 bin */ + if (XY > 1 && Vars->Coord_Number) { + if (Vars->Flag_capture) + printf("Monitor_nD: %s: Using capture flux weightening on %ld bins.\n" + "WARNING Use binned data with caution, and prefer monitor integral value (I,Ierr).\n", Vars->compcurname, (long)XY); + } + + strcat(Vars->Monitor_Label, " Monitor"); + if (Vars->Flag_Shape == DEFS->SHAPE_SQUARE) strcat(Vars->Monitor_Label, " (Square)"); + if (Vars->Flag_Shape == DEFS->SHAPE_DISK) strcat(Vars->Monitor_Label, " (Disk)"); + if (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) strcat(Vars->Monitor_Label, " (Sphere)"); + if (Vars->Flag_Shape == DEFS->SHAPE_CYLIND) strcat(Vars->Monitor_Label, " (Cylinder)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BANANA) strcat(Vars->Monitor_Label, " (Banana)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BOX) strcat(Vars->Monitor_Label, " (Box)"); + if (Vars->Flag_Shape == DEFS->SHAPE_PREVIOUS) strcat(Vars->Monitor_Label, " (on PREVIOUS)"); + if (Vars->Flag_Shape == DEFS->SHAPE_OFF) strcat(Vars->Monitor_Label, " (OFF geometry)"); + if ((Vars->Flag_Shape == DEFS->SHAPE_CYLIND) || (Vars->Flag_Shape == DEFS->SHAPE_BANANA) || (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) || (Vars->Flag_Shape == DEFS->SHAPE_BOX)) + { + if (strstr(Vars->option, "incoming")) + { + Vars->Flag_Shape = abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [in]"); + } + else /* if strstr(Vars->option, "outgoing")) */ + { + Vars->Flag_Shape = -abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [out]"); + } + } + if (Vars->Flag_UsePreMonitor == 1) + { + strcat(Vars->Monitor_Label, " at "); + strncat(Vars->Monitor_Label, Vars->UserName1,30); + } + if (Vars->Flag_log == 1) strcat(Vars->Monitor_Label, " [log] "); + + /* now allocate memory to store variables in TRACE */ + + /* Vars->Coord_Number 0 : intensity or signal + * Vars->Coord_Number 1:n : detector variables */ + + if ((Vars->Coord_NumberNoPixel != 2) && !Vars->Flag_Multiple && !Vars->Flag_List) + { Vars->Flag_Multiple = 1; /* default is n1D */ + if (Vars->Coord_Number != Vars->Coord_NumberNoPixel) Vars->Flag_List = 1; } + + /* list and auto limits case : Vars->Flag_List or Vars->Flag_Auto_Limits + * -> Buffer to flush and suppress after Vars->Flag_Auto_Limits + */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + Vars->Mon2D_Buffer = (double *)malloc((Vars->Coord_Number+1)*Vars->Buffer_Block*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot allocate Vars->Mon2D_Buffer (%zi). No list and auto limits.\n", Vars->compcurname, Vars->Buffer_Block*(Vars->Coord_Number+1)*sizeof(double)); Vars->Flag_List = 0; Vars->Flag_Auto_Limits = 0; } + else + { + for (i=0; i < (Vars->Coord_Number+1)*Vars->Buffer_Block; Vars->Mon2D_Buffer[i++] = (double)0); + } + Vars->Buffer_Size = Vars->Buffer_Block; + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_NumberNoPixel) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, (Vars->Coord_Number)*sizeof(double *)); exit(-1); } + for (i= 1; i <= Vars->Coord_Number; i++) + { + Vars->Mon2D_N[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p2[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[i], i, (Vars->Coord_Bin[i])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[i]; j++ ) + { Vars->Mon2D_N[i-1][j] = (double)0; Vars->Mon2D_p[i-1][j] = (double)0; Vars->Mon2D_p2[i-1][j] = (double)0; } + } + } + } + else /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], (Vars->Coord_Bin[1])*sizeof(double *)); exit(-1); } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + Vars->Mon2D_N[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p2[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], i, (Vars->Coord_Bin[2])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[2]; j++ ) + { Vars->Mon2D_N[i][j] = (double)0; Vars->Mon2D_p[i][j] = (double)0; Vars->Mon2D_p2[i][j] = (double)0; } + } + } + } + else { + Vars->Mon2D_N = Vars->Mon2D_p = Vars->Mon2D_p2 = NULL; + } + /* no Mon2D allocated for + * (Vars->Coord_Number != 2) && !Vars->Flag_Multiple && Vars->Flag_List */ + + Vars->psum = 0; + Vars->p2sum = 0; + Vars->Nsum = 0; + + Vars->area = fabs(Vars->mxmax - Vars->mxmin)*fabs(Vars->mymax - Vars->mymin)*1E4; /* in cm**2 for square and box shapes */ + Vars->Sphere_Radius = fabs(Vars->mxmax - Vars->mxmin)/2; + if ((abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + { + Vars->area = PI*Vars->Sphere_Radius*Vars->Sphere_Radius*1E4; /* disk shapes */ + } + + + if (Vars->area == 0 && abs(Vars->Flag_Shape) != DEFS->SHAPE_PREVIOUS ) { + if (abs(Vars->Flag_Shape) != DEFS->SHAPE_OFF) { + Vars->Coord_Number = 0; + } + } + if (Vars->Coord_Number == 0 && Vars->Flag_Verbose) + printf("Monitor_nD: %s is inactivated (0D)\n", Vars->compcurname); + Vars->Cylinder_Height = fabs(Vars->mymax - Vars->mymin); + + if (Vars->Flag_Verbose) + { + printf("Monitor_nD: %s is a %s.\n", Vars->compcurname, Vars->Monitor_Label); + printf("Monitor_nD: version %s with options=%s\n", MONITOR_ND_LIB_H, Vars->option); + } + + /* compute the product of bin dimensions for PixelID */ + Vars->Coord_BinProd[0]=1; + + for (i = 1; i <= Vars->Coord_Number; i++) { + Vars->Coord_BinProd[i]=Vars->Coord_Bin[i]*Vars->Coord_BinProd[i-1]; + } + + #ifdef USE_NEXUS + + #ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { + #endif + if(nxhandle) { + + /* This section of code writes detector shape information to + entryN/instrument/components/'name'/geometry in the NeXus file */ + + char nexuscomp[CHAR_BUF_LENGTH]; + char pref[5]; + if (Vars->compcurindex-1 < 10) { + sprintf(pref,"000"); + } else if (Vars->compcurindex-1 < 100) { + sprintf(pref,"00"); + } else if (Vars->compcurindex-1 < 1000) { + sprintf(pref,"0"); + } else if (Vars->compcurindex-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,Vars->compcurname); + + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, nexuscomp, "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + char tmp[CHAR_BUF_LENGTH]; + sprintf(tmp,"%g",Vars->Sphere_Radius); + nxprintattr(nxhandle, "radius", tmp); + + sprintf(tmp,"%g",Vars->Cylinder_Height); + nxprintattr(nxhandle, "height", tmp); + + sprintf(tmp,"%g",Vars->mxmin); + nxprintattr(nxhandle, "xmin", tmp); + sprintf(tmp,"%g",Vars->mxmax); + nxprintattr(nxhandle, "xmax", tmp); + + sprintf(tmp,"%g",Vars->mymin); + nxprintattr(nxhandle, "ymin", tmp); + sprintf(tmp,"%g",Vars->mymax); + nxprintattr(nxhandle, "ymax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%i",Vars->Flag_Shape); + nxprintattr(nxhandle, "Shape identifier", tmp); + sprintf(tmp,"%s",Vars->Monitor_Label); + nxprintattr(nxhandle, "Shape string", tmp); + sprintf(tmp,"%s",Vars->option); + nxprintattr(nxhandle, "Option string", tmp); + + NXclosegroup(nxhandle); // Geometry + } else { + printf("Failed to open component NeXus component Geometry group\n"); + } + } else { + printf("Failed to create component NeXus component Geometry group\n"); + } + NXclosegroup(nxhandle); // component + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } + + /* Below code communicates geometry-oriented "BINS" for the detector. */ + char metadata[CHAR_BUF_LENGTH]; + char metadatatmp[CHAR_BUF_LENGTH]; + // Vars for 1D, >3D, OFF + long numbins; + long minbins = 0; + long maxbins = 0; + char binlabel[CHAR_BUF_LENGTH]; + char binvar[CHAR_BUF_LENGTH]; + sprintf(binlabel,"none"); + sprintf(binvar,"none"); + + // Find index of pixel column + int id_index; + for (id_index=0;id_index<30;id_index++) { + if (strcmp(Vars->Coord_Var[id_index], "id") == 0) break; + } + if (id_index == 30) id_index = Vars->Coord_Number-1; // Revert to earlier behavior is id not found + long pix=Vars->Coord_Min[id_index]; + + MCDETECTOR detector; + + /* Init - perhaps better with an init-function in mccode-r? */ + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + + sprintf(detector.filename,"BINS"); + sprintf(detector.component,"%s",Vars->compcurname); + sprintf(detector.nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,detector.component); + sprintf(detector.format,"pixels"); + + if(!Vars->Flag_OFF) { + + sprintf(metadata,"id=%ld + %ld pixels: ",(long)Vars->Coord_Min[id_index],(long)Vars->Coord_BinProd[Vars->Coord_Number]); + for (i=1; iCoord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + } + sprintf(metadatatmp,"%s %s (%ld bins)",metadata,Vars->Coord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + numbins = Vars->Coord_BinProd[Vars->Coord_Number]; + if (N_spatial_dims==1) { + minbins=Vars->Coord_Min[1]; + maxbins=Vars->Coord_Max[1]; + sprintf(binlabel,"%s",Vars->Coord_Label[1]); + sprintf(binvar,"%s",Vars->Coord_Var[1]); + } else if (N_spatial_dims>3) { + minbins=1; + maxbins=Vars->Coord_BinProd[Vars->Coord_Number]; + sprintf(binlabel,"More than 3 dimensions"); + sprintf(binvar,"wrapped_variables_4plus_dims"); + N_spatial_dims=1; + } + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } else { + numbins = Vars->Flag_OFF; + minbins=1; + maxbins=Vars->Flag_OFF; + sprintf(binlabel,"OFF pixel index"); + sprintf(binvar,"OFF"); + N_spatial_dims=1; + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } + + long k,l,m; + if (N_spatial_dims==1) { // 1D case or ND + detector.m=numbins; + detector.n=1; + detector.p=1; + detector.rank=1; + detector.p0=(double *)calloc(numbins, sizeof(double)); + detector.p1=(double *)calloc(numbins, sizeof(double)); + detector.p2=(double *)calloc(numbins, sizeof(double)); + if (Vars->Flag_Verbose) printf("1D case %ld \n",Vars->Coord_Bin[1]); + for (k=0; kFlag_Verbose) printf("Assigning pixel no [%ld] = %ld\n",k,pix); + detector.p1[k]=pix; + pix++; + } + mcdetector_out_1D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==2) { // 2D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=1; + detector.rank=2; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("2D case %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld] = %ld\n",l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]+l]=pix; + pix++; + } + } + mcdetector_out_2D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==3) { // 3D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=Vars->Coord_Bin[3];; + detector.rank=3; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + sprintf(detector.zlabel,"%s",Vars->Coord_Label[3]); + sprintf(detector.zvar,"%s",Vars->Coord_Var[3]); + detector.zmin=Vars->Coord_Min[3]; + detector.zmax=Vars->Coord_Max[3]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("3D case %ld x %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2],Vars->Coord_Bin[3]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + for (m=0; mCoord_Bin[3]; m++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld,%ld] = %ld\n",m,l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]*Vars->Coord_Bin[3] + l*Vars->Coord_Bin[3] + m]=pix; + pix++; + } + } + } + mcdetector_out_3D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } + } // nxhandle available + #ifdef USE_MPI + } // Master only + #endif + + #endif // USE_NEXUS + } /* end Monitor_nD_Init */ + +/* ========================================================================= */ +/* Monitor_nD_Trace: this routine is used to monitor one propagating neutron */ +/* return values: 0=neutron was absorbed, -1=neutron was outside bounds, 1=neutron was measured*/ +/* ========================================================================= */ + +int Monitor_nD_Trace(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars, _class_particle* _particle) +{ + + double XY=0, pp=0; + long i =0, j =0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char While_End =0; + long While_Buffer=0; + char Set_Vars_Coord_Type = DEFS->COORD_NONE; + + /* the logic below depends mainly on: + Flag_List: 1=store 1 buffer, 2=list all, 3=re-use buffer + Flag_Auto_Limits: 0 (no auto limits/list), 1 (store events into Buffer), 2 (re-emit store events) + */ + + /* Vars->Flag_Auto_Limits=1: buffer full, we read the Buffer, and determine min and max bounds */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 1) && (Vars->Coord_Number > 0)) + { + /* auto limits case : get limits in Buffer for each variable */ + /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + for (i = 1; i <= Vars->Coord_Number; i++) + { + if (Vars->Coord_Type[i] & DEFS->COORD_AUTO) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step (read Buffer and generate new events to store in histograms) */ + } /* end if Flag_Auto_Limits == 1 */ + +#ifndef OPENACC + /* manage realloc for 'list all' if Buffer size exceeded: flush Buffer to file */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List >= 2)) + { + if (Vars->Buffer_Size >= 1000000 || Vars->Flag_List == 3) + { /* save current (possibly append) and re-use Buffer */ + + Monitor_nD_Save(DEFS, Vars); + Vars->Flag_List = 3; + Vars->Buffer_Block = Vars->Buffer_Size; + Vars->Buffer_Counter = 0; + Vars->Neutron_Counter = 0; + } + else + { + Vars->Mon2D_Buffer = (double *)realloc(Vars->Mon2D_Buffer, (Vars->Coord_Number+1)*(2*Vars->Buffer_Block)*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot reallocate Vars->Mon2D_Buffer[%li] (%zi). Skipping.\n", Vars->compcurname, i, (long int)(2*Vars->Buffer_Block)*sizeof(double)); Vars->Flag_List = 1; } + else { + Vars->Buffer_Block = 2*Vars->Buffer_Block; + Vars->Buffer_Size = Vars->Buffer_Block; + } + } + } /* end if Buffer realloc */ +#endif + + char outsidebounds=0; + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) or passing neutron */ + if ((Vars->Flag_Auto_Limits == 2) && (Vars->Coord_Number > 0)) + { /* Vars->Flag_Auto_Limits == 2: read back from Buffer (Buffer is filled or auto limits have been computed) */ + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loop (While_Buffer) */ + /* auto limits case : scan Buffer within limits and store in Mon2D */ + Coord[0] = pp = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) continue; + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + if (Vars->Coord_NumberNoPixel < Vars->Coord_Number) /* there is a Pixel variable */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char flag_outside=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!flag_outside) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + if (!Vars->Flag_List) /* free Buffer not needed anymore (no list to output) */ + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, p2) */ + free(Vars->Mon2D_Buffer); Vars->Mon2D_Buffer = NULL; + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + } /* if Vars->Flag_Auto_Limits == 2 */ + + if (Vars->Flag_Auto_Limits != 2 || !Vars->Coord_Number) /* Vars->Flag_Auto_Limits == 0 (no auto limits/list) or 1 (store events into Buffer) */ + { + /* automatically compute area and steradian solid angle when in AUTO mode */ + /* compute the steradian solid angle incoming on the monitor */ + double v; + double tmp; + v=sqrt(_particle->vx*_particle->vx + _particle->vy*_particle->vy + _particle->vz*_particle->vz); + tmp=_particle->x; + if (Vars->min_x > _particle->x){ + #pragma acc atomic write + Vars->min_x = tmp; + } + if (Vars->max_x < _particle->x){ + #pragma acc atomic write + Vars->max_x = tmp; + } + tmp=_particle->y; + if (Vars->min_y > _particle->y){ + #pragma acc atomic write + Vars->min_y = tmp; + } + if (Vars->max_y < _particle->y){ + tmp=_particle->y; + #pragma acc atomic write + Vars->max_y = tmp; + } + + #pragma acc atomic + Vars->mean_p = Vars->mean_p + _particle->p; + if (v) { + tmp=_particle->p*fabs(_particle->vx/v); + #pragma acc atomic + Vars->mean_dx = Vars->mean_dx + tmp; //_particle->p*fabs(_particle->vx/v); + tmp=_particle->p*fabs(_particle->vy/v); + #pragma acc atomic + Vars->mean_dy = Vars->mean_dy + tmp; //_particle->p*fabs(_particle->vy/v); + } + + for (i = 0; i <= Vars->Coord_Number; i++) + { /* handle current neutron : last while */ + XY = 0; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + /* get values for variables to monitor */ + if (Set_Vars_Coord_Type == DEFS->COORD_X) XY = _particle->x; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Y) XY = _particle->y; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Z) XY = _particle->z; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VX) XY = _particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VY) XY = _particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VZ) XY = _particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KX) XY = V2K*_particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KY) XY = V2K*_particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KZ) XY = V2K*_particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SX) XY = _particle->sx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SY) XY = _particle->sy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SZ) XY = _particle->sz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) XY = _particle->t; + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) XY = _particle->p; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE0) XY = Vars->UserDoubles[0]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE1) XY = Vars->UserDoubles[1]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE2) XY = Vars->UserDoubles[2]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE3) XY = Vars->UserDoubles[3]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE4) XY = Vars->UserDoubles[4]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE5) XY = Vars->UserDoubles[5]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE6) XY = Vars->UserDoubles[6]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE7) XY = Vars->UserDoubles[7]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE8) XY = Vars->UserDoubles[8]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE9) XY = Vars->UserDoubles[9]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE10) XY = Vars->UserDoubles[10]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE11) XY = Vars->UserDoubles[11]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE12) XY = Vars->UserDoubles[12]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE13) XY = Vars->UserDoubles[13]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE14) XY = Vars->UserDoubles[14]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE15) XY = Vars->UserDoubles[15]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV) XY = RAD2DEG*atan2(_particle->vx,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VDIV) XY = RAD2DEG*atan2(_particle->vy,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_V) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XY) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y)*(_particle->x > 0 ? 1 : -1); + else + if (Set_Vars_Coord_Type == DEFS->COORD_YZ) XY = sqrt(_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XZ) + XY = sqrt(_particle->x*_particle->x+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXY) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXZ) XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VYZ) XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_K) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXY) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXZ) { XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KYZ) { XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) { XY = _particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz; XY *= VS2E; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; if (XY != 0) XY = 2*PI/XY; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) XY = _particle->_uid; + else + if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + if (_particle->vz != 0) + XY = RAD2DEG*atan2(XY,_particle->vz)*(_particle->x > 0 ? 1 : -1); + else XY = 0; + } + else + if (Set_Vars_Coord_Type == DEFS->COORD_THETA) { if (_particle->z != 0) XY = RAD2DEG*atan2(_particle->x,_particle->z); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PHI) { double rr=sqrt(_particle->x*_particle->x+ _particle->y*_particle->y + _particle->z*_particle->z); if (rr != 0) XY = RAD2DEG*asin(_particle->y/rr); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) {int fail; XY = particle_getvar(_particle,Vars->UserVariable1,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) {int fail; XY = particle_getvar(_particle,Vars->UserVariable2,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) {int fail; XY = particle_getvar(_particle,Vars->UserVariable3,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID && !Vars->Flag_Auto_Limits) { + /* compute the PixelID from previous coordinates + the PixelID is the product of Coord_Index[i] in the detector geometry + pixelID = sum( Coord_Index[j]*prod(Vars->Coord_Bin[1:(j-1)]) ) + + this does not apply when we store events in the buffer as Coord_Index + is not set. Then the pixelID will be re-computed during SAVE. + */ + char flag_outside=0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] <= 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; XY=0; break; + } + XY += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (Vars->Flag_mantid && Vars->Flag_OFF && Vars->OFF_polyidx >=0) XY=Vars->OFF_polyidx; + if (!flag_outside) XY += Vars->Coord_Min[i]; + } + + /* handle 'abs' and 'log' keywords */ + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) XY=fabs(XY); + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) /* compute log of variable if requested */ + { if (XY > 0) XY = log(XY)/log(10); + else XY = -100; } + + Coord[i] = XY; Coord_Index[i] = 0; + if (i == 0) { pp = XY; Coord_Index[i] = 0; } + else { + /* check bounds for variables which have no automatic limits */ + if ((!Vars->Flag_Auto_Limits || !(Vars->Coord_Type[i] & DEFS->COORD_AUTO)) && Vars->Coord_Bin[i]>1) + { /* compute index in histograms for each variable to monitor */ + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + } + //if (0 > Coord_Index[i] || Coord_Index[i] >= Vars->Coord_Bin[i]) + // outsidebounds=1; + } /* else will get Index later from Buffer when Flag_Auto_Limits == 2 */ + } + + } /* end for i */ + While_End = 1; + }/* end else if Vars->Flag_Auto_Limits == 2 */ + + /* ====================================================================== */ + /* store n1d/2d neutron from Buffer (Auto_Limits == 2) or current neutron in while */ + if (Vars->Flag_Auto_Limits != 1) /* not when storing auto limits Buffer */ + { + /* apply per cm2 */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ( Vars->Coord_NumberNoPixel == 2 && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i][j] = Vars->Mon2D_N[i][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i][j] = Vars->Mon2D_p[i][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i][j] = Vars->Mon2D_p2[i][j] + p2; + } + } else { + outsidebounds=1; + } + } else { + /* 1D and n1D case : Vars->Flag_Multiple */ + /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + + for (i= 1; i <= Vars->Coord_Number; i++) { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i-1][j] = Vars->Mon2D_N[i-1][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i-1][j] = Vars->Mon2D_p[i-1][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i-1][j] = Vars->Mon2D_p2[i-1][j] + p2; + } + } + } else { + outsidebounds=1; + break; + } + } + } + } /* end (Vars->Flag_Auto_Limits != 1) */ + + if (Vars->Flag_Auto_Limits != 2 && !outsidebounds) /* not when reading auto limits Buffer */ + { /* now store Coord into Buffer (no index needed) if necessary (list or auto limits) */ + if ((Vars->Buffer_Counter < Vars->Buffer_Block) && ((Vars->Flag_List) || (Vars->Flag_Auto_Limits == 1))) + { + for (i = 0; i <= Vars->Coord_Number; i++) + { + // This is is where the list is appended. How to make this "atomic"? + #pragma acc atomic write + Vars->Mon2D_Buffer[i + Vars->Buffer_Counter*(Vars->Coord_Number+1)] = Coord[i]; + } + #pragma acc atomic update + Vars->Buffer_Counter = Vars->Buffer_Counter + 1; + if (Vars->Flag_Verbose && (Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List == 1)) + printf("Monitor_nD: %s %li neutrons stored in List.\n", Vars->compcurname, Vars->Buffer_Counter); + } + } /* end (Vars->Flag_Auto_Limits != 2) */ + + } /* end while */ + #pragma acc atomic + Vars->Nsum = Vars->Nsum + 1; + #pragma acc atomic + Vars->psum = Vars->psum + pp; + #pragma acc atomic + Vars->p2sum = Vars->p2sum + pp*pp; + + /*determine return value: 1:neutron was in bounds and measured, -1: outside bounds, 0: outside bounds, should be absorbed.*/ + if(outsidebounds){ + if(Vars->Flag_Absorb){ + return 0; + }else{ + return -1; + } + } else { + /* For the OPENACC list buffer an atomic capture/update of the + updated Neutron_counter - updated below under list mode + Only need to be updated when inside bounds. */ + #pragma acc atomic update + Vars->Neutron_Counter++; + } + return 1; +} /* end Monitor_nD_Trace */ + +/* ========================================================================= */ +/* Monitor_nD_Save: this routine is used to save data files */ +/* ========================================================================= */ + +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars) + { + char *fname; + long i,j; + double *p0m = NULL; + double *p1m = NULL; + double *p2m = NULL; + char Coord_X_Label[CHAR_BUF_LENGTH]; + double min1d, max1d; + double min2d, max2d; + char While_End = 0; + long While_Buffer = 0; + double XY=0, pp=0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char label[CHAR_BUF_LENGTH]; + + MCDETECTOR detector; + strcpy(detector.options,Vars->option); + if (Vars->Flag_Verbose && Vars->Flag_per_cm2) { + printf("Monitor_nD: %s: active flat detector area is %g [cm^2], total area is %g [cm^2]\n", + Vars->compcurname, (Vars->max_x-Vars->min_x) + *(Vars->max_y-Vars->min_y)*1E4, Vars->area); + printf("Monitor_nD: %s: beam solid angle is %g [st] (%g x %g [deg^2])\n", + Vars->compcurname, + 2*fabs(2*atan2(Vars->mean_dx,Vars->mean_p) + *sin(2*atan2(Vars->mean_dy,Vars->mean_p)/2)), + atan2(Vars->mean_dx,Vars->mean_p)*RAD2DEG, + atan2(Vars->mean_dy,Vars->mean_p)*RAD2DEG); + } + + /* check Buffer flush when end of simulation reached */ + if ((Vars->Buffer_Counter <= Vars->Buffer_Block) && Vars->Flag_Auto_Limits && Vars->Mon2D_Buffer && Vars->Buffer_Counter) + { + /* Get Auto Limits */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + + for (i = 1; i <= Vars->Coord_Number; i++) + { + if ((Vars->Coord_Type[i] & DEFS->COORD_AUTO) && Vars->Coord_Bin[i] > 1) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g in %li bins\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i], Vars->Coord_Bin[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step */ + Vars->Buffer_Block = Vars->Buffer_Counter; + + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) */ + /* simulation ended before Buffer was filled. Limits have to be computed, and stored events must be sent into histograms */ + + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loops (While_Buffer) */ + Coord[0] = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + /* auto limits case : scan Buffer within limits and store in Mon2D */ + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) Coord_Index[i] = 0; + else { + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char outsidebounds=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + outsidebounds=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!outsidebounds) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + While_End = 1; + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + + /* store n1d/2d section from Buffer */ + + pp = Coord[0]; + /* apply per cm2 or per st */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if (!Vars->Flag_Multiple && Vars->Coord_NumberNoPixel == 2) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + Vars->Mon2D_N[i][j]++; + Vars->Mon2D_p[i][j] += pp; + Vars->Mon2D_p2[i][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) pp=0; + } + else + /* 1D and n1D case : Vars->Flag_Multiple */ + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + for (i= 1; i <= Vars->Coord_Number; i++) + { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) + { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + Vars->Mon2D_N[i-1][j]++; + Vars->Mon2D_p[i-1][j] += pp; + Vars->Mon2D_p2[i-1][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) { + pp=0; break; + } + } + } /* end store 2D/1D */ + + } /* end while */ + } /* end Force Get Limits */ + + /* write output files (sent to file as p[i*n + j] vectors) */ + if (Vars->Coord_Number == 0) + { + double Nsum; + double psum, p2sum; + Nsum = Vars->Nsum; + psum = Vars->psum; + p2sum= Vars->p2sum; + if (Vars->Flag_signal != DEFS->COORD_P && Nsum > 0) + { psum /=Nsum; p2sum /= Nsum*Nsum; } + /* DETECTOR_OUT_0D(Vars->Monitor_Label, Vars->Nsum, Vars->psum, Vars->p2sum); */ + detector = mcdetector_out_0D(Vars->Monitor_Label, Nsum, psum, p2sum, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + else + if (strlen(Vars->Mon_File) > 0) + { + fname = (char*)malloc(strlen(Vars->Mon_File)+10*Vars->Coord_Number); + if (Vars->Flag_List && Vars->Mon2D_Buffer) /* List: DETECTOR_OUT_2D */ + { + + if (Vars->Flag_List >= 2) Vars->Buffer_Size = Vars->Neutron_Counter; + if (Vars->Buffer_Size >= Vars->Neutron_Counter) + Vars->Buffer_Size = Vars->Neutron_Counter; + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) strcat(fname, "_list"); + + strcpy(Coord_X_Label,""); + for (i= 0; i <= Vars->Coord_Number; i++) + { + strcat(Coord_X_Label, Vars->Coord_Var[i]); + strcat(Coord_X_Label, " "); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i]); } + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s List (%lix%li).\n", Vars->compcurname, fname,(long int)Vars->Neutron_Counter,Vars->Coord_Number); + + /* handle the type of list output */ + strcpy(label, Vars->Monitor_Label); + + detector = mcdetector_out_list( + label, "List of neutron events", Coord_X_Label, + -Vars->Buffer_Size, Vars->Coord_Number+1, + Vars->Mon2D_Buffer, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot, Vars->option,Vars->compcurindex); + } + if (Vars->Flag_Multiple) /* n1D: DETECTOR_OUT_1D */ + { + for (i= 0; i < Vars->Coord_Number; i++) + { + + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i+1]); } + sprintf(Coord_X_Label, "%s monitor", Vars->Coord_Label[i+1]); + strcpy(label, Coord_X_Label); + if (Vars->Coord_Bin[i+1] > 0) { /* 1D monitor */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 1D (%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[i+1]); + min1d = Vars->Coord_Min[i+1]; + max1d = Vars->Coord_Max[i+1]; + if (min1d == max1d) max1d = min1d+1e-6; + p1m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + if (p2m == NULL) /* use Raw Buffer line output */ + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for output. Using raw data.\n", Vars->compcurname); + if (p1m != NULL) free(p1m); + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],Vars->Mon2D_p[i],Vars->Mon2D_p2[i], + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } /* if (p2m == NULL) */ + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (j=0; j < Vars->Coord_Bin[i+1]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j] > 0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } /* if */ + + for (j=0; j < Vars->Coord_Bin[i+1]; j++) + { + p1m[j] = Vars->Mon2D_p[i][j]; + p2m[j] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && Vars->Mon2D_N[i][j] > 0) + { /* normalize mean signal to the number of events */ + p1m[j] /= Vars->Mon2D_N[i][j]; + p2m[j] /= Vars->Mon2D_N[i][j]*Vars->Mon2D_N[i][j]; + } + if (Vars->Flag_log != 0) + { + if ((p1m[j] > 0) && (p2m[j] > 0)) + { + p2m[j] /= p1m[j]*p1m[j]; + p1m[j] = log(p1m[j])/log(10); + } + else + { + p1m[j] = XY; + p2m[j] = 0; + } + } + } /* for */ + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + + } /* else */ + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p1m != NULL) free(p1m); p1m=NULL; + if (p2m != NULL) free(p2m); p2m=NULL; + */ + } else { /* 0d monitor */ + detector = mcdetector_out_0D(label, Vars->Mon2D_p[i][0], Vars->Mon2D_p2[i][0], Vars->Mon2D_N[i][0], Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + + } /* for */ + } /* if 1D */ + else + if (Vars->Coord_NumberNoPixel == 2) /* 2D: DETECTOR_OUT_2D */ + { + strcpy(fname,Vars->Mon_File); + + p0m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p1m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + if (p2m == NULL) + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for 2D array (%zi). Skipping.\n", Vars->compcurname, 3*Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + */ + } + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (i= 0; i < Vars->Coord_Bin[1]; i++) + for (j= 0; j < Vars->Coord_Bin[2]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j]>0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + for (j= 0; j < Vars->Coord_Bin[2]; j++) + { + long index; + index = j + i*Vars->Coord_Bin[2]; + p0m[index] = Vars->Mon2D_N[i][j]; + p1m[index] = Vars->Mon2D_p[i][j]; + p2m[index] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && p0m[index] > 0) + { + p1m[index] /= p0m[index]; + p2m[index] /= p0m[index]*p0m[index]; + } + + if (Vars->Flag_log != 0) + { + if ((p1m[index] > 0) && (p2m[index] > 0)) + { + p2m[index] /= (p1m[index]*p1m[index]); + p1m[index] = log(p1m[index])/log(10); + + } + else + { + p1m[index] = XY; + p2m[index] = 0; + } + } + } + } + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[1]); + strcat(fname, "_"); strcat(fname, Vars->Coord_Var[2]); } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 2D (%lix%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[1], Vars->Coord_Bin[2]); + + min1d = Vars->Coord_Min[1]; + max1d = Vars->Coord_Max[1]; + if (min1d == max1d) max1d = min1d+1e-6; + min2d = Vars->Coord_Min[2]; + max2d = Vars->Coord_Max[2]; + if (min2d == max2d) max2d = min2d+1e-6; + strcpy(label, Vars->Monitor_Label); + if (Vars->Coord_Bin[1]*Vars->Coord_Bin[2] > 1 + && Vars->Flag_signal == DEFS->COORD_P) + strcat(label, " per bin"); + if (Vars->Flag_List) { + detector = mcdetector_out_2D_list( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->option,Vars->compcurindex); + } else { + detector = mcdetector_out_2D( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + if (p2m != NULL) free(p2m); + */ + } + } + free(fname); + } + return(detector); + } /* end Monitor_nD_Save */ + +/* ========================================================================= */ +/* Monitor_nD_Finally: this routine is used to free memory */ +/* ========================================================================= */ + +void Monitor_nD_Finally(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + int i; + + /* Now Free memory Mon2D.. */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Mon2D_Buffer != NULL) free(Vars->Mon2D_Buffer); + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_Number) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + for (i= 0; i < Vars->Coord_Number; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + } /* end Monitor_nD_Finally */ + +/* ========================================================================= */ +/* Monitor_nD_McDisplay: this routine is used to display component */ +/* ========================================================================= */ + +void Monitor_nD_McDisplay(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + double radius, h; + double xmin; + double xmax; + double ymin; + double ymax; + double zmin; + double zmax; + int i; + double hdiv_min=-180, hdiv_max=180, vdiv_min=-90, vdiv_max=90; + char restricted = 0; + + radius = Vars->Sphere_Radius; + h = Vars->Cylinder_Height; + xmin = Vars->mxmin; + xmax = Vars->mxmax; + ymin = Vars->mymin; + ymax = Vars->mymax; + zmin = Vars->mzmin; + zmax = Vars->mzmax; + + /* determine if there are angular limits set at start (no auto) in coord_types + * cylinder/banana: look for hdiv + * sphere: look for angle, radius (->atan2(val,radius)), hdiv, vdiv + * this activates a 'restricted' flag, to draw a region as blades on cylinder/sphere + */ + for (i= 0; i <= Vars->Coord_Number; i++) + { + int Set_Vars_Coord_Type; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV || Set_Vars_Coord_Type == DEFS->COORD_THETA) + { hdiv_min = Vars->Coord_Min[i]; hdiv_max = Vars->Coord_Max[i]; restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_VDIV || Set_Vars_Coord_Type == DEFS->COORD_PHI) + { vdiv_min = Vars->Coord_Min[i]; vdiv_max = Vars->Coord_Max[i];restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { hdiv_min = vdiv_min = Vars->Coord_Min[i]; + hdiv_max = vdiv_max = Vars->Coord_Max[i]; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + { double angle; + angle = RAD2DEG*atan2(Vars->Coord_Max[i], radius); + hdiv_min = vdiv_min = angle; + hdiv_max = vdiv_max = angle; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_Y && abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE) + { + vdiv_min = atan2(ymin,radius)*RAD2DEG; + vdiv_max = atan2(ymax,radius)*RAD2DEG; + restricted = 1; + } + } + /* full sphere */ + if ((!restricted && (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + || abs(Vars->Flag_Shape) == DEFS->SHAPE_PREVIOUS) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + mcdis_circle("xz",0,0,0,radius); + mcdis_circle("yz",0,0,0,radius); + } + /* banana/cylinder/sphere portion */ + else + if (restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE))) + { + int NH=24, NV=24; + int ih, iv; + double width, height; + int issphere; + issphere = (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE); + width = (hdiv_max-hdiv_min)/NH; + if (!issphere) { + NV=1; /* cylinder has vertical axis */ + } + height= (vdiv_max-vdiv_min)/NV; + + /* check width and height of elements (sphere) to make sure the nb + of plates remains limited */ + if (width < 10 && NH > 1) { width = 10; NH=(hdiv_max-hdiv_min)/width; width=(hdiv_max-hdiv_min)/NH; } + if (height < 10 && NV > 1) { height = 10; NV=(vdiv_max-vdiv_min)/height; height= (vdiv_max-vdiv_min)/NV; } + + mcdis_magnify("xyz"); + for(ih = 0; ih < NH; ih++) + for(iv = 0; iv < NV; iv++) + { + double theta0, phi0, theta1, phi1; /* angles in spherical coordinates */ + double x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3; /* vertices at plate edges */ + phi0 = (hdiv_min+ width*ih-90)*DEG2RAD; /* in xz plane */ + phi1 = (hdiv_min+ width*(ih+1)-90)*DEG2RAD; + if (issphere) + { + theta0= (vdiv_min+height* iv + 90) *DEG2RAD; /* in vertical plane */ + theta1= (vdiv_min+height*(iv+1) + 90)*DEG2RAD; + + y0 = -radius*cos(theta0); /* z with Z vertical */ + y1 = -radius*cos(theta1); + if (y0 < ymin) y0=ymin; + if (y0 > ymax) y0=ymax; + if (y1 < ymin) y1=ymin; + if (y1 > ymax) y1=ymax; + } else { + y0 = ymin; + y1 = ymax; + theta0=theta1=90*DEG2RAD; + } + + x0 = radius*sin(theta0)*cos(phi0); /* x with Z vertical */ + z0 =-radius*sin(theta0)*sin(phi0); /* y with Z vertical */ + x1 = radius*sin(theta1)*cos(phi0); + z1 =-radius*sin(theta1)*sin(phi0); + x2 = radius*sin(theta1)*cos(phi1); + z2 =-radius*sin(theta1)*sin(phi1); + x3 = radius*sin(theta0)*cos(phi1); + z3 =-radius*sin(theta0)*sin(phi1); + y2 = y1; y3 = y0; + + mcdis_multiline(5, + x0,y0,z0, + x1,y1,z1, + x2,y2,z2, + x3,y3,z3, + x0,y0,z0); + } + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dt, dy; + dt = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_BANANA_DET: %g, %g, %g, %g, %g, %li, %li, %llu\n", radius, + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* disk (circle) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + } + /* rectangle (square) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_SQUARE) + { + mcdis_magnify("xy"); + mcdis_multiline(5, (double)xmin, (double)ymin, 0.0, + (double)xmax, (double)ymin, 0.0, + (double)xmax, (double)ymax, 0.0, + (double)xmin, (double)ymax, 0.0, + (double)xmin, (double)ymin, 0.0); + + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dx, dy; + dx = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_RECTANGULAR_DET: %g, %g, %g, %g, %li, %li, %llu\n", + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* full cylinder/banana */ + else + if (!restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA))) + { + mcdis_magnify("xyz"); + mcdis_circle("xz", 0, h/2.0, 0, radius); + mcdis_circle("xz", 0, -h/2.0, 0, radius); + mcdis_line(-radius, -h/2.0, 0, -radius, +h/2.0, 0); + mcdis_line(+radius, -h/2.0, 0, +radius, +h/2.0, 0); + mcdis_line(0, -h/2.0, -radius, 0, +h/2.0, -radius); + mcdis_line(0, -h/2.0, +radius, 0, +h/2.0, +radius); + } + else + /* box */ + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_BOX) + { + mcdis_magnify("xyz"); + mcdis_multiline(5, xmin, ymin, zmin, + xmax, ymin, zmin, + xmax, ymax, zmin, + xmin, ymax, zmin, + xmin, ymin, zmin); + mcdis_multiline(5, xmin, ymin, zmax, + xmax, ymin, zmax, + xmax, ymax, zmax, + xmin, ymax, zmax, + xmin, ymin, zmax); + mcdis_line(xmin, ymin, zmin, xmin, ymin, zmax); + mcdis_line(xmax, ymin, zmin, xmax, ymin, zmax); + mcdis_line(xmin, ymax, zmin, xmin, ymax, zmax); + mcdis_line(xmax, ymax, zmin, xmax, ymax, zmax); + } + } /* end Monitor_nD_McDisplay */ + +/* end of monitor_nd-lib.c */ + + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff.h +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Release: +* Version: +* +* Object File Format intersection header for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format: +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#define INTEROFF_LIB_H "$Revision$" + +#ifndef OFF_EPSILON +#define OFF_EPSILON 1e-13 +#endif + +#ifndef OFF_INTERSECT_MAX +#ifdef OPENACC +#define OFF_INTERSECT_MAX 100 +#else +#define OFF_INTERSECT_MAX 1024 +#endif +#endif + +//#include + +#define N_VERTEX_DISPLAYED 200000 + +typedef struct intersection { + MCNUM time; //time of the intersection + Coords v; //intersection point + Coords normal; //normal vector of the surface intersected + short in_out; //1 if the ray enters the volume, -1 otherwise + short edge; //1 if the intersection is on the boundary of the polygon, and error is possible + unsigned long index; // index of the face +} intersection; + +typedef struct polygon { + MCNUM* p; //vertices of the polygon in adjacent order, this way : x1 | y1 | z1 | x2 | y2 | z2 ... + int npol; //number of vertices + #pragma acc shape(p[0:npol]) init_needed(npol) + Coords normal; + double D; +} polygon; + +typedef struct off_struct { + long vtxSize; + long polySize; + long faceSize; + Coords* vtxArray; + #pragma acc shape(vtxArray[0:vtxSize]) init_needed(vtxSize) + Coords* normalArray; + #pragma acc shape(vtxArray[0:faceSize]) init_needed(faceSize) + unsigned long* faceArray; + #pragma acc shape(vtxArray[0:faceSize][0:polySize]) init_needed(faceSize,polySize) + double* DArray; + #pragma acc shape(vtxArray[0:polySize]) init_needed(polySize) + char *filename; + int mantidflag; + long mantidoffset; + intersection intersects[OFF_INTERSECT_MAX]; // After a call to off_intersect_all contains the list of intersections. + int nextintersect; // 'Next' intersection (first t>0) solution after call to off_intersect_all + int numintersect; // Number of intersections after call to off_intersect_all +} off_struct; + +/******************************************************************************* +* long off_init( char *offfile, double xwidth, double yheight, double zdepth, off_struct* data) +* ACTION: read an OFF file, optionally center object and rescale, initialize OFF data structure +* INPUT: 'offfile' OFF file to read +* 'xwidth,yheight,zdepth' if given as non-zero, apply bounding box. +* Specifying only one of these will also use the same ratio on all axes +* 'notcenter' center the object to the (0,0,0) position in local frame when set to zero +* RETURN: number of polyhedra and 'data' OFF structure +*******************************************************************************/ +long off_init( char *offfile, double xwidth, double yheight, double zdepth, + int notcenter, off_struct* data); + +/******************************************************************************* +* int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +* data is the full OFF structure, including a list intersection type +*******************************************************************************/ +#pragma acc routine +int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ); + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ); + +/***************************************************************************** +* int off_intersectx(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ); + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED points from the object +*******************************************************************************/ +void off_display(off_struct); + +/******************************************************************************* +void p_to_quadratic(double eq[], Coords acc, + Coords pos, Coords vel, + double* teq) +* ACTION: define the quadratic for the intersection of a parabola with a plane +* INPUT: 'eq' plane equation +* 'acc' acceleration vector +* 'vel' velocity of the particle +* 'pos' position of the particle +* equation of plane A * x + B * y + C * z - D = 0 +* eq[0] = (C*az)/2+(B*ay)/2+(A*ax)/2 +* eq[1] = C*vz+B*vy+A*vx +* eq[2] = C*z0+B*y0+A*x0-D +* RETURN: equation of parabola: teq(0) * t^2 + teq(1) * t + teq(2) +*******************************************************************************/ +void p_to_quadratic(Coords norm, MCNUM d, Coords acc, Coords pos, Coords vel, + double* teq); + +/******************************************************************************* +int quadraticSolve(double eq[], double* x1, double* x2); +* ACTION: solves the quadratic for the roots x1 and x2 +* eq[0] * t^2 + eq[1] * t + eq[2] = 0 +* INPUT: 'eq' the coefficients of the parabola +* RETURN: roots x1 and x2 and the number of solutions +*******************************************************************************/ +int quadraticSolve(double* eq, double* x1, double* x2); + +#endif + +/* end of interoff-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff-lib.c +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Origin: ILL +* Release: $Revision$ +* Version: McStas X.Y +* +* Object File Format intersection library for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format (it supports comments): +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#include "interoff-lib.h" +#endif + +#ifndef INTEROFF_LIB_C +#define INTEROFF_LIB_C "$Revision$" + +#ifdef OPENACC // If on GPU map fprintf to printf +#define fprintf(stderr,...) printf(__VA_ARGS__) +#endif + +#pragma acc routine +double off_F(double x, double y,double z,double A,double B,double C,double D) { + return ( A*x + B*y + C*z + D ); +} + +#pragma acc routine +char off_sign(double a) { + if (a<0) return(-1); + else if (a==0) return(0); + else return(1); +} + +// off_normal ****************************************************************** +//gives the normal vector of p +#pragma acc routine +void off_normal(Coords* n, polygon p) +{ + //using Newell method + int i=0,j=0; + n->x=0;n->y=0;n->z=0; + for (i = 0, j = p.npol-1; i < p.npol; j = i++) + { + MCNUM x1=p.p[3*i], + y1=p.p[3*i+1], + z1=p.p[3*i+2]; + MCNUM x2=p.p[3*j], + y2=p.p[3*j+1], + z2=p.p[3*j+2]; + // n is the cross product of v1*v2 + n->x += (y1 - y2) * (z1 + z2); + n->y += (z1 - z2) * (x1 + x2); + n->z += (x1 - x2) * (y1 + y2); + } +} /* off_normal */ + +// off_pnpoly ****************************************************************** +//based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html +//return 0 if the vertex is out +// 1 if it is in +// -1 if on the boundary +#pragma acc routine +int off_pnpoly(polygon p, Coords v) +{ + int i=0, c = 0; + MCNUM minx=FLT_MAX,maxx=-FLT_MAX,miny=FLT_MAX,maxy=-FLT_MAX,minz=FLT_MAX,maxz=-FLT_MAX; + MCNUM areax=0,areay=0,areaz=0; + + int pol2dx=0,pol2dy=1; //2d restriction of the poly + MCNUM x=v.x,y=v.y; + + /*areax: projected area with x-scratched = |v1_yz x v2_yz|, where v1=(x1-x0,0,z1-z0) & v2=(x2-x0,0,z2-z0).*/ + /* In principle, if polygon is triangle area should be scaled by 1/2, but this is irrelevant for finding the maximum area.*/ + /* Similarly for y and z scratched.*/ + areax=coords_len(coords_xp( + coords_set(0,p.p[3*1+1]-p.p[0+1],p.p[3*1+2]-p.p[0+2]), + coords_set(0,p.p[3*2+1]-p.p[0+1],p.p[3*2+2]-p.p[0+2]))); + areay=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],0,p.p[3*1+2]-p.p[0+2]), + coords_set(p.p[3*2+0]-p.p[0+0],0,p.p[3*2+2]-p.p[0+2]))); + areaz=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],p.p[3*1+1]-p.p[0+1],0), + coords_set(p.p[3*2+0]-p.p[0+0],p.p[3*2+1]-p.p[0+1],0))); + + if(areaztime = inter->edge = inter->in_out=0; + inter->v = inter->normal = coords_set(0,0,1); + + if (fabs(ndir) < OFF_EPSILON) // ray is parallel to polygon plane + { + if (nw0 == 0) // ray lies in polygon plane (infinite number of solution) + return 0; + else return 0; // ray disjoint from plane (no solution) + } + + // get intersect point of ray with polygon plane + inter->time = nw0 / ndir; //parametric value the point on line (a,b) + + inter->v = coords_set(a.x + inter->time * dir.x,// intersect point of ray and plane + a.y + inter->time * dir.y, + a.z + inter->time * dir.z); + + int res=off_pnpoly(p,inter->v); + + inter->edge=(res==-1); + if (ndir<0) + inter->in_out=1; //the negative dot product means we enter the surface + else + inter->in_out=-1; + + inter->normal=p.normal; + + return res; //true if the intersection point lies inside the poly +} /* off_intersectPoly */ + + +// off_getBlocksIndex ********************************************************** +/*reads the indexes at the beginning of the off file as this : +line 1 OFF +line 2 nbVertex nbFaces nbEdges +*/ +FILE *off_getBlocksIndex(char* filename, long* vtxSize, long* polySize ) +{ + FILE* f = Open_File(filename,"r", NULL); /* from read_table-lib: FILE *Open_File(char *name, char *Mode, char *path) */ + if (!f) return (f); + + char line[CHAR_BUF_LENGTH]; + char *ret=0; + *vtxSize = *polySize = 0; + + /* **************** start to read the file header */ + /* OFF file: + 'OFF' or '3' + */ + + ret=fgets(line,CHAR_BUF_LENGTH , f);// line 1 = "OFF" + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read 1st line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (strlen(line)>5) + { + fprintf(stderr,"Error: First line in %s is too long (=%lu). Possibly the line is not terminated by '\\n'.\n" + " The first line is required to be exactly 'OFF', '3' or 'ply'.\n", + filename,(long unsigned)strlen(line)); + fclose(f); + return(NULL); + } + + if (strncmp(line,"OFF",3) && strncmp(line,"3",1) && strncmp(line,"ply",1)) + { + fprintf(stderr, "Error: %s is probably not an OFF, NOFF or PLY file (interoff/off_getBlocksIndex).\n" + " Requires first line to be 'OFF', '3' or 'ply'.\n",filename); + fclose(f); + return(NULL); + } + + if (!strncmp(line,"OFF",3) || !strncmp(line,"3",1)) { + do /* OFF file: skip # comments which may be there */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + } while (line[0]=='#'); + //line = nblines of vertex,faces and edges arrays + sscanf(line,"%lu %lu",vtxSize,polySize); + } else { + do /* PLY file: read all lines until find 'end_header' + and locate 'element faces' and 'element vertex' */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (!strncmp(line,"element face",12)) + sscanf(line,"element face %lu",polySize); + else if (!strncmp(line,"element vertex",14)) + sscanf(line,"element vertex %lu",vtxSize); + else if (!strncmp(line,"format binary",13)) + exit(fprintf(stderr, + "Error: Can not read binary PLY file %s, only 'format ascii' (interoff/off_getBlocksIndex)\n%s\n", + filename, line)); + } while (strncmp(line,"end_header",10)); + } + + /* The FILE is left opened ready to read 'vtxSize' vertices (vtxSize *3 numbers) + and then polySize polygons (rows) */ + + return(f); +} /* off_getBlocksIndex */ + +// off_init_planes ************************************************************* +//gives the equations of 2 perpandicular planes of [ab] +#pragma acc routine +void off_init_planes(Coords a, Coords b, + MCNUM* A1, MCNUM* C1, MCNUM* D1, MCNUM *A2, MCNUM* B2, MCNUM* C2, MCNUM* D2) +{ + //direction vector of [a b] + Coords dir={b.x-a.x, b.y-a.y, b.z-a.z}; + + //the plane parallel to the 'y' is computed with the normal vector of the projection of [ab] on plane 'xz' + *A1= dir.z; + *C1=-dir.x; + if(*A1!=0 || *C1!=0) + *D1=-(a.x)*(*A1)-(a.z)*(*C1); + else + { + //the plane does not support the vector, take the one parallel to 'z'' + *A1=1; + //B1=dir.x=0 + *D1=-(a.x); + } + //the plane parallel to the 'x' is computed with the normal vector of the projection of [ab] on plane 'yz' + *B2= dir.z; + *C2=-dir.y; + *A2= 0; + if (*B2==0 && *C2==0) + { + //the plane does not support the vector, take the one parallel to 'z' + *B2=1; + //B1=dir.x=0 + *D2=-(a.y); + } + else { + if (dir.z==0) + { + //the planes are the same, take the one parallel to 'z' + *A2= dir.y; + *B2=-dir.x; + *D2=-(a.x)*(*A2)-(a.y)*(*B2); + } + else + *D2=-(a.y)**B2-(a.z)**C2; + } +} /* off_init_planes */ + +// off_clip_3D_mod ************************************************************* +#pragma acc routine +int off_clip_3D_mod(intersection* t, Coords a, Coords b, + Coords* vtxArray, unsigned long vtxSize, unsigned long* faceArray, + unsigned long faceSize, Coords* normalArray) +{ + MCNUM A1=0, C1=0, D1=0, A2=0, B2=0, C2=0, D2=0; //perpendicular plane equations to [a,b] + off_init_planes(a, b, &A1, &C1, &D1, &A2, &B2, &C2, &D2); + + int t_size=0; + MCNUM popol[3*4]; /*3 dimensions and max 4 vertices to form a polygon*/ + unsigned long i=0,indPoly=0; + + //exploring the polygons : + i=indPoly=0; + while (iOFF_INTERSECT_MAX) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", OFF_INTERSECT_MAX); + return (t_size); + } +#endif + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k t[0].time) { + t[0]=x; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (x.time < t[3].time) { + t[3]=x; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } /* if (jCHAR_BUF_LENGTH) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", CHAR_BUF_LENGTH); + return (t_size); + } + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k= 1) { + double time = 1.0e36; + if (x1 < time && x1 > 0.0) { + time = x1; + } + if (nsol == 2 && x2 < time && x2 > 0.0) { + time = x2; + } + if (time != 1.0e36) { + intersection inters; + double t2 = time * time * 0.5; + double tx = pos.x + time * vel.x; + if (acc.x != 0.0) { + tx = tx + t2 * acc.x; + } + double ty = pos.y + time * vel.y; + if (acc.y != 0.0) { + ty = ty + t2 * acc.y; + } + double tz = pos.z + time * vel.z; + if (acc.z != 0.0) { + tz = tz + t2 * acc.z; + } + inters.v = coords_set(tx, ty, tz); + Coords tvel = coords_set(vel.x + time * acc.x, + vel.y + time * acc.y, + vel.z + time * acc.z); + inters.time = time; + inters.normal = pol.normal; + inters.index = indPoly; + int res=off_pnpoly(pol,inters.v); + if (res != 0) { + inters.edge=(res==-1); + MCNUM ndir = scalar_prod(pol.normal.x,pol.normal.y,pol.normal.z,tvel.x,tvel.y,tvel.z); + if (ndir<0) { + inters.in_out=1; //the negative dot product means we enter the surface + } else { + inters.in_out=-1; + } +#ifdef OFF_LEGACY + t[t_size++]=inters; +#else + /* Check against our 4 existing times, starting from [-FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX] */ + /* Case 1, negative time? */ + if (t_size < 4) t_size++; + if (inters.time < 0) { + if (inters.time > t[0].time) { + t[0]=inters; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (inters.time < t[3].time) { + t[3]=inters; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } + } + i += pol.npol; + indPoly++; + } /* while itime - pb->time); +} /* off_compare */ + +// off_cleanDouble ************************************************************* +//given an array of intersections throw those which appear several times +//returns 1 if there is a possibility of error +#pragma acc routine +int off_cleanDouble(intersection* t, int* t_size) +{ + int i=1; + intersection prev=t[0]; + while (i<*t_size) + { + int j=i; + //for each intersection with the same time + while (j<*t_size && fabs(prev.time-t[j].time)maxx) maxx=vtxArray[i].x; + if (vtxArray[i].ymaxy) maxy=vtxArray[i].y; + if (vtxArray[i].zmaxz) maxz=vtxArray[i].z; + i++; // inquire next vertex + } + + // resizing and repositioning params + double centerx=0, centery=0, centerz=0; + if (!notcenter) { + centerx=(minx+maxx)*0.5; + centery=(miny+maxy)*0.5; + centerz=(minz+maxz)*0.5; + } + + double rangex=-minx+maxx, + rangey=-miny+maxy, + rangez=-minz+maxz; + + double ratiox=1,ratioy=1,ratioz=1; + + if (xwidth && rangex) + { + ratiox=xwidth/rangex; + ratioy=ratiox; + ratioz=ratiox; + } + + if (yheight && rangey) + { + ratioy=yheight/rangey; + if(!xwidth) ratiox=ratioy; + ratioz=ratioy; + } + + if (zdepth && rangez) + { + ratioz=zdepth/rangez; + if(!xwidth) ratiox=ratioz; + if(!yheight) ratioy=ratioz; + } + + rangex *= ratiox; + rangey *= ratioy; + rangez *= ratioz; + + //center and resize the object + for (i=0; i polySize*10) { + fprintf(stderr, "Error: %li exceeded allocated polygon array[%li] in file %s (interoff/off_init)\n", + faceSize, polySize*10, offfile); + } + faceArray[faceSize++] = nbVertex; // length of the polygon/face + // then read the vertex ID's + for (j=0; jvtxArray = vtxArray; + data->normalArray= normalArray; + data->DArray = DArray; + data->faceArray = faceArray; + data->vtxSize = vtxSize; + data->polySize = polySize; + data->faceSize = faceSize; + data->filename = offfile; + #ifdef OPENACC + acc_attach((void *)&vtxArray); + acc_attach((void *)&normalArray); + acc_attach((void *)&faceArray); + #endif + + return(polySize); +} /* off_init */ + +#pragma acc routine +int Min_int(int x, int y) { + return (xintersects, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray ); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(data->intersects, A, B, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray ); + } + #ifndef OPENACC + qsort(data->intersects, t_size, sizeof(intersection), off_compare); + #else + #ifdef USE_OFF + gpusort(data->intersects, t_size); + #endif + #endif + off_cleanDouble(data->intersects, &t_size); + off_cleanInOut(data->intersects, &t_size); + + /*find intersections "closest" to 0 (favouring positive ones)*/ + if(t_size>0){ + int i=0; + if(t_size>1) { + for (i=1; i < t_size-1; i++){ + if (data->intersects[i-1].time > 0 && data->intersects[i].time > 0) + break; + } + + data->nextintersect=i-1; + data->numintersect=t_size; + + if (t0) *t0 = data->intersects[i-1].time; + if (n0) *n0 = data->intersects[i-1].normal; + if (t3) *t3 = data->intersects[i].time; + if (n3) *n3 = data->intersects[i].normal; + } else { + if (t0) *t0 = data->intersects[0].time; + if (n0) *n0 = data->intersects[0].normal; + } + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(data->intersects[data->nextintersect]).index; + return t_size; + } +#else + intersection intersect4[4]; + intersect4[0].time=-FLT_MAX; + intersect4[1].time=FLT_MAX; + intersect4[2].time=FLT_MAX; + intersect4[3].time=FLT_MAX; + if(mcgravitation) { + Coords pos={ x, y, z}; + Coords vel={vx, vy, vz}; + Coords acc={ax, ay, az}; + t_size=off_clip_3D_mod_grav(intersect4, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(intersect4, A, B, + data->vtxArray, data->vtxSize, data->faceArray, data->faceSize, data->normalArray ); + } + if(t_size>0){ + int i=0; + if (intersect4[0].time == -FLT_MAX) i=1; + data->numintersect=t_size; + if (t0) *t0 = intersect4[i].time; + if (n0) *n0 = intersect4[i].normal; + if (t3) *t3 = intersect4[i+1].time; + if (n3) *n3 = intersect4[i+1].normal; + + if (intersect4[1].time == FLT_MAX) + { + if (t3) *t3 = 0.0; + } + + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(int)intersect4[i].index; + return t_size; + } +#endif + return 0; +} /* off_intersect */ + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +{ + return off_intersect_all(t0, t3, n0, n3, x, y, z, vx, vy, vz, ax, ay, az, &data ); +} /* off_intersect */ + +/***************************************************************************** +* int off_x_intersect(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +{ + /*This function simply reformats and calls off_intersect (as for neutrons) + *by normalizing the wavevector - this will yield the intersection lengths + *in m*/ + double jx,jy,jz,invk; + int n; + invk=1/sqrt(scalar_prod(kx,ky,kz,kx,ky,kz)); + jx=kx*invk;jy=ky*invk;jz=kz*invk; + n=off_intersect(l0,l3,n0,n3,x,y,z,jx,jy,jz,0.0,0.0,0.0,data); + return n; +} + + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED polygons from the object +*******************************************************************************/ +void off_display(off_struct data) +{ + if(mcdotrace==2){ + // Estimate size of the JSON string + const int VERTEX_OVERHEAD = 30; + const int FACE_OVERHEAD_BASE = 20; + const int FACE_INDEX_OVERHEAD = 15; + int estimated_size = 256; // Base size + estimated_size += data.vtxSize * VERTEX_OVERHEAD; + + for (int i = 0; i < data.faceSize;) { + int num_indices = data.faceArray[i]; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + for (int i = 0; i < data.vtxSize; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", data.vtxArray[i].x, data.vtxArray[i].y, data.vtxArray[i].z); + if (i < data.vtxSize - 1) { + ptr += sprintf(ptr, ", "); + } + } + + ptr += sprintf(ptr, "], \"faces\": ["); + + for (int i = 0; i < data.faceSize;) { + int num = data.faceArray[i]; + ptr += sprintf(ptr, "{ \"face\": ["); + for (int j = 1; j <= num; j++) { + ptr += sprintf(ptr, "%lu", data.faceArray[i + j]); + if (j < num) { + ptr += sprintf(ptr, ", "); + } + } + ptr += sprintf(ptr, "]}"); + i += num + 1; + if(i 1 || drawthis) { + mcdis_line(x1,y1,z1,x2,y2,z2); + } + x1 = x2; y1 = y2; z1 = z2; + } + if (ratio > 1 || drawthis) { + mcdis_line(x1,y1,z1,x0,y0,z0); + } + if (data.mantidflag) { + printf("MANTID_PIXEL: %s\n", pixelinfo); + pixel++; + } + i += nbVertex; + } + } +} /* off_display */ + +/* end of interoff-lib.c */ +#endif // INTEROFF_LIB_C + + + + +/* ************************************************************************** */ +/* End of SHARE user declarations for all components */ +/* ************************************************************************** */ + + +/* ********************** component definition declarations. **************** */ + +/* component Origin=Progress_bar() [1] DECLARE */ +/* Parameter definition for component type 'Progress_bar' */ +struct _struct_Progress_bar_parameters { + /* Component type 'Progress_bar' setting parameters */ + char profile[16384]; + MCNUM percent; + MCNUM flag_save; + MCNUM minutes; + /* Component type 'Progress_bar' private parameters */ + double IntermediateCnts; + time_t StartTime; + time_t EndTime; + time_t CurrentTime; + char infostring[64]; +}; /* _struct_Progress_bar_parameters */ +typedef struct _struct_Progress_bar_parameters _class_Progress_bar_parameters; + +/* Parameters for component type 'Progress_bar' */ +struct _struct_Progress_bar { + char _name[256]; /* e.g. Origin */ + char _type[256]; /* Progress_bar */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Progress_bar_parameters _parameters; +}; +typedef struct _struct_Progress_bar _class_Progress_bar; +_class_Progress_bar _Origin_var; +#pragma acc declare create ( _Origin_var ) + +/* component optical_axis=Arm() [2] DECLARE */ +/* Parameter definition for component type 'Arm' */ +struct _struct_Arm_parameters { + char Arm_has_no_parameters; +}; /* _struct_Arm_parameters */ +typedef struct _struct_Arm_parameters _class_Arm_parameters; + +/* Parameters for component type 'Arm' */ +struct _struct_Arm { + char _name[256]; /* e.g. optical_axis */ + char _type[256]; /* Arm */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Arm_parameters _parameters; +}; +typedef struct _struct_Arm _class_Arm; +_class_Arm _optical_axis_var; +#pragma acc declare create ( _optical_axis_var ) + +/* component Source=ESS_butterfly() [3] DECLARE */ +/* Parameter definition for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly_parameters { + /* Component type 'ESS_butterfly' setting parameters */ + char sector[16384]; + int beamline; + MCNUM yheight; + MCNUM cold_frac; + int target_index; + MCNUM dist; + MCNUM focus_xw; + MCNUM focus_yh; + MCNUM c_performance; + MCNUM t_performance; + MCNUM Lmin; + MCNUM Lmax; + MCNUM tmax_multiplier; + int n_pulses; + MCNUM acc_power; + MCNUM tfocus_dist; + MCNUM tfocus_time; + MCNUM tfocus_width; + /* Component type 'ESS_butterfly' private parameters */ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double * Beamlines; + double wfrac_cold; + double wfrac_thermal; + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + double cos_thermal; + double cos_cold; + double orientation_angle; + double cx; + double cz; + int jmax; + double dxC; + double dxT; +}; /* _struct_ESS_butterfly_parameters */ +typedef struct _struct_ESS_butterfly_parameters _class_ESS_butterfly_parameters; + +/* Parameters for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly { + char _name[256]; /* e.g. Source */ + char _type[256]; /* ESS_butterfly */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_ESS_butterfly_parameters _parameters; +}; +typedef struct _struct_ESS_butterfly _class_ESS_butterfly; +_class_ESS_butterfly _Source_var; +#pragma acc declare create ( _Source_var ) + +_class_Arm _Start_of_bi_var; +#pragma acc declare create ( _Start_of_bi_var ) + +/* component bi=bi_spec_ellipse() [5] DECLARE */ +/* Parameter definition for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse_parameters { + /* Component type 'bi_spec_ellipse' setting parameters */ + MCNUM xheight; + MCNUM ywidth; + MCNUM zlength; + MCNUM n_mirror; + MCNUM tilt; + MCNUM n_pieces; + MCNUM angular_offset; + MCNUM m; + MCNUM R0_m; + MCNUM Qc_m; + MCNUM alpha_mirror_m; + MCNUM W_m; + MCNUM transmit; + MCNUM d_focus_1_x; + MCNUM d_focus_2_x; + MCNUM d_focus_1_y; + MCNUM d_focus_2_y; + MCNUM ell_l; + MCNUM ell_h; + MCNUM ell_w; + MCNUM ell_m; + MCNUM R0; + MCNUM Qc; + MCNUM alpha_mirror; + MCNUM W; + MCNUM cut; + MCNUM substrate; + char reflect_mirror[16384]; + char reflect[16384]; + /* Component type 'bi_spec_ellipse' private parameters */ + t_Table pTable; +}; /* _struct_bi_spec_ellipse_parameters */ +typedef struct _struct_bi_spec_ellipse_parameters _class_bi_spec_ellipse_parameters; + +/* Parameters for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse { + char _name[256]; /* e.g. bi */ + char _type[256]; /* bi_spec_ellipse */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_bi_spec_ellipse_parameters _parameters; +}; +typedef struct _struct_bi_spec_ellipse _class_bi_spec_ellipse; +_class_bi_spec_ellipse _bi_var; +#pragma acc declare create ( _bi_var ) + +_class_Arm _End_of_bi_var; +#pragma acc declare create ( _End_of_bi_var ) + +/* component NBOA_drawing_1_end=Guide_four_side() [7] DECLARE */ +/* Parameter definition for component type 'Guide_four_side' */ +struct _struct_Guide_four_side_parameters { + /* Component type 'Guide_four_side' setting parameters */ + char RIreflect[16384]; + char LIreflect[16384]; + char UIreflect[16384]; + char DIreflect[16384]; + char ROreflect[16384]; + char LOreflect[16384]; + char UOreflect[16384]; + char DOreflect[16384]; + MCNUM w1l; + MCNUM w2l; + MCNUM linwl; + MCNUM loutwl; + MCNUM w1r; + MCNUM w2r; + MCNUM linwr; + MCNUM loutwr; + MCNUM h1u; + MCNUM h2u; + MCNUM linhu; + MCNUM louthu; + MCNUM h1d; + MCNUM h2d; + MCNUM linhd; + MCNUM louthd; + MCNUM l; + MCNUM R0; + MCNUM Qcxl; + MCNUM Qcxr; + MCNUM Qcyu; + MCNUM Qcyd; + MCNUM alphaxl; + MCNUM alphaxr; + MCNUM alphayu; + MCNUM alphayd; + MCNUM Wxr; + MCNUM Wxl; + MCNUM Wyu; + MCNUM Wyd; + MCNUM mxr; + MCNUM mxl; + MCNUM myu; + MCNUM myd; + MCNUM QcxrOW; + MCNUM QcxlOW; + MCNUM QcyuOW; + MCNUM QcydOW; + MCNUM alphaxlOW; + MCNUM alphaxrOW; + MCNUM alphayuOW; + MCNUM alphaydOW; + MCNUM WxrOW; + MCNUM WxlOW; + MCNUM WyuOW; + MCNUM WydOW; + MCNUM mxrOW; + MCNUM mxlOW; + MCNUM myuOW; + MCNUM mydOW; + MCNUM rwallthick; + MCNUM lwallthick; + MCNUM uwallthick; + MCNUM dwallthick; + /* Component type 'Guide_four_side' private parameters */ + double w1rwt; + double w1lwt; + double h1uwt; + double h1dwt; + double w2rwt; + double w2lwt; + double h2uwt; + double h2dwt; + double pawr; + double pawl; + double pbwr; + double pbwl; + double pahu; + double pahd; + double pbhu; + double pbhd; + double awl; + double bwl; + double awr; + double bwr; + double ahu; + double bhu; + double ahd; + double bhd; + double awlwt; + double bwlwt; + double awrwt; + double bwrwt; + double ahuwt; + double bhuwt; + double ahdwt; + double bhdwt; + double pawrwt; + double pawlwt; + double pbwrwt; + double pbwlwt; + double pahuwt; + double pahdwt; + double pbhuwt; + double pbhdwt; + double a2wlwt; + double b2wlwt; + double a2wrwt; + double b2wrwt; + double a2huwt; + double b2huwt; + double a2hdwt; + double b2hdwt; + double a2wl; + double b2wl; + double a2wr; + double b2wr; + double a2hu; + double b2hu; + double a2hd; + double b2hd; + double mru1; + double mru2; + double nru1; + double nru2; + double mrd1; + double mrd2; + double nrd1; + double nrd2; + double mlu1; + double mlu2; + double nlu1; + double nlu2; + double mld1; + double mld2; + double nld1; + double nld2; + double z0wr; + double z0wl; + double z0hu; + double z0hd; + double p2parawr; + double p2parawl; + double p2parahu; + double p2parahd; + double p2parawrwt; + double p2parawlwt; + double p2parahuwt; + double p2parahdwt; + t_Table riTable; + t_Table liTable; + t_Table uiTable; + t_Table diTable; + t_Table roTable; + t_Table loTable; + t_Table uoTable; + t_Table doTable; +}; /* _struct_Guide_four_side_parameters */ +typedef struct _struct_Guide_four_side_parameters _class_Guide_four_side_parameters; + +/* Parameters for component type 'Guide_four_side' */ +struct _struct_Guide_four_side { + char _name[256]; /* e.g. NBOA_drawing_1_end */ + char _type[256]; /* Guide_four_side */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Guide_four_side_parameters _parameters; +}; +typedef struct _struct_Guide_four_side _class_Guide_four_side; +_class_Guide_four_side _NBOA_drawing_1_end_var; +#pragma acc declare create ( _NBOA_drawing_1_end_var ) + +_class_Guide_four_side _g1a2_var; +#pragma acc declare create ( _g1a2_var ) + +_class_Guide_four_side _g1a3_var; +#pragma acc declare create ( _g1a3_var ) + +_class_Guide_four_side _g1b1_var; +#pragma acc declare create ( _g1b1_var ) + +_class_Guide_four_side _g1c1_var; +#pragma acc declare create ( _g1c1_var ) + +_class_Arm _wfm_position_var; +#pragma acc declare create ( _wfm_position_var ) + +_class_Arm _wfm_1_position_var; +#pragma acc declare create ( _wfm_1_position_var ) + +/* component wfmc_1=MultiDiskChopper() [14] DECLARE */ +/* Parameter definition for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper_parameters { + /* Component type 'MultiDiskChopper' setting parameters */ + char slit_center[16384]; + char slit_width[16384]; + MCNUM nslits; + MCNUM delta_y; + MCNUM nu; + MCNUM nrev; + MCNUM ratio; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM phase; + MCNUM radius; + MCNUM equal; + MCNUM abs_out; + MCNUM verbose; + /* Component type 'MultiDiskChopper' private parameters */ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +}; /* _struct_MultiDiskChopper_parameters */ +typedef struct _struct_MultiDiskChopper_parameters _class_MultiDiskChopper_parameters; + +/* Parameters for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper { + char _name[256]; /* e.g. wfmc_1 */ + char _type[256]; /* MultiDiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_MultiDiskChopper_parameters _parameters; +}; +typedef struct _struct_MultiDiskChopper _class_MultiDiskChopper; +_class_MultiDiskChopper _wfmc_1_var; +#pragma acc declare create ( _wfmc_1_var ) + +/* component pinhole_1=Slit() [15] DECLARE */ +/* Parameter definition for component type 'Slit' */ +struct _struct_Slit_parameters { + /* Component type 'Slit' setting parameters */ + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM radius; + MCNUM xwidth; + MCNUM yheight; + /* Component type 'Slit' private parameters */ + char isradial; +}; /* _struct_Slit_parameters */ +typedef struct _struct_Slit_parameters _class_Slit_parameters; + +/* Parameters for component type 'Slit' */ +struct _struct_Slit { + char _name[256]; /* e.g. pinhole_1 */ + char _type[256]; /* Slit */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Slit_parameters _parameters; +}; +typedef struct _struct_Slit _class_Slit; +_class_Slit _pinhole_1_var; +#pragma acc declare create ( _pinhole_1_var ) + +_class_Arm _wfm_2_position_var; +#pragma acc declare create ( _wfm_2_position_var ) + +_class_MultiDiskChopper _wfmc_2_var; +#pragma acc declare create ( _wfmc_2_var ) + +_class_Guide_four_side _g2a1_var; +#pragma acc declare create ( _g2a1_var ) + +_class_Arm _monitor_1_position_var; +#pragma acc declare create ( _monitor_1_position_var ) + +_class_Guide_four_side _g2a2_var; +#pragma acc declare create ( _g2a2_var ) + +_class_Arm _fo1_position_var; +#pragma acc declare create ( _fo1_position_var ) + +_class_MultiDiskChopper _fo_chopper_1_var; +#pragma acc declare create ( _fo_chopper_1_var ) + +_class_Arm _bp1_position_var; +#pragma acc declare create ( _bp1_position_var ) + +/* component bp1_chopper=DiskChopper() [24] DECLARE */ +/* Parameter definition for component type 'DiskChopper' */ +struct _struct_DiskChopper_parameters { + /* Component type 'DiskChopper' setting parameters */ + MCNUM theta_0; + MCNUM radius; + MCNUM yheight; + MCNUM nu; + MCNUM nslit; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM n_pulse; + MCNUM abs_out; + MCNUM phase; + MCNUM xwidth; + MCNUM verbose; + /* Component type 'DiskChopper' private parameters */ + double Tg; + double To; + double delta_y; + double height; + double omega; +}; /* _struct_DiskChopper_parameters */ +typedef struct _struct_DiskChopper_parameters _class_DiskChopper_parameters; + +/* Parameters for component type 'DiskChopper' */ +struct _struct_DiskChopper { + char _name[256]; /* e.g. bp1_chopper */ + char _type[256]; /* DiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_DiskChopper_parameters _parameters; +}; +typedef struct _struct_DiskChopper _class_DiskChopper; +_class_DiskChopper _bp1_chopper_var; +#pragma acc declare create ( _bp1_chopper_var ) + +_class_Guide_four_side _g2b1_var; +#pragma acc declare create ( _g2b1_var ) + +_class_Guide_four_side _g2b2_var; +#pragma acc declare create ( _g2b2_var ) + +_class_Guide_four_side _g2b3_var; +#pragma acc declare create ( _g2b3_var ) + +_class_Guide_four_side _g2b4_var; +#pragma acc declare create ( _g2b4_var ) + +_class_Arm _fo2_position_var; +#pragma acc declare create ( _fo2_position_var ) + +_class_MultiDiskChopper _fo_chopper_2_var; +#pragma acc declare create ( _fo_chopper_2_var ) + +_class_Arm _bp2_position_var; +#pragma acc declare create ( _bp2_position_var ) + +_class_DiskChopper _bp_chopper2_var; +#pragma acc declare create ( _bp_chopper2_var ) + +_class_Guide_four_side _g2c1_var; +#pragma acc declare create ( _g2c1_var ) + +_class_Arm _t0_start_position_var; +#pragma acc declare create ( _t0_start_position_var ) + +_class_DiskChopper _t0_chopper_alpha_var; +#pragma acc declare create ( _t0_chopper_alpha_var ) + +_class_Arm _t0_end_position_var; +#pragma acc declare create ( _t0_end_position_var ) + +_class_DiskChopper _t0_chopper_beta_var; +#pragma acc declare create ( _t0_chopper_beta_var ) + +_class_Guide_four_side _g3a1_var; +#pragma acc declare create ( _g3a1_var ) + +_class_Guide_four_side _g3a2_var; +#pragma acc declare create ( _g3a2_var ) + +_class_Arm _fo3_position_var; +#pragma acc declare create ( _fo3_position_var ) + +_class_MultiDiskChopper _fo_chopper_3_var; +#pragma acc declare create ( _fo_chopper_3_var ) + +_class_Guide_four_side _g3b1_var; +#pragma acc declare create ( _g3b1_var ) + +_class_Guide_four_side _g4a1_var; +#pragma acc declare create ( _g4a1_var ) + +_class_Arm _monitor_2_position_var; +#pragma acc declare create ( _monitor_2_position_var ) + +_class_Guide_four_side _g4a2_var; +#pragma acc declare create ( _g4a2_var ) + +_class_Guide_four_side _g4a3_var; +#pragma acc declare create ( _g4a3_var ) + +_class_Arm _fo4_position_var; +#pragma acc declare create ( _fo4_position_var ) + +_class_MultiDiskChopper _fo_chopper_4_var; +#pragma acc declare create ( _fo_chopper_4_var ) + +_class_Guide_four_side _g4b1_var; +#pragma acc declare create ( _g4b1_var ) + +_class_Guide_four_side _g4b2_var; +#pragma acc declare create ( _g4b2_var ) + +_class_Guide_four_side _g4b3_var; +#pragma acc declare create ( _g4b3_var ) + +_class_Guide_four_side _g4b4_var; +#pragma acc declare create ( _g4b4_var ) + +_class_Guide_four_side _g4b5_var; +#pragma acc declare create ( _g4b5_var ) + +_class_Guide_four_side _g4b6_var; +#pragma acc declare create ( _g4b6_var ) + +_class_Guide_four_side _g5a1_var; +#pragma acc declare create ( _g5a1_var ) + +_class_Arm _fo5_position_var; +#pragma acc declare create ( _fo5_position_var ) + +_class_MultiDiskChopper _fo_chopper_5_var; +#pragma acc declare create ( _fo_chopper_5_var ) + +_class_Guide_four_side _g5b1_var; +#pragma acc declare create ( _g5b1_var ) + +_class_Guide_four_side _g5b2_var; +#pragma acc declare create ( _g5b2_var ) + +_class_Guide_four_side _g5b3_var; +#pragma acc declare create ( _g5b3_var ) + +_class_Guide_four_side _g5b4_var; +#pragma acc declare create ( _g5b4_var ) + +_class_Guide_four_side _g5b5_var; +#pragma acc declare create ( _g5b5_var ) + +_class_Guide_four_side _g5b6_var; +#pragma acc declare create ( _g5b6_var ) + +_class_Guide_four_side _g6a1_var; +#pragma acc declare create ( _g6a1_var ) + +_class_Guide_four_side _g6a2_var; +#pragma acc declare create ( _g6a2_var ) + +_class_Guide_four_side _g6a3_var; +#pragma acc declare create ( _g6a3_var ) + +_class_Arm _guide_end_var; +#pragma acc declare create ( _guide_end_var ) + +_class_Arm _monitor_3_position_var; +#pragma acc declare create ( _monitor_3_position_var ) + +_class_Arm _start_backend_var; +#pragma acc declare create ( _start_backend_var ) + +_class_Arm _optical_axis_backend_var; +#pragma acc declare create ( _optical_axis_backend_var ) + +_class_Slit _pinhole_2_var; +#pragma acc declare create ( _pinhole_2_var ) + +/* component graph=Graphite_Diffuser() [72] DECLARE */ +/* Parameter definition for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser_parameters { + /* Component type 'Graphite_Diffuser' setting parameters */ + MCNUM xwidth; + MCNUM ywidth; + MCNUM thick; + MCNUM abs; +}; /* _struct_Graphite_Diffuser_parameters */ +typedef struct _struct_Graphite_Diffuser_parameters _class_Graphite_Diffuser_parameters; + +/* Parameters for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser { + char _name[256]; /* e.g. graph */ + char _type[256]; /* Graphite_Diffuser */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Graphite_Diffuser_parameters _parameters; +}; +typedef struct _struct_Graphite_Diffuser _class_Graphite_Diffuser; +_class_Graphite_Diffuser _graph_var; +#pragma acc declare create ( _graph_var ) + +_class_Arm _sample_monitor_arm_var; +#pragma acc declare create ( _sample_monitor_arm_var ) + +/* component sample_PSD=Monitor_nD() [74] DECLARE */ +/* Parameter definition for component type 'Monitor_nD' */ +struct _struct_Monitor_nD_parameters { + /* Component type 'Monitor_nD' setting parameters */ + char user1[16384]; + char user2[16384]; + char user3[16384]; + MCNUM xwidth; + MCNUM yheight; + MCNUM zdepth; + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM zmin; + MCNUM zmax; + int bins; + MCNUM min; + MCNUM max; + int restore_neutron; + MCNUM radius; + char options[16384]; + char filename[16384]; + char geometry[16384]; + int nowritefile; + char username1[16384]; + char username2[16384]; + char username3[16384]; + /* Component type 'Monitor_nD' private parameters */ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +}; /* _struct_Monitor_nD_parameters */ +typedef struct _struct_Monitor_nD_parameters _class_Monitor_nD_parameters; + +/* Parameters for component type 'Monitor_nD' */ +struct _struct_Monitor_nD { + char _name[256]; /* e.g. sample_PSD */ + char _type[256]; /* Monitor_nD */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Monitor_nD_parameters _parameters; +}; +typedef struct _struct_Monitor_nD _class_Monitor_nD; +_class_Monitor_nD _sample_PSD_var; +#pragma acc declare create ( _sample_PSD_var ) + +_class_Monitor_nD _profile_x_var; +#pragma acc declare create ( _profile_x_var ) + +_class_Monitor_nD _profile_y_var; +#pragma acc declare create ( _profile_y_var ) + +_class_Monitor_nD _wavelength_var; +#pragma acc declare create ( _wavelength_var ) + +_class_Monitor_nD _tof_var; +#pragma acc declare create ( _tof_var ) + +_class_Monitor_nD _wavelength_tof_var; +#pragma acc declare create ( _wavelength_tof_var ) + +_class_Arm _sample_position_var; +#pragma acc declare create ( _sample_position_var ) + +int mcNUMCOMP = 80; + +/* User declarations from instrument definition. Can define functions. */ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap + +#undef compcurname +#undef compcurtype +#undef compcurindex +/* end of instrument 'ODIN_baseline' and components DECLARE */ + +/* ***************************************************************************** +* instrument 'ODIN_baseline' and components INITIALISE +***************************************************************************** */ + +double index_getdistance(int first_index, int second_index) +/* Calculate the distance two components from their indexes*/ +{ + return coords_len(coords_sub(POS_A_COMP_INDEX(first_index), POS_A_COMP_INDEX(second_index))); +} + +double getdistance(char* first_component, char* second_component) +/* Calculate the distance between two named components */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + return index_getdistance(first_index, second_index); +} + +double checked_setpos_getdistance(int current_index, char* first_component, char* second_component) +/* Calculate the distance between two named components at *_setpos() time, with component index checking */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + if (first_index >= current_index || second_index >= current_index) { + printf("setpos_getdistance can only be used with the names of components before the current one!\n"); + return 0; + } + return index_getdistance(first_index, second_index); +} +#define setpos_getdistance(first, second) checked_setpos_getdistance(current_setpos_index, first, second) + +/* component Origin=Progress_bar() SETTING, POSITION/ROTATION */ +int _Origin_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Origin_setpos] component Origin=Progress_bar() SETTING [Progress_bar:0]"); + stracpy(_Origin_var._name, "Origin", 16384); + stracpy(_Origin_var._type, "Progress_bar", 16384); + _Origin_var._index=1; + int current_setpos_index = 1; + if("NULL" && strlen("NULL")) + stracpy(_Origin_var._parameters.profile, "NULL" ? "NULL" : "", 16384); + else + _Origin_var._parameters.profile[0]='\0'; + _Origin_var._parameters.percent = 10; + _Origin_var._parameters.flag_save = 0; + _Origin_var._parameters.minutes = 0; + + + /* component Origin=Progress_bar() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(_Origin_var._rotation_absolute, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_copy(_Origin_var._rotation_relative, _Origin_var._rotation_absolute); + _Origin_var._rotation_is_identity = rot_test_identity(_Origin_var._rotation_relative); + _Origin_var._position_absolute = coords_set( + 0, 0, 0); + tc1 = coords_neg(_Origin_var._position_absolute); + _Origin_var._position_relative = rot_apply(_Origin_var._rotation_absolute, tc1); + } /* Origin=Progress_bar() AT ROTATED */ + DEBUG_COMPONENT("Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute); + instrument->_position_absolute[1] = _Origin_var._position_absolute; + instrument->_position_relative[1] = _Origin_var._position_relative; + _Origin_var._position_relative_is_zero = coords_test_zero(_Origin_var._position_relative); + instrument->counter_N[1] = instrument->counter_P[1] = instrument->counter_P2[1] = 0; + instrument->counter_AbsorbProp[1]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0000_Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute, "Progress_bar"); + mccomp_param_nexus(nxhandle,"0000_Origin", "profile", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0000_Origin", "percent", "10", "10","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "flag_save", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "minutes", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Origin_setpos */ + +/* component optical_axis=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_setpos] component optical_axis=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_var._name, "optical_axis", 16384); + stracpy(_optical_axis_var._type, "Arm", 16384); + _optical_axis_var._index=2; + int current_setpos_index = 2; + /* component optical_axis=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Origin_var._rotation_absolute, _optical_axis_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_optical_axis_var._rotation_absolute, tr1, _optical_axis_var._rotation_relative); + _optical_axis_var._rotation_is_identity = rot_test_identity(_optical_axis_var._rotation_relative); + tc1 = coords_set( + 0.026, 0, 0); + rot_transpose(_Origin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _optical_axis_var._position_absolute); + _optical_axis_var._position_relative = rot_apply(_optical_axis_var._rotation_absolute, tc1); + } /* optical_axis=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute); + instrument->_position_absolute[2] = _optical_axis_var._position_absolute; + instrument->_position_relative[2] = _optical_axis_var._position_relative; + _optical_axis_var._position_relative_is_zero = coords_test_zero(_optical_axis_var._position_relative); + instrument->counter_N[2] = instrument->counter_P[2] = instrument->counter_P2[2] = 0; + instrument->counter_AbsorbProp[2]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0001_optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_setpos */ + +/* component Source=ESS_butterfly() SETTING, POSITION/ROTATION */ +int _Source_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Source_setpos] component Source=ESS_butterfly() SETTING [ESS_butterfly:0]"); + stracpy(_Source_var._name, "Source", 16384); + stracpy(_Source_var._type, "ESS_butterfly", 16384); + _Source_var._index=3; + int current_setpos_index = 3; + if("S" && strlen("S")) + stracpy(_Source_var._parameters.sector, "S" ? "S" : "", 16384); + else + _Source_var._parameters.sector[0]='\0'; + _Source_var._parameters.beamline = 2; + _Source_var._parameters.yheight = 0.03; + _Source_var._parameters.cold_frac = 0.5; + _Source_var._parameters.target_index = 1; + _Source_var._parameters.dist = 0; + _Source_var._parameters.focus_xw = 0.0576862; + _Source_var._parameters.focus_yh = 0.0464308; + _Source_var._parameters.c_performance = 1; + _Source_var._parameters.t_performance = 1; + _Source_var._parameters.Lmin = _instrument_var._parameters.l_min; + _Source_var._parameters.Lmax = _instrument_var._parameters.l_max; + _Source_var._parameters.tmax_multiplier = 3; + _Source_var._parameters.n_pulses = _instrument_var._parameters.n_pulses; + _Source_var._parameters.acc_power = 2.0; + _Source_var._parameters.tfocus_dist = 0; + _Source_var._parameters.tfocus_time = 0; + _Source_var._parameters.tfocus_width = 0; + + + /* component Source=ESS_butterfly() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Origin_var._rotation_absolute, _Source_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_Source_var._rotation_absolute, tr1, _Source_var._rotation_relative); + _Source_var._rotation_is_identity = rot_test_identity(_Source_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Origin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Source_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _Source_var._position_absolute); + _Source_var._position_relative = rot_apply(_Source_var._rotation_absolute, tc1); + } /* Source=ESS_butterfly() AT ROTATED */ + DEBUG_COMPONENT("Source", _Source_var._position_absolute, _Source_var._rotation_absolute); + instrument->_position_absolute[3] = _Source_var._position_absolute; + instrument->_position_relative[3] = _Source_var._position_relative; + _Source_var._position_relative_is_zero = coords_test_zero(_Source_var._position_relative); + instrument->counter_N[3] = instrument->counter_P[3] = instrument->counter_P2[3] = 0; + instrument->counter_AbsorbProp[3]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0002_Source", _Source_var._position_absolute, _Source_var._rotation_absolute, "ESS_butterfly"); + mccomp_param_nexus(nxhandle,"0002_Source", "sector", "N", "S", "char*"); + mccomp_param_nexus(nxhandle,"0002_Source", "beamline", "1", "2","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "yheight", "0.03", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "cold_frac", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "target_index", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "focus_xw", "0", "0.0576862","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "focus_yh", "0", "0.0464308","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "c_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "t_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "Lmin", "NONE", "_instrument_var._parameters.l_min","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "Lmax", "NONE", "_instrument_var._parameters.l_max","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tmax_multiplier", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "n_pulses", "1", "_instrument_var._parameters.n_pulses","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "acc_power", "5", "2.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_time", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_width", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Source_setpos */ + +/* component Start_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _Start_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Start_of_bi_setpos] component Start_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_Start_of_bi_var._name, "Start_of_bi", 16384); + stracpy(_Start_of_bi_var._type, "Arm", 16384); + _Start_of_bi_var._index=4; + int current_setpos_index = 4; + /* component Start_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _Start_of_bi_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_Start_of_bi_var._rotation_absolute, tr1, _Start_of_bi_var._rotation_relative); + _Start_of_bi_var._rotation_is_identity = rot_test_identity(_Start_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 2.0306); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Start_of_bi_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _Start_of_bi_var._position_absolute); + _Start_of_bi_var._position_relative = rot_apply(_Start_of_bi_var._rotation_absolute, tc1); + } /* Start_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute); + instrument->_position_absolute[4] = _Start_of_bi_var._position_absolute; + instrument->_position_relative[4] = _Start_of_bi_var._position_relative; + _Start_of_bi_var._position_relative_is_zero = coords_test_zero(_Start_of_bi_var._position_relative); + instrument->counter_N[4] = instrument->counter_P[4] = instrument->counter_P2[4] = 0; + instrument->counter_AbsorbProp[4]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0003_Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Start_of_bi_setpos */ + +/* component bi=bi_spec_ellipse() SETTING, POSITION/ROTATION */ +int _bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bi_setpos] component bi=bi_spec_ellipse() SETTING [bi_spec_ellipse:0]"); + stracpy(_bi_var._name, "bi", 16384); + stracpy(_bi_var._type, "bi_spec_ellipse", 16384); + _bi_var._index=5; + int current_setpos_index = 5; + _bi_var._parameters.xheight = 0.044795; + _bi_var._parameters.ywidth = 0.033273; + _bi_var._parameters.zlength = 0.3; + _bi_var._parameters.n_mirror = 0; + _bi_var._parameters.tilt = 0.7355449343006287; + _bi_var._parameters.n_pieces = 1; + _bi_var._parameters.angular_offset = 0.0274924630093546; + _bi_var._parameters.m = 4; + _bi_var._parameters.R0_m = 0.99; + _bi_var._parameters.Qc_m = 0.0217; + _bi_var._parameters.alpha_mirror_m = 2.5; + _bi_var._parameters.W_m = 0.015; + _bi_var._parameters.transmit = 1; + _bi_var._parameters.d_focus_1_x = 3.443249331959489; + _bi_var._parameters.d_focus_2_x = 4.946749331959489; + _bi_var._parameters.d_focus_1_y = 1.9037386467676676; + _bi_var._parameters.d_focus_2_y = 33.78623864676767; + _bi_var._parameters.ell_l = 0.31; + _bi_var._parameters.ell_h = 0.04381396598275876; + _bi_var._parameters.ell_w = 0.03326371014826339; + _bi_var._parameters.ell_m = 4; + _bi_var._parameters.R0 = 0.99; + _bi_var._parameters.Qc = 0.0217; + _bi_var._parameters.alpha_mirror = 2.5; + _bi_var._parameters.W = 0.0015; + _bi_var._parameters.cut = 3; + _bi_var._parameters.substrate = 0; + _bi_var._parameters.reflect_mirror[0]='\0'; + _bi_var._parameters.reflect[0]='\0'; + + + /* component bi=bi_spec_ellipse() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _Start_of_bi_var._rotation_absolute, _bi_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_bi_var._rotation_absolute, tr1, _bi_var._rotation_relative); + _bi_var._rotation_is_identity = rot_test_identity(_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Start_of_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bi_var._position_absolute = coords_add(_Start_of_bi_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _bi_var._position_absolute); + _bi_var._position_relative = rot_apply(_bi_var._rotation_absolute, tc1); + } /* bi=bi_spec_ellipse() AT ROTATED */ + DEBUG_COMPONENT("bi", _bi_var._position_absolute, _bi_var._rotation_absolute); + instrument->_position_absolute[5] = _bi_var._position_absolute; + instrument->_position_relative[5] = _bi_var._position_relative; + _bi_var._position_relative_is_zero = coords_test_zero(_bi_var._position_relative); + instrument->counter_N[5] = instrument->counter_P[5] = instrument->counter_P2[5] = 0; + instrument->counter_AbsorbProp[5]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0004_bi", _bi_var._position_absolute, _bi_var._rotation_absolute, "bi_spec_ellipse"); + mccomp_param_nexus(nxhandle,"0004_bi", "xheight", "NONE", "0.044795","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ywidth", "NONE", "0.033273","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "zlength", "NONE", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "n_mirror", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "tilt", "0.5", "0.7355449343006287","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "n_pieces", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "angular_offset", "0", "0.0274924630093546","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "R0_m", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "Qc_m", "0.021", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "alpha_mirror_m", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "W_m", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "transmit", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_1_x", "2.5", "3.443249331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_2_x", "5", "4.946749331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_1_y", "2.5", "1.9037386467676676","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_2_y", "5", "33.78623864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_l", "3", "0.31","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_h", "0", "0.04381396598275876","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_w", "0", "0.03326371014826339","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "Qc", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "alpha_mirror", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "W", "0.003", "0.0015","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "cut", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "substrate", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "reflect_mirror", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0004_bi", "reflect", 0, 0, "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bi_setpos */ + +/* component End_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _End_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_End_of_bi_setpos] component End_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_End_of_bi_var._name, "End_of_bi", 16384); + stracpy(_End_of_bi_var._type, "Arm", 16384); + _End_of_bi_var._index=6; + int current_setpos_index = 6; + /* component End_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (-180)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _End_of_bi_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_End_of_bi_var._rotation_absolute, tr1, _End_of_bi_var._rotation_relative); + _End_of_bi_var._rotation_is_identity = rot_test_identity(_End_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _End_of_bi_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _End_of_bi_var._position_absolute); + _End_of_bi_var._position_relative = rot_apply(_End_of_bi_var._rotation_absolute, tc1); + } /* End_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute); + instrument->_position_absolute[6] = _End_of_bi_var._position_absolute; + instrument->_position_relative[6] = _End_of_bi_var._position_relative; + _End_of_bi_var._position_relative_is_zero = coords_test_zero(_End_of_bi_var._position_relative); + instrument->counter_N[6] = instrument->counter_P[6] = instrument->counter_P2[6] = 0; + instrument->counter_AbsorbProp[6]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0005_End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _End_of_bi_setpos */ + +/* component NBOA_drawing_1_end=Guide_four_side() SETTING, POSITION/ROTATION */ +int _NBOA_drawing_1_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_NBOA_drawing_1_end_setpos] component NBOA_drawing_1_end=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_NBOA_drawing_1_end_var._name, "NBOA_drawing_1_end", 16384); + stracpy(_NBOA_drawing_1_end_var._type, "Guide_four_side", 16384); + _NBOA_drawing_1_end_var._index=7; + int current_setpos_index = 7; + _NBOA_drawing_1_end_var._parameters.RIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.ROreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.w1l = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2l = 0.002; + _NBOA_drawing_1_end_var._parameters.linwl = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwl = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.w1r = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2r = 0.002; + _NBOA_drawing_1_end_var._parameters.linwr = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwr = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.h1u = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2u = 0.002; + _NBOA_drawing_1_end_var._parameters.linhu = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthu = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.h1d = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2d = 0.002; + _NBOA_drawing_1_end_var._parameters.linhd = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthd = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.l = 0.5488999999999999; + _NBOA_drawing_1_end_var._parameters.R0 = 0.99; + _NBOA_drawing_1_end_var._parameters.Qcxl = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcxr = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcyu = 0.023; + _NBOA_drawing_1_end_var._parameters.Qcyd = 0.023; + _NBOA_drawing_1_end_var._parameters.alphaxl = 2.5; + _NBOA_drawing_1_end_var._parameters.alphaxr = 2.5; + _NBOA_drawing_1_end_var._parameters.alphayu = 1.8; + _NBOA_drawing_1_end_var._parameters.alphayd = 1.8; + _NBOA_drawing_1_end_var._parameters.Wxr = 0.015; + _NBOA_drawing_1_end_var._parameters.Wxl = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyu = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyd = 0.015; + _NBOA_drawing_1_end_var._parameters.mxr = 4; + _NBOA_drawing_1_end_var._parameters.mxl = 4; + _NBOA_drawing_1_end_var._parameters.myu = 2; + _NBOA_drawing_1_end_var._parameters.myd = 2; + _NBOA_drawing_1_end_var._parameters.QcxrOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcxlOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcyuOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcydOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.alphaxlOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaxrOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphayuOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaydOW = 6.07; + _NBOA_drawing_1_end_var._parameters.WxrOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WxlOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WyuOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WydOW = 0.003; + _NBOA_drawing_1_end_var._parameters.mxrOW = 0; + _NBOA_drawing_1_end_var._parameters.mxlOW = 0; + _NBOA_drawing_1_end_var._parameters.myuOW = 0; + _NBOA_drawing_1_end_var._parameters.mydOW = 0; + _NBOA_drawing_1_end_var._parameters.rwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.lwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.uwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.dwallthick = 0.001; + + + /* component NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_NBOA_drawing_1_end_var._rotation_absolute, tr1, _NBOA_drawing_1_end_var._rotation_relative); + _NBOA_drawing_1_end_var._rotation_is_identity = rot_test_identity(_NBOA_drawing_1_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31000099999999997); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _NBOA_drawing_1_end_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _NBOA_drawing_1_end_var._position_absolute); + _NBOA_drawing_1_end_var._position_relative = rot_apply(_NBOA_drawing_1_end_var._rotation_absolute, tc1); + } /* NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + instrument->_position_absolute[7] = _NBOA_drawing_1_end_var._position_absolute; + instrument->_position_relative[7] = _NBOA_drawing_1_end_var._position_relative; + _NBOA_drawing_1_end_var._position_relative_is_zero = coords_test_zero(_NBOA_drawing_1_end_var._position_relative); + instrument->counter_N[7] = instrument->counter_P[7] = instrument->counter_P2[7] = 0; + instrument->counter_AbsorbProp[7]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0006_NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w1l", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linwl", "0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "loutwl", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w1r", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linwr", "0.0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "loutwr", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h1u", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linhu", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "louthu", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h1d", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linhd", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "louthd", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "l", "0", "0.5488999999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _NBOA_drawing_1_end_setpos */ + +/* component g1a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a2_setpos] component g1a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a2_var._name, "g1a2", 16384); + stracpy(_g1a2_var._type, "Guide_four_side", 16384); + _g1a2_var._index=8; + int current_setpos_index = 8; + _g1a2_var._parameters.RIreflect[0]='\0'; + _g1a2_var._parameters.LIreflect[0]='\0'; + _g1a2_var._parameters.UIreflect[0]='\0'; + _g1a2_var._parameters.DIreflect[0]='\0'; + _g1a2_var._parameters.ROreflect[0]='\0'; + _g1a2_var._parameters.LOreflect[0]='\0'; + _g1a2_var._parameters.UOreflect[0]='\0'; + _g1a2_var._parameters.DOreflect[0]='\0'; + _g1a2_var._parameters.w1l = 0.022397711974319966; + _g1a2_var._parameters.w2l = 0.002; + _g1a2_var._parameters.linwl = 4.303349331959489; + _g1a2_var._parameters.loutwl = 3.3968493319594883; + _g1a2_var._parameters.w1r = 0.022397711974319966; + _g1a2_var._parameters.w2r = 0.002; + _g1a2_var._parameters.linwr = 4.303349331959489; + _g1a2_var._parameters.loutwr = 3.3968493319594883; + _g1a2_var._parameters.h1u = 0.019790525295492974; + _g1a2_var._parameters.h2u = 0.002; + _g1a2_var._parameters.linhu = 2.763788626121542; + _g1a2_var._parameters.louthu = 32.236388626121546; + _g1a2_var._parameters.h1d = 0.019790525295492974; + _g1a2_var._parameters.h2d = 0.002; + _g1a2_var._parameters.linhd = 2.763788626121542; + _g1a2_var._parameters.louthd = 32.236388626121546; + _g1a2_var._parameters.l = 0.9998; + _g1a2_var._parameters.R0 = 0.99; + _g1a2_var._parameters.Qcxl = 0.0217; + _g1a2_var._parameters.Qcxr = 0.0217; + _g1a2_var._parameters.Qcyu = 0.0217; + _g1a2_var._parameters.Qcyd = 0.0217; + _g1a2_var._parameters.alphaxl = 2.5; + _g1a2_var._parameters.alphaxr = 2.5; + _g1a2_var._parameters.alphayu = 2.5; + _g1a2_var._parameters.alphayd = 2.5; + _g1a2_var._parameters.Wxr = 0.015; + _g1a2_var._parameters.Wxl = 0.015; + _g1a2_var._parameters.Wyu = 0.015; + _g1a2_var._parameters.Wyd = 0.015; + _g1a2_var._parameters.mxr = 4; + _g1a2_var._parameters.mxl = 4; + _g1a2_var._parameters.myu = 4; + _g1a2_var._parameters.myd = 4; + _g1a2_var._parameters.QcxrOW = 0.0217; + _g1a2_var._parameters.QcxlOW = 0.0217; + _g1a2_var._parameters.QcyuOW = 0.0217; + _g1a2_var._parameters.QcydOW = 0.0217; + _g1a2_var._parameters.alphaxlOW = 6.07; + _g1a2_var._parameters.alphaxrOW = 6.07; + _g1a2_var._parameters.alphayuOW = 6.07; + _g1a2_var._parameters.alphaydOW = 6.07; + _g1a2_var._parameters.WxrOW = 0.003; + _g1a2_var._parameters.WxlOW = 0.003; + _g1a2_var._parameters.WyuOW = 0.003; + _g1a2_var._parameters.WydOW = 0.003; + _g1a2_var._parameters.mxrOW = 0; + _g1a2_var._parameters.mxlOW = 0; + _g1a2_var._parameters.myuOW = 0; + _g1a2_var._parameters.mydOW = 0; + _g1a2_var._parameters.rwallthick = 0.001; + _g1a2_var._parameters.lwallthick = 0.001; + _g1a2_var._parameters.uwallthick = 0.001; + _g1a2_var._parameters.dwallthick = 0.001; + + + /* component g1a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _NBOA_drawing_1_end_var._rotation_absolute, _g1a2_var._rotation_absolute); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + rot_mul(_g1a2_var._rotation_absolute, tr1, _g1a2_var._rotation_relative); + _g1a2_var._rotation_is_identity = rot_test_identity(_g1a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.548901); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a2_var._position_absolute = coords_add(_NBOA_drawing_1_end_var._position_absolute, tc2); + tc1 = coords_sub(_NBOA_drawing_1_end_var._position_absolute, _g1a2_var._position_absolute); + _g1a2_var._position_relative = rot_apply(_g1a2_var._rotation_absolute, tc1); + } /* g1a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute); + instrument->_position_absolute[8] = _g1a2_var._position_absolute; + instrument->_position_relative[8] = _g1a2_var._position_relative; + _g1a2_var._position_relative_is_zero = coords_test_zero(_g1a2_var._position_relative); + instrument->counter_N[8] = instrument->counter_P[8] = instrument->counter_P2[8] = 0; + instrument->counter_AbsorbProp[8]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0007_g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w1l", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linwl", "0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "loutwl", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w1r", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linwr", "0.0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "loutwr", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h1u", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linhu", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "louthu", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h1d", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linhd", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "louthd", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "l", "0", "0.9998","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a2_setpos */ + +/* component g1a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a3_setpos] component g1a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a3_var._name, "g1a3", 16384); + stracpy(_g1a3_var._type, "Guide_four_side", 16384); + _g1a3_var._index=9; + int current_setpos_index = 9; + _g1a3_var._parameters.RIreflect[0]='\0'; + _g1a3_var._parameters.LIreflect[0]='\0'; + _g1a3_var._parameters.UIreflect[0]='\0'; + _g1a3_var._parameters.DIreflect[0]='\0'; + _g1a3_var._parameters.ROreflect[0]='\0'; + _g1a3_var._parameters.LOreflect[0]='\0'; + _g1a3_var._parameters.UOreflect[0]='\0'; + _g1a3_var._parameters.DOreflect[0]='\0'; + _g1a3_var._parameters.w1l = 0.021853309009560024; + _g1a3_var._parameters.w2l = 0.002; + _g1a3_var._parameters.linwl = 5.3043493319594885; + _g1a3_var._parameters.loutwl = 1.8968293319594889; + _g1a3_var._parameters.w1r = 0.021853309009560024; + _g1a3_var._parameters.w2r = 0.002; + _g1a3_var._parameters.linwr = 5.3043493319594885; + _g1a3_var._parameters.loutwr = 1.8968293319594889; + _g1a3_var._parameters.h1u = 0.02274764602619812; + _g1a3_var._parameters.h2u = 0.002; + _g1a3_var._parameters.linhu = 3.7648386261215414; + _g1a3_var._parameters.louthu = 30.73631862612154; + _g1a3_var._parameters.h1d = 0.02274764602619812; + _g1a3_var._parameters.h2d = 0.002; + _g1a3_var._parameters.linhd = 3.7648386261215414; + _g1a3_var._parameters.louthd = 30.73631862612154; + _g1a3_var._parameters.l = 1.49882; + _g1a3_var._parameters.R0 = 0.99; + _g1a3_var._parameters.Qcxl = 0.0217; + _g1a3_var._parameters.Qcxr = 0.0217; + _g1a3_var._parameters.Qcyu = 0.0217; + _g1a3_var._parameters.Qcyd = 0.0217; + _g1a3_var._parameters.alphaxl = 2.5; + _g1a3_var._parameters.alphaxr = 2.5; + _g1a3_var._parameters.alphayu = 2.5; + _g1a3_var._parameters.alphayd = 2.5; + _g1a3_var._parameters.Wxr = 0.015; + _g1a3_var._parameters.Wxl = 0.015; + _g1a3_var._parameters.Wyu = 0.015; + _g1a3_var._parameters.Wyd = 0.015; + _g1a3_var._parameters.mxr = 4; + _g1a3_var._parameters.mxl = 4; + _g1a3_var._parameters.myu = 4; + _g1a3_var._parameters.myd = 4; + _g1a3_var._parameters.QcxrOW = 0.0217; + _g1a3_var._parameters.QcxlOW = 0.0217; + _g1a3_var._parameters.QcyuOW = 0.0217; + _g1a3_var._parameters.QcydOW = 0.0217; + _g1a3_var._parameters.alphaxlOW = 6.07; + _g1a3_var._parameters.alphaxrOW = 6.07; + _g1a3_var._parameters.alphayuOW = 6.07; + _g1a3_var._parameters.alphaydOW = 6.07; + _g1a3_var._parameters.WxrOW = 0.003; + _g1a3_var._parameters.WxlOW = 0.003; + _g1a3_var._parameters.WyuOW = 0.003; + _g1a3_var._parameters.WydOW = 0.003; + _g1a3_var._parameters.mxrOW = 0; + _g1a3_var._parameters.mxlOW = 0; + _g1a3_var._parameters.myuOW = 0; + _g1a3_var._parameters.mydOW = 0; + _g1a3_var._parameters.rwallthick = 0.001; + _g1a3_var._parameters.lwallthick = 0.001; + _g1a3_var._parameters.uwallthick = 0.001; + _g1a3_var._parameters.dwallthick = 0.001; + + + /* component g1a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _g1a2_var._rotation_absolute, _g1a3_var._rotation_absolute); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + rot_mul(_g1a3_var._rotation_absolute, tr1, _g1a3_var._rotation_relative); + _g1a3_var._rotation_is_identity = rot_test_identity(_g1a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.999801); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a3_var._position_absolute = coords_add(_g1a2_var._position_absolute, tc2); + tc1 = coords_sub(_g1a2_var._position_absolute, _g1a3_var._position_absolute); + _g1a3_var._position_relative = rot_apply(_g1a3_var._rotation_absolute, tc1); + } /* g1a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute); + instrument->_position_absolute[9] = _g1a3_var._position_absolute; + instrument->_position_relative[9] = _g1a3_var._position_relative; + _g1a3_var._position_relative_is_zero = coords_test_zero(_g1a3_var._position_relative); + instrument->counter_N[9] = instrument->counter_P[9] = instrument->counter_P2[9] = 0; + instrument->counter_AbsorbProp[9]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0008_g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w1l", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linwl", "0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "loutwl", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w1r", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linwr", "0.0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "loutwr", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h1u", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linhu", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "louthu", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h1d", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linhd", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "louthd", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "l", "0", "1.49882","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a3_setpos */ + +/* component g1b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1b1_setpos] component g1b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1b1_var._name, "g1b1", 16384); + stracpy(_g1b1_var._type, "Guide_four_side", 16384); + _g1b1_var._index=10; + int current_setpos_index = 10; + _g1b1_var._parameters.RIreflect[0]='\0'; + _g1b1_var._parameters.LIreflect[0]='\0'; + _g1b1_var._parameters.UIreflect[0]='\0'; + _g1b1_var._parameters.DIreflect[0]='\0'; + _g1b1_var._parameters.ROreflect[0]='\0'; + _g1b1_var._parameters.LOreflect[0]='\0'; + _g1b1_var._parameters.UOreflect[0]='\0'; + _g1b1_var._parameters.DOreflect[0]='\0'; + _g1b1_var._parameters.w1l = 0.017955; + _g1b1_var._parameters.w2l = 0.002; + _g1b1_var._parameters.linwl = 6.82655; + _g1b1_var._parameters.loutwl = 1.3934509999999998; + _g1b1_var._parameters.w1r = 0.017955; + _g1b1_var._parameters.w2r = 0.002; + _g1b1_var._parameters.linwr = 6.82655; + _g1b1_var._parameters.loutwr = 1.3934509999999998; + _g1b1_var._parameters.h1u = 0.026565; + _g1b1_var._parameters.h2u = 0.002; + _g1b1_var._parameters.linhu = 5.2842144; + _g1b1_var._parameters.louthu = 30.232929999999996; + _g1b1_var._parameters.h1d = 0.026565; + _g1b1_var._parameters.h2d = 0.002; + _g1b1_var._parameters.linhd = 5.2842144; + _g1b1_var._parameters.louthd = 30.232929999999996; + _g1b1_var._parameters.l = 0.48300000000000054; + _g1b1_var._parameters.R0 = 0.99; + _g1b1_var._parameters.Qcxl = 0.0217; + _g1b1_var._parameters.Qcxr = 0.0217; + _g1b1_var._parameters.Qcyu = 0.0221; + _g1b1_var._parameters.Qcyd = 0.0221; + _g1b1_var._parameters.alphaxl = 2.5; + _g1b1_var._parameters.alphaxr = 2.5; + _g1b1_var._parameters.alphayu = 1.75; + _g1b1_var._parameters.alphayd = 1.75; + _g1b1_var._parameters.Wxr = 0.015; + _g1b1_var._parameters.Wxl = 0.015; + _g1b1_var._parameters.Wyu = 0.015; + _g1b1_var._parameters.Wyd = 0.015; + _g1b1_var._parameters.mxr = 4; + _g1b1_var._parameters.mxl = 4; + _g1b1_var._parameters.myu = 2.5; + _g1b1_var._parameters.myd = 2.5; + _g1b1_var._parameters.QcxrOW = 0.0217; + _g1b1_var._parameters.QcxlOW = 0.0217; + _g1b1_var._parameters.QcyuOW = 0.0217; + _g1b1_var._parameters.QcydOW = 0.0217; + _g1b1_var._parameters.alphaxlOW = 6.07; + _g1b1_var._parameters.alphaxrOW = 6.07; + _g1b1_var._parameters.alphayuOW = 6.07; + _g1b1_var._parameters.alphaydOW = 6.07; + _g1b1_var._parameters.WxrOW = 0.003; + _g1b1_var._parameters.WxlOW = 0.003; + _g1b1_var._parameters.WyuOW = 0.003; + _g1b1_var._parameters.WydOW = 0.003; + _g1b1_var._parameters.mxrOW = 0; + _g1b1_var._parameters.mxlOW = 0; + _g1b1_var._parameters.myuOW = 0; + _g1b1_var._parameters.mydOW = 0; + _g1b1_var._parameters.rwallthick = 0.001; + _g1b1_var._parameters.lwallthick = 0.001; + _g1b1_var._parameters.uwallthick = 0.001; + _g1b1_var._parameters.dwallthick = 0.001; + + + /* component g1b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1b1_var._rotation_absolute); + rot_transpose(_g1a3_var._rotation_absolute, tr1); + rot_mul(_g1b1_var._rotation_absolute, tr1, _g1b1_var._rotation_relative); + _g1b1_var._rotation_is_identity = rot_test_identity(_g1b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.4109); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1a3_var._position_absolute, _g1b1_var._position_absolute); + _g1b1_var._position_relative = rot_apply(_g1b1_var._rotation_absolute, tc1); + } /* g1b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute); + instrument->_position_absolute[10] = _g1b1_var._position_absolute; + instrument->_position_relative[10] = _g1b1_var._position_relative; + _g1b1_var._position_relative_is_zero = coords_test_zero(_g1b1_var._position_relative); + instrument->counter_N[10] = instrument->counter_P[10] = instrument->counter_P2[10] = 0; + instrument->counter_AbsorbProp[10]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0009_g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w1l", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linwl", "0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "loutwl", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w1r", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linwr", "0.0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "loutwr", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h1u", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linhu", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "louthu", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h1d", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linhd", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "louthd", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "l", "0", "0.48300000000000054","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1b1_setpos */ + +/* component g1c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1c1_setpos] component g1c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1c1_var._name, "g1c1", 16384); + stracpy(_g1c1_var._type, "Guide_four_side", 16384); + _g1c1_var._index=11; + int current_setpos_index = 11; + _g1c1_var._parameters.RIreflect[0]='\0'; + _g1c1_var._parameters.LIreflect[0]='\0'; + _g1c1_var._parameters.UIreflect[0]='\0'; + _g1c1_var._parameters.DIreflect[0]='\0'; + _g1c1_var._parameters.ROreflect[0]='\0'; + _g1c1_var._parameters.LOreflect[0]='\0'; + _g1c1_var._parameters.UOreflect[0]='\0'; + _g1c1_var._parameters.DOreflect[0]='\0'; + _g1c1_var._parameters.w1l = 0.015725; + _g1c1_var._parameters.w2l = 0.002; + _g1c1_var._parameters.linwl = 7.323650000000001; + _g1c1_var._parameters.loutwl = 0.5472510000000002; + _g1c1_var._parameters.w1r = 0.015725; + _g1c1_var._parameters.w2r = 0.002; + _g1c1_var._parameters.linwr = 7.323650000000001; + _g1c1_var._parameters.loutwr = 0.5472510000000002; + _g1c1_var._parameters.h1u = 0.02753; + _g1c1_var._parameters.h2u = 0.002; + _g1c1_var._parameters.linhu = 5.7813144; + _g1c1_var._parameters.louthu = 29.38673; + _g1c1_var._parameters.h1d = 0.02753; + _g1c1_var._parameters.h2d = 0.002; + _g1c1_var._parameters.linhd = 5.7813144; + _g1c1_var._parameters.louthd = 29.38673; + _g1c1_var._parameters.l = 0.8320999999999996; + _g1c1_var._parameters.R0 = 0.99; + _g1c1_var._parameters.Qcxl = 0.0217; + _g1c1_var._parameters.Qcxr = 0.0217; + _g1c1_var._parameters.Qcyu = 0.0221; + _g1c1_var._parameters.Qcyd = 0.0221; + _g1c1_var._parameters.alphaxl = 2.5; + _g1c1_var._parameters.alphaxr = 2.5; + _g1c1_var._parameters.alphayu = 1.75; + _g1c1_var._parameters.alphayd = 1.75; + _g1c1_var._parameters.Wxr = 0.015; + _g1c1_var._parameters.Wxl = 0.015; + _g1c1_var._parameters.Wyu = 0.015; + _g1c1_var._parameters.Wyd = 0.015; + _g1c1_var._parameters.mxr = 4; + _g1c1_var._parameters.mxl = 4; + _g1c1_var._parameters.myu = 2.5; + _g1c1_var._parameters.myd = 2.5; + _g1c1_var._parameters.QcxrOW = 0.0217; + _g1c1_var._parameters.QcxlOW = 0.0217; + _g1c1_var._parameters.QcyuOW = 0.0217; + _g1c1_var._parameters.QcydOW = 0.0217; + _g1c1_var._parameters.alphaxlOW = 6.07; + _g1c1_var._parameters.alphaxrOW = 6.07; + _g1c1_var._parameters.alphayuOW = 6.07; + _g1c1_var._parameters.alphaydOW = 6.07; + _g1c1_var._parameters.WxrOW = 0.003; + _g1c1_var._parameters.WxlOW = 0.003; + _g1c1_var._parameters.WyuOW = 0.003; + _g1c1_var._parameters.WydOW = 0.003; + _g1c1_var._parameters.mxrOW = 0; + _g1c1_var._parameters.mxlOW = 0; + _g1c1_var._parameters.myuOW = 0; + _g1c1_var._parameters.mydOW = 0; + _g1c1_var._parameters.rwallthick = 0.001; + _g1c1_var._parameters.lwallthick = 0.001; + _g1c1_var._parameters.uwallthick = 0.001; + _g1c1_var._parameters.dwallthick = 0.001; + + + /* component g1c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1c1_var._rotation_absolute); + rot_transpose(_g1b1_var._rotation_absolute, tr1); + rot_mul(_g1c1_var._rotation_absolute, tr1, _g1c1_var._rotation_relative); + _g1c1_var._rotation_is_identity = rot_test_identity(_g1c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.908); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1b1_var._position_absolute, _g1c1_var._position_absolute); + _g1c1_var._position_relative = rot_apply(_g1c1_var._rotation_absolute, tc1); + } /* g1c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute); + instrument->_position_absolute[11] = _g1c1_var._position_absolute; + instrument->_position_relative[11] = _g1c1_var._position_relative; + _g1c1_var._position_relative_is_zero = coords_test_zero(_g1c1_var._position_relative); + instrument->counter_N[11] = instrument->counter_P[11] = instrument->counter_P2[11] = 0; + instrument->counter_AbsorbProp[11]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0010_g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w1l", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linwl", "0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "loutwl", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w1r", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linwr", "0.0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "loutwr", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h1u", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linhu", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "louthu", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h1d", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linhd", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "louthd", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "l", "0", "0.8320999999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1c1_setpos */ + +/* component wfm_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_position_setpos] component wfm_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_position_var._name, "wfm_position", 16384); + stracpy(_wfm_position_var._type, "Arm", 16384); + _wfm_position_var._index=12; + int current_setpos_index = 12; + /* component wfm_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _wfm_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_position_var._rotation_absolute, tr1, _wfm_position_var._rotation_relative); + _wfm_position_var._rotation_is_identity = rot_test_identity(_wfm_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_position_var._position_absolute); + _wfm_position_var._position_relative = rot_apply(_wfm_position_var._rotation_absolute, tc1); + } /* wfm_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute); + instrument->_position_absolute[12] = _wfm_position_var._position_absolute; + instrument->_position_relative[12] = _wfm_position_var._position_relative; + _wfm_position_var._position_relative_is_zero = coords_test_zero(_wfm_position_var._position_relative); + instrument->counter_N[12] = instrument->counter_P[12] = instrument->counter_P2[12] = 0; + instrument->counter_AbsorbProp[12]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0011_wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_position_setpos */ + +/* component wfm_1_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_1_position_setpos] component wfm_1_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_1_position_var._name, "wfm_1_position", 16384); + stracpy(_wfm_1_position_var._type, "Arm", 16384); + _wfm_1_position_var._index=13; + int current_setpos_index = 13; + /* component wfm_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_1_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_1_position_var._rotation_absolute, tr1, _wfm_1_position_var._rotation_relative); + _wfm_1_position_var._rotation_is_identity = rot_test_identity(_wfm_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, -0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_1_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_1_position_var._position_absolute); + _wfm_1_position_var._position_relative = rot_apply(_wfm_1_position_var._rotation_absolute, tc1); + } /* wfm_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute); + instrument->_position_absolute[13] = _wfm_1_position_var._position_absolute; + instrument->_position_relative[13] = _wfm_1_position_var._position_relative; + _wfm_1_position_var._position_relative_is_zero = coords_test_zero(_wfm_1_position_var._position_relative); + instrument->counter_N[13] = instrument->counter_P[13] = instrument->counter_P2[13] = 0; + instrument->counter_AbsorbProp[13]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0012_wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_1_position_setpos */ + +/* component wfmc_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_1_setpos] component wfmc_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_1_var._name, "wfmc_1", 16384); + stracpy(_wfmc_1_var._type, "MultiDiskChopper", 16384); + _wfmc_1_var._index=14; + int current_setpos_index = 14; + if("5.62;-44.68;-91.85;-136.08;-177.55;143.56" && strlen("5.62;-44.68;-91.85;-136.08;-177.55;143.56")) + stracpy(_wfmc_1_var._parameters.slit_center, "5.62;-44.68;-91.85;-136.08;-177.55;143.56" ? "5.62;-44.68;-91.85;-136.08;-177.55;143.56" : "", 16384); + else + _wfmc_1_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_1_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_1_var._parameters.slit_width[0]='\0'; + _wfmc_1_var._parameters.nslits = 6; + _wfmc_1_var._parameters.delta_y = -0.31499999999999995; + _wfmc_1_var._parameters.nu = -56.0; + _wfmc_1_var._parameters.nrev = 0; + _wfmc_1_var._parameters.ratio = 1; + _wfmc_1_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_1; + _wfmc_1_var._parameters.delay = 0; + _wfmc_1_var._parameters.isfirst = 0; + _wfmc_1_var._parameters.phase = WFM1_phase; + _wfmc_1_var._parameters.radius = 0.35; + _wfmc_1_var._parameters.equal = 0; + _wfmc_1_var._parameters.abs_out = 0; + _wfmc_1_var._parameters.verbose = 0; + + + /* component wfmc_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_1_position_var._rotation_absolute, _wfmc_1_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfmc_1_var._rotation_absolute, tr1, _wfmc_1_var._rotation_relative); + _wfmc_1_var._rotation_is_identity = rot_test_identity(_wfmc_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_1_var._position_absolute = coords_add(_wfm_1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfmc_1_var._position_absolute); + _wfmc_1_var._position_relative = rot_apply(_wfmc_1_var._rotation_absolute, tc1); + } /* wfmc_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute); + instrument->_position_absolute[14] = _wfmc_1_var._position_absolute; + instrument->_position_relative[14] = _wfmc_1_var._position_relative; + _wfmc_1_var._position_relative_is_zero = coords_test_zero(_wfmc_1_var._position_relative); + instrument->counter_N[14] = instrument->counter_P[14] = instrument->counter_P2[14] = 0; + instrument->counter_AbsorbProp[14]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0013_wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "slit_center", "0 180", "5.62;-44.68;-91.85;-136.08;-177.55;143.56", "char*"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "phase", "0", "WFM1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_1_setpos */ + +/* component pinhole_1=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_1_setpos] component pinhole_1=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_1_var._name, "pinhole_1", 16384); + stracpy(_pinhole_1_var._type, "Slit", 16384); + _pinhole_1_var._index=15; + int current_setpos_index = 15; + _pinhole_1_var._parameters.xmin = UNSET; + _pinhole_1_var._parameters.xmax = UNSET; + _pinhole_1_var._parameters.ymin = UNSET; + _pinhole_1_var._parameters.ymax = UNSET; + _pinhole_1_var._parameters.radius = UNSET; + _pinhole_1_var._parameters.xwidth = 0.015; + _pinhole_1_var._parameters.yheight = 0.06; + + + /* component pinhole_1=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _pinhole_1_var._rotation_absolute); + rot_transpose(_wfmc_1_var._rotation_absolute, tr1); + rot_mul(_pinhole_1_var._rotation_absolute, tr1, _pinhole_1_var._rotation_relative); + _pinhole_1_var._rotation_is_identity = rot_test_identity(_pinhole_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_1_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_1_var._position_absolute, _pinhole_1_var._position_absolute); + _pinhole_1_var._position_relative = rot_apply(_pinhole_1_var._rotation_absolute, tc1); + } /* pinhole_1=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute); + instrument->_position_absolute[15] = _pinhole_1_var._position_absolute; + instrument->_position_relative[15] = _pinhole_1_var._position_relative; + _pinhole_1_var._position_relative_is_zero = coords_test_zero(_pinhole_1_var._position_relative); + instrument->counter_N[15] = instrument->counter_P[15] = instrument->counter_P2[15] = 0; + instrument->counter_AbsorbProp[15]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0014_pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xwidth", "UNSET", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "yheight", "UNSET", "0.06","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_1_setpos */ + +/* component wfm_2_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_2_position_setpos] component wfm_2_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_2_position_var._name, "wfm_2_position", 16384); + stracpy(_wfm_2_position_var._type, "Arm", 16384); + _wfm_2_position_var._index=16; + int current_setpos_index = 16; + /* component wfm_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_2_position_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfm_2_position_var._rotation_absolute, tr1, _wfm_2_position_var._rotation_relative); + _wfm_2_position_var._rotation_is_identity = rot_test_identity(_wfm_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_2_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfm_2_position_var._position_absolute); + _wfm_2_position_var._position_relative = rot_apply(_wfm_2_position_var._rotation_absolute, tc1); + } /* wfm_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute); + instrument->_position_absolute[16] = _wfm_2_position_var._position_absolute; + instrument->_position_relative[16] = _wfm_2_position_var._position_relative; + _wfm_2_position_var._position_relative_is_zero = coords_test_zero(_wfm_2_position_var._position_relative); + instrument->counter_N[16] = instrument->counter_P[16] = instrument->counter_P2[16] = 0; + instrument->counter_AbsorbProp[16]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0015_wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_2_position_setpos */ + +/* component wfmc_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_2_setpos] component wfmc_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_2_var._name, "wfmc_2", 16384); + stracpy(_wfmc_2_var._type, "MultiDiskChopper", 16384); + _wfmc_2_var._index=17; + int current_setpos_index = 17; + if("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" && strlen("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028")) + stracpy(_wfmc_2_var._parameters.slit_center, "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" ? "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" : "", 16384); + else + _wfmc_2_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_2_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_2_var._parameters.slit_width[0]='\0'; + _wfmc_2_var._parameters.nslits = 6; + _wfmc_2_var._parameters.delta_y = -0.31499999999999995; + _wfmc_2_var._parameters.nu = -56.0; + _wfmc_2_var._parameters.nrev = 0; + _wfmc_2_var._parameters.ratio = 1; + _wfmc_2_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_2; + _wfmc_2_var._parameters.delay = 0; + _wfmc_2_var._parameters.isfirst = 0; + _wfmc_2_var._parameters.phase = WFM2_phase; + _wfmc_2_var._parameters.radius = 0.35; + _wfmc_2_var._parameters.equal = 0; + _wfmc_2_var._parameters.abs_out = 0; + _wfmc_2_var._parameters.verbose = 0; + + + /* component wfmc_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_2_position_var._rotation_absolute, _wfmc_2_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfmc_2_var._rotation_absolute, tr1, _wfmc_2_var._rotation_relative); + _wfmc_2_var._rotation_is_identity = rot_test_identity(_wfmc_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_2_var._position_absolute = coords_add(_wfm_2_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfmc_2_var._position_absolute); + _wfmc_2_var._position_relative = rot_apply(_wfmc_2_var._rotation_absolute, tc1); + } /* wfmc_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute); + instrument->_position_absolute[17] = _wfmc_2_var._position_absolute; + instrument->_position_relative[17] = _wfmc_2_var._position_relative; + _wfmc_2_var._position_relative_is_zero = coords_test_zero(_wfmc_2_var._position_relative); + instrument->counter_N[17] = instrument->counter_P[17] = instrument->counter_P2[17] = 0; + instrument->counter_AbsorbProp[17]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0016_wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "slit_center", "0 180", "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", "char*"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "phase", "0", "WFM2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_2_setpos */ + +/* component g2a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a1_setpos] component g2a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a1_var._name, "g2a1", 16384); + stracpy(_g2a1_var._type, "Guide_four_side", 16384); + _g2a1_var._index=18; + int current_setpos_index = 18; + _g2a1_var._parameters.RIreflect[0]='\0'; + _g2a1_var._parameters.LIreflect[0]='\0'; + _g2a1_var._parameters.UIreflect[0]='\0'; + _g2a1_var._parameters.DIreflect[0]='\0'; + _g2a1_var._parameters.ROreflect[0]='\0'; + _g2a1_var._parameters.LOreflect[0]='\0'; + _g2a1_var._parameters.UOreflect[0]='\0'; + _g2a1_var._parameters.DOreflect[0]='\0'; + _g2a1_var._parameters.w1l = 0.01121; + _g2a1_var._parameters.w2l = 0.002; + _g2a1_var._parameters.linwl = 0.25980000000000025; + _g2a1_var._parameters.loutwl = 12.040199999999999; + _g2a1_var._parameters.w1r = 0.01121; + _g2a1_var._parameters.w2r = 0.002; + _g2a1_var._parameters.linwr = 0.25980000000000025; + _g2a1_var._parameters.loutwr = 12.040199999999999; + _g2a1_var._parameters.h1u = 0.029825; + _g2a1_var._parameters.h2u = 0.002; + _g2a1_var._parameters.linhu = 7.2598; + _g2a1_var._parameters.louthu = 28.0402; + _g2a1_var._parameters.h1d = 0.029825; + _g2a1_var._parameters.h2d = 0.002; + _g2a1_var._parameters.linhd = 7.2598; + _g2a1_var._parameters.louthd = 28.0402; + _g2a1_var._parameters.l = 0.7000000000000002; + _g2a1_var._parameters.R0 = 0.99; + _g2a1_var._parameters.Qcxl = 0.023; + _g2a1_var._parameters.Qcxr = 0.023; + _g2a1_var._parameters.Qcyu = 0.0221; + _g2a1_var._parameters.Qcyd = 0.0221; + _g2a1_var._parameters.alphaxl = 1.8; + _g2a1_var._parameters.alphaxr = 1.8; + _g2a1_var._parameters.alphayu = 1.75; + _g2a1_var._parameters.alphayd = 1.75; + _g2a1_var._parameters.Wxr = 0.015; + _g2a1_var._parameters.Wxl = 0.015; + _g2a1_var._parameters.Wyu = 0.015; + _g2a1_var._parameters.Wyd = 0.015; + _g2a1_var._parameters.mxr = 2; + _g2a1_var._parameters.mxl = 2; + _g2a1_var._parameters.myu = 3; + _g2a1_var._parameters.myd = 3; + _g2a1_var._parameters.QcxrOW = 0.0217; + _g2a1_var._parameters.QcxlOW = 0.0217; + _g2a1_var._parameters.QcyuOW = 0.0217; + _g2a1_var._parameters.QcydOW = 0.0217; + _g2a1_var._parameters.alphaxlOW = 6.07; + _g2a1_var._parameters.alphaxrOW = 6.07; + _g2a1_var._parameters.alphayuOW = 6.07; + _g2a1_var._parameters.alphaydOW = 6.07; + _g2a1_var._parameters.WxrOW = 0.003; + _g2a1_var._parameters.WxlOW = 0.003; + _g2a1_var._parameters.WyuOW = 0.003; + _g2a1_var._parameters.WydOW = 0.003; + _g2a1_var._parameters.mxrOW = 0; + _g2a1_var._parameters.mxlOW = 0; + _g2a1_var._parameters.myuOW = 0; + _g2a1_var._parameters.mydOW = 0; + _g2a1_var._parameters.rwallthick = 0.001; + _g2a1_var._parameters.lwallthick = 0.001; + _g2a1_var._parameters.uwallthick = 0.001; + _g2a1_var._parameters.dwallthick = 0.001; + + + /* component g2a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a1_var._rotation_absolute); + rot_transpose(_wfmc_2_var._rotation_absolute, tr1); + rot_mul(_g2a1_var._rotation_absolute, tr1, _g2a1_var._rotation_relative); + _g2a1_var._rotation_is_identity = rot_test_identity(_g2a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.247800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_2_var._position_absolute, _g2a1_var._position_absolute); + _g2a1_var._position_relative = rot_apply(_g2a1_var._rotation_absolute, tc1); + } /* g2a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute); + instrument->_position_absolute[18] = _g2a1_var._position_absolute; + instrument->_position_relative[18] = _g2a1_var._position_relative; + _g2a1_var._position_relative_is_zero = coords_test_zero(_g2a1_var._position_relative); + instrument->counter_N[18] = instrument->counter_P[18] = instrument->counter_P2[18] = 0; + instrument->counter_AbsorbProp[18]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0017_g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w1l", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linwl", "0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "loutwl", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w1r", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linwr", "0.0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "loutwr", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h1u", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linhu", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "louthu", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h1d", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linhd", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "louthd", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "l", "0", "0.7000000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a1_setpos */ + +/* component monitor_1_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_1_position_setpos] component monitor_1_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_1_position_var._name, "monitor_1_position", 16384); + stracpy(_monitor_1_position_var._type, "Arm", 16384); + _monitor_1_position_var._index=19; + int current_setpos_index = 19; + /* component monitor_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_1_position_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_monitor_1_position_var._rotation_absolute, tr1, _monitor_1_position_var._rotation_relative); + _monitor_1_position_var._rotation_is_identity = rot_test_identity(_monitor_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.96); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _monitor_1_position_var._position_absolute); + _monitor_1_position_var._position_relative = rot_apply(_monitor_1_position_var._rotation_absolute, tc1); + } /* monitor_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute); + instrument->_position_absolute[19] = _monitor_1_position_var._position_absolute; + instrument->_position_relative[19] = _monitor_1_position_var._position_relative; + _monitor_1_position_var._position_relative_is_zero = coords_test_zero(_monitor_1_position_var._position_relative); + instrument->counter_N[19] = instrument->counter_P[19] = instrument->counter_P2[19] = 0; + instrument->counter_AbsorbProp[19]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0018_monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_1_position_setpos */ + +/* component g2a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a2_setpos] component g2a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a2_var._name, "g2a2", 16384); + stracpy(_g2a2_var._type, "Guide_four_side", 16384); + _g2a2_var._index=20; + int current_setpos_index = 20; + _g2a2_var._parameters.RIreflect[0]='\0'; + _g2a2_var._parameters.LIreflect[0]='\0'; + _g2a2_var._parameters.UIreflect[0]='\0'; + _g2a2_var._parameters.DIreflect[0]='\0'; + _g2a2_var._parameters.ROreflect[0]='\0'; + _g2a2_var._parameters.LOreflect[0]='\0'; + _g2a2_var._parameters.UOreflect[0]='\0'; + _g2a2_var._parameters.DOreflect[0]='\0'; + _g2a2_var._parameters.w1l = 0.0212; + _g2a2_var._parameters.w2l = 0.002; + _g2a2_var._parameters.linwl = 0.9858000000000002; + _g2a2_var._parameters.loutwl = 11.6045; + _g2a2_var._parameters.w1r = 0.0212; + _g2a2_var._parameters.w2r = 0.002; + _g2a2_var._parameters.linwr = 0.9858000000000002; + _g2a2_var._parameters.loutwr = 11.6045; + _g2a2_var._parameters.h1u = 0.03088; + _g2a2_var._parameters.h2u = 0.002; + _g2a2_var._parameters.linhu = 7.9858; + _g2a2_var._parameters.louthu = 27.6045; + _g2a2_var._parameters.h1d = 0.03088; + _g2a2_var._parameters.h2d = 0.002; + _g2a2_var._parameters.linhd = 7.9858; + _g2a2_var._parameters.louthd = 27.6045; + _g2a2_var._parameters.l = 0.40969999999999995; + _g2a2_var._parameters.R0 = 0.99; + _g2a2_var._parameters.Qcxl = 0.0221; + _g2a2_var._parameters.Qcxr = 0.0221; + _g2a2_var._parameters.Qcyu = 0.0221; + _g2a2_var._parameters.Qcyd = 0.0221; + _g2a2_var._parameters.alphaxl = 1.75; + _g2a2_var._parameters.alphaxr = 1.75; + _g2a2_var._parameters.alphayu = 1.75; + _g2a2_var._parameters.alphayd = 1.75; + _g2a2_var._parameters.Wxr = 0.015; + _g2a2_var._parameters.Wxl = 0.015; + _g2a2_var._parameters.Wyu = 0.015; + _g2a2_var._parameters.Wyd = 0.015; + _g2a2_var._parameters.mxr = 3; + _g2a2_var._parameters.mxl = 3; + _g2a2_var._parameters.myu = 3; + _g2a2_var._parameters.myd = 3; + _g2a2_var._parameters.QcxrOW = 0.0217; + _g2a2_var._parameters.QcxlOW = 0.0217; + _g2a2_var._parameters.QcyuOW = 0.0217; + _g2a2_var._parameters.QcydOW = 0.0217; + _g2a2_var._parameters.alphaxlOW = 6.07; + _g2a2_var._parameters.alphaxrOW = 6.07; + _g2a2_var._parameters.alphayuOW = 6.07; + _g2a2_var._parameters.alphaydOW = 6.07; + _g2a2_var._parameters.WxrOW = 0.003; + _g2a2_var._parameters.WxlOW = 0.003; + _g2a2_var._parameters.WyuOW = 0.003; + _g2a2_var._parameters.WydOW = 0.003; + _g2a2_var._parameters.mxrOW = 0; + _g2a2_var._parameters.mxlOW = 0; + _g2a2_var._parameters.myuOW = 0; + _g2a2_var._parameters.mydOW = 0; + _g2a2_var._parameters.rwallthick = 0.001; + _g2a2_var._parameters.lwallthick = 0.001; + _g2a2_var._parameters.uwallthick = 0.001; + _g2a2_var._parameters.dwallthick = 0.001; + + + /* component g2a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a2_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_g2a2_var._rotation_absolute, tr1, _g2a2_var._rotation_relative); + _g2a2_var._rotation_is_identity = rot_test_identity(_g2a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.973800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _g2a2_var._position_absolute); + _g2a2_var._position_relative = rot_apply(_g2a2_var._rotation_absolute, tc1); + } /* g2a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute); + instrument->_position_absolute[20] = _g2a2_var._position_absolute; + instrument->_position_relative[20] = _g2a2_var._position_relative; + _g2a2_var._position_relative_is_zero = coords_test_zero(_g2a2_var._position_relative); + instrument->counter_N[20] = instrument->counter_P[20] = instrument->counter_P2[20] = 0; + instrument->counter_AbsorbProp[20]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0019_g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w1l", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linwl", "0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "loutwl", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w1r", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linwr", "0.0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "loutwr", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h1u", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linhu", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "louthu", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h1d", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linhd", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "louthd", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "l", "0", "0.40969999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a2_setpos */ + +/* component fo1_position=Arm() SETTING, POSITION/ROTATION */ +int _fo1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo1_position_setpos] component fo1_position=Arm() SETTING [Arm:0]"); + stracpy(_fo1_position_var._name, "fo1_position", 16384); + stracpy(_fo1_position_var._type, "Arm", 16384); + _fo1_position_var._index=21; + int current_setpos_index = 21; + /* component fo1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo1_position_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo1_position_var._rotation_absolute, tr1, _fo1_position_var._rotation_relative); + _fo1_position_var._rotation_is_identity = rot_test_identity(_fo1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.392); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo1_position_var._position_absolute); + _fo1_position_var._position_relative = rot_apply(_fo1_position_var._rotation_absolute, tc1); + } /* fo1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute); + instrument->_position_absolute[21] = _fo1_position_var._position_absolute; + instrument->_position_relative[21] = _fo1_position_var._position_relative; + _fo1_position_var._position_relative_is_zero = coords_test_zero(_fo1_position_var._position_relative); + instrument->counter_N[21] = instrument->counter_P[21] = instrument->counter_P2[21] = 0; + instrument->counter_AbsorbProp[21]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0020_fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo1_position_setpos */ + +/* component fo_chopper_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_1_setpos] component fo_chopper_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_1_var._name, "fo_chopper_1", 16384); + stracpy(_fo_chopper_1_var._type, "MultiDiskChopper", 16384); + _fo_chopper_1_var._index=22; + int current_setpos_index = 22; + if("-146.745;166.555;122.775;81.715;43.215;5.525" && strlen("-146.745;166.555;122.775;81.715;43.215;5.525")) + stracpy(_fo_chopper_1_var._parameters.slit_center, "-146.745;166.555;122.775;81.715;43.215;5.525" ? "-146.745;166.555;122.775;81.715;43.215;5.525" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_center[0]='\0'; + if("11.06;13.06;14.94;16.71;18.36;16.72" && strlen("11.06;13.06;14.94;16.71;18.36;16.72")) + stracpy(_fo_chopper_1_var._parameters.slit_width, "11.06;13.06;14.94;16.71;18.36;16.72" ? "11.06;13.06;14.94;16.71;18.36;16.72" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_width[0]='\0'; + _fo_chopper_1_var._parameters.nslits = 6; + _fo_chopper_1_var._parameters.delta_y = -0.4625; + _fo_chopper_1_var._parameters.nu = -42.0; + _fo_chopper_1_var._parameters.nrev = 0; + _fo_chopper_1_var._parameters.ratio = 1; + _fo_chopper_1_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_1; + _fo_chopper_1_var._parameters.delay = 0; + _fo_chopper_1_var._parameters.isfirst = 0; + _fo_chopper_1_var._parameters.phase = fo1_phase; + _fo_chopper_1_var._parameters.radius = 0.5; + _fo_chopper_1_var._parameters.equal = 0; + _fo_chopper_1_var._parameters.abs_out = 0; + _fo_chopper_1_var._parameters.verbose = 0; + + + /* component fo_chopper_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo1_position_var._rotation_absolute, _fo_chopper_1_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_1_var._rotation_absolute, tr1, _fo_chopper_1_var._rotation_relative); + _fo_chopper_1_var._rotation_is_identity = rot_test_identity(_fo_chopper_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_1_var._position_absolute = coords_add(_fo1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo_chopper_1_var._position_absolute); + _fo_chopper_1_var._position_relative = rot_apply(_fo_chopper_1_var._rotation_absolute, tc1); + } /* fo_chopper_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute); + instrument->_position_absolute[22] = _fo_chopper_1_var._position_absolute; + instrument->_position_relative[22] = _fo_chopper_1_var._position_relative; + _fo_chopper_1_var._position_relative_is_zero = coords_test_zero(_fo_chopper_1_var._position_relative); + instrument->counter_N[22] = instrument->counter_P[22] = instrument->counter_P2[22] = 0; + instrument->counter_AbsorbProp[22]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0021_fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "slit_center", "0 180", "-146.745;166.555;122.775;81.715;43.215;5.525", "char*"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "slit_width", "10 20", "11.06;13.06;14.94;16.71;18.36;16.72", "char*"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "delta_y", "-0.3", "-0.4625","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "phase", "0", "fo1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_1_setpos */ + +/* component bp1_position=Arm() SETTING, POSITION/ROTATION */ +int _bp1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_position_setpos] component bp1_position=Arm() SETTING [Arm:0]"); + stracpy(_bp1_position_var._name, "bp1_position", 16384); + stracpy(_bp1_position_var._type, "Arm", 16384); + _bp1_position_var._index=23; + int current_setpos_index = 23; + /* component bp1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp1_position_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_position_var._rotation_absolute, tr1, _bp1_position_var._rotation_relative); + _bp1_position_var._rotation_is_identity = rot_test_identity(_bp1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.442); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_position_var._position_absolute); + _bp1_position_var._position_relative = rot_apply(_bp1_position_var._rotation_absolute, tc1); + } /* bp1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute); + instrument->_position_absolute[23] = _bp1_position_var._position_absolute; + instrument->_position_relative[23] = _bp1_position_var._position_relative; + _bp1_position_var._position_relative_is_zero = coords_test_zero(_bp1_position_var._position_relative); + instrument->counter_N[23] = instrument->counter_P[23] = instrument->counter_P2[23] = 0; + instrument->counter_AbsorbProp[23]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0022_bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_position_setpos */ + +/* component bp1_chopper=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp1_chopper_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_chopper_setpos] component bp1_chopper=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp1_chopper_var._name, "bp1_chopper", 16384); + stracpy(_bp1_chopper_var._type, "DiskChopper", 16384); + _bp1_chopper_var._index=24; + int current_setpos_index = 24; + _bp1_chopper_var._parameters.theta_0 = 46.71; + _bp1_chopper_var._parameters.radius = 0.5; + _bp1_chopper_var._parameters.yheight = 0.075; + _bp1_chopper_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp1_chopper_var._parameters.nslit = 1; + _bp1_chopper_var._parameters.jitter = _instrument_var._parameters.jitter_bp1; + _bp1_chopper_var._parameters.delay = 0; + _bp1_chopper_var._parameters.isfirst = 0; + _bp1_chopper_var._parameters.n_pulse = 1; + _bp1_chopper_var._parameters.abs_out = 1; + _bp1_chopper_var._parameters.phase = bp1_phase + ( 42.20500000000003 ); + _bp1_chopper_var._parameters.xwidth = 0; + _bp1_chopper_var._parameters.verbose = 0; + + + /* component bp1_chopper=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp1_position_var._rotation_absolute, _bp1_chopper_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_chopper_var._rotation_absolute, tr1, _bp1_chopper_var._rotation_relative); + _bp1_chopper_var._rotation_is_identity = rot_test_identity(_bp1_chopper_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_chopper_var._position_absolute = coords_add(_bp1_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_chopper_var._position_absolute); + _bp1_chopper_var._position_relative = rot_apply(_bp1_chopper_var._rotation_absolute, tc1); + } /* bp1_chopper=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute); + instrument->_position_absolute[24] = _bp1_chopper_var._position_absolute; + instrument->_position_relative[24] = _bp1_chopper_var._position_relative; + _bp1_chopper_var._position_relative_is_zero = coords_test_zero(_bp1_chopper_var._position_relative); + instrument->counter_N[24] = instrument->counter_P[24] = instrument->counter_P2[24] = 0; + instrument->counter_AbsorbProp[24]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0023_bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "theta_0", "0", "46.71","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "jitter", "0", "_instrument_var._parameters.jitter_bp1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "phase", "0", "bp1_phase + ( 42.20500000000003 )","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_chopper_setpos */ + +/* component g2b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b1_setpos] component g2b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b1_var._name, "g2b1", 16384); + stracpy(_g2b1_var._type, "Guide_four_side", 16384); + _g2b1_var._index=25; + int current_setpos_index = 25; + _g2b1_var._parameters.RIreflect[0]='\0'; + _g2b1_var._parameters.LIreflect[0]='\0'; + _g2b1_var._parameters.UIreflect[0]='\0'; + _g2b1_var._parameters.DIreflect[0]='\0'; + _g2b1_var._parameters.ROreflect[0]='\0'; + _g2b1_var._parameters.LOreflect[0]='\0'; + _g2b1_var._parameters.UOreflect[0]='\0'; + _g2b1_var._parameters.DOreflect[0]='\0'; + _g2b1_var._parameters.w1l = 0.02521; + _g2b1_var._parameters.w2l = 0.002; + _g2b1_var._parameters.linwl = 1.4502500000000005; + _g2b1_var._parameters.loutwl = 11.14005; + _g2b1_var._parameters.w1r = 0.02521; + _g2b1_var._parameters.w2r = 0.002; + _g2b1_var._parameters.linwr = 1.4502500000000005; + _g2b1_var._parameters.loutwr = 11.14005; + _g2b1_var._parameters.h1u = 0.031505; + _g2b1_var._parameters.h2u = 0.002; + _g2b1_var._parameters.linhu = 8.45025; + _g2b1_var._parameters.louthu = 27.140050000000002; + _g2b1_var._parameters.h1d = 0.031505; + _g2b1_var._parameters.h2d = 0.002; + _g2b1_var._parameters.linhd = 8.45025; + _g2b1_var._parameters.louthd = 27.140050000000002; + _g2b1_var._parameters.l = 0.40969999999999906; + _g2b1_var._parameters.R0 = 0.99; + _g2b1_var._parameters.Qcxl = 0.0217; + _g2b1_var._parameters.Qcxr = 0.0217; + _g2b1_var._parameters.Qcyu = 0.023; + _g2b1_var._parameters.Qcyd = 0.023; + _g2b1_var._parameters.alphaxl = 2.5; + _g2b1_var._parameters.alphaxr = 2.5; + _g2b1_var._parameters.alphayu = 1.8; + _g2b1_var._parameters.alphayd = 1.8; + _g2b1_var._parameters.Wxr = 0.015; + _g2b1_var._parameters.Wxl = 0.015; + _g2b1_var._parameters.Wyu = 0.015; + _g2b1_var._parameters.Wyd = 0.015; + _g2b1_var._parameters.mxr = 4; + _g2b1_var._parameters.mxl = 4; + _g2b1_var._parameters.myu = 2; + _g2b1_var._parameters.myd = 2; + _g2b1_var._parameters.QcxrOW = 0.0217; + _g2b1_var._parameters.QcxlOW = 0.0217; + _g2b1_var._parameters.QcyuOW = 0.0217; + _g2b1_var._parameters.QcydOW = 0.0217; + _g2b1_var._parameters.alphaxlOW = 6.07; + _g2b1_var._parameters.alphaxrOW = 6.07; + _g2b1_var._parameters.alphayuOW = 6.07; + _g2b1_var._parameters.alphaydOW = 6.07; + _g2b1_var._parameters.WxrOW = 0.003; + _g2b1_var._parameters.WxlOW = 0.003; + _g2b1_var._parameters.WyuOW = 0.003; + _g2b1_var._parameters.WydOW = 0.003; + _g2b1_var._parameters.mxrOW = 0; + _g2b1_var._parameters.mxlOW = 0; + _g2b1_var._parameters.myuOW = 0; + _g2b1_var._parameters.mydOW = 0; + _g2b1_var._parameters.rwallthick = 0.001; + _g2b1_var._parameters.lwallthick = 0.001; + _g2b1_var._parameters.uwallthick = 0.001; + _g2b1_var._parameters.dwallthick = 0.001; + + + /* component g2b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b1_var._rotation_absolute); + rot_transpose(_bp1_chopper_var._rotation_absolute, tr1); + rot_mul(_g2b1_var._rotation_absolute, tr1, _g2b1_var._rotation_relative); + _g2b1_var._rotation_is_identity = rot_test_identity(_g2b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.446250000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp1_chopper_var._position_absolute, _g2b1_var._position_absolute); + _g2b1_var._position_relative = rot_apply(_g2b1_var._rotation_absolute, tc1); + } /* g2b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute); + instrument->_position_absolute[25] = _g2b1_var._position_absolute; + instrument->_position_relative[25] = _g2b1_var._position_relative; + _g2b1_var._position_relative_is_zero = coords_test_zero(_g2b1_var._position_relative); + instrument->counter_N[25] = instrument->counter_P[25] = instrument->counter_P2[25] = 0; + instrument->counter_AbsorbProp[25]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0024_g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w1l", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linwl", "0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "loutwl", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w1r", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linwr", "0.0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "loutwr", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h1u", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linhu", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "louthu", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h1d", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linhd", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "louthd", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b1_setpos */ + +/* component g2b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b2_setpos] component g2b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b2_var._name, "g2b2", 16384); + stracpy(_g2b2_var._type, "Guide_four_side", 16384); + _g2b2_var._index=26; + int current_setpos_index = 26; + _g2b2_var._parameters.RIreflect[0]='\0'; + _g2b2_var._parameters.LIreflect[0]='\0'; + _g2b2_var._parameters.UIreflect[0]='\0'; + _g2b2_var._parameters.DIreflect[0]='\0'; + _g2b2_var._parameters.ROreflect[0]='\0'; + _g2b2_var._parameters.LOreflect[0]='\0'; + _g2b2_var._parameters.UOreflect[0]='\0'; + _g2b2_var._parameters.DOreflect[0]='\0'; + _g2b2_var._parameters.w1l = 0.02811; + _g2b2_var._parameters.w2l = 0.002; + _g2b2_var._parameters.linwl = 1.8707999999999991; + _g2b2_var._parameters.loutwl = 9.67745; + _g2b2_var._parameters.w1r = 0.02811; + _g2b2_var._parameters.w2r = 0.002; + _g2b2_var._parameters.linwr = 1.8707999999999991; + _g2b2_var._parameters.loutwr = 9.67745; + _g2b2_var._parameters.h1u = 0.03203; + _g2b2_var._parameters.h2u = 0.002; + _g2b2_var._parameters.linhu = 8.8708; + _g2b2_var._parameters.louthu = 25.67745; + _g2b2_var._parameters.h1d = 0.03203; + _g2b2_var._parameters.h2d = 0.002; + _g2b2_var._parameters.linhd = 8.8708; + _g2b2_var._parameters.louthd = 25.67745; + _g2b2_var._parameters.l = 1.4517500000000005; + _g2b2_var._parameters.R0 = 0.99; + _g2b2_var._parameters.Qcxl = 0.0217; + _g2b2_var._parameters.Qcxr = 0.0217; + _g2b2_var._parameters.Qcyu = 0.023; + _g2b2_var._parameters.Qcyd = 0.023; + _g2b2_var._parameters.alphaxl = 2.5; + _g2b2_var._parameters.alphaxr = 2.5; + _g2b2_var._parameters.alphayu = 1.8; + _g2b2_var._parameters.alphayd = 1.8; + _g2b2_var._parameters.Wxr = 0.015; + _g2b2_var._parameters.Wxl = 0.015; + _g2b2_var._parameters.Wyu = 0.015; + _g2b2_var._parameters.Wyd = 0.015; + _g2b2_var._parameters.mxr = 4; + _g2b2_var._parameters.mxl = 4; + _g2b2_var._parameters.myu = 2; + _g2b2_var._parameters.myd = 2; + _g2b2_var._parameters.QcxrOW = 0.0217; + _g2b2_var._parameters.QcxlOW = 0.0217; + _g2b2_var._parameters.QcyuOW = 0.0217; + _g2b2_var._parameters.QcydOW = 0.0217; + _g2b2_var._parameters.alphaxlOW = 6.07; + _g2b2_var._parameters.alphaxrOW = 6.07; + _g2b2_var._parameters.alphayuOW = 6.07; + _g2b2_var._parameters.alphaydOW = 6.07; + _g2b2_var._parameters.WxrOW = 0.003; + _g2b2_var._parameters.WxlOW = 0.003; + _g2b2_var._parameters.WyuOW = 0.003; + _g2b2_var._parameters.WydOW = 0.003; + _g2b2_var._parameters.mxrOW = 0; + _g2b2_var._parameters.mxlOW = 0; + _g2b2_var._parameters.myuOW = 0; + _g2b2_var._parameters.mydOW = 0; + _g2b2_var._parameters.rwallthick = 0.001; + _g2b2_var._parameters.lwallthick = 0.001; + _g2b2_var._parameters.uwallthick = 0.001; + _g2b2_var._parameters.dwallthick = 0.001; + + + /* component g2b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b2_var._rotation_absolute); + rot_transpose(_g2b1_var._rotation_absolute, tr1); + rot_mul(_g2b2_var._rotation_absolute, tr1, _g2b2_var._rotation_relative); + _g2b2_var._rotation_is_identity = rot_test_identity(_g2b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.8668); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b1_var._position_absolute, _g2b2_var._position_absolute); + _g2b2_var._position_relative = rot_apply(_g2b2_var._rotation_absolute, tc1); + } /* g2b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute); + instrument->_position_absolute[26] = _g2b2_var._position_absolute; + instrument->_position_relative[26] = _g2b2_var._position_relative; + _g2b2_var._position_relative_is_zero = coords_test_zero(_g2b2_var._position_relative); + instrument->counter_N[26] = instrument->counter_P[26] = instrument->counter_P2[26] = 0; + instrument->counter_AbsorbProp[26]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0025_g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w1l", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linwl", "0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "loutwl", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w1r", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linwr", "0.0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "loutwr", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h1u", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linhu", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "louthu", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h1d", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linhd", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "louthd", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b2_setpos */ + +/* component g2b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b3_setpos] component g2b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b3_var._name, "g2b3", 16384); + stracpy(_g2b3_var._type, "Guide_four_side", 16384); + _g2b3_var._index=27; + int current_setpos_index = 27; + _g2b3_var._parameters.RIreflect[0]='\0'; + _g2b3_var._parameters.LIreflect[0]='\0'; + _g2b3_var._parameters.UIreflect[0]='\0'; + _g2b3_var._parameters.DIreflect[0]='\0'; + _g2b3_var._parameters.ROreflect[0]='\0'; + _g2b3_var._parameters.LOreflect[0]='\0'; + _g2b3_var._parameters.UOreflect[0]='\0'; + _g2b3_var._parameters.DOreflect[0]='\0'; + _g2b3_var._parameters.w1l = 0.03493; + _g2b3_var._parameters.w2l = 0.002; + _g2b3_var._parameters.linwl = 3.3230500000000003; + _g2b3_var._parameters.loutwl = 8.2252; + _g2b3_var._parameters.w1r = 0.03493; + _g2b3_var._parameters.w2r = 0.002; + _g2b3_var._parameters.linwr = 3.3230500000000003; + _g2b3_var._parameters.loutwr = 8.2252; + _g2b3_var._parameters.h1u = 0.033615; + _g2b3_var._parameters.h2u = 0.002; + _g2b3_var._parameters.linhu = 10.32305; + _g2b3_var._parameters.louthu = 24.2252; + _g2b3_var._parameters.h1d = 0.033615; + _g2b3_var._parameters.h2d = 0.002; + _g2b3_var._parameters.linhd = 10.32305; + _g2b3_var._parameters.louthd = 24.2252; + _g2b3_var._parameters.l = 1.4517500000000005; + _g2b3_var._parameters.R0 = 0.99; + _g2b3_var._parameters.Qcxl = 0.0217; + _g2b3_var._parameters.Qcxr = 0.0217; + _g2b3_var._parameters.Qcyu = 0.023; + _g2b3_var._parameters.Qcyd = 0.023; + _g2b3_var._parameters.alphaxl = 2.5; + _g2b3_var._parameters.alphaxr = 2.5; + _g2b3_var._parameters.alphayu = 1.8; + _g2b3_var._parameters.alphayd = 1.8; + _g2b3_var._parameters.Wxr = 0.015; + _g2b3_var._parameters.Wxl = 0.015; + _g2b3_var._parameters.Wyu = 0.015; + _g2b3_var._parameters.Wyd = 0.015; + _g2b3_var._parameters.mxr = 4; + _g2b3_var._parameters.mxl = 4; + _g2b3_var._parameters.myu = 2; + _g2b3_var._parameters.myd = 2; + _g2b3_var._parameters.QcxrOW = 0.0217; + _g2b3_var._parameters.QcxlOW = 0.0217; + _g2b3_var._parameters.QcyuOW = 0.0217; + _g2b3_var._parameters.QcydOW = 0.0217; + _g2b3_var._parameters.alphaxlOW = 6.07; + _g2b3_var._parameters.alphaxrOW = 6.07; + _g2b3_var._parameters.alphayuOW = 6.07; + _g2b3_var._parameters.alphaydOW = 6.07; + _g2b3_var._parameters.WxrOW = 0.003; + _g2b3_var._parameters.WxlOW = 0.003; + _g2b3_var._parameters.WyuOW = 0.003; + _g2b3_var._parameters.WydOW = 0.003; + _g2b3_var._parameters.mxrOW = 0; + _g2b3_var._parameters.mxlOW = 0; + _g2b3_var._parameters.myuOW = 0; + _g2b3_var._parameters.mydOW = 0; + _g2b3_var._parameters.rwallthick = 0.001; + _g2b3_var._parameters.lwallthick = 0.001; + _g2b3_var._parameters.uwallthick = 0.001; + _g2b3_var._parameters.dwallthick = 0.001; + + + /* component g2b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b3_var._rotation_absolute); + rot_transpose(_g2b2_var._rotation_absolute, tr1); + rot_mul(_g2b3_var._rotation_absolute, tr1, _g2b3_var._rotation_relative); + _g2b3_var._rotation_is_identity = rot_test_identity(_g2b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 10.31905); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b2_var._position_absolute, _g2b3_var._position_absolute); + _g2b3_var._position_relative = rot_apply(_g2b3_var._rotation_absolute, tc1); + } /* g2b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute); + instrument->_position_absolute[27] = _g2b3_var._position_absolute; + instrument->_position_relative[27] = _g2b3_var._position_relative; + _g2b3_var._position_relative_is_zero = coords_test_zero(_g2b3_var._position_relative); + instrument->counter_N[27] = instrument->counter_P[27] = instrument->counter_P2[27] = 0; + instrument->counter_AbsorbProp[27]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0026_g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w1l", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linwl", "0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "loutwl", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w1r", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linwr", "0.0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "loutwr", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h1u", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linhu", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "louthu", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h1d", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linhd", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "louthd", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b3_setpos */ + +/* component g2b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b4_setpos] component g2b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b4_var._name, "g2b4", 16384); + stracpy(_g2b4_var._type, "Guide_four_side", 16384); + _g2b4_var._index=28; + int current_setpos_index = 28; + _g2b4_var._parameters.RIreflect[0]='\0'; + _g2b4_var._parameters.LIreflect[0]='\0'; + _g2b4_var._parameters.UIreflect[0]='\0'; + _g2b4_var._parameters.DIreflect[0]='\0'; + _g2b4_var._parameters.ROreflect[0]='\0'; + _g2b4_var._parameters.LOreflect[0]='\0'; + _g2b4_var._parameters.UOreflect[0]='\0'; + _g2b4_var._parameters.DOreflect[0]='\0'; + _g2b4_var._parameters.w1l = 0.03862; + _g2b4_var._parameters.w2l = 0.002; + _g2b4_var._parameters.linwl = 4.7858; + _g2b4_var._parameters.loutwl = 7.804500000000001; + _g2b4_var._parameters.w1r = 0.03862; + _g2b4_var._parameters.w2r = 0.002; + _g2b4_var._parameters.linwr = 4.7858; + _g2b4_var._parameters.loutwr = 7.804500000000001; + _g2b4_var._parameters.h1u = 0.03488; + _g2b4_var._parameters.h2u = 0.002; + _g2b4_var._parameters.linhu = 11.7858; + _g2b4_var._parameters.louthu = 23.8045; + _g2b4_var._parameters.h1d = 0.03488; + _g2b4_var._parameters.h2d = 0.002; + _g2b4_var._parameters.linhd = 11.7858; + _g2b4_var._parameters.louthd = 23.8045; + _g2b4_var._parameters.l = 0.40969999999999906; + _g2b4_var._parameters.R0 = 0.99; + _g2b4_var._parameters.Qcxl = 0.0217; + _g2b4_var._parameters.Qcxr = 0.0217; + _g2b4_var._parameters.Qcyu = 0.023; + _g2b4_var._parameters.Qcyd = 0.023; + _g2b4_var._parameters.alphaxl = 2.5; + _g2b4_var._parameters.alphaxr = 2.5; + _g2b4_var._parameters.alphayu = 1.8; + _g2b4_var._parameters.alphayd = 1.8; + _g2b4_var._parameters.Wxr = 0.015; + _g2b4_var._parameters.Wxl = 0.015; + _g2b4_var._parameters.Wyu = 0.015; + _g2b4_var._parameters.Wyd = 0.015; + _g2b4_var._parameters.mxr = 4; + _g2b4_var._parameters.mxl = 4; + _g2b4_var._parameters.myu = 2; + _g2b4_var._parameters.myd = 2; + _g2b4_var._parameters.QcxrOW = 0.0217; + _g2b4_var._parameters.QcxlOW = 0.0217; + _g2b4_var._parameters.QcyuOW = 0.0217; + _g2b4_var._parameters.QcydOW = 0.0217; + _g2b4_var._parameters.alphaxlOW = 6.07; + _g2b4_var._parameters.alphaxrOW = 6.07; + _g2b4_var._parameters.alphayuOW = 6.07; + _g2b4_var._parameters.alphaydOW = 6.07; + _g2b4_var._parameters.WxrOW = 0.003; + _g2b4_var._parameters.WxlOW = 0.003; + _g2b4_var._parameters.WyuOW = 0.003; + _g2b4_var._parameters.WydOW = 0.003; + _g2b4_var._parameters.mxrOW = 0; + _g2b4_var._parameters.mxlOW = 0; + _g2b4_var._parameters.myuOW = 0; + _g2b4_var._parameters.mydOW = 0; + _g2b4_var._parameters.rwallthick = 0.001; + _g2b4_var._parameters.lwallthick = 0.001; + _g2b4_var._parameters.uwallthick = 0.001; + _g2b4_var._parameters.dwallthick = 0.001; + + + /* component g2b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b4_var._rotation_absolute); + rot_transpose(_g2b3_var._rotation_absolute, tr1); + rot_mul(_g2b4_var._rotation_absolute, tr1, _g2b4_var._rotation_relative); + _g2b4_var._rotation_is_identity = rot_test_identity(_g2b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 11.7818); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b3_var._position_absolute, _g2b4_var._position_absolute); + _g2b4_var._position_relative = rot_apply(_g2b4_var._rotation_absolute, tc1); + } /* g2b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute); + instrument->_position_absolute[28] = _g2b4_var._position_absolute; + instrument->_position_relative[28] = _g2b4_var._position_relative; + _g2b4_var._position_relative_is_zero = coords_test_zero(_g2b4_var._position_relative); + instrument->counter_N[28] = instrument->counter_P[28] = instrument->counter_P2[28] = 0; + instrument->counter_AbsorbProp[28]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0027_g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w1l", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linwl", "0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "loutwl", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w1r", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linwr", "0.0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "loutwr", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linhu", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "louthu", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linhd", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "louthd", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b4_setpos */ + +/* component fo2_position=Arm() SETTING, POSITION/ROTATION */ +int _fo2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo2_position_setpos] component fo2_position=Arm() SETTING [Arm:0]"); + stracpy(_fo2_position_var._name, "fo2_position", 16384); + stracpy(_fo2_position_var._type, "Arm", 16384); + _fo2_position_var._index=29; + int current_setpos_index = 29; + /* component fo2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo2_position_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo2_position_var._rotation_absolute, tr1, _fo2_position_var._rotation_relative); + _fo2_position_var._rotation_is_identity = rot_test_identity(_fo2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.2); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo2_position_var._position_absolute); + _fo2_position_var._position_relative = rot_apply(_fo2_position_var._rotation_absolute, tc1); + } /* fo2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute); + instrument->_position_absolute[29] = _fo2_position_var._position_absolute; + instrument->_position_relative[29] = _fo2_position_var._position_relative; + _fo2_position_var._position_relative_is_zero = coords_test_zero(_fo2_position_var._position_relative); + instrument->counter_N[29] = instrument->counter_P[29] = instrument->counter_P2[29] = 0; + instrument->counter_AbsorbProp[29]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0028_fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo2_position_setpos */ + +/* component fo_chopper_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_2_setpos] component fo_chopper_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_2_var._name, "fo_chopper_2", 16384); + stracpy(_fo_chopper_2_var._type, "MultiDiskChopper", 16384); + _fo_chopper_2_var._index=30; + int current_setpos_index = 30; + if("-127.07;165.08;101.46;41.97;-13.98;-67.15" && strlen("-127.07;165.08;101.46;41.97;-13.98;-67.15")) + stracpy(_fo_chopper_2_var._parameters.slit_center, "-127.07;165.08;101.46;41.97;-13.98;-67.15" ? "-127.07;165.08;101.46;41.97;-13.98;-67.15" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_center[0]='\0'; + if("32.9;33.54;34.15;34.37;34.89;34.31" && strlen("32.9;33.54;34.15;34.37;34.89;34.31")) + stracpy(_fo_chopper_2_var._parameters.slit_width, "32.9;33.54;34.15;34.37;34.89;34.31" ? "32.9;33.54;34.15;34.37;34.89;34.31" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_width[0]='\0'; + _fo_chopper_2_var._parameters.nslits = 6; + _fo_chopper_2_var._parameters.delta_y = -0.46; + _fo_chopper_2_var._parameters.nu = -42.0; + _fo_chopper_2_var._parameters.nrev = 0; + _fo_chopper_2_var._parameters.ratio = 1; + _fo_chopper_2_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_2; + _fo_chopper_2_var._parameters.delay = 0; + _fo_chopper_2_var._parameters.isfirst = 0; + _fo_chopper_2_var._parameters.phase = fo2_phase; + _fo_chopper_2_var._parameters.radius = 0.5; + _fo_chopper_2_var._parameters.equal = 0; + _fo_chopper_2_var._parameters.abs_out = 0; + _fo_chopper_2_var._parameters.verbose = 0; + + + /* component fo_chopper_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo2_position_var._rotation_absolute, _fo_chopper_2_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_2_var._rotation_absolute, tr1, _fo_chopper_2_var._rotation_relative); + _fo_chopper_2_var._rotation_is_identity = rot_test_identity(_fo_chopper_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_2_var._position_absolute = coords_add(_fo2_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo_chopper_2_var._position_absolute); + _fo_chopper_2_var._position_relative = rot_apply(_fo_chopper_2_var._rotation_absolute, tc1); + } /* fo_chopper_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute); + instrument->_position_absolute[30] = _fo_chopper_2_var._position_absolute; + instrument->_position_relative[30] = _fo_chopper_2_var._position_relative; + _fo_chopper_2_var._position_relative_is_zero = coords_test_zero(_fo_chopper_2_var._position_relative); + instrument->counter_N[30] = instrument->counter_P[30] = instrument->counter_P2[30] = 0; + instrument->counter_AbsorbProp[30]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0029_fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "slit_center", "0 180", "-127.07;165.08;101.46;41.97;-13.98;-67.15", "char*"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "slit_width", "10 20", "32.9;33.54;34.15;34.37;34.89;34.31", "char*"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "delta_y", "-0.3", "-0.46","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "phase", "0", "fo2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_2_setpos */ + +/* component bp2_position=Arm() SETTING, POSITION/ROTATION */ +int _bp2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp2_position_setpos] component bp2_position=Arm() SETTING [Arm:0]"); + stracpy(_bp2_position_var._name, "bp2_position", 16384); + stracpy(_bp2_position_var._type, "Arm", 16384); + _bp2_position_var._index=31; + int current_setpos_index = 31; + /* component bp2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp2_position_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp2_position_var._rotation_absolute, tr1, _bp2_position_var._rotation_relative); + _bp2_position_var._rotation_is_identity = rot_test_identity(_bp2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp2_position_var._position_absolute); + _bp2_position_var._position_relative = rot_apply(_bp2_position_var._rotation_absolute, tc1); + } /* bp2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute); + instrument->_position_absolute[31] = _bp2_position_var._position_absolute; + instrument->_position_relative[31] = _bp2_position_var._position_relative; + _bp2_position_var._position_relative_is_zero = coords_test_zero(_bp2_position_var._position_relative); + instrument->counter_N[31] = instrument->counter_P[31] = instrument->counter_P2[31] = 0; + instrument->counter_AbsorbProp[31]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0030_bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp2_position_setpos */ + +/* component bp_chopper2=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp_chopper2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp_chopper2_setpos] component bp_chopper2=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp_chopper2_var._name, "bp_chopper2", 16384); + stracpy(_bp_chopper2_var._type, "DiskChopper", 16384); + _bp_chopper2_var._index=32; + int current_setpos_index = 32; + _bp_chopper2_var._parameters.theta_0 = 67.49; + _bp_chopper2_var._parameters.radius = 0.5; + _bp_chopper2_var._parameters.yheight = 0.08; + _bp_chopper2_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp_chopper2_var._parameters.nslit = 1; + _bp_chopper2_var._parameters.jitter = _instrument_var._parameters.jitter_bp2; + _bp_chopper2_var._parameters.delay = 0; + _bp_chopper2_var._parameters.isfirst = 0; + _bp_chopper2_var._parameters.n_pulse = 1; + _bp_chopper2_var._parameters.abs_out = 1; + _bp_chopper2_var._parameters.phase = bp2_phase -141.795; + _bp_chopper2_var._parameters.xwidth = 0; + _bp_chopper2_var._parameters.verbose = 0; + + + /* component bp_chopper2=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp2_position_var._rotation_absolute, _bp_chopper2_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp_chopper2_var._rotation_absolute, tr1, _bp_chopper2_var._rotation_relative); + _bp_chopper2_var._rotation_is_identity = rot_test_identity(_bp_chopper2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp_chopper2_var._position_absolute = coords_add(_bp2_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp_chopper2_var._position_absolute); + _bp_chopper2_var._position_relative = rot_apply(_bp_chopper2_var._rotation_absolute, tc1); + } /* bp_chopper2=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute); + instrument->_position_absolute[32] = _bp_chopper2_var._position_absolute; + instrument->_position_relative[32] = _bp_chopper2_var._position_relative; + _bp_chopper2_var._position_relative_is_zero = coords_test_zero(_bp_chopper2_var._position_relative); + instrument->counter_N[32] = instrument->counter_P[32] = instrument->counter_P2[32] = 0; + instrument->counter_AbsorbProp[32]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0031_bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "theta_0", "0", "67.49","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "yheight", "NONE", "0.08","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "jitter", "0", "_instrument_var._parameters.jitter_bp2","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "phase", "0", "bp2_phase -141.795","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp_chopper2_setpos */ + +/* component g2c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2c1_setpos] component g2c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2c1_var._name, "g2c1", 16384); + stracpy(_g2c1_var._type, "Guide_four_side", 16384); + _g2c1_var._index=33; + int current_setpos_index = 33; + _g2c1_var._parameters.RIreflect[0]='\0'; + _g2c1_var._parameters.LIreflect[0]='\0'; + _g2c1_var._parameters.UIreflect[0]='\0'; + _g2c1_var._parameters.DIreflect[0]='\0'; + _g2c1_var._parameters.ROreflect[0]='\0'; + _g2c1_var._parameters.LOreflect[0]='\0'; + _g2c1_var._parameters.UOreflect[0]='\0'; + _g2c1_var._parameters.DOreflect[0]='\0'; + _g2c1_var._parameters.w1l = 0.03929; + _g2c1_var._parameters.w2l = 0.002; + _g2c1_var._parameters.linwl = 5.250249999999999; + _g2c1_var._parameters.loutwl = 6.536899999999999; + _g2c1_var._parameters.w1r = 0.03929; + _g2c1_var._parameters.w2r = 0.002; + _g2c1_var._parameters.linwr = 5.250249999999999; + _g2c1_var._parameters.loutwr = 6.536899999999999; + _g2c1_var._parameters.h1u = 0.03488; + _g2c1_var._parameters.h2u = 0.002; + _g2c1_var._parameters.linhu = 12.25025; + _g2c1_var._parameters.louthu = 22.5369; + _g2c1_var._parameters.h1d = 0.03488; + _g2c1_var._parameters.h2d = 0.002; + _g2c1_var._parameters.linhd = 12.25025; + _g2c1_var._parameters.louthd = 22.5369; + _g2c1_var._parameters.l = 1.2128500000000013; + _g2c1_var._parameters.R0 = 0.99; + _g2c1_var._parameters.Qcxl = 0.0217; + _g2c1_var._parameters.Qcxr = 0.0217; + _g2c1_var._parameters.Qcyu = 0.023; + _g2c1_var._parameters.Qcyd = 0.023; + _g2c1_var._parameters.alphaxl = 2.5; + _g2c1_var._parameters.alphaxr = 2.5; + _g2c1_var._parameters.alphayu = 1.8; + _g2c1_var._parameters.alphayd = 1.8; + _g2c1_var._parameters.Wxr = 0.015; + _g2c1_var._parameters.Wxl = 0.015; + _g2c1_var._parameters.Wyu = 0.015; + _g2c1_var._parameters.Wyd = 0.015; + _g2c1_var._parameters.mxr = 3.5; + _g2c1_var._parameters.mxl = 3.5; + _g2c1_var._parameters.myu = 2; + _g2c1_var._parameters.myd = 2; + _g2c1_var._parameters.QcxrOW = 0.0217; + _g2c1_var._parameters.QcxlOW = 0.0217; + _g2c1_var._parameters.QcyuOW = 0.0217; + _g2c1_var._parameters.QcydOW = 0.0217; + _g2c1_var._parameters.alphaxlOW = 6.07; + _g2c1_var._parameters.alphaxrOW = 6.07; + _g2c1_var._parameters.alphayuOW = 6.07; + _g2c1_var._parameters.alphaydOW = 6.07; + _g2c1_var._parameters.WxrOW = 0.003; + _g2c1_var._parameters.WxlOW = 0.003; + _g2c1_var._parameters.WyuOW = 0.003; + _g2c1_var._parameters.WydOW = 0.003; + _g2c1_var._parameters.mxrOW = 0; + _g2c1_var._parameters.mxlOW = 0; + _g2c1_var._parameters.myuOW = 0; + _g2c1_var._parameters.mydOW = 0; + _g2c1_var._parameters.rwallthick = 0.001; + _g2c1_var._parameters.lwallthick = 0.001; + _g2c1_var._parameters.uwallthick = 0.001; + _g2c1_var._parameters.dwallthick = 0.001; + + + /* component g2c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2c1_var._rotation_absolute); + rot_transpose(_bp_chopper2_var._rotation_absolute, tr1); + rot_mul(_g2c1_var._rotation_absolute, tr1, _g2c1_var._rotation_relative); + _g2c1_var._rotation_is_identity = rot_test_identity(_g2c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.254249999999999); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp_chopper2_var._position_absolute, _g2c1_var._position_absolute); + _g2c1_var._position_relative = rot_apply(_g2c1_var._rotation_absolute, tc1); + } /* g2c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute); + instrument->_position_absolute[33] = _g2c1_var._position_absolute; + instrument->_position_relative[33] = _g2c1_var._position_relative; + _g2c1_var._position_relative_is_zero = coords_test_zero(_g2c1_var._position_relative); + instrument->counter_N[33] = instrument->counter_P[33] = instrument->counter_P2[33] = 0; + instrument->counter_AbsorbProp[33]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0032_g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w1l", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linwl", "0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "loutwl", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w1r", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linwr", "0.0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "loutwr", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linhu", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "louthu", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linhd", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "louthd", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "l", "0", "1.2128500000000013","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2c1_setpos */ + +/* component t0_start_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_start_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_start_position_setpos] component t0_start_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_start_position_var._name, "t0_start_position", 16384); + stracpy(_t0_start_position_var._type, "Arm", 16384); + _t0_start_position_var._index=34; + int current_setpos_index = 34; + /* component t0_start_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_start_position_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_start_position_var._rotation_absolute, tr1, _t0_start_position_var._rotation_relative); + _t0_start_position_var._rotation_is_identity = rot_test_identity(_t0_start_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.503); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_start_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_start_position_var._position_absolute); + _t0_start_position_var._position_relative = rot_apply(_t0_start_position_var._rotation_absolute, tc1); + } /* t0_start_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute); + instrument->_position_absolute[34] = _t0_start_position_var._position_absolute; + instrument->_position_relative[34] = _t0_start_position_var._position_relative; + _t0_start_position_var._position_relative_is_zero = coords_test_zero(_t0_start_position_var._position_relative); + instrument->counter_N[34] = instrument->counter_P[34] = instrument->counter_P2[34] = 0; + instrument->counter_AbsorbProp[34]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0033_t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_start_position_setpos */ + +/* component t0_chopper_alpha=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_alpha_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_alpha_setpos] component t0_chopper_alpha=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_alpha_var._name, "t0_chopper_alpha", 16384); + stracpy(_t0_chopper_alpha_var._type, "DiskChopper", 16384); + _t0_chopper_alpha_var._index=35; + int current_setpos_index = 35; + _t0_chopper_alpha_var._parameters.theta_0 = 294.74; + _t0_chopper_alpha_var._parameters.radius = 0.32; + _t0_chopper_alpha_var._parameters.yheight = 0.075; + _t0_chopper_alpha_var._parameters.nu = 28.0; + _t0_chopper_alpha_var._parameters.nslit = 1; + _t0_chopper_alpha_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_alpha_var._parameters.delay = 0; + _t0_chopper_alpha_var._parameters.isfirst = 0; + _t0_chopper_alpha_var._parameters.n_pulse = 1; + _t0_chopper_alpha_var._parameters.abs_out = 1; + _t0_chopper_alpha_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_alpha_var._parameters.xwidth = 0; + _t0_chopper_alpha_var._parameters.verbose = 0; + + + /* component t0_chopper_alpha=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_start_position_var._rotation_absolute, _t0_chopper_alpha_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_alpha_var._rotation_absolute, tr1, _t0_chopper_alpha_var._rotation_relative); + _t0_chopper_alpha_var._rotation_is_identity = rot_test_identity(_t0_chopper_alpha_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_start_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_alpha_var._position_absolute = coords_add(_t0_start_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_chopper_alpha_var._position_absolute); + _t0_chopper_alpha_var._position_relative = rot_apply(_t0_chopper_alpha_var._rotation_absolute, tc1); + } /* t0_chopper_alpha=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute); + instrument->_position_absolute[35] = _t0_chopper_alpha_var._position_absolute; + instrument->_position_relative[35] = _t0_chopper_alpha_var._position_relative; + _t0_chopper_alpha_var._position_relative_is_zero = coords_test_zero(_t0_chopper_alpha_var._position_relative); + instrument->counter_N[35] = instrument->counter_P[35] = instrument->counter_P2[35] = 0; + instrument->counter_AbsorbProp[35]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0034_t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_alpha_setpos */ + +/* component t0_end_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_end_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_end_position_setpos] component t0_end_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_end_position_var._name, "t0_end_position", 16384); + stracpy(_t0_end_position_var._type, "Arm", 16384); + _t0_end_position_var._index=36; + int current_setpos_index = 36; + /* component t0_end_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_end_position_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_end_position_var._rotation_absolute, tr1, _t0_end_position_var._rotation_relative); + _t0_end_position_var._rotation_is_identity = rot_test_identity(_t0_end_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.703); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_end_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_end_position_var._position_absolute); + _t0_end_position_var._position_relative = rot_apply(_t0_end_position_var._rotation_absolute, tc1); + } /* t0_end_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute); + instrument->_position_absolute[36] = _t0_end_position_var._position_absolute; + instrument->_position_relative[36] = _t0_end_position_var._position_relative; + _t0_end_position_var._position_relative_is_zero = coords_test_zero(_t0_end_position_var._position_relative); + instrument->counter_N[36] = instrument->counter_P[36] = instrument->counter_P2[36] = 0; + instrument->counter_AbsorbProp[36]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0035_t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_end_position_setpos */ + +/* component t0_chopper_beta=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_beta_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_beta_setpos] component t0_chopper_beta=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_beta_var._name, "t0_chopper_beta", 16384); + stracpy(_t0_chopper_beta_var._type, "DiskChopper", 16384); + _t0_chopper_beta_var._index=37; + int current_setpos_index = 37; + _t0_chopper_beta_var._parameters.theta_0 = 294.74; + _t0_chopper_beta_var._parameters.radius = 0.32; + _t0_chopper_beta_var._parameters.yheight = 0.075; + _t0_chopper_beta_var._parameters.nu = 28.0; + _t0_chopper_beta_var._parameters.nslit = 1; + _t0_chopper_beta_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_beta_var._parameters.delay = 0; + _t0_chopper_beta_var._parameters.isfirst = 0; + _t0_chopper_beta_var._parameters.n_pulse = 1; + _t0_chopper_beta_var._parameters.abs_out = 1; + _t0_chopper_beta_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_beta_var._parameters.xwidth = 0; + _t0_chopper_beta_var._parameters.verbose = 0; + + + /* component t0_chopper_beta=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_end_position_var._rotation_absolute, _t0_chopper_beta_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_beta_var._rotation_absolute, tr1, _t0_chopper_beta_var._rotation_relative); + _t0_chopper_beta_var._rotation_is_identity = rot_test_identity(_t0_chopper_beta_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_end_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_beta_var._position_absolute = coords_add(_t0_end_position_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_chopper_beta_var._position_absolute); + _t0_chopper_beta_var._position_relative = rot_apply(_t0_chopper_beta_var._rotation_absolute, tc1); + } /* t0_chopper_beta=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute); + instrument->_position_absolute[37] = _t0_chopper_beta_var._position_absolute; + instrument->_position_relative[37] = _t0_chopper_beta_var._position_relative; + _t0_chopper_beta_var._position_relative_is_zero = coords_test_zero(_t0_chopper_beta_var._position_relative); + instrument->counter_N[37] = instrument->counter_P[37] = instrument->counter_P2[37] = 0; + instrument->counter_AbsorbProp[37]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0036_t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_beta_setpos */ + +/* component g3a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a1_setpos] component g3a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a1_var._name, "g3a1", 16384); + stracpy(_g3a1_var._type, "Guide_four_side", 16384); + _g3a1_var._index=38; + int current_setpos_index = 38; + _g3a1_var._parameters.RIreflect[0]='\0'; + _g3a1_var._parameters.LIreflect[0]='\0'; + _g3a1_var._parameters.UIreflect[0]='\0'; + _g3a1_var._parameters.DIreflect[0]='\0'; + _g3a1_var._parameters.ROreflect[0]='\0'; + _g3a1_var._parameters.LOreflect[0]='\0'; + _g3a1_var._parameters.UOreflect[0]='\0'; + _g3a1_var._parameters.DOreflect[0]='\0'; + _g3a1_var._parameters.w1l = 0.04004; + _g3a1_var._parameters.w2l = 0.04004; + _g3a1_var._parameters.linwl = 0; + _g3a1_var._parameters.loutwl = 0; + _g3a1_var._parameters.w1r = 0.04004; + _g3a1_var._parameters.w2r = 0.04004; + _g3a1_var._parameters.linwr = 0.0; + _g3a1_var._parameters.loutwr = 0; + _g3a1_var._parameters.h1u = 0.03611; + _g3a1_var._parameters.h2u = 0.002; + _g3a1_var._parameters.linhu = 13.7559; + _g3a1_var._parameters.louthu = 20.2631; + _g3a1_var._parameters.h1d = 0.03611; + _g3a1_var._parameters.h2d = 0.002; + _g3a1_var._parameters.linhd = 13.7559; + _g3a1_var._parameters.louthd = 20.2631; + _g3a1_var._parameters.l = 1.981; + _g3a1_var._parameters.R0 = 0.99; + _g3a1_var._parameters.Qcxl = 0.0217; + _g3a1_var._parameters.Qcxr = 0.0217; + _g3a1_var._parameters.Qcyu = 0.023; + _g3a1_var._parameters.Qcyd = 0.023; + _g3a1_var._parameters.alphaxl = 2.5; + _g3a1_var._parameters.alphaxr = 2.5; + _g3a1_var._parameters.alphayu = 1.8; + _g3a1_var._parameters.alphayd = 1.8; + _g3a1_var._parameters.Wxr = 0.015; + _g3a1_var._parameters.Wxl = 0.015; + _g3a1_var._parameters.Wyu = 0.015; + _g3a1_var._parameters.Wyd = 0.015; + _g3a1_var._parameters.mxr = 3.5; + _g3a1_var._parameters.mxl = 3.5; + _g3a1_var._parameters.myu = 2; + _g3a1_var._parameters.myd = 2; + _g3a1_var._parameters.QcxrOW = 0.0217; + _g3a1_var._parameters.QcxlOW = 0.0217; + _g3a1_var._parameters.QcyuOW = 0.0217; + _g3a1_var._parameters.QcydOW = 0.0217; + _g3a1_var._parameters.alphaxlOW = 6.07; + _g3a1_var._parameters.alphaxrOW = 6.07; + _g3a1_var._parameters.alphayuOW = 6.07; + _g3a1_var._parameters.alphaydOW = 6.07; + _g3a1_var._parameters.WxrOW = 0.003; + _g3a1_var._parameters.WxlOW = 0.003; + _g3a1_var._parameters.WyuOW = 0.003; + _g3a1_var._parameters.WydOW = 0.003; + _g3a1_var._parameters.mxrOW = 0; + _g3a1_var._parameters.mxlOW = 0; + _g3a1_var._parameters.myuOW = 0; + _g3a1_var._parameters.mydOW = 0; + _g3a1_var._parameters.rwallthick = 0.001; + _g3a1_var._parameters.lwallthick = 0.001; + _g3a1_var._parameters.uwallthick = 0.001; + _g3a1_var._parameters.dwallthick = 0.001; + + + /* component g3a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a1_var._rotation_absolute); + rot_transpose(_t0_chopper_beta_var._rotation_absolute, tr1); + rot_mul(_g3a1_var._rotation_absolute, tr1, _g3a1_var._rotation_relative); + _g3a1_var._rotation_is_identity = rot_test_identity(_g3a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.7379); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_beta_var._position_absolute, _g3a1_var._position_absolute); + _g3a1_var._position_relative = rot_apply(_g3a1_var._rotation_absolute, tc1); + } /* g3a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute); + instrument->_position_absolute[38] = _g3a1_var._position_absolute; + instrument->_position_relative[38] = _g3a1_var._position_relative; + _g3a1_var._position_relative_is_zero = coords_test_zero(_g3a1_var._position_relative); + instrument->counter_N[38] = instrument->counter_P[38] = instrument->counter_P2[38] = 0; + instrument->counter_AbsorbProp[38]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0037_g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h1u", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linhu", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "louthu", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h1d", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linhd", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "louthd", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "l", "0", "1.981","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a1_setpos */ + +/* component g3a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a2_setpos] component g3a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a2_var._name, "g3a2", 16384); + stracpy(_g3a2_var._type, "Guide_four_side", 16384); + _g3a2_var._index=39; + int current_setpos_index = 39; + _g3a2_var._parameters.RIreflect[0]='\0'; + _g3a2_var._parameters.LIreflect[0]='\0'; + _g3a2_var._parameters.UIreflect[0]='\0'; + _g3a2_var._parameters.DIreflect[0]='\0'; + _g3a2_var._parameters.ROreflect[0]='\0'; + _g3a2_var._parameters.LOreflect[0]='\0'; + _g3a2_var._parameters.UOreflect[0]='\0'; + _g3a2_var._parameters.DOreflect[0]='\0'; + _g3a2_var._parameters.w1l = 0.04004; + _g3a2_var._parameters.w2l = 0.04004; + _g3a2_var._parameters.linwl = 0; + _g3a2_var._parameters.loutwl = 0; + _g3a2_var._parameters.w1r = 0.04004; + _g3a2_var._parameters.w2r = 0.04004; + _g3a2_var._parameters.linwr = 0.0; + _g3a2_var._parameters.loutwr = 0; + _g3a2_var._parameters.h1u = 0.03687; + _g3a2_var._parameters.h2u = 0.002; + _g3a2_var._parameters.linhu = 15.7409; + _g3a2_var._parameters.louthu = 19.0055; + _g3a2_var._parameters.h1d = 0.03687; + _g3a2_var._parameters.h2d = 0.002; + _g3a2_var._parameters.linhd = 15.7409; + _g3a2_var._parameters.louthd = 19.0055; + _g3a2_var._parameters.l = 1.2535999999999987; + _g3a2_var._parameters.R0 = 0.99; + _g3a2_var._parameters.Qcxl = 0.0221; + _g3a2_var._parameters.Qcxr = 0.0221; + _g3a2_var._parameters.Qcyu = 0.023; + _g3a2_var._parameters.Qcyd = 0.023; + _g3a2_var._parameters.alphaxl = 1.75; + _g3a2_var._parameters.alphaxr = 1.75; + _g3a2_var._parameters.alphayu = 1.8; + _g3a2_var._parameters.alphayd = 1.8; + _g3a2_var._parameters.Wxr = 0.015; + _g3a2_var._parameters.Wxl = 0.015; + _g3a2_var._parameters.Wyu = 0.015; + _g3a2_var._parameters.Wyd = 0.015; + _g3a2_var._parameters.mxr = 3; + _g3a2_var._parameters.mxl = 3; + _g3a2_var._parameters.myu = 2; + _g3a2_var._parameters.myd = 2; + _g3a2_var._parameters.QcxrOW = 0.0217; + _g3a2_var._parameters.QcxlOW = 0.0217; + _g3a2_var._parameters.QcyuOW = 0.0217; + _g3a2_var._parameters.QcydOW = 0.0217; + _g3a2_var._parameters.alphaxlOW = 6.07; + _g3a2_var._parameters.alphaxrOW = 6.07; + _g3a2_var._parameters.alphayuOW = 6.07; + _g3a2_var._parameters.alphaydOW = 6.07; + _g3a2_var._parameters.WxrOW = 0.003; + _g3a2_var._parameters.WxlOW = 0.003; + _g3a2_var._parameters.WyuOW = 0.003; + _g3a2_var._parameters.WydOW = 0.003; + _g3a2_var._parameters.mxrOW = 0; + _g3a2_var._parameters.mxlOW = 0; + _g3a2_var._parameters.myuOW = 0; + _g3a2_var._parameters.mydOW = 0; + _g3a2_var._parameters.rwallthick = 0.001; + _g3a2_var._parameters.lwallthick = 0.001; + _g3a2_var._parameters.uwallthick = 0.001; + _g3a2_var._parameters.dwallthick = 0.001; + + + /* component g3a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a2_var._rotation_absolute); + rot_transpose(_g3a1_var._rotation_absolute, tr1); + rot_mul(_g3a2_var._rotation_absolute, tr1, _g3a2_var._rotation_relative); + _g3a2_var._rotation_is_identity = rot_test_identity(_g3a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 15.7229); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a1_var._position_absolute, _g3a2_var._position_absolute); + _g3a2_var._position_relative = rot_apply(_g3a2_var._rotation_absolute, tc1); + } /* g3a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute); + instrument->_position_absolute[39] = _g3a2_var._position_absolute; + instrument->_position_relative[39] = _g3a2_var._position_relative; + _g3a2_var._position_relative_is_zero = coords_test_zero(_g3a2_var._position_relative); + instrument->counter_N[39] = instrument->counter_P[39] = instrument->counter_P2[39] = 0; + instrument->counter_AbsorbProp[39]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0038_g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h1u", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linhu", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "louthu", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h1d", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linhd", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "louthd", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "l", "0", "1.2535999999999987","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a2_setpos */ + +/* component fo3_position=Arm() SETTING, POSITION/ROTATION */ +int _fo3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo3_position_setpos] component fo3_position=Arm() SETTING [Arm:0]"); + stracpy(_fo3_position_var._name, "fo3_position", 16384); + stracpy(_fo3_position_var._type, "Arm", 16384); + _fo3_position_var._index=40; + int current_setpos_index = 40; + /* component fo3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo3_position_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo3_position_var._rotation_absolute, tr1, _fo3_position_var._rotation_relative); + _fo3_position_var._rotation_is_identity = rot_test_identity(_fo3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9865); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo3_position_var._position_absolute); + _fo3_position_var._position_relative = rot_apply(_fo3_position_var._rotation_absolute, tc1); + } /* fo3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute); + instrument->_position_absolute[40] = _fo3_position_var._position_absolute; + instrument->_position_relative[40] = _fo3_position_var._position_relative; + _fo3_position_var._position_relative_is_zero = coords_test_zero(_fo3_position_var._position_relative); + instrument->counter_N[40] = instrument->counter_P[40] = instrument->counter_P2[40] = 0; + instrument->counter_AbsorbProp[40]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0039_fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo3_position_setpos */ + +/* component fo_chopper_3=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_3_setpos] component fo_chopper_3=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_3_var._name, "fo_chopper_3", 16384); + stracpy(_fo_chopper_3_var._type, "MultiDiskChopper", 16384); + _fo_chopper_3_var._index=41; + int current_setpos_index = 41; + if("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" && strlen("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08")) + stracpy(_fo_chopper_3_var._parameters.slit_center, "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" ? "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_center[0]='\0'; + if("40.32;39.61;38.94;38.31;37.72;36.06" && strlen("40.32;39.61;38.94;38.31;37.72;36.06")) + stracpy(_fo_chopper_3_var._parameters.slit_width, "40.32;39.61;38.94;38.31;37.72;36.06" ? "40.32;39.61;38.94;38.31;37.72;36.06" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_width[0]='\0'; + _fo_chopper_3_var._parameters.nslits = 6; + _fo_chopper_3_var._parameters.delta_y = -0.5575; + _fo_chopper_3_var._parameters.nu = -28.0; + _fo_chopper_3_var._parameters.nrev = 0; + _fo_chopper_3_var._parameters.ratio = 1; + _fo_chopper_3_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_3; + _fo_chopper_3_var._parameters.delay = 0; + _fo_chopper_3_var._parameters.isfirst = 0; + _fo_chopper_3_var._parameters.phase = fo3_phase; + _fo_chopper_3_var._parameters.radius = 0.6; + _fo_chopper_3_var._parameters.equal = 0; + _fo_chopper_3_var._parameters.abs_out = 0; + _fo_chopper_3_var._parameters.verbose = 0; + + + /* component fo_chopper_3=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo3_position_var._rotation_absolute, _fo_chopper_3_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_3_var._rotation_absolute, tr1, _fo_chopper_3_var._rotation_relative); + _fo_chopper_3_var._rotation_is_identity = rot_test_identity(_fo_chopper_3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo3_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_3_var._position_absolute = coords_add(_fo3_position_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo_chopper_3_var._position_absolute); + _fo_chopper_3_var._position_relative = rot_apply(_fo_chopper_3_var._rotation_absolute, tc1); + } /* fo_chopper_3=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute); + instrument->_position_absolute[41] = _fo_chopper_3_var._position_absolute; + instrument->_position_relative[41] = _fo_chopper_3_var._position_relative; + _fo_chopper_3_var._position_relative_is_zero = coords_test_zero(_fo_chopper_3_var._position_relative); + instrument->counter_N[41] = instrument->counter_P[41] = instrument->counter_P2[41] = 0; + instrument->counter_AbsorbProp[41]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0040_fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "slit_center", "0 180", "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", "char*"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "slit_width", "10 20", "40.32;39.61;38.94;38.31;37.72;36.06", "char*"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "delta_y", "-0.3", "-0.5575","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nu", "0", "-28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_3","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "phase", "0", "fo3_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "radius", "0.375", "0.6","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_3_setpos */ + +/* component g3b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3b1_setpos] component g3b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3b1_var._name, "g3b1", 16384); + stracpy(_g3b1_var._type, "Guide_four_side", 16384); + _g3b1_var._index=42; + int current_setpos_index = 42; + _g3b1_var._parameters.RIreflect[0]='\0'; + _g3b1_var._parameters.LIreflect[0]='\0'; + _g3b1_var._parameters.UIreflect[0]='\0'; + _g3b1_var._parameters.DIreflect[0]='\0'; + _g3b1_var._parameters.ROreflect[0]='\0'; + _g3b1_var._parameters.LOreflect[0]='\0'; + _g3b1_var._parameters.UOreflect[0]='\0'; + _g3b1_var._parameters.DOreflect[0]='\0'; + _g3b1_var._parameters.w1l = 0.04004; + _g3b1_var._parameters.w2l = 0.04004; + _g3b1_var._parameters.linwl = 0; + _g3b1_var._parameters.loutwl = 0; + _g3b1_var._parameters.w1r = 0.04004; + _g3b1_var._parameters.w2r = 0.04004; + _g3b1_var._parameters.linwr = 0.0; + _g3b1_var._parameters.loutwr = 0; + _g3b1_var._parameters.h1u = 0.03711; + _g3b1_var._parameters.h2u = 0.002; + _g3b1_var._parameters.linhu = 17.0055; + _g3b1_var._parameters.louthu = 18.038; + _g3b1_var._parameters.h1d = 0.03711; + _g3b1_var._parameters.h2d = 0.002; + _g3b1_var._parameters.linhd = 17.0055; + _g3b1_var._parameters.louthd = 18.038; + _g3b1_var._parameters.l = 0.9564999999999984; + _g3b1_var._parameters.R0 = 0.99; + _g3b1_var._parameters.Qcxl = 0.0221; + _g3b1_var._parameters.Qcxr = 0.0221; + _g3b1_var._parameters.Qcyu = 0.023; + _g3b1_var._parameters.Qcyd = 0.023; + _g3b1_var._parameters.alphaxl = 1.75; + _g3b1_var._parameters.alphaxr = 1.75; + _g3b1_var._parameters.alphayu = 1.8; + _g3b1_var._parameters.alphayd = 1.8; + _g3b1_var._parameters.Wxr = 0.015; + _g3b1_var._parameters.Wxl = 0.015; + _g3b1_var._parameters.Wyu = 0.015; + _g3b1_var._parameters.Wyd = 0.015; + _g3b1_var._parameters.mxr = 2.5; + _g3b1_var._parameters.mxl = 2.5; + _g3b1_var._parameters.myu = 2; + _g3b1_var._parameters.myd = 2; + _g3b1_var._parameters.QcxrOW = 0.0217; + _g3b1_var._parameters.QcxlOW = 0.0217; + _g3b1_var._parameters.QcyuOW = 0.0217; + _g3b1_var._parameters.QcydOW = 0.0217; + _g3b1_var._parameters.alphaxlOW = 6.07; + _g3b1_var._parameters.alphaxrOW = 6.07; + _g3b1_var._parameters.alphayuOW = 6.07; + _g3b1_var._parameters.alphaydOW = 6.07; + _g3b1_var._parameters.WxrOW = 0.003; + _g3b1_var._parameters.WxlOW = 0.003; + _g3b1_var._parameters.WyuOW = 0.003; + _g3b1_var._parameters.WydOW = 0.003; + _g3b1_var._parameters.mxrOW = 0; + _g3b1_var._parameters.mxlOW = 0; + _g3b1_var._parameters.myuOW = 0; + _g3b1_var._parameters.mydOW = 0; + _g3b1_var._parameters.rwallthick = 0.001; + _g3b1_var._parameters.lwallthick = 0.001; + _g3b1_var._parameters.uwallthick = 0.001; + _g3b1_var._parameters.dwallthick = 0.001; + + + /* component g3b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3b1_var._rotation_absolute); + rot_transpose(_fo_chopper_3_var._rotation_absolute, tr1); + rot_mul(_g3b1_var._rotation_absolute, tr1, _g3b1_var._rotation_relative); + _g3b1_var._rotation_is_identity = rot_test_identity(_g3b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9965); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_3_var._position_absolute, _g3b1_var._position_absolute); + _g3b1_var._position_relative = rot_apply(_g3b1_var._rotation_absolute, tc1); + } /* g3b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute); + instrument->_position_absolute[42] = _g3b1_var._position_absolute; + instrument->_position_relative[42] = _g3b1_var._position_relative; + _g3b1_var._position_relative_is_zero = coords_test_zero(_g3b1_var._position_relative); + instrument->counter_N[42] = instrument->counter_P[42] = instrument->counter_P2[42] = 0; + instrument->counter_AbsorbProp[42]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0041_g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h1u", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linhu", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "louthu", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h1d", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linhd", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "louthd", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "l", "0", "0.9564999999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3b1_setpos */ + +/* component g4a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a1_setpos] component g4a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a1_var._name, "g4a1", 16384); + stracpy(_g4a1_var._type, "Guide_four_side", 16384); + _g4a1_var._index=43; + int current_setpos_index = 43; + _g4a1_var._parameters.RIreflect[0]='\0'; + _g4a1_var._parameters.LIreflect[0]='\0'; + _g4a1_var._parameters.UIreflect[0]='\0'; + _g4a1_var._parameters.DIreflect[0]='\0'; + _g4a1_var._parameters.ROreflect[0]='\0'; + _g4a1_var._parameters.LOreflect[0]='\0'; + _g4a1_var._parameters.UOreflect[0]='\0'; + _g4a1_var._parameters.DOreflect[0]='\0'; + _g4a1_var._parameters.w1l = 0.04004; + _g4a1_var._parameters.w2l = 0.04004; + _g4a1_var._parameters.linwl = 0; + _g4a1_var._parameters.loutwl = 0; + _g4a1_var._parameters.w1r = 0.04004; + _g4a1_var._parameters.w2r = 0.04004; + _g4a1_var._parameters.linwr = 0.0; + _g4a1_var._parameters.loutwr = 0; + _g4a1_var._parameters.h1u = 0.037165; + _g4a1_var._parameters.h2u = 0.037165; + _g4a1_var._parameters.linhu = 0.0; + _g4a1_var._parameters.louthu = 0; + _g4a1_var._parameters.h1d = 0.037165; + _g4a1_var._parameters.h2d = 0.037165; + _g4a1_var._parameters.linhd = 0.0; + _g4a1_var._parameters.louthd = 0; + _g4a1_var._parameters.l = 1.2600000000000016; + _g4a1_var._parameters.R0 = 0.99; + _g4a1_var._parameters.Qcxl = 0.0221; + _g4a1_var._parameters.Qcxr = 0.0221; + _g4a1_var._parameters.Qcyu = 0.023; + _g4a1_var._parameters.Qcyd = 0.023; + _g4a1_var._parameters.alphaxl = 1.75; + _g4a1_var._parameters.alphaxr = 1.75; + _g4a1_var._parameters.alphayu = 1.8; + _g4a1_var._parameters.alphayd = 1.8; + _g4a1_var._parameters.Wxr = 0.015; + _g4a1_var._parameters.Wxl = 0.015; + _g4a1_var._parameters.Wyu = 0.015; + _g4a1_var._parameters.Wyd = 0.015; + _g4a1_var._parameters.mxr = 3; + _g4a1_var._parameters.mxl = 3; + _g4a1_var._parameters.myu = 2; + _g4a1_var._parameters.myd = 2; + _g4a1_var._parameters.QcxrOW = 0.0217; + _g4a1_var._parameters.QcxlOW = 0.0217; + _g4a1_var._parameters.QcyuOW = 0.0217; + _g4a1_var._parameters.QcydOW = 0.0217; + _g4a1_var._parameters.alphaxlOW = 6.07; + _g4a1_var._parameters.alphaxrOW = 6.07; + _g4a1_var._parameters.alphayuOW = 6.07; + _g4a1_var._parameters.alphaydOW = 6.07; + _g4a1_var._parameters.WxrOW = 0.003; + _g4a1_var._parameters.WxlOW = 0.003; + _g4a1_var._parameters.WyuOW = 0.003; + _g4a1_var._parameters.WydOW = 0.003; + _g4a1_var._parameters.mxrOW = 0; + _g4a1_var._parameters.mxlOW = 0; + _g4a1_var._parameters.myuOW = 0; + _g4a1_var._parameters.mydOW = 0; + _g4a1_var._parameters.rwallthick = 0.001; + _g4a1_var._parameters.lwallthick = 0.001; + _g4a1_var._parameters.uwallthick = 0.001; + _g4a1_var._parameters.dwallthick = 0.001; + + + /* component g4a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a1_var._rotation_absolute); + rot_transpose(_g3b1_var._rotation_absolute, tr1); + rot_mul(_g4a1_var._rotation_absolute, tr1, _g4a1_var._rotation_relative); + _g4a1_var._rotation_is_identity = rot_test_identity(_g4a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 17.964); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3b1_var._position_absolute, _g4a1_var._position_absolute); + _g4a1_var._position_relative = rot_apply(_g4a1_var._rotation_absolute, tc1); + } /* g4a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute); + instrument->_position_absolute[43] = _g4a1_var._position_absolute; + instrument->_position_relative[43] = _g4a1_var._position_relative; + _g4a1_var._position_relative_is_zero = coords_test_zero(_g4a1_var._position_relative); + instrument->counter_N[43] = instrument->counter_P[43] = instrument->counter_P2[43] = 0; + instrument->counter_AbsorbProp[43]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0042_g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "l", "0", "1.2600000000000016","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a1_setpos */ + +/* component monitor_2_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_2_position_setpos] component monitor_2_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_2_position_var._name, "monitor_2_position", 16384); + stracpy(_monitor_2_position_var._type, "Arm", 16384); + _monitor_2_position_var._index=44; + int current_setpos_index = 44; + /* component monitor_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_2_position_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_monitor_2_position_var._rotation_absolute, tr1, _monitor_2_position_var._rotation_relative); + _monitor_2_position_var._rotation_is_identity = rot_test_identity(_monitor_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.245); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _monitor_2_position_var._position_absolute); + _monitor_2_position_var._position_relative = rot_apply(_monitor_2_position_var._rotation_absolute, tc1); + } /* monitor_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute); + instrument->_position_absolute[44] = _monitor_2_position_var._position_absolute; + instrument->_position_relative[44] = _monitor_2_position_var._position_relative; + _monitor_2_position_var._position_relative_is_zero = coords_test_zero(_monitor_2_position_var._position_relative); + instrument->counter_N[44] = instrument->counter_P[44] = instrument->counter_P2[44] = 0; + instrument->counter_AbsorbProp[44]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0043_monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_2_position_setpos */ + +/* component g4a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a2_setpos] component g4a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a2_var._name, "g4a2", 16384); + stracpy(_g4a2_var._type, "Guide_four_side", 16384); + _g4a2_var._index=45; + int current_setpos_index = 45; + _g4a2_var._parameters.RIreflect[0]='\0'; + _g4a2_var._parameters.LIreflect[0]='\0'; + _g4a2_var._parameters.UIreflect[0]='\0'; + _g4a2_var._parameters.DIreflect[0]='\0'; + _g4a2_var._parameters.ROreflect[0]='\0'; + _g4a2_var._parameters.LOreflect[0]='\0'; + _g4a2_var._parameters.UOreflect[0]='\0'; + _g4a2_var._parameters.DOreflect[0]='\0'; + _g4a2_var._parameters.w1l = 0.04004; + _g4a2_var._parameters.w2l = 0.04004; + _g4a2_var._parameters.linwl = 0; + _g4a2_var._parameters.loutwl = 0; + _g4a2_var._parameters.w1r = 0.04004; + _g4a2_var._parameters.w2r = 0.04004; + _g4a2_var._parameters.linwr = 0.0; + _g4a2_var._parameters.loutwr = 0; + _g4a2_var._parameters.h1u = 0.037165; + _g4a2_var._parameters.h2u = 0.037165; + _g4a2_var._parameters.linhu = 0.0; + _g4a2_var._parameters.louthu = 0; + _g4a2_var._parameters.h1d = 0.037165; + _g4a2_var._parameters.h2d = 0.037165; + _g4a2_var._parameters.linhd = 0.0; + _g4a2_var._parameters.louthd = 0; + _g4a2_var._parameters.l = 1.9997499999999988; + _g4a2_var._parameters.R0 = 0.99; + _g4a2_var._parameters.Qcxl = 0.0221; + _g4a2_var._parameters.Qcxr = 0.0221; + _g4a2_var._parameters.Qcyu = 0.023; + _g4a2_var._parameters.Qcyd = 0.023; + _g4a2_var._parameters.alphaxl = 1.75; + _g4a2_var._parameters.alphaxr = 1.75; + _g4a2_var._parameters.alphayu = 1.8; + _g4a2_var._parameters.alphayd = 1.8; + _g4a2_var._parameters.Wxr = 0.015; + _g4a2_var._parameters.Wxl = 0.015; + _g4a2_var._parameters.Wyu = 0.015; + _g4a2_var._parameters.Wyd = 0.015; + _g4a2_var._parameters.mxr = 2.5; + _g4a2_var._parameters.mxl = 2.5; + _g4a2_var._parameters.myu = 2; + _g4a2_var._parameters.myd = 2; + _g4a2_var._parameters.QcxrOW = 0.0217; + _g4a2_var._parameters.QcxlOW = 0.0217; + _g4a2_var._parameters.QcyuOW = 0.0217; + _g4a2_var._parameters.QcydOW = 0.0217; + _g4a2_var._parameters.alphaxlOW = 6.07; + _g4a2_var._parameters.alphaxrOW = 6.07; + _g4a2_var._parameters.alphayuOW = 6.07; + _g4a2_var._parameters.alphaydOW = 6.07; + _g4a2_var._parameters.WxrOW = 0.003; + _g4a2_var._parameters.WxlOW = 0.003; + _g4a2_var._parameters.WyuOW = 0.003; + _g4a2_var._parameters.WydOW = 0.003; + _g4a2_var._parameters.mxrOW = 0; + _g4a2_var._parameters.mxlOW = 0; + _g4a2_var._parameters.myuOW = 0; + _g4a2_var._parameters.mydOW = 0; + _g4a2_var._parameters.rwallthick = 0.001; + _g4a2_var._parameters.lwallthick = 0.001; + _g4a2_var._parameters.uwallthick = 0.001; + _g4a2_var._parameters.dwallthick = 0.001; + + + /* component g4a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a2_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_g4a2_var._rotation_absolute, tr1, _g4a2_var._rotation_relative); + _g4a2_var._rotation_is_identity = rot_test_identity(_g4a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _g4a2_var._position_absolute); + _g4a2_var._position_relative = rot_apply(_g4a2_var._rotation_absolute, tc1); + } /* g4a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute); + instrument->_position_absolute[45] = _g4a2_var._position_absolute; + instrument->_position_relative[45] = _g4a2_var._position_relative; + _g4a2_var._position_relative_is_zero = coords_test_zero(_g4a2_var._position_relative); + instrument->counter_N[45] = instrument->counter_P[45] = instrument->counter_P2[45] = 0; + instrument->counter_AbsorbProp[45]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0044_g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a2_setpos */ + +/* component g4a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a3_setpos] component g4a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a3_var._name, "g4a3", 16384); + stracpy(_g4a3_var._type, "Guide_four_side", 16384); + _g4a3_var._index=46; + int current_setpos_index = 46; + _g4a3_var._parameters.RIreflect[0]='\0'; + _g4a3_var._parameters.LIreflect[0]='\0'; + _g4a3_var._parameters.UIreflect[0]='\0'; + _g4a3_var._parameters.DIreflect[0]='\0'; + _g4a3_var._parameters.ROreflect[0]='\0'; + _g4a3_var._parameters.LOreflect[0]='\0'; + _g4a3_var._parameters.UOreflect[0]='\0'; + _g4a3_var._parameters.DOreflect[0]='\0'; + _g4a3_var._parameters.w1l = 0.04004; + _g4a3_var._parameters.w2l = 0.04004; + _g4a3_var._parameters.linwl = 0; + _g4a3_var._parameters.loutwl = 0; + _g4a3_var._parameters.w1r = 0.04004; + _g4a3_var._parameters.w2r = 0.04004; + _g4a3_var._parameters.linwr = 0.0; + _g4a3_var._parameters.loutwr = 0; + _g4a3_var._parameters.h1u = 0.037165; + _g4a3_var._parameters.h2u = 0.037165; + _g4a3_var._parameters.linhu = 0.0; + _g4a3_var._parameters.louthu = 0; + _g4a3_var._parameters.h1d = 0.037165; + _g4a3_var._parameters.h2d = 0.037165; + _g4a3_var._parameters.linhd = 0.0; + _g4a3_var._parameters.louthd = 0; + _g4a3_var._parameters.l = 2.4252499999999984; + _g4a3_var._parameters.R0 = 0.99; + _g4a3_var._parameters.Qcxl = 0.0221; + _g4a3_var._parameters.Qcxr = 0.0221; + _g4a3_var._parameters.Qcyu = 0.023; + _g4a3_var._parameters.Qcyd = 0.023; + _g4a3_var._parameters.alphaxl = 1.75; + _g4a3_var._parameters.alphaxr = 1.75; + _g4a3_var._parameters.alphayu = 1.8; + _g4a3_var._parameters.alphayd = 1.8; + _g4a3_var._parameters.Wxr = 0.015; + _g4a3_var._parameters.Wxl = 0.015; + _g4a3_var._parameters.Wyu = 0.015; + _g4a3_var._parameters.Wyd = 0.015; + _g4a3_var._parameters.mxr = 2.5; + _g4a3_var._parameters.mxl = 2.5; + _g4a3_var._parameters.myu = 2; + _g4a3_var._parameters.myd = 2; + _g4a3_var._parameters.QcxrOW = 0.0217; + _g4a3_var._parameters.QcxlOW = 0.0217; + _g4a3_var._parameters.QcyuOW = 0.0217; + _g4a3_var._parameters.QcydOW = 0.0217; + _g4a3_var._parameters.alphaxlOW = 6.07; + _g4a3_var._parameters.alphaxrOW = 6.07; + _g4a3_var._parameters.alphayuOW = 6.07; + _g4a3_var._parameters.alphaydOW = 6.07; + _g4a3_var._parameters.WxrOW = 0.003; + _g4a3_var._parameters.WxlOW = 0.003; + _g4a3_var._parameters.WyuOW = 0.003; + _g4a3_var._parameters.WydOW = 0.003; + _g4a3_var._parameters.mxrOW = 0; + _g4a3_var._parameters.mxlOW = 0; + _g4a3_var._parameters.myuOW = 0; + _g4a3_var._parameters.mydOW = 0; + _g4a3_var._parameters.rwallthick = 0.001; + _g4a3_var._parameters.lwallthick = 0.001; + _g4a3_var._parameters.uwallthick = 0.001; + _g4a3_var._parameters.dwallthick = 0.001; + + + /* component g4a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a3_var._rotation_absolute); + rot_transpose(_g4a2_var._rotation_absolute, tr1); + rot_mul(_g4a3_var._rotation_absolute, tr1, _g4a3_var._rotation_relative); + _g4a3_var._rotation_is_identity = rot_test_identity(_g4a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 21.25025); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a2_var._position_absolute, _g4a3_var._position_absolute); + _g4a3_var._position_relative = rot_apply(_g4a3_var._rotation_absolute, tc1); + } /* g4a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute); + instrument->_position_absolute[46] = _g4a3_var._position_absolute; + instrument->_position_relative[46] = _g4a3_var._position_relative; + _g4a3_var._position_relative_is_zero = coords_test_zero(_g4a3_var._position_relative); + instrument->counter_N[46] = instrument->counter_P[46] = instrument->counter_P2[46] = 0; + instrument->counter_AbsorbProp[46]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0045_g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "l", "0", "2.4252499999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a3_setpos */ + +/* component fo4_position=Arm() SETTING, POSITION/ROTATION */ +int _fo4_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo4_position_setpos] component fo4_position=Arm() SETTING [Arm:0]"); + stracpy(_fo4_position_var._name, "fo4_position", 16384); + stracpy(_fo4_position_var._type, "Arm", 16384); + _fo4_position_var._index=47; + int current_setpos_index = 47; + /* component fo4_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo4_position_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo4_position_var._rotation_absolute, tr1, _fo4_position_var._rotation_relative); + _fo4_position_var._rotation_is_identity = rot_test_identity(_fo4_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6855); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo4_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo4_position_var._position_absolute); + _fo4_position_var._position_relative = rot_apply(_fo4_position_var._rotation_absolute, tc1); + } /* fo4_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute); + instrument->_position_absolute[47] = _fo4_position_var._position_absolute; + instrument->_position_relative[47] = _fo4_position_var._position_relative; + _fo4_position_var._position_relative_is_zero = coords_test_zero(_fo4_position_var._position_relative); + instrument->counter_N[47] = instrument->counter_P[47] = instrument->counter_P2[47] = 0; + instrument->counter_AbsorbProp[47]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0046_fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo4_position_setpos */ + +/* component fo_chopper_4=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_4_setpos] component fo_chopper_4=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_4_var._name, "fo_chopper_4", 16384); + stracpy(_fo_chopper_4_var._type, "MultiDiskChopper", 16384); + _fo_chopper_4_var._index=48; + int current_setpos_index = 48; + if("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" && strlen("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998")) + stracpy(_fo_chopper_4_var._parameters.slit_center, "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" ? "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_center[0]='\0'; + if("32.98;31.82;30.74;29.27;28.77;26.76" && strlen("32.98;31.82;30.74;29.27;28.77;26.76")) + stracpy(_fo_chopper_4_var._parameters.slit_width, "32.98;31.82;30.74;29.27;28.77;26.76" ? "32.98;31.82;30.74;29.27;28.77;26.76" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_width[0]='\0'; + _fo_chopper_4_var._parameters.nslits = 6; + _fo_chopper_4_var._parameters.delta_y = -0.7075; + _fo_chopper_4_var._parameters.nu = -14.0; + _fo_chopper_4_var._parameters.nrev = 0; + _fo_chopper_4_var._parameters.ratio = 1; + _fo_chopper_4_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_4; + _fo_chopper_4_var._parameters.delay = 0; + _fo_chopper_4_var._parameters.isfirst = 0; + _fo_chopper_4_var._parameters.phase = fo4_phase; + _fo_chopper_4_var._parameters.radius = 0.75; + _fo_chopper_4_var._parameters.equal = 0; + _fo_chopper_4_var._parameters.abs_out = 0; + _fo_chopper_4_var._parameters.verbose = 0; + + + /* component fo_chopper_4=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo4_position_var._rotation_absolute, _fo_chopper_4_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_4_var._rotation_absolute, tr1, _fo_chopper_4_var._rotation_relative); + _fo_chopper_4_var._rotation_is_identity = rot_test_identity(_fo_chopper_4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo4_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_4_var._position_absolute = coords_add(_fo4_position_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo_chopper_4_var._position_absolute); + _fo_chopper_4_var._position_relative = rot_apply(_fo_chopper_4_var._rotation_absolute, tc1); + } /* fo_chopper_4=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute); + instrument->_position_absolute[48] = _fo_chopper_4_var._position_absolute; + instrument->_position_relative[48] = _fo_chopper_4_var._position_relative; + _fo_chopper_4_var._position_relative_is_zero = coords_test_zero(_fo_chopper_4_var._position_relative); + instrument->counter_N[48] = instrument->counter_P[48] = instrument->counter_P2[48] = 0; + instrument->counter_AbsorbProp[48]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0047_fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "slit_center", "0 180", "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", "char*"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "slit_width", "10 20", "32.98;31.82;30.74;29.27;28.77;26.76", "char*"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_4","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "phase", "0", "fo4_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_4_setpos */ + +/* component g4b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b1_setpos] component g4b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b1_var._name, "g4b1", 16384); + stracpy(_g4b1_var._type, "Guide_four_side", 16384); + _g4b1_var._index=49; + int current_setpos_index = 49; + _g4b1_var._parameters.RIreflect[0]='\0'; + _g4b1_var._parameters.LIreflect[0]='\0'; + _g4b1_var._parameters.UIreflect[0]='\0'; + _g4b1_var._parameters.DIreflect[0]='\0'; + _g4b1_var._parameters.ROreflect[0]='\0'; + _g4b1_var._parameters.LOreflect[0]='\0'; + _g4b1_var._parameters.UOreflect[0]='\0'; + _g4b1_var._parameters.DOreflect[0]='\0'; + _g4b1_var._parameters.w1l = 0.04004; + _g4b1_var._parameters.w2l = 0.04004; + _g4b1_var._parameters.linwl = 0; + _g4b1_var._parameters.loutwl = 0; + _g4b1_var._parameters.w1r = 0.04004; + _g4b1_var._parameters.w2r = 0.04004; + _g4b1_var._parameters.linwr = 0.0; + _g4b1_var._parameters.loutwr = 0; + _g4b1_var._parameters.h1u = 0.037165; + _g4b1_var._parameters.h2u = 0.037165; + _g4b1_var._parameters.linhu = 0.0; + _g4b1_var._parameters.louthu = 0; + _g4b1_var._parameters.h1d = 0.037165; + _g4b1_var._parameters.h2d = 0.037165; + _g4b1_var._parameters.linhd = 0.0; + _g4b1_var._parameters.louthd = 0; + _g4b1_var._parameters.l = 0.5565999999999995; + _g4b1_var._parameters.R0 = 0.99; + _g4b1_var._parameters.Qcxl = 0.0221; + _g4b1_var._parameters.Qcxr = 0.0221; + _g4b1_var._parameters.Qcyu = 0.023; + _g4b1_var._parameters.Qcyd = 0.023; + _g4b1_var._parameters.alphaxl = 1.75; + _g4b1_var._parameters.alphaxr = 1.75; + _g4b1_var._parameters.alphayu = 1.8; + _g4b1_var._parameters.alphayd = 1.8; + _g4b1_var._parameters.Wxr = 0.015; + _g4b1_var._parameters.Wxl = 0.015; + _g4b1_var._parameters.Wyu = 0.015; + _g4b1_var._parameters.Wyd = 0.015; + _g4b1_var._parameters.mxr = 2.5; + _g4b1_var._parameters.mxl = 2.5; + _g4b1_var._parameters.myu = 2; + _g4b1_var._parameters.myd = 2; + _g4b1_var._parameters.QcxrOW = 0.0217; + _g4b1_var._parameters.QcxlOW = 0.0217; + _g4b1_var._parameters.QcyuOW = 0.0217; + _g4b1_var._parameters.QcydOW = 0.0217; + _g4b1_var._parameters.alphaxlOW = 6.07; + _g4b1_var._parameters.alphaxrOW = 6.07; + _g4b1_var._parameters.alphayuOW = 6.07; + _g4b1_var._parameters.alphaydOW = 6.07; + _g4b1_var._parameters.WxrOW = 0.003; + _g4b1_var._parameters.WxlOW = 0.003; + _g4b1_var._parameters.WyuOW = 0.003; + _g4b1_var._parameters.WydOW = 0.003; + _g4b1_var._parameters.mxrOW = 0; + _g4b1_var._parameters.mxlOW = 0; + _g4b1_var._parameters.myuOW = 0; + _g4b1_var._parameters.mydOW = 0; + _g4b1_var._parameters.rwallthick = 0.001; + _g4b1_var._parameters.lwallthick = 0.001; + _g4b1_var._parameters.uwallthick = 0.001; + _g4b1_var._parameters.dwallthick = 0.001; + + + /* component g4b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b1_var._rotation_absolute); + rot_transpose(_fo_chopper_4_var._rotation_absolute, tr1); + rot_mul(_g4b1_var._rotation_absolute, tr1, _g4b1_var._rotation_relative); + _g4b1_var._rotation_is_identity = rot_test_identity(_g4b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6955); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_4_var._position_absolute, _g4b1_var._position_absolute); + _g4b1_var._position_relative = rot_apply(_g4b1_var._rotation_absolute, tc1); + } /* g4b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute); + instrument->_position_absolute[49] = _g4b1_var._position_absolute; + instrument->_position_relative[49] = _g4b1_var._position_relative; + _g4b1_var._position_relative_is_zero = coords_test_zero(_g4b1_var._position_relative); + instrument->counter_N[49] = instrument->counter_P[49] = instrument->counter_P2[49] = 0; + instrument->counter_AbsorbProp[49]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0048_g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "l", "0", "0.5565999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b1_setpos */ + +/* component g4b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b2_setpos] component g4b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b2_var._name, "g4b2", 16384); + stracpy(_g4b2_var._type, "Guide_four_side", 16384); + _g4b2_var._index=50; + int current_setpos_index = 50; + _g4b2_var._parameters.RIreflect[0]='\0'; + _g4b2_var._parameters.LIreflect[0]='\0'; + _g4b2_var._parameters.UIreflect[0]='\0'; + _g4b2_var._parameters.DIreflect[0]='\0'; + _g4b2_var._parameters.ROreflect[0]='\0'; + _g4b2_var._parameters.LOreflect[0]='\0'; + _g4b2_var._parameters.UOreflect[0]='\0'; + _g4b2_var._parameters.DOreflect[0]='\0'; + _g4b2_var._parameters.w1l = 0.04004; + _g4b2_var._parameters.w2l = 0.04004; + _g4b2_var._parameters.linwl = 0; + _g4b2_var._parameters.loutwl = 0; + _g4b2_var._parameters.w1r = 0.04004; + _g4b2_var._parameters.w2r = 0.04004; + _g4b2_var._parameters.linwr = 0.0; + _g4b2_var._parameters.loutwr = 0; + _g4b2_var._parameters.h1u = 0.037165; + _g4b2_var._parameters.h2u = 0.037165; + _g4b2_var._parameters.linhu = 0.0; + _g4b2_var._parameters.louthu = 0; + _g4b2_var._parameters.h1d = 0.037165; + _g4b2_var._parameters.h2d = 0.037165; + _g4b2_var._parameters.linhd = 0.0; + _g4b2_var._parameters.louthd = 0; + _g4b2_var._parameters.l = 1.7800000000000011; + _g4b2_var._parameters.R0 = 0.99; + _g4b2_var._parameters.Qcxl = 0.0221; + _g4b2_var._parameters.Qcxr = 0.0221; + _g4b2_var._parameters.Qcyu = 0.023; + _g4b2_var._parameters.Qcyd = 0.023; + _g4b2_var._parameters.alphaxl = 1.75; + _g4b2_var._parameters.alphaxr = 1.75; + _g4b2_var._parameters.alphayu = 1.8; + _g4b2_var._parameters.alphayd = 1.8; + _g4b2_var._parameters.Wxr = 0.015; + _g4b2_var._parameters.Wxl = 0.015; + _g4b2_var._parameters.Wyu = 0.015; + _g4b2_var._parameters.Wyd = 0.015; + _g4b2_var._parameters.mxr = 3.0; + _g4b2_var._parameters.mxl = 3.0; + _g4b2_var._parameters.myu = 2; + _g4b2_var._parameters.myd = 2; + _g4b2_var._parameters.QcxrOW = 0.0217; + _g4b2_var._parameters.QcxlOW = 0.0217; + _g4b2_var._parameters.QcyuOW = 0.0217; + _g4b2_var._parameters.QcydOW = 0.0217; + _g4b2_var._parameters.alphaxlOW = 6.07; + _g4b2_var._parameters.alphaxrOW = 6.07; + _g4b2_var._parameters.alphayuOW = 6.07; + _g4b2_var._parameters.alphaydOW = 6.07; + _g4b2_var._parameters.WxrOW = 0.003; + _g4b2_var._parameters.WxlOW = 0.003; + _g4b2_var._parameters.WyuOW = 0.003; + _g4b2_var._parameters.WydOW = 0.003; + _g4b2_var._parameters.mxrOW = 0; + _g4b2_var._parameters.mxlOW = 0; + _g4b2_var._parameters.myuOW = 0; + _g4b2_var._parameters.mydOW = 0; + _g4b2_var._parameters.rwallthick = 0.001; + _g4b2_var._parameters.lwallthick = 0.001; + _g4b2_var._parameters.uwallthick = 0.001; + _g4b2_var._parameters.dwallthick = 0.001; + + + /* component g4b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b2_var._rotation_absolute); + rot_transpose(_g4b1_var._rotation_absolute, tr1); + rot_mul(_g4b2_var._rotation_absolute, tr1, _g4b2_var._rotation_relative); + _g4b2_var._rotation_is_identity = rot_test_identity(_g4b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 24.2561); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b1_var._position_absolute, _g4b2_var._position_absolute); + _g4b2_var._position_relative = rot_apply(_g4b2_var._rotation_absolute, tc1); + } /* g4b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute); + instrument->_position_absolute[50] = _g4b2_var._position_absolute; + instrument->_position_relative[50] = _g4b2_var._position_relative; + _g4b2_var._position_relative_is_zero = coords_test_zero(_g4b2_var._position_relative); + instrument->counter_N[50] = instrument->counter_P[50] = instrument->counter_P2[50] = 0; + instrument->counter_AbsorbProp[50]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0049_g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "l", "0", "1.7800000000000011","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b2_setpos */ + +/* component g4b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b3_setpos] component g4b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b3_var._name, "g4b3", 16384); + stracpy(_g4b3_var._type, "Guide_four_side", 16384); + _g4b3_var._index=51; + int current_setpos_index = 51; + _g4b3_var._parameters.RIreflect[0]='\0'; + _g4b3_var._parameters.LIreflect[0]='\0'; + _g4b3_var._parameters.UIreflect[0]='\0'; + _g4b3_var._parameters.DIreflect[0]='\0'; + _g4b3_var._parameters.ROreflect[0]='\0'; + _g4b3_var._parameters.LOreflect[0]='\0'; + _g4b3_var._parameters.UOreflect[0]='\0'; + _g4b3_var._parameters.DOreflect[0]='\0'; + _g4b3_var._parameters.w1l = 0.04004; + _g4b3_var._parameters.w2l = 0.04004; + _g4b3_var._parameters.linwl = 0; + _g4b3_var._parameters.loutwl = 0; + _g4b3_var._parameters.w1r = 0.04004; + _g4b3_var._parameters.w2r = 0.04004; + _g4b3_var._parameters.linwr = 0.0; + _g4b3_var._parameters.loutwr = 0; + _g4b3_var._parameters.h1u = 0.037165; + _g4b3_var._parameters.h2u = 0.037165; + _g4b3_var._parameters.linhu = 0.0; + _g4b3_var._parameters.louthu = 0; + _g4b3_var._parameters.h1d = 0.037165; + _g4b3_var._parameters.h2d = 0.037165; + _g4b3_var._parameters.linhd = 0.0; + _g4b3_var._parameters.louthd = 0; + _g4b3_var._parameters.l = 2.1380000000000017; + _g4b3_var._parameters.R0 = 0.99; + _g4b3_var._parameters.Qcxl = 0.0217; + _g4b3_var._parameters.Qcxr = 0.0217; + _g4b3_var._parameters.Qcyu = 0.023; + _g4b3_var._parameters.Qcyd = 0.023; + _g4b3_var._parameters.alphaxl = 2.5; + _g4b3_var._parameters.alphaxr = 2.5; + _g4b3_var._parameters.alphayu = 1.8; + _g4b3_var._parameters.alphayd = 1.8; + _g4b3_var._parameters.Wxr = 0.015; + _g4b3_var._parameters.Wxl = 0.015; + _g4b3_var._parameters.Wyu = 0.015; + _g4b3_var._parameters.Wyd = 0.015; + _g4b3_var._parameters.mxr = 3.5; + _g4b3_var._parameters.mxl = 3.5; + _g4b3_var._parameters.myu = 2; + _g4b3_var._parameters.myd = 2; + _g4b3_var._parameters.QcxrOW = 0.0217; + _g4b3_var._parameters.QcxlOW = 0.0217; + _g4b3_var._parameters.QcyuOW = 0.0217; + _g4b3_var._parameters.QcydOW = 0.0217; + _g4b3_var._parameters.alphaxlOW = 6.07; + _g4b3_var._parameters.alphaxrOW = 6.07; + _g4b3_var._parameters.alphayuOW = 6.07; + _g4b3_var._parameters.alphaydOW = 6.07; + _g4b3_var._parameters.WxrOW = 0.003; + _g4b3_var._parameters.WxlOW = 0.003; + _g4b3_var._parameters.WyuOW = 0.003; + _g4b3_var._parameters.WydOW = 0.003; + _g4b3_var._parameters.mxrOW = 0; + _g4b3_var._parameters.mxlOW = 0; + _g4b3_var._parameters.myuOW = 0; + _g4b3_var._parameters.mydOW = 0; + _g4b3_var._parameters.rwallthick = 0.001; + _g4b3_var._parameters.lwallthick = 0.001; + _g4b3_var._parameters.uwallthick = 0.001; + _g4b3_var._parameters.dwallthick = 0.001; + + + /* component g4b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b3_var._rotation_absolute); + rot_transpose(_g4b2_var._rotation_absolute, tr1); + rot_mul(_g4b3_var._rotation_absolute, tr1, _g4b3_var._rotation_relative); + _g4b3_var._rotation_is_identity = rot_test_identity(_g4b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 26.0366); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b2_var._position_absolute, _g4b3_var._position_absolute); + _g4b3_var._position_relative = rot_apply(_g4b3_var._rotation_absolute, tc1); + } /* g4b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute); + instrument->_position_absolute[51] = _g4b3_var._position_absolute; + instrument->_position_relative[51] = _g4b3_var._position_relative; + _g4b3_var._position_relative_is_zero = coords_test_zero(_g4b3_var._position_relative); + instrument->counter_N[51] = instrument->counter_P[51] = instrument->counter_P2[51] = 0; + instrument->counter_AbsorbProp[51]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0050_g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "l", "0", "2.1380000000000017","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b3_setpos */ + +/* component g4b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b4_setpos] component g4b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b4_var._name, "g4b4", 16384); + stracpy(_g4b4_var._type, "Guide_four_side", 16384); + _g4b4_var._index=52; + int current_setpos_index = 52; + _g4b4_var._parameters.RIreflect[0]='\0'; + _g4b4_var._parameters.LIreflect[0]='\0'; + _g4b4_var._parameters.UIreflect[0]='\0'; + _g4b4_var._parameters.DIreflect[0]='\0'; + _g4b4_var._parameters.ROreflect[0]='\0'; + _g4b4_var._parameters.LOreflect[0]='\0'; + _g4b4_var._parameters.UOreflect[0]='\0'; + _g4b4_var._parameters.DOreflect[0]='\0'; + _g4b4_var._parameters.w1l = 0.04004; + _g4b4_var._parameters.w2l = 0.04004; + _g4b4_var._parameters.linwl = 0; + _g4b4_var._parameters.loutwl = 0; + _g4b4_var._parameters.w1r = 0.04004; + _g4b4_var._parameters.w2r = 0.04004; + _g4b4_var._parameters.linwr = 0.0; + _g4b4_var._parameters.loutwr = 0; + _g4b4_var._parameters.h1u = 0.037165; + _g4b4_var._parameters.h2u = 0.037165; + _g4b4_var._parameters.linhu = 0.0; + _g4b4_var._parameters.louthu = 0; + _g4b4_var._parameters.h1d = 0.037165; + _g4b4_var._parameters.h2d = 0.037165; + _g4b4_var._parameters.linhd = 0.0; + _g4b4_var._parameters.louthd = 0; + _g4b4_var._parameters.l = 1.9997499999999988; + _g4b4_var._parameters.R0 = 0.99; + _g4b4_var._parameters.Qcxl = 0.0217; + _g4b4_var._parameters.Qcxr = 0.0217; + _g4b4_var._parameters.Qcyu = 0.023; + _g4b4_var._parameters.Qcyd = 0.023; + _g4b4_var._parameters.alphaxl = 2.5; + _g4b4_var._parameters.alphaxr = 2.5; + _g4b4_var._parameters.alphayu = 1.8; + _g4b4_var._parameters.alphayd = 1.8; + _g4b4_var._parameters.Wxr = 0.015; + _g4b4_var._parameters.Wxl = 0.015; + _g4b4_var._parameters.Wyu = 0.015; + _g4b4_var._parameters.Wyd = 0.015; + _g4b4_var._parameters.mxr = 3.5; + _g4b4_var._parameters.mxl = 3.5; + _g4b4_var._parameters.myu = 2; + _g4b4_var._parameters.myd = 2; + _g4b4_var._parameters.QcxrOW = 0.0217; + _g4b4_var._parameters.QcxlOW = 0.0217; + _g4b4_var._parameters.QcyuOW = 0.0217; + _g4b4_var._parameters.QcydOW = 0.0217; + _g4b4_var._parameters.alphaxlOW = 6.07; + _g4b4_var._parameters.alphaxrOW = 6.07; + _g4b4_var._parameters.alphayuOW = 6.07; + _g4b4_var._parameters.alphaydOW = 6.07; + _g4b4_var._parameters.WxrOW = 0.003; + _g4b4_var._parameters.WxlOW = 0.003; + _g4b4_var._parameters.WyuOW = 0.003; + _g4b4_var._parameters.WydOW = 0.003; + _g4b4_var._parameters.mxrOW = 0; + _g4b4_var._parameters.mxlOW = 0; + _g4b4_var._parameters.myuOW = 0; + _g4b4_var._parameters.mydOW = 0; + _g4b4_var._parameters.rwallthick = 0.001; + _g4b4_var._parameters.lwallthick = 0.001; + _g4b4_var._parameters.uwallthick = 0.001; + _g4b4_var._parameters.dwallthick = 0.001; + + + /* component g4b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b4_var._rotation_absolute); + rot_transpose(_g4b3_var._rotation_absolute, tr1); + rot_mul(_g4b4_var._rotation_absolute, tr1, _g4b4_var._rotation_relative); + _g4b4_var._rotation_is_identity = rot_test_identity(_g4b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 28.1786); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b3_var._position_absolute, _g4b4_var._position_absolute); + _g4b4_var._position_relative = rot_apply(_g4b4_var._rotation_absolute, tc1); + } /* g4b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute); + instrument->_position_absolute[52] = _g4b4_var._position_absolute; + instrument->_position_relative[52] = _g4b4_var._position_relative; + _g4b4_var._position_relative_is_zero = coords_test_zero(_g4b4_var._position_relative); + instrument->counter_N[52] = instrument->counter_P[52] = instrument->counter_P2[52] = 0; + instrument->counter_AbsorbProp[52]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0051_g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b4_setpos */ + +/* component g4b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b5_setpos] component g4b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b5_var._name, "g4b5", 16384); + stracpy(_g4b5_var._type, "Guide_four_side", 16384); + _g4b5_var._index=53; + int current_setpos_index = 53; + _g4b5_var._parameters.RIreflect[0]='\0'; + _g4b5_var._parameters.LIreflect[0]='\0'; + _g4b5_var._parameters.UIreflect[0]='\0'; + _g4b5_var._parameters.DIreflect[0]='\0'; + _g4b5_var._parameters.ROreflect[0]='\0'; + _g4b5_var._parameters.LOreflect[0]='\0'; + _g4b5_var._parameters.UOreflect[0]='\0'; + _g4b5_var._parameters.DOreflect[0]='\0'; + _g4b5_var._parameters.w1l = 0.04004; + _g4b5_var._parameters.w2l = 0.04004; + _g4b5_var._parameters.linwl = 0; + _g4b5_var._parameters.loutwl = 0; + _g4b5_var._parameters.w1r = 0.04004; + _g4b5_var._parameters.w2r = 0.04004; + _g4b5_var._parameters.linwr = 0.0; + _g4b5_var._parameters.loutwr = 0; + _g4b5_var._parameters.h1u = 0.037165; + _g4b5_var._parameters.h2u = 0.037165; + _g4b5_var._parameters.linhu = 0.0; + _g4b5_var._parameters.louthu = 0; + _g4b5_var._parameters.h1d = 0.037165; + _g4b5_var._parameters.h2d = 0.037165; + _g4b5_var._parameters.linhd = 0.0; + _g4b5_var._parameters.louthd = 0; + _g4b5_var._parameters.l = 1.4049499999999995; + _g4b5_var._parameters.R0 = 0.99; + _g4b5_var._parameters.Qcxl = 0.0221; + _g4b5_var._parameters.Qcxr = 0.0221; + _g4b5_var._parameters.Qcyu = 0.023; + _g4b5_var._parameters.Qcyd = 0.023; + _g4b5_var._parameters.alphaxl = 1.75; + _g4b5_var._parameters.alphaxr = 1.75; + _g4b5_var._parameters.alphayu = 1.8; + _g4b5_var._parameters.alphayd = 1.8; + _g4b5_var._parameters.Wxr = 0.015; + _g4b5_var._parameters.Wxl = 0.015; + _g4b5_var._parameters.Wyu = 0.015; + _g4b5_var._parameters.Wyd = 0.015; + _g4b5_var._parameters.mxr = 3; + _g4b5_var._parameters.mxl = 3; + _g4b5_var._parameters.myu = 2; + _g4b5_var._parameters.myd = 2; + _g4b5_var._parameters.QcxrOW = 0.0217; + _g4b5_var._parameters.QcxlOW = 0.0217; + _g4b5_var._parameters.QcyuOW = 0.0217; + _g4b5_var._parameters.QcydOW = 0.0217; + _g4b5_var._parameters.alphaxlOW = 6.07; + _g4b5_var._parameters.alphaxrOW = 6.07; + _g4b5_var._parameters.alphayuOW = 6.07; + _g4b5_var._parameters.alphaydOW = 6.07; + _g4b5_var._parameters.WxrOW = 0.003; + _g4b5_var._parameters.WxlOW = 0.003; + _g4b5_var._parameters.WyuOW = 0.003; + _g4b5_var._parameters.WydOW = 0.003; + _g4b5_var._parameters.mxrOW = 0; + _g4b5_var._parameters.mxlOW = 0; + _g4b5_var._parameters.myuOW = 0; + _g4b5_var._parameters.mydOW = 0; + _g4b5_var._parameters.rwallthick = 0.001; + _g4b5_var._parameters.lwallthick = 0.001; + _g4b5_var._parameters.uwallthick = 0.001; + _g4b5_var._parameters.dwallthick = 0.001; + + + /* component g4b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b5_var._rotation_absolute); + rot_transpose(_g4b4_var._rotation_absolute, tr1); + rot_mul(_g4b5_var._rotation_absolute, tr1, _g4b5_var._rotation_relative); + _g4b5_var._rotation_is_identity = rot_test_identity(_g4b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 30.17885); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b4_var._position_absolute, _g4b5_var._position_absolute); + _g4b5_var._position_relative = rot_apply(_g4b5_var._rotation_absolute, tc1); + } /* g4b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute); + instrument->_position_absolute[53] = _g4b5_var._position_absolute; + instrument->_position_relative[53] = _g4b5_var._position_relative; + _g4b5_var._position_relative_is_zero = coords_test_zero(_g4b5_var._position_relative); + instrument->counter_N[53] = instrument->counter_P[53] = instrument->counter_P2[53] = 0; + instrument->counter_AbsorbProp[53]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0052_g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "l", "0", "1.4049499999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b5_setpos */ + +/* component g4b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b6_setpos] component g4b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b6_var._name, "g4b6", 16384); + stracpy(_g4b6_var._type, "Guide_four_side", 16384); + _g4b6_var._index=54; + int current_setpos_index = 54; + _g4b6_var._parameters.RIreflect[0]='\0'; + _g4b6_var._parameters.LIreflect[0]='\0'; + _g4b6_var._parameters.UIreflect[0]='\0'; + _g4b6_var._parameters.DIreflect[0]='\0'; + _g4b6_var._parameters.ROreflect[0]='\0'; + _g4b6_var._parameters.LOreflect[0]='\0'; + _g4b6_var._parameters.UOreflect[0]='\0'; + _g4b6_var._parameters.DOreflect[0]='\0'; + _g4b6_var._parameters.w1l = 0.04004; + _g4b6_var._parameters.w2l = 0.04004; + _g4b6_var._parameters.linwl = 0; + _g4b6_var._parameters.loutwl = 0; + _g4b6_var._parameters.w1r = 0.04004; + _g4b6_var._parameters.w2r = 0.04004; + _g4b6_var._parameters.linwr = 0.0; + _g4b6_var._parameters.loutwr = 0; + _g4b6_var._parameters.h1u = 0.037165; + _g4b6_var._parameters.h2u = 0.037165; + _g4b6_var._parameters.linhu = 0.0; + _g4b6_var._parameters.louthu = 0; + _g4b6_var._parameters.h1d = 0.037165; + _g4b6_var._parameters.h2d = 0.037165; + _g4b6_var._parameters.linhd = 0.0; + _g4b6_var._parameters.louthd = 0; + _g4b6_var._parameters.l = 0.4106999999999985; + _g4b6_var._parameters.R0 = 0.99; + _g4b6_var._parameters.Qcxl = 0.0221; + _g4b6_var._parameters.Qcxr = 0.0221; + _g4b6_var._parameters.Qcyu = 0.023; + _g4b6_var._parameters.Qcyd = 0.023; + _g4b6_var._parameters.alphaxl = 1.75; + _g4b6_var._parameters.alphaxr = 1.75; + _g4b6_var._parameters.alphayu = 1.8; + _g4b6_var._parameters.alphayd = 1.8; + _g4b6_var._parameters.Wxr = 0.015; + _g4b6_var._parameters.Wxl = 0.015; + _g4b6_var._parameters.Wyu = 0.015; + _g4b6_var._parameters.Wyd = 0.015; + _g4b6_var._parameters.mxr = 3; + _g4b6_var._parameters.mxl = 3; + _g4b6_var._parameters.myu = 2; + _g4b6_var._parameters.myd = 2; + _g4b6_var._parameters.QcxrOW = 0.0217; + _g4b6_var._parameters.QcxlOW = 0.0217; + _g4b6_var._parameters.QcyuOW = 0.0217; + _g4b6_var._parameters.QcydOW = 0.0217; + _g4b6_var._parameters.alphaxlOW = 6.07; + _g4b6_var._parameters.alphaxrOW = 6.07; + _g4b6_var._parameters.alphayuOW = 6.07; + _g4b6_var._parameters.alphaydOW = 6.07; + _g4b6_var._parameters.WxrOW = 0.003; + _g4b6_var._parameters.WxlOW = 0.003; + _g4b6_var._parameters.WyuOW = 0.003; + _g4b6_var._parameters.WydOW = 0.003; + _g4b6_var._parameters.mxrOW = 0; + _g4b6_var._parameters.mxlOW = 0; + _g4b6_var._parameters.myuOW = 0; + _g4b6_var._parameters.mydOW = 0; + _g4b6_var._parameters.rwallthick = 0.001; + _g4b6_var._parameters.lwallthick = 0.001; + _g4b6_var._parameters.uwallthick = 0.001; + _g4b6_var._parameters.dwallthick = 0.001; + + + /* component g4b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b6_var._rotation_absolute); + rot_transpose(_g4b5_var._rotation_absolute, tr1); + rot_mul(_g4b6_var._rotation_absolute, tr1, _g4b6_var._rotation_relative); + _g4b6_var._rotation_is_identity = rot_test_identity(_g4b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 31.5893); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b5_var._position_absolute, _g4b6_var._position_absolute); + _g4b6_var._position_relative = rot_apply(_g4b6_var._rotation_absolute, tc1); + } /* g4b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute); + instrument->_position_absolute[54] = _g4b6_var._position_absolute; + instrument->_position_relative[54] = _g4b6_var._position_relative; + _g4b6_var._position_relative_is_zero = coords_test_zero(_g4b6_var._position_relative); + instrument->counter_N[54] = instrument->counter_P[54] = instrument->counter_P2[54] = 0; + instrument->counter_AbsorbProp[54]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0053_g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "l", "0", "0.4106999999999985","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b6_setpos */ + +/* component g5a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5a1_setpos] component g5a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5a1_var._name, "g5a1", 16384); + stracpy(_g5a1_var._type, "Guide_four_side", 16384); + _g5a1_var._index=55; + int current_setpos_index = 55; + _g5a1_var._parameters.RIreflect[0]='\0'; + _g5a1_var._parameters.LIreflect[0]='\0'; + _g5a1_var._parameters.UIreflect[0]='\0'; + _g5a1_var._parameters.DIreflect[0]='\0'; + _g5a1_var._parameters.ROreflect[0]='\0'; + _g5a1_var._parameters.LOreflect[0]='\0'; + _g5a1_var._parameters.UOreflect[0]='\0'; + _g5a1_var._parameters.DOreflect[0]='\0'; + _g5a1_var._parameters.w1l = 0.04004; + _g5a1_var._parameters.w2l = 0.04004; + _g5a1_var._parameters.linwl = 0; + _g5a1_var._parameters.loutwl = 0; + _g5a1_var._parameters.w1r = 0.04004; + _g5a1_var._parameters.w2r = 0.04004; + _g5a1_var._parameters.linwr = 0.0; + _g5a1_var._parameters.loutwr = 0; + _g5a1_var._parameters.h1u = 0.037165; + _g5a1_var._parameters.h2u = 0.002; + _g5a1_var._parameters.linhu = 18.0; + _g5a1_var._parameters.louthu = 17.005499999999998; + _g5a1_var._parameters.h1d = 0.037165; + _g5a1_var._parameters.h2d = 0.002; + _g5a1_var._parameters.linhd = 18.0; + _g5a1_var._parameters.louthd = 17.005499999999998; + _g5a1_var._parameters.l = 0.9945000000000022; + _g5a1_var._parameters.R0 = 0.99; + _g5a1_var._parameters.Qcxl = 0.023; + _g5a1_var._parameters.Qcxr = 0.023; + _g5a1_var._parameters.Qcyu = 0.023; + _g5a1_var._parameters.Qcyd = 0.023; + _g5a1_var._parameters.alphaxl = 1.8; + _g5a1_var._parameters.alphaxr = 1.8; + _g5a1_var._parameters.alphayu = 1.8; + _g5a1_var._parameters.alphayd = 1.8; + _g5a1_var._parameters.Wxr = 0.015; + _g5a1_var._parameters.Wxl = 0.015; + _g5a1_var._parameters.Wyu = 0.015; + _g5a1_var._parameters.Wyd = 0.015; + _g5a1_var._parameters.mxr = 2; + _g5a1_var._parameters.mxl = 2; + _g5a1_var._parameters.myu = 2; + _g5a1_var._parameters.myd = 2; + _g5a1_var._parameters.QcxrOW = 0.0217; + _g5a1_var._parameters.QcxlOW = 0.0217; + _g5a1_var._parameters.QcyuOW = 0.0217; + _g5a1_var._parameters.QcydOW = 0.0217; + _g5a1_var._parameters.alphaxlOW = 6.07; + _g5a1_var._parameters.alphaxrOW = 6.07; + _g5a1_var._parameters.alphayuOW = 6.07; + _g5a1_var._parameters.alphaydOW = 6.07; + _g5a1_var._parameters.WxrOW = 0.003; + _g5a1_var._parameters.WxlOW = 0.003; + _g5a1_var._parameters.WyuOW = 0.003; + _g5a1_var._parameters.WydOW = 0.003; + _g5a1_var._parameters.mxrOW = 0; + _g5a1_var._parameters.mxlOW = 0; + _g5a1_var._parameters.myuOW = 0; + _g5a1_var._parameters.mydOW = 0; + _g5a1_var._parameters.rwallthick = 0.001; + _g5a1_var._parameters.lwallthick = 0.001; + _g5a1_var._parameters.uwallthick = 0.001; + _g5a1_var._parameters.dwallthick = 0.001; + + + /* component g5a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5a1_var._rotation_absolute); + rot_transpose(_g4b6_var._rotation_absolute, tr1); + rot_mul(_g5a1_var._rotation_absolute, tr1, _g5a1_var._rotation_relative); + _g5a1_var._rotation_is_identity = rot_test_identity(_g5a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 32.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b6_var._position_absolute, _g5a1_var._position_absolute); + _g5a1_var._position_relative = rot_apply(_g5a1_var._rotation_absolute, tc1); + } /* g5a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute); + instrument->_position_absolute[55] = _g5a1_var._position_absolute; + instrument->_position_relative[55] = _g5a1_var._position_relative; + _g5a1_var._position_relative_is_zero = coords_test_zero(_g5a1_var._position_relative); + instrument->counter_N[55] = instrument->counter_P[55] = instrument->counter_P2[55] = 0; + instrument->counter_AbsorbProp[55]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0054_g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linhu", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "louthu", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linhd", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "louthd", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "l", "0", "0.9945000000000022","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5a1_setpos */ + +/* component fo5_position=Arm() SETTING, POSITION/ROTATION */ +int _fo5_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo5_position_setpos] component fo5_position=Arm() SETTING [Arm:0]"); + stracpy(_fo5_position_var._name, "fo5_position", 16384); + stracpy(_fo5_position_var._type, "Arm", 16384); + _fo5_position_var._index=56; + int current_setpos_index = 56; + /* component fo5_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo5_position_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo5_position_var._rotation_absolute, tr1, _fo5_position_var._rotation_relative); + _fo5_position_var._rotation_is_identity = rot_test_identity(_fo5_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.005); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo5_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo5_position_var._position_absolute); + _fo5_position_var._position_relative = rot_apply(_fo5_position_var._rotation_absolute, tc1); + } /* fo5_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute); + instrument->_position_absolute[56] = _fo5_position_var._position_absolute; + instrument->_position_relative[56] = _fo5_position_var._position_relative; + _fo5_position_var._position_relative_is_zero = coords_test_zero(_fo5_position_var._position_relative); + instrument->counter_N[56] = instrument->counter_P[56] = instrument->counter_P2[56] = 0; + instrument->counter_AbsorbProp[56]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0055_fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo5_position_setpos */ + +/* component fo_chopper_5=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_5_setpos] component fo_chopper_5=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_5_var._name, "fo_chopper_5", 16384); + stracpy(_fo_chopper_5_var._type, "MultiDiskChopper", 16384); + _fo_chopper_5_var._index=57; + int current_setpos_index = 57; + if("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" && strlen("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002")) + stracpy(_fo_chopper_5_var._parameters.slit_center, "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" ? "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_center[0]='\0'; + if("50.81;48.55;45.49;41.32;37.45;37.74" && strlen("50.81;48.55;45.49;41.32;37.45;37.74")) + stracpy(_fo_chopper_5_var._parameters.slit_width, "50.81;48.55;45.49;41.32;37.45;37.74" ? "50.81;48.55;45.49;41.32;37.45;37.74" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_width[0]='\0'; + _fo_chopper_5_var._parameters.nslits = 6; + _fo_chopper_5_var._parameters.delta_y = -0.7075; + _fo_chopper_5_var._parameters.nu = -14.0; + _fo_chopper_5_var._parameters.nrev = 0; + _fo_chopper_5_var._parameters.ratio = 1; + _fo_chopper_5_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_5; + _fo_chopper_5_var._parameters.delay = 0; + _fo_chopper_5_var._parameters.isfirst = 0; + _fo_chopper_5_var._parameters.phase = fo5_phase; + _fo_chopper_5_var._parameters.radius = 0.75; + _fo_chopper_5_var._parameters.equal = 0; + _fo_chopper_5_var._parameters.abs_out = 0; + _fo_chopper_5_var._parameters.verbose = 0; + + + /* component fo_chopper_5=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo5_position_var._rotation_absolute, _fo_chopper_5_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_5_var._rotation_absolute, tr1, _fo_chopper_5_var._rotation_relative); + _fo_chopper_5_var._rotation_is_identity = rot_test_identity(_fo_chopper_5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo5_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_5_var._position_absolute = coords_add(_fo5_position_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo_chopper_5_var._position_absolute); + _fo_chopper_5_var._position_relative = rot_apply(_fo_chopper_5_var._rotation_absolute, tc1); + } /* fo_chopper_5=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute); + instrument->_position_absolute[57] = _fo_chopper_5_var._position_absolute; + instrument->_position_relative[57] = _fo_chopper_5_var._position_relative; + _fo_chopper_5_var._position_relative_is_zero = coords_test_zero(_fo_chopper_5_var._position_relative); + instrument->counter_N[57] = instrument->counter_P[57] = instrument->counter_P2[57] = 0; + instrument->counter_AbsorbProp[57]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0056_fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "slit_center", "0 180", "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "slit_width", "10 20", "50.81;48.55;45.49;41.32;37.45;37.74", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_5","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "phase", "0", "fo5_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_5_setpos */ + +/* component g5b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b1_setpos] component g5b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b1_var._name, "g5b1", 16384); + stracpy(_g5b1_var._type, "Guide_four_side", 16384); + _g5b1_var._index=58; + int current_setpos_index = 58; + _g5b1_var._parameters.RIreflect[0]='\0'; + _g5b1_var._parameters.LIreflect[0]='\0'; + _g5b1_var._parameters.UIreflect[0]='\0'; + _g5b1_var._parameters.DIreflect[0]='\0'; + _g5b1_var._parameters.ROreflect[0]='\0'; + _g5b1_var._parameters.LOreflect[0]='\0'; + _g5b1_var._parameters.UOreflect[0]='\0'; + _g5b1_var._parameters.DOreflect[0]='\0'; + _g5b1_var._parameters.w1l = 0.04004; + _g5b1_var._parameters.w2l = 0.04004; + _g5b1_var._parameters.linwl = 0; + _g5b1_var._parameters.loutwl = 0; + _g5b1_var._parameters.w1r = 0.04004; + _g5b1_var._parameters.w2r = 0.04004; + _g5b1_var._parameters.linwr = 0.0; + _g5b1_var._parameters.loutwr = 0; + _g5b1_var._parameters.h1u = 0.037105; + _g5b1_var._parameters.h2u = 0.002; + _g5b1_var._parameters.linhu = 19.005499999999998; + _g5b1_var._parameters.louthu = 14.994750000000003; + _g5b1_var._parameters.h1d = 0.037105; + _g5b1_var._parameters.h2d = 0.002; + _g5b1_var._parameters.linhd = 19.005499999999998; + _g5b1_var._parameters.louthd = 14.994750000000003; + _g5b1_var._parameters.l = 1.9997499999999988; + _g5b1_var._parameters.R0 = 0.99; + _g5b1_var._parameters.Qcxl = 0.023; + _g5b1_var._parameters.Qcxr = 0.023; + _g5b1_var._parameters.Qcyu = 0.023; + _g5b1_var._parameters.Qcyd = 0.023; + _g5b1_var._parameters.alphaxl = 1.8; + _g5b1_var._parameters.alphaxr = 1.8; + _g5b1_var._parameters.alphayu = 1.8; + _g5b1_var._parameters.alphayd = 1.8; + _g5b1_var._parameters.Wxr = 0.015; + _g5b1_var._parameters.Wxl = 0.015; + _g5b1_var._parameters.Wyu = 0.015; + _g5b1_var._parameters.Wyd = 0.015; + _g5b1_var._parameters.mxr = 2; + _g5b1_var._parameters.mxl = 2; + _g5b1_var._parameters.myu = 2; + _g5b1_var._parameters.myd = 2; + _g5b1_var._parameters.QcxrOW = 0.0217; + _g5b1_var._parameters.QcxlOW = 0.0217; + _g5b1_var._parameters.QcyuOW = 0.0217; + _g5b1_var._parameters.QcydOW = 0.0217; + _g5b1_var._parameters.alphaxlOW = 6.07; + _g5b1_var._parameters.alphaxrOW = 6.07; + _g5b1_var._parameters.alphayuOW = 6.07; + _g5b1_var._parameters.alphaydOW = 6.07; + _g5b1_var._parameters.WxrOW = 0.003; + _g5b1_var._parameters.WxlOW = 0.003; + _g5b1_var._parameters.WyuOW = 0.003; + _g5b1_var._parameters.WydOW = 0.003; + _g5b1_var._parameters.mxrOW = 0; + _g5b1_var._parameters.mxlOW = 0; + _g5b1_var._parameters.myuOW = 0; + _g5b1_var._parameters.mydOW = 0; + _g5b1_var._parameters.rwallthick = 0.001; + _g5b1_var._parameters.lwallthick = 0.001; + _g5b1_var._parameters.uwallthick = 0.001; + _g5b1_var._parameters.dwallthick = 0.001; + + + /* component g5b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b1_var._rotation_absolute); + rot_transpose(_fo_chopper_5_var._rotation_absolute, tr1); + rot_mul(_g5b1_var._rotation_absolute, tr1, _g5b1_var._rotation_relative); + _g5b1_var._rotation_is_identity = rot_test_identity(_g5b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.015499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_5_var._position_absolute, _g5b1_var._position_absolute); + _g5b1_var._position_relative = rot_apply(_g5b1_var._rotation_absolute, tc1); + } /* g5b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute); + instrument->_position_absolute[58] = _g5b1_var._position_absolute; + instrument->_position_relative[58] = _g5b1_var._position_relative; + _g5b1_var._position_relative_is_zero = coords_test_zero(_g5b1_var._position_relative); + instrument->counter_N[58] = instrument->counter_P[58] = instrument->counter_P2[58] = 0; + instrument->counter_AbsorbProp[58]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0057_g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h1u", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linhu", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "louthu", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h1d", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linhd", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "louthd", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b1_setpos */ + +/* component g5b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b2_setpos] component g5b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b2_var._name, "g5b2", 16384); + stracpy(_g5b2_var._type, "Guide_four_side", 16384); + _g5b2_var._index=59; + int current_setpos_index = 59; + _g5b2_var._parameters.RIreflect[0]='\0'; + _g5b2_var._parameters.LIreflect[0]='\0'; + _g5b2_var._parameters.UIreflect[0]='\0'; + _g5b2_var._parameters.DIreflect[0]='\0'; + _g5b2_var._parameters.ROreflect[0]='\0'; + _g5b2_var._parameters.LOreflect[0]='\0'; + _g5b2_var._parameters.UOreflect[0]='\0'; + _g5b2_var._parameters.DOreflect[0]='\0'; + _g5b2_var._parameters.w1l = 0.04004; + _g5b2_var._parameters.w2l = 0.04004; + _g5b2_var._parameters.linwl = 0; + _g5b2_var._parameters.loutwl = 0; + _g5b2_var._parameters.w1r = 0.04004; + _g5b2_var._parameters.w2r = 0.04004; + _g5b2_var._parameters.linwr = 0.0; + _g5b2_var._parameters.loutwr = 0; + _g5b2_var._parameters.h1u = 0.036645; + _g5b2_var._parameters.h2u = 0.002; + _g5b2_var._parameters.linhu = 21.00575; + _g5b2_var._parameters.louthu = 12.994950000000003; + _g5b2_var._parameters.h1d = 0.036645; + _g5b2_var._parameters.h2d = 0.002; + _g5b2_var._parameters.linhd = 21.00575; + _g5b2_var._parameters.louthd = 12.994950000000003; + _g5b2_var._parameters.l = 1.999299999999998; + _g5b2_var._parameters.R0 = 0.99; + _g5b2_var._parameters.Qcxl = 0.0221; + _g5b2_var._parameters.Qcxr = 0.0221; + _g5b2_var._parameters.Qcyu = 0.023; + _g5b2_var._parameters.Qcyd = 0.023; + _g5b2_var._parameters.alphaxl = 1.75; + _g5b2_var._parameters.alphaxr = 1.75; + _g5b2_var._parameters.alphayu = 1.8; + _g5b2_var._parameters.alphayd = 1.8; + _g5b2_var._parameters.Wxr = 0.015; + _g5b2_var._parameters.Wxl = 0.015; + _g5b2_var._parameters.Wyu = 0.015; + _g5b2_var._parameters.Wyd = 0.015; + _g5b2_var._parameters.mxr = 2.5; + _g5b2_var._parameters.mxl = 2.5; + _g5b2_var._parameters.myu = 2; + _g5b2_var._parameters.myd = 2; + _g5b2_var._parameters.QcxrOW = 0.0217; + _g5b2_var._parameters.QcxlOW = 0.0217; + _g5b2_var._parameters.QcyuOW = 0.0217; + _g5b2_var._parameters.QcydOW = 0.0217; + _g5b2_var._parameters.alphaxlOW = 6.07; + _g5b2_var._parameters.alphaxrOW = 6.07; + _g5b2_var._parameters.alphayuOW = 6.07; + _g5b2_var._parameters.alphaydOW = 6.07; + _g5b2_var._parameters.WxrOW = 0.003; + _g5b2_var._parameters.WxlOW = 0.003; + _g5b2_var._parameters.WyuOW = 0.003; + _g5b2_var._parameters.WydOW = 0.003; + _g5b2_var._parameters.mxrOW = 0; + _g5b2_var._parameters.mxlOW = 0; + _g5b2_var._parameters.myuOW = 0; + _g5b2_var._parameters.mydOW = 0; + _g5b2_var._parameters.rwallthick = 0.001; + _g5b2_var._parameters.lwallthick = 0.001; + _g5b2_var._parameters.uwallthick = 0.001; + _g5b2_var._parameters.dwallthick = 0.001; + + + /* component g5b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b2_var._rotation_absolute); + rot_transpose(_g5b1_var._rotation_absolute, tr1); + rot_mul(_g5b2_var._rotation_absolute, tr1, _g5b2_var._rotation_relative); + _g5b2_var._rotation_is_identity = rot_test_identity(_g5b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 35.01575); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b1_var._position_absolute, _g5b2_var._position_absolute); + _g5b2_var._position_relative = rot_apply(_g5b2_var._rotation_absolute, tc1); + } /* g5b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute); + instrument->_position_absolute[59] = _g5b2_var._position_absolute; + instrument->_position_relative[59] = _g5b2_var._position_relative; + _g5b2_var._position_relative_is_zero = coords_test_zero(_g5b2_var._position_relative); + instrument->counter_N[59] = instrument->counter_P[59] = instrument->counter_P2[59] = 0; + instrument->counter_AbsorbProp[59]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0058_g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h1u", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linhu", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "louthu", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h1d", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linhd", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "louthd", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "l", "0", "1.999299999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b2_setpos */ + +/* component g5b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b3_setpos] component g5b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b3_var._name, "g5b3", 16384); + stracpy(_g5b3_var._type, "Guide_four_side", 16384); + _g5b3_var._index=60; + int current_setpos_index = 60; + _g5b3_var._parameters.RIreflect[0]='\0'; + _g5b3_var._parameters.LIreflect[0]='\0'; + _g5b3_var._parameters.UIreflect[0]='\0'; + _g5b3_var._parameters.DIreflect[0]='\0'; + _g5b3_var._parameters.ROreflect[0]='\0'; + _g5b3_var._parameters.LOreflect[0]='\0'; + _g5b3_var._parameters.UOreflect[0]='\0'; + _g5b3_var._parameters.DOreflect[0]='\0'; + _g5b3_var._parameters.w1l = 0.04004; + _g5b3_var._parameters.w2l = 0.04004; + _g5b3_var._parameters.linwl = 0; + _g5b3_var._parameters.loutwl = 0; + _g5b3_var._parameters.w1r = 0.04004; + _g5b3_var._parameters.w2r = 0.04004; + _g5b3_var._parameters.linwr = 0.0; + _g5b3_var._parameters.loutwr = 0; + _g5b3_var._parameters.h1u = 0.035695; + _g5b3_var._parameters.h2u = 0.002; + _g5b3_var._parameters.linhu = 23.009500000000003; + _g5b3_var._parameters.louthu = 10.990749999999998; + _g5b3_var._parameters.h1d = 0.035695; + _g5b3_var._parameters.h2d = 0.002; + _g5b3_var._parameters.linhd = 23.009500000000003; + _g5b3_var._parameters.louthd = 10.990749999999998; + _g5b3_var._parameters.l = 1.9997499999999988; + _g5b3_var._parameters.R0 = 0.99; + _g5b3_var._parameters.Qcxl = 0.0221; + _g5b3_var._parameters.Qcxr = 0.0221; + _g5b3_var._parameters.Qcyu = 0.023; + _g5b3_var._parameters.Qcyd = 0.023; + _g5b3_var._parameters.alphaxl = 1.75; + _g5b3_var._parameters.alphaxr = 1.75; + _g5b3_var._parameters.alphayu = 1.8; + _g5b3_var._parameters.alphayd = 1.8; + _g5b3_var._parameters.Wxr = 0.015; + _g5b3_var._parameters.Wxl = 0.015; + _g5b3_var._parameters.Wyu = 0.015; + _g5b3_var._parameters.Wyd = 0.015; + _g5b3_var._parameters.mxr = 2.5; + _g5b3_var._parameters.mxl = 2.5; + _g5b3_var._parameters.myu = 2; + _g5b3_var._parameters.myd = 2; + _g5b3_var._parameters.QcxrOW = 0.0217; + _g5b3_var._parameters.QcxlOW = 0.0217; + _g5b3_var._parameters.QcyuOW = 0.0217; + _g5b3_var._parameters.QcydOW = 0.0217; + _g5b3_var._parameters.alphaxlOW = 6.07; + _g5b3_var._parameters.alphaxrOW = 6.07; + _g5b3_var._parameters.alphayuOW = 6.07; + _g5b3_var._parameters.alphaydOW = 6.07; + _g5b3_var._parameters.WxrOW = 0.003; + _g5b3_var._parameters.WxlOW = 0.003; + _g5b3_var._parameters.WyuOW = 0.003; + _g5b3_var._parameters.WydOW = 0.003; + _g5b3_var._parameters.mxrOW = 0; + _g5b3_var._parameters.mxlOW = 0; + _g5b3_var._parameters.myuOW = 0; + _g5b3_var._parameters.mydOW = 0; + _g5b3_var._parameters.rwallthick = 0.001; + _g5b3_var._parameters.lwallthick = 0.001; + _g5b3_var._parameters.uwallthick = 0.001; + _g5b3_var._parameters.dwallthick = 0.001; + + + /* component g5b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b3_var._rotation_absolute); + rot_transpose(_g5b2_var._rotation_absolute, tr1); + rot_mul(_g5b3_var._rotation_absolute, tr1, _g5b3_var._rotation_relative); + _g5b3_var._rotation_is_identity = rot_test_identity(_g5b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 37.0195); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b2_var._position_absolute, _g5b3_var._position_absolute); + _g5b3_var._position_relative = rot_apply(_g5b3_var._rotation_absolute, tc1); + } /* g5b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute); + instrument->_position_absolute[60] = _g5b3_var._position_absolute; + instrument->_position_relative[60] = _g5b3_var._position_relative; + _g5b3_var._position_relative_is_zero = coords_test_zero(_g5b3_var._position_relative); + instrument->counter_N[60] = instrument->counter_P[60] = instrument->counter_P2[60] = 0; + instrument->counter_AbsorbProp[60]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0059_g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h1u", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linhu", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "louthu", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h1d", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linhd", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "louthd", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b3_setpos */ + +/* component g5b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b4_setpos] component g5b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b4_var._name, "g5b4", 16384); + stracpy(_g5b4_var._type, "Guide_four_side", 16384); + _g5b4_var._index=61; + int current_setpos_index = 61; + _g5b4_var._parameters.RIreflect[0]='\0'; + _g5b4_var._parameters.LIreflect[0]='\0'; + _g5b4_var._parameters.UIreflect[0]='\0'; + _g5b4_var._parameters.DIreflect[0]='\0'; + _g5b4_var._parameters.ROreflect[0]='\0'; + _g5b4_var._parameters.LOreflect[0]='\0'; + _g5b4_var._parameters.UOreflect[0]='\0'; + _g5b4_var._parameters.DOreflect[0]='\0'; + _g5b4_var._parameters.w1l = 0.04004; + _g5b4_var._parameters.w2l = 0.04004; + _g5b4_var._parameters.linwl = 0; + _g5b4_var._parameters.loutwl = 0; + _g5b4_var._parameters.w1r = 0.04004; + _g5b4_var._parameters.w2r = 0.04004; + _g5b4_var._parameters.linwr = 0.0; + _g5b4_var._parameters.loutwr = 0; + _g5b4_var._parameters.h1u = 0.03423; + _g5b4_var._parameters.h2u = 0.002; + _g5b4_var._parameters.linhu = 25.009749999999997; + _g5b4_var._parameters.louthu = 8.990499999999997; + _g5b4_var._parameters.h1d = 0.03423; + _g5b4_var._parameters.h2d = 0.002; + _g5b4_var._parameters.linhd = 25.009749999999997; + _g5b4_var._parameters.louthd = 8.990499999999997; + _g5b4_var._parameters.l = 1.999750000000006; + _g5b4_var._parameters.R0 = 0.99; + _g5b4_var._parameters.Qcxl = 0.0221; + _g5b4_var._parameters.Qcxr = 0.0221; + _g5b4_var._parameters.Qcyu = 0.023; + _g5b4_var._parameters.Qcyd = 0.023; + _g5b4_var._parameters.alphaxl = 1.75; + _g5b4_var._parameters.alphaxr = 1.75; + _g5b4_var._parameters.alphayu = 1.8; + _g5b4_var._parameters.alphayd = 1.8; + _g5b4_var._parameters.Wxr = 0.015; + _g5b4_var._parameters.Wxl = 0.015; + _g5b4_var._parameters.Wyu = 0.015; + _g5b4_var._parameters.Wyd = 0.015; + _g5b4_var._parameters.mxr = 3.0; + _g5b4_var._parameters.mxl = 3.0; + _g5b4_var._parameters.myu = 2; + _g5b4_var._parameters.myd = 2; + _g5b4_var._parameters.QcxrOW = 0.0217; + _g5b4_var._parameters.QcxlOW = 0.0217; + _g5b4_var._parameters.QcyuOW = 0.0217; + _g5b4_var._parameters.QcydOW = 0.0217; + _g5b4_var._parameters.alphaxlOW = 6.07; + _g5b4_var._parameters.alphaxrOW = 6.07; + _g5b4_var._parameters.alphayuOW = 6.07; + _g5b4_var._parameters.alphaydOW = 6.07; + _g5b4_var._parameters.WxrOW = 0.003; + _g5b4_var._parameters.WxlOW = 0.003; + _g5b4_var._parameters.WyuOW = 0.003; + _g5b4_var._parameters.WydOW = 0.003; + _g5b4_var._parameters.mxrOW = 0; + _g5b4_var._parameters.mxlOW = 0; + _g5b4_var._parameters.myuOW = 0; + _g5b4_var._parameters.mydOW = 0; + _g5b4_var._parameters.rwallthick = 0.001; + _g5b4_var._parameters.lwallthick = 0.001; + _g5b4_var._parameters.uwallthick = 0.001; + _g5b4_var._parameters.dwallthick = 0.001; + + + /* component g5b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b4_var._rotation_absolute); + rot_transpose(_g5b3_var._rotation_absolute, tr1); + rot_mul(_g5b4_var._rotation_absolute, tr1, _g5b4_var._rotation_relative); + _g5b4_var._rotation_is_identity = rot_test_identity(_g5b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 39.019749999999995); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b3_var._position_absolute, _g5b4_var._position_absolute); + _g5b4_var._position_relative = rot_apply(_g5b4_var._rotation_absolute, tc1); + } /* g5b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute); + instrument->_position_absolute[61] = _g5b4_var._position_absolute; + instrument->_position_relative[61] = _g5b4_var._position_relative; + _g5b4_var._position_relative_is_zero = coords_test_zero(_g5b4_var._position_relative); + instrument->counter_N[61] = instrument->counter_P[61] = instrument->counter_P2[61] = 0; + instrument->counter_AbsorbProp[61]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0060_g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h1u", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linhu", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "louthu", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h1d", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linhd", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "louthd", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "l", "0", "1.999750000000006","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b4_setpos */ + +/* component g5b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b5_setpos] component g5b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b5_var._name, "g5b5", 16384); + stracpy(_g5b5_var._type, "Guide_four_side", 16384); + _g5b5_var._index=62; + int current_setpos_index = 62; + _g5b5_var._parameters.RIreflect[0]='\0'; + _g5b5_var._parameters.LIreflect[0]='\0'; + _g5b5_var._parameters.UIreflect[0]='\0'; + _g5b5_var._parameters.DIreflect[0]='\0'; + _g5b5_var._parameters.ROreflect[0]='\0'; + _g5b5_var._parameters.LOreflect[0]='\0'; + _g5b5_var._parameters.UOreflect[0]='\0'; + _g5b5_var._parameters.DOreflect[0]='\0'; + _g5b5_var._parameters.w1l = 0.04004; + _g5b5_var._parameters.w2l = 0.04004; + _g5b5_var._parameters.linwl = 0; + _g5b5_var._parameters.loutwl = 0; + _g5b5_var._parameters.w1r = 0.04004; + _g5b5_var._parameters.w2r = 0.04004; + _g5b5_var._parameters.linwr = 0.0; + _g5b5_var._parameters.loutwr = 0; + _g5b5_var._parameters.h1u = 0.03217; + _g5b5_var._parameters.h2u = 0.002; + _g5b5_var._parameters.linhu = 27.0135; + _g5b5_var._parameters.louthu = 6.986750000000001; + _g5b5_var._parameters.h1d = 0.03217; + _g5b5_var._parameters.h2d = 0.002; + _g5b5_var._parameters.linhd = 27.0135; + _g5b5_var._parameters.louthd = 6.986750000000001; + _g5b5_var._parameters.l = 1.9997499999999988; + _g5b5_var._parameters.R0 = 0.99; + _g5b5_var._parameters.Qcxl = 0.0221; + _g5b5_var._parameters.Qcxr = 0.0221; + _g5b5_var._parameters.Qcyu = 0.0221; + _g5b5_var._parameters.Qcyd = 0.0221; + _g5b5_var._parameters.alphaxl = 1.75; + _g5b5_var._parameters.alphaxr = 1.75; + _g5b5_var._parameters.alphayu = 1.75; + _g5b5_var._parameters.alphayd = 1.75; + _g5b5_var._parameters.Wxr = 0.015; + _g5b5_var._parameters.Wxl = 0.015; + _g5b5_var._parameters.Wyu = 0.015; + _g5b5_var._parameters.Wyd = 0.015; + _g5b5_var._parameters.mxr = 3.0; + _g5b5_var._parameters.mxl = 3.0; + _g5b5_var._parameters.myu = 2.5; + _g5b5_var._parameters.myd = 2.5; + _g5b5_var._parameters.QcxrOW = 0.0217; + _g5b5_var._parameters.QcxlOW = 0.0217; + _g5b5_var._parameters.QcyuOW = 0.0217; + _g5b5_var._parameters.QcydOW = 0.0217; + _g5b5_var._parameters.alphaxlOW = 6.07; + _g5b5_var._parameters.alphaxrOW = 6.07; + _g5b5_var._parameters.alphayuOW = 6.07; + _g5b5_var._parameters.alphaydOW = 6.07; + _g5b5_var._parameters.WxrOW = 0.003; + _g5b5_var._parameters.WxlOW = 0.003; + _g5b5_var._parameters.WyuOW = 0.003; + _g5b5_var._parameters.WydOW = 0.003; + _g5b5_var._parameters.mxrOW = 0; + _g5b5_var._parameters.mxlOW = 0; + _g5b5_var._parameters.myuOW = 0; + _g5b5_var._parameters.mydOW = 0; + _g5b5_var._parameters.rwallthick = 0.001; + _g5b5_var._parameters.lwallthick = 0.001; + _g5b5_var._parameters.uwallthick = 0.001; + _g5b5_var._parameters.dwallthick = 0.001; + + + /* component g5b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b5_var._rotation_absolute); + rot_transpose(_g5b4_var._rotation_absolute, tr1); + rot_mul(_g5b5_var._rotation_absolute, tr1, _g5b5_var._rotation_relative); + _g5b5_var._rotation_is_identity = rot_test_identity(_g5b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 41.0235); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b4_var._position_absolute, _g5b5_var._position_absolute); + _g5b5_var._position_relative = rot_apply(_g5b5_var._rotation_absolute, tc1); + } /* g5b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute); + instrument->_position_absolute[62] = _g5b5_var._position_absolute; + instrument->_position_relative[62] = _g5b5_var._position_relative; + _g5b5_var._position_relative_is_zero = coords_test_zero(_g5b5_var._position_relative); + instrument->counter_N[62] = instrument->counter_P[62] = instrument->counter_P2[62] = 0; + instrument->counter_AbsorbProp[62]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0061_g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h1u", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linhu", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "louthu", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h1d", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linhd", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "louthd", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b5_setpos */ + +/* component g5b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b6_setpos] component g5b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b6_var._name, "g5b6", 16384); + stracpy(_g5b6_var._type, "Guide_four_side", 16384); + _g5b6_var._index=63; + int current_setpos_index = 63; + _g5b6_var._parameters.RIreflect[0]='\0'; + _g5b6_var._parameters.LIreflect[0]='\0'; + _g5b6_var._parameters.UIreflect[0]='\0'; + _g5b6_var._parameters.DIreflect[0]='\0'; + _g5b6_var._parameters.ROreflect[0]='\0'; + _g5b6_var._parameters.LOreflect[0]='\0'; + _g5b6_var._parameters.UOreflect[0]='\0'; + _g5b6_var._parameters.DOreflect[0]='\0'; + _g5b6_var._parameters.w1l = 0.04004; + _g5b6_var._parameters.w2l = 0.04004; + _g5b6_var._parameters.linwl = 0; + _g5b6_var._parameters.loutwl = 0; + _g5b6_var._parameters.w1r = 0.04004; + _g5b6_var._parameters.w2r = 0.04004; + _g5b6_var._parameters.linwr = 0.0; + _g5b6_var._parameters.loutwr = 0; + _g5b6_var._parameters.h1u = 0.029395; + _g5b6_var._parameters.h2u = 0.002; + _g5b6_var._parameters.linhu = 29.01375; + _g5b6_var._parameters.louthu = 6.5; + _g5b6_var._parameters.h1d = 0.029395; + _g5b6_var._parameters.h2d = 0.002; + _g5b6_var._parameters.linhd = 29.01375; + _g5b6_var._parameters.louthd = 6.5; + _g5b6_var._parameters.l = 0.4862499999999983; + _g5b6_var._parameters.R0 = 0.99; + _g5b6_var._parameters.Qcxl = 0.0221; + _g5b6_var._parameters.Qcxr = 0.0221; + _g5b6_var._parameters.Qcyu = 0.0221; + _g5b6_var._parameters.Qcyd = 0.0221; + _g5b6_var._parameters.alphaxl = 1.75; + _g5b6_var._parameters.alphaxr = 1.75; + _g5b6_var._parameters.alphayu = 1.75; + _g5b6_var._parameters.alphayd = 1.75; + _g5b6_var._parameters.Wxr = 0.015; + _g5b6_var._parameters.Wxl = 0.015; + _g5b6_var._parameters.Wyu = 0.015; + _g5b6_var._parameters.Wyd = 0.015; + _g5b6_var._parameters.mxr = 3.0; + _g5b6_var._parameters.mxl = 3.0; + _g5b6_var._parameters.myu = 2.5; + _g5b6_var._parameters.myd = 2.5; + _g5b6_var._parameters.QcxrOW = 0.0217; + _g5b6_var._parameters.QcxlOW = 0.0217; + _g5b6_var._parameters.QcyuOW = 0.0217; + _g5b6_var._parameters.QcydOW = 0.0217; + _g5b6_var._parameters.alphaxlOW = 6.07; + _g5b6_var._parameters.alphaxrOW = 6.07; + _g5b6_var._parameters.alphayuOW = 6.07; + _g5b6_var._parameters.alphaydOW = 6.07; + _g5b6_var._parameters.WxrOW = 0.003; + _g5b6_var._parameters.WxlOW = 0.003; + _g5b6_var._parameters.WyuOW = 0.003; + _g5b6_var._parameters.WydOW = 0.003; + _g5b6_var._parameters.mxrOW = 0; + _g5b6_var._parameters.mxlOW = 0; + _g5b6_var._parameters.myuOW = 0; + _g5b6_var._parameters.mydOW = 0; + _g5b6_var._parameters.rwallthick = 0.001; + _g5b6_var._parameters.lwallthick = 0.001; + _g5b6_var._parameters.uwallthick = 0.001; + _g5b6_var._parameters.dwallthick = 0.001; + + + /* component g5b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b6_var._rotation_absolute); + rot_transpose(_g5b5_var._rotation_absolute, tr1); + rot_mul(_g5b6_var._rotation_absolute, tr1, _g5b6_var._rotation_relative); + _g5b6_var._rotation_is_identity = rot_test_identity(_g5b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.02375); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b5_var._position_absolute, _g5b6_var._position_absolute); + _g5b6_var._position_relative = rot_apply(_g5b6_var._rotation_absolute, tc1); + } /* g5b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute); + instrument->_position_absolute[63] = _g5b6_var._position_absolute; + instrument->_position_relative[63] = _g5b6_var._position_relative; + _g5b6_var._position_relative_is_zero = coords_test_zero(_g5b6_var._position_relative); + instrument->counter_N[63] = instrument->counter_P[63] = instrument->counter_P2[63] = 0; + instrument->counter_AbsorbProp[63]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0062_g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h1u", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linhu", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "louthu", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h1d", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linhd", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "louthd", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "l", "0", "0.4862499999999983","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b6_setpos */ + +/* component g6a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a1_setpos] component g6a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a1_var._name, "g6a1", 16384); + stracpy(_g6a1_var._type, "Guide_four_side", 16384); + _g6a1_var._index=64; + int current_setpos_index = 64; + _g6a1_var._parameters.RIreflect[0]='\0'; + _g6a1_var._parameters.LIreflect[0]='\0'; + _g6a1_var._parameters.UIreflect[0]='\0'; + _g6a1_var._parameters.DIreflect[0]='\0'; + _g6a1_var._parameters.ROreflect[0]='\0'; + _g6a1_var._parameters.LOreflect[0]='\0'; + _g6a1_var._parameters.UOreflect[0]='\0'; + _g6a1_var._parameters.DOreflect[0]='\0'; + _g6a1_var._parameters.w1l = 0.04004; + _g6a1_var._parameters.w2l = 0.002; + _g6a1_var._parameters.linwl = 6.5; + _g6a1_var._parameters.loutwl = 4.9864999999999995; + _g6a1_var._parameters.w1r = 0.04004; + _g6a1_var._parameters.w2r = 0.002; + _g6a1_var._parameters.linwr = 6.5; + _g6a1_var._parameters.loutwr = 4.9864999999999995; + _g6a1_var._parameters.h1u = 0.02859; + _g6a1_var._parameters.h2u = 0.002; + _g6a1_var._parameters.linhu = 29.5; + _g6a1_var._parameters.louthu = 4.9864999999999995; + _g6a1_var._parameters.h1d = 0.02859; + _g6a1_var._parameters.h2d = 0.002; + _g6a1_var._parameters.linhd = 29.5; + _g6a1_var._parameters.louthd = 4.9864999999999995; + _g6a1_var._parameters.l = 1.5135000000000005; + _g6a1_var._parameters.R0 = 0.99; + _g6a1_var._parameters.Qcxl = 0.0217; + _g6a1_var._parameters.Qcxr = 0.0217; + _g6a1_var._parameters.Qcyu = 0.0221; + _g6a1_var._parameters.Qcyd = 0.0221; + _g6a1_var._parameters.alphaxl = 2.5; + _g6a1_var._parameters.alphaxr = 2.5; + _g6a1_var._parameters.alphayu = 1.75; + _g6a1_var._parameters.alphayd = 1.75; + _g6a1_var._parameters.Wxr = 0.015; + _g6a1_var._parameters.Wxl = 0.015; + _g6a1_var._parameters.Wyu = 0.015; + _g6a1_var._parameters.Wyd = 0.015; + _g6a1_var._parameters.mxr = 3.5; + _g6a1_var._parameters.mxl = 3.5; + _g6a1_var._parameters.myu = 2.5; + _g6a1_var._parameters.myd = 2.5; + _g6a1_var._parameters.QcxrOW = 0.0217; + _g6a1_var._parameters.QcxlOW = 0.0217; + _g6a1_var._parameters.QcyuOW = 0.0217; + _g6a1_var._parameters.QcydOW = 0.0217; + _g6a1_var._parameters.alphaxlOW = 6.07; + _g6a1_var._parameters.alphaxrOW = 6.07; + _g6a1_var._parameters.alphayuOW = 6.07; + _g6a1_var._parameters.alphaydOW = 6.07; + _g6a1_var._parameters.WxrOW = 0.003; + _g6a1_var._parameters.WxlOW = 0.003; + _g6a1_var._parameters.WyuOW = 0.003; + _g6a1_var._parameters.WydOW = 0.003; + _g6a1_var._parameters.mxrOW = 0; + _g6a1_var._parameters.mxlOW = 0; + _g6a1_var._parameters.myuOW = 0; + _g6a1_var._parameters.mydOW = 0; + _g6a1_var._parameters.rwallthick = 0.001; + _g6a1_var._parameters.lwallthick = 0.001; + _g6a1_var._parameters.uwallthick = 0.001; + _g6a1_var._parameters.dwallthick = 0.001; + + + /* component g6a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a1_var._rotation_absolute); + rot_transpose(_g5b6_var._rotation_absolute, tr1); + rot_mul(_g6a1_var._rotation_absolute, tr1, _g6a1_var._rotation_relative); + _g6a1_var._rotation_is_identity = rot_test_identity(_g6a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.51); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b6_var._position_absolute, _g6a1_var._position_absolute); + _g6a1_var._position_relative = rot_apply(_g6a1_var._rotation_absolute, tc1); + } /* g6a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute); + instrument->_position_absolute[64] = _g6a1_var._position_absolute; + instrument->_position_relative[64] = _g6a1_var._position_relative; + _g6a1_var._position_relative_is_zero = coords_test_zero(_g6a1_var._position_relative); + instrument->counter_N[64] = instrument->counter_P[64] = instrument->counter_P2[64] = 0; + instrument->counter_AbsorbProp[64]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0063_g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linwl", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "loutwl", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linwr", "0.0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "loutwr", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h1u", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linhu", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "louthu", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h1d", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linhd", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "louthd", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "l", "0", "1.5135000000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a1_setpos */ + +/* component g6a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a2_setpos] component g6a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a2_var._name, "g6a2", 16384); + stracpy(_g6a2_var._type, "Guide_four_side", 16384); + _g6a2_var._index=65; + int current_setpos_index = 65; + _g6a2_var._parameters.RIreflect[0]='\0'; + _g6a2_var._parameters.LIreflect[0]='\0'; + _g6a2_var._parameters.UIreflect[0]='\0'; + _g6a2_var._parameters.DIreflect[0]='\0'; + _g6a2_var._parameters.ROreflect[0]='\0'; + _g6a2_var._parameters.LOreflect[0]='\0'; + _g6a2_var._parameters.UOreflect[0]='\0'; + _g6a2_var._parameters.DOreflect[0]='\0'; + _g6a2_var._parameters.w1l = 0.038935; + _g6a2_var._parameters.w2l = 0.002; + _g6a2_var._parameters.linwl = 8.017499999999998; + _g6a2_var._parameters.loutwl = 2.982750000000003; + _g6a2_var._parameters.w1r = 0.038935; + _g6a2_var._parameters.w2r = 0.002; + _g6a2_var._parameters.linwr = 8.017499999999998; + _g6a2_var._parameters.loutwr = 2.982750000000003; + _g6a2_var._parameters.h1u = 0.02567; + _g6a2_var._parameters.h2u = 0.002; + _g6a2_var._parameters.linhu = 31.0175; + _g6a2_var._parameters.louthu = 2.982750000000003; + _g6a2_var._parameters.h1d = 0.02567; + _g6a2_var._parameters.h2d = 0.002; + _g6a2_var._parameters.linhd = 31.0175; + _g6a2_var._parameters.louthd = 2.982750000000003; + _g6a2_var._parameters.l = 1.9997499999999988; + _g6a2_var._parameters.R0 = 0.99; + _g6a2_var._parameters.Qcxl = 0.0217; + _g6a2_var._parameters.Qcxr = 0.0217; + _g6a2_var._parameters.Qcyu = 0.0221; + _g6a2_var._parameters.Qcyd = 0.0221; + _g6a2_var._parameters.alphaxl = 2.5; + _g6a2_var._parameters.alphaxr = 2.5; + _g6a2_var._parameters.alphayu = 1.75; + _g6a2_var._parameters.alphayd = 1.75; + _g6a2_var._parameters.Wxr = 0.015; + _g6a2_var._parameters.Wxl = 0.015; + _g6a2_var._parameters.Wyu = 0.015; + _g6a2_var._parameters.Wyd = 0.015; + _g6a2_var._parameters.mxr = 4; + _g6a2_var._parameters.mxl = 4; + _g6a2_var._parameters.myu = 3; + _g6a2_var._parameters.myd = 3; + _g6a2_var._parameters.QcxrOW = 0.0217; + _g6a2_var._parameters.QcxlOW = 0.0217; + _g6a2_var._parameters.QcyuOW = 0.0217; + _g6a2_var._parameters.QcydOW = 0.0217; + _g6a2_var._parameters.alphaxlOW = 6.07; + _g6a2_var._parameters.alphaxrOW = 6.07; + _g6a2_var._parameters.alphayuOW = 6.07; + _g6a2_var._parameters.alphaydOW = 6.07; + _g6a2_var._parameters.WxrOW = 0.003; + _g6a2_var._parameters.WxlOW = 0.003; + _g6a2_var._parameters.WyuOW = 0.003; + _g6a2_var._parameters.WydOW = 0.003; + _g6a2_var._parameters.mxrOW = 0; + _g6a2_var._parameters.mxlOW = 0; + _g6a2_var._parameters.myuOW = 0; + _g6a2_var._parameters.mydOW = 0; + _g6a2_var._parameters.rwallthick = 0.001; + _g6a2_var._parameters.lwallthick = 0.001; + _g6a2_var._parameters.uwallthick = 0.001; + _g6a2_var._parameters.dwallthick = 0.001; + + + /* component g6a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a2_var._rotation_absolute); + rot_transpose(_g6a1_var._rotation_absolute, tr1); + rot_mul(_g6a2_var._rotation_absolute, tr1, _g6a2_var._rotation_relative); + _g6a2_var._rotation_is_identity = rot_test_identity(_g6a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 45.027499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a1_var._position_absolute, _g6a2_var._position_absolute); + _g6a2_var._position_relative = rot_apply(_g6a2_var._rotation_absolute, tc1); + } /* g6a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute); + instrument->_position_absolute[65] = _g6a2_var._position_absolute; + instrument->_position_relative[65] = _g6a2_var._position_relative; + _g6a2_var._position_relative_is_zero = coords_test_zero(_g6a2_var._position_relative); + instrument->counter_N[65] = instrument->counter_P[65] = instrument->counter_P2[65] = 0; + instrument->counter_AbsorbProp[65]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0064_g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w1l", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linwl", "0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "loutwl", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w1r", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linwr", "0.0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "loutwr", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h1u", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linhu", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "louthu", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h1d", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linhd", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "louthd", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a2_setpos */ + +/* component g6a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a3_setpos] component g6a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a3_var._name, "g6a3", 16384); + stracpy(_g6a3_var._type, "Guide_four_side", 16384); + _g6a3_var._index=66; + int current_setpos_index = 66; + _g6a3_var._parameters.RIreflect[0]='\0'; + _g6a3_var._parameters.LIreflect[0]='\0'; + _g6a3_var._parameters.UIreflect[0]='\0'; + _g6a3_var._parameters.DIreflect[0]='\0'; + _g6a3_var._parameters.ROreflect[0]='\0'; + _g6a3_var._parameters.LOreflect[0]='\0'; + _g6a3_var._parameters.UOreflect[0]='\0'; + _g6a3_var._parameters.DOreflect[0]='\0'; + _g6a3_var._parameters.w1l = 0.03367; + _g6a3_var._parameters.w2l = 0.002; + _g6a3_var._parameters.linwl = 10.01775; + _g6a3_var._parameters.loutwl = 1.0; + _g6a3_var._parameters.w1r = 0.03367; + _g6a3_var._parameters.w2r = 0.002; + _g6a3_var._parameters.linwr = 10.01775; + _g6a3_var._parameters.loutwr = 1.0; + _g6a3_var._parameters.h1u = 0.02049; + _g6a3_var._parameters.h2u = 0.002; + _g6a3_var._parameters.linhu = 33.01775; + _g6a3_var._parameters.louthu = 1.0; + _g6a3_var._parameters.h1d = 0.02049; + _g6a3_var._parameters.h2d = 0.002; + _g6a3_var._parameters.linhd = 33.01775; + _g6a3_var._parameters.louthd = 1.0; + _g6a3_var._parameters.l = 1.9822500000000005; + _g6a3_var._parameters.R0 = 0.99; + _g6a3_var._parameters.Qcxl = 0.0217; + _g6a3_var._parameters.Qcxr = 0.0217; + _g6a3_var._parameters.Qcyu = 0.0217; + _g6a3_var._parameters.Qcyd = 0.0217; + _g6a3_var._parameters.alphaxl = 2.5; + _g6a3_var._parameters.alphaxr = 2.5; + _g6a3_var._parameters.alphayu = 2.5; + _g6a3_var._parameters.alphayd = 2.5; + _g6a3_var._parameters.Wxr = 0.015; + _g6a3_var._parameters.Wxl = 0.015; + _g6a3_var._parameters.Wyu = 0.015; + _g6a3_var._parameters.Wyd = 0.015; + _g6a3_var._parameters.mxr = 4; + _g6a3_var._parameters.mxl = 4; + _g6a3_var._parameters.myu = 4; + _g6a3_var._parameters.myd = 4; + _g6a3_var._parameters.QcxrOW = 0.0217; + _g6a3_var._parameters.QcxlOW = 0.0217; + _g6a3_var._parameters.QcyuOW = 0.0217; + _g6a3_var._parameters.QcydOW = 0.0217; + _g6a3_var._parameters.alphaxlOW = 6.07; + _g6a3_var._parameters.alphaxrOW = 6.07; + _g6a3_var._parameters.alphayuOW = 6.07; + _g6a3_var._parameters.alphaydOW = 6.07; + _g6a3_var._parameters.WxrOW = 0.003; + _g6a3_var._parameters.WxlOW = 0.003; + _g6a3_var._parameters.WyuOW = 0.003; + _g6a3_var._parameters.WydOW = 0.003; + _g6a3_var._parameters.mxrOW = 0; + _g6a3_var._parameters.mxlOW = 0; + _g6a3_var._parameters.myuOW = 0; + _g6a3_var._parameters.mydOW = 0; + _g6a3_var._parameters.rwallthick = 0.001; + _g6a3_var._parameters.lwallthick = 0.001; + _g6a3_var._parameters.uwallthick = 0.001; + _g6a3_var._parameters.dwallthick = 0.001; + + + /* component g6a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a3_var._rotation_absolute); + rot_transpose(_g6a2_var._rotation_absolute, tr1); + rot_mul(_g6a3_var._rotation_absolute, tr1, _g6a3_var._rotation_relative); + _g6a3_var._rotation_is_identity = rot_test_identity(_g6a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 47.02775); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a2_var._position_absolute, _g6a3_var._position_absolute); + _g6a3_var._position_relative = rot_apply(_g6a3_var._rotation_absolute, tc1); + } /* g6a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute); + instrument->_position_absolute[66] = _g6a3_var._position_absolute; + instrument->_position_relative[66] = _g6a3_var._position_relative; + _g6a3_var._position_relative_is_zero = coords_test_zero(_g6a3_var._position_relative); + instrument->counter_N[66] = instrument->counter_P[66] = instrument->counter_P2[66] = 0; + instrument->counter_AbsorbProp[66]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0065_g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w1l", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linwl", "0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "loutwl", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w1r", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linwr", "0.0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "loutwr", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h1u", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linhu", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "louthu", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h1d", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linhd", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "louthd", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "l", "0", "1.9822500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a3_setpos */ + +/* component guide_end=Arm() SETTING, POSITION/ROTATION */ +int _guide_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_guide_end_setpos] component guide_end=Arm() SETTING [Arm:0]"); + stracpy(_guide_end_var._name, "guide_end", 16384); + stracpy(_guide_end_var._type, "Arm", 16384); + _guide_end_var._index=67; + int current_setpos_index = 67; + /* component guide_end=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _guide_end_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_guide_end_var._rotation_absolute, tr1, _guide_end_var._rotation_relative); + _guide_end_var._rotation_is_identity = rot_test_identity(_guide_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _guide_end_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _guide_end_var._position_absolute); + _guide_end_var._position_relative = rot_apply(_guide_end_var._rotation_absolute, tc1); + } /* guide_end=Arm() AT ROTATED */ + DEBUG_COMPONENT("guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute); + instrument->_position_absolute[67] = _guide_end_var._position_absolute; + instrument->_position_relative[67] = _guide_end_var._position_relative; + _guide_end_var._position_relative_is_zero = coords_test_zero(_guide_end_var._position_relative); + instrument->counter_N[67] = instrument->counter_P[67] = instrument->counter_P2[67] = 0; + instrument->counter_AbsorbProp[67]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0066_guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _guide_end_setpos */ + +/* component monitor_3_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_3_position_setpos] component monitor_3_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_3_position_var._name, "monitor_3_position", 16384); + stracpy(_monitor_3_position_var._type, "Arm", 16384); + _monitor_3_position_var._index=68; + int current_setpos_index = 68; + /* component monitor_3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_3_position_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_monitor_3_position_var._rotation_absolute, tr1, _monitor_3_position_var._rotation_relative); + _monitor_3_position_var._rotation_is_identity = rot_test_identity(_monitor_3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _monitor_3_position_var._position_absolute); + _monitor_3_position_var._position_relative = rot_apply(_monitor_3_position_var._rotation_absolute, tc1); + } /* monitor_3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute); + instrument->_position_absolute[68] = _monitor_3_position_var._position_absolute; + instrument->_position_relative[68] = _monitor_3_position_var._position_relative; + _monitor_3_position_var._position_relative_is_zero = coords_test_zero(_monitor_3_position_var._position_relative); + instrument->counter_N[68] = instrument->counter_P[68] = instrument->counter_P2[68] = 0; + instrument->counter_AbsorbProp[68]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0067_monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_3_position_setpos */ + +/* component start_backend=Arm() SETTING, POSITION/ROTATION */ +int _start_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_start_backend_setpos] component start_backend=Arm() SETTING [Arm:0]"); + stracpy(_start_backend_var._name, "start_backend", 16384); + stracpy(_start_backend_var._type, "Arm", 16384); + _start_backend_var._index=69; + int current_setpos_index = 69; + /* component start_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _start_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_start_backend_var._rotation_absolute, tr1, _start_backend_var._rotation_relative); + _start_backend_var._rotation_is_identity = rot_test_identity(_start_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _start_backend_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _start_backend_var._position_absolute); + _start_backend_var._position_relative = rot_apply(_start_backend_var._rotation_absolute, tc1); + } /* start_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute); + instrument->_position_absolute[69] = _start_backend_var._position_absolute; + instrument->_position_relative[69] = _start_backend_var._position_relative; + _start_backend_var._position_relative_is_zero = coords_test_zero(_start_backend_var._position_relative); + instrument->counter_N[69] = instrument->counter_P[69] = instrument->counter_P2[69] = 0; + instrument->counter_AbsorbProp[69]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0068_start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _start_backend_setpos */ + +/* component optical_axis_backend=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_backend_setpos] component optical_axis_backend=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_backend_var._name, "optical_axis_backend", 16384); + stracpy(_optical_axis_backend_var._type, "Arm", 16384); + _optical_axis_backend_var._index=70; + int current_setpos_index = 70; + /* component optical_axis_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _start_backend_var._rotation_absolute, _optical_axis_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_optical_axis_backend_var._rotation_absolute, tr1, _optical_axis_backend_var._rotation_relative); + _optical_axis_backend_var._rotation_is_identity = rot_test_identity(_optical_axis_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_start_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_backend_var._position_absolute = coords_add(_start_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _optical_axis_backend_var._position_absolute); + _optical_axis_backend_var._position_relative = rot_apply(_optical_axis_backend_var._rotation_absolute, tc1); + } /* optical_axis_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute); + instrument->_position_absolute[70] = _optical_axis_backend_var._position_absolute; + instrument->_position_relative[70] = _optical_axis_backend_var._position_relative; + _optical_axis_backend_var._position_relative_is_zero = coords_test_zero(_optical_axis_backend_var._position_relative); + instrument->counter_N[70] = instrument->counter_P[70] = instrument->counter_P2[70] = 0; + instrument->counter_AbsorbProp[70]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0069_optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_backend_setpos */ + +/* component pinhole_2=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_2_setpos] component pinhole_2=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_2_var._name, "pinhole_2", 16384); + stracpy(_pinhole_2_var._type, "Slit", 16384); + _pinhole_2_var._index=71; + int current_setpos_index = 71; + _pinhole_2_var._parameters.xmin = UNSET; + _pinhole_2_var._parameters.xmax = UNSET; + _pinhole_2_var._parameters.ymin = UNSET; + _pinhole_2_var._parameters.ymax = UNSET; + _pinhole_2_var._parameters.radius = UNSET; + _pinhole_2_var._parameters.xwidth = 0.03; + _pinhole_2_var._parameters.yheight = 0.03; + + + /* component pinhole_2=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _pinhole_2_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_pinhole_2_var._rotation_absolute, tr1, _pinhole_2_var._rotation_relative); + _pinhole_2_var._rotation_is_identity = rot_test_identity(_pinhole_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_2_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _pinhole_2_var._position_absolute); + _pinhole_2_var._position_relative = rot_apply(_pinhole_2_var._rotation_absolute, tc1); + } /* pinhole_2=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute); + instrument->_position_absolute[71] = _pinhole_2_var._position_absolute; + instrument->_position_relative[71] = _pinhole_2_var._position_relative; + _pinhole_2_var._position_relative_is_zero = coords_test_zero(_pinhole_2_var._position_relative); + instrument->counter_N[71] = instrument->counter_P[71] = instrument->counter_P2[71] = 0; + instrument->counter_AbsorbProp[71]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0070_pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xwidth", "UNSET", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "yheight", "UNSET", "0.03","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_2_setpos */ + +/* component graph=Graphite_Diffuser() SETTING, POSITION/ROTATION */ +int _graph_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_graph_setpos] component graph=Graphite_Diffuser() SETTING [Graphite_Diffuser:0]"); + stracpy(_graph_var._name, "graph", 16384); + stracpy(_graph_var._type, "Graphite_Diffuser", 16384); + _graph_var._index=72; + int current_setpos_index = 72; + _graph_var._parameters.xwidth = 0.1; + _graph_var._parameters.ywidth = 0.1; + _graph_var._parameters.thick = 0.2; + _graph_var._parameters.abs = 1; + + /* component graph=Graphite_Diffuser() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _graph_var._rotation_absolute); + rot_transpose(_pinhole_2_var._rotation_absolute, tr1); + rot_mul(_graph_var._rotation_absolute, tr1, _graph_var._rotation_relative); + _graph_var._rotation_is_identity = rot_test_identity(_graph_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50.001); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _graph_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_2_var._position_absolute, _graph_var._position_absolute); + _graph_var._position_relative = rot_apply(_graph_var._rotation_absolute, tc1); + } /* graph=Graphite_Diffuser() AT ROTATED */ + DEBUG_COMPONENT("graph", _graph_var._position_absolute, _graph_var._rotation_absolute); + instrument->_position_absolute[72] = _graph_var._position_absolute; + instrument->_position_relative[72] = _graph_var._position_relative; + _graph_var._position_relative_is_zero = coords_test_zero(_graph_var._position_relative); + instrument->counter_N[72] = instrument->counter_P[72] = instrument->counter_P2[72] = 0; + instrument->counter_AbsorbProp[72]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0071_graph", _graph_var._position_absolute, _graph_var._rotation_absolute, "Graphite_Diffuser"); + mccomp_param_nexus(nxhandle,"0071_graph", "xwidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "ywidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "thick", "0.01", "0.2","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "abs", "1", "1","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _graph_setpos */ + +/* component sample_monitor_arm=Arm() SETTING, POSITION/ROTATION */ +int _sample_monitor_arm_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_monitor_arm_setpos] component sample_monitor_arm=Arm() SETTING [Arm:0]"); + stracpy(_sample_monitor_arm_var._name, "sample_monitor_arm", 16384); + stracpy(_sample_monitor_arm_var._type, "Arm", 16384); + _sample_monitor_arm_var._index=73; + int current_setpos_index = 73; + /* component sample_monitor_arm=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_monitor_arm_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_monitor_arm_var._rotation_absolute, tr1, _sample_monitor_arm_var._rotation_relative); + _sample_monitor_arm_var._rotation_is_identity = rot_test_identity(_sample_monitor_arm_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_monitor_arm_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_monitor_arm_var._position_absolute); + _sample_monitor_arm_var._position_relative = rot_apply(_sample_monitor_arm_var._rotation_absolute, tc1); + } /* sample_monitor_arm=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute); + instrument->_position_absolute[73] = _sample_monitor_arm_var._position_absolute; + instrument->_position_relative[73] = _sample_monitor_arm_var._position_relative; + _sample_monitor_arm_var._position_relative_is_zero = coords_test_zero(_sample_monitor_arm_var._position_relative); + instrument->counter_N[73] = instrument->counter_P[73] = instrument->counter_P2[73] = 0; + instrument->counter_AbsorbProp[73]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0072_sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_monitor_arm_setpos */ + +/* component sample_PSD=Monitor_nD() SETTING, POSITION/ROTATION */ +int _sample_PSD_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_PSD_setpos] component sample_PSD=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_sample_PSD_var._name, "sample_PSD", 16384); + stracpy(_sample_PSD_var._type, "Monitor_nD", 16384); + _sample_PSD_var._index=74; + int current_setpos_index = 74; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user1, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user2, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user3, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user3[0]='\0'; + _sample_PSD_var._parameters.xwidth = 0.3; + _sample_PSD_var._parameters.yheight = 0.3; + _sample_PSD_var._parameters.zdepth = 0; + _sample_PSD_var._parameters.xmin = 0; + _sample_PSD_var._parameters.xmax = 0; + _sample_PSD_var._parameters.ymin = 0; + _sample_PSD_var._parameters.ymax = 0; + _sample_PSD_var._parameters.zmin = 0; + _sample_PSD_var._parameters.zmax = 0; + _sample_PSD_var._parameters.bins = 0; + _sample_PSD_var._parameters.min = -1e40; + _sample_PSD_var._parameters.max = 1e40; + _sample_PSD_var._parameters.restore_neutron = 0; + _sample_PSD_var._parameters.radius = 0; + if("x bins 300 y bins 300" && strlen("x bins 300 y bins 300")) + stracpy(_sample_PSD_var._parameters.options, "x bins 300 y bins 300" ? "x bins 300 y bins 300" : "", 16384); + else + _sample_PSD_var._parameters.options[0]='\0'; + if("image.dat" && strlen("image.dat")) + stracpy(_sample_PSD_var._parameters.filename, "image.dat" ? "image.dat" : "", 16384); + else + _sample_PSD_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.geometry[0]='\0'; + _sample_PSD_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username3[0]='\0'; + + + /* component sample_PSD=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _sample_PSD_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_PSD_var._rotation_absolute, tr1, _sample_PSD_var._rotation_relative); + _sample_PSD_var._rotation_is_identity = rot_test_identity(_sample_PSD_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_PSD_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_PSD_var._position_absolute); + _sample_PSD_var._position_relative = rot_apply(_sample_PSD_var._rotation_absolute, tc1); + } /* sample_PSD=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute); + instrument->_position_absolute[74] = _sample_PSD_var._position_absolute; + instrument->_position_relative[74] = _sample_PSD_var._position_relative; + _sample_PSD_var._position_relative_is_zero = coords_test_zero(_sample_PSD_var._position_relative); + instrument->counter_N[74] = instrument->counter_P[74] = instrument->counter_P2[74] = 0; + instrument->counter_AbsorbProp[74]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0073_sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "options", "NULL", "x bins 300 y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "filename", "NULL", "image.dat", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_PSD_setpos */ + +/* component profile_x=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_x_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_x_setpos] component profile_x=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_x_var._name, "profile_x", 16384); + stracpy(_profile_x_var._type, "Monitor_nD", 16384); + _profile_x_var._index=75; + int current_setpos_index = 75; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user3[0]='\0'; + _profile_x_var._parameters.xwidth = 0.3; + _profile_x_var._parameters.yheight = 0.3; + _profile_x_var._parameters.zdepth = 0; + _profile_x_var._parameters.xmin = 0; + _profile_x_var._parameters.xmax = 0; + _profile_x_var._parameters.ymin = 0; + _profile_x_var._parameters.ymax = 0; + _profile_x_var._parameters.zmin = 0; + _profile_x_var._parameters.zmax = 0; + _profile_x_var._parameters.bins = 0; + _profile_x_var._parameters.min = -1e40; + _profile_x_var._parameters.max = 1e40; + _profile_x_var._parameters.restore_neutron = 0; + _profile_x_var._parameters.radius = 0; + if("x bins 300" && strlen("x bins 300")) + stracpy(_profile_x_var._parameters.options, "x bins 300" ? "x bins 300" : "", 16384); + else + _profile_x_var._parameters.options[0]='\0'; + if("profile_x.dat" && strlen("profile_x.dat")) + stracpy(_profile_x_var._parameters.filename, "profile_x.dat" ? "profile_x.dat" : "", 16384); + else + _profile_x_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.geometry[0]='\0'; + _profile_x_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username3[0]='\0'; + + + /* component profile_x=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_x_var._rotation_absolute); + rot_transpose(_sample_PSD_var._rotation_absolute, tr1); + rot_mul(_profile_x_var._rotation_absolute, tr1, _profile_x_var._rotation_relative); + _profile_x_var._rotation_is_identity = rot_test_identity(_profile_x_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_x_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_sample_PSD_var._position_absolute, _profile_x_var._position_absolute); + _profile_x_var._position_relative = rot_apply(_profile_x_var._rotation_absolute, tc1); + } /* profile_x=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute); + instrument->_position_absolute[75] = _profile_x_var._position_absolute; + instrument->_position_relative[75] = _profile_x_var._position_relative; + _profile_x_var._position_relative_is_zero = coords_test_zero(_profile_x_var._position_relative); + instrument->counter_N[75] = instrument->counter_P[75] = instrument->counter_P2[75] = 0; + instrument->counter_AbsorbProp[75]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0074_profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "options", "NULL", "x bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "filename", "NULL", "profile_x.dat", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_x_setpos */ + +/* component profile_y=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_y_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_y_setpos] component profile_y=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_y_var._name, "profile_y", 16384); + stracpy(_profile_y_var._type, "Monitor_nD", 16384); + _profile_y_var._index=76; + int current_setpos_index = 76; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user3[0]='\0'; + _profile_y_var._parameters.xwidth = 0.3; + _profile_y_var._parameters.yheight = 0.3; + _profile_y_var._parameters.zdepth = 0; + _profile_y_var._parameters.xmin = 0; + _profile_y_var._parameters.xmax = 0; + _profile_y_var._parameters.ymin = 0; + _profile_y_var._parameters.ymax = 0; + _profile_y_var._parameters.zmin = 0; + _profile_y_var._parameters.zmax = 0; + _profile_y_var._parameters.bins = 0; + _profile_y_var._parameters.min = -1e40; + _profile_y_var._parameters.max = 1e40; + _profile_y_var._parameters.restore_neutron = 0; + _profile_y_var._parameters.radius = 0; + if("y bins 300" && strlen("y bins 300")) + stracpy(_profile_y_var._parameters.options, "y bins 300" ? "y bins 300" : "", 16384); + else + _profile_y_var._parameters.options[0]='\0'; + if("profile_y.dat" && strlen("profile_y.dat")) + stracpy(_profile_y_var._parameters.filename, "profile_y.dat" ? "profile_y.dat" : "", 16384); + else + _profile_y_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.geometry[0]='\0'; + _profile_y_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username3[0]='\0'; + + + /* component profile_y=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_y_var._rotation_absolute); + rot_transpose(_profile_x_var._rotation_absolute, tr1); + rot_mul(_profile_y_var._rotation_absolute, tr1, _profile_y_var._rotation_relative); + _profile_y_var._rotation_is_identity = rot_test_identity(_profile_y_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_y_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_x_var._position_absolute, _profile_y_var._position_absolute); + _profile_y_var._position_relative = rot_apply(_profile_y_var._rotation_absolute, tc1); + } /* profile_y=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute); + instrument->_position_absolute[76] = _profile_y_var._position_absolute; + instrument->_position_relative[76] = _profile_y_var._position_relative; + _profile_y_var._position_relative_is_zero = coords_test_zero(_profile_y_var._position_relative); + instrument->counter_N[76] = instrument->counter_P[76] = instrument->counter_P2[76] = 0; + instrument->counter_AbsorbProp[76]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0075_profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "options", "NULL", "y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "filename", "NULL", "profile_y.dat", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_y_setpos */ + +/* component wavelength=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_setpos] component wavelength=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_var._name, "wavelength", 16384); + stracpy(_wavelength_var._type, "Monitor_nD", 16384); + _wavelength_var._index=77; + int current_setpos_index = 77; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user3[0]='\0'; + _wavelength_var._parameters.xwidth = 0.3; + _wavelength_var._parameters.yheight = 0.3; + _wavelength_var._parameters.zdepth = 0; + _wavelength_var._parameters.xmin = 0; + _wavelength_var._parameters.xmax = 0; + _wavelength_var._parameters.ymin = 0; + _wavelength_var._parameters.ymax = 0; + _wavelength_var._parameters.zmin = 0; + _wavelength_var._parameters.zmax = 0; + _wavelength_var._parameters.bins = 0; + _wavelength_var._parameters.min = -1e40; + _wavelength_var._parameters.max = 1e40; + _wavelength_var._parameters.restore_neutron = 0; + _wavelength_var._parameters.radius = 0; + if("L bins 300 limits [0.5 10]" && strlen("L bins 300 limits [0.5 10]")) + stracpy(_wavelength_var._parameters.options, "L bins 300 limits [0.5 10]" ? "L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_var._parameters.options[0]='\0'; + if("wavelength.dat" && strlen("wavelength.dat")) + stracpy(_wavelength_var._parameters.filename, "wavelength.dat" ? "wavelength.dat" : "", 16384); + else + _wavelength_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.geometry[0]='\0'; + _wavelength_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username3[0]='\0'; + + + /* component wavelength=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_var._rotation_absolute); + rot_transpose(_profile_y_var._rotation_absolute, tr1); + rot_mul(_wavelength_var._rotation_absolute, tr1, _wavelength_var._rotation_relative); + _wavelength_var._rotation_is_identity = rot_test_identity(_wavelength_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_y_var._position_absolute, _wavelength_var._position_absolute); + _wavelength_var._position_relative = rot_apply(_wavelength_var._rotation_absolute, tc1); + } /* wavelength=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute); + instrument->_position_absolute[77] = _wavelength_var._position_absolute; + instrument->_position_relative[77] = _wavelength_var._position_relative; + _wavelength_var._position_relative_is_zero = coords_test_zero(_wavelength_var._position_relative); + instrument->counter_N[77] = instrument->counter_P[77] = instrument->counter_P2[77] = 0; + instrument->counter_AbsorbProp[77]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0076_wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "options", "NULL", "L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "filename", "NULL", "wavelength.dat", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_setpos */ + +/* component tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_tof_setpos] component tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_tof_var._name, "tof", 16384); + stracpy(_tof_var._type, "Monitor_nD", 16384); + _tof_var._index=78; + int current_setpos_index = 78; + if("" && strlen("")) + stracpy(_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _tof_var._parameters.user3[0]='\0'; + _tof_var._parameters.xwidth = 0.3; + _tof_var._parameters.yheight = 0.3; + _tof_var._parameters.zdepth = 0; + _tof_var._parameters.xmin = 0; + _tof_var._parameters.xmax = 0; + _tof_var._parameters.ymin = 0; + _tof_var._parameters.ymax = 0; + _tof_var._parameters.zmin = 0; + _tof_var._parameters.zmax = 0; + _tof_var._parameters.bins = 0; + _tof_var._parameters.min = -1e40; + _tof_var._parameters.max = 1e40; + _tof_var._parameters.restore_neutron = 0; + _tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15]" && strlen("t bins 300 limits [0, 0.15]")) + stracpy(_tof_var._parameters.options, "t bins 300 limits [0, 0.15]" ? "t bins 300 limits [0, 0.15]" : "", 16384); + else + _tof_var._parameters.options[0]='\0'; + if("time.dat" && strlen("time.dat")) + stracpy(_tof_var._parameters.filename, "time.dat" ? "time.dat" : "", 16384); + else + _tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.geometry[0]='\0'; + _tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username3[0]='\0'; + + + /* component tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _tof_var._rotation_absolute); + rot_transpose(_wavelength_var._rotation_absolute, tr1); + rot_mul(_tof_var._rotation_absolute, tr1, _tof_var._rotation_relative); + _tof_var._rotation_is_identity = rot_test_identity(_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_var._position_absolute, _tof_var._position_absolute); + _tof_var._position_relative = rot_apply(_tof_var._rotation_absolute, tc1); + } /* tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("tof", _tof_var._position_absolute, _tof_var._rotation_absolute); + instrument->_position_absolute[78] = _tof_var._position_absolute; + instrument->_position_relative[78] = _tof_var._position_relative; + _tof_var._position_relative_is_zero = coords_test_zero(_tof_var._position_relative); + instrument->counter_N[78] = instrument->counter_P[78] = instrument->counter_P2[78] = 0; + instrument->counter_AbsorbProp[78]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0077_tof", _tof_var._position_absolute, _tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0077_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "options", "NULL", "t bins 300 limits [0, 0.15]", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "filename", "NULL", "time.dat", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _tof_setpos */ + +/* component wavelength_tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_tof_setpos] component wavelength_tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_tof_var._name, "wavelength_tof", 16384); + stracpy(_wavelength_tof_var._type, "Monitor_nD", 16384); + _wavelength_tof_var._index=79; + int current_setpos_index = 79; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user3[0]='\0'; + _wavelength_tof_var._parameters.xwidth = 0.3; + _wavelength_tof_var._parameters.yheight = 0.3; + _wavelength_tof_var._parameters.zdepth = 0; + _wavelength_tof_var._parameters.xmin = 0; + _wavelength_tof_var._parameters.xmax = 0; + _wavelength_tof_var._parameters.ymin = 0; + _wavelength_tof_var._parameters.ymax = 0; + _wavelength_tof_var._parameters.zmin = 0; + _wavelength_tof_var._parameters.zmax = 0; + _wavelength_tof_var._parameters.bins = 0; + _wavelength_tof_var._parameters.min = -1e40; + _wavelength_tof_var._parameters.max = 1e40; + _wavelength_tof_var._parameters.restore_neutron = 0; + _wavelength_tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" && strlen("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]")) + stracpy(_wavelength_tof_var._parameters.options, "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" ? "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_tof_var._parameters.options[0]='\0'; + if("wavelength_tof.dat" && strlen("wavelength_tof.dat")) + stracpy(_wavelength_tof_var._parameters.filename, "wavelength_tof.dat" ? "wavelength_tof.dat" : "", 16384); + else + _wavelength_tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.geometry[0]='\0'; + _wavelength_tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username3[0]='\0'; + + + /* component wavelength_tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_tof_var._rotation_absolute); + rot_transpose(_tof_var._rotation_absolute, tr1); + rot_mul(_wavelength_tof_var._rotation_absolute, tr1, _wavelength_tof_var._rotation_relative); + _wavelength_tof_var._rotation_is_identity = rot_test_identity(_wavelength_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_tof_var._position_absolute, _wavelength_tof_var._position_absolute); + _wavelength_tof_var._position_relative = rot_apply(_wavelength_tof_var._rotation_absolute, tc1); + } /* wavelength_tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute); + instrument->_position_absolute[79] = _wavelength_tof_var._position_absolute; + instrument->_position_relative[79] = _wavelength_tof_var._position_relative; + _wavelength_tof_var._position_relative_is_zero = coords_test_zero(_wavelength_tof_var._position_relative); + instrument->counter_N[79] = instrument->counter_P[79] = instrument->counter_P2[79] = 0; + instrument->counter_AbsorbProp[79]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0078_wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "options", "NULL", "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "filename", "NULL", "wavelength_tof.dat", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_tof_setpos */ + +/* component sample_position=Arm() SETTING, POSITION/ROTATION */ +int _sample_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_position_setpos] component sample_position=Arm() SETTING [Arm:0]"); + stracpy(_sample_position_var._name, "sample_position", 16384); + stracpy(_sample_position_var._type, "Arm", 16384); + _sample_position_var._index=80; + int current_setpos_index = 80; + /* component sample_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_position_var._rotation_absolute); + rot_transpose(_wavelength_tof_var._rotation_absolute, tr1); + rot_mul(_sample_position_var._rotation_absolute, tr1, _sample_position_var._rotation_relative); + _sample_position_var._rotation_is_identity = rot_test_identity(_sample_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_position_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_tof_var._position_absolute, _sample_position_var._position_absolute); + _sample_position_var._position_relative = rot_apply(_sample_position_var._rotation_absolute, tc1); + } /* sample_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute); + instrument->_position_absolute[80] = _sample_position_var._position_absolute; + instrument->_position_relative[80] = _sample_position_var._position_relative; + _sample_position_var._position_relative_is_zero = coords_test_zero(_sample_position_var._position_relative); + instrument->counter_N[80] = instrument->counter_P[80] = instrument->counter_P2[80] = 0; + instrument->counter_AbsorbProp[80]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0079_sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_position_setpos */ + +_class_Progress_bar *class_Progress_bar_init(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_init] component Origin=Progress_bar() INITIALISE [Progress_bar:0]"); + + IntermediateCnts = 0; + StartTime = 0; + EndTime = 0; + CurrentTime = 0; + + fprintf (stdout, "[%s] Initialize\n", instrument_name); + if (percent * mcget_ncount () / 100 < 1e5) { + percent = 1e5 * 100.0 / mcget_ncount (); + } + #ifdef OPENACC + time (&StartTime); + #endif + + #ifdef USE_MPI + sprintf (infostring, "(%i MPI processes) ", mpi_node_count); + #else + sprintf (infostring, "(single process) "); + #endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_init */ + +_class_ESS_butterfly *class_ESS_butterfly_init(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_init] component Source=ESS_butterfly() INITIALISE [ESS_butterfly:0]"); + + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_init */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_init(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_init] component bi=bi_spec_ellipse() INITIALISE [bi_spec_ellipse:0]"); + + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return(_comp); +} /* class_bi_spec_ellipse_init */ + +_class_Guide_four_side *class_Guide_four_side_init(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_init] component NBOA_drawing_1_end=Guide_four_side() INITIALISE [Guide_four_side:0]"); + + + int i; + + if (RIreflect && strlen (RIreflect)) { + if (Table_Read (&riTable, RIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, RIreflect)); + } + + if (LIreflect && strlen (LIreflect)) { + if (Table_Read (&liTable, LIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LIreflect)); + } + + if (UIreflect && strlen (UIreflect)) { + if (Table_Read (&uiTable, UIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UIreflect)); + } + + if (DIreflect && strlen (DIreflect)) { + if (Table_Read (&diTable, DIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DIreflect)); + } + + if (ROreflect && strlen (ROreflect)) { + if (Table_Read (&roTable, ROreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, ROreflect)); + } + + if (LOreflect && strlen (LOreflect)) { + if (Table_Read (&loTable, LOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LOreflect)); + } + + if (UOreflect && strlen (UOreflect)) { + if (Table_Read (&uoTable, UOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UOreflect)); + } + + if (DOreflect && strlen (DOreflect)) { + if (Table_Read (&doTable, DOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DOreflect)); + } + + if (w1r < 0) + TEST_INPUT ("w1r", NAME_CURRENT_COMP); + + if (w1l < 0) + TEST_INPUT ("w1l", NAME_CURRENT_COMP); + + if (h1u < 0) + TEST_INPUT ("h1u", NAME_CURRENT_COMP); + + if (h1d < 0) + TEST_INPUT ("h1d", NAME_CURRENT_COMP); + + if (w2r < 0) + TEST_INPUT ("w2r", NAME_CURRENT_COMP); + + if (w2l < 0) + TEST_INPUT ("w2l", NAME_CURRENT_COMP); + + if (h2u < 0) + TEST_INPUT ("h2u", NAME_CURRENT_COMP); + + if (h2d < 0) + TEST_INPUT ("h2d", NAME_CURRENT_COMP); + + if (mxrOW != -1 && mxrOW < 0) + TEST_INPUT_1 ("mxrOW", NAME_CURRENT_COMP); + + if (mxlOW != -1 && mxlOW < 0) + TEST_INPUT_1 ("mxlOW", NAME_CURRENT_COMP); + + if (myuOW != -1 && myuOW < 0) + TEST_INPUT_1 ("myuOW", NAME_CURRENT_COMP); + + if (mydOW != -1 && mydOW < 0) + TEST_INPUT_1 ("mydOW", NAME_CURRENT_COMP); + + if (mxr < 0 && mxr != -1) + TEST_INPUT_1 ("mxr", NAME_CURRENT_COMP); + + if (mxl < 0 && mxl != -1) + TEST_INPUT_1 ("mxl", NAME_CURRENT_COMP); + + if (myu < 0 && myu != -1) + TEST_INPUT_1 ("myu", NAME_CURRENT_COMP); + + if (myd < 0 && myd != -1) + TEST_INPUT_1 ("myd", NAME_CURRENT_COMP); + + if (Qcxl < 0) + TEST_INPUT_2 ("Qcxl", NAME_CURRENT_COMP); + + if (Qcxr < 0) + TEST_INPUT_2 ("Qcxr", NAME_CURRENT_COMP); + + if (Qcyu < 0) + TEST_INPUT_2 ("Qcyu", NAME_CURRENT_COMP); + + if (Qcyd < 0) + TEST_INPUT_2 ("Qcyd", NAME_CURRENT_COMP); + + if (alphaxl < 0) + TEST_INPUT_2 ("alphaxl", NAME_CURRENT_COMP); + + if (alphaxr < 0) + TEST_INPUT_2 ("alphaxr", NAME_CURRENT_COMP); + + if (alphayu < 0) + TEST_INPUT_2 ("alphayu", NAME_CURRENT_COMP); + + if (alphayd < 0) + TEST_INPUT_2 ("alphayd", NAME_CURRENT_COMP); + + if (QcxlOW < 0) + TEST_INPUT_2 ("QcxlOW", NAME_CURRENT_COMP); + + if (QcxrOW < 0) + TEST_INPUT_2 ("QcxrOW", NAME_CURRENT_COMP); + + if (QcyuOW < 0) + TEST_INPUT_2 ("QcyuOW", NAME_CURRENT_COMP); + + if (QcydOW < 0) + TEST_INPUT_2 ("QcydOW", NAME_CURRENT_COMP); + + if (alphaxlOW < 0) + TEST_INPUT_2 ("alphaxlOW", NAME_CURRENT_COMP); + + if (alphaxrOW < 0) + TEST_INPUT_2 ("alphaxrOW", NAME_CURRENT_COMP); + + if (alphayuOW < 0) + TEST_INPUT_2 ("alphayuOW", NAME_CURRENT_COMP); + + if (alphaydOW < 0) + TEST_INPUT_2 ("alphaydOW", NAME_CURRENT_COMP); + + if (rwallthick < 0) + TEST_INPUT_2 ("rwallthick", NAME_CURRENT_COMP); + + if (lwallthick < 0) + TEST_INPUT_2 ("lwallthick", NAME_CURRENT_COMP); + + if (uwallthick < 0) + TEST_INPUT_2 ("uwallthick", NAME_CURRENT_COMP); + + if (dwallthick < 0) + TEST_INPUT_2 ("dwallthick", NAME_CURRENT_COMP); + + if (Wxr <= 0) + TEST_INPUT_3 ("Wxr", NAME_CURRENT_COMP); + + if (Wxl <= 0) + TEST_INPUT_3 ("Wxl", NAME_CURRENT_COMP); + + if (Wyu <= 0) + TEST_INPUT_3 ("Wyu", NAME_CURRENT_COMP); + + if (Wyd <= 0) + TEST_INPUT_3 ("Wyd", NAME_CURRENT_COMP); + + if (WxrOW <= 0) + TEST_INPUT_3 ("WxrOW", NAME_CURRENT_COMP); + + if (WxlOW <= 0) + TEST_INPUT_3 ("WxlOW", NAME_CURRENT_COMP); + + if (WyuOW <= 0) + TEST_INPUT_3 ("WyuOW", NAME_CURRENT_COMP); + + if (WydOW <= 0) + TEST_INPUT_3 ("WydOW", NAME_CURRENT_COMP); + + if (l <= 0) { + fprintf (stderr, "Component: %s (Guide_four_side) real guide length \n", NAME_CURRENT_COMP); + fprintf (stderr, " is <= ZERO ! \n"); + exit (-1); + } + + if (mcgravitation) + fprintf (stderr, + "WARNING: Guide_four_side: %s: " + "This component produces wrong results with gravitation !\n" + "Use Guide_gravity.\n", + NAME_CURRENT_COMP); + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + if (loutwr != 0 && linwr != 0) /* elliptic right side wall */ + { + ELLIPSE (w1r, l, linwr, loutwr, rwallthick, &awr, &bwr, &a2wr, &b2wr, &z0wr, &w2r, &awrwt, &a2wrwt, &bwrwt, &b2wrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr != 0) /* parabolic focusing right side wall */ + { + PARABEL_FOCUS (w1r, l, loutwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr != 0 && loutwr == 0) /* parabolic defocusing right side wall */ + { + PARABEL_DEFOCUS (w1r, l, linwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr == 0) /* straight right side wall */ + { + LINEAR (w1r, w2r, l, rwallthick, &w1rwt, &w2rwt); + } + + /* Calculation of curve-parameters for the left side wall - positive x-axis - analog to right side*/ + + if ((linwl != 0) && (loutwl != 0)) /* elleptic left side wall */ + { + ELLIPSE (w1l, l, linwl, loutwl, lwallthick, &awl, &bwl, &a2wl, &b2wl, &z0wl, &w2l, &awlwt, &a2wlwt, &bwlwt, &b2wlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl != 0) /* parabolic focusing left side wall */ + { + PARABEL_FOCUS (w1l, l, loutwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl != 0 && loutwl == 0) /* parabolic defocusing left side wall */ + { + PARABEL_DEFOCUS (w1l, l, linwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl == 0) /* straight left side wall */ + { + LINEAR (w1l, w2l, l, lwallthick, &w1lwt, &w2lwt); + } + + /* Calculation of curve-parameters for the top wall - positive y-axis - analog right wall*/ + + if (linhu != 0 && louthu != 0) /* elliptic top wall */ + { + ELLIPSE (h1u, l, linhu, louthu, uwallthick, &ahu, &bhu, &a2hu, &b2hu, &z0hu, &h2u, &ahuwt, &a2huwt, &bhuwt, &b2huwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu != 0) /* parabolic focusing top wall */ + { + PARABEL_FOCUS (h1u, l, louthu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu != 0 && louthu == 0) /* parabolic defocusing top wall */ + { + PARABEL_DEFOCUS (h1u, l, linhu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu == 0) { + LINEAR (h1u, h2u, l, uwallthick, &h1uwt, &h2uwt); + } + + /* Calculation of curve-parameters for the bottom wall - negative y-axis - analog right wall */ + + if (linhd != 0 && louthd != 0) /* elliptic bottom wall */ + { + ELLIPSE (h1d, l, linhd, louthd, dwallthick, &ahd, &bhd, &a2hd, &b2hd, &z0hd, &h2d, &ahdwt, &a2hdwt, &bhdwt, &b2hdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd != 0) /* parabolic focusing bottom wall */ + { + PARABEL_FOCUS (h1d, l, louthd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd != 0 && louthd == 0) /* parabolic defocusing bottom wall */ + { + PARABEL_DEFOCUS (h1d, l, linhd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd == 0) { + LINEAR (h1d, h2d, l, dwallthick, &h1dwt, &h2dwt); + } + + mru1 = (h1uwt - h1u) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right upper corner*/ + nru1 = h1u - mru1 * (-w1r); + + mrd1 = (-h1dwt + h1d) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right lower corner*/ + nrd1 = -h1d - mrd1 * (-w1r); + + mlu1 = (h1uwt - h1u) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left upper corner*/ + nlu1 = h1u - mlu1 * w1l; + + mld1 = (-h1dwt + h1d) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left lower corner*/ + nld1 = -h1d - mld1 * w1l; + + mru2 = (h2u - h2uwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right upper corner*/ + nru2 = h2u - mru2 * (-w2r); + + mrd2 = (-h2d + h2dwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right lower corner*/ + nrd2 = -h2d - mrd2 * (-w2r); + + mlu2 = (h2u - h2uwt) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left upper corner*/ + nlu2 = h2u - mlu2 * w2l; + + mld2 = (h2dwt - h2d) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left lower corner*/ + nld2 = -h2d - mld2 * w2l; + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_init */ + +_class_MultiDiskChopper *class_MultiDiskChopper_init(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_init] component wfmc_1=MultiDiskChopper() INITIALISE [MultiDiskChopper:0]"); + + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_init */ + +_class_Slit *class_Slit_init(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_init] component pinhole_1=Slit() INITIALISE [Slit:0]"); + + if (is_unset (radius)) { + isradial = 0; + if (all_set (3, xwidth, xmin, xmax)) { + slit_error_if (xwidth != xmax - xmin, "specifying xwidth, xmin and xmax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (xwidth) && any_unset (2, xmin, xmax), "specify either xwidth or xmin & xmax", NAME_CURRENT_COMP); + } + if (all_set (3, yheight, ymin, ymax)) { + slit_error_if (yheight != ymax - ymin, "specifying yheight, ymin and ymax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (yheight) && any_unset (2, ymin, ymax), "specify either yheight or ymin & ymax", NAME_CURRENT_COMP); + } + if (is_unset (xmin)) { // xmax also unset but xwidth *is* set + xmax = xwidth / 2; + xmin = -xmax; + } + if (is_unset (ymin)) { // ymax also unset but yheight *is* set + ymax = yheight / 2; + ymin = -ymax; + } + slit_warning_if (xmin == xmax || ymin == ymax, "Running with CLOSED rectangular slit - is this intentional?", NAME_CURRENT_COMP); + } else { + isradial = 1; + slit_error_if (any_set (6, xwidth, xmin, xmax, yheight, ymin, ymax), "specify radius OR width and height parameters", NAME_CURRENT_COMP); + slit_warning_if (radius == 0., "Running with CLOSED radial slit - is this intentional?", NAME_CURRENT_COMP); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_init */ + +_class_DiskChopper *class_DiskChopper_init(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_init] component bp1_chopper=DiskChopper() INITIALISE [DiskChopper:0]"); + + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_init */ + +_class_Monitor_nD *class_Monitor_nD_init(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_init] component sample_PSD=Monitor_nD() INITIALISE [Monitor_nD:0]"); + + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_init */ + + + +int init(void) { /* called by mccode_main for ODIN_baseline:INITIALISE */ + DEBUG_INSTR(); + // Initialise rng + srandom(_hash(mcseed-1)); + + /* code_main/parseoptions/readparams sets instrument parameters value */ + stracpy(instrument->_name, "ODIN_baseline", 256); + + /* Instrument 'ODIN_baseline' INITIALISE */ + SIG_MESSAGE("[ODIN_baseline] INITIALISE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) +{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + + +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + _Origin_setpos(); /* type Progress_bar */ + _optical_axis_setpos(); /* type Arm */ + _Source_setpos(); /* type ESS_butterfly */ + _Start_of_bi_setpos(); /* type Arm */ + _bi_setpos(); /* type bi_spec_ellipse */ + _End_of_bi_setpos(); /* type Arm */ + _NBOA_drawing_1_end_setpos(); /* type Guide_four_side */ + _g1a2_setpos(); /* type Guide_four_side */ + _g1a3_setpos(); /* type Guide_four_side */ + _g1b1_setpos(); /* type Guide_four_side */ + _g1c1_setpos(); /* type Guide_four_side */ + _wfm_position_setpos(); /* type Arm */ + _wfm_1_position_setpos(); /* type Arm */ + _wfmc_1_setpos(); /* type MultiDiskChopper */ + _pinhole_1_setpos(); /* type Slit */ + _wfm_2_position_setpos(); /* type Arm */ + _wfmc_2_setpos(); /* type MultiDiskChopper */ + _g2a1_setpos(); /* type Guide_four_side */ + _monitor_1_position_setpos(); /* type Arm */ + _g2a2_setpos(); /* type Guide_four_side */ + _fo1_position_setpos(); /* type Arm */ + _fo_chopper_1_setpos(); /* type MultiDiskChopper */ + _bp1_position_setpos(); /* type Arm */ + _bp1_chopper_setpos(); /* type DiskChopper */ + _g2b1_setpos(); /* type Guide_four_side */ + _g2b2_setpos(); /* type Guide_four_side */ + _g2b3_setpos(); /* type Guide_four_side */ + _g2b4_setpos(); /* type Guide_four_side */ + _fo2_position_setpos(); /* type Arm */ + _fo_chopper_2_setpos(); /* type MultiDiskChopper */ + _bp2_position_setpos(); /* type Arm */ + _bp_chopper2_setpos(); /* type DiskChopper */ + _g2c1_setpos(); /* type Guide_four_side */ + _t0_start_position_setpos(); /* type Arm */ + _t0_chopper_alpha_setpos(); /* type DiskChopper */ + _t0_end_position_setpos(); /* type Arm */ + _t0_chopper_beta_setpos(); /* type DiskChopper */ + _g3a1_setpos(); /* type Guide_four_side */ + _g3a2_setpos(); /* type Guide_four_side */ + _fo3_position_setpos(); /* type Arm */ + _fo_chopper_3_setpos(); /* type MultiDiskChopper */ + _g3b1_setpos(); /* type Guide_four_side */ + _g4a1_setpos(); /* type Guide_four_side */ + _monitor_2_position_setpos(); /* type Arm */ + _g4a2_setpos(); /* type Guide_four_side */ + _g4a3_setpos(); /* type Guide_four_side */ + _fo4_position_setpos(); /* type Arm */ + _fo_chopper_4_setpos(); /* type MultiDiskChopper */ + _g4b1_setpos(); /* type Guide_four_side */ + _g4b2_setpos(); /* type Guide_four_side */ + _g4b3_setpos(); /* type Guide_four_side */ + _g4b4_setpos(); /* type Guide_four_side */ + _g4b5_setpos(); /* type Guide_four_side */ + _g4b6_setpos(); /* type Guide_four_side */ + _g5a1_setpos(); /* type Guide_four_side */ + _fo5_position_setpos(); /* type Arm */ + _fo_chopper_5_setpos(); /* type MultiDiskChopper */ + _g5b1_setpos(); /* type Guide_four_side */ + _g5b2_setpos(); /* type Guide_four_side */ + _g5b3_setpos(); /* type Guide_four_side */ + _g5b4_setpos(); /* type Guide_four_side */ + _g5b5_setpos(); /* type Guide_four_side */ + _g5b6_setpos(); /* type Guide_four_side */ + _g6a1_setpos(); /* type Guide_four_side */ + _g6a2_setpos(); /* type Guide_four_side */ + _g6a3_setpos(); /* type Guide_four_side */ + _guide_end_setpos(); /* type Arm */ + _monitor_3_position_setpos(); /* type Arm */ + _start_backend_setpos(); /* type Arm */ + _optical_axis_backend_setpos(); /* type Arm */ + _pinhole_2_setpos(); /* type Slit */ + _graph_setpos(); /* type Graphite_Diffuser */ + _sample_monitor_arm_setpos(); /* type Arm */ + _sample_PSD_setpos(); /* type Monitor_nD */ + _profile_x_setpos(); /* type Monitor_nD */ + _profile_y_setpos(); /* type Monitor_nD */ + _wavelength_setpos(); /* type Monitor_nD */ + _tof_setpos(); /* type Monitor_nD */ + _wavelength_tof_setpos(); /* type Monitor_nD */ + _sample_position_setpos(); /* type Arm */ + + /* call iteratively all components INITIALISE */ + class_Progress_bar_init(&_Origin_var); + + + class_ESS_butterfly_init(&_Source_var); + + + class_bi_spec_ellipse_init(&_bi_var); + + + class_Guide_four_side_init(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_init(&_g1a2_var); + + class_Guide_four_side_init(&_g1a3_var); + + class_Guide_four_side_init(&_g1b1_var); + + class_Guide_four_side_init(&_g1c1_var); + + + + class_MultiDiskChopper_init(&_wfmc_1_var); + + class_Slit_init(&_pinhole_1_var); + + + class_MultiDiskChopper_init(&_wfmc_2_var); + + class_Guide_four_side_init(&_g2a1_var); + + + class_Guide_four_side_init(&_g2a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_1_var); + + + class_DiskChopper_init(&_bp1_chopper_var); + + class_Guide_four_side_init(&_g2b1_var); + + class_Guide_four_side_init(&_g2b2_var); + + class_Guide_four_side_init(&_g2b3_var); + + class_Guide_four_side_init(&_g2b4_var); + + + class_MultiDiskChopper_init(&_fo_chopper_2_var); + + + class_DiskChopper_init(&_bp_chopper2_var); + + class_Guide_four_side_init(&_g2c1_var); + + + class_DiskChopper_init(&_t0_chopper_alpha_var); + + + class_DiskChopper_init(&_t0_chopper_beta_var); + + class_Guide_four_side_init(&_g3a1_var); + + class_Guide_four_side_init(&_g3a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_3_var); + + class_Guide_four_side_init(&_g3b1_var); + + class_Guide_four_side_init(&_g4a1_var); + + + class_Guide_four_side_init(&_g4a2_var); + + class_Guide_four_side_init(&_g4a3_var); + + + class_MultiDiskChopper_init(&_fo_chopper_4_var); + + class_Guide_four_side_init(&_g4b1_var); + + class_Guide_four_side_init(&_g4b2_var); + + class_Guide_four_side_init(&_g4b3_var); + + class_Guide_four_side_init(&_g4b4_var); + + class_Guide_four_side_init(&_g4b5_var); + + class_Guide_four_side_init(&_g4b6_var); + + class_Guide_four_side_init(&_g5a1_var); + + + class_MultiDiskChopper_init(&_fo_chopper_5_var); + + class_Guide_four_side_init(&_g5b1_var); + + class_Guide_four_side_init(&_g5b2_var); + + class_Guide_four_side_init(&_g5b3_var); + + class_Guide_four_side_init(&_g5b4_var); + + class_Guide_four_side_init(&_g5b5_var); + + class_Guide_four_side_init(&_g5b6_var); + + class_Guide_four_side_init(&_g6a1_var); + + class_Guide_four_side_init(&_g6a2_var); + + class_Guide_four_side_init(&_g6a3_var); + + + + + + class_Slit_init(&_pinhole_2_var); + + + + class_Monitor_nD_init(&_sample_PSD_var); + + class_Monitor_nD_init(&_profile_x_var); + + class_Monitor_nD_init(&_profile_y_var); + + class_Monitor_nD_init(&_wavelength_var); + + class_Monitor_nD_init(&_tof_var); + + class_Monitor_nD_init(&_wavelength_tof_var); + + + if (mcdotrace) display(); + DEBUG_INSTR_END(); + +#ifdef OPENACC +#include +#pragma acc update device(_Origin_var) +#pragma acc update device(_optical_axis_var) +#pragma acc update device(_Source_var) +#pragma acc update device(_Start_of_bi_var) +#pragma acc update device(_bi_var) +#pragma acc update device(_End_of_bi_var) +#pragma acc update device(_NBOA_drawing_1_end_var) +#pragma acc update device(_g1a2_var) +#pragma acc update device(_g1a3_var) +#pragma acc update device(_g1b1_var) +#pragma acc update device(_g1c1_var) +#pragma acc update device(_wfm_position_var) +#pragma acc update device(_wfm_1_position_var) +#pragma acc update device(_wfmc_1_var) +#pragma acc update device(_pinhole_1_var) +#pragma acc update device(_wfm_2_position_var) +#pragma acc update device(_wfmc_2_var) +#pragma acc update device(_g2a1_var) +#pragma acc update device(_monitor_1_position_var) +#pragma acc update device(_g2a2_var) +#pragma acc update device(_fo1_position_var) +#pragma acc update device(_fo_chopper_1_var) +#pragma acc update device(_bp1_position_var) +#pragma acc update device(_bp1_chopper_var) +#pragma acc update device(_g2b1_var) +#pragma acc update device(_g2b2_var) +#pragma acc update device(_g2b3_var) +#pragma acc update device(_g2b4_var) +#pragma acc update device(_fo2_position_var) +#pragma acc update device(_fo_chopper_2_var) +#pragma acc update device(_bp2_position_var) +#pragma acc update device(_bp_chopper2_var) +#pragma acc update device(_g2c1_var) +#pragma acc update device(_t0_start_position_var) +#pragma acc update device(_t0_chopper_alpha_var) +#pragma acc update device(_t0_end_position_var) +#pragma acc update device(_t0_chopper_beta_var) +#pragma acc update device(_g3a1_var) +#pragma acc update device(_g3a2_var) +#pragma acc update device(_fo3_position_var) +#pragma acc update device(_fo_chopper_3_var) +#pragma acc update device(_g3b1_var) +#pragma acc update device(_g4a1_var) +#pragma acc update device(_monitor_2_position_var) +#pragma acc update device(_g4a2_var) +#pragma acc update device(_g4a3_var) +#pragma acc update device(_fo4_position_var) +#pragma acc update device(_fo_chopper_4_var) +#pragma acc update device(_g4b1_var) +#pragma acc update device(_g4b2_var) +#pragma acc update device(_g4b3_var) +#pragma acc update device(_g4b4_var) +#pragma acc update device(_g4b5_var) +#pragma acc update device(_g4b6_var) +#pragma acc update device(_g5a1_var) +#pragma acc update device(_fo5_position_var) +#pragma acc update device(_fo_chopper_5_var) +#pragma acc update device(_g5b1_var) +#pragma acc update device(_g5b2_var) +#pragma acc update device(_g5b3_var) +#pragma acc update device(_g5b4_var) +#pragma acc update device(_g5b5_var) +#pragma acc update device(_g5b6_var) +#pragma acc update device(_g6a1_var) +#pragma acc update device(_g6a2_var) +#pragma acc update device(_g6a3_var) +#pragma acc update device(_guide_end_var) +#pragma acc update device(_monitor_3_position_var) +#pragma acc update device(_start_backend_var) +#pragma acc update device(_optical_axis_backend_var) +#pragma acc update device(_pinhole_2_var) +#pragma acc update device(_graph_var) +#pragma acc update device(_sample_monitor_arm_var) +#pragma acc update device(_sample_PSD_var) +#pragma acc update device(_profile_x_var) +#pragma acc update device(_profile_y_var) +#pragma acc update device(_wavelength_var) +#pragma acc update device(_tof_var) +#pragma acc update device(_wavelength_tof_var) +#pragma acc update device(_sample_position_var) +#pragma acc update device(_instrument_var) +#endif + + return(0); +} /* init */ + +/******************************************************************************* +* components TRACE +*******************************************************************************/ + +#define x (_particle->x) +#define y (_particle->y) +#define z (_particle->z) +#define vx (_particle->vx) +#define vy (_particle->vy) +#define vz (_particle->vz) +#define t (_particle->t) +#define sx (_particle->sx) +#define sy (_particle->sy) +#define sz (_particle->sz) +#define p (_particle->p) +#define mcgravitation (_particle->mcgravitation) +#define mcMagnet (_particle->mcMagnet) +#define allow_backprop (_particle->allow_backprop) +#define _mctmp_a (_particle->_mctmp_a) +#define _mctmp_b (_particle->_mctmp_b) +#define _mctmp_c (_particle->_mctmp_c) +/* if on GPU, globally nullify sprintf,fprintf,printfs */ +/* (Similar defines are available in each comp trace but */ +/* those are not enough to handle external libs etc. ) */ +#ifdef OPENACC +#define fprintf(stderr,...) printf(__VA_ARGS__) +#define sprintf(string,...) printf(__VA_ARGS__) +#define exit(...) noprintf() +#define strcmp(a,b) str_comp(a,b) +#define strlen(a) str_len(a) +#endif +#define SCATTERED (_particle->_scattered) +#define RESTORE (_particle->_restore) +#define RESTORE_NEUTRON(_index, ...) _particle->_restore = _index; +#define ABSORB0 do { DEBUG_STATE(); DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; return; } while(0) +#define ABSORBED (_particle->_absorbed) +#define mcget_run_num() _particle->_uid +#define ABSORB ABSORB0 +#pragma acc routine +void class_Progress_bar_trace(_class_Progress_bar *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_trace] component Origin=Progress_bar() TRACE [Progress_bar:0]"); + + #ifndef OPENACC + double ncount; + ncount = mcget_run_num (); + if (!StartTime) { + time (&StartTime); /* compute starting time */ + IntermediateCnts = 1e3; + } + time_t NowTime; + time (&NowTime); + /* compute initial estimate of computation duration */ + if (!EndTime && ncount >= IntermediateCnts) { + CurrentTime = NowTime; + if (difftime (NowTime, StartTime) > 10 && ncount) { /* wait 10 sec before writing ETA */ + EndTime = StartTime + (time_t)(difftime (NowTime, StartTime) * (double)mcget_ncount () / ncount); + IntermediateCnts = 0; + MPI_MASTER (fprintf (stdout, "\nTrace ETA "); fprintf (stdout, "%s", infostring); + if (difftime (EndTime, StartTime) < 60.0) fprintf (stdout, "%g [s] ", difftime (EndTime, StartTime)); + else if (difftime (EndTime, StartTime) > 3600.0) fprintf (stdout, "%g [h] ", difftime (EndTime, StartTime) / 3600.0); + else fprintf (stdout, "%g [min] ", difftime (EndTime, StartTime) / 60.0); fprintf (stdout, "\n");); + } else + IntermediateCnts += 1e3; + fflush (stdout); + } + + /* display percentage when percent or minutes have reached step */ + if (EndTime && mcget_ncount () && ((minutes && difftime (NowTime, CurrentTime) > minutes * 60) || (percent && !minutes && ncount >= IntermediateCnts))) { + MPI_MASTER (fprintf (stdout, "%llu %%\n", (unsigned long long)(ncount * 100.0 / mcget_ncount ())); fflush (stdout);); + CurrentTime = NowTime; + + IntermediateCnts = ncount + percent * mcget_ncount () / 100; + /* check that next intermediate ncount check is a multiple of the desired percentage */ + IntermediateCnts = floor (IntermediateCnts * 100 / percent / mcget_ncount ()) * percent * mcget_ncount () / 100; + /* raise flag to indicate that we did something */ + SCATTER; + if (flag_save) + save (NULL); + } + #endif +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return; +} /* class_Progress_bar_trace */ + +#pragma acc routine +void class_ESS_butterfly_trace(_class_ESS_butterfly *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_trace] component Source=ESS_butterfly() TRACE [ESS_butterfly:0]"); + + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + /* Are we using time focusing? */ + if (tfocus_width>0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return; +} /* class_ESS_butterfly_trace */ + +#pragma acc routine +void class_bi_spec_ellipse_trace(_class_bi_spec_ellipse *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_trace] component bi=bi_spec_ellipse() TRACE [bi_spec_ellipse:0]"); + + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return; +} /* class_bi_spec_ellipse_trace */ + +#pragma acc routine +void class_Guide_four_side_trace(_class_Guide_four_side *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_trace] component NBOA_drawing_1_end=Guide_four_side() TRACE [Guide_four_side:0]"); + + + int i; + + PROP_Z0; /* Propagate neutron to guide entrance. */ + /* time variables (INNER walls)*/ + double t1; + double t2w1r; + double t2w1l; + double t2h1u; + double t2h1d; + /* time variables (OUTER walls)*/ + double t2w1rwt; + double t2w1lwt; + double t2h1uwt; + double t2h1dwt; + + /* zcomponent of the intersection point of the neutron trajectory and the ellipse (INNER walls)*/ + double m; + double n; + /* component and length of the surfaces normal vector at the intersection point */ + double nz; + double nx; + double ny; + double n2; + /* prefactor to calculate the velocity vector after the interaction */ + double pf; + /* velocity vector components before the interaction*/ + double vxin; + double vyin; + double vzin; + /* q-vector for the interaction */ + double q; + /* limit variables to determine the interaction position given by the time relative to the guide walls*/ + double xlimitr; + double xlimitrwt; + double xlimitl; + double xlimitlwt; + double ylimitd; + double ylimitdwt; + double ylimitu; + double ylimituwt; + /* interaction position of the neutron given by the interaction time; crosscheck with limit variables*/ + double xtest; + double ytest; + + if (x <= -w1r && x >= -w1rwt && y <= mru1 * x + nru1 && y >= mrd1 * x + nrd1 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT entrance wall and the wall is not transparent*/ + ABSORB; + if (x >= w1l && x <= w1lwt && y <= mlu1 * x + nlu1 && y >= mld1 * x + nld1 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT entrance wall and the wall is not transparent*/ + ABSORB; + if (y <= -h1d && y >= -h1dwt && x <= (y - nld1) / mld1 && x >= (y - nrd1) / mrd1 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM entrance wall and the wall is not transparent*/ + ABSORB; + if (y >= h1u && y <= h1uwt && x <= (y - nlu1) / mlu1 && x >= (y - nru1) / mru1 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP entrance wall and the wall is not transparent*/ + ABSORB; + + do { /* start the propagation loop inside the guide */ + t1 = (l - z) / vz; /* needed time to pass the guide (or rest of the guide without any interaction)*/ + + if (loutwr == 0 && linwr == 0) { + TIME_LINEAR (t1, w1r, w2r, l, x, z, vx, vz, w1rwt, &t2w1r, &t2w1rwt); + } + + if (loutwr != 0 && linwr != 0) { + TIME_ELLIPSE (vx, vz, x, z, a2wr, b2wr, z0wr, t1, a2wrwt, b2wrwt, &t2w1r, &t2w1rwt); + } + + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) { + TIME_PARABEL (vx, vz, x, z, pawr, pbwr, t1, pawrwt, pbwrwt, &t2w1r, &t2w1rwt); + } + + if (loutwl == 0 && linwl == 0) { + TIME_LINEAR_1 (t1, w1l, w2l, l, x, z, vx, vz, w1lwt, &t2w1l, &t2w1lwt); + } + + if (loutwl != 0 && linwl != 0) { + TIME_ELLIPSE_1 (vx, vz, x, z, a2wl, b2wl, z0wl, t1, a2wlwt, b2wlwt, &t2w1l, &t2w1lwt); + } + + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) { + TIME_PARABEL_1 (vx, vz, x, z, pawl, pbwl, t1, pawlwt, pbwlwt, &t2w1l, &t2w1lwt); + } + + if (louthu == 0 && linhu == 0) { + TIME_LINEAR_1 (t1, h1u, h2u, l, y, z, vy, vz, h1uwt, &t2h1u, &t2h1uwt); + } + + if (louthu != 0 && linhu != 0) { + TIME_ELLIPSE_1 (vy, vz, y, z, a2hu, b2hu, z0hu, t1, a2huwt, b2huwt, &t2h1u, &t2h1uwt); + } + + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) { + TIME_PARABEL_1 (vy, vz, y, z, pahu, pbhu, t1, pahuwt, pbhuwt, &t2h1u, &t2h1uwt); + } + + if (louthd == 0 && linhd == 0) { + TIME_LINEAR (t1, h1d, h2d, l, y, z, vy, vz, h1dwt, &t2h1d, &t2h1dwt); + } + + if (louthd != 0 && linhd != 0) { + TIME_ELLIPSE (vy, vz, y, z, a2hd, b2hd, z0hd, t1, a2hdwt, b2hdwt, &t2h1d, &t2h1dwt); + } + + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) { + TIME_PARABEL (vy, vz, y, z, pahd, pbhd, t1, pahdwt, pbhdwt, &t2h1d, &t2h1dwt); + } + + /* TEST OF THE INNER INTERSECTION - TIMES */ + /* possible interactions outside the guide have to be eliminated*/ + + if (t2w1r < t1 + 2.0) { /* test of RIGHT INNER wall interaction time*/ + TEST_UP_DOWN (t2w1r, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1r = t1 + 2.0; + } + } + + if (t2w1l < t1 + 2.0) { /* test of LEFT INNER wall interaction time - analog to right wall*/ + TEST_UP_DOWN (t2w1l, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1l = t1 + 2.0; + } + } + + if (t2h1u < t1 + 2.0) { /* test of TOP INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1u, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1u = t1 + 2.0; + } + } + + if (t2h1d < t1 + 2.0) { /* test of BOTTOM INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1d, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1d = t1 + 2.0; + } + } + + /* TEST OF THE OUTER INTERSECTION - TIMES */ + + if (t2w1rwt < t1 + 2.0) { /* test of RIGHT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1rwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1rwt = t1 + 2.0; + } + } + + if (t2w1lwt < t1 + 2.0) { /* test of LEFT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1lwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1lwt = t1 + 2.0; + } + } + + if (t2h1uwt < t1 + 2.0) { /* test of TOP OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1uwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1uwt = t1 + 2.0; + } + } + + if (t2h1dwt < t1 + 2.0) { /* test of BOTTOM OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1dwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1dwt = t1 + 2.0; + } + } + + /* which wall is hit first? which geometry? */ + + if (t1 < t2w1r && t1 < t2w1l && t1 < t2h1u && t1 < t2h1d && t1 < t2w1rwt && t1 < t2w1lwt && t1 < t2h1uwt && t1 < t2h1dwt) { + i = 1; + } + + /* neutron interacts with the INNER elliptic right wall and this wall is NOT transparent*/ + + if (t2w1r > 0 && t2w1r < t1 && t2w1r < t2w1l && t2w1r < t2h1u && t2w1r < t2h1d && t2w1r < t2w1rwt && t2w1r < t2w1lwt && t2w1r < t2h1uwt && t2w1r < t2h1dwt) { + if (mxr == 0) + i = 18; + else { + if (mxr == -1) + i = 14; + else { + if ((linwr != 0) && (loutwr != 0)) + i = 2; /* the neutron will be reflected*/ + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 3; + else { + if (loutwr == 0 && linwr == 0) + i = 4; + } + } + } + } + } + + /* neutron interacts with the elliptic left INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1l > 0 && t2w1l < t1 && t2w1l < t2w1r && t2w1l < t2h1u && t2w1l < t2h1d && t2w1l < t2w1rwt && t2w1l < t2w1lwt && t2w1l < t2h1uwt && t2w1l < t2h1dwt) { + if (mxl == 0) + i = 19; + else { + if (mxl == -1) + i = 15; + else { + if ((linwl != 0) && (loutwl != 0)) + i = 5; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 6; + else { + if (loutwl == 0 && linwl == 0) + i = 7; + } + } + } + } + } + + /* neutron interacts with the elliptic top INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1u > 0 && t2h1u < t1 && t2h1u < t2w1r && t2h1u < t2w1l && t2h1u < t2h1d && t2h1u < t2w1rwt && t2h1u < t2w1lwt && t2h1u < t2h1uwt && t2h1u < t2h1dwt) { + if (myu == 0) + i = 20; + else { + if (myu == -1) + i = 16; + else { + if (louthu != 0 && linhu != 0) + i = 8; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 9; + else { + if (louthu == 0 && linhu == 0) + i = 10; + } + } + } + } + } + + /* neutron interacts with the elliptic down INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1d > 0 && t2h1d < t1 && t2h1d < t2w1r && t2h1d < t2w1l && t2h1d < t2h1u && t2h1d < t2w1rwt && t2h1d < t2w1lwt && t2h1d < t2h1uwt && t2h1d < t2h1dwt) { + if (myd == 0) + i = 21; + else { + if (myd == -1) + i = 17; + else { + if (louthd != 0 && linhd != 0) + i = 11; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 12; + else { + if (louthd == 0 && linhd == 0) + i = 13; + } + } + } + } + } + + /* EVERTHING AGAIN FOR THE OUTER WALLS */ + + /* neutron interacts with the elliptic right OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1rwt > 0 && t2w1rwt < t1 && t2w1rwt < t2w1r && t2w1rwt < t2w1l && t2w1rwt < t2h1u && t2w1rwt < t2h1d && t2w1rwt < t2w1lwt && t2w1rwt < t2h1uwt + && t2w1rwt < t2h1dwt) { + if (mxrOW == 0) + i = 34; + else { + if (mxrOW == -1) + i = 38; + else { + if (linwr != 0 && loutwr != 0) + i = 22; + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 23; + else { + if (loutwr == 0 && linwr == 0) + i = 24; + } + } + } + } + } + + /* neutron interacts with the elliptic left OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1lwt > 0 && t2w1lwt < t1 && t2w1lwt < t2w1r && t2w1lwt < t2w1l && t2w1lwt < t2h1u && t2w1lwt < t2h1d && t2w1lwt < t2w1rwt && t2w1lwt < t2h1uwt + && t2w1lwt < t2h1dwt) { + if (mxlOW == 0) + i = 35; + else { + if (mxlOW == -1) + i = 39; + else { + if (linwl != 0 && loutwl != 0) + i = 25; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 26; + else { + if (loutwl == 0 && linwl == 0) + i = 27; + } + } + } + } + } + + /* neutron interacts with the elliptic top OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1uwt > 0 && t2h1uwt < t1 && t2h1uwt < t2w1r && t2h1uwt < t2w1l && t2h1uwt < t2h1u && t2h1uwt < t2h1d && t2h1uwt < t2w1rwt && t2h1uwt < t2w1lwt + && t2h1uwt < t2h1dwt) { + if (myuOW == 0) + i = 36; + else { + if (myuOW == -1) + i = 40; + else { + if (louthu != 0 && linhu != 0) + i = 28; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 29; + else { + if (louthu == 0 && linhu == 0) + i = 30; + } + } + } + } + } + + /* neutron interacts with the elliptic down OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1dwt > 0 && t2h1dwt < t1 && t2h1dwt < t2w1r && t2h1dwt < t2w1l && t2h1dwt < t2h1u && t2h1dwt < t2h1d && t2h1dwt < t2w1rwt && t2h1dwt < t2w1lwt + && t2h1dwt < t2h1uwt) { + if (mydOW == 0) + i = 37; + else { + if (mydOW == -1) + i = 41; + else { + if (louthd != 0 && linhd != 0) + i = 31; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 32; + else { + if (louthd == 0 && linhd == 0) + i = 33; + } + } + } + } + } + + switch (i) { /* the principal for the calculation is in every case the same: 1.) one needs the surface normal vector at the intersection point. 2.) + calculation of the velocity vector after the interaction by */ + /* vector subrtation (the basic idea and explanations can be found in the 'Mcstas component manual' in the section 'straight guide') */ + + case 1: /* no interaction, propagation to the end of the guide */ + PROP_DT (t1); + break; + + case 2: + PROP_DT (t2w1r); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = -x; /* surface normal vector components at the intersection point */ + nz = -x * x / ((a2wr / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 3: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawr; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 4: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = w2r - w1r; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 5: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -x * x / ((a2wl / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + SCATTER; + break; + + case 6: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawl; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 7: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = w2l - w1l; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 8: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hu / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 9: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahu; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 10: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = h2u - h1u; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 11: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hd / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 12: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahd; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 13: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = h2d - h1d; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 14: /* transperent walls - no interaction */ + PROP_DT (t2w1r); + break; + + case 15: + PROP_DT (t2w1l); + break; + + case 16: + PROP_DT (t2h1u); + break; + + case 17: + PROP_DT (t2h1d); + break; + + case 18: /* absorbing walls - neutrons are absorbed at interaction point*/ + PROP_DT (t2w1r); + ABSORB; + break; + + case 19: + PROP_DT (t2w1l); + ABSORB; + break; + + case 20: + PROP_DT (t2h1u); + ABSORB; + break; + + case 21: + PROP_DT (t2h1d); + ABSORB; + break; + + /* OUTER WALLS - analog to inner walls, but sign of surface normal vector is changed */ + + case 22: + PROP_DT (t2w1rwt); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = x; /* surface normal vector components at the intersection point */ + nz = x * x / ((a2wrwt / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 23: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawrwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 24: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = -(w2r - w1r); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 25: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = x * x / ((a2wlwt / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 26: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawlwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 27: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = -(w2l - w1l); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 28: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2huwt / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 29: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahuwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 30: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = -(h2u - h1u); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 31: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2hdwt / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 32: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahdwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 33: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = -(h2d - h1d); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 34: + PROP_DT (t2w1rwt); + ABSORB; + break; + + case 35: + PROP_DT (t2w1lwt); + ABSORB; + break; + + case 36: + PROP_DT (t2h1uwt); + ABSORB; + break; + + case 37: + PROP_DT (t2h1dwt); + ABSORB; + break; + + case 38: + PROP_DT (t2w1rwt); + break; + + case 39: + PROP_DT (t2w1lwt); + break; + + case 40: + PROP_DT (t2h1uwt); + break; + + case 41: + PROP_DT (t2h1dwt); + break; + } + + if (((i == 2) || (i == 3) || (i == 4))) { /* calculating the the probability that the neutron is reflected at the RIGHT INNER wall*/ + if (RIreflect && strlen (RIreflect)) { + p = Table_Value (riTable, q, 1); + } else { + if (mxr > 0 && q > Qcxr) { + double arg = (q - mxr * Qcxr) / Wxr; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxr * (q - Qcxr)); + } else + ABSORB; + } + } + } + + if (((i == 22) || (i == 23) || (i == 24))) { /* calculating the the probability that the neutron is reflected at the RIGHT OUTER wall*/ + if (ROreflect && strlen (ROreflect)) { + p = Table_Value (roTable, q, 1); + } else { + if (mxrOW > 0 && q > QcxrOW) { + double arg = (q - mxrOW * QcxrOW) / WxrOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxrOW * (q - QcxrOW)); + } else + ABSORB; + } + } + } + + if (((i == 5) || (i == 6) || (i == 7))) { /* calculating the the probability that the neutron is reflected at the LEFT INNER wall*/ + if (LIreflect && strlen (LIreflect)) { + p = Table_Value (liTable, q, 1); + } else { + if (mxl > 0 && q > Qcxl) { + double arg = (q - mxl * Qcxl) / Wxl; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxl * (q - Qcxl)); + } else + ABSORB; + } + } + } + + if (((i == 25) || (i == 26) || (i == 27))) { /* calculating the the probability that the neutron is reflected at the LEFT OUTER wall*/ + if (LOreflect && strlen (LOreflect)) { + p = Table_Value (loTable, q, 1); + } else { + if (mxlOW > 0 && q > QcxlOW) { + double arg = (q - mxlOW * QcxlOW) / WxlOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxlOW * (q - QcxlOW)); + } else + ABSORB; + } + } + } + + if (((i == 8) || (i == 9) || (i == 10))) { /* calculating the the probability that the neutron is reflected at the TOP INNER wall*/ + if (UIreflect && strlen (UIreflect)) { + p = Table_Value (uiTable, q, 1); + } else { + if (myu > 0 && q > Qcyu) { + double arg = (q - myu * Qcyu) / Wyu; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayu * (q - Qcyu)); + } else + ABSORB; + } + } + } + + if (((i == 28) || (i == 29) || (i == 30))) { /* calculating the the probability that the neutron is reflected at the TOP OUTER wall*/ + if (UOreflect && strlen (UOreflect)) { + p = Table_Value (uoTable, q, 1); + } else { + if (myuOW > 0 && q > QcyuOW) { + double arg = (q - myuOW * QcyuOW) / WyuOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayuOW * (q - QcyuOW)); + } else + ABSORB; + } + } + } + + if (((i == 11) || (i == 12) || (i == 13))) { /* calculating the the probability that the neutron is reflected at the BOTTOM INNER wall*/ + if (DIreflect && strlen (DIreflect)) { + p = Table_Value (diTable, q, 1); + } else { + if (myd > 0 && q > Qcyd) { + double arg = (q - myd * Qcyd) / Wyd; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayd * (q - Qcyd)); + } else + ABSORB; + } + } + } + + if (((i == 31) || (i == 32) || (i == 33))) { /* calculating the the probability that the neutron is reflected at the BOTTOM OUTER wall*/ + if (DOreflect && strlen (DOreflect)) { + p = Table_Value (doTable, q, 1); + } else { + if (mydOW > 0 && q > QcydOW) { + double arg = (q - mydOW * QcydOW) / WydOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaydOW * (q - QcydOW)); + } else + ABSORB; + } + } + } + + p *= R0; + SCATTER; + + } while (z < l); /* repeat the interaction loop untill the neutron pass the end of guide */ + + if (x <= -w2r && x >= -w2rwt && y <= mru2 * x + nru2 && y >= mrd2 * x + nrd2 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT exit wall and the wall is not transparent*/ + ABSORB; + if (x >= w2l && x <= w2lwt && y <= mlu2 * x + nlu2 && y >= mld2 * x + nld2 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT exit wall and the wall is not transparent*/ + ABSORB; + if (y <= -h2d && y >= -h2dwt && x <= (y - nld2) / mld2 && x >= (y - nrd2) / mrd2 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM exit wall and the wall is not transparent*/ + ABSORB; + if (y >= h2u && y <= h2uwt && x <= (y - nlu2) / mlu2 && x >= (y - nru2) / mru2 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP exit wall and the wall is not transparent*/ + ABSORB; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return; +} /* class_Guide_four_side_trace */ + +#pragma acc routine +void class_MultiDiskChopper_trace(_class_MultiDiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_trace] component wfmc_1=MultiDiskChopper() TRACE [MultiDiskChopper:0]"); + + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + while (islit < nslits && !SCATTERED) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + SCATTER; + + islit++; + } + if (!SCATTERED) + ABSORB; + } + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return; +} /* class_MultiDiskChopper_trace */ + +#pragma acc routine +void class_Slit_trace(_class_Slit *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_trace] component pinhole_1=Slit() TRACE [Slit:0]"); + + PROP_Z0; + if (!isradial ? (x < xmin || x > xmax || y < ymin || y > ymax) : (x * x + y * y > radius * radius)) + ABSORB; + else + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return; +} /* class_Slit_trace */ + +#pragma acc routine +void class_DiskChopper_trace(_class_DiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_trace] component bp1_chopper=DiskChopper() TRACE [DiskChopper:0]"); + + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + toff = fabs (t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + ABSORB; + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return; +} /* class_DiskChopper_trace */ + +#pragma acc routine +void class_Graphite_Diffuser_trace(_class_Graphite_Diffuser *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_trace] component graph=Graphite_Diffuser() TRACE [Graphite_Diffuser:0]"); + + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || y_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return; +} /* class_Graphite_Diffuser_trace */ + +#pragma acc routine +void class_Monitor_nD_trace(_class_Monitor_nD *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_trace] component sample_PSD=Monitor_nD() TRACE [Monitor_nD:0]"); + + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return; +} /* class_Monitor_nD_trace */ + +#define t_offset (_particle->t_offset) +#define p_trains (_particle->p_trains) +#define alive_trains (_particle->alive_trains) +/* ***************************************************************************** +* instrument 'ODIN_baseline' TRACE +***************************************************************************** */ + +#ifndef FUNNEL +#pragma acc routine +int raytrace(_class_particle* _particle) { /* single event propagation, called by mccode_main for ODIN_baseline:TRACE */ + + /* init variables and counters for TRACE */ + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++;} while(0) + #define ABSORB ABSORB0 + DEBUG_ENTER(); + DEBUG_STATE(); + _particle->flag_nocoordschange=0; /* Init */ + _class_particle _particle_save=*_particle; + /* the main iteration loop for one incoming event */ + while (!ABSORBED) { /* iterate event until absorbed */ + /* send particle event to component instance, one after the other */ + /* begin component Origin=Progress_bar() [1] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Origin_var._rotation_is_identity) { + if(!_Origin_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 1) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Origin_var._name); + DEBUG_STATE(); + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Origin [1] */ + /* begin component optical_axis=Arm() [2] */ + if (!ABSORBED && _particle->_index == 2) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis [2] */ + /* begin component Source=ESS_butterfly() [3] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Source_var._rotation_is_identity) { + if(!_Source_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 3) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Source_var._name); + DEBUG_STATE(); + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Source [3] */ + /* begin component Start_of_bi=Arm() [4] */ + if (!ABSORBED && _particle->_index == 4) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component Start_of_bi [4] */ + /* begin component bi=bi_spec_ellipse() [5] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bi_var._rotation_is_identity) { + if(!_bi_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 5) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bi_var._name); + DEBUG_STATE(); + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bi [5] */ + /* begin component End_of_bi=Arm() [6] */ + if (!ABSORBED && _particle->_index == 6) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component End_of_bi [6] */ + /* begin component NBOA_drawing_1_end=Guide_four_side() [7] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_NBOA_drawing_1_end_var._rotation_is_identity) { + if(!_NBOA_drawing_1_end_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 7) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_NBOA_drawing_1_end_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component NBOA_drawing_1_end [7] */ + /* begin component g1a2=Guide_four_side() [8] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a2_var._rotation_is_identity) { + if(!_g1a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 8) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a2 [8] */ + /* begin component g1a3=Guide_four_side() [9] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a3_var._rotation_is_identity) { + if(!_g1a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 9) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a3 [9] */ + /* begin component g1b1=Guide_four_side() [10] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1b1_var._rotation_is_identity) { + if(!_g1b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 10) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1b1 [10] */ + /* begin component g1c1=Guide_four_side() [11] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1c1_var._rotation_is_identity) { + if(!_g1c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 11) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1c1 [11] */ + /* begin component wfm_position=Arm() [12] */ + if (!ABSORBED && _particle->_index == 12) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_position [12] */ + /* begin component wfm_1_position=Arm() [13] */ + if (!ABSORBED && _particle->_index == 13) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_1_position [13] */ + /* begin component wfmc_1=MultiDiskChopper() [14] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_1_var._rotation_is_identity) { + if(!_wfmc_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 14) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_1 [14] */ + /* begin component pinhole_1=Slit() [15] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_1_var._rotation_is_identity) { + if(!_pinhole_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 15) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_1_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_1 [15] */ + /* begin component wfm_2_position=Arm() [16] */ + if (!ABSORBED && _particle->_index == 16) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_2_position [16] */ + /* begin component wfmc_2=MultiDiskChopper() [17] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_2_var._rotation_is_identity) { + if(!_wfmc_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 17) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_2 [17] */ + /* begin component g2a1=Guide_four_side() [18] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a1_var._rotation_is_identity) { + if(!_g2a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 18) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a1 [18] */ + /* begin component monitor_1_position=Arm() [19] */ + if (!ABSORBED && _particle->_index == 19) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_1_position [19] */ + /* begin component g2a2=Guide_four_side() [20] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a2_var._rotation_is_identity) { + if(!_g2a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 20) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a2 [20] */ + /* begin component fo1_position=Arm() [21] */ + if (!ABSORBED && _particle->_index == 21) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo1_position [21] */ + /* begin component fo_chopper_1=MultiDiskChopper() [22] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_1_var._rotation_is_identity) { + if(!_fo_chopper_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 22) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_1 [22] */ + /* begin component bp1_position=Arm() [23] */ + if (!ABSORBED && _particle->_index == 23) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp1_position [23] */ + /* begin component bp1_chopper=DiskChopper() [24] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp1_chopper_var._rotation_is_identity) { + if(!_bp1_chopper_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 24) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp1_chopper_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp1_chopper [24] */ + /* begin component g2b1=Guide_four_side() [25] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b1_var._rotation_is_identity) { + if(!_g2b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 25) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b1 [25] */ + /* begin component g2b2=Guide_four_side() [26] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b2_var._rotation_is_identity) { + if(!_g2b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 26) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b2 [26] */ + /* begin component g2b3=Guide_four_side() [27] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b3_var._rotation_is_identity) { + if(!_g2b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 27) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b3 [27] */ + /* begin component g2b4=Guide_four_side() [28] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b4_var._rotation_is_identity) { + if(!_g2b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 28) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b4 [28] */ + /* begin component fo2_position=Arm() [29] */ + if (!ABSORBED && _particle->_index == 29) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo2_position [29] */ + /* begin component fo_chopper_2=MultiDiskChopper() [30] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_2_var._rotation_is_identity) { + if(!_fo_chopper_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 30) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_2 [30] */ + /* begin component bp2_position=Arm() [31] */ + if (!ABSORBED && _particle->_index == 31) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp2_position [31] */ + /* begin component bp_chopper2=DiskChopper() [32] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp_chopper2_var._rotation_is_identity) { + if(!_bp_chopper2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 32) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp_chopper2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp_chopper2 [32] */ + /* begin component g2c1=Guide_four_side() [33] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2c1_var._rotation_is_identity) { + if(!_g2c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 33) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2c1 [33] */ + /* begin component t0_start_position=Arm() [34] */ + if (!ABSORBED && _particle->_index == 34) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_start_position [34] */ + /* begin component t0_chopper_alpha=DiskChopper() [35] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_alpha_var._rotation_is_identity) { + if(!_t0_chopper_alpha_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 35) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_alpha_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_alpha [35] */ + /* begin component t0_end_position=Arm() [36] */ + if (!ABSORBED && _particle->_index == 36) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_end_position [36] */ + /* begin component t0_chopper_beta=DiskChopper() [37] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_beta_var._rotation_is_identity) { + if(!_t0_chopper_beta_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 37) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_beta_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_beta [37] */ + /* begin component g3a1=Guide_four_side() [38] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a1_var._rotation_is_identity) { + if(!_g3a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 38) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a1 [38] */ + /* begin component g3a2=Guide_four_side() [39] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a2_var._rotation_is_identity) { + if(!_g3a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 39) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a2 [39] */ + /* begin component fo3_position=Arm() [40] */ + if (!ABSORBED && _particle->_index == 40) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo3_position [40] */ + /* begin component fo_chopper_3=MultiDiskChopper() [41] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_3_var._rotation_is_identity) { + if(!_fo_chopper_3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 41) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_3_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_3 [41] */ + /* begin component g3b1=Guide_four_side() [42] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3b1_var._rotation_is_identity) { + if(!_g3b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 42) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3b1 [42] */ + /* begin component g4a1=Guide_four_side() [43] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a1_var._rotation_is_identity) { + if(!_g4a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 43) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a1 [43] */ + /* begin component monitor_2_position=Arm() [44] */ + if (!ABSORBED && _particle->_index == 44) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_2_position [44] */ + /* begin component g4a2=Guide_four_side() [45] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a2_var._rotation_is_identity) { + if(!_g4a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 45) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a2 [45] */ + /* begin component g4a3=Guide_four_side() [46] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a3_var._rotation_is_identity) { + if(!_g4a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 46) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a3 [46] */ + /* begin component fo4_position=Arm() [47] */ + if (!ABSORBED && _particle->_index == 47) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo4_position [47] */ + /* begin component fo_chopper_4=MultiDiskChopper() [48] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_4_var._rotation_is_identity) { + if(!_fo_chopper_4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 48) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_4_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_4 [48] */ + /* begin component g4b1=Guide_four_side() [49] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b1_var._rotation_is_identity) { + if(!_g4b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 49) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b1 [49] */ + /* begin component g4b2=Guide_four_side() [50] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b2_var._rotation_is_identity) { + if(!_g4b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 50) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b2 [50] */ + /* begin component g4b3=Guide_four_side() [51] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b3_var._rotation_is_identity) { + if(!_g4b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 51) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b3 [51] */ + /* begin component g4b4=Guide_four_side() [52] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b4_var._rotation_is_identity) { + if(!_g4b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 52) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b4 [52] */ + /* begin component g4b5=Guide_four_side() [53] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b5_var._rotation_is_identity) { + if(!_g4b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 53) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b5 [53] */ + /* begin component g4b6=Guide_four_side() [54] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b6_var._rotation_is_identity) { + if(!_g4b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 54) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b6 [54] */ + /* begin component g5a1=Guide_four_side() [55] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5a1_var._rotation_is_identity) { + if(!_g5a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 55) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5a1 [55] */ + /* begin component fo5_position=Arm() [56] */ + if (!ABSORBED && _particle->_index == 56) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo5_position [56] */ + /* begin component fo_chopper_5=MultiDiskChopper() [57] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_5_var._rotation_is_identity) { + if(!_fo_chopper_5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 57) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_5_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_5 [57] */ + /* begin component g5b1=Guide_four_side() [58] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b1_var._rotation_is_identity) { + if(!_g5b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 58) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b1 [58] */ + /* begin component g5b2=Guide_four_side() [59] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b2_var._rotation_is_identity) { + if(!_g5b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 59) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b2 [59] */ + /* begin component g5b3=Guide_four_side() [60] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b3_var._rotation_is_identity) { + if(!_g5b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 60) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b3 [60] */ + /* begin component g5b4=Guide_four_side() [61] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b4_var._rotation_is_identity) { + if(!_g5b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 61) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b4 [61] */ + /* begin component g5b5=Guide_four_side() [62] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b5_var._rotation_is_identity) { + if(!_g5b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 62) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b5 [62] */ + /* begin component g5b6=Guide_four_side() [63] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b6_var._rotation_is_identity) { + if(!_g5b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 63) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b6 [63] */ + /* begin component g6a1=Guide_four_side() [64] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a1_var._rotation_is_identity) { + if(!_g6a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 64) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a1 [64] */ + /* begin component g6a2=Guide_four_side() [65] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a2_var._rotation_is_identity) { + if(!_g6a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 65) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a2 [65] */ + /* begin component g6a3=Guide_four_side() [66] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a3_var._rotation_is_identity) { + if(!_g6a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 66) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a3 [66] */ + /* begin component guide_end=Arm() [67] */ + if (!ABSORBED && _particle->_index == 67) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component guide_end [67] */ + /* begin component monitor_3_position=Arm() [68] */ + if (!ABSORBED && _particle->_index == 68) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_3_position [68] */ + /* begin component start_backend=Arm() [69] */ + if (!ABSORBED && _particle->_index == 69) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component start_backend [69] */ + /* begin component optical_axis_backend=Arm() [70] */ + if (!ABSORBED && _particle->_index == 70) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis_backend [70] */ + /* begin component pinhole_2=Slit() [71] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_2_var._rotation_is_identity) { + if(!_pinhole_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 71) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_2_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_2 [71] */ + /* begin component graph=Graphite_Diffuser() [72] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_graph_var._rotation_is_identity) { + if(!_graph_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 72) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_graph_var._name); + DEBUG_STATE(); + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component graph [72] */ + /* begin component sample_monitor_arm=Arm() [73] */ + if (!ABSORBED && _particle->_index == 73) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_monitor_arm [73] */ + /* begin component sample_PSD=Monitor_nD() [74] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_sample_PSD_var._rotation_is_identity) { + if(!_sample_PSD_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 74) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_sample_PSD_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component sample_PSD [74] */ + /* begin component profile_x=Monitor_nD() [75] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_x_var._rotation_is_identity) { + if(!_profile_x_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 75) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_x_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_x [75] */ + /* begin component profile_y=Monitor_nD() [76] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_y_var._rotation_is_identity) { + if(!_profile_y_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 76) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_y_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_y [76] */ + /* begin component wavelength=Monitor_nD() [77] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_var._rotation_is_identity) { + if(!_wavelength_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 77) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength [77] */ + /* begin component tof=Monitor_nD() [78] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_tof_var._rotation_is_identity) { + if(!_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 78) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component tof [78] */ + /* begin component wavelength_tof=Monitor_nD() [79] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_tof_var._rotation_is_identity) { + if(!_wavelength_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 79) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength_tof [79] */ + /* begin component sample_position=Arm() [80] */ + if (!ABSORBED && _particle->_index == 80) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_position [80] */ + if (_particle->_index > 80) + ABSORBED++; /* absorbed when passed all components */ + } /* while !ABSORBED */ + + DEBUG_LEAVE() + particle_restore(_particle, &_particle_save); + DEBUG_STATE() + + return(_particle->_index); +} /* raytrace */ + +/* loop to generate events and call raytrace() propagate them */ +void raytrace_all(unsigned long long ncount, unsigned long seed) { + + /* CPU-loop */ + unsigned long long loops; + loops = ceil((double)ncount/gpu_innerloop); + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #ifdef OPENACC + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around GPU kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + #endif + + /* if on GPU, re-nullify printf */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #pragma acc parallel loop num_gangs(numgangs) vector_length(vecsize) + for (unsigned long pidx=0 ; pidx < gpu_innerloop ; pidx++) { + _class_particle particleN = mcgenstate(); // initial particle + _class_particle* _particle = &particleN; + particleN._uid = pidx; + #ifdef USE_MPI + particleN._uid += mpi_node_rank * ncount; + #endif + + srandom(_hash((pidx+1)*(seed+1))); + + raytrace(_particle); + } /* inner for */ + seed = seed+gpu_innerloop; + } /* CPU for */ + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + MPI_MASTER( + printf("*** TRACE end *** \n"); + ); +} /* raytrace_all */ + +#endif //no-FUNNEL + +#ifdef FUNNEL +// Alternative raytrace algorithm which iterates all particles through +// one component at the time, can remove absorbs from the next loop and +// switch between cpu/gpu. +void raytrace_all_funnel(unsigned long long ncount, unsigned long seed) { + + // set up outer (CPU) loop / particle batches + unsigned long long loops; + + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + #ifdef OPENACC + loops = ceil((double)ncount/gpu_innerloop); + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + // create particles struct and pointer arrays (same memory used by all batches) + _class_particle* particles = malloc(gpu_innerloop*sizeof(_class_particle)); + _class_particle* pbuffer = malloc(gpu_innerloop*sizeof(_class_particle)); + long livebatchsize = gpu_innerloop; + + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; } while(0) + #define ABSORB ABSORB0 + // outer loop / particle batches + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + + // init particles + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + // generate particle state, set loop index and seed + particles[pidx] = mcgenstate(); + _class_particle* _particle = particles + pidx; + _particle->_uid = pidx; + #ifdef USE_MPI + _particle->_uid += mpi_node_rank * ncount; + #endif + srandom(_hash((pidx+1)*(seed+1))); // _particle->state usage built into srandom macro + } + + // iterate components + + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + _class_particle* _particle = &particles[pidx]; + _class_particle _particle_save; + + // Origin + if (!ABSORBED && _particle->_index == 1) { +#ifndef MULTICORE + if (_Origin_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // optical_axis + if (!ABSORBED && _particle->_index == 2) { + _particle->_index++; + } + + // Source + if (!ABSORBED && _particle->_index == 3) { +#ifndef MULTICORE + if (_Source_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + _particle_save = *_particle; + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Start_of_bi + if (!ABSORBED && _particle->_index == 4) { + _particle->_index++; + } + + // bi + if (!ABSORBED && _particle->_index == 5) { +#ifndef MULTICORE + if (_bi_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + _particle_save = *_particle; + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // End_of_bi + if (!ABSORBED && _particle->_index == 6) { + _particle->_index++; + } + + // NBOA_drawing_1_end + if (!ABSORBED && _particle->_index == 7) { +#ifndef MULTICORE + if (_NBOA_drawing_1_end_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a2 + if (!ABSORBED && _particle->_index == 8) { +#ifndef MULTICORE + if (_g1a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a3 + if (!ABSORBED && _particle->_index == 9) { +#ifndef MULTICORE + if (_g1a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1b1 + if (!ABSORBED && _particle->_index == 10) { +#ifndef MULTICORE + if (_g1b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1c1 + if (!ABSORBED && _particle->_index == 11) { +#ifndef MULTICORE + if (_g1c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_position + if (!ABSORBED && _particle->_index == 12) { + _particle->_index++; + } + + // wfm_1_position + if (!ABSORBED && _particle->_index == 13) { + _particle->_index++; + } + + // wfmc_1 + if (!ABSORBED && _particle->_index == 14) { +#ifndef MULTICORE + if (_wfmc_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // pinhole_1 + if (!ABSORBED && _particle->_index == 15) { +#ifndef MULTICORE + if (_pinhole_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_2_position + if (!ABSORBED && _particle->_index == 16) { + _particle->_index++; + } + + // wfmc_2 + if (!ABSORBED && _particle->_index == 17) { +#ifndef MULTICORE + if (_wfmc_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2a1 + if (!ABSORBED && _particle->_index == 18) { +#ifndef MULTICORE + if (_g2a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_1_position + if (!ABSORBED && _particle->_index == 19) { + _particle->_index++; + } + + // g2a2 + if (!ABSORBED && _particle->_index == 20) { +#ifndef MULTICORE + if (_g2a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo1_position + if (!ABSORBED && _particle->_index == 21) { + _particle->_index++; + } + + // fo_chopper_1 + if (!ABSORBED && _particle->_index == 22) { +#ifndef MULTICORE + if (_fo_chopper_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp1_position + if (!ABSORBED && _particle->_index == 23) { + _particle->_index++; + } + + // bp1_chopper + if (!ABSORBED && _particle->_index == 24) { +#ifndef MULTICORE + if (_bp1_chopper_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b1 + if (!ABSORBED && _particle->_index == 25) { +#ifndef MULTICORE + if (_g2b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b2 + if (!ABSORBED && _particle->_index == 26) { +#ifndef MULTICORE + if (_g2b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b3 + if (!ABSORBED && _particle->_index == 27) { +#ifndef MULTICORE + if (_g2b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b4 + if (!ABSORBED && _particle->_index == 28) { +#ifndef MULTICORE + if (_g2b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo2_position + if (!ABSORBED && _particle->_index == 29) { + _particle->_index++; + } + + // fo_chopper_2 + if (!ABSORBED && _particle->_index == 30) { +#ifndef MULTICORE + if (_fo_chopper_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp2_position + if (!ABSORBED && _particle->_index == 31) { + _particle->_index++; + } + + // bp_chopper2 + if (!ABSORBED && _particle->_index == 32) { +#ifndef MULTICORE + if (_bp_chopper2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2c1 + if (!ABSORBED && _particle->_index == 33) { +#ifndef MULTICORE + if (_g2c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_start_position + if (!ABSORBED && _particle->_index == 34) { + _particle->_index++; + } + + // t0_chopper_alpha + if (!ABSORBED && _particle->_index == 35) { +#ifndef MULTICORE + if (_t0_chopper_alpha_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_end_position + if (!ABSORBED && _particle->_index == 36) { + _particle->_index++; + } + + // t0_chopper_beta + if (!ABSORBED && _particle->_index == 37) { +#ifndef MULTICORE + if (_t0_chopper_beta_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a1 + if (!ABSORBED && _particle->_index == 38) { +#ifndef MULTICORE + if (_g3a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a2 + if (!ABSORBED && _particle->_index == 39) { +#ifndef MULTICORE + if (_g3a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo3_position + if (!ABSORBED && _particle->_index == 40) { + _particle->_index++; + } + + // fo_chopper_3 + if (!ABSORBED && _particle->_index == 41) { +#ifndef MULTICORE + if (_fo_chopper_3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3b1 + if (!ABSORBED && _particle->_index == 42) { +#ifndef MULTICORE + if (_g3b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a1 + if (!ABSORBED && _particle->_index == 43) { +#ifndef MULTICORE + if (_g4a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_2_position + if (!ABSORBED && _particle->_index == 44) { + _particle->_index++; + } + + // g4a2 + if (!ABSORBED && _particle->_index == 45) { +#ifndef MULTICORE + if (_g4a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a3 + if (!ABSORBED && _particle->_index == 46) { +#ifndef MULTICORE + if (_g4a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo4_position + if (!ABSORBED && _particle->_index == 47) { + _particle->_index++; + } + + // fo_chopper_4 + if (!ABSORBED && _particle->_index == 48) { +#ifndef MULTICORE + if (_fo_chopper_4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b1 + if (!ABSORBED && _particle->_index == 49) { +#ifndef MULTICORE + if (_g4b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b2 + if (!ABSORBED && _particle->_index == 50) { +#ifndef MULTICORE + if (_g4b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b3 + if (!ABSORBED && _particle->_index == 51) { +#ifndef MULTICORE + if (_g4b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b4 + if (!ABSORBED && _particle->_index == 52) { +#ifndef MULTICORE + if (_g4b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b5 + if (!ABSORBED && _particle->_index == 53) { +#ifndef MULTICORE + if (_g4b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b6 + if (!ABSORBED && _particle->_index == 54) { +#ifndef MULTICORE + if (_g4b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5a1 + if (!ABSORBED && _particle->_index == 55) { +#ifndef MULTICORE + if (_g5a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo5_position + if (!ABSORBED && _particle->_index == 56) { + _particle->_index++; + } + + // fo_chopper_5 + if (!ABSORBED && _particle->_index == 57) { +#ifndef MULTICORE + if (_fo_chopper_5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b1 + if (!ABSORBED && _particle->_index == 58) { +#ifndef MULTICORE + if (_g5b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b2 + if (!ABSORBED && _particle->_index == 59) { +#ifndef MULTICORE + if (_g5b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b3 + if (!ABSORBED && _particle->_index == 60) { +#ifndef MULTICORE + if (_g5b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b4 + if (!ABSORBED && _particle->_index == 61) { +#ifndef MULTICORE + if (_g5b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b5 + if (!ABSORBED && _particle->_index == 62) { +#ifndef MULTICORE + if (_g5b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b6 + if (!ABSORBED && _particle->_index == 63) { +#ifndef MULTICORE + if (_g5b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a1 + if (!ABSORBED && _particle->_index == 64) { +#ifndef MULTICORE + if (_g6a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a2 + if (!ABSORBED && _particle->_index == 65) { +#ifndef MULTICORE + if (_g6a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a3 + if (!ABSORBED && _particle->_index == 66) { +#ifndef MULTICORE + if (_g6a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // guide_end + if (!ABSORBED && _particle->_index == 67) { + _particle->_index++; + } + + // monitor_3_position + if (!ABSORBED && _particle->_index == 68) { + _particle->_index++; + } + + // start_backend + if (!ABSORBED && _particle->_index == 69) { + _particle->_index++; + } + + // optical_axis_backend + if (!ABSORBED && _particle->_index == 70) { + _particle->_index++; + } + + // pinhole_2 + if (!ABSORBED && _particle->_index == 71) { +#ifndef MULTICORE + if (_pinhole_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // graph + if (!ABSORBED && _particle->_index == 72) { +#ifndef MULTICORE + if (_graph_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_monitor_arm + if (!ABSORBED && _particle->_index == 73) { + _particle->_index++; + } + + // sample_PSD + if (!ABSORBED && _particle->_index == 74) { +#ifndef MULTICORE + if (_sample_PSD_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_x + if (!ABSORBED && _particle->_index == 75) { +#ifndef MULTICORE + if (_profile_x_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_y + if (!ABSORBED && _particle->_index == 76) { +#ifndef MULTICORE + if (_profile_y_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength + if (!ABSORBED && _particle->_index == 77) { +#ifndef MULTICORE + if (_wavelength_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // tof + if (!ABSORBED && _particle->_index == 78) { +#ifndef MULTICORE + if (_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength_tof + if (!ABSORBED && _particle->_index == 79) { +#ifndef MULTICORE + if (_wavelength_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_position + if (!ABSORBED && _particle->_index == 80) { + _particle->_index++; + } + + } + + // jump to next viable seed + seed = seed + gpu_innerloop; + } // outer loop / particle batches + + free(particles); + free(pbuffer); + + printf("\n"); +} /* raytrace_all_funnel */ +#endif // FUNNEL + +#undef t_offset +#undef p_trains +#undef alive_trains +#undef x +#undef y +#undef z +#undef vx +#undef vy +#undef vz +#undef t +#undef sx +#undef sy +#undef sz +#undef p +#undef mcgravitation +#undef mcMagnet +#undef allow_backprop +#undef _mctmp_a +#undef _mctmp_b +#undef _mctmp_c +#ifdef OPENACC +#undef strlen +#undef strcmp +#undef exit +#undef printf +#undef sprintf +#undef fprintf +#endif +#undef SCATTERED +#undef RESTORE +#undef RESTORE_NEUTRON +#undef STORE_NEUTRON +#undef ABSORBED +#undef ABSORB +#undef ABSORB0 +/* ***************************************************************************** +* instrument 'ODIN_baseline' and components SAVE +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_save(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_save] component Origin=Progress_bar() SAVE [Progress_bar:0]"); + + MPI_MASTER (fprintf (stdout, "\nSave [%s]\n", instrument_name);); + if (profile && strlen (profile) && strcmp (profile, "NULL") && strcmp (profile, "0")) { + char filename[256]; + if (!strlen (profile) || !strcmp (profile, "NULL") || !strcmp (profile, "0")) + strcpy (filename, instrument_name); + else + strcpy (filename, profile); + DETECTOR_OUT_1D ("Intensity profiler", "Component index [1]", "Intensity", "prof", 1, mcNUMCOMP, mcNUMCOMP - 1, &(instrument->counter_N[1]), + &(instrument->counter_P[1]), &(instrument->counter_P2[1]), filename); + } + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_save */ + +_class_Monitor_nD *class_Monitor_nD_save(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_save] component sample_PSD=Monitor_nD() SAVE [Monitor_nD:0]"); + + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_save */ + + + +int save(FILE *handle) { /* called by mccode_main for ODIN_baseline:SAVE */ + if (!handle) siminfo_init(NULL); + + /* Instrument 'ODIN_baseline' SAVE */ + SIG_MESSAGE("[ODIN_baseline] SAVE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) +{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + /* call iteratively all components SAVE */ + class_Progress_bar_save(&_Origin_var); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + class_Monitor_nD_save(&_sample_PSD_var); + + class_Monitor_nD_save(&_profile_x_var); + + class_Monitor_nD_save(&_profile_y_var); + + class_Monitor_nD_save(&_wavelength_var); + + class_Monitor_nD_save(&_tof_var); + + class_Monitor_nD_save(&_wavelength_tof_var); + + + if (!handle) siminfo_close(); + + return(0); +} /* save */ + +/* ***************************************************************************** +* instrument 'ODIN_baseline' and components FINALLY +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_finally(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_finally] component Origin=Progress_bar() FINALLY [Progress_bar:0]"); + + time_t NowTime; + time (&NowTime); + fprintf (stdout, "\nFinally [%s: %s]. Time: ", instrument_name, dirname ? dirname : "."); + if (difftime (NowTime, StartTime) < 60.0) + fprintf (stdout, "%g [s] ", difftime (NowTime, StartTime)); + else if (difftime (NowTime, StartTime) > 3600.0) + fprintf (stdout, "%g [h] ", difftime (NowTime, StartTime) / 3600.0); + else + fprintf (stdout, "%g [min] ", difftime (NowTime, StartTime) / 60.0); + fprintf (stdout, "\n"); + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_finally */ + +_class_Guide_four_side *class_Guide_four_side_finally(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_finally] component NBOA_drawing_1_end=Guide_four_side() FINALLY [Guide_four_side:0]"); + + + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_finally */ + +_class_MultiDiskChopper *class_MultiDiskChopper_finally(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_finally] component wfmc_1=MultiDiskChopper() FINALLY [MultiDiskChopper:0]"); + + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_finally */ + +_class_Monitor_nD *class_Monitor_nD_finally(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_finally] component sample_PSD=Monitor_nD() FINALLY [Monitor_nD:0]"); + + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_finally */ + + + +int finally(void) { /* called by mccode_main for ODIN_baseline:FINALLY */ +#pragma acc update host(_Origin_var) +#pragma acc update host(_optical_axis_var) +#pragma acc update host(_Source_var) +#pragma acc update host(_Start_of_bi_var) +#pragma acc update host(_bi_var) +#pragma acc update host(_End_of_bi_var) +#pragma acc update host(_NBOA_drawing_1_end_var) +#pragma acc update host(_g1a2_var) +#pragma acc update host(_g1a3_var) +#pragma acc update host(_g1b1_var) +#pragma acc update host(_g1c1_var) +#pragma acc update host(_wfm_position_var) +#pragma acc update host(_wfm_1_position_var) +#pragma acc update host(_wfmc_1_var) +#pragma acc update host(_pinhole_1_var) +#pragma acc update host(_wfm_2_position_var) +#pragma acc update host(_wfmc_2_var) +#pragma acc update host(_g2a1_var) +#pragma acc update host(_monitor_1_position_var) +#pragma acc update host(_g2a2_var) +#pragma acc update host(_fo1_position_var) +#pragma acc update host(_fo_chopper_1_var) +#pragma acc update host(_bp1_position_var) +#pragma acc update host(_bp1_chopper_var) +#pragma acc update host(_g2b1_var) +#pragma acc update host(_g2b2_var) +#pragma acc update host(_g2b3_var) +#pragma acc update host(_g2b4_var) +#pragma acc update host(_fo2_position_var) +#pragma acc update host(_fo_chopper_2_var) +#pragma acc update host(_bp2_position_var) +#pragma acc update host(_bp_chopper2_var) +#pragma acc update host(_g2c1_var) +#pragma acc update host(_t0_start_position_var) +#pragma acc update host(_t0_chopper_alpha_var) +#pragma acc update host(_t0_end_position_var) +#pragma acc update host(_t0_chopper_beta_var) +#pragma acc update host(_g3a1_var) +#pragma acc update host(_g3a2_var) +#pragma acc update host(_fo3_position_var) +#pragma acc update host(_fo_chopper_3_var) +#pragma acc update host(_g3b1_var) +#pragma acc update host(_g4a1_var) +#pragma acc update host(_monitor_2_position_var) +#pragma acc update host(_g4a2_var) +#pragma acc update host(_g4a3_var) +#pragma acc update host(_fo4_position_var) +#pragma acc update host(_fo_chopper_4_var) +#pragma acc update host(_g4b1_var) +#pragma acc update host(_g4b2_var) +#pragma acc update host(_g4b3_var) +#pragma acc update host(_g4b4_var) +#pragma acc update host(_g4b5_var) +#pragma acc update host(_g4b6_var) +#pragma acc update host(_g5a1_var) +#pragma acc update host(_fo5_position_var) +#pragma acc update host(_fo_chopper_5_var) +#pragma acc update host(_g5b1_var) +#pragma acc update host(_g5b2_var) +#pragma acc update host(_g5b3_var) +#pragma acc update host(_g5b4_var) +#pragma acc update host(_g5b5_var) +#pragma acc update host(_g5b6_var) +#pragma acc update host(_g6a1_var) +#pragma acc update host(_g6a2_var) +#pragma acc update host(_g6a3_var) +#pragma acc update host(_guide_end_var) +#pragma acc update host(_monitor_3_position_var) +#pragma acc update host(_start_backend_var) +#pragma acc update host(_optical_axis_backend_var) +#pragma acc update host(_pinhole_2_var) +#pragma acc update host(_graph_var) +#pragma acc update host(_sample_monitor_arm_var) +#pragma acc update host(_sample_PSD_var) +#pragma acc update host(_profile_x_var) +#pragma acc update host(_profile_y_var) +#pragma acc update host(_wavelength_var) +#pragma acc update host(_tof_var) +#pragma acc update host(_wavelength_tof_var) +#pragma acc update host(_sample_position_var) +#pragma acc update host(_instrument_var) + + siminfo_init(NULL); + save(siminfo_file); /* save data when simulation ends */ + + /* Instrument 'ODIN_baseline' FINALLY */ + SIG_MESSAGE("[ODIN_baseline] FINALLY [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) +{ +// Start of finally for generated ODIN +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + /* call iteratively all components FINALLY */ + class_Progress_bar_finally(&_Origin_var); + + + + + + + class_Guide_four_side_finally(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_finally(&_g1a2_var); + + class_Guide_four_side_finally(&_g1a3_var); + + class_Guide_four_side_finally(&_g1b1_var); + + class_Guide_four_side_finally(&_g1c1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_2_var); + + class_Guide_four_side_finally(&_g2a1_var); + + + class_Guide_four_side_finally(&_g2a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_1_var); + + + + class_Guide_four_side_finally(&_g2b1_var); + + class_Guide_four_side_finally(&_g2b2_var); + + class_Guide_four_side_finally(&_g2b3_var); + + class_Guide_four_side_finally(&_g2b4_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_2_var); + + + + class_Guide_four_side_finally(&_g2c1_var); + + + + + + class_Guide_four_side_finally(&_g3a1_var); + + class_Guide_four_side_finally(&_g3a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_3_var); + + class_Guide_four_side_finally(&_g3b1_var); + + class_Guide_four_side_finally(&_g4a1_var); + + + class_Guide_four_side_finally(&_g4a2_var); + + class_Guide_four_side_finally(&_g4a3_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_4_var); + + class_Guide_four_side_finally(&_g4b1_var); + + class_Guide_four_side_finally(&_g4b2_var); + + class_Guide_four_side_finally(&_g4b3_var); + + class_Guide_four_side_finally(&_g4b4_var); + + class_Guide_four_side_finally(&_g4b5_var); + + class_Guide_four_side_finally(&_g4b6_var); + + class_Guide_four_side_finally(&_g5a1_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_5_var); + + class_Guide_four_side_finally(&_g5b1_var); + + class_Guide_four_side_finally(&_g5b2_var); + + class_Guide_four_side_finally(&_g5b3_var); + + class_Guide_four_side_finally(&_g5b4_var); + + class_Guide_four_side_finally(&_g5b5_var); + + class_Guide_four_side_finally(&_g5b6_var); + + class_Guide_four_side_finally(&_g6a1_var); + + class_Guide_four_side_finally(&_g6a2_var); + + class_Guide_four_side_finally(&_g6a3_var); + + + + + + + + + class_Monitor_nD_finally(&_sample_PSD_var); + + class_Monitor_nD_finally(&_profile_x_var); + + class_Monitor_nD_finally(&_profile_y_var); + + class_Monitor_nD_finally(&_wavelength_var); + + class_Monitor_nD_finally(&_tof_var); + + class_Monitor_nD_finally(&_wavelength_tof_var); + + + siminfo_close(); + + return(0); +} /* finally */ + +/* ***************************************************************************** +* instrument 'ODIN_baseline' and components DISPLAY +***************************************************************************** */ + + #define magnify mcdis_magnify + #define line mcdis_line + #define dashed_line mcdis_dashed_line + #define multiline mcdis_multiline + #define rectangle mcdis_rectangle + #define box mcdis_box + #define circle mcdis_circle + #define cylinder mcdis_cylinder + #define sphere mcdis_sphere + #define cone mcdis_cone + #define polygon mcdis_polygon + #define polyhedron mcdis_polyhedron +_class_Progress_bar *class_Progress_bar_display(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_display] component Origin=Progress_bar() DISPLAY [Progress_bar:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_display */ + +_class_Arm *class_Arm_display(_class_Arm *_comp +) { + SIG_MESSAGE("[_optical_axis_display] component optical_axis=Arm() DISPLAY [Arm:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + /* A bit ugly; hard-coded dimensions. */ + + line (0, 0, 0, 0.2, 0, 0); + line (0, 0, 0, 0, 0.2, 0); + line (0, 0, 0, 0, 0, 0.2); + + cone (0.2, 0, 0, 0.01, 0.02, 1, 0, 0); + cone (0, 0.2, 0, 0.01, 0.02, 0, 1, 0); + cone (0, 0, 0.2, 0.01, 0.02, 0, 0, 1); + return(_comp); +} /* class_Arm_display */ + +_class_ESS_butterfly *class_ESS_butterfly_display(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_display] component Source=ESS_butterfly() DISPLAY [ESS_butterfly:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_display */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_display(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_display] component bi=bi_spec_ellipse() DISPLAY [bi_spec_ellipse:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_display] component NBOA_drawing_1_end=Guide_four_side() DISPLAY [Guide_four_side:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int i, imax; + double x1, y1, Z, x2, y2, Z1, Z0wr, Z0wl, Z0hu, Z0hd, xwt, ywt, x1wt, y1wt; + double mr, ml, mu, md, nr1, nl1, nu1, nd1, nr2, nl2, nu2, nd2; + double lbwl, lbwr, lbhu, lbhd; /* length between focal points , needed for elliptic case */ + + double x11, y11, x21, y21, Z11, Z0wr1, Z0wl1, Z0hu1, Z0hd1, xwt1, ywt1, x1wt1, y1wt1; + double mr1, ml1, mu1, md1, nr11, nl11, nu11, nd11, nr21, nl21, nu21, nd21; + double lbwl1, lbwr1, lbhu1, lbhd1; + + double x12, y12, x22, y22, Z12, Z0wr2, Z0wl2, Z0hu2, Z0hd2, xwt2, ywt2, x1wt2, y1wt2; + double mr2, ml2, mu2, md2, nr12, nl12, nu12, nd12, nr22, nl22, nu22, nd22; + double lbwl2, lbwr2, lbhu2, lbhd2; + + magnify ("xy"); + + imax = 100; /* maximum points for every line in Z direction*/ + + lbwr = linwr + l + loutwr; + lbwl = linwl + l + loutwl; + lbhu = linhu + l + louthu; + lbhd = linhd + l + louthd; + + if (linwr == 0 && loutwr == 0) { + mr = (-w2r + w1r) / l; + nr1 = -w1r; + nr2 = -(w1rwt); + } + + if (linwl == 0 && loutwl == 0) { + ml = (w2l - w1l) / l; + nl1 = w1l; + nl2 = (w1lwt); + } + + if (linhu == 0 && louthu == 0) { + mu = (h2u - h1u) / l; + nu1 = h1u; + nu2 = (h1uwt); + } + + if (linhd == 0 && louthd == 0) { + md = (-h2d + h1d) / l; + nd1 = -h1d; + nd2 = -(h1dwt); + } + + Z0wr = (linwr - l - loutwr) / 2.0; + Z0wl = (linwl - l - loutwl) / 2.0; + Z0hu = lbhu / 2.0 - l - louthu; + Z0hd = lbhd / 2.0 - l - louthd; + + if (myd != -1) + line (w1l, -h1d, 0.0, -w1r, -h1d, 0.0); /* entrance window given by the INNER walls*/ + if (myu != -1) + line (w1l, h1u, 0.0, -w1r, h1u, 0.0); + if (mxl != -1) + line (w1l, -h1d, 0.0, w1l, h1u, 0.0); + if (mxr != -1) + line (-w1r, h1u, 0.0, -w1r, -h1d, 0.0); + + if (myd != -1) + line (w2l, -h2d, l, -w2r, -h2d, l); /* exit window given by the INNER walls*/ + if (myu != -1) + line (w2l, h2u, l, -w2r, h2u, l); + if (mxl != -1) + line (w2l, -h2d, l, w2l, h2u, l); + if (mxr != -1) + line (-w2r, -h2d, l, -w2r, h2u, l); + + if (mydOW != -1) + line ((w1lwt), -(h1dwt), 0.0, -(w1rwt), -(h1dwt), 0.0); /* entrance window given by the OUTER walls */ + if (myuOW != -1) + line ((w1lwt), (h1uwt), 0.0, -(w1rwt), (h1uwt), 0.0); + if (mxlOW != -1) + line ((w1lwt), -(h1dwt), 0.0, (w1lwt), (h1uwt), 0.0); + if (mxrOW != -1) + line (-(w1rwt), (h1uwt), 0.0, -(w1rwt), -(h1dwt), 0.0); + + if (mydOW != -1) + line ((w2lwt), -(h2dwt), l, -(w2rwt), -(h2dwt), l); /* exit windows given by the OUTER walls*/ + if (myuOW != -1) + line ((w2lwt), (h2uwt), l, -(w2rwt), (h2uwt), l); + if (mxlOW != -1) + line ((w2lwt), -(h2dwt), l, (w2lwt), (h2uwt), l); + if (mxrOW != -1) + line (-(w2rwt), -(h2dwt), l, -(w2rwt), (h2uwt), l); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, -h1d, 0.0, (w1lwt), -(h1dwt), 0.0); /* corner connection lines for the entrance windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, h1u, 0.0, (w1lwt), (h1uwt), 0.0); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, -h1d, 0.0, -(w1rwt), -(h1dwt), 0.0); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, h1u, 0.0, -(w1rwt), (h1uwt), 0.0); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, -h2d, l, (w2lwt), -(h2dwt), l); /* corner connection lines for the exit windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, h2u, l, (w2lwt), (h2uwt), l); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, -h2d, l, -(w2rwt), -(h2dwt), l); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, h2u, l, -(w2rwt), (h2uwt), l); + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxl != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxr != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxr != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxl != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } /* END INNER LINES*/ + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxlOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxrOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxrOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxlOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_display */ + +_class_MultiDiskChopper *class_MultiDiskChopper_display(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_display] component wfmc_1=MultiDiskChopper() DISPLAY [MultiDiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_display */ + +_class_Slit *class_Slit_display(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_display] component pinhole_1=Slit() DISPLAY [Slit:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + if (is_unset (radius)) { + double xw, yh; + xw = (xmax - xmin) / 2.0; + yh = (ymax - ymin) / 2.0; + multiline (3, xmin - xw, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, ymax + yh, 0.0); + multiline (3, xmax + xw, (double)ymax, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmax, ymax + yh, 0.0); + multiline (3, xmin - xw, (double)ymin, 0.0, (double)xmin, (double)ymin, 0.0, (double)xmin, ymin - yh, 0.0); + multiline (3, xmax + xw, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, ymin - yh, 0.0); + } else { + circle ("xy", 0, 0, 0, radius); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_display */ + +_class_DiskChopper *class_DiskChopper_display(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_display] component bp1_chopper=DiskChopper() DISPLAY [DiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_display */ + +_class_Graphite_Diffuser *class_Graphite_Diffuser_display(_class_Graphite_Diffuser *_comp +) { + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_display] component graph=Graphite_Diffuser() DISPLAY [Graphite_Diffuser:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + magnify("xy"); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)-ywidth/2, 0.0); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)-ywidth/2, (double)thick); + line(-xwidth/2, -ywidth/2, 0.0, -xwidth/2, -ywidth/2, thick); + line(xwidth/2, -ywidth/2, 0.0, xwidth/2, -ywidth/2, thick); + line(-xwidth/2, ywidth/2, 0.0, -xwidth/2, ywidth/2, thick); + line(xwidth/2, ywidth/2, 0.0, xwidth/2, ywidth/2, thick); + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return(_comp); +} /* class_Graphite_Diffuser_display */ + +_class_Monitor_nD *class_Monitor_nD_display(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_display] component sample_PSD=Monitor_nD() DISPLAY [Monitor_nD:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_display */ + + + #undef magnify + #undef line + #undef dashed_line + #undef multiline + #undef rectangle + #undef box + #undef circle + #undef cylinder + #undef sphere + +int display(void) { /* called by mccode_main for ODIN_baseline:DISPLAY */ + printf("MCDISPLAY: start\n"); + + /* call iteratively all components DISPLAY */ + class_Progress_bar_display(&_Origin_var); + + class_Arm_display(&_optical_axis_var); + + class_ESS_butterfly_display(&_Source_var); + + class_Arm_display(&_Start_of_bi_var); + + class_bi_spec_ellipse_display(&_bi_var); + + class_Arm_display(&_End_of_bi_var); + + class_Guide_four_side_display(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_display(&_g1a2_var); + + class_Guide_four_side_display(&_g1a3_var); + + class_Guide_four_side_display(&_g1b1_var); + + class_Guide_four_side_display(&_g1c1_var); + + class_Arm_display(&_wfm_position_var); + + class_Arm_display(&_wfm_1_position_var); + + class_MultiDiskChopper_display(&_wfmc_1_var); + + class_Slit_display(&_pinhole_1_var); + + class_Arm_display(&_wfm_2_position_var); + + class_MultiDiskChopper_display(&_wfmc_2_var); + + class_Guide_four_side_display(&_g2a1_var); + + class_Arm_display(&_monitor_1_position_var); + + class_Guide_four_side_display(&_g2a2_var); + + class_Arm_display(&_fo1_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_1_var); + + class_Arm_display(&_bp1_position_var); + + class_DiskChopper_display(&_bp1_chopper_var); + + class_Guide_four_side_display(&_g2b1_var); + + class_Guide_four_side_display(&_g2b2_var); + + class_Guide_four_side_display(&_g2b3_var); + + class_Guide_four_side_display(&_g2b4_var); + + class_Arm_display(&_fo2_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_2_var); + + class_Arm_display(&_bp2_position_var); + + class_DiskChopper_display(&_bp_chopper2_var); + + class_Guide_four_side_display(&_g2c1_var); + + class_Arm_display(&_t0_start_position_var); + + class_DiskChopper_display(&_t0_chopper_alpha_var); + + class_Arm_display(&_t0_end_position_var); + + class_DiskChopper_display(&_t0_chopper_beta_var); + + class_Guide_four_side_display(&_g3a1_var); + + class_Guide_four_side_display(&_g3a2_var); + + class_Arm_display(&_fo3_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_3_var); + + class_Guide_four_side_display(&_g3b1_var); + + class_Guide_four_side_display(&_g4a1_var); + + class_Arm_display(&_monitor_2_position_var); + + class_Guide_four_side_display(&_g4a2_var); + + class_Guide_four_side_display(&_g4a3_var); + + class_Arm_display(&_fo4_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_4_var); + + class_Guide_four_side_display(&_g4b1_var); + + class_Guide_four_side_display(&_g4b2_var); + + class_Guide_four_side_display(&_g4b3_var); + + class_Guide_four_side_display(&_g4b4_var); + + class_Guide_four_side_display(&_g4b5_var); + + class_Guide_four_side_display(&_g4b6_var); + + class_Guide_four_side_display(&_g5a1_var); + + class_Arm_display(&_fo5_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_5_var); + + class_Guide_four_side_display(&_g5b1_var); + + class_Guide_four_side_display(&_g5b2_var); + + class_Guide_four_side_display(&_g5b3_var); + + class_Guide_four_side_display(&_g5b4_var); + + class_Guide_four_side_display(&_g5b5_var); + + class_Guide_four_side_display(&_g5b6_var); + + class_Guide_four_side_display(&_g6a1_var); + + class_Guide_four_side_display(&_g6a2_var); + + class_Guide_four_side_display(&_g6a3_var); + + class_Arm_display(&_guide_end_var); + + class_Arm_display(&_monitor_3_position_var); + + class_Arm_display(&_start_backend_var); + + class_Arm_display(&_optical_axis_backend_var); + + class_Slit_display(&_pinhole_2_var); + + class_Graphite_Diffuser_display(&_graph_var); + + class_Arm_display(&_sample_monitor_arm_var); + + class_Monitor_nD_display(&_sample_PSD_var); + + class_Monitor_nD_display(&_profile_x_var); + + class_Monitor_nD_display(&_profile_y_var); + + class_Monitor_nD_display(&_wavelength_var); + + class_Monitor_nD_display(&_tof_var); + + class_Monitor_nD_display(&_wavelength_tof_var); + + class_Arm_display(&_sample_position_var); + + printf("MCDISPLAY: end\n"); + + return(0); +} /* display */ + +void* _getvar_parameters(char* compname) +/* enables settings parameters based use of the GETPAR macro */ +{ + #ifdef OPENACC + #define strcmp(a,b) str_comp(a,b) + #endif + if (!strcmp(compname, "Origin")) return (void *) &(_Origin_var._parameters); + if (!strcmp(compname, "optical_axis")) return (void *) &(_optical_axis_var._parameters); + if (!strcmp(compname, "Source")) return (void *) &(_Source_var._parameters); + if (!strcmp(compname, "Start_of_bi")) return (void *) &(_Start_of_bi_var._parameters); + if (!strcmp(compname, "bi")) return (void *) &(_bi_var._parameters); + if (!strcmp(compname, "End_of_bi")) return (void *) &(_End_of_bi_var._parameters); + if (!strcmp(compname, "NBOA_drawing_1_end")) return (void *) &(_NBOA_drawing_1_end_var._parameters); + if (!strcmp(compname, "g1a2")) return (void *) &(_g1a2_var._parameters); + if (!strcmp(compname, "g1a3")) return (void *) &(_g1a3_var._parameters); + if (!strcmp(compname, "g1b1")) return (void *) &(_g1b1_var._parameters); + if (!strcmp(compname, "g1c1")) return (void *) &(_g1c1_var._parameters); + if (!strcmp(compname, "wfm_position")) return (void *) &(_wfm_position_var._parameters); + if (!strcmp(compname, "wfm_1_position")) return (void *) &(_wfm_1_position_var._parameters); + if (!strcmp(compname, "wfmc_1")) return (void *) &(_wfmc_1_var._parameters); + if (!strcmp(compname, "pinhole_1")) return (void *) &(_pinhole_1_var._parameters); + if (!strcmp(compname, "wfm_2_position")) return (void *) &(_wfm_2_position_var._parameters); + if (!strcmp(compname, "wfmc_2")) return (void *) &(_wfmc_2_var._parameters); + if (!strcmp(compname, "g2a1")) return (void *) &(_g2a1_var._parameters); + if (!strcmp(compname, "monitor_1_position")) return (void *) &(_monitor_1_position_var._parameters); + if (!strcmp(compname, "g2a2")) return (void *) &(_g2a2_var._parameters); + if (!strcmp(compname, "fo1_position")) return (void *) &(_fo1_position_var._parameters); + if (!strcmp(compname, "fo_chopper_1")) return (void *) &(_fo_chopper_1_var._parameters); + if (!strcmp(compname, "bp1_position")) return (void *) &(_bp1_position_var._parameters); + if (!strcmp(compname, "bp1_chopper")) return (void *) &(_bp1_chopper_var._parameters); + if (!strcmp(compname, "g2b1")) return (void *) &(_g2b1_var._parameters); + if (!strcmp(compname, "g2b2")) return (void *) &(_g2b2_var._parameters); + if (!strcmp(compname, "g2b3")) return (void *) &(_g2b3_var._parameters); + if (!strcmp(compname, "g2b4")) return (void *) &(_g2b4_var._parameters); + if (!strcmp(compname, "fo2_position")) return (void *) &(_fo2_position_var._parameters); + if (!strcmp(compname, "fo_chopper_2")) return (void *) &(_fo_chopper_2_var._parameters); + if (!strcmp(compname, "bp2_position")) return (void *) &(_bp2_position_var._parameters); + if (!strcmp(compname, "bp_chopper2")) return (void *) &(_bp_chopper2_var._parameters); + if (!strcmp(compname, "g2c1")) return (void *) &(_g2c1_var._parameters); + if (!strcmp(compname, "t0_start_position")) return (void *) &(_t0_start_position_var._parameters); + if (!strcmp(compname, "t0_chopper_alpha")) return (void *) &(_t0_chopper_alpha_var._parameters); + if (!strcmp(compname, "t0_end_position")) return (void *) &(_t0_end_position_var._parameters); + if (!strcmp(compname, "t0_chopper_beta")) return (void *) &(_t0_chopper_beta_var._parameters); + if (!strcmp(compname, "g3a1")) return (void *) &(_g3a1_var._parameters); + if (!strcmp(compname, "g3a2")) return (void *) &(_g3a2_var._parameters); + if (!strcmp(compname, "fo3_position")) return (void *) &(_fo3_position_var._parameters); + if (!strcmp(compname, "fo_chopper_3")) return (void *) &(_fo_chopper_3_var._parameters); + if (!strcmp(compname, "g3b1")) return (void *) &(_g3b1_var._parameters); + if (!strcmp(compname, "g4a1")) return (void *) &(_g4a1_var._parameters); + if (!strcmp(compname, "monitor_2_position")) return (void *) &(_monitor_2_position_var._parameters); + if (!strcmp(compname, "g4a2")) return (void *) &(_g4a2_var._parameters); + if (!strcmp(compname, "g4a3")) return (void *) &(_g4a3_var._parameters); + if (!strcmp(compname, "fo4_position")) return (void *) &(_fo4_position_var._parameters); + if (!strcmp(compname, "fo_chopper_4")) return (void *) &(_fo_chopper_4_var._parameters); + if (!strcmp(compname, "g4b1")) return (void *) &(_g4b1_var._parameters); + if (!strcmp(compname, "g4b2")) return (void *) &(_g4b2_var._parameters); + if (!strcmp(compname, "g4b3")) return (void *) &(_g4b3_var._parameters); + if (!strcmp(compname, "g4b4")) return (void *) &(_g4b4_var._parameters); + if (!strcmp(compname, "g4b5")) return (void *) &(_g4b5_var._parameters); + if (!strcmp(compname, "g4b6")) return (void *) &(_g4b6_var._parameters); + if (!strcmp(compname, "g5a1")) return (void *) &(_g5a1_var._parameters); + if (!strcmp(compname, "fo5_position")) return (void *) &(_fo5_position_var._parameters); + if (!strcmp(compname, "fo_chopper_5")) return (void *) &(_fo_chopper_5_var._parameters); + if (!strcmp(compname, "g5b1")) return (void *) &(_g5b1_var._parameters); + if (!strcmp(compname, "g5b2")) return (void *) &(_g5b2_var._parameters); + if (!strcmp(compname, "g5b3")) return (void *) &(_g5b3_var._parameters); + if (!strcmp(compname, "g5b4")) return (void *) &(_g5b4_var._parameters); + if (!strcmp(compname, "g5b5")) return (void *) &(_g5b5_var._parameters); + if (!strcmp(compname, "g5b6")) return (void *) &(_g5b6_var._parameters); + if (!strcmp(compname, "g6a1")) return (void *) &(_g6a1_var._parameters); + if (!strcmp(compname, "g6a2")) return (void *) &(_g6a2_var._parameters); + if (!strcmp(compname, "g6a3")) return (void *) &(_g6a3_var._parameters); + if (!strcmp(compname, "guide_end")) return (void *) &(_guide_end_var._parameters); + if (!strcmp(compname, "monitor_3_position")) return (void *) &(_monitor_3_position_var._parameters); + if (!strcmp(compname, "start_backend")) return (void *) &(_start_backend_var._parameters); + if (!strcmp(compname, "optical_axis_backend")) return (void *) &(_optical_axis_backend_var._parameters); + if (!strcmp(compname, "pinhole_2")) return (void *) &(_pinhole_2_var._parameters); + if (!strcmp(compname, "graph")) return (void *) &(_graph_var._parameters); + if (!strcmp(compname, "sample_monitor_arm")) return (void *) &(_sample_monitor_arm_var._parameters); + if (!strcmp(compname, "sample_PSD")) return (void *) &(_sample_PSD_var._parameters); + if (!strcmp(compname, "profile_x")) return (void *) &(_profile_x_var._parameters); + if (!strcmp(compname, "profile_y")) return (void *) &(_profile_y_var._parameters); + if (!strcmp(compname, "wavelength")) return (void *) &(_wavelength_var._parameters); + if (!strcmp(compname, "tof")) return (void *) &(_tof_var._parameters); + if (!strcmp(compname, "wavelength_tof")) return (void *) &(_wavelength_tof_var._parameters); + if (!strcmp(compname, "sample_position")) return (void *) &(_sample_position_var._parameters); + return 0; +} + +void* _get_particle_var(char *token, _class_particle *p) +/* enables setpars based use of GET_PARTICLE_DVAR macro and similar */ +{ + if (!strcmp(token, "t_offset")) return (void *) &(p->t_offset); + if (!strcmp(token, "p_trains")) return (void *) &(p->p_trains); + if (!strcmp(token, "alive_trains")) return (void *) &(p->alive_trains); + return 0; +} + +int _getcomp_index(char* compname) +/* Enables retrieving the component position & rotation when the index is not known. + * Component indexing into MACROS, e.g., POS_A_COMP_INDEX, are 1-based! */ +{ + if (!strcmp(compname, "Origin")) return 1; + if (!strcmp(compname, "optical_axis")) return 2; + if (!strcmp(compname, "Source")) return 3; + if (!strcmp(compname, "Start_of_bi")) return 4; + if (!strcmp(compname, "bi")) return 5; + if (!strcmp(compname, "End_of_bi")) return 6; + if (!strcmp(compname, "NBOA_drawing_1_end")) return 7; + if (!strcmp(compname, "g1a2")) return 8; + if (!strcmp(compname, "g1a3")) return 9; + if (!strcmp(compname, "g1b1")) return 10; + if (!strcmp(compname, "g1c1")) return 11; + if (!strcmp(compname, "wfm_position")) return 12; + if (!strcmp(compname, "wfm_1_position")) return 13; + if (!strcmp(compname, "wfmc_1")) return 14; + if (!strcmp(compname, "pinhole_1")) return 15; + if (!strcmp(compname, "wfm_2_position")) return 16; + if (!strcmp(compname, "wfmc_2")) return 17; + if (!strcmp(compname, "g2a1")) return 18; + if (!strcmp(compname, "monitor_1_position")) return 19; + if (!strcmp(compname, "g2a2")) return 20; + if (!strcmp(compname, "fo1_position")) return 21; + if (!strcmp(compname, "fo_chopper_1")) return 22; + if (!strcmp(compname, "bp1_position")) return 23; + if (!strcmp(compname, "bp1_chopper")) return 24; + if (!strcmp(compname, "g2b1")) return 25; + if (!strcmp(compname, "g2b2")) return 26; + if (!strcmp(compname, "g2b3")) return 27; + if (!strcmp(compname, "g2b4")) return 28; + if (!strcmp(compname, "fo2_position")) return 29; + if (!strcmp(compname, "fo_chopper_2")) return 30; + if (!strcmp(compname, "bp2_position")) return 31; + if (!strcmp(compname, "bp_chopper2")) return 32; + if (!strcmp(compname, "g2c1")) return 33; + if (!strcmp(compname, "t0_start_position")) return 34; + if (!strcmp(compname, "t0_chopper_alpha")) return 35; + if (!strcmp(compname, "t0_end_position")) return 36; + if (!strcmp(compname, "t0_chopper_beta")) return 37; + if (!strcmp(compname, "g3a1")) return 38; + if (!strcmp(compname, "g3a2")) return 39; + if (!strcmp(compname, "fo3_position")) return 40; + if (!strcmp(compname, "fo_chopper_3")) return 41; + if (!strcmp(compname, "g3b1")) return 42; + if (!strcmp(compname, "g4a1")) return 43; + if (!strcmp(compname, "monitor_2_position")) return 44; + if (!strcmp(compname, "g4a2")) return 45; + if (!strcmp(compname, "g4a3")) return 46; + if (!strcmp(compname, "fo4_position")) return 47; + if (!strcmp(compname, "fo_chopper_4")) return 48; + if (!strcmp(compname, "g4b1")) return 49; + if (!strcmp(compname, "g4b2")) return 50; + if (!strcmp(compname, "g4b3")) return 51; + if (!strcmp(compname, "g4b4")) return 52; + if (!strcmp(compname, "g4b5")) return 53; + if (!strcmp(compname, "g4b6")) return 54; + if (!strcmp(compname, "g5a1")) return 55; + if (!strcmp(compname, "fo5_position")) return 56; + if (!strcmp(compname, "fo_chopper_5")) return 57; + if (!strcmp(compname, "g5b1")) return 58; + if (!strcmp(compname, "g5b2")) return 59; + if (!strcmp(compname, "g5b3")) return 60; + if (!strcmp(compname, "g5b4")) return 61; + if (!strcmp(compname, "g5b5")) return 62; + if (!strcmp(compname, "g5b6")) return 63; + if (!strcmp(compname, "g6a1")) return 64; + if (!strcmp(compname, "g6a2")) return 65; + if (!strcmp(compname, "g6a3")) return 66; + if (!strcmp(compname, "guide_end")) return 67; + if (!strcmp(compname, "monitor_3_position")) return 68; + if (!strcmp(compname, "start_backend")) return 69; + if (!strcmp(compname, "optical_axis_backend")) return 70; + if (!strcmp(compname, "pinhole_2")) return 71; + if (!strcmp(compname, "graph")) return 72; + if (!strcmp(compname, "sample_monitor_arm")) return 73; + if (!strcmp(compname, "sample_PSD")) return 74; + if (!strcmp(compname, "profile_x")) return 75; + if (!strcmp(compname, "profile_y")) return 76; + if (!strcmp(compname, "wavelength")) return 77; + if (!strcmp(compname, "tof")) return 78; + if (!strcmp(compname, "wavelength_tof")) return 79; + if (!strcmp(compname, "sample_position")) return 80; + return -1; +} + +/* embedding file "metadata-r.c" */ + +/** --- Contents of metadata-r.c ---------------------------------------------------------------------------------- */ +// Created by Gregory Tucker, Data Management Software Centre, European Spallation Source ERIC on 07/07/23. +#ifndef MCCODE_NAME +#include "metadata-r.h" +#endif + +char * metadata_table_key_component(char* key){ + if (strlen(key) == 0) return NULL; + char sep[2] = ":\0"; // matches any number of repeated colons + // look for the separator in the provided key; strtok is allowed to modify the string, so copy it + char * tok = malloc((strlen(key) + 1) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) -- but we need to move the pointer + char * comp = malloc((1 + strlen(pch)) * sizeof(char)); + if (!comp) { + fprintf(stderr,"Error allocating comp\n"); + exit(-1); + } + strcpy(comp, pch); + if (tok) free(tok); + return comp; +} +char * metadata_table_key_literal(char * key){ + if (strlen(key) == 0) return NULL; + char sep[3] = ":\0"; + char * tok = malloc((strlen(key) + 1 ) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) + if (pch) pch = strtok(NULL, sep); // either NULL or the literal name + char * name = NULL; + if (pch) { + name = malloc((1 + strlen(pch)) * sizeof(char)); + if (!name) { + fprintf(stderr,"Error allocating name\n"); + exit(-1); + } + strcpy(name, pch); + } + if (tok) free(tok); + return name; +} +int metadata_table_defined(int no, metadata_table_t * tab, char * key){ + if (strlen(key) == 0){ + /* This is 0 instead of `no` independent of any wildcard-matching logic + * because a caller _already_ knows `no` and can verify + * that `key` is not "" at call-time. So returning `no` is useless. + */ + return 0; + } + char * comp = metadata_table_key_component(key); + char * name = metadata_table_key_literal(key); + // look through the table for the matching component and literal names + int number = 0; + for (int i=0; i 1) { + MPI_MASTER( + printf("Simulation '%s' (%s): running on %i nodes (master is '%s', MPI version %i.%i).\n", + instrument_name, instrument_source, mpi_node_count, mpi_node_name, MPI_VERSION, MPI_SUBVERSION); + ); + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per noe */ + } +#endif /* USE_MPI */ + +#ifdef OPENACC +#ifdef USE_MPI + int num_devices = acc_get_num_devices(acc_device_nvidia); + if(num_devices>0){ + int my_device = mpi_node_rank % num_devices; + acc_set_device_num( my_device, acc_device_nvidia ); + printf("Have found %d GPU devices on rank %d. Will use device %d.\n", num_devices, mpi_node_rank, my_device); + }else{ + printf("There was an issue probing acc_get_num_devices, fallback to host\n"); + acc_set_device_type( acc_device_host ); + } +#endif +#endif + + /* *** parse options ******************************************************* */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat = getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + instrument_exe = argv[0]; /* store the executable path */ + /* read simulation parameters and options */ + mcparseoptions(argc, argv); /* sets output dir and format */ + + +#ifdef USE_MPI + if (mpi_node_count > 1) { + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per node */ + } +#endif + + +/* *** install sig handler, but only once !! after parameters parsing ******* */ +#ifndef NOSIGNALS +#ifdef SIGQUIT + if (signal( SIGQUIT ,sighandler) == SIG_IGN) + signal( SIGQUIT,SIG_IGN); /* quit (ASCII FS) */ +#endif +#ifdef SIGABRT + if (signal( SIGABRT ,sighandler) == SIG_IGN) + signal( SIGABRT,SIG_IGN); /* used by abort, replace SIGIOT in the future */ +#endif +#ifdef SIGTERM + if (signal( SIGTERM ,sighandler) == SIG_IGN) + signal( SIGTERM,SIG_IGN); /* software termination signal from kill */ +#endif +#ifdef SIGUSR1 + if (signal( SIGUSR1 ,sighandler) == SIG_IGN) + signal( SIGUSR1,SIG_IGN); /* display simulation status */ +#endif +#ifdef SIGUSR2 + if (signal( SIGUSR2 ,sighandler) == SIG_IGN) + signal( SIGUSR2,SIG_IGN); +#endif +#ifdef SIGHUP + if (signal( SIGHUP ,sighandler) == SIG_IGN) + signal( SIGHUP,SIG_IGN); +#endif +#ifdef SIGILL + if (signal( SIGILL ,sighandler) == SIG_IGN) + signal( SIGILL,SIG_IGN); /* illegal instruction (not reset when caught) */ +#endif +#ifdef SIGFPE + if (signal( SIGFPE ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* floating point exception */ +#endif +#ifdef SIGBUS + if (signal( SIGBUS ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* bus error */ +#endif +#ifdef SIGSEGV + if (signal( SIGSEGV ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* segmentation violation */ +#endif +#endif /* !NOSIGNALS */ + + + // init executed by master/host + siminfo_init(NULL); /* open SIM */ + SIG_MESSAGE("[" __FILE__ "] main INITIALISE"); + init(); + + +#ifndef NOSIGNALS +#ifdef SIGINT + if (signal( SIGINT ,sighandler) == SIG_IGN) + signal( SIGINT,SIG_IGN); /* interrupt (rubout) only after INIT */ +#endif +#endif /* !NOSIGNALS */ + +/* ================ main particle generation/propagation loop ================ */ +#ifdef USE_MPI + /* sliced Ncount on each MPI node */ + mcncount = mpi_node_count > 1 ? + floor(mcncount / mpi_node_count) : + mcncount; /* number of rays per node */ +#endif + +// MT specific init, note that per-ray init is empty +#if RNG_ALG == 2 + mt_srandom(mcseed); +#endif + + +// main raytrace work loop +#ifndef FUNNEL + // legacy version + raytrace_all(mcncount, mcseed); +#else + MPI_MASTER( + // "funneled" version in which propagation is more parallelizable + printf("\nNOTE: CPU COMPONENT grammar activated:\n 1) \"FUNNEL\" raytrace algorithm enabled.\n 2) Any SPLIT's are dynamically allocated based on available buffer size. \n"); + ); + raytrace_all_funnel(mcncount, mcseed); +#endif + + +#ifdef USE_MPI + /* merge run_num from MPI nodes */ + if (mpi_node_count > 1) { + double mcrun_num_double = (double)mcrun_num; + mc_MPI_Sum(&mcrun_num_double, 1); + mcrun_num = (unsigned long long)mcrun_num_double; + } +#endif + + + // save/finally executed by master node/thread/host + finally(); + + +#ifdef USE_MPI + MPI_Finalize(); +#endif /* USE_MPI */ + + + return 0; +} /* mccode_main */ +/* End of file "mccode_main.c". */ + +/* end of generated C code ./ODIN_baseline.c */ diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.instr b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.instr new file mode 100644 index 0000000000..a89ba7abbc --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.instr @@ -0,0 +1,1023 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN_baseline +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* %Example -y Detector: tof_I=9.16671e+08 +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN_baseline ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2 // 0: no choppers 1: BP 2: WFM +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap +%} + +USERVARS +%{ +double *t_offset; +double *p_trains; +int *alive_trains; +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + + +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE + +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE +EXTEND %{ +%} + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Origin + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0) +AT (0, 0, 0) RELATIVE Origin + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + + COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +// Start of finally for generated ODIN +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.c b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.c new file mode 100644 index 0000000000..af015ab988 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.c @@ -0,0 +1,34422 @@ +/* Automatically generated file. Do not edit. + * Format: ANSI C source code + * Creator: McStas + * Instrument: ODIN_baseline.instr (ODIN_baseline) + * Date: Thu Feb 26 14:53:42 2026 + * File: ./ODIN_baseline.c + * CFLAGS= + */ + +#ifndef WIN32 +# ifndef OPENACC +# define _GNU_SOURCE +# endif +# define _POSIX_C_SOURCE 200809L +#endif +/* In case of cl.exe on Windows, supppress warnings about #pragma acc */ +#ifdef _MSC_EXTENSIONS +#pragma warning(disable: 4068) +#endif + +#define MCCODE_STRING " 3.99.99, git" +#define FLAVOR "mcstas" +#define FLAVOR_UPPER "MCSTAS" + +#define MC_USE_DEFAULT_MAIN +#define MC_TRACE_ENABLED + +#include +#include + +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#define MCCODE_BASE_TYPES + +/* available random number generators */ +#define _RNG_ALG_MT 1 +#define _RNG_ALG_KISS 2 +/* selection of random number generator */ +#ifndef RNG_ALG +# define RNG_ALG _RNG_ALG_KISS +#endif +#if RNG_ALG == _RNG_ALG_MT // MT +#define randstate_t uint32_t +#elif RNG_ALG == _RNG_ALG_KISS // KISS +#define randstate_t uint64_t +#endif + +#ifndef MC_NUSERVAR +#define MC_NUSERVAR 10 +#endif + +/* Particle JUMP control logic */ +struct particle_logic_struct { +int dummy; +}; + +struct _struct_particle { + double x,y,z; /* position [m] */ + double vx,vy,vz; /* velocity [m/s] */ + double sx,sy,sz; /* spin [0-1] */ + int mcgravitation; /* gravity-state */ + void *mcMagnet; /* precession-state */ + int allow_backprop; /* allow backprop */ + /* Generic Temporaries: */ + /* May be used internally by components e.g. for special */ + /* return-values from functions used in trace, thusreturned via */ + /* particle struct. (Example: Wolter Conics from McStas, silicon slabs.) */ + double _mctmp_a; /* temp a */ + double _mctmp_b; /* temp b */ + double _mctmp_c; /* temp c */ + randstate_t randstate[7]; + double t, p; /* time, event weight */ + long long _uid; /* Unique event ID */ + long _index; /* component index where to send this event */ + long _absorbed; /* flag set to TRUE when this event is to be removed/ignored */ + long _scattered; /* flag set to TRUE when this event has interacted with the last component instance */ + long _restore; /* set to true if neutron event must be restored */ + long flag_nocoordschange; /* set to true if particle is jumping */ + struct particle_logic_struct _logic; + // user variables and comp-injections: + double * t_offset; + double * p_trains; + int * alive_trains; +}; +typedef struct _struct_particle _class_particle; + +_class_particle _particle_global_randnbuse_var; +_class_particle* _particle = &_particle_global_randnbuse_var; + +#pragma acc routine +_class_particle mcgenstate(void); +#pragma acc routine +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop); +#pragma acc routine +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p); + +extern int mcgravitation; /* flag to enable gravitation */ +#pragma acc declare create ( mcgravitation ) + +_class_particle mcgenstate(void) { + _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0); + return(particle); +} +/*Generated user variable handlers:*/ + +#pragma acc routine +double particle_getvar(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +double particle_getvar(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + double rval=0; + if(!str_comp("x",name)){rval=p->x;s=0;} + if(!str_comp("y",name)){rval=p->y;s=0;} + if(!str_comp("z",name)){rval=p->z;s=0;} + if(!str_comp("vx",name)){rval=p->vx;s=0;} + if(!str_comp("vy",name)){rval=p->vy;s=0;} + if(!str_comp("vz",name)){rval=p->vz;s=0;} + if(!str_comp("sx",name)){rval=p->sx;s=0;} + if(!str_comp("sy",name)){rval=p->sy;s=0;} + if(!str_comp("sz",name)){rval=p->sz;s=0;} + if(!str_comp("t",name)){rval=p->t;s=0;} + if(!str_comp("p",name)){rval=p->p;s=0;} + if(!str_comp("_mctmp_a",name)){rval=p->_mctmp_a;s=0;} + if(!str_comp("_mctmp_b",name)){rval=p->_mctmp_b;s=0;} + if(!str_comp("_mctmp_c",name)){rval=p->_mctmp_c;s=0;} + if(!str_comp("t_offset",name)){rval=*( (double *)(&(p->t_offset)) );s=0;} + if(!str_comp("p_trains",name)){rval=*( (double *)(&(p->p_trains)) );s=0;} + if(!str_comp("alive_trains",name)){rval=*( (double *)(&(p->alive_trains)) );s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void* particle_getvar_void(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +void* particle_getvar_void(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + void* rval=0; + if(!str_comp("x",name)) {rval=(void*)&(p->x); s=0;} + if(!str_comp("y",name)) {rval=(void*)&(p->y); s=0;} + if(!str_comp("z",name)) {rval=(void*)&(p->z); s=0;} + if(!str_comp("vx",name)){rval=(void*)&(p->vx);s=0;} + if(!str_comp("vy",name)){rval=(void*)&(p->vy);s=0;} + if(!str_comp("vz",name)){rval=(void*)&(p->vz);s=0;} + if(!str_comp("sx",name)){rval=(void*)&(p->sx);s=0;} + if(!str_comp("sy",name)){rval=(void*)&(p->sy);s=0;} + if(!str_comp("sz",name)){rval=(void*)&(p->sz);s=0;} + if(!str_comp("t",name)) {rval=(void*)&(p->t); s=0;} + if(!str_comp("p",name)) {rval=(void*)&(p->p); s=0;} + if(!str_comp("t_offset",name)){rval=(void*)&(p->t_offset);s=0;} + if(!str_comp("p_trains",name)){rval=(void*)&(p->p_trains);s=0;} + if(!str_comp("alive_trains",name)){rval=(void*)&(p->alive_trains);s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +int particle_setvar_void(_class_particle *, char *, void*); + +int particle_setvar_void(_class_particle *p, char *name, void* value){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + if(!str_comp("x",name)) {memcpy(&(p->x), value, sizeof(double)); rval=0;} + if(!str_comp("y",name)) {memcpy(&(p->y), value, sizeof(double)); rval=0;} + if(!str_comp("z",name)) {memcpy(&(p->z), value, sizeof(double)); rval=0;} + if(!str_comp("vx",name)){memcpy(&(p->vx), value, sizeof(double)); rval=0;} + if(!str_comp("vy",name)){memcpy(&(p->vy), value, sizeof(double)); rval=0;} + if(!str_comp("vz",name)){memcpy(&(p->vz), value, sizeof(double)); rval=0;} + if(!str_comp("sx",name)){memcpy(&(p->sx), value, sizeof(double)); rval=0;} + if(!str_comp("sy",name)){memcpy(&(p->sy), value, sizeof(double)); rval=0;} + if(!str_comp("sz",name)){memcpy(&(p->sz), value, sizeof(double)); rval=0;} + if(!str_comp("p",name)) {memcpy(&(p->p), value, sizeof(double)); rval=0;} + if(!str_comp("t",name)) {memcpy(&(p->t), value, sizeof(double)); rval=0;} + return rval; +} + +#pragma acc routine +int particle_setvar_void_array(_class_particle *, char *, void*, int); + +int particle_setvar_void_array(_class_particle *p, char *name, void* value, int elements){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + if(!str_comp("t_offset",name)){memcpy(&(p->t_offset), value, elements * sizeof(double *)); rval=0;} + if(!str_comp("p_trains",name)){memcpy(&(p->p_trains), value, elements * sizeof(double *)); rval=0;} + if(!str_comp("alive_trains",name)){memcpy(&(p->alive_trains), value, elements * sizeof(int *)); rval=0;} + return rval; +} + +#pragma acc routine +void particle_restore(_class_particle *p, _class_particle *p0); + +void particle_restore(_class_particle *p, _class_particle *p0) { + p->x = p0->x; p->y = p0->y; p->z = p0->z; + p->vx = p0->vx; p->vy = p0->vy; p->vz = p0->vz; + p->sx = p0->sx; p->sy = p0->sy; p->sz = p0->sz; + p->t = p0->t; p->p = p0->p; + p->_absorbed=0; p->_restore=0; +} + +#pragma acc routine +double particle_getuservar_byid(_class_particle *p, int id, int *suc){ + int s=1; + double rval=0; + switch(id){ + case 0: { rval=*( (double *)(&(p->t_offset)) );s=0;break;} + case 1: { rval=*( (double *)(&(p->p_trains)) );s=0;break;} + case 2: { rval=*( (double *)(&(p->alive_trains)) );s=0;break;} + } + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void particle_uservar_init(_class_particle *p){ +} + +#define MC_EMBEDDED_RUNTIME +/* embedding file "mccode-r.h" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: mcstas 3.99.99 +* Version: $Revision$ +* +* Runtime system header for McStas/McXtrace. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int numipar; +* metadata_table_t metadata_table[]; +* int num_metadata; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM mcAbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas/McXtrace version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCCODE_R_H +#define MCCODE_R_H "$Revision$" + +#include +#include +#include +#include +#include +#include +#include +#ifndef _MSC_EXTENSIONS +#include +#endif +#include +#include +#include +#ifdef OPENACC +#include +#ifndef GCCOFFLOAD +#include +#else +#include +#endif +#pragma acc routine +int noprintf(); +#pragma acc routine +size_t str_len(const char *s); +#else +#include +#endif + +/* In case of gcc / clang, ensure to use + the built-in isnan/isinf functions */ +#if defined(__GNUC__) || defined(__clang__) +# ifdef isnan +# undef isnan +# endif +# ifdef isinf +# undef isinf +# endif +# define isnan(x) __builtin_isnan(x) +# define isinf(x) __builtin_isinf(x) +#endif + +#ifdef _MSC_EXTENSIONS +#ifndef _TIMES_H +#define _TIMES_H + +#if defined(WIN32) || defined(_WIN32) +#include +#include +#include + +int gettimeofday(struct timeval* t,void* timezone); + +#define __need_clock_t +#include + + +/* Structure describing CPU time used by a process and its children. */ +struct tms + { + clock_t tms_utime; /* User CPU time. */ + clock_t tms_stime; /* System CPU time. */ + + clock_t tms_cutime; /* User CPU time of dead children. */ + clock_t tms_cstime; /* System CPU time of dead children. */ + }; + +/* Store the CPU time used by this process and all its + dead children (and their dead children) in BUFFER. + Return the elapsed real time, or (clock_t) -1 for errors. + All times are in CLK_TCKths of a second. */ +clock_t times (struct tms *__buffer); + +typedef long long suseconds_t ; + + + +int gettimeofday(struct timeval* t,void* timezone) +{ struct _timeb timebuffer; + _ftime( &timebuffer ); + t->tv_sec=timebuffer.time; + t->tv_usec=1000*timebuffer.millitm; + return 0; +} + +clock_t times (struct tms *__buffer) { + + __buffer->tms_utime = clock(); + __buffer->tms_stime = 0; + __buffer->tms_cstime = 0; + __buffer->tms_cutime = 0; + return __buffer->tms_utime; +} + + +#endif +#endif +#endif + +/* If the runtime is embedded in the simulation program, some definitions can + be made static. */ + +#ifdef MC_EMBEDDED_RUNTIME +# define mcstatic +#else +# define mcstatic +#endif + +#ifdef __dest_os +# if (__dest_os == __mac_os) +# define MAC +# endif +#endif + +#ifdef __FreeBSD__ +# define NEED_STAT_H +#endif + +#if defined(__APPLE__) && defined(__GNUC__) +# define NEED_STAT_H +#endif + +#if defined(WIN32) || defined(_WIN32) +# define NEED_STAT_H +# define NEED_TYPES_H +#endif + +#ifdef NEED_STAT_H +# include +#endif + +#ifdef NEED_TYPES_H +# include +#endif + +#ifndef MC_PATHSEP_C +#if defined(WIN32) || defined(_WIN32) +# define MC_PATHSEP_C '\\' +# define MC_PATHSEP_S "\\" +# else /* !WIN32 */ +# define MC_PATHSEP_C '/' +# define MC_PATHSEP_S "/" +# endif /* !WIN32 */ +#endif /* MC_PATHSEP_C */ + +#if defined(WIN32) || defined(_WIN32) +#if defined _MSC_VER +#include +#elif defined __GNUC__ +#include +#include +#include +#endif +#define mkdir(a,b) mkdir(a) +#define getpid() _getpid() +#endif + +/* the version string is replaced when building distribution with mkdist */ +#ifndef MCCODE_STRING +# define MCCODE_STRING " 3.99.99, git" +#endif + +#ifndef MCCODE_DATE +# define MCCODE_DATE "git" +#endif + +#ifndef MCCODE_VERSION +# define MCCODE_VERSION "3.99.99" +#endif + +#ifndef __MCCODE_VERSION__ +#define __MCCODE_VERSION__ 399099L +#endif + +#ifndef MCCODE_NAME +# define MCCODE_NAME "mcstas" +#endif + +#ifndef MCCODE_PARTICLE +# define MCCODE_PARTICLE "neutron" +#endif + +#ifndef MCCODE_PARTICLE_CODE +# define MCCODE_PARTICLE_CODE 2112 +#endif + +#ifndef MCCODE_LIBENV +# define MCCODE_LIBENV "MCSTAS" +#endif + +#ifndef FLAVOR_UPPER +# define FLAVOR_UPPER MCCODE_NAME +#endif + +#ifdef MC_PORTABLE +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef MAC +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#if (USE_MPI == 0) +# undef USE_MPI +#endif + +#ifdef USE_MPI /* default is to disable signals with MPI, as MPICH uses them to communicate */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef OPENACC /* default is to disable signals with PGI/OpenACC */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifndef OPENACC +# ifndef USE_OFF /* default is to enable OFF when not using PGI/OpenACC */ +# define USE_OFF +# endif +# ifndef CPUFUNNEL /* allow to enable FUNNEL-mode on CPU */ +# ifdef FUNNEL /* by default disable FUNNEL-mode when not using PGI/OpenACC */ +# undef FUNNEL +# endif +# endif +#endif + +#if (NOSIGNALS == 0) +# undef NOSIGNALS +#endif + +/** Header information for metadata-r.c ----------------------------------------------------------------------------- */ +struct metadata_table_struct { /* stores metadata strings from components */ + char * source; // component name which provided the metadata + char * name; // the name of the metadata + char * type; // the MIME type of the metadata (free form, valid identifier) + char * value; // the metadata string contents +}; +typedef struct metadata_table_struct metadata_table_t; +char * metadata_table_key_component(char* key); +char * metadata_table_key_literal(char * key); +int metadata_table_defined(int, metadata_table_t *, char *); +char * metadata_table_name(int, metadata_table_t *, char *); +char * metadata_table_type(int, metadata_table_t *, char *); +char * metadata_table_literal(int, metadata_table_t *, char *); +void metadata_table_print_all_keys(int no, metadata_table_t * tab); +int metadata_table_print_all_components(int no, metadata_table_t * tab); +int metadata_table_print_component_keys(int no, metadata_table_t * tab, char * key); +/* -------------------------------------------------------------------------- Header information for metadata-r.c --- */ + +/* Note: the enum instr_formal_types definition MUST be kept + synchronized with the one in mccode.h and with the + instr_formal_type_names array in cogen.c. */ +enum instr_formal_types + { + instr_type_int, + instr_type_string, instr_type_char, + instr_type_vector, instr_type_double + }; +struct mcinputtable_struct { /* defines instrument parameters */ + char *name; /* name of parameter */ + void *par; /* pointer to instrument parameter (variable) */ + enum instr_formal_types type; + char *val; /* default value */ + char *unit; /* expected unit for parameter; informational only */ +}; + + +#ifndef MCCODE_BASE_TYPES +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#endif + +/* the following variables are defined in the McStas generated C code + but should be defined externally in case of independent library usage */ +#ifndef DANSE +extern struct mcinputtable_struct mcinputtable[]; /* list of instrument parameters */ +extern int numipar; /* number of instrument parameters */ +extern metadata_table_t metadata_table[]; /* list of component-defined string metadata */ +extern int num_metadata; /* number of component-defined string metadata */ +extern char instrument_name[], instrument_source[]; /* instrument name and filename */ +extern char *instrument_exe; /* executable path = argv[0] or NULL */ +extern char instrument_code[]; /* contains the initial 'instr' file */ + +#ifndef MC_ANCIENT_COMPATIBILITY +extern int traceenabled, defaultmain; +#endif +#endif + + +/* Useful macros ============================================================ */ + + +/* SECTION: Dynamic Arrays */ +typedef int* IArray1d; +IArray1d create_iarr1d(int n); +void destroy_iarr1d(IArray1d a); + +typedef int** IArray2d; +IArray2d create_iarr2d(int nx, int ny); +void destroy_iarr2d(IArray2d a); + +typedef int*** IArray3d; +IArray3d create_iarr3d(int nx, int ny, int nz); +void destroy_iarr3d(IArray3d a); + +typedef double* DArray1d; +DArray1d create_darr1d(int n); +void destroy_darr1d(DArray1d a); + +typedef double** DArray2d; +DArray2d create_darr2d(int nx, int ny); +void destroy_darr2d(DArray2d a); + +typedef double*** DArray3d; +DArray3d create_darr3d(int nx, int ny, int nz); +void destroy_darr3d(DArray3d a); + + +/* MPI stuff */ +#ifdef USE_MPI +#include "mpi.h" + +#ifdef OMPI_MPI_H /* openmpi does not use signals: we may install our sighandler */ +#ifndef OPENACC /* ... but only if we are not also running on GPU */ +#undef NOSIGNALS +#endif +#endif + +/* + * MPI_MASTER(i): + * execution of i only on master node + */ +#define MPI_MASTER(statement) { \ + if(mpi_node_rank == mpi_node_root)\ + { statement; } \ +} + +#ifndef MPI_REDUCE_BLOCKSIZE +#define MPI_REDUCE_BLOCKSIZE 100000 +#endif + +int mc_MPI_Sum(double* buf, long count); +int mc_MPI_Send(void *sbuf, long count, MPI_Datatype dtype, int dest); +int mc_MPI_Recv(void *rbuf, long count, MPI_Datatype dtype, int source); + +/* MPI_Finalize exits gracefully and should be preferred to MPI_Abort */ +#define exit(code) do { \ + MPI_Finalize(); \ + exit(code); \ + } while(0) + +#else /* !USE_MPI */ +#define MPI_MASTER(instr) instr +#endif /* USE_MPI */ + + +#ifdef USE_MPI +static int mpi_node_count; +#endif + +#ifdef USE_THREADS /* user want threads */ +#error Threading (USE_THREADS) support has been removed for very poor efficiency. Use MPI/SSH grid instead. +#endif + + +void mcset_ncount(unsigned long long count); /* wrapper to get mcncount */ +#pragma acc routine +unsigned long long int mcget_ncount(void); /* wrapper to set mcncount */ +unsigned long long mcget_run_num(void); /* wrapper to get mcrun_num=0:mcncount-1 */ + +/* Following part is only embedded when not redundant with mccode.h ========= */ + +#ifndef MCCODE_H + +#ifndef NOSIGNALS +#include +char *mcsig_message; +#define SIG_MESSAGE(msg) mcsig_message=(char *)(msg); +#else +#define SIG_MESSAGE(...) +#endif /* !NOSIGNALS */ + + +/* Useful macros and constants ============================================== */ + + +#ifndef FLT_MAX +#define FLT_MAX 3.40282347E+38F /* max decimal value of a "float" */ +#endif + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef SQR +#define SQR(x) ( (x) * (x) ) +#endif +#ifndef SIGN +#define SIGN(x) (((x)>0.0)?(1):(-1)) +#endif + + +# ifndef M_E +# define M_E 2.71828182845904523536 // e +# endif +# ifndef M_LOG2E +# define M_LOG2E 1.44269504088896340736 // log2(e) +# endif +# ifndef M_LOG10E +# define M_LOG10E 0.434294481903251827651 // log10(e) +# endif +# ifndef M_LN2 +# define M_LN2 0.693147180559945309417 // ln(2) +# endif +# ifndef M_LN10 +# define M_LN10 2.30258509299404568402 // ln(10) +# endif +# ifndef M_PI +# define M_PI 3.14159265358979323846 // pi +# endif +# ifndef PI +# define PI M_PI // pi - also used in some places +# endif +# ifndef M_PI_2 +# define M_PI_2 1.57079632679489661923 // pi/2 +# endif +# ifndef M_PI_4 +# define M_PI_4 0.785398163397448309616 // pi/4 +# endif +# ifndef M_1_PI +# define M_1_PI 0.318309886183790671538 // 1/pi +# endif +# ifndef M_2_PI +# define M_2_PI 0.636619772367581343076 // 2/pi +# endif +# ifndef M_2_SQRTPI +# define M_2_SQRTPI 1.12837916709551257390 // 2/sqrt(pi) +# endif +# ifndef M_SQRT2 +# define M_SQRT2 1.41421356237309504880 // sqrt(2) +# endif +# ifndef M_SQRT1_2 +# define M_SQRT1_2 0.707106781186547524401 // 1/sqrt(2) +# endif + +#define RAD2MIN ((180*60)/PI) +#define MIN2RAD (PI/(180*60)) +#define DEG2RAD (PI/180) +#define RAD2DEG (180/PI) +#define FWHM2RMS 0.424660900144 /* Convert between full-width-half-max and */ +#define RMS2FWHM 2.35482004503 /* root-mean-square (standard deviation) */ +#define HBAR 1.05457168e-34 /* [Js] h bar Planck constant CODATA 2002 */ +#define MNEUTRON 1.67492728e-27 /* [kg] mass of neutron CODATA 2002 */ +#define GRAVITY 9.81 /* [m/s^2] gravitational acceleration */ +#define NA 6.02214179e23 /* [#atoms/g .mole] Avogadro's number*/ + + +#define UNSET nan("0x6E6F74736574") +int nans_match(double, double); +int is_unset(double); +int is_valid(double); +int is_set(double); +int all_unset(int n, ...); +int all_set(int n, ...); +int any_unset(int n, ...); +int any_set(int n, ...); + + +/* wrapper to get absolute and relative position of comp */ +/* mccomp_posa and mccomp_posr are defined in McStas generated C code */ +#define POS_A_COMP_INDEX(index) (instrument->_position_absolute[index]) +#define POS_R_COMP_INDEX(index) (instrument->_position_relative[index]) + +/* setting parameters based COMP_GETPAR (returned as pointer) */ +/* compname must be given as a string, type and par are symbols. */ +#define COMP_GETPAR3(type, compname, par) \ + &( ((_class_ ## type ##_parameters *) _getvar_parameters(compname))->par ) +/* the body of this function depends on component instances, and is cogen'd */ +void* _getvar_parameters(char* compname); + +int _getcomp_index(char* compname); + +/* Note: The two-stage approach to COMP_GETPAR is NOT redundant; without it, +* after #define C sample, COMP_GETPAR(C,x) would refer to component C, not to +* component sample. Such are the joys of ANSI C. + +* Anyway the usage of COMP_GETPAR requires that we use sometimes bare names... +* NOTE: This can ONLY be used in instrument descriptions, not components. +*/ +#define COMP_GETPAR2(comp, par) (_ ## comp ## _var._parameters.par) +#define COMP_GETPAR(comp, par) COMP_GETPAR2(comp,par) + +#define INSTRUMENT_GETPAR(par) (_instrument_var._parameters.par) + +/* Current component name, index, position and orientation */ +/* These macros work because, using class-based functions, "comp" is usually +* the local variable of the active/current component. */ +#define INDEX_CURRENT_COMP (_comp->_index) +#define NAME_CURRENT_COMP (_comp->_name) +#define TYPE_CURRENT_COMP (_comp->_type) +#define POS_A_CURRENT_COMP (_comp->_position_absolute) +#define POS_R_CURRENT_COMP (_comp->_position_relative) +#define ROT_A_CURRENT_COMP (_comp->_rotation_absolute) +#define ROT_R_CURRENT_COMP (_comp->_rotation_relative) + +#define NAME_INSTRUMENT (instrument->_name) + + +/* MCDISPLAY/trace and debugging message sent to stdout */ +#ifdef MC_TRACE_ENABLED +#define DEBUG +#endif + +#ifdef DEBUG +#define DEBUG_INSTR() if(!mcdotrace); else { printf("INSTRUMENT:\n"); printf("Instrument '%s' (%s)\n", instrument_name, instrument_source); } +#define DEBUG_COMPONENT(name,c,t) if(!mcdotrace); else {\ + printf("COMPONENT: \"%s\"\n" \ + "POS: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + name, c.x, c.y, c.z, t[0][0], t[0][1], t[0][2], \ + t[1][0], t[1][1], t[1][2], t[2][0], t[2][1], t[2][2]); \ + printf("Component %30s AT (%g,%g,%g)\n", name, c.x, c.y, c.z); } +#define DEBUG_INSTR_END() if(!mcdotrace); else printf("INSTRUMENT END:\n"); +#define DEBUG_ENTER() if(!mcdotrace); else printf("ENTER:\n"); +#define DEBUG_COMP(c) if(!mcdotrace); else printf("COMP: \"%s\"\n", c); +#define DEBUG_LEAVE() if(!mcdotrace); else printf("LEAVE:\n"); +#define DEBUG_ABSORB() if(!mcdotrace); else printf("ABSORB:\n"); +#else +#define DEBUG_INSTR() +#define DEBUG_COMPONENT(name,c,t) +#define DEBUG_INSTR_END() +#define DEBUG_ENTER() +#define DEBUG_COMP(c) +#define DEBUG_LEAVE() +#define DEBUG_ABSORB() +#endif + +// mcDEBUG_STATE and mcDEBUG_SCATTER are defined by mcstas-r.h and mcxtrace-r.h + + + +#ifdef TEST +#define test_printf printf +#else +#define test_printf while(0) printf +#endif + +/* send MCDISPLAY message to stdout to show gemoetry */ +void mcdis_magnify(char *what); +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2); +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n); +void mcdis_multiline(int count, ...); +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height); +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz); +void mcdis_circle(char *plane, double x, double y, double z, double r); +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz); +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz); +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz); +void mcdis_sphere(double x, double y, double z, double r); + + +/* random number generation. ================================================ */ + +#if RNG_ALG == _RNG_ALG_MT // MT (currently not functional for GPU) +# define MC_RAND_MAX ((uint32_t)0xffffffffUL) +# define RANDSTATE_LEN 1 +# define srandom(seed) mt_srandom_empty() +# define random() mt_random() +# define _random() mt_random() +#elif RNG_ALG == _RNG_ALG_KISS // KISS +# ifndef UINT64_MAX +# define UINT64_MAX ((uint64_t)0xffffffffffffffffULL) +# endif +# define MC_RAND_MAX UINT64_MAX +# define RANDSTATE_LEN 7 +# define srandom(seed) kiss_srandom(_particle->randstate, seed) +# define random() kiss_random(_particle->randstate) +# define _random() kiss_random(state) +#endif + +#pragma acc routine +double _randnorm2(randstate_t* state); + +// Component writer interface +#define randnorm() _randnorm2(_particle->randstate) // NOTE: can't use _randnorm on GPU +#define rand01() _rand01(_particle->randstate) +#define randpm1() _randpm1(_particle->randstate) +#define rand0max(p1) _rand0max(p1, _particle->randstate) +#define randminmax(p1, p2) _randminmax(p1, p2, _particle->randstate) +#define randtriangle() _randtriangle(_particle->randstate) + +// Mersenne Twister rng +uint32_t mt_random(void); +void mt_srandom (uint32_t x); +void mt_srandom_empty(); + +// KISS rng +#pragma acc routine +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed); +#pragma acc routine +uint64_t kiss_random(uint64_t state[7]); + +// Scrambler / hash function +#pragma acc routine seq +randstate_t _hash(randstate_t x); + +// internal RNG (transforms) interface +#pragma acc routine +double _rand01(randstate_t* state); +#pragma acc routine +double _randpm1(randstate_t* state); +#pragma acc routine +double _rand0max(double max, randstate_t* state); +#pragma acc routine +double _randminmax(double min, double max, randstate_t* state); +#pragma acc routine +double _randtriangle(randstate_t* state); + + +#ifdef USE_OPENCL +#include "opencl-lib.h" +#include "opencl-lib.c" +#endif + +#ifndef DANSE +int init(void); +int raytrace(_class_particle*); +int save(FILE *); +int finally(void); +int display(void); +#endif + + +/* GPU related algorithms =================================================== */ + +/* +* Divide-and-conquer strategy for parallel sort absorbed last. +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier); +#endif +long sort_absorb_last_serial(_class_particle* particles, long len); + + +/* simple vector algebra ==================================================== */ + + +#define vec_prod(x, y, z, x1, y1, z1, x2, y2, z2) \ + vec_prod_func(&x, &y, &z, x1, y1, z1, x2, y2, z2) +#pragma acc routine seq +mcstatic void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic double scalar_prod( + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic void norm_func(double *x, double *y, double *z); +#define NORM(x,y,z) norm_func(&x, &y, &z) + +#pragma acc routine seq +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z); + +/** + * Rotate the vector vx,vy,vz psi radians around the vector ax,ay,az + * and put the result in x,y,z. + */ +#define rotate(x, y, z, vx, vy, vz, phi, ax, ay, az) \ + do { \ + double mcrt_tmpx = (ax), mcrt_tmpy = (ay), mcrt_tmpz = (az); \ + double mcrt_vp, mcrt_vpx, mcrt_vpy, mcrt_vpz; \ + double mcrt_vnx, mcrt_vny, mcrt_vnz, mcrt_vn1x, mcrt_vn1y, mcrt_vn1z; \ + double mcrt_bx, mcrt_by, mcrt_bz; \ + double mcrt_cos, mcrt_sin; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vp = scalar_prod((vx), (vy), (vz), mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vpx = mcrt_vp*mcrt_tmpx; \ + mcrt_vpy = mcrt_vp*mcrt_tmpy; \ + mcrt_vpz = mcrt_vp*mcrt_tmpz; \ + mcrt_vnx = (vx) - mcrt_vpx; \ + mcrt_vny = (vy) - mcrt_vpy; \ + mcrt_vnz = (vz) - mcrt_vpz; \ + vec_prod(mcrt_bx, mcrt_by, mcrt_bz, \ + mcrt_tmpx, mcrt_tmpy, mcrt_tmpz, mcrt_vnx, mcrt_vny, mcrt_vnz); \ + mcrt_cos = cos((phi)); mcrt_sin = sin((phi)); \ + mcrt_vn1x = mcrt_vnx*mcrt_cos + mcrt_bx*mcrt_sin; \ + mcrt_vn1y = mcrt_vny*mcrt_cos + mcrt_by*mcrt_sin; \ + mcrt_vn1z = mcrt_vnz*mcrt_cos + mcrt_bz*mcrt_sin; \ + (x) = mcrt_vpx + mcrt_vn1x; \ + (y) = mcrt_vpy + mcrt_vn1y; \ + (z) = mcrt_vpz + mcrt_vn1z; \ + } while(0) + +/** + * Mirror (xyz) in the plane given by the point (rx,ry,rz) and normal (nx,ny,nz) + * + * TODO: This define is seemingly never used... + */ +#define mirror(x,y,z,rx,ry,rz,nx,ny,nz) \ + do { \ + double mcrt_tmpx= (nx), mcrt_tmpy = (ny), mcrt_tmpz = (nz); \ + double mcrt_tmpt; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_tmpt=scalar_prod((rx),(ry),(rz),mcrt_tmpx,mcrt_tmpy,mcrt_tmpz); \ + (x) = rx -2 * mcrt_tmpt*mcrt_rmpx; \ + (y) = ry -2 * mcrt_tmpt*mcrt_rmpy; \ + (z) = rz -2 * mcrt_tmpt*mcrt_rmpz; \ + } while (0) + +#pragma acc routine +Coords coords_set(MCNUM x, MCNUM y, MCNUM z); +#pragma acc routine +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z); +#pragma acc routine +Coords coords_add(Coords a, Coords b); +#pragma acc routine +Coords coords_sub(Coords a, Coords b); +#pragma acc routine +Coords coords_neg(Coords a); +#pragma acc routine +Coords coords_scale(Coords b, double scale); +#pragma acc routine +double coords_sp(Coords a, Coords b); +#pragma acc routine +Coords coords_xp(Coords b, Coords c); +#pragma acc routine +double coords_len(Coords a); +#pragma acc routine seq +void coords_print(Coords a); +#pragma acc routine seq +mcstatic void coords_norm(Coords* c); + +#pragma acc routine seq +void rot_set_rotation(Rotation t, double phx, double phy, double phz); +#pragma acc routine seq +int rot_test_identity(Rotation t); +#pragma acc routine seq +void rot_mul(Rotation t1, Rotation t2, Rotation t3); +#pragma acc routine seq +void rot_copy(Rotation dest, Rotation src); +#pragma acc routine seq +void rot_transpose(Rotation src, Rotation dst); +#pragma acc routine seq +Coords rot_apply(Rotation t, Coords a); + +#pragma acc routine seq +void mccoordschange(Coords a, Rotation t, _class_particle *particle); +#pragma acc routine seq +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz); + +double mcestimate_error(double N, double p1, double p2); +void mcreadparams(void); + +/* this is now in mcstas-r.h and mcxtrace-r.h as the number of state parameters +is no longer equal */ + +_class_particle mcgenstate(void); + +// trajectory/shape intersection routines +#pragma acc routine seq +int inside_rectangle(double, double, double, double); +#pragma acc routine seq +int box_intersect(double *dt_in, double *dt_out, double x, double y, double z, + double vx, double vy, double vz, double dx, double dy, double dz); +#pragma acc routine seq +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h); +#pragma acc routine seq +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r); +// second order equation roots +#pragma acc routine seq +int solve_2nd_order(double *t1, double *t2, + double A, double B, double C); + +// random vector generation to shape +// defines silently introducing _particle as the last argument +#define randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius) \ + _randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius, _particle) +#define randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A) \ + _randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, _particle) +#define randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order) \ + _randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order, _particle) +// defines forwarding to "inner" functions +#define randvec_target_sphere randvec_target_circle +#define randvec_target_rect(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9) \ + randvec_target_rect_real(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,0,0,0,1) +// headers for randvec +#pragma acc routine seq +void _randvec_target_circle(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double radius, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_angular(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double height, + double width, Rotation A, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, double height, double width, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle); + + +// this is the main() +int mccode_main(int argc, char *argv[]); + + +#endif /* !MCCODE_H */ + +#ifndef MCCODE_R_IO_H +#define MCCODE_R_IO_H "$Revision$" + +#if (USE_NEXUS == 0) +#undef USE_NEXUS +#endif + +#ifndef CHAR_BUF_LENGTH +#define CHAR_BUF_LENGTH 1024 +#endif + + +/* I/O section part ========================================================= */ + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + + +/* main DETECTOR structure which stores most information to write to data files */ +struct mcdetector_struct { + char filename[CHAR_BUF_LENGTH]; /* file name of monitor */ + double Position[3]; /* position of detector component*/ + char position[CHAR_BUF_LENGTH]; /* position of detector component (string)*/ + Rotation Rotation; /* position of detector component*/ + char options[CHAR_BUF_LENGTH]; /* Monitor_nD style list-mode'options' (string)*/ + char component[CHAR_BUF_LENGTH]; /* component instance name */ + char nexuscomp[CHAR_BUF_LENGTH]; /* component naming in NeXus/HDF case */ + char instrument[CHAR_BUF_LENGTH]; /* instrument name */ + char type[CHAR_BUF_LENGTH]; /* data type, e.g. 0d, 1d, 2d, 3d */ + char user[CHAR_BUF_LENGTH]; /* user name, e.g. HOME */ + char date[CHAR_BUF_LENGTH]; /* date of simulation end/write time */ + char title[CHAR_BUF_LENGTH]; /* title of detector */ + char xlabel[CHAR_BUF_LENGTH]; /* X axis label */ + char ylabel[CHAR_BUF_LENGTH]; /* Y axis label */ + char zlabel[CHAR_BUF_LENGTH]; /* Z axis label */ + char xvar[CHAR_BUF_LENGTH]; /* X variable name */ + char yvar[CHAR_BUF_LENGTH]; /* Y variable name */ + char zvar[CHAR_BUF_LENGTH]; /* Z variable name */ + char ncount[CHAR_BUF_LENGTH]; /* number of events initially generated */ + char limits[CHAR_BUF_LENGTH]; /* X Y Z limits, e.g. [xmin xmax ymin ymax zmin zmax] */ + char variables[CHAR_BUF_LENGTH]; /* variables written into data block */ + char statistics[CHAR_BUF_LENGTH]; /* center, mean and half width along axis */ + char signal[CHAR_BUF_LENGTH]; /* min max and mean of signal (data block) */ + char values[CHAR_BUF_LENGTH]; /* integrated values e.g. [I I_err N] */ + double xmin,xmax; /* min max of axes */ + double ymin,ymax; + double zmin,zmax; + double intensity; /* integrated values for data block */ + double error; + double events; + double min; /* statistics for data block */ + double max; + double mean; + double centerX; /* statistics for axes */ + double halfwidthX; + double centerY; + double halfwidthY; + int rank; /* dimensionaly of monitor, e.g. 0 1 2 3 */ + char istransposed; /* flag to transpose matrix for some formats */ + + long m,n,p; /* dimensions of data block and along axes */ + long date_l; /* same as date, but in sec since 1970 */ + + double *p0, *p1, *p2; /* pointers to saved data, NULL when freed */ + char format[CHAR_BUF_LENGTH]; /* format for file generation */ +}; + +typedef struct mcdetector_struct MCDETECTOR; + +static char *dirname = NULL; /* name of output directory */ +static char *siminfo_name = "mccode"; /* default output sim file name */ +char *mcformat = NULL; /* NULL (default) or a specific format */ + +/* file I/O definitions and function prototypes */ + +#ifndef MC_EMBEDDED_RUNTIME /* the mcstatic variables (from mccode-r.c) */ +extern FILE * siminfo_file; /* handle to the output siminfo file */ +extern int mcgravitation; /* flag to enable gravitation */ +extern int mcdotrace; /* flag to print MCDISPLAY messages */ +#else +mcstatic FILE *siminfo_file = NULL; +#endif + +/* I/O function prototypes ================================================== */ + +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle); + +/* output functions */ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, long n, + double *p0, double *p1, double *p2, char *f, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, long m, + long n, double *p0, double *p1, double *p2, char *f, + char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rot,char* options, int index); + +/* wrappers to output functions, that automatically set NAME and POSITION */ +#define DETECTOR_OUT(p0,p1,p2) mcdetector_out_0D(NAME_CURRENT_COMP,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_0D(t,p0,p1,p2) mcdetector_out_0D(t,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f) \ + mcdetector_out_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f) \ + mcdetector_out_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) + +#ifdef USE_NEXUS +#include "napi.h" +NXhandle nxhandle; +#endif + +#endif /* ndef MCCODE_R_IO_H */ + +#endif /* MCCODE_R_H */ +/* End of file "mccode-r.h". */ + +/* embedding file "mcstas-r.h" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system header for McStas. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int mcnumipar; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM instrument.counter_AbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#define MCSTAS_R_H "$Revision$" + +/* Following part is only embedded when not redundent with mcstas.h */ + +#ifndef MCCODE_H + +#define AA2MS 629.622368 /* Convert k[1/AA] to v[m/s] */ +#define MS2AA 1.58825361e-3 /* Convert v[m/s] to k[1/AA] */ +#define K2V AA2MS +#define V2K MS2AA +#define Q2V AA2MS +#define V2Q MS2AA +#define SE2V 437.393377 /* Convert sqrt(E)[meV] to v[m/s] */ +#define VS2E 5.22703725e-6 /* Convert (v[m/s])**2 to E[meV] */ + +#define SCATTER0 do {DEBUG_SCATTER(); SCATTERED++;} while(0) +#define SCATTER SCATTER0 + +#define JUMPTOCOMP(comp) mcneutron->_index = INDEX_COMP(comp); + +#define MAGNET_ON \ + do { \ + mcMagnet = 1; \ + } while(0) + +#define MAGNET_OFF \ + do { \ + mcMagnet = 0; \ + } while(0) + +#define ALLOW_BACKPROP \ + do { \ + allow_backprop = 1; \ + } while(0) + +#define DISALLOW_BACKPROP \ + do { \ + allow_backprop = 0; \ + } while(0) + +#define PROP_MAGNET(dt) \ + do { \ + } while (0) + /* change coordinates from local system to magnet system */ +/* Rotation rotLM, rotTemp; \ + Coords posLM = coords_sub(POS_A_CURRENT_COMP, mcMagnetPos); \ + rot_transpose(ROT_A_CURRENT_COMP, rotTemp); \ + rot_mul(rotTemp, mcMagnetRot, rotLM); \ + mcMagnetPrecession(x, y, z, t, vx, vy, vz, \ + &sx, &sy, &sz, dt, posLM, rotLM); \ + } while(0) +*/ + +#define mcPROP_DT(dt) \ + do { \ + if (mcMagnet && dt > 0) PROP_MAGNET(dt);\ + x += vx*(dt); \ + y += vy*(dt); \ + z += vz*(dt); \ + t += (dt); \ + if (isnan(p) || isinf(p)) { ABSORB; }\ + } while(0) + +/* ADD: E. Farhi, Aug 6th, 2001 PROP_GRAV_DT propagation with acceleration */ +#define PROP_GRAV_DT(dt, Ax, Ay, Az) \ + do { \ + if(dt < 0 && allow_backprop == 0) { ABSORB; }\ + if (mcMagnet) /*printf("Spin precession gravity\n")*/; \ + x += vx*(dt) + (Ax)*(dt)*(dt)/2; \ + y += vy*(dt) + (Ay)*(dt)*(dt)/2; \ + z += vz*(dt) + (Az)*(dt)*(dt)/2; \ + vx += (Ax)*(dt); \ + vy += (Ay)*(dt); \ + vz += (Az)*(dt); \ + t += (dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_DT(dt) \ + do { \ + if(dt < 0 && allow_backprop == 0) { RESTORE=1; ABSORB; }; \ + if (mcgravitation) { Coords mcLocG; double mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + PROP_GRAV_DT(dt, mc_gx, mc_gy, mc_gz); } \ + else mcPROP_DT(dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_Z0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gz/2, -vz, -z); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); z=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Z0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_Z0 \ + do { \ + double mc_dt; \ + if(vz == 0) { ABSORB; }; \ + mc_dt = -z/vz; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + z = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_X0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gx/2, -vx, -x); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); x=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_X0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_X0 \ + do { \ + double mc_dt; \ + if(vx == 0) { ABSORB; }; \ + mc_dt = -x/vx; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + x = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_Y0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gy/2, -vy, -y); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); y=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Y0; \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define mcPROP_Y0 \ + do { \ + double mc_dt; \ + if(vy == 0) { ABSORB; }; \ + mc_dt = -y/vy; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + y = 0; \ + DISALLOW_BACKPROP; \ + } while(0) + + +#ifdef DEBUG + +#define DEBUG_STATE() if(!mcdotrace); else \ + printf("STATE: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); +#define DEBUG_SCATTER() if(!mcdotrace); else \ + printf("SCATTER: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); + +#else + +#define DEBUG_STATE() +#define DEBUG_SCATTER() + +#endif + +#endif /* !MCCODE_H */ + +#endif /* MCSTAS_R_H */ +/* End of file "mcstas-r.h". */ + +/* embedding file "mccode-r.c" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y/McXtrace X.Y +* Version: $Revision$ +* +* Runtime system for McStas and McXtrace. +* Embedded within instrument in runtime mode. +* Contains SECTIONS: +* MPI handling (sum, send, recv) +* format definitions +* I/O +* mcdisplay support +* random numbers +* coordinates handling +* vectors math (solve 2nd order, normals, randvec...) +* parameter handling +* signal and main handlers +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + + +/** Include header files to avoid implicit declarations (not allowed on LLVM) */ +#include +#include + +// UNIX specific headers (non-Windows) +#if defined(__unix__) || defined(__APPLE__) +#include +#include +#endif + + +#ifndef DANSE +#ifdef MC_ANCIENT_COMPATIBILITY +int traceenabled = 0; +int defaultmain = 0; +#endif +/* else defined directly in the McCode generated C code */ + +static long mcseed = 0; /* seed for random generator */ +#pragma acc declare create ( mcseed ) +static long mcstartdate = 0; /* start simulation time */ +static int mcdisable_output_files = 0; /* --no-output-files */ +mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ +mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ +mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ +mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ +#pragma acc declare create ( mcdotrace ) +int mcallowbackprop = 0; /* flag to enable negative/backprop */ + +/* OpenACC-related segmentation parameters: */ +int vecsize = 128; +int numgangs = 7813; +long gpu_innerloop = 2147483647; + +/* Monitor_nD list/buffer-size default */ +/* Starting value may be defined using -DND_BUFFER=N */ +/* Can further be controlled dynamically using --bufsiz input */ +long MONND_BUFSIZ = 10000000; +#ifdef ND_BUFFER +MONND_BUFSIZ = ND_BUFFER; +#endif + + +/* Number of particle histories to simulate. */ +#ifdef NEUTRONICS +mcstatic unsigned long long int mcncount = 1; +mcstatic unsigned long long int mcrun_num = 0; +#else +#ifdef MCDEFAULT_NCOUNT +mcstatic unsigned long long int mcncount = MCDEFAULT_NCOUNT; +#else +mcstatic unsigned long long int mcncount = 1000000; +#endif +#pragma acc declare create ( mcncount ) +mcstatic unsigned long long int mcrun_num = 0; +#pragma acc declare create ( mcrun_num ) +#endif /* NEUTRONICS */ + +#else +#include "mcstas-globals.h" +#endif /* !DANSE */ + +#ifndef NX_COMPRESSION +#define NX_COMPRESSION NX_COMP_NONE +#endif + +/* String nullification on GPU and other replacements */ +#ifdef OPENACC +int noprintf() { + return 0; +} + +int str_comp(char *str1, char *str2) { + while (*str1 && *str1 == *str2) { + str1++; + str2++; + } + return (*str1 - *str2); +} + +size_t str_len(const char *s) +{ + size_t len = 0; + if(s != NULL) + { + while(*s != '\0') + { + ++len; + ++s; + } + } + return len; +} + +#endif + +/* SECTION: Predefine (component) parameters ================================= */ + +int nans_match(double a, double b){ + return (*(uint64_t*)&a == *(uint64_t*)&b); +} +int is_unset(double x){ + return nans_match(x, UNSET); +} +int is_set(double x){ + return !nans_match(x, UNSET); +} +int is_valid(double x){ + return !isnan(x)||is_unset(x); +} +int all_unset(int n, ...){ + va_list ptr; + va_start(ptr, n); + int ret=1; + for (int i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Allreduce((double*)(sbuf+offset), (double*)(rbuf+offset), + length, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + for (i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Send((void*)((char*)sbuf+offset*dsize), length, dtype, dest, tag++, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Send */ + +/******************************************************************************* +* mc_MPI_Recv: Receives arrays from MPI nodes by blocks to avoid buffer limit +* the buffer must have been allocated previously. +*******************************************************************************/ +int mc_MPI_Recv(void *sbuf, + long count, MPI_Datatype dtype, + int source) +{ + int dsize; + long offset=0; + int tag=1; + int length=MPI_REDUCE_BLOCKSIZE; /* defined in mccode-r.h */ + + if (!sbuf || count <= 0) return(MPI_SUCCESS); /* nothing to recv */ + MPI_Type_size(dtype, &dsize); + + while (offset < count) { + if (offset+length > count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Recv((void*)((char*)sbuf+offset*dsize), length, dtype, source, tag++, + MPI_COMM_WORLD, MPI_STATUS_IGNORE) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Recv */ + +#endif /* USE_MPI */ + +/* SECTION: parameters handling ============================================= */ + +/* Instrument input parameter type handling. */ +/******************************************************************************* +* mcparm_double: extract double value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_double(char *s, void *vptr) +{ + char *p; + double *v = (double *)vptr; + + if (!s) { *v = 0; return(1); } + *v = strtod(s, &p); + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_double: display parameter type double +*******************************************************************************/ +static char * +mcparminfo_double(char *parmname) +{ + return "double"; +} + +/******************************************************************************* +* mcparmerror_double: display error message when failed extract double +*******************************************************************************/ +static void +mcparmerror_double(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for floating point parameter %s (mcparmerror_double)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_double: convert double to string +*******************************************************************************/ +static void +mcparmprinter_double(char *f, void *vptr) +{ + double *v = (double *)vptr; + sprintf(f, "%g", *v); +} + +/******************************************************************************* +* mcparm_int: extract int value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_int(char *s, void *vptr) +{ + char *p; + int *v = (int *)vptr; + long x; + + if (!s) { *v = 0; return(1); } + *v = 0; + x = strtol(s, &p, 10); + if(x < INT_MIN || x > INT_MAX) + return 0; /* Under/overflow */ + *v = x; + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_int: display parameter type int +*******************************************************************************/ +static char * +mcparminfo_int(char *parmname) +{ + return "int"; +} + +/******************************************************************************* +* mcparmerror_int: display error message when failed extract int +*******************************************************************************/ +static void +mcparmerror_int(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for integer parameter %s (mcparmerror_int)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_int: convert int to string +*******************************************************************************/ +static void +mcparmprinter_int(char *f, void *vptr) +{ + int *v = (int *)vptr; + sprintf(f, "%d", *v); +} + +/******************************************************************************* +* mcparm_string: extract char* value from 's' into 'vptr' (copy) +*******************************************************************************/ +static int +mcparm_string(char *s, void *vptr) +{ + char **v = (char **)vptr; + if (!s) { *v = NULL; return(1); } + *v = (char *)malloc(strlen(s) + 1); + if(*v == NULL) + { + exit(-fprintf(stderr, "Error: Out of memory %li (mcparm_string).\n", (long)strlen(s) + 1)); + } + strcpy(*v, s); + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_string: display parameter type string +*******************************************************************************/ +static char * +mcparminfo_string(char *parmname) +{ + return "string"; +} + +/******************************************************************************* +* mcparmerror_string: display error message when failed extract string +*******************************************************************************/ +static void +mcparmerror_string(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for string parameter %s (mcparmerror_string)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_string: convert string to string (including esc chars) +*******************************************************************************/ +static void +mcparmprinter_string(char *f, void *vptr) +{ + char **v = (char **)vptr; + char *p; + + if (!*v) { *f='\0'; return; } + strcpy(f, ""); + for(p = *v; *p != '\0'; p++) + { + switch(*p) + { + case '\n': + strcat(f, "\\n"); + break; + case '\r': + strcat(f, "\\r"); + break; + case '"': + strcat(f, "\\\""); + break; + case '\\': + strcat(f, "\\\\"); + break; + default: + strncat(f, p, 1); + } + } + /* strcat(f, "\""); */ +} /* mcparmprinter_string */ + +/* now we may define the parameter structure, using previous functions */ +static struct + { + int (*getparm)(char *, void *); + char * (*parminfo)(char *); + void (*error)(char *, char *); + void (*printer)(char *, void *); +} mcinputtypes[] = { + { + mcparm_int, mcparminfo_int, mcparmerror_int, + mcparmprinter_int + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + } +}; + +/******************************************************************************* +* mcestimate_error: compute sigma from N,p,p2 in Gaussian large numbers approx +*******************************************************************************/ +double mcestimate_error(double N, double p1, double p2) +{ + double pmean, n1; + if(N <= 1) + return p1; + pmean = p1 / N; + n1 = N - 1; + /* Note: underflow may cause p2 to become zero; the fabs() below guards + against this. */ + return sqrt((N/n1)*fabs(p2 - pmean*pmean)); +} + +double (*mcestimate_error_p) + (double V2, double psum, double p2sum)=mcestimate_error; + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + +#ifndef MCCODE_R_IO_C +#define MCCODE_R_IO_C "$Revision$" + +/* SECTION: file i/o handling ================================================ */ + +#ifndef HAVE_STRCASESTR +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle) +{ + int nlen = strlen(needle); + int hlen = strlen(haystack) - nlen + 1; + int i; + + for (i = 0; i < hlen; i++) { + int j; + for (j = 0; j < nlen; j++) { + unsigned char c1 = haystack[i+j]; + unsigned char c2 = needle[j]; + if (toupper(c1) != toupper(c2)) + goto next; + } + return (char *) haystack + i; + next: + ; + } + return NULL; +} + + +#endif +#ifndef HAVE_STRCASECMP +int strcasecmp( const char *s1, const char *s2 ) +{ + int c1, c2; + do { + c1 = tolower( (unsigned char) *s1++ ); + c2 = tolower( (unsigned char) *s2++ ); + } while (c1 == c2 && c1 != 0); + return c2 > c1 ? -1 : c1 > c2; +} +#endif + +#ifndef STRACPY +/* this is a replacement to strncpy, but ensures that the copy ends with NULL */ +/* http://stracpy.blogspot.fr/2011/04/stracpy-strncpy-replacement.html */ +#define STRACPY +char *stracpy(char *destination, const char *source, size_t amount) +{ + if (!destination || !source || !amount) return(NULL); + while(amount--) + if((*destination++ = *source++) == '\0') break; + *destination = '\0'; + return destination; +} +#endif + +/******************************************************************************* +* mcfull_file: allocates a full file name=dirname+file. Catenate extension if missing. +*******************************************************************************/ +char *mcfull_file(char *name, char *ext) +{ + int dirlen=0; + char *mem =NULL; + + dirlen = dirname ? strlen(dirname) : 0; + mem = (char*)malloc(dirlen + strlen(name) + CHAR_BUF_LENGTH); + if(!mem) { + exit(-fprintf(stderr, "Error: Out of memory %li (mcfull_file)\n", (long)(dirlen + strlen(name) + 256))); + } + strcpy(mem, ""); + + /* prepend directory name to path if name does not contain a path */ + if (dirlen > 0 && !strchr(name, MC_PATHSEP_C)) { + strcat(mem, dirname); + strcat(mem, MC_PATHSEP_S); + } /* dirlen */ + + strcat(mem, name); + if (!strchr(name, '.') && ext && strlen(ext)) + { /* add extension if not in file name already */ + strcat(mem, "."); + strcat(mem, ext); + } + return(mem); +} /* mcfull_file */ + +/******************************************************************************* +* mcnew_file: opens a new file within dirname if non NULL +* the file is opened in "a" (append, create if does not exist) +* the extension 'ext' is added if the file name does not include one. +* the last argument is set to 0 if file did not exist, else to 1. +*******************************************************************************/ +FILE *mcnew_file(char *name, char *ext, int *exists) +{ + char *mem; + FILE *file=NULL; + + if (!name || strlen(name) == 0 || mcdisable_output_files) return(NULL); + + mem = mcfull_file(name, ext); /* create dirname/name.ext */ + + /* check for existence */ + file = fopen(mem, "r"); /* for reading -> fails if does not exist */ + if (file) { + fclose(file); + *exists=1; + } else + *exists=0; + + /* open the file for writing/appending */ +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + /* NXhandle nxhandle is defined in the .h with USE_NEXUS */ + NXaccess mode = (*exists ? NXACC_CREATE5 | NXACC_RDWR : NXACC_CREATE5); + + if (NXopen(mem, mode, &nxhandle) != NX_OK) + file = NULL; + else + file = (FILE*)&nxhandle; /* to make it non NULL */ + } else +#endif + file = fopen(mem, "a+"); + + if(!file) + fprintf(stderr, "Warning: could not open output file '%s' for %s (mcnew_file)\n", + mem, *exists ? "append" : "create"); + free(mem); + + return file; +} /* mcnew_file */ + +/******************************************************************************* +* mcdetector_statistics: compute detector statistics, error bars, [x I I_err N] 1D +* RETURN: updated detector structure +* Used by: detector_import +*******************************************************************************/ +MCDETECTOR mcdetector_statistics( + MCDETECTOR detector) +{ + + if (!detector.p1 || !detector.m) + return(detector); + + /* compute statistics and update MCDETECTOR structure ===================== */ + double sum_z = 0, min_z = 0, max_z = 0; + double fmon_x =0, smon_x = 0, fmon_y =0, smon_y=0, mean_z=0; + double Nsum=0, P2sum=0; + + double sum_xz = 0, sum_yz = 0, sum_x = 0, sum_y = 0, sum_x2z = 0, sum_y2z = 0; + int i,j; + char hasnan=0, hasinf=0; + char israw = ((char*)strcasestr(detector.format,"raw") != NULL); + double *this_p1=NULL; /* new 1D McCode array [x I E N]. Freed after writing data */ + + /* if McCode/PGPLOT and rank==1 we create a new m*4 data block=[x I E N] */ + if (detector.rank == 1 && strcasestr(detector.format,"McCode")) { + this_p1 = (double *)calloc(detector.m*detector.n*detector.p*4, sizeof(double)); + if (!this_p1) + exit(-fprintf(stderr, "Error: Out of memory creating %zi 1D " MCCODE_STRING " data set for file '%s' (detector_import)\n", + detector.m*detector.n*detector.p*4*sizeof(double*), detector.filename)); + } + + max_z = min_z = detector.p1[0]; + + /* compute sum and moments (not for lists) */ + if (!strcasestr(detector.format,"list") && detector.m) + for(j = 0; j < detector.n*detector.p; j++) + { + for(i = 0; i < detector.m; i++) + { + double x,y,z; + double N, E; + long index= !detector.istransposed ? i*detector.n*detector.p + j : i+j*detector.m; + char hasnaninf=0; + + if (detector.m) + x = detector.xmin + (i + 0.5)/detector.m*(detector.xmax - detector.xmin); + else x = 0; + if (detector.n && detector.p) + y = detector.ymin + (j + 0.5)/detector.n/detector.p*(detector.ymax - detector.ymin); + else y = 0; + z = detector.p1[index]; + N = detector.p0 ? detector.p0[index] : 1; + E = detector.p2 ? detector.p2[index] : 0; + if (detector.p2 && !israw) + detector.p2[index] = (*mcestimate_error_p)(detector.p0[index],detector.p1[index],detector.p2[index]); /* set sigma */ + + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + /* fill-in 1D McCode array [x I E N] */ + this_p1[index*4] = x; + this_p1[index*4+1] = z; + this_p1[index*4+2] = detector.p2 ? detector.p2[index] : 0; + this_p1[index*4+3] = N; + } + + if (isnan(z) || isnan(E) || isnan(N)) hasnaninf=hasnan=1; + if (isinf(z) || isinf(E) || isinf(N)) hasnaninf=hasinf=1; + + /* compute stats integrals */ + if (!hasnaninf) { + sum_xz += x*z; + sum_yz += y*z; + sum_x += x; + sum_y += y; + sum_z += z; + sum_x2z += x*x*z; + sum_y2z += y*y*z; + if (z > max_z) max_z = z; + if (z < min_z) min_z = z; + + Nsum += N; + P2sum += E; + } + + } + } /* for j */ + + /* compute 1st and 2nd moments. For lists, sum_z=0 so this is skipped. */ + if (sum_z && detector.n*detector.m*detector.p) + { + fmon_x = sum_xz/sum_z; + fmon_y = sum_yz/sum_z; + smon_x = sum_x2z/sum_z-fmon_x*fmon_x; smon_x = smon_x > 0 ? sqrt(smon_x) : 0; + smon_y = sum_y2z/sum_z-fmon_y*fmon_y; smon_y = smon_y > 0 ? sqrt(smon_y) : 0; + mean_z = sum_z/detector.n/detector.m/detector.p; + } + /* store statistics into detector */ + detector.intensity = sum_z; + detector.error = Nsum ? (*mcestimate_error_p)(Nsum, sum_z, P2sum) : 0; + detector.events = Nsum; + detector.min = min_z; + detector.max = max_z; + detector.mean = mean_z; + detector.centerX = fmon_x; + detector.halfwidthX= smon_x; + detector.centerY = fmon_y; + detector.halfwidthY= smon_y; + + /* if McCode/PGPLOT and rank==1 replace p1 with new m*4 1D McCode and clear others */ + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + + detector.p1 = this_p1; + detector.n = detector.m; detector.m = 4; + detector.p0 = detector.p2 = NULL; + detector.istransposed = 1; + } + + if (detector.n*detector.m*detector.p > 1) + snprintf(detector.signal, CHAR_BUF_LENGTH, + "Min=%g; Max=%g; Mean=%g;", detector.min, detector.max, detector.mean); + else + strcpy(detector.signal, "None"); + snprintf(detector.values, CHAR_BUF_LENGTH, + "%g %g %g", detector.intensity, detector.error, detector.events); + + switch (detector.rank) { + case 1: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g;", + detector.centerX, detector.halfwidthX); break; + case 2: + case 3: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g; Y0=%g; dY=%g;", + detector.centerX, detector.halfwidthX, detector.centerY, detector.halfwidthY); + break; + default: strcpy(detector.statistics, "None"); + } + + if (hasnan) + printf("WARNING: Nan detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + if (hasinf) + printf("WARNING: Inf detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + + return(detector); + +} /* mcdetector_statistics */ + +/******************************************************************************* +* detector_import: build detector structure, merge non-lists from MPI +* compute basic stat, write "Detector:" line +* RETURN: detector structure. Invalid data if detector.p1 == NULL +* Invalid detector sets m=0 and filename="" +* Simulation data sets m=0 and filename=siminfo_name +* This function is equivalent to the old 'mcdetector_out', returning a structure +*******************************************************************************/ +MCDETECTOR detector_import( + char *format, + char *component, char *title, + long m, long n, long p, + char *xlabel, char *ylabel, char *zlabel, + char *xvar, char *yvar, char *zvar, + double x1, double x2, double y1, double y2, double z1, double z2, + char *filename, + double *p0, double *p1, double *p2, + Coords position, Rotation rotation, int index) +{ + time_t t; /* for detector.date */ + long date_l; /* date as a long number */ + char istransposed=0; + char c[CHAR_BUF_LENGTH]; /* temp var for signal label */ + + MCDETECTOR detector; + + /* build MCDETECTOR structure ============================================= */ + /* make sure we do not have NULL for char fields */ + + /* these also apply to simfile */ + strncpy (detector.filename, filename ? filename : "", CHAR_BUF_LENGTH); + strncpy (detector.format, format ? format : "McCode" , CHAR_BUF_LENGTH); + /* add extension if missing */ + if (strlen(detector.filename) && !strchr(detector.filename, '.')) + { /* add extension if not in file name already */ + strcat(detector.filename, ".dat"); + } + strncpy (detector.component, component ? component : MCCODE_STRING " component", CHAR_BUF_LENGTH); + #ifdef USE_NEXUS + char pref[5]; + if (index-1 < 10) { + sprintf(pref,"000"); + } else if (index-1 < 100) { + sprintf(pref,"00"); + } else if (index-1 < 1000) { + sprintf(pref,"0"); + } else if (index-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(detector.nexuscomp,"%s%d_%s",pref,index-1,detector.component); + #endif + + snprintf(detector.instrument, CHAR_BUF_LENGTH, "%s (%s)", instrument_name, instrument_source); + snprintf(detector.user, CHAR_BUF_LENGTH, "%s on %s", + getenv("USER") ? getenv("USER") : MCCODE_NAME, + getenv("HOST") ? getenv("HOST") : "localhost"); + time(&t); /* get current write time */ + date_l = (long)t; /* same but as a long */ + snprintf(detector.date, CHAR_BUF_LENGTH, "%s", ctime(&t)); + if (strlen(detector.date)) detector.date[strlen(detector.date)-1] = '\0'; /* remove last \n in date */ + detector.date_l = date_l; + + if (!mcget_run_num() || mcget_run_num() >= mcget_ncount()) + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%llu", mcget_ncount() +#ifdef USE_MPI +*mpi_node_count +#endif + ); + else + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%g/%g", (double)mcget_run_num(), (double)mcget_ncount()); + + detector.p0 = p0; + detector.p1 = p1; + detector.p2 = p2; + + /* handle transposition (not for NeXus) */ + if (!strcasestr(detector.format, "NeXus")) { + if (m<0 || n<0 || p<0) istransposed = !istransposed; + if (strcasestr(detector.format, "transpose")) istransposed = !istransposed; + if (istransposed) { /* do the swap once for all */ + long i=m; m=n; n=i; + } + } + + m=labs(m); n=labs(n); p=labs(p); /* make sure dimensions are positive */ + detector.istransposed = istransposed; + + /* determine detector rank (dimensionality) */ + if (!m || !n || !p || !p1) detector.rank = 4; /* invalid: exit with m=0 filename="" */ + else if (m*n*p == 1) detector.rank = 0; /* 0D */ + else if (n == 1 || m == 1) detector.rank = 1; /* 1D */ + else if (p == 1) detector.rank = 2; /* 2D */ + else detector.rank = 3; /* 3D */ + + /* from rank, set type */ + switch (detector.rank) { + case 0: strcpy(detector.type, "array_0d"); m=n=p=1; break; + case 1: snprintf(detector.type, CHAR_BUF_LENGTH, "array_1d(%ld)", m*n*p); m *= n*p; n=p=1; break; + case 2: snprintf(detector.type, CHAR_BUF_LENGTH, "array_2d(%ld, %ld)", m, n*p); n *= p; p=1; break; + case 3: snprintf(detector.type, CHAR_BUF_LENGTH, "array_3d(%ld, %ld, %ld)", m, n, p); break; + default: m=0; strcpy(detector.type, ""); strcpy(detector.filename, "");/* invalid */ + } + + detector.m = m; + detector.n = n; + detector.p = p; + + /* these only apply to detector files ===================================== */ + + detector.Position[0]=position.x; + detector.Position[1]=position.y; + detector.Position[2]=position.z; + rot_copy(detector.Rotation,rotation); + snprintf(detector.position, CHAR_BUF_LENGTH, "%g %g %g", position.x, position.y, position.z); + /* may also store actual detector orientation in the future */ + + strncpy(detector.title, title && strlen(title) ? title : component, CHAR_BUF_LENGTH); + strncpy(detector.xlabel, xlabel && strlen(xlabel) ? xlabel : "X", CHAR_BUF_LENGTH); /* axis labels */ + strncpy(detector.ylabel, ylabel && strlen(ylabel) ? ylabel : "Y", CHAR_BUF_LENGTH); + strncpy(detector.zlabel, zlabel && strlen(zlabel) ? zlabel : "Z", CHAR_BUF_LENGTH); + strncpy(detector.xvar, xvar && strlen(xvar) ? xvar : "x", CHAR_BUF_LENGTH); /* axis variables */ + strncpy(detector.yvar, yvar && strlen(yvar) ? yvar : detector.xvar, CHAR_BUF_LENGTH); + strncpy(detector.zvar, zvar && strlen(zvar) ? zvar : detector.yvar, CHAR_BUF_LENGTH); + + /* set "variables" as e.g. "I I_err N" */ + strcpy(c, "I "); + if (strlen(detector.zvar)) strncpy(c, detector.zvar,32); + else if (strlen(detector.yvar)) strncpy(c, detector.yvar,32); + else if (strlen(detector.xvar)) strncpy(c, detector.xvar,32); + + if (detector.rank == 1) + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s %s_err N", detector.xvar, c, c); + else + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s_err N", c, c); + + /* limits */ + detector.xmin = x1; + detector.xmax = x2; + detector.ymin = y1; + detector.ymax = y2; + detector.zmin = z1; + detector.zmax = z2; + if (abs(detector.rank) == 1) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g", x1, x2); + else if (detector.rank == 2) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g", x1, x2, y1, y2); + else + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g %g %g", x1, x2, y1, y2, z1, z2); + + /* if MPI and nodes_nb > 1: reduce data sets when using MPI =============== */ +#ifdef USE_MPI + if (!strcasestr(detector.format,"list") && mpi_node_count > 1 && m) { + /* we save additive data: reduce everything into mpi_node_root */ + if (p0) mc_MPI_Sum(p0, m*n*p); + if (p1) mc_MPI_Sum(p1, m*n*p); + if (p2) mc_MPI_Sum(p2, m*n*p); + if (!p0) { /* additive signal must be then divided by the number of nodes */ + int i; + for (i=0; i CHAR_BUF_LENGTH) break; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(Parameters) + strlen(ThisParam) + 1 >= CHAR_BUF_LENGTH) break; + strcat(Parameters, ThisParam); + } + + /* output data ============================================================ */ + if (f != stdout) + fprintf(f, "%sFile: %s%c%s\n", pre, dirname, MC_PATHSEP_C, siminfo_name); + else + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + + fprintf(f, "%sSource: %s\n", pre, instrument_source); + fprintf(f, "%sParameters: %s\n", pre, Parameters); + + fprintf(f, "%sTrace_enabled: %s\n", pre, traceenabled ? "yes" : "no"); + fprintf(f, "%sDefault_main: %s\n", pre, defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "yes"); +#else + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "no"); +#endif + + fflush(f); +} /* mcinfo_out */ + +/******************************************************************************* +* mcruninfo_out: output simulation tags/info (both in SIM and data files) +* Used in: siminfo_init (ascii case), mcdetector_out_xD_ascii +*******************************************************************************/ +static void mcruninfo_out(char *pre, FILE *f) +{ + int i; + char Parameters[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + fprintf(f, "%sFormat: %s%s\n", pre, + mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME, + mcformat && strcasestr(mcformat,"McCode") ? " with text headers" : ""); + fprintf(f, "%sURL: %s\n", pre, "http://www.mccode.org"); + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + fprintf(f, "%sInstrument: %s\n", pre, instrument_source); + fprintf(f, "%sNcount: %llu\n", pre, mcget_ncount()); + fprintf(f, "%sTrace: %s\n", pre, mcdotrace ? "yes" : "no"); + fprintf(f, "%sGravitation: %s\n", pre, mcgravitation ? "yes" : "no"); + snprintf(Parameters, CHAR_BUF_LENGTH, "%ld", mcseed); + fprintf(f, "%sSeed: %s\n", pre, Parameters); + fprintf(f, "%sDirectory: %s\n", pre, dirname ? dirname : "."); +#ifdef USE_MPI + if (mpi_node_count > 1) + fprintf(f, "%sNodes: %i\n", pre, mpi_node_count); +#endif + + // TODO Consider replacing this by a a call to `mcparameterinfo_out(pre+"Param: ", f)` + /* output parameter string ================================================ */ + for(i = 0; i < numipar; i++) { + if (mcinputtable[i].par){ + /* Parameters with a default value */ + if(mcinputtable[i].val && strlen(mcinputtable[i].val)){ + (*mcinputtypes[mcinputtable[i].type].printer)(Parameters, mcinputtable[i].par); + fprintf(f, "%sParam: %s=%s\n", pre, mcinputtable[i].name, Parameters); + /* ... and those without */ + }else{ + fprintf(f, "%sParam: %s=NULL\n", pre, mcinputtable[i].name); + } + } + } + fflush(f); +} /* mcruninfo_out */ + +/******************************************************************************* + * @brief Print parameter information to the specified file + * @param pre any beginning-of-line padding + * @param f the output file + */ +static void mcparameterinfo_out(char * pre, FILE *f){ + if (!f || mcdisable_output_files) return; + + unsigned int nchar = 4; + for (int i=0; i < numipar; ++i){ + if (mcinputtable[i].par && mcinputtable[i].val && strlen(mcinputtable[i].val) > nchar) + nchar = strlen(mcinputtable[i].val); + } + char * buffer = calloc(nchar+1, sizeof(char)); + + if (!buffer) { + exit(1); + } + + for (int i=0; i < numipar; ++i) { + if (mcinputtable[i].par) { + char * name = mcinputtable[i].name; + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + mcinputtypes[mcinputtable[i].type].printer(buffer, mcinputtable[i].par); + } else { + strcpy(buffer, "NULL"); + } + if (strlen(mcinputtable[i].unit)){ + //fprintf(f, "%s%s %s (\"%s\") = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + fprintf(f, "%s%s %s/\"%s\" = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + } else { + fprintf(f, "%s%s %s = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, buffer); + } + } + } + + free(buffer); +} + +/******************************************************************************* +* siminfo_out: wrapper to fprintf(siminfo_file) +*******************************************************************************/ +void siminfo_out(char *format, ...) +{ + va_list ap; + + if(siminfo_file && !mcdisable_output_files) + { + va_start(ap, format); + vfprintf(siminfo_file, format, ap); + va_end(ap); + } +} /* siminfo_out */ + + +/******************************************************************************* +* mcdatainfo_out: output detector header +* mcdatainfo_out(prefix, file_handle, detector) writes info to data file +*******************************************************************************/ +static void +mcdatainfo_out(char *pre, FILE *f, MCDETECTOR detector) +{ + if (!f || !detector.m || mcdisable_output_files) return; + + /* output data ============================================================ */ + fprintf(f, "%sDate: %s (%li)\n", pre, detector.date, detector.date_l); + fprintf(f, "%stype: %s\n", pre, detector.type); + fprintf(f, "%sSource: %s\n", pre, detector.instrument); + fprintf(f, "%scomponent: %s\n", pre, detector.component); + fprintf(f, "%sposition: %s\n", pre, detector.position); + + fprintf(f, "%stitle: %s\n", pre, detector.title); + fprintf(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "%sNcount: %s\n" : + "%sratio: %s\n", pre, detector.ncount); + + if (strlen(detector.filename)) { + fprintf(f, "%sfilename: %s\n", pre, detector.filename); + } + + fprintf(f, "%sstatistics: %s\n", pre, detector.statistics); + fprintf(f, "%ssignal: %s\n", pre, detector.signal); + fprintf(f, "%svalues: %s\n", pre, detector.values); + + if (detector.rank >= 1) + { + fprintf(f, "%sxvar: %s\n", pre, detector.xvar); + fprintf(f, "%syvar: %s\n", pre, detector.yvar); + fprintf(f, "%sxlabel: %s\n", pre, detector.xlabel); + fprintf(f, "%sylabel: %s\n", pre, detector.ylabel); + if (detector.rank > 1) { + fprintf(f, "%szvar: %s\n", pre, detector.zvar); + fprintf(f, "%szlabel: %s\n", pre, detector.zlabel); + } + } + + fprintf(f, + abs(detector.rank)==1 ? + "%sxlimits: %s\n" : + "%sxylimits: %s\n", pre, detector.limits); + fprintf(f, "%svariables: %s\n", pre, + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + fflush(f); + +} /* mcdatainfo_out */ + +/* mcdetector_out_array_ascii: output a single array to a file + * m: columns + * n: rows + * p: array + * f: file handle (already opened) + */ +static void mcdetector_out_array_ascii(long m, long n, double *p, FILE *f, char istransposed) +{ + if(f) + { + int i,j; + for(j = 0; j < n; j++) + { + for(i = 0; i < m; i++) + { + fprintf(f, "%.10g ", p[!istransposed ? i*n + j : j*m+i]); + } + fprintf(f,"\n"); + } + } +} /* mcdetector_out_array_ascii */ + +/******************************************************************************* +* mcdetector_out_0D_ascii: called by mcdetector_out_0D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + /* Write data set information to simulation description file. */ + MPI_MASTER( + siminfo_out("\nbegin data\n"); // detector.component + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.component, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* write I I_err N */ + fprintf(outfile, "%g %g %g\n", + detector.intensity, detector.error, detector.events); + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); +} /* mcdetector_out_0D_ascii */ + +/******************************************************************************* +* mcdetector_out_1D_ascii: called by mcdetector_out_1D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* output the 1D array columns */ + mcdetector_out_array_ascii(detector.m, detector.n, detector.p1, outfile, detector.istransposed); + + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); + +} /* mcdetector_out_1D_ascii */ + +/******************************************************************************* +* mcdetector_out_2D_ascii: called by mcdetector_out_2D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write header only if file has just been created (not appending) */ + if (!exists) { + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + } + /* Add # Data entry for any write to the file (e.g. via -USR2, see GitHub issue #2174 ) */ + fprintf(outfile, "# Data [%s/%s] %s:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p1, + outfile, detector.istransposed); + if (detector.p2) { + fprintf(outfile, "# Errors [%s/%s] %s_err:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p2, + outfile, detector.istransposed); + } + if (detector.p0) { + fprintf(outfile, "# Events [%s/%s] N:\n", detector.component, detector.filename); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p0, + outfile, detector.istransposed); + } + fclose(outfile); + + if (!exists) { + if (strcasestr(detector.format, "list")) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } + } /* if outfile */ + ); /* MPI_MASTER */ +#ifdef USE_MPI + if (strcasestr(detector.format, "list") && mpi_node_count > 1) { + int node_i=0; + /* loop along MPI nodes to write sequentially */ + for(node_i=0; node_i strlen(original)) n = strlen(original); + else original += strlen(original)-n; + strncpy(valid, original, n); + + for (i=0; i < n; i++) + { + if ( (valid[i] > 122) + || (valid[i] < 32) + || (strchr("!\"#$%&'()*+,-.:;<=>?@[\\]^`/ \n\r\t", valid[i]) != NULL) ) + { + if (i) valid[i] = '_'; else valid[i] = 'm'; + } + } + valid[i] = '\0'; + + return(valid); +} /* strcpy_valid */ + +/* end ascii output section ================================================= */ + + + + + + + +#ifdef USE_NEXUS + +/* ========================================================================== */ + +/* NeXus output */ + +/* ========================================================================== */ + +#define nxprintf(...) nxstr('d', __VA_ARGS__) +#define nxprintattr(...) nxstr('a', __VA_ARGS__) + +/******************************************************************************* +* nxstr: output a tag=value data set (char) in NeXus/current group +* when 'format' is larger that 1024 chars it is used as value for the 'tag' +* else the value is assembled with format and following arguments. +* type='d' -> data set +* 'a' -> attribute for current data set +*******************************************************************************/ +static int nxstr(char type, NXhandle *f, char *tag, char *format, ...) +{ + va_list ap; + char value[CHAR_BUF_LENGTH]; + int i; + int ret=NX_OK; + + if (!tag || !format || !strlen(tag) || !strlen(format)) return(NX_OK); + + /* assemble the value string */ + if (strlen(format) < CHAR_BUF_LENGTH) { + va_start(ap, format); + ret = vsnprintf(value, CHAR_BUF_LENGTH, format, ap); + va_end(ap); + + i = strlen(value); + } else { + i = strlen(format); + } + + if (type == 'd') { + /* open/put/close data set */ + if (NXmakedata (f, tag, NX_CHAR, 1, &i) != NX_OK) return(NX_ERROR); + NXopendata (f, tag); + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputdata (f, value); + else + ret = NXputdata (f, format); + NXclosedata(f); + } else { + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputattr (f, tag, value, strlen(value), NX_CHAR); + else + ret = NXputattr (f, tag, format, strlen(format), NX_CHAR); + } + + return(ret); + +} /* nxstr */ + +/******************************************************************************* +* mcinfo_readfile: read a full file into a string buffer which is allocated +* Think to free the buffer after use. +* Used in: mcinfo_out_nexus (nexus) +*******************************************************************************/ +char *mcinfo_readfile(char *filename) +{ + FILE *f = fopen(filename, "rb"); + if (!f) return(NULL); + fseek(f, 0, SEEK_END); + long fsize = ftell(f); + rewind(f); + char *string = malloc(fsize + 1); + if (string) { + int n = fread(string, fsize, 1, f); + fclose(f); + + string[fsize] = 0; + } + return(string); +} + +/******************************************************************************* +* mcinfo_out: output instrument/simulation groups in NeXus file +* Used in: siminfo_init (nexus) +*******************************************************************************/ +static void mcinfo_out_nexus(NXhandle f) +{ + FILE *fid; /* for intrument source code/C/IDF */ + char *buffer=NULL; + time_t t =time(NULL); /* for date */ + char entry0[CHAR_BUF_LENGTH]; + int count=0; + char name[CHAR_BUF_LENGTH]; + char class[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + /* write NeXus NXroot attributes */ + /* automatically added: file_name, HDF5_Version, file_time, NeXus_version */ + nxprintattr(f, "creator", "%s generated with " MCCODE_STRING, instrument_name); + + /* count the number of existing NXentry and create the next one */ + NXgetgroupinfo(f, &count, name, class); + sprintf(entry0, "entry%i", count+1); + + /* create the main NXentry (mandatory in NeXus) */ + if (NXmakegroup(f, entry0, "NXentry") == NX_OK) + if (NXopengroup(f, entry0, "NXentry") == NX_OK) { + nxprintf(nxhandle, "program_name", MCCODE_STRING); + nxprintf(f, "start_time", ctime(&t)); + nxprintf(f, "title", "%s%s%s simulation generated by instrument %s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name, + instrument_name); + nxprintattr(f, "program_name", MCCODE_STRING); + nxprintattr(f, "instrument", instrument_name); + nxprintattr(f, "simulation", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + /* write NeXus instrument group */ + if (NXmakegroup(f, "instrument", "NXinstrument") == NX_OK) + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + int i; + char *string=NULL; + + /* write NeXus parameters(types) data =================================== */ + string = (char*)malloc(CHAR_BUF_LENGTH); + if (string) { + strcpy(string, ""); + for(i = 0; i < numipar; i++) + { + char ThisParam[CHAR_BUF_LENGTH]; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(string) + strlen(ThisParam) < CHAR_BUF_LENGTH) + strcat(string, ThisParam); + } + nxprintattr(f, "Parameters", string); + free(string); + } + + nxprintattr(f, "name", instrument_name); + nxprintf (f, "name", instrument_name); + nxprintattr(f, "Source", instrument_source); + + nxprintattr(f, "Trace_enabled", traceenabled ? "yes" : "no"); + nxprintattr(f, "Default_main", defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + nxprintattr(f, "Embedded_runtime", "yes"); +#else + nxprintattr(f, "Embedded_runtime", "no"); +#endif + + /* add instrument source code when available */ + buffer = mcinfo_readfile(instrument_source); + if (buffer && strlen(buffer)) { + long length=strlen(buffer); + nxprintf (f, "description", buffer); + NXopendata(f,"description"); + nxprintattr(f, "file_name", instrument_source); + nxprintattr(f, "file_size", "%li", length); + nxprintattr(f, "MCCODE_STRING", MCCODE_STRING); + NXclosedata(f); + nxprintf (f,"instrument_source", "%s " MCCODE_NAME " " MCCODE_PARTICLE " Monte Carlo simulation", instrument_name); + free(buffer); + } else + nxprintf (f, "description", "File %s not found (instrument description %s is missing)", + instrument_source, instrument_name); + + if (mcnexus_embed_idf) { + /* add Mantid/IDF.xml when available */ + char *IDFfile=NULL; + IDFfile = (char*)malloc(CHAR_BUF_LENGTH); + sprintf(IDFfile,"%s%s",instrument_source,".xml"); + buffer = mcinfo_readfile(IDFfile); + if (buffer && strlen(buffer)) { + NXmakegroup (nxhandle, "instrument_xml", "NXnote"); + NXopengroup (nxhandle, "instrument_xml", "NXnote"); + nxprintf(f, "data", buffer); + nxprintf(f, "description", "IDF.xml file found with instrument %s", instrument_source); + nxprintf(f, "type", "text/xml"); + NXclosegroup(f); /* instrument_xml */ + free(buffer); + } + free(IDFfile); + } + + /* Add "components" entry */ + if (NXmakegroup(f, "components", "NXdata") == NX_OK) { + NXopengroup(f, "components", "NXdata"); + nxprintattr(f, "description", "Component list for instrument %s", instrument_name); + NXclosegroup(f); /* components */ + } else { + printf("Failed to create NeXus component hierarchy\n"); + } + NXclosegroup(f); /* instrument */ + } /* NXinstrument */ + + /* write NeXus simulation group */ + if (NXmakegroup(f, "simulation", "NXnote") == NX_OK) + if (NXopengroup(f, "simulation", "NXnote") == NX_OK) { + + nxprintattr(f, "name", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + nxprintf (f, "name", "%s", siminfo_name); + nxprintattr(f, "Format", mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME); + nxprintattr(f, "URL", "http://www.mccode.org"); + nxprintattr(f, "program", MCCODE_STRING); + nxprintattr(f, "Instrument",instrument_source); + nxprintattr(f, "Trace", mcdotrace ? "yes" : "no"); + nxprintattr(f, "Gravitation",mcgravitation ? "yes" : "no"); + nxprintattr(f, "Seed", "%li", mcseed); + nxprintattr(f, "Directory", dirname); + #ifdef USE_MPI + if (mpi_node_count > 1) + nxprintf(f, "Nodes", "%i", mpi_node_count); + #endif + + /* output parameter string ================================================ */ + if (NXmakegroup(f, "Param", "NXparameters") == NX_OK) { + NXopengroup(f,"Param", "NXparameters"); + int i; + char string[CHAR_BUF_LENGTH]; + for(i = 0; i < numipar; i++) { + if (mcget_run_num() || (mcinputtable[i].val && strlen(mcinputtable[i].val))) { + if (mcinputtable[i].par == NULL) + strncpy(string, (mcinputtable[i].val ? mcinputtable[i].val : ""), CHAR_BUF_LENGTH); + else + (*mcinputtypes[mcinputtable[i].type].printer)(string, mcinputtable[i].par); + + nxprintf(f, mcinputtable[i].name, "%s", string); + nxprintattr(f, mcinputtable[i].name, string); + } + } + NXclosegroup(f); /* Param */ + } /* NXparameters */ + NXclosegroup(f); /* simulation */ + } /* NXsimulation */ + + /* create a group to hold all links for all monitors */ + NXmakegroup(f, "data", "NXdetector"); + + /* leave the NXentry opened (closed at exit) */ + } /* NXentry */ +} /* mcinfo_out_nexus */ + +/******************************************************************************* +* mccomp_placement_type_nexus: +* Places +* - absolute (3x1) position +* - absolute (3x3) rotation +* - type / class of component instance into attributes under +* entry/instrument/compname +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_placement_type_nexus(NXhandle nxhandle, char* component, Coords position, Rotation rotation, char* comptype) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, component, "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + int64_t pdims[3]; pdims[0]=3; pdims[1]=0; pdims[2]=0; + if (NXcompmakedata64(nxhandle, "Position", NX_FLOAT64, 1, pdims, NX_COMPRESSION, pdims) == NX_OK) { + if (NXopendata(nxhandle, "Position") == NX_OK) { + double pos[3]; coords_get(position, &pos[0], &pos[1], &pos[2]); + if (NXputdata (nxhandle, pos) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Position field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Position field for component %s\n",component); + } + } + int64_t rdims[3]; rdims[0]=3; rdims[1]=3; rdims[2]=0; + if (NXcompmakedata64(nxhandle, "Rotation", NX_FLOAT64, 2, rdims, NX_COMPRESSION, rdims) == NX_OK) { + if (NXopendata(nxhandle, "Rotation") == NX_OK) { + if (NXputdata (nxhandle, rotation) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Rotation field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Rotation field for component %s\n",component); + } + } + nxprintf(nxhandle, "Component_type", comptype); + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + } else { + printf("FAILED to create comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } + #endif +} /* mccomp_placement_nexus */ + +/******************************************************************************* +* mccomp_param_nexus: +* Output parameter/value pair for component instance into +* the attribute +* entry/instrument/compname/parameter +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_param_nexus(NXhandle nxhandle, char* component, char* parameter, char* defval, char* value, char* type) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(nxhandle, "parameters", "NXdata"); + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + if (NXopengroup(nxhandle, "parameters", "NXdata") == NX_OK) { + NXmakegroup(nxhandle, parameter, "NXnote"); + if (NXopengroup(nxhandle, parameter, "NXnote") == NX_OK) { + nxprintattr(nxhandle, "type", type); + nxprintattr(nxhandle, "default", defval); + nxprintattr(nxhandle, "value", value); + NXclosegroup(nxhandle); // parameter + } else { + printf("FAILED to open parameters %s data group \n",parameter); + } + NXclosegroup(nxhandle); // "parameters" + } else { + printf("FAILED to open comp/parameters data group \n"); + } + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } +#endif +} /* mccomp_param_nexus */ + +/******************************************************************************* +* mcdatainfo_out_nexus: output detector header +* mcdatainfo_out_nexus(detector) create group and write info to NeXus data file +* open data:NXdetector then filename:NXdata and write headers/attributes +* requires: NXentry to be opened +*******************************************************************************/ +static void +mcdatainfo_out_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + if (!f || !detector.m || mcdisable_output_files) return; + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(f, detector.nexuscomp, "NXdata"); + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + NXmakegroup(f, "output", "NXdetector"); + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + if (NXmakegroup(f, data_name, "NXdata") == NX_OK) { + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + /* output metadata (as attributes) ======================================== */ + nxprintattr(f, "Date", detector.date); + nxprintattr(f, "type", detector.type); + nxprintattr(f, "Source", detector.instrument); + nxprintattr(f, "component", detector.component); + nxprintattr(f, "position", detector.position); + + nxprintattr(f, "title", detector.title); + nxprintattr(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "Ncount" : + "ratio", detector.ncount); + + if (strlen(detector.filename)) { + nxprintattr(f, "filename", detector.filename); + } + + nxprintattr(f, "statistics", detector.statistics); + nxprintattr(f, "signal", detector.signal); + nxprintattr(f, "values", detector.values); + + if (detector.rank >= 1) + { + nxprintattr(f, "xvar", detector.xvar); + nxprintattr(f, "yvar", detector.yvar); + nxprintattr(f, "xlabel", detector.xlabel); + nxprintattr(f, "ylabel", detector.ylabel); + if (detector.rank > 1) { + nxprintattr(f, "zvar", detector.zvar); + nxprintattr(f, "zlabel", detector.zlabel); + } + } + + nxprintattr(f, abs(detector.rank)==1 ? + "xlimits" : + "xylimits", detector.limits); + nxprintattr(f, "variables", + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + NXclosegroup(f); // data_name + } + } + } + NXclosegroup(f); // output + NXclosegroup(f); // detector.nexuscomp + } + NXclosegroup(f); // components + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + NXclosegroup(f); // instrument + } /* NXdetector (instrument) */ +} /* mcdatainfo_out_nexus */ + +/******************************************************************************* +* mcdetector_out_axis_nexus: write detector axis into current NXdata +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_axis_nexus(NXhandle f, char *label, char *var, int rank, long length, double min, double max) +{ + if (!f || length <= 1 || mcdisable_output_files || max == min) return(NX_OK); + else { + double *axis; + axis=malloc(sizeof(double)*length); + if (!axis ) { + printf("Fatal memory error allocating NeXus axis of length %li, exiting!\n", length); + return(NX_ERROR); + } + char *valid; + valid=malloc(sizeof(char)*CHAR_BUF_LENGTH); + if (!valid ) { + printf("Fatal memory error allocating label axis of length %li, exiting!\n", CHAR_BUF_LENGTH); + free(axis); + return(NX_ERROR); + } + int dim=(int)length; + int i; + int nprimary=1; + /* create an axis from [min:max] */ + for(i = 0; i < length; i++) + axis[i] = min+(max-min)*(i+0.5)/length; + /* create the data set */ + strcpy_valid(valid, label); + NXcompmakedata(f, valid, NX_FLOAT64, 1, &dim, NX_COMPRESSION, &dim); + /* open it */ + if (NXopendata(f, valid) != NX_OK) { + fprintf(stderr, "Warning: could not open axis rank %i '%s' (NeXus)\n", + rank, valid); + free(axis); + free(valid); + return(NX_ERROR); + } + /* put the axis and its attributes */ + NXputdata (f, axis); + nxprintattr(f, "long_name", label); + nxprintattr(f, "short_name", var); + NXputattr (f, "axis", &rank, 1, NX_INT32); + nxprintattr(f, "units", var); + NXputattr (f, "primary", &nprimary, 1, NX_INT32); + NXclosedata(f); + free(axis); + free(valid); + return(NX_OK); + } +} /* mcdetector_out_axis_nexus */ + +/******************************************************************************* +* mcdetector_out_array_nexus: write detector array into current NXdata (1D,2D) +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_array_nexus(NXhandle f, char *part, double *data, MCDETECTOR detector) +{ + + int64_t dims[3]={detector.m,detector.n,detector.p}; /* number of elements to write */ + int64_t fulldims[3]={detector.m,detector.n,detector.p}; + int signal=1; + int exists=0; + int64_t current_dims[3]={0,0,0}; + int ret=NX_OK; + + if (!f || !data || !detector.m || mcdisable_output_files) return(NX_OK); + + /* when this is a list, we set 1st dimension to NX_UNLIMITED for creation */ + if (strcasestr(detector.format, "list")) fulldims[0] = NX_UNLIMITED; + + /* create the data set in NXdata group */ + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + ret = NXcompmakedata64(f, part, NX_FLOAT64, detector.rank, fulldims, NX_COMPRESSION, dims); + if (ret != NX_OK) { + /* failed: data set already exists */ + int datatype=0; + int rank=0; + exists=1; + /* inquire current size of data set (nb of events stored) */ + NXopendata(f, part); + NXgetinfo64(f, &rank, current_dims, &datatype); + NXclosedata(f); + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + + /* open the data set */ + if (NXopendata(f, part) == NX_ERROR) { + fprintf(stderr, "Warning: could not open DataSet %s '%s' (NeXus)\n", + part, detector.title); + return(NX_ERROR); + } + if (strcasestr(detector.format, "list")) { + current_dims[1] = current_dims[2] = 0; /* set starting location for writing slab */ + NXputslab64(f, data, current_dims, dims); + if (!exists) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + else + printf("Append: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } else { + NXputdata (f, data); + } + + if (strstr(part,"data") || strstr(part, "events")) { + NXputattr(f, "signal", &signal, 1, NX_INT32); + nxprintattr(f, "short_name", strlen(detector.filename) ? + detector.filename : detector.component); + } + nxprintattr(f, "long_name", "%s '%s'", part, detector.title); + NXclosedata(f); + + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +/******************************************************************************* +* mcdetector_out_data_nexus: write detector axes+data into current NXdata +* The data:NXdetector is opened, then filename:NXdata +* requires: NXentry to be opened +*******************************************************************************/ +int mcdetector_out_data_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + + if (!f || !detector.m || mcdisable_output_files) return(NX_OK); + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + NXlink pLink; + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + + /* the NXdata group has been created in mcdatainfo_out_nexus */ + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + + MPI_MASTER( + nxprintattr(f, "options", + strlen(detector.options) ? detector.options : "None"); + ); + /* write axes, for histogram data sets, not for lists */ + if (!strcasestr(detector.format, "list")) { + mcdetector_out_axis_nexus(f, detector.xlabel, detector.xvar, + 1, detector.m, detector.xmin, detector.xmax); + mcdetector_out_axis_nexus(f, detector.ylabel, detector.yvar, + 2, detector.n, detector.ymin, detector.ymax); + mcdetector_out_axis_nexus(f, detector.zlabel, detector.zvar, + 3, detector.p, detector.zmin, detector.zmax); + } else { + MPI_MASTER( + nxprintattr(f, "dataset columns", + strlen(detector.ylabel) ? detector.ylabel : "None"); + ); + } + + /* write the actual data (appended if already exists) */ + if (!strcasestr(detector.format, "list") && !strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus(f, "data", detector.p1, detector); + mcdetector_out_array_nexus(f, "errors", detector.p2, detector); + mcdetector_out_array_nexus(f, "ncount", detector.p0, detector); + } else if (strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus( f, "pixels", detector.p1, detector); + } else { + mcdetector_out_array_nexus( f, "events", detector.p1, detector); + } + NXclosegroup(f); + NXopengroup(f, data_name, "NXdata"); + NXgetgroupID(nxhandle, &pLink); + NXclosegroup(f); + } /* NXdata data_name*/ + NXclosegroup(f); + } /* NXdetector output */ + NXclosegroup(f); + } /* NXdata detector.nexuscomp */ + NXclosegroup(f); + } /* NXdata components */ + NXclosegroup(f); + } /* NXdata instrument */ + + if (!strcasestr(detector.format, "pixels")) { + if (NXopengroup(f, "data", "NXdetector") == NX_OK) { + NXmakelink(nxhandle, &pLink); + NXclosegroup(f); + } + } + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +#ifdef USE_MPI +/******************************************************************************* +* mcdetector_out_list_slaves: slaves send their list data to master which writes +* requires: NXentry to be opened +* WARNING: this method has a flaw: it requires all nodes to flush the lists +* the same number of times. In case one node is just below the buffer size +* when finishing (e.g. monitor_nd), it may not trigger save but others may. +* Then the number of recv/send is not constant along nodes, and simulation stalls. +*******************************************************************************/ +MCDETECTOR mcdetector_out_list_slaves(MCDETECTOR detector) +{ + int node_i=0; + MPI_MASTER( + printf("\n** MPI master gathering slave node list data ** \n"); + ); + + if (mpi_node_rank != mpi_node_root) { + /* MPI slave: slaves send their data to master: 2 MPI_Send calls */ + /* m, n, p must be sent first, since all slaves do not have the same number of events */ + int mnp[3]={detector.m,detector.n,detector.p}; + + if (mc_MPI_Send(mnp, 3, MPI_INT, mpi_node_root)!= MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send mnp list error (mcdetector_out_list_slaves)\n", mpi_node_rank); + if (!detector.p1 + || mc_MPI_Send(detector.p1, mnp[0]*mnp[1]*mnp[2], MPI_DOUBLE, mpi_node_root) != MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send p1 list error: mnp=%i (mcdetector_out_list_slaves)\n", mpi_node_rank, abs(mnp[0]*mnp[1]*mnp[2])); + /* slaves are done: sent mnp and p1 */ + } /* end slaves */ + + /* MPI master: receive data from slaves sequentially: 2 MPI_Recv calls */ + + if (mpi_node_rank == mpi_node_root) { + for(node_i=0; node_i 1) { + mcdetector_out_list_slaves(detector); + } +#endif /* USE_MPI */ + + return(detector); +} /* mcdetector_out_2D_nexus */ + +MCDETECTOR mcdetector_out_3D_nexus(MCDETECTOR detector) +{ + printf("Received detector from %s\n",detector.component); + MPI_MASTER( + mcdatainfo_out_nexus(nxhandle, detector); + mcdetector_out_data_nexus(nxhandle, detector); + ); + return(detector); +} /* mcdetector_out_3D_nexus */ + + +#endif /* USE_NEXUS*/ + + + + + + + + +/* ========================================================================== */ + +/* Main input functions */ +/* DETECTOR_OUT_xD function calls -> ascii or NeXus */ + +/* ========================================================================== */ + +/******************************************************************************* +* siminfo_init: open SIM and write header +*******************************************************************************/ +FILE *siminfo_init(FILE *f) +{ + int exists=0; + + /* check format */ + if (!mcformat || !strlen(mcformat) + || !strcasecmp(mcformat, "MCSTAS") || !strcasecmp(mcformat, "MCXTRACE") + || !strcasecmp(mcformat, "PGPLOT") || !strcasecmp(mcformat, "GNUPLOT") || !strcasecmp(mcformat, "MCCODE") + || !strcasecmp(mcformat, "MATLAB")) { + mcformat="McCode"; +#ifdef USE_NEXUS + } else if (strcasestr(mcformat, "NeXus")) { + /* Do nothing */ +#endif + } else { + fprintf(stderr, + "Warning: You have requested the output format %s which is unsupported by this binary. Resetting to standard %s format.\n",mcformat ,"McCode"); + mcformat="McCode"; + } + + /* open the SIM file if not defined yet */ + if (siminfo_file || mcdisable_output_files) + return (siminfo_file); + +#ifdef USE_NEXUS + /* only master writes NeXus header: calls NXopen(nxhandle) */ + if (mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + siminfo_file = mcnew_file(siminfo_name, "h5", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + mcinfo_out_nexus(nxhandle); + ); + return(siminfo_file); /* points to nxhandle */ + } +#endif + + /* write main description file (only MASTER) */ + MPI_MASTER( + + siminfo_file = mcnew_file(siminfo_name, "sim", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + { + /* write SIM header */ + time_t t=time(NULL); + siminfo_out("%s simulation description file for %s.\n", + MCCODE_NAME, instrument_name); + siminfo_out("Date: %s", ctime(&t)); /* includes \n */ + siminfo_out("Program: %s\n\n", MCCODE_STRING); + + siminfo_out("begin instrument: %s\n", instrument_name); + mcinfo_out( " ", siminfo_file); + siminfo_out("end instrument\n"); + + siminfo_out("\nbegin simulation: %s\n", dirname); + mcruninfo_out(" ", siminfo_file); + siminfo_out("end simulation\n"); + + } + ); /* MPI_MASTER */ + return (siminfo_file); + +} /* siminfo_init */ + +/******************************************************************************* +* siminfo_close: close SIM +*******************************************************************************/ +void siminfo_close() +{ +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(siminfo_file && !mcdisable_output_files) { +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + time_t t=time(NULL); + nxprintf(nxhandle, "end_time", ctime(&t)); + nxprintf(nxhandle, "duration", "%li", (long)t-mcstartdate); + NXclosegroup(nxhandle); /* NXentry */ + NXclose(&nxhandle); + } else { +#endif + fclose(siminfo_file); +#ifdef USE_NEXUS + } +#endif +#ifdef USE_MPI + } +#endif + siminfo_file = NULL; + } +} /* siminfo_close */ + +/******************************************************************************* +* mcdetector_out_0D: wrapper for 0D (single value). +* Output single detector/monitor data (p0, p1, p2). +* Title is t, component name is c. +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI reduce) */ + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " data"), + 1, 1, 1, + "I", "", "", + "I", "", "", + 0, 0, 0, 0, 0, 0, c, + &p0, &p1, &p2, posa, rota, index); /* write Detector: line */ + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_0D_nexus(detector)); + else +#endif + return(mcdetector_out_0D_ascii(detector)); + +} /* mcdetector_out_0D */ + + + +/******************************************************************************* +* mcdetector_out_1D: wrapper for 1D. +* Output 1d detector data (p0, p1, p2) for n bins linearly +* distributed across the range x1..x2 (x1 is lower limit of first +* bin, x2 is upper limit of last bin). Title is t, axis labels are xl +* and yl. File name is f, component name is c. +* +* t: title +* xl: x-label +* yl: y-label +* xvar: measured variable length +* x1: x axus min +* x2: x axis max +* n: 1d data vector lenght +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, + long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + // detector_import calls mcdetector_statistics, which will return different + // MCDETECTOR versions for 1-D data based on the value of mcformat. + // + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + xl, yl, (n > 1 ? "Signal per bin" : " Signal"), + xvar, "(I,I_err)", "I", + x1, x2, 0, 0, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + detector = mcdetector_out_1D_nexus(detector); + else +#endif + detector = mcdetector_out_1D_ascii(detector); + if (detector.p1 != p1 && detector.p1) { + // mcdetector_statistics allocated memory but it hasn't been freed. + free(detector.p1); + // plus undo the other damage done there: + detector.p0 = p0; // was set to NULL + detector.p1 = p1; // was set to this_p1 + detector.p2 = p2; // was set to NULL + detector.m = detector.n; // (e.g., labs(n)) + detector.n = 1; // not (n x n) + detector.istransposed = n < 0 ? 1 : 0; + } + return detector; + +} /* mcdetector_out_1D */ + +/******************************************************************************* +* mcdetector_out_2D: wrapper for 2D. +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D */ + +/******************************************************************************* +* mcdetector_out_2D_list: List mode 2D including forwarding "options" from +* Monitor_nD +* +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_list(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + MPI_MASTER( + if (strlen(options)) { + strcpy(detector.options,options); + } else { + strcpy(detector.options,"None"); + } + ); + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D_list */ + +/******************************************************************************* +* mcdetector_out_list: wrapper for list output (calls out_2D with mcformat+"list"). +* m=number of events, n=size of each event +*******************************************************************************/ +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char format_new[CHAR_BUF_LENGTH]; + char *format_org; + MCDETECTOR detector; + + format_org = mcformat; + strcpy(format_new, mcformat); + strcat(format_new, " list"); + mcformat = format_new; + detector = mcdetector_out_2D_list(t, xl, yl, + 1,labs(m),1,labs(n), + m,n, + NULL, p1, NULL, f, + c, posa,rota,options, index); + + mcformat = format_org; + return(detector); +} + +/******************************************************************************* + * mcuse_dir: set data/sim storage directory and create it, + * or exit with error if exists + ******************************************************************************/ +static void +mcuse_dir(char *dir) +{ + if (!dir || !strlen(dir)) return; +#ifdef MC_PORTABLE + fprintf(stderr, "Error: " + "Directory output cannot be used with portable simulation (mcuse_dir)\n"); + exit(1); +#else /* !MC_PORTABLE */ + /* handle file://directory URL type */ + if (strncmp(dir, "file://", strlen("file://"))) + dirname = dir; + else + dirname = dir+strlen("file://"); + + +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(mkdir(dirname, 0777)) { +#ifndef DANSE + fprintf(stderr, "Error: unable to create directory '%s' (mcuse_dir)\n", dir); + fprintf(stderr, "(Maybe the directory already exists?)\n"); +#endif +#ifdef USE_MPI + MPI_Abort(MPI_COMM_WORLD, -1); +#endif + exit(-1); + } +#ifdef USE_MPI + } +#endif + + /* remove trailing PATHSEP (if any) */ + while (strlen(dirname) && dirname[strlen(dirname) - 1] == MC_PATHSEP_C) + dirname[strlen(dirname) - 1]='\0'; +#endif /* !MC_PORTABLE */ +} /* mcuse_dir */ + +/******************************************************************************* +* mcinfo: display instrument simulation info to stdout and exit +*******************************************************************************/ +static void +mcinfo(void) +{ + fprintf(stdout, "begin instrument: %s\n", instrument_name); + mcinfo_out(" ", stdout); + fprintf(stdout, "end instrument\n"); + fprintf(stdout, "begin simulation: %s\n", dirname ? dirname : "."); + mcruninfo_out(" ", stdout); + fprintf(stdout, "end simulation\n"); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcinfo */ + +/******************************************************************************* +* mcparameterinfo: display instrument parameter info to stdout and exit +*******************************************************************************/ +static void +mcparameterinfo(void) +{ + mcparameterinfo_out(" ", stdout); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcparameterinfo */ + + + +#endif /* ndef MCCODE_R_IO_C */ + +/* end of the I/O section =================================================== */ + + + + + + + +/******************************************************************************* +* mcset_ncount: set total number of rays to generate +*******************************************************************************/ +void mcset_ncount(unsigned long long int count) +{ + mcncount = count; +} + +/* mcget_ncount: get total number of rays to generate */ +unsigned long long int mcget_ncount(void) +{ + return mcncount; +} + +/* mcget_run_num: get curent number of rays */ +/* Within the TRACE scope we are now using _particle->uid directly */ +unsigned long long int mcget_run_num() // shuld be (_class_particle* _particle) somehow +{ + /* This function only remains for the few cases outside TRACE where we need to know + the number of simulated particles */ + return mcrun_num; +} + +/* mcsetn_arg: get ncount from a string argument */ +static void +mcsetn_arg(char *arg) +{ + mcset_ncount((long long int) strtod(arg, NULL)); +} + +/* mcsetseed: set the random generator seed from a string argument */ +static void +mcsetseed(char *arg) +{ + mcseed = atol(arg); + if(!mcseed) { + // srandom(mcseed); + //} else { + fprintf(stderr, "Error: seed must not be zero (mcsetseed)\n"); + exit(1); + } +} + +/* Following part is only embedded when not redundent with mccode-r.h ========= */ + +#ifndef MCCODE_H + +/* SECTION: MCDISPLAY support. =============================================== */ + +/******************************************************************************* +* Just output MCDISPLAY keywords to be caught by an external plotter client. +*******************************************************************************/ + +void mcdis_magnify(char *what){ + // Do nothing here, better use interactive zoom from the tools +} + +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: multiline(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} + +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n){ + int i; + const double dx = (x2-x1)/(2*n+1); + const double dy = (y2-y1)/(2*n+1); + const double dz = (z2-z1)/(2*n+1); + + for(i = 0; i < n+1; i++) + mcdis_line(x1 + 2*i*dx, y1 + 2*i*dy, z1 + 2*i*dz, + x1 + (2*i+1)*dx, y1 + (2*i+1)*dy, z1 + (2*i+1)*dz); +} + +void mcdis_multiline(int count, ...){ + va_list ap; + double x,y,z; + + printf("MCDISPLAY: multiline(%d", count); + va_start(ap, count); + while(count--) + { + x = va_arg(ap, double); + y = va_arg(ap, double); + z = va_arg(ap, double); + printf(",%g,%g,%g", x, y, z); + } + va_end(ap); + printf(")\n"); +} + +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height){ + /* draws a rectangle in the plane */ + /* x is ALWAYS width and y is ALWAYS height */ + if (strcmp("xy", plane)==0) { + mcdis_multiline(5, + x - width/2, y - height/2, z, + x + width/2, y - height/2, z, + x + width/2, y + height/2, z, + x - width/2, y + height/2, z, + x - width/2, y - height/2, z); + } else if (strcmp("xz", plane)==0) { + mcdis_multiline(5, + x - width/2, y, z - height/2, + x + width/2, y, z - height/2, + x + width/2, y, z + height/2, + x - width/2, y, z + height/2, + x - width/2, y, z - height/2); + } else if (strcmp("yz", plane)==0) { + mcdis_multiline(5, + x, y - height/2, z - width/2, + x, y - height/2, z + width/2, + x, y + height/2, z + width/2, + x, y + height/2, z - width/2, + x, y - height/2, z - width/2); + } else { + + fprintf(stderr, "Error: Definition of plane %s unknown\n", plane); + exit(1); + } +} + +void mcdis_circle(char *plane, double x, double y, double z, double r){ + printf("MCDISPLAY: circle('%s',%g,%g,%g,%g)\n", plane, x, y, z, r); +} + +void mcdis_new_circle(double x, double y, double z, double r, double nx, double ny, double nz){ + printf("MCDISPLAY: new_circle(%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, r, nx, ny, nz); +} + + +/* Draws a circle with center (x,y,z), radius (r), and in the plane + * with normal (nx,ny,nz)*/ +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz){ + int i; + if(nx==0 && ny && nz==0){ + for (i=0;i<24; i++){ + mcdis_line(x+r*sin(i*2*PI/24),y,z+r*cos(i*2*PI/24), + x+r*sin((i+1)*2*PI/24),y,z+r*cos((i+1)*2*PI/24)); + } + }else{ + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + /*draw circle*/ + for (i=0;i<24; i++){ + double ux,uy,uz; + double wx,wy,wz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + rotate(wx,wy,wz, mx,my,mz, (i+1)*2*PI/24, nx,ny,nz); + mcdis_line(x+ux*r,y+uy*r,z+uz*r, + x+wx*r,y+wy*r,z+wz*r); + } + } +} + + +/* OLD IMPLEMENTATION + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_legacy_box(double x, double y, double z, + double width, double height, double length){ + + mcdis_rectangle("xy", x, y, z-length/2, width, height); + mcdis_rectangle("xy", x, y, z+length/2, width, height); + mcdis_line(x-width/2, y-height/2, z-length/2, + x-width/2, y-height/2, z+length/2); + mcdis_line(x-width/2, y+height/2, z-length/2, + x-width/2, y+height/2, z+length/2); + mcdis_line(x+width/2, y-height/2, z-length/2, + x+width/2, y-height/2, z+length/2); + mcdis_line(x+width/2, y+height/2, z-length/2, + x+width/2, y+height/2, z+length/2); +} + +/* NEW 3D IMPLEMENTATION OF BOX SUPPORTS HOLLOW ALSO + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: box(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, width, height, length, thickness, nx, ny, nz); + } else { + mcdis_legacy_box(x, y, z, width, height, length); + if (thickness) + mcdis_legacy_box(x, y, z, width-thickness, height-thickness, length); + } +} + + +/* OLD IMPLEMENTATION +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz. */ +void mcdis_legacy_cylinder( double x, double y, double z, + double r, double height, int N, double nx, double ny, double nz){ + int i; + /*no lines make little sense - so trigger the default*/ + if(N<=0) N=5; + + NORM(nx,ny,nz); + double h_2=height/2.0; + mcdis_Circle(x+nx*h_2,y+ny*h_2,z+nz*h_2,r,nx,ny,nz); + mcdis_Circle(x-nx*h_2,y-ny*h_2,z-nz*h_2,r,nx,ny,nz); + + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + if(nx==0 && ny && nz==0){ + mx=my=0;mz=1; + }else{ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + } + /*draw circle*/ + for (i=0; i<24; i++){ + double ux,uy,uz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + mcdis_line(x+nx*h_2+ux*r, y+ny*h_2+uy*r, z+nz*h_2+uz*r, + x-nx*h_2+ux*r, y-ny*h_2+uy*r, z-nz*h_2+uz*r); + } +} + +/* NEW 3D IMPLEMENTATION ALSO SUPPORTING HOLLOW +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz.*/ +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cylinder(%g, %g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, thickness, nx, ny, nz); + } else { + mcdis_legacy_cylinder(x, y, z, + r, height, 12, nx, ny, nz); + } +} + +/* Draws a cone with center at (x,y,z) with extent (r,height). + * The cone axis is along the vector nx,ny,nz.*/ +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cone(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, nx, ny, nz); + } else { + mcdis_Circle(x, y, z, r, nx, ny, nz); + mcdis_Circle(x+0.25*height*nx, y+0.25*height*ny, z+0.25*height*nz, 0.75*r, nx, ny, nz); + mcdis_Circle(x+0.5*height*nx, y+0.5*height*ny, z+0.5*height*nz, 0.5*r, nx, ny, nz); + mcdis_Circle(x+0.75*height*nx, y+0.75*height*ny, z+0.75*height*nz, 0.25*r, nx, ny, nz); + mcdis_line(x, y, z, x+height*nx, y+height*ny, z+height*nz); + } +} + +/* Draws a disc with center at (x,y,z) with extent (r). + * The disc axis is along the vector nx,ny,nz.*/ +void mcdis_disc( double x, double y, double z, + double r, double nx, double ny, double nz){ + printf("MCDISPLAY: disc(%g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, nx, ny, nz); +} + +/* Draws a annulus with center at (x,y,z) with extent (outer_radius) and remove inner_radius. + * The annulus axis is along the vector nx,ny,nz.*/ +void mcdis_annulus( double x, double y, double z, + double outer_radius, double inner_radius, double nx, double ny, double nz){ + printf("MCDISPLAY: annulus(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, outer_radius, inner_radius, nx, ny, nz); +} + +/* draws a sphere with center at (x,y,z) with extent (r)*/ +void mcdis_sphere(double x, double y, double z, double r){ + if (mcdotrace==2) { + printf("MCDISPLAY: sphere(%g,%g,%g,%g)\n", x, y, z, r); + } else { + double nx,ny,nz; + int i; + int N=12; + + nx=0;ny=0;nz=1; + mcdis_Circle(x,y,z,r,nx,ny,nz); + for (i=1;i 3) { + /* Split in triangles - as many as polygon rank */ + faceSize=count; + vtxSize=count+1; + } else { + faceSize=1; + vtxSize=count; + } + + for (int i = 0; i < faceSize;) { + int num_indices = 3; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + if (count==3) { // Single, basic triangle + ptr += sprintf(ptr, "[%g, %g, %g], [%g, %g, %g], [%g, %g, %g]", x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2]); + } else { + for (int i = 0; i < vtxSize-1; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", x[i], y[i], z[i]); + if (i < vtxSize - 2) { + ptr += sprintf(ptr, ", "); + } else { + ptr += sprintf(ptr, ", [%g, %g, %g]", x0, y0, z0); + } + } + } + ptr += sprintf(ptr, "], \"faces\": ["); + if (count==3) { // Single, basic triangle, 1 face... + ptr += sprintf(ptr, "{ \"face\": ["); + ptr += sprintf(ptr, "0, 1, 2"); + ptr += sprintf(ptr, "]}"); + } else { + for (int i = 0; i < faceSize; i++) { + int num = 3; + ptr += sprintf(ptr, "{ \"face\": ["); + if (i < faceSize - 1) { + ptr += sprintf(ptr, "%d, %d, %d",i,i+1,count); + } else { + ptr += sprintf(ptr, "%d, %d, %d",i,count,0); + } + ptr += sprintf(ptr, "]}"); + if (i < faceSize-1) { + ptr += sprintf(ptr, ", "); + } + } + } + ptr += sprintf(ptr, "]}"); + mcdis_polyhedron(json_string); + + free(json_string); + } + free(x);free(y);free(z); +} +/* END NEW POLYGON IMPLEMENTATION*/ + +/* +void mcdis_polygon(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: polygon(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} +*/ + +/* SECTION: coordinates handling ============================================ */ + +/******************************************************************************* +* Since we use a lot of geometric calculations using Cartesian coordinates, +* we collect some useful routines here. However, it is also permissible to +* work directly on the underlying struct coords whenever that is most +* convenient (that is, the type Coords is not abstract). +* +* Coordinates are also used to store rotation angles around x/y/z axis. +* +* Since coordinates are used much like a basic type (such as double), the +* structure itself is passed and returned, rather than a pointer. +* +* At compile-time, the values of the coordinates may be unknown (for example +* a motor position). Hence coordinates are general expressions and not simple +* numbers. For this we used the type Coords_exp which has three CExp +* fields. For runtime (or calculations possible at compile time), we use +* Coords which contains three double fields. +*******************************************************************************/ + +/* coords_set: Assign coordinates. */ +Coords coords_set(MCNUM x, MCNUM y, MCNUM z) +{ + Coords a; + + a.x = x; + a.y = y; + a.z = z; + return a; +} + +/* coords_get: get coordinates. Required when 'x','y','z' are #defined as ray pars */ +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z) +{ + *x = a.x; + *y = a.y; + *z = a.z; + return a; +} + +/* coords_add: Add two coordinates. */ +Coords coords_add(Coords a, Coords b) +{ + Coords c; + + c.x = a.x + b.x; + c.y = a.y + b.y; + c.z = a.z + b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_sub: Subtract two coordinates. */ +Coords coords_sub(Coords a, Coords b) +{ + Coords c; + + c.x = a.x - b.x; + c.y = a.y - b.y; + c.z = a.z - b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_neg: Negate coordinates. */ +Coords coords_neg(Coords a) +{ + Coords b; + + b.x = -a.x; + b.y = -a.y; + b.z = -a.z; + return b; +} + +/* coords_scale: Scale a vector. */ +Coords coords_scale(Coords b, double scale) { + Coords a; + + a.x = b.x*scale; + a.y = b.y*scale; + a.z = b.z*scale; + return a; +} + +/* coords_sp: Scalar product: a . b */ +double coords_sp(Coords a, Coords b) { + double value; + + value = a.x*b.x + a.y*b.y + a.z*b.z; + return value; +} + +/* coords_xp: Cross product: a = b x c. */ +Coords coords_xp(Coords b, Coords c) { + Coords a; + + a.x = b.y*c.z - c.y*b.z; + a.y = b.z*c.x - c.z*b.x; + a.z = b.x*c.y - c.x*b.y; + return a; +} + +/* coords_len: Gives length of coords set. */ +double coords_len(Coords a) { + return sqrt(a.x*a.x + a.y*a.y + a.z*a.z); +} + +/* coords_mirror: Mirror a in plane (through the origin) defined by normal n*/ +Coords coords_mirror(Coords a, Coords n) { + double t = scalar_prod(n.x, n.y, n.z, n.x, n.y, n.z); + Coords b; + if (t!=1) { + t = sqrt(t); + n.x /= t; + n.y /= t; + n.z /= t; + } + t=scalar_prod(a.x, a.y, a.z, n.x, n.y, n.z); + b.x = a.x-2*t*n.x; + b.y = a.y-2*t*n.y; + b.z = a.z-2*t*n.z; + return b; +} + +/* coords_print: Print out vector values. */ +void coords_print(Coords a) { + #ifndef OPENACC + fprintf(stdout, "(%f, %f, %f)\n", a.x, a.y, a.z); + #endif + return; +} + +mcstatic void coords_norm(Coords* c) { + double temp = coords_sp(*c,*c); + + // Skip if we will end dividing by zero + if (temp == 0) return; + + temp = sqrt(temp); + + c->x /= temp; + c->y /= temp; + c->z /= temp; +} + +/* coords_test_zero: check if zero vector*/ +int coords_test_zero(Coords a){ + return ( a.x==0 && a.y==0 && a.z==0 ); +} + +/******************************************************************************* +* The Rotation type implements a rotation transformation of a coordinate +* system in the form of a double[3][3] matrix. +* +* Contrary to the Coords type in coords.c, rotations are passed by +* reference. Functions that yield new rotations do so by writing to an +* explicit result parameter; rotations are not returned from functions. The +* reason for this is that arrays cannot by returned from functions (though +* structures can; thus an alternative would have been to wrap the +* double[3][3] array up in a struct). Such are the ways of C programming. +* +* A rotation represents the tranformation of the coordinates of a vector when +* changing between coordinate systems that are rotated with respect to each +* other. For example, suppose that coordinate system Q is rotated 45 degrees +* around the Z axis with respect to coordinate system P. Let T be the +* rotation transformation representing a 45 degree rotation around Z. Then to +* get the coordinates of a vector r in system Q, apply T to the coordinates +* of r in P. If r=(1,0,0) in P, it will be (sqrt(1/2),-sqrt(1/2),0) in +* Q. Thus we should be careful when interpreting the sign of rotation angles: +* they represent the rotation of the coordinate systems, not of the +* coordinates (which has opposite sign). +*******************************************************************************/ + +/******************************************************************************* +* rot_set_rotation: Get transformation for rotation first phx around x axis, +* then phy around y, then phz around z. +*******************************************************************************/ +void rot_set_rotation(Rotation t, double phx, double phy, double phz) +{ + if ((phx == 0) && (phy == 0) && (phz == 0)) { + t[0][0] = 1.0; + t[0][1] = 0.0; + t[0][2] = 0.0; + t[1][0] = 0.0; + t[1][1] = 1.0; + t[1][2] = 0.0; + t[2][0] = 0.0; + t[2][1] = 0.0; + t[2][2] = 1.0; + } else { + double cx = cos(phx); + double sx = sin(phx); + double cy = cos(phy); + double sy = sin(phy); + double cz = cos(phz); + double sz = sin(phz); + + t[0][0] = cy*cz; + t[0][1] = sx*sy*cz + cx*sz; + t[0][2] = sx*sz - cx*sy*cz; + t[1][0] = -cy*sz; + t[1][1] = cx*cz - sx*sy*sz; + t[1][2] = sx*cz + cx*sy*sz; + t[2][0] = sy; + t[2][1] = -sx*cy; + t[2][2] = cx*cy; + } +} + +/******************************************************************************* +* rot_test_identity: Test if rotation is identity +*******************************************************************************/ +int rot_test_identity(Rotation t) +{ + return (t[0][0] + t[1][1] + t[2][2] == 3); +} + +/******************************************************************************* +* rot_mul: Matrix multiplication of transformations (this corresponds to +* combining transformations). After rot_mul(T1, T2, T3), doing T3 is +* equal to doing first T2, then T1. +* Note that T3 must not alias (use the same array as) T1 or T2. +*******************************************************************************/ +void rot_mul(Rotation t1, Rotation t2, Rotation t3) +{ + if (rot_test_identity(t1)) { + rot_copy(t3, t2); + } else if (rot_test_identity(t2)) { + rot_copy(t3, t1); + } else { + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + t3[i][j] = t1[i][0]*t2[0][j] + t1[i][1]*t2[1][j] + t1[i][2]*t2[2][j]; + } +} + +/******************************************************************************* +* rot_copy: Copy a rotation transformation (arrays cannot be assigned in C). +*******************************************************************************/ +void rot_copy(Rotation dest, Rotation src) +{ + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + dest[i][j] = src[i][j]; +} + +/******************************************************************************* +* rot_transpose: Matrix transposition, which is inversion for Rotation matrices +*******************************************************************************/ +void rot_transpose(Rotation src, Rotation dst) +{ + dst[0][0] = src[0][0]; + dst[0][1] = src[1][0]; + dst[0][2] = src[2][0]; + dst[1][0] = src[0][1]; + dst[1][1] = src[1][1]; + dst[1][2] = src[2][1]; + dst[2][0] = src[0][2]; + dst[2][1] = src[1][2]; + dst[2][2] = src[2][2]; +} + +/******************************************************************************* +* rot_apply: returns t*a +*******************************************************************************/ +Coords rot_apply(Rotation t, Coords a) +{ + Coords b; + if (rot_test_identity(t)) { + return a; + } else { + b.x = t[0][0]*a.x + t[0][1]*a.y + t[0][2]*a.z; + b.y = t[1][0]*a.x + t[1][1]*a.y + t[1][2]*a.z; + b.z = t[2][0]*a.x + t[2][1]*a.y + t[2][2]*a.z; + return b; + } +} + +/** + * Pretty-printing of rotation matrices. + */ +void rot_print(Rotation rot) { + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[0][0], rot[0][1], rot[0][2]); + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[1][0], rot[1][1], rot[1][2]); + printf("[ %4.2f %4.2f %4.2f ]\n\n", + rot[2][0], rot[2][1], rot[2][2]); +} + +/** + * Vector product: used by vec_prod (mccode-r.h). Use coords_xp for Coords. + */ +void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, + double x2, double y2, double z2) { + *x = (y1)*(z2) - (y2)*(z1); + *y = (z1)*(x2) - (z2)*(x1); + *z = (x1)*(y2) - (x2)*(y1); +} + +/** + * Scalar product: use coords_sp for Coords. + */ +double scalar_prod( + double x1, double y1, double z1, + double x2, double y2, double z2) { + return ((x1 * x2) + (y1 * y2) + (z1 * z2)); +} + +mcstatic void norm_func(double *x, double *y, double *z) { + double temp = (*x * *x) + (*y * *y) + (*z * *z); + if (temp != 0) { + temp = sqrt(temp); + *x /= temp; + *y /= temp; + *z /= temp; + } +} + + +/* SECTION: GPU algorithms ================================================== */ + + +/* +* Divide-and-conquer strategy for parallelizing this task: Sort absorbed +* particles last. +* +* particles: the particle array, required to checking _absorbed +* pbuffer: same-size particle buffer array required for parallel sort +* len: sorting area-of-interest size (e.g. from previous calls) +* buffer_len: total array size +* flag_split: if set, multiply live particles into absorbed slots, up to buffer_len +* multiplier: output arg, becomes the SPLIT multiplier if flag_split is set +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier) { + #define SAL_THREADS 1024 // num parallel sections + if (len_absorbed)); + + // return (no SPLIT) + if (flag_split != 1) + return accumlen; + + // SPLIT - repeat the non-absorbed block N-1 times, where len % accumlen = N + R + int mult = buffer_len / accumlen; // TODO: possibly use a new arg, bufferlen, rather than len + + // not enough space for full-block split, return + if (mult <= 1) + return accumlen; + + // copy non-absorbed block + #pragma acc parallel loop present(particles[0:buffer_len]) + for (long tidx = 0; tidx < accumlen; tidx++) { // tidx: thread index + randstate_t randstate[7]; + _class_particle sourcebuffer; + _class_particle targetbuffer; + // assign reduced weight to all particles + particles[tidx].p=particles[tidx].p/mult; + #pragma acc loop seq + for (long bidx = 1; bidx < mult; bidx++) { // bidx: block index + // preserve absorbed particle (for randstate) + sourcebuffer = particles[bidx*accumlen + tidx]; + // buffer full particle struct + targetbuffer = particles[tidx]; + // reassign previous randstate + targetbuffer.randstate[0] = sourcebuffer.randstate[0]; + targetbuffer.randstate[1] = sourcebuffer.randstate[1]; + targetbuffer.randstate[2] = sourcebuffer.randstate[2]; + targetbuffer.randstate[3] = sourcebuffer.randstate[3]; + targetbuffer.randstate[4] = sourcebuffer.randstate[4]; + targetbuffer.randstate[5] = sourcebuffer.randstate[5]; + targetbuffer.randstate[6] = sourcebuffer.randstate[6]; + // apply + particles[bidx*accumlen + tidx] = targetbuffer; + } + } + + // set out split multiplier value + *multiplier = mult; + + // return expanded array size + return accumlen * mult; +} + +#endif + +/* +* Fallback serial version of the one above. +*/ +long sort_absorb_last_serial(_class_particle* particles, long len) { + long i = 0; + long j = len - 1; + _class_particle pbuffer; + + // bubble + while (i < j) { + while (!particles[i]._absorbed && ix; + b.y = particle->y; + b.z = particle->z; + c = rot_apply(t, b); + b = coords_add(c, a); + particle->x = b.x; + particle->y = b.y; + particle->z = b.z; + +#if MCCODE_PARTICLE_CODE == 2112 + if (particle->vz != 0.0 || particle->vx != 0.0 || particle->vy != 0.0) + mccoordschange_polarisation(t, &(particle->vx), &(particle->vy), &(particle->vz)); + + if (particle->sz != 0.0 || particle->sx != 0.0 || particle->sy != 0.0) + mccoordschange_polarisation(t, &(particle->sx), &(particle->sy), &(particle->sz)); +#elif MCCODE_PARTICLE_CODE == 22 + if (particle->kz != 0.0 || particle->kx != 0.0 || particle->ky != 0.0) + mccoordschange_polarisation(t, &(particle->kx), &(particle->ky), &(particle->kz)); + + if (particle->Ez != 0.0 || particle->Ex != 0.0 || particle->Ey != 0.0) + mccoordschange_polarisation(t, &(particle->Ex), &(particle->Ey), &(particle->Ez)); +#endif +} + +/******************************************************************************* +* mccoordschange_polarisation: applies rotation to vector (sx sy sz) +*******************************************************************************/ +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *sx; + b.y = *sy; + b.z = *sz; + c = rot_apply(t, b); + *sx = c.x; + *sy = c.y; + *sz = c.z; +} + +/* SECTION: vector math ==================================================== */ + +/* normal_vec_func: Compute normal vector to (x,y,z). */ +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z) +{ + double ax = fabs(x); + double ay = fabs(y); + double az = fabs(z); + double l; + if(x == 0 && y == 0 && z == 0) + { + *nx = 0; + *ny = 0; + *nz = 0; + return; + } + if(ax < ay) + { + if(ax < az) + { /* Use X axis */ + l = sqrt(z*z + y*y); + *nx = 0; + *ny = z/l; + *nz = -y/l; + return; + } + } + else + { + if(ay < az) + { /* Use Y axis */ + l = sqrt(z*z + x*x); + *nx = z/l; + *ny = 0; + *nz = -x/l; + return; + } + } + /* Use Z axis */ + l = sqrt(y*y + x*x); + *nx = y/l; + *ny = -x/l; + *nz = 0; +} /* normal_vec */ + +/******************************************************************************* + * solve_2nd_order: second order equation solve: A*t^2 + B*t + C = 0 + * solve_2nd_order(&t1, NULL, A,B,C) + * returns 0 if no solution was found, or set 't1' to the smallest positive + * solution. + * solve_2nd_order(&t1, &t2, A,B,C) + * same as with &t2=NULL, but also returns the second solution. + * EXAMPLE usage for intersection of a trajectory with a plane in gravitation + * field (gx,gy,gz): + * The neutron starts at point r=(x,y,z) with velocityv=(vx vy vz). The plane + * has a normal vector n=(nx,ny,nz) and contains the point W=(wx,wy,wz). + * The problem consists in solving the 2nd order equation: + * 1/2.n.g.t^2 + n.v.t + n.(r-W) = 0 + * so that A = 0.5 n.g; B = n.v; C = n.(r-W); + * Without acceleration, t=-n.(r-W)/n.v + ******************************************************************************/ +int solve_2nd_order_old(double *t1, double *t2, + double A, double B, double C) +{ + int ret=0; + + if (!t1) return 0; + *t1 = 0; + if (t2) *t2=0; + + if (fabs(A) < 1E-10) /* approximate to linear equation: A ~ 0 */ + { + if (B) { *t1 = -C/B; ret=1; if (t2) *t2=*t1; } + /* else no intersection: A=B=0 ret=0 */ + } + else + { + double D; + D = B*B - 4*A*C; + if (D >= 0) /* Delta > 0: two solutions */ + { + double sD, dt1, dt2; + sD = sqrt(D); + dt1 = (-B + sD)/2/A; + dt2 = (-B - sD)/2/A; + /* we identify very small values with zero */ + if (fabs(dt1) < 1e-10) dt1=0.0; + if (fabs(dt2) < 1e-10) dt2=0.0; + + /* now we choose the smallest positive solution */ + if (dt1<=0.0 && dt2>0.0) ret=2; /* dt2 positive */ + else if (dt2<=0.0 && dt1>0.0) ret=1; /* dt1 positive */ + else if (dt1> 0.0 && dt2>0.0) + { if (dt1 < dt2) ret=1; else ret=2; } /* all positive: min(dt1,dt2) */ + /* else two solutions are negative. ret=-1 */ + if (ret==1) { *t1 = dt1; if (t2) *t2=dt2; } + else { *t1 = dt2; if (t2) *t2=dt1; } + ret=2; /* found 2 solutions and t1 is the positive one */ + } /* else Delta <0: no intersection. ret=0 */ + } + return(ret); +} /* solve_2nd_order */ + +int solve_2nd_order(double *t0, double *t1, double A, double B, double C){ + int retval=0; + double sign=copysign(1.0,B); + double dt0,dt1; + + dt0=0; + dt1=0; + if(t1){ *t1=0;} + + /*protect against rounding errors by locally equating DBL_EPSILON with 0*/ + if (fabs(A)=0){ + dt0=(-B - sign*sqrt(B*B-4*A*C))/(2*A); + dt1=C/(A*dt0); + retval=2; + }else{ + /*no real roots*/ + retval=0; + } + } + /*sort the solutions*/ + if (retval==1){ + /*put both solutions in t0 and t1*/ + *t0=dt0; + if(t1) *t1=dt1; + }else{ + /*we have two solutions*/ + /*swap if both are positive and t1 smaller than t0 or t1 the only positive*/ + int swap=0; + if(dt1>0 && ( dt1) + * + * If height or width is zero, choose random direction in full 4PI, no target. + * + * Traditionally, this routine had the name randvec_target_rect - this is now a + * a define (see mcstas-r.h) pointing here. If you use the old rouine, you are NOT + * taking the local emmission coordinate into account. +*******************************************************************************/ +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, + double width, double height, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle) +{ + double dx, dy, dist, dist_p, nx, ny, nz, mx, my, mz, n_norm, m_norm; + double cos_theta; + Coords tmp; + Rotation Ainverse; + + rot_transpose(A, Ainverse); + + if(height == 0.0 || width == 0.0) + { + randvec_target_circle(xo, yo, zo, solid_angle, + xi, yi, zi, 0); + return; + } + else + { + /* Now choose point uniformly on rectangle within width x height */ + dx = width*randpm1()/2.0; + dy = height*randpm1()/2.0; + + /* Determine distance to target plane*/ + dist = sqrt(xi*xi + yi*yi + zi*zi); + /* Go to global coordinate system */ + + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(Ainverse, tmp); + coords_get(tmp, &xi, &yi, &zi); + + /* Determine vector normal to trajectory axis (z) and gravity [0 1 0] */ + vec_prod(nx, ny, nz, xi, yi, zi, 0, 1, 0); + + /* This now defines the x-axis, normalize: */ + n_norm=sqrt(nx*nx + ny*ny + nz*nz); + nx = nx/n_norm; + ny = ny/n_norm; + nz = nz/n_norm; + + /* Now, determine our y-axis (vertical in many cases...) */ + vec_prod(mx, my, mz, xi, yi, zi, nx, ny, nz); + m_norm=sqrt(mx*mx + my*my + mz*mz); + mx = mx/m_norm; + my = my/m_norm; + mz = mz/m_norm; + + /* Our output, random vector can now be defined by linear combination: */ + + *xo = xi + dx * nx + dy * mx; + *yo = yi + dx * ny + dy * my; + *zo = zi + dx * nz + dy * mz; + + /* Go back to local coordinate system */ + tmp = coords_set(*xo, *yo, *zo); + tmp = rot_apply(A, tmp); + coords_get(tmp, &*xo, &*yo, &*zo); + + /* Go back to local coordinate system */ + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(A, tmp); + coords_get(tmp, &xi, &yi, &zi); + + if (solid_angle) { + /* Calculate vector from local point to remote random point */ + lx = *xo - lx; + ly = *yo - ly; + lz = *zo - lz; + dist_p = sqrt(lx*lx + ly*ly + lz*lz); + + /* Adjust the 'solid angle' */ + /* 1/r^2 to the chosen point times cos(\theta) between the normal */ + /* vector of the target rectangle and direction vector of the chosen point. */ + cos_theta = (xi * lx + yi * ly + zi * lz) / (dist * dist_p); + *solid_angle = width * height / (dist_p * dist_p); + int counter; + for (counter = 0; counter < order; counter++) { + *solid_angle = *solid_angle * cos_theta; + } + } + } +} +/* randvec_target_rect_real */ + + +/* SECTION: random numbers ================================================== + + How to add a new RNG: + + - Use an rng with a manegable state vector, e.g. of lengt 4 or 7. The state + will sit on the particle struct as a "randstate_t state[RANDSTATE_LEN]" + - If the rng has a long state (as MT), set an empty "srandom" and initialize + it explicitly using the appropriate define (RNG_ALG) + - Add a seed and a random function (the transforms will be reused) + - Write the proper defines in mccode-r.h, e.g. randstate_t and RANDSTATE_LEN, + srandom and random. + - Compile using -DRNG_ALG= + +============================================================================= */ + + +/* "Mersenne Twister", by Makoto Matsumoto and Takuji Nishimura. */ +/* See http://www.math.keio.ac.jp/~matumoto/emt.html for original source. */ +/* + A C-program for MT19937, with initialization improved 2002/1/26. + Coded by Takuji Nishimura and Makoto Matsumoto. + + Before using, initialize the state by using mt_srandom(seed) + or init_by_array(init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Any feedback is very welcome. + http://www.math.keio.ac.jp/matumoto/emt.html + email: matumoto@math.keio.ac.jp +*/ +#include +#include // for uint32_t +#include // for size_t + +/* Period parameters */ +#define N 624 +#define M 397 +#define MATRIX_A 0x9908b0dfU /* constant vector a */ +#define UPPER_MASK 0x80000000U /* most significant w-r bits */ +#define LOWER_MASK 0x7fffffffU /* least significant r bits */ + +static uint32_t mt[N]; /* the array for the state vector */ +static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ + +// Required for compatibility with common RNG interface (e.g., kiss/mt polymorphism) +void mt_srandom_empty(void) {} + +// Initializes mt[N] with a seed +void mt_srandom(uint32_t seed) { + mt[0] = seed; + for (mti = 1; mti < N; mti++) { + mt[mti] = 1812433253U * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti; + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array mt[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + mt[mti] &= 0xffffffffU; + /* for >32 bit machines */ + } +} +/* Initialize by an array with array-length. + Init_key is the array for initializing keys. + key_length is its length. */ +void init_by_array(uint32_t init_key[], size_t key_length) { + size_t i = 1, j = 0, k; + mt_srandom(19650218U); + k = (N > key_length ? N : key_length); + for (; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525U)) + + init_key[j] + (uint32_t)j; + mt[i] &= 0xffffffffU; + i++; j++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + if (j >= key_length) j = 0; + } + for (k = N - 1; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941U)) + - (uint32_t)i; + mt[i] &= 0xffffffffU; + i++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + } + mt[0] = 0x80000000U; /* MSB is 1; ensuring non-zero initial array */ +} + +// Generates a random number on [0, 0xffffffff]-interval +uint32_t mt_random(void) { + uint32_t y; + static const uint32_t mag01[2] = { 0x0U, MATRIX_A }; + /* mag01[x] = x * MATRIX_A for x=0,1 */ + + if (mti >= N) { /* generate N words at one time */ + int kk; + + if (mti == N + 1) /* if mt_srandom() has not been called, */ + mt_srandom(5489U); /* a default initial seed is used */ + + for (kk = 0; kk < N - M; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + for (; kk < N - 1; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); + mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1U]; + + mti = 0; + } + + y = mt[mti++]; + + /* Tempering */ + y ^= (y >> 11); + y ^= (y << 7) & 0x9d2c5680U; + y ^= (y << 15) & 0xefc60000U; + y ^= (y >> 18); + + return y; +} +#undef N +#undef M +#undef MATRIX_A +#undef UPPER_MASK +#undef LOWER_MASK +/* End of "Mersenne Twister". */ + + +/* +KISS + + From: http://www.helsbreth.org/random/rng_kiss.html + Scott Nelson 1999 + + Based on Marsaglia's KISS or (KISS+SWB) + + KISS - Keep it Simple Stupid PRNG + + the idea is to use simple, fast, individually promising + generators to get a composite that will be fast, easy to code + have a very long period and pass all the tests put to it. + The three components of KISS are + x(n)=a*x(n-1)+1 mod 2^32 + y(n)=y(n-1)(I+L^13)(I+R^17)(I+L^5), + z(n)=2*z(n-1)+z(n-2) +carry mod 2^32 + The y's are a shift register sequence on 32bit binary vectors + period 2^32-1; + The z's are a simple multiply-with-carry sequence with period + 2^63+2^32-1. The period of KISS is thus + 2^32*(2^32-1)*(2^63+2^32-1) > 2^127 + + In 2025 adapted for consistent 64-bit behavior across platforms. +*/ + +/* the KISS state is stored as a vector of 7 uint64_t */ +/* 0 1 2 3 4 5 6 */ +/* [ x, y, z, w, carry, k, m ] */ + +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed) { + if (seed == 0) seed = 1ull; + state[0] = seed | 1ull; // x + state[1] = seed | 2ull; // y + state[2] = seed | 4ull; // z + state[3] = seed | 8ull; // w + state[4] = 0ull; // carry + state[5] = 0ull; // k + state[6] = 0ull; // m + return state; +} + +uint64_t kiss_random(uint64_t state[7]) { + // Linear congruential generator + state[0] = state[0] * 69069ull + 1ull; + + // Xorshift + state[1] ^= state[1] << 13ull; + state[1] ^= state[1] >> 17ull; + state[1] ^= state[1] << 5ull; + + // Multiply-with-carry + state[5] = (state[2] >> 2ull) + (state[3] >> 3ull) + (state[4] >> 2ull); + state[6] = state[3] + state[3] + state[2] + state[4]; + state[2] = state[3]; + state[3] = state[6]; + state[4] = state[5] >> 62ull; // Top bit of carry (adjusted for 64-bit) + + return state[0] + state[1] + state[3]; +} +/* end of "KISS" rng */ + + +/* FAST KISS in another implementation (Hundt) */ + +////////////////////////////////////////////////////////////////////////////// +// fast keep it simple stupid generator +////////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// Thomas Mueller hash for initialization of rngs +// http://stackoverflow.com/questions/664014/ +// what-integer-hash-function-are-good-that-accepts-an-integer-hash-key +////////////////////////////////////////////////////////////////////////////// +randstate_t _hash(randstate_t x) { + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x); + return x; +} + + +// SECTION: random number transforms ========================================== + + + +// generate a random number from normal law +double _randnorm(randstate_t* state) +{ + static double v1, v2, s; /* removing static breaks comparison with McStas <= 2.5 */ + static int phase = 0; + double X, u1, u2; + + if(phase == 0) + { + do + { + u1 = _rand01(state); + u2 = _rand01(state); + v1 = 2*u1 - 1; + v2 = 2*u2 - 1; + s = v1*v1 + v2*v2; + } while(s >= 1 || s == 0); + + X = v1*sqrt(-2*log(s)/s); + } + else + { + X = v2*sqrt(-2*log(s)/s); + } + + phase = 1 - phase; + return X; +} +// another one +double _randnorm2(randstate_t* state) { + double x, y, r; + do { + x = 2.0 * _rand01(state) - 1.0; + y = 2.0 * _rand01(state) - 1.0; + r = x*x + y*y; + } while (r == 0.0 || r >= 1.0); + return x * sqrt((-2.0 * log(r)) / r); +} + +// Generate a random number from -1 to 1 with triangle distribution +double _randtriangle(randstate_t* state) { + double randnum = _rand01(state); + if (randnum>0.5) return(1-sqrt(2*(randnum-0.5))); + else return(sqrt(2*randnum)-1); +} +double _rand01(randstate_t* state) { + double randnum; + randnum = (double) _random(); + // TODO: can we mult instead of div? + randnum /= (double) MC_RAND_MAX + 1; + return randnum; +} +// Return a random number between 1 and -1 +double _randpm1(randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / 2; + randnum -= 1; + return randnum; +} +// Return a random number between 0 and max. +double _rand0max(double max, randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / max; + return randnum; +} +// Return a random number between min and max. +double _randminmax(double min, double max, randstate_t* state) { + return _rand0max(max - min, state) + max; +} + + +/* SECTION: main and signal handlers ======================================== */ + +/******************************************************************************* +* mchelp: displays instrument executable help with possible options +*******************************************************************************/ +static void +mchelp(char *pgmname) +{ + int i; + + fprintf(stderr, "%s (%s) instrument simulation, generated with " MCCODE_STRING " (" MCCODE_DATE ")\n", instrument_name, instrument_source); + fprintf(stderr, "Usage: %s [options] [parm=value ...]\n", pgmname); + fprintf(stderr, +"Options are:\n" +" -s SEED --seed=SEED Set random seed (must be != 0)\n" +" -n COUNT --ncount=COUNT Set number of particles to simulate.\n" +" -d DIR --dir=DIR Put all data files in directory DIR.\n" +" -t --trace Enable trace of " MCCODE_PARTICLE "s through instrument.\n" +" (Use -t=2 or --trace=2 for modernised mcdisplay rendering)\n" +" -g --gravitation Enable gravitation for all trajectories.\n" +" --no-output-files Do not write any data files.\n" +" -h --help Show this help message.\n" +" -i --info Detailed instrument information.\n" +" --list-parameters Print the instrument parameters to standard out\n" +" -y --yes Assume default values for all parameters with a default\n" +" --meta-list Print names of components which defined metadata\n" +" --meta-defined COMP[:NAME] Print component defined metadata names, or (0,1) if NAME provided\n" +" --meta-type COMP:NAME Print metadata format type specified in definition\n" +" --meta-data COMP:NAME Print the metadata text\n" +" --source Show the instrument code which was compiled.\n" +#ifdef OPENACC +"\n" +" --vecsize OpenACC vector-size (default: 128)\n" +" --numgangs Number of OpenACC gangs (default: 7813)\n" +" --gpu_innerloop Maximum rays to process pr. OpenACC \n" +" kernel run (default: 2147483647)\n" +"\n" +#endif +"\n" +" --bufsiz Monitor_nD list/buffer-size (default: 1000000)\n" +" --format=FORMAT Output data files using FORMAT=" + FLAVOR_UPPER +#ifdef USE_NEXUS + " NEXUS\n" +" --IDF Embed an xml-formatted IDF instrument definition\n" +" in the NeXus file (if existent in .)\n\n" +#else +"\n\n" +#endif +); +#ifdef USE_MPI + fprintf(stderr, + "This instrument has been compiled with MPI support.\n Use 'mpirun %s [options] [parm=value ...]'.\n", pgmname); +#endif +#ifdef OPENACC + fprintf(stderr, + "This instrument has been compiled with NVIDIA GPU support through OpenACC.\n Running on systems without such devices will lead to segfaults.\nFurter, fprintf, sprintf and printf have been removed from any component TRACE.\n"); +#endif + + if(numipar > 0) + { + fprintf(stderr, "Instrument parameters are:\n"); + for(i = 0; i < numipar; i++) + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + fprintf(stderr, " %-16s(%s) [default='%s']\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name), + mcinputtable[i].val); + else + fprintf(stderr, " %-16s(%s)\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name)); + } + +#ifndef NOSIGNALS + fprintf(stderr, "Known signals are: " +#ifdef SIGUSR1 + "USR1 (status) " +#endif +#ifdef SIGUSR2 + "USR2 (save) " +#endif +#ifdef SIGBREAK + "BREAK (save) " +#endif +#ifdef SIGTERM + "TERM (save and exit)" +#endif + "\n"); +#endif /* !NOSIGNALS */ +} /* mchelp */ + + +/* mcshowhelp: show help and exit with 0 */ +static void +mcshowhelp(char *pgmname) +{ + mchelp(pgmname); + exit(0); +} + +/* mcusage: display usage when error in input arguments and exit with 1 */ +static void +mcusage(char *pgmname) +{ + fprintf(stderr, "Error: incorrect command line arguments\n"); + mchelp(pgmname); + exit(1); +} + +/* mcenabletrace: enable trace/mcdisplay or error if requires recompile */ +static void +mcenabletrace(int mode) +{ + if(traceenabled) { + mcdotrace = mode; + #pragma acc update device ( mcdotrace ) + } else { + if (mode>0) { + fprintf(stderr, + "Error: trace not enabled (mcenabletrace)\n" + "Please re-run the " MCCODE_NAME " compiler " + "with the --trace option, or rerun the\n" + "C compiler with the MC_TRACE_ENABLED macro defined.\n"); + exit(1); + } + } +} + +/******************************************************************************* +* mcreadparams: request parameters from the prompt (or use default) +*******************************************************************************/ +void +mcreadparams(void) +{ + int i,j,status; + static char buf[CHAR_BUF_LENGTH]; + char *p; + int len; + + MPI_MASTER(printf("Instrument parameters for %s (%s)\n", + instrument_name, instrument_source)); + + for(i = 0; mcinputtable[i].name != 0; i++) + { + do + { + MPI_MASTER( + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + printf("Set value of instrument parameter %s (%s) [default='%s']:\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name), mcinputtable[i].val); + else + printf("Set value of instrument parameter %s (%s):\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + fflush(stdout); + ); +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) + { + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } + } + else + p = buf; + MPI_Bcast(buf, CHAR_BUF_LENGTH, MPI_CHAR, mpi_node_root, MPI_COMM_WORLD); +#else /* !USE_MPI */ + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } +#endif /* USE_MPI */ + len = strlen(buf); + if (!len || (len == 1 && (buf[0] == '\n' || buf[0] == '\r'))) + { + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + strncpy(buf, mcinputtable[i].val, CHAR_BUF_LENGTH); /* use default value */ + len = strlen(buf); + } + } + for(j = 0; j < 2; j++) + { + if(len > 0 && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) + { + len--; + buf[len] = '\0'; + } + } + + status = (*mcinputtypes[mcinputtable[i].type].getparm) + (buf, mcinputtable[i].par); + if(!status) + { + (*mcinputtypes[mcinputtable[i].type].error)(mcinputtable[i].name, buf); + if (!mcinputtable[i].val || strlen(mcinputtable[i].val)) { + fprintf(stderr, " Change %s default value in instrument definition.\n", mcinputtable[i].name); + exit(1); + } + } + } while(!status); + } +} /* mcreadparams */ + +/******************************************************************************* +* mcparseoptions: parse command line arguments (options, parameters) +*******************************************************************************/ +void +mcparseoptions(int argc, char *argv[]) +{ + int i, j; + char *p; + int paramset = 0, *paramsetarray; + char *usedir=NULL; + + /* Add one to numipar to avoid allocating zero size memory block. */ + paramsetarray = (int*)malloc((numipar + 1)*sizeof(*paramsetarray)); + if(paramsetarray == NULL) + { + fprintf(stderr, "Error: insufficient memory (mcparseoptions)\n"); + exit(1); + } + for(j = 0; j < numipar; j++) + { + paramsetarray[j] = 0; + if (mcinputtable[j].val != NULL && strlen(mcinputtable[j].val)) + { + int status; + char buf[CHAR_BUF_LENGTH]; + strncpy(buf, mcinputtable[j].val, CHAR_BUF_LENGTH); + status = (*mcinputtypes[mcinputtable[j].type].getparm) + (buf, mcinputtable[j].par); + if(!status) fprintf(stderr, "Invalid '%s' default value %s in instrument definition (mcparseoptions)\n", mcinputtable[j].name, buf); + else paramsetarray[j] = 1; + } else { + (*mcinputtypes[mcinputtable[j].type].getparm) + (NULL, mcinputtable[j].par); + paramsetarray[j] = 0; + } + } + for(i = 1; i < argc; i++) + { + if(!strcmp("-s", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("-s", argv[i], 2)) + mcsetseed(&argv[i][2]); + else if(!strcmp("--seed", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("--seed=", argv[i], 7)) + mcsetseed(&argv[i][7]); + else if(!strcmp("-n", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("-n", argv[i], 2)) + mcsetn_arg(&argv[i][2]); + else if(!strcmp("--ncount", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("--ncount=", argv[i], 9)) + mcsetn_arg(&argv[i][9]); + else if(!strcmp("-d", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; /* will create directory after parsing all arguments (end of this function) */ + else if(!strncmp("-d", argv[i], 2)) + usedir=&argv[i][2]; + else if(!strcmp("--dir", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; + else if(!strncmp("--dir=", argv[i], 6)) + usedir=&argv[i][6]; + else if(!strcmp("-h", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("--help", argv[i]) || !strcmp("--version", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("-i", argv[i])) { + mcformat=FLAVOR_UPPER; + mcinfo(); + } + else if(!strcmp("--info", argv[i])) + mcinfo(); + else if (!strcmp("--list-parameters", argv[i])) + mcparameterinfo(); + else if (!strcmp("--meta-list", argv[i]) && ((i+1) >= argc || argv[i+1][0] == '-')){ + //printf("Components with metadata defined:\n"); + exit(metadata_table_print_all_components(num_metadata, metadata_table) == 0); + } + else if (!strcmp("--meta-defined", argv[i]) && (i+1) < argc){ + exit(metadata_table_print_component_keys(num_metadata, metadata_table, argv[i+1]) == 0); + } + else if (!strcmp("--meta-type", argv[i]) && (i+1) < argc){ + char * literal_type = metadata_table_type(num_metadata, metadata_table, argv[i+1]); + if (literal_type == NULL) exit(1); + printf("%s\n", literal_type); + exit(0); + } + else if (!strcmp("--meta-data", argv[i]) && (i+1) < argc){ + char * literal = metadata_table_literal(num_metadata, metadata_table, argv[i+1]); + if (literal == NULL) exit(1); + printf("%s\n", literal); + exit(0); + } + else if(!strncmp("--trace=", argv[i], 8)) { + mcenabletrace(atoi(&argv[i][8])); + } else if(!strncmp("-t=", argv[i], 3) || !strcmp("--verbose", argv[i])) { + mcenabletrace(atoi(&argv[i][3])); + } else if(!strcmp("-t", argv[i])) + mcenabletrace(1); + else if(!strcmp("--trace", argv[i]) || !strcmp("--verbose", argv[i])) + mcenabletrace(1); + else if(!strcmp("--gravitation", argv[i])) + mcgravitation = 1; + else if(!strcmp("-g", argv[i])) + mcgravitation = 1; + else if(!strcmp("--yes", argv[i])) + mcusedefaults = 1; + else if(!strcmp("-y", argv[i])) + mcusedefaults = 1; + else if(!strncmp("--format=", argv[i], 9)) { + mcformat=&argv[i][9]; + } + else if(!strcmp("--format", argv[i]) && (i + 1) < argc) { + mcformat=argv[++i]; + } +#ifdef USE_NEXUS + else if(!strcmp("--IDF", argv[i])) { + mcnexus_embed_idf = 1; + } +#endif + else if(!strncmp("--vecsize=", argv[i], 10)) { + vecsize=atoi(&argv[i][10]); + } + else if(!strcmp("--vecsize", argv[i]) && (i + 1) < argc) { + vecsize=atoi(argv[++i]); + } + else if(!strncmp("--bufsiz=", argv[i], 9)) { + MONND_BUFSIZ=atoi(&argv[i][9]); + } + else if(!strcmp("--bufsiz", argv[i]) && (i + 1) < argc) { + MONND_BUFSIZ=atoi(argv[++i]); + } + else if(!strncmp("--numgangs=", argv[i], 11)) { + numgangs=atoi(&argv[i][11]); + } + else if(!strcmp("--numgangs", argv[i]) && (i + 1) < argc) { + numgangs=atoi(argv[++i]); + } + else if(!strncmp("--gpu_innerloop=", argv[i], 16)) { + gpu_innerloop=(long)strtod(&argv[i][16], NULL); + } + else if(!strcmp("--gpu_innerloop", argv[i]) && (i + 1) < argc) { + gpu_innerloop=(long)strtod(argv[++i], NULL); + } + + else if(!strcmp("--no-output-files", argv[i])) + mcdisable_output_files = 1; + else if(!strcmp("--source", argv[i])) { + printf("/* Source code %s from %s: */\n" + "/******************************************************************************/\n" + "%s\n" + "/******************************************************************************/\n" + "/* End of source code %s from %s */\n", + instrument_name, instrument_source, instrument_code, + instrument_name, instrument_source); + exit(1); + } + else if(argv[i][0] != '-' && (p = strchr(argv[i], '=')) != NULL) + { + *p++ = '\0'; + + for(j = 0; j < numipar; j++) + if(!strcmp(mcinputtable[j].name, argv[i])) + { + int status; + status = (*mcinputtypes[mcinputtable[j].type].getparm)(p, + mcinputtable[j].par); + if(!status || !strlen(p)) + { + (*mcinputtypes[mcinputtable[j].type].error) + (mcinputtable[j].name, p); + exit(1); + } + paramsetarray[j] = 1; + paramset = 1; + break; + } + if(j == numipar) + { /* Unrecognized parameter name */ + fprintf(stderr, "Error: unrecognized parameter %s (mcparseoptions)\n", argv[i]); + exit(1); + } + } + else if(argv[i][0] == '-') { + fprintf(stderr, "Error: unrecognized option argument %s (mcparseoptions). Ignored.\n", argv[i++]); + } + else { + fprintf(stderr, "Error: unrecognized argument %s (mcparseoptions). Aborting.\n", argv[i]); + mcusage(argv[0]); + } + } + if (mcusedefaults) { + MPI_MASTER( + printf("Using all default parameter values\n"); + ); + for(j = 0; j < numipar; j++) { + int status; + if(mcinputtable[j].val && strlen(mcinputtable[j].val)){ + status = (*mcinputtypes[mcinputtable[j].type].getparm)(mcinputtable[j].val, + mcinputtable[j].par); + paramsetarray[j] = 1; + paramset = 1; + } + } + } + if(!paramset) + mcreadparams(); /* Prompt for parameters if not specified. */ + else + { + for(j = 0; j < numipar; j++) + if(!paramsetarray[j]) + { + fprintf(stderr, "Error: Instrument parameter %s left unset (mcparseoptions)\n", + mcinputtable[j].name); + exit(1); + } + } + free(paramsetarray); +#ifdef USE_MPI + if (mcdotrace) mpi_node_count=1; /* disable threading when in trace mode */ +#endif + if (usedir && strlen(usedir) && !mcdisable_output_files) mcuse_dir(usedir); +} /* mcparseoptions */ + +#ifndef NOSIGNALS +/******************************************************************************* +* sighandler: signal handler that makes simulation stop, and save results +*******************************************************************************/ +void sighandler(int sig) +{ + /* MOD: E. Farhi, Sep 20th 2001: give more info */ + time_t t1, t0; +#define SIG_SAVE 0 +#define SIG_TERM 1 +#define SIG_STAT 2 +#define SIG_ABRT 3 + + printf("\n# " MCCODE_STRING ": [pid %i] Signal %i detected", getpid(), sig); +#ifdef USE_MPI + printf(" [proc %i]", mpi_node_rank); +#endif +#if defined(SIGUSR1) && defined(SIGUSR2) && defined(SIGKILL) + if (!strcmp(mcsig_message, "sighandler") && (sig != SIGUSR1) && (sig != SIGUSR2)) + { + printf("\n# Fatal : unrecoverable loop ! Suicide (naughty boy).\n"); + kill(0, SIGKILL); /* kill myself if error occurs within sighandler: loops */ + } +#endif + switch (sig) { +#ifdef SIGINT + case SIGINT : printf(" SIGINT (interrupt from terminal, Ctrl-C)"); sig = SIG_TERM; break; +#endif +#ifdef SIGILL + case SIGILL : printf(" SIGILL (Illegal instruction)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGFPE + case SIGFPE : printf(" SIGFPE (Math Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGSEGV + case SIGSEGV : printf(" SIGSEGV (Mem Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGTERM + case SIGTERM : printf(" SIGTERM (Termination)"); sig = SIG_TERM; break; +#endif +#ifdef SIGABRT + case SIGABRT : printf(" SIGABRT (Abort)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGQUIT + case SIGQUIT : printf(" SIGQUIT (Quit from terminal)"); sig = SIG_TERM; break; +#endif +#ifdef SIGTRAP + case SIGTRAP : printf(" SIGTRAP (Trace trap)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGPIPE + case SIGPIPE : printf(" SIGPIPE (Broken pipe)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGUSR1 + case SIGUSR1 : printf(" SIGUSR1 (Display info)"); sig = SIG_STAT; break; +#endif +#ifdef SIGUSR2 + case SIGUSR2 : printf(" SIGUSR2 (Save simulation)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGHUP + case SIGHUP : printf(" SIGHUP (Hangup/update)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGBUS + case SIGBUS : printf(" SIGBUS (Bus error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGURG + case SIGURG : printf(" SIGURG (Urgent socket condition)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGBREAK + case SIGBREAK: printf(" SIGBREAK (Break signal, Ctrl-Break)"); sig = SIG_SAVE; break; +#endif + default : printf(" (look at signal list for signification)"); sig = SIG_ABRT; break; + } + printf("\n"); + printf("# Simulation: %s (%s) \n", instrument_name, instrument_source); + printf("# Breakpoint: %s ", mcsig_message); + if (strstr(mcsig_message, "Save") && (sig == SIG_SAVE)) + sig = SIG_STAT; + SIG_MESSAGE("sighandler"); + if (mcget_ncount() == 0) + printf("(0 %%)\n" ); + else + { + printf("%.2f %% (%10.1f/%10.1f)\n", 100.0*mcget_run_num()/mcget_ncount(), 1.0*mcget_run_num(), 1.0*mcget_ncount()); + } + t0 = (time_t)mcstartdate; + t1 = time(NULL); + printf("# Date: %s", ctime(&t1)); + printf("# Started: %s", ctime(&t0)); + + if (sig == SIG_STAT) + { + printf("# " MCCODE_STRING ": Resuming simulation (continue)\n"); + fflush(stdout); + return; + } + else + if (sig == SIG_SAVE) + { + printf("# " MCCODE_STRING ": Saving data and resume simulation (continue)\n"); + save(NULL); + fflush(stdout); + return; + } + else + if (sig == SIG_TERM) + { + printf("# " MCCODE_STRING ": Finishing simulation (save results and exit)\n"); + finally(); + exit(0); + } + else + { + fflush(stdout); + perror("# Last I/O Error"); + printf("# " MCCODE_STRING ": Simulation stop (abort).\n"); +// This portion of the signal handling only works on UNIX +#if defined(__unix__) || defined(__APPLE__) + signal(sig, SIG_DFL); /* force to use default sighandler now */ + kill(getpid(), sig); /* and trigger it with the current signal */ +#endif + exit(-1); + } +#undef SIG_SAVE +#undef SIG_TERM +#undef SIG_STAT +#undef SIG_ABRT + +} /* sighandler */ +#endif /* !NOSIGNALS */ + +#ifdef NEUTRONICS +/*Main neutronics function steers the McStas calls, initializes parameters etc */ +/* Only called in case NEUTRONICS = TRUE */ +void neutronics_main_(float *inx, float *iny, float *inz, float *invx, float *invy, float *invz, float *intime, float *insx, float *insy, float *insz, float *inw, float *outx, float *outy, float *outz, float *outvx, float *outvy, float *outvz, float *outtime, float *outsx, float *outsy, float *outsz, float *outwgt) +{ + + extern double mcnx, mcny, mcnz, mcnvx, mcnvy, mcnvz; + extern double mcnt, mcnsx, mcnsy, mcnsz, mcnp; + + /* External code governs iteration - McStas is iterated once per call to neutronics_main. I.e. below counter must be initiancated for each call to neutronics_main*/ + mcrun_num=0; + + time_t t; + t = (time_t)mcstartdate; + mcstartdate = t; /* set start date before parsing options and creating sim file */ + init(); + + /* *** parse options *** */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat=getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + + /* Set neutron state based on input from neutronics code */ + mcsetstate(*inx,*iny,*inz,*invx,*invy,*invz,*intime,*insx,*insy,*insz,*inw); + + /* main neutron event loop - runs only one iteration */ + + //mcstas_raytrace(&mcncount); /* prior to McStas 1.12 */ + + mcallowbackprop = 1; //avoid absorbtion from negative dt + int argc=1; + char *argv[0]; + int dummy = mccode_main(argc, argv); + + *outx = mcnx; + *outy = mcny; + *outz = mcnz; + *outvx = mcnvx; + *outvy = mcnvy; + *outvz = mcnvz; + *outtime = mcnt; + *outsx = mcnsx; + *outsy = mcnsy; + *outsz = mcnsz; + *outwgt = mcnp; + + return; +} /* neutronics_main */ + +#endif /*NEUTRONICS*/ + +#endif /* !MCCODE_H */ +/* End of file "mccode-r.c". */ +/* End of file "mccode-r.c". */ + +/* embedding file "mcstas-r.c" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system for McStas. +* Embedded within instrument in runtime mode. +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#include "mcstas-r.h" +#endif +#ifdef DANSE +#include "mcstas-globals.h" +#endif + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + +/*the magnet stack*/ +#ifdef MC_POL_COMPAT +void (*mcMagnetPrecession) (double, double, double, double, double, double, + double, double*, double*, double*, double, Coords, Rotation)=NULL; +Coords mcMagnetPos; +Rotation mcMagnetRot; +double* mcMagnetData = NULL; +/* mcMagneticField(x, y, z, t, Bx, By, Bz) */ +int (*mcMagneticField) (double, double, double, double, + double*, double*, double*, void *) = NULL; +#endif + +#ifndef MCSTAS_H + +/******************************************************************************* +* mcsetstate: transfer parameters into global McStas variables +*******************************************************************************/ +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop) +{ + _class_particle mcneutron; + + mcneutron.x = x; + mcneutron.y = y; + mcneutron.z = z; + mcneutron.vx = vx; + mcneutron.vy = vy; + mcneutron.vz = vz; + mcneutron.t = t; + mcneutron.sx = sx; + mcneutron.sy = sy; + mcneutron.sz = sz; + mcneutron.p = p; + mcneutron.mcgravitation = mcgravitation; + mcneutron.mcMagnet = mcMagnet; + mcneutron.allow_backprop = mcallowbackprop; + mcneutron._uid = 0; + mcneutron._index = 1; + mcneutron._absorbed = 0; + mcneutron._restore = 0; + mcneutron._scattered = 0; + mcneutron.flag_nocoordschange = 0; + + /* init tmp-vars - FIXME are they used? */ + mcneutron._mctmp_a = mcneutron._mctmp_b = mcneutron._mctmp_c = 0; + // what about mcneutron._logic ? + mcneutron._logic.dummy=1; + // init uservars via cogen'd-function + particle_uservar_init(&mcneutron); + + return(mcneutron); +} /* mcsetstate */ + +/******************************************************************************* +* mcgetstate: get neutron parameters from particle structure +*******************************************************************************/ +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p) +{ + *x = mcneutron.x; + *y = mcneutron.y; + *z = mcneutron.z; + *vx = mcneutron.vx; + *vy = mcneutron.vy; + *vz = mcneutron.vz; + *t = mcneutron.t; + *sx = mcneutron.sx; + *sy = mcneutron.sy; + *sz = mcneutron.sz; + *p = mcneutron.p; + + return(mcneutron); +} /* mcgetstate */ + + +/******************************************************************************* +* mcgenstate: set default neutron parameters +*******************************************************************************/ +// Moved to generated code +/* #pragma acc routine seq */ +/* _class_particle mcgenstate(void) */ +/* { */ +/* return(mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, mcMagnet, mcallowbackprop)); */ +/* } */ + +/******************************************************************************* +* mccoordschanges: old style rotation routine rot -> (x y z) ,(vx vy vz),(sx,sy,sz) +*******************************************************************************/ +void +mccoordschanges(Coords a, Rotation t, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *x; + b.y = *y; + b.z = *z; + c = rot_apply(t, b); + b = coords_add(c, a); + *x = b.x; + *y = b.y; + *z = b.z; + + if ( (vz && vy && vx) && (*vz != 0.0 || *vx != 0.0 || *vy != 0.0) ) + mccoordschange_polarisation(t, vx, vy, vz); + + if ( (sz && sy && sx) && (*sz != 0.0 || *sx != 0.0 || *sy != 0.0) ) + mccoordschange_polarisation(t, sx, sy, sz); + +} + +/* intersection routines ==================================================== */ + +/******************************************************************************* +* inside_rectangle: Check if (x,y) is inside rectangle (xwidth, yheight) +* return 0 if outside and 1 if inside +*******************************************************************************/ +int inside_rectangle(double x, double y, double xwidth, double yheight) +{ + if (x>-xwidth/2 && x-yheight/2 && y -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[0] = tt; + else + t[0] = 0; + + tt = (dx/2 - x)/vx; + y_in = y + tt*vy; + z_in = z + tt*vz; + if( y_in > -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[1] = tt; + else + t[1] = 0; + } + else + t[0] = t[1] = 0; + + if(vy != 0) + { + tt = -(dy/2 + y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[2] = tt; + else + t[2] = 0; + + tt = (dy/2 - y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[3] = tt; + else + t[3] = 0; + } + else + t[2] = t[3] = 0; + + if(vz != 0) + { + tt = -(dz/2 + z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[4] = tt; + else + t[4] = 0; + + tt = (dz/2 - z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[5] = tt; + else + t[5] = 0; + } + else + t[4] = t[5] = 0; + + /* The intersection is evaluated and *dt_in and *dt_out are assigned */ + + a = b = s = 0; + count = 0; + + for( i = 0; i < 6; i = i + 1 ) + if( t[i] == 0 ) + s = s+1; + else if( count == 0 ) + { + a = t[i]; + count = 1; + } + else + { + b = t[i]; + count = 2; + } + + if ( a == 0 && b == 0 ) + return 0; + else if( a < b ) + { + *dt_in = a; + *dt_out = b; + return 1; + } + else + { + *dt_in = b; + *dt_out = a; + return 1; + } + +} /* box_intersect */ + +/******************************************************************************* + * cylinder_intersect: compute intersection with a cylinder + * returns 0 when no intersection is found + * or 2/4/8/16 bits depending on intersection, + * and resulting times t0 and t1 + * Written by: EM,NB,ABA 4.2.98 + *******************************************************************************/ +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h) +{ + double D, t_in, t_out, y_in, y_out; + int ret=1; + + D = (2*vx*x + 2*vz*z)*(2*vx*x + 2*vz*z) + - 4*(vx*vx + vz*vz)*(x*x + z*z - r*r); + + if (D>=0) + { + if (vz*vz + vx*vx) { + t_in = (-(2*vz*z + 2*vx*x) - sqrt(D))/(2*(vz*vz + vx*vx)); + t_out = (-(2*vz*z + 2*vx*x) + sqrt(D))/(2*(vz*vz + vx*vx)); + } else if (vy) { /* trajectory parallel to cylinder axis */ + t_in = (-h/2-y)/vy; + t_out = (h/2-y)/vy; + if (t_in>t_out){ + double tmp=t_in; + t_in=t_out;t_out=tmp; + } + } else return 0; + y_in = vy*t_in + y; + y_out =vy*t_out + y; + + if ( (y_in > h/2 && y_out > h/2) || (y_in < -h/2 && y_out < -h/2) ) + return 0; + else + { + if (y_in > h/2) + { t_in = ((h/2)-y)/vy; ret += 2; } + else if (y_in < -h/2) + { t_in = ((-h/2)-y)/vy; ret += 4; } + if (y_out > h/2) + { t_out = ((h/2)-y)/vy; ret += 8; } + else if (y_out < -h/2) + { t_out = ((-h/2)-y)/vy; ret += 16; } + } + *t0 = t_in; + *t1 = t_out; + return ret; + } + else + { + *t0 = *t1 = 0; + return 0; + } +} /* cylinder_intersect */ + + +/******************************************************************************* + * sphere_intersect: Calculate intersection between a line and a sphere. + * returns 0 when no intersection is found + * or 1 in case of intersection with resulting times t0 and t1 + *******************************************************************************/ +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r) +{ + double A, B, C, D, v; + + v = sqrt(vx*vx + vy*vy + vz*vz); + A = v*v; + B = 2*(x*vx + y*vy + z*vz); + C = x*x + y*y + z*z - r*r; + D = B*B - 4*A*C; + if(D < 0) + return 0; + D = sqrt(D); + *t0 = (-B - D) / (2*A); + *t1 = (-B + D) / (2*A); + return 1; +} /* sphere_intersect */ + +/******************************************************************************* + * plane_intersect: Calculate intersection between a plane and a line. + * returns 0 when no intersection is found (i.e. line is parallel to the plane) + * returns 1 or -1 when intersection time is positive and negative respectively + *******************************************************************************/ +int plane_intersect(double *t, double x, double y, double z, + double vx, double vy, double vz, double nx, double ny, double nz, double wx, double wy, double wz) +{ + double s; + if (fabs(s=scalar_prod(nx,ny,nz,vx,vy,vz)) height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(time +#include +#include + +#ifndef _MSC_EXTENSIONS +#include +#else +# include +# define strcasecmp _stricmp +# define strncasecmp _strnicmp +#endif + + typedef struct struct_table + { + char filename[1024]; + long filesize; + char *header; /* text header, e.g. comments */ + double *data; /* vector { x[0], y[0], ... x[n-1], y[n-1]... } */ + double min_x; /* min value of first column */ + double max_x; /* max value of first column */ + double step_x; /* minimal step value of first column */ + long rows; /* number of rows in matrix block */ + long columns; /* number of columns in matrix block */ + + long begin; /* start fseek index of block */ + long end; /* stop fseek index of block */ + long block_number; /* block index. 0 is catenation of all */ + long array_length; /* number of elements in the t_Table array */ + char monotonic; /* true when 1st column/vector data is monotonic */ + char constantstep; /* true when 1st column/vector data has constant step */ + char method[32]; /* interpolation method: nearest, linear */ + char quiet; /*output level for messages to the console 0: print all messages, 1:only print some/including errors, 2: never print anything.*/ + } t_Table; + +/*maximum number of rows to rebin a table = 1M*/ +enum { mcread_table_rebin_maxsize = 1000000 }; + +typedef struct t_Read_table_file_item { + int ref_count; + t_Table *table_ref; +} t_Read_table_file_item; + +typedef enum enum_Read_table_file_actions {STORE,FIND,GC} t_Read_table_file_actions; + +/* read_table-lib function prototypes */ +/* ========================================================================= */ + +/* 'public' functions */ +long Table_Read (t_Table *Table, char *File, long block_number); +long Table_Read_Offset (t_Table *Table, char *File, long block_number, + long *offset, long max_lines); +long Table_Read_Offset_Binary(t_Table *Table, char *File, char *Type, + long *Offset, long Rows, long Columns); +long Table_Rebin(t_Table *Table); /* rebin table with regular 1st column and interpolate all columns 2:end */ +long Table_Info (t_Table Table); +#pragma acc routine +double Table_Index(t_Table Table, long i, long j); /* get indexed value */ +#pragma acc routine +double Table_Value(t_Table Table, double X, long j); /* search X in 1st column and return interpolated value in j-column */ +t_Table *Table_Read_Array(char *File, long *blocks); +void Table_Free_Array(t_Table *Table); +long Table_Info_Array(t_Table *Table); +int Table_SetElement(t_Table *Table, long i, long j, double value); +long Table_Init(t_Table *Table, long rows, long columns); /* create a Table */ +#pragma acc routine +double Table_Value2d(t_Table Table, double X, double Y); /* same as Table_Index with non-integer indices and 2d interpolation */ +MCDETECTOR Table_Write(t_Table Table, char*file, char*xl, char*yl, + double x1, double x2, double y1, double y2); /* write Table to disk */ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier); +t_Table *Table_File_List_find(char *name, int block, int offset); +int Table_File_List_gc(t_Table *tab); +void *Table_File_List_store(t_Table *tab); + +#define Table_ParseHeader(header, ...) \ + Table_ParseHeader_backend(header,__VA_ARGS__,NULL); + +char **Table_ParseHeader_backend(char *header, ...); +FILE *Open_File(char *name, const char *Mode, char *path); + + +/* private functions */ +void Table_Free(t_Table *Table); +long Table_Read_Handle(t_Table *Table, FILE *fid, long block_number, long max_lines, char *name); +static void Table_Stat(t_Table *Table); +#pragma acc routine +double Table_Interp1d(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp1d_nearest(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp2d(double x, double y, double x1, double y1, double x2, double y2, +double z11, double z12, double z21, double z22); + + +#endif + +/* end of read_table-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/read_table-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Release: McStas CVS_090504 +* Version: $Revision$ +* +* This file is to be imported by components that may read data from table files +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "read_table-lib" +* +*******************************************************************************/ + +#ifndef READ_TABLE_LIB_H +#include "read_table-lib.h" +#endif + +#ifndef READ_TABLE_LIB_C +#define READ_TABLE_LIB_C "$Revision$" + + +/******************************************************************************* + * void *Table_File_List_Handler(action, item, item_modifier) + * ACTION: handle file entries in the read_table-lib file list. If a file is read - it is supposed to be + * stored in a list such that we can avoid reading the same file many times. + * input action: FIND, STORE, GC. check if file exists in the list, store an item in the list, or check if it can be garbage collected. + * input item: depends on the action. + * FIND) item is a filename, and item_modifier is the block number + * STORE) item is the Table to store - item_modifier is ignored + * GC) item is the Table to check. If it has a ref_count >1 then this is simply decremented. + * return depends on the action + * FIND) return a reference to a table+ref_count item if found - NULL otherwise. I.e. NULL means the file has not been read before and must be read again. + * STORE) return NULL always + * GC) return NULL if no garbage collection is needed, return an adress to the t_Table which should be garbage collected. 0x1 is returned if + * the item is not found in the list +*******************************************************************************/ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier){ + + /* logic here is Read_Table should include a call to FIND. If found the return value should just be used as + * if the table had been read from disk. If not found then read the table and STORE. + * Table_Free should include a call to GC. If this returns non-NULL then we should proceed with freeing the memory + * associated with the table item - otherwise only decrement the reference counter since there are more references + * that may need it.*/ + + static t_Read_table_file_item read_table_file_list[1024]; + static int read_table_file_count=0; + + t_Read_table_file_item *tr; + switch(action){ + case FIND: + /*interpret data item as a filename, if it is found return a pointer to the table and increment refcount. + * if not found return the item itself*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + int i=*((int*) item_modifier); + int j=*( ((int*) item_modifier)+1); + if ( !strcmp(tr->table_ref->filename,(char *) item) && + tr->table_ref->block_number==i && tr->table_ref->begin==j ){ + tr->ref_count++; + return (void *) tr; + } + tr++; + } + return NULL; + case STORE: + /*find an available slot and store references to table there*/ + tr=&(read_table_file_list[read_table_file_count++]); + tr->table_ref = ((t_Table *) item); + tr->ref_count++; + return NULL; + case GC: + /* Should this item be garbage collected (freed) - if so scratch the entry and return the address of the item - + * else decrement ref_count and return NULL. + * A non-NULL return expects the item to actually be freed afterwards.*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + if ( tr->table_ref->data ==((t_Table *)item)->data && + tr->table_ref->block_number == ((t_Table *)item)->block_number){ + /*matching item found*/ + if (tr->ref_count>1){ + /*the item is found and no garbage collection needed*/ + tr->ref_count--; + return NULL; + }else{ + /* The item is found and the reference counter is 1. + * This means we should garbage collect. Move remaining list items up one slot, + * and return the table for garbage collection by caller*/ + while (tr->table_ref!=NULL){ + *tr=*(tr+1); + tr++; + } + read_table_file_count--; + return (t_Table *) item; + } + } + tr++; + } + /* item not found, and so should be garbage collected. This could be the case if freeing a + * Table that has been constructed from code - not read from file. Return 0x1 to flag it for + * collection.*/ + return (void *) 0x1 ; + } + /* If we arrive here, nothing worked, return NULL */ + return NULL; +} + +/* Access functions to the handler*/ + +/******************************************** + * t_Table *Table_File_List_find(char *name, int block, int offset) + * input name: filename to search for in the file list + * input block: data block in the file as each file may contain more than 1 data block. + * return a ref. to a table if it is found (you may use this pointer and skip reading the file), NULL otherwise (i.e. go ahead and read the file) +*********************************************/ +t_Table *Table_File_List_find(char *name, int block, int offset){ + int vars[2]={block,offset}; + t_Read_table_file_item *item = Table_File_List_Handler(FIND,name, vars); + if (item == NULL){ + return NULL; + }else{ + return item->table_ref; + } +} +/******************************************** + * int Table_File_List_gc(t_Table *tab) + * input tab: the table to check for references. + * return 0: no garbage collection needed + * 1: Table's data and header (at least) should be freed. +*********************************************/ +int Table_File_List_gc(t_Table *tab){ + void *rval=Table_File_List_Handler(GC,tab,0); + if (rval==NULL) return 0; + else return 1; +} + + +/***************************************************************************** + * void *Table_File_List_store(t_Table *tab) + * input tab: pointer to table to store. + * return None. +*******************************************************************************/ +void *Table_File_List_store(t_Table *tab){ + return Table_File_List_Handler(STORE,tab,0); +} + + +/******************************************************************************* +* FILE *Open_File(char *name, char *Mode, char *path) +* ACTION: search for a file and open it. Optionally return the opened path. +* input name: file name from which table should be extracted +* mode: "r", "w", "a" or any valid fopen mode +* path: NULL or a pointer to at least 1024 allocated chars +* return initialized file handle or NULL in case of error +*******************************************************************************/ + + FILE *Open_File(char *File, const char *Mode, char *Path) + { + char path[1024]; + FILE *hfile = NULL; + + if (!File || File[0]=='\0') return(NULL); + if (!strcmp(File,"NULL") || !strcmp(File,"0")) return(NULL); + + /* search in current or full path */ + strncpy(path, File, 1024); + hfile = fopen(path, Mode); + if(!hfile) + { + char dir[1024]; + + if (!hfile && instrument_source[0] != '\0' && strlen(instrument_source)) /* search in instrument source location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_source, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_source; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_source, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile && instrument_exe[0] != '\0' && strlen(instrument_exe)) /* search in PWD instrument executable location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_exe, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_exe; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_exe, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile) /* search in HOME or . */ + { + strcpy(dir, getenv("HOME") ? getenv("HOME") : "."); + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MCSTAS/data */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "data", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MVCSTAS/contrib */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "contrib", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if(!hfile) + { + // fprintf(stderr, "Warning: Could not open input file '%s' (Open_File)\n", File); + return (NULL); + } + } + if (Path) strncpy(Path, path, 1024); + return(hfile); + } /* end Open_File */ + +/******************************************************************************* +* long Read_Table(t_Table *Table, char *name, int block_number) +* ACTION: read a single Table from a text file +* input Table: pointer to a t_Table structure +* name: file name from which table should be extracted +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* File is opened, read and closed +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebinned with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read(t_Table *Table, char *File, long block_number) + { /* reads all or a single data block from 'file' and returns a Table structure */ + return(Table_Read_Offset(Table, File, block_number, NULL, 0)); + } /* end Table_Read */ + +/******************************************************************************* +* long Table_Read_Offset(t_Table *Table, char *name, int block_number, long *offset +* long max_rows) +* ACTION: read a single Table from a text file, starting at offset +* Same as Table_Read(..) except: +* input offset: pointer to an offset (*offset should be 0 at start) +* max_rows: max number of data rows to read from file (0 means all) +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset(t_Table *Table, char *File, + long block_number, long *offset, + long max_rows) + { /* reads all/a data block in 'file' and returns a Table structure */ + FILE *hfile; + long nelements=0; + long begin=0; + long filesize=0; + char name[1024]; + char path[1024]; + struct stat stfile; + + /*Need to be able to store the pointer*/ + if (!Table) return(-1); + + /*TK: Valgrind flags it as usage of uninitialised variable: */ + Table->quiet = 0; + + //if (offset && *offset) snprintf(name, 1024, "%s@%li", File, *offset); + //else + strncpy(name, File, 1024); + if(offset && *offset){ + begin=*offset; + } + /* Check if the table has already been read from file. + * If so just reuse the table, if not (this is flagged by returning NULL + * set up a new table and read the data into it */ + t_Table *tab_p= Table_File_List_find(name,block_number,begin); + if ( tab_p!=NULL ){ + /*table was found in the Table_File_List*/ + *Table=*tab_p; + MPI_MASTER( + if(Table->quiet<1) + printf("Reusing input file '%s' (Table_Read_Offset)\n", name); + ); + return Table->rows*Table->columns; + } + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read_Offset)\n", path); + ); + } + + /* read file state */ + stat(path,&stfile); filesize = stfile.st_size; + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + + Table_Init(Table, 0, 0); + + /* read file content and set the Table */ + nelements = Table_Read_Handle(Table, hfile, block_number, max_rows, name); + Table->begin = begin; + Table->end = ftell(hfile); + Table->filesize = (filesize>0 ? filesize : 0); + Table_Stat(Table); + + Table_File_List_store(Table); + + if (offset) *offset=Table->end; + fclose(hfile); + return(nelements); + + } /* end Table_Read_Offset */ + +/******************************************************************************* +* long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, +* long *offset, long rows, long columns) +* ACTION: read a single Table from a binary file, starting at offset +* Same as Table_Read_Offset(..) except that it handles binary files. +* input type: may be "float"/NULL or "double" +* offset: pointer to an offset (*offset should be 0 at start) +* rows : number of rows (0 means read all) +* columns: number of columns +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, + long *offset, long rows, long columns) + { /* reads all/a data block in binary 'file' and returns a Table structure */ + long nelements, sizeofelement; + long filesize; + FILE *hfile; + char path[1024]; + struct stat stfile; + double *data = NULL; + double *datatmp = NULL; + long i; + long begin; + + if (!Table) return(-1); + + Table_Init(Table, 0, 0); + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read, Binary)\n", path); + ); + } + + /* read file state */ + stat(File,&stfile); + filesize = stfile.st_size; + Table->filesize=filesize; + + /* read file content */ + if (type && !strcmp(type,"double")) sizeofelement = sizeof(double); + else sizeofelement = sizeof(float); + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + if (rows && filesize > sizeofelement*columns*rows) + nelements = columns*rows; + else nelements = (long)(filesize/sizeofelement); + if (!nelements || filesize <= *offset) return(0); + data = (double*)malloc(nelements*sizeofelement); + if (!data) { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: allocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } + nelements = fread(data, sizeofelement, nelements, hfile); + + if (!data || !nelements) + { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: reading %ld elements from %s file '%s' (Table_Read_Offset_Binary)\n", nelements, type, File); + exit(-1); + } + Table->begin = begin; + Table->end = ftell(hfile); + if (offset) *offset=Table->end; + fclose(hfile); + + datatmp = (double*)realloc(data, (double)nelements*sizeofelement); + if (!datatmp) { + free(data); + fprintf(stderr,"Error: reallocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } else { + data = datatmp; + } + /* copy file data into Table */ + if (type && !strcmp(type,"double")) Table->data = data; + else { + float *s; + double *dataf; + s = (float*)data; + dataf = (double*)malloc(sizeof(double)*nelements); + if (!dataf) { + fprintf(stderr, "Could not allocate data block of size %ld\n", nelements); + exit(-1); + } + for (i=0; idata = dataf; + } + strncpy(Table->filename, File, 1024); + Table->rows = nelements/columns; + Table->columns = columns; + Table->array_length = 1; + Table->block_number = 1; + + Table_Stat(Table); + + return(nelements); + } /* end Table_Read_Offset_Binary */ + +/******************************************************************************* +* long Table_Read_Handle(t_Table *Table, FILE *fid, int block_number, long max_rows, char *name) +* ACTION: read a single Table from a text file handle (private) +* input Table:pointer to a t_Table structure +* fid: pointer to FILE handle +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* max_rows: if non 0, only reads that number of lines +* return initialized single Table t_Table structure containing data, header, ... +* modified Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebined with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read_Handle(t_Table *Table, FILE *hfile, + long block_number, long max_rows, char *name) + { /* reads all/a data block from 'file' handle and returns a Table structure */ + double *Data = NULL; + double *Datatmp = NULL; + char *Header = NULL; + char *Headertmp = NULL; + long malloc_size = CHAR_BUF_LENGTH; + long malloc_size_h = 4096; + long Rows = 0, Columns = 0; + long count_in_array = 0; + long count_in_header = 0; + long count_invalid = 0; + long block_Current_index = 0; + char flag_End_row_loop = 0; + + if (!Table) return(-1); + Table_Init(Table, 0, 0); + if (name && name[0]!='\0') strncpy(Table->filename, name, 1024); + + if(!hfile) { + fprintf(stderr, "Error: File handle is NULL (Table_Read_Handle).\n"); + return (-1); + } + Header = (char*) calloc(malloc_size_h, sizeof(char)); + Data = (double*)calloc(malloc_size, sizeof(double)); + if ((Header == NULL) || (Data == NULL)) { + fprintf(stderr, "Error: Could not allocate Table and Header (Table_Read_Handle).\n"); + return (-1); + } + + int flag_In_array = 0; + do { /* while (!flag_End_row_loop) */ + char *line=malloc(1024*CHAR_BUF_LENGTH*sizeof(char)); + long back_pos=0; /* ftell start of line */ + + if (!line) { + fprintf(stderr,"Could not allocate line buffer\n"); + exit(-1); + } + back_pos = ftell(hfile); + if (fgets(line, 1024*CHAR_BUF_LENGTH, hfile) != NULL) { /* analyse line */ + /* first skip blank and tabulation characters */ + int i = strspn(line, " \t"); + + /* handle comments: stored in header */ + if (NULL != strchr("#%;/", line[i])) + { /* line is a comment */ + count_in_header += strlen(line); + if (count_in_header >= malloc_size_h) { + /* if succeed and in array : add (and realloc if necessary) */ + malloc_size_h = count_in_header+4096; + char *Headertmp = (char*)realloc(Header, malloc_size_h*sizeof(char)); + if(!Headertmp) { + free(Header); + fprintf(stderr, "Error: Could not reallocate Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + strncat(Header, line, 4096); + flag_In_array=0; + /* exit line and file if passed desired block */ + if (block_number > 0 && block_number == block_Current_index) { + flag_End_row_loop = 1; + } + + /* Continue with next line */ + continue; + } + if (strstr(line, "***")) + { + count_invalid++; + /* Continue with next line */ + continue; + } + + /* get the number of columns splitting line with strtok */ + char *lexeme; + char flag_End_Line = 0; + long block_Num_Columns = 0; + const char seps[] = " ,;\t\n\r"; + + lexeme = strtok(line, seps); + while (!flag_End_Line) { + if ((lexeme != NULL) && (lexeme[0] != '\0')) { + /* reading line: the token is not empty */ + double X; + int count=1; + /* test if we have 'NaN','Inf' */ + if (!strncasecmp(lexeme,"NaN",3)) + X = 0; + else if (!strncasecmp(lexeme,"Inf",3) || !strncasecmp(lexeme,"+Inf",4)) + X = FLT_MAX; + else if (!strncasecmp(lexeme,"-Inf",4)) + X = -FLT_MAX; + else + count = sscanf(lexeme,"%lg",&X); + if (count == 1) { + /* reading line: the token is a number in the line */ + if (!flag_In_array) { + /* reading num: not already in a block: starts a new data block */ + block_Current_index++; + flag_In_array = 1; + block_Num_Columns= 0; + if (block_number > 0) { + /* initialise a new data block */ + Rows = 0; + count_in_array = 0; + } /* else append */ + } + /* reading num: all blocks or selected block */ + if (flag_In_array && (block_number == 0 || + block_number == block_Current_index)) { + /* starting block: already the desired number of rows ? */ + if (block_Num_Columns == 0 && + max_rows > 0 && Rows >= max_rows) { + flag_End_Line = 1; + flag_End_row_loop = 1; + flag_In_array = 0; + /* reposition to begining of line (ignore line) */ + fseek(hfile, back_pos, SEEK_SET); + } else { /* store into data array */ + if (count_in_array >= malloc_size) { + /* realloc data buffer if necessary */ + malloc_size = count_in_array*1.5; + Datatmp = (double*) realloc(Data, malloc_size*sizeof(double)); + if (Datatmp == NULL) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Handle).\n", + malloc_size*sizeof(double)); + free(Data); + return (-1); + } else { + Data=Datatmp; + } + } + if (0 == block_Num_Columns) Rows++; + Data[count_in_array] = X; + count_in_array++; + block_Num_Columns++; + } + } /* reading num: end if flag_In_array */ + } /* end reading num: end if sscanf lexeme -> numerical */ + else { + /* reading line: the token is not numerical in that line. end block */ + if (block_Current_index == block_number) { + flag_End_Line = 1; + flag_End_row_loop = 1; + } else { + flag_In_array = 0; + flag_End_Line = 1; + } + } + } + else { + /* no more tokens in line */ + flag_End_Line = 1; + if (block_Num_Columns > 0) Columns = block_Num_Columns; + } + + // parse next token + lexeme = strtok(NULL, seps); + + } /* while (!flag_End_Line) */ + } /* end: if fgets */ + else flag_End_row_loop = 1; /* else fgets : end of file */ + free(line); + } while (!flag_End_row_loop); /* end while flag_End_row_loop */ + + Table->block_number = block_number; + Table->array_length = 1; + + // shrink header to actual size (plus terminating 0-byte) + if (count_in_header) { + Headertmp = (char*)realloc(Header, count_in_header*sizeof(char) + 1); + if(!Headertmp) { + fprintf(stderr, "Error: Could not shrink Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + Table->header = Header; + + if (count_in_array*Rows*Columns == 0) + { + Table->rows = 0; + Table->columns = 0; + free(Data); + return (0); + } + if (Rows * Columns != count_in_array) + { + fprintf(stderr, "Warning: Read_Table :%s %s Data has %li values that should be %li x %li\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_in_array, Rows, Columns); + Columns = count_in_array; Rows = 1; + } + if (count_invalid) + { + fprintf(stderr,"Warning: Read_Table :%s %s Data has %li invalid lines (*****). Ignored.\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_invalid); + } + Datatmp = (double*)realloc(Data, count_in_array*sizeof(double)); + if(!Datatmp) { + fprintf(stderr, "Error: Could reallocate Data block to %li doubles (Table_Read_Handle).\n", count_in_array); + free(Data); + return (-1); + } else { + Data = Datatmp; + } + Table->data = Data; + Table->rows = Rows; + Table->columns = Columns; + + return (count_in_array); + + } /* end Table_Read_Handle */ + +/******************************************************************************* +* long Table_Rebin(t_Table *Table) +* ACTION: rebin a single Table, sorting 1st column in ascending order +* input Table: single table containing data. +* The data block is reallocated in this process +* return updated Table with increasing, evenly spaced first column (index 0) +* number of data elements (-1: error, 0:empty data) +*******************************************************************************/ + long Table_Rebin(t_Table *Table) + { + double new_step=0; + long i; + /* performs linear interpolation on X axis (0-th column) */ + + if (!Table) return(-1); + if (!Table->data + || Table->rows*Table->columns == 0 || !Table->step_x) + return(0); + Table_Stat(Table); /* recompute statitstics and minimal step */ + new_step = Table->step_x; /* minimal step in 1st column */ + + if (!(Table->constantstep)) /* not already evenly spaced */ + { + long Length_Table; + double *New_Table; + + Length_Table = ceil(fabs(Table->max_x - Table->min_x)/new_step)+1; + /*return early if the rebinned table will become too large*/ + if (Length_Table > mcread_table_rebin_maxsize){ + fprintf(stderr,"WARNING: (Table_Rebin): Rebinning table from %s would exceed 1M rows. Skipping.\n", Table->filename); + return(Table->rows*Table->columns); + } + New_Table = (double*)malloc(Length_Table*Table->columns*sizeof(double)); + if (!New_Table) { + fprintf(stderr,"Could not allocate New_Table of size %ld x %ld\n", Length_Table, Table->columns); + exit(-1); + } + for (i=0; i < Length_Table; i++) + { + long j; + double X; + X = Table->min_x + i*new_step; + New_Table[i*Table->columns] = X; + for (j=1; j < Table->columns; j++) + New_Table[i*Table->columns+j] + = Table_Value(*Table, X, j); + } /* end for i */ + + Table->rows = Length_Table; + Table->step_x = new_step; + Table->max_x = Table->min_x + (Length_Table-1)*new_step; + /*max might not be the same anymore + * Use Length_Table -1 since the first and laset rows are the limits of the defined interval.*/ + free(Table->data); + Table->data = New_Table; + Table->constantstep=1; + } /* end else (!constantstep) */ + return (Table->rows*Table->columns); + } /* end Table_Rebin */ + +/******************************************************************************* +* double Table_Index(t_Table Table, long i, long j) +* ACTION: read an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* return Value = data[i][j] +* Returns Value from the i-th row, j-th column of Table +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +double Table_Index(t_Table Table, long i, long j) +{ + long AbsIndex; + + if (Table.rows == 1 || Table.columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table.columns*Table.rows - 1); + i = 0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table.rows - 1); + j = MIN(MAX(0, j), Table.columns - 1); + } + + /* handle vectors specifically */ + AbsIndex = i*(Table.columns)+j; + + if (Table.data != NULL) + return (Table.data[AbsIndex]); + else + return 0; +} /* end Table_Index */ + +/******************************************************************************* +* void Table_SetElement(t_Table *Table, long i, long j, double value) +* ACTION: set an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* value = data[i][j] +* Returns 0 in case of error +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ +int Table_SetElement(t_Table *Table, long i, long j, + double value) +{ + long AbsIndex; + + if (Table->rows == 1 || Table->columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table->columns*Table->rows - 1); i=0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table->rows - 1); + j = MIN(MAX(0, j), Table->columns - 1); + } + + AbsIndex = i*(Table->columns)+j; + if (Table->data != NULL) { + Table->data[AbsIndex] = value; + return 1; + } + + return 0; +} /* end Table_SetElement */ + +/******************************************************************************* +* double Table_Value(t_Table Table, double X, long j) +* ACTION: read column [j] of a single Table at row which 1st column is X +* input Table: table containing data. +* X : data value in the first column (index 0) +* j : index of column from which is extracted the Value (0:Columns-1) +* return Value = data[index for X][j] with linear interpolation +* Returns Value from the j-th column of Table corresponding to the +* X value for the 1st column (index 0) +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value(t_Table Table, double X, long j) +{ + long Index = -1; + double X1=0, Y1=0, X2=0, Y2=0; + double ret=0; + + if (X > Table.max_x) return Table_Index(Table,Table.rows-1 ,j); + if (X < Table.min_x) return Table_Index(Table,0 ,j); + + // Use constant-time lookup when possible + if(Table.constantstep) { + Index = (long)floor( + (X - Table.min_x) / (Table.max_x - Table.min_x) * (Table.rows-1)); + X1 = Table_Index(Table,Index-1,0); + X2 = Table_Index(Table,Index ,0); + } + // Use binary search on large, monotonic tables + else if(Table.monotonic && Table.rows > 100) { + long left = Table.min_x; + long right = Table.max_x; + + while (!((X1 <= X) && (X < X2)) && (right - left > 1)) { + Index = (left + right) / 2; + + X1 = Table_Index(Table, Index-1, 0); + X2 = Table_Index(Table, Index, 0); + + if (X < X1) { + right = Index; + } else { + left = Index; + } + } + } + + // Fall back to linear search, if no-one else has set X1, X2 correctly + if (!((X1 <= X) && (X < X2))) { + /* look for index surrounding X in the table -> Index */ + for (Index=1; Index <= Table.rows-1; Index++) { + X1 = Table_Index(Table, Index-1,0); + X2 = Table_Index(Table, Index ,0); + if ((X1 <= X) && (X < X2)) break; + } /* end for Index */ + } + + Y1 = Table_Index(Table,Index-1, j); + Y2 = Table_Index(Table,Index , j); + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) { + ret = Table_Interp1d(X, X1,Y1, X2,Y2); + } + else if (!strcmp(Table.method,"nearest")) { + ret = Table_Interp1d_nearest(X, X1,Y1, X2,Y2); + } + +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + + return ret; +} /* end Table_Value */ + +/******************************************************************************* +* double Table_Value2d(t_Table Table, double X, double Y) +* ACTION: read element [X,Y] of a matrix Table +* input Table: table containing data. +* X : row index, may be non integer +* Y : column index, may be non integer +* return Value = data[index X][index Y] with bi-linear interpolation +* Returns Value for the indices [X,Y] +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value2d(t_Table Table, double X, double Y) + { + long x1,x2,y1,y2; + double z11,z12,z21,z22; + double ret=0; + + x1 = (long)floor(X); + y1 = (long)floor(Y); + + if (x1 > Table.rows-1 || x1 < 0) { + x2 = x1; + } else { + x2 = x1 + 1; + } + + if (y1 > Table.columns-1 || y1 < 0) { + y2 = y1; + } else { + y2 = y1 + 1; + } + + z11 = Table_Index(Table, x1, y1); + + if (y2 != y1) z12=Table_Index(Table, x1, y2); else z12 = z11; + if (x2 != x1) z21=Table_Index(Table, x2, y1); else z21 = z11; + if (y2 != y1) z22=Table_Index(Table, x2, y2); else z22 = z21; + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) + ret = Table_Interp2d(X,Y, x1,y1,x2,y2, z11,z12,z21,z22); +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + else { + if (fabs(X-x1) < fabs(X-x2)) { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z11; else ret = z12; + } else { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z21; else ret = z22; + } + } + return ret; + } /* end Table_Value2d */ + + +/******************************************************************************* +* void Table_Free(t_Table *Table) +* ACTION: free a single Table. First Call Table_File_list_gc. If this returns +* non-zero it means there are more refernces to the table, and so the table +* should not bee freed. +* return: empty Table +*******************************************************************************/ + void Table_Free(t_Table *Table) + { + if( !Table_File_List_gc(Table) ){ + return; + } + if (!Table) return; + if (Table->data != NULL) free(Table->data); + if (Table->header != NULL) free(Table->header); + Table->data = NULL; + Table->header = NULL; + } /* end Table_Free */ + +/****************************************************************************** +* void Table_Info(t_Table Table) +* ACTION: print informations about a single Table +*******************************************************************************/ + long Table_Info(t_Table Table) + { + char buffer[256]; + long ret=0; + + if (!Table.block_number) strcpy(buffer, "catenated"); + else sprintf(buffer, "block %li", Table.block_number); + printf("Table from file '%s' (%s)", + Table.filename[0] != '\0' ? Table.filename : "", buffer); + if ((Table.data != NULL) && (Table.rows*Table.columns)) + { + printf(" is %li x %li ", Table.rows, Table.columns); + if (Table.rows*Table.columns > 1) + printf("(x=%g:%g)", Table.min_x, Table.max_x); + else printf("(x=%g) ", Table.min_x); + ret = Table.rows*Table.columns; + if (Table.monotonic) printf(", monotonic"); + if (Table.constantstep) printf(", constant step"); + printf(". interpolation: %s\n", Table.method); + } + else printf(" is empty.\n"); + + if (Table.header && strlen(Table.header)) { + char *header; + int i; + header = malloc(80); + if (!header) return(ret); + for (i=0; i<80; header[i++]=0); + strncpy(header, Table.header, 75); + if (strlen(Table.header) > 75) { + strcat( header, " ..."); + } + for (i=0; iheader = NULL; + Table->filename[0]= '\0'; + Table->filesize= 0; + Table->min_x = 0; + Table->max_x = 0; + Table->step_x = 0; + Table->block_number = 0; + Table->array_length = 0; + Table->monotonic = 0; + Table->constantstep = 0; + Table->begin = 0; + Table->end = 0; + strcpy(Table->method,"linear"); + + if (rows*columns >= 1) { + data = (double*)malloc(rows*columns*sizeof(double)); + if (data) for (i=0; i < rows*columns; data[i++]=0); + else { + if(Table->quiet<2) + fprintf(stderr,"Error: allocating %ld double elements." + "Too big (Table_Init).\n", rows*columns); + rows = columns = 0; + } + } + Table->rows = (rows >= 1 ? rows : 0); + Table->columns = (columns >= 1 ? columns : 0); + Table->data = data; + return(Table->rows*Table->columns); +} /* end Table_Init */ + +/****************************************************************************** +* long Table_Write(t_Table Table, char *file, x1,x2, y1,y2) +* ACTION: write a Table to disk (ascii). +* when x1=x2=0 or y1=y2=0, the table default limits are used. +* return: 0=all is fine, non-0: error +*******************************************************************************/ +MCDETECTOR Table_Write(t_Table Table, char *file, char *xl, char *yl, + double x1, double x2, double y1, double y2) +{ + MCDETECTOR detector; + + if ((Table.data == NULL) && (Table.rows*Table.columns)) { + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + return(detector); /* Table is empty - nothing to do */ + } + if (!x1 && !x2) { + x1 = Table.min_x; + x2 = Table.max_x; + } + if (!y1 && !y2) { + y1 = 1; + y2 = Table.columns; + } + + /* transfer content of the Table into a 2D detector */ + Coords coords = { 0, 0, 0}; + Rotation rot; + rot_set_rotation(rot, 0, 0, 0); + + if (Table.rows == 1 || Table.columns == 1) { + detector = mcdetector_out_1D(Table.filename, + xl ? xl : "", yl ? yl : "", + "x", x1, x2, + Table.rows * Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } else { + detector = mcdetector_out_2D(Table.filename, + xl ? xl : "", yl ? yl : "", + x1, x2, y1, y2, + Table.rows, Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } + return(detector); +} + +/****************************************************************************** +* void Table_Stat(t_Table *Table) +* ACTION: computes min/max/mean step of 1st column for a single table (private) +* return: updated Table +*******************************************************************************/ + static void Table_Stat(t_Table *Table) + { + long i; + double max_x, min_x; + double row=1; + char monotonic=1; + char constantstep=1; + double step=0; + long n; + + if (!Table) return; + if (!Table->rows || !Table->columns) return; + if (Table->rows == 1) row=0; // single row + max_x = -FLT_MAX; + min_x = FLT_MAX; + n = (row ? Table->rows : Table->columns); + /* get min and max of first column/vector */ + for (i=0; i < n; i++) + { + double X; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + if (X < min_x) min_x = X; + if (X > max_x) max_x = X; + } /* for */ + + /* test for monotonicity and constant step if the table is an XY or single vector */ + if (n > 1) { + /* mean step */ + step = (max_x - min_x)/(n-1); + /* now test if table is monotonic on first column, and get minimal step size */ + for (i=0; i < n-1; i++) { + double X, diff;; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if (diff && fabs(diff) < fabs(step)) step = diff; + /* change sign ? */ + if ((max_x - min_x)*diff < 0 && monotonic) + monotonic = 0; + } /* end for */ + + /* now test if steps are constant within READ_TABLE_STEPTOL */ + if(!step){ + /*means there's a disconitnuity -> not constantstep*/ + constantstep=0; + }else if (monotonic) { + for (i=0; i < n-1; i++) { + double X, diff; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if ( fabs(step)*(1+READ_TABLE_STEPTOL) < fabs(diff) || + fabs(diff) < fabs(step)*(1-READ_TABLE_STEPTOL) ) + { constantstep = 0; break; } + } + } + + } + Table->step_x= step; + Table->max_x = max_x; + Table->min_x = min_x; + Table->monotonic = monotonic; + Table->constantstep = constantstep; + } /* end Table_Stat */ + +/****************************************************************************** +* t_Table *Table_Read_Array(char *File, long *blocks) +* ACTION: read as many data blocks as available, iteratively from file +* return: initialized t_Table array, last element is an empty Table. +* the number of extracted blocks in non NULL pointer *blocks +*******************************************************************************/ + t_Table *Table_Read_Array(char *File, long *blocks) + { + t_Table *Table_Array = NULL; + t_Table *Table_Arraytmp = NULL; + long offset=0; + long block_number=0; + long allocated=256; + long nelements=1; + + /* first allocate an initial empty t_Table array */ + Table_Array = (t_Table *)malloc(allocated*sizeof(t_Table)); + if (!Table_Array) { + fprintf(stderr, "Error: Can not allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + *blocks = 0; + return (NULL); + } + + while (nelements > 0) + { + t_Table Table; + + /* if ok, set t_Table block number else exit loop */ + block_number++; + Table.block_number = block_number; + + /* access file at offset and get following block. Block number is from the set offset + * hence the hardcoded 1 - i.e. the next block counted from offset.*/ + nelements = Table_Read_Offset(&Table, File, 1, &offset,0); + /*if the block is empty - don't store it*/ + if (nelements>0){ + /* if t_Table array is not long enough, expand and realocate */ + if (block_number >= allocated-1) { + allocated += 256; + Table_Arraytmp = (t_Table *)realloc(Table_Array, + allocated*sizeof(t_Table)); + if (!Table_Arraytmp) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + free(Table_Array); + *blocks = 0; + return (NULL); + } else { + Table_Array = Table_Arraytmp; + } + } + /* store it into t_Table array */ + //snprintf(Table.filename, 1024, "%s#%li", File, block_number-1); + Table_Array[block_number-1] = Table; + } + /* continues until we find an empty block */ + } + /* send back number of extracted blocks */ + if (blocks) *blocks = block_number-1; + + /* now store total number of elements in Table array */ + for (offset=0; offset < block_number; + Table_Array[offset++].array_length = block_number-1); + + return(Table_Array); + } /* end Table_Read_Array */ +/******************************************************************************* +* void Table_Free_Array(t_Table *Table) +* ACTION: free a Table array +*******************************************************************************/ + void Table_Free_Array(t_Table *Table) + { + long index; + if (!Table) return; + for (index=0;index < Table[0].array_length; index++){ + Table_Free(&Table[index]); + } + free(Table); + } /* end Table_Free_Array */ + +/****************************************************************************** +* long Table_Info_Array(t_Table *Table) +* ACTION: print informations about a Table array +* return: number of elements in the Table array +*******************************************************************************/ + long Table_Info_Array(t_Table *Table) + { + long index=0; + + if (!Table) return(-1); + while (index < Table[index].array_length + && (Table[index].data || Table[index].header) + && (Table[index].rows*Table[index].columns) ) { + Table_Info(Table[index]); + index++; + } + printf("This Table array contains %li elements\n", index); + return(index); + } /* end Table_Info_Array */ + +/****************************************************************************** +* char **Table_ParseHeader(char *header, symbol1, symbol2, ..., NULL) +* ACTION: search for char* symbols in header and return their value or NULL +* the search is not case sensitive. +* Last argument MUST be NULL +* return: array of char* with line following each symbol, or NULL if not found +*******************************************************************************/ +#ifndef MyNL_ARGMAX +#define MyNL_ARGMAX 50 +#endif + +char **Table_ParseHeader_backend(char *header, ...){ + va_list ap; + char exit_flag=0; + int counter =0; + char **ret =NULL; + if (!header || header[0]=='\0') return(NULL); + + ret = (char**)calloc(MyNL_ARGMAX, sizeof(char*)); + if (!ret) { + printf("Table_ParseHeader: Cannot allocate %i values array for Parser (Table_ParseHeader).\n", + MyNL_ARGMAX); + return(NULL); + } + for (counter=0; counter < MyNL_ARGMAX; ret[counter++] = NULL); + counter=0; + + va_start(ap, header); + while(!exit_flag && counter < MyNL_ARGMAX-1) + { + char *arg_char=NULL; + char *pos =NULL; + /* get variable argument value as a char */ + arg_char = va_arg(ap, char *); + if (!arg_char || arg_char[0]=='\0'){ + exit_flag = 1; break; + } + /* search for the symbol in the header */ + pos = (char*)strcasestr(header, arg_char); + if (pos) { + char *eol_pos; + eol_pos = strchr(pos+strlen(arg_char), '\n'); + if (!eol_pos) + eol_pos = strchr(pos+strlen(arg_char), '\r'); + if (!eol_pos) + eol_pos = pos+strlen(pos)-1; + ret[counter] = (char*)malloc(eol_pos - pos); + if (!ret[counter]) { + printf("Table_ParseHeader: Cannot allocate value[%i] array for Parser searching for %s (Table_ParseHeader).\n", + counter, arg_char); + exit_flag = 1; break; + } + strncpy(ret[counter], pos+strlen(arg_char), eol_pos - pos - strlen(arg_char)); + ret[counter][eol_pos - pos - strlen(arg_char)]='\0'; + } + counter++; + } + va_end(ap); + return(ret); +} /* Table_ParseHeader */ + +/****************************************************************************** +* double Table_Interp1d(x, x1, y1, x2, y2) +* ACTION: interpolates linearly at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d(double x, + double x1, double y1, + double x2, double y2) +{ + double slope; + if (x2 == x1) return (y1+y2)/2; + if (y1 == y2) return y1; + slope = (y2 - y1)/(x2 - x1); + return y1+slope*(x - x1); +} /* Table_Interp1d */ + +/****************************************************************************** +* double Table_Interp1d_nearest(x, x1, y1, x2, y2) +* ACTION: table lookup with nearest method at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d_nearest(double x, + double x1, double y1, + double x2, double y2) +{ + if (fabs(x-x1) < fabs(x-x2)) return (y1); + else return(y2); +} /* Table_Interp1d_nearest */ + +/****************************************************************************** +* double Table_Interp2d(x,y, x1,y1, x2,y2, z11,z12,z21,z22) +* ACTION: interpolates bi-linearly at (x,y) between z1=f(x1,y1) and z2=f(x2,y2) +* return: z=f(x,y) value +* x,y | x1 x2 +* ---------------- +* y1 | z11 z21 +* y2 | z12 z22 +*******************************************************************************/ +double Table_Interp2d(double x, double y, + double x1, double y1, + double x2, double y2, + double z11, double z12, double z21, double z22) +{ + double ratio_x, ratio_y; + if (x2 == x1) return Table_Interp1d(y, y1,z11, y2,z12); + if (y1 == y2) return Table_Interp1d(x, x1,z11, x2,z21); + + ratio_y = (y - y1)/(y2 - y1); + ratio_x = (x - x1)/(x2 - x1); + return (1-ratio_x)*(1-ratio_y)*z11 + ratio_x*(1-ratio_y)*z21 + + ratio_x*ratio_y*z22 + (1-ratio_x)*ratio_y*z12; +} /* Table_Interp2d */ + +/* end of read_table-lib.c */ +#endif // READ_TABLE_LIB_C + + +/* Shared user declarations for all components types 'Guide_four_side'. */ + + + void + TEST_INPUT (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s should \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + fprintf (stderr, " (for negative values use the global guide position !) \n"); + exit (-1); + }; + + void + TEST_INPUT_1 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s must \n", compname, name); + fprintf (stderr, " be -1 (transperent) or \n"); + fprintf (stderr, " be 0 (absorbing) or \n"); + fprintf (stderr, " be > 0 (reflecting) \n"); + exit (-1); + }; + + void + TEST_INPUT_2 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s can \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + exit (-1); + }; + + void + TEST_INPUT_3 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %sr must \n", compname, name); + fprintf (stderr, " be positive\n"); + exit (-1); + }; + + void + TEST_INPUT_4 (char name[20], char name1[20], double inputname, double inputname1, char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) \n", compname); + fprintf (stderr, " %s have to be bigger or equal %s \n", name, name1); + printf (" %s = %f \n", name, inputname); + printf (" %s = %f \n", name1, inputname1); + fprintf (stderr, " check curve parameter and wallthicknesses! \n"); + exit (-1); + }; + + /* function to calculate the needed parameters for an elliptic wall*/ + + void + ELLIPSE (double w1, double length, double lin, double lout, double wallthick, double* a, double* b, double* a2, double* b2, double* z0, double* w2, double* awt, + double* a2wt, double* bwt, double* b2wt, double* w2wt, double* w1wt) { + double DIV1, lb, u1, u2, u1wt, u2wt, dx, dz; + lb = lin + length + lout; /* lenght between the two focal points of the wall */ + *z0 = (lin - length - lout) / 2.0; + u1 = sqrt ((lin * lin) + (w1 * w1)); /* length between entrance focal point and starting point of the wall (INNER side)*/ + u2 = sqrt ((w1 * w1) + ((length + lout) * (length + lout))); /* length between exit focal point and end point of the wall (INNER side) */ + *a = (u1 + u2) / 2.0; /* long half axis a of the ellipse (INNER side)*/ + *a2 = *a * (*a); /* square of the long axis a (INNER side)*/ + *b = sqrt (*a2 - (lb * (lb) / 4.0)); /* short half axis b of the ellipse (INNER side)*/ + *b2 = *b * (*b); /* square of short half axis b of the ellipse (INNER side)*/ + DIV1 = sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2))); /* help variable to calculated the exit width (INNER side)*/ + *w2 = *b * (DIV1); /* exit width (INNER side)*/ + if (length < (lb) / 2 - lout) { /* if the maximum opening of the guide is smaller than the small half axis b, the OUTER side is defined by: */ + dx = wallthick * sin (atan (*a2 * w1 / (*b2 * (*z0)))); + dz = wallthick * cos (atan (*a2 * w1 / (*b2 * (*z0)))); + u1wt = sqrt (((lin + dz) * (lin + dz)) + ((w1 + dx) * (w1 + dx))); /* length between entrance focal point and starting point of the wall (OUTER side)*/ + u2wt = sqrt (((w1 + dx) * (w1 + dx)) + + ((length + lout - dz) * (length + lout - dz))); /* length between exit focal point and end point of the wall (OUTER side) */ + *awt = (u1wt + u2wt) / 2.0; /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *awt * (*awt); /* square of the long axis a (OUTER side)*/ + *bwt = sqrt (*a2wt - (lb * lb / 4.0)); /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout - length) * (lb / 2.0 - lout - length) / (*a2wt))); /* entrance width for OUTER side */ + } else { /* if the maximum opening of the guide is the small half axis b the OUTER wall is defined by:*/ + *bwt = *b + wallthick; /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of the long axis a (OUTER side)*/ + *awt = sqrt (*b2wt + (lb * lb / 4.0)); /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *b2wt + (lb * lb / 4.0); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lin) * (lb / 2.0 - lin) / (*a2wt))); /* entrance width for OUTER side */ + } + } + + /* function to calculate the needed parameters for a parabolical focusing wall*/ + + void + PARABEL_FOCUS (double w1, double length, double lout, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = (length + lout) * (length + lout); /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (lout + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = length + lout + *p2para / 4.0; /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = 1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (w1 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (w1 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (length + lout - dz) * (length + lout - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((w1 + dx) * (w1 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *pbwt = length + lout + *p2parawt / 4.0; /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = 1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + *w2wt = sqrt (*p2parawt * (lout + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lout + length + *p2parawt / 4.0)); /* entrance width (OUTER side) */ + } + + /* function to calculate the needed parameters for a parabolical defocusing wall*/ + + void + PARABEL_DEFOCUS (double w1, double length, double lin, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = lin * lin; /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (length + lin + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = -(lin + *p2para / 4.0); /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = -1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (-*w2 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (-*w2 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (lin + length - dz) * (lin + length - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((*w2 + dx) * (*w2 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lin + *p2parawt / 4.0)); /* entrance width for right focusing parabolic wall (OUTER side) */ + *w2wt = sqrt (*p2parawt * (lin + length + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *pbwt = -(lin + *p2parawt / 4.0); /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = -1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + } + + /* function to calculate the needed parameters for a linear wall*/ + + void + LINEAR (double w1, double w2, double length, double wallthick, double* w1wt, double* w2wt) { + *w1wt = w1 + wallthick / (cos (atan ((w1 - w2) / length))); /* entrance width (OUTER side) */ + *w2wt = w2 + wallthick / (cos (atan ((w1 - w2) / length))); /* exit width (OUTER side) */ + } + + /* function to calculate the intersection time with a linear wall at an negative axis*/ + + void + TIME_LINEAR (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (-w2 + w1) / length; + *t2 = (anstieg * zin - w1 - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (INNER side)*/ + *t2wt = (anstieg * zin - w1wt - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (OUTER side)*/ + if (*t2 < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (*t2wt < 1e-15) /* see comments above*/ + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with a linear wall at an positive axis*/ + + void + TIME_LINEAR_1 (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (w2 - w1) / length; + *t2 = (anstieg * zin + w1 - xin) / (vxin1 - anstieg * vzin1); + *t2wt = (anstieg * zin + w1wt - xin) / (vxin1 - anstieg * vzin1); + if (*t2 < 1e-15) + *t2 = t1in + 2.0; + if (*t2wt < 1e-15) + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with an elliptical wall at a negative axis*/ + + void + TIME_ELLIPSE (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + /* solving the elliptic equation in respect to z and the straight neutron trajectoty, only two z values possible! */ + + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); /* p parameter of quadratic equation for calulation the z component of the intersection point with + respect to the neutron trajectory (INNER side)*/ + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); /* q parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (INNER side)*/ + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; /* if the neutron never touch the ellipse the time is set to be bigger than the time (t1) needed to pass the component */ + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); /* first solution for z (INNER side)*/ + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); /* second solution for z (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* interaction time for first z value (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* interactime time for second z value (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) /* for the right wall x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); /* p parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (OUTER side)*/ + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); /* q parameter of quadratic equation for calulation the z component of the + intersection point with respect to the neutron trajectory (OUTER side)*/ + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; /* if the neutron never touch the ellipse the time is set bigger than need to pass the component */ + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); /* first solution for z (OUTER side) */ + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); /* second solution for z (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* interaction time for first z value (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* interactime time for second z value (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER side)*/ + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with an elliptical wall at a positive axis*/ + + void + TIME_ELLIPSE_1 (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; + n = -m * zin + xin; + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + } + + /* function to calculate the intersection time with a parabolical wall at an negative axis*/ + + void + TIME_PARABEL (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); /* p parameter of quadratic equation (INNER side) */ + q = n * n / (m * m) - pb / (pa * m * m); /* q parameter of quadratic equation (INNER side) */ + if (q > 0 + && q > (p * p + / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) the time is set to t1+2.0 */ + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { /* only neutron with a negativ x-component can hit the RIGHT wall (INNER side)*/ + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; /* the time solution for neutron with a positive x component is set to a time long behind the exit of the guide */ + /* (means will not scatter with the right wall)*/ + } + } else { /* if vx is not zero and x is a real variable*/ + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); /* first z-solution for intersection (INNER side)*/ + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); /* second z-solution for intersection (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* first time solution (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* second time solution (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) { /* the x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; + } /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); /* p parameter of quadratic equation (OUTER side)*/ + qwt = n * n / (m * m) - pbwt / (pawt * m * m); /* q parameter of quadratic equation (OUTER side)*/ + if (qwt > 0 && qwt > (pwt * pwt / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) and the + time is set to t1+2.0 */ + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; /* only neutron with a negativ x-component can hit the RIGHT wall (OUTER wall)*/ + } else { + *t2w1wt = t1in + 2.0; + } + } else { /* if vx is not zero */ + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); /* first z-solution for intersection (OUTER side)*/ + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); /* second z-solution for intersection (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* first time solution (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* second time solution (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER wall)*/ + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with a parabolical wall at an positive axis*/ + + void + TIME_PARABEL_1 (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; + n = -m * zin + xin; + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); + q = n * n / (m * m) - pb / (pa * m * m); + if (q > 0 && q > (p * p / 4)) { + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; + } + } else { + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); + qwt = n * n / (m * m) - pbwt / (pawt * m * m); + if (qwt > 0 && qwt > (pwt * pwt / 4)) { + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; + } else { + *t2w1wt = t1in + 2.0; + } + } else { + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + }; + + /* test if the left or right scattered neutron in the upper and lower limits defined by TOP und BOTTOM walls */ + + void + TEST_UP_DOWN (double t, double vzin, double zin, double vyin, double yin, double length, double linhdin, double louthdin, double linhuin, double louthuin, + double h2din, double h1din, double h2uin, double h1uin, double bhdin, double z0hdin, double a2hdin, double bhuin, double z0huin, double a2huin, + double pbhdin, double pahdin, double pbhuin, double pahuin, double* ylimitd, double* ylimitu, double* ytest) { + if (linhdin == 0 && louthdin == 0) { + *ylimitd + = (-h2din + h1din) / length * (vzin * t + zin) - h1din; /* calculation of the lower y-limit given by a linear bottom wall and the interaction time*/ + } else { + if (linhdin != 0 && louthdin != 0) { + *ylimitd = -bhdin + * sqrt (1 + - ((z0hdin + (vzin * t + zin)) * (z0hdin + (vzin * t + zin))) + / a2hdin); /* calculation of the lower y-limit given by a elliptic bottom wall and the interaction time*/ + } else { + *ylimitd = -sqrt (((vzin * t + zin) - pbhdin) / -pahdin); /* calculation of the lower y-limit given by a parabolic bottom wall and the interaction time*/ + } + } + if (linhuin == 0 && louthuin == 0) { + *ylimitu = (h2uin - h1uin) / length * (vzin * t + zin) + h1uin; /* calculation of the upper y-limit given by a linear top wall and the interaction time*/ + } else { + if (linhuin != 0 && louthuin != 0) { + *ylimitu = bhuin + * sqrt (1 + - ((z0huin + (vzin * t + zin)) * (z0huin + (vzin * t + zin))) + / a2huin); /* calculation of the upper y-limit given by a elliptic top wall and the interaction time*/ + } else { + *ylimitu = sqrt (((vzin * t + zin) - pbhuin) / -pahuin); /* calculation of the upper y-limit given by a parabolic top wall and the interaction time*/ + } + } + *ytest = vyin * t + yin; /* calculation of the y coordinate of the neutron at the interaction time */ + }; + + /* test if the up or down scattered neutron in the right and left limits defined by RIGHT und LEFT walls */ + + void + TEST_LEFT_RIGHT (double t, double vzin, double zin, double vxin, double xin, double length, double linwrin, double loutwrin, double linwlin, double loutwlin, + double w2rin, double w1rin, double w2lin, double w1lin, double bwrin, double z0wrin, double a2wrin, double bwlin, double z0wlin, double a2wlin, + double pbwrin, double pawrin, double pbwlin, double pawlin, double* xlimitr, double* xlimitl, double* xtest) { + if (linwrin == 0 && loutwrin == 0) { + *xlimitr = (-w2rin + w1rin) / length * (vzin * t + zin) - w1rin; + } else { + if (linwrin != 0 && loutwrin != 0) { + *xlimitr = -bwrin * sqrt (1 - ((z0wrin + (vzin * t + zin)) * (z0wrin + (vzin * t + zin))) / a2wrin); + } else { + *xlimitr = -sqrt (((vzin * t + zin) - pbwrin) / -pawrin); + } + } + if (linwlin == 0 && loutwlin == 0) { + *xlimitl = (w2lin - w1lin) / length * (vzin * t + zin) + w1lin; + } else { + if (linwlin != 0 && loutwlin != 0) { + *xlimitl = bwlin * sqrt (1 - ((z0wlin + (vzin * t + zin)) * (z0wlin + (vzin * t + zin))) / a2wlin); + } else { + *xlimitl = sqrt (((vzin * t + zin) - pbwlin) / -pawlin); + } + } + *xtest = vxin * t + xin; + }; + +/* Shared user declarations for all components types 'Slit'. */ + void + slit_print_if (int condition, char* level, char* message, char* component) { + if (condition) + fprintf (stderr, "Slit: %s: %s: %s\n", component, level, message); + } + void + slit_error_if (int condition, char* message, char* component) { + slit_print_if (condition, "Error", message, component); + if (condition) + exit (-1); + } + void + slit_warning_if (int condition, char* message, char* component) { + slit_print_if (condition, "Warning", message, component); + } + +/* Shared user declarations for all components types 'Graphite_Diffuser'. */ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} + +/* Shared user declarations for all components types 'Monitor_nD'. */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.h +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H + +#define MONITOR_ND_LIB_H "$Revision$" +#define MONnD_COORD_NMAX 30 /* max number of variables to record */ + + typedef struct MonitornD_Defines + { + int COORD_NONE ; + int COORD_X ; + int COORD_Y ; + int COORD_Z ; + int COORD_RADIUS; + int COORD_VX ; + int COORD_VY ; + int COORD_VZ ; + int COORD_V ; + int COORD_T ; + int COORD_P ; + int COORD_SX ; + int COORD_SY ; + int COORD_SZ ; + int COORD_KX ; + int COORD_KY ; + int COORD_KZ ; + int COORD_K ; + int COORD_ENERGY; + int COORD_LAMBDA; + int COORD_KXY ; + int COORD_KYZ ; + int COORD_KXZ ; + int COORD_VXY ; + int COORD_VYZ ; + int COORD_VXZ ; + int COORD_HDIV ; + int COORD_VDIV ; + int COORD_ANGLE ; + int COORD_NCOUNT; + int COORD_THETA ; + int COORD_PHI ; + int COORD_USER1 ; + int COORD_USER2 ; + int COORD_USER3 ; + int COORD_USERDOUBLE0 ; + int COORD_USERDOUBLE1 ; + int COORD_USERDOUBLE2 ; + int COORD_USERDOUBLE3 ; + int COORD_USERDOUBLE4 ; + int COORD_USERDOUBLE5 ; + int COORD_USERDOUBLE6 ; + int COORD_USERDOUBLE7 ; + int COORD_USERDOUBLE8 ; + int COORD_USERDOUBLE9 ; + int COORD_USERDOUBLE10 ; + int COORD_USERDOUBLE11 ; + int COORD_USERDOUBLE12 ; + int COORD_USERDOUBLE13 ; + int COORD_USERDOUBLE14 ; + int COORD_USERDOUBLE15 ; + int COORD_XY ; + int COORD_XZ ; + int COORD_YZ ; + int COORD_PIXELID; + + /* token modifiers */ + int COORD_VAR ; /* next token should be a variable or normal option */ + int COORD_MIN ; /* next token is a min value */ + int COORD_MAX ; /* next token is a max value */ + int COORD_DIM ; /* next token is a bin value */ + int COORD_FIL ; /* next token is a filename */ + int COORD_EVNT ; /* next token is a buffer size value */ + int COORD_3HE ; /* next token is a 3He pressure value */ + int COORD_LOG ; /* next variable will be in log scale */ + int COORD_ABS ; /* next variable will be in abs scale */ + int COORD_SIGNAL; /* next variable will be the signal var */ + int COORD_AUTO ; /* set auto limits */ + + char TOKEN_DEL[32]; /* token separators */ + + char SHAPE_SQUARE; /* shape of the monitor */ + char SHAPE_DISK ; + char SHAPE_SPHERE; + char SHAPE_CYLIND; + char SHAPE_BANANA; /* cylinder without top/bottom, on restricted angular area */ + char SHAPE_BOX ; + char SHAPE_PREVIOUS; + char SHAPE_OFF; + + } MonitornD_Defines_type; + + typedef struct MonitornD_Variables + { + double area; + double Sphere_Radius ; + double Cylinder_Height ; + char Flag_With_Borders ; /* 2 means xy borders too */ + char Flag_List ; /* 1 store 1 buffer, 2 is list all, 3 list all+append */ + char Flag_Multiple ; /* 1 when n1D, 0 for 2D */ + char Flag_Verbose ; + int Flag_Shape ; + char Flag_Auto_Limits ; /* get limits from first Buffer */ + char Flag_Absorb ; /* monitor is also a slit */ + char Flag_per_cm2 ; /* flux is per cm2 */ + char Flag_log ; /* log10 of the flux */ + char Flag_parallel ; /* set neutron state back after detection (parallel components) */ + char Flag_Binary_List ; + char Flag_capture ; /* lambda monitor with lambda/lambda(2200m/s = 1.7985 Angs) weightening */ + int Flag_signal ; /* 0:monitor p, else monitor a mean value */ + int Flag_mantid ; /* 0:normal monitor, else do mantid-event specifics */ + int Flag_OFF ; /* Flag to indicate external geometry from OFF file */ + long long OFF_polyidx; /* When intersection is done externally by off_intersect, this gives the + polygon number, i.e. pixel index */ + unsigned long Coord_Number ; /* total number of variables to monitor, plus intensity (0) */ + unsigned long Coord_NumberNoPixel; /* same but without counting PixelID */ + unsigned long Buffer_Block ; /* Buffer size for list or auto limits */ + long long Neutron_Counter ; /* event counter, simulation total counts is mcget_ncount() */ + unsigned long Buffer_Counter ; /* index in Buffer size (for realloc) */ + unsigned long Buffer_Size ; + int Coord_Type[MONnD_COORD_NMAX]; /* type of variable */ + char Coord_Label[MONnD_COORD_NMAX][30]; /* label of variable */ + char Coord_Var[MONnD_COORD_NMAX][30]; /* short id of variable */ + long Coord_Bin[MONnD_COORD_NMAX]; /* bins of variable array */ + long Coord_BinProd[MONnD_COORD_NMAX]; /* product of bins of variable array */ + double Coord_Min[MONnD_COORD_NMAX]; + double Coord_Max[MONnD_COORD_NMAX]; + char Monitor_Label[MONnD_COORD_NMAX*30];/* Label for monitor */ + char Mon_File[128]; /* output file name */ + + /* these don't seem to be used anymore as they are superseded by _particle + double cx, cy, cz; + double cvx, cvy, cvz; + double ckx, cky, ckz; + double csx, csy, csz; + double cEx, cEy, cEz; + double cs1, cs2, ct, cphi, cp; */ + + double He3_pressure; + char Flag_UsePreMonitor ; /* use a previously stored neutron parameter set */ + char UserName1[128]; + char UserName2[128]; + char UserName3[128]; + char UserVariable1[128]; + char UserVariable2[128]; + char UserVariable3[128]; + double UserDoubles[16]; + char option[CHAR_BUF_LENGTH]; + + long long int Nsum; + double psum, p2sum; + double **Mon2D_N; + double **Mon2D_p; + double **Mon2D_p2; + double *Mon2D_Buffer; + unsigned long PixelID; + + double mxmin,mxmax,mymin,mymax,mzmin,mzmax; + double mean_dx, mean_dy, min_x, min_y, max_x, max_y, mean_p; + + char compcurname[128]; + Coords compcurpos; + Rotation compcurrot; + int compcurindex; + } MonitornD_Variables_type; + +/* monitor_nd-lib function prototypes */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *, MonitornD_Variables_type *, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, int); +#pragma acc routine +int Monitor_nD_Trace(MonitornD_Defines_type *, MonitornD_Variables_type *, _class_particle* _particle); +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_Finally(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_McDisplay(MonitornD_Defines_type *, MonitornD_Variables_type *); + +#endif + +/* end of monitor_nd-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H +#error McStas : please import this library with %include "monitor_nd-lib" +#endif + +/* ========================================================================= */ +/* Monitor_nD_Init: this routine is used to parse options */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars, + MCNUM xwidth, + MCNUM yheight, + MCNUM zdepth, + MCNUM xmin, + MCNUM xmax, + MCNUM ymin, + MCNUM ymax, + MCNUM zmin, + MCNUM zmax, + int offflag) + { + long carg = 1; + char *option_copy, *token; + char Flag_New_token = 1; + char Flag_End = 1; + char Flag_All = 0; + char Flag_No = 0; + char Flag_abs = 0; + int Flag_auto = 0; /* -1: all, 1: the current variable */ + int Set_Vars_Coord_Type; + char Set_Vars_Coord_Label[64]; + char Set_Vars_Coord_Var[64]; + char Short_Label[MONnD_COORD_NMAX][64]; + int Set_Coord_Mode; + long i=0, j=0; + double lmin, lmax, XY=0; + long t; + int N_spatial_dims=0; + + t = (long)time(NULL); + +/* initialize DEFS */ +/* Variables to monitor */ + DEFS->COORD_NONE =0; + DEFS->COORD_X =1; + DEFS->COORD_Y =2; + DEFS->COORD_Z =3; + DEFS->COORD_RADIUS =19; + DEFS->COORD_VX =4; + DEFS->COORD_VY =5; + DEFS->COORD_VZ =6; + DEFS->COORD_V =16; + DEFS->COORD_T =7; + DEFS->COORD_P =8; + DEFS->COORD_SX =9; + DEFS->COORD_SY =10; + DEFS->COORD_SZ =11; + DEFS->COORD_KX =12; + DEFS->COORD_KY =13; + DEFS->COORD_KZ =14; + DEFS->COORD_K =15; + DEFS->COORD_ENERGY =17; + DEFS->COORD_LAMBDA =18; + DEFS->COORD_HDIV =20; + DEFS->COORD_VDIV =21; + DEFS->COORD_ANGLE =22; + DEFS->COORD_NCOUNT =23; + DEFS->COORD_THETA =24; + DEFS->COORD_PHI =25; + DEFS->COORD_USER1 =26; + DEFS->COORD_USER2 =27; + DEFS->COORD_USER3 =28; + DEFS->COORD_USERDOUBLE0=39; + DEFS->COORD_USERDOUBLE1=40; + DEFS->COORD_USERDOUBLE2=41; + DEFS->COORD_USERDOUBLE3=42; + DEFS->COORD_USERDOUBLE4=43; + DEFS->COORD_USERDOUBLE5=44; + DEFS->COORD_USERDOUBLE6=45; + DEFS->COORD_USERDOUBLE7=46; + DEFS->COORD_USERDOUBLE8=47; + DEFS->COORD_USERDOUBLE9=48; + DEFS->COORD_USERDOUBLE10=49; + DEFS->COORD_USERDOUBLE11=50; + DEFS->COORD_USERDOUBLE12=51; + DEFS->COORD_USERDOUBLE13=52; + DEFS->COORD_USERDOUBLE14=53; + DEFS->COORD_USERDOUBLE15=54; + DEFS->COORD_XY =37; + DEFS->COORD_YZ =31; + DEFS->COORD_XZ =32; + DEFS->COORD_VXY =30; + DEFS->COORD_VYZ =34; + DEFS->COORD_VXZ =36; + DEFS->COORD_KXY =29; + DEFS->COORD_KYZ =33; + DEFS->COORD_KXZ =35; + DEFS->COORD_PIXELID=38; + +/* token modifiers */ + DEFS->COORD_VAR =0; /* next token should be a variable or normal option */ + DEFS->COORD_MIN =1; /* next token is a min value */ + DEFS->COORD_MAX =2; /* next token is a max value */ + DEFS->COORD_DIM =3; /* next token is a bin value */ + DEFS->COORD_FIL =4; /* next token is a filename */ + DEFS->COORD_EVNT =5; /* next token is a buffer size value */ + DEFS->COORD_3HE =6; /* next token is a 3He pressure value */ + DEFS->COORD_LOG =64; /* next variable will be in log scale */ + DEFS->COORD_ABS =128; /* next variable will be in abs scale */ + DEFS->COORD_SIGNAL =256; /* next variable will be the signal var */ + DEFS->COORD_AUTO =512; /* set auto limits */ + + strcpy(DEFS->TOKEN_DEL, " =,;[](){}:"); /* token separators */ + + DEFS->SHAPE_SQUARE =0; /* shape of the monitor */ + DEFS->SHAPE_DISK =1; + DEFS->SHAPE_SPHERE =2; + DEFS->SHAPE_CYLIND =3; + DEFS->SHAPE_BANANA =4; + DEFS->SHAPE_BOX =5; + DEFS->SHAPE_PREVIOUS=6; + DEFS->SHAPE_OFF=7; + + Vars->Sphere_Radius = 0; + Vars->Cylinder_Height = 0; + Vars->Flag_With_Borders = 0; /* 2 means xy borders too */ + Vars->Flag_List = 0; /* 1=store 1 buffer, 2=list all, 3=re-use buffer */ + Vars->Flag_Multiple = 0; /* 1 when n1D, 0 for 2D */ + Vars->Flag_Verbose = 0; + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + Vars->Flag_Auto_Limits = 0; /* get limits from first Buffer */ + Vars->Flag_Absorb = 0; /* monitor is also a slit */ + Vars->Flag_per_cm2 = 0; /* flux is per cm2 */ + Vars->Flag_log = 0; /* log10 of the flux */ + Vars->Flag_parallel = 0; /* set neutron state back after detection (parallel components) */ + Vars->Flag_Binary_List = 0; /* save list as a binary file (smaller) */ + Vars->Coord_Number = 0; /* total number of variables to monitor, plus intensity (0) */ + Vars->Coord_NumberNoPixel=0; /* same but without counting PixelID */ + + Vars->Buffer_Block = MONND_BUFSIZ; /* Buffer size for list or auto limits */ + Vars->Neutron_Counter = 0; /* event counter, simulation total counts is mcget_ncount() */ + Vars->Buffer_Counter = 0; /* index in Buffer size (for realloc) */ + Vars->Buffer_Size = 0; + Vars->He3_pressure = 0; + Vars->Flag_capture = 0; + Vars->Flag_signal = DEFS->COORD_P; + Vars->Flag_mantid = 0; + Vars->Flag_OFF = offflag; + Vars->OFF_polyidx = -1; + Vars->mean_dx=Vars->mean_dy=0; + Vars->min_x = Vars->max_x =0; + Vars->min_y = Vars->max_y =0; + + Set_Vars_Coord_Type = DEFS->COORD_NONE; + Set_Coord_Mode = DEFS->COORD_VAR; + + /* handle size parameters */ + /* normal use is with xwidth, yheight, zdepth */ + /* if xmin,xmax,ymin,ymax,zmin,zmax are non 0, use them */ + if (fabs(xmin-xmax) == 0) + { Vars->mxmin = -fabs(xwidth)/2; Vars->mxmax = fabs(xwidth)/2; } + else + { if (xmin < xmax) {Vars->mxmin = xmin; Vars->mxmax = xmax;} + else {Vars->mxmin = xmax; Vars->mxmax = xmin;} + } + if (fabs(ymin-ymax) == 0) + { Vars->mymin = -fabs(yheight)/2; Vars->mymax = fabs(yheight)/2; } + else + { if (ymin < ymax) {Vars->mymin = ymin; Vars->mymax = ymax;} + else {Vars->mymin = ymax; Vars->mymax = ymin;} + } + if (fabs(zmin-zmax) == 0) + { Vars->mzmin = -fabs(zdepth)/2; Vars->mzmax = fabs(zdepth)/2; } + else + { if (zmin < zmax) {Vars->mzmin = zmin; Vars->mzmax = zmax; } + else {Vars->mzmin = zmax; Vars->mzmax = zmin; } + } + + if (fabs(Vars->mzmax-Vars->mzmin) == 0) + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + else + Vars->Flag_Shape = DEFS->SHAPE_BOX; + + if (Vars->Flag_OFF) { + N_spatial_dims++; + Vars->Flag_Shape = DEFS->SHAPE_OFF; + } + + /* parse option string */ + + option_copy = (char*)malloc(strlen(Vars->option)+1); + if (option_copy == NULL) + { + fprintf(stderr,"Monitor_nD: %s cannot allocate 'options' copy (%li). Fatal.\n", Vars->compcurname, (long)strlen(Vars->option)); + exit(-1); + } + + if (strlen(Vars->option)) + { + Flag_End = 0; + strcpy(option_copy, Vars->option); + } + + if (strstr(Vars->option, "cm2") || strstr(Vars->option, "cm^2")) Vars->Flag_per_cm2 = 1; + + if (strstr(Vars->option, "binary") || strstr(Vars->option, "float")) + Vars->Flag_Binary_List = 1; + if (strstr(Vars->option, "double")) + Vars->Flag_Binary_List = 2; + + strcpy(Vars->Coord_Label[0],"Intensity"); + strncpy(Vars->Coord_Var[0],"p",30); + Vars->Coord_Type[0] = DEFS->COORD_P; + Vars->Coord_Bin[0] = 1; + Vars->Coord_Min[0] = 0; + Vars->Coord_Max[0] = FLT_MAX; + + /* default file name is comp_name+dateID */ + sprintf(Vars->Mon_File, "%s_%li", Vars->compcurname, t); + + carg = 1; + while((Flag_End == 0) && (carg < 128)) + { + if (Flag_New_token) /* retain previous token or get a new one */ + { + if (carg == 1) token=(char *)strtok(option_copy,DEFS->TOKEN_DEL); + else token=(char *)strtok(NULL,DEFS->TOKEN_DEL); + if (token == NULL) Flag_End=1; + } + Flag_New_token = 1; + if ((token != NULL) && (strlen(token) != 0)) + { + char iskeyword=0; /* left at 0 when variables are processed, 1 for modifiers */ + int old_Mode; + /* change token to lower case */ + for (i=0; iCOORD_MAX) /* max=%i */ + { + if (!Flag_All) + Vars->Coord_Max[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Max[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_MIN) /* min=%i */ + { + if (!Flag_All) + Vars->Coord_Min[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Min[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_MAX; + } + if (Set_Coord_Mode == DEFS->COORD_DIM) /* bins=%i */ + { + if (!Flag_All) + Vars->Coord_Bin[Vars->Coord_Number] = atoi(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Bin[i++] = atoi(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_FIL) /* file=%s */ + { + if (!Flag_No) strncpy(Vars->Mon_File,token,128); + else { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1;} + Set_Coord_Mode = DEFS->COORD_VAR; + } + if (Set_Coord_Mode == DEFS->COORD_EVNT) /* list=%i */ + { + if (!strcmp(token, "all") || Flag_All) Vars->Flag_List = 2; + else { i = (long)ceil(atof(token)); if (i) Vars->Buffer_Block = i; + Vars->Flag_List = 1; } + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_3HE) /* pressure=%g */ + { + Vars->He3_pressure = atof(token); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + + /* now look for general option keywords */ + if (!strcmp(token, "borders")) {Vars->Flag_With_Borders = 1; iskeyword=1; } + if (!strcmp(token, "verbose")) {Vars->Flag_Verbose = 1; iskeyword=1; } + if (!strcmp(token, "log")) {Vars->Flag_log = 1; iskeyword=1; } + if (!strcmp(token, "abs")) {Flag_abs = 1; iskeyword=1; } + if (!strcmp(token, "multiple")) {Vars->Flag_Multiple = 1; iskeyword=1; } + if (!strcmp(token, "list") || !strcmp(token, "events")) { + Vars->Flag_List = 1; Set_Coord_Mode = DEFS->COORD_EVNT; } + if (!strcmp(token, "limits") || !strcmp(token, "min")) + Set_Coord_Mode = DEFS->COORD_MIN; + if (!strcmp(token, "slit") || !strcmp(token, "absorb")) { + Vars->Flag_Absorb = 1; iskeyword=1; } + if (!strcmp(token, "max")) Set_Coord_Mode = DEFS->COORD_MAX; + if (!strcmp(token, "bins") || !strcmp(token, "dim")) Set_Coord_Mode = DEFS->COORD_DIM; + if (!strcmp(token, "file") || !strcmp(token, "filename")) { + Set_Coord_Mode = DEFS->COORD_FIL; + if (Flag_No) { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1; } + } + if (!strcmp(token, "inactivate")) { + Flag_End = 1; Vars->Coord_Number = 0; iskeyword=1; } + if (!strcmp(token, "all")) { Flag_All = 1; iskeyword=1; } + if (!strcmp(token, "sphere")) { Vars->Flag_Shape = DEFS->SHAPE_SPHERE; iskeyword=1; } + if (!strcmp(token, "cylinder")) { Vars->Flag_Shape = DEFS->SHAPE_CYLIND; iskeyword=1; } + if (!strcmp(token, "banana")) { Vars->Flag_Shape = DEFS->SHAPE_BANANA; iskeyword=1; } + if (!strcmp(token, "square")) { Vars->Flag_Shape = DEFS->SHAPE_SQUARE; iskeyword=1; } + if (!strcmp(token, "disk")) { Vars->Flag_Shape = DEFS->SHAPE_DISK; iskeyword=1; } + if (!strcmp(token, "box")) { Vars->Flag_Shape = DEFS->SHAPE_BOX; iskeyword=1; } + if (!strcmp(token, "previous")) { Vars->Flag_Shape = DEFS->SHAPE_PREVIOUS; iskeyword=1; } + if (!strcmp(token, "parallel")){ Vars->Flag_parallel = 1; iskeyword=1; } + if (!strcmp(token, "capture")) { Vars->Flag_capture = 1; iskeyword=1; } + if (!strcmp(token, "auto")) { + #ifndef OPENACC + if (Flag_auto != -1) { + Vars->Flag_Auto_Limits = 1; + if (Flag_All) Flag_auto = -1; + else Flag_auto = 1; + iskeyword=1; Flag_All=0; + } + #endif + } + if (!strcmp(token, "premonitor")) { + Vars->Flag_UsePreMonitor = 1; iskeyword=1; } + if (!strcmp(token, "3He_pressure") || !strcmp(token, "pressure")) { + Vars->He3_pressure = 3; iskeyword=1; } + if (!strcmp(token, "no") || !strcmp(token, "not")) { Flag_No = 1; iskeyword=1; } + if (!strcmp(token, "signal")) Set_Coord_Mode = DEFS->COORD_SIGNAL; + if (!strcmp(token, "mantid")) { Vars->Flag_mantid = 1; iskeyword=1; } + + /* Mode has changed: this was a keyword or value ? */ + if (Set_Coord_Mode != old_Mode) iskeyword=1; + + /* now look for variable names to monitor */ + Set_Vars_Coord_Type = DEFS->COORD_NONE; lmin = 0; lmax = 0; + + if (!strcmp(token, "x")) + { Set_Vars_Coord_Type = DEFS->COORD_X; strcpy(Set_Vars_Coord_Label,"x [m]"); strcpy(Set_Vars_Coord_Var,"x"); + lmin = Vars->mxmin; lmax = Vars->mxmax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mxmin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mxmax; + N_spatial_dims++;} + if (!strcmp(token, "y")) + { Set_Vars_Coord_Type = DEFS->COORD_Y; strcpy(Set_Vars_Coord_Label,"y [m]"); strcpy(Set_Vars_Coord_Var,"y"); + lmin = Vars->mymin; lmax = Vars->mymax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mymin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mymax; + N_spatial_dims++;} + if (!strcmp(token, "z")) + { Set_Vars_Coord_Type = DEFS->COORD_Z; strcpy(Set_Vars_Coord_Label,"z [m]"); strcpy(Set_Vars_Coord_Var,"z"); lmin = Vars->mzmin; lmax = Vars->mzmax; + N_spatial_dims++;} + if (!strcmp(token, "k") || !strcmp(token, "wavevector")) + { Set_Vars_Coord_Type = DEFS->COORD_K; strcpy(Set_Vars_Coord_Label,"|k| [Angs-1]"); strcpy(Set_Vars_Coord_Var,"k"); lmin = 0; lmax = 10; } + if (!strcmp(token, "v")) + { Set_Vars_Coord_Type = DEFS->COORD_V; strcpy(Set_Vars_Coord_Label,"Velocity [m/s]"); strcpy(Set_Vars_Coord_Var,"v"); lmin = 0; lmax = 10000; } + if (!strcmp(token, "t") || !strcmp(token, "time") || !strcmp(token, "tof")) + { Set_Vars_Coord_Type = DEFS->COORD_T; strcpy(Set_Vars_Coord_Label,"TOF [s]"); strcpy(Set_Vars_Coord_Var,"t"); lmin = 0; lmax = 1.0; } + if ((!strcmp(token, "p") || !strcmp(token, "i") || !strcmp(token, "intensity") || !strcmp(token, "flux"))) + { Set_Vars_Coord_Type = DEFS->COORD_P; + strcpy(Set_Vars_Coord_Label,"Intensity"); + strncat(Set_Vars_Coord_Label, " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Set_Vars_Coord_Label, "/cm2", 30); + if (XY > 1 && Vars->Coord_Number) + strncat(Set_Vars_Coord_Label, "/bin", 30); + strncat(Set_Vars_Coord_Label, "]", 30); + strcpy(Set_Vars_Coord_Var,"I"); + lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + } + + if (!strcmp(token, "vx")) + { Set_Vars_Coord_Type = DEFS->COORD_VX; strcpy(Set_Vars_Coord_Label,"vx [m/s]"); strcpy(Set_Vars_Coord_Var,"vx"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vy")) + { Set_Vars_Coord_Type = DEFS->COORD_VY; strcpy(Set_Vars_Coord_Label,"vy [m/s]"); strcpy(Set_Vars_Coord_Var,"vy"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vz")) + { Set_Vars_Coord_Type = DEFS->COORD_VZ; strcpy(Set_Vars_Coord_Label,"vz [m/s]"); strcpy(Set_Vars_Coord_Var,"vz"); lmin = -10000; lmax = 10000; } + if (!strcmp(token, "kx")) + { Set_Vars_Coord_Type = DEFS->COORD_KX; strcpy(Set_Vars_Coord_Label,"kx [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "ky")) + { Set_Vars_Coord_Type = DEFS->COORD_KY; strcpy(Set_Vars_Coord_Label,"ky [Angs-1]"); strcpy(Set_Vars_Coord_Var,"ky"); lmin = -1; lmax = 1; } + if (!strcmp(token, "kz")) + { Set_Vars_Coord_Type = DEFS->COORD_KZ; strcpy(Set_Vars_Coord_Label,"kz [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kz"); lmin = -10; lmax = 10; } + if (!strcmp(token, "sx")) + { Set_Vars_Coord_Type = DEFS->COORD_SX; strcpy(Set_Vars_Coord_Label,"sx [1]"); strcpy(Set_Vars_Coord_Var,"sx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sy")) + { Set_Vars_Coord_Type = DEFS->COORD_SY; strcpy(Set_Vars_Coord_Label,"sy [1]"); strcpy(Set_Vars_Coord_Var,"sy"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sz")) + { Set_Vars_Coord_Type = DEFS->COORD_SZ; strcpy(Set_Vars_Coord_Label,"sz [1]"); strcpy(Set_Vars_Coord_Var,"sz"); lmin = -1; lmax = 1; } + + if (!strcmp(token, "energy") || !strcmp(token, "omega") || !strcmp(token, "e")) + { Set_Vars_Coord_Type = DEFS->COORD_ENERGY; strcpy(Set_Vars_Coord_Label,"Energy [meV]"); strcpy(Set_Vars_Coord_Var,"E"); lmin = 0; lmax = 100; } + if (!strcmp(token, "lambda") || !strcmp(token, "wavelength") || !strcmp(token, "l")) + { Set_Vars_Coord_Type = DEFS->COORD_LAMBDA; strcpy(Set_Vars_Coord_Label,"Wavelength [Angs]"); strcpy(Set_Vars_Coord_Var,"L"); lmin = 0; lmax = 100; } + if (!strcmp(token, "radius") || !strcmp(token, "r")) + { Set_Vars_Coord_Type = DEFS->COORD_RADIUS; strcpy(Set_Vars_Coord_Label,"Radius [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; } + if (!strcmp(token, "xy")) + { Set_Vars_Coord_Type = DEFS->COORD_XY; strcpy(Set_Vars_Coord_Label,"Radius (xy) [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "yz")) + { Set_Vars_Coord_Type = DEFS->COORD_YZ; strcpy(Set_Vars_Coord_Label,"Radius (yz) [m]"); strcpy(Set_Vars_Coord_Var,"yz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "xz")) + { Set_Vars_Coord_Type = DEFS->COORD_XZ; strcpy(Set_Vars_Coord_Label,"Radius (xz) [m]"); strcpy(Set_Vars_Coord_Var,"xz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "vxy")) + { Set_Vars_Coord_Type = DEFS->COORD_VXY; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xy) [m]"); strcpy(Set_Vars_Coord_Var,"Vxy"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxy")) + { Set_Vars_Coord_Type = DEFS->COORD_KXY; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xy) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxy"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vyz")) + { Set_Vars_Coord_Type = DEFS->COORD_VYZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (yz) [m]"); strcpy(Set_Vars_Coord_Var,"Vyz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kyz")) + { Set_Vars_Coord_Type = DEFS->COORD_KYZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (yz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kyz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vxz")) + { Set_Vars_Coord_Type = DEFS->COORD_VXZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xz) [m]"); strcpy(Set_Vars_Coord_Var,"Vxz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxz")) + { Set_Vars_Coord_Type = DEFS->COORD_KXZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "angle") || !strcmp(token, "a")) + { Set_Vars_Coord_Type = DEFS->COORD_ANGLE; strcpy(Set_Vars_Coord_Label,"Angle [deg]"); strcpy(Set_Vars_Coord_Var,"A"); lmin = -50; lmax = 50; N_spatial_dims++;} + if (!strcmp(token, "hdiv")|| !strcmp(token, "divergence") || !strcmp(token, "xdiv") || !strcmp(token, "hd") || !strcmp(token, "dx")) + { Set_Vars_Coord_Type = DEFS->COORD_HDIV; strcpy(Set_Vars_Coord_Label,"Hor. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"hd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "vdiv") || !strcmp(token, "ydiv") || !strcmp(token, "vd") || !strcmp(token, "dy")) + { Set_Vars_Coord_Type = DEFS->COORD_VDIV; strcpy(Set_Vars_Coord_Label,"Vert. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"vd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "theta") || !strcmp(token, "longitude") || !strcmp(token, "th")) + { Set_Vars_Coord_Type = DEFS->COORD_THETA; strcpy(Set_Vars_Coord_Label,"Longitude [deg]"); strcpy(Set_Vars_Coord_Var,"th"); lmin = -180; lmax = 180; N_spatial_dims++;} + if (!strcmp(token, "phi") || !strcmp(token, "latitude") || !strcmp(token, "ph")) + { Set_Vars_Coord_Type = DEFS->COORD_PHI; strcpy(Set_Vars_Coord_Label,"Latitude [deg]"); strcpy(Set_Vars_Coord_Var,"ph"); lmin = -90; lmax = 90; N_spatial_dims++;} + if (!strcmp(token, "ncounts") || !strcmp(token, "n") || !strcmp(token, "neutron")) + { Set_Vars_Coord_Type = DEFS->COORD_NCOUNT; strcpy(Set_Vars_Coord_Label,"Neutron ID [1]"); strcpy(Set_Vars_Coord_Var,"n"); lmin = 0; lmax = mcget_ncount(); if (Flag_auto>0) Flag_auto=0; } + if (!strcmp(token, "id") || !strcmp(token, "pixel")) + { Set_Vars_Coord_Type = DEFS->COORD_PIXELID; + strcpy(Set_Vars_Coord_Label,"Pixel ID [1]"); + strcpy(Set_Vars_Coord_Var,"id"); lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + Vars->Flag_List = 1; } + if (!strcmp(token, "user") || !strcmp(token, "user1") || !strcmp(token, "u1")) + { Set_Vars_Coord_Type = DEFS->COORD_USER1; strncpy(Set_Vars_Coord_Label,Vars->UserName1,30); strcpy(Set_Vars_Coord_Var,"U1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user2") || !strcmp(token, "u2")) + { Set_Vars_Coord_Type = DEFS->COORD_USER2; strncpy(Set_Vars_Coord_Label,Vars->UserName2,30); strcpy(Set_Vars_Coord_Var,"U2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user3") || !strcmp(token, "u3")) + { Set_Vars_Coord_Type = DEFS->COORD_USER3; strncpy(Set_Vars_Coord_Label,Vars->UserName3,30); strcpy(Set_Vars_Coord_Var,"U3"); lmin = -1e10; lmax = 1e10; } + + if (!strcmp(token, "userdouble0") || !strcmp(token, "ud0")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE0; strcpy(Set_Vars_Coord_Label,"ud0 [1]"); strcpy(Set_Vars_Coord_Var,"ud0"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble1") || !strcmp(token, "ud1")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE1; strcpy(Set_Vars_Coord_Label,"ud1 [1]"); strcpy(Set_Vars_Coord_Var,"ud1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble2") || !strcmp(token, "ud2")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE2; strcpy(Set_Vars_Coord_Label,"ud2 [1]"); strcpy(Set_Vars_Coord_Var,"ud2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble3") || !strcmp(token, "ud3")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE3; strcpy(Set_Vars_Coord_Label,"ud3 [1]"); strcpy(Set_Vars_Coord_Var,"ud3"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble4") || !strcmp(token, "ud4")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE4; strcpy(Set_Vars_Coord_Label,"ud4 [1]"); strcpy(Set_Vars_Coord_Var,"ud4"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble5") || !strcmp(token, "ud5")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE5; strcpy(Set_Vars_Coord_Label,"ud5 [1]"); strcpy(Set_Vars_Coord_Var,"ud5"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble6") || !strcmp(token, "ud6")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE6; strcpy(Set_Vars_Coord_Label,"ud6 [1]"); strcpy(Set_Vars_Coord_Var,"ud6"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble7") || !strcmp(token, "ud7")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE7; strcpy(Set_Vars_Coord_Label,"ud7 [1]"); strcpy(Set_Vars_Coord_Var,"ud7"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble8") || !strcmp(token, "ud8")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE8; strcpy(Set_Vars_Coord_Label,"ud8 [1]"); strcpy(Set_Vars_Coord_Var,"ud8"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble9") || !strcmp(token, "ud9")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE9; strcpy(Set_Vars_Coord_Label,"ud9 [1]"); strcpy(Set_Vars_Coord_Var,"ud9"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble10") || !strcmp(token, "ud10")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE10; strcpy(Set_Vars_Coord_Label,"ud10 [1]"); strcpy(Set_Vars_Coord_Var,"ud10"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble11") || !strcmp(token, "ud11")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE11; strcpy(Set_Vars_Coord_Label,"ud11 [1]"); strcpy(Set_Vars_Coord_Var,"ud11"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble12") || !strcmp(token, "ud12")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE12; strcpy(Set_Vars_Coord_Label,"ud12 [1]"); strcpy(Set_Vars_Coord_Var,"ud12"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble13") || !strcmp(token, "ud13")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE13; strcpy(Set_Vars_Coord_Label,"ud13 [1]"); strcpy(Set_Vars_Coord_Var,"ud13"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble14") || !strcmp(token, "ud14")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE14; strcpy(Set_Vars_Coord_Label,"ud14 [1]"); strcpy(Set_Vars_Coord_Var,"ud14"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble15") || !strcmp(token, "ud15")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE15; strcpy(Set_Vars_Coord_Label,"ud15 [1]"); strcpy(Set_Vars_Coord_Var,"ud15"); lmin = -1e10; lmax = 1e10; } + + /* now stores variable keywords detected, if any */ + if (Set_Vars_Coord_Type != DEFS->COORD_NONE) + { + int Coord_Number = Vars->Coord_Number; + if (Vars->Flag_log) { Set_Vars_Coord_Type |= DEFS->COORD_LOG; Vars->Flag_log = 0; } + if (Flag_abs) { Set_Vars_Coord_Type |= DEFS->COORD_ABS; Flag_abs = 0; } + if (Flag_auto != 0) { Set_Vars_Coord_Type |= DEFS->COORD_AUTO; + if (Flag_auto > 0) Flag_auto = 0; } + if (Set_Coord_Mode == DEFS->COORD_SIGNAL) + { + Coord_Number = 0; + Vars->Flag_signal = Set_Vars_Coord_Type; + } + else + { + if (Coord_Number < MONnD_COORD_NMAX) + { Coord_Number++; + Vars->Coord_Number = Coord_Number; + if (Set_Vars_Coord_Type != DEFS->COORD_PIXELID) + Vars->Coord_NumberNoPixel++; + } + else if (Vars->Flag_Verbose) printf("Monitor_nD: %s reached max number of variables (%i).\n", Vars->compcurname, MONnD_COORD_NMAX); + } + Vars->Coord_Type[Coord_Number] = Set_Vars_Coord_Type; + strncpy(Vars->Coord_Label[Coord_Number], Set_Vars_Coord_Label,30); + strncpy(Vars->Coord_Var[Coord_Number], Set_Vars_Coord_Var,30); + if (lmin > lmax) { XY = lmin; lmin=lmax; lmax = XY; } + Vars->Coord_Min[Coord_Number] = lmin; + Vars->Coord_Max[Coord_Number] = lmax; + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT || Set_Vars_Coord_Type == DEFS->COORD_PIXELID || Set_Vars_Coord_Type == DEFS->COORD_SIGNAL) + Vars->Coord_Bin[Coord_Number] = 1; + else + Vars->Coord_Bin[Coord_Number] = 20; + Set_Coord_Mode = DEFS->COORD_VAR; + Flag_All = 0; + Flag_No = 0; + } else { + /* no variable name could be read from options */ + if (!iskeyword) { + if (strcmp(token, "cm2") && strcmp(token, "incoming") + && strcmp(token, "outgoing") && strcmp(token, "cm2") + && strcmp(token, "cm^2") && strcmp(token, "float") + && strcmp(token, "double") && strcmp(token, "binary") + && strcmp(token, "steradian") && Vars->Flag_Verbose) + printf("Monitor_nD: %s: unknown '%s' keyword in 'options'. Ignoring.\n", Vars->compcurname, token); + } + } + carg++; + } /* end if token */ + } /* end while carg */ + free(option_copy); + if (carg == 128) printf("Monitor_nD: %s reached max number of tokens (%i). Skipping.\n", Vars->compcurname, 128); + + if ((Vars->Flag_Shape == DEFS->SHAPE_BOX) && (fabs(Vars->mzmax - Vars->mzmin) == 0)) Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + + if (Vars->Flag_log == 1) Vars->Coord_Type[0] |= DEFS->COORD_LOG; + if (Vars->Coord_Number == 0) + { Vars->Flag_Auto_Limits=0; Vars->Flag_Multiple=0; Vars->Flag_List=0; } + + /* now setting Monitor Name from variable labels */ + strcpy(Vars->Monitor_Label,""); + XY = 1; /* will contain total bin number */ + for (i = 0; i <= Vars->Coord_Number; i++) + { + if (Flag_auto != 0) Vars->Coord_Type[i] |= DEFS->COORD_AUTO; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if ((Set_Vars_Coord_Type == DEFS->COORD_X) + || (Set_Vars_Coord_Type == DEFS->COORD_Y) + || (Set_Vars_Coord_Type == DEFS->COORD_Z)) + strcpy(Short_Label[i],"Position"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_THETA) + || (Set_Vars_Coord_Type == DEFS->COORD_PHI) + || (Set_Vars_Coord_Type == DEFS->COORD_ANGLE)) + strcpy(Short_Label[i],"Angle"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_XY) + || (Set_Vars_Coord_Type == DEFS->COORD_XZ) + || (Set_Vars_Coord_Type == DEFS->COORD_YZ) + || (Set_Vars_Coord_Type == DEFS->COORD_RADIUS)) + strcpy(Short_Label[i],"Radius"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_VX) + || (Set_Vars_Coord_Type == DEFS->COORD_VY) + || (Set_Vars_Coord_Type == DEFS->COORD_VZ) + || (Set_Vars_Coord_Type == DEFS->COORD_V) + || (Set_Vars_Coord_Type == DEFS->COORD_VXY) + || (Set_Vars_Coord_Type == DEFS->COORD_VYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_VXZ)) + strcpy(Short_Label[i],"Velocity"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_KX) + || (Set_Vars_Coord_Type == DEFS->COORD_KY) + || (Set_Vars_Coord_Type == DEFS->COORD_KZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXY) + || (Set_Vars_Coord_Type == DEFS->COORD_KYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXZ) + || (Set_Vars_Coord_Type == DEFS->COORD_K)) + strcpy(Short_Label[i],"Wavevector"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_SX) + || (Set_Vars_Coord_Type == DEFS->COORD_SY) + || (Set_Vars_Coord_Type == DEFS->COORD_SZ)) + strcpy(Short_Label[i],"Spin"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_HDIV) + || (Set_Vars_Coord_Type == DEFS->COORD_VDIV)) + strcpy(Short_Label[i],"Divergence"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) + strcpy(Short_Label[i],"Energy"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) + strcpy(Short_Label[i],"Wavelength"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) + strcpy(Short_Label[i],"Neutron_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) + strcpy(Short_Label[i],"Pixel_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) + strcpy(Short_Label[i],"Time_Of_Flight"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) + strcpy(Short_Label[i],"Intensity"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) + strncpy(Short_Label[i],Vars->UserName1,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) + strncpy(Short_Label[i],Vars->UserName2,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) + strncpy(Short_Label[i],Vars->UserName3,30); + else + strcpy(Short_Label[i],"Unknown"); + + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) + { strcat(Vars->Coord_Label[i]," (abs)"); } + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) + { strcat(Vars->Coord_Label[i]," (log)"); } + + strcat(Vars->Monitor_Label, " "); + strcat(Vars->Monitor_Label, Short_Label[i]); + XY *= Vars->Coord_Bin[i]; + + } /* end for Short_Label */ + + if ((Vars->Coord_Type[0] & (DEFS->COORD_LOG-1)) == DEFS->COORD_P) { + strncat(Vars->Coord_Label[0], " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Vars->Coord_Label[0], "/cm2", 30); + + if (XY > 1 && Vars->Coord_Number) + strncat(Vars->Coord_Label[0], "/bin", 30); + strncat(Vars->Coord_Label[0], "]", 30); + } + + /* update label 'signal per bin' if more than 1 bin */ + if (XY > 1 && Vars->Coord_Number) { + if (Vars->Flag_capture) + printf("Monitor_nD: %s: Using capture flux weightening on %ld bins.\n" + "WARNING Use binned data with caution, and prefer monitor integral value (I,Ierr).\n", Vars->compcurname, (long)XY); + } + + strcat(Vars->Monitor_Label, " Monitor"); + if (Vars->Flag_Shape == DEFS->SHAPE_SQUARE) strcat(Vars->Monitor_Label, " (Square)"); + if (Vars->Flag_Shape == DEFS->SHAPE_DISK) strcat(Vars->Monitor_Label, " (Disk)"); + if (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) strcat(Vars->Monitor_Label, " (Sphere)"); + if (Vars->Flag_Shape == DEFS->SHAPE_CYLIND) strcat(Vars->Monitor_Label, " (Cylinder)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BANANA) strcat(Vars->Monitor_Label, " (Banana)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BOX) strcat(Vars->Monitor_Label, " (Box)"); + if (Vars->Flag_Shape == DEFS->SHAPE_PREVIOUS) strcat(Vars->Monitor_Label, " (on PREVIOUS)"); + if (Vars->Flag_Shape == DEFS->SHAPE_OFF) strcat(Vars->Monitor_Label, " (OFF geometry)"); + if ((Vars->Flag_Shape == DEFS->SHAPE_CYLIND) || (Vars->Flag_Shape == DEFS->SHAPE_BANANA) || (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) || (Vars->Flag_Shape == DEFS->SHAPE_BOX)) + { + if (strstr(Vars->option, "incoming")) + { + Vars->Flag_Shape = abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [in]"); + } + else /* if strstr(Vars->option, "outgoing")) */ + { + Vars->Flag_Shape = -abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [out]"); + } + } + if (Vars->Flag_UsePreMonitor == 1) + { + strcat(Vars->Monitor_Label, " at "); + strncat(Vars->Monitor_Label, Vars->UserName1,30); + } + if (Vars->Flag_log == 1) strcat(Vars->Monitor_Label, " [log] "); + + /* now allocate memory to store variables in TRACE */ + + /* Vars->Coord_Number 0 : intensity or signal + * Vars->Coord_Number 1:n : detector variables */ + + if ((Vars->Coord_NumberNoPixel != 2) && !Vars->Flag_Multiple && !Vars->Flag_List) + { Vars->Flag_Multiple = 1; /* default is n1D */ + if (Vars->Coord_Number != Vars->Coord_NumberNoPixel) Vars->Flag_List = 1; } + + /* list and auto limits case : Vars->Flag_List or Vars->Flag_Auto_Limits + * -> Buffer to flush and suppress after Vars->Flag_Auto_Limits + */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + Vars->Mon2D_Buffer = (double *)malloc((Vars->Coord_Number+1)*Vars->Buffer_Block*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot allocate Vars->Mon2D_Buffer (%zi). No list and auto limits.\n", Vars->compcurname, Vars->Buffer_Block*(Vars->Coord_Number+1)*sizeof(double)); Vars->Flag_List = 0; Vars->Flag_Auto_Limits = 0; } + else + { + for (i=0; i < (Vars->Coord_Number+1)*Vars->Buffer_Block; Vars->Mon2D_Buffer[i++] = (double)0); + } + Vars->Buffer_Size = Vars->Buffer_Block; + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_NumberNoPixel) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, (Vars->Coord_Number)*sizeof(double *)); exit(-1); } + for (i= 1; i <= Vars->Coord_Number; i++) + { + Vars->Mon2D_N[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p2[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[i], i, (Vars->Coord_Bin[i])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[i]; j++ ) + { Vars->Mon2D_N[i-1][j] = (double)0; Vars->Mon2D_p[i-1][j] = (double)0; Vars->Mon2D_p2[i-1][j] = (double)0; } + } + } + } + else /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], (Vars->Coord_Bin[1])*sizeof(double *)); exit(-1); } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + Vars->Mon2D_N[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p2[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], i, (Vars->Coord_Bin[2])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[2]; j++ ) + { Vars->Mon2D_N[i][j] = (double)0; Vars->Mon2D_p[i][j] = (double)0; Vars->Mon2D_p2[i][j] = (double)0; } + } + } + } + else { + Vars->Mon2D_N = Vars->Mon2D_p = Vars->Mon2D_p2 = NULL; + } + /* no Mon2D allocated for + * (Vars->Coord_Number != 2) && !Vars->Flag_Multiple && Vars->Flag_List */ + + Vars->psum = 0; + Vars->p2sum = 0; + Vars->Nsum = 0; + + Vars->area = fabs(Vars->mxmax - Vars->mxmin)*fabs(Vars->mymax - Vars->mymin)*1E4; /* in cm**2 for square and box shapes */ + Vars->Sphere_Radius = fabs(Vars->mxmax - Vars->mxmin)/2; + if ((abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + { + Vars->area = PI*Vars->Sphere_Radius*Vars->Sphere_Radius*1E4; /* disk shapes */ + } + + + if (Vars->area == 0 && abs(Vars->Flag_Shape) != DEFS->SHAPE_PREVIOUS ) { + if (abs(Vars->Flag_Shape) != DEFS->SHAPE_OFF) { + Vars->Coord_Number = 0; + } + } + if (Vars->Coord_Number == 0 && Vars->Flag_Verbose) + printf("Monitor_nD: %s is inactivated (0D)\n", Vars->compcurname); + Vars->Cylinder_Height = fabs(Vars->mymax - Vars->mymin); + + if (Vars->Flag_Verbose) + { + printf("Monitor_nD: %s is a %s.\n", Vars->compcurname, Vars->Monitor_Label); + printf("Monitor_nD: version %s with options=%s\n", MONITOR_ND_LIB_H, Vars->option); + } + + /* compute the product of bin dimensions for PixelID */ + Vars->Coord_BinProd[0]=1; + + for (i = 1; i <= Vars->Coord_Number; i++) { + Vars->Coord_BinProd[i]=Vars->Coord_Bin[i]*Vars->Coord_BinProd[i-1]; + } + + #ifdef USE_NEXUS + + #ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { + #endif + if(nxhandle) { + + /* This section of code writes detector shape information to + entryN/instrument/components/'name'/geometry in the NeXus file */ + + char nexuscomp[CHAR_BUF_LENGTH]; + char pref[5]; + if (Vars->compcurindex-1 < 10) { + sprintf(pref,"000"); + } else if (Vars->compcurindex-1 < 100) { + sprintf(pref,"00"); + } else if (Vars->compcurindex-1 < 1000) { + sprintf(pref,"0"); + } else if (Vars->compcurindex-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,Vars->compcurname); + + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, nexuscomp, "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + char tmp[CHAR_BUF_LENGTH]; + sprintf(tmp,"%g",Vars->Sphere_Radius); + nxprintattr(nxhandle, "radius", tmp); + + sprintf(tmp,"%g",Vars->Cylinder_Height); + nxprintattr(nxhandle, "height", tmp); + + sprintf(tmp,"%g",Vars->mxmin); + nxprintattr(nxhandle, "xmin", tmp); + sprintf(tmp,"%g",Vars->mxmax); + nxprintattr(nxhandle, "xmax", tmp); + + sprintf(tmp,"%g",Vars->mymin); + nxprintattr(nxhandle, "ymin", tmp); + sprintf(tmp,"%g",Vars->mymax); + nxprintattr(nxhandle, "ymax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%i",Vars->Flag_Shape); + nxprintattr(nxhandle, "Shape identifier", tmp); + sprintf(tmp,"%s",Vars->Monitor_Label); + nxprintattr(nxhandle, "Shape string", tmp); + sprintf(tmp,"%s",Vars->option); + nxprintattr(nxhandle, "Option string", tmp); + + NXclosegroup(nxhandle); // Geometry + } else { + printf("Failed to open component NeXus component Geometry group\n"); + } + } else { + printf("Failed to create component NeXus component Geometry group\n"); + } + NXclosegroup(nxhandle); // component + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } + + /* Below code communicates geometry-oriented "BINS" for the detector. */ + char metadata[CHAR_BUF_LENGTH]; + char metadatatmp[CHAR_BUF_LENGTH]; + // Vars for 1D, >3D, OFF + long numbins; + long minbins = 0; + long maxbins = 0; + char binlabel[CHAR_BUF_LENGTH]; + char binvar[CHAR_BUF_LENGTH]; + sprintf(binlabel,"none"); + sprintf(binvar,"none"); + + // Find index of pixel column + int id_index; + for (id_index=0;id_index<30;id_index++) { + if (strcmp(Vars->Coord_Var[id_index], "id") == 0) break; + } + if (id_index == 30) id_index = Vars->Coord_Number-1; // Revert to earlier behavior is id not found + long pix=Vars->Coord_Min[id_index]; + + MCDETECTOR detector; + + /* Init - perhaps better with an init-function in mccode-r? */ + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + + sprintf(detector.filename,"BINS"); + sprintf(detector.component,"%s",Vars->compcurname); + sprintf(detector.nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,detector.component); + sprintf(detector.format,"pixels"); + + if(!Vars->Flag_OFF) { + + sprintf(metadata,"id=%ld + %ld pixels: ",(long)Vars->Coord_Min[id_index],(long)Vars->Coord_BinProd[Vars->Coord_Number]); + for (i=1; iCoord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + } + sprintf(metadatatmp,"%s %s (%ld bins)",metadata,Vars->Coord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + numbins = Vars->Coord_BinProd[Vars->Coord_Number]; + if (N_spatial_dims==1) { + minbins=Vars->Coord_Min[1]; + maxbins=Vars->Coord_Max[1]; + sprintf(binlabel,"%s",Vars->Coord_Label[1]); + sprintf(binvar,"%s",Vars->Coord_Var[1]); + } else if (N_spatial_dims>3) { + minbins=1; + maxbins=Vars->Coord_BinProd[Vars->Coord_Number]; + sprintf(binlabel,"More than 3 dimensions"); + sprintf(binvar,"wrapped_variables_4plus_dims"); + N_spatial_dims=1; + } + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } else { + numbins = Vars->Flag_OFF; + minbins=1; + maxbins=Vars->Flag_OFF; + sprintf(binlabel,"OFF pixel index"); + sprintf(binvar,"OFF"); + N_spatial_dims=1; + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } + + long k,l,m; + if (N_spatial_dims==1) { // 1D case or ND + detector.m=numbins; + detector.n=1; + detector.p=1; + detector.rank=1; + detector.p0=(double *)calloc(numbins, sizeof(double)); + detector.p1=(double *)calloc(numbins, sizeof(double)); + detector.p2=(double *)calloc(numbins, sizeof(double)); + if (Vars->Flag_Verbose) printf("1D case %ld \n",Vars->Coord_Bin[1]); + for (k=0; kFlag_Verbose) printf("Assigning pixel no [%ld] = %ld\n",k,pix); + detector.p1[k]=pix; + pix++; + } + mcdetector_out_1D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==2) { // 2D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=1; + detector.rank=2; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("2D case %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld] = %ld\n",l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]+l]=pix; + pix++; + } + } + mcdetector_out_2D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==3) { // 3D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=Vars->Coord_Bin[3];; + detector.rank=3; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + sprintf(detector.zlabel,"%s",Vars->Coord_Label[3]); + sprintf(detector.zvar,"%s",Vars->Coord_Var[3]); + detector.zmin=Vars->Coord_Min[3]; + detector.zmax=Vars->Coord_Max[3]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("3D case %ld x %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2],Vars->Coord_Bin[3]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + for (m=0; mCoord_Bin[3]; m++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld,%ld] = %ld\n",m,l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]*Vars->Coord_Bin[3] + l*Vars->Coord_Bin[3] + m]=pix; + pix++; + } + } + } + mcdetector_out_3D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } + } // nxhandle available + #ifdef USE_MPI + } // Master only + #endif + + #endif // USE_NEXUS + } /* end Monitor_nD_Init */ + +/* ========================================================================= */ +/* Monitor_nD_Trace: this routine is used to monitor one propagating neutron */ +/* return values: 0=neutron was absorbed, -1=neutron was outside bounds, 1=neutron was measured*/ +/* ========================================================================= */ + +int Monitor_nD_Trace(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars, _class_particle* _particle) +{ + + double XY=0, pp=0; + long i =0, j =0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char While_End =0; + long While_Buffer=0; + char Set_Vars_Coord_Type = DEFS->COORD_NONE; + + /* the logic below depends mainly on: + Flag_List: 1=store 1 buffer, 2=list all, 3=re-use buffer + Flag_Auto_Limits: 0 (no auto limits/list), 1 (store events into Buffer), 2 (re-emit store events) + */ + + /* Vars->Flag_Auto_Limits=1: buffer full, we read the Buffer, and determine min and max bounds */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 1) && (Vars->Coord_Number > 0)) + { + /* auto limits case : get limits in Buffer for each variable */ + /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + for (i = 1; i <= Vars->Coord_Number; i++) + { + if (Vars->Coord_Type[i] & DEFS->COORD_AUTO) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step (read Buffer and generate new events to store in histograms) */ + } /* end if Flag_Auto_Limits == 1 */ + +#ifndef OPENACC + /* manage realloc for 'list all' if Buffer size exceeded: flush Buffer to file */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List >= 2)) + { + if (Vars->Buffer_Size >= 1000000 || Vars->Flag_List == 3) + { /* save current (possibly append) and re-use Buffer */ + + Monitor_nD_Save(DEFS, Vars); + Vars->Flag_List = 3; + Vars->Buffer_Block = Vars->Buffer_Size; + Vars->Buffer_Counter = 0; + Vars->Neutron_Counter = 0; + } + else + { + Vars->Mon2D_Buffer = (double *)realloc(Vars->Mon2D_Buffer, (Vars->Coord_Number+1)*(2*Vars->Buffer_Block)*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot reallocate Vars->Mon2D_Buffer[%li] (%zi). Skipping.\n", Vars->compcurname, i, (long int)(2*Vars->Buffer_Block)*sizeof(double)); Vars->Flag_List = 1; } + else { + Vars->Buffer_Block = 2*Vars->Buffer_Block; + Vars->Buffer_Size = Vars->Buffer_Block; + } + } + } /* end if Buffer realloc */ +#endif + + char outsidebounds=0; + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) or passing neutron */ + if ((Vars->Flag_Auto_Limits == 2) && (Vars->Coord_Number > 0)) + { /* Vars->Flag_Auto_Limits == 2: read back from Buffer (Buffer is filled or auto limits have been computed) */ + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loop (While_Buffer) */ + /* auto limits case : scan Buffer within limits and store in Mon2D */ + Coord[0] = pp = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) continue; + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + if (Vars->Coord_NumberNoPixel < Vars->Coord_Number) /* there is a Pixel variable */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char flag_outside=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!flag_outside) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + if (!Vars->Flag_List) /* free Buffer not needed anymore (no list to output) */ + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, p2) */ + free(Vars->Mon2D_Buffer); Vars->Mon2D_Buffer = NULL; + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + } /* if Vars->Flag_Auto_Limits == 2 */ + + if (Vars->Flag_Auto_Limits != 2 || !Vars->Coord_Number) /* Vars->Flag_Auto_Limits == 0 (no auto limits/list) or 1 (store events into Buffer) */ + { + /* automatically compute area and steradian solid angle when in AUTO mode */ + /* compute the steradian solid angle incoming on the monitor */ + double v; + double tmp; + v=sqrt(_particle->vx*_particle->vx + _particle->vy*_particle->vy + _particle->vz*_particle->vz); + tmp=_particle->x; + if (Vars->min_x > _particle->x){ + #pragma acc atomic write + Vars->min_x = tmp; + } + if (Vars->max_x < _particle->x){ + #pragma acc atomic write + Vars->max_x = tmp; + } + tmp=_particle->y; + if (Vars->min_y > _particle->y){ + #pragma acc atomic write + Vars->min_y = tmp; + } + if (Vars->max_y < _particle->y){ + tmp=_particle->y; + #pragma acc atomic write + Vars->max_y = tmp; + } + + #pragma acc atomic + Vars->mean_p = Vars->mean_p + _particle->p; + if (v) { + tmp=_particle->p*fabs(_particle->vx/v); + #pragma acc atomic + Vars->mean_dx = Vars->mean_dx + tmp; //_particle->p*fabs(_particle->vx/v); + tmp=_particle->p*fabs(_particle->vy/v); + #pragma acc atomic + Vars->mean_dy = Vars->mean_dy + tmp; //_particle->p*fabs(_particle->vy/v); + } + + for (i = 0; i <= Vars->Coord_Number; i++) + { /* handle current neutron : last while */ + XY = 0; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + /* get values for variables to monitor */ + if (Set_Vars_Coord_Type == DEFS->COORD_X) XY = _particle->x; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Y) XY = _particle->y; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Z) XY = _particle->z; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VX) XY = _particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VY) XY = _particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VZ) XY = _particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KX) XY = V2K*_particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KY) XY = V2K*_particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KZ) XY = V2K*_particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SX) XY = _particle->sx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SY) XY = _particle->sy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SZ) XY = _particle->sz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) XY = _particle->t; + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) XY = _particle->p; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE0) XY = Vars->UserDoubles[0]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE1) XY = Vars->UserDoubles[1]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE2) XY = Vars->UserDoubles[2]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE3) XY = Vars->UserDoubles[3]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE4) XY = Vars->UserDoubles[4]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE5) XY = Vars->UserDoubles[5]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE6) XY = Vars->UserDoubles[6]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE7) XY = Vars->UserDoubles[7]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE8) XY = Vars->UserDoubles[8]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE9) XY = Vars->UserDoubles[9]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE10) XY = Vars->UserDoubles[10]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE11) XY = Vars->UserDoubles[11]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE12) XY = Vars->UserDoubles[12]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE13) XY = Vars->UserDoubles[13]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE14) XY = Vars->UserDoubles[14]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE15) XY = Vars->UserDoubles[15]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV) XY = RAD2DEG*atan2(_particle->vx,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VDIV) XY = RAD2DEG*atan2(_particle->vy,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_V) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XY) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y)*(_particle->x > 0 ? 1 : -1); + else + if (Set_Vars_Coord_Type == DEFS->COORD_YZ) XY = sqrt(_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XZ) + XY = sqrt(_particle->x*_particle->x+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXY) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXZ) XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VYZ) XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_K) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXY) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXZ) { XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KYZ) { XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) { XY = _particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz; XY *= VS2E; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; if (XY != 0) XY = 2*PI/XY; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) XY = _particle->_uid; + else + if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + if (_particle->vz != 0) + XY = RAD2DEG*atan2(XY,_particle->vz)*(_particle->x > 0 ? 1 : -1); + else XY = 0; + } + else + if (Set_Vars_Coord_Type == DEFS->COORD_THETA) { if (_particle->z != 0) XY = RAD2DEG*atan2(_particle->x,_particle->z); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PHI) { double rr=sqrt(_particle->x*_particle->x+ _particle->y*_particle->y + _particle->z*_particle->z); if (rr != 0) XY = RAD2DEG*asin(_particle->y/rr); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) {int fail; XY = particle_getvar(_particle,Vars->UserVariable1,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) {int fail; XY = particle_getvar(_particle,Vars->UserVariable2,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) {int fail; XY = particle_getvar(_particle,Vars->UserVariable3,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID && !Vars->Flag_Auto_Limits) { + /* compute the PixelID from previous coordinates + the PixelID is the product of Coord_Index[i] in the detector geometry + pixelID = sum( Coord_Index[j]*prod(Vars->Coord_Bin[1:(j-1)]) ) + + this does not apply when we store events in the buffer as Coord_Index + is not set. Then the pixelID will be re-computed during SAVE. + */ + char flag_outside=0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] <= 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; XY=0; break; + } + XY += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (Vars->Flag_mantid && Vars->Flag_OFF && Vars->OFF_polyidx >=0) XY=Vars->OFF_polyidx; + if (!flag_outside) XY += Vars->Coord_Min[i]; + } + + /* handle 'abs' and 'log' keywords */ + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) XY=fabs(XY); + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) /* compute log of variable if requested */ + { if (XY > 0) XY = log(XY)/log(10); + else XY = -100; } + + Coord[i] = XY; Coord_Index[i] = 0; + if (i == 0) { pp = XY; Coord_Index[i] = 0; } + else { + /* check bounds for variables which have no automatic limits */ + if ((!Vars->Flag_Auto_Limits || !(Vars->Coord_Type[i] & DEFS->COORD_AUTO)) && Vars->Coord_Bin[i]>1) + { /* compute index in histograms for each variable to monitor */ + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + } + //if (0 > Coord_Index[i] || Coord_Index[i] >= Vars->Coord_Bin[i]) + // outsidebounds=1; + } /* else will get Index later from Buffer when Flag_Auto_Limits == 2 */ + } + + } /* end for i */ + While_End = 1; + }/* end else if Vars->Flag_Auto_Limits == 2 */ + + /* ====================================================================== */ + /* store n1d/2d neutron from Buffer (Auto_Limits == 2) or current neutron in while */ + if (Vars->Flag_Auto_Limits != 1) /* not when storing auto limits Buffer */ + { + /* apply per cm2 */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ( Vars->Coord_NumberNoPixel == 2 && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i][j] = Vars->Mon2D_N[i][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i][j] = Vars->Mon2D_p[i][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i][j] = Vars->Mon2D_p2[i][j] + p2; + } + } else { + outsidebounds=1; + } + } else { + /* 1D and n1D case : Vars->Flag_Multiple */ + /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + + for (i= 1; i <= Vars->Coord_Number; i++) { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i-1][j] = Vars->Mon2D_N[i-1][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i-1][j] = Vars->Mon2D_p[i-1][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i-1][j] = Vars->Mon2D_p2[i-1][j] + p2; + } + } + } else { + outsidebounds=1; + break; + } + } + } + } /* end (Vars->Flag_Auto_Limits != 1) */ + + if (Vars->Flag_Auto_Limits != 2 && !outsidebounds) /* not when reading auto limits Buffer */ + { /* now store Coord into Buffer (no index needed) if necessary (list or auto limits) */ + if ((Vars->Buffer_Counter < Vars->Buffer_Block) && ((Vars->Flag_List) || (Vars->Flag_Auto_Limits == 1))) + { + for (i = 0; i <= Vars->Coord_Number; i++) + { + // This is is where the list is appended. How to make this "atomic"? + #pragma acc atomic write + Vars->Mon2D_Buffer[i + Vars->Buffer_Counter*(Vars->Coord_Number+1)] = Coord[i]; + } + #pragma acc atomic update + Vars->Buffer_Counter = Vars->Buffer_Counter + 1; + if (Vars->Flag_Verbose && (Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List == 1)) + printf("Monitor_nD: %s %li neutrons stored in List.\n", Vars->compcurname, Vars->Buffer_Counter); + } + } /* end (Vars->Flag_Auto_Limits != 2) */ + + } /* end while */ + #pragma acc atomic + Vars->Nsum = Vars->Nsum + 1; + #pragma acc atomic + Vars->psum = Vars->psum + pp; + #pragma acc atomic + Vars->p2sum = Vars->p2sum + pp*pp; + + /*determine return value: 1:neutron was in bounds and measured, -1: outside bounds, 0: outside bounds, should be absorbed.*/ + if(outsidebounds){ + if(Vars->Flag_Absorb){ + return 0; + }else{ + return -1; + } + } else { + /* For the OPENACC list buffer an atomic capture/update of the + updated Neutron_counter - updated below under list mode + Only need to be updated when inside bounds. */ + #pragma acc atomic update + Vars->Neutron_Counter++; + } + return 1; +} /* end Monitor_nD_Trace */ + +/* ========================================================================= */ +/* Monitor_nD_Save: this routine is used to save data files */ +/* ========================================================================= */ + +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars) + { + char *fname; + long i,j; + double *p0m = NULL; + double *p1m = NULL; + double *p2m = NULL; + char Coord_X_Label[CHAR_BUF_LENGTH]; + double min1d, max1d; + double min2d, max2d; + char While_End = 0; + long While_Buffer = 0; + double XY=0, pp=0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char label[CHAR_BUF_LENGTH]; + + MCDETECTOR detector; + strcpy(detector.options,Vars->option); + if (Vars->Flag_Verbose && Vars->Flag_per_cm2) { + printf("Monitor_nD: %s: active flat detector area is %g [cm^2], total area is %g [cm^2]\n", + Vars->compcurname, (Vars->max_x-Vars->min_x) + *(Vars->max_y-Vars->min_y)*1E4, Vars->area); + printf("Monitor_nD: %s: beam solid angle is %g [st] (%g x %g [deg^2])\n", + Vars->compcurname, + 2*fabs(2*atan2(Vars->mean_dx,Vars->mean_p) + *sin(2*atan2(Vars->mean_dy,Vars->mean_p)/2)), + atan2(Vars->mean_dx,Vars->mean_p)*RAD2DEG, + atan2(Vars->mean_dy,Vars->mean_p)*RAD2DEG); + } + + /* check Buffer flush when end of simulation reached */ + if ((Vars->Buffer_Counter <= Vars->Buffer_Block) && Vars->Flag_Auto_Limits && Vars->Mon2D_Buffer && Vars->Buffer_Counter) + { + /* Get Auto Limits */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + + for (i = 1; i <= Vars->Coord_Number; i++) + { + if ((Vars->Coord_Type[i] & DEFS->COORD_AUTO) && Vars->Coord_Bin[i] > 1) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g in %li bins\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i], Vars->Coord_Bin[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step */ + Vars->Buffer_Block = Vars->Buffer_Counter; + + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) */ + /* simulation ended before Buffer was filled. Limits have to be computed, and stored events must be sent into histograms */ + + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loops (While_Buffer) */ + Coord[0] = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + /* auto limits case : scan Buffer within limits and store in Mon2D */ + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) Coord_Index[i] = 0; + else { + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char outsidebounds=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + outsidebounds=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!outsidebounds) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + While_End = 1; + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + + /* store n1d/2d section from Buffer */ + + pp = Coord[0]; + /* apply per cm2 or per st */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if (!Vars->Flag_Multiple && Vars->Coord_NumberNoPixel == 2) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + Vars->Mon2D_N[i][j]++; + Vars->Mon2D_p[i][j] += pp; + Vars->Mon2D_p2[i][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) pp=0; + } + else + /* 1D and n1D case : Vars->Flag_Multiple */ + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + for (i= 1; i <= Vars->Coord_Number; i++) + { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) + { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + Vars->Mon2D_N[i-1][j]++; + Vars->Mon2D_p[i-1][j] += pp; + Vars->Mon2D_p2[i-1][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) { + pp=0; break; + } + } + } /* end store 2D/1D */ + + } /* end while */ + } /* end Force Get Limits */ + + /* write output files (sent to file as p[i*n + j] vectors) */ + if (Vars->Coord_Number == 0) + { + double Nsum; + double psum, p2sum; + Nsum = Vars->Nsum; + psum = Vars->psum; + p2sum= Vars->p2sum; + if (Vars->Flag_signal != DEFS->COORD_P && Nsum > 0) + { psum /=Nsum; p2sum /= Nsum*Nsum; } + /* DETECTOR_OUT_0D(Vars->Monitor_Label, Vars->Nsum, Vars->psum, Vars->p2sum); */ + detector = mcdetector_out_0D(Vars->Monitor_Label, Nsum, psum, p2sum, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + else + if (strlen(Vars->Mon_File) > 0) + { + fname = (char*)malloc(strlen(Vars->Mon_File)+10*Vars->Coord_Number); + if (Vars->Flag_List && Vars->Mon2D_Buffer) /* List: DETECTOR_OUT_2D */ + { + + if (Vars->Flag_List >= 2) Vars->Buffer_Size = Vars->Neutron_Counter; + if (Vars->Buffer_Size >= Vars->Neutron_Counter) + Vars->Buffer_Size = Vars->Neutron_Counter; + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) strcat(fname, "_list"); + + strcpy(Coord_X_Label,""); + for (i= 0; i <= Vars->Coord_Number; i++) + { + strcat(Coord_X_Label, Vars->Coord_Var[i]); + strcat(Coord_X_Label, " "); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i]); } + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s List (%lix%li).\n", Vars->compcurname, fname,(long int)Vars->Neutron_Counter,Vars->Coord_Number); + + /* handle the type of list output */ + strcpy(label, Vars->Monitor_Label); + + detector = mcdetector_out_list( + label, "List of neutron events", Coord_X_Label, + -Vars->Buffer_Size, Vars->Coord_Number+1, + Vars->Mon2D_Buffer, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot, Vars->option,Vars->compcurindex); + } + if (Vars->Flag_Multiple) /* n1D: DETECTOR_OUT_1D */ + { + for (i= 0; i < Vars->Coord_Number; i++) + { + + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i+1]); } + sprintf(Coord_X_Label, "%s monitor", Vars->Coord_Label[i+1]); + strcpy(label, Coord_X_Label); + if (Vars->Coord_Bin[i+1] > 0) { /* 1D monitor */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 1D (%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[i+1]); + min1d = Vars->Coord_Min[i+1]; + max1d = Vars->Coord_Max[i+1]; + if (min1d == max1d) max1d = min1d+1e-6; + p1m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + if (p2m == NULL) /* use Raw Buffer line output */ + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for output. Using raw data.\n", Vars->compcurname); + if (p1m != NULL) free(p1m); + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],Vars->Mon2D_p[i],Vars->Mon2D_p2[i], + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } /* if (p2m == NULL) */ + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (j=0; j < Vars->Coord_Bin[i+1]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j] > 0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } /* if */ + + for (j=0; j < Vars->Coord_Bin[i+1]; j++) + { + p1m[j] = Vars->Mon2D_p[i][j]; + p2m[j] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && Vars->Mon2D_N[i][j] > 0) + { /* normalize mean signal to the number of events */ + p1m[j] /= Vars->Mon2D_N[i][j]; + p2m[j] /= Vars->Mon2D_N[i][j]*Vars->Mon2D_N[i][j]; + } + if (Vars->Flag_log != 0) + { + if ((p1m[j] > 0) && (p2m[j] > 0)) + { + p2m[j] /= p1m[j]*p1m[j]; + p1m[j] = log(p1m[j])/log(10); + } + else + { + p1m[j] = XY; + p2m[j] = 0; + } + } + } /* for */ + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + + } /* else */ + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p1m != NULL) free(p1m); p1m=NULL; + if (p2m != NULL) free(p2m); p2m=NULL; + */ + } else { /* 0d monitor */ + detector = mcdetector_out_0D(label, Vars->Mon2D_p[i][0], Vars->Mon2D_p2[i][0], Vars->Mon2D_N[i][0], Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + + } /* for */ + } /* if 1D */ + else + if (Vars->Coord_NumberNoPixel == 2) /* 2D: DETECTOR_OUT_2D */ + { + strcpy(fname,Vars->Mon_File); + + p0m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p1m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + if (p2m == NULL) + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for 2D array (%zi). Skipping.\n", Vars->compcurname, 3*Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + */ + } + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (i= 0; i < Vars->Coord_Bin[1]; i++) + for (j= 0; j < Vars->Coord_Bin[2]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j]>0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + for (j= 0; j < Vars->Coord_Bin[2]; j++) + { + long index; + index = j + i*Vars->Coord_Bin[2]; + p0m[index] = Vars->Mon2D_N[i][j]; + p1m[index] = Vars->Mon2D_p[i][j]; + p2m[index] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && p0m[index] > 0) + { + p1m[index] /= p0m[index]; + p2m[index] /= p0m[index]*p0m[index]; + } + + if (Vars->Flag_log != 0) + { + if ((p1m[index] > 0) && (p2m[index] > 0)) + { + p2m[index] /= (p1m[index]*p1m[index]); + p1m[index] = log(p1m[index])/log(10); + + } + else + { + p1m[index] = XY; + p2m[index] = 0; + } + } + } + } + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[1]); + strcat(fname, "_"); strcat(fname, Vars->Coord_Var[2]); } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 2D (%lix%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[1], Vars->Coord_Bin[2]); + + min1d = Vars->Coord_Min[1]; + max1d = Vars->Coord_Max[1]; + if (min1d == max1d) max1d = min1d+1e-6; + min2d = Vars->Coord_Min[2]; + max2d = Vars->Coord_Max[2]; + if (min2d == max2d) max2d = min2d+1e-6; + strcpy(label, Vars->Monitor_Label); + if (Vars->Coord_Bin[1]*Vars->Coord_Bin[2] > 1 + && Vars->Flag_signal == DEFS->COORD_P) + strcat(label, " per bin"); + if (Vars->Flag_List) { + detector = mcdetector_out_2D_list( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->option,Vars->compcurindex); + } else { + detector = mcdetector_out_2D( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + if (p2m != NULL) free(p2m); + */ + } + } + free(fname); + } + return(detector); + } /* end Monitor_nD_Save */ + +/* ========================================================================= */ +/* Monitor_nD_Finally: this routine is used to free memory */ +/* ========================================================================= */ + +void Monitor_nD_Finally(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + int i; + + /* Now Free memory Mon2D.. */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Mon2D_Buffer != NULL) free(Vars->Mon2D_Buffer); + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_Number) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + for (i= 0; i < Vars->Coord_Number; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + } /* end Monitor_nD_Finally */ + +/* ========================================================================= */ +/* Monitor_nD_McDisplay: this routine is used to display component */ +/* ========================================================================= */ + +void Monitor_nD_McDisplay(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + double radius, h; + double xmin; + double xmax; + double ymin; + double ymax; + double zmin; + double zmax; + int i; + double hdiv_min=-180, hdiv_max=180, vdiv_min=-90, vdiv_max=90; + char restricted = 0; + + radius = Vars->Sphere_Radius; + h = Vars->Cylinder_Height; + xmin = Vars->mxmin; + xmax = Vars->mxmax; + ymin = Vars->mymin; + ymax = Vars->mymax; + zmin = Vars->mzmin; + zmax = Vars->mzmax; + + /* determine if there are angular limits set at start (no auto) in coord_types + * cylinder/banana: look for hdiv + * sphere: look for angle, radius (->atan2(val,radius)), hdiv, vdiv + * this activates a 'restricted' flag, to draw a region as blades on cylinder/sphere + */ + for (i= 0; i <= Vars->Coord_Number; i++) + { + int Set_Vars_Coord_Type; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV || Set_Vars_Coord_Type == DEFS->COORD_THETA) + { hdiv_min = Vars->Coord_Min[i]; hdiv_max = Vars->Coord_Max[i]; restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_VDIV || Set_Vars_Coord_Type == DEFS->COORD_PHI) + { vdiv_min = Vars->Coord_Min[i]; vdiv_max = Vars->Coord_Max[i];restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { hdiv_min = vdiv_min = Vars->Coord_Min[i]; + hdiv_max = vdiv_max = Vars->Coord_Max[i]; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + { double angle; + angle = RAD2DEG*atan2(Vars->Coord_Max[i], radius); + hdiv_min = vdiv_min = angle; + hdiv_max = vdiv_max = angle; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_Y && abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE) + { + vdiv_min = atan2(ymin,radius)*RAD2DEG; + vdiv_max = atan2(ymax,radius)*RAD2DEG; + restricted = 1; + } + } + /* full sphere */ + if ((!restricted && (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + || abs(Vars->Flag_Shape) == DEFS->SHAPE_PREVIOUS) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + mcdis_circle("xz",0,0,0,radius); + mcdis_circle("yz",0,0,0,radius); + } + /* banana/cylinder/sphere portion */ + else + if (restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE))) + { + int NH=24, NV=24; + int ih, iv; + double width, height; + int issphere; + issphere = (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE); + width = (hdiv_max-hdiv_min)/NH; + if (!issphere) { + NV=1; /* cylinder has vertical axis */ + } + height= (vdiv_max-vdiv_min)/NV; + + /* check width and height of elements (sphere) to make sure the nb + of plates remains limited */ + if (width < 10 && NH > 1) { width = 10; NH=(hdiv_max-hdiv_min)/width; width=(hdiv_max-hdiv_min)/NH; } + if (height < 10 && NV > 1) { height = 10; NV=(vdiv_max-vdiv_min)/height; height= (vdiv_max-vdiv_min)/NV; } + + mcdis_magnify("xyz"); + for(ih = 0; ih < NH; ih++) + for(iv = 0; iv < NV; iv++) + { + double theta0, phi0, theta1, phi1; /* angles in spherical coordinates */ + double x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3; /* vertices at plate edges */ + phi0 = (hdiv_min+ width*ih-90)*DEG2RAD; /* in xz plane */ + phi1 = (hdiv_min+ width*(ih+1)-90)*DEG2RAD; + if (issphere) + { + theta0= (vdiv_min+height* iv + 90) *DEG2RAD; /* in vertical plane */ + theta1= (vdiv_min+height*(iv+1) + 90)*DEG2RAD; + + y0 = -radius*cos(theta0); /* z with Z vertical */ + y1 = -radius*cos(theta1); + if (y0 < ymin) y0=ymin; + if (y0 > ymax) y0=ymax; + if (y1 < ymin) y1=ymin; + if (y1 > ymax) y1=ymax; + } else { + y0 = ymin; + y1 = ymax; + theta0=theta1=90*DEG2RAD; + } + + x0 = radius*sin(theta0)*cos(phi0); /* x with Z vertical */ + z0 =-radius*sin(theta0)*sin(phi0); /* y with Z vertical */ + x1 = radius*sin(theta1)*cos(phi0); + z1 =-radius*sin(theta1)*sin(phi0); + x2 = radius*sin(theta1)*cos(phi1); + z2 =-radius*sin(theta1)*sin(phi1); + x3 = radius*sin(theta0)*cos(phi1); + z3 =-radius*sin(theta0)*sin(phi1); + y2 = y1; y3 = y0; + + mcdis_multiline(5, + x0,y0,z0, + x1,y1,z1, + x2,y2,z2, + x3,y3,z3, + x0,y0,z0); + } + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dt, dy; + dt = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_BANANA_DET: %g, %g, %g, %g, %g, %li, %li, %llu\n", radius, + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* disk (circle) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + } + /* rectangle (square) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_SQUARE) + { + mcdis_magnify("xy"); + mcdis_multiline(5, (double)xmin, (double)ymin, 0.0, + (double)xmax, (double)ymin, 0.0, + (double)xmax, (double)ymax, 0.0, + (double)xmin, (double)ymax, 0.0, + (double)xmin, (double)ymin, 0.0); + + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dx, dy; + dx = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_RECTANGULAR_DET: %g, %g, %g, %g, %li, %li, %llu\n", + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* full cylinder/banana */ + else + if (!restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA))) + { + mcdis_magnify("xyz"); + mcdis_circle("xz", 0, h/2.0, 0, radius); + mcdis_circle("xz", 0, -h/2.0, 0, radius); + mcdis_line(-radius, -h/2.0, 0, -radius, +h/2.0, 0); + mcdis_line(+radius, -h/2.0, 0, +radius, +h/2.0, 0); + mcdis_line(0, -h/2.0, -radius, 0, +h/2.0, -radius); + mcdis_line(0, -h/2.0, +radius, 0, +h/2.0, +radius); + } + else + /* box */ + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_BOX) + { + mcdis_magnify("xyz"); + mcdis_multiline(5, xmin, ymin, zmin, + xmax, ymin, zmin, + xmax, ymax, zmin, + xmin, ymax, zmin, + xmin, ymin, zmin); + mcdis_multiline(5, xmin, ymin, zmax, + xmax, ymin, zmax, + xmax, ymax, zmax, + xmin, ymax, zmax, + xmin, ymin, zmax); + mcdis_line(xmin, ymin, zmin, xmin, ymin, zmax); + mcdis_line(xmax, ymin, zmin, xmax, ymin, zmax); + mcdis_line(xmin, ymax, zmin, xmin, ymax, zmax); + mcdis_line(xmax, ymax, zmin, xmax, ymax, zmax); + } + } /* end Monitor_nD_McDisplay */ + +/* end of monitor_nd-lib.c */ + + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff.h +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Release: +* Version: +* +* Object File Format intersection header for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format: +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#define INTEROFF_LIB_H "$Revision$" + +#ifndef OFF_EPSILON +#define OFF_EPSILON 1e-13 +#endif + +#ifndef OFF_INTERSECT_MAX +#ifdef OPENACC +#define OFF_INTERSECT_MAX 100 +#else +#define OFF_INTERSECT_MAX 1024 +#endif +#endif + +//#include + +#define N_VERTEX_DISPLAYED 200000 + +typedef struct intersection { + MCNUM time; //time of the intersection + Coords v; //intersection point + Coords normal; //normal vector of the surface intersected + short in_out; //1 if the ray enters the volume, -1 otherwise + short edge; //1 if the intersection is on the boundary of the polygon, and error is possible + unsigned long index; // index of the face +} intersection; + +typedef struct polygon { + MCNUM* p; //vertices of the polygon in adjacent order, this way : x1 | y1 | z1 | x2 | y2 | z2 ... + int npol; //number of vertices + #pragma acc shape(p[0:npol]) init_needed(npol) + Coords normal; + double D; +} polygon; + +typedef struct off_struct { + long vtxSize; + long polySize; + long faceSize; + Coords* vtxArray; + #pragma acc shape(vtxArray[0:vtxSize]) init_needed(vtxSize) + Coords* normalArray; + #pragma acc shape(vtxArray[0:faceSize]) init_needed(faceSize) + unsigned long* faceArray; + #pragma acc shape(vtxArray[0:faceSize][0:polySize]) init_needed(faceSize,polySize) + double* DArray; + #pragma acc shape(vtxArray[0:polySize]) init_needed(polySize) + char *filename; + int mantidflag; + long mantidoffset; + intersection intersects[OFF_INTERSECT_MAX]; // After a call to off_intersect_all contains the list of intersections. + int nextintersect; // 'Next' intersection (first t>0) solution after call to off_intersect_all + int numintersect; // Number of intersections after call to off_intersect_all +} off_struct; + +/******************************************************************************* +* long off_init( char *offfile, double xwidth, double yheight, double zdepth, off_struct* data) +* ACTION: read an OFF file, optionally center object and rescale, initialize OFF data structure +* INPUT: 'offfile' OFF file to read +* 'xwidth,yheight,zdepth' if given as non-zero, apply bounding box. +* Specifying only one of these will also use the same ratio on all axes +* 'notcenter' center the object to the (0,0,0) position in local frame when set to zero +* RETURN: number of polyhedra and 'data' OFF structure +*******************************************************************************/ +long off_init( char *offfile, double xwidth, double yheight, double zdepth, + int notcenter, off_struct* data); + +/******************************************************************************* +* int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +* data is the full OFF structure, including a list intersection type +*******************************************************************************/ +#pragma acc routine +int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ); + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ); + +/***************************************************************************** +* int off_intersectx(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ); + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED points from the object +*******************************************************************************/ +void off_display(off_struct); + +/******************************************************************************* +void p_to_quadratic(double eq[], Coords acc, + Coords pos, Coords vel, + double* teq) +* ACTION: define the quadratic for the intersection of a parabola with a plane +* INPUT: 'eq' plane equation +* 'acc' acceleration vector +* 'vel' velocity of the particle +* 'pos' position of the particle +* equation of plane A * x + B * y + C * z - D = 0 +* eq[0] = (C*az)/2+(B*ay)/2+(A*ax)/2 +* eq[1] = C*vz+B*vy+A*vx +* eq[2] = C*z0+B*y0+A*x0-D +* RETURN: equation of parabola: teq(0) * t^2 + teq(1) * t + teq(2) +*******************************************************************************/ +void p_to_quadratic(Coords norm, MCNUM d, Coords acc, Coords pos, Coords vel, + double* teq); + +/******************************************************************************* +int quadraticSolve(double eq[], double* x1, double* x2); +* ACTION: solves the quadratic for the roots x1 and x2 +* eq[0] * t^2 + eq[1] * t + eq[2] = 0 +* INPUT: 'eq' the coefficients of the parabola +* RETURN: roots x1 and x2 and the number of solutions +*******************************************************************************/ +int quadraticSolve(double* eq, double* x1, double* x2); + +#endif + +/* end of interoff-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff-lib.c +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Origin: ILL +* Release: $Revision$ +* Version: McStas X.Y +* +* Object File Format intersection library for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format (it supports comments): +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#include "interoff-lib.h" +#endif + +#ifndef INTEROFF_LIB_C +#define INTEROFF_LIB_C "$Revision$" + +#ifdef OPENACC // If on GPU map fprintf to printf +#define fprintf(stderr,...) printf(__VA_ARGS__) +#endif + +#pragma acc routine +double off_F(double x, double y,double z,double A,double B,double C,double D) { + return ( A*x + B*y + C*z + D ); +} + +#pragma acc routine +char off_sign(double a) { + if (a<0) return(-1); + else if (a==0) return(0); + else return(1); +} + +// off_normal ****************************************************************** +//gives the normal vector of p +#pragma acc routine +void off_normal(Coords* n, polygon p) +{ + //using Newell method + int i=0,j=0; + n->x=0;n->y=0;n->z=0; + for (i = 0, j = p.npol-1; i < p.npol; j = i++) + { + MCNUM x1=p.p[3*i], + y1=p.p[3*i+1], + z1=p.p[3*i+2]; + MCNUM x2=p.p[3*j], + y2=p.p[3*j+1], + z2=p.p[3*j+2]; + // n is the cross product of v1*v2 + n->x += (y1 - y2) * (z1 + z2); + n->y += (z1 - z2) * (x1 + x2); + n->z += (x1 - x2) * (y1 + y2); + } +} /* off_normal */ + +// off_pnpoly ****************************************************************** +//based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html +//return 0 if the vertex is out +// 1 if it is in +// -1 if on the boundary +#pragma acc routine +int off_pnpoly(polygon p, Coords v) +{ + int i=0, c = 0; + MCNUM minx=FLT_MAX,maxx=-FLT_MAX,miny=FLT_MAX,maxy=-FLT_MAX,minz=FLT_MAX,maxz=-FLT_MAX; + MCNUM areax=0,areay=0,areaz=0; + + int pol2dx=0,pol2dy=1; //2d restriction of the poly + MCNUM x=v.x,y=v.y; + + /*areax: projected area with x-scratched = |v1_yz x v2_yz|, where v1=(x1-x0,0,z1-z0) & v2=(x2-x0,0,z2-z0).*/ + /* In principle, if polygon is triangle area should be scaled by 1/2, but this is irrelevant for finding the maximum area.*/ + /* Similarly for y and z scratched.*/ + areax=coords_len(coords_xp( + coords_set(0,p.p[3*1+1]-p.p[0+1],p.p[3*1+2]-p.p[0+2]), + coords_set(0,p.p[3*2+1]-p.p[0+1],p.p[3*2+2]-p.p[0+2]))); + areay=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],0,p.p[3*1+2]-p.p[0+2]), + coords_set(p.p[3*2+0]-p.p[0+0],0,p.p[3*2+2]-p.p[0+2]))); + areaz=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],p.p[3*1+1]-p.p[0+1],0), + coords_set(p.p[3*2+0]-p.p[0+0],p.p[3*2+1]-p.p[0+1],0))); + + if(areaztime = inter->edge = inter->in_out=0; + inter->v = inter->normal = coords_set(0,0,1); + + if (fabs(ndir) < OFF_EPSILON) // ray is parallel to polygon plane + { + if (nw0 == 0) // ray lies in polygon plane (infinite number of solution) + return 0; + else return 0; // ray disjoint from plane (no solution) + } + + // get intersect point of ray with polygon plane + inter->time = nw0 / ndir; //parametric value the point on line (a,b) + + inter->v = coords_set(a.x + inter->time * dir.x,// intersect point of ray and plane + a.y + inter->time * dir.y, + a.z + inter->time * dir.z); + + int res=off_pnpoly(p,inter->v); + + inter->edge=(res==-1); + if (ndir<0) + inter->in_out=1; //the negative dot product means we enter the surface + else + inter->in_out=-1; + + inter->normal=p.normal; + + return res; //true if the intersection point lies inside the poly +} /* off_intersectPoly */ + + +// off_getBlocksIndex ********************************************************** +/*reads the indexes at the beginning of the off file as this : +line 1 OFF +line 2 nbVertex nbFaces nbEdges +*/ +FILE *off_getBlocksIndex(char* filename, long* vtxSize, long* polySize ) +{ + FILE* f = Open_File(filename,"r", NULL); /* from read_table-lib: FILE *Open_File(char *name, char *Mode, char *path) */ + if (!f) return (f); + + char line[CHAR_BUF_LENGTH]; + char *ret=0; + *vtxSize = *polySize = 0; + + /* **************** start to read the file header */ + /* OFF file: + 'OFF' or '3' + */ + + ret=fgets(line,CHAR_BUF_LENGTH , f);// line 1 = "OFF" + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read 1st line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (strlen(line)>5) + { + fprintf(stderr,"Error: First line in %s is too long (=%lu). Possibly the line is not terminated by '\\n'.\n" + " The first line is required to be exactly 'OFF', '3' or 'ply'.\n", + filename,(long unsigned)strlen(line)); + fclose(f); + return(NULL); + } + + if (strncmp(line,"OFF",3) && strncmp(line,"3",1) && strncmp(line,"ply",1)) + { + fprintf(stderr, "Error: %s is probably not an OFF, NOFF or PLY file (interoff/off_getBlocksIndex).\n" + " Requires first line to be 'OFF', '3' or 'ply'.\n",filename); + fclose(f); + return(NULL); + } + + if (!strncmp(line,"OFF",3) || !strncmp(line,"3",1)) { + do /* OFF file: skip # comments which may be there */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + } while (line[0]=='#'); + //line = nblines of vertex,faces and edges arrays + sscanf(line,"%lu %lu",vtxSize,polySize); + } else { + do /* PLY file: read all lines until find 'end_header' + and locate 'element faces' and 'element vertex' */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (!strncmp(line,"element face",12)) + sscanf(line,"element face %lu",polySize); + else if (!strncmp(line,"element vertex",14)) + sscanf(line,"element vertex %lu",vtxSize); + else if (!strncmp(line,"format binary",13)) + exit(fprintf(stderr, + "Error: Can not read binary PLY file %s, only 'format ascii' (interoff/off_getBlocksIndex)\n%s\n", + filename, line)); + } while (strncmp(line,"end_header",10)); + } + + /* The FILE is left opened ready to read 'vtxSize' vertices (vtxSize *3 numbers) + and then polySize polygons (rows) */ + + return(f); +} /* off_getBlocksIndex */ + +// off_init_planes ************************************************************* +//gives the equations of 2 perpandicular planes of [ab] +#pragma acc routine +void off_init_planes(Coords a, Coords b, + MCNUM* A1, MCNUM* C1, MCNUM* D1, MCNUM *A2, MCNUM* B2, MCNUM* C2, MCNUM* D2) +{ + //direction vector of [a b] + Coords dir={b.x-a.x, b.y-a.y, b.z-a.z}; + + //the plane parallel to the 'y' is computed with the normal vector of the projection of [ab] on plane 'xz' + *A1= dir.z; + *C1=-dir.x; + if(*A1!=0 || *C1!=0) + *D1=-(a.x)*(*A1)-(a.z)*(*C1); + else + { + //the plane does not support the vector, take the one parallel to 'z'' + *A1=1; + //B1=dir.x=0 + *D1=-(a.x); + } + //the plane parallel to the 'x' is computed with the normal vector of the projection of [ab] on plane 'yz' + *B2= dir.z; + *C2=-dir.y; + *A2= 0; + if (*B2==0 && *C2==0) + { + //the plane does not support the vector, take the one parallel to 'z' + *B2=1; + //B1=dir.x=0 + *D2=-(a.y); + } + else { + if (dir.z==0) + { + //the planes are the same, take the one parallel to 'z' + *A2= dir.y; + *B2=-dir.x; + *D2=-(a.x)*(*A2)-(a.y)*(*B2); + } + else + *D2=-(a.y)**B2-(a.z)**C2; + } +} /* off_init_planes */ + +// off_clip_3D_mod ************************************************************* +#pragma acc routine +int off_clip_3D_mod(intersection* t, Coords a, Coords b, + Coords* vtxArray, unsigned long vtxSize, unsigned long* faceArray, + unsigned long faceSize, Coords* normalArray) +{ + MCNUM A1=0, C1=0, D1=0, A2=0, B2=0, C2=0, D2=0; //perpendicular plane equations to [a,b] + off_init_planes(a, b, &A1, &C1, &D1, &A2, &B2, &C2, &D2); + + int t_size=0; + MCNUM popol[3*4]; /*3 dimensions and max 4 vertices to form a polygon*/ + unsigned long i=0,indPoly=0; + + //exploring the polygons : + i=indPoly=0; + while (iOFF_INTERSECT_MAX) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", OFF_INTERSECT_MAX); + return (t_size); + } +#endif + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k t[0].time) { + t[0]=x; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (x.time < t[3].time) { + t[3]=x; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } /* if (jCHAR_BUF_LENGTH) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", CHAR_BUF_LENGTH); + return (t_size); + } + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k= 1) { + double time = 1.0e36; + if (x1 < time && x1 > 0.0) { + time = x1; + } + if (nsol == 2 && x2 < time && x2 > 0.0) { + time = x2; + } + if (time != 1.0e36) { + intersection inters; + double t2 = time * time * 0.5; + double tx = pos.x + time * vel.x; + if (acc.x != 0.0) { + tx = tx + t2 * acc.x; + } + double ty = pos.y + time * vel.y; + if (acc.y != 0.0) { + ty = ty + t2 * acc.y; + } + double tz = pos.z + time * vel.z; + if (acc.z != 0.0) { + tz = tz + t2 * acc.z; + } + inters.v = coords_set(tx, ty, tz); + Coords tvel = coords_set(vel.x + time * acc.x, + vel.y + time * acc.y, + vel.z + time * acc.z); + inters.time = time; + inters.normal = pol.normal; + inters.index = indPoly; + int res=off_pnpoly(pol,inters.v); + if (res != 0) { + inters.edge=(res==-1); + MCNUM ndir = scalar_prod(pol.normal.x,pol.normal.y,pol.normal.z,tvel.x,tvel.y,tvel.z); + if (ndir<0) { + inters.in_out=1; //the negative dot product means we enter the surface + } else { + inters.in_out=-1; + } +#ifdef OFF_LEGACY + t[t_size++]=inters; +#else + /* Check against our 4 existing times, starting from [-FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX] */ + /* Case 1, negative time? */ + if (t_size < 4) t_size++; + if (inters.time < 0) { + if (inters.time > t[0].time) { + t[0]=inters; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (inters.time < t[3].time) { + t[3]=inters; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } + } + i += pol.npol; + indPoly++; + } /* while itime - pb->time); +} /* off_compare */ + +// off_cleanDouble ************************************************************* +//given an array of intersections throw those which appear several times +//returns 1 if there is a possibility of error +#pragma acc routine +int off_cleanDouble(intersection* t, int* t_size) +{ + int i=1; + intersection prev=t[0]; + while (i<*t_size) + { + int j=i; + //for each intersection with the same time + while (j<*t_size && fabs(prev.time-t[j].time)maxx) maxx=vtxArray[i].x; + if (vtxArray[i].ymaxy) maxy=vtxArray[i].y; + if (vtxArray[i].zmaxz) maxz=vtxArray[i].z; + i++; // inquire next vertex + } + + // resizing and repositioning params + double centerx=0, centery=0, centerz=0; + if (!notcenter) { + centerx=(minx+maxx)*0.5; + centery=(miny+maxy)*0.5; + centerz=(minz+maxz)*0.5; + } + + double rangex=-minx+maxx, + rangey=-miny+maxy, + rangez=-minz+maxz; + + double ratiox=1,ratioy=1,ratioz=1; + + if (xwidth && rangex) + { + ratiox=xwidth/rangex; + ratioy=ratiox; + ratioz=ratiox; + } + + if (yheight && rangey) + { + ratioy=yheight/rangey; + if(!xwidth) ratiox=ratioy; + ratioz=ratioy; + } + + if (zdepth && rangez) + { + ratioz=zdepth/rangez; + if(!xwidth) ratiox=ratioz; + if(!yheight) ratioy=ratioz; + } + + rangex *= ratiox; + rangey *= ratioy; + rangez *= ratioz; + + //center and resize the object + for (i=0; i polySize*10) { + fprintf(stderr, "Error: %li exceeded allocated polygon array[%li] in file %s (interoff/off_init)\n", + faceSize, polySize*10, offfile); + } + faceArray[faceSize++] = nbVertex; // length of the polygon/face + // then read the vertex ID's + for (j=0; jvtxArray = vtxArray; + data->normalArray= normalArray; + data->DArray = DArray; + data->faceArray = faceArray; + data->vtxSize = vtxSize; + data->polySize = polySize; + data->faceSize = faceSize; + data->filename = offfile; + #ifdef OPENACC + acc_attach((void *)&vtxArray); + acc_attach((void *)&normalArray); + acc_attach((void *)&faceArray); + #endif + + return(polySize); +} /* off_init */ + +#pragma acc routine +int Min_int(int x, int y) { + return (xintersects, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray ); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(data->intersects, A, B, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray ); + } + #ifndef OPENACC + qsort(data->intersects, t_size, sizeof(intersection), off_compare); + #else + #ifdef USE_OFF + gpusort(data->intersects, t_size); + #endif + #endif + off_cleanDouble(data->intersects, &t_size); + off_cleanInOut(data->intersects, &t_size); + + /*find intersections "closest" to 0 (favouring positive ones)*/ + if(t_size>0){ + int i=0; + if(t_size>1) { + for (i=1; i < t_size-1; i++){ + if (data->intersects[i-1].time > 0 && data->intersects[i].time > 0) + break; + } + + data->nextintersect=i-1; + data->numintersect=t_size; + + if (t0) *t0 = data->intersects[i-1].time; + if (n0) *n0 = data->intersects[i-1].normal; + if (t3) *t3 = data->intersects[i].time; + if (n3) *n3 = data->intersects[i].normal; + } else { + if (t0) *t0 = data->intersects[0].time; + if (n0) *n0 = data->intersects[0].normal; + } + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(data->intersects[data->nextintersect]).index; + return t_size; + } +#else + intersection intersect4[4]; + intersect4[0].time=-FLT_MAX; + intersect4[1].time=FLT_MAX; + intersect4[2].time=FLT_MAX; + intersect4[3].time=FLT_MAX; + if(mcgravitation) { + Coords pos={ x, y, z}; + Coords vel={vx, vy, vz}; + Coords acc={ax, ay, az}; + t_size=off_clip_3D_mod_grav(intersect4, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(intersect4, A, B, + data->vtxArray, data->vtxSize, data->faceArray, data->faceSize, data->normalArray ); + } + if(t_size>0){ + int i=0; + if (intersect4[0].time == -FLT_MAX) i=1; + data->numintersect=t_size; + if (t0) *t0 = intersect4[i].time; + if (n0) *n0 = intersect4[i].normal; + if (t3) *t3 = intersect4[i+1].time; + if (n3) *n3 = intersect4[i+1].normal; + + if (intersect4[1].time == FLT_MAX) + { + if (t3) *t3 = 0.0; + } + + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(int)intersect4[i].index; + return t_size; + } +#endif + return 0; +} /* off_intersect */ + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +{ + return off_intersect_all(t0, t3, n0, n3, x, y, z, vx, vy, vz, ax, ay, az, &data ); +} /* off_intersect */ + +/***************************************************************************** +* int off_x_intersect(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +{ + /*This function simply reformats and calls off_intersect (as for neutrons) + *by normalizing the wavevector - this will yield the intersection lengths + *in m*/ + double jx,jy,jz,invk; + int n; + invk=1/sqrt(scalar_prod(kx,ky,kz,kx,ky,kz)); + jx=kx*invk;jy=ky*invk;jz=kz*invk; + n=off_intersect(l0,l3,n0,n3,x,y,z,jx,jy,jz,0.0,0.0,0.0,data); + return n; +} + + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED polygons from the object +*******************************************************************************/ +void off_display(off_struct data) +{ + if(mcdotrace==2){ + // Estimate size of the JSON string + const int VERTEX_OVERHEAD = 30; + const int FACE_OVERHEAD_BASE = 20; + const int FACE_INDEX_OVERHEAD = 15; + int estimated_size = 256; // Base size + estimated_size += data.vtxSize * VERTEX_OVERHEAD; + + for (int i = 0; i < data.faceSize;) { + int num_indices = data.faceArray[i]; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + for (int i = 0; i < data.vtxSize; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", data.vtxArray[i].x, data.vtxArray[i].y, data.vtxArray[i].z); + if (i < data.vtxSize - 1) { + ptr += sprintf(ptr, ", "); + } + } + + ptr += sprintf(ptr, "], \"faces\": ["); + + for (int i = 0; i < data.faceSize;) { + int num = data.faceArray[i]; + ptr += sprintf(ptr, "{ \"face\": ["); + for (int j = 1; j <= num; j++) { + ptr += sprintf(ptr, "%lu", data.faceArray[i + j]); + if (j < num) { + ptr += sprintf(ptr, ", "); + } + } + ptr += sprintf(ptr, "]}"); + i += num + 1; + if(i 1 || drawthis) { + mcdis_line(x1,y1,z1,x2,y2,z2); + } + x1 = x2; y1 = y2; z1 = z2; + } + if (ratio > 1 || drawthis) { + mcdis_line(x1,y1,z1,x0,y0,z0); + } + if (data.mantidflag) { + printf("MANTID_PIXEL: %s\n", pixelinfo); + pixel++; + } + i += nbVertex; + } + } +} /* off_display */ + +/* end of interoff-lib.c */ +#endif // INTEROFF_LIB_C + + + + +/* ************************************************************************** */ +/* End of SHARE user declarations for all components */ +/* ************************************************************************** */ + + +/* ********************** component definition declarations. **************** */ + +/* component Origin=Progress_bar() [1] DECLARE */ +/* Parameter definition for component type 'Progress_bar' */ +struct _struct_Progress_bar_parameters { + /* Component type 'Progress_bar' setting parameters */ + char profile[16384]; + MCNUM percent; + MCNUM flag_save; + MCNUM minutes; + /* Component type 'Progress_bar' private parameters */ + double IntermediateCnts; + time_t StartTime; + time_t EndTime; + time_t CurrentTime; + char infostring[64]; +}; /* _struct_Progress_bar_parameters */ +typedef struct _struct_Progress_bar_parameters _class_Progress_bar_parameters; + +/* Parameters for component type 'Progress_bar' */ +struct _struct_Progress_bar { + char _name[256]; /* e.g. Origin */ + char _type[256]; /* Progress_bar */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Progress_bar_parameters _parameters; +}; +typedef struct _struct_Progress_bar _class_Progress_bar; +_class_Progress_bar _Origin_var; +#pragma acc declare create ( _Origin_var ) + +/* component optical_axis=Arm() [2] DECLARE */ +/* Parameter definition for component type 'Arm' */ +struct _struct_Arm_parameters { + char Arm_has_no_parameters; +}; /* _struct_Arm_parameters */ +typedef struct _struct_Arm_parameters _class_Arm_parameters; + +/* Parameters for component type 'Arm' */ +struct _struct_Arm { + char _name[256]; /* e.g. optical_axis */ + char _type[256]; /* Arm */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Arm_parameters _parameters; +}; +typedef struct _struct_Arm _class_Arm; +_class_Arm _optical_axis_var; +#pragma acc declare create ( _optical_axis_var ) + +/* component Source=ESS_butterfly() [3] DECLARE */ +/* Parameter definition for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly_parameters { + /* Component type 'ESS_butterfly' setting parameters */ + char sector[16384]; + int beamline; + MCNUM yheight; + MCNUM cold_frac; + int target_index; + MCNUM dist; + MCNUM focus_xw; + MCNUM focus_yh; + MCNUM c_performance; + MCNUM t_performance; + MCNUM Lmin; + MCNUM Lmax; + MCNUM tmax_multiplier; + int n_pulses; + MCNUM acc_power; + MCNUM tfocus_dist; + MCNUM tfocus_time; + MCNUM tfocus_width; + /* Component type 'ESS_butterfly' private parameters */ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double * Beamlines; + double wfrac_cold; + double wfrac_thermal; + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + double cos_thermal; + double cos_cold; + double orientation_angle; + double cx; + double cz; + int jmax; + double dxC; + double dxT; +}; /* _struct_ESS_butterfly_parameters */ +typedef struct _struct_ESS_butterfly_parameters _class_ESS_butterfly_parameters; + +/* Parameters for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly { + char _name[256]; /* e.g. Source */ + char _type[256]; /* ESS_butterfly */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_ESS_butterfly_parameters _parameters; +}; +typedef struct _struct_ESS_butterfly _class_ESS_butterfly; +_class_ESS_butterfly _Source_var; +#pragma acc declare create ( _Source_var ) + +_class_Arm _Start_of_bi_var; +#pragma acc declare create ( _Start_of_bi_var ) + +/* component bi=bi_spec_ellipse() [5] DECLARE */ +/* Parameter definition for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse_parameters { + /* Component type 'bi_spec_ellipse' setting parameters */ + MCNUM xheight; + MCNUM ywidth; + MCNUM zlength; + MCNUM n_mirror; + MCNUM tilt; + MCNUM n_pieces; + MCNUM angular_offset; + MCNUM m; + MCNUM R0_m; + MCNUM Qc_m; + MCNUM alpha_mirror_m; + MCNUM W_m; + MCNUM transmit; + MCNUM d_focus_1_x; + MCNUM d_focus_2_x; + MCNUM d_focus_1_y; + MCNUM d_focus_2_y; + MCNUM ell_l; + MCNUM ell_h; + MCNUM ell_w; + MCNUM ell_m; + MCNUM R0; + MCNUM Qc; + MCNUM alpha_mirror; + MCNUM W; + MCNUM cut; + MCNUM substrate; + char reflect_mirror[16384]; + char reflect[16384]; + /* Component type 'bi_spec_ellipse' private parameters */ + t_Table pTable; +}; /* _struct_bi_spec_ellipse_parameters */ +typedef struct _struct_bi_spec_ellipse_parameters _class_bi_spec_ellipse_parameters; + +/* Parameters for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse { + char _name[256]; /* e.g. bi */ + char _type[256]; /* bi_spec_ellipse */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_bi_spec_ellipse_parameters _parameters; +}; +typedef struct _struct_bi_spec_ellipse _class_bi_spec_ellipse; +_class_bi_spec_ellipse _bi_var; +#pragma acc declare create ( _bi_var ) + +_class_Arm _End_of_bi_var; +#pragma acc declare create ( _End_of_bi_var ) + +/* component NBOA_drawing_1_end=Guide_four_side() [7] DECLARE */ +/* Parameter definition for component type 'Guide_four_side' */ +struct _struct_Guide_four_side_parameters { + /* Component type 'Guide_four_side' setting parameters */ + char RIreflect[16384]; + char LIreflect[16384]; + char UIreflect[16384]; + char DIreflect[16384]; + char ROreflect[16384]; + char LOreflect[16384]; + char UOreflect[16384]; + char DOreflect[16384]; + MCNUM w1l; + MCNUM w2l; + MCNUM linwl; + MCNUM loutwl; + MCNUM w1r; + MCNUM w2r; + MCNUM linwr; + MCNUM loutwr; + MCNUM h1u; + MCNUM h2u; + MCNUM linhu; + MCNUM louthu; + MCNUM h1d; + MCNUM h2d; + MCNUM linhd; + MCNUM louthd; + MCNUM l; + MCNUM R0; + MCNUM Qcxl; + MCNUM Qcxr; + MCNUM Qcyu; + MCNUM Qcyd; + MCNUM alphaxl; + MCNUM alphaxr; + MCNUM alphayu; + MCNUM alphayd; + MCNUM Wxr; + MCNUM Wxl; + MCNUM Wyu; + MCNUM Wyd; + MCNUM mxr; + MCNUM mxl; + MCNUM myu; + MCNUM myd; + MCNUM QcxrOW; + MCNUM QcxlOW; + MCNUM QcyuOW; + MCNUM QcydOW; + MCNUM alphaxlOW; + MCNUM alphaxrOW; + MCNUM alphayuOW; + MCNUM alphaydOW; + MCNUM WxrOW; + MCNUM WxlOW; + MCNUM WyuOW; + MCNUM WydOW; + MCNUM mxrOW; + MCNUM mxlOW; + MCNUM myuOW; + MCNUM mydOW; + MCNUM rwallthick; + MCNUM lwallthick; + MCNUM uwallthick; + MCNUM dwallthick; + /* Component type 'Guide_four_side' private parameters */ + double w1rwt; + double w1lwt; + double h1uwt; + double h1dwt; + double w2rwt; + double w2lwt; + double h2uwt; + double h2dwt; + double pawr; + double pawl; + double pbwr; + double pbwl; + double pahu; + double pahd; + double pbhu; + double pbhd; + double awl; + double bwl; + double awr; + double bwr; + double ahu; + double bhu; + double ahd; + double bhd; + double awlwt; + double bwlwt; + double awrwt; + double bwrwt; + double ahuwt; + double bhuwt; + double ahdwt; + double bhdwt; + double pawrwt; + double pawlwt; + double pbwrwt; + double pbwlwt; + double pahuwt; + double pahdwt; + double pbhuwt; + double pbhdwt; + double a2wlwt; + double b2wlwt; + double a2wrwt; + double b2wrwt; + double a2huwt; + double b2huwt; + double a2hdwt; + double b2hdwt; + double a2wl; + double b2wl; + double a2wr; + double b2wr; + double a2hu; + double b2hu; + double a2hd; + double b2hd; + double mru1; + double mru2; + double nru1; + double nru2; + double mrd1; + double mrd2; + double nrd1; + double nrd2; + double mlu1; + double mlu2; + double nlu1; + double nlu2; + double mld1; + double mld2; + double nld1; + double nld2; + double z0wr; + double z0wl; + double z0hu; + double z0hd; + double p2parawr; + double p2parawl; + double p2parahu; + double p2parahd; + double p2parawrwt; + double p2parawlwt; + double p2parahuwt; + double p2parahdwt; + t_Table riTable; + t_Table liTable; + t_Table uiTable; + t_Table diTable; + t_Table roTable; + t_Table loTable; + t_Table uoTable; + t_Table doTable; +}; /* _struct_Guide_four_side_parameters */ +typedef struct _struct_Guide_four_side_parameters _class_Guide_four_side_parameters; + +/* Parameters for component type 'Guide_four_side' */ +struct _struct_Guide_four_side { + char _name[256]; /* e.g. NBOA_drawing_1_end */ + char _type[256]; /* Guide_four_side */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Guide_four_side_parameters _parameters; +}; +typedef struct _struct_Guide_four_side _class_Guide_four_side; +_class_Guide_four_side _NBOA_drawing_1_end_var; +#pragma acc declare create ( _NBOA_drawing_1_end_var ) + +_class_Guide_four_side _g1a2_var; +#pragma acc declare create ( _g1a2_var ) + +_class_Guide_four_side _g1a3_var; +#pragma acc declare create ( _g1a3_var ) + +_class_Guide_four_side _g1b1_var; +#pragma acc declare create ( _g1b1_var ) + +_class_Guide_four_side _g1c1_var; +#pragma acc declare create ( _g1c1_var ) + +_class_Arm _wfm_position_var; +#pragma acc declare create ( _wfm_position_var ) + +_class_Arm _wfm_1_position_var; +#pragma acc declare create ( _wfm_1_position_var ) + +/* component wfmc_1=MultiDiskChopper() [14] DECLARE */ +/* Parameter definition for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper_parameters { + /* Component type 'MultiDiskChopper' setting parameters */ + char slit_center[16384]; + char slit_width[16384]; + MCNUM nslits; + MCNUM delta_y; + MCNUM nu; + MCNUM nrev; + MCNUM ratio; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM phase; + MCNUM radius; + MCNUM equal; + MCNUM abs_out; + MCNUM verbose; + /* Component type 'MultiDiskChopper' private parameters */ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +}; /* _struct_MultiDiskChopper_parameters */ +typedef struct _struct_MultiDiskChopper_parameters _class_MultiDiskChopper_parameters; + +/* Parameters for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper { + char _name[256]; /* e.g. wfmc_1 */ + char _type[256]; /* MultiDiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_MultiDiskChopper_parameters _parameters; +}; +typedef struct _struct_MultiDiskChopper _class_MultiDiskChopper; +_class_MultiDiskChopper _wfmc_1_var; +#pragma acc declare create ( _wfmc_1_var ) + +/* component pinhole_1=Slit() [15] DECLARE */ +/* Parameter definition for component type 'Slit' */ +struct _struct_Slit_parameters { + /* Component type 'Slit' setting parameters */ + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM radius; + MCNUM xwidth; + MCNUM yheight; + /* Component type 'Slit' private parameters */ + char isradial; +}; /* _struct_Slit_parameters */ +typedef struct _struct_Slit_parameters _class_Slit_parameters; + +/* Parameters for component type 'Slit' */ +struct _struct_Slit { + char _name[256]; /* e.g. pinhole_1 */ + char _type[256]; /* Slit */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Slit_parameters _parameters; +}; +typedef struct _struct_Slit _class_Slit; +_class_Slit _pinhole_1_var; +#pragma acc declare create ( _pinhole_1_var ) + +_class_Arm _wfm_2_position_var; +#pragma acc declare create ( _wfm_2_position_var ) + +_class_MultiDiskChopper _wfmc_2_var; +#pragma acc declare create ( _wfmc_2_var ) + +_class_Guide_four_side _g2a1_var; +#pragma acc declare create ( _g2a1_var ) + +_class_Arm _monitor_1_position_var; +#pragma acc declare create ( _monitor_1_position_var ) + +_class_Guide_four_side _g2a2_var; +#pragma acc declare create ( _g2a2_var ) + +_class_Arm _fo1_position_var; +#pragma acc declare create ( _fo1_position_var ) + +_class_MultiDiskChopper _fo_chopper_1_var; +#pragma acc declare create ( _fo_chopper_1_var ) + +_class_Arm _bp1_position_var; +#pragma acc declare create ( _bp1_position_var ) + +/* component bp1_chopper=DiskChopper() [24] DECLARE */ +/* Parameter definition for component type 'DiskChopper' */ +struct _struct_DiskChopper_parameters { + /* Component type 'DiskChopper' setting parameters */ + MCNUM theta_0; + MCNUM radius; + MCNUM yheight; + MCNUM nu; + MCNUM nslit; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM n_pulse; + MCNUM abs_out; + MCNUM phase; + MCNUM xwidth; + MCNUM verbose; + /* Component type 'DiskChopper' private parameters */ + double Tg; + double To; + double delta_y; + double height; + double omega; +}; /* _struct_DiskChopper_parameters */ +typedef struct _struct_DiskChopper_parameters _class_DiskChopper_parameters; + +/* Parameters for component type 'DiskChopper' */ +struct _struct_DiskChopper { + char _name[256]; /* e.g. bp1_chopper */ + char _type[256]; /* DiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_DiskChopper_parameters _parameters; +}; +typedef struct _struct_DiskChopper _class_DiskChopper; +_class_DiskChopper _bp1_chopper_var; +#pragma acc declare create ( _bp1_chopper_var ) + +_class_Guide_four_side _g2b1_var; +#pragma acc declare create ( _g2b1_var ) + +_class_Guide_four_side _g2b2_var; +#pragma acc declare create ( _g2b2_var ) + +_class_Guide_four_side _g2b3_var; +#pragma acc declare create ( _g2b3_var ) + +_class_Guide_four_side _g2b4_var; +#pragma acc declare create ( _g2b4_var ) + +_class_Arm _fo2_position_var; +#pragma acc declare create ( _fo2_position_var ) + +_class_MultiDiskChopper _fo_chopper_2_var; +#pragma acc declare create ( _fo_chopper_2_var ) + +_class_Arm _bp2_position_var; +#pragma acc declare create ( _bp2_position_var ) + +_class_DiskChopper _bp_chopper2_var; +#pragma acc declare create ( _bp_chopper2_var ) + +_class_Guide_four_side _g2c1_var; +#pragma acc declare create ( _g2c1_var ) + +_class_Arm _t0_start_position_var; +#pragma acc declare create ( _t0_start_position_var ) + +_class_DiskChopper _t0_chopper_alpha_var; +#pragma acc declare create ( _t0_chopper_alpha_var ) + +_class_Arm _t0_end_position_var; +#pragma acc declare create ( _t0_end_position_var ) + +_class_DiskChopper _t0_chopper_beta_var; +#pragma acc declare create ( _t0_chopper_beta_var ) + +_class_Guide_four_side _g3a1_var; +#pragma acc declare create ( _g3a1_var ) + +_class_Guide_four_side _g3a2_var; +#pragma acc declare create ( _g3a2_var ) + +_class_Arm _fo3_position_var; +#pragma acc declare create ( _fo3_position_var ) + +_class_MultiDiskChopper _fo_chopper_3_var; +#pragma acc declare create ( _fo_chopper_3_var ) + +_class_Guide_four_side _g3b1_var; +#pragma acc declare create ( _g3b1_var ) + +_class_Guide_four_side _g4a1_var; +#pragma acc declare create ( _g4a1_var ) + +_class_Arm _monitor_2_position_var; +#pragma acc declare create ( _monitor_2_position_var ) + +_class_Guide_four_side _g4a2_var; +#pragma acc declare create ( _g4a2_var ) + +_class_Guide_four_side _g4a3_var; +#pragma acc declare create ( _g4a3_var ) + +_class_Arm _fo4_position_var; +#pragma acc declare create ( _fo4_position_var ) + +_class_MultiDiskChopper _fo_chopper_4_var; +#pragma acc declare create ( _fo_chopper_4_var ) + +_class_Guide_four_side _g4b1_var; +#pragma acc declare create ( _g4b1_var ) + +_class_Guide_four_side _g4b2_var; +#pragma acc declare create ( _g4b2_var ) + +_class_Guide_four_side _g4b3_var; +#pragma acc declare create ( _g4b3_var ) + +_class_Guide_four_side _g4b4_var; +#pragma acc declare create ( _g4b4_var ) + +_class_Guide_four_side _g4b5_var; +#pragma acc declare create ( _g4b5_var ) + +_class_Guide_four_side _g4b6_var; +#pragma acc declare create ( _g4b6_var ) + +_class_Guide_four_side _g5a1_var; +#pragma acc declare create ( _g5a1_var ) + +_class_Arm _fo5_position_var; +#pragma acc declare create ( _fo5_position_var ) + +_class_MultiDiskChopper _fo_chopper_5_var; +#pragma acc declare create ( _fo_chopper_5_var ) + +_class_Guide_four_side _g5b1_var; +#pragma acc declare create ( _g5b1_var ) + +_class_Guide_four_side _g5b2_var; +#pragma acc declare create ( _g5b2_var ) + +_class_Guide_four_side _g5b3_var; +#pragma acc declare create ( _g5b3_var ) + +_class_Guide_four_side _g5b4_var; +#pragma acc declare create ( _g5b4_var ) + +_class_Guide_four_side _g5b5_var; +#pragma acc declare create ( _g5b5_var ) + +_class_Guide_four_side _g5b6_var; +#pragma acc declare create ( _g5b6_var ) + +_class_Guide_four_side _g6a1_var; +#pragma acc declare create ( _g6a1_var ) + +_class_Guide_four_side _g6a2_var; +#pragma acc declare create ( _g6a2_var ) + +_class_Guide_four_side _g6a3_var; +#pragma acc declare create ( _g6a3_var ) + +_class_Arm _guide_end_var; +#pragma acc declare create ( _guide_end_var ) + +_class_Arm _monitor_3_position_var; +#pragma acc declare create ( _monitor_3_position_var ) + +_class_Arm _start_backend_var; +#pragma acc declare create ( _start_backend_var ) + +_class_Arm _optical_axis_backend_var; +#pragma acc declare create ( _optical_axis_backend_var ) + +_class_Slit _pinhole_2_var; +#pragma acc declare create ( _pinhole_2_var ) + +/* component graph=Graphite_Diffuser() [72] DECLARE */ +/* Parameter definition for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser_parameters { + /* Component type 'Graphite_Diffuser' setting parameters */ + MCNUM xwidth; + MCNUM ywidth; + MCNUM thick; + MCNUM abs; +}; /* _struct_Graphite_Diffuser_parameters */ +typedef struct _struct_Graphite_Diffuser_parameters _class_Graphite_Diffuser_parameters; + +/* Parameters for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser { + char _name[256]; /* e.g. graph */ + char _type[256]; /* Graphite_Diffuser */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Graphite_Diffuser_parameters _parameters; +}; +typedef struct _struct_Graphite_Diffuser _class_Graphite_Diffuser; +_class_Graphite_Diffuser _graph_var; +#pragma acc declare create ( _graph_var ) + +_class_Arm _sample_monitor_arm_var; +#pragma acc declare create ( _sample_monitor_arm_var ) + +/* component sample_PSD=Monitor_nD() [74] DECLARE */ +/* Parameter definition for component type 'Monitor_nD' */ +struct _struct_Monitor_nD_parameters { + /* Component type 'Monitor_nD' setting parameters */ + char user1[16384]; + char user2[16384]; + char user3[16384]; + MCNUM xwidth; + MCNUM yheight; + MCNUM zdepth; + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM zmin; + MCNUM zmax; + int bins; + MCNUM min; + MCNUM max; + int restore_neutron; + MCNUM radius; + char options[16384]; + char filename[16384]; + char geometry[16384]; + int nowritefile; + char username1[16384]; + char username2[16384]; + char username3[16384]; + /* Component type 'Monitor_nD' private parameters */ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +}; /* _struct_Monitor_nD_parameters */ +typedef struct _struct_Monitor_nD_parameters _class_Monitor_nD_parameters; + +/* Parameters for component type 'Monitor_nD' */ +struct _struct_Monitor_nD { + char _name[256]; /* e.g. sample_PSD */ + char _type[256]; /* Monitor_nD */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Monitor_nD_parameters _parameters; +}; +typedef struct _struct_Monitor_nD _class_Monitor_nD; +_class_Monitor_nD _sample_PSD_var; +#pragma acc declare create ( _sample_PSD_var ) + +_class_Monitor_nD _profile_x_var; +#pragma acc declare create ( _profile_x_var ) + +_class_Monitor_nD _profile_y_var; +#pragma acc declare create ( _profile_y_var ) + +_class_Monitor_nD _wavelength_var; +#pragma acc declare create ( _wavelength_var ) + +_class_Monitor_nD _tof_var; +#pragma acc declare create ( _tof_var ) + +_class_Monitor_nD _wavelength_tof_var; +#pragma acc declare create ( _wavelength_tof_var ) + +_class_Arm _sample_position_var; +#pragma acc declare create ( _sample_position_var ) + +int mcNUMCOMP = 80; + +/* User declarations from instrument definition. Can define functions. */ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap + +#undef compcurname +#undef compcurtype +#undef compcurindex +/* end of instrument 'ODIN_baseline' and components DECLARE */ + +/* ***************************************************************************** +* instrument 'ODIN_baseline' and components INITIALISE +***************************************************************************** */ + +double index_getdistance(int first_index, int second_index) +/* Calculate the distance two components from their indexes*/ +{ + return coords_len(coords_sub(POS_A_COMP_INDEX(first_index), POS_A_COMP_INDEX(second_index))); +} + +double getdistance(char* first_component, char* second_component) +/* Calculate the distance between two named components */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + return index_getdistance(first_index, second_index); +} + +double checked_setpos_getdistance(int current_index, char* first_component, char* second_component) +/* Calculate the distance between two named components at *_setpos() time, with component index checking */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + if (first_index >= current_index || second_index >= current_index) { + printf("setpos_getdistance can only be used with the names of components before the current one!\n"); + return 0; + } + return index_getdistance(first_index, second_index); +} +#define setpos_getdistance(first, second) checked_setpos_getdistance(current_setpos_index, first, second) + +/* component Origin=Progress_bar() SETTING, POSITION/ROTATION */ +int _Origin_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Origin_setpos] component Origin=Progress_bar() SETTING [Progress_bar:0]"); + stracpy(_Origin_var._name, "Origin", 16384); + stracpy(_Origin_var._type, "Progress_bar", 16384); + _Origin_var._index=1; + int current_setpos_index = 1; + if("NULL" && strlen("NULL")) + stracpy(_Origin_var._parameters.profile, "NULL" ? "NULL" : "", 16384); + else + _Origin_var._parameters.profile[0]='\0'; + _Origin_var._parameters.percent = 10; + _Origin_var._parameters.flag_save = 0; + _Origin_var._parameters.minutes = 0; + + + /* component Origin=Progress_bar() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(_Origin_var._rotation_absolute, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_copy(_Origin_var._rotation_relative, _Origin_var._rotation_absolute); + _Origin_var._rotation_is_identity = rot_test_identity(_Origin_var._rotation_relative); + _Origin_var._position_absolute = coords_set( + 0, 0, 0); + tc1 = coords_neg(_Origin_var._position_absolute); + _Origin_var._position_relative = rot_apply(_Origin_var._rotation_absolute, tc1); + } /* Origin=Progress_bar() AT ROTATED */ + DEBUG_COMPONENT("Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute); + instrument->_position_absolute[1] = _Origin_var._position_absolute; + instrument->_position_relative[1] = _Origin_var._position_relative; + _Origin_var._position_relative_is_zero = coords_test_zero(_Origin_var._position_relative); + instrument->counter_N[1] = instrument->counter_P[1] = instrument->counter_P2[1] = 0; + instrument->counter_AbsorbProp[1]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0000_Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute, "Progress_bar"); + mccomp_param_nexus(nxhandle,"0000_Origin", "profile", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0000_Origin", "percent", "10", "10","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "flag_save", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "minutes", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Origin_setpos */ + +/* component optical_axis=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_setpos] component optical_axis=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_var._name, "optical_axis", 16384); + stracpy(_optical_axis_var._type, "Arm", 16384); + _optical_axis_var._index=2; + int current_setpos_index = 2; + /* component optical_axis=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Origin_var._rotation_absolute, _optical_axis_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_optical_axis_var._rotation_absolute, tr1, _optical_axis_var._rotation_relative); + _optical_axis_var._rotation_is_identity = rot_test_identity(_optical_axis_var._rotation_relative); + tc1 = coords_set( + 0.026, 0, 0); + rot_transpose(_Origin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _optical_axis_var._position_absolute); + _optical_axis_var._position_relative = rot_apply(_optical_axis_var._rotation_absolute, tc1); + } /* optical_axis=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute); + instrument->_position_absolute[2] = _optical_axis_var._position_absolute; + instrument->_position_relative[2] = _optical_axis_var._position_relative; + _optical_axis_var._position_relative_is_zero = coords_test_zero(_optical_axis_var._position_relative); + instrument->counter_N[2] = instrument->counter_P[2] = instrument->counter_P2[2] = 0; + instrument->counter_AbsorbProp[2]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0001_optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_setpos */ + +/* component Source=ESS_butterfly() SETTING, POSITION/ROTATION */ +int _Source_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Source_setpos] component Source=ESS_butterfly() SETTING [ESS_butterfly:0]"); + stracpy(_Source_var._name, "Source", 16384); + stracpy(_Source_var._type, "ESS_butterfly", 16384); + _Source_var._index=3; + int current_setpos_index = 3; + if("S" && strlen("S")) + stracpy(_Source_var._parameters.sector, "S" ? "S" : "", 16384); + else + _Source_var._parameters.sector[0]='\0'; + _Source_var._parameters.beamline = 2; + _Source_var._parameters.yheight = 0.03; + _Source_var._parameters.cold_frac = 0.5; + _Source_var._parameters.target_index = 1; + _Source_var._parameters.dist = 0; + _Source_var._parameters.focus_xw = 0.0576862; + _Source_var._parameters.focus_yh = 0.0464308; + _Source_var._parameters.c_performance = 1; + _Source_var._parameters.t_performance = 1; + _Source_var._parameters.Lmin = _instrument_var._parameters.l_min; + _Source_var._parameters.Lmax = _instrument_var._parameters.l_max; + _Source_var._parameters.tmax_multiplier = 3; + _Source_var._parameters.n_pulses = _instrument_var._parameters.n_pulses; + _Source_var._parameters.acc_power = 2.0; + _Source_var._parameters.tfocus_dist = 0; + _Source_var._parameters.tfocus_time = 0; + _Source_var._parameters.tfocus_width = 0; + + + /* component Source=ESS_butterfly() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Origin_var._rotation_absolute, _Source_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_Source_var._rotation_absolute, tr1, _Source_var._rotation_relative); + _Source_var._rotation_is_identity = rot_test_identity(_Source_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Origin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Source_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _Source_var._position_absolute); + _Source_var._position_relative = rot_apply(_Source_var._rotation_absolute, tc1); + } /* Source=ESS_butterfly() AT ROTATED */ + DEBUG_COMPONENT("Source", _Source_var._position_absolute, _Source_var._rotation_absolute); + instrument->_position_absolute[3] = _Source_var._position_absolute; + instrument->_position_relative[3] = _Source_var._position_relative; + _Source_var._position_relative_is_zero = coords_test_zero(_Source_var._position_relative); + instrument->counter_N[3] = instrument->counter_P[3] = instrument->counter_P2[3] = 0; + instrument->counter_AbsorbProp[3]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0002_Source", _Source_var._position_absolute, _Source_var._rotation_absolute, "ESS_butterfly"); + mccomp_param_nexus(nxhandle,"0002_Source", "sector", "N", "S", "char*"); + mccomp_param_nexus(nxhandle,"0002_Source", "beamline", "1", "2","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "yheight", "0.03", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "cold_frac", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "target_index", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "focus_xw", "0", "0.0576862","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "focus_yh", "0", "0.0464308","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "c_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "t_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "Lmin", "NONE", "_instrument_var._parameters.l_min","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "Lmax", "NONE", "_instrument_var._parameters.l_max","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tmax_multiplier", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "n_pulses", "1", "_instrument_var._parameters.n_pulses","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "acc_power", "5", "2.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_time", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_width", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Source_setpos */ + +/* component Start_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _Start_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Start_of_bi_setpos] component Start_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_Start_of_bi_var._name, "Start_of_bi", 16384); + stracpy(_Start_of_bi_var._type, "Arm", 16384); + _Start_of_bi_var._index=4; + int current_setpos_index = 4; + /* component Start_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _Start_of_bi_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_Start_of_bi_var._rotation_absolute, tr1, _Start_of_bi_var._rotation_relative); + _Start_of_bi_var._rotation_is_identity = rot_test_identity(_Start_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 2.0306); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Start_of_bi_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _Start_of_bi_var._position_absolute); + _Start_of_bi_var._position_relative = rot_apply(_Start_of_bi_var._rotation_absolute, tc1); + } /* Start_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute); + instrument->_position_absolute[4] = _Start_of_bi_var._position_absolute; + instrument->_position_relative[4] = _Start_of_bi_var._position_relative; + _Start_of_bi_var._position_relative_is_zero = coords_test_zero(_Start_of_bi_var._position_relative); + instrument->counter_N[4] = instrument->counter_P[4] = instrument->counter_P2[4] = 0; + instrument->counter_AbsorbProp[4]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0003_Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Start_of_bi_setpos */ + +/* component bi=bi_spec_ellipse() SETTING, POSITION/ROTATION */ +int _bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bi_setpos] component bi=bi_spec_ellipse() SETTING [bi_spec_ellipse:0]"); + stracpy(_bi_var._name, "bi", 16384); + stracpy(_bi_var._type, "bi_spec_ellipse", 16384); + _bi_var._index=5; + int current_setpos_index = 5; + _bi_var._parameters.xheight = 0.044795; + _bi_var._parameters.ywidth = 0.033273; + _bi_var._parameters.zlength = 0.3; + _bi_var._parameters.n_mirror = 0; + _bi_var._parameters.tilt = 0.7355449343006287; + _bi_var._parameters.n_pieces = 1; + _bi_var._parameters.angular_offset = 0.0274924630093546; + _bi_var._parameters.m = 4; + _bi_var._parameters.R0_m = 0.99; + _bi_var._parameters.Qc_m = 0.0217; + _bi_var._parameters.alpha_mirror_m = 2.5; + _bi_var._parameters.W_m = 0.015; + _bi_var._parameters.transmit = 1; + _bi_var._parameters.d_focus_1_x = 3.443249331959489; + _bi_var._parameters.d_focus_2_x = 4.946749331959489; + _bi_var._parameters.d_focus_1_y = 1.9037386467676676; + _bi_var._parameters.d_focus_2_y = 33.78623864676767; + _bi_var._parameters.ell_l = 0.31; + _bi_var._parameters.ell_h = 0.04381396598275876; + _bi_var._parameters.ell_w = 0.03326371014826339; + _bi_var._parameters.ell_m = 4; + _bi_var._parameters.R0 = 0.99; + _bi_var._parameters.Qc = 0.0217; + _bi_var._parameters.alpha_mirror = 2.5; + _bi_var._parameters.W = 0.0015; + _bi_var._parameters.cut = 3; + _bi_var._parameters.substrate = 0; + _bi_var._parameters.reflect_mirror[0]='\0'; + _bi_var._parameters.reflect[0]='\0'; + + + /* component bi=bi_spec_ellipse() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _Start_of_bi_var._rotation_absolute, _bi_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_bi_var._rotation_absolute, tr1, _bi_var._rotation_relative); + _bi_var._rotation_is_identity = rot_test_identity(_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Start_of_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bi_var._position_absolute = coords_add(_Start_of_bi_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _bi_var._position_absolute); + _bi_var._position_relative = rot_apply(_bi_var._rotation_absolute, tc1); + } /* bi=bi_spec_ellipse() AT ROTATED */ + DEBUG_COMPONENT("bi", _bi_var._position_absolute, _bi_var._rotation_absolute); + instrument->_position_absolute[5] = _bi_var._position_absolute; + instrument->_position_relative[5] = _bi_var._position_relative; + _bi_var._position_relative_is_zero = coords_test_zero(_bi_var._position_relative); + instrument->counter_N[5] = instrument->counter_P[5] = instrument->counter_P2[5] = 0; + instrument->counter_AbsorbProp[5]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0004_bi", _bi_var._position_absolute, _bi_var._rotation_absolute, "bi_spec_ellipse"); + mccomp_param_nexus(nxhandle,"0004_bi", "xheight", "NONE", "0.044795","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ywidth", "NONE", "0.033273","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "zlength", "NONE", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "n_mirror", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "tilt", "0.5", "0.7355449343006287","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "n_pieces", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "angular_offset", "0", "0.0274924630093546","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "R0_m", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "Qc_m", "0.021", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "alpha_mirror_m", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "W_m", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "transmit", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_1_x", "2.5", "3.443249331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_2_x", "5", "4.946749331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_1_y", "2.5", "1.9037386467676676","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_2_y", "5", "33.78623864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_l", "3", "0.31","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_h", "0", "0.04381396598275876","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_w", "0", "0.03326371014826339","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "Qc", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "alpha_mirror", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "W", "0.003", "0.0015","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "cut", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "substrate", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "reflect_mirror", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0004_bi", "reflect", 0, 0, "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bi_setpos */ + +/* component End_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _End_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_End_of_bi_setpos] component End_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_End_of_bi_var._name, "End_of_bi", 16384); + stracpy(_End_of_bi_var._type, "Arm", 16384); + _End_of_bi_var._index=6; + int current_setpos_index = 6; + /* component End_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (-180)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _End_of_bi_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_End_of_bi_var._rotation_absolute, tr1, _End_of_bi_var._rotation_relative); + _End_of_bi_var._rotation_is_identity = rot_test_identity(_End_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _End_of_bi_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _End_of_bi_var._position_absolute); + _End_of_bi_var._position_relative = rot_apply(_End_of_bi_var._rotation_absolute, tc1); + } /* End_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute); + instrument->_position_absolute[6] = _End_of_bi_var._position_absolute; + instrument->_position_relative[6] = _End_of_bi_var._position_relative; + _End_of_bi_var._position_relative_is_zero = coords_test_zero(_End_of_bi_var._position_relative); + instrument->counter_N[6] = instrument->counter_P[6] = instrument->counter_P2[6] = 0; + instrument->counter_AbsorbProp[6]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0005_End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _End_of_bi_setpos */ + +/* component NBOA_drawing_1_end=Guide_four_side() SETTING, POSITION/ROTATION */ +int _NBOA_drawing_1_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_NBOA_drawing_1_end_setpos] component NBOA_drawing_1_end=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_NBOA_drawing_1_end_var._name, "NBOA_drawing_1_end", 16384); + stracpy(_NBOA_drawing_1_end_var._type, "Guide_four_side", 16384); + _NBOA_drawing_1_end_var._index=7; + int current_setpos_index = 7; + _NBOA_drawing_1_end_var._parameters.RIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.ROreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.w1l = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2l = 0.002; + _NBOA_drawing_1_end_var._parameters.linwl = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwl = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.w1r = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2r = 0.002; + _NBOA_drawing_1_end_var._parameters.linwr = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwr = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.h1u = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2u = 0.002; + _NBOA_drawing_1_end_var._parameters.linhu = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthu = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.h1d = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2d = 0.002; + _NBOA_drawing_1_end_var._parameters.linhd = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthd = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.l = 0.5488999999999999; + _NBOA_drawing_1_end_var._parameters.R0 = 0.99; + _NBOA_drawing_1_end_var._parameters.Qcxl = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcxr = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcyu = 0.023; + _NBOA_drawing_1_end_var._parameters.Qcyd = 0.023; + _NBOA_drawing_1_end_var._parameters.alphaxl = 2.5; + _NBOA_drawing_1_end_var._parameters.alphaxr = 2.5; + _NBOA_drawing_1_end_var._parameters.alphayu = 1.8; + _NBOA_drawing_1_end_var._parameters.alphayd = 1.8; + _NBOA_drawing_1_end_var._parameters.Wxr = 0.015; + _NBOA_drawing_1_end_var._parameters.Wxl = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyu = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyd = 0.015; + _NBOA_drawing_1_end_var._parameters.mxr = 4; + _NBOA_drawing_1_end_var._parameters.mxl = 4; + _NBOA_drawing_1_end_var._parameters.myu = 2; + _NBOA_drawing_1_end_var._parameters.myd = 2; + _NBOA_drawing_1_end_var._parameters.QcxrOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcxlOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcyuOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcydOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.alphaxlOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaxrOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphayuOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaydOW = 6.07; + _NBOA_drawing_1_end_var._parameters.WxrOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WxlOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WyuOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WydOW = 0.003; + _NBOA_drawing_1_end_var._parameters.mxrOW = 0; + _NBOA_drawing_1_end_var._parameters.mxlOW = 0; + _NBOA_drawing_1_end_var._parameters.myuOW = 0; + _NBOA_drawing_1_end_var._parameters.mydOW = 0; + _NBOA_drawing_1_end_var._parameters.rwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.lwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.uwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.dwallthick = 0.001; + + + /* component NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_NBOA_drawing_1_end_var._rotation_absolute, tr1, _NBOA_drawing_1_end_var._rotation_relative); + _NBOA_drawing_1_end_var._rotation_is_identity = rot_test_identity(_NBOA_drawing_1_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31000099999999997); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _NBOA_drawing_1_end_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _NBOA_drawing_1_end_var._position_absolute); + _NBOA_drawing_1_end_var._position_relative = rot_apply(_NBOA_drawing_1_end_var._rotation_absolute, tc1); + } /* NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + instrument->_position_absolute[7] = _NBOA_drawing_1_end_var._position_absolute; + instrument->_position_relative[7] = _NBOA_drawing_1_end_var._position_relative; + _NBOA_drawing_1_end_var._position_relative_is_zero = coords_test_zero(_NBOA_drawing_1_end_var._position_relative); + instrument->counter_N[7] = instrument->counter_P[7] = instrument->counter_P2[7] = 0; + instrument->counter_AbsorbProp[7]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0006_NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w1l", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linwl", "0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "loutwl", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w1r", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linwr", "0.0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "loutwr", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h1u", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linhu", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "louthu", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h1d", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linhd", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "louthd", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "l", "0", "0.5488999999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _NBOA_drawing_1_end_setpos */ + +/* component g1a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a2_setpos] component g1a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a2_var._name, "g1a2", 16384); + stracpy(_g1a2_var._type, "Guide_four_side", 16384); + _g1a2_var._index=8; + int current_setpos_index = 8; + _g1a2_var._parameters.RIreflect[0]='\0'; + _g1a2_var._parameters.LIreflect[0]='\0'; + _g1a2_var._parameters.UIreflect[0]='\0'; + _g1a2_var._parameters.DIreflect[0]='\0'; + _g1a2_var._parameters.ROreflect[0]='\0'; + _g1a2_var._parameters.LOreflect[0]='\0'; + _g1a2_var._parameters.UOreflect[0]='\0'; + _g1a2_var._parameters.DOreflect[0]='\0'; + _g1a2_var._parameters.w1l = 0.022397711974319966; + _g1a2_var._parameters.w2l = 0.002; + _g1a2_var._parameters.linwl = 4.303349331959489; + _g1a2_var._parameters.loutwl = 3.3968493319594883; + _g1a2_var._parameters.w1r = 0.022397711974319966; + _g1a2_var._parameters.w2r = 0.002; + _g1a2_var._parameters.linwr = 4.303349331959489; + _g1a2_var._parameters.loutwr = 3.3968493319594883; + _g1a2_var._parameters.h1u = 0.019790525295492974; + _g1a2_var._parameters.h2u = 0.002; + _g1a2_var._parameters.linhu = 2.763788626121542; + _g1a2_var._parameters.louthu = 32.236388626121546; + _g1a2_var._parameters.h1d = 0.019790525295492974; + _g1a2_var._parameters.h2d = 0.002; + _g1a2_var._parameters.linhd = 2.763788626121542; + _g1a2_var._parameters.louthd = 32.236388626121546; + _g1a2_var._parameters.l = 0.9998; + _g1a2_var._parameters.R0 = 0.99; + _g1a2_var._parameters.Qcxl = 0.0217; + _g1a2_var._parameters.Qcxr = 0.0217; + _g1a2_var._parameters.Qcyu = 0.0217; + _g1a2_var._parameters.Qcyd = 0.0217; + _g1a2_var._parameters.alphaxl = 2.5; + _g1a2_var._parameters.alphaxr = 2.5; + _g1a2_var._parameters.alphayu = 2.5; + _g1a2_var._parameters.alphayd = 2.5; + _g1a2_var._parameters.Wxr = 0.015; + _g1a2_var._parameters.Wxl = 0.015; + _g1a2_var._parameters.Wyu = 0.015; + _g1a2_var._parameters.Wyd = 0.015; + _g1a2_var._parameters.mxr = 4; + _g1a2_var._parameters.mxl = 4; + _g1a2_var._parameters.myu = 4; + _g1a2_var._parameters.myd = 4; + _g1a2_var._parameters.QcxrOW = 0.0217; + _g1a2_var._parameters.QcxlOW = 0.0217; + _g1a2_var._parameters.QcyuOW = 0.0217; + _g1a2_var._parameters.QcydOW = 0.0217; + _g1a2_var._parameters.alphaxlOW = 6.07; + _g1a2_var._parameters.alphaxrOW = 6.07; + _g1a2_var._parameters.alphayuOW = 6.07; + _g1a2_var._parameters.alphaydOW = 6.07; + _g1a2_var._parameters.WxrOW = 0.003; + _g1a2_var._parameters.WxlOW = 0.003; + _g1a2_var._parameters.WyuOW = 0.003; + _g1a2_var._parameters.WydOW = 0.003; + _g1a2_var._parameters.mxrOW = 0; + _g1a2_var._parameters.mxlOW = 0; + _g1a2_var._parameters.myuOW = 0; + _g1a2_var._parameters.mydOW = 0; + _g1a2_var._parameters.rwallthick = 0.001; + _g1a2_var._parameters.lwallthick = 0.001; + _g1a2_var._parameters.uwallthick = 0.001; + _g1a2_var._parameters.dwallthick = 0.001; + + + /* component g1a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _NBOA_drawing_1_end_var._rotation_absolute, _g1a2_var._rotation_absolute); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + rot_mul(_g1a2_var._rotation_absolute, tr1, _g1a2_var._rotation_relative); + _g1a2_var._rotation_is_identity = rot_test_identity(_g1a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.548901); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a2_var._position_absolute = coords_add(_NBOA_drawing_1_end_var._position_absolute, tc2); + tc1 = coords_sub(_NBOA_drawing_1_end_var._position_absolute, _g1a2_var._position_absolute); + _g1a2_var._position_relative = rot_apply(_g1a2_var._rotation_absolute, tc1); + } /* g1a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute); + instrument->_position_absolute[8] = _g1a2_var._position_absolute; + instrument->_position_relative[8] = _g1a2_var._position_relative; + _g1a2_var._position_relative_is_zero = coords_test_zero(_g1a2_var._position_relative); + instrument->counter_N[8] = instrument->counter_P[8] = instrument->counter_P2[8] = 0; + instrument->counter_AbsorbProp[8]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0007_g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w1l", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linwl", "0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "loutwl", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w1r", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linwr", "0.0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "loutwr", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h1u", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linhu", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "louthu", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h1d", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linhd", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "louthd", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "l", "0", "0.9998","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a2_setpos */ + +/* component g1a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a3_setpos] component g1a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a3_var._name, "g1a3", 16384); + stracpy(_g1a3_var._type, "Guide_four_side", 16384); + _g1a3_var._index=9; + int current_setpos_index = 9; + _g1a3_var._parameters.RIreflect[0]='\0'; + _g1a3_var._parameters.LIreflect[0]='\0'; + _g1a3_var._parameters.UIreflect[0]='\0'; + _g1a3_var._parameters.DIreflect[0]='\0'; + _g1a3_var._parameters.ROreflect[0]='\0'; + _g1a3_var._parameters.LOreflect[0]='\0'; + _g1a3_var._parameters.UOreflect[0]='\0'; + _g1a3_var._parameters.DOreflect[0]='\0'; + _g1a3_var._parameters.w1l = 0.021853309009560024; + _g1a3_var._parameters.w2l = 0.002; + _g1a3_var._parameters.linwl = 5.3043493319594885; + _g1a3_var._parameters.loutwl = 1.8968293319594889; + _g1a3_var._parameters.w1r = 0.021853309009560024; + _g1a3_var._parameters.w2r = 0.002; + _g1a3_var._parameters.linwr = 5.3043493319594885; + _g1a3_var._parameters.loutwr = 1.8968293319594889; + _g1a3_var._parameters.h1u = 0.02274764602619812; + _g1a3_var._parameters.h2u = 0.002; + _g1a3_var._parameters.linhu = 3.7648386261215414; + _g1a3_var._parameters.louthu = 30.73631862612154; + _g1a3_var._parameters.h1d = 0.02274764602619812; + _g1a3_var._parameters.h2d = 0.002; + _g1a3_var._parameters.linhd = 3.7648386261215414; + _g1a3_var._parameters.louthd = 30.73631862612154; + _g1a3_var._parameters.l = 1.49882; + _g1a3_var._parameters.R0 = 0.99; + _g1a3_var._parameters.Qcxl = 0.0217; + _g1a3_var._parameters.Qcxr = 0.0217; + _g1a3_var._parameters.Qcyu = 0.0217; + _g1a3_var._parameters.Qcyd = 0.0217; + _g1a3_var._parameters.alphaxl = 2.5; + _g1a3_var._parameters.alphaxr = 2.5; + _g1a3_var._parameters.alphayu = 2.5; + _g1a3_var._parameters.alphayd = 2.5; + _g1a3_var._parameters.Wxr = 0.015; + _g1a3_var._parameters.Wxl = 0.015; + _g1a3_var._parameters.Wyu = 0.015; + _g1a3_var._parameters.Wyd = 0.015; + _g1a3_var._parameters.mxr = 4; + _g1a3_var._parameters.mxl = 4; + _g1a3_var._parameters.myu = 4; + _g1a3_var._parameters.myd = 4; + _g1a3_var._parameters.QcxrOW = 0.0217; + _g1a3_var._parameters.QcxlOW = 0.0217; + _g1a3_var._parameters.QcyuOW = 0.0217; + _g1a3_var._parameters.QcydOW = 0.0217; + _g1a3_var._parameters.alphaxlOW = 6.07; + _g1a3_var._parameters.alphaxrOW = 6.07; + _g1a3_var._parameters.alphayuOW = 6.07; + _g1a3_var._parameters.alphaydOW = 6.07; + _g1a3_var._parameters.WxrOW = 0.003; + _g1a3_var._parameters.WxlOW = 0.003; + _g1a3_var._parameters.WyuOW = 0.003; + _g1a3_var._parameters.WydOW = 0.003; + _g1a3_var._parameters.mxrOW = 0; + _g1a3_var._parameters.mxlOW = 0; + _g1a3_var._parameters.myuOW = 0; + _g1a3_var._parameters.mydOW = 0; + _g1a3_var._parameters.rwallthick = 0.001; + _g1a3_var._parameters.lwallthick = 0.001; + _g1a3_var._parameters.uwallthick = 0.001; + _g1a3_var._parameters.dwallthick = 0.001; + + + /* component g1a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _g1a2_var._rotation_absolute, _g1a3_var._rotation_absolute); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + rot_mul(_g1a3_var._rotation_absolute, tr1, _g1a3_var._rotation_relative); + _g1a3_var._rotation_is_identity = rot_test_identity(_g1a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.999801); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a3_var._position_absolute = coords_add(_g1a2_var._position_absolute, tc2); + tc1 = coords_sub(_g1a2_var._position_absolute, _g1a3_var._position_absolute); + _g1a3_var._position_relative = rot_apply(_g1a3_var._rotation_absolute, tc1); + } /* g1a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute); + instrument->_position_absolute[9] = _g1a3_var._position_absolute; + instrument->_position_relative[9] = _g1a3_var._position_relative; + _g1a3_var._position_relative_is_zero = coords_test_zero(_g1a3_var._position_relative); + instrument->counter_N[9] = instrument->counter_P[9] = instrument->counter_P2[9] = 0; + instrument->counter_AbsorbProp[9]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0008_g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w1l", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linwl", "0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "loutwl", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w1r", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linwr", "0.0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "loutwr", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h1u", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linhu", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "louthu", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h1d", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linhd", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "louthd", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "l", "0", "1.49882","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a3_setpos */ + +/* component g1b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1b1_setpos] component g1b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1b1_var._name, "g1b1", 16384); + stracpy(_g1b1_var._type, "Guide_four_side", 16384); + _g1b1_var._index=10; + int current_setpos_index = 10; + _g1b1_var._parameters.RIreflect[0]='\0'; + _g1b1_var._parameters.LIreflect[0]='\0'; + _g1b1_var._parameters.UIreflect[0]='\0'; + _g1b1_var._parameters.DIreflect[0]='\0'; + _g1b1_var._parameters.ROreflect[0]='\0'; + _g1b1_var._parameters.LOreflect[0]='\0'; + _g1b1_var._parameters.UOreflect[0]='\0'; + _g1b1_var._parameters.DOreflect[0]='\0'; + _g1b1_var._parameters.w1l = 0.017955; + _g1b1_var._parameters.w2l = 0.002; + _g1b1_var._parameters.linwl = 6.82655; + _g1b1_var._parameters.loutwl = 1.3934509999999998; + _g1b1_var._parameters.w1r = 0.017955; + _g1b1_var._parameters.w2r = 0.002; + _g1b1_var._parameters.linwr = 6.82655; + _g1b1_var._parameters.loutwr = 1.3934509999999998; + _g1b1_var._parameters.h1u = 0.026565; + _g1b1_var._parameters.h2u = 0.002; + _g1b1_var._parameters.linhu = 5.2842144; + _g1b1_var._parameters.louthu = 30.232929999999996; + _g1b1_var._parameters.h1d = 0.026565; + _g1b1_var._parameters.h2d = 0.002; + _g1b1_var._parameters.linhd = 5.2842144; + _g1b1_var._parameters.louthd = 30.232929999999996; + _g1b1_var._parameters.l = 0.48300000000000054; + _g1b1_var._parameters.R0 = 0.99; + _g1b1_var._parameters.Qcxl = 0.0217; + _g1b1_var._parameters.Qcxr = 0.0217; + _g1b1_var._parameters.Qcyu = 0.0221; + _g1b1_var._parameters.Qcyd = 0.0221; + _g1b1_var._parameters.alphaxl = 2.5; + _g1b1_var._parameters.alphaxr = 2.5; + _g1b1_var._parameters.alphayu = 1.75; + _g1b1_var._parameters.alphayd = 1.75; + _g1b1_var._parameters.Wxr = 0.015; + _g1b1_var._parameters.Wxl = 0.015; + _g1b1_var._parameters.Wyu = 0.015; + _g1b1_var._parameters.Wyd = 0.015; + _g1b1_var._parameters.mxr = 4; + _g1b1_var._parameters.mxl = 4; + _g1b1_var._parameters.myu = 2.5; + _g1b1_var._parameters.myd = 2.5; + _g1b1_var._parameters.QcxrOW = 0.0217; + _g1b1_var._parameters.QcxlOW = 0.0217; + _g1b1_var._parameters.QcyuOW = 0.0217; + _g1b1_var._parameters.QcydOW = 0.0217; + _g1b1_var._parameters.alphaxlOW = 6.07; + _g1b1_var._parameters.alphaxrOW = 6.07; + _g1b1_var._parameters.alphayuOW = 6.07; + _g1b1_var._parameters.alphaydOW = 6.07; + _g1b1_var._parameters.WxrOW = 0.003; + _g1b1_var._parameters.WxlOW = 0.003; + _g1b1_var._parameters.WyuOW = 0.003; + _g1b1_var._parameters.WydOW = 0.003; + _g1b1_var._parameters.mxrOW = 0; + _g1b1_var._parameters.mxlOW = 0; + _g1b1_var._parameters.myuOW = 0; + _g1b1_var._parameters.mydOW = 0; + _g1b1_var._parameters.rwallthick = 0.001; + _g1b1_var._parameters.lwallthick = 0.001; + _g1b1_var._parameters.uwallthick = 0.001; + _g1b1_var._parameters.dwallthick = 0.001; + + + /* component g1b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1b1_var._rotation_absolute); + rot_transpose(_g1a3_var._rotation_absolute, tr1); + rot_mul(_g1b1_var._rotation_absolute, tr1, _g1b1_var._rotation_relative); + _g1b1_var._rotation_is_identity = rot_test_identity(_g1b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.4109); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1a3_var._position_absolute, _g1b1_var._position_absolute); + _g1b1_var._position_relative = rot_apply(_g1b1_var._rotation_absolute, tc1); + } /* g1b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute); + instrument->_position_absolute[10] = _g1b1_var._position_absolute; + instrument->_position_relative[10] = _g1b1_var._position_relative; + _g1b1_var._position_relative_is_zero = coords_test_zero(_g1b1_var._position_relative); + instrument->counter_N[10] = instrument->counter_P[10] = instrument->counter_P2[10] = 0; + instrument->counter_AbsorbProp[10]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0009_g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w1l", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linwl", "0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "loutwl", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w1r", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linwr", "0.0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "loutwr", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h1u", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linhu", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "louthu", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h1d", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linhd", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "louthd", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "l", "0", "0.48300000000000054","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1b1_setpos */ + +/* component g1c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1c1_setpos] component g1c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1c1_var._name, "g1c1", 16384); + stracpy(_g1c1_var._type, "Guide_four_side", 16384); + _g1c1_var._index=11; + int current_setpos_index = 11; + _g1c1_var._parameters.RIreflect[0]='\0'; + _g1c1_var._parameters.LIreflect[0]='\0'; + _g1c1_var._parameters.UIreflect[0]='\0'; + _g1c1_var._parameters.DIreflect[0]='\0'; + _g1c1_var._parameters.ROreflect[0]='\0'; + _g1c1_var._parameters.LOreflect[0]='\0'; + _g1c1_var._parameters.UOreflect[0]='\0'; + _g1c1_var._parameters.DOreflect[0]='\0'; + _g1c1_var._parameters.w1l = 0.015725; + _g1c1_var._parameters.w2l = 0.002; + _g1c1_var._parameters.linwl = 7.323650000000001; + _g1c1_var._parameters.loutwl = 0.5472510000000002; + _g1c1_var._parameters.w1r = 0.015725; + _g1c1_var._parameters.w2r = 0.002; + _g1c1_var._parameters.linwr = 7.323650000000001; + _g1c1_var._parameters.loutwr = 0.5472510000000002; + _g1c1_var._parameters.h1u = 0.02753; + _g1c1_var._parameters.h2u = 0.002; + _g1c1_var._parameters.linhu = 5.7813144; + _g1c1_var._parameters.louthu = 29.38673; + _g1c1_var._parameters.h1d = 0.02753; + _g1c1_var._parameters.h2d = 0.002; + _g1c1_var._parameters.linhd = 5.7813144; + _g1c1_var._parameters.louthd = 29.38673; + _g1c1_var._parameters.l = 0.8320999999999996; + _g1c1_var._parameters.R0 = 0.99; + _g1c1_var._parameters.Qcxl = 0.0217; + _g1c1_var._parameters.Qcxr = 0.0217; + _g1c1_var._parameters.Qcyu = 0.0221; + _g1c1_var._parameters.Qcyd = 0.0221; + _g1c1_var._parameters.alphaxl = 2.5; + _g1c1_var._parameters.alphaxr = 2.5; + _g1c1_var._parameters.alphayu = 1.75; + _g1c1_var._parameters.alphayd = 1.75; + _g1c1_var._parameters.Wxr = 0.015; + _g1c1_var._parameters.Wxl = 0.015; + _g1c1_var._parameters.Wyu = 0.015; + _g1c1_var._parameters.Wyd = 0.015; + _g1c1_var._parameters.mxr = 4; + _g1c1_var._parameters.mxl = 4; + _g1c1_var._parameters.myu = 2.5; + _g1c1_var._parameters.myd = 2.5; + _g1c1_var._parameters.QcxrOW = 0.0217; + _g1c1_var._parameters.QcxlOW = 0.0217; + _g1c1_var._parameters.QcyuOW = 0.0217; + _g1c1_var._parameters.QcydOW = 0.0217; + _g1c1_var._parameters.alphaxlOW = 6.07; + _g1c1_var._parameters.alphaxrOW = 6.07; + _g1c1_var._parameters.alphayuOW = 6.07; + _g1c1_var._parameters.alphaydOW = 6.07; + _g1c1_var._parameters.WxrOW = 0.003; + _g1c1_var._parameters.WxlOW = 0.003; + _g1c1_var._parameters.WyuOW = 0.003; + _g1c1_var._parameters.WydOW = 0.003; + _g1c1_var._parameters.mxrOW = 0; + _g1c1_var._parameters.mxlOW = 0; + _g1c1_var._parameters.myuOW = 0; + _g1c1_var._parameters.mydOW = 0; + _g1c1_var._parameters.rwallthick = 0.001; + _g1c1_var._parameters.lwallthick = 0.001; + _g1c1_var._parameters.uwallthick = 0.001; + _g1c1_var._parameters.dwallthick = 0.001; + + + /* component g1c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1c1_var._rotation_absolute); + rot_transpose(_g1b1_var._rotation_absolute, tr1); + rot_mul(_g1c1_var._rotation_absolute, tr1, _g1c1_var._rotation_relative); + _g1c1_var._rotation_is_identity = rot_test_identity(_g1c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.908); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1b1_var._position_absolute, _g1c1_var._position_absolute); + _g1c1_var._position_relative = rot_apply(_g1c1_var._rotation_absolute, tc1); + } /* g1c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute); + instrument->_position_absolute[11] = _g1c1_var._position_absolute; + instrument->_position_relative[11] = _g1c1_var._position_relative; + _g1c1_var._position_relative_is_zero = coords_test_zero(_g1c1_var._position_relative); + instrument->counter_N[11] = instrument->counter_P[11] = instrument->counter_P2[11] = 0; + instrument->counter_AbsorbProp[11]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0010_g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w1l", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linwl", "0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "loutwl", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w1r", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linwr", "0.0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "loutwr", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h1u", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linhu", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "louthu", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h1d", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linhd", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "louthd", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "l", "0", "0.8320999999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1c1_setpos */ + +/* component wfm_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_position_setpos] component wfm_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_position_var._name, "wfm_position", 16384); + stracpy(_wfm_position_var._type, "Arm", 16384); + _wfm_position_var._index=12; + int current_setpos_index = 12; + /* component wfm_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _wfm_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_position_var._rotation_absolute, tr1, _wfm_position_var._rotation_relative); + _wfm_position_var._rotation_is_identity = rot_test_identity(_wfm_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_position_var._position_absolute); + _wfm_position_var._position_relative = rot_apply(_wfm_position_var._rotation_absolute, tc1); + } /* wfm_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute); + instrument->_position_absolute[12] = _wfm_position_var._position_absolute; + instrument->_position_relative[12] = _wfm_position_var._position_relative; + _wfm_position_var._position_relative_is_zero = coords_test_zero(_wfm_position_var._position_relative); + instrument->counter_N[12] = instrument->counter_P[12] = instrument->counter_P2[12] = 0; + instrument->counter_AbsorbProp[12]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0011_wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_position_setpos */ + +/* component wfm_1_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_1_position_setpos] component wfm_1_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_1_position_var._name, "wfm_1_position", 16384); + stracpy(_wfm_1_position_var._type, "Arm", 16384); + _wfm_1_position_var._index=13; + int current_setpos_index = 13; + /* component wfm_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_1_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_1_position_var._rotation_absolute, tr1, _wfm_1_position_var._rotation_relative); + _wfm_1_position_var._rotation_is_identity = rot_test_identity(_wfm_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, -0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_1_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_1_position_var._position_absolute); + _wfm_1_position_var._position_relative = rot_apply(_wfm_1_position_var._rotation_absolute, tc1); + } /* wfm_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute); + instrument->_position_absolute[13] = _wfm_1_position_var._position_absolute; + instrument->_position_relative[13] = _wfm_1_position_var._position_relative; + _wfm_1_position_var._position_relative_is_zero = coords_test_zero(_wfm_1_position_var._position_relative); + instrument->counter_N[13] = instrument->counter_P[13] = instrument->counter_P2[13] = 0; + instrument->counter_AbsorbProp[13]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0012_wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_1_position_setpos */ + +/* component wfmc_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_1_setpos] component wfmc_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_1_var._name, "wfmc_1", 16384); + stracpy(_wfmc_1_var._type, "MultiDiskChopper", 16384); + _wfmc_1_var._index=14; + int current_setpos_index = 14; + if("5.62;-44.68;-91.85;-136.08;-177.55;143.56" && strlen("5.62;-44.68;-91.85;-136.08;-177.55;143.56")) + stracpy(_wfmc_1_var._parameters.slit_center, "5.62;-44.68;-91.85;-136.08;-177.55;143.56" ? "5.62;-44.68;-91.85;-136.08;-177.55;143.56" : "", 16384); + else + _wfmc_1_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_1_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_1_var._parameters.slit_width[0]='\0'; + _wfmc_1_var._parameters.nslits = 6; + _wfmc_1_var._parameters.delta_y = -0.31499999999999995; + _wfmc_1_var._parameters.nu = -56.0; + _wfmc_1_var._parameters.nrev = 0; + _wfmc_1_var._parameters.ratio = 1; + _wfmc_1_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_1; + _wfmc_1_var._parameters.delay = 0; + _wfmc_1_var._parameters.isfirst = 0; + _wfmc_1_var._parameters.phase = WFM1_phase; + _wfmc_1_var._parameters.radius = 0.35; + _wfmc_1_var._parameters.equal = 0; + _wfmc_1_var._parameters.abs_out = 0; + _wfmc_1_var._parameters.verbose = 0; + + + /* component wfmc_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_1_position_var._rotation_absolute, _wfmc_1_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfmc_1_var._rotation_absolute, tr1, _wfmc_1_var._rotation_relative); + _wfmc_1_var._rotation_is_identity = rot_test_identity(_wfmc_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_1_var._position_absolute = coords_add(_wfm_1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfmc_1_var._position_absolute); + _wfmc_1_var._position_relative = rot_apply(_wfmc_1_var._rotation_absolute, tc1); + } /* wfmc_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute); + instrument->_position_absolute[14] = _wfmc_1_var._position_absolute; + instrument->_position_relative[14] = _wfmc_1_var._position_relative; + _wfmc_1_var._position_relative_is_zero = coords_test_zero(_wfmc_1_var._position_relative); + instrument->counter_N[14] = instrument->counter_P[14] = instrument->counter_P2[14] = 0; + instrument->counter_AbsorbProp[14]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0013_wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "slit_center", "0 180", "5.62;-44.68;-91.85;-136.08;-177.55;143.56", "char*"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "phase", "0", "WFM1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_1_setpos */ + +/* component pinhole_1=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_1_setpos] component pinhole_1=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_1_var._name, "pinhole_1", 16384); + stracpy(_pinhole_1_var._type, "Slit", 16384); + _pinhole_1_var._index=15; + int current_setpos_index = 15; + _pinhole_1_var._parameters.xmin = UNSET; + _pinhole_1_var._parameters.xmax = UNSET; + _pinhole_1_var._parameters.ymin = UNSET; + _pinhole_1_var._parameters.ymax = UNSET; + _pinhole_1_var._parameters.radius = UNSET; + _pinhole_1_var._parameters.xwidth = 0.015; + _pinhole_1_var._parameters.yheight = 0.06; + + + /* component pinhole_1=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _pinhole_1_var._rotation_absolute); + rot_transpose(_wfmc_1_var._rotation_absolute, tr1); + rot_mul(_pinhole_1_var._rotation_absolute, tr1, _pinhole_1_var._rotation_relative); + _pinhole_1_var._rotation_is_identity = rot_test_identity(_pinhole_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_1_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_1_var._position_absolute, _pinhole_1_var._position_absolute); + _pinhole_1_var._position_relative = rot_apply(_pinhole_1_var._rotation_absolute, tc1); + } /* pinhole_1=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute); + instrument->_position_absolute[15] = _pinhole_1_var._position_absolute; + instrument->_position_relative[15] = _pinhole_1_var._position_relative; + _pinhole_1_var._position_relative_is_zero = coords_test_zero(_pinhole_1_var._position_relative); + instrument->counter_N[15] = instrument->counter_P[15] = instrument->counter_P2[15] = 0; + instrument->counter_AbsorbProp[15]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0014_pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xwidth", "UNSET", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "yheight", "UNSET", "0.06","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_1_setpos */ + +/* component wfm_2_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_2_position_setpos] component wfm_2_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_2_position_var._name, "wfm_2_position", 16384); + stracpy(_wfm_2_position_var._type, "Arm", 16384); + _wfm_2_position_var._index=16; + int current_setpos_index = 16; + /* component wfm_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_2_position_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfm_2_position_var._rotation_absolute, tr1, _wfm_2_position_var._rotation_relative); + _wfm_2_position_var._rotation_is_identity = rot_test_identity(_wfm_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_2_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfm_2_position_var._position_absolute); + _wfm_2_position_var._position_relative = rot_apply(_wfm_2_position_var._rotation_absolute, tc1); + } /* wfm_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute); + instrument->_position_absolute[16] = _wfm_2_position_var._position_absolute; + instrument->_position_relative[16] = _wfm_2_position_var._position_relative; + _wfm_2_position_var._position_relative_is_zero = coords_test_zero(_wfm_2_position_var._position_relative); + instrument->counter_N[16] = instrument->counter_P[16] = instrument->counter_P2[16] = 0; + instrument->counter_AbsorbProp[16]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0015_wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_2_position_setpos */ + +/* component wfmc_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_2_setpos] component wfmc_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_2_var._name, "wfmc_2", 16384); + stracpy(_wfmc_2_var._type, "MultiDiskChopper", 16384); + _wfmc_2_var._index=17; + int current_setpos_index = 17; + if("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" && strlen("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028")) + stracpy(_wfmc_2_var._parameters.slit_center, "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" ? "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" : "", 16384); + else + _wfmc_2_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_2_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_2_var._parameters.slit_width[0]='\0'; + _wfmc_2_var._parameters.nslits = 6; + _wfmc_2_var._parameters.delta_y = -0.31499999999999995; + _wfmc_2_var._parameters.nu = -56.0; + _wfmc_2_var._parameters.nrev = 0; + _wfmc_2_var._parameters.ratio = 1; + _wfmc_2_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_2; + _wfmc_2_var._parameters.delay = 0; + _wfmc_2_var._parameters.isfirst = 0; + _wfmc_2_var._parameters.phase = WFM2_phase; + _wfmc_2_var._parameters.radius = 0.35; + _wfmc_2_var._parameters.equal = 0; + _wfmc_2_var._parameters.abs_out = 0; + _wfmc_2_var._parameters.verbose = 0; + + + /* component wfmc_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_2_position_var._rotation_absolute, _wfmc_2_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfmc_2_var._rotation_absolute, tr1, _wfmc_2_var._rotation_relative); + _wfmc_2_var._rotation_is_identity = rot_test_identity(_wfmc_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_2_var._position_absolute = coords_add(_wfm_2_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfmc_2_var._position_absolute); + _wfmc_2_var._position_relative = rot_apply(_wfmc_2_var._rotation_absolute, tc1); + } /* wfmc_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute); + instrument->_position_absolute[17] = _wfmc_2_var._position_absolute; + instrument->_position_relative[17] = _wfmc_2_var._position_relative; + _wfmc_2_var._position_relative_is_zero = coords_test_zero(_wfmc_2_var._position_relative); + instrument->counter_N[17] = instrument->counter_P[17] = instrument->counter_P2[17] = 0; + instrument->counter_AbsorbProp[17]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0016_wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "slit_center", "0 180", "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", "char*"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "phase", "0", "WFM2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_2_setpos */ + +/* component g2a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a1_setpos] component g2a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a1_var._name, "g2a1", 16384); + stracpy(_g2a1_var._type, "Guide_four_side", 16384); + _g2a1_var._index=18; + int current_setpos_index = 18; + _g2a1_var._parameters.RIreflect[0]='\0'; + _g2a1_var._parameters.LIreflect[0]='\0'; + _g2a1_var._parameters.UIreflect[0]='\0'; + _g2a1_var._parameters.DIreflect[0]='\0'; + _g2a1_var._parameters.ROreflect[0]='\0'; + _g2a1_var._parameters.LOreflect[0]='\0'; + _g2a1_var._parameters.UOreflect[0]='\0'; + _g2a1_var._parameters.DOreflect[0]='\0'; + _g2a1_var._parameters.w1l = 0.01121; + _g2a1_var._parameters.w2l = 0.002; + _g2a1_var._parameters.linwl = 0.25980000000000025; + _g2a1_var._parameters.loutwl = 12.040199999999999; + _g2a1_var._parameters.w1r = 0.01121; + _g2a1_var._parameters.w2r = 0.002; + _g2a1_var._parameters.linwr = 0.25980000000000025; + _g2a1_var._parameters.loutwr = 12.040199999999999; + _g2a1_var._parameters.h1u = 0.029825; + _g2a1_var._parameters.h2u = 0.002; + _g2a1_var._parameters.linhu = 7.2598; + _g2a1_var._parameters.louthu = 28.0402; + _g2a1_var._parameters.h1d = 0.029825; + _g2a1_var._parameters.h2d = 0.002; + _g2a1_var._parameters.linhd = 7.2598; + _g2a1_var._parameters.louthd = 28.0402; + _g2a1_var._parameters.l = 0.7000000000000002; + _g2a1_var._parameters.R0 = 0.99; + _g2a1_var._parameters.Qcxl = 0.023; + _g2a1_var._parameters.Qcxr = 0.023; + _g2a1_var._parameters.Qcyu = 0.0221; + _g2a1_var._parameters.Qcyd = 0.0221; + _g2a1_var._parameters.alphaxl = 1.8; + _g2a1_var._parameters.alphaxr = 1.8; + _g2a1_var._parameters.alphayu = 1.75; + _g2a1_var._parameters.alphayd = 1.75; + _g2a1_var._parameters.Wxr = 0.015; + _g2a1_var._parameters.Wxl = 0.015; + _g2a1_var._parameters.Wyu = 0.015; + _g2a1_var._parameters.Wyd = 0.015; + _g2a1_var._parameters.mxr = 2; + _g2a1_var._parameters.mxl = 2; + _g2a1_var._parameters.myu = 3; + _g2a1_var._parameters.myd = 3; + _g2a1_var._parameters.QcxrOW = 0.0217; + _g2a1_var._parameters.QcxlOW = 0.0217; + _g2a1_var._parameters.QcyuOW = 0.0217; + _g2a1_var._parameters.QcydOW = 0.0217; + _g2a1_var._parameters.alphaxlOW = 6.07; + _g2a1_var._parameters.alphaxrOW = 6.07; + _g2a1_var._parameters.alphayuOW = 6.07; + _g2a1_var._parameters.alphaydOW = 6.07; + _g2a1_var._parameters.WxrOW = 0.003; + _g2a1_var._parameters.WxlOW = 0.003; + _g2a1_var._parameters.WyuOW = 0.003; + _g2a1_var._parameters.WydOW = 0.003; + _g2a1_var._parameters.mxrOW = 0; + _g2a1_var._parameters.mxlOW = 0; + _g2a1_var._parameters.myuOW = 0; + _g2a1_var._parameters.mydOW = 0; + _g2a1_var._parameters.rwallthick = 0.001; + _g2a1_var._parameters.lwallthick = 0.001; + _g2a1_var._parameters.uwallthick = 0.001; + _g2a1_var._parameters.dwallthick = 0.001; + + + /* component g2a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a1_var._rotation_absolute); + rot_transpose(_wfmc_2_var._rotation_absolute, tr1); + rot_mul(_g2a1_var._rotation_absolute, tr1, _g2a1_var._rotation_relative); + _g2a1_var._rotation_is_identity = rot_test_identity(_g2a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.247800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_2_var._position_absolute, _g2a1_var._position_absolute); + _g2a1_var._position_relative = rot_apply(_g2a1_var._rotation_absolute, tc1); + } /* g2a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute); + instrument->_position_absolute[18] = _g2a1_var._position_absolute; + instrument->_position_relative[18] = _g2a1_var._position_relative; + _g2a1_var._position_relative_is_zero = coords_test_zero(_g2a1_var._position_relative); + instrument->counter_N[18] = instrument->counter_P[18] = instrument->counter_P2[18] = 0; + instrument->counter_AbsorbProp[18]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0017_g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w1l", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linwl", "0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "loutwl", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w1r", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linwr", "0.0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "loutwr", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h1u", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linhu", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "louthu", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h1d", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linhd", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "louthd", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "l", "0", "0.7000000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a1_setpos */ + +/* component monitor_1_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_1_position_setpos] component monitor_1_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_1_position_var._name, "monitor_1_position", 16384); + stracpy(_monitor_1_position_var._type, "Arm", 16384); + _monitor_1_position_var._index=19; + int current_setpos_index = 19; + /* component monitor_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_1_position_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_monitor_1_position_var._rotation_absolute, tr1, _monitor_1_position_var._rotation_relative); + _monitor_1_position_var._rotation_is_identity = rot_test_identity(_monitor_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.96); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _monitor_1_position_var._position_absolute); + _monitor_1_position_var._position_relative = rot_apply(_monitor_1_position_var._rotation_absolute, tc1); + } /* monitor_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute); + instrument->_position_absolute[19] = _monitor_1_position_var._position_absolute; + instrument->_position_relative[19] = _monitor_1_position_var._position_relative; + _monitor_1_position_var._position_relative_is_zero = coords_test_zero(_monitor_1_position_var._position_relative); + instrument->counter_N[19] = instrument->counter_P[19] = instrument->counter_P2[19] = 0; + instrument->counter_AbsorbProp[19]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0018_monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_1_position_setpos */ + +/* component g2a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a2_setpos] component g2a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a2_var._name, "g2a2", 16384); + stracpy(_g2a2_var._type, "Guide_four_side", 16384); + _g2a2_var._index=20; + int current_setpos_index = 20; + _g2a2_var._parameters.RIreflect[0]='\0'; + _g2a2_var._parameters.LIreflect[0]='\0'; + _g2a2_var._parameters.UIreflect[0]='\0'; + _g2a2_var._parameters.DIreflect[0]='\0'; + _g2a2_var._parameters.ROreflect[0]='\0'; + _g2a2_var._parameters.LOreflect[0]='\0'; + _g2a2_var._parameters.UOreflect[0]='\0'; + _g2a2_var._parameters.DOreflect[0]='\0'; + _g2a2_var._parameters.w1l = 0.0212; + _g2a2_var._parameters.w2l = 0.002; + _g2a2_var._parameters.linwl = 0.9858000000000002; + _g2a2_var._parameters.loutwl = 11.6045; + _g2a2_var._parameters.w1r = 0.0212; + _g2a2_var._parameters.w2r = 0.002; + _g2a2_var._parameters.linwr = 0.9858000000000002; + _g2a2_var._parameters.loutwr = 11.6045; + _g2a2_var._parameters.h1u = 0.03088; + _g2a2_var._parameters.h2u = 0.002; + _g2a2_var._parameters.linhu = 7.9858; + _g2a2_var._parameters.louthu = 27.6045; + _g2a2_var._parameters.h1d = 0.03088; + _g2a2_var._parameters.h2d = 0.002; + _g2a2_var._parameters.linhd = 7.9858; + _g2a2_var._parameters.louthd = 27.6045; + _g2a2_var._parameters.l = 0.40969999999999995; + _g2a2_var._parameters.R0 = 0.99; + _g2a2_var._parameters.Qcxl = 0.0221; + _g2a2_var._parameters.Qcxr = 0.0221; + _g2a2_var._parameters.Qcyu = 0.0221; + _g2a2_var._parameters.Qcyd = 0.0221; + _g2a2_var._parameters.alphaxl = 1.75; + _g2a2_var._parameters.alphaxr = 1.75; + _g2a2_var._parameters.alphayu = 1.75; + _g2a2_var._parameters.alphayd = 1.75; + _g2a2_var._parameters.Wxr = 0.015; + _g2a2_var._parameters.Wxl = 0.015; + _g2a2_var._parameters.Wyu = 0.015; + _g2a2_var._parameters.Wyd = 0.015; + _g2a2_var._parameters.mxr = 3; + _g2a2_var._parameters.mxl = 3; + _g2a2_var._parameters.myu = 3; + _g2a2_var._parameters.myd = 3; + _g2a2_var._parameters.QcxrOW = 0.0217; + _g2a2_var._parameters.QcxlOW = 0.0217; + _g2a2_var._parameters.QcyuOW = 0.0217; + _g2a2_var._parameters.QcydOW = 0.0217; + _g2a2_var._parameters.alphaxlOW = 6.07; + _g2a2_var._parameters.alphaxrOW = 6.07; + _g2a2_var._parameters.alphayuOW = 6.07; + _g2a2_var._parameters.alphaydOW = 6.07; + _g2a2_var._parameters.WxrOW = 0.003; + _g2a2_var._parameters.WxlOW = 0.003; + _g2a2_var._parameters.WyuOW = 0.003; + _g2a2_var._parameters.WydOW = 0.003; + _g2a2_var._parameters.mxrOW = 0; + _g2a2_var._parameters.mxlOW = 0; + _g2a2_var._parameters.myuOW = 0; + _g2a2_var._parameters.mydOW = 0; + _g2a2_var._parameters.rwallthick = 0.001; + _g2a2_var._parameters.lwallthick = 0.001; + _g2a2_var._parameters.uwallthick = 0.001; + _g2a2_var._parameters.dwallthick = 0.001; + + + /* component g2a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a2_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_g2a2_var._rotation_absolute, tr1, _g2a2_var._rotation_relative); + _g2a2_var._rotation_is_identity = rot_test_identity(_g2a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.973800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _g2a2_var._position_absolute); + _g2a2_var._position_relative = rot_apply(_g2a2_var._rotation_absolute, tc1); + } /* g2a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute); + instrument->_position_absolute[20] = _g2a2_var._position_absolute; + instrument->_position_relative[20] = _g2a2_var._position_relative; + _g2a2_var._position_relative_is_zero = coords_test_zero(_g2a2_var._position_relative); + instrument->counter_N[20] = instrument->counter_P[20] = instrument->counter_P2[20] = 0; + instrument->counter_AbsorbProp[20]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0019_g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w1l", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linwl", "0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "loutwl", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w1r", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linwr", "0.0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "loutwr", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h1u", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linhu", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "louthu", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h1d", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linhd", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "louthd", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "l", "0", "0.40969999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a2_setpos */ + +/* component fo1_position=Arm() SETTING, POSITION/ROTATION */ +int _fo1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo1_position_setpos] component fo1_position=Arm() SETTING [Arm:0]"); + stracpy(_fo1_position_var._name, "fo1_position", 16384); + stracpy(_fo1_position_var._type, "Arm", 16384); + _fo1_position_var._index=21; + int current_setpos_index = 21; + /* component fo1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo1_position_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo1_position_var._rotation_absolute, tr1, _fo1_position_var._rotation_relative); + _fo1_position_var._rotation_is_identity = rot_test_identity(_fo1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.392); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo1_position_var._position_absolute); + _fo1_position_var._position_relative = rot_apply(_fo1_position_var._rotation_absolute, tc1); + } /* fo1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute); + instrument->_position_absolute[21] = _fo1_position_var._position_absolute; + instrument->_position_relative[21] = _fo1_position_var._position_relative; + _fo1_position_var._position_relative_is_zero = coords_test_zero(_fo1_position_var._position_relative); + instrument->counter_N[21] = instrument->counter_P[21] = instrument->counter_P2[21] = 0; + instrument->counter_AbsorbProp[21]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0020_fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo1_position_setpos */ + +/* component fo_chopper_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_1_setpos] component fo_chopper_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_1_var._name, "fo_chopper_1", 16384); + stracpy(_fo_chopper_1_var._type, "MultiDiskChopper", 16384); + _fo_chopper_1_var._index=22; + int current_setpos_index = 22; + if("-146.745;166.555;122.775;81.715;43.215;5.525" && strlen("-146.745;166.555;122.775;81.715;43.215;5.525")) + stracpy(_fo_chopper_1_var._parameters.slit_center, "-146.745;166.555;122.775;81.715;43.215;5.525" ? "-146.745;166.555;122.775;81.715;43.215;5.525" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_center[0]='\0'; + if("11.06;13.06;14.94;16.71;18.36;16.72" && strlen("11.06;13.06;14.94;16.71;18.36;16.72")) + stracpy(_fo_chopper_1_var._parameters.slit_width, "11.06;13.06;14.94;16.71;18.36;16.72" ? "11.06;13.06;14.94;16.71;18.36;16.72" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_width[0]='\0'; + _fo_chopper_1_var._parameters.nslits = 6; + _fo_chopper_1_var._parameters.delta_y = -0.4625; + _fo_chopper_1_var._parameters.nu = -42.0; + _fo_chopper_1_var._parameters.nrev = 0; + _fo_chopper_1_var._parameters.ratio = 1; + _fo_chopper_1_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_1; + _fo_chopper_1_var._parameters.delay = 0; + _fo_chopper_1_var._parameters.isfirst = 0; + _fo_chopper_1_var._parameters.phase = fo1_phase; + _fo_chopper_1_var._parameters.radius = 0.5; + _fo_chopper_1_var._parameters.equal = 0; + _fo_chopper_1_var._parameters.abs_out = 0; + _fo_chopper_1_var._parameters.verbose = 0; + + + /* component fo_chopper_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo1_position_var._rotation_absolute, _fo_chopper_1_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_1_var._rotation_absolute, tr1, _fo_chopper_1_var._rotation_relative); + _fo_chopper_1_var._rotation_is_identity = rot_test_identity(_fo_chopper_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_1_var._position_absolute = coords_add(_fo1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo_chopper_1_var._position_absolute); + _fo_chopper_1_var._position_relative = rot_apply(_fo_chopper_1_var._rotation_absolute, tc1); + } /* fo_chopper_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute); + instrument->_position_absolute[22] = _fo_chopper_1_var._position_absolute; + instrument->_position_relative[22] = _fo_chopper_1_var._position_relative; + _fo_chopper_1_var._position_relative_is_zero = coords_test_zero(_fo_chopper_1_var._position_relative); + instrument->counter_N[22] = instrument->counter_P[22] = instrument->counter_P2[22] = 0; + instrument->counter_AbsorbProp[22]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0021_fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "slit_center", "0 180", "-146.745;166.555;122.775;81.715;43.215;5.525", "char*"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "slit_width", "10 20", "11.06;13.06;14.94;16.71;18.36;16.72", "char*"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "delta_y", "-0.3", "-0.4625","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "phase", "0", "fo1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_1_setpos */ + +/* component bp1_position=Arm() SETTING, POSITION/ROTATION */ +int _bp1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_position_setpos] component bp1_position=Arm() SETTING [Arm:0]"); + stracpy(_bp1_position_var._name, "bp1_position", 16384); + stracpy(_bp1_position_var._type, "Arm", 16384); + _bp1_position_var._index=23; + int current_setpos_index = 23; + /* component bp1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp1_position_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_position_var._rotation_absolute, tr1, _bp1_position_var._rotation_relative); + _bp1_position_var._rotation_is_identity = rot_test_identity(_bp1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.442); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_position_var._position_absolute); + _bp1_position_var._position_relative = rot_apply(_bp1_position_var._rotation_absolute, tc1); + } /* bp1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute); + instrument->_position_absolute[23] = _bp1_position_var._position_absolute; + instrument->_position_relative[23] = _bp1_position_var._position_relative; + _bp1_position_var._position_relative_is_zero = coords_test_zero(_bp1_position_var._position_relative); + instrument->counter_N[23] = instrument->counter_P[23] = instrument->counter_P2[23] = 0; + instrument->counter_AbsorbProp[23]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0022_bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_position_setpos */ + +/* component bp1_chopper=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp1_chopper_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_chopper_setpos] component bp1_chopper=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp1_chopper_var._name, "bp1_chopper", 16384); + stracpy(_bp1_chopper_var._type, "DiskChopper", 16384); + _bp1_chopper_var._index=24; + int current_setpos_index = 24; + _bp1_chopper_var._parameters.theta_0 = 46.71; + _bp1_chopper_var._parameters.radius = 0.5; + _bp1_chopper_var._parameters.yheight = 0.075; + _bp1_chopper_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp1_chopper_var._parameters.nslit = 1; + _bp1_chopper_var._parameters.jitter = _instrument_var._parameters.jitter_bp1; + _bp1_chopper_var._parameters.delay = 0; + _bp1_chopper_var._parameters.isfirst = 0; + _bp1_chopper_var._parameters.n_pulse = 1; + _bp1_chopper_var._parameters.abs_out = 1; + _bp1_chopper_var._parameters.phase = bp1_phase + ( 42.20500000000003 ); + _bp1_chopper_var._parameters.xwidth = 0; + _bp1_chopper_var._parameters.verbose = 0; + + + /* component bp1_chopper=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp1_position_var._rotation_absolute, _bp1_chopper_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_chopper_var._rotation_absolute, tr1, _bp1_chopper_var._rotation_relative); + _bp1_chopper_var._rotation_is_identity = rot_test_identity(_bp1_chopper_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_chopper_var._position_absolute = coords_add(_bp1_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_chopper_var._position_absolute); + _bp1_chopper_var._position_relative = rot_apply(_bp1_chopper_var._rotation_absolute, tc1); + } /* bp1_chopper=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute); + instrument->_position_absolute[24] = _bp1_chopper_var._position_absolute; + instrument->_position_relative[24] = _bp1_chopper_var._position_relative; + _bp1_chopper_var._position_relative_is_zero = coords_test_zero(_bp1_chopper_var._position_relative); + instrument->counter_N[24] = instrument->counter_P[24] = instrument->counter_P2[24] = 0; + instrument->counter_AbsorbProp[24]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0023_bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "theta_0", "0", "46.71","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "jitter", "0", "_instrument_var._parameters.jitter_bp1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "phase", "0", "bp1_phase + ( 42.20500000000003 )","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_chopper_setpos */ + +/* component g2b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b1_setpos] component g2b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b1_var._name, "g2b1", 16384); + stracpy(_g2b1_var._type, "Guide_four_side", 16384); + _g2b1_var._index=25; + int current_setpos_index = 25; + _g2b1_var._parameters.RIreflect[0]='\0'; + _g2b1_var._parameters.LIreflect[0]='\0'; + _g2b1_var._parameters.UIreflect[0]='\0'; + _g2b1_var._parameters.DIreflect[0]='\0'; + _g2b1_var._parameters.ROreflect[0]='\0'; + _g2b1_var._parameters.LOreflect[0]='\0'; + _g2b1_var._parameters.UOreflect[0]='\0'; + _g2b1_var._parameters.DOreflect[0]='\0'; + _g2b1_var._parameters.w1l = 0.02521; + _g2b1_var._parameters.w2l = 0.002; + _g2b1_var._parameters.linwl = 1.4502500000000005; + _g2b1_var._parameters.loutwl = 11.14005; + _g2b1_var._parameters.w1r = 0.02521; + _g2b1_var._parameters.w2r = 0.002; + _g2b1_var._parameters.linwr = 1.4502500000000005; + _g2b1_var._parameters.loutwr = 11.14005; + _g2b1_var._parameters.h1u = 0.031505; + _g2b1_var._parameters.h2u = 0.002; + _g2b1_var._parameters.linhu = 8.45025; + _g2b1_var._parameters.louthu = 27.140050000000002; + _g2b1_var._parameters.h1d = 0.031505; + _g2b1_var._parameters.h2d = 0.002; + _g2b1_var._parameters.linhd = 8.45025; + _g2b1_var._parameters.louthd = 27.140050000000002; + _g2b1_var._parameters.l = 0.40969999999999906; + _g2b1_var._parameters.R0 = 0.99; + _g2b1_var._parameters.Qcxl = 0.0217; + _g2b1_var._parameters.Qcxr = 0.0217; + _g2b1_var._parameters.Qcyu = 0.023; + _g2b1_var._parameters.Qcyd = 0.023; + _g2b1_var._parameters.alphaxl = 2.5; + _g2b1_var._parameters.alphaxr = 2.5; + _g2b1_var._parameters.alphayu = 1.8; + _g2b1_var._parameters.alphayd = 1.8; + _g2b1_var._parameters.Wxr = 0.015; + _g2b1_var._parameters.Wxl = 0.015; + _g2b1_var._parameters.Wyu = 0.015; + _g2b1_var._parameters.Wyd = 0.015; + _g2b1_var._parameters.mxr = 4; + _g2b1_var._parameters.mxl = 4; + _g2b1_var._parameters.myu = 2; + _g2b1_var._parameters.myd = 2; + _g2b1_var._parameters.QcxrOW = 0.0217; + _g2b1_var._parameters.QcxlOW = 0.0217; + _g2b1_var._parameters.QcyuOW = 0.0217; + _g2b1_var._parameters.QcydOW = 0.0217; + _g2b1_var._parameters.alphaxlOW = 6.07; + _g2b1_var._parameters.alphaxrOW = 6.07; + _g2b1_var._parameters.alphayuOW = 6.07; + _g2b1_var._parameters.alphaydOW = 6.07; + _g2b1_var._parameters.WxrOW = 0.003; + _g2b1_var._parameters.WxlOW = 0.003; + _g2b1_var._parameters.WyuOW = 0.003; + _g2b1_var._parameters.WydOW = 0.003; + _g2b1_var._parameters.mxrOW = 0; + _g2b1_var._parameters.mxlOW = 0; + _g2b1_var._parameters.myuOW = 0; + _g2b1_var._parameters.mydOW = 0; + _g2b1_var._parameters.rwallthick = 0.001; + _g2b1_var._parameters.lwallthick = 0.001; + _g2b1_var._parameters.uwallthick = 0.001; + _g2b1_var._parameters.dwallthick = 0.001; + + + /* component g2b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b1_var._rotation_absolute); + rot_transpose(_bp1_chopper_var._rotation_absolute, tr1); + rot_mul(_g2b1_var._rotation_absolute, tr1, _g2b1_var._rotation_relative); + _g2b1_var._rotation_is_identity = rot_test_identity(_g2b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.446250000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp1_chopper_var._position_absolute, _g2b1_var._position_absolute); + _g2b1_var._position_relative = rot_apply(_g2b1_var._rotation_absolute, tc1); + } /* g2b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute); + instrument->_position_absolute[25] = _g2b1_var._position_absolute; + instrument->_position_relative[25] = _g2b1_var._position_relative; + _g2b1_var._position_relative_is_zero = coords_test_zero(_g2b1_var._position_relative); + instrument->counter_N[25] = instrument->counter_P[25] = instrument->counter_P2[25] = 0; + instrument->counter_AbsorbProp[25]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0024_g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w1l", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linwl", "0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "loutwl", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w1r", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linwr", "0.0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "loutwr", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h1u", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linhu", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "louthu", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h1d", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linhd", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "louthd", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b1_setpos */ + +/* component g2b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b2_setpos] component g2b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b2_var._name, "g2b2", 16384); + stracpy(_g2b2_var._type, "Guide_four_side", 16384); + _g2b2_var._index=26; + int current_setpos_index = 26; + _g2b2_var._parameters.RIreflect[0]='\0'; + _g2b2_var._parameters.LIreflect[0]='\0'; + _g2b2_var._parameters.UIreflect[0]='\0'; + _g2b2_var._parameters.DIreflect[0]='\0'; + _g2b2_var._parameters.ROreflect[0]='\0'; + _g2b2_var._parameters.LOreflect[0]='\0'; + _g2b2_var._parameters.UOreflect[0]='\0'; + _g2b2_var._parameters.DOreflect[0]='\0'; + _g2b2_var._parameters.w1l = 0.02811; + _g2b2_var._parameters.w2l = 0.002; + _g2b2_var._parameters.linwl = 1.8707999999999991; + _g2b2_var._parameters.loutwl = 9.67745; + _g2b2_var._parameters.w1r = 0.02811; + _g2b2_var._parameters.w2r = 0.002; + _g2b2_var._parameters.linwr = 1.8707999999999991; + _g2b2_var._parameters.loutwr = 9.67745; + _g2b2_var._parameters.h1u = 0.03203; + _g2b2_var._parameters.h2u = 0.002; + _g2b2_var._parameters.linhu = 8.8708; + _g2b2_var._parameters.louthu = 25.67745; + _g2b2_var._parameters.h1d = 0.03203; + _g2b2_var._parameters.h2d = 0.002; + _g2b2_var._parameters.linhd = 8.8708; + _g2b2_var._parameters.louthd = 25.67745; + _g2b2_var._parameters.l = 1.4517500000000005; + _g2b2_var._parameters.R0 = 0.99; + _g2b2_var._parameters.Qcxl = 0.0217; + _g2b2_var._parameters.Qcxr = 0.0217; + _g2b2_var._parameters.Qcyu = 0.023; + _g2b2_var._parameters.Qcyd = 0.023; + _g2b2_var._parameters.alphaxl = 2.5; + _g2b2_var._parameters.alphaxr = 2.5; + _g2b2_var._parameters.alphayu = 1.8; + _g2b2_var._parameters.alphayd = 1.8; + _g2b2_var._parameters.Wxr = 0.015; + _g2b2_var._parameters.Wxl = 0.015; + _g2b2_var._parameters.Wyu = 0.015; + _g2b2_var._parameters.Wyd = 0.015; + _g2b2_var._parameters.mxr = 4; + _g2b2_var._parameters.mxl = 4; + _g2b2_var._parameters.myu = 2; + _g2b2_var._parameters.myd = 2; + _g2b2_var._parameters.QcxrOW = 0.0217; + _g2b2_var._parameters.QcxlOW = 0.0217; + _g2b2_var._parameters.QcyuOW = 0.0217; + _g2b2_var._parameters.QcydOW = 0.0217; + _g2b2_var._parameters.alphaxlOW = 6.07; + _g2b2_var._parameters.alphaxrOW = 6.07; + _g2b2_var._parameters.alphayuOW = 6.07; + _g2b2_var._parameters.alphaydOW = 6.07; + _g2b2_var._parameters.WxrOW = 0.003; + _g2b2_var._parameters.WxlOW = 0.003; + _g2b2_var._parameters.WyuOW = 0.003; + _g2b2_var._parameters.WydOW = 0.003; + _g2b2_var._parameters.mxrOW = 0; + _g2b2_var._parameters.mxlOW = 0; + _g2b2_var._parameters.myuOW = 0; + _g2b2_var._parameters.mydOW = 0; + _g2b2_var._parameters.rwallthick = 0.001; + _g2b2_var._parameters.lwallthick = 0.001; + _g2b2_var._parameters.uwallthick = 0.001; + _g2b2_var._parameters.dwallthick = 0.001; + + + /* component g2b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b2_var._rotation_absolute); + rot_transpose(_g2b1_var._rotation_absolute, tr1); + rot_mul(_g2b2_var._rotation_absolute, tr1, _g2b2_var._rotation_relative); + _g2b2_var._rotation_is_identity = rot_test_identity(_g2b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.8668); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b1_var._position_absolute, _g2b2_var._position_absolute); + _g2b2_var._position_relative = rot_apply(_g2b2_var._rotation_absolute, tc1); + } /* g2b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute); + instrument->_position_absolute[26] = _g2b2_var._position_absolute; + instrument->_position_relative[26] = _g2b2_var._position_relative; + _g2b2_var._position_relative_is_zero = coords_test_zero(_g2b2_var._position_relative); + instrument->counter_N[26] = instrument->counter_P[26] = instrument->counter_P2[26] = 0; + instrument->counter_AbsorbProp[26]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0025_g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w1l", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linwl", "0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "loutwl", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w1r", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linwr", "0.0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "loutwr", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h1u", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linhu", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "louthu", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h1d", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linhd", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "louthd", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b2_setpos */ + +/* component g2b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b3_setpos] component g2b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b3_var._name, "g2b3", 16384); + stracpy(_g2b3_var._type, "Guide_four_side", 16384); + _g2b3_var._index=27; + int current_setpos_index = 27; + _g2b3_var._parameters.RIreflect[0]='\0'; + _g2b3_var._parameters.LIreflect[0]='\0'; + _g2b3_var._parameters.UIreflect[0]='\0'; + _g2b3_var._parameters.DIreflect[0]='\0'; + _g2b3_var._parameters.ROreflect[0]='\0'; + _g2b3_var._parameters.LOreflect[0]='\0'; + _g2b3_var._parameters.UOreflect[0]='\0'; + _g2b3_var._parameters.DOreflect[0]='\0'; + _g2b3_var._parameters.w1l = 0.03493; + _g2b3_var._parameters.w2l = 0.002; + _g2b3_var._parameters.linwl = 3.3230500000000003; + _g2b3_var._parameters.loutwl = 8.2252; + _g2b3_var._parameters.w1r = 0.03493; + _g2b3_var._parameters.w2r = 0.002; + _g2b3_var._parameters.linwr = 3.3230500000000003; + _g2b3_var._parameters.loutwr = 8.2252; + _g2b3_var._parameters.h1u = 0.033615; + _g2b3_var._parameters.h2u = 0.002; + _g2b3_var._parameters.linhu = 10.32305; + _g2b3_var._parameters.louthu = 24.2252; + _g2b3_var._parameters.h1d = 0.033615; + _g2b3_var._parameters.h2d = 0.002; + _g2b3_var._parameters.linhd = 10.32305; + _g2b3_var._parameters.louthd = 24.2252; + _g2b3_var._parameters.l = 1.4517500000000005; + _g2b3_var._parameters.R0 = 0.99; + _g2b3_var._parameters.Qcxl = 0.0217; + _g2b3_var._parameters.Qcxr = 0.0217; + _g2b3_var._parameters.Qcyu = 0.023; + _g2b3_var._parameters.Qcyd = 0.023; + _g2b3_var._parameters.alphaxl = 2.5; + _g2b3_var._parameters.alphaxr = 2.5; + _g2b3_var._parameters.alphayu = 1.8; + _g2b3_var._parameters.alphayd = 1.8; + _g2b3_var._parameters.Wxr = 0.015; + _g2b3_var._parameters.Wxl = 0.015; + _g2b3_var._parameters.Wyu = 0.015; + _g2b3_var._parameters.Wyd = 0.015; + _g2b3_var._parameters.mxr = 4; + _g2b3_var._parameters.mxl = 4; + _g2b3_var._parameters.myu = 2; + _g2b3_var._parameters.myd = 2; + _g2b3_var._parameters.QcxrOW = 0.0217; + _g2b3_var._parameters.QcxlOW = 0.0217; + _g2b3_var._parameters.QcyuOW = 0.0217; + _g2b3_var._parameters.QcydOW = 0.0217; + _g2b3_var._parameters.alphaxlOW = 6.07; + _g2b3_var._parameters.alphaxrOW = 6.07; + _g2b3_var._parameters.alphayuOW = 6.07; + _g2b3_var._parameters.alphaydOW = 6.07; + _g2b3_var._parameters.WxrOW = 0.003; + _g2b3_var._parameters.WxlOW = 0.003; + _g2b3_var._parameters.WyuOW = 0.003; + _g2b3_var._parameters.WydOW = 0.003; + _g2b3_var._parameters.mxrOW = 0; + _g2b3_var._parameters.mxlOW = 0; + _g2b3_var._parameters.myuOW = 0; + _g2b3_var._parameters.mydOW = 0; + _g2b3_var._parameters.rwallthick = 0.001; + _g2b3_var._parameters.lwallthick = 0.001; + _g2b3_var._parameters.uwallthick = 0.001; + _g2b3_var._parameters.dwallthick = 0.001; + + + /* component g2b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b3_var._rotation_absolute); + rot_transpose(_g2b2_var._rotation_absolute, tr1); + rot_mul(_g2b3_var._rotation_absolute, tr1, _g2b3_var._rotation_relative); + _g2b3_var._rotation_is_identity = rot_test_identity(_g2b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 10.31905); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b2_var._position_absolute, _g2b3_var._position_absolute); + _g2b3_var._position_relative = rot_apply(_g2b3_var._rotation_absolute, tc1); + } /* g2b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute); + instrument->_position_absolute[27] = _g2b3_var._position_absolute; + instrument->_position_relative[27] = _g2b3_var._position_relative; + _g2b3_var._position_relative_is_zero = coords_test_zero(_g2b3_var._position_relative); + instrument->counter_N[27] = instrument->counter_P[27] = instrument->counter_P2[27] = 0; + instrument->counter_AbsorbProp[27]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0026_g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w1l", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linwl", "0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "loutwl", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w1r", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linwr", "0.0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "loutwr", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h1u", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linhu", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "louthu", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h1d", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linhd", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "louthd", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b3_setpos */ + +/* component g2b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b4_setpos] component g2b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b4_var._name, "g2b4", 16384); + stracpy(_g2b4_var._type, "Guide_four_side", 16384); + _g2b4_var._index=28; + int current_setpos_index = 28; + _g2b4_var._parameters.RIreflect[0]='\0'; + _g2b4_var._parameters.LIreflect[0]='\0'; + _g2b4_var._parameters.UIreflect[0]='\0'; + _g2b4_var._parameters.DIreflect[0]='\0'; + _g2b4_var._parameters.ROreflect[0]='\0'; + _g2b4_var._parameters.LOreflect[0]='\0'; + _g2b4_var._parameters.UOreflect[0]='\0'; + _g2b4_var._parameters.DOreflect[0]='\0'; + _g2b4_var._parameters.w1l = 0.03862; + _g2b4_var._parameters.w2l = 0.002; + _g2b4_var._parameters.linwl = 4.7858; + _g2b4_var._parameters.loutwl = 7.804500000000001; + _g2b4_var._parameters.w1r = 0.03862; + _g2b4_var._parameters.w2r = 0.002; + _g2b4_var._parameters.linwr = 4.7858; + _g2b4_var._parameters.loutwr = 7.804500000000001; + _g2b4_var._parameters.h1u = 0.03488; + _g2b4_var._parameters.h2u = 0.002; + _g2b4_var._parameters.linhu = 11.7858; + _g2b4_var._parameters.louthu = 23.8045; + _g2b4_var._parameters.h1d = 0.03488; + _g2b4_var._parameters.h2d = 0.002; + _g2b4_var._parameters.linhd = 11.7858; + _g2b4_var._parameters.louthd = 23.8045; + _g2b4_var._parameters.l = 0.40969999999999906; + _g2b4_var._parameters.R0 = 0.99; + _g2b4_var._parameters.Qcxl = 0.0217; + _g2b4_var._parameters.Qcxr = 0.0217; + _g2b4_var._parameters.Qcyu = 0.023; + _g2b4_var._parameters.Qcyd = 0.023; + _g2b4_var._parameters.alphaxl = 2.5; + _g2b4_var._parameters.alphaxr = 2.5; + _g2b4_var._parameters.alphayu = 1.8; + _g2b4_var._parameters.alphayd = 1.8; + _g2b4_var._parameters.Wxr = 0.015; + _g2b4_var._parameters.Wxl = 0.015; + _g2b4_var._parameters.Wyu = 0.015; + _g2b4_var._parameters.Wyd = 0.015; + _g2b4_var._parameters.mxr = 4; + _g2b4_var._parameters.mxl = 4; + _g2b4_var._parameters.myu = 2; + _g2b4_var._parameters.myd = 2; + _g2b4_var._parameters.QcxrOW = 0.0217; + _g2b4_var._parameters.QcxlOW = 0.0217; + _g2b4_var._parameters.QcyuOW = 0.0217; + _g2b4_var._parameters.QcydOW = 0.0217; + _g2b4_var._parameters.alphaxlOW = 6.07; + _g2b4_var._parameters.alphaxrOW = 6.07; + _g2b4_var._parameters.alphayuOW = 6.07; + _g2b4_var._parameters.alphaydOW = 6.07; + _g2b4_var._parameters.WxrOW = 0.003; + _g2b4_var._parameters.WxlOW = 0.003; + _g2b4_var._parameters.WyuOW = 0.003; + _g2b4_var._parameters.WydOW = 0.003; + _g2b4_var._parameters.mxrOW = 0; + _g2b4_var._parameters.mxlOW = 0; + _g2b4_var._parameters.myuOW = 0; + _g2b4_var._parameters.mydOW = 0; + _g2b4_var._parameters.rwallthick = 0.001; + _g2b4_var._parameters.lwallthick = 0.001; + _g2b4_var._parameters.uwallthick = 0.001; + _g2b4_var._parameters.dwallthick = 0.001; + + + /* component g2b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b4_var._rotation_absolute); + rot_transpose(_g2b3_var._rotation_absolute, tr1); + rot_mul(_g2b4_var._rotation_absolute, tr1, _g2b4_var._rotation_relative); + _g2b4_var._rotation_is_identity = rot_test_identity(_g2b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 11.7818); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b3_var._position_absolute, _g2b4_var._position_absolute); + _g2b4_var._position_relative = rot_apply(_g2b4_var._rotation_absolute, tc1); + } /* g2b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute); + instrument->_position_absolute[28] = _g2b4_var._position_absolute; + instrument->_position_relative[28] = _g2b4_var._position_relative; + _g2b4_var._position_relative_is_zero = coords_test_zero(_g2b4_var._position_relative); + instrument->counter_N[28] = instrument->counter_P[28] = instrument->counter_P2[28] = 0; + instrument->counter_AbsorbProp[28]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0027_g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w1l", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linwl", "0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "loutwl", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w1r", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linwr", "0.0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "loutwr", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linhu", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "louthu", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linhd", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "louthd", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b4_setpos */ + +/* component fo2_position=Arm() SETTING, POSITION/ROTATION */ +int _fo2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo2_position_setpos] component fo2_position=Arm() SETTING [Arm:0]"); + stracpy(_fo2_position_var._name, "fo2_position", 16384); + stracpy(_fo2_position_var._type, "Arm", 16384); + _fo2_position_var._index=29; + int current_setpos_index = 29; + /* component fo2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo2_position_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo2_position_var._rotation_absolute, tr1, _fo2_position_var._rotation_relative); + _fo2_position_var._rotation_is_identity = rot_test_identity(_fo2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.2); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo2_position_var._position_absolute); + _fo2_position_var._position_relative = rot_apply(_fo2_position_var._rotation_absolute, tc1); + } /* fo2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute); + instrument->_position_absolute[29] = _fo2_position_var._position_absolute; + instrument->_position_relative[29] = _fo2_position_var._position_relative; + _fo2_position_var._position_relative_is_zero = coords_test_zero(_fo2_position_var._position_relative); + instrument->counter_N[29] = instrument->counter_P[29] = instrument->counter_P2[29] = 0; + instrument->counter_AbsorbProp[29]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0028_fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo2_position_setpos */ + +/* component fo_chopper_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_2_setpos] component fo_chopper_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_2_var._name, "fo_chopper_2", 16384); + stracpy(_fo_chopper_2_var._type, "MultiDiskChopper", 16384); + _fo_chopper_2_var._index=30; + int current_setpos_index = 30; + if("-127.07;165.08;101.46;41.97;-13.98;-67.15" && strlen("-127.07;165.08;101.46;41.97;-13.98;-67.15")) + stracpy(_fo_chopper_2_var._parameters.slit_center, "-127.07;165.08;101.46;41.97;-13.98;-67.15" ? "-127.07;165.08;101.46;41.97;-13.98;-67.15" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_center[0]='\0'; + if("32.9;33.54;34.15;34.37;34.89;34.31" && strlen("32.9;33.54;34.15;34.37;34.89;34.31")) + stracpy(_fo_chopper_2_var._parameters.slit_width, "32.9;33.54;34.15;34.37;34.89;34.31" ? "32.9;33.54;34.15;34.37;34.89;34.31" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_width[0]='\0'; + _fo_chopper_2_var._parameters.nslits = 6; + _fo_chopper_2_var._parameters.delta_y = -0.46; + _fo_chopper_2_var._parameters.nu = -42.0; + _fo_chopper_2_var._parameters.nrev = 0; + _fo_chopper_2_var._parameters.ratio = 1; + _fo_chopper_2_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_2; + _fo_chopper_2_var._parameters.delay = 0; + _fo_chopper_2_var._parameters.isfirst = 0; + _fo_chopper_2_var._parameters.phase = fo2_phase; + _fo_chopper_2_var._parameters.radius = 0.5; + _fo_chopper_2_var._parameters.equal = 0; + _fo_chopper_2_var._parameters.abs_out = 0; + _fo_chopper_2_var._parameters.verbose = 0; + + + /* component fo_chopper_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo2_position_var._rotation_absolute, _fo_chopper_2_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_2_var._rotation_absolute, tr1, _fo_chopper_2_var._rotation_relative); + _fo_chopper_2_var._rotation_is_identity = rot_test_identity(_fo_chopper_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_2_var._position_absolute = coords_add(_fo2_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo_chopper_2_var._position_absolute); + _fo_chopper_2_var._position_relative = rot_apply(_fo_chopper_2_var._rotation_absolute, tc1); + } /* fo_chopper_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute); + instrument->_position_absolute[30] = _fo_chopper_2_var._position_absolute; + instrument->_position_relative[30] = _fo_chopper_2_var._position_relative; + _fo_chopper_2_var._position_relative_is_zero = coords_test_zero(_fo_chopper_2_var._position_relative); + instrument->counter_N[30] = instrument->counter_P[30] = instrument->counter_P2[30] = 0; + instrument->counter_AbsorbProp[30]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0029_fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "slit_center", "0 180", "-127.07;165.08;101.46;41.97;-13.98;-67.15", "char*"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "slit_width", "10 20", "32.9;33.54;34.15;34.37;34.89;34.31", "char*"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "delta_y", "-0.3", "-0.46","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "phase", "0", "fo2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_2_setpos */ + +/* component bp2_position=Arm() SETTING, POSITION/ROTATION */ +int _bp2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp2_position_setpos] component bp2_position=Arm() SETTING [Arm:0]"); + stracpy(_bp2_position_var._name, "bp2_position", 16384); + stracpy(_bp2_position_var._type, "Arm", 16384); + _bp2_position_var._index=31; + int current_setpos_index = 31; + /* component bp2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp2_position_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp2_position_var._rotation_absolute, tr1, _bp2_position_var._rotation_relative); + _bp2_position_var._rotation_is_identity = rot_test_identity(_bp2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp2_position_var._position_absolute); + _bp2_position_var._position_relative = rot_apply(_bp2_position_var._rotation_absolute, tc1); + } /* bp2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute); + instrument->_position_absolute[31] = _bp2_position_var._position_absolute; + instrument->_position_relative[31] = _bp2_position_var._position_relative; + _bp2_position_var._position_relative_is_zero = coords_test_zero(_bp2_position_var._position_relative); + instrument->counter_N[31] = instrument->counter_P[31] = instrument->counter_P2[31] = 0; + instrument->counter_AbsorbProp[31]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0030_bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp2_position_setpos */ + +/* component bp_chopper2=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp_chopper2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp_chopper2_setpos] component bp_chopper2=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp_chopper2_var._name, "bp_chopper2", 16384); + stracpy(_bp_chopper2_var._type, "DiskChopper", 16384); + _bp_chopper2_var._index=32; + int current_setpos_index = 32; + _bp_chopper2_var._parameters.theta_0 = 67.49; + _bp_chopper2_var._parameters.radius = 0.5; + _bp_chopper2_var._parameters.yheight = 0.08; + _bp_chopper2_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp_chopper2_var._parameters.nslit = 1; + _bp_chopper2_var._parameters.jitter = _instrument_var._parameters.jitter_bp2; + _bp_chopper2_var._parameters.delay = 0; + _bp_chopper2_var._parameters.isfirst = 0; + _bp_chopper2_var._parameters.n_pulse = 1; + _bp_chopper2_var._parameters.abs_out = 1; + _bp_chopper2_var._parameters.phase = bp2_phase -141.795; + _bp_chopper2_var._parameters.xwidth = 0; + _bp_chopper2_var._parameters.verbose = 0; + + + /* component bp_chopper2=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp2_position_var._rotation_absolute, _bp_chopper2_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp_chopper2_var._rotation_absolute, tr1, _bp_chopper2_var._rotation_relative); + _bp_chopper2_var._rotation_is_identity = rot_test_identity(_bp_chopper2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp_chopper2_var._position_absolute = coords_add(_bp2_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp_chopper2_var._position_absolute); + _bp_chopper2_var._position_relative = rot_apply(_bp_chopper2_var._rotation_absolute, tc1); + } /* bp_chopper2=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute); + instrument->_position_absolute[32] = _bp_chopper2_var._position_absolute; + instrument->_position_relative[32] = _bp_chopper2_var._position_relative; + _bp_chopper2_var._position_relative_is_zero = coords_test_zero(_bp_chopper2_var._position_relative); + instrument->counter_N[32] = instrument->counter_P[32] = instrument->counter_P2[32] = 0; + instrument->counter_AbsorbProp[32]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0031_bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "theta_0", "0", "67.49","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "yheight", "NONE", "0.08","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "jitter", "0", "_instrument_var._parameters.jitter_bp2","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "phase", "0", "bp2_phase -141.795","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp_chopper2_setpos */ + +/* component g2c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2c1_setpos] component g2c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2c1_var._name, "g2c1", 16384); + stracpy(_g2c1_var._type, "Guide_four_side", 16384); + _g2c1_var._index=33; + int current_setpos_index = 33; + _g2c1_var._parameters.RIreflect[0]='\0'; + _g2c1_var._parameters.LIreflect[0]='\0'; + _g2c1_var._parameters.UIreflect[0]='\0'; + _g2c1_var._parameters.DIreflect[0]='\0'; + _g2c1_var._parameters.ROreflect[0]='\0'; + _g2c1_var._parameters.LOreflect[0]='\0'; + _g2c1_var._parameters.UOreflect[0]='\0'; + _g2c1_var._parameters.DOreflect[0]='\0'; + _g2c1_var._parameters.w1l = 0.03929; + _g2c1_var._parameters.w2l = 0.002; + _g2c1_var._parameters.linwl = 5.250249999999999; + _g2c1_var._parameters.loutwl = 6.536899999999999; + _g2c1_var._parameters.w1r = 0.03929; + _g2c1_var._parameters.w2r = 0.002; + _g2c1_var._parameters.linwr = 5.250249999999999; + _g2c1_var._parameters.loutwr = 6.536899999999999; + _g2c1_var._parameters.h1u = 0.03488; + _g2c1_var._parameters.h2u = 0.002; + _g2c1_var._parameters.linhu = 12.25025; + _g2c1_var._parameters.louthu = 22.5369; + _g2c1_var._parameters.h1d = 0.03488; + _g2c1_var._parameters.h2d = 0.002; + _g2c1_var._parameters.linhd = 12.25025; + _g2c1_var._parameters.louthd = 22.5369; + _g2c1_var._parameters.l = 1.2128500000000013; + _g2c1_var._parameters.R0 = 0.99; + _g2c1_var._parameters.Qcxl = 0.0217; + _g2c1_var._parameters.Qcxr = 0.0217; + _g2c1_var._parameters.Qcyu = 0.023; + _g2c1_var._parameters.Qcyd = 0.023; + _g2c1_var._parameters.alphaxl = 2.5; + _g2c1_var._parameters.alphaxr = 2.5; + _g2c1_var._parameters.alphayu = 1.8; + _g2c1_var._parameters.alphayd = 1.8; + _g2c1_var._parameters.Wxr = 0.015; + _g2c1_var._parameters.Wxl = 0.015; + _g2c1_var._parameters.Wyu = 0.015; + _g2c1_var._parameters.Wyd = 0.015; + _g2c1_var._parameters.mxr = 3.5; + _g2c1_var._parameters.mxl = 3.5; + _g2c1_var._parameters.myu = 2; + _g2c1_var._parameters.myd = 2; + _g2c1_var._parameters.QcxrOW = 0.0217; + _g2c1_var._parameters.QcxlOW = 0.0217; + _g2c1_var._parameters.QcyuOW = 0.0217; + _g2c1_var._parameters.QcydOW = 0.0217; + _g2c1_var._parameters.alphaxlOW = 6.07; + _g2c1_var._parameters.alphaxrOW = 6.07; + _g2c1_var._parameters.alphayuOW = 6.07; + _g2c1_var._parameters.alphaydOW = 6.07; + _g2c1_var._parameters.WxrOW = 0.003; + _g2c1_var._parameters.WxlOW = 0.003; + _g2c1_var._parameters.WyuOW = 0.003; + _g2c1_var._parameters.WydOW = 0.003; + _g2c1_var._parameters.mxrOW = 0; + _g2c1_var._parameters.mxlOW = 0; + _g2c1_var._parameters.myuOW = 0; + _g2c1_var._parameters.mydOW = 0; + _g2c1_var._parameters.rwallthick = 0.001; + _g2c1_var._parameters.lwallthick = 0.001; + _g2c1_var._parameters.uwallthick = 0.001; + _g2c1_var._parameters.dwallthick = 0.001; + + + /* component g2c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2c1_var._rotation_absolute); + rot_transpose(_bp_chopper2_var._rotation_absolute, tr1); + rot_mul(_g2c1_var._rotation_absolute, tr1, _g2c1_var._rotation_relative); + _g2c1_var._rotation_is_identity = rot_test_identity(_g2c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.254249999999999); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp_chopper2_var._position_absolute, _g2c1_var._position_absolute); + _g2c1_var._position_relative = rot_apply(_g2c1_var._rotation_absolute, tc1); + } /* g2c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute); + instrument->_position_absolute[33] = _g2c1_var._position_absolute; + instrument->_position_relative[33] = _g2c1_var._position_relative; + _g2c1_var._position_relative_is_zero = coords_test_zero(_g2c1_var._position_relative); + instrument->counter_N[33] = instrument->counter_P[33] = instrument->counter_P2[33] = 0; + instrument->counter_AbsorbProp[33]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0032_g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w1l", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linwl", "0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "loutwl", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w1r", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linwr", "0.0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "loutwr", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linhu", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "louthu", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linhd", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "louthd", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "l", "0", "1.2128500000000013","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2c1_setpos */ + +/* component t0_start_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_start_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_start_position_setpos] component t0_start_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_start_position_var._name, "t0_start_position", 16384); + stracpy(_t0_start_position_var._type, "Arm", 16384); + _t0_start_position_var._index=34; + int current_setpos_index = 34; + /* component t0_start_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_start_position_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_start_position_var._rotation_absolute, tr1, _t0_start_position_var._rotation_relative); + _t0_start_position_var._rotation_is_identity = rot_test_identity(_t0_start_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.503); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_start_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_start_position_var._position_absolute); + _t0_start_position_var._position_relative = rot_apply(_t0_start_position_var._rotation_absolute, tc1); + } /* t0_start_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute); + instrument->_position_absolute[34] = _t0_start_position_var._position_absolute; + instrument->_position_relative[34] = _t0_start_position_var._position_relative; + _t0_start_position_var._position_relative_is_zero = coords_test_zero(_t0_start_position_var._position_relative); + instrument->counter_N[34] = instrument->counter_P[34] = instrument->counter_P2[34] = 0; + instrument->counter_AbsorbProp[34]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0033_t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_start_position_setpos */ + +/* component t0_chopper_alpha=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_alpha_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_alpha_setpos] component t0_chopper_alpha=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_alpha_var._name, "t0_chopper_alpha", 16384); + stracpy(_t0_chopper_alpha_var._type, "DiskChopper", 16384); + _t0_chopper_alpha_var._index=35; + int current_setpos_index = 35; + _t0_chopper_alpha_var._parameters.theta_0 = 294.74; + _t0_chopper_alpha_var._parameters.radius = 0.32; + _t0_chopper_alpha_var._parameters.yheight = 0.075; + _t0_chopper_alpha_var._parameters.nu = 28.0; + _t0_chopper_alpha_var._parameters.nslit = 1; + _t0_chopper_alpha_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_alpha_var._parameters.delay = 0; + _t0_chopper_alpha_var._parameters.isfirst = 0; + _t0_chopper_alpha_var._parameters.n_pulse = 1; + _t0_chopper_alpha_var._parameters.abs_out = 1; + _t0_chopper_alpha_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_alpha_var._parameters.xwidth = 0; + _t0_chopper_alpha_var._parameters.verbose = 0; + + + /* component t0_chopper_alpha=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_start_position_var._rotation_absolute, _t0_chopper_alpha_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_alpha_var._rotation_absolute, tr1, _t0_chopper_alpha_var._rotation_relative); + _t0_chopper_alpha_var._rotation_is_identity = rot_test_identity(_t0_chopper_alpha_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_start_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_alpha_var._position_absolute = coords_add(_t0_start_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_chopper_alpha_var._position_absolute); + _t0_chopper_alpha_var._position_relative = rot_apply(_t0_chopper_alpha_var._rotation_absolute, tc1); + } /* t0_chopper_alpha=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute); + instrument->_position_absolute[35] = _t0_chopper_alpha_var._position_absolute; + instrument->_position_relative[35] = _t0_chopper_alpha_var._position_relative; + _t0_chopper_alpha_var._position_relative_is_zero = coords_test_zero(_t0_chopper_alpha_var._position_relative); + instrument->counter_N[35] = instrument->counter_P[35] = instrument->counter_P2[35] = 0; + instrument->counter_AbsorbProp[35]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0034_t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_alpha_setpos */ + +/* component t0_end_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_end_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_end_position_setpos] component t0_end_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_end_position_var._name, "t0_end_position", 16384); + stracpy(_t0_end_position_var._type, "Arm", 16384); + _t0_end_position_var._index=36; + int current_setpos_index = 36; + /* component t0_end_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_end_position_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_end_position_var._rotation_absolute, tr1, _t0_end_position_var._rotation_relative); + _t0_end_position_var._rotation_is_identity = rot_test_identity(_t0_end_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.703); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_end_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_end_position_var._position_absolute); + _t0_end_position_var._position_relative = rot_apply(_t0_end_position_var._rotation_absolute, tc1); + } /* t0_end_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute); + instrument->_position_absolute[36] = _t0_end_position_var._position_absolute; + instrument->_position_relative[36] = _t0_end_position_var._position_relative; + _t0_end_position_var._position_relative_is_zero = coords_test_zero(_t0_end_position_var._position_relative); + instrument->counter_N[36] = instrument->counter_P[36] = instrument->counter_P2[36] = 0; + instrument->counter_AbsorbProp[36]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0035_t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_end_position_setpos */ + +/* component t0_chopper_beta=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_beta_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_beta_setpos] component t0_chopper_beta=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_beta_var._name, "t0_chopper_beta", 16384); + stracpy(_t0_chopper_beta_var._type, "DiskChopper", 16384); + _t0_chopper_beta_var._index=37; + int current_setpos_index = 37; + _t0_chopper_beta_var._parameters.theta_0 = 294.74; + _t0_chopper_beta_var._parameters.radius = 0.32; + _t0_chopper_beta_var._parameters.yheight = 0.075; + _t0_chopper_beta_var._parameters.nu = 28.0; + _t0_chopper_beta_var._parameters.nslit = 1; + _t0_chopper_beta_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_beta_var._parameters.delay = 0; + _t0_chopper_beta_var._parameters.isfirst = 0; + _t0_chopper_beta_var._parameters.n_pulse = 1; + _t0_chopper_beta_var._parameters.abs_out = 1; + _t0_chopper_beta_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_beta_var._parameters.xwidth = 0; + _t0_chopper_beta_var._parameters.verbose = 0; + + + /* component t0_chopper_beta=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_end_position_var._rotation_absolute, _t0_chopper_beta_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_beta_var._rotation_absolute, tr1, _t0_chopper_beta_var._rotation_relative); + _t0_chopper_beta_var._rotation_is_identity = rot_test_identity(_t0_chopper_beta_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_end_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_beta_var._position_absolute = coords_add(_t0_end_position_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_chopper_beta_var._position_absolute); + _t0_chopper_beta_var._position_relative = rot_apply(_t0_chopper_beta_var._rotation_absolute, tc1); + } /* t0_chopper_beta=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute); + instrument->_position_absolute[37] = _t0_chopper_beta_var._position_absolute; + instrument->_position_relative[37] = _t0_chopper_beta_var._position_relative; + _t0_chopper_beta_var._position_relative_is_zero = coords_test_zero(_t0_chopper_beta_var._position_relative); + instrument->counter_N[37] = instrument->counter_P[37] = instrument->counter_P2[37] = 0; + instrument->counter_AbsorbProp[37]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0036_t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_beta_setpos */ + +/* component g3a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a1_setpos] component g3a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a1_var._name, "g3a1", 16384); + stracpy(_g3a1_var._type, "Guide_four_side", 16384); + _g3a1_var._index=38; + int current_setpos_index = 38; + _g3a1_var._parameters.RIreflect[0]='\0'; + _g3a1_var._parameters.LIreflect[0]='\0'; + _g3a1_var._parameters.UIreflect[0]='\0'; + _g3a1_var._parameters.DIreflect[0]='\0'; + _g3a1_var._parameters.ROreflect[0]='\0'; + _g3a1_var._parameters.LOreflect[0]='\0'; + _g3a1_var._parameters.UOreflect[0]='\0'; + _g3a1_var._parameters.DOreflect[0]='\0'; + _g3a1_var._parameters.w1l = 0.04004; + _g3a1_var._parameters.w2l = 0.04004; + _g3a1_var._parameters.linwl = 0; + _g3a1_var._parameters.loutwl = 0; + _g3a1_var._parameters.w1r = 0.04004; + _g3a1_var._parameters.w2r = 0.04004; + _g3a1_var._parameters.linwr = 0.0; + _g3a1_var._parameters.loutwr = 0; + _g3a1_var._parameters.h1u = 0.03611; + _g3a1_var._parameters.h2u = 0.002; + _g3a1_var._parameters.linhu = 13.7559; + _g3a1_var._parameters.louthu = 20.2631; + _g3a1_var._parameters.h1d = 0.03611; + _g3a1_var._parameters.h2d = 0.002; + _g3a1_var._parameters.linhd = 13.7559; + _g3a1_var._parameters.louthd = 20.2631; + _g3a1_var._parameters.l = 1.981; + _g3a1_var._parameters.R0 = 0.99; + _g3a1_var._parameters.Qcxl = 0.0217; + _g3a1_var._parameters.Qcxr = 0.0217; + _g3a1_var._parameters.Qcyu = 0.023; + _g3a1_var._parameters.Qcyd = 0.023; + _g3a1_var._parameters.alphaxl = 2.5; + _g3a1_var._parameters.alphaxr = 2.5; + _g3a1_var._parameters.alphayu = 1.8; + _g3a1_var._parameters.alphayd = 1.8; + _g3a1_var._parameters.Wxr = 0.015; + _g3a1_var._parameters.Wxl = 0.015; + _g3a1_var._parameters.Wyu = 0.015; + _g3a1_var._parameters.Wyd = 0.015; + _g3a1_var._parameters.mxr = 3.5; + _g3a1_var._parameters.mxl = 3.5; + _g3a1_var._parameters.myu = 2; + _g3a1_var._parameters.myd = 2; + _g3a1_var._parameters.QcxrOW = 0.0217; + _g3a1_var._parameters.QcxlOW = 0.0217; + _g3a1_var._parameters.QcyuOW = 0.0217; + _g3a1_var._parameters.QcydOW = 0.0217; + _g3a1_var._parameters.alphaxlOW = 6.07; + _g3a1_var._parameters.alphaxrOW = 6.07; + _g3a1_var._parameters.alphayuOW = 6.07; + _g3a1_var._parameters.alphaydOW = 6.07; + _g3a1_var._parameters.WxrOW = 0.003; + _g3a1_var._parameters.WxlOW = 0.003; + _g3a1_var._parameters.WyuOW = 0.003; + _g3a1_var._parameters.WydOW = 0.003; + _g3a1_var._parameters.mxrOW = 0; + _g3a1_var._parameters.mxlOW = 0; + _g3a1_var._parameters.myuOW = 0; + _g3a1_var._parameters.mydOW = 0; + _g3a1_var._parameters.rwallthick = 0.001; + _g3a1_var._parameters.lwallthick = 0.001; + _g3a1_var._parameters.uwallthick = 0.001; + _g3a1_var._parameters.dwallthick = 0.001; + + + /* component g3a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a1_var._rotation_absolute); + rot_transpose(_t0_chopper_beta_var._rotation_absolute, tr1); + rot_mul(_g3a1_var._rotation_absolute, tr1, _g3a1_var._rotation_relative); + _g3a1_var._rotation_is_identity = rot_test_identity(_g3a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.7379); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_beta_var._position_absolute, _g3a1_var._position_absolute); + _g3a1_var._position_relative = rot_apply(_g3a1_var._rotation_absolute, tc1); + } /* g3a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute); + instrument->_position_absolute[38] = _g3a1_var._position_absolute; + instrument->_position_relative[38] = _g3a1_var._position_relative; + _g3a1_var._position_relative_is_zero = coords_test_zero(_g3a1_var._position_relative); + instrument->counter_N[38] = instrument->counter_P[38] = instrument->counter_P2[38] = 0; + instrument->counter_AbsorbProp[38]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0037_g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h1u", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linhu", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "louthu", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h1d", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linhd", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "louthd", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "l", "0", "1.981","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a1_setpos */ + +/* component g3a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a2_setpos] component g3a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a2_var._name, "g3a2", 16384); + stracpy(_g3a2_var._type, "Guide_four_side", 16384); + _g3a2_var._index=39; + int current_setpos_index = 39; + _g3a2_var._parameters.RIreflect[0]='\0'; + _g3a2_var._parameters.LIreflect[0]='\0'; + _g3a2_var._parameters.UIreflect[0]='\0'; + _g3a2_var._parameters.DIreflect[0]='\0'; + _g3a2_var._parameters.ROreflect[0]='\0'; + _g3a2_var._parameters.LOreflect[0]='\0'; + _g3a2_var._parameters.UOreflect[0]='\0'; + _g3a2_var._parameters.DOreflect[0]='\0'; + _g3a2_var._parameters.w1l = 0.04004; + _g3a2_var._parameters.w2l = 0.04004; + _g3a2_var._parameters.linwl = 0; + _g3a2_var._parameters.loutwl = 0; + _g3a2_var._parameters.w1r = 0.04004; + _g3a2_var._parameters.w2r = 0.04004; + _g3a2_var._parameters.linwr = 0.0; + _g3a2_var._parameters.loutwr = 0; + _g3a2_var._parameters.h1u = 0.03687; + _g3a2_var._parameters.h2u = 0.002; + _g3a2_var._parameters.linhu = 15.7409; + _g3a2_var._parameters.louthu = 19.0055; + _g3a2_var._parameters.h1d = 0.03687; + _g3a2_var._parameters.h2d = 0.002; + _g3a2_var._parameters.linhd = 15.7409; + _g3a2_var._parameters.louthd = 19.0055; + _g3a2_var._parameters.l = 1.2535999999999987; + _g3a2_var._parameters.R0 = 0.99; + _g3a2_var._parameters.Qcxl = 0.0221; + _g3a2_var._parameters.Qcxr = 0.0221; + _g3a2_var._parameters.Qcyu = 0.023; + _g3a2_var._parameters.Qcyd = 0.023; + _g3a2_var._parameters.alphaxl = 1.75; + _g3a2_var._parameters.alphaxr = 1.75; + _g3a2_var._parameters.alphayu = 1.8; + _g3a2_var._parameters.alphayd = 1.8; + _g3a2_var._parameters.Wxr = 0.015; + _g3a2_var._parameters.Wxl = 0.015; + _g3a2_var._parameters.Wyu = 0.015; + _g3a2_var._parameters.Wyd = 0.015; + _g3a2_var._parameters.mxr = 3; + _g3a2_var._parameters.mxl = 3; + _g3a2_var._parameters.myu = 2; + _g3a2_var._parameters.myd = 2; + _g3a2_var._parameters.QcxrOW = 0.0217; + _g3a2_var._parameters.QcxlOW = 0.0217; + _g3a2_var._parameters.QcyuOW = 0.0217; + _g3a2_var._parameters.QcydOW = 0.0217; + _g3a2_var._parameters.alphaxlOW = 6.07; + _g3a2_var._parameters.alphaxrOW = 6.07; + _g3a2_var._parameters.alphayuOW = 6.07; + _g3a2_var._parameters.alphaydOW = 6.07; + _g3a2_var._parameters.WxrOW = 0.003; + _g3a2_var._parameters.WxlOW = 0.003; + _g3a2_var._parameters.WyuOW = 0.003; + _g3a2_var._parameters.WydOW = 0.003; + _g3a2_var._parameters.mxrOW = 0; + _g3a2_var._parameters.mxlOW = 0; + _g3a2_var._parameters.myuOW = 0; + _g3a2_var._parameters.mydOW = 0; + _g3a2_var._parameters.rwallthick = 0.001; + _g3a2_var._parameters.lwallthick = 0.001; + _g3a2_var._parameters.uwallthick = 0.001; + _g3a2_var._parameters.dwallthick = 0.001; + + + /* component g3a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a2_var._rotation_absolute); + rot_transpose(_g3a1_var._rotation_absolute, tr1); + rot_mul(_g3a2_var._rotation_absolute, tr1, _g3a2_var._rotation_relative); + _g3a2_var._rotation_is_identity = rot_test_identity(_g3a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 15.7229); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a1_var._position_absolute, _g3a2_var._position_absolute); + _g3a2_var._position_relative = rot_apply(_g3a2_var._rotation_absolute, tc1); + } /* g3a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute); + instrument->_position_absolute[39] = _g3a2_var._position_absolute; + instrument->_position_relative[39] = _g3a2_var._position_relative; + _g3a2_var._position_relative_is_zero = coords_test_zero(_g3a2_var._position_relative); + instrument->counter_N[39] = instrument->counter_P[39] = instrument->counter_P2[39] = 0; + instrument->counter_AbsorbProp[39]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0038_g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h1u", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linhu", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "louthu", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h1d", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linhd", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "louthd", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "l", "0", "1.2535999999999987","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a2_setpos */ + +/* component fo3_position=Arm() SETTING, POSITION/ROTATION */ +int _fo3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo3_position_setpos] component fo3_position=Arm() SETTING [Arm:0]"); + stracpy(_fo3_position_var._name, "fo3_position", 16384); + stracpy(_fo3_position_var._type, "Arm", 16384); + _fo3_position_var._index=40; + int current_setpos_index = 40; + /* component fo3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo3_position_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo3_position_var._rotation_absolute, tr1, _fo3_position_var._rotation_relative); + _fo3_position_var._rotation_is_identity = rot_test_identity(_fo3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9865); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo3_position_var._position_absolute); + _fo3_position_var._position_relative = rot_apply(_fo3_position_var._rotation_absolute, tc1); + } /* fo3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute); + instrument->_position_absolute[40] = _fo3_position_var._position_absolute; + instrument->_position_relative[40] = _fo3_position_var._position_relative; + _fo3_position_var._position_relative_is_zero = coords_test_zero(_fo3_position_var._position_relative); + instrument->counter_N[40] = instrument->counter_P[40] = instrument->counter_P2[40] = 0; + instrument->counter_AbsorbProp[40]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0039_fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo3_position_setpos */ + +/* component fo_chopper_3=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_3_setpos] component fo_chopper_3=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_3_var._name, "fo_chopper_3", 16384); + stracpy(_fo_chopper_3_var._type, "MultiDiskChopper", 16384); + _fo_chopper_3_var._index=41; + int current_setpos_index = 41; + if("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" && strlen("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08")) + stracpy(_fo_chopper_3_var._parameters.slit_center, "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" ? "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_center[0]='\0'; + if("40.32;39.61;38.94;38.31;37.72;36.06" && strlen("40.32;39.61;38.94;38.31;37.72;36.06")) + stracpy(_fo_chopper_3_var._parameters.slit_width, "40.32;39.61;38.94;38.31;37.72;36.06" ? "40.32;39.61;38.94;38.31;37.72;36.06" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_width[0]='\0'; + _fo_chopper_3_var._parameters.nslits = 6; + _fo_chopper_3_var._parameters.delta_y = -0.5575; + _fo_chopper_3_var._parameters.nu = -28.0; + _fo_chopper_3_var._parameters.nrev = 0; + _fo_chopper_3_var._parameters.ratio = 1; + _fo_chopper_3_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_3; + _fo_chopper_3_var._parameters.delay = 0; + _fo_chopper_3_var._parameters.isfirst = 0; + _fo_chopper_3_var._parameters.phase = fo3_phase; + _fo_chopper_3_var._parameters.radius = 0.6; + _fo_chopper_3_var._parameters.equal = 0; + _fo_chopper_3_var._parameters.abs_out = 0; + _fo_chopper_3_var._parameters.verbose = 0; + + + /* component fo_chopper_3=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo3_position_var._rotation_absolute, _fo_chopper_3_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_3_var._rotation_absolute, tr1, _fo_chopper_3_var._rotation_relative); + _fo_chopper_3_var._rotation_is_identity = rot_test_identity(_fo_chopper_3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo3_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_3_var._position_absolute = coords_add(_fo3_position_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo_chopper_3_var._position_absolute); + _fo_chopper_3_var._position_relative = rot_apply(_fo_chopper_3_var._rotation_absolute, tc1); + } /* fo_chopper_3=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute); + instrument->_position_absolute[41] = _fo_chopper_3_var._position_absolute; + instrument->_position_relative[41] = _fo_chopper_3_var._position_relative; + _fo_chopper_3_var._position_relative_is_zero = coords_test_zero(_fo_chopper_3_var._position_relative); + instrument->counter_N[41] = instrument->counter_P[41] = instrument->counter_P2[41] = 0; + instrument->counter_AbsorbProp[41]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0040_fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "slit_center", "0 180", "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", "char*"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "slit_width", "10 20", "40.32;39.61;38.94;38.31;37.72;36.06", "char*"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "delta_y", "-0.3", "-0.5575","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nu", "0", "-28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_3","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "phase", "0", "fo3_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "radius", "0.375", "0.6","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_3_setpos */ + +/* component g3b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3b1_setpos] component g3b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3b1_var._name, "g3b1", 16384); + stracpy(_g3b1_var._type, "Guide_four_side", 16384); + _g3b1_var._index=42; + int current_setpos_index = 42; + _g3b1_var._parameters.RIreflect[0]='\0'; + _g3b1_var._parameters.LIreflect[0]='\0'; + _g3b1_var._parameters.UIreflect[0]='\0'; + _g3b1_var._parameters.DIreflect[0]='\0'; + _g3b1_var._parameters.ROreflect[0]='\0'; + _g3b1_var._parameters.LOreflect[0]='\0'; + _g3b1_var._parameters.UOreflect[0]='\0'; + _g3b1_var._parameters.DOreflect[0]='\0'; + _g3b1_var._parameters.w1l = 0.04004; + _g3b1_var._parameters.w2l = 0.04004; + _g3b1_var._parameters.linwl = 0; + _g3b1_var._parameters.loutwl = 0; + _g3b1_var._parameters.w1r = 0.04004; + _g3b1_var._parameters.w2r = 0.04004; + _g3b1_var._parameters.linwr = 0.0; + _g3b1_var._parameters.loutwr = 0; + _g3b1_var._parameters.h1u = 0.03711; + _g3b1_var._parameters.h2u = 0.002; + _g3b1_var._parameters.linhu = 17.0055; + _g3b1_var._parameters.louthu = 18.038; + _g3b1_var._parameters.h1d = 0.03711; + _g3b1_var._parameters.h2d = 0.002; + _g3b1_var._parameters.linhd = 17.0055; + _g3b1_var._parameters.louthd = 18.038; + _g3b1_var._parameters.l = 0.9564999999999984; + _g3b1_var._parameters.R0 = 0.99; + _g3b1_var._parameters.Qcxl = 0.0221; + _g3b1_var._parameters.Qcxr = 0.0221; + _g3b1_var._parameters.Qcyu = 0.023; + _g3b1_var._parameters.Qcyd = 0.023; + _g3b1_var._parameters.alphaxl = 1.75; + _g3b1_var._parameters.alphaxr = 1.75; + _g3b1_var._parameters.alphayu = 1.8; + _g3b1_var._parameters.alphayd = 1.8; + _g3b1_var._parameters.Wxr = 0.015; + _g3b1_var._parameters.Wxl = 0.015; + _g3b1_var._parameters.Wyu = 0.015; + _g3b1_var._parameters.Wyd = 0.015; + _g3b1_var._parameters.mxr = 2.5; + _g3b1_var._parameters.mxl = 2.5; + _g3b1_var._parameters.myu = 2; + _g3b1_var._parameters.myd = 2; + _g3b1_var._parameters.QcxrOW = 0.0217; + _g3b1_var._parameters.QcxlOW = 0.0217; + _g3b1_var._parameters.QcyuOW = 0.0217; + _g3b1_var._parameters.QcydOW = 0.0217; + _g3b1_var._parameters.alphaxlOW = 6.07; + _g3b1_var._parameters.alphaxrOW = 6.07; + _g3b1_var._parameters.alphayuOW = 6.07; + _g3b1_var._parameters.alphaydOW = 6.07; + _g3b1_var._parameters.WxrOW = 0.003; + _g3b1_var._parameters.WxlOW = 0.003; + _g3b1_var._parameters.WyuOW = 0.003; + _g3b1_var._parameters.WydOW = 0.003; + _g3b1_var._parameters.mxrOW = 0; + _g3b1_var._parameters.mxlOW = 0; + _g3b1_var._parameters.myuOW = 0; + _g3b1_var._parameters.mydOW = 0; + _g3b1_var._parameters.rwallthick = 0.001; + _g3b1_var._parameters.lwallthick = 0.001; + _g3b1_var._parameters.uwallthick = 0.001; + _g3b1_var._parameters.dwallthick = 0.001; + + + /* component g3b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3b1_var._rotation_absolute); + rot_transpose(_fo_chopper_3_var._rotation_absolute, tr1); + rot_mul(_g3b1_var._rotation_absolute, tr1, _g3b1_var._rotation_relative); + _g3b1_var._rotation_is_identity = rot_test_identity(_g3b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9965); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_3_var._position_absolute, _g3b1_var._position_absolute); + _g3b1_var._position_relative = rot_apply(_g3b1_var._rotation_absolute, tc1); + } /* g3b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute); + instrument->_position_absolute[42] = _g3b1_var._position_absolute; + instrument->_position_relative[42] = _g3b1_var._position_relative; + _g3b1_var._position_relative_is_zero = coords_test_zero(_g3b1_var._position_relative); + instrument->counter_N[42] = instrument->counter_P[42] = instrument->counter_P2[42] = 0; + instrument->counter_AbsorbProp[42]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0041_g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h1u", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linhu", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "louthu", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h1d", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linhd", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "louthd", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "l", "0", "0.9564999999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3b1_setpos */ + +/* component g4a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a1_setpos] component g4a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a1_var._name, "g4a1", 16384); + stracpy(_g4a1_var._type, "Guide_four_side", 16384); + _g4a1_var._index=43; + int current_setpos_index = 43; + _g4a1_var._parameters.RIreflect[0]='\0'; + _g4a1_var._parameters.LIreflect[0]='\0'; + _g4a1_var._parameters.UIreflect[0]='\0'; + _g4a1_var._parameters.DIreflect[0]='\0'; + _g4a1_var._parameters.ROreflect[0]='\0'; + _g4a1_var._parameters.LOreflect[0]='\0'; + _g4a1_var._parameters.UOreflect[0]='\0'; + _g4a1_var._parameters.DOreflect[0]='\0'; + _g4a1_var._parameters.w1l = 0.04004; + _g4a1_var._parameters.w2l = 0.04004; + _g4a1_var._parameters.linwl = 0; + _g4a1_var._parameters.loutwl = 0; + _g4a1_var._parameters.w1r = 0.04004; + _g4a1_var._parameters.w2r = 0.04004; + _g4a1_var._parameters.linwr = 0.0; + _g4a1_var._parameters.loutwr = 0; + _g4a1_var._parameters.h1u = 0.037165; + _g4a1_var._parameters.h2u = 0.037165; + _g4a1_var._parameters.linhu = 0.0; + _g4a1_var._parameters.louthu = 0; + _g4a1_var._parameters.h1d = 0.037165; + _g4a1_var._parameters.h2d = 0.037165; + _g4a1_var._parameters.linhd = 0.0; + _g4a1_var._parameters.louthd = 0; + _g4a1_var._parameters.l = 1.2600000000000016; + _g4a1_var._parameters.R0 = 0.99; + _g4a1_var._parameters.Qcxl = 0.0221; + _g4a1_var._parameters.Qcxr = 0.0221; + _g4a1_var._parameters.Qcyu = 0.023; + _g4a1_var._parameters.Qcyd = 0.023; + _g4a1_var._parameters.alphaxl = 1.75; + _g4a1_var._parameters.alphaxr = 1.75; + _g4a1_var._parameters.alphayu = 1.8; + _g4a1_var._parameters.alphayd = 1.8; + _g4a1_var._parameters.Wxr = 0.015; + _g4a1_var._parameters.Wxl = 0.015; + _g4a1_var._parameters.Wyu = 0.015; + _g4a1_var._parameters.Wyd = 0.015; + _g4a1_var._parameters.mxr = 3; + _g4a1_var._parameters.mxl = 3; + _g4a1_var._parameters.myu = 2; + _g4a1_var._parameters.myd = 2; + _g4a1_var._parameters.QcxrOW = 0.0217; + _g4a1_var._parameters.QcxlOW = 0.0217; + _g4a1_var._parameters.QcyuOW = 0.0217; + _g4a1_var._parameters.QcydOW = 0.0217; + _g4a1_var._parameters.alphaxlOW = 6.07; + _g4a1_var._parameters.alphaxrOW = 6.07; + _g4a1_var._parameters.alphayuOW = 6.07; + _g4a1_var._parameters.alphaydOW = 6.07; + _g4a1_var._parameters.WxrOW = 0.003; + _g4a1_var._parameters.WxlOW = 0.003; + _g4a1_var._parameters.WyuOW = 0.003; + _g4a1_var._parameters.WydOW = 0.003; + _g4a1_var._parameters.mxrOW = 0; + _g4a1_var._parameters.mxlOW = 0; + _g4a1_var._parameters.myuOW = 0; + _g4a1_var._parameters.mydOW = 0; + _g4a1_var._parameters.rwallthick = 0.001; + _g4a1_var._parameters.lwallthick = 0.001; + _g4a1_var._parameters.uwallthick = 0.001; + _g4a1_var._parameters.dwallthick = 0.001; + + + /* component g4a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a1_var._rotation_absolute); + rot_transpose(_g3b1_var._rotation_absolute, tr1); + rot_mul(_g4a1_var._rotation_absolute, tr1, _g4a1_var._rotation_relative); + _g4a1_var._rotation_is_identity = rot_test_identity(_g4a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 17.964); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3b1_var._position_absolute, _g4a1_var._position_absolute); + _g4a1_var._position_relative = rot_apply(_g4a1_var._rotation_absolute, tc1); + } /* g4a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute); + instrument->_position_absolute[43] = _g4a1_var._position_absolute; + instrument->_position_relative[43] = _g4a1_var._position_relative; + _g4a1_var._position_relative_is_zero = coords_test_zero(_g4a1_var._position_relative); + instrument->counter_N[43] = instrument->counter_P[43] = instrument->counter_P2[43] = 0; + instrument->counter_AbsorbProp[43]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0042_g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "l", "0", "1.2600000000000016","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a1_setpos */ + +/* component monitor_2_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_2_position_setpos] component monitor_2_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_2_position_var._name, "monitor_2_position", 16384); + stracpy(_monitor_2_position_var._type, "Arm", 16384); + _monitor_2_position_var._index=44; + int current_setpos_index = 44; + /* component monitor_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_2_position_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_monitor_2_position_var._rotation_absolute, tr1, _monitor_2_position_var._rotation_relative); + _monitor_2_position_var._rotation_is_identity = rot_test_identity(_monitor_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.245); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _monitor_2_position_var._position_absolute); + _monitor_2_position_var._position_relative = rot_apply(_monitor_2_position_var._rotation_absolute, tc1); + } /* monitor_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute); + instrument->_position_absolute[44] = _monitor_2_position_var._position_absolute; + instrument->_position_relative[44] = _monitor_2_position_var._position_relative; + _monitor_2_position_var._position_relative_is_zero = coords_test_zero(_monitor_2_position_var._position_relative); + instrument->counter_N[44] = instrument->counter_P[44] = instrument->counter_P2[44] = 0; + instrument->counter_AbsorbProp[44]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0043_monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_2_position_setpos */ + +/* component g4a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a2_setpos] component g4a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a2_var._name, "g4a2", 16384); + stracpy(_g4a2_var._type, "Guide_four_side", 16384); + _g4a2_var._index=45; + int current_setpos_index = 45; + _g4a2_var._parameters.RIreflect[0]='\0'; + _g4a2_var._parameters.LIreflect[0]='\0'; + _g4a2_var._parameters.UIreflect[0]='\0'; + _g4a2_var._parameters.DIreflect[0]='\0'; + _g4a2_var._parameters.ROreflect[0]='\0'; + _g4a2_var._parameters.LOreflect[0]='\0'; + _g4a2_var._parameters.UOreflect[0]='\0'; + _g4a2_var._parameters.DOreflect[0]='\0'; + _g4a2_var._parameters.w1l = 0.04004; + _g4a2_var._parameters.w2l = 0.04004; + _g4a2_var._parameters.linwl = 0; + _g4a2_var._parameters.loutwl = 0; + _g4a2_var._parameters.w1r = 0.04004; + _g4a2_var._parameters.w2r = 0.04004; + _g4a2_var._parameters.linwr = 0.0; + _g4a2_var._parameters.loutwr = 0; + _g4a2_var._parameters.h1u = 0.037165; + _g4a2_var._parameters.h2u = 0.037165; + _g4a2_var._parameters.linhu = 0.0; + _g4a2_var._parameters.louthu = 0; + _g4a2_var._parameters.h1d = 0.037165; + _g4a2_var._parameters.h2d = 0.037165; + _g4a2_var._parameters.linhd = 0.0; + _g4a2_var._parameters.louthd = 0; + _g4a2_var._parameters.l = 1.9997499999999988; + _g4a2_var._parameters.R0 = 0.99; + _g4a2_var._parameters.Qcxl = 0.0221; + _g4a2_var._parameters.Qcxr = 0.0221; + _g4a2_var._parameters.Qcyu = 0.023; + _g4a2_var._parameters.Qcyd = 0.023; + _g4a2_var._parameters.alphaxl = 1.75; + _g4a2_var._parameters.alphaxr = 1.75; + _g4a2_var._parameters.alphayu = 1.8; + _g4a2_var._parameters.alphayd = 1.8; + _g4a2_var._parameters.Wxr = 0.015; + _g4a2_var._parameters.Wxl = 0.015; + _g4a2_var._parameters.Wyu = 0.015; + _g4a2_var._parameters.Wyd = 0.015; + _g4a2_var._parameters.mxr = 2.5; + _g4a2_var._parameters.mxl = 2.5; + _g4a2_var._parameters.myu = 2; + _g4a2_var._parameters.myd = 2; + _g4a2_var._parameters.QcxrOW = 0.0217; + _g4a2_var._parameters.QcxlOW = 0.0217; + _g4a2_var._parameters.QcyuOW = 0.0217; + _g4a2_var._parameters.QcydOW = 0.0217; + _g4a2_var._parameters.alphaxlOW = 6.07; + _g4a2_var._parameters.alphaxrOW = 6.07; + _g4a2_var._parameters.alphayuOW = 6.07; + _g4a2_var._parameters.alphaydOW = 6.07; + _g4a2_var._parameters.WxrOW = 0.003; + _g4a2_var._parameters.WxlOW = 0.003; + _g4a2_var._parameters.WyuOW = 0.003; + _g4a2_var._parameters.WydOW = 0.003; + _g4a2_var._parameters.mxrOW = 0; + _g4a2_var._parameters.mxlOW = 0; + _g4a2_var._parameters.myuOW = 0; + _g4a2_var._parameters.mydOW = 0; + _g4a2_var._parameters.rwallthick = 0.001; + _g4a2_var._parameters.lwallthick = 0.001; + _g4a2_var._parameters.uwallthick = 0.001; + _g4a2_var._parameters.dwallthick = 0.001; + + + /* component g4a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a2_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_g4a2_var._rotation_absolute, tr1, _g4a2_var._rotation_relative); + _g4a2_var._rotation_is_identity = rot_test_identity(_g4a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _g4a2_var._position_absolute); + _g4a2_var._position_relative = rot_apply(_g4a2_var._rotation_absolute, tc1); + } /* g4a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute); + instrument->_position_absolute[45] = _g4a2_var._position_absolute; + instrument->_position_relative[45] = _g4a2_var._position_relative; + _g4a2_var._position_relative_is_zero = coords_test_zero(_g4a2_var._position_relative); + instrument->counter_N[45] = instrument->counter_P[45] = instrument->counter_P2[45] = 0; + instrument->counter_AbsorbProp[45]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0044_g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a2_setpos */ + +/* component g4a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a3_setpos] component g4a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a3_var._name, "g4a3", 16384); + stracpy(_g4a3_var._type, "Guide_four_side", 16384); + _g4a3_var._index=46; + int current_setpos_index = 46; + _g4a3_var._parameters.RIreflect[0]='\0'; + _g4a3_var._parameters.LIreflect[0]='\0'; + _g4a3_var._parameters.UIreflect[0]='\0'; + _g4a3_var._parameters.DIreflect[0]='\0'; + _g4a3_var._parameters.ROreflect[0]='\0'; + _g4a3_var._parameters.LOreflect[0]='\0'; + _g4a3_var._parameters.UOreflect[0]='\0'; + _g4a3_var._parameters.DOreflect[0]='\0'; + _g4a3_var._parameters.w1l = 0.04004; + _g4a3_var._parameters.w2l = 0.04004; + _g4a3_var._parameters.linwl = 0; + _g4a3_var._parameters.loutwl = 0; + _g4a3_var._parameters.w1r = 0.04004; + _g4a3_var._parameters.w2r = 0.04004; + _g4a3_var._parameters.linwr = 0.0; + _g4a3_var._parameters.loutwr = 0; + _g4a3_var._parameters.h1u = 0.037165; + _g4a3_var._parameters.h2u = 0.037165; + _g4a3_var._parameters.linhu = 0.0; + _g4a3_var._parameters.louthu = 0; + _g4a3_var._parameters.h1d = 0.037165; + _g4a3_var._parameters.h2d = 0.037165; + _g4a3_var._parameters.linhd = 0.0; + _g4a3_var._parameters.louthd = 0; + _g4a3_var._parameters.l = 2.4252499999999984; + _g4a3_var._parameters.R0 = 0.99; + _g4a3_var._parameters.Qcxl = 0.0221; + _g4a3_var._parameters.Qcxr = 0.0221; + _g4a3_var._parameters.Qcyu = 0.023; + _g4a3_var._parameters.Qcyd = 0.023; + _g4a3_var._parameters.alphaxl = 1.75; + _g4a3_var._parameters.alphaxr = 1.75; + _g4a3_var._parameters.alphayu = 1.8; + _g4a3_var._parameters.alphayd = 1.8; + _g4a3_var._parameters.Wxr = 0.015; + _g4a3_var._parameters.Wxl = 0.015; + _g4a3_var._parameters.Wyu = 0.015; + _g4a3_var._parameters.Wyd = 0.015; + _g4a3_var._parameters.mxr = 2.5; + _g4a3_var._parameters.mxl = 2.5; + _g4a3_var._parameters.myu = 2; + _g4a3_var._parameters.myd = 2; + _g4a3_var._parameters.QcxrOW = 0.0217; + _g4a3_var._parameters.QcxlOW = 0.0217; + _g4a3_var._parameters.QcyuOW = 0.0217; + _g4a3_var._parameters.QcydOW = 0.0217; + _g4a3_var._parameters.alphaxlOW = 6.07; + _g4a3_var._parameters.alphaxrOW = 6.07; + _g4a3_var._parameters.alphayuOW = 6.07; + _g4a3_var._parameters.alphaydOW = 6.07; + _g4a3_var._parameters.WxrOW = 0.003; + _g4a3_var._parameters.WxlOW = 0.003; + _g4a3_var._parameters.WyuOW = 0.003; + _g4a3_var._parameters.WydOW = 0.003; + _g4a3_var._parameters.mxrOW = 0; + _g4a3_var._parameters.mxlOW = 0; + _g4a3_var._parameters.myuOW = 0; + _g4a3_var._parameters.mydOW = 0; + _g4a3_var._parameters.rwallthick = 0.001; + _g4a3_var._parameters.lwallthick = 0.001; + _g4a3_var._parameters.uwallthick = 0.001; + _g4a3_var._parameters.dwallthick = 0.001; + + + /* component g4a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a3_var._rotation_absolute); + rot_transpose(_g4a2_var._rotation_absolute, tr1); + rot_mul(_g4a3_var._rotation_absolute, tr1, _g4a3_var._rotation_relative); + _g4a3_var._rotation_is_identity = rot_test_identity(_g4a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 21.25025); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a2_var._position_absolute, _g4a3_var._position_absolute); + _g4a3_var._position_relative = rot_apply(_g4a3_var._rotation_absolute, tc1); + } /* g4a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute); + instrument->_position_absolute[46] = _g4a3_var._position_absolute; + instrument->_position_relative[46] = _g4a3_var._position_relative; + _g4a3_var._position_relative_is_zero = coords_test_zero(_g4a3_var._position_relative); + instrument->counter_N[46] = instrument->counter_P[46] = instrument->counter_P2[46] = 0; + instrument->counter_AbsorbProp[46]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0045_g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "l", "0", "2.4252499999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a3_setpos */ + +/* component fo4_position=Arm() SETTING, POSITION/ROTATION */ +int _fo4_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo4_position_setpos] component fo4_position=Arm() SETTING [Arm:0]"); + stracpy(_fo4_position_var._name, "fo4_position", 16384); + stracpy(_fo4_position_var._type, "Arm", 16384); + _fo4_position_var._index=47; + int current_setpos_index = 47; + /* component fo4_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo4_position_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo4_position_var._rotation_absolute, tr1, _fo4_position_var._rotation_relative); + _fo4_position_var._rotation_is_identity = rot_test_identity(_fo4_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6855); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo4_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo4_position_var._position_absolute); + _fo4_position_var._position_relative = rot_apply(_fo4_position_var._rotation_absolute, tc1); + } /* fo4_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute); + instrument->_position_absolute[47] = _fo4_position_var._position_absolute; + instrument->_position_relative[47] = _fo4_position_var._position_relative; + _fo4_position_var._position_relative_is_zero = coords_test_zero(_fo4_position_var._position_relative); + instrument->counter_N[47] = instrument->counter_P[47] = instrument->counter_P2[47] = 0; + instrument->counter_AbsorbProp[47]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0046_fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo4_position_setpos */ + +/* component fo_chopper_4=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_4_setpos] component fo_chopper_4=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_4_var._name, "fo_chopper_4", 16384); + stracpy(_fo_chopper_4_var._type, "MultiDiskChopper", 16384); + _fo_chopper_4_var._index=48; + int current_setpos_index = 48; + if("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" && strlen("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998")) + stracpy(_fo_chopper_4_var._parameters.slit_center, "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" ? "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_center[0]='\0'; + if("32.98;31.82;30.74;29.27;28.77;26.76" && strlen("32.98;31.82;30.74;29.27;28.77;26.76")) + stracpy(_fo_chopper_4_var._parameters.slit_width, "32.98;31.82;30.74;29.27;28.77;26.76" ? "32.98;31.82;30.74;29.27;28.77;26.76" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_width[0]='\0'; + _fo_chopper_4_var._parameters.nslits = 6; + _fo_chopper_4_var._parameters.delta_y = -0.7075; + _fo_chopper_4_var._parameters.nu = -14.0; + _fo_chopper_4_var._parameters.nrev = 0; + _fo_chopper_4_var._parameters.ratio = 1; + _fo_chopper_4_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_4; + _fo_chopper_4_var._parameters.delay = 0; + _fo_chopper_4_var._parameters.isfirst = 0; + _fo_chopper_4_var._parameters.phase = fo4_phase; + _fo_chopper_4_var._parameters.radius = 0.75; + _fo_chopper_4_var._parameters.equal = 0; + _fo_chopper_4_var._parameters.abs_out = 0; + _fo_chopper_4_var._parameters.verbose = 0; + + + /* component fo_chopper_4=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo4_position_var._rotation_absolute, _fo_chopper_4_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_4_var._rotation_absolute, tr1, _fo_chopper_4_var._rotation_relative); + _fo_chopper_4_var._rotation_is_identity = rot_test_identity(_fo_chopper_4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo4_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_4_var._position_absolute = coords_add(_fo4_position_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo_chopper_4_var._position_absolute); + _fo_chopper_4_var._position_relative = rot_apply(_fo_chopper_4_var._rotation_absolute, tc1); + } /* fo_chopper_4=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute); + instrument->_position_absolute[48] = _fo_chopper_4_var._position_absolute; + instrument->_position_relative[48] = _fo_chopper_4_var._position_relative; + _fo_chopper_4_var._position_relative_is_zero = coords_test_zero(_fo_chopper_4_var._position_relative); + instrument->counter_N[48] = instrument->counter_P[48] = instrument->counter_P2[48] = 0; + instrument->counter_AbsorbProp[48]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0047_fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "slit_center", "0 180", "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", "char*"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "slit_width", "10 20", "32.98;31.82;30.74;29.27;28.77;26.76", "char*"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_4","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "phase", "0", "fo4_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_4_setpos */ + +/* component g4b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b1_setpos] component g4b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b1_var._name, "g4b1", 16384); + stracpy(_g4b1_var._type, "Guide_four_side", 16384); + _g4b1_var._index=49; + int current_setpos_index = 49; + _g4b1_var._parameters.RIreflect[0]='\0'; + _g4b1_var._parameters.LIreflect[0]='\0'; + _g4b1_var._parameters.UIreflect[0]='\0'; + _g4b1_var._parameters.DIreflect[0]='\0'; + _g4b1_var._parameters.ROreflect[0]='\0'; + _g4b1_var._parameters.LOreflect[0]='\0'; + _g4b1_var._parameters.UOreflect[0]='\0'; + _g4b1_var._parameters.DOreflect[0]='\0'; + _g4b1_var._parameters.w1l = 0.04004; + _g4b1_var._parameters.w2l = 0.04004; + _g4b1_var._parameters.linwl = 0; + _g4b1_var._parameters.loutwl = 0; + _g4b1_var._parameters.w1r = 0.04004; + _g4b1_var._parameters.w2r = 0.04004; + _g4b1_var._parameters.linwr = 0.0; + _g4b1_var._parameters.loutwr = 0; + _g4b1_var._parameters.h1u = 0.037165; + _g4b1_var._parameters.h2u = 0.037165; + _g4b1_var._parameters.linhu = 0.0; + _g4b1_var._parameters.louthu = 0; + _g4b1_var._parameters.h1d = 0.037165; + _g4b1_var._parameters.h2d = 0.037165; + _g4b1_var._parameters.linhd = 0.0; + _g4b1_var._parameters.louthd = 0; + _g4b1_var._parameters.l = 0.5565999999999995; + _g4b1_var._parameters.R0 = 0.99; + _g4b1_var._parameters.Qcxl = 0.0221; + _g4b1_var._parameters.Qcxr = 0.0221; + _g4b1_var._parameters.Qcyu = 0.023; + _g4b1_var._parameters.Qcyd = 0.023; + _g4b1_var._parameters.alphaxl = 1.75; + _g4b1_var._parameters.alphaxr = 1.75; + _g4b1_var._parameters.alphayu = 1.8; + _g4b1_var._parameters.alphayd = 1.8; + _g4b1_var._parameters.Wxr = 0.015; + _g4b1_var._parameters.Wxl = 0.015; + _g4b1_var._parameters.Wyu = 0.015; + _g4b1_var._parameters.Wyd = 0.015; + _g4b1_var._parameters.mxr = 2.5; + _g4b1_var._parameters.mxl = 2.5; + _g4b1_var._parameters.myu = 2; + _g4b1_var._parameters.myd = 2; + _g4b1_var._parameters.QcxrOW = 0.0217; + _g4b1_var._parameters.QcxlOW = 0.0217; + _g4b1_var._parameters.QcyuOW = 0.0217; + _g4b1_var._parameters.QcydOW = 0.0217; + _g4b1_var._parameters.alphaxlOW = 6.07; + _g4b1_var._parameters.alphaxrOW = 6.07; + _g4b1_var._parameters.alphayuOW = 6.07; + _g4b1_var._parameters.alphaydOW = 6.07; + _g4b1_var._parameters.WxrOW = 0.003; + _g4b1_var._parameters.WxlOW = 0.003; + _g4b1_var._parameters.WyuOW = 0.003; + _g4b1_var._parameters.WydOW = 0.003; + _g4b1_var._parameters.mxrOW = 0; + _g4b1_var._parameters.mxlOW = 0; + _g4b1_var._parameters.myuOW = 0; + _g4b1_var._parameters.mydOW = 0; + _g4b1_var._parameters.rwallthick = 0.001; + _g4b1_var._parameters.lwallthick = 0.001; + _g4b1_var._parameters.uwallthick = 0.001; + _g4b1_var._parameters.dwallthick = 0.001; + + + /* component g4b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b1_var._rotation_absolute); + rot_transpose(_fo_chopper_4_var._rotation_absolute, tr1); + rot_mul(_g4b1_var._rotation_absolute, tr1, _g4b1_var._rotation_relative); + _g4b1_var._rotation_is_identity = rot_test_identity(_g4b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6955); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_4_var._position_absolute, _g4b1_var._position_absolute); + _g4b1_var._position_relative = rot_apply(_g4b1_var._rotation_absolute, tc1); + } /* g4b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute); + instrument->_position_absolute[49] = _g4b1_var._position_absolute; + instrument->_position_relative[49] = _g4b1_var._position_relative; + _g4b1_var._position_relative_is_zero = coords_test_zero(_g4b1_var._position_relative); + instrument->counter_N[49] = instrument->counter_P[49] = instrument->counter_P2[49] = 0; + instrument->counter_AbsorbProp[49]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0048_g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "l", "0", "0.5565999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b1_setpos */ + +/* component g4b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b2_setpos] component g4b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b2_var._name, "g4b2", 16384); + stracpy(_g4b2_var._type, "Guide_four_side", 16384); + _g4b2_var._index=50; + int current_setpos_index = 50; + _g4b2_var._parameters.RIreflect[0]='\0'; + _g4b2_var._parameters.LIreflect[0]='\0'; + _g4b2_var._parameters.UIreflect[0]='\0'; + _g4b2_var._parameters.DIreflect[0]='\0'; + _g4b2_var._parameters.ROreflect[0]='\0'; + _g4b2_var._parameters.LOreflect[0]='\0'; + _g4b2_var._parameters.UOreflect[0]='\0'; + _g4b2_var._parameters.DOreflect[0]='\0'; + _g4b2_var._parameters.w1l = 0.04004; + _g4b2_var._parameters.w2l = 0.04004; + _g4b2_var._parameters.linwl = 0; + _g4b2_var._parameters.loutwl = 0; + _g4b2_var._parameters.w1r = 0.04004; + _g4b2_var._parameters.w2r = 0.04004; + _g4b2_var._parameters.linwr = 0.0; + _g4b2_var._parameters.loutwr = 0; + _g4b2_var._parameters.h1u = 0.037165; + _g4b2_var._parameters.h2u = 0.037165; + _g4b2_var._parameters.linhu = 0.0; + _g4b2_var._parameters.louthu = 0; + _g4b2_var._parameters.h1d = 0.037165; + _g4b2_var._parameters.h2d = 0.037165; + _g4b2_var._parameters.linhd = 0.0; + _g4b2_var._parameters.louthd = 0; + _g4b2_var._parameters.l = 1.7800000000000011; + _g4b2_var._parameters.R0 = 0.99; + _g4b2_var._parameters.Qcxl = 0.0221; + _g4b2_var._parameters.Qcxr = 0.0221; + _g4b2_var._parameters.Qcyu = 0.023; + _g4b2_var._parameters.Qcyd = 0.023; + _g4b2_var._parameters.alphaxl = 1.75; + _g4b2_var._parameters.alphaxr = 1.75; + _g4b2_var._parameters.alphayu = 1.8; + _g4b2_var._parameters.alphayd = 1.8; + _g4b2_var._parameters.Wxr = 0.015; + _g4b2_var._parameters.Wxl = 0.015; + _g4b2_var._parameters.Wyu = 0.015; + _g4b2_var._parameters.Wyd = 0.015; + _g4b2_var._parameters.mxr = 3.0; + _g4b2_var._parameters.mxl = 3.0; + _g4b2_var._parameters.myu = 2; + _g4b2_var._parameters.myd = 2; + _g4b2_var._parameters.QcxrOW = 0.0217; + _g4b2_var._parameters.QcxlOW = 0.0217; + _g4b2_var._parameters.QcyuOW = 0.0217; + _g4b2_var._parameters.QcydOW = 0.0217; + _g4b2_var._parameters.alphaxlOW = 6.07; + _g4b2_var._parameters.alphaxrOW = 6.07; + _g4b2_var._parameters.alphayuOW = 6.07; + _g4b2_var._parameters.alphaydOW = 6.07; + _g4b2_var._parameters.WxrOW = 0.003; + _g4b2_var._parameters.WxlOW = 0.003; + _g4b2_var._parameters.WyuOW = 0.003; + _g4b2_var._parameters.WydOW = 0.003; + _g4b2_var._parameters.mxrOW = 0; + _g4b2_var._parameters.mxlOW = 0; + _g4b2_var._parameters.myuOW = 0; + _g4b2_var._parameters.mydOW = 0; + _g4b2_var._parameters.rwallthick = 0.001; + _g4b2_var._parameters.lwallthick = 0.001; + _g4b2_var._parameters.uwallthick = 0.001; + _g4b2_var._parameters.dwallthick = 0.001; + + + /* component g4b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b2_var._rotation_absolute); + rot_transpose(_g4b1_var._rotation_absolute, tr1); + rot_mul(_g4b2_var._rotation_absolute, tr1, _g4b2_var._rotation_relative); + _g4b2_var._rotation_is_identity = rot_test_identity(_g4b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 24.2561); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b1_var._position_absolute, _g4b2_var._position_absolute); + _g4b2_var._position_relative = rot_apply(_g4b2_var._rotation_absolute, tc1); + } /* g4b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute); + instrument->_position_absolute[50] = _g4b2_var._position_absolute; + instrument->_position_relative[50] = _g4b2_var._position_relative; + _g4b2_var._position_relative_is_zero = coords_test_zero(_g4b2_var._position_relative); + instrument->counter_N[50] = instrument->counter_P[50] = instrument->counter_P2[50] = 0; + instrument->counter_AbsorbProp[50]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0049_g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "l", "0", "1.7800000000000011","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b2_setpos */ + +/* component g4b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b3_setpos] component g4b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b3_var._name, "g4b3", 16384); + stracpy(_g4b3_var._type, "Guide_four_side", 16384); + _g4b3_var._index=51; + int current_setpos_index = 51; + _g4b3_var._parameters.RIreflect[0]='\0'; + _g4b3_var._parameters.LIreflect[0]='\0'; + _g4b3_var._parameters.UIreflect[0]='\0'; + _g4b3_var._parameters.DIreflect[0]='\0'; + _g4b3_var._parameters.ROreflect[0]='\0'; + _g4b3_var._parameters.LOreflect[0]='\0'; + _g4b3_var._parameters.UOreflect[0]='\0'; + _g4b3_var._parameters.DOreflect[0]='\0'; + _g4b3_var._parameters.w1l = 0.04004; + _g4b3_var._parameters.w2l = 0.04004; + _g4b3_var._parameters.linwl = 0; + _g4b3_var._parameters.loutwl = 0; + _g4b3_var._parameters.w1r = 0.04004; + _g4b3_var._parameters.w2r = 0.04004; + _g4b3_var._parameters.linwr = 0.0; + _g4b3_var._parameters.loutwr = 0; + _g4b3_var._parameters.h1u = 0.037165; + _g4b3_var._parameters.h2u = 0.037165; + _g4b3_var._parameters.linhu = 0.0; + _g4b3_var._parameters.louthu = 0; + _g4b3_var._parameters.h1d = 0.037165; + _g4b3_var._parameters.h2d = 0.037165; + _g4b3_var._parameters.linhd = 0.0; + _g4b3_var._parameters.louthd = 0; + _g4b3_var._parameters.l = 2.1380000000000017; + _g4b3_var._parameters.R0 = 0.99; + _g4b3_var._parameters.Qcxl = 0.0217; + _g4b3_var._parameters.Qcxr = 0.0217; + _g4b3_var._parameters.Qcyu = 0.023; + _g4b3_var._parameters.Qcyd = 0.023; + _g4b3_var._parameters.alphaxl = 2.5; + _g4b3_var._parameters.alphaxr = 2.5; + _g4b3_var._parameters.alphayu = 1.8; + _g4b3_var._parameters.alphayd = 1.8; + _g4b3_var._parameters.Wxr = 0.015; + _g4b3_var._parameters.Wxl = 0.015; + _g4b3_var._parameters.Wyu = 0.015; + _g4b3_var._parameters.Wyd = 0.015; + _g4b3_var._parameters.mxr = 3.5; + _g4b3_var._parameters.mxl = 3.5; + _g4b3_var._parameters.myu = 2; + _g4b3_var._parameters.myd = 2; + _g4b3_var._parameters.QcxrOW = 0.0217; + _g4b3_var._parameters.QcxlOW = 0.0217; + _g4b3_var._parameters.QcyuOW = 0.0217; + _g4b3_var._parameters.QcydOW = 0.0217; + _g4b3_var._parameters.alphaxlOW = 6.07; + _g4b3_var._parameters.alphaxrOW = 6.07; + _g4b3_var._parameters.alphayuOW = 6.07; + _g4b3_var._parameters.alphaydOW = 6.07; + _g4b3_var._parameters.WxrOW = 0.003; + _g4b3_var._parameters.WxlOW = 0.003; + _g4b3_var._parameters.WyuOW = 0.003; + _g4b3_var._parameters.WydOW = 0.003; + _g4b3_var._parameters.mxrOW = 0; + _g4b3_var._parameters.mxlOW = 0; + _g4b3_var._parameters.myuOW = 0; + _g4b3_var._parameters.mydOW = 0; + _g4b3_var._parameters.rwallthick = 0.001; + _g4b3_var._parameters.lwallthick = 0.001; + _g4b3_var._parameters.uwallthick = 0.001; + _g4b3_var._parameters.dwallthick = 0.001; + + + /* component g4b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b3_var._rotation_absolute); + rot_transpose(_g4b2_var._rotation_absolute, tr1); + rot_mul(_g4b3_var._rotation_absolute, tr1, _g4b3_var._rotation_relative); + _g4b3_var._rotation_is_identity = rot_test_identity(_g4b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 26.0366); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b2_var._position_absolute, _g4b3_var._position_absolute); + _g4b3_var._position_relative = rot_apply(_g4b3_var._rotation_absolute, tc1); + } /* g4b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute); + instrument->_position_absolute[51] = _g4b3_var._position_absolute; + instrument->_position_relative[51] = _g4b3_var._position_relative; + _g4b3_var._position_relative_is_zero = coords_test_zero(_g4b3_var._position_relative); + instrument->counter_N[51] = instrument->counter_P[51] = instrument->counter_P2[51] = 0; + instrument->counter_AbsorbProp[51]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0050_g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "l", "0", "2.1380000000000017","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b3_setpos */ + +/* component g4b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b4_setpos] component g4b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b4_var._name, "g4b4", 16384); + stracpy(_g4b4_var._type, "Guide_four_side", 16384); + _g4b4_var._index=52; + int current_setpos_index = 52; + _g4b4_var._parameters.RIreflect[0]='\0'; + _g4b4_var._parameters.LIreflect[0]='\0'; + _g4b4_var._parameters.UIreflect[0]='\0'; + _g4b4_var._parameters.DIreflect[0]='\0'; + _g4b4_var._parameters.ROreflect[0]='\0'; + _g4b4_var._parameters.LOreflect[0]='\0'; + _g4b4_var._parameters.UOreflect[0]='\0'; + _g4b4_var._parameters.DOreflect[0]='\0'; + _g4b4_var._parameters.w1l = 0.04004; + _g4b4_var._parameters.w2l = 0.04004; + _g4b4_var._parameters.linwl = 0; + _g4b4_var._parameters.loutwl = 0; + _g4b4_var._parameters.w1r = 0.04004; + _g4b4_var._parameters.w2r = 0.04004; + _g4b4_var._parameters.linwr = 0.0; + _g4b4_var._parameters.loutwr = 0; + _g4b4_var._parameters.h1u = 0.037165; + _g4b4_var._parameters.h2u = 0.037165; + _g4b4_var._parameters.linhu = 0.0; + _g4b4_var._parameters.louthu = 0; + _g4b4_var._parameters.h1d = 0.037165; + _g4b4_var._parameters.h2d = 0.037165; + _g4b4_var._parameters.linhd = 0.0; + _g4b4_var._parameters.louthd = 0; + _g4b4_var._parameters.l = 1.9997499999999988; + _g4b4_var._parameters.R0 = 0.99; + _g4b4_var._parameters.Qcxl = 0.0217; + _g4b4_var._parameters.Qcxr = 0.0217; + _g4b4_var._parameters.Qcyu = 0.023; + _g4b4_var._parameters.Qcyd = 0.023; + _g4b4_var._parameters.alphaxl = 2.5; + _g4b4_var._parameters.alphaxr = 2.5; + _g4b4_var._parameters.alphayu = 1.8; + _g4b4_var._parameters.alphayd = 1.8; + _g4b4_var._parameters.Wxr = 0.015; + _g4b4_var._parameters.Wxl = 0.015; + _g4b4_var._parameters.Wyu = 0.015; + _g4b4_var._parameters.Wyd = 0.015; + _g4b4_var._parameters.mxr = 3.5; + _g4b4_var._parameters.mxl = 3.5; + _g4b4_var._parameters.myu = 2; + _g4b4_var._parameters.myd = 2; + _g4b4_var._parameters.QcxrOW = 0.0217; + _g4b4_var._parameters.QcxlOW = 0.0217; + _g4b4_var._parameters.QcyuOW = 0.0217; + _g4b4_var._parameters.QcydOW = 0.0217; + _g4b4_var._parameters.alphaxlOW = 6.07; + _g4b4_var._parameters.alphaxrOW = 6.07; + _g4b4_var._parameters.alphayuOW = 6.07; + _g4b4_var._parameters.alphaydOW = 6.07; + _g4b4_var._parameters.WxrOW = 0.003; + _g4b4_var._parameters.WxlOW = 0.003; + _g4b4_var._parameters.WyuOW = 0.003; + _g4b4_var._parameters.WydOW = 0.003; + _g4b4_var._parameters.mxrOW = 0; + _g4b4_var._parameters.mxlOW = 0; + _g4b4_var._parameters.myuOW = 0; + _g4b4_var._parameters.mydOW = 0; + _g4b4_var._parameters.rwallthick = 0.001; + _g4b4_var._parameters.lwallthick = 0.001; + _g4b4_var._parameters.uwallthick = 0.001; + _g4b4_var._parameters.dwallthick = 0.001; + + + /* component g4b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b4_var._rotation_absolute); + rot_transpose(_g4b3_var._rotation_absolute, tr1); + rot_mul(_g4b4_var._rotation_absolute, tr1, _g4b4_var._rotation_relative); + _g4b4_var._rotation_is_identity = rot_test_identity(_g4b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 28.1786); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b3_var._position_absolute, _g4b4_var._position_absolute); + _g4b4_var._position_relative = rot_apply(_g4b4_var._rotation_absolute, tc1); + } /* g4b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute); + instrument->_position_absolute[52] = _g4b4_var._position_absolute; + instrument->_position_relative[52] = _g4b4_var._position_relative; + _g4b4_var._position_relative_is_zero = coords_test_zero(_g4b4_var._position_relative); + instrument->counter_N[52] = instrument->counter_P[52] = instrument->counter_P2[52] = 0; + instrument->counter_AbsorbProp[52]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0051_g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b4_setpos */ + +/* component g4b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b5_setpos] component g4b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b5_var._name, "g4b5", 16384); + stracpy(_g4b5_var._type, "Guide_four_side", 16384); + _g4b5_var._index=53; + int current_setpos_index = 53; + _g4b5_var._parameters.RIreflect[0]='\0'; + _g4b5_var._parameters.LIreflect[0]='\0'; + _g4b5_var._parameters.UIreflect[0]='\0'; + _g4b5_var._parameters.DIreflect[0]='\0'; + _g4b5_var._parameters.ROreflect[0]='\0'; + _g4b5_var._parameters.LOreflect[0]='\0'; + _g4b5_var._parameters.UOreflect[0]='\0'; + _g4b5_var._parameters.DOreflect[0]='\0'; + _g4b5_var._parameters.w1l = 0.04004; + _g4b5_var._parameters.w2l = 0.04004; + _g4b5_var._parameters.linwl = 0; + _g4b5_var._parameters.loutwl = 0; + _g4b5_var._parameters.w1r = 0.04004; + _g4b5_var._parameters.w2r = 0.04004; + _g4b5_var._parameters.linwr = 0.0; + _g4b5_var._parameters.loutwr = 0; + _g4b5_var._parameters.h1u = 0.037165; + _g4b5_var._parameters.h2u = 0.037165; + _g4b5_var._parameters.linhu = 0.0; + _g4b5_var._parameters.louthu = 0; + _g4b5_var._parameters.h1d = 0.037165; + _g4b5_var._parameters.h2d = 0.037165; + _g4b5_var._parameters.linhd = 0.0; + _g4b5_var._parameters.louthd = 0; + _g4b5_var._parameters.l = 1.4049499999999995; + _g4b5_var._parameters.R0 = 0.99; + _g4b5_var._parameters.Qcxl = 0.0221; + _g4b5_var._parameters.Qcxr = 0.0221; + _g4b5_var._parameters.Qcyu = 0.023; + _g4b5_var._parameters.Qcyd = 0.023; + _g4b5_var._parameters.alphaxl = 1.75; + _g4b5_var._parameters.alphaxr = 1.75; + _g4b5_var._parameters.alphayu = 1.8; + _g4b5_var._parameters.alphayd = 1.8; + _g4b5_var._parameters.Wxr = 0.015; + _g4b5_var._parameters.Wxl = 0.015; + _g4b5_var._parameters.Wyu = 0.015; + _g4b5_var._parameters.Wyd = 0.015; + _g4b5_var._parameters.mxr = 3; + _g4b5_var._parameters.mxl = 3; + _g4b5_var._parameters.myu = 2; + _g4b5_var._parameters.myd = 2; + _g4b5_var._parameters.QcxrOW = 0.0217; + _g4b5_var._parameters.QcxlOW = 0.0217; + _g4b5_var._parameters.QcyuOW = 0.0217; + _g4b5_var._parameters.QcydOW = 0.0217; + _g4b5_var._parameters.alphaxlOW = 6.07; + _g4b5_var._parameters.alphaxrOW = 6.07; + _g4b5_var._parameters.alphayuOW = 6.07; + _g4b5_var._parameters.alphaydOW = 6.07; + _g4b5_var._parameters.WxrOW = 0.003; + _g4b5_var._parameters.WxlOW = 0.003; + _g4b5_var._parameters.WyuOW = 0.003; + _g4b5_var._parameters.WydOW = 0.003; + _g4b5_var._parameters.mxrOW = 0; + _g4b5_var._parameters.mxlOW = 0; + _g4b5_var._parameters.myuOW = 0; + _g4b5_var._parameters.mydOW = 0; + _g4b5_var._parameters.rwallthick = 0.001; + _g4b5_var._parameters.lwallthick = 0.001; + _g4b5_var._parameters.uwallthick = 0.001; + _g4b5_var._parameters.dwallthick = 0.001; + + + /* component g4b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b5_var._rotation_absolute); + rot_transpose(_g4b4_var._rotation_absolute, tr1); + rot_mul(_g4b5_var._rotation_absolute, tr1, _g4b5_var._rotation_relative); + _g4b5_var._rotation_is_identity = rot_test_identity(_g4b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 30.17885); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b4_var._position_absolute, _g4b5_var._position_absolute); + _g4b5_var._position_relative = rot_apply(_g4b5_var._rotation_absolute, tc1); + } /* g4b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute); + instrument->_position_absolute[53] = _g4b5_var._position_absolute; + instrument->_position_relative[53] = _g4b5_var._position_relative; + _g4b5_var._position_relative_is_zero = coords_test_zero(_g4b5_var._position_relative); + instrument->counter_N[53] = instrument->counter_P[53] = instrument->counter_P2[53] = 0; + instrument->counter_AbsorbProp[53]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0052_g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "l", "0", "1.4049499999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b5_setpos */ + +/* component g4b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b6_setpos] component g4b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b6_var._name, "g4b6", 16384); + stracpy(_g4b6_var._type, "Guide_four_side", 16384); + _g4b6_var._index=54; + int current_setpos_index = 54; + _g4b6_var._parameters.RIreflect[0]='\0'; + _g4b6_var._parameters.LIreflect[0]='\0'; + _g4b6_var._parameters.UIreflect[0]='\0'; + _g4b6_var._parameters.DIreflect[0]='\0'; + _g4b6_var._parameters.ROreflect[0]='\0'; + _g4b6_var._parameters.LOreflect[0]='\0'; + _g4b6_var._parameters.UOreflect[0]='\0'; + _g4b6_var._parameters.DOreflect[0]='\0'; + _g4b6_var._parameters.w1l = 0.04004; + _g4b6_var._parameters.w2l = 0.04004; + _g4b6_var._parameters.linwl = 0; + _g4b6_var._parameters.loutwl = 0; + _g4b6_var._parameters.w1r = 0.04004; + _g4b6_var._parameters.w2r = 0.04004; + _g4b6_var._parameters.linwr = 0.0; + _g4b6_var._parameters.loutwr = 0; + _g4b6_var._parameters.h1u = 0.037165; + _g4b6_var._parameters.h2u = 0.037165; + _g4b6_var._parameters.linhu = 0.0; + _g4b6_var._parameters.louthu = 0; + _g4b6_var._parameters.h1d = 0.037165; + _g4b6_var._parameters.h2d = 0.037165; + _g4b6_var._parameters.linhd = 0.0; + _g4b6_var._parameters.louthd = 0; + _g4b6_var._parameters.l = 0.4106999999999985; + _g4b6_var._parameters.R0 = 0.99; + _g4b6_var._parameters.Qcxl = 0.0221; + _g4b6_var._parameters.Qcxr = 0.0221; + _g4b6_var._parameters.Qcyu = 0.023; + _g4b6_var._parameters.Qcyd = 0.023; + _g4b6_var._parameters.alphaxl = 1.75; + _g4b6_var._parameters.alphaxr = 1.75; + _g4b6_var._parameters.alphayu = 1.8; + _g4b6_var._parameters.alphayd = 1.8; + _g4b6_var._parameters.Wxr = 0.015; + _g4b6_var._parameters.Wxl = 0.015; + _g4b6_var._parameters.Wyu = 0.015; + _g4b6_var._parameters.Wyd = 0.015; + _g4b6_var._parameters.mxr = 3; + _g4b6_var._parameters.mxl = 3; + _g4b6_var._parameters.myu = 2; + _g4b6_var._parameters.myd = 2; + _g4b6_var._parameters.QcxrOW = 0.0217; + _g4b6_var._parameters.QcxlOW = 0.0217; + _g4b6_var._parameters.QcyuOW = 0.0217; + _g4b6_var._parameters.QcydOW = 0.0217; + _g4b6_var._parameters.alphaxlOW = 6.07; + _g4b6_var._parameters.alphaxrOW = 6.07; + _g4b6_var._parameters.alphayuOW = 6.07; + _g4b6_var._parameters.alphaydOW = 6.07; + _g4b6_var._parameters.WxrOW = 0.003; + _g4b6_var._parameters.WxlOW = 0.003; + _g4b6_var._parameters.WyuOW = 0.003; + _g4b6_var._parameters.WydOW = 0.003; + _g4b6_var._parameters.mxrOW = 0; + _g4b6_var._parameters.mxlOW = 0; + _g4b6_var._parameters.myuOW = 0; + _g4b6_var._parameters.mydOW = 0; + _g4b6_var._parameters.rwallthick = 0.001; + _g4b6_var._parameters.lwallthick = 0.001; + _g4b6_var._parameters.uwallthick = 0.001; + _g4b6_var._parameters.dwallthick = 0.001; + + + /* component g4b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b6_var._rotation_absolute); + rot_transpose(_g4b5_var._rotation_absolute, tr1); + rot_mul(_g4b6_var._rotation_absolute, tr1, _g4b6_var._rotation_relative); + _g4b6_var._rotation_is_identity = rot_test_identity(_g4b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 31.5893); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b5_var._position_absolute, _g4b6_var._position_absolute); + _g4b6_var._position_relative = rot_apply(_g4b6_var._rotation_absolute, tc1); + } /* g4b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute); + instrument->_position_absolute[54] = _g4b6_var._position_absolute; + instrument->_position_relative[54] = _g4b6_var._position_relative; + _g4b6_var._position_relative_is_zero = coords_test_zero(_g4b6_var._position_relative); + instrument->counter_N[54] = instrument->counter_P[54] = instrument->counter_P2[54] = 0; + instrument->counter_AbsorbProp[54]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0053_g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "l", "0", "0.4106999999999985","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b6_setpos */ + +/* component g5a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5a1_setpos] component g5a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5a1_var._name, "g5a1", 16384); + stracpy(_g5a1_var._type, "Guide_four_side", 16384); + _g5a1_var._index=55; + int current_setpos_index = 55; + _g5a1_var._parameters.RIreflect[0]='\0'; + _g5a1_var._parameters.LIreflect[0]='\0'; + _g5a1_var._parameters.UIreflect[0]='\0'; + _g5a1_var._parameters.DIreflect[0]='\0'; + _g5a1_var._parameters.ROreflect[0]='\0'; + _g5a1_var._parameters.LOreflect[0]='\0'; + _g5a1_var._parameters.UOreflect[0]='\0'; + _g5a1_var._parameters.DOreflect[0]='\0'; + _g5a1_var._parameters.w1l = 0.04004; + _g5a1_var._parameters.w2l = 0.04004; + _g5a1_var._parameters.linwl = 0; + _g5a1_var._parameters.loutwl = 0; + _g5a1_var._parameters.w1r = 0.04004; + _g5a1_var._parameters.w2r = 0.04004; + _g5a1_var._parameters.linwr = 0.0; + _g5a1_var._parameters.loutwr = 0; + _g5a1_var._parameters.h1u = 0.037165; + _g5a1_var._parameters.h2u = 0.002; + _g5a1_var._parameters.linhu = 18.0; + _g5a1_var._parameters.louthu = 17.005499999999998; + _g5a1_var._parameters.h1d = 0.037165; + _g5a1_var._parameters.h2d = 0.002; + _g5a1_var._parameters.linhd = 18.0; + _g5a1_var._parameters.louthd = 17.005499999999998; + _g5a1_var._parameters.l = 0.9945000000000022; + _g5a1_var._parameters.R0 = 0.99; + _g5a1_var._parameters.Qcxl = 0.023; + _g5a1_var._parameters.Qcxr = 0.023; + _g5a1_var._parameters.Qcyu = 0.023; + _g5a1_var._parameters.Qcyd = 0.023; + _g5a1_var._parameters.alphaxl = 1.8; + _g5a1_var._parameters.alphaxr = 1.8; + _g5a1_var._parameters.alphayu = 1.8; + _g5a1_var._parameters.alphayd = 1.8; + _g5a1_var._parameters.Wxr = 0.015; + _g5a1_var._parameters.Wxl = 0.015; + _g5a1_var._parameters.Wyu = 0.015; + _g5a1_var._parameters.Wyd = 0.015; + _g5a1_var._parameters.mxr = 2; + _g5a1_var._parameters.mxl = 2; + _g5a1_var._parameters.myu = 2; + _g5a1_var._parameters.myd = 2; + _g5a1_var._parameters.QcxrOW = 0.0217; + _g5a1_var._parameters.QcxlOW = 0.0217; + _g5a1_var._parameters.QcyuOW = 0.0217; + _g5a1_var._parameters.QcydOW = 0.0217; + _g5a1_var._parameters.alphaxlOW = 6.07; + _g5a1_var._parameters.alphaxrOW = 6.07; + _g5a1_var._parameters.alphayuOW = 6.07; + _g5a1_var._parameters.alphaydOW = 6.07; + _g5a1_var._parameters.WxrOW = 0.003; + _g5a1_var._parameters.WxlOW = 0.003; + _g5a1_var._parameters.WyuOW = 0.003; + _g5a1_var._parameters.WydOW = 0.003; + _g5a1_var._parameters.mxrOW = 0; + _g5a1_var._parameters.mxlOW = 0; + _g5a1_var._parameters.myuOW = 0; + _g5a1_var._parameters.mydOW = 0; + _g5a1_var._parameters.rwallthick = 0.001; + _g5a1_var._parameters.lwallthick = 0.001; + _g5a1_var._parameters.uwallthick = 0.001; + _g5a1_var._parameters.dwallthick = 0.001; + + + /* component g5a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5a1_var._rotation_absolute); + rot_transpose(_g4b6_var._rotation_absolute, tr1); + rot_mul(_g5a1_var._rotation_absolute, tr1, _g5a1_var._rotation_relative); + _g5a1_var._rotation_is_identity = rot_test_identity(_g5a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 32.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b6_var._position_absolute, _g5a1_var._position_absolute); + _g5a1_var._position_relative = rot_apply(_g5a1_var._rotation_absolute, tc1); + } /* g5a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute); + instrument->_position_absolute[55] = _g5a1_var._position_absolute; + instrument->_position_relative[55] = _g5a1_var._position_relative; + _g5a1_var._position_relative_is_zero = coords_test_zero(_g5a1_var._position_relative); + instrument->counter_N[55] = instrument->counter_P[55] = instrument->counter_P2[55] = 0; + instrument->counter_AbsorbProp[55]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0054_g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linhu", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "louthu", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linhd", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "louthd", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "l", "0", "0.9945000000000022","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5a1_setpos */ + +/* component fo5_position=Arm() SETTING, POSITION/ROTATION */ +int _fo5_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo5_position_setpos] component fo5_position=Arm() SETTING [Arm:0]"); + stracpy(_fo5_position_var._name, "fo5_position", 16384); + stracpy(_fo5_position_var._type, "Arm", 16384); + _fo5_position_var._index=56; + int current_setpos_index = 56; + /* component fo5_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo5_position_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo5_position_var._rotation_absolute, tr1, _fo5_position_var._rotation_relative); + _fo5_position_var._rotation_is_identity = rot_test_identity(_fo5_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.005); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo5_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo5_position_var._position_absolute); + _fo5_position_var._position_relative = rot_apply(_fo5_position_var._rotation_absolute, tc1); + } /* fo5_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute); + instrument->_position_absolute[56] = _fo5_position_var._position_absolute; + instrument->_position_relative[56] = _fo5_position_var._position_relative; + _fo5_position_var._position_relative_is_zero = coords_test_zero(_fo5_position_var._position_relative); + instrument->counter_N[56] = instrument->counter_P[56] = instrument->counter_P2[56] = 0; + instrument->counter_AbsorbProp[56]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0055_fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo5_position_setpos */ + +/* component fo_chopper_5=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_5_setpos] component fo_chopper_5=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_5_var._name, "fo_chopper_5", 16384); + stracpy(_fo_chopper_5_var._type, "MultiDiskChopper", 16384); + _fo_chopper_5_var._index=57; + int current_setpos_index = 57; + if("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" && strlen("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002")) + stracpy(_fo_chopper_5_var._parameters.slit_center, "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" ? "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_center[0]='\0'; + if("50.81;48.55;45.49;41.32;37.45;37.74" && strlen("50.81;48.55;45.49;41.32;37.45;37.74")) + stracpy(_fo_chopper_5_var._parameters.slit_width, "50.81;48.55;45.49;41.32;37.45;37.74" ? "50.81;48.55;45.49;41.32;37.45;37.74" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_width[0]='\0'; + _fo_chopper_5_var._parameters.nslits = 6; + _fo_chopper_5_var._parameters.delta_y = -0.7075; + _fo_chopper_5_var._parameters.nu = -14.0; + _fo_chopper_5_var._parameters.nrev = 0; + _fo_chopper_5_var._parameters.ratio = 1; + _fo_chopper_5_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_5; + _fo_chopper_5_var._parameters.delay = 0; + _fo_chopper_5_var._parameters.isfirst = 0; + _fo_chopper_5_var._parameters.phase = fo5_phase; + _fo_chopper_5_var._parameters.radius = 0.75; + _fo_chopper_5_var._parameters.equal = 0; + _fo_chopper_5_var._parameters.abs_out = 0; + _fo_chopper_5_var._parameters.verbose = 0; + + + /* component fo_chopper_5=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo5_position_var._rotation_absolute, _fo_chopper_5_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_5_var._rotation_absolute, tr1, _fo_chopper_5_var._rotation_relative); + _fo_chopper_5_var._rotation_is_identity = rot_test_identity(_fo_chopper_5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo5_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_5_var._position_absolute = coords_add(_fo5_position_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo_chopper_5_var._position_absolute); + _fo_chopper_5_var._position_relative = rot_apply(_fo_chopper_5_var._rotation_absolute, tc1); + } /* fo_chopper_5=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute); + instrument->_position_absolute[57] = _fo_chopper_5_var._position_absolute; + instrument->_position_relative[57] = _fo_chopper_5_var._position_relative; + _fo_chopper_5_var._position_relative_is_zero = coords_test_zero(_fo_chopper_5_var._position_relative); + instrument->counter_N[57] = instrument->counter_P[57] = instrument->counter_P2[57] = 0; + instrument->counter_AbsorbProp[57]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0056_fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "slit_center", "0 180", "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "slit_width", "10 20", "50.81;48.55;45.49;41.32;37.45;37.74", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_5","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "phase", "0", "fo5_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_5_setpos */ + +/* component g5b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b1_setpos] component g5b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b1_var._name, "g5b1", 16384); + stracpy(_g5b1_var._type, "Guide_four_side", 16384); + _g5b1_var._index=58; + int current_setpos_index = 58; + _g5b1_var._parameters.RIreflect[0]='\0'; + _g5b1_var._parameters.LIreflect[0]='\0'; + _g5b1_var._parameters.UIreflect[0]='\0'; + _g5b1_var._parameters.DIreflect[0]='\0'; + _g5b1_var._parameters.ROreflect[0]='\0'; + _g5b1_var._parameters.LOreflect[0]='\0'; + _g5b1_var._parameters.UOreflect[0]='\0'; + _g5b1_var._parameters.DOreflect[0]='\0'; + _g5b1_var._parameters.w1l = 0.04004; + _g5b1_var._parameters.w2l = 0.04004; + _g5b1_var._parameters.linwl = 0; + _g5b1_var._parameters.loutwl = 0; + _g5b1_var._parameters.w1r = 0.04004; + _g5b1_var._parameters.w2r = 0.04004; + _g5b1_var._parameters.linwr = 0.0; + _g5b1_var._parameters.loutwr = 0; + _g5b1_var._parameters.h1u = 0.037105; + _g5b1_var._parameters.h2u = 0.002; + _g5b1_var._parameters.linhu = 19.005499999999998; + _g5b1_var._parameters.louthu = 14.994750000000003; + _g5b1_var._parameters.h1d = 0.037105; + _g5b1_var._parameters.h2d = 0.002; + _g5b1_var._parameters.linhd = 19.005499999999998; + _g5b1_var._parameters.louthd = 14.994750000000003; + _g5b1_var._parameters.l = 1.9997499999999988; + _g5b1_var._parameters.R0 = 0.99; + _g5b1_var._parameters.Qcxl = 0.023; + _g5b1_var._parameters.Qcxr = 0.023; + _g5b1_var._parameters.Qcyu = 0.023; + _g5b1_var._parameters.Qcyd = 0.023; + _g5b1_var._parameters.alphaxl = 1.8; + _g5b1_var._parameters.alphaxr = 1.8; + _g5b1_var._parameters.alphayu = 1.8; + _g5b1_var._parameters.alphayd = 1.8; + _g5b1_var._parameters.Wxr = 0.015; + _g5b1_var._parameters.Wxl = 0.015; + _g5b1_var._parameters.Wyu = 0.015; + _g5b1_var._parameters.Wyd = 0.015; + _g5b1_var._parameters.mxr = 2; + _g5b1_var._parameters.mxl = 2; + _g5b1_var._parameters.myu = 2; + _g5b1_var._parameters.myd = 2; + _g5b1_var._parameters.QcxrOW = 0.0217; + _g5b1_var._parameters.QcxlOW = 0.0217; + _g5b1_var._parameters.QcyuOW = 0.0217; + _g5b1_var._parameters.QcydOW = 0.0217; + _g5b1_var._parameters.alphaxlOW = 6.07; + _g5b1_var._parameters.alphaxrOW = 6.07; + _g5b1_var._parameters.alphayuOW = 6.07; + _g5b1_var._parameters.alphaydOW = 6.07; + _g5b1_var._parameters.WxrOW = 0.003; + _g5b1_var._parameters.WxlOW = 0.003; + _g5b1_var._parameters.WyuOW = 0.003; + _g5b1_var._parameters.WydOW = 0.003; + _g5b1_var._parameters.mxrOW = 0; + _g5b1_var._parameters.mxlOW = 0; + _g5b1_var._parameters.myuOW = 0; + _g5b1_var._parameters.mydOW = 0; + _g5b1_var._parameters.rwallthick = 0.001; + _g5b1_var._parameters.lwallthick = 0.001; + _g5b1_var._parameters.uwallthick = 0.001; + _g5b1_var._parameters.dwallthick = 0.001; + + + /* component g5b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b1_var._rotation_absolute); + rot_transpose(_fo_chopper_5_var._rotation_absolute, tr1); + rot_mul(_g5b1_var._rotation_absolute, tr1, _g5b1_var._rotation_relative); + _g5b1_var._rotation_is_identity = rot_test_identity(_g5b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.015499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_5_var._position_absolute, _g5b1_var._position_absolute); + _g5b1_var._position_relative = rot_apply(_g5b1_var._rotation_absolute, tc1); + } /* g5b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute); + instrument->_position_absolute[58] = _g5b1_var._position_absolute; + instrument->_position_relative[58] = _g5b1_var._position_relative; + _g5b1_var._position_relative_is_zero = coords_test_zero(_g5b1_var._position_relative); + instrument->counter_N[58] = instrument->counter_P[58] = instrument->counter_P2[58] = 0; + instrument->counter_AbsorbProp[58]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0057_g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h1u", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linhu", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "louthu", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h1d", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linhd", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "louthd", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b1_setpos */ + +/* component g5b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b2_setpos] component g5b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b2_var._name, "g5b2", 16384); + stracpy(_g5b2_var._type, "Guide_four_side", 16384); + _g5b2_var._index=59; + int current_setpos_index = 59; + _g5b2_var._parameters.RIreflect[0]='\0'; + _g5b2_var._parameters.LIreflect[0]='\0'; + _g5b2_var._parameters.UIreflect[0]='\0'; + _g5b2_var._parameters.DIreflect[0]='\0'; + _g5b2_var._parameters.ROreflect[0]='\0'; + _g5b2_var._parameters.LOreflect[0]='\0'; + _g5b2_var._parameters.UOreflect[0]='\0'; + _g5b2_var._parameters.DOreflect[0]='\0'; + _g5b2_var._parameters.w1l = 0.04004; + _g5b2_var._parameters.w2l = 0.04004; + _g5b2_var._parameters.linwl = 0; + _g5b2_var._parameters.loutwl = 0; + _g5b2_var._parameters.w1r = 0.04004; + _g5b2_var._parameters.w2r = 0.04004; + _g5b2_var._parameters.linwr = 0.0; + _g5b2_var._parameters.loutwr = 0; + _g5b2_var._parameters.h1u = 0.036645; + _g5b2_var._parameters.h2u = 0.002; + _g5b2_var._parameters.linhu = 21.00575; + _g5b2_var._parameters.louthu = 12.994950000000003; + _g5b2_var._parameters.h1d = 0.036645; + _g5b2_var._parameters.h2d = 0.002; + _g5b2_var._parameters.linhd = 21.00575; + _g5b2_var._parameters.louthd = 12.994950000000003; + _g5b2_var._parameters.l = 1.999299999999998; + _g5b2_var._parameters.R0 = 0.99; + _g5b2_var._parameters.Qcxl = 0.0221; + _g5b2_var._parameters.Qcxr = 0.0221; + _g5b2_var._parameters.Qcyu = 0.023; + _g5b2_var._parameters.Qcyd = 0.023; + _g5b2_var._parameters.alphaxl = 1.75; + _g5b2_var._parameters.alphaxr = 1.75; + _g5b2_var._parameters.alphayu = 1.8; + _g5b2_var._parameters.alphayd = 1.8; + _g5b2_var._parameters.Wxr = 0.015; + _g5b2_var._parameters.Wxl = 0.015; + _g5b2_var._parameters.Wyu = 0.015; + _g5b2_var._parameters.Wyd = 0.015; + _g5b2_var._parameters.mxr = 2.5; + _g5b2_var._parameters.mxl = 2.5; + _g5b2_var._parameters.myu = 2; + _g5b2_var._parameters.myd = 2; + _g5b2_var._parameters.QcxrOW = 0.0217; + _g5b2_var._parameters.QcxlOW = 0.0217; + _g5b2_var._parameters.QcyuOW = 0.0217; + _g5b2_var._parameters.QcydOW = 0.0217; + _g5b2_var._parameters.alphaxlOW = 6.07; + _g5b2_var._parameters.alphaxrOW = 6.07; + _g5b2_var._parameters.alphayuOW = 6.07; + _g5b2_var._parameters.alphaydOW = 6.07; + _g5b2_var._parameters.WxrOW = 0.003; + _g5b2_var._parameters.WxlOW = 0.003; + _g5b2_var._parameters.WyuOW = 0.003; + _g5b2_var._parameters.WydOW = 0.003; + _g5b2_var._parameters.mxrOW = 0; + _g5b2_var._parameters.mxlOW = 0; + _g5b2_var._parameters.myuOW = 0; + _g5b2_var._parameters.mydOW = 0; + _g5b2_var._parameters.rwallthick = 0.001; + _g5b2_var._parameters.lwallthick = 0.001; + _g5b2_var._parameters.uwallthick = 0.001; + _g5b2_var._parameters.dwallthick = 0.001; + + + /* component g5b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b2_var._rotation_absolute); + rot_transpose(_g5b1_var._rotation_absolute, tr1); + rot_mul(_g5b2_var._rotation_absolute, tr1, _g5b2_var._rotation_relative); + _g5b2_var._rotation_is_identity = rot_test_identity(_g5b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 35.01575); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b1_var._position_absolute, _g5b2_var._position_absolute); + _g5b2_var._position_relative = rot_apply(_g5b2_var._rotation_absolute, tc1); + } /* g5b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute); + instrument->_position_absolute[59] = _g5b2_var._position_absolute; + instrument->_position_relative[59] = _g5b2_var._position_relative; + _g5b2_var._position_relative_is_zero = coords_test_zero(_g5b2_var._position_relative); + instrument->counter_N[59] = instrument->counter_P[59] = instrument->counter_P2[59] = 0; + instrument->counter_AbsorbProp[59]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0058_g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h1u", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linhu", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "louthu", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h1d", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linhd", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "louthd", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "l", "0", "1.999299999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b2_setpos */ + +/* component g5b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b3_setpos] component g5b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b3_var._name, "g5b3", 16384); + stracpy(_g5b3_var._type, "Guide_four_side", 16384); + _g5b3_var._index=60; + int current_setpos_index = 60; + _g5b3_var._parameters.RIreflect[0]='\0'; + _g5b3_var._parameters.LIreflect[0]='\0'; + _g5b3_var._parameters.UIreflect[0]='\0'; + _g5b3_var._parameters.DIreflect[0]='\0'; + _g5b3_var._parameters.ROreflect[0]='\0'; + _g5b3_var._parameters.LOreflect[0]='\0'; + _g5b3_var._parameters.UOreflect[0]='\0'; + _g5b3_var._parameters.DOreflect[0]='\0'; + _g5b3_var._parameters.w1l = 0.04004; + _g5b3_var._parameters.w2l = 0.04004; + _g5b3_var._parameters.linwl = 0; + _g5b3_var._parameters.loutwl = 0; + _g5b3_var._parameters.w1r = 0.04004; + _g5b3_var._parameters.w2r = 0.04004; + _g5b3_var._parameters.linwr = 0.0; + _g5b3_var._parameters.loutwr = 0; + _g5b3_var._parameters.h1u = 0.035695; + _g5b3_var._parameters.h2u = 0.002; + _g5b3_var._parameters.linhu = 23.009500000000003; + _g5b3_var._parameters.louthu = 10.990749999999998; + _g5b3_var._parameters.h1d = 0.035695; + _g5b3_var._parameters.h2d = 0.002; + _g5b3_var._parameters.linhd = 23.009500000000003; + _g5b3_var._parameters.louthd = 10.990749999999998; + _g5b3_var._parameters.l = 1.9997499999999988; + _g5b3_var._parameters.R0 = 0.99; + _g5b3_var._parameters.Qcxl = 0.0221; + _g5b3_var._parameters.Qcxr = 0.0221; + _g5b3_var._parameters.Qcyu = 0.023; + _g5b3_var._parameters.Qcyd = 0.023; + _g5b3_var._parameters.alphaxl = 1.75; + _g5b3_var._parameters.alphaxr = 1.75; + _g5b3_var._parameters.alphayu = 1.8; + _g5b3_var._parameters.alphayd = 1.8; + _g5b3_var._parameters.Wxr = 0.015; + _g5b3_var._parameters.Wxl = 0.015; + _g5b3_var._parameters.Wyu = 0.015; + _g5b3_var._parameters.Wyd = 0.015; + _g5b3_var._parameters.mxr = 2.5; + _g5b3_var._parameters.mxl = 2.5; + _g5b3_var._parameters.myu = 2; + _g5b3_var._parameters.myd = 2; + _g5b3_var._parameters.QcxrOW = 0.0217; + _g5b3_var._parameters.QcxlOW = 0.0217; + _g5b3_var._parameters.QcyuOW = 0.0217; + _g5b3_var._parameters.QcydOW = 0.0217; + _g5b3_var._parameters.alphaxlOW = 6.07; + _g5b3_var._parameters.alphaxrOW = 6.07; + _g5b3_var._parameters.alphayuOW = 6.07; + _g5b3_var._parameters.alphaydOW = 6.07; + _g5b3_var._parameters.WxrOW = 0.003; + _g5b3_var._parameters.WxlOW = 0.003; + _g5b3_var._parameters.WyuOW = 0.003; + _g5b3_var._parameters.WydOW = 0.003; + _g5b3_var._parameters.mxrOW = 0; + _g5b3_var._parameters.mxlOW = 0; + _g5b3_var._parameters.myuOW = 0; + _g5b3_var._parameters.mydOW = 0; + _g5b3_var._parameters.rwallthick = 0.001; + _g5b3_var._parameters.lwallthick = 0.001; + _g5b3_var._parameters.uwallthick = 0.001; + _g5b3_var._parameters.dwallthick = 0.001; + + + /* component g5b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b3_var._rotation_absolute); + rot_transpose(_g5b2_var._rotation_absolute, tr1); + rot_mul(_g5b3_var._rotation_absolute, tr1, _g5b3_var._rotation_relative); + _g5b3_var._rotation_is_identity = rot_test_identity(_g5b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 37.0195); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b2_var._position_absolute, _g5b3_var._position_absolute); + _g5b3_var._position_relative = rot_apply(_g5b3_var._rotation_absolute, tc1); + } /* g5b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute); + instrument->_position_absolute[60] = _g5b3_var._position_absolute; + instrument->_position_relative[60] = _g5b3_var._position_relative; + _g5b3_var._position_relative_is_zero = coords_test_zero(_g5b3_var._position_relative); + instrument->counter_N[60] = instrument->counter_P[60] = instrument->counter_P2[60] = 0; + instrument->counter_AbsorbProp[60]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0059_g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h1u", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linhu", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "louthu", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h1d", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linhd", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "louthd", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b3_setpos */ + +/* component g5b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b4_setpos] component g5b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b4_var._name, "g5b4", 16384); + stracpy(_g5b4_var._type, "Guide_four_side", 16384); + _g5b4_var._index=61; + int current_setpos_index = 61; + _g5b4_var._parameters.RIreflect[0]='\0'; + _g5b4_var._parameters.LIreflect[0]='\0'; + _g5b4_var._parameters.UIreflect[0]='\0'; + _g5b4_var._parameters.DIreflect[0]='\0'; + _g5b4_var._parameters.ROreflect[0]='\0'; + _g5b4_var._parameters.LOreflect[0]='\0'; + _g5b4_var._parameters.UOreflect[0]='\0'; + _g5b4_var._parameters.DOreflect[0]='\0'; + _g5b4_var._parameters.w1l = 0.04004; + _g5b4_var._parameters.w2l = 0.04004; + _g5b4_var._parameters.linwl = 0; + _g5b4_var._parameters.loutwl = 0; + _g5b4_var._parameters.w1r = 0.04004; + _g5b4_var._parameters.w2r = 0.04004; + _g5b4_var._parameters.linwr = 0.0; + _g5b4_var._parameters.loutwr = 0; + _g5b4_var._parameters.h1u = 0.03423; + _g5b4_var._parameters.h2u = 0.002; + _g5b4_var._parameters.linhu = 25.009749999999997; + _g5b4_var._parameters.louthu = 8.990499999999997; + _g5b4_var._parameters.h1d = 0.03423; + _g5b4_var._parameters.h2d = 0.002; + _g5b4_var._parameters.linhd = 25.009749999999997; + _g5b4_var._parameters.louthd = 8.990499999999997; + _g5b4_var._parameters.l = 1.999750000000006; + _g5b4_var._parameters.R0 = 0.99; + _g5b4_var._parameters.Qcxl = 0.0221; + _g5b4_var._parameters.Qcxr = 0.0221; + _g5b4_var._parameters.Qcyu = 0.023; + _g5b4_var._parameters.Qcyd = 0.023; + _g5b4_var._parameters.alphaxl = 1.75; + _g5b4_var._parameters.alphaxr = 1.75; + _g5b4_var._parameters.alphayu = 1.8; + _g5b4_var._parameters.alphayd = 1.8; + _g5b4_var._parameters.Wxr = 0.015; + _g5b4_var._parameters.Wxl = 0.015; + _g5b4_var._parameters.Wyu = 0.015; + _g5b4_var._parameters.Wyd = 0.015; + _g5b4_var._parameters.mxr = 3.0; + _g5b4_var._parameters.mxl = 3.0; + _g5b4_var._parameters.myu = 2; + _g5b4_var._parameters.myd = 2; + _g5b4_var._parameters.QcxrOW = 0.0217; + _g5b4_var._parameters.QcxlOW = 0.0217; + _g5b4_var._parameters.QcyuOW = 0.0217; + _g5b4_var._parameters.QcydOW = 0.0217; + _g5b4_var._parameters.alphaxlOW = 6.07; + _g5b4_var._parameters.alphaxrOW = 6.07; + _g5b4_var._parameters.alphayuOW = 6.07; + _g5b4_var._parameters.alphaydOW = 6.07; + _g5b4_var._parameters.WxrOW = 0.003; + _g5b4_var._parameters.WxlOW = 0.003; + _g5b4_var._parameters.WyuOW = 0.003; + _g5b4_var._parameters.WydOW = 0.003; + _g5b4_var._parameters.mxrOW = 0; + _g5b4_var._parameters.mxlOW = 0; + _g5b4_var._parameters.myuOW = 0; + _g5b4_var._parameters.mydOW = 0; + _g5b4_var._parameters.rwallthick = 0.001; + _g5b4_var._parameters.lwallthick = 0.001; + _g5b4_var._parameters.uwallthick = 0.001; + _g5b4_var._parameters.dwallthick = 0.001; + + + /* component g5b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b4_var._rotation_absolute); + rot_transpose(_g5b3_var._rotation_absolute, tr1); + rot_mul(_g5b4_var._rotation_absolute, tr1, _g5b4_var._rotation_relative); + _g5b4_var._rotation_is_identity = rot_test_identity(_g5b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 39.019749999999995); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b3_var._position_absolute, _g5b4_var._position_absolute); + _g5b4_var._position_relative = rot_apply(_g5b4_var._rotation_absolute, tc1); + } /* g5b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute); + instrument->_position_absolute[61] = _g5b4_var._position_absolute; + instrument->_position_relative[61] = _g5b4_var._position_relative; + _g5b4_var._position_relative_is_zero = coords_test_zero(_g5b4_var._position_relative); + instrument->counter_N[61] = instrument->counter_P[61] = instrument->counter_P2[61] = 0; + instrument->counter_AbsorbProp[61]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0060_g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h1u", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linhu", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "louthu", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h1d", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linhd", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "louthd", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "l", "0", "1.999750000000006","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b4_setpos */ + +/* component g5b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b5_setpos] component g5b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b5_var._name, "g5b5", 16384); + stracpy(_g5b5_var._type, "Guide_four_side", 16384); + _g5b5_var._index=62; + int current_setpos_index = 62; + _g5b5_var._parameters.RIreflect[0]='\0'; + _g5b5_var._parameters.LIreflect[0]='\0'; + _g5b5_var._parameters.UIreflect[0]='\0'; + _g5b5_var._parameters.DIreflect[0]='\0'; + _g5b5_var._parameters.ROreflect[0]='\0'; + _g5b5_var._parameters.LOreflect[0]='\0'; + _g5b5_var._parameters.UOreflect[0]='\0'; + _g5b5_var._parameters.DOreflect[0]='\0'; + _g5b5_var._parameters.w1l = 0.04004; + _g5b5_var._parameters.w2l = 0.04004; + _g5b5_var._parameters.linwl = 0; + _g5b5_var._parameters.loutwl = 0; + _g5b5_var._parameters.w1r = 0.04004; + _g5b5_var._parameters.w2r = 0.04004; + _g5b5_var._parameters.linwr = 0.0; + _g5b5_var._parameters.loutwr = 0; + _g5b5_var._parameters.h1u = 0.03217; + _g5b5_var._parameters.h2u = 0.002; + _g5b5_var._parameters.linhu = 27.0135; + _g5b5_var._parameters.louthu = 6.986750000000001; + _g5b5_var._parameters.h1d = 0.03217; + _g5b5_var._parameters.h2d = 0.002; + _g5b5_var._parameters.linhd = 27.0135; + _g5b5_var._parameters.louthd = 6.986750000000001; + _g5b5_var._parameters.l = 1.9997499999999988; + _g5b5_var._parameters.R0 = 0.99; + _g5b5_var._parameters.Qcxl = 0.0221; + _g5b5_var._parameters.Qcxr = 0.0221; + _g5b5_var._parameters.Qcyu = 0.0221; + _g5b5_var._parameters.Qcyd = 0.0221; + _g5b5_var._parameters.alphaxl = 1.75; + _g5b5_var._parameters.alphaxr = 1.75; + _g5b5_var._parameters.alphayu = 1.75; + _g5b5_var._parameters.alphayd = 1.75; + _g5b5_var._parameters.Wxr = 0.015; + _g5b5_var._parameters.Wxl = 0.015; + _g5b5_var._parameters.Wyu = 0.015; + _g5b5_var._parameters.Wyd = 0.015; + _g5b5_var._parameters.mxr = 3.0; + _g5b5_var._parameters.mxl = 3.0; + _g5b5_var._parameters.myu = 2.5; + _g5b5_var._parameters.myd = 2.5; + _g5b5_var._parameters.QcxrOW = 0.0217; + _g5b5_var._parameters.QcxlOW = 0.0217; + _g5b5_var._parameters.QcyuOW = 0.0217; + _g5b5_var._parameters.QcydOW = 0.0217; + _g5b5_var._parameters.alphaxlOW = 6.07; + _g5b5_var._parameters.alphaxrOW = 6.07; + _g5b5_var._parameters.alphayuOW = 6.07; + _g5b5_var._parameters.alphaydOW = 6.07; + _g5b5_var._parameters.WxrOW = 0.003; + _g5b5_var._parameters.WxlOW = 0.003; + _g5b5_var._parameters.WyuOW = 0.003; + _g5b5_var._parameters.WydOW = 0.003; + _g5b5_var._parameters.mxrOW = 0; + _g5b5_var._parameters.mxlOW = 0; + _g5b5_var._parameters.myuOW = 0; + _g5b5_var._parameters.mydOW = 0; + _g5b5_var._parameters.rwallthick = 0.001; + _g5b5_var._parameters.lwallthick = 0.001; + _g5b5_var._parameters.uwallthick = 0.001; + _g5b5_var._parameters.dwallthick = 0.001; + + + /* component g5b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b5_var._rotation_absolute); + rot_transpose(_g5b4_var._rotation_absolute, tr1); + rot_mul(_g5b5_var._rotation_absolute, tr1, _g5b5_var._rotation_relative); + _g5b5_var._rotation_is_identity = rot_test_identity(_g5b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 41.0235); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b4_var._position_absolute, _g5b5_var._position_absolute); + _g5b5_var._position_relative = rot_apply(_g5b5_var._rotation_absolute, tc1); + } /* g5b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute); + instrument->_position_absolute[62] = _g5b5_var._position_absolute; + instrument->_position_relative[62] = _g5b5_var._position_relative; + _g5b5_var._position_relative_is_zero = coords_test_zero(_g5b5_var._position_relative); + instrument->counter_N[62] = instrument->counter_P[62] = instrument->counter_P2[62] = 0; + instrument->counter_AbsorbProp[62]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0061_g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h1u", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linhu", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "louthu", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h1d", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linhd", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "louthd", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b5_setpos */ + +/* component g5b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b6_setpos] component g5b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b6_var._name, "g5b6", 16384); + stracpy(_g5b6_var._type, "Guide_four_side", 16384); + _g5b6_var._index=63; + int current_setpos_index = 63; + _g5b6_var._parameters.RIreflect[0]='\0'; + _g5b6_var._parameters.LIreflect[0]='\0'; + _g5b6_var._parameters.UIreflect[0]='\0'; + _g5b6_var._parameters.DIreflect[0]='\0'; + _g5b6_var._parameters.ROreflect[0]='\0'; + _g5b6_var._parameters.LOreflect[0]='\0'; + _g5b6_var._parameters.UOreflect[0]='\0'; + _g5b6_var._parameters.DOreflect[0]='\0'; + _g5b6_var._parameters.w1l = 0.04004; + _g5b6_var._parameters.w2l = 0.04004; + _g5b6_var._parameters.linwl = 0; + _g5b6_var._parameters.loutwl = 0; + _g5b6_var._parameters.w1r = 0.04004; + _g5b6_var._parameters.w2r = 0.04004; + _g5b6_var._parameters.linwr = 0.0; + _g5b6_var._parameters.loutwr = 0; + _g5b6_var._parameters.h1u = 0.029395; + _g5b6_var._parameters.h2u = 0.002; + _g5b6_var._parameters.linhu = 29.01375; + _g5b6_var._parameters.louthu = 6.5; + _g5b6_var._parameters.h1d = 0.029395; + _g5b6_var._parameters.h2d = 0.002; + _g5b6_var._parameters.linhd = 29.01375; + _g5b6_var._parameters.louthd = 6.5; + _g5b6_var._parameters.l = 0.4862499999999983; + _g5b6_var._parameters.R0 = 0.99; + _g5b6_var._parameters.Qcxl = 0.0221; + _g5b6_var._parameters.Qcxr = 0.0221; + _g5b6_var._parameters.Qcyu = 0.0221; + _g5b6_var._parameters.Qcyd = 0.0221; + _g5b6_var._parameters.alphaxl = 1.75; + _g5b6_var._parameters.alphaxr = 1.75; + _g5b6_var._parameters.alphayu = 1.75; + _g5b6_var._parameters.alphayd = 1.75; + _g5b6_var._parameters.Wxr = 0.015; + _g5b6_var._parameters.Wxl = 0.015; + _g5b6_var._parameters.Wyu = 0.015; + _g5b6_var._parameters.Wyd = 0.015; + _g5b6_var._parameters.mxr = 3.0; + _g5b6_var._parameters.mxl = 3.0; + _g5b6_var._parameters.myu = 2.5; + _g5b6_var._parameters.myd = 2.5; + _g5b6_var._parameters.QcxrOW = 0.0217; + _g5b6_var._parameters.QcxlOW = 0.0217; + _g5b6_var._parameters.QcyuOW = 0.0217; + _g5b6_var._parameters.QcydOW = 0.0217; + _g5b6_var._parameters.alphaxlOW = 6.07; + _g5b6_var._parameters.alphaxrOW = 6.07; + _g5b6_var._parameters.alphayuOW = 6.07; + _g5b6_var._parameters.alphaydOW = 6.07; + _g5b6_var._parameters.WxrOW = 0.003; + _g5b6_var._parameters.WxlOW = 0.003; + _g5b6_var._parameters.WyuOW = 0.003; + _g5b6_var._parameters.WydOW = 0.003; + _g5b6_var._parameters.mxrOW = 0; + _g5b6_var._parameters.mxlOW = 0; + _g5b6_var._parameters.myuOW = 0; + _g5b6_var._parameters.mydOW = 0; + _g5b6_var._parameters.rwallthick = 0.001; + _g5b6_var._parameters.lwallthick = 0.001; + _g5b6_var._parameters.uwallthick = 0.001; + _g5b6_var._parameters.dwallthick = 0.001; + + + /* component g5b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b6_var._rotation_absolute); + rot_transpose(_g5b5_var._rotation_absolute, tr1); + rot_mul(_g5b6_var._rotation_absolute, tr1, _g5b6_var._rotation_relative); + _g5b6_var._rotation_is_identity = rot_test_identity(_g5b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.02375); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b5_var._position_absolute, _g5b6_var._position_absolute); + _g5b6_var._position_relative = rot_apply(_g5b6_var._rotation_absolute, tc1); + } /* g5b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute); + instrument->_position_absolute[63] = _g5b6_var._position_absolute; + instrument->_position_relative[63] = _g5b6_var._position_relative; + _g5b6_var._position_relative_is_zero = coords_test_zero(_g5b6_var._position_relative); + instrument->counter_N[63] = instrument->counter_P[63] = instrument->counter_P2[63] = 0; + instrument->counter_AbsorbProp[63]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0062_g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h1u", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linhu", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "louthu", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h1d", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linhd", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "louthd", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "l", "0", "0.4862499999999983","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b6_setpos */ + +/* component g6a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a1_setpos] component g6a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a1_var._name, "g6a1", 16384); + stracpy(_g6a1_var._type, "Guide_four_side", 16384); + _g6a1_var._index=64; + int current_setpos_index = 64; + _g6a1_var._parameters.RIreflect[0]='\0'; + _g6a1_var._parameters.LIreflect[0]='\0'; + _g6a1_var._parameters.UIreflect[0]='\0'; + _g6a1_var._parameters.DIreflect[0]='\0'; + _g6a1_var._parameters.ROreflect[0]='\0'; + _g6a1_var._parameters.LOreflect[0]='\0'; + _g6a1_var._parameters.UOreflect[0]='\0'; + _g6a1_var._parameters.DOreflect[0]='\0'; + _g6a1_var._parameters.w1l = 0.04004; + _g6a1_var._parameters.w2l = 0.002; + _g6a1_var._parameters.linwl = 6.5; + _g6a1_var._parameters.loutwl = 4.9864999999999995; + _g6a1_var._parameters.w1r = 0.04004; + _g6a1_var._parameters.w2r = 0.002; + _g6a1_var._parameters.linwr = 6.5; + _g6a1_var._parameters.loutwr = 4.9864999999999995; + _g6a1_var._parameters.h1u = 0.02859; + _g6a1_var._parameters.h2u = 0.002; + _g6a1_var._parameters.linhu = 29.5; + _g6a1_var._parameters.louthu = 4.9864999999999995; + _g6a1_var._parameters.h1d = 0.02859; + _g6a1_var._parameters.h2d = 0.002; + _g6a1_var._parameters.linhd = 29.5; + _g6a1_var._parameters.louthd = 4.9864999999999995; + _g6a1_var._parameters.l = 1.5135000000000005; + _g6a1_var._parameters.R0 = 0.99; + _g6a1_var._parameters.Qcxl = 0.0217; + _g6a1_var._parameters.Qcxr = 0.0217; + _g6a1_var._parameters.Qcyu = 0.0221; + _g6a1_var._parameters.Qcyd = 0.0221; + _g6a1_var._parameters.alphaxl = 2.5; + _g6a1_var._parameters.alphaxr = 2.5; + _g6a1_var._parameters.alphayu = 1.75; + _g6a1_var._parameters.alphayd = 1.75; + _g6a1_var._parameters.Wxr = 0.015; + _g6a1_var._parameters.Wxl = 0.015; + _g6a1_var._parameters.Wyu = 0.015; + _g6a1_var._parameters.Wyd = 0.015; + _g6a1_var._parameters.mxr = 3.5; + _g6a1_var._parameters.mxl = 3.5; + _g6a1_var._parameters.myu = 2.5; + _g6a1_var._parameters.myd = 2.5; + _g6a1_var._parameters.QcxrOW = 0.0217; + _g6a1_var._parameters.QcxlOW = 0.0217; + _g6a1_var._parameters.QcyuOW = 0.0217; + _g6a1_var._parameters.QcydOW = 0.0217; + _g6a1_var._parameters.alphaxlOW = 6.07; + _g6a1_var._parameters.alphaxrOW = 6.07; + _g6a1_var._parameters.alphayuOW = 6.07; + _g6a1_var._parameters.alphaydOW = 6.07; + _g6a1_var._parameters.WxrOW = 0.003; + _g6a1_var._parameters.WxlOW = 0.003; + _g6a1_var._parameters.WyuOW = 0.003; + _g6a1_var._parameters.WydOW = 0.003; + _g6a1_var._parameters.mxrOW = 0; + _g6a1_var._parameters.mxlOW = 0; + _g6a1_var._parameters.myuOW = 0; + _g6a1_var._parameters.mydOW = 0; + _g6a1_var._parameters.rwallthick = 0.001; + _g6a1_var._parameters.lwallthick = 0.001; + _g6a1_var._parameters.uwallthick = 0.001; + _g6a1_var._parameters.dwallthick = 0.001; + + + /* component g6a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a1_var._rotation_absolute); + rot_transpose(_g5b6_var._rotation_absolute, tr1); + rot_mul(_g6a1_var._rotation_absolute, tr1, _g6a1_var._rotation_relative); + _g6a1_var._rotation_is_identity = rot_test_identity(_g6a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.51); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b6_var._position_absolute, _g6a1_var._position_absolute); + _g6a1_var._position_relative = rot_apply(_g6a1_var._rotation_absolute, tc1); + } /* g6a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute); + instrument->_position_absolute[64] = _g6a1_var._position_absolute; + instrument->_position_relative[64] = _g6a1_var._position_relative; + _g6a1_var._position_relative_is_zero = coords_test_zero(_g6a1_var._position_relative); + instrument->counter_N[64] = instrument->counter_P[64] = instrument->counter_P2[64] = 0; + instrument->counter_AbsorbProp[64]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0063_g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linwl", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "loutwl", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linwr", "0.0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "loutwr", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h1u", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linhu", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "louthu", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h1d", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linhd", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "louthd", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "l", "0", "1.5135000000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a1_setpos */ + +/* component g6a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a2_setpos] component g6a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a2_var._name, "g6a2", 16384); + stracpy(_g6a2_var._type, "Guide_four_side", 16384); + _g6a2_var._index=65; + int current_setpos_index = 65; + _g6a2_var._parameters.RIreflect[0]='\0'; + _g6a2_var._parameters.LIreflect[0]='\0'; + _g6a2_var._parameters.UIreflect[0]='\0'; + _g6a2_var._parameters.DIreflect[0]='\0'; + _g6a2_var._parameters.ROreflect[0]='\0'; + _g6a2_var._parameters.LOreflect[0]='\0'; + _g6a2_var._parameters.UOreflect[0]='\0'; + _g6a2_var._parameters.DOreflect[0]='\0'; + _g6a2_var._parameters.w1l = 0.038935; + _g6a2_var._parameters.w2l = 0.002; + _g6a2_var._parameters.linwl = 8.017499999999998; + _g6a2_var._parameters.loutwl = 2.982750000000003; + _g6a2_var._parameters.w1r = 0.038935; + _g6a2_var._parameters.w2r = 0.002; + _g6a2_var._parameters.linwr = 8.017499999999998; + _g6a2_var._parameters.loutwr = 2.982750000000003; + _g6a2_var._parameters.h1u = 0.02567; + _g6a2_var._parameters.h2u = 0.002; + _g6a2_var._parameters.linhu = 31.0175; + _g6a2_var._parameters.louthu = 2.982750000000003; + _g6a2_var._parameters.h1d = 0.02567; + _g6a2_var._parameters.h2d = 0.002; + _g6a2_var._parameters.linhd = 31.0175; + _g6a2_var._parameters.louthd = 2.982750000000003; + _g6a2_var._parameters.l = 1.9997499999999988; + _g6a2_var._parameters.R0 = 0.99; + _g6a2_var._parameters.Qcxl = 0.0217; + _g6a2_var._parameters.Qcxr = 0.0217; + _g6a2_var._parameters.Qcyu = 0.0221; + _g6a2_var._parameters.Qcyd = 0.0221; + _g6a2_var._parameters.alphaxl = 2.5; + _g6a2_var._parameters.alphaxr = 2.5; + _g6a2_var._parameters.alphayu = 1.75; + _g6a2_var._parameters.alphayd = 1.75; + _g6a2_var._parameters.Wxr = 0.015; + _g6a2_var._parameters.Wxl = 0.015; + _g6a2_var._parameters.Wyu = 0.015; + _g6a2_var._parameters.Wyd = 0.015; + _g6a2_var._parameters.mxr = 4; + _g6a2_var._parameters.mxl = 4; + _g6a2_var._parameters.myu = 3; + _g6a2_var._parameters.myd = 3; + _g6a2_var._parameters.QcxrOW = 0.0217; + _g6a2_var._parameters.QcxlOW = 0.0217; + _g6a2_var._parameters.QcyuOW = 0.0217; + _g6a2_var._parameters.QcydOW = 0.0217; + _g6a2_var._parameters.alphaxlOW = 6.07; + _g6a2_var._parameters.alphaxrOW = 6.07; + _g6a2_var._parameters.alphayuOW = 6.07; + _g6a2_var._parameters.alphaydOW = 6.07; + _g6a2_var._parameters.WxrOW = 0.003; + _g6a2_var._parameters.WxlOW = 0.003; + _g6a2_var._parameters.WyuOW = 0.003; + _g6a2_var._parameters.WydOW = 0.003; + _g6a2_var._parameters.mxrOW = 0; + _g6a2_var._parameters.mxlOW = 0; + _g6a2_var._parameters.myuOW = 0; + _g6a2_var._parameters.mydOW = 0; + _g6a2_var._parameters.rwallthick = 0.001; + _g6a2_var._parameters.lwallthick = 0.001; + _g6a2_var._parameters.uwallthick = 0.001; + _g6a2_var._parameters.dwallthick = 0.001; + + + /* component g6a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a2_var._rotation_absolute); + rot_transpose(_g6a1_var._rotation_absolute, tr1); + rot_mul(_g6a2_var._rotation_absolute, tr1, _g6a2_var._rotation_relative); + _g6a2_var._rotation_is_identity = rot_test_identity(_g6a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 45.027499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a1_var._position_absolute, _g6a2_var._position_absolute); + _g6a2_var._position_relative = rot_apply(_g6a2_var._rotation_absolute, tc1); + } /* g6a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute); + instrument->_position_absolute[65] = _g6a2_var._position_absolute; + instrument->_position_relative[65] = _g6a2_var._position_relative; + _g6a2_var._position_relative_is_zero = coords_test_zero(_g6a2_var._position_relative); + instrument->counter_N[65] = instrument->counter_P[65] = instrument->counter_P2[65] = 0; + instrument->counter_AbsorbProp[65]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0064_g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w1l", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linwl", "0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "loutwl", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w1r", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linwr", "0.0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "loutwr", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h1u", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linhu", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "louthu", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h1d", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linhd", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "louthd", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a2_setpos */ + +/* component g6a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a3_setpos] component g6a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a3_var._name, "g6a3", 16384); + stracpy(_g6a3_var._type, "Guide_four_side", 16384); + _g6a3_var._index=66; + int current_setpos_index = 66; + _g6a3_var._parameters.RIreflect[0]='\0'; + _g6a3_var._parameters.LIreflect[0]='\0'; + _g6a3_var._parameters.UIreflect[0]='\0'; + _g6a3_var._parameters.DIreflect[0]='\0'; + _g6a3_var._parameters.ROreflect[0]='\0'; + _g6a3_var._parameters.LOreflect[0]='\0'; + _g6a3_var._parameters.UOreflect[0]='\0'; + _g6a3_var._parameters.DOreflect[0]='\0'; + _g6a3_var._parameters.w1l = 0.03367; + _g6a3_var._parameters.w2l = 0.002; + _g6a3_var._parameters.linwl = 10.01775; + _g6a3_var._parameters.loutwl = 1.0; + _g6a3_var._parameters.w1r = 0.03367; + _g6a3_var._parameters.w2r = 0.002; + _g6a3_var._parameters.linwr = 10.01775; + _g6a3_var._parameters.loutwr = 1.0; + _g6a3_var._parameters.h1u = 0.02049; + _g6a3_var._parameters.h2u = 0.002; + _g6a3_var._parameters.linhu = 33.01775; + _g6a3_var._parameters.louthu = 1.0; + _g6a3_var._parameters.h1d = 0.02049; + _g6a3_var._parameters.h2d = 0.002; + _g6a3_var._parameters.linhd = 33.01775; + _g6a3_var._parameters.louthd = 1.0; + _g6a3_var._parameters.l = 1.9822500000000005; + _g6a3_var._parameters.R0 = 0.99; + _g6a3_var._parameters.Qcxl = 0.0217; + _g6a3_var._parameters.Qcxr = 0.0217; + _g6a3_var._parameters.Qcyu = 0.0217; + _g6a3_var._parameters.Qcyd = 0.0217; + _g6a3_var._parameters.alphaxl = 2.5; + _g6a3_var._parameters.alphaxr = 2.5; + _g6a3_var._parameters.alphayu = 2.5; + _g6a3_var._parameters.alphayd = 2.5; + _g6a3_var._parameters.Wxr = 0.015; + _g6a3_var._parameters.Wxl = 0.015; + _g6a3_var._parameters.Wyu = 0.015; + _g6a3_var._parameters.Wyd = 0.015; + _g6a3_var._parameters.mxr = 4; + _g6a3_var._parameters.mxl = 4; + _g6a3_var._parameters.myu = 4; + _g6a3_var._parameters.myd = 4; + _g6a3_var._parameters.QcxrOW = 0.0217; + _g6a3_var._parameters.QcxlOW = 0.0217; + _g6a3_var._parameters.QcyuOW = 0.0217; + _g6a3_var._parameters.QcydOW = 0.0217; + _g6a3_var._parameters.alphaxlOW = 6.07; + _g6a3_var._parameters.alphaxrOW = 6.07; + _g6a3_var._parameters.alphayuOW = 6.07; + _g6a3_var._parameters.alphaydOW = 6.07; + _g6a3_var._parameters.WxrOW = 0.003; + _g6a3_var._parameters.WxlOW = 0.003; + _g6a3_var._parameters.WyuOW = 0.003; + _g6a3_var._parameters.WydOW = 0.003; + _g6a3_var._parameters.mxrOW = 0; + _g6a3_var._parameters.mxlOW = 0; + _g6a3_var._parameters.myuOW = 0; + _g6a3_var._parameters.mydOW = 0; + _g6a3_var._parameters.rwallthick = 0.001; + _g6a3_var._parameters.lwallthick = 0.001; + _g6a3_var._parameters.uwallthick = 0.001; + _g6a3_var._parameters.dwallthick = 0.001; + + + /* component g6a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a3_var._rotation_absolute); + rot_transpose(_g6a2_var._rotation_absolute, tr1); + rot_mul(_g6a3_var._rotation_absolute, tr1, _g6a3_var._rotation_relative); + _g6a3_var._rotation_is_identity = rot_test_identity(_g6a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 47.02775); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a2_var._position_absolute, _g6a3_var._position_absolute); + _g6a3_var._position_relative = rot_apply(_g6a3_var._rotation_absolute, tc1); + } /* g6a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute); + instrument->_position_absolute[66] = _g6a3_var._position_absolute; + instrument->_position_relative[66] = _g6a3_var._position_relative; + _g6a3_var._position_relative_is_zero = coords_test_zero(_g6a3_var._position_relative); + instrument->counter_N[66] = instrument->counter_P[66] = instrument->counter_P2[66] = 0; + instrument->counter_AbsorbProp[66]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0065_g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w1l", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linwl", "0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "loutwl", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w1r", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linwr", "0.0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "loutwr", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h1u", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linhu", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "louthu", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h1d", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linhd", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "louthd", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "l", "0", "1.9822500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a3_setpos */ + +/* component guide_end=Arm() SETTING, POSITION/ROTATION */ +int _guide_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_guide_end_setpos] component guide_end=Arm() SETTING [Arm:0]"); + stracpy(_guide_end_var._name, "guide_end", 16384); + stracpy(_guide_end_var._type, "Arm", 16384); + _guide_end_var._index=67; + int current_setpos_index = 67; + /* component guide_end=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _guide_end_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_guide_end_var._rotation_absolute, tr1, _guide_end_var._rotation_relative); + _guide_end_var._rotation_is_identity = rot_test_identity(_guide_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _guide_end_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _guide_end_var._position_absolute); + _guide_end_var._position_relative = rot_apply(_guide_end_var._rotation_absolute, tc1); + } /* guide_end=Arm() AT ROTATED */ + DEBUG_COMPONENT("guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute); + instrument->_position_absolute[67] = _guide_end_var._position_absolute; + instrument->_position_relative[67] = _guide_end_var._position_relative; + _guide_end_var._position_relative_is_zero = coords_test_zero(_guide_end_var._position_relative); + instrument->counter_N[67] = instrument->counter_P[67] = instrument->counter_P2[67] = 0; + instrument->counter_AbsorbProp[67]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0066_guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _guide_end_setpos */ + +/* component monitor_3_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_3_position_setpos] component monitor_3_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_3_position_var._name, "monitor_3_position", 16384); + stracpy(_monitor_3_position_var._type, "Arm", 16384); + _monitor_3_position_var._index=68; + int current_setpos_index = 68; + /* component monitor_3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_3_position_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_monitor_3_position_var._rotation_absolute, tr1, _monitor_3_position_var._rotation_relative); + _monitor_3_position_var._rotation_is_identity = rot_test_identity(_monitor_3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _monitor_3_position_var._position_absolute); + _monitor_3_position_var._position_relative = rot_apply(_monitor_3_position_var._rotation_absolute, tc1); + } /* monitor_3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute); + instrument->_position_absolute[68] = _monitor_3_position_var._position_absolute; + instrument->_position_relative[68] = _monitor_3_position_var._position_relative; + _monitor_3_position_var._position_relative_is_zero = coords_test_zero(_monitor_3_position_var._position_relative); + instrument->counter_N[68] = instrument->counter_P[68] = instrument->counter_P2[68] = 0; + instrument->counter_AbsorbProp[68]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0067_monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_3_position_setpos */ + +/* component start_backend=Arm() SETTING, POSITION/ROTATION */ +int _start_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_start_backend_setpos] component start_backend=Arm() SETTING [Arm:0]"); + stracpy(_start_backend_var._name, "start_backend", 16384); + stracpy(_start_backend_var._type, "Arm", 16384); + _start_backend_var._index=69; + int current_setpos_index = 69; + /* component start_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _start_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_start_backend_var._rotation_absolute, tr1, _start_backend_var._rotation_relative); + _start_backend_var._rotation_is_identity = rot_test_identity(_start_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _start_backend_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _start_backend_var._position_absolute); + _start_backend_var._position_relative = rot_apply(_start_backend_var._rotation_absolute, tc1); + } /* start_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute); + instrument->_position_absolute[69] = _start_backend_var._position_absolute; + instrument->_position_relative[69] = _start_backend_var._position_relative; + _start_backend_var._position_relative_is_zero = coords_test_zero(_start_backend_var._position_relative); + instrument->counter_N[69] = instrument->counter_P[69] = instrument->counter_P2[69] = 0; + instrument->counter_AbsorbProp[69]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0068_start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _start_backend_setpos */ + +/* component optical_axis_backend=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_backend_setpos] component optical_axis_backend=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_backend_var._name, "optical_axis_backend", 16384); + stracpy(_optical_axis_backend_var._type, "Arm", 16384); + _optical_axis_backend_var._index=70; + int current_setpos_index = 70; + /* component optical_axis_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _start_backend_var._rotation_absolute, _optical_axis_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_optical_axis_backend_var._rotation_absolute, tr1, _optical_axis_backend_var._rotation_relative); + _optical_axis_backend_var._rotation_is_identity = rot_test_identity(_optical_axis_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_start_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_backend_var._position_absolute = coords_add(_start_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _optical_axis_backend_var._position_absolute); + _optical_axis_backend_var._position_relative = rot_apply(_optical_axis_backend_var._rotation_absolute, tc1); + } /* optical_axis_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute); + instrument->_position_absolute[70] = _optical_axis_backend_var._position_absolute; + instrument->_position_relative[70] = _optical_axis_backend_var._position_relative; + _optical_axis_backend_var._position_relative_is_zero = coords_test_zero(_optical_axis_backend_var._position_relative); + instrument->counter_N[70] = instrument->counter_P[70] = instrument->counter_P2[70] = 0; + instrument->counter_AbsorbProp[70]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0069_optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_backend_setpos */ + +/* component pinhole_2=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_2_setpos] component pinhole_2=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_2_var._name, "pinhole_2", 16384); + stracpy(_pinhole_2_var._type, "Slit", 16384); + _pinhole_2_var._index=71; + int current_setpos_index = 71; + _pinhole_2_var._parameters.xmin = UNSET; + _pinhole_2_var._parameters.xmax = UNSET; + _pinhole_2_var._parameters.ymin = UNSET; + _pinhole_2_var._parameters.ymax = UNSET; + _pinhole_2_var._parameters.radius = UNSET; + _pinhole_2_var._parameters.xwidth = 0.03; + _pinhole_2_var._parameters.yheight = 0.03; + + + /* component pinhole_2=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _pinhole_2_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_pinhole_2_var._rotation_absolute, tr1, _pinhole_2_var._rotation_relative); + _pinhole_2_var._rotation_is_identity = rot_test_identity(_pinhole_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_2_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _pinhole_2_var._position_absolute); + _pinhole_2_var._position_relative = rot_apply(_pinhole_2_var._rotation_absolute, tc1); + } /* pinhole_2=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute); + instrument->_position_absolute[71] = _pinhole_2_var._position_absolute; + instrument->_position_relative[71] = _pinhole_2_var._position_relative; + _pinhole_2_var._position_relative_is_zero = coords_test_zero(_pinhole_2_var._position_relative); + instrument->counter_N[71] = instrument->counter_P[71] = instrument->counter_P2[71] = 0; + instrument->counter_AbsorbProp[71]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0070_pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xwidth", "UNSET", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "yheight", "UNSET", "0.03","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_2_setpos */ + +/* component graph=Graphite_Diffuser() SETTING, POSITION/ROTATION */ +int _graph_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_graph_setpos] component graph=Graphite_Diffuser() SETTING [Graphite_Diffuser:0]"); + stracpy(_graph_var._name, "graph", 16384); + stracpy(_graph_var._type, "Graphite_Diffuser", 16384); + _graph_var._index=72; + int current_setpos_index = 72; + _graph_var._parameters.xwidth = 0.1; + _graph_var._parameters.ywidth = 0.1; + _graph_var._parameters.thick = 0.2; + _graph_var._parameters.abs = 1; + + /* component graph=Graphite_Diffuser() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _graph_var._rotation_absolute); + rot_transpose(_pinhole_2_var._rotation_absolute, tr1); + rot_mul(_graph_var._rotation_absolute, tr1, _graph_var._rotation_relative); + _graph_var._rotation_is_identity = rot_test_identity(_graph_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50.001); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _graph_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_2_var._position_absolute, _graph_var._position_absolute); + _graph_var._position_relative = rot_apply(_graph_var._rotation_absolute, tc1); + } /* graph=Graphite_Diffuser() AT ROTATED */ + DEBUG_COMPONENT("graph", _graph_var._position_absolute, _graph_var._rotation_absolute); + instrument->_position_absolute[72] = _graph_var._position_absolute; + instrument->_position_relative[72] = _graph_var._position_relative; + _graph_var._position_relative_is_zero = coords_test_zero(_graph_var._position_relative); + instrument->counter_N[72] = instrument->counter_P[72] = instrument->counter_P2[72] = 0; + instrument->counter_AbsorbProp[72]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0071_graph", _graph_var._position_absolute, _graph_var._rotation_absolute, "Graphite_Diffuser"); + mccomp_param_nexus(nxhandle,"0071_graph", "xwidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "ywidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "thick", "0.01", "0.2","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "abs", "1", "1","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _graph_setpos */ + +/* component sample_monitor_arm=Arm() SETTING, POSITION/ROTATION */ +int _sample_monitor_arm_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_monitor_arm_setpos] component sample_monitor_arm=Arm() SETTING [Arm:0]"); + stracpy(_sample_monitor_arm_var._name, "sample_monitor_arm", 16384); + stracpy(_sample_monitor_arm_var._type, "Arm", 16384); + _sample_monitor_arm_var._index=73; + int current_setpos_index = 73; + /* component sample_monitor_arm=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_monitor_arm_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_monitor_arm_var._rotation_absolute, tr1, _sample_monitor_arm_var._rotation_relative); + _sample_monitor_arm_var._rotation_is_identity = rot_test_identity(_sample_monitor_arm_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_monitor_arm_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_monitor_arm_var._position_absolute); + _sample_monitor_arm_var._position_relative = rot_apply(_sample_monitor_arm_var._rotation_absolute, tc1); + } /* sample_monitor_arm=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute); + instrument->_position_absolute[73] = _sample_monitor_arm_var._position_absolute; + instrument->_position_relative[73] = _sample_monitor_arm_var._position_relative; + _sample_monitor_arm_var._position_relative_is_zero = coords_test_zero(_sample_monitor_arm_var._position_relative); + instrument->counter_N[73] = instrument->counter_P[73] = instrument->counter_P2[73] = 0; + instrument->counter_AbsorbProp[73]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0072_sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_monitor_arm_setpos */ + +/* component sample_PSD=Monitor_nD() SETTING, POSITION/ROTATION */ +int _sample_PSD_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_PSD_setpos] component sample_PSD=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_sample_PSD_var._name, "sample_PSD", 16384); + stracpy(_sample_PSD_var._type, "Monitor_nD", 16384); + _sample_PSD_var._index=74; + int current_setpos_index = 74; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user1, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user2, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user3, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user3[0]='\0'; + _sample_PSD_var._parameters.xwidth = 0.3; + _sample_PSD_var._parameters.yheight = 0.3; + _sample_PSD_var._parameters.zdepth = 0; + _sample_PSD_var._parameters.xmin = 0; + _sample_PSD_var._parameters.xmax = 0; + _sample_PSD_var._parameters.ymin = 0; + _sample_PSD_var._parameters.ymax = 0; + _sample_PSD_var._parameters.zmin = 0; + _sample_PSD_var._parameters.zmax = 0; + _sample_PSD_var._parameters.bins = 0; + _sample_PSD_var._parameters.min = -1e40; + _sample_PSD_var._parameters.max = 1e40; + _sample_PSD_var._parameters.restore_neutron = 0; + _sample_PSD_var._parameters.radius = 0; + if("x bins 300 y bins 300" && strlen("x bins 300 y bins 300")) + stracpy(_sample_PSD_var._parameters.options, "x bins 300 y bins 300" ? "x bins 300 y bins 300" : "", 16384); + else + _sample_PSD_var._parameters.options[0]='\0'; + if("image.dat" && strlen("image.dat")) + stracpy(_sample_PSD_var._parameters.filename, "image.dat" ? "image.dat" : "", 16384); + else + _sample_PSD_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.geometry[0]='\0'; + _sample_PSD_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username3[0]='\0'; + + + /* component sample_PSD=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _sample_PSD_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_PSD_var._rotation_absolute, tr1, _sample_PSD_var._rotation_relative); + _sample_PSD_var._rotation_is_identity = rot_test_identity(_sample_PSD_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_PSD_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_PSD_var._position_absolute); + _sample_PSD_var._position_relative = rot_apply(_sample_PSD_var._rotation_absolute, tc1); + } /* sample_PSD=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute); + instrument->_position_absolute[74] = _sample_PSD_var._position_absolute; + instrument->_position_relative[74] = _sample_PSD_var._position_relative; + _sample_PSD_var._position_relative_is_zero = coords_test_zero(_sample_PSD_var._position_relative); + instrument->counter_N[74] = instrument->counter_P[74] = instrument->counter_P2[74] = 0; + instrument->counter_AbsorbProp[74]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0073_sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "options", "NULL", "x bins 300 y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "filename", "NULL", "image.dat", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_PSD_setpos */ + +/* component profile_x=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_x_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_x_setpos] component profile_x=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_x_var._name, "profile_x", 16384); + stracpy(_profile_x_var._type, "Monitor_nD", 16384); + _profile_x_var._index=75; + int current_setpos_index = 75; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user3[0]='\0'; + _profile_x_var._parameters.xwidth = 0.3; + _profile_x_var._parameters.yheight = 0.3; + _profile_x_var._parameters.zdepth = 0; + _profile_x_var._parameters.xmin = 0; + _profile_x_var._parameters.xmax = 0; + _profile_x_var._parameters.ymin = 0; + _profile_x_var._parameters.ymax = 0; + _profile_x_var._parameters.zmin = 0; + _profile_x_var._parameters.zmax = 0; + _profile_x_var._parameters.bins = 0; + _profile_x_var._parameters.min = -1e40; + _profile_x_var._parameters.max = 1e40; + _profile_x_var._parameters.restore_neutron = 0; + _profile_x_var._parameters.radius = 0; + if("x bins 300" && strlen("x bins 300")) + stracpy(_profile_x_var._parameters.options, "x bins 300" ? "x bins 300" : "", 16384); + else + _profile_x_var._parameters.options[0]='\0'; + if("profile_x.dat" && strlen("profile_x.dat")) + stracpy(_profile_x_var._parameters.filename, "profile_x.dat" ? "profile_x.dat" : "", 16384); + else + _profile_x_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.geometry[0]='\0'; + _profile_x_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username3[0]='\0'; + + + /* component profile_x=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_x_var._rotation_absolute); + rot_transpose(_sample_PSD_var._rotation_absolute, tr1); + rot_mul(_profile_x_var._rotation_absolute, tr1, _profile_x_var._rotation_relative); + _profile_x_var._rotation_is_identity = rot_test_identity(_profile_x_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_x_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_sample_PSD_var._position_absolute, _profile_x_var._position_absolute); + _profile_x_var._position_relative = rot_apply(_profile_x_var._rotation_absolute, tc1); + } /* profile_x=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute); + instrument->_position_absolute[75] = _profile_x_var._position_absolute; + instrument->_position_relative[75] = _profile_x_var._position_relative; + _profile_x_var._position_relative_is_zero = coords_test_zero(_profile_x_var._position_relative); + instrument->counter_N[75] = instrument->counter_P[75] = instrument->counter_P2[75] = 0; + instrument->counter_AbsorbProp[75]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0074_profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "options", "NULL", "x bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "filename", "NULL", "profile_x.dat", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_x_setpos */ + +/* component profile_y=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_y_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_y_setpos] component profile_y=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_y_var._name, "profile_y", 16384); + stracpy(_profile_y_var._type, "Monitor_nD", 16384); + _profile_y_var._index=76; + int current_setpos_index = 76; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user3[0]='\0'; + _profile_y_var._parameters.xwidth = 0.3; + _profile_y_var._parameters.yheight = 0.3; + _profile_y_var._parameters.zdepth = 0; + _profile_y_var._parameters.xmin = 0; + _profile_y_var._parameters.xmax = 0; + _profile_y_var._parameters.ymin = 0; + _profile_y_var._parameters.ymax = 0; + _profile_y_var._parameters.zmin = 0; + _profile_y_var._parameters.zmax = 0; + _profile_y_var._parameters.bins = 0; + _profile_y_var._parameters.min = -1e40; + _profile_y_var._parameters.max = 1e40; + _profile_y_var._parameters.restore_neutron = 0; + _profile_y_var._parameters.radius = 0; + if("y bins 300" && strlen("y bins 300")) + stracpy(_profile_y_var._parameters.options, "y bins 300" ? "y bins 300" : "", 16384); + else + _profile_y_var._parameters.options[0]='\0'; + if("profile_y.dat" && strlen("profile_y.dat")) + stracpy(_profile_y_var._parameters.filename, "profile_y.dat" ? "profile_y.dat" : "", 16384); + else + _profile_y_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.geometry[0]='\0'; + _profile_y_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username3[0]='\0'; + + + /* component profile_y=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_y_var._rotation_absolute); + rot_transpose(_profile_x_var._rotation_absolute, tr1); + rot_mul(_profile_y_var._rotation_absolute, tr1, _profile_y_var._rotation_relative); + _profile_y_var._rotation_is_identity = rot_test_identity(_profile_y_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_y_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_x_var._position_absolute, _profile_y_var._position_absolute); + _profile_y_var._position_relative = rot_apply(_profile_y_var._rotation_absolute, tc1); + } /* profile_y=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute); + instrument->_position_absolute[76] = _profile_y_var._position_absolute; + instrument->_position_relative[76] = _profile_y_var._position_relative; + _profile_y_var._position_relative_is_zero = coords_test_zero(_profile_y_var._position_relative); + instrument->counter_N[76] = instrument->counter_P[76] = instrument->counter_P2[76] = 0; + instrument->counter_AbsorbProp[76]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0075_profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "options", "NULL", "y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "filename", "NULL", "profile_y.dat", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_y_setpos */ + +/* component wavelength=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_setpos] component wavelength=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_var._name, "wavelength", 16384); + stracpy(_wavelength_var._type, "Monitor_nD", 16384); + _wavelength_var._index=77; + int current_setpos_index = 77; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user3[0]='\0'; + _wavelength_var._parameters.xwidth = 0.3; + _wavelength_var._parameters.yheight = 0.3; + _wavelength_var._parameters.zdepth = 0; + _wavelength_var._parameters.xmin = 0; + _wavelength_var._parameters.xmax = 0; + _wavelength_var._parameters.ymin = 0; + _wavelength_var._parameters.ymax = 0; + _wavelength_var._parameters.zmin = 0; + _wavelength_var._parameters.zmax = 0; + _wavelength_var._parameters.bins = 0; + _wavelength_var._parameters.min = -1e40; + _wavelength_var._parameters.max = 1e40; + _wavelength_var._parameters.restore_neutron = 0; + _wavelength_var._parameters.radius = 0; + if("L bins 300 limits [0.5 10]" && strlen("L bins 300 limits [0.5 10]")) + stracpy(_wavelength_var._parameters.options, "L bins 300 limits [0.5 10]" ? "L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_var._parameters.options[0]='\0'; + if("wavelength.dat" && strlen("wavelength.dat")) + stracpy(_wavelength_var._parameters.filename, "wavelength.dat" ? "wavelength.dat" : "", 16384); + else + _wavelength_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.geometry[0]='\0'; + _wavelength_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username3[0]='\0'; + + + /* component wavelength=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_var._rotation_absolute); + rot_transpose(_profile_y_var._rotation_absolute, tr1); + rot_mul(_wavelength_var._rotation_absolute, tr1, _wavelength_var._rotation_relative); + _wavelength_var._rotation_is_identity = rot_test_identity(_wavelength_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_y_var._position_absolute, _wavelength_var._position_absolute); + _wavelength_var._position_relative = rot_apply(_wavelength_var._rotation_absolute, tc1); + } /* wavelength=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute); + instrument->_position_absolute[77] = _wavelength_var._position_absolute; + instrument->_position_relative[77] = _wavelength_var._position_relative; + _wavelength_var._position_relative_is_zero = coords_test_zero(_wavelength_var._position_relative); + instrument->counter_N[77] = instrument->counter_P[77] = instrument->counter_P2[77] = 0; + instrument->counter_AbsorbProp[77]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0076_wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "options", "NULL", "L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "filename", "NULL", "wavelength.dat", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_setpos */ + +/* component tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_tof_setpos] component tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_tof_var._name, "tof", 16384); + stracpy(_tof_var._type, "Monitor_nD", 16384); + _tof_var._index=78; + int current_setpos_index = 78; + if("" && strlen("")) + stracpy(_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _tof_var._parameters.user3[0]='\0'; + _tof_var._parameters.xwidth = 0.3; + _tof_var._parameters.yheight = 0.3; + _tof_var._parameters.zdepth = 0; + _tof_var._parameters.xmin = 0; + _tof_var._parameters.xmax = 0; + _tof_var._parameters.ymin = 0; + _tof_var._parameters.ymax = 0; + _tof_var._parameters.zmin = 0; + _tof_var._parameters.zmax = 0; + _tof_var._parameters.bins = 0; + _tof_var._parameters.min = -1e40; + _tof_var._parameters.max = 1e40; + _tof_var._parameters.restore_neutron = 0; + _tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15]" && strlen("t bins 300 limits [0, 0.15]")) + stracpy(_tof_var._parameters.options, "t bins 300 limits [0, 0.15]" ? "t bins 300 limits [0, 0.15]" : "", 16384); + else + _tof_var._parameters.options[0]='\0'; + if("time.dat" && strlen("time.dat")) + stracpy(_tof_var._parameters.filename, "time.dat" ? "time.dat" : "", 16384); + else + _tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.geometry[0]='\0'; + _tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username3[0]='\0'; + + + /* component tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _tof_var._rotation_absolute); + rot_transpose(_wavelength_var._rotation_absolute, tr1); + rot_mul(_tof_var._rotation_absolute, tr1, _tof_var._rotation_relative); + _tof_var._rotation_is_identity = rot_test_identity(_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_var._position_absolute, _tof_var._position_absolute); + _tof_var._position_relative = rot_apply(_tof_var._rotation_absolute, tc1); + } /* tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("tof", _tof_var._position_absolute, _tof_var._rotation_absolute); + instrument->_position_absolute[78] = _tof_var._position_absolute; + instrument->_position_relative[78] = _tof_var._position_relative; + _tof_var._position_relative_is_zero = coords_test_zero(_tof_var._position_relative); + instrument->counter_N[78] = instrument->counter_P[78] = instrument->counter_P2[78] = 0; + instrument->counter_AbsorbProp[78]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0077_tof", _tof_var._position_absolute, _tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0077_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "options", "NULL", "t bins 300 limits [0, 0.15]", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "filename", "NULL", "time.dat", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _tof_setpos */ + +/* component wavelength_tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_tof_setpos] component wavelength_tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_tof_var._name, "wavelength_tof", 16384); + stracpy(_wavelength_tof_var._type, "Monitor_nD", 16384); + _wavelength_tof_var._index=79; + int current_setpos_index = 79; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user3[0]='\0'; + _wavelength_tof_var._parameters.xwidth = 0.3; + _wavelength_tof_var._parameters.yheight = 0.3; + _wavelength_tof_var._parameters.zdepth = 0; + _wavelength_tof_var._parameters.xmin = 0; + _wavelength_tof_var._parameters.xmax = 0; + _wavelength_tof_var._parameters.ymin = 0; + _wavelength_tof_var._parameters.ymax = 0; + _wavelength_tof_var._parameters.zmin = 0; + _wavelength_tof_var._parameters.zmax = 0; + _wavelength_tof_var._parameters.bins = 0; + _wavelength_tof_var._parameters.min = -1e40; + _wavelength_tof_var._parameters.max = 1e40; + _wavelength_tof_var._parameters.restore_neutron = 0; + _wavelength_tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" && strlen("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]")) + stracpy(_wavelength_tof_var._parameters.options, "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" ? "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_tof_var._parameters.options[0]='\0'; + if("wavelength_tof.dat" && strlen("wavelength_tof.dat")) + stracpy(_wavelength_tof_var._parameters.filename, "wavelength_tof.dat" ? "wavelength_tof.dat" : "", 16384); + else + _wavelength_tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.geometry[0]='\0'; + _wavelength_tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username3[0]='\0'; + + + /* component wavelength_tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_tof_var._rotation_absolute); + rot_transpose(_tof_var._rotation_absolute, tr1); + rot_mul(_wavelength_tof_var._rotation_absolute, tr1, _wavelength_tof_var._rotation_relative); + _wavelength_tof_var._rotation_is_identity = rot_test_identity(_wavelength_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_tof_var._position_absolute, _wavelength_tof_var._position_absolute); + _wavelength_tof_var._position_relative = rot_apply(_wavelength_tof_var._rotation_absolute, tc1); + } /* wavelength_tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute); + instrument->_position_absolute[79] = _wavelength_tof_var._position_absolute; + instrument->_position_relative[79] = _wavelength_tof_var._position_relative; + _wavelength_tof_var._position_relative_is_zero = coords_test_zero(_wavelength_tof_var._position_relative); + instrument->counter_N[79] = instrument->counter_P[79] = instrument->counter_P2[79] = 0; + instrument->counter_AbsorbProp[79]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0078_wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "options", "NULL", "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "filename", "NULL", "wavelength_tof.dat", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_tof_setpos */ + +/* component sample_position=Arm() SETTING, POSITION/ROTATION */ +int _sample_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_position_setpos] component sample_position=Arm() SETTING [Arm:0]"); + stracpy(_sample_position_var._name, "sample_position", 16384); + stracpy(_sample_position_var._type, "Arm", 16384); + _sample_position_var._index=80; + int current_setpos_index = 80; + /* component sample_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_position_var._rotation_absolute); + rot_transpose(_wavelength_tof_var._rotation_absolute, tr1); + rot_mul(_sample_position_var._rotation_absolute, tr1, _sample_position_var._rotation_relative); + _sample_position_var._rotation_is_identity = rot_test_identity(_sample_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_position_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_tof_var._position_absolute, _sample_position_var._position_absolute); + _sample_position_var._position_relative = rot_apply(_sample_position_var._rotation_absolute, tc1); + } /* sample_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute); + instrument->_position_absolute[80] = _sample_position_var._position_absolute; + instrument->_position_relative[80] = _sample_position_var._position_relative; + _sample_position_var._position_relative_is_zero = coords_test_zero(_sample_position_var._position_relative); + instrument->counter_N[80] = instrument->counter_P[80] = instrument->counter_P2[80] = 0; + instrument->counter_AbsorbProp[80]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0079_sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_position_setpos */ + +_class_Progress_bar *class_Progress_bar_init(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_init] component Origin=Progress_bar() INITIALISE [Progress_bar:0]"); + + IntermediateCnts = 0; + StartTime = 0; + EndTime = 0; + CurrentTime = 0; + + fprintf (stdout, "[%s] Initialize\n", instrument_name); + if (percent * mcget_ncount () / 100 < 1e5) { + percent = 1e5 * 100.0 / mcget_ncount (); + } + #ifdef OPENACC + time (&StartTime); + #endif + + #ifdef USE_MPI + sprintf (infostring, "(%i MPI processes) ", mpi_node_count); + #else + sprintf (infostring, "(single process) "); + #endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_init */ + +_class_ESS_butterfly *class_ESS_butterfly_init(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_init] component Source=ESS_butterfly() INITIALISE [ESS_butterfly:0]"); + + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_init */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_init(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_init] component bi=bi_spec_ellipse() INITIALISE [bi_spec_ellipse:0]"); + + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return(_comp); +} /* class_bi_spec_ellipse_init */ + +_class_Guide_four_side *class_Guide_four_side_init(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_init] component NBOA_drawing_1_end=Guide_four_side() INITIALISE [Guide_four_side:0]"); + + + int i; + + if (RIreflect && strlen (RIreflect)) { + if (Table_Read (&riTable, RIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, RIreflect)); + } + + if (LIreflect && strlen (LIreflect)) { + if (Table_Read (&liTable, LIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LIreflect)); + } + + if (UIreflect && strlen (UIreflect)) { + if (Table_Read (&uiTable, UIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UIreflect)); + } + + if (DIreflect && strlen (DIreflect)) { + if (Table_Read (&diTable, DIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DIreflect)); + } + + if (ROreflect && strlen (ROreflect)) { + if (Table_Read (&roTable, ROreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, ROreflect)); + } + + if (LOreflect && strlen (LOreflect)) { + if (Table_Read (&loTable, LOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LOreflect)); + } + + if (UOreflect && strlen (UOreflect)) { + if (Table_Read (&uoTable, UOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UOreflect)); + } + + if (DOreflect && strlen (DOreflect)) { + if (Table_Read (&doTable, DOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DOreflect)); + } + + if (w1r < 0) + TEST_INPUT ("w1r", NAME_CURRENT_COMP); + + if (w1l < 0) + TEST_INPUT ("w1l", NAME_CURRENT_COMP); + + if (h1u < 0) + TEST_INPUT ("h1u", NAME_CURRENT_COMP); + + if (h1d < 0) + TEST_INPUT ("h1d", NAME_CURRENT_COMP); + + if (w2r < 0) + TEST_INPUT ("w2r", NAME_CURRENT_COMP); + + if (w2l < 0) + TEST_INPUT ("w2l", NAME_CURRENT_COMP); + + if (h2u < 0) + TEST_INPUT ("h2u", NAME_CURRENT_COMP); + + if (h2d < 0) + TEST_INPUT ("h2d", NAME_CURRENT_COMP); + + if (mxrOW != -1 && mxrOW < 0) + TEST_INPUT_1 ("mxrOW", NAME_CURRENT_COMP); + + if (mxlOW != -1 && mxlOW < 0) + TEST_INPUT_1 ("mxlOW", NAME_CURRENT_COMP); + + if (myuOW != -1 && myuOW < 0) + TEST_INPUT_1 ("myuOW", NAME_CURRENT_COMP); + + if (mydOW != -1 && mydOW < 0) + TEST_INPUT_1 ("mydOW", NAME_CURRENT_COMP); + + if (mxr < 0 && mxr != -1) + TEST_INPUT_1 ("mxr", NAME_CURRENT_COMP); + + if (mxl < 0 && mxl != -1) + TEST_INPUT_1 ("mxl", NAME_CURRENT_COMP); + + if (myu < 0 && myu != -1) + TEST_INPUT_1 ("myu", NAME_CURRENT_COMP); + + if (myd < 0 && myd != -1) + TEST_INPUT_1 ("myd", NAME_CURRENT_COMP); + + if (Qcxl < 0) + TEST_INPUT_2 ("Qcxl", NAME_CURRENT_COMP); + + if (Qcxr < 0) + TEST_INPUT_2 ("Qcxr", NAME_CURRENT_COMP); + + if (Qcyu < 0) + TEST_INPUT_2 ("Qcyu", NAME_CURRENT_COMP); + + if (Qcyd < 0) + TEST_INPUT_2 ("Qcyd", NAME_CURRENT_COMP); + + if (alphaxl < 0) + TEST_INPUT_2 ("alphaxl", NAME_CURRENT_COMP); + + if (alphaxr < 0) + TEST_INPUT_2 ("alphaxr", NAME_CURRENT_COMP); + + if (alphayu < 0) + TEST_INPUT_2 ("alphayu", NAME_CURRENT_COMP); + + if (alphayd < 0) + TEST_INPUT_2 ("alphayd", NAME_CURRENT_COMP); + + if (QcxlOW < 0) + TEST_INPUT_2 ("QcxlOW", NAME_CURRENT_COMP); + + if (QcxrOW < 0) + TEST_INPUT_2 ("QcxrOW", NAME_CURRENT_COMP); + + if (QcyuOW < 0) + TEST_INPUT_2 ("QcyuOW", NAME_CURRENT_COMP); + + if (QcydOW < 0) + TEST_INPUT_2 ("QcydOW", NAME_CURRENT_COMP); + + if (alphaxlOW < 0) + TEST_INPUT_2 ("alphaxlOW", NAME_CURRENT_COMP); + + if (alphaxrOW < 0) + TEST_INPUT_2 ("alphaxrOW", NAME_CURRENT_COMP); + + if (alphayuOW < 0) + TEST_INPUT_2 ("alphayuOW", NAME_CURRENT_COMP); + + if (alphaydOW < 0) + TEST_INPUT_2 ("alphaydOW", NAME_CURRENT_COMP); + + if (rwallthick < 0) + TEST_INPUT_2 ("rwallthick", NAME_CURRENT_COMP); + + if (lwallthick < 0) + TEST_INPUT_2 ("lwallthick", NAME_CURRENT_COMP); + + if (uwallthick < 0) + TEST_INPUT_2 ("uwallthick", NAME_CURRENT_COMP); + + if (dwallthick < 0) + TEST_INPUT_2 ("dwallthick", NAME_CURRENT_COMP); + + if (Wxr <= 0) + TEST_INPUT_3 ("Wxr", NAME_CURRENT_COMP); + + if (Wxl <= 0) + TEST_INPUT_3 ("Wxl", NAME_CURRENT_COMP); + + if (Wyu <= 0) + TEST_INPUT_3 ("Wyu", NAME_CURRENT_COMP); + + if (Wyd <= 0) + TEST_INPUT_3 ("Wyd", NAME_CURRENT_COMP); + + if (WxrOW <= 0) + TEST_INPUT_3 ("WxrOW", NAME_CURRENT_COMP); + + if (WxlOW <= 0) + TEST_INPUT_3 ("WxlOW", NAME_CURRENT_COMP); + + if (WyuOW <= 0) + TEST_INPUT_3 ("WyuOW", NAME_CURRENT_COMP); + + if (WydOW <= 0) + TEST_INPUT_3 ("WydOW", NAME_CURRENT_COMP); + + if (l <= 0) { + fprintf (stderr, "Component: %s (Guide_four_side) real guide length \n", NAME_CURRENT_COMP); + fprintf (stderr, " is <= ZERO ! \n"); + exit (-1); + } + + if (mcgravitation) + fprintf (stderr, + "WARNING: Guide_four_side: %s: " + "This component produces wrong results with gravitation !\n" + "Use Guide_gravity.\n", + NAME_CURRENT_COMP); + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + if (loutwr != 0 && linwr != 0) /* elliptic right side wall */ + { + ELLIPSE (w1r, l, linwr, loutwr, rwallthick, &awr, &bwr, &a2wr, &b2wr, &z0wr, &w2r, &awrwt, &a2wrwt, &bwrwt, &b2wrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr != 0) /* parabolic focusing right side wall */ + { + PARABEL_FOCUS (w1r, l, loutwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr != 0 && loutwr == 0) /* parabolic defocusing right side wall */ + { + PARABEL_DEFOCUS (w1r, l, linwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr == 0) /* straight right side wall */ + { + LINEAR (w1r, w2r, l, rwallthick, &w1rwt, &w2rwt); + } + + /* Calculation of curve-parameters for the left side wall - positive x-axis - analog to right side*/ + + if ((linwl != 0) && (loutwl != 0)) /* elleptic left side wall */ + { + ELLIPSE (w1l, l, linwl, loutwl, lwallthick, &awl, &bwl, &a2wl, &b2wl, &z0wl, &w2l, &awlwt, &a2wlwt, &bwlwt, &b2wlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl != 0) /* parabolic focusing left side wall */ + { + PARABEL_FOCUS (w1l, l, loutwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl != 0 && loutwl == 0) /* parabolic defocusing left side wall */ + { + PARABEL_DEFOCUS (w1l, l, linwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl == 0) /* straight left side wall */ + { + LINEAR (w1l, w2l, l, lwallthick, &w1lwt, &w2lwt); + } + + /* Calculation of curve-parameters for the top wall - positive y-axis - analog right wall*/ + + if (linhu != 0 && louthu != 0) /* elliptic top wall */ + { + ELLIPSE (h1u, l, linhu, louthu, uwallthick, &ahu, &bhu, &a2hu, &b2hu, &z0hu, &h2u, &ahuwt, &a2huwt, &bhuwt, &b2huwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu != 0) /* parabolic focusing top wall */ + { + PARABEL_FOCUS (h1u, l, louthu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu != 0 && louthu == 0) /* parabolic defocusing top wall */ + { + PARABEL_DEFOCUS (h1u, l, linhu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu == 0) { + LINEAR (h1u, h2u, l, uwallthick, &h1uwt, &h2uwt); + } + + /* Calculation of curve-parameters for the bottom wall - negative y-axis - analog right wall */ + + if (linhd != 0 && louthd != 0) /* elliptic bottom wall */ + { + ELLIPSE (h1d, l, linhd, louthd, dwallthick, &ahd, &bhd, &a2hd, &b2hd, &z0hd, &h2d, &ahdwt, &a2hdwt, &bhdwt, &b2hdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd != 0) /* parabolic focusing bottom wall */ + { + PARABEL_FOCUS (h1d, l, louthd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd != 0 && louthd == 0) /* parabolic defocusing bottom wall */ + { + PARABEL_DEFOCUS (h1d, l, linhd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd == 0) { + LINEAR (h1d, h2d, l, dwallthick, &h1dwt, &h2dwt); + } + + mru1 = (h1uwt - h1u) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right upper corner*/ + nru1 = h1u - mru1 * (-w1r); + + mrd1 = (-h1dwt + h1d) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right lower corner*/ + nrd1 = -h1d - mrd1 * (-w1r); + + mlu1 = (h1uwt - h1u) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left upper corner*/ + nlu1 = h1u - mlu1 * w1l; + + mld1 = (-h1dwt + h1d) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left lower corner*/ + nld1 = -h1d - mld1 * w1l; + + mru2 = (h2u - h2uwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right upper corner*/ + nru2 = h2u - mru2 * (-w2r); + + mrd2 = (-h2d + h2dwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right lower corner*/ + nrd2 = -h2d - mrd2 * (-w2r); + + mlu2 = (h2u - h2uwt) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left upper corner*/ + nlu2 = h2u - mlu2 * w2l; + + mld2 = (h2dwt - h2d) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left lower corner*/ + nld2 = -h2d - mld2 * w2l; + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_init */ + +_class_MultiDiskChopper *class_MultiDiskChopper_init(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_init] component wfmc_1=MultiDiskChopper() INITIALISE [MultiDiskChopper:0]"); + + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_init */ + +_class_Slit *class_Slit_init(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_init] component pinhole_1=Slit() INITIALISE [Slit:0]"); + + if (is_unset (radius)) { + isradial = 0; + if (all_set (3, xwidth, xmin, xmax)) { + slit_error_if (xwidth != xmax - xmin, "specifying xwidth, xmin and xmax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (xwidth) && any_unset (2, xmin, xmax), "specify either xwidth or xmin & xmax", NAME_CURRENT_COMP); + } + if (all_set (3, yheight, ymin, ymax)) { + slit_error_if (yheight != ymax - ymin, "specifying yheight, ymin and ymax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (yheight) && any_unset (2, ymin, ymax), "specify either yheight or ymin & ymax", NAME_CURRENT_COMP); + } + if (is_unset (xmin)) { // xmax also unset but xwidth *is* set + xmax = xwidth / 2; + xmin = -xmax; + } + if (is_unset (ymin)) { // ymax also unset but yheight *is* set + ymax = yheight / 2; + ymin = -ymax; + } + slit_warning_if (xmin == xmax || ymin == ymax, "Running with CLOSED rectangular slit - is this intentional?", NAME_CURRENT_COMP); + } else { + isradial = 1; + slit_error_if (any_set (6, xwidth, xmin, xmax, yheight, ymin, ymax), "specify radius OR width and height parameters", NAME_CURRENT_COMP); + slit_warning_if (radius == 0., "Running with CLOSED radial slit - is this intentional?", NAME_CURRENT_COMP); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_init */ + +_class_DiskChopper *class_DiskChopper_init(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_init] component bp1_chopper=DiskChopper() INITIALISE [DiskChopper:0]"); + + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_init */ + +_class_Monitor_nD *class_Monitor_nD_init(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_init] component sample_PSD=Monitor_nD() INITIALISE [Monitor_nD:0]"); + + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_init */ + + + +int init(void) { /* called by mccode_main for ODIN_baseline:INITIALISE */ + DEBUG_INSTR(); + // Initialise rng + srandom(_hash(mcseed-1)); + + /* code_main/parseoptions/readparams sets instrument parameters value */ + stracpy(instrument->_name, "ODIN_baseline", 256); + + /* Instrument 'ODIN_baseline' INITIALISE */ + SIG_MESSAGE("[ODIN_baseline] INITIALISE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) +{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + + +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + _Origin_setpos(); /* type Progress_bar */ + _optical_axis_setpos(); /* type Arm */ + _Source_setpos(); /* type ESS_butterfly */ + _Start_of_bi_setpos(); /* type Arm */ + _bi_setpos(); /* type bi_spec_ellipse */ + _End_of_bi_setpos(); /* type Arm */ + _NBOA_drawing_1_end_setpos(); /* type Guide_four_side */ + _g1a2_setpos(); /* type Guide_four_side */ + _g1a3_setpos(); /* type Guide_four_side */ + _g1b1_setpos(); /* type Guide_four_side */ + _g1c1_setpos(); /* type Guide_four_side */ + _wfm_position_setpos(); /* type Arm */ + _wfm_1_position_setpos(); /* type Arm */ + _wfmc_1_setpos(); /* type MultiDiskChopper */ + _pinhole_1_setpos(); /* type Slit */ + _wfm_2_position_setpos(); /* type Arm */ + _wfmc_2_setpos(); /* type MultiDiskChopper */ + _g2a1_setpos(); /* type Guide_four_side */ + _monitor_1_position_setpos(); /* type Arm */ + _g2a2_setpos(); /* type Guide_four_side */ + _fo1_position_setpos(); /* type Arm */ + _fo_chopper_1_setpos(); /* type MultiDiskChopper */ + _bp1_position_setpos(); /* type Arm */ + _bp1_chopper_setpos(); /* type DiskChopper */ + _g2b1_setpos(); /* type Guide_four_side */ + _g2b2_setpos(); /* type Guide_four_side */ + _g2b3_setpos(); /* type Guide_four_side */ + _g2b4_setpos(); /* type Guide_four_side */ + _fo2_position_setpos(); /* type Arm */ + _fo_chopper_2_setpos(); /* type MultiDiskChopper */ + _bp2_position_setpos(); /* type Arm */ + _bp_chopper2_setpos(); /* type DiskChopper */ + _g2c1_setpos(); /* type Guide_four_side */ + _t0_start_position_setpos(); /* type Arm */ + _t0_chopper_alpha_setpos(); /* type DiskChopper */ + _t0_end_position_setpos(); /* type Arm */ + _t0_chopper_beta_setpos(); /* type DiskChopper */ + _g3a1_setpos(); /* type Guide_four_side */ + _g3a2_setpos(); /* type Guide_four_side */ + _fo3_position_setpos(); /* type Arm */ + _fo_chopper_3_setpos(); /* type MultiDiskChopper */ + _g3b1_setpos(); /* type Guide_four_side */ + _g4a1_setpos(); /* type Guide_four_side */ + _monitor_2_position_setpos(); /* type Arm */ + _g4a2_setpos(); /* type Guide_four_side */ + _g4a3_setpos(); /* type Guide_four_side */ + _fo4_position_setpos(); /* type Arm */ + _fo_chopper_4_setpos(); /* type MultiDiskChopper */ + _g4b1_setpos(); /* type Guide_four_side */ + _g4b2_setpos(); /* type Guide_four_side */ + _g4b3_setpos(); /* type Guide_four_side */ + _g4b4_setpos(); /* type Guide_four_side */ + _g4b5_setpos(); /* type Guide_four_side */ + _g4b6_setpos(); /* type Guide_four_side */ + _g5a1_setpos(); /* type Guide_four_side */ + _fo5_position_setpos(); /* type Arm */ + _fo_chopper_5_setpos(); /* type MultiDiskChopper */ + _g5b1_setpos(); /* type Guide_four_side */ + _g5b2_setpos(); /* type Guide_four_side */ + _g5b3_setpos(); /* type Guide_four_side */ + _g5b4_setpos(); /* type Guide_four_side */ + _g5b5_setpos(); /* type Guide_four_side */ + _g5b6_setpos(); /* type Guide_four_side */ + _g6a1_setpos(); /* type Guide_four_side */ + _g6a2_setpos(); /* type Guide_four_side */ + _g6a3_setpos(); /* type Guide_four_side */ + _guide_end_setpos(); /* type Arm */ + _monitor_3_position_setpos(); /* type Arm */ + _start_backend_setpos(); /* type Arm */ + _optical_axis_backend_setpos(); /* type Arm */ + _pinhole_2_setpos(); /* type Slit */ + _graph_setpos(); /* type Graphite_Diffuser */ + _sample_monitor_arm_setpos(); /* type Arm */ + _sample_PSD_setpos(); /* type Monitor_nD */ + _profile_x_setpos(); /* type Monitor_nD */ + _profile_y_setpos(); /* type Monitor_nD */ + _wavelength_setpos(); /* type Monitor_nD */ + _tof_setpos(); /* type Monitor_nD */ + _wavelength_tof_setpos(); /* type Monitor_nD */ + _sample_position_setpos(); /* type Arm */ + + /* call iteratively all components INITIALISE */ + class_Progress_bar_init(&_Origin_var); + + + class_ESS_butterfly_init(&_Source_var); + + + class_bi_spec_ellipse_init(&_bi_var); + + + class_Guide_four_side_init(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_init(&_g1a2_var); + + class_Guide_four_side_init(&_g1a3_var); + + class_Guide_four_side_init(&_g1b1_var); + + class_Guide_four_side_init(&_g1c1_var); + + + + class_MultiDiskChopper_init(&_wfmc_1_var); + + class_Slit_init(&_pinhole_1_var); + + + class_MultiDiskChopper_init(&_wfmc_2_var); + + class_Guide_four_side_init(&_g2a1_var); + + + class_Guide_four_side_init(&_g2a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_1_var); + + + class_DiskChopper_init(&_bp1_chopper_var); + + class_Guide_four_side_init(&_g2b1_var); + + class_Guide_four_side_init(&_g2b2_var); + + class_Guide_four_side_init(&_g2b3_var); + + class_Guide_four_side_init(&_g2b4_var); + + + class_MultiDiskChopper_init(&_fo_chopper_2_var); + + + class_DiskChopper_init(&_bp_chopper2_var); + + class_Guide_four_side_init(&_g2c1_var); + + + class_DiskChopper_init(&_t0_chopper_alpha_var); + + + class_DiskChopper_init(&_t0_chopper_beta_var); + + class_Guide_four_side_init(&_g3a1_var); + + class_Guide_four_side_init(&_g3a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_3_var); + + class_Guide_four_side_init(&_g3b1_var); + + class_Guide_four_side_init(&_g4a1_var); + + + class_Guide_four_side_init(&_g4a2_var); + + class_Guide_four_side_init(&_g4a3_var); + + + class_MultiDiskChopper_init(&_fo_chopper_4_var); + + class_Guide_four_side_init(&_g4b1_var); + + class_Guide_four_side_init(&_g4b2_var); + + class_Guide_four_side_init(&_g4b3_var); + + class_Guide_four_side_init(&_g4b4_var); + + class_Guide_four_side_init(&_g4b5_var); + + class_Guide_four_side_init(&_g4b6_var); + + class_Guide_four_side_init(&_g5a1_var); + + + class_MultiDiskChopper_init(&_fo_chopper_5_var); + + class_Guide_four_side_init(&_g5b1_var); + + class_Guide_four_side_init(&_g5b2_var); + + class_Guide_four_side_init(&_g5b3_var); + + class_Guide_four_side_init(&_g5b4_var); + + class_Guide_four_side_init(&_g5b5_var); + + class_Guide_four_side_init(&_g5b6_var); + + class_Guide_four_side_init(&_g6a1_var); + + class_Guide_four_side_init(&_g6a2_var); + + class_Guide_four_side_init(&_g6a3_var); + + + + + + class_Slit_init(&_pinhole_2_var); + + + + class_Monitor_nD_init(&_sample_PSD_var); + + class_Monitor_nD_init(&_profile_x_var); + + class_Monitor_nD_init(&_profile_y_var); + + class_Monitor_nD_init(&_wavelength_var); + + class_Monitor_nD_init(&_tof_var); + + class_Monitor_nD_init(&_wavelength_tof_var); + + + if (mcdotrace) display(); + DEBUG_INSTR_END(); + +#ifdef OPENACC +#include +#pragma acc update device(_Origin_var) +#pragma acc update device(_optical_axis_var) +#pragma acc update device(_Source_var) +#pragma acc update device(_Start_of_bi_var) +#pragma acc update device(_bi_var) +#pragma acc update device(_End_of_bi_var) +#pragma acc update device(_NBOA_drawing_1_end_var) +#pragma acc update device(_g1a2_var) +#pragma acc update device(_g1a3_var) +#pragma acc update device(_g1b1_var) +#pragma acc update device(_g1c1_var) +#pragma acc update device(_wfm_position_var) +#pragma acc update device(_wfm_1_position_var) +#pragma acc update device(_wfmc_1_var) +#pragma acc update device(_pinhole_1_var) +#pragma acc update device(_wfm_2_position_var) +#pragma acc update device(_wfmc_2_var) +#pragma acc update device(_g2a1_var) +#pragma acc update device(_monitor_1_position_var) +#pragma acc update device(_g2a2_var) +#pragma acc update device(_fo1_position_var) +#pragma acc update device(_fo_chopper_1_var) +#pragma acc update device(_bp1_position_var) +#pragma acc update device(_bp1_chopper_var) +#pragma acc update device(_g2b1_var) +#pragma acc update device(_g2b2_var) +#pragma acc update device(_g2b3_var) +#pragma acc update device(_g2b4_var) +#pragma acc update device(_fo2_position_var) +#pragma acc update device(_fo_chopper_2_var) +#pragma acc update device(_bp2_position_var) +#pragma acc update device(_bp_chopper2_var) +#pragma acc update device(_g2c1_var) +#pragma acc update device(_t0_start_position_var) +#pragma acc update device(_t0_chopper_alpha_var) +#pragma acc update device(_t0_end_position_var) +#pragma acc update device(_t0_chopper_beta_var) +#pragma acc update device(_g3a1_var) +#pragma acc update device(_g3a2_var) +#pragma acc update device(_fo3_position_var) +#pragma acc update device(_fo_chopper_3_var) +#pragma acc update device(_g3b1_var) +#pragma acc update device(_g4a1_var) +#pragma acc update device(_monitor_2_position_var) +#pragma acc update device(_g4a2_var) +#pragma acc update device(_g4a3_var) +#pragma acc update device(_fo4_position_var) +#pragma acc update device(_fo_chopper_4_var) +#pragma acc update device(_g4b1_var) +#pragma acc update device(_g4b2_var) +#pragma acc update device(_g4b3_var) +#pragma acc update device(_g4b4_var) +#pragma acc update device(_g4b5_var) +#pragma acc update device(_g4b6_var) +#pragma acc update device(_g5a1_var) +#pragma acc update device(_fo5_position_var) +#pragma acc update device(_fo_chopper_5_var) +#pragma acc update device(_g5b1_var) +#pragma acc update device(_g5b2_var) +#pragma acc update device(_g5b3_var) +#pragma acc update device(_g5b4_var) +#pragma acc update device(_g5b5_var) +#pragma acc update device(_g5b6_var) +#pragma acc update device(_g6a1_var) +#pragma acc update device(_g6a2_var) +#pragma acc update device(_g6a3_var) +#pragma acc update device(_guide_end_var) +#pragma acc update device(_monitor_3_position_var) +#pragma acc update device(_start_backend_var) +#pragma acc update device(_optical_axis_backend_var) +#pragma acc update device(_pinhole_2_var) +#pragma acc update device(_graph_var) +#pragma acc update device(_sample_monitor_arm_var) +#pragma acc update device(_sample_PSD_var) +#pragma acc update device(_profile_x_var) +#pragma acc update device(_profile_y_var) +#pragma acc update device(_wavelength_var) +#pragma acc update device(_tof_var) +#pragma acc update device(_wavelength_tof_var) +#pragma acc update device(_sample_position_var) +#pragma acc update device(_instrument_var) +#endif + + return(0); +} /* init */ + +/******************************************************************************* +* components TRACE +*******************************************************************************/ + +#define x (_particle->x) +#define y (_particle->y) +#define z (_particle->z) +#define vx (_particle->vx) +#define vy (_particle->vy) +#define vz (_particle->vz) +#define t (_particle->t) +#define sx (_particle->sx) +#define sy (_particle->sy) +#define sz (_particle->sz) +#define p (_particle->p) +#define mcgravitation (_particle->mcgravitation) +#define mcMagnet (_particle->mcMagnet) +#define allow_backprop (_particle->allow_backprop) +#define _mctmp_a (_particle->_mctmp_a) +#define _mctmp_b (_particle->_mctmp_b) +#define _mctmp_c (_particle->_mctmp_c) +/* if on GPU, globally nullify sprintf,fprintf,printfs */ +/* (Similar defines are available in each comp trace but */ +/* those are not enough to handle external libs etc. ) */ +#ifdef OPENACC +#define fprintf(stderr,...) printf(__VA_ARGS__) +#define sprintf(string,...) printf(__VA_ARGS__) +#define exit(...) noprintf() +#define strcmp(a,b) str_comp(a,b) +#define strlen(a) str_len(a) +#endif +#define SCATTERED (_particle->_scattered) +#define RESTORE (_particle->_restore) +#define RESTORE_NEUTRON(_index, ...) _particle->_restore = _index; +#define ABSORB0 do { DEBUG_STATE(); DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; return; } while(0) +#define ABSORBED (_particle->_absorbed) +#define mcget_run_num() _particle->_uid +#define ABSORB ABSORB0 +#pragma acc routine +void class_Progress_bar_trace(_class_Progress_bar *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_trace] component Origin=Progress_bar() TRACE [Progress_bar:0]"); + + #ifndef OPENACC + double ncount; + ncount = mcget_run_num (); + if (!StartTime) { + time (&StartTime); /* compute starting time */ + IntermediateCnts = 1e3; + } + time_t NowTime; + time (&NowTime); + /* compute initial estimate of computation duration */ + if (!EndTime && ncount >= IntermediateCnts) { + CurrentTime = NowTime; + if (difftime (NowTime, StartTime) > 10 && ncount) { /* wait 10 sec before writing ETA */ + EndTime = StartTime + (time_t)(difftime (NowTime, StartTime) * (double)mcget_ncount () / ncount); + IntermediateCnts = 0; + MPI_MASTER (fprintf (stdout, "\nTrace ETA "); fprintf (stdout, "%s", infostring); + if (difftime (EndTime, StartTime) < 60.0) fprintf (stdout, "%g [s] ", difftime (EndTime, StartTime)); + else if (difftime (EndTime, StartTime) > 3600.0) fprintf (stdout, "%g [h] ", difftime (EndTime, StartTime) / 3600.0); + else fprintf (stdout, "%g [min] ", difftime (EndTime, StartTime) / 60.0); fprintf (stdout, "\n");); + } else + IntermediateCnts += 1e3; + fflush (stdout); + } + + /* display percentage when percent or minutes have reached step */ + if (EndTime && mcget_ncount () && ((minutes && difftime (NowTime, CurrentTime) > minutes * 60) || (percent && !minutes && ncount >= IntermediateCnts))) { + MPI_MASTER (fprintf (stdout, "%llu %%\n", (unsigned long long)(ncount * 100.0 / mcget_ncount ())); fflush (stdout);); + CurrentTime = NowTime; + + IntermediateCnts = ncount + percent * mcget_ncount () / 100; + /* check that next intermediate ncount check is a multiple of the desired percentage */ + IntermediateCnts = floor (IntermediateCnts * 100 / percent / mcget_ncount ()) * percent * mcget_ncount () / 100; + /* raise flag to indicate that we did something */ + SCATTER; + if (flag_save) + save (NULL); + } + #endif +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return; +} /* class_Progress_bar_trace */ + +#pragma acc routine +void class_ESS_butterfly_trace(_class_ESS_butterfly *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_trace] component Source=ESS_butterfly() TRACE [ESS_butterfly:0]"); + + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + /* Are we using time focusing? */ + if (tfocus_width>0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return; +} /* class_ESS_butterfly_trace */ + +#pragma acc routine +void class_bi_spec_ellipse_trace(_class_bi_spec_ellipse *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_trace] component bi=bi_spec_ellipse() TRACE [bi_spec_ellipse:0]"); + + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return; +} /* class_bi_spec_ellipse_trace */ + +#pragma acc routine +void class_Guide_four_side_trace(_class_Guide_four_side *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_trace] component NBOA_drawing_1_end=Guide_four_side() TRACE [Guide_four_side:0]"); + + + int i; + + PROP_Z0; /* Propagate neutron to guide entrance. */ + /* time variables (INNER walls)*/ + double t1; + double t2w1r; + double t2w1l; + double t2h1u; + double t2h1d; + /* time variables (OUTER walls)*/ + double t2w1rwt; + double t2w1lwt; + double t2h1uwt; + double t2h1dwt; + + /* zcomponent of the intersection point of the neutron trajectory and the ellipse (INNER walls)*/ + double m; + double n; + /* component and length of the surfaces normal vector at the intersection point */ + double nz; + double nx; + double ny; + double n2; + /* prefactor to calculate the velocity vector after the interaction */ + double pf; + /* velocity vector components before the interaction*/ + double vxin; + double vyin; + double vzin; + /* q-vector for the interaction */ + double q; + /* limit variables to determine the interaction position given by the time relative to the guide walls*/ + double xlimitr; + double xlimitrwt; + double xlimitl; + double xlimitlwt; + double ylimitd; + double ylimitdwt; + double ylimitu; + double ylimituwt; + /* interaction position of the neutron given by the interaction time; crosscheck with limit variables*/ + double xtest; + double ytest; + + if (x <= -w1r && x >= -w1rwt && y <= mru1 * x + nru1 && y >= mrd1 * x + nrd1 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT entrance wall and the wall is not transparent*/ + ABSORB; + if (x >= w1l && x <= w1lwt && y <= mlu1 * x + nlu1 && y >= mld1 * x + nld1 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT entrance wall and the wall is not transparent*/ + ABSORB; + if (y <= -h1d && y >= -h1dwt && x <= (y - nld1) / mld1 && x >= (y - nrd1) / mrd1 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM entrance wall and the wall is not transparent*/ + ABSORB; + if (y >= h1u && y <= h1uwt && x <= (y - nlu1) / mlu1 && x >= (y - nru1) / mru1 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP entrance wall and the wall is not transparent*/ + ABSORB; + + do { /* start the propagation loop inside the guide */ + t1 = (l - z) / vz; /* needed time to pass the guide (or rest of the guide without any interaction)*/ + + if (loutwr == 0 && linwr == 0) { + TIME_LINEAR (t1, w1r, w2r, l, x, z, vx, vz, w1rwt, &t2w1r, &t2w1rwt); + } + + if (loutwr != 0 && linwr != 0) { + TIME_ELLIPSE (vx, vz, x, z, a2wr, b2wr, z0wr, t1, a2wrwt, b2wrwt, &t2w1r, &t2w1rwt); + } + + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) { + TIME_PARABEL (vx, vz, x, z, pawr, pbwr, t1, pawrwt, pbwrwt, &t2w1r, &t2w1rwt); + } + + if (loutwl == 0 && linwl == 0) { + TIME_LINEAR_1 (t1, w1l, w2l, l, x, z, vx, vz, w1lwt, &t2w1l, &t2w1lwt); + } + + if (loutwl != 0 && linwl != 0) { + TIME_ELLIPSE_1 (vx, vz, x, z, a2wl, b2wl, z0wl, t1, a2wlwt, b2wlwt, &t2w1l, &t2w1lwt); + } + + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) { + TIME_PARABEL_1 (vx, vz, x, z, pawl, pbwl, t1, pawlwt, pbwlwt, &t2w1l, &t2w1lwt); + } + + if (louthu == 0 && linhu == 0) { + TIME_LINEAR_1 (t1, h1u, h2u, l, y, z, vy, vz, h1uwt, &t2h1u, &t2h1uwt); + } + + if (louthu != 0 && linhu != 0) { + TIME_ELLIPSE_1 (vy, vz, y, z, a2hu, b2hu, z0hu, t1, a2huwt, b2huwt, &t2h1u, &t2h1uwt); + } + + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) { + TIME_PARABEL_1 (vy, vz, y, z, pahu, pbhu, t1, pahuwt, pbhuwt, &t2h1u, &t2h1uwt); + } + + if (louthd == 0 && linhd == 0) { + TIME_LINEAR (t1, h1d, h2d, l, y, z, vy, vz, h1dwt, &t2h1d, &t2h1dwt); + } + + if (louthd != 0 && linhd != 0) { + TIME_ELLIPSE (vy, vz, y, z, a2hd, b2hd, z0hd, t1, a2hdwt, b2hdwt, &t2h1d, &t2h1dwt); + } + + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) { + TIME_PARABEL (vy, vz, y, z, pahd, pbhd, t1, pahdwt, pbhdwt, &t2h1d, &t2h1dwt); + } + + /* TEST OF THE INNER INTERSECTION - TIMES */ + /* possible interactions outside the guide have to be eliminated*/ + + if (t2w1r < t1 + 2.0) { /* test of RIGHT INNER wall interaction time*/ + TEST_UP_DOWN (t2w1r, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1r = t1 + 2.0; + } + } + + if (t2w1l < t1 + 2.0) { /* test of LEFT INNER wall interaction time - analog to right wall*/ + TEST_UP_DOWN (t2w1l, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1l = t1 + 2.0; + } + } + + if (t2h1u < t1 + 2.0) { /* test of TOP INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1u, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1u = t1 + 2.0; + } + } + + if (t2h1d < t1 + 2.0) { /* test of BOTTOM INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1d, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1d = t1 + 2.0; + } + } + + /* TEST OF THE OUTER INTERSECTION - TIMES */ + + if (t2w1rwt < t1 + 2.0) { /* test of RIGHT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1rwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1rwt = t1 + 2.0; + } + } + + if (t2w1lwt < t1 + 2.0) { /* test of LEFT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1lwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1lwt = t1 + 2.0; + } + } + + if (t2h1uwt < t1 + 2.0) { /* test of TOP OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1uwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1uwt = t1 + 2.0; + } + } + + if (t2h1dwt < t1 + 2.0) { /* test of BOTTOM OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1dwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1dwt = t1 + 2.0; + } + } + + /* which wall is hit first? which geometry? */ + + if (t1 < t2w1r && t1 < t2w1l && t1 < t2h1u && t1 < t2h1d && t1 < t2w1rwt && t1 < t2w1lwt && t1 < t2h1uwt && t1 < t2h1dwt) { + i = 1; + } + + /* neutron interacts with the INNER elliptic right wall and this wall is NOT transparent*/ + + if (t2w1r > 0 && t2w1r < t1 && t2w1r < t2w1l && t2w1r < t2h1u && t2w1r < t2h1d && t2w1r < t2w1rwt && t2w1r < t2w1lwt && t2w1r < t2h1uwt && t2w1r < t2h1dwt) { + if (mxr == 0) + i = 18; + else { + if (mxr == -1) + i = 14; + else { + if ((linwr != 0) && (loutwr != 0)) + i = 2; /* the neutron will be reflected*/ + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 3; + else { + if (loutwr == 0 && linwr == 0) + i = 4; + } + } + } + } + } + + /* neutron interacts with the elliptic left INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1l > 0 && t2w1l < t1 && t2w1l < t2w1r && t2w1l < t2h1u && t2w1l < t2h1d && t2w1l < t2w1rwt && t2w1l < t2w1lwt && t2w1l < t2h1uwt && t2w1l < t2h1dwt) { + if (mxl == 0) + i = 19; + else { + if (mxl == -1) + i = 15; + else { + if ((linwl != 0) && (loutwl != 0)) + i = 5; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 6; + else { + if (loutwl == 0 && linwl == 0) + i = 7; + } + } + } + } + } + + /* neutron interacts with the elliptic top INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1u > 0 && t2h1u < t1 && t2h1u < t2w1r && t2h1u < t2w1l && t2h1u < t2h1d && t2h1u < t2w1rwt && t2h1u < t2w1lwt && t2h1u < t2h1uwt && t2h1u < t2h1dwt) { + if (myu == 0) + i = 20; + else { + if (myu == -1) + i = 16; + else { + if (louthu != 0 && linhu != 0) + i = 8; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 9; + else { + if (louthu == 0 && linhu == 0) + i = 10; + } + } + } + } + } + + /* neutron interacts with the elliptic down INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1d > 0 && t2h1d < t1 && t2h1d < t2w1r && t2h1d < t2w1l && t2h1d < t2h1u && t2h1d < t2w1rwt && t2h1d < t2w1lwt && t2h1d < t2h1uwt && t2h1d < t2h1dwt) { + if (myd == 0) + i = 21; + else { + if (myd == -1) + i = 17; + else { + if (louthd != 0 && linhd != 0) + i = 11; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 12; + else { + if (louthd == 0 && linhd == 0) + i = 13; + } + } + } + } + } + + /* EVERTHING AGAIN FOR THE OUTER WALLS */ + + /* neutron interacts with the elliptic right OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1rwt > 0 && t2w1rwt < t1 && t2w1rwt < t2w1r && t2w1rwt < t2w1l && t2w1rwt < t2h1u && t2w1rwt < t2h1d && t2w1rwt < t2w1lwt && t2w1rwt < t2h1uwt + && t2w1rwt < t2h1dwt) { + if (mxrOW == 0) + i = 34; + else { + if (mxrOW == -1) + i = 38; + else { + if (linwr != 0 && loutwr != 0) + i = 22; + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 23; + else { + if (loutwr == 0 && linwr == 0) + i = 24; + } + } + } + } + } + + /* neutron interacts with the elliptic left OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1lwt > 0 && t2w1lwt < t1 && t2w1lwt < t2w1r && t2w1lwt < t2w1l && t2w1lwt < t2h1u && t2w1lwt < t2h1d && t2w1lwt < t2w1rwt && t2w1lwt < t2h1uwt + && t2w1lwt < t2h1dwt) { + if (mxlOW == 0) + i = 35; + else { + if (mxlOW == -1) + i = 39; + else { + if (linwl != 0 && loutwl != 0) + i = 25; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 26; + else { + if (loutwl == 0 && linwl == 0) + i = 27; + } + } + } + } + } + + /* neutron interacts with the elliptic top OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1uwt > 0 && t2h1uwt < t1 && t2h1uwt < t2w1r && t2h1uwt < t2w1l && t2h1uwt < t2h1u && t2h1uwt < t2h1d && t2h1uwt < t2w1rwt && t2h1uwt < t2w1lwt + && t2h1uwt < t2h1dwt) { + if (myuOW == 0) + i = 36; + else { + if (myuOW == -1) + i = 40; + else { + if (louthu != 0 && linhu != 0) + i = 28; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 29; + else { + if (louthu == 0 && linhu == 0) + i = 30; + } + } + } + } + } + + /* neutron interacts with the elliptic down OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1dwt > 0 && t2h1dwt < t1 && t2h1dwt < t2w1r && t2h1dwt < t2w1l && t2h1dwt < t2h1u && t2h1dwt < t2h1d && t2h1dwt < t2w1rwt && t2h1dwt < t2w1lwt + && t2h1dwt < t2h1uwt) { + if (mydOW == 0) + i = 37; + else { + if (mydOW == -1) + i = 41; + else { + if (louthd != 0 && linhd != 0) + i = 31; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 32; + else { + if (louthd == 0 && linhd == 0) + i = 33; + } + } + } + } + } + + switch (i) { /* the principal for the calculation is in every case the same: 1.) one needs the surface normal vector at the intersection point. 2.) + calculation of the velocity vector after the interaction by */ + /* vector subrtation (the basic idea and explanations can be found in the 'Mcstas component manual' in the section 'straight guide') */ + + case 1: /* no interaction, propagation to the end of the guide */ + PROP_DT (t1); + break; + + case 2: + PROP_DT (t2w1r); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = -x; /* surface normal vector components at the intersection point */ + nz = -x * x / ((a2wr / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 3: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawr; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 4: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = w2r - w1r; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 5: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -x * x / ((a2wl / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + SCATTER; + break; + + case 6: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawl; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 7: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = w2l - w1l; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 8: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hu / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 9: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahu; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 10: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = h2u - h1u; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 11: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hd / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 12: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahd; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 13: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = h2d - h1d; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 14: /* transperent walls - no interaction */ + PROP_DT (t2w1r); + break; + + case 15: + PROP_DT (t2w1l); + break; + + case 16: + PROP_DT (t2h1u); + break; + + case 17: + PROP_DT (t2h1d); + break; + + case 18: /* absorbing walls - neutrons are absorbed at interaction point*/ + PROP_DT (t2w1r); + ABSORB; + break; + + case 19: + PROP_DT (t2w1l); + ABSORB; + break; + + case 20: + PROP_DT (t2h1u); + ABSORB; + break; + + case 21: + PROP_DT (t2h1d); + ABSORB; + break; + + /* OUTER WALLS - analog to inner walls, but sign of surface normal vector is changed */ + + case 22: + PROP_DT (t2w1rwt); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = x; /* surface normal vector components at the intersection point */ + nz = x * x / ((a2wrwt / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 23: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawrwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 24: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = -(w2r - w1r); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 25: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = x * x / ((a2wlwt / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 26: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawlwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 27: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = -(w2l - w1l); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 28: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2huwt / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 29: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahuwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 30: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = -(h2u - h1u); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 31: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2hdwt / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 32: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahdwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 33: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = -(h2d - h1d); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 34: + PROP_DT (t2w1rwt); + ABSORB; + break; + + case 35: + PROP_DT (t2w1lwt); + ABSORB; + break; + + case 36: + PROP_DT (t2h1uwt); + ABSORB; + break; + + case 37: + PROP_DT (t2h1dwt); + ABSORB; + break; + + case 38: + PROP_DT (t2w1rwt); + break; + + case 39: + PROP_DT (t2w1lwt); + break; + + case 40: + PROP_DT (t2h1uwt); + break; + + case 41: + PROP_DT (t2h1dwt); + break; + } + + if (((i == 2) || (i == 3) || (i == 4))) { /* calculating the the probability that the neutron is reflected at the RIGHT INNER wall*/ + if (RIreflect && strlen (RIreflect)) { + p = Table_Value (riTable, q, 1); + } else { + if (mxr > 0 && q > Qcxr) { + double arg = (q - mxr * Qcxr) / Wxr; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxr * (q - Qcxr)); + } else + ABSORB; + } + } + } + + if (((i == 22) || (i == 23) || (i == 24))) { /* calculating the the probability that the neutron is reflected at the RIGHT OUTER wall*/ + if (ROreflect && strlen (ROreflect)) { + p = Table_Value (roTable, q, 1); + } else { + if (mxrOW > 0 && q > QcxrOW) { + double arg = (q - mxrOW * QcxrOW) / WxrOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxrOW * (q - QcxrOW)); + } else + ABSORB; + } + } + } + + if (((i == 5) || (i == 6) || (i == 7))) { /* calculating the the probability that the neutron is reflected at the LEFT INNER wall*/ + if (LIreflect && strlen (LIreflect)) { + p = Table_Value (liTable, q, 1); + } else { + if (mxl > 0 && q > Qcxl) { + double arg = (q - mxl * Qcxl) / Wxl; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxl * (q - Qcxl)); + } else + ABSORB; + } + } + } + + if (((i == 25) || (i == 26) || (i == 27))) { /* calculating the the probability that the neutron is reflected at the LEFT OUTER wall*/ + if (LOreflect && strlen (LOreflect)) { + p = Table_Value (loTable, q, 1); + } else { + if (mxlOW > 0 && q > QcxlOW) { + double arg = (q - mxlOW * QcxlOW) / WxlOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxlOW * (q - QcxlOW)); + } else + ABSORB; + } + } + } + + if (((i == 8) || (i == 9) || (i == 10))) { /* calculating the the probability that the neutron is reflected at the TOP INNER wall*/ + if (UIreflect && strlen (UIreflect)) { + p = Table_Value (uiTable, q, 1); + } else { + if (myu > 0 && q > Qcyu) { + double arg = (q - myu * Qcyu) / Wyu; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayu * (q - Qcyu)); + } else + ABSORB; + } + } + } + + if (((i == 28) || (i == 29) || (i == 30))) { /* calculating the the probability that the neutron is reflected at the TOP OUTER wall*/ + if (UOreflect && strlen (UOreflect)) { + p = Table_Value (uoTable, q, 1); + } else { + if (myuOW > 0 && q > QcyuOW) { + double arg = (q - myuOW * QcyuOW) / WyuOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayuOW * (q - QcyuOW)); + } else + ABSORB; + } + } + } + + if (((i == 11) || (i == 12) || (i == 13))) { /* calculating the the probability that the neutron is reflected at the BOTTOM INNER wall*/ + if (DIreflect && strlen (DIreflect)) { + p = Table_Value (diTable, q, 1); + } else { + if (myd > 0 && q > Qcyd) { + double arg = (q - myd * Qcyd) / Wyd; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayd * (q - Qcyd)); + } else + ABSORB; + } + } + } + + if (((i == 31) || (i == 32) || (i == 33))) { /* calculating the the probability that the neutron is reflected at the BOTTOM OUTER wall*/ + if (DOreflect && strlen (DOreflect)) { + p = Table_Value (doTable, q, 1); + } else { + if (mydOW > 0 && q > QcydOW) { + double arg = (q - mydOW * QcydOW) / WydOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaydOW * (q - QcydOW)); + } else + ABSORB; + } + } + } + + p *= R0; + SCATTER; + + } while (z < l); /* repeat the interaction loop untill the neutron pass the end of guide */ + + if (x <= -w2r && x >= -w2rwt && y <= mru2 * x + nru2 && y >= mrd2 * x + nrd2 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT exit wall and the wall is not transparent*/ + ABSORB; + if (x >= w2l && x <= w2lwt && y <= mlu2 * x + nlu2 && y >= mld2 * x + nld2 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT exit wall and the wall is not transparent*/ + ABSORB; + if (y <= -h2d && y >= -h2dwt && x <= (y - nld2) / mld2 && x >= (y - nrd2) / mrd2 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM exit wall and the wall is not transparent*/ + ABSORB; + if (y >= h2u && y <= h2uwt && x <= (y - nlu2) / mlu2 && x >= (y - nru2) / mru2 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP exit wall and the wall is not transparent*/ + ABSORB; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return; +} /* class_Guide_four_side_trace */ + +#pragma acc routine +void class_MultiDiskChopper_trace(_class_MultiDiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_trace] component wfmc_1=MultiDiskChopper() TRACE [MultiDiskChopper:0]"); + + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + while (islit < nslits && !SCATTERED) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + SCATTER; + + islit++; + } + if (!SCATTERED) + ABSORB; + } + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return; +} /* class_MultiDiskChopper_trace */ + +#pragma acc routine +void class_Slit_trace(_class_Slit *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_trace] component pinhole_1=Slit() TRACE [Slit:0]"); + + PROP_Z0; + if (!isradial ? (x < xmin || x > xmax || y < ymin || y > ymax) : (x * x + y * y > radius * radius)) + ABSORB; + else + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return; +} /* class_Slit_trace */ + +#pragma acc routine +void class_DiskChopper_trace(_class_DiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_trace] component bp1_chopper=DiskChopper() TRACE [DiskChopper:0]"); + + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + toff = fabs (t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + ABSORB; + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return; +} /* class_DiskChopper_trace */ + +#pragma acc routine +void class_Graphite_Diffuser_trace(_class_Graphite_Diffuser *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_trace] component graph=Graphite_Diffuser() TRACE [Graphite_Diffuser:0]"); + + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || y_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return; +} /* class_Graphite_Diffuser_trace */ + +#pragma acc routine +void class_Monitor_nD_trace(_class_Monitor_nD *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_trace] component sample_PSD=Monitor_nD() TRACE [Monitor_nD:0]"); + + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return; +} /* class_Monitor_nD_trace */ + +#define t_offset (_particle->t_offset) +#define p_trains (_particle->p_trains) +#define alive_trains (_particle->alive_trains) +/* ***************************************************************************** +* instrument 'ODIN_baseline' TRACE +***************************************************************************** */ + +#ifndef FUNNEL +#pragma acc routine +int raytrace(_class_particle* _particle) { /* single event propagation, called by mccode_main for ODIN_baseline:TRACE */ + + /* init variables and counters for TRACE */ + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++;} while(0) + #define ABSORB ABSORB0 + DEBUG_ENTER(); + DEBUG_STATE(); + _particle->flag_nocoordschange=0; /* Init */ + _class_particle _particle_save=*_particle; + /* the main iteration loop for one incoming event */ + while (!ABSORBED) { /* iterate event until absorbed */ + /* send particle event to component instance, one after the other */ + /* begin component Origin=Progress_bar() [1] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Origin_var._rotation_is_identity) { + if(!_Origin_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 1) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Origin_var._name); + DEBUG_STATE(); + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Origin [1] */ + /* begin component optical_axis=Arm() [2] */ + if (!ABSORBED && _particle->_index == 2) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis [2] */ + /* begin component Source=ESS_butterfly() [3] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Source_var._rotation_is_identity) { + if(!_Source_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 3) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Source_var._name); + DEBUG_STATE(); + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Source [3] */ + /* begin component Start_of_bi=Arm() [4] */ + if (!ABSORBED && _particle->_index == 4) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component Start_of_bi [4] */ + /* begin component bi=bi_spec_ellipse() [5] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bi_var._rotation_is_identity) { + if(!_bi_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 5) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bi_var._name); + DEBUG_STATE(); + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bi [5] */ + /* begin component End_of_bi=Arm() [6] */ + if (!ABSORBED && _particle->_index == 6) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component End_of_bi [6] */ + /* begin component NBOA_drawing_1_end=Guide_four_side() [7] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_NBOA_drawing_1_end_var._rotation_is_identity) { + if(!_NBOA_drawing_1_end_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 7) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_NBOA_drawing_1_end_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component NBOA_drawing_1_end [7] */ + /* begin component g1a2=Guide_four_side() [8] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a2_var._rotation_is_identity) { + if(!_g1a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 8) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a2 [8] */ + /* begin component g1a3=Guide_four_side() [9] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a3_var._rotation_is_identity) { + if(!_g1a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 9) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a3 [9] */ + /* begin component g1b1=Guide_four_side() [10] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1b1_var._rotation_is_identity) { + if(!_g1b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 10) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1b1 [10] */ + /* begin component g1c1=Guide_four_side() [11] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1c1_var._rotation_is_identity) { + if(!_g1c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 11) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1c1 [11] */ + /* begin component wfm_position=Arm() [12] */ + if (!ABSORBED && _particle->_index == 12) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_position [12] */ + /* begin component wfm_1_position=Arm() [13] */ + if (!ABSORBED && _particle->_index == 13) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_1_position [13] */ + /* begin component wfmc_1=MultiDiskChopper() [14] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_1_var._rotation_is_identity) { + if(!_wfmc_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 14) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_1 [14] */ + /* begin component pinhole_1=Slit() [15] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_1_var._rotation_is_identity) { + if(!_pinhole_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 15) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_1_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_1 [15] */ + /* begin component wfm_2_position=Arm() [16] */ + if (!ABSORBED && _particle->_index == 16) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_2_position [16] */ + /* begin component wfmc_2=MultiDiskChopper() [17] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_2_var._rotation_is_identity) { + if(!_wfmc_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 17) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_2 [17] */ + /* begin component g2a1=Guide_four_side() [18] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a1_var._rotation_is_identity) { + if(!_g2a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 18) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a1 [18] */ + /* begin component monitor_1_position=Arm() [19] */ + if (!ABSORBED && _particle->_index == 19) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_1_position [19] */ + /* begin component g2a2=Guide_four_side() [20] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a2_var._rotation_is_identity) { + if(!_g2a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 20) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a2 [20] */ + /* begin component fo1_position=Arm() [21] */ + if (!ABSORBED && _particle->_index == 21) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo1_position [21] */ + /* begin component fo_chopper_1=MultiDiskChopper() [22] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_1_var._rotation_is_identity) { + if(!_fo_chopper_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 22) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_1 [22] */ + /* begin component bp1_position=Arm() [23] */ + if (!ABSORBED && _particle->_index == 23) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp1_position [23] */ + /* begin component bp1_chopper=DiskChopper() [24] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp1_chopper_var._rotation_is_identity) { + if(!_bp1_chopper_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 24) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp1_chopper_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp1_chopper [24] */ + /* begin component g2b1=Guide_four_side() [25] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b1_var._rotation_is_identity) { + if(!_g2b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 25) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b1 [25] */ + /* begin component g2b2=Guide_four_side() [26] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b2_var._rotation_is_identity) { + if(!_g2b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 26) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b2 [26] */ + /* begin component g2b3=Guide_four_side() [27] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b3_var._rotation_is_identity) { + if(!_g2b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 27) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b3 [27] */ + /* begin component g2b4=Guide_four_side() [28] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b4_var._rotation_is_identity) { + if(!_g2b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 28) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b4 [28] */ + /* begin component fo2_position=Arm() [29] */ + if (!ABSORBED && _particle->_index == 29) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo2_position [29] */ + /* begin component fo_chopper_2=MultiDiskChopper() [30] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_2_var._rotation_is_identity) { + if(!_fo_chopper_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 30) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_2 [30] */ + /* begin component bp2_position=Arm() [31] */ + if (!ABSORBED && _particle->_index == 31) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp2_position [31] */ + /* begin component bp_chopper2=DiskChopper() [32] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp_chopper2_var._rotation_is_identity) { + if(!_bp_chopper2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 32) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp_chopper2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp_chopper2 [32] */ + /* begin component g2c1=Guide_four_side() [33] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2c1_var._rotation_is_identity) { + if(!_g2c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 33) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2c1 [33] */ + /* begin component t0_start_position=Arm() [34] */ + if (!ABSORBED && _particle->_index == 34) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_start_position [34] */ + /* begin component t0_chopper_alpha=DiskChopper() [35] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_alpha_var._rotation_is_identity) { + if(!_t0_chopper_alpha_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 35) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_alpha_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_alpha [35] */ + /* begin component t0_end_position=Arm() [36] */ + if (!ABSORBED && _particle->_index == 36) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_end_position [36] */ + /* begin component t0_chopper_beta=DiskChopper() [37] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_beta_var._rotation_is_identity) { + if(!_t0_chopper_beta_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 37) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_beta_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_beta [37] */ + /* begin component g3a1=Guide_four_side() [38] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a1_var._rotation_is_identity) { + if(!_g3a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 38) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a1 [38] */ + /* begin component g3a2=Guide_four_side() [39] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a2_var._rotation_is_identity) { + if(!_g3a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 39) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a2 [39] */ + /* begin component fo3_position=Arm() [40] */ + if (!ABSORBED && _particle->_index == 40) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo3_position [40] */ + /* begin component fo_chopper_3=MultiDiskChopper() [41] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_3_var._rotation_is_identity) { + if(!_fo_chopper_3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 41) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_3_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_3 [41] */ + /* begin component g3b1=Guide_four_side() [42] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3b1_var._rotation_is_identity) { + if(!_g3b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 42) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3b1 [42] */ + /* begin component g4a1=Guide_four_side() [43] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a1_var._rotation_is_identity) { + if(!_g4a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 43) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a1 [43] */ + /* begin component monitor_2_position=Arm() [44] */ + if (!ABSORBED && _particle->_index == 44) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_2_position [44] */ + /* begin component g4a2=Guide_four_side() [45] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a2_var._rotation_is_identity) { + if(!_g4a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 45) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a2 [45] */ + /* begin component g4a3=Guide_four_side() [46] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a3_var._rotation_is_identity) { + if(!_g4a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 46) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a3 [46] */ + /* begin component fo4_position=Arm() [47] */ + if (!ABSORBED && _particle->_index == 47) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo4_position [47] */ + /* begin component fo_chopper_4=MultiDiskChopper() [48] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_4_var._rotation_is_identity) { + if(!_fo_chopper_4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 48) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_4_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_4 [48] */ + /* begin component g4b1=Guide_four_side() [49] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b1_var._rotation_is_identity) { + if(!_g4b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 49) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b1 [49] */ + /* begin component g4b2=Guide_four_side() [50] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b2_var._rotation_is_identity) { + if(!_g4b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 50) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b2 [50] */ + /* begin component g4b3=Guide_four_side() [51] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b3_var._rotation_is_identity) { + if(!_g4b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 51) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b3 [51] */ + /* begin component g4b4=Guide_four_side() [52] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b4_var._rotation_is_identity) { + if(!_g4b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 52) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b4 [52] */ + /* begin component g4b5=Guide_four_side() [53] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b5_var._rotation_is_identity) { + if(!_g4b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 53) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b5 [53] */ + /* begin component g4b6=Guide_four_side() [54] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b6_var._rotation_is_identity) { + if(!_g4b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 54) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b6 [54] */ + /* begin component g5a1=Guide_four_side() [55] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5a1_var._rotation_is_identity) { + if(!_g5a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 55) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5a1 [55] */ + /* begin component fo5_position=Arm() [56] */ + if (!ABSORBED && _particle->_index == 56) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo5_position [56] */ + /* begin component fo_chopper_5=MultiDiskChopper() [57] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_5_var._rotation_is_identity) { + if(!_fo_chopper_5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 57) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_5_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_5 [57] */ + /* begin component g5b1=Guide_four_side() [58] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b1_var._rotation_is_identity) { + if(!_g5b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 58) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b1 [58] */ + /* begin component g5b2=Guide_four_side() [59] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b2_var._rotation_is_identity) { + if(!_g5b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 59) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b2 [59] */ + /* begin component g5b3=Guide_four_side() [60] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b3_var._rotation_is_identity) { + if(!_g5b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 60) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b3 [60] */ + /* begin component g5b4=Guide_four_side() [61] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b4_var._rotation_is_identity) { + if(!_g5b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 61) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b4 [61] */ + /* begin component g5b5=Guide_four_side() [62] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b5_var._rotation_is_identity) { + if(!_g5b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 62) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b5 [62] */ + /* begin component g5b6=Guide_four_side() [63] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b6_var._rotation_is_identity) { + if(!_g5b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 63) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b6 [63] */ + /* begin component g6a1=Guide_four_side() [64] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a1_var._rotation_is_identity) { + if(!_g6a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 64) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a1 [64] */ + /* begin component g6a2=Guide_four_side() [65] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a2_var._rotation_is_identity) { + if(!_g6a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 65) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a2 [65] */ + /* begin component g6a3=Guide_four_side() [66] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a3_var._rotation_is_identity) { + if(!_g6a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 66) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a3 [66] */ + /* begin component guide_end=Arm() [67] */ + if (!ABSORBED && _particle->_index == 67) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component guide_end [67] */ + /* begin component monitor_3_position=Arm() [68] */ + if (!ABSORBED && _particle->_index == 68) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_3_position [68] */ + /* begin component start_backend=Arm() [69] */ + if (!ABSORBED && _particle->_index == 69) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component start_backend [69] */ + /* begin component optical_axis_backend=Arm() [70] */ + if (!ABSORBED && _particle->_index == 70) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis_backend [70] */ + /* begin component pinhole_2=Slit() [71] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_2_var._rotation_is_identity) { + if(!_pinhole_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 71) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_2_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_2 [71] */ + /* begin component graph=Graphite_Diffuser() [72] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_graph_var._rotation_is_identity) { + if(!_graph_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 72) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_graph_var._name); + DEBUG_STATE(); + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component graph [72] */ + /* begin component sample_monitor_arm=Arm() [73] */ + if (!ABSORBED && _particle->_index == 73) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_monitor_arm [73] */ + /* begin component sample_PSD=Monitor_nD() [74] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_sample_PSD_var._rotation_is_identity) { + if(!_sample_PSD_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 74) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_sample_PSD_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component sample_PSD [74] */ + /* begin component profile_x=Monitor_nD() [75] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_x_var._rotation_is_identity) { + if(!_profile_x_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 75) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_x_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_x [75] */ + /* begin component profile_y=Monitor_nD() [76] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_y_var._rotation_is_identity) { + if(!_profile_y_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 76) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_y_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_y [76] */ + /* begin component wavelength=Monitor_nD() [77] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_var._rotation_is_identity) { + if(!_wavelength_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 77) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength [77] */ + /* begin component tof=Monitor_nD() [78] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_tof_var._rotation_is_identity) { + if(!_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 78) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component tof [78] */ + /* begin component wavelength_tof=Monitor_nD() [79] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_tof_var._rotation_is_identity) { + if(!_wavelength_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 79) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength_tof [79] */ + /* begin component sample_position=Arm() [80] */ + if (!ABSORBED && _particle->_index == 80) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_position [80] */ + if (_particle->_index > 80) + ABSORBED++; /* absorbed when passed all components */ + } /* while !ABSORBED */ + + DEBUG_LEAVE() + particle_restore(_particle, &_particle_save); + DEBUG_STATE() + + return(_particle->_index); +} /* raytrace */ + +/* loop to generate events and call raytrace() propagate them */ +void raytrace_all(unsigned long long ncount, unsigned long seed) { + + /* CPU-loop */ + unsigned long long loops; + loops = ceil((double)ncount/gpu_innerloop); + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #ifdef OPENACC + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around GPU kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + #endif + + /* if on GPU, re-nullify printf */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #pragma acc parallel loop num_gangs(numgangs) vector_length(vecsize) + for (unsigned long pidx=0 ; pidx < gpu_innerloop ; pidx++) { + _class_particle particleN = mcgenstate(); // initial particle + _class_particle* _particle = &particleN; + particleN._uid = pidx; + #ifdef USE_MPI + particleN._uid += mpi_node_rank * ncount; + #endif + + srandom(_hash((pidx+1)*(seed+1))); + + raytrace(_particle); + } /* inner for */ + seed = seed+gpu_innerloop; + } /* CPU for */ + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + MPI_MASTER( + printf("*** TRACE end *** \n"); + ); +} /* raytrace_all */ + +#endif //no-FUNNEL + +#ifdef FUNNEL +// Alternative raytrace algorithm which iterates all particles through +// one component at the time, can remove absorbs from the next loop and +// switch between cpu/gpu. +void raytrace_all_funnel(unsigned long long ncount, unsigned long seed) { + + // set up outer (CPU) loop / particle batches + unsigned long long loops; + + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + #ifdef OPENACC + loops = ceil((double)ncount/gpu_innerloop); + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + // create particles struct and pointer arrays (same memory used by all batches) + _class_particle* particles = malloc(gpu_innerloop*sizeof(_class_particle)); + _class_particle* pbuffer = malloc(gpu_innerloop*sizeof(_class_particle)); + long livebatchsize = gpu_innerloop; + + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; } while(0) + #define ABSORB ABSORB0 + // outer loop / particle batches + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + + // init particles + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + // generate particle state, set loop index and seed + particles[pidx] = mcgenstate(); + _class_particle* _particle = particles + pidx; + _particle->_uid = pidx; + #ifdef USE_MPI + _particle->_uid += mpi_node_rank * ncount; + #endif + srandom(_hash((pidx+1)*(seed+1))); // _particle->state usage built into srandom macro + } + + // iterate components + + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + _class_particle* _particle = &particles[pidx]; + _class_particle _particle_save; + + // Origin + if (!ABSORBED && _particle->_index == 1) { +#ifndef MULTICORE + if (_Origin_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // optical_axis + if (!ABSORBED && _particle->_index == 2) { + _particle->_index++; + } + + // Source + if (!ABSORBED && _particle->_index == 3) { +#ifndef MULTICORE + if (_Source_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + _particle_save = *_particle; + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Start_of_bi + if (!ABSORBED && _particle->_index == 4) { + _particle->_index++; + } + + // bi + if (!ABSORBED && _particle->_index == 5) { +#ifndef MULTICORE + if (_bi_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + _particle_save = *_particle; + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // End_of_bi + if (!ABSORBED && _particle->_index == 6) { + _particle->_index++; + } + + // NBOA_drawing_1_end + if (!ABSORBED && _particle->_index == 7) { +#ifndef MULTICORE + if (_NBOA_drawing_1_end_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a2 + if (!ABSORBED && _particle->_index == 8) { +#ifndef MULTICORE + if (_g1a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a3 + if (!ABSORBED && _particle->_index == 9) { +#ifndef MULTICORE + if (_g1a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1b1 + if (!ABSORBED && _particle->_index == 10) { +#ifndef MULTICORE + if (_g1b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1c1 + if (!ABSORBED && _particle->_index == 11) { +#ifndef MULTICORE + if (_g1c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_position + if (!ABSORBED && _particle->_index == 12) { + _particle->_index++; + } + + // wfm_1_position + if (!ABSORBED && _particle->_index == 13) { + _particle->_index++; + } + + // wfmc_1 + if (!ABSORBED && _particle->_index == 14) { +#ifndef MULTICORE + if (_wfmc_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // pinhole_1 + if (!ABSORBED && _particle->_index == 15) { +#ifndef MULTICORE + if (_pinhole_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_2_position + if (!ABSORBED && _particle->_index == 16) { + _particle->_index++; + } + + // wfmc_2 + if (!ABSORBED && _particle->_index == 17) { +#ifndef MULTICORE + if (_wfmc_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2a1 + if (!ABSORBED && _particle->_index == 18) { +#ifndef MULTICORE + if (_g2a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_1_position + if (!ABSORBED && _particle->_index == 19) { + _particle->_index++; + } + + // g2a2 + if (!ABSORBED && _particle->_index == 20) { +#ifndef MULTICORE + if (_g2a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo1_position + if (!ABSORBED && _particle->_index == 21) { + _particle->_index++; + } + + // fo_chopper_1 + if (!ABSORBED && _particle->_index == 22) { +#ifndef MULTICORE + if (_fo_chopper_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp1_position + if (!ABSORBED && _particle->_index == 23) { + _particle->_index++; + } + + // bp1_chopper + if (!ABSORBED && _particle->_index == 24) { +#ifndef MULTICORE + if (_bp1_chopper_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b1 + if (!ABSORBED && _particle->_index == 25) { +#ifndef MULTICORE + if (_g2b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b2 + if (!ABSORBED && _particle->_index == 26) { +#ifndef MULTICORE + if (_g2b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b3 + if (!ABSORBED && _particle->_index == 27) { +#ifndef MULTICORE + if (_g2b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b4 + if (!ABSORBED && _particle->_index == 28) { +#ifndef MULTICORE + if (_g2b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo2_position + if (!ABSORBED && _particle->_index == 29) { + _particle->_index++; + } + + // fo_chopper_2 + if (!ABSORBED && _particle->_index == 30) { +#ifndef MULTICORE + if (_fo_chopper_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp2_position + if (!ABSORBED && _particle->_index == 31) { + _particle->_index++; + } + + // bp_chopper2 + if (!ABSORBED && _particle->_index == 32) { +#ifndef MULTICORE + if (_bp_chopper2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2c1 + if (!ABSORBED && _particle->_index == 33) { +#ifndef MULTICORE + if (_g2c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_start_position + if (!ABSORBED && _particle->_index == 34) { + _particle->_index++; + } + + // t0_chopper_alpha + if (!ABSORBED && _particle->_index == 35) { +#ifndef MULTICORE + if (_t0_chopper_alpha_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_end_position + if (!ABSORBED && _particle->_index == 36) { + _particle->_index++; + } + + // t0_chopper_beta + if (!ABSORBED && _particle->_index == 37) { +#ifndef MULTICORE + if (_t0_chopper_beta_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a1 + if (!ABSORBED && _particle->_index == 38) { +#ifndef MULTICORE + if (_g3a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a2 + if (!ABSORBED && _particle->_index == 39) { +#ifndef MULTICORE + if (_g3a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo3_position + if (!ABSORBED && _particle->_index == 40) { + _particle->_index++; + } + + // fo_chopper_3 + if (!ABSORBED && _particle->_index == 41) { +#ifndef MULTICORE + if (_fo_chopper_3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3b1 + if (!ABSORBED && _particle->_index == 42) { +#ifndef MULTICORE + if (_g3b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a1 + if (!ABSORBED && _particle->_index == 43) { +#ifndef MULTICORE + if (_g4a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_2_position + if (!ABSORBED && _particle->_index == 44) { + _particle->_index++; + } + + // g4a2 + if (!ABSORBED && _particle->_index == 45) { +#ifndef MULTICORE + if (_g4a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a3 + if (!ABSORBED && _particle->_index == 46) { +#ifndef MULTICORE + if (_g4a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo4_position + if (!ABSORBED && _particle->_index == 47) { + _particle->_index++; + } + + // fo_chopper_4 + if (!ABSORBED && _particle->_index == 48) { +#ifndef MULTICORE + if (_fo_chopper_4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b1 + if (!ABSORBED && _particle->_index == 49) { +#ifndef MULTICORE + if (_g4b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b2 + if (!ABSORBED && _particle->_index == 50) { +#ifndef MULTICORE + if (_g4b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b3 + if (!ABSORBED && _particle->_index == 51) { +#ifndef MULTICORE + if (_g4b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b4 + if (!ABSORBED && _particle->_index == 52) { +#ifndef MULTICORE + if (_g4b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b5 + if (!ABSORBED && _particle->_index == 53) { +#ifndef MULTICORE + if (_g4b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b6 + if (!ABSORBED && _particle->_index == 54) { +#ifndef MULTICORE + if (_g4b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5a1 + if (!ABSORBED && _particle->_index == 55) { +#ifndef MULTICORE + if (_g5a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo5_position + if (!ABSORBED && _particle->_index == 56) { + _particle->_index++; + } + + // fo_chopper_5 + if (!ABSORBED && _particle->_index == 57) { +#ifndef MULTICORE + if (_fo_chopper_5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b1 + if (!ABSORBED && _particle->_index == 58) { +#ifndef MULTICORE + if (_g5b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b2 + if (!ABSORBED && _particle->_index == 59) { +#ifndef MULTICORE + if (_g5b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b3 + if (!ABSORBED && _particle->_index == 60) { +#ifndef MULTICORE + if (_g5b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b4 + if (!ABSORBED && _particle->_index == 61) { +#ifndef MULTICORE + if (_g5b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b5 + if (!ABSORBED && _particle->_index == 62) { +#ifndef MULTICORE + if (_g5b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b6 + if (!ABSORBED && _particle->_index == 63) { +#ifndef MULTICORE + if (_g5b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a1 + if (!ABSORBED && _particle->_index == 64) { +#ifndef MULTICORE + if (_g6a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a2 + if (!ABSORBED && _particle->_index == 65) { +#ifndef MULTICORE + if (_g6a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a3 + if (!ABSORBED && _particle->_index == 66) { +#ifndef MULTICORE + if (_g6a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // guide_end + if (!ABSORBED && _particle->_index == 67) { + _particle->_index++; + } + + // monitor_3_position + if (!ABSORBED && _particle->_index == 68) { + _particle->_index++; + } + + // start_backend + if (!ABSORBED && _particle->_index == 69) { + _particle->_index++; + } + + // optical_axis_backend + if (!ABSORBED && _particle->_index == 70) { + _particle->_index++; + } + + // pinhole_2 + if (!ABSORBED && _particle->_index == 71) { +#ifndef MULTICORE + if (_pinhole_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // graph + if (!ABSORBED && _particle->_index == 72) { +#ifndef MULTICORE + if (_graph_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_monitor_arm + if (!ABSORBED && _particle->_index == 73) { + _particle->_index++; + } + + // sample_PSD + if (!ABSORBED && _particle->_index == 74) { +#ifndef MULTICORE + if (_sample_PSD_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_x + if (!ABSORBED && _particle->_index == 75) { +#ifndef MULTICORE + if (_profile_x_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_y + if (!ABSORBED && _particle->_index == 76) { +#ifndef MULTICORE + if (_profile_y_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength + if (!ABSORBED && _particle->_index == 77) { +#ifndef MULTICORE + if (_wavelength_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // tof + if (!ABSORBED && _particle->_index == 78) { +#ifndef MULTICORE + if (_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength_tof + if (!ABSORBED && _particle->_index == 79) { +#ifndef MULTICORE + if (_wavelength_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_position + if (!ABSORBED && _particle->_index == 80) { + _particle->_index++; + } + + } + + // jump to next viable seed + seed = seed + gpu_innerloop; + } // outer loop / particle batches + + free(particles); + free(pbuffer); + + printf("\n"); +} /* raytrace_all_funnel */ +#endif // FUNNEL + +#undef t_offset +#undef p_trains +#undef alive_trains +#undef x +#undef y +#undef z +#undef vx +#undef vy +#undef vz +#undef t +#undef sx +#undef sy +#undef sz +#undef p +#undef mcgravitation +#undef mcMagnet +#undef allow_backprop +#undef _mctmp_a +#undef _mctmp_b +#undef _mctmp_c +#ifdef OPENACC +#undef strlen +#undef strcmp +#undef exit +#undef printf +#undef sprintf +#undef fprintf +#endif +#undef SCATTERED +#undef RESTORE +#undef RESTORE_NEUTRON +#undef STORE_NEUTRON +#undef ABSORBED +#undef ABSORB +#undef ABSORB0 +/* ***************************************************************************** +* instrument 'ODIN_baseline' and components SAVE +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_save(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_save] component Origin=Progress_bar() SAVE [Progress_bar:0]"); + + MPI_MASTER (fprintf (stdout, "\nSave [%s]\n", instrument_name);); + if (profile && strlen (profile) && strcmp (profile, "NULL") && strcmp (profile, "0")) { + char filename[256]; + if (!strlen (profile) || !strcmp (profile, "NULL") || !strcmp (profile, "0")) + strcpy (filename, instrument_name); + else + strcpy (filename, profile); + DETECTOR_OUT_1D ("Intensity profiler", "Component index [1]", "Intensity", "prof", 1, mcNUMCOMP, mcNUMCOMP - 1, &(instrument->counter_N[1]), + &(instrument->counter_P[1]), &(instrument->counter_P2[1]), filename); + } + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_save */ + +_class_Monitor_nD *class_Monitor_nD_save(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_save] component sample_PSD=Monitor_nD() SAVE [Monitor_nD:0]"); + + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_save */ + + + +int save(FILE *handle) { /* called by mccode_main for ODIN_baseline:SAVE */ + if (!handle) siminfo_init(NULL); + + /* Instrument 'ODIN_baseline' SAVE */ + SIG_MESSAGE("[ODIN_baseline] SAVE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) +{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + /* call iteratively all components SAVE */ + class_Progress_bar_save(&_Origin_var); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + class_Monitor_nD_save(&_sample_PSD_var); + + class_Monitor_nD_save(&_profile_x_var); + + class_Monitor_nD_save(&_profile_y_var); + + class_Monitor_nD_save(&_wavelength_var); + + class_Monitor_nD_save(&_tof_var); + + class_Monitor_nD_save(&_wavelength_tof_var); + + + if (!handle) siminfo_close(); + + return(0); +} /* save */ + +/* ***************************************************************************** +* instrument 'ODIN_baseline' and components FINALLY +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_finally(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_finally] component Origin=Progress_bar() FINALLY [Progress_bar:0]"); + + time_t NowTime; + time (&NowTime); + fprintf (stdout, "\nFinally [%s: %s]. Time: ", instrument_name, dirname ? dirname : "."); + if (difftime (NowTime, StartTime) < 60.0) + fprintf (stdout, "%g [s] ", difftime (NowTime, StartTime)); + else if (difftime (NowTime, StartTime) > 3600.0) + fprintf (stdout, "%g [h] ", difftime (NowTime, StartTime) / 3600.0); + else + fprintf (stdout, "%g [min] ", difftime (NowTime, StartTime) / 60.0); + fprintf (stdout, "\n"); + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_finally */ + +_class_Guide_four_side *class_Guide_four_side_finally(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_finally] component NBOA_drawing_1_end=Guide_four_side() FINALLY [Guide_four_side:0]"); + + + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_finally */ + +_class_MultiDiskChopper *class_MultiDiskChopper_finally(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_finally] component wfmc_1=MultiDiskChopper() FINALLY [MultiDiskChopper:0]"); + + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_finally */ + +_class_Monitor_nD *class_Monitor_nD_finally(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_finally] component sample_PSD=Monitor_nD() FINALLY [Monitor_nD:0]"); + + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_finally */ + + + +int finally(void) { /* called by mccode_main for ODIN_baseline:FINALLY */ +#pragma acc update host(_Origin_var) +#pragma acc update host(_optical_axis_var) +#pragma acc update host(_Source_var) +#pragma acc update host(_Start_of_bi_var) +#pragma acc update host(_bi_var) +#pragma acc update host(_End_of_bi_var) +#pragma acc update host(_NBOA_drawing_1_end_var) +#pragma acc update host(_g1a2_var) +#pragma acc update host(_g1a3_var) +#pragma acc update host(_g1b1_var) +#pragma acc update host(_g1c1_var) +#pragma acc update host(_wfm_position_var) +#pragma acc update host(_wfm_1_position_var) +#pragma acc update host(_wfmc_1_var) +#pragma acc update host(_pinhole_1_var) +#pragma acc update host(_wfm_2_position_var) +#pragma acc update host(_wfmc_2_var) +#pragma acc update host(_g2a1_var) +#pragma acc update host(_monitor_1_position_var) +#pragma acc update host(_g2a2_var) +#pragma acc update host(_fo1_position_var) +#pragma acc update host(_fo_chopper_1_var) +#pragma acc update host(_bp1_position_var) +#pragma acc update host(_bp1_chopper_var) +#pragma acc update host(_g2b1_var) +#pragma acc update host(_g2b2_var) +#pragma acc update host(_g2b3_var) +#pragma acc update host(_g2b4_var) +#pragma acc update host(_fo2_position_var) +#pragma acc update host(_fo_chopper_2_var) +#pragma acc update host(_bp2_position_var) +#pragma acc update host(_bp_chopper2_var) +#pragma acc update host(_g2c1_var) +#pragma acc update host(_t0_start_position_var) +#pragma acc update host(_t0_chopper_alpha_var) +#pragma acc update host(_t0_end_position_var) +#pragma acc update host(_t0_chopper_beta_var) +#pragma acc update host(_g3a1_var) +#pragma acc update host(_g3a2_var) +#pragma acc update host(_fo3_position_var) +#pragma acc update host(_fo_chopper_3_var) +#pragma acc update host(_g3b1_var) +#pragma acc update host(_g4a1_var) +#pragma acc update host(_monitor_2_position_var) +#pragma acc update host(_g4a2_var) +#pragma acc update host(_g4a3_var) +#pragma acc update host(_fo4_position_var) +#pragma acc update host(_fo_chopper_4_var) +#pragma acc update host(_g4b1_var) +#pragma acc update host(_g4b2_var) +#pragma acc update host(_g4b3_var) +#pragma acc update host(_g4b4_var) +#pragma acc update host(_g4b5_var) +#pragma acc update host(_g4b6_var) +#pragma acc update host(_g5a1_var) +#pragma acc update host(_fo5_position_var) +#pragma acc update host(_fo_chopper_5_var) +#pragma acc update host(_g5b1_var) +#pragma acc update host(_g5b2_var) +#pragma acc update host(_g5b3_var) +#pragma acc update host(_g5b4_var) +#pragma acc update host(_g5b5_var) +#pragma acc update host(_g5b6_var) +#pragma acc update host(_g6a1_var) +#pragma acc update host(_g6a2_var) +#pragma acc update host(_g6a3_var) +#pragma acc update host(_guide_end_var) +#pragma acc update host(_monitor_3_position_var) +#pragma acc update host(_start_backend_var) +#pragma acc update host(_optical_axis_backend_var) +#pragma acc update host(_pinhole_2_var) +#pragma acc update host(_graph_var) +#pragma acc update host(_sample_monitor_arm_var) +#pragma acc update host(_sample_PSD_var) +#pragma acc update host(_profile_x_var) +#pragma acc update host(_profile_y_var) +#pragma acc update host(_wavelength_var) +#pragma acc update host(_tof_var) +#pragma acc update host(_wavelength_tof_var) +#pragma acc update host(_sample_position_var) +#pragma acc update host(_instrument_var) + + siminfo_init(NULL); + save(siminfo_file); /* save data when simulation ends */ + + /* Instrument 'ODIN_baseline' FINALLY */ + SIG_MESSAGE("[ODIN_baseline] FINALLY [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) +{ +// Start of finally for generated ODIN +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + /* call iteratively all components FINALLY */ + class_Progress_bar_finally(&_Origin_var); + + + + + + + class_Guide_four_side_finally(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_finally(&_g1a2_var); + + class_Guide_four_side_finally(&_g1a3_var); + + class_Guide_four_side_finally(&_g1b1_var); + + class_Guide_four_side_finally(&_g1c1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_2_var); + + class_Guide_four_side_finally(&_g2a1_var); + + + class_Guide_four_side_finally(&_g2a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_1_var); + + + + class_Guide_four_side_finally(&_g2b1_var); + + class_Guide_four_side_finally(&_g2b2_var); + + class_Guide_four_side_finally(&_g2b3_var); + + class_Guide_four_side_finally(&_g2b4_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_2_var); + + + + class_Guide_four_side_finally(&_g2c1_var); + + + + + + class_Guide_four_side_finally(&_g3a1_var); + + class_Guide_four_side_finally(&_g3a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_3_var); + + class_Guide_four_side_finally(&_g3b1_var); + + class_Guide_four_side_finally(&_g4a1_var); + + + class_Guide_four_side_finally(&_g4a2_var); + + class_Guide_four_side_finally(&_g4a3_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_4_var); + + class_Guide_four_side_finally(&_g4b1_var); + + class_Guide_four_side_finally(&_g4b2_var); + + class_Guide_four_side_finally(&_g4b3_var); + + class_Guide_four_side_finally(&_g4b4_var); + + class_Guide_four_side_finally(&_g4b5_var); + + class_Guide_four_side_finally(&_g4b6_var); + + class_Guide_four_side_finally(&_g5a1_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_5_var); + + class_Guide_four_side_finally(&_g5b1_var); + + class_Guide_four_side_finally(&_g5b2_var); + + class_Guide_four_side_finally(&_g5b3_var); + + class_Guide_four_side_finally(&_g5b4_var); + + class_Guide_four_side_finally(&_g5b5_var); + + class_Guide_four_side_finally(&_g5b6_var); + + class_Guide_four_side_finally(&_g6a1_var); + + class_Guide_four_side_finally(&_g6a2_var); + + class_Guide_four_side_finally(&_g6a3_var); + + + + + + + + + class_Monitor_nD_finally(&_sample_PSD_var); + + class_Monitor_nD_finally(&_profile_x_var); + + class_Monitor_nD_finally(&_profile_y_var); + + class_Monitor_nD_finally(&_wavelength_var); + + class_Monitor_nD_finally(&_tof_var); + + class_Monitor_nD_finally(&_wavelength_tof_var); + + + siminfo_close(); + + return(0); +} /* finally */ + +/* ***************************************************************************** +* instrument 'ODIN_baseline' and components DISPLAY +***************************************************************************** */ + + #define magnify mcdis_magnify + #define line mcdis_line + #define dashed_line mcdis_dashed_line + #define multiline mcdis_multiline + #define rectangle mcdis_rectangle + #define box mcdis_box + #define circle mcdis_circle + #define cylinder mcdis_cylinder + #define sphere mcdis_sphere + #define cone mcdis_cone + #define polygon mcdis_polygon + #define polyhedron mcdis_polyhedron +_class_Progress_bar *class_Progress_bar_display(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_display] component Origin=Progress_bar() DISPLAY [Progress_bar:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_display */ + +_class_Arm *class_Arm_display(_class_Arm *_comp +) { + SIG_MESSAGE("[_optical_axis_display] component optical_axis=Arm() DISPLAY [Arm:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + /* A bit ugly; hard-coded dimensions. */ + + line (0, 0, 0, 0.2, 0, 0); + line (0, 0, 0, 0, 0.2, 0); + line (0, 0, 0, 0, 0, 0.2); + + cone (0.2, 0, 0, 0.01, 0.02, 1, 0, 0); + cone (0, 0.2, 0, 0.01, 0.02, 0, 1, 0); + cone (0, 0, 0.2, 0.01, 0.02, 0, 0, 1); + return(_comp); +} /* class_Arm_display */ + +_class_ESS_butterfly *class_ESS_butterfly_display(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_display] component Source=ESS_butterfly() DISPLAY [ESS_butterfly:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_display */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_display(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_display] component bi=bi_spec_ellipse() DISPLAY [bi_spec_ellipse:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_display] component NBOA_drawing_1_end=Guide_four_side() DISPLAY [Guide_four_side:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int i, imax; + double x1, y1, Z, x2, y2, Z1, Z0wr, Z0wl, Z0hu, Z0hd, xwt, ywt, x1wt, y1wt; + double mr, ml, mu, md, nr1, nl1, nu1, nd1, nr2, nl2, nu2, nd2; + double lbwl, lbwr, lbhu, lbhd; /* length between focal points , needed for elliptic case */ + + double x11, y11, x21, y21, Z11, Z0wr1, Z0wl1, Z0hu1, Z0hd1, xwt1, ywt1, x1wt1, y1wt1; + double mr1, ml1, mu1, md1, nr11, nl11, nu11, nd11, nr21, nl21, nu21, nd21; + double lbwl1, lbwr1, lbhu1, lbhd1; + + double x12, y12, x22, y22, Z12, Z0wr2, Z0wl2, Z0hu2, Z0hd2, xwt2, ywt2, x1wt2, y1wt2; + double mr2, ml2, mu2, md2, nr12, nl12, nu12, nd12, nr22, nl22, nu22, nd22; + double lbwl2, lbwr2, lbhu2, lbhd2; + + magnify ("xy"); + + imax = 100; /* maximum points for every line in Z direction*/ + + lbwr = linwr + l + loutwr; + lbwl = linwl + l + loutwl; + lbhu = linhu + l + louthu; + lbhd = linhd + l + louthd; + + if (linwr == 0 && loutwr == 0) { + mr = (-w2r + w1r) / l; + nr1 = -w1r; + nr2 = -(w1rwt); + } + + if (linwl == 0 && loutwl == 0) { + ml = (w2l - w1l) / l; + nl1 = w1l; + nl2 = (w1lwt); + } + + if (linhu == 0 && louthu == 0) { + mu = (h2u - h1u) / l; + nu1 = h1u; + nu2 = (h1uwt); + } + + if (linhd == 0 && louthd == 0) { + md = (-h2d + h1d) / l; + nd1 = -h1d; + nd2 = -(h1dwt); + } + + Z0wr = (linwr - l - loutwr) / 2.0; + Z0wl = (linwl - l - loutwl) / 2.0; + Z0hu = lbhu / 2.0 - l - louthu; + Z0hd = lbhd / 2.0 - l - louthd; + + if (myd != -1) + line (w1l, -h1d, 0.0, -w1r, -h1d, 0.0); /* entrance window given by the INNER walls*/ + if (myu != -1) + line (w1l, h1u, 0.0, -w1r, h1u, 0.0); + if (mxl != -1) + line (w1l, -h1d, 0.0, w1l, h1u, 0.0); + if (mxr != -1) + line (-w1r, h1u, 0.0, -w1r, -h1d, 0.0); + + if (myd != -1) + line (w2l, -h2d, l, -w2r, -h2d, l); /* exit window given by the INNER walls*/ + if (myu != -1) + line (w2l, h2u, l, -w2r, h2u, l); + if (mxl != -1) + line (w2l, -h2d, l, w2l, h2u, l); + if (mxr != -1) + line (-w2r, -h2d, l, -w2r, h2u, l); + + if (mydOW != -1) + line ((w1lwt), -(h1dwt), 0.0, -(w1rwt), -(h1dwt), 0.0); /* entrance window given by the OUTER walls */ + if (myuOW != -1) + line ((w1lwt), (h1uwt), 0.0, -(w1rwt), (h1uwt), 0.0); + if (mxlOW != -1) + line ((w1lwt), -(h1dwt), 0.0, (w1lwt), (h1uwt), 0.0); + if (mxrOW != -1) + line (-(w1rwt), (h1uwt), 0.0, -(w1rwt), -(h1dwt), 0.0); + + if (mydOW != -1) + line ((w2lwt), -(h2dwt), l, -(w2rwt), -(h2dwt), l); /* exit windows given by the OUTER walls*/ + if (myuOW != -1) + line ((w2lwt), (h2uwt), l, -(w2rwt), (h2uwt), l); + if (mxlOW != -1) + line ((w2lwt), -(h2dwt), l, (w2lwt), (h2uwt), l); + if (mxrOW != -1) + line (-(w2rwt), -(h2dwt), l, -(w2rwt), (h2uwt), l); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, -h1d, 0.0, (w1lwt), -(h1dwt), 0.0); /* corner connection lines for the entrance windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, h1u, 0.0, (w1lwt), (h1uwt), 0.0); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, -h1d, 0.0, -(w1rwt), -(h1dwt), 0.0); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, h1u, 0.0, -(w1rwt), (h1uwt), 0.0); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, -h2d, l, (w2lwt), -(h2dwt), l); /* corner connection lines for the exit windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, h2u, l, (w2lwt), (h2uwt), l); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, -h2d, l, -(w2rwt), -(h2dwt), l); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, h2u, l, -(w2rwt), (h2uwt), l); + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxl != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxr != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxr != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxl != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } /* END INNER LINES*/ + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxlOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxrOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxrOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxlOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_display */ + +_class_MultiDiskChopper *class_MultiDiskChopper_display(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_display] component wfmc_1=MultiDiskChopper() DISPLAY [MultiDiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_display */ + +_class_Slit *class_Slit_display(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_display] component pinhole_1=Slit() DISPLAY [Slit:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + if (is_unset (radius)) { + double xw, yh; + xw = (xmax - xmin) / 2.0; + yh = (ymax - ymin) / 2.0; + multiline (3, xmin - xw, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, ymax + yh, 0.0); + multiline (3, xmax + xw, (double)ymax, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmax, ymax + yh, 0.0); + multiline (3, xmin - xw, (double)ymin, 0.0, (double)xmin, (double)ymin, 0.0, (double)xmin, ymin - yh, 0.0); + multiline (3, xmax + xw, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, ymin - yh, 0.0); + } else { + circle ("xy", 0, 0, 0, radius); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_display */ + +_class_DiskChopper *class_DiskChopper_display(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_display] component bp1_chopper=DiskChopper() DISPLAY [DiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_display */ + +_class_Graphite_Diffuser *class_Graphite_Diffuser_display(_class_Graphite_Diffuser *_comp +) { + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_display] component graph=Graphite_Diffuser() DISPLAY [Graphite_Diffuser:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + magnify("xy"); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)-ywidth/2, 0.0); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)-ywidth/2, (double)thick); + line(-xwidth/2, -ywidth/2, 0.0, -xwidth/2, -ywidth/2, thick); + line(xwidth/2, -ywidth/2, 0.0, xwidth/2, -ywidth/2, thick); + line(-xwidth/2, ywidth/2, 0.0, -xwidth/2, ywidth/2, thick); + line(xwidth/2, ywidth/2, 0.0, xwidth/2, ywidth/2, thick); + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return(_comp); +} /* class_Graphite_Diffuser_display */ + +_class_Monitor_nD *class_Monitor_nD_display(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_display] component sample_PSD=Monitor_nD() DISPLAY [Monitor_nD:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_display */ + + + #undef magnify + #undef line + #undef dashed_line + #undef multiline + #undef rectangle + #undef box + #undef circle + #undef cylinder + #undef sphere + +int display(void) { /* called by mccode_main for ODIN_baseline:DISPLAY */ + printf("MCDISPLAY: start\n"); + + /* call iteratively all components DISPLAY */ + class_Progress_bar_display(&_Origin_var); + + class_Arm_display(&_optical_axis_var); + + class_ESS_butterfly_display(&_Source_var); + + class_Arm_display(&_Start_of_bi_var); + + class_bi_spec_ellipse_display(&_bi_var); + + class_Arm_display(&_End_of_bi_var); + + class_Guide_four_side_display(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_display(&_g1a2_var); + + class_Guide_four_side_display(&_g1a3_var); + + class_Guide_four_side_display(&_g1b1_var); + + class_Guide_four_side_display(&_g1c1_var); + + class_Arm_display(&_wfm_position_var); + + class_Arm_display(&_wfm_1_position_var); + + class_MultiDiskChopper_display(&_wfmc_1_var); + + class_Slit_display(&_pinhole_1_var); + + class_Arm_display(&_wfm_2_position_var); + + class_MultiDiskChopper_display(&_wfmc_2_var); + + class_Guide_four_side_display(&_g2a1_var); + + class_Arm_display(&_monitor_1_position_var); + + class_Guide_four_side_display(&_g2a2_var); + + class_Arm_display(&_fo1_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_1_var); + + class_Arm_display(&_bp1_position_var); + + class_DiskChopper_display(&_bp1_chopper_var); + + class_Guide_four_side_display(&_g2b1_var); + + class_Guide_four_side_display(&_g2b2_var); + + class_Guide_four_side_display(&_g2b3_var); + + class_Guide_four_side_display(&_g2b4_var); + + class_Arm_display(&_fo2_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_2_var); + + class_Arm_display(&_bp2_position_var); + + class_DiskChopper_display(&_bp_chopper2_var); + + class_Guide_four_side_display(&_g2c1_var); + + class_Arm_display(&_t0_start_position_var); + + class_DiskChopper_display(&_t0_chopper_alpha_var); + + class_Arm_display(&_t0_end_position_var); + + class_DiskChopper_display(&_t0_chopper_beta_var); + + class_Guide_four_side_display(&_g3a1_var); + + class_Guide_four_side_display(&_g3a2_var); + + class_Arm_display(&_fo3_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_3_var); + + class_Guide_four_side_display(&_g3b1_var); + + class_Guide_four_side_display(&_g4a1_var); + + class_Arm_display(&_monitor_2_position_var); + + class_Guide_four_side_display(&_g4a2_var); + + class_Guide_four_side_display(&_g4a3_var); + + class_Arm_display(&_fo4_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_4_var); + + class_Guide_four_side_display(&_g4b1_var); + + class_Guide_four_side_display(&_g4b2_var); + + class_Guide_four_side_display(&_g4b3_var); + + class_Guide_four_side_display(&_g4b4_var); + + class_Guide_four_side_display(&_g4b5_var); + + class_Guide_four_side_display(&_g4b6_var); + + class_Guide_four_side_display(&_g5a1_var); + + class_Arm_display(&_fo5_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_5_var); + + class_Guide_four_side_display(&_g5b1_var); + + class_Guide_four_side_display(&_g5b2_var); + + class_Guide_four_side_display(&_g5b3_var); + + class_Guide_four_side_display(&_g5b4_var); + + class_Guide_four_side_display(&_g5b5_var); + + class_Guide_four_side_display(&_g5b6_var); + + class_Guide_four_side_display(&_g6a1_var); + + class_Guide_four_side_display(&_g6a2_var); + + class_Guide_four_side_display(&_g6a3_var); + + class_Arm_display(&_guide_end_var); + + class_Arm_display(&_monitor_3_position_var); + + class_Arm_display(&_start_backend_var); + + class_Arm_display(&_optical_axis_backend_var); + + class_Slit_display(&_pinhole_2_var); + + class_Graphite_Diffuser_display(&_graph_var); + + class_Arm_display(&_sample_monitor_arm_var); + + class_Monitor_nD_display(&_sample_PSD_var); + + class_Monitor_nD_display(&_profile_x_var); + + class_Monitor_nD_display(&_profile_y_var); + + class_Monitor_nD_display(&_wavelength_var); + + class_Monitor_nD_display(&_tof_var); + + class_Monitor_nD_display(&_wavelength_tof_var); + + class_Arm_display(&_sample_position_var); + + printf("MCDISPLAY: end\n"); + + return(0); +} /* display */ + +void* _getvar_parameters(char* compname) +/* enables settings parameters based use of the GETPAR macro */ +{ + #ifdef OPENACC + #define strcmp(a,b) str_comp(a,b) + #endif + if (!strcmp(compname, "Origin")) return (void *) &(_Origin_var._parameters); + if (!strcmp(compname, "optical_axis")) return (void *) &(_optical_axis_var._parameters); + if (!strcmp(compname, "Source")) return (void *) &(_Source_var._parameters); + if (!strcmp(compname, "Start_of_bi")) return (void *) &(_Start_of_bi_var._parameters); + if (!strcmp(compname, "bi")) return (void *) &(_bi_var._parameters); + if (!strcmp(compname, "End_of_bi")) return (void *) &(_End_of_bi_var._parameters); + if (!strcmp(compname, "NBOA_drawing_1_end")) return (void *) &(_NBOA_drawing_1_end_var._parameters); + if (!strcmp(compname, "g1a2")) return (void *) &(_g1a2_var._parameters); + if (!strcmp(compname, "g1a3")) return (void *) &(_g1a3_var._parameters); + if (!strcmp(compname, "g1b1")) return (void *) &(_g1b1_var._parameters); + if (!strcmp(compname, "g1c1")) return (void *) &(_g1c1_var._parameters); + if (!strcmp(compname, "wfm_position")) return (void *) &(_wfm_position_var._parameters); + if (!strcmp(compname, "wfm_1_position")) return (void *) &(_wfm_1_position_var._parameters); + if (!strcmp(compname, "wfmc_1")) return (void *) &(_wfmc_1_var._parameters); + if (!strcmp(compname, "pinhole_1")) return (void *) &(_pinhole_1_var._parameters); + if (!strcmp(compname, "wfm_2_position")) return (void *) &(_wfm_2_position_var._parameters); + if (!strcmp(compname, "wfmc_2")) return (void *) &(_wfmc_2_var._parameters); + if (!strcmp(compname, "g2a1")) return (void *) &(_g2a1_var._parameters); + if (!strcmp(compname, "monitor_1_position")) return (void *) &(_monitor_1_position_var._parameters); + if (!strcmp(compname, "g2a2")) return (void *) &(_g2a2_var._parameters); + if (!strcmp(compname, "fo1_position")) return (void *) &(_fo1_position_var._parameters); + if (!strcmp(compname, "fo_chopper_1")) return (void *) &(_fo_chopper_1_var._parameters); + if (!strcmp(compname, "bp1_position")) return (void *) &(_bp1_position_var._parameters); + if (!strcmp(compname, "bp1_chopper")) return (void *) &(_bp1_chopper_var._parameters); + if (!strcmp(compname, "g2b1")) return (void *) &(_g2b1_var._parameters); + if (!strcmp(compname, "g2b2")) return (void *) &(_g2b2_var._parameters); + if (!strcmp(compname, "g2b3")) return (void *) &(_g2b3_var._parameters); + if (!strcmp(compname, "g2b4")) return (void *) &(_g2b4_var._parameters); + if (!strcmp(compname, "fo2_position")) return (void *) &(_fo2_position_var._parameters); + if (!strcmp(compname, "fo_chopper_2")) return (void *) &(_fo_chopper_2_var._parameters); + if (!strcmp(compname, "bp2_position")) return (void *) &(_bp2_position_var._parameters); + if (!strcmp(compname, "bp_chopper2")) return (void *) &(_bp_chopper2_var._parameters); + if (!strcmp(compname, "g2c1")) return (void *) &(_g2c1_var._parameters); + if (!strcmp(compname, "t0_start_position")) return (void *) &(_t0_start_position_var._parameters); + if (!strcmp(compname, "t0_chopper_alpha")) return (void *) &(_t0_chopper_alpha_var._parameters); + if (!strcmp(compname, "t0_end_position")) return (void *) &(_t0_end_position_var._parameters); + if (!strcmp(compname, "t0_chopper_beta")) return (void *) &(_t0_chopper_beta_var._parameters); + if (!strcmp(compname, "g3a1")) return (void *) &(_g3a1_var._parameters); + if (!strcmp(compname, "g3a2")) return (void *) &(_g3a2_var._parameters); + if (!strcmp(compname, "fo3_position")) return (void *) &(_fo3_position_var._parameters); + if (!strcmp(compname, "fo_chopper_3")) return (void *) &(_fo_chopper_3_var._parameters); + if (!strcmp(compname, "g3b1")) return (void *) &(_g3b1_var._parameters); + if (!strcmp(compname, "g4a1")) return (void *) &(_g4a1_var._parameters); + if (!strcmp(compname, "monitor_2_position")) return (void *) &(_monitor_2_position_var._parameters); + if (!strcmp(compname, "g4a2")) return (void *) &(_g4a2_var._parameters); + if (!strcmp(compname, "g4a3")) return (void *) &(_g4a3_var._parameters); + if (!strcmp(compname, "fo4_position")) return (void *) &(_fo4_position_var._parameters); + if (!strcmp(compname, "fo_chopper_4")) return (void *) &(_fo_chopper_4_var._parameters); + if (!strcmp(compname, "g4b1")) return (void *) &(_g4b1_var._parameters); + if (!strcmp(compname, "g4b2")) return (void *) &(_g4b2_var._parameters); + if (!strcmp(compname, "g4b3")) return (void *) &(_g4b3_var._parameters); + if (!strcmp(compname, "g4b4")) return (void *) &(_g4b4_var._parameters); + if (!strcmp(compname, "g4b5")) return (void *) &(_g4b5_var._parameters); + if (!strcmp(compname, "g4b6")) return (void *) &(_g4b6_var._parameters); + if (!strcmp(compname, "g5a1")) return (void *) &(_g5a1_var._parameters); + if (!strcmp(compname, "fo5_position")) return (void *) &(_fo5_position_var._parameters); + if (!strcmp(compname, "fo_chopper_5")) return (void *) &(_fo_chopper_5_var._parameters); + if (!strcmp(compname, "g5b1")) return (void *) &(_g5b1_var._parameters); + if (!strcmp(compname, "g5b2")) return (void *) &(_g5b2_var._parameters); + if (!strcmp(compname, "g5b3")) return (void *) &(_g5b3_var._parameters); + if (!strcmp(compname, "g5b4")) return (void *) &(_g5b4_var._parameters); + if (!strcmp(compname, "g5b5")) return (void *) &(_g5b5_var._parameters); + if (!strcmp(compname, "g5b6")) return (void *) &(_g5b6_var._parameters); + if (!strcmp(compname, "g6a1")) return (void *) &(_g6a1_var._parameters); + if (!strcmp(compname, "g6a2")) return (void *) &(_g6a2_var._parameters); + if (!strcmp(compname, "g6a3")) return (void *) &(_g6a3_var._parameters); + if (!strcmp(compname, "guide_end")) return (void *) &(_guide_end_var._parameters); + if (!strcmp(compname, "monitor_3_position")) return (void *) &(_monitor_3_position_var._parameters); + if (!strcmp(compname, "start_backend")) return (void *) &(_start_backend_var._parameters); + if (!strcmp(compname, "optical_axis_backend")) return (void *) &(_optical_axis_backend_var._parameters); + if (!strcmp(compname, "pinhole_2")) return (void *) &(_pinhole_2_var._parameters); + if (!strcmp(compname, "graph")) return (void *) &(_graph_var._parameters); + if (!strcmp(compname, "sample_monitor_arm")) return (void *) &(_sample_monitor_arm_var._parameters); + if (!strcmp(compname, "sample_PSD")) return (void *) &(_sample_PSD_var._parameters); + if (!strcmp(compname, "profile_x")) return (void *) &(_profile_x_var._parameters); + if (!strcmp(compname, "profile_y")) return (void *) &(_profile_y_var._parameters); + if (!strcmp(compname, "wavelength")) return (void *) &(_wavelength_var._parameters); + if (!strcmp(compname, "tof")) return (void *) &(_tof_var._parameters); + if (!strcmp(compname, "wavelength_tof")) return (void *) &(_wavelength_tof_var._parameters); + if (!strcmp(compname, "sample_position")) return (void *) &(_sample_position_var._parameters); + return 0; +} + +void* _get_particle_var(char *token, _class_particle *p) +/* enables setpars based use of GET_PARTICLE_DVAR macro and similar */ +{ + if (!strcmp(token, "t_offset")) return (void *) &(p->t_offset); + if (!strcmp(token, "p_trains")) return (void *) &(p->p_trains); + if (!strcmp(token, "alive_trains")) return (void *) &(p->alive_trains); + return 0; +} + +int _getcomp_index(char* compname) +/* Enables retrieving the component position & rotation when the index is not known. + * Component indexing into MACROS, e.g., POS_A_COMP_INDEX, are 1-based! */ +{ + if (!strcmp(compname, "Origin")) return 1; + if (!strcmp(compname, "optical_axis")) return 2; + if (!strcmp(compname, "Source")) return 3; + if (!strcmp(compname, "Start_of_bi")) return 4; + if (!strcmp(compname, "bi")) return 5; + if (!strcmp(compname, "End_of_bi")) return 6; + if (!strcmp(compname, "NBOA_drawing_1_end")) return 7; + if (!strcmp(compname, "g1a2")) return 8; + if (!strcmp(compname, "g1a3")) return 9; + if (!strcmp(compname, "g1b1")) return 10; + if (!strcmp(compname, "g1c1")) return 11; + if (!strcmp(compname, "wfm_position")) return 12; + if (!strcmp(compname, "wfm_1_position")) return 13; + if (!strcmp(compname, "wfmc_1")) return 14; + if (!strcmp(compname, "pinhole_1")) return 15; + if (!strcmp(compname, "wfm_2_position")) return 16; + if (!strcmp(compname, "wfmc_2")) return 17; + if (!strcmp(compname, "g2a1")) return 18; + if (!strcmp(compname, "monitor_1_position")) return 19; + if (!strcmp(compname, "g2a2")) return 20; + if (!strcmp(compname, "fo1_position")) return 21; + if (!strcmp(compname, "fo_chopper_1")) return 22; + if (!strcmp(compname, "bp1_position")) return 23; + if (!strcmp(compname, "bp1_chopper")) return 24; + if (!strcmp(compname, "g2b1")) return 25; + if (!strcmp(compname, "g2b2")) return 26; + if (!strcmp(compname, "g2b3")) return 27; + if (!strcmp(compname, "g2b4")) return 28; + if (!strcmp(compname, "fo2_position")) return 29; + if (!strcmp(compname, "fo_chopper_2")) return 30; + if (!strcmp(compname, "bp2_position")) return 31; + if (!strcmp(compname, "bp_chopper2")) return 32; + if (!strcmp(compname, "g2c1")) return 33; + if (!strcmp(compname, "t0_start_position")) return 34; + if (!strcmp(compname, "t0_chopper_alpha")) return 35; + if (!strcmp(compname, "t0_end_position")) return 36; + if (!strcmp(compname, "t0_chopper_beta")) return 37; + if (!strcmp(compname, "g3a1")) return 38; + if (!strcmp(compname, "g3a2")) return 39; + if (!strcmp(compname, "fo3_position")) return 40; + if (!strcmp(compname, "fo_chopper_3")) return 41; + if (!strcmp(compname, "g3b1")) return 42; + if (!strcmp(compname, "g4a1")) return 43; + if (!strcmp(compname, "monitor_2_position")) return 44; + if (!strcmp(compname, "g4a2")) return 45; + if (!strcmp(compname, "g4a3")) return 46; + if (!strcmp(compname, "fo4_position")) return 47; + if (!strcmp(compname, "fo_chopper_4")) return 48; + if (!strcmp(compname, "g4b1")) return 49; + if (!strcmp(compname, "g4b2")) return 50; + if (!strcmp(compname, "g4b3")) return 51; + if (!strcmp(compname, "g4b4")) return 52; + if (!strcmp(compname, "g4b5")) return 53; + if (!strcmp(compname, "g4b6")) return 54; + if (!strcmp(compname, "g5a1")) return 55; + if (!strcmp(compname, "fo5_position")) return 56; + if (!strcmp(compname, "fo_chopper_5")) return 57; + if (!strcmp(compname, "g5b1")) return 58; + if (!strcmp(compname, "g5b2")) return 59; + if (!strcmp(compname, "g5b3")) return 60; + if (!strcmp(compname, "g5b4")) return 61; + if (!strcmp(compname, "g5b5")) return 62; + if (!strcmp(compname, "g5b6")) return 63; + if (!strcmp(compname, "g6a1")) return 64; + if (!strcmp(compname, "g6a2")) return 65; + if (!strcmp(compname, "g6a3")) return 66; + if (!strcmp(compname, "guide_end")) return 67; + if (!strcmp(compname, "monitor_3_position")) return 68; + if (!strcmp(compname, "start_backend")) return 69; + if (!strcmp(compname, "optical_axis_backend")) return 70; + if (!strcmp(compname, "pinhole_2")) return 71; + if (!strcmp(compname, "graph")) return 72; + if (!strcmp(compname, "sample_monitor_arm")) return 73; + if (!strcmp(compname, "sample_PSD")) return 74; + if (!strcmp(compname, "profile_x")) return 75; + if (!strcmp(compname, "profile_y")) return 76; + if (!strcmp(compname, "wavelength")) return 77; + if (!strcmp(compname, "tof")) return 78; + if (!strcmp(compname, "wavelength_tof")) return 79; + if (!strcmp(compname, "sample_position")) return 80; + return -1; +} + +/* embedding file "metadata-r.c" */ + +/** --- Contents of metadata-r.c ---------------------------------------------------------------------------------- */ +// Created by Gregory Tucker, Data Management Software Centre, European Spallation Source ERIC on 07/07/23. +#ifndef MCCODE_NAME +#include "metadata-r.h" +#endif + +char * metadata_table_key_component(char* key){ + if (strlen(key) == 0) return NULL; + char sep[2] = ":\0"; // matches any number of repeated colons + // look for the separator in the provided key; strtok is allowed to modify the string, so copy it + char * tok = malloc((strlen(key) + 1) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) -- but we need to move the pointer + char * comp = malloc((1 + strlen(pch)) * sizeof(char)); + if (!comp) { + fprintf(stderr,"Error allocating comp\n"); + exit(-1); + } + strcpy(comp, pch); + if (tok) free(tok); + return comp; +} +char * metadata_table_key_literal(char * key){ + if (strlen(key) == 0) return NULL; + char sep[3] = ":\0"; + char * tok = malloc((strlen(key) + 1 ) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) + if (pch) pch = strtok(NULL, sep); // either NULL or the literal name + char * name = NULL; + if (pch) { + name = malloc((1 + strlen(pch)) * sizeof(char)); + if (!name) { + fprintf(stderr,"Error allocating name\n"); + exit(-1); + } + strcpy(name, pch); + } + if (tok) free(tok); + return name; +} +int metadata_table_defined(int no, metadata_table_t * tab, char * key){ + if (strlen(key) == 0){ + /* This is 0 instead of `no` independent of any wildcard-matching logic + * because a caller _already_ knows `no` and can verify + * that `key` is not "" at call-time. So returning `no` is useless. + */ + return 0; + } + char * comp = metadata_table_key_component(key); + char * name = metadata_table_key_literal(key); + // look through the table for the matching component and literal names + int number = 0; + for (int i=0; i 1) { + MPI_MASTER( + printf("Simulation '%s' (%s): running on %i nodes (master is '%s', MPI version %i.%i).\n", + instrument_name, instrument_source, mpi_node_count, mpi_node_name, MPI_VERSION, MPI_SUBVERSION); + ); + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per noe */ + } +#endif /* USE_MPI */ + +#ifdef OPENACC +#ifdef USE_MPI + int num_devices = acc_get_num_devices(acc_device_nvidia); + if(num_devices>0){ + int my_device = mpi_node_rank % num_devices; + acc_set_device_num( my_device, acc_device_nvidia ); + printf("Have found %d GPU devices on rank %d. Will use device %d.\n", num_devices, mpi_node_rank, my_device); + }else{ + printf("There was an issue probing acc_get_num_devices, fallback to host\n"); + acc_set_device_type( acc_device_host ); + } +#endif +#endif + + /* *** parse options ******************************************************* */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat = getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + instrument_exe = argv[0]; /* store the executable path */ + /* read simulation parameters and options */ + mcparseoptions(argc, argv); /* sets output dir and format */ + + +#ifdef USE_MPI + if (mpi_node_count > 1) { + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per node */ + } +#endif + + +/* *** install sig handler, but only once !! after parameters parsing ******* */ +#ifndef NOSIGNALS +#ifdef SIGQUIT + if (signal( SIGQUIT ,sighandler) == SIG_IGN) + signal( SIGQUIT,SIG_IGN); /* quit (ASCII FS) */ +#endif +#ifdef SIGABRT + if (signal( SIGABRT ,sighandler) == SIG_IGN) + signal( SIGABRT,SIG_IGN); /* used by abort, replace SIGIOT in the future */ +#endif +#ifdef SIGTERM + if (signal( SIGTERM ,sighandler) == SIG_IGN) + signal( SIGTERM,SIG_IGN); /* software termination signal from kill */ +#endif +#ifdef SIGUSR1 + if (signal( SIGUSR1 ,sighandler) == SIG_IGN) + signal( SIGUSR1,SIG_IGN); /* display simulation status */ +#endif +#ifdef SIGUSR2 + if (signal( SIGUSR2 ,sighandler) == SIG_IGN) + signal( SIGUSR2,SIG_IGN); +#endif +#ifdef SIGHUP + if (signal( SIGHUP ,sighandler) == SIG_IGN) + signal( SIGHUP,SIG_IGN); +#endif +#ifdef SIGILL + if (signal( SIGILL ,sighandler) == SIG_IGN) + signal( SIGILL,SIG_IGN); /* illegal instruction (not reset when caught) */ +#endif +#ifdef SIGFPE + if (signal( SIGFPE ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* floating point exception */ +#endif +#ifdef SIGBUS + if (signal( SIGBUS ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* bus error */ +#endif +#ifdef SIGSEGV + if (signal( SIGSEGV ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* segmentation violation */ +#endif +#endif /* !NOSIGNALS */ + + + // init executed by master/host + siminfo_init(NULL); /* open SIM */ + SIG_MESSAGE("[" __FILE__ "] main INITIALISE"); + init(); + + +#ifndef NOSIGNALS +#ifdef SIGINT + if (signal( SIGINT ,sighandler) == SIG_IGN) + signal( SIGINT,SIG_IGN); /* interrupt (rubout) only after INIT */ +#endif +#endif /* !NOSIGNALS */ + +/* ================ main particle generation/propagation loop ================ */ +#ifdef USE_MPI + /* sliced Ncount on each MPI node */ + mcncount = mpi_node_count > 1 ? + floor(mcncount / mpi_node_count) : + mcncount; /* number of rays per node */ +#endif + +// MT specific init, note that per-ray init is empty +#if RNG_ALG == 2 + mt_srandom(mcseed); +#endif + + +// main raytrace work loop +#ifndef FUNNEL + // legacy version + raytrace_all(mcncount, mcseed); +#else + MPI_MASTER( + // "funneled" version in which propagation is more parallelizable + printf("\nNOTE: CPU COMPONENT grammar activated:\n 1) \"FUNNEL\" raytrace algorithm enabled.\n 2) Any SPLIT's are dynamically allocated based on available buffer size. \n"); + ); + raytrace_all_funnel(mcncount, mcseed); +#endif + + +#ifdef USE_MPI + /* merge run_num from MPI nodes */ + if (mpi_node_count > 1) { + double mcrun_num_double = (double)mcrun_num; + mc_MPI_Sum(&mcrun_num_double, 1); + mcrun_num = (unsigned long long)mcrun_num_double; + } +#endif + + + // save/finally executed by master node/thread/host + finally(); + + +#ifdef USE_MPI + MPI_Finalize(); +#endif /* USE_MPI */ + + + return 0; +} /* mccode_main */ +/* End of file "mccode_main.c". */ + +/* end of generated C code ./ODIN_baseline.c */ diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.instr b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.instr new file mode 100644 index 0000000000..17fc71f099 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.instr @@ -0,0 +1,1022 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN_baseline +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN_baseline ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2 // 0: no choppers 1: BP 2: WFM +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap +%} + +USERVARS +%{ +double *t_offset; +double *p_trains; +int *alive_trains; +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + + +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE + +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE +EXTEND %{ +%} + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Origin + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0) +AT (0, 0, 0) RELATIVE Origin + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + + COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +// Start of finally for generated ODIN +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/image.dat b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/image.dat new file mode 100644 index 0000000000..06b087f760 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/image.dat @@ -0,0 +1,958 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_baseline.instr +# Ncount: 10000000 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: ODIN_baseline_10xMPI_1e8_seed_1000 +# Nodes: 10 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Date: Thu Feb 26 14:54:04 2026 (1772114044) +# type: array_2d(300, 300) +# Source: ODIN_baseline (ODIN_baseline.instr) +# component: sample_PSD +# position: 0.026 0 60.5 +# title: Intensity Position Position Monitor (Square) per bin +# Ncount: 100000000 +# filename: image.dat +# statistics: X0=-0.00439781; dX=0.0782353; Y0=-0.000502312; dY=0.0753274; +# signal: Min=0; Max=229228; Mean=10185.2; +# values: 9.16671e+08 5.03405e+06 100753 +# xvar: x +# yvar: y +# xlabel: x [m] +# ylabel: y [m] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.15 0.15 -0.15 0.15 +# variables: I I_err N +# Data [sample_PSD/image.dat] I: +0 29928.65484 0 0 0 115.3131925 15684.25881 0 0 0 1611.728347 0 2306.289121 748.381895 54920.55293 0 0 15651.75086 0 0 6952.341539 55401.87415 15596.74072 46962.32457 0 6816.21214 0 0 0 0 0 0 0 13475.89864 0 1511.94482 6290.169747 19233.64761 0 23040.36128 0 0 0 0 1634.497081 10074.63075 34.97150349 0 33.32737535 0 0 0 14836.45762 0 2044.402861 0 0 0 2534.716934 0 1752.741396 0 8315.233596 30518.48785 3871.469853 0 8216.336914 27906.06738 0 15224.18596 15509.96982 0 16854.4349 0 0 15598.50416 26230.67785 9288.86391 0 0 0 44832.11891 3836.294223 0 13325.70616 0 15421.05403 0 5501.450313 1036.216331 14988.42898 10265.59055 10.58517113 0 0 4321.324997 0 0 0 29639.49894 0 0 9515.631226 0 24234.80362 0 0 13630.61501 0 0 0 0 0 0 23948.08201 12773.50065 175.046822 35844.26558 2644.621315 0 21137.14749 5713.489405 0 3950.99601 0 0 6777.399984 0 45864.7338 1439.134351 0 7683.741565 0 3185.186467 2265.340437 11273.38396 18379.3903 5214.731494 11879.84925 0 62.50936998 0 36671.59761 0 12418.78029 379.5547785 3909.789484 0 17404.83539 35519.66096 0 0 1698.125379 5343.023199 8540.970185 0 0 64910.94809 0 0 7928.468505 8314.793103 0 0 0 8550.598541 0 0 0 7729.90734 138.7350069 10959.82282 1522.396765 0 126.8738846 0 11752.66823 0 0 0 14826.18361 0 0 0 6508.908735 0 46074.44764 0 4932.620729 4302.807742 45270.52822 0 118.8058623 1892.272793 0 178.6862225 60595.0775 24820.97497 0 9112.752942 5576.874625 8688.557142 3223.773214 6287.105221 0 4064.243135 29798.15946 0 50.54450002 6729.488009 239.4981389 2259.150991 0 6503.856353 7792.44003 28315.32243 3389.183783 2109.947836 7762.675836 1202.416447 0 0 0 0 1752.472752 0 197.0742622 0 0 4894.33902 0 8435.122403 0 5022.558922 3339.786566 4172.455715 0 243.9914881 0 0 213.8347254 17438.67079 0 0 8350.237611 0 13197.58463 0 0 0 60.16640825 0 11111.87218 0 0 0 0 0 0 4321.002621 0 3201.253107 0 0 3215.437035 0 0 201.6946324 0 0 2555.891718 11380.69157 0 0 182.9786714 0 0 655.3612173 0 0 0 0 0 0 0 0 0 0 0 2915.620662 0 0 2751.709909 0 18029.01008 0 8047.285057 0 53.81944018 0 +1768.891072 0 2155.116996 0 0 0 0 14551.35122 1454.473387 0 0 10721.61313 0 0 0 0 0 23618.40594 5738.717301 0 0 0 0 0 0 0 6240.994183 0 32294.68744 0 0 0 0 0 12965.759 0 7594.724399 0 208.375555 0 0 7453.60776 434.6374324 627.9925653 0 0 0 81282.81986 0 20120.82703 0 0 0 40972.64728 0 0 0 0 1094.148746 0 0 0 0 211.0534145 14340.23928 1847.903676 0 0 10792.28219 40.81697794 0 0 0 8220.104356 0 0 243.9287752 0 0 9282.073621 34.13582005 0 1573.302039 0 559.553297 23083.88026 6648.025607 0 0 0 1159.055369 0 6096.019351 3524.934267 7377.240669 5980.424075 31818.89384 805.2654454 0 19032.82237 42452.25857 2690.721752 678.3644533 36.23393788 1094.917692 37246.56982 51679.07366 0 59782.64831 31.04352049 0 1434.140684 11407.8318 1345.840288 0 34365.68931 1238.119639 15458.51164 3387.098528 8174.003599 0 0 40724.83177 1517.217963 5896.477869 0 0 2790.615779 28165.14452 0 0 0 10606.69927 3698.703255 4835.421896 0 0 3719.5731 0 0 0 2219.461255 22145.93293 40703.90705 51.41131321 2612.795317 14964.50974 18703.34337 0 0 0 17027.23563 0 0 0 0 0 0 2754.772359 0 1761.446078 0 4192.476296 6250.109655 186.5629212 508.7471148 0 117.1089001 0 83.91814417 0 51448.33359 29891.21972 0 0 0 9768.86583 3509.991635 3726.769364 2643.456953 2184.23633 0 9977.279004 17901.77239 64375.84829 0 34807.16816 0 0 0 0 9887.049666 0 1307.29208 3766.950877 2959.238588 12379.12927 1998.213237 4708.497962 0 21325.2279 1386.61253 0 0 9272.069043 50390.02994 0 5035.172532 0 0 2364.364675 0 0 190.1854163 0 0 19713.50152 28897.32387 4080.179218 8865.559069 6090.466748 0 41204.41152 0 0 6344.526115 0 6116.044116 0 0 44796.39267 0 0 15528.4034 0 1549.820563 0 0 0 0 0 0 0 2553.263364 0 3891.418866 39775.4843 30969.45445 3412.662371 0 0 0 0 5677.637464 0.2613297947 0 718.1103649 0 12428.72894 3534.321344 0 0 2029.898313 0 0 0 2187.046628 0 0 0 48386.84899 0 0 7093.42271 0 0 5503.304288 37463.66572 0 210.1008772 0 0 0 28859.62454 1397.271646 11198.10094 0 6703.327219 0 0 0 0 13216.42505 1691.504377 0 4288.493378 74.63008189 8571.698446 4.309480833 0 +203.9424592 0 0 0 0 8617.454033 0 0 0 0 0 20710.28167 0 0 0 5434.485175 0 0 0 2421.286749 11376.87642 98.97005905 0 84.6742222 0 0 0 0 0 736.0942647 0 0 0 0 0 103.9185213 0 0 0 24045.04941 12269.14976 0 416.2095447 0 0 0 0 22632.55893 0 0 0 0 0 20252.44355 616.2824748 0 0 406.1941133 0 388.3291868 8649.254036 4344.165675 0 14742.5663 0 3696.516828 82.22099544 9724.838695 6808.874652 0 833.5135658 0 0 0 0 1906.722868 0 3279.853317 6288.175276 20935.96826 0 0 58180.66697 1162.320269 0 0 15709.51213 0 0 4724.329266 2679.208967 0 14530.76854 0 12868.20271 0 1887.689613 14953.80806 0 0 0 0 0 28.70072956 0 0 4617.451008 37926.68687 7280.9632 0 12231.17643 0 8204.39653 35525.14543 0 0 65.72633038 15409.01825 0 3048.338144 0 0 3814.784044 59095.29054 7693.529733 0 5044.454086 0 0 8931.770801 4709.504178 0 4855.874807 12880.65059 0 40768.68449 0 0 0 24154.55632 27932.06921 0 0 2.27467983 14127.48917 0 3523.704897 0 44065.37444 0 1.888905409 0 65658.95344 0 828.3780755 0 13661.10324 0 0 18902.21374 0 0 38537.28722 915.0527234 19680.42844 0 0 0 0 87305.04605 50368.00292 0 0 0 0 0 0 0 0 5713.676809 8584.248051 0 42481.03066 33373.06928 0 0 0 2618.443552 0 18202.22088 27853.38117 5553.95821 63.59799877 15448.5809 6958.762228 4759.444747 4805.290152 0 168.6067302 7219.12787 0 0 21361.66335 8669.541904 13194.81456 0 275.3631382 18892.84227 0 0 0 0 19043.63363 3295.559023 379.1220135 23860.92688 0 0 21984.86325 0 13546.94514 0 0 12752.75869 20355.93041 0 0 0 0 12540.14192 0 3255.46373 24442.70562 0 0 699.6923204 0 0 50034.18786 0 1773.008491 3848.85402 3496.278678 0 0 0 0 1415.615566 161.2949161 0 0 35321.3341 0 1099.249287 0 5.401324305 0 2673.141636 0 3220.79258 3301.907215 2171.24807 9769.488337 0 8590.094651 0 2897.048057 0 0 0 0 0 0 0 241.8777617 0.9770374268 0 260.6880891 0 0 13098.59138 0 20140.45429 0 0 13862.30178 0 7890.12573 8305.28004 0 7658.03151 0 0 80.02837928 0 5017.596686 0 0 0 236.5401694 +0 0 0 0 2047.186231 12767.95828 0 0 0 0 0 7189.369614 21022.2757 0 0 0 37.17235917 0 0 0 0 1844.750352 0 2248.243981 1030.678853 0 0 231.4474974 0 0 0 0 2022.665222 421.4416838 0 0 1333.690239 0 0 0 0 8872.488614 828.7232674 16525.14236 0 5731.370988 0 0 0 0 0 5876.017399 0 0 1569.175784 24.93243133 0 17587.51881 1974.459673 0 34224.06131 0 0 0 25898.29972 0 0 0 124.4769695 0 0 14132.67423 5153.597255 2607.440978 18646.98974 3343.626727 2.409478444 0 8385.281476 11246.49438 63658.56321 0 1724.302366 35071.80491 11613.37305 0 8590.277809 10600.34011 0 0 0 0 1636.083252 0 0 0 58264.01015 4767.642119 0 31242.97763 1463.519448 0 13673.53309 62894.48499 0 2025.009513 0 15848.57968 12939.34546 0 0 18122.15357 0 0 105.843006 0 0 10.72596862 0 1366.130199 0 998.3935716 0 19399.15923 0 1410.121841 14306.36915 0 13178.10522 0 0 23796.94702 0 8772.4358 226.7270111 0 9072.893536 377.8962819 5313.88293 0 0 7638.06569 1028.278422 253.3033262 29909.7855 4181.644329 7821.100034 0 2797.225903 219.2683714 3707.963334 0 0 0 0 0 0 0 12442.53261 0 17.67396012 0 0 0 0 4806.132483 0 0 1008.839489 125.0570897 0 76867.5787 0.001452095482 338.7620499 0 0 0 3403.647805 32777.54087 0 24156.1669 0 0 0 4034.311764 0 0 0 0 64641.47419 4302.098939 0 9306.112873 33359.62826 0 7225.515902 11138.63056 0 40349.11227 0 0 0 3942.934917 0 1896.386162 29840.288 0 0 37210.41104 0 0 1646.226558 0 0 0 0 0 41.65846958 5272.687653 21562.13801 80086.72264 0 0 8617.180848 0 5712.705273 0 35122.93914 0 123.6775826 0 23905.56479 4584.971418 0 0 3544.21227 4958.433327 0 16111.14188 17067.44729 6127.900639 0 0 0 5261.936249 10820.91705 0 12018.39442 0 13166.63737 0 8288.138735 0 0 0 15589.78124 159.5345151 20141.56003 0 0 0 0.000660958841 523.8717987 1758.125547 0 25.77674558 1343.720628 50364.56069 0 1263.864504 0 7.597120391 72.18501254 1209.482671 0 0 0 0 0 0 0 12356.2092 0 0 366.6359759 0 0 0 0 10213.35748 0 0 2275.260939 7189.612198 141.3917081 142.0920414 18267.25001 0 0 0 +0 177.5913351 23.98104379 0 0 190.0899213 0 2066.609452 0 0 0 4477.429499 4918.053956 0 0 2978.980138 0 7029.84405 42523.53286 0 0 19433.20148 7884.611658 0 0 0 6587.602949 0 0 0 0 4510.971061 0 0 0 0 0 43079.74471 0 3689.423904 0 5.670233286 17776.07053 0 0 0 2994.37146 0 0 0 821.7904701 19492.46861 52.3666393 0 0 0 0 0 0 0 0 9267.826001 228.6376308 0 0 0 3529.324173 0 0 0 942.4844026 0 0 0 3747.643136 0 68.88555623 19320.06973 29117.31124 0 7011.223149 0 0 0 0 0 0 0 0 4755.034509 0 919.05058 0 45206.55249 67.78003341 73.43875802 10946.59367 1762.127271 2598.263554 0 0 6834.769935 1338.27871 2656.022594 55.11982537 43161.15269 0 0 1672.777717 6643.135121 3025.16127 0 0.0004838497738 0 812.1907919 0 0 6728.833514 0 65099.31482 35811.36481 16643.84487 14487.65149 0 21927.10181 0 0 0 0 48895.86628 1581.089092 706.4488244 0 0 0 734.6313105 18519.75619 15127.10188 1415.663397 0 507.1458385 3227.720921 22103.81454 0 0 0 19148.9138 0 35076.22751 0 0 7104.235334 6473.226532 7571.993306 5578.368721 0 7101.854709 0 0 0 0 0 7179.921567 0 0 0 1027.478378 30289.95974 5498.015083 2555.972953 2971.965584 2372.239915 48975.00814 0 13364.81024 28.18612612 499.777135 52.81275467 0 34.57583789 0 8587.579248 16354.24507 0 18738.54484 20108.89635 0 0 631.0278505 0 0 0 0 24508.06278 267.1145241 0 0 10924.92844 0 98544.16948 0 8014.566119 2310.87038 11408.45182 0 4674.699259 93752.9989 16292.66429 118.8941951 0 3795.095666 971.7328806 13218.09043 3415.797502 0 58.41501418 0 8454.636303 0 0 0 8434.912252 0 24669.07909 0 0 0 11196.81739 33116.29057 6444.108145 24743.88131 853.5527496 19137.70104 0 0 0 7944.825157 0 0 0.2642310388 0 0 0 0 0 0 4722.641245 196.1356073 0 5036.27059 206.9647708 19598.0804 229.6355711 392.1502321 0 0 0 14252.44389 16096.15272 0 19139.09686 3146.813525 0 5232.18757 63247.11626 0 12406.50889 0 0 0 863.3209199 4040.85297 2816.753779 0 4211.996406 332.6411139 0 0 0 8778.474898 0 323.1698302 0 0 0 0 0 3283.517719 0 0 0 0 0 0 7044.50081 44077.93325 2671.010627 19251.90836 0 0 +0 0 0 0 0 0 0 0 0 9909.998715 0 2509.90967 0 1684.367109 40.31412077 132.2701638 0 0 13547.83801 7202.174839 2122.267971 7451.283434 0 60.17343526 0 5443.640146 8885.29994 0 0 0 0 0 15.39677437 0 0 0 0 0 49025.67555 4284.008082 5.79925873e-11 15184.04429 4480.709544 38.03709023 0 0 11900.5727 0 0 0 58873.97687 0 1.344604054 0 127.3967039 0 430.7943235 0 0 0 6869.565159 0 0 0 847.6043857 443.9873896 71.16168254 0 0 4579.034142 0 0 22512.36563 0 0 0 1615.048561 0 28582.90625 39725.45124 1627.911663 0 0 10822.52007 2091.850048 0 0 30039.61811 1554.56689 0 51212.87626 0 4075.303676 1596.427979 0 5684.553362 0 332.5569611 12988.25716 0 0 2572.539641 268.4662601 3.140056769e-05 0 2503.900586 848.7313777 7765.551897 21962.39707 11434.30316 8816.089466 0 11116.78959 9368.704855 13826.51771 0 0 6601.935997 0 6567.329607 0 5211.194199 15320.12831 0 7901.641654 808.0339325 118.7730027 4910.820906 96.00347481 0 0 0 2212.592773 4285.53968 80.92852347 11515.11374 887.6636374 901.510074 1914.233353 0 0 0 0 0 0 4777.849836 0 0 0 0 0 0 5285.586783 27.36162621 4828.913415 0 0 2230.701817 42341.07882 0 39232.25229 0 0 212.3436782 0 12941.07117 20348.89981 2257.963906 0 0 0 0 0 0 14192.83394 1226.317808 0.004065746183 754.8296851 0 0 30554.66934 2676.964012 0 0 9090.429108 279.8926084 0 0 7328.689623 0 0 7532.984553 5217.494151 59.60338226 13303.68094 0 2898.024924 1389.544242 0 0 54.99211482 0 0 4403.217422 0 2765.965957 3382.834925 0 12548.07866 0 6844.285847 0 0 0 8726.293498 0 8668.814596 1.285235554e-14 0 0 1055.842461 0 717.117269 4692.986871 4730.129641 1517.235024 4416.066728 0 0.05307093661 0 0 0 11267.54278 0 36609.30732 0 0 14488.41397 7291.88218 171.2799865 0 0 0 0 0 0 0 0 3007.110622 0 7115.764268 0 0 2193.916761 0 0 0 6.753984919 2145.028971 5205.065962 4336.662763 0 0 77.04953825 29469.97029 0 0 0 1531.345559 0 9551.149735 3965.558481 20303.32906 0 0 0 0 0 1106.831294 0 0 0 5103.553971 2208.026506 0 22987.61503 25456.11858 27253.28112 41.34497532 0 101.3397093 1.158716016e-05 0 2207.610178 0 0 0 0 0 312.7209992 +0 0 18472.76501 2153.99386 0 588.7541908 5654.760247 16733.06925 4198.250925 1997.120522 0 115.3135628 0 17730.77309 0 0 7696.333309 2862.491408 0 0 0 0 0 0 0 0 9517.934428 4940.913104 36.61619286 79.2860332 8603.63876 4596.200364 0.4177707307 0 34132.17534 7558.195676 885.6785974 0 109.0793934 0 0 0 5016.319154 0 35484.86342 0 0 0 0 3901.287962 2305.856097 0 2549.852145 0 0 0 0 9280.89958 14303.52859 49.65349134 0 2974.630649 0 3237.154137 2211.098841 0 3030.520824 0 13328.90571 0 357.2708047 0 0 0 25925.71368 65171.57471 6497.580993 0 263.2676008 0 3072.3817 0 0 0 54.66539657 26013.20044 56212.92123 0 450.9020804 4700.931383 0 0 4927.869713 10.25060493 16759.5884 0 0 3989.60441 20583.76716 0 0 0 0 7862.458393 1572.952308 2502.089415 0 39560.30564 46819.72725 0.01223315912 1530.145086 0 1.301735696 0 0 0 1484.959287 1131.546626 0 2806.194897 27.95299672 0 0 0 0 0 0 0 2298.287885 0 0 36156.26866 0 9268.834448 0 0 0 1001.748643 19462.55826 0 0 0 0 3255.942865 0 4757.861161 0 3213.415123 56.26476106 0 1940.476848 8927.921689 271.0762835 1938.491858 0 0 754.6011352 37.72251679 0 0 0 0 31109.85586 0 0 18141.27371 284.4230533 12106.07534 0 0 14686.42562 38.88280474 0 0 4587.371075 0 105.7554551 0 27530.13709 0 0 545.3069895 232.1864626 0 0 4044.766312 0 11914.84273 21483.19875 11667.98984 0 0 2723.840221 0 247.9329013 0 0 0 0 0 6945.519701 2417.800262 0 0 0 796.0927914 2718.465691 0 0 6888.507697 0 604.4705531 0 38195.25453 0 24808.51131 0.3014679197 0 0 0 0 0 0 6783.558176 4867.077661 39.08305194 8795.571654 0 7741.828051 18231.52889 22591.51905 0 0 2692.424355 0 0 0 0 0 56.68029934 0 2228.819673 56.61170833 12214.82102 0 0 14603.86179 0 0 0 92.97266422 1647.169464 0 8826.227817 0 605.5095588 10586.12271 49.17021359 0 29875.44578 155.5390421 104.3344266 0 0 5341.33774 0 0 26362.93777 8418.275048 0 0 0 0 6090.819045 0 2720.797132 170.9322235 0 0 27.77641899 0 0 0 298.3185855 0 0 13489.94799 0 0 0 0 0 2897.935591 0 12756.00305 19489.89201 0 0 0 9426.477437 +0 0 0 0 188.2713513 12614.83979 0 0 1051.067228 38092.32531 43163.80004 0 0 0 0 0 152.8627701 0 0 12341.50841 1406.609082 0 0 0 51339.08892 21689.10336 0 0.08723908052 0 0 19529.15737 4128.798847 0 0 0 0 27309.74903 1384.378182 0 0 0 11775.83221 0 0 20140.23955 0 8021.911174 15677.48253 17970.0415 0 22742.84993 0 0 5350.687425 8386.068909 187.7219242 0 0 1540.944423 0 0 1276.176978 0 276.8579144 0 0 10901.42765 12698.35705 46074.92264 0 0.00761211925 0 16566.04913 0 0 29291.39049 810.4900559 0 0 0 0 6605.270739 2021.16009 0 10763.72602 61.44578202 13478.25604 1542.515558 1725.802136 7798.737868 9830.734889 0 16147.82424 0 48121.11877 0 3538.665428 0 0 0 5906.917466 3910.249392 0 6231.545945 8621.013627 267.6927173 7140.054041 36717.26563 31775.79073 1379.308158 0 0 0 6241.851228 0 0 0 0 0 0 0 11367.7209 36225.82952 65381.53021 12587.14005 34769.66378 3209.399152 2075.527454 0 16650.217 0 132.233187 10751.93044 280.4021893 80.65945004 0 1552.756062 0 0 8238.632018 16030.31147 2959.325077 0 0 0 4303.302363 0 0 0 0 0 4630.952304 0 13144.97327 0 0 1549.268056 7948.848466 0 0 0 11432.44889 5.253241534 8105.691961 7505.12561 0 8847.166766 1966.687728 135.7641508 0 0 0 0 0 8253.081374 0 3835.858663 594.1885315 0 0 2062.878259 687.5841352 3304.407443 52200.24369 7065.098 0 9547.537988 0 0 74.31255034 3120.698835 0 40553.76257 0 2318.285869 861.9425837 0 0 0 0 2594.736866 67167.16708 63671.86076 54.3698305 0 8985.101426 0 6560.814829 5658.163431 0 2617.938635 0 10959.80048 9326.358689 2292.104307 24649.84162 0 0 0 1528.923088 0 0 43.19212146 0 649.5967805 6176.006976 0 0 3669.029891 0 0 0 0 0 0 18951.11198 3886.645646 0 48054.78059 0 0 0 8.307666311e-08 3089.915593 0 2293.948763 0 0 0 0 159.5285176 0 0 0 0 0.2830780954 0 4286.877572 0 28.46370872 0 0 0 0 17083.58991 82602.67176 0 721.3651223 7426.628394 0 31611.16485 0 0 5608.354455 981.6373504 519.3176905 53324.69976 0 0 705.0742201 0 0 53.60253683 0 0 0 0 116.5915343 0 0 104.2839689 7865.51089 0 14489.09576 1119.993251 0 0.01394296833 0 0 18379.97205 +4540.265556 0 0 5091.076141 0 0 0 0 0 0 7327.556037 24675.21649 0 9935.365871 31424.2978 0 0 12263.2465 1580.582512 754.5790644 0 0 1.539319603e-06 634.0989895 542.682123 0 0 214.5866124 3122.154267 0 0 8632.272079 8604.92706 2425.443452 39494.75895 1313.65155 0 4934.183405 35.0753469 0 0 0 195.4080889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1552.557489 0 0 0 23736.27205 0 1823.958957 40958.40556 0 448.2826375 0 0 12182.35376 0 0 0 0 0 21512.01299 0 0 0 513.3118408 0 4275.543135 0 11662.52585 0 67319.48198 2315.6773 5285.205371 0 767.9923436 0 12539.72968 0 5090.426688 20296.81314 8639.04762 0 0 13894.89968 55781.29158 8926.772263 370.1315301 37824.53457 0 0 0 0 0 56853.29229 688.70299 15701.55493 7105.786766 1847.99866 2576.998359 8055.465452 37487.56788 24462.73486 0 0 1.333087988 139.7913131 0 0 0 1205.816038 36983.68225 0 0 7763.903317 10946.67701 0 0 1599.776562 96.18434238 0 48535.35944 0 43.64347268 31862.66062 36853.38227 0 0 3550.622902 57122.8748 2222.942255 0 1434.554927 0 11938.83682 456.1718979 0 0 261.2026974 0 1461.271537 0 12476.37547 0 115.7708505 0 0 1046.892925 24381.12441 5729.429424 150.3774256 0 0 28883.40201 25180.41675 0 11717.01988 0.06071696111 3559.947141 1435.388381 0 0 0 0 2442.656722 0 0 0 25.13162169 865.4721762 491.5172708 35926.67253 988.6261923 0.3525664739 48463.68609 7012.962997 28620.8965 0 3015.51375 3074.221916 10336.67449 4035.89448 1829.938586 11733.60896 0 0 6856.827913 2337.802767 22386.66211 0 0 3513.658968 0 51725.62821 0 1747.274874 0 0 0 33732.32359 45969.41089 0 0 0 10184.12631 0 0 0 2597.877095 6535.759442 926.0258638 776.7425442 42201.05885 0 0 0 7237.027155 20.12508873 0 132.6839913 0 0 8381.26343 1597.676151 0 78.72833733 6449.264054 4788.320061 4745.530857 2981.694765 3330.767381 0 0 0 31.06692772 0 0 0 1453.656215 0 0 8760.05119 15944.91487 0 0 0 0 0 0 48.95477182 0 7.504687773 270.4997765 26.95694868 203.743296 0 1723.52279 25018.68003 3748.214381 2326.781072 138.9278788 0 8452.277093 0 0 1160.668936 17237.16046 0 1368.041877 0 0 13820.84332 0 0 13507.65554 17040.02742 0 8353.516968 0 4510.232966 0 0 0 27228.10546 20.12675159 +926.5403897 18467.89138 0 0 0 4237.591906 0 0 0 9910.821743 5774.209875 86.078042 73773.72875 16296.43866 9595.475149 0 10852.79332 0 6989.751231 1.427327724e-05 0 0 0 0 0 0 14174.35752 13190.96242 42.57615616 0 0 0 0 0 0 15155.67678 0 48.70747593 531.2346034 4284.006283 11909.29282 0 0 0 0 10428.35354 49483.09854 4851.826823 0 17326.0346 0 0 5572.540315 2540.42461 0 8386.587208 0 0 0 0 375.7087289 1876.128345 0 0 62.61456782 2858.04364 0 0 1312.627927 0 0 5907.80924 4017.334376 52441.92648 263.8715573 0 0 0.01202818416 11666.40251 0 12326.33915 33131.68541 0 0 3974.356025 34519.00422 0 46.50464899 4218.902795 28012.17594 27865.66879 11471.4691 1657.060902 23714.01441 1118.720957 81.99885863 31182.30077 0 0 2725.996461 11361.79465 2534.871729 0 0 0 0 32825.27787 1354.615538 14.59188958 16037.83884 0 0 19261.95812 2441.064266 2153.985906 71210.81595 30087.92081 0 2564.952556 0 0 13177.07036 0 0 0 8838.214637 26388.97325 0 0 0 90.43928905 16283.60251 0 0 96.28756762 7845.552555 0 11642.7927 2.791955497e-05 1114.930579 19920.82905 0 0 0 0 0 0 4519.29619 238.3466372 3133.663978 3130.435437 0 0 41.03993705 0 1417.108607 0.001257009112 0 3595.0523 0 0 0 2212.260828 5265.549125 0 0 9247.891149 0 0 329.5044764 61699.69603 0 1395.590641 46190.39381 0 3125.887185 0 0 0 30866.51007 1993.519526 7771.281732 0 56543.86572 0 34800.21188 0 0 0 0 49569.26441 0 32321.17375 22844.70608 31250.68593 1274.568959 0 8892.575579 93.13731631 489.5755403 0 2086.975484 0 4695.187727 59921.33738 0 0 20827.23822 0 0 0 0 354.7504057 0 20852.82181 231.7333851 0 65385.04665 0 0 0 17563.80605 120.0940505 4081.304518 17695.82451 4065.666998 0 0 4034.100955 0 0 18572.06164 3058.543665 34063.98804 0 35553.20426 33.98153136 0 0 8619.886297 11031.41123 0 0 0 4532.134023 0 0 0 0 0 50873.16985 0 3.633746758 45575.92969 2896.01521 1921.973035 9022.027824 0 0 0 0 66.69278641 0 0 33111.15361 59.8639739 0 1671.828431 0 22946.28639 0 0 8458.471557 28804.75407 0 0 7760.913008 0 70.82224752 3812.727845 0 16280.65213 4564.285382 62159.62993 11177.93638 115.2864933 3.585697583 0 0 0 16252.02676 0 0 0 0 210.6570602 0 109.2950372 8993.855803 1870.819839 +0 0 12989.93252 9392.756186 0 0 2144.8357 12982.76886 0 0 44671.88921 0 105.0558241 18105.75872 0 741.6171617 807.7522741 0 0 0 0 316.9879393 3397.998024 0 372.6763114 0 0 42969.23629 0 1274.573998 3819.233149 43032.21637 0 0 38180.20681 6560.607306 66.70359743 138.8719797 0 12125.81655 24095.64375 0 0 0 15718.81186 260.3733497 1251.376539 7153.380148 9787.304605 1516.891656 4700.802848 9046.444429 1351.000803 0 0 0 0 5822.056081 12985.48945 0 43178.85549 0 0 891.3787948 0 4078.004401 0 26498.02421 0 0 0 13900.72557 0 612.4160649 0 2356.661154 12488.04933 0 0 0 4960.661904 0 2890.948539 0 5.14246318 8401.12003 0 0 144.827723 0 0 0 31851.89994 87.27535965 895.4918301 21029.23575 0 0 393.0348702 0 0 0 18.9946891 51165.74798 0 0 10141.99034 42467.03814 0 10517.15443 27559.69526 0 1636.349748 0 0 0 14385.12358 19942.98759 0 0 0 0 0 0 0 0 6486.051584 0 0 0 5771.854322 11601.9744 31387.50855 0 0 0 581.0084323 269.9155479 3983.749802 1660.079125 0 4531.778242 2832.901667 9694.862038 3792.455457 378.6114814 21599.58704 0 0 0 7172.976121 4595.582452 1146.696281 0 75.6220078 181.5413625 25059.08377 3546.877707 4027.427116 0 0 4955.923301 76.97037569 0 0 39942.90887 0 0 2560.495005 0 0 3479.572642 0 0 96.34090348 1383.950312 5918.500706 5673.340685 0 0 56086.45712 0.1989133686 296.877532 20490.0299 26.12639718 2563.480814 637.2405174 1715.694475 0 0 0 0 33643.36734 0 5332.218648 18455.06691 0 0 0 5.108371745 0 0 0 2119.20772 6216.906911 0 0 0 0 0 15544.59282 0 2927.990065 0 0 810.7313895 5816.93006 0 7385.654504 0 23078.86125 42286.37445 0 0 20840.03939 0 60335.08385 7749.690205 0 5043.255651 0 0 0 0 0 0 0 0 0 0 3622.408245 117.5186101 3340.070022 1505.847252 5647.966369 0 638.671974 0 0 0 0 0 0 0 0 0 8469.001822 106.9855469 2849.585897 0 0 0 5413.098444 0 19457.21173 0 0 0 0 7310.789484 0 0 30818.5019 0 2889.692755 0 0 0 0 0 0 8855.383988 0 7111.34737 0 0 0 1269.091826 0 0 0 0 0 0.2356919599 0 6392.968986 0 1757.280631 9.300474105 229.9526007 +6516.890721 0 0 0 9509.65825 26249.9344 1447.135616 0 6500.100318 5254.135455 1668.86426 0 0 9107.434885 8967.907266 0 0 0 2308.359644 0 0 0 40278.8867 0 1295.084974 0 0 0 44528.25216 0 7180.445883 0 5761.573339 0 0 0 0 0 0 22983.4111 2065.808308 16482.58029 0 30893.19698 8542.733512 1450.10464 0 28.4155156 0 349.6990127 0 1072.729116 13631.33942 0 2012.210732 0 9531.862785 2602.404381 0 24330.61372 187.0117784 0 2234.773015 0 0 0 55018.9524 4970.809067 0 6006.180703 31911.46067 3658.208774 0 21259.62371 0 22.79971861 0 0 12707.02931 0 8697.977544 4249.918003 346.4343748 4163.066857 7193.094923 0 0 0 2.627145875 27.61940848 57396.78385 6.294187515e-14 152.1309318 8518.375275 482.153394 0 0 37650.83617 11014.86768 9211.534698 8698.160374 10698.61469 0 7454.467047 0 50473.09471 34893.89385 0 0 327.5770089 0 0 0 23068.97709 0 9154.13027 16706.58469 0.003829525591 51054.45515 0 22107.06864 12956.03265 1509.371323 38339.28326 17990.29661 5953.137468 42654.04727 7472.386716 0 0 0 0 15816.43976 0 3169.603876 0 4350.197324 3018.815754 10354.81875 5.523381461e-07 0 52506.70302 0 16103.45583 0 0 4130.385186 0 5647.573422 892.8199613 0 46870.71226 213.5701468 8682.428429 0 1870.984583 10789.14003 41.21871012 899.420037 2774.836268 0 9254.379574 655.6631512 9933.250443 11055.65674 0 185.4741005 32634.63687 80.9245341 0 1830.099017 0 7849.08285 0 0 29644.97578 17334.50361 0 0 0 0 0 0 0 0 45431.08692 35440.36758 0 19093.3557 0 0 12775.14373 3399.519718 0 7542.4544 426.4241702 8236.41322 0 0 59379.69747 0 0 4018.9159 0 0 0 0 0 0 0 30766.8326 9106.811312 0 0 4273.036467 0 0 3276.36594 0 0 9176.685306 0 8456.420238 0 2336.350737 145.7838434 0 1676.555255 0 0 0 8971.756714 29940.0669 26777.59789 0 0 975.947785 3185.189236 0 36484.96956 9147.952217 2460.045573 0 981.1849631 0 3882.392061 0 0 0 0 0 11602.46906 0 3239.785352 3217.329913 0 36715.9697 0 0 0 416.2577435 2703.878305 0 0 0 0 0 0 2616.76326 3234.616333 80.73027644 351.7214859 9102.970463 7004.79508 0 4233.914063 18237.07587 0 0 0 0 0 0 0 0 26413.11376 14513.67535 124.6074893 0.00011473922 4814.391506 0 418.4531207 24343.38851 50938.61952 0 1057.749202 1965.373272 38326.99439 10158.56906 0 +9682.95541 893.8979958 0 0 0 0 113.1903328 0 2150.963848 20372.99857 0 4936.308466 3676.901622 0 0 142.534424 0 0 0 0 11779.89545 2510.434045 45080.23168 0 0 0 0 9904.954423 0 0 0 0 2554.645336 0 0 0 36687.91618 18810.99009 4116.881086 0 1084.757666 0 1573.356672 8974.890719 15543.24643 1426.420125 0 6231.956353 0 1221.136959 0 0 0 27600.89447 0 0 0 19598.81759 742.8690071 1833.279275 21860.92612 3668.271016 2232.631118 0 0 1656.292675 17825.17109 0 11135.87086 5999.099018 0 0 6548.568766 2211.774938 4016.631546 10090.95315 6130.981166 0 135.9888768 0 6366.904347 30509.06197 5.029806895e-11 167.9714017 0 2458.033523 0 0 0 0 0 0 0 34743.72493 4817.166353 0 0 46949.86791 55351.33725 70215.53785 0 0 0 0 0 2189.784446 0 22225.13579 0 0 23306.64033 56.67295574 8864.921818 663.0415526 0 0 18565.2281 720.8236642 924.5333924 0 0 0 4488.499436 39855.95758 0 0 0 3947.715391 225.5979456 0 0 3514.223734 233.2298612 0 610.2489301 0 124.9421739 7514.788811 0 7441.350305 4112.201998 4411.82436 310.7312685 0 1635.567754 1987.57928 0 4351.245212 0 0 0 14971.54391 793.8736963 0 4495.94694 0 0 0 0 2480.57343 24856.70499 20173.51604 27284.26103 20066.45126 0 0 25047.3906 9576.211194 175.5753242 6491.758063 0 7806.131192 5973.232341 20313.68931 16802.33545 12606.71004 22428.0023 3940.084674 0 161.3894891 1703.942563 0 0 0 6558.779242 4577.679199 15640.55535 0 7378.321617 2053.33422 3077.304008 0 340.1489538 2314.384835 2162.042596 0 2239.067361 6202.044089 0 0 0 2680.727477 5196.154531 0 29438.10648 0 178.4753956 986.1701631 17118.1696 1978.644053 0 3077.225147 20565.90135 27.60738894 0 0 14441.46199 4870.732456 41020.49942 0 0 29897.45547 0 0 969.3924184 364.1034142 149.5978233 0 56.33204348 0 2703.059743 0 0 0 7886.312225 0 0 22126.93201 0 0 0 3.725609464e-05 86.83569595 23075.59052 2210.861845 501.141946 1991.869691 6713.940183 7941.132375 0 1382.593833 1516.301451 0 408.8247938 0 0 16775.40317 0 241.8344602 0 0 206.3406081 3378.400761 0 7742.35806 7507.627214 0 28923.24244 0 0 0 22668.94841 0 1286.039862 0 0 0 1104.974674 167.3461077 8910.938528 0 12448.1997 5348.026374 25182.63345 6226.907706 0 0 0 278.7238681 3022.862682 0 11418.18748 0 0 8398.333447 0 730.0431513 348.5452985 50705.25827 31913.29053 +0 0 6562.855708 0 3662.898595 60886.00627 0 0 0 0 0 0 0 10725.75541 0 0 0 8970.895676 25.74074189 21755.53498 0 0 15366.27268 25.26653227 2646.432064 35432.60618 12155.58409 0 0 25378.0931 0 0 14565.63664 0 0 15360.08809 3628.469813 130.1526447 2731.408197 0 34760.08691 693.8882795 0 0 2959.77638 0 0 126.2541389 120.5417577 28918.43582 76.13991149 3522.882246 0 36507.22181 0 4046.842738 5619.286042 0 0 0 0 17256.5538 0 0 26993.99209 0 0 0 0 13286.04392 546.5777169 2056.791918 14691.08241 0 5383.052557 24635.41191 22061.6695 0 3351.988679 0 19534.12283 10215.35158 0 13442.50234 0 0 1922.375022 19135.10301 7.032384175e-17 8351.078548 0 0 0 20673.88656 1724.656203 0 341.0906703 0.09845695759 11045.7118 21770.56097 0 743.9707175 5683.630911 0 0 6294.183163 1925.976316 0 0 1232.759555 0 39754.02469 7336.065831 0 0 12009.11303 39803.31358 7380.101091 0 16428.31841 0 0 2224.8798 7821.288917 42.22252858 0 21058.72367 7399.097646 0 189.9676072 446.1760345 0 0 8925.680578 4894.647313 183.8563577 0 2180.851757 47270.11586 10837.30206 0 4898.808402 0 5535.463656 5016.245151 15163.64308 2302.34501 402.122372 1780.528954 2016.844428 1558.067574 0 0 4484.17931 7000.6364 2384.854349 0 6601.676088 18434.82973 4587.039282 14165.53055 50733.24254 3736.556474 3349.954124 16991.16628 3401.166515 5702.159663 4074.149828 8292.606442 5.091243297 0 0 23619.18609 26443.82604 0 0 541.45941 0 0 239.8191873 7526.973292 3942.081703 0 63.7255684 0 0 0 40.14505688 55.84090675 0 5308.993268 87641.5543 21.13247496 0 0 8198.711725 0 0 0 868.5670568 0 26932.07432 0 4882.304123 2143.253251 18534.51803 0 0 32.96624698 29784.05959 15200.76274 102.7538882 105.4286378 0 1244.729683 0 3373.097351 2778.384381 10100.57588 0 0 2330.587323 12996.08369 16659.48954 35622.81005 40743.61211 0 0 0 0 0 13695.22805 0 0 5.16518755 14893.92561 0 0 0 0 0 0 0 0 30791.15339 44900.78671 0 4801.170417 11.1315061 0 0 0 0 0 1819.116167 17720.59619 0 0 2038.147062 0 0 0 38.09801751 2931.076579 0 1323.731014 0 0 0 0 0 0 36.76517875 9792.816457 0 5443.394771 0 12913.54507 0 13276.96366 0 0 0 5445.101142 0 0 41525.1848 29883.65298 20142.6052 18062.71409 357.207036 1724.478823 23821.77738 0 40558.02834 0 893.2777401 43192.62973 0 0 +13416.09133 0 0 0 0 2310.96997 0 0 52.57247284 0 0 1034.999463 37907.1319 22035.25414 39961.43304 11126.7338 1236.189394 0 0 4532.887505 0 5312.570429 0 8687.812048 7709.700586 0 0 0 0 0 0 11859.48119 0 0 0 0 0 187.2460073 20058.09282 0 0 28150.28695 0 72661.9999 0 4126.80678 3901.622486 0 28983.30039 14697.9035 5706.888049 0 13627.81845 0 325.1238453 676.2911093 0 2995.933687 18417.86151 0 1237.089421 0 0 0 0 11680.43335 0 178.0164173 7328.655507 0 4.332301848 0 0 4736.770912 28302.89524 0 15941.04578 0 4366.464528 6044.108324 23648.06343 0 0 25176.35597 0 8603.60369 0 118.1336611 0 4291.851518 0 0 5851.129053 1423.174539 0 0 3515.420207 0 0 0 0 0 0 0 0 0 18508.31969 0 21699.74399 1575.249272 2395.505763 17436.29434 2357.277672 0 189.2425093 0 45678.38278 164.3989081 6206.518751 0 2261.609331 0 19809.02774 0 11023.79765 5683.7624 23129.71345 28510.61746 5795.561996 2300.265501 12396.72915 1676.754734 0 0 0 789.4755355 13878.87255 10702.98631 27244.07364 2546.993537 366.4192656 62250.74262 0 30516.06832 0 0 8950.776401 0 0 0 4605.984578 0 27551.75733 1587.099097 1111.043729 0 0 18802.41605 0 0 18867.64913 958.777474 36.17063442 2231.654125 6353.807317 0 0 0 50479.23439 1151.366818 117.0609431 0 0 0 0 1796.019067 31.54964725 8166.559373 0 0 0 0 1330.485425 3755.222963 0 2578.633301 0 8486.996123 0 2943.996784 248.3265427 0 17353.84885 49102.82941 1590.194602 0 8417.278156 0 0 3680.596535 22137.8944 0 0 1605.967676 0 18453.85525 3168.016474 1331.950954 2897.638177 0 0 23964.92878 0 0 0 27298.20209 2538.785177 4855.309192 0 0 65837.61072 1998.835599 3101.625998 421.626166 11847.88043 0 0 4594.044992 21000.82595 0 2624.19265 218.5067297 0 0 0 0 0 609.3881337 0 2452.959223 245.6392442 4924.278157 2419.037767 0 14328.19732 0 0 10243.96324 2850.478408 12.07438119 41.53696088 0 84.54454223 4246.345651 0 3629.058017 7150.763682 24466.68706 0 0 546.3348586 0 9348.93505 0 268.3695816 0 516.809451 0 0 0 0 9033.957013 235.1746466 0 4557.503515 352.4934171 0 16641.89436 19152.5156 0 0 3813.036999 0 14042.89187 50993.03349 0 0 588.9972967 42716.61711 0 0 765.7048776 41.90673437 0 0 17254.62672 0 0 328.7691192 0 +3840.686782 0 0 7179.256616 0 0 0 0 5594.102865 3793.570563 9323.729688 0 469.9619153 912.9285305 185.334204 2729.372157 0 0 58.79486876 0 0 0 0 2686.394488 0 0 0 0 0 0 0 0 24435.29009 0 0 0 0 2137.841542 54.45218344 476.637362 52347.99185 32839.8489 0 8819.637777 0 16711.86318 5065.87263 0 0.6070507796 1548.082741 3204.315428 5785.77281 0 4825.579458 0 0 9486.616101 9568.765794 0 58.60567147 0 11994.25076 1224.896252 0 111.5492788 22029.77457 0 0 0 0 27815.45913 20015.20945 0 1665.723625 6811.436941 0 7023.764408 0 30.57934104 0 0 568.1866804 989.4870362 21106.57439 21964.97741 40673.34343 0 0 40923.60034 20935.26161 31.8503487 23512.15036 1963.959654 6116.993113 26145.26005 21565.37124 0 176.1855773 0 0 0 20059.63255 0 0 23224.63328 4529.072139 12783.98721 21.37907982 43649.79615 0 0 5177.748391 30018.35162 38.27328586 51.0618135 0 0 0 0 0 47158.86646 3347.789794 0 0 117.9065282 41252.23923 2523.208512 65.26169394 10939.78152 6103.328176 3906.339643 0 0 0 67355.23039 161.9388244 0 18703.37947 0 59186.54089 0 2672.652842 0 0 0 0 4325.731363 157.1316982 2509.294697 0 0 0 39242.09893 38276.02154 9764.659009 1747.612886 0 0 0 19020.97084 1.72575221e-13 24.33042942 77332.83355 0 0 9421.36832 3275.003375 16886.07968 0 13884.24836 0 17334.68871 0 0 54807.10479 0 50023.5822 0 1062.682484 1614.356488 12249.16866 33971.69356 0 0 6040.946796 101.2180781 0 0 0 0 0 25710.87031 174.8430787 0 0 5022.993876 0 0 18269.59131 0 19220.5802 4090.291277 0 0 11910.74401 118.3501528 4387.958268 5305.305909 54680.43188 0 11715.39634 0 6200.564394 0 43.42829253 0 0 34283.52713 4336.869897 0 66130.52374 1824.756687 2583.899855 0 5565.797112 14499.39781 8901.923646 0 2391.368388 0 27.83890392 9281.119287 28523.3093 3671.484304 0 0 0 0 0 25094.92187 6603.847875 0 0 0 2180.047771 67.41733538 22384.9564 0 9618.906677 16622.54343 23401.0703 618.461536 55374.56812 0 1457.407392 0 0 3709.656547 43094.07358 0 0 0 5311.939422 1388.675315 2732.350643 0 0 0 24138.23629 6763.1122 0 14368.19653 0 0 14654.26004 3992.72522 0 1145.030124 3365.990254 10957.52929 0 0 298.5238062 0 0 8091.233215 0 0 0 45728.86088 0 14.4894988 0 1715.613305 5896.718526 1346.828314 0 7672.548293 2630.663214 0 +6609.91398 0 0 0 89276.59978 0 0 28740.46608 224.9774532 0 0 1569.926735 47099.36691 0 0 1955.020146 0 0 0 0 0 250.664856 20345.52228 4650.03811 240.3583924 29159.32417 0 0 29300.70183 13435.00384 4495.90364 1770.463287 0 0 15530.23634 16083.19554 1958.157081 0 0 1809.212619 46948.4733 40493.51438 16291.98552 24716.6666 0 0 1452.775361 3316.829239 41611.84005 28299.11506 13363.92119 3302.34516 9983.943673 0 0 0 2243.248812 80.22561897 0 0 0 3887.334334 1028.606464 14765.32 4030.102232 1204.550327 1546.238341 2337.320489 12283.03511 0 0 0 0 0 891.8792622 2507.126313 2841.710071 32.89096848 0 3876.871512 9035.464808 4426.10257 0 7.833219938 1981.80928 32.45714425 2768.655483 49927.72618 2407.273909 36.33555013 0 0 0 31386.82107 4182.218832 1919.429679 1556.196497 2531.87284 0 0 0 65.35503226 1181.756949 13489.87263 0 4322.987673 0 5414.936748 0 0 0 1254.868905 0 17512.98511 49.25667545 768.9299891 64.58819152 0 30472.88843 0 959.5349916 17889.52058 0 0 63883.6771 50803.02285 4416.066812 0 0 0 0 14962.71554 719.398095 0 268.4767208 2195.002703 1057.604749 0 0 0 0 890.8918531 0 0 13213.58914 22990.52182 6485.689135 0 0 0 5686.403216 0 205.2655079 23345.10943 0 0 6428.641824 0 6244.029748 0 3403.998334 3648.402116 0 266.1545422 0 1118.333264 1594.905487 0 5206.382279 0 2476.106321 0 6491.076038 0 28397.25617 45845.68696 0 8161.875358 21030.67444 0 0 49483.90062 0 0 1556.066977 0 0 2398.116995 0 7916.484661 0 0 8937.769393 0 0 0 0 21633.37149 30369.87587 23954.8491 0 0 0 18352.71197 0 0 0 0 0 0 0 0 0 0 0 7918.320327 42162.24186 2182.896396 39.48155193 890.8449926 0 0 2770.184282 0 0 42.77385023 16639.70223 1661.918115 0 3712.444895 277.8015719 0 0 1781.43606 852.4308902 0 0 24023.30385 0 10096.93309 0 0 1506.873891 0 0 0 0 0 70200.47038 597.0693758 17793.10217 0 53835.7683 0 0 26695.26025 0 0 28673.64254 0 0 31856.52595 0 2222.599699 0 0 0 915.5508821 0 0 40.44452011 9863.310129 0 1861.89598 0 38022.24765 0 0 29379.16734 0 6394.033084 0 0 0 6442.545233 0 8688.074921 0 0 10432.79672 10468.71658 0 0 0 40256.08022 0 0 0 0 0 +0 0 2155.980526 4901.968221 0 22578.65389 5404.37261 0 2267.900516 897.3169713 15583.97251 40905.89471 0 0 7776.007719 0 8495.236491 0 0 0 11321.32574 0 0 0 0 0 18794.4158 3360.200458 0 420.3254155 31317.96488 4105.713612 0 0 2132.698998 0 0 0 39.25898346 2681.254024 67.39701576 0 0 4212.581171 6733.545049 0 5186.836295 0 9882.995342 429.4332895 0 9187.416538 0 0 6790.204099 207.2240315 4114.451163 36209.21137 9381.222628 0 1681.891875 85244.77882 10338.27708 295.5513092 3183.247863 522.0281983 8179.862796 3239.774024 2078.751556 8533.515037 36975.49803 0 0 0 3912.216481 4067.264676 0.9080754155 0 0 0 32887.22993 0 2077.775709 27854.5423 5296.396276 0 17273.83397 21.88400838 0 0 0 0 818.9624777 0 2351.239831 3794.628567 3947.273547 3469.410151 0.7956214923 0 0 0 2434.647136 29.11585435 12419.67363 0 0 190.1342058 0 0 244.3795554 13858.30452 0 0 26140.78475 0 0 21731.97571 0 0 0 103166.2784 0 16114.48704 0 14917.92706 6293.37414 1199.785864 4646.872749 90690.73691 18.93799173 0 30238.38337 16472.26257 1.091021158 0 0.001501377763 13172.42883 0 0 0 0 28547.65523 351.0010591 0 14374.42537 68227.48649 0 0 0 0 0 0 4523.840582 0 0 2171.648367 3543.28629 582.0957332 29296.12244 0 58901.05545 0 0 0 753.1899511 0 0 3046.080463 21939.76585 15476.35971 17073.80707 0 0 3659.394084 16707.85196 0 4435.729111 2183.535894 3041.464382 0 0 18223.82898 3026.940681 0 4236.866142 128.8804715 153.7931696 2209.702636 0 24621.01091 5139.561734 0 0 0 16959.24932 434.1026055 3016.119562 0 0 52210.49626 227.3296871 177.9014898 0 2089.03598 0 16930.12375 0 0 2963.637428 226.1653662 6284.313171 0 4501.504051 85.98414758 0 21099.06279 0 0 45980.94523 27765.91946 15068.76463 0 0 0 19619.05248 0 12621.41829 0 0 2565.458919 0 0 0 0 17953.50797 1246.243755 0 1657.710402 0 0 0 0 0 0 0 10315.49908 0 0 0 7067.231455 10017.38625 512.7709132 0 1756.686445 0 41.91320264 0 0 0 41768.05095 0 0 169.9901271 0 4116.994248 18234.05117 0 0 0 0 0 0 0 0 0 0 4577.111355 307.4664855 14885.68527 42991.84864 4406.918753 23394.79829 0 27018.06097 2231.321125 2756.337821 0 0 4752.184922 0 0 42504.72723 1308.607863 6529.120527 0 0 1593.465945 0 0 +0 19770.8285 523.1015611 0 0 56417.77314 9579.306027 0 43.70138126 9194.634003 4677.673927 0 2550.86205 49084.49332 2517.590658 1570.66561 0 0 3385.732538 0 2985.667181 0 0 17463.83667 32933.54147 0 0 45553.35228 0 0 6875.934071 0 0 0 0 0 0 2848.423197 7394.107634 0 0 0 0 0 0 3353.311797 124.5556074 0 1895.275432 0 0 13668.02498 0 0 12167.78288 9331.184519 0 4488.401439 20886.70931 0 0 8145.646168 0 245.1068324 8834.625367 40939.46923 0 39877.75185 2799.791605 24779.43047 0 0 27099.42041 0 1611.639101 0 0.1796246949 0 0 7898.886482 49419.53833 36.26210443 0 0 27628.79496 1522.753204 12059.03068 0 0 0 0 0 41870.94521 523.5100582 27455.89306 10384.93218 1477.589244 0 54.83021382 0 0 0 0 119.9713349 0 6745.29343 0 0 0 0 0 0 426.7297099 0 3724.384893 8122.430945 20485.78152 0 1973.844629 2141.565358 207.0163696 0 34825.24144 0 16792.27266 16.98451658 0 0 0 0 3180.867988 0 0 0 3468.618964 42155.81888 2334.857089 2922.806219 2798.199648 231.1061794 15315.77181 1692.232125 19456.71729 45.11191577 0 0 0 0 5151.275105 0 0 39212.50413 0 7224.82115 0 0 29200.36369 1377.52199 3746.410075 0 28302.70137 0 0 0 7042.350733 142.029664 0 56694.8517 20535.34437 0 82.2747497 0 0 63468.68961 0 16445.00587 118.4279506 0 0 0 0 2513.77449 0 1859.149622 9555.918082 10564.47691 0 4449.922121 59443.23481 0 0 0 14798.87509 0 352.8634977 19268.00137 0 0 1743.080902 16213.46375 52.38867517 15359.3371 16441.40449 7354.986195 6943.39669 0 0 3921.4413 796.8251447 0 0 1712.000207 0 0 5657.631399 0 0 10917.62633 0 0 0 0 0 33938.86034 3649.224321 66947.06741 0 0 55.70598096 73.2777255 0 0 102.497899 20465.6927 21909.08047 0 0 1127.778194 0 4055.304025 3889.527708 0 0 0 0 21644.83951 0 0 0 13523.40872 9276.83648 0 0 0 67.50820114 0 404.107426 0 48.89887047 7905.834797 0 0 0 2970.213016 0 0 0 0 14869.94948 4771.52543 0 6273.042338 0 6839.536591 22681.7945 514.571161 4168.721657 10364.78816 0 16114.8052 0 0 0 16421.7341 0 249.2417308 2023.311262 0 0 0 96.47837638 0 1221.826441 39724.55432 0 0 0 0 4086.76341 0 +0 21379.15765 0 0 1251.823183 0 20890.83767 0 18677.31147 0 0 2478.498975 0 14381.09897 0 23229.68762 0 7622.489845 0 4589.744409 12203.24455 72.65839731 5245.599782 122939.1327 0 0 4816.484438 0 2479.470469 0 0 30768.87633 3028.787418 0 2001.683675 2227.736188 0 0 285.2664725 0 4583.115606 0 0 0 0 0 0 24097.90292 83.57488402 0 6187.900341 0 1360.063138 0 0 1028.540483 0 21331.25559 10668.87374 0 9878.139332 0 2679.383118 3236.417271 7545.569732 0 2762.194192 0 0 46526.75382 0 2508.585045 0 0 422.4680673 0 0 0 49649.49917 0 0 10110.41882 248.3677483 5772.391515 309.6132881 49596.366 0 425.2395616 0 24626.46762 0 0 0 2497.855432 703.0092475 973.8517178 0 1.341985756 19820.06158 0 0 2034.264034 2335.36135 0 0 0 0 920.486246 2348.124679 1779.174618 0 1065.104344 4801.920992 3086.267495 10616.68402 0 0 54632.09815 39470.74224 41126.50965 0 3205.584001 26.32175184 57.09007087 17493.50117 18308.58321 0 0 3674.888589 0 15281.85236 13645.59035 0 65085.73719 87.99042902 3447.578896 2517.460365 0 3593.144958 0 0 0 693.3945097 0 3821.337098 0 0 0 0.009417071867 0 14454.84667 1781.220133 2325.043922 4220.610067 7080.622523 43277.99472 2582.155002 6696.649755 0 8643.38875 0 780.6230086 1152.917289 13930.07764 0 16334.73472 0.382746216 0 1512.172957 0 2895.419318 733.7214374 17956.24881 0 34036.60348 0 351.5878177 0 46791.00106 71075.53977 2911.844616 0 1195.988939 38823.11955 0 4545.53986 0 14483.09187 26248.60321 255.8995604 14739.03489 37734.76235 0 0 7167.019064 1690.14996 266.2507932 0 25039.54796 0 0 996.2148367 0 66886.9489 0 9690.490281 0 5517.790461 55.19517722 37729.40892 0 7354.892989 0 0 56302.59234 0 0 343.6732816 0 0 3589.671635 2876.562375 0 4318.454027 0 0 4412.272258 0 23252.99169 7253.31534 0 873.4646743 42516.36012 0 1997.020957 0 0 0 0 0 2787.144547 0 9686.067105 6895.757682 0 0 1814.128964 4186.678188 3528.507031 0 0 0 22594.87733 7664.021382 8708.599525 2408.554876 0 0 2416.19837 15753.66476 0 17354.36909 26343.13934 0 0 0 5735.381417 55.03451107 15850.72745 0 0 0 5483.683484 0 0 13043.9592 7614.088588 2025.08341 20350.2157 0 2693.594763 5310.236093 0 310.6102383 0 0 0 12876.8961 39.12149492 0 0 0 0.3204361468 0 0 0 0 0 6285.335485 0 +0 0 0 0 0 0 5226.329223 0 466.4125725 0 29527.07804 460.0684378 0 3548.138473 0 78.89719946 25787.58693 458.8093102 0 44228.16089 9174.730628 0 8381.579479 3204.791519 0 0 0 41466.6085 0 2725.112983 0 0 4007.605805 0 29678.83428 31097.10362 0 0 0.3795598143 22463.2698 56197.59012 0 9596.595421 82933.50928 0 26690.0157 7998.749343 42705.23821 12807.39293 0 0 0 0 0 8001.185935 0 0 0 0 0 2068.554733 42809.72592 9394.767393 24170.17449 0 0 1396.139544 274.9844909 0 24979.55268 0 2806.962765 0 47607.67341 2374.907906 0 1531.232501 435.0692906 1708.432649 0 0 4116.52759 27028.45757 0 6886.308537 0 14970.60675 70624.9267 17618.12933 0 306.4498799 0 38191.80319 0 0 591.2006379 0 3515.549449 41857.49487 0 0 36750.79885 0.9685952404 4.251869067e-08 17936.16514 10403.74346 79120.25142 8340.300652 914.2772551 1113.878522 3.285865958e-08 33028.76875 11843.20776 0 0 16502.2612 6718.180366 0 0 0 0 9286.340959 0 1586.427687 17179.14866 0 30.90194375 20402.18296 0 0 0 819.2860496 194.4017433 4642.732036 9922.232684 0 11920.23018 1822.492352 0 7269.033152 15661.35072 0 0 0 1177.65442 13662.38593 0 11549.04908 0 2338.866131 15447.21679 101.6028047 0 1.024414031e-11 0 2344.266518 0 0 0 1806.764558 0 0.08464396429 0 0 2804.750935 6318.502353 0 3387.47101 2003.091295 0 1788.029258 4745.771905 4002.150973 38966.86229 0 0 4485.671911 3644.701257 3561.554104 20803.06437 339.4714471 0 0 70728.03447 11147.92901 5166.059845 272.0798928 1999.956273 0 6.496235181 2019.240294 5853.614819 7845.010954 3124.857843 813.153019 95.40610358 20344.02031 788.6721939 0 119.1064784 55264.43524 0 16572.71349 16688.39747 0 0 0 38843.43007 0 21938.56197 0 22804.1236 5116.902888 252.0270447 0 6643.115442 4156.14196 0 0 0 68.5929367 0 29234.17201 0 3594.40748 0 1318.55478 0 0 0 633.2926231 0 0 0 8557.507244 0 679.6225053 11829.96513 23173.45484 6594.110751 0 0 0 153.2769429 0 2466.759203 0 0 550.323372 2.868592122e-08 707.7942108 0 0 0 8.510008783e-07 622.7438117 0 0 56123.52938 14840.67144 26795.56783 20823.84099 0 0 641.7288078 4075.39262 0 11998.22392 0 0 4149.132546 1869.027493 0 0 10761.53708 0 1653.4185 3994.055037 0 101.0205576 0 25833.55774 25078.53369 651.6114104 0 0 2507.348895 0 0 213.9135436 0 0 0 0 0 2160.914342 0 6445.750871 0 23978.31932 +5522.549663 0 0 4887.455491 3705.959713 644.8492972 0 183.4065569 0 0 5328.933288 0 0 0 5371.615091 11532.83754 0 0 0 1603.397711 0 0 0 2464.632861 0 0 0 1.940925382e-05 0 41242.01462 37.70949605 0 310.419109 0 0 0 4103.728749 3940.405224 7588.471635 36757.50598 31908.77384 0 0 38463.38405 0 3051.246235 8476.544977 0 0 4065.23146 11166.67456 0 0 0 2501.562806 8038.068883 14099.83762 3819.251193 0 4136.21922 596.3974772 0 7850.067417 37039.06377 0 11137.99395 11384.04484 0 27425.62177 0 0 3680.281987 0 19719.9718 457.7379464 0 2827.808972 56808.01429 44491.25282 6466.22518 2170.945791 0 751.7413165 0 0 0 19967.12179 0 0 0 1533.291825 133.2422919 0 9043.915234 0 0 353.9704646 1.311506058e-05 0 0 44990.53463 0 0 213.0543263 1232.505329 2546.841742 0 0 0 0 0 15967.11125 6878.477275 28670.55682 0 4211.027814 1427.62031 8.44506245e-10 0 47930.10612 0 9472.781582 51620.70154 3790.863016 1006.633075 55601.46981 0 0 2041.324497 0 16.9436069 48360.38566 0 2320.877678 0 67.60776241 4946.091535 8925.208524 0 0 0 3800.312771 1651.024736 0 40911.47665 0 0 0 0 0 0 0 13649.7208 0 0 134.9084437 9070.645747 18887.5744 0 2652.706492 0 10643.94162 893.4073454 3724.630056 2019.580974 12079.18594 0 4548.290717 34039.17982 14665.42858 0 6947.588341 5824.051395 13072.18007 5289.005442 0 0 0 0 0 0 37916.84867 30835.77924 0 3203.503054 33320.29333 71.87287594 2124.269343 161.3623579 0 19194.76868 6279.145189 62006.63798 2520.052394 15217.31027 16941.80601 140.8400915 4350.556591 0 0 142.2470047 0 4236.474934 0 0 159.9746677 2838.496229 28.85871554 5089.535039 21461.77993 2375.519803 0 24644.20009 11325.70256 4679.708701 10100.81196 0 0 0 1541.347112 0 9536.786543 0 0 0 43700.78094 0 10473.62753 29050.87807 0 46532.70998 8513.328626 0 0 0 7205.782461 0 0 36.91054598 4176.968702 0.03958924109 1007.817597 3457.986614 1133.535144 0 3731.756195 0 2205.118509 4498.096687 0 0 1164.84466 0 65525.65717 3792.310563 10960.35885 29036.27872 0 0 4907.202174 19418.10881 0 52874.01497 2703.935263 0 4325.994373 1488.9726 20252.44071 18573.7716 305.4011794 1117.133987 350.5260714 0 0 65071.91568 53.1372916 0 0 11352.3368 0 0 0 4794.869742 0 31957.23053 0 0 4684.163754 0 14602.11376 40397.15841 0 6796.772459 0 0 0 0 0 44804.13026 9746.592684 +0 7678.780616 0 540.6965471 30375.06445 14807.15513 0 1383.757052 177.6120339 0 5467.554104 2618.167077 4580.841169 0 0 31565.55382 0 0 0 0 2380.318487 1985.125364 0 4314.864464 9485.063437 0 3281.053849 4216.391722 0 33954.8003 3.574383766e-16 9973.836557 15015.82743 0 294.1541757 0 7219.764703 14896.10186 0 0 0 0 1999.972889 0 0 1737.494281 0 337.6657408 7212.085086 0 4858.919556 38.23916875 12.82386367 5579.955021 0 0 0 0 0 0 0 31278.04588 5720.873587 1427.865865 0 0 0 17399.51943 44891.16772 0 0 7721.21163 3167.125128 0 349.2437675 946.9276815 0 0 0 16764.2779 4190.57699 0 0 19937.76273 0 0 31711.38624 0 0 40853.37859 24035.79286 5098.203797 11351.49083 14277.29655 1123.603007 0 849.7938878 504.8729411 13157.8688 0 10751.05561 3631.52626 1401.174679 0 0 28257.84448 1482.574938 4672.730543 0 0 0 510.6506716 0 0 0 4.075782597e-06 0 4575.995782 0 0 28631.92171 0 233.135759 0 0 62070.0921 25475.2523 9227.212034 419.9364422 0 31290.73664 5839.869228 0 52878.64044 0 0.1531804065 39188.85793 0 60.21324215 0 22316.00021 13036.29457 5516.241423 57749.44459 0 0 289.7372034 10647.71152 61655.21429 3874.98274 33260.25767 39408.22317 23495.08833 13.22793804 3222.902376 13608.46123 19223.58077 9300.873183 1639.818598 16428.5277 8967.400522 0 1226.133991 48266.32487 0 7630.735796 7163.77446 0.03405774799 6184.981213 38359.72814 3193.986584 0 0 46208.4714 0 64080.974 6156.954491 7189.604807 3957.985174 43210.89818 0 8304.320431 0 111.654855 44.24649951 40596.0048 0 0 9978.12233 0 10441.07008 9890.685782 10617.6601 0 0 0 0 6897.629471 0 0 3508.330438 22.94612463 0 44520.33527 5664.987197 3562.826609 0 0 0 19846.24933 9.608485646 0 16571.39484 0 15121.95068 0 979.8321115 0 12465.10423 9564.662669 0 18700.86245 39934.95044 0 40956.42372 3451.016166 0 200.6105514 0 10921.72115 8973.0559 0 5814.658167 0 1726.874072 0 0 0 0 1914.396827 15078.72924 408.849493 1193.9655 15332.08456 4368.553773 14522.50572 16139.72058 0 0 8050.577214 15536.7146 0 4375.658453 40830.87609 0 0 0 0 0 55363.32882 0 0 35.34958137 648.7807666 0 0 0 14209.67197 24513.83197 0 0 3598.095914 0 0 32710.6814 2624.898086 3022.878678 0 6088.758484 0 6233.233026 1562.958215 0 66428.80296 0 0 0 22728.95958 12267.62885 0 4649.49191 0 2609.105407 0 395.2176435 0 0 0 77.30567112 5124.362902 +0 0 2071.058904 0 0 100.2037993 1112.30965 0 37677.26302 14341.88924 1259.072079 12245.21221 13160.25846 0 4406.733307 7279.484644 39.53251543 7800.963553 0 3277.309351 2560.887845 7222.706162 1786.70767 36446.18543 5527.340468 3358.24303 2241.678896 2941.89542 0 25.66777761 23396.63993 1028.226846 677.668829 3557.884722 0 0 0 89959.20077 865.7146417 2790.721156 1886.787811 63.95669084 6017.343572 0 33408.08587 31070.86595 0 8332.963792 8276.999468 0 0 22110.3863 1782.652384 0 0 91.83925303 0 15528.62333 0 672.2036627 15187.67544 0 32896.45846 115.1640389 8224.06085 1979.707499 116.7655709 0 16265.50107 0 0 97.0636691 68.65746028 9228.050483 13469.60118 1460.904863 0 0 0 0 1530.032828 0 0 30472.52456 30402.19818 0 0 8508.3249 1229.635329 37617.10832 0 0 2957.48891 10090.00332 17697.72092 38994.85471 0 4030.235164 0 21507.53033 0 303.2172245 3059.499869 57001.15301 0 10840.89631 42796.09555 27209.49829 0 0 0 2498.832083 0 17921.5822 33389.97255 0 46916.20646 1463.810425 37585.17507 28101.88282 9995.265093 475.1808393 0 1587.000624 5170.933832 5869.702383 0 0 35.2280803 0 0 0 0 0 27529.54385 26887.41441 2989.787216 5146.097299 42140.20948 46441.81275 0 0 0 0 0 57685.29114 14872.13541 0 0 0 31435.84096 21331.64021 0 0 429.3262351 0.01696149008 0 0 1.25199407e-08 42730.24674 0 64121.21828 0 2292.153609 18778.43791 40382.57871 409.1342086 311.8581192 2222.431299 0 37336.22735 0 0 0 18203.43547 2759.286156 0 13557.07157 5646.078001 662.0888703 0 1813.728961 0 20884.89353 52514.33752 0 4483.725613 11598.42299 16782.90201 2.151521557e-08 3.86448874e-06 6875.021381 1974.662899 1517.497881 9679.850391 7389.080184 0 44961.2639 18335.76554 0 0 12005.43178 24249.50702 12576.86855 0 0 2685.661391 11883.19086 16559.46377 0 91374.95689 4870.744035 91.58890928 0 0 0 56325.13321 0 237.5071583 6527.328524 1352.406334 7711.808677 0 0 0 623.3646199 36043.99221 0 437.2592443 4731.03876 429.8802442 837.4193881 19548.9412 1598.552936 842.7740282 7018.307015 72375.05587 0 0 0 0 34275.14668 0 37463.09573 30042.91955 9919.184149 0 1061.38653 24.46282312 0 12447.06772 2880.434265 42.72258032 1.72085606e-12 0 0 0 111.4121509 4665.72077 0 0 4533.004974 0 13068.58519 0 1615.886378 342.2820553 0 14844.94234 0 0 0 0 8.77472799 2473.33843 0 0 120.462063 0 0 0 19634.29902 2878.829702 42955.07634 36540.19526 0 0 0 6598.668317 0 21126.74523 0 3270.450546 0 0 7642.13759 6830.625758 3322.634889 0 0 +5876.777475 0 17.16011876 17551.86686 0 33174.10526 0 0 0 54882.99161 435.3322606 0 961.8844159 1920.84208 46.22971849 0 1497.456451 0 0 0 2177.269112 290.497178 0 0 3250.723289 0 23901.85904 0 0 0 0 0 0 0 773.893653 0 0 0 0 15795.33596 186.5506473 0 0 14294.36336 205.7380758 190.5233907 7481.307254 7247.123391 0 42.98383083 0 5654.710142 0 0 2235.886188 0 4978.530348 0 1194.748509 0 2206.8706 0 13505.45991 0 20870.34046 5878.322908 257.8882413 25570.0476 0 0 0 0 8028.708993 0 10840.9581 3793.475784 0 4213.04801 21585.47994 7021.033538 0 0 10447.62364 0 7227.375776 21317.12119 0 15610.38253 1673.769918 2057.100858 5156.509577 0 29.02814203 0 719.0151726 214.3014397 20606.45794 0 6599.353017 5965.107989 0 33558.65172 41.66477593 315.3812 0 2282.649204 0 0 0 217.9920217 7246.147535 0 0 0 0 0 0 3795.82185 0 771.5694228 5503.534944 21769.78401 0 0 0 51846.77508 116.8971858 4272.079271 21392.83537 0 17962.54862 11633.25189 0 0 252.2827693 0 4259.980502 0 0 0 133.5330418 0 2665.54994 433.8361019 64.86259196 0 802.7727875 12610.50057 0 0 2561.310655 19546.82655 0 3417.741391 0 67102.72328 5931.219836 0 0 35794.45631 8082.061126 4140.701385 0 0 5151.032593 1097.938387 0 0 0 0 48.62011879 13989.62373 0 8846.074986 15705.15414 11929.15207 113.262391 55262.08468 0 209.4671268 43670.27739 196.6797586 13221.48597 1148.186405 1180.945996 1516.305397 68.71992136 5611.731556 2815.223459 0 0 0 1999.775942 0 128.0170941 4677.804151 0 0 0 9712.191469 40084.65909 0 5754.29458 0 0 0 14496.42861 444.1841797 0 0 1249.509851 3643.764023 3412.088289 0 94.9876161 0 0 6090.27104 1233.100246 0 0 0 41284.22141 39332.60509 0 25.8248645 0 2836.402929 0 0 180.2238006 0 3025.450155 0 13926.24689 38586.48848 0 0 8832.604473 7659.4072 0 0 4041.697883 12347.61904 743.1961376 1731.08265 0 0 1457.145927 0 0 5636.304922 4983.177826 23054.1869 4435.042003 0 0 1757.805162 0 0 0 177.1769486 0 105.7527021 1382.700611 8619.021129 6678.928221 0 0 21777.16757 0 704.775141 0 0 0 0 0 0 0 0 3.821313062 17202.22382 0 0 2307.716164 3840.271435 0 14217.70569 12.71612977 54772.90499 3827.585396 0 15309.64241 2284.239379 0 212.6589486 0 0 44098.94293 1021.834606 +0 0 205.4529199 3687.490609 0 1481.594705 1052.740175 4953.253984 26891.98524 0 0 8108.382386 36164.06324 0 0 4892.577048 0 0 0 13978.73608 15447.19369 0 2.032135036e-14 0 0 39.70077101 1665.126799 0 13533.67218 0 10337.37459 4454.074998 0 0 0 0 0 19076.32769 0 3840.387724 0 0 0 78517.12641 0 27389.91196 3846.514021 41645.93376 0 61220.12997 0 0 19.45238748 0 0 284.7786185 561.1142773 0 0 0 0 0 20648.66566 3900.778807 0 0 22555.43928 11774.85421 0 196.0778164 3484.899547 0 0 0 0 99811.54512 0 1697.81486 0 22486.97338 0 20097.54596 3446.260948 25132.04449 37347.60085 0 40904.74868 0 9335.052195 158.2876071 2322.448405 21524.28355 17491.47856 0 30204.62211 13667.07737 0 0 35417.47624 4520.391597 1167.788452 28063.67456 3332.948515 1391.045607 0 3239.680628 39550.49758 0 5903.231858 0 0 13981.1125 6429.266896 538.1593002 0 1544.578155 53710.08906 104.2145981 740.7221895 0 2919.942305 11940.46505 39.6902848 824.1822103 4934.850453 7902.087311 12899.12675 0 7728.047025 0 0 36342.77929 78862.19804 0 9304.396794 1785.138033 11392.43231 5947.186338 13381.93493 0 104.3902987 402.0777596 135.0209366 4060.426041 20672.87146 17.62919845 4158.59206 10883.8205 8697.380791 399.3867535 18714.87198 198.8192714 7252.331809 0 373.8716798 0 7824.026992 26.40779214 3801.196875 0 0 1967.117711 7062.880801 6559.309439 0 0 28.42675011 83778.38883 4228.061436 4742.128316 4178.42938 38041.66501 0 47989.7671 9695.971918 4533.773257 0 9558.587921 21373.00408 0 1960.548178 63506.85288 14625.31184 0 0 48.76546183 5398.422547 0 0 12433.01894 448.01631 11716.87366 36236.17247 0 2653.398901 11062.53755 0 2093.614876 11926.16808 4190.976982 0 37.83545766 0 0 0 0 3112.419903 0 0 0 3694.614971 0 9571.119809 4361.706706 0 0 0 31.14500168 12318.68403 5313.590792 30752.37024 0 0 0 41535.1969 5548.319034 17441.68068 35522.78789 0 0 0 0 28975.84633 554.0447633 0 0 9019.374171 0 7026.333163 9.256846949 0 0 0 1027.317109 6879.893632 65402.51277 0 0 0 12994.74867 0 0 30762.08328 0 6527.171771 105.0934225 0 0 0 0 14735.45395 1947.618181 0 5201.816193 0 18746.35764 4447.427683 0 0 0 0 0 0 794.4642473 0 5222.589985 26719.11056 29683.89232 13321.40021 267.2949192 8262.428166 2.941316974e-15 723.557302 0 0 2225.434471 125.6284186 0 0 7156.852653 7066.851548 6870.142013 3549.093509 470.7445618 0 34.29099894 40781.11976 0 45623.28037 0 +0 0 0 4467.642419 7296.089424 1686.432004 0 1785.789668 0 0 0 0 7175.964449 0 11096.62585 0 53703.30396 4504.634038 46414.19504 5152.220992 59061.03917 0 22967.42816 0 0 0 0 348.8995455 0 1528.810144 0 62120.61944 142.4082922 0 0 149.1314936 0 31206.00655 25216.42331 26896.79252 0 6656.249881 36278.23339 6776.770564 3400.707074 1959.678076 0 4195.178345 30919.06123 14161.33263 19446.83858 29430.99757 7169.505464 5142.964155 2526.709555 0 39464.44514 0 13369.81847 16782.6309 56.35587093 0 0 13374.49664 17853.24434 4057.774546 0 3836.472606 0 10270.97611 30193.91654 0 0 0 0 3824.243649 822.8008753 0 15988.31446 0.06869784825 0 42.77006764 3984.910964 0 0 1950.483335 0 3751.793129 0 41.32253786 0 0 28320.61429 0 11321.23809 0 0 0 11221.2029 18904.17307 304.5181499 5538.030272 6471.959185 16623.35915 1964.306922 0 0 72084.99284 0 0 103.5796182 0 0 528.5207395 6236.514682 0 0 726.121778 0 6783.184472 611.1433247 4454.410255 2151.369663 1041.303335 52.79714472 1786.635912 33.59160033 3610.621474 0 88525.31574 66.74798024 18292.68807 527.1175978 4469.027942 28958.13138 0 0 0 17859.74175 5946.78437 215.0392678 394.1687341 8787.114032 38.34393584 0 0 16042.98656 1132.305783 43772.26361 0 146.1349189 6332.334642 1615.468797 3754.023433 10117.00902 5242.697728 3761.119217 22841.1769 0 0 14606.3912 17954.8895 0 54434.35822 55012.28791 14229.34197 1272.767518 528.0042562 13159.5393 404.7007129 93.2728539 9654.895127 53140.02483 21502.59708 0 0 732.4469508 0 12188.36284 4420.9705 166.8692594 0 0 0 0 132.123106 0 7019.761753 13488.30372 10159.64527 16147.32121 0 16679.74941 16542.2194 1320.131234 0 578.6907728 1942.998128 0 0 5890.856305 0 56.53058611 4169.12984 19786.64313 0 3661.325046 0 0 4756.559303 3318.462584 333.6561906 18627.92424 0 11520.15204 0 0 106.6384981 13104.84148 0 0 0 0 0 0 0 0 0 0 20007.76577 0 0 0 0 0 1790.460569 9162.666226 0 0 1803.518112 2246.547298 131.3056607 0 0 0 0 0 39070.31397 1.997973608e-05 0 0 0 0 16427.90625 23752.33913 10430.30358 21335.89684 2370.950411 0 31851.26493 0 0 0 0 4858.662747 35797.72123 25907.15187 28352.41782 3484.951149 0 877.0201229 0 0 0 0 0 0 50.47522479 0 2635.630089 0 0 1221.396554 0 5537.047571 0 0 0 0 0 0 3305.61001 0 1552.833727 0 0 4388.241567 0 0 0 +0 4369.406637 0 0 0 0 182.3766918 1650.942687 269.6122753 0 2619.630696 950.2953108 25888.81684 0 7.233029968 0 35434.5061 0 38.59119959 0 0 0 5602.521895 0 0 21200.50804 37776.74204 8498.009156 4535.150873 0 19306.83318 0 40238.93387 7498.487274 0 0 9656.831387 5920.230656 0 3225.42523 234.0044488 0 0 0 19513.04034 0 0 3072.932668 0 0 110.2177151 0 0 23428.55545 23065.40279 0 0 0 2744.474787 85377.04779 578.0279227 64.43374024 28587.58191 0 19398.13783 0 1411.438554 0 0 0 0 33447.44569 0 13801.33383 0 861.2437077 2.421272072e-09 0 0 72748.53975 1794.921994 6617.940949 0 43951.47789 59675.85977 7355.986519 9083.165771 5255.645318 524.9965273 1813.776954 0 50496.98372 13085.01896 32742.49745 22911.06697 0 25628.50301 3462.192559 986.2174041 0 0 0 8439.020359 0 788.4411645 11839.88984 0 2802.764916 1063.479266 8389.458189 8430.032514 2386.213611 481.3521433 2323.463283 0 13995.72431 1829.796213 53480.69361 0 0 25081.91079 0 836.3116718 16780.81111 8475.068945 0 0 26931.46946 20894.28022 0 0 89620.62898 0 0 15372.77454 4513.482958 258.291688 0 0 833.1922322 94192.60209 0 0 4649.119713 317.5703036 5911.00691 7359.087785 0 0 21539.18399 0 10569.64078 585.6297849 0 0 9353.746575 9069.116989 0 0 0 0 424.3090006 0 4051.949029 0 0 33072.39072 27305.67458 0 1931.677761 17793.8436 1107.419474 2817.784769 0 7858.649962 0 0 8182.704524 1830.644373 16921.67743 1.979523753 0 20423.75379 0 35231.81311 0 413.3520137 0 53160.61282 6099.346955 0 5226.119576 0.006716638328 18632.50487 0 0 12690.27962 0 0 5079.349384 0 0 0 13408.67183 0 0 0 24.76330312 40.23787399 25322.975 6998.060473 0 46100.56716 5267.21703 31987.17267 931.3867619 0 0 32263.4097 0 1395.739642 0 292.0683541 13845.83793 4734.8217 0 23652.69325 16577.56454 12961.26767 0 0 1596.302278 0 0 0 34138.2986 8325.443823 0 12131.03684 17617.58123 22626.17251 0 0 0 0 1839.577052 0 4322.769198 0 0 29748.25597 0 13181.97094 36887.50997 13535.6195 1519.655234 0 0 1013.248094 15246.89443 16863.13613 19918.98206 1600.812003 38587.90746 0 0 0 0 18421.00838 0 0 2978.737164 0 0 2227.271483 0 0 339.7457672 0 34309.93969 0 0 0 0 0 0 5176.021459 0 0 0 891.3228709 18917.48126 0 0 139.021559 0 0 0 47425.94396 0 +1464.980773 0 0 6670.42615 790.8201751 0 17399.31579 72.95365619 0 0 0 0 2187.303496 0 31327.34272 3680.9135 0 21121.94076 0 0 0 1595.177025 0 866.549821 68.66295773 838.8380283 33415.58843 2695.206642 0 0 30904.15834 1150.914964 0 12312.28533 0 0 1993.161517 0 3292.374503 0 124.2516912 912.995694 0 3148.556785 0 1416.153841 1612.444942 4187.556456 0 988.5577107 7906.097065 8604.923685 4791.643414 13334.39836 0 0 1073.801958 0 5071.053968 0 0 0 2339.273276 0 0 1864.860447 10281.53492 2.56144853 0 0 0 0 0 3736.882835 14261.51542 0 0 0 733.7539861 10125.27135 28960.87912 0 10311.77279 9351.601707 2370.461427 0 13571.11895 0 6235.592856 13445.89441 0 32640.92878 109.3640968 29537.85778 0 12782.77196 0 0 51456.51817 3818.43325 24056.73144 3212.750175 69258.06516 0 1522.333459 3622.95893 13266.66176 0 10001.11603 10963.66489 61.27683979 10909.75108 13564.34167 0 40356.4569 0 0 18636.15685 3155.872565 0 34406.36821 0 25966.36792 21433.38713 20686.95769 0 18778.90406 896.4894264 1621.261056 0 0 0 38814.96887 10447.2624 57676.80644 0.05642614217 0 32536.48549 0 2896.242356 218.5454934 3.389447983e-05 37186.92073 43471.28642 0 0 0.0001342345636 13992.08797 13.85512357 4411.57943 7433.558868 698.458515 5447.732346 0 21785.10881 0 0 7266.803395 4578.643266 22044.53281 1208.069564 57710.04508 0 0 1026.35516 0 2022.532485 0 4418.16476 1339.192653 1930.821317 308.2254435 5258.300766 0 0 0 8974.165331 0 12755.97337 0.6091199996 0 0 42966.97523 2553.677982 0 60708.46422 4839.732489 0 165.3558851 0 62.12430293 0 8655.502001 24158.66073 0 1201.059998 94.14482154 20820.17605 3754.122119 4894.405148 15852.45675 42484.45723 0 7893.832309 33913.63194 0 2130.784225 22320.3256 74890.25101 0 5820.890373 9334.098367 0 62.38710051 0 678.382668 17455.83561 9412.776644 6274.833013 41313.8735 0 0 11323.72362 3603.160763 0 0 0 5839.542269 28809.55172 0 1917.097 1615.252399 0 716.3410141 89.2057533 0 0 1751.607888 430.6844861 91881.43905 0 4795.416449 0 7131.453252 0 938.8283665 0 0 0 2803.024579 807.6568877 1625.321728 4005.78144 0 8142.180203 0 12952.02983 3597.060176 0 0 0 29115.99636 0 1883.912813 26.29254878 27262.50929 0 5539.420051 0 26183.29918 417.0148917 0 2223.638543 0.7688305784 0 8614.043884 5855.900101 6164.236037 0 0 0 2732.31478 65.836599 44.03959794 2234.167461 10071.89259 848.3703833 42839.7874 0 2675.749612 11208.37458 0 0 0 0 0 40327.85967 0 5910.252206 12649.00579 +9171.453808 19094.78274 0 0 25033.60583 0 0 50.08301279 0 0 0 0 0 0 0 3506.744395 0 0 0 13.49178001 0 7629.1434 0 3812.618744 0 0 29969.61869 4189.66272 0 20.19338228 0 0.7198986931 10677.0434 2126.719396 21724.60898 9921.192548 4458.230381 1507.236233 33.33993729 11510.17047 24559.8165 10969.21268 36506.1803 0 3560.852145 1663.98741 0 0 0 34.69027586 422.7536121 0 1449.220327 8443.500959 16156.20196 0 4378.290852 6685.98763 0 0 0 713.7957074 0 98.38609331 46988.70503 3338.332386 9451.893077 0 20594.8064 16234.909 15316.73307 0 27.63251657 0 47377.54535 6322.754588 0 0 0 0 39059.39209 20039.78716 0 297.8326734 256.6052032 18537.64515 14919.91411 0 253.6015532 65125.21581 21885.97697 1467.83335 5156.034887 5608.34237 8538.557383 9229.983931 3617.854885 48678.19857 39.16450046 0 150.3670481 0 0 0 0 0 45.53353983 1411.51908 3754.754957 0 9613.434942 35719.76303 0 3744.321 687.089321 5814.045154 4442.587052 0 0.2765137835 0 2252.665516 12657.72879 0 30076.51812 0 2018.485532 0 0 0 0 0 0 0 21407.76715 0 0 0 0 63318.27869 6869.575971 4927.90509 0 0 0 177.0751863 4850.36311 21982.54448 7.491136478 4.866171221e-15 0 30.37699921 9260.435663 14508.01693 0 2473.859639 19975.214 13918.96316 2261.877204 3743.008343 0 1369.175858 248.403658 0 0 0 969.7491449 21743.11257 10246.89325 12728.55358 0 326.9001044 2890.862733 9607.813614 131.8226233 3410.028827 13089.16357 12432.52731 14751.55094 0 625.7726144 0 94.10260565 162.1487671 0 0 0 0 16808.90346 43632.31075 1159.523685 0 2381.384448 5161.732335 0 32880.77166 93.19003436 0 0 2992.528038 0 11119.48864 6.045484105 16895.31889 0 0 23377.79507 654.664365 0 5944.260929 5912.287543 0 23048.6744 0 0 0 3193.345395 0 7819.41278 0 0 0 0 0 4083.94478 466.7010704 0 22415.17488 42389.84021 6201.988297 9869.28773 23261.74753 0 0 624.2821861 689.5495691 3483.007135 3464.087272 0 3216.863692 0 17528.43122 7732.665917 122.5217654 3000.886639 0 0 0 2624.268606 38247.33823 0 8763.726319 0 1750.113683 71750.5672 0 87.71207834 0 23353.33034 0 5188.466492 23047.05037 0 10228.25175 0 203.6345952 20570.32603 6240.820312 0 0 0 0 2500.801932 0 0 35488.0742 330.4692894 14281.24982 9082.517059 32430.41025 0 102560.0981 0 11005.33702 2920.906709 0 2064.293877 5002.888766 3023.263101 875.4282396 18570.29966 0 0 10.42984053 1365.248439 2400.584538 207.7650511 0 57067.80968 8569.271124 1704.963381 +0 10425.67911 0 0 7642.146188 48564.94024 0 1482.357977 4445.075813 0 1379.791673 0 0 0 0 48303.67937 7136.366842 6797.530756 0 14693.7515 146.0181141 0 0 15242.07457 6612.548149 0 965.1932658 2756.428777 0 0 0 0 55778.5456 19896.79613 27610.97531 65.74773233 243.8973689 0 0 3580.344167 3236.345921 0 0 296.1380151 0 24166.85626 9302.700788 0 0 0 8470.601705 0 58177.99758 13829.49323 18750.59816 5049.664501 0 1250.373689 3579.532334 0 13524.85678 0 19860.33596 389.4794085 0 0 22502.16584 0 0 0 9915.73083 11004.15079 0 4769.222638 5104.513811 1636.140818 34069.49399 0 23339.03495 28537.1556 8924.438018 0 5458.795966 0 2858.995535 11214.60528 0 9472.15546 22421.5327 445.9058434 0 0 289.1899467 0 8181.652113 73412.58317 0 0 3756.584884 408.4453875 0 2174.975051 0 0 1365.182515 0 0 11523.36818 0 0.0001830832211 1319.786286 4696.985576 33369.51146 18833.09551 17521.3322 4505.031434 0 139.0099897 11048.05723 0 0 0 7968.530855 44284.31642 0 0 0 82.07122385 49.72201681 4603.61832 0 0 63.11160576 0 0 0 0 0 0 6777.096611 28946.33285 38866.82493 0 302.5011954 0 43509.46146 22226.60029 9245.270026 4636.626649 72785.98255 33591.66057 22181.30314 0 3601.827796 31311.12895 22536.63178 30537.22141 0 0 3884.873873 271.7288204 0 0 4953.096326 9338.81322 3146.533437 8043.715125 35517.87038 0 0 0 14495.08084 0 0 2340.277595 40381.29499 0 1773.636325 0 2632.350177 5510.602855 28670.92705 11940.51436 3512.269197 17267.21576 3674.13712 3492.835984 3477.169179 0 6799.704492 22530.3863 53713.80535 25659.4047 25731.72612 0 209.5004496 0.0001638473476 28311.34576 8389.560205 5045.758424 0 49584.22133 3981.932799 1206.539517 0.0164682597 1117.645576 27133.74044 7273.414834 7582.363808 1452.171045 0 0 13556.7235 28932.89635 7364.559433 338.9189622 0 38432.39461 1931.754867 0 3815.877197 21370.2736 3378.675038 0 0 10988.67727 0 135.329309 0 0 1874.391321 0 0 16936.18797 9032.574209 0 0 9013.941267 41402.43327 0 0 22249.76487 0 0 0 0 0 0 0 8126.472119 0 1441.23382 0 4249.325332 43873.09994 0 0 3030.440997 4253.329867 0 0 209.6947541 0 3205.645682 1353.225919 0 0 1962.671614 0 3843.349802 0 0 0 17496.46859 0 394.8071962 0 0 50.7370214 639.7517396 0 8669.417308 372.559051 0 43913.34903 0 9139.287783 1841.714075 1.484557435 0 0 0 0 0 23837.33579 0 0 0 0 3233.191701 +0 9971.717592 6448.016416 3676.732799 23148.92745 5332.257074 812.6081197 1444.878162 0 7817.344051 0 0 0 7908.196955 0 268.4763511 3559.895447 582.3713781 0 213.4422409 4876.443573 119132.7165 0 0 14682.85024 0 82.0997189 0 0 41171.07331 0 0 0 0 0 5012.322246 31101.67442 0 28055.62084 5914.600143 1261.677849 0 0 0 5249.835673 0 3403.240897 2904.698248 34319.73738 0 0 0.0003521712052 0 9880.047552 0 0 0 0 1871.50175 16175.26903 0 0 0 10743.24527 136301.9259 18497.14891 753.5366487 1147.951772 0 3074.385291 23277.32237 0 6481.89241 0 9100.965119 9364.40307 0 23150.91697 8610.567644 0 2183.050835 41192.65341 0 4987.186586 0 6656.231887 0 58.97513876 0 2437.16047 1707.583831 1544.966231 0 0 2705.141559 14307.86336 16712.12251 1632.224356 6076.422041 1947.856968 0 3877.128632 0 1503.87913 317.5155065 2267.681312 3893.528735 5645.047668 26719.35181 5465.547315 3675.194866 0 31151.58348 0 43671.96113 60235.85996 4375.868387 13064.49723 1209.008805 5218.096356 0 29008.16747 69.93276006 7554.397756 0 0 20373.79437 0 0 0 492.1956283 57.1604539 2221.857177 0 9349.894222 0 19969.04352 0 0 18701.04155 1606.934368 0 33359.84768 155.6750283 2779.3739 0 6318.844983 0 3054.935974 0 0 0.0002506739262 0 397.0998897 6734.704675 0 2283.930705 552.1421125 5905.056575 0 0 0 11395.57126 33048.74625 0 8902.838867 0 258.4879048 1.736561089 122.590591 123.0732661 13076.02462 2305.34567 1737.348437 22530.67997 0 25189.55834 0 1066.731759 276.1935975 1874.173901 58203.85237 48405.39413 37696.3613 6746.13286 0 1103.368982 0 0 41570.64005 56943.57235 0 27.17918928 3973.37105 0 16087.86096 0 19142.99536 72.87576937 1127.197317 5712.833293 3885.277021 0 2491.08707 182.6848215 0 3206.624846 0 0 190.5156989 9547.857438 66646.27356 0 0 8264.727227 2054.464171 474.1085695 4801.708306 15735.06189 0 9578.113142 8191.487968 1673.986158 896.6911258 0 0 0 0 15202.17606 14539.23556 0 0 0 4956.275261 0 1671.950637 0 5341.693861 0 295.8933049 0 0 0 0 20043.78423 7773.517899 57727.83936 31140.98934 0 0 301.526405 4464.519558 0.5152817463 0 0 0 5451.94991 29108.83824 0 0 0 0 0 4498.433963 0 0 0 0 0 2245.527663 0 0 0 7514.757993 34579.75875 0 0 0 2304.318062 31919.33409 0 6342.030121 32144.4577 0 0 53777.48148 0 0 0 0 0 1290.804132 32801.33179 106.6324197 1075.181357 1685.170691 0 15096.78781 1587.043854 2025.533653 +0 8690.249157 0 4760.159485 19.74695717 3.012028996e-06 0 2281.526004 16140.17893 0 103.5962381 0 12434.16995 36940.18309 43401.54705 0 6349.060938 0 0 0 0 1630.29269 0 0 21138.37881 16581.62921 17862.98929 0 0 362.2825154 1795.827795 9900.632719 2168.776243 0 0 0 9977.224899 4303.267853 0 234.9145673 29640.14134 0 14898.16314 0 101.8212159 0 55053.05779 45011.73658 0 0 42.35741796 3082.020063 31735.14382 58049.80045 31115.16453 614.1771558 0.001753006642 122.8239932 50153.13353 0 243.2469728 0 3536.678297 5015.271835 2085.982541 14221.45715 82690.67276 638.9464249 5110.204853 0 0 18716.24691 10885.23998 12504.12159 86.80087901 18794.3413 0 136.8882038 12098.76416 0 0 16.73876045 29774.89689 3375.491263 130.4632388 10272.52796 0 71214.49646 0 0 38823.10962 53436.54231 0 60783.58304 0 217.6697079 23241.78779 0 2054.469753 3060.460042 72884.14622 28889.32593 2247.133937 109.8300254 0 0 0 0 0 0 32762.88022 0 34530.62435 3.0936379e-16 6.505435123 0 24.26514428 35925.62884 21131.13219 240.3781676 0 3268.25809 20528.19465 4909.844076 0 48855.16082 22502.88228 42443.36927 65.03614653 49706.52738 7406.143884 391.5585166 0 845.7009995 4019.078173 359.6130255 54099.15837 17041.92676 0 0 171.1623228 9595.777312 2886.397478 0 0 23365.98689 0 30804.53125 1536.728044 0 15707.16517 5732.498234 1150.535174 4623.130115 1492.067603 7105.70915 50415.8312 0 0 0 44561.0455 0 390.1003792 0 3888.154223 0 0 0 2675.223678 9530.321577 0 53860.2822 0 14258.78026 0 0 471.7003631 2439.451736 145.9882954 0 491.4833703 27891.02906 76117.97383 6234.418968 0 0 22989.72527 0.2045592653 0 2350.223204 2390.648456 27375.21743 0 45998.3556 3706.243156 32541.27388 0 0 0 9150.491156 0 0 5432.140086 0 16479.67407 11061.04356 20142.57332 6474.421435 4779.316265 0 2461.01044 66.42885426 6175.885737 61812.13966 10155.02065 2121.60793 27204.1666 0 0 13187.91221 0 3639.401117 6922.709795 0 21130.75228 0 0 0 0 34053.54522 0 18491.37325 0 7425.244782 0 52998.56088 8212.603425 0 0 0 0 0 0 9764.838519 0 13640.16375 0 0.0001789188465 5562.277027 0 1730.317466 2522.006297 342.4713781 2727.979027 0 0 0 0 8147.689901 3354.582481 0 33474.04207 0 0 0 1489.651261 21183.72203 0 0 494.640842 0 24237.35894 15805.44307 0 0 186.5255772 0 0 2433.737217 201.0553454 1523.305783 0 0 1293.327136 58.81331014 0 0 0 0 24008.51912 0 3204.55444 11640.92265 0 0 246.5871567 1330.489373 17170.48088 0 137.7395876 +8155.053852 0 0 53.1435141 0 0 0 0 0 2287.250832 7048.157368 2853.785955 6031.227427 0 0 0 1909.500721 0 3716.000377 0 0 47640.61143 15863.53979 3551.237581 0 41385.24886 5521.984462 0 0 22757.07813 0 0 6693.021608 0 0 0 0 0 0 0 0 22478.69751 23789.81958 6828.384893 7623.663364 16569.15504 0 29034.07354 0 5593.235752 0 0 0 0 0 0 7702.69615 11062.44406 9226.676644 0 63.30965895 27740.45961 1311.044743 3.779084242e-13 3538.187047 12530.54045 0 0 946.1018515 0 0 23679.76848 257.5441867 2952.42071 20391.9314 5123.102094 5255.474188 5053.095833 1433.424601 87176.84601 10315.66742 3948.626546 5459.023675 0 0 0 0 0 0 0 59700.58316 15554.27043 0 0 0 0 61.10826477 12153.3615 0 0 0 5971.803137 20489.27503 0 62109.66911 0 9339.221106 30347.70149 0 0 56001.32059 5626.95313 0 0 0 25467.72048 0 1278.607365 0 0 69.78489151 0 45958.92488 20490.97255 28480.89811 2.292410703 0 0 2330.658694 16594.87782 0 1050.492134 1544.652939 39.7563294 408.2787803 0 2471.159526 0 0 44119.51181 115.6033363 3088.581386 254.894055 319.4585294 29016.9574 1371.480898 28383.95067 0 0 0 0 0 4843.539124 0 60053.23081 0 3914.505419 93.65901558 32149.39682 0 15121.19962 113.2757646 0 0 0 1634.903781 0 0 38.65835509 13472.18692 96.36226718 5555.174628 0 0 0 0 167.4827216 2865.027337 0 143.0783447 276.6973705 16991.80379 0 538.4192627 7771.86935 6628.522991 2476.35881 0 16673.67945 0 0 13225.35615 24854.0222 1130.747394 0 2758.424856 12661.34678 57059.32492 0 6189.415137 37094.21605 4808.016396 5681.674636 1351.508922 0 0 6116.101172 7079.432861 1867.679633 0 35827.79738 0 0 0 10039.3511 0 8696.790602 47692.36064 3267.225753 0 4314.884526 0 788.1370659 2999.665143 2050.368552 26983.29971 754.0853566 4445.244768 1402.91614 85.74092808 9607.249971 0 3741.954553 0 0 2611.247603 6746.287356 0 4074.382224 2229.10489 0 1915.340123 0 16.21323824 0 36459.86928 0 0 0 32475.3115 0 0 0 63.06154657 6858.564227 0 0 1001.047592 20105.10275 4064.163783 14236.05536 0 0 0 38.73507591 6716.297623 20129.2388 0 95.503621 0 0 0 0 8.645644624e-20 0 333.855872 0 0 0 0 21.12877253 0 0 15889.1512 0 0 1265.481526 0 0 0 9487.889919 36655.69869 0 0 0 0 0 7290.067768 0 8717.652505 +0 0 0 23291.02421 0 0 0 30767.81089 0 21875.91807 0 3594.194978 0 0 44668.98003 0 0 0 6630.303728 14619.41782 0 0 5549.487934 0 0 11368.38783 53326.52901 0 2769.00012 4.549177969e-09 0 21130.62225 0 276.0859577 0 0 4080.443956 391.923238 0 0 0 145.943548 0 5036.325468 19820.58483 0 0 0 0 37813.80757 0 3275.257951 0 281.4035795 10273.19311 0 6452.543766 0 57983.52862 0 0 5012.371228 134.3136146 0 239.6552104 13420.54991 24994.24094 0 1317.806933 461.2544918 627.3478299 0 3825.189945 2157.085144 0 2525.02203 0 31172.25592 36131.39883 0 0 11687.57983 370.5970973 0 4645.597577 0 6547.155882 10527.41047 0 2087.221653 22216.83704 0 2328.000435 66888.68446 8862.961992 0 3758.83955 8439.881501 0 3507.289439 62974.81246 16958.23727 0 0 9056.823791 0 908.7129749 11433.54498 143.8377729 59029.87538 0 216.2679091 1921.128216 12439.69554 21179.80228 4279.512404 7778.219953 9365.94244 0 8459.182247 0 66571.24197 28708.67745 0 0 48385.85002 16794.74374 0 174.2461433 15472.81778 10546.68966 17998.49987 0 0 18345.97979 0 55.24292789 0 16276.73931 45521.68111 72300.08481 0 0 34953.11515 0 0 0 1172.770565 9469.380739 2367.673723 1053.380832 6157.541376 0 0 5887.385381 11534.81962 0 16351.20015 5127.603672 23815.18204 29228.60898 2395.101948 18.34837773 37108.88005 0 4218.257504 60.08416196 2169.063255 0 0 4238.846262 51503.82557 0 0 0 0 33541.93726 51781.29404 7375.401226 9664.940794 16985.32612 766.4815753 0 0 13.99638238 0 0 16830.44616 0.07456730251 1316.39497 2717.205684 32793.10707 0 0 28230.75038 0 0 7481.533608 39533.5879 0 1581.972907 12484.99964 14668.07346 0 0 0 127.138971 0 3017.348814 0 0 0 11460.7289 0 0 10558.67025 0 0 1874.106801 23482.07801 6305.647775 0 1336.756284 8210.789308 0 0 13079.77006 0 0 681.9177787 2303.207832 30822.12636 0 0 0 0 0 332.7532477 0 4438.678057 0 0 88.10210249 1615.74913 65280.52134 0 19440.75889 0 42210.18999 26892.61381 0 246.3660012 19009.19873 0 0 0 0 250.6633066 326.8999495 0 569.7682975 0 4538.733247 0 6326.826878 5583.896541 677.4221676 1022.613601 1275.645011 0 34.12180063 0 0 0 2643.232744 10204.4795 0 0 0 0 12134.86564 0 0 9172.799599 5043.942572 0 0 0 0 0 47.10601902 0 27239.88565 454.289181 3599.894016 0 23915.01794 7264.389944 0 0 +3060.035212 0 1476.931837 2101.496963 0 0 8343.37446 6477.072622 0 0 0 3166.848251 0 0 0 0 4862.299057 0 0 2356.514602 10810.27846 153.5232729 5385.928694 7281.617598 0 0 0 951.7535537 0 2998.792789 6401.23582 0 8798.753066 0 3094.33225 0 15258.1629 2044.220839 0 1129.170439 0 0 0 0 10283.48689 0 5486.07748 0 0 14719.90443 11379.27 0 46572.05672 0 35988.934 6591.801911 1714.02361 0 0 3182.966312 0 2481.665766 7379.031371 0 1302.233432 0 0 15153.28186 0 27168.86293 17227.92828 15086.11958 0 0 32722.46534 0 56.55726993 0 11116.13642 70073.7943 0 1322.610381 0 161.031649 0 47143.28477 5962.760434 0 17690.07742 0 1791.608262 7585.600554 63.61760873 23414.18049 0 9821.824769 0 42680.59076 38731.9032 53113.48081 0 35503.34959 0 0 2581.019112 6985.755851 4202.037658 30288.96411 1652.717828 3567.917141 6301.444501 142.3716138 0 1657.232741 7.356712523e-12 6458.273556 35261.59113 3009.778817 5928.863788 7425.140535 10557.58249 10522.04336 0 4258.727048 4187.730366 2895.335414 1405.502194 0 0 33613.70088 67353.04099 13964.30564 0.5908309284 3297.169197 18099.20508 9122.402971 7325.12249 0 201.5418494 37198.95373 0 2238.093369 7928.624029 30789.90543 20272.43936 5873.182722 122.5974123 0 31741.78862 1274.112718 249.0960859 0 17823.05318 1690.953749 58603.34649 272.524709 13225.74471 17015.81055 10373.21779 0 15906.99772 52060.03305 375.6279331 3855.972675 5925.662554 51.20441748 1266.027233 3303.888099 25783.64739 1835.811919 3708.692596 28504.28644 7650.387632 148685.8597 33092.99478 23291.80389 72624.42016 2012.817249 1638.973295 4681.634243 86868.20492 0 0 2370.902153 8593.444115 0 191.8025421 0 0 14555.05094 51558.30461 19248.84632 0 0 0 22743.51475 0 0 9466.995852 0 0 264.7933908 0 8869.556489 0 5979.757269 0 1367.762473 31869.72279 3244.19517 4055.972355 0 0 0 17171.49968 3395.425047 0 0 4817.914719 6069.81497 0 0 0 3039.278819 1.289312595 0 7740.710178 0 17578.39416 0 1087.371758 0 0 2544.862789 36160.77874 0 0 41084.32776 52055.47641 53768.5365 112.5125872 0 0 3676.995134 646.919823 6034.923589 49154.21251 12412.26308 1215.528373 0 9494.210403 0 11794.13495 0 21755.6736 2831.538844 0 62.63050794 876.90989 7111.975412 0 0 20233.53937 39.50480317 0 4320.752251 0 0 11407.264 17005.08234 0 0 0 9474.513027 0 24.51279123 0 0 0 59127.67072 3341.904282 0 934.5324847 14843.55901 0 12907.88964 76.73366416 0 741.5256229 0 4963.206247 3532.399374 0 79.92784543 0 0 3708.743448 8816.733928 0 0 +47331.12682 4041.391064 29101.74261 3446.301526 0 4156.248243 0 0 0 3427.307382 0 0 79.53053881 0 0 231.4180848 0 0 0 20931.75025 0 0 0 0 4.012353356 15909.19772 0 37.19502386 42.28146889 0 0 0 17196.12117 6892.470863 1893.239404 256.5029335 817.8428708 0 5871.382939 29151.43066 0 0 0 0 0 89898.24243 0 2363.916511 452.9173232 0 43674.04038 0 0 6461.226493 0 21095.00519 0 4033.900486 1438.371845 0 0 7430.6552 0 0 0 55900.38655 24058.73615 3809.465243 24665.0471 112006.4442 3991.27765 30137.26491 331.2015645 0 0 0 7928.219674 1785.417694 58314.95607 18.17946185 0 7651.422485 35953.54111 17250.07183 0 10238.60059 9938.707498 24292.25823 1431.013573 1687.004419 297.5198853 2217.941264 0 0 10729.45195 11485.7938 2377.945728 0 0 6610.51598 271.1184599 4298.900461 120.1649905 0 8518.5857 789.0075587 205.6678855 0 4272.442788 1017.251431 8213.670061 0 15389.52244 11089.1719 1770.226574 0 4658.376913 0 2215.403277 11569.77516 0 23128.24927 4902.971801 9123.736709 68.0528448 7.974618698 48.45250029 9433.995655 0 444.5565322 7135.818329 0 3562.675947 3802.147434 6396.08832 0 646.8744002 8534.160817 0 59608.45946 0 44.83505573 1700.981797 0 1059.654311 2175.706855 0 0 3879.827812 0 575.7800953 0 0 25999.45645 0 3129.868198 1014.86872 581.6774902 20786.69647 12319.80473 100131.2686 0 0 3081.002656 0 6961.403804 2251.250732 0 0 1474.534112 8678.247242 22626.71507 60378.36294 0 1466.352522 0 0 9244.725156 0 0 25420.77338 45032.92604 14309.12271 0 41698.74498 2545.964275 10961.48907 2678.90052 0 0 0 28525.21714 47851.32404 31571.91621 9554.381325 21150.02387 1054.928016 26616.08931 4665.976447 7926.736905 51070.08151 0 3787.589528 0 15076.9244 75545.7368 7337.951177 0 0 0 0 0 5070.966055 32145.23589 21860.20405 13271.16307 2495.02044 19413.76963 1617.502517 18361.30762 0 76.32093335 35205.43215 10125.72107 0 3954.894107 30670.70803 0 0 0 18744.90801 0 0 8892.878594 0 923.426816 0 16651.60484 0 17816.28275 15583.20594 5955.150743 0 229.0435439 6006.699162 26180.81557 661.4115819 61.55534394 46.63508837 41264.4927 0 176.2150108 0 0 209.8443948 0 0 6315.551229 46619.99562 32559.40947 0 3124.640238 7319.316089 0 2348.875543 0 0 35953.93345 0 0 14344.36933 0.1376258197 1627.154401 0.7923826597 4212.728845 1497.096757 0 11412.93878 10426.59394 194.2489869 12073.95217 11889.694 238.3163618 0 0 0 0.005058877141 0 0 250.21104 306.842349 0 0 0 0 7555.421575 1563.550937 57380.63697 4270.667592 0 +12991.57123 5289.975128 0 3442.183529 1797.660876 4218.60406 0 0 0 1237.732784 0 10915.29169 4479.681844 1001.768266 516.027733 1826.817053 0 22881.1028 473.9689887 0 787.2315405 0 0 2520.11271 12204.02243 0 0 0 7062.801873 0 0 285.6632067 0 21469.94124 0 0 169.3297807 0 66960.89604 0 0 2076.766656 0 0 0 0 53627.56331 0 0 0 2398.986142 0 0 71745.53433 91945.83614 0 0 32729.95614 0 29357.54333 0 612.6698498 0 27613.09277 3415.590647 54830.80254 0 0 165.6917501 0 698.1893372 51112.04744 9580.188519 2624.913177 0 0 0 0 15394.14445 26312.05964 0 7490.994522 9.496023486 3934.84073 0 0 2872.25883 87414.73481 0 28654.42161 440.807922 1281.365624 2156.193456 3924.355512 241.7718844 0 0 16786.74377 11623.9051 12452.74675 0 17235.90983 88.75227058 32678.96193 8921.988878 211.7964327 78565.67802 8679.208793 1802.357634 176.6135751 32123.54227 58605.89332 87237.8209 16.17892526 23041.20559 0 57574.14497 0 2727.355437 42445.40071 0 0 3581.122136 14346.8677 0 2440.817458 378.4190106 2207.92261 4560.359406 4129.757359 1022.619918 303.8279826 0.04184934273 20222.72909 0 27115.68648 1597.870441 13378.56877 2148.721909 9911.838968 50357.7523 12600.55676 29.84347574 13170.51542 582.5924379 1034.025314 7551.222445 2581.57582 1971.349573 0 1033.919522 542.2133423 19621.76697 2944.047357 2656.177958 16627.49783 0 5395.64903 3479.746003 87.2631333 3032.682697 468.3725586 30366.27515 232.874834 19670.50019 37811.21362 827.9517301 0 4758.139532 0 41344.56317 0 386.5920245 1375.036571 8792.604923 1231.22901 0 8909.164882 9234.473168 477.5730222 0 132.5437409 0 8950.157797 0 0 0 3820.7271 4784.828101 0 4653.056422 693.799884 1522.191272 0 3911.870199 11698.95467 0 4.836109036 0 0 1841.650323 32757.88826 3347.022259 5100.368353 2310.623483 0 17.58861817 0 10196.1623 0 45899.93091 46.58115593 4668.280025 781.225945 0.3349887809 0 44.76513697 0 0 16611.13957 207.3187305 28651.39125 9034.093166 0 0 7735.185363 0 0 12304.37995 0 0 8991.269127 0 13376.35889 46894.39124 0 1296.540629 0 0 12819.57013 0 2945.94732 23201.00052 20.76136353 0 0 12389.42562 0 0 0 23640.40349 2775.356388 0 0 22595.73739 7804.230684 0 0 50023.15798 0 0 0 0 2847.119949 6764.32673 32312.42887 0 376.3717158 11231.86336 38610.73134 0 0 0 53.72871624 24975.13826 0 0 0 20.2949734 0 0 57066.67816 1387.956983 0 0 0 1826.680804 0 174.5247224 3585.531681 0 0 0 0 0 0 2990.491975 1499.371523 0 0 +0 0 0 8187.678655 14910.12989 14713.27565 16889.5799 0 315.987595 0 1416.593791 3417.970524 0 2565.881493 36873.86498 14008.41276 0 0 5406.78963 0 2662.399088 0 0 0 625.9440367 0 0 0 0 0 0 13542.52447 21130.90566 0 0 0 0 0 0 0 0 20480.6164 0 56930.85787 0 1451.160997 0 0.03817760272 0 32.79857349 0 42225.81945 0 7052.776473 0 39366.37873 0 691.3047468 2547.378904 12170.57462 0 21992.79664 19796.17862 0 1770.442151 0 2788.492762 1355.594676 0.3517832378 5933.05757 1301.691143 2083.458585 0 6302.76036 0 4444.915545 0 0 0 14452.38775 97.07932555 0 219.6459775 4613.780671 294.5265299 28314.32612 0 35398.26371 28059.00319 0 0 42083.59162 38862.61991 14713.08547 5940.9829 41512.71283 18967.5166 0 0 22576.60374 3218.805497 0 3400.965418 1342.590026 7482.375168 53979.58325 0 15555.63103 62961.51802 0 0 2322.388241 0 8619.732579 0 9159.829854 5476.723568 0 69.34594266 6282.927547 0 82459.84883 0 2222.029565 842.1118633 32907.5124 17275.86748 0 0 870.5863535 15086.3609 10719.57021 77.07547546 14001.3589 39818.89015 9891.765716 12090.12704 0 48.03771506 0 15148.60646 314.699199 0 7946.009482 0 0 4298.453755 25419.96722 459.2367409 0 175.9609306 84.73083042 0 34328.89335 28261.14583 0 0.926774052 7021.066121 1771.570481 10508.91658 0 0 3096.412231 45.31306399 0 0 33835.67803 0 8340.075206 12044.67306 0 11356.76317 0 6105.201733 54483.75421 0 0 2737.203231 2329.004656 14913.5698 19640.30306 0 8.165264771e-06 5834.911403 0 0.03338724475 1248.926042 0 57958.25609 115.7087753 0 9665.968687 59398.55173 13364.01059 8235.346861 31160.69605 0 4448.128203 22095.89992 1619.027818 4625.427399 0 1604.474868 0 0 6179.380843 0 8034.550034 0 0 6229.008011 1888.358196 9902.232669 0 0 0 0 6011.630983 0 863.4620475 0 0 4358.426647 8623.721806 789.1702984 0 0 0 0 0 56479.40503 1765.87038 9530.925896 5847.296588 9771.233218 16.71732813 1128.32862 55527.86325 0 38.59118271 2.650952264e-08 5128.886968 40005.86746 50386.35635 2534.150035 0 0 40595.53141 5850.41932 0 38578.59895 0 8149.800655 3259.468719 3869.250099 234.9942073 0 11024.53456 6083.316123 3542.906345 9635.447624 5799.590485 0 0 1421.107104 9321.430269 2713.209408 2516.36013 0.0008190441424 0 0 0 3380.074222 43.11266603 11196.60159 0 0 45.863412 0 32885.24347 0 28861.47458 0 2633.025645 0 0 0 0 0 32982.3769 0 0 0 3691.680193 0 973.8410706 0 475.955107 46981.55296 6565.807368 +144.1868973 0 34282.17663 0.001697622279 0 0 0 5627.60772 0 0 0 0 0 0 22801.03628 0 2325.523491 1603.766704 6282.924451 0 7575.146582 2844.200531 762.1698804 0 3993.831082 9673.100311 8609.529075 0 0 0 0 0 0 35953.33554 3508.03357 42162.05404 30738.23045 0 20538.93838 0 421.967516 0 7153.423535 2956.378822 2556.639495 25433.66509 2103.683902 1278.538456 30703.81116 1371.349997 2126.300411 26497.90359 7664.050708 11233.81658 7660.744883 4851.991117 59044.10265 0 34113.20641 1073.347682 0 12498.14182 25.53708935 43695.52543 0 9240.024619 0 40513.33854 5137.979239 1251.007471 0.019968849 6061.414308 8038.705053 3573.541698 0 0 26.3906382 6510.658877 0 7930.253795 0 0 0 0 0 64526.52003 0 0 0 0 18216.01114 0 217.2388952 6713.689782 1357.645593 38380.79729 0 15325.80539 152.8817211 0 0 1809.926914 4152.685384 5615.266913 0 5169.19364 2371.921257 5180.084636 20554.55665 15197.30052 0 11645.36657 0 0 0 2867.738389 68213.24916 2125.620065 0 36803.00867 0 37220.83488 0 92.11534857 0 0 0 4231.992832 78.87893713 49849.62455 31892.41794 5.025713758 53172.09542 0 0 5555.225696 6310.405656 10537.95369 12745.20274 40032.60003 8514.83179 0 6112.15569 4841.807652 7698.433868 1148.082178 1606.330028 17417.47562 6340.288357 0 19991.03218 31.56827113 2966.820526 0 38350.43208 5836.257785 0 0 1963.658037 45.94567199 4306.719193 9400.59022 0 1022.778032 0 0 0 117.0414918 1541.429996 22352.20338 3580.341725 0 256.7981145 0 39757.35091 31611.62355 0 20493.22141 2816.36684 541.7686339 40022.55889 12605.9182 1743.673872 3203.033407 0 0 4239.902273 0 0 22064.97217 1021.026073 230.6943183 4220.064841 12249.90532 0 0 0 1308.236829 0 9929.645922 30637.53344 0.1303963854 17767.2529 8187.96892 0 1051.901979 73090.87779 10500.19085 0 1089.941949 13496.68339 0 7492.240806 0 65490.17384 67340.28894 0 0 8479.099199 0 5690.680116 11151.29137 40544.2341 0 0 49504.69845 13818.97662 23774.36962 2674.290273 2152.4577 0 0 76.1371955 4783.914548 0 33.7699852 5689.133391 0 0 2180.718856 0 15592.04162 5884.10538 0 0 0 0 0 0 8737.970547 25324.69633 0.0002914300058 0 44410.01144 1400.081545 15376.49486 39758.40324 0 282.7749813 0 0 81.39215619 0 0 6499.52599 0 0 0 0 3610.557519 7421.859461 1208.499138 0 0 0 448.9257036 3421.907506 0 16381.2082 0 1569.025298 15997.50422 1279.726963 100.9386476 16615.31273 7007.706764 0 0 0 0 0 36339.86169 0 39251.31636 0 0 0.03279447829 33267.32528 4233.185157 0 +0 6517.665304 0 0 2691.505535 0 0 0 4452.41131 17273.49771 0 3730.161592 3071.074207 1333.860383 0 13780.49376 0 0 0 0 21268.22667 0 10477.05769 13720.61082 0 0 37973.09035 30.11855386 324.2465596 13903.30982 3620.897323 0 0 3036.150509 347.6434885 412.0437101 0 0 0 19974.42598 26098.6038 1148.310794 9540.80116 0 3626.554817 3003.010348 26071.20474 562.0955394 17539.85729 0 504.0266117 0 0 95.00071214 25418.12435 8304.384658 0 22.33323389 6427.247936 17406.06203 66.49967773 5467.538913 0 0 14455.00219 6360.395849 0 0 0 0 0 4019.442429 6496.752967 0 0 0 0 7608.904711 2102.560855 0 2650.827081 35431.28885 0 0 0 0 10.92427205 3667.080954 0 54465.53755 0 1421.820979 62710.93063 817.9886588 0 0 4702.466378 0 7439.509 16708.194 0 56993.57421 21089.07426 0 0 0 45567.01136 0 1.453508354e-07 1323.429766 0 767.4234928 0 16209.16252 28283.97202 3517.345635 0 34171.40074 0 44650.58016 317.8661289 17317.96886 4886.118007 3351.731522 0 0 1129.881142 1.557477864 2335.53755 1182.218912 4669.862088 210.6507667 3318.584073 0 0 30700.7317 1126.120245 0 8541.196863 0 27870.10145 0 34890.60674 0 0 37691.1986 648.3731811 0 4466.151295 0 0 0 0 0 23806.64766 42050.51241 0 0 0 63030.96221 0.0001877641768 146.1690209 12105.23881 3344.279071 1569.353353 2074.619565 15810.70996 28301.86163 0 30060.92678 1059.176027 2511.897474 2113.77254 857.6310883 0 0 0 4209.643483 23243.37591 238.0449808 0 75450.48137 9.349842845 14746.05621 0 0 964.8982638 0 0 0 22.5007899 43712.05138 0 3981.587761 2732.633713 8543.946649 7940.969592 2403.609733 0 0 92.77677667 0 0 16132.36317 2165.128078 0 3543.148967 3609.819439 0 0 0 3349.822334 0 0 2643.405833 261.0780607 3223.198986 38454.25929 32211.02905 51.8302307 4225.280492 0 0 3883.452775 0 3368.04116 111.7731666 3194.687905 108.1574561 28020.1098 910.5541692 0 0 14854.68753 5613.790078 15720.17968 0 187.5279074 0 442.460723 9419.563896 0 0 8168.527881 0 27507.81649 11835.23433 2291.870562 27661.63577 2388.96952 0 0 0 0 4509.378537 7986.7703 0 54.0029576 12544.4333 0 6281.089194 29.41188642 0 291.5312221 2760.754498 4931.790506 0 349.5510944 0 0 3805.437176 0 1197.26349 334.9934936 11113.05273 11949.74569 10320.94655 6407.958979 0 0 0 84073.1403 255.7477026 8686.925767 0 12181.06044 0 48469.9802 0 12706.29402 0 19.89059551 19973.78268 5984.457694 180.0165354 0 0 82381.42874 0 0 +0 2656.474732 2536.582765 17716.02637 20451.0869 2793.731089 0 42390.57269 8481.163957 30.80666535 0 237.6653318 32506.06418 0 7530.768359 0 0 0 0 0 60.81090695 5358.251645 2343.581254 7250.327688 0 157.2034552 4743.352072 6802.626158 0 0 4022.154258 9703.541169 0 24300.92658 800.6637515 0 0 64037.58973 0 7983.195815 42127.67648 10171.11725 0 7930.015337 0 6081.112081 0 0 49541.78009 0 1412.95023 33.84132052 2660.946645 0 3978.279362 0 0 0 0 1948.668287 6576.071581 2555.177226 21774.98491 3045.192858 0 2186.154632 0 7896.031565 0 24007.6134 4518.038632 0 31392.41429 0 8322.378868 7695.649395 36888.04076 0 0 2441.241181 2008.802323 11819.35058 2379.929172 76400.20751 12255.11051 0 336.1552893 0 0 0 42147.55097 0 0 0 0 0 5462.83181 114.5618663 0 17133.95842 19480.34495 0 5220.179627 0 24411.93882 2618.516153 4248.682206 8499.980811 8268.527263 59228.35773 5055.381425 3309.271014 19858.37023 0 7294.525504 0 30433.77855 100822.1706 0 0 3513.927786 70134.86536 0 36668.3241 55934.60339 0 1631.971826 1719.007355 0 64.42751743 39539.0251 3180.81989 6396.119043 0 13775.47435 4440.327529 0 2218.307027 5702.752949 35395.89686 0 389.1820273 287.3778446 0 38510.09662 14504.15396 3491.531574 3416.607188 0.00945425652 4504.029873 8965.40111 0 1529.917305 1773.461166 0 0 0 0 0 0 5553.696052 527.3340371 0 6565.801445 0 17152.92202 8539.194631 0 46203.17036 3467.688606 0 33431.33015 7078.986273 3430.830903 60.7778004 193.9267886 5195.904823 18018.09856 6012.599562 1812.090272 0 0 0 4831.998821 13212.83307 7467.305676 1.180062416e-05 0 0 0 0 0 31120.40692 206.0727893 0 5146.706492 0 1682.855682 14028.6082 5274.85816 3095.699528 28520.83724 64039.20168 5771.747633 0 36158.10231 29553.33597 0 50385.98763 83.82734763 40803.40806 19791.90378 0 3540.703006 92292.43468 0 0 1355.305764 0 0 0 0 0 12126.52063 0 0 3127.810298 0 11844.8419 0 76.45591544 2364.054287 0 9819.642733 29086.24662 35447.14078 0 138.0622795 16218.62183 2457.806037 0 44006.08952 6609.592192 7216.91292 40618.94084 21982.13032 0 15162.42109 0 3238.424907 202.3978132 0 0 0 222.1025907 2917.002659 1960.287554 2730.334651 0 1853.488841 724.4818126 59358.51026 4493.365391 10302.15229 0 734.7828914 15432.24805 0 6635.791549 14211.06468 0 0 0 0 4638.487753 0 0 0 137.559315 0 1.063516197 0 0 1915.581404 5664.338434 0 0 0 0 726.7386722 0 183.1809231 0 0 1832.098078 0 402.2501017 0 0 3256.348782 +6575.852414 103.192725 0 5794.435876 1505.251226 5663.02706 0 0 0 0 0 2349.917004 0 0 11095.32251 0 27.82897185 9491.093309 17858.12259 7163.524994 0 2166.358003 1216.093844 0 0 31561.69916 38642.78834 1064.615014 0 0 84.26290742 0 3876.625737 6843.692374 10455.3522 0 1.365370668 0 0 33449.54694 0 0 0 0 0 2046.424323 0 12564.44156 0 0 0 0 3530.273149 8618.610111 0 16546.54373 27667.96087 280.636392 0 0 0 2749.93484 0 0 0 1430.03972 0 0 0 0 26808.0806 12228.34109 5457.940272 476.2436562 396.8742064 3632.898563 2252.831676 3768.056542 9723.869426 15639.22794 0 0 12512.66345 91820.64237 922.1192189 822.2438588 3736.360763 0 29582.5512 0 2083.030562 0 0 27830.70588 17881.62479 6585.974917 20469.92927 0 1719.780259 0 33701.541 0 36580.13437 0 0 16911.31065 8638.484274 3322.650405 5544.035745 33933.21284 27263.37928 705.5639848 0 21057.30494 12968.89967 9227.119216 48981.11875 0 0 0 408.0871353 392.4053894 21469.42618 5854.525805 44470.45407 7917.333126 0 15653.98915 0 0 0 0 0 6241.37581 1044.338473 12313.80456 0 1709.054044 8215.303205 6644.412205 0 1200.965026 1297.302363 39181.68567 16848.78906 0 12.01846596 31720.93947 0 0 0 0 19.16050183 5354.117221 48538.6918 13259.09988 9190.559232 321.9108858 2415.16125 0 2300.125676 0 6999.662237 0 0 3721.865274 11890.04659 0 0 30643.61502 5503.853849 7661.827937 61325.39724 190.5059823 0 86734.62656 43.57532817 19874.62611 0 48155.08723 46638.99528 0 0 0 0 0 26939.57791 6453.959447 0 0 48947.33246 0 0 0 17554.80264 7072.73523 6815.915288 5556.969244 0 0 3814.302217 0 2107.491264 0 0 4314.024503 40602.07956 44820.08555 0 0 7100.898797 0 0 62082.31301 18386.20593 46233.69059 0 589.606836 40512.04342 44619.06238 17841.80021 6706.697982 3302.60503 167.914358 1189.664196 31477.65944 0 78.92139766 1568.416802 0 0 0 1948.981652 16644.52717 0 0 29036.11784 0 80486.08329 0 5726.433678 1398.220857 0 0 1134.26561 19635.9232 0 0 33365.21615 0 373.495097 698.5369902 10631.8395 25.5095324 0 0 24011.14919 21810.91987 29961.08345 0 0 1744.462049 0 40761.41363 28403.66417 4184.115425 120.7904415 7060.547576 0 35057.82002 0 0 0 0 1586.113156 0 0 7494.286266 1100.956108 3684.262797 3290.126631 0 7960.253093 22486.11684 0 9311.722809 8974.602933 749.9026451 8377.157346 0 0 1783.494408 0 0 0 0 0 811.4142584 10947.5509 0 +0 2467.947645 1521.361871 0 2827.078074 0 16.70688232 0 0 0 45994.2889 0 0 42421.93642 0 16965.91455 10453.04416 0 0 43321.30524 0 0 22105.47514 0 23.92417327 0 0 8742.495091 0 0 1387.146185 3.575283794 3235.887012 31064.42078 8137.229375 1241.429555 62650.92204 0 0 0.008627897073 19171.34147 17724.21606 0 0 58237.82521 0 0 0 0 0 0 0 0 0 0 20805.94912 0 0 43698.16698 0 19656.21623 0 3639.817709 561.5532768 85.886914 0 1914.450368 5495.026761 0 62.7594854 9439.560323 12203.79348 4030.363519 0 0 4240.845047 704.4336948 0 0 4275.957973 2026.036519 35423.8692 0 37.11230139 50408.52731 0 0 2780.025052 4189.871085 27769.75049 10428.78298 31797.46919 6864.607754 0 0 11654.81958 4740.041232 295.3375371 23892.38124 16243.21992 10729.16885 4171.278292 0 0 13398.70261 12986.27075 14620.7272 1550.577436 23425.53498 3827.701104 0 455.6122673 75.95084667 99.14423845 48942.68565 1727.552416 46586.58806 26869.03698 0 56152.01388 25117.68546 12018.7853 44139.5256 998.7133674 0 18994.91265 0 239.3372501 0 0 4146.087501 278.2785872 10016.46635 112.5806539 1256.129539 58137.53914 3419.501549 7690.867678 0 43343.81984 19981.11596 45460.24456 6160.836043 11439.87276 0 0 750.7008783 42053.8235 94063.42769 34935.6473 137.4148225 0 30498.38007 54665.6438 0 4536.874838 1174.511084 417.2084107 6.858244502 0 0 3261.444745 0 5703.118297 0 22278.3161 892.4391024 0 6168.160363 9869.589347 5849.005081 0 2610.781546 0 1378.426063 0 22073.51116 0 14170.01858 0 25161.45031 16741.20295 0 0 0 103.849004 2778.100842 0 28577.70896 63739.63703 0 0 49910.56918 5090.056214 1373.538475 32494.22316 33926.76557 0 2107.454389 1532.760271 4937.475515 14914.18072 178.4048846 0 0 3128.572484 0 64919.61448 0 5424.356208 10585.45742 0 0 23341.47913 14630.93267 10265.39487 6826.585509 41364.28624 0 0 3.779478389 20405.10366 23.32120302 291.9009886 0 0 0 12710.99053 31493.53802 367.1986129 0 0 0 0 0 24648.83096 0 25491.9502 40998.43059 7104.73664 19204.78623 33772.507 19281.68062 13781.88722 0 46725.57786 0 0 0 0 26919.49829 80966.62797 3570.691565 3850.182714 0 0 0 0 5002.890351 60458.69916 3936.548244 0 2407.667341 0 147.658122 0 11119.40082 3625.668625 0 1903.023714 13218.5664 0 0 14366.92151 4040.531761 0 0 1932.102639 42456.3843 0 602.1257144 10023.06135 2062.116096 0 0 0 0 3029.087269 8845.893855 14013.15341 0 14.48663726 0 17420.01322 5182.964678 1474.219245 15824.22978 0 1572.333582 0 +0 0 6845.481689 18273.86714 0 3340.215351 0 28955.5645 100.2940982 1406.904544 0 6933.278517 38464.13312 4950.731677 0 0 0 0 0 0 23311.585 0 620.0257029 4361.922805 0 0 2002.816101 0 1312.898429 8366.784978 0 0 29410.35599 7947.902662 37358.91645 0 5898.264697 632.7043638 5478.728277 19134.00982 0 6450.721744 4.859060141 0 72.40869764 0 13214.70042 114.0257487 0 10324.40004 17216.67844 29054.32786 4067.955993 4797.434229 0 7390.098456 18041.09505 7254.520152 4673.770901 0 38063.50944 0 3257.935626 4776.336782 14359.44687 0 0 28023.10634 0 95.36891072 29613.36992 4792.127068 0 4702.337184 1.550880879e-07 0 1363.845703 3261.740981 10503.18616 0 11659.66887 0 0 0 7819.078612 299.7349778 0 7199.411399 0 55442.05151 0 177.3169147 213.8524526 0 3474.598307 49411.41634 8981.714332 25928.16443 3651.886197 1728.65172 0 40.90372551 0 26510.72804 0 2889.42279 795.5164281 1714.817961 187.1145517 12310.84299 9461.98932 0 6.985066797 0 1870.759083 9231.990379 2712.662038 4055.672064 0 505.8336089 18279.36136 0 49605.47128 0 37098.31225 11742.70647 442.0847232 11995.83542 113.7121362 534.1890764 16302.35233 15013.04168 0 0 932.6725677 10171.16091 0 4385.534475 169.7915309 0 16126.8059 2899.818396 3.003807702e-13 3434.158491 30447.4676 10946.69167 0 1245.345896 13285.40581 20222.04601 48783.37713 43960.20429 0 6905.170332 41.80290451 0 4261.112164 290.4201743 25393.40574 19.98011648 0 39377.07517 1935.761621 6262.884063 0 475.0119652 17.22772636 7650.140908 446.6861031 35688.56035 0 337.5793462 804.9327205 27092.8638 47766.73119 15793.9126 0 45.10081855 0 0 34785.32427 15.60735793 19515.0146 0 14759.07371 0 0 0 0 6959.699341 1100.787759 0.0001386175335 0 7403.35472 0 6.57063415 991.3321001 33964.29513 1000.70965 2686.297282 61525.31587 1586.10257 0 0 2017.201858 0 104.6272159 0 0 0 105.7259024 6081.313002 3374.34993 191.2562153 6588.34522 2980.142557 42963.53361 0 75.01085153 0 20383.46921 0 9982.043502 0 905.5976602 29503.45809 9715.260062 0 3439.441963 0 0 12270.63737 12365.85783 1855.833036 4774.917565 0 0 0 0 0 2096.254089 2649.480305 0 0.0003178271872 95.81061507 0 204.4313593 25411.21016 17102.20241 0 19802.32476 9316.105702 0 0.07199498315 10038.83484 0 31462.98746 1769.558275 2551.76177 54430.76511 0 0 1466.040095 24844.94263 138.0696654 1026.920998 3720.122667 978.1172268 0 0 0 3651.685228 0 0 0 827.8080094 0 0 10283.92051 0 0 3667.193558 0 2395.504501 0 32032.61759 17693.46995 11147.15371 9827.053613 21594.82221 0 6861.711061 4696.73933 0 2446.199817 0 0 104.7336759 0 5773.811784 +63.82512131 7648.34219 5490.495996 0 0 25495.66188 0 20491.06622 16885.01494 12395.57158 93101.88104 1932.266094 15389.48956 39070.3385 55191.26154 0 9958.090655 0 0 0 0 6296.429886 0 0 0 0 0 44680.8164 26279.25808 0 31924.6398 0 0 0 35291.42333 24112.23324 0 0 0 15418.9394 3385.356166 0 0 1916.727453 1368.323296 1714.448077 0 0 1.215784346 0 2413.598999 63145.32815 16414.80095 3.376231697 0 25623.83089 5104.335561 0 0 0 0 4639.972733 9.965330156 0 7697.648472 0 14084.10154 6049.822642 11408.71185 46.20094414 19929.85019 39026.20098 0 54369.69527 0 0 0 36740.6885 0 18852.97547 0 0 22790.7103 26518.93401 832.4877991 0 7532.130779 2213.915007 12627.10916 0 0 10694.85042 39257.7859 65006.45142 4708.809032 0 0 0 0 14769.29113 293.25217 0 242.5188561 0 9942.007718 0 0 99868.609 0 0 4156.34288 132806.6838 0 9815.543254 0 0 0 33869.1727 5179.666839 483.548627 0 0 212.3866792 0 2700.863196 1865.090957 29551.78106 57306.52254 688.1818438 1566.587308 16236.74553 12791.36283 0 0 35682.26786 15147.08747 25404.09784 0.005772188666 0 0 1453.762292 26.00424904 5964.488283 4433.962288 2355.584853 1881.005431 15580.81657 3887.763866 913.062746 8002.622968 20423.11931 1653.727338 2594.924332 11673.66886 6500.664367 3359.13639 0 2403.161289 0 20114.50978 6582.466662 76901.01672 0 20077.27691 2193.591783 4462.725165 239.0539398 63838.0838 0 4442.41678 7452.829896 63554.32513 11019.17835 0 2067.031756 1246.7963 19552.29623 27620.33634 57300.42489 8000.300417 0 0 29.67270643 0 0 35427.97524 0 958.849398 1230.20722 55462.00018 2428.417402 0 0 11017.23427 86.61592632 0 0 0 13929.66948 0 8705.503551 0 7211.928856 0 23625.48122 0 0 64208.22167 0 48348.27167 0 111.2319039 25447.51599 0 33498.65878 24380.45152 9049.393218 0 14.24514773 7807.108884 180.8972696 0 0 6291.372093 78.42753483 264.3357978 32742.53457 0 0 3851.27039 0 755.4339139 0 111.1099947 0 0 0 14875.99542 0 22473.42458 12202.86424 47.98019224 0 0 162.0250495 0 0 0 0 0 0 60.84984872 3024.878831 954.0012368 87.4060501 0 29403.43847 0 0 1967.617594 538.7192795 75216.33034 32.92152399 0 5948.739393 0 1.896737583 22957.37356 692.3459335 10455.39096 0 0 1909.98764 0 0 1168.187177 3594.862893 0 1417.389769 2055.263387 7140.417485 17258.07688 0 164.329052 0 0 0 0 23263.48735 15092.01436 3153.22498 0 0 123.0809087 11694.4908 0 6816.250419 0 0 0 +8055.255811 10282.44905 0 11651.57723 2027.18182 0 4400.089916 29.55765994 763.7035159 0 0 0 39882.037 6223.144882 1463.874494 0 0 0 2303.689253 44233.78295 190.6763374 0 0 0 22135.58312 0 0 0 0 5699.149916 4413.26045 0 0 3226.997854 4255.018281 0 0 0 8700.643917 1659.208141 3425.269635 2025.027232 0 0 18220.95806 30945.45019 0 4805.862137 1143.728208 0 0 7789.77224 0 15082.96698 627.8194765 60315.05405 2169.094602 27157.8628 3422.201707 43683.73289 19705.28011 1879.396784 9163.388463 8570.688233 0 3184.788876 5558.082974 0 101.1331159 23342.48223 18830.56566 1590.841223 25027.0787 0 0 218.9065654 15868.56293 0 4559.709556 60173.66864 0 19189.21887 0 9671.274907 0 0 14415.22103 0.8402844551 103901.3665 0 59272.45155 1992.964472 0 25259.93693 23459.75322 0 29961.17716 0 0 25451.47747 0 14995.25888 0 176.8946745 7925.714671 0 94.76775184 36247.93519 10917.6535 17584.15218 0 43764.98656 717.5257302 0 6772.467925 29335.21315 0 2587.125613 0 3519.826472 0 0 1922.651464 35675.16816 1816.400629 7056.263824 43315.65452 0 29358.00629 10638.37915 73792.63996 4051.243769 17012.74561 257.4543931 15820.35292 4571.622348 0 0 0 681.1880995 5081.891078 0 211.1940797 72492.62397 14983.757 155.635919 12314.37234 52994.61505 29048.47802 50263.32459 0 30633.99904 674.6796941 0 0 1929.634385 0 3958.977947 3800.285445 11071.38037 22371.77565 1774.962344 20368.18886 0 966.9965055 0 7058.731405 0 0 0 15654.56351 2913.26677 4550.950749 0 8353.755347 260.0123768 1633.712144 0 6663.177403 5297.177896 0 0 9077.576841 17578.40536 34738.57625 4645.052644 0 7.798274428e-06 0 0 0 2935.049819 0 10844.24978 8418.565469 3627.42779 1010.815298 4735.241129 2189.778006 54251.85757 0 0 0 48036.37581 396.9244226 4445.560456 0 3152.672379 23903.61571 24108.46576 74469.73464 4364.913196 0 29682.10692 2373.715668 7283.630126 24.78887828 45302.06713 32268.27787 134.394922 403.9120739 39.09430552 4850.132033 0 0 0 0 31522.26915 18239.38791 14235.03884 2821.609216 13246.86224 11.64956433 4497.363826 39551.33132 96.56447776 0 1842.449595 38080.60865 0.7562105927 0 0 0 188.6126675 6814.675037 1264.366845 12788.37452 0 0 187.9836258 0 51781.7351 0 42173.45749 0 0 22228.25571 29690.63237 5847.665246 21078.99812 0 35045.2766 0 77.82770464 7102.569906 25248.9617 25434.69036 50577.38679 7222.905821 60627.8784 3267.311896 0 4937.467153 114.6648755 0 58830.39172 0.4474664546 0 0 35.4586484 0 5922.558438 1870.743764 8297.099105 0 0 57.31478146 9397.745784 3347.464438 33822.51324 0 0 22497.00939 0 234.6570569 0 0 12717.29985 0 1078.024892 +941.4331219 3251.060865 0 18978.26057 4686.395808 0 0 0 4848.978805 0 3662.084236 0 15941.81718 0 216.9466649 0 127.1164053 0 3543.890389 19155.09018 11360.81375 2712.843614 0 0 1380.004144 0 4172.609189 0 0 0 59605.38845 10836.98059 0 38545.48515 9517.573125 17074.84792 4723.867685 0 1016.448757 10259.10459 1373.312278 0 4299.234469 4246.785517 0 404.1537002 0 5518.584059 7959.549636 0 21.76439994 0 6857.254619 6570.621853 10923.1091 0 5310.04893 0 0 0 18812.82727 0 1092.794321 57954.90897 0 1772.282263 7620.757872 1767.730464 0 4160.238477 6225.773654 17726.35031 1932.201011 3012.771686 0 2883.703015 0 0 14072.68167 0 0 0 0 6405.002497 22082.19068 48.80277157 86.53787426 59914.1105 124.7609043 6413.796926 1387.74946 6442.005801 2004.325712 19050.91018 0 0 6231.192931 0 8909.798973 0 0 267.4013904 0 0 6498.12595 44462.37173 1969.600662 3616.198349 16728.67342 0 2086.58801 26386.89123 0 6483.562441 0 49258.9239 10540.89766 32814.3659 13393.287 5172.805733 30.28381685 0 646.3206237 5076.523365 2002.205142 781.3054028 11767.82223 0 12222.42092 0 3247.630752 0 0 0 0 0 20124.07002 81687.62942 1679.055408 3865.488818 5651.631914 60401.22749 77.53887313 1523.319411 0 41745.83233 29532.56848 0 21585.75985 333.0279706 3575.758855 3514.346568 20378.73304 746.6959167 0 0 7869.834141 33031.06734 1376.88219 1.438428218e-12 0 1363.007492 0 0 2194.884451 9404.536888 45076.64684 0 108.7493321 1441.726805 2316.13653 28654.67898 0 47.10229478 14626.07309 3634.380254 853.7916328 0 0 0 0 8409.181488 50463.31703 1334.473853 2402.826242 4437.927926 2056.198504 0 22491.44166 0 0 739.6588033 25.84787569 0 0 50.22217331 2653.156888 4534.322981 0 45226.51895 135.0903787 5976.358784 0 3851.114123 10182.13358 0 57151.48568 0 510.3625693 0 52510.47627 4652.030956 0 19517.54932 0 0 5853.324051 17060.07293 0 13315.95777 8211.847451 42.85418193 13831.01924 17347.65607 8481.929515 0 0 3592.692685 0 0 18751.32788 0 2783.78311 822.4342424 1456.627542 0 0 0 23991.62897 9509.796273 14859.88695 0 14487.42151 238.9797768 6354.412084 2969.985797 10707.48718 185.1152506 12738.46946 52555.08055 2078.980058 11288.04551 2789.229591 34501.22242 3763.276043 0 38.22491325 0 7696.856867 0 3359.036031 0 13250.14838 33538.79606 0 0 0 1863.368005 17217.80796 8486.334507 0 0 17656.58441 0 33335.34044 12379.12047 0 0 8030.060813 20977.65636 0 967.552559 25877.9515 374.7629938 0 0 0 2917.561924 1765.280689 0 0 0 377.3769832 11676.06115 0 0 0 3248.402583 0 0 +0 9256.821141 232.7116306 997.7336998 0 0 20066.52715 0 4442.834326 21085.59739 0 0 0 1714.066822 352.7626442 0 1804.61893 2549.615335 94.45877336 6892.096334 4282.975923 7464.277358 0 588.2711505 3666.607807 0 3653.493151 0 5582.573234 2247.023003 28112.85258 13278.01889 0 0 0 0 2433.696243 4291.619976 0 0 0 0.005245700261 6290.716608 1978.174048 180.2362811 2.122279332e-09 4061.346783 1.603566926 1301.40677 0 44910.26482 6839.162172 10931.39301 21187.7482 1342.029114 0 0 0 0 1009.074462 7197.352769 40908.16693 0 31131.74035 0 5885.604606 0 25.72085996 0 0 336.5352312 0 0 624.6031714 69125.65943 3648.18993 32033.78684 0 0 8998.0352 0 35187.78411 48454.3155 1908.289726 0 6508.923917 10892.3529 0 49828.74307 150.2004963 0 3327.585032 0 39476.03484 0 27271.37552 94728.65862 50788.85578 599.672146 9230.799378 16695.03964 196.7252735 10770.6123 0 3919.659427 0 0 22669.87794 16843.59978 27310.54785 0 6136.368287 665.8369497 35482.29316 0 4457.620042 9211.014872 0 29541.73611 0 42.54181728 24.35156628 72760.55103 31260.23712 2688.833574 0 6386.508524 54575.71127 42097.16181 0 13787.07611 1518.834809 0 39774.86607 308.0013954 117.6176484 3.13519212e-06 0 18244.22554 78467.93414 38797.11164 25329.62037 7274.748254 19.10419087 0 0 71091.59333 0 0 122.4027588 97653.80785 3361.430446 0 0 0 1498.101183 41184.83152 2002.000341 0 0 0 17678.74925 7122.831335 0 27772.74938 38642.6611 25510.83457 39387.01438 26108.41856 12439.40728 11325.42271 0 4577.822235 0 7921.89345 18192.76118 1479.789413 5080.311399 7783.936774 41362.089 0.08539437805 3403.295943 20612.51839 62646.69916 9418.358798 0 14518.34296 18147.66644 0 57.98789169 2181.187888 0 3329.795557 7236.56539 0 0 15189.7897 172.1921438 1384.966705 0 532.6947005 10011.41993 8662.184854 0 0 4636.921531 1.132608188 47801.38356 3833.775479 0 0 2664.784825 0 0 10116.56877 432.0903642 0 376.5138765 0 15517.12112 19618.14617 8691.24205 3914.785559 114.7172149 32816.95825 0 70464.89563 67988.75455 497.6772756 0 0 225.9973215 165.2416055 0 0 0 1029.477894 10738.19173 0 0 38569.03871 4514.063087 0 0 25.52891009 33134.28293 0 0 2470.559867 0 0 1688.589697 0 20525.03192 6223.497236 239.2231477 0 0 16534.31463 0 18648.73005 0 1655.13836 291.4971186 0 8641.0577 8046.043544 2126.237299 269.110545 23171.85663 8260.207666 165.3975957 0 3518.758357 1693.731433 7233.42108 6537.661379 0 0 0 0 0 0 2728.85763 0 132.0859645 304.9606921 0 0 11806.12515 0 0 3997.710569 0 0 0 3658.278955 38001.54826 0 0 +0 2337.869132 0 0 0 0 4042.297997 1909.601322 0 0 0 0 14217.98393 17994.44676 0 45732.79782 2278.630072 0 0 4982.649115 36316.87024 35684.81001 0 0 0 63265.02263 0 0 0 5315.811426 0 21.8704822 4505.193819 4563.353292 0 2161.945693 4605.733947 107.9614435 8414.03175 48457.92162 12812.49306 275.8009442 21367.65356 31678.87592 0.001754407504 15047.4591 0 0 110.6849245 0 0 0 6870.568522 14806.66568 25101.81301 0 0 24945.87969 2801.027182 35456.82392 48411.97102 0 40321.60572 18913.69582 31959.52786 0 0 0 0 51478.22774 8.717561732 6459.159006 1024.491271 28422.29746 2867.722958 0 3363.38187 4084.879495 6283.955998 0 9097.08689 0 13811.77593 7017.119097 0 0 3435.157535 41172.06632 6720.699956 7935.568894 4163.424851 0 6597.139034 6083.942236 0 19554.8816 4293.551019 32208.43353 378.3786473 0 0 0 19894.45494 0 817.0665037 3.348175751e-12 0 6763.786579 103.5467824 0 9886.59038 4295.58062 0 44588.59385 0 0 1004.625737 17079.58174 24524.06784 11380.1195 96524.92753 0 0.934850894 24418.47933 0 160.0107214 46318.21859 0 0 7368.548151 0 0 0 13455.95387 49642.44156 10152.98309 25287.06285 3056.581183 2467.500904 0 21.53660843 3065.90375 29853.71803 0 4586.284872 27352.6393 8087.141309 28990.9638 49806.7748 0 109580.6306 0 0 45729.66534 3160.929044 6901.402548 4603.359814 0 0 23884.83671 31167.89733 4540.397377 8625.414433 0 3985.565118 39667.83658 5334.379918 0 230.9068184 15572.22767 10829.93658 103.3362908 7967.657975 122.2452895 0 0.06719450199 2254.49538 4436.357283 39247.68819 0 1.33039418e-13 0 29194.96663 6390.613443 32088.07527 0 0 13551.96491 5383.41471 4032.309796 6639.21415 37826.48376 41.61179993 2975.346742 23876.08877 0 0 0 53801.36846 0 0 10048.53722 0 0 0 6.11795176e-05 4193.353764 0 0 0 15450.2065 66776.46107 0 14058.05665 0 130.2955793 2788.807935 3221.419175 4417.9814 0 971.3168795 3194.291918 0 0 30459.33232 8039.779632 318.5180809 0 0.001726599385 0 0 0 2705.213828 6701.155019 4353.208593 22680.78911 49055.05432 30250.55012 0 45784.45369 0 0 3201.093155 70183.06859 0 29531.72865 0 0 17384.99861 1499.962761 33744.27607 0 0 0 8898.0448 4977.004998 0 0 0 2547.784223 13288.46193 30157.72365 8156.588929 0 6920.959197 7217.524168 1975.067946 0 54669.04265 17216.58866 54.10222311 7529.395308 0 24690.32388 4461.682771 0 30553.81093 2360.959027 299.7720305 3884.449213 117.8886282 0 6930.492459 8667.10984 0 0 131.7497703 0 0 0 24055.25428 0 6713.271831 3716.830027 283.4893648 0 32259.92317 0 0 0 +0 0 0 3406.897258 8528.797514 746.0761514 1689.372222 6963.383212 0 2.068645775 895.4349706 0 46573.75516 1203.06334 0 5058.588765 14635.32959 42002.27407 1785.841102 4087.587209 0 7817.83157 56093.18339 0 0 0 0 2736.316641 0 0 0 4884.26659 0 0 1135.267305 1766.047681 9115.042426 472.7849344 2411.161008 51.09392795 62471.2243 0 0 24706.29156 0 23063.28144 0 0 7196.513125 28549.49408 0 0 0 98.21348716 0 0 0 0 32.94113966 35484.32949 0 4986.168323 98.53157983 59591.95251 4446.382504 0 50.39852276 44861.03278 0 103.0615596 0 0 0 2263.105228 11022.53623 0 12490.7794 32908.87852 2213.426408 0 2762.957928 0 0 28462.99913 428.2589742 146.2627405 0 0.03419480333 5868.478571 62321.1486 984.8867636 34903.24183 6903.130999 14758.42327 0 0 2008.097027 37490.7922 1712.45733 3632.338856 29747.01463 0 10374.11175 19763.16417 0 0 48029.84598 3781.201858 514.6698474 0 1523.757139 0 19518.59484 0 4646.617917 27445.50717 9878.111533 17469.36983 0 1005.489337 9938.555085 383.4400788 2446.091221 2632.959937 36568.21423 0 18584.70784 0 5359.98163 32.40376964 3340.817449 1868.002969 0 2737.713622 9889.561601 1299.745474 19262.59793 0 0 2565.701135 42483.03726 390.8376259 3.589943451e-06 0 2412.654783 23066.13553 1761.056331 1249.325222 0 40748.79287 2076.880641 10715.8197 0 35352.78943 1645.734912 1218.238759 0 0 24823.84986 0 59.34561741 15108.53498 8242.675687 17601.09465 27926.28072 0 2980.483954 42798.14372 15246.37202 5918.21663 51040.2538 751.8931819 9103.023084 16987.65911 5585.450855 1464.694476 13032.13225 2186.053769 13393.76566 35302.02772 3423.872001 0 0 8033.717607 0 1952.099434 0 570.9404144 168.7579176 3490.865359 6723.316122 11074.89458 0 0 3405.868648 25486.48703 5156.168307 0 0 28430.04645 8404.606034 15077.65386 0 842.5810275 74.68228662 0 14888.44991 33.18361205 0 43256.84886 0 5703.516412 6579.241612 0 0 3593.937839 940.6038671 3231.30224 0 2836.171071 1796.211946 19136.77854 23076.45738 50380.85525 1983.573645 0 0 1739.53998 92.75280262 744.3138306 0 0 0 0 24691.42065 0 1849.515187 16947.91783 1914.67234 961.5836016 0 11752.80271 3446.649186 3009.872418 413.529607 0 8869.814688 684.4594599 0 0 4.697134117 12998.49998 6882.186076 5558.023135 0 37.0361144 8393.597153 2197.554226 0 20080.98221 0 3599.286261 2682.304243 14252.3279 96594.63084 6018.990967 0 0 196.8304066 30.18353402 0 0 22841.18295 16496.97919 0 0 21001.54572 6177.798567 400.6471521 4633.274321 0 2892.074252 0 0.0001001032388 321.6342591 0 0 0 38835.00684 0 0 0 12258.57625 0 0 0 6380.163897 9975.544686 14506.47235 422.2443513 +0 52334.90825 1005.027647 19814.1184 0 0 0 0 0.08836567732 0 4550.237573 857.4033132 0 670.9974143 0 35816.02813 0 845.1244934 0 0 0 0 0 0 37.33013598 2356.203336 466.3313018 0 17192.3798 0 34767.69063 78.84282617 34006.6095 0 0 17792.32264 117.1087403 0 18713.47893 0 45.71152236 0 0 0 9847.616063 120.5210706 0 0 305.263278 6169.178211 35878.63869 1906.739806 14522.94984 37002.49971 0 38605.03423 0 9114.689448 0 0 32909.66035 39074.60696 0.001789174104 6390.915983 10866.42464 14.53789555 2734.84706 0 0 17963.59668 0 2167.620091 0 28301.86468 7848.036864 41162.76522 10856.91702 1463.678016 0 11306.91305 245.9641947 0 5971.223852 14101.28655 0 4.093364581e-12 2553.032221 31049.87841 33513.58486 231.2952664 0 0 0 8847.578794 49135.00746 0 3867.343587 10371.41367 21668.68487 0 4295.542813 4412.798301 2938.828614 3478.487224 4821.070859 0 4844.757925 5854.099156 35179.0137 0 0 0 9452.173289 0 4445.030101 42576.43422 23043.28647 4302.820708 0 34489.16441 0 0 1950.436393 30310.60934 0 0 13960.65714 0 30042.37974 9300.19775 1981.782597 0 8601.25881 0 28762.08901 9514.34379 0.148769249 7407.416142 1202.744711 78.03637169 0 2427.040125 77.5540936 5698.326744 3404.307895 3335.794573 25.14115774 37706.52275 3961.742893 1382.796626 0 0 9489.525511 20622.47473 0 9349.618248 27324.07463 1556.925959 20053.14362 18204.60121 0 9652.223782 60.69739044 0 17409.11077 0 4079.388706 221.8999991 0 48651.68305 40984.4837 11690.66294 3407.751917 0 10458.76073 0 31989.24193 4349.742748 8.588393974e-10 5703.119757 0 36552.68922 17530.0294 0 9488.235114 35751.28516 36709.07046 1778.82911 4466.093888 272.8144871 2252.658965 1774.96635 38445.1278 120.2862277 0 4332.79645 15024.34606 44073.54112 11550.97897 49635.10746 22135.34849 35.03611011 0 23108.44224 0 25711.68999 0 89.66917018 8721.145161 630.2235942 0.02272034849 0 30.15544394 5477.769745 98.95915327 15528.18846 5556.01873 43513.52974 9023.165142 0 0 7422.893236 3027.41721 0 1885.176902 4022.335003 462.8734367 4665.344076 0 926.3821389 0 902.6706732 0 0 15328.16185 8759.184105 6426.475559 0 33.12979784 0 2768.394465 12100.38256 1473.549614 138.0389178 10601.93563 0 0 11534.14941 0 551.7522175 0 0 0 282.2160721 0 0 24951.61242 20188.15085 0 0 27408.69185 43482.60709 0 11638.17709 0 703.0752889 0 694.8617974 2530.73231 13274.65889 0 6810.744996 0 21814.63024 0 17944.21757 3098.219663 2131.027008 0 1389.134426 4421.428455 0 18.35226207 101.7354094 0 3418.057678 7360.740986 0 1.775715284e-11 0 17959.83899 71.09345259 995.2083117 41595.65357 0 0 14.27350362 0 1.068411101 0 +0 1869.275859 0 16304.92507 0 6198.200559 0 340.3664169 14143.28698 2268.939353 0 205.1079722 3686.943809 3572.865997 0 0 0 0 3835.916027 5551.168896 31920.77634 3728.538592 13064.27316 0 0 6849.712333 0 3965.863762 2068.962303 184.3626555 14420.02623 297.3841748 1983.430565 25116.56728 0 14931.405 2126.552767 47465.73123 460.005601 4965.950576 297.8885741 0 33647.08041 26064.61569 6513.209036 0 6966.294882 49.2797983 0 0 9836.778719 1563.794851 0 116.9810547 0 0 30.99543578 9077.314256 2057.071116 608.3664646 0 0 0 68.77285577 0 2094.68959 0 0 83726.19236 1718.240235 4076.565681 11508.48155 0 8682.89839 0 0 10335.07693 33625.45105 16724.5849 0 0 0 1108.170878 0 0 28976.40313 4599.885059 2583.843109 0 0 626.9345073 33147.67699 0 1859.927864 0 0 1648.178886 5841.079604 263.2333201 0 7971.572318 695.1264344 34986.55331 2816.453239 27122.93108 58359.04433 17546.91507 37953.21464 964.4509555 39733.2036 0 97455.41422 16387.52302 0 5158.322923 30760.50815 11072.73036 7313.038204 0 24245.02205 0 0 7805.64173 0 8173.664433 0 9653.63219 0 13956.24271 4465.233437 14358.1656 6665.698379 0 3077.135042 16670.05583 6261.299157 40890.66841 0 40634.59028 0 1455.612488 24205.43563 0 0 719.4703709 45660.88179 15283.16556 0.0002979493097 15793.10602 0 7304.961249 0 4140.097075 3089.45591 3681.673742 45632.15249 46519.95345 23840.92245 70694.16874 46.77925593 1920.423933 117.1459524 0 8083.01866 0 77.87162123 0 0 0 14543.04587 39.95665898 13716.16624 1458.015939 0 2306.724577 19847.52599 47119.40069 0 7370.227217 0 13992.23925 0 0 8.597715976e-07 0 11481.42539 2055.038354 0 0 46.79801954 170.1261278 156.0678306 26486.74969 56.83466633 0 2043.926784 0 0 4804.903374 0 1248.311569 15777.89403 200.8652413 0 0 57458.92749 0 6699.604952 4662.924364 4870.991453 58501.44542 2422.991408 11965.26815 0 45898.74882 0 0 0 39022.47041 7664.696974 34.38306986 0.6051359992 0 422.9412248 0 16463.85759 0 161.685644 0 0 8376.277866 31561.55958 8596.355675 0 0 1177.117116 2871.072056 47661.76506 260.0290571 2495.914746 9229.223787 2534.232231 15482.28718 1395.075257 0 0 14415.14911 0 3689.62206 6522.385934 15804.0998 0 436.6646777 4088.684696 862.866607 0 31120.64829 7416.59669 4389.470961 21502.38709 5862.84764 0 3830.278094 1312.555991 0 3427.927317 20667.34574 61932.25131 2696.298347 336.0646483 0 2073.371637 952.5205584 0 4616.972673 0 0 0 0 21528.77672 7077.629443 0 30999.34792 31675.97115 0 2016.604525 34079.09088 40023.24616 0 0 7877.857428 0 14177.69505 3000.384756 0 1978.749551 14107.32585 20200.85104 0 0 +0 14397.48656 0 17859.84168 0 0 0 0 8331.902642 3563.930365 0 1498.50957 3756.742551 9479.024029 5696.916817 0 3060.794881 0 0 9805.132347 18014.52244 27598.9647 0 2549.332225 1915.364747 136.9239637 0 2209.097124 0 0 577.2125039 2366.193487 12796.67382 0 32262.23292 0 0 10.41606495 34.04984399 181.1822388 505.9049229 0 22927.59335 0 0 3347.203198 0 2868.652102 32038.20292 0 3889.282332 3281.591963 70.59786886 16961.18138 2402.722047 0 0 7306.260692 0 9342.195598 18098.77668 0 6592.136109 0 4360.377594 8039.909058 5201.124076 1660.753521 3871.463767 0 0 17840.74136 0 12739.21919 0 0 49747.50354 16004.57263 7361.263652 2584.638349 0 177.4864658 0 105097.1727 40716.17944 4380.256478 0 84090.33841 35670.01298 65555.04078 9374.362989 0 7611.427847 110058.1386 0.005534092357 1.280656836 39107.01843 16904.3356 46.31457846 0 20126.15206 41.75664315 40587.29962 648.8430027 5976.298433 28519.82797 15802.65736 2412.362757 322.6012624 0 2055.451077 9658.174961 0 99270.51211 7004.616836 0 1424.343891 4121.221348 0 7328.480909 182.5198667 72316.56431 8539.551267 565.7735633 1565.274427 0 0 6816.858435 0 0 1453.858611 0 3506.915362 5628.657985 25522.36942 3141.741293 785.3889129 28491.60538 3365.053532 1230.311784 125730.6338 0 53162.30895 17779.93726 9086.603917 7048.840046 26377.22488 4211.688061 0 133.9505944 0 5191.839152 6985.501723 0 0 1.018695866e-08 44507.15802 0 0 5970.112697 10454.96747 11879.56381 14780.13204 132.9996118 38182.4712 17249.33856 39899.6067 1934.642544 2063.023871 10507.29039 2632.74774 0 2147.935396 2475.567461 5093.698358 1305.474778 0 0 13466.72255 3904.525933 4300.975385 45821.41499 0 21482.10137 0 0 4984.588431 2030.516028 33814.71024 387.1587895 1030.357006 4139.600368 44463.9255 64.98380461 0 41366.38754 0 0 986.5020784 6663.929855 0 0 64.04354471 4874.849593 48840.58167 1728.153615 3246.013029 2098.294404 3012.682116 25865.58045 0 0 0 1.676497741e-08 0 5215.040405 28002.99194 0.006297677463 8342.899544 2154.058417 831.6059753 0 15657.55981 33.18889273 607.3206113 8499.655439 0 40311.93704 620.8405493 46813.23644 0 12693.98987 11567.33635 55.24446298 0 0 0 11096.74441 0 32750.03737 0 1107.589339 0 0 0 8447.216841 8184.327895 2685.615197 0 6703.054741 2066.334726 0 1976.818761 1418.753155 0 2865.884017 3172.430544 17.11330293 24563.7161 0 0 0 34841.22722 9201.395249 0 56632.74541 14721.4507 0 0 15244.13995 5650.751602 39.24208252 0 0 240.8071678 2287.108886 4730.754343 0 0 28607.78135 2877.837714 55.26334115 0 0 0 0 0 0 0 7899.734161 19850.0866 0 10790.46883 0 0 43998.25252 0 0 24442.01374 41799.93906 +0 24916.27133 0 0 3464.539017 12693.66172 0 0 0 60.58090848 0 0 229.3208003 9633.12063 241.6578671 133.0860821 5381.51945 0 5485.844921 0 0 14837.62892 0 3383.621908 3937.45625 0 0 4362.704926 0 0 6473.577791 0 0 3098.61009 0 0 0 9728.98128 0 38460.60123 4876.162842 0 0 0 0 13229.62966 0 0 36.18678207 0 13583.88587 27277.34637 371.6665189 28613.94448 0 4160.508099 0 0 10853.19614 7121.95801 24259.22322 0 0 0 11478.53361 1575.699917 0 89290.70877 0 7426.050994 98.85476886 317.9248566 1573.084454 0 694.4227091 1484.890653 13514.09346 10698.15459 0 0 20597.76972 6785.917602 0 24210.05794 0 3366.92669 0 0 0 31229.99978 189.217548 0 14292.63701 48.1128369 15109.08558 7.631318084 65195.90662 10703.63762 0 0 29058.2965 7097.566555 80792.90614 4728.990353 0 38684.86368 17339.40714 0 5188.430455 0 556.198996 0 36.51484179 6038.479823 0 50019.9418 205.4717954 10.21063373 0 1698.946506 0 25821.7112 7183.284411 19996.70879 0 12078.59712 29135.60573 0 51.61286228 16434.71553 36945.92486 0 30506.34142 1513.267228 24938.27537 0 0 0 293.6068262 3023.617481 3968.141325 75932.98525 4627.908046 4581.307255 0 886.1664728 0 0 11690.70092 5313.572786 6558.593196 0 0 13807.79051 2263.575089 0 11388.34916 1834.160725 7082.591915 13304.97235 25753.84587 31482.40657 59096.70373 4821.650155 48.28203477 2704.47565 0 13227.95033 19791.11238 76915.32807 1.988720813 0 147.7145445 6078.416852 36857.9927 9.394255986e-08 1494.551819 0 990.2346518 0 0 0 0 31703.84406 2126.853698 72289.41516 57431.76445 49.71778465 17148.87947 2791.447447 7877.155361 0 51021.54206 0 7804.603929 1550.843536 0 8682.335264 0 39668.05965 0 1198.709308 3717.110513 0 38.13114524 18471.89814 1293.195837 0 0 0 0 0 3601.006819 25488.50243 0 7984.622586 6354.541019 21455.54687 17848.30941 46026.67659 1301.46147 42342.02501 21085.50671 0 5464.735124 0 0 37014.61531 11212.1847 0 0 2269.862426 38778.38816 7672.435824 2.654389806 25374.04634 1498.203212 0 1872.488532 0 19721.2539 2523.399947 364.3383223 0 5156.04862 2640.069464 677.0032273 0 46818.60184 0 7397.610563 0 0 16.63950127 10423.1776 1920.909782 12853.51122 0 0 2033.572585 2246.902227 1365.60013 222.8833647 13466.51431 3047.191628 2259.77046 7894.328121 0 0 23140.59627 38.63937182 37.24715076 20254.22231 0 0 20635.18691 0 0 5550.638239 0 0 187.5886643 19927.2463 5350.773189 0 0 23017.08403 21941.42282 3733.440786 57905.71823 0 0 3.269748971 169.8677054 87.12031649 63.50157983 0 5279.120622 0 18355.77179 +0 3.325212385e-09 9273.848615 0 0 0 550.7334647 0 10573.5439 0 0 40438.35959 0 3008.645434 14501.49951 0 0 0 0 17326.50019 22952.512 0 108.8909029 6851.378151 50956.12638 9377.385283 10392.77342 0 0 1712.599253 0 0 7248.04555 42784.86833 0 18103.89426 3784.252267 1556.652919 994.2377676 3713.194253 37920.54391 0 0 31.37302631 8497.609666 0 0 28202.50622 0.5977379861 0 31886.56283 0 1595.445596 2018.229277 0 6842.456125 49023.96381 0 18762.89661 1927.09211 0 20993.84804 0 0 122497.0227 23033.74962 49950.84545 2387.46505 1030.071459 18105.68893 14366.49375 9559.435425 0 1338.681087 8399.951091 22281.06682 0 14436.38729 49711.62181 0 0 0 9780.81932 23041.32794 267.7410943 0 0 583.9761969 0 37517.87757 0 3993.058192 8549.363018 0 25827.12227 14006.395 37641.53965 0 0 43679.08333 4934.615717 39048.74261 0 4676.191894 0 0 81875.06278 1673.9176 6695.890324 1711.530816 0 2520.813531 0 3043.091774 36308.94008 4711.890215 0 3945.878508 43727.6133 0 9.157686541 25894.04765 32738.328 4272.023945 10292.2395 0 50616.09286 0 2630.397814 36359.46097 0 5395.317759 0 0 10853.50136 16910.18824 14132.93841 0 140.3564299 441.8386588 19158.15054 18815.38981 4377.137427 0 2589.465446 0 2119.175062 19570.89258 0 82250.5797 20155.69159 0 30173.75644 1243.339042 4161.687076 4621.861638 6904.360261 2826.918087 0 0 0 0 0 0 0 5923.244254 0 15706.07864 44.18845027 522.5245385 0 6310.201393 213.5993325 0 3531.478941 0 17957.66738 36066.64237 0 0 25169.78004 7650.807416 0 0 0 0 8787.254638 19940.3917 46.12776545 23723.31124 12989.71698 0 29571.37547 24676.52087 13175.30005 29087.15641 59055.01975 0 9.806752554 13324.46484 227.3655587 25781.42304 0 0 11417.60186 6334.502928 0 0 49996.44744 0 0 6222.82155 0 30456.9133 23971.01816 0 19261.34375 31929.06612 0 1660.1016 4677.001408 0 43986.24552 4015.759063 6383.244288 6202.737602 12769.70037 0 0 53.77207162 36745.3311 13125.10672 0 0 0 1872.478222 388.4020295 3660.289915 27802.65081 8.384360718e-12 0 0 0 0 51816.04235 2989.006474 0 0 1328.330486 1447.761415 526.4299538 50476.07369 2116.668514 13321.72065 2080.732184 0 28810.78574 0 12416.63796 0 0 0 994.0107803 0 3958.700993 0 2969.615002 0 3945.197086 11200.3756 0 35545.02211 2892.069937 0 0 15.9367323 1447.806852 0 7375.074701 30191.66686 1250.903075 0 3163.367879 0 0 14692.85294 16249.51358 4245.469975 5789.728769 0 2049.185397 0 0 0 0 10140.92677 1068.147207 0 0 33095.14684 +7495.169098 0 105.1438419 0 0 18725.70664 0 0 0 7782.058608 0 0 32832.0471 0 0 223.4640777 0 5843.082056 0 0 0 0 35033.57932 0 0 4026.40132 0 24835.85194 9168.729343 9566.219994 0 0 0 595.3138019 1734.101503 0 8328.468124 51312.89724 41377.22679 0 0 10020.72057 1781.731522 3730.620603 0 1789.365608 2456.446525 0 2007.146307 468.6237989 5509.039396 367.9585534 3631.597488 0 425.0654418 1884.598925 26.04994576 0 0 3632.634506 3939.194183 15402.75637 7591.906114 38914.96046 56.11605246 15804.8945 92.24481846 0 413.1866474 57987.7481 0 63717.93494 0 25498.71448 0 14314.25513 0 495.2948885 0 2025.840012 0 105.3522108 8780.709277 12255.73 366.7908319 5143.128887 0 36955.71239 0 544.783913 6804.417002 4068.363668 0 11932.72973 53768.00165 11678.50863 20738.05544 8234.032369 2562.277529 0 0 1546.649539 28975.90417 38812.63819 0 32102.59834 1986.370461 15059.16437 17387.86499 24457.25424 20781.37229 16636.87275 0 0 5971.9557 11102.36339 1608.211114 2332.349802 0 0 29575.77898 0 178.7750784 526.2925419 41725.18731 57263.69638 8602.900404 3003.448543 53187.38375 36347.95004 5074.838375 7602.885466 34633.56414 38409.38432 115095.9327 0 0 0 9128.301972 2182.116025 0 11048.09313 7055.750609 35504.58487 38875.86129 14780.84242 5.889249752e-13 261.4713345 26776.18415 61223.1165 6401.842861 0 32391.6725 0 0 0 56956.38934 52653.85096 1539.456015 11666.388 0 0 30507.1259 1104.275725 15038.0462 13341.39859 0 4727.713478 22646.01547 7198.884852 24006.27557 9543.081349 42879.56151 51612.76922 200.9258496 0 14458.39667 9078.325204 7385.185004 81.24159102 0 51509.99256 0 8010.746065 2370.425892 36342.19989 8319.237829 69451.1519 1295.855454 9944.295577 12324.30505 223.5196049 22449.8078 0.0003223850438 0 10730.30045 44861.62011 0 3126.221163 12470.30329 0.0001933451219 7196.684491 0 0 25788.82202 6434.587915 21043.59105 403.2769879 4534.917147 0 42747.58593 40766.30004 20617.40295 0 0.1757967429 70.30428669 52721.38806 2292.659177 0.6647083635 13412.96724 0 0 17830.18836 4027.328464 7314.02423 0 0 8284.9668 25295.97045 33250.70364 0 15309.30505 6649.781297 0 0 0 5818.010531 0 8359.118466 44308.90262 25606.46966 3575.812946 52708.66582 0 2942.358068 0 0 289.6789892 39273.15588 0 0 0 0 229.4142537 19214.77419 5506.036103 0 0 0 155.7165624 13253.88796 330.7550287 4846.429477 1179.231786 709.605117 3871.241338 0 0 0 0 359.8728836 0 114.6993464 0 0 0 9707.900574 16284.0355 28627.44782 5446.546123 0 5035.336638 471.8863585 0 7111.787937 911.2901056 0 64999.95286 0 0 880.3520565 2855.460779 10867.3196 98.01944243 0 49449.9707 2823.295663 8555.038128 32708.41282 0 +572.6805082 4071.621648 1909.872039 10125.51231 54589.2744 682.2037584 30898.01742 17242.67566 24420.65179 19029.56863 7.62607078 0 10172.60141 1469.802806 2036.047238 2967.378027 1413.514628 0 15706.59951 0 0 0 0 0 0 5350.817213 37429.70681 2452.67812 607.1855158 7100.007823 3790.9248 376.3761793 35275.39712 56225.55756 9102.060216 205.2610356 0 0 0 5865.475724 0 0 0 5363.719326 0 54102.67605 0 28493.66179 260.9089091 0 107600.0656 32628.84153 0 0 13556.34819 494.4273279 62632.61002 0 596.1599545 0 22679.35413 765.8013714 1468.621607 108.5096776 15778.82639 0 16845.26879 0 0 11106.41713 0 17124.63565 0 12687.72118 38309.58764 0 33.46601509 0 10501.46499 7115.125016 6891.402593 24576.6976 2838.743648 2477.629256 5788.826856 0 4472.87099 0 0 81085.52595 0 0 29188.7344 0 1564.178447 43737.98854 12730.48789 15798.61795 11772.03661 377.2498984 17624.95719 1377.380562 2744.701792 4060.187576 34916.01369 4328.917966 30.86806664 24056.11105 7702.073586 3185.724214 36511.88411 61.37605478 20529.57355 2109.230881 4388.420773 1577.133129 0 0 0 27311.55995 2963.523569 9042.073916 29757.02709 780.6748591 10846.8342 37567.93183 207.495575 2.380945317e-05 38403.33251 539.6626862 7950.093819 2124.143135 0 47541.30319 23359.46313 6808.35407 0 19606.29308 0 8605.769938 411.0497934 6549.661144 17391.47873 0 0.005425311932 1990.913915 0 0 10008.12861 46.44788543 1101.67745 0 27669.33819 0 0 23830.12251 0 0 0 0 0 653.6995388 5709.181158 27509.99751 0 63.32558685 0 7181.629162 12584.00518 1446.100363 29582.65567 0 9968.813779 0 0 32160.04576 0 93361.70394 0 21652.04475 2546.54042 0 13134.72012 4692.318553 29948.5141 17353.38543 40415.06493 2278.432443 103.9638871 0 3052.923445 0 3205.586402 1616.436051 20620.34049 1672.852341 2102.330136 0 5202.746275 0 2506.781444 47.98962011 0 0 291.6427384 39526.53489 0 0 5309.314398 27499.18339 0 0 0 19138.1064 0 5927.805472 0 37135.38651 0 2403.109469 9831.000649 2576.027601 3303.557633 2760.139665 8860.941922 494.4712816 9718.514972 0 0 0 30521.09777 43449.78014 32458.67174 0 0 4326.466424 16945.4967 25220.61307 8195.026103 0 773.2164221 275.6647618 0 53897.48137 0 44867.07747 12113.49004 1047.396922 0 683.5854399 46365.20159 0 55718.35312 2931.974621 0 171.7769026 41595.15695 0 4471.601736 0 0 28209.58359 12850.2342 15548.81208 42.72401137 25.49015176 543.233401 0 3008.878415 29169.8437 7641.556059 0 7737.27163 5747.949684 747.4381995 66970.17631 30.31306512 615.709309 33762.99027 0 9304.107739 0 71509.29265 0 3157.947378 2007.826295 5862.584659 0 0 2793.784174 22941.37213 11433.93195 16353.96156 0 8823.104089 123.9281367 0 960.0992413 0 274.270486 +0 3363.32531 0 0 0 0 0 15345.30796 0 0 0 0 35314.36701 30877.67241 25795.26215 0 4462.697468 1691.527742 1587.015194 0 0 0 0 29911.54625 7764.106255 2732.448991 31549.06735 0 0 4209.925702 0 0 221.2017719 6064.028673 0 7308.499237 17204.41751 0 793.7607654 0 0 20145.03219 0 60453.09037 14653.57956 0 1168.365168 17685.02138 0 0 23783.63648 0 32754.55146 21092.7558 2070.566481 0 171.8618042 0 0 22611.18147 26394.70335 27904.18366 15155.96103 0 4779.731936 142.0205074 0 0 70371.01617 0 30597.05899 0 0 0 0 39399.12674 8693.391211 6.600269302 4528.267249 0 65702.58365 5644.858286 258.9063195 0 17544.85236 41219.85536 5408.577833 46305.29275 3691.686624 3678.329608 172.0327636 0 0 30169.53465 36375.71773 3418.783888 0 503.2391276 0 0 0 701.8769519 2593.21417 4243.765125 0 739.4834353 1963.93089 0 50.09068925 11096.18061 470.4665367 0 31099.83273 34545.86976 72.82504563 0.486272167 65266.76639 528.3883724 18880.03484 71.53036278 7293.121304 4648.958869 0 436.5036128 4052.777937 1461.778065 8339.954708 0 22606.89804 5792.369317 7112.098218 84652.5237 19933.13253 38.74346383 4918.743271 25760.04275 3258.766188 10693.70944 28479.34034 0 11496.54787 3.303950127e-08 0.1060047408 0 0 40102.27972 41073.9684 10245.89502 0 0 77700.77682 16711.11761 16041.52282 26387.83674 13735.3602 0 0 4601.309702 542.0037106 21951.59401 0 2249.755687 0 6385.778645 2940.154759 816.3669672 63193.09814 6426.162429 10142.28409 0 5440.511014 5452.454787 0 1113.452987 221.2339533 42304.79565 37611.78145 574.9631612 0 2489.095042 0 0 17865.66499 77464.85892 0 1233.16032 10011.44657 0 0 20137.32423 39.80998517 7938.138309 119.5262448 29478.93509 16380.48725 81.06584968 0 0 0 627.7913224 80321.00744 145.6848538 0 0 0 12092.42887 14985.8253 12468.36527 8761.216783 43.89702333 26153.85456 8157.193215 11727.95779 102.3406501 0 4165.736127 7692.727226 48329.24827 25438.18172 0 0 0 1107.71444 67031.55712 0 24812.52416 13130.25677 4125.92552 0 506.6109713 0 0 12071.43336 0 0 0 13628.53283 0.0003979116659 3216.455567 5386.265181 21468.94827 2079.070041 6647.092049 112.5641409 0 67.51151432 0 6705.521933 459.163439 63002.43927 16534.51007 20303.277 0 25661.4193 0 49.64321707 0 14318.61339 3693.158258 0 0 266.8340774 96.59598981 0 18511.62875 8740.933189 0 0 1943.824861 39579.25669 0 0 314.6075149 0 0 0 0 387.3935695 0 0 0 11654.78831 0 0 0 0 0 30253.3366 21988.67559 1836.438578 0 0 0 3722.04129 0 54726.46654 2952.234279 1259.792381 0 7435.850538 +0 8901.0199 0 0 0 6631.993982 13189.10608 131.3043191 0 14290.01447 0 24575.97573 18445.15858 0 8076.658325 18075.06384 0 0 0 0 1807.32697 0 19634.22202 50417.95452 0 7604.313788 0 0 0 39607.70356 0 815.3591639 20385.97384 34430.115 26.95005523 0 15881.16696 18727.48327 0 22689.76908 1166.499694 0 0 0 1794.817208 10107.958 28995.43115 1534.229231 0 48506.3625 20009.55388 0 0 0 0 49641.31518 0.07395157212 11961.92803 113.6821371 38742.86711 0 26411.02937 19687.09862 0 0 49170.87402 23176.19595 41432.98634 21739.91821 0 0 33190.55359 9180.90317 26508.24559 31403.40438 0 28350.09677 36096.10096 30053.56273 0 0 12066.30699 0 982.8090071 47464.13423 0 2132.085492 3344.931598 0 0 37159.43812 15851.07394 484.4283425 11.99088038 16113.519 101.7490081 0 0 0 0 30996.24431 0 0 0 32124.32902 1717.310909 0 68468.82194 0 0 0 24797.22972 0 7072.912356 97.56215014 5116.352411 5000.284357 375.3382899 0 4243.937544 9299.054363 5064.877977 36868.16085 25969.89511 10763.83735 15212.82468 32.46776425 0 0 40402.83213 46825.85164 3306.199975 1862.321108 2026.082326 11357.98208 10555.67544 79350.05183 0 14795.33303 2.243652762e-07 18126.46637 0 47670.52239 56140.9554 0.0330074895 0 60057.82264 0 36298.23349 31302.55086 32294.63647 23768.23958 48913.18689 16690.13302 0 5142.157303 15280.43459 1.477938666e-12 7016.79593 11350.98715 15674.79623 53482.70013 57257.24516 21008.01153 64.72759482 5557.928663 0 3673.303344 4907.055708 68.85630012 18342.83722 0 9026.562143 31333.56532 0 0 0 984.9822204 3873.244325 1880.750917 86004.6243 22907.88024 26158.84805 148.808999 0 34255.81945 0 31.4830463 4749.961017 26737.25694 61439.58312 15442.55805 4426.040821 13666.51552 33113.3338 21567.44937 6999.661313 0 33503.23953 2182.621465 0 36222.77408 5646.338342 6426.248383 6903.457464 0 12137.68858 12758.96802 105.5892782 30650.83645 24587.11611 3894.106108 395.4896489 0 91.13377525 18796.86312 191.440814 38687.70599 0 0 34227.61774 0 41.03358948 258.1594737 8882.266677 164.4370371 0 10482.54816 819.5547254 9527.442764 66.43503503 88.07106971 0 0 0 0 17286.14496 0 0 0 0 0 1464.239759 0 11261.45554 2698.660556 2422.349259 0 1925.334207 0 0 684.6941609 21633.25843 48.35530129 34463.87916 64462.43798 1189.75691 0 163.4873451 0 45400.68078 0 6800.517134 8827.643642 2278.431956 4600.537131 24858.57263 1087.422668 0 19592.69853 228.7546233 0 0 0 28408.44524 0 0 46657.96143 0 1005.59559 1659.03788 4851.470569 3363.273442 0 0 0 21947.42102 0 1.731030499e-06 0 0 0 0 2173.673363 6224.562328 9814.845259 0 0 0 0 +0 0 24662.01462 323.7521585 0 0 12139.24877 0 0 43815.76211 6668.852838 86662.07875 0 0 4192.393596 21071.70586 0 36.17065039 0 41910.42558 0 7004.00717 13240.55067 0 4475.83732 624.4658165 90.97475278 0 5482.363224 0 31620.71042 0.04754290307 0 61150.2887 0 3753.388899 27242.69738 1028.369681 1375.534492 0 0 0 0 1897.983724 78.69632179 31579.85473 0 0 13162.96606 18924.52373 0 2088.730308 0 0 35845.88053 46.95521636 0 0 0 0 1070.886378 0 1790.884505 8616.722149 26576.11328 0 0 6910.759586 19233.44984 9052.3091 0 2984.297867 8745.466494 7343.486018 0 12281.90734 0 1794.03584 0 24638.6875 0 92506.40402 6839.75253 8702.135055 5923.718046 0 37.90523019 0 20102.43943 0 6224.781101 22930.57552 21122.0072 3799.903655 105535.9467 18358.60772 0 53552.15421 21979.0677 4.416034365 9985.914058 25101.32227 0 0 4359.865598 1640.408787 0 2678.093946 0 14218.47853 3499.617981 36453.37496 0 59281.98938 0 0 16591.82388 2258.764619 5108.869864 145.7373864 0 2.480903753 23359.49689 0 13395.39412 0 0 0 0 53172.53082 40206.11435 20043.3525 9455.461911 1550.392815 35327.45208 10037.51778 69.13989867 97.34474147 6729.831055 0.001247822949 0 0 25906.11774 26350.81129 40.73211768 0 33378.08985 0 3063.221231 9152.054982 45500.45793 1125.617903 0 0 20506.37885 0 28340.82278 0 0 0 3288.09233 0 7684.216534 0 74797.31495 13514.8375 9516.784993 513.0642585 8576.412151 0 365.8629926 37138.11496 9040.404378 29770.60947 0 7083.126648 5780.214891 0 70284.46482 18486.89414 4218.376712 708.0363835 43444.44654 1111.707195 0 377.662021 2232.520338 2243.011969 54111.71134 0 3020.71877 0 0 41584.74808 54170.3813 5932.482753 1983.900323 66.45538587 37592.56657 0 0 0 6909.386037 24282.31018 0 27546.79261 905.2567882 36136.18243 0 0 0 52648.07495 2339.246161 13178.2996 28.09886873 38429.5819 2637.635046 16918.12468 47396.13592 0 0 16010.30941 0 0 60519.59026 3475.185095 272.7953152 49521.3166 2186.680979 26564.87203 7444.471734 8688.868105 0 0 40756.51686 0 0 0 0 1809.250075 26488.54172 0 0 0 10426.04805 0 0 79166.22858 2863.829816 2611.641042 0 0 1527.477045 0 26944.75509 0 45.00540935 0 6970.795504 0 0 24151.47246 0 4695.524443 182.2119576 0 0 10149.00374 34504.89504 528.2633583 34433.43408 2296.26214 45125.30687 215.1247099 16338.95763 7608.005456 0 29375.85145 15278.14522 0 20022.58626 14901.23839 0 3388.072099 0 233.7466802 0 1027.086284 304.9845416 1917.338917 0 48240.5933 0 14647.70005 0 0 11206.09143 51310.05707 2412.479197 0 +782.122328 0 4502.257643 1133.891003 0 0 3008.686132 30.06091317 0 3170.635549 674.0871873 0 0 0 29012.87288 6406.895341 3213.178221 4803.888209 0 0 0 7493.357151 6355.915856 7503.013161 5173.836752 0 917.3826015 0 86036.19368 12060.88979 895.8954614 237.671999 9717.732775 15901.62533 1839.143518 0 4276.277088 0 23993.39295 0 20647.82513 39266.86419 0.0002249198691 40939.21792 12384.14533 8762.523814 0 2.038054891e-10 0 965.4548752 2956.197805 10957.30857 0 1989.744915 0 0 32790.55792 0 10049.05016 6820.836344 0 161.2890104 2778.838101 11671.67866 36388.55371 8477.46371 6213.896843 8651.30137 24717.29142 56223.19378 2630.673712 0 3732.133253 0 0 3063.21738 0 2695.534344 12136.72749 0 39001.63433 0 5746.332233 0 12949.96896 26145.38138 5729.641412 0 21006.65889 0 0 0 0 16815.3916 628.6088741 19580.717 55992.64188 27467.53279 59304.87263 5751.110634 16016.65316 1804.476559 14159.09681 1288.195333 59221.19465 40813.38269 75206.44633 79440.38599 112240.4383 0 0 31436.5741 17139.13857 980.9298714 0 7761.170895 0 18236.10303 0 0 0 93.46497748 27997.13804 0 1400.199322 0 2364.745485 0 0 2515.373155 2637.569809 0 74466.23878 9018.167053 7800.421791 10127.11768 0 1080.827536 586.2305893 2863.67961 25666.7334 10815.80669 47008.44138 2166.521685 149.6829497 13917.1639 951.929139 11806.92858 3810.471614 2162.753339 296.443161 15814.87003 18625.73138 1719.621487 15864.48336 0 0 0 7603.572125 74.49775987 0 0 143.5559496 0 55090.40316 0.001791063816 1975.244316 2102.198559 33775.15377 8470.299677 0 69767.1167 5485.308593 3418.128623 0 8545.865803 9601.885376 749.694896 71.1060498 1497.35074 40508.84519 4072.951773 0 2862.496656 65056.51957 0 0 12354.14113 15771.07063 0 0 4824.482862 11420.46605 0 6147.799654 6499.500754 12111.01493 23882.3542 18225.72692 1309.700237 131.7275581 0 1761.886903 0.0008850147394 7541.294641 1429.202861 0 5357.692061 0 0 0 0 2464.114577 27110.00327 275.378857 3171.60661 64233.72946 9849.778296 15762.78672 1382.858265 28304.99745 77369.73713 1.463599743e-08 954.8512653 602.5054137 12153.3386 1157.083264 0 0 3905.415877 2915.229848 0 2735.144739 537.7170338 11071.60564 0 109.6365681 19394.41223 44.61690614 5147.667558 0 0 0 0.0702449501 0 6183.800734 2022.243157 18485.93048 38074.06061 35768.71145 17666.56289 1.674905577e-07 22819.61169 64713.9601 780.9160642 30102.61108 5304.684046 23177.87632 95969.91198 6517.789853 8792.370865 26910.30938 755.3678416 0 0 15094.90502 6047.744836 15645.26183 0 0 0 0 0 6500.114939 3298.300351 1934.887776 15369.18333 7096.200603 2218.522819 0 2920.550176 5311.564841 6619.618943 37741.36183 2395.715382 0 0 23917.76484 1622.829738 333.8321651 1280.675363 0 0 2061.976402 23767.98869 0 0 12677.06498 0 0 +29438.67997 3740.77342 3455.721298 16999.76346 3081.743029 0 21089.1288 0 17777.50711 55034.96498 19471.48536 0 8019.672065 0 0 1187.530069 21718.15036 752.2498407 0 4990.373357 0 1169.291074 257.9934605 228.2887563 0 0 3808.150088 0 1013.390429 0 0 1077.960134 2132.680544 0 0 0 4565.134296 0 23312.4435 8541.68534 0 0 0 55747.04697 804.3729087 1027.161719 2217.313691 16410.44784 8435.433134 0 22011.36201 0 2.014572308e-05 71638.53514 2337.162545 35829.25581 0 151.6856106 105.1301325 0 5137.933856 3654.818821 2803.588707 0.9494806326 31776.72449 58.82925152 2967.954954 603.3247388 0 55.3887633 46659.96631 0 17853.4827 18375.58985 139423.5707 55323.86012 3784.418338 9663.555008 22965.84918 2223.862974 0 2540.589266 267.947531 0 0 70.65942152 744.3426134 28699.7721 10261.63703 0 7022.026679 42072.56631 18237.53251 0 2046.19217 0 0 4730.941664 8729.017926 18702.08192 56242.35388 13644.53867 7316.004136 4195.195747 0 45996.32137 649.6547573 27949.61337 31432.15308 62538.14634 0.002175080752 46340.64459 0 0 740.4282713 5111.379489 0 0.0009800111216 6125.634213 12763.69108 0 38790.25173 0 11156.44744 0 19392.09322 0 5807.159382 0 0 0 6242.261943 26914.96786 0 0 0 381.7874643 6321.892661 6317.068236 0 4317.907411 4214.082131 32963.346 0 5038.057841 10428.96871 18939.17385 7193.538071 3544.928104 2353.622526 408.5379833 7661.291458 24049.78444 4906.013446 37526.69458 6282.823075 0 231.1874612 17.22470755 3055.391918 0 117.0370423 3401.857565 6361.451203 0 49552.7924 75502.82184 0 0 61.30565871 0 60741.77301 48079.41507 40909.60168 0 1161.273278 16714.31249 0 49984.81193 0 0 0 16515.34746 34209.72939 0 0 9459.423988 1608.55661 0 223.3014374 4840.752793 0 0 0 32.46784813 10499.02138 0 0 0 8506.397297 7586.962941 0 5290.493089 17336.0151 118.8685448 8383.414217 15206.94083 2653.678119 979.5020592 0 21798.69994 0 11898.23752 16876.509 8308.567268 37647.30162 21636.12002 10264.47684 32175.59995 866.9929691 0 27632.80997 414.3232536 0 4709.834931 23415.97416 202.7862679 0 13627.39295 0 0 0 29503.43145 3.060534096e-09 2.281453722e-07 13393.73761 25626.27983 5479.03867 0 12869.9665 2063.74852 0 0 5549.733098 51738.65202 0 11314.19968 16299.92534 0 52.92003903 11840.49964 3746.704042 0 3137.056956 0 2234.629731 58.63271176 9745.953092 6075.865939 6200.302361 967.1709241 2288.125835 0 1086.469685 4636.111739 0 0 3256.063231 356.2627298 4118.263905 35532.44663 2015.43721 0 0 7671.816646 3897.61737 3724.936661 0 0 0 22142.17342 0 95.8681993 27287.29662 56715.16683 13035.66034 0 5698.677597 0 0 0 0.267051061 0 26397.34 0 198.7507706 0 4567.687281 12418.08667 0 +0 0 123.23449 8705.476991 0 3565.348126 21258.8279 0 0 1619.666238 13974.13273 675.6396138 0 0 2356.602896 0 9788.475255 8714.480546 0 0 0 0 46020.36281 29069.86745 0 0 20259.07245 2.607313243e-09 27866.29367 21429.1818 0 0 6654.813613 0 5614.742204 16969.84986 701.2257096 0 0 0.3600481545 14030.82699 27159.70559 45.02262493 1948.791129 0 0.02801617732 0 0 52586.14139 0 0 13490.99224 0 4015.91549 3956.949087 4301.635717 65158.37954 0 31496.36633 0 41623.61692 15895.00486 16279.11149 0 0 0 10154.62507 0 0 342.9791895 29117.09025 0 3991.690426 6521.525192 0 61534.72768 60301.32114 40624.60304 629.7069718 0 36301.56318 4580.710174 5835.530814 14593.83207 0 74.67089001 0 2396.078909 0 26492.66936 10840.20847 15302.38307 5297.471794 0 0 45788.35837 0 0 2018.73346 1717.505024 15120.39192 10946.92287 211.1100751 21440.44875 0 22333.55855 6479.929885 32198.12728 0 22565.93754 24078.3919 62627.0023 4753.145739 21667.59459 0 4656.046829 12469.96837 78.28548055 7515.779641 19806.83913 2054.94398 730.3716038 0 3470.361878 0 98.22883497 18463.94212 495.8873391 6879.213081 6504.808855 38176.95535 17170.20184 0 2457.803378 147.2269666 0 9535.417251 1796.798265 4390.425984 0.0003992553261 8373.938724 25584.61236 47810.91385 111312.587 0 0 10561.11336 1838.196218 36.77723564 5954.914464 0 21214.00776 0 33622.55071 71719.52205 0 92458.33163 72511.60943 24788.44217 55235.2142 45790.29738 13820.55695 0 4813.772686 0 129.8188648 2509.67994 316.0838716 5238.709233 9515.622261 0 15451.3712 3641.824477 3520.309011 0 3222.917022 0 2988.924432 1506.053902 2166.821133 10550.01739 0 161.7586043 16754.49185 1137.060599 0 21547.1607 6.768160411e-11 3881.524252 0 78.94106356 3483.8071 0 1636.404824 43654.85463 2344.399025 18822.67745 618.0136311 1019.456445 2107.659055 536.9199512 531.2589923 0 0 42.05316915 7530.785651 81.39086376 39867.47385 139.2187781 6235.004286 2733.315779 9135.983664 0 0 29610.87188 10487.57226 0 25944.168 4124.258279 349.0770701 22995.55279 0 3260.202736 0 0 0 3331.678201 1668.434088 0 0 0 0 5861.9526 0 64108.12014 5357.588725 0 0 0 23921.41499 0 0 2611.230573 72.40689609 15.60500618 61.09793869 0 0 5335.949288 0 43584.97757 142.0205722 0 35448.7345 3729.539043 1119.532066 0 17692.19468 0 26880.93784 6.206288534e-06 5448.687017 17252.60511 6158.238246 0 29530.40895 0 0 4317.985738 0 0 2263.138106 0 10862.53549 6346.694544 34533.01886 0 0 3644.071081 5801.920803 0 34779.55923 0 140.3688102 0 47833.33579 0 9.834397873 0 13202.35893 21375.53091 0 537.0197223 0 0 14276.73371 0 16930.80611 0 0 +2833.307034 8536.502061 64837.15249 0 34504.06384 0 23143.78485 0 0 0 22294.39552 0 0 0 35936.38275 6475.740754 0 0 13923.60216 14942.59909 9548.123686 3342.007106 0 0 3744.476603 9486.882277 54.99302948 17661.89208 14383.23175 0 0 24252.43579 0 2070.478539 116.7677971 0 0 19631.91177 0 56164.29908 23090.4625 31897.55814 0 0 0 0 0 16392.33797 0 39306.69191 0 0 2342.563419 8838.062855 14162.63837 17808.41004 4091.332011 11516.77292 10632.22866 0 0 0 935.8162056 12636.28817 35652.79191 0 0 0 25752.35761 0 0 1470.054022 0 7626.989485 0 0 55979.90349 11094.38598 37727.48254 4487.969305 19897.54252 9956.743874 0 50.06447395 1722.590653 104.7638175 3908.032603 0 0.6328506974 35035.56652 25218.19449 10257.52018 21254.98003 3840.448882 0 205.4254391 89.07566175 58540.33021 0 5179.724012 2872.685408 11341.40929 0 0 0 0.09779001912 51225.92107 0 0 227.2071543 9807.562545 6.680089965 0 0 449.7030828 0 37453.31831 0 0 9367.102605 0 15701.10588 3514.549214 12326.51685 0 31875.0443 0 80333.84779 2287.967188 13893.59282 1606.8069 1012.631458 30808.57526 1123.316763 21346.06173 59668.70343 28079.27188 41.20733569 0 0 0 6911.047819 0 0 989.2931966 0 1.306098365e-06 0 10724.83746 31801.86957 36827.59355 0 33901.14585 137.7483246 130.3250144 7254.214119 3554.257602 0 28800.52831 13263.44264 23764.27146 0 6491.114441 15611.29299 28654.06907 70566.50686 4989.938538 1737.694047 43480.37046 22487.09492 17640.55701 13291.84597 2681.191926 32745.73989 7238.213168 22701.47682 9900.903292 144.5257518 570.5222771 25964.0982 0 2.135571156 53338.39786 0 17708.90975 31262.07165 0 0 835.6298127 0 0 0 3330.347195 8361.201917 7701.540691 1650.842304 7388.458446 29125.40045 0 309.5176068 11331.59708 0 66.5652868 0 9546.821341 256.2059071 3436.773496 1204.636556 6035.908146 3808.419709 1850.140678 12997.2323 0 0 46877.27356 63416.0913 21574.94855 28556.08347 0 18023.45157 0 0 743.4369754 23768.21328 10985.13312 2006.910041 0 0 0 58.90872616 2856.400398 0 29981.64988 0 0 0 29092.39751 0 146.0340102 2569.146954 0 10502.31673 9184.875858 1373.208224 3100.164989 0 0 0 6484.55633 0 63652.35638 0 0 0 33168.83971 0 0 14650.71666 0 0 0 8.733784094 15294.27753 0 11760.68548 31095.00457 2745.69397 43663.45676 0 0 33325.56216 2837.708728 0 0 26037.95848 0 0 255.7142291 66734.86507 0.0007294632863 51650.44134 223.2384811 0 0 4686.993258 0 3690.431532 2377.33767 0 0 14156.36467 0 3801.129068 0 0 0 0 0 0 5341.346755 +0 0 0 50596.18935 2007.712285 8110.082708 13517.5133 4833.380741 0 0 6436.195408 922.1319965 25375.00847 0 3308.569108 32868.86927 4238.067961 0 0 4884.399528 0 39.79377526 2483.044113 46741.22317 16271.43708 5961.577204 3067.024944 1578.104813 0 2838.693742 64465.71435 0 3136.336325 13537.73168 0 0 10724.11427 0 34960.11665 0 0 15719.04298 0 0 0 2677.676457 0 0 0 0 13976.38816 0 7369.25546 8531.248039 0 0.1954768055 0 0 42774.58129 53689.16446 0 5.191965919 25484.35039 0 0 270.8230238 14663.1019 42.362406 30321.15248 0 32808.58762 3095.845746 5388.481475 146.4353787 0 14522.34889 16636.57132 45098.07796 2740.142062 0 1548.630857 5562.34563 16128.8632 1759.72906 0 8282.801321 80581.0278 0 2275.932416 0 0 10973.50396 5433.40632 2.699344956e-08 11772.3748 4973.877241 17598.3846 39267.54128 57318.26258 0 22817.21378 28789.91396 34253.38289 0 3823.868798 1696.530589 2902.5341 23264.73402 0 0 58793.20007 12640.24074 19276.5263 1684.245504 7252.228365 0 1946.49022 8414.725092 76437.16651 79842.6453 0 43228.12862 2020.247881 21217.31954 0 3995.323287 0 30409.21578 8337.427227 93168.0551 4245.359517 7816.486751 925.5916692 1266.922951 0 4071.289526 12737.69054 4733.12758 0 28784.8849 0 0 44425.59871 0 10154.36253 144.7481139 2989.266981 0 585.6766859 696.7089213 51741.9148 1245.708169 0 0 0 6059.278545 69686.25714 1110.228469 24305.0986 38034.82577 20555.77519 0 40811.50002 5961.762493 0 737.7584449 1409.129797 1814.313684 0 4011.386331 2058.409777 53186.37282 0 1854.398368 1403.327834 46.69735037 0 8022.919915 1014.68033 33252.03145 0 4935.740797 14011.52095 20906.9762 68284.00472 0 0 858.2455967 1079.068249 55.11760809 491.6028731 44188.14928 36785.66499 2195.754681 0 87671.08135 0 136.9075262 29974.01757 48031.56515 0 0 0 51598.83517 42002.10734 23403.80505 3133.477623 36675.35953 0 26.45109341 7408.170096 55721.45516 3308.864648 0 3546.027149 39815.78338 0 6167.870799 0 1161.339603 2714.584543 49741.34133 130.274832 21103.73101 0 319.5590885 86.76459507 135.3189024 0 9338.482574 0 0 1743.868325 66792.66464 225.4964 666.5804498 8273.188391 4247.734947 0 54.60301566 11510.57409 0 306.0106507 78.72728482 0 9075.257523 29683.14755 0 6034.331027 0 2435.690213 0 16054.03687 8631.918911 0 3171.257944 4240.153616 0 0 0 0 1085.101695 1200.602694 0 3.331645483e-14 670.6780714 979.2953277 40702.58384 5680.10086 1399.787573 0 13555.9048 14444.93232 2152.647818 0 0 722.9915666 4375.639072 0 40466.75287 8333.638895 0 0 423.3603219 0 1675.936066 25312.94625 8726.291297 0 5578.79888 176.3662989 9492.821634 12620.18801 0 933.7967471 0 0 5553.757698 0 333.8906959 +0 0 0 0 0 97344.32077 0 0 24469.62097 0 10685.59448 2545.962743 0 0 0 6214.99437 3303.070733 4402.300625 0 46630.00671 0 0 0 0 6453.267754 0 0 2675.210734 0 18896.11702 8376.838621 0 2798.694154 0 14848.41369 0 77.13194539 34835.87235 0 4032.214112 0 0 0.4426460608 16019.6187 2557.401843 5414.984974 0 34284.86726 29998.63329 7608.410467 13386.40969 1096.785985 4954.685881 0 696.9492102 0 4439.087163 2780.124968 27416.86478 209.2147579 10201.42801 10718.29348 32084.7348 0 525.198897 30167.05788 29507.52666 2119.482263 25838.49991 0 19988.70668 0 0 49163.35417 8941.31923 12477.04621 0 0 6724.62457 0 4735.923423 9823.243142 0 6492.17373 12418.5269 3414.425762 0 0 0 205.2351761 18290.19171 0 5291.505598 4399.341423 0 13975.93261 12231.71944 34910.01599 31837.95253 0 30056.49854 59755.19769 6748.508828 72448.05392 0 0 29847.19922 114.3358306 0 1575.247676 0 34278.84995 7520.148144 30477.98499 0 0 2429.47418 31597.73153 4092.182415 0 25564.86367 7845.536898 1190.793252 19213.30903 0 0 9725.178233 65787.38585 456.9825643 36550.6939 50247.71975 0 6820.377792 31565.65344 0 5827.474421 1794.830113 94321.28429 0 0 43048.92718 0 8817.498324 4493.563347 24944.20725 30423.27555 1425.815422 19502.60115 15295.46557 0 0 17773.79927 35872.68058 5553.912467 0 0 4293.506723 3600.961414 0 13346.36553 34644.45621 0 48094.29678 0 220.3351119 42394.64859 276.0253799 32649.65444 0 0 2034.408975 0 55078.00659 0 11564.75761 10774.16761 61646.63923 45241.94469 29641.7097 1981.482675 0 3743.25398 7618.126754 8.649863254 83459.50578 21887.99631 463.377076 4350.417698 0 69607.47602 148.0614711 0 0 17350.22228 0 0 56553.27962 0 0 39705.41682 35418.54724 7280.383918 0 9624.819766 0 3719.652313 13226.64518 47.87127189 39566.67316 28919.70819 85738.1607 8135.580312 9479.684846 45159.13008 0 0 235.6559318 0 0 1701.144204 39966.27234 0 0 24269.09103 1287.516744 1923.048345 46319.53119 0 1655.162477 0 3073.499959 0 0 0 36801.10381 2646.76498 12525.95535 13.06013938 0 8603.003213 0 3140.230494 29580.6042 10714.6558 1700.073908 3628.348628 25430.70991 0.01583095673 0 2774.215358 0 0 0.006134301841 29809.51161 2392.899318 22040.74247 0 0 0 0 0 0.4687451309 4185.776086 9641.274351 370.1224338 23299.49912 15993.87263 7684.894112 0 0 17027.765 0 0 1391.275098 87.32828116 47.1385985 0 5897.980212 0 4593.141241 1617.992598 7125.097386 0 1003.902078 0 15310.23681 5065.307774 0 0 0 0 0 0 0 0 622.5912667 19699.74128 0 0 0 +3135.096744 6684.581733 5626.174712 4388.210624 9411.73561 2751.341335 14680.19335 5547.136648 342.897425 2232.375578 0 0 52362.82392 0 0 0 2.150020392 20087.11552 0 235.0054212 0 0 54.18885755 0 2985.485335 0 30817.94839 5203.64143 0 0 0 0 7363.529064 1665.537224 0 66627.65939 251.3179989 647.1231727 6685.277846 0 0 153.226311 0 19638.23484 29928.37356 0 0 20791.87348 1951.580412 9359.521668 15625.73449 4170.840889 8891.81431 21797.02307 112213.6851 13826.96419 48338.01218 312.334485 0.0004099432064 63521.89594 12133.59296 4520.555211 0 0 0 0 0 139.2092243 0 858.6616723 3276.400775 0 0.01034560504 23978.037 25144.03604 5858.004859 2392.669951 0 0 0 0 0 47270.55808 19772.22164 28.40264384 1687.83646 0 7672.787696 0 48051.51267 33345.23328 51867.35389 18246.69946 124.9429925 0 6265.551004 70899.61454 50693.51478 1354.862412 1924.660615 13.42630899 0 0 39069.75892 3414.463148 0 0 18310.5415 18994.41399 0 0 28790.64317 0 689.5850952 7804.771897 0 8221.613061 167.9543746 28320.63633 23190.85368 22104.14061 2800.256767 0 0 70759.17036 0 3953.90767 18776.09884 8234.992954 69748.95202 0 19492.91384 0 31533.28306 0 0 0 0 6809.19022 2140.140351 56959.0248 1623.899631 140.4662345 1751.9299 0 0 6844.989725 39389.81741 0 1914.937016 33773.45873 105647.6822 0 13063.54859 52288.36152 35958.84914 0 40481.06922 0 5227.077196 17399.66461 0 5107.903658 18890.7267 928.3415203 0 13159.1793 0 31823.41819 0 17975.59151 13410.50922 0 1006.418069 11510.40285 2069.896536 20626.7181 0 0 0 77.46862957 27405.66197 69030.00101 0 0 0 0 30894.83453 14243.66927 46166.52874 0 3.333210704e-05 0 1781.271244 54765.68061 25.71622119 36163.0008 9542.773572 4700.133455 0 0 1534.279341 0 48062.72051 2602.087614 11494.23599 14884.63432 0 0 5981.208583 0 14838.68392 11137.74974 23799.69506 0 0 3656.684121 21426.38684 0 7600.635617 30410.67838 2799.820588 0 49077.36403 26709.915 0 22182.66244 0 13473.52065 47314.61646 1879.815117 0 2533.619683 26581.88659 2915.27652 0 0 22427.25954 0 0 0 1679.73265 0 18295.61038 0 4535.804139 10265.63589 0 0 38581.4299 50475.58894 0 0 0 95.4918862 90.09468789 6851.300861 8469.667762 35661.02142 8603.408221 1983.114271 8308.363267 0 277.8460855 6717.710217 570.6582816 0 4528.958214 0 0 52115.49721 0 213.7311351 0 4148.766993 10617.21077 0 7038.437037 4407.454917 0 6354.398918 0 36308.40528 0 20028.50668 0 108.6732341 3633.46926 0 192.891651 203.3429652 41.1333153 0 0 0 0 0 17482.73352 31329.56556 0 +1.27531908e-11 0 1704.17069 2159.924108 3928.591377 22478.49782 0 1588.848038 0 0 0 0 684.8459748 10522.34896 0 0 10290.2134 0 636.4388205 6755.773193 10067.99154 2469.010332 43875.22746 0 5777.911919 0 0 0 0 20703.55561 0 0 19348.10765 1842.75884 0 47087.80045 4863.60035 0 12740.10766 14433.02037 16774.65086 0 0 0 2905.038562 0 20.12208805 17580.84855 3233.718926 2336.66498 0 99.13224433 0 0 0 59265.88139 47835.80297 2863.627916 0 0 2840.678429 15691.92324 0 0 0 0 0 6755.517705 16536.44688 0 0 0 4698.231228 22631.40811 475.0409732 71621.92664 1432.154325 0 23469.85059 11897.76351 13291.11233 5038.225939 13658.92101 24174.58316 2712.529467 0 40979.28823 0 0 22498.26624 519.7533342 0 4842.758598 0 40129.6093 0 2988.459753 29673.5398 38216.66901 342.5092873 6766.942805 32296.59951 14781.55221 23051.2142 43452.44041 0 21567.71932 19076.27005 9531.685963 25977.48044 23317.44778 0 218.1106511 865.3327987 75844.00593 2269.262418 4384.576271 528.6709043 508.5901588 6041.111645 4546.893062 0 4667.738975 44794.75731 417.1473859 1444.627002 29825.29588 0 0 30180.68613 0 1999.530801 44331.4511 38469.03092 170.834145 44396.66287 7050.851422 22701.69781 0 46146.68051 2578.555132 28695.28071 6690.494849 21132.12344 142.8552926 0 4532.514741 41.02040938 0 35030.6253 0 8912.711158 1640.295633 14762.29542 0 6562.76784 56627.17172 2836.713894 0 17662.39374 24797.96761 17460.14095 1600.592096 70235.62729 8331.177212 38989.43123 0 27982.93807 0 0 0.0006156624344 17284.01785 19409.89448 3882.357496 19588.41881 12789.97983 41005.35123 22179.94229 28274.33488 13384.93307 458.8040021 8279.195022 0 0 48679.08643 3522.096208 20220.60199 17616.99047 0 32959.8504 57181.13664 8051.126566 4875.781243 23255.26299 9.440828591e-10 0 5.553231824 0 47183.60541 34448.87235 6092.684154 55630.81804 36257.55097 0 311.8635355 30049.82094 22336.04932 14784.65664 1557.026694 0 7892.48422 178.6624916 3479.995593 38366.39574 162.3668369 22044.1175 0 0 7303.799426 1809.165601 14043.84911 0 0 15817.07908 4131.524826 0 2643.329046 0 18480.00551 0 16240.07836 0 0.004989700937 4050.992893 2048.567662 13961.45476 38455.92046 50.58100943 0 7653.833002 2157.498363 33757.70678 8110.196209 0 2141.963126 32404.03786 0 2868.643887 7910.538711 11814.72801 2940.272739 0 4021.643768 0 45162.62098 7470.466152 29.6109832 0 0 1760.638891 0 0 12232.17832 0 7455.576083 78450.27401 0 0 9273.15565 0 7085.18881 0 2829.677486 0 23154.36073 1859.231705 6032.720846 0 11482.78325 808.7070013 169.7555944 0 0 0 0 0 50129.80785 1.2342968e-08 0 12222.40242 0 0 15288.76483 0 0 0 0 0 2387.52209 4272.649607 +53657.22023 0 7732.821034 1133.152159 0 0 0 1430.159639 0 2147.183531 0 17727.67005 0 0 0 10209.38316 9435.024941 0 3300.880294 0 0 0 0 33264.59071 382.4890664 3888.796934 0.0001841206129 3304.964684 0 0 0 6445.980262 0 2098.574675 2461.176253 0 0 0 134.191348 0 0 0 49015.4826 15859.07848 0 198.5507187 113.8433706 5718.01807 8323.129038 23424.39396 21736.45531 0 1076.80523 10300.56506 0 20149.32771 0 7585.039585 0 0 0 32463.34576 123.8904015 16034.22853 36118.25719 0 640.9935312 0 24761.17854 5.833915211 13187.32386 47133.61257 3520.580474 40027.65654 11019.86518 2152.17542 0 10587.79618 1555.327047 8606.084109 0 7534.830463 0 0 22712.71886 37229.84794 23562.33376 822.5039637 0 0 0 4492.328367 0 0 77611.19133 9260.662495 0 14980.02156 23681.9914 40706.30562 6927.058079 3257.048032 50075.43761 25385.29763 0 6833.12766 2360.476288 24379.64946 40760.47924 0 84504.02588 0 40043.11743 309.8263768 51618.90825 0 0 1963.172384 173.6323793 11495.33432 43859.81253 0 0 11976.44549 10368.52172 1427.044957 40551.19992 55400.88453 82.86023338 20.16627215 10436.79565 7493.251283 0 15182.53207 0.05758277805 0 4013.488684 42730.3483 13106.73766 70.79403241 25594.53675 0 35001.5233 0 0 6847.359889 229.7196966 8034.845631 0 818.463065 1561.557695 0 2912.935909 0.456324434 9396.508448 55572.02457 0 5454.738698 45822.47909 17874.69557 1444.628599 23453.99805 0 45541.95678 30944.46575 1408.722884 1373.247129 0 17139.44305 14244.12576 34717.1927 5937.821474 0 7546.761331 2841.146546 400.7325789 87.56584011 2307.956871 1.99142787e-05 3661.220182 378.3894019 0 59021.30463 2450.248456 31657.29071 0 0 3923.178076 13331.23674 0 0 57156.49099 1648.084175 0 32.46781373 1211.519295 61953.99261 49689.84909 3826.207143 213.3613249 0 0 4466.718132 38872.6229 0 61095.09367 12281.98725 141.787466 14067.79536 0 0 0 10963.06065 42329.90007 0 41.14685448 14532.18693 38538.35102 0 17617.52285 0 27858.67534 0 10918.26515 76.13350446 31838.08033 26404.90579 0 22194.55198 32870.14901 4228.385622 26144.63846 0 0 9758.202347 0 1493.824451 82.23614992 6744.604908 6276.577576 0 48.3687035 36627.9214 0 0 22573.50995 9228.348967 0 52751.36384 64067.04357 233.1672844 0 0 9351.746514 0 0 1287.303684 237.6076879 0 3592.295025 1463.467625 0 31089.37639 0 2228.592788 0 2995.65755 3447.202999 0 17239.26872 5182.235612 0 0 3.608761604e-06 0 215.4086067 74832.36807 7546.407928 42.32736487 0 69.21625126 15642.03418 242.4085773 947.2500737 0 17959.1598 5750.667872 383.1391994 0 2549.679109 6655.76456 2516.735634 15163.40423 0 32983.59023 324.7697357 0 14608.48527 2109.73915 0 +0 0 4083.287403 0 1784.354187 302.7471729 0 6191.268559 12089.20556 0 2205.63758 497.6608199 73.68703883 3604.911972 837.6846996 633.3625972 3136.990849 23450.9756 0 7327.756536 10731.42617 25057.61436 0 17535.69939 300.9703839 12636.66178 0 386.5762685 23564.36802 180.8020095 28196.61238 3213.258453 46372.95331 2114.309961 0 3614.395387 4.423393654e-07 1110.276301 0 0 25409.87038 135.461764 7534.429591 0 30093.53416 41444.48399 0 116.1520675 262.863237 0 2855.457387 0 0.3054466172 21399.08135 11441.52243 33886.48102 31219.09568 1694.893689 0 49604.69974 475.8493871 0 0 0 401.0128315 2548.562963 4321.060933 73.62865012 0 0 0.09753987185 0 0 1739.549306 0 65852.27718 0 224.7014351 9781.213046 30112.69508 13017.38117 8681.586309 2289.170196 0 58.71824264 0 33695.05645 0 2329.094891 566.6716038 0 39902.03776 5304.433967 182.2212846 22409.93231 7330.618334 9959.982187 21773.21409 0 9483.142916 1736.145313 33675.02301 0 5808.637644 1099.849157 0 35.16070622 0 3800.730436 0 14964.91903 0.03507899914 27564.20907 0 0 12473.59248 366.5705962 14026.28704 13179.12198 25838.35803 867.4516385 20588.36262 56121.70191 18782.78662 3163.640957 33720.162 15246.02204 0 15321.23466 0 0 2553.674807 4970.246513 0 0 5312.120154 0 173.1100809 5417.094538 34032.78827 15155.04517 217.0327409 481.6299443 18500.57173 0 2.148705709e-05 2159.778842 20763.92964 0 78726.29042 9978.668176 9259.332916 6376.420164 414.3713439 6873.297289 42413.40416 4812.993112 1562.610457 8541.69069 103868.1387 0 104505.1281 5519.73265 0 47.97989685 21007.30055 11424.20022 41460.89074 13024.19278 57347.96111 478.7693085 0.4540729856 4159.620824 406.5992806 71592.99092 41417.83642 4134.086337 0 4640.176392 9802.331488 3429.529275 5109.479353 3618.981165 0 0 0 0 1729.077284 0 0 3392.77137 0 26120.45495 19818.58736 12165.47175 7164.781403 3101.247715 3273.702014 33700.02613 14568.59886 40686.61871 1456.700842 2183.887227 60393.73462 293.6334914 18067.29755 5852.990517 0 23481.88828 0.1909785193 3654.087768 3165.601272 22555.10247 3077.30254 0 0 22995.66012 609.3847806 0 0 33605.88729 13987.60281 0 2292.165439 4017.712103 37381.67742 0 2948.477097 5136.728411 6019.09377 51277.97473 7347.803011 0 15149.08652 72039.21613 0 56045.40396 0 19416.46268 1905.577308 221.6448281 0 0 0 621.7972198 4732.669667 24656.43532 2868.825128 3782.202424 0 28835.67459 0 110.4405956 0 3288.294792 0 0 0 56.10392832 2278.703118 0 0 15274.94925 11264.19098 48071.26982 7819.421114 35148.11892 2606.288247 0 4319.489868 0 0 0 0 0 1851.935374 6317.905945 11881.69701 0 1939.400323 4725.882935 0 0 5016.178156 0 3320.250805 0 1.480460538e-07 0 0 0 0 22754.03582 176.6511757 0 2646.36492 0 36346.50929 0 4654.40241 +3411.910744 19175.89337 27875.58157 87366.53945 24931.75828 0 0 0 25834.86249 0 0.1821733948 9849.245217 15033.01723 0 0 0 19186.29523 0 0 11605.73302 0 1898.787672 0 0 35416.00798 0 0 0 3485.335847 0 1758.342227 71906.36422 0 2539.272286 1730.011709 0 0 22901.98801 4261.13904 23175.66824 6984.300583 0 7238.755711 8331.657764 11347.3193 4894.107176 2701.456019 0 0 3845.07992 2510.02685 42333.2224 492.1599468 7744.291283 0 19046.15117 5605.666877 0 13610.95647 15752.31831 0 0 0 11461.34676 0 0 0 46391.49908 72050.20221 5971.990428 2217.266935 0 19849.81477 5855.716783 0 5730.117418 0 3826.386239 3.523368042e-05 34481.31894 0 50448.28902 799.2543749 0 151.2143895 81990.38378 5099.04007 0 0 5415.229286 47212.72475 33843.43362 19095.43965 30603.20437 0 17972.0313 6675.705724 3656.094353 31.86375047 21525.25702 12009.09408 7361.26219 105.5504732 0 23322.90323 17383.6652 6951.076989 0 0 1267.640894 187.0430569 9971.613282 6263.282754 55199.07317 0 0 1600.042726 486.5882239 20778.19346 58318.17654 0 15088.52714 14452.57661 2053.262544 10332.0649 0 44892.12368 0 58442.19676 33292.411 51862.97152 51.39508312 13248.62306 10748.2106 0 89.30675621 36661.22004 75312.00755 0 177.9724282 0 30745.82014 138.3035978 529.0390154 6411.786993 7203.38768 1288.292513 20318.58412 0 28282.3117 8459.797525 401.5061197 0 326.6967663 17128.62884 74707.3459 0 5355.599412 4306.917919 0 13579.01696 18232.90753 6854.627015 15158.42826 500.1628229 61111.76825 0 35997.37959 0 50700.26462 0 24447.85635 14090.19014 312.7947379 0 20365.08608 18096.55122 0 0 6626.952249 18210.87867 20018.651 10615.60011 146.7241581 1419.025759 0 6756.694816 3047.626322 0 61734.98637 10520.5715 0 0 30124.71022 1522.375808 74842.70176 11224.49481 3064.212109 44.31414587 3157.787279 0 11920.99116 15354.2337 7478.569417 0 0 396.7197544 339.5812555 0 0 479.7863155 0 0 7239.775917 0.3415307676 905.1835575 5005.825533 28865.24128 413.6561486 2239.818312 6491.697134 1513.170574 0 3252.470828 0 0 195.964249 0 0 2758.70369 0 0 0 13959.66919 32497.52064 0 19949.14885 0 192.8084681 4570.395975 0 171.4800336 0 16531.09134 3818.29346 0 864.5632315 3551.488298 0 0 0 0 6945.902597 0 1890.979381 27750.22894 95.09749751 0 3266.227357 304.1903642 32220.84649 180.1351197 0 0 0 1141.399214 8543.316173 24510.08557 23956.30444 10114.69903 0 0 7690.941062 0 0 0 14084.01106 302.8430183 0 0 0 4966.565735 123.754788 6553.125953 48567.96325 0 46.50419251 0 12060.69326 2928.585699 0 114.6722899 29494.57675 0 1034.051246 0 0 0 13697.66401 1873.065044 +0 15114.88571 14711.08293 82910.46083 16812.86865 0 7367.438798 49124.78775 44148.62245 16934.84982 0 0 0 0 20710.08808 0 0 736.7382885 0 0 0 6518.37744 0 247.3899885 0 0 3577.303625 22407.28772 1692.757451 30131.25196 0 36188.75183 0 2687.059778 3121.885183 0 74644.07734 44813.9635 33309.58335 11474.53483 14643.42315 285.7490852 261.6094121 18930.10728 17174.01007 16451.35009 27975.48803 17958.0851 6130.78031 2.523162668e-10 0 14348.92742 0 17774.09858 2909.745809 15316.13744 17386.68748 4554.170061 0 13745.98119 0 2999.570318 1495.753232 7250.754764 32201.26799 0 920.5357123 6168.526069 7927.732568 0 10946.72865 9431.538928 0 5502.498518 33676.05807 899.5437116 0 0 164.6186372 0 0 6871.845705 49466.93458 0 24029.98619 0 0 42543.0883 0 12946.55475 30363.20266 0 0 50198.04095 0 23732.44594 2291.556038 2342.391346 4.019731836 0 2895.500631 8733.156083 0 67036.58731 0 62730.28401 8602.326984 1.234895002e-10 90858.20767 0 39888.75887 9986.324406 8073.905954 29109.23254 0 13639.15482 19097.26543 28875.2767 2542.399209 20185.93313 31818.98715 59848.624 195.5850099 20663.54019 38241.3417 6926.310763 2099.430204 212.1113591 0 5850.682637 4920.452515 25313.59604 3004.661764 0 44821.85484 16345.45247 0 3262.885502 14479.75957 7628.618532 0 6440.788897 119.1376551 104.5214765 25132.06207 0 0 0 0 23667.30556 0 52679.55428 21780.82168 21409.44968 0 0 61.71233951 9395.597056 78.31123818 7658.991121 0 0 132.3228417 81.83735931 5783.236914 0 48462.4283 40637.62941 61.6994374 5425.769999 48626.70242 10575.27203 5412.29129 30835.13404 0 1105.762298 9359.674827 0 34348.21271 4162.963275 3750.73921 0 92.9850883 1010.504898 6066.060575 51317.95977 0 17996.4806 3.939205417 8713.044472 2323.503695 0 24465.96174 0 3777.607545 6786.303321 13703.7428 77394.90386 69947.16044 0 19524.68053 7599.495334 8670.997239 0 18113.09393 0 0 21271.28063 8669.967507 18833.27402 3.686560199e-11 60.1712811 22026.40301 40416.35122 0 22411.01981 0 3417.370725 36872.38921 0 14545.22718 2456.330074 1211.992391 18779.31901 31400.39355 307.7512713 9058.589187 5165.862338 17218.77122 5662.13837 0 39863.91744 196.3908281 0 2867.997825 5238.529019 28815.76493 19889.82443 16005.29844 348.7354556 6872.413095 0 38722.61153 44369.48433 0 40.42696533 0 7299.206202 0 0 0 46999.00311 8694.523841 6768.396618 26172.07788 0 0 1329.77256 7381.549447 0 14610.19773 0 921.535306 23.53483532 0 0 0 0 0 0 2188.693553 33090.32655 0 186.776522 0 12230.78784 18038.52905 32513.55425 79.17973249 24966.63599 0 5141.713475 0 12950.70843 0 0 0 0 4389.318361 0 0 5275.302586 1483.889382 0 7070.947302 4211.597598 0 0 2593.840089 7235.681299 +0 4108.778181 8270.531399 0 3756.360863 36172.61612 3730.989571 0 0 7408.381308 0 0 30146.36348 2.374061487e-12 0 2569.224027 0 2610.603745 34440.16818 3136.023185 2778.317718 0 8930.812182 12.44171765 5916.388928 0 39277.55553 9906.828469 0 0 9483.883131 68.44913527 0 0 42061.29963 81.03623615 2742.259951 0 123.7480497 4.269576116e-09 8071.533048 9172.274628 0 22468.44513 0 23267.56612 29942.44775 0 11398.54862 0 0 672.6066762 0 1806.560905 371.6699617 15050.59738 86191.55227 0 3851.451281 2543.528453 13589.79195 9135.509222 3290.862267 0 9680.378043 2757.816358 0 65154.22905 0 10675.68437 12662.4217 105.5224381 46017.38003 2958.490007 72211.62122 3404.506396 1076.613759 49306.76331 77152.43482 3603.866907 11297.34931 12619.15428 792.568806 67775.87732 11382.54822 24147.49208 71.32444135 4875.365896 13437.80919 3987.073057 2709.73761 51608.699 0 55668.43193 28939.32042 0 6.141662346e-05 16720.91084 0 17195.20141 0 35478.25241 26974.66231 33518.92663 4432.653291 57557.08264 50097.90197 20107.12949 83149.60189 11552.89477 11899.02294 0.0001599803485 6878.745172 654.3150387 0 0 9306.616843 66644.33484 1818.958492 4541.071043 168.6018429 2521.510944 132.3146134 60706.68235 0 43524.52637 22029.43041 8912.584056 0 4662.619374 31458.6277 28752.81228 22145.40335 2991.882279 0 26242.4267 51061.66855 4283.33451 0 0 120.8007115 4319.331178 76614.58278 13261.59948 0 8264.492358 33294.88087 2008.174621 63716.69244 14444.90585 10514.80243 567.4746869 0 71.3895926 2217.396744 5292.416213 4894.411927 0 1652.161274 0 23039.22644 11618.90082 20852.63136 0 0 0 0 3178.107064 3977.731998 50482.16271 5145.688212 0 37314.02524 441.1986034 0 0 0 43619.82294 9512.327732 18422.21532 2344.670152 213.4445211 319.7326228 48385.81757 2147.233786 0.0001529654389 0 28912.70072 2807.256484 28238.96801 6501.630544 45.43064953 2189.014458 54863.62824 9021.190054 0 2391.425984 16802.58492 0 5681.763474 156.0792683 0 12350.83518 0 35975.6934 19660.16618 0 1589.106899 0.026785576 67041.48292 26244.87178 23454.66616 0 29282.2798 12720.08837 13183.2757 0 149.4515681 0 708.624746 0 48257.87332 3956.495124 2382.784077 25604.14236 173.247231 0 1568.312569 0 7996.319169 0 0 32.65650865 179.7144681 25255.78032 0 249.3117835 2508.220089 600.9035022 40509.08382 1907.09482 1263.100529 12472.33442 43549.67196 13077.3206 16558.99915 6602.623398 14663.17912 50528.4839 62437.00765 5631.360278 0 45562.05134 3113.153875 253.1689277 3.403465444e-11 0 3478.122665 0 0 6706.885652 0 0 0 342.8284827 8927.088182 8078.115084 36975.20537 0 3550.757093 0 0 0 24045.49257 0 0 38005.61511 0 42982.70044 5886.923369 0 17987.91598 0 24354.59126 0 12202.28191 56241.79479 14286.44515 31242.39042 0 566.2100314 0 0 11774.53658 6560.609294 21398.41558 0 3292.666254 0 1288.274494 +0 0 33991.11801 72427.04273 268.0800172 0 2261.039923 0 0 0 17350.2974 24249.36231 8371.052837 1976.76901 0 44157.7225 0 0 0 0 4678.541848 1706.839081 0 5064.631663 34273.44545 0 236.27245 2644.210782 13290.86323 39609.81039 0 0 49.0257056 0 0 42448.18051 0 3845.04386 4265.88225 21014.90269 25761.97701 37.30786901 177.6063726 5244.055757 11809.80255 7387.841895 49112.03265 0 1290.850619 0 184.0153609 0 0 3637.281235 0 21605.70555 0 0 0 11232.83293 14403.6993 28256.71598 0 91585.86383 0 6831.539723 31768.45905 12718.47616 0 127.9957461 16307.27949 0 19475.95034 1576.052682 21634.93453 46279.13162 0 79636.64528 9950.207881 0 0 19796.85888 62323.92372 59030.61551 33549.2744 0 17793.43005 7985.925145 26766.74209 57410.33169 0 40759.5196 0 0 4205.105621 2186.7725 12203.92308 53306.59028 0 14293.90945 0 27927.03503 10028.88761 0 18522.17381 24018.84641 0 30287.1561 3394.158655 0 12591.97281 6113.087068 22220.37873 976.0053471 460.6543265 32622.00256 8862.820438 35230.38543 78025.76111 32028.95681 2990.577113 2551.063068 1379.05282 18351.37678 9535.6349 0 45287.99105 0 23448.782 5627.921428 13741.40755 0 18470.77993 39.22766095 39.29505202 0 26172.59993 36460.92418 49895.29356 14753.77889 0 47768.78196 0 28539.47823 58599.39475 62251.73031 8488.994892 30653.61862 33676.18794 0 0 10786.39435 0 12738.18523 1918.681222 368.7561852 3.455368915 39941.56077 2790.511473 4139.370565 0 2959.829157 3373.78382 0 2372.362385 5383.230644 4311.594373 0 9142.444162 1318.851335 0 73.64002934 36795.00312 61203.4278 44484.89362 0 2.351051306 0 61670.68269 0 48196.90309 5599.783023 6880.953477 7412.244248 3541.578477 7364.562175 2230.513802 27491.49446 898.7070297 0 0 3069.8743 2012.680685 58615.45677 26625.39078 35988.90774 0 39108.11788 0 0 256.0751013 6916.471231 19620.47624 13074.24089 14821.91024 0 125.8908415 26008.43373 152.4901749 45282.71781 7858.025349 1769.049849 22198.96676 1291.518751 0 3076.33375 64651.09599 71.97114161 41372.40007 32288.7048 0 9204.669235 0 478.1465439 0 6255.26503 0 0 5304.26221 0 4501.682271 28139.67627 4997.781378 38.59093845 133.9444429 4597.017493 44955.05318 0 10595.07918 0 2816.100163 0 336.7918364 2544.00981 0 0 0 2798.110611 0 0 13290.40205 0 0 33741.35508 35519.4145 1616.150934 0 10904.96222 4221.945934 0 0 0 194.3123415 99.79619925 1535.166731 23494.63731 0 7169.913714 0 0 0 36899.31407 0 19225.55821 1254.449662 2397.441079 0 0 81.12527145 23245.20509 8744.751788 85.26388141 27108.81881 3665.554302 0 0 0 4830.381858 0 1020.834443 530.6996562 0 2023.946648 16607.83152 0 0 9139.436466 477.4795127 0 8433.910418 +0 8045.047919 0 6960.115237 0 0 15054.92362 0 27705.3962 0 45663.39477 39278.62531 5111.403867 8262.473952 3983.696957 119.7611747 612.004374 39456.93856 500.0072805 76.40454621 2480.342887 0 0 0 0 29381.78527 4437.117678 0 0 0 0 16723.55702 782.9072421 0 26568.66067 0 0 0 22759.72835 9761.43111 151.0974036 0 0.8252443842 0 0 0 0 9699.547458 24326.52102 0 24849.05962 27012.77538 0 11706.12579 0 0 0 4434.731844 4689.36081 0 38387.72606 22636.80189 57169.09585 5454.086102 1854.730123 5859.585537 0 0 0 25344.6785 5708.17113 317.7056061 0 6093.460934 0 0.02634689866 7718.671136 23834.63737 40739.65906 0 20784.59202 1847.969143 0 15341.19399 0 18446.17623 20522.83384 0 1265.791578 0 0 68670.14152 15855.89602 425.8055424 0 32076.99065 0 10151.75858 55906.96178 260.8847651 43052.97622 30517.94235 0 24717.19306 0 0 0 0 1035.320822 6838.50805 24.75839894 0 8085.934825 63757.65194 0 2472.459062 39906.92482 1.369510768e-11 0 18650.0184 22993.59263 0 0 2526.227192 6709.591886 7259.91994 0 30879.51876 6488.261963 547.5694166 1219.174862 0 8957.796954 33422.26945 642.7304564 127.8702926 178.1623211 0 3514.78516 40794.861 20459.19725 35303.52989 35492.13135 4997.918013 0 6626.126447 32.17746972 0 21695.55598 2423.764927 0 1567.693563 59592.31502 3114.88719 2378.537067 36182.15143 8889.159346 35982.98167 0 0 65.8710053 337.4662673 8.231612903 0 139.495832 3239.771223 0 0 58968.50357 0 0 2068.055509 0 18585.6795 12956.42101 16614.86908 14563.99063 0 1595.69749 15526.05837 7390.377933 4170.73352 482.2858381 1141.292932 0 11128.90023 5940.136493 291.7656659 2523.996958 0 0 1511.338862 45153.01754 0 3859.633622 12447.81456 5344.814512 0 1504.029639 18450.85713 0 3522.43247 34992.01109 1879.02959 1.227767572 8918.701153 0 1564.986484 67513.64022 0 0 5048.592674 27935.78659 196.0065593 15808.0452 0 0 1753.039389 0 8675.24935 0 3082.279959 0 0 5906.333761 44505.75857 133.4481263 3042.611332 25530.5231 26689.95598 0 17864.80936 0 0 4.360287885 0 0 16275.55198 15064.1082 0 0 0 3577.514552 12632.03624 798.9935134 0 0 2411.908422 502.1181226 0 6046.81905 0 10725.99592 0 4169.324731 0 0 24543.49809 36363.11416 0 0 0 14089.75784 4677.319014 748.9105804 0 0 4.310505732e-06 0 49640.54822 15850.10068 0 12496.43913 490.5496016 0 11950.39923 31161.16515 0 653.5289714 1920.770709 3126.544144 0 1099.181469 9815.662719 102713.0905 0 29004.2584 0 990.4136494 24973.20556 4879.933101 0 25.63093542 0 0 0 32331.66651 2383.030709 0 38894.08715 +0 23653.04547 3649.015199 22570.06455 13832.0607 0 38579.54509 0 17264.72161 0.6839129857 7320.203941 5217.959665 151.9747601 3327.63687 19617.1023 54898.97099 0 0 0 0 0 37.11110423 0 1006.716942 0 19691.68146 16924.44294 0 0 4801.985718 0 15517.19494 8452.896503 0 56084.62806 4600.942936 46.76157647 0 1398.248794 10636.57512 0 6132.488972 0 539.7827713 10623.37993 15822.71868 2005.801583 703.6667595 0 64.01455568 44804.29703 361.7435019 0 394.6395734 0 0 3082.110049 0 956.3821308 37990.42561 0 0 26638.82277 63.0396932 1347.856858 59078.97118 0 0 0 4920.815763 31811.03898 0 3199.513695 858.7187873 0 2871.744941 101.3356678 0 7458.536054 0 17607.6234 86.64320912 0 6177.924586 0 0 0 40454.26116 0 12225.47106 9735.994349 9458.385155 0 0 48.89452844 26792.90248 24958.6091 0 6423.491696 382.3776148 13173.68126 17949.70704 23680.89579 19623.28974 12810.69651 2979.709791 2534.443987 31.69655758 0 43518.17734 40640.22447 0 3.987693718 13898.73604 0 1442.068761 21056.62853 7100.062722 9275.126708 0 0 13404.18182 21803.82196 32240.76937 90193.44172 34981.05486 12125.03784 0 32136.79298 0 37097.13881 0 1670.914639 16466.30644 18502.56338 35786.25888 21244.94634 769.5815502 23042.55707 50679.41325 0 52107.98217 0 9608.528545 6644.328261 32334.69657 12599.84723 14638.27902 19116.85905 4350.657982 0 1798.102118 22578.78902 7452.38067 23643.6014 3662.01957 7604.62528 35523.48601 6086.940672 1286.99495 30643.10346 19013.8891 1.993546844e-05 24618.92427 685.8309396 8.540984377e-10 0 4039.205771 0 4.891458558e-05 11264.05166 18198.50094 0 0 26764.05267 0 44600.88043 154.0783953 42413.81093 0 8881.747723 2486.012011 47015.68152 0 61032.78953 27011.80308 22984.59037 7221.922403 0 0 15280.35637 0.0002310598696 4806.93667 7700.502218 28534.97345 0 346.8071481 4199.463568 7706.213491 0 4098.26827 0 683.614688 20636.67737 0 6609.261545 17969.62833 0 2669.409083 0 0 0 93929.26567 21563.3683 0 35347.46136 6153.610597 53997.18598 0 0 0 7502.671382 3210.650921 43742.062 72842.57521 9201.866025 8168.904527 0 2285.332824 5811.803401 0 83170.06622 11602.31626 1052.956906 2362.944431 25330.04287 908.8541224 0 654.6173437 0 0 0 53009.51405 0 45453.86703 11892.15205 180.2092814 35690.46067 1443.725551 0 563.8956902 0 0 5276.150651 0 0 0 2976.248481 0 18901.02395 70404.34855 2594.156342 0 18473.44993 466.6167407 0 0 25584.932 5935.344912 5786.987864 20597.86497 0 9317.684492 6892.191815 27818.45694 0 7087.568959 2307.975864 0 4243.810462 311.4087321 29726.72861 23950.44214 0 35115.19795 2734.467676 3093.71215 0 0 4209.753557 0 99.91432721 0 12083.13979 2330.806821 0 19031.75177 1930.868996 2745.781676 0 +2227.815887 4606.667847 0 51994.63982 0 5874.10265 1350.650427 0 0 48097.77141 0 1368.941623 10168.12538 44176.22278 4701.60551 53449.45874 0 12186.62175 1198.533661 36.73123397 0 0 0 46.21306191 0 0 0 38800.31032 17658.00586 0 21355.27315 7600.419323 0 5509.388161 24181.22014 3542.697239 21.30526008 8894.753118 8011.658295 0 0 2211.988101 5161.087365 22369.58332 8338.464994 7061.270573 309.7103946 33647.42131 0 0 0 0 0 8113.201979 9246.776511 0 0 1771.536758 2615.177616 954.3113987 0 8436.999473 14550.51257 51470.28827 37405.05441 61712.36022 10539.68618 0 752.6404119 1827.655579 643.4297002 0 0 0 66740.86479 4430.80225 2904.990363 38.3603302 0 339.0900301 0 0 65461.12064 8577.776627 0 1282.530743 50916.39743 1282.943457 14307.21426 12429.16508 0 24163.35808 4121.624584 0 0 1840.315276 0 0 83.05667491 4217.254965 3962.570396 276.6415609 54395.95168 12492.89727 21545.671 97.04376443 1739.410222 23070.54973 0 2109.092635 0 23735.18551 0 2.560415926e-05 11941.7945 3567.621444 20649.07304 22772.42143 0.0009228382492 2096.143256 0 16435.64226 33635.58326 0 0 5291.449375 1869.760243 2396.471529 0 27657.6244 50605.37443 6127.995474 1970.250278 22751.60603 13265.68381 234.7703083 0 3491.40689 0 31275.04722 6633.630303 22872.23131 2454.982424 27931.99321 3749.729527 41393.26592 25491.07831 10992.76721 7157.452328 3920.478532 80978.8267 0 0 393.5491594 0 15717.68084 4.544679694e-05 0 16144.81621 1.877729569e-05 4379.410599 3540.795835 19804.67905 7841.748148 10759.44367 23365.73809 0 0 4518.867369 23625.93058 4527.582546 27121.85123 17130.04113 51267.26562 0.002142817333 4606.909642 19742.48665 32725.59147 2581.772466 6556.549818 6792.148036 1052.057021 4535.140039 26172.02447 0 0 381.7043064 0 16418.85271 72671.02942 31957.14155 8342.632544 18282.65766 0 650.0924865 0 0.01197480301 12043.16472 284.4420129 0 2748.414888 0 0 0.2699910914 1652.375965 5886.672712 3126.917746 68.87364612 238.8107703 0 818.2768752 1559.589758 32970.07187 129.5939522 524.8729749 3628.805311 0 0 13069.85801 0 2199.051278 7972.427136 402.7406204 81463.89053 3840.679274 3129.380821 85661.86593 4738.074131 30082.6141 5237.839471 15566.25876 32346.90209 0 8339.128985 0 0 0 5626.120847 3490.448239 0 2326.922742 0 825.0333922 18738.82247 4626.303243 21233.74692 6007.898969 2573.17753 0 54541.19134 0 51326.60648 2009.202364 0 42.65501814 0 40.07872073 14854.65857 0 49.75519326 0 2393.409218 12589.47743 1146.460274 7378.116145 0 18646.5218 5286.909768 0 7916.863802 10879.90061 0 1726.111182 0 11694.27097 0 3000.469637 351.0019512 1048.434881 5.973768272e-09 0 0 3909.51581 0 0.002506359155 7200.956178 0 29274.91489 0 0 48505.66172 1532.25164 6458.409429 7377.253748 8515.919987 8788.157974 0 0 0 0 +0 1567.518451 2645.674336 968.8803489 1605.28723 3507.040032 0 6311.772192 15324.67935 0 0 0 71578.51368 47.15240647 19544.90615 0 25551.11766 0 0 5251.956935 12343.76445 6909.362823 13447.831 0 71512.07236 0 0 8.906870615 16142.75649 408.5488284 0 689.3684928 0 71537.01391 0 8778.687978 2878.16808 0 263.5924289 0.6878855092 0 31.68483812 4353.315736 0 5119.352993 0 5271.835538 0 42561.21591 163959.8126 23896.93345 30833.15849 0 3729.789886 12282.97713 25232.81659 5413.567741 27014.10198 446.9777868 0 62932.36228 0 0 0 0 9238.212993 0 3522.613708 0 1654.525453 6116.182564 3030.391231 0.231772284 2823.104913 36022.03476 1862.862391 44752.93531 36355.09664 16620.1387 51125.04418 6608.837138 0 26069.78679 1116.321494 2356.869782 40545.28154 1541.898916 22238.58076 20402.10017 2531.228867 0 17785.77008 45271.3628 0 0 0 27021.50165 871.1401864 15896.38604 0 14506.73027 16069.89228 45946.18089 40923.34556 15993.4568 53452.73196 0 0 51427.9173 21025.25957 2158.888019 16356.00179 21081.68948 82282.99278 0 36215.35134 0 62060.3008 0 9337.947448 0 1583.462064 8946.159728 64003.89943 780.3644168 1058.094135 42398.15683 75618.47634 28844.1248 18036.89406 3741.014497 1692.050873 0 0 3878.268745 6252.024145 0 1.015788711e-10 23134.26121 0 0 0 2663.96394 42102.46566 0 0 0 65786.35578 0 6513.173161 43953.03971 0 548.6420012 2705.729293 0 63464.26772 60001.25913 0 13187.85962 0 6468.543507 0 65106.99318 0 84.33106097 2382.173924 0 4489.189131 5963.851424 0 21599.76641 32494.21126 24479.73972 881.3581658 13603.89344 2572.280499 2802.302892 7147.600016 33926.47878 14580.24047 6955.933914 0 3004.983928 0 7344.475175 17656.38232 0 267.406397 20365.61106 7378.97526 73063.22501 33629.50006 0 84779.41892 28228.75284 0 44066.14292 0 33893.90202 83027.17651 17361.75116 5875.142873 39234.60984 57.57771239 29621.88877 51065.34847 19010.67028 0 4420.000102 1678.125825 6531.698921 35568.70171 14560.45937 13420.70229 39256.4893 1287.985863 40504.88942 2707.930758 5097.439879 18648.83619 0 0 42511.55382 0 0 4709.00903 356.0786039 0 22012.66382 0 0 0 16777.10518 233.1514724 10067.83615 959.9769905 0 66795.1433 9093.240996 43166.20005 6464.104747 25780.44257 34716.80897 6082.685231 0 26.41695092 19403.4369 0 527.338321 29830.2307 0 0 5988.356726 7283.02822 14455.14314 363.9937977 1631.92647 19533.57664 3.946108758e-08 6132.369664 5502.915766 0 0 3552.12487 4969.147347 0 5289.110912 637.8868153 8789.44301 5040.977437 6615.594813 40588.8953 0 0 0 0 0 0 1894.795412 35505.95192 5770.123072 4311.653503 0 1733.513527 0 0 0.0001018838075 5141.404469 0 251.0802508 2884.913881 53972.0336 8474.11875 1597.503581 0 9829.633322 36192.29615 26400.1847 0 30684.15994 +1599.308366 375.9871353 4557.875586 9193.886137 9571.422316 38165.71521 0 0 0 12626.49525 3767.669279 0 0 8163.768839 59098.18063 7092.089809 6681.930292 36632.68199 2242.874363 31376.34906 9722.418462 0 13245.41708 0 181.3186535 0 0 0 57880.68456 4991.096144 0 1505.338591 1516.602345 26310.67605 0 0 46119.01142 67907.02121 0 27245.68138 0 5585.317343 3937.588249 9030.843629 0 31574.30115 1892.455312 0 2991.829319 13659.90362 62856.85733 575.2785305 0 570.4059021 5385.305634 0 4265.280616 53454.6357 15397.46643 29156.20565 2129.745415 0 3817.667338 0 0 35068.7412 6974.274614 0 0 8815.295956 2389.477601 18960.30008 1999.304674 1547.67491 23226.29341 6161.290447 20524.92531 37830.62078 28452.62656 1841.033759 73082.13529 0 21723.86793 17276.38008 16422.43309 22601.4644 9008.475014 3078.261177 0 21432.84215 18011.40077 0 12817.00537 0 15279.46254 0 636.3409531 64180.68859 357.1078769 45628.25273 0 0 0 35710.98134 37141.09092 1149.040811 7971.256324 12552.17756 0 2029.670113 12219.92511 31161.57632 0 0 38069.47749 0 3257.709492 0 0 584.3853941 14755.75225 21784.82022 0 2109.138737 0 3562.945438 99.5035369 0 5721.343215 777.1033317 1872.031832 23463.9176 6994.632375 3594.554097 0 30235.76514 70075.07209 0 674.3289545 1020.336337 36505.97692 36269.65813 24547.76532 5896.84105 0 18421.90407 4793.052048 10195.91035 0 6759.830555 102773.5668 17138.30348 1836.192739 64068.13345 29766.80625 32455.39468 7501.279448 0 15248.90265 10364.96936 49657.06307 1456.821122 6648.245242 3812.150992 29521.93178 1482.935294 65295.69173 0 0 35027.00393 189.9742139 178.5616285 68538.55162 3566.778615 3094.309503 25.78285957 19663.03853 0 34748.43252 28718.02661 0.08904974189 57619.85947 0 0 2.19467545e-09 2511.408265 1863.375022 3805.84752 13935.18362 0 12644.1416 13.27262079 13985.30954 22414.40673 28.97519879 56328.48159 34053.16296 28422.76564 19785.86464 7676.4272 10402.9594 21022.27354 32053.09197 6950.673114 24858.62833 26648.32058 6233.50476 0 0 4116.315283 9954.45813 16037.15453 34246.0748 28994.89155 2178.956855 7374.45363 0 18630.97207 0 24863.14785 81.87169907 0 4814.181115 1130.582356 319.6241785 3482.172066 0 4919.805508 22849.30607 52564.66203 4921.821221 12580.59788 6540.420146 0 32551.14918 0 0 72.68742138 4859.452199 0 0 47910.28683 6930.088988 0 7980.698812 1334.533836 7848.59149 0 19417.9087 55556.90689 2698.541135 478.1475304 4400.022334 9195.004549 0 581.8084076 0 0 8338.355129 0 0 0 8640.533522 3675.300948 0 0 15439.29793 10475.52714 0 0 7963.043576 707.1098791 0 0 0 0 6983.46537 0 0 513.2458083 10014.34726 2558.762774 13976.65688 0 3002.983066 6.443677721 0 37501.22159 2.373305998 1773.230756 5053.589621 9356.399796 0 67705.2413 20013.54362 0 2530.16395 3826.074588 650.5944456 0 +1100.384922 60803.75795 0 1324.721671 0 38033.88743 0 24334.6684 603.9302574 0 0 2171.963821 4352.336156 12459.46845 16232.09544 16119.86493 0 2617.568831 770.7670207 58210.27081 0 22742.4133 52380.7438 2465.160325 18368.28262 47.23740665 7376.995034 0 12916.13039 8253.182841 0 7577.84697 0 4165.907563 19195.60985 3.379345127e-07 0 1698.769977 54.85235913 0 785.0830618 1094.972192 53363.37866 0 7949.561814 45033.71721 0 0 109.4024511 4038.647702 11194.67092 5617.010419 8885.052245 13741.3532 1245.280967 2016.535369 10846.94044 72.26324353 0 2173.806113 0 46853.18278 0 88.72585204 16304.17398 20415.19308 0 44979.98773 0 30663.55086 6688.928745 3464.702429 3239.175794 24168.83524 0 53066.97589 2.835720745e-14 490.0245398 112.8797192 0 16472.03921 47466.61848 0 72978.08358 42.60223654 0 30853.94653 33136.71721 81627.82752 5950.847877 12173.10744 24.84105144 164.3712541 5046.25415 0 0 18425.09148 20254.83233 149.8533967 0 2358.565167 11502.19307 8212.528504 0 73152.69183 0 29686.29832 12623.23057 18913.10808 212.8671308 2841.714528 0 0 13676.68158 13275.96223 105.3501681 27369.80861 11907.991 346.1181877 69.06480747 15413.71596 1334.474679 34875.84623 20916.04405 6971.221254 0 99.30378941 24811.4586 4561.269728 0 55247.7954 10086.71651 0 18138.12175 14495.85041 0 174.8484978 23338.76483 0 9481.923576 18859.0971 14328.86754 723.3362679 10648.59448 136.9539622 3217.868977 1941.232434 14389.14195 0 3950.964497 72542.14606 958.9763222 35550.01722 12012.51945 4328.419875 28714.89944 0 1942.895798 16912.56376 47221.53362 52922.38859 0 6734.306322 100816.1647 48648.83475 1532.900628 53334.15979 12978.1865 181.1617957 0 35195.97154 5971.783459 438.0261266 0 6171.512299 773.8207071 23595.39454 13666.57259 2369.916665 52002.22948 1363.752766 2959.981087 5003.300595 0 1130.551013 17961.56734 1974.779352 1910.540046 0 2.267094649e-08 12230.15107 0 0 53147.91008 0 0 0 163.2394067 0 5813.553867 24419.04616 1307.608679 29.91977471 39153.77336 19562.93158 338.7140731 8402.22904 35354.39636 39508.43419 2029.468234 0 0 10851.58523 47696.71684 154.1859743 35.4723482 38.4839196 20644.47273 330.415796 324.522981 42232.93647 1668.971344 41933.6362 0 1997.7274 22133.34945 5838.678564 0 32667.2255 43.00459248 113.5231725 254.5692004 0 12739.44137 16681.85685 0 0 8645.143438 0 3577.740611 0 13499.52871 208.0204156 0 0 0 81.60690096 0 1204.711917 5136.71599 2715.432778 0 1.834207572 0 79218.43087 0 2962.680381 46565.38014 63603.38155 0 0 553.5005048 49506.20871 0 1820.258384 68.42697138 16234.52727 34312.38502 0 356.7671379 3716.5099 0 17517.21553 0 413.4572926 0 33603.90798 0 8443.322359 0 251.2154984 49.77328016 26079.18587 9.282316014 0 40514.20596 1198.495093 0 14933.66128 0 0 0 0 21558.96844 0 17884.07784 0 2519.79944 7693.2197 0 +0 39236.16222 0 0 2555.413709 6810.062687 0 20715.93251 0 0 60834.40638 0 295.1045025 56374.21114 1.915453847 0 14653.0903 0 27883.61205 0 7778.938935 0 0 0 0 261.0046763 0 7160.337921 0 0 27907.3927 0 12050.08687 27435.15303 0 0 0 66.6979669 2389.255874 0 1062.213084 42.19061777 0 0 1651.235214 4435.160421 31146.81889 0 0 20029.55373 0 1628.114939 127.9625308 457.6967848 48070.72875 1439.499983 1860.341609 13363.46951 2569.167001 12996.59382 0 91267.78808 0 30227.4845 0 5658.644761 0 31422.41433 15841.74051 0 2680.552278 635.2490969 0 60390.78637 55542.20105 2956.943995 3962.907461 23121.00754 0 0 56304.16424 9.975339569e-05 51091.46783 12432.14764 0 14934.71675 0 38145.93188 9941.069746 12.98082957 112716.3031 4072.778981 0 2157.219488 4048.708878 89.32684479 44168.77062 62266.80859 25513.09722 14362.23717 11636.54307 34342.03028 17965.8597 2971.622339 28367.5314 16195.71005 0 21385.58226 0 2083.379681 31727.19175 0 5990.920266 0 8317.203996 4769.861172 11182.01392 34890.87381 43078.84891 81746.24658 4993.243195 26154.13704 23978.39383 16985.88288 5316.393233 18370.65726 13047.19326 61187.45126 18901.57072 5573.637466 1628.036611 679.2214253 35853.68868 0 10670.25931 0 4355.291417 3479.498723 42387.05047 0 2400.077754 29176.64618 15719.03318 8605.668444 1268.892935 11735.23807 50947.29419 5085.454889 23800.84808 3312.128289 3069.265221 0 1034.955308 0 22273.32612 14985.42691 34.24219788 0 44332.81594 74.72276177 4333.232764 1072.136037 19593.13736 46170.11732 11440.7658 83.81393045 4677.73925 1.140423819e-09 32708.20323 30203.2452 0 0 0 36123.19887 30833.10036 0 50762.4326 1083.617426 151.8563954 15749.03529 7825.127345 0 62040.45607 13069.02125 4867.433041 55235.01766 1907.962174 34641.43564 16565.88119 11289.3024 16703.06593 0 0 31.6165697 26682.12046 48743.01523 0 50852.07552 43995.89999 0 53177.82298 1496.896689 871.2283521 0 18660.80915 16999.53408 30545.4316 6268.606399 13178.43375 24598.6278 1.18584971e-06 2566.609855 5399.469858 11680.80183 2850.556538 4651.499505 7115.152655 42688.95377 22.3245012 0 0 0 7241.765331 6238.902618 252.35623 659.6037983 0 0 2400.296377 0 0 61.95784867 3806.344575 0 38947.02102 8639.052459 64581.11299 2107.159058 32606.6737 2384.919668 16136.92948 0 0 0 16394.45451 0 0 1348.687685 0 459.2235978 0 2961.496193 554.8995866 0 0 0 0 1738.41478 140.7505234 0 1189.070884 9023.627064 60139.9912 0 0 33.19249264 9141.912612 8049.195836 31056.52089 5111.25702 0 7056.148708 0 0 2598.125606 47975.34485 0 2949.174892 35.13484263 0 0 0 29841.08191 0 2.335504666e-08 26036.63372 29977.6637 11823.88909 52499.15003 0 0 55914.26278 28875.95758 0 55.69885845 0 172.6418676 24828.24395 2189.391524 0.1036821159 +0 28576.64984 0 0 21460.91743 10295.62002 14789.45977 0 38104.91263 3235.703667 19647.67249 0 7214.151542 1949.766051 2967.414962 42450.80744 0 0 0 8626.069772 34936.98644 0 19241.75047 0 0 2816.20263 1415.783715 3607.932887 11233.45986 0 17769.53891 12.95532516 12036.79994 0 23377.03979 4203.45126 50894.21542 0 62809.35561 0 0 0 23521.3306 0 28750.36209 0 0 0 9805.97842 86.96003294 0 11675.1084 0 7570.269225 0 28535.67612 9443.002335 0 19.01398093 0 5584.418462 0 3390.306223 57.40935698 1626.527343 129.0733078 1472.463658 14271.56797 0 229.8169279 0 7838.496493 0 1231.806868 69783.5773 0 6503.906289 110.1303506 43363.72888 17054.19829 10972.51568 17265.64231 0 21654.40618 0 2669.180319 1235.370564 3600.114497 1538.393271 1745.677331 2111.26567 20597.78931 16310.8717 6062.25382 316.3672285 64709.0161 4476.489116 0 1503.221539 0 7232.920432 4173.991446 0 2232.057645 0 0 41.1805479 129.5148954 77543.43231 47774.5326 6160.271929 1258.696637 4595.468891 0 0 0 9419.017734 1217.08077 0 0 22561.28911 930.9192484 9679.486411 30556.52633 17761.37312 15754.44522 0 7100.771024 37263.41294 16367.35759 629.4536054 0 66239.03731 26122.87589 0 12875.19401 20271.65502 924.1697862 231.857746 18081.29188 17458.51896 15391.72479 78580.45564 0 2072.999495 37317.74748 10539.53422 0 84.13850375 1011.465506 1691.11026 0 565.4437435 6306.550094 39444.64834 7489.69998 0 0 34712.04038 23540.21268 4323.520083 12227.00235 916.4462134 350.1279318 24825.59778 0 42898.27568 12260.69371 0 19956.85883 0 0 2238.161258 0 4015.02943 6924.574361 4467.552657 32297.88572 20705.05465 49691.25571 0 23662.78044 26849.81565 6231.8234 6539.732135 24325.51495 0 9783.254754 0 3969.37464 426.460278 3278.849902 31460.14035 2221.352725 969.5186104 13997.63524 7256.149261 33465.84802 48057.16934 458.2909157 2643.03935 12953.24358 17239.53891 917.9702809 19015.67221 14759.68828 11701.71567 19752.11512 28973.76082 0 0 1944.545625 0 0 0 2436.04394 5714.490981 0 0 57827.22441 23734.8945 35140.59369 0 12833.89261 32410.47812 0 0 27057.14299 514.8436106 9963.604505 13177.25481 69650.91115 3006.68846 10525.44107 4441.632676 42954.73665 41.55981606 0 320.4689527 0 46829.44228 0 0 10576.88126 0 3471.099654 1558.265042 1021.66821 231.4441766 11308.01073 2825.374773 0 8554.254242 0 16954.55178 0 25199.81955 0 2511.16747 6259.947375 338.6614967 81.25338235 26774.49022 19384.27583 0 18045.77111 0 0 0 3404.170152 0 0 41588.8889 38420.6107 1405.272072 72.50034866 3572.371266 9291.911643 21148.378 38871.20769 7643.500342 256.3027203 9680.753796 7895.701062 0 15323.00955 10740.8844 0 12007.29458 68.42993771 192.2132811 16384.65709 733.7685164 0 67212.32031 407.2646017 65872.34511 0 13199.51384 6800.358306 +230.2574385 0 0 11427.05441 0 0 51796.79492 21917.39142 0 56877.08714 140.2748556 43186.06986 0 11353.79633 13499.46607 3560.821578 1802.076492 4937.062237 36.88142331 35013.85278 145.9770007 0 0 6273.715703 10562.44416 86.29021344 31028.53957 26275.27116 12003.13116 0 18284.20659 3047.635423 0 0 0 2192.21024 2478.497172 16116.28755 0.007942814877 0 5380.855328 0 43275.45976 358.7343884 123.660031 28916.02951 17480.61545 2181.804105 2497.77728 7345.039429 664.228066 0 4074.018037 0 0 56150.25503 27014.60931 1527.401014 4732.79643 40027.4618 11477.65637 7133.739889 19114.89636 0 0 73623.66788 26510.24822 4160.13692 4446.844255 41346.89119 0 18702.62535 14315.25351 0 5602.39002 9538.960392 36207.48533 3888.30514 0 14226.00923 22151.89612 0 0 87792.54741 252.9614026 2605.036564 3253.223975 45232.10289 42641.04157 3589.147564 45101.52111 55053.74857 19785.39305 4889.315457 42696.99897 5905.13994 4538.965931 37396.19962 0 30407.32932 14439.29548 27799.01031 6553.969172 42730.8646 35078.67227 14360.50015 45711.61844 2746.435276 0 30927.1115 0 11671.27755 74.50766943 2323.013889 43220.94536 25877.39665 921.8271178 2985.543685 56375.62341 8961.426316 50547.1128 2326.894742 0 41212.26852 11509.90917 2907.364263 1954.755892 1007.153916 668.9859299 0 0 1648.352298 18243.74213 3956.671597 0 17035.84423 7710.621959 18080.86376 40426.01082 1906.695736 0 19979.81042 47385.36861 3603.440139 50231.89082 895.8616282 0 0 0 6687.99466 18955.65193 808.7950154 18026.46596 45801.71328 5792.49523 0 1489.770561 18986.09791 892.4098881 10704.50389 6151.640861 0 4206.851421 0 46784.78929 0 52319.96447 23236.63662 0 35.89325267 4200.841796 54069.03082 0 2733.687607 115813.355 0 16395.73863 0 36188.00865 5621.370752 0 10566.41881 37168.46915 0 5654.829908 0 4111.860187 6132.553288 0 38.62063443 443.5297846 6697.920406 8580.879899 10399.34422 39407.97182 88668.09962 8778.850281 2093.035943 733.4829523 4343.173906 65641.63016 0 2226.385865 0 27971.99477 3490.057521 13031.46501 140.3302911 0 2668.536189 4281.822107 0 66363.21348 34.06275328 14157.67594 2060.274151 11956.36847 914.869488 15979.1179 0 0 0 141.1603476 0 17398.40002 257.4977584 22638.41907 0 40947.43529 255.5072733 29.12039432 115.3318764 0.007069369322 24729.26607 18198.93158 52.30764624 0 10685.25894 12576.32406 5529.853796 15889.67643 959.7898215 53282.23781 0 25281.70401 7912.558234 0 9392.300909 19489.46254 0 2115.242484 43162.27918 0 2090.604645 0 20840.04303 10495.3612 15697.81787 3038.491709 66545.42997 14433.50306 45701.75556 10612.84492 0 870.0626229 0 0 29818.33158 0 1566.251251 18764.8248 44292.15305 35641.03376 575.4489651 0 2490.721573 1049.608145 0 4706.237604 10720.16281 52253.24033 5878.251331 3340.841129 19919.4778 19840.71861 3850.748538 26133.3355 1989.997779 9972.367983 5914.477016 0 3863.459504 3288.341468 0 5054.028419 5689.277688 0 18877.61989 3320.849997 467.8322055 +0 0 0 67713.78885 5430.745677 0 1548.249046 6406.07802 34057.01035 0 0 0 0 6141.523865 3838.736667 12845.49663 0 0 192.3983231 17795.56059 18225.21419 10315.82891 0 0 39414.11282 23363.30332 8173.127265 8881.22565 0 0 2049.638324 6635.109049 19401.01239 25064.01237 160.0338515 334.2853717 34039.5078 11303.85564 94779.03737 0 56012.0659 2643.104516 0 7050.058022 110.8985866 5177.532892 3174.065382 4489.191862 6393.540264 38161.65982 2632.223212 0 2.889309917 0 48712.4903 0 49479.11225 0 5061.461864 0 8829.647295 7565.239929 0 31447.6353 0 0 0 2140.305133 58890.16359 34083.2594 4571.034379 2813.594964 1825.421419 0 722.8079971 4491.590662 4425.962917 50880.92459 0 36501.10436 0 0 0 7385.87221 53218.04808 2416.434938 3473.342597 34282.5571 19278.94627 13527.58708 0 0 2273.223852 17132.73016 2801.001999 0 0 144.7138221 0 0 11656.83559 21071.79708 11228.101 1463.731896 44356.14999 5458.444075 11607.22528 71140.38896 7255.628277 3793.783297 26680.5085 284.5670025 0 0 30364.66469 23519.82448 0 11985.50711 31506.07722 0 995.4177338 5531.556374 42214.48443 873.6793311 8917.111806 0 5026.439385 933.4088597 28862.06567 127.373621 0 34648.31539 0 7128.300344 9024.997042 0 21373.46145 4382.870159 2217.327264 19861.49085 2408.33308 10071.68337 0 18138.21011 0 42652.52238 29650.48838 19413.39624 6367.365073 0 11979.39909 0 39152.64928 2244.615776 37065.27141 26658.03129 27966.67592 388.6521812 81133.80782 68768.87308 48944.71226 0 0 0 5029.830325 904.2476101 0 3555.313249 440.6878363 4949.18066 70599.28898 0 0 315.823425 82303.05817 2565.004469 98.58514856 15399.36312 9276.059735 0 35841.98856 21527.40723 39343.18449 0 4980.617613 138.9398179 36027.46738 3400.418307 313.268165 37323.85208 51459.55703 0 17229.32914 5427.577145 0 3002.608522 39224.61552 650.2810685 0 79.0900646 5947.217036 0 0 15564.72818 5611.364088 0 7374.870866 92.09916673 5083.758008 0 13651.36565 19626.86693 256.0922725 19539.78744 18234.98095 43665.90164 0 17718.71238 0 8131.083165 42.34557511 8189.255726 0 0 50277.61719 11562.6219 53577.87707 12530.37681 0 1628.489479 0 38634.19786 114055.9899 0 4922.891024 6774.353778 39.42552495 36130.53897 8788.337918 3261.31537 2438.305466 0 42264.54815 9929.174825 0 15997.11666 3166.563298 1696.825074 1686.034449 18545.48263 17936.8596 56512.90432 12526.02649 294.5769223 10561.3 7944.52329 0 3750.683418 11866.87899 0 17617.83497 0 41.60001864 0 13325.05543 0 60103.07729 9810.381362 55521.30468 0 3702.158137 2674.951178 4456.157096 22.82207324 0 23106.56368 0 0 1416.289644 2590.838882 0 8568.296749 34395.87679 0 0 1843.686146 1015.390506 22766.25429 0 0 11059.16144 4994.711136 3051.749215 10706.67206 0 19756.05942 0 0 11016.22777 266.5557789 +0 3348.522286 6762.314313 1424.53462 5620.773114 0 16339.25519 0 37475.57839 0 0 0 0 14233.58254 3847.177984 35.09775346 8095.692772 0 1786.831066 0 5.322696833 0 0 640.1433587 0 0 9701.878144 0 0 7819.254672 0 0 79854.79694 2273.125044 107.452774 0.0001385308239 0 716.9765203 0 2604.728385 2067.79785 0 2067.256426 30435.72202 1106.942296 235.2763174 0 0 494.0161179 38955.71212 0 3530.583455 0 44791.58228 9246.010779 0 44292.98061 0 0 8036.421162 1380.003646 0 47402.82175 20058.06325 3769.219336 1526.265906 0 65939.35757 24155.68307 0 0 7260.298855 7402.849384 0 117.8013868 166.5824487 100144.6057 0 3347.749647 0 869.6391194 27321.49852 0 0 10999.97398 57397.90822 2355.889435 20365.1309 9358.880768 0 19510.40323 5738.376878 2713.591604 9352.22955 18065.772 16470.7885 0 79479.07804 42492.78448 10847.10797 0 54079.88996 10526.85165 5646.61747 85110.539 844.9506715 37848.85405 27.84122629 34843.06054 0 0 27851.82347 48079.11839 160.2651704 26425.22807 1.576306795e-06 0 0 68959.54964 0 5577.964705 0 36216.96158 0 7192.561309 0 1198.394698 0 22903.13809 57038.65238 153.8491867 0 59170.73339 0 8603.88675 1875.060132 16963.38514 12520.5848 7803.642971 68492.35007 17078.28212 47349.42319 5.95078289 14428.15229 2085.799526 0 10407.51613 37465.46596 11095.76809 26172.60636 400.0886694 28.41452491 29429.85442 47.78253354 14411.824 5904.441185 2929.79881 27276.89711 4407.59254 0 8440.441694 2.302210721e-09 2057.205991 0 1954.364508 23789.63551 0 9331.683486 0 8047.528092 0 0 0 0 93304.99403 0 15042.60981 8709.144717 0 15660.51013 13827.01716 187.4335231 21032.36383 0 25874.54868 10206.9361 0 0.06362998504 2771.642802 0 0 3240.799309 2803.124551 16467.1249 71207.18233 0 35216.67751 3733.416596 9621.722831 5343.342192 3723.71833 15873.76866 2856.983616 0 0 24101.851 33.57322964 1025.159929 11.99456813 26445.78406 39.38108317 179.5572069 0 103959.0764 56.64357508 2419.73453 439.7454025 36.0835015 0 287.3464729 7960.767553 2202.586958 0 14219.32153 0 0.1133738253 0 4494.450465 0 1654.271447 68642.47048 27718.3551 24976.05204 0 11888.15856 6935.499028 16941.14247 0 516.3603449 902.766585 7862.281736 1885.584926 16410.99612 1203.059488 538.3517738 0 824.7418615 1564.807023 13769.93849 0.239196337 2036.544478 65414.47171 0 0 0 735.7478235 68173.39539 2.350411075e-08 0 3004.928737 0 0 12891.559 23250.47003 48416.33734 12504.21813 3974.244751 102.6499237 13545.11344 67581.76153 0 0 0 69.61993462 49409.3941 0 2583.107225 15140.06958 1405.420373 93.30812328 0 0 0 387.9008281 0 54494.03895 3173.747203 30215.83557 0 39019.71543 8873.935798 0 1642.993383 17574.43931 676.5849363 0 1516.075342 0 0 4877.5413 +0 0 0 608.7002484 0 1777.597555 2414.686166 27184.21512 20987.79687 4695.810467 0 127.0698262 36476.0964 0 1002.977269 2295.891313 2643.835716 11.04025454 0 3541.772203 5610.06871 2045.213328 0 26383.02249 33087.01039 2064.431522 12270.73069 2270.916651 0 1.147343057e-06 884.8328597 0 41578.937 679.6837321 808.3671717 2322.036899 0 23502.24724 33902.98794 229.560191 0 0 4547.61062 54616.40955 0 21954.72835 49591.15168 0 6518.893876 0 24136.88112 22403.36076 0 258.7706452 18986.46138 0 7129.123085 2488.42878 0 20408.92811 15942.34638 1221.200632 7564.736012 1160.896316 1532.203016 1979.705408 3707.205002 3399.549749 1968.53332 4493.803319 0 3162.159678 19704.54086 64.23170083 17817.99315 0 0 13233.34136 39042.5968 0 0 1401.672531 33381.29156 0 9982.909828 0 8903.674852 38565.2889 82239.3196 17307.20225 0 1461.04072 1456.842124 66789.5536 11296.68582 0 0 3454.994034 15273.98398 15664.63687 20203.05676 237.7728622 385.2643514 1099.590944 53958.42804 48713.05145 0 0 94.45635119 5257.379861 2618.288644 4573.172399 1095.543971 44626.29344 2.282185104e-10 1555.807366 0 19403.10713 42754.97328 8659.473903 65474.68762 0 27970.22795 42580.96169 62593.66865 1501.982438 1853.694668 2634.448752 2659.316681 0 23606.15375 15486.52078 28062.5251 21079.68886 9536.737708 0.3848063835 24171.07652 12920.19823 189.7828255 22409.77039 15867.9652 8252.300542 1468.303149 0 25351.48174 47722.04764 1370.324429 31239.76766 4133.243868 5425.448376 45695.93628 0 269.4565224 30021.57659 5849.622666 6686.192465 0 290.2037349 3019.152851 0 0 66532.30706 0 2552.206917 222.2891266 12542.12273 6718.121151 0 32841.16172 19065.86103 41.94645151 1640.313004 20312.36669 0 17359.36276 470.2475901 16295.27543 81519.38546 0 49223.04388 21193.21419 16437.91026 0 27701.97481 257.7221811 0 0 1849.82924 0 30548.36008 9331.901882 0 102.2999729 6612.481314 849.5938468 0 30241.23863 25024.29752 1323.684362 0 0 0 11565.86887 0 4183.306971 11939.30596 9649.080393 48448.39267 0 10349.09347 43015.71071 59.87746601 22410.05758 31930.8472 0 1524.902692 34357.78767 0 52260.91599 5213.067765 18543.8596 2285.868612 3518.557155 1171.592906 4667.006919 2167.460597 7661.532701 0 27729.43921 15898.02383 0 0 3484.2816 0 0 6320.23296 2348.435644 0 5.54913194e-08 55.60441386 0 0 0 13189.8006 1371.985568 2600.709708 32.56233294 0 0 40948.08932 0 0.2533089587 0 30705.76244 1202.311271 0 0 0 0 0 3160.59142 20905.36047 436.3751832 0 3775.409329 30412.38928 13045.72882 0 1920.428094 0 115.907673 0 0 62.75884102 7054.711557 0 6982.73138 5.874105892e-10 35347.16495 0 3383.777832 8316.443946 7775.024521 1.372407539 41191.02692 6222.628345 3332.044662 0 0 0 161.2673244 190.3622308 16.52216391 26958.29967 0 529.6389111 142.9738024 32844.61893 0 29913.20581 +1482.356524 0 1356.127655 0 0 0 4561.106265 6981.60371 0 22595.18642 0 0 1932.540493 38741.31337 24784.63257 8136.284761 10367.87725 0 1580.144844 0 4684.752124 6788.778621 0 2283.855163 10534.62221 0 22221.81766 0 0 15905.17962 0 0 38142.34003 8730.43679 41208.33501 0 2490.413238 0 591.842239 721.2735063 7734.504408 66231.29524 18619.99118 0 0 4559.4289 0 0 0 6351.634279 2714.135906 14561.52504 209.3882253 0 2151.439164 62428.22749 16516.51836 0 0 0 438.0258748 23739.4641 0 52079.19454 108.7853254 44041.13172 41047.0157 24731.92403 45502.30179 4281.363335 21786.69408 0 17553.71639 26033.12203 24630.61113 97321.36297 0 4689.888649 1710.667657 15689.08704 3727.55997 8033.521703 2707.683994 5989.763917 0 0 111.6594897 2475.009857 58890.48322 124.160079 12010.80087 38313.34837 0 38175.829 512.4387827 50776.192 61710.66714 0 0 2342.928355 0 2075.831186 1727.443311 30.07295959 400.3488787 12038.5884 37698.55325 4171.492508 6027.067868 31156.47036 9979.010644 14484.58966 0 0 0 15126.68508 0 44355.42467 0 950.5061099 13.86762158 18942.72721 10588.52821 43951.10759 0 29998.19948 16112.50937 21198.48516 7686.41474 0 2892.35817 0 843.8354164 0 3.442283484 3080.86632 2149.501428 22466.57763 4763.747335 0 6784.474117 14015.39762 0 2775.142963 0 1914.570078 0 58257.36495 0 0 0 3973.635976 3283.346961 34692.14912 30744.74498 48812.64216 34161.47476 27935.73211 0 2185.907926 12065.47839 21107.36197 2554.450294 535.2823981 4736.127588 10213.49167 0 0 15040.64103 0 0 12264.40057 0 50668.52564 0 3126.568835 0 24215.75821 19762.3331 16114.23698 19593.67536 0 10830.41198 3659.695089 61185.60912 23317.93716 7941.0763 20713.91116 630.5163519 6449.790575 39063.65483 22308.52538 34273.15999 6221.740099 44438.988 0 4273.099143 62841.64332 11297.13007 0 2150.77333 0 17537.03116 1269.727705 24358.02578 17901.65958 1131.830166 0 58151.66552 0 7887.558342 3288.180346 0 0 25368.34951 0 8900.721454 50297.90343 112383.8131 16692.70037 0 0 0 1859.995336 6315.305387 4399.917524 3537.23231 0 5.087067638 179.709688 7591.125138 12898.66176 1615.602286 0 6131.918667 8167.556952 0 54604.48995 858.0056668 0 2586.531785 1516.907664 9314.663415 2365.168015 838.4277076 11668.32373 11.4835014 0 0 4936.736408 0 4679.287907 0 23016.99651 0 512.3201596 0 0 27344.18074 26317.53659 26648.09383 12277.31939 0.8712751886 0 6862.072827 58.94250344 167.8536493 0 0 0 181.9356347 8129.653048 0 51267.33833 9572.464273 0 0 579.1631489 14006.76465 1920.665824 0 16878.94184 80.36941408 11.18441927 1415.887627 0 0 0 0 0 10479.58245 0 0 0 1390.532744 0 0 0 0 0 +0 0 5298.72025 0 0 2585.160643 0 0 19390.41633 3959.3764 809.8102864 0.4478587256 7143.060552 0 2420.559099 18593.8513 221.2319917 28069.32807 0 52676.77561 4030.038643 0 5401.216308 28709.34003 0 0 5163.404665 0 68941.19741 38089.4754 0 19194.58321 2783.194683 0 4467.561235 729.8924306 116.8603557 32789.94796 1779.99402 31297.57901 0 50510.52704 94.04300519 0 1709.09142 11236.32028 0 60370.01389 0 0 12604.64708 0 8576.150415 0.826648131 44400.65083 7141.036535 35387.34501 7.308739538e-11 36366.69347 298.2778363 0 4022.076251 0 2994.444722 605.180659 0 0 0 1078.33936 11295.53727 19497.28259 0 21029.05602 19166.49293 5292.15951 2730.777231 21142.28279 8212.996637 338.6696633 20045.96539 26218.52946 27.21747327 28956.65457 5705.18775 24643.16072 1820.020949 0 4936.322915 18748.01601 34.92740491 87992.11816 10454.56306 42802.09624 33891.0886 0.01746033476 0 0 3584.364808 36065.71122 90804.64216 552.0590696 54885.66025 2295.492354 9657.983097 0 5737.789533 29739.84447 56631.68942 74294.30794 128.1244366 5469.512708 120418.2615 0 3623.027238 13821.06605 24226.71488 0.001385964912 22033.33121 70.76111229 63296.1374 42687.70323 17608.32352 7281.760828 22073.00076 4300.227594 8770.470937 3070.575624 0 0 21493.60774 3614.923121 105216.6209 0 19399.03848 767.3456238 1657.675609 5577.675549 19331.47383 32844.15445 3093.441955 31610.24148 2724.835433 21478.35314 2385.167632 32.46053473 762.4771657 5989.028321 6442.766637 52292.90302 44.43508918 5414.790727 0 16379.07447 0 0 0.0001082477216 0 4555.837104 2879.050901 0 0 97369.28833 27739.74931 9716.359177 1993.675221 28.09266423 4724.65779 18694.55158 0 505.8625727 3210.848177 0 10588.24988 0 5854.551466 38653.21383 4590.471684 27429.23641 0 9.907872466 33.49474301 41415.98188 46533.33762 35990.11212 7809.452899 2494.291637 1620.554372 1713.909944 0 0 0 0 19576.63253 66532.49028 655.7416602 0 8798.086667 26358.06923 167.7707752 45461.35075 60154.16065 11746.23006 28578.49076 3777.706875 0 0 0 12604.75246 106.2503686 458.7014512 1.140063636e-08 0 0 79267.4575 0 5308.458891 0 19680.22919 0 46909.42601 19129.52213 0 0 0 6369.23938 14216.38967 75.29918877 510.9776869 23202.30571 2070.802685 7040.066346 0 42357.98422 4141.223086 0 0 0 5624.693645 5228.404885 0 37877.30914 0 0 67676.54212 13602.15571 10707.36398 0 0 3895.095789 14980.8482 0 0 32881.58297 3800.183399 15477.41487 0 1767.292754 0 0 17872.97204 0 13981.09291 0 0 16835.89816 3260.609515 121.7960082 0 15942.48426 50114.0821 25359.20347 0 0 28839.80794 328.4580441 0 2782.649585 3000.713978 50806.95063 0 0 9043.906938 0 0 1161.039534 0 5077.797537 0 21801.59854 0.7495505441 0 15869.29035 0 19480.73839 5477.621208 5847.349376 9128.699705 7997.246428 10251.48503 0 +41.38865622 0 0 0 0 0 8807.822657 31939.45528 7068.441909 1633.768615 22264.04503 0 0 3328.596579 4179.84194 4635.611157 0 0 11918.48372 1635.145338 0 702.263923 1982.479791 0 2970.257004 2821.97441 0 0 0 16116.20815 8123.455325 1809.438229 59268.10805 13586.56864 0 14831.34246 454.8458912 0 2891.33043 0 16324.94521 4749.377393 0 25197.71202 61788.97565 0 10010.69736 4417.238216 30796.87979 0 35279.77653 0 386.0410658 22691.29482 4573.457277 2263.621565 15809.39763 43591.32539 12925.01831 2569.030345 38749.5824 31891.3318 0 395.3832252 19483.63111 46035.96369 1834.652536 7729.886217 0 16805.40583 6354.580042 50780.13362 34334.52704 54755.70627 12141.61172 0 0 58762.72797 0 0 2114.982485 0 192.5691158 0 71200.38831 2.928367588 50769.67462 648.1048138 0 34277.77983 61.48677127 0 52820.14533 0 0 65196.13528 18810.73581 0 513.9854726 7848.482715 11312.18928 56166.5562 0 350.6537271 0 25897.42055 0 1473.005699 0 29166.43315 292.5493571 0 0 332.9612031 1055.6565 50673.91652 110897.4844 0 106.5972428 26343.26878 0 4806.484099 42546.04237 7310.516816 78618.54385 17617.85681 1076.520919 24542.95086 7105.567439 0 8908.395467 0 19460.262 14392.15644 10343.25304 18356.5017 0.0007219343149 7341.915218 8471.599261 23282.58063 3658.682914 22384.17836 6836.228695 12203.23472 38547.15696 0 689.1940357 11558.02792 4013.27152 51260.33839 4909.454387 7001.985822 123.097106 334.8963196 41530.23164 22048.09643 46.87296969 14841.36548 0 0 1281.093615 0 0 0 45906.52105 7937.48208 2923.841803 18985.55697 31659.92706 46405.36908 61904.89113 35865.37054 178.1330623 4321.429384 11438.13216 1919.006901 0 62.93085756 874.8194197 0 2803.642442 242.1789943 0 10086.01289 3930.818506 0 40429.18386 10369.67209 12873.12264 57155.54121 4973.122607 44.57437699 2341.720469 31.71296911 0 22183.18535 13369.36208 9307.431381 0 18133.30137 25.3887982 0 4063.633185 27773.60735 55908.33248 3444.865388 4697.859628 22764.22213 218.1162969 0 18195.72662 1065.763759 0 727.1488458 6635.987873 41262.30287 0 0 955.6267626 47428.09929 29201.50132 0 24710.55105 16668.15518 3300.576073 2258.080931 33706.5615 40847.16122 61823.66334 0 1297.890843 3041.552452 0 13936.82094 381.1660247 8199.013481 3492.88177 28092.0654 11293.43673 19170.68261 4077.649245 50459.93194 0 1790.490448 2610.221356 20518.66449 0 9792.575288 4150.147992 24522.53044 12675.7183 49859.90554 3912.505725 19802.62313 12568.96645 22774.33783 1493.148061 24868.91493 3084.214505 0 1846.103397 0 17261.1042 1658.906619 0 40262.78078 31414.14158 0 0 3592.537321 0 3399.72468 1956.444464 0 25845.12552 155.6946979 39708.86616 25167.29313 0 4088.97743 1481.657262 1113.649028 6601.617283 48920.06182 0 24406.5974 0 0.04622417334 1279.704092 12302.36556 1618.983528 377.7667458 2432.174336 1320.204623 0 0 8486.886771 1726.486563 0 0 +14461.01613 27.52467894 16818.51126 9311.204568 0 0 26229.06285 0 0 17460.0279 0 58.23801035 3697.70481 0 5292.385715 0 0 0 34170.28013 3331.594725 0 0 0 5142.541254 0 0 16277.09142 35470.87766 0 0 5101.205243 20400.06606 0 29393.02337 50047.86692 19607.37164 504.4808013 8017.11329 0 3025.524121 3.127386715e-11 0 2707.713129 1037.706969 58295.95734 15288.33553 29227.21 4364.689366 143.2314952 2526.969295 0 0 1.111562529e-09 80267.98582 0 0 271.7553686 30984.44363 0 0 0 51572.74483 2484.755797 0 0 0 68356.46331 1645.530419 0 9072.877315 0 12980.40387 4617.921857 0 22317.16207 11566.5251 0 73320.16341 40955.77995 36612.48134 0 0 0 13854.5739 0 9098.094186 1547.968329 9758.672636 54401.03525 0 5940.369281 3777.191207 7671.3008 0 1115.531693 260.3831118 16482.59047 14802.74448 1944.988416 72264.63372 16399.60039 180.3174861 14149.049 1855.777022 61335.082 3379.426762 32709.7958 42395.1551 0 205.4684316 2612.062152 271.5505381 20930.39939 32297.52926 18747.31986 43952.36643 4390.097188 0 3382.692939 36279.45209 9339.876969 42625.97083 16421.27882 361.0002728 0 0 18500.25297 3069.488058 8.995598702e-13 8122.288245 0 39820.42902 382.5442595 14455.81395 39393.85637 0 57089.83154 21973.74322 0 32203.64903 7758.672417 37.77283619 41727.13512 0 39285.01041 1840.15779 54.10205669 0 0 0 34716.24051 0 10659.858 35723.77117 6138.306349 3426.757076 614.0401094 21267.27067 9976.755231 239.8827082 2995.537208 1498.85731 533.2351463 0 27147.17168 49906.20876 4432.159372 0 0 20099.12545 25872.57838 0 0 14727.45185 12493.50497 0 0 37.95324507 26094.77204 34625.03642 1447.207215 1781.749792 6003.329951 41332.82595 13074.25189 66.51636493 1.283316809 5657.141853 8061.778391 15118.21617 4537.462908 0 2763.59792 14674.57949 1207.150604 13500.10256 37614.79172 61907.83237 35977.31887 0 6818.425563 6949.533455 0 3290.793107 6222.395415 24155.34114 0 0 21885.44621 34846.746 0 1039.1109 5813.376324 0 0 6574.127189 0 0 8290.388274 2365.069873 3592.361152 8537.482072 162.7017159 9387.973893 14549.78022 1433.267264 15036.96987 696.6137691 6619.573741 3159.321964 0 569.3749532 2061.72039 57.03552652 21757.87572 436.3418646 1823.089692 77.29506762 282.232576 385.978963 0 2262.702353 1.879528453 0 1.631600079 0 12262.15269 0 21719.8838 0 59160.69412 2283.312481 19823.49135 5532.712824 5968.011854 0 0 0 31662.67912 3714.577391 0 19946.27895 0 8783.311784 7079.219543 80.6637716 35989.52419 9373.824386 16502.11657 67.29509161 7949.067623 9314.585735 43.6453955 0 0 0 34814.57501 2503.203045 778.4076358 41862.16616 115.1714247 6948.483623 769.2272985 0 0 0 2038.725637 457.960207 3342.212042 1686.404734 8483.028975 0 0 36401.76123 0 0 12485.54135 0 2271.571724 31596.10774 +0 0 0 0 3943.97994 5956.969144 34716.98659 21550.44976 8.505881746 32484.93305 2581.20505 61.09201029 46600.02605 851.6552939 0 0 786.2347396 12933.9582 3413.988739 58705.96035 11277.01309 0 0 6.489320236 2947.742329 10305.84846 12202.07373 0 0 46644.11826 0 77.54869446 0 9121.419903 0 5586.886232 36754.83505 0 45460.06201 1797.974295 11254.27104 16498.19614 1724.823488 44092.9434 0 27964.12936 0 19948.32636 7169.828574 0 2180.618762 2350.715962 15420.70743 16293.04693 8267.684556 0 8336.117702 0 13249.09765 1447.834798 39053.18636 53489.91352 43281.96282 1323.344504 7619.994733 2043.048279 8443.909841 14522.64984 0 0 1295.971409 0 17115.03777 7848.732126 14919.66981 38178.63274 50854.68155 18523.08222 0 557.4109722 7176.058703 19863.86992 17146.17301 14167.0781 0 2357.243808 0 0 14365.87815 29338.5946 0 64652.08148 0 831.6463013 0 35330.53721 47008.61796 56479.08506 0 14475.48332 1047.122449 0 64598.15859 40350.60351 0 0 15328.18076 46850.028 65018.15977 27040.71252 39885.19996 0 35998.45553 49665.44025 14482.66016 37226.03455 0 0 36169.26202 0 30.4417805 1340.953876 15862.2679 48758.08233 1730.795378 9537.333534 41373.95199 7271.520551 39674.40943 761.5334208 1609.162571 96533.44978 911.6360191 36678.73321 32697.52172 37619.80975 5.670785429 0 0 0 0 16415.35825 58998.60597 5034.773761 0 3773.590006 2.697775876e-10 59612.73271 19067.33996 5202.686184 24273.87989 23582.56239 0 94.48933235 0 6422.322868 0 38409.82245 0 0 35769.62399 34027.35558 3219.361736 1838.16623 23945.76913 55946.35374 3752.091286 38.24205732 5330.008539 8963.897099 11194.86224 51762.35438 13605.54723 1540.393201 4512.107417 5056.627712 4419.839155 21433.3673 27035.37728 482.1935536 8017.640647 3276.267755 0 8922.995801 1492.717346 272.5577922 6109.108475 26304.10956 3433.535126 20446.51691 4992.990107 482.3483544 0 54376.66334 11006.34285 29647.02533 62.88728535 5133.897406 0 8940.240858 82.43341183 10664.0631 0 0 8322.861115 0 7.054348387e-05 75310.68406 38023.71776 141.0837601 18113.84878 5216.23433 7270.365736 3383.054592 10015.82535 0 9366.949552 0 9212.966085 11461.50691 19152.52302 17493.94968 0 5565.043621 62792.10215 2112.506893 33754.41378 0 4657.960464 0 0 10889.07533 5973.098397 12314.33962 0 1307.679062 2583.535857 7644.336359 0 4333.97391 14649.13638 0 49522.9393 0 0 9327.255654 48827.18164 19202.34858 2188.950936 429.792109 19192.50296 319.5655458 2342.62255 0 23598.84137 0 4555.212818 4689.939741 0 1709.807741 55365.28218 26015.11123 10470.76258 3463.026511 0 34543.87706 33002.35232 44254.90861 21743.47495 0 12018.59796 20677.23025 18135.51058 5365.90961 0 0 4514.376862 0 19385.37224 0 429.7020848 23449.09487 0 4189.155207 0 0 0 0 608.1433433 0 3645.364746 920.4172892 0 4.46198373e-11 2552.312627 24762.8555 0 0 12261.20037 23017.63264 +284.5470274 35980.12521 5215.08141 21.25830419 42912.73126 71194.75409 0 17718.75853 0 0 16942.10447 0 0 3037.351708 568.8937341 23382.55071 0 0 2505.873296 0 16532.7968 0 2557.472916 0 0 16386.26496 35128.23914 1154.859618 0 0 0 10302.02239 9547.834515 19018.09291 89.76227168 25463.38411 2431.642311 11112.82068 2978.876565 26947.25955 5429.503892 20963.97523 0 0 0 12652.69049 0 0 42.06080171 0 23041.91423 0 0 4250.188188 29656.35618 9783.97906 0 250.1066923 15779.62621 10761.69165 16233.25381 28503.63991 54057.91907 34289.74593 11216.07848 9496.273012 23238.10273 1846.986916 0 249.3878833 4737.962415 5490.429932 23148.76942 7071.415359 0 8192.813162 0 22891.22352 18030.63136 17640.4416 3829.674535 87690.9782 4613.149986 7930.122183 0 10940.93367 24047.23666 0 33328.36501 24613.44862 23259.63087 12969.12743 0 2853.848361 70200.13388 0 32639.78601 19317.12225 640.1205766 23086.27357 0 2014.363608 8927.410648 6546.956264 22520.11188 4962.84264 3094.780413 1.83620408 5490.926315 160.1043622 46933.65948 2859.403081 30686.21624 0 538.4617085 11868.46932 0.02937221247 838.4801675 0 17183.28593 23496.97398 5943.60915 0 0 17559.83262 2026.178518 57.4767684 21046.89466 3.526308885 43685.33806 0 24539.07057 36304.67707 0 0 0 15594.52173 63195.74175 0 214.3122645 0 2.601725549e-09 0 8147.933885 568.4276393 30098.65721 40157.10546 674.9682887 0 2378.31123 0 154.2713184 0 11016.5638 5096.590513 7209.870393 5893.965939 57.69587173 4372.249504 0 0 4228.507988 74223.72633 123630.0552 38266.55271 38961.40832 5539.673998 0 16056.52619 8118.280761 9167.236165 336.6459252 0 2732.096398 0 7433.269892 0 0 4347.672927 6684.930907 1639.821895 36.59497674 30648.83317 43727.07005 13795.73678 8336.557804 0 16940.26966 13944.05693 31655.53476 120.7749721 0 7698.138339 0 50665.51854 16439.17279 48883.27373 2820.046008 31415.19671 1512.811957 12437.72291 0 0 0 3165.433627 12373.25678 1445.012739 0 52075.30847 54193.94394 44752.31774 0 0 33622.64561 6225.353056 79179.2895 0 0 0 0 198.4006915 0 57.91933558 4524.988607 6640.568167 1686.934918 11791.02041 0 1.824224169e-08 3781.027796 7889.518786 0 19858.79168 0 0 3766.066098 53220.44839 67287.51346 35.25465267 15684.60641 10487.28559 262.4915777 0 0 0 0 4594.814931 25690.01494 0 5407.646954 19059.3222 0 0 0 1865.177583 0 0 8530.920182 0 0 0 71823.87098 44121.28565 125.440563 0 0 0 49.01545655 24059.44909 0 413.9046985 3641.176487 0 7841.770163 0 4380.941186 4480.372369 5913.479419 0 0 78.79980633 4235.126538 0 7780.541428 0 30841.02989 0 5664.622838 0 12758.64525 11953.01391 780.0181047 2222.156685 109.153489 12701.73763 97674.8673 0 19637.20898 128.7538168 1433.685078 +49630.32841 32454.87575 2791.502049 5765.994464 0 24381.7062 0 0 40945.71419 0 2103.080058 0 1055.48997 0 131.5522594 13957.73339 38769.37291 0 11557.51655 4733.497011 22291.63658 0 978.5397903 0 0 0 5743.037981 0 0 14319.69902 0 44121.86702 0 17536.29617 0 2074.399611 0 1598.361074 0 3290.402105 0 0 2951.455502 0.0004073236159 7705.929332 0 0 0 0 0 573.9071367 0 674.0913614 17631.77916 0 3397.01521 77.71662112 0 0 2827.494026 8554.702089 0 27786.18816 3549.712445 3088.117717 7.605845697e-05 0 0 0 27746.24621 2.62398629e-06 0 46501.22011 2852.041473 3646.311534 9993.009871 0 34007.21709 0 14419.06344 22211.51028 16396.41934 10651.21698 25835.83943 0 36617.24722 10186.84921 2978.172898 16237.72865 19210.47114 6111.027345 2425.875275 0 16185.95452 36492.30816 3992.721628 25612.20729 0 66885.28392 26021.17339 41044.0744 92238.78849 506.6765197 0 60097.71068 63965.42237 6788.840968 38698.51576 13729.82451 0 4954.549024 0 11999.42854 0 67641.40428 30567.84928 5887.67327 179.0581124 62320.10931 0 1.776094455e-14 0 4.613814237e-05 229.9688608 13801.98131 14737.20376 8419.360351 141.6380066 799.6596129 211.1896955 1148.126161 107.1003453 0 47012.99236 8359.281035 2866.489249 8279.585758 302.8564069 63321.78727 48874.21846 0 16415.03601 0 4590.942729 0 0 1088.520129 12675.33621 2161.417894 5090.741817 10530.43741 9873.016043 0 7533.544884 70510.73081 50910.90222 9077.253509 3014.73573 23719.74723 54210.73627 3.806893876e-07 5749.298882 0.6017848965 119.7052198 11064.65046 0 0 49531.96471 51931.45764 7550.082369 0 0 720.0057642 1448.086861 24907.50492 30.30144993 0 55736.26058 18025.79595 6319.146988 0.07958843037 4780.239002 4064.319813 0 0 9285.185276 7808.350629 9527.772961 134.4967671 5935.918802 144.6438453 95.74626183 41718.37775 0 1737.9601 213.0479833 2161.456889 18627.66024 0 0 1533.688678 4217.606144 9581.22839 22899.31518 43709.50906 24820.60953 0 18425.15516 0 6085.835642 213.2787004 8576.119574 35993.16034 796.7645797 54.33063029 0 26756.32207 11623.36002 31189.2251 2302.091751 8231.340731 0 9353.820492 2177.965569 38083.16597 1356.477756 0 6631.376121 1211.192094 203.6338758 21464.54238 42.86780288 39489.58958 6300.088609 52667.41403 0.6025393067 0 37872.09943 0 0 4245.029408 2865.697904 41229.25049 1753.537837 29351.218 77.7404775 9979.175867 0 28068.08571 0 451.7738164 35063.70172 9355.666001 3972.347049 1714.114773 50063.30829 0 36871.66278 3923.345075 519.8574224 59.63797189 266.488963 0 9471.353112 0 66167.98903 17924.04166 9736.525977 57185.54197 37470.90918 36848.40474 0 3011.828622 49091.67616 24285.48886 0 34547.31136 0 11405.83652 5157.91255 10041.41379 25600.83804 1547.015332 3414.090037 13057.49637 0 0 0 825.9203942 0 0 0 1782.555665 0 0 13887.87064 0 0 40.53207134 18319.90079 +64334.19433 0 0 2482.36541 1515.371391 0 10521.23313 18787.4586 846.126236 0 332.860186 42787.52459 0 8642.906995 3.337951718e-16 1178.651888 0 8.9870366 12462.56104 5911.459162 0 0 0 0 0 35.20254457 0 38.51576948 0 0 16393.78121 23.19317055 14757.27655 0 1962.519822 34872.99933 0 0 0 63887.48494 4082.953207 5329.571441 3523.992441 22.17793805 9086.382888 0 7785.702331 0 36983.20315 3729.615408 3357.017745 2502.885851 0 0 0 1255.964755 0 0 0 65.78184007 11621.20191 1951.407251 65291.21557 1194.922822 2238.976473 4969.381335 16727.74432 0 21863.45539 166.4013938 29142.72456 0 3733.569974 1333.478022 0.0008309095508 0 0 345.5792158 36824.81032 38379.36434 1494.125568 6432.410435 0.02728333678 0.70907763 75023.35415 1343.490625 12568.01356 24804.86041 6590.316775 5754.488606 0 5322.635771 68488.57593 704.4162525 55650.01468 9361.301114 464.9679883 31984.9284 28550.10675 52468.46618 0 34.20477705 2885.790648 514.04859 20041.93001 2469.757462 48804.38172 5868.718446 457.3030406 0 0 7162.170184 4879.297937 23589.49632 20835.34001 0 43011.72737 23018.48011 3295.18732 7143.660629 107.6096183 0 8917.635423 294.5465979 8868.823326 16331.03352 0 29344.67571 0 4098.872287 621.5384659 4533.886795 6056.485881 0 0 0 2.025501361e-11 6874.023703 85.3869252 9329.269039 67152.089 2459.603984 0 16687.67544 13998.38377 19733.18029 0 55635.53279 3835.007402 20421.27471 1698.459415 1.43623835e-13 0.001170896104 0 0 0 30427.65332 89410.36984 295.5322637 0 3041.982627 54283.7837 2133.122992 1634.850823 62835.57996 0 35147.97247 18737.60912 32412.27993 69836.5067 1.444245985 6796.503174 3364.033513 50686.9198 14577.92282 18690.41812 163.1119952 23830.39713 1957.102004 65436.36204 0 0 2337.333944 29721.83623 7097.499266 11283.58411 0 7512.217597 3231.673471 26419.73751 14678.86524 82261.21907 26171.03192 58997.56109 0 4065.291695 3631.496671 49851.57978 7679.354938 30904.23111 17478.64412 5214.350497 0 8763.376919 101.3205406 48179.78229 303.3416177 1244.495303 779.8322926 8391.995756 502.3568272 736.1157256 0 0 7453.639616 0 352.6408891 0 0 56.86893899 0 0 34153.45293 3854.458216 66.5235903 3035.198944 7160.163733 7.630968438 2160.445843 483.0233722 0 2.106540473e-06 15138.2449 0 843.8367825 0.1946635256 0 29950.04999 0 3238.434496 0 0 0 3405.256231 8059.093558 0.001539688014 0 30459.56128 3606.062658 19913.36371 42774.47166 972.3302641 1532.888201 315.1311608 8838.324086 0 18978.76671 69199.12075 0 4558.280642 3538.039531 38426.18175 0 0 0 8097.970008 0 962.3825273 4548.975811 21558.93951 75.38787062 0 0 131.3986462 0 0 0 0 8248.792653 15267.06271 36663.43742 0 2.50471708e-13 36939.47868 3804.925161 4637.642695 30461.35443 0 0 373.7690704 0 46604.00486 8081.431734 11752.27222 1179.665062 19792.98472 1135.536778 0 214.2138632 61945.95805 +1320.414219 212.6002859 2611.157582 1468.510828 0 0 0 0 6726.074291 6943.256457 0 3910.742118 6533.006717 0.1311456339 41277.82671 2532.46635 60086.6456 2953.873922 18702.50333 63574.28428 0 10006.07942 2275.187639 0 48166.87462 7849.769292 0 2372.508542 0 6722.032024 13475.20872 0 0 23465.13425 3425.929437 12365.02396 0 0 0 19447.07184 19352.68736 2916.699645 0 0 7741.167813 5802.915429 59664.137 3653.560029 18440.27055 8609.609679 1782.244493 31317.60423 0 2133.265449 22381.30223 2177.777044 98.46706217 0 840.7156149 1609.765123 2607.240493 7528.454291 316.678852 75043.74168 0 20203.31821 0 14226.72752 1559.130899 0 80838.9447 0 2949.3912 18055.47881 15838.07431 0 0 0.3074593032 24788.06325 19821.87761 11512.36079 10606.40311 48506.60364 0 128301.4866 25986.9252 0 2038.768039 0 19579.61894 2614.836673 0 0 0 39986.35106 1126.383167 2417.712991 7369.802134 4466.893004 0 3198.903467 24.73056808 0 7266.883118 10723.57812 133.6473662 42636.23984 12916.31398 208.4234461 247.0536078 6470.947433 90802.84737 136.5455436 12487.78183 85.33677997 25802.65159 39169.89132 18649.22584 0 0 0 43190.75224 25305.52248 32313.215 13687.46862 45292.41827 28995.44402 0 45764.85429 0 0.004740206548 0 58689.44425 13524.87067 0 1224.541732 15814.63932 455.7204235 3716.240186 47037.28259 0 450.3001164 50699.26769 18746.54735 18989.74374 4963.328259 17274.0076 2619.850579 66483.52633 6768.138618 11857.06678 0 1137.544564 32433.83723 177.2756882 0 44058.31168 0 0 0 35053.35712 18568.98561 13923.26174 3106.752182 28047.85617 12459.83274 7764.481308 15288.73278 7493.631164 0 26130.24773 1963.583297 32615.85897 14879.21313 3857.470548 10098.68912 0 0 0 29343.27045 39.31321916 8848.233341 5085.416041 2971.824703 55511.30283 11041.09539 6137.465038 1560.918252 0 20308.49294 12484.91508 41468.37137 42919.67749 3106.475404 2583.556529 39313.22734 0 0 26263.21473 0 6633.981803 60382.76185 0 28809.51791 6680.736197 0 0 111045.1904 1002.920605 0 0 25328.1488 24981.06576 0 47167.5086 40144.16641 0 0 11391.87444 28816.50745 0 52022.87248 0 0 59446.93397 0 16050.49271 7164.867117 27252.04126 0 25321.14048 48986.27993 0 0 0 0 44049.79075 34768.73408 0 68484.0394 6221.991922 0 51062.13134 0 79067.10975 562.4677403 3505.150324 27511.59929 2076.565457 17263.32397 0 27959.35297 5809.640523 3162.049947 0 29302.73625 27398.65945 5747.009448 5014.994779 0 3275.5685 7334.644307 24.52937464 11356.32948 0 43225.61917 2003.47262 3900.730812 0 0 1763.872194 81.76376338 91.07993267 4.720146021 45916.52665 0 0 0 0 2611.86161 0 2683.12699 67416.22595 0 0 7790.926174 0 6758.334425 52668.50028 0 111.3165236 8754.512247 82580.87366 0 55589.83678 0 3019.867119 9785.222938 0 13552.20215 +6092.119971 9931.184803 0 0 5677.693123 0 8275.206771 1591.674675 0 16052.3363 42342.06869 1066.016492 0 0 0 0 13031.95092 7712.614 4802.185427 1584.673061 7032.389391 61778.12461 29602.78705 13860.02754 0 9974.987733 59757.72747 0 0 5202.906637 210.8707599 7866.78662 0 8472.812661 9.159094934e-09 11348.24781 0 0 1498.811607 8974.874219 16275.54846 216.9162221 10718.75494 0 50366.72743 0 0 0 0 0 0 32135.75907 925.5141089 32403.54627 1734.308054 4252.644208 8973.568675 18906.38941 44259.72487 47974.86014 0 726.8238378 28.65189986 0 0 0 52128.44886 16336.118 47917.51008 7111.695523 1274.951821 21009.41572 0 20021.12818 7725.936893 41448.44197 19344.002 15992.16592 19087.40906 2443.351494 3355.222742 36513.94855 3325.724871 17229.9554 50477.56323 72962.80872 14504.80579 44754.25143 24308.81935 39324.7261 9401.505316 45859.17416 27655.42121 16573.71783 0 44579.8168 293.6742037 45997.86248 0 76191.18189 87.39480667 28329.86009 33576.63307 37661.3832 5036.330193 15843.43737 13726.5294 43944.07268 38.09398149 9607.332507 0 0 10305.93772 10773.74965 66319.96178 0 55405.07255 37173.17886 1960.649062 0 58209.64341 56840.91745 4125.966348 3256.933364 3253.594759 0 12174.49663 64247.92754 32393.09171 5580.236496 0 0 26916.07548 18884.68249 62748.03879 107.0478561 20926.3892 359.7277047 14411.07303 27285.5441 2270.375659 65.7922633 50.82326054 82575.49886 142.638975 0 0 38603.18916 10574.19251 1060.041975 10079.88215 26824.09665 3863.005972 0 6598.868763 0 6246.585629 12655.96583 7127.363107 3451.987914 67645.40866 14297.52025 22522.41787 5725.291858 19142.27993 34000.43547 0 0 24590.46769 23424.94663 46694.63044 11530.95885 14586.12158 5661.598708 29.92286214 0 26138.96262 70026.61547 5745.631812 0 17169.44194 0 32495.59718 26488.64828 25109.13675 28298.57399 0 51520.68621 27277.33007 13054.74558 0 3342.616089 0 8093.931789 21896.93262 0 0 4052.981292 1.739551412e-06 0 502.3174686 1040.614216 65412.81605 126.5263316 10516.94938 0 1308.189934 44217.07841 1348.050719 161.2001703 43826.70494 7147.76519 2706.775374 8035.250075 1756.237277 1107.102448 10139.14295 0 8390.588218 33362.29361 0 30914.28673 566.0847335 0 24214.40304 0 5358.815803 6862.773028 14279.64225 2467.730399 22608.58186 20982.18232 0 13206.88756 12221.9864 6748.731615 5763.09437 38327.61833 946.6252875 0 20261.67228 0 0 0 0 0 10821.84536 40106.24364 1315.951835 1770.77274 2965.9466 10084.90766 5998.543606 0 3.467086367 0 0 14607.21474 2061.286506 0 526.8049858 25513.40699 0 6450.002021 0 51.543634 3540.167436 0 257.9076592 0 3004.117142 4327.18165 1.198449744e-11 0 0 3587.540555 0 1515.956677 0 0 0 0 0 24706.76169 1698.967331 17387.94096 0 26021.02939 9749.59143 475.7878175 0 4248.350265 0 0 0 3120.51336 0 3037.407036 5539.953787 0 +0 0 0 0 12951.56024 98.07629358 0 0 14063.2341 17635.54414 2365.052913 59897.25423 6172.556825 23457.82046 5938.654737 0 12573.55093 45191.49971 25086.27461 1612.20041 3800.098958 22399.41825 1722.839233 0 0 0 0.02704243192 38944.37572 0 0 0 41017.23819 4510.492214 0 15501.88267 0 18093.13621 1971.812863 32558.58995 27897.84726 5340.975748 21081.785 0 24.45258023 0 14855.73174 32463.16253 26228.00375 2028.562015 8144.303362 37064.18107 32243.94363 11357.86645 7743.037984 31207.78946 1897.514148 0 7058.295829 0 5146.529957 43962.58444 46127.25894 0 0 2781.812357 0.0002246823895 0 34056.01905 0 33532.3787 4525.861204 16811.67926 29568.24847 9808.530648 4387.360641 0 0 26331.58618 0 0 2189.084044 137.4044108 12780.83283 31959.72793 0 100.8946019 45075.88864 48.84192115 6091.040856 59347.80951 51834.91586 23730.12886 0 31798.30631 0 0 28132.98097 12205.32889 34455.91151 0 30204.44053 47058.19788 51606.25123 68831.25073 28059.32775 6712.200966 28825.9367 64097.05838 13437.43374 34860.8273 1173.196934 57389.66363 0.0002556964546 1451.019493 21976.9704 2290.187747 1773.240981 27071.55926 6888.892319 0 3591.456414 91104.03008 16077.96634 55745.63525 723.9464836 37929.53071 6717.224534 8926.851462 41869.73553 0 0.00199733237 1787.59632 54896.53543 23203.10651 12577.70523 0 34600.15952 48121.55675 40464.89439 123.3612005 0 33761.89315 0 19397.30452 212.5509305 0 67791.67425 281.8638122 3626.241524 23510.35528 20192.58528 118024.7841 0 4316.330831 24776.02574 584.3635121 2827.548649 0 0 10847.70257 0 0 43255.80999 8838.350756 2181.420328 4620.363242 0 3927.660819 5808.974952 6213.241408 0 17940.02571 3828.441545 839.281314 43617.11496 0 9222.400432 21262.37474 1124.118651 7371.500469 0 35543.27581 45053.1116 0 0 5458.058531 37172.93319 65858.95536 5558.616873 50584.16444 0 36139.39475 209.7048335 0 29058.27978 3024.191069 1445.393624 26345.27152 0 4906.848264 21260.94242 36077.47363 9837.064069 44426.1688 37831.53161 0 0 0 0 0 0 7944.465445 47.10420288 0 17007.80539 23191.13833 8506.178356 7032.244518 184.3518568 1905.781516 16661.38687 2039.922967 113271.8527 3817.730084 4341.818071 174.5257267 9034.386633 46132.5364 3855.966193 12207.99027 0 43036.01361 4351.681681 0 52.26732505 1597.163921 0 300.1107608 0 4846.303564 0 3934.670544 120.4877893 870.7363891 31572.29205 13871.46198 18142.81655 36343.66261 12680.65196 5743.664013 0 0 0 4787.592534 0 13268.92252 0 0 14020.0552 1471.780478 0 166.2859984 46.28087086 26099.0219 0 217.1801253 3076.010002 0 5174.156021 138.9018721 3267.536463 2349.304197 6556.383207 984.7952526 0 0 48435.60396 39143.45593 19027.46755 23029.8881 0 3.112992326 43442.79904 1637.112355 2290.180778 0 63.07903454 18151.53822 6181.448256 1081.043298 0 30308.05798 0 27279.73994 1991.486372 3528.721035 559.1850177 95.87936495 0 0 +32027.64188 0 0 61833.42323 166.7438919 0 5709.406735 2578.376689 4291.272788 13166.14521 1598.730652 19030.64993 0 26675.06579 0 0 145.9651754 17.54973617 0 35443.85237 0 83.36786407 35114.41519 1167.110671 0 99.6145588 5537.326991 761.1178696 1428.585164 351.9672044 0 8903.800359 8057.169565 0 34.97208363 0 0 1161.203619 0 0 1833.415679 0 33771.40477 0 0 1759.69322 28045.7128 0 5725.274447 0 38099.40041 5.623282874e-10 0 7992.604046 4049.346104 57626.80884 58878.31069 523.4637542 28832.87928 45.63626746 83342.64349 0 11734.49567 17503.90751 40420.31221 0 14464.84111 2073.077384 11705.24479 322.4707624 285.0447971 0 58461.61363 23791.50171 6219.602406 3940.105783 0 4183.511286 0 0 37000.19503 0 6586.592264 53124.95436 0.3325448884 25594.72886 31561.75165 6516.605 7989.544544 0 20096.41059 0.09122319584 4176.922978 67373.68746 0 1253.830175 7677.713562 10989.79682 2965.471471 0 42637.6968 11087.35851 7746.498606 7173.780942 2808.321423 13002.43876 3331.994941 33606.52869 197.3302782 0 2025.260274 0 0 12.40176226 10421.75192 4449.800992 10697.04608 2317.992878 65521.77349 3569.764497 12840.35911 0 36930.3603 55202.28063 76604.82405 0 11029.9398 42148.41631 465.3540065 17066.94987 220.8911816 1085.384516 2639.67526 18187.16094 36306.77497 39098.08125 26130.02149 49735.25787 6888.913415 8049.775542 0 2898.524931 3.362716943e-05 2182.262022 4425.735304 10338.03518 45191.0222 122.489847 0 0 74686.06271 11.43073269 167.7741261 53459.82065 15012.62195 7479.302825 292.7135057 4516.041897 2001.148822 28479.13674 11375.16105 10184.20648 0 12587.8949 2350.219877 5775.702412 5262.212909 23677.26837 10319.78294 29449.05919 286.3077382 0 2852.24703 34.99722956 4232.002139 16264.31001 228.2414143 27209.32601 0 58417.26543 8196.748515 0 0 0 37356.90345 10803.60815 9360.397441 4393.850587 1509.404633 3367.588035 31642.0658 0 59926.8235 0 22616.66495 3511.903898 5477.260242 3269.677247 20041.92843 0 8775.076657 154.5512777 8555.456841 0 0 15245.23681 0 18621.52278 0 6140.119974 28049.60051 15394.90861 4471.710599 0 8726.946478 277.3308388 63385.40168 8295.14351 3311.463431 207.9377166 19438.23742 0 26086.2453 53035.26353 3575.731252 45174.79979 26519.37553 1317.083038 216.5077888 1355.300596 46.25443655 145.6108078 846.8834342 14097.90236 1038.763008 5694.44837 0 43787.79634 29903.46938 7285.459193 0 0 736.242677 89.09451943 17175.40865 0 22964.10477 0 0 101297.5834 0 4143.178129 56.57589386 0 41207.23906 0 15383.41969 6110.945851 111495.1941 0 4406.951417 777.9242391 0 394.5443201 531.5701978 0 7299.804118 97.25995165 49528.92452 0 2124.213263 293.3290417 0 0 0 51854.15399 41.25068108 38037.34495 1181.712243 36495.74636 152.5204044 1117.056082 2578.298458 0 0 32096.07738 2413.324627 0 13236.21728 19219.3907 97260.79925 0 0 0 0 4671.636548 0 6585.546514 6163.007493 0 +0 0 29335.36205 3304.413234 16245.93819 0 9181.81396 0 5188.141411 23.52168832 0 0 37083.49099 66.31883332 0 62720.38511 1879.040389 0 0 6412.991114 1806.447071 376.8649031 2494.371168 49.17653486 40834.23466 0 5780.60324 0 0 0 11144.38064 25056.67869 0 0 0 2561.505417 0 3508.834543 0.002660522621 56392.14112 236.7151968 0 19778.19843 0 0 2307.202752 40.27556333 1834.18897 12102.61921 39848.10223 0 43514.09785 8882.594538 10000.8971 10162.97953 0 0 6585.21918 5299.260676 18708.15712 2212.752392 460.8487629 2028.75264 3149.446554 14345.93871 0 29415.47107 36524.60974 3688.02441 45099.72869 24862.01927 28756.7085 13586.33484 21585.08123 1243.982008 0 0 0 26872.48907 2530.208501 5814.235722 3207.954829 233.7482286 28.68757753 753.9300212 0 29375.30028 5896.334676 0 33371.292 24889.60254 358.7633016 0 0 2.196482849e-07 64993.08868 26816.61258 3959.714434 5343.939807 47675.09672 29734.40964 10310.97308 13635.93448 0 63.67979647 1964.65894 5613.007528 56929.71478 14748.04249 0 5727.789895 180.995715 17102.23841 7487.825529 0 0 1809.898407 3124.72246 15247.53415 27468.97365 7923.426882 60464.8486 0 281.6759696 0 1614.847463 3906.419344 6403.237022 0 38920.87485 14801.94393 1904.471088 21990.45502 51361.28688 0 707.2084626 4306.78701 86101.91203 0 3320.554763 6960.999098 28082.59178 0 24758.8327 24447.6211 0 1291.628245 0 10234.56088 24391.31681 0 0 65340.50122 9.308294964e-12 0.07959649512 0 2230.830445 0.01990567559 39806.53251 31186.92076 2406.458281 287.5164502 64018.91414 67152.77609 17468.58545 0 921.6091688 5654.353599 8948.160132 12256.35831 0 8991.612257 28416.25985 97.79713681 25093.04193 25464.47674 35422.14693 0 1813.125759 2142.806035 33.84679708 0 22544.26913 1569.543565 0 799.2138103 23881.3145 5103.682401 5596.789984 0 0 41041.75355 2113.689879 1723.002215 7295.893314 42421.92658 4992.815651 8925.334142 0 12475.53543 11201.07823 0 0 0 57421.83012 0.5324592163 1380.176997 11280.02436 2808.475179 13514.88813 27311.82308 71344.52589 0 1.481078182 46886.76159 0 8818.440082 1586.929275 19030.74443 752.1842536 17077.88216 16086.04383 20082.22197 5357.897208 9487.740745 0 2762.221215 701.7599195 0 4475.189002 0 10534.99158 0 22869.49349 28217.22384 1441.216194 2752.249263 4750.062312 61.68070627 5939.592261 779.5341224 0 0 9.472030026 41824.39971 7305.152037 35.05343983 0 47321.83623 0 0 0 32279.81542 22152.83117 0 0 0 202.7497201 0 0 13413.35762 0 0 31752.63062 3520.110233 0 0 0 40460.80889 0 1.937305313e-08 0 0 3440.826717 8677.814588 0 41572.47583 8050.171942 0 1157.21603 7117.240249 2948.770472 2122.978457 213.6054542 0 7369.713385 7536.964047 0 3164.837512 5616.678471 1843.60345 1463.883875 0 5591.670827 6668.610859 4266.497197 15316.74035 0 84341.90873 124.1830622 +8913.74922 0 0 0 37079.31461 0 5254.774568 37747.9446 10274.39648 0 0 0 219.3989637 55022.04354 0 0 4334.641373 1464.921297 3119.316992 0 4159.452809 0 1831.222259 21995.70992 4709.916197 389.8255975 17442.0602 4141.332261 16965.97788 64521.75753 14851.84298 3471.616788 3529.363497 47917.69076 21211.14354 24134.12701 11950.28601 7129.467739 0 21377.17373 17007.16656 17692.39618 0 20597.26558 32684.89318 38964.14907 517.8579644 21686.26892 45372.05747 3108.930889 2419.414459 238.0911151 12456.81479 45623.90178 0 7595.980811 7012.477171 67947.98417 15915.13779 1735.311904 0 68058.32378 22007.51343 5507.612691 32360.28867 20021.17446 36991.0761 722.816183 12060.32765 47106.91383 31.82997325 17072.23936 0 0 2784.521031 366.5497747 979.2919326 35878.95668 0 0 9919.733893 10978.69364 8169.982996 0 2298.821282 77456.32569 4764.331486 24548.66452 2008.071673 4600.118244 1928.817628 13828.19695 1887.785758 21448.00136 0 2339.061676 50.72475517 34527.82313 60569.88499 57.86967362 0.884706057 1641.198476 26766.44501 3237.110031 34822.67139 15046.00552 12304.54643 1606.432418 59258.89398 29974.682 10892.97729 37792.44204 0 6264.033809 0 1763.437595 276.8319141 7375.204699 0 1585.252086 0 27637.84014 20192.15383 132.9325359 0 0 55.01682132 40477.40697 0 12892.28452 31028.10995 0 10565.99555 87.27228746 13311.1398 16720.13202 3014.593783 9559.440841 1.73099208e-09 6525.959607 47233.97243 0 0 26498.96952 9029.970713 227.1780157 3614.115028 3038.831223 0 2380.221907 1033.049831 0 2239.599641 0.08478106695 46567.37227 65828.92248 593.5766537 18189.68774 4475.737562 7788.333601 16174.37218 69352.08784 676.9216568 170.575447 4757.933865 83092.65835 22725.65358 13603.38024 26965.11186 41774.58209 0 15174.22495 52310.10686 13621.54093 4989.639469 3202.597794 4152.520987 54.51087399 1408.926471 2852.828912 32029.40356 0 10915.44077 47510.6031 0 15614.58034 12678.35279 0 23181.08072 41865.3452 75501.92483 46891.52533 0 6227.548858 0 0 2441.710566 48667.41357 285.1515929 0 0 0 0 0 391.9854801 0 43809.61771 20579.47038 12180.4259 7789.96776 3204.824344 4070.412957 0 3.202711039 0 0 4949.940172 4579.242583 13850.6399 9485.606335 0 1325.499666 2564.897627 11963.20254 35940.37461 2756.729942 9724.809495 33490.17598 0 8828.72836 47911.39896 44328.70333 0 95400.38372 8642.729605 22454.97701 0 7567.509504 0 0 252.8400847 0 0 0 0 0 24892.34717 87.11416882 0 30896.39285 0 0 0 0 4184.999108 2595.915058 0 66306.38934 0 832.241698 0 1187.216523 62261.03004 38341.54644 3311.865093 4798.134376 0 8532.475559 1771.05277 44118.50735 11981.84127 1609.233537 1998.513036 34980.71248 0 0 0 4347.831389 1710.324048 5607.99638 70584.77867 2106.000365 2957.173919 10284.05154 2828.694497 3567.278314 4118.78136 23832.60772 0 2430.966825 0 3694.294782 28073.14895 8906.147075 40194.00049 735.1619345 17552.05428 5110.511801 0 0 +0 974.322136 247.0845513 3601.412822 18534.09161 0 0 1.488722225e-11 1877.634953 9460.633944 0 8178.994822 23985.26782 4409.744461 38844.25503 207.9939029 19108.31199 6291.124327 54741.42888 706.9519004 5081.593138 0 16573.34203 27075.74921 4962.988097 12463.77401 8059.77748 16822.57796 0 1933.917609 0 124019.9977 58073.09114 0 3764.062313 0 58497.28766 3137.554077 8246.537463 20866.52648 0 6970.419951 24978.37672 15158.07608 107.6692436 55885.96589 46573.85918 33399.72449 41475.101 11216.39592 0 134205.8792 0 7965.581915 7746.251035 4628.433161 0 7439.702367 218.997845 206.218912 26.84818704 179.8688698 19591.84434 29489.1968 36464.53885 6841.281325 0 31274.20845 0 15748.51304 7703.028472 48885.11091 43053.88118 0 38.73570548 0 138.7993817 1872.777938 2263.812075 16606.65224 0 1651.007681 25115.8179 33167.39743 401.9053461 4709.519559 1448.564296 99862.16182 14571.22951 25668.06179 17767.26576 2522.113579 125011.1092 14430.52007 3734.818556 46.98906755 0 0 0 29689.34054 2969.419434 39828.79444 13016.83033 59567.39679 61405.47943 9111.248044 0 28383.7068 10692.61298 58744.99916 4386.010832 0 31275.17454 9863.54868 70805.78077 8487.850811 0 0 0 9927.382932 0 107.5706863 1250.278353 8210.40878 2175.373696 98146.399 5321.159361 6085.942943 33445.76716 3.883843649 1435.680751 7188.313392 666.5560167 43700.96035 47038.75398 34031.05955 0 25835.15303 6587.379414 23268.22545 147.8391772 918.82338 0.01859522611 11444.53502 80.55450991 24020.18163 126.3696937 0 10888.98656 0 26143.13496 13317.62102 0.8722250675 0 5173.580521 2140.780954 68757.90722 0 16744.11409 0 2650.496027 6880.916294 24661.78705 7909.806531 6172.960656 1.746470564e-08 4090.225036 5.580539284e-07 0 16985.99605 2893.221368 1085.988131 0 5693.537638 2905.724842 0 0 4771.173689 0 14820.42388 12060.01039 34786.5304 8850.811241 0 71184.22677 66721.78037 6180.524003 30814.01045 37246.61286 16914.31646 226.7361058 5463.304205 0 2260.378833 19602.0147 0 0 3329.72625 874.2738105 2716.549049 21358.8075 9786.038155 0 52320.67596 36379.78943 11425.40463 274.1866254 0 33288.3456 36896.29273 20537.09421 17688.73074 0 2815.462926 12594.27714 865.5778932 0 8500.7021 593.0323745 73738.62803 46.46416032 0 1195.242941 57526.05017 15228.86476 27067.46634 0 0 0 16208.00154 0 0 0 2738.378608 1968.006621 0 2435.22302 4534.524147 5547.625553 0 0 54374.48274 0 18.49278706 23837.93503 2276.661434 9656.407795 1205.581779 0 0 13257.02835 349.8264722 0 0 15003.70417 0 10459.23104 2258.428089 816.641431 706.7934274 0 0 5502.763653 18234.17921 0 0 0 20976.71692 1712.924921 0 0 0 0 0 0 66386.81292 10646.7726 0 38862.56322 0 10535.42782 0 0 0 0 0 0 2990.919982 8755.958104 4314.170595 0 28797.23425 3534.174802 5059.002821 14687.59719 6563.750552 201.9361699 21014.52498 21308.2196 0 +0 65.90292876 0 5475.519334 4162.092842 0 6012.108318 46641.43419 0 5928.63784 0 0 10669.28046 0 0 11637.00367 915.4997913 358.3414723 0 1.774720988 40908.41373 73303.60396 4721.438337 0 16387.00059 0 4933.740652 2719.259607 7449.504595 0 1697.032458 0 14230.9519 49933.94705 153.645033 0 22527.18042 0 26798.57199 2542.740521 0 9.217502373e-14 18659.88802 0 0 0 5448.118015 21502.08684 0 48382.56361 25206.03207 23576.57063 5363.707825 33305.04703 23423.3292 0 0 47334.62146 21282.10518 46858.1515 5696.495967 8421.938341 14775.27726 7515.582154 0 57912.87876 0 0 8960.801115 0 982.3218097 11279.56855 0 16334.17961 26132.62667 3943.996023 15449.92934 51362.63702 32487.13696 40461.98787 8667.001255 39958.58198 6270.119945 79157.99002 17869.73672 0.05430545304 43899.20169 0 10146.97013 9374.785092 918.3435896 0 7472.318686 7638.578612 3782.840891 3602.078618 60122.02694 51314.00925 0 4558.0953 0 3044.985683 0 111.8319061 54581.10264 19227.46328 71143.84842 49374.27375 32440.13304 42108.65122 25595.22223 0 20613.15572 19183.4457 12890.07205 4358.944098 528.4534514 2206.216658 13376.65332 18523.811 10249.64429 20177.71365 8668.057796 12653.84121 13228.70581 42125.19187 642.8941197 106009.1465 83641.78924 17736.78733 2152.83525 0 0 80408.79312 71427.75776 46962.54836 0 12142.28551 1036.919172 0 10770.08183 43078.79547 0 221.8673737 5105.839765 37120.65195 415.3166714 32418.55216 1400.391997 36347.61775 148151.3644 49401.72352 279.1490283 21575.75622 0 3895.654741 0 0 2414.251238 96162.70568 28830.06409 0 1646.523071 0 0 6881.531967 17699.93969 1484.511772 7783.508178 54.95128183 35299.21423 24479.37356 5627.656277 2282.690742 33866.10522 0 34213.90005 62032.9414 8309.879767 41027.47994 3355.858498 8095.354131 598.4931443 75214.01092 22163.82613 35612.20983 47630.6823 50177.23175 3079.490556 0 0.04089573827 91.23684726 0 32220.91508 9110.673259 43285.82682 50773.48733 0 0 0 5264.276105 0 23322.19794 20849.19084 12933.80311 41287.95991 23944.01156 10652.50396 71047.03156 24619.26035 31452.54187 0 668.1918854 0 0 18543.08302 46961.41544 10845.54245 3110.327178 0 0 17774.70335 34088.12787 46768.17516 336.8273799 236.0624224 46860.94995 138.9646703 0 0 0 7422.921826 207.7760315 632.0828977 23306.20456 0 42970.27864 174.2522 3261.329441 0 5171.214711 29472.11505 17300.77493 170.6052055 3262.333363 0 0 74571.98472 248.3821846 6242.188864 280.4754791 5364.876667 29966.75951 0 0 8464.15213 37407.97449 23920.06814 8307.398112 39127.856 7781.248215 70.16908012 0 0 53091.99218 174.9827372 49490.02177 23841.18718 0 4850.009617 0 3063.555575 343.4817358 25033.09267 0 0 955.3729759 1518.359849 13215.56694 661.4207682 9940.691202 5193.690707 0 33265.76283 53630.39393 2923.957074 0 9231.296739 0 11610.40258 11569.08757 15395.44885 453.7386502 0 63.06183559 0 3117.102112 0 0 0 +0 0 0 86.85760331 22805.68706 0 8295.256819 12666.26176 17815.93049 0 0 35253.33868 12181.98798 157.5490736 2433.71678 0.4086946754 8410.283472 4512.138477 0 10673.06037 2650.459831 0 46357.99764 21542.75829 54135.11775 0 17625.32004 1447.458005 14273.00161 0 0 1634.467116 1673.030878 29879.71556 8228.070315 0 863.2026956 0 20351.14525 19214.38729 15917.84966 26377.49275 0 2949.704494 28286.41583 6322.95118 32586.28186 4597.129175 18709.67032 7108.726964 4295.000068 0 56594.29996 23493.03999 0 35103.06297 16471.26588 31628.49638 35379.60572 0 119.0701554 0 0 29796.28617 0 21365.48601 19898.45222 2009.856097 31189.22189 0 0 15132.30331 3244.38709 29939.27109 2013.129785 65357.76744 24407.39158 0.002883374791 14581.57753 13681.16399 7077.689882 12730.40185 27585.21219 0 0 13152.66544 36200.27898 64844.90133 12152.7708 17542.06312 0 38523.56564 965.2010708 1318.716423 0 115.9685583 4502.481522 46808.25157 16886.29447 4438.298543 10540.88731 2892.425117 26266.14001 0 48515.79028 3230.901381 34151.49643 0 48613.07248 406.1403073 247.3186297 13928.38881 76463.28131 14601.5497 59599.10718 4042.852053 3543.220227 21596.61491 0 1055.398813 15496.70641 19465.7605 3539.108074 0 3271.301547 37414.34263 30097.33724 0 0 0.5000777861 14725.0099 22162.26872 5734.290777 2139.73622 5.134267375 10594.97323 32633.30291 44151.68894 2052.348261 186.4050744 3400.405787 4889.355265 0 1587.262892 24503.37181 1834.254994 3288.015293 0 121.1073973 62745.58403 24070.41993 5631.280039 11222.30456 48571.29136 11138.53584 12234.93655 2294.410646 8956.000692 114.6730296 5106.125238 21517.56369 1998.523631 27144.69191 119.6369201 316.2794028 9101.620838 6977.197584 37276.07183 285.7592632 70891.08477 64002.47199 1615.547946 16665.91039 44617.1421 0 12639.95428 164.1790728 0 7086.171021 9689.759874 53683.29053 758.8169829 1488.476541 195.4637486 3207.691085 9990.641747 28616.13206 38.94288794 32053.41998 3382.381758 107845.7043 54714.68795 0 54470.32075 0 14771.72656 0 5451.393884 0 748.0342847 2467.960836 209.6481093 18572.94062 27519.81492 130543.4063 23620.68962 43362.86566 0 9594.225346 18446.1556 0 0 22503.89646 0 20633.75129 23.67016286 46882.73447 0 2877.320758 8946.427543 0 5178.270703 67240.59302 0 23925.48901 10056.39068 0 0 0 0 0 0 10557.74692 7739.785354 0 5955.448815 0 4766.445469 46213.41148 200.478586 21724.73227 0 26314.31156 176.6324194 30905.26706 48795.0998 28195.39231 3850.279839 1173.835392 21777.08435 23594.0265 0 23026.63095 0 2339.007663 18476.63639 227.0986796 12589.42016 24435.80551 0 0 0 0 49916.28195 22049.65487 1530.800381 0 10822.87802 1431.116824 0 0 2760.193521 10124.54567 3647.330357 12.41276578 64.47214717 0 68.85894458 0 0 1642.786544 0 3267.230734 0 239.8389343 12071.23269 0 0 0 3809.954193 0 672.3636283 73079.70261 29051.99793 0 0 0 51.54771801 0 5889.056611 +0 4194.035039 18907.75488 0 42538.76361 0 0 0 1360.337488 0 47335.30338 14025.91893 3932.028766 42019.53035 7440.841327 0 4138.517358 12999.95758 2510.021003 500.9034064 24041.41821 5553.8593 0 1806.725421 42011.07454 21967.67899 0 0 42769.71245 0 41040.74514 0 2650.274527 71.354124 51563.39931 3733.302878 23469.14325 0 0 0 81.31536421 8295.93725 7565.562012 0 69115.12029 29794.64643 45263.40224 12151.41352 0 0 3085.869418 0 27946.33623 364.4068451 30743.50779 0 11721.03413 24249.83694 10356.20953 250.6490301 681.7401489 7367.371341 866.2995321 12914.30577 36.51794537 0 3678.260921 0 0 0 2.619313202 15502.86887 973.0680041 0 27609.58699 25403.30199 32828.39804 0 0 56714.83541 5655.526338 0 3543.053347 24194.89283 39416.33574 74458.48856 0 98.76806296 139.3619877 17997.64271 26867.4203 26697.73405 1072.068578 5561.683043 22492.71395 15943.71878 78.70083619 57765.93827 79392.26895 0 0 46617.17322 4900.700716 188.7831772 23478.70962 1958.019757 0 0 41982.87885 15835.41262 41117.3643 29084.47741 0 4753.0484 55790.89823 30405.8353 0.004117174519 5154.525014 1987.826591 1761.587853 0 23429.96664 2823.346431 28.48037767 2422.317658 0 35017.37077 2098.000472 20964.90131 0 30581.37084 3554.984308 10182.11347 18920.94217 12201.37766 29640.52555 46156.0784 0 3062.177911 7401.846399 0 0 4822.769324 339.1768093 16796.68116 0 62271.93856 694.8205789 485.3827164 29451.65341 0 200.7827272 5684.174543 24071.74359 6709.409738 428.2418888 7703.910751 0 0 8686.106286 15155.10048 13596.51935 49113.54886 17137.43643 36757.7191 36601.13088 0 9941.633572 0 1813.288794 56027.10443 16288.10899 0 0 107677.8935 5665.698307 6027.225622 4487.248704 49600.93232 0 97.27868053 80381.22608 1548.17064 0 2526.795214 25808.53957 11804.115 56055.4164 44476.99251 6696.428998 0 56046.21219 19720.49639 22266.28847 38453.1701 11596.49792 2948.428653 0 878.0346067 2701.829851 0 16936.74244 5265.681516 16204.26107 0 1594.51928 0 11671.12158 16051.99319 53275.61437 316.9124683 307.8385435 29692.76862 3802.870001 0 3918.459621 4597.482061 1251.711676 16809.2503 33939.12589 27760.50717 0 3031.594685 16245.67803 0 3737.376979 32216.60539 90.46967967 31212.58492 4158.998671 2098.183119 2659.776567 0 28923.04058 10236.88614 42468.35502 33603.49146 0 1863.542429 0 5177.350586 36405.66691 23190.52801 35089.17284 0 57283.38973 3216.743742 6656.265062 0 0 6.117879167e-12 69312.64175 2709.14951 32478.05097 21134.06461 0 36253.66197 29116.06682 1985.643185 4894.551834 13194.1845 56.94115649 7903.80663 6575.991403 0 4579.779672 0 0 0 49272.99789 45303.98015 3000.00926 0 18768.77801 20157.87856 0 20491.72506 0 5.289080142e-09 0 5770.800571 13815.83339 113.2457049 0 5319.747289 220.3135709 0 9950.777171 8749.709567 46231.50872 0 4221.358486 132.2012585 0 0 1811.441264 74523.85249 919.0552955 0 17.54696478 +0 13528.90455 17826.56872 0 104.831574 3447.922409 0 1681.506923 9843.521194 1911.705375 24922.47038 1021.671684 0 33057.02432 0 40729.4572 23031.4174 754.0781586 509.6588666 29720.72764 152.9385805 0 0 2251.986245 0 27489.13587 936.3777748 26682.956 0.5387468791 7068.946062 1539.365883 0 0 0 15458.6714 4379.901818 4709.324093 983.4452271 47341.44785 26.34604195 19887.2627 0 22799.02827 67385.52736 83.84614659 108.9251172 30781.76865 0 32730.41342 0 0 61620.43027 0 0 0 5618.549068 22.16011263 641.3208446 28601.00159 0 0 70038.86633 1457.615616 0 14785.02446 39585.5894 0 0 1914.775415 2023.329132 27495.06518 33161.43264 16451.09358 8327.17186 63503.71419 22.22566742 0 7.35326309e-10 6644.637764 4101.304745 6474.468255 7913.088532 123.0536139 67713.54567 50.47885387 196.6826976 42539.24014 38130.70972 37529.65504 26800.00962 0 56178.51056 2355.974531 2604.979513 0 8023.597101 821.6557604 0 0 6970.603302 12713.38688 0 0 28288.3682 9128.151872 0 7.376278981e-10 55699.17311 124.4392356 59708.82432 59551.86435 39306.30018 43494.19641 17502.21378 30875.06379 14002.9202 15499.958 34.99632576 5620.540469 50490.07483 4536.421142 51.16590014 27264.86608 35948.38897 0 0 16814.91641 38410.16426 11038.67823 59087.07901 32680.75273 3628.610398 62163.51813 0 14992.15514 0 50889.65953 11102.57051 392.9584262 0 4271.741563 0 38276.51342 0 4213.4284 0 66975.31396 1.246543743 26297.952 4376.045446 9835.605191 9389.371628 0.001569623656 4003.495387 9334.76262 10145.95719 2060.261085 4457.310476 4797.358064 26297.63042 1355.270765 0 4490.743396 56.21267089 82656.47947 54311.14057 14914.15454 0 0 0 16519.90209 24040.02082 0 0 0 21670.73182 9480.811621 0 2991.780007 5571.820272 0 0 0 27940.25815 20716.5465 10889.27688 355.284021 33865.6743 937.6235957 39465.66099 6651.452677 0 0 44.90365735 49396.47138 10134.40533 8486.08755 381.8457506 0 1567.199446 26747.59291 20401.36 31508.5571 18776.7158 46723.63615 48721.10091 58584.84175 31412.31928 2530.628637 1169.372252 0 0 4861.778106 25098.30811 0 0 7158.105793 20461.86315 7857.037985 41269.71986 17745.74684 12428.30531 3368.097986 3410.815056 0 109934.1521 10884.06838 670.2647136 0 35365.31872 1023.311781 247.9066217 6166.867312 0 734.6053977 147.6262091 0 1078.030857 27548.26507 67.3200608 46381.45387 67895.04754 12803.6676 17268.0927 19025.73097 0 28496.14651 11610.8672 11777.00019 16663.36551 2738.048094 762.9788505 53695.92905 22946.24036 44675.16109 0 0 0 0 8119.107035 8619.729595 4840.113931 0 0 55160.14609 361.3800817 279.3218553 0 23014.44855 53912.68864 120.5346857 349.8227455 0 0 15188.70049 7644.014205 0.002414979549 0 17733.90016 1404.114391 15561.20274 0 16785.48898 0 27718.70961 298.2801768 0 2823.321236 93.75352709 1626.827357 0 8292.67963 20736.88591 17716.93516 0 0 110.027933 38749.97334 0 11538.2928 +0 41984.42993 0 4173.706646 18784.15632 11795.88569 0 0 0 14452.3786 40524.48787 1066.534948 0 49689.76649 15618.75452 9534.090636 0 14781.57822 4640.857236 3059.140163 118931.4799 4622.563475 0 1553.950813 27720.87115 0 0 91.05966393 0 0 0 0 56613.5188 25151.31936 3678.865529 8889.310525 27761.96697 2786.233535 49744.25916 0 0 0 0 0 0 0 7951.909752 59740.51402 0 0 0 9390.400632 56939.95423 40884.06652 36446.24752 79058.99886 39017.05007 0 0 12496.87904 0 0 24250.82693 27966.81068 45202.61447 10551.95859 3049.587887 0.1145017593 55012.81411 22116.97584 23034.76614 10993.15487 4311.476199 25790.33161 41448.75019 0 0 11313.85748 24211.95027 44090.48701 0.003940610591 7910.052878 0 9238.343432 30533.39439 10810.60275 1133.857909 15378.69141 0 0 13692.9737 4580.599455 506.053696 0 6153.013891 0 703.0526219 0 0 48270.61669 4728.624528 0 51866.30486 389.6201033 16641.56452 32189.21473 0 1877.720094 22647.18394 132.6248138 21875.2114 8591.263248 3505.748108 219.8384645 47661.73583 10807.25673 51659.63023 24743.62043 10704.21199 11070.75442 3106.155019 53835.66974 3626.310574 0 31171.89867 1722.480512 3805.439445 43655.85161 0 31403.03956 8403.976229 7751.459819 0 22535.09939 117.5363525 0 57.43475765 1614.375369 1948.240489 0 9081.940444 0 23860.56468 10872.96523 639.7115166 15.00312723 2776.885941 307.0433862 19822.65652 31573.9257 32702.78094 222.698993 4098.62291 6303.347179 6448.351548 0.07593699338 51.58057492 355.7149735 30113.87162 0 1051.102382 33405.73208 37173.96472 150.0162646 6428.587467 6879.837854 0 6093.308367 0 1427.225696 33116.45353 26453.32754 74.95571298 2959.958885 64609.97787 148.4107178 11686.72437 53877.71335 49035.93154 2438.165604 22346.90198 365.4425503 0 2120.45428 439.1971976 4.368400987e-14 90.46538846 8701.527057 3299.58571 19304.15753 25854.35978 20741.80872 0 6675.563822 39029.07053 6004.600458 17463.29825 21.78819996 0.05108260602 10960.88257 0 2123.885376 26893.44277 1128.383585 2075.312701 23145.00642 15072.999 14257.21447 0 27591.74899 3349.45065 0 28310.24495 23771.71946 18161.36107 0 73084.28354 13638.38102 91.53999371 0 1523.354546 0 2422.696839 30988.12261 61.49461528 6589.932251 21890.46663 45685.13125 8297.513364 7508.790231 0 51880.06595 8735.650236 125.2017211 0 11278.7965 24926.13403 36923.88961 0 4230.311907 0 6431.523619 34398.66348 0 7258.986789 0 0 57975.09121 21392.91639 31822.91259 4709.661611 7709.422905 0 0 20144.11474 10413.65991 5113.361874 0 0 0 0 0 39959.66803 3690.17528 8527.994557 7979.493538 1472.17877 0 0 13994.87227 0 0 65379.84602 52783.36983 4776.008363 3123.475099 0 4242.128128 380.7688958 0 0 0 1772.754114 3864.688815 6129.487037 5695.974606 1971.145525 0.6308036207 2726.244757 0 0.4565323032 1985.912477 3.92196056e-08 9156.43538 32111.305 0 0 2419.494171 0 0 +5207.37207 19704.05716 6850.982846 0 1697.043539 0 2238.158473 0 5460.131658 0 6581.442816 0 24094.94548 10986.73673 97.54660986 0 0 0 0 47407.56803 32805.11893 14364.05895 77253.48808 5961.39661 88693.40197 6250.248857 33446.24084 27.98624352 15600.39477 0 427.2752436 0 2720.921678 18280.87631 4722.651539 5424.464917 0 15571.28426 3969.608578 1268.987658 15085.20227 8519.014832 34212.06334 0 263.0453046 38.06304066 0 22316.69394 0 383.85817 47235.80114 0 2526.195895 3080.793185 5099.442562 20712.4875 6394.244818 46693.73462 0 0 5219.850298 43072.20492 10690.80113 15780.57813 58011.62715 36916.80207 0 13880.07378 0 0 0 1815.678998 0 1736.790627 20381.30774 7372.634135 0 70198.27798 7791.616926 39983.59688 34800.65424 5781.553766 0 24665.44022 6099.898808 44117.68731 0 5137.144947 0 8145.437797 45579.55734 0 0 38302.06901 7939.01474 20918.53716 23713.99283 3934.282888 0 11100.63266 29461.803 0 2167.640275 17092.58934 373.7487461 16850.97278 12217.0368 0 28621.69609 2.549346573e-11 31108.03572 0 1139.712466 7239.809672 2265.985005 6312.933697 1247.591571 29132.66945 31478.69445 69.78028929 0 224.1680695 0.03504309609 12227.22108 10197.0991 63641.85637 15671.382 29604.75015 24403.69907 20917.67311 3651.860562 15173.77021 12450.91279 13762.22205 6702.278002 64055.34638 4222.615629 0 46788.33958 0.1265163686 0 496.3185173 71771.41513 7996.262869 32316.66411 942.8316013 10931.32285 34008.03979 40689.92176 0 65114.15646 11767.10711 4587.263873 12177.20216 98574.01896 248.7441349 17187.52083 71501.58109 1388.801915 7583.544659 31232.57602 90590.88915 0 9616.494876 29880.61907 36169.6325 11228.36394 0 89184.24894 32427.12914 42271.51716 10632.15329 0 46226.17487 11409.7009 0 2139.516431 6231.725462 50260.89845 0 25185.43699 0 2466.89467 6081.140643 824.2697368 640.4983034 0 1655.047577 0 29002.02791 205.9521961 66883.74981 66414.97066 323.0085062 254.4923701 29189.49392 13642.2862 61054.83979 3509.013768 839.1645119 32606.29184 1271.996863 70150.41766 1421.103072 0 103355.4983 7929.759976 0 0 27396.5617 0 17100.36916 8840.611447 52508.94041 46037.73544 0 14124.01361 1865.179992 49135.59403 25887.45591 0 6493.122042 17498.84204 35061.23306 7730.692266 0 28311.88624 8107.906002 2415.638557 0 3355.844139 7119.877228 79799.68788 5282.841325 3643.980188 39622.71403 9955.517899 1830.479101 53781.44609 2365.834743 42136.71946 61945.79819 1792.685064 0.3153608014 1427.557546 0 0 1139.126358 8648.819264 3192.548848 77.32446876 0 24372.02721 0 0 21640.50726 3606.418888 1029.84992 75430.4733 5748.660476 4133.631925 5199.245173 76290.8729 1285.375864 64776.11943 0 13289.26427 3798.409494 0 0 61.52315143 237.4843766 0 303.9541542 750.6598083 0 24134.56389 2509.145911 0 3562.304936 14804.58103 0 54984.8122 23723.12044 33193.87988 22016.87715 0 0 17185.14574 48688.10076 6536.160996 0 2.861849191e-16 5188.68861 0 247.8214396 0 4679.237239 0 0 +41.22078009 25382.36995 0 22018.59808 48200.35668 0 9384.219867 32447.04531 7234.554385 4566.632937 1151.737715 0 24956.1164 28082.18236 2516.664371 0 0 16699.89017 0 12190.71646 0 316.0028845 3116.473976 0 0 22849.32126 650.7339551 9673.021513 0 0 3546.108923 4405.826747 90.28830019 0 0 0 618.5109176 47671.02982 0.3041523453 8777.738724 21963.51826 28184.40483 16997.87604 0 66586.90065 561.0510098 0 0 16384.09611 53433.45289 0 0 0 0 5025.072354 384.2908498 0 11819.38538 0 14194.93641 0 13288.23944 0 0 22335.3091 22873.83137 26961.03714 31949.27824 0 0 13899.02091 99.29411468 7603.315481 977.9467387 81758.66617 33167.03393 0 13012.64957 11046.53262 8388.511337 0 3534.57734 3.281722785e-09 0 30837.44179 0 0 0 0 67571.201 21635.36905 53717.41986 0 5665.598055 0 10238.21913 0 4326.280128 15667.15324 0 30730.05505 0 30696.41371 11805.37991 39041.06625 193.8805964 0 65042.6661 0 1429.745632 8866.138808 2230.923061 1708.855683 10286.00429 0 119.5903118 1466.412139 44935.94265 84803.22415 39123.13086 178.6140942 91.08105363 57387.74606 58009.45702 0 3860.352076 340.022755 321.4188664 2223.389485 2736.777665 21176.81307 6740.667979 51689.04441 23369.9119 0 0 233.4130938 16620.17798 4091.48661 8192.713876 34115.53465 15.75082695 1073.288298 16455.78989 39373.37256 3717.172026 9010.653074 0 16467.40727 94083.00372 57990.09506 2.107663701e-05 1823.542019 3793.455185 5386.688181 33263.48827 0 38081.7937 35.97401632 783.3910824 71423.82704 1488.805091 10087.0508 4377.864004 0 91964.96954 262.4201622 29480.70612 9853.392962 1083.05786 128354.5295 65949.14875 32770.44069 768.0125888 57279.90771 1409.891607 15691.85355 0 2082.303825 15527.82639 22935.0441 104.8299387 1646.993688 0 0 10556.17817 2045.297672 1356.230584 0 11174.20403 14160.73021 54757.68176 786.5298555 27737.99672 3893.647909 428.8118477 0 79120.63586 1943.945899 11203.33864 3173.81744 3488.961488 6459.065579 5141.640407 14619.91142 30299.14312 39380.34122 0 22573.62888 5.7952433e-05 42124.55438 21741.07156 15636.71961 0 4213.658963 34034.95269 0 2712.227092 0 8226.031642 3769.4772 63025.99767 0 3537.052221 0 40756.17994 0 28630.6355 2503.856932 71235.99499 40418.62055 7.947606771 42698.88265 1552.834925 0 37397.18431 36317.81566 0 5494.101255 66743.28394 11055.82394 33829.79377 47342.83771 0 7727.166135 15219.15803 238.1673387 58957.46189 0 21733.83638 0 17945.50556 39220.27846 1444.912565 759.5734943 987.305531 0 0 0 51800.72821 0 0 14799.4255 5823.664747 0 2381.953184 20540.78109 48487.40143 0 4635.784496 48963.02522 42592.62171 0 2009.25835 0 368.2660159 0 89.68247008 0 6154.575831 0 0 12521.52676 54377.15523 86.47289745 0 2620.321297 0 9187.29926 0 0 4094.963127 28961.923 32369.74065 0 0 0 0 157.015379 33936.89014 +0 0 35107.73439 13635.16462 11670.63739 0 10443.26362 0 0 0 0 0 11219.97271 14418.16929 0 0 32827.13515 62266.32169 0 1708.713989 8278.798538 2605.249369 52353.80151 9537.151335 0 39980.57701 0 4440.169754 0 0 75055.89997 0 0 0 21074.29484 29461.40685 45903.46296 6.085293806e-08 1700.879138 20106.56435 23625.40063 72267.39389 5011.284013 0 732.4591773 0 0 31800.12773 19513.86947 9.658942953 33063.19549 0 14239.16383 46841.24459 0 5027.921761 70868.64537 1409.565589 620.1156529 4881.960353 35197.52886 3065.201503 13356.70933 37136.44827 0 82861.97939 0 0 236.3404786 3101.368291 12518.8306 15925.60477 45975.8859 26884.52317 0 84.12523467 0 1873.935074 8267.41414 29496.73102 7426.51918 5482.076875 649.3494386 76740.8845 287.3954328 0 22120.66335 562.0300122 0 16220.82643 1164.574661 4596.225308 77860.00341 7987.833135 20209.28392 18369.08283 0 0 4580.90732 62254.95269 33851.34577 6135.503054 6593.912497 3492.318659 46888.85564 265.4157261 30861.47462 1277.951027 12659.26258 220.4685429 23572.26484 21368.4118 0 16830.80824 91473.68045 0 25468.49139 0 49.43000588 971.3338013 0 55398.84243 9695.739085 0 22351.65837 43185.13198 20978.7374 2811.546928 21896.68053 40790.60897 46205.6392 31020.5589 19965.2778 21147.8282 2070.915197 13786.01072 18955.39596 11269.24591 298.8863447 0 0 0 2915.821553 3145.354825 6727.725925 7754.445671 0 29424.05226 41924.00638 5788.645139 52972.85475 55783.47761 8278.632734 0 5836.500799 21991.39327 118863.3661 52937.97378 23992.915 17478.22944 26165.58732 6406.386137 93.43226475 1338.76131 30926.82759 43262.72028 3146.399027 0 17010.56671 0 2427.301744 0 0 12985.94186 985.9510625 54661.86809 263.7928362 421.280226 11444.65876 12569.60461 0 9101.848523 55767.46844 0 86.2999415 909.4283488 4395.406781 91887.75776 2225.568558 15986.10372 1265.557962 13315.7865 3587.088897 7935.407767 2.143008083 26778.8672 28555.31776 788.3082931 11786.5345 34641.89661 48354.94894 2304.479939 0 94.82497355 0 0 45920.8327 0 12206.93197 5870.46496 64.06429792 0 32781.92949 4636.565909 59594.46308 0 0 0 22548.39301 30918.4886 12206.21548 0 53807.8864 24716.26631 527.0207835 0 62164.84247 16019.57371 84654.35342 33586.06399 65.37162153 6828.754293 0 61.06401822 7234.458393 33342.46664 19531.61842 39688.4215 8341.810673 0 6691.679444 0 0 0 20668.72658 36842.52834 37.33814342 0 20376.76558 937.4251654 5104.15201 19077.86441 0 0 17705.40711 0 18482.5551 0 1187.82345 0 17190.57301 0 7420.620138 7091.58439 7447.670792 41482.12681 57.88829058 0 0 9159.767281 0 6909.149515 3239.374926 32126.39588 0 0 37752.09748 0 0 14001.69699 0 9430.19427 969.3350108 0 6272.583322 61733.39707 0 7775.852951 0 1589.219883 0 58.3754043 7957.30476 15091.81855 0.0001754705758 2464.282407 0 2427.091969 48435.96809 375.1597946 +933.7740145 0 2942.68246 1596.275786 0 0 0 13793.70862 1528.249149 17339.57219 120.56551 0 0 525.8675923 0 9319.221826 0 0 6283.638815 0 41897.58125 13.66244147 19641.41761 20661.37738 25745.01946 15219.15735 23942.88392 55380.11451 2462.329273 12631.04011 64484.87406 3800.365697 0 0 22836.32966 32150.34767 4230.770319 0 4159.350587 1328.362735 24054.86129 14515.84181 0 20288.39317 3186.527592 33517.46544 0 3075.258573 10664.02161 0 28.1605762 41724.64788 0 35580.21474 325.2894943 0 0 8.073031714e-06 1758.552394 3664.483034 60721.55597 824.3892066 51945.69658 4695.85987 3896.202021 8725.628825 19700.00453 10.73903576 39675.7955 0 2810.561573 5.028728312 39847.63382 23059.51932 2652.102517 693.8101698 22206.64064 65263.63082 2771.284252 24517.70196 10096.97384 32365.08829 7818.370699 19865.55151 1416.244462 3728.819551 55743.7695 6238.991858 14844.88661 0 23122.82072 1876.435311 3414.170394 2503.430937 0 69575.05853 59264.24899 32493.76487 74934.18101 0 847.4326012 28174.10791 7619.46487 54311.10462 15285.38161 4937.507169 0 0 0 4065.563006 37396.30536 19204.92471 33074.06033 8464.081859 77.12904185 5292.991021 13974.35195 1910.761417 27674.11869 5315.570986 22723.96572 96976.99645 45711.7395 37.34850344 3.948456015e-05 46303.65193 9321.716998 11468.63711 2154.825392 0 61.76217921 6264.762194 6415.722964 37814.47529 0 27380.67048 1821.610705 0 0 8573.376159 2875.235049 4248.731311 9587.148367 1164.51994 23775.75795 17232.20117 2548.808534 45618.06818 7873.424726 14455.43633 705.4941951 28818.94443 155.9346428 86305.60133 3846.181273 19446.9079 0 50353.36025 41361.62282 2964.828486 0 9511.340325 13409.6857 0 26510.1238 0 15061.31775 60183.39924 277.3438509 14956.91824 43692.6153 30586.64564 14129.00491 3508.325129 81367.87568 78899.98929 341.2203451 0 42971.13956 0 44188.50978 1031.06348 41428.78249 44147.24158 57629.26183 0 0 2376.831128 10360.58995 0 16680.99497 3494.486617 893.9309567 24775.89108 73690.34322 0 65573.66507 0 13168.1669 9864.837099 35769.75418 14528.29224 9473.284552 3190.908769 28333.6749 1710.823729 0 13018.06319 3380.32086 63.64954959 780.3518763 0 8534.558005 24430.71457 27496.25383 134.2454907 0 9159.934492 3758.956739 96.55889417 0 24873.27099 51799.58425 5675.037107 6745.691928 8220.133305 4337.090261 0 17374.49891 0 20115.68893 0 2628.775351 38760.50637 0 0 11723.466 752.0484903 3981.616677 1037.610722 72755.50371 0 3700.556665 25857.36685 6290.204709 0 18216.13791 76557.71698 80.18535944 259.6032015 38449.2182 0.561485021 4256.748877 35.93522795 0 5382.752941 34139.34044 16599.91475 29035.77014 43727.12666 8958.92825 33231.49529 1893.89857 0 2372.644777 2390.296494 29851.81967 0 0 107868.0613 1743.906826 149.0752946 16390.53239 15773.46449 16021.81157 92.76539006 3582.878286 35755.03751 109.7886325 29963.86559 5454.388034 3664.617855 0 36265.76893 0 14129.85168 280.1532516 19432.57745 0 10432.19083 46988.98799 0 32676.32795 0 0 437.4473562 0 1681.657281 2.151358992e-13 0 +54.46597525 27218.11028 3665.288451 3694.927425 0 0 97.0560905 0 0 89569.38842 24310.90377 26383.46961 5901.837328 0 471.4078019 4621.795016 47.03895489 8561.157863 54729.17504 0 0 28.86769684 289.4930131 2529.333691 0 0 13150.08813 63869.57866 15790.39947 34844.28725 0 24060.44149 626.8421769 8699.325554 0 0 0 0 51892.5989 0 4893.352497 29646.6644 0 0 0 4506.319014 12217.23066 0 16949.01299 19794.73659 44699.82249 0 0 23130.77236 31166.32525 65382.38675 0 28604.56558 1587.382278 29199.76828 0 0 13366.62972 10371.71798 3066.538415 0 0 173.0245527 9.803691214 5419.795579 60439.52513 0 28916.1274 10589.71759 0 66073.51791 0 45957.64947 3199.965122 0.9354539866 0 21023.86766 18096.45193 832.9012799 68122.57047 0 7420.639506 0 251.2123279 48457.33643 1364.22727 49326.2843 40493.89144 0 0 3283.415682 247.4425725 0 99094.76382 16182.57931 83143.1649 0 36947.43962 2504.126885 13590.2754 0 341.7299669 21594.06316 17477.42602 18365.07768 38805.81422 15297.55094 9252.546015 183.7784977 45481.88501 16930.17905 1130.583003 7460.005539 158.6443814 21647.55589 15755.74237 0 20383.22243 68.91733097 15101.60748 4974.524194 8487.8957 25222.93188 37878.68431 17859.94116 0 0 5813.748705 26078.20113 1298.123722 10583.56095 0 0 0 18092.2709 24484.21962 11296.88957 1130.923593 9636.893028 23497.73203 2607.275384 11324.46847 43716.66121 55.5848778 40484.21716 50460.43043 44493.77638 312.6666271 99432.33291 65483.82052 11.00881135 15.31135312 0 2370.773335 63.72353932 0 82280.56913 187.3845147 0 1721.364286 41937.09484 5957.991435 8638.644973 57217.68538 0 197.1163643 16743.65375 3.581859527e-06 7727.614818 92.45297258 0 1876.808382 13805.6059 31191.10075 7821.065249 0 7782.003911 4676.66766 16637.63038 53984.2732 0 0 24949.04855 1667.03514 352.1824962 49635.00327 3.57831165e-12 0 0 53139.35389 0 6742.8486 48202.98889 8254.808468 30702.49796 30022.29569 0 28959.98258 80632.39495 0 0 13917.17289 13670.91111 0 48186.70887 0 13127.73515 67969.27166 9076.362439 13235.04572 0 2162.724279 5693.246821 4992.768464 6113.315082 0 13740.96946 65.06407778 0 531.2424355 35690.80517 12941.63927 0 0 7412.252199 0 4693.108986 12450.59377 9077.326161 837.324455 2854.689695 5887.995666 0 8253.156076 34376.91004 0 0 0 190.6187526 0 0 12673.70201 33624.64243 26396.5862 0 383.4236394 0 78939.48141 27211.81612 0 10060.06592 22397.64921 15185.5374 15206.57675 4924.473965 67763.25923 0 7717.239641 0 96.76076376 39.09861198 11068.98227 32445.34903 1.807056911e-06 0 0 3752.67669 94.56459424 0 0 0 276.6980705 54852.01404 17829.46781 390.8467912 35835.10441 0 0 0 0 1133.188954 24.04438684 747.4315593 9864.790106 17339.82463 8158.837419 1255.754027 0 269.7244393 5080.192648 0 2406.690322 19408.1105 281.1685322 2400.887051 +2616.512054 3379.528034 24856.03318 0 0 21844.58399 12872.24305 369.2920311 54.1238707 0 0 3994.408266 7059.332656 0 0 0 0 0 0 0 5645.944405 0 137.3148758 0 0 0 3788.351596 0 1760.095891 0 6738.603715 48529.06413 45058.56645 15682.89903 13975.50547 30951.92809 461.9116248 4592.022104 2085.304181 0 858.1637309 8278.01799 0 12030.43469 6643.783246 4935.108185 2821.334249 14986.65392 2826.362791 0 93810.07289 2043.21373 51988.97499 4994.088527 38645.77964 0 0 7614.382788 74452.61759 6581.086058 17162.69684 0 18064.64544 67.29874493 0 0 7343.694464 0 9741.111073 8184.956293 1852.749287 0 82843.97231 18408.67393 19587.26076 76934.8784 0 0 2066.980747 4130.830214 2793.086592 11011.47328 2915.828892 21406.67725 0 0 4853.958825 0 29004.47679 0 22509.24563 0 21629.14593 0 45553.63881 45878.80741 8650.595318 4336.04023 10364.82995 49234.54202 2624.755247 81969.79649 10276.89295 4997.402284 10.45600125 0 0 1218.274089 0 0 35460.15764 0 0 120434.7355 0 17302.2611 297.9994809 19548.86213 0 49302.67206 27926.39078 112.2054935 26877.68263 101659.1681 47096.50915 0 3703.781762 19971.25425 13046.36565 847.1407704 1542.271478 63329.90295 11781.87786 623.1142904 18264.53968 19929.65493 0 19024.44576 59717.15684 53051.41895 2027.881531 11704.52988 8894.676148 0 1572.660929 2288.612709 223024.2813 41169.7196 19364.78487 8270.407119 750.3277995 32746.6814 143.0885478 15002.96028 6825.514661 3361.276202 352.397036 24524.73523 60526.75816 0 54343.61824 3450.55622 99.30065226 0 0 24723.83629 0 0.0005762273691 11407.68008 0 20765.25759 75166.9452 7406.78322 20046.34414 6150.302233 0 115.5560864 0 13686.09252 15496.88909 10694.7082 8451.058899 30880.22733 0 51679.66408 0 26818.89916 36506.1857 31931.95171 5968.268741 65260.27156 68887.76349 75845.50158 1572.587003 0 69002.07236 680.2709808 6669.294571 74110.41016 39151.95792 66085.71515 11745.22201 25998.28127 55083.00615 11267.90844 0 6367.701622 13784.9313 2795.773822 591.7925162 15818.88778 3017.310259 1746.895694 2413.798956 0 0 0 3309.649461 67346.89591 23917.19205 38658.98005 167.9578317 21907.49406 0 5661.849305 0 5551.813843 1477.503448 772.9261258 0 151.5232276 3349.221023 0 0 1105.229749 8586.216927 7037.49605 56224.61644 0 35612.54332 51980.92032 0 14354.83763 0 972.0163294 0 0 25477.45021 3340.803466 70200.52206 0 6108.110018 10416.9229 19795.41922 2099.783209 0 14159.00315 0 22158.2644 5825.85701 583.8728828 10091.30015 4154.802418 937.3387074 0 0 74488.44968 14644.0381 8897.091882 0 0 6581.923429 0 34828.1941 0 0 0 0 2930.929432 0 16830.40007 36727.55193 10178.74119 6487.986717 60242.83469 0 0 2401.510781 19266.051 4853.641137 354.3670191 3313.081084 0 61341.88411 0.2022831529 0 5078.397852 0 146.9247084 0 +355.7583265 2389.554358 317.6341042 10844.94093 25755.90712 5912.063065 7852.086486 1691.88145 530.8711364 4036.888937 0 91311.51505 0 33.90292757 0 0 0 1310.163381 3922.840055 0 0 3620.825559 9207.631164 18864.93196 18440.85591 244.7778145 41809.33194 1611.068471 14425.83855 1012.111784 0 6520.999264 50574.50281 13792.05712 18122.84702 0 0 0 16380.90101 0 0 0 0 0 0 11395.42171 0 10004.24072 0 26.34679042 27996.34953 22777.70372 414.4410738 62748.9058 0 0 28540.79205 0 30624.24704 3913.900513 14424.22152 0 0 0 7087.983564 11041.99733 43715.39929 1911.847189 5486.486314 27955.67718 24769.75996 0 1456.823785 13052.09015 0 0 2128.769085 1584.286032 11779.13457 12531.24774 14092.21719 3117.312139 4627.831493 45062.75161 0 4324.02285 2033.423968 0 40895.51602 22891.40462 15028.16507 11136.95739 0 2230.368241 14734.62323 22939.9004 0 0 38442.64678 11251.00045 113503.7435 41270.10871 0 53974.44735 2187.118267 4198.233297 4180.330852 0 0 29431.2718 12352.55754 0 8079.158979 4405.171965 1859.709048 40978.47143 61234.98374 0 46784.23551 6301.675063 16022.57296 0 8882.556215 0 110.628942 36548.44004 53355.4318 0 1982.849566 5480.941409 23304.76921 2235.938743 0 5983.834567 4883.733368 4046.713439 46065.51827 14654.87456 23264.36447 0 92550.37382 0 889.2339265 2042.87389 63466.50816 1770.717507 54972.71958 0 18827.70756 45825.70263 0 33706.15642 0 6313.534708 4871.037911 265.9381001 13900.9789 63710.70574 7144.51352 1637.786214 27072.11626 0 167.9790999 31917.14984 0 0 5.681729871e-05 3605.66998 39138.06574 34574.01179 14089.98034 0 34.37300127 58361.49662 35.63094184 0 0 1800.610956 53502.31445 38977.33715 0.0003507579293 0 618.6502466 539.6839968 15235.93145 66.30253024 82789.72558 642.9808707 49043.55479 16340.79057 5394.643799 49951.17766 1.300187615 40523.55708 82463.88044 12745.69271 0 27002.17624 1772.260622 0 75613.35012 9628.973314 25189.18178 12614.89024 0 12013.06095 2022.460063 0 2084.34983 523.0335227 15297.19726 41989.55186 490.1494865 7112.529435 70033.58542 0 46.73487209 2368.295473 44.96664965 21265.58568 29336.22165 2395.702244 3564.811293 100.6453032 7779.444197 2994.05171 0 2766.798047 1524.456993 0 115.7871721 24.42100703 0 3629.682643 0 18615.55494 31131.88047 9453.781861 1513.145899 0 692.5543143 3808.922657 10656.45384 12390.50756 19878.39356 2.124392403e-08 0 19461.09333 0.3216746117 11018.36461 1050.177376 0 7162.172285 0 35.3334171 1419.354142 2310.138187 0 1748.671431 27032.80299 40299.93785 12307.82556 10242.13196 17877.77917 0 30404.31752 0 0 3365.158395 0 4056.970084 0 0 6235.085972 4797.209753 3782.21111 67082.69444 1352.34811 144.6724764 10229.35105 2327.175886 195.2743659 47675.29852 0 0 898.8506985 9209.351623 0 11918.55548 4468.532593 8562.043095 0 1295.152492 3797.640685 0 0 7274.784237 23505.52731 3905.383153 2356.474491 +3813.899246 37847.93096 44981.35865 0 0 15592.2197 8731.286169 92.00101173 168.496469 0 0 22674.12007 3453.974944 65908.54464 1367.034365 0 33787.92542 21703.57404 130.2368711 0 37079.29904 0 12965.51614 0 28900.18278 8737.283452 0 1302.884859 0 12877.69097 0 2211.837373 0 3712.831791 169.8624456 27275.62063 15318.11362 1540.960363 3082.739671 1630.51145 4091.326229 300.3606989 0 31590.25467 58.67683085 9455.983914 16633.71969 12050.5138 0 0 0 1330.932469 43680.38612 0 20916.19899 152.0496527 0 2912.704989 0 2011.895446 3862.016326 3418.723507 0 40525.72118 0 64044.88647 71334.40621 0.09920962947 5987.043964 0 13039.55861 19719.59005 9542.277088 306.0914141 0 0 4.47220342 0 8226.654599 10368.52986 10114.06362 1161.849953 582.2944644 35771.72034 0 160.977597 1095.78885 29540.82816 13366.9332 6946.590354 0 13950.04453 474.2873269 1741.280906 3074.782445 2884.050454 3114.284106 13417.15804 0 41641.44052 0 711.0291642 3602.826834 3374.651008 8294.8436 2284.791864 367.9940726 26786.24894 44644.21153 19766.49288 8956.316989 2708.924636 38486.80283 9425.799352 0 1467.057046 30375.92686 16968.11236 2453.644862 94532.36194 430.905864 5862.432306 31980.41995 8485.821228 0 770.618368 0 0 0 8032.275446 80546.83077 27421.91458 115.2067212 2430.549285 0 2602.425912 1286.17219 76811.91986 5363.538445 12270.3859 40678.50395 38935.03791 2092.098409 8400.139644 363.2155539 0 15406.2593 6825.84893 13132.14055 7503.91751 45370.65155 65.20941109 11857.49796 521.0374354 8.008374429e-07 32927.9259 10634.28401 5886.344187 4120.809941 26118.65573 26163.34886 38482.24642 4424.760698 0 21676.76926 50638.91771 1420.492265 1623.240645 4510.063321 3537.216513 0 196.4249155 0 6969.659535 2794.108651 7377.059101 34384.21931 33362.12954 1804.771991 18760.39811 18859.74884 14183.86336 34897.80695 14443.46537 5814.869498 19315.5305 48.0476132 14752.19786 15506.02921 4339.611863 0 0.007166910857 37112.64394 1336.266427 7346.125859 4.374613171 1326.942822 0 566.2896221 17239.6644 48925.49472 35.52034932 9051.966098 75978.63276 49188.65491 0 0 18505.76485 367.9238348 870.3537294 44093.83471 344.3748739 12969.22052 77017.65978 0 7672.250397 54174.67901 674.9334163 0 153.6664448 13291.10188 57114.16533 45513.72123 2070.110865 0 33543.55921 28613.15158 0 53350.4889 43305.54718 24807.44291 0 32024.01174 26787.63982 5722.5172 600.6874519 310.643228 25694.01715 121.0573508 2899.060864 9621.5038 1687.437876 219.2626599 1048.011904 26278.31236 1.15727805 44019.52426 3657.558548 0 774.1186944 0 26099.75789 0 0 994.819014 0 18493.58892 39.08069908 0 513.9887367 0 51689.30798 0 65875.22789 4954.225864 0 5055.789968 0 88017.46072 0 10261.97189 46620.16096 0 0 15598.33261 0 0.0989783241 8463.707938 0 67452.97441 0 2338.204177 45444.9101 1487.329245 0.2117361673 0 0 490.1982855 7144.770954 26381.40832 1951.091048 0 228.9958184 0 0 6542.967445 11442.15734 43278.49745 0 0 +13787.92554 38120.86512 3416.007292 0 22261.41052 0 0 2282.077076 0 0 2584.259234 9491.509694 0 0 2278.092389 0 2809.739829 13219.45339 0 1755.70483 0 0 34365.67603 0 3626.212444 417.1193772 17344.62379 58303.99842 42079.32418 0 23342.25805 2778.878701 0 0 11795.82523 80576.06994 0 0 447.3767292 10699.53743 2894.471693 16069.42497 4245.005947 0 0 103.7997336 81.58027361 2817.371376 0 0 0 849.9772777 269.4040063 188.9280941 4292.173466 19699.55604 2447.301404 239.1725614 11612.13686 46.20844997 106.6226231 21681.74399 45.81842622 0 0 0 9544.512759 20417.6773 5243.636192 206.0719909 18037.81197 0 696.0538693 5560.808215 18314.4879 23140.32961 60683.2154 0 0 2740.433261 51479.21806 5490.588877 68156.28326 55975.65775 0 0 90.22502579 15678.20958 0 37311.79521 3209.108013 16715.49414 3532.309249 200.3736966 38140.02385 113.7047768 331.0325179 14778.51372 191.4416744 22461.87789 0 5612.741832 2034.529127 0 73409.44311 42739.64766 29265.39178 34519.93985 0 0 127.108908 20117.86127 9621.180085 47856.30274 21283.96328 754.7834946 14985.42472 0 9760.805477 58674.11307 0 0 1600.509139 2114.167672 17570.40504 16010.64601 15546.05802 2466.443399 1810.388372 0 514.8829012 0 11630.35284 23101.53074 30126.23264 11482.49512 1088.498169 8554.799413 7119.45875 0 1875.122518 26217.57293 10783.7205 21443.63609 0 99160.08295 21615.08649 0 0 11217.32903 25630.85609 57639.63439 48083.22681 6361.079555 51299.97691 52649.74611 40860.59201 105.3873195 362.3251963 0 2.880767461e-05 38923.3681 9646.036055 46961.0773 0 28631.35965 0 1374.919222 1297.628062 4109.417022 562.6318114 0 51612.2394 55029.54581 0 5909.546205 38917.4681 8.611629443 12752.39905 40792.76633 31969.7031 5.550012312e-10 8963.905565 0 0 6468.88832 7678.783047 964.4014252 6984.377208 18377.38769 17163.83622 32.90090967 13202.74459 0 19013.58267 4874.573698 23108.00383 7782.516712 0 54879.06493 17493.06397 51023.11698 69408.78579 0 14948.95773 2755.550585 24132.85153 1634.764677 0 57934.30954 325.3521238 2023.563864 21778.1362 287.1435362 0 27475.76223 5918.26438 19509.8046 40958.07473 0.04027122638 22918.33251 1113.17894 13925.67075 4277.422009 225.9267664 24150.01021 12284.69129 0 33.87201706 0 7253.730156 1668.4943 0 0 49705.83458 0 0 0 2243.109357 2494.221568 20266.06013 2955.788855 1012.749951 9239.459367 4476.629776 997.9367332 989.7612396 0 5676.547092 7712.425586 3503.199674 0 302.314547 216.3941231 26947.54572 11625.68684 1658.400493 4785.093588 0 0 0 30527.92045 0 36747.97691 68333.14019 25868.00485 0 1434.554634 42744.34799 7933.888021 900.406314 2152.571975 6976.218259 0 2074.925768 22350.37885 0 0 0 0 0 0 2923.364453 6953.010331 0 1101.329397 12128.16255 0 7176.390248 4241.915158 17701.6145 7539.578145 3462.065009 0 3882.852922 19168.73102 0 4277.267772 6163.73083 24047.68038 +31856.84708 5689.16775 0 3422.345763 12215.39185 0 13785.14577 0 19848.93047 9506.840831 0 10899.09252 52295.16318 1466.873728 0 0 1868.635977 320.4799961 871.2698064 44382.93236 0 4801.560565 6287.563232 0 2205.473295 0 14468.24014 2632.855469 10109.30683 0 454.2711872 64415.64351 72562.24724 0 38529.45258 3832.152074 0 45266.51933 5800.048812 0 0 0 36836.45567 55230.66147 0 2972.689069 0 17956.31769 66115.46322 7810.36764 305.6560838 0 0 0 22.73252184 7758.156302 20526.2395 18734.92481 45224.35061 0 12666.40784 0 0 0 27350.9219 0 28.86706346 6595.746738 26882.30524 57380.74718 8601.651983 0 20060.82935 0 8751.260225 46371.62675 15945.72106 140.4312216 23039.41278 31945.76439 0 10208.62647 3741.167737 0 4193.795948 98617.66305 0 0 0 3082.04815 27.96909958 441.3312228 45823.72733 0 11200.36237 0 67059.93858 0 17012.88418 10059.1237 48190.38749 11656.25833 0 0 3467.534334 0 12054.98919 2561.554839 522.9179713 0 0 69588.18251 20767.91508 10860.45889 6092.83674 15669.88527 2213.0142 2857.525589 17861.56478 95.71852839 1017.822324 18910.20652 7841.592565 3812.79242 38444.8836 8903.778242 4023.744179 4616.620766 6.404146766 0 15962.70912 0 0 24425.12631 47240.15464 0 46100.43996 1363.54308 1112.438145 0 27197.12105 0 103.6439243 5480.323305 5717.602064 2871.522007 0 28719.33382 60.76626054 11857.34114 1244.318117 50568.7887 6577.305718 6672.673468 10710.76928 4116.89603 6056.776623 76.16804324 65824.19673 0 13998.80543 0 2.727517037 17663.44931 67580.39189 1191.58729 9017.524756 56.11327247 0 57342.97072 22592.92136 53360.88021 0 0 2449.002528 0 38072.75119 3635.01211 11271.68543 17075.55906 22707.1027 4965.688784 0 20768.69717 164.2933677 258.6866138 2163.480836 0 1360.94574 64966.89247 6680.273692 0 20657.09878 0 3901.462729 0 35812.35607 53714.77437 37717.66877 53073.26166 47888.27673 0 4611.214272 26777.5198 1881.819025 14535.83545 1815.564816 0 71.97150061 6176.470581 39236.19779 19490.5577 302.1584384 60736.49785 3680.002676 8272.967913 8393.544954 0 36691.61885 3438.16441 189.2866683 0 2941.82837 10744.50682 756.905297 18532.46065 0 8172.004556 0 6726.644945 2952.331271 46565.38944 8102.69375 1294.333034 0 0 753.2868136 8590.199855 2569.790418 1496.6343 20422.37537 0 7371.708475 0 0 327.4026553 37224.21912 1281.291363 10331.70931 0 14443.82641 79617.05205 2662.765575 7009.695312 3893.594387 1673.848039 0 35378.09477 0 31802.35144 4842.922042 0 13158.75976 1.907346357 1141.009613 4757.369945 41834.07798 216.9837874 5876.112849 276.1155536 0 0 1112.671598 4109.634243 585.9191507 65032.97976 0 40412.90956 537.5805241 0 9571.711742 1006.48628 0 0 312.9391579 20286.69199 4563.283577 0 0 17390.39873 0 2715.86694 7409.86018 2276.226262 0 0 53701.19132 0 111.0919382 110.3565832 +0 0 1226.742188 96.99589246 6508.817455 0 9685.266961 0.01431598463 45.68993881 0 12235.58895 94.66208004 3724.854693 68.92549667 2438.430057 32204.37977 14730.91252 2183.701341 4806.957314 3098.374555 25706.57751 44644.8305 0 46721.96802 498.057392 15863.22227 46373.69591 7681.439478 0 2906.542275 1765.91423 0 0 190.8930872 1143.899796 179.5887919 22388.87281 44625.47245 35342.24066 585.6774377 0 0 11515.2126 6094.336897 0 0 2692.496179 39620.38958 10501.74721 12713.19291 19330.59801 0 18968.03079 16737.37789 36481.70273 7351.767497 0 5784.777584 11640.98008 17719.07593 1.566782246e-13 8068.515678 38685.13523 0 53610.02821 24052.44906 11735.74826 474.3576253 10597.62832 0 0 17622.50908 25.75719942 47065.79408 0 0 10620.38906 8839.074143 0 34527.77098 47813.34406 30233.61843 30190.87556 0 7130.655467 3224.077895 24237.45262 8468.428411 6175.276676 32607.41709 35213.12653 7.122919921e-07 35856.34796 111.7152777 0 0 20459.97338 43638.56984 3708.078897 21055.58604 1701.117107 7114.01019 102178.735 1762.831587 10598.18954 0 7588.797611 29832.13177 3.456671392 14169.64386 1039.899196 0 0 31078.53278 7.917292596 0 26831.20771 788.9615941 9077.041235 0 13523.27634 0 840.9349507 31103.04565 8546.713555 20585.65422 0 46919.86693 0 12538.50672 648.9416981 41896.30172 25449.25958 7242.327125 0 6695.711959 0 3166.222441 0 65718.87427 0 696.3741289 53950.85807 25462.41431 56327.66661 0 3670.669606 11358.99271 8575.060691 22571.62011 27717.4898 118.7099438 166.1578692 0.7653019492 21515.32822 60.79432396 17477.20734 14.01227264 52017.24539 29058.43478 39917.68219 31265.31041 22501.71843 0 2820.635519 15830.05885 0 1757.407739 803.135614 35289.97582 105.8878998 14146.93258 0 3027.91298 4922.124414 19085.34505 9897.373959 68444.87166 0 4396.390634 8371.57854 16805.07454 5325.039954 309.6591235 170.4383907 45592.51376 0 24319.01411 131.7872514 0 1181.951244 15581.5546 0 0 32229.44079 0 45860.99323 12087.75291 78.72161905 177.5722693 19896.12764 9043.413571 16914.98826 5607.07229 14517.0998 0 7660.799532 2041.189952 1248.381507 7351.111893 11213.66287 52.1343725 11667.67256 11632.8508 8626.16227 56782.54221 55845.91258 0 0 22734.47814 0 0 0 0 0 4240.648449 3689.167027 2704.135739 99.90216866 22341.56534 7996.415273 46692.5276 1816.22809 24981.82619 3986.374841 0 5215.042516 0 210.6658598 7609.853242 5025.005853 61014.05597 0 40.50877207 3249.656079 0 4918.368474 11775.04338 0 0 31557.64124 0 17920.88436 54095.34775 3845.415401 5283.738099 25.20779686 0 0 1512.304681 30059.50636 0 19733.13954 0 0 6997.759051 15848.94816 4848.66809 0 0 32.75447348 3830.16207 54869.71548 8324.98877 3437.168004 168.1805754 16024.97998 0 0 0 0 4261.171817 0 1360.425559 0 20088.17755 0 3034.539201 0 0 18736.96172 3959.420335 13955.66207 12.94859453 48358.41091 10210.04808 0 29162.16938 14463.52615 52521.48136 +0 0 0 0 1665.40588 0 0 2047.658399 0 0 14625.14619 6254.154012 0 0 1800.848223 8015.886016 875.2063451 7212.685648 35065.1183 17854.7292 17577.98745 0 3176.879323 35408.56159 51664.01962 0 517.8984902 20548.65372 0 0 6536.56471 11320.38937 1128.492765 0 353.3568782 0 0 19786.03508 4135.932354 0 11054.23896 12966.14497 14619.53991 0 825.5098909 23335.80562 12705.32781 9184.334409 37132.39453 2433.913192 0 0 0 5335.197034 0 13992.56351 6592.093104 0 62314.86047 24508.27021 5549.94573 6723.049233 4836.982692 27766.29339 3738.192045 18018.80341 0 3220.536725 0 0 72534.86336 0 56820.2653 0 1775.247565 124.3573198 3531.571578 3456.921776 9165.516046 51308.26365 50137.69794 0 0 19721.38641 167.1754642 40.38908885 29989.01755 38479.99655 4486.015196 0 26344.85396 37690.3136 0 2640.564391 39996.8866 0 71204.94778 32115.73317 70389.80339 48697.45906 17434.75942 87871.7126 6421.29041 14192.53908 0 32897.5732 92.97595822 0 0 70111.74767 38000.51676 1592.931055 0 20050.08663 7606.35439 14271.12555 24178.87367 1443.564643 15207.79537 0 8127.058582 3007.702642 3080.329892 15272.56621 61141.51256 4686.149305 22471.10431 3664.050493 77738.64036 0 19494.92168 76617.69572 15773.00746 3258.460741 6597.578281 41957.86966 0 733.4452011 0 0 6856.444844 26922.71914 31917.9423 29999.33308 1103.473389 39017.59551 18957.67391 555.6211349 20948.05062 2599.774209 0 3415.40765 21063.677 27294.86412 5921.658238 1712.180818 1465.335131 45751.72445 40.38524604 0 2109.040865 177.5466728 25834.70257 29143.61184 9285.528654 2913.255218 0 3754.852095 865.1158055 5681.371811 9400.772327 0 16066.11064 26815.25018 0 1774.695747 49622.06256 12990.97333 6280.754771 0 0 15171.70094 101845.8946 6216.668795 21853.16327 2470.1591 5093.843801 0 119.5211033 5666.106577 0 9553.885031 27925.36373 71295.72572 0 25036.46883 0 53354.1892 1476.701197 0 41447.02419 14587.08863 1287.071416 1388.285302 42180.25923 21873.56845 7163.565841 11181.76565 4016.697884 13344.11145 26213.87317 9944.641101 0 5230.447706 0 7475.86087 7493.599916 0 4292.396331 1186.907177 2589.477961 11928.13188 15634.58452 0 1031.076406 0 1909.399846 18144.48998 8512.509036 112.3251603 0 10072.70701 1018.176142 643.4134955 22660.47134 0 10207.70175 5115.092763 4484.286409 1091.734912 1595.711588 29297.85864 0 0 5407.546915 24353.70548 7627.462917 44580.35894 0 0 35195.25249 54.55108318 10424.43338 0 0 0 0 3441.140667 0 1465.258413 61257.75323 0 6328.880577 0 11601.89992 42505.12639 3675.548194 0 32433.82801 3683.272017 4058.841087 0 21711.4291 2087.959523 1500.503278 0 7850.411699 0 0 6.095704767 5074.155105 0 3750.934858 39651.12208 30052.09279 18847.9248 2350.245567 0 1599.732273 1023.812122 3325.657373 5980.271754 128.4614019 0 12270.22806 1591.29303 3033.7315 0 9250.850801 0 +6745.470084 0 5839.039546 1653.987461 2980.572024 22103.57766 0 0 0 0 0 18684.18962 38.62203211 0 17263.33079 0 0 223.6846316 36132.69337 0 7146.503239 49.79424209 0 0 0 27724.89854 5962.307019 60548.66158 0 1306.963974 18604.58889 3544.403784 7523.586073 6224.277426 0 3084.672165 0 1075.66301 29778.34364 0 22487.89034 23532.3351 31586.2023 11507.81958 23.05933913 47154.39417 11616.37256 46200.97421 54.09163165 10936.10381 2904.778504 1247.284218 4080.916553 0 44425.65741 0 41862.94078 4.550793806 146.4360942 0 0 10412.67387 30102.50674 1096.648741 53369.0123 441.2070201 21863.76587 58128.10006 0 2219.120116 0 0 27407.41147 0 24862.01407 97933.6949 6040.382165 77776.12653 30558.27985 6945.653173 0 11390.44291 23980.32827 63383.64838 1684.351231 31862.14246 0 59503.38694 0 2496.201217 0 0 0 0 618.523269 5254.909073 83479.46161 40648.29187 27324.02393 0 7.405694301 43.8491026 5653.179375 35400.39039 17609.00882 0 24147.4838 4987.423425 44155.00343 21650.67277 5741.272624 2113.415639 0 897.4421292 8458.51073 24.26484245 56111.87251 45762.63519 35106.56693 0 5010.6594 39.11239504 317.430416 43753.28067 0 313.2660603 0 43630.00843 3361.706604 1428.974154 35285.85596 2529.571358 8975.23393 18.32524089 0 66516.43887 0 0 56740.07164 25164.86737 66746.68784 3469.261704 13478.35067 0 0 7624.767984 13677.63112 0 16948.21947 36097.54785 0 3200.830212 156.3470105 4521.371011 14085.78024 0 12316.90656 3893.300602 120.1684272 12182.10582 12878.91466 588.8469791 0 0 1473.172859 2839.791344 4247.490855 29939.77949 16124.34157 18415.40287 1394.839549 0 8740.024693 0 22209.1772 0.6609119521 40239.30122 8063.269872 6.189063828 78.21238612 10899.70546 0 49392.72269 0 31730.88071 0 620.2145128 84417.89656 0 321.5758383 1836.4868 94.66601374 17282.22134 5607.75162 839.669099 0 659.8781115 3959.582759 71.7540781 47300.49734 28576.37767 0 2221.147635 0 22273.57092 0 31083.09634 5735.949509 26841.94236 0 0 0 768.8371384 0 267.5771013 128306.1607 21408.12194 6892.517452 46080.2528 8401.118153 8299.67923 4372.666039 0 12610.91772 0 6460.595992 13624.15437 17584.14873 4815.048872 0 115174.847 0 17466.68529 6842.43872 1877.281896 25.51298083 16590.94545 3783.785333 12016.19901 1028.478626 3027.998935 0 16836.84279 0 7049.542651 89240.08555 0 6153.002705 30320.88377 0 8446.107959 4324.519154 4971.183972 2318.703286 14975.21517 25351.85303 0 11402.93946 20123.33313 812.5938467 3503.674157 1885.750149 0 0 0 0 2110.289649 0 0 0 0 0 0 48304.20083 0 0 0 33.38670463 17785.71259 3224.352087 0 29350.93071 31722.59313 8669.333055 0 2161.574152 0 3794.457297 0 6426.270718 0.2706243537 2889.959326 48.6105608 0 7283.228354 48.57566845 22.64739833 56948.49667 0 0 +0 1026.260696 59146.30175 2542.089205 0 0 0 0 17239.75237 0 31350.79868 1172.468923 0 0 4451.607782 255.9608583 3525.069856 44628.82655 16392.56898 39169.79172 0 47792.97388 7910.717462 0 0 0 31397.78242 18310.54065 34538.06612 12928.73153 20891.23745 6428.903399 53034.02849 6382.331127 0 0 1757.374837 13272.25072 11492.44283 0 17816.84983 0 32686.06496 6174.972865 54402.79243 2453.949802 7460.567582 265.0159976 14472.81386 0 0 0 16641.23023 0 0 0 0 15880.32304 30979.33736 12155.05223 0 16403.1391 3978.182393 3041.323595 0 5723.297635 0 29020.01892 25572.13722 4938.645809 0 8100.117668 0 30187.52954 0 0 570.0708787 0 0 2570.050927 11812.48458 9875.504407 27576.80394 17064.29207 12257.83765 13220.08052 2023.238914 0 1.474728175 0 9717.440824 11341.99606 15217.87689 19494.95386 21768.23446 0 52.43864839 116.7504779 34528.86117 0 0.002473367855 47865.02375 0 1043.446186 49.40292628 13090.02744 3342.102191 50.40492158 0 1863.14477 41415.06767 0 374.2074608 0 0 19188.85665 5429.131918 52789.00407 47.80133797 35178.6613 24516.04456 0 1822.555373 25649.62048 0.001277682799 69814.21899 9.505984146e-08 0 45683.44459 20065.04392 0 3865.069204 5820.607088 10988.80969 2038.313934 7595.138292 3264.382089 32038.6516 18270.6778 25994.48042 0 25262.55994 1745.210718 2535.031823 34296.29076 0 0 38042.89149 4323.556154 57038.58658 37350.20849 836.1790364 1065.803708 68979.60668 8691.636847 1672.869222 24.89401685 9495.957389 12594.51135 36384.06184 5646.235041 749.530256 68.29462793 13608.46827 23363.81145 3631.938215 29635.04466 370.9774411 14628.21836 0 0 3815.742672 10557.15751 3221.137855 0 13384.00608 3218.176814 952.8232633 26670.23137 44643.13476 0 37537.08566 22688.05617 3717.31225 32.51214392 52777.44385 358.9055828 7346.567346 47.78832322 641.1138223 206.4992926 62370.475 13701.96101 232.4940016 52411.11425 3121.654549 20616.1237 48421.03258 7491.014109 0 4044.345505 905.9123927 0 29517.6478 7797.649072 3624.232648 30231.95621 0 3531.986998 8813.030103 49123.71935 60099.17067 11579.51838 2368.252323 645.8112623 14339.27745 2335.143832 22589.71319 18646.59597 3317.805257 2102.688338 11416.19906 234.7557899 12155.92478 48032.01354 18182.10042 270.129004 23511.35438 924.0576864 30848.08065 23664.71388 7043.265204 34513.07816 826.3636149 1651.158432 53676.89642 34653.96582 0 18764.70393 40897.69143 2237.603382 3247.360817 6568.942642 657.599844 0 35648.9388 0 22.59437879 0 55.62776493 0 1926.1802 0 7606.304285 2362.46943 0 41332.37652 0 35484.99792 0 0 78.62451443 0 26149.24679 2048.424051 6610.713893 2512.563476 0 0 10752.93646 4129.058468 4957.586501 149.0075108 0 27718.73649 23162.4478 0 9360.292264 0 46.91395718 4064.395143 57300.72878 16710.33362 0 19512.57838 0 3932.269112 0 0 7008.770629 0 0 353.776598 8090.377837 3105.798794 0 0 15786.07609 5970.544724 540.9929344 +0 27384.31155 25.13147884 8301.064071 53.60332363 0 0 0 2463.1353 0 50.49455039 5629.603567 6998.24869 0 4370.24999 0 0 22257.16201 2432.354686 0 0 3274.927659 40260.03312 2545.216758 0 0 0 17056.43898 10232.19749 7489.907204 39255.21992 0 2096.738896 39498.17876 170.648429 6770.424045 63158.75601 2950.686658 0 8059.122218 0 446.7397203 0 4142.469995 13910.53799 168.2281154 31265.59401 9518.378434 38052.86852 16377.20482 0 0 3077.775704 264.9332136 2117.180156 28153.45966 14320.92042 37617.83331 5676.819424 4917.362304 9901.625715 664.3063528 0 14729.15876 3571.437157 10028.24987 0 23466.75074 0 8484.683947 7.169348407 53883.23917 30212.61724 7124.472405 16338.07363 0 23512.65066 16425.97047 32106.59682 8391.789219 896.1180658 4.669973644e-12 29342.92136 54901.66681 0 46281.49133 5135.919771 2671.282055 0 0 51142.35393 115077.9129 49582.39294 212.3886558 0 240.7001469 45833.13765 18605.80747 0 9780.807072 0 26095.43589 23972.70013 0 59819.81273 6588.437523 0.0005049327587 11170.43088 39289.61155 7667.589573 70172.98243 176431.4796 2550.561844 12732.30413 0 0 60564.9561 677.6819024 64995.65982 42.16362964 1287.243714 1371.29347 1.636392873 16267.09508 12278.43763 2967.345502 51192.41916 0.002127021164 123676.8487 30524.37771 44397.80446 2889.464699 75880.55777 10340.86939 1586.264734 26.31283379 0 50222.27364 48062.84177 2650.242766 21528.47183 34992.75556 0 0 0 28312.06921 0 13460.2527 28040.10317 4552.399036 39735.7664 1036.896564 0 29404.23178 0 333.1489735 34279.06257 0 4416.004949 10736.66354 51146.38086 66.73429281 0 1594.050724 47779.03552 40311.38221 61338.30345 0 17084.12241 1389.31688 5312.080282 21185.09783 1027.839716 41135.46439 7317.790506 80997.84412 34293.5128 13455.64938 2987.931532 1389.90632 67352.08906 8140.241678 0 6505.46526 0 4113.466485 3.176610385e-06 0 0 45527.38844 27733.23703 1301.218815 0 1408.794694 0 369.2150174 2789.841163 41277.27319 2507.066489 9775.13448 0 12208.54142 18183.7671 0 31538.24249 39872.45793 0 14101.45027 0 7940.095328 26853.91317 36347.62952 42543.13317 51858.29723 1781.688302 0 701.8573616 11427.67026 23822.12395 4778.802997 0 25792.26525 0 0 7956.613572 7137.664073 4930.066445 22126.16522 36107.92837 183.980954 2551.061407 0 0.001010390834 3874.733303 3167.390422 3574.933904 0 0 15133.68322 0 617.8324558 25337.2489 7659.28942 0.6631050956 4697.145581 4335.75736 22064.92545 3177.633505 0 1689.324075 0 4432.465052 15611.98561 6581.071618 0 368.3223729 0 36651.84378 0 2130.951824 0 0 3868.212226 10038.83785 0 0 17272.95785 0.4498966623 0 40049.30138 0 0 69.18804436 11146.56895 0 9825.493234 5064.634648 0 3546.607537 18504.58433 0 79.00191427 0 47.01101286 0 3547.510969 9126.469275 989.7462235 45087.26648 5225.032097 33512.49113 17519.25483 0 78.66096865 0 0 3341.287072 0 0 56145.27087 +2000.662406 0 576.6515364 3040.959942 0 114018.3015 0 0 9733.192146 1.031086963 221.2437311 15018.26804 0 0 0 10406.18254 0 0 59309.22588 4841.544559 6135.650125 0 40133.64186 0 0 0 0 321.9411891 0 54576.50901 22323.6234 2339.063871 2438.966814 0 29892.32181 7361.749133 10553.73248 634.1039557 10766.53842 18755.08459 4606.539301 33422.36591 0 28264.52883 3071.258533 0 0 2880.297418 0 0 0 1004.949005 8428.557399 49348.82518 1869.642185 6186.593126 0 7811.217298 0 0 3956.442778 38599.27723 50.25112692 0 8883.24103 37.65742197 10381.20241 0 11899.02684 0 24250.77205 25165.02728 96.4917759 0 0 55042.13459 2223.394468 17259.92083 0 0 10877.03117 67975.85653 54511.13791 48659.12997 3073.033324 0.02298026619 10524.63923 13326.12663 0 71789.95802 3916.718422 20309.68846 15932.51042 3669.33965 7842.589947 5605.341398 37.45797075 0 298.1488675 60943.83551 23505.62215 8062.167088 51324.03905 23.14285494 8359.881032 8767.008497 5470.030754 25027.28299 0 49243.45019 59303.36585 1464.180855 7936.102924 15793.07221 0 58734.95458 41243.95085 0 4562.913606 2824.399736 0 3666.604418 226.9820997 96.5969157 847.1671568 4633.00612 1291.638212 27506.97435 23600.33011 1.220780048 7826.221559 6231.769444 6787.168513 50.19935407 0 0 2431.041914 48647.69738 105065.2116 0 82515.39119 12070.01649 0 16502.54508 14975.70517 135066.8681 89.66882674 49358.00187 64723.84439 0 36729.35618 2814.060527 315.8306996 811.6545286 11168.38734 2027.339245 32315.79863 16645.41882 9089.318842 5666.353418 37240.73193 13576.97745 0 53.62805459 18040.56352 1882.683016 23103.028 2380.854038 35.40178192 0 14604.07536 10561.40584 7103.308178 20667.94133 0 50436.84895 16368.35684 1848.479921 43394.74941 12924.62132 51539.12357 11058.99943 49504.27511 28947.20321 72562.75849 62006.94546 88079.30625 0 492.2288817 8.135400526 8948.654157 11172.77669 5071.525383 12536.60479 0 68441.24608 7028.842093 0 6326.015998 202.5949982 26573.96494 38979.70291 2137.876664 0 20262.20402 3246.601331 0.1030220028 2142.305595 13827.48826 273.4540412 6282.93317 17878.21846 739.0780089 0 0 8309.851872 15168.83634 15665.40487 120.0294646 2716.385048 0 9578.208147 915.4006162 37421.23329 12015.60564 44022.42451 5026.731719 0 2399.087264 0 1870.04999 8885.017317 31076.81584 0 5344.395992 1903.5614 28538.09844 0 0 5328.844501 7479.009018 2148.640673 37.58296471 0 85.99200079 0 40798.59142 5338.783043 31476.0249 16.45030686 115.7831415 42.09984618 0.002697167457 11784.4228 41477.35285 10228.18425 32675.16955 0 46282.54688 42.65081405 17848.96218 23957.46824 0 0 0 21577.29364 4474.771587 0 2302.96867 698.0438943 0 1712.166061 0 44.24744082 4634.466751 0 0 0 15688.86793 0 4433.522164 17234.12323 0 1.471405487e-06 1896.637811 14222.51307 0 6269.542531 79.60810755 0 38143.02943 57.82106478 0 0 29177.79876 0 33283.6509 26165.12006 277.4212319 0 +0 41082.7032 0 35347.86629 10302.8751 3062.564742 0 58935.01253 0 0 5030.879162 0 1.130800965 0 0 0 0 0 0 99.19689214 2943.808063 31641.84194 861.5671232 10630.41394 26272.58584 47145.30908 5916.562467 0 11468.53493 5301.556176 3425.233043 898.7401141 1475.024119 0 0 313.5272003 0 642.190397 0 460.9214122 5020.282182 27515.31815 12842.2422 17.17424665 50610.58924 0 1909.18973 0 23314.01393 29275.92234 3415.224937 24980.82667 2177.132787 8077.475561 47443.15918 9593.386809 280.9260881 14386.64652 0 2569.179297 0 305.1342062 15128.83715 6133.270007 7115.205139 0 2765.684497 4907.95337 7906.113566 717.4084328 0 8930.835724 0 0 5684.250217 0 4313.311133 0 3157.472143 166.0219543 53539.61569 23470.01185 34925.33337 10102.15482 13732.33924 0 60132.93983 55140.57906 8417.803857 4685.019075 68887.4275 16271.34284 20088.33853 51134.66104 0 43668.80519 55778.54196 259.3064903 0 62725.09175 14864.87005 38451.1104 0 80812.18257 29534.03716 37663.83808 37504.17143 0 0 0 4257.432965 0 2064.070161 72427.04767 19674.07567 32.24642783 0 1120.397573 3517.029894 41232.46093 15626.6614 0 20391.32687 35547.39654 0 9483.630216 2962.009259 0 19079.58085 19594.68466 16478.08248 18278.92228 7139.136417 21383.39692 3041.127108 16472.29178 12822.69754 925.3554007 2547.499005 1867.695646 93279.02769 0 10250.56264 7706.335311 7.270252131e-05 0 26701.47413 26.23406175 0 0 3687.776416 0 0 0 45759.50595 1713.238347 3490.025527 559.4180314 9833.898262 0 58128.60845 0 4268.794003 28174.67154 0 55426.23893 26304.22711 56720.83473 1394.518197 3100.992285 29820.88348 23112.01895 0 5.049063345 59342.9384 25503.18704 5238.212936 106027.8735 3736.15195 59512.36967 0 0 9291.575131 28657.95283 2053.217557 3446.264556 12000.56712 48538.74562 712.3771176 37440.46361 6957.732906 11533.26352 5509.009899 19827.78354 16174.63834 768.9885113 591.1043975 4982.134408 26950.40603 16651.24734 6304.854385 0 0 48.12940997 7165.814324 0 34812.32178 0 5851.208023 5973.773852 2624.661263 0 6572.63364 20551.22185 29466.77696 40725.84333 30509.18978 1301.101302 19168.23612 0 1483.798666 3321.856095 480.1220237 77.30239133 0 5110.996858 0 26483.52297 4811.113162 0 0 9.493108364 0 0 13743.45966 31274.25281 0 26852.79543 8410.048183 0 26123.92996 29126.21497 18735.55777 0 0 0 12384.8933 0 75.39200405 0 0 0 21984.68636 0 0 24816.30038 2442.419386 0 9055.834877 24995.75575 40214.80293 25087.15752 18036.00404 0.09174828153 0 0 45736.23091 0 0 17901.28827 0 546.0706801 0 0 10233.74159 20811.51025 3986.51448 891.820947 0 90.47661605 18435.78193 0 2803.831896 49.15682135 0 0 1225.046737 0 444.4005479 2917.688655 0 0 30536.12931 0 0 0 0 9240.958676 5638.169302 5044.290442 +26815.67957 0 9179.197458 1380.403365 3254.11016 0 0 26054.90158 22182.63508 27865.60267 7343.300372 0 56974.44138 156.6802605 5567.439434 32529.41401 16030.10469 46687.89469 26980.62146 0 11166.54735 0 9830.904536 35701.16291 0 9340.435566 0 2297.167732 4506.013297 0 185.6338512 458.9014842 21723.82792 158.3102906 2511.241837 0 0 31.96403063 0 1616.000164 1323.147515 5007.739139 5924.57086 10140.78525 113.9930623 0.5619015795 50783.69436 56967.21246 88116.55557 0 20044.31454 0 25719.91127 2341.968438 39955.58258 6270.674269 46217.9196 2043.133893 5212.60161 3698.065753 3975.414592 5274.079273 2100.151992 40777.81512 5911.238403 65527.41695 1914.683775 0 45084.02709 2.100433829e-06 0 48686.06996 30054.58186 8391.617698 20493.45706 34735.12873 66344.05101 0 61199.95887 2142.995332 29139.1254 4403.946476 5661.779789 0 82.48383108 75124.29395 0 0 41635.08715 31489.35206 4512.047478 59967.30643 72.53140303 2392.174335 0 44410.23285 0 0 5114.065795 0 3252.100921 0 12309.33693 0 64499.00011 1381.669483 26316.51475 41122.55255 0 20417.8126 0 19308.78117 13557.1111 2186.935411 12148.21231 27562.79219 0 3631.881339 0 10998.34983 732.8406759 50354.32423 2.907777946 0 8006.986877 4926.000747 4923.364336 53209.9381 15527.88495 638.1988886 26785.69562 651.7446525 4617.418786 3734.230272 1834.390696 0 46.0839715 21403.69494 60484.50832 933.4266859 63.66459947 65775.14876 1.965696645e-05 0 17344.69324 15392.80919 300.7834131 96.14536203 5.752719477e-13 10438.32717 84776.05081 1342.659462 929.4184578 0 73884.4034 0 50221.44734 22644.17153 0 44209.63784 0 0 0 0 0 32485.24013 624.2092229 32804.14258 0 1566.353569 54855.81123 6024.694715 0.00289245744 0 30699.5996 27383.65569 0 47914.55046 5981.814377 6219.35815 19.78357787 67700.22477 12618.0518 8947.620748 64058.03358 2973.574488 18619.37948 20755.63508 2258.514945 3818.032433 6741.356951 19154.76599 1190.18055 24076.36965 11435.84694 0 50758.59628 27854.67941 36420.76937 191.9124046 21758.17242 17102.20614 2789.597765 0 49578.56723 0 8010.042949 24134.99543 0 0 0 1.342310174e-10 203.2840111 21677.18223 42.70085456 41817.65971 29635.25871 25021.9419 33849.86425 6861.336068 0 32280.68056 9357.208385 21713.35964 0 57.50628681 57836.25516 17083.35928 1363.716506 911.573241 1796.443135 1282.275638 41.82467991 0 4401.299788 0 15309.72151 2196.515458 0 0 959.8121096 50971.09282 11244.24257 1.767467112e-15 0 69.09750953 4393.777104 0 72.68231496 4967.453868 15291.24908 35377.99264 6523.941663 0 9277.485661 27247.38049 1787.279702 0 0 25528.92992 0 18220.27313 0 0 0 37551.27919 9015.311189 2.40063797 0 0 46165.58567 1634.559146 0 6448.487229 1247.610782 0 0 0 1325.844482 1182.218768 57.29865472 16193.72991 2851.282335 8879.590178 1966.403548 3022.935627 2432.569155 3554.161799 20769.56245 41245.06125 19824.78176 5476.888519 0 968.3077169 7880.791486 849.3837014 1405.15127 316.8084874 1513.222095 0 +0 2460.678761 0 0 5828.105396 3596.916319 0 396.9364142 352.9429156 17394.71918 0 0 0 55439.72106 0 17255.28465 9492.151134 0 735.4629559 0 27927.79773 210.8063098 53299.33434 18386.51259 0 0 69159.90235 49912.79603 50530.52169 564.5177889 5374.109878 5317.149487 0 0 412.5427906 0 11909.68304 6092.392055 10627.77989 41678.193 5107.325261 38016.6824 69942.96243 12094.98568 4011.566254 18252.1557 3839.285285 1917.812578 65533.45089 0 52016.1888 1765.039979 18958.3843 6639.85323 0 162213.7029 3861.132909 0 40640.43527 509.6829359 3784.557292 8673.781137 1463.251605 0 37164.09577 1804.451124 17053.47689 0 0 0 23455.67548 0 42629.7101 18445.3818 0 4791.256275 0 15914.83239 4677.080922 69.80883412 3091.510034 7887.650413 4242.096008 0 16815.28349 78299.35992 91.2764097 124.3580677 264.9458851 3070.74891 6296.980713 0 17536.55667 25781.11971 5900.972523 0 0 0 19161.41408 45704.62314 4869.397714 70.02841154 3933.739653 21579.90022 39817.97973 62503.67347 12490.81522 22416.98731 47648.94415 23549.49497 52382.31191 5992.810502 0 23156.61092 50.28466747 20653.08332 8745.562626 1646.731848 9996.017228 153.468744 7788.675028 14619.40277 79678.2867 26.57367805 70156.26091 9836.63067 0 23775.14424 13705.36477 95667.64725 39514.25795 15262.89531 1172.984896 1473.622642 46877.62826 0 14999.82955 0 1036.010522 0 121.8726924 17112.85331 4094.056897 4835.306261 11456.87666 9878.436064 51937.75315 0 0 17775.09566 17892.87263 0 36323.57254 47090.75431 2.369131839e-12 15862.94933 0 0 52138.96734 24518.4238 38483.03928 4838.371977 12883.82496 2801.370888 42672.05332 16034.32487 5981.440208 44078.02006 36.48755655 13337.96311 17551.81897 6683.980363 265.9243071 13144.45019 19590.19855 14841.32255 35233.18282 0 0 0 0 5141.309046 0 31667.08099 137.0472482 0 945.6981363 4780.610334 25933.22445 0 2231.610367 44879.59069 0 1211.703654 57458.39892 1384.034358 0 0 25969.89502 48094.89095 90460.62302 9953.895413 30005.44694 34790.21768 1032.270204 41160.86244 0 451.6935851 31803.79349 16319.29766 29227.43878 1594.635995 53.6980145 7999.457493 0 6804.725353 0 26082.39887 5333.327567 1615.291174 1819.241582 124.4544027 44476.83895 0 10172.28547 35686.24747 84189.34709 6845.049516 4959.69178 0 13.1007257 19130.46366 24686.17395 17713.00656 923.3262467 9.551410792 1711.973495 7244.202836 0 18126.2701 134.5190597 25748.58532 23375.99413 0 3089.060802 0 6972.725776 40211.79196 0 0 5386.901593 56109.37985 4241.520965 30958.72187 0 1048.407201 407.0210816 54.46264787 0 20141.62599 2598.354924 3756.127919 15471.72062 23526.25101 0 0 2036.318876 6485.133011 0 1819.624666 853.6708252 4035.827582 33.75191429 0 0 34483.65274 20681.82119 25428.42388 4067.698883 4016.772022 0 0 2380.391641 10597.10739 0 0 104.7205101 3468.669817 4631.214697 29876.82348 32392.78478 0 11294.14559 0 0 42247.78968 2449.805476 0 1313.234892 0 +43471.86889 2861.488508 42598.99096 0 0 14234.48593 48068.48018 43134.50294 57451.56889 5374.220516 6144.119296 0 7545.318985 13650.6635 0 51583.76723 93.55219221 21494.2966 0 32303.91471 9031.243698 42599.89486 0 4295.071698 0 132.812747 14000.1044 10295.9732 0 1628.970306 3980.728458 3438.738458 8057.531006 0 0 3756.366138 1890.95911 15445.30454 3978.852397 86760.39308 12455.61469 1178.24551 52401.59419 743.9945825 33269.66341 9970.832731 6073.791069 33019.5674 0 0 72119.87397 0 0 0 329.9871501 0 2.114305857 6400.57305 0 29983.50921 15173.28095 0 781.1739358 7107.333058 55733.57475 4039.854732 0 55835.33493 103074.0737 3883.5794 1327.517201 56563.81713 10519.87043 0 0 6242.590118 10719.84958 11406.62127 112.4684326 1773.822184 16152.21189 25119.26776 701.0303329 29271.19185 45948.63786 29394.45797 10004.34706 0 127.7128352 2360.364345 4119.018606 8118.245653 22682.23785 2709.896291 32.57067361 3.19711204 41647.88113 0 33873.37242 2522.716945 4.422372987 0 2639.954236 30127.18146 0 0 38117.78555 15680.76014 0 30490.29097 0 17907.98754 464.5491831 29416.11734 4682.317378 12409.25151 23325.03105 0 15685.10505 0 95.72604707 1962.008321 0 7150.753769 12070.97229 7486.799045 45.60777839 1525.481905 484.3299017 3796.527475 101.5390222 0 0 14115.39398 0 13694.9918 0 409.7748871 218.8884652 1420.88734 579.6775541 70563.78252 3528.092152 20135.46189 6758.158943 90499.6298 21105.55846 17851.8055 10453.64608 0 44016.77842 0 12150.41246 1715.646006 12736.33997 4682.893729 2876.893543 21642.58832 17827.06679 16364.52136 0 42447.81358 12345.64508 7172.013882 26179.12602 23895.2869 0 2603.167445 273.0257666 0 21036.52504 649.9040452 0 32780.75212 0 0 0.05364149045 40851.466 1461.569945 10656.8032 36071.66902 1725.711658 0 0 3236.763919 37637.6221 4.155193004e-11 0 5649.949372 4753.011393 0 21645.34266 109475.5177 11943.30541 13378.10547 0 7528.056736 4255.135429 225.2401051 12810.00627 39503.45034 18540.3936 0 1956.827358 3913.802706 45973.65985 50.92691632 44610.96948 3780.700735 28362.40825 5.339855223 0 0 3335.556895 6345.4866 0 1000.929112 0 4874.695362 0 15054.34211 6903.904675 8423.25022 6482.558148 35.2645988 4049.269176 2171.350834 0 53.95818779 6374.955897 0 0 0 1040.192153 22.94292688 10527.04946 0 6265.700252 4810.211825 0 35131.23979 0 51548.30413 0 25358.93368 7849.031223 0 0 538.6005478 2186.004418 18638.88931 2114.802747 7592.623464 5616.402233 20809.63763 0 0 0 203.7421784 12118.84 13261.65453 0 19506.81167 15426.96026 49.9782259 0 0 2299.233814 0 28931.13867 10777.1761 106.2260757 33555.6571 1079.810503 0 5963.868161 0 19989.28679 6310.014898 177.6899353 317.4445777 4811.836013 0 4826.777921 2.215722556e-05 28275.94955 5496.434423 463.3576164 0 21225.77993 0 0 0 10933.69503 0 0 3198.144426 31554.40157 4037.948711 0 +4747.686833 16417.07674 13340.34125 6639.672411 9831.010024 12576.65061 48592.51094 26179.853 8268.655592 0 2399.758003 42.56298203 17308.28505 118.9092274 10954.54144 4682.67971 0 1944.586037 0 0 5900.469101 0 0 0 55560.05319 0 3009.924891 22231.17413 0 0 7262.598079 0 10277.5579 0 0 0 27936.61763 0 7216.351016 1349.951312 22293.64998 12111.2324 23749.33211 3780.802438 588.9573371 9643.098467 4955.320099 3287.188986 107.6051171 0 91967.59875 0 7613.245375 128.8795263 0 72212.39039 707.0671224 10141.0483 0 0 9305.380199 17084.56151 5230.352348 0 0 4053.678741 12838.47997 0 0 7676.544385 5420.336004 0 14004.35115 0 20028.53933 8975.958586 773.3939918 0 15755.06868 5393.886741 5513.056059 5059.459008 5746.341081 1788.81152 0 11260.9758 16875.69133 0 17430.82506 19793.54067 145.6100507 2049.285238 26828.01506 4222.584657 16340.31205 5242.511567 31349.68536 9916.926339 38075.05701 6647.581938 0 15442.81213 0 18577.49407 3905.760653 26341.8755 0 30462.96521 0 32548.53302 0 293.4803243 665.1674914 6436.908034 22155.83164 0 35011.59159 4153.336913 142.3307953 37016.87649 0 65744.13047 2389.760857 7204.321973 84843.00191 112018.9581 130.1985704 37008.73686 17458.7657 5453.821985 74745.67386 22602.51926 1601.784334 3753.707663 14141.10357 53.64384414 225.0355213 48016.79577 0 69182.5212 2414.90901 104.3879335 0 0 0 16066.71606 51188.32597 0 37549.66018 17149.89075 0 48551.14489 0 15303.54911 0 478.9715537 39445.294 143.7492604 1.861876343e-09 0 43066.88896 10070.49542 0 0 0 37083.2484 29148.00858 14342.86136 69.05221904 5969.628169 0 31873.33176 0 691.7383197 0 0 13412.89364 0 549.318426 973.9139784 0 1937.592261 19614.57735 4794.769226 12880.25444 21066.74779 6436.703208 0 45355.33666 37642.26639 39.12728052 3041.066323 27342.98659 7.852323721e-15 4266.842014 38206.47471 0 94756.31338 0 41779.49308 0 0 4208.841774 0 11656.33789 585.360473 35731.21045 65702.75532 1679.089397 0 12885.89198 12385.29929 0 3595.772785 1315.00032 2189.062727 0 1858.1798 36635.14307 8788.871316 0 402.3663161 0 8766.646232 7619.356698 10044.86482 5068.488602 11092.60045 0 45069.88021 0 10644.63513 16719.40377 5054.96568 16774.79155 11486.00615 11290.93405 3206.770624 857.3167241 20287.37027 6350.47798 49339.64095 0 7439.441591 0 48.04572902 0 1246.483896 2522.383226 0 412.3167752 48170.3785 50246.26794 261.9852724 10971.28036 39511.66684 23654.64437 21088.78751 0 12468.13524 0 0 0 0 6856.838354 0 818.8836725 22267.09459 28567.65277 0 0 17974.41256 12255.25135 0 90.87226356 6083.945978 1597.488775 30973.79991 0 0 0 0 0 9519.428914 0 4215.723532 5011.089177 264.3073964 16119.31679 1491.818844 38467.19317 1888.875405 44.81130819 9979.927971 8020.979178 0 0 0 272.6942805 6066.441205 +510.7275454 0 3406.377514 8743.92398 0 2162.240969 503.3774013 26334.81866 2855.301126 46319.37985 0 0 11671.40588 0 0 48875.53002 15888.06541 0.06842661685 1301.964914 0 0 15487.02423 17404.88725 7471.862908 0 0 15814.99624 12442.05484 0 0 25894.65588 0 0 7188.333694 0 44711.95792 4596.146175 9228.585356 0 775.749791 13114.55584 0 0 0 22671.2207 4784.699121 0 0 0 16671.24582 884.6397878 0 0 0 223.9140812 17251.25529 38147.13899 0 4033.782435 6477.064939 37.39817068 0 0 0 0 110497.9464 0 3275.320283 1529.755846 0 46095.97766 51760.52496 845.8195639 40668.37397 12125.03037 9439.046533 0 0 21204.23395 6337.192585 2385.439347 2279.640536 8844.291499 0 403.8073474 11609.44524 37666.27791 52257.66133 0 25522.21721 50402.41165 0 38549.97353 23648.57367 25129.08964 1801.068068 14994.71701 45647.59229 34341.05575 15088.05434 31755.58593 20340.88509 2626.325735 183.4084838 0 360.5496189 10434.73304 17728.18387 167.9969596 3431.766398 11537.81573 41.95029673 4709.749928 2481.637867 0 0 0 2519.182737 5952.635131 13013.67672 0 3897.888109 1991.762982 11294.32365 33107.44085 6678.740326 4293.062325 89684.70531 4437.194646 0 54220.5599 42334.33079 0 58456.79093 63650.87896 44203.55189 4582.124258 69252.61038 0 55265.07756 42920.23441 14560.03671 4596.772653 0 17673.01245 22413.76643 14694.10657 0 7149.76567 6617.856942 37567.74079 23407.90796 35036.36229 373.2120634 11827.40842 50739.70031 6250.425806 9943.185843 33504.88853 6.951833799 56031.05728 1729.161171 800.0942997 55017.34635 419.5823325 5622.762054 14637.61052 0 217.6837789 0 5573.150452 12.59738478 16309.37007 0 56055.01059 0 0 26611.08071 6802.17628 3102.963507 0 16272.24574 37666.79528 8006.888503 59.68616239 0 101300.5492 0 16042.88691 43314.55959 49744.1397 0 53147.40658 64897.75622 79212.31013 0 35805.48085 0 114.8841258 10868.47669 45728.65201 0 39437.21232 69683.51101 0 59752.85989 16197.09229 5437.721681 24245.8121 2982.054689 91812.54353 0 3507.110752 2982.879513 0 0 0 0 15232.4127 2895.044667 0 45035.54632 32454.61627 4958.217471 33422.71865 3.500731629 278.2165854 23348.55221 79171.18649 0 27071.84038 62968.60515 26067.73426 17045.10248 0 16245.72619 34873.98421 0 2.279767661e-14 15159.33257 0 75.39520719 0 21076.61445 0 270.1098151 1491.602898 11442.57547 0 8303.129377 0 0 8831.237634 26841.40439 0 67978.82839 60093.92248 0 24401.56084 41399.58868 987.3891969 627.2433767 32803.87546 0 0 8304.577331 15506.4277 1299.481954 2847.782875 7608.431321 16663.63404 0 133.3807587 0 4251.672433 0 102.1848097 0 10166.13939 0 60.67427883 3720.48542 59.96458821 3532.432179 15072.53175 3627.618191 191.8764478 43070.29948 17212.04202 0 0.004394933951 15813.04275 0 0 0.01600474192 0 25896.91361 241.0258537 0 0 +0 10126.6633 1464.608628 0 44.81320346 0 0 0 26939.62208 2524.493781 3924.708241 0 0 4012.367816 0 230.0936692 31640.17277 0 4265.579175 0 1498.993877 2574.638551 0 2080.086723 27514.97691 0 0 3640.042839 0 0 2145.457489 32917.04929 7242.811897 0 77731.04765 57015.26813 468.2604343 0 10725.77172 280.2434903 4957.956759 0 12822.24702 38535.10848 63412.12609 0 1314.67636 2036.335976 1045.758465 8027.745543 0 112647.3105 38919.26489 251.1446706 10459.61831 9305.399506 0 299.4797844 2131.800947 0 0 5980.125381 0 0 1.138658243 0 1665.09973 26869.72124 18242.29462 2954.70483 1448.688211 84647.61617 0 1953.22423 0 0 0 0 0 49498.51352 0 49613.31135 42238.98555 2113.681917 0 31156.76595 8589.993612 0 16308.84477 24124.3946 9188.229744 3511.745636 0 3400.049554 27143.73841 0 0 73.22491516 0.0001997557738 15149.376 46150.82634 0 8127.820296 4183.872136 5451.427516 0 0 74318.66344 39283.13077 17868.47006 23211.00544 203.7867362 3730.255565 31328.39386 2399.635868 2357.748524 1253.173892 269.0003304 11363.07953 8609.394007 9460.816341 44493.68551 14245.55746 0 59813.22485 0 38039.67691 504.5068424 3080.400397 0 8425.431106 4294.276668 8563.616415 4308.742812 0 41.45949828 4725.429951 5729.497605 52310.22411 10556.98662 30663.25468 10984.70231 28680.23695 0 0 35880.23802 1013.379977 20444.01532 0 4.648689852 0.844225197 1763.777418 7896.870008 34400.33209 19643.0712 21204.94818 0 3275.898945 3371.281086 7643.28367 0 7041.619207 95.0501527 92329.38085 0 35303.85119 0 5269.644583 23261.4262 82862.19058 24043.74935 7378.956308 15497.98905 0 40039.61366 1161.57941 21186.45525 6381.405147 9398.068255 0 21275.33264 23556.02585 1954.217805 27467.5775 0 6812.378944 109669.3577 1785.599089 26341.62187 0 37469.09626 28097.37232 25516.38974 1875.774146 0 32950.41251 102.7375054 0 19464.71229 2666.529286 4315.069364 48166.80259 0 7423.79844 59.27059366 18531.29992 2674.723284 0 69793.91345 20765.56399 491.9290623 12859.64018 3527.747733 21298.28068 3237.025788 9.393183109e-07 0 0 5675.971423 24519.36318 1031.769286 50539.10431 0 0 0 314.5141542 35319.69498 3605.436877 4256.281747 6025.077878 12074.4487 56793.03403 0 0 18562.21776 8990.825123 41889.02362 0 0 25600.14865 1364.899778 5517.329699 28031.048 36183.3841 15836.92946 0 5911.323109 19866.1948 637.6220019 58903.45248 132.5303025 46156.64316 28813.2174 69.69663977 8794.933325 12992.03775 25445.61296 21205.74425 1.089116754 11155.38532 0 38009.1348 1192.205791 8411.248523 2627.715102 6621.225824 0 1.790236077e-12 0 0 26772.94664 2270.73538 7248.643435 3628.813164 0 46.51860912 0 5008.899441 1735.402755 7980.961178 0 4118.398099 17641.568 42043.34885 14807.6937 3147.969672 21.59472482 1396.987247 1069.827489 46142.59486 0 89.0067759 162.7755433 40213.49928 3194.894075 95.94706266 1339.248313 3179.336805 0 4150.477688 +0 6610.536617 40055.20501 0 6223.195197 14213.43275 0 0 11255.10606 21702.43238 184.0794893 3569.315478 118.2858957 9430.192831 0 0 0 24751.58003 52501.85111 24438.05975 431.3090422 0 6294.780063 0 0 4916.825925 0 0 0 21125.45384 477.6519106 3.245272356 4425.098287 17005.73217 0 2641.327169 8337.003836 1603.031129 31884.58091 0 0 0 0 5631.711751 38898.92122 19862.45566 43572.26625 0 0 4573.810673 801.9462376 25194.31713 32146.31483 7197.646213 12455.30005 2759.341385 0.04821495378 15360.25928 0 6401.986958 9502.363564 3080.828646 0 0 36949.70922 36968.48894 0 0 0 4669.710406 2.540073429e-06 81243.89677 0 0.09095490263 0 36246.26335 8937.880985 0 2912.561881 6066.847111 0 2969.408417 34246.77829 0 0 8541.138405 44437.79431 52881.78028 0 3395.237696 80.9821782 0 21040.28678 38927.2973 664.8581035 2505.546913 10532.4789 20390.69394 48161.86566 267.6683047 0 15989.09632 6269.069129 9884.91249 0 13581.71526 7234.806734 30547.88813 60270.07213 21739.86752 0 917.2283741 41823.39792 8930.558035 31739.11285 12392.62072 0 1968.353819 13344.89189 28647.58963 0 30315.9611 13542.13932 0 0 0 81789.97749 0 3687.066171 30026.39381 24328.12994 24133.96453 4710.670768 1115.1276 0 3.888174053 91.72998887 67252.73473 51727.49161 0 64592.01092 19262.35383 47313.99075 41.09120495 10680.23888 8911.301752 3584.019261 85039.48011 46584.94071 51477.91442 998.3893574 36876.82394 8807.723667 18282.26169 8432.125266 60455.16328 5099.790867 0 40173.80624 131.4877711 98.69231437 5386.084157 49181.60908 1073.469058 0 13193.23743 1943.018507 2721.846174 9.900036894e-08 3481.870055 58185.44982 40574.32421 53338.47867 0 14659.75105 0 34510.10908 2789.238695 15901.72354 0 233.8910446 12499.43464 53108.59 0 10179.37773 24998.9835 12273.72618 27201.31278 24895.78407 60824.95759 0 1935.218948 9485.835337 40031.61865 0 104301.7426 11377.39789 0 26880.48136 5741.286013 15956.46984 16.06763398 27640.12599 0 0 0 395.608607 7857.855858 0 7188.416371 66453.22632 0 0 983.7192103 842.9816059 7768.649956 40690.78787 1481.210144 1101.638164 13781.92135 52521.64687 24986.39752 23912.91196 0 14652.81256 43543.41434 10130.04627 42028.74738 2636.107993 0 24405.94492 5060.317902 1992.092868 55865.14514 23995.49913 20714.75434 0 359.3403713 5851.710657 0 21.23849733 4.111110018e-07 0 4763.276196 42474.13887 35990.83044 0 0 27392.97788 0 105.2609556 11302.96317 21430.44162 70649.10898 98.55551989 823.2076478 5941.086778 2021.537921 1546.618363 61208.42307 387.2602465 16730.11724 8500.39793 2626.783973 20604.59371 0 20733.50946 14461.91413 0 1653.740642 5050.347641 0 0 0 2836.455219 14905.23156 0 0 31053.74948 0 8066.641974 0.008156665819 621.2267654 28324.48457 7489.285762 4517.020228 52049.3335 0 7115.790273 15825.851 2858.798009 3153.670104 1593.597541 22454.73486 312.6028867 3249.077921 33418.22578 10010.28023 0 51859.57432 +42932.96996 0 10351.44132 0 16698.46646 13647.84629 8771.190656 10411.1049 3151.921121 28910.15369 0 29.01587105 0 15560.89533 0 12005.40698 69.92592354 18072.6821 0 14186.76627 8576.12783 5227.004171 0 27872.36188 972.8875911 0 0 7117.240259 6987.068217 12569.5146 41752.73767 213.5635851 1312.860739 12410.67037 45150.84311 2801.850048 8859.889659 3771.020415 0 0 2911.584651 65315.78711 0 8129.286777 0 11209.97478 40416.58465 109.9316082 32093.19904 1875.352284 0 17652.25621 10491.17376 0 50838.88845 1014.202687 18948.07424 0 29381.06687 44.6296875 0 4292.483495 17127.44891 0 59004.65713 0 0 0 62866.11514 80470.58608 429.8408213 0 20248.1702 0 2987.8561 5088.662511 5489.918499 1.325884593 4440.081832 30581.2292 30328.13865 31202.33342 10305.55616 0 0 14927.86562 0 3452.99166 669.055618 69485.57187 15760.109 61240.76458 16986.89521 20903.46955 15754.78574 0 238.0056513 0 2082.161731 0 0 36.26130826 18.3105859 145.7314953 1259.217786 9826.346201 3115.54336 38013.22593 0 6803.659 13214.64678 77692.19616 0 0 0 3341.442601 0 60084.99343 0 43104.83945 692.8097541 10138.19133 306.5268226 1998.759024 14904.30624 17095.62969 0 0 27833.16742 47199.10023 334.0725585 23069.04816 6000.378306 0 54734.42073 51602.57221 0 78325.63257 0 0 0 3806.90676 57231.21802 15253.1369 9103.902563 21583.65293 5.705853937e-05 1338.155389 49504.69941 9935.894881 69580.15566 1319.38617 0 61796.8511 2274.415188 0 1386.625503 9499.574144 29225.83628 22124.93994 14604.02615 2529.778677 6487.646725 8476.887227 73724.8057 20013.36399 42239.55002 41169.08929 4209.138454 66959.18117 334.3871256 726.0364501 16754.36491 44544.44477 26237.67353 0 2356.991138 91011.69475 4645.589981 5364.372296 3774.238197 2558.837128 4684.028276 0 3002.669033 305.2370648 9118.604568 53021.99791 50617.06813 4261.633063 10131.22508 0 0 26183.58125 141267.9818 2024.213745 18836.22606 22147.46497 14.8032296 24993.9178 0 26174.10504 11137.64438 2761.655413 2411.425336 8554.074967 0 9902.653654 5046.458913 1929.030515 0 19301.03746 74.29950484 168.0524666 19659.73906 5273.926785 34168.33723 116.066274 1935.972194 10401.39535 795.4168994 2769.569164 6541.652647 3663.283797 2636.19293 0 8348.266937 3142.205089 0 6530.345564 25906.51508 0 3182.755917 16789.63117 20620.89122 3089.61208 4329.822598 0 2277.527149 0 53553.84495 4550.169895 0 0 10378.70088 0 1838.365448 31247.40501 151.0963411 0 0 14345.25146 14143.28754 5005.648006 64.90714866 9172.622695 0 0 9127.603249 0 0 934.2882642 2113.216639 0 0 25843.4213 0.02673668374 0 17293.72379 1239.598102 25328.93132 0 0 15251.48614 80.87488542 13881.78022 10122.54111 0 33067.72661 8141.947333 43919.12923 0 13588.26835 2416.840663 23933.40223 9836.339249 837.363541 10811.12151 0 0.001518293406 7727.324758 2958.459606 11433.61531 0 0 0 3374.859297 12515.17331 3734.92765 721.9953969 +1151.593084 9563.833191 0 14591.83932 0 0 0 12447.01693 0 239.9514893 0 46181.3238 72723.59272 24115.04897 1841.847029 0 0 0 36602.91845 0 40175.99599 0 0 4593.445485 28750.73732 7505.742218 0 34169.41763 0 0 1251.930756 359.76009 30341.5245 11662.4862 15535.03166 3763.252714 0 4848.78849 0 0 12189.62195 0 15424.88545 0 2576.847428 8368.695305 0 35682.25226 18171.5737 0 1911.344319 8509.366883 0 1928.174749 40332.18994 1845.570685 1118.896674 0 8296.638848 1559.88325 0 49834.29245 9040.998045 5890.786981 37.61997497 24092.45716 30599.1921 0 0 27574.17308 3637.098445 31312.78166 0 10941.48787 1639.215538 31333.58819 49778.79893 0 32022.08977 6233.870256 6994.154341 24189.22345 1955.570093 18033.76412 0 13480.15231 80693.78655 0 0 41155.55527 9555.550081 5110.652767 838.0283718 23793.15023 2492.615082 7902.451562 13179.15301 22949.77829 0 0 16985.80855 33220.3247 17974.56391 0 1743.432398 0 0 0 45678.08427 5682.157738 15949.05362 56518.5706 0 6721.439473 0 1841.80951 16285.35725 37278.99681 22831.82889 6669.356411 23994.20953 18139.66586 11764.77392 21083.04104 4016.37768 36793.32344 20469.37183 0 0 52216.64322 0 9148.734873 20296.8318 3384.092817 1849.344649 15719.67768 11553.28217 0 2211.050159 9943.076271 14159.09526 50088.81326 459.5211183 48652.46149 67043.8163 1229.498738 19038.88552 0 4114.129636 0 21737.04145 14911.82718 9615.101574 28469.1133 80539.70466 0 38865.12438 0 50872.30431 3289.272842 33814.38774 538.1007646 653.676939 55.44023123 69858.77496 6433.928291 13198.76794 1139.68889 50377.68185 3451.073916 9662.376463 1555.481181 2618.12229 22759.61769 8127.305709 0 7034.320729 3799.639862 139704.2139 1431.69663 18750.57596 6367.30239 18290.23752 0 12680.07095 9940.967881 10464.03671 44279.30813 3786.086779 1314.527015 0 902.6815124 22543.35474 5020.306006 0 0 5656.096523 24624.31577 0 39030.97433 3486.86985 0 0 2349.285767 15522.41417 767.3147698 21300.70862 1132.663405 0 0 2719.054132 168.2045815 0 0 24974.71224 30489.24068 82817.36815 34969.1159 5888.309418 0 28619.69471 24367.12067 27.09098537 28.41885822 13673.86845 59981.27212 0 0 2821.104317 21607.58153 9697.407365 33302.36442 117.1668305 0 45484.83532 15744.99752 13752.83495 30516.10548 59583.78796 0 25535.03426 0 5124.72683 411.8775347 17083.86961 1766.997689 54755.73414 2785.518132 1968.176118 51151.053 0 90.86614116 0 0 191.6135663 5.317383459 34571.28007 0 0 6770.97449 11645.69272 8057.255544 2043.915463 17093.37501 705.6004336 0 6125.856352 3718.948064 0 7369.348911 54729.4207 0 3291.294391 2537.818499 2420.194631 114.8074941 25.9983866 4590.629068 0 12345.99694 0 38.55136755 2520.253457 6360.805928 4521.946139 9129.582364 0 0 2346.758388 0 0 2633.218418 0 0 0 0 5609.340596 13070.65429 0 13317.68563 +0 17505.56399 5687.161781 3845.541941 0 2530.864001 15224.82335 0 0 27265.84914 97.77953517 0 1590.249398 212.6808337 6119.910042 11469.51563 66355.90412 35.51073169 29356.48208 6562.786169 2055.908916 0 0 5173.677177 122.0898881 0 41789.04041 0 41477.65713 0 0 0 0 0 0 85641.59327 0 21152.80827 35933.17655 0 39157.4668 0 18743.13975 2433.874599 607.6918236 0 24688.28578 4.23396267e-10 25597.68384 19530.45973 2183.754961 0 0 46042.84921 26802.49038 10636.32086 4153.823569 21143.38154 1951.115344 19297.89049 3587.742245 0 44842.80042 7625.222744 0 1305.227158 0 16351.61429 1970.567063 20771.03489 0 39237.33055 2512.114027 3757.056513 42166.06447 2304.307811 2447.231042 9725.981774 33386.876 21597.11648 14953.74971 30181.21942 45359.04056 0 50618.71078 14849.31744 14539.46783 0 647.4399206 59057.69355 2639.68249 18957.31922 0 9125.979293 0 5.952153771e-05 0 16684.17165 5572.105475 62506.35665 39956.08151 853.8698954 22446.9403 0 40083.61422 1474.287262 66.15936175 0 0 40659.54144 152.5990023 43332.10238 0 0 29.46819167 26955.46202 56281.81492 39482.79197 42024.78458 38946.81341 2944.343038 96.13795938 40560.73938 0 1539.492317 12658.31189 4399.367583 7693.420212 752.6412477 46456.55028 7933.74938 3200.250491 0 20036.46428 105380.0002 1.575791849e-05 8323.944319 0.3152370039 5107.344083 31341.76042 27171.69549 0 35209.15136 0 0 0 972.6326798 4949.348126 0 54311.33279 39920.82568 390.0330498 0 40995.59716 3200.52563 0 6098.378622 137.2673684 16007.89161 779.7717077 14640.41053 46221.43954 105453.7575 16362.15123 0 4638.513756 61397.17116 2736.483681 11052.48556 33236.4192 0 3982.675895 721.690058 60697.22819 1210.444165 51898.09291 392.9685551 2185.195501 0 104870.2707 8212.860141 3055.603566 7352.774592 64943.40914 1403.041634 37313.22289 28156.62517 8.233289742 0.1892934261 0 1373.712951 22230.96301 0 6555.444683 29154.69837 0 0 0 92.23912056 3152.35069 18410.5093 0 23916.5273 18865.29048 3187.174536 21158.1184 25304.11901 0 31617.54595 5303.090897 0 31838.70513 4595.680207 32319.06269 2740.134845 63.97257482 0 0 27692.56187 222.1312723 18645.87693 4372.454584 0 2239.940264 11005.97188 21966.6088 6166.948018 64119.48561 0 0 190.9915369 3024.299526 4138.25188 38347.36464 0 0 138.2094994 17594.55149 0 2265.437004 1863.917229 0 36120.10672 0 0 0.1256234529 0 703.0013756 275.0313772 0 0 4667.190605 31254.74912 0 4335.794522 0 0 66.80558516 0.0001370357516 7341.882821 22690.27939 0 1771.48495 0 9399.052849 2816.538026 7571.617554 0 0 23468.87878 0 0 0 0 0 1656.902946 178.1671626 0 67769.79168 0 0 8235.658461 21813.53803 0 28305.54048 7337.607802 40661.23813 0 3129.139759 0 12288.67498 1271.967881 0 2.144344323 0 115.3068102 0 993.677004 1678.224553 2379.781115 +383.6529252 0 0 10177.9628 3051.062793 9200.526575 0 2047.640531 0 0 22685.95347 2.899570816 3086.612495 5640.847122 0 0 10952.95849 0 52473.41906 5502.228902 1435.616422 37483.96096 46.62858456 27751.79005 0 857.8651816 0 1488.050669 8135.20266 9290.79648 65969.58531 3177.950441 38680.80312 42965.61656 0 124.9408976 35.2789191 574.1947179 20011.10592 24.27156249 4622.567002 0 0 4395.406304 345.399322 29229.26939 720.1444158 0 11200.81704 0 9814.83402 0 991.0102882 0 0 0 53.10411667 3586.256165 0 20282.46979 4692.750137 659.81819 10221.51096 2954.815791 8898.226566 27141.66736 40892.73544 0 42573.3439 0 25510.06952 623.5300464 2937.363531 0 57049.50418 15248.6103 53327.24493 22203.77414 0 0 6095.027897 0 14143.3528 39616.95619 1161.54809 261.0587243 18232.33489 0.004895156714 42620.19799 38271.8043 5522.483297 0 76.65727242 0 0 13257.23954 0 0 0 0 13610.7505 28171.99157 8128.67445 11774.36869 33261.1369 2858.508978 0 0 42626.56198 7123.980754 8777.717684 0 24853.50048 0 6700.469566 86220.6146 39897.22245 471.1011072 0 14072.58885 2306.17989 42090.33435 0 1800.717669 2095.773019 0 7873.888782 4043.932908 44.02779362 17170.21623 23759.06823 0 46213.4853 0 9433.42824 16220.59117 479.4905122 6199.205191 0 9.998799384e-05 3130.241085 45918.41547 0 23517.18496 29522.53096 12693.45172 18262.04477 9326.141018 35677.04499 29880.37273 0 55020.31286 44600.76758 0 18647.42153 11436.06999 21855.41144 57859.76849 3304.704479 4011.355815 14899.41755 0 0 421.9832838 53.39102568 56753.79813 17236.10289 31935.54739 7886.620373 36737.10593 299.9173462 1620.931096 0 14860.83591 29353.99816 0 14482.26846 11912.69034 24.08078725 5769.75579 38356.24791 757.7250233 0 0 6066.569139 20273.58083 314.2726833 0 1305.711428 3773.230858 84.08231048 21862.64472 0 4806.696813 18413.71899 862.4513141 47615.23652 41249.13453 15711.88161 0 0 6953.647994 1824.876078 19485.33141 0 15.71805262 99.75302574 24748.96576 0 18462.15119 43682.27162 49107.39091 9307.530696 3924.770202 0 25148.42833 1213.833292 605.4183399 0 6742.902213 4.207615942e-08 20149.61519 961.0450485 10205.05503 5635.965931 42.54883438 9215.757506 9814.867716 0 1419.74595 0 2316.560238 0 0 0 15334.70077 212.3053143 782.3384825 1733.097135 10869.50082 44621.39096 178.2757995 6.233217718 0 0 0 0 36482.99657 58514.4944 77.54906842 333.4935552 2935.157547 1085.31012 0 2200.838635 15279.58994 0 0 23371.38447 19515.2858 2153.216369 10821.97747 3.594450385e-08 889.6589389 2452.391653 1523.957847 12178.60023 3327.227231 0 427.8159539 8926.991239 5805.281671 3023.546324 1023.177833 30720.97079 8168.593423 7746.763138 0 7864.470029 0 555.0243382 1831.251524 0 0 572.8858327 33376.70452 10191.03496 3594.56833 0 38720.73456 4322.993723 52.44734938 0 0 14894.02928 0 1.038676917e-06 0 0 11144.27139 +1673.469923 101479.4573 16302.83158 3712.53236 0.08655481128 53922.71339 33373.09653 45824.21909 16550.96377 0.002716448449 54388.01626 0 0 16267.33565 1940.343109 0 11595.32471 14972.55177 6947.879334 4477.775536 19665.30443 0 98360.11496 0 3217.686585 17003.02862 0 2100.156885 0 9698.012549 26843.94797 0 4711.524388 13793.59412 0 12451.16992 1475.800651 0 1425.34024 0 0 2034.892283 4717.595065 0.0307687152 25796.47539 0 3447.665206 0 12890.08299 0 0 22937.58987 1860.109475 0.1319946012 1483.81995 22119.28748 0 1914.075224 63229.35823 841.3435564 35287.11353 41327.28774 5918.633045 0 48578.25602 0 77393.61305 0 15539.28226 1151.358961 8115.028829 0 5320.824312 16038.52436 0 34209.03024 0 56702.77166 5075.512602 142537.2419 54131.26007 543.0268188 25409.12147 15009.88565 7378.030672 20276.54206 5111.036395 964.4353371 0 2025.830989 76330.05439 49455.64886 7.830600422 38255.00686 0 0 2974.75345 0 6081.078912 0 4931.577178 0 9720.519658 18335.64406 2.079430827 2153.560285 0 9309.541625 1335.228553 497.8281324 9285.778292 6431.528949 0 83299.02443 12064.92652 41128.51922 5557.775413 2851.153399 9348.594609 15329.31124 0 6254.468412 15601.73952 1279.115401 33745.04638 17975.50937 36.01978382 4708.149618 3960.493949 2122.037094 87.83625645 10122.03166 32811.77816 4290.049466 0 42954.90387 36886.50914 7205.491361 2539.420369 276.9911892 23233.23701 57370.24451 3617.658085 18477.05721 58965.61774 10611.72429 57140.74086 459.8361835 4103.581125 28429.51901 8518.194187 0 22172.87659 23537.02143 20544.84762 757.8000008 0 8641.232018 657.083144 70236.24261 0 0 999.7616536 0 2230.429602 44019.49542 0 41460.44249 16828.348 14746.34371 49334.91407 15098.33197 34391.11352 28.99885107 5805.195008 3904.099607 0 39144.5365 0 3467.383477 2968.598201 1451.36262 33845.08118 0 7133.524858 60316.7675 172.9567922 56101.15811 10101.03762 4480.002776 0 0 1593.553133 0 46091.27102 26517.38563 0 0 3863.791216 10748.81029 22569.5254 10043.09483 7447.565074 104.1909858 29608.71548 22100.96915 25642.37657 3575.253596 22100.77551 59072.80532 1811.183106 49580.92412 65056.60614 85980.21841 1029.164509 9272.593316 0 0 74774.76664 17076.08642 0 87018.06495 1329.24221 4247.482054 3316.944799 4666.052668 0 37078.5889 21159.6002 0 27581.10733 25096.93368 0 1496.284225 3487.681569 54.32674142 43724.18378 7877.899202 1591.252933 20322.53171 28052.92618 36297.64798 0 43050.84057 0 16265.32182 4950.989147 4809.895775 0 7060.748576 0 8497.459804 0 6275.250062 52113.1409 668.1549941 0 32628.5535 32236.83176 23258.3394 15674.08194 4049.607526 28785.7658 0 1254.804482 1159.031116 2419.690842 97275.18168 509.3246339 0 0 36512.13528 0 2042.561922 15938.595 0 0 0 0 5978.35932 0 23127.54267 22080.43691 2510.317189 0 0 0 5177.610445 13833.36754 0 0 53061.71337 0 15529.23921 44.56110943 25584.99533 0 0 23557.01539 0 +0 22244.43444 0 24140.61511 8545.948773 4296.979976 40634.83552 0 33292.3697 0 0 29.07216901 4123.491518 196.2893987 0 5018.851636 0 0 26684.68342 11120.43604 0 34252.72463 23315.49994 2237.067556 5061.537631 0 0 8294.880486 3805.012715 3649.507251 54653.46354 53.83987153 14877.12195 7894.853769 17260.39206 0 0 0 0 102426.067 1582.287161 0 72787.16421 7142.222352 0 10208.4784 29725.03144 1064.395932 0 0 0 41352.60405 0 50713.32036 38607.46227 0 16571.78076 4636.437736 8791.975358 23629.72486 59572.74458 0 0 24313.34636 49848.87318 126.477884 6185.380203 59652.14362 487.2003001 0 0 0 23877.74439 5279.934908 722.5995196 5667.10888 2432.019416 19102.24699 45494.26575 37918.3632 1721.754824 29762.68606 4662.516954 3764.014748 7949.18873 10133.19531 4359.656444 42735.24162 68651.52091 0 226.9643312 0 32949.18855 33837.77892 38211.72915 1038.94404 1868.146397 36.83201647 4317.779728 15094.22608 63.77567683 144.4571124 2244.800647 10152.2824 51838.84223 40006.17142 0 279.0448109 6693.870667 38063.31512 0 8264.373323 12.39517891 1637.949131 1875.323014 2100.660964 2.017089238 0 18452.13791 0 75231.9142 0 18346.18894 2614.975161 11549.68721 94.61224914 13518.38708 0 7524.989154 52094.38878 97710.22033 5923.023323 6477.429051 1254.485482 14214.54889 38865.60956 4092.321826 26782.21794 1598.48053 7065.857904 0 59020.96308 43897.54324 17720.54952 882.9839475 2559.395885 844.7440721 4256.104431 158.3284604 6924.222575 2946.466609 29000.42762 0 2498.764841 36255.9107 28831.73598 0 14703.69031 1269.360452 4400.478638 2547.448658 0.001075416311 0 0 4908.969796 26125.70647 1348.431956 4897.639194 6930.754554 6168.362195 9750.132396 188.9304054 9.015104477 0 50841.5154 56148.31802 15824.23338 0 4690.373087 0 7104.610157 1430.063837 24645.696 7225.251151 0 2156.129712 21043.78833 21085.63912 8975.227609 25066.8161 10591.56261 0 11624.71932 27013.42298 4499.46217 16632.26707 23830.30961 155.9162019 52279.71315 3206.653745 0 26764.75308 4846.726269 52053.98589 3308.132241 8361.23359 9491.096778 102.0246891 222.3903029 5125.606759 1.567593734e-06 7772.868078 0 4450.034068 13779.36059 0 1895.666628 33725.70387 12187.59026 0 10961.20859 5033.068398 33738.25446 43907.86595 44147.23858 33997.80037 48953.42597 33154.85684 7179.647503 7249.093848 0 0 7320.935134 1179.001387 0 0 36121.26764 317.4697604 3379.33896 22943.9042 0 0 0 438.0379528 25659.28892 0 0 15175.63181 27.91557492 43079.75334 9757.876884 0 0 28553.61747 0 0 33052.23632 46.18205282 4068.236107 1773.540747 17222.42103 357.4768485 8683.253084 0 537.8136835 17983.24345 312.0026391 0 0 3609.542633 0 1.829594508e-09 12035.56374 0 689.1740621 0 0 8358.805374 4326.623877 77.72397348 18321.07984 0 44.96039513 4.952601903 7249.946177 0 29428.99682 0 10019.56486 86.43617494 153.0682807 0 44139.22138 327.1635048 2573.410225 130.0515482 0 0 36908.10148 26209.19584 +0 12774.51098 0 4191.18989 0 0 0 12764.31677 0 11677.24225 0 0 0 0 0 7392.820172 0 47277.5152 264.7519399 0 12670.2816 6008.216459 45.63031425 0 57751.65191 19074.14292 16362.7558 791.7424121 1.258042248 0 33637.47103 977.6842872 11174.50885 1657.72455 0 7865.184872 46627.34768 29301.64473 4278.053644 14697.44377 0 63.33262736 547.2039944 2302.764987 20108.5595 6468.036273 12153.8645 22478.02529 55305.73951 6848.228886 0 0 7529.839695 547.7545101 0 0 0 0 16045.08107 40735.98581 5790.443865 21189.30699 65121.53699 6597.110795 8930.085635 5815.351589 11362.7315 14315.36483 4221.206544 0 31817.06479 1669.375464 42116.28856 0 1540.491928 8683.791919 0 23560.79086 102.3475518 0 0 31080.40466 4272.054403 0 22469.47493 0 6.143667459e-05 21512.63113 0 36697.29309 0 0 18854.35218 11811.16234 3766.106061 3964.432359 43950.30231 0 112.9197665 39151.57533 54816.24638 36171.62475 50624.94471 14515.50211 45987.37232 19065.68364 1370.509192 4926.640613 245.9478848 8129.082421 63428.27946 5792.066933 2651.950931 14384.88316 611.7952822 24958.683 1033.761814 2255.29147 144.0559779 33002.40253 22611.3678 30998.85904 96380.62437 24568.92147 34594.12781 6710.100089 4950.749036 6.942079243 58381.25848 39616.657 25469.53408 3869.342372 8.428163534 77738.67832 55844.05352 3235.018872 4675.107505 34903.87252 1808.01819 1484.156573 13161.86483 1264.162767 17710.9598 599.4998963 2647.967807 11923.30518 1171.805091 25023.90708 28790.09822 5410.995333 0 4691.327551 2001.44367 0 63694.55111 97.62337272 44099.39042 2174.013555 9693.018094 91929.96579 18529.28353 1991.426455 63963.93782 2979.667494 16890.52598 0 33044.22439 56798.15837 41093.32207 0 55071.81014 12698.68411 0 11594.11002 20673.97971 74.84749415 0 0 65.94225334 132.0456866 68899.87154 0 124401.0204 10107.37109 0 24455.55472 0 25126.11321 62705.87304 0 29997.84571 21976.58577 2702.821099 737.9913844 81961.29427 22776.74404 11409.81555 0 51765.65876 44025.11329 1456.079646 10698.10751 15500.91904 10748.99534 0 6087.750213 1455.49701 30130.52558 3620.585331 25196.98773 10613.36736 441.8344349 7114.467505 0.01661445058 77.05519793 0 0 0 2063.434053 0 16045.61717 4260.077915 42236.8945 38640.80916 0 0 15292.86119 15658.47952 18201.10567 0 2050.311437 11538.88223 18743.89232 4369.566341 1423.414649 0 0 0 0 35437.80913 13774.68286 0 25047.48856 0 215.301966 34310.55696 46946.65938 36071.19003 0 12660.44969 0 0 0 0 0 26079.43381 0 0 1257.591206 0 17081.90272 2.502028445 4796.156694 0 0 4793.771761 2624.464475 1314.96445 2724.602699 10531.46176 6425.190929 22085.93132 0 12172.41928 8365.938027 0 0 0 5480.113384 700.2008587 23488.31474 0 0 98.84554667 57.82027647 101.7978566 8062.114312 7280.314928 0 0 0 24403.3155 30939.33506 0 15682.67875 18942.00406 16558.17915 0 5874.593845 0 +76509.4803 0 41256.68393 0 4294.719959 0 0 24106.2113 0 13908.18443 47.2309136 4350.930717 15834.77379 0 4431.645364 1878.265487 53339.83161 9484.064525 1771.366037 0 0 0.09816594214 19850.77024 53876.62096 7916.467941 25444.84917 0 0 62387.49093 505.1975132 0 6754.71014 0 47.41973298 0 34160.3483 23782.22806 20073.70992 0 9131.479008 0 0 208.385811 3207.697285 0 0 20462.74474 36507.85811 0 0 11502.2608 0 1872.575696 0 0 3427.54848 14840.40411 0 0 20474.42567 1.185558147e-09 4200.962259 0.5025605676 22123.92147 52843.76569 0 7523.735715 62996.31803 7490.849111 84.55831626 641.0803689 0 20935.36408 0 26732.01384 16003.91484 30081.15081 12853.16953 10249.25715 32604.19994 17181.09732 2957.298741 0 2163.713006 0 0 54980.15297 1815.022716 4534.641088 38686.18285 71287.15559 29986.45076 0 24678.80471 19556.0097 91690.15932 0 14277.45499 119079.5038 0 1089.713032 0 20.87798422 60897.5041 0 0.01210612713 27596.74993 0 32302.68013 68321.77288 59.56699317 8436.470514 119864.1643 0 4791.008317 40285.15281 0 17125.60425 28966.22055 25998.51138 1202.999001 0 0 135.6819468 13684.54893 787.0446857 0 2274.725714 2647.390406 16954.35766 0 0 14046.36338 6913.459231 62468.66422 25021.32309 53143.83174 0 9769.218157 24376.39653 0 4341.980699 13068.1568 9978.064512 151472.7335 0 5386.38638 21320.5115 24102.52953 52.52684381 0 5312.204033 5954.969892 323.019336 46123.69512 0 13454.54486 37822.41068 32539.79813 11328.49627 0 101420.0797 225.7356672 0 8796.667772 4444.783421 8865.246814 46.85339571 426.4797896 7075.123499 28735.57206 0 95059.99818 155.346953 10414.1732 18237.92513 67583.18159 3060.614813 34.94978565 21485.35968 3482.778901 5890.088847 53.51519449 0 11710.54282 1424.09953 40296.54788 69539.70846 0 0 3077.969371 12350.26059 0 0 0 47750.70843 21564.71519 20654.06773 1420.17124 23862.2215 31920.42457 13084.17068 0 0 0.0006796655652 1931.559263 13312.04595 0 12112.58172 5418.973299 0 39954.75107 19249.43618 0 0 68775.30281 320.1428204 11062.26232 9989.394735 5325.718573 38063.98133 23271.37676 3088.178904 30520.8197 8602.472718 0 16333.56833 4965.396084 5399.923484 31815.48788 26172.88146 22102.78107 2917.810644 19902.34726 12005.99337 38063.11917 9166.885591 0 0 8028.188555 7374.440678 32011.8639 35520.16196 3532.831261 0.001116374213 10272.40802 5098.600537 0 40677.90824 2318.798547 0 0 0 9879.070313 542.8147174 0 18691.44623 2795.750686 10027.7869 0 95.78238546 4264.978615 2379.520717 0 2777.927503 0 0 37.17384231 2359.519414 9653.320986 18854.19264 84.40592626 0 12.58580916 0 95.2238579 8354.385387 6321.187447 45979.92925 0 111.2018276 25475.68332 34223.63755 20050.02191 1127.794894 13952.24057 7.809784146 4162.855588 6813.927892 0 0 15493.14255 91726.55603 0 53071.56129 0 101109.1051 78216.18413 20301.54562 0 +0 0 4556.032511 0 58416.36456 0 3502.324161 0 3.159082823 0 15402.52433 5909.271416 8466.283853 0 0 33654.52522 4015.898302 4601.71404 22033.15614 0.0310466256 0 509.6426635 22409.96969 11563.53145 10654.06996 20509.5667 0 0 17783.18547 9746.045568 0 0 0 0 253.2439535 301.310713 0 0 77746.66628 1135.164186 22921.78439 0 0 189.668323 0 9700.794979 0 29089.06176 56166.41388 26.17243121 0 15532.44115 7810.319833 0.1923424327 6268.208838 6886.92305 0 0 0 11493.50221 9704.072605 0 31169.23168 7750.471881 5088.329951 0 42809.25974 100529.5807 0 32437.49724 32728.54953 27.04886724 27030.86118 0 0 2664.575199 17938.53319 39531.86693 37512.49317 7058.232494 343.412826 0 72755.02596 0 14178.56425 48953.72376 7366.847173 0 63437.42695 0 35797.05464 34472.64605 33713.10611 8156.264175 4251.577337 74684.89489 1965.944263 55930.45282 0.1676297937 1379.053972 0 68852.9194 0 1247.016803 11248.7091 57.00679534 0 0 1083.801407 0 2305.20906 23123.40819 0 26362.07389 2539.748326 0 19275.46325 0 42949.06387 9531.301837 17325.9317 20779.25958 202.9418457 53.41184221 0 53403.92877 819.9368917 23901.57924 0 5237.364999 5789.139759 76568.43237 13465.00276 0 0 26919.5426 30065.57609 2177.657704 79644.23786 8938.809963 14334.94178 0 0 0 5484.466468 0 48.25843616 42481.42795 0 0 11146.3018 8100.022169 1541.249188 65718.03419 0 7126.954139 18349.95293 41054.17891 255.4076018 39027.01644 0 0 22739.88593 27882.80951 42450.9521 65369.70996 53704.14513 49556.05317 0 44323.40381 49773.90473 2654.57364 3699.855527 336.335641 3001.584916 30932.07222 24873.6264 24647.26693 4806.730585 5029.320389 30828.7051 5312.229651 6264.340218 33182.31775 1629.726565 21376.06366 3729.607941 10050.84894 49540.72268 40.68260658 12977.98448 6999.18227 9126.545387 8996.548092 14420.14543 11230.33239 0 0 9711.669495 1109.985205 2010.688763 6056.246 36872.92426 28874.04614 0 0 2796.106303 1538.82893 6676.411154 24680.6403 70219.79907 69329.7287 17886.14797 17775.20364 2157.97729 534.2553895 9041.530345 193.8292324 0 0 0 311.8534361 14421.0519 0.005951858983 25928.02958 54745.78446 64874.89992 0 0 31503.41861 1277.042315 14054.72104 7963.247922 0 0 4667.149507 16182.57547 27265.07435 32.59244873 86253.45325 10110.01749 6784.284222 0 3294.357004 405.9667343 0 0 71374.79594 27372.22774 30317.72705 16929.51035 13242.39535 153.5783759 1893.681517 22973.04413 16216.42501 0 7469.491743 19609.46383 77886.09382 0 25328.06978 0 0 0 26827.75519 10552.80452 65073.48395 23.30585595 6573.234712 28502.28959 16180.43943 10298.66448 0 10258.739 38200.14531 29434.63287 9562.783687 16495.01932 38794.95494 3782.324024 0 2591.798489 930.9907666 15838.41655 20636.7842 6018.328424 0 2571.769802 3324.079234 629.5864631 3521.844603 57484.34992 56558.4405 36107.55989 0 143.7677053 3675.26998 2994.776228 0 +18286.62375 4008.393111 0 0 27316.25197 7907.838162 11209.05855 9784.465871 0 54.05582732 0 0 0 20953.50849 0 25907.51086 16069.97735 5494.424444 19279.91017 9749.8452 4755.74446 8802.144265 0 23510.87392 9488.545606 0 0 26324.42791 8336.383917 1538.623659 0 0 237.1925314 601.6555473 31958.1685 1072.136366 10538.03653 5141.756196 19078.8593 11806.91228 18415.20284 0 1093.740413 74306.96595 29885.34762 19895.5114 1284.160194 192.641403 0.001222164135 23472.87086 13518.38303 0 0 22496.09808 3390.080992 18612.7096 0 52915.64899 3.297551375 20484.46924 70.1370483 7885.391028 3057.890197 0 22367.95961 0 22092.54771 17404.02291 30.41992717 56107.69059 0 0 53516.33834 4715.967944 0 2799.135292 7363.529602 60420.89428 3134.301399 2739.963004 1025.509077 29025.85093 18191.32472 10558.02284 3192.897964 0 48863.51527 73981.26314 0 84386.40491 15.28285749 40128.28554 32816.66264 6394.638726 24282.11526 0 20849.02335 14529.91029 22408.91026 0 258.0352622 14267.70909 0 25431.28462 18119.89311 5618.443235 19255.68751 0 49447.11303 11158.20485 4832.04638 17999.18652 11821.89683 58521.06435 95032.95147 27531.03707 0.06489341537 3649.604592 66349.92209 14581.90149 0 130033.8129 6626.719903 4685.981482 4533.677224 17429.1549 0 18360.29909 27998.54991 35217.36645 0 2.025265417e-07 8537.815918 0 26313.77873 36187.07036 3257.059747 0.06921189321 9345.266286 219.7184415 0 56504.83782 61488.11503 0 4216.776406 9475.311555 18198.45015 41144.08813 62716.2114 12248.78991 0 0 27005.81516 16210.42335 68107.93837 16404.83074 25921.42812 0 43211.13722 32224.86251 0 73411.78719 18150.0435 0 21975.96881 5334.921016 2069.861962 3628.627523 18128.07438 2830.456751 235.8133457 0 3844.467726 31159.8944 1.65038801 27042.3142 60093.59589 38318.30268 6811.200983 18533.52312 2887.726671 2427.296532 2599.598066 23772.40735 34238.22741 0 5046.21519 1002.630064 1866.581224 0 8956.862835 115.8257731 10380.68751 35199.60589 1920.784822 20502.06019 0 46449.65457 8076.473979 16845.7992 5299.087835 1967.971378 18248.84762 14050.2609 42493.78682 1102.282889 8295.231228 31202.84496 7265.253432 18094.88251 37087.44206 492.971147 163.7698722 0 40845.12501 171.1679228 12217.01026 3948.536306 21806.78436 12710.19699 21783.45427 7262.668577 49315.42295 44077.21007 28775.51453 13098.32445 37195.317 449.7415144 8006.97444 52.53525599 52616.5192 2027.188566 13171.07288 24014.98008 0 37194.41396 60199.95714 0 1573.853617 15852.53189 58973.14679 0 6608.23794 0 0 0 0 25679.89246 0 5920.28176 21177.32841 685.2591802 2103.070214 730.5148634 0 157.282436 1650.922056 39504.69159 16516.0778 517.3108548 0 5920.193439 19410.97564 0 0 0 1.18578864e-16 20156.45049 3383.406318 2077.853534 285.8744402 0 862.1423292 10466.07939 0 5528.626526 0 0 0 0 15775.78196 0 15101.65715 0 0 34857.09834 0 3552.43395 4366.103591 0 0 0 0 156.9700786 172.9798952 0 0 0 0 0 +0 27656.68785 463.400621 1864.136164 162.8566117 0 0 0 6082.591753 268.7781826 2250.061292 0 13016.80979 134.4602803 327.3319124 0 0 0 18980.12693 2401.888735 175.623094 11047.56371 0.03423308895 28975.642 3434.052347 2249.458153 0 0 10716.70016 0 19785.91276 12125.46988 0 30.75993035 0 4279.964258 5401.238796 0 17252.55954 1415.164901 3466.052895 2202.642385 40.69724009 0 248.9114623 40138.14774 9710.315416 0 0 0 0 0 9239.919952 22784.86282 0 1669.947587 2335.154737 0 0 33761.1942 16951.14729 26418.42306 3131.774072 27243.93234 3470.559628 0 9980.838018 7105.017113 14501.15543 73052.74794 19968.37654 0 5319.131328 64617.26626 7755.021039 77373.2898 0 0 8515.133237 7654.664995 1039.645504 19204.62782 0 53662.90105 6019.023935 6563.105018 0 0 128287.6249 0 6988.627189 43955.79025 31860.8015 21884.65769 62081.40339 11050.73289 59194.31227 3675.784957 7333.396811 132.8532608 48606.92033 37406.85023 18189.94346 13398.64168 2995.811391 35730.4241 4416.10697 13212.72626 2661.429049 31042.58242 0 657.3417187 98688.33802 24499.26236 19969.41737 0 3782.886424 372.214573 7795.135895 114.1141991 104.9828529 29487.967 53362.55416 0 0 16512.31594 0 16326.36424 277.2915618 0 15380.40472 4322.860417 0 0 16195.71496 0 58421.33969 12458.85795 8054.927494 25008.37436 4701.703541 1925.871411 69703.66392 12389.21442 4986.947845 75278.04412 13035.47336 4933.60946 0 25.07685346 14547.94579 3335.161779 22111.28006 35857.7511 61157.221 35201.98763 1873.273121 54270.75558 2480.579838 46709.99393 69535.84281 1161.385532 72805.92843 2568.606961 0 0 12925.83197 75029.20796 12850.01283 458.7137132 80189.76836 5593.309743 9797.086428 15590.68744 43523.49764 97076.19255 20104.19323 33272.19521 17834.51917 0 523.9384316 0 647.3574221 6456.156381 0 47096.84198 0 0 6147.625681 2847.944571 12914.83313 46702.16815 46613.75628 3712.096522 3505.473232 56706.7333 0 40.62645363 519.2843998 1806.993457 24909.84706 58861.94996 32958.35091 9359.19895 31562.24907 1285.523633 41220.72116 21557.83406 38.7945907 11138.36463 0 0 1407.231748 8719.485512 4310.977245 8810.595101 339.8775013 287.6864883 16578.63122 0 6330.037229 3897.49639 25139.88719 552.7459748 26471.57765 29699.22702 0 81088.89591 3791.749375 6477.499208 0 47072.13644 15312.83098 9493.421682 21362.59217 37.31078368 0 7006.79688 31929.41612 29938.39242 2032.740678 5484.499588 51588.40611 4786.829103 638.0398085 0 39678.926 12851.712 6152.253716 6683.447244 16841.08303 3245.39894 0 29630.1776 0 71316.82065 17208.48767 1246.093796 0 16787.2832 0 111.0875244 19782.98081 27410.4994 4153.05647 838.3670812 56610.326 0 0 0 72.20048004 9132.144969 4275.042675 3916.320263 32550.7346 9220.054363 425.4013497 29111.88682 34898.99947 0 28237.81212 12637.55615 1389.550022 0 4248.479894 163.2917715 625.955434 5918.104679 174.077857 26.56843798 31668.43669 0 0 2705.094026 36.01748341 0 213.278395 3589.269172 2112.810908 998.4928075 +19330.915 5830.873331 3339.032811 18105.06381 2959.51004 757.8772558 1944.558133 37084.97274 6568.870829 0 5390.240475 0 0 19909.38747 14493.68158 3580.337584 8406.453017 0 23791.39041 0 0 28783.31622 38503.10746 0 342.2467675 0 1580.473191 15707.88309 80359.59346 0 0 35091.91204 31695.99217 8369.621463 0 2226.058084 0 16995.25515 0.03177961367 22324.11646 0 12416.49043 12560.80085 20950.3206 5.952299448e-08 22055.35661 0 1921.444316 16075.06035 17704.60097 3178.342355 0 198.0121018 0 18574.79897 8088.184853 0 0 60374.88472 6314.244519 0 27698.40897 0 4010.091868 0 4535.536826 27139.89148 68995.03364 1139.481706 168.2982986 111.5959628 0 0 16451.71356 1281.75409 0 0 29232.73376 2806.595893 0.002180700189 0 38409.76598 561.1981787 3700.87987 8682.167306 0 59258.17617 48760.34537 10229.87479 1197.44934 1382.078431 3068.302481 993.4411614 0 542.6992874 0 41628.49999 150.1955038 61683.28626 3232.463824 15372.26937 30963.81767 31415.01733 22489.69353 18496.15425 17014.23705 3250.132255 29485.91092 0 1699.948988 3863.76821 0 41125.79369 0 0 27338.63603 15295.02633 161.3068596 435.1044846 32985.59951 47319.82687 46646.42954 24681.55426 499.8396756 6587.455239 392.33768 51538.07138 41004.52646 7548.349614 0 12406.44089 0 0.3426065213 0 8357.341549 5770.496733 3023.428126 0 689.7284913 12662.4786 0 36232.73599 15595.76183 5360.318876 6.188040704e-06 0 30297.42208 46623.54314 54564.10671 11291.4685 33977.55833 73678.6816 457.6539371 0 8166.000025 6892.680822 66253.76005 0 53784.57191 5859.054214 15639.25314 4674.201849 1670.819583 13494.29787 12141.90697 3894.879461 21567.11935 0 63766.53328 5127.802167 65143.37433 0 10249.91367 29236.78696 0 46122.56895 18848.4599 8509.674547 0 3749.5534 28695.41254 6531.345246 0 134.218625 38957.41087 4040.860236 0 4138.434678 24370.81945 1198.091423 35473.92569 45.95727373 1856.456383 74.68101268 3146.994217 7937.325216 13238.81449 90760.05942 6470.106359 7277.49661 4252.884103 7861.272387 12178.60836 30417.50983 28205.50859 0 9269.894528 75316.41071 2509.175229 0 7894.028362 23458.12275 3836.198126 18129.69411 0 20942.35186 0 62888.71178 35916.31784 268.3081145 18716.81843 0 214.0334069 30511.3168 2958.134098 0 0 6489.388933 261.9073992 7246.810492 0 8623.059472 8.613720057e-12 3071.206614 5851.235719 0 50225.21367 17456.9982 43988.75644 4656.351103 22460.33486 8859.926014 159.4525476 15291.66169 10669.49463 6945.235749 4515.692229 0 47253.80133 7505.130563 3749.40436 54343.87341 22744.04995 7845.265737 5809.534266 2053.8104 3323.386727 18025.13707 9196.313338 39323.18165 0 20578.98333 3601.936463 39.65659622 209.2030957 5562.286369 5124.910473 910.2641832 0 0 50479.83837 32.21767415 0 0 0 63.10232263 5734.496627 196.080571 8192.236263 0 19330.40549 0 0 0 1900.766422 0 7254.23599 322.2045869 35441.70856 2180.95711 10716.85211 0 12851.21125 1966.376948 8502.997286 293.1607725 0 0 1599.855072 0 +20432.86652 429.6334401 420.1156114 841.3039707 0.02713030694 3679.58841 26307.42662 9452.603635 0 0 2904.988581 12163.49464 0 10781.48622 11289.84195 0 595.1094451 13500.72434 8241.206833 18974.58773 41400.99869 15185.16397 0 95400.45826 0 7651.407947 5635.473473 0 6803.952498 438.5010931 15441.33311 2160.681672 0 69859.96334 62249.64301 18665.48909 7470.81285 8123.207606 1914.996619 0 207.8558364 11834.63601 47621.05357 19341.27387 0 0 0 124.685572 13297.52063 3687.43926 0 12313.72779 0 66547.63505 382.8257045 0 31.4342027 0 0.005092143599 12841.59423 3957.95326 37656.85281 13967.22987 66.03683455 13131.98892 5545.972683 206.5512105 1632.379057 0 4689.456072 8541.201024 0 39.26309749 23457.21901 245.6769748 44.45145844 0 31645.014 4274.699934 30638.7399 7496.09432 121913.9757 0 200.8040979 0 0 246.2877559 0 5354.409041 81.41668348 36731.125 56167.91043 14560.61272 57266.45847 29414.41781 0 8320.752521 52516.06319 1034.52154 23558.90267 3912.2893 1106.613062 67960.22413 7268.563817 15459.20368 0 2095.326232 24529.46905 4996.673284 16917.60172 3524.832705 30654.3469 35.75014063 0 5542.149659 40708.16618 48615.41067 77954.64464 31571.22155 24257.18312 17545.15229 4798.424239 3549.043998 24130.43935 139.1808838 47313.82343 12684.77885 40952.9996 3127.538739 0 10046.13482 0 13632.84945 17623.21231 9895.822188 19620.90952 11255.19279 0 46636.9815 52572.68728 29749.52027 46563.00797 2289.738347 0 851.6909565 13043.71429 0 4987.028868 60291.97416 25026.25392 2059.915385 6069.912691 5456.155546 5044.275248 43838.42544 0 70107.98505 0 5699.574748 9450.617493 50448.13305 534.5123629 15547.4075 0 6081.447995 4640.951121 7402.66541 4127.441733 8552.86032 2541.873474 34855.45026 3970.214201 36762.89426 56449.11125 4798.243591 15298.01038 213.4554094 20410.20565 1614.756676 13748.53511 27910.2908 45180.06294 14146.01113 212.2186495 70748.33482 0 0 34282.85052 1749.064956 1868.641452 0 8.124523264 1041.003504 3557.516289 66245.59586 6194.405262 16614.04706 0 26181.9828 3209.194525 0 35698.85695 26820.33139 44.54160418 0 1099.968917 0 0 2123.710777 34772.11178 21779.02444 3579.70039 23506.80779 292.7626793 10833.7343 0 0 3.316820559 25341.74344 0 18348.20501 547.7098207 0 7391.236905 0 0 0 0 38565.94671 5009.28663 0 32942.95612 0 6816.46283 8646.876794 0 24299.63464 8557.479911 26303.17004 0 3915.695027 40.81667683 1374.47706 9.100564076e-07 5939.09605 1936.787364 0 96.76128552 16378.16579 0 29616.54456 18854.41999 2122.021779 31.16337526 0 2213.341039 4155.13454 36014.18186 82633.96876 0 4781.024433 1375.723921 3499.342177 71924.27867 1688.465856 0 2803.476476 6816.063533 22246.04868 0 24870.54364 0 6055.603454 5069.308103 10697.89019 814.5219604 665.3176842 0 141.1480435 0 0 0 317.0056201 22244.36025 17740.25082 21754.6526 13414.45276 26995.53874 0 153.049548 0 8421.071329 3446.890426 0 31533.77527 0 0 48.17095933 968.7210904 26730.74298 +0 0 2435.406413 51826.1747 0 0 0 0 7728.639725 11060.29014 0 35.98704519 15591.00173 430.2321551 54011.541 29802.22152 0 962.635147 0 88790.277 0 22285.12855 240.7902588 42020.93055 3426.8559 27264.31325 220.148385 0 0 22927.02019 824.7524017 0 821.0602297 0 0 0 19373.57612 22895.45442 46029.71835 0 16617.95905 2956.952571 24570.02122 2138.312761 2064.20047 7718.902055 0 0.4071168214 0 0 21420.27797 39492.95338 7268.451039 2000.360162 11955.62585 26042.77717 5601.695557 0 0 2452.654137 9485.026307 83285.51921 6897.919254 1164.614168 0 16504.08921 74718.13081 1087.277225 23537.74672 0 310.7940097 8229.909761 36952.25696 13480.28664 0 28383.84909 45529.60083 0 20066.63952 49355.4031 327.8583605 3600.816395 4485.84245 0 587.2336647 81506.52868 40466.53996 67126.05488 2037.970443 1878.193646 0.06012421833 19113.17559 1434.173094 8054.939769 85533.52249 22834.00629 91347.39468 6627.591422 11346.60756 9386.86854 21071.8633 28243.40259 1240.012765 16616.1201 2082.807396 0 0 21845.14427 12109.05679 14.54574862 45982.16193 50797.12898 17308.43665 2687.096159 1838.774576 3083.56244 28574.67041 29867.70284 13700.40172 11330.02008 23108.17251 0 4825.357905 0 681.6172493 68873.33391 74038.45448 0 20590.61489 24411.60628 8800.110265 0 541.4918856 0 0 12130.75954 20887.86275 23073.15868 3602.562535 18380.9472 0 22852.87343 33246.09015 29941.46902 29833.27522 41355.11514 2870.729594 32422.94255 17824.99921 10425.33687 2409.486949 36727.43293 19477.33316 9740.867212 0 41997.71969 40126.71236 3016.341747 0 72727.88206 0 0 60552.99754 66746.79776 13524.38753 2064.52355 44414.55874 5131.682043 739.9127297 11116.80256 0 0 11100.81255 4247.110615 28376.45232 14879.17538 39128.26003 24750.10171 9569.154306 47085.75685 26480.05272 2849.771583 43146.64452 9435.175112 0 0 14502.5093 0 22674.93339 3943.307846 12338.08963 0 5817.577058 4209.867978 28117.56921 11393.30144 12506.4963 0 16667.32852 33969.79567 13967.39912 11170.68175 7.003067367e-08 28955.69576 0 1755.186465 0 2932.007433 3298.743085 0 0 2687.778584 0 6960.927539 17306.63617 10981.56281 71988.29397 0 6606.878372 7171.009992 260.6223287 5418.596483 12008.83544 40900.22542 28822.77345 24489.47943 30700.67869 1724.835204 9391.149943 9371.514693 0 29099.3607 5411.584247 107827.0449 13651.13012 9581.267205 0.003439149037 6937.177359 0 8489.219496 8.002390987e-11 0 28559.33194 0 607.6670824 0 63660.7054 0 15229.83445 316.9393496 10.26854562 0 3711.562281 2715.890856 1243.371207 10414.45279 244.2151922 39.92914583 0 136.3522905 0 27641.05518 0 6138.188069 27780.82123 3679.778586 8397.46602 0 0 0 1620.586081 310.9024737 35609.00913 0 310.0488341 74.76350552 0 0 234.7848002 0 27664.65768 52692.14397 0 0 0 41653.90413 4786.927063 26706.52625 0 8152.559218 9847.244485 0 0 2858.431425 14756.66428 35.02063805 0.5960540623 0 26741.0713 7754.482342 +0 55525.96559 4240.49981 4691.627763 0 0 551.0471137 33167.14923 0 24413.88919 0 0 29.79001687 24703.33546 0 566.1714055 54649.01754 27226.68403 3943.782804 0 44280.62911 0 0 32200.23257 47376.36071 6271.477152 2494.095573 16121.23191 0 888.389111 16924.90658 0 849.6907102 10460.74236 288.478737 1854.169652 50056.71759 0 0 73070.57856 0 26192.85896 15128.16236 333.37843 6836.820167 15726.0539 502.5526303 5091.867573 12037.22644 0 0 97.93147692 169.0043336 1346.539002 3236.856179 0 0 25519.5259 12453.079 11356.31967 8778.02099 6751.404758 737.5856944 2167.964894 83786.53285 0 0 30338.92191 42917.71736 23624.55962 35169.67367 0 27894.49775 30637.67637 40044.27497 20423.30994 3360.50849 0 3449.899546 250.6336674 4421.995726 3587.265131 0 5851.194662 0 66507.65035 4752.769248 0 44961.70089 0 89148.29073 36.41496226 57262.22641 1814.293948 0 789.9385285 18489.71331 0 0 13025.55309 40750.48822 36275.01395 5769.57978 11181.27382 23555.9819 7411.558024 155.0802329 2548.12222 1708.590329 37981.06959 10721.71138 0 7819.576528 33536.76824 1616.833783 2637.864901 5940.769396 22563.02928 35367.18422 1133.315107 5495.807051 2464.082974 29076.49857 1032.172589 29592.79221 11.47568417 0 29623.238 12362.59276 6725.229475 0 3343.322175 28908.72568 9653.985127 28488.20972 0 3536.69409 0 3450.099012 1031.963859 17671.13268 0 87256.6167 7479.939535 0 0 34468.67147 0 178.7806553 5180.55222 0 45076.34637 21643.88172 29754.02738 1522.133237 51351.29183 51860.34777 1543.694615 7195.798787 364.6872105 8530.110588 16269.75752 2173.567728 556.4535726 0.749892066 4252.381927 15.04215824 31565.02219 107444.1297 11830.6874 0 41802.02428 42732.80931 41076.01439 332.2066806 6038.792762 6758.434895 12253.74765 25818.88133 372.2881055 35666.75403 12262.08659 2891.145132 0 33890.6592 17364.73476 36560.56778 0 38459.56963 71252.008 3835.167381 51441.96383 10652.49543 57854.88883 1806.645141 3877.844366 242.5777679 22959.97279 1701.546457 6611.581748 6966.421658 0 0 3230.005296 42397.63375 0 3.37603111e-07 4225.942315 11447.64442 58915.5968 30206.9864 196.6026681 1035.331163 4867.801534 6895.988234 49292.91948 20098.3446 8485.652367 63304.65923 2034.133592 39265.36678 0 1687.036226 9413.440985 28668.59752 0 14999.26929 29052.32273 2128.11657 0 42484.4133 4695.633148 118.5227639 30212.72073 2805.332146 63397.30293 164.3796454 3772.639291 0 3490.666217 1281.653162 0 68.23840873 4082.490543 0 12538.34129 0 29535.58695 25618.94834 4834.318127 12791.72715 0 22920.71227 84616.43361 68620.98638 57.40819059 43545.91211 22489.86946 8022.754524 114836.6987 0 7913.24023 3589.260463 46429.56755 12518.24582 0 12049.22177 0 0 17609.59225 0 2572.214219 3007.846984 0 0 3406.04856 0 19101.60662 5534.340279 0 4918.636123 0 39482.3964 0 127.4821684 25718.05117 21084.60279 0 0 2321.136161 0 0 2026.212488 5940.496589 7102.488199 0 15206.4126 0 4901.599334 518.2764456 +0 51689.66236 0 30357.12197 2784.597027 2306.007528 2985.453535 30788.08691 3675.070963 1855.036346 84.38114859 462.5600558 1914.605557 0 798.4509565 0 0 2508.310296 21647.65939 13304.81334 26901.67854 1271.881391 0 3868.047602 0 0 615.5082487 25931.88063 11575.13114 5769.323995 1887.893617 2880.268956 2062.884468 4.605808006 45405.694 12390.31089 0 71290.72037 18057.29191 0 231.4194236 1958.024767 3692.489006 19746.33769 8574.396235 0 0 5697.731538 3140.962656 25684.99318 0 0 0 7988.237066 0 0 6429.394783 2285.463643 49474.63497 4872.646799 21257.83339 0 5266.649263 0 17411.94814 0 21072.61924 65820.53058 1891.736462 1406.287926 0 4.0515195 0 0 60288.50928 4005.999019 55069.03889 2713.715837 178.8283141 4159.179621 10568.5642 0 2031.944845 41561.8896 3708.545881 185.9041079 20422.90251 0 23014.18144 22470.16679 0 170.4828299 11529.16764 2006.938784 24619.97796 90079.92573 8445.0665 0 14992.64477 45768.7608 0 33744.76311 43338.49204 0 3527.710716 43.45598945 12780.94585 71335.17718 131850.7651 42018.10819 14737.5088 0 4054.787031 6161.787072 37924.9079 13333.9062 27700.21014 7.239195082e-05 25632.3658 16986.69266 0 5466.045452 19273.25482 3909.807773 2827.555937 0 111785.9038 447.9780424 23495.31024 43263.84626 13036.40658 13336.14406 5934.367996 0 52539.17471 235.0172968 15376.45314 44735.19523 0 11017.96704 56247.24197 11293.36088 60411.80366 2119.59942 0 115377.9373 24772.48117 0 11452.04245 39197.97001 492.4237376 0 47590.77733 0 68388.35758 22239.73005 15838.85592 4633.097227 0.3009760289 7502.35417 5987.708239 21686.03146 41277.69158 9020.754945 10831.69632 13234.01714 6548.298384 0 15038.99989 30306.09491 66266.15487 50201.37276 21378.67693 2524.300506 1762.385907 46760.01682 2018.833752 92343.96058 0 61687.3245 18066.3302 36361.50168 23424.41472 73506.32948 0 16374.72864 107.859173 56387.86241 3335.234286 0.6683328011 4476.68951 9034.841312 18751.55188 42.24152127 0 3046.593029 2728.571218 11656.71733 4931.514891 13885.50571 0 26456.46192 20181.46067 27140.98696 0 570.6224362 0 55075.78819 682.577681 45674.63092 15677.00201 12513.26509 43077.87265 0 60789.89575 0 27163.35717 46484.56736 0 3536.875062 184.1973705 37136.6666 28542.99909 0 900.348482 12460.9552 9333.314823 29447.23873 0 0 1005.421689 4906.759465 14.78631358 54183.45401 8206.956408 2.25236321 3499.732583 93.55761342 0 4537.526862 211.1319691 130.0823446 12461.18861 77901.58146 3108.374792 23448.982 36323.93995 7180.066787 0 0 23868.04992 45428.12992 13.03926007 15400.66885 0 1523.08076 461.5910508 0 0 291.7203248 45592.4286 10956.27872 0 0 66405.98986 1461.903651 3401.836634 49758.88449 69826.77435 19200.36108 2882.344468 8197.134315 18933.53107 15522.46265 0.01450348224 0 5918.966032 1679.239859 11031.7256 0 0 161.8366069 39.42864947 0 0 6861.867898 0 28256.54115 0 29811.10722 2195.823274 7752.741184 12923.86041 8778.729944 25328.87586 0 0 1823.944355 145.419175 14779.72486 +44931.63259 3626.708423 5710.198132 0 0 92451.43962 0 0 47464.2104 0 3033.808044 0 48945.40056 7449.274637 61877.59424 164.6501376 45003.15516 38.94134771 172.7211555 215.5511728 0 0 62746.21224 326.4195061 0 12761.08161 3662.485215 0 0 41092.64196 0 0 5697.312286 12817.71204 2418.943793 0 0 19603.2608 23461.39689 20285.81028 22806.86502 8479.468636 0 42520.77129 20927.25849 11070.37567 15718.45991 7636.616011 7933.924439 0 52932.96967 2549.980214 86665.59024 9975.606769 0 0 12023.21636 651.7245527 76.77742124 135.8506046 0 0 0 3376.243782 7779.223157 0 10022.34013 0 21087.22739 45020.78308 39149.6492 9953.009266 43198.35851 0 192.0037734 8792.51923 0 23990.3967 2.847525324e-09 48800.48773 24.61167134 3059.353333 41949.21463 34814.44737 0 103.160576 13706.88373 714.4328317 56.45900747 36200.50106 8904.775998 39292.72057 0 2221.738179 11209.9839 286.2334139 0 0 21536.0583 2080.059652 8147.496481 2571.051466 34817.62109 2325.436433 7319.576703 36371.46622 12470.02913 8169.385384 8106.48185 627.1216668 1713.867889 0 152.1715768 4785.20786 400.3064535 11747.48374 29249.53691 18697.51213 26937.31052 53737.15846 181.0045336 0 3660.441872 264.9094442 33434.54426 36424.54342 3004.380151 5704.576139 37563.14015 55042.88387 1590.640121 18681.90156 19487.54327 330.1553646 80.8430771 20627.40478 3839.31675 9345.533478 123.5187954 11148.56461 1633.724158 58388.8782 6720.29603 17488.17801 5138.441354 9870.888336 56.22803237 1909.930749 25772.95384 0 33969.77142 88467.62165 0 11316.30657 7724.996681 3376.127699 1488.810444 17097.08041 35152.66435 33924.15891 4775.601357 260.5061736 690.013121 5785.894378 0 82620.09537 10312.82489 9405.942234 22332.17227 8859.635166 28995.74516 4923.287217 44276.86173 1321.73772 15.51815389 69261.79113 0 0 18133.0923 3606.299052 79239.02106 0 0 0 0 55441.86246 26491.09974 5001.871071 40587.67837 0 867.8596753 2211.314667 0 0 9769.755048 1081.328535 38719.80589 10816.98887 24562.64821 44491.18405 0 13757.97879 20164.5319 14285.26562 0 6214.551083 735.0670233 3124.490101 32897.59012 8893.600923 50860.24212 290.4789172 54869.72129 1962.657334 1027.464861 54656.87686 112688.0283 16117.64636 0 4100.672587 1972.995305 6336.850729 111.0724693 20077.67982 10191.12237 4395.11335 35267.95134 302.3138712 44286.70026 0 0 5020.816727 33920.83964 14663.85126 76.73004425 2550.452674 8787.670855 0 0 33348.04622 178.6270564 6308.291319 4925.635525 7049.774354 94.71573964 0 0 13114.44451 3403.62608 117.4367314 18328.65039 0 0 41923.89111 6059.769068 840.375656 6769.182906 0 156.9914254 0 3763.670493 15313.30916 4407.444735 7059.909851 25922.09086 6.706081088 0 3247.992743 13754.74989 0 1693.287351 0.01455040846 18522.72146 0 0 13369.31984 127.3589459 12675.83567 0 23459.77862 0 0 17336.97584 0 2556.223335 13634.46881 10062.97982 5865.50291 17610.60745 0 0 1973.939812 21749.89235 2445.531827 28151.30338 0 0 0 33377.95521 19.95074928 +0.1071460554 0 0 0 0 347.09871 4310.376171 10410.03676 20186.01584 0 10619.37543 53790.49257 0 23658.89203 17057.56953 28553.40524 1033.376286 3059.208274 1281.688888 3990.682739 0 0 3765.696818 154.8222681 6139.388618 0 79777.69284 10436.46441 0 0 0 0 35652.60994 58.71936825 6659.70839 0 8443.179349 18824.41104 15143.30511 36704.12033 8825.240173 1120.721018 209.224619 40442.68596 0 17108.49562 0 0 5519.104384 2483.540332 24987.13161 31579.40562 0 5109.899957 0 9576.305229 20695.78514 43353.4776 0 26591.10815 0 0 2.592475962 25290.84401 22709.62009 600.4308166 29583.70541 2798.636768 36583.65819 5867.948956 29943.26239 33485.34577 8093.850907 2310.751295 0 18811.76164 7177.972733 56839.21598 312.2420441 54962.8414 0.1613960371 34381.42974 0 2902.22061 0 6274.53053 23405.78812 90263.05004 0 12145.16581 101106.7901 0 0 41953.99826 106.6523623 4262.870132 9565.565618 0 15589.79212 2.146625202e-08 38196.23513 6599.027832 4320.842222 24581.16059 13397.98251 0 8664.295011 23.26315154 4343.853581 5167.77864 0 14555.28628 9239.013503 12185.78113 82103.3878 2051.250584 57758.01144 3178.55598 3845.522184 10187.32895 16139.50459 29440.48124 1356.116691 0 10023.61292 107071.174 4546.500402 77.07344153 285.5898596 8555.659504 1921.880916 9359.980208 4050.104889 1437.014051 1164.647128 27439.54754 0 19142.13895 29670.28927 7444.293261 789.7563 34.35943789 29904.76781 23241.55591 9883.724238 11852.56717 39235.50075 24636.59911 77223.81694 4535.311365 0 16961.93951 16427.44684 258.4575947 6706.617431 0 10216.30567 3664.659909 1220.987056 8427.155353 4008.469753 0 0 0.04668478583 39557.25224 499.0905272 0 13660.71654 6470.009147 57001.80662 3377.527924 2347.035757 18812.84188 45716.40117 8411.092202 0 19344.46354 0 13917.91704 0.4668113418 1205.389435 1935.82028 34411.62225 3436.100957 0 0 14394.50048 7636.842956 45511.70269 39191.29841 0 3.358226804e-09 3944.969782 7329.856185 24239.23841 5331.422599 0 17240.90482 0 0 0 1087.569711 31525.65693 0 7456.82169 72646.36385 0 0 0 0 0 2565.81732 2144.887571 0 282.9473506 4.985839434e-06 168312.3942 0 62856.78015 12097.93714 33056.15817 4071.565288 4304.340653 5747.680943 8991.598263 21425.88555 28.46110684 19710.9139 62349.14864 5641.537048 11910.9918 0 0.2484838757 0 0 3994.121462 45891.75644 83972.92643 50543.54996 16642.14515 31462.03438 0 357.5006589 0 0 0 9861.986231 0 0 0 3301.111097 7099.861414 1166.322377 0 0 39480.80707 3763.552538 0 0 0 0 40409.78509 2225.588441 6771.615234 132.1344085 0 291.7016613 702.4747647 2623.768155 28644.96025 14513.25612 23632.12558 0 29415.89235 0 0 0 15379.42335 55100.72946 9650.938976 6077.620788 6061.103664 0 0.01605543246 5152.756428 29860.43589 22430.31803 36430.89908 0 8463.607112 0 2089.094175 13690.83303 0 6289.586228 23805.56312 56337.79461 0 0 19122.98406 +0 11766.11883 0 5007.189952 77944.005 0 0.3246956302 0 0 190.0247514 1286.555998 29960.86907 0 0 0 4.796027156e-08 0 0 23834.28341 3987.669404 55880.10452 18126.07947 0.7304454995 0 7.677399406e-08 17575.7341 40.39533372 5379.97944 3.291418873e-08 2.415125443 1752.806378 36988.30402 3603.816302 0 7573.80052 33470.60206 6842.085854 12138.46938 0 8235.626248 9136.453982 1922.986525 0 0 3516.963409 660.6900048 8327.460627 89.06850411 0 0 2394.866918 1354.454811 2135.994246 0 0 275.1121621 0 12125.48169 0 0 19159.82669 55126.06977 1811.780074 14452.089 12397.67027 0 0 0 48021.28707 13883.66439 0 0 0 20488.87683 1504.53784 4506.235379 0 0 17330.68543 100530.8036 0 2435.732693 43778.03703 0 8.308797533e-12 24517.22824 64665.86034 8543.135709 0 30847.08467 49.87638231 89473.85306 28212.68347 0 0 26169.26127 18381.22493 45335.76103 17195.5455 41550.98526 13566.06053 36054.52019 11419.44838 11328.6145 21811.90755 25.8590899 371.7832187 0 0 5237.131 19553.98995 0 3289.558087 10712.62855 131286.6315 1.700029963e-10 0 0 1638.89187 10941.14578 2319.052474 10775.88334 30115.37376 3537.813107 0 0 23173.80892 0 6672.778033 5696.044589 0 27979.40379 0 26546.78579 7447.873399 0 37538.40926 12597.7441 2876.24146 4533.148284 885.4989581 0 56.0068238 0 33085.38186 0 0 3084.389584 0 40047.04524 0 3628.444932 48803.79001 0 0.2326351241 15037.99372 2808.854036 27807.0863 2541.840824 37438.58367 1463.985507 1262.377662 26463.97783 83.53517856 275.7758177 1997.003227 0 61855.92803 2378.727979 31945.02305 80.34110228 0 0 14938.26686 23139.59051 1570.51428 47300.56069 23307.27156 23707.12669 19538.39434 0 12653.09787 45064.31475 3984.773666 0 4288.617457 40923.30502 129385.5241 5825.810539 9633.29632 42727.48936 10178.16794 1552.655352 0 61217.45187 21086.48365 39138.24257 2711.895015 0 337.9957678 17754.55396 31221.21698 9881.609252 1384.45749 52346.76112 22799.03435 24282.59401 44730.98023 40.28761743 10549.41159 76.93813578 0 4510.801255 23890.5866 33161.02431 39221.13252 43738.82653 228.882995 352.3506326 0 14353.61966 0 4645.420127 0 394.2642841 17054.09775 27134.61224 1854.932541 0 23.46182565 46197.39845 14055.57452 42889.78422 24077.46323 13011.42915 409.7954976 4176.625998 2465.965352 1.432810459 8667.634732 0 4803.833279 3401.116502 35542.06361 2935.513361 19910.64323 3760.676122 51868.51346 0 7498.127681 26811.15645 0 12833.42218 7051.272967 6664.278093 30.73444973 10009.21735 9484.269457 0 23919.15681 2569.011956 22221.08379 0 34205.35803 20196.04181 33950.74199 0 0 28794.16397 1124.585193 36164.95895 1381.318912 6908.578709 23870.21823 3185.084285 35021.52013 7209.95967 0 65042.98751 0 231.1615276 22881.74153 5409.658436 0 0 45.17631117 7224.860853 44389.55751 456.675087 14418.12008 22618.75278 24114.08385 0 0 0 7789.89249 0 0 0 61497.44503 +0 0 2054.824535 0 14930.94849 17378.73831 0 0 58.21449478 10052.04307 7727.110962 0 8075.246283 0 7824.429355 20763.75073 0 16778.15692 0 18652.53798 4550.700199 0 10139.04298 3949.862672 0 0 22477.87291 0 0 0 5302.908365 15529.04498 21425.48004 0 5454.513323 0 6788.371671 0 10034.47606 262.068691 0 3397.239915 25393.52779 0 0 8839.42451 45332.35038 0 76623.69734 13191.09399 6261.902187 0 215.121249 0 29776.38041 276.8625468 0 55926.38903 9847.026665 0 0 0 0 9204.887741 27097.58882 73319.16658 2117.453131 7274.908331 2608.712812 2174.818788 5484.603193 4352.972138 45447.23826 78.11133515 55297.46216 45249.86833 64526.12965 20283.71382 0 0 17350.6562 0 64359.24664 62203.81308 3241.010794 0 39192.53727 29489.52027 27186.44502 4770.970651 0 16765.02572 14258.328 6146.825106 0 80216.82727 2437.755042 37668.05167 36776.22738 0 133628.3826 0 5976.696624 34368.38581 65752.40164 54201.11946 10329.74176 0 53811.84076 38284.2908 4632.580683 0 24736.33146 2622.645979 35181.4468 10626.27028 15233.50628 2711.264052 5203.952127 9449.066688 5195.767916 0 23331.78675 0 0 31891.56271 25614.06242 9901.274693 8846.722877 13421.7158 2206.416231 856.4192632 39436.98643 26.17983874 14829.624 23647.44189 0 14072.14622 71892.96424 47606.87884 329.6606364 11088.14323 14954.87632 69482.99219 160617.6559 3127.48116 164.752156 11649.59184 9132.256989 0.01964858459 3742.582832 676.8372411 79430.17606 47380.99788 2568.642814 7266.16279 0 0 60.99682524 47991.16155 51404.0237 8988.387798 19280.51313 46401.85175 443.6580227 6976.448239 1162.704846 4717.058283 73466.09669 0.4038936901 42498.30347 3758.847705 1681.556681 0 41032.34599 18935.80284 19541.01197 1344.783467 17719.7988 8620.223867 46085.43649 1494.852051 0 2227.31138 39739.27136 44580.73733 58675.54326 35.7161946 10223.9347 12312.56399 5196.186152 56617.98703 246.1981437 0 17.0297174 5895.002202 132.7284907 23557.82724 33823.4213 361.4330658 32751.11982 15974.94519 76267.42486 4266.282288 66521.55256 6793.142963 130.6959303 2044.827857 27108.23894 17089.8933 44530.57804 26772.75241 0 25649.03437 2516.345782 0 615.9164988 0 0 0 23303.33222 38661.14914 0 11952.8203 0 256.9413504 3929.858383 45295.26912 3979.884288 9232.653973 28135.10554 0 0 3431.00602 0.001533174696 40883.32723 1936.137967 4813.037134 3.022593033e-05 15448.3693 0 56328.65981 1988.384499 1934.436622 12597.21481 0 1510.037815 1598.688771 0 774.4662731 0 3051.120945 5276.094344 0 2943.913878 1457.999999 0 301.4946345 246.8746441 7284.233576 12149.38703 0 139.6980957 6651.103616 46.5075485 30666.31675 0 29.88783392 0 37919.12498 32496.36455 57.7896491 21368.09423 25904.74998 1742.93258 4789.352041 0 0 0 31932.18029 458.3543422 1485.787102 58599.58971 22582.07824 0 0 155.1032744 11704.55148 0.133212029 0 0 0 614.5050762 32286.09013 0 0 0 0 0 7416.983643 +65868.34564 1022.585155 884.2088932 15444.36733 0 0 0 2392.810259 0 0 0 29350.46271 0 61467.09294 42521.97506 84.33513734 0.9054783691 15216.23699 0 4109.996845 16197.95703 182.986037 0 0 25315.1971 0 6381.710005 8259.59777 32094.33787 0 1180.927195 6954.637151 22201.48753 0 0 0 641.9605659 3501.426536 0 4773.384479 15146.37756 2220.787801 11606.97166 27086.78164 2631.697594 4456.95594 46264.1053 5923.481949 34651.03921 4022.297709 181.9967516 2306.359747 44589.87633 46965.76177 1769.820238 10927.77445 3243.632558 0 0 12186.85415 4221.617956 38640.52956 7901.881019 21320.329 90848.80355 1069.313416 47.74884962 54953.57889 0 0 533.7152308 214.0639745 0 67213.98508 46107.49574 13978.14908 3274.06838 62464.13721 1326.853589 6085.477333 44981.64733 8963.205232 20133.60413 376.3234035 0 22889.09033 10297.98993 330.1050073 34326.2361 101.1147725 39690.82061 4777.524827 0 36140.68938 8811.526163 1390.320183 34802.85249 19991.08781 0 0 0 19573.14327 0.0177288034 0 0 17283.3227 25477.03279 0 28005.80974 0 33784.66211 984.8479852 0 33008.76154 6895.068023 14843.6396 0 6886.695274 0 22654.13928 46732.42054 53546.93375 74753.43016 64151.97106 1114.169484 4467.010058 5522.210066 580.4422882 0 12402.08076 0 155.4137781 5153.681909 0 40486.35852 3988.47182 6836.162552 2835.59586 4972.268338 82713.03119 0 15490.49341 182.2471117 75041.79005 24488.52981 52153.23666 0 0 7268.323256 13947.81968 8442.481609 569.4553287 12083.88949 3718.253375 10248.37693 0 15011.72463 2.344362711 0 0 75407.77683 46020.00894 84873.20029 29104.71683 6721.832473 337.8385896 34031.51357 61471.11941 16056.3477 16156.67797 20631.93487 13782.5773 0 455.1071251 0 81.91859315 28885.14887 3476.567366 0 959.5421845 3998.914858 4624.492137 2187.423002 598.8301733 0 56014.00658 0 7260.846169 70303.73285 2296.931033 0 14937.50296 9642.894116 16988.42774 70711.05944 3055.179014 7473.342226 9311.931295 614.2426401 48268.65524 3984.782 90.27515665 28459.46161 13828.53194 14501.41762 2666.591416 21893.67091 0 103.816443 0 80.25410032 22054.76818 0.004825271075 34.83736222 1205.162501 17454.83793 0 3189.959755 20551.21343 0 0 2130.799138 838.4845839 22746.89388 50983.66499 2191.938741 2.879719669e-12 18191.32934 0 651.6892347 13339.54616 0 8529.052295 8179.587763 0 54775.29347 0 1508.78377 56815.14138 671.5794882 0 19311.96093 0 115.6889072 0 14668.64529 85522.80194 0 6948.379399 86.18980017 1716.155352 0 100.2913006 204.843741 40859.84 876.6969223 0 0 3.615147466 2165.762759 144.7153366 6537.896982 0 9569.633292 5093.823701 40.58654385 18792.71211 0 1864.92814 22014.71125 9400.825379 0 0 4995.65911 81128.9667 2606.502961 43961.16432 0 0 3221.716012 1653.207494 0 612.3875738 31.73343885 32834.8697 0 0 3319.080769 0 2898.178382 0 0 66805.94017 4479.697196 0 62.15796601 9310.75763 6850.706502 0 0 +0 10011.77275 28199.04737 13162.77554 22930.65976 0 17501.33948 0 19362.54586 0 0 0 0.03170517678 3369.448984 0 0 1848.927423 595.6947869 0 31400.64968 0 14293.55812 22221.99571 18351.57889 10232.46729 0 0 0 47543.05674 8846.128974 29367.16989 47.6326635 60957.24935 7613.599625 0 25190.58482 9192.597664 0 0 13031.49666 3749.322375 0 1153.597608 9275.510176 0 4417.206129 28515.78848 0 0 169.2421206 17144.13456 117.0358565 0 46.26814258 13950.84202 1849.867461 0 61518.53772 7529.247644 9244.448881 0 33201.46123 37.06686895 10355.53786 7606.743507 74748.53428 12042.78647 49796.99984 0 15402.1703 9337.669967 18355.2306 0 25408.45331 240.015222 3.027643272 0 5737.385197 9135.531778 27297.6822 663.81341 10616.63996 27342.25568 0 0 674.3985146 43574.89528 32991.03754 1.599632442 15665.42212 33827.46725 0 0 0 57913.83788 5310.552905 11935.79434 8736.783972 0 1599.105109 52389.72437 55963.27384 24961.49592 13279.11206 32904.27115 7848.034131 0 2684.149136 0 43473.42366 0 10641.53289 53830.01741 16223.54623 4001.965395 14234.01679 0 11672.67098 37844.14416 3378.570613 94.21461524 0 15409.11149 1103.14202 0 17177.49488 19083.03275 2176.42316 9793.458888 38283.80746 57636.32659 127.2804432 3024.416745 14544.33447 1393.997081 31868.25541 84333.75903 54244.95165 19.79754244 1.383309444e-11 22867.30433 5316.322359 49627.87816 52139.75779 8619.43571 39927.5125 17319.18677 0.00114037774 8860.321346 54311.15337 8197.5293 66.90761709 30925.54803 37980.81279 2080.003294 135.3064814 0 17973.75206 0 19390.10755 32460.86099 35706.1474 1964.173071 0 1938.253686 0 4453.693435 3503.192754 43167.43636 664.9881738 4094.192194 9704.462752 0 156.8406171 76161.61998 4844.194173 8696.558784 0 399.0119336 53564.06629 20018.9894 14056.70839 2246.01643 69579.28525 11701.54326 0 29787.61405 5533.556106 2239.091646 0 0 0 32863.4856 0 19728.03948 0 69035.95605 3587.671033 36.84812398 221.9963937 300.0333126 5696.954939 37652.74834 6108.486327 1040.796591 91021.59618 0 2314.77844 6889.846054 8784.933001 4402.049156 0 0 6629.637329 0 21099.75271 13141.55026 0 0 0 6292.840418 0 0 0 43916.49849 0 24097.84395 40503.11759 0 0 0 351.6284083 0 16477.16398 2248.25275 0 8191.812013 46662.27271 33.15527613 8.843765433 44815.58222 3773.085384 21457.52029 36666.01275 5996.183704 6886.46433 22016.87771 13100.06518 0 31865.05945 36610.58389 4020.009647 21925.1124 0 12952.27034 0 0 2502.874747 0 21067.57087 323.1143258 21650.48395 1411.790967 411.2709973 4972.454642 0 90.07550758 0 0 15042.9816 5219.880236 0 50782.66532 0 0 31970.12613 4599.131248 0 10674.69353 0 15218.41877 4045.34406 0 0 39702.37963 15899.04811 460.9224259 260.6906271 5901.393087 0 4627.238372 58288.11573 18584.71545 3742.088095 10753.78387 17025.09756 0 274.3275038 264.1104734 0 +7692.140266 166.1956822 378.2285981 0 31263.96064 0 49917.0979 0 0 5.584098207 0 5315.728078 0 2.980057121e-12 98922.90104 0 0 0 0 26722.81382 0 0 6344.467168 0 1839.078191 8326.763795 15906.92233 0 54822.56023 12437.58508 0 0 0 0 4885.060069 0 42759.86415 8248.963081 17699.14229 25.57914414 5149.262882 0 18228.92366 28046.82089 0 4282.531153 7682.826274 12680.00715 0 7820.734774 32382.78133 18157.64206 0 4009.374071 7419.761126 2372.227733 2311.797284 2972.8001 0 3600.764322 0 0 0 1958.344999 117239.2911 0 0 1987.075937 0.01758443107 11985.45479 9613.086597 106.2981406 349.6236233 627.3440109 9495.186255 106.2123503 7075.406933 15370.12585 19375.60419 5901.349326 25292.20061 0 1.182836186e-06 47179.83043 26446.32928 0 5611.108364 41.8613368 308.0915829 51461.57374 18324.99243 0 40798.04495 28828.30878 0.2742057208 34963.08504 20060.8997 356.629305 0 1582.48243 6384.872778 12366.1604 4978.805183 8827.485124 29751.53237 4669.088628 0 55615.03372 22466.13206 0 1409.075858 0 2089.46345 5769.77441 12003.13381 1.28036439 55.88369468 45454.49043 2932.762439 18541.6283 10833.38075 16789.12159 0 32215.39028 7082.307172 1036.681514 0 25.69500196 0 1567.712368 0 11985.3237 6158.274893 13858.43973 0 2158.83675 29778.85008 0 14175.082 2407.049664 5140.80911 2115.618574 0 0 40313.72559 1063.184544 66906.59619 0 34101.06435 37683.35752 0 4539.429132 9650.04377 9362.404243 273.3729133 0 0 66620.71896 46567.27997 13291.25432 32690.09836 2686.169215 2503.862496 49756.51686 29366.66304 2107.012867 0 22190.2039 9697.28815 0 8668.191765 0 12610.3764 3990.247685 25653.53947 0 1982.610025 924.0295836 0 3250.620772 189.0931216 0 80690.31802 0 9336.411082 18005.80173 58379.19324 14707.54804 44908.71836 43468.07311 710.9602076 5634.026379 744.9981789 11274.94047 8470.053159 4549.350689 10787.76628 6257.54561 790.8461674 0 0 60879.43386 0 0 12081.96287 2332.215087 15403.69304 16518.87726 778.2168662 4494.332733 26050.36931 9870.968295 2653.694444 1945.879603 52384.56918 10559.80123 0 0 3522.045916 0 5957.008333 974.5902874 4628.290212 17447.94215 33549.44824 30438.85241 16767.37611 4391.171228 0 5137.906564 19553.67231 33118.73729 7741.13156 42643.25547 8119.715388 8935.925806 0 45385.80154 0 0 0 0 28671.66049 329.2879457 2516.846324 0 1703.336064 19296.58797 11478.81159 24154.35353 36842.70444 5051.640867 0 5464.98783 2053.907005 0 99.88241151 5543.236635 11876.7805 2382.51366 0 1392.067788 4759.477248 2231.824319 18266.07324 4574.355567 2656.930344 0 0 0 4045.887402 0 0 7998.051518 13931.39931 37124.5154 0 12721.95151 0 1626.358606 0 0 5762.600507 166.4077691 0 0 74.33041557 0 9155.661265 12494.67092 0 64.61049663 0 71.27234494 6320.791859 51046.16749 0 13876.95119 2523.501564 0 +5206.349969 8953.266731 0 0 32639.33716 26754.12061 0 6415.060614 4913.078289 0 48232.50635 30987.89195 31841.32112 6548.736674 0 29723.93124 5846.706065 0 0.1608483261 32619.60576 48645.36469 23980.82339 13868.74217 15649.63628 11999.27298 14754.47499 8107.470464 40590.91663 42058.29542 920.0476919 0 0 0 261.0975112 0 0 0 42086.12936 0 0 21702.6653 14466.83402 0 5514.09499 0 26254.15101 0 254.370912 9626.885299 0 0 2844.487774 39704.18901 28401.1976 107987.1243 33811.26533 38384.5965 1908.617911 0 819.9368191 10236.67403 0 20600.87871 256.6817126 30653.80989 0 63058.48577 4169.21257 0 7616.400504 24085.91417 39800.00786 2027.807023 50893.46011 7129.672357 14310.00235 11473.11331 59191.14489 1081.888413 2946.682142 0 0 0 67606.32448 59.93970899 34572.38265 3841.79653 0 0 4852.467949 0 17980.05603 57763.03573 17033.81928 17238.63871 22271.00883 32325.52972 37546.9396 5613.306443 21345.96088 109682.1867 14502.94436 51761.78443 3057.628613 0 29033.23533 4057.438327 34398.50252 4115.02899 19849.48802 4269.893133 25493.81789 21958.4987 11303.17857 18053.25828 0 1.192772572 0 58590.21891 8122.485198 5663.509234 29624.00001 35178.37629 520.5640609 58064.00506 9321.746151 23870.03216 2778.065336 0 55366.2335 32184.84896 70794.09608 0 32137.80775 3870.900902 1.304302301 0 1349.782766 0 133.701181 39220.9867 866.1201001 7020.993926 14434.44558 0 0 48405.40056 2443.552037 38452.27967 39057.8709 21387.14253 52990.46644 11.43594646 3807.951186 18282.37136 0 0 15106.30965 13087.5359 1567.925028 31881.80493 42590.23832 0 23694.11613 25134.69557 0 0 29315.90008 0 3023.016925 29232.84585 61085.57919 27135.55551 11126.47075 5509.065132 46665.07533 17126.32513 3545.019453 37067.39551 0 62169.54561 260.2496143 331.0113205 39985.16085 18089.19838 66.1440867 42882.67652 6327.760264 32.13681812 14599.07925 7115.185157 0 68364.49733 3407.478606 0 1147.330889 43648.9884 0 2173.449079 1826.720244 0 42791.81626 41400.6653 1118.677548 101.4109269 52331.35812 14166.11417 10453.3639 59045.86846 3393.61259 26014.57061 3044.396101 1114.022104 0.2141048064 303.1111025 2738.47609 8911.218785 0 52200.54615 0 4347.213831 0 0 0 14083.93543 11321.04995 0 17581.76118 0 1328.903213 0 0 66062.4497 0 31457.49394 16189.72778 714.3819741 73475.78943 39862.51816 0 63095.41473 2183.35169 0 424.3206299 0 15294.13843 2094.744497 1304.970657 9834.129677 0 122.5170992 0 1748.857889 8574.578313 7372.186023 16291.28294 0 0 79218.27208 18418.86208 297.4229809 3292.289638 0 2454.597199 40911.78637 0 33500.5193 0 0 0 1935.238982 2063.088141 0 202.0951884 0 264.4925087 2467.660973 0 0 0 0 83.30243102 31070.73541 0 7245.660909 3184.802754 757.6380642 2961.737869 8992.883693 503.1453818 0 5751.572419 0 16023.79618 0 4326.208227 4955.30641 0 5683.261707 26200.42459 +0 0 19512.31357 48437.78147 0 0 2522.110536 356.8477944 37580.54763 30380.44122 0.0009559252283 6364.871633 5620.071286 1161.483195 263.4771431 231.7967938 2430.817728 0 0 7597.114073 0 0 0 9190.044904 38934.48138 2354.122915 0 0.0004154646027 0 31537.69861 0 16345.95883 447.8494968 29065.28565 48083.07128 66744.23921 1820.600339 0 3150.541819 288.740443 0 0 0 19589.88824 0 7348.918033 11224.35845 24727.74074 1536.182256 0 12676.08762 43149.07998 1230.348428 0 19526.61634 0 163.5989334 6860.199047 0 15218.54401 6086.240178 58785.30081 7716.977934 6524.693809 0 0 0 5625.198272 0 17093.72415 19818.28786 21847.04334 3266.30539 14566.816 13312.66566 51192.6431 0 15883.00835 511.6731215 0 36976.511 1126.648699 35487.43381 5456.326834 21361.56847 0 12288.49753 29372.03076 20885.28846 0 35079.42967 14961.89033 8780.341927 0 1170.097628 41706.104 0 5456.882126 7278.353091 1927.107229 9686.663892 2495.24299 3584.468181 55698.49404 337.2679918 22432.46989 22407.80002 16916.00923 0 36776.14601 44823.52031 1830.53425 31998.78116 9646.272651 4871.929985 0 2307.691997 1752.75415 43930.4499 12377.28237 18282.50403 68143.22132 0 2629.904106 28399.59935 39292.95034 20281.5595 8940.175933 13712.77904 10992.82558 0 88618.55266 28782.12393 27327.54085 3461.259156 0 38186.37048 26974.245 10519.83391 0 0 4160.689763 16075.08912 30556.75915 1184.581067 0 0 4405.386132 2515.495256 322.0533313 5566.971027 2746.969245 7337.233011 0.8323348886 1786.501116 790.1752563 19223.54353 35719.322 40802.45427 45652.07619 42700.28699 43334.37493 3505.315235 32348.3684 15040.21686 588.0500409 43077.9085 54525.4899 0 9907.004023 21606.20761 11371.2067 0 0.009526498754 60716.34607 0 6873.926121 45907.93314 139935.5383 3096.569051 93040.9567 9536.63599 18809.94655 76.91488301 5706.038305 49387.38205 27905.00003 7806.471927 14252.42676 3236.200311 35853.73501 20398.17866 3973.779362 383.1227497 33.28499624 98146.61829 2548.524225 16259.06041 1104.138319 9576.672467 11850.0777 22139.0591 48649.38218 11063.99904 8653.085311 0 12677.11969 0 9072.681356 44164.34969 116793.2459 41063.7445 267.9214186 0 0 0 28961.20549 67624.89046 5.457455332e-09 1708.544648 10877.64498 26.15240942 5361.101874 22191.44904 15482.03568 0 0 86738.78993 24899.92632 0 8474.271703 1936.534188 0 114.5237293 0 24501.59097 176.975352 15019.24501 47959.01995 11108.90781 4538.082838 0 10541.80089 1350.818657 3161.759031 68435.29809 0 2907.446446 0 2000.82506 0.5842976052 0 18485.2568 264.7030566 26.32354448 0 3158.477133 14484.60812 28346.64761 4664.276888 9953.965563 0 36274.912 3473.693042 11924.2664 13682.48161 47252.62841 193.9252319 0 0 13957.96881 8857.362366 56639.705 35486.17647 0 3628.608095 36959.68091 7111.664858 0 0 2662.723084 12741.38392 33502.64787 1867.403716 28042.13435 0 134.4009543 0 0 52744.24986 46342.0041 4449.478244 0 161.5144323 28646.8537 45398.44662 0 15016.01168 0 395.426034 +0 0 0 33048.54472 59061.89118 1144.089118 0 1004.869811 0 0 8944.310739 3065.191302 6035.776874 0 1080.896908 59.50836718 0 24808.88688 51813.63466 2448.745566 0 2684.260204 0 0 21758.83834 1.646304071e-11 7610.009134 57176.48381 3977.811123 132.1096898 24638.68241 4376.142035 7990.415965 0 12.10362851 8964.829115 4881.255667 23795.13527 32565.9111 0 144.4886049 7665.499569 1557.459949 14702.51939 0 681.483706 0 8978.293744 0 0 2403.31434 0 0 0 30206.07896 20437.33404 0 78092.73689 0 299.7198602 276.9999621 2489.61043 20578.60193 1399.181769 41507.864 44079.16221 144.0549421 0 5650.098762 43484.38885 0 0 4772.947251 28475.55126 4322.831674 3044.24121 28707.42709 70181.17032 24938.32567 15336.15489 41056.5145 0 2945.572933 101367.4248 62821.88024 5455.266924 12346.46632 3595.796031 58208.52616 64.11873899 28037.48092 65.28349616 108.8788246 39894.38433 3170.841445 0 72311.40256 2824.74947 14372.10061 33.83523243 1222.315659 86479.77154 0 0 25910.09174 32672.21446 2366.507155 37421.06086 0 3635.367205 45117.24868 4715.403743 12347.37517 80999.35354 1437.962733 8440.748778 7259.268153 10199.50156 2524.491121 6916.291118 6384.861725 1036.234218 35442.80815 2966.946048 4857.614171 49380.8018 238.5470072 4898.091225 25016.36628 40296.14732 15456.22238 3978.515894 49829.89164 10302.49844 0 34325.68557 984.0270563 0 4437.300821 3179.191619 0 0 0 18497.37098 16.38493585 32212.01343 0 59238.69175 7709.134174 0 0 54763.32362 6588.13669 0 12392.8101 1635.541512 5625.469597 5475.011826 18656.5513 95.36717771 0 48087.1885 5848.055195 3219.56479 25337.17269 1753.194665 1847.905952 13087.71986 19355.87987 9469.889865 8493.897989 2564.726882 16480.71618 10363.55299 206.589511 2350.858855 54765.20109 7390.517234 0 5169.946834 5188.466554 26797.52042 5263.126345 31436.05374 34272.97382 0 3702.952221 12842.7804 8884.320016 12059.57932 24670.38714 271.5355544 12491.7413 22780.16068 33191.67597 41096.26628 11914.7513 31826.95794 13762.4241 173.7105326 10060.01096 125.9168914 5961.543751 7024.337052 5731.422919 0 5114.018568 0 3351.095545 16305.38033 0 33458.36254 7375.771626 25550.73653 0 20.67498624 21543.45722 0 28838.86832 46562.18508 45687.09013 1.451013407 0 3490.965659 35785.34505 5070.707935 0 0 2844.330946 303.7830886 18224.01009 42297.46206 460.4760883 64.76637752 15120.81775 0 4593.57468 115.7309373 1950.58755 19561.86842 12021.19294 0 4741.665186 2262.857682 69.75698471 6894.816748 9.9794061e-09 0 26411.76568 15957.63872 120.8428625 11831.30477 0 0 9959.282306 26066.90556 0 0 1171.269617 12077.11847 17425.65058 29854.54118 0 2341.155315 20993.76358 6.434661152e-06 41603.24711 0 0 2590.791579 0 0 0 0 17.07660441 15289.81621 33037.00986 30233.44584 0 4161.061366 14609.71135 0 2255.88089 4944.914894 346.913095 0 10.49720705 13694.06588 6825.668851 22221.16992 3955.776969 22030.19596 0 0 0 0 1047.523774 4472.751203 2169.359956 0 +11178.49138 3125.56743 0 1701.013284 19156.23942 7377.242331 29583.76891 65.66981912 5312.078954 44782.78356 87.07468086 0 0 0 2132.082777 2913.267467 13848.55961 2269.973603 4848.070552 0 7520.236761 1083.206553 93826.35551 0 4670.633505 0 99.99338748 8775.991165 4275.191865 0 14679.83696 30889.3412 8372.509723 3813.683166 0 5469.818741 1477.856539 36947.62568 11328.53496 436.8187369 1.948563695e-05 0 16715.42077 26278.09184 0 0 37321.85148 2431.498301 34633.00304 135.916205 0 25595.69704 16008.59405 1.539716646 40511.40545 99.62971655 8484.480316 4978.676667 4047.160727 559.2807215 5304.836905 20319.1607 0 29743.78113 1964.84573 6249.222794 1529.771682 409.5207949 1330.290953 7603.940132 0 347.6450085 10468.64934 16554.08216 0 102.0527436 4338.77262 0 93514.92186 69144.12056 12804.42263 4880.544579 880.1765965 431.6288602 312.5018771 4257.374227 7373.213173 12587.10435 0 22524.69185 8292.038923 14143.99221 0 1816.322709 15010.80022 1504.396085 222.0509093 26160.84836 30643.50002 0 0 615.2910629 0 51001.06026 4327.344856 7423.39198 0 6442.09361 59732.84083 0 0 1181.407594 14791.69159 24150.54087 78982.35053 280.3209182 0 17864.2222 105820.4812 14848.54812 136.023604 48141.1302 0 7529.281281 7800.806971 5686.868687 9900.663265 24192.63656 2577.546871 10875.16542 5301.600315 16114.57913 30123.0526 5972.929789 26287.19971 8805.651188 100.6971025 0 6329.868952 49892.08131 25182.67068 0 1114.69067 10058.07658 57296.34033 154.3334736 978.4768824 0 72756.83182 2783.086873 2.895318862e-11 56087.83382 27701.15177 0 51123.93198 16030.71365 15352.08531 823.3785053 0 1565.712101 4492.128319 32969.13148 0.01613678405 644.6666665 5880.719276 0 656.8529111 3129.789323 48697.92234 1325.861008 25742.32215 6894.318883 0 0.02574134146 31659.62786 0 40538.26226 13818.35257 0 34846.02934 488.6164015 650.8635144 26882.43184 387.3284178 5511.932274 964.5756331 50804.12468 0 0 7286.143815 0 0 10820.55432 2183.412812 27282.16379 16315.60668 0 2096.595045 10910.44397 502.365701 0 88869.82961 18885.59136 1072.946038 32573.66014 21131.0683 11245.20229 0 165.7739479 209.578454 0 267.7529599 31158.75738 40893.52575 94.66300362 8211.569775 2500.041318 0 23618.37623 43467.39483 72969.52901 0 2149.527797 2366.394339 17163.45012 0 1569.194616 1328.492459 1253.838906 0 10448.41093 33.25132473 74.87731232 339.2250382 0 0 263.8481396 0 41565.39367 5237.597436 4462.29301 0.01201883559 67384.36557 4757.820013 36944.46376 141.1702291 38016.15902 38377.76952 0 0 887.1325421 25682.32584 15201.0374 9.464800517 1609.863075 22640.77947 1883.70078 0 837.1790782 0 0 0 0 0 4180.265532 0 3447.996389 7335.690411 2579.412386 12831.76533 0 275.8625677 193.5878254 0 0 0 9360.270389 27864.36677 22146.43181 16159.59781 0 7001.958822 22697.47402 0 0.1488591607 0 3147.143964 7866.397589 3.47587213 32281.25703 0.1838161786 4077.028703 0 14039.94517 0 14291.93165 0 0 0 4245.500589 +0 7895.774794 0 0 0 0 0 1727.211347 36342.52631 2264.822036 15376.96559 0 0 2795.435626 25722.73222 53840.75586 0 0 0 40068.08282 31826.26035 2677.302419 0 2184.269718 0 0 35273.20205 237.8729466 61003.83496 17573.67762 29117.50464 0 9557.741281 6.275553126 35774.50079 0 10465.29794 24884.59853 32011.04053 4451.850802 1.20263294 0 14581.67898 6396.388851 9401.268176 6111.448911 24423.62854 56976.06181 16997.45087 41210.73466 0 6717.964829 14717.55946 5574.536293 3335.482816 19216.215 39.12339391 2536.856933 9794.415455 44486.20481 0 31.90588568 18379.32291 0 34994.39906 24042.62324 0 55988.00569 4454.722251 4595.993724 0 3206.28119 20722.5661 16.60600183 64492.84227 0 68511.35689 41417.0447 35920.88539 1957.675496 14669.39213 133261.6443 1178.921182 229228.0001 3336.400356 3539.522405 405.2207539 25918.73264 24992.67414 26272.16128 3329.521591 47247.78977 49986.92554 25547.9517 0 24439.39427 91773.59837 50791.3802 24067.91245 706.4618368 2470.330956 31166.33375 9737.551677 131.7804408 79394.27324 52527.97593 52046.99866 18084.60819 32146.93949 11829.73564 1165.560719 0 58800.85377 165.4231121 52720.49429 0 8448.874144 4799.537496 2699.293458 16616.06329 0 19906.48105 48413.0837 1.576913786 6062.953132 31242.71294 2896.114424 6283.348274 33078.64019 73613.96849 33366.99726 9152.610734 10650.54633 21854.69854 2029.09752 54968.66891 30554.24712 4556.431486 4730.839263 7809.827802 0 19865.79931 4300.786288 4064.911117 1341.010187 44230.15473 3365.406221 0 24525.88317 128.7630106 0 6242.198395 14435.09232 2130.524249 17144.72424 1368.341692 0 7215.774399 813.1481917 3588.563971 96.67493931 0 5303.004099 0 29345.32214 3341.115676 0 310.0482201 3935.406842 55108.76623 22174.7618 0 20148.23195 663.3979529 16432.80664 133.125258 3878.802677 33304.89146 46595.34203 9974.448035 35825.55628 62379.64126 34104.75581 40358.37 1590.695493 17515.83444 89832.72127 0.316222803 338.9121338 0 35316.29448 0 6021.61016 20889.03126 3716.946671 19140.29676 15661.22487 0 35491.77037 25624.67803 445.5125081 0 0 26827.83946 35033.12086 13490.91058 15752.50161 27345.30265 2430.402161 17563.59122 0 4139.18678 11473.0786 5856.152539 6433.349034 3936.160412 14043.5753 3204.914395 4255.980612 12308.66036 6704.912621 1690.942183 0 56678.09235 8757.723934 27206.0927 570.5677585 0 3648.972676 20292.1931 12411.17255 3.00346401e-09 33191.47111 1.52300037e-05 28.19704147 6383.313574 0 65338.37891 7795.50003 0 44553.119 15914.77847 63021.02084 3510.845082 2738.142628 0 5883.395372 1776.156141 0 5046.955761 0 0 9358.383339 0 2060.693694 11320.09819 0 4791.34019 24550.24452 0 0 1757.824875 302.5192658 12698.45166 0 2727.779102 0 0 0 4977.852525 1262.909039 14950.52343 5130.837295 281.1234656 56120.42558 20904.15334 6785.388341 0 44681.1356 212.0297021 2413.026701 1860.459162 24808.33582 0 5996.081502 8907.217887 0 3692.661741 20406.13352 0 25487.41999 47784.43049 17886.09758 28941.45224 1275.610944 301.6822924 14290.30346 1652.771287 0 1334.140541 +0 359.8989194 45549.40546 0 24113.30988 0 0 0.9496520579 123.7503318 12801.00451 17086.97656 3799.532863 0 0 2.08584105e-14 0 0 0 18204.38122 146.7280909 0.5095794176 46640.42967 0 28955.78905 24246.53371 51578.96251 1725.973201 0 918.6756085 0 13935.29823 20160.51777 89539.96652 14198.98986 0 61462.19629 0 6184.334707 499.6610612 11569.23989 49154.09138 0.17173275 972.4861923 19253.23462 30764.50633 55080.47942 595.4393294 0 14223.53333 872.6848697 0 21043.21053 4344.202985 24131.34056 0 53032.03575 6499.185642 23375.04719 5368.370794 0 67702.90977 0 0 0 18207.58475 14119.59916 0 2920.537779 31333.43399 0 0 33985.30166 4218.114671 13460.68358 7977.80327 37020.3401 0 34546.19448 6051.128259 63353.91503 60178.6923 19830.10359 0 46514.62351 6183.707066 69257.96599 0 0 2143.009119 51515.18666 25050.9697 0 99219.39642 0 41432.90893 817.2412905 0 28191.2441 0 0 0 41338.58867 649.6332443 3761.658325 112740.2676 2594.529025 0 7840.291034 0 7108.057508 48484.26801 18090.87189 2647.884026 13575.9084 9481.66143 7055.648388 43596.67626 0 14807.57312 63880.24956 0 20778.32646 7178.092911 6210.612072 87618.15385 0 63.03622731 0 127.6936066 0 13936.94336 2512.87048 41156.60239 2396.815925 16452.6607 6834.856695 18204.65048 9460.06814 173.9225189 0 26916.01617 2669.337884 40889.91188 19122.82636 1871.397011 1146.183021 10638.57679 3384.45751 19094.63345 56526.36631 6539.855425 815.6600764 0 9758.237206 2325.394939 14999.6195 15741.34317 43071.48707 0 0.4234109786 3809.151898 0 0 401.7137452 35904.02662 0 13913.05254 36545.16354 41308.06827 22747.62031 14372.95013 17535.545 31756.91395 219.0408446 14268.68626 472.2713655 29131.13631 12275.10608 0 22239.03637 0 296.8962211 0 0 41850.99478 46971.4517 17956.55749 2770.327273 4742.096524 0 36.55390939 1342.356413 7992.301495 12415.18759 506.1422172 2255.790149 2010.30716 38287.96305 4.282655861 119.197963 3398.811762 48932.52706 3398.068282 60601.55651 44129.91581 48441.17988 0 38883.17958 8432.321927 2082.918188 4564.760533 34903.38842 6900.173784 0 22787.9321 0 0 2950.567551 0 15762.17674 88779.62687 2730.951426 0 0 47231.79397 21354.57485 899.1496985 0 9687.090436 5873.210307 26252.13969 201.7188642 11896.6247 2279.7796 39645.71778 22502.44025 12417.56526 5303.849728 8522.410055 5161.327424 29543.54901 1800.825835 0 0 0 25640.56838 455.7444897 16843.34715 0 3414.24924 1948.188093 8375.411433 6198.612437 0 0 17925.44448 0 2103.50811 0 0 5022.545746 5118.77726 22136.55506 9725.312157 29604.31681 100.1710076 29.25674516 115.1058842 1991.400282 3543.783863 16813.02533 34.03999613 29.93616243 0 0 17.14276254 65868.87266 0 53234.33937 5017.812578 132.5033433 1469.605223 3479.909036 2391.439058 0 10917.93884 0 5221.535705 81554.47255 0 62.41326088 17160.08756 13093.3798 0 0 6100.939485 0 12441.73456 0 0 +0 0 0 0 0 34625.06398 32894.81399 3562.96776 0 10939.40034 0 4641.399556 3374.895594 51364.28691 0 0 9394.215145 1334.98302 26574.18484 214.4357115 0 0 74194.82488 35937.45987 2150.641 0 13224.4855 27362.92655 65978.77111 38940.93184 0 1730.097406 0 108696.0433 8680.197139 16343.2595 8804.118932 19605.23835 63.36592458 2294.409643 920.505357 10150.41957 542.1684122 1252.001498 0 4023.133957 0 0 0 0 0 0 2569.446599 16716.64213 52266.68697 31545.03113 0 262.2521515 0 0 6134.551492 0 5652.141299 0 0.001072597294 57995.62168 74230.01915 18928.34203 1075.517386 20014.42704 0 11458.55418 0 17585.23386 0 42.35288617 15718.6621 0 44228.79474 4291.653388 12508.4936 778.1690365 9123.749308 8803.736402 5947.303839 1187.978272 41887.79911 8279.714076 382.8810906 13982.8937 23520.64001 262.6546202 24562.50597 1452.06139 2952.825395 7471.511045 24538.92149 14232.27168 0 0 0 23557.02719 70491.66712 8278.712685 0 8682.236672 0 0 20.82324741 55.55395143 32295.68203 1.496823388e-05 7996.50486 906.0295162 7230.54194 636.2451527 3650.588303 1682.751672 82411.84679 59758.68518 35127.7828 18079.48784 5372.177276 66651.67913 67564.34904 7663.506989 69355.46454 8179.811052 0 6479.731396 7720.575157 36257.10556 8457.164969 359.3429875 4408.633181 45055.29696 37735.73682 83402.49338 2159.782425 55167.56964 0 0 75090.89239 822.9971773 2652.95909 1048.982026 0 47651.78355 10912.05073 73640.41637 4292.273945 62338.68196 47.26822401 26763.62842 1583.222561 605.0789234 10737.7058 45344.05425 1.121541872 0 0 308.1310527 0 36105.98988 351.2464461 2467.719024 11085.3263 97.20609243 6566.449326 25477.65986 20211.43335 38595.79874 0 548.2091136 23623.55685 2765.386086 1936.311538 9766.456978 41582.34806 678.898499 25886.60738 0 13.09235323 2544.905067 0 0 26286.0489 230.6674974 0 7586.804265 0 52088.94909 0 22456.9182 3278.272923 5025.888944 727.563863 0 31319.43959 32832.09359 28092.78407 1996.51963 54014.87629 41108.76876 6049.887914 0 3960.013441 2824.508508 352.1518583 0 43412.71878 15483.92834 23326.80011 0 23627.2441 4158.254202 5584.943627 53031.21067 0 0 1832.764226 2811.626926 11550.03482 38.51652231 5418.333192 23675.35151 24680.62425 22225.96319 0 0 0 82.21712249 2816.769272 48977.27474 8712.603005 56028.38779 46131.16764 17356.69981 1404.0531 8412.866572 62.50758219 7930.131792 88.41243094 8860.750467 13786.44954 16685.86879 0 58549.63473 0 0 0 16238.74589 7137.716884 5263.416653 4661.562166 3776.437191 0 63.45628529 1608.017761 50153.49819 319.8614019 8119.296946 10188.11992 4531.495565 0 3586.913947 28696.30448 0 0 6387.276922 0 9797.402596 0 0 0 5127.654608 4691.485801 0 2585.36019 12000.33693 0 23759.46644 3641.382408 34956.4248 0 0 42.19715228 0 95.16636507 0 1868.150605 62701.30762 5882.740081 35143.93635 16763.51257 16107.24296 1805.43854 657.4896637 0 4255.911342 +7029.576248 0 0 7924.447983 0 2828.9397 0 0 126.6538474 0 0 0 30456.70367 1895.999411 0 2889.726635 1572.107719 0 0 32987.98917 6715.205115 5540.969464 0 0 7526.967183 56521.6711 0 2.61209534e-06 30711.51845 2558.640844 6490.064273 0 15263.49592 4937.202843 5825.314758 306.2893484 49311.99686 12890.90717 0 4539.830427 86618.10899 4453.898873 0 325.1407698 296.3098897 0 0 0 14778.27007 17974.63718 1946.370203 20982.26031 46413.07151 4379.202073 895.459557 18126.20092 0 505.8645881 5112.463524 15975.36035 7298.221946 23514.73017 36491.91249 0.0003067161704 35032.27996 5857.815154 0 17037.373 0 0 0 44.51869129 20279.33014 2595.943554 278.3851069 17378.08235 8909.439536 0 25019.81315 0 0 10974.65729 0 2593.578808 11698.22251 23155.34909 35919.30021 85917.28338 4131.674839 35419.96737 15716.98389 0 0 28135.03153 38986.19567 0 49368.21137 0 0 32987.33016 20947.37186 5512.270462 3983.890498 67304.73366 0 0 261.5821179 10675.06676 0 52795.29839 33227.95685 423.3617231 445.6343966 41331.18658 3391.556477 0 15.31311024 0 3360.507094 55896.05211 0 28870.9056 159.3104465 0 807.9667866 35619.4833 0 14378.70409 468.4121733 9430.607673 164.5295036 55008.00647 0 125.0914844 94.72938432 0 0 0 12983.84579 53.87539123 24590.94533 0 138232.1236 42113.51175 0 0 38594.99457 49133.02545 5231.547475 9708.828645 16330.44885 29602.38324 0 77192.72248 24123.53919 6126.262099 40987.78611 7742.453986 14675.16789 53738.06365 10554.23814 3453.672133 44684.72135 5871.834106 7600.916913 0 2530.118001 6484.966625 37362.54904 35973.47035 0 13257.64459 37048.94419 5424.204032 115.6556618 18157.7829 93859.26643 14812.86268 0 16174.57487 0 7452.602159 8123.976103 5160.356048 0 8540.290354 0 0 0 13747.8643 0 28998.05101 21.79536729 2787.280985 13596.83206 12451.24871 100.5341641 2.915234916e-09 2236.160508 2239.018507 5406.601703 10101.0541 28508.95262 45.2825114 19458.99717 0 36466.02798 53534.17027 2225.01511 11950.26865 520.1600483 5931.47834 2429.511436 0 91610.28077 230.4751247 0 11799.67793 21470.19028 3014.682457 251.1135474 45776.90148 25069.00314 0 4114.343441 33380.42081 3219.257718 0 0 0 1972.251379 0 13739.11474 276.2238306 14550.11671 44572.66726 57.26462006 0 0 15650.56691 76.96218239 3255.833329 1403.311686 0 4744.43781 29721.05002 0 0 58868.36459 14635.78139 8227.512422 0 64635.03099 190.5364106 0 10801.11281 2002.586167 11117.12363 0 74209.72663 2322.877979 0 10185.22394 0 72.23912438 5728.649679 1243.321313 4400.333969 236.1076962 4692.370924 615.0105958 1564.938031 41742.37014 0 2907.907454 4880.318485 32951.04017 0 3803.520772 0 0 4429.766807 0 0 0 10965.88726 13932.30476 8737.270315 177.2178924 0 0 12354.31815 0 0 623.949123 4366.880233 0 0 0 0 +0 37779.52942 2540.704188 1170.427615 600.2589898 1392.159335 0 49086.44289 6099.450157 7913.064386 0 50522.06149 59564.41355 1396.275284 2317.618062 55163.79899 1439.739226 3103.499167 0 0 6466.441043 0 0 3734.410038 21648.36434 2329.119185 28018.27618 0 0 365.1895402 1760.622254 42678.9483 0 0 1509.62148 70806.38837 5249.55274 26589.51006 2425.119083 2118.688949 5724.734061 7354.912247 5899.984782 0 0 4388.149261 296.6444419 3597.418127 0 6075.106857 2360.482987 5243.269242 0 17608.64799 34159.83613 0 0 261.436473 114.7633723 2012.068376 0 19961.59988 35655.19728 0 1385.091042 8395.055956 9445.976056 0 0 2405.566236 0 187.8926121 72988.949 4818.435026 17368.45756 24405.72575 53809.6398 4487.110624 68.57446022 0 33607.57019 12988.49816 1137.744019 23670.67864 108.264904 6859.785971 58423.12367 1201.837729 24860.26501 1489.978477 19452.85643 29403.68405 26909.76706 0 34268.67275 26570.70329 458.8431848 0 4589.253587 1820.172601 811.6511783 17035.21972 15798.36636 16600.89068 5021.279652 21301.09467 1830.563528 0 18824.32268 105428.0185 17556.11891 5122.844282 10257.38162 9486.173067 4161.707679 2332.328237 17729.36438 0 2815.02466 0 1534.222849 2243.8563 8963.548538 19829.36217 0 94656.96144 0 1380.983544 44.48693786 0 17759.68248 4804.61752 38045.61964 0 7820.685843 11197.95171 15068.39689 31.03067912 0 746.3394629 0 113.3063981 7816.134884 4636.433751 3985.610424 1439.434081 550.0102075 36.67825044 12343.54493 5531.389759 0 14515.54895 0 40231.62095 56849.41563 25524.27275 3604.957339 0 49512.3155 3.335245284e-06 10039.92384 0 0 14662.0139 0 140864.0013 0 0 768.5450662 67392.9128 4856.359817 60064.68621 6412.908613 2575.510153 15242.07371 101092.7509 0 3623.664727 7203.175722 58498.83301 11558.58235 6897.80922 73688.24876 16146.80918 10885.41236 1310.841671 24126.16103 2940.722486 35596.79883 16990.24885 3359.751986 2935.059126 106004.4285 0 0 44608.65395 1948.533384 35872.46726 0 33622.90019 37521.72492 0 9149.205934 19810.90649 0 29787.77678 26083.04753 0 2.917511377 0 0 1152.717188 5806.981332 22555.73173 16576.92987 8750.841473 41673.30049 0 522.7849876 8370.859613 42011.99422 5890.559761 21762.13141 140899.3684 27208.90351 2893.085798 3941.856902 16866.30247 1803.518455 26665.24084 67174.18358 169.4890099 14590.42169 6873.924123 5022.417751 0 2714.431082 9197.114301 0 3.628119212 0 6720.003165 10355.09293 0 4531.628598 740.7080821 22065.69263 0 10107.44224 51274.2608 2978.608622 0 0 28840.89051 37295.75474 13582.91636 48359.09747 8068.297133 19.85516655 2438.369104 15040.52484 0 0 4074.033098 0 3.804103514 4676.99169 51544.61283 7064.958167 2053.734527 12647.71052 7807.139451 0 19491.09289 7818.48491 49447.50405 67.94936261 0 4375.347283 33.75399617 965.2180849 0 0 6085.399878 5693.912201 0 28540.07318 7077.382256 21825.7028 25527.14501 1241.938032 30900.11112 0 3456.405513 912.6543292 0 3453.600237 2.192659478e-05 0.002574720287 12705.71016 +3105.640219 18929.24137 73.61023687 34070.19216 0 0 11565.76573 0 5068.777331 12023.56855 2.255131669 42966.06071 5103.975726 27592.16144 0 0 2368.373943 2200.264011 43235.28199 0 4240.459427 32233.02375 0 0 9787.176675 28331.25807 9392.851262 7793.456469 0 25317.03457 0 800.2767499 0 0 27801.55339 1.088929929e-05 0 5544.237278 19.52229749 0 0 0 7384.588989 42020.11509 15354.19912 11154.692 2821.567407 2760.360559 19231.00824 937.4049053 1695.138442 0 22773.04048 15843.7624 20883.37109 15650.03219 27706.63293 14153.86896 0 8500.112877 201.2930226 26353.42477 0 734.9283934 1467.943767 0 73651.13643 57585.56081 0 7496.003146 40.30817672 0 0 0 59965.54704 4025.821034 20308.37889 7.955883003 1627.586411 46233.98932 12644.61941 0 0 16.53769375 14800.4131 35058.0001 65776.70066 20521.98832 0 1574.813966 4546.956748 0 30310.24741 35.78019514 0 70705.15763 8281.296374 23030.41599 15482.23124 7248.156169 11809.64594 48347.67747 0 29306.99858 30959.52545 51055.51446 5583.304198 16370.70885 7899.749091 50252.53997 2362.372591 9558.188655 0 19365.7621 1646.336869 14254.02782 0 30723.96244 61988.16549 12117.42895 2040.624406 54599.26838 328.7210544 53947.77996 0.01333590053 18651.99389 63628.06558 1491.724203 1610.781303 0 0 7510.800208 31539.50105 25330.91728 3105.325898 0 131.3218172 0 3665.515051 16336.43574 114.3893248 255.1899454 7789.514962 17827.69094 0 18327.24486 14422.85256 8317.318822 3806.397026 42591.71038 80.02283952 29.7915666 8926.246891 0 9523.390322 19980.48144 31283.9548 38772.82582 0 7780.225342 18325.75131 16929.90935 0 7972.2763 75.38645303 14996.69468 322.822623 0 157.3485225 9604.548216 86761.91546 0 2202.944589 4340.227508 20165.83618 26262.91604 12803.12333 40011.09237 44933.83857 42453.90365 10513.10825 23535.72647 32840.64533 23987.94947 15212.13082 706.6619976 6377.709003 0 25.00389923 5611.935055 168.216435 5122.049376 4619.62618 26974.59078 3001.950712 0 2858.284946 12588.28595 24145.45497 664.7372732 0 3287.868588 42.79965907 2044.440502 10741.35282 32225.29459 2383.318569 356.0230012 3486.155921 2063.601787 0 20461.55213 36758.45303 41031.58054 6241.523751 15105.99879 7442.968388 0 344.0894279 0 51611.01759 49053.29496 0 60.60256689 6253.574366 719.7476929 52295.35345 0 119.901172 55447.9559 68836.41555 0 3485.72454 0 4076.831222 2090.190473 0 29326.86836 62372.83869 2766.035161 178.4189274 13091.53712 0 0 0 3474.215843 1025.425952 0.4338812419 14916.74882 8744.719209 0 52.57826018 2544.111222 713.0105979 0 11965.28873 0 354.4808272 4672.723324 24951.28565 1717.212198 0 2605.183534 0 0 8120.893565 3227.770858 0 21141.94408 0 9193.381172 11985.23858 50693.63332 0 1325.257455 3417.198283 95.18867542 0 3987.663139 15552.61096 0 0 0 0 8.270627249e-14 35237.59105 0 0 12861.033 1497.238489 0 58261.97625 1114.311812 300.6653727 4138.959665 0 0 0 0 537.6747725 +8271.975986 0 18756.19785 6951.444657 41607.10119 0 281.5708199 0 155.0037029 0 2997.55877 0 0 58031.75906 0 0 9454.715707 0 0 4075.85703 66.43738539 3475.131567 50376.06548 6962.172896 39.55845894 0 0 0 22587.537 265.7018026 134.2836999 19079.64663 0 63511.59903 42709.84682 0 0 3.508269672e-12 3007.756954 27734.09193 11291.74356 44874.5829 8.69220227 1101.989969 7499.265795 1413.100012 5330.711647 13890.07467 66486.19982 35277.13994 19268.98811 46931.87797 33161.68824 18873.50926 439.4389518 0 17475.148 74715.37829 5140.196663 47.66294752 428.3191384 1759.686276 30406.51122 0 91556.43967 28235.4102 534.9219092 575.5457059 144.7743295 14287.5108 1360.621677 53463.51171 0 44502.67337 17636.58272 0 692.3697234 23474.92536 19764.18637 34217.26557 3341.955386 12666.5227 12616.228 14097.72292 16269.79298 0 0 0 56585.38381 79794.40463 31103.19597 6420.261017 29561.40398 693.8371076 10372.43291 0 79513.89677 22758.19693 0 9998.336115 448.9491544 75237.05193 1532.056935 43423.15387 136878.8647 8554.73148 185.2218187 18.46325279 27102.22271 2604.085192 72895.97699 0 43574.88206 0 17074.17787 30131.96195 23049.21556 15699.0938 66342.372 1831.680474 33269.03794 7195.01946 13470.20231 0 25705.5781 0 0 6125.441673 24936.85454 39368.23612 0 40995.61552 15181.80806 48302.61387 5715.268119 44033.29115 77658.78243 0 39602.07932 83844.90443 14962.60278 2479.760263 2730.204004 556.5907486 2850.294644 0 4274.528504 0 46649.25443 12277.11798 0 0 22190.78241 10051.62594 12582.43216 86950.73683 35646.63719 0 4528.416046 1584.870121 0 8556.327471 3821.695367 4892.931675 0 7042.191355 98.22853526 10089.92397 0 11211.26851 3982.405542 3797.169183 10128.20481 23378.06155 0 0 12615.83613 180.4072698 74868.76115 15491.65586 0 54539.47609 34725.47572 25209.62833 10133.06812 44323.51947 24355.88385 39560.64972 39197.46343 0 58905.29096 666.1119788 7382.120045 0 13350.60419 0 110.4863993 22805.78255 6408.031446 1119.432989 69407.27746 17679.99673 9672.103097 0 38448.23288 1636.478748 0 38838.00272 24892.36776 15550.63931 5501.628875 0 0 60042.07506 15600.83354 0 99510.03801 61631.39947 23265.05887 0 29243.92322 1398.726578 534.8523556 0 0 89020.94163 4634.16325 36559.02501 340.2973005 0 19317.21547 313.9160549 209.1250552 33156.31987 44.8646704 0 538.639218 13202.86285 95.16612545 0 7497.319127 6925.013849 0 62564.55546 0 24814.71947 120.6510039 239.8574938 0 18389.01451 38311.56511 185.8123959 0 20739.80801 0 0 2378.840767 553.7260261 25192.67599 1750.400011 24383.27264 20298.70033 10233.16085 43599.2561 33950.74337 2624.559423 6011.493533 5606.783888 2613.951888 4499.100724 59.08764753 0 0 1024.260157 51.75096693 0 0 0 62162.67614 0 150.7325528 0 0 326.0983089 8008.803638 0 0 78.54813609 14398.4465 48.4300997 0 0 0 56788.64717 0 0 49.57487341 713.899589 0 0 +19533.31038 0 267.6020951 0 6351.027762 0 0 4871.400445 0 3915.036642 4798.213046 0 57261.91028 35095.50754 12431.53538 0 0 1072.934961 349.3771618 0 0 1053.676515 468.9650076 0 19595.19961 7695.455403 0 0 32667.77876 35697.36341 0 111113.8552 1.596260966 1511.038009 12436.90376 21271.69462 1936.361025 82690.12876 0 0 0 9176.188416 0 72617.23433 0 0 0 15279.52617 40455.39566 4671.093447 4814.497197 0 40158.13567 23.1958185 0 6999.584023 2705.611879 71086.72186 15522.52937 15087.89715 0 4073.102365 0 4093.787671 71417.5367 0 0 4253.08237 17947.98682 3614.447153 0.3595792804 2811.702761 0 43.40980043 8453.186606 0 510.6544436 34848.93281 64796.99687 131932.4615 0 190.9707764 5628.504977 84694.63167 86833.69153 198.1808301 61020.43792 22474.22496 31004.52885 33626.33883 39118.63839 0 7701.366246 6359.404888 13317.31615 2132.346853 91843.55658 1435.833724 0 0 0 0 5928.27176 0 11550.81377 4155.816916 42614.20725 18281.77026 20126.73796 6893.181133 3464.901397 46585.91002 0 13464.41643 0 855.639821 0 0.5966247771 0 8303.551387 229.6383613 0 1.01650352e-05 10253.63673 0 0 0 0 0 0 39.27439808 2750.574042 16571.46414 0 70066.83664 191.5920479 27024.91533 26901.24802 0 1482.175295 4577.687368 2316.43223 0 10266.49307 0 4495.657719 120263.0165 14704.8944 27604.28032 25405.73871 1606.866742 26812.48671 38862.56741 52645.35132 37493.00919 286.5084366 495.235691 210.9526136 0 82944.8855 0 0 96888.94924 15445.07676 71969.2854 5294.83862 6194.512256 23979.394 32760.70542 0.1238466827 26768.96533 937.5106652 4845.284724 359.4758418 13132.29773 107.8056106 40208.01186 0 23084.50326 6554.216854 26865.1872 34900.69705 209.3588618 81733.64172 32492.22426 0 55218.81441 0 24068.57821 18335.32867 3.876041718 1755.638378 6863.954743 14008.53108 26796.18323 41634.85629 46.51193465 9699.583238 7932.561328 5209.611931 0 8310.933385 4962.675931 4353.097204 42397.2317 3127.738192 17618.33897 3578.069788 85685.55086 60.85652904 145.6322365 0 3.302634861 99145.79531 107.1808649 0 0 17775.74363 4149.431041 36916.94477 0 0 0 12947.86571 21567.37662 0 171.5035995 0 0 4405.472161 13074.77126 48.20542388 1997.058966 6470.993442 456.744474 10255.36518 8534.264131 6030.554803 45691.09262 236.2928398 58756.36373 20735.67748 223.1598769 0 18708.27985 0 8746.510223 0 0 56518.89684 4385.808488 7187.839547 5246.690233 0 0 4973.620829 0 0 0 22.01339517 15581.94768 47471.22166 52249.55206 0 60187.52886 4689.74691 54743.05676 17773.44209 0 21594.77631 1597.598159 0 19158.64909 26.06749363 20798.63378 0 43.388001 59304.17448 18017.3232 0 225.9938098 0 0 7828.663856 1566.203957 55375.46969 0 19647.21403 0 11731.03554 0 0 0 29461.01968 0 0 3323.943132 18871.51544 0 0 +17989.68326 2783.020316 3613.576113 73106.44537 8900.516432 31636.53092 2.764040479 0 0 2232.407671 0 3338.345067 34281.13531 8272.383153 52275.61309 0 3063.710559 11150.90676 4971.584498 5198.830183 31364.40122 49.50464028 20889.24785 0 0 31134.52863 4426.392926 10803.91863 21689.15413 497.8187817 0 61493.7369 32810.84536 0 0 0 0 8913.785499 1619.24987 25683.40202 4785.225862 33668.12935 8653.537883 19592.21734 35732.62211 9524.811228 78.51121341 38904.49428 15200.05048 5490.02969 576.1682687 0 47.44382276 1360.82409 47928.8432 0 0 0 4366.962352 5505.450414 232.7630788 34076.77806 329.2906983 0 18597.45545 1.137113809 0 0 56285.41564 0 0 26.90828899 0 10791.00663 73474.65145 16795.86675 33185.54397 22227.28009 25523.44746 20477.56634 46755.5305 0 51963.7065 0 88471.56372 37746.79165 78166.11365 0 40640.30009 289.9325826 3907.499208 23861.41989 76379.78705 0 0 10508.50625 17912.22632 903.8496603 3132.9226 77790.81628 63103.10896 33057.2727 58244.72502 50732.69122 0 7524.019143 3435.652844 14507.34197 12235.86418 29564.10951 0 1966.517103 4277.4277 0 13914.69412 109.5957663 73616.24069 0 4047.533158 35.86750157 11679.79359 19826.58323 0 33851.28832 37072.33658 2160.689422 35754.02964 9972.909187 0 7948.838016 0 12385.65846 55154.59866 0 0.0001772933316 0 2.207779004e-09 9015.130118 35135.27563 10011.68915 9819.800164 0 10828.60661 59002.91123 35955.36611 6421.359805 23.41035025 10702.7558 37908.74314 26520.62843 13661.32161 19931.78324 8703.344907 190.9728844 2709.283406 0 7691.623084 0 24415.26418 16051.05424 21524.63056 21070.14356 7691.762566 0 7115.362561 3785.704602 22104.7665 0 23013.62476 745.0946988 0 19416.75065 14914.03379 32565.89357 8224.619799 47932.84754 0 47036.59504 12203.95943 0 330.2996796 0 0 11855.83747 25284.97998 66306.27449 0 0 8604.818636 22315.39879 13020.58268 63180.25545 43037.07868 60467.45017 21760.03535 0 69888.48139 9381.321502 3214.814346 137.0688432 3123.745626 256.2383467 0 54252.10221 141.9511621 7486.856005 33332.15955 2003.10543 22013.93873 47715.48209 31829.9894 0 85.28519265 256.9614039 8971.921659 0 12600.51376 0 17168.85448 5323.740786 0 26698.95726 0 6150.469496 50626.31819 1739.757207 1349.094884 5111.23687 0 59990.78391 27406.668 3583.442072 28820.88268 36780.29989 52711.18063 204.4424013 0 15580.4835 3671.973737 2893.203913 0 20045.17229 0 9959.261756 0 6188.195339 12451.42058 5395.458962 81115.16287 38198.39205 10499.62719 42815.09032 0 26194.1432 12731.67404 1305.116996 0 0 4409.991764 40736.55882 65068.41213 38404.36784 26174.90273 0 23650.77203 2888.78023 1968.399943 7486.304131 0 2527.795621 21321.84648 18861.98546 1699.109436 4068.41782 0 0 5313.962474 0 2299.934079 2209.312157 5875.288525 0 26505.20687 27705.56762 95.9438829 0 33072.74508 3014.850027 113.2793032 12464.70741 0 380.1235502 0 4773.880893 5522.079047 2236.283865 27462.87227 93.84574166 0 319.7771146 +35058.51469 0 47655.24267 0 0 0 0 62295.52574 2522.593019 1928.978726 0 0 25174.88378 1576.764292 34370.30957 28862.59884 31302.22726 22885.36754 17422.80207 24360.18344 40433.27388 12576.04547 14627.43367 0 0 34516.56468 34198.20857 8785.959576 3462.323391 63.39966035 5227.662159 0 0 16702.01613 2088.440994 4451.370271 1289.389653 568.7263195 0 8742.578897 69939.2057 1699.141391 3680.975635 14028.35041 0 34098.17306 15831.66271 45222.65589 0 0 49795.82691 64962.41588 8526.848499 395.3836796 8149.626734 0 113.9492686 12222.61574 25392.06363 0 92113.20247 20347.58379 0 229.4902563 5588.187654 2119.208656 22039.18497 16951.65638 37674.35602 0 30506.56826 0 1920.391317 0 0 4396.992688 0 14180.07495 507.2507445 48.105331 0 1735.897291 74.95799456 16121.35542 7560.049387 13169.17559 16743.26517 10576.75193 0 0 150.694718 77282.28831 20748.40118 4553.224194 16539.49954 21559.83994 17283.217 0 4840.575843 28646.46209 10759.72055 29915.13102 26624.93525 4120.946349 36.80019293 69907.26925 1478.716776 390.6191349 0 53636.28206 43091.4454 131.6665875 1244.800565 0 17567.30956 0 0 952.2296218 0 0 8110.413454 16337.28891 17231.29124 66391.41291 1.382915334e-08 15495.32385 72307.34006 0 56939.83048 58778.9309 0 13741.78818 37712.08949 19767.74722 6721.084514 35950.31333 2124.914075 15840.32412 2041.701264 7566.206195 0 17105.73141 22038.38992 17221.59839 10767.02977 39442.39662 1022.986328 1750.697466 489.508731 50538.53547 0 1430.425992 7655.509134 2266.284157 15753.37522 0 1038.184741 6109.305129 1981.975415 68664.34246 4925.821957 0 0 1904.821892 12449.17343 13926.15121 0 0.008250186504 37182.48302 19541.12802 3800.03852 27858.28404 93.76684744 0 2075.997338 2145.774941 4076.455309 43770.02524 3553.837294 39837.72823 2846.200743 71449.85609 4075.839325 0 14940.07988 0 53212.25562 16766.53404 6703.578819 73444.95051 12337.02311 0 0 5551.837067 772.4213651 0 27866.40107 6183.417791 8130.647556 0.007774534805 20172.62081 29584.26024 712.8255356 955.406225 34602.602 74.95737599 86.94646776 13389.49141 13393.79866 15644.91639 41124.91786 4449.23527 8704.150853 19492.7198 0 3611.838338 35464.15524 3877.581808 79.26263642 37379.38535 31320.89866 58237.66621 0 13779.01119 3678.047551 0 32868.18801 131.5116843 0 0 18033.76979 33.50230869 0 7735.110988 16702.26951 11722.14342 33.83866108 6969.796254 10581.5779 25232.42002 0 17626.40609 0 1304.921931 0 26132.84913 12887.55188 25556.42848 0 0 0 16831.68232 0 0 58666.42167 0 0 15094.64848 20.72730376 48614.10803 532.4398129 9926.283982 922.8403109 9733.766601 4937.197708 0 58962.32855 0 418.8443329 581.9070765 28045.94043 1089.73707 0 44363.18258 11157.93753 37336.64851 0 22378.56221 0 64553.26724 0 10435.65332 666.4265462 0 2705.659577 551.9949764 0 0 13894.72863 0 2675.125943 34.33342549 0 629.504264 17908.72237 0 626.1723937 17881.4822 24638.16843 939.53726 +10762.41367 0 4814.6535 58.42778803 8489.631809 0 0 428.2277298 113.3583238 38948.74286 6529.892559 0 0 0 0 19864.41959 1.502160678e-06 6083.063416 0 0 10399.73954 6.406569297 0 5244.053683 0 0 47.61229191 6.989584977 0 7552.435133 5633.626506 3376.963026 267.9210804 4401.672277 36.73507305 1696.411371 2644.501981 1152.06363 0 749.310768 86.18411568 0 69138.28762 24263.67163 10328.79578 9003.939738 3048.343896 66.76254296 57308.95751 79945.26534 19051.06842 528.92652 11154.49042 0 5497.060293 21242.09416 2783.222157 10039.83499 43863.69358 0 74888.72008 67.85870249 57996.46647 5807.129052 239.7182248 0 48049.1923 19871.39434 1600.970427 0 51711.71736 4185.413755 16020.528 1425.345603 0 0 5241.13849 3038.587357 63329.55387 0 14059.3419 4814.608953 0 7145.414347 48862.1013 0 0 19921.58952 0 0 53586.00111 45040.49605 10330.29293 0 26.96020141 0 174.8844889 17551.7637 1762.915613 121164.7573 0.006263231171 7359.008988 9956.659617 23466.73667 3289.044289 1541.994423 48870.47166 8.741828289 5052.504035 74.18093322 91538.55431 66128.60147 78175.2434 48730.57983 0 4045.20143 54168.78054 10026.67899 10070.2329 15927.005 9173.641186 0 21994.76792 45016.03758 7538.000857 46036.09722 5160.358416 0 0 5009.56849 4434.094423 13587.65567 0 5445.329892 9598.070538 0 8361.727671 4357.902779 23146.70315 0 0 0.03138726954 3380.634745 0 39.23057776 3380.214547 2.414068458e-07 0 19266.82907 43462.55646 0 48948.7769 3621.914728 10921.26417 8979.225172 0 6328.625145 16173.4734 0 12289.85997 6381.559924 10362.84706 9174.636481 1070.404098 0 7253.691916 638.3167185 2949.262049 6205.693997 2242.133784 13036.00608 64581.35906 2868.43075 2498.097436 11720.41109 0 37030.2625 0 16182.0623 12879.42537 8138.76153 2279.907714 14775.41756 5286.782287 3821.483956 50564.71673 0 0 12761.56925 10059.61276 28651.79155 0 30884.73971 1668.385809 0 5798.233703 12582.00469 41255.38527 33093.29138 2749.351529 6969.577765 29858.64064 31840.98008 0 3649.143021 60658.42366 44.22727184 0 25361.56149 0 35737.1967 60106.09324 8534.931628 0 0 4347.855781 113871.1644 8173.263504 67714.69161 6411.016962 0 0 15535.18085 116079.323 0 737.1029137 4575.704017 0 20398.74138 15514.0602 37.94036839 60495.38793 358.2571862 0 8687.182 43191.13141 0 0 0 27371.08373 12152.18962 0 4821.298466 23826.77489 73488.05544 3564.92937 8968.364634 0 17171.19369 53237.65304 1971.152132 1877.313209 0 26.80329788 9478.663903 0 3975.243951 24089.04418 27.14463638 994.0751692 509.3805267 0 9219.810935 13421.5774 0 4164.396802 0 822.3337481 29191.75428 16530.83763 1375.631361 39420.71792 8538.961697 0 5131.834673 705.5528761 4054.787735 33372.29286 0 2054.316631 0 737.7878629 2579.794111 26445.50912 0 37585.65377 0 0 13155.63646 0 2221.470785 3164.315765 705.3637153 0 0 94.22384125 15821.06504 23979.63352 62049.45204 7536.473879 +48860.81624 1397.534943 11587.22109 4237.956676 6037.201872 19611.522 0 4122.312035 0 23675.49247 18056.25933 6362.995935 0 0 0 72470.50585 544.4221918 18152.33026 0 0 0 0 2052.617732 82.81424085 422.7990386 0 545.7441368 0 8342.10373 0 19785.96509 21571.24517 13690.02983 10175.89517 0 0 740.9303532 0 43292.70932 17642.75649 0 0 0 92.75637873 1322.513797 1679.000272 301.817761 18424.01284 0 0 20763.39839 998.1914016 0 20126.54619 55942.26559 34534.37848 0 6232.439082 24305.04271 0 6024.007125 38437.0791 86.92918599 26968.058 11250.51094 0 2.371367927e-05 17358.76284 0 2738.980308 35650.21699 10198.61787 6860.137357 3199.142942 35434.6382 27410.9934 4496.408001 0 6575.095096 0 0 0 0 132.2597255 1265.602414 0 0 21198.70128 13679.20762 0 35138.32383 110.7065964 4278.064396 32555.75781 135.0923904 53105.95479 0 51803.32658 35293.07271 63408.17626 13988.74895 6083.161126 0 54868.38268 3827.724134 14303.0818 1114.170624 12465.33929 6706.176558 8.332084114 71086.83326 0 0 1908.571575 2519.447761 105358.7247 17100.03781 8618.693147 4033.65195 47545.63698 34124.03778 15995.53829 6715.164759 1942.008162 25802.90716 88780.52459 0 5151.923762 332.881181 50982.90869 51509.04876 12424.06498 44453.54233 9954.229194 2083.59511 4069.381141 61072.79287 4259.659065 45231.29601 76544.55142 3919.808215 23828.335 8007.253673 740.8940339 0 7707.424188 4381.544382 0 1569.93904 3631.566235 15874.91858 3106.38719 7205.098959 14169.91744 1722.583222 0 1627.724852 4983.137501 7146.722209 22488.62632 39036.22122 3991.346647 34451.53461 9277.094242 12378.42393 65984.68543 7723.276728 44850.86362 1839.885494 51305.91281 10302.46102 15380.30037 5288.964912 27716.4172 0 0 61850.30782 4321.454786 11294.82729 5304.386106 302.920387 3909.083744 17164.50214 67199.0596 20897.47695 3308.496958 0 49119.88151 5644.045346 763.1918346 26815.441 1174.811403 0 760.0058141 0 111.504132 5327.431329 39368.30222 0 4529.030348 0 337.1904284 1.613320653 17099.36054 53175.36916 0 3775.329657 11866.48102 7668.246088 11596.95535 28064.9288 10287.69269 3644.870145 24434.08785 7853.752302 209.6226087 47843.50616 11445.84436 12117.94772 10590.22771 100552.3265 0 42945.88077 0 0 20586.78368 16016.61486 5895.092021 31305.42838 41420.64059 61756.20859 22.21594306 8051.099086 0 2.19028407e-05 4803.548083 0 0.1510544994 50103.2733 8091.772358 15709.59282 0 27213.15865 1530.071256 0 51486.98702 33911.72971 0 45237.07396 0 41617.26107 0 12409.01502 2512.023775 46.70676162 14616.4546 48452.74672 0 0 2180.776831 0 43642.37652 5512.372773 21829.16205 16749.50766 6904.39093 57180.47776 122.4404804 6407.182498 5432.300391 0 0 0 5164.851104 988.459631 2579.388749 2154.923552 13838.23665 27790.03017 5647.870488 10244.60276 4717.182171 31439.15516 1336.413617 37.71682841 0 10677.58722 5285.209064 422.9866037 1280.855804 0 45525.01156 17604.50788 27637.3481 727.4950583 25988.17586 2592.443793 0 159.2485115 897.9201552 +60.04190756 39065.84701 19659.30678 0 242.2257463 0 2752.903834 0 0 0 0 0 8066.177297 31572.64138 0 15828.25281 17013.01826 0 0 5627.065005 42543.34454 0 33407.00459 0 0 11153.76636 0 1987.061795 36672.37518 3215.699705 1479.382552 35769.0738 0 20172.98648 0 10920.58552 67988.65997 0 16809.95025 0 0 25984.44775 7038.819603 461.4146053 167.6678965 7117.615462 29092.0176 91146.90196 6772.6962 12253.29527 2652.932946 96090.76327 0 0 1338.883112 0 0 9454.084934 24955.31884 2168.558288 11321.8936 0 5283.958805 109.6961743 27995.99322 41483.44857 0 431.4357936 55389.09961 4597.129708 40584.22781 37179.22431 21367.16836 184.111788 2362.53077 8040.267877 0 52442.40214 441.3213188 18679.3473 2195.792762 6184.538408 0 0 33443.28968 45285.25322 0 4435.820536 44601.64177 21633.82284 16776.06547 76.95313893 49576.95615 0 0 43966.53643 0 62221.02211 58774.74525 56216.06496 54078.40717 257.2766778 449.1363726 0 26939.5834 4500.679872 2712.817764 4903.825301 14870.52981 2890.421202 29703.96404 1629.059389 74845.20016 2233.765195 1071.093973 1052.666961 8630.046893 54161.05038 0 1271.12229 45920.0616 160.3800775 23170.31064 20703.48296 1237.345578 0 1.895074959 11555.17177 73861.95134 81642.31891 1784.669931 0 2186.378921 13217.63029 19891.85898 83676.29175 20238.39642 23138.96066 0 0 3411.994495 45624.66361 25146.6445 3252.529596 17781.50365 18031.8784 2761.967568 0 4176.773523 37881.5857 0 68832.15452 25855.52018 0 6258.260818 5235.117248 27775.02185 12990.56802 22553.78874 0 22677.66397 22941.37657 58246.95551 6317.149893 0 35.62955148 1860.100702 3480.381189 6452.377015 145.6097061 0 5232.079367 0 40317.96164 9801.968311 1099.93283 14435.51201 14960.5261 0 893.2709495 0 18444.12627 2649.41928 1773.46347 55824.61256 0.02649987911 20533.48274 1300.662612 18756.96441 0 5206.378474 21766.15376 0 23248.35204 19917.84785 3347.253785 0 14924.76987 0 46343.52806 42653.74811 0 22743.69913 14538.20891 6518.74667 29922.40545 14741.44458 0 23629.05234 14154.24199 17202.12557 0 37186.74189 0 1108.940284 0 19317.79236 1661.101949 33525.23297 27881.9796 12.99935074 15284.31099 36860.96925 49114.2027 0 44048.42856 24618.35167 16559.34115 173.6286547 0 66976.69347 1732.25114 1226.328232 4532.128316 1466.39553 0 0 2982.53458 53043.67885 0 15093.25135 0 4470.128645 146.4654985 5159.028787 24449.22818 44.13281059 7363.905729 270.1396353 60143.94444 41101.3057 948.9764406 15376.83687 16442.93694 7180.494584 5214.745168 3769.147053 4219.137157 7903.090701 15409.3038 34651.86612 0 0 5713.421178 0 36181.92988 16798.33193 0 16985.67722 0 50795.06084 32128.50223 0 1723.926306 41405.31441 204.8363458 1089.154076 0 19506.68119 0 0 992.7044533 91.8688268 8217.457605 2168.402023 13976.43953 0 0 0 6957.317534 33918.1123 0.005105412707 19497.9201 0 3651.999954 4191.249278 18202.08491 0 0.02552723489 32548.15991 +4147.473829 0 6025.407517 53691.19328 0 1604.321524 0 11850.58521 10776.88357 112.032383 0 2197.735772 23191.07799 0 7989.260365 0 4783.48393 0 0 11936.63174 0 0 13717.64744 85716.07325 56.70577003 84.47176867 11493.06822 94365.44031 14634.38726 0 10812.58944 3400.568768 1794.078751 6784.445019 17534.09177 0 211.2139892 116.9345179 1450.699459 0 0 3224.706582 0 17508.19335 0 43281.2845 1933.737206 9293.643257 22960.2158 0 7812.162326 0 59.57749081 7961.565158 2317.542442 810.6024634 0 2867.905775 0 111939.8796 0 0 5433.490887 7444.402443 0 0 46.64342818 69671.18999 12059.56291 341.7982047 14389.26538 11743.95796 55397.12215 38033.00747 6661.200901 37516.34537 370.3764998 845.0807822 0 15217.98519 14877.2035 4753.798084 1124.878972 2759.758332 155.1539985 29482.45875 531.4817998 13492.21401 10256.78277 0 45303.72112 19819.79836 0 35073.62679 3152.829119 42019.3328 48231.00015 40643.30636 0 293.6292434 81607.81912 27745.95586 7508.67577 6544.165589 3131.771066 10641.89615 1325.089548 21049.20889 0.0001190953433 2372.822305 2045.878158 2035.49641 0 30029.11736 52597.81473 3589.817896 53.52679513 25260.09019 9838.749465 14711.98534 0 205.0817186 18725.2417 18945.44647 36643.24163 1762.378356 60.33499301 32304.58182 1843.207807 24400.11548 10879.30605 0 5214.826456 1564.810734 40732.08375 10489.59993 16731.67427 33886.06944 44057.74163 1977.941901 34619.2443 0 1671.39503 6178.882022 14898.56663 65131.35726 20113.00259 25195.8033 19774.77323 3347.874453 51673.28734 28825.55299 1786.867659 67939.73433 0 20107.96603 5856.789333 621.6990925 45283.37547 2446.274507 2272.484128 12764.65262 27555.24279 0 0 51060.68567 50174.83128 12396.83765 7614.340256 4933.295203 0 8396.419791 0 0 0 33816.76707 1117.176745 22806.53478 30708.21545 45210.40836 14940.70511 0 140490.0731 11181.32096 26677.06952 21246.94098 0 0 60653.32005 1897.940263 27714.79079 948.2290532 32711.09526 7342.058478 770.3922423 2855.528825 795.6615323 329.0837016 17600.44403 540.6837248 5217.712669 0 64580.51438 1213.453608 5276.145545 154.0124158 47319.57445 27712.8482 2824.347952 67459.16785 11180.38335 22351.42702 5067.061813 0 30502.00547 0 907.6525074 10115.1897 6257.463509 0 193.4357078 17700.16755 493.4666152 0 29870.07109 3288.578926 7831.24393 4535.625089 0 10508.70728 0 2555.815093 4737.3026 0 43693.13452 5109.68494 52719.87852 7243.070288 0 0 11950.54832 50981.04566 0 4732.031159 1014.20962 0.01462664167 5439.450018 9638.43977 73753.20719 2137.523155 0 21992.10439 0 5059.727082 0 60685.39053 30086.15965 0 0 0 0 0 154.1812579 0 29.53669142 14162.92957 7162.317532 0 12235.59115 0 0 0 58621.94711 42005.71702 0 0 0 37841.48385 26265.56911 0 2668.564177 35434.57593 345.9033532 38775.51741 0 1377.87045 0 69958.58135 37954.07914 1422.453704 0 0 0 64155.53334 4362.863866 860.301772 613.4843269 16265.13071 66420.41136 141.7141288 +0 0 493.1765439 2.929641991 21547.0519 643.6878813 0 0 103126.5224 56908.30198 4388.741826 0 2446.895585 0 67296.18528 17244.9865 1542.375492 17253.0647 0 6385.754091 0 423.2921387 8360.166771 0 0 0 3634.201319 13749.47863 0 2724.265202 218.2317302 4274.864237 20592.26018 0 6315.64121 5525.957955 2936.857011 0 7878.758772 1660.381288 2616.107877 0 389.8176296 0 387.9949585 0 4480.220144 7659.598979 46897.76001 0 34529.01001 0 0 0 173.6936783 0 0 26652.49474 3676.671229 22687.00155 2224.341828 3479.675683 14730.14763 23777.73191 37862.91209 23163.30645 20395.93058 0 0 0 0 0 0 23946.12745 3366.689841 7976.409655 244.0453595 0 847.9729247 7042.64579 29537.32292 0 0 0 111.8928205 986.896695 23340.39598 13331.62661 8125.072167 0 0.003946473927 37212.51969 79372.70574 2849.1402 46967.58161 6629.240945 18976.95707 2784.752057 33658.7229 37194.99234 72155.73243 1355.225796 55988.64578 3935.785813 21371.38481 42425.73416 129.4216635 9513.666749 7621.860466 84.70362158 2254.974331 41.59397974 2150.727937 2934.423977 0 0 0 6600.814328 524.2966469 0 28400.56824 2669.132728 4186.593923 6621.8608 36326.88004 0 5661.966565 334.5514701 5294.875395 0 4.92482408 7909.634031 3672.506246 40932.37298 2398.845454 7386.546788 4392.993254 946.1817516 4060.805732 0 5057.964674 0 0 97054.87091 84549.77534 61.54797428 8815.761984 9731.070833 25563.79412 34544.44449 10574.65718 41263.25129 6686.700433 3279.593876 2471.048867 18431.11696 3385.173295 1286.728109 45629.29417 35150.06933 0 32405.36614 841.5955414 411.2231802 3081.856834 5308.344783 10.94440347 10467.99807 434.7841573 1728.339401 0 0 13322.55539 5.125065144e-05 0 23556.57721 2882.782759 22128.57557 4892.166794 69726.77636 0 26203.25359 0 1138.592216 20005.98899 4456.812582 390.4119859 345.3045429 0 1.455319774e-09 36498.76818 24244.50313 0 10527.65182 19302.38652 6914.693147 29.80666863 0 0.6382241403 51589.91077 894.7613732 2554.656577 759.5428191 0 38075.04944 7016.525419 3994.454265 5.754707153e-07 38584.7093 199.9824128 0 2234.305848 0 0 19038.52082 0 12923.39113 0.007881553098 0 26446.23444 774.6164431 3674.659303 34834.10674 16374.35783 44964.64915 6495.822542 23109.1669 22016.22277 0 3299.284473 4031.824252 3450.767511 10004.12533 0 9502.669206 15544.44526 0 0 0 2203.04019 268.5824197 27138.48597 108429.0435 61214.88244 147.8537504 5031.912495 0 91.82575548 10244.08377 56533.14193 0 0 64672.81585 0 0 0 67.11932961 2229.777693 88.19815765 0 0 41330.6681 0 30730.68431 0 12212.07949 6877.715839 11452.61419 19724.02738 12.79541 17106.44928 9394.421682 0 0 1847.226246 0 0 0 108.8461976 0 0 227.985036 31952.22841 189.1620987 56.60802432 102.3798856 51051.50992 0 26013.77862 0 213.9399784 0 5428.610554 14244.96092 0 4874.428829 3642.370798 0 34634.67737 2587.577613 +0 0 0 0 3345.835923 1947.631502 0 19.72576458 0 0 0 2281.237617 0 2623.080887 0 53163.03996 1822.017484 5113.58336 0 21713.74117 0 2205.265791 46632.06287 4894.796092 13851.92905 0 0 25849.05516 0 14392.95954 39438.08999 37338.64598 3026.168984 1184.322557 62509.71427 0 0 559.0577072 4790.489619 4476.195819 21703.56949 0 3444.077246 16418.53892 7793.006961 34172.98067 39737.07988 17640.44149 27483.94671 3668.828416 50883.40655 12012.97834 10512.35001 11645.24703 3649.510147 0 459.9175328 0 0 0 1348.259224 0 4768.725714 5230.753213 900.3851412 206.3599116 76.76977354 0 4171.750988 0 4070.110926 0 4384.969297 0 50841.06289 0 15.92723494 140.001721 2150.776422 16516.37686 11497.30175 163.8259388 195.1741187 20468.05136 0 10646.98847 10677.29474 8641.235176 38066.32863 36907.32208 3.972033238 15053.21511 2812.071774 2548.862452 10292.83282 10766.08803 68318.45009 0 0 518.0234458 309.232355 58680.97718 20704.31589 108.1969904 17562.07403 9.615941069e-13 24247.14044 37165.32257 37814.55207 53096.30173 5368.310796 11176.89433 5390.14558 21823.95024 18735.59604 0 38005.43101 7429.385908 11157.88026 34689.84789 16508.31656 12936.42813 119.2067548 1128.856332 73240.5314 61314.10102 40067.55719 13343.15168 89352.59513 377.3415017 24062.39074 1514.15914 39466.59748 46059.48561 7389.12188 4289.70573 6406.898004 3191.062486 17257.02673 61084.55285 1508.515744 21174.37085 37679.54403 35773.78942 71086.87499 0 12976.61738 3447.049264 43587.82204 40134.11676 1379.592884 64335.35615 0 108.8316404 12239.53547 0 4788.779209 47932.11049 1493.703209 19040.49304 1925.434715 11385.24762 2604.146828 615.3146161 19707.58185 45613.62996 50350.93517 14459.96091 960.4841511 6533.451736 0 11796.0043 297.4586552 12148.03447 0 0.0002041814566 2610.00097 4890.112756 54325.00941 24783.57066 0 11214.48464 0 6.982385817e-08 0 17765.50619 33145.6354 0 2192.339458 0 536.5450738 38581.44799 9871.645033 3397.173211 73.77382685 0 16396.9983 4400.165069 102025.4225 0 6761.589839 32689.12578 35480.14411 16.77292628 34342.40534 5497.477346 17764.35859 706.8422848 5690.714068 42378.35763 3045.308177 82113.00351 5509.640636 24264.55501 184.5389433 87483.52049 80573.71381 427.3114147 32474.83208 31645.05845 700.3691105 0 63012.09166 0 26471.39948 0 65970.81702 14233.32139 1896.848669 0 0.1039605381 30360.40291 0 6595.800979 0 4346.343137 51768.95762 0 60811.53563 0 49260.25456 3638.24904 54169.93001 6418.531613 0 422.532376 23740.45981 65232.23849 0 31560.9989 51465.38582 0 13668.50956 3161.434312 3638.816854 3938.768833 57.19469811 740.8126849 30.80858315 1788.937174 239.2254839 5454.167865 13106.74536 0 0 30600.5471 3030.252599 0 0 3505.198395 11582.74221 7552.170579 3831.475641 3340.322377 0 0 0 1709.094303 52.04585614 207.228265 64453.03609 3196.567181 0 5620.668426 0 11892.90954 0 5369.36154 7436.283077 531.9581406 38.83999918 0 0 4021.703387 7007.200547 72.79338103 0 32800.63097 0 1340.851845 +0 39535.5116 32.88316076 1734.693127 39176.37025 0 0 0 1488.657342 24201.10363 498.8333854 12713.69834 0 84180.23361 0 0 0 2195.632946 2242.786133 0 3161.592628 0 7414.642346 7622.036588 0 0 0 0 0 4401.199868 59428.23018 34590.4355 24636.58041 12144.1871 0 0 1095.753385 2773.063716 43531.89766 0 42037.45521 14761.58096 21963.56553 659.963989 0 125.266467 0 108856.1464 57104.43564 17920.17441 0 61750.9337 1981.951219 16599.00834 0 28244.83472 60.411584 2193.877292 9307.872843 0 34969.44551 24193.56574 16250.27898 9464.030073 59147.22127 3093.649404 165.7449789 137.903174 13038.71723 11129.96517 0 0 14022.62948 0 77.48725739 12693.22928 3092.988777 181.4857129 24956.99148 8897.917653 38738.22373 0 10998.83751 0 35840.82819 0 3328.353684 2809.566978 5961.712262 0 30670.25816 0 486.7918304 1711.98402 0 4284.664947 10595.63018 24004.87263 26326.139 49.19352928 15379.52623 0 961.5959595 148.3445895 1145.837331 51799.72532 0 44683.58035 0 604.5808015 94717.13118 25753.68823 3243.51864 0 0 1179.459297 1925.949124 0 112317.0632 64977.49632 0 4084.25409 73193.49913 0 9120.41708 556.8960336 2977.74409 13299.62081 0 12574.76246 0 0 58544.27183 9815.190819 27231.1017 0 0.05258767007 9071.550902 20636.41683 21712.539 50.92063078 3352.132653 10692.33295 0.06230462015 10504.69934 0 1335.592482 22877.01631 17520.33205 17608.71582 56702.5375 0 41734.58878 18254.04894 6767.615076 29805.88706 3643.940064 21425.84344 100.8854296 746.2701153 19080.75037 3461.105287 0 48785.0974 86.51217096 1765.310845 67305.68472 33980.59665 22584.38454 13883.22152 28006.6573 1140.539321 732.7124545 2842.281771 7676.742708 82114.98369 29226.18649 5824.34788 10594.82621 46727.94994 963.9088926 0 10540.51139 0 3174.837226 13599.34726 2677.857523 42668.70657 25409.52835 0 4904.008394 39835.39657 6181.693893 0 2965.523976 19847.98592 2932.6142 2173.267292 0 64534.35318 0 27830.95311 1547.193624 4271.705309 30824.33919 3083.505351 14253.24078 5049.20939 5392.41571 0 47842.72507 11699.49353 39373.41369 0 599.467873 11515.01161 35852.01744 1110.55964 4470.687409 17994.80581 0 2236.313688 1975.405681 14827.92841 9.243373398e-05 0 6030.825451 0 15336.0385 0 0 831.8006424 0 0 0 72.18620144 25096.92923 11021.5722 941.5817038 0 0 928.6478608 2959.509212 0 0 774.2050292 0 3794.2041 0 2429.071327 21341.22465 0 0 31464.15906 0 24953.8466 0 0 0 267.5521504 0 3811.916984 14384.91303 4342.682218 146.2065078 30496.89896 18411.01055 73003.54108 0 2178.870007 381.5207482 0 2707.929357 0 0 0 12739.91779 9714.579423 0 16813.29303 228.2102734 16964.92525 2628.178554 100220.6391 0 0 4506.796246 38934.28522 2481.74125 47170.49501 0 0 0 23162.03398 31966.4798 0 17563.96052 0 11882.87657 3562.905711 +30.00127138 9803.675907 44870.01555 0 29731.46957 11630.54379 27205.1602 8369.107055 15810.01344 3461.483184 0 0 0 0 0 0.04203572351 299.3718364 0 1003.238884 61.68042322 0.8554179701 23117.26872 9908.704016 1965.20686 0 247.0528425 0 30346.92656 45011.73167 0 0 36647.39543 0 3135.371668 0 0 0 20100.36492 0 6.183109826 965.2294921 2108.017925 170.9857253 9736.932696 3826.89482 8610.657823 18204.12851 1039.26407 0 31392.22879 0 3455.349358 5719.630025 0 0 1486.015503 41650.69231 51961.45013 2096.640011 0 29655.33759 0 2464.285789 0 6200.586536 0 12010.44605 9674.190507 59878.27293 13087.77346 0 3436.93203 15349.44851 46.70788878 47024.08693 14054.28041 42888.62981 160.9630851 0 0 9305.117439 0 15671.17055 80823.21738 0 44204.51923 88.63476048 164.6883028 0 38672.6415 24406.26337 0 179.997325 35940.90043 0 35.11172725 4518.28269 0 52880.55465 12935.66844 0 9403.631039 15487.71898 0 8272.647195 0 5255.021084 973.5475904 6609.444092 7913.051848 0 12898.67568 37808.27947 67.90386365 2969.863028 0 0 84.57189144 20481.81339 5002.677005 15282.63724 0 13229.36314 98.41582806 68526.47702 1292.471474 160.7975238 0 2453.496379 0 0 39308.01523 34040.82878 10732.56807 4041.806611 26266.85769 47052.24287 40850.6673 262.7103738 10250.10634 99.64820549 9159.40478 16373.37046 0 4453.734094 3129.530715 19562.75082 68598.89165 1.198738788 8907.96132 202.7152401 7300.506713 0 22983.21867 32709.14062 20395.11292 6292.757767 0 0 84.17112528 16089.85861 2447.560064 28883.39944 11246.31838 27094.75012 13259.97725 0 55548.59916 0 59154.13477 0 17369.99347 0 32201.35269 39.63332998 2461.616968 4393.158279 0 676.9841599 9711.669887 8.379217485e-12 21378.52426 30352.77274 0 2104.723531 19938.49324 158989.9894 51662.13683 137.3630412 3701.869682 0 0 74.31820549 6224.643837 3130.967079 26017.09233 5068.601133 0 13008.95233 5290.159935 46738.93309 5860.882425 7917.191562 0 0 17643.44998 0 14048.28369 18538.59871 20771.49853 0 26039.06889 14989.51957 0 0 4496.604584 32843.58493 47314.85452 36162.19789 1366.109957 0 0 11839.44348 6959.985712 2936.196831 6740.718585 18476.82147 24642.23166 9533.361271 0.002008283487 20125.74755 2506.571129 2264.78018 0 0 36360.19638 1868.371387 120971.2267 14.15397797 0.0008804158711 9502.401818 98.52307331 0 52429.4872 9410.052514 0 51374.20483 0 0 227.1802848 0 221.0670672 0 0 149.1218833 1988.673393 0 6817.730357 19622.45104 68.37110016 31.03743917 18173.58348 0 0 47168.58556 42593.73352 53499.08661 0 0 23533.042 46.62421088 7418.993522 0 0 0 185.0035 32.77997591 4856.245663 32685.82303 21618.99885 0 15858.15747 4535.4785 53.31278022 13510.62842 0 0 0 0 0 0 51235.21039 0 7106.826479 391.9016964 0 27656.05157 43687.7036 0 2454.216624 +0 0 4826.120253 0.8595080492 53766.67244 0 10041.50285 0 6180.382477 4543.427291 0 0 37270.69369 0 0 4.758688009 0 22216.23191 53.61960119 3115.267364 1002.343529 0 11860.46753 1492.872411 21899.46845 22716.61434 3482.17788 0 0 0 0 6143.847587 3679.394398 20671.76506 0 9215.402597 134.2267366 0 19009.40789 0 0 2579.759497 0 18100.73279 24086.09327 43070.16466 0 1794.526102 0 24587.46922 9190.201574 0 9235.844342 0 125.6379575 7398.00486 0 33065.43487 1393.617305 278.9994857 6649.735106 49505.35396 5007.667737 4722.969636 25105.74408 1377.187249 0 0 3089.934763 22281.82707 0 0 34742.47315 16628.78113 0 124892.9332 6543.219361 17379.0247 11498.51435 15837.14714 146.8902222 0 21243.23705 61749.84444 13100.91592 0 45140.39921 70760.21167 0.01430921139 12976.86373 748.0708173 77141.98917 8581.702039 40246.55074 208.7299279 54825.45774 15209.1542 43032.72612 42287.59467 30429.37734 3188.350703 362.5732977 35901.94662 0 32191.04827 22315.2 47188.22178 3499.151635 14153.0027 954.0316316 36851.18422 1.040563195e-11 0 0 3843.004307 47741.40153 0 9200.400219 38369.86182 36081.44997 0 3240.482533 0 30.57339632 2456.27219 351.199117 3968.893213 9207.211416 40162.63261 75350.00286 17627.36217 502.1902393 0 0 0 13451.82685 2669.445376 0 15864.51369 0 16287.63264 1528.40578 84.08653938 8.086495307e-09 42.51869474 21396.32949 0 4.079856555 0 5890.710967 20490.39259 28995.78343 247.6161164 31013.96128 253.5193964 18762.03617 61674.85607 17386.54801 11482.01963 42050.59643 1732.357824 42292.45422 10855.24871 0 3522.002321 2364.673576 1410.051531 42517.60786 22203.33347 11362.44803 14275.88329 24335.33845 61565.20852 3537.029763 0 13588.8298 0 0 43529.00815 0 1703.601897 54485.29716 24749.18975 429.0768189 4699.678247 1439.644874 401.5042963 0 0 7829.073427 1334.448901 2665.116741 13290.53116 0 4209.707682 13812.00604 0 11936.70078 0 21522.02965 0 13937.615 23986.65717 18957.35559 22907.71156 75495.57219 13586.44468 0 20509.99585 39554.16822 0 10685.0172 645.847688 45654.98127 4063.709787 0 5234.982945 0 32447.64051 0 3245.513105 0 13358.70033 11315.87799 0 0 10039.74541 19880.21912 0 0 0 16332.80246 0 41924.32023 31675.08856 0 26689.82517 20689.3264 0 19.8619087 3.241723396e-05 0 5134.225415 27709.89716 0 0 4488.572734 19517.26725 66247.14051 34091.68584 141.2016786 2200.050705 0 0 20466.44894 53.12000859 716.2068255 21395.15271 0 31718.40713 0 0 554.46282 43670.70368 236.3442504 61773.33066 12024.11748 0 5511.69418 37349.22317 27157.21098 0 2835.374503 13249.23928 0 0 1107.741318 8044.648365 24134.92255 3270.391956 26891.82962 3525.545116 9044.430966 0 6846.331049 0 44668.58533 6346.97728 0 0 4215.7792 3458.937136 3058.282482 2313.714466 0 12271.45198 24946.17552 3508.257976 6190.290976 0 +281.718001 634.64432 6256.649152 2291.218586 35587.68495 1753.964923 11365.24516 0 0 64722.77255 736.9279277 6567.505081 930.1127522 2376.850464 52683.49534 70285.46785 1586.271873 1217.989841 10814.87655 290.8772702 0 0 0 56.02915078 0 10018.50737 0 4587.518166 0 4731.004198 0.6946101227 17238.15664 0 1622.741049 6647.734702 2094.765899 5476.774621 0 58.33086383 9694.580877 6736.802665 41059.18668 63849.5669 0 3993.762604 14069.82777 20165.24632 8093.329085 18282.21115 7960.776595 0 9234.24373 1731.39173 307.8401939 23122.18482 1376.247699 826.091906 16272.99789 4464.672209 3842.709075 18097.5367 0 5462.087131 54097.12277 12066.53107 16023.06344 0 25100.86908 0 705.847732 8027.719003 25489.33434 0 0 1455.165362 0.4279588339 0 7498.31344 116.8287425 32304.45114 84483.8867 0 59921.27629 0 0 20358.04477 0 1580.345402 180.5371492 86980.88662 44732.07557 16856.83206 0 70747.60667 8770.05346 13345.83386 675.0482858 5251.865236 0 32168.34307 4181.406533 0 10079.04655 11381.75441 271.9551647 3326.015275 4074.938761 30779.93617 10743.05961 6306.640037 59603.79914 0 0 12001.13239 3859.016758 22856.84293 19010.97965 4168.371568 3034.980573 860.8120976 0 0 1.751780536e-09 37.63804585 51972.43277 4911.175184 43142.73936 715.2184017 5623.167433 41555.52175 57059.66723 0 0 5053.866925 33141.84232 674.4345102 24886.69795 3292.375542 25103.29631 6870.697719 23052.43526 1249.188079 272.0219949 8438.197697 117705.2948 0 1810.479225 8879.102342 18121.61723 32359.12858 0 34522.27919 0 4907.425704 277.5555402 0 94121.29666 73380.52223 57.87589385 18412.03234 48742.35363 0 1052.76622 25609.19501 0 15512.9046 43778.68317 9890.296515 7816.592437 0 1006.548587 16.521989 20205.95453 29394.26475 16851.04248 0 1398.864389 1185.485515 13732.11662 16951.83772 64433.68425 1858.358118 9880.443119 0 57337.75485 0 41812.8952 33298.63431 0 56350.66568 27936.65468 7485.558413 2543.93815 2809.714428 0 9334.294582 36974.70236 0 5592.966219 10836.83852 72706.70445 3970.942415 0 478.8488451 252.1504312 20299.82101 0 38059.91899 1995.616668 21618.72648 0 36488.27478 3617.134962 0 15520.27802 1574.558384 12485.949 0 537.079522 1669.968602 0 643.417509 25.62163975 2561.019025 2028.937803 22304.78423 25988.31886 0 0 0 0 36554.08783 0 0 0 296.5339986 47069.02193 0 0 37483.46565 24356.78883 6.480660547 141.8423465 18860.76933 684.9637524 0 0 3316.323572 3331.573528 1104.127442 18041.18314 8903.178786 0 223.9449932 34904.10098 4249.230808 35538.22675 0 0 1399.983057 34.5891918 6096.080728 0 68926.83447 5785.022394 0 0 11982.61688 216.1146821 0 3465.017813 12773.48325 487.1319175 0 11428.08349 61111.24964 0 1940.589868 20564.40921 9410.9441 2938.354345 2779.49189 0 0 23033.55911 0 406.1147498 0 104848.7076 59954.6607 20991.72224 75.43809868 481.7380752 84.33691378 8043.838458 0 0 11481.27757 15141.05428 914.4009197 +0 0 11386.92858 365.1628842 0 58212.02691 0 0 0 0 0 68.03388468 3786.1007 0 0 0 543.9934191 3431.219978 12516.81408 0 7260.800561 0 138.9194537 10418.66147 0 0 12758.77101 2487.057181 5967.904368 14009.84178 0 0 0 15100.24459 3865.380404 5585.147837 0 15097.11089 0 0 52397.10629 2477.281056 31460.22059 42467.23168 0 25169.07238 0 3342.536413 30234.31218 11233.60056 34181.16176 6472.503426 17849.17651 0 10339.80086 36851.76401 0 16112.58991 27146.19906 14132.75273 2952.727464 32509.7118 0 1597.090635 24501.28241 8299.41604 1215.302509 0.7631406652 0 10327.76106 2856.532223 1503.4324 1464.489138 1226.765009 18149.9567 0 39338.54349 43027.07759 8800.150036 119157.3499 2568.919004 46653.00883 31734.69288 202.3943673 0 7171.853419 950.2486496 661.6670376 16970.4676 25543.62393 34562.89447 37103.38289 34502.78217 14760.46489 0 0 32462.69066 3435.423651 113.1024457 55209.80692 0 0 19747.24479 52200.69776 3162.008736 7794.987143 0 65.05500988 20852.31648 0 8564.792828 0 1221.994262 0 9905.349204 0 25327.92211 27237.02937 82801.37414 35623.12351 1164.082053 5041.930743 0 20614.06816 11767.5439 44367.24403 45875.92068 21579.25776 2748.296991 4071.317279 137.6477336 2987.428886 2217.249441 0 0 34581.62819 5086.796535 7782.092406 65755.48626 80592.09633 34808.32784 29284.43292 45749.28842 6694.13129 49131.39591 127.0713013 0 7355.050269 32128.02762 13738.78908 0 1114.166036 30490.80211 9205.566007 12284.8556 0 0 2534.941408 0 6871.279785 6827.178806 59130.40033 3976.897378 0 0 0 2204.522033 502.4010489 0 18634.79312 20230.49758 1764.854505 61.84472794 0 54672.9397 50383.86797 983.8184998 224.6720153 51245.02186 0 0 30104.70458 0 25762.76162 24909.68233 0 38957.29733 4482.332499 14241.06814 103993.8229 34844.65503 2527.796164 0 0 0 47191.80979 3943.670916 3161.103571 7143.975125 35359.40729 23793.39038 0 4481.457148 21.2828456 0 7100.934474 36519.81383 93277.18886 6757.139452 2.770480147e-12 48.32001946 0 4602.626564 22679.41844 156.0446192 6422.493542 6024.158142 48630.55063 2437.914776 29893.24746 563.6536865 6392.924248 8513.854535 4934.480296 4507.039721 29006.93389 59299.84528 59950.42848 0 11142.26203 362.6701127 0 31961.73031 0 25635.91148 8245.302264 36100.73957 2076.24625 0 6089.79913 425.6173019 0 2420.269385 15025.01515 0 0 46.04966693 10336.30738 0 20653.93585 21735.80316 92605.70904 70.27237953 7804.668887 0 0 7063.814593 52892.27842 39.83306007 0 0 0 4280.632299 12223.50058 50393.97208 0 0 0 10180.62504 8293.986526 384.2192433 0 0 0 4218.253174 3854.028075 0 0 1802.124509 282.2558607 0 1057.798217 0 0 0 9594.644536 10013.26613 0 33536.68891 15144.92185 0 822.1279126 30857.33294 4602.039044 6844.771259 105.5655902 0 2139.891102 3293.377551 0 +0 0 9300.352141 0 37398.99635 12302.87096 3833.33785 6416.878058 33236.05014 46.15002231 0.01485195582 5968.830646 0 0 4381.905024 56964.1458 50102.82254 15047.28343 0 24054.33783 0 40023.62028 47254.48727 0 6194.058673 18040.96942 0 25.11255885 237.7819598 54877.75626 157.0909767 0 3378.007021 1506.071048 0 828.8962118 0 18488.88941 0 16425.96399 60450.72971 716.736458 39144.11558 4133.261223 29078.30169 36042.87046 3389.043363 5312.904904 13562.09391 36655.98039 0 9410.563611 5595.848072 18052.45065 0 0 1527.719699 3523.697262 0 1338.648136 66626.20965 26532.44504 0 31118.94191 0 5276.162411 29888.08124 2997.432901 40651.39913 21254.62427 21940.42304 13798.04244 564.0107786 3944.498462 14445.15605 6575.246056 52737.91443 13058.87351 0 0 19936.61374 8855.972155 66872.517 18985.88518 4662.577971 21029.765 27568.87562 0 2678.074 0 11962.63442 0 44959.82512 0 2239.468597 461.3101179 8305.967121 9041.202846 18938.25263 0 0 24094.53363 0 56160.92903 0 0 0 36602.32036 0 96148.4603 2020.843465 44978.91384 12487.21025 65336.74681 13649.75824 23284.5054 3129.194314 0 3111.303742 2008.982954 7074.598095 37280.08865 18943.67028 2893.191819 0 14831.76507 0 0 44587.72521 10432.88204 0 15276.47814 5234.17653 23026.14809 56730.06067 5580.561526 0 2077.15036 10337.32765 34282.97923 30780.08595 24874.3532 67176.91323 14452.51788 33236.46878 35215.08646 479.3528519 9874.302476 26319.44857 74456.60595 2451.1898 9598.645101 10506.9123 0 0 10379.2622 20781.63901 13405.66948 32869.96489 17846.15495 6169.9551 21320.6259 41611.72059 6091.943067 55621.71044 1719.144353 32154.29444 9309.637713 3932.61032 14733.07839 16043.24491 30626.69671 0 69555.69376 0 0 0 0 89.31414985 39004.11761 14503.96427 30210.44462 11444.62312 10503.40298 3971.949654 1678.926928 0 15459.65367 38910.97686 4788.706689 8323.74544 5731.267511 0 1176.003389 4313.576669 13438.49105 16.65377224 0 57486.6459 0 0 102.7686231 5359.006641 0 0 1316.51713 0 0 14980.42464 3828.162358 2.035180659 5782.096832 3011.041114 3117.621472 19047.18661 44227.48778 1290.200873 999.1773067 15451.09556 0 0 0 0 6845.076874 0 0 0 0 0 31637.07453 54526.04884 0 6477.156573 4671.507814 44891.78242 0 3366.613711 15957.89879 0 1159.992429 0 0 918.2864129 663.7217245 1102.973444 13148.44185 32833.11353 0 33350.52839 80.06447745 10207.1345 0 0 44830.39042 21338.24706 1450.239346 19218.51924 114.1800073 5205.413794 66194.17926 0 2749.582939 37223.86574 0 6639.723842 1430.050136 0 27568.94907 0 41728.62193 5378.564214 195.1359001 0 21860.6147 1974.188588 0 10949.42211 0 454.7682897 0 3562.320553 4364.154879 0 50504.7175 5168.638157 5299.624204 0 6896.080229 0 0 5914.944229 40015.50296 26670.32606 5304.965319 2.314034636e-08 0 3203.810221 2229.518182 0 6424.727353 +46525.52541 0 34.46951516 0 27647.48704 10924.53347 11497.30139 0 2247.752972 7279.595717 50981.72257 37578.63855 3513.469697 3182.818855 20208.33514 125.6067362 9277.223313 17959.2171 7156.006713 23674.1885 2382.289214 0 0 0 0 0 0 0 29236.62195 1774.319975 2380.274891 49477.69992 6919.646399 0 36018.50455 8447.033635 8827.117935 188.7135728 0 3510.970606 0 10234.80586 1572.15504 3474.334626 0 0 9927.85557 0 213.0565763 10935.12319 51052.71418 0 0 23694.43779 0 0 23.11033233 3121.117075 6005.107245 5664.406342 5686.987998 504.6939771 41324.12138 355.1950028 31.34152208 58624.61247 2167.355936 2100.395064 15398.58051 0 539.9992132 26982.15305 52937.90391 44086.65762 5623.977604 4779.72934 7759.663634 0 0 0 4666.19252 70017.12748 0 3239.605671 0 365.8105603 6741.068848 0 18907.81891 43520.49416 29026.86792 12101.6807 3426.95784 16348.11532 187.3417271 0 22146.0253 5346.060886 7707.19672 13589.19341 64013.95781 14937.91273 0.00512166067 7533.860017 14762.20626 18357.19935 0 14401.07804 23846.19183 1396.217064 0 43826.76465 2001.07878 306.5434197 1449.26406 8279.276287 26766.06158 17487.46816 15422.69508 0 53275.63592 0 17758.09605 5420.996017 95908.00302 23494.60248 44145.96256 446.6579757 0 4014.784612 5622.520982 2577.897432 0.003582430548 0 99829.89323 2121.597797 3831.278789 21554.80898 27796.57471 4960.048731 4390.297595 94248.85408 18196.09946 0 1009.274702 190.7221052 2659.362157 25521.27456 21036.71494 692.5823979 35026.95893 2783.547885 2685.214846 0 1946.597961 16711.38722 12929.76151 1116.781484 4941.461621 637.7058548 4624.9227 0 14655.83161 26449.21619 10271.23575 18165.0198 19162.81896 0 15891.75514 77400.96699 56072.8481 0 2980.447885 29530.9145 3543.67363 2233.387416 49288.8455 0 14920.45353 0 669.8567168 12538.96471 20846.93506 2295.61363 24251.68727 15384.04694 37844.53072 0 0 50735.52366 15736.1031 156.1989625 37543.29553 0 12697.13205 14172.31264 14889.98975 2241.647286 28293.65566 0 8996.111583 86386.72626 12193.06501 0 0 83690.83848 3163.980855 209.8115872 7820.99533 29621.46767 0 30788.75563 318.2189852 0 0 24121.40999 0 313.6012951 0 50.07067777 26237.31985 7056.75416 619.5063969 225.9467391 0 8095.547087 49459.39328 4816.19566 0 0 49369.50959 20926.01886 1814.501859 217.0234555 48.83946431 31815.11837 19533.49251 36771.62728 6030.323196 807.6679074 0 49021.47018 688.7590648 0 30380.39083 24261.63768 6887.847751 0 33004.33221 0 4817.929661 0 8081.068279 0 0 1402.885701 9936.471082 3284.721676 33615.96121 0 66.35332323 0 0 0 0 52632.90044 0 0 1711.774352 3771.623041 0 36410.86556 5262.923838 1990.062983 10139.72829 29655.69811 32115.87531 48.92948466 232.3620889 24301.10618 0 1069.94688 0 0 0 0.002632637204 7884.805482 86.23670906 70777.91349 17117.36525 0 39212.6559 25386.93101 1173.855567 0 3742.896807 0 23391.3728 15348.32267 185.3424864 +0 0 0 0 8809.0062 1281.614251 1905.632997 0 0 1107.622571 6884.460437 3855.308239 0 30865.60933 1436.138599 0 0 0 54708.79727 30.44160178 1050.052792 12038.73478 0 18400.68666 0 0 0 0 4989.680894 0 0 5914.913866 0 8530.464947 4356.472023 58188.49035 0 2437.278013 31604.91171 3355.78151 6802.412186 7044.183309 0 0 2758.573559 90945.51392 6568.946573 22868.58156 25.00497658 0 103.8672865 8727.448666 28023.88289 67943.07222 17860.91282 0 27671.14574 0 13718.89161 0 44429.05818 14700.08576 0 28437.41305 5776.834582 0 31665.34941 6362.97743 722.0401146 14649.41302 5740.85229 9335.756432 17790.28499 8732.212069 0 2522.646262 2383.368711 60401.05321 52729.08695 15684.0389 207.3587971 1119.13247 2326.297909 0 36020.58164 0 0.0003062321002 4876.894197 58117.60047 22698.4073 0 8598.048719 1314.369892 29944.78284 2636.456198 31032.8032 109525.2174 33080.25212 0 0 2876.058334 4.094254015e-05 30364.82996 3478.369734 18649.27983 28079.63072 3456.022553 23181.70069 8106.4108 29983.83483 28288.62205 16189.9538 2210.321791 0 1163.760547 46793.29226 171.6020982 14738.89096 113.5125316 879.0771629 0 0 17090.47435 0 35842.37482 51698.90119 42261.74469 52580.9392 56115.76708 0.001258609805 70771.49425 11412.88552 1841.940031 12646.70353 28643.60465 0 33081.47841 4954.090572 4952.981625 14727.18908 1002.351564 3491.27877 38482.90479 92.19246761 84.91181599 21253.19893 1582.108525 0.001858726344 30338.62088 15450.57177 36016.97382 60.5214439 0 191.7235865 55613.86503 64959.90072 54.05200812 0 34738.22097 23319.43213 8277.215102 11938.68629 149.4566778 0 53.98405427 21893.88437 0 2263.357938 20997.77511 2020.403279 77354.1047 16063.74759 9324.976448 38827.42669 44057.88373 15775.75083 34011.52509 0 0 704.7646132 0 27344.75396 0 0 32278.51713 26526.39775 22953.0707 50745.39123 3418.87289 17332.90262 1607.678477 8472.754487 1011.048909 0 19688.22943 68052.92296 14164.53611 37371.03091 4909.632723 2684.20381 60595.42222 6925.237933 26952.30335 30206.74932 23835.44208 66184.86565 147.4941967 0 3874.078598 15158.25198 0 0 428.4308975 127.5538561 25235.46382 42318.90969 2501.011334 0 0 0 7406.364532 24219.54069 4.785058167 570.2006998 31377.2895 11096.18972 5060.480474 18610.52025 12474.62709 0 35243.17233 196.1808047 23413.90625 0 16240.47127 64.69196111 2650.165053 0 2018.080242 3647.115635 489.6631327 18081.27239 6650.881493 19399.57857 86.77400713 9193.697045 25223.5256 4142.553105 26.8010691 2011.276506 0 2742.280437 0 0 0 11918.40285 0 0 1092.077382 0 12988.61736 0 0 0 4264.233327 1168.018013 0 52.41396658 0 0 194.6810198 0 0 41388.88764 36435.53926 0 14018.37959 0 27.9578173 31312.22858 1758.937662 34635.9037 0 444.5727266 0 18284.46504 4014.397847 0 4636.632459 0 0 4844.0926 0 13230.21871 50.09067437 57130.10489 0 0 5038.773181 0 +1905.470638 14723.45717 0 0 45883.70769 4029.692525 14176.33595 4806.54899 0 3227.119087 0 0 41.71782778 0 76.40521909 6338.834512 85829.89472 13548.92678 764.9819304 8130.459739 7120.218903 4220.328204 1628.796788 13.70056838 0 0 6090.371352 0 4579.77041 24885.14687 47.3623179 0 0 7571.451253 1366.756898 64215.68928 0 8.95147217 56995.85187 2739.617341 2278.000775 0 402.4741516 20716.04702 0 0 14732.36268 41004.03359 41081.21333 21352.44236 53.66767881 0 36616.26774 61795.95404 2.835842514e-10 0 27194.56843 98476.92172 5112.770038 1404.233827 21130.02986 1310.374609 2546.693164 131.4206029 0 0 3193.76147 69.19844095 0 61321.60444 6674.291272 17.78219075 9129.305537 0 10672.19468 115.3117308 2243.420252 8518.124086 25718.72067 1937.763296 39750.66261 4734.160539 855.857752 5226.648989 0 36307.6763 0 0 2993.524054 6473.248431 0 0.01630572031 47422.54807 0 854.8429635 830.4053241 1305.42136 46945.18289 0 11384.74967 44552.31605 296.0881488 17442.90866 0 4137.62323 27903.08865 15070.86657 0 18938.3312 16637.05657 13904.48038 0 592.0840494 11298.6077 1454.288227 4284.576905 18987.50651 88669.88762 24894.64872 0.1149921326 1509.702028 436.5922567 73701.58184 1.308445397 170.4297049 445.0718534 3929.962071 0 7777.610248 0 42087.72802 6048.6908 71353.38559 0 13498.67537 0 38637.65319 15892.3111 0 5540.618956 87991.26734 17593.62923 3798.148445 3299.798096 69104.02222 6421.312256 26708.45442 2332.883097 6687.585497 0 3173.037071 13350.94971 7410.464323 6838.158962 37091.18832 0 623.5628158 99.96430721 7053.67871 22479.06428 1004.705878 73456.37092 0 3.787799678 61913.36748 38579.94383 36981.9635 12442.11152 0 0 32120.5561 51502.68896 2326.083675 3835.235864 206.5142876 8521.777222 66420.77431 1414.456022 5800.72513 59779.875 8172.607732 31996.35637 0 20647.02801 23639.21565 2787.978033 6512.854806 0 87255.97042 0 798.6338939 2823.522925 0 31399.3408 21859.97859 5744.826027 1934.398674 2613.863079 10093.86208 1876.536141 9325.80458 44033.42968 53852.45911 0 0 0 3402.20853 24781.71112 65403.91572 5859.594614 0 142.5526884 5257.611305 1577.794152 3646.430348 4774.016553 765.8046977 2227.274924 0 21516.21836 0 129889.8124 33218.4938 10520.5943 230.527398 20950.66995 4137.927017 0 0 0 0 0 41256.58469 0 6310.676394 4582.169825 0 0 1006.484946 1981.785574 22044.46382 20227.54164 66887.70557 306.7133474 0 0 6962.803015 0 32596.81174 0 0 2548.66378 0 5561.31492 29519.90417 3426.119985 0 1051.805145 7205.677526 7227.532948 0 16362.82217 3582.325414 25931.61516 903.7301277 0 0 1713.87474 25787.8701 7.506444908 8902.468874 985.015549 0 0 23067.09285 0.5786987961 0 20090.7188 8949.710111 2416.41585 36697.6984 231.7444115 6764.136947 15316.24059 12.43911899 7950.931787 7368.774364 52025.99602 56944.60871 6732.833192 0 0 10458.93757 31551.50576 0 312.9628354 28625.62546 1747.716985 4042.772142 16795.85545 +0 0 41722.92467 0 41708.45493 0 0 5510.865966 0 70459.49014 79.46547829 71127.57865 0 424.3373476 0 0 0 0 84.07844109 2789.854851 5989.049782 2913.625001 0 0 39313.77278 0 41706.57465 0 6447.240366 0 0 6758.706832 3086.076015 0 19483.87841 0 14878.35645 0 0 25874.96675 6021.770525 55492.41356 101.7417109 111750.8826 0 9495.500904 2338.21625 0 42011.72274 71895.23445 4061.128254 0 47814.68468 8174.656958 105.1099174 5108.968803 0 9061.968171 3367.382293 0 14688.26026 77422.97109 0 2892.098769 0 3328.509199 30908.96186 979.180309 0 94399.01261 0 0 0 810.1638304 2474.432171 2431.647984 680.1540282 26387.84924 18361.24218 0 0 15871.57962 1017.883604 12569.95839 6746.205979 4308.344335 0 31462.18685 246.5078571 13141.15846 0 0.7051518331 23786.61094 0 4808.485756 562.8884235 3250.344014 2835.857698 0 1.205003897e-11 4153.384982 17210.49229 0 259.6331018 3906.410392 526.5165463 166.0382691 8919.290755 20183.13967 820.518306 8394.247044 38211.72418 4294.025202 59519.0833 64449.19968 31466.78369 19618.64319 116.4168751 0 11855.49388 210.6132602 108.9869774 4393.561836 14.66559521 0 3473.319721 43.24324645 5605.622256 1528.76304 62795.73539 0 59190.89345 1980.052673 15535.14974 57758.05271 0 41701.89606 1483.657841 63095.35373 51282.95241 15428.59097 11853.06587 15293.93033 0 0 52954.57753 1014.194174 713.3592907 28310.9762 104.4368198 0 0 810.4758838 0 2323.490181 3020.623775 0 93.79228286 13816.93551 24402.44764 0 0 0 4492.4431 8509.999959 16325.59972 5377.77982 32550.58284 12790.06685 1523.120745 13526.97141 0 53639.39607 1678.246056 7996.186061 20431.66087 16736.53691 5089.566425 812.9842026 20680.59158 21897.43641 3418.259014 42373.59376 10734.1347 138.5848763 13393.41608 253.0799369 0 6825.03915 56702.52973 0 0 20214.84844 4050.530858 8727.968334 2948.263753 27054.72869 0.01031400118 59603.22938 2626.970178 2386.254955 3864.389459 192.4330708 5235.378872 16595.13991 487.8251823 113764.8505 1780.421478 12682.38503 0 0 14207.22644 2467.656224 49885.25776 31055.23171 417.0722972 55650.81136 0.008860091526 51791.59291 6129.056895 0 69973.6173 25726.73685 17335.9868 1405.651353 0.02461724369 0 8316.033098 22313.3735 11818.40776 3165.932315 45437.40775 0 119030.5333 0 0 37510.08996 10787.50042 45722.95075 0 2182.744904 58209.7955 19876.03244 0 0 14.23464654 0 6068.855072 5012.048106 7982.675911 0 0 0 40592.38071 0 328.7454088 28888.33168 17726.29198 879.7118096 5798.907811 0 267.3563291 24345.12182 0 0 0 3903.739662 161.5120219 7096.243179 49.22440569 188.3594367 11499.79548 3027.573458 8716.483896 0 685.9104744 0 0 52325.92793 2.454647091 30772.378 4525.088174 0 0 59.16840691 6416.885399 112.0235287 5182.68245 7333.464178 18272.00651 27850.77771 0 7.795931608e-09 37.97774711 0 7455.164004 15947.36713 4686.017894 7908.948146 0 +2632.239085 0 9579.300328 0 20447.29421 0 3321.246946 965.7275005 23335.18569 14.13754084 1060.546993 1276.073453 0 0 0 5492.667458 0 0 20392.02188 0 0 26453.83799 0 0 9747.780097 0 39309.52739 0 0 0 0 0 22736.85437 0 29519.65937 0 0 2339.928532 0 1124.175852 4187.624628 18459.1348 42270.86255 8677.298151 31418.19903 122.5061188 1575.327586 3389.82827 5356.727645 0 18138.22068 31403.41057 18255.30516 12458.68431 13326.47058 1124.988657 0 0 45.62155651 4561.259688 1803.848393 24208.85053 1774.328079 42396.35206 68644.71066 64.7953388 2873.898991 848.5477558 0 0 0 14769.68762 8250.651967 54288.18255 0 0 12393.45224 55071.86036 1551.781406 58071.53881 0 0.8061252002 6923.772155 0 14588.12184 1388.009004 21650.41519 32406.16568 0 13857.38938 60601.27661 5536.525193 33685.96622 32865.77865 21422.15661 0 0 4333.019808 23562.74606 9586.315307 9484.114698 182.7009433 29001.21063 19583.86921 5556.324981 5285.800425 40.0513389 1557.862347 0 0 5737.184492 20145.18112 0 13416.28447 15241.08928 0 9844.00108 38.49905344 52505.65598 0 5729.349133 30251.49567 50943.78173 34654.97757 91004.2848 11683.9126 30852.93091 21801.02541 8.577765916 0 0 0 47588.20532 40939.32792 879.0975946 5445.38041 39846.4764 15500.64144 54239.05329 23043.49359 8905.081083 48254.79773 5073.165826 43123.77871 34709.59616 0 53560.6174 28104.92519 12471.67056 11531.45658 18423.43866 20438.41435 20777.79109 316.5910956 10846.35195 125731.7253 16385.93403 14404.07067 42776.19751 0 49202.68018 0 0 8256.776579 0 0 0 29445.12083 0 22047.59581 1405.994852 5704.990459 3333.995877 884.0257552 2065.584227 0 22449.62494 0.02911909134 38458.63711 9568.693902 3769.722227 6698.878043 77.37417998 59.15904698 47358.35821 6.825950812 0 1504.991736 2524.233858 0 55110.65181 36052.37029 57678.64776 0 699.637847 11347.83651 4600.790552 9756.268798 541.7676406 79852.8489 3284.343804 19164.49714 21534.50823 62427.93246 81.56103405 81894.9168 49220.86687 23469.35534 54146.23513 41196.09788 15176.50276 0 143.132016 7529.633549 46302.87203 43690.90307 0 31.37538964 58714.42058 75962.33719 0 2940.036685 2773.077306 5693.050763 16427.72396 5054.01327 59033.60685 66514.77652 0 657.1648771 6650.095004 17985.10322 4346.226982 22.296938 0 2169.550147 165.1819644 45423.23449 73.71318596 34723.0781 34407.65621 11765.9225 0 4408.486279 59425.39411 2130.209917 25485.88986 7646.205815 0 12931.19684 11318.84474 1684.34091 2241.482328 153.1116002 14561.65176 25187.817 484.8154387 37353.05169 4020.393314 0 17578.61418 35.23484878 0 6971.006774 0 5309.856152 0 53913.36009 51701.66714 15341.14775 30515.64594 13695.11494 56542.27963 2.269265081 3494.718139 7752.087376 260.5900871 0 37744.88908 30370.79376 24592.15641 285.9150586 14044.29081 9249.79046 0 0 0 0 0 2225.252564 21487.2908 0 26031.47949 7234.432956 0 9.511924218 13322.14621 0 0 17426.31459 +19211.55858 2682.843151 52074.85838 0 0 4721.682791 0 6047.277427 0 0 1034.513637 2578.625653 14726.11002 24602.24388 3241.19605 2097.882779 0 12053.53681 0 0 52399.85302 7126.551344 10564.42624 0 26972.3547 28367.99914 7410.553641 4134.985058 45.2679624 17591.11581 0 2977.239696 0 13632.66971 47875.95971 2493.496739 36054.75104 2650.380547 0 13472.78164 1537.538687 24436.28954 2177.314622 0 0 4073.185865 5875.260141 2.745703299e-08 0 27582.35207 0 70453.49668 16.22089183 8351.204273 8761.09492 6961.949048 26728.48683 0 59387.87991 10603.7179 47246.69645 0 143.35829 0 7139.82965 0 25891.4443 31835.27242 6.458025593e-11 101588.4865 39657.66147 10710.37354 1320.731551 18076.81527 0 40703.30792 21914.32044 6062.130968 26671.86166 65916.23507 18621.5352 45502.94917 248.4328275 0 63105.3148 0 99321.11323 97.55994278 46390.79172 31721.88178 4170.586341 19164.92393 0 140.5161826 33.42921638 0 0 624.4440465 5411.99168 8613.219181 45672.20538 476.5070001 39593.05717 8007.758755 24631.01523 0 94732.24544 0 24873.36581 76.79269654 11941.1245 7048.322819 0 66844.71398 0 0 75.43867544 772.7342231 10734.56654 66691.72303 0 8413.69979 3524.482031 2517.002494 6282.715234 0 24523.98957 3165.717246 0 57566.84563 2238.92428 14486.60812 4294.1389 77122.5808 1934.575749 2457.999042 0 5124.987398 3027.706367 28019.687 7871.758143 0 871.1154962 1545.393762 443.6725846 50853.07498 0 13637.59397 2474.284306 3280.676369 120.2660298 0 0 6377.435443 71992.10362 3252.861627 6980.448649 530.1852101 6265.110049 1405.662409 3990.981473 0 270.6089016 1438.555476 40791.35868 1173.628163 0 2453.334458 35629.17775 22961.56693 0 0 13252.0163 5.055253494e-07 41087.03269 2.444674089e-05 6297.165927 75391.41016 0 3.218452009e-11 2289.427478 44762.69599 3574.560134 72431.17636 0 58341.0266 55038.56109 22175.53484 69831.93829 402.8392414 16340.88333 4349.494578 12958.09003 9139.910903 4973.637368 44948.28944 0 170.5311126 6807.395889 7071.227901 46.43218559 0 10066.24654 8950.54507 2826.824112 107569.8748 1643.623463 3066.177922 18177.15158 1027.529685 8.189872354e-13 21295.84606 22882.91716 49269.15527 42837.26626 5023.880703 40819.8889 0 3762.867149 10204.78487 0 1935.215499 107.6549601 1.772203783e-11 0 6627.949632 0 0 0 39834.77667 0 6259.563439 0.308211899 714.5877701 3344.957224 0 12464.34784 0 34467.31668 41584.42422 83668.2236 0 217.3764042 0 1471.539188 7623.105848 352.855891 2449.668886 41924.24864 7622.276189 0 0 68813.59945 19347.38014 19942.014 0 6139.901254 9230.962641 516.3592945 24635.48359 0 27013.17999 0 0 2550.106344 0 0 1760.619413 21.82083169 0 345.7784991 0 0 0 0 0 1206.266305 0 0 34812.47207 12661.30939 0 23513.58542 0 945.259982 884.3668354 19242.62196 2939.655023 564.5052958 0 5272.144022 3054.214094 0 33.70585307 0 21800.31708 3838.444425 216.6776755 0 13913.87359 +0 0 2113.107333 66.4760081 0 228.2516368 2918.994361 11592.25511 0 0 0 0 5536.839201 13430.86596 10124.67172 31389.88316 0 41951.9916 0 42475.82005 37.16415248 2.114811385 134624.5734 0 4873.97008 86221.63972 13171.14459 768.8749279 27350.81633 0 5368.217246 73145.90648 0 64928.56691 0 0 8648.346675 0 0 38489.35469 0 22334.03244 33.07575728 7458.036935 4529.17115 29807.71957 0 35219.1313 243.8142074 26612.97136 0 0 40801.38531 81400.37273 3662.187285 0 37378.56564 50354.85003 3848.562846 5164.86402 0.7858514879 0 779.2805372 0 0 0 41113.38906 1394.398377 0 53978.84114 0 40933.30196 5976.435416 4711.728579 3902.938104 31.97116289 0 666.0130251 1998.57542 12427.53565 7997.553249 0 0 9322.705956 3337.262188 0 15999.64999 0 33415.32375 76548.2319 3247.087379 0 51647.57479 156.4491397 0 6440.111211 13293.16355 23771.24513 4555.850287 0 11341.65106 14938.85337 0 0 77693.71781 32477.56465 0 3809.225896 0 28221.01195 0 940.6055524 7055.633286 0 20719.19272 2433.670384 5083.432164 0 31191.80923 19363.12842 148454.2443 16374.74008 7471.043805 8851.25297 30573.15862 0 1285.935818 98.9216383 0.2782451386 0 0 6635.579675 1.503509115 5.04335026 4.685758483e-12 51705.66338 686.3692554 7145.49144 1439.787512 3050.419449 29195.12338 13060.22025 2487.551947 376.8789232 15888.71164 0.0302158924 11599.28537 55383.19236 0 39.12381608 17333.17453 0 18726.09333 0 3850.705103 25594.16433 3980.446489 3437.178563 7163.890507 20519.13147 36268.43675 399.6642802 1116.25208 6586.783844 24091.43599 0 4933.470897 9715.838711 1724.409265 27172.09687 7145.585659 0 258.0416989 109.3866374 319.7288809 13048.31198 84292.70734 0 14175.24922 2006.76922 3299.239924 1063.620149 1339.786139 2603.829299 0 1810.224836 0 62137.19001 5981.617678 83701.4352 18771.8953 0 23278.12611 0 1082.36176 7411.863172 14134.24313 3272.724491 0 88.60729553 54.77697684 850.5800227 2207.928588 0 40375.81976 0 17907.54791 11872.50755 12461.24307 15347.43726 70591.71757 4217.57775 0 1283.580518 7968.777111 47562.66875 1899.827936 10852.76338 0 23354.96344 3126.166879 0 3051.381813 3615.092854 35048.62705 4129.351118 0 5706.405577 28878.06094 0 61.24022938 26846.04126 55762.46864 78712.37508 7143.426655 2194.977607 0 0 819.3562811 0 23607.09054 46647.45851 30519.46161 148.1963609 54198.53726 16947.76091 61150.3737 8433.154185 35494.28601 25514.77148 1452.029294 0 5294.233867 0 160.8021531 7061.202641 32059.91845 34957.02485 25447.85159 71.11187668 4769.65919 3592.972607 0 10875.29404 35156.2959 0 2002.389314 0 4704.398929 0 0 9250.766057 0 0 0 578.1354209 6004.717639 0 4929.127626 0 33644.57985 0 15728.83699 0 2991.684518 0 0 0 194.4552209 1824.048749 74658.45008 27442.25157 6759.781063 0 0 0 902.9155923 0 1301.376481 5282.692649 +7530.684146 0 11029.53903 42989.88007 36925.96251 0 33601.40961 8289.059184 262.0563587 0 51030.81599 1035.609843 14366.78884 0 0 4458.853291 77618.98008 0.001411863684 0 0 15846.56539 0 12663.71789 2136.128478 3.958192349 3703.575216 0 8693.982468 0 0 0 0 13057.95887 1886.539467 0 2109.995781 9433.809847 43408.12329 0 17945.45272 384.1251409 13251.98091 22264.05102 0 0.0112508743 0 0 40193.09112 24.23788922 228.0002792 6919.318628 41390.01676 0 37152.12717 2931.168385 16231.27498 14071.86796 0 585.5177357 1822.410611 47412.34346 4904.524856 1522.978099 4815.482655 1693.351026 25338.39185 0 29371.78576 23795.43908 19718.64109 5241.107203 61274.41334 0 48334.6884 15364.86635 7300.842906 0 0 0 13651.84866 23502.76944 35524.82341 11.77333958 4455.164327 1892.955482 35473.54814 0 0 0 0 46812.51584 2525.874402 19454.34944 21400.00508 46516.71946 46.71448998 3108.092536 175.4184445 25010.5581 12671.47252 57021.08173 1680.405933 0 34011.46483 200.4498215 0 59873.99911 27.84903531 75550.35493 0 12050.00199 84463.99674 7805.732959 16976.79188 1784.701644 4514.158064 15128.86647 27804.21979 0 30.8472794 13275.59829 26085.67892 0 2305.034663 649.5714988 9613.500063 12449.09729 0 16572.78182 6016.388831 17.05068033 3896.091725 5666.080381 93126.89028 987.1372332 67876.39196 31719.23834 0 48555.5831 5478.628562 40995.19268 7390.83358 146.1544328 82.32548008 11287.19252 53251.2257 24841.18733 0 4.197383492 567.3298775 4609.564663 0 14628.07505 5.720176491e-05 5045.78245 2148.876533 16.68312401 1765.430358 0 4386.982701 0 24415.67989 0 3070.754016 5666.64638 0.3974185233 389.4439831 33155.15881 0 3910.784805 23282.8044 3305.518418 3418.399206 22536.45267 886.9787686 11526.00203 45496.083 34937.63881 23852.08857 0 0 74.06743574 5020.808928 6241.798341 2324.9152 0.08101539841 12736.72258 24953.93914 3414.022447 20965.63325 46818.71879 898.8793588 4029.274967 36908.6463 8322.256466 2301.121043 0 36297.34387 0 0 38193.31259 2072.32238 726.6624384 0 5622.669661 0 30246.71801 1.459969129 11501.77714 33299.50455 33882.61695 3618.942783 6142.176769 18508.24569 47195.82097 0 0 0 30173.79423 60287.32792 4848.94709 1802.950884 35980.92312 8802.532682 0 336.584758 26058.77776 1782.437577 9744.801445 2482.249529 0 220.1796756 0 0 11462.26242 0 6852.087967 7213.69002 654.7910211 0 5515.003372 824.162066 0 0 11965.54162 4263.585898 122.4940187 7170.896617 33089.22256 4085.225146 0.8814615439 0.05298937963 356.0497371 0 1.049575752 3617.056116 6198.939203 0 0 263.3423608 9961.859511 0 0 0 144.5716892 58805.50416 11155.83177 0 0 79715.23542 0 0 7666.298047 8695.217303 0 0 0 10891.78674 0 0 4041.879493 121.9006879 0 2110.082677 0 44817.18874 39596.15228 41562.79262 0 1692.209465 1995.926645 220.1097548 29707.0736 1.499844595e-08 17120.33481 17119.63825 123.1305871 2879.784071 0 0 +15660.12964 22622.99929 274.0175288 423.7204961 24634.41469 0 0 3189.376258 39.39183419 1134.104775 179.4672394 34523.40397 0 7981.862476 3709.757145 0 7936.143288 1203.323518 1045.579276 0 528.6512069 0 0 60935.48556 26339.54694 3343.486203 11166.53691 9586.503112 1997.763943 0 2330.69989 26068.82324 172.4580645 48982.87502 14346.79844 35517.90026 0 9963.290999 0 0 0 44904.95308 489.9926216 64957.5798 0 46203.96348 4731.320556 12559.29713 271.4715806 4243.464844 0 31413.14316 27254.98575 5796.928693 0 8836.953531 7548.545364 27490.64997 0 32.31724417 302.3813128 3685.416479 8431.331572 0 48577.21763 9723.480649 2228.322688 58190.63843 96.32393683 9371.823305 0 0 4275.683286 159.8577485 47727.26327 6597.222607 50759.30408 20072.24123 0 623.6004392 62.65904506 7998.240613 0 25096.35137 37.21389836 0 0 28544.12021 57435.88417 0 57779.25674 33907.34706 54548.46524 79.22707362 0 0 0 5438.646512 15672.76429 106505.2814 22694.37473 26495.7984 1928.191776 4700.831409 6.630343389e-06 135.2459767 0 67491.01346 0.006199163557 0 61868.36762 0 47667.75405 0 0 23131.99531 7794.74702 10579.84598 6820.833728 0 59274.18479 16092.19153 44173.71867 39551.69452 24776.02826 7606.992631 1651.522468 47904.53444 7856.586994 0 26297.13686 4150.151641 0 25717.75382 7521.233128 18953.93787 3525.404752 2984.270373 9532.913949 9589.101553 47572.29757 21601.99339 285.9695746 0 69301.14502 0 476.1856358 7844.270321 0 0 0 4866.772283 4260.646681 165.4598704 69986.94598 7081.013976 45792.334 3517.955702 12163.76838 5138.175884 30959.58769 0 2223.853897 66441.09685 0 4915.641088 12027.70188 6679.950922 2681.506209 27262.99187 9739.195249 3678.646976 8138.08164 0 17192.45175 29.62266746 0 24051.1894 67485.61579 5012.88673 3305.894208 0 43936.99319 11.59402899 15142.53845 8020.093067 0 5077.349438 105253.7383 51112.85353 0 31402.94862 636.7665575 30740.46848 0 1961.068553 3404.460793 1725.734699 0 444.5574674 2766.118046 68.18258823 16614.0616 0 4987.228491 4399.825863 77506.47829 36260.25546 49262.71611 6336.497788 16309.5777 0 10908.85859 40498.92178 2606.143758 1628.39496 1812.179261 0 13852.48904 0 42591.21342 129.4255785 72129.43114 59670.85274 104015.7985 797.1916362 19987.26067 24412.89797 11962.15367 41926.44171 9506.658775 14511.27321 3206.973454 3979.247647 36677.01604 458.8481926 1657.027729 0 444.4641188 3030.922324 15961.55316 1881.409649 23905.20613 0 19345.75109 31650.54776 6641.58982 0 21918.61527 8359.619281 0 0 37.05688025 0 4762.797249 1933.643562 11368.51483 6678.365237 0 6917.884251 0 20641.62446 0 18650.51813 0 246.7716242 2387.498699 15281.65887 563.3692821 0 3710.298584 20951.119 175.2055808 2839.956228 0 3598.307458 64801.08351 0 1335.467136 0 23811.15471 0 0 6406.334621 0 5796.52437 29134.46763 18631.3312 11447.81013 6760.847625 3057.968623 17181.96687 1827.61359 50.65893506 12823.55021 7474.067677 0.0005902869335 234.6881513 0 4892.672449 +2462.468768 11869.0912 68154.89364 0.6146860739 6.085472877e-08 595.3238169 0 10034.23287 47679.6498 5304.129394 0 39395.4173 0 22124.3971 3007.8305 1931.001149 7.642659003 0 0 0 3658.27848 0 0 213.6637532 0 11368.03378 13028.54071 0 0 0 1856.360944 2561.428141 0 0 0 0 0 65.56305785 4129.2272 0 1597.052267 0 0 4.634757153e-05 4794.323424 16279.94289 27272.25159 11442.18379 260.1474331 32788.46744 0 36563.53974 17495.5401 0 3936.785385 40531.83206 3.284706921e-09 568.1763774 24576.87244 38.60401243 2262.3296 89.62691629 54063.81287 0 4236.00636 0 3183.423635 8323.023844 13650.86001 18183.12407 4399.597959 0 155.6938954 4653.27577 6952.223387 62045.85889 0 0 8763.625473 5745.624898 0 21250.22961 0 0 0 46911.90831 156570.5325 11586.48767 0 3849.382708 22995.44452 0 21242.48986 0 4208.068098 29681.56545 9067.122135 0 2879.072271 4391.572668 18948.67857 39622.24845 2353.661451 0 2172.655692 1830.421495 26908.30776 106.875607 7719.27113 35849.81433 60802.23868 24696.25726 2730.501812 50454.2973 1679.856493 15729.77882 3002.975346 1.374392413e-09 52136.00311 2350.332055 16425.15703 9594.208219 32287.9895 7498.823155 3465.179954 21905.53824 25398.21606 3085.550453 35.09768202 0 2.120237428 1.822978517e-06 0 109498.7205 0 268.6314324 45543.77311 0 800.9765937 0 25560.61391 30719.99902 35816.06771 13678.06437 12645.76377 7474.883994 47539.77565 25349.57731 48902.79607 0 4956.136064 41838.83695 21120.14476 0 49704.66701 4989.701706 16138.76959 4485.785453 29130.75749 23084.66353 0 19572.119 64.85744411 4906.707431 296.9803101 0 0 1992.421748 13890.07895 0 21575.593 12070.14851 23587.85616 0 36133.28201 29312.85806 92976.78973 77847.70773 36545.27318 3431.981548 1048.688362 0 3832.470336 7.683809619e-07 10667.14985 4515.658028 0 5276.07823 4093.669171 72497.74187 322.4667721 2861.120486 0.9121046676 6684.480161 0 77.41155184 16442.73138 22433.84893 81480.70512 0 4027.207409 0 2020.299144 0 10952.57116 84124.60724 18430.42126 6767.608399 70880.8018 4540.576027 1232.9018 47866.51953 0 1474.659923 1659.721144 20508.26305 0 8781.574128 3603.524337 36200.84102 68880.44603 6546.220856 0 10087.51836 10806.21258 32744.69902 0 276.1624572 11524.44384 546.2015419 30149.17516 0 62597.72299 190.8076494 301.20288 196.3449169 15377.21783 0 31917.87532 47304.64235 492.513522 46558.522 0 0 5304.59106 404.7633705 23439.80429 347.2794431 1575.18005 218.1466632 3944.570346 42.13272566 0 39495.01282 0 8388.053184 963.9336433 16407.97737 0 13814.39655 36108.23248 28102.51467 0 1444.523333 298.1316292 34.75588797 70048.70262 252.3458072 4274.499344 42487.06605 0 1239.512704 34146.11734 27079.87169 4069.412912 28664.10955 12159.27021 20133.7772 1736.765943 13266.06578 11396.74944 56.26191553 1522.544674 9821.987582 3820.842789 22628.12665 21322.16369 2102.478211 0 2395.090623 0 0 13849.56962 30103.4413 43997.13488 1091.304623 0 6096.389005 12850.19884 0 +10467.34266 13837.00762 0 0 8884.730328 2687.957719 0 10766.9763 15154.44098 0 6693.941144 4839.942993 0 1903.89492 17733.76467 7593.598605 11300.42811 0 1021.940587 0 3076.55429 68611.68785 3161.725367 0 0 46748.51683 8621.091563 0 68078.38245 52621.98307 813.3985214 3859.788657 7146.479028 0 0 4940.644415 124470.2959 0 2822.648361 84864.63031 53736.01454 0 15550.17736 0 16213.19186 18639.4763 764.3090207 1475.371322 24.84855945 54481.93275 0 14294.54588 24548.56116 2803.822733 21029.05244 0 40243.78643 0 122.18295 4704.428595 2194.515934 55283.30236 960.1917986 67354.17778 0 44769.58976 16872.37577 59.10620385 0 4174.37978 36517.07179 8867.553847 23139.73847 2018.949537 0 21967.74785 0 32021.20607 0 61978.91842 19164.41738 9544.276508 46839.87866 3785.780662 18196.34032 4858.734916 0 15868.76136 18404.40055 15247.02668 0 0 4504.195309 38877.14697 61880.00297 23753.37553 35505.53427 38437.47371 31913.68763 55131.1105 9369.507199 2039.651606 3163.190578 9626.346617 49114.40086 60650.1849 2.414377804 0 0 10910.42755 18766.50734 115196.6549 5283.122815 717.9915077 2902.619025 13738.00014 10676.09093 5027.721897 9436.239577 36768.96334 3854.699037 1776.048057 0 2388.971429 0.1075285964 36792.88772 0 0 107747.6647 22316.17654 172.0625623 0 0 50756.45967 10472.89175 12057.22281 0 34930.57342 25677.04804 1165.334432 72.34140793 4850.68925 26065.42688 2168.058842 55136.44923 9171.561737 0 4366.774129 12081.59745 3050.733878 17521.87957 10529.78747 35683.33722 43013.97116 4484.093927 4171.725543 1580.081251 263.0704284 2774.062494 0 85427.07786 4458.548931 0 243.1147313 10266.27431 0 4276.593339 21697.56628 0 21063.99647 0 1354.285211 28939.12148 44950.18877 38515.83168 19245.88041 6173.78663 0 50323.06952 0 8716.28315 57090.99284 23037.27088 0 54429.78841 232.5041891 5877.887944 3976.824309 4534.251723 16661.33272 84013.00143 3253.49723 3656.114042 0 41516.84186 0 0.1159216543 12326.65456 49143.79408 69476.70389 27566.08798 38896.82873 38680.62352 4315.921937 12205.82702 0 0 0 25612.82972 40552.57308 62865.45462 89.34733522 245.6714147 0 83.08291448 45494.87298 20365.5395 0 17967.61047 30191.45819 35.19030772 8988.754381 27083.74465 0 0 17077.43035 44874.30065 49515.83059 0 0 41663.74734 39733.18606 14484.08526 39955.30279 2559.791624 17142.71013 23630.9475 21933.69705 0 0 1762.687402 16752.93263 1695.724106 0 0 36345.41996 0 55269.45987 0 9472.099618 0 19278.13258 0 4483.880763 3263.062182 0 42.53600649 767.4955391 0 2567.964271 8838.562418 28595.87621 0 15536.43392 22119.26067 4880.277355 48644.94984 5239.891552 0 0 2609.697139 7393.780042 1483.738214 297.2180173 2143.336193 12103.90651 15105.14384 91.69737196 11171.48344 0 142.531119 3934.43022 59677.19248 38.71633137 3574.712183 319.5408001 0 9365.113162 1630.893342 30564.40914 0 0 0.3480512995 15582.45871 18366.1846 0 27151.56318 0 0 0 +5166.552651 3844.305149 0 25059.35328 1303.4658 0 15192.96809 39303.7731 0 0 49276.61314 223.873174 20441.57096 777.3173293 0 129.346875 559.9034611 0 11490.60873 1941.790642 754.1336288 24847.92741 64199.12643 2620.923646 1760.501935 0 0 63152.72751 0 5124.701512 0 35620.40552 0 16395.48144 0 0 34234.9402 0 1557.297746 0 2096.871897 15.29063877 51958.68672 0 2466.299536 0 10515.17733 0 0 624.4517224 0 0 8471.397777 0 9221.781495 37517.72982 0 6021.12486 153.6929685 2059.052419 0 449.3748385 38986.86549 4638.78421 40.96445543 42681.20836 0 0 0 0 17483.80178 1109.427776 0 0 7210.557726 7859.654302 103.6377291 30762.56458 1368.019071 3094.204902 10324.63052 62908.73611 0 80039.6543 11748.97054 22639.22976 133.3209026 6923.366654 13229.41301 22213.44403 1693.518585 0 25239.57186 17391.44762 39336.30556 0 0 28715.71092 29272.35623 0 1412.424902 15857.18523 2780.821943 23.02887251 0 22192.39896 5226.790845 808.9603411 15560.09808 27756.97251 0 43206.92584 75862.61607 1108.705352 57636.01821 1152.350278 5815.917926 10358.20814 0 39313.17426 8607.624339 14739.78787 257.5693877 46751.83398 50139.4189 8845.597964 0 45.73705945 2023.150827 792.1231932 29136.22794 9720.430596 660.688394 59.93183079 972.9371527 37607.16076 29126.09648 0 0 1065.267088 0 0 0 0 30114.24928 0 2095.095799 815.4843764 14312.1352 83.75339453 66988.29368 216.6891511 0 0 0 73323.34859 10158.31337 506.218578 0 13804.01657 9649.611329 405.878819 14485.65379 5068.175887 30710.29988 0 2.718084348e-07 11884.02262 16644.65834 22906.76452 0 25770.88249 0 32937.08806 3549.663807 92205.87325 54.2860437 3009.385569 49341.7217 69.59076816 12216.2353 2107.645265 12855.67934 2808.308064 13408.83094 2777.988995 0 14761.2169 39409.19884 5783.218903 0 1152.863154 37.94500744 11312.282 0 1310.344222 0 16625.88752 0 5327.917156 9199.127483 7318.243507 5775.569375 5887.412661 40443.07357 23926.01173 0 13923.21102 13918.26563 155221.2636 0 1862.763283 45184.64267 12959.21149 8751.925462 0 0 54950.0824 6635.509199 39471.07979 0 14441.10163 18120.27468 48506.14778 29484.41936 69455.75708 8067.020622 11437.137 3468.974516 0 0 0 0 0 0 0 0 10715.77405 25343.30292 115.822705 5426.886934 38364.42889 0 8456.395038 86.0343367 0 1285.352589 13304.80923 10868.78747 794.5401744 2631.177796 1.123300715e-11 0 0 28668.51616 13957.06867 0 0 48673.6901 31233.11737 6492.561483 16499.67268 1719.091969 42.64595912 4373.090839 36511.22299 0 0 2247.199524 5817.929749 0 37435.65626 35960.03778 0 19000.31489 0 4752.767518 9.805874223 0 57055.62482 5826.535237 0 3499.585612 3214.057319 40052.94706 22269.65257 11578.61816 23329.07346 28.32967188 0 0 2422.493224 0 33569.32562 570.4654747 0 0 0 13366.37162 4413.133097 +0 0 0 0 0 0 0 0 0 3006.309193 0 0 25419.13504 0.01499321205 0 27133.46503 0 0 225.1259303 25.8930773 0 7740.746941 42.32670491 48649.07742 0 1331.453122 20207.59544 0 24650.21028 0 175.8963839 13389.22204 33370.30396 0 8937.452971 523.2850137 398.0430786 0 23300.19364 240.2654601 0 22043.64147 31887.80036 0 0 0 25548.28243 0 0 31.12543506 0 0 0 0 843.5750211 4421.684518 43132.7703 55029.30149 340.4789917 11652.17263 18018.72657 15325.23971 3192.642486 11129.79376 1475.702932 12139.87698 7631.741534 0 0 0 1459.831928 66491.67073 32107.88598 69409.49434 2191.354496 2537.24499 15328.3015 2899.89667 16514.61005 0 1745.958479 0 58693.30026 20671.21228 0 49942.61074 2585.945026 34211.16205 35748.2985 51032.1104 44953.74099 17229.61514 4739.670511 11301.4 949.5360529 15881.45322 6740.715483 4385.20161 51841.97771 14797.83659 24786.2909 60756.19304 249.9073042 2325.536362 18392.29019 4480.896076 61569.39429 143.6350876 14966.17654 12617.64363 47923.83561 0 8898.208997 11231.78067 1596.571551 12167.8962 44740.58347 40731.29875 7504.611322 12697.4321 0 60917.57167 3139.611085 16923.25028 8291.974462 3693.484039 19120.66014 4909.718407 0 17445.37064 9719.789173 9464.484719 85917.96672 3607.533625 0 0 37581.06247 68654.50068 26372.78869 201.110531 29799.89975 0 5351.777912 3933.848699 24914.01888 0 22037.86058 22742.08431 0 1088.490243 13304.10404 2313.479002 49276.05376 9139.547745 0 0 7.800628928 29876.88362 8908.129353 0 56461.13093 0 1544.742221 6752.654843 51140.59332 12596.48126 1985.025467 36796.13184 42974.97363 20189.69545 0 4767.521292 0.4583983573 318.9887902 65821.34701 64529.08738 8312.748007 2226.195907 1301.382695 14007.253 2287.806579 4882.636634 6842.835745 751.264131 0 7557.816536 41388.23833 0 0 45047.17871 4311.913525 259.7065279 11690.23343 28.82853835 36125.88904 43178.97351 1551.886104 61386.60497 0 0 0 895.3705656 11770.93937 67746.07079 23629.25786 0 1903.217366 33591.4527 4348.281932 15942.60992 22242.28389 23704.19997 8549.076014 4045.750432 32811.38646 36693.47022 12811.7122 6039.396029 3809.446511 0 0 27.8994717 34717.84428 0 1742.674468 1837.704575 419.6002035 1607.701792 13212.05602 0 0 1728.667637 0 1887.69412 12385.68067 5827.006519 21410.05963 47683.17644 185.3253794 0 0 0 115.2378417 5862.375562 0 16618.82671 0 0 22687.80573 0 0 1969.616807 90768.05407 313.3291157 0 7878.513742 3965.717102 0 0 18710.82238 3504.573821 17583.49646 51985.8155 4.926011699 0 1655.265749 0 0 0 9090.906589 0 724.7240203 93612.08991 0 993.1610656 15414.63363 656.9914093 90170.34971 0 3095.139483 0 0 13157.70354 3600.106536 16082.67258 73.68620252 0 3288.363868 21492.28594 10134.53414 213.8198429 599.1494369 0 14971.90754 812.4131762 0 19664.20781 3068.719939 0.08154485473 1.026027474e-14 +0 15799.62228 4624.383328 0 0 0 0 0.3334743378 0 0 0 0 4504.993109 0.004816668236 39355.64189 8846.954734 4189.14408 69488.47228 0 28667.96945 0 0 2818.336328 0 2423.885868 327.4136066 3519.726909 3711.866384 0 68.83731695 0 0 0 0 991.2387318 19716.87734 0 0 44286.77576 67552.51523 0 0 0 0 34082.96161 27333.97269 7905.898067 3643.61365 13120.59458 7018.894017 0 0 44632.43523 32464.39577 0 8326.037194 262.9877065 40.63699287 30024.27366 289.9582716 0 0 0 30.67160498 0 6245.084778 3.357413493 42388.89523 29361.75834 0 101.1275826 2002.461808 26365.69181 3334.195643 3543.333554 2940.097003 42676.25031 307.661347 0 12702.96885 9321.878376 0 34344.1609 114.3235358 3090.580528 14651.04088 15556.72856 12292.4324 0 2383.774565 10694.23587 5310.779275 38012.064 34930.68937 37572.28797 32112.53275 0 0 3290.30821 114776.5608 3522.648809 3193.090086 0 7317.135449 0 2166.662576 3445.519681 0 49218.7472 57976.47972 18227.68108 54.00404101 18301.92971 331.0071185 18095.0706 0 5.6071446 8697.277257 11470.3238 55582.42335 19444.87857 0 3360.781057 2162.113434 8703.430869 2593.52566 40329.48872 18183.66728 0 10194.07558 384.8838787 21082.37617 5268.207405 15362.24989 8893.247992 592.873748 0 0 5525.761095 0 3192.955496 0 8047.489864 11640.9938 8362.390344 87189.54562 16019.53719 0 67172.75736 0 66499.25018 2090.895856 94811.09971 0.02280878108 3.795109691 14054.17847 17980.97449 0 210.1448306 0 1694.02821 0 14492.62379 0 0 0 53572.02568 28369.34773 22766.90154 21400.09879 3519.522071 0 16559.03714 623.8106895 0 0 946.4442724 4271.256555 358.7071515 3541.224361 48936.10229 4924.441229 0 11234.2819 103526.237 0 0 53194.60805 4475.207334 6.935791753e-10 0 66530.91797 22209.27868 0 10492.51679 0 0 25961.75086 204.9513573 7866.13536 24660.27635 0 8869.709594 3369.192635 0 8896.43578 0 0 0 69803.00321 20623.552 39.82120046 0 21163.82861 20774.30257 16982.92326 6252.16199 19504.05857 220.4437071 7.28631666e-08 6166.658392 0 8.316568618 15918.4822 0 11117.08603 48.92274142 30957.10701 3702.851116 0 3237.387311 23.91134495 15867.5297 0 0 27303.35746 13130.13471 3260.295631 18589.30689 0 104.7300831 606.0804619 43.41356737 2076.911333 0 1432.651735 878.972745 0 5539.708289 0 7645.904266 7378.242834 32200.1851 107966.111 2000.830147 19684.65743 1480.107063 0 15999.79262 27222.67583 951.3265839 5417.81224 27077.27784 0 1357.065893 5251.838944 0 27695.04917 0 0 0 9642.512139 18734.12981 0 15474.06095 0 9340.934278 0 0 3880.826221 0 0 0 7064.333381 138.2680394 0 6268.398541 3244.429966 0 0 0 0 0 0 0 7785.516214 30721.34611 0 0 821.1198875 +0 3422.559979 0 12964.95837 151935.1787 215.9455641 36745.43404 55387.05474 133.6708633 5258.260426 0 0 0 0 27789.14871 0 0 0 692.2140943 0 0 2654.207642 0 9.562022717e-11 59207.79381 0 0 14231.56285 697.6092839 35402.35962 0 0 9022.951507 4739.502106 11293.01844 18903.82298 0 0 0 72178.17413 34283.39393 8472.994715 635.6877188 30788.14948 3300.900031 49462.03013 0 994.4913677 15111.14853 0 40234.44813 0 0 350.0763068 18146.38775 3809.451362 9202.876163 65920.64542 5535.381289 11842.66976 0 15320.20333 0 47.94950734 37178.66196 195.0865886 1267.4272 2013.486431 0 2283.114464 4304.639711 3104.206102 594.1496821 17346.39568 1439.222409 3534.730591 0.003885036781 6512.969792 45153.64598 3320.086978 19274.63336 0 4379.979261 0 42301.45851 9443.357515 216.0296591 7384.676963 0 0 0 62832.64532 13527.60352 3261.437889 24381.17655 35764.89376 0 36204.98812 0 49587.07709 0 30978.47189 0 70144.77255 2385.182327 9960.905407 41802.22312 31902.3108 2449.704922 67.3232553 42317.13808 8776.241056 0.0444395128 66829.04168 33849.27759 4601.892057 0 62876.80025 3208.787395 16883.04922 62489.29934 209.2918499 173.7107418 62996.36832 172750.3982 1300.04565 24961.21679 1892.956789 8517.109136 214.4132515 47676.50549 2508.441902 1.698365547e-09 0 3216.928044 38743.21134 25765.57737 474.5990006 0 48382.28908 30862.739 16480.27427 23643.42119 7279.550355 12351.2258 2383.722143 21063.52588 11276.56587 2645.399351 7805.640943 195.9118858 356.5483987 37533.96902 12120.65881 0 0 0 6972.574378 0 0 0 55534.06669 11166.12874 17579.51446 56812.37234 0 22915.92321 49445.83159 0 30293.51192 54.92667589 0 612.421863 23670.16147 1874.266746 11338.57119 2075.906772 967.190866 38204.14603 71965.82702 85768.56125 214.8501002 8264.115278 0 823.178815 367.6577368 0 0 0 15478.25105 566.8164971 0 14415.56347 0 4036.869844 32.42509604 0 2140.315852 2876.581279 7849.001414 0 0 4666.956478 0 19557.66259 1712.08907 0 43515.02341 0 31719.64098 248.0649239 0 0 8040.704873 0 3596.104107 15736.33844 475.5686821 7286.527814 0 0 0 0 21439.63354 16206.89943 0 13580.55568 1479.461284 10191.71311 16100.02674 0 104.3185137 14107.75708 41107.30334 151.4753531 17719.9754 48737.13658 2307.567899 15387.74575 103680.0897 0 15446.76411 1073.107059 157.8588115 0 0 0 7159.429023 2543.976746 251.8322402 0 0 6863.533826 81.19002136 0 40163.1269 204.7415 3085.015606 0 0 1866.932298 2704.516907 38.39117924 0 0 14134.23093 7537.20808 13299.48862 0 0 74011.50312 11892.52913 0 17464.10985 0 52316.46745 0 0 60156.8933 375.1448938 0 24351.15556 0 9407.034606 15023.5902 13673.61764 3937.677637 19989.22088 4651.49415 19656.69697 12517.81281 10447.8309 24923.56431 4098.394913 1146.597736 1280.088717 0 0.1925680001 0 0 +0 1083.375346 10598.85899 0 0 1513.833329 0 591.0405691 9113.637919 241.1177708 19262.83043 0 0 265.8490469 22015.3147 61284.73256 4255.527633 4416.931646 0 0 0 0 0 1004.350231 18744.35392 0 10.40940452 0 0 12704.13536 8875.81868 11666.14784 11051.21734 9426.250693 9628.592731 14792.37697 17895.86168 7283.64575 0 40820.76789 17081.79734 15176.9112 37840.56235 1252.089743 12412.61714 19833.94298 0 42834.3942 30911.11675 3647.92771 5526.432168 8479.751304 17432.03548 7156.246336 51.76435859 0 25276.10812 251.8438074 0 5382.682992 63075.56758 11429.23679 524.047815 1766.805691 5137.081894 5163.628238 36316.81202 0 4220.869639 10.10739237 16936.251 32345.95136 0 0 21618.24887 0 0 9.920675697 1892.532444 2.829017017 14463.3141 0 25956.01622 3464.937643 0.4757698413 0 0 2308.385359 30663.31683 35463.53 2470.501749 2436.231171 34357.43672 826.289504 185.3219003 43915.66363 57274.87514 15273.74514 86101.60246 6286.281248 1552.372538 70853.76359 14323.08731 7551.322134 46296.48301 0 19898.28851 1875.543036 2480.446304 0 36856.47633 4054.077446 10528.85548 3457.809034 11060.95632 60973.00913 4180.832162 40164.8024 5701.16177 29390.31031 0 0 31963.76237 2399.534441 150.2919416 0 89531.57052 0 20452.9229 6962.707271 202.8640318 24633.79931 0 0 19246.44158 14950.87142 28931.8398 0 0 0 43.04533251 20152.41916 42714.6274 0 31617.64387 8.046592126e-09 18266.98098 2307.736079 0 68045.22748 3998.810001 434.1462475 71035.50889 0 23417.25457 0 31982.5927 2921.13911 1656.373892 34015.96762 164.1675184 45760.9889 3329.443689 2474.051893 3225.800005 102146.5351 101.1531055 0 8594.359446 71080.62795 5279.732264 12149.6631 0.5525742566 161.126656 3135.365099 1910.129296 0 0 9063.643633 13086.56887 20707.6355 27730.12222 51327.05478 405.6535101 0 2980.762146 6851.39214 28080.44473 158.3350666 51761.30952 0 36846.07623 34618.25656 4192.627338 3677.145553 16059.05997 48.42366753 0 14434.70317 0 3000.374986 0 0 1658.01072 12163.64959 134.4369613 20868.88229 0 157.7129405 0 4203.740044 15028.40924 16560.00359 442.0477416 0 11708.25973 1162.592724 12633.22485 4439.702898 1155.316889 138.2569642 29841.93723 0 2764.612609 71418.55666 35664.27838 20103.314 10236.40405 30000.0097 5510.571472 0 7029.358652 12025.81359 0 10183.20776 0 4935.337658 59.14945669 2838.91556 0 25986.97785 14474.607 2525.251164 10412.16839 12127.53965 0 0 487.8560677 68629.06287 1310.7267 0 1077.855795 2672.250096 1529.458742 23848.38788 19348.00459 0 13463.20058 3063.087647 7494.364831 7581.413376 0 0 0 0 0 1098.366673 0.2511574464 33537.61184 51492.73447 24289.28406 0 0 20672.46993 16049.6942 8288.855746 1469.834857 2148.523124 25666.734 24244.76213 0 0 0 19424.19332 196.3457011 2421.645096 0 10373.62436 0 35043.13088 0 12846.78178 0 0 14757.45864 2.043053524e-13 23923.01005 0 5828.216871 10488.35373 +0 526.701935 0 74815.1069 24804.5428 160.1562126 28370.44112 3431.896845 6650.092557 0 1083.068234 0 7161.188073 0 0 0 15113.04799 5249.582487 37396.67868 13021.91393 1880.726059 0 395.5640172 681.5615503 162.553059 1212.918709 0 0 0 7766.215473 0 1071.624018 762.6110359 1029.137056 0 23454.93299 16855.15181 22972.4603 287.0103793 0 1983.735607 0 0 51476.96314 2907.524866 3468.486019 2810.391115 0 0 10516.41577 49727.70291 1878.936753 55951.02583 0 8009.136061 0 1742.942089 0 0 726.3685004 91307.70541 12603.78175 18684.29786 4001.055151 3666.058221 32085.52227 0 220.40243 68540.47607 45368.23724 0 56941.97764 5486.901362 312.4113558 4690.097339 19861.95806 372.5908671 19966.99322 2936.557742 28629.67875 13880.04061 22071.24668 5364.950332 1108.027692 47391.53876 0 28431.98509 2205.404308 2603.652791 17725.64517 0 4614.119279 32670.51876 3811.001595 663.6004395 2665.990255 0 13010.39232 7062.826976 0 0 315.0731977 2936.33589 6002.065551 15166.5615 25977.03786 16975.70629 0 29511.0964 9008.312035 0 17451.92343 0 5.159367884e-07 9050.51827 628.537155 782.042583 0 3347.396866 0 3103.819527 4708.763203 4275.358969 41693.8372 54543.38373 38735.44371 70.1287476 50994.04599 0 9130.669673 2860.111879 38412.61912 9564.142084 11672.42476 1587.478028 61253.78389 21691.41831 39080.50681 36363.46259 5.838799702e-10 0 0 33865.95115 28735.5678 0 13999.1657 2192.292107 4347.471322 68560.06642 8458.897676 55385.0055 0 37898.08063 28537.34079 0 0 0 3516.178791 0 0 12398.06872 52019.31841 0.003767032156 8.4809821e-14 1245.814549 117.371252 18794.43638 34.68214022 6827.087942 15657.01928 38669.06102 33560.63313 120.2397301 1509.415467 0 29935.81688 0 21860.92092 0 0 1.94893403e-12 32070.23906 776.1884535 7186.017285 0 1415.748469 21094.07722 0 0 21862.77469 16765.49592 22792.51654 419.9894981 0 0 47650.82994 20367.74019 18901.40808 3194.398697 0 3449.890024 18977.46235 20199.42354 0 0 40605.16113 0 5057.671303 0 0 0 15.09025285 26813.58721 0 2695.953479 9.411449916e-13 1811.688974 0 0 0 16536.03356 7267.500846 0 3936.480768 27598.72164 28.99824328 2.058527168 4313.316246 0 2787.046133 31738.67017 14037.43256 0 0 0 40678.51806 8339.072093 31232.73837 0 20591.97958 121.4626608 30947.31016 0 19620.32659 0 7617.755216 0 312.0184735 0 34.36241968 6522.162815 3774.873335 196.3233549 0 3213.66476 13.3586065 0 0 56736.70592 0 3580.825531 0 100197.3679 0 7438.32961 128.236681 714.1133312 0 5505.809692 49495.77164 17343.60702 307.5333524 2509.958294 12585.63067 28656.11135 0 0 9573.640935 6084.018682 877.3977977 0 11360.55284 3071.43824 0 5465.957234 0.01125752641 0 6982.206677 0 7.313818639 24233.99088 0 469.187449 1264.236158 0 0 0 0 0 0 +0 8308.846121 0 0 2446.936575 12942.31455 0 0 0 27392.33105 10616.12489 10664.78262 25359.55561 1795.518284 0 0 0 44679.80645 98055.26074 0 4619.048885 14788.82551 0 0 14449.93004 0 249.1088043 0 5537.942971 9993.77528 17885.72329 0 4807.108245 0 19433.51407 11548.48759 16032.36617 0 0 262.3977543 11503.79401 14351.34251 0 621.4883981 0 3965.592473 0 10026.41566 36847.34104 28986.22015 463.3055957 14869.10233 32895.96772 2946.824537 0 0 24815.96854 0 0 296.6993081 36139.80903 0 1756.986108 3068.05223 2196.966736 11099.54215 7892.465935 25003.93648 20307.27427 13062.48882 190.1658669 62698.97129 49023.27232 2764.242714 0 54259.42886 72950.02219 2566.1946 22049.18934 29566.47002 23828.30595 0 8126.339605 25338.69102 62820.10965 0 31.87613202 969.1753276 52145.59642 6537.176227 0 8546.636057 15501.87025 0 3513.358304 0 10081.52083 23986.21078 10981.56587 0.398225098 47683.91885 0 42577.99948 0 9739.670462 2001.711797 7918.516325 0 2278.432997 51291.44685 15258.33931 32358.5995 10395.03337 0 858.9658383 8255.360505 37672.76331 23629.26496 5095.041286 0 3302.496815 11795.51679 10527.14981 11916.67182 128.0285635 40597.50381 645.4319876 0 55930.74182 2446.101035 0.1223110203 5646.288128 7835.607645 0 0 3371.225852 53511.51581 31335.44073 47364.81819 28168.86348 5056.84282 3540.034735 22876.81824 46723.77885 20417.53479 0 34996.29204 151.088494 0 44905.24646 0 54248.50965 73.94769501 3643.933574 30986.63275 0 0 55498.20131 27698.46633 0 35300.45861 4.983658113e-05 1049.443485 0.004130916779 0 762.2296346 0 0 0 25764.11139 39158.48006 207.5536537 0 65950.02706 99.30551245 30484.76884 43596.89836 5137.295359 37.62105275 23369.09973 3417.304137 82024.02569 75019.99409 0 0 35543.58818 0 1117.085119 16672.00281 4821.001411 20629.64659 0 17281.80188 41.57706916 31242.95323 4236.686582 306.1573758 0 135.921196 3927.390419 0 0 7468.375912 26121.06299 40047.30679 0 0 432.4752773 23262.57449 0 28528.97142 0 4153.731708 54140.84776 86.14164672 0 0 5629.491574 13636.47578 0 14755.92572 5302.341648 0 17928.62694 0 0 43525.89484 3404.010139 14726.96882 1195.950563 0 0 79.19378951 15580.79738 41994.6407 35298.17376 35204.30532 0 3344.292701 8654.583612 16488.8437 0 7294.927551 19732.24382 0 0 0 4963.616729 18671.35851 0 48.15715601 20639.23786 0 0 32192.42213 8991.858481 58345.74057 0 14242.04185 93.82516963 61.00423644 0 0 3583.667711 0 0 4082.730291 104695.3183 11000.3572 4496.96123 26640.00587 30793.31247 9782.079656 0 0 0 6957.652359 0 0 4668.960548 50383.412 1684.356384 3409.342276 22209.1195 5013.015923 1987.33435 3323.198878 22318.95497 0 17283.17 0.0004978087378 150.4778391 0 0 0 305.3564482 1864.827636 43219.27142 14682.15467 5943.252679 +1567.662313 26198.97532 16863.42606 42686.41886 0 0 4762.730134 28647.02503 0 40.49782446 0 0 4279.971763 328.5192956 36253.55825 287.7283575 25151.97254 24322.86586 0 11126.22203 271.5838091 2483.516412 0 810.5118981 2911.344663 431.5400082 2549.610783 0 7464.353684 22383.69183 0 0 0.07901409479 549.5502136 9329.140793 26581.45626 19625.99001 31121.72306 0.348834101 44283.19968 2579.718064 1994.309134 0 6226.399408 37379.42476 0 0 0 0 40541.07174 0 6214.016684 49458.38977 7500.550517 5618.655349 0 9533.062256 21973.2378 15924.17049 0 66657.2722 0 55821.0111 6047.576216 145.67272 4950.512187 286.2109343 0 0 3818.616742 2627.637901 6602.603297 50.97451346 0 36392.45723 349.9906721 0 20883.8364 38963.58441 966.7148284 0 0 0 7904.061422 46697.33905 1053.902542 0 0 3825.641628 0 3271.650831 71661.24844 248.8319717 7348.144974 11939.50694 22860.64832 18914.28302 8833.176436 73960.20609 11578.37649 57296.22615 0 4615.028305 2146.808761 31606.32516 3661.060065 1240.670693 43402.35961 14877.02398 23073.00943 11971.54271 21188.02207 6359.375343 19615.20268 9146.129194 26334.11744 22233.76908 41533.30679 36798.9787 0 4556.446942 20250.87944 76.40595292 4872.043649 5071.338272 30493.56445 23351.83378 24318.9721 3825.792016 0 233.1321689 0 0 0 5923.706823 11681.73852 20.17007126 19603.07608 0 1869.560896 0 40434.27703 9331.775353 45912.34579 4852.939799 14533.04879 0 1048.177176 6428.150316 0 34610.6285 50.78020565 35546.82778 58751.66541 21190.58424 8905.602836 19199.05982 313.5295888 5152.272148 7.924167e-12 1350.70358 33602.89289 0 52850.02419 2011.252143 12730.36401 3003.871115 33487.85616 34450.2734 0 8392.701674 0.01013177811 22785.95397 2963.125888 14139.93994 0.816579894 0 23578.33493 4843.471396 0 2672.311956 13355.42117 561.8278355 62909.34785 50651.03384 19915.37937 260.3992615 5696.676335 0 34096.15128 28.08122935 1516.224374 66.03045319 385.4324073 199.7622584 3163.124992 0 12970.5904 0 30463.44482 28415.52514 1787.189319 9895.531119 7.062987018 0 40228.37704 19114.98278 9212.420293 49697.30635 0 10581.13341 319.1990033 0 472.6496839 6410.427904 29621.11316 1077.337179 10916.71493 7281.969027 4052.170024 5750.116218 217.2009714 1041.0527 0 19185.92555 2792.119695 48.56711878 85.19552979 3756.172275 16426.13719 5157.429511 29992.53593 797.4601087 8866.593321 0 14714.60055 0 275.6879001 93.38721448 16.52821105 0 1809.930769 19227.88166 1881.234589 26569.51191 16120.94403 37543.5816 6822.641161 3702.652852 1084.646715 25205.85225 2055.87153 18791.05728 78177.44337 3371.279153 6341.630765 0 0 21988.92976 36377.88554 4045.898965 3825.94174 0 1158.49805 21981.78081 0 1623.045056 11093.58831 0 2584.17059 0 0 0 188.6752721 0 8120.463941 19906.91371 31898.20495 5787.072756 42367.96231 0 0 4358.054933 8064.366233 1466.864246 20757.9203 0 54599.04848 0 0 0 16732.19314 0 2967.880389 5871.067585 0 5825.664058 17.45984507 52.31970724 0 +925.3230132 0 2167.950623 13492.85479 0 9.825656208e-14 45025.40932 468.4429069 1915.015527 8491.694811 5501.363528 0 0 9143.205261 127.4076833 0 0 13747.39047 0 0 31659.78151 27614.86966 861.6779889 0 0 8000.997408 13562.10112 481.6402537 31533.42883 0 7135.373841 0 976.6077989 74.96529037 0 66930.28116 40833.92183 36276.4268 2497.113773 8429.303848 4760.869859 5178.550917 98.2375853 53023.19146 1320.789534 0 0 19444.62313 0 0 0 5855.454488 2045.153842 4794.313153 1378.305319 10835.3832 14950.7154 0 0 0 59.91571452 9553.244039 6791.270042 12919.32186 36877.2401 9504.210809 0.550818392 51269.91735 7758.142411 3053.598621 1624.286345 0 51279.81288 31353.20061 26076.61043 51904.2154 26956.98526 4108.95269 13474.4341 18122.10979 37070.28665 32089.39499 29787.72084 55386.95459 22973.34324 0 8331.217448 2708.536285 0 0 16870.29407 0 6338.393041 0 21546.53827 78316.71169 36504.11726 0 242.9233472 3777.661982 1414.12773 58695.06694 15487.86607 51548.18858 3474.08079 13744.27302 3570.46555 0 2383.662397 24665.2008 28115.08955 11044.22048 23004.37326 37673.4496 877.6855883 32833.63584 14511.35392 726.1829254 30124.43046 8624.298542 0 304.364222 1552.491083 7.313300501 26135.46703 20066.93294 40818.12753 14378.1853 16462.08264 28276.44377 31342.60235 1.006585677e-07 72355.96709 6367.285576 15660.68167 0 0 1670.030248 0 0 23440.50624 0 157.1809697 143.4414016 29796.29716 13655.02275 41307.22516 2.547683395 1.133981367 21483.18938 3650.012496 22878.0547 16905.4508 0 53060.53888 8825.769613 59355.25306 0 5648.597311 0 19376.73844 65292.14641 23272.33574 21407.25632 42880.2805 38590.8386 0 9997.940256 51078.54316 12792.72953 0 47078.31209 5168.666854 27702.41815 19210.7233 264.2288092 385.1629685 11107.21372 15508.82561 16359.73632 60329.75395 6114.858445 0 367.9265127 8230.131475 1501.863797 0 0 3533.342994 572.9725074 0 3249.866936 460.958661 6376.674667 29576.31561 23947.63757 6.316863211e-08 0 0 7601.198226 56113.26419 0 0 0 4606.8315 31731.68135 29961.61931 6131.158898 599.8944588 2989.552458 0 0 66492.73876 1801.105325 0 277.1913071 25643.99629 62438.82466 1557.961475 21162.57513 51671.76007 0 16782.05358 2116.831157 61661.62723 5344.573418 5219.893872 29.62179897 0 0 5.339666695 761.3128886 9002.149637 9798.509553 6358.330016 42053.19122 12426.2418 0 58017.33327 0 9964.662703 0 32226.41692 15398.48601 5280.546245 0 4171.96444 9636.800193 5574.45315 4475.970133 5342.843238 11294.45654 0 0 39.06171578 0 16783.24945 0 0 23588.64324 111765.69 0 3205.015212 1024.76596 18467.80137 433.587427 3538.965621 51868.72401 40.95461597 13997.42267 109.8053746 5606.718941 6190.776703 0 0 0 1329.489107 62723.0392 25397.19787 28027.95765 1389.917738 1159.747188 0 3756.234154 0 0 24614.79605 0 0 0 16324.7022 14093.05677 0 16905.44056 21273.81067 0 0 15593.77701 1811.627232 0 +14005.40829 0 26558.76603 1418.274477 6651.922457 13808.10515 17418.01539 24871.30362 0 2136.103581 0 11530.23855 4087.473863 0 0 47910.03311 8967.549099 103.6664044 27504.21107 0 37271.32647 15366.44022 7655.38873 2557.310417 0 0 7168.821201 0 0 46160.70835 39402.16085 16098.23057 6907.338414 19647.35556 1687.422232 0 30.72644758 50465.37972 8450.484237 14880.38073 0 131.0079166 16965.45273 1789.638854 0 4221.872978 2718.153735 0 7578.201605 1078.275305 0 29687.09926 0 7562.935238 64611.0372 0 0 1920.444048 36598.57666 13628.92048 832.7095062 11417.40756 6595.385942 60620.70879 5.138762289e-12 6870.427145 14474.16521 23776.76756 0 551.5020027 0 23.35007369 3355.396592 0 0 1895.853248 21223.48069 0.0001793320732 48180.82652 0 3726.014363 881.3913836 21280.63815 33614.40652 17299.88724 36415.41809 29610.77996 14327.5197 28159.40008 12002.99295 6903.786347 13843.842 4.377181679 5608.587403 60158.30285 2086.909772 18392.55512 0 34218.32485 1807.579012 36349.57766 254.249594 11279.96605 35352.03583 0 0 7447.877764 1306.669187 19169.95119 45536.59247 0 3583.934434 1011.48374 28134.12281 616.8181769 6080.990226 0 20066.14204 3.990682024e-11 8229.653883 0 6788.387673 0 85719.93703 8076.168816 70482.38433 839.7117115 0 6272.614211 0.6909900172 12788.10654 43462.58218 30822.50318 305.2854148 3924.368967 2.544363442 82.50985496 0 55.69183011 18127.08685 23525.38362 1547.89563 0 22239.9606 7228.710642 0 14562.97393 114.4141585 12157.42508 95640.95742 57646.26962 1545.428455 23571.19114 19273.51875 9724.843741 7711.358347 40603.31131 828.9493377 9106.391462 25918.66163 479.3988849 6455.703537 38660.57418 27131.40207 3240.453303 50483.51015 66757.18122 0 3150.93819 27241.75221 9993.455362 13296.79567 0 972.6931645 16088.56733 0 32444.64258 19898.34977 9480.060293 123.4117351 47392.55062 9476.648711 515.3147386 7869.095094 27891.06599 101787.2855 0 1542.121756 2832.555157 0 47913.40268 12530.9351 14797.24553 0 12242.27102 10766.50941 3727.79706 35189.1434 10032.43191 0 871.3131669 45820.05844 3530.988222 3757.814472 0 19142.86292 1022.51826 12851.78787 12159.98305 18499.71515 0 4766.585398 7875.394109 23706.02851 0 39868.43291 0 6646.351189 196.2847235 821.4620984 0 8440.051695 2200.502887 934.125054 360.1169357 2961.52885 2904.682767 4915.926586 0 12492.94624 0 0 0 10033.5399 27578.9964 0 83109.8087 7518.445714 9621.816832 30.94447918 3855.062909 0 51977.64004 0 9818.458472 22157.2171 0 39.07351201 16059.06504 20220.89532 3020.629892 0 155.8210017 1.068550708 9544.849297 18558.42682 0 791.7620251 0 5503.531799 302.6606059 6599.067162 2322.854008 0 0 1046.699038 66969.38112 8215.213848 0 24008.07657 36708.82578 46756.04152 20812.75105 0 0 0 0 0 0 15800.27312 829.1210405 0 0 18203.39023 0 11885.50435 20252.45249 0 0 7548.619968 0 9569.007409 2187.690489 153.4987592 13010.18833 0 0 17616.01908 0 0.0004088201492 +4775.724702 0 20134.0336 24879.44819 0 43169.23751 11128.66414 416.4659147 3157.524845 0 0 0 21753.13762 210.8706257 25.28022647 0 7338.615476 0 0 0.0005782978066 14432.03336 27037.74704 0 4525.844948 1397.392035 0 0 12967.02414 44172.23502 48753.24644 12865.03659 2004.899357 31961.74094 0 2235.670637 12876.68156 0 0 0 1409.191506 8300.176702 17664.20587 0 318.4169054 12121.02935 1471.202848 41798.26238 2842.724161 2684.885359 7999.737304 0 97.29855125 0 0 0 20664.09705 114.9639337 0 0 4707.016513 13294.61015 28880.11648 52695.97319 12679.79011 101.7879104 4589.917494 497.0874342 0 400.4920536 0 0 5187.987366 3062.803317 8594.959369 28730.03959 46680.40405 15925.7401 7366.767484 26225.59619 10597.13648 295.1761193 876.6198059 0 8297.926653 6830.257093 5472.548395 0 81025.34388 29544.2912 30897.02464 3814.816175 0 14615.02151 0 10356.01897 17061.22791 802.5723778 0 88710.34328 1273.36447 6100.619468 6931.352472 1705.767666 19644.55189 8834.706902 7968.013716 47451.22796 16264.81445 4880.121211 14604.48378 3005.721676 0 12168.19412 0 0 9552.436357 3005.300076 10841.04269 7068.203267 22011.77558 24813.72456 59055.85333 10565.64369 1765.517753 0 0 0 382.0703164 42494.62241 7682.067329 13083.26991 1915.678837 16204.80718 3656.251238 26469.25063 0 2120.668313 57333.39478 8336.715839 2532.12622 44.65501273 113.6326306 4931.593049 0 10974.75797 2347.74836 49937.39156 62856.61553 28429.53633 284.3248136 1839.858863 4083.866805 0 4995.561393 13865.72406 2279.583436 171.4565718 2596.669759 8477.26626 725.8547381 5335.83832 20110.3516 8403.933346 20689.21739 378.6998426 0 1478.203845 4004.053949 0 5529.611406 8062.858859 29941.49343 4390.019728 7950.470264 0 43218.23095 0 58181.84721 0 2430.326339 56474.98206 47568.25885 0 18140.86293 7071.500297 4482.343829 79030.69525 7264.425755 428.1819426 30.9943225 19905.12912 6088.433913 19297.18271 5796.862266 0 64098.55572 37083.89436 1088.878674 21863.77318 46015.85811 2883.093713 103894.9986 8912.884982 0 0 16743.86227 0 0 25968.75575 24710.90249 25062.91565 41940.51521 0 39246.99785 0.1151100673 3735.967085 2768.95337 0 28704.6738 9472.221781 11103.27916 14545.16393 71.17837047 0 19796.459 53.09890024 66779.64241 39659.91147 11426.18835 41205.37756 0 55986.20433 8561.849147 899.0146764 400.6368859 9612.798148 0 230.6446613 129.1510439 7457.16172 12516.17488 3796.989989 3370.008857 0 1874.430522 35339.26529 37.54404686 0 2938.332461 20550.29584 0.5831007644 2640.983473 444.8512073 0 0 0 19888.26736 1171.117454 62356.29484 36790.88696 16822.30661 0 0 2104.628156 53397.20962 0 0 0 2070.128515 11639.78829 10546.91415 3414.792251 0 1622.809686 27016.06168 0 0 0 3184.819629 36618.11185 22753.50634 27989.10628 0 2376.626532 132.9817795 63943.65531 5.986189455e-06 9974.319219 2748.543168 5965.305258 59503.26956 729.0379214 22019.757 0 0 7717.158036 3546.710072 16350.0905 0 0 +1477.197008 0 0 44013.64755 0 7945.442772 109.1878831 0 6029.191449 12291.50577 9241.57405 53053.50583 0 0 0 0 45967.87412 6061.968979 1300.501244 12706.01547 371.1493855 53.63362816 0 0 1773.698296 75310.49392 0 7129.58125 0.0001422342465 5630.16774 476.6402097 0 0 13161.34745 5469.632587 2136.87998 0 68.21530933 0 33740.86463 0 1036.555141 41.33431785 0 64668.19716 28699.26758 0 0 54.18141065 4722.595377 108.5343535 0 15038.96317 561.6155017 34278.97956 4237.498728 44405.36962 2062.223594 0 127.9975007 10386.528 38173.54122 2900.723997 1119.569485 0 1513.324736 0 36717.65746 532.1488399 5517.541942 1758.333564 0 27646.86097 0 4152.91448 72.7800824 674.0038474 0 8724.891545 23900.46348 1.637740502e-05 58620.84872 85337.76446 19536.64714 27018.195 50712.96294 0 6621.757867 7362.983168 14830.9306 20675.1412 7102.645519 59531.8487 71107.77902 3430.41746 51459.82425 6835.665317 3.137412783e-10 10988.00986 84382.80093 69355.58394 1623.074097 231.3700037 230.1295176 2793.148318 24863.6857 28005.42785 28841.16196 0 8840.838839 72695.42033 0 15945.96329 41760.66051 45618.19432 0 83.73227052 0 4344.807197 3615.390945 8362.548957 38364.79643 32584.80113 1.914269634e-15 11622.71666 0 6.133803074e-09 6141.913281 0 14907.20182 3328.132457 1919.411931 310.5749177 0 11928.7957 7780.048896 1.553285336 15985.26482 0 33925.52557 0.06238993951 116.0125609 39135.81496 69518.55511 7666.945796 0 4344.719033 33627.8546 0 8630.611859 44161.62812 21893.21588 533.4018743 25604.11035 45685.19808 9457.97201 11123.00847 75153.4973 60547.24662 0 1680.390567 49689.10631 3829.505329 0 0 0 4026.586297 53.78942292 0 53294.88596 11966.57915 0 6801.570866 32875.15826 32.28225076 17591.35583 36751.18648 1680.017727 28.68188486 0 0 14490.42129 2416.73345 0 915.2088191 83545.43179 2547.058452 39.43374201 35103.77791 20309.55603 347.3292707 16488.76474 1408.167839 0 3921.233448 257.0858151 0 64394.14502 0 40065.59313 1952.095327 1768.772852 23759.71578 60235.16974 0 9400.193787 2697.364667 2075.598272 0 11947.59413 4442.380667 4996.280147 0 17538.27395 4592.541891 43635.92349 4794.324404 10020.85271 33823.47212 1976.603902 49180.36631 7055.306438 0 26228.91642 5635.616484 2152.674658 19620.25937 1931.892299 4871.313805 6465.523493 2230.916092 0 936.976648 3089.208408 0 660.4523338 42205.67297 0 2672.125089 0 1622.318247 1867.458489 11795.97277 17581.38945 54.75719981 31721.26822 5421.869976 862.4465897 0 2911.313857 0 2946.643189 0 0 8520.988098 135.2169588 12695.50932 5263.797867 5296.439232 0 14662.61584 7562.854088 25970.39166 1601.410387 0 5831.264204 1201.825074 0 47169.84341 0.0004756613333 0 15713.85194 0 1970.061185 42548.98782 0 72823.89569 0 650.9125251 0 0 6630.465342 29.68854893 46.20590255 8690.856959 613.2030448 37327.63887 0 0 0 0 70396.47927 41.52006469 12762.17129 112.7111289 0 3136.984109 13112.13366 2203.812885 0 +3015.28276 30220.88064 0 9000.765841 20782.13775 7617.026095 1198.61707 7242.175473 0 0 0 84.3249566 0 128781.9222 2700.529487 0 5752.20266 4512.349471 137.5190073 38856.11197 0 526.9112554 1671.915737 1757.291913 32107.68867 0 76719.154 52.78312795 0 0 1226.657158 0 0 46744.0131 34439.42987 2.998732276e-07 4785.845191 0 37439.91476 0 0 0 33615.36994 4495.02264 0 46.1496784 9173.902339 0 0 3123.511805 9271.062593 2124.404833 15985.41289 1046.900233 25456.97414 2571.423476 6854.696083 41.41682319 0 0 90553.85864 25130.49309 0 537.5871562 15752.53857 0 6190.607557 25090.58086 2265.403544 0 0 1782.064296 0 39571.37232 294.2786771 9838.415604 33999.94063 2815.26697 0 16641.60227 0 17237.26542 0 69266.64481 2080.675757 3395.431277 3487.627682 13320.22486 45762.64602 429.0921064 2542.068094 534.7701646 0 51202.24382 23692.72298 0 4591.571251 18035.95329 33259.692 5302.294442 67213.44232 36093.55744 0 5878.008461 6322.909444 8387.786797 23974.19312 0 27274.79106 2129.774732 3262.060378 0 67949.37359 1931.676248 2165.919609 36730.28398 42277.97363 12305.58592 0 0 29924.7828 4.112064573e-08 23287.25581 2019.527383 5559.752169 1200.038405 0 83892.21531 3567.541017 100874.0341 30333.83554 35364.64319 2583.368986 0 0 5761.183498 16304.05939 44234.65308 417.3839487 699.3714431 58834.9821 35965.03183 4419.893602 31552.56992 4169.132789 14245.92236 6112.732084 11592.51173 0 59959.22092 7200.560767 0 0.4615097273 4941.44702 981.4752846 3.044508922 15077.67427 0 15797.67742 2813.698766 3487.882342 0 15002.61222 1050.323571 41967.73053 10012.69418 50738.55431 65637.73683 0 2212.078143 10194.80125 742.5745403 7800.734249 0 10925.31309 37.68452751 68349.07112 59172.84333 709.0396755 0 0.2277463437 2004.520778 0 17520.95933 41.4942679 4433.272757 5877.166886 28334.51761 42033.19808 1215.155357 16893.01475 7984.130896 0 6212.209405 42283.83721 0 0 0 68002.72263 21437.60998 6080.641261 0 7518.396141 16783.05449 17552.72435 22329.68098 13255.73562 0 34985.32027 13551.99736 0 0 0 843.7176473 0 16371.09405 0 0.3984358475 0 2012.244186 0 140.9980555 21773.23504 24523.07187 8664.157804 1491.985286 20132.81818 5190.776646 16551.95555 607.5350686 26052.00396 0 0 0 44688.26816 6502.478808 0 0 0 0 1483.994201 39333.35642 10848.20577 0 31290.73732 0 174.9137218 2527.791994 1154.715951 0 111.6745802 0 47613.78931 23811.82162 4075.679778 3009.502074 0 220.5411426 1668.849098 1119.820587 1860.678415 0 54.62907465 0 0 0 0 5545.766095 23965.32803 0 0 0 0 6824.715336 0 8111.2227 462.6557196 4431.076612 674.4979628 0 0 0 0 12342.72357 1603.50593 4051.708939 0 0 41774.50766 5.380870977e-09 13840.05102 0 31.43539025 42077.91564 2123.188696 14107.53702 25413.84096 0 0 0 +0 4323.250341 16716.82589 0 0 0 0 0 0 1.266585246e-05 15694.47436 3716.260748 20438.19234 914.8801163 0 28426.98833 1438.949145 3156.308391 0 0 0 1192.165812 32780.31593 4499.905637 8693.548397 0 87.24926868 0 0 9972.304814 969.7048069 0 0 48792.30053 14352.17747 3653.924353 113542.2031 20878.7926 2506.536234 0 0 0 57.08784004 0 6645.897285 16166.32544 0 3667.71576 0 0 10604.15399 4477.980718 37.06416881 0 4508.239416 37205.60775 2265.741362 12695.1724 57765.24425 828.7161146 0 4195.183839 0 263.9477555 26664.21953 0 5465.327537 363.3233833 2518.88214 8655.573451 854.7179013 0 14697.59495 0 0 21842.57469 8880.042662 0 28234.42697 0 0 0 0 19359.37766 2187.393855 23297.91286 0 10493.16565 39469.24726 0 7106.286734 0 10052.91578 12177.48084 20634.78455 37321.14039 23286.74564 6852.209481 20829.6095 38434.85042 0.0006335100056 4.114536205e-05 77373.31064 41540.17354 3608.628551 24034.47817 38306.72042 3855.819029 2550.259813 25119.44963 67385.23395 4129.134913 0 0 173.1964654 0 0 0 0 41676.05115 3677.665633 87411.09342 1547.346454 36329.20762 18088.65078 371.7941937 3496.827081 12197.04801 0.0009115382133 20523.95581 0 30102.4774 7333.886942 21511.04525 7183.409 38845.59921 1.999221717e-06 49404.57321 44589.43711 3054.067942 0.1020787309 1430.307393 145.3146515 21328.62864 0 44015.23418 15578.87681 4239.070475 5268.763315 50165.86463 5039.272264 0 139.3571101 21513.57209 9.991815979e-16 0 369.7150171 3235.233727 4434.804893 0 2552.350806 55643.3591 41985.57603 1949.664419 0 0 3206.770018 6829.450976 0 0 0 33260.97257 16730.30599 0 0 67.03138986 42296.212 18781.21448 0 534.532889 380.3437715 4068.578472 39056.99499 14550.15691 62.48875794 37617.30863 0 51507.63878 12814.59784 1782.972792 965.6094617 2415.760195 36390.50012 5367.899253 20168.99266 8071.680816 29282.46608 15923.39638 0 0 5830.300326 2521.895642 130.9646682 0 1639.824274 2591.829843 0 63312.83697 1616.060169 30521.59154 0 0 8.926307441 32948.05424 12825.31294 9274.449631 3770.458066 0 5147.130667 1649.551679 2549.912878 16596.46053 22.99475171 64913.14627 0 0 0 9892.573294 550.3386006 51033.60595 0 0 1680.894826 41498.82637 33138.93355 8696.846551 0 2329.660242 46061.20343 0 73383.3036 5667.82812 0 0 8518.974212 7965.227692 0 4182.250572 137.3565164 8091.468215 0 86.73789528 0 0 0 0 17582.7458 0 0 57342.18175 35095.6477 5862.067726 0 0 0 724.2037549 1362.279722 0 37498.60058 0 168.5072832 67235.72632 0 720.090247 0 0 1342.149806 6673.834427 4554.598114 4684.56245 0 5892.246302 0 1540.002358 12713.34116 21249.57037 5825.557112 31522.04683 1571.330038 431.6683562 0 6064.872333 35266.57301 0 0 1561.126766 2841.54601 105.9541742 9.444467374e-10 0 +2986.672887 4689.848343 791.2847385 1659.360738 22437.29521 16228.02284 0 0 34398.0229 0.1581302126 0 19845.42497 0 0 9855.46194 2352.644189 53850.401 92000.92607 19510.46585 14985.57417 1849.072537 15772.12912 0 17744.79675 0 0 42893.91104 36295.03075 0 19031.00762 0 241.5765801 0 0 0 0 0 11925.23775 1.457605993 3853.066648 6253.696222 0 0 0 0 13855.61616 15123.29977 0 0 50375.65637 1831.563581 7981.930134 0 20108.10826 4482.164046 65113.10013 4597.883455 35838.0785 0 3041.446958 0 9122.911812 33251.98154 121.3282001 1716.648837 2606.771661 2227.342626 0 5466.059486 16984.57974 18327.64291 47301.86788 34.4092402 259.0606071 10230.76402 6343.751893 17692.54721 0 53366.63435 21913.45709 0 7596.505716 0 22887.97611 65631.17693 22045.54725 60994.80682 3724.880804 2128.618993 51445.16157 61812.61912 0 6918.275744 0 0 57747.89842 70149.06261 0 6684.724386 7708.385412 28944.49493 0 0 50049.94444 0 0 90.30677681 0 0 59069.00461 0 31226.2236 276.8385446 84376.92336 15906.87849 36.0054418 0 11945.46807 12808.96828 52326.84664 31496.47111 49492.77393 3772.46499 2844.413745 11061.14567 0 0 2234.44478 33894.44204 12628.13995 0 20692.88629 50656.37651 6143.815669 32271.42335 4242.390779 1738.770422 5687.717488 47642.14449 175.5173592 17171.0742 85905.43072 43038.51179 64021.54196 0 36375.60331 39565.9343 36891.39881 0 43811.09238 75741.64351 341.464903 18738.5166 0 60154.97587 17828.53838 17912.25744 27740.29549 21378.18212 15371.89501 40447.7324 0 0.4397102649 31326.73337 7232.335228 2131.185016 664.5999289 71211.9611 4606.718613 14726.4181 3501.514712 72.14007105 1572.003107 0 20845.63537 25655.69691 17714.96659 0 565.861896 25934.50048 18401.23166 3462.614997 15504.32665 22297.84674 35.06129513 10843.01342 10044.85592 2011.626885 0 7329.227329 0 4679.926222 106.3879552 0.04455729021 8991.550427 18792.91488 16805.15533 45377.38655 0 2565.054875 0 14872.72502 4875.987295 51.40395155 24258.92918 501.4161681 24.40926711 0 0 0 10376.46941 0 0 26534.66965 45150.72681 0 4483.728651 0 3405.164068 11518.99399 69537.29727 9716.023481 12102.60631 7895.348922 11268.3961 72457.73269 10331.0403 152.698695 23227.75222 4387.859882 16343.41404 0 70.71802937 22590.09533 23018.73446 4843.180362 0 337.7944531 20255.99748 0 0 26848.94513 6358.612787 3.858504815 0 0 0 17508.56698 12215.29668 0 0 1330.434216 1151.045308 2227.472552 1727.031033 39706.76489 79.04961199 120.958615 6587.799837 0 0 0 0 23049.17539 2302.296056 4221.593777 2084.782082 0 2702.373414 0 0 8410.189482 0 0 12776.61219 0 0 29327.62934 0 0 35697.96317 0 0 0 52887.289 0 0 0 0 0 16780.51628 2592.568846 5568.908286 108.9035812 44169.25228 0 1222.557736 47271.45602 16707.72654 13712.90798 +0 999.1607413 0 0 27991.4437 2052.37867 20034.6735 5538.216454 15593.37599 8084.3424 9242.164323 16109.78566 0 0 0 41975.44097 11243.59143 9337.900587 1917.546273 257.1989613 26036.14166 698.6633295 581.7379541 0 0 75464.40135 0 0 22884.65036 22253.8064 5750.386628 14.58118872 4797.800227 1766.439002 341.3183129 0 0 17969.22045 0.1355800485 0 15.73289592 0 64.9841491 0 17748.50803 0 0 43422.97761 32451.23987 0 0 0 33431.93921 0 0 6045.971024 25980.83951 0 0 2679.09016 0 5021.536171 777.5666043 9334.297076 0 8678.754466 9246.920884 36212.68061 0 31144.66478 0 0 0.0001516650028 47098.75841 0 0 63986.91286 3367.169543 0 3313.506718 10872.086 4003.510843 8001.806074 0 0 43428.85177 748.0490164 3220.176956 0 42604.33263 29154.33257 25344.66638 1912.888612 1.797499353e-05 0 24535.60785 2690.554281 20664.73563 47017.1589 34753.47417 15024.40303 0 13466.34568 1984.41358 0 17296.62176 2606.790297 9072.455664 27435.95459 12124.68438 37799.67758 58002.45449 5850.096286 0 10788.74751 36085.37973 42.20107934 41693.48651 157.8070638 0 2139.36916 468.3988972 40.65318484 11234.4786 95212.25042 3.523679408 0 17290.21525 21605.46652 3845.405864 52451.73308 1247.14749 56.95132462 0 6444.084353 47264.38033 34060.02222 60081.25878 34266.16025 22130.12952 3678.147593 806.746392 37703.64179 0 0 14195.17362 557.2588147 59885.86491 13658.19529 15121.30549 0 198.0154175 9489.506583 50421.14284 0 492.9684732 18191.78368 46853.49501 36133.01597 23044.9848 0 23806.0602 0 0.6021451798 18038.36015 0 330.5432883 3112.540426 450.0871296 1177.558165 0.0003835489703 18792.31717 9582.360839 2868.931875 0 8578.677396 21253.5393 2658.901391 51887.93052 5449.348988 10237.81392 2744.454735 46653.97837 154.7454249 62012.75878 3914.972025 0 0 34.79726805 0 564.3674897 2748.451728 40539.47997 4644.318385 4103.811644 0 0 58675.06431 54996.42173 5327.037849 0 0 64621.55091 0 45669.31767 3332.06384 22208.22427 0 350.3863789 6612.2518 0 0 0 2703.221988 8533.781537 6643.925048 0 3798.24848 21509.35486 0 3965.338603 17250.42339 382.8387868 132.0703034 6348.639461 0 442.4878637 8145.250139 52.25293518 2765.062715 26883.94462 2243.659628 39767.72195 1746.595071 101.9103351 18443.53853 8591.147391 20573.96102 40327.45005 0 14676.72322 74.62646186 14914.09555 1983.420384 344.6229667 6777.953154 0 18165.63923 6818.545193 0 0 70706.6058 4410.635285 0 4369.760391 0 149.8699579 27644.20397 162.7630739 0 106.1760277 0 3967.031014 7275.764022 16387.45492 2125.750096 0 48.59871225 4561.742927 0.0007874049362 35969.72859 1059.825477 0 2520.694391 0 3639.753596 0 3801.683554 32435.16203 0 27580.0643 52.52834107 129.6472207 0 0 3739.915052 200.8945857 56617.08704 20229.09966 16552.10429 0 0 0 10603.14587 0 3279.822822 0 0 21371.80712 3052.467304 +17098.26387 23127.95364 707.732491 11628.25347 0 0 0 0 0 9317.476373 74.08705135 777.7052413 0 17892.10368 0 3863.249201 4.426877989e-05 0 6483.025716 238.8958732 1742.370945 0 4123.617168 1824.244214 0.0005848469889 1662.868063 11420.76179 4827.105401 19916.29221 54264.97421 10849.37908 2913.904543 96057.06834 9393.808432 0 0 0 16927.37304 15304.4222 0 0 0 0 45854.8501 300.0043683 0 103886.2469 0 30821.26869 41048.62129 17549.49304 3881.06754 0 9636.909448 46.68546844 0 0 2324.667251 1953.793167 75188.6418 0 0 0 9567.745473 17679.76201 0 0 49401.85635 0 7170.170607 0 20247.57184 33579.46232 21840.80369 29868.10752 0 32369.10492 0 4915.968885 797.2206689 17882.2307 1933.858826 2514.786512 12712.2314 6752.658655 35668.086 50580.44131 22645.96526 0 50090.68138 0 31260.28255 27677.6765 43804.13866 17183.91079 40822.20962 88076.44224 8180.270689 0 6275.494656 22006.57238 0.3215148281 0 0 85011.95001 0 0 4818.535611 0 0 5780.43212 0 17493.6545 33862.119 2586.327394 12995.07812 25088.09078 0 27039.30503 12092.54534 53682.47942 0 36864.71057 5580.229126 27624.78591 40435.89795 9490.799125 10923.00527 0 104.0889064 44959.08352 0 1.286841385e-10 18308.29641 11809.27676 41718.23122 67908.62923 6406.679844 45072.69583 14207.60213 11422.62901 57235.34443 0 0 2765.517868 13857.87079 28408.54555 0 18355.3994 0.03096520081 0 0 80615.80175 0 2.586454011e-14 23542.94365 15673.25019 10097.85142 25067.00459 9689.893509 3724.979977 49201.15194 4866.858073 26531.26611 37275.89397 193.2568878 23260.72701 0 0 42327.10327 6071.52826 15058.76048 24393.93285 0 0 445.0867159 36453.85899 3416.659931 6042.84133 16002.72042 28607.33848 7321.199852 0 19410.88328 33259.7959 731.4697856 885.3708134 11480.04933 20868.67435 5920.644245 6226.880485 50882.14801 6984.227566 33644.70035 27175.71754 20293.07895 31775.74089 0 20520.38734 7506.336531 2765.959921 26650.37059 1.682419272 3485.53212 43321.32204 133.2177737 21245.58085 28177.85389 57.20368386 12712.02875 0 2669.959185 3819.123669 0 29046.22173 0 15198.32819 20587.26338 5124.803585 0 64.48777986 0 99.32029077 11181.70668 0.3572182174 1864.040532 0 4483.627608 0 0 3985.272298 41857.97919 60245.61245 0 11884.29995 39209.73823 1482.227776 0 0 23470.29427 61604.67596 0 0 18938.01901 935.8309724 0 59.09113804 0 0 0 0 4561.675056 35473.76013 8095.942898 0 1720.113402 639.6370827 11449.06211 1.58220935 0 0 2454.484129 83.27252271 15432.75486 926.5761837 2105.242809 0 17478.92986 2052.455347 23130.52184 9116.686551 20.89106667 53200.37812 29089.08137 220.5648346 4228.666133 21211.80431 0 0 40281.50778 19503.21858 0 2491.910795 29157.2698 1.126016804 8306.686719 0 1639.298737 0 0 0 1623.114237 0 0 3.063670102 9785.768255 0.01010818402 0 0 39201.15424 +30272.56904 60738.06982 3960.84859 5890.479264 7232.973615 0 48413.84258 1882.954015 1638.21003 0 51743.52842 0 14198.8811 0.5519655438 8152.73228 270.7080023 0 19140.59282 8528.270826 119.5085839 14526.15121 0 2149.59299 10335.36864 297.6380277 28363.30772 0 4303.271604 1884.348766 5202.314095 23409.82126 7996.069019 22249.95182 0 47801.04084 2382.638655 1517.942856 33174.47639 7.055159806e-10 0 0 0 0 0 10436.57804 8604.582944 0 74164.31217 5474.659219 3.995520331e-16 0 0 29943.24843 5762.773419 48149.9499 4585.672776 10067.08769 26202.59418 32589.44823 0 12293.23034 38759.89238 13694.44359 7009.475563 6987.337904 27.32097413 18507.93619 54514.75143 0 3050.460571 19143.97152 0 8099.774917 0 15123.37014 1820.962817 28952.00939 0 55279.58507 29615.98358 6310.181314 37360.32295 0 11155.22773 16750.52637 13589.95458 3183.116154 4809.203828 0 9756.983115 5864.33353 10078.80702 0 10667.78289 9887.48526 68765.12262 77363.15428 0 0 0 19597.22878 5378.570722 20589.18039 19535.74936 25687.97467 55051.52128 33331.08772 33315.94488 4888.123653 57417.28023 35620.08331 8019.346218 16918.78342 8450.062757 1674.932244 0 36.2062352 22544.25105 4384.283719 13316.6683 27628.77824 18072.62293 10135.09326 0 51783.85503 2605.774379 15862.21969 50832.61717 802.5820883 0 7931.594395 7555.378435 1954.99559 31223.70095 27934.43486 0 8475.819743 50287.24981 8697.115597 0 85690.79258 4285.370881 25560.65424 0 0 67190.07592 9688.969951 26322.32593 19000.23459 76916.02125 642.5009471 593.265662 18698.09857 5804.815601 3.090395538e-07 0 13203.63196 0 45008.77878 115560.1727 9421.110267 0 6112.025784 4729.073657 50.35485794 214.5878656 0 90136.41687 0 9540.298593 5246.863786 35083.89432 8072.227227 26232.20617 59407.17176 2240.530408 0 1828.267785 7171.565361 0 27762.82463 45435.57643 3943.767139 0 14353.23906 1776.198817 12059.1296 187.6881437 12973.99392 14786.80692 42861.01208 39007.48529 25691.67392 22.95676802 0 17967.6134 50271.8103 21760.10733 1711.091108 36886.56255 0 13051.03585 0 2155.902408 0 1.395369276 10810.81765 0 0 56577.57628 34531.58774 45725.68632 5579.545304 2177.743152 0 22053.24524 11927.06637 12927.52407 0 0 0 0 12032.62742 14190.133 7493.474707 0 18736.13969 683.6147026 3073.262779 0 15315.32056 0 6626.348257 1051.91532 0 0 0 9860.476105 0 0 849.0490196 0.2078713311 26733.2408 26786.451 4532.963595 72.68318389 4764.977821 56266.96925 3129.855261 12406.48137 0 0 5851.751909 8562.101085 0 0 282.8713481 31294.26302 14159.79259 48937.59068 0 0 0 0 0 9187.795052 202.7803684 6733.690998 11788.86102 2539.552293 2544.392897 15465.16859 0 0 801.1640756 0 17670.62551 9154.337801 284.3492005 3412.790601 0 46.38407616 17148.39232 8969.936018 2790.254187 0 10722.34037 98.38142633 0 1966.292851 98.48525949 0 3319.669932 20596.92827 0 37721.27821 4326.817023 4441.697766 20391.61887 14755.6654 +2236.628853 216.6180234 0.00470782901 66899.92211 0 111.354811 0 26547.04911 47081.24841 0 0 0 0 71667.98273 0 22463.38443 0 1880.198242 9130.013093 25991.98432 774.4870905 1110.486299 37328.39665 15653.00199 0 0 8468.206638 23212.60086 0 3930.423209 15486.01088 15150.81708 0 66634.90801 2983.156408 52.29434569 44945.89508 14273.77345 4479.920039 3930.921204 9626.519487 3451.759487 0 5696.330266 6827.007385 5788.45823 1981.354258 0 0 3304.523278 0 0 0 23796.62939 17114.07397 3047.491934 33.54360134 0 0 7822.866589 0 18096.68212 820.8011417 29038.70073 0 1587.870449 6623.608094 0 1681.238015 1760.677085 61963.32812 5087.20043 0 66611.03751 14988.09097 16654.50574 0 0 278.0208748 3196.427169 7117.292667 0 33944.89138 0 9608.739069 33778.26073 9885.266523 0 1935.342696 0.0003077691966 21052.84786 55943.96485 44973.10314 236.7811421 0 0 51.06772741 0 46015.4422 0 0 48845.58571 0 2013.338533 1386.638797 22764.50319 35817.33261 23201.89589 0 10632.17474 12346.12063 0 5880.381469 0 40047.78919 1863.612074 0 141.853351 3444.87069 42660.33103 7871.188089 5.581108427 19481.50368 16730.14014 10706.44936 0 3041.14353 0 9014.298864 18187.63773 17740.81628 861.78354 0 0 172200.0306 47292.70482 50924.70946 0 0 2099.137774 27027.38233 38000.40635 37115.17251 12132.96998 0 4895.882932 68661.73878 16135.21514 32894.11499 0 2937.044143 7433.520728 11701.75793 105.03278 25676.45804 11695.55722 10366.32585 0 7645.263805 0 24476.43081 12376.65816 29440.398 0 8818.412503 23996.0152 0 4257.8966 21734.99837 2219.67168 22536.76055 44686.94873 0 42643.15813 0 0 38262.23966 2437.906492 29269.91737 39247.59753 0 0 1741.703665 9782.77069 0 0 58836.57097 16439.0377 54263.315 15371.80027 0 43821.19095 193.0116509 77054.94787 0.002499068567 8833.567335 5195.767335 0 6872.199701 448.565555 1902.918216 0 24180.54587 18431.0976 31440.02084 30374.01691 46365.44546 0 0 15122.77487 5926.261567 1.812332073 21782.52226 27793.87393 5228.636067 68329.97374 1018.396226 1395.790284 9841.236535 6242.91951 3697.260066 0 1489.972274 113.4543722 29848.51633 0 20548.51204 8192.033634 12272.36158 4657.071452 24727.71301 19050.93722 111.9173543 10726.47915 2134.544259 12.28496523 35266.42465 34268.47755 4958.323706 17981.18416 30727.12078 9653.470148 0 34650.56232 369.0843642 0 4944.039228 5076.200069 4003.250848 0 16415.39783 39307.13824 106.6531737 0 7328.581602 1317.244882 6340.287459 0 567.5789097 27130.88461 8799.351828 3041.59462 24161.11544 136.6374942 0 4043.016418 0 0 5528.753622 0 837.4668122 28751.24492 0 20171.43596 36988.37272 10004.49588 1163.606364 7176.949123 30764.86974 0 0 1169.341934 2898.071222 8858.988152 5629.138204 0 0 500.8392941 20848.25841 1638.69162 11954.11369 4419.486687 103.0073885 38949.15736 12406.14533 212.1626314 0 0 515.9671476 0 +2604.71044 431.5689366 0 0 8601.57387 0 0 29239.1499 7025.308406 0.1524155179 30766.32778 13196.31743 39759.74354 9209.708966 9856.214251 2633.665454 169.0460189 26282.35737 0 0 2871.707536 0 0 0 25507.60502 0 0 14662.98493 30653.73055 0 0 4218.622898 0 9436.508757 4.956633489e-06 47979.84842 11831.46572 0.007911916943 0 0 50626.01507 0 0 0 0 15185.61733 3922.35671 4683.205095 3361.255831 3555.766356 0 81403.74537 12010.37745 66876.99675 23170.67113 0 12880.94381 8574.692725 9171.755641 55890.30723 0 0.01299683092 10721.03313 0 0 2323.798449 0 2500.849698 7.464748683 12124.53578 4726.06738 0 0 0 2492.813461 58557.55353 4365.159997 73322.94775 40074.74331 25900.04865 0 5333.533073 16830.58418 303.4273766 136803.0072 5289.988498 53596.38272 0 2618.072031 2574.670164 245.7802511 0 26245.9066 3204.590888 30579.50007 4874.844162 20059.25464 0 7255.795106 0 10789.66266 853.8867761 4136.07173 2730.303929 1780.56447 2883.653297 0 0 4392.21169 50928.7437 0 2135.621815 160.4694132 10400.71696 0 0 35722.05331 0 41100.60998 2067.468428 56310.44861 13380.782 4669.278565 2153.948824 67862.78708 5145.834158 10650.85232 0 49568.91896 26682.95224 2886.150031 13342.23009 79483.05041 52465.11968 16779.2248 5909.174432 22065.97414 5801.183578 0 5314.213014 27107.38748 24838.6954 18488.39698 23.05765904 64691.46496 163.3566033 39228.64856 6051.736454 0 0 0 3687.913562 0 437.9855992 15613.79482 2810.899024 48497.34287 52222.847 157.7423119 0 310.4245982 5628.799698 26158.18259 0 6094.678345 50097.25151 2328.493148 168.0666571 855.8452536 6604.051409 0 2556.151107 0 0 220.5790797 1518.177327 21810.99331 54150.67498 0.000507590894 17492.93296 52.11786118 0 39510.74735 17449.87956 8099.901174 19.5471759 9448.995092 3657.191424 0 4980.744277 2282.423953 0 0 35699.806 752.1198903 2789.68342 21913.69982 30542.85639 9121.91029 0 0 0 33.44246134 0 13925.55196 14058.56008 91.89807648 1622.069312 35421.72084 3725.838193 13.39821996 0 48885.65294 33959.75191 133.5911829 15399.74853 0 0 20015.01147 0 2880.427258 0 0 33422.62468 0 21178.98706 0 0 4937.744152 3272.033496 1605.797596 219.7019653 0 0 777.0550266 17200.57758 0 54.73850051 0 0 0.08663887044 57.95100418 13077.46383 37523.95742 0 4218.774255 1754.283311 12754.96634 5792.226533 0 20995.90713 4656.163557 65853.01608 0 32811.9761 6545.392161 27508.6813 18311.14402 0 25685.09221 0 6066.742216 5201.260083 0 624.9081228 33039.07004 0 4814.738631 0 7000.186194 2208.485577 2759.776156 3818.616584 0 47023.30404 222.4830386 2329.159105 11074.95332 0 0 0 864.2079568 5.542305912e-06 0 0 10365.86645 24122.27423 52784.28884 21332.95175 0 0 1922.73833 33262.43266 0 0 10805.56975 12413.74316 0 0 29943.43522 +0 2485.976169 1471.577903 53276.40902 0 0 1600.456695 7431.96628 0 1896.739394 0 0 53021.37998 33690.1842 0 0 0 0 0 7652.495961 0 1224.645149 35123.98837 759.6715545 34285.93237 35586.85049 2157.445193 27033.76453 0 0 1590.973749 0 0 2138.563722 0 119.9080566 29130.07233 902.0390507 16787.81101 0 477.179615 2683.987123 24836.75221 0 44734.58908 0 9882.884935 0 8888.518668 166.7184858 27870.87031 16.14194794 19771.28195 9504.919363 0 2860.118363 0 1583.967328 0 0 0 463.1767701 1054.421616 45519.31331 2855.198586 0 11388.45714 58820.33248 5751.660356 0 14576.67126 2300.538842 18400.43978 34727.07065 24.7756275 44209.91999 4166.249789 52617.55261 116.8526397 0 57952.70975 0 9310.601316 0 0 2195.440794 15142.46645 18965.24977 15.56651748 0 8301.171106 33222.91732 0 4000.34827 6368.594417 57216.28091 9800.590301 8281.366806 0 81940.12895 12243.12766 783.6508098 2324.046238 19155.03621 0 2894.537193 2460.571905 0 2789.563281 1.086107916e-08 4329.488778 0 189.0317509 3790.392674 0 2431.849096 54556.76347 0 0 0 4166.961872 75211.45053 5817.124956 230.8611374 2073.767022 0 45466.5876 4765.136754 22061.88317 25355.12049 0 0 2013.675532 68872.89728 0 59729.80497 6780.129105 126.9173729 21137.6565 2124.593256 2360.0973 53.43293764 31511.2166 3034.043709 4450.166862 5218.206116 10851.31262 17479.74255 24131.09223 32267.42665 0.002660530183 937.4410262 47.27968382 13867.55794 3502.78969 30471.61492 79245.99409 38336.29899 0 64080.12665 22044.90391 21645.00021 44659.15608 89455.23095 66851.21645 4096.940562 37258.4289 0 163.0167536 2466.12491 9924.556493 22827.61269 0 6098.932942 41940.34981 0 4107.162758 5729.906053 16730.77622 51.8082556 961.3669847 1220.85191 10861.18528 0 14520.2031 9478.691545 0 0 21675.17192 40106.79585 6373.104525 1025.572258 26.43310022 32846.10087 103.4164089 35463.05245 82026.47791 11051.69795 47447.71323 31817.99966 0 0 49584.52059 0 67359.20472 0 43125.40088 0 61575.53499 2075.160708 57297.70935 2287.989142 7530.451191 8443.463877 175.9364661 0 56330.59817 0 63928.2072 0 29106.91556 0 10848.77594 50561.3929 0 47735.45491 0 0 45635.23442 8350.377585 23286.15817 5144.883886 0 0 7528.615034 10351.64662 7.456899524 0 0 0 0 2284.513917 6436.378639 0 10461.25658 7444.991426 11888.36006 2630.310499 2737.990189 0 21753.63514 0 65148.26794 20272.3289 3279.921379 0 2646.334276 0 0 9176.985495 0 0 52.48336208 0 4821.497068 0 70.19600568 49032.52974 155.4672334 198.3859355 0 2188.258425 3266.587677 2.924149707 0 0 1692.314596 29590.87586 6428.452443 3331.611935 8076.896644 21082.88641 0 8950.383354 13956.27115 23054.77831 0 0 872.4665622 49752.08569 0 8291.011943 0 0 0 0 9092.174993 0 0 7918.326797 +401.6184029 0 6281.459245 63123.13422 8077.826634 266.8295332 0 1822.771919 9306.544334 25726.48462 0 4704.764472 24698.82291 0 0 0 0 32221.79066 10074.10065 3109.494667 0 0 0 0 0 3090.926088 7411.059538 8.096517981 40618.50258 3566.133574 1951.833943 0 4022.310985 34662.93006 1761.536063 52018.45306 285.9851655 0 4567.342594 0 2490.916261 267.4970942 0 3284.512724 18387.3414 89105.64061 0.003273551502 4719.527765 2737.502043 31607.154 4257.57804 0 1742.153094 4490.743329 13029.67603 10962.48253 8089.859904 31595.63673 37511.49592 10007.90012 0 8506.667902 21180.32486 0 5378.006416 4679.986048 5616.549786 0 5419.6192 0 0 8726.182974 0 34755.43112 39099.88725 0 8145.826096 0 0 2663.896356 6989.087549 0 9288.312858 39647.83352 51924.75842 5221.551902 1706.846895 58.5247492 34139.49505 34529.61833 8108.698058 19453.5695 0 5445.535788 636.590603 1888.955506 119.1871713 62039.27357 2405.149874 26181.68727 18.56897675 1.641657996 1567.637209 31981.75471 46845.40348 18409.95435 17715.11464 12884.93044 46908.67801 7824.513937 33244.55744 5799.062329 17561.80999 47119.26804 0 17854.30572 6227.919487 46012.36249 3228.307546 0 57168.45581 0 25616.45096 16794.25589 20764.52946 9563.360582 3691.14646 1237.364258 7514.029055 0 916.8467113 1647.599775 6190.241455 0 0 68978.47585 239.3200032 12849.37669 0 2540.551736 2092.787495 32348.01181 0 1906.849775 63413.77141 1690.086551 55446.59265 0 5224.420925 7526.325325 6929.356835 3201.097851 0 3555.437087 83833.06476 34030.38146 4266.091589 22873.74407 11753.79658 0 8918.086066 1999.439126 12302.3572 67311.98877 11659.99522 0 20941.39147 3848.497425 79.58721706 11921.66598 22376.66957 0 8488.294952 2558.942961 8637.054175 36300.84239 5763.522392 29413.93325 33119.59025 0 23903.18649 91.96930755 13485.09123 308.9042449 2630.573029 26567.40472 31472.84241 14339.64252 0 8685.475741 2314.967171 5163.44117 8581.912806 0 3055.59909 15413.17124 0 0 10704.80595 46184.28012 31759.93171 0 0 7037.553473 0 3900.196089 6632.891546 2319.195663 790.1132304 0 1996.730989 7529.371117 1565.568948 2414.210652 0 13552.7787 0 1048.126775 318.8234764 392.4666364 820.5836557 0 18871.69985 5927.513352 21884.74011 2406.185599 5632.682909 0 0 11071.66695 2497.073224 0 0 23036.9111 0 0 0 0 0 24973.38149 53045.59562 17166.2296 12554.38745 2294.567721 0 192.6898088 1193.292127 14201.44041 196.8210089 1123.82863 32547.04078 0 11248.55491 0 7907.862852 0 3220.208796 0 1.776465389 13712.60882 6821.268295 0 0 2084.612738 220.0796363 1051.011357 4041.701957 0 0 2304.57453 1724.010817 6018.287428 0 0 0 6608.321487 4166.922936 0 302.3557603 23747.7827 81.75755137 0 0 0 0 0 0 3093.361701 0 8224.009908 2118.76346 1678.84814 0 23755.68926 29.35507816 0 3251.207672 14141.60534 6092.157665 0 +16549.86174 60.50179825 7007.882983 0 16966.43674 1493.641169 43097.34604 27846.21473 10605.21665 61.20844819 0 0 8019.453033 0 0.8979595412 1679.114989 0 20332.31325 0 0 59115.58372 36596.80657 2913.618148 5816.663467 0 3240.389326 1814.162086 8991.129853 24904.79298 6561.595388 0 0 0 1723.731498 3691.475969 16402.39666 0 0 0 3857.314056 0 0 5082.292825 13.84391448 30102.10817 17913.43944 15149.75569 2295.615191 470.5468683 8088.764163 15167.74097 16106.92886 8334.937082 127.6001613 1225.965943 11758.27694 0 0 3201.896968 25283.37515 27177.10164 0 19905.64702 7591.510245 0 0 34938.65454 0 23804.27969 955.0918678 22005.30469 0 0 9374.867893 0 0 18824.55008 0 1700.810485 1462.901474 60092.86192 611.3859021 17.21902765 0 33607.79777 111.5019345 19572.40406 20008.28514 0 5714.825048 0 37260.48561 2913.414297 272.7227231 11958.10341 0 0 78830.30015 0 21467.60015 14197.98808 20368.58423 10556.29881 47.56121731 11374.75212 1071.029657 5555.887494 1827.23621 9.376038427e-11 3346.950354 2008.334174 0 5348.8404 5977.785683 20725.4133 19123.13103 36677.27699 2384.428045 0 0 2998.986925 907.150128 0 23330.58751 0 3069.130626 39599.52355 134.8825705 0 0 18778.85863 2019.769916 15375.22489 1099.090671 0 29349.02544 13323.7578 0 21796.9227 30179.83185 49.0325795 110.0324568 40547.8706 9670.607052 0 15953.18654 23.3290801 9585.399897 0 6366.811115 49367.10947 16720.46296 0 22683.98844 13391.10884 0 6556.196465 4922.289142 23465.41476 1482.26861 7412.48479 0 66646.07744 8261.266816 40207.22296 42199.31802 15703.77081 1012.610239 6301.139536 0 57763.63167 9044.047285 0 445.4131442 0 12936.45944 0 0 0 18112.95532 79485.38178 0 10936.25674 40842.55126 62186.1818 56.90712805 22421.67184 2661.730256 0 2378.14818 39.12233361 0 6853.560748 0 0 903.2197184 12388.14025 9146.911952 2.082117252e-05 36476.22557 34252.93867 0 38960.61991 8545.13661 22454.34613 43647.85488 57420.56082 50111.03337 4189.360807 0 4862.905526 6734.644297 0 22070.94769 20277.02743 0 83531.16299 23107.79302 0 3696.13744 2965.441376 3925.684749 3496.737788 32455.36383 2239.244289 0 158.4230449 32853.85219 2447.403665 1.24366453 31876.89671 3006.612285 4351.177953 0 0 1454.154567 4439.497568 470.0433277 0 0 29737.043 0 0 0 1899.704726 65531.08549 1272.661889 7970.150584 7690.979669 13040.46202 0 3248.839602 41135.79296 78.71223115 1724.140872 2089.42614 38474.61038 0 20386.39155 11803.21735 0 597.97997 3477.201553 20957.35652 0 17239.51341 0 0 1221.348955 1801.618341 33925.76475 235.2732356 0 0 34.29990657 0 62077.18366 0 0 36763.17701 0 0 21667.08663 0 4697.420094 0 0 0 0 1390.78656 0 68629.32356 3469.102922 4296.591702 66.73457976 0 878.6149984 79.8234602 4133.784141 0 +0 1017.564038 1688.262113 0 16735.67035 573.260126 20442.16289 14407.9565 15900.89084 0 223.9920768 0 1.987740454 56116.36805 19702.14625 0 0 0.02216926462 14613.73989 10642.45944 0.009933566539 47019.80325 0 0 1298.359724 0 512.4071961 38.43423339 0 0 0 0 963.0737965 1838.14196 105.5630113 0 0 0 100.9221561 7090.544261 45601.52466 53595.99131 185.849201 0 4559.257263 18086.28281 4410.909178 34647.28727 10028.61608 9334.143819 0 13134.01328 31502.98819 2373.167383 0 15118.68134 0 0 0 13322.93204 64610.88505 48006.9839 9999.294796 0 7278.293539 0 0 25606.45742 0 0 15453.91113 69925.62717 0 9759.549805 18955.608 40806.86014 0 0 16899.67271 46.84859083 13700.2161 6894.638023 71904.7823 53097.97336 4209.429192 0 7446.950655 41996.11402 0 22898.40064 437.0137394 0 531.3303191 0 5942.304354 8882.452654 25789.15454 4533.318461 9120.80656 1816.521124 5120.296467 25804.08053 14879.03597 0 4332.040154 4759.878842 0 27831.23578 13888.80403 1885.867688 4658.405275 26030.16687 66555.34449 10903.51163 8102.561839 1860.556342 1166.870325 3413.935129 121185.4239 0 536.0892955 50671.05115 1850.730899 3616.333877 22354.20586 64.06338674 25270.76882 140.5539053 0 6241.887751 0 331.5358663 45756.44975 36005.46415 1888.185793 18369.37391 4.832243424e-07 75900.31954 0 65894.49956 23180.31071 17249.74375 23902.49653 17783.63698 6472.126463 10113.71527 3738.674412 114.9983164 0.3693303202 56714.39477 2550.760052 22582.6789 22363.41526 0 14689.19058 0 11244.38564 297.4421755 9336.166818 32612.06045 902.7909198 7109.849664 0 15936.24662 0 2027.604156 0 5081.010152 23479.16359 0 0 159.9926191 11880.86265 44956.10032 0 0 82527.85403 33256.39179 0 13895.77628 28708.24429 13455.38054 7568.798782 0 64047.13756 11621.05569 21708.5129 39665.83432 0 0 40038.81582 22.31420723 0.003603326069 60633.7279 57923.97264 21577.90397 16754.65171 21842.71203 1137.437852 0 1702.444295 634.3513202 6277.267435 11250.44183 2315.475667 2356.613071 0 0 10490.06847 0 10834.93876 14762.26534 0 28206.75651 0 10493.3946 6740.828219 35890.91406 84.37957416 0 0 0 6057.317699 5700.122407 0 0 22035.28499 2731.178799 0 0 54640.28745 5593.019033 0 3555.630374 37151.39912 0 7959.873814 11810.98974 0 0 63356.66188 380.2050631 0 0 22175.40148 132.995846 0 1.28891566e-12 25584.07543 230.325163 11683.00376 69524.27455 2924.745028 0 21168.59155 0 0 87.96624845 0 21013.88223 76.83215486 0 11729.02624 0 0 4231.022093 8211.752445 115.2508197 2042.476706 0 23507.12593 37030.06928 2064.501051 23389.74318 3531.504798 0 31180.3509 0 0 0 27650.63799 0 65173.23273 0 3919.627697 0 15926.43975 43216.68446 0 1923.158016 0 0 0 33.75645703 6916.49705 33478.42683 49827.45733 4217.992775 8522.901074 150.9601108 +61987.92517 2906.618941 0 1895.392999 3581.482882 0 0 34958.32225 4220.48271 0 3557.596466 0 15392.33662 0 0 0 16623.77868 91828.02648 44486.09607 1360.131994 0 2116.814134 0 0 0 33652.89416 0 0 4609.207364 17241.32485 0 0 0 11529.89651 0 5511.568089 0 18031.33388 4407.99567 25655.13551 21065.65145 0 0 0 6986.042948 2584.756283 0 0 16229.6796 27759.02012 22894.47581 60025.49342 0 1906.793168 7702.309696 27490.00042 3441.490225 14530.4427 64986.8033 11433.88602 0 0 78633.43569 399.36309 0 24915.87793 62915.92047 130.4769923 57402.42022 0 0 0 0 45770.39497 83186.55694 7202.824054 2550.185563 0 0 30383.34574 0 23052.20174 202.6041207 0 0 70071.9414 0 46069.22235 19580.59463 14821.1789 1907.974505 58142.58554 11312.98897 52453.568 48885.13402 11077.83775 0 10032.05895 0 33751.52579 22252.56458 6975.459811 452.4855336 24303.15803 26590.08929 18103.73169 4000.114993 0 0 2.903034036 11335.05332 17076.66146 56596.54602 5796.036404 43509.29329 0 4325.669648 16009.9151 633.5419456 0 0 0 8672.789603 11520.88212 2850.515176 3251.43973 49226.4485 2847.450824 0 0 13698.11458 0 0 0 3786.493494 1.073569525e-09 1547.384753 24078.02195 0 140100.6799 18892.46001 0 2890.817417 5245.908667 685.9955553 0 37615.51623 42744.32904 678.7703822 4726.34895 39439.1921 0 20849.6214 0 1365.732354 2379.445614 6229.868281 9856.724023 0 10295.45954 53555.55684 94.69603164 27792.32885 2433.012159 50619.70947 95948.41436 15886.47015 0 40860.49576 40881.66141 0 8743.695594 310.7518174 0.0641580336 0 1084.431774 0 13011.11114 22848.66425 0 3061.441938 24949.65799 3534.131323 17278.92889 0 0 17996.79332 25573.34694 2428.348559 0 10595.77373 90037.62313 9030.693284 0 0 0 0 1055.288926 169.4201833 0 2795.09094 11062.31947 20408.71393 44021.97912 0 43519.81095 14491.67899 0 7835.078979 0 0 648.8853918 0 10999.75014 904.3533776 30734.27247 6931.348064 11451.59215 42323.49169 18961.54256 60200.3795 6225.244981 3638.39878 30021.59493 4112.49888 0 0 32764.63687 25982.67604 7980.34757 42766.42817 68994.19774 138.1769147 2727.594548 20106.85585 2988.377727 15552.70775 960.873161 0 19403.3076 5184.992758 1859.622434 33673.7897 161.8854734 60367.99704 20764.63821 9282.538509 7351.492208 7929.381241 82609.53698 0 0 0 2703.653647 0 0 0 6150.834166 0 38920.99206 8964.008091 118.3082663 0.0002189465987 3660.493358 0 2.117864789e-12 9633.197101 452.2990707 3.901121226e-05 0 2814.229318 1769.812291 6088.779576 5978.730359 9.933878207e-05 2124.198826 0 15017.92469 0 519.2956573 0 0 0 0 2842.491454 0 6603.140257 0 0 0 2383.962666 268.4459872 184.4938348 51095.35603 4782.213929 16215.01476 0 0 0 0 +47446.9355 19217.41755 57765.25373 0 641.6703262 0 0 36486.87908 0 10335.7983 23373.69469 33311.02191 0 2204.677523 4800.150315 4952.43823 768.4017682 294.143782 4343.563708 40770.13889 247.6133891 23296.52119 16731.4761 0 30814.50209 773.4866782 0 7642.010749 0 0 0 0 6954.859195 248.764004 0 0 37696.93703 440.5829726 33212.39599 55667.11203 0 0 0 7601.480746 12.66727091 9680.151589 0 15147.82177 1494.619264 0 52901.09596 57.07999194 0 0 0 51550.61724 49054.56514 10333.88704 0 74159.46511 9482.876594 16407.68997 1089.878468 8088.484521 0 58.93876834 66876.7478 21604.31945 51322.93261 2787.004952 27445.57437 520.3496612 69613.98311 0 7280.882729 0 58.1089142 0 0 0 6342.434797 38224.45766 15270.8592 35.39031971 0 192.9287683 19903.80639 111461.7522 0 0 40943.89618 17293.95868 16400.10897 75182.0353 26831.97943 0 16114.42741 0 29837.90104 0 38932.87244 15021.75243 0 821.040354 1728.792985 3550.184814 30564.54323 0 434.1129768 0 33394.81877 3276.347178 33529.4459 3384.190344 0.0008023501798 7943.370094 0 7.571395557 75815.57588 106.5886149 8046.98172 0 0 0 2928.809283 26180.41653 10266.97229 0 0 608.0378113 26432.06579 43263.59182 11247.90266 2269.841087 63792.82106 0 0 14630.09431 187.3824614 0 2977.768864 78849.41863 23110.53215 1216.816113 4562.513778 16155.40859 41411.48755 5634.00009 50997.53904 0 367.782177 2355.252422 9268.135902 0 0 0 35358.03165 11161.66123 0 0 0 18966.46757 87.00027556 51313.19954 6745.958946 0 0 0 21738.87453 9146.95814 3746.429067 1958.624035 28229.03638 2712.842429 0 32197.12954 45406.33588 7146.482244 12595.86853 9626.408826 10898.16999 13120.65753 0 22680.59831 60633.17516 10249.82328 86237.05102 0 0 0 3747.957761 11487.40644 4306.98362 0 89067.47819 1708.199718 0 50903.94758 0 0 65092.5043 5593.401806 4017.644415 0 3539.956151 50882.84406 469.2322857 5578.368164 0 74823.11883 711.9126573 16931.64741 46.19982459 0 762.746499 33713.02824 0 0 0 0 29265.45282 5645.720659 17634.32671 0 7037.735296 25.62997399 5507.909909 0 447.1742475 5386.309114 227.6958191 0 21725.1788 72.39664286 68226.70874 38279.63947 2214.541321 34773.34658 0 8362.968088 0 7295.153464 29783.01402 22475.23815 10770.52949 1696.132442 0 14911.98903 9600.026263 25757.14627 0 41.67489386 15926.0569 29741.54747 50539.3736 235.7368399 9416.970231 0 0 854.7594099 23953.92218 20336.05417 19647.19192 4547.670304 0 728.0859577 4148.247664 19837.2807 19415.1154 16546.27829 543.0931546 314.5540259 0 0 26152.82204 0 4543.369362 964.5997362 89.97072099 17509.86052 44877.38661 0 0 8423.508018 0 34567.93878 4317.640924 318.8422502 2467.862137 912.0144094 14465.53337 0 0 31769.33854 30658.70344 32362.29136 9077.802565 0 1550.21801 0 +0 0 0 0 0 0 0 3320.706389 0 0 0 277.4097965 43531.08737 3783.963561 43.53924892 0 0 6134.121579 0 0 0 0 0 15780.40827 0 2296.223377 3978.749477 0 8634.95807 0 9477.042109 83534.31727 0 1513.878444 61454.776 0 52852.88881 0 5554.24074 0 13589.79813 1509.389521 41689.56016 0 14950.5192 0 56896.50187 0 31225.2644 70349.00972 5072.748242 8353.63476 0 0 58246.62811 677.3210904 0 0 0 0 8330.245012 255.1536559 3527.42389 2063.89717 0 52778.0998 102862.4153 4698.311068 224.7040933 40047.14484 839.7298514 20480.3677 0 0 4432.704246 38232.58838 0 0 0 2413.514331 1175.698677 69.30869509 17051.44812 62.50866991 641.2295132 15765.37197 0 10237.06485 3855.88582 231.0933923 6475.591833 0 0 0 4153.461395 8131.975244 0 0 0 192.8258886 41550.83388 14791.39218 0 0 36158.20627 17533.6045 0 3640.596402 20534.20206 18037.90942 12676.85351 0 0 0 0 8610.523195 41601.14373 0 13050.11195 0 6950.360817 0 19797.97218 0 0 0 1748.455852 18827.1273 0 10847.11736 2044.416258 1399.388359 0 138.0615791 0 3662.253562 10602.82193 0 95126.51773 25958.95427 0 7489.647818 54005.5842 4499.364499 531.2625718 0 44584.16188 12787.75356 0.0001279223896 10810.74019 1432.80959 0.04263333019 0 14480.01913 7792.760665 0 15847.45754 10120.17077 2653.491625 0 10767.07941 5554.836802 1941.087352 18007.13665 4470.811034 0 37264.74884 1602.676532 737.9123129 0 152.9492101 21281.12259 37370.46927 3282.233839 4415.842572 0 34294.7047 204.2739871 5978.069803 7621.500505 1335.898619 10641.89955 274.6198082 40501.21056 17368.51945 15435.78731 41260.28412 0 1121.056605 0 0 36413.59602 24132.51031 65500.8658 25037.24107 0 118839.241 0 2733.367151 9151.024984 0 0 28297.46203 0 11602.6372 1.016628785e-07 3429.28582 20183.30016 1151.40996 302.8229463 0 16721.61023 0 0 0 42632.59273 0.002725344755 48052.5309 16383.82735 20741.74542 0 9786.530198 3264.200958 0 7422.732327 391.8572046 22814.09667 2072.975767 13588.25233 5551.524658 32482.90091 2875.423785 0 0 45304.89466 0 188.8200548 0 14896.14489 15834.71714 8444.165812 21447.18417 6918.098376 25366.03214 0 1604.783238 46759.57387 0 816.5622141 23.75653386 149.3725012 0 43742.22483 54.82691652 13188.09434 33682.96838 0 34985.28379 5799.604862 0 3198.100904 0 48174.33954 4897.713113 1629.829075 5257.866578 10879.72175 0 273.6651078 3653.988448 42205.92465 33386.40721 7740.651083 0 29.30912621 20066.35999 52909.29956 0 0 455.6488465 1798.443887 0 4600.175286 628.286944 0 27133.79226 743.3344227 5191.252689 10286.46146 0 212.5786761 0 25.55423049 0 0 3114.148601 0 0 0 0 +0 0 0 14067.88798 1414.950165 0 0 0 0 0 8792.559633 850.8643619 5025.173905 0 32.80149364 19493.22106 11905.13615 3297.375324 0 0 459.9174708 1342.071634 0.00819853972 1910.471447 4170.216695 7464.590134 0 0 0 9021.399906 19862.44147 0 0 0 0 10552.09322 0 2772.750634 0 31712.32113 904.0405593 0 8345.596638 0 1431.62941 0 0 22075.23131 2.767720502 24108.88643 0 44982.51027 52611.03029 0 0 0 0 61080.73764 8384.168539 24214.13394 6167.066286 0 6152.947228 3480.589441 3187.809498 0.6960313592 3978.001874 1816.805704 1052.683593 306.8342172 0 70423.50629 0 0 53327.89015 14377.30573 0 17481.45502 0 0 14835.61634 0 0 0 25657.74606 53213.86962 0 22340.0281 19.20815964 4849.823706 26564.66675 30917.13904 30.02340373 27350.28914 16739.50333 31309.46194 3012.906531 0 5643.119669 551.2316935 0 34970.70431 1626.509289 39503.65512 0 0 48418.92215 1392.2376 0 1237.740923 8991.977641 95584.33445 0 880.334934 3311.216375 18599.16186 0 27831.74048 14946.67069 3669.211877 1565.293731 2947.175808 9132.103477 2532.376176 12635.34907 21507.72667 103.365397 838.1409265 11974.46139 0 40429.15513 71513.63409 3165.377767 0 10163.55392 15947.73539 20760.94075 0 0 30725.45412 12345.72104 0 0 3681.346877 21245.33302 36133.75687 0 114.8918011 628.6137899 0 21358.23956 3336.269551 0 51.44409443 6067.708318 3903.209838 0 0 0 7712.916956 3505.203084 335.8573372 35379.33428 187.7134009 4086.26768 11344.50471 1403.641744 4918.031863 23225.94746 11622.57182 2020.036622 0 4506.09308 0 322.5866657 25024.16476 27187.27061 1739.519108 14940.19788 15726.29547 13554.4637 68706.2065 7571.125849 19246.28313 42.56438181 8299.374786 0 60904.73836 12916.37454 0 742.5105152 0 54965.52679 0 115.2913571 0 18693.55556 114.3694314 0 54953.27896 0 0 583.8181596 43219.77095 25839.34229 0 38265.62862 0 0 0 21624.28778 25725.21865 0.007707459206 2210.42753 24728.96056 531.6141271 14029.60834 0 349.6585281 3145.85039 357.2901637 0.006135139121 1131.217139 0 31925.98623 34297.03184 0 9481.04827 2362.764457 0 33633.02506 0 0 3918.99542 34.9751253 0 7827.383905 671.0177549 0 1831.433693 0.0006168616775 0 8448.52824 3206.626735 0 30799.25996 0 15826.97276 33585.7125 0 0 13358.98378 7667.213422 1619.588282 27405.67064 7134.87161 11152.01493 0 1997.775318 0 6452.872519 0 2472.145761 0 6806.495192 0 89564.50335 0 59862.8543 0 327.1417898 0 14907.27137 0 2313.777564 188.0650649 5742.0109 108.3768931 22246.71441 79705.77008 0 0 25649.81535 0 0 0 0 55.6885201 8607.953549 0 10014.73755 3929.278958 0 0 0 3601.54021 27602.80876 1839.728862 42357.51849 0 +16694.78558 0 0 19069.94996 2530.607821 0 0 237.6358388 0 0 9090.964023 103.2015447 0 290.7408862 704.5737124 133.7281816 0 17346.2171 7234.299843 647.7095838 9565.892034 0 11692.24084 6721.518656 7479.425691 7353.504674 0 0 0 31983.32395 0 0 3064.896473 19213.56202 0 17609.03394 40973.50556 42849.82198 0 3428.796657 0 17744.82889 33657.51192 981.1283996 192.9185568 0 130.3772916 0 0 0 26929.69155 8220.779166 45209.5054 0 0 33418.19876 2660.269628 0 0 0 1612.351933 0 0 2351.375613 4571.862278 3.577868645e-05 0 108023.8963 0 0 4766.988988 5061.573676 20067.60344 56446.64024 60477.3431 0 46321.89307 18749.9428 5193.956375 4094.50346 0 0 32980.21519 66782.23422 516.0763191 0 0 2697.493205 46.30211954 9280.723624 26466.23882 0 660.4804708 0 7242.44977 35008.36848 14947.33611 0 0.3488838229 53.54596247 0 6519.509424 76.20714089 25654.2584 82342.8686 1833.287841 0 56627.07368 0 48649.55238 2804.804415 142.4801695 21508.26232 25409.53474 2069.802371 9300.244974 23865.15464 8321.808778 21575.4263 15806.10632 55126.47424 0 1803.472429 112.4756438 14729.93897 46800.84653 5495.01379 0 110.9198901 38.58411828 1146.669536 716.7051232 0 31279.89244 0 6958.211548 1546.729705 31820.35112 0 0 36202.64287 42932.25102 21094.06678 48164.16236 10081.06753 61871.79688 14280.22166 18342.19759 40771.86093 3690.161474 17653.1145 69716.27751 2794.823767 3541.931365 0 855.2682444 9920.362215 13088.58534 62085.91308 7024.420525 0 5919.029783 3940.651318 11164.02688 21993.58018 39347.72984 0 8738.761526 69077.86524 3461.002609 0 43109.61899 8850.927031 0 0 7936.803686 59394.70746 8438.996342 29105.78631 124890.2741 17789.55684 2524.05374 23540.29913 30968.60526 0 36.83808809 38926.4126 4605.440474 36546.33922 0 43320.47703 7758.91211 40799.03725 34356.18146 17181.79457 15667.13749 0 0 23021.50211 22164.63672 212.265118 68.65225795 26722.47747 0 0 0 38861.4288 41517.28256 50764.42684 60860.62349 24311.42227 523.9258685 3770.598876 21250.04255 24407.52917 0 0 0 7125.790527 0 16770.59164 0 2422.136584 26138.40698 157.7504171 111.7792839 5491.922879 87975.41086 36183.31266 0 0 0 8045.512992 29547.65249 224.138396 151.2585883 0 0 446.0809789 50377.53356 1763.480982 0 8358.794358 36140.15974 4976.08771 10176.80556 10716.6559 5425.658267 0 0 0 9555.179322 6133.315504 448.5143123 10798.69935 19875.5269 0 0 53.47163415 0 0 0 125.8727539 2891.611721 0 38823.67354 30036.4128 19694.34165 8720.646188 34151.70352 13621.74306 252.3588527 0 37160.82076 14620.34397 1479.496709 2692.076511 0 0 0 27154.42265 53408.96082 6809.966592 33047.31969 0 0 0 2626.856951 0 1762.523378 42.70976297 268.2927398 0 8772.168887 0 0 1934.433815 3282.611688 0 4451.202319 +0 34857.71892 82405.46551 53439.68771 34.85719281 0 2028.661811 0 138.7909856 11864.92222 304.6411113 2726.327213 20863.11698 0 0 0 55.42005378 0 23886.10356 6752.039451 32136.9486 0 5563.827178 0 4466.778564 0 0 0.3071328667 7562.037659 0 0 22151.94901 98.23786585 0 46553.45442 20768.86185 8519.303303 0 0 22474.09603 25838.682 0 1118.197626 209.2083056 5186.070741 0 0 0 3671.848961 0 52931.68014 0 1280.688414 1684.435835 16985.11538 116.4197417 154.5948094 182.936415 0 9427.554196 3314.595111 0 35704.30435 10975.02173 22661.89171 0 0 3613.806453 2462.527798 23908.77244 6531.028789 0 7714.955841 49388.63379 14140.74671 51057.18801 51.19582045 56449.16556 8015.945584 3641.520283 68.06417874 3917.665615 16144.31917 7366.186524 26847.33764 0 11736.07267 45743.43423 15594.40829 1254.182493 6516.364656 4332.899366 2.27522577 4405.878515 294.0520106 391.6048008 0 0 14288.15633 57.24889395 92783.39778 4524.848212 13953.7405 44845.79635 0 0 98409.81084 2837.683666 0 0 69327.97194 29913.22315 56584.42858 6841.34236 44348.86732 391.1130404 38607.28675 8820.538423 41997.76848 36692.88434 22638.92695 449.5897778 14498.34426 8056.916286 7176.086512 0 19206.41973 51708.89374 7521.12704 27991.68926 1744.034029 0 119153.7525 10637.59347 6589.481087 87781.37276 5942.160137 0 8810.51155 25779.24996 0 657.7258603 41068.99394 9828.427102 17668.00777 0 31050.6359 0 0 2297.636846 34569.569 89.24789499 93039.13593 3171.730383 0 94777.45405 620.9305146 0 0 0 31616.99862 11753.63583 3450.047045 4662.314255 18804.84168 24336.46236 4605.037989 0 7142.765901 7582.685903 19551.43687 100726.8492 4352.015611 38908.62297 15356.81133 50.62791862 93.16143337 14187.59701 0 2311.681904 43897.96733 38907.51856 33027.6647 0 28504.58085 17235.25634 868.4219242 89.5438707 0 0 6278.538497 5346.637982 23742.66557 4523.418615 0 3199.246901 58076.95699 3610.976446 21717.7631 408.8501062 282.6188232 9.632831307e-10 49850.85975 70513.71559 7014.894979 32742.73087 6942.438951 0 0 0 7759.978334 0 0 14619.03645 1643.322787 3108.019857 0 1770.236957 3489.735311 8029.95515 43108.73933 38984.36389 47469.99136 2645.015588 21332.93011 34326.17865 38140.64543 0 342.2114307 44.23359492 11407.96921 39543.72292 0 17029.19744 5876.363523 0 0 0 0 17837.53316 52107.55635 65057.81461 20388.63265 2075.129982 0 0 0 91.10632117 7372.944027 0 9674.725309 0 3412.436125 3199.212476 0 0 32726.75451 0 0 2185.82206 0 139.3249753 50853.03898 0 10415.41195 0 0 11439.10995 44.69580836 4428.435719 0 110.6286285 3390.238504 0 0 0 925.1076578 0 0 109.4881843 44544.56041 0 0 1295.394865 0 3671.414655 7169.816495 37056.32352 0 0 0 0 0 0 12020.56901 0 0 93.30972346 0 5229.474722 +0 0 1994.496118 0 6.458334748 0 0 852.8861462 0 109623.9471 31383.08947 0 0 63368.4332 311.2666746 13582.18124 0 0 0 5390.530773 0 0 0 4421.045429 0 0 0 25341.15285 0 0 8448.988949 33872.45549 2754.035552 33639.56008 0 9545.179052 239.5840496 84120.56348 0 4165.964289 5565.405828 52351.21294 33029.40742 17986.83814 0 70.65351043 14.13712565 0 827.2449149 0 107.6270481 9155.987647 14126.48357 7435.109267 2302.329607 9178.550611 17102.51953 5379.195203 0 0 0 0 220.1138755 28008.91387 10502.01357 50143.37471 42.23234969 146.2652287 10.96427669 545.7687259 1084.575061 40716.11275 6812.891609 0 5806.791683 5058.246749 78.36333011 8878.943457 93985.86319 21794.47986 38828.59863 137.5017065 5572.938476 28205.70241 4634.471648 0 36481.37989 117316.9487 35943.7354 46049.7382 0 12477.71748 43288.70755 39811.20035 42639.8426 15830.21436 23651.1443 8782.554822 65212.87957 25652.0533 53782.50031 5818.829221 38049.72215 0 0 0 0 885.9112042 1351.937885 1673.022624 8935.476816 33171.65107 16352.99267 0 0 1846.643992 0 40595.46158 22036.05639 209.8850221 23492.89215 47769.58673 9721.502344 0 1752.535729 29407.35184 0 1013.888397 35921.98884 23821.0342 1743.228793 20106.67901 0 4112.706279 4415.428877 10021.33129 0 48102.10521 5818.190913 289.3691803 0 0 37014.29881 4698.892999 90787.34401 51408.56228 16373.15968 70911.39207 10845.02523 0 0 977.5994226 118682.5327 17136.49375 28871.52066 125227.0051 5936.120485 0 67286.54177 4366.964037 32610.83713 0.002784715912 44414.40726 955.3524383 2406.467786 8910.984743 2053.28643 11663.61107 11176.73502 6803.719162 87252.14285 20505.72988 214.2463514 23972.42073 0 22531.36799 10612.06562 23731.09801 13869.19882 17422.72983 45546.4303 165.6515727 1657.12594 0 0 21885.68994 0 103929.061 25641.53339 0 6999.65527 13959.92428 24345.00464 45029.52095 3873.645837 228.317185 51958.19758 25266.72663 79841.05893 105.8642078 8420.119647 6433.448544 2422.836707 2802.423137 11420.71382 6832.66515 12557.32023 16013.84295 0 191.7451189 532.9665103 46909.04817 2.249610153e-14 0 69166.5814 207.1400366 3.318744299e-11 20863.21428 6794.279554 0 2134.197478 3132.324369 0 0 2300.527452 3734.151602 9103.770009 0 16723.8327 127.711309 25655.27042 399.4120158 0 42198.16023 0 0 2275.342045 76.81765483 0 4827.082991 0 0 7322.85503 8.054606823 0 4020.035955 0 0 0 15144.50194 0 327.5043988 2752.203289 27335.46 220.6123221 0 2616.02973 0 0 8314.823613 0 23604.20586 30180.18952 0 1072.313395 0 12784.34291 14736.94554 0 1107.489732 14008.73489 0 24524.06297 4376.228538 0 163.0789344 14534.1058 0 2504.017713 29672.51862 19016.78276 3533.519709 0 51105.99137 0 41210.32603 174.8708906 6743.235836 0.05278521682 15602.99774 0 0 0 38904.20494 0 53504.40699 130.214566 0 0 18008.17327 +8858.421276 0 14821.06923 27085.81888 0 0 0 0 0 1.421674641e-06 0 0.1839066796 0 0 67488.35872 2392.114835 0 49788.87554 0 0 0 19742.53372 0 403.8447251 0 11099.71304 185.4560514 41675.19718 0 54.57970193 172.4963511 31511.89718 187.1409878 0 5539.869208 0 112.7247012 10328.24571 5266.071577 0 3322.716996 30182.08254 11612.01182 255.0832808 0 0 0 12939.39053 0 0 40247.20985 4303.07024 3643.304399 4.836319881e-11 22246.98904 0 8899.06713 52.81091554 0 40055.1747 0 1476.854749 0 7504.247801 1097.89111 20137.43952 4687.332725 0 74420.95121 0 213.3271915 0 5248.204554 175.0950421 7421.311056 0 17730.27811 16895.82455 58997.47869 10867.66295 4265.053876 219.816652 32796.47677 4.547793154 25077.96112 20184.52339 27542.29132 1648.273331 68032.10801 4344.524021 134.652912 17302.16104 5579.577372 3132.963133 0 237.5596477 18344.11455 0 9665.184518 29.04406028 211.449895 9414.528277 2489.449529 0 14455.55753 14596.48673 14929.65505 0 0 0 20716.33396 0 19445.72383 23278.0519 6444.713444 6840.929058 113.8374358 8800.255756 0 2975.936006 0 0 15928.64298 4429.43397 8561.88986 22318.01107 9321.520774 21177.9733 3373.487398 36479.21484 5797.704717 0 0 0 0 41693.68635 0 44280.79391 14241.18027 1620.965709 101435.8915 2722.342477 44453.43226 5.239525726e-12 0 713.6266936 5169.222334 6.424310346e-05 4354.81685 4686.663136 0 0 2.795855098 23099.02852 7580.456808 64768.17373 45084.98287 0 47220.42261 10141.77781 35823.50914 19077.33119 0 2226.796294 0 172.7384627 40496.11528 70404.26264 6186.314749 0.06591260318 26256.37839 24758.69456 6359.008132 0 8634.277185 18859.5793 400.2409345 8555.432321 10367.87949 10481.46312 2441.570967 34365.09653 7051.508057 0 0 0 1205.080365 3915.364309 25472.4198 2573.939857 1889.410061 38994.79354 8346.38269 27817.12285 3277.538893 0 3837.254256 4373.899978 0 12469.18005 35187.18029 7302.727792 3735.412881 0 1953.76304 0 7240.210709 1869.76717 3226.836762 62891.64102 21519.97027 3428.957286 0 0 571.9895057 5018.456011 4194.07344 0 6258.494176 39611.64231 2324.94682 0 11147.2737 0 22183.09962 0 0 0 301.1882528 1905.728988 0 6782.284526 0 185.2771119 47782.65069 49849.04137 109.1321188 2317.537059 8912.693469 0 28478.45455 4518.812839 7649.982059 0 0 46182.23334 0.01396904541 2540.543271 23247.29318 4512.805059 20984.41948 51729.29729 0 0 0 0 0 4959.640435 4882.371818 0 0 25219.10262 0 0 0 3977.914785 2630.594556 52.4473365 9891.874406 283.596641 0 2253.168009 421.5115486 0 16.43002671 0 7399.595433 23847.20049 0 42111.19201 4381.457028 1948.81724 0 24.6822766 7775.87934 1790.35127 9436.664565 0 523.7459014 0 0 1143.717695 18.49203774 4530.181002 2771.151326 8510.370796 0 59816.5626 0 0 +0 7161.439448 0 2816.015691 3231.630218 2843.15187 0 0 6488.310814 37.66904422 7263.879016 21346.44339 0 17153.08934 0 4398.531078 0 0 6260.055473 4218.797601 8544.942424 3966.712723 20584.90546 0 12375.08466 5358.698625 0 0 313.4562011 3922.420527 0 2700.701659 17.8476222 0 340.8734434 3521.422663 0 21037.69536 5830.599622 20582.6219 0 0 0 2356.920879 0 14920.42741 17954.77091 1089.452113 0 2209.945965 64534.32584 16362.78078 1868.218951 16333.43505 19618.44938 0 136.3174477 42123.27708 0 0 22396.18923 0 0 1819.408181 9618.420233 11193.66087 0 50427.93378 9191.867625 0 36596.89159 181.7520275 0 0 0 53342.85872 0 0 91289.71407 5352.443087 24948.56325 11947.8795 7212.626193 0 0 53712.41122 0 7067.607862 2825.500289 3979.687891 28549.00948 2547.010578 21787.19245 55349.60465 3267.695566 0 0 23716.72237 12120.04063 0 18909.52688 0 5562.355789 39.97791 168.4407024 124.4201286 46654.89378 0 1739.939592 0 990.9882474 7029.817982 2205.484935 12090.79571 27173.1384 85042.00581 3748.180968 80311.30145 0 212.0140684 22208.56665 2136.721432 6071.115155 8961.029267 51.52662993 5642.303633 64.53387212 20211.62029 6.612772296 0 10902.12088 2922.628274 4366.297811 49035.00908 19750.64278 5169.246846 51125.79752 0 50100.32951 143.9655126 813.1912 0 2646.124709 0 4289.473819 552.9757215 4325.017799 18723.37374 0 11828.84046 0 466.4637299 0 22738.39527 9479.812114 8003.55616 26693.78622 1474.046437 26411.40165 1.901422347e-13 12770.28344 0 32270.50614 1252.144241 27905.67973 196.8049513 0 3170.058391 23265.87293 14109.36369 1837.326859 0 0 5044.472328 118.3923172 256.5624275 36242.40325 4350.401496 9207.380024 21277.91549 5626.402566 35333.16716 9286.824165 5381.572264 29592.435 4336.546631 43312.65323 9545.051505 2196.305748 58032.60533 2865.125072 5644.196223 11823.09754 7399.640764 711.7266601 24829.68202 0 35161.70814 0 4047.12595 0 31983.54687 31462.67524 4082.133767 9426.342034 4727.026781 1.157160905e-07 1197.780787 0 1527.884093 306.8879847 1816.595366 3577.943207 4224.376588 22133.00244 0 0 20419.81357 0 4501.569884 0 2198.598419 4344.403286 13685.79975 4453.876573 4655.977691 104.4096335 1233.431268 0 0 56979.98212 13366.61171 23117.47002 2073.691007 0 33999.16329 0 7986.166517 0 4159.007544 11110.79284 91.02410532 12000.81066 58.58412163 19586.58485 0 8449.496159 7843.073167 21799.27699 49034.51458 2973.371368 4022.363361 0 44211.50836 53191.00426 1817.232308 2878.847076 6992.009875 3673.535589 11585.64683 0 0 5573.682128 0 1782.813336 0 0 0 263.7956088 39788.77023 0 3945.987597 155.556733 0 5948.503997 0 6074.998439 2827.267253 0 0 31.87827209 38688.71975 1824.822889 53381.41502 2113.849372 2.925538342e-08 179.5201632 4274.831588 0 9053.304138 0 0 1658.178403 7258.452175 0 0 0 23626.46745 3368.918166 6666.235015 +7875.86242 13895.00837 0 8299.480862 0 0 6013.766189 0 132.2458144 0 2535.703069 0 0 0 2612.387438 11750.05735 7727.53725 7095.215407 0 4016.578188 2.934989923 1999.139152 23613.73903 39819.80536 6968.963262 0 35676.2481 0 42172.59591 10656.7205 0 4575.381669 0 72.20385998 0 34949.98243 0 25625.04509 17563.03499 1989.248965 0 0 34492.44757 0 1629.180381 5589.565255 16812.16062 0 0 32893.99729 17014.54663 48150.1653 9.373488736e-07 1360.07833 0 0 0 27563.22117 0 13175.06711 47980.48646 2247.434274 0 0 27042.15054 3.488175446 8191.856296 0 54217.3361 2318.821118 0 52005.15163 57005.10318 6152.748419 30196.46165 0 9285.783415 0 33187.75981 20426.47272 14481.19626 14373.4428 0 45311.09441 29676.51378 27875.12965 1480.755887 150.6575758 19407.15012 0 595.1336284 0 0 0 0 40036.06217 0 3052.120571 7724.030551 15627.59527 184.9479412 24.85584381 0 7262.068165 138.6546912 0 4376.706156 0 1242.175002 9698.627474 2944.552552 1017.752444 29961.10376 11992.85557 6789.304084 6643.961953 92131.27956 37295.62096 0 351.4888225 0 78.00422714 21859.54612 19414.64851 0 29182.5027 0 1.273370266 0 2.534819012e-05 30559.90387 8551.187343 45074.5099 4756.378548 44089.62855 15.79894566 26462.99929 0 3924.580428 4296.40276 0 759.7578223 11396.10473 0 19945.40777 19873.72878 42.96191837 0 0 23586.89354 43053.18594 0 0 770.9064732 0 116.4058426 27912.27621 5304.826877 908.179459 2384.585 5610.828698 468.67677 0 9456.456615 1667.042051 0 55479.37161 3990.383683 1233.570576 26156.37586 2370.638145 5481.410508 19089.93597 0 0 33269.74484 21778.80062 31205.6814 853.5080442 4769.250393 0 0 3126.558069 11352.3791 0 32829.18426 0 0 30062.00618 0 1000.219443 0 31838.1953 4010.185325 17285.11648 0 142633.9725 0 3233.506493 58628.10236 23668.88816 4688.218579 728.9876307 1891.751501 26033.33141 24076.33359 0 248.3105643 0 0 38256.52559 0 8246.822923 1919.737833 10353.93678 7.173825288 0 3449.569749 31500.76771 4254.01533 31142.92727 2372.401392 109.1779276 1080.434555 40101.55347 15611.31535 27140.09657 39699.3004 1049.35484 0 7757.219398 10182.80633 0 354.3333161 21323.91123 3090.223731 0 2276.374566 4304.428747 43306.8543 46428.40044 668.706262 81857.47648 49990.66628 0 0 29186.9559 0 11997.35066 0 149.4922631 36877.0793 0 8554.993668 44624.44632 32650.49169 51315.42599 3359.824457 19437.87608 3090.868739 16246.76027 8416.689746 7052.745799 2326.291609 306.4152133 61.51701234 0 53.78921185 0 0 361.0911457 0 765.7510563 12710.85159 7966.745628 0 5299.414403 243.4739817 0 0 13423.83026 9505.218601 11473.80445 51514.41623 3072.413452 1680.86988 0 689.9846867 661.7440648 12842.80678 8981.403944 2400.224566 0 2212.901241 0 3226.934355 0 0 8051.653428 21515.41734 +1058.829894 7751.164721 4910.146999 0 672.7434398 6803.048104 0 0 4632.982514 13765.13223 0 0 14599.49661 59.05476465 0 21791.95807 0 514.0294694 8175.210226 0 0 4780.800954 0 0 5012.373883 0 6188.100031 627.8026659 22090.64 61641.64417 43.46364225 0 1949.694749 236.4733719 2858.593256 0.0001837479804 154.405192 3932.711043 954.9379405 0 23552.8316 28484.29704 4788.410406 0 40400.85323 141.1149659 12242.48282 7215.95547 8849.229795 0 546.3801086 0 6609.176419 0 19.90431114 2315.590705 10341.55627 4231.532982 193.5902864 34745.93777 25221.89244 0 3783.39198 0 0 14675.33322 20843.78308 15863.8234 0 34967.60911 22674.02103 1769.451011 77.48286538 0 2261.850415 41211.51564 0 12156.2015 0 36.56055053 33175.76449 0 194.4095123 27403.91168 532.0180397 0 15831.44933 43443.1784 79560.79817 0 50346.15644 2156.548316 196.9774181 1987.831876 3558.155074 95.37598975 0 16839.14611 1419.411888 805.3262557 81417.07922 16141.54365 1979.730123 53576.46696 1405.889391 21988.14755 16947.6041 23646.45831 1093.419552 0 26971.80617 0 4324.574623 26568.96298 10363.37494 4759.63902 0 23966.82919 39448.81475 61182.22075 0 16373.63766 9902.59618 0 8496.636103 56096.24336 0 0 13659.01259 12320.28642 0 1827.164229 0 19963.90082 2326.689106 8027.667754 48893.04437 56667.07714 2134.27098 16230.78624 0 0 40.22705383 22993.49053 26333.8229 0 135723.5163 32711.95777 265.0585369 12134.18929 0 1847.952776 0 5601.389537 0 12331.21519 1516.065528 1008.607235 0 42023.57123 101816.9219 15299.86066 9410.069951 43.58892917 0 2009.383381 0 15662.09663 82101.78324 18316.46253 5664.652047 245.1089047 6831.613126 0 0 26170.22198 27231.66382 2238.953656 19363.81113 0 5013.383732 17255.47865 0 6980.621599 51438.65162 4490.875962 34026.86291 4562.913127 0 0 0 3974.567783 32654.30583 51.63222538 0 4330.741222 4045.135556 5670.89682 0 22264.52723 4462.359926 0 601.0071032 34447.61552 9281.854023 0 0 18293.09544 0 370.3986905 2842.242281 25399.74064 3196.002875 19162.37546 0 1306.596935 15373.62009 38.46067081 8576.554504 13853.0922 289.1128956 41918.19537 7762.969465 0 47392.93768 0 23598.79338 13970.12653 4029.755646 9919.079372 0 34617.03646 19655.06691 1791.030945 2.853802956 20823.98561 10905.58815 0 0 0 0 18715.70864 50588.76788 0 0 50952.24409 19946.76094 0 33129.4951 30400.97587 0 25137.20925 23690.94143 15751.31291 7133.058691 30675.67593 9517.419127 7.857472637 3598.609218 2353.416269 0 0 2389.971703 0 0 2.240309465e-08 22449.52551 0 0.001106074401 6682.764588 0 481.239617 4291.408109 0 4105.846711 2164.312503 0 52371.47826 2985.988896 0 39571.72889 0 38638.68116 654.3227674 711.5388109 691.0322215 1119.289079 0 0 59.20291197 3679.425381 77453.16258 2201.352932 4272.202741 7347.488119 3682.738456 1959.746399 28.47860818 0 0 +9901.001223 912.4963799 6002.164232 2194.727266 0 56505.50339 0 0 0 27921.33161 0 10860.0474 67146.83061 0 0 17428.92574 2995.287335 120.5665796 6816.865663 0 0 0 0 41.16730202 90.74845057 0 335.4877361 9852.13762 0 19114.46284 57016.16107 25999.10547 6740.515658 0 17256.32748 0 20751.67682 20285.4614 0 0 9553.861561 0 0 41133.67788 25662.54888 0 1848.876534 44920.51648 2681.705917 11693.36549 0 2639.972146 2961.442574 0 0 2376.752085 5169.616202 34714.70313 4061.572794 11814.64257 17701.35166 0 7166.842273 6295.456003 0 5788.152191 0 57155.09714 2147.979804 1016.764337 6961.439794 0 3649.513614 625.1615778 48.94149095 16985.63187 18919.78692 0 0 33697.57594 37568.81347 7142.206082 0 0 60.1103332 0 4379.058792 99.20860021 0 0 1907.855722 66576.23397 0 0 60776.12546 0 66.34120359 2457.134778 2674.566083 5676.61059 13538.97869 46378.80253 422.0165533 3006.615905 13315.84498 3423.701507 0 8659.098238 0 64824.10397 3541.921047 14229.64379 0 0 58225.77378 0 25123.00097 0 2590.199441 0 23552.30465 2527.64645 1226.732932 3430.090197 48031.80872 0 0 5104.311987 50304.42265 0 7732.301952 632.4287796 26718.62554 340.8247069 46950.13562 13429.28356 0 40276.22715 575.4008727 58809.83189 376.9921392 48.03618224 0 42547.68057 14253.34589 22.59313486 23758.60645 2353.278594 676.917729 1624.465887 0 40.10621226 91.73047606 1901.95775 45260.63993 309.7253546 0 0 15458.36429 0 55977.15564 42.65814072 0 137.3702755 5509.749823 0 11377.15692 0 0 5474.713698 0 1851.053736 29668.71217 0 22246.70629 46246.89627 19071.37519 0 0 6059.3549 35493.5144 0 2170.906357 0 0 0 1915.997654 220.9508785 1782.820948 16198.86703 24927.91217 0 3287.759601 6716.350683 27293.56598 30958.79513 0 3.439065883 50782.11841 12907.91133 6658.177953 0 5893.295508 22036.57893 28232.36626 50376.08866 25977.33473 4672.363603 28793.49988 0 3322.10482 10311.77835 0 16263.88247 0 0 25059.82765 454.4170668 61683.05719 0 11953.1876 0 29036.1882 7962.716277 0 0 64224.19128 10751.69917 0 6276.604485 39.95201393 3504.98054 45101.14383 0 6939.163044 13854.36742 55.11732685 49261.59061 0 1699.323704 0 3172.4492 0 0 54.98835322 1453.867271 9589.215488 0 289.8203069 15084.89721 4912.42738 36314.54789 19762.53235 223.1215671 0 2971.880154 0 5518.066678 0.0003255014598 64552.42972 4201.75815 0 0 0 42970.40858 73633.0843 24010.57332 1866.509613 4382.080727 0 809.6959381 0 0 0 2808.888596 3153.771743 0 0 653.4770335 0 0 0 0 2754.497162 0 0 0 133.9025617 0 0 0 3952.602432 30067.99078 0 369.4398459 121.730019 51603.60438 2232.734544 0 0 +0 5912.942768 0 0 0 3766.701356 13921.36193 0 19.92012444 43205.68042 0 23436.54647 0 2028.830374 3119.817519 0 0 0 0 0 15251.32187 1365.248152 55075.09295 0 2806.4474 9278.006084 217.4063197 3436.015652 35593.39714 2222.641722 0 0 395.9281433 4397.940125 4051.866575 20699.66545 2898.377643 0 0 0 10085.26082 104.2125284 1036.268076 2424.301003 1832.241685 48166.841 3890.182544 0 16914.35006 11480.56048 3194.000205 1916.458221 0 61637.94415 24635.4448 0 31934.23167 7.023846889 16923.4241 0 60101.88549 2.457388831e-06 0 45007.79567 0 29271.3175 0 25.37237049 16991.83239 8468.116717 0 1723.566524 23116.82584 18950.16046 8353.690788 57769.41031 26789.87538 1.515233952 464.1879105 2699.305395 47453.60357 4130.345495 34572.22893 79870.2316 33464.21721 0 16448.73081 132.6746793 0 4268.607892 53139.06578 0 2130.67229 43436.4559 9289.32457 0 3732.265331 0 21995.12688 8221.771347 110473.9299 0 0 92686.50174 29759.9267 55055.64356 0 52.6669384 63.08971422 0 26673.95816 74576.91566 2199.451688 4998.333661 0 27811.56269 2075.956307 5476.195372 5491.703211 6230.81065 26272.25359 53320.56372 7586.278393 6230.838009 4038.120513 40633.28777 23350.64832 19469.17528 30660.13808 0 7786.638939 133.4321191 0 2109.824185 0 120163.3178 0 10001.20498 876.1733553 3984.002151 12037.36727 83.67012307 28536.43573 108.4752792 0 507.1682461 682.177356 0 52.02186769 18150.8652 0 0.0002412012642 17372.76605 0 0 1.092504173 0 645.361115 0 0 8879.144091 24922.30026 17095.37744 0 39796.31792 0 6025.309904 1091.132328 14189.64911 68863.23354 0.0001409639428 8080.805621 9954.244798 27350.02975 0 929.2052849 48.78208628 9137.171816 21860.42842 22622.60913 5569.412905 6255.072912 22031.08483 6741.568626 35205.20461 0 5568.244388 11.85809691 0 0.0004700343236 416.7650451 0 19822.62952 13630.63561 22849.6044 175.176214 343.7478052 0 9724.894153 937.1613117 0 18496.77634 0 68011.19854 2215.722323 7538.016149 28249.05197 0 4812.786849 32654.25937 65364.49753 0 218.7413402 34231.70373 24104.47848 36500.98193 7835.023855 8300.156198 6417.04315 0 0 323.7992562 29066.87264 2094.380704 1331.49679 14431.81834 0 23100.34335 0 5640.167999 0 47593.92524 7490.683925 14764.02434 2012.34089 36370.2892 547.8474849 0 0 5189.869358 0 23521.37755 17086.9044 15707.58682 0 0 147.1054529 0 0 88.73909837 0 21955.12165 0 169.1019345 0 6350.701872 0 4350.021796 12159.77094 3297.175135 8653.137497 0 35.37631103 0 4614.629725 0 15338.92779 22575.31195 15274.31258 10102.20846 408.8301552 37580.0428 16975.78924 12094.2302 5702.347204 3790.215517 45461.24181 0 56541.92066 23133.99352 0 0 1548.561207 10268.53134 0 0 4025.994491 6029.579848 0 6909.337021 1853.334682 0 4619.884296 0 68948.0129 24608.27827 2857.209273 536.8444499 0 0 +0 23.99499162 0 0 0 5971.405113 15002.28056 0 6297.879667 0 0 36959.89127 16312.31458 2442.117887 1512.067478 2494.680802 234.8139753 24181.67579 0 0 0 0 31342.77076 82.81481044 0 3172.049994 0 6513.176675 51545.82774 0 62346.6336 2142.902852 93909.10644 2.94879779 0 1225.702962 0 60.1700058 14125.5304 3904.532648 105.8667472 0 0 0 0 0 3571.94252 6872.621998 0 2716.580113 0 11515.20281 5201.234086 273.1751739 3971.121943 1966.952211 4557.188121 78.30606044 0 0 0 25.30643039 0 22660.81273 0 52.68577759 27.38863146 0 0 32514.29496 0.9306999598 53147.07215 0 10408.91985 1272.251794 48624.91583 28340.39722 2.378774001 0 418.0404559 0 1098.788804 0 57067.57414 0 179.0280913 40330.23454 0 7206.316649 5909.068563 45170.65215 0 0 0 34020.19955 14043.45199 0 3658.879523 0 5609.824612 5927.12647 9224.964199 7.459014746e-13 20845.08361 0 4527.786193 0 0.003556753957 32732.62399 91790.73679 0 28506.7388 28180.62042 61.77677676 1208.381474 5078.645387 17670.90436 42316.90421 76507.33754 0 1961.242633 20022.15808 472.8658525 60758.39154 0 195.6106347 6211.562756 0 0 5888.595052 64331.43787 184.3597637 3404.327891 3094.805368 0 483.6503466 49.78074357 47664.20833 7073.836878 50322.2314 9489.637763 20100.43344 0 24070.62535 91.29571607 39593.81714 0 0 2420.780283 0 8819.645885 0 0 0 28969.27351 393.3029968 40749.98926 0 6690.413748 0 0 35270.13074 0 0 23831.28297 23.73102871 3404.123875 33085.92754 21267.96951 0 4455.46327 13449.77684 16967.23688 612.8717869 8577.042238 17454.83284 2476.464734 0 0 0 32530.47049 6258.173781 2450.667587 1755.731953 0 86172.07201 13602.73063 23633.35446 0 34660.56523 1842.066536 8710.967483 4807.587838 37836.95569 3143.581931 7455.189691 15104.08004 7242.560037 4421.464064 3896.599836 35594.55928 0 0 2745.481961 24656.01955 48864.21796 25051.78379 12825.09982 3921.207272 3722.838313 11565.35738 0 21767.43896 25333.06823 1589.414635 2963.495967 0 0 713.344771 11092.63179 17317.96926 25995.88979 1837.137691 34591.46484 10251.29157 5377.327355 11583.23584 0 69614.50634 42114.51555 0 0 0 7051.078941 0 2981.934765 12698.77567 515.4919847 1435.835646 20580.88931 0 15509.52731 5026.999031 0 9950.426197 0 14132.8363 0 2356.063225 0 0 18931.10408 14380.42367 3430.145186 696.926656 16113.41228 0 8978.90251 4208.714228 0 22090.85042 0 3448.160968 18088.87498 21930.18533 0 0 16675.19083 0 0 683.2405771 5433.062377 18280.18263 0 0 0 70.97022253 36360.27785 22995.52639 5786.652861 0 0 11522.48319 23574.81678 984.9187844 0 0 2400.249974 5134.814717 19592.00197 16105.93483 31397.69041 0 9511.485396 9.90798863e-05 10165.75762 0.0003404918588 0 0 8894.222343 +0 0 7372.552269 3136.784455 1454.999555 24147.98957 4809.757567 0 0 18197.1924 0 17179.31171 3873.182857 6561.058076 0 4543.716393 1621.280702 0 7480.377531 0 649.1017551 0 0 2269.727835 1655.317851 50859.13433 228.4129278 1317.74223 31.12005412 0 59876.02172 0 6912.363268 1654.970351 0 0 0 8974.464416 7143.803992 0 11531.6752 51.9332588 7323.875711 149.9688423 0.007320974983 0 0 58109.3444 27867.47778 267.2325116 2576.209114 7410.865864 8074.201921 3333.033649 0 0 6100.728561 0 0 3138.429881 14047.88778 0 51.31190219 2740.994956 666.7351354 0 34040.73496 0 0 0 15154.56066 19885.99771 0 60690.89524 27.8327166 42408.56878 43235.427 77008.18372 0 8364.167053 23973.72288 47981.9152 4064.46102 7996.361746 0 55835.62402 2504.520177 11117.56981 0 27507.35184 255.7250379 24589.34299 24115.35342 73391.46736 0 3426.592007 0 13329.53172 708.1123651 0 7110.360556 80117.88821 24430.19231 12.70741793 4083.012503 0 7986.976881 0 637.4766942 379.1060117 2892.853524 0 1147.368405 0 62.22502916 95.61419905 0 0 13401.24237 2456.721459 12344.68391 5635.807331 0 23.78508214 0 0 45546.9499 3609.604283 15795.24996 36662.87194 8986.886663 0 0 3740.280326 50353.94939 0 20205.96136 0 2919.916483 0 41710.05336 22806.23615 22742.26374 120.2350191 1712.74847 85261.53761 0 621.5444627 525.3622582 4855.162787 5566.375093 55654.54415 8561.85673 0 12821.03373 67.9205993 3359.619475 2299.918383 16555.70675 0 19561.48964 56666.05145 13477.30331 22944.72028 59029.06542 31413.07078 70089.36686 17616.51887 1544.706114 21380.29741 28201.51821 19879.59758 54142.81404 6896.711069 17829.52931 51771.51537 19963.43482 7344.204152 0 1683.701691 19739.35998 2760.702429 0 36779.46434 9485.24032 59.11405058 0 80.82999507 80.39261777 0 31978.5938 0 7700.01432 3105.864324 26733.67218 3901.105973 0 27510.29603 89401.62609 8386.039983 53146.90389 0 0 307.4791469 0 35103.1222 3744.300491 0 3352.098305 56439.12318 39180.07724 0 0 54879.55356 16014.83387 18820.90658 148.8334362 1883.691409 18886.18696 0 2469.501494 1986.97552 852.2133666 0 56942.49736 3608.675047 0 0 0 13016.74733 0 71514.61583 0 2832.484938 37915.91567 6526.651763 2149.982539 0 2723.007949 35285.39906 28631.84557 0 7594.673301 0 0 1.56783414e-10 28037.27512 65093.39588 18262.21926 0 245.4095882 77.41877187 4085.681454 21183.37816 31991.7542 72547.90192 6.58879113e-05 0 4079.345775 0 0 0 27798.93247 23685.60974 0 0 0 9508.250533 0 11055.40202 0 105.2932235 0 7966.517649 158.5110232 0 0 7379.92175 6832.846826 6924.343668 1484.802243 4610.819485 346.2082163 14088.40569 1150.036256 0 1718.258289 13669.85921 6321.163585 16997.97361 6338.859361 24081.56536 52420.96473 27621.54661 0 2246.31234 0 67037.70867 50273.03694 0 +1098.643388 153.3717713 0 41.98387345 19783.13049 8461.945984 37876.47712 7823.671562 11701.43087 10993.86807 8897.525845 100.3589983 3182.576896 0 181.4668322 2367.205732 104.5282114 0 0 9278.752149 0 26587.41555 15787.00897 231.3213484 0.0002719284913 0 0 60.47660772 0 2215.118639 81345.50242 884.2773293 3506.979374 6379.998839 0 2310.107661 0 7337.98114 0 501.6776752 19235.91311 3896.642658 0 0 34.39546917 4822.245695 308.7766261 292.4607077 34595.37613 0 0 0 61474.93683 0 0 2065.94457 1437.758179 0 56857.81121 1185.555637 2346.782614 25369.95461 29334.31675 0 0 686.973102 49862.59114 41666.8972 17462.70943 54169.46171 2280.623468 1.246409447e-05 42072.59273 14023.67363 3654.824668 67355.55149 39104.13669 32104.74611 25025.08095 3404.227502 2057.266825 0 12565.4127 0 0 123.1300701 2361.467834 7783.084592 24052.33969 17983.9663 12983.82721 0 23902.13446 39863.65542 14294.40831 766.8423633 51521.38456 41459.00111 1327.310492 7696.65785 521.2205291 5713.807185 43144.78477 0 0 0 56.96725789 9615.998187 11249.84385 52438.45865 10750.46202 7155.919445 15945.82996 13437.49021 3648.275056 4787.726026 1257.294966 23749.49764 0 2592.260074 10277.00767 165.2788485 0 0 278.8925456 14557.24388 0 242.9439874 6554.505181 10144.00074 12044.56043 11767.27565 0 26686.08278 1698.966024 29380.65746 77066.12174 766.1901895 0 396.0917957 1673.090659 1336.3258 10432.17833 63270.38241 0 50.37026113 9475.930307 76.02837098 35899.64086 10956.19148 0 31397.45354 6175.468759 0 6496.056809 24315.57928 36111.02945 27294.72711 0 13722.81197 0 50793.89366 0 29570.46898 1326.845079 11841.00337 0 3797.274941 0.02796643182 3.275936927e-06 0 22825.40341 90029.11874 32871.61118 24583.75343 1429.866901 82491.47274 25695.53484 31148.57209 65737.12955 0 18590.06808 61443.22167 17563.02928 7401.99081 8564.637715 9331.535243 25160.51882 0 67.33497446 6876.476502 0 0 15067.05735 28305.5083 55.89608383 102080.0159 5320.831036 6031.845788 633.305537 0 44825.52772 0.01011453778 2340.521517 35941.15367 21359.19573 183.6686802 4809.833718 19420.50282 0 3733.632717 0.9875710946 7878.496785 0 0 10009.13526 0 3858.951572 0 0 10868.43426 0 54179.55907 11184.14451 0 18017.864 745.809812 10016.18906 979.7369338 5528.22039 49307.97772 2966.694884 0 31240.62008 0 0 10195.73496 0 0 51911.10845 0 3339.380524 0 26070.37494 1603.054878 0 359.1345176 1462.358531 4031.765816 0 16165.71038 0 3786.333664 0 36070.60312 22916.27631 0 0 5724.350036 4805.458951 41495.95868 442.7877517 58.37299364 0 0 0 78.80315937 1283.516967 0 31.24868951 0 0 40164.38059 5021.268802 0 0 0 2187.412683 1358.235182 0 562.8098627 4907.288602 0 0 0 8049.78349 3047.548553 21815.29221 0 13578.82413 3949.008411 0 2514.681079 0 0 0 2572.027735 0 0 39.12115855 +0 15700.67426 0 0 7016.46996 26.0244949 2127.576205 0 0 22946.29223 0 12288.61983 37208.3878 19401.82409 0 9775.439475 2907.821685 3495.052038 15869.65849 23076.4475 1972.644636 0 0 106.2079057 2949.838156 1960.303289 172.7363991 33828.70054 0 5477.333549 1750.052343 0 0 0 0 0 0 0 0 0 0 31508.05129 9197.699467 47574.53975 0 0 11089.07956 5736.532799 7207.234386 0 0 17881.45967 0 0 0 4863.842195 27049.15091 71088.70584 17802.70658 59.85995933 25893.71831 0 0 3087.419331 27052.36657 0 12985.56198 210.2045358 56580.79686 8131.373188 0 61826.98307 0 23566.02603 0 2791.953297 65265.38174 12282.65645 13577.02063 4244.377478 60104.71301 0 26613.48198 29466.83182 147.897222 34162.15325 1478.88504 23527.29028 41232.51008 0 56.51130748 5031.004438 138.3018253 13236.19627 10435.58238 0 10482.35574 1160.392282 29050.95165 0 3788.981296 8778.136117 4215.464599 1774.058026 3589.433349 3161.328383 2665.946194 25586.15215 12847.89216 42624.96196 1.496649218e-06 3848.812503 0 37676.47161 489.2054029 96.3766724 44811.94147 3496.084648 16408.74875 0 0 5611.818204 20759.92714 0 807.6898897 27764.88669 59415.37084 955.9688594 0 6602.200822 23504.72457 23.8089666 0 0 4594.651368 34633.39711 6100.790406 90191.99717 29421.98435 55225.70533 35697.81976 0 121848.0053 0 2506.252824 6876.980291 50638.87026 54355.76158 4655.399862 44431.24779 38789.12479 22102.65432 408.6678986 125413.7655 14425.92175 46799.1828 0 3600.463588 718.416997 10238.6685 0 0 8085.342954 63263.94357 14931.06831 26650.4078 7870.348415 0 14801.15142 7924.474369 17268.65229 434.9834631 3028.328536 7673.977527 0 37537.72469 7481.575046 2038.232879 0 8348.732416 29316.42926 0 0 35546.55796 14643.96274 1696.932756 0 0 2102.678436 0 56895.16502 0 15475.10706 36166.27157 8861.352317 44350.98751 1301.708496 9166.425832 8027.53118 6251.762529 0 2143.139259 16198.31929 8861.564487 0 2391.597973 0 2174.075104 26481.85565 8222.71213 0 1177.831976 37539.61838 457.4401394 8421.139042 8159.791772 2966.00075 37.45594196 42570.08587 42935.98416 37921.54049 12492.48401 0 3444.289833 23168.3454 0 11120.85369 8845.906283 0 19843.17313 9056.276852 0 10184.71373 67327.12937 0 1707.668322 343.9010325 0 0 2826.339783 8463.463548 65510.66438 25225.18177 0 25121.15493 12322.38551 31190.38979 3882.949459 0 40057.81732 263.3994819 2673.345741 46035.50037 28.07597079 59770.22082 108.4914651 0 9807.938082 34971.45135 11880.88231 9319.023739 0 0 0 32.1039936 9477.953616 5927.650755 0 153.9574465 36908.99315 0 26376.21685 10894.92812 0 1674.511523 5736.770121 3253.128286 0 3175.406519 0 0 19530.5119 2442.909108 1912.524624 4801.200667 3739.391444 0 1931.301013 12951.45512 1603.934772 0 0 920.8207088 20422.51542 10381.46541 0 0 4186.799285 0 2353.265054 +40.16783851 0 4106.270029 0 1530.562081 29765.60924 0 0 0 0 60625.38589 24738.36337 0 783.7753131 0 2049.82625 20264.7357 10361.96419 0 0 13762.33092 0 12936.59406 0 0 13092.31754 74.85967261 20898.15299 1255.203588 1681.08623 0 0 44454.64717 29969.5064 18660.41584 0 2787.71771 25372.08732 7313.259154 0 0 38431.67223 30872.16193 1899.917714 1087.389255 25364.96368 2097.77632 0 50398.26146 0 0 0 7392.089744 39769.36384 0 0 43500.75438 28.61342299 0 4580.811834 0 0 10289.52254 28.01605151 0 564.4212534 0 59.46566868 0 0 6159.881144 59316.63402 0 9381.156306 12026.92656 2371.010474 9458.900963 29737.5356 36444.97636 0 0 30877.63622 0 52133.67833 18537.99226 0 0 0 2319.156236 0 0 264.4881104 19594.17406 49097.66036 7306.043866 0 63633.29406 12811.93673 1483.989503 18817.37173 2696.238715 0 3303.978261 17547.55214 33763.23612 2987.338899 2677.961853 0 33834.88353 2032.485796 1777.195251 0 1065.446783 10122.55452 0 0 16411.3499 2515.057248 54086.08545 23552.8464 0 59650.70708 0.09492080914 4819.200955 4135.210707 0 0 2463.369996 0 0 0 24810.05859 23795.8275 163.7358576 112.9228906 1614.392962 3084.505766 0 973.9798243 34.45615214 34686.63517 3761.597154 0.003510384493 2495.742303 4933.223152 0 60282.18687 17300.34721 321.5004581 33156.91734 26444.87142 47219.06158 11354.64668 0 3990.311768 0 26549.74652 15011.93753 0 0 0.119131554 0 7622.686236 2676.982426 17358.60709 308.418458 19883.16856 0 32163.16172 33063.18021 78542.20556 54371.80344 0 62779.70816 222.0751592 7953.390555 2138.556781 6286.084248 0 15399.6894 17919.46775 1306.803336 0 0 2094.590841 17362.46445 0 32757.43824 34365.66565 65130.05306 0 0 364.2597467 8517.369087 39.89486279 2968.329056 15987.10705 0 12468.91488 10986.53814 2311.451793 5134.697393 3265.181625 4274.819203 15394.63521 0.4234844619 2562.327326 1835.087352 0 3032.809426 3432.75266 46.45801045 30972.82061 2921.668266 0 0 196.3169885 23853.29 12107.59891 0 0 419.9429101 8429.972183 0 0 3169.561774 27719.8416 2370.392106 736.7656871 2312.660801 75051.38366 1932.110987 0 5565.745171 0 12958.60034 0 4693.587335 0 13183.66138 0 0 13787.07566 5112.025299 2142.0079 56015.14413 1029.190039 85.8902742 62879.63484 0 0 0 0 9321.620439 21318.89444 0 4540.576706 0 0 0 0 0 140.598045 362.6780285 8434.145098 0 0 47.18162749 13356.33269 7210.961427 2268.484048 4997.501866 0 1374.573165 10220.81054 2920.563446 2322.214533 0 0 0 0 14720.65481 1338.075854 0 41841.14625 0 2549.351243 27748.13562 0 5569.709629 0 0 31691.77797 14606.73835 0 1900.976934 0 43.61510478 0 38504.61946 +0 37.59389792 48068.29171 16543.79973 3070.140619 19079.89986 0 0 37741.22507 13298.27311 0 53974.28044 0 0 72105.0006 18456.60141 42155.95608 1.515573756 436.6292846 0 7394.235106 26587.42839 0 0 0 1964.1013 1544.47886 0 0 3147.842239 0 2624.693569 35531.82967 0 45475.23036 0 5415.010959 48380.13926 0 1952.14561 0 2830.296839 0 0 0.3408996727 8144.097289 0 1682.625801 0 14829.55964 54665.33217 3927.623584 5397.346126 0 0 2519.955698 55707.03428 32316.35982 2849.968254 0 0 998.2781251 352.3924666 0 0 105.9692181 20202.43437 403.6304283 8473.299107 0 35072.18097 1471.662328 1847.276342 2755.525583 1559.418801 25503.68359 26056.98729 12844.98674 33947.10871 38039.32866 11352.92205 0 2121.142913 0 3789.500069 1664.514339 236.7497167 19265.91113 22313.18964 18754.99164 11125.06562 0 25831.11556 244.3565668 45565.9062 34803.60962 0 5680.296619 0 26179.42887 37920.04303 0 4125.438831 18483.87872 0 43024.90418 134.953764 0 25270.09685 5269.174272 13136.70774 6104.026077 1678.961429 10649.45318 50108.31059 12475.72473 0 3290.056316 38150.32076 95396.24619 0 52778.30099 3122.856923 0 143.1731812 0 33428.81747 2567.071042 16105.21629 19318.44702 0 16904.23896 15495.20101 43575.87433 13732.65604 0 746.9668826 8205.16687 106.638101 15483.06191 0 39859.74444 0 2975.413371 2660.30189 35775.82408 1616.193341 1509.761564 100761.7249 5726.607028 49849.45093 6737.233859 0 67433.66031 9570.45872 2115.949847 1.495754334e-05 5503.987114 0 2964.863726 8448.324264 1.050103635e-08 0 7035.928324 5122.121488 2816.146793 201.0849812 9268.317898 5892.284107 4.52627483e-11 0 874.460313 0 591.1771561 16531.93526 0 6821.807281 0 0 20196.22374 20579.77061 4472.630073 0 22692.10523 7904.88568 0 0 2.440865155e-06 8236.296591 0 12584.84533 2931.600516 0 1729.986136 0 45.94592979 0 21644.21578 31178.01858 2702.240128 0 68.53103845 0 0 3719.684006 8300.695697 8150.316511 6880.592513 54836.05395 4323.061561 15425.12162 33657.52954 28087.40637 1564.373969 23524.72272 3090.941066 0 39424.15085 0 375.5019595 0 14.22656842 2992.65567 9640.360703 0 3238.313508 3410.425882 13240.54601 0 6346.184148 13227.40795 23474.98671 0 0 0 0 43.10746917 2297.265957 0 9542.288069 12167.01825 22291.58415 0 10179.05789 4443.476669 31498.64882 21304.69288 0 0 1045.724112 17693.03291 4275.015708 0 0 2476.050232 0 0 0 811.5430144 20438.68072 2802.689889 578.6911839 23770.4945 0 10743.62503 5301.919209 6111.486633 0 0 41019.80505 5629.99975 353.9189589 0 0 29494.15126 2128.027998 10702.80781 51.08930808 0 0 0 52352.0089 32501.97762 28338.41667 0 2259.84886 6184.435057 0 19188.16849 0 0 1471.13488 0 0 2873.200528 19001.63216 1477.622068 4194.054407 3585.487478 0 +0 0 56992.95397 23793.87285 36731.80286 24171.92257 306.8535968 0 9042.923581 3071.833008 1158.001971 23775.76968 77382.18308 16554.66524 0 2822.284854 0 0 0 15664.7566 3939.157055 0 22810.05956 0 0 0 2355.556265 0 0 2871.473188 0 811.7491503 13170.36376 0 0 42242.33108 45635.00339 0 0 1523.136306 0 0 4763.850465 0 3571.430995 28740.62962 13088.75684 7736.386093 5872.69646 0 0 0 72949.71145 14354.04823 36.86125439 5674.8933 2296.791068 0 0 8730.804196 0 74273.22812 0 350.1720649 4585.664411 0 0 10818.47915 19559.33784 14350.76872 55651.89637 5488.387226 0 35642.1179 11578.49587 7415.922801 20437.79804 60443.21584 237.955448 789.936531 11691.63445 0 8304.911852 80211.19236 75.25769526 1478.465331 11050.99584 2612.316878 41641.03272 0 21195.54892 4070.102445 2089.615699 36477.46526 54862.25346 47868.00171 2613.787294 25651.03473 1079.689217 3297.166396 21014.75727 5205.126667 7435.084385 0 14242.161 0 62.8357649 8095.471384 14907.00182 46736.82893 0.004554461926 0 0 59.74361777 32613.92363 262.2338832 5108.019828 0 16635.6613 6563.875728 17444.58844 59851.98135 26282.09916 0 0 15748.74015 559.1751624 4619.596737 7220.661747 23445.01948 2433.086639 12230.24708 43160.70478 15434.86626 36196.41955 0 465.8653543 1442.681057 4416.96686 3321.164927 0 0 53.4461588 61.48645814 649.4535672 13913.05802 0 0 6577.952081 32991.7122 23570.78046 611.0388664 898.0401376 21908.24832 3341.919937 0 4424.554125 23340.73224 0 8376.335104 374.2311793 0 261.1690744 4957.958613 38149.575 40758.66921 0 61116.50628 894.3271223 6106.237235 10361.9843 0 79400.60081 554.0909836 0 6357.798099 1653.878852 3934.405426 7874.902064 0 4240.804886 16368.04083 4775.718994 0 1308.234358 21854.88257 6843.914535 1652.611861 3826.634283 35989.4911 29497.17182 906.4361454 30105.0579 6573.582131 19562.51053 7035.980572 31454.37391 0.006562474471 18478.29032 0 0.4340331361 7298.101442 0 0 0 1993.479302 34316.44768 0 743.3228947 0 56179.10212 664.8481638 0 0 0 31098.0701 0 0 9991.767657 0 4434.202152 0 9038.387181 0 8210.267891 0 36951.39087 0 1089.399257 19668.8599 92246.93998 11376.56301 0 13082.47934 134.6337438 43227.96145 34442.37523 4363.206021 6026.731931 0 0 2993.984752 23271.42976 0 0 0 0 0 0 4352.598916 0 0 153.4461338 8162.335328 16636.67854 0 0 4276.161319 11228.0567 0 0 0 0 291.1944423 130.0209169 0 0 31718.40829 479.6906538 0 0 0 0 4449.540844 3426.507549 0 0 2047.086937 25059.003 0 4917.44149 0 59133.72432 0 0 0 0 15252.26215 1056.420924 0.3432501067 35.71047673 0 2122.129106 0 2336.242329 0 2057.333457 32.66100279 5942.195557 0 +65250.71541 0 794.2432246 23224.69122 57338.36801 2062.981671 0 10082.42649 37372.37856 0 0 6323.26629 19671.92892 0 0 0 0 627.2595675 0 0 5846.718078 18594.73699 10051.48693 13132.63194 41248.23918 157.0118862 23237.8689 0 3028.557995 0 47597.24517 3.544912768 0 22422.03898 0 1442.167326 3750.563698 13338.63497 0 4854.507188 0 0 3279.83974 1423.984533 0 0 37007.35641 0 4148.555625 0 0 0 0 6247.184315 21271.29933 6069.84667 48651.76748 57.54251066 22879.11644 22842.85466 0 0 31024.27713 18762.75098 19295.23266 0 0 0 50972.9101 0 0 38322.97047 0 0 3568.842868 54379.32419 0 44114.65647 0 0 958.146803 0 22949.88271 2488.633221 3634.332553 420.281043 4207.994018 0 3050.547065 0 0 0 2195.188449 21165.1978 88.5385523 10937.00124 0 397.0500923 2873.492318 32817.37086 0 7471.989476 0 0 0 16710.13137 0 58883.35832 98436.79722 0 48699.99513 0 176.7177052 23060.20474 16980.31877 19678.10308 37455.94216 0 4.089509669 2155.064086 20550.05474 4642.932289 3844.568727 11858.6472 6394.329181 5604.37885 22158.74594 18146.51632 0 36039.33317 29667.32147 33361.375 0 23863.24061 37033.87917 0 917.5792107 239.5652735 1033.154701 27610.85854 0 47019.62499 6352.819886 22606.27299 4661.357912 1225.86778 1557.107131 5726.393068 0 16394.65781 0 14559.60746 73270.7653 1738.26015 1794.950604 62554.90537 26210.67535 0.402096777 7280.987658 0 22303.95408 34.43102078 18343.62525 0 865.9281427 0 0 11494.64635 3409.054403 32864.40075 0 51814.40812 4830.048839 0 2128.14181 118.4239011 0 117.8772853 7648.659227 3245.572817 590.517822 51631.02545 15965.1312 0 5826.731105 2245.013946 6528.25828 0 43.07259248 45106.0138 2949.794885 28300.47726 0 11098.24412 3149.50318 33699.57348 0 0 0 23328.81414 1.664612221e-05 3150.613071 16152.51455 1946.056968 2593.391887 2944.384739 3512.335058 92510.59052 9460.560532 4573.156207 0 229.2576331 38975.11983 0 12344.82838 5310.100129 14987.32052 126.9925047 0 3155.22438 2746.076698 3403.2694 6746.240563 0 4817.224226 1121.199478 3944.12939 0 0 3386.5829 0 2803.962593 0 0 0 11392.26243 0 3783.363669 3956.790571 0 2401.232729 1666.220478 0 35027.20475 46.11513021 0 0 2199.413223 54305.92764 0 54797.8148 0 0 0 3200.602775 8725.556167 1817.529252 0 2852.069609 14550.34133 0 5278.356722 0 204.2660506 0 12994.24337 0 6374.315457 654.259777 3184.151758 0 0 0 0 0 0.01289560214 0 43.9120807 0 44782.04289 0 119.7718346 0 0 37.51950118 2257.284095 0 0 16132.5279 0 0 3382.584983 17274.79915 0 11077.98454 0 3182.153931 0 2454.105292 545.2119552 +0 0 0 0 0 0 0 21862.57643 0 0 0 0 0 6329.090722 158.8607684 0 3464.036659 5413.15995 2210.764128 0 0 0 46189.26551 25381.55239 0 0 17428.65544 0 0 54.53811612 0 39167.23484 0 4260.479005 3067.095554 13450.67089 12514.48455 0 19010.8394 16761.07422 46966.33985 8579.899041 0 0 17697.0423 84.47944403 0 8181.200256 0 0 26.99032221 11609.8645 154.3823231 41891.48976 0 10704.68434 3861.448048 961.663023 0 60566.18197 851.3316912 9956.003633 0 0 0 0 0.152059084 0 719.7395375 3233.389397 0 0 192.2506416 15734.77459 1332.873514 0 7482.819328 9375.894427 0.2121326706 4037.24732 6017.949722 0 50061.02582 0 2526.234831 7525.469163 0 15192.43568 3602.051494 80.58703726 1077.018815 42.38809055 0 65.23227216 27485.35702 0 22119.27922 24812.58812 59741.3266 0 15015.30374 1210.727383 4212.880702 0 2455.490733 26570.8866 762.1020377 97740.50613 0 19100.90262 0 0 0 0 4974.857869 9778.111123 502.2747591 2735.838195 3597.368473 0 2394.464599 22120.31467 1499.757033 0 3669.061709 3366.525786 0 8744.373403 21455.58441 3424.394383 63.11416336 0 28202.01226 0 22436.30862 9593.629883 3199.396636 5926.781568 0 0 356.3108793 3750.718843 0 1169.577403 0 11051.7618 0 108.9947351 187.9024663 0 0 0 0 50540.92388 0 69641.06009 18072.51649 6998.326105 48910.97601 0 0 0 13908.39194 10326.56715 122.0385614 0 0 187.5273219 3893.791892 5.829379839e-05 52306.50843 17770.37458 43776.44873 18357.88065 0 150.133619 52195.49375 2884.906155 22052.94492 0 4848.060029 10261.5858 0 0 0 1599.85597 24472.95182 0 32211.34094 0 0 0 5571.678483 4931.751719 2789.93299 0 23416.62253 36900.90428 764.4056061 44250.58573 238.0105783 9273.86322 10978.38654 0 18015.81325 582.6601165 16410.5624 5714.529391 48202.77309 20.51312205 17028.06524 2217.398161 0 0 8321.26957 143.7803828 22963.47599 32040.8687 4240.008426 0 0 5412.610146 3092.160736 4813.095351 73231.10337 12661.39913 1076.32115 0 0 58636.11207 0 0 34863.98259 0 6265.29199 0 0 0 7151.438699 15065.13062 2153.987475 0 37965.93378 5596.191681 0 10100.80969 0 21525.05732 0 1703.929201 3172.880506 33753.08095 4821.310548 4231.364643 0 0 0 51.21197752 1536.312338 4119.96265 0 0 0 46465.45199 0 0 0 381.466144 10001.3951 442.0628105 0 490.9700786 0 10701.35166 0 0 409.9578435 21192.05133 0 6896.695631 17409.02749 960.1027507 85.42996427 494.6631746 0 23555.75784 0 12674.63861 1.158955469e-08 31957.8949 3330.56759 0 390.0643793 62163.59442 397.3680553 0 0 0 0 24231.87779 +8676.923531 15188.7946 0 0 2309.454547 0 0 0 19084.78175 28.47810155 8779.807778 0 29872.33967 158.0101661 8376.564309 0 7255.201359 16368.23807 0 3596.097007 0 46746.2075 0 91.03407091 0 352.2360346 0 256.9466493 26476.82057 0 108735.5717 0 26836.89785 4725.097676 0 4362.243236 414.6092775 0 721.9460836 56013.33505 26328.16237 0 15354.70621 0 0 0 0 13950.49702 1987.111091 0 0 95315.04804 3757.601779 0 0 32216.33546 0 27158.1331 13746.1414 0 2666.840901 248.1822923 8323.791397 0 44477.16408 2611.688851 0 12409.48897 7906.776316 9163.314268 36443.74864 0 0 158.5746819 0 22301.0269 11901.03119 26.86448872 19.56799147 29579.46162 5.092985988 4875.084894 8032.037108 0 106.8104541 29290.88851 10050.65194 0 0 25665.0363 29828.07208 9110.738301 0 0 32420.98259 0 3271.275003 26690.85267 39.57507514 12597.30922 4250.144604 45990.97502 0 0 2164.164181 1535.787493 14831.49149 12384.99832 0 3695.873874 17295.56064 4611.180035 0 0 13599.7984 6742.262965 0 3375.665727 0 0 0 27819.8301 1921.4172 0 25039.82922 8493.764634 15630.13735 2013.713678 0 0 17396.65242 8766.774566 61314.27512 43.04933291 0 0 8789.481494 41253.51669 41567.05128 347.6231185 0 1016.465702 15908.14167 0 8075.56114 0 7169.604563 0 0 0 34448.93461 12780.64279 1522.227826 3572.685918 832.6718086 1241.228033 0 0 81137.45936 9621.104594 9131.228088 14387.67638 0 1593.94848 0 26037.3496 11038.83973 4121.839939 1927.177074 22306.39005 10213.39119 2082.104254 12256.13857 18131.84626 3102.181272 7268.226517 0 683.598154 5255.604823 15277.40224 58.8269608 610.5350281 0 2058.596315 5365.174135 7022.82859 4939.176013 3112.481125 0 1810.264184 0 5.776133049 13327.583 3068.495523 4679.068853 7276.419178 5340.891597 0 28378.69822 15604.74536 0 0 0 26368.43648 67.85896963 13459.29542 38296.01032 0 5.503637247e-05 5446.459466 5346.938008 30874.35061 54411.87315 12080.0468 0 0 0 0 6951.268699 26760.81797 6263.43794 0 0 63520.92703 34866.88793 6124.928068 48292.02607 0 606.3994099 0 0 0 0 768.7291463 0 0 0 8298.170902 11836.55634 5590.787642 25464.96106 2498.304983 32654.46042 0 0 57913.1557 96.80521658 0 1487.34477 3376.991509 4664.909097 0 42521.15037 9155.310929 36894.592 0 0 0 0 1948.218901 0 19840.97346 133.1086177 1122.882453 25235.64007 0 2108.737955 1351.274017 9480.223133 4626.026901 0 0 16.71682449 12970.8502 0 0 0 0 50224.52184 7811.390837 0.00532067741 0 0 0.05661477293 0 24504.73567 4055.282908 22658.84578 0 11542.37843 0 1800.878967 7150.008502 0 10238.13334 0 38939.74595 2203.534781 1084.046789 2903.313058 +7633.84602 4131.186841 6446.739345 1162.475111 0 0 3103.252893 4580.627584 0 1546.800035 0 0 7837.566322 1986.182963 4082.263073 0 0 0 0 45617.00129 571.8662845 0 0 7490.018269 0 119.3145688 0 116.469923 50.78664541 54272.34255 51.1875367 0 225.1041889 9105.769352 9521.798096 0 8401.87637 28126.76722 4819.898453 45.75676385 1978.992956 0 36187.75552 0 3831.546898 3554.595699 0 0 0 900.4390932 0 17450.58766 0 0 0 0 25634.10024 0 543.473619 43.27295863 0 49530.88487 8115.332097 0 0 0 371.5439728 11892.83619 0 0 0 1099.038093 0 13677.67328 5511.221608 1082.339096 0 0 0 35941.90336 0 13326.10484 50442.01191 22213.00424 12747.05506 15862.84792 124.2244682 11788.60993 551.6795882 0 0 2306.407523 0 34267.83892 6783.630845 0 73104.51252 0 62177.11423 3684.171994 15.38883142 343.0914087 0 3826.941468 4154.473563 0 3510.757589 112840.5988 8.682067201e-06 19889.9717 53.84560221 0 60.80518321 4857.49507 6583.88327 0 41206.18557 4757.331719 12789.28232 4090.81721 0 6769.670208 3231.30256 7123.60375 0 0 607.443173 760.8504387 1544.344153 179.5529789 0 10513.89831 201.9282027 0 111.6918422 0 3394.671926 7107.19358 1.881242143e-14 333.5751065 33676.20909 10057.21267 7881.983202 0 1978.79049 0 17868.04644 3515.371263 0 14943.46614 44617.32429 81.38019719 0 968.1374971 22164.06288 0 0 267.7552081 0 28511.30076 2470.463627 815.9711967 2874.676606 0 1362.734014 0 22350.27884 28754.43647 23605.40308 38.18022727 57170.44645 237.9621087 0 2892.814898 0 0 45478.23776 27101.57342 105.382392 2220.450159 0 2981.185792 17863.74361 26084.95418 0 16614.62521 0 0 0 6594.393945 0 19097.37114 2661.467561 3800.626504 14681.77031 0 24543.49488 30540.36953 0 54231.39595 6630.568096 25462.39632 17898.37763 9818.23986 0 10010.50022 1042.521398 57.81961954 52.35432295 24455.34259 86.18294455 0 9059.272294 6699.5891 42545.70869 14996.56529 0 0 17629.87111 26466.26546 15459.50537 316.1746328 13689.41069 16715.94843 19731.36195 9731.008296 124.3865461 57446.90643 0 1068.265554 42637.60536 6526.992655 8068.020767 0 1540.181533 0 0 41246.94933 34478.91213 0 0 1347.428729 20002.35613 21.85641087 3.359179266e-10 75120.85605 0 44802.5422 50877.31956 65.16778498 0 9937.749222 0 5856.684926 9091.093021 7965.688618 5711.873973 40882.18298 0 3781.056159 0 16714.52572 0 3152.53824 57806.06997 29.3688034 2441.96044 19108.76462 0 51865.82421 0 49890.93066 0 0 9675.01092 0 0 2471.877129 0 6678.550537 1248.740449 5259.15404 0 12341.66497 5.020273752e-09 1026.57445 13041.11359 0 17.51131887 405.1144404 37900.14937 0 0 27196.34968 0 2731.274242 3885.217362 0 0 0 +1327.274817 571.9378664 0 1640.030459 1395.798162 305.018332 6.151575564e-11 2211.862338 393.9631942 19775.35974 6580.267377 0 12796.03472 111.1801897 1218.943456 0 13944.2443 1720.500876 977.8031094 0 28843.16387 24853.29162 30973.84842 30263.38625 15534.97581 9266.476645 13941.86767 29787.55576 0 31.44408829 0 4877.580112 0 3627.387812 18871.32003 12598.54358 0 0 1564.765623 270.5382178 0 7485.521436 167.6671166 0 0 187.3823877 0 6267.708129 0 0 5992.842892 27533.01629 11933.21023 5661.928634 4522.202972 27746.17636 254.7961925 0 0 166.747537 0 0 4984.649464 0 205.9820726 6139.991715 2088.66157 0 3871.189219 4850.06999 0 3913.861945 10200.0322 0 19226.60568 642.2408245 0 0 0 0 3005.896617 62860.02419 1150.855441 0 63268.17957 1723.664866 6094.544955 0 511.2726445 284.162143 11486.65356 186.311949 0 23818.78589 5614.822344 32478.19332 0 1020.084384 78799.13381 0 31373.88526 3936.238382 2339.200706 0 64.57941405 9205.659889 40263.17027 7961.810802 0 5644.891671 220.5385687 0 28620.39893 1.190137439 0 1455.286795 56551.96459 20665.03503 143.4596075 27.15354289 735.7034611 571.9947006 140.9546107 47307.69018 40390.65736 0.008541363764 9242.117712 16161.59165 0 2278.919064 41748.56667 45880.97344 6215.397283 38136.31786 0 0 47.54551516 0 1.665456265 48804.13155 0 7447.040796 26298.69577 0 0 44288.66368 9121.359451 0 23083.80374 4633.840028 22.30676304 0 0 2456.272159 96.11471978 559.5616104 7383.043265 67055.22311 0 1839.070574 0 18627.69 689.7638447 1246.205637 0 0 2016.492884 0 0 231.877721 4289.793765 25069.44189 7725.011953 42159.63931 0 9368.262892 36081.93281 638.8011876 2522.388002 60.59032668 5076.670239 190.5543137 0 533.0256019 0 0 2749.905383 722.3566394 43080.9725 46858.88479 5618.546556 0 0 2548.442539 0 2299.652293 61179.29021 176.4014504 35365.0053 25233.02225 0 18665.06244 3410.089913 276.4937972 3305.454442 0 0 39511.94988 0 0 15550.72401 27651.44293 11510.065 865.0710245 26875.20654 12351.42688 2359.759192 0 0 0 2708.495183 0 3495.899352 31400.39943 1623.393812 32781.07278 4844.692503 329.2381754 0 67811.65815 0 4801.494354 394.4749836 8982.487413 14638.15522 0 0 0 0 0 314.2974616 16934.29924 84.57818416 4404.705286 0 0 2062.650672 530.9862444 204.0507077 0 7550.179856 38296.95062 18831.66568 12354.40944 21881.63231 36151.7027 0 4428.222924 2656.228762 25502.27585 0 23.52784117 21390.58783 0 0 0 31291.30547 764.187215 7434.002289 17162.68721 11350.84897 1699.018445 0 9558.084888 0 0 44836.9782 0 50669.29979 53.88996478 5710.385088 131.1055121 675.9137872 3219.856937 15253.37032 13341.8728 0 10283.25162 0 0 0 0 1.168281429e-06 0 0 0 0 6089.654064 26723.3991 10975.98081 +45099.7629 11.33210962 33605.0616 0 0 0 0 345.989453 0 0 2001.321741 0 0 0 112.0945322 0 0 50624.29303 3946.618788 36378.96489 4757.793804 323.983818 2443.641661 0 0 8488.914795 174.2672502 7283.903771 0 6263.225506 6249.838021 0 19923.04586 0 2378.218144 0 5489.646652 52656.99763 0 0 0 0 0 0 0 0 0 6567.786259 0 519.2070674 0 15207.26003 0 23336.03275 7580.877407 14661.46886 0.02854511433 3095.779752 805.4395538 71.73409642 2110.495618 0 55450.50892 8410.878686 7548.691843 44878.18974 0 31463.36663 2265.499234 0 247.2634353 16614.3874 2035.935653 0 33358.60706 0 2839.920196 0 4763.750784 1596.099146 924.7652131 11574.80167 41523.71644 946.2634296 0 4914.064458 39553.96485 0 0 32764.9223 8296.449241 0 6132.053804 387.8228496 0 30235.58699 38570.70757 9.820287903 40660.30223 239.2944053 0 44691.11318 52283.06698 5549.145981 484.057376 9365.975979 0 4956.125243 0 0 41665.90556 3583.790702 36837.49051 0 4634.389219 1749.747231 5232.646252 0.001901955814 1093.629631 3406.380419 0 0 8276.177214 7222.352892 1000.182328 7375.396538 0 21168.18242 112.5692571 4697.753001 7317.697523 0 0 11600.64083 0 0 9770.703567 0 0 65498.46214 15095.7622 0 45911.41662 920.27628 8307.131606 1712.390739 36415.99013 0 20108.93698 0 10287.74121 12923.28833 85979.39878 38855.25265 4309.84832 0 0 35187.2498 31942.20638 2908.90051 1003.284897 8061.833196 0 0 6742.981171 2017.88828 0 1333.368567 452.0671544 24041.77582 6936.32695 6.247130256 0 17640.96582 3784.591789 0.0001777573638 0 10885.72163 21592.04656 24.12611545 2015.932144 0 5473.342787 11464.58109 3342.161318 98944.67748 9639.538131 0 26019.76253 0 37660.3035 28283.81334 20834.48185 0 29268.38311 0 45656.30885 18650.9413 0 21106.84832 13452.69283 0 0 10458.01717 7503.03933 0 201.0013177 20076.81294 3090.879047 2710.079005 0 6646.69693 26317.12571 9118.093062 36747.01988 0 45474.75924 15646.28945 35.28092868 20475.80541 5917.373662 6196.749986 3044.42403 11585.23963 3816.054666 3200.494887 8464.85896 22272.10252 66895.02293 22817.03927 2652.262685 153.1487902 30458.61762 4644.345958 20422.36018 0 24048.28685 20961.36355 45173.1296 75.52453296 4910.956078 2102.506709 0 1612.503833 0 0 4233.002857 0 4953.388928 0 9158.750443 0 929.6277025 1028.913724 1081.678444 3694.811859 24659.04568 0 29.49875753 88.65097002 0 108.1660468 0 2052.533974 191.1377513 6.675661873e-06 5195.927228 0 0 0.02382817175 10315.12742 0 2112.564304 0 70756.62282 0 0 0 7207.14382 4698.160983 179.9633824 0 4985.225776 61.51201805 0 0 0 0 0 31564.79191 1381.195529 0 2549.329559 0 50147.3813 129.2677567 0 3240.219978 1.134172766 1465.595311 +21379.99265 235.1034866 0 0 0 3582.413409 96.23249503 34749.57135 6718.33863 0 7795.775767 0 223.5622775 16218.15046 681.8679124 16492.03083 6429.819418 13283.11659 20738.74065 21375.22467 25142.41689 0 0.9209391761 0 3707.786438 1344.023289 0 0 14877.42518 0 8177.934411 27322.38305 0 0 10946.97123 0 41343.9385 0 2143.512903 1667.735499 10674.24891 0 16184.97665 280.6058935 0 327.074704 5468.558405 0 1519.28066 64157.58632 0 0 0 47836.02501 0 0 6740.569888 76.81337096 0 0 1996.867839 13.01927329 0 5652.516059 0 0 0 39.81649925 0 44377.29256 3283.115875 0 171.0387397 3217.519865 0 6008.033705 32956.80131 10325.63146 3789.226313 0.000550548312 1976.238396 606.7615203 42413.19501 2659.980882 3947.35526 4329.884823 49352.93854 0 6490.495348 0 36060.92768 11304.73268 0 0 31986.69101 0 2008.769921 15042.2713 0 26039.09976 0 0 18613.84874 0 1018.72952 4180.11866 0 20.12964907 4723.320695 35723.36542 39065.38568 0 9749.894312 2212.04305 6744.452256 9074.837063 3794.167509 8218.720093 2475.754875 58057.08761 0 64938.06015 18048.34937 14166.1508 10011.22111 0 57299.72242 0 0 0 1864.959493 4971.240208 0 20517.52967 1401.758421 0 41516.48257 47294.4886 138.5827782 2365.807322 0 8952.880497 4067.673784 43203.56609 4141.915161 0 18018.86452 12151.22039 0 8423.623857 130.9529533 0 5019.166739 405.4748309 8181.475484 0 16639.58974 22.72867971 3040.811552 0 5034.414227 0 5.856138879e-08 86.47986931 2.504551355e-11 3561.933009 10993.822 11626.04096 47298.74469 3.544157566 4107.851972 1012.793457 0 0 0 0 18263.09167 0 4194.176733 3305.447012 56424.00937 0 12080.09133 0 69824.21762 0 3884.346903 0 7324.478262 3816.300027 69337.84599 0 718.8231535 3765.299005 0 2274.308976 35189.20153 0.0002075340893 5432.497916 0 0 15890.94963 0 64446.97264 1181.649178 61264.48161 8916.260752 5592.064074 0 0 0 9845.672104 6822.502259 24536.91183 1340.515704 0 44471.50979 8429.657503 0 42838.75462 0 2670.542696 0 1099.35521 0 45574.80983 157.8243225 0 27933.44925 4246.886917 1336.3572 0 0 0 8081.752721 2733.04284 8952.190387 0 0 0.004128115088 1361.212099 17120.95059 0 0 18606.01414 8440.796911 84.02648291 11880.62616 2338.3433 40550.01523 23956.45058 9568.506564 48399.23143 3148.187657 0 2101.905506 16706.75306 11172.5104 0 8878.699898 41462.72252 0 5247.910509 12091.92901 0 0 0 0 0 37900.6653 770.3797494 11370.35963 3479.544274 24849.60728 31274.95929 2049.766555 2302.667908 6453.573481 0 0 3155.422286 0 0 0 0 21011.36439 0 306.4298865 17363.15369 0 2287.257876 7903.388061 38851.79111 0 6699.911498 1627.163602 9047.327385 39.07947706 0 0 +12638.2099 0 0 0 697.3125053 10036.00026 0 3518.710655 7856.568881 24372.90176 0 29636.29964 26143.80583 0 494.8885089 16249.42972 0 99.96475266 10332.24464 33165.44725 0 0 93369.47075 3555.969393 27946.95408 0 794.0592335 0 2345.315919 37115.33475 0 46672.25698 0 0 13736.87831 12055.99008 11500.44943 56430.6186 0 142.8862646 0 0 3241.250403 0 0.1194259122 19602.61445 3.47851168e-08 20767.99525 7117.064905 67549.27436 254.9082818 0 22607.85464 0 17581.03097 22335.69144 0 0 3345.359237 24637.07636 14387.78069 0 2487.989325 0 0 366.1595943 452.7105795 6098.516326 25116.87148 0 64252.83493 0 1622.624972 1777.620768 9704.158933 0 0 130.2192965 9464.950766 1715.976886 0 124.5520131 4927.341568 0 3443.536609 37459.03785 10034.21502 24323.2008 260.0187694 0 0 4159.659927 0 393.0258949 2268.106218 0 30396.40966 30967.72833 0 0 233.6251633 12643.53296 0 10931.97916 44942.50494 0 327.9963149 52300.51342 21084.69177 44167.68374 0 0 0 252.8191567 21893.06775 3378.418321 0 10187.28804 80.9583449 0 33544.49586 56101.36242 6735.788942 65520.78784 317.7911272 12252.62109 16.42094247 1723.415271 14211.84421 0 21.00902188 1907.170214 30221.91323 0.01534455529 6332.677094 50791.21503 38200.54222 537.4275837 636.4968238 9758.2567 0 29225.50861 1108.202039 0 0 0 12355.41618 47285.74967 86.32805006 0 4.728962681 11151.49519 42204.08822 41772.8561 3890.770031 4635.342964 166.368049 8761.52644 6192.785551 7510.864162 19306.95439 0 50059.4417 0 8733.965815 4713.374198 7420.451388 1706.241396 30302.19619 1608.171891 2032.126372 19527.23724 25855.6114 5645.544995 21587.7307 94921.10195 0 3452.033134 2687.54924 26311.87784 181.2828028 886.0455311 1509.645279 32104.70614 12513.45803 0.537405946 32628.74129 35371.23141 5638.891684 0 11276.97912 20015.917 16951.71597 95.50497758 6336.391917 6475.517284 0 0 2351.093834 24704.11901 36897.45097 5983.175426 1305.033482 1265.589507 0 2953.795162 31888.29834 0 409.1029843 0 3452.952916 11062.72162 39518.20584 794.5504812 0 11914.78926 17907.77982 919.8737864 0 375.0119156 45270.95115 20676.19696 5934.108294 3464.564858 37006.22687 10105.04842 5091.365363 0 16955.9929 8294.093219 529.9975235 1895.394783 26972.94223 0 0 20418.19714 10274.07064 0 0.3016273191 1349.771476 407.2970366 2649.153642 7552.696406 22240.68954 0 9238.997072 0 0 0 5801.282233 0 28405.94535 0 0 7375.450511 5598.389049 2631.047791 0 0 0 43052.07578 3823.053375 0 2459.548173 12700.81809 135.7172147 22093.1762 5304.295434 1674.246029 20812.26234 0 0 36.93625639 68679.30727 852.1193844 5906.508292 27684.87121 0 5333.320653 0.8560533555 0 0 104.1545742 0 9568.136236 2302.553793 0 0 9334.823182 0 3274.288604 23158.49741 0 8428.907368 0 0 0 1108.688273 15481.97231 34058.84184 +0.04953346771 17869.00976 298.5076886 0 4898.332675 0 1308.656992 0 3841.028949 0 80807.59484 8292.878776 141.2879923 0 67640.04306 0 0 0 2736.110143 7021.742165 20.1272035 0 10500.41042 19386.10346 4660.0936 26722.47159 0 27070.23526 22231.41928 35996.73339 1146.21608 64786.87495 14104.6425 0 3399.696412 19042.38724 13471.94354 2925.44284 14284.2864 3847.170586 65339.94504 494.2962335 26.35956133 6132.867153 4067.378636 0 0 0 0 4134.355219 6004.58383 0 137.9344429 11043.8626 0 11967.49242 0 0 0 0 56312.74993 0 0 62457.38054 13654.20364 0 965.3657744 18163.86952 5750.69569 0 0.04181909697 0 8643.665179 36102.15738 94.59729795 9894.667255 2295.939623 73279.83058 0 0 1310.406124 18811.48518 23893.13833 3508.559906 3754.830363 12606.27426 15485.10454 54315.61018 458.1310587 6005.127421 15835.69269 26926.70615 15788.88449 6789.614975 0 18218.8085 0 0 0 277.0750519 0 0 43137.03445 0 2641.229116 120.6485276 27333.6432 19769.01144 7607.645598 2707.204237 884.4210093 14849.87016 0 2769.595089 24530.94546 510.3373238 2051.229944 0 0 0 0 0 0 354.3755126 7561.825721 0 39108.26297 15849.0827 40610.517 0 0 16346.9522 3620.55332 0 3835.283766 0 1645.617345 1912.996625 2331.175687 26505.77666 14017.00662 305.3064031 17585.026 5700.499844 0 2502.311506 0 33401.832 7306.762915 46.77943272 12427.72817 5435.347945 0 36954.29252 0 7178.160901 268.4781274 4413.526313 19764.91479 17268.01159 2550.732087 0 0 14948.22713 5530.379516 24356.99976 33803.22869 0 40711.33478 15041.34791 46167.39702 26309.30462 95422.90175 0 12323.74282 0 15970.57368 12947.11624 53130.0448 0 17474.57452 0 2263.162892 18854.10158 0 68508.72222 0 0 6173.482052 2539.723056 4185.588815 13103.52928 44756.9335 0 813.916808 0 5686.535975 15721.8987 0 27959.70743 19.68689943 367.0696207 0 0 0 0 5274.503074 0 8777.83957 19759.94022 6085.51974 1988.497645 23412.81647 23173.99397 20459.05307 17542.2096 0 0 1584.928654 0 0 76.78019701 19743.48073 27663.34002 0 14265.51855 3533.787051 6124.283587 45966.88644 685.3977055 4412.634637 0 0 2723.097979 340.9485147 0 0 22716.85271 0 0 0 0 2295.284402 75.54059234 17516.97625 5133.163426 90.35114409 0 0 0 0 0 51497.27015 46.08062066 0 7624.72801 0 5733.388169 0 4121.631223 0 4004.943719 0 7640.021262 327.1143367 247.7317674 0 0 0 769.9849917 0 2357.478537 0 2084.173073 4239.982754 0 0 3170.095627 886.5426987 0 119.5192803 0 0 1810.981384 0 124.4743102 0 0 0 905.5346864 39863.45703 8775.329773 4357.766895 5871.885201 1461.949739 24499.38452 0 8834.350022 0 0 +0.02662095002 0 0 0 0 0 0.3731110662 0 0 0 1824.128424 0 0 0 1056.838694 0 0 0 0 4724.599015 0 0 64990.84962 7118.974635 5524.936729 0 4907.678275 0 0 0 42.70425251 0 49899.21712 0 23780.18674 0 6371.557604 0 24648.32572 0 298.7577767 0 0 0 16439.95495 225.4644085 0 0 4106.093562 28593.58237 0 0 62852.99752 35600.67617 19751.47695 0 0 0 0 11590.55763 86.63874293 0 0 28277.08837 4042.084692 0 445.9917665 0 0 0 27247.32191 0 35.29352989 1600.072188 2072.914523 4920.371759 2.920394168e-06 0 19626.43255 0 50660.73336 12433.09805 30060.88538 47044.15508 0 16566.21656 0 0 6790.409257 232.2583729 0 3949.997936 127.8757934 0 14321.3697 54688.26054 9461.344108 0 0 0 20386.10942 0 49610.46292 6464.937916 9510.234129 58528.70268 13856.44217 0 22625.44405 1953.950493 28.51714851 35065.10857 1850.313191 0 0 0 1601.903806 29720.6433 6247.693887 0 54200.38234 4216.320612 6618.166383 7555.619639 2596.811402 1643.320633 7872.593179 0 0 17821.94087 7105.626455 3626.801424 2294.712475 3510.508102 14806.19792 0 577.6710796 4415.486348 3310.88348 0 16061.79943 0 0 0 0 1157.731319 16779.02093 2181.068059 0 0 0.0408444854 0 0 21571.83084 0 0 0 64.45508145 0 0 0 9372.730703 0 4511.411781 209.2882449 9329.376141 0.03217832058 5911.175792 63059.60059 0 16462.5846 0 0 38824.32338 0 0 0 98.50864275 2.916900085 4192.684768 1761.467993 371.6786446 37640.31191 9.831237052e-05 16941.56001 4451.084459 2897.845034 46927.26118 0 358.440444 356.0727993 0 120.2840013 0 42854.47367 0 0 1540.687001 88.65322421 1856.764385 3943.267396 0 0 133.0411885 96.19989321 0 0 26426.71677 0 12249.46489 0 32454.60001 157.7204945 0 15943.00857 23603.89526 0 0 926.990884 0 0 0 30450.04415 1322.677711 9913.312519 0 112776.2145 48711.00919 0 2479.707819 0 0 0 2869.072506 25289.84108 0 25108.48784 935.186715 33278.74618 0 0 0 307.6535631 0 0 0 0 90.2817257 70498.26139 12233.66775 0 6301.560187 8955.65645 66.23400058 17705.13641 3146.094633 55971.10951 1009.447801 2442.509167 81.52796614 1.066869836e-11 0 0 10148.21142 0 3940.500464 0 0 0 0 39558.72809 0 38409.80674 10020.61436 43913.54928 65970.30449 52.19601383 89.48831797 0 0 2011.88557 0 3370.573505 22608.39812 452.1472326 0 17186.3019 0 4763.737276 13603.84115 141.6214628 6899.046111 766.5749187 8212.011351 0 14.2428274 0 6806.41975 23444.10511 0 +5505.836104 0 0 0 1012.453969 1508.646428 3031.456227 0 0 3839.462678 13582.42066 0 3.094408217e-19 4224.818468 30400.24367 4638.130235 7858.274519 0 178.5996516 0 359.9901406 0 0 0 55.36911016 40866.86385 18798.36955 240.9372585 1693.208356 26308.87968 0.1056248494 0 0 0 11425.89622 22876.46959 3682.593679 11480.64527 950.8491641 534.1356725 8040.869482 920.8139544 22818.80974 17060.59271 8030.703295 0 29506.93259 3509.461123 12669.52993 0 267.5660593 0 0 1982.793757 120.2098569 0 6605.372908 36036.62421 10825.89528 3402.58356 0 1232.774424 6084.051132 0 120.6760772 0 3388.587336 7522.364498 0 3098.385103 581.682242 0 0 38714.88457 2484.729379 2299.316698 0 9502.609064 0 19371.07087 15468.55835 0 0 0.2717501521 21888.56779 0 2134.168021 21195.92484 15387.90558 48808.81827 0 2722.60903 31383.15764 19517.06585 0 0 294.1915465 0.3994719195 0 14484.65343 0 34705.61057 0 18109.66286 73203.93843 4369.560967 14362.42439 11527.79025 13182.84962 221.7133314 0 3801.731665 23.51262113 467.3375849 6430.994199 0 0 109.8007699 0 0 859.8377474 0 0 95971.50677 2012.364909 2867.232329 0 1007.550595 0 13280.31497 7.534180591 0 0 58811.19068 0 0 7770.178945 33409.40695 3512.033219 0 1763.243478 18219.90753 14570.67086 0 54.72426658 0 131.3034487 562.7424109 0 1006.896103 0 27320.90874 0 0 0 2677.336152 0 44083.69904 102.9257548 29544.95796 4533.357342 339.0646338 18357.46258 40098.62284 0 615.2716455 21104.927 0 0 32377.7787 25804.27397 61404.53663 7592.993022 49.22449322 25294.43953 33604.99627 0 219.362374 0 11084.37753 82.33337534 67231.52899 13779.24728 4459.045721 5554.778754 2107.036073 129.2998801 0 18524.11851 17371.4055 19870.61843 29852.13345 0 0 32449.40046 0 4631.937684 0 0 7417.776992 0 8768.985745 19056.44348 0 0 0 3232.705296 770.8426805 8283.994995 0 0 0 0 32345.55322 0 0 5431.130052 21169.93521 0 135.1851478 18953.84353 33369.12541 0 486.5251343 6943.252392 0 0 5237.173724 0 3266.843808 0 0 10855.90718 0 0 1177.952021 45610.34648 0 35.63539623 1950.085573 0 0 0 0 601.2483542 11016.15783 42.04983297 0 0 0 41585.94863 0 91.10660614 8642.369227 1446.921933 0 180.8526666 1733.090278 9167.167306 0 7424.184979 6039.718847 21907.77627 345.1967638 0 0 7699.744472 0.01440514763 2266.428336 829.8815324 304.7588971 3830.794273 1.365916297e-08 0 0 30409.63403 2006.781146 2254.101065 10375.67913 24087.55905 42400.00499 0 0 2568.491675 0 34503.17717 3518.851152 0 4549.083235 17148.61399 14816.09294 18799.83126 1237.24556 11927.1525 0 13846.90567 0 0 0 4680.384245 +0 0 0 64053.09076 18361.83829 3149.860891 0 0 22899.44295 8923.832977 0 0 0 4667.903922 0 0 232.0809946 3655.238386 42435.16867 3352.052674 0 0 0.02539374055 48725.98982 0 50864.98588 60685.55146 0 2336.720075 0 21876.63842 1383.123344 45110.28649 0 8945.960216 8890.143771 0 12137.57426 377.6719976 0 20759.17161 1904.73772 0 0 0 0 0 13402.01032 1552.629839 0 39879.02785 0 64191.6275 47302.4729 30287.10087 85.22811581 0 0 8.392436198 10622.40147 0 66.12929269 2203.00157 51763.03422 0 14971.06315 0 74007.18884 3176.919009 0 0 6495.271019 0 20112.51302 0 5617.895601 0 17228.58951 9706.385509 8528.352469 1499.271063 13367.31172 12830.02697 63163.59813 0 95.30616026 0 3026.323326 0 9425.538916 20720.07964 4.765197245 0 0 35549.85034 2338.983998 0 0 512.462669 11434.89611 0 10660.67897 39079.23084 5534.231824 0 46684.98596 18561.79853 1597.946191 0 69837.00933 0 25175.15636 7018.132058 0 6457.076486 1666.902837 0 338.4770486 1645.14391 28755.51923 0 368.5689421 5389.810053 3885.836417 79022.7143 39560.03971 6129.009721 91715.18332 10200.83668 55235.41252 5096.599402 18865.81127 12735.86531 4873.778187 216.1628271 64818.96425 0 5288.502901 0 10640.50428 0 0 1743.324672 4804.450933 44296.66829 0 5630.437611 5490.685408 1076.600447 23.86639733 4534.70531 0 43907.69656 2.281234662e-05 4371.427188 52870.25047 3642.854013 0 0 0 10895.66457 3251.13775 0 0 0 0 178.7817881 72886.57934 12318.80198 16070.83217 0 40496.40348 39012.35864 0.04573574704 0 1327.422857 0 0 0 58622.36518 46347.29404 0 2572.537154 10741.96489 33325.70049 23270.13079 55275.3589 0 22468.50509 0 0 0 9896.109833 9276.13084 889.7804201 1591.551767 0 1752.800567 0 3576.649483 1228.566007 1708.976562 4582.61616 7384.025565 0 6962.260056 0 1677.575489 7534.260147 0 11163.07585 18850.67735 5342.516656 0 22639.31079 0 0 0 0 19.68327342 0 146.8427288 3690.624255 14036.69177 15582.18987 6695.478139 31801.82445 5582.199033 51.84074405 2729.941163 0 0 0 2817.949254 0 201.9021161 53190.41693 456.8732563 0 1276.162888 3916.927655 0 7041.719605 19118.05086 5552.530259 0 105388.0834 150555.5343 0 0 0 2231.725183 3869.768046 25984.29624 3734.757033 0 61695.63895 251.3032845 2100.083742 1384.985166 0 9107.56173 0 0 0 0 1418.142929 6886.812932 9090.356396 5502.315064 0 50953.9269 33603.87478 0 69.94453314 0 11297.30572 0 19691.31858 63933.2472 0 0 0 0 0 0 0 0 27646.95937 0 0 4518.18638 0 41.01400435 0 0 0 186.3934792 7371.119589 0 +6420.761282 49904.50312 2981.176602 0 34586.60008 1988.811674 28172.71151 0 40187.4743 5.342390642e-08 24607.17568 0 0 0 1.246788379 0 7437.598683 26158.41898 0 769.7536842 0 16356.53547 0 3404.095374 0 0 95.2388064 0 0 0 46301.9954 24057.58762 4192.340739 0 38575.07654 10366.94961 0 779.0543096 0 41513.27295 0 1461.479769 101.3675896 9987.122687 0 2147.158477 88176.9763 0 87791.25095 0 1435.368947 0 10124.07545 15633.56051 17076.3692 0 0 0 15107.63047 0 0 0 14808.32695 4298.975608 0 0 20850.25027 0 0 0 1320.616819 0 0 4677.794755 0.009295198227 0 0 0 8305.292218 0 41010.38412 7521.814189 0 13802.96015 874.8206417 0 0 26879.13777 0 0 0.3424487162 0 2061.924091 8758.654011 9357.87861 0 10144.93352 824.5664389 19507.81176 0 0 0 0 0 7903.479383 0 2791.223121 32019.57176 22605.92554 0 9605.584498 0 9477.469276 0 1323.783831 0 53296.02141 0 48474.9832 6636.900688 79.52994024 0 0 14920.67951 4809.172866 7885.951508 2942.932693 8889.137488 21437.3429 51108.06955 32717.14407 1636.336735 0 55713.2193 0 55.56301331 0 10056.44002 3027.120554 5936.920435 1071.819959 3865.131174 25333.70815 124.1432501 0 51132.13088 14715.51957 2570.600531 13737.43528 62562.48689 0 1839.343973 0 13192.1695 2455.527684 75412.81809 0 45506.27814 0 0 9814.516292 0 51496.63075 0 0 9151.4445 0 4513.777834 1018.067526 11413.01441 6.110061428e-06 41295.49053 0 4198.94266 5747.603976 20807.44689 2985.630434 6084.032935 0 147.945925 16603.62159 20373.44446 13276.30839 33052.01403 3006.024034 4997.987636 212.4258337 28240.95133 8477.174117 213.7417334 27261.32867 0 2210.312607 0 9341.810574 5617.551616 11771.04991 13935.48927 1180.852215 0 61672.96881 64417.70303 27420.5138 0 0 0 27176.90307 8600.176229 15326.72712 0 2156.240604 1588.439052 0 86.04938399 0 0 0 1185.721188 0 1776.18106 228.3334732 0 0 0 23398.38991 1967.500949 0 1059.12937 0 7671.688652 4663.588742 0 6883.566107 257.3904404 421.8437069 0 18541.66173 0 3097.850726 0 27649.40169 300.0177194 345.1240134 7866.232304 6233.139815 0 2818.523176 37680.17601 7740.301139 12092.90291 0 0 14636.36623 0 12283.3552 14547.74299 0 0 13568.96775 0 34792.68697 0 15802.24067 0 1864.529728 11064.53162 14906.1382 0 5458.871029 0 20741.03886 0 0 0 1687.766637 0 7500.628724 0 0 69068.7853 0 0 0 41566.49878 0 0 0 18527.98156 0 35857.70008 0 6810.917881 0 0 25445.96334 0 0 0 0 22.18424435 +0 0 0 298.3347248 0 0 6265.150721 0 35269.38513 0 0 0 8620.493615 0 604.1433751 0 297.9298293 0 20714.77105 82999.09413 0 8626.687465 0 0 0 488.6179542 0 216.278042 0 30.93896982 0 0 1.653211754e-06 0 0 373.5275397 2264.417716 1453.285579 1719.787936 0 0 52.80101542 27900.69372 43807.31236 0 0 3652.393937 0 45527.09842 0 276.1370803 0 100.8299099 46503.11564 15095.71651 0 3767.964357 0 0 107.292965 23384.50111 1788.276701 32325.10231 0 5101.446852 0 0 2620.554784 18876.3946 12319.84029 547.0016077 1194.658901 57.41442562 0 22325.54804 4636.179641 35221.55741 21710.94154 0 14143.59343 36158.21456 0 0 47030.38233 24103.73696 15919.48093 0 1708.130419 53062.92426 22499.21747 18679.98702 0 4292.546543 0 0 0 0 8.080529866e-09 2094.394006 4605.140416 16688.81333 2432.976114 2083.533625 204.7094013 0 0 1.42067931e-05 7778.985496 0 104.0139748 2950.299693 12376.60076 10872.97918 2468.597417 38757.51838 5461.66478 50328.53592 0 39054.21826 0 0 3278.355072 4204.07293 1425.838797 1749.069945 0 45143.44192 0 0 4019.493184 5224.378555 0 11921.9803 0 7667.759582 0 6569.590387 24655.94253 7249.129583 42462.46662 46751.76989 2.667766065e-06 90.56313185 311.1826523 32966.95982 14673.51089 0 21219.02744 228.5079686 0 1764.057748 66952.08342 0 0 0 20505.2442 0 1283.55616 8149.000885 54815.49868 18792.69949 0 47.31433068 0 55111.18307 8670.499768 48253.32937 0 1160.046694 46194.62847 1125.34616 12490.73169 0 3614.193486 0 0 21637.57085 2.335277452 15929.95348 3894.459794 20063.82244 8859.951301 0 4695.283575 21741.61367 944.5601307 3294.783064 493.7418491 0 0 2362.685358 2413.997493 28966.10046 4145.390446 1940.635441 0 0 17869.1539 0 55.69701431 354.9712525 22607.4794 1021.549658 21212.09301 2085.570935 9200.852032 0 12862.07188 0 2579.039813 4.0588498 0 4466.111012 0 0 7466.08396 4197.797317 0 6609.893683 28343.93419 0 0 9444.902771 0 0 3271.417103 2324.46013 19250.23194 0 5081.189569 0 15596.92451 0 16218.71992 0 8450.743347 14858.38803 4613.052848 10579.09973 17831.52832 0 25868.6382 0.001683647354 0 3416.297232 0 0 0 29150.63496 5673.946151 11845.78752 10947.74864 6798.28653 0 2393.143082 1916.376472 1838.347992 0 0 29516.03477 0 14642.53932 0 0 4277.750321 0 235.3803857 4546.294674 0 0 0 0 4626.418594 516.8113882 3698.035756 831.6792154 26536.5519 3307.076144 0 11395.7285 0 934.2549968 0 0 0 0 0 17.09351829 0 0 5287.064539 0 41301.71716 16010.91907 117.7754475 9594.052057 1716.277536 38.71291389 8870.734007 813.9032857 +4310.775789 41651.00192 0 13345.45102 6860.138556 0 0 0 33756.99828 1946.932288 0 5347.004118 0 16557.44358 0 329.239511 0 0 0 0 54272.4452 11057.20266 59.83273469 33026.32989 0 0 2269.54486 0 20458.51219 174.1120239 0 0 2231.919477 0 0 149.1728225 0 73.72147354 356.2334017 0 8009.173455 0 965.0067542 8649.068893 15278.49231 0 4274.818036 321.3447345 16559.16736 0 6851.699635 0 0 66.55881392 0 9357.122615 2074.154628 1364.0917 15106.0993 24672.73902 1974.703784 0 81139.94235 0 23736.6062 7.892993616 37436.4463 0 252.6001395 61514.44915 2105.877675 51226.51809 0 0 6553.860553 25810.01442 41.01808394 69140.62018 0 0 86.93210327 417.188767 0 153.2502158 43536.23153 5904.002981 834.6924665 0 14896.73098 309.0862569 1101.689328 0 0 2072.268536 0 258.6572294 0 5839.791286 0 0 0 3028.728017 53897.63634 16823.58538 9628.456263 27777.79514 0 328.7390222 3577.794237 0 1381.804232 0 13084.23541 10013.91639 14492.10833 3033.56875 50177.44846 0 0.08899640195 1915.65107 0 63191.41949 0 85743.72832 4806.184044 0 1876.431724 0 43368.31427 25672.73975 0 11426.02812 0 0 0 50084.76752 10451.57672 0 0 24770.34069 8837.351942 67.5623196 0 1.151551055e-11 20450.53561 14934.03856 84958.855 14566.67533 10358.59475 16764.5639 0 13935.63177 0 27162.13457 8592.626021 2379.483159 11.37901739 0 0 0 12253.08073 9182.111864 0 0 0 5800.895155 2327.805282 0 0 0 0 3723.708393 32883.63651 7846.867406 31604.70287 4910.555933 2613.323912 235.8808302 3998.142939 147.5171606 52.36003393 4244.217138 16527.97177 0 0 0 56448.22758 21461.32665 15836.24031 0.001470286379 3150.380704 4315.429373 0.001299065771 0 7820.043731 3964.129242 0 3262.766991 0 5725.508803 43862.73222 0 0 0 1997.550131 6932.75001 15908.47531 15084.71851 35978.76997 31132.51337 0 7587.263039 12286.1413 4294.200358 0 33110.37945 460.6351728 559.0213936 2370.741129 3765.317998 9746.36852 25501.58977 0 0 3246.686612 3243.695595 46603.35066 10179.96965 0 0 2583.898375 0 0 7275.274559 0 0 32629.02927 591.9009053 54324.28638 0 48126.16296 13888.92266 0 0 0 28771.51117 0 0 2167.841893 48023.43296 0 0 23482.26954 0 0 7630.543928 0 11737.65211 3849.086868 0 0 8889.296462 17663.35996 0 0 0 0 20828.2138 0 46.33981367 0 9027.677526 6723.417394 0 32.56917314 0 1477.278687 0 28330.85911 0 0 3330.417972 4324.751633 17258.73851 0 11916.63605 105.6736046 0 1234.653264 0 0 0 0 4022.307004 110.9671694 1244.812156 0 0 0 0 +0 0 602.7722531 0 29132.73269 0 0 0 37200.68836 382.7654632 0 42315.01511 54524.19223 0 32927.48527 0 39861.70213 0 1671.509943 0 0 0 0 0 0 0.4829182401 3815.34077 0 98.04197097 3218.709912 63930.74068 0 0.3813017057 2557.958984 8746.962209 5717.489006 0 0 0 0 0 23559.40948 17044.38403 31521.91964 0 0 1692.494077 21883.47861 0 26554.36115 0 0 4749.009814 43712.46265 0 31493.38725 82908.18097 0 177.0278758 5960.080319 277.2035412 0 0 12572.13346 0 0 16847.22048 9227.447754 0 14754.94953 50536.49805 7874.843714 0 741.625027 41502.80728 1.967170943e-09 0 0 55.19124238 46246.17475 0 39370.68901 0 2299.130822 6793.385459 10.12371841 32572.85707 26.4703809 16262.84142 0 9637.423349 0 37505.13029 28945.86748 236.5658945 1397.206918 0 11912.47302 31599.21186 46654.12308 0 2581.477936 0 0 78766.41488 244.2091971 1973.864314 0 0 74963.82257 0 2977.969121 0 19185.97723 0 0 0 1908.542081 0 0 0 76744.25528 0 2145.244941 181.83859 7838.48547 6233.66637 0 27240.63241 13086.25111 0 0 25931.629 3704.25659 18299.1049 14855.90343 0 1672.578319 5163.198508 3065.347473 3030.562797 0 310.5983247 0 0 11823.77295 6617.711136 44649.98907 0 6753.959181 111206.2909 57519.08532 0 14382.12349 40316.78337 0 70064.72409 46030.03504 9280.56421 0 65415.6762 69.1405876 24636.34056 75692.85338 0 0 1.787944788e-09 3540.006563 8982.539114 0.002353280751 34036.12345 0 0 3389.510892 16442.05572 0 0 0 61778.99407 0 0.001251717806 6414.25698 19920.02846 10651.75067 0 268.4035202 0 6331.831038 28082.92768 106.5019165 0 26822.0467 0 26.53826805 3643.22347 6303.077257 3299.614329 12870.93746 0 0 0 0 10296.63928 16806.14335 0 15051.71931 0 4586.388981 4131.535927 1453.291664 9504.764898 8966.198952 247.5126352 0 0 3598.585873 26068.30186 5941.753345 0 39102.15825 0 732.6744895 44279.245 21670.52845 0 0 469.9425009 21754.42571 0 0 0 2999.106463 0 0 3932.963534 0 40809.40916 29417.40519 0 0 0 0 52882.43437 0 211.7552807 0 32587.55818 0 0 0 0 0 542.0953299 25135.41295 8219.783904 22.67378742 0 273.1198667 2565.386577 3997.834455 0 5453.431559 16671.04598 0 9208.730562 15801.53805 15913.9357 0 0 14108.86967 0 1172.430169 7336.085735 1599.334908 0 14649.36346 0 2854.055093 0 6737.589951 0 0 12892.67896 0 0 0 0 0 0 0 1663.403434 0 0 1616.119065 0 38830.36012 20875.23493 0 14370.84447 3.828531192e-05 +21.17877461 0 1099.296797 58.65476223 0 11113.59302 0 7361.541244 11712.51529 0 12638.88722 0 3297.916896 17375.08098 62836.30376 0 5688.366252 324.0892144 0 39409.24195 0 0 6344.713142 0 0 0 16390.10773 6944.533736 0 0 1373.858157 0 117.6185577 0 19354.43107 25252.74288 0 411.8265093 6322.896364 0 0 0 16496.68104 0 41488.26155 0 0 0 0 1920.235507 0 10299.07215 18322.34476 0 2249.493638 56311.69341 19394.86424 12617.504 0 5718.101682 1426.895851 0 0 0 17245.28037 9703.34185 0 3194.680317 0 0 0 0.05038741633 0 2.244079668e-08 1913.199819 8624.177011 4.591655871 6459.580392 22071.90278 0 2055.142572 0 0 14175.39502 8874.28328 110.9114368 0 0 19049.72342 7048.384726 1441.820435 1966.641364 90.58872241 6391.066663 97.61483168 22166.54248 11.05903491 10819.58594 2941.385321 55183.63026 35408.90426 0 3996.006715 0.0001797176449 0 58593.46881 20174.60502 0 0 8878.234448 0 0 0 12268.01968 0 0 11796.73238 0 0 290.142299 0 8963.658667 0 801.1869499 0 42714.44388 14749.31236 4646.939441 0 1658.485657 23831.12074 944.4318179 0 1047.801082 1680.204616 0 25110.93908 0 45290.10405 0 19100.44774 0 2.021492186 111.5299907 1.24578697 37100.51859 3164.861106 16721.51785 0 7473.683854 44764.75317 24256.6498 9035.951575 4946.147247 2556.602117 18118.36775 14214.5899 11714.93206 0 3943.761294 11103.03098 21380.82179 21031.59296 1582.201434 30358.84677 0 14209.97258 5516.657832 30261.10465 0 0 15829.47195 0 31936.16459 0 0.01701692638 5087.353799 12773.05328 1707.496416 0 0 2429.751763 0 1665.639105 0 13805.46558 9060.852645 2612.254739 25.57844716 0 130.6423223 2796.513601 809.0456698 0 20088.14852 0 37538.46 46483.58424 2553.915319 1622.905638 43608.50114 8204.813305 0 0 0 0 0 3278.355416 0 246.3472558 44891.60984 0 1240.61683 16496.63079 0 0 4343.744667 15711.12845 0 0 6405.038387 745.4103952 68.71474141 0 44005.04261 24765.86679 16.69282822 1446.753875 0 2531.304826 23793.76757 419.9685598 0 0 3882.19723 0 0 0 54595.74404 1768.167383 1710.083232 4799.319521 33236.47386 12337.89755 0 0 0 4252.811268 5177.836963 860.1180588 8775.168167 26902.647 21886.59052 0 0 0 153.1260177 0 0 7229.864925 0 0 0 6059.965612 11664.24153 34473.85902 0 0 10909.13166 4248.846993 2241.528697 120.4325476 119.8397434 0 0 9017.560498 0 2737.636961 0 0 0 23522.2064 0 3376.85593 1755.833017 0 0 0 0 1373.8585 0 0 0 0 8641.738508 30175.74538 5183.289901 37.94751753 0 988.9081845 +0 0 0 0 5360.517897 23049.53437 5658.973294 20134.5676 1186.590822 11993.73048 0 0 5363.174838 5526.894825 26464.55726 11759.81038 0 0 2862.602156 3031.066903 0 706.292827 48.03895288 42162.50135 0 0 5587.266257 4924.344645 4775.274514 0 3046.132872 0 4011.418166 13081.15466 5760.892854 15272.97076 29121.63078 7090.768667 809.9589462 43.46344447 28398.22357 20.83226318 8444.218877 0 0 54353.99023 4302.33295 2111.677774 35157.75508 87.52584431 18067.28491 0 53014.48187 2245.493628 31691.28775 1294.359323 47624.35323 0 0 0 0 23194.68704 3940.84668 51817.10146 2919.639045 1580.225996 6371.970442 2848.471345 18239.54612 16093.64972 38630.79562 0 0 21296.50069 3402.308401 0 3205.23795 21053.47503 649.2984184 0 53715.92997 7039.849601 5237.652287 0 1003.510047 449.3498204 11489.56471 348.4469528 10867.34341 3918.575853 12724.89237 1616.138087 0 0 7859.166998 6.789590144 56257.79743 0 8422.866671 6509.713869 9525.004017 0 27801.66633 0 0 7876.880723 0 0 9258.466857 839.7019902 0 0 42273.10195 0 0 8342.413733 5366.969569 34913.68521 46557.77255 0 2718.531669 31630.3133 0 5247.785925 0 0 10345.65037 221.5538514 9793.188483 5290.272994 0 6724.048211 0 810.8613732 136.4266606 3122.39028 0 0 12473.30565 2230.5584 0 27373.57842 15107.69219 36558.88688 471.2522648 4350.400464 23532.88449 0.9933016572 1489.902134 37796.79763 6869.79266 2179.514054 1836.023153 50631.5116 27389.44319 3450.442542 12210.29906 28674.79007 0 0 3100.974191 10453.4218 80123.71577 0 17782.16911 0 13283.48766 0 4324.816159 12649.61938 5464.385364 17343.83503 28602.52663 0 0 0 2608.803454 6843.408293 0 0 1568.78546 15380.14338 12164.73368 2001.165639 5442.71994 3195.562902 0 12557.7658 33223.82089 35512.80575 44458.59368 27324.26509 0 482.0429838 0 0 0 8388.13471 846.1199324 4431.200092 0 0 0 42416.91531 0 922.9641918 989.9079827 19810.80023 27309.68543 9330.421043 1738.91149 23549.71963 2561.679808 109.4551474 0 0 0 15465.25065 3932.879363 794.9315397 0 12575.51379 0 0 1792.815281 3946.581262 2226.73725 0 1542.965555 0 0 1969.009228 6953.339912 3462.569617 4506.034774 0 679.4616307 15005.14855 43.97291057 0 47140.72505 39.27376179 0 0 3053.105311 0 93712.86186 30804.36034 0 6152.951392 6176.39972 161.9820007 0 0 0 0 2948.747571 2618.601155 55.61347382 11197.98278 33474.33513 59341.41705 14381.00889 0 21618.80395 0 9402.341128 0 8042.437068 0 0 0 0 17363.06316 8908.693465 4871.053373 0 15725.03129 215.8520178 29607.88548 0 1817.546894 11049.86277 1055.645811 0 117.9887057 0 0 13644.71335 823.0703529 1.286001112e-14 0 0 37220.90178 0 70.48153579 14410.52045 2701.558503 0 0 +34965.49306 0 0 2948.783475 0 24343.7366 0 0 17965.24755 190.90036 0 0 0 0 0 1165.385513 4254.863208 55384.12719 4013.591908 19193.06817 0 65.80864235 0 391.8409136 31600.3684 4011.781845 23.97487409 0 0 0 2324.29865 0 0 0 15818.57992 0 20908.02364 1354.579214 3255.603106 0 1770.490425 1890.61555 51.65105559 0 1148.973972 0 0 0.0039437354 0 557.4546478 0 0 0 0 12312.14629 7197.75423 19042.37111 24679.48335 3009.461221 32629.96091 22640.81836 50154.13601 0 2064.335015 0 0 0 0 0 0 0 0 12671.35385 0 6284.252261 0 8372.20616 33366.8022 0 40782.70046 0 0 296.1197117 55135.48077 15129.36743 19789.23972 0 26358.41 0 0 212.8525108 2191.133916 2038.577682 2580.531103 0 17155.51296 0 0 0 0 6898.638717 0 12837.43862 0 2.631881705 4382.584546 43368.63947 15.38977739 8805.175211 0 4869.809269 0 2491.115413 8097.659376 14626.41282 67706.89463 30903.9752 3760.438481 70812.13814 8587.766463 0 45419.32533 219.7321745 9503.242989 0 0 16683.65856 0 308.9671638 0 0 0 16669.56121 35663.53305 2328.773414 1708.777967 20553.58739 0.0008691503979 7298.259472 0 3041.71396 1567.1153 3764.686264 0 1463.695846 59607.17891 0 0 0 2411.510386 7683.115957 15530.06501 38610.34585 56756.23373 0 4377.85965 14886.40685 15646.69076 21315.12065 12228.13 0 26131.53181 17104.89679 9899.386103 0 4403.773147 5565.320447 0 2998.81063 19398.06378 4182.04299 0 0 64285.8443 0 17997.38758 10627.89581 8303.130491 53486.75247 40.01120048 39.57656366 10461.57808 33.35845479 44659.21975 0 12155.40379 0 849.209852 3069.076707 0 0.02607219016 23691.07786 1674.278152 41636.63504 52340.65654 0 0 2654.778966 36.66445123 0 0 44748.19413 20519.13137 0 0 0 0 14210.31184 1261.969943 3165.556199 11149.63378 0 45512.13357 0 0 8044.906384 16952.57936 4753.792032 0 9822.054967 0 0 7553.754656 22913.74369 0 0 0 30342.55194 0 0 0 0 0 0 59358.05222 42702.00568 0 0 0 11999.03254 0 3290.461634 274.5395885 0 0 43090.58653 1842.670089 7294.019227 9728.973395 123.8337711 6068.100225 0 0 0 0 0 2005.394066 0 11134.02391 0 5254.416581 0 0 0 0 5750.366996 0 4063.552416 2983.100673 783.9095736 206.2406371 239.1459784 7110.169328 105.7360067 2880.189159 0 1002.325167 23118.48491 0 5599.126924 0 0 3314.959471 2562.173559 2530.624797 1041.800818 323.4492347 772.1816187 0 6449.421993 201.286953 0 4510.118915 15391.52209 5084.147022 1444.021342 151.0761254 1344.385015 4423.511184 1019.776643 +20270.63524 847.2183016 12416.8709 0 30923.25487 0 0 7331.507804 0 0 14256.59371 0 21828.94026 7446.54285 0 21726.21939 46288.71266 17169.13477 0 1842.447504 7.46830518e-05 0 0 0 22204.90159 0 27.54441115 74.38132995 41105.54279 8.315093449 0 249.5436699 74270.34283 3692.478541 2275.167712 0 699.1773283 1538.157367 260.4366736 0 0 42459.65345 0 0 3718.026549 0 10893.70737 628.0518876 0 0 0 22939.81505 0 5970.945674 0 23656.35629 29766.31025 17556.34605 19538.93316 22307.24687 0 11648.54266 485.5599145 0 15128.40692 219.9589222 4360.578805 3205.596092 801.9003635 13704.11361 10552.05063 2033.806917 0 44179.49621 0 1288.975509 36504.84239 0 8164.334556 7517.989222 0 0 0 0 3989.618879 5191.303612 38.07606311 14946.32544 0 321.5111429 8137.419491 972.5185198 28102.81281 0 40137.15159 17161.05597 67687.32008 2137.301719 0 0 285.8000612 0 737.0838848 54617.94594 1973.50583 2508.884461 32795.11805 0 0 21723.68385 4300.018327 0 15423.87949 0 0 5584.191268 350.9537338 20479.85527 2518.009594 1222.416802 0 0 2254.362377 21684.89935 2721.792779 207.7043782 574.9778095 142.1150757 15320.01035 41671.27545 0 0 23510.52158 1313.353576 60.03571059 55382.13995 0 24393.37483 13135.80103 30312.25027 7908.412687 0 69095.87185 0 3173.213414 1404.302784 3985.677395 40194.85264 0 12730.47188 3554.049017 64.65389224 0 7599.260882 6625.424551 2922.779208 0 61898.84295 0 0 1402.5268 68084.10785 0 7628.089048 18634.68933 0 0 2684.107825 88.3601209 0 4135.932514 0 0 18060.26859 29240.20251 0 0 27234.86907 4801.064051 0 0 58865.25128 90.1286604 17846.22327 0 14195.69948 7465.556802 0 0 20374.64481 66.87391985 5344.861146 0 38.81453512 2129.673183 6701.209902 884.7122992 5184.316879 0 11967.11538 4705.523268 0 4125.704239 10599.62389 22329.24825 3105.006333 0 113.8848884 0 0 277.7720433 7407.133586 1140.736703 10492.96771 4603.392641 31862.13767 0 0 1607.042721 5054.017251 0 0 0 0 46714.40052 0 0 0 0 0 13524.2314 15641.95706 0 38286.63741 13371.22384 24487.1695 0 0 193.5240483 9238.146093 0 17914.91803 0 11048.66049 0.5675864944 0 0 64.19470138 13321.45131 0 0 0 0 0 0 8171.917551 6730.971244 0 79.78481128 0 56284.9677 2136.364977 0 0 0 0 0 2276.475122 0 0 6552.511517 8278.543764 4521.546051 0 0 1472.706261 0 0 12769.18299 7492.745934 0 0 48196.10554 0 1006.255529 82.24570404 1132.730128 0 0 0 14264.46887 25954.44441 29707.09554 0 2540.569413 0 0 23721.00357 0 0 +2064.879389 14177.66403 0 5061.650074 0 366.0149287 0 618.3454096 2635.554421 56.57341034 0 0 30500.54954 22588.22149 0 1901.059874 0 0 0 0 0 0 15690.30388 0 0.4341823824 0 20934.34248 0 6702.186945 0 0 4040.433169 45352.83378 0 0 6483.812887 0 7528.270649 3057.538306 24877.60498 326.4915619 2223.234898 0 2977.315049 12305.9897 518.6461654 0 19799.37327 21317.33622 325.2646056 2003.981315 0.08725733196 29315.88068 0 0 0 0 2629.59859 15113.6002 50328.92131 0 17376.65321 55153.63913 0 5919.008345 0 43281.91034 14697.17269 0 124.3106603 18735.13145 3354.217153 0 32996.55679 0 8570.308848 2773.793274 5533.92511 8191.133864 10967.02464 0 19005.98149 6903.427659 0 0 25469.48408 1971.744098 16931.04011 0.2716804392 1496.482707 0 41720.44214 41904.62783 3189.09449 29766.98312 0 0 3744.920917 0 43725.0545 10924.9386 6298.805415 0 8629.783098 0 0 32545.88304 0 2052.281094 2042.626011 8633.08516 0 30203.98272 29649.24152 22357.89703 2493.054733 2044.785182 1106.316722 44541.47696 0 2289.790292 64657.61417 46608.68628 51398.19807 39382.26615 543.3907817 3571.398411 3582.665449 0 0 47176.41712 33103.26889 5577.221178 428.7356615 7269.323201 0 469.6467762 2524.940788 15917.44485 402.9796064 0 395.9287092 48858.66775 37133.72726 6.863727631 9589.987654 0 0 78.1794117 15362.84525 8625.237915 6790.979227 0 3845.44611 39140.90011 1417.531566 178.2821561 3464.478266 6735.524631 0 0 26509.06011 16396.60042 13690.11202 248.8440218 23096.15935 0 0 995.2347464 3079.029857 0 0 0 0 0 139.8746528 0 45.54165273 0 44.97241526 17776.42147 5564.490895 0 0 12442.93876 0 14420.42345 42459.62595 3462.073771 57.30069626 0 18266.88512 31875.79663 0 0 1887.927441 0 0 19734.83099 25837.02802 0 21973.85806 11156.89592 72.07296941 0 34390.82623 57104.88778 51556.23033 86807.4318 7881.170981 22733.4526 7840.509175 0 0 11271.54243 0 2525.47637 0 0 4477.718277 1724.056836 993.1662157 0 37830.54618 0 0 0 0 47040.02033 15473.17003 0 0 0 4034.935795 1047.846713 2497.444095 0 2232.354198 0 13425.99172 0 0 23535.65992 19986.44617 0 2198.512369 11676.2543 48893.1395 2121.834775 25793.70402 287.2646721 0 0 0 0 204.3995014 35908.47564 4102.707165 0 0 0 2176.113813 4943.473378 0 6721.725137 2463.33915 17195.2987 0 15023.86115 0 4366.082086 0 121.8067681 2962.340458 0 37918.9407 0 12467.27693 0 0 0 0 3366.321015 98.52488412 0 0 0 0 0 0 0 0 0 3841.262263 17435.86536 0 2385.101179 6401.94212 3776.13968 0 +0 139.628564 1441.185967 0 2921.835974 0 27272.19553 2139.88015 0 4581.267263 0 2988.845363 0 0 18502.82852 16795.67605 4166.272621 0.0001994165626 99.97586693 0 3113.963181 0 4184.73817 3824.530551 0 164.8399596 0 37085.80381 6499.595107 44892.549 27973.81539 0 542.8803863 427.8053606 0 0 0 0 2092.706086 0 0 6941.127009 1385.10295 2380.391002 1091.433161 0 20357.72018 4615.445139 887.6609485 707.7589383 3823.257156 240.4882014 0 17708.45065 12141.85932 31265.66604 0 0 0 29916.84477 0 0 0 0 0 0 37.07647879 0 0 1347.194572 337.8736805 50141.62552 0 0 3162.832065 0 0 0 38.22875859 0 525.2464492 668.0573699 33108.92281 0 0 0 4693.648232 0 197.2986476 0 0 75165.57385 0 11457.50514 21803.86354 20685.77254 0.4504204844 6405.711241 1441.376439 0 50634.99992 0 0 10999.50254 33790.53371 5827.63631 8030.052845 2397.027307 0 9359.830558 25225.6266 23789.23507 4272.446042 7120.28839 12101.59327 0 788.2543315 9959.551032 0 2806.872602 20216.62453 0.2422412919 0 0 130.3954183 15534.0356 35375.03358 9602.485213 51093.76777 20767.79349 17343.63815 64684.93119 0 0 0 36601.0981 14338.25651 195.3063995 0 75.17982334 4320.722495 23878.69696 14560.20004 0 23592.30127 52382.98915 0 0 15449.8361 0 588.2533188 2394.622994 0 48.3369221 0 6204.361044 329.0476178 8860.859657 0 0 10181.38627 35577.61849 55674.03806 9002.10112 0 0 56877.01942 28399.63143 11803.31372 0 6428.804802 17340.84364 0 3.270160009 0 0 304.2762062 5694.528034 1075.266288 11152.73273 0 30420.26587 0 0 1569.327669 1887.425794 4835.039519 28702.81758 45486.49097 0 10162.4537 6629.6152 23460.28054 0 41429.51695 0 0 0 108.1572655 0 0 20112.79031 0 33782.38423 0 0 20578.09616 518.6834764 23127.28439 6980.5867 0 0 0 0 18849.35213 3643.76277 0 20909.40031 0 0 502.008481 10976.77834 2769.719289 0 0 5196.847939 2097.807442 0 0 0 3558.687086 312.5951772 7695.828557 15417.68415 28046.75327 18880.68666 0 0 41981.43841 3965.300031 0 0 3445.975905 0 0 0 0 2030.957734 73759.21022 17447.14984 0 0 0 26242.19531 5595.309822 11102.0503 0 10730.25 111.9950691 9497.325935 3341.909714 0 0 0 122.1110535 270.3864417 0 2637.047219 0 0 5608.807445 0 56.6804937 0 0 5021.067257 0 6799.843507 0 0 0 0 17174.6409 10092.28022 0 0 178.2533899 3543.68577 9418.133865 0 0 6588.503329 51.97410613 27283.1497 395.637317 128.5645645 0 0 47.78483888 62624.85565 +0 0 0 44522.33187 9626.726283 0 0 0 1098.18238 16587.62888 3366.733915 0 0 0 0 0 275.7479605 7752.152205 0 7096.004927 8593.057629 7.869253633e-05 0 0 0 2326.020807 0 34491.99142 1290.958687 5280.49738 35067.74985 2540.400537 0 149.745255 4048.20488 2996.393508 1417.357617 1278.51157 6209.424341 14506.02074 0 0 557.8454062 0 0 17216.59303 0 482.881762 0 0 0 0 7282.892966 9297.598012 2897.588465 23778.77084 0 0 0 342.7967308 0 11223.89147 0 263.1425206 0 33537.77732 9082.610891 7407.158671 7173.102544 0 12477.76078 54431.79638 175.324538 2395.708597 0 22514.18224 470.2993021 3293.810436 54522.72958 0 0 25668.53762 16086.25659 0 0 12894.9093 2674.807803 1377.36967 10545.51109 20845.05787 43283.4635 0 24020.63681 19325.9183 2704.608834 0.01464479167 729.1925744 19545.44252 82397.61828 60.42465642 10119.11371 0 15895.87399 21324.794 0 2264.575899 1989.910435 0 0 0 1181.404516 8329.097032 354.8568668 0 7367.924161 48164.85729 4725.248006 0 1731.074675 1502.440392 0 3573.178901 40337.22756 0 28322.59931 29370.68334 853.8654801 22749.91316 0 5072.784063 0 0 25893.0591 0 57933.53129 43835.28802 1943.843849 0 8673.343045 1995.302735 23197.31985 3254.94869 0 9237.132286 35356.83775 89650.50422 8361.306757 0 6704.06626 0 48764.73092 5356.823491 2135.883962 26478.98401 9310.469621 56873.93451 28848.41873 0 24207.21395 23414.10552 0 0 43690.97539 0 0 15.40354483 23801.48583 0 11741.28227 63072.75472 5610.632192 23336.09708 8523.403471 37312.69163 0 0 31496.59186 2.144347788e-07 1692.113723 0 86882.94813 0 0 11185.12735 0 0 19554.38708 0 9452.31775 0 134.1032832 0 0 0 1911.56816 0 10.45280974 0 17759.43723 0 0.001724664668 17279.38926 8501.374104 732.2234953 3839.73118 561.6592326 24422.98078 0 3845.009324 0 5690.700448 16073.12105 0 0 21884.52208 94792.17296 0 3489.594854 0 0 5063.837217 173.1849939 0 74647.88031 33446.38112 1943.877497 1850.363824 1942.177127 0 1019.348936 3118.564395 0 0 7.737555296e-09 14267.98426 2270.357658 7432.886889 7907.707002 0 0 50.16745563 8919.990483 56860.58176 3590.245924 0 25277.79022 37905.90425 0 446.2582059 3664.791242 1298.773436 0 5670.023158 7696.425654 2449.541608 0 0 0 0 63.81621438 0 2988.746633 15498.37353 2692.845334 0 15710.48747 213.0052357 0 1768.234483 0 28955.05982 0 0 0 12873.43481 0 40894.30885 0 8831.891126 3052.849081 0 66.35864009 0 0 17591.02266 0 67546.01608 0 5266.173584 0 0 0 0 57489.82828 0 10328.59109 1208.718052 9611.532161 4710.561359 0 +4909.384475 0 29384.40302 0 0 9616.013479 0 0 0 20012.87179 0 0 0 0 0 27637.21521 0 4064.953171 0 9947.944352 0 37203.51301 0 0 0 26769.0793 2975.675132 0 87.89369959 0 0 0 855.8244745 0 60942.77101 0 0 0 2116.434346 524.9762605 29.95380462 0 0 0 64017.97244 0 0 39986.71749 1857.386804 61446.61 0 0 0 1156.269658 14201.95704 1119.581907 46031.25499 3312.684857 56425.33955 0 142.9561896 0 32966.46228 0 0 15984.11367 0 0 34568.67173 0 47.61311148 0 44597.88092 45879.39488 665.1501579 0 0 4469.707207 1563.078358 34825.5749 0 11696.93993 52517.35874 2890.637315 65544.1337 3.356957475e-05 2213.064373 2987.440618 3543.871491 24357.56763 2445.448486 2281.709035 0 0 0 0 0 6961.464763 0 36075.42292 19178.93949 8462.261971 0 16564.50761 4266.478415 0 18105.9514 65114.05555 9174.903119 7756.87236 13575.25474 0 0 4557.316659 0 0 8878.913273 0 12163.9241 0 8666.38181 0 0 11588.94207 16201.30492 0.03118038992 43.51558585 450.3143872 0 0 43086.70019 0 0 26990.26611 61061.24731 29556.1799 4.120304112 2730.76301 27074.8336 30.13507801 0 0 12731.64486 6216.878503 15576.71175 10540.47423 5046.216387 35299.13618 7517.15199 16877.79938 660.4165036 0 0 0 3468.818206 868.1051483 3959.772546 0 0 6867.666527 29989.69819 11752.64614 58801.541 0 10562.89554 43366.5434 0 33346.64048 6155.310786 2973.124845 1723.744946 0 0 33626.83546 3890.587167 6299.442182 5193.348719 9190.867239 17652.81521 0 18569.3652 11192.31087 2484.801758 0 0 86845.13838 2824.198486 0 62.16492123 173.8282382 18124.20361 0 0 5523.950364 27.36370592 0 7066.984025 10891.85079 4363.733753 9391.215576 0 0 6774.222679 236.498745 3336.367371 1840.956384 0 2250.25055 15864.37097 0 42133.98547 0 41.57497324 209.9405163 0.01872843435 7904.804099 24236.58445 76.36204949 0 3611.14732 0.06515869996 9018.785693 25428.21865 21681.68358 0 0 10347.69696 2031.450637 0 0 0 0 0 30850.02979 0 254.1926058 37579.09712 0 0 9816.450512 0 2048.802388 0 10663.79872 0 0 4977.882583 10101.87122 22027.28189 13195.7093 4649.149669 20279.63328 9617.815499 3020.585029 0 48246.22831 6398.028717 38536.4942 0 112.9218451 0 0 0 0 2569.273612 0 184.0165384 11998.58575 0 0 0 0 30097.1251 244.4284348 22.63302001 10121.80316 0 1985.505077 16648.1602 0 8807.227667 62134.3193 0 0 0 0 118.1798876 627.9025764 7172.492952 542.762605 0 0 6.888274053e-06 21050.58147 527.0390496 0 0 0 3796.014455 234.1766309 +2109.479781 0 0 0 13407.11788 21800.05038 0 37034.13938 0 4916.213268 0 3019.473877 46581.3716 42080.01343 2784.605777 0 0 0 0 30223.00183 0 0 155.3675738 7159.664408 1439.759487 48892.97837 3423.940069 39186.58691 0 1654.529912 36443.39228 0 0 5.535746854 0 0 0 13450.17091 4557.485191 51.86370867 332.1362626 0 29877.02334 0 167.5234869 24712.28204 0 0 0 6677.188137 23607.0308 63.97755571 0 0 0 0 0 0 0 0 2220.647752 1394.14412 19816.14563 12177.09611 0 0 0 0 26577.39631 11913.59166 49471.27581 3100.363032 22223.61072 7453.679098 3539.108866 5936.601194 0 660.8179922 0 0 22764.10398 0 19848.2614 44820.68458 61673.15378 2379.659133 0 0 0 9637.86176 14910.14971 38.77368412 16075.16844 0.1917353206 0 0 1569.480012 0 2916.173237 1567.169425 2761.505692 0 0 0 1340.98391 16.35843986 3002.511648 0 2016.226698 0 0 27336.96339 19131.02813 111950.5668 30650.73665 797.3964522 8190.903106 28579.45975 0 0 46686.60998 0 2701.792125 3836.957841 0 0 81925.41929 0 0 4741.893267 0 751.7435136 58851.6985 54383.07388 51846.10512 6029.454667 0 0 15929.81163 33585.95428 35405.51839 0 0 78.7360412 26590.58577 0 0 5194.702906 5751.376651 0 30769.91321 5.153265472 0 3866.737664 10018.198 1747.433973 0 62328.62948 0 17987.98546 0 3465.966966 29352.44552 35028.63779 0 77442.01606 5939.883185 6.04885357 284.0176388 40310.26351 0 4262.105424 18471.91671 0.02382694168 3372.443403 0 6.040946582 2025.166036 8941.191201 4717.284974 429.8359774 2769.886807 0 14658.49251 9342.566211 0 2371.696209 12040.78661 0 0 0 184.6570723 32336.5641 3242.073465 93.39257628 0 0 2623.869288 6936.361573 0 0 24800.14029 4526.031024 14888.75087 3360.193578 7609.689517 0 26861.20021 0 10977.00196 0 0 10369.49348 626.6431563 7123.553206 1593.762927 16359.13441 0 23556.01706 1841.908621 49290.27371 0 0 0 0 46452.72229 0 1740.042388 0 0 0 0 5744.01802 0.02937398606 28136.30252 749.9610342 13201.81905 0 69.80307051 0 3846.369123 23800.31718 0 2596.921261 23175.38103 27864.5088 21822.75006 0 0 12759.86873 18744.90448 14437.30262 2485.928823 15350.6404 3670.435121 0 19522.49588 2740.142923 2411.15867 58217.45792 0 146.123227 0 0 0 0 0 0 0 66.44284559 146.0611333 8876.500879 0 38.67839091 0 0 553.0714581 0 0 0 174.4338792 18144.65453 24.66969772 0 0 29.88179514 0 0 0 1893.542269 0 20589.01407 0 0 17920.48656 36290.6513 0 7442.264647 0 0 +33005.57438 3721.849186 0 756.97429 43292.28152 3650.378507 8320.972043 0 0 3428.133807 0 359.7557608 2317.195764 0 0 25237.29129 24509.40428 0 4775.136254 56113.76532 0 0 10278.07516 0 0 7929.432023 271.5485705 5994.956266 4476.273137 0 0 0 0 0 25594.30468 0 2693.454459 25651.65684 38871.76987 0 41766.80898 10126.81723 38021.97632 0 19687.09183 0 0 34677.84523 445.7275275 0 0 33393.39291 3794.601431 0 0 0 58171.54326 5635.390402 0 6439.968448 2279.189343 0 6690.77969 0 0 0 0 0 20800.73617 0 6260.562209 0 0 0 25334.97994 19932.61542 3891.056787 0 2592.999215 0 0 0 11618.28339 2447.403086 21828.65585 1704.382651 1494.537562 0 0 0 48762.65555 16117.52709 13505.38329 31113.09331 0 1640.84549 37182.32273 0 8581.716543 1326.44203 1108.695061 7155.253999 15449.92733 7925.783061 15350.68392 11892.86392 0 42589.53336 18064.68583 48.34406923 3750.351999 43537.02661 14912.80236 27143.20681 20669.28913 0 0 0 123.3922893 947.6198584 17704.99111 6387.009421 0 15871.54599 30998.41917 968.4714079 0 0 0 32884.10954 12356.32662 90756.21649 0 0 0 30.74340473 0 63968.94579 2489.847949 24212.9936 0 0 65657.39053 7962.686251 0 18594.34753 0 82027.46553 31600.21193 3437.859189 2266.051983 0 0 0 8517.486825 0 0 31822.48224 1573.391932 42.96479482 0 0 7453.798071 0 34.49730936 37.06270514 3439.577746 2469.734991 22461.29407 67108.36011 48001.13548 0 12956.10571 0 366.7493348 5242.155951 2413.938129 0 0 4403.986987 30069.32716 10317.28791 13052.68479 0 0 7423.510644 0 0 21283.94699 6.17567099 10657.68048 657.7019106 3349.186788 0 0 0 268.5710197 0 20649.96058 4538.57189 0 389.6313028 0 3357.498356 0 42985.12333 0 0 42037.29706 0 0 0 10764.06869 0 15463.15366 2621.131369 0 0 0 15798.03331 8416.72029 0 1.123738189e-05 0 25492.21135 5811.119972 0 6522.199677 14.50743947 48.63050083 0 0 4804.720885 0 0 34200.28284 0 0 0 1598.321512 0 0 0 7680.882571 46109.05927 1564.695675 0 19349.70145 1987.110819 0 0 58182.11575 18.08447394 5469.874432 0 596.9031068 7067.745993 22.70670587 0 0 19008.14729 0 0 16090.86328 343.4281594 0 0 0 95.50757476 63.39736595 2359.480815 0 0 8075.647925 0 45891.00793 0 0 9623.072009 0 0 419.539549 0 0 0 0 23160.28857 8459.450453 0 0 6738.073889 3282.850665 33.50251771 0 0 2998.7694 0 0 3511.70395 0 +0 0 2455.619014 1874.559408 375.6268783 45888.4819 0 806.490474 0 0 2910.552885 2043.546983 0 7950.855874 14493.9628 2457.286702 0 0 39782.92479 5228.00567 0 7267.059597 58028.84522 2854.763811 5156.477894 0 0 0 0 16144.67003 0 0 673.8106345 0 2642.752139 0 0 51045.38035 0 13847.94893 2643.292535 0 85805.95091 0 0 2055.237373 126.5273132 0 0 20869.12491 0 11838.43314 3441.823261 135.5052791 5514.598833 296.9346666 23848.73582 72565.50179 0 9426.72851 0 3667.00661 0 0 5609.604459 5187.265599 0 15392.59571 29236.35592 0 5111.240879 0 3725.217122 0 2819.841296 53366.07836 3587.072213 5279.404267 32384.37398 7042.10625 103.3699343 1351.026955 32819.33075 38373.36579 27619.61214 4293.408682 0 31668.836 0 0 101.1270924 0 14631.43715 3174.230482 43049.72296 8509.227879 0 0 3656.506236 0 0 0 0 8248.142972 0 0 0 112.5405779 22023.32448 0 14973.15959 0 7403.539857 44197.38728 0 50865.24589 0 0 10787.44565 47984.5931 7717.965724 0 0 0 0 2826.24572 33.61410781 0 0 2490.341385 3334.40643 1354.158609 0 43.77072405 1943.297717 0 12180.42834 2962.631165 9188.45539 21161.13 37788.93281 12110.48345 3311.625187 2661.387925 11536.71314 0 0 71854.52618 2570.706546 0 2459.099809 13789.5159 0 0 1001.422667 0 1.431126544 0 0 3326.461818 0 47239.02695 3939.475171 7714.502615 0 1916.703602 0 6757.49169 0 0 0 9751.609295 0 4600.462988 22752.59047 0 87821.13821 709.8464107 5780.541507 0 242.2187232 0 0 43710.13105 7245.413299 1165.89367 2207.019048 27979.33891 44.42971715 19038.7055 0 124.7738111 4630.492779 3244.050423 29101.27331 3129.671652 8511.80224 2017.119447 3003.83808 2668.380915 361.3987059 0 703.130587 0 6726.886728 0 0 14818.51867 0 16177.89672 5953.07422 4371.967915 75187.28942 30039.06159 0 0 0 0 0 0 7645.364381 10.98984168 3479.439399 0 0 617.3900607 1257.242244 26909.0539 19238.48841 1463.012249 20177.97151 255.014292 1495.104872 131.3076962 34782.22033 0 3853.432654 0 0 0 118.7208366 0 0 51900.46148 1828.40036 0 17608.90345 2063.957979 17.1574809 0 25406.61224 7644.653814 51.76149496 243.7650009 15880.19251 0 282.0118212 0 7122.907834 0 21734.05714 8366.190164 40.99557604 31069.35076 282.979235 114.423319 0 2070.693646 0 3403.836694 664.696855 0 562.6207633 41410.90597 0 0 0 0 0 0 0 0 0 0 3700.480415 23289.80347 2823.236137 8571.562086 0 18923.81556 0 885.2913533 0 0 32996.55785 7.606663351e-06 0 0 20613.57161 1684.272209 +3132.393336 0 0 38875.45249 0 196.2802773 0 5009.071147 0 55020.47257 217.8720485 1669.760178 0 3594.550546 13573.72064 2359.570735 19872.40354 1663.213966 36699.74993 0 33.49251552 0 155.273251 3901.70621 4847.351247 0 6315.801583 0 0 0 0 0 1866.970285 4286.775088 0 0 0 0 0 0 0 980.9516819 14986.2348 0 110.2201522 0 5817.696864 0 0 35.72401526 0 340.5385501 0 17406.83649 0 0 49984.10405 0 0 2293.835198 0 0 0 35.76360667 697.1120815 0 1023.885417 0 1354.885046 0 1262.689257 132.6311672 552.4473993 26157.31267 0 17062.46476 31674.871 0 2830.148291 3509.918484 1740.091997 0 15407.72856 0 0 0 0 21415.80743 3688.00614 31214.12593 5264.997293 33852.28365 11168.37206 0 0 16639.29798 61099.85616 31435.59692 1679.829054 23.33070624 14297.29104 54900.97425 61405.22381 3018.218061 0 2908.585178 27782.46368 53484.28593 0 0 27199.51709 12576.55907 8974.142125 3245.445003 0 29328.98164 25645.14082 3288.561074 2514.749532 73057.22265 0.07016816668 0 357.3593813 9.5307442 71.84248888 1667.546475 610.1260163 0 0 149.2314967 0 44.7766421 0 0 0 63.37634189 0 0 11836.15759 6144.490921 0 7782.217639 4786.159072 3.446371914e-15 35907.07797 0 21669.92117 2207.595883 0 19192.99469 14.36219762 56304.1352 3002.88781 15880.36608 0 0 1211.346748 0 35882.00122 3484.799954 1015.371445 1613.840141 0 16670.84404 2802.901465 0 0 2944.440779 5503.114899 0 2347.649611 5465.802229 0 3513.811355 5585.419254 229.0874765 0 0 8631.186471 2168.334412 2376.332539 2023.906291 0 10835.91421 4676.713445 0 22498.7043 5096.828576 12548.94952 485.3960288 0 0 1326.915105 0 0 72033.25601 43326.31308 0 22128.54344 6785.619768 24402.91161 61946.94449 338.9092412 162.1443356 0 0 7074.946592 0 2411.091183 0 27319.54966 2670.791056 14781.17657 0 3.176230782 14475.72804 2109.519483 5172.71055 1365.742466 0 4404.886569 3052.966833 0 75.35534465 0 5521.569777 0 75.32128411 85.53830439 225.8745019 4945.118269 2035.750588 76427.27229 9102.143509 6528.68505 2591.827848 0 1281.258235 52262.52212 0 0 3873.118898 23972.48492 1633.355283 2203.844647 6780.605636 0 2271.153452 0 0 0 10087.32018 1465.23471 0 2503.424648 34358.21335 7326.464144 0 0 0 8518.413912 0 55473.53819 0 57.1825477 0 16374.69454 0.000552167321 3208.108741 3804.31236 3268.492985 0 0 8645.27398 8944.287239 249.8932393 23225.96345 0 0 183.6260803 0 5355.70724 0 0 29.83099439 31383.24329 2.028831488e-12 0 0 0 22268.07734 56105.34882 10274.17881 0 0 0 7501.397426 6293.998938 337.491889 0 +116.7881551 0 0 0 0 41.78429643 0 0 0 0 0 12251.67724 4060.11709 0 10701.6112 26226.77151 28191.91648 36450.93681 0 1203.390726 99.6871934 0 0 157.7716225 0 0 0 0 20765.9591 7203.293522 16240.49994 0 2454.902907 4642.234025 4994.012959 0 0 66517.94414 0 40934.21656 0 7177.424037 0 0.1097300945 7572.139771 0 110.6118083 33110.82309 0 38132.49284 0 0 0 0 8040.484328 0 0 0 0.2694584597 1684.014378 0 83411.41937 3158.557256 0 4121.45632 37716.12857 4148.906651 1994.25411 0 0 29048.42155 10635.60394 0 25272.32021 0 0 49.2805178 1649.267302 1944.998032 0 0 0 527.8516944 116891.4033 6665.680538 10554.21015 102839.2876 3.387297668e-06 0 38193.42033 0 4563.620502 0 329.0506625 0 104.1761067 0 0 50492.13132 6928.562871 10642.90772 14264.9358 9314.731697 124.2941749 19188.00753 0 34751.33311 0 25479.43039 6.756163745 0 339.4147596 38491.69758 102.5005451 8773.780901 0 0 13119.5475 10586.14866 8292.851438 52511.90594 3733.66571 32.58288096 3561.792108 4991.763108 9487.211145 22307.71069 8720.851996 1002.990277 2195.185682 110.9282955 10443.76631 627.9847992 1548.049573 0 4634.750571 9698.163155 4.245595 0 64.867426 0 1769.498167 1974.388529 0 0 0 9369.599874 45839.03068 16113.80142 24342.57715 0 0 5305.178332 0 140.803468 5934.147635 0 0 0 5305.534193 17771.55041 29880.49067 41886.59461 9031.44265 0 10749.41415 107.289412 21528.77999 2419.320386 0 0 2167.639823 26993.30222 1387.947931 0 0 8530.144853 439.6806664 62447.65653 2415.174583 10098.94776 36504.71777 3407.020474 18335.10913 0 0 0 8461.717407 28976.6049 9014.723298 27599.09223 1476.455919 14590.69 21497.42223 18652.77716 34185.81264 0 771.5182979 0 3198.39233 0 0 0 45496.07043 1867.483699 77681.53273 0 0 47114.89352 0 0 13731.24023 4015.64461 2549.569874 27060.40292 3303.743336 0 4369.55725 0 2765.890246 10183.8581 11996.74705 0 0 0 80619.38496 24715.36454 1291.544462 1199.470923 0 6913.474116 5411.371732 32816.70908 44.82765819 55.93504807 464.9545295 0 18390.02546 28512.13579 20025.79381 0 0 0 63.09584385 0 4810.220566 19467.039 6067.033313 15450.76575 24276.28149 0 45189.25646 37752.08192 4633.802786 115.8694737 86147.92043 0 0 19104.84404 0 3774.880385 184.4535673 837.0114538 0 4302.803546 236.79883 4206.407999 31329.76426 0 0 0 0 0 0 47577.53123 0 0 0 0 3696.091013 3104.316511 0 0 0 2439.45757 0 8846.436598 1427.824814 0 0 0 3046.046203 0 0 0 0 0 11467.5756 2110.808322 5295.017403 +26594.72408 0 0 57438.77068 3796.981159 0 1384.110573 0 0 3004.159305 310.1192216 5662.546325 0 0 0 1388.317049 45230.49237 0 53174.54477 25858.88815 1284.718077 0 190.4655201 0 0 32023.53847 0 0 0 0 11918.77173 23119.73432 73.30813734 0 0 0 0 10481.80101 1569.123902 3774.661729 10227.024 2416.989855 1176.224028 393.8805871 0 111.3645205 2214.540461 0 2466.859495 1713.589251 5939.813958 0 0 0 23332.89883 13919.16064 0 734.5878891 9716.327212 0 2197.053184 0 1869.631808 0 12138.44245 1972.128449 38184.6188 0 0.8382403888 28634.98682 52569.34644 188.4399474 0.002236722855 5402.636015 51909.59894 4174.098511 0 0 0 0 0 15321.16256 5334.696053 1415.968051 341.7333847 1629.638532 0 0 6317.794371 0 0 0 0 4348.283076 0 0 0 68590.04978 0 11799.05144 0 4705.108026 0 11694.56054 2111.703224 36875.22602 10997.18948 915.4376937 0 0 0 0 2621.971671 36491.82377 67025.39787 0 0 0 1897.719877 46377.79 0 8237.551306 39291.87352 4393.931554 0 0 2179.085403 0 0 9101.028362 0 0 7529.958742 0 62784.98844 711.3904113 55815.69842 12562.63871 50464.92099 4014.631891 16629.17437 5003.658646 8390.283639 0 18458.81358 2588.255237 58638.8786 18362.25551 14426.90622 10862.3388 23027.83458 0 46366.79314 945.804705 61245.15209 38111.74192 3148.791905 5064.638604 4685.428974 964.2992514 0 7380.510039 0 0 0 9731.18459 0 0 11940.19633 15160.13889 31687.62872 10285.29591 19457.41511 12848.93325 2716.338982 4816.797394 29002.51537 375.7835521 0 0 32.18182326 0 3680.601431 0 22700.29264 41296.69536 22860.1414 0 1208.263662 0 0 0 0 16512.91948 937.7507256 1693.21978 0 130.1787602 11248.40528 0 0 4400.271679 0 0 27445.97359 17569.30193 0 10251.71098 8949.72609 0 4797.949079 7997.715987 7832.657102 0 8511.737087 0 0 0 2158.645606 0 5961.332704 0 0 0 0 53021.03245 6802.732338 150.4723507 0 0 15140.18679 90.18864398 3519.548907 0 0 0 0 326.8534581 7639.954836 738.0164805 2567.958423 17634.05309 15489.35809 0 0 0 1644.585616 3723.091102 1467.752642 744.5587202 0 0 0 0 0 1177.864001 78.92739836 0 1336.009674 1100.499355 0 989.9796176 0 34183.13297 0 12907.81172 4751.248934 0 4190.936074 1617.644183 5931.408882 0 2034.1715 0 0 0 858.4029655 0 0 774.1756303 0 373.3587574 6848.199127 1010.44865 43671.16013 79.83991187 37289.83932 0 0 2057.628969 0 995.4785938 2228.850746 1206.731129 1988.69265 0 0 7479.684612 0 0 +0 1281.03685 0 4173.115569 123.8781502 0 4860.995449 0 0 468.9531493 28485.14979 16778.07492 51234.3967 1638.180513 27.49514843 0 0 7392.210105 0 12233.73327 57974.98493 48828.76013 1161.741194 0 0 0 9.483969472 0 22064.15969 19699.89469 0 15163.73343 2207.251845 811.5194533 2963.245981 0 26098.91897 1558.120744 10070.9254 6891.11609 0 0 0 2523.564592 0 0 0 1793.764181 0 0 1272.34636 0 0 1379.577017 0 0 0 7375.335026 0 0 38191.11414 0 0.01504638301 0 0 1577.971953 63636.07944 0 1850.604128 4160.617248 0 41243.29277 21030.68305 7751.316399 4360.909961 11838.33417 8374.993455 63251.61211 1721.285724 68394.79947 45.13513621 0 42153.60128 47392.41491 0 0 71058.40641 18148.76518 23666.05527 0 0 0 25213.76378 0 2163.166104 0 0 39895.52753 23575.213 0 218.3058282 0 833.4931809 9344.412454 0 0 183.8033185 49.95629083 27288.86891 43368.53963 85597.24798 17157.51813 0 10334.77898 0 12929.32348 0 0 5684.462297 0 8146.882784 0 25841.14354 0 0 0 0 16525.81889 1012.426751 10240.82008 11668.03655 51339.22977 0 1380.463839 0 36899.10181 64466.99475 0 0 0 15437.42563 49337.29645 29107.50792 0 5567.380222 3593.530239 0 0 47.15515189 8047.475317 5568.592694 0 10083.23541 0 16773.46092 0 0 51545.42466 0 3269.073916 858.9233185 0 4636.564483 954.4858946 0 15811.29965 0 1766.600807 0 0 1524.273682 5685.287273 0 8213.643462 27288.6226 0 0 0 1913.746493 64955.52459 2827.029188 0 21830.80489 0 16729.70082 44578.62899 0 12396.77397 0 9483.688429 0 0 0 0 883.2944746 24469.86488 243.2409793 0 0 0 46.50342685 19159.1516 1820.025561 0 31716.48954 0 5686.077251 2126.457137 0 0 312.736138 19424.5525 0 0 3915.236232 0 1466.261487 9291.026033 66.35030812 689.00696 0.9861472035 24862.31644 5174.772058 0 5208.234515 16059.86123 1082.387021 0 0 0 0 54.05717041 17275.97632 0 0 1569.443871 38036.44443 59547.15111 0 2960.278557 0 0 0 14708.01063 56210.85707 45775.56905 0 128.6047262 0 155.7134868 0 4620.22466 1454.716461 1499.527586 0 0 6922.473107 32875.7891 37964.29239 1469.633432 9038.355023 0 0 5864.084007 8851.758397 16080.2622 0 0 0 56.03921175 12686.77896 53.5607577 0 2759.998597 47523.34881 35.61285206 0 0 0 15529.29333 16804.87765 0 0 0 0 0 0 0 0 38286.327 0 821.232991 2826.66813 0 24.51050664 0 0 0 659.8315361 0 +554.4617863 0 1321.778536 0 9109.43128 2212.354846 973.1174961 0 1805.429012 394.4201474 0 15625.51789 14732.26516 0 11745.81632 0 0 1482.002485 4944.461217 786.11432 0 0 0 0 18565.36734 0 40.55493392 16642.45458 220.7325753 9079.541705 0 0 75.91407695 0 0 0 24755.12938 0 112.0213857 2053.722528 61192.97844 0 0 0 4.623959533 0 917.1709419 30211.65024 16325.01156 4603.252732 18955.66831 0 3010.502715 56264.59699 6864.047563 4279.894055 0 0 3886.345382 38836.7105 0 474.0465274 10198.6133 1127.823258 59.18912911 67852.31395 1624.792975 0 1474.63017 0 9081.118982 1827.739098 25235.17014 0 2178.665752 0 2053.599282 0 0 13221.55095 0 2.172783728 17994.90032 2446.711237 0.1174570507 0 60480.27716 0 1655.37428 0 0 44.8659396 17588.12658 0 43981.90755 10727.2531 22942.13662 127.0758193 0 1696.946743 35609.6296 2471.352898 1229.572011 24156.18676 7501.188119 117.2372668 4386.644892 23674.12436 0 0 13031.61211 2152.10801 11377.32348 5441.446502 26295.44934 33884.95287 0 0 0 0 2390.162448 5424.451782 0 2756.723047 60540.39016 3443.567172 112.9383851 0 3275.806291 52388.99385 27850.16321 1822.877199 583.3422728 34760.43963 0.004685758659 9672.748992 0 0 4277.824177 0.0001026582499 10731.51814 0 0 13116.88496 35086.53673 2059.516272 0 0 1822.193596 1890.147898 0 7626.446807 4053.644339 2906.035926 0 2113.439355 22949.2817 9830.787046 8653.749353 3259.559099 6453.834906 1552.731002 0 148.5705352 0 0 4770.92771 0 0 1593.408783 0 0 0 0 5005.214652 29443.3208 7363.492203 99310.9547 0 2761.250348 378.5279139 0 0 0 0 3617.789717 0 0.9578766737 0 12297.04163 3163.197247 30037.86763 25710.36882 0 7554.195768 733.3241752 10846.57087 9182.113074 3308.661118 0 6133.792168 6759.264512 0 34672.21414 0 34967.31567 108949.9731 83.12421538 322.7271597 5879.998826 0 0 7757.74571 6675.214313 41356.29174 0 846.5396029 3876.205922 0 0 645.6697147 2257.804576 57716.90304 8177.983346 0 0 0 0 0 0 31417.38167 0 16733.2755 0 0 1690.36793 0 0 0 6416.32972 5761.19986 0 0 0 39580.02476 694.6045993 873.6480912 2003.778958 158.0220417 2996.117623 1.363299924e-05 1588.68517 0 22598.33438 0 52.84519553 1597.729336 25308.79117 23094.54339 253.2222125 1648.089625 0 0 0 0 0 0 2154.218581 131.8591626 0 0 0 0 0 0 40264.67676 0 0 11885.63861 0 0 0 0 49728.20443 0 0 0 16083.44941 0 0 0 25115.86204 0 0 7954.058322 0 31763.26415 20267.76283 4500.578933 1123.159389 +44.94260972 0 0 0 0 0 0 135.1544297 17077.47002 0 0 0 0 272.6930885 0 6940.570496 58186.41691 418.53971 16065.15852 0 12341.70502 0 2999.046166 2470.453645 1370.117009 0 20934.20356 0 0 34494.88612 5161.970803 0 476.4421505 600.1278109 116.9539001 11427.98991 58160.63963 4891.362328 20765.35355 62549.54921 25315.48343 12554.27996 3003.921766 0 0 0 0 0 0 0 0 0 31612.37087 12764.10359 0 0 11672.48045 42132.49174 52241.66387 0 207.8384297 7491.426138 0 0 3875.188475 298.286591 0 5920.661389 49733.54362 0 0 205.8183573 459.6398891 174.6093065 0 29480.25194 0 27.87858271 9472.361732 18738.24555 8339.530194 25691.98091 270.8055791 28452.55909 39115.62531 0 27168.30591 8785.465771 1978.678532 401.9060332 0 0 0 4338.402495 0 1481.980307 71563.21492 14149.57827 11244.82695 157.3738626 81659.41456 0 78290.19141 0 0 0 0 0 0 9168.870039 0 0 55.30548885 46815.94228 35222.15672 0 0 828.6544538 0 40201.92489 4367.23283 26088.45137 0 0 0 16162.8855 15474.54626 8061.667976 2810.581919 0 8627.580107 23903.27558 0 0 0 0 4219.741097 35655.78595 0 78.18059859 0 3658.877044 0 2100.87924 67116.58562 278.3024257 2026.157118 6533.926507 0 60272.836 926.1498273 5754.760221 222.1995884 6073.310192 5334.903639 0 818.1955874 13759.97922 19148.73149 40497.73186 0 2032.692307 137.6916515 5766.058772 0 3416.10421 0 1373.303741 0 16763.0623 0 2414.451519 11184.04384 11155.06361 1858.992121 7027.442817 22115.76235 39331.65586 0 1853.286213 11436.83244 69295.85434 2080.358753 14357.47941 0 16153.3532 0 338.4463141 0 29749.76733 3833.061778 0 0 0 91.51902154 0 24157.05742 75059.92466 14302.61493 521.0686751 8471.030217 0.04243066762 0 0 451.0309851 0 0 2854.631867 0 15429.93795 0 0 41475.11334 3941.133747 107.0964032 188.5528157 0 0 17379.27866 0 27979.35508 0 0 216.6264406 108.1044141 11662.10271 0 0 0 136.9839577 0 1795.465013 2087.979455 9322.994858 0 0 0 0 0 2598.842772 16816.43185 8151.112861 0 1035.047569 0 0 0 16162.72132 0 0 0 3646.07315 32451.53188 20670.9475 7458.420491 88.77647802 0 0 7271.831675 49981.69543 0 0 3244.341519 8260.456404 0 4277.571467 0 0 11307.27878 29957.92918 28601.71816 0 0 0 1200.722532 5607.97051 0 0 325.2800861 0 0 0 17105.04791 0 3854.677793 0 9334.102273 0 0 134.4364386 758.3879342 18214.55661 0 0.6334103335 0 0 6813.488592 3250.266847 19594.20725 0 +14635.81091 0 2910.053916 0 0 0 23.14191466 74.35157797 81.65347381 0 3277.328948 0 10232.81913 3492.50588 2476.320398 2689.582279 9628.000941 5802.747806 0 0 22637.61379 0 93328.30805 1207.72038 1144.293463 49.66900603 1934.12738 4794.178667 0 0 25979.62993 54129.68045 0 0 13847.96494 0 52925.2333 9064.365522 0 0 12683.24201 0 0 0 2383.11316 0 0 0 0 19370.06772 0 2120.77684 0 0 9793.074862 6801.499654 32710.77043 0 0 0 0 5309.67926 11612.24757 0 3081.57733 49421.52186 0 0 1246.706555 0 0 4972.105328 15739.91548 0 0 8093.215272 0 0 6248.215089 506.8949251 0 0 43659.30306 95.64502693 1591.929569 0.0727353806 0 0 0 76.50341104 6205.40859 2329.39053 14316.6834 686.9203442 0 0 0 0 11678.46104 1430.7188 28129.59743 0 11546.1771 0 0 0 0 13404.70096 17530.75496 1361.980171 14814.16209 2486.265159 13507.9454 10201.86456 1621.655763 0 6918.312306 8149.263184 0 29818.16786 1787.308205 61.07001386 0 0 13782.58539 0 278.0755218 12220.81438 4316.670042 3084.937534 17333.71224 4250.054882 14757.90233 12049.26007 0 6463.938437 38312.59396 0 0 17574.4042 1302.781221 8806.849393 1179.26246 3469.479495 18242.95171 5004.333705 0 10611.83041 0 0 0 681.7265864 0 0 1207.20415 3078.272029 16222.72199 46893.63218 263.6615452 28999.70075 48868.33309 4067.75967 3994.648928 37.05737661 105.7708103 63.18485643 1831.39591 34684.39275 4075.209862 11897.51863 27699.80862 67.12257003 0 73.97958628 142.9182807 28.44289436 6396.60421 0 444.9227874 19946.03103 391.4178343 20614.36868 0 6243.603172 7776.231763 979.282915 0 7197.231713 11976.19203 0 0.267344369 24.53902554 5243.819807 9951.292389 0 0 14102.9994 59.24933929 273.7347716 23211.52509 6350.362279 0 6018.565115 47905.76716 579.4170629 0 1272.725925 0 9445.385179 6817.409884 1852.926908 3288.665417 0 6137.796278 32841.78246 0 4617.426795 4936.367187 12445.66726 0 29.8654876 36550.63602 1195.708218 4463.318483 0 3870.994465 0 0 0 0 1441.891311 0 30.377038 0.6212676099 0 0 17377.45789 10996.48979 9782.500128 21049.83515 16280.10137 4417.96672 0 32994.5214 0 0 46720.92192 8933.251457 0 0 0 28978.04613 637.8065474 9642.699185 0 0 10726.01907 0 0 25783.55216 82.46712752 0 5765.840354 0 56721.76396 0 0 3506.31672 5496.789615 0 0 75529.64216 0 0 0 0 3301.081503 16453.67792 0 3801.455504 0 0 2140.759127 0 0 0 75909.06547 25178.47122 0 33.68634372 0 11180.59042 36842.0353 0 0 21540.59668 26012.43761 0 0 0 +0 7061.845794 0 0 9695.357379 0 0 21687.5753 0 0 0 18953.73724 28.65607337 306.3879719 0 18362.26529 0 28549.2002 0 8439.929685 5030.93637 0 38.25413265 0 11745.84046 849.782898 52075.58246 0 588.3204694 997.6542363 0 0 5899.933334 1771.831508 26041.70075 0 12113.27885 0 39226.92275 0 66839.78051 61687.1205 0 0 0 0 0 0 44002.17969 1929.998495 16406.11772 0 61804.18862 6247.258812 4344.113248 21126.85719 2026.032647 0 21854.07038 42300.74732 1740.079873 24512.64451 0 4855.678939 104398.6962 1930.782168 74328.2483 3611.652402 4240.193758 0.0003651628254 2702.182175 0 0 2469.587786 0 0 0 0 1609.751534 3173.226148 0 6523.637305 113189.5488 19881.50187 0 8812.250165 1037.274626 0 381.2897707 0 77973.9435 10562.71903 0 23989.80208 12416.33747 2146.174218 0 0 0 0 0 0 38005.87381 2829.274681 1739.518532 190.5287384 3362.959252 21744.50627 658.829366 0 43524.79708 61669.71444 19552.61871 85.59978511 0 64135.75165 9568.873191 43.23122187 0 28577.84438 3600.617011 0 5774.242656 30981.3945 0 0 0 4612.105952 32434.12733 0 30916.46073 1247.677755 1790.965992 0 51785.21347 32333.75452 0 3769.165509 4802.50945 0 3628.433452 0 0 1613.653331 4.630701342 50856.54059 109.7403844 3136.616107 31.99731456 0 0 0 0 0 0 0 17117.45591 0.6533565024 0 3282.190341 0 14129.63736 633.5041422 0 0 0 172.6063207 0 0 0 27971.99811 6167.957057 22569.47855 4312.62724 3.657833566e-13 5575.409441 3065.358239 17896.60049 0 0 0 0 1934.623265 11678.43102 30606.87373 0 0 18820.17888 1847.050421 61.20557718 0.03943656894 0 0 95.19005504 0.6708022108 0 6192.607488 12248.46999 59454.2821 39.40299787 9553.792066 47.69881134 0 1473.904018 10765.45001 14434.0957 118.4265749 0 0 0 15591.38795 0 33575.86761 575.5987112 0 7545.540557 0 320.0689906 0 2938.391289 37184.10718 0 0 26836.76518 20503.08054 0 1265.310392 0 0 0 0 0 0 0 53889.47444 0 909.3413315 0 598.3068207 1756.52675 238.1803785 23321.15287 0 0 0 38037.23151 0 0 7774.184212 0 121.5147833 3448.827347 0 0 0 162.4699459 1054.835489 0 13348.8307 0 5777.024878 0 6910.762638 0 0 0 94.99692952 0 325.6487701 339.6059992 23344.22884 0 26560.75253 0 74.90100504 9918.612453 0 0 45.90618676 0 0 0 34794.56611 0 0 10682.75354 0 0 10892.63269 1866.864405 62084.89731 25884.85312 0 0 0 0 0 0 41276.79023 0 +33513.9088 0 0 0.02965369337 0 492.2828811 548.1157184 0 0 1820.178198 0 0 241.8872381 16149.42725 9116.713204 0 0 41478.53785 14128.21974 1498.007465 0 3325.929517 74.25204878 0 0 0 9672.671736 0 1209.618435 0.0001238282828 3750.120725 440.1197868 0 13248.73575 22307.95987 0 13139.92347 4947.26802 3201.438465 11622.61049 0 139.1647279 498.5710538 0 459.5202259 2223.022348 0 44073.4701 101.6213058 52.61694298 0 0 4311.970208 8525.316088 180.8652899 2402.689096 0 1373.236848 3843.256668 4295.965769 0 412.9282541 8449.188393 181.6574413 0 0 935.8116749 0 0 11112.68298 29717.76273 0.0001309145411 0 4641.875523 0 0 0 0 6596.23088 0 2636.160766 1781.773512 6412.925904 6525.836372 0 0 7195.54167 24420.70737 6215.295788 65325.36465 209.8493548 3116.462648 0 1184.578667 0 6473.659745 14172.74246 0 0 77.04711702 0 8216.896235 0 4508.105043 0 0 0 0 0 0 12697.29427 1882.052236 0 0 17147.85422 0 0 22659.20735 58661.06053 0 38206.32706 5989.550906 0 8734.199987 0 2986.392179 0 8895.720535 0 4796.69679 174.3647894 0 16173.54803 2103.228135 284.9284236 0 0 350.4294555 1033.240845 8957.691449 7520.74531 2797.600359 0 0 0 3869.008501 110.3812694 10153.86708 0 67362.7157 19086.80486 14539.2003 123.771461 0 9081.051734 0 727.4035915 46894.40111 2222.49149 5655.516313 0 1.260005296e-10 0 25582.16408 1680.564973 50253.90768 4289.181579 5174.70658 0 3000.898081 5162.538198 0 11334.88066 0 0 7212.755544 12134.84689 1436.535987 5870.707085 20863.23663 84.51486474 2898.05131 0 0 24.44868941 33865.6288 0 5259.464536 179.5660073 12443.54695 0 845.1451593 0 32169.10144 0 0 26951.374 0 0 297.827485 13431.42141 69.76268676 1661.297494 71227.9346 0 1708.459886 21056.35709 79.5856725 73.25363835 393.9349834 36951.15599 4850.179364 626.1821339 0 19766.88929 3532.231504 0 30255.50459 8.374155806 2.601082844 28826.57702 0 653.474905 5990.678676 53016.93715 0 5120.590578 0 5233.505163 14305.30362 3260.437033 2658.549035 8636.936165 12860.71821 0 183.5183163 0 0 8236.49225 26004.05673 17885.57142 0 0 7057.093748 0 0 17779.70195 0 4173.35351 20235.83425 43.14705018 0 0 0 0 12506.8777 0 0 0 0 15.34162183 11516.05965 0 10937.38428 0.001975630814 0 196.1871014 0 0 0 10404.05392 0 0 26.97508721 683.8165905 0 7882.959078 2428.751158 0 2761.95905 0 19275.91393 32690.14598 3004.991439 0 0 0 0 4863.425971 29983.34929 26751.14478 1185.461885 0 0 0 0 0 142.1843284 21204.19486 0 +0 44137.69035 0 0 0 0 0 0 15245.103 0 3242.79428 0 0 0 553.7443529 35133.79826 0 348.3420494 2.442929509e-16 0 14727.65667 0 0 0 0 2.111930016e-07 131.1953695 7068.039699 0 0 10197.51246 0 306.5519206 0 2022.933278 9790.769753 946.8646917 5941.894981 4292.651214 26419.70989 997.9313674 0 0 0 0 0 0 5836.994857 11502.86593 0 3028.503482 0 1202.730792 45.13573031 0 5910.676524 0 0 10064.05076 0 0 0 0 0 1113.149789 0 0 46670.68889 0 0 4253.672926 1182.193826 0 0 0 0 11395.88954 0 277.7303446 0 2022.748882 0 9004.386248 3739.809667 1921.133248 0 0 71403.52621 11926.96534 21220.20949 0 21334.21398 5731.465217 3253.680963 35800.75394 7567.875806 20558.15097 0 17638.18714 27135.71033 42.55205705 0 0 13700.56196 10039.3477 0 20376.84408 0 1636.378104 0 0 6169.598896 4052.99644 5414.581024 2982.917673 0 0 10129.54123 7.299971333e-08 0 3043.336032 572.1639126 11009.2317 15690.74156 27139.0282 480.7660434 0 0 2862.810631 0 1158.898424 3623.980751 0 138.740252 6.310246032 34812.02649 0 0 0 0 1476.899027 16960.7244 8465.357482 3015.641005 1904.46541 2649.118411 59.50424479 1617.205641 21374.1685 9969.365602 1650.215016 0 0.0007090651238 0 0 0 0 843.6437906 0 0 0 93.72370564 4445.577204 22794.62261 11938.53959 13344.49623 0 7.372301859 0 3063.942629 0 0 0 122.9452616 1586.189181 0 59212.04364 0 11802.17243 2.230554251e-05 0 5512.113258 0 24987.38029 354.0571885 0 279.1727279 31537.35641 0 15722.87831 9972.918401 5113.357293 20007.47037 2706.266623 28542.14959 455.9586791 0 307.2503979 1832.417082 0 5.923575956 0 19272.86884 3726.704775 36931.52285 34665.14934 0 41048.53836 0 19331.72551 0 2073.969443 30019.42847 299.7374775 0 38866.46764 24866.15315 24946.82733 0 0 0 18150.56165 4232.16982 1742.515219 27403.19485 0 5970.757644 5046.644251 0 0 0 0 21.52436527 7109.336053 3891.040012 0 132.4041105 0 2345.013709 0 17052.55629 3.168219474e-15 73.79655324 36967.16644 0 74.46917147 0 0 0 0 102.4710478 1928.157945 16314.42987 0 591.2362055 14830.90278 0 6142.180179 0 20.08708562 4801.856009 4126.438799 20461.73218 0 255.4653021 43240.04849 7834.457877 7784.68635 101.7497584 0 683.4354916 0 0 88.60241649 2381.287541 0 2739.837811 0 0 4805.434237 0 0 281.6304114 342.21854 8217.734047 0 0 4191.580222 0 4178.437063 0 0 44142.87265 1685.035624 0 9273.166607 20633.22372 0 0 0 +0 0 0 0 0 22058.36294 0.2635716693 0.2292210233 0 0 0 0 388.6018663 131.9516336 18685.98855 30094.51581 0 0 0 21125.30665 0 29628.23964 9478.589937 5920.027185 0 23284.32441 3765.018854 0 0 3206.127063 14756.40158 1916.407339 16134.77861 0 0 41719.26693 12361.91529 0 0 1163.067165 0 2758.820737 6906.159688 0 0 0 0 0 0 0 16039.11719 0 23086.26379 16923.10295 0 27435.72111 13446.21568 0 0.2521002869 0 0 41502.38425 643.2415143 0 0 0 5542.334412 17926.28551 19306.62109 6947.017344 726.6554379 0 3771.627012 429.2555952 2188.411807 0 1210.722053 3907.251308 0 62502.83897 17617.00932 56263.98877 10835.48518 0 0 0 22132.86362 101.6345274 0 46231.87109 859.0351401 27814.02196 8192.778916 0 657.0734986 0 0 0 3928.521215 0 959.7530098 39654.62625 0 8060.011863 40542.68996 13803.15073 42138.72792 0 1536.966537 7015.211656 2402.902357 43431.53708 0 0 0 47872.99346 28647.84717 48281.10473 24158.87532 0 0 19050.24565 65.50257437 26427.16817 342.5431839 5860.971424 5372.890643 26778.73791 31514.79881 0 0 0 1347.832598 0 21001.59477 5357.941007 0 28230.39024 0 1583.956311 0 3601.148354 5680.584614 23017.16923 1226.950198 1958.867134 22803.34136 8967.638069 0 12683.19969 6817.032296 941.9447593 6627.77134 59.14414744 5100.878936 0 0 0 0 509.2085606 0 0 0.02447506171 0 1905.766892 5.84783493 0 0 6947.621074 42015.45146 0 0 1945.126404 75158.59836 0 51290.98276 50200.67688 1621.446187 34371.18068 2838.292215 12630.20391 0 47.73926363 10887.3916 705.3268795 1065.301714 21.84672147 16156.12961 16238.14407 10368.02447 15831.15005 82.30661977 0 23672.99589 0 63882.77936 0 39760.23546 0 52058.3595 3898.602935 0 98.95996052 0 8817.073284 0 0 17473.29687 2503.146442 26012.27886 0 0 0 0 0 84562.07249 0 10600.8085 30245.38662 72.23403831 11723.90006 7039.055019 0 4476.937915 0 2.312857734 66232.47298 330.7439065 0 0 50.50941676 9255.640224 0 0 0 0.03774744724 8875.088582 0 1656.004273 0 28421.8881 0 237.4859413 4161.393135 0.006146517686 1684.489298 8897.72281 0 16830.76643 39.79989462 0 0.005691683343 2108.342465 1147.921797 0 0 33.68510986 10618.31165 0 33420.95911 3123.91976 0 3750.985386 0 16134.28309 9327.286757 0 18444.4152 0 22838.31276 23774.81872 0 0 0 520.4472652 0 0 273.6519824 0 311.437114 2124.485403 0 0 0 2046.056921 18688.26677 12171.18717 0 0 0 0 0 24128.90431 3572.999596 0 0 2437.238807 0 18648.17333 0 +0 0 12377.17992 8636.668553 0.2022427369 6343.929165 12336.64001 0 0 9897.39565 0 4046.109353 4900.267038 0 18655.66873 0 1599.51095 32414.46248 2121.900739 2255.667869 5809.246292 0 0 95.68238288 0 1640.211526 0 5935.375963 20764.72421 0 0 28580.59026 52719.6849 0 3904.686062 9105.317184 0 0 0 2254.867205 0 0 18352.65536 103.8733258 32057.12584 15368.8426 0 28272.88967 9364.617072 0 0 0 4808.640349 8066.613018 0 5866.09767 0 0 0 9119.924899 0 0 0 1619.670602 0 15038.72295 0 13380.77668 0 29677.84799 0 48063.00334 0 0 20728.01773 0 2504.009853 5442.48095 4358.895481 0 0 15493.77918 4322.868041 0 0 34646.43292 11605.09693 571.444163 4796.370757 588.5881751 64742.00495 0 48899.40752 0 26606.35779 0 38576.59577 0 1681.308202 17049.66713 19.29520009 0 35.72071615 5152.592334 3204.917644 0 35470.68038 0 15518.63866 0 14981.92464 677.4056369 0 0 0 0 0 0 1836.324839 0 323.0162459 2383.350223 0 0 2714.08399 0 0 0 11171.38223 8930.992619 5392.556545 3287.552933 0 21260.23604 22605.03267 0 36351.13074 0 0 0 0 0 31702.00395 0 0 28884.59437 47033.05917 58870.47796 0 1533.666171 18574.37596 28919.68824 0 0 4958.723606 0 0 2800.091293 0 0 1711.113792 0 15068.40068 0 48291.94976 2072.278054 42528.95883 0 1523.070328 3542.954873 2256.720952 7229.43208 5006.985139 7482.009967 0 0 0 14311.30799 12915.9671 4486.403239 0 4337.316471 185.1130976 0 26611.00161 14036.98935 0 0 0 13211.96533 0 4426.409272 247.7420235 0 50.00941645 0 10139.39174 91.48735893 46559.78653 0 7529.475635 1777.321909 4540.200532 15757.01945 21392.3343 25150.08035 2628.752887 10330.24617 49393.14046 1271.666008 14746.70583 0 0 1394.152665 0 0 12819.7603 217.0480779 0 0 1816.299964 2441.860959 153.6495135 15.51603064 0 173.7248681 4185.803438 11365.65336 0 5762.304108 13649.51035 0 0 0.6357232152 30159.05134 0 10713.23382 1119.941129 0 0 0 0 360.2695205 0 0 42.28336915 0 0 14363.26341 1740.257565 8587.203114 33307.66827 0 1142.511756 0 117.1398447 0 0 2860.766481 0 20194.29008 0 2108.691508 679.821808 307.7497931 2664.928273 0 3960.068061 0 0 0 0 0 0 0 30972.1186 3967.693307 1710.546733 16.88453317 0 11470.07494 128.0755759 0 0 0 0 0 0 0 0 54594.26908 235.7103326 0 0 25597.95299 0 33955.00839 0 0 0 +12193.54258 3755.707671 0 0 0 12726.04991 0 60.50789817 6691.611681 0 0 0 0 1123.666757 0 0 24056.55895 0 0 2070.448747 0 50820.35656 0.003257087009 0 0 0 12712.06257 0 0 278.8465618 6450.682912 5135.943469 0 0 0 3387.08007 4106.632857 13660.17282 1319.11905 968.6701991 17352.75087 19568.82925 842.1664247 0 0 56348.65344 14765.13902 0 35342.89558 16649.87455 8007.324675 0 0 13192.10417 8135.095841 346.453326 0 6162.644169 0 12038.1553 583.1857469 55719.56023 14374.7767 0 0 0 267.9579884 0 0 0 0 0 54156.62364 0 14559.61865 0 0 2548.668991 3531.06676 42889.5486 0 0 1924.137042 31993.89421 0 3937.628448 33953.48428 4594.524036 6302.568923 2349.241158 17701.35807 0 33323.11003 573.635829 2009.018863 0 0 8707.703176 29146.60771 3302.870487 1901.988389 0 17451.16223 16375.7283 0 0 21283.53762 0 0 1093.15076 0 0 0 83.02343684 48661.60608 3335.520721 0 17721.00463 0 3937.329004 0 0 0 0 22364.77199 0 0 275.1219105 49863.14191 0 0 2339.771395 0 0 0 4918.21961 95.72073287 4096.792089 8182.700458 285.6529747 248.4771849 0 6863.815509 45897.56285 0 44309.98937 0 0 2205.698062 7217.335183 4707.895774 7454.1623 50435.69091 3299.851297 0 202.368992 514.4002734 20580.28283 3764.559203 0 2054.535168 50605.18026 0 2291.028386 8620.003952 0 13799.24583 0 63415.34316 12.48002886 101.1904552 5820.102881 6814.516885 14023.6548 2791.538711 0 18561.82979 2225.976645 273.2850174 344.3622683 4417.853985 3547.443577 0 0 4710.291708 242.1210124 0 117.8137985 17.93071042 34953.10077 30502.75681 0 0 0 68583.99701 0 1325.275428 0 15759.62688 3882.163608 0 0 2436.284316 0 0 27336.83961 8058.384322 43098.91534 2264.357546 172.5537003 51709.29937 15250.93619 0 21048.90476 8074.804412 0 16144.40567 52512.98657 2860.596395 35685.56188 0 0 0.1112340689 19311.82223 301.47495 0.002182576185 0 0 8950.162453 0 24993.49594 0 68549.34972 0 0 41961.7271 58.18889736 750.7114166 0 4363.64612 15163.96872 0 49717.27847 0 1954.319563 0 0 1125.342351 0 0 1387.094303 531.7584246 528.0470638 0 3358.20926 0 0 0 0 160.1777784 0 17939.56598 0 0 9107.770772 4838.328388 0 164.8729271 1744.284427 0 0 44.29884106 0 5439.85406 26210.51574 0 0 0 0 15059.97571 728.8927728 1067.291002 0 28447.56561 0 3278.052184 24460.10487 0 30252.80843 0 0.005361952556 0 0 0 4842.599303 3782.240925 3.430847298 7236.3422 1165.032815 0 +53796.39734 90.15190498 7542.311125 4747.226363 0 59967.41041 0 9144.33671 48970.54115 0 0 0 218.2294394 0 22274.85836 67873.29721 0 0 0 0 818.6347821 0 144.0048209 0 512.1454264 350.2457038 61.94024772 15732.30443 487.564153 4820.451482 0 4822.845319 1171.601928 0 0 0 0 108.2933438 9.312089304 0 26038.97363 0 0 0 0 23949.72998 0 0 14397.05507 0 0 48267.49394 0 1376.881166 13895.14674 4368.948868 1.081260688e-07 0 0 0 0 0 0 0 0.4908929505 0 0 1209.591611 0.0008583182856 33089.80833 117.6135507 2000.577164 0 30074.60941 1423.990485 0 12.7402859 0 2179.88579 0 0 3542.188663 20663.49048 0 3512.015428 38062.70641 0 5652.069185 212.6189481 1144.248972 194.8041151 168.3714492 0 40969.10573 0 2021.932829 68.84860502 2318.414827 22714.00934 2848.818179 2206.484478 8124.367663 942.1631491 2081.016619 18017.06404 11902.44477 0 38879.7667 24312.14321 1393.638283 0 0 15625.97191 0 2382.928527 0 1926.240885 0 0 28731.11041 2017.024362 0 2582.029906 2515.070819 62.5138728 0 18091.25844 340.9610772 39.70325264 0 45458.63105 0 0 0 1753.685401 0 0 1418.314243 3483.969673 834.5966641 0 0 14074.91508 0 12174.22522 2118.862586 1881.618354 4664.389106 2439.973312 17953.49563 49504.46481 28806.25114 55950.3719 5683.81582 3781.995249 6090.910789 8031.88209 0 0 0 0 0 0 27569.16996 0 20424.03357 12925.9458 0 0 15596.57018 0 12859.77845 0 0 6237.521866 32224.60478 0 0 9928.137954 0 0 0 11032.04853 0 0 1640.768219 287.133273 22.17764247 484.2555516 1100.942045 0 27016.84642 0 0 0 30006.20409 16278.36638 1419.330981 0 0 0 0 2505.515864 45363.11818 21325.06602 0 3005.262469 0 0 0 0 7093.444047 38693.01276 6005.534573 16168.16805 6708.254968 0 0 0 5892.721599 1191.026435 0 10276.49236 467.4017394 940.1404842 0 0 11920.78645 0 222.6806781 477.0862382 3024.474689 0 0.02249026298 0 0 0 3596.386083 2210.251604 0 3455.696174 3480.963435 0 4255.058664 113.9533915 0 453.8360416 5784.413305 79.02337799 0 2253.791017 3563.038892 0 0 4260.059632 17411.60823 57.37742994 596.725468 143.7378486 0 0 12911.7099 84.48565997 0 0 0 0 47406.76596 0 9856.267644 0 26895.40777 828.1474074 0 10351.32501 0 3900.661579 0 5794.261283 0 7201.041428 0 6758.616328 0 0 1505.988457 20803.27803 0 23854.51358 295.6193307 20059.5017 2277.127921 0 0 0 0 0 527.5107134 2190.391887 30211.98511 +0 23857.67952 0 1412.359053 0 3940.715938 0 0 0 62125.68266 0 0 0 12.60701989 0 0 0 0 9157.060917 0 42607.71247 2019.828981 0 11705.56091 0 0 13286.23008 0 0 11261.89463 1704.964707 0 0 50921.39513 8369.676717 0 0 0 0 29679.87538 16313.26001 3202.680919 0 169.4367977 0 0 620.7190102 14390.66205 16376.27497 0 20910.30293 2013.232627 5169.682837 0 0 6078.273681 4792.323155 5302.445267 14050.92625 0 0 8573.510399 0 3484.837614 0 1731.695286 0 0 24790.26414 0 8127.27018 0 0 0 8951.178456 16682.19034 409.7426499 27321.02837 10739.76702 0 0 0 20384.60909 687.0671318 2776.581464 2613.07625 0 2102.916248 50.48448898 10936.34934 1826.560241 0 903.6419538 40841.4618 0 17764.39783 0 1463.797645 19092.79948 0 17717.56202 0 0 6843.058364 3614.553713 0 21.0749457 0 3790.620534 0 0 0 8027.075812 5481.66466 30175.47637 55726.17272 831.7305783 4128.673477 12678.29632 63384.31463 795.6720752 33289.74568 1649.875557 0 0 15236.79462 17682.55163 20680.13444 1214.526963 17390.96767 0 18135.41598 16644.56671 0 0 0 0 5320.464121 445.8337426 2277.569204 0 8932.729749 0 0 0 0 6574.688136 0.02240581301 1143.382497 3171.400741 4906.058841 0 0 9615.536327 1079.290993 0 0 0 2248.551544 0 10771.56964 0 62.34776487 0 2201.711205 37.01185618 72.14311881 42.25278327 4240.46084 0 0 107.637735 13531.70562 8206.2507 1830.330424 10995.66409 66.57615923 0 3559.435112 2111.246251 17400.11486 0 15793.99695 0 326.7284361 0 0 0 5862.436594 0 0 3505.656721 0 0 0 1304.093302 21110.15696 12336.04366 0 3440.767375 2771.703389 0 12533.02484 61781.76332 1314.777499 0 1844.436842 40.17803972 4893.75726 5644.696781 3219.121058 0 1154.657151 1498.793184 20109.94206 0 46260.86384 56657.71589 0 0 0 6465.42034 0 729.7472296 0 202.0888206 0 0 44791.52562 17811.76302 0 0 37354.06371 0 2664.766687 506.7556722 1852.112692 0 0 0 0 456.2679557 522.3931863 0 147.2558096 0 0 5453.901131 0 0 3547.617705 6852.597476 15863.19236 0 0 0 109.8822502 0 19352.57391 0 0 7526.339664 0 5192.684781 1510.737929 0 0 2558.525205 0 0 0 2964.751379 0 0 0 20664.75456 15845.83378 19814.6423 0 0 0 0 0 4636.066672 0 0 0 6916.284684 0 0 0 0.433179766 0 0 0 0 7689.235394 0 0 506.4635781 +33832.3957 0 0 57813.32804 0 41516.64299 0 0 0 0 2.066118989 4495.744119 0 1678.234046 0 0 0 3407.126029 0 0 28160.78044 0 0 16143.71575 0 1278.251346 0 17987.4243 0 0 0 13731.56087 0 0 1663.719117 0 0 1114.469359 0 4324.282277 0 0 4780.285349 0 64378.01509 0 6339.071009 0 986.2697829 0 0 0 0 21396.26989 46372.58003 33155.6988 3279.2103 0 17816.33611 0 1229.676429 1103.651385 41.11508339 3523.678441 1542.328575 0 0 26836.29491 4988.882783 0 848.1172653 0 0.1640322178 462.9300406 7528.839589 0 0 0 2330.514204 0 0 0 121.0687896 0 42953.83122 29563.67419 0 0 0 1697.692343 0 3641.328509 0 33036.1381 23316.01632 0 1582.54753 22071.88037 392.1896606 13995.81343 11344.77004 0 21973.57042 3272.68739 0 1337.56275 0 13621.44751 0 9836.686417 0 16659.25332 0.1274926741 47062.8658 0 28850.65089 6353.323562 4350.989082 4553.971549 0 0 0 2138.012072 0 1229.520442 2135.548002 181.9019484 23371.72002 1142.482876 540.6787595 0 26081.20262 5624.515389 0 0 0 4820.493333 3524.34604 516.3581474 0 45.83823094 985.4926115 0 0 0 0 9387.375055 0 4.104462048 0 0 23865.5623 0 7108.791643 0 40605.65569 0 260.0151163 0 6451.413331 4146.152675 23468.55369 0 78.95652234 0 0 40250.21592 0 0 6728.024453 0 0 0 0 11.11981344 0 2552.624657 18435.19546 0 6898.656326 0.003226868199 0 0 0 608.3739414 9567.846988 0 0 0 2621.582605 0 0 0 0 0 0 0 0 0 633.090299 8159.773363 23185.53465 2832.907765 0 22661.73382 2328.502828 3174.931988 0 902.207735 7459.998519 0 0 10989.24655 12851.14363 0 11312.67038 0 1634.522398 9613.891395 0 17672.69497 0 12894.2243 881.4068769 0 62.25966577 18558.84312 5318.269263 0 1045.294653 0 0 1911.500761 118.0477957 0 1502.977921 5805.876406 2069.608005 6177.974145 4771.882151 0 0 0 0 0 0 0 0 34093.83336 7291.783026 0 0 8500.973553 0 0 3177.282518 0 0 0 0 17777.24225 0 153.6965151 0 0 0 6285.636318 34265.98777 0 0 0 60.14422473 16241.59952 9077.4422 0 0 0 0 4171.233036 0 6208.639345 0 87.60504894 0 0 0 1594.921693 0 3556.087854 0 12908.5919 0 6.611735189 0 0 0 0 0 0 0 +0 0 5309.873882 949.2921724 0 4433.234937 0 0 38064.75893 0 15466.60674 95.41150914 0 0 0 3875.901551 21702.67307 1424.874179 747.5067784 0 0 1120.081512 0 0 0 0 0 1442.986815 154.6214829 300.1312414 0 0 0 4551.465954 2788.877215 0 38404.5872 6700.656923 2729.143337 407.8578424 0 31174.47291 4227.164279 58.9868396 41229.00114 0 4873.052692 0 95.43843735 1389.17336 0.6281981355 6.212589474 1773.329899 0 4233.012275 0 0 0 0 359.7435672 59125.96908 0 0 0 347.2887962 0 0 0 0 8628.03514 0.4269330274 0 0 0 64418.24446 0 818.1686312 7039.575892 0 0 0 50497.43661 0 5094.174616 29558.78442 0 2279.490664 6811.158893 3547.401601 69297.36577 0 2163.350659 3429.315907 0 4173.354787 27046.40516 1260.258201 0 6512.682543 15859.3287 79.75999053 0 2378.536462 0 15617.72865 0 0 5478.42238 6880.348328 39558.21774 2252.771355 9537.808363 3365.657067 0 1679.574382 1059.66182 0 12942.53393 12515.68677 4774.154507 4744.480326 0 1568.157534 1575.826694 0 53.35598127 21275.31268 3539.985431 11207.7921 163.6564525 1213.249125 24707.72983 55619.83301 194.2994216 19141.43273 0 15477.6836 386.8332129 0 31327.60581 0 0 0 67.73183486 5076.290698 26845.97844 0 9696.981157 0 24239.11491 6906.320661 22347.21023 8934.231703 6594.741313 0 0 9170.125825 0 6000.613201 4170.87721 7086.635173 32371.30498 0 28032.20712 20145.71249 3174.673879 0 0 0 0 0 2383.660995 0 0 0 0 0 0 0 9357.969155 44.73138177 9237.273852 0 0 0 3620.987568 10804.58085 333.4734277 0 16593.80348 0 0 0 5933.765746 2672.848278 29165.14521 0 1290.852076 0 0 0 3050.866572 19541.29244 2500.079499 0 0 0 14713.80983 30266.24121 25099.19783 0 4587.014304 16558.95886 13494.69451 0 2142.570897 0 212.7605823 0 6678.562892 0 4.306070163e-07 0 371.2390949 46822.11048 3205.79935 0 0 0 5149.26706 0 9073.813938 21077.91204 0 12168.61362 0 0 0 17328.72432 28348.08479 0 402.9934597 231.5355672 994.7410862 0 0 21494.9063 0 0 923.7040824 0 11941.38128 240.487365 0 2013.654835 32720.77004 0 0 375.2358835 0 7278.506486 15253.85598 60.65190301 0 2438.851346 10442.88764 55929.35664 40170.95363 0 429.2027668 21610.65213 0 20532.75096 0 0 0 0 1.320536105 0 0 0 4146.77179 61441.98685 246.3507919 6914.799636 3193.714615 0 0.01062269889 1367.370235 0 0 7060.836814 9386.963519 0 0 0 0 0 613.9246863 0 +0 24853.18705 503.5829222 3393.824802 0 0 0 0 10985.22716 0 2772.569961 4612.151281 4157.911118 2720.272577 575.300183 21146.17979 3614.144005 0 4392.665692 0 0 6002.536924 2369.778322 0 0 23654.6039 2748.556412 0 0 14132.49933 2522.045164 0 1466.314777 60175.34877 0 16298.1654 1.885393868e-06 0 0 4903.754365 0 8152.726635 525.9309835 31813.33939 3378.923614 0 5431.490036 0 4024.860077 0 324.9257758 0 23369.61928 4415.294 2068.379703 7473.844797 0 0 0 12908.27287 0 0 34802.54618 1011.738021 0 0 0 0 2703.852804 0 306.1905254 0 6752.156012 7804.945928 10989.66577 49321.64811 60963.17501 0 0 0 19958.5199 0 5310.584676 443.6632435 0 87012.79877 4364.603912 8560.253779 0 13177.61722 139082.6651 3696.849413 0 0 11076.23528 15309.38107 0 1613.649657 1601.574383 0 9150.626761 15628.89401 0 0 6035.81447 0 1442.504552 97.35484984 2542.994016 140.3966619 18589.74073 25.67430411 5.743523608 7815.124912 0 10202.5164 0 7142.360106 0 0 0 20744.54146 4255.864946 0 0 4425.321885 0 45283.32824 3169.398144 2015.260983 0.004732437032 9971.781984 29028.12697 2812.632819 65.44582986 0 0 0 0 51715.57412 0 0 16358.53222 51335.45075 0 57215.25812 0.0295355037 0 3468.525759 33176.7423 0 0 0 15146.29792 38866.48113 9530.839209 0 0 0.0198332744 0 0 0 0 89.4184492 5476.426814 0 17285.48906 2580.630976 24899.06174 0 0 0 0 0 11304.21616 0 8081.556337 6827.712138 11262.73065 2465.21174 9749.812203 12380.5599 0 0 42981.57363 16580.09226 22241.00275 0 51907.32823 19232.71745 8097.875997 4166.117798 51519.1608 2106.672352 0 0 0 0 39017.09435 47.65437301 0 5373.213176 0 0 40635.84755 3251.437172 0 0 0 0 0.008478307738 46952.02224 16914.95192 9926.613751 0 54295.30214 0 57121.04591 7503.826578 9975.5534 63867.34513 0 23961.34817 2274.993641 0 7422.002533 1143.756953 0 22729.52743 811.0708285 0 0.1970889311 102.5104762 0 18215.02264 0 0 0 13629.38179 485.3062938 0 15382.24868 0 0 7830.575087 40.92174263 0 75878.63158 0 0 6714.046779 0 0 389.4351774 53509.36313 0 0 0 129.7791605 0 582.3688576 214.9976586 21945.90718 0 0 0 19569.82088 5.263279794e-15 0 0 4861.453751 4265.433916 0 2045.659088 9426.527794 2855.794418 0 0 40955.63191 0 0 0 0 0 5054.756149 7231.255593 1791.970079 0 1.346225189 0 0 0 1963.496422 0 13423.44066 15671.21281 0 0 0 0 +0 0 3050.189571 0 58168.30195 21302.42066 0 9331.363067 0 0 25006.72581 0 0 0 0 9.379168578 1815.600773 7794.755848 80.15542722 421.6023933 8982.892923 9698.143957 6633.750786 0 32.03789455 0 0 0 0 78.62238155 5791.104324 9234.886834 837.5853112 0 30084.89374 4546.567347 5675.586682 239.755111 0 8019.818447 0 169.9824186 0 0 10822.23339 239.6878192 121.3527548 457.4444888 0 306.0620312 0 4836.811772 0 25534.37253 7495.874999 125.7379053 0 0 27697.62503 48809.63588 0.00325942313 0 27980.42291 24625.00883 0 0 0 30415.97435 0 0 0 0 0 0 2826.501167 5374.972138 0 4237.376656 0 0 0 2.180287866e-06 0 5589.050295 0 16558.90183 0 0 53.60929429 78554.98572 47935.10996 0 1.425733603e-06 457.1999955 0 3992.662018 18071.86854 0 40867.03705 20840.89106 0 0 1639.237624 0 0 931.7878906 44947.52071 0 11858.93395 5710.727887 2319.511332 0 0 0 6714.012442 1597.584832 4110.606672 286.5819499 688.7506571 0 2481.08768 1915.535996 0 2008.04123 0 916.0868033 0 9743.798279 0 0 3195.55811 0 51757.77104 1139.41764 0 349.1170023 0 9569.904554 0 0 18604.8434 1650.791113 2664.286962 0 16706.15961 32241.07488 0 10267.93951 3.579996077 15258.49778 0 4915.053309 3905.157704 30090.65894 6527.614275 0 0 24013.17575 7085.231722 0 3040.941087 2510.036069 0 299.3506703 30549.26906 27593.13451 0 16209.5444 1759.565509 3418.44245 11563.35701 0 4192.692029 64.24743908 0 10583.7966 7829.823866 0 0 0 0 5763.012259 0 297.7817766 0 0 887.726209 24042.87913 95.08731284 0 9357.12004 374.3696514 0 24025.30343 5647.238471 0 0 38929.33712 39163.81878 0 0 0 14272.57573 52.55496751 353.8122806 0 0 2830.0686 0 19462.83275 6997.409052 0 1013.654381 1803.426214 6702.233118 0 6981.316461 0 24861.91566 0 0 25788.93419 130.8565447 0 0 24990.68276 0 0 0 7661.095821 1.790049799 210.7811416 456.9361118 67025.46304 1523.377808 0.005557729494 1814.171382 0 2530.972431 0 0 209.2219864 1549.857496 0 13368.23928 28.58311254 0 23401.77476 4959.768389 0 0 0 296.3104551 0 12151.52703 4647.876997 372.7155502 76.95506616 372.97228 7864.115355 6464.535809 0 9366.811311 26860.04424 0 632.2477668 4119.167847 0 102.4615281 0 0 0 25912.42572 0 0 0 5248.828095 215.9172324 2446.596579 0 2084.454038 12475.81012 5.045009803 0 0 4507.943333 2414.383831 4806.931285 155.3777248 0 1375.099677 588.6506377 0 13902.21553 636.4867348 0 9.198271598e-16 3385.11797 52.67627014 429.0607983 +0 26539.99692 0 4263.594497 0 0 0 1842.212585 15331.79246 14121.21561 0 0 0 11242.00178 3135.957516 0 0 34894.37122 6730.42873 0 0 0 0 0 0 6739.959712 11961.52295 4207.023737 35980.08456 28652.72084 4378.525573 0 1727.115008 3374.773225 0 43035.76605 3690.224857 0 0 117.6179354 0 2127.896541 290.5031106 3780.546529 1998.38099 0 2570.593344 36.40692184 0 110721.7711 2293.428668 0 6980.90903 0 8078.772156 8759.89153 0 0 10390.39607 11292.75368 0 50765.19439 0 0 13625.20965 12292.59101 25413.27261 0 0 0 5.799586581e-17 7022.894012 0 0 0 58.23724633 1385.378634 0 10684.67608 0 90.42021788 16761.0104 0 0 524.6263352 0 0 0 5911.7144 84.30824607 0 0 0 0 3704.34594 0 6907.338159 2702.982011 2647.41583 0 0 22438.35129 0 16950.04854 0 0 29184.96648 3897.371365 0 13074.42173 0 17586.26801 0 0 0 0 7666.097408 0 0 7674.409598 40023.16787 0 0 110.0499462 3024.904203 21393.64732 6196.708253 166.2614511 13069.28811 4205.541529 0 0 0 708.2841269 967.5211409 17744.22928 0 0 0 0 8561.387226 0 3959.452514 464.3928378 47062.21684 0 1202.316321 30013.80664 3326.135343 28485.97593 13880.86676 0.008055432185 9358.946519 1472.415425 1579.07846 0 3791.158406 952.5330489 0 0 0 21127.57973 0 0 0 51918.96156 254.6287102 6655.13363 0.1293102273 1875.843285 12941.03597 4221.985368 0 17498.60505 3163.714334 0 39866.41448 14135.71336 0 4029.040672 1389.295728 0 25.26459375 31461.03414 15226.68284 87.92577827 3105.49923 2617.796255 10549.2824 0 5812.777698 1872.248296 0 0 0 0 0 0 4661.773324 7829.964012 0 0 1023.832497 66903.74747 9780.860576 0 0 2741.36385 13427.72831 0 3077.990536 0 0 0 0 0 0 4149.347689 3707.692267 34175.49787 0 0 172.5198938 0 0 4268.501193 7568.889369 2801.177867 5606.034787 0 0 0 0 0 0 0 0 59.49739084 0 28402.43289 0 0 26698.46923 0 0 4452.770354 0 0 0 0 0 12234.57862 189.4661294 44727.65258 0 14199.59592 0 0 0 4031.251109 0 31302.32889 0 0 13312.61074 23483.97287 211.2705149 33.03962719 0 0 0 2109.29554 8748.429307 0 65773.16794 0 13437.07418 3138.648583 62385.22732 0 0 10792.30388 0 28508.41236 0 7216.520925 0 2236.760136 6204.946184 42565.43123 0 0 19461.37072 2.545924459e-05 27505.0447 96.29377294 2691.695039 4967.145434 0 1440.235132 +0 0 0 0 42675.44525 27.74661422 0 0 0 0 0 0 0 0 0 0 2767.167625 0 3274.490893 0 55537.8676 0 605.1178441 1380.21191 0 4297.869089 88.52179379 0 6708.48897 0 7537.91305 0 0 0 6771.96448 0 3079.739869 96.00203452 0 0 0 0 7991.620285 29039.94649 22319.64165 4485.933113 0 0 0 24664.13535 10004.55795 39811.80677 6119.77957 781.3109765 5.981443974 9520.229684 0 17422.07978 0 0 0 0 16543.08514 5323.871946 0 0 2228.789719 0 0 0 3449.587015 0 14612.64177 0 0 74.90079502 0 0 2103.420291 203.0090197 5602.501418 7903.086937 0 1074.719003 0 1505.755625 17281.97485 0 63196.38976 5115.194767 0 30897.3165 0 0 16248.9481 1751.842212 2626.060662 7323.358081 575.0475369 0 0 24168.24662 2494.85185 3062.862936 4225.743931 0 29942.96965 1276.567672 43.46890587 0 86.59070361 0 0 0.6035541222 11908.79985 45950.22208 1448.538361 395.1133176 0 0 0 29717.94853 5386.22853 1983.870263 11367.78257 12205.14319 239.2948722 0 0 7310.209199 0 0 4693.326567 0 0 4608.782553 0 12767.9629 0 21205.54324 94.19841113 5099.309054 21121.39367 34543.90673 0 0 55.16874597 0 0 0 59638.83771 2039.750346 18060.63138 4700.727398 0 881.5382927 0 9817.253088 0 2445.427383 0 0 0 6008.296462 0 0 9.832342393 0.0003126110551 0 0 1.302034284e-05 463.0872242 5120.397974 0 23414.26387 725.2606758 0 2097.650337 6456.042608 3923.779407 0 30816.10825 0 5678.310786 0 698.0041081 2959.663469 11513.91613 1785.825749 12986.97291 13464.89562 846.783955 0 46198.71303 37695.69614 218.3267164 0 4625.64455 0 282.3660645 0 26.04408784 0 0 0 0 10.31250546 287.6176626 2288.729106 20294.77049 59659.12476 0 0 0 0 0 0 588.2047093 71.05827373 0 9779.361106 60.71504591 14108.0697 19465.56176 109.404004 0 321.1017816 3407.256874 0 0 20834.15653 0 0 171.1865282 8761.039323 1796.557442 0 0 0 2302.698156 8851.96567 2030.594319 0 0 8295.003896 31845.20037 7878.298451 9676.684504 0 11813.4393 0 1835.009149 33275.66282 3842.702919 0 961.4418283 0 2374.754024 9599.417474 0 3885.710267 221.6821712 0 0 6992.515317 0 1568.419013 3078.83438 0 27.87946989 0 0 0 0 1699.507848 20078.41057 0 0 0 29541.2087 0 1663.338729 470.7657579 0.9937664958 18298.34938 0 14938.77737 4324.858246 0 0 0 2661.42977 0 0 39646.57566 227.6695213 0 0 0 815.5866903 +0 4646.458862 49.22495786 0 0 0 2232.962751 0 0 0 16974.48174 0 59.57612631 0 6518.453729 0 4239.006931 4822.220449 0 0 0 0 1156.757681 17643.83283 0 0 0 172.0602883 607.506172 0 6381.928141 0 0 0 48860.28981 0 2197.005903 26472.00848 6171.698325 0 0 0 1606.261118 5112.161806 0 24866.92007 0 1757.062328 0 0 15779.30917 0 4987.970159 0 0 155.593574 41324.67418 689.0981842 0 6566.885038 5925.843436 0 0 39182.74462 0 0 7119.416351 0 15165.13781 1533.271821 1489.32357 0 0 0 0 2861.784976 0 29662.24077 24562.00085 0 7084.933953 48171.32791 0 0 2313.169097 0 4870.857971 37707.2885 10293.52214 4111.408132 0 0 0 170.0805822 0 0 13832.27747 6813.735198 855.702272 2009.500724 627.0081136 1253.197146 0 0 1969.937421 44276.51392 0 88.25167058 148.3493924 1749.775305 0 0 0 839.4020292 795.9616275 23903.37221 0 0 0 0 8279.676923 1585.158369 48075.21562 401.3245508 60698.47898 0 0 0 0 0 0 0 9.3654775e-05 0 0 0 5952.949487 2558.029469 2844.383691 95.74224132 0 0 29726.25809 0 0 0 0 63420.97999 11982.64265 0 8043.016028 0 5841.82298 0 9.310683898e-16 0 0 1003.487844 1159.957181 0 0 63.32910128 0 0 7651.598594 0 0 563.1986312 7902.279163 0 3453.745825 0 0 18912.44235 0 13819.90251 0 18305.23366 27046.02355 0.0008472127704 0 233.1779734 120.2073963 2969.605436 244.9145171 0 54898.92116 0 115.4101666 0 0 0 0 0 0 0 3697.745133 0 2297.715842 0 1232.480442 2909.937198 0 0 0 619.0735941 257.8028826 0 2684.157824 0 6892.101578 1.499874961 0 56421.7982 0 51040.13157 29185.80803 0 10940.16705 288.4485274 0 233.3309007 15011.30941 3217.411173 7178.15705 1891.464136 2074.542761 0 0 0 3434.289245 2790.708969 0 27826.86928 6732.018441 0 51.18948565 0 75.31473311 0 6.792574322e-13 0 7253.304575 3459.629269 3395.108214 0 53297.47464 0 14470.09702 0 0 0 0 0 11588.73885 1703.518251 0 2476.717085 278.840809 2806.461662 10437.28337 0 0 1109.607194 4814.701148 0 0 0 6869.037644 0 0 0 0 0 0 0 945.5440349 0 0 19174.95532 143.4197311 0 0 0 0 254.5116788 5339.419762 17236.72988 152.5682344 0 0 0 0 0 49.40168 11352.05302 0 0 0 7366.263023 +0 4550.664159 0 0 98.80935472 34069.75131 6568.252473 2216.597365 0 0 0 0 0 4582.423052 15069.94808 5810.6553 6884.713374 0 0 331.4773747 0 0 17528.43052 4395.859494 0 2133.474153 0 0 0 0 34.34836597 8677.653371 258.4803955 0 1910.665314 0 54476.19649 0 32172.28894 0 7408.37612 0 0 2353.435925 0 0 0 14758.77039 18191.3966 0 0 0 24469.83937 416.5685765 7620.68261 0 0 6380.906999 0 0 0 262.3746082 2302.753204 0 21557.71792 0 102.9623931 0 0 0 47230.23516 0 0 9644.147912 35.1572028 2495.381457 9168.717629 0 13706.19995 6082.814756 0 0 4135.142081 0 0 1483.502786 9477.337833 0 34302.26218 10201.35382 0 0 14789.49234 9539.657161 18118.51749 277.3719306 0 7611.575822 1606.609565 0 13908.85491 9642.234366 0 14986.79876 0 595.4936317 21400.11369 15918.00349 0 0 0 3985.580156 0 0 2635.504164 15411.59384 0 107.3443447 0 10720.78733 0 0 23713.82693 0 8264.123443 3332.539445 0 0 0 1837.820615 26790.54637 39.35395644 0 30.21495082 1112.855585 0 1570.853896 0 410.8386925 4323.392238 40822.50907 4914.148217 7539.800256 20621.84382 0 0 8555.087111 318.9650937 278.5872191 1673.76868 0 2132.607485 321.2383717 0 3665.05197 0 0 7006.889501 14595.20952 64005.46447 0 0 465.9891812 0 5102.871924 0 19879.56656 290.4944549 4213.34281 57.19739704 9923.645536 0 27369.29467 0 0 0 5416.447473 23325.81551 395.2924861 18051.5279 6402.474189 28165.56001 49345.49562 1823.936591 2480.026324 0 34372.51513 11755.56843 0 11425.40767 0 0 0 19709.7073 0.0005087514066 15526.9389 15370.00215 280.9134853 28.75346862 7365.906409 0 0 0 23.53543734 35239.35085 0 394.707026 19115.29584 0 0 1991.301767 10727.37669 5205.54052 112.8203769 0 156.3745259 0 0 0 5497.298212 0 49.18542804 0 0 73.22779753 8296.218548 0 3333.175352 0 0 0 0 0 7791.298306 309.7008657 830.2118223 6279.274834 1837.339678 3198.568759 26.9138 0.1448746485 0 44356.09045 56774.96501 1943.825328 2987.223033 15996.29907 607.490094 33048.47608 2386.803026 8467.486951 0 7436.816817 0 44833.90489 238.5367348 6628.31833 40906.07031 15136.31339 0 0 0 0 0 0 8149.248856 31706.42389 0 0 6999.600557 20225.90064 4112.877536 2048.530998 1970.247595 7562.103233 3448.105142 4346.79314 0 174.1803288 0 55.71129509 0 0 0 0 0 5907.923527 20863.17857 0 0 11732.30364 12460.11085 51.22636893 4878.172838 6043.619916 0 10982.6452 11653.89147 0 0 +629.0277197 5164.087528 287.5666937 660.544036 0 0 0 0 29.28170875 0 7158.898109 0 680.1175319 0 0 333.1804315 4145.346489 17252.64453 5170.190373 3645.701538 31127.20492 0 0 0 0 0 0 3413.807196 0 8274.512469 0 0 0 0 0 0 12618.88964 0 22129.21209 494.5314823 0 0 0 0 0 13381.12545 0 4850.212524 8474.24264 51090.33765 0 11684.78934 30694.76442 0 0 1458.99534 0 0 143.0744923 91533.50745 3934.10278 22248.31726 0 0.1672546194 0 0 0 25259.91312 0 12574.72679 0 0 0 40285.0092 10184.57676 0 1395.702293 4672.243164 0 0 238.1420572 6001.969162 20969.24739 0 0 0 0 13884.03457 83192.42828 0 12686.46091 11308.66321 4707.03775 6630.67366 9548.912416 0 0 0 3883.09115 0 0 17602.07083 21148.89247 49507.25517 21232.50225 0 12440.61309 41184.74621 0 2550.927531 28787.84383 0 2737.440529 2273.063078 2843.867178 5500.79938 0 25942.72046 0 2814.523341 6065.046306 4478.453917 45117.89766 0 15267.37172 126.5592765 3094.191766 0 29830.81608 0 0 14501.92874 1976.26836 615.4491659 0 1952.738518 7981.763721 0 0 12.58856701 3059.072875 0 0 0 0 0 18874.89548 0 0 25285.3234 470.2493198 10438.17861 46341.83112 6590.014511 0 0 3444.03051 0 0 9902.949019 14886.03792 0 8759.917229 0 24597.91265 5256.823149 4109.039983 4303.245219 0 0 0 0 3614.340766 9201.484221 0 0 0 0 3402.343626 41.16547185 0 11041.70358 3310.419005 183.1760318 0 0 10419.327 0 0 1624.287279 5883.583114 136.7613195 2388.35652 0 0 217.3102678 0 0 1378.536732 68.85378599 3718.693418 10836.02177 0.03529518157 17317.27237 0 9322.12648 0 0 2120.504943 4389.269816 1866.979215 5224.987563 0 727.883022 3351.130505 10723.00427 6677.827397 857.9848246 82.58090537 0 7537.922345 78.62089868 371.161763 0 0 9043.921145 25123.66144 14066.26692 0 13983.47582 3798.485922 21800.09248 38474.8796 1455.77276 0 5584.076179 0 0 14742.83389 2980.349263 0 0 0 0 6866.183694 0 0 0 15128.99352 13558.41535 56.68640355 0 108.6679758 0 5871.089341 6067.460096 0 0 0 0 752.4754762 962.5379495 178.2884037 0 0 0 0 0 0 0 47.20895886 0 4124.213068 0 1765.748593 507.9489049 0 50825.14449 8698.432965 14973.53193 0 7888.538251 1517.931914 2034.809981 4133.606181 519.2326955 0 0 0 0 2128.799042 0 0 0 0 0 0 5869.893192 7.646344138e-05 1825.06134 +0 0 0 858.4759474 0 6127.203749 0 11132.30257 0 0 1950.46329 26624.33989 0 11343.7535 0 0 0 156.6863543 4564.613744 0 6165.729471 2220.732386 22576.64161 0 0 0 0 1029.60783 0 0 0 30305.86354 4479.150733 0 0 0 0 0 0 29524.25951 0 6285.202584 0 1451.28362 5432.136565 0 0 0 41306.95474 0 4538.18556 3887.142938 3891.263688 0 7737.806716 8593.052901 0 0 0 0 3782.438646 0 0 0 0 0 1822.543425 0 13971.55613 0 6975.544183 2872.128507 2210.14944 0 0 2497.647564 350.6526664 0 91010.5221 0 0 0 2621.225472 34666.66365 0 1752.929596 17971.3027 21776.41394 2593.445098 0 0 936.5999836 0 23709.25826 2041.456551 0 0 130.3579786 556.3075297 0 5660.919372 0 0 262.4953522 0 746.9639534 37563.16531 4101.618057 5268.995093 2680.992028 0 0 0 1519.451374 11668.16605 4516.330291 9207.119997 0 242.367865 44.26712765 35.2127391 0 0 0 0 334.1117616 2609.322765 0 1218.828929 0.06156599937 0 0 0 52.47755251 0 0 1805.453664 0 0 637.5042873 11885.72272 0 27349.90473 0 1662.087925 0 0 2352.987319 0 13671.33309 0 0 47930.7276 0 0 0 0 0 0 1621.064412 0 57776.97355 0 15289.62491 0 0 4551.631431 874.3644844 0 22034.03157 2605.16824 0 13172.28948 55695.13698 0 9538.669674 40049.54817 510.5025329 0 39.89725127 0 0 0 2265.899208 0 0 5663.290561 21038.66575 3616.106286 45004.33767 0 56839.84501 3356.799583 73213.47419 38.88341234 0 9886.58062 0 16708.73767 9182.664385 27431.17788 16714.97645 6536.543801 0 0 2633.177943 0 0 4870.511292 10237.43302 0 1713.355511 239.7179276 0 1154.624948 0 0 0 27850.3468 108.5290541 0 28101.68739 10036.39386 6399.534371 0 0 47272.85142 0 54377.69648 0 0 33990.84445 1753.981329 0 0 0 0 0 0 3175.758497 6036.69266 3312.233938 0 0 31316.16909 0 0 62221.25807 0 4006.198634 0 0 2500.507022 39542.08196 2991.261399 61.91998561 0 0 0 3844.552476 9748.752768 0 0 0 0 57.6847821 0 0 0 282.9642012 2802.579773 346.3510598 0 14708.84537 11346.17187 0 0 1208.499091 0 1765.078814 0 147.4695901 0 0 3583.962495 7395.486931 0 0 0 0 19805.23618 0 0 2996.071557 0 0 4485.529754 0 125.0609633 59296.82127 +31230.87371 0 0 0 21177.40454 92.38931338 0 4356.691347 0 0.05924620875 8301.115779 0 0 0 0 33669.50187 14635.875 18270.99085 570.432615 0 0 13259.66674 0 0 0 0 0 0 1891.785417 7142.120752 0 54898.20284 0 0 1568.717324 0 0 12441.62937 0 0 11.53448081 383.1943954 0 0 25551.58579 0 0 0 354.305756 2477.92339 61480.22408 0 0 0 720.5041402 45454.43872 0 0 0 0 4968.808314 18649.40864 2303.050091 0 13622.49727 1536.95735 0 0 28.50906727 24982.56096 157.4678246 156.5874618 20271.21644 0 0 565.3350538 0 0 1393.810075 0 0 0 0 0 6637.915549 0 1864.143485 0 0 0 0 0 0 4738.366107 0 22706.09685 19.40521412 44534.8455 9.493571069 62595.81601 0 19259.84997 0 0 348.3515927 10688.43628 51567.21813 7.325723583 18769.20796 96.23452631 63928.96814 0 0 37211.615 0 0 0 725.864806 52712.55773 0 0 30090.08029 0 0 0 0 0 14703.98994 10406.05901 0 17220.97799 53432.93831 0 8379.143514 78.5016209 459.2065961 0 4014.866867 1674.280321 3749.916944 2969.335831 3731.200006 13424.88253 0 0 5363.937306 1191.946768 0 1146.66097 0 3490.431183 0 1456.352072 0 352.3914514 22936.13482 0 0 919.497972 1027.125285 0 0 2136.470204 0 1535.62906 0 0 320.5626785 2280.288247 0 0 5012.594525 1958.680441 5181.995244 61.78545085 22735.04433 0 29777.78036 0 0 0 0 434.754575 13370.22286 0 0 0 2322.812498 2354.420793 13348.2644 1270.695621 0 11768.416 53741.91646 0 41.97353209 0 114.2144367 0 0 0 0 1989.203975 33078.02178 0 33681.17084 0 58270.2285 0 0 0 0 5213.616765 1787.451074 1533.495794 21950.08657 3031.845411 0 0 0 0 13508.60195 454.228556 31.03530435 0 1037.613994 2127.966616 1432.559573 3539.859725 23824.75849 0 50.84679393 0 23.20656013 0 0 0 0 7136.161868 0 235.6439786 18488.64967 9969.98356 0 53205.6603 0 0 30123.01174 1644.977696 0 9421.441998 0 38104.96529 0 0 0 0 4084.827283 5647.536061 0 311.3895979 10671.61637 0 11433.74652 0 9311.592527 0 39084.39634 0 0 225.4578757 0.001939922148 0 0 0 0 396.1696482 3809.748938 29113.13984 0 9515.38316 0 0 0 0 5313.31158 0 0 0 4242.916761 29168.58085 784.8118584 2768.796783 0 290.6487034 1754.446318 0 0 0 0 +1775.81417 7647.247826 0 366.1824709 0 0 0 3033.084389 0 0 0 0 0 0 0 47.39031567 0 0 0 0 0 0 0 12541.99098 0 0 0 0 0 44174.86464 0 0 0 0 983.3715096 11428.0867 0 0 0 0 0 0 0 0 0 52475.70312 0 94.69875164 4725.3194 0 72637.99532 0 0 18240.30454 0 2544.559926 0 2586.176814 0 7733.500544 0 0 0 237.0660667 15605.96295 1715.26568 8702.992137 4417.114992 248.4257838 1264.87498 9672.758578 6638.010263 0 0 499.3981192 1858.454631 0 182.517668 0 35074.78267 0 0 14298.22199 190.2379114 1995.938027 232.3071804 0 8170.300434 0 1151.556001 2596.052004 0 11270.89288 0 0 0 13928.36683 88.80056232 3909.961535 1275.955046 2266.733488 0 2026.523853 7744.026988 10597.57278 2314.996078 3136.738514 9068.562217 0 51801.55031 0 0 0 0 0 805.9107721 0 3461.50744 0 2900.426192 0 192.2837703 0 0 0 0 0 0 0 78203.76701 4662.754931 0 0 0 124.4368542 3652.823704 1722.885875 0 2917.027772 0 2645.484581 25593.61393 18683.65308 0 14316.48636 4639.302742 12557.5041 0 0 23393.85495 0 0 0 0 0 0 68.74755273 0 7300.399964 100.7208376 0 0 0 688.6649508 0 15332.33819 0 0 1481.729807 7.846426346 0 84.35587905 0 0 15321.41297 3125.137249 31267.33819 8228.591836 0 13461.02234 8205.35557 0 6161.027313 15275.20888 12305.92116 0 0 0 40015.25405 0 0 0 24434.10187 3781.802901 0 0 0 11775.13963 0 0 0 55958.25352 0 0 11682.98929 15688.97631 6220.723717 61958.71775 0.0003334244031 1453.881293 107.5921163 60301.76584 3916.542717 884.1609187 15355.47804 14020.93854 28809.20793 0 0 23794.40799 17538.75463 2033.648894 102.052935 0 2765.615147 6502.546143 11935.8789 5542.562917 2637.706849 29.0454612 4228.058094 15013.44249 0 7755.0647 0 37.0050529 20.04421717 38524.10276 0 0 0 0 5452.340272 0 3387.778539 0 0 19732.73663 0 27349.99025 0 0 2246.762979 185.0168194 0 1287.207271 0 1796.128692 0 0 0 0 2974.844126 593.8911332 0 0 0 6217.184532 0 0 0 2970.259896 0 0 0 0 647.5907327 0 0 4003.684599 0 53764.98512 0 59.83719322 0 4396.874809 0 0 0 0 0 5994.57333 2809.645867 44817.38026 257.6656872 0 35.33439273 256.8897306 8834.265598 0 +0 0 0 6017.505824 0 0 0 2517.400204 0 0 0 0 0 0 991.1919807 0 10710.7308 0 4010.598805 7832.761767 0 7266.676857 10330.74234 3913.842622 0 0 0 973.7611253 0 0 12438.55151 15066.94885 0 0 0 0 4.999349355 4239.443227 4235.728814 0 0 12507.43523 4429.025769 193.2473579 7523.438275 0 0 0 22645.86339 3544.662336 0 0 11580.71874 15119.28649 0 0 8518.735909 3840.38845 0 0 8245.610269 0 7181.689189 0 0 2372.891619 19704.29199 88.91641462 0 5775.233215 72.54119203 9172.246378 20540.02779 17052.63634 38944.03367 0 1768.378323 0 56.9296487 0 2446.124667 147.167092 12773.7801 12100.11501 0 0 0 10657.10919 0 1118.29644 908.3551691 0 40.88983799 2292.515782 0 0 0 0 0 61710.70405 0 0 0 50291.3035 5970.793411 2881.46446 0 1.006182799e-05 0 0 283.4466575 0 0 3047.008089 0 0 0.02164108911 0 0 0 0 15226.05564 13202.41957 0 0 9542.20917 0 11731.60401 9981.703291 1322.30622 0 0 23980.8278 0 38283.69387 0 1067.439725 0 0 0 65450.77948 0 0 3050.560172 0 3052.485353 5673.014634 822.6796652 9435.928581 1834.421898 1425.909917 0 0 57554.42772 308.8298624 0 65.58916989 1784.049293 0 721.5049215 0.6275482131 32745.62044 6444.95186 0 8711.415801 16538.17471 0 205.1759047 3127.622918 732.3421195 2071.600677 488.9541729 1571.098368 0 24151.86068 7878.237544 0 418.0911105 23025.02419 823.4263879 3809.197384 0 705.8967691 2251.757421 22561.35732 4324.291645 23674.64682 0 244.2003565 1371.078989 36379.99097 0 2587.20421 0 3736.539111 6463.132406 0 0 4585.056823 20580.37126 8072.097595 17071.35993 1008.100732 0 3350.62582 14345.22461 0 905.3450219 0 1581.149393 0 20970.67196 139.4026406 0 0 659.7782732 0 0 0 20611.02189 308.1635012 5143.663022 0 0 8191.087134 0 284.9213285 0 0 61438.65084 0 0 0 0 0 1997.465756 0 44859.54003 1818.056126 4583.080302 1595.600741 0 15626.49198 0 83.59309126 0 25295.58212 0 0 0 0 33563.06773 6745.929777 0 10801.71366 0 7599.857246 0 0 11266.92113 6065.881604 7584.276823 1231.301268 0 0 2507.922583 112.6866403 0 1539.836282 0 59.71947645 0 683.0566683 0 3040.501811 0.0006953316241 18526.16715 4143.20902 0 13823.02351 89.32417997 0 0 0 20721.31685 0 71196.67221 0 0 0 0 0 3259.717713 26716.79937 0 0 0 0 294.3049649 0 +0 0 0 4397.748163 0 0 14051.29268 10229.28323 0 0 10630.58883 0 0 1608.494805 0 0 24752.4498 0 5382.634951 0 1861.267196 45033.17305 0 7550.06341 0 17718.14457 0 0 31687.50157 0 33757.32551 0 0 2.161404357e-05 16901.51344 203.2032919 0 3344.797588 0 0 6959.08319 12119.5804 0 0 6880.907595 13799.89221 83.15575866 0 0 22.16754265 0 13973.39014 0 24599.83791 0 13001.19602 0 2.482007126e-14 0 0 12117.02567 0 1318.238154 55905.68978 15.38258674 20703.1734 1523.767376 0 72.93497205 0 3570.019504 0 0 0.03242832667 0 0 0 0 63.70165491 8105.093258 2452.262162 404.2413853 2082.656186 0 0 1591.201846 0 0 0 0 10978.29641 0 0 0 0 0 0 4996.325139 0 3905.546527 13204.57748 32370.66675 11388.8039 13600.31038 0 22753.59655 0 0 1130.507952 53869.58383 21903.07056 41394.09653 0 0 18856.15509 0 0 8444.185866 279.7752842 0 0 0 0 2708.743871 64.43920757 4113.347289 0 0 18558.78461 0 3398.788284 0 85.76121108 0 0.4095794662 0 18563.75622 55867.54 0 0 7399.783574 6912.152736 23.85663558 0 0 0 0 11347.08272 1619.102313 3737.625192 110.934617 0 24502.38311 42186.87047 78068.85209 230.5802362 9856.245827 0 368.3603136 0 703.0534757 0 52062.82139 0 25159.86949 3947.902709 34.53562957 0 134.8611364 0 13.95035841 0 1958.364032 0 0 0 0 21407.38588 0 16924.56653 0 0 3224.03476 0 0 0 0 0 0 1588.357094 18186.34867 0 2284.654604 2041.834471 0 0 25319.35711 12248.11502 32453.82265 768.9457442 9324.868599 61736.86835 0 0 0 9729.443852 435.0117852 0 17969.39864 9696.398173 0 0 0 61062.01314 4836.724817 16809.26062 0 0 52.28037207 3581.529321 2462.033492 0 0 0 0 0 0 72.02027021 1600.179179 0 101.6516167 0 0 0 91.42575024 21518.1707 1040.128791 0 14618.46244 26201.43547 0 165.9574825 0 2.042681781e-06 3711.751846 0 0 4263.441589 0 0 0 4854.239734 0 0 0 0 4611.339736 11914.9509 0 5887.178589 14632.93645 2.433043808 97.65262256 18017.97112 0 0 238.7016353 0 0 0 10893.51982 0 9368.84267 0 0 0 21245.67402 28888.64885 3739.593435 0 20628.14865 42290.40303 184.2786137 0 0 12572.75863 0 14322.30269 1247.579858 19124.82546 3884.730905 0 0.07896119775 0 0 10969.26578 0 0 24374.87908 425.1989629 +124.0636189 0 8438.326569 3030.445721 0 5996.859381 0 0 4540.916779 0 0 0 0 26138.54647 0 0 0 1216.362668 642.0046737 8954.504411 0 0 0 0 0 0 0 0 0 0 7659.54407 35189.65339 0 2628.361983 8361.010997 2117.981512 1294.223828 0 0 0 54615.05311 783.2854283 0 0 1076.030006 14237.4079 776.4592316 1773.853676 2104.245886 0 8514.990513 0 0 34823.8913 0 0 366.9160373 20931.26341 0 0 0 10454.86131 0 0 0 3263.549837 0 0 0 1846.579956 0 0 0 4406.518495 5856.445141 3781.663021 0 0 20398.57926 0 142.0641126 909.9388619 0 0 0 22302.1356 238.5834074 0 0 3947.951637 77.54402586 59197.63355 0 7568.376186 0 16028.98003 8180.440458 0 12361.46963 7908.432458 0 0 0 121.9521826 40867.61695 0 11892.75856 5228.872932 0 0 723.1505885 2581.268093 0 0 5997.625446 24294.11267 8950.355102 0 24407.64662 4401.269013 23581.49311 2377.18403 25285.3168 0 0 44974.27762 0 5164.113902 0 0 0 2334.66729 0 8229.641999 0 44507.41065 0 24876.9097 0 8209.665703 0 3437.939394 610.3626202 0 0 55351.70404 6602.497329 10197.22892 12544.62449 23272.03783 7975.462775 4040.730092 0 1885.093732 10952.85599 82.97522124 0 146.2340776 7951.238105 0 0 19051.07188 0 9656.432568 0 0 0 4012.37981 25389.51242 2375.696429 0 0 38004.91961 0 2453.257281 8086.717037 130.7209955 5096.542729 21825.8556 0 0 0 0 230.6554774 4582.506303 0 0 2476.290915 0 0 9361.991243 19428.4866 0 0 0 0 9194.344471 0 109.4597473 118.8585992 329.7586045 0 0 9067.556502 27739.81593 2343.699388 0 13839.17244 0 0 0 0 19084.37494 0 0 346.579719 0 0 3336.491189 11694.52518 13175.74557 0 6720.668072 6011.28802 0 0 0 0 2649.928677 0 0 9785.66525 264.6237901 13045.83856 0 14444.19311 0 16529.59445 45385.96195 2295.557956 1941.791681 2023.553223 114.0978444 0 0 0 1581.966125 0 0 519.1759247 73.08678688 0 0 0 0 0 1695.944301 0 0 3395.468006 0 0 3765.202684 5.663275093e-10 0 0 0 0 1304.012488 0 2701.56451 6033.564804 0 15399.63445 54120.53036 4526.095998 291.7674601 0 0 0 173.914519 0 0 2719.000299 30380.70951 0 0 0 5056.560177 0 0 0 12775.86139 50.48347934 0 0 4945.659571 81.49409856 0 1128.017213 +0 2868.444793 4206.093633 0 10319.80907 0 0 0 0 8193.259082 0 0 46.71152808 0 14560.06449 20833.43481 0 0 2930.063639 0 0 0 0 0 2192.115803 0 687.138303 28537.07526 0 6408.041323 5684.911414 0 2956.723752 0 6455.963762 0 4129.668757 0 0 0 2760.446988 0 25.21449432 14105.23118 0 0 0 0 0 0 0 5887.39313 0 148.4781728 72978.83346 0 0 0 6008.584942 0 5485.230416 37.21086632 0 7458.547436 4058.917375 4141.631287 0 11907.19042 30.04797237 1702.378842 15083.69078 0 20051.4999 0 4553.479886 0 0 0 0 612.3667328 61199.3493 0 0 0 0 3282.984997 55671.00824 2603.220654 6403.164859 2610.035071 0 5798.375311 0 0 127.9844169 3922.212992 0 0 10432.84277 0 398.842476 25599.75438 4133.96615 0 1066.269614 0 0 26168.42032 0 4043.421213 0 0 0 0 2183.355367 0 3.58146349e-09 17061.70948 3910.849293 0 0 0 0 0 0 0 2450.944556 36966.59671 0 0 7344.778511 0 0 0 0 23512.09275 2388.519412 0 0 0 0 0 6240.816787 0 0 18730.0009 10663.01922 0 5666.938565 0 0 0 241.1772258 24808.80126 3636.550687 1.266283594e-09 0 1.340121685e-07 34518.19818 0 0 0 5135.183013 44.88008192 0 6209.735001 212.3000594 25858.77349 0 0 104.6935358 11764.61397 3252.601709 14970.01156 0 0 0 9436.99152 0 0 17525.8372 10936.09999 0 0 268.6031198 1587.402051 5972.826242 0 0 60190.64027 1672.431093 3426.047023 39319.87094 102.6043642 2450.002178 31039.25122 0 3993.321419 0 0 0 19171.1656 334.1978898 0 0 0 0 28.41643449 0 0 0 14326.10928 0 18.48326773 0 0 0 7206.345921 0 3164.599855 792.8439549 0 762.4329473 122.7022116 0 29962.40222 0 18402.16111 51537.65142 0 0 0 10.242442 15734.09651 17459.86531 8519.712409 0 0 0 0 0 0 0 0 0 46506.51291 26610.67596 4826.124756 1060.200969 0 8691.253775 0 0 0 6380.7435 42236.77101 0 0 0 5513.912748 0 0 0 0 0 189.4955104 0 1571.838948 92.88589533 0 0 0 0 0 0 6463.553467 0 0.1007048469 0 0 22418.95197 0 0 0 12175.82 0 0 0 0 460.6729359 37569.39011 8838.401534 4450.690526 28698.49755 22990.29151 0 21294.89791 4417.857432 0 10136.93165 +6625.493775 2616.237992 2455.62561 0 0 0 0 0 0 69.40916952 0 0 13985.20056 3909.126112 0 0 1496.438227 23371.52427 0 1835.534794 0 0 0 0 0 2204.859775 0 3760.417607 0 5468.487866 0 0 0 0 38.81250667 0 0 2677.776228 0 0 0 220.0923939 0 80.18308902 15841.53637 5701.204983 4651.731797 2124.668941 0 0 1596.672051 0 45449.81269 0 121.7874445 0 0 179.2732064 0 43448.33627 4749.028256 3600.796421 0 43109.13634 38.79138016 0 2096.344416 19970.8878 948.6587098 7613.190048 0 0 3.667297444 7374.691982 0 0 0 0 39.10879256 0 0 0 14314.91928 0 0 0 0 0 9461.369151 0 2811.118993 2525.986402 629.2462402 6392.755775 33667.09448 0 0 0 94929.63988 1410.85301 87.80053944 65.85408588 324.2119396 0 0 37122.46309 0 8226.688487 0 0 0 0 0 0 0 304.4903146 21889.07804 212.1471431 68495.76354 2307.895403 1827.772719 3897.495515 3839.860198 0 8732.287521 0 660.8065747 0 10845.68362 505.5822467 0 116.8440866 41509.60436 0 3339.041048 0 475.508979 0 3799.196921 24721.89941 2031.67447 4483.89985 0 7762.903873 0 0 91.98532009 35532.96393 50087.42756 0 41393.24639 15872.67925 12698.38351 0 3.464984303e-12 1959.772649 1369.540063 5175.85029 0 0 0 0 0 4167.148094 318.9209096 2.565187012 12834.92374 4735.977605 1769.990931 3046.639739 0 0 15451.33125 0 0 71820.55212 5823.732491 11122.9681 0 1703.113557 0 0 0 0 17948.19373 0 85.67219142 0 2406.910072 1541.68508 35945.41498 32032.23217 7762.069555 4583.104933 203.1430662 5976.297843 26869.63097 2775.047184 0 0 0 0 5159.314707 0 0 2774.092933 2266.571765 0 0 0 0 0 38.21783193 0 0 0 25426.8929 1566.281425 0 0 0 0 3197.025222 0 449.3283737 30047.1496 0 0 0 0 19666.9059 0 0 50523.10171 134.5845189 0 31189.68665 0 6268.722405 0 0 0 21429.05771 0 0 29251.36599 0 25120.56877 4228.864204 4898.304358 0 5051.62338 0 10299.28452 0 5630.433708 0 0 0 0 560.9674632 12458.24211 0 0 668.397127 3140.17663 9111.976182 0 0 3446.471111 0 0 0 0 0 11956.08499 0 0 2156.446386 0 0 6301.745452 0 37085.82266 0 22893.22864 0 0 0 1179.289105 0 0 0 0 10880.61782 18780.96168 0 0 0 5219.657664 +23381.61471 1528.2877 0 20881.65121 0 0 0 7321.056779 6356.137872 17964.59751 0 2812.83965 4439.083814 23324.2221 0 2163.991163 0 321.0455376 0 6737.096225 0 0 0 3564.416613 8850.247494 1554.923153 0 3677.122618 0 0 50.88003599 0 0 0 0 0 0 0 0 570.5507006 46.30829906 5709.689889 0 0 0 0 0 0 0 0 10997.8136 2118.886633 0 38307.66272 0 0 0 90.35639831 0 0 0 8449.144464 0 121.0363134 0 17195.13282 0 2539.318432 0 276.6230979 2425.402894 7835.859993 0 1546.969918 0 0 2255.168477 0 0 80.20576518 0 535.5210184 20981.05485 0 20885.15761 21169.89599 3291.607495 3366.115879 2013.7685 47060.6036 4015.702233 4544.012079 0 12147.32596 6020.305938 10640.67946 9221.142718 355.3797876 514.1041371 11927.24689 15499.33228 9242.426493 1331.280387 0 0 0 0 6213.835274 2464.195897 36402.36957 409.7480038 0 31940.60205 12311.58781 0 26879.54607 50653.97985 0 0 0 5033.024285 667.3546414 0 0 28.25442492 3025.530485 17515.60322 1602.707355 33361.35179 10308.93286 0 70.2704552 0 3643.458094 27110.75787 0 0 2160.516835 50166.22503 3809.858684 54407.96029 0 4476.293578 0 30192.73329 0 810.2771839 0 2640.716618 7090.126219 2531.821994 0 0 3393.302776 0 0 0.1353478312 93.40841892 36.22301974 23223.00468 0 0 12031.61774 14574.91159 7652.486143 0 0 11769.20521 239.8553296 2830.666224 3446.537777 17448.74516 0 49346.67406 19472.31195 19343.5757 1696.793624 0 3273.729513 0 0 0 5089.792654 10265.55356 16766.60174 1474.531374 835.4710279 20558.43102 10803.1566 57903.95014 4688.904042 0 17057.17825 0 10149.28976 0 0 4811.546218 57999.25085 462.2255396 792.2905442 0 0 28538.82602 9665.215517 4554.891134 0 7306.014209 301.1556924 152.434428 31.01221552 0 348.642815 0 4774.84342 2184.412355 0 0 0 0 1386.932221 6689.847103 0 0 82.06226256 123.2339387 0 0 0 0 1496.163255 0 15919.02787 0 0 0 3358.017571 805.9646167 0 0 0 0 0 0 0 0 880.5383882 0 0 0 0 0 2927.526591 2091.899422 29987.78015 0 0 0 48136.29559 0 8124.413673 1647.351407 0.0009026912552 19551.35013 0 0 4853.795563 0 0 567.2479811 0 0 23966.0946 0 283.9155044 0 1034.765918 0 307.8183687 617.0843528 0 0 0 6011.716124 0 0 0 0 0 93.3352282 12311.74491 1905.146008 0 4433.867825 0 0 34.00823406 0 6.692719364e-15 0 +0 31109.2949 0 6039.349397 0 7916.011925 0 0 0 9642.321347 0 0 0 0 0 34770.02664 15447.35776 15636.81182 0 68.31155548 0 476.1533529 25.78331257 0 0 0 4381.581681 3809.187636 0 4184.976192 0 1523.553214 11810.0273 0 538.4769418 3879.621466 3572.367308 38995.09197 0 44485.3305 0 21108.34377 0 0 0 0 0 0 12016.599 9661.196733 0 0 193.1572683 0 0 0 0 0 0 0 0 0 0 0 0 2470.39266 1713.769618 0 0 511.6534638 0 0 0 141.8629036 17521.12329 0 0 0 21146.5013 0 2298.363026 0 0 0 0 20776.34363 0 7121.435045 0 0 18108.85829 0 3875.557134 8644.804203 0 16321.72262 5.052258443e-05 5181.128292 1890.061953 5463.280073 2582.604926 1278.320345 0 0 8205.683665 0 0 110.3148883 0 29897.27817 0 72479.47602 3768.089914 0 7249.658816 0 1538.92799 0 18037.67446 102.6531823 31371.60824 46131.21554 0 0 7241.725798 5035.339809 5335.353761 440.737464 3932.710587 13184.24878 0 0 0 2066.322185 0 42.23810075 0 18592.15908 138.651742 10158.15594 58036.96702 54432.20542 7692.80994 1520.365687 0 1463.316972 12292.70012 0 793.3792863 106.1596059 0 962.9953178 3368.46196 1479.83856 0 7866.856696 3420.119368 1428.175674 0 763.9999612 8619.463005 40.46365276 2328.779119 2711.5462 7223.785444 0 0 22991.13976 5613.310275 18395.12415 0 0 0 490.9221319 33660.17458 10675.87357 0 0 12925.59171 0 0 0 1730.432565 44.47168262 0 0 0 0 0 0 0 3059.46418 333.2003399 8516.39915 0 52.6280432 0 0 4054.361532 409.0728592 485.9847015 2056.995896 0 0 8431.295421 15610.99802 24404.70752 0 0 0 4720.141534 2521.991829 142.777274 0 0 0 1819.806889 0 0 248.0870126 223.398983 22245.651 0 0 2240.05209 22099.07118 0 0 0 78793.89532 5747.188143 0 0 10348.19145 0 0 0 64.30021088 0 0 0 9250.271558 7774.333242 0 19055.10044 10740.04883 0 349.6245613 122.9572729 0 11946.53772 0 4435.567407 0 0 0 7271.989276 0 573.8709515 0 0 0 4221.615487 11581.65042 0 12674.30546 0 39587.73363 0 3636.269147 12567.89913 0 0 28325.64372 22346.41396 38436.32859 0 29521.5688 11748.61297 0 0 0 0 0 0 0 0 3134.785674 0 0 0 0 15038.10493 0 2765.52951 0 0 6095.325517 0 113.3190002 +0 2481.372707 25092.56279 0 4028.91781 595.138031 344.5609804 0 0 0 0 0 0 0 0 0 0 0 825.2086107 0 55983.49458 185.4586091 0 0 1753.429222 1593.962358 0 0 0 4621.404509 24523.1403 0 0 14867.605 0 0 41927.72514 0 0 0 1835.854463 0 0 57990.56108 0 0 0 0 0 0 0 0 36.66761058 0 29921.58388 0 12139.99474 0 26731.2443 21682.56992 27278.47758 17540.11295 0 0 6110.011256 2076.235687 0 5804.339865 0 0 0 0 0 0 0 0 284.7651191 186.9741989 0 0 0 0 19737.20529 0 0 9449.080158 116.7629754 76.24135165 0 0 228.5271675 6135.409569 4951.811452 0 0 16809.11373 0 20131.36142 6108.264116 918.5889158 0 0 0 0 0 0 0 15961.18715 19282.32699 0 11407.88243 17383.28034 1136.504081 2653.415798 0 0 12556.48981 5618.126383 7134.887841 13378.44073 0 0 15378.61017 0 0 0 5266.725473 0 0 0 0 8516.121671 25878.99503 19955.50132 10174.15333 0 3.860510647e-17 0 0 0 0 13317.36327 0 25044.03554 0 2961.016148 0 43389.45514 1.989111146e-09 0 0 0 0 1841.814946 5501.989156 11459.52009 0 48407.00147 0 0 0 3628.316052 0 47385.49711 0 184.590307 1065.899177 0 0 224.5258264 0 25609.82524 56987.02572 56246.99561 5399.021144 0 47921.53144 0 0 4875.789731 0 0 1399.46494 0 0 1923.312934 1162.751551 0 44.57142253 55.91347845 0 0 0 399.3612334 0 6406.054509 0 0 0 377.6002829 3538.210912 0 21068.59247 23366.05164 0 12300.44739 12534.86602 6684.110818 10456.75081 0 0 11350.39347 0 49752.24005 0 0 0 176.4384174 0 10217.86179 0 24951.84028 0 8202.19594 9590.919648 0 0 0 5180.589093 32.62634898 0 21717.69478 0 3396.457643 0 0 0 0 25299.9047 0 0 0 0 0 1011.171061 0 0 753.4933881 0 0 0 3935.40341 0 53737.48899 93.6341086 178.2353956 0 67.92510145 11954.82575 5350.434836 3183.004955 0 1760.070308 468.2892317 13073.69532 2344.991793 1755.542426 0 0 0 0 1478.798049 36424.07829 185.8107748 0 0 8414.274341 5527.959022 1444.698574 0 11934.41537 0 168.6257308 0 618.5363788 0 54641.62919 512.4505337 304.7876795 0 0 3607.418686 0 0 0 0 0 0 0 0 +0 70.92201406 0 0 0 3474.554296 0 24089.41167 0.04978314236 5345.2909 0 0 1955.222308 16654.98736 0 0 0 22800.21373 0 0 10890.94014 0 201.4528945 26693.47166 11282.85458 3077.35378 6423.67451 2242.787188 3895.561785 0 0 17.49492378 0 0 30676.55715 0 1673.753528 0 104.8478837 0 49.45641638 0 77.0901125 0 0 0 7040.856983 8030.271479 0 1102.455234 0 0 0 0 0 23423.47764 17862.17699 0 0 239.294424 8443.252965 0 2267.580282 0 0 4103.517646 0 12595.29712 0 300.9866599 0 52375.20223 14099.90028 647.1549272 0 0 0 0 8358.277684 0 0 45879.78302 740.3651471 0 10733.53034 0 30.9325371 0 404.3897277 0 0 0 24095.7942 21218.18321 36542.06735 0 20257.7381 0 0 0 7812.852649 0 88.13268666 26521.14367 0 0 19675.7743 0 38666.18884 0 0 0 240.3780002 0 0 0 2535.077644 1485.298024 13343.80388 1582.380897 2021.681041 617.0116342 33.57505166 9232.697263 0 0 0 2635.417525 0 59107.04508 30732.7037 0 0 0 0 109.8384734 0 28522.94514 0 0 985.4963849 0 12071.54424 0 0 0 0 0 1492.163371 0 902.6616268 0 1657.064846 0 0 46639.05835 1906.642408 6448.257903 473.8316374 0 0 0 0 23.4381051 2466.151893 1502.993944 923.4437686 9217.282265 0 0 0 0 0 2481.587719 0 0 0 1905.252748 8615.218916 0 0 0 3726.622037 0 0 32323.09035 0 0 0 0 21334.57628 20474.37744 0 20899.17773 0 1975.568413 3007.384571 0 0 5477.515662 0 3562.854312 0 0 487.0929718 16254.22438 1895.405254 0 2445.058849 604.8719322 3726.786991 511.5951472 8152.044766 0 0 3250.105542 0 568.2739652 20985.25421 180.9040756 3020.406515 0 0 2379.827761 43500.21317 4276.586115 7765.552975 39571.33944 0 34522.72997 0 0 5649.577468 0 0 0 18129.86712 33147.38246 17542.93589 305.3404396 0.1157232176 0 0 272.654693 0 0 0 249.6791772 33958.30235 3276.338853 964.0234025 5530.647064 1942.267404 0 0 0 0 43.15778469 0 76.48469565 0 11726.31052 2543.811637 9751.421774 0 2403.078435 1103.78195 211.2661571 0 9272.729272 0 783.328091 1397.421405 0 0 0 11145.59398 0 0 209.4014914 0 0 0 0 408.1562555 2547.923202 0 1135.95471 6026.565525 2031.117968 0 890.9955569 0 0 0 0 44.34597657 0 26110.71592 18500.2436 +1388.096664 21293.63146 5189.055161 1239.507066 0 0 0 5857.441072 0 0 0 0 0 35326.91149 264.8239338 0 126.5451452 0 514.8395662 0 0 555.4957266 1722.079836 0 0 325.8096918 0 0 0 187.0761749 0 16079.7709 13234.37007 0 0 0 0 0 0 0 8411.01989 9315.783681 0 104.1155205 0 15211.09475 0 0 43269.19583 0 0 0 0 0 0 55543.19213 6493.324855 0 0 0 646.0193484 13021.85699 9739.5225 19921.42952 3947.085764 0 0 0 0 1498.37289 6696.402088 0.0002180670422 0 0 5208.048521 2495.23586 86.84656119 0 0 0 0 1.096372368 2728.815555 14296.46095 6087.900071 0 7064.275254 368.32699 8848.538986 0 0 0 3948.122314 45.69693458 0 21847.08679 0 0 281.6762043 0 0 0 9617.311805 7394.135366 0 5177.163968 0 0 0 0 0 0 0 631.3977818 1500.861809 4426.900176 22863.71659 2005.900325 0 475.7328786 0 0 3777.459955 6519.158625 0 0 0 19253.29135 0 0 2625.537571 3473.563011 0 2382.181698 29399.62752 0 23974.09346 0 12419.83412 52553.58935 2819.020079 162.2866264 93.40989156 0 0 2669.742912 5338.205773 0 867.8434126 10994.30218 0 852.0707973 7693.981298 0 2521.83593 0 801.169917 0 32289.53274 4.461275525 11741.82491 0 0 10106.01446 0 3077.112623 0 12393.82574 7690.198663 0 4134.492047 13110.2319 48.16623575 47.40229366 1968.204089 0 8380.54592 0 2342.306888 0 0 3777.798848 0 0 27621.39677 1870.200826 0 0 8562.736277 0 26595.70673 0 15097.03225 0 16700.00526 28684.03783 0 0 0 3726.716524 0 0 0 0 0 4052.728228 3024.78542 0 20374.06306 0 0 0 35854.79536 12667.89607 0 26036.29218 7105.940294 6857.877595 0 0 0 0 21584.49817 8587.864666 0 0 0 9907.447746 982.8136635 0 0 146.6673334 20341.02465 2346.757457 15824.03092 13843.68715 29118.8612 993.5309138 0 4123.424514 0 0 12891.62707 0 219.3915456 38685.19522 0 0 3325.991593 14227.64505 0 1044.128347 1.256955221 2011.704402 0 12987.95667 0 6311.181629 93.5916267 829.4814873 0 25829.34872 0 8254.159115 0 4691.242758 64.25719845 13975.59368 0 0 0 0 0 0 20769.87513 0 51.57706891 2628.975776 8102.660287 0 2994.579136 0 0 0 0 0 0 0 0 0 0 0 22308.23455 19464.37411 7441.320978 0 0 0 0 0 +0 0 143.6709908 7780.360225 5512.473559 0 0 0 1267.781749 0 27492.87937 0 984.4510392 0 0 0 126.7173003 3847.454709 166.8216585 0 0 53.2591176 0 7333.557932 1125.763864 32.3327455 0 0 58253.8939 6075.8373 76.69662405 769.145755 0 12119.40447 431.4036239 23747.7154 0 0 4465.517819 0 3339.975307 0 0 0 0 4511.584447 0 0 2165.902463 0 0 0 0 0 0 0 0 4312.265615 1231.177203 0 0 11414.79792 26168.81618 7440.596966 0 6703.393483 59.14759044 0 0 1611.904547 3857.353077 0 6759.979326 5144.148991 0 5670.288776 0 0 8207.040382 0 22562.26976 55842.6542 0 0 0 2438.424147 0 11094.44208 15895.31269 2143.170259 0 1533.475592 0 31150.02559 3239.024799 17187.84756 0 0 0 8365.357316 12554.53009 0 5298.316352 0 0 16639.89389 0 13239.32733 3750.01524 0 0 33764.2812 0 272.0983082 13896.04666 18872.8182 8461.604668 0 8244.59002 0 0 0 15601.1498 4164.362093 14184.94143 104.85576 0 3.164893003e-09 0 0 2698.138952 0 0 8671.926413 0 5.082225051e-09 0 0 0 855.0929998 12798.93523 21832.92418 0 0 3292.857334 25985.66309 11480.27031 7120.658763 3054.506267 0 2135.231935 7733.240138 0 2875.494476 9334.783056 3344.511691 0 3565.070196 0 0 65451.37303 0 2668.765986 0 32996.46512 4440.715987 0 0 0 2574.489125 5454.621067 173.0018166 0 0 0 0 366.7772779 889.0447004 0 37.38631233 0 89528.05413 3285.976933 0 0 0 0 13744.65544 0 700.5487673 0 1667.728817 0 327.1583091 192.3247564 0 0 0 17887.9406 0 9853.822118 9816.139788 0 0 0 0 0 0 3825.914988 9703.131032 10557.91455 0 10835.92923 54475.62317 1554.893288 0 6730.463636 0 468.5698791 0 0 38175.05104 5812.869435 5353.979475 7704.457661 0 6176.66082 0 0 6529.015905 0 0 0 0 19089.73144 1366.171987 0 0 13983.63626 6341.396888 3820.082763 0 332.7437681 0 5082.911836 0 0 35.92121261 801.4216304 24098.98881 0 0 27396.27786 0 2078.284577 80.87604842 1543.206321 673.2766263 42454.09043 0 0 0 0 1730.381677 29760.75301 0 0 0 0 56.79735659 62.64095893 0 1329.831318 4040.089856 1578.134832 0 21496.58141 0 17664.67827 37027.40804 223.434054 0 0 0 0 2215.237567 284.4189713 0 0 0 13806.5367 3237.269104 0 0 21575.97273 0 0 0 0 71.57266627 +# Errors [sample_PSD/image.dat] I_err: +0 23785.53006 0 0 0 115.3131925 17586.9705 0 0 0 1611.728347 0 2306.289121 748.381895 42117.99334 0 0 11125.30663 0 0 6952.341539 33394.4858 15596.74072 57406.92996 0 6816.21214 0 0 0 0 0 0 0 13475.89864 0 1511.94482 6290.169747 19845.24594 0 18627.03087 0 0 0 0 1634.497081 10692.65666 34.97150349 0 33.32737535 0 0 0 14836.45762 0 1867.244075 0 0 0 2534.716934 0 1752.741396 0 10050.97824 32097.30526 3012.366861 0 8216.336914 26795.6483 0 15224.18596 13645.21581 0 20464.74833 0 0 15598.50416 26230.67785 6608.620633 0 0 0 54047.63306 3835.172837 0 10828.60832 0 17032.29809 0 5501.450313 1036.216331 14988.42898 7829.28718 10.58517113 0 0 4321.324997 0 0 0 24865.61104 0 0 9515.631226 0 22117.16494 0 0 16204.04 0 0 0 0 0 0 17126.116 11752.65445 175.046822 40870.36432 2644.621315 0 21137.14749 5758.305256 0 4475.334951 0 0 6777.399984 0 45864.7338 1439.134351 0 9354.8672 0 3185.186467 2265.340437 13738.1109 15104.3159 5214.731494 9459.009479 0 62.50936998 0 36671.59761 0 15191.08398 379.5547785 3141.960158 0 21314.11555 35519.66096 0 0 1698.125379 6419.021648 8540.970185 0 0 64910.94809 0 0 6035.927825 6056.6927 0 0 0 8550.598541 0 0 0 7729.90734 138.7350069 10959.82282 1522.396765 0 126.8738846 0 14092.16229 0 0 0 14826.18361 0 0 0 7672.653533 0 46074.44764 0 4932.620729 4302.807742 45270.52822 0 118.8058623 1892.272793 0 178.6862225 60055.31053 20852.30026 0 9112.752942 5576.874625 8688.557142 3223.773214 6287.105221 0 4064.243135 33327.49479 0 50.54450002 6729.488009 239.4981389 2259.150991 0 6503.856353 7792.44003 28315.32243 3389.183783 2109.947836 7762.675836 1202.416447 0 0 0 0 1752.472752 0 197.0742622 0 0 4894.33902 0 8435.122403 0 5022.558922 3339.786566 4172.455715 0 243.9914881 0 0 213.8347254 17438.67079 0 0 8350.237611 0 15923.70113 0 0 0 60.16640825 0 10459.64414 0 0 0 0 0 0 4321.002621 0 3201.253107 0 0 3215.437035 0 0 201.6946324 0 0 2555.891718 11380.69157 0 0 182.9786714 0 0 655.3612173 0 0 0 0 0 0 0 0 0 0 0 2915.620662 0 0 2751.709909 0 21714.50384 0 7328.337023 0 53.81944018 0 +1768.891072 0 2155.116996 0 0 0 0 14551.35122 1454.473387 0 0 10721.61313 0 0 0 0 0 25368.63197 5738.717301 0 0 0 0 0 0 0 4457.521184 0 32294.68744 0 0 0 0 0 12965.759 0 5874.585953 0 208.375555 0 0 7453.60776 434.6374324 627.9925653 0 0 0 72648.42154 0 18844.26415 0 0 0 40972.64728 0 0 0 0 1209.465302 0 0 0 0 211.0534145 14340.23928 1847.903676 0 0 10792.28219 40.81697794 0 0 0 8633.271188 0 0 243.9287752 0 0 9282.073621 34.13582005 0 1573.302039 0 458.2862602 26065.87734 6648.025607 0 0 0 1159.055369 0 6096.019351 3524.934267 7377.240669 5980.424075 20902.30495 891.2037883 0 20857.08939 51836.74366 2762.443626 678.3644533 36.23393788 1094.917692 28888.20793 40403.80761 0 59782.64831 31.04352049 0 1434.140684 11407.8318 1565.879436 0 31160.4215 1238.119639 13655.11816 3387.098528 8174.003599 0 0 32482.74542 1517.217963 5896.477869 0 0 2790.615779 20006.0324 0 0 0 12990.50054 3698.703255 5138.004999 0 0 3719.5731 0 0 0 2219.461255 22145.93293 45151.88318 62.51849632 2612.795317 11244.6624 13280.74995 0 0 0 10106.4393 0 0 0 0 0 0 2754.772359 0 1761.446078 0 4192.476296 7621.499358 186.5629212 506.0134053 0 117.1089001 0 59.98580168 0 50807.29942 29130.03388 0 0 0 10129.36551 3509.991635 3726.769364 2643.456953 2567.633185 0 7372.748832 17901.77239 41881.50387 0 42382.92633 0 0 0 0 9887.049666 0 1307.29208 3766.950877 2678.57287 15160.91154 2447.301414 4708.497962 0 21325.2279 1386.61253 0 0 9272.069043 50390.02994 0 5035.172532 0 0 2841.23511 0 0 190.1854163 0 0 13950.57724 29602.18165 4080.179218 6997.362681 7398.627755 0 33564.84912 0 0 4617.940848 0 5144.378211 0 0 42971.41275 0 0 10621.91719 0 1549.820563 0 0 0 0 0 0 0 2906.269767 0 3891.418866 45295.52684 35723.91942 3439.74557 0 0 0 0 5677.637464 0.2613297947 0 718.1103649 0 12428.72894 3534.321344 0 0 2029.898313 0 0 0 2187.046628 0 0 0 36590.37247 0 0 7093.42271 0 0 5503.304288 38278.37834 0 148.563755 0 0 0 18099.96526 1397.271646 8846.13327 0 4639.396402 0 0 0 0 9585.33322 1691.504377 0 5249.269059 74.63008189 8571.698446 4.309480833 0 +203.9424592 0 0 0 0 8617.454033 0 0 0 0 0 22983.3742 0 0 0 5434.485175 0 0 0 1867.592618 11376.87642 98.97005905 0 84.6742222 0 0 0 0 0 736.0942647 0 0 0 0 0 103.9185213 0 0 0 24045.04941 10763.09901 0 416.2095447 0 0 0 0 17896.88039 0 0 0 0 0 20252.44355 616.2824748 0 0 406.1941133 0 388.3291868 9649.100771 5320.494631 0 14742.5663 0 3696.516828 82.22099544 8627.078455 5706.659153 0 971.7181804 0 0 0 0 1906.722868 0 3279.853317 6288.175276 23846.94907 0 0 58180.66697 1162.320269 0 0 15709.51213 0 0 4724.329266 2923.34462 0 14873.18589 0 12868.20271 0 1887.689613 14953.80806 0 0 0 0 0 28.70072956 0 0 4617.451008 37926.68687 7280.9632 0 12231.17643 0 8204.39653 40040.2263 0 0 65.72633038 14293.792 0 3048.338144 0 0 2729.017368 59095.29054 7693.529733 0 5044.454086 0 0 10868.09242 3417.22311 0 4666.25889 12880.65059 0 40768.68449 0 0 0 15786.48991 27932.06921 0 0 2.27467983 14127.48917 0 2578.230402 0 44065.37444 0 1.888905409 0 54109.59521 0 828.3780755 0 13661.10324 0 0 23148.40592 0 0 38537.28722 653.3000943 20140.21705 0 0 0 0 61839.3255 54207.17747 0 0 0 0 0 0 0 0 5713.676809 10473.18365 0 50816.94618 33373.06928 0 0 0 2618.443552 0 18202.22088 27853.38117 5399.482668 63.59799877 17515.27633 6958.762228 4759.444747 3439.211752 0 168.6067302 7219.12787 0 0 21361.66335 8669.541904 13194.81456 0 264.2910985 14613.90641 0 0 0 0 20150.28864 3295.559023 379.1220135 26543.75835 0 0 21984.86325 0 13546.94514 0 0 12752.75869 20355.93041 0 0 0 0 12540.14192 0 3171.966795 24999.59613 0 0 699.6923204 0 0 40067.97768 0 1749.61063 3848.85402 3496.278678 0 0 0 0 1415.615566 161.2949161 0 0 39583.93379 0 1099.249287 0 5.401324305 0 2673.141636 0 3220.79258 3233.461186 2171.24807 9127.640101 0 8590.094651 0 2897.048057 0 0 0 0 0 0 0 241.8777617 0.9770374268 0 260.6880891 0 0 9298.208018 0 13429.26573 0 0 13862.30178 0 7890.12573 8305.28004 0 7658.03151 0 0 80.02837928 0 5017.596686 0 0 0 236.5401694 +0 0 0 0 2047.186231 12240.7973 0 0 0 0 0 7189.369614 21022.2757 0 0 0 37.17235917 0 0 0 0 1844.750352 0 2248.243981 1030.678853 0 0 231.4474974 0 0 0 0 2022.665222 421.4416838 0 0 1333.690239 0 0 0 0 10866.48803 828.7232674 16525.14236 0 4380.171578 0 0 0 0 0 4586.136374 0 0 1569.175784 24.93243133 0 17587.51881 1974.459673 0 34224.06131 0 0 0 25898.29972 0 0 0 124.4769695 0 0 14132.67423 3956.400598 2607.440978 18646.98974 3343.626727 2.409478444 0 8385.281476 11246.49438 73435.59973 0 1724.302366 35071.80491 11932.52637 0 8590.277809 10782.36293 0 0 0 0 1636.083252 0 0 0 34471.60302 4767.642119 0 31242.97763 1463.519448 0 13673.53309 62894.48499 0 2408.845472 0 15848.57968 12939.34546 0 0 18122.15357 0 0 105.843006 0 0 10.72596862 0 1366.130199 0 998.3935716 0 19399.15923 0 1410.121841 14306.36915 0 9729.888794 0 0 23796.94702 0 9848.226449 226.7270111 0 8476.405855 377.8962819 5313.88293 0 0 8875.796621 1028.278422 253.3033262 21266.35419 4181.644329 7821.100034 0 2797.225903 219.2683714 3707.963334 0 0 0 0 0 0 0 10979.0118 0 17.67396012 0 0 0 0 4806.132483 0 0 1008.839489 125.0570897 0 75363.43661 0.001452095482 338.7620499 0 0 0 4156.046267 32777.54087 0 24156.1669 0 0 0 4034.311764 0 0 0 0 64641.47419 4302.098939 0 9306.112873 40727.97888 0 5155.982602 11196.11587 0 40349.11227 0 0 0 3942.934917 0 2068.405479 35159.22064 0 0 36432.77201 0 0 1646.226558 0 0 0 0 0 41.65846958 6241.250012 21562.13801 56629.86466 0 0 8617.180848 0 6925.936548 0 35122.93914 0 123.6775826 0 23905.56479 5549.262227 0 0 3544.21227 4958.433327 0 16111.14188 17067.44729 6127.900639 0 0 0 5261.936249 13252.85436 0 12018.39442 0 13166.63737 0 8288.138735 0 0 0 15589.78124 159.5345151 20141.56003 0 0 0 0.000660958841 387.5331631 1758.125547 0 25.77674558 1343.720628 50364.56069 0 1263.864504 0 7.597120391 72.18501254 1209.482671 0 0 0 0 0 0 0 12356.2092 0 0 366.6359759 0 0 0 0 10213.35748 0 0 2275.260939 7439.522754 141.3917081 142.0920414 18267.25001 0 0 0 +0 177.5913351 23.98104379 0 0 185.762806 0 2066.609452 0 0 0 3469.673609 4918.053956 0 0 2978.980138 0 7029.84405 42523.53286 0 0 20414.76734 7884.611658 0 0 0 4658.66536 0 0 0 0 4510.971061 0 0 0 0 0 39219.25406 0 3689.423904 0 5.670233286 15681.51182 0 0 0 2994.37146 0 0 0 821.7904701 18443.12232 52.3666393 0 0 0 0 0 0 0 0 6553.342612 193.3452917 0 0 0 3529.324173 0 0 0 942.4844026 0 0 0 3747.643136 0 84.36594713 19320.06973 24210.19475 0 7011.223149 0 0 0 0 0 0 0 0 3990.076602 0 919.05058 0 45206.55249 67.78003341 73.43875802 13244.75266 2038.618317 2598.263554 0 0 6834.769935 1338.27871 2656.022594 55.11982537 43161.15269 0 0 1386.283998 6643.135121 3025.16127 0 0.0004838497738 0 875.8435205 0 0 6728.833514 0 60280.65014 36458.27103 16643.84487 11023.74085 0 21927.10181 0 0 0 0 43255.12334 1581.089092 706.4488244 0 0 0 734.6313105 18519.75619 15867.55306 1415.663397 0 507.1458385 3953.134644 22103.81454 0 0 0 11662.11531 0 35076.22751 0 0 4982.007447 6473.226532 7571.993306 5578.368721 0 7941.724105 0 0 0 0 0 7449.228287 0 0 0 1027.478378 21418.23593 5498.015083 2974.746012 2971.965584 2372.239915 48975.00814 0 13364.81024 28.18612612 499.777135 52.81275467 0 34.57583789 0 7536.50369 20017.09876 0 19425.74527 20108.89635 0 0 631.0278505 0 0 0 0 22199.72163 267.1145241 0 0 10924.92844 0 69681.25048 0 8730.58902 2310.87038 11408.45182 0 4661.746515 74262.11869 16292.66429 118.8941951 0 3795.095666 971.7328806 13218.09043 3415.797502 0 58.41501418 0 8454.636303 0 0 0 8434.912252 0 24669.07909 0 0 0 11196.81739 33116.29057 6444.108145 24743.88131 853.5527496 23129.51296 0 0 0 7944.825157 0 0 0.2642310388 0 0 0 0 0 0 5219.016532 196.1356073 0 5036.27059 206.9647708 19598.0804 229.6355711 392.1502321 0 0 0 14252.44389 16096.15272 0 16632.51567 3146.813525 0 4406.551425 63247.11626 0 12406.50889 0 0 0 863.3209199 4040.85297 2816.753779 0 4083.289844 332.6411139 0 0 0 10465.19116 0 323.1698302 0 0 0 0 0 3283.517719 0 0 0 0 0 0 7957.330647 51586.63297 2671.010627 19251.90836 0 0 +0 0 0 0 0 0 0 0 0 9909.998715 0 2509.90967 0 1684.367109 40.31412077 132.2701638 0 0 13547.83801 8244.048181 2122.267971 7451.283434 0 50.28568515 0 5443.640146 8885.29994 0 0 0 0 0 15.39677437 0 0 0 0 0 39648.47086 3029.251166 5.79925873e-11 11251.65279 4480.709544 38.03709023 0 0 10838.23916 0 0 0 58873.97687 0 1.344604054 0 127.3967039 0 428.4749609 0 0 0 6869.565159 0 0 0 847.6043857 443.9873896 71.16168254 0 0 5533.097433 0 0 22512.36563 0 0 0 1615.048561 0 20336.89881 39725.45124 1627.911663 0 0 6480.614838 2091.850048 0 0 36325.89651 1554.56689 0 51212.87626 0 4075.303676 1291.705816 0 4230.612549 0 332.5569611 15486.92913 0 0 2826.788661 268.4662601 3.140056769e-05 0 2503.900586 848.7313777 7765.551897 23386.17504 11434.30316 10755.01109 0 13496.61288 9368.704855 14705.04049 0 0 5306.632433 0 7867.568629 0 3684.870757 15320.12831 0 7901.641654 808.0339325 118.7730027 4910.820906 96.00347481 0 0 0 2212.592773 4285.53968 80.92852347 11515.11374 887.6636374 901.510074 2329.366471 0 0 0 0 0 0 4777.849836 0 0 0 0 0 0 5285.586783 27.36162621 4772.230072 0 0 2449.849474 42341.07882 0 34726.61079 0 0 212.3436782 0 9483.347684 20348.89981 2257.963906 0 0 0 0 0 0 14192.83394 1226.317808 0.004065746183 754.8296851 0 0 30554.66934 2676.964012 0 0 9090.429108 333.5593148 0 0 7328.689623 0 0 5565.108598 5217.494151 59.60338226 13303.68094 0 2898.024924 1389.544242 0 0 54.99211482 0 0 4403.217422 0 2765.965957 4142.162755 0 12548.07866 0 7393.746799 0 0 0 8726.293498 0 8668.814596 1.285235554e-14 0 0 1055.842461 0 717.117269 4692.986871 2897.483683 1852.959664 4416.066728 0 0.05307093661 0 0 0 11267.54278 0 36609.30732 0 0 10261.93592 7291.88218 137.3015527 0 0 0 0 0 0 0 0 3470.630718 0 7115.764268 0 0 2193.916761 0 0 0 6.753984919 2145.028971 4826.714404 5027.330976 0 0 77.04953825 29469.97029 0 0 0 1531.345559 0 6812.44323 4657.798957 24842.20222 0 0 0 0 0 1106.831294 0 0 0 5103.553971 2208.026506 0 22987.61503 25456.11858 18583.1597 41.34497532 0 101.3397093 1.158716016e-05 0 2207.610178 0 0 0 0 0 371.3680583 +0 0 18472.76501 2153.99386 0 464.4576837 5654.760247 16733.06925 4198.250925 1997.120522 0 115.3135628 0 17730.77309 0 0 7696.333309 2862.491408 0 0 0 0 0 0 0 0 11657.041 4940.913104 36.61619286 97.10513986 8603.63876 5552.781509 0.4177707307 0 34132.17534 7558.195676 885.6785974 0 109.0793934 0 0 0 5016.319154 0 35484.86342 0 0 0 0 3901.287962 2305.856097 0 2770.506773 0 0 0 0 10991.78318 17517.32694 49.65349134 0 2974.630649 0 3237.154137 2211.098841 0 3030.520824 0 13328.90571 0 366.4706659 0 0 0 20606.7967 38423.00274 5903.119918 0 263.2676008 0 3072.3817 0 0 0 54.66539657 26013.20044 55761.19382 0 367.8551753 3334.748326 0 0 4927.869713 10.25060493 16759.5884 0 0 3989.60441 21002.04894 0 0 0 0 7862.458393 1803.929429 2502.089415 0 39560.30564 54532.05844 0.01223315912 1530.145086 0 1.301735696 0 0 0 1484.959287 1131.546626 0 2806.194897 27.95299672 0 0 0 0 0 0 0 2298.287885 0 0 25566.34275 0 9268.834448 0 0 0 1001.748643 22834.54902 0 0 0 0 3255.942865 0 5751.309202 0 3213.415123 56.26476106 0 1737.886554 6869.708027 271.0762835 1938.491858 0 0 754.6011352 37.72251679 0 0 0 0 31109.85586 0 0 14880.40094 212.0302977 9133.507685 0 0 16531.80525 38.88280474 0 0 4587.371075 0 105.7554551 0 27530.13709 0 0 545.3069895 232.1864626 0 0 4044.766312 0 11914.84273 23344.77915 11667.98984 0 0 2723.840221 0 247.9329013 0 0 0 0 0 6945.519701 2417.800262 0 0 0 796.0927914 3028.183038 0 0 7388.19753 0 604.4705531 0 46302.21517 0 24808.51131 0.3014679197 0 0 0 0 0 0 7184.030731 4867.077661 39.08305194 8795.571654 0 7741.828051 18231.52889 22591.51905 0 0 3240.658629 0 0 0 0 0 56.68029934 0 2228.819673 56.61170833 7800.716913 0 0 17737.68732 0 0 0 92.97266422 1647.169464 0 8826.227817 0 439.4771069 10586.12271 49.17021359 0 35056.30466 155.5390421 104.3344266 0 0 5341.33774 0 0 26362.93777 8418.275048 0 0 0 0 6090.819045 0 2720.797132 170.9322235 0 0 27.77641899 0 0 0 298.3185855 0 0 13489.94799 0 0 0 0 0 2991.744873 0 12756.00305 19489.89201 0 0 0 9426.477437 +0 0 0 0 188.2713513 12614.83979 0 0 1051.067228 38092.32531 43163.80004 0 0 0 0 0 152.8627701 0 0 11829.78385 1406.609082 0 0 0 52989.79973 21689.10336 0 0.08723908052 0 0 13540.63639 4128.798847 0 0 0 0 27309.74903 1384.378182 0 0 0 12241.66603 0 0 20140.23955 0 8021.911174 14745.57125 17970.0415 0 16081.62341 0 0 5350.687425 7960.193475 132.8291754 0 0 1540.944423 0 0 1276.176978 0 276.8579144 0 0 10901.42765 15486.99336 46074.92264 0 0.00761211925 0 16566.04913 0 0 27807.69622 810.4900559 0 0 0 0 5996.040518 2021.16009 0 10763.72602 61.44578202 16507.42495 1542.515558 1725.802136 6031.547167 11952.75244 0 17096.42283 0 47841.28575 0 3538.665428 0 0 0 5906.917466 3910.249392 0 6231.545945 6095.977197 267.6927173 5210.813084 36717.26563 23043.79988 1379.308158 0 0 0 6241.851228 0 0 0 0 0 0 0 12685.62006 36225.82952 65277.29392 15013.5799 31188.29514 3209.399152 2075.527454 0 14508.4224 0 132.233187 12901.87645 280.4021893 80.65945004 0 1552.756062 0 0 8238.632018 16030.31147 2959.325077 0 0 0 4303.302363 0 0 0 0 0 4630.952304 0 13144.97327 0 0 1549.268056 7948.848466 0 0 0 11432.44889 5.253241534 8105.691961 7505.12561 0 9556.355145 1966.687728 96.37220245 0 0 0 0 0 5861.870616 0 3835.858663 594.1885315 0 0 2256.168816 687.5841352 3304.407443 49589.13479 8620.31802 0 9547.537988 0 0 74.31255034 3120.698835 0 40303.83067 0 2318.285869 861.9425837 0 0 0 0 2594.736866 51261.03375 63671.86076 54.3698305 0 8985.101426 0 6498.211077 4467.773117 0 2617.938635 0 10366.60816 6945.893517 2623.971405 24676.31275 0 0 0 1528.923088 0 0 43.19212146 0 649.5967805 4588.438846 0 0 3669.029891 0 0 0 0 0 0 18951.11198 3886.645646 0 34480.31302 0 0 0 8.307666311e-08 3089.915593 0 2293.948763 0 0 0 0 159.5285176 0 0 0 0 0.2830780954 0 4286.877572 0 28.46370872 0 0 0 0 18100.87339 64327.16404 0 721.3651223 7426.628394 0 23411.95283 0 0 4286.047672 981.6373504 519.3176905 53324.69976 0 0 420.4677623 0 0 53.60253683 0 0 0 0 116.5915343 0 0 104.2839689 7865.51089 0 14489.09576 1119.993251 0 0.01394296833 0 0 13208.75212 +4083.894575 0 0 5091.076141 0 0 0 0 0 0 7327.556037 27403.81924 0 9935.365871 38475.51467 0 0 12263.2465 1580.582512 754.5790644 0 0 1.539319603e-06 634.0989895 542.682123 0 0 214.5866124 3401.714956 0 0 8632.272079 6775.387288 2425.443452 48369.69823 1313.65155 0 5282.455376 35.0753469 0 0 0 239.3249243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1552.557489 0 0 0 26285.31925 0 1823.958957 49933.91806 0 448.2826375 0 0 9348.193447 0 0 0 0 0 21512.01299 0 0 0 513.3118408 0 4275.543135 0 11662.52585 0 68564.37842 2429.077323 4503.580579 0 767.9923436 0 12539.72968 0 5090.426688 20296.81314 10162.25231 0 0 14702.89247 55781.29158 10930.72599 370.1315301 36209.63216 0 0 0 0 0 56853.29229 688.70299 15701.55493 7105.786766 1847.99866 2576.998359 9865.889999 44950.51491 14369.18548 0 0 1.333087988 139.7913131 0 0 0 1205.816038 36983.68225 0 0 7763.903317 10047.78497 0 0 1599.776562 96.18434238 0 48535.35944 0 43.64347268 24490.06687 36853.38227 0 0 3550.622902 57122.8748 2222.942255 0 1434.554927 0 11938.83682 456.1718979 0 0 261.2026974 0 1190.725343 0 12476.37547 0 115.7708505 0 0 1046.892925 24381.12441 5729.429424 150.3774256 0 0 28883.40201 21602.37642 0 11717.01988 0.06071696111 3559.947141 1435.388381 0 0 0 0 2442.656722 0 0 0 25.13162169 865.4721762 491.5172708 41342.35222 988.6261923 0.3525664739 48463.68609 7012.962997 33074.07391 0 3249.536998 3074.221916 7554.890517 4035.89448 1829.938586 11733.60896 0 0 6856.827913 1754.305408 22386.66211 0 0 3513.658968 0 51725.62821 0 1747.274874 0 0 0 34487.57864 55342.22922 0 0 0 12398.37851 0 0 0 2597.877095 6535.759442 926.0258638 824.2187966 51339.86829 0 0 0 5591.427946 20.12508873 0 132.6839913 0 0 8381.26343 1597.676151 0 78.72833733 6449.264054 4788.320061 4745.530857 2981.694765 3330.767381 0 0 0 31.06692772 0 0 0 1453.656215 0 0 6264.075133 12118.3402 0 0 0 0 0 0 48.95477182 0 7.504687773 270.4997765 26.95694868 203.743296 0 1723.52279 25018.68003 4457.064908 2306.059535 138.9278788 0 9856.298046 0 0 1160.668936 17237.16046 0 1368.041877 0 0 13903.51937 0 0 13507.65554 17040.02742 0 8353.516968 0 4510.232966 0 0 0 20122.21835 20.12675159 +926.5403897 18467.89138 0 0 0 4237.591906 0 0 0 9910.821743 5774.209875 86.078042 52165.90387 16296.43866 9595.475149 0 11839.93572 0 6989.751231 1.427327724e-05 0 0 0 0 0 0 16434.08004 13190.96242 42.57615616 0 0 0 0 0 0 15155.67678 0 48.70747593 531.2346034 4994.836043 10539.9647 0 0 0 0 6589.979652 58346.97074 5885.999917 0 17326.0346 0 0 3269.38784 2540.42461 0 8386.587208 0 0 0 0 375.7087289 1876.128345 0 0 62.61456782 2858.04364 0 0 1312.627927 0 0 5907.80924 4017.334376 52441.92648 263.8715573 0 0 0.01202818416 11666.40251 0 12326.33915 35184.47903 0 0 3974.356025 38569.62717 0 46.50464899 4218.902795 33769.59962 27937.85576 11471.4691 1510.1683 23714.01441 1118.720957 81.99885863 34310.83007 0 0 2725.996461 7540.253678 2983.672045 0 0 0 0 32825.27787 1354.615538 14.59188958 19642.24721 0 0 14028.68336 2441.064266 2153.985906 50386.50958 30087.92081 0 2564.952556 0 0 9739.983137 0 0 0 9817.297197 26388.97325 0 0 0 90.43928905 19508.94609 0 0 96.28756762 8793.713575 0 11197.92011 2.791955497e-05 1114.930579 24366.58378 0 0 0 0 0 0 2764.792662 238.3466372 3133.663978 3752.148921 0 0 41.03993705 0 1417.108607 0.001257009112 0 3595.0523 0 0 0 2212.260828 5265.549125 0 0 9247.891149 0 0 329.5044764 46806.10387 0 1395.590641 46190.39381 0 3125.887185 0 0 0 20650.76379 1993.519526 7771.281732 0 56543.86572 0 34800.21188 0 0 0 0 55465.5549 0 36404.45658 18665.31316 23411.25987 1274.568959 0 8577.513666 93.13731631 489.5755403 0 2086.975484 0 3873.990183 47191.23185 0 0 20827.23822 0 0 0 0 354.7504057 0 14900.59376 231.7333851 0 60740.68605 0 0 0 13605.44007 120.0940505 4706.716335 17695.82451 4552.898363 0 0 4034.100955 0 0 18572.06164 3471.467621 41300.01963 0 42165.76437 33.98153136 0 0 8619.886297 9840.666793 0 0 0 4532.134023 0 0 0 0 0 62234.56451 0 3.633746758 54040.74321 2896.01521 1921.973035 9022.027824 0 0 0 0 66.69278641 0 0 33111.15361 59.8639739 0 1671.828431 0 22946.28639 0 0 9188.798548 28804.75407 0 0 7760.913008 0 70.82224752 3812.727845 0 16280.65213 4828.232165 55088.0283 11177.93638 115.2864933 3.585697583 0 0 0 16252.02676 0 0 0 0 210.6570602 0 109.2950372 8993.855803 2126.961578 +0 0 12989.93252 7887.216836 0 0 2144.8357 12982.76886 0 0 44671.88921 0 105.0558241 15372.30383 0 791.9516549 807.7522741 0 0 0 0 311.0620902 3397.998024 0 372.6763114 0 0 42969.23629 0 1274.573998 3819.233149 43032.21637 0 0 38180.20681 8034.619021 66.70359743 138.8719797 0 8825.341736 24095.64375 0 0 0 18925.66312 260.3733497 1251.376539 7153.380148 9765.120643 1516.891656 4700.802848 9046.444429 1351.000803 0 0 0 0 6922.954844 12985.48945 0 43178.85549 0 0 760.8719817 0 2514.050661 0 26498.02421 0 0 0 10108.2953 0 450.1075701 0 2356.661154 12488.04933 0 0 0 4960.661904 0 2890.948539 0 5.14246318 8401.12003 0 0 144.827723 0 0 0 25982.07819 87.27535965 895.4918301 21029.23575 0 0 393.0348702 0 0 0 18.9946891 56102.41141 0 0 10141.99034 51657.49757 0 8795.265293 19575.89992 0 1636.349748 0 0 0 14385.12358 23713.45735 0 0 0 0 0 0 0 0 7556.067909 0 0 0 5771.854322 11601.9744 31387.50855 0 0 0 581.0084323 269.9155479 4368.210047 1660.079125 0 4531.778242 3441.465531 10050.79123 4031.103387 378.6114814 21599.58704 0 0 0 7172.976121 4595.582452 1146.696281 0 75.6220078 181.5413625 25059.08377 3546.877707 4027.427116 0 0 4955.923301 76.97037569 0 0 38417.15216 0 0 2560.495005 0 0 3479.572642 0 0 68.12330615 1540.205488 5918.500706 5673.340685 0 0 51966.94815 0.1989133686 296.877532 14488.63909 26.12639718 2563.480814 637.2405174 1715.694475 0 0 0 0 25502.161 0 5015.412569 18455.06691 0 0 0 5.108371745 0 0 0 2119.20772 6216.906911 0 0 0 0 0 18287.20797 0 2927.990065 0 0 810.7313895 5816.93006 0 7385.654504 0 23078.86125 51613.91402 0 0 20959.8903 0 56431.34604 9475.171957 0 5043.255651 0 0 0 0 0 0 0 0 0 0 3622.408245 117.5186101 3340.070022 1505.847252 5647.966369 0 638.671974 0 0 0 0 0 0 0 0 0 8469.001822 106.9855469 2849.585897 0 0 0 5413.098444 0 13322.46204 0 0 0 0 8906.350928 0 0 31653.53773 0 2889.692755 0 0 0 0 0 0 8855.383988 0 7111.34737 0 0 0 1269.091826 0 0 0 0 0 0.2356919599 0 7358.63321 0 1757.280631 9.300474105 229.9526007 +6593.600804 0 0 0 6976.433034 29880.43991 1447.135616 0 7750.37818 6384.747742 1668.86426 0 0 9107.434885 6342.313251 0 0 0 2744.841618 0 0 0 49209.42882 0 1295.084974 0 0 0 44528.25216 0 7180.445883 0 5761.573339 0 0 0 0 0 0 16773.45749 2065.808308 19883.42506 0 30893.19698 8542.733512 1776.007912 0 28.4155156 0 349.6990127 0 1072.729116 13631.33942 0 2012.210732 0 8049.635454 2994.303628 0 19676.48831 187.0117784 0 2234.773015 0 0 0 55018.9524 6027.405739 0 6006.180703 35870.56231 3658.208774 0 21259.62371 0 22.79971861 0 0 12707.02931 0 9863.269885 4249.918003 346.4343748 4163.066857 7193.094923 0 0 0 2.627145875 27.61940848 59987.36834 6.294187515e-14 186.2296707 8482.448694 482.153394 0 0 37650.83617 11014.86768 9211.534698 8698.160374 12766.71571 0 7454.467047 0 36215.04331 27074.24474 0 0 327.5770089 0 0 0 23068.97709 0 10069.20191 15917.30749 0.003829525591 48980.399 0 21441.31563 15291.38054 1509.371323 28626.11167 17532.28126 3534.392178 41148.959 7472.386716 0 0 0 0 15816.43976 0 3169.603876 0 3254.690675 2471.639503 10354.81875 5.523381461e-07 0 57739.44293 0 19655.01301 0 0 4130.385186 0 5647.573422 881.2737354 0 39075.7479 213.5701468 8682.428429 0 1967.555528 10789.14003 41.21871012 899.420037 2774.836268 0 9254.379574 655.6631512 9279.455957 11055.65674 0 185.4741005 32637.93913 98.84709929 0 1830.099017 0 7849.08285 0 0 29644.97578 11825.12661 0 0 0 0 0 0 0 0 54330.44845 35440.36758 0 19899.05032 0 0 14141.25942 3399.519718 0 5716.441011 426.4241702 9989.551859 0 0 68457.02528 0 0 4018.9159 0 0 0 0 0 0 0 35201.52836 8755.544536 0 0 4273.036467 0 0 3663.159017 0 0 9176.685306 0 8456.420238 0 2336.057142 145.7838434 0 1828.48013 0 0 0 8971.756714 29940.0669 18952.06829 0 0 975.947785 3185.189236 0 36484.96956 9147.952217 2460.045573 0 981.1849631 0 4396.305742 0 0 0 0 0 11602.46906 0 3239.785352 3217.329913 0 36715.9697 0 0 0 416.2577435 2703.878305 0 0 0 0 0 0 2616.76326 3442.758074 80.73027644 351.7214859 9102.970463 4183.841543 0 4233.914063 18237.07587 0 0 0 0 0 0 0 0 23589.86531 14513.67535 124.6074893 0.00011473922 4814.391506 0 418.4531207 25101.3473 43750.37584 0 1057.749202 1965.373272 38326.99439 7951.584528 0 +9682.95541 893.8979958 0 0 0 0 113.1903328 0 2150.963848 20372.99857 0 4598.334206 3113.393779 0 0 142.534424 0 0 0 0 11779.89545 2510.434045 50806.0438 0 0 0 0 9904.954423 0 0 0 0 2055.039862 0 0 0 26720.86261 18810.99009 4116.881086 0 1084.757666 0 1573.356672 6346.206088 15543.24643 1426.420125 0 6231.956353 0 1359.250785 0 0 0 28280.42596 0 0 0 19598.81759 742.8690071 1833.279275 21860.92612 3668.271016 2308.673312 0 0 1656.292675 17825.17109 0 11135.87086 5999.099018 0 0 6548.568766 2211.774938 4016.631546 9219.618924 6130.981166 0 135.9888768 0 4461.446787 30509.06197 5.029806895e-11 167.9714017 0 2458.033523 0 0 0 0 0 0 0 34743.72493 4817.166353 0 0 46949.86791 55351.33725 64482.75938 0 0 0 0 0 2351.187374 0 16279.5412 0 0 21103.17263 56.67295574 8864.921818 663.0415526 0 0 18565.2281 720.8236642 924.5333924 0 0 0 4488.499436 28335.03383 0 0 0 3947.715391 164.5128337 0 0 3514.223734 233.2298612 0 432.0381751 0 124.9421739 7165.081317 0 6453.750986 4112.201998 4411.82436 310.7312685 0 1635.567754 1987.57928 0 4351.245212 0 0 0 14971.54391 793.8736963 0 4495.94694 0 0 0 0 2480.57343 24856.70499 14332.05309 33416.23758 20066.45126 0 0 30654.22644 9576.211194 175.5753242 7882.026791 0 7806.131192 7315.685675 20313.68931 20402.66131 12606.71004 22428.0023 4825.518073 0 161.3894891 1703.942563 0 0 0 5315.22103 4577.679199 16944.5603 0 7378.321617 2053.33422 3077.304008 0 340.1489538 2783.578677 2162.042596 0 2239.067361 6202.044089 0 0 0 2680.727477 5196.154531 0 32110.13693 0 178.4753956 1119.014374 19072.87857 1978.644053 0 3077.225147 20565.90135 27.60738894 0 0 10380.45434 4870.732456 29642.57859 0 0 20494.39631 0 0 820.3823856 258.1091707 149.5978233 0 56.33204348 0 2703.059743 0 0 0 7886.312225 0 0 22126.93201 0 0 0 3.725609464e-05 86.83569595 23075.59052 2210.861845 480.4980497 1991.869691 6713.940183 7941.132375 0 1382.593833 1516.301451 0 408.8247938 0 0 16775.40317 0 241.8344602 0 0 206.3406081 3378.400761 0 7742.35806 7507.627214 0 28923.24244 0 0 0 27434.13708 0 1286.039862 0 0 0 1104.974674 199.3994819 10913.62623 0 9794.016091 5348.026374 25182.63345 6226.907706 0 0 0 278.7238681 3022.862682 0 10214.12889 0 0 6664.941411 0 730.0431513 348.5452985 62059.52866 31913.29053 +0 0 5424.855637 0 3662.898595 72271.71657 0 0 0 0 0 0 0 7935.387455 0 0 0 8970.895676 25.74074189 17374.12416 0 0 15366.27268 25.26653227 2631.528389 43391.4454 12155.58409 0 0 25378.0931 0 0 12224.84646 0 0 15360.08809 4330.893758 130.1526447 2731.408197 0 34760.08691 693.8882795 0 0 2346.669636 0 0 126.2541389 120.5417577 32972.36331 76.13991149 3522.882246 0 33780.01302 0 4046.842738 5619.286042 0 0 0 0 16473.63858 0 0 17219.78299 0 0 0 0 13286.04392 546.5777169 2056.791918 14691.08241 0 4681.428871 29931.28869 26098.99432 0 3351.988679 0 20197.36199 10518.17337 0 12320.76834 0 0 1922.375022 19135.10301 7.032384175e-17 8205.290446 0 0 0 19430.11428 1724.656203 0 341.0906703 0.09845695759 11045.7118 21770.56097 0 801.2043655 5683.630911 0 0 6294.183163 1925.976316 0 0 1232.759555 0 40542.32355 7086.049336 0 0 12009.11303 39803.31358 6739.382385 0 16428.31841 0 0 1759.350908 5622.506345 42.22252858 0 21058.72367 7399.097646 0 189.9676072 446.1760345 0 0 8925.680578 5083.134354 183.8563577 0 1576.903669 46111.77115 10242.66455 0 5772.248418 0 6044.513821 5016.245151 15163.64308 2302.34501 402.122372 1579.108223 2016.844428 1010.915735 0 0 5491.975611 5675.227886 2753.138236 0 6806.007793 18434.82973 4587.039282 14978.32339 44301.24903 3736.556474 4032.646192 20544.03721 4165.561239 5702.159663 4074.149828 5858.527031 5.091243297 0 0 25894.57804 26443.82604 0 0 541.45941 0 0 239.8191873 5328.923847 3942.081703 0 63.7255684 0 0 0 40.14505688 67.13223005 0 5308.993268 65987.30391 21.13247496 0 0 7654.169847 0 0 0 868.5670568 0 23086.30042 0 4882.304123 2143.253251 18534.51803 0 0 32.96624698 24992.62267 15200.76274 102.7538882 105.4286378 0 1244.729683 0 3373.097351 2778.384381 9794.073363 0 0 2330.587323 12996.08369 12155.64912 22883.27542 43589.58457 0 0 0 0 0 13695.22805 0 0 5.16518755 14893.92561 0 0 0 0 0 0 0 0 30791.15339 48881.44905 0 4801.170417 11.1315061 0 0 0 0 0 1819.116167 17720.59619 0 0 2038.147062 0 0 0 38.09801751 2931.076579 0 1323.731014 0 0 0 0 0 0 36.76517875 9792.816457 0 3610.637115 0 12913.54507 0 12110.27613 0 0 0 5445.101142 0 0 37917.59172 29883.65298 20142.6052 18062.71409 357.207036 1724.478823 23821.77738 0 29658.52964 0 893.2777401 33561.62943 0 0 +9486.808707 0 0 0 0 2109.43042 0 0 52.57247284 0 0 1034.999463 37907.1319 22035.25414 47397.54864 11126.7338 1236.189394 0 0 5504.900335 0 5312.570429 0 8687.812048 7709.700586 0 0 0 0 0 0 11859.48119 0 0 0 0 0 179.5793755 20058.09282 0 0 24547.69027 0 68846.19367 0 4126.80678 3901.622486 0 35462.2399 17604.52632 5706.888049 0 13583.25435 0 325.1238453 676.2911093 0 2995.933687 18417.86151 0 1515.117732 0 0 0 0 14254.36022 0 178.0164173 7328.655507 0 4.332301848 0 0 4736.770912 20019.27519 0 15941.04578 0 4366.464528 6044.108324 26410.66499 0 0 22734.22618 0 8603.60369 0 118.1336611 0 3149.70403 0 0 5851.129053 1423.174539 0 0 3515.420207 0 0 0 0 0 0 0 0 0 18508.31969 0 26269.4998 1575.249272 2395.505763 17436.29434 2357.277672 0 219.7167582 0 30785.98282 164.3989081 4568.041695 0 2261.609331 0 23939.48455 0 7834.194626 5683.7624 23129.71345 21317.73863 5795.561996 2300.265501 14784.87738 1676.754734 0 0 0 788.4446567 13878.87255 8429.927867 27244.07364 2546.993537 366.4192656 46215.88733 0 30516.06832 0 0 8950.776401 0 0 0 4605.984578 0 26580.93372 1570.748341 1111.043729 0 0 18802.41605 0 0 22997.60675 754.1667791 36.17063442 2231.654125 6353.807317 0 0 0 50479.23439 1178.82953 117.0609431 0 0 0 0 1796.019067 31.54964725 9891.87052 0 0 0 0 1330.485425 3755.222963 0 2578.633301 0 8486.996123 0 3605.121553 248.3265427 0 20138.87575 53584.18837 1590.194602 0 8417.278156 0 0 3680.596535 27113.27262 0 0 1605.967676 0 18453.85525 3678.075546 1447.642752 2897.638177 0 0 17639.83699 0 0 0 27298.20209 2538.785177 4855.309192 0 0 56163.19174 1998.835599 3101.625998 421.626166 11327.70435 0 0 4594.044992 21000.82595 0 2624.19265 218.5067297 0 0 0 0 0 609.3881337 0 2452.959223 245.6392442 4924.278157 2419.037767 0 11928.24899 0 0 10243.96324 2850.478408 12.07438119 30.82146863 0 84.54454223 3003.511795 0 3629.058017 7150.763682 29213.19542 0 0 546.3348586 0 9348.93505 0 268.3695816 0 516.809451 0 0 0 0 10416.7664 235.1746466 0 4557.503515 352.4934171 0 16641.89436 14630.8209 0 0 3813.036999 0 14042.89187 50993.03349 0 0 588.9972967 36193.74832 0 0 652.6446166 41.90673437 0 0 20324.37826 0 0 328.7691192 0 +3840.686782 0 0 8686.329247 0 0 0 0 5594.102865 3872.849341 9323.729688 0 469.9619153 912.9285305 185.334204 2729.372157 0 0 58.79486876 0 0 0 0 2686.394488 0 0 0 0 0 0 0 0 24435.29009 0 0 0 0 2137.841542 54.45218344 476.637362 37223.46122 32839.8489 0 8819.637777 0 16711.86318 3703.955088 0 0.6070507796 1548.082741 3204.315428 5785.77281 0 3981.531807 0 0 6943.975674 6766.194103 0 58.60567147 0 10862.27199 1224.896252 0 111.5492788 22029.77457 0 0 0 0 23592.27256 20015.20945 0 1665.723625 7887.888135 0 5181.000833 0 30.57934104 0 0 568.1866804 989.4870362 15726.13083 21964.97741 40673.34343 0 0 28627.15917 15382.88947 31.8503487 23512.15036 1963.959654 4334.475684 18511.84204 21565.37124 0 176.1855773 0 0 0 20059.63255 0 0 23224.63328 4529.072139 12783.98721 21.37907982 48255.18488 0 0 4606.917663 23474.44048 38.27328586 51.0618135 0 0 0 0 0 37428.83998 2396.239992 0 0 117.9065282 41252.23923 2523.208512 65.26169394 6348.051851 6467.390578 3906.339643 0 0 0 47627.34016 161.9388244 0 21025.39252 0 72427.00952 0 3128.334475 0 0 0 0 5297.917302 157.1316982 2310.611936 0 0 0 41995.21463 38276.02154 8976.140114 1747.612886 0 0 0 17589.54286 1.72575221e-13 24.33042942 63079.35981 0 0 9421.36832 3275.003375 10816.32911 0 10593.59187 0 17334.68871 0 0 45848.99186 0 57643.32134 0 1062.682484 1977.17483 9329.388646 33971.69356 0 0 6040.946796 101.2180781 0 0 0 0 0 29649.14667 123.7261285 0 0 5022.993876 0 0 13639.34313 0 16759.62776 4090.291277 0 0 11094.82135 118.3501528 4387.958268 6495.531702 36199.33245 0 11715.39634 0 6200.564394 0 44.30285817 0 0 34283.52713 4336.869897 0 60457.31894 1824.756687 2583.899855 0 4114.175099 17092.15596 10482.09542 0 2126.615358 0 27.83890392 8289.278484 28470.0302 3671.484304 0 0 0 0 0 27820.79095 6603.847875 0 0 0 2180.047771 67.41733538 22384.9564 0 7514.330147 16622.54343 19734.66553 618.461536 49523.08955 0 1457.407392 0 0 3709.656547 43094.07358 0 0 0 4619.065985 1411.240281 2732.350643 0 0 0 24138.23629 6763.1122 0 14368.19653 0 0 14654.26004 3992.72522 0 1145.030124 3365.990254 10957.52929 0 0 298.5238062 0 0 8091.233215 0 0 0 47633.31483 0 14.4894988 0 1715.613305 5896.718526 1346.828314 0 5909.738213 2630.663214 0 +7100.819098 0 0 0 63474.31199 0 0 28740.46608 224.9774532 0 0 1569.926735 44134.68435 0 0 1955.020146 0 0 0 0 0 247.6072128 24192.65518 4281.532525 240.3583924 29159.32417 0 0 29763.00451 10557.45368 5494.827958 1770.463287 0 0 11571.13582 17286.05892 1958.157081 0 0 1809.212619 46948.4733 29438.51429 19417.40375 30266.63061 0 0 1452.775361 3316.829239 31836.49896 28299.11506 13363.92119 2335.110657 9983.943673 0 0 0 1784.854841 57.53575011 0 0 0 4149.869882 1028.606464 14765.32 3084.159772 1204.550327 1546.238341 2337.320489 9893.384045 0 0 0 0 0 891.8792622 2507.126313 2841.710071 32.89096848 0 3876.871512 10059.94183 3797.207316 0 7.833219938 2419.894832 32.45714425 3213.465528 49927.72618 2407.273909 36.33555013 0 0 0 35737.71552 3000.669429 1919.429679 1556.196497 2531.87284 0 0 0 65.35503226 1181.756949 13472.61936 0 4322.987673 0 5414.936748 0 0 0 1254.868905 0 17512.98511 49.25667545 768.9299891 64.58819152 0 30472.88843 0 959.5349916 17889.52058 0 0 63883.6771 37074.08858 4416.066812 0 0 0 0 14962.71554 719.398095 0 268.4767208 2195.002703 1057.604749 0 0 0 0 890.8918531 0 0 13213.58914 28099.34473 6485.689135 0 0 0 6468.350149 0 205.2655079 28028.07804 0 0 6428.641824 0 7024.109017 0 3403.998334 3648.402116 0 266.1545422 0 1118.333264 1594.905487 0 3687.302541 0 2941.047942 0 6491.076038 0 25940.15305 45845.68696 0 5970.083872 21030.67444 0 0 34654.24263 0 0 1556.066977 0 0 2398.116995 0 7916.484661 0 0 6323.863599 0 0 0 0 21633.37149 23179.28924 27295.52121 0 0 0 18352.71197 0 0 0 0 0 0 0 0 0 0 0 8958.693051 42162.24186 2599.700963 39.48155193 760.9099054 0 0 3148.628081 0 0 42.77385023 16639.70223 1661.918115 0 3712.444895 277.8015719 0 0 1781.43606 852.4308902 0 0 19179.84434 0 6901.776679 0 0 1506.873891 0 0 0 0 0 46832.64071 597.0693758 17793.10217 0 59293.95392 0 0 26695.26025 0 0 35109.97725 0 0 22536.68286 0 1934.957351 0 0 0 915.5508821 0 0 40.44452011 9863.310129 0 2134.770385 0 45992.98365 0 0 29379.16734 0 6394.033084 0 0 0 6442.545233 0 6222.911361 0 0 8316.493375 10468.71658 0 0 0 35052.21231 0 0 0 0 0 +0 0 2155.980526 4901.968221 0 22578.65389 4481.391004 0 2267.900516 897.3169713 15583.97251 44758.09213 0 0 5505.439437 0 8495.236491 0 0 0 11321.32574 0 0 0 0 0 18794.4158 3911.541989 0 420.3254155 32286.46386 4105.713612 0 0 2132.698998 0 0 0 39.25898346 2681.254024 67.39701576 0 0 4212.581171 6733.545049 0 5186.836295 0 9882.995342 429.4332895 0 7698.060803 0 0 6790.204099 207.2240315 4114.451163 44231.64127 9242.61246 0 1224.296396 70742.0346 10338.27708 208.9863349 3183.247863 582.7358833 5831.271052 3239.774024 2078.751556 8533.515037 22274.27125 0 0 0 2916.187379 4067.264676 0.9080754155 0 0 0 24976.55231 0 2077.775709 34016.04594 5296.396276 0 17273.83397 21.88400838 0 0 0 0 818.9624777 0 2351.239831 3794.628567 3947.273547 3469.410151 0.7956214923 0 0 0 2434.647136 29.11585435 9892.656889 0 0 190.1342058 0 0 244.3795554 9811.194852 0 0 26140.78475 0 0 21731.97571 0 0 0 75931.10449 0 16114.48704 0 14917.92706 6293.37414 1199.785864 4532.556863 63874.45333 18.93799173 0 22791.2421 14826.33545 1.091021158 0 0.001501377763 13172.42883 0 0 0 0 28547.65523 351.0010591 0 14374.42537 52668.71405 0 0 0 0 0 0 5540.462635 0 0 1535.714672 4186.010407 582.0957332 29296.12244 0 67807.19696 0 0 0 753.1899511 0 0 2563.121802 21939.76585 10943.4389 15878.80307 0 0 3659.394084 16707.85196 0 5367.840512 2183.535894 3041.464382 0 0 22257.20296 2140.541205 0 4236.866142 128.8804715 153.7931696 2705.795824 0 14009.23955 4214.76757 0 0 0 15382.52245 434.1026055 3341.32585 0 0 61621.81451 227.3296871 177.9014898 0 2089.03598 0 20686.71128 0 0 2963.637428 226.1653662 5229.364044 0 4501.504051 85.98414758 0 21099.06279 0 0 41920.91117 20778.25087 15068.76463 0 0 0 19619.05248 0 12621.41829 0 0 2565.458919 0 0 0 0 21781.21764 1246.243755 0 1657.710402 0 0 0 0 0 0 0 9801.83741 0 0 0 7067.231455 10485.93016 512.7709132 0 1756.686445 0 41.91320264 0 0 0 26267.90961 0 0 120.2011716 0 4209.507154 19587.8133 0 0 0 0 0 0 0 0 0 0 4577.111355 307.4664855 14885.68527 42991.84864 4406.918753 23394.79829 0 20908.54732 2231.321125 3207.513385 0 0 4947.731068 0 0 42504.72723 1308.607863 5751.932025 0 0 1593.465945 0 0 +0 24087.62554 523.1015611 0 0 56417.77314 9579.306027 0 43.70138126 9194.634003 4677.673927 0 2550.86205 34707.97808 2517.590658 1570.66561 0 0 3385.732538 0 2985.667181 0 0 17355.16112 32933.54147 0 0 38131.26789 0 0 6875.934071 0 0 0 0 0 0 2848.423197 7394.107634 0 0 0 0 0 0 3353.311797 124.5556074 0 1895.275432 0 0 13668.02498 0 0 12167.78288 9331.184519 0 4488.401439 24038.42205 0 0 9232.547098 0 245.1068324 8834.625367 40939.46923 0 32957.24141 2799.791605 24779.43047 0 0 27099.42041 0 1611.639101 0 0.1796246949 0 0 7898.886482 47683.55414 36.26210443 0 0 27628.79496 1522.753204 12059.03068 0 0 0 0 0 36269.49406 523.5100582 28790.91946 8921.171365 1477.589244 0 54.83021382 0 0 0 0 119.9713349 0 7570.258028 0 0 0 0 0 0 426.7297099 0 3724.384893 7638.340177 20485.78152 0 1973.844629 2141.565358 207.0163696 0 25204.65682 0 14540.99434 16.98451658 0 0 0 0 2975.169984 0 0 0 2598.043337 45070.37593 2334.857089 2922.806219 2798.199648 231.1061794 15315.77181 1692.232125 16107.51331 45.11191577 0 0 0 0 4896.134971 0 0 41974.67051 0 7927.432695 0 0 29200.36369 1377.52199 3746.410075 0 21444.68567 0 0 0 7434.620382 142.029664 0 59467.51123 20535.34437 0 82.2747497 0 0 48928.36595 0 19970.62982 118.4279506 0 0 0 0 2513.77449 0 1859.149622 11285.82153 7662.894245 0 5407.525632 33612.77591 0 0 0 14798.87509 0 352.8634977 19268.00137 0 0 1743.080902 14335.39986 52.38867517 15359.3371 17275.28127 7354.986195 6943.39669 0 0 3921.4413 796.8251447 0 0 1712.000207 0 0 5657.631399 0 0 11975.26681 0 0 0 0 0 31061.48961 3649.224321 49446.17983 0 0 55.70598096 73.2777255 0 0 102.497899 20465.6927 21909.08047 0 0 1127.778194 0 4055.304025 3889.527708 0 0 0 0 21644.83951 0 0 0 13523.40872 7229.142588 0 0 0 67.50820114 0 404.107426 0 48.89887047 5708.006643 0 0 0 2970.213016 0 0 0 0 12073.07436 5681.170361 0 6273.042338 0 6839.536591 27667.29168 514.571161 4168.721657 10456.72451 0 14734.01765 0 0 0 15215.65951 0 249.2417308 2023.311262 0 0 0 96.47837638 0 1221.826441 33062.86513 0 0 0 0 4086.76341 0 +0 15740.47964 0 0 1251.823183 0 24346.21327 0 18677.31147 0 0 2478.498975 0 13103.38966 0 23229.68762 0 7622.489845 0 4589.744409 14144.78471 72.65839731 3982.572687 80556.74636 0 0 5758.511355 0 1754.023735 0 0 30768.87633 3028.787418 0 1770.417147 2227.736188 0 0 285.2664725 0 3845.670775 0 0 0 0 0 0 24097.90292 83.57488402 0 4375.963421 0 1360.063138 0 0 1028.540483 0 21331.25559 10668.87374 0 8948.607453 0 2679.383118 3236.417271 7545.569732 0 2762.194192 0 0 46526.75382 0 2508.585045 0 0 298.7300352 0 0 0 60081.8066 0 0 10539.89601 248.3677483 5772.391515 309.6132881 49596.366 0 425.2395616 0 24006.61281 0 0 0 1766.250514 703.0092475 973.8517178 0 1.341985756 16469.87902 0 0 2034.264034 1707.285194 0 0 0 0 920.486246 2348.124679 1779.174618 0 1065.104344 4801.920992 3482.31038 10616.68402 0 0 40675.63474 46072.77235 38794.71004 0 2562.427019 26.32175184 57.09007087 20818.69485 18308.58321 0 0 3674.888589 0 14595.83421 13645.59035 0 65085.73719 87.99042902 3954.505098 2795.455801 0 3593.144958 0 0 0 612.9336134 0 3821.337098 0 0 0 0.009417071867 0 10302.32491 1781.220133 2175.170097 4220.610067 7865.9248 43277.99472 2582.155002 5896.585838 0 6524.391707 0 780.6230086 1152.917289 11625.78004 0 16334.73472 0.382746216 0 1687.465651 0 2895.419318 733.7214374 17956.24881 0 34036.60348 0 351.5878177 0 35562.52627 57199.97313 2911.844616 0 1195.988939 38285.88953 0 5482.931735 0 16246.79538 18578.26175 185.5142329 14739.03489 45646.89292 0 0 7167.019064 1690.14996 266.2507932 0 26226.87267 0 0 996.2148367 0 54070.3016 0 11459.70739 0 5517.790461 63.56710597 41136.58012 0 7592.102341 0 0 68897.80696 0 0 343.6732816 0 0 3589.671635 2876.562375 0 4318.454027 0 0 4412.272258 0 23252.99169 7253.31534 0 917.9160323 42516.36012 0 1997.020957 0 0 0 0 0 2787.144547 0 11642.90054 5600.650681 0 0 1814.128964 4186.678188 4121.403203 0 0 0 18181.31666 7017.696244 8708.599525 2674.249468 0 0 1703.424483 15753.66476 0 21254.67377 27394.21894 0 0 0 4170.980106 55.03451107 15850.72745 0 0 0 6642.973488 0 0 15832.18137 7614.088588 2025.08341 20350.2157 0 2693.594763 5310.236093 0 310.6102383 0 0 0 10089.82778 39.12149492 0 0 0 0.3204361468 0 0 0 0 0 7545.100957 0 +0 0 0 0 0 0 5226.329223 0 466.4125725 0 29527.07804 460.0684378 0 3548.138473 0 78.89719946 25787.58693 458.8093102 0 44228.16089 9174.730628 0 8381.579479 3204.791519 0 0 0 41466.6085 0 2725.112983 0 0 4007.605805 0 29678.83428 21980.97294 0 0 0.3795598143 14879.4064 56197.59012 0 9596.595421 64959.51158 0 27013.90667 7998.749343 42705.23821 12458.80027 0 0 0 0 0 8001.185935 0 0 0 0 0 2068.554733 37993.02823 9394.767393 29420.95455 0 0 1396.139544 274.9844909 0 27386.2417 0 2806.962765 0 47607.67341 2374.907906 0 1531.232501 435.0692906 1708.432649 0 0 4116.52759 27028.45757 0 6886.308537 0 14970.60675 74978.58995 15187.6519 0 306.4498799 0 38191.80319 0 0 591.2006379 0 4242.933009 30711.91922 0 0 27986.06862 0.9685952404 4.251869067e-08 11323.64996 10403.74346 83729.38481 10155.84897 914.2772551 1113.878522 3.285865958e-08 36837.67327 11843.20776 0 0 16502.2612 5776.904184 0 0 0 0 9286.340959 0 1877.535193 12147.49251 0 30.90194375 15535.08366 0 0 0 819.2860496 194.4017433 4642.732036 8467.079967 0 8616.395353 1973.582147 0 7269.033152 18695.82604 0 0 0 1177.65442 15675.39394 0 11549.04908 0 2659.372581 15447.21679 101.6028047 0 1.024414031e-11 0 1529.788529 0 0 0 1806.764558 0 0.08464396429 0 0 2611.326039 7658.781729 0 3387.47101 2003.091295 0 1788.029258 4745.771905 4002.150973 38966.86229 0 0 4485.671911 3644.701257 3561.554104 14293.04358 339.4714471 0 0 70728.03447 11445.90706 5166.059845 272.0798928 1999.956273 0 6.496235181 1024.760735 5853.614819 6149.254301 3435.944817 830.8529921 95.40610358 20344.02031 965.8412805 0 99.34087653 55279.28029 0 12184.70241 14104.99686 0 0 0 38843.43007 0 21797.52488 0 27601.0755 5116.902888 252.0270447 0 4892.413266 4156.14196 0 0 0 68.5929367 0 21000.09589 0 3594.40748 0 1469.87219 0 0 0 633.2926231 0 0 0 6659.6261 0 679.6225053 11829.96513 23173.45484 6594.110751 0 0 0 120.5898164 0 2466.759203 0 0 401.1124981 2.868592122e-08 707.7942108 0 0 0 8.510008783e-07 475.703767 0 0 57281.14626 14840.67144 32600.4309 20823.84099 0 0 641.7288078 4075.39262 0 9994.111766 0 0 4149.132546 1869.027493 0 0 10761.53708 0 1742.088339 3994.055037 0 101.0205576 0 25833.55774 25078.53369 738.7723497 0 0 2979.227496 0 0 213.9135436 0 0 0 0 0 1807.238687 0 4617.894012 0 24601.76815 +4445.955069 0 0 4887.455491 3705.959713 644.8492972 0 183.4065569 0 0 5328.933288 0 0 0 5371.615091 13986.1384 0 0 0 1603.397711 0 0 0 2464.632861 0 0 0 1.940925382e-05 0 41242.01462 37.70949605 0 310.419109 0 0 0 4103.728749 2786.287254 6149.50796 38720.87058 31908.77384 0 0 38463.38405 0 3051.246235 5935.573468 0 0 4065.23146 11166.67456 0 0 0 2501.562806 8408.166448 14099.83762 4430.521696 0 4136.21922 596.3974772 0 7850.067417 43289.5582 0 11137.99395 13919.17281 0 22009.19627 0 0 3680.281987 0 19719.9718 457.7379464 0 3431.561687 47386.01556 34490.6463 6466.22518 2170.945791 0 751.7413165 0 0 0 19967.12179 0 0 0 1533.291825 133.2422919 0 9043.915234 0 0 353.9704646 1.514396733e-05 0 0 44990.53463 0 0 213.0543263 1232.505329 2546.841742 0 0 0 0 0 14579.54045 5979.536483 28670.55682 0 4211.027814 1427.62031 8.44506245e-10 0 47930.10612 0 9472.781582 31966.85311 3790.863016 1006.633075 55601.46981 0 0 1415.280806 0 20.75159553 59229.13432 0 2320.877678 0 67.60776241 5457.586862 7309.765147 0 0 0 2687.227318 1651.024736 0 48158.09965 0 0 0 0 0 0 0 13649.7208 0 0 134.9084437 9070.645747 18887.5744 0 2652.706492 0 9984.670206 893.4073454 3724.630056 2019.580974 10251.04201 0 4548.290717 24628.56817 14665.42858 0 6947.588341 7034.330016 13072.18007 5289.005442 0 0 0 0 0 0 44037.62358 37116.86342 0 3203.503054 33320.29333 71.87287594 2124.269343 161.3623579 0 19194.76868 6279.145189 34384.44623 2520.052394 15217.31027 16941.80601 140.8400915 3086.707851 0 0 142.2470047 0 5088.643723 0 0 159.9746677 2838.496229 28.85871554 5089.535039 26285.16846 2375.519803 0 23688.96761 10582.55553 4679.708701 10100.81196 0 0 0 1541.347112 0 6907.975346 0 0 0 43700.78094 0 9671.640178 29050.87807 0 56867.83796 10334.12554 0 0 0 7205.782461 0 0 36.91054598 5115.611067 0.03958924109 1007.817597 3457.986614 1133.535144 0 3731.756195 0 2356.716079 4031.178146 0 0 1164.84466 0 80023.98401 3792.310563 10256.96735 29036.27872 0 0 6010.070574 19418.10881 0 60182.45325 2703.935263 0 4325.994373 1488.9726 20252.44071 18573.7716 305.4011794 1117.133987 350.5260714 0 0 72622.86506 53.1372916 0 0 11352.3368 0 0 0 4794.869742 0 31957.23053 0 0 5414.131008 0 14602.11376 48614.7845 0 6796.772459 0 0 0 0 0 54616.33625 9746.592684 +0 7678.780616 0 540.6965471 25449.4103 17949.65441 0 1383.757052 177.6120339 0 3244.047339 2618.167077 4580.841169 0 0 22320.21716 0 0 0 0 2380.318487 1572.943566 0 4314.864464 11425.46385 0 3281.053849 4216.391722 0 33954.8003 3.574383766e-16 10672.18178 15015.82743 0 294.1541757 0 7219.764703 14896.10186 0 0 0 0 1999.972889 0 0 1737.494281 0 337.6657408 8762.773131 0 4362.166323 38.23916875 12.82386367 5579.955021 0 0 0 0 0 0 0 21832.46062 5720.873587 1427.865865 0 0 0 13560.29468 44891.16772 0 0 9455.750481 3167.125128 0 349.2437675 669.5789849 0 0 0 16764.2779 4190.57699 0 0 24288.58825 0 0 38823.17801 0 0 37990.0408 18656.92857 5098.203797 13442.81197 11833.91147 1123.603007 0 849.7938878 504.8729411 11697.83705 0 8555.707738 3631.52626 1401.174679 0 0 31146.61797 1482.574938 4672.730543 0 0 0 510.6506716 0 0 0 4.075782597e-06 0 4575.995782 0 0 28018.39225 0 222.2461871 0 0 62070.0921 18084.56993 9227.212034 419.9364422 0 24605.56657 5839.869228 0 43337.39034 0 0.1531804065 41479.7465 0 73.74585945 0 22316.00021 13036.29457 5516.241423 70727.91733 0 0 289.7372034 10647.71152 75377.26361 3660.51228 29587.51255 48258.47626 26558.77925 13.22793804 2389.636363 13640.87649 11411.49068 10934.29049 1639.818598 16428.5277 8967.400522 0 1226.133991 55239.85022 0 7016.80046 7163.77446 0.03405774799 4778.351476 41419.44345 3902.263566 0 0 46208.4714 0 64080.974 4394.18519 7189.604807 3957.985174 52791.54601 0 10170.6726 0 111.654855 44.24649951 30398.13497 0 0 11855.88866 0 10441.07008 10958.16142 10617.6601 0 0 0 0 8405.589762 0 0 3508.330438 22.94612463 0 44520.33527 5664.987197 2519.298855 0 0 0 16867.17481 9.608485646 0 16571.39484 0 18400.56342 0 979.8321115 0 14210.95958 9433.939572 0 17481.42529 38594.48132 0 40956.42372 4131.343559 0 200.6105514 0 7817.96744 8973.0559 0 5814.658167 0 1663.809468 0 0 0 0 1914.396827 12878.12173 276.1171449 1193.9655 15332.08456 4368.553773 10319.54945 12337.3126 0 0 9753.873688 15536.7146 0 4375.658453 40830.87609 0 0 0 0 0 55363.32882 0 0 35.34958137 648.7807666 0 0 0 8279.549758 17294.79997 0 0 3598.095914 0 0 33760.18092 2624.898086 3022.878678 0 6088.758484 0 6233.233026 1562.958215 0 52475.87882 0 0 0 22728.95958 12267.62885 0 4649.49191 0 2609.105407 0 395.2176435 0 0 0 56.91156721 5124.362902 +0 0 2071.058904 0 0 100.2037993 1112.30965 0 44372.64508 14341.88924 1436.851376 14745.91603 13160.25846 0 4406.733307 7279.484644 39.53251543 7800.963553 0 3277.309351 2560.887845 7222.706162 1786.70767 36396.11379 5527.340468 3358.24303 2241.678896 2941.89542 0 25.66777761 23396.63993 1028.226846 758.3317808 3557.884722 0 0 0 66360.33793 1059.53783 2790.721156 1886.787811 78.29604972 5082.411887 0 37685.72984 27985.063 0 8332.963792 8276.999468 0 0 17284.39041 1782.652384 0 0 91.83925303 0 15528.62333 0 672.2036627 18159.92023 0 23614.93266 115.1640389 8224.06085 1979.707499 116.7655709 0 16265.50107 0 0 97.0636691 68.65746028 9228.050483 13469.60118 1460.904863 0 0 0 0 1530.032828 0 0 30472.52456 30402.19818 0 0 8508.3249 1229.635329 26638.12233 0 0 2957.48891 10090.00332 13716.95415 38994.85471 0 4438.501743 0 16039.41697 0 303.2172245 3059.499869 39082.12779 0 7679.141015 49138.06844 19240.02075 0 0 0 2830.436822 0 16322.04786 33389.97255 0 45005.69875 1463.810425 39505.45201 28101.88282 9995.265093 475.1808393 0 1587.000624 5170.933832 4299.340412 0 0 35.2280803 0 0 0 0 0 27529.54385 24052.35542 3627.656832 5146.097299 43873.75111 43176.23011 0 0 0 0 0 50406.8649 18081.34766 0 0 0 31435.84096 20020.18843 0 0 395.560083 0.01696149008 0 0 1.25199407e-08 42730.24674 0 66724.41974 0 2292.153609 18778.43791 22124.1885 409.1342086 311.8581192 2222.431299 0 37336.22735 0 0 0 18203.43547 2759.286156 0 15160.34235 5646.078001 662.0888703 0 1728.548202 0 20884.89353 57328.38648 0 5490.835385 9244.924824 13291.75425 2.151521557e-08 3.86448874e-06 5085.623182 1974.662899 1858.547747 7312.323411 7389.080184 0 49698.7502 18335.76554 0 0 12005.43178 17146.99086 15008.90742 0 0 3261.842847 11883.19086 11069.05011 0 65778.92202 4870.744035 91.58890928 0 0 0 41682.93018 0 237.5071583 5850.346246 1352.406334 8774.412186 0 0 0 623.3646199 41072.64498 0 390.000118 5352.769047 417.0079647 837.4193881 23229.92204 1598.552936 842.7740282 5470.451065 55411.65936 0 0 0 0 26904.93623 0 31588.3577 30042.91955 11924.69191 0 1061.38653 24.46282312 0 13989.21101 2880.434265 42.72258032 1.72085606e-12 0 0 0 111.4121509 5711.862383 0 0 3205.360493 0 10770.11711 0 1142.604215 342.2820553 0 14844.94234 0 0 0 0 8.77472799 2285.470746 0 0 120.462063 0 0 0 19634.29902 2878.829702 30374.72683 26897.7957 0 0 0 5282.189663 0 17878.45232 0 3270.450546 0 0 8958.051856 6830.625758 3322.634889 0 0 +5876.777475 0 17.16011876 12841.59856 0 33174.10526 0 0 0 61196.811 435.3322606 0 961.8844159 2341.094912 46.22971849 0 1497.456451 0 0 0 2177.269112 290.497178 0 0 3250.723289 0 29209.6427 0 0 0 0 0 0 0 773.893653 0 0 0 0 15795.33596 186.5506473 0 0 14294.36336 205.7380758 233.2939115 5700.896571 7247.123391 0 42.98383083 0 5654.710142 0 0 2235.886188 0 4978.530348 0 1194.748509 0 2509.077765 0 13505.45991 0 16287.31272 4374.985017 257.8882413 25570.0476 0 0 0 0 8952.311188 0 13187.92855 4556.801433 0 3876.668239 20557.06459 7021.033538 0 0 10447.62364 0 7227.375776 21317.12119 0 15610.38253 1673.769918 2057.100858 5156.509577 0 29.02814203 0 719.0151726 214.3014397 20606.45794 0 5077.01481 6497.082524 0 33558.65172 41.66477593 315.3812 0 2282.649204 0 0 0 217.9920217 6743.222716 0 0 0 0 0 0 4258.29288 0 771.5694228 5503.534944 25823.60497 0 0 0 55675.81386 116.8971858 4272.079271 21392.83537 0 12958.25503 11633.25189 0 0 252.2827693 0 4259.980502 0 0 0 133.5330418 0 2758.315634 433.8361019 64.86259196 0 802.7727875 8927.235984 0 0 3136.952088 20181.52875 0 3417.741391 0 66626.15345 5931.219836 0 0 43052.84131 8082.061126 4140.701385 0 0 3644.934228 1097.938387 0 0 0 0 48.62011879 15821.25667 0 8846.074986 12715.95979 14432.13151 113.262391 59163.77615 0 209.4671268 45811.06658 196.6797586 11290.49491 1148.186405 1180.945996 1516.305397 68.71992136 5611.731556 2815.223459 0 0 0 1563.206372 0 128.0170941 4677.804151 0 0 0 11056.45646 24551.61933 0 3860.769384 0 0 0 14496.42861 444.1841797 0 0 1249.509851 2576.530249 3412.088289 0 94.9876161 0 0 4843.791723 1233.100246 0 0 0 44558.18536 39332.60509 0 25.8248645 0 2836.402929 0 0 180.2238006 0 3025.450155 0 17056.09946 33143.96763 0 0 6761.691412 7659.4072 0 0 4041.697883 8804.418728 743.1961376 1731.08265 0 0 1457.145927 0 0 5636.304922 4983.177826 23054.1869 4435.042003 0 0 1757.805162 0 0 0 177.1769486 0 105.7527021 1382.700611 9601.490027 6678.928221 0 0 25542.48333 0 704.775141 0 0 0 0 0 0 0 0 3.821313062 17202.22382 0 0 2751.643438 3840.271435 0 14217.70569 12.71612977 38967.01328 3827.585396 0 11573.90854 2284.239379 0 212.6589486 0 0 44098.94293 1021.834606 +0 0 205.4529199 3687.490609 0 1670.273588 1052.740175 5810.71836 20970.11675 0 0 8108.382386 40393.7818 0 0 4591.645814 0 0 0 13978.73608 11535.57597 0 2.032135036e-14 0 0 39.70077101 1945.573495 0 13533.67218 0 10337.37459 5045.968545 0 0 0 0 0 19076.32769 0 3840.387724 0 0 0 63781.94783 0 27389.91196 3846.514021 36202.04771 0 57519.32738 0 0 19.45238748 0 0 284.7786185 561.1142773 0 0 0 0 0 20648.66566 3900.778807 0 0 22555.43928 8596.220953 0 196.0778164 3484.899547 0 0 0 0 67965.35541 0 1697.81486 0 18491.59702 0 13398.75403 3446.260948 24044.68854 37347.60085 0 49198.35102 0 9335.052195 191.8473236 2322.448405 23462.64711 19209.83334 0 33587.44154 16733.20822 0 0 37246.52807 3448.195279 1167.788452 26295.49475 2506.667572 1594.447033 0 3239.680628 39550.49758 0 7046.087379 0 0 13981.1125 5448.285058 538.1593002 0 1544.578155 53710.08906 104.2145981 740.7221895 0 3576.184336 8475.825574 39.6902848 824.1822103 5839.010404 7774.546196 11864.48336 0 7728.047025 0 0 31783.40888 56393.42835 0 9363.472143 1785.138033 13799.22897 7201.749373 13381.93493 0 104.3902987 402.0777596 135.0209366 4060.426041 18480.88614 17.62919845 5007.230116 7696.589573 8673.311892 399.3867535 12020.37832 202.7573884 7252.331809 0 373.8716798 0 7824.026992 26.40779214 3801.196875 0 0 1967.117711 7062.880801 6559.309439 0 0 28.42675011 71502.13019 4228.061436 3369.651948 4178.42938 38041.66501 0 52155.02687 10207.9106 4556.98003 0 9558.587921 21373.00408 0 1960.548178 77779.69236 17606.75255 0 0 48.76546183 5398.422547 0 0 15214.71877 448.01631 7648.359293 36236.17247 0 2653.398901 9523.944324 0 2262.963343 11926.16808 5074.479603 0 37.83545766 0 0 0 0 3432.58795 0 0 0 4504.241107 0 9571.119809 4361.706706 0 0 0 31.14500168 9171.093639 5313.590792 30752.37024 0 0 0 47844.03069 3988.914345 12390.35269 35522.78789 0 0 0 0 34395.07241 554.0447633 0 0 9019.374171 0 7026.333163 9.256846949 0 0 0 1027.317109 6879.893632 56501.03573 0 0 0 10402.97688 0 0 21470.59333 0 6527.171771 105.0934225 0 0 0 0 14735.45395 1947.618181 0 5201.816193 0 15118.10734 5112.972364 0 0 0 0 0 0 794.4642473 0 4306.272979 30950.85823 22818.93956 13321.40021 267.2949192 8262.428166 2.941316974e-15 723.557302 0 0 2225.434471 125.6284186 0 0 7156.852653 7066.851548 6870.142013 3549.093509 470.7445618 0 34.29099894 40781.11976 0 45623.28037 0 +0 0 0 3995.000097 7296.089424 1992.479742 0 1785.789668 0 0 0 0 8122.407688 0 11096.62585 0 60571.91789 4561.487747 46414.19504 6231.090623 59061.03917 0 22967.42816 0 0 0 0 348.8995455 0 1528.810144 0 62120.61944 142.4082922 0 0 149.1314936 0 31206.00655 25911.81549 26896.79252 0 6656.249881 35206.22797 6776.770564 3400.707074 1959.678076 0 4195.178345 30919.06123 10777.94251 19446.83858 29430.99757 7169.505464 4016.631404 2526.709555 0 39464.44514 0 13369.81847 15039.57857 56.35587093 0 0 13374.49664 17853.24434 4057.774546 0 3836.472606 0 11254.85153 36852.59851 0 0 0 0 2849.796456 822.8008753 0 15988.31446 0.06869784825 0 42.77006764 3984.910964 0 0 1950.483335 0 4594.981908 0 41.32253786 0 0 28320.61429 0 9460.195804 0 0 0 13412.08767 18904.17307 226.3349368 5538.030272 6471.959185 16834.4268 1964.306922 0 0 60375.11396 0 0 103.5796182 0 0 580.3769855 6236.514682 0 0 726.121778 0 6783.184472 445.5216127 5292.489686 2151.369663 1216.3754 52.79714472 1772.925896 33.59160033 4422.090098 0 67511.81761 66.74798024 22261.5914 566.9689786 4469.027942 28958.13138 0 0 0 17859.74175 4670.210468 215.0392678 394.1687341 9143.112676 38.34393584 0 0 13986.8519 1132.305783 43772.26361 0 146.1349189 6332.334642 1615.468797 2887.472041 7427.233468 4105.270042 3761.119217 27902.89309 0 0 14606.3912 17954.8895 0 54531.78293 67376.0174 12595.10152 1438.245552 528.0042562 14619.38101 404.7007129 93.2728539 11569.66696 62244.8097 24796.14657 0 0 732.4469508 0 12188.36284 4420.9705 161.2394789 0 0 0 0 132.123106 0 8267.719127 10265.98313 10159.64527 10144.03291 0 14399.74899 16542.2194 1320.131234 0 658.8905826 1942.998128 0 0 5890.856305 0 56.53058611 4169.12984 19786.64313 0 3661.325046 0 0 3976.72184 3318.462584 333.6561906 18627.92424 0 10888.89148 0 0 106.6384981 12815.98053 0 0 0 0 0 0 0 0 0 0 20007.76577 0 0 0 0 0 1861.700186 9162.666226 0 0 1803.518112 2246.547298 131.3056607 0 0 0 0 0 39070.31397 1.997973608e-05 0 0 0 0 16427.90625 23752.33913 10430.30358 25966.13374 2370.950411 0 31508.39538 0 0 0 0 4858.662747 29646.4735 25907.15187 26933.40317 2540.290398 0 877.0201229 0 0 0 0 0 0 50.47522479 0 2635.630089 0 0 1221.396554 0 4587.138381 0 0 0 0 0 0 3970.214451 0 1552.833727 0 0 4388.241567 0 0 0 +0 4369.406637 0 0 0 0 182.3766918 1650.942687 269.6122753 0 2619.630696 693.0336818 24863.15005 0 7.233029968 0 35434.5061 0 38.59119959 0 0 0 4362.309295 0 0 22624.29082 28838.59303 8498.009156 3207.460088 0 22761.67788 0 49141.28106 7498.487274 0 0 9656.831387 5920.230656 0 3225.42523 234.0044488 0 0 0 19513.04034 0 0 2973.621437 0 0 134.9885813 0 0 23428.55545 23065.40279 0 0 0 2744.474787 62002.12785 578.0279227 64.43374024 28587.58191 0 19398.13783 0 1665.237629 0 0 0 0 33447.44569 0 10555.07556 0 853.1705831 2.421272072e-09 0 0 72748.53975 1944.833118 6617.940949 0 45446.79661 59675.85977 7460.145151 5878.217004 5255.645318 524.9965273 1813.776954 0 53781.3455 13085.01896 28794.32572 21418.51623 0 21620.216 3462.192559 986.2174041 0 0 0 8439.020359 0 965.6392422 8957.28692 0 3267.380274 1063.479266 8442.933464 8100.126686 2386.213611 481.3521433 2182.979005 0 17137.0682 1829.796213 53480.69361 0 0 25081.91079 0 836.3116718 16780.81111 7649.147958 0 0 25078.01647 20894.28022 0 0 60797.58389 0 0 18752.55432 4513.482958 258.291688 0 0 833.1922322 65983.18353 0 0 5464.984809 387.727272 5911.00691 5660.889933 0 0 26150.22118 0 10569.64078 451.2291338 0 0 7357.424434 9069.116989 0 0 0 0 424.3090006 0 4051.949029 0 0 35209.7891 27305.67458 0 1931.677761 12315.41623 1107.419474 2767.610942 0 9441.585416 0 0 5297.220776 1830.644373 16921.67743 2.42441156 0 20423.75379 0 35231.81311 0 413.3520137 0 58069.54077 4448.247445 0 4615.682463 0.006716638328 18632.50487 0 0 15474.52093 0 0 3600.73587 0 0 0 13408.67183 0 0 0 24.76330312 40.23787399 28263.18127 6998.060473 0 51458.65576 5267.21703 31987.17267 931.3867619 0 0 26473.51761 0 1395.739642 0 337.7088763 13467.84584 4734.8217 0 23652.69325 16577.56454 11220.28921 0 0 1954.973987 0 0 0 34138.2986 6951.279646 0 12941.43186 21577.04223 22626.17251 0 0 0 0 1839.577052 0 4197.284964 0 0 29748.25597 0 11881.5525 45137.60532 13535.6195 1519.655234 0 0 1013.248094 9724.382372 16863.13613 19918.98206 1600.812003 47077.67972 0 0 0 0 16126.42286 0 0 2510.524146 0 0 2455.250459 0 0 339.7457672 0 39549.68651 0 0 0 0 0 0 3928.126939 0 0 0 891.3228709 18917.48126 0 0 139.021559 0 0 0 57226.67989 0 +1464.980773 0 0 6670.42615 790.8201751 0 14310.966 72.95365619 0 0 0 0 2187.303496 0 31327.34272 3680.9135 0 25766.4231 0 0 0 1595.177025 0 866.549821 68.66295773 838.8380283 33415.58843 1926.846689 0 0 37650.17793 1150.914964 0 12312.28533 0 0 2302.761307 0 3292.374503 0 124.2516912 912.995694 0 3148.556785 0 1416.153841 1612.444942 4187.556456 0 1208.847455 7906.097065 5205.240677 4474.579217 16314.74142 0 0 822.6409942 0 5071.053968 0 0 0 2339.273276 0 0 1864.860447 10281.53492 2.56144853 0 0 0 0 0 3736.882835 14261.51542 0 0 0 733.7539861 12051.55781 21208.92037 0 8247.641681 11364.34118 2370.461427 0 13571.11895 0 4722.454484 16183.70644 0 32640.92878 109.3640968 22306.95666 0 12782.77196 0 0 41589.05673 3818.43325 29463.21362 3212.750175 62498.08165 0 1522.333459 3622.95893 14057.58874 0 10001.11603 10377.36335 61.27683979 12988.57078 12882.16941 0 30558.74247 0 0 13178.65875 3155.872565 0 39354.52632 0 25765.64386 19568.17677 20686.95769 0 18570.04005 896.4894264 1465.978313 0 0 0 47535.62646 8141.43563 57676.80644 0.05642614217 0 32536.48549 0 2896.242356 218.5454934 3.389447983e-05 37186.92073 43471.28642 0 0 0.0001342345636 13992.08797 13.85512357 3835.800949 9104.2131 698.458515 5447.732346 0 17263.93903 0 0 8062.361943 4578.643266 25031.10634 1230.10392 57710.04508 0 0 1026.35516 0 1470.778561 0 4418.16476 1339.192653 1930.821317 308.2254435 5258.300766 0 0 0 8974.165331 0 12755.97337 0.6091199996 0 0 42966.97523 2553.677982 0 53344.75122 4839.732489 0 165.3558851 0 62.12430293 0 10089.05322 24158.66073 0 1201.059998 94.14482154 25271.96916 3754.122119 5994.395845 19415.2151 42484.45723 0 7643.792125 30085.61332 0 2607.885413 22320.3256 84708.89108 0 6932.474653 9334.098367 0 62.38710051 0 678.382668 21330.36121 8091.883517 4830.045612 48796.3867 0 0 11323.72362 4404.93247 0 0 0 4198.492704 25477.83632 0 1668.93011 1615.252399 0 758.723483 89.2057533 0 0 1751.607888 430.6844861 69424.1055 0 3719.50282 0 7131.453252 0 938.8283665 0 0 0 3378.58405 807.6568877 1625.321728 4005.78144 0 8142.180203 0 12952.02983 3597.060176 0 0 0 29115.99636 0 2047.045148 26.29254878 25624.85858 0 5539.420051 0 30861.08015 510.7368499 0 2223.638543 0.7688305784 0 8614.043884 5855.900101 6164.236037 0 0 0 2732.31478 65.836599 44.03959794 2234.167461 10071.89259 848.3703833 42839.7874 0 2675.749612 8398.978929 0 0 0 0 0 40327.85967 0 5910.252206 12649.00579 +11060.44772 16876.3641 0 0 28443.78637 0 0 50.08301279 0 0 0 0 0 0 0 3506.744395 0 0 0 13.49178001 0 7629.1434 0 3812.618744 0 0 29969.61869 4189.66272 0 20.19338228 0 0.7198986931 10677.0434 2126.719396 21722.24508 12086.39918 4458.230381 1507.236233 33.33993729 12966.45152 24559.8165 8526.793585 41561.56828 0 3560.852145 1663.98741 0 0 0 34.69027586 444.3431887 0 1449.220327 8443.500959 10899.71451 0 4378.290852 4924.060133 0 0 0 713.7957074 0 98.38609331 52586.98258 3338.332386 9642.510969 0 15897.10299 16234.909 18285.72891 0 27.63251657 0 56973.3408 7093.198769 0 0 0 0 41793.73004 23990.52096 0 297.8326734 256.6052032 18537.64515 12627.0958 0 253.6015532 65839.94391 21885.97697 1524.446678 5156.034887 6597.664829 6609.290715 9229.983931 3617.854885 37658.68505 39.16450046 0 150.3670481 0 0 0 0 0 45.53353983 1411.51908 3754.754957 0 9613.434942 38331.57519 0 4418.594219 687.089321 5814.045154 4442.587052 0 0.2765137835 0 2252.665516 12657.72879 0 30076.51812 0 2018.485532 0 0 0 0 0 0 0 15211.27195 0 0 0 0 47630.90918 6869.575971 4927.90509 0 0 0 177.0751863 4850.36311 20497.99233 7.491136478 4.866171221e-15 0 30.37699921 9260.435663 14508.01693 0 2473.859639 19975.214 16403.14085 2261.877204 3743.008343 0 1369.175858 248.403658 0 0 0 969.7491449 21743.11257 6562.099136 13586.68299 0 326.9001044 2890.862733 9607.813614 131.8226233 3087.804226 13089.16357 12432.52731 17892.14785 0 625.7726144 0 94.10260565 162.1487671 0 0 0 0 14793.00051 47741.44789 1159.523685 0 2381.384448 5328.598911 0 29255.52111 93.19003436 0 0 2992.528038 0 11701.01168 6.045484105 20590.60285 0 0 23377.79507 654.664365 0 4637.04709 5912.287543 0 23048.6744 0 0 0 3193.345395 0 8418.071361 0 0 0 0 0 2889.352208 466.7010704 0 26082.25814 42389.84021 6201.988297 9869.28773 17520.27819 0 0 624.2821861 689.5495691 3483.007135 3464.087272 0 3216.863692 0 17528.43122 7732.665917 122.5217654 2521.181947 0 0 0 2624.268606 38247.33823 0 7091.001113 0 1750.113683 58928.28478 0 87.71207834 0 26640.7164 0 5188.466492 18669.58994 0 10228.25175 0 119.3820327 20570.32603 6240.820312 0 0 0 0 2500.801932 0 0 35488.0742 330.4692894 14281.24982 9082.517059 25103.68687 0 69687.61277 0 11005.33702 2920.906709 0 2064.293877 5002.888766 2296.688116 875.4282396 19253.09052 0 0 10.42984053 1620.309623 2400.584538 207.7650511 0 57067.80968 6310.275674 1635.601901 +0 10425.67911 0 0 7642.146188 51838.37361 0 1694.832096 5201.140632 0 1379.791673 0 0 0 0 48303.67937 7586.492274 6797.530756 0 14693.7515 146.0181141 0 0 15242.07457 6612.548149 0 965.1932658 2756.428777 0 0 0 0 61487.64407 19896.79613 27610.97531 65.74773233 243.8973689 0 0 3580.344167 3236.345921 0 0 296.1380151 0 24166.85626 9302.700788 0 0 0 8470.601705 0 58177.99758 10033.29729 22590.92722 3773.121456 0 1250.373689 3579.532334 0 13524.85678 0 17882.81543 348.4119713 0 0 23615.40564 0 0 0 9915.73083 8979.868386 0 3435.63931 4223.747241 1636.140818 34069.49399 0 23339.03495 17161.48519 8924.438018 0 4827.541414 0 2858.995535 8299.334006 0 11381.47525 26882.44587 445.9058434 0 0 326.7176046 0 8181.652113 57485.69093 0 0 4451.172465 408.4453875 0 2174.975051 0 0 1365.182515 0 0 13950.20071 0 0.0001830832211 1319.786286 4696.985576 33369.51146 13414.5311 14174.87493 4505.031434 0 139.0099897 10548.55438 0 0 0 7968.530855 49349.67025 0 0 0 82.07122385 49.72201681 5616.419862 0 0 63.11160576 0 0 0 0 0 0 3936.816561 20754.00295 47430.54769 0 302.5011954 0 42562.43036 22226.60029 6609.951152 4636.626649 61930.2333 33591.66057 15741.29874 0 4138.243047 21347.40116 22536.63178 30537.22141 0 0 3884.873873 162.0074971 0 0 4953.096326 9338.81322 3249.789316 9098.244773 23585.62722 0 0 0 14206.34792 0 0 2340.277595 49182.14224 0 1773.636325 0 2632.350177 5510.602855 28945.11186 11940.51436 3794.37697 17137.33462 3674.13712 3492.835984 3477.169179 0 6059.117161 22530.3863 65679.7642 25400.27014 25731.72612 0 209.5004496 0.0001638473476 28311.34576 8389.560205 4998.47933 0 50166.34638 3981.932799 1415.109678 0.0164682597 1250.134773 27133.74044 6309.188627 7582.363808 1452.171045 0 0 16485.20085 28932.89635 8265.708831 338.9189622 0 38432.39461 2148.076346 0 3815.877197 25548.977 3378.675038 0 0 10988.67727 0 135.329309 0 0 1874.391321 0 0 16936.18797 9032.574209 0 0 5466.574425 41402.43327 0 0 23898.72601 0 0 0 0 0 0 0 8981.451943 0 1441.23382 0 3501.473098 40875.5738 0 0 3644.533612 3173.470913 0 0 209.6947541 0 3205.645682 1353.225919 0 0 1962.671614 0 2717.658707 0 0 0 19060.58725 0 394.8071962 0 0 50.7370214 783.5326102 0 10617.82237 372.559051 0 43913.34903 0 9695.696509 1841.714075 1.484557435 0 0 0 0 0 29005.38818 0 0 0 0 2980.129835 +0 11367.24824 6448.016416 4373.492657 23148.92745 5332.257074 812.6081197 1444.878162 0 7817.344051 0 0 0 7908.196955 0 268.4763511 3559.895447 582.3713781 0 213.4422409 4876.443573 84239.55169 0 0 14682.85024 0 58.05326797 0 0 41171.07331 0 0 0 0 0 5012.322246 31101.67442 0 28055.62084 5914.600143 1261.677849 0 0 0 5249.835673 0 3241.094066 2904.698248 42031.77174 0 0 0.0003521712052 0 11496.47853 0 0 0 0 1871.50175 16175.26903 0 0 0 10743.24527 84668.21722 18497.14891 753.5366487 1147.951772 0 2229.610327 22606.99167 0 6298.533984 0 9100.965119 9364.40307 0 27804.20359 7281.345232 0 2183.050835 50404.32764 0 6058.81244 0 6656.231887 0 58.97513876 0 2437.16047 2027.43519 1544.966231 0 0 2705.141559 15198.28228 16712.12251 1616.39113 6076.422041 1947.856968 0 3877.128632 0 1503.87913 310.52903 2267.681312 4674.082038 5645.047668 18137.89432 5465.547315 3675.194866 0 26401.02694 0 43671.96113 60235.85996 4994.028891 13064.49723 1209.008805 4759.562875 0 29008.16747 69.93276006 5360.130844 0 0 13256.40831 0 0 0 492.1956283 57.1604539 2221.857177 0 9349.894222 0 19969.04352 0 0 18701.04155 1606.934368 0 33359.84768 155.6750283 2779.3739 0 6086.665052 0 3054.935974 0 0 0.0002506739262 0 397.0998897 6734.704675 0 2283.930705 552.1421125 5905.056575 0 0 0 10570.51817 34395.42696 0 10715.11023 0 258.4879048 1.736561089 122.590591 123.0732661 10369.05794 1630.339161 1737.348437 26109.75376 0 19460.87732 0 1036.020842 276.1935975 2252.878175 51420.76059 48405.39413 26861.90378 7761.722372 0 1103.368982 0 0 41570.64005 69533.39665 0 27.17918928 4364.148276 0 14162.30424 0 23428.83176 72.87576937 1189.22092 6989.749132 3885.277021 0 2737.407566 182.6848215 0 3206.624846 0 0 190.5156989 11025.47666 70099.23191 0 0 9725.286884 2054.464171 474.1085695 4801.708306 19143.98435 0 9578.113142 9098.755431 1813.717291 896.6911258 0 0 0 0 15202.17606 14539.23556 0 0 0 4956.275261 0 1806.161288 0 5341.693861 0 295.8933049 0 0 0 0 20180.70505 7773.517899 58382.06307 31140.98934 0 0 301.526405 4836.811584 0.5152817463 0 0 0 5451.94991 33124.88824 0 0 0 0 0 4498.433963 0 0 0 0 0 2245.527663 0 0 0 7514.757993 34579.75875 0 0 0 2304.318062 19077.39779 0 7092.215148 20918.62215 0 0 53777.48148 0 0 0 0 0 1290.804132 32801.33179 106.6324197 1075.181357 1685.170691 0 15096.78781 1587.043854 2025.533653 +0 8690.249157 0 3694.683983 19.74695717 3.012028996e-06 0 1870.080152 16140.17893 0 103.5962381 0 12434.16995 23029.65798 46991.48661 0 6757.660353 0 0 0 0 1630.29269 0 0 21138.37881 17339.14907 21590.6142 0 0 362.2825154 2067.281125 7182.169813 2168.776243 0 0 0 9977.224899 4303.267853 0 234.9145673 21744.7392 0 11442.67476 0 101.8212159 0 67114.77977 45011.73658 0 0 42.35741796 3082.020063 30152.01997 70998.37764 37840.8886 614.1771558 0.001753006642 122.8239932 44469.65042 0 243.2469728 0 3536.678297 5277.490626 1772.068244 14221.45715 77147.95955 638.9464249 5110.204853 0 0 22496.5679 10885.23998 14376.73137 86.80087901 18295.71292 0 136.8882038 9344.535341 0 0 12.37473141 21540.28273 3375.491263 130.4632388 10201.90571 0 69636.64878 0 0 35378.80402 65445.51277 0 49567.89912 0 217.6697079 13906.38263 0 1990.425341 3060.460042 53074.14515 28544.93503 1856.944411 109.8300254 0 0 0 0 0 0 26535.75106 0 34530.62435 3.0936379e-16 6.505435123 0 24.26514428 41419.56211 15055.50829 294.4019226 0 3551.768394 20528.19465 5916.358532 0 43474.4574 25409.58387 30922.78285 65.03614653 52984.97894 5240.423267 391.5585166 0 845.7009995 3269.802819 359.6130255 54099.15837 14269.14227 0 0 171.1623228 7874.892865 3088.422525 0 0 23483.99496 0 32738.27523 1815.450551 0 15707.16517 5732.498234 1280.765162 5192.491099 1492.067603 7105.70915 41806.10386 0 0 0 31415.26358 0 346.1205763 0 3888.154223 0 0 0 2537.646457 8749.177264 0 58302.08628 0 14258.78026 0 0 471.7003631 2912.237784 145.9882954 0 491.4833703 27891.02906 68010.44818 6234.418968 0 0 22989.72527 0.2505329111 0 2350.223204 2390.648456 28514.27205 0 37092.90784 2661.992945 39748.78467 0 0 0 6598.160303 0 0 3944.130987 0 16479.67407 7494.83428 20142.57332 4919.812241 4779.316265 0 2461.01044 66.42885426 6175.885737 52836.26965 10155.02065 2121.60793 26028.20174 0 0 15989.83934 0 3639.401117 8461.861568 0 24092.43617 0 0 0 0 41609.69488 0 18491.37325 0 7425.244782 0 41210.2055 8212.603425 0 0 0 0 0 0 9764.838519 0 13640.16375 0 0.0001789188465 5562.277027 0 1494.971132 3088.804314 234.2497869 2727.979027 0 0 0 0 9978.841187 2390.740397 0 27724.16622 0 0 0 1709.086671 21183.72203 0 0 494.640842 0 23463.62596 15805.44307 0 0 186.5255772 0 0 2433.737217 201.0553454 1523.305783 0 0 1293.327136 58.81331014 0 0 0 0 24008.51912 0 3204.55444 11155.32909 0 0 246.5871567 1330.489373 17170.48088 0 137.7395876 +8155.053852 0 0 53.1435141 0 0 0 0 0 2546.126076 7048.157368 2853.785955 6031.227427 0 0 0 1909.500721 0 3716.000377 0 0 47640.61143 15863.53979 4250.24441 0 31334.33832 5521.984462 0 0 17024.44106 0 0 6693.021608 0 0 0 0 0 0 0 0 26455.91053 23789.81958 6828.384893 7623.663364 9647.594422 0 35117.23403 0 5593.235752 0 0 0 0 0 0 7702.69615 8848.88036 9226.676644 0 63.30965895 31064.30291 1433.272676 3.779084242e-13 3538.187047 15270.2134 0 0 946.1018515 0 0 23679.76848 257.5441867 2952.42071 20391.9314 5395.570709 3719.021059 5053.095833 1433.424601 61643.38567 10315.66742 3948.626546 5459.023675 0 0 0 0 0 0 0 53181.58208 18169.71051 0 0 0 0 61.10826477 8858.012099 0 0 0 5971.803137 20489.27503 0 45613.67801 0 9339.221106 30347.70149 0 0 68429.82092 4010.706237 0 0 0 24924.17209 0 1278.607365 0 0 69.78489151 0 56287.93415 21556.09313 29236.95189 2.292410703 0 0 1739.251133 16594.87782 0 1050.492134 1097.694066 39.7563294 408.2787803 0 2471.159526 0 0 44119.51181 115.6033363 3088.581386 254.894055 318.7539969 20860.085 1679.710824 34671.10105 0 0 0 0 0 3429.296315 0 60053.23081 0 3331.756954 93.65901558 19869.77936 0 15121.19962 113.2757646 0 0 0 1926.034633 0 0 38.65835509 12080.21556 96.36226718 5555.174628 0 0 0 0 167.4827216 2865.027337 0 143.0783447 276.6973705 16991.80379 0 538.4192627 9082.085793 5083.074014 2476.35881 0 16673.67945 0 0 13225.35615 30107.80677 1130.747394 0 2758.424856 12661.34678 58000.90271 0 6189.415137 37094.21605 5888.593423 5681.674636 1351.508922 0 0 6116.101172 7079.432861 1867.679633 0 36331.7445 0 0 0 7128.573983 0 6183.379875 47692.36064 3267.225753 0 4314.884526 0 788.1370659 3373.041213 2398.350704 19192.95204 754.0853566 4445.244768 1402.91614 85.74092808 9607.249971 0 2777.064622 0 0 2611.247603 6746.287356 0 4074.382224 2229.10489 0 1915.340123 0 16.21323824 0 44181.52294 0 0 0 32475.3115 0 0 0 63.06154657 6858.564227 0 0 1001.047592 20105.10275 4064.163783 14236.05536 0 0 0 38.73507591 6716.297623 24588.3326 0 116.8967704 0 0 0 0 8.645644624e-20 0 333.855872 0 0 0 0 21.12877253 0 0 17814.62491 0 0 1265.481526 0 0 0 9487.889919 36655.69869 0 0 0 0 0 5237.297933 0 6167.470998 +0 0 0 18567.25893 0 0 0 30767.81089 0 21875.91807 0 3594.194978 0 0 42529.02455 0 0 0 6630.303728 14619.41782 0 0 6050.085194 0 0 11368.38783 53326.52901 0 2769.00012 4.549177969e-09 0 17619.12485 0 276.0859577 0 0 4080.443956 420.8610854 0 0 0 145.943548 0 6143.378518 24109.22888 0 0 0 0 37813.80757 0 3275.257951 0 281.4035795 9419.618359 0 6065.176662 0 50152.31063 0 0 5012.371228 134.3136146 0 239.6552104 8291.23869 24994.24094 0 1317.806933 461.2544918 627.3478299 0 3825.189945 2157.085144 0 2525.02203 0 31172.25592 36131.39883 0 0 11687.57983 370.5970973 0 4645.597577 0 6547.155882 8955.057766 0 2087.221653 14314.49146 0 2328.000435 55553.69404 8862.961992 0 4023.377857 8439.881501 0 3507.289439 48066.54055 8952.550546 0 0 9056.823791 0 1112.941519 11433.54498 143.8377729 45435.6246 0 216.2679091 1921.128216 12439.69554 25939.85422 3962.798935 7778.219953 8671.550973 0 8459.182247 0 47438.62198 28708.67745 0 0 47235.08706 16794.74374 0 174.2461433 18950.25422 10546.68966 21589.42598 0 0 18345.97979 0 55.24292789 0 10006.22671 54533.59726 62237.35461 0 0 42808.64852 0 0 0 1028.5686 11337.03893 2733.195112 1053.380832 6157.541376 0 0 4472.417574 14070.00902 0 11692.21296 5252.998448 23815.18204 25280.28007 2395.101948 18.34837773 37108.88005 0 4218.257504 60.08416196 2169.063255 0 0 3155.270306 59519.95931 0 0 0 0 27758.39001 46973.66998 7375.401226 11491.54466 19202.95166 766.4815753 0 0 13.99638238 0 0 16830.44616 0.07456730251 1316.39497 3327.881706 32793.10707 0 0 34476.4116 0 0 5627.015232 47984.12291 0 1581.972907 12064.04686 13992.30807 0 0 0 127.6637485 0 3017.348814 0 0 0 11460.7289 0 0 7641.731176 0 0 1874.106801 24692.10637 6305.647775 0 1621.154475 10056.12209 0 0 13079.77006 0 0 681.9177787 1635.927778 37647.96943 0 0 0 0 0 332.7532477 0 4438.678057 0 0 88.10210249 1615.74913 66806.99669 0 19058.01802 0 45776.1112 26892.61381 0 203.5134478 19009.19873 0 0 0 0 250.6633066 326.8999495 0 569.7682975 0 4538.733247 0 7699.352446 5995.581999 677.4221676 1022.613601 1275.645011 0 34.12180063 0 0 0 2898.304127 12226.02697 0 0 0 0 12134.86564 0 0 9172.799599 5043.942572 0 0 0 0 0 47.10601902 0 27239.88565 454.289181 3599.894016 0 21617.20254 7264.389944 0 0 +3060.035212 0 1476.931837 2021.811678 0 0 8343.37446 4767.101452 0 0 0 3166.848251 0 0 0 0 4862.299057 0 0 2356.514602 10810.27846 153.5232729 5385.928694 7281.617598 0 0 0 951.7535537 0 2998.792789 6401.23582 0 8854.942622 0 3094.33225 0 15258.1629 2044.220839 0 1129.170439 0 0 0 0 12105.22037 0 5486.07748 0 0 11295.09747 12206.56689 0 32932.06533 0 31135.10619 5680.351364 1826.335541 0 0 3182.966312 0 2481.665766 7379.031371 0 1302.233432 0 0 9403.03372 0 20882.82141 17227.92828 15086.11958 0 0 32722.46534 0 56.55726993 0 8934.761033 70073.7943 0 1322.610381 0 161.031649 0 44976.14259 5962.760434 0 17690.07742 0 1798.321808 7585.600554 63.61760873 28239.7399 0 9821.824769 0 30120.78117 38731.9032 58546.10223 0 37166.73447 0 0 2581.019112 5208.901377 4988.997098 30288.96411 1652.717828 3567.917141 5310.215033 142.3716138 0 1657.232741 7.356712523e-12 6458.273556 27814.18873 3686.210424 4170.969013 5267.252262 6435.920445 10522.04336 0 4258.727048 4187.730366 2775.441708 1405.502194 0 0 23783.67896 44956.50524 13964.30564 0.5908309284 3297.169197 13490.32208 10400.10205 7823.852421 0 201.5418494 27540.3498 0 2336.628957 7928.624029 25165.15422 21076.33747 7193.149383 122.5974123 0 35294.3755 1274.112718 232.6289933 0 13138.75112 1690.953749 58603.34649 272.524709 11339.29545 20545.05977 12704.54529 0 17320.29958 60837.43942 459.6201282 3855.972675 5925.662554 51.20441748 1266.027233 3303.888099 25783.64739 1834.26516 4119.171375 20432.73228 5470.176944 94652.87489 33092.99478 20379.0641 77262.19977 2012.817249 1638.973295 5260.917894 74736.59209 0 0 2370.902153 8593.444115 0 191.8025421 0 0 11331.87473 60919.54866 13030.15993 0 0 0 22743.51475 0 0 9466.995852 0 0 264.7933908 0 8869.556489 0 5979.757269 0 1336.346182 36666.56705 3244.19517 4055.972355 0 0 0 17171.49968 2697.742188 0 0 4817.914719 5131.60341 0 0 0 3039.278819 1.289312595 0 7740.710178 0 20915.32488 0 1087.371758 0 0 2544.862789 36160.77874 0 0 50182.9929 52055.47641 55948.54599 112.5125872 0 0 4421.85058 655.5269015 6034.923589 47089.45266 12412.26308 969.7115147 0 7662.986686 0 11794.13495 0 19974.93509 2831.538844 0 62.63050794 876.90989 7111.975412 0 0 20233.53937 39.50480317 0 4320.752251 0 0 11407.264 19372.00473 0 0 0 6733.996983 0 24.51279123 0 0 0 59127.67072 3341.904282 0 934.5324847 12120.31779 0 11636.62601 55.02076332 0 741.5256229 0 4963.206247 3532.399374 0 79.92784543 0 0 3708.743448 8816.733928 0 0 +47331.12682 4041.391064 29017.6889 3252.604226 0 4156.248243 0 0 0 3427.307382 0 0 79.53053881 0 0 231.4180848 0 0 0 15292.49617 0 0 0 0 4.012353356 15909.19772 0 37.19502386 42.28146889 0 0 0 20994.31778 6892.470863 2163.990823 256.5029335 817.8428708 0 5719.356003 31117.20613 0 0 0 0 0 73641.24118 0 1389.999775 452.9173232 0 38633.96287 0 0 6461.226493 0 21095.00519 0 4033.900486 1438.371845 0 0 7430.6552 0 0 0 51778.72483 24058.73615 3809.465243 26664.24923 83385.94492 3991.27765 30137.26491 331.2015645 0 0 0 7928.219674 1106.63218 42737.48845 18.17946185 0 7651.422485 19170.19102 15502.89224 0 10238.60059 9938.707498 17177.22052 1127.983795 1687.004419 297.5198853 2238.920137 0 0 10729.45195 8946.580199 2377.945728 0 0 6610.51598 271.1184599 4298.900461 120.1649905 0 10433.03763 742.7900152 205.6678855 0 4606.344185 1017.251431 9976.250229 0 10882.12655 11089.1719 1770.226574 0 3884.772223 0 2520.586815 11569.77516 0 18824.09523 4205.859139 5659.015952 68.0528448 7.974618698 48.45250029 9132.157557 0 314.6025195 7135.818329 0 3562.675947 3802.147434 6396.08832 0 646.8744002 8534.160817 0 58239.1433 0 44.83505573 1700.981797 0 1059.654311 2175.706855 0 0 4644.999686 0 462.5519779 0 0 24014.61409 0 3129.868198 1115.513325 581.6774902 20786.69647 12319.80473 70823.33776 0 0 3081.002656 0 8440.206959 2592.726165 0 0 1474.534112 8678.247242 17112.12818 60378.36294 0 1466.352522 0 0 9244.725156 0 0 14911.8992 45032.92604 14309.12271 0 29650.27189 2498.917737 9576.486963 2678.90052 0 0 0 34833.16084 54420.78002 21987.56155 9554.381325 19446.54921 1292.017639 26616.08931 4665.976447 8173.737804 51070.08151 0 3787.589528 0 15076.9244 75545.7368 5917.690181 0 0 0 0 0 5596.481121 32145.23589 21860.20405 13271.16307 2495.02044 19413.76963 1517.399038 17245.09693 0 85.86280281 24896.70871 10125.72107 0 3954.894107 18326.95508 0 0 0 22957.23258 0 0 9293.541144 0 923.426816 0 14898.58608 0 13557.37388 15583.20594 5955.150743 0 229.0435439 6006.699162 19156.95602 661.4115819 61.55534394 46.63508837 41264.4927 0 176.2150108 0 0 209.8443948 0 0 6315.551229 50274.35227 23022.98313 0 2059.143187 7319.316089 0 2348.875543 0 0 43891.82493 0 0 10911.85133 0.1376258197 1177.071085 0.7923826597 4212.728845 1497.096757 0 11412.93878 10426.59394 194.2489869 12073.95217 12664.69508 238.3163618 0 0 0 0.005058877141 0 0 250.21104 306.842349 0 0 0 0 7555.421575 1563.550937 57776.61588 4270.667592 0 +9856.553809 5289.975128 0 3442.183529 1797.660876 4218.60406 0 0 0 1237.732784 0 9725.767583 4479.681844 1001.768266 516.027733 1826.817053 0 22881.1028 580.4910881 0 787.2315405 0 0 2778.167445 12204.02243 0 0 0 7062.801873 0 0 285.6632067 0 24753.61856 0 0 169.3297807 0 48352.52627 0 0 2076.766656 0 0 0 0 60691.13059 0 0 0 2398.986142 0 0 60650.00478 56446.49033 0 0 35058.70044 0 29357.54333 0 612.6698498 0 26551.30285 3415.590647 54830.80254 0 0 165.6917501 0 698.1893372 51112.04744 10136.25222 2624.913177 0 0 0 0 11946.11751 26312.05964 0 7490.994522 9.496023486 3934.84073 0 0 2872.25883 64543.41149 0 28654.42161 440.807922 1447.210589 2156.193456 3924.355512 241.7718844 0 0 11046.22836 11623.9051 13369.62463 0 14787.92536 88.75227058 32678.96193 7780.537567 211.7964327 67765.41949 8679.208793 1802.357634 176.6135751 18950.28124 53845.35682 73342.79702 16.17892526 27931.12064 0 70364.85428 0 2727.355437 42445.40071 0 0 4064.63362 14346.8677 0 2155.183255 378.4190106 2207.92261 4560.359406 3833.768809 1022.619918 303.8279826 0.04184934273 20222.72909 0 27115.68648 1935.657622 15442.52884 2148.721909 6443.899673 50357.7523 9737.946075 29.84347574 11706.13853 582.5924379 1034.025314 7551.222445 3143.427127 1971.349573 0 1210.746013 542.2133423 12114.20038 2944.047357 3249.948584 14021.16103 0 5395.64903 4260.515985 87.2631333 3032.682697 468.3725586 23485.39413 232.874834 20872.91867 46042.4891 576.1436455 0 4758.139532 0 41857.03308 0 386.5920245 1375.036571 8792.604923 1231.22901 0 8909.164882 9331.832546 584.9051094 0 132.5437409 0 8950.157797 0 0 0 3820.7271 4784.828101 0 4653.056422 693.799884 1522.191272 0 3740.912724 13175.0915 0 4.836109036 0 0 1841.650323 34895.47963 3347.022259 5341.529174 2310.623483 0 17.58861817 0 10196.1623 0 32456.1524 46.58115593 4668.280025 781.225945 0.3349887809 0 44.76513697 0 0 11260.93789 168.5800554 25998.10932 9034.093166 0 0 9473.623709 0 0 12621.86889 0 0 6894.606229 0 13376.35889 53369.31006 0 1296.540629 0 0 10757.37674 0 2945.94732 27564.29617 20.76136353 0 0 12928.37778 0 0 0 18434.24809 2775.356388 0 0 25136.37725 7804.230684 0 0 50023.15798 0 0 0 0 2847.119949 6764.32673 32312.42887 0 376.3717158 13692.68248 34199.16933 0 0 0 53.72871624 25416.97111 0 0 0 20.2949734 0 0 57066.67816 1387.956983 0 0 0 1826.680804 0 174.5247224 3585.531681 0 0 0 0 0 0 2990.491975 1499.371523 0 0 +0 0 0 8187.678655 14910.12989 14713.27565 14455.71382 0 315.987595 0 1416.593791 3417.970524 0 2565.881493 36873.86498 9907.925887 0 0 3823.177612 0 2662.399088 0 0 0 625.9440367 0 0 0 0 0 0 10205.50691 18164.40634 0 0 0 0 0 0 0 0 20480.6164 0 69644.58406 0 1451.160997 0 0.03817760272 0 32.79857349 0 47915.00667 0 7052.776473 0 39366.37873 0 691.3047468 2547.378904 12170.57462 0 21992.79664 18766.63202 0 1770.442151 0 2788.492762 1355.594676 0.3517832378 5933.05757 1301.691143 2083.458585 0 4558.180455 0 4444.915545 0 0 0 17591.13753 97.07932555 0 213.197171 4632.655768 294.5265299 28314.32612 0 29627.01589 25157.14811 0 0 29485.49428 38862.61991 14713.08547 6888.156016 41512.71283 10131.34562 0 0 16790.92439 3218.805497 0 3952.045925 1342.590026 7482.375168 51788.85192 0 15555.63103 44382.17578 0 0 2844.244122 0 8552.14585 0 6476.977804 6611.857034 0 69.34594266 6282.927547 0 59798.45228 0 2235.232493 842.1118633 25714.67993 13097.53746 0 0 870.5863535 14240.73209 5722.443312 55.10887636 14001.3589 48526.18655 11314.0274 8938.639049 0 48.03771506 0 15148.60646 314.699199 0 7946.009482 0 0 3548.782737 21512.5077 459.2367409 0 175.9609306 84.73083042 0 28257.96888 28261.14583 0 0.926774052 7021.066121 1771.570481 10508.91658 0 0 2306.258664 45.31306399 0 0 33835.67803 0 8340.075206 12044.67306 0 12755.98143 0 6105.201733 54483.75421 0 0 2737.203231 2852.436507 14913.5698 19640.30306 0 8.165264771e-06 5834.911403 0 0.03338724475 1153.647443 0 43513.05452 115.7087753 0 10153.68769 64729.40949 9581.050803 8235.346861 29106.49001 0 3897.719869 26827.08312 1619.027818 4625.427399 0 1448.007815 0 0 7041.426285 0 7179.721442 0 0 4534.498328 1888.358196 9902.232669 0 0 0 0 6011.630983 0 895.5263436 0 0 4358.426647 7315.60922 789.1702984 0 0 0 0 0 56479.40503 1765.87038 9530.925896 5847.296588 9771.233218 16.71732813 1285.919311 53845.2519 0 38.59118271 2.650952264e-08 5738.22657 48748.26965 50386.35635 2363.544648 0 0 36186.93247 5850.41932 0 47084.65631 0 8149.800655 3259.468719 3869.250099 287.8079405 0 11024.53456 6083.316123 3542.906345 9635.447624 6782.331046 0 0 1740.493637 6738.607954 2066.595335 2544.710928 0.0008190441424 0 0 0 3959.704757 43.11266603 8159.062437 0 0 45.863412 0 32885.24347 0 28861.47458 0 2633.025645 0 0 0 0 0 32446.04292 0 0 0 3691.680193 0 973.8410706 0 475.955107 28537.38228 4899.131947 +144.1868973 0 34282.17663 0.001697622279 0 0 0 4426.89006 0 0 0 0 0 0 22801.03628 0 2325.523491 1603.766704 6282.924451 0 6133.019638 2844.200531 700.4002729 0 3993.831082 9673.100311 7447.525771 0 0 0 0 0 0 35953.33554 4217.266269 42162.05404 37609.49576 0 17239.15506 0 421.967516 0 8761.108236 2956.378822 2556.639495 25433.66509 2103.683902 1278.538456 30703.81116 1371.349997 2126.300411 26497.90359 7353.037627 11233.81658 8341.569386 4425.633764 57852.74772 0 41708.04591 1073.347682 0 12498.14182 25.53708935 30834.96449 0 10895.08007 0 49537.19195 6263.691084 1251.007471 0.019968849 7423.676553 8038.705053 3573.541698 0 0 26.3906382 4685.405775 0 7930.253795 0 0 0 0 0 64526.52003 0 0 0 0 18216.01114 0 217.2388952 6713.689782 1357.645593 38380.79729 0 15207.02016 152.8817211 0 0 1809.926914 4152.685384 5615.266913 0 5169.19364 2109.490629 5180.084636 22318.80402 15197.30052 0 13671.58754 0 0 0 3260.801148 71428.32489 2125.620065 0 23669.44668 0 45581.6231 0 92.11534857 0 0 0 5099.188437 78.87893713 59419.78578 31892.41794 5.025713758 38262.41162 0 0 5555.225696 5058.865012 12393.32246 12745.20274 42140.96866 8514.83179 0 5032.547611 3434.208055 7698.433868 1148.082178 1606.330028 17417.47562 4689.369605 0 11593.92305 31.56827113 2966.820526 0 31570.81877 5836.257785 0 0 1963.658037 45.94567199 5027.112244 9400.59022 0 764.1055574 0 0 0 117.0414918 1541.429996 22352.20338 3580.341725 0 256.7981145 0 43168.13866 25581.82123 0 17878.33452 2816.36684 541.7686339 40022.55889 11384.19635 2122.285283 3203.033407 0 0 5147.269912 0 0 16024.1163 1021.026073 230.6943183 4220.064841 12249.90532 0 0 0 1589.866864 0 9929.645922 37408.56145 0.1303963854 17767.2529 8187.96892 0 1051.901979 84307.44418 10500.19085 0 780.1425485 14294.98323 0 5342.084129 0 63851.62322 44368.25777 0 0 7850.171138 0 6920.754162 11151.29137 43726.85794 0 0 56634.02861 15521.75246 23774.36962 2674.290273 2152.4577 0 0 76.1371955 4783.914548 0 33.7699852 5689.133391 0 0 2180.718856 0 17327.71441 5509.946762 0 0 0 0 0 0 10247.289 30828.13873 0.0002914300058 0 44410.01144 1400.081545 11737.91965 48675.62154 0 282.7749813 0 0 81.39215619 0 0 6499.52599 0 0 0 0 4266.893451 7421.859461 1208.499138 0 0 0 468.938259 3421.907506 0 16381.2082 0 1569.025298 15997.50422 1279.726963 78.01048183 11887.45344 5154.910286 0 0 0 0 0 25814.79773 0 39251.31636 0 0 0.03279447829 32780.19602 4233.185157 0 +0 6517.665304 0 0 2691.505535 0 0 0 4452.41131 17273.49771 0 3730.161592 3071.074207 1333.860383 0 12704.24095 0 0 0 0 16229.83319 0 10477.05769 13720.61082 0 0 34255.19335 30.11855386 324.2465596 16638.9531 3620.897323 0 0 3036.150509 347.6434885 412.0437101 0 0 0 19974.42598 23826.50336 1148.310794 9540.80116 0 2579.008566 3568.219303 26071.20474 562.0955394 15199.15265 0 504.0266117 0 0 95.00071214 25418.12435 9169.989119 0 26.81391137 6427.247936 17406.06203 66.49967773 6696.340242 0 0 14455.00219 6360.395849 0 0 0 0 0 4019.442429 6496.752967 0 0 0 0 5985.686353 1486.735038 0 2650.827081 26982.38029 0 0 0 0 10.92427205 3667.080954 0 40569.27314 0 1421.820979 34726.5089 578.4053276 0 0 4702.466378 0 8220.255773 16708.194 0 56993.57421 21775.5804 0 0 0 42125.07123 0 1.453508354e-07 1323.429766 0 767.4234928 0 19833.47025 20618.28647 3517.345635 0 36239.23855 0 48205.56066 317.8661289 21210.09051 4886.118007 2416.341511 0 0 1129.881142 1.557477864 2335.53755 1182.218912 4669.862088 210.6507667 3318.584073 0 0 30700.7317 1126.120245 0 10460.78705 0 27870.10145 0 37909.31212 0 0 33281.83921 648.3731811 0 4805.779671 0 0 0 0 0 26275.72973 41528.89411 0 0 0 63030.96221 0.0001877641768 139.237066 9639.843244 2366.633072 1569.353353 2074.619565 14802.48824 31560.26095 0 34010.83589 1059.176027 2511.897474 2039.083798 1000.665338 0 0 0 4209.643483 28466.76448 238.0449808 0 49573.42379 9.349842845 14746.05621 0 0 964.8982638 0 0 0 22.5007899 43712.05138 0 3981.587761 3308.746551 8543.946649 7940.969592 2403.609733 0 0 92.77677667 0 0 14055.48953 2165.128078 0 3333.000185 3609.819439 0 0 0 3349.822334 0 0 2643.405833 261.0780607 3223.198986 38454.25929 32211.02905 51.8302307 4225.280492 0 0 3883.452775 0 3368.04116 111.7731666 3194.687905 108.1574561 28020.1098 910.5541692 0 0 10798.86884 4440.477902 15720.17968 0 187.5279074 0 442.460723 11535.78818 0 0 8168.527881 0 27507.81649 11835.23433 2095.528378 27661.63577 1775.355684 0 0 0 0 4509.378537 8612.247313 0 54.0029576 12544.4333 0 6281.089194 29.41188642 0 291.5312221 2433.688036 3984.650925 0 349.5510944 0 0 3805.437176 0 1197.26349 334.9934936 9334.920216 12188.95858 10300.67507 6407.958979 0 0 0 61188.75933 255.7477026 8686.925767 0 12181.06044 0 50824.62937 0 12706.29402 0 19.89059551 19973.78268 4570.527585 180.0165354 0 0 62750.0601 0 0 +0 2656.474732 2536.582765 16130.3386 20451.0869 1975.637056 0 51710.67276 8481.163957 30.80666535 0 237.6653318 32506.06418 0 7530.768359 0 0 0 0 0 60.81090695 5358.251645 2343.581254 7250.327688 0 157.2034552 4743.352072 7938.055215 0 0 4760.370478 9703.541169 0 21077.74659 566.1547681 0 0 48657.07644 0 7605.433457 42127.67648 9993.674501 0 7930.015337 0 7317.055383 0 0 49541.78009 0 1412.95023 33.84132052 2660.946645 0 3978.279362 0 0 0 0 1948.668287 7885.364996 1841.000551 21774.98491 3045.192858 0 2186.154632 0 7896.031565 0 21359.09987 4518.038632 0 31392.41429 0 10071.40702 7695.649395 27163.92421 0 0 2855.534165 2008.802323 14406.96738 2816.487081 59154.26335 11293.00345 0 336.1552893 0 0 0 41264.38682 0 0 0 0 0 5952.411349 114.5618663 0 10375.17865 11817.96272 0 5220.179627 0 24411.93882 2618.516153 4853.504461 6549.639586 6975.578205 59228.35773 6052.472352 2505.761102 18545.81267 0 5158.63357 0 34015.07455 68481.21721 0 0 3513.927786 44117.78519 0 33787.56044 55934.60339 0 1631.971826 1719.007355 0 64.42751743 39539.0251 3180.81989 6304.559249 0 8881.787906 4440.327529 0 2716.860154 6964.238404 36731.42308 0 283.4273025 316.0290944 0 37653.65449 14504.15396 3491.531574 2435.134882 0.00945425652 4987.321715 8965.40111 0 1529.917305 1773.461166 0 0 0 0 0 0 4550.336814 632.2457543 0 4858.893137 0 17408.51368 8539.194631 0 46203.17036 3467.688606 0 24782.96345 7078.986273 2917.247264 60.7778004 193.9267886 5922.46855 18018.09856 5223.690808 1619.483285 0 0 0 4831.998821 15882.44 9132.721851 1.180062416e-05 0 0 0 0 0 36911.10956 206.0727893 0 5146.706492 0 1682.855682 16611.77099 5274.85816 3095.699528 28520.83724 49723.18845 5687.600747 0 34009.67246 33492.71002 0 41236.79241 83.82734763 47804.71671 23954.52263 0 3540.703006 75826.10463 0 0 1355.305764 0 0 0 0 0 12126.52063 0 0 3127.810298 0 12269.55453 0 76.45591544 2364.054287 0 11925.7461 29086.24662 25337.59363 0 138.0622795 11468.29748 2457.806037 0 23589.95109 6609.592192 7216.91292 40618.94084 21982.13032 0 14771.35572 0 3238.424907 202.3978132 0 0 0 222.1025907 2917.002659 1960.287554 2730.334651 0 1853.488841 724.4818126 59358.51026 4493.365391 7345.47166 0 734.7828914 15432.24805 0 6635.791549 16927.53156 0 0 0 0 4638.487753 0 0 0 137.559315 0 1.063516197 0 0 2271.468202 5664.338434 0 0 0 0 833.459044 0 183.1809231 0 0 1832.098078 0 402.2501017 0 0 3256.348782 +6575.852414 103.192725 0 5794.435876 1505.251226 5663.02706 0 0 0 0 0 2349.917004 0 0 11095.32251 0 27.82897185 9491.093309 17858.12259 7163.524994 0 2166.358003 1216.093844 0 0 22317.98156 46945.75962 992.9081346 0 0 84.26290742 0 3876.625737 8332.817612 10455.3522 0 1.365370668 0 0 33449.54694 0 0 0 0 0 2046.424323 0 12169.62425 0 0 0 0 3530.273149 6476.587973 0 16546.54373 31576.40036 280.636392 0 0 0 2749.93484 0 0 0 1430.03972 0 0 0 0 28673.03743 9403.203025 5457.940272 476.2436562 317.1139996 2568.847209 2252.831676 3768.056542 9723.869426 15639.22794 0 0 15038.26937 71872.53661 940.2249037 822.2438588 3736.360763 0 23893.562 0 2083.030562 0 0 21244.81033 21900.36891 7566.382248 19174.08566 0 1719.780259 0 25679.92078 0 36578.6644 0 0 13630.42297 8638.484274 3322.650405 6660.72484 28825.74829 33379.33737 597.6464286 0 23253.16122 12968.89967 9227.119216 51466.08363 0 0 0 419.9486105 392.4053894 16802.34242 5854.525805 36255.66784 6840.774672 0 17669.68673 0 0 0 0 0 6241.37581 988.3473068 10192.85749 0 1709.054044 9144.830203 6644.412205 0 1200.965026 1297.302363 28585.96391 16848.78906 0 12.01846596 22083.33872 0 0 0 0 19.16050183 5354.117221 44839.44762 16112.03743 9190.559232 231.4186398 2415.16125 0 2300.125676 0 6999.662237 0 0 3721.865274 11890.04659 0 0 30643.61502 5503.853849 5508.763477 61325.39724 190.5059823 0 68873.71254 43.57532817 19874.62611 0 51267.06399 38795.66022 0 0 0 0 0 32551.49595 6453.959447 0 0 59947.9944 0 0 0 11250.91359 7072.73523 6815.915288 5556.969244 0 0 3814.302217 0 2570.363838 0 0 4236.422765 40602.07956 42426.10504 0 0 7100.898797 0 0 70084.80629 18386.20593 43145.20428 0 416.9149919 40512.04342 44619.06238 11251.3509 6706.697982 3302.60503 167.914358 1189.664196 31477.65944 0 78.92139766 1568.416802 0 0 0 2268.121642 18492.23248 0 0 29036.11784 0 56912.25528 0 6287.827164 1398.220857 0 0 1134.26561 19635.9232 0 0 33365.21615 0 373.495097 698.5369902 10631.8395 25.5095324 0 0 24011.14919 21810.91987 23246.9971 0 0 1744.462049 0 40761.41363 28403.66417 4267.79177 120.7904415 6395.613616 0 25780.75937 0 0 0 0 1586.113156 0 0 7494.286266 1100.956108 3684.262797 3290.126631 0 7960.253093 24771.58483 0 9311.722809 8974.602933 749.9026451 6647.53906 0 0 1783.494408 0 0 0 0 0 811.4142584 8928.465505 0 +0 2467.947645 1840.67225 0 2827.078074 0 16.70688232 0 0 0 45994.2889 0 0 42421.93642 0 16965.91455 10453.04416 0 0 49870.06293 0 0 22105.47514 0 23.92417327 0 0 8742.495091 0 0 1387.146185 3.575283794 3235.887012 31064.42078 8137.229375 1241.429555 63518.36249 0 0 0.008627897073 22798.46897 17724.21606 0 0 50096.29737 0 0 0 0 0 0 0 0 0 0 20805.94912 0 0 33245.13581 0 22548.63223 0 3639.817709 328.478028 85.886914 0 2213.677686 5495.026761 0 62.7594854 9439.560323 9252.17628 4030.363519 0 0 5125.311904 704.4336948 0 0 5141.578761 2026.036519 40356.07206 0 37.11230139 43339.12878 0 0 2780.025052 3814.424889 23343.8299 10428.78298 38425.11865 6864.607754 0 0 11654.81958 4740.041232 295.3375371 29258.98217 16857.92835 8525.392105 4171.278292 0 0 8495.587566 10136.76179 14620.7272 1550.577436 23425.53498 3827.701104 0 323.8245724 75.95084667 99.14423845 48942.68565 1727.552416 51350.35192 32907.02196 0 40186.25005 25530.23837 11306.79875 44139.5256 776.1547313 0 18994.91265 0 239.3372501 0 0 5071.874027 278.2785872 10016.46635 112.5806539 1256.129539 39602.17831 3893.861484 7099.927444 0 43343.81984 19981.11596 45460.24456 4844.404407 7359.298799 0 0 899.1001728 50185.63544 57430.35373 42401.45073 137.4148225 0 22422.54759 39571.75054 0 4536.874838 1174.511084 417.2084107 6.858244502 0 0 2881.765098 0 5703.118297 0 22278.3161 892.4391024 0 6168.160363 6865.817157 5849.005081 0 2610.781546 0 1378.426063 0 25137.3239 0 17351.89571 0 27610.33298 16970.24625 0 0 0 103.849004 2778.100842 0 28577.70896 53886.13471 0 0 40146.15035 5090.056214 1373.538475 24643.60035 22326.0057 0 2020.293668 1532.760271 3552.852298 14914.18072 178.4048846 0 0 3128.572484 0 71678.82983 0 6259.33316 10330.5129 0 0 23341.47913 14630.93267 12245.96018 3941.330981 32636.43117 0 0 3.779478389 20405.10366 23.32120302 268.1858778 0 0 0 9177.588103 31674.90491 367.1986129 0 0 0 0 0 24648.83096 0 22695.94721 49912.11551 8332.943671 19455.14456 41050.84577 19281.68062 13781.88722 0 56776.73303 0 0 0 0 26919.49829 58018.8593 2573.47288 3850.182714 0 0 0 0 5002.890351 60458.69916 3936.548244 0 2407.667341 0 147.658122 0 7920.075651 3625.668625 0 1903.023714 13218.5664 0 0 14366.92151 4040.531761 0 0 1932.102639 42456.3843 0 602.1257144 11950.29437 2062.116096 0 0 0 0 3598.070198 8845.893855 14013.15341 0 14.48663726 0 9029.72811 5797.309871 1474.219245 15744.81439 0 1572.333582 0 +0 0 6845.481689 20497.38574 0 4028.533865 0 28955.5645 100.2940982 1406.904544 0 6933.278517 27387.1617 4950.731677 0 0 0 0 0 0 26021.01372 0 620.0257029 4361.922805 0 0 2208.453111 0 1312.898429 8366.784978 0 0 29410.35599 7947.902662 44987.88671 0 4179.448034 562.4061325 4682.337646 19134.00982 0 6450.721744 4.859060141 0 72.40869764 0 9905.746072 114.0257487 0 10324.40004 15759.70647 29054.32786 4067.955993 4797.434229 0 5600.171818 18041.09505 8672.23554 4673.770901 0 27024.01428 0 2669.75264 4776.336782 14359.44687 0 0 23574.78624 0 95.36891072 29613.36992 4792.127068 0 4702.337184 1.550880879e-07 0 1363.845703 2533.712319 10979.09342 0 14258.72048 0 0 0 7819.078612 299.7349778 0 7199.411399 0 63729.01086 0 177.3169147 213.8524526 0 3474.598307 49411.41634 8981.714332 23731.53703 4470.515188 1728.65172 0 40.90372551 0 28793.24497 0 2889.42279 677.0498834 1714.817961 187.1145517 8718.168284 11515.00031 0 6.985066797 0 1870.759083 9231.990379 2712.662038 4967.050921 0 505.8336089 18279.36136 0 46934.41789 0 45279.97063 14348.9611 442.0847232 14677.79904 139.1216291 534.1890764 13733.62119 10617.90899 0 0 932.6725677 7479.644438 0 4385.534475 169.7915309 0 14570.78781 2899.818396 3.003807702e-13 3434.158491 30447.4676 10946.69167 0 983.9403758 10480.4108 20222.04601 47981.64006 43960.20429 0 6024.534491 41.80290451 0 4261.112164 290.4201743 20291.6433 19.98011648 0 39377.07517 2367.546461 6262.884063 0 475.0119652 17.22772636 7650.140908 446.6861031 27687.4099 0 337.5793462 804.9327205 22744.28661 41168.24112 15198.59701 0 45.10081855 0 0 25243.51416 15.60735793 19515.0146 0 14759.07371 0 0 0 0 5025.41973 1100.787759 0.0001386175335 0 5334.675168 0 6.57063415 962.7282588 38110.82611 1000.70965 3133.75292 69332.32803 1586.10257 0 0 2017.201858 0 104.6272159 0 0 0 74.75950255 4862.868315 3374.34993 191.2562153 6588.34522 2980.142557 38648.34975 0 75.01085153 0 20383.46921 0 9982.043502 0 905.5976602 31445.62656 9715.260062 0 3984.032056 0 0 14813.10325 12365.85783 1855.833036 3380.380033 0 0 0 0 0 1499.220298 2649.480305 0 0.0003178271872 67.74833562 0 204.4313593 25411.21016 12220.45658 0 19802.32476 9316.105702 0 0.07199498315 8829.678109 0 30485.82403 1769.558275 2837.173267 54430.76511 0 0 1466.040095 25827.86617 138.0696654 1026.920998 3720.122667 978.1172268 0 0 0 3651.685228 0 0 0 827.8080094 0 0 10283.92051 0 0 3667.193558 0 2395.504501 0 37249.699 15335.63186 8404.151726 9827.053613 21594.82221 0 6861.711061 4696.73933 0 2446.199817 0 0 104.7336759 0 4331.213581 +63.82512131 7648.34219 5490.495996 0 0 18182.092 0 20491.06622 16885.01494 12395.57158 72778.41485 2126.611765 15389.48956 46727.30201 55191.26154 0 9958.090655 0 0 0 0 6296.429886 0 0 0 0 0 44680.8164 20006.22467 0 31985.7385 0 0 0 35291.42333 14838.07902 0 0 0 12355.33108 3836.738264 0 0 2313.641233 1368.323296 2030.122214 0 0 1.215784346 0 2413.598999 65260.49861 15313.45642 3.376231697 0 18120.43348 6159.426911 0 0 0 0 4639.972733 9.965330156 0 7616.27891 0 8195.545451 4383.7543 11408.71185 46.20094414 19929.85019 29665.58268 0 54369.69527 0 0 0 36740.6885 0 18852.97547 0 0 16235.87328 26518.93401 832.4877991 0 7679.183825 2501.726626 12627.10916 0 0 10213.27345 43257.20679 60031.85027 4229.409856 0 0 0 0 17888.132 293.25217 0 242.5188561 0 11382.16835 0 0 88728.44492 0 0 4156.34288 81234.92121 0 10448.33735 0 0 0 33869.1727 3948.312255 483.548627 0 0 212.3866792 0 2700.863196 1865.090957 29551.78106 68911.45162 688.1818438 1566.587308 16047.29084 15411.9977 0 0 36085.39863 15333.13121 29964.49236 0.005772188666 0 0 1453.762292 26.00424904 4571.619728 3328.341768 2355.584853 1881.005431 12344.70321 4760.824134 913.062746 8002.622968 18349.55258 1653.727338 2100.57877 11673.66886 6500.664367 3359.13639 0 2403.161289 0 20114.50978 6582.466662 57731.68756 0 24246.8171 2038.826085 4462.725165 239.0539398 69552.51948 0 4442.41678 7452.829896 70272.61394 10012.89418 0 2067.031756 1472.10657 19552.29623 33527.57994 64219.29727 8000.300417 0 0 29.67270643 0 0 25605.67568 0 958.849398 1230.20722 46431.90189 2428.417402 0 0 9486.607124 86.61592632 0 0 0 15400.40729 0 8705.503551 0 7211.928856 0 21485.33185 0 0 67214.83314 0 51856.02388 0 111.2319039 15732.03384 0 27633.77114 24380.45152 9049.393218 0 14.24514773 8984.9719 166.6915426 0 0 6291.372093 78.42753483 264.3357978 26033.60212 0 0 3851.27039 0 755.4339139 0 111.1099947 0 0 0 14875.99542 0 22652.62855 12202.86424 47.98019224 0 0 114.7677792 0 0 0 0 0 0 60.84984872 3568.672511 954.0012368 87.4060501 0 29403.43847 0 0 1967.617594 584.6678591 72039.50521 32.92152399 0 5948.739393 0 1.896737583 21171.03063 692.3459335 7796.550262 0 0 1909.98764 0 0 843.9958922 3594.862893 0 1417.389769 2055.263387 7140.417485 12455.23079 0 164.329052 0 0 0 0 24150.5729 15092.01436 3153.22498 0 0 123.0809087 11694.4908 0 6816.250419 0 0 0 +8055.255811 10282.44905 0 9011.090714 2027.18182 0 3111.333418 29.55765994 552.7845443 0 0 0 39882.037 4581.266486 1463.874494 0 0 0 2303.689253 44731.61082 190.6763374 0 0 0 22798.96696 0 0 0 0 5699.149916 3226.413078 0 0 3226.997854 4255.018281 0 0 0 8700.643917 1659.208141 3425.269635 2025.027232 0 0 18220.95806 24518.87151 0 4805.862137 1143.728208 0 0 7789.77224 0 10785.73291 627.8194765 59077.12788 2169.094602 19222.48596 2544.21751 52137.32605 19705.28011 1879.396784 9163.388463 8570.688233 0 3184.788876 5558.082974 0 85.03585587 15603.35065 18830.56566 1590.841223 20910.63748 0 0 157.3842578 15262.82743 0 4559.709556 47754.1672 0 19189.21887 0 9671.274907 0 0 10776.13828 0.8402844551 78173.89515 0 59272.45155 2203.953508 0 25259.93693 21931.98086 0 29961.17716 0 0 29965.39236 0 13450.6875 0 176.8946745 7517.218571 0 67.68128993 28303.84203 10917.6535 17526.92136 0 48910.00168 771.9570144 0 6772.467925 22629.24849 0 3051.167851 0 3519.826472 0 0 1922.651464 38394.53084 1816.400629 5413.964904 43315.65452 0 25706.32223 10638.37915 62388.04428 3471.463026 20771.15583 257.4543931 15820.35292 2865.006252 0 0 0 681.1880995 5081.891078 0 204.3156546 58552.22634 14774.49097 155.635919 15018.7891 64542.17771 29048.47802 56473.26429 0 24750.32396 674.6796941 0 0 2363.246285 0 3502.028628 3800.285445 9289.340593 26527.7893 1774.962344 20368.18886 0 966.9965055 0 7897.532592 0 0 0 14184.95862 2913.26677 5555.034411 0 10155.10961 260.0123768 1633.712144 0 4746.013403 5297.177896 0 0 6459.91275 17578.40536 40791.60579 3537.775296 0 7.798274428e-06 0 0 0 2345.98146 0 10844.24978 9586.451086 4442.673582 1010.815298 3943.016653 2189.778006 60304.57421 0 0 0 40630.21737 340.9129317 5325.084879 0 3152.672379 18654.56894 21666.55226 63025.72435 4364.913196 0 26529.29337 2704.729072 7433.028423 24.78887828 47696.69988 36867.40232 134.394922 403.9120739 39.09430552 3847.205213 0 0 0 0 31522.26915 18239.38791 17404.42618 2821.609216 13066.64051 14.26774415 3250.072675 27967.01458 96.56447776 0 1842.449595 35578.01988 0.7562105927 0 0 0 188.6126675 6974.617334 1264.366845 11999.64685 0 0 187.9836258 0 52686.15661 0 42173.45749 0 0 22228.25571 25398.6728 5492.359669 21078.99812 0 21041.60914 0 77.82770464 8659.282164 25248.9617 25434.69036 53656.50535 5599.878397 60627.8784 3267.311896 0 4937.467153 114.6648755 0 42915.8161 0.4474664546 0 0 35.4586484 0 5922.558438 1870.743764 8297.099105 0 0 57.31478146 9397.745784 2635.359784 40838.39675 0 0 22497.00939 0 234.6570569 0 0 12717.29985 0 1078.024892 +941.4331219 3251.060865 0 18978.26057 4686.395808 0 0 0 4848.978805 0 3662.084236 0 18284.5734 0 216.9466649 0 127.1164053 0 3543.890389 19155.09018 9006.343716 2622.844106 0 0 1385.209234 0 4172.609189 0 0 0 68386.12983 10838.23107 0 38545.48515 9517.573125 17074.84792 4723.867685 0 1016.448757 9816.967334 1373.312278 0 4299.234469 4246.785517 0 404.1537002 0 6172.991522 6014.519894 0 21.76439994 0 6857.254619 7620.328955 9682.951854 0 5310.04893 0 0 0 19251.39903 0 1092.794321 57954.90897 0 1772.282263 7620.757872 1767.730464 0 4160.238477 6225.773654 11109.53878 2339.447939 3012.771686 0 2270.273164 0 0 14072.68167 0 0 0 0 6405.002497 22082.19068 48.80277157 86.53787426 42854.52216 124.7609043 7729.956728 1387.74946 6442.005801 2004.325712 16470.79487 0 0 4608.228414 0 8909.798973 0 0 327.4984815 0 0 5480.715598 54311.99554 1969.600662 3616.198349 18894.40434 0 2086.58801 32047.54574 0 6483.562441 0 46318.37018 10540.89766 28594.16399 15918.82404 5172.805733 30.28381685 0 646.3206237 5076.523365 2002.205142 781.3054028 11767.82223 0 12222.42092 0 3247.630752 0 0 0 0 0 20124.07002 61824.6717 1679.055408 4734.237585 4523.847433 60401.22749 77.53887313 1523.319411 0 41745.83233 35602.35231 0 13838.42075 407.8236145 2670.92603 3514.346568 18945.0266 822.4431427 0 0 7869.834141 34292.30523 1260.431507 1.438428218e-12 0 1363.007492 0 0 2194.884451 9404.536888 32142.9416 0 94.94278305 1441.726805 2316.13653 34266.46357 0 47.10229478 15196.50314 2987.761948 862.5647345 0 0 0 0 8409.181488 33447.86577 1334.473853 2402.826242 4437.927926 2056.198504 0 22491.44166 0 0 739.6588033 29.27817931 0 0 50.22217331 2653.156888 4045.801748 0 32116.51927 135.0903787 4285.671886 0 3851.114123 7366.757106 0 48014.94363 0 510.3625693 0 38928.2151 4652.030956 0 19517.54932 0 0 4385.330748 20806.31229 0 16308.65079 8211.847451 52.46538534 13831.01924 19766.097 7245.637342 0 0 3592.692685 0 0 18751.32788 0 3408.829188 581.961557 1456.627542 0 0 0 24383.89129 7458.287778 16421.63905 0 14348.91883 238.9797768 7241.648286 2969.985797 9383.180316 185.1152506 12738.46946 63708.80101 2078.980058 11288.04551 3352.229514 40916.18271 3694.689486 0 38.22491325 0 6932.210768 0 3359.036031 0 13250.14838 33538.79606 0 0 0 1863.368005 16907.49332 8486.334507 0 0 17656.58441 0 23975.49439 9874.320884 0 0 8030.060813 20977.65636 0 1053.133862 25877.9515 266.2153472 0 0 0 2917.561924 1765.280689 0 0 0 377.3769832 9103.192821 0 0 0 3248.402583 0 0 +0 9256.821141 205.4365034 997.7336998 0 0 20616.39013 0 4442.834326 24437.47285 0 0 0 1714.066822 352.7626442 0 1804.61893 2180.744527 94.45877336 6892.096334 4282.975923 7464.277358 0 588.2711505 3666.607807 0 4461.983851 0 5582.573234 2247.023003 22991.6594 15908.002 0 0 0 0 2433.696243 4291.619976 0 0 0 0.005245700261 6290.716608 1978.174048 180.2362811 2.122279332e-09 4061.346783 1.603566926 1301.40677 0 44910.26482 7742.570005 9102.030577 21187.7482 1342.029114 0 0 0 0 1009.074462 6448.958492 29414.15607 0 31131.74035 0 5832.809016 0 25.72085996 0 0 336.5352312 0 0 624.6031714 52969.33924 3648.18993 35917.62404 0 0 7372.530085 0 26013.10768 47085.38393 1908.289726 0 6508.923917 11248.82953 0 50542.74653 150.2004963 0 2856.625121 0 32805.83103 0 28783.39946 61582.19351 50788.85578 599.672146 5369.342993 13435.57758 196.7252735 12541.32755 0 3983.874945 0 0 26883.4685 20271.36312 27310.54785 0 4847.935637 665.8369497 36362.0394 0 4457.620042 8901.128905 0 24592.14712 0 42.54181728 29.82364427 45434.19244 31260.23712 2688.833574 0 6386.508524 42847.05791 36401.31533 0 10294.69832 1202.029047 0 39774.86607 308.0013954 117.6176484 3.13519212e-06 0 18244.22554 60041.37723 38797.11164 31020.74027 6568.54973 19.10419087 0 0 58894.1577 0 0 122.4027588 74210.85349 3361.430446 0 0 0 1498.101183 36024.44222 2002.000341 0 0 0 18408.86105 8415.401559 0 27581.97935 43538.63781 19276.11039 34909.40993 26108.41856 15115.64547 11325.42271 0 4577.822235 0 9629.433559 20762.89833 1479.789413 3570.310639 5342.70741 41362.089 0.08539437805 3403.295943 20612.51839 37174.3782 9418.358798 0 14518.34296 19879.66393 0 43.57678311 2181.187888 0 3329.795557 8286.614771 0 0 15189.7897 136.073823 1384.966705 0 532.6947005 10011.41993 8922.06647 0 0 4636.921531 1.132608188 34401.36358 4695.396855 0 0 2664.784825 0 0 5861.628688 432.0903642 0 376.5138765 0 13517.67105 15850.96123 8691.24205 3914.785559 114.7172149 32816.95825 0 62855.76806 67988.75455 457.201002 0 0 225.9973215 165.2416055 0 0 0 1029.477894 7864.56195 0 0 38569.03871 4514.063087 0 0 25.52891009 38601.00658 0 0 2470.559867 0 0 1688.589697 0 20525.03192 7048.51685 246.230531 0 0 9673.986816 0 18648.73005 0 1655.13836 291.4971186 0 9294.479222 9765.281368 2126.237299 269.110545 17243.50791 8260.207666 165.3975957 0 3518.758357 2073.935551 5157.028349 6537.661379 0 0 0 0 0 0 2728.85763 0 132.0859645 304.9606921 0 0 11806.12515 0 0 2863.662845 0 0 0 3658.278955 38001.54826 0 0 +0 2337.869132 0 0 0 0 4042.297997 1909.601322 0 0 0 0 15832.09764 17994.44676 0 39502.09006 2278.630072 0 0 4982.649115 37739.25059 34405.04342 0 0 0 53019.19851 0 0 0 5315.811426 0 21.8704822 3269.610231 4563.353292 0 2161.945693 4605.733947 107.9614435 8414.03175 36211.32951 9676.969957 275.8009442 21367.65356 31678.87592 0.001754407504 15047.4591 0 0 110.6849245 0 0 0 6870.568522 14806.66568 25101.81301 0 0 23647.98434 2801.027182 31524.4072 57263.90738 0 48871.75839 9462.966264 36704.90706 0 0 0 0 38366.15822 8.717561732 6462.605324 783.0127836 31448.5947 2867.722958 0 3363.38187 4084.879495 3661.358608 0 8427.644042 0 13811.77593 8523.694073 0 0 3435.157535 46465.37034 6720.699956 7935.568894 4163.424851 0 6597.139034 6757.210315 0 22498.49252 4293.551019 32208.43353 398.995111 0 0 0 19894.45494 0 817.0665037 3.348175751e-12 0 6097.20215 103.5467824 0 9886.59038 4295.58062 0 32002.10393 0 0 1004.625737 20838.77448 29075.37118 13389.86865 65416.79583 0 0.934850894 17916.22047 0 160.0107214 50832.26538 0 0 7368.548151 0 0 0 10998.14495 60731.25357 10152.98309 25287.06285 3056.581183 2467.500904 0 21.53660843 3524.256169 29853.71803 0 4586.284872 27352.6393 6520.432262 28990.9638 49806.7748 0 66508.75267 0 0 45729.66534 3160.929044 6901.402548 4743.492253 0 0 23884.83671 38171.98501 3268.019194 8625.414433 0 3985.565118 41731.84273 5427.566047 0 230.9068184 15572.22767 10829.93658 103.3362908 5106.259089 122.2452895 0 0.06719450199 2254.49538 3588.187777 45388.32096 0 1.33039418e-13 0 35591.9602 4519.452974 33560.19559 0 0 16597.19149 5383.41471 4938.550743 4455.125889 37826.48376 33.82587615 2975.346742 23876.08877 0 0 0 53801.36846 0 0 8376.790799 0 0 0 6.11795176e-05 5065.516866 0 0 0 15450.2065 81125.32246 0 14058.05665 0 130.2955793 2788.807935 3221.419175 5325.76692 0 783.3102617 3194.291918 0 0 30459.33232 8039.779632 318.5180809 0 0.001726599385 0 0 0 2856.980338 8142.636015 4353.208593 16832.75433 50191.35854 36557.49806 0 45784.45369 0 0 3201.093155 50828.64465 0 24131.53694 0 0 17384.99861 1499.962761 33744.27607 0 0 0 6774.903989 3899.326248 0 0 0 2547.784223 14764.07821 30157.72365 9977.149795 0 6920.959197 5500.980245 1975.067946 0 54669.04265 17605.21071 54.10222311 7529.395308 0 24690.32388 4461.682771 0 28698.44216 2302.626315 299.452288 3884.449213 117.8886282 0 8300.362671 8667.10984 0 0 131.7497703 0 0 0 24055.25428 0 6713.271831 2823.216546 223.6995273 0 32259.92317 0 0 0 +0 0 0 3406.897258 8878.854627 746.0761514 1689.372222 6963.383212 0 2.068645775 1026.472067 0 46573.75516 1063.804366 0 5058.588765 13861.78455 33035.00964 1785.841102 4087.587209 0 9513.694048 56093.18339 0 0 0 0 2736.316641 0 0 0 5981.980457 0 0 1135.267305 1766.047681 6546.203954 334.5031743 2411.161008 51.09392795 57885.41091 0 0 24706.29156 0 23063.28144 0 0 5378.014202 24590.36197 0 0 0 120.2864647 0 0 0 0 32.94113966 43385.87239 0 4986.168323 98.53157983 35534.90998 4446.382504 0 50.39852276 44861.03278 0 103.0615596 0 0 0 2263.105228 10888.0068 0 9312.743862 28705.98567 2213.426408 0 2762.957928 0 0 28224.73935 524.5079823 146.2627405 0 0.03419480333 5868.478571 47119.50967 984.8867636 25022.96972 6903.130999 15451.72126 0 0 2404.586766 37490.7922 1712.45733 3632.338856 29747.01463 0 7236.774799 16614.66957 0 0 58382.21175 4541.971727 514.6698474 0 1131.82683 0 23863.25447 0 4646.617917 26101.63337 10486.64867 21317.22739 0 1005.489337 9938.555085 383.4400788 2446.091221 2632.959937 36568.21423 0 13659.93582 0 6423.312523 32.40376964 3340.817449 1868.002969 0 2737.713622 9360.334663 949.5212049 23591.7313 0 0 2026.941761 42419.05457 390.8376259 3.589943451e-06 0 2922.704125 23066.13553 1761.056331 1249.325222 0 46350.61907 2076.880641 10715.8197 0 33132.40073 1639.492755 1491.602872 0 0 24823.84986 0 59.34561741 15108.53498 10095.16213 13191.52511 27926.28072 0 2107.520673 37868.27475 15246.37202 6756.33654 51040.2538 751.8931819 10974.57718 16987.65911 3845.350472 1786.567398 12194.2842 2186.053769 13393.76566 37579.95606 3423.872001 0 0 8275.187295 0 1952.099434 0 570.9404144 168.7579176 2835.9909 4899.39341 11074.89458 0 0 2614.970716 21125.68841 5156.168307 0 0 28430.04645 7942.736358 13537.26862 0 616.8059795 74.68228662 0 17241.32395 33.18361205 0 52962.83571 0 5703.516412 4873.329571 0 0 3593.937839 940.6038671 3171.241522 0 2836.171071 1796.211946 16417.95603 27820.99046 38628.59898 1983.573645 0 0 1739.53998 92.75280262 744.3138306 0 0 0 0 30016.55706 0 1849.515187 16947.91783 1914.67234 961.5836016 0 10016.58317 3446.649186 2159.016741 413.529607 0 10836.83492 684.4594599 0 0 4.697134117 12998.49998 6882.186076 5558.023135 0 37.0361144 10004.12951 2104.262853 0 17342.8557 0 3599.286261 2682.304243 16153.23247 64925.18267 6018.990967 0 0 196.8304066 30.18353402 0 0 23054.85706 12405.32037 0 0 21001.54572 5745.812114 400.6471521 4633.274321 0 2892.074252 0 0.0001001032388 321.6342591 0 0 0 47395.71521 0 0 0 12578.30504 0 0 0 6380.163897 9975.544686 14506.47235 422.2443513 +0 52334.90825 1005.027647 19814.1184 0 0 0 0 0.08836567732 0 4769.776541 878.5591708 0 670.9974143 0 35816.02813 0 845.1244934 0 0 0 0 0 0 37.33013598 2356.203336 466.3313018 0 17445.04109 0 20441.42676 78.84282617 34006.6095 0 0 14435.62243 89.74210419 0 14380.88027 0 45.71152236 0 0 0 9847.616063 120.5210706 0 0 334.0009585 6169.178211 35878.63869 1906.739806 14522.94984 24360.92807 0 38605.03423 0 11053.36914 0 0 32909.66035 35883.0915 0.001789174104 5497.991908 8202.077406 14.53789555 2460.50758 0 0 17963.59668 0 1739.096287 0 28301.86468 7848.036864 42639.40953 10856.91702 1463.678016 0 13747.46808 245.9641947 0 5971.223852 14101.28655 0 4.093364581e-12 2553.032221 33513.88905 33513.58486 231.2952664 0 0 0 8847.578794 36736.24119 0 3867.343587 10371.41367 21668.68487 0 4295.542813 5255.032152 2938.828614 3478.487224 3982.537726 0 4096.773439 4329.816363 35179.0137 0 0 0 7667.341662 0 5440.01539 23711.29223 25038.72542 4302.820708 0 39744.51627 0 0 1950.436393 37076.7541 0 0 16067.473 0 23986.98874 7466.396002 1981.782597 0 10429.32244 0 28762.08901 9514.34379 0.148769249 7407.416142 1202.744711 78.03637169 0 2427.040125 77.5540936 5698.326744 4091.010053 2358.762964 25.14115774 37706.52275 3961.742893 1382.796626 0 0 9489.525511 13953.85673 0 11311.92111 27324.07463 1689.66064 20053.14362 20417.85148 0 9513.441864 60.69739044 0 17409.11077 0 4079.388706 221.8999991 0 37983.99267 42210.89584 8420.563305 3407.751917 0 7476.681173 0 31989.24193 3287.887833 8.588393974e-10 6400.4638 0 26606.77792 12543.51808 0 10234.4648 29809.83894 36675.36166 1850.992565 4466.093888 200.0326396 2252.658965 1774.96635 38445.1278 120.2862277 0 4332.79645 15024.34606 51472.59944 11550.97897 49635.10746 21512.88041 35.03611011 0 22383.76831 0 25711.68999 0 89.66917018 7073.771017 630.2235942 0.02272034849 0 30.15544394 5477.769745 98.95915327 15528.18846 6496.887971 43513.52974 5316.433916 0 0 7422.893236 3027.41721 0 1885.176902 4022.335003 530.76517 4665.344076 0 926.3821389 0 902.6706732 0 0 12149.54 7658.707622 5144.727389 0 33.12979784 0 2768.394465 12100.38256 1473.549614 120.6334338 9860.490024 0 0 11534.14941 0 551.7522175 0 0 0 282.2160721 0 0 24951.61242 21856.29851 0 0 27408.69185 33076.24919 0 11638.17709 0 703.0752889 0 694.8617974 2530.73231 13274.65889 0 6810.744996 0 26717.35227 0 17944.21757 3098.219663 2131.027008 0 1389.134426 4421.428455 0 18.35226207 101.7354094 0 2799.200597 7360.740986 0 1.775715284e-11 0 21994.55699 71.09345259 995.2083117 50944.06339 0 0 14.27350362 0 1.068411101 0 +0 1869.275859 0 13825.68632 0 6198.200559 0 403.2883302 10675.15648 2268.939353 0 205.1079722 3686.943809 3572.865997 0 0 0 0 3835.916027 5412.613602 25741.43898 3728.538592 13064.27316 0 0 4864.716883 0 3965.863762 2068.962303 184.3626555 14420.02623 297.3841748 1983.430565 25116.56728 0 10965.64841 2126.552767 27763.35249 460.005601 4965.950576 297.8885741 0 33647.08041 31922.49415 6513.209036 0 6966.294882 49.2797983 0 0 9836.778719 1563.794851 0 116.9810547 0 0 30.99543578 11016.37489 2408.019492 608.3664646 0 0 0 68.77285577 0 2094.68959 0 0 62723.90455 1718.240235 4076.565681 11538.28098 0 8682.89839 0 0 10335.07693 29132.25446 14223.78011 0 0 0 1108.170878 0 0 30500.87616 3305.455698 2583.843109 0 0 626.9345073 28076.61534 0 1443.161413 0 0 2018.598634 5841.079604 263.2333201 0 5854.755215 695.1264344 40052.07233 2643.653667 26625.26744 70811.02057 17546.91507 45523.75372 964.4509555 35977.569 0 73993.67991 18166.53093 0 5052.776278 30760.50815 7909.28055 7313.038204 0 21942.58658 0 0 7805.64173 0 8613.621159 0 9653.63219 0 16982.16329 4465.233437 14358.1656 5866.491717 0 3077.135042 20416.56538 6261.299157 40447.53178 0 28839.17243 0 1455.612488 27863.70867 0 0 704.323291 35746.60883 15283.16556 0.0002979493097 9498.197662 0 7304.961249 0 4140.097075 3549.907992 3628.253712 34785.92268 39171.34704 16170.22068 66122.55793 46.77925593 1920.423933 117.1459524 0 8083.01866 0 77.87162123 0 0 0 11182.93103 39.95665898 14711.88756 1458.015939 0 2306.724577 19847.52599 47119.40069 0 7189.279124 0 13292.99302 0 0 8.597715976e-07 0 11481.42539 2455.777262 0 0 46.79801954 170.1261278 156.0678306 28960.53466 56.83466633 0 2043.926784 0 0 4804.903374 0 1401.938008 19167.54132 142.0331742 0 0 70372.27497 0 6699.604952 5710.891726 4870.991453 42393.76383 2422.991408 9898.984008 0 53281.17573 0 0 0 44781.92106 9349.942884 34.38306986 0.6051359992 0 295.3694206 0 16463.85759 0 161.685644 0 0 9990.402186 31561.55958 5400.578733 0 0 1177.117116 2871.072056 46484.24355 260.0290571 2495.914746 6570.615542 2534.232231 15482.28718 1395.075257 0 0 12321.43376 0 2820.637855 6522.385934 16942.74882 0 308.9240712 4901.612822 862.866607 0 38114.85438 6704.072061 4389.470961 17984.08696 5862.84764 0 2709.527507 1312.555991 0 3427.927317 25312.07553 38554.05381 2696.298347 336.0646483 0 1983.957756 952.5205584 0 4616.972673 0 0 0 0 15236.32955 7077.629443 0 30999.34792 37858.50979 0 2016.604525 34079.09088 40023.24616 0 0 6476.858048 0 14177.69505 3000.384756 0 1978.749551 17252.46264 18123.22554 0 0 +0 10180.78639 0 17859.84168 0 0 0 0 5917.727746 3563.930365 0 1498.50957 3756.742551 8260.928483 5696.916817 0 3060.794881 0 0 9805.132347 18014.52244 20923.21404 0 2549.332225 1915.364747 136.9239637 0 2209.097124 0 0 577.2125039 2366.193487 15362.96024 0 32262.23292 0 0 10.41606495 34.04984399 181.1822388 505.9049229 0 22927.59335 0 0 3347.203198 0 2957.250573 19411.6607 0 3889.282332 3281.591963 70.59786886 16961.18138 2402.722047 0 0 7306.260692 0 9342.195598 18098.77668 0 5846.51775 0 4360.377594 8039.909058 5201.124076 1660.753521 3871.463767 0 0 21461.9179 0 10869.00474 0 0 45027.03859 17017.9622 4679.702824 3152.911407 0 177.4864658 0 62935.05981 30035.07431 4380.256478 0 51926.14425 42060.78506 77258.35422 9374.362989 0 7611.427847 62989.09287 0.005534092357 1.280656836 39052.93059 16904.3356 46.31457846 0 20126.15206 41.75664315 46499.12809 612.1345609 5976.298433 31506.93176 14484.33633 2952.757438 322.6012624 0 2301.702461 10525.57513 0 72891.68887 7004.616836 0 1424.343891 4121.221348 0 7328.480909 182.5198667 67903.00376 9599.673574 565.7735633 1565.274427 0 0 6816.858435 0 0 1453.858611 0 2472.580168 5628.657985 25522.36942 3141.741293 785.3889129 23445.26733 4035.477298 1230.311784 76518.75777 0 53162.30895 21348.59995 9896.690739 5159.175407 15203.25182 3171.500732 0 133.9505944 0 5191.839152 6985.501723 0 0 1.018695866e-08 42615.40845 0 0 4535.63711 10483.01576 11879.56381 16189.38208 132.9996118 46763.49805 12759.65923 39899.6067 1934.642544 1849.24593 8200.030295 2632.74774 0 2147.935396 2174.63808 5093.698358 1305.474778 0 0 13466.72255 3904.525933 4300.975385 38914.5796 0 21482.10137 0 0 6088.945206 2030.516028 33814.71024 367.600007 1030.357006 5017.558209 54017.61848 64.98380461 0 27959.34822 0 0 986.5020784 6663.929855 0 0 74.28606294 4874.849593 59466.17266 1728.153615 3246.013029 2098.294404 3375.220105 25865.58045 0 0 0 1.676497741e-08 0 5215.040405 24449.63663 0.00445313044 8342.899544 2177.234277 831.6059753 0 15657.55981 33.18889273 607.3206113 8499.655439 0 48126.70101 620.8405493 46813.23644 0 12693.98987 11567.33635 55.24446298 0 0 0 11096.74441 0 35052.77842 0 1107.589339 0 0 0 8447.216841 9902.362162 2685.615197 0 8165.095704 2066.334726 0 1976.818761 1418.753155 0 2865.884017 3172.430544 17.11330293 28532.26284 0 0 0 41701.2024 6581.396613 0 65748.55602 14721.4507 0 0 15598.34463 5650.751602 39.24208252 0 0 240.8071678 2287.108886 4730.754343 0 0 32384.19409 2877.837714 55.26334115 0 0 0 0 0 0 0 9457.922743 21809.75539 0 13215.57135 0 0 53735.03264 0 0 26030.97288 50785.94983 +0 24445.86374 0 0 4173.798898 12693.66172 0 0 0 60.58090848 0 0 229.3208003 9633.12063 292.5924345 133.0860821 5381.51945 0 5485.844921 0 0 14837.62892 0 3383.621908 3876.471006 0 0 4362.704926 0 0 6473.577791 0 0 2191.048207 0 0 0 5136.939792 0 46905.69916 4876.162842 0 0 0 0 9024.784105 0 0 36.18678207 0 13583.88587 27277.34637 371.6665189 29290.21034 0 4160.508099 0 0 10853.19614 7121.95801 24259.22322 0 0 0 11478.53361 1575.699917 0 70043.02213 0 8860.32509 98.85476886 317.9248566 1573.084454 0 694.4227091 1484.910261 13514.09346 10698.15459 0 0 22037.46595 7997.271575 0 14502.57546 0 3366.92669 0 0 0 29120.74031 189.217548 0 14292.63701 48.1128369 15109.08558 7.631318084 56389.66358 10703.63762 0 0 35534.40127 7097.566555 71187.83049 4407.297143 0 38684.86368 17339.40714 0 5188.430455 0 556.198996 0 36.51484179 6038.479823 0 30091.73667 205.4717954 10.21063373 0 1913.221752 0 14160.88794 3907.936016 19996.70879 0 12078.59712 25184.68008 0 51.61286228 16434.71553 36945.92486 0 35460.30516 1747.370483 24938.27537 0 0 0 293.6068262 3023.617481 4859.91547 79368.87519 4627.908046 4581.307255 0 886.1664728 0 0 13730.42887 5313.572786 6558.593196 0 0 16302.26537 2263.575089 0 11388.34916 1834.160725 8674.368093 13304.97235 18894.8227 32840.48013 69429.76316 4821.650155 48.28203477 2979.913299 0 10607.9724 19791.11238 58633.03942 1.988720813 0 129.273253 6078.416852 29423.90198 6.642742112e-08 1494.551819 0 1168.018758 0 0 0 0 38709.01878 2126.853698 72289.41516 47398.40838 49.71778465 13675.49677 2286.975361 9540.768601 0 41962.59738 0 7804.603929 1550.843536 0 8682.335264 0 27672.61569 0 1461.959235 3717.110513 0 38.13114524 18471.89814 1293.195837 0 0 0 0 0 3601.006819 25488.50243 0 9012.369271 6354.541019 21455.54687 21835.6258 55981.53216 1573.869056 31194.23252 20066.63797 0 5464.735124 0 0 44892.67637 11212.1847 0 0 2269.862426 45056.5837 8011.334478 2.654389806 25374.04634 1498.203212 0 1872.488532 0 19721.2539 2523.399947 364.3383223 0 5471.290031 2345.055656 677.0032273 0 46818.60184 0 7397.610563 0 0 16.63950127 10423.1776 1504.665417 8438.255377 0 0 2033.572585 2246.902227 1586.416107 222.8833647 9926.239286 3637.148137 2259.77046 7894.328121 0 0 28339.06967 38.63937182 37.24715076 20254.22231 0 0 14591.28184 0 0 5409.577216 0 0 187.5886643 14223.0796 5350.773189 0 0 23017.08403 19822.84095 3733.440786 57905.71823 0 0 3.269748971 169.8677054 87.12031649 63.50157983 0 5279.120622 0 13100.49959 +0 3.325212385e-09 9273.848615 0 0 0 550.7334647 0 8571.152347 0 0 40438.35959 0 2753.071639 14501.49951 0 0 0 0 16019.3101 22952.512 0 108.8909029 6851.378151 50288.70687 9377.385283 9587.255148 0 0 1712.599253 0 0 7248.04555 42784.86833 0 19425.89078 3784.252267 1556.652919 994.2377676 3960.362771 37920.54391 0 0 31.37302631 8497.609666 0 0 28202.50622 0.5977379861 0 23390.47806 0 1595.445596 2471.815956 0 5365.400074 49023.96381 0 19037.41483 1973.330367 0 21590.60957 0 0 93500.43855 16287.32055 46897.88421 2571.308173 1030.071459 21555.07926 14366.49375 6966.750845 0 1338.681087 5947.96163 24992.76967 0 17205.41193 48477.76128 0 0 0 11895.0135 23041.32794 267.7410943 0 0 583.9761969 0 37517.87757 0 3658.234031 8549.363018 0 25827.12227 14006.395 33233.54681 0 0 46780.28549 4934.615717 40290.95847 0 5727.139366 0 0 60534.99382 1826.816753 6695.890324 1711.530816 0 2520.813531 0 3043.091774 36308.94008 3644.525933 0 3945.878508 43727.6133 0 9.157686541 25894.04765 38535.79724 4947.314873 10292.2395 0 32812.16589 0 2024.970146 44399.00783 0 3295.218817 0 0 8268.527946 12386.09984 10142.01846 0 140.3564299 441.8386588 20751.09933 14950.38198 4377.137427 0 2589.465446 0 2119.175062 18331.34686 0 62701.56995 19114.74758 0 30742.7281 1521.022268 2595.390038 4621.861638 6904.360261 2826.918087 0 0 0 0 0 0 0 5923.244254 0 17537.14191 44.18845027 522.5245385 0 6310.201393 213.5993325 0 3531.478941 0 20350.89847 38191.46794 0 0 27837.65484 7650.807416 0 0 0 0 6499.968535 14517.6649 46.12776545 28675.98084 10102.0102 0 33314.64904 30222.44184 13175.30005 23829.94097 41798.6449 0 9.806752554 11224.38038 227.3655587 29617.38075 0 0 13245.81112 6334.502928 0 0 49996.44744 0 0 6222.82155 0 34191.39858 23867.44573 0 19261.34375 35311.12232 0 1176.898154 4677.001408 0 43986.24552 3945.361801 6383.244288 7397.216101 12769.70037 0 0 53.77207162 36745.3311 13125.10672 0 0 0 1872.478222 388.4020295 3660.289915 22643.53992 8.384360718e-12 0 0 0 0 56046.63273 3130.363333 0 0 1328.330486 1447.761415 374.7860112 40706.49661 2116.668514 13321.72065 2080.732184 0 28810.78574 0 12416.63796 0 0 0 994.0107803 0 3958.700993 0 2969.615002 0 4831.577827 13510.68025 0 43196.61642 2892.069937 0 0 15.9367323 1294.142009 0 7375.074701 36592.36109 1056.218184 0 3163.367879 0 0 14692.85294 16297.52536 4245.469975 5789.728769 0 2049.185397 0 0 0 0 10140.92677 1068.147207 0 0 33095.14684 +7495.169098 0 105.1438419 0 0 18725.70664 0 0 0 5842.463428 0 0 26201.33818 0 0 223.4640777 0 6869.730758 0 0 0 0 32387.39501 0 0 4540.830682 0 24835.85194 9168.729343 9566.219994 0 0 0 595.3138019 1734.101503 0 7780.463064 51312.89724 41377.22679 0 0 10020.72057 1781.731522 3730.620603 0 1789.365608 2539.462008 0 2007.146307 468.6237989 5509.039396 367.9585534 3631.597488 0 425.0654418 1884.598925 26.04994576 0 0 3632.634506 3939.194183 17010.54019 7591.906114 29122.64322 56.11605246 18299.75906 92.24481846 0 413.1866474 57987.7481 0 78037.62353 0 25498.71448 0 14314.25513 0 495.2948885 0 2025.840012 0 105.3522108 8780.709277 12255.73 366.7908319 6299.020728 0 26442.94767 0 544.783913 5244.392688 4068.363668 0 7439.426703 56558.07667 11678.50863 24508.99432 8234.032369 2042.748107 0 0 1093.646377 23610.58376 32579.2868 0 35498.07453 1986.370461 11996.06792 17387.86499 27025.51392 20781.37229 16636.87275 0 0 7194.209648 11380.23594 1608.211114 2332.349802 0 0 21008.16019 0 178.7750784 526.2925419 25468.66829 57263.69638 9900.207253 2803.344926 57382.37844 32288.27059 5074.838375 5413.79334 36990.72152 27553.27632 80944.19906 0 0 0 9128.301972 2153.741477 0 11048.09313 7055.750609 22912.23123 43779.01542 16041.0174 5.889249752e-13 261.4713345 26177.3569 35582.11758 4526.786499 0 20278.93438 0 0 0 61228.6575 47153.12003 1539.456015 8464.095425 0 0 36686.43025 1104.275725 15038.0462 11130.09818 0 5677.056957 21758.6072 5092.995548 24006.27557 7351.584733 35772.41141 60270.48213 200.9258496 0 14458.39667 8034.195985 7385.185004 81.24159102 0 51509.99256 0 8010.746065 2370.425892 23925.23706 5885.644867 46146.38661 1295.855454 9944.295577 13672.97333 273.0754422 24902.56085 0.0003223850438 0 8229.511336 44861.62011 0 3126.221163 7068.602653 0.0001933451219 5359.962708 0 0 25788.82202 5112.075431 17568.54297 403.2769879 5521.435288 0 48082.07023 39577.83368 20617.40295 0 0.1757967429 70.30428669 38801.1958 2292.659177 0.6647083635 13412.96724 0 0 17830.18836 4027.328464 7314.02423 0 0 8284.9668 25295.97045 33250.70364 0 14532.77234 5493.177718 0 0 0 5818.010531 0 7897.03162 44308.90262 29456.83009 3575.812946 60661.97863 0 2942.358068 0 0 289.6789892 33418.79488 0 0 0 0 229.4142537 19214.77419 5506.036103 0 0 0 155.7165624 10494.86435 330.7550287 4846.429477 1179.231786 683.6590206 3871.241338 0 0 0 0 359.8728836 0 114.6993464 0 0 0 9707.900574 16284.0355 34938.50583 5446.546123 0 5035.336638 471.8863585 0 5135.598411 911.2901056 0 55766.00279 0 0 952.7669742 2855.460779 10867.3196 98.01944243 0 51585.03322 2823.295663 8555.038128 32708.41282 0 +566.3347387 3984.419367 1909.872039 10125.51231 54589.2744 697.2969978 23585.97782 19830.49718 24420.65179 19029.56863 7.62607078 0 8183.327632 1469.802806 2036.047238 2967.378027 1413.514628 0 15706.59951 0 0 0 0 0 0 5350.817213 31161.11664 2452.67812 607.1855158 7100.007823 3790.9248 376.3761793 36785.98561 46826.357 8566.176367 205.2610356 0 0 0 5865.475724 0 0 0 4340.700242 0 40735.49917 0 28493.66179 260.9089091 0 79444.87086 26761.68927 0 0 10990.74185 421.0780052 71984.09317 0 596.1599545 0 26712.57574 765.8013714 1468.621607 108.5096776 14584.89651 0 17192.18474 0 0 8528.068648 0 17124.63565 0 14978.3324 38309.58764 0 33.46601509 0 10501.46499 5162.639203 6891.402593 24576.6976 3352.898518 2477.629256 4746.764312 0 5322.519818 0 0 47839.43977 0 0 32881.77055 0 1564.178447 47973.45681 7621.86979 15798.61795 11772.03661 377.2498984 20452.51788 1377.380562 3346.742741 4060.187576 24151.84188 4328.917966 30.86806664 19182.29541 7702.073586 3185.724214 42855.03453 61.37605478 21409.19146 2109.230881 5374.695802 1790.590669 0 0 0 21967.20744 2963.523569 9042.073916 29757.02709 780.6748591 10334.37849 27312.09753 207.495575 2.380945317e-05 40540.07855 539.6626862 6112.090303 2124.143135 0 47541.30319 24791.23182 6808.35407 0 19606.29308 0 8605.769938 411.0497934 5763.568359 21223.86997 0 0.005425311932 1990.913915 0 0 11698.92934 46.44788543 1101.67745 0 33797.02026 0 0 23830.12251 0 0 0 0 0 754.7617489 5709.181158 27509.99751 0 63.32558685 0 8752.442344 15045.90696 1446.100363 29582.65567 0 12120.23605 0 0 33967.57776 0 67331.30849 0 23509.2764 2546.54042 0 13172.84445 4692.318553 19388.24412 21191.36042 26301.04241 1802.003824 103.9638871 0 3052.923445 0 3205.586402 1616.436051 20620.34049 1672.852341 2102.330136 0 6372.031498 0 2506.781444 47.98962011 0 0 199.9943878 39526.53489 0 0 5309.314398 27499.18339 0 0 0 17168.83451 0 5927.805472 0 38060.68768 0 2403.109469 9831.000649 2576.027601 3303.557633 2760.139665 8860.941922 494.4712816 6984.369084 0 0 0 25355.46156 43449.78014 32796.42562 0 0 4326.466424 12503.38211 14984.44235 8195.026103 0 773.2164221 275.6647618 0 50114.49198 0 51828.90166 12113.49004 1047.396922 0 683.5854399 46365.20159 0 59174.888 2931.974621 0 171.7769026 21551.40833 0 4471.601736 0 0 34376.97519 12940.62973 15548.81208 42.72401137 25.49015176 543.233401 0 3008.878415 21404.69106 9147.712851 0 7737.27163 6968.992798 747.4381995 81824.89004 30.31306512 615.709309 38667.08155 0 9304.107739 0 74267.22624 0 3157.947378 2459.07495 5862.584659 0 0 3230.673179 22941.37213 9419.81862 16353.96156 0 8503.558595 123.9281367 0 960.0992413 0 308.1962207 +0 3363.32531 0 0 0 0 0 15345.30796 0 0 0 0 28516.6228 37615.42534 31290.48507 0 4462.697468 1691.527742 1888.074728 0 0 0 0 29911.54625 7764.106255 2763.090815 33163.23101 0 0 4209.925702 0 0 221.2017719 6064.028673 0 7308.499237 17204.41751 0 793.7607654 0 0 20145.03219 0 36119.51048 14653.57956 0 1168.365168 20625.55038 0 0 25741.45727 0 23123.83773 21092.7558 2215.879342 0 171.8618042 0 0 16999.26079 20473.35267 23354.3943 16031.08464 0 4107.459763 142.0205074 0 0 57070.66441 0 30597.05899 0 0 0 0 36560.97274 8693.391211 6.600269302 3765.424267 0 65702.58365 6544.017489 258.9063195 0 19197.21614 29875.04632 3826.546423 46305.29275 3691.686624 4041.344512 172.0327636 0 0 33910.84644 36375.71773 4115.140149 0 503.2391276 0 0 0 791.1055737 2593.21417 3001.239127 0 739.4834353 1963.93089 0 50.09068925 11096.18061 470.4665367 0 24511.2761 34545.86976 72.82504563 0.486272167 45465.82241 528.3883724 17721.45056 71.53036278 7293.121304 5634.867154 0 436.5036128 4052.777937 1687.915744 8339.954708 0 22606.89804 5305.062566 7112.098218 64075.31674 24413.00159 38.74346383 5235.749796 30725.14432 3258.766188 11714.59837 18249.5945 0 11496.54787 3.303950127e-08 0.1060047408 0 0 36561.26462 45447.48622 10245.89502 0 0 54857.09401 17893.74964 13464.30309 28784.46694 16690.07321 0 0 4601.309702 542.0037106 19974.52716 0 2249.755687 0 6385.778645 2940.154759 816.3669672 50529.59297 6426.162429 12338.77033 0 4472.462674 5452.454787 0 1113.452987 221.2339533 39769.16626 29765.25048 574.9631612 0 1768.617015 0 0 12645.44499 55097.6784 0 1233.16032 10011.44657 0 0 20137.32423 39.80998517 6253.412267 119.5262448 29740.5856 16833.99803 81.06584968 0 0 0 627.7913224 55210.25253 145.6848538 0 0 0 12092.42887 14985.8253 15270.56642 5928.909464 43.89702333 32031.59486 6027.554579 11727.95779 102.3406501 0 4165.736127 9337.321519 38660.45429 23889.42203 0 0 0 1107.71444 47893.32158 0 24812.52416 12019.20214 3196.26916 0 506.6109713 0 0 12071.43336 0 0 0 13628.53283 0.0003979116659 3505.848496 4126.119196 21468.94827 1470.124525 3562.352615 112.5641409 0 67.51151432 0 6705.521933 459.163439 49982.81646 19905.60358 20303.277 0 25661.4193 0 49.64321707 0 14318.61339 4134.678361 0 0 241.3362066 96.59598981 0 18511.62875 8740.933189 0 0 1943.824861 39579.25669 0 0 314.6075149 0 0 0 0 387.3935695 0 0 0 11654.78831 0 0 0 0 0 30253.3366 26828.12105 1836.438578 0 0 0 3722.04129 0 42058.32895 3302.011113 1221.973991 0 5643.929996 +0 8901.0199 0 0 0 5293.792623 13189.10608 131.3043191 0 14290.01447 0 26875.34359 20034.33959 0 8076.658325 16646.34567 0 0 0 0 1807.32697 0 20379.90934 36409.02192 0 5478.570545 0 0 0 39607.70356 0 815.3591639 12990.64343 34430.115 26.95005523 0 15881.16696 17031.1649 0 24269.1024 885.7534253 0 0 0 1269.200012 8545.94025 26050.95579 1534.229231 0 48506.3625 19105.19261 0 0 0 0 58844.1687 0.07395157212 14650.31001 113.6821371 34642.13757 0 32028.393 19687.09862 0 0 40148.76953 20921.21313 41367.57781 21489.93196 0 0 33190.55359 7123.74123 26508.24559 22976.49728 0 28350.09677 44115.20489 36807.94167 0 0 7065.601831 0 982.8090071 29028.46839 0 2132.085492 3344.931598 0 0 37159.43812 15940.09 484.4283425 11.99088038 16113.519 101.7490081 0 0 0 0 30996.24431 0 0 0 32124.32902 1105.059653 0 65971.99243 0 0 0 24797.22972 0 7072.912356 97.56215014 5737.635092 3798.34087 444.643164 0 4243.937544 9299.054363 3963.926994 36868.16085 22797.37681 13117.89671 18575.48451 32.46776425 0 0 36489.89023 57349.718 3306.199975 2193.524674 1571.226111 11357.98208 8726.504099 48162.32404 0 14326.24284 2.243652762e-07 18126.46637 0 36214.40268 51001.00569 0.04042575338 0 50869.24038 0 28324.55213 31302.55086 32294.63647 23768.23958 48913.18689 16690.13302 0 3746.13658 18546.18832 1.477938666e-12 7016.79593 8076.496706 15674.79623 57742.92353 61398.46263 21008.01153 64.72759482 5557.928663 0 3673.303344 4034.386429 68.85630012 19823.76857 0 9026.562143 23796.80524 0 0 0 984.9822204 3873.244325 1329.891727 69680.52646 27564.88976 26158.84805 148.808999 0 41569.54229 0 31.4830463 3707.265046 25999.63354 75124.36785 13606.75774 4426.040821 13666.51552 36043.76093 17039.67127 8098.724771 0 33503.23953 2461.499394 0 43393.09048 4416.77369 6426.248383 6903.457464 0 14822.2301 8067.164876 105.5892782 30650.83645 24587.11611 3894.106108 395.4896489 0 91.13377525 18796.86312 228.7876454 38687.70599 0 0 34227.61774 0 41.03358948 212.8543494 9164.552047 164.4370371 0 10467.94326 819.5547254 9739.402958 66.43503503 88.07106971 0 0 0 0 17286.14496 0 0 0 0 0 1464.239759 0 11261.45554 2698.660556 2422.349259 0 1925.334207 0 0 833.7555427 21633.25843 48.35530129 39256.7411 68070.75266 1020.458502 0 163.4873451 0 32405.35682 0 7674.787238 7735.844184 2278.431956 4600.537131 24858.57263 1087.422668 0 19592.69853 228.7546233 0 0 0 28408.44524 0 0 33843.42427 0 1005.59559 1659.03788 4851.470569 3363.273442 0 0 0 16774.66814 0 1.731030499e-06 0 0 0 0 2173.673363 4469.333078 6950.751243 0 0 0 0 +0 0 24662.01462 323.7521585 0 0 9677.802031 0 0 43815.76211 6668.852838 65431.16454 0 0 4192.393596 21071.70586 0 36.17065039 0 41910.42558 0 8381.45653 15982.22222 0 4475.83732 624.4658165 90.97475278 0 6251.37775 0 37326.18093 0.04754290307 0 61150.2887 0 2816.447999 27242.69738 1259.490492 1375.534492 0 0 0 0 1955.786398 78.69632179 31579.85473 0 0 13162.96606 21371.65201 0 2088.730308 0 0 35845.88053 46.95521636 0 0 0 0 1070.886378 0 1790.884505 8616.722149 25825.82537 0 0 6910.759586 14330.46053 11073.53577 0 2984.297867 8745.466494 7343.486018 0 12281.90734 0 1794.03584 0 20847.6049 0 66262.49303 4983.640029 6940.453715 5245.164667 0 46.42423583 0 20102.43943 0 5336.863169 22930.57552 21122.0072 3799.903655 74625.18354 17488.48154 0 34327.62416 21979.0677 4.416034365 12230.19701 25101.32227 0 0 3093.559345 1640.408787 0 2678.093946 0 17265.68589 4057.938943 24236.76841 0 66935.00757 0 0 14308.7026 2258.764619 3816.840542 145.7373864 0 2.480903753 27381.62282 0 16391.76919 0 0 0 0 38458.08388 38936.18323 20043.3525 10813.88955 1550.392815 35327.45208 7750.605823 69.13989867 97.34474147 8085.167275 0.001247822949 0 0 20971.06425 18948.07357 40.73211768 0 21018.96102 0 3751.068352 10857.41103 39386.41895 1125.617903 0 0 23408.74651 0 28340.82278 0 0 0 3886.373783 0 7684.216534 0 52980.91887 13514.8375 10019.19733 513.0642585 8576.412151 0 365.8629926 31182.23052 8145.639797 30298.50993 0 6211.44911 4888.647062 0 52961.81004 14119.3564 4218.376712 708.0363835 53208.36306 1111.707195 0 377.662021 2430.940392 2243.011969 54111.71134 0 3020.71877 0 0 41861.81883 66337.12269 4993.181784 1983.900323 66.45538587 41570.12581 0 0 0 5843.978632 18343.29965 0 21092.83072 893.380152 36136.18243 0 0 0 57630.28988 2366.881892 12201.84588 28.09886873 44879.24032 2479.546513 16918.12468 36272.75175 0 0 16010.30941 0 0 48233.2026 3251.76209 272.7953152 49521.3166 2186.680979 23609.87556 5327.17237 8688.868105 0 0 30369.30289 0 0 0 0 1809.250075 19909.70209 0 0 0 10426.04805 0 0 56859.57159 2863.829816 2311.090848 0 0 1384.453187 0 27570.2242 0 45.00540935 0 8399.520552 0 0 24151.47246 0 4695.524443 145.1996803 0 0 12300.65863 42175.72265 528.2633583 35683.30528 1996.187076 31917.37686 168.8740759 16338.95763 7608.005456 0 21789.00329 14869.03065 0 17168.48082 14901.23839 0 3388.072099 0 233.7466802 0 818.8173882 304.9845416 1917.338917 0 48240.5933 0 14647.70005 0 0 11206.09143 60548.82564 2412.479197 0 +782.122328 0 4502.257643 1133.891003 0 0 3008.686132 30.06091317 0 3170.635549 748.3286613 0 0 0 30959.54953 6406.895341 3213.178221 4803.888209 0 0 0 7493.357151 5041.077661 5664.359849 6253.739471 0 1123.550024 0 57534.82442 14204.97339 895.8954614 237.671999 9717.732775 15901.62533 1839.143518 0 4276.277088 0 23993.39295 0 14640.23104 46719.71314 0.0002249198691 39611.8335 12384.14533 9573.612252 0 2.038054891e-10 0 965.4548752 2956.197805 10957.30857 0 1989.744915 0 0 25804.2556 0 10049.05016 5017.534052 0 161.2890104 2778.838101 9829.134004 36388.55371 8477.46371 4003.825435 8651.30137 24717.29142 56223.19378 2630.673712 0 3732.133253 0 0 3671.564695 0 2695.534344 12136.72749 0 39001.63433 0 5361.170247 0 15684.8371 26145.38138 6499.292483 0 21006.65889 0 0 0 0 16815.3916 628.6088741 15947.03131 41984.35638 30515.72257 44041.13347 5751.110634 18975.0086 1804.476559 14159.09681 1288.195333 34682.47316 47002.12782 59361.17843 60320.96746 82131.29279 0 0 34348.15025 17139.13857 1201.388827 0 8866.513628 0 20847.68791 0 0 0 80.05250052 30349.46676 0 1400.199322 0 2364.745485 0 0 3080.410407 2792.089546 0 82871.13061 9018.167053 7800.421791 7262.208122 0 1191.845161 586.2305893 2863.67961 22408.1516 10815.80669 54996.72449 2528.596202 149.6829497 13917.1639 951.929139 10767.02529 3810.471614 2162.753339 229.8280235 15979.10739 20696.00953 1719.621487 12129.83081 0 0 0 9221.094733 74.49775987 0 0 143.5559496 0 39784.72128 0.001791063816 1975.244316 2102.198559 33775.15377 5989.569959 0 69767.1167 5485.308593 3418.128623 0 8545.865803 9601.885376 749.694896 71.1060498 1497.35074 40508.84519 4983.298015 0 3060.554513 65056.51957 0 0 15130.45296 15771.07063 0 0 4824.482862 7575.246569 0 6147.799654 4074.983724 9180.35125 23882.3542 18225.72692 1309.700237 131.7275581 0 1982.512532 0.0008850147394 7606.777117 1429.202861 0 4901.156761 0 0 0 0 2376.014399 27110.00327 275.378857 3171.60661 55251.81018 10641.34294 15086.94389 1382.858265 21416.74737 82803.68059 1.463599743e-08 954.8512653 602.5054137 12153.3386 1157.083264 0 0 4221.983119 2915.229848 0 2209.223203 537.7170338 11071.60564 0 109.6365681 11987.32219 44.61690614 3882.065563 0 0 0 0.0702449501 0 6183.800734 2022.243157 19463.03114 34178.16723 35768.71145 19594.39032 1.674905577e-07 26143.12214 64713.9601 780.9160642 30102.61108 5304.684046 21807.48169 59283.06601 6517.789853 8914.390626 21622.35852 755.3678416 0 0 18121.04424 4805.362192 8427.98461 0 0 0 0 0 4911.554631 3298.300351 1934.887776 15369.18333 4715.454503 2218.522819 0 3012.614924 4199.92251 6619.618943 41085.85707 2395.715382 0 0 17754.5247 1442.595078 333.8321651 1381.980298 0 0 2061.976402 25169.96729 0 0 12677.06498 0 0 +29438.67997 2517.723113 3455.721298 19297.18883 2799.21828 0 21089.1288 0 17777.50711 39525.42196 23720.22658 0 8019.672065 0 0 1195.03069 21718.15036 752.2498407 0 4990.373357 0 702.9377331 289.7445335 228.2887563 0 0 3808.150088 0 1013.390429 0 0 1077.960134 2447.312381 0 0 0 4565.134296 0 16567.59642 8541.68534 0 0 0 33374.74233 804.3729087 1027.161719 2217.313691 16410.44784 8435.433134 0 22011.36201 0 2.014572308e-05 60418.97851 2337.162545 35829.25581 0 151.6856106 105.1301325 0 5137.933856 3654.818821 2803.588707 0.9494806326 26969.54543 58.82925152 2967.954954 603.3247388 0 55.3887633 27140.5044 0 17853.4827 18375.58985 94937.15099 55323.86012 3784.418338 9663.555008 22965.84918 2223.862974 0 2540.589266 267.947531 0 0 70.65942152 565.6758659 28699.7721 10261.63703 0 6544.838496 45311.73393 18237.53251 0 2046.19217 0 0 4730.941664 8729.017926 15583.5581 48498.53633 12523.80166 7316.004136 4195.195747 0 56311.36341 795.5559434 20747.32895 22231.25611 46892.52601 0.002175080752 46340.64459 0 0 740.4282713 5111.379489 0 0.0009800111216 7492.545368 9184.401433 0 38790.25173 0 13501.52481 0 19392.09322 0 5807.159382 0 0 0 6242.261943 26914.96786 0 0 0 467.5922389 6321.892661 6317.068236 0 4317.907411 3132.118987 32963.346 0 5038.057841 10428.96871 11704.77647 7193.538071 2467.773899 2353.622526 408.5379833 4751.077161 17792.6727 3162.822906 43006.84207 6282.823075 0 283.1456575 17.22470755 2544.046667 0 129.3805747 3401.857565 6361.451203 0 45555.97377 61113.22271 0 0 61.30565871 0 34899.3843 48079.41507 40909.60168 0 1161.273278 12656.67452 0 56229.26787 0 0 0 11053.10822 35873.86283 0 0 9459.423988 1819.490689 0 190.5178056 4840.752793 0 0 0 32.46784813 8505.879246 0 0 0 9998.665707 9198.140334 0 4557.674101 17336.0151 118.8685448 10267.18368 18569.5241 2653.678119 1199.640098 0 21798.69994 0 14572.16112 16876.509 8308.567268 37647.30162 20981.84964 10264.47684 23958.53812 866.9929691 0 27099.71966 414.3232536 0 4709.834931 24732.11031 166.8875735 0 13627.39295 0 0 0 30677.05267 3.060534096e-09 2.281453722e-07 10174.32232 25626.27983 5479.03867 0 8533.956717 1470.993652 0 0 6719.434849 55800.31096 0 13855.59994 16299.92534 0 52.92003903 11840.49964 4164.980352 0 2690.477185 0 2234.629731 58.63271176 9745.953092 6075.865939 7163.991685 967.1709241 2288.125835 0 627.2735654 3462.074863 0 0 3256.063231 356.2627298 4118.263905 20953.27706 2015.43721 0 0 7671.816646 3897.61737 3724.936661 0 0 0 22142.17342 0 86.24249575 31491.51539 56715.16683 15913.08348 0 4249.896627 0 0 0 0.267051061 0 24929.43672 0 198.7507706 0 4567.687281 12418.08667 0 +0 0 123.23449 6393.252356 0 3565.348126 25508.408 0 0 1619.666238 13974.13273 675.6396138 0 0 2356.602896 0 11681.57226 8714.480546 0 0 0 0 32690.49321 35455.32256 0 0 20259.07245 2.607313243e-09 25346.72211 20123.8611 0 0 5114.7521 0 5614.742204 16969.84986 701.2257096 0 0 0.3600481545 16136.48817 27159.70559 45.02262493 1948.791129 0 0.02801617732 0 0 64029.31579 0 0 13049.60926 0 4015.91549 3956.949087 4301.635717 65158.37954 0 38229.34293 0 29438.90001 18733.05811 12662.23282 0 0 0 10154.62507 0 0 342.9791895 31286.0702 0 3991.690426 5344.360965 0 46862.62652 60301.32114 40624.60304 629.7069718 0 36301.56318 4580.710174 4314.948279 14593.83207 0 74.67089001 0 2396.078909 0 26492.66936 6891.348618 16101.13404 5297.471794 0 0 45788.35837 0 0 2018.73346 1717.505024 17756.93103 8922.255378 211.1100751 13586.95315 0 22333.55855 7038.804977 32198.12728 0 17442.14916 23342.70348 57681.08279 4753.145739 11048.49746 0 5689.56439 10124.52119 78.28548055 7515.779641 24195.93389 2054.94398 730.3716038 0 3470.361878 0 98.22883497 13128.30057 495.8873391 6879.213081 4940.982117 38176.95535 18459.35955 0 2457.803378 147.2269666 0 8649.226951 1796.798265 5189.191102 0.0003992553261 8373.938724 25584.61236 51571.75727 80714.56308 0 0 7730.448731 1838.196218 28.71466053 5004.586553 0 21214.00776 0 32756.81712 84806.68031 0 65500.53717 51393.33337 19196.474 53483.19635 45790.29738 13820.55695 0 4813.772686 0 129.8188648 2509.67994 316.0838716 5238.709233 7514.146564 0 10993.91758 2736.505974 3520.309011 0 3222.917022 0 3344.0401 1506.053902 2166.821133 10550.01739 0 161.7586043 16754.49185 1137.060599 0 21547.1607 6.768160411e-11 4027.671872 0 78.94106356 3483.8071 0 1636.404824 51751.53964 2344.399025 18822.67745 621.0097085 1019.456445 2107.659055 536.9199512 531.2589923 0 0 42.05316915 7530.785651 81.39086376 39867.47385 139.2187781 7206.651874 2733.315779 7546.858988 0 0 35222.35556 10487.57226 0 28736.2125 3274.112594 349.0770701 22995.55279 0 3260.202736 0 0 0 2346.703227 1668.434088 0 0 0 0 5861.9526 0 45279.33213 3941.160294 0 0 0 28862.05145 0 0 2611.230573 72.40689609 15.60500618 61.09793869 0 0 6260.531182 0 26318.7847 142.0205722 0 35448.7345 3729.539043 791.8169369 0 16981.06683 0 26880.93784 6.206288534e-06 5448.687017 17252.60511 6158.238246 0 27496.0748 0 0 4317.985738 0 0 2678.584333 0 13303.83326 6346.694544 34533.01886 0 0 3644.071081 6700.106545 0 25719.40173 0 171.9159793 0 47833.33579 0 9.834397873 0 14795.3964 21375.53091 0 537.0197223 0 0 11843.52616 0 16930.80611 0 0 +2833.307034 6065.250768 69131.22197 0 41079.48051 0 24136.74411 0 0 0 15081.93176 0 0 0 37115.20949 4935.600559 0 0 15140.33705 14857.26653 11662.60061 3342.007106 0 0 3744.476603 9486.882277 54.99302948 19531.73276 15043.02342 0 0 24252.43579 0 2140.006989 116.7677971 0 0 13102.11006 0 56164.29908 16617.76775 31897.55814 0 0 0 0 0 16392.33797 0 48097.07074 0 0 2285.917603 8838.062855 10663.48107 17808.41004 4091.332011 11516.77292 10632.22866 0 0 0 935.8162056 15476.22471 32302.0647 0 0 0 25752.35761 0 0 1470.054022 0 7626.989485 0 0 55979.90349 5955.144455 42867.9311 4487.969305 19897.54252 10126.84718 0 50.06447395 1722.590653 104.7638175 4577.525492 0 0.6328506974 23521.42399 30315.47603 10257.52018 15099.87839 3591.87367 0 205.4254391 89.07566175 45376.76288 0 3682.933994 2872.685408 8291.631411 0 0 0 0.09779001912 51225.92107 0 0 227.2071543 12011.76193 6.680089965 0 0 449.7030828 0 25767.27267 0 0 7129.56995 0 12958.39427 3514.549214 14828.30968 0 31875.0443 0 86086.19466 2287.967188 9363.049231 1606.8069 953.8123027 37339.94578 1123.316763 21346.06173 58533.51943 33265.35431 41.20733569 0 0 0 5443.609056 0 0 1198.871984 0 1.306098365e-06 0 12980.29299 31801.86957 41201.38929 0 33901.14585 137.7483246 92.19132621 7163.52445 2513.599017 0 35229.48174 9383.605617 27876.5004 0 6128.197846 11317.19826 25287.77523 63071.27699 4989.938538 2127.89751 44092.02991 22487.09492 17640.55701 10092.91724 2764.412551 25056.30017 5184.700997 16379.95205 9900.903292 144.5257518 612.7503845 24898.08977 0 2.135571156 38407.02698 0 17708.90975 29927.40114 0 0 835.6298127 0 0 0 2359.916419 7626.807828 7701.540691 1927.713352 7388.458446 30938.88928 0 309.5176068 8380.020278 0 66.5652868 0 5608.864276 256.2059071 3436.773496 1204.636556 6300.221327 3808.419709 1850.140678 9214.822809 0 0 33636.04185 63416.0913 21574.94855 31925.34655 0 18863.52616 0 0 743.4369754 26887.91052 12919.87561 2006.910041 0 0 0 58.90872616 2856.400398 0 20016.32551 0 0 0 29092.39751 0 141.1324493 3090.2772 0 10502.31673 9184.875858 1373.208224 2246.835449 0 0 0 6901.946219 0 38396.06002 0 0 0 40398.85524 0 0 17908.92792 0 0 0 8.733784094 15294.27753 0 11760.68548 31095.00457 2157.832353 43663.45676 0 0 25520.06693 2837.708728 0 0 26037.95848 0 0 255.7142291 73181.11752 0.0007294632863 63258.61289 223.2384811 0 0 4686.993258 0 3690.431532 2377.33767 0 0 10018.14979 0 3801.129068 0 0 0 0 0 0 5341.346755 +0 0 0 39372.58018 2007.712285 9396.482573 9567.759581 4833.380741 0 0 5375.447977 922.1319965 22802.23252 0 3308.569108 23257.72554 3180.74211 0 0 4884.399528 0 39.79377526 2879.854745 46741.22317 11311.88321 5961.577204 3578.879844 1578.104813 0 2039.799281 75808.29884 0 3507.725947 13537.73168 0 0 7604.490591 0 33921.76702 0 0 15719.04298 0 0 0 2677.676457 0 0 0 0 13976.38816 0 7369.25546 8531.248039 0 0.1954768055 0 0 52387.78128 64950.61919 0 5.191965919 25484.35039 0 0 270.8230238 14715.37908 42.362406 18597.27373 0 33245.75598 3095.845746 5388.481475 109.0245257 0 10435.55133 19165.93838 40787.59477 3236.620072 0 1750.246847 5562.34563 16128.8632 1759.72906 0 8793.007738 57217.51265 0 2275.932416 0 0 10973.50396 5433.40632 2.699344956e-08 11213.61843 3961.909717 11120.38239 39267.54128 39150.05989 0 22817.21378 28789.91396 27067.45199 0 3823.868798 2076.051827 3543.735725 20204.79887 0 0 56463.22696 15018.8297 15770.02836 1684.245504 5742.579918 0 2383.953903 9016.052808 50437.38816 56950.29667 0 43228.12862 2473.96037 19217.92829 0 3995.323287 0 23746.18504 8337.427227 67182.52652 4245.359517 7742.467355 925.5916692 1266.922951 0 4071.289526 15437.07384 5682.704111 0 28784.8849 0 0 44425.59871 0 9567.120408 175.2239332 3660.238181 0 585.6766859 696.7089213 52699.21178 1245.708169 0 0 0 6059.278545 73603.94387 1110.228469 24305.0986 36107.14206 20555.77519 0 40811.50002 4374.910685 0 737.7584449 1409.129797 1599.260591 0 4011.386331 2058.409777 38220.52456 0 1854.398368 1403.327834 46.69735037 0 5328.101114 1014.68033 33252.03145 0 3490.095788 13869.26269 19740.05689 46003.11417 0 0 858.2455967 1079.068249 38.97403445 491.6028731 44188.14928 36785.66499 2195.754681 0 60924.18987 0 136.9075262 30283.81031 48031.56515 0 0 0 39953.07645 35757.71175 23498.38447 3133.477623 25617.46707 0 26.45109341 8966.379123 46500.82414 3308.864648 0 3546.027149 39815.78338 0 4364.289204 0 1161.339603 2714.584543 37963.36595 130.274832 25351.68532 0 319.5590885 86.76459507 95.75990294 0 5906.966305 0 0 2030.363568 50649.55608 225.4964 573.582199 6512.283433 4247.734947 0 54.60301566 8202.421246 0 306.0106507 78.72728482 0 9075.257523 22551.23575 0 4274.059562 0 2435.690213 0 16153.96462 8631.918911 0 3171.257944 4240.153616 0 0 0 0 1085.101695 1200.602694 0 3.331645483e-14 670.6780714 1069.91476 32712.05994 5680.10086 1399.787573 0 13555.9048 14444.93232 2152.647818 0 0 722.9915666 4375.639072 0 40466.75287 8035.398831 0 0 340.4240351 0 1675.936066 25312.94625 8726.291297 0 4016.767023 176.3662989 9492.821634 12175.44444 0 933.7967471 0 0 5553.757698 0 333.8906959 +0 0 0 0 0 68886.33235 0 0 24469.62097 0 7170.348271 2559.962876 0 0 0 6214.99437 3303.070733 4402.300625 0 33253.48964 0 0 0 0 6453.267754 0 0 2675.210734 0 18896.11702 8376.838621 0 2798.694154 0 14848.41369 0 77.13194539 34835.87235 0 4032.214112 0 0 0.4426460608 16019.6187 2121.697542 5414.984974 0 25573.26928 29998.63329 7608.410467 16394.93662 1096.785985 4954.685881 0 696.9492102 0 3236.221226 2780.124968 33115.49363 209.2147579 11488.99871 11405.61817 38350.10635 0 525.198897 34147.67511 28279.12884 2568.817954 23635.47682 0 19988.70668 0 0 51789.8814 10071.9677 12477.04621 0 0 6724.62457 0 5395.573992 9708.821689 0 7855.720763 14319.34575 2654.462098 0 0 0 153.2648787 18290.19171 0 5291.505598 4563.117942 0 10855.07022 12231.71944 39303.10368 20537.84129 0 21596.95505 59755.19769 5887.767272 55032.15096 0 0 23090.88729 114.3358306 0 1575.247676 0 41785.58536 5608.527032 34892.96875 0 0 2429.47418 36239.41472 4092.182415 0 21851.67855 5761.782112 1190.793252 13566.12917 0 0 9725.178233 65787.38585 456.9825643 36550.6939 50247.71975 0 4824.090417 35532.33093 0 5827.474421 2198.197976 90079.17064 0 0 43048.92718 0 8817.498324 4493.563347 17729.86327 30423.27555 1425.815422 23885.35913 12613.68615 0 0 15790.12629 35872.68058 5553.912467 0 0 4293.506723 3600.961414 0 13346.36553 34644.45621 0 42331.58047 0 220.3351119 42394.64859 276.0253799 28369.85329 0 0 2034.408975 0 55972.46978 0 10824.33175 9788.737821 61646.63923 52055.49993 23512.43063 1981.482675 0 3743.25398 7618.126754 10.47547754 67062.23695 18422.13551 480.2220884 4565.162268 0 49051.39322 148.0614711 0 0 21057.3382 0 0 47842.48065 0 0 45239.28416 35418.54724 8531.462203 0 10714.74119 0 3719.652313 13226.64518 47.87127189 29314.40336 28919.70819 67107.81125 8135.580312 9479.684846 35755.19078 0 0 220.6069227 0 0 1701.144204 48932.8196 0 0 24269.09103 1287.516744 2355.225898 28564.49252 0 1655.162477 0 3073.499959 0 0 0 22802.05757 2646.76498 12525.95535 13.06013938 0 7961.505086 0 3845.720714 25896.70144 9010.58125 1700.073908 2670.203439 25430.70991 0.01583095673 0 2774.215358 0 0 0.006134301841 29809.51161 2392.899318 22040.74247 0 0 0 0 0 0.4687451309 5125.842598 9641.274351 370.1224338 21435.27059 15993.87263 5437.975623 0 0 17027.765 0 0 1391.275098 106.740703 37.31361313 0 5897.980212 0 4593.141241 1617.992598 7125.097386 0 1003.902078 0 15310.23681 5680.294161 0 0 0 0 0 0 0 0 622.5912667 17662.61035 0 0 0 +3135.096744 6684.581733 5626.174712 4388.210624 9411.73561 2751.341335 14680.19335 5547.136648 358.558575 2232.375578 0 0 63870.21067 0 0 0 2.150020392 20087.11552 0 235.0054212 0 0 54.18885755 0 2019.612848 0 30817.94839 5203.64143 0 0 0 0 8887.049887 1665.537224 0 57267.39604 251.3179989 647.1231727 4516.332465 0 0 153.226311 0 13604.84975 24871.66402 0 0 20791.87348 1951.580412 9359.521668 15625.73449 4170.840889 7942.352664 21218.03031 84868.94857 9879.247991 33173.48376 312.334485 0.0004099432064 55545.98225 10586.17366 5473.552829 0 0 0 0 0 139.2092243 0 736.8391754 3276.400775 0 0.01034560504 23978.037 25144.03604 5858.004859 1700.751015 0 0 0 0 0 44258.716 19107.20098 28.40264384 2002.962 0 9397.199208 0 33805.53992 25381.54612 54204.684 12663.7357 124.9429925 0 4911.585134 75670.57985 40824.49343 1354.862412 1924.660615 13.42630899 0 0 29821.85611 3414.463148 0 0 20801.74367 18994.41399 0 0 23754.00238 0 522.0032647 9558.854352 0 8221.613061 167.9543746 22319.41247 25317.84931 22104.14061 2800.256767 0 0 86096.08482 0 3953.90767 12467.24425 8234.992954 84537.91904 0 13916.03258 0 31533.28306 0 0 0 0 5554.988732 1794.085231 56959.0248 1623.899631 140.4662345 1632.387168 0 0 6844.989725 39389.81741 0 1914.937016 26366.46752 82093.35174 0 13063.54859 52590.33758 43809.33296 0 49578.98191 0 6280.579417 17399.66461 0 4370.442635 18551.60144 828.9973806 0 13159.1793 0 25541.19896 0 20654.1405 9799.685911 0 1006.418069 8185.285298 2069.896536 15220.35919 0 0 0 80.17445006 21773.15349 69030.00101 0 0 0 0 30894.83453 7628.712112 33105.61509 0 3.333210704e-05 0 1781.271244 45058.71484 25.71622119 36163.0008 5591.671351 5565.681102 0 0 1600.6982 0 48062.72051 2602.087614 7019.958005 10883.97709 0 0 6028.603531 0 8905.621195 11137.74974 25406.76349 0 0 2842.050961 21426.38684 0 4718.727114 33945.49171 2799.820588 0 59943.27888 26709.915 0 20419.86867 0 13473.52065 48863.32108 1879.815117 0 2533.619683 25378.23618 2915.27652 0 0 22427.25954 0 0 0 1679.73265 0 18295.61038 0 4989.73012 10265.63589 0 0 38802.79161 40309.42451 0 0 0 95.4918862 90.09468789 4848.004367 6128.082826 43418.16612 8603.408221 2251.006215 8308.363267 0 277.8460855 6717.710217 570.6582816 0 4528.958214 0 0 52115.49721 0 160.1474323 0 4148.766993 10617.21077 0 8569.590921 4407.454917 0 6354.398918 0 36308.40528 0 20028.50668 0 108.6732341 3633.46926 0 192.891651 203.3429652 41.1333153 0 0 0 0 0 17482.73352 31329.56556 0 +1.27531908e-11 0 1704.17069 2159.924108 4811.425136 22357.26939 0 1588.848038 0 0 0 0 688.8551252 10522.34896 0 0 8692.368344 0 636.4388205 6755.773193 11115.89974 2469.010332 26649.23144 0 4374.572588 0 0 0 0 15099.83922 0 0 19348.10765 1842.75884 0 47087.80045 4863.60035 0 14333.77619 17676.73478 20249.67104 0 0 0 2905.038562 0 20.12208805 19531.70636 3233.718926 2336.66498 0 99.13224433 0 0 0 70158.83026 44771.97509 3177.346124 0 0 2840.678429 15691.92324 0 0 0 0 0 6755.517705 20252.92849 0 0 0 3720.061389 22631.40811 475.0409732 80780.5597 1678.329804 0 23238.14382 8751.422891 15150.22998 5757.582381 13658.92101 24174.58316 2375.824802 0 28666.11387 0 0 22498.26624 519.7533342 0 5093.940538 0 40129.6093 0 2988.459753 19653.58833 46608.88223 328.6378119 6766.942805 39432.04575 14781.55221 20191.2354 33186.44827 0 21567.71932 19076.27005 7006.552664 22214.06583 25042.24706 0 218.1106511 865.3327987 53426.4054 2269.262418 4384.576271 528.6709043 508.5901588 6656.041402 5045.995655 0 4667.738975 53178.98508 417.1473859 1021.505549 28417.69077 0 0 27335.94885 0 1991.372309 33397.20688 36306.33143 121.3661774 31403.4523 5101.993469 22701.69781 0 31630.57074 2578.555132 35130.04573 7757.877698 21132.12344 142.8552926 0 4532.514741 41.02040938 0 30668.13429 0 9700.475418 1640.295633 14762.29542 0 5407.085256 56627.17172 3417.337061 0 17662.39374 24797.96761 10774.39479 1544.444453 43290.33236 6229.590529 43236.3609 0 23374.63733 0 0 0.0006156624344 17607.86704 19409.89448 3882.357496 19013.28273 12789.97983 33794.54606 16878.21785 19309.15214 16306.35759 458.8040021 8898.451532 0 0 47364.50063 3522.096208 12683.18036 17616.99047 0 40316.50668 57181.13664 6120.404604 4875.781243 23255.26299 9.440828591e-10 0 5.553231824 0 52417.70232 21478.35628 6092.684154 68015.75847 40172.72257 0 311.8635355 33854.61054 25048.7178 17750.09601 1557.026694 0 5591.553163 218.5851634 3479.995593 26514.70772 162.3668369 21098.07535 0 0 7303.799426 1809.165601 16929.01357 0 0 13298.3671 4895.649198 0 3237.39901 0 18480.00551 0 16240.07836 0 0.004989700937 2928.89574 2048.567662 14734.96124 46937.20301 50.58100943 0 5636.387033 2157.498363 31019.48223 8110.196209 0 2141.963126 32404.03786 0 2868.643887 6736.648715 11814.72801 2940.272739 0 4021.643768 0 54766.26779 7470.466152 29.6109832 0 0 1760.638891 0 0 9759.779845 0 7455.576083 40477.24081 0 0 9273.15565 0 7085.18881 0 2829.677486 0 24564.27676 1859.231705 6032.720846 0 6971.219786 808.7070013 169.7555944 0 0 0 0 0 50129.80785 1.2342968e-08 0 12222.40242 0 0 15288.76483 0 0 0 0 0 2542.80608 4272.649607 +53657.22023 0 7732.821034 1382.535962 0 0 0 1634.062956 0 2147.183531 0 18500.81693 0 0 0 7824.272694 9435.024941 0 3300.880294 0 0 0 0 40451.50734 382.4890664 3888.796934 0.0001841206129 3514.766202 0 0 0 6445.980262 0 2098.574675 2461.176253 0 0 0 134.191348 0 0 0 34659.18013 15859.07848 0 198.5507187 113.8433706 7003.034738 9347.382202 21310.34169 23016.02243 0 1076.80523 10300.56506 0 15328.24356 0 6673.797672 0 0 0 32463.34576 123.8904015 16034.22853 36118.25719 0 640.9935312 0 30086.4662 5.833915211 13187.32386 40469.24953 3520.580474 33183.4122 11019.86518 2152.17542 0 10587.79618 1555.327047 10469.6818 0 7534.830463 0 0 27546.87341 43783.80877 28857.80099 822.5039637 0 0 0 4492.328367 0 0 58956.85408 7408.515142 0 11441.20083 21865.70674 49442.85708 6927.058079 2611.032698 51954.24451 28747.14019 0 5211.277101 2360.476288 24379.64946 48238.94695 0 78826.52572 0 35106.32554 309.8263768 51618.90825 0 0 1823.313631 173.6323793 13607.13439 43859.81253 0 0 11241.60598 7689.674646 1505.645549 40551.19992 45156.14015 82.86023338 20.16627215 12782.41138 7493.251283 0 18594.71595 0.05758277805 0 4915.49968 49338.71525 8346.636304 75.18073645 27093.1551 0 42653.45632 0 0 6847.359889 190.2886243 8034.845631 0 931.0119065 1561.557695 0 3518.511796 0.456324434 9396.508448 55572.02457 0 5454.738698 36433.091 17874.69557 1444.628599 17440.33422 0 32279.90275 30944.46575 1408.722884 1260.70543 0 17919.86865 10304.5921 34717.1927 6450.971036 0 7546.761331 2841.146546 400.7325789 87.56584011 2307.956871 1.99142787e-05 4301.314466 378.3894019 0 59021.30463 2500.150823 31657.29071 0 0 3923.178076 11207.75254 0 0 48353.5831 1648.084175 0 32.46781373 1314.060753 50459.77069 41304.92196 4192.560827 213.3613249 0 0 4466.718132 42093.09569 0 65219.70983 12281.98725 141.787466 15998.56376 0 0 0 10963.06065 30811.80007 0 41.14685448 16578.84171 40146.55378 0 21224.32892 0 29079.65537 0 10918.26515 76.13350446 23193.54782 24626.56829 0 22194.55198 34236.32422 2991.007735 26144.63846 0 0 10380.08321 0 1493.824451 82.23614992 5116.923352 4554.12887 0 48.3687035 26417.30436 0 0 22573.50995 7745.803488 0 62290.49816 64067.04357 233.1672844 0 0 8814.023292 0 0 1287.303684 237.6076879 0 2869.65225 1463.467625 0 31089.37639 0 2228.592788 0 2995.65755 3447.202999 0 17239.26872 5182.235612 0 0 3.608761604e-06 0 215.4086067 47955.25359 7546.407928 35.0633218 0 69.21625126 18179.88408 242.4085773 947.2500737 0 14610.99203 6926.438672 383.1391994 0 2549.679109 6655.76456 1807.665187 16520.53301 0 32983.59023 324.7697357 0 17707.93075 2109.73915 0 +0 0 4083.287403 0 1784.354187 302.7471729 0 6191.268559 12089.20556 0 2110.078919 497.6608199 73.68703883 2590.316768 837.6846996 633.3625972 2218.898398 23450.9756 0 5183.228446 7963.525914 25057.61436 0 18754.03611 300.9703839 12636.66178 0 386.5762685 17009.40059 180.8020095 28196.61238 3213.258453 27423.83515 2114.309961 0 3614.395387 5.38930398e-07 1110.276301 0 0 24492.15718 135.461764 7534.429591 0 22420.59453 50212.21385 0 116.1520675 262.863237 0 2855.457387 0 0.3513827901 22716.36049 12966.60971 33886.48102 22325.94217 1694.893689 0 50213.73648 475.8493871 0 0 0 401.0128315 2687.228835 4593.446279 73.62865012 0 0 0.06897110482 0 0 1739.549306 0 49999.64114 0 224.7014351 7870.804624 33260.30314 13017.38117 8180.015194 2289.170196 0 58.71824264 0 33695.05645 0 1376.051234 566.6716038 0 45637.85904 5209.26248 133.3599736 25035.94454 7177.123276 10045.94936 21657.21341 0 9944.220911 1736.145313 26818.97782 0 3766.93936 1099.849157 0 35.16070622 0 2943.650628 0 11982.8893 0.03507899914 23063.97809 0 0 9487.884491 366.5705962 9936.445526 13403.74666 25838.35803 689.2589118 12590.00319 67322.35163 18782.78662 3874.653036 33720.162 10367.94864 0 15321.23466 0 0 2231.836475 4970.246513 0 0 5312.120154 0 173.1100809 4188.67564 35504.47451 11652.85873 217.0327409 481.6299443 21169.89425 0 2.148705709e-05 2159.778842 20430.6124 0 58002.49855 9978.668176 9425.766671 4721.874078 414.3713439 6873.297289 37329.34504 4812.993112 1829.787922 5650.619413 73473.75178 0 76990.71823 3435.932478 0 47.97989685 21007.30055 11424.20022 48016.39583 13024.19278 60655.77179 355.3882074 0.4540729856 4159.620824 406.5992806 71592.99092 49625.00892 4134.086337 0 4640.176392 8322.604278 3429.529275 4872.509663 3618.981165 0 0 0 0 2036.4883 0 0 3392.77137 0 25115.18785 20554.12494 12165.47175 8106.858639 3773.437276 3273.702014 29234.30655 13921.31814 38080.21951 1456.700842 2183.887227 59149.21301 293.6334914 22049.14556 5852.990517 0 19753.05937 0.1909785193 3838.910957 3165.601272 22555.10247 3077.30254 0 0 19609.45027 746.3408556 0 0 23311.97191 15758.30964 0 2292.165439 4017.712103 37381.67742 0 2085.461949 4612.177761 4395.601872 51277.97473 6015.307865 0 13573.38035 60378.55273 0 50536.02012 0 19416.46268 1905.577308 221.6448281 0 0 0 621.7972198 4732.669667 30068.15712 2868.825128 3782.202424 0 22481.60593 0 110.4405956 0 3288.294792 0 0 0 56.10392832 2417.881205 0 0 15274.94925 10432.91072 35365.1941 7776.450833 35148.11892 2606.288247 0 4319.489868 0 0 0 0 0 1851.935374 5605.969641 14137.92109 0 1939.400323 4725.882935 0 0 5016.178156 0 3725.713312 0 1.480460538e-07 0 0 0 0 20280.38344 176.6511757 0 2646.36492 0 36346.50929 0 4654.40241 +3411.910744 19175.89337 27875.58157 66068.78531 24931.75828 0 0 0 27228.22091 0 0.1821733948 10149.18341 15850.5457 0 0 0 19186.29523 0 0 10317.49091 0 1898.787672 0 0 39086.40376 0 0 0 3485.335847 0 1758.342227 64879.69405 0 2539.272286 1730.011709 0 0 22901.98801 4261.13904 18528.25883 6984.300583 0 7676.232368 8331.657764 11347.3193 5557.836467 2007.319032 0 0 3534.301283 2510.02685 28942.73231 492.1599468 6783.503089 0 13830.73824 5605.666877 0 10737.96096 15752.31831 0 0 0 10761.89844 0 0 0 56814.23888 45278.96394 5971.990428 2217.266935 0 18825.67095 5855.716783 0 4360.937954 0 3826.386239 3.523368042e-05 42184.58359 0 50448.28902 799.2543749 0 151.2143895 48631.95619 5099.04007 0 0 5415.229286 40495.85482 33843.43362 19095.43965 16243.94143 0 17972.0313 8145.920041 3656.094353 31.86375047 26357.58746 14501.23393 7361.26219 105.5504732 0 18282.42028 18250.53287 8355.157985 0 0 1461.572931 187.0430569 9971.613282 6674.375522 47710.34149 0 0 1600.042726 374.7974871 23840.09733 46399.56073 0 10712.93931 14452.57661 2053.262544 10313.841 0 39542.14073 0 41641.41056 21554.67593 52914.4425 51.39508312 13248.62306 11847.82172 0 89.30675621 32745.34329 66848.40992 0 177.9724282 0 30745.82014 169.3866221 644.9405751 4862.61417 6071.895588 1288.292513 20318.58412 0 32097.75337 9327.14723 401.5061197 0 244.501456 20923.91546 62954.2915 0 5355.599412 3681.346873 0 12512.11814 21081.13339 6706.170493 14796.26564 500.1628229 45409.26067 0 27476.38877 0 59492.2731 0 24447.85635 10365.17149 312.7947379 0 21804.75669 20757.09688 0 0 6626.952249 16293.30389 15602.42299 8662.091643 119.5131787 1737.940348 0 8275.227035 3047.626322 0 46836.88947 10520.5715 0 0 28003.43803 1522.375808 61418.7205 11224.49481 3064.212109 44.31414587 3157.787279 0 7591.976354 15354.2337 7206.552053 0 0 396.7197544 410.7887313 0 0 479.7863155 0 0 6654.602098 0.3415307676 905.1835575 5169.594733 35352.14727 362.8285181 2239.818312 3953.290209 1513.170574 0 3252.470828 0 0 195.964249 0 0 2758.70369 0 0 0 13959.66919 32497.52064 0 19949.14885 0 217.8879727 4164.516865 0 208.6297655 0 16531.09134 3818.29346 0 864.5632315 3829.259508 0 0 0 0 6945.902597 0 1890.979381 22579.05876 95.09749751 0 3266.227357 304.1903642 32220.84649 114.9513454 0 0 0 1141.399214 8543.316173 19873.02666 22701.18163 8607.892277 0 0 7690.941062 0 0 0 14084.01106 302.8430183 0 0 0 4966.565735 123.754788 6553.125953 37560.52403 0 46.50419251 0 12060.69326 3181.607668 0 114.6722899 34637.32735 0 1034.051246 0 0 0 13697.66401 1873.065044 +0 14634.14548 14711.08293 52310.26717 19966.30569 0 8683.009297 49124.78775 34162.56144 16934.84982 0 0 0 0 20710.08808 0 0 736.7382885 0 0 0 4839.230286 0 247.3899885 0 0 3577.303625 22407.28772 1692.757451 30838.64234 0 39862.9829 0 2687.059778 3121.885183 0 52899.65754 39001.40549 33309.58335 11474.53483 14102.18088 285.7490852 261.6094121 23184.55179 12157.12882 20081.53146 34262.83462 17958.0851 6130.78031 2.523162668e-10 0 14348.92742 0 17774.09858 3106.647546 14320.55805 17386.68748 5032.79502 0 11324.89497 0 2999.570318 1828.485488 7250.754764 37981.84637 0 920.5357123 6168.526069 9053.227335 0 10946.72865 11386.42432 0 4067.485203 33676.05807 899.5437116 0 0 164.6186372 0 0 6871.845705 46394.73563 0 17385.7072 0 0 49530.24628 0 12946.55475 30363.20266 0 0 36934.74055 0 23732.44594 2660.597832 2868.831788 4.019731836 0 2895.500631 7278.746868 0 64298.97558 0 62730.28401 10535.30786 1.234895002e-10 70514.67952 0 36964.08839 8671.333016 9418.378936 29109.23254 0 11139.62239 22978.64755 28875.2767 2542.399209 23908.38377 38970.13069 43611.71697 195.5850099 20663.54019 24126.74119 6926.310763 2099.430204 212.1113591 0 6688.367364 4920.452515 30816.80219 3004.661764 0 53930.79343 16345.45247 0 3262.885502 14479.75957 7628.618532 0 6640.193743 119.1376551 104.5214765 30101.81624 0 0 0 0 23667.30556 0 58648.88323 21122.33319 26221.11368 0 0 61.71233951 9395.597056 78.31123818 5616.520182 0 0 132.3228417 81.83735931 4349.672241 0 48462.4283 40637.62941 61.6994374 3844.65223 38692.24026 10575.27203 5412.29129 34097.47545 0 1105.762298 10452.74954 0 41222.37582 4037.012859 3750.73921 0 92.9850883 1010.504898 6066.060575 39587.71747 0 15892.65511 3.864479899 8902.013565 2323.503695 0 16995.62366 0 4577.80665 5918.01475 8610.162549 46046.45189 57958.90271 0 19473.0614 7599.495334 6157.085467 0 21829.96536 0 0 19741.21896 8669.967507 16233.68648 3.686560199e-11 60.1712811 22026.40301 49499.2391 0 22411.01981 0 3417.370725 23718.82526 0 13461.5027 1925.379121 1211.992391 18779.31901 30554.30593 307.7512713 9058.589187 5165.862338 15118.69431 5662.13837 0 34973.85075 196.3908281 0 3469.021922 5238.529019 28815.76493 14079.18538 16005.29844 348.7354556 5573.057041 0 38722.61153 48402.52539 0 40.42696533 0 7299.206202 0 0 0 46999.00311 8694.523841 8176.106756 26172.07788 0 0 1329.77256 7381.549447 0 14610.19773 0 921.535306 23.53483532 0 0 0 0 0 0 2162.724355 34463.66498 0 186.776522 0 14979.46462 22039.25507 32513.55425 79.17973249 24966.63599 0 6261.572689 0 15775.86626 0 0 0 0 4389.318361 0 0 5275.302586 1483.889382 0 5916.408844 4211.597598 0 0 2458.866599 7235.681299 +0 4951.082506 6901.825059 0 4321.666346 36172.61612 3730.989571 0 0 7408.381308 0 0 32578.69904 2.374061487e-12 0 2569.224027 0 2610.603745 34440.16818 3136.023185 3237.684051 0 8930.812182 12.44171765 5916.388928 0 36091.03952 9906.828469 0 0 9483.883131 68.44913527 0 0 37946.77805 81.03623615 3257.663902 0 123.7480497 4.269576116e-09 5710.385409 9172.274628 0 16428.3595 0 23267.56612 32078.40362 0 11398.54862 0 0 672.6066762 0 1806.560905 371.6699617 15050.59738 77359.63517 0 3851.451281 2543.528453 16555.96568 7028.867357 3290.862267 0 11783.41324 2036.329325 0 76503.86963 0 12042.67126 9026.712942 105.5224381 32922.18227 2958.490007 52045.4598 3612.326592 1076.613759 46035.47385 54733.71377 3603.866907 11297.34931 12619.15428 792.568806 64942.14689 11382.54822 24147.49208 71.32444135 4668.761295 13437.80919 3987.073057 2709.73761 51608.699 0 37988.48304 28939.32042 0 6.141662346e-05 19477.2558 0 13363.62867 0 35478.25241 21628.49071 33518.92663 4432.775312 57557.08264 37048.03131 21576.63188 88083.98664 14149.05484 11899.02294 0.0001599803485 6878.745172 654.3150387 0 0 9306.616843 74847.24487 1818.958492 3537.736786 206.4942417 2521.510944 132.3146134 43476.63144 0 43524.52637 23627.75232 8912.584056 0 4209.811254 23955.71845 35104.81721 25432.99106 2991.882279 0 30738.21316 56495.60408 3509.723585 0 0 112.6564654 4319.331178 93722.38266 10089.11148 0 6369.053193 31196.99142 2008.174621 49623.34208 14444.90585 9006.340719 567.4746869 0 71.3895926 2217.396744 6479.658554 4894.411927 0 1690.889063 0 24697.6585 11618.90082 25528.56834 0 0 0 0 2372.87615 3625.707213 53909.61132 6142.773347 0 37314.02524 441.1986034 0 0 0 35891.75547 9512.327732 18422.21532 1745.786852 213.4445211 380.5873668 48009.51398 2570.097652 0.0001529654389 0 30097.45873 3280.458986 34541.04394 5544.719408 45.43064953 1547.884377 33342.67132 9021.190054 0 2927.505713 15851.25929 0 3634.425555 156.0792683 0 10229.19016 0 42599.1529 19660.16618 0 1589.106899 0.026785576 67041.48292 26244.87178 28428.78425 0 30972.96609 12720.08837 16085.19564 0 149.4515681 0 708.624746 0 34762.97043 3956.495124 2464.422116 25604.14236 173.247231 0 1568.312569 0 5514.342044 0 0 32.65650865 179.7144681 23972.54119 0 249.3117835 2207.082597 600.9035022 26733.32732 1907.09482 1263.100529 12472.33442 49706.4392 13313.36601 16558.99915 4912.564859 10397.10897 60738.32468 52790.90547 5631.360278 0 45562.05134 3113.153875 253.1689277 3.403465444e-11 0 2665.843575 0 0 4859.902955 0 0 0 342.8284827 9074.555196 9538.977823 42057.53602 0 3738.58359 0 0 0 24045.49257 0 0 41626.63831 0 42982.70044 4537.130956 0 18488.67104 0 29644.9806 0 12202.28191 56241.79479 15922.25495 31242.39042 0 518.2839718 0 0 11774.53658 6560.609294 24198.16234 0 3292.666254 0 1288.274494 +0 0 20589.49515 85137.66517 268.0800172 0 2261.039923 0 0 0 13634.86234 24249.36231 8371.052837 2421.0175 0 44157.7225 0 0 0 0 4678.541848 1706.839081 0 3602.413215 34273.44545 0 236.27245 2644.210782 13290.86323 41873.26031 0 0 49.0257056 0 0 32238.93215 0 3167.457606 4203.604126 18243.52336 25761.97701 37.30786901 177.6063726 3846.736603 11809.80255 7387.841895 34730.05315 0 927.8302085 0 184.0153609 0 0 3637.281235 0 24998.70958 0 0 0 7165.42401 14403.6993 34571.95496 0 65370.76086 0 6831.539723 31198.60603 11562.89081 0 127.9957461 16307.27949 0 14134.35276 1576.052682 18230.04388 30256.60138 0 68408.81112 6791.418426 0 0 19831.06317 62323.92372 43084.12255 27048.40994 0 17793.43005 4633.536415 24382.00786 57410.33169 0 30001.08955 0 0 4205.105621 2186.7725 14781.99778 60209.98432 0 14676.82219 0 28403.11221 12282.82867 0 21262.02781 24018.84641 0 30287.1561 3394.158655 0 12591.97281 5617.550461 15911.44328 976.0053471 542.1518689 39558.03712 6653.483397 24602.7135 55181.76789 36710.76416 2593.59099 2551.063068 1379.05282 18351.37678 10476.36 0 47775.83585 0 20798.96963 4171.964177 10467.10307 0 20061.97383 39.22766095 39.29505202 0 22434.60139 36460.92418 49895.29356 18065.98519 0 52021.88521 0 28539.47823 58599.39475 62251.73031 8488.994892 30653.61862 37192.83295 0 0 8605.174238 0 9820.09656 1918.681222 264.184359 3.729511262 29249.79274 2790.511473 4139.370565 0 2594.119588 3373.78382 0 2372.362385 5383.230644 3152.486875 0 9142.444162 1318.851335 0 73.64002934 24361.44381 59707.73318 46621.48747 0 2.351051306 0 61846.20633 0 48196.90309 5599.783023 6880.953477 7412.244248 2690.907551 5277.128405 2230.513802 27491.49446 898.7070297 0 0 3658.825457 1511.645246 40444.46354 32555.3751 44035.90489 0 29503.33856 0 0 256.0751013 6916.471231 22011.74926 9103.226031 14821.91024 0 90.98947784 26008.43373 152.4901749 32016.11718 5580.793085 1769.049849 18439.20095 1291.518751 0 3076.33375 43094.36399 71.97114161 41372.40007 31741.95898 0 7785.456817 0 478.1465439 0 7365.111036 0 0 5304.26221 0 4501.682271 28139.67627 6018.166499 38.59093845 133.9444429 3705.666359 35043.94468 0 7691.320048 0 3447.03558 0 336.7918364 2544.00981 0 0 0 2356.231836 0 0 11172.526 0 0 33741.35508 30945.60148 1616.150934 0 10904.96222 3357.666353 0 0 0 172.1335843 99.79619925 1535.166731 26579.97047 0 7169.913714 0 0 0 37259.4598 0 21060.03922 1254.449662 2397.441079 0 0 81.12527145 28469.44572 10571.72718 85.26388141 27108.81881 3665.554302 0 0 0 4830.381858 0 1020.834443 627.1517068 0 2023.946648 20242.29831 0 0 9139.436466 584.5888079 0 8433.910418 +0 7706.791723 0 6960.115237 0 0 10662.61636 0 27705.3962 0 31370.01748 41719.59205 5111.403867 7776.959481 3983.696957 119.7611747 612.004374 39288.94878 356.989934 76.40454621 2480.342887 0 0 0 0 29381.78527 5162.214312 0 0 0 0 16723.55702 782.9072421 0 30694.55356 0 0 0 22759.72835 10525.14574 151.0974036 0 0.8252443842 0 0 0 0 10525.03434 24326.52102 0 18015.64801 24221.58895 0 10384.28629 0 0 0 4434.731844 4689.36081 0 27898.05791 24043.10947 68961.04598 5454.086102 1854.730123 5859.585537 0 0 0 21288.36265 5708.17113 317.7056061 0 5200.318079 0 0.02634689866 7718.671136 26760.75794 42022.05137 0 12028.1345 1847.969143 0 10849.73978 0 15758.614 25074.34971 0 1265.791578 0 0 58888.15005 18244.46595 425.8055424 0 26985.63972 0 10151.75858 46657.84903 260.8847651 38689.21529 33950.64777 0 30272.09496 0 0 0 0 713.8371104 5107.023395 24.75839894 0 5811.551599 67309.85661 0 3027.003198 29241.36964 1.369510768e-11 0 17820.72809 20395.9702 0 0 2526.227192 7444.170385 6936.622426 0 33762.90281 6488.261963 547.5694166 1265.668211 0 10840.92836 35390.69321 642.7304564 127.8702926 178.1623211 0 4249.429277 40794.861 15015.09836 24974.15008 32767.02493 3748.678507 0 6626.126447 32.17746972 0 21695.55598 2735.401132 0 1567.693563 58692.25466 3114.88719 2378.537067 23043.62357 10048.3123 22867.40386 0 0 65.8710053 252.2151647 8.231612903 0 139.495832 3239.771223 0 0 65348.75124 0 0 1536.40295 0 18585.6795 12956.42101 9696.491199 14563.99063 0 1881.660318 19014.57543 9051.295732 4230.992931 590.4366938 984.6336573 0 9264.634317 5459.01591 291.7656659 2518.898881 0 0 1511.338862 41187.80632 0 3859.633622 12447.81456 5344.814512 0 1704.706641 14689.9202 0 3522.43247 34992.01109 1879.02959 1.227767572 7037.702666 0 1564.986484 70951.83465 0 0 5869.910819 22260.30562 164.6361367 15808.0452 0 0 1753.039389 0 10567.39702 0 3082.279959 0 0 5079.268723 44505.75857 127.792998 3042.611332 25530.5231 25789.18315 0 12787.68658 0 0 4.360287885 0 0 16275.55198 11650.64864 0 0 0 3577.514552 12632.03624 798.9935134 0 0 2411.908422 502.1181226 0 6046.81905 0 13136.15154 0 5092.424232 0 0 24543.49809 40757.10378 0 0 0 14285.99503 4677.319014 875.0124095 0 0 4.310505732e-06 0 49640.54822 15850.10068 0 12496.43913 490.5496016 0 11950.39923 31161.16515 0 653.5289714 1920.770709 3126.544144 0 1099.181469 7667.698873 58214.32558 0 26946.07986 0 1132.430201 29752.87658 5476.846793 0 25.63093542 0 0 0 32331.66651 2383.030709 0 38894.08715 +0 23653.04547 3649.015199 22570.06455 15994.93806 0 38579.54509 0 18557.6379 0.6839129857 8799.080926 5217.959665 151.9747601 3757.10993 19617.1023 47226.67894 0 0 0 0 0 37.11110423 0 1006.716942 0 21315.03776 16924.44294 0 0 4801.985718 0 18469.90068 8452.896503 0 41942.96473 4600.942936 46.76157647 0 1398.248794 9006.876107 0 6132.488972 0 507.9676062 6285.450943 17367.59339 2005.801583 703.6667595 0 64.01455568 34590.27445 361.7435019 0 394.6395734 0 0 3700.261265 0 956.3821308 43219.64395 0 0 20632.7104 63.0396932 1347.856858 72132.01395 0 0 0 4920.815763 31811.03898 0 3199.513695 1048.862174 0 2871.744941 124.1102902 0 7458.536054 0 17607.6234 86.64320912 0 6177.924586 0 0 0 29789.82656 0 12225.47106 9722.987899 9458.385155 0 0 48.89452844 25472.43308 24958.6091 0 6423.491696 392.2108244 16097.64119 17949.70704 20341.36704 23617.85968 9072.657645 3390.627691 2534.443987 31.69655758 0 39047.33737 40640.22447 0 3.987693718 13791.90354 0 1442.068761 25648.31139 7100.062722 11359.61591 0 0 16413.84747 21803.82196 32240.76937 81716.84774 42195.1874 12125.03784 0 32136.79298 0 33400.2461 0 1670.914639 18385.62159 18502.56338 35786.25888 21244.94634 769.5815502 23042.55707 59092.13364 0 40457.71367 0 6919.994918 6644.328261 34297.96334 12599.84723 14638.27902 16134.62914 4350.657982 0 1456.481354 14815.68562 8741.592107 24777.51805 3662.01957 5745.732488 42466.90386 4467.154423 1515.278882 22120.47633 15518.67958 1.993546844e-05 27257.75571 738.1416694 8.540984377e-10 0 3350.887535 0 4.891458558e-05 12396.01287 12927.59302 0 0 17363.01351 0 37692.63542 154.0783953 42413.81093 0 6883.618372 2486.012011 47015.68152 0 53253.10217 28102.9316 27548.46525 7221.922403 0 0 14166.09039 0.0002310598696 4806.93667 9318.969864 18328.02699 0 346.8071481 4199.463568 5410.640055 0 3886.181314 0 683.614688 18970.04316 0 6609.261545 17969.62833 0 2669.409083 0 0 0 63220.17515 18269.38807 0 42759.51461 3656.449194 58790.03643 0 0 0 7502.671382 3210.650921 53430.49213 71376.20986 8251.422415 7157.868596 0 2285.332824 5811.803401 0 47093.89584 10777.39191 894.0489267 2208.524232 25330.04287 902.7890715 0 611.55133 0 0 0 53009.51405 0 29577.26804 11892.15205 180.2092814 37460.9942 1290.910314 0 563.8956902 0 0 5746.203625 0 0 0 3546.696885 0 20867.28079 74518.1251 2594.156342 0 21479.47627 466.6167407 0 0 25462.11017 4547.095803 5786.987864 20597.86497 0 6665.693997 8182.027758 30826.64237 0 5032.732365 2307.975864 0 4243.810462 339.2047791 29726.72861 26927.53536 0 37912.77306 2763.886317 2536.946363 0 0 5043.002112 0 99.91432721 0 14747.195 2330.806821 0 23309.03959 1930.868996 3192.414693 0 +2227.815887 5297.814931 0 51994.63982 0 5874.10265 1350.650427 0 0 48097.77141 0 1604.97646 10168.12538 44176.22278 4701.60551 53449.45874 0 12186.62175 1198.533661 36.73123397 0 0 0 46.21306191 0 0 0 24698.95959 19224.75821 0 24760.94587 7600.419323 0 5509.388161 24181.22014 2732.179893 21.30526008 7673.525064 5679.537493 0 0 1901.688294 5161.087365 23427.06343 5905.728696 8648.254785 309.7103946 33647.42131 0 0 0 0 0 7301.732851 9051.578174 0 0 1771.536758 3092.761657 954.3113987 0 8436.999473 14550.51257 51470.28827 32192.1894 61712.36022 9330.754956 0 752.6404119 1827.655579 699.6416272 0 0 0 47252.5013 5371.216438 2493.730796 38.3603302 0 339.0900301 0 0 56029.86517 8577.776627 0 1282.530743 36594.99389 1571.274288 17112.65444 8005.814189 0 24163.35808 4009.625445 0 0 1840.315276 0 0 83.05667491 4291.358827 3962.570396 276.6415609 42553.79063 12492.89727 21131.58672 97.04376443 1739.410222 23070.54973 0 2109.092635 0 23735.18551 0 2.560415926e-05 14625.65156 2555.37623 14952.70622 22700.16019 0.0009228382492 2096.143256 0 19314.2643 30534.74669 0 0 6310.670696 1869.760243 2566.524142 0 29568.54305 43914.97736 6127.995474 1395.855605 27452.9125 11661.36405 234.7703083 0 3491.40689 0 36147.95686 6633.630303 22872.23131 2454.982424 28202.75765 2667.680251 30292.19085 20190.71528 10992.76721 7141.101961 2866.319599 59909.54562 0 0 440.2165643 0 15717.68084 4.544679694e-05 0 15110.96441 1.877729569e-05 4379.410599 2947.85035 21473.26999 7747.198969 6436.413366 18548.7319 0 0 3578.725255 23625.93058 3469.240377 30362.30239 18114.00891 51944.76073 0.002142817333 4606.909642 20524.86017 32725.59147 2581.772466 5497.242149 6792.148036 1285.454822 4535.140039 30614.74122 0 0 347.4082107 0 16499.16561 84402.88004 23106.74423 8342.632544 13710.75723 0 650.0924865 0 0.01197480301 12043.16472 348.3462367 0 2748.414888 0 0 0.2699910914 1652.375965 5886.672712 2216.890454 68.87364612 238.8107703 0 691.5486876 1559.589758 26389.1201 129.5939522 524.8729749 3628.805311 0 0 11632.6235 0 2199.051278 7972.427136 338.6093121 63992.54481 2794.445535 3129.380821 64030.2035 4738.074131 24445.43241 5237.839471 10329.68335 35073.52744 0 8416.337058 0 0 0 6677.381079 2470.593199 0 1645.38285 0 825.0333922 12338.83674 3655.625041 24090.50934 7357.731715 2573.17753 0 66629.97433 0 56332.46113 2064.863637 0 42.65501814 0 40.07872073 14854.65857 0 49.75519326 0 1921.024207 12589.47743 1146.460274 8899.262937 0 13760.99313 6470.553285 0 7354.556956 8655.098123 0 1833.648657 0 11694.27097 0 3000.469637 351.0019512 1048.434881 5.973768272e-09 0 0 4788.159437 0 0.002506359155 7200.956178 0 29274.91489 0 0 48505.66172 1532.25164 6458.409429 5548.237632 8515.919987 8788.157974 0 0 0 0 +0 1567.518451 2645.674336 968.8803489 1605.28723 3507.040032 0 6534.429634 15324.67935 0 0 0 63607.22188 47.15240647 17579.98418 0 21972.90531 0 0 5251.956935 8735.823121 5494.806763 13447.831 0 51170.21393 0 0 8.906870615 11423.70527 408.5488284 0 689.3684928 0 50714.20607 0 10199.0053 2878.16808 0 263.5924289 0.6878855092 0 31.68483812 3154.315826 0 5119.352993 0 6373.99156 0 51791.19396 106040.0315 23896.93345 23324.06889 0 3729.789886 12282.97713 25232.81659 6630.239327 33019.65815 446.9777868 0 42679.4612 0 0 0 0 9238.212993 0 3717.738712 0 1654.525453 7483.894597 3030.391231 0.231772284 2823.104913 36022.03476 1862.862391 44752.93531 36355.09664 20195.08201 38303.51588 5702.417118 0 31886.39956 1065.642318 2356.869782 30712.3358 1541.898916 22238.58076 21759.64222 2531.228867 0 18449.42308 32854.80289 0 0 0 24626.01127 937.9264105 13607.17561 0 11969.58617 13508.3185 35285.92083 31467.2645 15993.4568 53452.73196 0 0 43736.25301 25750.57732 2158.888019 19853.82996 21092.32271 70170.76868 0 36215.35134 0 43832.4238 0 9337.947448 0 1583.462064 9582.650415 58040.95353 696.162868 1058.094135 42398.15683 82514.82188 16789.56847 18036.89406 3741.014497 1692.050873 0 0 3878.268745 6252.024145 0 1.015788711e-10 16720.81433 0 0 0 2663.96394 33753.65594 0 0 0 65786.35578 0 6513.173161 43953.03971 0 548.6420012 3106.043369 0 63464.26772 49400.5802 0 13187.85962 0 4790.7508 0 40364.56031 0 84.33106097 2382.173924 0 5498.111364 5963.851424 0 17423.68759 32494.21126 17926.91475 881.3581658 8902.080925 2572.280499 2802.302892 6062.426712 29047.99633 14580.24047 7547.650098 0 3004.983928 0 7344.475175 18354.78889 0 267.406397 20365.61106 5472.485869 78677.85344 35544.47412 0 60027.63344 17506.61522 0 45116.09623 0 28603.35994 52086.86219 17361.75116 5875.142873 39234.60984 57.57771239 29621.88877 62541.57667 13460.70764 0 4420.000102 1541.354051 6531.698921 35568.70171 14560.45937 9297.541492 43147.50239 1287.985863 40504.88942 2423.541924 5097.439879 15312.2078 0 0 42511.55382 0 0 4709.00903 356.0786039 0 23295.59655 0 0 0 16777.10518 175.6148334 12209.12404 1067.592333 0 75584.21722 9093.240996 47916.84627 6464.104747 28038.1562 41364.27116 6835.938764 0 26.41695092 19403.4369 0 527.338321 31198.9982 0 0 5988.356726 7283.02822 14754.123 346.763518 1370.776218 19533.57664 3.946108758e-08 6132.369664 5502.915766 0 0 3552.12487 3604.967586 0 4496.212613 637.8868153 8789.44301 3696.938404 7559.209775 43383.40012 0 0 0 0 0 0 1894.795412 43318.66391 6713.00873 4311.653503 0 1733.513527 0 0 0.0001018838075 3638.015871 0 209.8617815 3532.712873 51756.03702 6200.358197 1597.503581 0 9829.633322 36192.29615 26400.1847 0 23251.73238 +1599.308366 287.9466834 4611.301308 9193.886137 11722.55039 35825.58025 0 0 0 12626.49525 3767.669279 0 0 8163.768839 59098.18063 8085.401428 6681.930292 36632.68199 2242.874363 31376.34906 11390.9576 0 13245.41708 0 181.3186535 0 0 0 57880.68456 4991.096144 0 1833.085647 1516.602345 19727.84426 0 0 29992.29121 64169.49822 0 27245.68138 0 3971.974605 4743.766412 9030.843629 0 31574.30115 1892.455312 0 2991.829319 13659.90362 41569.60825 575.2785305 0 570.4059021 5385.305634 0 4265.280616 53454.6357 17070.73643 29156.20565 2129.745415 0 4487.149352 0 0 36509.97473 8367.749694 0 0 8078.07247 2389.477601 18960.30008 1999.304674 1895.506814 25336.09063 6161.290447 14958.64913 29172.53139 28452.62656 1787.75215 64227.87333 0 21886.37856 9059.948055 14435.36555 21482.32925 9008.475014 3078.261177 0 16460.77051 10035.72389 0 9278.078618 0 11985.79284 0 636.3409531 78463.47574 357.1078769 53003.98737 0 0 0 35710.98134 31492.31749 1117.901862 6367.943729 12552.17756 0 2029.670113 12219.92511 28162.96066 0 0 35328.6242 0 2484.841225 0 0 584.3853941 16940.81084 16952.54011 0 2109.138737 0 3562.945438 99.5035369 0 4063.504179 777.1033317 1872.031832 19923.23264 6994.632375 3594.554097 0 33013.74839 37496.03087 0 674.3289545 1156.857782 31854.07267 24737.37734 25848.90667 5896.84105 0 18013.87183 4793.052048 12343.65394 0 6759.830555 82101.65604 17138.30348 1836.192739 46593.14912 30336.14688 32455.39468 6545.670212 0 18381.62415 8554.723398 35580.01465 1456.821122 8119.658732 3690.74264 36156.83385 1482.935294 50385.96447 0 0 35027.00393 189.9742139 178.5616285 59442.72109 3566.778615 3094.309503 28.53852885 14437.69029 0 26964.70962 29610.60953 0.08904974189 44540.27589 0 0 2.19467545e-09 2511.408265 1863.375022 2691.140589 13935.18362 0 12644.1416 13.27262079 12664.86966 22414.40673 28.97519879 43599.60679 34053.16296 25621.56428 19785.86464 5576.119315 10402.9594 21022.27354 20658.48802 6950.673114 25699.26319 32637.39397 6233.50476 0 0 4664.558847 6425.794615 16037.15453 34246.0748 28994.89155 2568.346879 7374.45363 0 20008.95164 0 19277.24871 81.87169907 0 5323.781081 1109.522866 332.5849706 2463.245934 0 4919.805508 22960.30548 35509.14782 4512.575492 10494.92104 6540.420146 0 32666.21554 0 0 72.68742138 3407.435304 0 0 41075.70966 4918.49527 0 8957.783674 1334.533836 7848.59149 0 20177.6897 46777.04048 2698.541135 478.1475304 5230.963204 9195.004549 0 581.8084076 0 0 8338.355129 0 0 0 10250.9443 2937.53787 0 0 15439.29793 10475.52714 0 0 7963.043576 707.1098791 0 0 0 0 8552.820492 0 0 513.2458083 10014.34726 2172.125823 13976.65688 0 3002.983066 6.443677721 0 39296.41967 2.373305998 1773.230756 3579.450632 9785.612184 0 67705.2413 24270.07908 0 1859.449856 3826.074588 650.5944456 0 +1100.384922 67123.09823 0 1324.721671 0 27414.02835 0 22511.02199 603.9302574 0 0 2171.963821 4352.336156 13063.3807 16232.09544 15067.94013 0 2617.568831 770.7670207 58210.27081 0 22742.4133 32198.1126 1743.131582 18368.28262 47.23740665 5669.821509 0 12396.9142 8253.182841 0 9042.433439 0 4165.907563 19195.60985 3.379345127e-07 0 1698.769977 54.85235913 0 785.0830618 1094.972192 44583.95045 0 9262.40175 35670.10888 0 0 109.4024511 4038.647702 13416.26773 5617.010419 10724.117 13741.3532 1245.280967 2016.535369 10846.94044 72.26324353 0 1745.2555 0 33495.62697 0 88.72585204 16304.17398 20415.19308 0 44979.98773 0 22396.44574 4993.735424 3464.702429 3239.175794 18421.58034 0 64934.87678 2.835720745e-14 490.0245398 112.8797192 0 15443.65396 39843.2142 0 83607.34433 42.60223654 0 24134.50713 33136.71721 59579.82962 4082.436305 14907.2331 24.84105144 164.3712541 3804.631929 0 0 14085.25076 20254.83233 149.8533967 0 2358.565167 12656.66957 10058.2097 0 57985.51731 0 18310.61316 10009.45538 17915.92432 212.8671308 2841.714528 0 0 13941.49853 16245.32158 80.39665917 27369.80861 8862.514604 346.1181877 69.06480747 14876.79508 1566.971455 36202.42129 12168.58217 6971.221254 0 99.30378941 28289.92811 4561.269728 0 55247.7954 7871.05464 0 17233.22861 14495.85041 0 174.8484978 23338.76483 0 9481.923576 21506.38254 14102.16746 723.3362679 9461.667056 136.9539622 3217.868977 2166.213443 13332.8521 0 3950.964497 59898.45331 958.9763222 42302.2014 9941.039153 3071.279974 28714.89944 0 1942.895798 10546.69021 34658.1589 55942.20035 0 6734.306322 61748.18432 48648.83475 1117.034029 53334.15979 10049.25725 181.1617957 0 43106.08564 5971.783459 438.0261266 0 5207.447925 773.8207071 14333.6233 10962.4673 2369.916665 52002.22948 1363.752766 2959.981087 5003.300595 0 1130.551013 17961.56734 1988.458052 2309.96452 0 2.267094649e-08 12230.15107 0 0 51987.21366 0 0 0 163.2394067 0 5813.553867 23981.45418 1307.608679 29.91977471 47951.06616 22409.18634 338.7140731 6760.408566 29181.21745 47157.76404 2029.468234 0 0 10906.94433 36139.704 154.1859743 35.4723482 38.4839196 18195.32671 330.415796 324.522981 40958.89019 1668.971344 41933.6362 0 1997.7274 22133.34945 5838.678564 0 28343.35248 52.66965409 113.5231725 254.5692004 0 11177.03548 16681.85685 0 0 6287.98744 0 3577.740611 0 13499.52871 147.0926465 0 0 0 81.60690096 0 1204.711917 5136.71599 2715.432778 0 1.834207572 0 56027.24272 0 2962.680381 44372.23584 36665.82137 0 0 553.5005048 45913.88869 0 1820.258384 68.42697138 19695.77834 39957.15824 0 356.7671379 3529.860707 0 21292.92367 0 357.1137136 0 35924.19359 0 8443.322359 0 251.2154984 49.77328016 23699.88625 9.282316014 0 34504.09862 1198.495093 0 18238.50627 0 0 0 0 21558.96844 0 16649.03001 0 2519.79944 5507.766132 0 +0 48054.26361 0 0 2555.413709 6810.062687 0 20715.93251 0 0 56625.10767 0 295.1045025 53654.64837 1.915453847 0 14653.0903 0 26721.74628 0 7778.938935 0 0 0 0 261.0046763 0 7160.337921 0 0 22882.53357 0 12050.08687 25271.75759 0 0 0 66.6979669 1993.529881 0 1062.213084 42.19061777 0 0 1407.289291 4435.160421 31146.81889 0 0 22202.12273 0 1628.114939 102.2842308 457.6967848 39464.06608 1062.181945 1860.341609 10220.9489 2569.167001 12996.59382 0 69245.88439 0 36523.3231 0 5027.50702 0 31422.41433 13475.07906 0 2680.552278 635.2490969 0 63053.64625 61443.73941 2656.970295 3962.907461 23121.00754 0 0 43137.37256 9.975339569e-05 51925.17472 8878.391498 0 14934.71675 0 29924.7719 9941.069746 12.98082957 68894.55979 4072.778981 0 2468.172325 4958.632851 89.32684479 44168.77062 48731.21749 25513.09722 14362.23717 14207.38763 42060.22546 21991.25825 2971.622339 31201.75112 13964.14958 0 15316.48463 0 2083.379681 31312.65323 0 4347.331632 0 7001.841138 5012.52724 11182.01392 42673.3675 52760.18159 50289.64823 4993.243195 23146.01924 19919.39926 16985.88288 5316.393233 16918.75706 11065.12462 56429.26046 17042.38536 6752.162117 1628.036611 679.2214253 35853.68868 0 9086.053514 0 4355.291417 3479.498723 27354.09302 0 2400.077754 28590.86178 18973.60832 8605.668444 1284.930627 8950.644836 36671.29197 5130.065841 19450.7413 3799.736535 3069.265221 0 1034.955308 0 22273.32612 18191.91377 34.24219788 0 50736.28366 74.72276177 4333.232764 1106.796492 23599.26979 55408.64232 13020.36422 83.81393045 4677.73925 1.140423819e-09 39792.11979 33636.52663 0 0 0 43720.80998 30833.10036 0 28215.75781 1083.617426 151.8563954 13433.21337 6803.882559 0 67570.20239 13069.02125 5554.605846 37031.56741 1907.962174 34641.43564 16565.88119 11289.3024 16703.06593 0 0 31.6165697 32253.05203 46892.91747 0 42549.26301 42094.21194 0 62197.42889 1496.896689 871.2283521 0 16064.58109 16999.53408 34309.7951 6268.606399 13178.43375 27295.34997 1.18584971e-06 2882.133732 4286.649014 11023.42537 2850.556538 4651.499505 7115.152655 33231.50538 22.3245012 0 0 0 7827.244695 6238.902618 234.8687197 659.6037983 0 0 2400.296377 0 0 61.95784867 3806.344575 0 46869.43268 5386.132016 50192.95139 2175.951971 39875.51116 2384.919668 18154.5213 0 0 0 16394.45451 0 0 1348.687685 0 459.2235978 0 3198.866155 554.8995866 0 0 0 0 1738.41478 99.52564958 0 1384.082039 9023.627064 49905.08999 0 0 33.19249264 9141.912612 8049.195836 31056.52089 5933.002949 0 7056.148708 0 0 2598.125606 58757.55015 0 2949.174892 35.13484263 0 0 0 23135.11582 0 2.335504666e-08 31459.20238 29977.6637 8377.466078 52499.15003 0 0 39414.28519 27168.71669 0 55.69885845 0 172.6418676 21256.89323 1674.476837 0.1036821159 +0 31064.43059 0 0 21460.91743 10295.62002 14613.18308 0 38104.91263 3235.703667 23732.11673 0 7214.151542 1949.766051 2967.414962 51853.59789 0 0 0 10277.54222 34936.98644 0 19382.5837 0 0 2816.20263 1415.783715 2610.88969 7523.428502 0 20458.87595 12.95532516 12036.79994 0 23377.03979 5148.155373 49427.28624 0 52842.7774 0 0 0 23521.3306 0 29733.79479 0 0 0 9805.97842 106.5038542 0 11675.1084 0 6229.388494 0 33305.37536 9443.002335 0 19.01398093 0 4042.890466 0 3894.708713 57.40935698 1263.317189 129.0733078 1472.463658 14271.56797 0 186.3191463 0 7838.496493 0 1231.806868 50593.72909 0 6503.906289 110.1303506 35107.84313 13144.98708 13438.53231 21116.18118 0 17829.71483 0 2669.180319 1235.370564 3600.114497 1538.393271 1745.677331 2111.26567 15883.10096 16310.8717 6062.25382 214.3790375 59863.11179 4476.489116 0 1503.221539 0 7232.920432 4173.991446 0 2232.057645 0 0 41.1805479 129.5148954 55403.58221 38044.42248 6160.271929 1532.309182 5585.775686 0 0 0 6662.916305 1217.08077 0 0 22561.28911 930.9192484 9679.486411 30556.52633 18009.15982 15113.94695 0 7100.771024 45536.17413 16367.35759 745.763888 0 55615.83079 31057.69342 0 12875.19401 24671.59482 739.8300126 239.4850871 18081.29188 18731.4295 15391.72479 58426.21722 0 2072.999495 41998.19651 8332.597349 0 84.13850375 1122.553112 1691.11026 0 565.4437435 4527.854664 39444.64834 7489.69998 0 0 34712.04038 23540.21268 4921.716015 8947.59105 916.4462134 350.1279318 22212.20433 0 42898.27568 11634.66158 0 17026.06813 0 0 1681.039858 0 4015.02943 6924.574361 5167.64196 32297.88572 19967.9518 51420.59725 0 26526.35647 32815.50669 6231.8234 6539.732135 24325.51495 0 11814.10644 0 3969.37464 360.930167 3815.192904 34260.34603 2221.352725 904.2271099 11601.74112 7256.149261 36463.92769 55408.457 458.2909157 3154.83873 12953.24358 17239.53891 649.1037409 17746.77547 15518.0883 13029.24163 19752.11512 21317.6826 0 0 1623.281335 0 0 0 2932.762736 6506.270984 0 0 52438.76735 17619.93348 35140.59369 0 12833.89261 32410.47812 0 0 27057.14299 514.8436106 9963.604505 16086.58702 51071.38326 3006.68846 9972.27858 5181.887196 48605.16727 41.55981606 0 229.6886372 0 55036.22334 0 0 10576.88126 0 3471.099654 1558.265042 1021.66821 231.4441766 12051.07269 2825.374773 0 10464.36746 0 16954.55178 0 24260.86022 0 3075.537802 6259.947375 338.6614967 81.25338235 27853.85676 23716.73477 0 19840.73556 0 0 0 3404.170152 0 0 30422.11211 38420.6107 1405.272072 72.50034866 4311.81894 9291.911643 21148.378 32960.34794 7643.500342 256.3027203 9680.753796 7895.701062 0 10863.51359 13127.08309 0 12007.29458 68.42993771 192.2132811 18288.63213 889.8160705 0 49068.6564 407.2646017 73162.49546 0 13199.51384 6800.358306 +230.2574385 0 0 11427.05441 0 0 63008.59385 21917.39142 0 56877.08714 140.2748556 45868.70371 0 8254.761666 13319.50004 3560.821578 1802.076492 5588.087992 36.88142331 36343.22113 145.9770007 0 0 6273.715703 10562.44416 75.6644891 37531.22329 19436.48277 9150.401709 0 18284.20659 3047.635423 0 0 0 2192.21024 2478.497172 11557.67445 0.007942814877 0 5380.855328 0 30600.37105 358.7343884 151.4519849 31450.33279 12372.65031 1897.672972 2497.77728 7345.039429 469.6801697 0 2882.218991 0 0 56150.25503 22479.96749 1527.401014 4732.79643 40027.4618 10968.76532 8734.650236 20977.69364 0 0 67213.00049 27191.95108 4160.13692 5166.669177 23468.0567 0 14523.17152 17489.55456 0 5602.39002 8268.906209 44146.3153 3888.30514 0 11182.34327 18974.6413 0 0 63232.802 254.2019468 2785.439282 3253.223975 55397.66051 52218.00322 3589.147564 40192.04688 53095.74023 24232.03092 4889.315457 32852.02685 5905.13994 5180.288159 37396.19962 0 21392.05413 14439.29548 28754.0034 4795.07971 49741.07466 42880.1294 16494.62736 55529.42906 2746.435276 0 30927.1115 0 8463.996889 74.50766943 2323.013889 33353.27002 19199.58806 921.8271178 2985.543685 43377.83266 6779.971577 53094.41798 2326.894742 0 41212.26852 11509.90917 2907.364263 1954.755892 1007.153916 668.9859299 0 0 1648.352298 19286.45898 3956.671597 0 15174.75206 5985.790858 13651.8077 40426.01082 2335.215824 0 24169.80172 52100.52687 3610.049086 60765.90868 895.8616282 0 0 0 6687.99466 18955.65193 779.4660603 10902.22536 49088.74302 7093.970238 0 1489.770561 18986.09791 892.4098881 10232.28269 5131.886327 0 3237.768212 0 46784.78929 0 64074.54748 23236.63662 0 43.95137944 2913.717248 47735.45092 0 2733.687607 88116.48342 0 17471.15496 0 44030.18968 5621.370752 0 10566.41881 27576.2527 0 5654.829908 0 3139.179039 6492.073074 0 38.62063443 477.1580557 7599.276007 8580.879899 10399.34422 38443.81697 66607.94988 6209.072578 2093.035943 733.4829523 5110.163986 58798.27648 0 2226.385865 0 21636.23861 3490.057521 15363.86553 140.3302911 0 2668.536189 4281.822107 0 43112.39082 34.06275328 16860.19786 2060.274151 8346.180193 914.869488 17280.97322 0 0 0 100.2035014 0 21308.59581 257.4977584 20229.64871 0 40547.88217 255.5072733 29.12039432 115.3318764 0.007069369322 21576.45761 13777.5844 52.30764624 0 10685.25894 12576.32406 5529.853796 15889.67643 845.4744602 37823.52395 0 25281.70401 7912.558234 0 9392.300909 19489.46254 0 2115.242484 30634.95554 0 2090.604645 0 18237.70563 10495.3612 15697.81787 3038.491709 66545.42997 10893.48946 30991.54193 11286.89901 0 893.5282524 0 0 30625.68644 0 1566.251251 18764.8248 31635.80649 35641.03376 575.4489651 0 2490.721573 1049.608145 0 4706.237604 7096.090827 54967.39139 5463.313512 3340.841129 21140.14443 24228.63961 4660.943324 24230.68482 1989.997779 9972.367983 4334.3021 0 3863.459504 3288.341468 0 5054.028419 5689.277688 0 18877.61989 2392.76752 467.8322055 +0 0 0 45565.75533 3399.44551 0 1548.249046 6406.07802 24378.31913 0 0 0 0 6141.523865 3838.736667 11121.39311 0 0 192.3983231 17795.56059 19440.29403 11519.26461 0 0 39414.11282 17682.93956 6937.515753 8758.725388 0 0 2049.638324 7827.45776 14052.40127 20231.88135 160.0338515 334.2853717 41689.71046 11303.85564 57314.57066 0 56012.0659 2643.104516 0 5698.307304 110.8985866 6210.441151 3174.065382 5337.099121 5428.242647 36608.13218 2632.223212 0 2.889309917 0 48712.4903 0 43070.58234 0 5061.461864 0 10633.46907 4589.73328 0 31447.6353 0 0 0 2140.305133 62088.40069 34083.2594 4571.034379 2813.594964 1825.421419 0 722.8079971 4491.590662 4425.962917 36734.8402 0 29714.18946 0 0 0 7385.87221 53218.04808 2416.434938 4189.857958 34282.5571 13545.46431 13527.58708 0 0 2719.612972 20850.3336 2801.001999 0 0 144.7138221 0 0 11656.83559 15062.66287 8226.594762 1463.731896 51193.14394 5458.444075 6899.17814 86718.48464 7348.237354 3793.783297 32481.20233 284.5670025 0 0 37116.77892 23786.62094 0 8928.803423 29459.43681 0 995.4177338 5531.556374 42214.48443 807.8436119 7668.601781 0 5026.439385 674.86471 28862.06567 76.22081278 0 34648.31539 0 7128.300344 10558.84575 0 20572.11499 4382.870159 2217.327264 15215.86623 2215.400387 8420.097858 0 10782.27399 0 35435.83009 34338.30162 19564.41914 6400.520317 0 11979.39909 0 41241.40942 2244.615776 33449.76459 26658.03129 20406.83247 388.6521812 59980.46511 57202.99209 57556.51808 0 0 0 5029.830325 790.0118987 0 2851.374118 319.6917677 4949.18066 58417.95418 0 0 343.1689644 81251.15074 3061.681853 98.58514856 15399.36312 11011.69142 0 35841.98856 25106.05921 24620.74268 0 4980.617613 138.9398179 33714.65674 3400.418307 313.268165 41746.4041 45751.71676 0 20366.88756 5933.744238 0 3002.608522 27144.65617 723.111414 0 79.0900646 5947.217036 0 0 18704.4675 4390.031566 0 5247.034835 92.09916673 5083.758008 0 13651.36565 19558.15566 256.0922725 19539.78744 18234.98095 41105.20612 0 20174.37744 0 8249.395861 42.34557511 7907.853572 0 0 61075.16296 11283.83045 43286.31689 7995.096933 0 1209.702954 0 38166.58396 69233.52013 0 4922.891024 5870.07737 39.42552495 27122.11841 7764.751767 3261.31537 2898.879986 0 29885.5486 12159.30565 0 11603.25071 3166.563298 1696.825074 1686.034449 18545.48263 17936.8596 64677.556 12526.02649 294.5769223 12924.77511 5831.99484 0 2742.605444 14034.4195 0 17617.83497 0 41.60001864 0 13325.05543 0 45479.6209 8520.316185 37690.22868 0 3702.158137 2674.951178 3150.989458 27.23760597 0 21768.34553 0 0 1416.289644 2590.838882 0 8568.296749 34395.87679 0 0 1843.686146 1116.336172 22766.25429 0 0 11059.16144 5486.046715 3737.568482 9671.441702 0 21133.86391 0 0 11016.22777 266.5557789 +0 3348.522286 6762.314313 1424.53462 4876.018228 0 16339.25519 0 41325.92343 0 0 0 0 14233.58254 3847.177984 35.09775346 8095.692772 0 1786.831066 0 5.322696833 0 0 640.1433587 0 0 9701.878144 0 0 6750.285558 0 0 57910.99945 2273.125044 107.452774 0.0001385308239 0 716.9765203 0 2748.295645 2067.79785 0 2067.256426 37061.15903 1106.942296 235.2763174 0 0 494.0161179 38955.71212 0 3530.583455 0 32953.31628 6672.2297 0 31119.91088 0 0 8635.591504 1380.003646 0 50729.11427 20058.06325 3769.219336 1626.214959 0 69626.98387 18684.19243 0 0 5183.920623 7402.849384 0 117.8013868 166.5824487 77777.67979 0 3347.749647 0 869.6391194 19745.25221 0 0 9462.861213 68228.74824 2004.353421 15210.43813 6023.655058 0 23584.15778 5738.376878 2713.591604 9352.22955 19327.13357 19775.03163 0 56608.02857 46932.00419 9954.077652 0 36517.24679 10526.85165 4191.868804 65896.65997 839.1624557 45535.67275 27.84122629 41169.62515 0 0 27851.82347 46939.84754 131.1057601 26425.22807 1.576306795e-06 0 0 58044.46793 0 4651.548184 0 36216.96158 0 7192.561309 0 1198.394698 0 27669.93414 41932.80427 153.8491867 0 57612.3988 0 8383.44348 1875.060132 16963.38514 5508.013356 7803.642971 49309.53731 12810.77105 30424.25247 5.95078289 14428.15229 2085.799526 0 10193.07416 39498.18511 13522.2638 31656.15867 400.0886694 34.40183817 25834.48114 47.78253354 14984.34039 5904.441185 3424.788231 23252.07761 4311.432728 0 9081.44579 2.302210721e-09 2057.205991 0 1537.462671 23789.63551 0 9331.683486 0 9654.799434 0 0 0 0 76981.43073 0 18324.14476 7663.50996 0 15660.51013 13827.01716 157.9306946 21032.36383 0 22339.84608 10206.9361 0 0.06362998504 2771.642802 0 0 3240.799309 2803.124551 19928.44656 71552.54132 0 35216.67751 3733.416596 8285.964034 5243.698242 4458.744445 12637.97902 3087.746023 0 0 24101.851 33.57322964 1025.159929 11.99456813 17929.26322 39.38108317 179.5572069 0 69949.74795 56.64357508 2878.787107 439.7454025 36.0835015 0 287.3464729 8338.168515 2202.586958 0 14219.32153 0 0.1133738253 0 4494.450465 0 1922.829966 41799.6061 27718.3551 18299.42618 0 11888.15856 6935.499028 10730.67732 0 516.3603449 902.766585 7862.281736 1885.584926 13819.28234 1473.440938 418.4319793 0 824.7418615 1715.448188 16790.34994 0.239196337 2036.544478 65414.47171 0 0 0 735.7478235 82830.39053 2.350411075e-08 0 3004.928737 0 0 12891.559 27809.24645 48416.33734 14179.18061 3974.244751 102.6499237 11333.39095 48340.0872 0 0 0 69.61993462 45263.26507 0 2334.42277 15140.06958 1405.420373 93.30812328 0 0 0 387.9008281 0 41116.55085 3811.07703 25487.93403 0 39019.71543 8873.935798 0 1642.993383 20362.55628 676.5849363 0 1516.075342 0 0 5839.954022 +0 0 0 655.7147523 0 1777.597555 2414.686166 29684.34089 20987.79687 3965.167408 0 127.0698262 28383.00356 0 1002.977269 2295.891313 2643.835716 11.04025454 0 3541.772203 5610.06871 2045.213328 0 26383.02249 21854.3271 2064.431522 12270.73069 2270.916651 0 1.147343057e-06 884.8328597 0 32112.64666 679.6837321 808.3671717 2322.036899 0 21011.93186 35942.0547 229.560191 0 0 4547.61062 66843.22209 0 21954.72835 34894.7692 0 7687.147273 0 15454.7891 22403.36076 0 258.7706452 20244.72249 0 7129.123085 2488.42878 0 19057.00736 15942.34638 1221.200632 6599.455238 1343.353637 1532.203016 1979.705408 3707.205002 3565.192965 1968.53332 4583.465037 0 3156.131217 23945.00273 64.23170083 17817.99315 0 0 16131.86572 39042.5968 0 0 1401.672531 37789.54339 0 11991.43212 0 9648.561604 27621.78904 57406.42104 18215.77332 0 1461.04072 1456.842124 55621.38144 11296.68582 0 0 3454.994034 16264.7735 11890.00078 10449.03569 237.7728622 385.2643514 1099.590944 49945.82123 34451.14015 0 0 94.45635119 4533.16952 3206.734566 3452.480673 1341.337364 38652.51619 2.282185104e-10 1555.807366 0 16081.59602 27845.7637 8659.473903 66363.79525 0 19273.04441 42580.96169 53994.56538 1836.561879 1853.694668 2634.448752 2659.316681 0 26224.01851 9262.401183 32407.13346 25645.07458 9536.737708 0.3848063835 14578.1792 12920.19823 189.7828255 22409.77039 16817.80377 8252.300542 1468.303149 0 29237.54523 54109.27111 1558.580436 26668.99037 4133.243868 5425.448376 52564.49368 0 160.8042801 21824.77171 4369.428374 6686.192465 0 290.2037349 3019.152851 0 0 67495.05236 0 2552.206917 222.2891266 14355.19816 6718.121151 0 25276.0528 21146.52868 41.94645151 1640.313004 10486.14605 0 13653.4822 332.5176917 10885.026 47927.21225 0 51999.34546 16725.18967 13562.92314 0 27701.97481 315.6394472 0 0 1849.82924 0 31673.14907 11364.14398 0 92.31435332 7495.777766 849.5938468 0 27874.21625 18565.33797 1323.684362 0 0 0 11565.86887 0 4183.306971 11939.30596 9649.080393 48448.39267 0 9250.735517 47122.37651 59.87746601 22410.05758 31930.8472 0 1524.902692 24507.25976 0 36964.95399 4727.444249 18543.8596 2224.726813 3518.557155 1171.592906 4667.006919 2282.734207 6167.637323 0 23904.8777 13244.02717 0 0 3484.2816 0 0 6929.230159 2418.959516 0 5.54913194e-08 55.60441386 0 0 0 10170.7573 1371.985568 2600.709708 32.56233294 0 0 40948.08932 0 0.2533089587 0 27560.2566 1202.311271 0 0 0 0 0 3160.59142 14579.85667 477.1088765 0 3775.409329 33839.91238 13045.72882 0 1920.428094 0 115.907673 0 0 62.75884102 7054.711557 0 5769.214228 5.874105892e-10 22918.84969 0 3383.777832 8316.443946 7775.024521 1.372407539 50317.14788 6870.958157 3332.044662 0 0 0 161.2673244 190.3622308 16.52216391 20912.68903 0 529.6389111 142.9738024 34434.10324 0 29913.20581 +1482.356524 0 1356.127655 0 0 0 4561.106265 6981.60371 0 20218.53037 0 0 1932.540493 38741.31337 24784.63257 8136.284761 10367.87725 0 1580.144844 0 5732.010361 6788.778621 0 2283.855163 7768.422135 0 22443.62158 0 0 11295.21546 0 0 46713.24191 8730.43679 41270.5639 0 1830.441061 0 591.842239 721.2735063 5601.541689 80951.68256 18619.99118 0 0 4559.4289 0 0 0 6351.634279 2714.135906 14561.52504 209.3882253 0 2151.439164 45473.15086 16516.51836 0 0 0 438.0258748 23739.4641 0 43544.16091 108.7853254 53926.84272 36083.31753 24731.92403 45502.30179 4281.363335 26681.31629 0 18630.94052 29192.85094 24630.61113 53822.07468 0 4689.888649 2072.894047 17820.52505 3727.55997 8033.521703 2618.418945 5989.763917 0 0 111.6594897 2475.009857 62936.9796 124.160079 12010.80087 31459.86044 0 40954.80403 590.0688807 34754.50452 54910.94384 0 0 2342.928355 0 2075.831186 1727.443311 30.07295959 400.3488787 12038.5884 21546.29017 4171.492508 4705.069159 31156.47036 8442.903852 16851.48099 0 0 0 11799.61577 0 31364.02157 0 950.5061099 13.86762158 18942.72721 9014.624776 45897.55205 0 28244.66322 17395.99684 25824.93468 6885.231172 0 3541.15145 0 843.8354164 0 3.442283484 3770.486241 2149.501428 15966.27514 4763.747335 0 4339.735889 8892.247107 0 2730.088669 0 2344.631364 0 66935.64424 0 0 0 4461.904111 3283.346961 37631.08527 30213.75162 41061.04298 36324.9107 27935.73211 0 2358.129776 12065.47839 21107.36197 2077.383929 535.2823981 5800.546692 10519.60518 0 0 13143.47106 0 0 14905.13695 0 36813.00223 0 3126.568835 0 29156.68907 14809.26995 10653.59286 18509.55349 0 10830.41198 2587.901251 44068.13749 26284.65515 5615.558536 15031.18655 630.5163519 6449.790575 26898.60214 24884.40134 38854.19983 6221.740099 49567.96514 0 4273.099143 57721.75785 10325.921 0 2150.77333 0 18785.15455 1269.727705 27320.28524 17901.65958 1131.830166 0 56256.18929 0 7887.558342 3288.180346 0 0 25368.34951 0 8900.721454 49377.05241 81244.4082 16692.70037 0 0 0 1859.995336 6315.305387 4399.917524 3148.49192 0 5.087067638 179.709688 9297.19158 10946.676 1811.365894 0 4235.356463 8167.556952 0 66436.35047 858.0056668 0 2586.531785 1711.12225 11408.08602 2365.168015 838.4277076 11668.32373 11.4835014 0 0 4936.736408 0 5296.736868 0 15173.54662 0 512.3201596 0 0 21507.39791 15937.79005 22804.33469 14053.00948 0.8712751886 0 5196.220911 58.94250344 175.1917717 0 0 0 181.9356347 5250.445011 0 50830.32116 9572.464273 0 0 409.53019 14006.76465 1920.665824 0 12097.52851 80.36941408 11.18441927 1415.887627 0 0 0 0 0 10816.3043 0 0 0 1390.532744 0 0 0 0 0 +0 0 5298.72025 0 0 2585.160643 0 0 19390.41633 3959.3764 809.8102864 0.4478587256 8748.426773 0 2353.611359 14340.65532 221.2319917 28069.32807 0 39217.51627 4030.038643 0 5401.216308 35100.83292 0 0 6061.391817 0 54047.23203 35661.3434 0 19194.58321 2783.194683 0 3656.935784 729.8924306 116.8603557 23138.74696 1779.99402 24836.82152 0 52825.44367 94.04300519 0 1709.09142 11236.32028 0 46168.28941 0 0 15282.89272 0 8576.150415 0.826648131 38530.74894 4645.880352 35387.34501 7.308739538e-11 36366.69347 227.2648571 0 4925.979212 0 2994.444722 605.180659 0 0 0 1078.33936 11295.53727 19497.28259 0 25755.22851 19166.49293 5292.15951 3249.061297 21142.28279 9167.973291 338.6696633 20045.96539 30106.65634 27.21747327 30200.58196 6816.382308 24643.16072 1820.020949 0 4936.322915 14187.89627 34.92740491 61589.97535 10454.56306 31074.92533 31038.60888 0.01746033476 0 0 3462.646451 28695.90702 70119.90166 552.0590696 54307.74612 2295.492354 11588.88113 0 6980.800126 29739.84447 56631.68942 46139.49348 128.1244366 5469.512708 76775.07404 0 3623.027238 13821.06605 26449.16118 0.001385964912 22033.33121 70.76111229 39230.48687 26932.30845 12529.93619 8807.035552 18681.49962 4300.227594 6577.399913 3758.538108 0 0 26266.12092 3614.923121 68469.34257 0 18828.55701 767.3456238 1657.675609 4438.18688 21076.34018 29195.14914 3093.441955 23855.87828 2293.301661 22050.08309 2385.167632 32.46053473 839.0451584 5989.028321 4873.213065 34485.32789 44.43508918 6524.758472 0 20012.55113 0 0 0.0001082477216 0 4555.837104 2879.050901 0 0 69021.24698 22029.19905 9716.359177 1993.675221 28.09266423 5461.184805 15640.85661 0 505.8625727 3210.848177 0 11238.267 0 7130.827598 32984.53841 4590.471684 31545.02327 0 9.907872466 33.49474301 43573.12384 36735.1538 35990.11212 9419.138684 2285.006749 1620.554372 1534.409912 0 0 0 0 15307.68612 64564.93233 655.7416602 0 8798.086667 18873.93561 167.7707752 45461.35075 45916.02742 11746.23006 28578.49076 3777.706875 0 0 0 10217.81241 106.2503686 458.7014512 1.140063636e-08 0 0 60481.36562 0 5308.458891 0 24044.59296 0 54191.20316 19129.52213 0 0 0 6369.23938 10789.80193 75.29918877 566.0350057 28139.36354 2070.802685 8567.832902 0 42357.98422 4141.223086 0 0 0 5624.693645 5228.404885 0 31417.456 0 0 67676.54212 13602.15571 10707.36398 0 0 2913.685464 14980.8482 0 0 32881.58297 3800.183399 16394.01645 0 1767.292754 0 0 21550.76055 0 14243.65895 0 0 11913.78977 3260.609515 121.7960082 0 15942.48426 38199.9596 27324.72969 0 0 28839.80794 328.4580441 0 2782.649585 1879.786512 50806.95063 0 0 10267.36634 0 0 1290.492521 0 4555.045365 0 22901.79027 0.7495505441 0 15869.29035 0 23810.67061 5477.621208 5847.349376 7417.831519 7946.542414 10251.48503 0 +41.38865622 0 0 0 0 0 8807.822657 31939.45528 7068.441909 1633.768615 24775.07395 0 0 3328.596579 4179.84194 5593.124979 0 0 6543.007951 1552.676006 0 859.4769259 2235.90862 0 2970.257004 2821.97441 0 0 0 9824.803137 7626.618178 2194.144746 59268.10805 13266.46252 0 17279.01264 454.8458912 0 2640.342436 0 19528.26242 4749.377393 0 25197.71202 63391.84814 0 10010.69736 4417.238216 22014.89004 0 25702.54426 0 367.5824704 22691.29482 4573.457277 2263.621565 15809.39763 33136.66188 10531.09483 2569.030345 28455.00941 31891.3318 0 395.3832252 22467.11053 51158.96421 1834.652536 5614.038165 0 16805.40583 7485.160845 41246.35308 34099.96994 52985.02499 8699.628204 0 0 48872.43949 0 0 2114.982485 0 192.5691158 0 71338.23447 2.928367588 50769.67462 419.3159799 0 39557.10092 61.48677127 0 52820.14533 0 0 44103.76305 16686.62124 0 513.9854726 7848.482715 10658.93335 46187.26593 0 414.4570056 0 25897.42055 0 1473.005699 0 21517.28353 292.5493571 0 0 332.9612031 1223.98572 43621.35858 81587.40471 0 129.1194097 23767.43635 0 4806.484099 49143.87666 7310.516816 53684.31294 17617.85681 1076.520919 17973.45636 4199.344537 0 10274.35604 0 23620.34155 11533.60164 10343.25304 18356.5017 0.0007219343149 7341.915218 8982.320992 23282.58063 3658.682914 21879.38847 5264.808109 12203.23472 39421.81342 0 689.1940357 11558.02792 2894.996218 51260.33839 3093.728947 8355.467243 123.097106 294.5562302 39891.38274 26862.36116 46.87296969 17787.7085 0 0 1399.102323 0 0 0 41816.53026 7937.48208 2923.841803 13838.26442 26608.95855 40308.09236 51136.23052 39007.22025 142.208842 5201.817299 13002.36917 1919.006901 0 62.93085756 874.8194197 0 2803.642442 242.1789943 0 8352.666944 3930.818506 0 30845.84934 10369.67209 14566.16517 57155.54121 5864.292928 44.57437699 2341.720469 31.71296911 0 22109.10052 9900.261581 7107.95198 0 10856.83322 25.3887982 0 4063.633185 20971.71097 52318.89595 3444.865388 4697.859628 23907.01216 155.5223455 0 10558.22604 1143.768015 0 727.1488458 5407.125757 41262.30287 0 0 955.6267626 53240.03621 34288.86618 0 24710.55105 20256.6835 3300.576073 2258.080931 24677.54252 37881.89357 45114.4551 0 1194.888091 3041.552452 0 13936.82094 381.1660247 9977.936057 4277.886404 24523.99196 11293.43673 19170.68261 3545.767779 33489.46979 0 1745.400977 3029.188552 24353.56753 0 9792.575288 4150.147992 24522.53044 12675.7183 36312.00161 3912.505725 19802.62313 14976.9541 22774.33783 1493.148061 24868.91493 3084.214505 0 1846.103397 0 13480.37041 1658.906619 0 37052.2952 21197.0193 0 0 4273.606036 0 3399.72468 1956.444464 0 29728.28257 155.6946979 43827.9286 28081.88777 0 4088.97743 1481.657262 1113.649028 6601.617283 34623.92622 0 24406.5974 0 0.04622417334 1279.704092 12302.36556 1618.983528 394.8712237 2612.14059 1320.204623 0 0 6001.135187 1726.486563 0 0 +14461.01613 27.52467894 16818.51126 6908.440508 0 0 26229.06285 0 0 17460.0279 0 50.55847896 3697.70481 0 5292.385715 0 0 0 27816.5277 3331.594725 0 0 0 5142.541254 0 0 16277.09142 30665.79999 0 0 5101.205243 20400.06606 0 22486.23758 50047.86692 16220.48587 420.7125579 8017.11329 0 3025.524121 3.127386715e-11 0 2707.713129 1037.706969 45803.7375 12604.49918 29227.21 4364.689366 143.2314952 2526.969295 0 0 1.111562529e-09 76897.54695 0 0 271.7553686 32007.9863 0 0 0 58333.53073 2484.755797 0 0 0 56115.73816 1581.783211 0 6879.716301 0 9178.531597 4617.921857 0 22317.16207 8178.768333 0 64176.87806 29701.67842 25063.91223 0 0 0 13854.5739 0 6702.748894 1480.778678 8897.268476 41250.36485 0 5940.369281 3777.191207 5424.428816 0 1115.531693 260.3831118 14866.55489 12958.1197 2366.943232 85930.90727 14965.64057 128.2204553 17114.8958 1855.777022 44758.99682 4136.914541 32709.7958 46392.77436 0 205.4684316 2431.613083 285.4358668 19730.54832 34985.51639 18747.31986 37075.66457 4390.097188 0 4141.114005 36279.45209 9339.876969 30643.83628 16421.27882 305.1269059 0 0 21157.73218 3069.488058 8.995598702e-13 8122.288245 0 39820.42902 382.5442595 14455.81395 31279.29598 0 57089.83154 20869.44036 0 35047.5819 6393.604944 37.77283619 45305.98689 0 39285.01041 1840.15779 54.10205669 0 0 0 42452.08962 0 7571.744922 35723.77117 6138.306349 3426.757076 598.7751385 23673.25074 9976.755231 239.8827082 3293.23597 1498.85731 380.1153246 0 29123.90669 35289.08823 4432.159372 0 0 21691.00984 31687.30767 0 0 14727.45185 14972.97114 0 0 37.95324507 25513.76015 35375.54427 1447.207215 2092.891104 6003.329951 44864.01113 13074.25189 66.51636493 1.283316809 5657.141853 6098.481362 15118.21617 4537.462908 0 2763.59792 16796.85874 1207.150604 14519.83085 37614.79172 45021.48592 35977.31887 0 6818.425563 5202.139946 0 3290.793107 6222.395415 20891.93959 0 0 18577.64582 41847.21059 0 1039.1109 5813.376324 0 0 7758.814234 0 0 6352.499326 2826.658223 3592.361152 8537.482072 162.7017159 7413.371801 16297.86261 1433.267264 8402.693505 696.6137691 6039.79844 3159.321964 0 569.3749532 2525.081474 57.03552652 20219.29733 436.3418646 1823.089692 77.29506762 282.232576 385.978963 0 2262.702353 1.879528453 0 1.631600079 0 12262.15269 0 21719.8838 0 70643.66702 2283.312481 24192.91811 3912.363295 5968.011854 0 0 0 25666.85827 3714.577391 0 12986.40774 0 9701.129774 5304.636864 80.6637716 35989.52419 7262.440218 16502.11657 67.29509161 5834.83074 9314.585735 43.6453955 0 0 0 37451.20905 2503.203045 778.4076358 50959.72688 115.1714247 5696.799443 769.2272985 0 0 0 2038.725637 457.1510316 3342.212042 1686.404734 8483.028975 0 0 36401.76123 0 0 12485.54135 0 2271.571724 25791.33692 +0 0 0 0 3531.927592 6873.737335 31053.30139 20726.4215 8.505881746 35617.8418 2581.20505 54.47830868 46600.02605 851.6552939 0 0 786.2347396 12933.9582 3001.313732 64212.36268 10443.9788 0 0 6.489320236 2461.881136 10305.84846 12202.07373 0 0 46644.11826 0 77.54869446 0 11140.02234 0 3953.662897 34106.41615 0 44179.8612 1797.974295 11254.27104 16498.19614 1724.823488 31178.41928 0 34248.69549 0 19948.32636 8499.432307 0 2180.618762 2350.715962 17639.93809 16293.04693 8267.684556 0 6824.813896 0 13249.09765 1447.834798 22891.10433 62930.86212 38750.08413 1323.344504 7619.994733 2497.772899 8443.909841 15293.97654 0 0 1295.971409 0 17115.03777 5584.220282 14919.66981 36084.8574 38590.90551 20019.288 0 557.4109722 7176.058703 20738.86551 14397.89634 10016.28013 0 2357.243808 0 0 8838.842789 27030.51945 0 64652.08148 0 831.6463013 0 38672.06003 55298.80381 42544.92694 0 14475.48332 1141.936035 0 64171.7869 40350.60351 0 0 16347.47754 42057.04547 46206.89342 22914.1624 48676.64806 0 39009.86837 42226.00796 15953.37878 28886.37566 0 0 41494.44953 0 30.4417805 1441.705511 16972.73265 58131.09528 2089.40881 10014.37199 22600.32728 7271.520551 40155.21726 761.5334208 1609.162571 59564.3772 911.6360191 42987.95269 32602.61162 46072.82153 5.670785429 0 0 0 0 16282.58751 72258.21825 3400.520864 0 3867.004618 2.697775876e-10 67908.10454 19067.33996 5202.686184 24557.53664 17783.45617 0 94.48933235 0 5818.33271 0 46177.00539 0 0 33750.34298 29173.06043 3219.361736 1838.16623 16291.95657 47444.14697 4595.347958 38.24205732 5330.008539 8963.897099 11194.86224 63322.40469 13605.54723 1540.393201 3428.776639 4913.977587 4419.839155 25930.10386 27035.37728 590.5622272 6443.267368 3276.267755 0 10822.70847 1492.717346 272.5577922 5568.860833 26304.10956 2637.77148 18232.15438 3095.740132 427.7140289 0 43000.09365 11006.34285 33132.38916 62.88728535 6029.105274 0 5984.069576 82.43341183 6507.130604 0 0 4543.497654 0 7.054348387e-05 77624.0862 35503.44795 141.0837601 18113.84878 5216.23433 8903.01841 3383.054592 7501.33231 0 9371.572588 0 6601.687904 7275.682908 19152.52302 16874.90335 0 5565.043621 62792.10215 1933.743183 39724.59837 0 4657.960464 0 0 8121.945994 7315.124101 8961.587927 0 1283.070171 1830.910377 9356.17009 0 4333.97391 16236.7449 0 56094.05649 0 0 9327.255654 30636.33674 19202.34858 2188.950936 429.792109 19192.50296 319.5655458 1740.020966 0 14813.49104 0 3497.723512 4240.640984 0 1709.807741 56868.08637 26015.11123 10470.76258 3949.342821 0 31258.4801 23349.64846 44254.90861 21743.47495 0 12018.59796 22070.49974 17981.928 3465.490791 0 0 4514.376862 0 14224.00116 0 455.2011384 20963.20551 0 4189.155207 0 0 0 0 608.1433433 0 3645.364746 920.4172892 0 4.46198373e-11 2905.497589 30103.63257 0 0 14865.25971 23017.63264 +284.5470274 35980.12521 4323.342679 21.25830419 49681.88154 51477.46676 0 21150.78365 0 0 16942.10447 0 0 2382.467686 568.8937341 22536.57841 0 0 2966.137837 0 13463.1588 0 2557.472916 0 0 19971.06993 21488.48251 1138.003162 0 0 0 10302.02239 9547.834515 14340.59211 89.76227168 25463.38411 2431.642311 7767.863754 3590.503602 33003.51773 4244.046006 20963.97523 0 0 0 14374.3251 0 0 51.51374555 0 22027.93071 0 0 4250.188188 29656.35618 9783.97906 0 250.1066923 18000.91533 9469.942014 16233.25381 19755.54884 38568.2269 26766.00813 7833.408066 9496.273012 13672.66731 1846.986916 0 249.3878833 4737.962415 5490.429932 28154.64776 7071.415359 0 8192.813162 0 18119.91349 18030.63136 17601.49672 4690.373707 79604.07724 4613.149986 7930.122183 0 8699.794247 16517.40973 0 33328.36501 19677.3858 25866.5757 12969.12743 0 2853.848361 44616.81435 0 27522.93881 19317.12225 640.1205766 23086.27357 0 2014.363608 8927.410648 7764.858035 13412.44292 4962.84264 3094.780413 1.83620408 5490.926315 160.1043622 33190.27732 2859.403081 19701.70065 0 400.4018097 11868.46932 0.02937221247 838.4801675 0 20472.52378 15651.83241 3540.083096 0 0 17559.83262 1671.78272 57.4767684 21046.89466 3.526308885 43685.33806 0 24539.07057 36304.67707 0 0 0 15594.52173 51767.9803 0 214.3122645 0 2.601725549e-09 0 6672.936322 568.4276393 36853.50752 30672.69526 674.9682887 0 2378.31123 0 188.9430053 0 9122.019533 4909.962017 7209.870393 4795.103413 57.69587173 4372.249504 0 0 3326.077699 54056.51592 74754.37457 29939.26602 27063.00417 6733.304989 0 17968.48012 9888.321686 9819.579629 336.6459252 0 2732.096398 0 5315.847027 0 0 5294.014187 8061.673676 1639.821895 36.59497674 37536.98287 49854.2141 15256.01408 7132.32534 0 12196.24557 13944.05693 34776.32813 120.7749721 0 7410.489548 0 54758.09882 16439.17279 51561.5022 3397.859232 31415.19671 1416.830585 11028.61454 0 0 0 2467.066515 15017.08922 1445.012739 0 52075.30847 47438.07985 43901.98332 0 0 39424.18851 4790.004678 59097.44562 0 0 0 0 198.4006915 0 57.91933558 4524.988607 6640.568167 1686.934918 9298.159955 0 1.824224169e-08 2837.481903 9600.98231 0 17364.10623 0 0 3766.066098 44027.8424 47579.45706 35.25465267 10742.30801 12750.26831 252.3163838 0 0 0 0 4594.814931 22808.36849 0 5407.646954 19059.3222 0 0 0 1865.177583 0 0 7980.193712 0 0 0 53109.261 53960.26418 125.440563 0 0 0 49.01545655 24059.44909 0 413.9046985 3641.176487 0 7841.770163 0 4380.941186 5487.31308 3889.909086 0 0 78.79980633 4235.126538 0 7780.541428 0 21957.56739 0 5664.622838 0 9697.307404 12425.16368 780.0181047 2222.156685 109.153489 12701.73763 69285.08352 0 19637.20898 128.7538168 1433.685078 +60269.61543 32454.87575 2791.502049 5765.994464 0 24381.7062 0 0 30836.29488 0 2103.080058 0 1055.48997 0 131.5522594 11722.06903 25781.88802 0 14133.80488 5708.867842 22291.63658 0 978.5397903 0 0 0 5743.037981 0 0 13331.31439 0 39523.74473 0 14947.70145 0 2074.399611 0 1598.361074 0 3290.402105 0 0 2951.455502 0.0004073236159 7705.929332 0 0 0 0 0 573.9071367 0 674.0913614 17631.77916 0 2832.346173 77.71662112 0 0 2827.494026 8554.702089 0 30476.32262 3549.712445 3088.117717 7.605845697e-05 0 0 0 30371.72247 2.62398629e-06 0 46501.22011 2852.041473 3702.45359 7651.061029 0 25636.75344 0 10636.27054 22211.51028 16396.41934 10221.73264 31477.43431 0 37669.06162 8850.52686 2415.996326 16237.72865 14308.73392 6111.027345 2425.875275 0 9372.174032 44210.24375 4890.062411 25612.20729 0 66885.28392 28011.33423 32141.04074 51687.55828 506.6765197 0 60097.71068 57980.95094 5506.222119 30389.2967 15740.93099 0 6022.109479 0 11999.42854 0 56626.7918 27552.4741 3862.085784 213.2525982 76312.03072 0 1.776094455e-14 0 4.613814237e-05 229.9688608 12404.96717 13588.27119 9018.27341 141.6380066 799.6596129 211.1896955 891.4401441 131.1705982 0 25325.14649 8189.005229 2866.489249 7553.869286 302.8564069 59473.30645 49781.12437 0 9630.084116 0 4590.942729 0 0 1088.520129 12675.33621 1796.28282 5177.836297 6641.079007 8246.054579 0 7533.544884 74884.43951 38339.12383 11116.48782 2326.214604 23719.74723 50871.71459 3.806893876e-07 4583.565826 0.6017848965 119.7052198 6827.900269 0 0 51354.7146 36177.18176 7550.082369 0 0 720.0057642 1410.303274 24912.87693 36.60679698 0 43060.20242 15753.85211 4711.109036 0.07958843037 4780.239002 4977.754846 0 0 9285.185276 6632.183662 10886.11028 134.4967671 7118.422148 144.6438453 95.74626183 31189.60921 0 1737.9601 213.0479833 2161.456889 12714.06445 0 0 1533.688678 4217.606144 7214.250058 21879.01169 43709.50906 24820.60953 0 18425.15516 0 4953.897322 213.2787004 8576.119574 36524.6313 796.7645797 54.33063029 0 26787.35836 11623.36002 28378.66443 2302.091751 7802.466436 0 9353.820492 2177.965569 44135.19729 1356.477756 0 6631.376121 1211.192094 143.9908945 15842.4203 42.86780288 36013.30663 5330.000019 38533.25778 0.7379569256 0 37679.57042 0 0 4245.029408 2865.697904 41229.25049 2047.597902 26705.95164 77.7404775 9979.175867 0 28068.08571 0 451.7738164 36754.75158 9355.666001 4609.586594 1714.114773 57516.33044 0 36871.66278 3923.345075 519.8574224 59.63797189 266.488963 0 8301.102985 0 53589.90349 17924.04166 9736.525977 41306.22277 36436.45801 36848.40474 0 3011.828622 39185.97077 24285.48886 0 34547.31136 0 11405.83652 5157.91255 10041.41379 25600.83804 1547.015332 3414.090037 13057.49637 0 0 0 825.9203942 0 0 0 1782.555665 0 0 16930.46728 0 0 40.53207134 18319.90079 +57111.96968 0 0 2482.36541 1515.371391 0 10521.23313 18787.4586 1036.258956 0 235.3676947 30534.25738 0 8642.906995 3.337951718e-16 1178.651888 0 8.9870366 12792.62446 4512.958136 0 0 0 0 0 35.20254457 0 38.51576948 0 0 9259.703763 26.12960755 14757.27655 0 1389.359796 22520.4478 0 0 0 63887.48494 4082.953207 6000.233732 2538.847686 22.17793805 10060.15025 0 7785.702331 0 40960.08519 3729.615408 3887.981724 2502.885851 0 0 0 1244.620147 0 0 0 65.78184007 8937.9225 2012.831288 65291.21557 1194.922822 2238.976473 4969.381335 13993.49193 0 23818.06193 158.1763519 29142.72456 0 3733.569974 1333.478022 0.0008309095508 0 0 345.5792158 28647.61007 38379.36434 1494.125568 6432.410435 0.02728333678 0.70907763 41416.58739 1343.490625 9426.285526 19072.81296 6590.316775 6710.357248 0 5322.635771 53219.33648 704.4162525 39918.98763 9361.301114 464.9679883 18407.24114 29076.30205 55741.09309 0 34.20477705 2885.790648 514.04859 20041.93001 2469.757462 37710.70655 5868.718446 457.3030406 0 0 7162.170184 3727.837878 23589.49632 17302.1973 0 41257.02151 21899.56173 2622.449564 5055.372687 107.6096183 0 7512.828901 294.5465979 8868.823326 9607.026416 0 24781.64425 0 4098.872287 621.5384659 5279.285148 5520.490921 0 0 0 2.025501361e-11 7581.56406 85.3869252 9679.949554 47955.96005 2459.603984 0 16687.67544 16417.3911 13722.65659 0 58885.36452 3835.007402 15396.0243 1845.717148 1.43623835e-13 0.001170896104 0 0 0 36687.32308 63469.2806 295.5322637 0 3041.982627 57969.86391 1805.889428 1634.850823 48673.03794 0 27020.28473 21827.19866 39696.77361 53524.88186 1.444245985 8099.33021 3364.033513 36444.83164 14577.92282 18690.41812 163.1119952 17953.34865 1957.102004 77213.88233 0 0 2401.402421 25903.69593 8065.33082 9604.14293 0 9009.352483 3804.921005 29002.10313 14678.86524 72470.31407 20912.36054 58997.56109 0 3621.420465 2649.158849 52023.36115 7552.685919 37823.66636 14655.98801 5214.350497 0 6707.529659 101.3205406 39532.66057 303.3416177 1244.495303 779.8322926 8391.995756 502.3568272 736.1157256 0 0 5281.616606 0 352.6408891 0 0 56.86893899 0 0 36915.11333 3854.458216 66.5235903 3035.198944 8730.258469 7.630968438 2160.445843 483.0233722 0 2.106540473e-06 12254.27598 0 836.4988404 0.1946635256 0 36636.19362 0 3966.254711 0 0 0 3405.256231 8059.093558 0.001539688014 0 36813.33087 2867.156779 14997.15208 45317.41509 972.3302641 1532.888201 315.1311608 8838.324086 0 18978.76671 84629.78289 0 4025.772814 3538.039531 38426.18175 0 0 0 8097.970008 0 685.1592767 5112.611541 15245.77776 88.40847278 0 0 131.3986462 0 0 0 0 9995.797955 18655.69688 36663.43742 0 2.50471708e-13 26377.64485 2500.759632 4637.642695 21539.43028 0 0 373.7690704 0 46604.00486 7195.378404 11752.27222 1179.665062 24161.13926 1135.536778 0 214.2138632 61945.95805 +1320.414219 212.6002859 2611.157582 1305.987147 0 0 0 0 6726.074291 6943.256457 0 4729.784561 6533.006717 0.1311456339 25508.63693 1790.724129 65701.60373 2953.873922 20370.33921 77732.30189 0 10006.07942 2275.187639 0 48166.87462 7849.769292 0 2372.508542 0 6722.032024 13475.20872 0 0 24894.48456 3271.842297 12365.02396 0 0 0 19447.07184 19352.68736 2916.699645 0 0 7741.167813 7067.063814 54086.85328 2738.389017 18440.27055 10544.5753 1782.244493 25278.87661 0 2133.265449 22381.30223 2177.777044 98.46706217 0 948.0803189 1609.765123 2607.240493 5797.523653 316.678852 84675.40485 0 24452.81901 0 12003.1232 1909.537508 0 51826.55133 0 2949.3912 18641.22224 17712.49544 0 0 0.3074593032 17574.27822 24275.96967 6631.243436 10606.40311 48506.60364 0 83516.70785 25986.9252 0 2090.585337 0 19579.61894 2614.836673 0 0 0 48725.65159 1136.530374 2417.712991 8966.800548 5260.463721 0 3198.903467 24.73056808 0 8483.703138 7796.310392 145.3527701 42107.17566 12916.31398 208.4234461 247.0536078 6470.947433 63709.15045 136.5455436 15240.20305 85.33677997 20378.92104 28268.02448 22837.99453 0 0 0 35322.45236 25305.52248 26414.39828 13687.46862 39528.81521 27906.60278 0 46158.28163 0 0.004740206548 0 55581.55009 13524.87067 0 1169.376344 11424.13268 455.7204235 4551.439769 47037.28259 0 450.3001164 37377.31125 12843.44648 18989.74374 3688.169058 17274.0076 2936.673959 53469.77641 6768.138618 7695.485814 0 1137.544564 39642.49082 177.2756882 0 44058.31168 0 0 0 42900.80671 20074.27082 12246.50799 2993.66625 28047.85617 11857.11914 6094.051582 15288.73278 7493.631164 0 26130.24773 1963.583297 24813.20326 18223.22992 3857.470548 10098.68912 0 0 0 25316.62466 39.31321916 6057.158921 5085.416041 2702.383051 53929.69937 13447.44004 6137.465038 1560.918252 0 24434.11412 15290.83572 37054.18678 42919.67749 3106.475404 2583.556529 48058.76453 0 0 19336.13706 0 7097.808158 60382.76185 0 28809.51791 7935.402972 0 0 67978.04557 1084.208734 0 0 25328.1488 18580.39747 0 55971.68697 34694.88181 0 0 7971.993185 23040.30184 0 39791.97035 0 0 39935.55038 0 11039.9656 7164.867117 19882.85714 0 25321.14048 36578.24481 0 0 0 0 32821.3177 28889.38578 0 67531.68102 6221.991922 0 48626.47791 0 46144.8377 562.4677403 3505.150324 33159.94777 2419.085639 17263.32397 0 30850.90897 7112.937152 3307.631373 0 30564.74387 27398.65945 5747.009448 4193.467834 0 4009.112917 7334.644307 24.52937464 9411.865947 0 29095.7932 2112.689506 4776.975513 0 0 1763.872194 81.76376338 91.07993267 4.720146021 34293.60377 0 0 0 0 2611.86161 0 3284.584982 53129.04944 0 0 7790.926174 0 5446.755654 33318.21898 0 111.3165236 6688.541837 63852.28963 0 65894.5403 0 3019.867119 9785.222938 0 9586.862058 +6092.119971 7671.103008 0 0 5677.693123 0 9277.529171 1591.674675 0 18155.26059 42342.06869 1066.016492 0 0 0 0 13031.95092 7712.614 4802.185427 1939.118091 7737.215313 49689.97586 19479.64212 16971.38239 0 9974.987733 49388.68739 0 0 4470.626905 210.8707599 7866.78662 0 8472.812661 9.159094934e-09 10445.56628 0 0 1498.811607 6291.66551 16275.54846 216.9162221 10718.75494 0 50366.72743 0 0 0 0 0 0 26020.38171 925.5141089 24501.2017 2082.798043 4252.644208 6340.606363 18906.38941 44259.72487 55067.0764 0 726.8238378 28.65189986 0 0 0 59864.81625 12136.68507 46608.55129 8709.682298 1274.951821 18977.68284 0 14490.79487 6852.795832 42331.42447 14482.8426 15992.16592 19806.91146 2443.351494 4109.291846 28997.02539 3325.724871 17229.9554 37859.09826 41839.7633 14504.80579 46297.2495 28534.35729 39324.7261 6156.807506 45162.90502 20881.35196 11694.13561 0 41183.60405 293.6742037 56156.21666 0 38617.23731 87.39480667 33595.05704 33576.63307 23887.80822 5036.330193 19403.81259 13726.5294 35472.45614 38.09398149 6627.402306 0 0 12353.69152 6392.904968 52403.41666 0 44344.18764 45310.98487 2401.076698 0 58209.64341 40503.4037 3455.711085 2357.684021 2663.185322 0 8649.469093 64247.92754 25825.56224 4517.384926 0 0 26916.07548 11192.62504 64452.03188 78.88710027 12607.92534 359.7277047 10747.82304 17348.54949 2270.375659 65.7922633 62.24545507 50307.71754 142.638975 0 0 45169.29498 10574.19251 1060.041975 12162.76214 21827.15424 4714.215676 0 6598.868763 0 5177.222926 9523.38597 7127.363107 3451.987914 48084.25935 17444.21142 17395.0554 4065.363332 20245.32116 34000.43547 0 0 22423.03209 23424.94663 53775.31217 11530.95885 14586.12158 5661.598708 29.92286214 0 26056.72139 47922.61964 5944.985905 0 11707.10246 0 32495.59718 26488.64828 22668.09056 28576.26529 0 34068.13444 26814.75968 13054.74558 0 3342.616089 0 6365.646303 26665.03224 0 0 4870.657107 1.739551412e-06 0 502.3174686 899.7721992 65412.81605 126.5263316 12799.25548 0 1308.189934 33704.06372 1348.050719 161.2001703 31514.37385 8749.941868 2706.775374 8916.785591 1756.237277 1107.102448 11726.36396 0 7032.526077 31390.69602 0 24775.01827 401.259956 0 24214.40304 0 6331.272645 6862.773028 14279.64225 2467.730399 21774.00825 20982.18232 0 10401.39589 10025.25021 6748.731615 4411.588775 38327.61833 946.6252875 0 20261.67228 0 0 0 0 0 10907.66648 34415.92255 1315.951835 1770.77274 2965.9466 10084.90766 6971.146665 0 3.467086367 0 0 10518.19017 2061.286506 0 526.8049858 31244.88669 0 5574.910029 0 51.543634 3540.167436 0 257.9076592 0 2332.47433 4327.18165 1.198449744e-11 0 0 3226.797556 0 1515.956677 0 0 0 0 0 21780.26145 1698.967331 18059.15988 0 26185.11588 9749.59143 475.7878175 0 3615.772598 0 0 0 3120.51336 0 3037.407036 5539.953787 0 +0 0 0 0 10940.41211 98.07629358 0 0 14063.2341 12143.39366 1760.804947 40802.25677 6172.556825 28260.9111 7248.911408 0 12573.55093 31955.2159 25836.4346 1612.20041 3800.098958 22399.41825 1712.426753 0 0 0 0.02704243192 38944.37572 0 0 0 41017.23819 4510.492214 0 15501.88267 0 19837.6252 1971.812863 38541.32462 30101.52366 6367.552176 12900.40988 0 24.45258023 0 14855.73174 24552.46894 32035.01764 2028.562015 9336.541603 28228.8526 39370.93816 13519.46908 7514.047798 31207.78946 1897.514148 0 7058.295829 0 4262.46438 43962.58444 53619.02157 0 0 2781.812357 0.0002246823895 0 23826.51249 0 33532.3787 4525.861204 15840.38914 24668.33711 9808.530648 5373.39491 0 0 25387.43497 0 0 2189.084044 137.4044108 14456.81009 39001.27352 0 100.8946019 42198.91323 48.84192115 6091.040856 41965.23856 32997.11265 28448.07071 0 31798.30631 0 0 32278.91465 9125.181004 21063.57736 0 20588.6598 51986.56827 59435.5028 65065.09227 19840.94092 8175.518059 30692.22769 58765.1164 16088.28637 32370.94076 937.1887151 57530.63258 0.0002556964546 1451.019493 21976.9704 2290.187747 1773.240981 20314.05479 4917.671048 0 3591.456414 75733.15363 16077.96634 41655.65232 723.9464836 37929.53071 8226.503067 9502.64671 33040.87229 0 0.00199733237 2023.184073 64667.17277 23203.10651 14842.82592 0 30802.56059 56636.14921 35086.60827 149.7759201 0 33761.89315 0 17671.70447 212.5509305 0 56499.01073 281.8638122 3626.241524 23510.35528 23885.71674 82517.53634 0 4316.330831 24551.94535 584.3635121 2827.548649 0 0 12818.86312 0 0 39054.1057 6697.25274 2181.420328 5388.158002 0 3001.605515 5808.974952 6213.241408 0 19430.30198 3828.441545 839.281314 31821.9272 0 8100.692064 20764.58787 1124.118651 5366.181143 0 39073.7523 45053.1116 0 0 5313.622569 37172.93319 49280.77177 5558.616873 55226.99459 0 36139.39475 209.7048335 0 25317.35575 3024.191069 1033.262009 26345.27152 0 4906.848264 17415.86078 41363.50229 9837.064069 28753.62647 27079.46569 0 0 0 0 0 0 7944.465445 47.10420288 0 17007.80539 27670.32198 8506.178356 8340.105191 184.3518568 1362.815158 16661.38687 2498.385191 92434.50259 3817.730084 4341.818071 174.5257267 7723.662078 31499.99456 4096.022519 12207.99027 0 29652.54666 3128.318363 0 52.26732505 1818.494996 0 213.2880405 0 4846.303564 0 3934.670544 104.226271 870.7363891 36722.88193 11720.57222 9617.74034 36343.66261 7900.010462 4864.261627 0 0 0 5549.506717 0 14024.55781 0 0 14020.0552 1471.780478 0 166.2859984 46.28087086 20829.5102 0 217.1801253 3076.010002 0 5174.156021 133.8230828 3671.759585 2349.304197 7873.660079 984.7952526 0 0 48435.60396 47829.9484 23303.7933 23263.29931 0 3.112992326 43442.79904 1637.112355 1805.431838 0 63.07903454 22230.82833 7031.977074 1081.043298 0 30308.05798 0 33373.37109 2165.40622 4264.11873 559.1850177 95.87936495 0 0 +24043.68901 0 0 57831.84169 166.7438919 0 5709.406735 1935.270817 3170.831467 13166.14521 1958.027117 19030.64993 0 26675.06579 0 0 145.9651754 17.54973617 0 35930.06991 0 83.36786407 35114.41519 1167.110671 0 99.6145588 5537.326991 761.1178696 1428.585164 351.9672044 0 7676.944149 8057.169565 0 34.97208363 0 0 1161.203619 0 0 1833.415679 0 33771.40477 0 0 1759.69322 21948.36419 0 4455.607225 0 38099.40041 3.976261452e-10 0 8247.995256 4049.346104 42323.01243 58878.31069 523.4637542 34034.56597 45.63626746 73911.87921 0 11734.49567 12394.90598 40420.31221 0 14464.84111 2073.077384 8364.811281 322.4707624 285.0447971 0 52817.07895 23791.50171 6219.602406 3940.105783 0 4124.190342 0 0 37000.19503 0 6586.592264 33616.87225 0.3325448884 25594.72886 31561.75165 6516.605 8099.012535 0 22002.70922 0.09122319584 4176.922978 47163.95721 0 1253.830175 8875.875324 7418.219558 2965.471471 0 42637.6968 9063.214199 7746.498606 8073.542155 2808.321423 9201.580192 2662.697299 26913.56211 197.3302782 0 2025.260274 0 0 12.40176226 11797.95329 3520.71193 10294.94221 2317.992878 49781.83537 3928.969472 11584.64995 0 23670.68339 52895.56096 77508.78164 0 12111.1633 42148.41631 327.2198012 17066.94987 220.8911816 1267.567514 3232.928737 17696.03735 24623.19971 28409.05552 31138.26191 48948.73201 6888.913415 7034.984401 0 2898.524931 3.362716943e-05 2182.262022 3323.714273 12660.27892 45191.0222 122.489847 0 0 52368.74085 11.43073269 167.7741261 44329.29535 15012.62195 7479.302825 358.4993649 3270.30088 2001.148822 28479.13674 8729.158558 10184.20648 0 10388.82312 1663.961976 7057.429482 5262.212909 27830.10204 9760.496623 22172.51567 211.4787986 0 2852.24703 34.99722956 3440.60673 18732.05506 228.2414143 27209.32601 0 41307.24452 10038.92431 0 0 0 39392.81467 10803.60815 9253.64488 4393.850587 1509.404633 3367.588035 32458.6457 0 59926.8235 0 22616.66495 2874.466541 5477.260242 2312.010954 19435.93558 0 8775.076657 154.5512777 8555.456841 0 0 15245.23681 0 14264.65266 0 6140.119974 15403.64275 10970.90151 5396.306963 0 8726.946478 196.1025167 63385.40168 9514.028918 3311.463431 207.9377166 19438.23742 0 20831.51159 30942.59491 3575.731252 49427.1439 26989.20988 908.6321688 216.5077888 1659.896397 46.25443655 145.6108078 846.8834342 10261.09905 1038.763008 5694.44837 0 32497.20559 24746.55682 7285.459193 0 0 736.242677 89.09451943 20550.09557 0 22964.10477 0 0 75361.77909 0 3661.071361 56.57589386 0 44523.82339 0 15383.41969 5095.464749 74374.13315 0 3949.53903 623.3455546 0 394.5443201 531.5701978 0 8879.549202 97.25995165 37828.37096 0 2124.213263 293.3290417 0 0 0 32959.16956 41.25068108 29301.52412 1447.295973 40118.84837 129.1481378 1117.056082 2578.298458 0 0 23908.65667 2413.324627 0 11225.0464 19219.3907 57887.66399 0 0 0 0 4671.636548 0 6585.546514 4915.195767 0 +0 0 29335.36205 2361.051899 16245.93819 0 8904.285179 0 5188.141411 23.52168832 0 0 33389.37816 66.31883332 0 47366.61405 1879.040389 0 0 6412.991114 1806.447071 376.8649031 2494.371168 49.17653486 40834.23466 0 4674.454531 0 0 0 11144.38064 20191.977 0 0 0 2561.505417 0 3219.769125 0.002660522621 68034.14906 236.7151968 0 22709.34568 0 0 2577.538539 40.27556333 1834.18897 8561.015473 39848.10223 0 46883.67226 7635.362922 10000.8971 9447.325554 0 0 8065.213399 6104.631125 16094.27495 2212.752392 563.0649635 2028.75264 3149.446554 14345.93871 0 26128.13475 44592.95701 3688.02441 44223.36493 24862.01927 23217.10883 12810.51454 22099.0056 1243.982008 0 0 0 27293.55112 2530.208501 5814.235722 2327.517026 233.7482286 28.68757753 753.9300212 0 29375.30028 5896.334676 0 33371.292 21130.5952 358.7633016 0 0 2.196482849e-07 59862.93424 18962.33811 3959.714434 5343.939807 47675.09672 30519.11631 10310.97308 13635.93448 0 63.67979647 2158.391058 5613.007528 63370.33414 14748.04249 0 4239.563051 127.9832974 17102.23841 8151.748867 0 0 1809.898407 3124.72246 18553.68815 28238.17898 7937.524199 53495.99037 0 281.6759696 0 1614.847463 2762.255608 6403.237022 0 38920.87485 9165.649907 2201.233161 16805.90614 36323.10389 0 707.2084626 4306.78701 50840.57669 0 3896.63002 4490.847007 32074.71119 0 17650.287 25041.98603 0 774.8163917 0 10234.56088 21931.67227 0 0 62045.13175 9.308294964e-12 0.07959649512 0 2230.830445 0.01990567559 39521.19419 31186.92076 2406.458281 287.5164502 64018.91414 38565.30872 18626.59158 0 921.6091688 4268.748185 6092.481777 9506.122894 0 9962.643266 16019.97032 97.79713681 25093.04193 25464.47674 37968.75038 0 1813.125759 2142.806035 33.84679708 0 25057.08937 1812.352799 0 799.2138103 24141.31353 5227.965565 4609.368036 0 0 43721.62446 1525.392209 1723.002215 7295.893314 30355.26014 4992.815651 7491.859972 0 9503.006019 13696.69814 0 0 0 39107.30885 0.5324592163 1371.527076 10218.68909 2808.475179 11083.963 27311.82308 57394.21704 0 1.481078182 34375.49646 0 8818.440082 1586.929275 15919.31207 752.1842536 17077.88216 16086.04383 20082.22197 5357.897208 7928.350654 0 3180.971473 701.7599195 0 5370.320046 0 10894.21722 0 27934.55789 34222.6388 1441.216194 2752.249263 4750.062312 61.68070627 7271.820385 779.5341224 0 0 9.472030026 28976.74873 4831.126031 35.05343983 0 47321.83623 0 0 0 30624.27388 16767.84131 0 0 0 202.7497201 0 0 13413.35762 0 0 22527.58159 3520.110233 0 0 0 40347.01864 0 1.937305313e-08 0 0 3440.826717 8677.814588 0 41572.47583 6264.305938 0 1361.114013 7117.240249 2948.770472 2586.22691 213.6054542 0 7369.713385 6899.145436 0 3164.837512 5616.678471 1868.4352 1335.271774 0 6835.187447 5282.976061 5223.189099 15316.74035 0 65785.72499 124.1830622 +5484.943063 0 0 0 39164.94384 0 5254.774568 26328.78541 7202.254452 0 0 0 219.3989637 51973.48478 0 0 4334.641373 1469.887767 3119.316992 0 4159.452809 0 2171.112113 21995.70992 4709.916197 389.8255975 17442.0602 4844.763948 16965.97788 71089.13743 17900.20046 3471.616788 3529.363497 47917.69076 16080.61823 16103.20514 9863.755595 7129.467739 0 15175.5964 17007.16656 21403.18802 0 20597.26558 32684.89318 30880.51583 517.8579644 16253.61781 45372.05747 3108.930889 2663.391691 238.0911151 9190.876187 45623.90178 0 9245.514995 7012.477171 59276.33637 12990.07682 2038.342336 0 50674.8847 22007.51343 5507.612691 32360.28867 24235.96242 36991.0761 722.816183 12060.32765 47106.91383 31.82997325 15655.14173 0 0 2019.089711 366.5497747 964.3098019 35878.95668 0 0 8572.551042 10978.69364 8169.982996 0 2298.821282 76973.64274 4764.331486 24548.66452 2008.071673 4600.118244 1928.817628 16298.30986 1887.785758 21448.00136 0 2481.999055 50.72475517 34527.82313 42966.66593 57.86967362 0.884706057 1981.25419 26766.44501 3573.973712 23395.17422 15046.00552 9500.00312 1606.432418 49969.57105 28524.13678 8123.366215 30358.47351 0 5498.445489 0 1763.437595 276.8319141 7375.204699 0 1585.252086 0 33440.58986 16496.61011 132.9325359 0 0 55.01682132 28026.77989 0 11946.25337 22505.03506 0 11261.40367 87.27228746 8698.097499 19293.86168 3014.593783 11261.87369 1.73099208e-09 5378.264966 57849.49261 0 0 31370.36429 11018.01553 145.0388055 3842.492146 2455.433028 0 2380.221907 1033.049831 0 2239.599641 0.08478106695 38822.04009 72895.20655 593.5766537 10913.14855 4475.737562 9414.290724 14238.27167 84870.27206 676.9216568 170.575447 5071.61242 52237.39251 22725.65358 13603.38024 32917.5337 41774.58209 0 18069.29077 48741.28473 10082.09229 4989.639469 3918.007157 4770.202836 54.51087399 1654.716815 2396.718873 32029.40356 0 7170.61296 58188.36738 0 15614.58034 12678.35279 0 23181.08072 41865.3452 70347.02091 38770.15399 0 4804.668768 0 0 2441.710566 47757.09434 285.1515929 0 0 0 0 0 391.9854801 0 28382.50311 18653.49155 9192.72771 6663.684484 2989.276752 4070.412957 0 3.202711039 0 0 3034.742955 4579.242583 16374.68222 11192.72296 0 1035.210234 1832.213844 11963.20254 33054.59682 2531.162036 9821.676108 34813.57687 0 7519.328622 52291.60434 42571.89943 0 58509.52824 4718.735198 20114.96998 0 7567.509504 0 0 252.8400847 0 0 0 0 0 24892.34717 106.6926315 0 37041.49377 0 0 0 0 4184.999108 2484.077632 0 66306.38934 0 832.241698 0 1187.216523 62261.03004 34292.0396 3311.865093 4798.134376 0 8532.475559 1771.05277 48675.60979 7695.844175 1609.233537 1998.513036 36784.09991 0 0 0 4347.831389 1710.324048 4054.609142 58075.33956 2106.000365 2957.173919 12554.91542 3376.494085 3567.278314 4118.78136 28533.00591 0 1756.598456 0 3694.294782 28073.14895 8906.147075 40194.00049 735.1619345 17552.05428 5110.511801 0 0 +0 974.322136 200.6044633 2922.053907 19777.02928 0 0 1.488722225e-11 1877.634953 9460.633944 0 8178.994822 23985.26782 4409.744461 38474.46274 207.9939029 19108.31199 6291.124327 54741.42888 706.9519004 5634.657897 0 10087.75323 19158.26833 2867.757675 12463.77401 8059.77748 17246.79942 0 1933.917609 0 83302.06471 58073.09114 0 3764.062313 0 58497.28766 3137.554077 8246.537463 20866.52648 0 4934.902615 28107.11089 11942.86199 107.6692436 55885.96589 46573.85918 34319.97255 36144.31715 11216.39592 0 94949.30685 0 9711.955618 8453.959867 3389.726163 0 7439.702367 218.997845 206.218912 26.84818704 179.8688698 16342.6448 33772.63251 44238.04136 6841.281325 0 33496.9941 0 11684.2126 6254.425989 47356.72024 41127.74851 0 38.73570548 0 138.7993817 1872.777938 2263.812075 15320.43678 0 1700.590414 30205.69364 33167.39743 401.9053461 4709.519559 1448.564296 75299.97823 13484.12872 20465.04282 20962.44817 2522.113579 87135.56635 17628.08123 3109.157079 46.98906755 0 0 0 31335.75495 3234.650526 48725.94882 14759.40203 53078.54743 55498.46129 6450.715244 0 22298.51711 10692.61298 58884.16713 4386.010832 0 38175.2113 9863.54868 55583.85616 7634.661094 0 0 0 9927.382932 0 107.5706863 1250.278353 8210.40878 2175.373696 69399.98428 5041.697567 4359.027516 19694.37159 3.883843649 1435.680751 7188.313392 666.5560167 37437.33559 54142.05672 34031.05955 0 26034.2522 4802.627754 23268.22545 147.8391772 918.82338 0.01859522611 11444.53502 80.55450991 24020.18163 126.3696937 0 10888.98656 0 26143.13496 11976.39872 0.8722250675 0 5173.580521 2140.780954 45872.73582 0 16328.1182 0 2650.496027 6566.731631 24661.78705 7909.806531 6172.960656 1.746470564e-08 2720.307122 5.580539284e-07 0 20720.76275 2520.090076 1085.988131 0 6922.252702 3471.513957 0 0 4771.173689 0 14013.54154 9373.818666 19452.0154 8850.811241 0 53249.7109 43999.57986 6180.524003 35475.23413 37246.61286 14629.38807 226.7361058 5463.304205 0 2705.614106 15633.71323 0 0 3329.72625 874.2738105 2441.802448 21358.8075 8356.644142 0 34444.7827 34674.62651 9833.682538 274.1866254 0 23864.21235 27976.08419 20537.09421 17688.73074 0 2815.462926 11779.3935 865.5778932 0 8500.7021 593.0323745 52181.09878 46.46416032 0 1195.242941 66648.62279 15228.86476 27067.46634 0 0 0 19527.63588 0 0 0 2738.378608 1968.006621 0 2892.24602 4534.524147 6356.664047 0 0 44313.76831 0 18.49278706 28752.25409 2276.661434 9656.407795 1205.581779 0 0 13257.02835 349.8264722 0 0 15003.70417 0 9356.915791 2258.428089 773.3416003 706.7934274 0 0 3915.810181 22242.98501 0 0 0 24179.17464 1712.924921 0 0 0 0 0 0 51184.90208 10631.3429 0 31253.03027 0 12903.20673 0 0 0 0 0 0 2212.992138 9452.498194 4084.911321 0 26032.20364 3534.174802 5059.002821 17988.5575 6563.750552 201.9361699 21014.52498 26097.03766 0 +0 65.90292876 0 5475.519334 4162.092842 0 6132.205393 46641.43419 0 5928.63784 0 0 10669.28046 0 0 8558.042148 915.4997913 358.3414723 0 1.774720988 49594.54028 67729.23465 3442.338787 0 16387.00059 0 4933.740652 3040.046523 5267.595215 0 1697.032458 0 14230.9519 49933.94705 153.645033 0 27420.98758 0 26798.57199 2542.740521 0 9.217502373e-14 18659.88802 0 0 0 5448.118015 21502.08684 0 33222.30217 17823.35621 24721.6917 5363.707825 23642.39326 23423.3292 0 0 51403.10084 20297.79025 48192.9004 4677.069316 6781.558198 13345.35625 7515.582154 0 50888.36517 0 0 8960.801115 0 982.3218097 9093.047986 0 20005.01263 19489.35041 4771.957452 11280.45009 55924.43133 32487.13696 28656.17131 8667.001255 47316.76173 6270.119945 72561.52764 13507.08442 0.05430545304 34242.8203 0 8752.555248 11434.93828 918.3435896 0 7472.318686 9113.973316 3782.840891 3602.078618 47980.40989 58859.17796 0 4558.0953 0 3484.904989 0 111.8319061 65493.25778 12786.6088 47022.7537 34409.46079 22262.87194 31835.90166 23860.73073 0 17790.66393 19183.4457 9288.438855 4358.944098 528.4534514 2206.216658 13376.65332 19040.70876 6771.390203 18848.56861 8668.057796 9729.974435 14145.16809 40254.29449 642.8941197 80338.30693 60616.89154 13510.6526 2152.83525 0 0 57830.40461 78278.10058 48167.82912 0 7899.163917 1036.919172 0 10770.08183 39182.53263 0 221.8673737 5105.839765 37120.65195 415.3166714 32418.55216 1307.956608 36808.25339 82072.47734 58907.65028 279.1490283 20243.3845 0 3657.939678 0 0 2414.251238 69335.4518 28356.16609 0 1881.19988 0 0 7514.225588 12843.6136 1484.511772 7783.508178 65.60264763 25679.47725 27844.95616 6302.771362 2282.690742 35744.54734 0 31082.83337 49000.20451 8309.879767 29183.623 2025.032968 9120.313354 598.4931443 52672.94507 16656.09731 39451.20853 33749.22603 30878.00921 3079.490556 0 0.04089573827 71.67370996 0 32220.91508 7401.536178 52958.46389 35950.53887 0 0 0 5264.276105 0 23322.19794 21767.70211 12719.64182 30216.88133 20524.5612 10652.50396 62019.12871 18922.34156 20035.87933 0 668.1918854 0 0 18543.08302 46598.26917 10845.54245 3110.327178 0 0 17774.70335 34088.12787 29695.81287 336.8273799 236.0624224 30361.1872 138.9646703 0 0 0 6257.204475 207.7760315 632.0828977 28123.58539 0 42970.27864 213.3751438 2308.370211 0 3878.486744 30317.53702 17300.77493 170.6052055 3262.333363 0 0 83054.44876 187.4757952 6242.188864 280.4754791 5364.876667 29966.75951 0 0 10303.37818 45166.21161 26970.06041 8307.398112 33255.86057 5532.129244 85.79247099 0 0 47095.79102 174.9827372 60499.65449 23841.18718 0 5630.340739 0 2611.430633 343.4817358 25033.09267 0 0 955.3729759 1518.359849 15781.71184 467.6951104 9940.691202 5193.690707 0 23841.66226 54371.6873 3576.951388 0 10133.87607 0 8679.171101 7903.744247 14645.44666 495.5235914 0 77.16298936 0 3117.102112 0 0 0 +0 0 0 86.85760331 16689.32487 0 8295.256819 10759.29683 20095.55343 0 0 35253.33868 13037.36558 157.5490736 2433.71678 0.4086946754 8410.283472 4512.138477 0 10673.06037 2650.459831 0 45460.57114 25649.73797 66289.32879 0 17625.32004 1447.458005 14922.59389 0 0 1634.467116 1673.030878 16369.7403 10021.73984 0 863.2026956 0 22952.07527 19214.38729 15917.84966 21397.17705 0 2949.704494 20117.15355 6322.95118 32586.28186 5201.982833 22898.65332 7108.726964 4295.000068 0 60844.42115 18116.14903 0 35103.06297 12370.93419 31628.49638 36362.4678 0 119.0701554 0 0 25264.00057 0 18249.65587 12166.7454 1500.584546 35471.55653 0 0 10800.05334 3244.38709 25915.93616 1446.42755 65357.76744 24556.86333 0.002883374791 10310.73235 16647.45452 7544.917685 12730.40185 28924.50397 0 0 13152.66544 36200.27898 64844.90133 14883.9874 17542.06312 0 47122.90487 691.8826894 1029.958656 0 115.9685583 3225.617471 45139.20536 14156.61762 4438.298543 11375.37119 2892.425117 28480.15016 0 48515.79028 3230.901381 40039.44655 0 34415.21265 406.1403073 302.9022227 13681.32322 69356.43722 14601.5497 49388.57967 4667.925754 2739.463122 21596.61491 0 1055.398813 18923.36024 19465.7605 3539.108074 0 3271.301547 39176.28162 18562.25777 0 0 0.5000777861 8358.933023 22162.26872 5734.290777 2434.757084 5.134267375 6155.384379 28652.35389 44151.68894 2052.348261 186.4050744 2435.181656 4184.491625 0 1587.262892 18210.69336 1834.254994 2375.912399 0 116.7583391 54027.47395 27793.82649 5631.280039 12070.74692 34781.34322 13534.95669 11155.43129 2294.410646 8180.911934 114.6730296 6050.332678 15224.76983 1998.523631 22926.70165 92.34337415 316.2794028 9448.434142 6977.197584 26368.60439 285.7592632 45464.80391 46392.78184 1615.547946 20411.48794 51487.45538 0 12082.422 164.1790728 0 5156.765027 7651.758661 39375.67234 758.8169829 1488.476541 195.4637486 3207.691085 7631.818857 34924.65102 47.67568072 23090.11475 3382.381758 65207.66294 38060.48976 0 54470.32075 0 14771.72656 0 3901.022196 0 852.4799714 2295.553415 209.6481093 17864.45381 33645.45834 76582.85312 24473.76256 43362.86566 0 7123.695602 21785.93416 0 0 19767.53869 0 20633.75129 23.67016286 57302.84099 0 2877.320758 7190.063411 0 3988.65616 46365.3617 0 29285.89783 12272.65093 0 0 0 0 0 0 10110.17441 5798.517743 0 5955.448815 0 4766.445469 50408.28291 200.478586 23892.00427 0 26314.31156 176.6324194 37456.86972 35043.68116 28195.39231 2796.862333 1173.835392 24464.11928 23594.0265 0 23026.63095 0 2339.007663 13491.45276 227.0986796 15002.59235 15673.6812 0 0 0 0 42592.5863 22049.65487 1530.800381 0 7633.531389 1431.116824 0 0 2760.193521 10124.54567 4467.049147 12.41276578 64.47214717 0 68.85894458 0 0 1642.786544 0 3267.230734 0 239.8389343 12071.23269 0 0 0 2700.756977 0 672.3636283 52492.15034 29051.99793 0 0 0 51.54771801 0 5889.056611 +0 4757.511393 19730.99997 0 42538.76361 0 0 0 1360.337488 0 36605.24773 9923.737875 3932.028766 37202.51611 5839.523262 0 4138.517358 9375.458229 2510.021003 500.9034064 24041.41821 5553.8593 0 2098.632197 50711.0572 23796.50312 0 0 36878.58077 0 46996.54993 0 3198.595462 71.354124 51563.39931 3733.302878 20373.00839 0 0 0 81.31536421 7717.577821 6562.271794 0 69115.12029 29794.64643 45263.40224 7357.712825 0 0 3085.869418 0 27946.33623 364.4068451 37367.19142 0 8308.728708 24249.83694 11451.60106 250.6490301 681.7401489 7533.941801 866.2995321 12914.30577 36.51794537 0 3678.260921 0 0 0 2.619313202 14796.49486 973.0680041 0 24370.12798 21750.39003 39876.27529 0 0 41167.56976 5655.526338 0 3755.565873 24194.89283 43408.05702 59676.88532 0 98.76806296 139.3619877 15013.75333 24262.16421 30570.62586 1072.068578 6734.25952 22492.71395 15943.71878 89.31521098 50873.19035 71986.0101 0 0 51681.45724 6002.084024 188.7831772 23380.15325 1958.019757 0 0 39728.42503 15241.80901 50263.39387 31692.14703 0 4753.0484 50118.0648 30405.8353 0.004117174519 3644.810591 2406.972115 1761.587853 0 20621.3027 2221.329328 28.48037767 2367.534594 0 35017.37077 2426.308437 20964.90131 0 23683.97758 3554.984308 12299.97226 21556.32032 12201.37766 30265.19335 36599.9028 0 3452.145556 7401.846399 0 0 4542.496185 339.1768093 14513.29913 0 47613.57046 775.24354 485.3827164 23458.37948 0 245.9074455 5684.174543 29396.94786 6709.409738 428.2418888 7703.910751 0 0 6151.254406 18187.1117 13596.51935 49342.78178 20715.85808 36757.7191 39208.75768 0 9941.633572 0 1813.288794 27297.68622 17541.87227 0 0 78506.87585 4068.849515 5219.777307 3172.963988 31596.69445 0 97.27868053 60176.50776 1548.17064 0 2526.795214 31608.87648 14454.5295 36457.52857 38302.71267 5099.290318 0 47106.49972 19720.49639 13625.84597 29045.49398 14202.75136 2172.353492 0 878.0346067 2701.829851 0 16376.65487 5265.681516 11209.63605 0 1594.51928 0 9934.807859 16051.99319 36807.32109 316.9124683 307.8385435 29692.76862 3802.870001 0 3918.459621 5426.839178 1251.711676 13049.64307 25740.70558 15937.76937 0 2759.306064 10360.46768 0 2729.74316 32216.60539 90.46967967 18704.4778 4602.047639 2098.183119 2659.776567 0 19178.02142 7409.451061 37524.22312 32574.97907 0 1863.542429 0 5177.350586 36405.66691 28284.21909 35089.17284 0 57283.38973 3216.743742 6656.265062 0 0 6.117879167e-12 69312.64175 2924.343262 32478.05097 15048.58955 0 30723.36326 24764.55352 1985.643185 4894.551834 14400.7481 56.94115649 5143.158659 7594.704683 0 4579.779672 0 0 0 34615.50785 35684.62 3000.00926 0 13990.94267 20157.87856 0 14811.99745 0 5.289080142e-09 0 7067.747276 11546.05616 113.2457049 0 5319.747289 220.3135709 0 7296.560882 8749.709567 47780.59945 0 4221.358486 132.2012585 0 0 1811.441264 70397.71952 919.0552955 0 17.54696478 +0 13528.90455 17826.56872 0 104.831574 3447.922409 0 2007.269827 9843.521194 1911.705375 24922.47038 1021.671684 0 38645.94454 0 44682.83907 23031.4174 754.0781586 509.6588666 33652.15201 152.9385805 0 0 2251.986245 0 27489.13587 936.3777748 29640.81952 0.5387468791 5710.020147 1539.365883 0 0 0 16242.85031 4379.901818 5100.18185 983.4452271 47341.44785 26.34604195 21914.04235 0 21445.71275 62186.17772 83.84614659 81.8458828 24984.25947 0 30021.6978 0 0 61620.43027 0 0 0 6364.433536 22.16011263 641.3208446 27322.49511 0 0 50723.68546 1457.615616 0 11793.55404 30060.91227 0 0 1914.775415 2023.329132 22849.54071 40334.30206 16451.09358 7839.092326 56742.43045 22.22566742 0 7.35326309e-10 8099.815464 4981.342842 5233.411486 7537.629676 123.0536139 70055.8974 50.47885387 204.9046107 31262.88458 40084.30687 20930.12692 26954.68042 0 63946.2104 2355.974531 2604.979513 0 8023.597101 712.4738587 0 0 5028.094436 11157.11447 0 0 24129.64881 6528.311971 0 7.376278981e-10 55699.17311 118.4213277 69867.02528 71000.41778 48134.15813 42025.47852 21435.74582 30875.06379 10276.655 15499.958 34.99632576 5299.297319 50490.07483 4536.421142 51.16590014 27512.54099 26344.60617 0 0 20511.6644 44585.97256 11038.67823 68013.07591 28087.68331 3628.610398 55412.65535 0 14824.90637 0 40678.32226 11322.91318 392.9584262 0 4271.741563 0 40617.98729 0 4213.4284 0 42382.98269 1.246543743 28641.43779 4376.045446 11745.00932 9780.050341 0.001569623656 4003.495387 9334.76262 12298.11103 1585.144836 5459.068145 5381.977249 19903.07512 1355.270765 0 4558.899673 56.21267089 48770.523 55659.40937 14914.15454 0 0 0 18549.26123 17807.68403 0 0 0 21670.73182 11522.08172 0 2747.982523 4323.169915 0 0 0 20229.01244 20716.5465 10889.27688 355.284021 41241.98291 1147.634905 42364.89764 6651.452677 0 0 44.90365735 40264.90606 8411.662967 7147.81062 381.8457506 0 1567.199446 21479.18069 17857.378 28887.24026 22687.83467 39059.10418 53531.52804 42557.27286 34494.21254 2530.628637 1169.372252 0 0 3763.793832 29112.4204 0 0 5123.8572 20461.86315 8066.2184 44150.11623 17745.74684 9609.518836 3889.100781 3337.723402 0 66667.83335 10884.06838 670.2647136 0 35365.31872 1023.311781 247.9066217 6166.867312 0 611.3676641 147.6262091 0 1078.030857 19362.52653 82.38395434 56730.01576 80724.80532 12803.6676 12213.87471 19025.73097 0 29661.57736 8726.787846 11777.00019 11811.92166 2738.048094 762.9788505 41817.53325 22946.24036 44675.16109 0 0 0 0 8119.107035 6097.715021 5164.270174 0 0 40279.13687 361.3800817 279.3218553 0 23014.44855 53912.68864 120.5346857 349.8227455 0 0 10804.45622 5322.552059 0.002414979549 0 17733.90016 1404.114391 13059.60902 0 13380.32106 0 27718.70961 298.2801768 0 2329.577047 93.75352709 1626.827357 0 10156.41684 15728.52719 17716.93516 0 0 110.027933 38749.97334 0 13940.62026 +0 45924.51644 0 4737.615738 13217.37558 11795.88569 0 0 0 14452.3786 49162.26215 1066.534948 0 42091.96228 11285.27244 9534.090636 0 14781.57822 4640.857236 3666.873151 60663.62586 4622.563475 0 1553.950813 22728.55219 0 0 68.38876677 0 0 0 0 35798.55802 21930.94654 3678.865529 8889.310525 19912.17541 2757.074634 56563.94479 0 0 0 0 0 0 0 9613.635093 59740.51402 0 0 0 11461.48992 56939.95423 40235.77144 23918.68599 64841.74528 26896.85527 0 0 15159.02379 0 0 24250.82693 16677.528 39301.74104 10551.95859 2163.771967 0.1145017593 47363.03648 22919.0175 24554.34505 11889.75125 4311.476199 23540.90121 28586.99184 0 0 11313.85748 24211.95027 40022.1621 0.003940610591 4604.468091 0 7160.189189 18993.70591 12342.70401 1133.857909 11289.42943 0 0 13692.9737 5610.06569 451.1274205 0 7451.76083 0 703.0526219 0 0 43799.78189 4728.624528 0 42888.01236 314.4497813 16641.56452 25800.48309 0 1877.720094 16974.66889 132.6248138 17317.23866 7534.673258 4150.477072 219.8384645 58373.10055 7854.152577 51659.63023 24743.62043 9531.600816 8556.876508 3106.155019 49588.3487 2568.250563 0 37672.11949 1722.480512 3805.439445 34403.08716 0 38329.35428 6285.341607 9492.411916 0 27599.68069 117.5363525 0 57.43475765 1614.375369 2307.586868 0 10987.76479 0 21762.06446 10872.96523 639.7115166 17.63897322 2776.885941 375.2926952 19822.65652 23836.8982 24974.25251 222.698993 4098.62291 6303.347179 3734.415381 0.07593699338 51.58057492 355.7149735 30113.87162 0 1051.102382 21310.53749 38791.04892 150.0162646 5469.8224 5149.602288 0 6093.308367 0 1427.225696 27437.15631 18947.81906 81.99102929 2354.712056 74019.97737 148.4107178 11686.72437 33716.75228 36071.39618 2438.165604 21604.64194 365.4425503 0 2493.503738 439.1971976 4.368400987e-14 90.46538846 8701.527057 2875.457062 14917.48977 20015.55883 25227.26937 0 5663.227308 39029.07053 6004.600458 17463.29825 21.78819996 0.05108260602 12680.5907 0 2206.194353 24829.08848 868.5046325 2075.312701 23145.00642 15072.999 12921.31144 0 27591.74899 2926.092546 0 18281.89125 20311.88426 18161.36107 0 57682.48637 13638.38102 91.53999371 0 1700.92356 0 1920.866941 30988.12261 61.49461528 6589.932251 21890.46663 45685.13125 8297.513364 8019.612373 0 43215.51487 7801.173167 125.2017211 0 9460.081635 15430.9759 36923.88961 0 4230.311907 0 5058.371927 34398.66348 0 7258.986789 0 0 50653.93083 21392.91639 32289.43471 3623.194037 7709.422905 0 0 18332.84221 10071.72435 3732.80748 0 0 0 0 0 45878.89389 3690.17528 8527.994557 7541.63388 1472.17877 0 0 9877.252912 0 0 65379.84602 58223.18543 4776.008363 2770.314833 0 4991.0397 380.7688958 0 0 0 1772.754114 3864.688815 3875.126463 4096.762944 1647.805597 0.6308036207 2397.309034 0 0.4565323032 1501.270864 3.92196056e-08 9156.43538 23113.48887 0 0 2907.997459 0 0 +5207.37207 19704.05716 4851.196365 0 1697.043539 0 2238.158473 0 5460.131658 0 6183.915529 0 24094.94548 6922.041928 97.54660986 0 0 0 0 47407.56803 32805.11893 14364.05895 65203.0558 7079.609054 66997.13365 6250.248857 40634.99595 27.98624352 15702.68066 0 302.3213328 0 2720.921678 12949.13997 4722.651539 5424.464917 0 16525.63867 3969.608578 1549.403908 13828.77008 6502.436806 25708.79351 0 263.0453046 38.06304066 0 24239.09275 0 308.9448643 54058.94709 0 2526.195895 3410.749892 5099.442562 10472.69778 6394.244818 46693.73462 0 0 4234.137525 43072.20492 10512.34249 19323.76358 58011.62715 21659.22436 0 13880.07378 0 0 0 1815.678998 0 1736.790627 24785.091 8952.555104 0 57126.75889 9009.833593 33677.65271 34800.65424 5781.553766 0 30016.05548 3918.776215 31278.69871 0 5892.95274 0 8027.328554 45579.55734 0 0 46910.26258 8991.867587 20918.53716 14508.95911 3934.282888 0 10542.25192 29461.803 0 2167.640275 12764.96519 457.7383568 20314.21567 12217.0368 0 31957.63565 2.549346573e-11 28888.60966 0 1304.704236 8761.995208 2265.985005 6312.933697 1247.591571 33524.12884 31478.69445 69.78028929 0 224.1680695 0.03504309609 9122.647078 8041.606559 46457.61529 11618.10801 27909.73207 20999.71611 20917.67311 3651.860562 15173.77021 14377.0757 9745.448714 8175.325323 66667.44815 4222.615629 0 54972.90653 0.1265163686 0 496.3185173 36290.74119 4864.896127 26273.59194 942.8316013 10931.32285 34008.03979 27734.27252 0 52149.89648 11767.10711 3358.524998 9782.787963 66473.07535 248.7441349 12109.45778 71501.58109 1222.804269 7583.544659 31232.57602 64949.70022 0 9616.494876 29640.56556 28586.74293 11228.36394 0 62904.49493 32427.12914 28193.46221 10632.15329 0 47544.84115 13804.38938 0 2139.516431 4422.155473 43621.60088 0 28965.19621 0 2466.89467 7258.330757 824.2697368 640.4983034 0 1655.047577 0 29002.02791 205.9521961 66883.74981 53615.80023 323.0085062 180.304282 15744.82647 13642.2862 61054.83979 4278.31478 839.1645119 30059.26774 1271.996863 42600.30877 1421.103072 0 78445.66348 9553.500036 0 0 19316.77353 0 20840.6078 8102.981791 48631.9778 28442.37695 0 14124.01361 2184.812263 42828.9101 26524.82473 0 6493.122042 17498.84204 39864.24749 7730.692266 0 32266.52453 9929.920379 2415.638557 0 3355.844139 7119.877228 58874.90149 4219.975932 3643.980188 39622.71403 9955.517899 1830.479101 59787.9551 2365.834743 49581.82961 61945.79819 1792.685064 0.3153608014 1427.557546 0 0 1139.126358 8648.819264 2262.997676 77.32446876 0 24372.02721 0 0 20076.44599 3655.611847 1029.84992 77164.20728 5748.660476 2928.196785 5434.642618 54054.56668 1285.375864 78461.90063 0 13289.26427 3798.409494 0 0 61.52315143 237.4843766 0 303.9541542 750.6598083 0 24134.56389 2509.145911 0 3562.304936 15794.42536 0 52037.83874 17718.41801 24084.66758 22016.87715 0 0 15153.83741 47121.52704 7309.421591 0 2.861849191e-16 5188.68861 0 247.8214396 0 4679.237239 0 0 +41.22078009 25382.36995 0 22018.59808 56194.387 0 9384.219867 33246.6878 7234.554385 3968.127887 1151.737715 0 21132.06844 27929.62376 2516.664371 0 0 16699.89017 0 14805.91438 0 316.0028845 3116.473976 0 0 22849.32126 650.7339551 9673.021513 0 0 2796.528992 4405.826747 90.28830019 0 0 0 618.5109176 38475.51271 0.3041523453 8777.738724 26409.64666 17473.68289 13758.13732 0 76434.19041 561.0510098 0 0 13955.46695 52367.76791 0 0 0 0 5025.072354 384.2908498 0 8383.560342 0 14194.93641 0 13288.23944 0 0 26521.80644 16929.80682 16239.511 39097.13039 0 0 16723.24115 99.29411468 6381.29607 977.9467387 60781.00881 33167.03393 0 13012.64957 11046.53262 8388.511337 0 3534.57734 3.281722785e-09 0 32958.9562 0 0 0 0 56928.2488 21635.36905 32362.66106 0 6010.062468 0 10238.21913 0 3514.292331 11089.26076 0 30730.05505 0 30569.85574 8913.637941 28022.39431 193.8805964 0 64854.1408 0 992.6935212 8866.138808 2666.746619 1666.520854 9638.950762 0 119.5903118 1394.609926 39397.51847 65187.91767 47748.1056 178.6140942 111.5424659 61429.50949 58009.45702 0 3860.352076 340.022755 305.386882 2223.389485 2768.305586 14988.05564 6740.667979 63224.3966 23369.9119 0 0 233.4130938 16620.17798 4091.48661 8192.713876 36525.5205 15.75082695 845.4012884 12504.02993 30185.73124 3763.731482 10762.95952 0 13134.38831 76705.36339 49404.74591 2.107663701e-05 2174.13784 3793.455185 5386.688181 26917.24732 0 46431.22839 35.97401632 953.1506504 57861.78399 999.4325898 6614.322882 5075.191244 0 68589.35132 262.4201622 24199.46911 9853.392962 1083.05786 77526.95102 65949.14875 32770.44069 895.1627651 44891.81313 1409.891607 16440.89352 0 2082.303825 15834.13748 22935.0441 104.8299387 2016.811668 0 0 11509.2276 2045.297672 1356.230584 0 11174.20403 14103.43184 54757.68176 786.5298555 27737.99672 3893.647909 428.8118477 0 56957.89068 1943.945899 13460.04768 3173.81744 3488.961488 7904.960816 5141.640407 11879.54034 30185.24807 42786.89339 0 21193.64924 5.7952433e-05 43342.65169 21741.07156 15636.71961 0 4748.054711 21975.70511 0 3321.786221 0 6644.485545 3769.4772 44845.27108 0 3537.052221 0 49530.31514 0 28630.6355 2503.856932 87047.96707 29939.08479 9.733101025 42698.88265 1111.34115 0 23471.95216 27901.04532 0 5494.101255 81064.27281 7910.042699 39111.08763 38541.71804 0 7727.166135 16152.66215 238.1673387 62417.89162 0 21733.83638 0 13307.07852 47805.84369 1444.912565 759.5734943 987.305531 0 0 0 43231.56215 0 0 14799.4255 4347.448308 0 2381.953184 21738.02869 52127.4881 0 5323.046061 38762.20757 44254.26762 0 2009.25835 0 368.2660159 0 69.10421998 0 4626.840752 0 0 14583.54656 50003.15782 86.47289745 0 2620.321297 0 9187.29926 0 0 3363.026272 28961.923 32369.74065 0 0 0 0 157.015379 32208.20923 +0 0 35107.73439 10904.84093 14228.71563 0 10443.26362 0 0 0 0 0 13081.65136 17658.48569 0 0 24836.97739 65513.68289 0 1708.713989 8278.798538 2605.249369 37927.63827 11279.4908 0 40372.92157 0 3140.243928 0 0 74255.00326 0 0 0 21074.29484 33833.59654 56153.38206 6.085293806e-08 1913.210136 24546.8886 19976.77192 87489.15543 3582.797091 0 865.7124875 0 0 21337.20098 19513.86947 9.658942953 40413.57016 0 14239.16383 26037.1511 0 3969.58286 74080.14577 1409.565589 620.1156529 4881.960353 33502.83273 2398.073684 10546.03962 25740.83329 0 68474.52881 0 0 288.4039711 2224.828089 11583.40454 9882.039286 45975.8859 24792.77728 0 84.12523467 0 1873.935074 8267.41414 29496.73102 7426.51918 5482.076875 649.3494386 54265.28167 287.3954328 0 14128.40504 562.0300122 0 15654.9362 1164.574661 4319.469689 78725.13095 7342.361548 23206.34197 18369.08283 0 0 3326.046132 38611.12199 24563.8272 6135.503054 5583.196408 3492.318659 46888.85564 234.6279677 37779.66375 1277.951027 12659.26258 220.4685429 22143.89754 12136.00125 0 18562.48626 53872.50236 0 30222.52027 0 49.43000588 971.3338013 0 39334.52937 9695.739085 0 23010.92923 32411.57344 20503.23452 2811.546928 18691.46728 40790.60897 35960.049 28854.97657 13922.75491 21147.8282 2070.915197 13192.96729 13817.32133 11269.24591 298.8863447 0 0 0 2915.821553 2848.487047 7595.773409 7754.445671 0 29957.842 30554.02726 6209.957919 57062.18549 51768.48729 8278.632734 0 7148.224421 20032.38855 80269.25824 64747.78457 18796.97007 21379.31404 21024.36872 5412.029965 93.43226475 1052.288542 37706.56448 52749.04758 3778.683464 0 17010.56671 0 2427.301744 0 0 15758.11421 985.9510625 66722.78685 263.7928362 305.2429939 11444.65876 12569.60461 0 9101.848523 32063.87615 0 86.2999415 909.4283488 4664.514449 57872.61211 2225.568558 13863.65145 1265.557962 13315.7865 3587.088897 7935.407767 2.143008083 21296.13256 28555.31776 788.3082931 10703.08903 31566.2062 54654.75219 2428.757285 0 94.82497355 0 0 42379.29492 0 8605.397371 4597.978875 64.06429792 0 35460.79098 5678.610318 55780.4413 0 0 0 22548.39301 34115.7287 12206.21548 0 53807.8864 24716.26631 527.0207835 0 57068.55134 15986.06818 60915.57105 33586.06399 65.37162153 6828.754293 0 61.06401822 5896.037773 26194.14812 11635.75108 39688.4215 5692.079686 0 6900.577577 0 0 0 20668.72658 27745.19465 37.33814342 0 19602.63318 937.4251654 5104.15201 21984.42811 0 0 20548.66091 0 15103.40401 0 1454.676581 0 19752.07157 0 7420.620138 7091.58439 7447.670792 41482.12681 57.88829058 0 0 9159.767281 0 6909.149515 3239.374926 27180.40861 0 0 46210.50873 0 0 16979.3865 0 11149.68138 969.3350108 0 4566.053277 51960.17251 0 9417.637166 0 1589.219883 0 58.3754043 7957.30476 15091.81855 0.0001754705758 2966.116611 0 2667.337599 48435.96809 265.3027181 +933.7740145 0 2942.68246 1596.275786 0 0 0 13793.70862 1635.633711 17339.57219 120.56551 0 0 525.8675923 0 9319.221826 0 0 6283.638815 0 27596.22443 13.66244147 19641.41761 20661.37738 25745.01946 15219.15735 28575.93102 65758.13252 2462.329273 10336.92942 64484.87406 3800.365697 0 0 22836.32966 25285.57882 3195.044833 0 4159.350587 1328.362735 25675.55915 11264.24741 0 20288.39317 3186.527592 33517.46544 0 2863.612403 12898.39273 0 28.1605762 41724.64788 0 35580.21474 325.2894943 0 0 8.073031714e-06 1758.552394 2732.154425 74230.4364 824.3892066 49176.97342 4790.573171 3896.202021 6194.915248 23459.26872 10.73903576 28230.54918 0 2810.561573 5.028728312 38526.68978 23059.51932 2662.237241 490.0369148 23687.35048 48717.7229 2830.975887 25202.60292 7529.737114 27911.84014 8484.343295 15480.04059 1416.244462 3828.106784 56583.97728 5163.256665 14844.88661 0 27402.6472 1876.435311 3414.170394 3063.861597 0 73018.80785 41288.71817 33040.12059 58641.31333 0 942.8071264 34308.19886 8798.017184 44517.47108 15285.38161 3015.544114 0 0 0 3189.957215 45045.45555 23476.20983 33074.06033 8464.081859 77.12904185 5070.380968 12673.68185 1910.761417 20376.10201 5315.570986 17573.53278 68267.607 50039.28345 37.34850344 3.948456015e-05 46303.65193 9321.716998 12405.82047 2154.825392 0 61.76217921 4991.694237 6415.722964 37814.47529 0 23409.48751 1794.596295 0 0 10140.91475 2875.235049 4248.731311 10673.81223 1413.920369 28688.12489 16087.5705 2548.808534 42884.25138 7873.424726 14630.81084 864.0503813 22600.63664 160.6514733 67361.23116 3846.181273 18005.92508 0 40402.88659 45591.54323 2114.790668 0 9511.340325 13409.6857 0 32377.77813 0 15061.31775 48323.34729 201.4269693 14956.91824 43692.6153 35266.48232 14129.00491 4221.852043 68828.80732 63986.15985 341.2203451 0 40898.83297 0 44188.50978 956.6605161 41428.78249 25518.09422 43702.43094 0 0 2376.831128 8320.427653 0 10359.226 3626.94105 893.9309567 23301.103 55034.61239 0 76288.3752 0 14655.0842 9864.837099 38010.00499 10430.82141 9473.284552 3190.908769 34647.92173 2025.623798 0 10846.38672 3380.32086 63.64954959 931.5878572 0 6457.731318 28421.72755 21321.7804 134.2454907 0 9159.934492 3758.956739 96.55889417 0 30294.32818 38972.43006 5675.037107 4116.636687 5306.783362 5094.257242 0 12892.5477 0 16820.47521 0 2628.775351 37343.61361 0 0 11723.466 752.0484903 3981.616677 1037.610722 72755.50371 0 4165.907817 19762.38028 7481.330735 0 17966.05028 47107.64019 80.18535944 155.8863627 37312.82894 0.561485021 4256.748877 24.13170796 0 4566.208281 30376.46929 13097.98882 27618.95515 50971.36859 8958.92825 33231.49529 1893.89857 0 2372.644777 2810.680257 29851.81967 0 0 56477.7345 2026.103943 149.0752946 13332.62 15413.53032 17118.25364 92.76539006 3582.878286 24635.44289 109.7886325 22087.42202 4645.682563 3664.617855 0 36265.76893 0 14129.85168 280.1532516 21137.36911 0 6539.043002 46988.98799 0 32676.32795 0 0 309.587759 0 1681.657281 2.151358992e-13 0 +54.46597525 18443.61168 3665.288451 4089.683289 0 0 97.0560905 0 0 69960.37004 24310.90377 26383.46961 4983.601079 0 471.4078019 4621.795016 47.03895489 8561.157863 54729.17504 0 0 28.86769684 289.4930131 2529.333691 0 0 9989.259613 63869.57866 19111.14505 34844.28725 0 26680.1468 495.3461893 9502.331259 0 0 0 0 51892.5989 0 5238.721813 29937.35233 0 0 0 4506.319014 11494.64977 0 20245.96688 19794.73659 44699.82249 0 0 23130.77236 21387.62509 50018.76775 0 23377.95475 1587.382278 31580.12493 0 0 13366.62972 12687.82258 3066.538415 0 0 173.0245527 9.803691214 5419.795579 66281.75661 0 28916.1274 10589.71759 0 46748.56126 0 47784.57627 3573.026771 0.9354539866 0 21023.86766 13674.34788 832.9012799 51103.44855 0 7420.639506 0 307.6710103 48457.33643 1364.22727 49326.2843 40493.89144 0 0 2338.558912 247.4425725 0 71021.87624 16182.57931 52383.35889 0 41058.84241 2504.126885 12422.00805 0 341.7299669 21594.06316 11740.59329 18365.07768 26876.56222 15297.55094 9252.546015 129.9764247 40436.16672 11118.64776 1384.6757 6196.015711 194.2911795 22864.38978 17678.272 0 20383.22243 68.91733097 13448.2966 4039.309454 8487.8957 21396.55388 37700.36651 21511.77979 0 0 3460.483632 23787.35493 1581.32672 11172.3611 0 0 0 14806.15978 22798.72526 13755.90243 1130.923593 8440.492399 28567.23961 1987.142987 9241.654076 35409.80601 55.5848778 46197.08499 46780.85771 48027.02525 312.6666271 79283.18074 61897.43598 11.00881135 15.31135312 0 2615.275047 63.72353932 0 53700.16152 187.3845147 0 1721.364286 43885.11231 5957.991435 9496.420668 54924.39002 0 197.1163643 16743.65375 3.581859527e-06 7727.614818 92.45297258 0 1876.808382 13805.6059 22414.49245 7821.065249 0 6480.881448 5244.977741 15362.77667 53984.2732 0 0 26770.25571 1667.03514 379.5859048 42259.75535 3.57831165e-12 0 0 53139.35389 0 7429.904795 59036.36158 7985.164492 21709.94451 25236.37674 0 21512.75765 63806.28807 0 0 9884.044134 9730.003602 0 48186.70887 0 6938.816342 38275.55798 9076.362439 15590.63287 0 2648.770888 3702.016278 4699.513106 6113.315082 0 10617.42813 65.06407778 0 531.2424355 28344.54142 10870.73431 0 0 8295.723048 0 4411.524632 14335.77878 8610.57111 837.324455 3496.244987 6472.204647 0 8253.156076 34376.91004 0 0 0 190.6187526 0 0 12673.70201 27200.6054 18676.25685 0 383.4236394 0 47106.19648 27211.81612 0 9494.935404 20554.65584 9101.23585 17350.77504 4924.473965 69571.74729 0 7717.239641 0 96.76076376 39.09861198 8540.81175 32445.34903 1.807056911e-06 0 0 3752.67669 94.56459424 0 0 0 276.6980705 62081.26619 18420.13029 390.8467912 43811.77295 0 0 0 0 1133.188954 24.04438684 747.4315593 9864.790106 21236.1667 6140.92406 1255.754027 0 269.7244393 5080.192648 0 2667.045902 19408.1105 281.1685322 2746.795753 +2616.512054 3379.528034 29942.20013 0 0 12220.13597 13052.86689 369.2920311 54.1238707 0 0 2880.669996 5163.844488 0 0 0 0 0 0 0 5645.944405 0 137.3148758 0 0 0 3788.351596 0 2124.605416 0 8249.349706 55489.56392 45058.56645 15682.89903 16984.54637 23147.34007 461.9116248 4592.022104 2201.275952 0 858.1637309 5855.144239 0 12845.80948 8119.150589 6038.087247 2821.334249 10597.16461 2826.362791 0 69159.79245 2043.21373 51988.97499 5940.816934 47126.74465 0 0 8185.128078 63440.25651 8060.151398 21019.92493 0 11783.87486 67.29874493 0 0 8165.984144 0 10489.65182 8184.956293 1852.749287 0 62738.45767 18408.67393 11392.74558 70556.52507 0 0 2066.980747 4082.915404 2793.086592 11011.47328 2915.828892 19072.95879 0 0 4853.958825 0 29004.47679 0 15955.4139 0 26327.77721 0 45553.63881 36922.86648 7201.886632 5099.089071 10364.82995 49234.54202 1981.080108 48268.98734 10276.89295 4997.402284 10.45600125 0 0 1218.274089 0 0 35460.15764 0 0 80708.43149 0 17302.2611 297.9994809 16671.69636 0 49302.67206 22171.9211 112.2054935 28742.30978 66457.63118 37010.48512 0 4488.292621 23551.27448 11619.7112 847.1407704 1477.407946 58689.57411 12165.63298 761.7971879 22369.40131 15906.207 0 17823.86411 62134.14641 58530.09082 2145.039268 10995.68162 8894.676148 0 1853.25999 1884.412711 101521.5044 39063.82906 23687.67501 9783.346875 750.3277995 21283.40459 143.0885478 15754.96471 4927.951932 3361.276202 352.397036 21836.8263 55171.07513 0 49797.36586 2465.195876 99.30065226 0 0 27541.89064 0 0.0005762273691 13835.7999 0 25432.03548 66750.18362 7406.78322 16364.71468 6150.302233 0 115.5560864 0 14203.05914 15496.88909 10694.7082 7886.40937 26996.02141 0 48919.4253 0 26437.06693 27876.27568 27704.01415 5968.268741 45434.39866 53392.12804 73847.54302 1118.123185 0 76957.4915 680.2709808 6985.790491 62365.95027 44762.61183 68008.68438 7134.800776 29409.43081 56857.00689 11856.52529 0 7528.26557 10594.56482 3265.077023 579.5345763 15566.02447 3017.310259 1746.895694 2413.798956 0 0 0 3809.612234 67346.89591 23917.19205 42891.70616 167.9578317 13696.42278 0 4188.168078 0 5551.813843 1808.904665 772.9261258 0 151.5232276 3349.221023 0 0 1105.229749 9641.713882 7037.49605 47941.209 0 27059.58521 36877.94331 0 14354.83763 0 1183.287843 0 0 25477.45021 2372.924297 53864.0164 0 6108.110018 10416.9229 19795.41922 2099.783209 0 17290.65144 0 22277.3988 6311.213109 583.8728828 9387.098252 4154.802418 937.3387074 0 0 48724.60401 12805.91424 8885.851713 0 0 6581.923429 0 15693.00437 0 0 0 0 2930.929432 0 16830.40007 28332.90601 7650.238635 6487.986717 60242.83469 0 0 2401.510781 16912.37371 4853.641137 354.3670191 3313.081084 0 57655.32328 0.2022831529 0 4212.532172 0 146.9247084 0 +355.7583265 2389.554358 317.6341042 8234.615206 25755.90712 5189.899104 7852.086486 1691.88145 530.8711364 4232.413253 0 66664.3609 0 33.90292757 0 0 0 1396.19032 3922.840055 0 0 2929.445408 8356.78262 18864.93196 22545.15609 244.7778145 51083.21402 1268.103814 12717.70993 1012.111784 0 6520.999264 50574.50281 11144.4868 16329.91088 0 0 0 13871.63296 0 0 0 0 0 0 10392.33337 0 10004.24072 0 26.34679042 23076.66303 22777.70372 414.4410738 62148.67379 0 0 28540.79205 0 30624.24704 4793.529571 14596.42095 0 0 0 7087.983564 11041.99733 45500.1627 2301.09787 5486.486314 27955.67718 24769.75996 0 1456.823785 10039.1131 0 0 2550.671282 1538.871558 14292.15235 12128.90904 16915.22492 3117.312139 4175.515073 48437.90041 0 5222.170748 2033.423968 0 40895.51602 22891.40462 15028.16507 10230.38451 0 2230.368241 14734.62323 20282.88929 0 0 38442.64678 8746.529703 74528.4207 24857.91828 0 40645.46626 2037.261856 4198.233297 3136.415007 0 0 21860.95666 11157.75656 0 8079.158979 4405.171965 2200.562179 40978.47143 74848.0988 0 53216.65732 6301.675063 15267.18701 0 8882.556215 0 110.628942 44362.28015 53355.4318 0 1982.849566 5480.941409 20002.51972 2235.938743 0 5983.834567 4883.733368 3400.58776 36265.00233 11906.21758 22178.73282 0 86604.05539 0 1026.785893 2042.87389 43910.80582 1770.717507 40609.17809 0 18492.04062 40402.76616 0 26267.14751 0 5053.64017 3728.50165 325.4081635 13900.9789 77490.35808 7144.51352 1637.786214 22750.47189 0 167.9790999 31917.14984 0 0 5.681729871e-05 4370.247635 25392.08659 23235.69344 14089.98034 0 34.37300127 40274.34543 35.63094184 0 0 1800.610956 53502.31445 38634.3636 0.0003507579293 0 618.6502466 539.6839968 9905.581954 66.30253024 65342.57935 642.9808707 42487.54164 19878.95856 4229.250758 38743.55758 1.300187615 46593.89531 58878.41009 12745.69271 0 27002.17624 1772.260622 0 61493.04456 11336.02226 23672.27975 13244.73518 0 8798.850523 2022.460063 0 2084.34983 561.8646844 15297.19726 40730.25012 419.0042707 4252.205683 70033.58542 0 46.73487209 2368.295473 44.96664965 25610.895 29861.75152 2395.702244 3564.811293 100.6453032 7779.444197 3666.949476 0 1956.705107 1524.456993 0 115.7871721 24.42100703 0 4101.379762 0 17086.78432 34396.19511 11054.85568 1615.503899 0 692.5543143 3579.801349 11383.1923 10069.76396 19878.39356 2.124392403e-08 0 23341.76997 0.3216746117 13325.50156 1050.177376 0 7162.172285 0 35.3334171 1419.354142 1719.329489 0 1236.802743 19368.01915 26943.90104 12307.82556 12406.56649 21628.43884 0 30404.31752 0 0 3365.158395 0 3635.692594 0 0 6797.038152 5582.978356 3451.765577 47781.51159 1352.34811 144.6724764 10229.35105 2327.175886 195.2743659 47675.29852 0 0 898.8506985 9209.351623 0 11918.55548 4468.532593 7494.166323 0 1295.152492 3764.368938 0 0 7274.784237 23505.52731 3905.383153 2356.474491 +3813.899246 37847.93096 44981.35865 0 0 18874.09315 8731.286169 92.00101173 168.496469 0 0 27051.8011 3453.974944 52945.67083 1572.089004 0 41355.2087 21703.57404 130.2368711 0 44862.11841 0 14270.14624 0 28900.18278 8737.283452 0 1302.884859 0 15710.9127 0 2211.837373 0 4368.701454 169.8624456 22477.08759 17235.73965 1540.960363 3082.739671 1630.51145 4091.326229 240.0052009 0 31590.25467 58.67683085 9455.983914 16633.71969 8651.509689 0 0 0 1330.932469 31876.03871 0 17031.00136 152.0496527 0 3322.96624 0 2011.895446 4151.189462 3418.723507 0 44802.64388 0 45983.77924 76809.91087 0.09920962947 5987.043964 0 9338.792515 24148.32764 9542.277088 306.0914141 0 0 4.47220342 0 8226.654599 10368.52986 10114.06362 1161.849953 582.2944644 35771.72034 0 160.977597 736.773091 20957.32669 10123.44685 4969.436381 0 10056.87402 474.2873269 1741.280906 2811.685966 2138.538014 3741.768293 9517.884789 0 42609.9939 0 711.0291642 3950.817135 3374.651008 8294.8436 2284.791864 367.9940726 28259.53068 54179.53545 13809.80622 8667.695571 2708.924636 38486.80283 9425.799352 0 1467.057046 19763.94923 15223.18645 2895.985151 70921.85469 430.905864 5862.432306 31980.41995 8485.821228 0 770.618368 0 0 0 6626.948345 77266.06616 14905.5434 115.2067212 2430.549285 0 2602.425912 1286.17219 61442.52124 4337.566497 6925.189791 33768.51958 39022.57226 2092.098409 7102.175085 258.0270997 0 16758.72881 4933.576173 13132.14055 7503.91751 32210.41237 65.20941109 11857.49796 446.123854 8.008374429e-07 23291.2461 10634.28401 6784.112251 4120.809941 26118.65573 26163.34886 43820.91042 4424.760698 0 22981.34163 31878.97301 1029.924964 1409.226621 4510.063321 2508.167234 0 196.4249155 0 6969.659535 2794.108651 8944.994837 23219.65671 39291.05597 1633.209635 18760.39811 22912.77342 12324.93528 34897.80695 8634.056405 4750.290029 18233.86515 48.0476132 15528.91438 15506.02921 4339.611863 0 0.007166910857 37112.64394 1336.266427 7346.125859 4.374613171 1326.942822 0 566.2896221 13181.19229 36348.44907 35.52034932 8887.771161 60396.05847 49188.65491 0 0 22357.33231 248.6696629 1018.59431 48545.25433 344.3748739 15206.16097 56988.00944 0 5502.567177 51298.96892 674.9334163 0 153.6664448 13291.10188 55133.63109 55537.60284 2387.159407 0 37222.41325 21035.01518 0 47062.12228 37638.67775 18605.24788 0 32024.01174 22990.35042 4046.430718 425.0308052 310.643228 25694.01715 121.0573508 2899.060864 10240.88257 1542.241297 219.2626599 1048.011904 22648.22752 1.15727805 34269.55376 2607.706636 0 774.1186944 0 26099.75789 0 0 994.819014 0 22573.82998 39.08069908 0 513.9887367 0 51689.30798 0 77765.1088 3627.507054 0 6176.367607 0 69815.23179 0 10261.97189 51428.48794 0 0 17521.56623 0 0.0989783241 10141.67707 0 57324.53874 0 2338.204177 32422.57956 1644.246183 0.2117361673 0 0 490.1982855 5055.487362 25207.00904 1951.091048 0 228.9958184 0 0 6542.967445 8623.893997 41313.37342 0 0 +11159.41388 39348.18664 3416.007292 0 18157.57823 0 0 2010.947435 0 0 2584.259234 9491.509694 0 0 2386.370467 0 2809.739829 16189.36961 0 1755.70483 0 0 18251.22566 0 4076.189858 417.1193772 13674.7337 63375.91215 25304.8957 0 23342.25805 2778.878701 0 0 11795.82523 70217.02708 0 0 447.3767292 10699.53743 2894.471693 19050.04322 4245.005947 0 0 103.7997336 81.58027361 2817.371376 0 0 0 849.9772777 269.4040063 200.0337893 4292.173466 18856.96612 2447.301404 239.1725614 8493.78792 46.20844997 106.6226231 17002.37399 45.81842622 0 0 0 9544.512759 19062.79523 4096.161496 206.0719909 18037.81197 0 531.1052084 6670.859496 22281.98052 25856.17968 33606.13743 0 0 2740.433261 63002.35529 3569.562216 42670.04826 55975.65775 0 0 90.22502579 16585.38134 0 28744.58236 3209.108013 16715.49414 3532.309249 200.3736966 32612.95203 113.7047768 331.0325179 11850.34435 191.4416744 22461.87789 0 5612.741832 2034.529127 0 55362.45691 42739.64766 23457.51939 34519.93985 0 0 127.108908 20117.86127 7276.263678 43112.21289 14784.2898 884.280373 12011.15983 0 9760.805477 58674.11307 0 0 1600.509139 1551.246135 17570.40504 16010.64601 9751.92648 2848.003418 1631.00005 0 514.8829012 0 8201.211643 23101.53074 30282.0426 11482.49512 1088.498169 6633.546101 7803.477509 0 1875.122518 32060.15637 9354.920866 18709.1058 0 60732.63433 21615.08649 0 0 8018.456584 18421.94745 42014.83263 36482.69961 6788.96859 51299.97691 51777.21788 40860.59201 105.3873195 327.2104388 0 2.880767461e-05 28873.25906 10919.64982 30609.04882 0 30872.82385 0 1374.919222 1297.628062 4109.417022 562.6318114 0 59410.68738 42434.92667 0 5909.546205 47536.15045 8.611629443 15520.44649 40792.76633 26819.35118 5.550012312e-10 8963.905565 0 0 7922.737793 7678.783047 964.4014252 6523.860962 18377.38769 20038.92621 32.90090967 13202.74459 0 19013.58267 4874.573698 23368.81022 9405.229442 0 54879.06493 21245.65169 52001.17366 49110.18545 0 16623.3108 2755.550585 23021.69266 1903.514952 0 49246.41639 336.2218827 2023.563864 21778.1362 287.1435362 0 33588.96163 6596.214258 19509.8046 35149.18979 0.04027122638 25308.82571 1172.29188 16910.44996 3940.315151 225.9267664 24150.01021 13012.72403 0 33.87201706 0 8855.535394 1668.4943 0 0 37427.09502 0 0 0 2243.109357 2494.221568 20266.06013 2637.374728 1012.749951 9239.459367 4476.629776 997.9367332 653.7497156 0 5676.547092 7712.425586 3827.676898 0 302.314547 216.3941231 18536.09519 7065.035021 1658.400493 4785.093588 0 0 0 27140.87457 0 36747.97691 53449.40638 19218.19176 0 1708.380682 52075.57794 7933.888021 1102.768011 2152.571975 7540.875897 0 2148.972206 22350.37885 0 0 0 0 0 0 2923.364453 6953.010331 0 1101.329397 12896.92232 0 7176.390248 4241.915158 18123.84121 5703.069612 3462.065009 0 3882.852922 22696.96689 0 5167.888292 6163.73083 19532.67929 +31856.84708 5689.16775 0 4127.22379 12215.39185 0 13785.14577 0 14875.97373 9506.840831 0 9969.881105 31225.62857 1466.873728 0 0 2288.60233 320.4799961 871.2698064 51337.83614 0 5880.685698 6287.563232 0 2608.763121 0 11241.89978 2632.855469 7216.860782 0 454.2711872 60052.06342 56419.65981 0 38529.45258 3832.152074 0 36955.28257 5800.048812 0 0 0 33829.24576 55230.66147 0 2972.689069 0 17956.31769 80960.18733 7810.36764 305.6560838 0 0 0 22.73252184 7758.156302 16882.716 18866.34188 40982.64012 0 14975.45176 0 0 0 28831.38072 0 28.86706346 6595.746738 26882.30524 57380.74718 8601.651983 0 24194.35835 0 8751.260225 46371.62675 17964.21712 140.4312216 23039.41278 28706.30144 0 10208.62647 3741.167737 0 4193.795948 51864.83623 0 0 0 3082.04815 27.96909958 441.3312228 39817.81417 0 7605.327816 0 53141.29971 0 10124.31004 10945.51892 44202.2733 13768.35577 0 0 3467.534334 0 11630.50202 2561.554839 522.9179713 0 0 41934.51291 20767.91508 9640.394134 4603.926966 15825.74681 2213.0142 2857.525589 14727.15643 95.71852839 759.3189133 12113.18 5549.867206 2884.954904 24853.33804 8903.778242 4927.967797 4616.620766 6.404146766 0 15962.70912 0 0 15979.8592 33206.10535 0 27221.26295 1363.54308 1112.438145 0 21376.45719 0 103.6439243 4295.726719 5717.602064 2871.522007 0 21925.06601 71.69215961 11243.88575 976.3331514 50568.7887 4725.730449 4978.249675 13026.2898 3668.060698 6056.776623 76.16804324 70167.64381 0 9989.90361 0 2.727517037 14871.50243 50268.19777 1191.58729 9017.524756 56.11327247 0 53690.29296 27356.40274 42287.43093 0 0 2891.738366 0 23086.27032 3441.547902 11271.68543 17075.55906 27741.47501 4965.688784 0 22535.96187 164.2933677 185.4714614 2163.480836 0 1360.94574 79161.96682 7368.51269 0 15675.1334 0 3901.462729 0 35812.35607 41883.61144 37717.66877 61137.96836 49097.41669 0 3272.502982 25128.61673 1881.819025 14535.83545 1815.564816 0 71.97150061 7427.576513 28405.54279 19490.5577 302.1584384 62836.50143 3680.002676 7703.258826 7866.391094 0 38851.90731 2466.572171 175.7652872 0 2253.999793 8788.36416 756.905297 18532.46065 0 8172.004556 0 6726.644945 2952.331271 37044.73966 7574.026605 1551.734832 0 0 801.3732425 10188.26639 2569.790418 1832.990656 22339.12121 0 7371.708475 0 0 327.4026553 38019.82824 1281.291363 7682.578022 0 11007.62472 50727.22616 2662.765575 6375.282644 3893.594387 1673.848039 0 27058.01274 0 31802.35144 5740.562448 0 16001.3189 1.907346357 1141.009613 4757.369945 41834.07798 216.9837874 4366.451484 276.1155536 0 0 1112.671598 4109.634243 585.9191507 49050.73955 0 47080.22511 537.5805241 0 9571.711742 1006.48628 0 0 312.9391579 20286.69199 4016.293229 0 0 18327.69667 0 2715.86694 5345.292221 2328.658066 0 0 65423.65271 0 111.0919382 80.17252148 +0 0 1226.742188 84.93507928 6508.817455 0 9685.266961 0.01715756407 45.68993881 0 12235.58895 94.66208004 3724.854693 83.77820855 2438.430057 23841.63903 17599.5617 2183.701341 4806.957314 3365.703674 30143.4478 32020.90816 0 46721.96802 498.057392 15863.22227 43738.62969 5600.851864 0 2221.912163 1765.91423 0 0 190.8930872 1143.899796 179.5887919 23112.05748 44625.47245 35342.24066 585.6774377 0 0 11515.2126 6094.336897 0 0 2692.496179 39620.38958 7430.37911 8989.58492 16169.49212 0 18968.03079 9553.58027 36481.70273 5198.500411 0 5784.777584 7661.023699 17719.07593 1.566782246e-13 8218.736205 32718.71212 0 37990.48546 20402.24386 11735.74826 474.3576253 10597.62832 0 0 9762.197401 25.75719942 47065.79408 0 0 10620.38906 9813.423991 0 35324.54112 38671.36074 17718.50699 32297.86451 0 4745.481693 3224.077895 19655.37425 8468.428411 4495.311217 39895.29309 35213.12653 7.122919921e-07 39251.38983 111.7152777 0 0 20459.97338 29345.42529 3708.078897 24648.99163 1701.117107 7114.01019 71164.83245 1754.03653 10065.99748 0 5555.913249 17887.45432 3.456671392 16212.47538 867.7449297 0 0 28031.04091 7.917292596 0 25978.00769 788.9615941 8425.481446 0 15468.0331 0 608.9861916 38050.67455 8546.713555 14646.57798 0 43048.96774 0 9526.377346 648.9416981 41896.30172 31033.07563 7242.327125 0 6695.711959 0 3877.814689 0 79494.68666 0 696.3741289 38518.48827 17892.59332 33702.45932 0 3949.875545 9890.925904 8702.678589 21863.53193 28441.31424 118.7099438 166.1578692 0.7653019492 14487.42483 60.79432396 17898.281 14.01227264 45842.87615 35255.37898 39917.68219 32045.07097 22501.71843 0 2820.635519 11193.54196 0 1319.237939 803.135614 35289.97582 93.75263007 14146.93258 0 3217.563909 4922.124414 19085.34505 7365.657751 61945.10871 0 3110.543534 5595.956211 10339.08002 5214.158919 309.6591235 170.4383907 52486.80057 0 23129.51939 131.7872514 0 1181.951244 12829.12672 0 0 39422.41792 0 34026.71479 12087.75291 78.72161905 173.9732726 10511.20192 9043.413571 15811.85784 5607.07229 11403.36819 0 7660.799532 2041.189952 1248.381507 8416.037221 11213.66287 52.1343725 7671.480865 8582.637149 5675.229587 56092.66622 53987.42782 0 0 22734.47814 0 0 0 0 0 4240.648449 2659.267551 2704.135739 99.90216866 23407.43387 7996.415273 46692.5276 1816.22809 16694.43907 3986.374841 0 5215.042516 0 165.7582794 7609.853242 4599.651398 44668.26468 0 40.50877207 3249.656079 0 4918.368474 10731.76802 0 0 31558.07121 0 17920.88436 48411.50267 3590.924602 5283.738099 25.20779686 0 0 1512.304681 30059.50636 0 19733.13954 0 0 5658.135995 15848.94816 4848.66809 0 0 32.75447348 3830.16207 37132.30443 10106.88743 2773.768026 168.1805754 19626.51204 0 0 0 0 4261.171817 0 1297.981411 0 20088.17755 0 3034.539201 0 0 14832.80703 3959.420335 11898.25158 12.94859453 48358.41091 10210.04808 0 26321.17626 14463.52615 56728.59503 +0 0 0 0 1665.40588 0 0 2047.658399 0 0 14625.14619 6254.154012 0 0 1800.848223 8015.886016 875.2063451 6149.433587 25724.08277 12880.59408 21256.74907 0 3176.879323 35408.56159 30069.92482 0 517.8984902 16893.54637 0 0 6536.56471 13853.365 1128.492765 0 353.3568782 0 0 22820.00453 4135.932354 0 11534.98639 12966.14497 14619.53991 0 825.5098909 26326.27866 9750.450124 8754.661009 36076.86983 2433.913192 0 0 0 5335.197034 0 13992.56351 6592.093104 0 44092.98256 25445.62379 4740.263745 8203.552286 4836.982692 30037.91378 3738.192045 20803.58454 0 3220.536725 0 0 72707.58221 0 67963.77625 0 1775.247565 124.3573198 3531.571578 3456.921776 5529.841712 51308.26365 50137.69794 0 0 19721.38641 179.3522921 40.38908885 22400.93601 29153.24815 3812.214446 0 26344.85396 25954.18756 0 2115.143851 34934.03756 0 84431.99167 32115.73317 36148.20607 35337.17132 15034.6162 54167.16352 6739.68851 12494.56343 0 32897.5732 92.97595822 0 0 72016.1166 43466.20681 1125.459203 0 21432.33882 5811.476583 14271.12555 29609.47609 1444.682885 15207.79537 0 9773.427706 1834.228704 3080.329892 15272.56621 47779.83173 2992.479823 13028.28301 3716.276125 53199.56961 0 16919.61693 54836.05813 11768.89734 3258.460741 5205.781771 41957.86966 0 733.4452011 0 0 8097.503603 23938.39542 33819.44524 29999.33308 1103.473389 35448.74206 18778.80059 555.6211349 16128.36103 2025.740568 0 2607.649801 14771.81373 27294.86412 4273.791776 1712.180818 1588.498945 53322.86424 40.38524604 0 2376.586611 177.5466728 17003.6351 20838.80669 9241.347575 2847.401677 0 3754.852095 865.1158055 5681.371811 9785.811438 0 16066.11064 26449.00643 0 1774.695747 51005.51045 14913.13105 6280.754771 0 0 15171.70094 77974.82551 7079.669796 15850.51001 1789.372964 4511.391168 0 119.5211033 6441.345923 0 8615.705465 25127.83527 48949.56076 0 25036.46883 0 53354.1892 1476.701197 0 48512.41884 8569.657499 1287.071416 1700.266835 38817.0316 26785.98947 7163.565841 8520.046081 4016.697884 15924.72095 26213.87317 11048.16932 0 5230.447706 0 7475.86087 5817.792069 0 4292.396331 1186.907177 2589.477961 7945.433089 15634.58452 0 1031.076406 0 1909.399846 12052.66027 8512.509036 79.47636361 0 9157.112659 978.158193 643.4134955 26528.84616 0 7261.364361 4685.758646 4484.286409 1336.934618 1595.711588 29297.85864 0 0 4389.815697 24353.70548 7627.462917 34110.5346 0 0 35195.25249 54.55108318 10424.43338 0 0 0 0 2507.805532 0 1762.257258 48787.572 0 6328.880577 0 7067.297699 31966.75609 3675.548194 0 30630.64443 3683.272017 4908.862526 0 20819.16575 2087.959523 1500.503278 0 5241.760116 0 0 6.095704767 5074.155105 0 2700.279338 39651.12208 30052.09279 18847.9248 2350.245567 0 1599.732273 1023.812122 3924.904397 5980.271754 128.4614019 0 12270.22806 1693.174365 3715.529278 0 9250.850801 0 +5244.292657 0 4617.595447 1913.797413 2980.572024 22103.57766 0 0 0 0 0 14027.3744 38.62203211 0 9503.144353 0 0 223.6846316 40775.67312 0 7146.503239 49.79424209 0 0 0 33955.92192 4553.587261 42802.52013 0 1600.697323 17437.20449 3544.403784 7523.586073 6224.277426 0 3084.672165 0 765.6052973 20452.676 0 21842.22346 28633.05533 31586.2023 11507.81958 23.05933913 49224.54876 11616.37256 56533.35801 54.09163165 10936.10381 2904.778504 1247.284218 4080.916553 0 53972.81969 0 44999.14977 4.550793806 117.653799 0 0 11871.47064 36783.01458 1096.648741 53369.0123 453.9602005 19911.17342 58128.10006 0 2219.120116 0 0 27407.41147 0 27832.82194 89269.82145 6397.469722 57392.81952 18828.01278 5461.640314 0 12714.18082 19039.0384 53323.96028 1684.351231 22924.54853 0 72782.14211 0 2496.201217 0 0 0 0 618.523269 5254.909073 63940.74122 47740.19775 27324.02393 0 7.405694301 43.8491026 4341.3669 36850.1593 19992.94352 0 21606.87927 6107.882572 31649.03075 21650.67277 5741.272624 2588.394925 0 897.4421292 6848.460085 24.26484245 68530.87345 48272.33394 35106.56693 0 5120.823575 39.11239504 317.430416 42092.94337 0 313.2660603 0 27742.82867 2061.014123 1428.974154 42762.00321 2529.571358 8975.23393 18.32524089 0 62819.87272 0 0 46240.02312 19528.80468 54417.96804 2813.436966 11557.3322 0 0 7908.79313 13677.63112 0 20750.20418 21962.30681 0 3841.114 156.3470105 4521.371011 12881.7374 0 8709.415961 4768.293079 142.3048967 9558.659409 7399.489537 588.8469791 0 0 1473.172859 2008.035716 3082.45125 21170.62111 9718.226938 10373.27687 1394.839549 0 9946.482365 0 22209.1772 0.6609119521 40254.60882 8063.269872 7.57886505 95.06186513 8058.900011 0 47324.40698 0 19676.37037 0 620.2145128 64798.47749 0 321.5758383 2179.490948 94.66601374 19609.36815 4463.297684 670.9174652 0 659.8781115 3959.582759 71.7540781 36373.86243 31135.72504 0 2221.147635 0 20325.89376 0 29808.86903 5735.949509 26841.94236 0 0 0 509.5435474 0 267.5771013 90858.96574 20279.98611 6892.517452 56086.44259 8401.118153 9660.093004 4772.476703 0 12610.91772 0 5373.031738 16686.02538 20095.27101 4815.048872 0 81790.72515 0 17466.68529 4057.139301 2123.682065 25.51298083 16590.94545 4250.653646 12016.19901 1028.478626 3027.998935 0 13504.06951 0 7049.542651 59093.25501 0 5029.057535 34219.35568 0 10158.37172 4324.519154 4387.573914 2483.691175 11344.98256 20132.98592 0 9575.441455 14690.41939 995.2201462 3361.318155 1885.750149 0 0 0 0 2110.289649 0 0 0 0 0 0 35291.10618 0 0 0 33.38670463 17785.71259 3224.352087 0 24068.23538 38291.00038 9802.830121 0 2161.574152 0 4647.242109 0 3980.529704 0.2706243537 2889.959326 48.6105608 0 6693.09407 48.57566845 22.64739833 64656.02408 0 0 +0 1026.260696 59146.30175 2300.260145 0 0 0 0 17239.75237 0 31373.77857 1172.468923 0 0 4829.514065 255.9608583 3525.069856 33113.0225 16464.90548 46399.80593 0 52778.8021 6641.090428 0 0 0 31397.78242 18310.54065 37849.10244 12928.73153 18631.66282 6428.903399 53034.02849 6382.331127 0 0 1757.374837 13272.25072 11492.44283 0 17816.84983 0 34868.20814 4619.799992 54402.79243 2516.520019 7460.567582 265.0159976 14472.81386 0 0 0 16641.23023 0 0 0 0 12118.30507 30979.33736 12155.05223 0 19981.13789 3978.182393 3440.648728 0 5723.297635 0 35090.47118 25572.13722 4938.645809 0 8100.117668 0 23456.26153 0 0 575.8046284 0 0 2570.050927 11812.48458 9875.504407 27273.61887 17064.29207 10528.44526 13220.08052 2023.238914 0 1.474728175 0 8351.985747 11341.99606 10226.09295 14512.73324 21768.23446 0 52.43864839 116.7504779 41864.99081 0 0.002473367855 34161.86672 0 1043.446186 49.40292628 14273.96642 3342.102191 50.40492158 0 1863.14477 41605.34132 0 374.2074608 0 0 11553.73838 3861.950254 45165.45495 47.80133797 33140.49857 27149.008 0 1822.555373 21880.69328 0.001277682799 53156.00895 9.505984146e-08 0 43765.85028 20383.59976 0 2734.758559 5965.762902 9812.383506 2038.313934 7595.138292 3955.79989 38747.55978 10898.64683 18755.00991 0 26660.34116 1556.438207 2837.790739 29743.1806 0 0 28307.66037 4323.556154 57038.58658 24482.38213 836.1790364 1065.803708 72444.96844 8691.636847 1672.869222 24.89401685 5903.240739 10210.92043 36384.06184 5237.390825 749.530256 68.29462793 12911.26438 28607.24734 3631.938215 22584.94804 292.821897 14628.21836 0 0 3795.527579 8339.532337 3221.137855 0 14729.26228 3218.176814 952.8232633 16238.75789 44020.55442 0 37537.08566 24138.46313 3596.602939 32.51214392 40923.42956 358.9055828 8997.67065 47.78832322 641.1138223 206.4992926 76331.86607 14749.18249 194.3193473 62211.58913 3121.654549 25060.37092 48421.03258 7491.014109 0 4044.345505 703.7848121 0 30717.80991 6716.98287 3624.232648 32379.20998 0 3241.221538 8721.291395 54378.82641 50253.88886 11579.51838 2368.252323 645.8112623 17348.69022 2335.143832 22589.71319 22780.53737 3939.027671 2575.253625 13813.88524 234.7557899 10763.36428 56842.66609 12939.64394 330.8391121 23511.35438 1000.308774 21336.51085 15946.1027 4993.968445 34513.07816 826.3636149 1651.158432 38240.55378 35074.39989 0 22303.10701 25554.22713 2237.603382 3247.360817 7933.294247 657.599844 0 35448.81263 0 22.59437879 0 55.62776493 0 1926.1802 0 7606.304285 2362.46943 0 41332.37652 0 43412.95122 0 0 78.62451443 0 26149.24679 2410.513226 6610.713893 2512.563476 0 0 10313.7598 4574.966376 4957.586501 149.0075108 0 19600.10654 23162.4478 0 9360.292264 0 46.91395718 4064.395143 43956.83999 16001.93066 0 18998.80573 0 2857.804476 0 0 7008.770629 0 0 353.776598 8090.377837 3394.007482 0 0 11328.68596 5199.282724 540.9929344 +0 29624.2896 25.13147884 8301.064071 47.95630504 0 0 0 2463.1353 0 50.49455039 5629.603567 6998.24869 0 3485.249528 0 0 20567.7049 2432.354686 0 0 3274.927659 40260.03312 2545.216758 0 0 0 17056.43898 10232.19749 5301.353761 28453.15014 0 2195.737686 39498.17876 170.648429 6770.424045 39342.45521 3092.785055 0 8059.122218 0 446.7397203 0 4142.469995 13910.53799 168.2281154 27491.0878 10446.48947 38052.86852 16377.20482 0 0 3486.466348 264.9332136 2117.180156 27823.21133 14320.92042 37617.83331 4228.507864 3674.532813 11502.49461 664.3063528 0 9173.882517 3571.437157 9673.797451 0 21381.02361 0 6698.929787 7.169348407 40944.12422 33448.11329 7124.472405 17290.63555 0 23512.65066 13862.04257 32106.59682 8391.789219 896.1180658 4.669973644e-12 28547.76292 40288.83187 0 56683.01915 5274.661869 2671.282055 0 0 52094.58385 79328.1234 38835.59712 212.3886558 0 240.7001469 35697.55658 22447.18801 0 11616.0535 0 23146.5952 17528.16333 0 73186.41219 6588.437523 0.0005049327587 13613.00095 48119.75024 4956.055826 43813.75016 105462.3539 2550.561844 10203.8756 0 0 41251.18961 677.6819024 74057.49596 42.16362964 1287.243714 999.1155682 1.636392873 13399.2564 15026.90915 2713.615586 54496.17804 0.002127021164 95496.84311 34223.52399 44397.80446 2165.556068 64496.6295 6402.404303 1912.475429 26.31283379 0 56902.91101 48062.84177 2650.242766 19779.09015 35075.8985 0 0 0 29683.63895 0 13460.2527 23274.5679 4552.399036 35006.37476 1105.21714 0 36011.93198 0 333.1489735 39280.6774 0 3688.667236 8754.301971 57652.54948 55.3809145 0 1851.076023 41464.92168 46068.1782 70114.6853 0 17084.12241 1283.6619 5312.080282 12230.47212 1027.839716 41135.46439 5174.45929 58567.17183 29887.96684 13455.64938 2987.931532 1372.710882 66014.61888 8140.241678 0 6505.46526 0 4113.466485 3.176610385e-06 0 0 45527.38844 33786.42076 1301.218815 0 1178.414807 0 369.2150174 2789.841163 38093.10268 2507.066489 9775.13448 0 8647.312207 18183.7671 0 23097.77205 31737.8793 0 8463.412437 0 7940.095328 19845.16742 31291.83826 42543.13317 48100.43143 1781.688302 0 521.985296 10755.09347 16875.96687 4778.802997 0 25792.26525 0 0 7956.613572 5395.499792 3532.715551 22126.16522 36107.92837 183.980954 3049.880302 0 0.001010390834 4330.822148 3167.390422 3574.933904 0 0 15133.68322 0 617.8324558 29166.13165 7659.28942 0.7438776116 3506.069932 4335.75736 23723.9439 3177.633505 0 1689.324075 0 4432.465052 16468.2815 6581.071618 0 368.3223729 0 21532.45504 0 2294.742978 0 0 3868.212226 7109.485768 0 0 17272.95785 0.4498966623 0 27026.51382 0 0 69.18804436 8141.731004 0 9825.493234 5064.634648 0 3546.607537 18504.58433 0 79.00191427 0 47.01101286 0 3547.510969 9126.469275 989.7462235 34554.92422 6287.694456 21751.05506 17519.25483 0 78.66096865 0 0 3970.315624 0 0 56145.27087 +2000.662406 0 576.6515364 3040.959942 0 87026.86728 0 0 9733.192146 1.262818469 221.2437311 15018.26804 0 0 0 10406.18254 0 0 62885.88216 4841.544559 6788.063927 0 45666.90662 0 0 0 0 321.9411891 0 60863.84017 16295.69037 2339.063871 2438.966814 0 29892.32181 5595.617342 10553.73248 634.1039557 7664.500468 18755.08459 4606.539301 27630.56256 0 34460.51372 3071.258533 0 0 3442.807839 0 0 0 1004.949005 6789.512191 39362.2096 1869.642185 4915.281717 0 8485.914001 0 0 3956.442778 38599.27723 61.5448017 0 8883.24103 37.65742197 7666.841779 0 10444.90064 0 24250.77205 20633.23482 96.4917759 0 0 63158.20124 2092.310134 20692.49424 0 0 9534.670562 48428.75874 54511.13791 38497.82272 3502.624019 0.02298026619 10524.63923 15864.28739 0 87624.10046 3916.718422 21963.64617 19513.26042 3669.33965 7900.000261 5605.341398 37.45797075 0 318.3494169 63074.53178 27640.94792 6035.846937 36404.45027 23.14285494 8359.881032 6483.253357 4204.556682 30561.05471 0 42105.79777 51929.10668 1464.180855 7936.102924 15793.07221 0 39601.61168 42714.75658 0 4562.913606 2824.399736 0 3666.604418 226.9820997 96.5969157 773.2523917 4633.00612 916.0775017 22632.11386 28904.21066 1.220780048 9503.51654 4489.576284 5184.945684 50.19935407 0 0 2431.041914 58634.39976 80286.55417 0 71759.9759 12070.01649 0 18117.45561 18281.87583 99446.27871 63.40543545 44480.46371 78847.73516 0 32491.55063 2814.060527 211.6865936 652.872015 7081.26939 2027.339245 33813.29436 13761.92616 8124.508173 4469.010757 28446.56268 13576.97745 0 41.10909606 11194.69645 1400.40428 24717.35181 2380.854038 35.40178192 0 15694.6194 10607.01626 8623.477705 19296.13276 0 37585.32329 18636.18492 1848.479921 45884.63054 15557.08228 32135.78359 6827.013533 37015.26797 28947.20321 63368.27616 53357.23636 67235.05966 0 296.971578 8.135400526 8681.26304 11172.77669 3783.989615 8994.491292 0 48846.74682 7028.842093 0 6550.426924 202.5949982 32087.43774 38979.70291 2137.876664 0 15172.39021 2295.693817 0.1030220028 1475.70861 10440.61312 273.4540412 6282.93317 17878.21846 905.1206256 0 0 5989.418771 14289.90396 16430.88021 120.0294646 2716.385048 0 9578.208147 915.4006162 37983.43589 12062.15112 38135.91197 4556.626489 0 2399.087264 0 1870.04999 9479.43594 37936.42772 0 5327.776979 1903.5614 29811.14381 0 0 3527.497697 6422.2925 1982.690996 37.58296471 0 85.99200079 0 46284.72545 5338.783043 27042.09118 16.45030686 115.7831415 42.09984618 0.002697167457 12051.02865 31421.85237 7823.783352 38939.59805 0 46282.54688 42.65081405 17848.96218 23957.46824 0 0 0 22700.33485 4094.477754 0 2302.96867 698.0438943 0 1712.166061 0 44.24744082 4634.466751 0 0 0 11198.92453 0 3818.621002 17234.12323 0 1.471405487e-06 1896.637811 14222.51307 0 4865.673909 79.60810755 0 39868.71734 57.82106478 0 0 21806.78142 0 30778.06248 26165.12006 277.4212319 0 +0 45966.34859 0 35347.86629 10302.8751 3062.564742 0 58935.01253 0 0 5030.879162 0 1.130800965 0 0 0 0 0 0 99.19689214 2943.808063 31641.84194 861.5671232 12167.46945 20948.37238 50065.47456 7087.29237 0 9347.495892 5316.815264 3425.233043 898.7401141 1475.024119 0 0 313.5272003 0 642.190397 0 460.9214122 3546.215281 20564.13494 9511.140042 17.17424665 33500.68374 0 1909.18973 0 27506.24176 22675.37201 3415.224937 26143.72216 2177.132787 8077.475561 53795.23181 10008.8035 280.9260881 15454.27251 0 2329.265913 0 305.1342062 15128.83715 4337.800253 5903.12772 0 2377.063786 4907.95337 7906.113566 717.4084328 0 8930.835724 0 0 4399.240552 0 4313.311133 0 3689.17325 166.0219543 65554.81133 26836.70138 38355.22634 9906.461746 8859.498361 0 60132.93983 59051.67122 6017.743737 3319.19394 71909.64671 18055.48903 20556.20745 39114.08822 0 43668.80519 54814.17365 193.2526947 0 45623.10079 14536.03887 27189.04091 0 70148.82751 19141.50592 45418.6304 38977.28756 0 0 0 4257.432965 0 2527.955725 61745.62932 24095.72328 32.24642783 0 1120.397573 3517.029894 29641.66427 15626.6614 0 12473.71032 37763.2889 0 11614.84982 2667.574414 0 16002.19965 21915.26669 20175.55805 18278.92228 5128.064086 24654.16947 3724.604829 10116.82238 13263.66357 925.3554007 1621.411822 1867.695646 73085.0285 0 10510.97082 6202.945649 7.270252131e-05 0 32702.49345 26.23406175 0 0 4413.327689 0 0 0 45759.50595 1547.940717 3490.025527 559.4180314 9833.898262 0 70878.61266 0 4268.794003 27587.82367 0 49988.56637 21970.5444 37722.81039 1394.518197 3091.307122 29820.88348 28262.34786 0 5.049063345 57927.05528 21942.69849 6372.939639 64345.8297 3736.15195 59512.36967 0 0 9291.575131 23642.00033 1948.75023 3446.264556 8042.865274 28340.97916 537.2998209 24922.67544 8466.534894 8402.072288 6652.543941 19827.78354 18304.6909 768.9885113 591.1043975 3600.537354 23779.08188 11947.81048 6304.854385 0 0 48.12940997 8710.234142 0 32645.50753 0 4428.975306 5973.773852 2645.452786 0 6572.63364 19895.16955 21112.57756 42703.06453 31606.44889 1301.101302 19168.23612 0 1483.798666 3321.856095 480.1220237 77.30239133 0 4255.349748 0 16737.09685 4811.113162 0 0 9.493108364 0 0 13743.45966 27889.12736 0 23342.69828 8410.048183 0 21325.75082 29126.21497 9956.626009 0 0 0 10215.44309 0 75.39200405 0 0 0 12130.47657 0 0 24816.30038 2991.340616 0 9440.548997 29280.70824 38032.57559 25087.15752 21641.63347 0.09174828153 0 0 42564.34627 0 0 16051.94764 0 546.0706801 0 0 12473.16383 24052.67435 3986.51448 891.820947 0 90.47661605 14812.84993 0 2803.831896 49.15682135 0 0 1225.046737 0 544.2772917 2917.688655 0 0 21906.95391 0 0 0 0 9240.958676 4789.453282 3566.851978 +26815.67957 0 6735.073981 1380.403365 3652.316315 0 0 26054.90158 19007.38983 34040.88454 6366.513627 0 50475.49595 156.6802605 5567.439434 39331.01917 16030.10469 46687.89469 26980.62146 0 13515.0781 0 9830.904536 23465.52134 0 8041.336862 0 2297.167732 4506.013297 0 185.6338512 458.9014842 24301.26946 158.3102906 2511.241837 0 0 31.96403063 0 1616.000164 1432.17147 5007.739139 5924.57086 10140.78525 88.66435296 0.5619015795 57933.83198 34752.00208 70193.82396 0 21042.1847 0 29370.25252 2840.623405 29190.08911 4637.510063 40179.96215 2374.385948 5212.60161 4525.110277 4815.066211 5063.629852 2100.151992 45457.66002 3445.97134 48153.62704 1914.683775 0 45084.02709 2.100433829e-06 0 26603.3193 30054.58186 9707.981805 17203.73628 31589.05947 47258.41672 0 56833.91718 2142.995332 25472.35685 4403.946476 5683.356644 0 82.48383108 45253.35519 0 0 31861.42764 38526.51421 4512.047478 42664.70662 88.82252735 2392.174335 0 34229.35483 0 0 5114.065795 0 1994.028444 0 10483.29069 0 49199.33008 1381.669483 22122.23371 29078.09066 0 20417.8126 0 21245.48136 13191.46411 2186.935411 12148.21231 27562.79219 0 2909.938602 0 13449.87235 732.8406759 36751.14454 2.907777946 0 6016.199423 6028.953699 4923.364336 60717.23263 12945.69823 638.1988886 29535.09381 651.7446525 4566.362993 4573.479372 1834.390696 0 46.0839715 24674.37668 57329.72082 933.4266859 63.66459947 65775.14876 1.965696645e-05 0 17344.69324 15392.80919 272.6163005 68.10588437 5.752719477e-13 10438.32717 57633.88566 1342.659462 929.4184578 0 50839.6914 0 50221.44734 27713.30813 0 39296.22497 0 0 0 0 0 34214.77481 624.2092229 30566.5817 0 1566.353569 46002.76092 3667.78595 0.00289245744 0 21154.99216 26203.73481 0 40381.73073 5981.814377 4882.585984 19.78357787 59555.7481 8931.133644 10945.04595 68929.64034 3251.320476 22672.58639 20676.84663 2680.639338 3818.032433 4902.028072 19154.76599 1432.245334 20073.95609 11435.84694 0 56377.44844 29780.03532 33105.64544 191.9124046 23103.81565 17102.20614 3310.156716 0 49578.56723 0 8010.042949 27199.65209 0 0 0 1.342310174e-10 248.211416 21677.18223 42.70085456 33475.98143 29635.25871 19674.04908 23935.46855 6861.336068 0 27308.12337 9357.208385 26005.0284 0 57.50628681 59322.80223 17083.35928 1363.716506 911.573241 1875.094875 1282.275638 41.82467991 0 4401.299788 0 11046.97251 2196.515458 0 0 959.8121096 38893.02075 11244.24257 1.767467112e-15 0 69.09750953 5220.805849 0 72.68231496 4967.453868 12096.18391 35377.99264 7431.833867 0 9277.485661 26910.78521 1787.279702 0 0 18947.42422 0 18220.27313 0 0 0 28446.44052 6834.757985 2.40063797 0 0 56267.0338 1928.326799 0 5174.726925 1247.610782 0 0 0 966.3482371 1182.218768 57.29865472 16193.72991 3489.781576 6278.818429 1966.403548 3564.492851 2432.569155 3554.161799 20769.56245 31884.46162 21774.79482 5476.888519 0 968.3077169 7880.791486 849.3837014 1405.15127 316.8084874 1513.222095 0 +0 2460.678761 0 0 5828.105396 3596.916319 0 396.9364142 352.9429156 18452.69475 0 0 0 44240.6611 0 17255.28465 11266.51722 0 735.4629559 0 27927.79773 210.8063098 64956.65771 18386.51259 0 0 68515.48326 49912.79603 44378.79378 583.2683095 5374.109878 5131.107893 0 0 412.5427906 0 6690.055482 6092.392055 7253.469777 41678.193 5107.325261 26905.3091 49363.05367 12593.14585 4011.566254 13795.85977 3839.285285 1917.812578 69551.95972 0 52016.1888 2161.648488 18820.67794 6639.85323 0 106221.577 3861.132909 0 40640.43527 624.2315011 3998.148698 9900.77091 1463.251605 0 45422.14295 1804.451124 13300.52406 0 0 0 25413.59073 0 25975.65829 17025.64525 0 4791.256275 0 15914.83239 4677.080922 69.80883412 3091.510034 9645.27879 5181.425267 0 16815.28349 81567.71862 91.2764097 124.3580677 264.9458851 3070.74891 6296.980713 0 10795.95379 13397.56635 5900.972523 0 0 0 11642.68952 36559.2165 4869.397714 70.02841154 4713.410649 16293.9597 45309.84389 52167.87565 12259.52133 27444.63718 51300.41949 19574.67284 48260.90899 4768.728161 0 23156.61092 50.28466747 13493.40507 8745.562626 1646.731848 7068.273255 187.8763835 8269.234037 14619.40277 56731.41757 26.57367805 63927.08114 9836.63067 0 25481.62346 13705.36477 68104.20295 47715.82795 15262.89531 979.3478636 1473.622642 50628.02042 0 14301.7941 0 1084.321243 0 121.8726924 17112.85331 4522.062498 4835.306261 8809.814543 12098.54868 49082.39415 0 0 15374.66333 15107.55547 0 39007.84239 37941.98244 2.369131839e-12 11231.13277 0 0 27263.93682 25469.98473 27569.58906 5816.965849 12883.82496 2856.310756 32473.91603 19207.13528 4054.356649 52970.45334 36.48755655 13337.96311 13974.68796 5076.760822 265.9243071 13144.45019 19590.19855 14841.32255 33335.52416 0 0 0 0 3881.944878 0 18113.94192 137.0472482 0 904.2885526 4780.610334 20258.93463 0 2231.610367 47763.57848 0 1456.396389 60044.49223 1202.562675 0 0 25969.89502 36099.30273 71088.69637 9238.794289 30005.44694 36043.56642 1032.270204 46016.3341 0 451.6935851 24941.45726 12463.67384 32623.39312 1594.635995 53.6980145 7999.457493 0 6804.725353 0 19883.39412 6002.706824 1615.291174 1819.241582 124.4544027 52897.26278 0 10172.28547 42897.25401 77692.13106 6845.049516 4959.69178 0 13.1007257 20755.0468 20654.2658 12161.30851 923.3262467 9.551410792 1711.973495 5935.306493 0 12801.84957 134.5190597 30413.81405 15915.33377 0 3089.060802 0 5427.908631 28816.6753 0 0 5386.901593 56109.37985 4241.520965 20751.16317 0 1048.407201 407.0210816 66.70284866 0 14701.42628 2598.354924 3756.127919 15471.72062 28795.85673 0 0 1452.544393 4977.127467 0 1948.483104 853.6708252 4035.827582 33.75191429 0 0 40855.80942 25306.88795 25428.42388 3666.197757 2840.942684 0 0 2807.185801 10684.38091 0 0 104.7205101 3468.669817 4631.214697 23517.69574 32392.78478 0 11712.42706 0 0 42247.78968 2449.805476 0 964.6345027 0 +34140.28968 2861.488508 52172.12488 0 0 14234.48593 58805.54287 38547.30429 43115.32464 3802.38456 6144.119296 0 7545.318985 13650.6635 0 29881.10499 93.55219221 26021.06125 0 32303.91471 8456.255974 42599.89486 0 4362.765126 0 132.812747 14000.1044 11105.99348 0 1628.970306 3980.728458 3438.738458 8057.531006 0 0 2271.827592 1890.95911 12749.92785 3978.852397 60405.26649 12455.61469 1352.80573 57948.27463 743.9945825 33269.66341 9970.832731 6073.791069 25374.71614 0 0 48341.39689 0 0 0 329.9871501 0 2.114305857 5014.038717 0 29983.50921 15173.28095 0 781.1739358 7107.333058 42425.61383 3456.006147 0 52076.95284 80912.43527 3883.5794 1327.517201 40004.28418 10519.87043 0 0 6242.590118 8504.402924 10984.30711 112.4684326 1773.822184 11423.59436 30313.83785 701.0303329 24408.30013 45948.63786 29394.45797 11622.48715 0 127.7128352 2360.364345 3294.052687 9942.778835 27779.95433 2120.223073 32.57067361 3.19711204 26765.54456 0 26341.99599 2522.716945 4.422372987 0 2639.954236 27431.71801 0 0 34268.42199 15680.76014 0 34691.01232 0 20335.0357 449.6912711 21471.14839 4682.317378 9695.006364 28567.21205 0 9502.090213 0 95.72604707 1962.008321 0 7150.753769 8536.164279 5917.10084 45.60777839 1525.481905 484.3299017 4649.416782 101.5390222 0 0 14495.79966 0 12660.07924 0 409.7748871 218.8884652 1237.415159 579.6775541 43900.33081 2507.250393 21872.33681 6758.158943 56433.09174 21201.97015 17168.41238 10586.64374 0 52507.79871 0 12150.41246 1715.646006 12736.33997 4682.893729 2876.893543 21642.58832 13653.75921 20003.17322 0 42447.81358 15062.39381 5750.460708 26179.12602 23895.2869 0 2603.167445 273.0257666 0 21036.52504 649.9040452 0 32780.75212 0 0 0.05364149045 29748.43627 1461.569945 13051.86506 19796.03015 1725.711658 0 0 3918.510974 23973.55662 4.155193004e-11 0 5649.949372 4753.011393 0 21188.32002 83994.77454 11943.30541 14598.12417 0 4574.741977 4255.135429 225.2401051 8840.749319 39510.58515 13020.76124 0 1956.827358 3913.802706 42428.13474 50.92691632 27622.23314 3780.700735 24933.13731 5.339855223 0 0 3335.556895 4847.602784 0 1000.929112 0 4874.695362 0 15054.34211 8280.960455 8423.25022 6893.014106 35.2645988 4907.318403 2171.350834 0 53.95818779 7648.043997 0 0 0 1040.192153 22.94292688 8455.065186 0 5686.886624 5865.255653 0 30290.40741 0 55758.47423 0 26825.21081 7849.031223 0 0 538.6005478 2186.004418 18638.88931 2114.802747 5384.653264 5155.059852 25325.0958 0 0 0 146.7662762 12118.84 13261.65453 0 23600.1541 15426.96026 49.9782259 0 0 2299.233814 0 22499.02325 12011.82467 106.2260757 33555.6571 1079.810503 0 5963.868161 0 19989.28679 6310.014898 177.6899353 317.4445777 4811.836013 0 5468.23279 2.215722556e-05 28275.94955 6624.581219 463.3576164 0 21396.15371 0 0 0 10933.69503 0 0 3198.144426 24411.55053 4037.948711 0 +5676.452432 16417.07674 14076.14594 6639.672411 11980.4261 11394.03564 49458.37058 26179.853 9174.015592 0 2399.758003 50.17374178 17308.28505 118.9092274 9177.004785 4777.69366 0 1944.586037 0 0 5900.469101 0 0 0 39488.5744 0 3009.924891 16242.23137 0 0 4593.798629 0 12214.76605 0 0 0 27936.61763 0 7216.351016 1349.951312 22293.64998 12111.2324 15159.46502 3780.802438 588.9573371 9338.743399 4955.320099 4025.376245 107.6051171 0 68982.39469 0 7613.245375 93.43565778 0 63004.99613 707.0671224 10141.0483 0 0 9305.380199 17084.56151 5230.352348 0 0 4053.678741 12838.47997 0 0 6296.220309 5420.336004 0 14004.35115 0 14447.11507 10833.7751 773.3939918 0 13990.1586 5393.886741 5513.056059 5549.072962 5746.341081 1985.287818 0 7567.371005 19891.24801 0 17430.82506 16323.22912 145.6100507 2433.690223 26828.01506 5171.530327 15519.47324 4013.550666 22329.32024 9916.926339 36614.17902 6068.949744 0 18511.23188 0 22340.45882 4782.069665 22475.51758 0 24844.37422 0 32548.53302 0 293.4803243 665.1674914 4674.050147 18153.29129 0 27153.18971 2951.155347 142.3307953 29653.60419 0 54459.53502 2389.760857 6869.902215 61399.72901 70907.70735 130.1985704 27358.74117 13005.22894 5472.868632 59035.79395 27638.72171 1649.133026 3753.707663 9811.080332 53.64384414 225.0355213 45146.98431 0 58826.9065 2913.699153 104.3879335 0 0 0 13961.60879 45766.34926 0 37549.66018 17829.74491 0 40332.19261 0 17018.34417 0 478.9715537 43769.0277 162.3784164 1.861876343e-09 0 43066.88896 8737.066354 0 0 0 36649.72175 29148.00858 14342.86136 69.05221904 4896.499516 0 31873.33176 0 691.7383197 0 0 16427.37117 0 549.318426 1041.62133 0 1937.592261 15661.03183 3953.221744 15304.46234 25636.49026 7252.082326 0 37407.02234 37642.26639 39.12728052 3724.397914 23427.23379 7.852323721e-15 3847.751893 28663.79355 0 67640.31956 0 45143.63976 0 0 4208.841774 0 8381.272225 585.360473 38699.56956 57208.9796 1679.089397 0 8526.71862 14112.89097 0 3258.002803 1315.00032 2189.062727 0 1858.1798 29930.9722 8788.871316 0 402.3663161 0 8766.646232 6642.108624 9278.3266 5819.41856 11092.60045 0 45069.88021 0 10644.63513 12762.92439 5054.96568 18789.35065 14021.81171 11290.93405 3206.770624 857.3167241 14693.91842 6350.47798 49339.64095 0 6673.059157 0 48.04572902 0 1246.483896 2960.965983 0 412.3167752 48170.3785 28167.6856 261.9852724 10971.28036 39511.66684 15765.4936 25584.64124 0 12468.13524 0 0 0 0 5978.941086 0 818.8836725 21638.94818 30601.3367 0 0 21957.82902 12255.25135 0 90.87226356 5094.067248 1597.488775 35271.22205 0 0 0 0 0 11598.89492 0 4215.723532 5011.089177 264.3073964 16119.31679 1081.876995 44636.62413 2161.708558 44.81130819 10782.09331 6522.501587 0 0 0 272.6942805 4289.766666 +510.7275454 0 2503.986157 10624.89731 0 2254.983576 503.3774013 32253.43409 2855.301126 56624.51582 0 0 11671.40588 0 0 44522.26113 12209.3411 0.06842661685 1301.964914 0 0 15487.02423 17404.88725 7471.862908 0 0 19252.78577 12442.05484 0 0 28492.95744 0 0 7188.333694 0 54544.23526 3454.250111 9228.585356 0 920.4234704 13114.55584 0 0 0 20663.40814 4784.699121 0 0 0 14656.4859 884.6397878 0 0 0 162.6198503 17251.25529 38147.13899 0 4567.624028 7814.736291 37.39817068 0 0 0 0 78890.67174 0 3275.320283 1088.660862 0 40186.69457 38016.87648 845.8195639 49010.69213 11772.09952 11445.57829 0 0 21204.23395 6268.072769 2695.846595 2447.303335 10831.98845 0 494.3105728 11609.44524 33757.94616 56342.50805 0 28239.40177 61655.91376 0 36659.48344 26022.71651 26533.91423 1801.068068 18272.49632 45647.59229 24737.30152 12597.60389 38533.86077 18973.90547 3145.733038 183.4084838 0 360.5496189 7028.822908 17728.18387 167.9969596 2610.605295 11518.1681 41.95029673 4880.801677 2481.637867 0 0 0 2697.827748 4659.654148 15025.71589 0 3897.888109 2312.47571 11312.80159 23196.49651 8089.133961 4293.062325 68081.57285 4379.28003 0 52354.27047 48260.04523 0 62530.51639 73506.04437 53973.83085 4582.124258 51397.27421 0 53155.57218 42920.23441 13901.02448 4596.772653 0 14742.51008 22413.76643 14694.10657 0 7149.76567 6617.856942 41362.70942 15633.79637 24801.97435 373.2120634 11827.40842 55018.45143 6250.425806 9410.4564 33504.88853 6.951833799 68621.25909 1729.161171 800.0942997 67382.21278 419.5823325 3988.053876 17446.25361 0 217.6837789 0 5573.150452 12.59738478 16309.37007 0 56055.01059 0 0 19868.4465 7454.973971 3102.963507 0 12122.90474 37666.79528 8006.888503 59.68616239 0 65919.72644 0 11520.12897 45430.56451 60508.36931 0 41305.29255 50865.58093 55132.3213 0 24170.27882 0 114.8841258 10868.47669 35489.43741 0 41666.88102 58731.38 0 73029.37364 19814.97632 5623.992551 27203.94176 2273.341394 71737.60883 0 4108.936658 2202.44768 0 0 0 0 15232.4127 2356.766888 0 32129.77563 31530.17023 4253.703792 28318.84241 3.500731629 278.2165854 26179.61917 55336.47662 0 27071.84038 76947.01296 18432.67166 16289.50032 0 15507.55281 22916.13174 0 2.279767661e-14 14563.79288 0 75.39520719 0 25364.79892 0 298.2503743 1705.54856 8153.590714 0 9437.361641 0 0 6244.628017 18498.0263 0 59552.73903 49240.4258 0 24401.56084 50560.2275 987.3891969 627.2433767 32803.87546 0 0 8304.577331 15506.4277 1299.481954 2847.782875 7608.431321 16663.63404 0 133.3807587 0 4251.672433 0 102.1848097 0 10166.13939 0 60.67427883 3918.167726 73.44132187 3532.432179 15072.53175 3951.291568 191.8764478 47238.52356 20736.83147 0 0.004394933951 15813.04275 0 0 0.01600474192 0 25896.91361 241.0258537 0 0 +0 10126.6633 1464.608628 0 44.81320346 0 0 0 29354.37634 2524.493781 4740.590227 0 0 4012.367816 0 230.0936692 38041.09685 0 4265.579175 0 1498.993877 2574.638551 0 2080.086723 32278.14051 0 0 4089.156294 0 0 2145.457489 26255.94008 6769.922533 0 60667.92697 40871.66625 468.2604343 0 13055.02308 280.2434903 4957.956759 0 12822.24702 38535.10848 63412.12609 0 1314.67636 2036.335976 1045.758465 8027.745543 0 66239.56793 47526.82075 251.1446706 11480.46093 9638.804733 0 366.7863271 1348.276949 0 0 5980.125381 0 0 0.9279443018 0 1939.737425 26869.72124 13223.33999 2954.70483 1448.688211 65613.52999 0 1834.492808 0 0 0 0 0 24713.24633 0 49613.31135 41196.40263 2113.681917 0 36364.43851 8589.993612 0 16308.84477 24124.3946 7849.222053 3511.745636 0 3400.049554 18807.81062 0 0 73.22491516 0.0001997557738 15149.376 27602.46295 0 8127.820296 4183.872136 5451.427516 0 0 87121.84073 29543.84347 17868.47006 23309.03433 203.7867362 3213.461695 36208.29873 2399.635868 2357.748524 1253.173892 283.8784176 11169.48838 7530.855696 9460.816341 33813.57049 11977.97605 0 51653.56136 0 43326.90516 504.5068424 3080.400397 0 10318.99735 3040.607203 7337.022974 4308.742812 0 41.45949828 4725.429951 6915.258152 45480.9031 8526.701949 25832.35318 10984.70231 25081.74651 0 0 43944.05793 1239.81847 19013.20776 0 4.648689852 0.844225197 1763.777418 7896.870008 42118.6562 19643.0712 14743.82394 0 3275.898945 2652.689613 9257.178191 0 8559.476224 95.0501527 67068.84785 0 37827.47386 0 4410.691185 27704.33531 72213.06734 24043.74935 7378.956308 11707.8974 0 38422.06884 1161.57941 21186.45525 4984.524 8925.827633 0 25838.50791 19417.99042 2266.887063 30719.28368 0 6812.378944 68438.38288 1785.599089 16691.38368 0 37469.09626 20686.94521 26604.59997 2021.146715 0 32950.41251 102.7375054 0 21703.41292 2666.529286 4315.069364 40484.70346 0 7423.79844 59.27059366 20286.36902 2674.723284 0 71370.25812 16715.63707 491.9290623 9680.535092 3739.441506 19525.11344 3237.025788 9.393183109e-07 0 0 4714.354429 27974.00958 1031.769286 61866.40377 0 0 0 314.5141542 35319.69498 2608.573478 4984.970065 5582.609955 12487.64675 56793.03403 0 0 13745.52357 8990.825123 30168.72888 0 0 25518.44181 1364.899778 5517.329699 21634.54487 41720.37021 18423.41885 0 5911.323109 19866.1948 780.9242764 57967.53915 162.3158083 43567.41248 27772.3749 85.24837476 8794.933325 12992.03775 27314.56059 21205.74425 1.089116754 8990.475686 0 27375.06784 998.0026809 9664.811533 3086.660137 4897.316223 0 1.790236077e-12 0 0 31619.62794 2270.73538 6333.283569 3628.813164 0 46.51860912 0 5983.027507 1735.402755 7728.96349 0 4118.398099 19975.35617 32515.86021 14807.6937 3101.85809 21.59472482 1396.987247 1305.400285 52015.75527 0 89.0067759 162.7755433 49251.277 2592.404884 102.1290359 1339.248313 3179.336805 0 4150.477688 +0 7954.7143 40055.20501 0 6223.195197 11058.57081 0 0 13784.626 24148.81346 184.0794893 3569.315478 118.2858957 9430.192831 0 0 0 24751.58003 64301.3605 29758.97629 449.5279554 0 6294.780063 0 0 4916.825925 0 0 0 21125.45384 477.6519106 3.245272356 4425.098287 10706.31479 0 2641.327169 9997.986349 1727.122094 37839.28859 0 0 0 0 6545.134336 38898.92122 19862.45566 29366.85969 0 0 4573.810673 801.9462376 13073.04843 30149.03104 7197.646213 9195.963444 2759.341385 0.04821495378 15360.25928 0 4265.936722 9502.363564 2674.977498 0 0 45024.42819 36968.48894 0 0 0 3718.397798 2.540073429e-06 52830.04877 0 0.09095490263 0 27455.47283 8937.880985 0 2912.561881 6066.847111 0 2969.408417 34246.77829 0 0 8541.138405 30054.19941 58034.8724 0 3395.237696 80.9821782 0 21040.28678 39336.14155 664.8581035 3010.320412 8586.112836 22476.09171 41659.31671 279.107695 0 11739.90804 4459.069706 9884.91249 0 13581.71526 5466.790103 34125.51385 48462.42704 21739.86752 0 917.2283741 24867.23704 8930.558035 31739.11285 12137.65078 0 1968.353819 16344.06634 20155.5765 0 30315.9611 15615.39731 0 0 0 63659.04844 0 2823.220614 28306.67109 22255.71147 20385.61176 4710.670768 1115.1276 0 4.604590839 91.72998887 80240.58535 36618.16597 0 64592.01092 16564.79554 49519.32806 41.09120495 7576.388149 6505.665505 2552.763393 60982.63547 56959.91726 49256.98684 998.3893574 36876.82394 6228.001132 18456.2799 6160.541178 39146.28444 3634.473504 0 49124.47293 131.4877711 98.69231437 5386.084157 49181.60908 1073.469058 0 13193.23743 2319.603732 2616.11172 9.900036894e-08 2522.840851 51692.88978 38530.87613 47734.82284 0 15144.09288 0 26801.45903 2789.238695 11696.21479 0 233.8910446 12499.43464 44148.97679 0 10179.37773 17990.69306 12089.81457 32822.0494 22404.9702 52928.88837 0 2313.581915 9485.835337 40031.61865 0 79458.12689 13884.2886 0 28398.81658 5741.286013 15956.46984 16.06763398 27159.02131 0 0 0 377.3363386 7857.855858 0 8658.307813 68774.48803 0 0 808.0318522 842.9816059 7768.649956 40690.78787 1814.07507 883.3132364 13781.92135 59679.69171 24986.39752 22349.7499 0 14652.81256 40968.66063 10130.04627 36552.95415 2636.107993 0 19650.43417 3923.314219 2370.157737 53263.61208 23995.49913 20714.75434 0 359.3403713 5851.710657 0 21.23849733 4.111110018e-07 0 5151.526629 27278.29939 35664.05895 0 0 30640.44943 0 105.2609556 10157.43243 19928.10402 86464.54375 98.55551989 823.2076478 5941.086778 2021.537921 1546.618363 74947.16582 387.2602465 16463.63333 8500.39793 2626.783973 14592.22105 0 18962.09373 14461.91413 0 1714.530059 5050.347641 0 0 0 2164.001915 16865.51113 0 0 33213.18238 0 9700.213457 0.008156665819 621.2267654 28324.48457 7793.460888 4517.020228 52049.3335 0 8527.58646 15121.21218 2858.798009 3153.670104 1593.597541 27410.6055 312.6028867 3249.077921 34198.16234 10010.28023 0 51859.57432 +46781.9023 0 8320.53451 0 16698.46646 13647.84629 7039.586924 10367.09804 3128.811004 19472.53291 0 29.01587105 0 15560.89533 0 12005.40698 69.92592354 18072.6821 0 14186.76627 8576.12783 4705.047357 0 29348.19936 972.8875911 0 0 7117.240259 7493.859691 13321.43041 41752.73767 213.5635851 821.803943 12410.67037 32860.94748 3431.551477 8859.889659 2675.337343 0 0 3384.544824 65836.09028 0 6886.961475 0 11209.97478 40416.58465 109.9316082 32093.19904 1875.352284 0 17652.25621 12738.38238 0 36933.93054 1073.381182 18948.07424 0 23393.52525 44.6296875 0 4292.483495 20878.52481 0 59004.65713 0 0 0 38431.57778 73167.18253 429.8408213 0 24666.00534 0 2987.8561 5088.662511 3951.57527 1.325884593 5436.199813 32936.89762 30328.13865 22070.59527 10305.55616 0 0 14927.86562 0 3644.029479 669.055618 53442.36691 19302.11236 72195.60843 16986.89521 15570.30713 17110.85643 0 238.0056513 0 2082.161731 0 0 36.26130826 18.3105859 145.7314953 1259.217786 8170.362347 3115.54336 46339.20181 0 8278.597978 14773.48883 48805.91287 0 0 0 3341.442601 0 36444.02676 0 50624.70682 692.8097541 12177.70383 375.417153 1998.759024 18253.57259 17095.62969 0 0 31954.22576 49618.66293 334.0725585 24315.44892 6000.378306 0 43727.3314 51602.57221 0 79720.78394 0 0 0 2722.765733 42285.84841 10202.64745 8592.0866 21583.65293 5.705853937e-05 1622.695458 45359.80438 9215.042685 49370.04173 1319.38617 0 45047.33388 2274.415188 0 1386.625503 9049.560689 34986.89789 21186.10715 14604.02615 2529.789081 6487.646725 10308.2684 53668.73082 20013.36399 30670.34926 44235.74914 4209.138454 59556.84043 334.3871256 726.0364501 17982.68909 44544.44477 26237.67353 0 2488.863988 65884.54871 4645.589981 5364.372296 3774.238197 3133.473303 3338.70538 0 2251.999516 305.2370648 10966.82674 53021.99791 39380.76291 3078.511898 7577.213711 0 0 26183.58125 80818.99303 2247.154144 18836.22606 16311.81964 18.13017883 18589.59262 0 22522.23611 11137.64438 2647.747956 2402.380652 8531.382174 0 9902.653654 4305.034831 2281.658303 0 15422.60905 74.29950484 168.0524666 17030.93851 5273.926785 25638.76264 116.066274 1935.972194 9596.632871 974.1827682 2769.569164 7725.057086 3663.283797 2636.19293 0 5255.288953 3819.321892 0 5258.374048 26665.75628 0 3538.789279 14432.73784 20620.89122 3089.61208 5266.086146 0 2277.527149 0 51127.16397 4550.169895 0 0 7984.754651 0 1838.365448 20204.2914 151.0963411 0 0 14345.25146 14143.28754 4162.429751 64.90714866 6028.178943 0 0 9127.603249 0 0 934.2882642 2113.216639 0 0 25843.4213 0.02673668374 0 17238.79408 1239.598102 25328.93132 0 0 15251.48614 80.87488542 13881.78022 10122.54111 0 33067.72661 6267.151204 51601.23597 0 9634.509417 2416.840663 24538.70466 9836.339249 794.9124982 11701.54322 0 0.001518293406 7727.324758 2958.459606 10955.925 0 0 0 3374.859297 8849.563918 3734.92765 721.9953969 +1151.593084 9563.833191 0 14591.83932 0 0 0 9829.106745 0 210.427364 0 53926.8334 38534.04588 24115.04897 1841.847029 0 0 0 25921.96136 0 31225.07414 0 0 4593.445485 28750.73732 4150.956592 0 33937.11144 0 0 885.2487271 359.76009 22506.04304 11662.4862 15535.03166 4585.715037 0 4848.78849 0 0 9146.626559 0 15424.88545 0 3052.547336 6251.55763 0 40787.64251 18171.5737 0 1911.344319 4480.558064 0 2361.522101 39563.67938 1845.570685 1056.32162 0 6612.920716 1565.312689 0 32467.32803 5786.031919 5890.786981 37.61997497 24092.45716 30599.1921 0 0 29275.42068 3637.098445 36036.47236 0 13035.5831 1639.215538 33880.38972 46022.41201 0 32022.08977 6233.870256 6801.183327 16328.15362 1955.570093 18033.76412 0 13477.33649 75145.39925 0 0 41155.55527 7816.816737 5110.652767 890.9624765 17157.62733 2492.615082 7902.451562 13179.15301 19810.022 0 0 18796.58035 33220.3247 20583.64741 0 1743.432398 0 0 0 32131.77164 5682.157738 15949.05362 56518.5706 0 6721.439473 0 1826.232493 12096.33985 27099.68919 22539.63831 6669.356411 28434.8831 21565.39072 11030.46005 14998.97414 2509.489498 26278.26812 22935.61252 0 0 48044.08449 0 9148.734873 18829.63073 2393.533812 1744.064247 18975.02527 11449.44729 0 2211.050159 9943.076271 10121.15625 55939.09024 459.5211183 31853.34079 55835.89895 1229.498738 23316.22652 0 4555.974873 0 15560.21525 10637.8592 11776.04634 20713.91199 66484.55545 0 38865.12438 0 52132.52495 3994.306207 32945.41214 538.1007646 653.676939 55.44023123 65584.47829 7723.914161 11583.17978 1227.488129 48889.37454 3451.073916 9034.253162 1555.481181 2618.12229 16219.10511 9372.43789 0 5103.504362 4208.756683 88014.34264 1431.69663 16197.58109 7295.847193 21070.13897 0 9603.038041 7311.618147 8724.308778 38845.428 3786.086779 1277.40486 0 902.6815124 27034.336 3568.495577 0 0 6066.194442 24624.31577 0 18427.52031 3486.86985 0 0 2349.285767 15522.41417 542.6786697 20670.30472 960.5560259 0 0 2719.054132 168.2045815 0 0 26866.86925 22396.21632 46332.09842 37789.6423 5888.309418 0 30000.73932 24367.12067 27.09098537 28.41885822 16611.55748 45216.03906 0 0 2821.104317 20914.19877 11464.08541 35983.17187 83.4344975 0 38325.57831 13128.67874 10283.72372 37124.16141 59583.78796 0 25535.03426 0 3655.300304 411.8775347 17083.86961 1737.699822 43195.93067 3116.036833 1968.176118 37976.35019 0 90.86614116 0 0 191.6135663 5.317383459 31769.50342 0 0 6770.97449 8304.005436 6257.609356 2043.915463 17093.37501 818.8779246 0 6125.856352 3718.948064 0 6008.262019 63625.14699 0 2480.032927 2537.818499 2234.34034 114.8074941 25.9983866 5321.241189 0 7719.588914 0 38.55136755 2743.96234 6360.805928 4521.946139 6928.700477 0 0 2346.758388 0 0 2633.218418 0 0 0 0 4646.979989 13070.65429 0 13317.68563 +0 13422.19518 4205.238773 3845.541941 0 2530.864001 15224.82335 0 0 27265.84914 97.77953517 0 1790.520114 212.6808337 5132.048462 8538.211029 66355.90412 35.51073169 18857.32681 6562.786169 2270.789761 0 0 5173.677177 149.5203069 0 35061.06659 0 36145.86502 0 0 0 0 0 0 60997.67962 0 21152.80827 35933.17655 0 44064.78125 0 22955.56429 2433.874599 744.2659131 0 24688.28578 4.23396267e-10 24227.11678 19530.45973 2183.754961 0 0 46644.37884 31237.79115 10636.32086 3110.976485 20035.16337 1951.115344 11410.02846 2599.421367 0 54920.93592 7625.222744 0 1598.570235 0 10938.41045 2104.805668 22093.79411 0 44631.88851 2512.114027 3757.056513 49389.01463 2304.307811 1732.877737 9725.981774 40739.46492 18154.65103 17630.15471 30181.21942 48060.24305 0 39234.40261 14849.31744 11186.53364 0 647.4399206 59057.69355 2694.014872 11349.68534 0 9125.979293 0 5.952153771e-05 0 20316.17863 5572.105475 44764.7949 33421.61373 823.515105 22446.9403 0 42757.98121 1474.287262 66.15936175 0 0 40659.54144 152.5990023 39153.46307 0 0 29.46819167 32492.42035 68506.45463 39482.79197 32490.01822 43679.79702 3543.510264 117.7121155 27188.72881 0 1885.485248 8171.796062 3395.58928 6497.448052 752.6412477 46456.55028 5631.628444 3200.250491 0 24345.02749 64634.77521 1.575791849e-05 8520.557036 0.3152370039 5107.344083 31341.76042 25726.16945 0 33090.25273 0 0 0 971.195533 4949.348126 0 57865.11307 30149.32603 390.0330498 0 45571.96819 2283.711875 0 6098.378622 137.2673684 14673.40349 632.9668337 14640.41053 33161.49453 79010.06955 11754.48026 0 4638.513756 50220.498 2200.23323 11052.48556 25319.26271 0 3982.675895 721.690058 58556.96645 1210.444165 40098.11465 392.9685551 2185.195501 0 75482.70175 8834.199192 3055.603566 7352.774592 50971.3938 1518.260077 34445.59361 23396.61288 8.233289742 0.1892934261 0 1034.699892 15026.7925 0 4757.069843 26120.16574 0 0 0 92.23912056 3152.35069 18410.5093 0 17571.15612 18865.29048 2406.680147 21089.97531 22553.09556 0 20537.84001 5303.090897 0 23767.84911 3249.636638 33982.47059 2740.134845 63.97257482 0 0 27692.56187 222.1312723 19435.55391 4372.454584 0 2743.354575 11005.97188 21966.6088 6000.047984 64627.17429 0 0 190.9915369 3024.299526 4138.25188 27770.66991 0 0 138.2094994 19471.32608 0 2265.437004 2277.17666 0 36120.10672 0 0 0.1256234529 0 703.0013756 275.0313772 0 0 4667.190605 24054.28935 0 3068.209544 0 0 66.80558516 0.0001370357516 7341.882821 27789.0407 0 1771.48495 0 9399.052849 2816.538026 7571.617554 0 0 23468.87878 0 0 0 0 0 1656.902946 178.1671626 0 80213.87011 0 0 9385.680777 21813.53803 0 28305.54048 7337.607802 45933.59732 0 3637.136024 0 12288.67498 1271.967881 0 2.144344323 0 115.3068102 0 993.677004 1972.140195 2668.900869 +383.6529252 0 0 9190.381263 3051.062793 8586.366287 0 2047.640531 0 0 22685.95347 2.899570816 3086.612495 4124.638377 0 0 10952.95849 0 57390.79785 5502.228902 1435.616422 32404.51144 46.62858456 27751.79005 0 857.8651816 0 1488.050669 8135.20266 7151.024853 70602.12351 3177.950441 38680.80312 32991.69359 0 94.87276199 35.2789191 551.6177323 21648.22955 24.27156249 4622.567002 0 0 4395.406304 345.399322 29229.26939 838.5976216 0 8035.001086 0 9814.83402 0 991.0102882 0 0 0 53.10411667 4392.248844 0 20282.46979 3906.392256 659.81819 10221.51096 2954.815791 10876.98464 30681.92892 31200.86099 0 42573.3439 0 27323.28284 623.5300464 3204.645033 0 42587.22351 10788.50665 34171.60159 22375.92687 0 0 6095.027897 0 10855.2558 48508.53558 1031.001176 185.6687477 14971.96004 0.004895156714 45443.08993 38271.8043 5522.483297 0 76.65727242 0 0 15382.94527 0 0 0 0 13204.63689 21272.55342 8128.67445 14419.58961 23519.17545 2858.508978 0 0 52047.55175 7123.980754 8777.717684 0 17362.78955 0 8034.968537 73257.27772 37015.10941 471.1011072 0 13113.74686 2306.17989 48585.53133 0 1923.932913 2095.773019 0 9637.646917 4043.932908 44.02779362 17170.21623 19227.81954 0 53280.57223 0 4920.909267 18940.16858 479.4905122 6199.205191 0 9.998799384e-05 3130.241085 44063.19567 0 23517.18496 18246.61356 12693.45172 19534.40264 9326.141018 37723.74812 29880.37273 0 49141.93497 44600.76758 0 15942.66383 14003.36002 21855.41144 45938.30376 4047.334119 4011.355815 13918.11512 0 0 421.9832838 53.39102568 52323.85226 15147.40279 24053.48577 7886.620373 24909.38157 299.9173462 1985.167551 0 11192.51282 23024.71101 0 12664.79063 13076.44161 24.08078725 5769.75579 46854.94423 550.1681401 0 0 6066.569139 20273.58083 314.2726833 0 1305.711428 3773.230858 84.08231048 23672.53697 0 3442.081282 13199.65567 728.1434285 47615.23652 41249.13453 15711.88161 0 0 6953.647994 1824.876078 19485.33141 0 15.71805262 99.75302574 25977.52395 0 18462.15119 34970.9051 35012.36361 8460.091122 4132.407077 0 20563.59175 1213.833292 605.4183399 0 6742.902213 4.207615942e-08 14434.17748 961.0450485 10205.05503 3923.536909 42.54883438 9026.04851 10420.34056 0 1419.74595 0 2358.941456 0 0 0 15334.70077 212.3053143 782.3384825 1270.691164 10869.50082 26820.25873 178.2757995 6.233217718 0 0 0 0 36482.99657 58514.4944 77.54906842 333.4935552 2935.157547 1085.31012 0 2200.838635 15463.47068 0 0 24666.46616 19515.2858 2052.21869 10821.97747 3.594450385e-08 889.6589389 2197.789196 1135.377398 12178.60023 2728.820572 0 427.8159539 9527.298366 7109.988953 3023.546324 1065.345922 30720.97079 8933.118563 7746.763138 0 7864.470029 0 555.0243382 1831.251524 0 0 572.8858327 39655.52789 12135.54223 4289.265714 0 27413.74786 4322.993723 52.44734938 0 0 17807.55114 0 1.038676917e-06 0 0 11878.43715 +1673.469923 61158.08129 16302.83158 3712.53236 0.08655481128 53922.71339 33373.09653 41468.11014 16550.96377 0.002716448449 63328.60658 0 0 10996.37333 1940.343109 0 10285.59865 15569.92051 6947.879334 4477.775536 18096.13311 0 62524.8297 0 2801.106381 17003.02862 0 2367.135933 0 9698.012549 22891.9015 0 4711.524388 13793.59412 0 14811.57605 1725.878957 0 1425.34024 0 0 2034.892283 4479.831819 0.0307687152 30604.56495 0 3447.665206 0 13997.24913 0 0 22937.58987 1860.109475 0.1319946012 1483.81995 15758.0524 0 1914.075224 38218.62321 841.3435564 40729.70534 41327.28774 4340.474623 0 47033.11708 0 58674.07886 0 15539.28226 1151.358961 8641.256808 0 5320.824312 17131.80976 0 24190.7733 0 40231.84611 5075.512602 106509.2007 61661.63919 543.0268188 18308.26444 15009.88565 7378.030672 20276.54206 3990.595456 799.7273875 0 2233.613573 54562.18711 43339.93675 9.59038708 43349.65595 0 0 2974.75345 0 6081.078912 0 4931.577178 0 9720.519658 18335.64406 2.079430827 2153.560285 0 10924.19067 978.9293725 497.8281324 9345.761641 7184.002285 0 83697.06373 12064.92652 47149.60396 5557.775413 3376.589379 9348.594609 13217.19482 0 7221.265723 15601.73952 1279.115401 19116.58523 17975.50937 36.01978382 4548.86172 2984.670896 2122.037094 87.83625645 5783.956416 37887.77417 4290.049466 0 42954.90387 36886.50914 7205.491361 2880.596231 276.9911892 24690.20534 70205.11402 3617.658085 22182.23056 70179.52403 9257.564097 41301.57343 459.8361835 3126.848296 28429.51901 10402.76898 0 26335.2706 28728.31207 22981.84105 538.3992794 0 8641.232018 510.4492077 53717.90435 0 0 999.7616536 0 2588.291048 34971.99173 0 45164.47219 12436.9225 14881.76557 52411.67707 10021.31216 34391.11352 28.99885107 5805.195008 3904.099607 0 33217.00519 0 2960.075523 2968.598201 1451.36262 33845.08118 0 7133.524858 65072.52244 172.9567922 56101.15811 12263.04752 4480.002776 0 0 1593.553133 0 43760.10212 27815.3679 0 0 2967.357933 11742.88728 18284.9466 7927.943182 7447.565074 104.1909858 29608.71548 12956.94949 25642.37657 3575.253596 17004.09293 59072.80532 1315.072938 56621.53282 40849.79946 64726.1466 1029.164509 6729.189478 0 0 53060.14265 17076.08642 0 68728.82983 1298.251618 4247.482054 3316.944799 4666.052668 0 37078.5889 21159.6002 0 27581.10733 19978.52072 0 1496.284225 3487.681569 54.32674142 40815.45845 5899.340067 1591.252933 17935.43919 28120.48834 41073.75254 0 29845.97791 0 19585.90552 4950.989147 4809.895775 0 7060.748576 0 8497.459804 0 6275.250062 46976.30614 668.1549941 0 39566.31266 32236.83176 23861.68575 17694.00962 4049.607526 28785.7658 0 1254.804482 1159.031116 2419.690842 55496.60702 571.7503582 0 0 39323.43599 0 2042.561922 10104.18928 0 0 0 0 3588.876383 0 23842.96853 14592.64474 2510.317189 0 0 0 6272.655928 13833.36754 0 0 53061.71337 0 15529.23921 44.56110943 25584.99533 0 0 14600.14686 0 +0 23271.76306 0 21637.48139 7582.347534 3245.02539 49767.30641 0 33292.3697 0 0 29.07216901 4123.491518 196.2893987 0 4887.879137 0 0 24191.50999 11120.43604 0 34252.72463 23315.49994 2237.067556 3925.850549 0 0 9086.503035 4659.82774 3649.507251 57065.53571 53.83987153 14877.12195 7894.853769 17260.39206 0 0 0 0 66600.59581 1582.287161 0 43585.917 7142.222352 0 10208.4784 21766.60337 1064.395932 0 0 0 31567.10216 0 58449.12275 38607.46227 0 12734.07111 5054.820321 7087.396552 24703.95391 71641.08357 0 0 24313.34636 49848.87318 126.477884 6185.380203 43803.87944 487.2003001 0 0 0 23877.74439 5279.934908 722.5995196 6351.145357 2853.038753 14062.70646 34382.57793 43866.76155 1721.754824 25493.90291 4662.516954 3764.014748 7949.18873 9413.962172 4359.656444 30033.52982 42803.4924 0 238.2966993 0 25171.54371 33837.77892 31482.01739 1038.94404 1868.146397 36.83201647 4317.779728 15094.22608 63.77567683 102.3859644 1961.685575 7320.11632 51465.71291 45049.84862 0 279.0448109 6693.870667 38063.31512 0 6529.575035 12.39517891 1637.949131 2212.576464 2100.660964 2.017089238 0 22599.16127 0 53989.07504 0 14199.02034 2614.975161 13506.00604 94.61224914 14981.38275 0 7524.989154 52094.38878 74970.90393 7090.097775 4984.49126 1127.095178 17287.60898 38865.60956 4678.534835 31507.14721 1957.730749 5686.003266 0 56591.01142 31269.35735 15607.1943 882.9839475 1881.186232 844.7440721 4256.104431 158.3284604 5472.176477 2946.466609 16872.65516 0 2498.764841 43811.78142 28831.73598 0 14703.69031 1269.360452 4400.478638 2547.448658 0.001075416311 0 0 4908.969796 21479.33644 1385.014436 4897.639194 6930.754554 6381.601259 9750.132396 188.9304054 9.015104477 0 41705.77273 68742.64693 9206.643258 0 3870.652345 0 5354.633053 1430.063837 25391.59359 7556.714806 0 2448.32316 25658.66842 22362.61832 7603.157304 24794.31034 9351.059449 0 11624.71932 27270.54896 4499.46217 13225.0224 17577.0937 110.6828574 42536.04475 2406.771254 0 18938.65518 4846.726269 57348.89197 3308.132241 8361.23359 9491.096778 102.0246891 222.3903029 5125.606759 1.567593734e-06 9345.190068 0 4110.998975 14506.61787 0 1895.666628 30639.68282 10913.11062 0 11866.70586 3563.102856 34964.91557 30694.65545 50458.89995 25292.57663 43377.96382 22136.93715 8292.710251 6536.472581 0 0 7320.935134 1202.191713 0 0 36121.26764 317.4697604 3379.33896 22943.9042 0 0 0 310.4950563 29628.14785 0 0 11927.93026 27.91557492 48240.4305 9757.876884 0 0 28553.61747 0 0 34693.68487 46.18205282 4780.414072 1773.540747 15104.78366 357.4768485 10610.93243 0 537.8136835 17983.24345 312.0026391 0 0 2906.099217 0 1.829594508e-09 9046.145472 0 836.8683186 0 0 6713.321497 4326.623877 77.72397348 11605.80383 0 44.96039513 4.952601903 6012.294372 0 29428.99682 0 10019.56486 86.43617494 110.2346488 0 44213.24585 327.1635048 2573.410225 130.0515482 0 0 36908.10148 26209.19584 +0 10558.44835 0 4191.18989 0 0 0 9397.103381 0 9187.729942 0 0 0 0 0 7811.94719 0 47088.68743 264.7519399 0 12826.18467 5784.305757 45.63031425 0 52887.09256 23235.5035 11587.20979 821.9955396 1.258042248 0 22127.95862 977.6842872 11174.50885 1657.72455 0 8856.270388 46627.34768 29301.64473 4278.053644 12780.13046 0 63.33262736 547.2039944 2128.341151 20108.5595 7920.328031 9843.917131 22478.02529 54744.62409 4355.635698 0 0 7529.839695 547.7545101 0 0 0 0 16045.08107 40735.98581 5790.443865 16432.41002 38889.50823 5295.679096 8930.085635 5270.005817 10691.35778 14315.36483 4221.206544 0 38248.23291 1531.640166 42116.28856 0 1540.491928 8683.791919 0 19577.01709 102.3475518 0 0 31080.40466 4272.054403 0 18151.56818 0 6.143667459e-05 13102.03692 0 36697.29309 0 0 19700.64105 11811.16234 3766.106061 4484.541169 40284.86504 0 112.9197665 39779.97009 66999.89255 40887.974 60682.82395 11160.68122 48289.35231 22005.54822 1370.509192 3562.178204 245.9478848 8129.082421 72994.958 4227.715797 2371.707946 14384.88316 365.9882738 24958.683 1033.761814 2255.29147 176.4318201 23088.28979 25084.0649 37965.69363 72494.53002 19309.50342 35977.94738 5860.934745 6001.753372 6.942079243 42537.59913 27355.00632 17049.73581 3869.342372 8.428163534 67986.33753 39666.52411 3235.018872 4675.107505 25590.77451 1808.01819 1606.256926 8797.769817 1007.062317 17710.9598 691.6648828 2647.967807 8097.74727 1435.130455 20385.29944 28790.09822 5898.665809 0 4691.327551 2451.135404 0 63694.55111 97.62337272 38609.74221 2174.013555 9693.018094 56173.56633 14268.92838 1664.143978 47268.84224 2979.667494 17959.39975 0 25572.3663 42800.88968 42244.0076 0 42783.73293 7725.66175 0 8984.551983 19183.24013 74.84749415 0 0 65.94225334 132.0456866 45506.16098 0 84787.08257 6254.176824 0 29835.83414 0 25126.11321 55295.49238 0 25775.29253 20418.72014 2057.850374 737.9913844 62499.64425 21833.95836 11409.81555 0 44323.46944 40467.66053 1456.079646 8126.084114 9532.947687 10748.99534 0 6087.750213 1455.49701 19177.95369 3620.585331 27033.25802 8732.480892 441.8344349 7114.467505 0.01661445058 77.05519793 0 0 0 2302.443788 0 16045.61717 3235.927704 42236.8945 44227.2194 0 0 13349.93551 15658.47952 10694.23019 0 2241.495417 13639.7236 18743.89232 4369.566341 1423.414649 0 0 0 0 35437.80913 13774.68286 0 25853.14284 0 215.301966 34310.55696 44242.73253 30767.43035 0 10330.5502 0 0 0 0 0 26079.43381 0 0 1257.591206 0 17081.90272 2.502028445 4796.156694 0 0 4793.771761 2624.464475 1314.96445 2724.602699 10531.46176 4684.918383 22085.93132 0 14872.87386 8365.938027 0 0 0 5480.113384 700.2008587 23488.31474 0 0 98.84554667 57.82027647 124.0283714 9370.563478 7280.314928 0 0 0 24403.3155 24959.29161 0 15682.67875 23199.12232 16558.17915 0 4411.513102 0 +60318.40516 0 31333.39002 0 5259.401522 0 0 29521.38711 0 8279.367369 47.2309136 4350.930717 18236.33819 0 4431.645364 1878.265487 44166.83109 9484.064525 1771.366037 0 0 0.09816594214 19850.77024 51302.88535 7916.467941 17992.22539 0 0 62387.49093 505.1975132 0 6754.71014 0 47.41973298 0 41409.32218 23782.22806 24527.45554 0 9131.479008 0 0 208.385811 3793.828803 0 0 23795.2017 36507.85811 0 0 13059.73784 0 1872.575696 0 0 2490.048352 14840.40411 0 0 20474.42567 1.185558147e-09 4200.962259 0.5025605676 21281.02161 52843.76569 0 4558.282216 50293.91965 8772.830187 65.8524749 645.0310008 0 20935.36408 0 19263.26616 18961.2333 25271.29574 12611.28462 5971.730268 35416.95166 17181.09732 2957.298741 0 1585.01273 0 0 60631.53634 1815.022716 5416.861338 41499.09944 87145.55992 17576.34831 0 24678.80471 23857.99149 63130.0643 0 16424.60549 76830.05684 0 1089.713032 0 20.87798422 50014.25657 0 0.009234651384 21434.5013 0 32302.68013 52420.90872 59.56699317 9107.331512 70593.14765 0 3195.001817 33613.04725 0 17125.60425 18192.03988 25998.51138 1202.999001 0 0 135.6819468 10649.81 787.0446857 0 2274.725714 2653.745711 15750.66788 0 0 14211.37081 6913.459231 49517.21389 13721.69285 50169.1364 0 6908.885413 29802.86068 0 4341.980699 13068.1568 7737.150505 78615.4491 0 5386.38638 21320.5115 15323.0034 52.52684381 0 4063.504984 5954.969892 323.019336 30387.33075 0 9713.845308 42861.84458 32539.79813 9306.368611 0 79292.99137 225.7356672 0 8796.667772 5437.955693 8865.246814 46.85339571 426.4797896 6195.813047 25526.31684 0 56817.2459 132.6161224 10414.1732 22190.21354 58828.36323 3060.614813 34.94978565 18892.63503 3482.778901 4439.661923 53.51519449 0 14325.24019 1424.09953 30200.48824 36670.67178 0 0 3077.969371 14212.58398 0 0 0 27736.92684 21564.71519 20654.06773 1239.033195 27793.0711 31920.42457 13084.17068 0 0 0.0006796655652 1931.559263 13312.04595 0 7956.441149 5418.973299 0 39954.75107 19249.43618 0 0 68775.30281 320.1428204 11062.26232 9989.394735 3870.649744 39377.75362 14580.99846 3782.112326 35100.42737 8873.841624 0 14812.90349 4965.396084 6443.931028 31815.48788 21560.66274 26422.36218 2088.470479 19902.34726 12005.99337 37984.47686 9295.138937 0 0 5701.739516 7816.06753 24432.00327 40386.0761 3532.831261 0.001116374213 8029.915174 5098.600537 0 49143.7165 2611.699084 0 0 0 12099.3407 542.8147174 0 11954.03479 2795.750686 7090.729775 0 95.78238546 4264.978615 2801.459928 0 1984.340841 0 0 37.17384231 2643.819485 7217.950239 21762.54339 84.40592626 0 12.58580916 0 95.2238579 8354.385387 4941.720702 51162.41292 0 111.2018276 21333.24495 41631.91396 14177.50646 1127.794894 13952.24057 7.809784146 4937.019703 6813.927892 0 0 9017.251719 76223.01903 0 53071.56129 0 72421.7317 55714.54575 20301.54562 0 +0 0 4556.032511 0 68879.06886 0 3502.324161 0 3.159082823 0 15402.52433 5909.271416 8466.283853 0 0 41207.05577 4015.898302 4601.71404 22033.15614 0.0310466256 0 509.6426635 27369.80224 7395.469679 12879.31971 18354.94518 0 0 17783.18547 9746.045568 0 0 0 0 253.2439535 301.310713 0 0 73145.29556 1135.164186 22921.78439 0 0 189.668323 0 9700.794979 0 29089.06176 56166.41388 26.17243121 0 13026.74662 7810.319833 0.1923424327 7115.538479 6886.92305 0 0 0 8895.991605 9704.072605 0 34749.17396 6971.934939 5657.91215 0 46312.10597 75468.40442 0 26627.84946 25710.50469 27.04886724 22353.49178 0 0 2664.575199 16306.06722 21128.51265 37512.49317 7769.522024 313.4549062 0 40740.38013 0 17349.21331 59955.81212 7366.847173 0 63437.42695 0 27565.38668 41763.45517 33713.10611 6035.090626 3355.736114 73757.30728 1965.944263 68500.53511 0.1676297937 1205.519801 0 73534.70125 0 1247.016803 8067.045788 57.00679534 0 0 1083.801407 0 2305.20906 27985.31652 0 25028.95188 2539.748326 0 18088.39817 0 37840.92723 11320.30738 19638.89377 19576.36478 202.9418457 53.41184221 0 48015.98378 819.9368917 19564.09851 0 5237.364999 6952.064698 43186.57254 11868.29342 0 0 27874.28282 21854.53449 2575.8433 47352.3095 8938.809963 9746.427997 0 0 0 5484.466468 0 48.25843616 42481.42795 0 0 7261.071839 5380.844179 1541.249188 66086.49596 0 7126.954139 11838.17193 46965.64661 255.4076018 44027.35945 0 0 16087.92373 28073.74988 42450.9521 68113.74947 61752.81318 54545.61843 0 53931.04882 58990.54813 2994.158345 3530.271037 336.335641 3669.380506 25452.7275 23530.80838 18400.63502 4806.730585 6156.916468 26058.32648 3838.288572 4830.377782 23754.11356 1583.036366 22225.77557 3076.654544 8116.406861 49540.72268 40.68260658 10830.32413 3876.340555 6456.935985 6871.214224 8539.461143 13754.28804 0 0 9711.669495 1359.448687 2010.688763 6056.246 28261.14712 22023.429 0 0 2875.934368 1538.82893 5495.786535 20323.52769 53098.78797 49218.46246 21785.64444 12568.96703 2157.97729 534.2553895 11058.16974 193.8292324 0 0 0 297.1575616 14421.0519 0.005951858983 31703.52367 49554.8522 64874.89992 0 0 30052.0244 1277.042315 14054.72104 7963.247922 0 0 4203.705011 16182.57547 18819.75668 32.59244873 61338.58537 10110.01749 5118.074103 0 3294.357004 405.9667343 0 0 54520.11714 33477.29737 33310.44019 17079.16879 10380.56536 153.5783759 1893.681517 22102.71652 18520.42127 0 6587.16135 14765.99192 83898.29395 0 22451.33184 0 0 0 26827.75519 10051.41716 64353.70309 23.30585595 6573.234712 34860.96359 11915.73077 10298.66448 0 9978.104595 41542.34489 26117.68497 7249.13142 16495.01932 38794.95494 3782.324024 0 2591.798489 930.9907666 10441.76017 14638.8911 6883.308728 0 2571.769802 3324.079234 629.5864631 3521.844603 63222.32391 45697.57565 36107.55989 0 143.7677053 3675.26998 2358.600848 0 +18286.62375 4425.166515 0 0 27316.25197 7907.838162 11209.05855 8936.456478 0 54.05582732 0 0 0 20953.50849 0 25907.51086 14704.97812 5494.424444 19279.91017 9749.8452 4755.74446 9617.677367 0 15151.19205 9488.545606 0 0 26324.42791 8336.383917 1535.272543 0 0 237.1925314 475.9794323 26580.39365 1260.451748 9639.33482 5141.756196 19078.8593 14385.62053 18012.73824 0 1279.734683 49775.78453 29885.34762 19895.5114 1498.478499 192.641403 0.001222164135 15802.62682 13518.38303 0 0 24936.7572 4151.895717 18612.7096 0 49996.99515 3.297551375 20484.46924 70.1370483 7885.391028 3057.890197 0 20014.26173 0 22092.54771 17404.02291 30.41992717 45161.38731 0 0 53516.33834 3240.127084 0 2799.135292 6140.863854 42733.11773 2294.439471 2739.963004 1137.048361 22191.68495 20698.92094 10558.02284 3192.897964 0 35904.93699 62736.12455 0 74952.21416 15.28285749 47227.93797 37434.79122 6394.638726 27219.61909 0 19294.46543 14529.91029 22382.1382 0 258.0352622 14566.87323 0 30999.66774 13089.60442 6776.984415 19854.65217 0 34153.99441 6837.387928 4832.04638 17999.18652 11821.89683 68252.92459 56216.63272 27531.03707 0.06489341537 4423.227598 57655.40243 10339.44336 0 81104.55399 5175.486016 5650.685144 5120.877461 16504.85461 0 14753.74469 27694.64864 35645.99275 0 2.025265417e-07 8537.815918 0 28963.14382 27422.24583 3257.059747 0.06921189321 9345.266286 219.7184415 0 56504.83782 38287.10554 0 4216.776406 9475.311555 18198.45015 30080.30129 39971.18758 13839.56999 0 0 30555.98813 15521.22947 46352.56972 11617.11074 19382.57048 0 45215.42998 39115.91698 0 52204.37943 15577.44581 0 24503.72384 4662.171081 2069.861962 3628.627523 11575.29499 2466.881606 219.4031383 0 4138.892012 32736.20548 1.65038801 25269.47634 69683.64673 43487.91216 6811.200983 22293.72794 2887.726671 1914.47187 2599.598066 23744.40065 39011.78606 0 3626.34685 1002.630064 1879.299612 0 8956.862835 115.8257731 6859.765786 30930.74379 1920.784822 15843.87142 0 35511.93647 8076.473979 12476.36203 5299.087835 1967.971378 10367.89607 14983.08194 45478.23585 1102.282889 10159.53758 23073.174 7265.253432 12797.32629 25885.58001 492.971147 200.5757628 0 23754.25007 171.1679228 12217.01026 3948.536306 21806.78436 9822.383453 14256.41276 7262.668577 57879.01807 29111.93931 30725.85157 13113.03165 37195.317 508.4468667 9280.033555 52.53525599 54939.55129 2027.188566 10151.66075 14470.44538 0 37194.41396 60199.95714 0 1573.853617 15852.53189 54285.62494 0 7911.357609 0 0 0 0 24966.24331 0 5920.28176 21177.32841 685.2591802 2524.607297 730.5148634 0 157.282436 2021.18039 47324.53756 16516.0778 517.3108548 0 5920.193439 19410.97564 0 0 0 1.18578864e-16 23754.45028 3800.459405 2399.289875 285.8744402 0 906.9249909 10466.07939 0 5528.626526 0 0 0 0 13212.17621 0 15101.65715 0 0 34857.09834 0 3552.43395 4366.103591 0 0 0 0 156.9700786 172.9798952 0 0 0 0 0 +0 27656.68785 374.5848633 2276.525045 162.8566117 0 0 0 6082.591753 268.7781826 2664.77983 0 13016.80979 134.4602803 327.3319124 0 0 0 18980.12693 2401.888735 175.623094 11047.56371 0.03423308895 24500.58885 3434.052347 2249.458153 0 0 10716.70016 0 24189.60214 12268.04334 0 30.75993035 0 4279.964258 5401.238796 0 21081.45935 1415.164901 3466.052895 2202.642385 40.69724009 0 256.8188026 40138.14774 11892.65901 0 0 0 0 0 9239.919952 22784.86282 0 2045.259717 2335.154737 0 0 23366.60502 16951.14729 26418.42306 3670.479585 27006.90354 3635.800084 0 10014.10986 7105.017113 14501.15543 86422.96309 19968.37654 0 5319.131328 62096.87356 6545.133748 56045.83757 0 0 8515.133237 4645.884027 1039.645504 19204.62782 0 32033.75599 5074.714796 5373.816883 0 0 90713.04954 0 7327.483212 36391.4134 22266.1612 13540.31965 42248.5573 9737.878643 42141.18933 3675.784957 8051.844557 132.8532608 37210.24935 45363.7395 20210.66858 13398.64168 3421.802414 35730.4241 4416.10697 11004.0085 1903.408092 21538.17361 0 522.5223355 65056.6309 23695.23163 24003.54062 0 4632.765993 269.5265317 7795.135895 114.1141991 104.9828529 28909.81179 38410.18255 0 0 13559.41911 0 16326.36424 339.611418 0 15380.40472 3203.129748 0 0 14319.05046 0 41866.92144 10556.39759 9865.231138 22378.9771 4013.064947 1869.31247 45287.20584 11495.72084 4101.115488 85412.18971 13035.47336 4933.60946 0 30.71274766 10295.7674 3335.161779 15999.20784 37451.5103 58828.32252 32732.58883 1873.273121 29001.61224 2480.579838 46709.99393 85115.38458 1379.330687 48860.99838 2577.590626 0 0 10444.09159 63190.55779 9650.279061 458.7137132 80392.12074 5893.918117 6941.204704 15759.50873 40422.33504 66490.27922 20259.90821 20389.14002 10029.11207 0 523.9384316 0 719.362419 6456.156381 0 39231.02979 0 0 6147.625681 2946.282287 9191.525626 40864.15893 52430.11478 4513.891263 2925.985936 66131.73157 0 40.62645363 519.2843998 1806.993457 26116.01467 58861.94996 23623.61151 9359.19895 24056.76616 1285.523633 41220.72116 26217.63587 38.7945907 12527.67917 0 0 1407.231748 8719.485512 4310.977245 8810.595101 356.6649787 287.6864883 16578.63122 0 6330.037229 3897.49639 20572.16711 552.7459748 20754.36394 22616.59769 0 57896.08933 2788.005848 7799.020049 0 54091.77538 15312.83098 8550.104792 16170.18507 37.31078368 0 5907.255722 22200.17748 23375.68203 2032.740678 5484.499588 47376.73831 4021.792752 638.0398085 0 45327.31099 12851.712 6152.253716 7551.717571 12864.60239 3972.763242 0 25053.16894 0 51437.55367 19146.25764 1246.093796 0 15578.50987 0 111.0875244 19782.98081 27410.4994 4409.284322 503.6887349 43146.57414 0 0 0 67.11854624 9132.144969 4275.042675 2779.277286 26591.99156 9220.054363 385.0790645 24179.45221 29515.74775 0 28237.81212 14530.10188 1389.550022 0 4248.479894 163.2917715 625.955434 5918.104679 174.077857 26.56843798 29900.34296 0 0 2881.615816 36.01748341 0 261.2116195 4395.93901 2112.810908 998.4928075 +19330.915 6483.468755 3713.46657 16849.48886 2959.51004 757.8772558 1944.558133 26223.03571 4755.573451 0 5390.240475 0 0 23284.39435 14493.68158 2693.979039 9856.017593 0 23791.39041 0 0 28543.43653 38503.10746 0 342.2467675 0 1580.473191 15707.88309 58619.82402 0 0 35091.91204 38819.50292 8369.621463 0 2226.058084 0 17306.56807 0.03177961367 19871.43889 0 12655.47414 14675.97762 25620.99707 5.952299448e-08 22055.35661 0 1921.444316 16075.06035 15542.3541 3178.342355 0 198.0121018 0 18574.79897 5999.712973 0 0 45760.25745 6143.24006 0 27720.56545 0 4911.33945 0 4217.022675 27139.89148 45225.60782 1395.49933 168.2982986 111.5959628 0 0 16411.10334 908.059207 0 0 26009.97349 2806.595893 0.002180700189 0 46808.68123 561.1981787 4036.494638 10559.04244 0 39079.01371 31529.95559 10229.87479 1197.44934 1382.078431 3068.302481 993.4411614 0 425.2581008 0 49595.39398 150.1955038 42290.93298 3232.463824 12586.7538 18589.74194 31415.01733 22489.69353 16883.94136 15581.16932 3250.132255 27995.96644 0 1699.948988 3863.76821 0 43921.65276 0 0 33424.60347 9189.182201 115.0298492 435.1044846 32985.59951 57722.25498 46528.6653 28440.78081 499.8396756 5207.371464 392.33768 42289.40509 24915.46654 9185.015615 0 9234.651095 0 0.3426065213 0 8087.290926 5770.496733 3023.428126 0 529.9975608 11696.47007 0 31637.6223 13610.16036 5360.318876 6.188040704e-06 0 20119.5496 32979.61648 66552.47988 11916.45256 24168.2337 48895.5753 382.8947699 0 9684.14973 6892.680822 54061.64485 0 39159.94926 4776.799664 15191.50204 4674.201849 1996.014385 15428.9099 12141.90697 3894.879461 26379.40298 0 39516.68976 5022.662896 71524.39884 0 12344.56927 19756.17837 0 48742.48122 18848.4599 8509.674547 0 3749.5534 26672.92947 6531.345246 0 134.218625 47599.84601 4040.860236 0 4138.434678 24370.81945 1198.091423 35296.05929 45.95727373 1856.456383 74.68101268 3146.994217 7937.325216 7069.629145 70405.78674 7484.575407 5348.776097 4692.990334 9407.609075 13574.29142 30417.50983 28205.50859 0 10948.57009 47856.27895 1875.976672 0 7894.028362 26026.99894 4406.451125 17307.14114 0 20942.35186 0 55267.65566 35916.31784 268.3081145 18716.81843 0 214.0334069 31648.32128 2958.134098 0 0 5080.09193 261.9073992 7888.811835 0 7763.385301 8.613720057e-12 3071.206614 5781.190339 0 40024.79139 17456.9982 53249.91351 4656.351103 27472.39828 7561.933316 143.7914022 10363.28504 7662.619 5449.433001 4515.692229 0 34962.33878 5662.884271 3749.40436 58897.66163 27806.16005 7845.265737 4700.208336 2053.8104 3323.386727 18025.13707 9196.313338 37093.99992 0 18538.10282 3601.936463 39.65659622 209.2030957 5562.286369 3824.932065 910.2641832 0 0 38376.40052 32.21767415 0 0 0 77.28412042 5734.496627 196.080571 6033.255678 0 13881.1401 0 0 0 1900.766422 0 7254.23599 322.2045869 35441.70856 2180.95711 10716.85211 0 13560.35726 1966.376948 6205.100239 293.1607725 0 0 1599.855072 0 +20432.86652 429.6334401 420.1156114 841.3039707 0.02713030694 3679.58841 26307.42662 9452.603635 0 0 2078.714909 8917.137519 0 10781.48622 12538.74487 0 595.1094451 9695.464555 8241.206833 15099.73414 33655.6254 15185.16397 0 58713.87826 0 7651.407947 5635.473473 0 4902.230492 438.5010931 15441.33311 2160.681672 0 60547.64818 62249.64301 19125.05469 5652.458069 8123.207606 1914.996619 0 207.8558364 11633.18092 35421.65054 19341.27387 0 0 0 104.9232581 13297.52063 3687.43926 0 14934.20789 0 81053.22563 382.8257045 0 31.4342027 0 0.005092143599 9110.850153 3957.95326 37656.85281 13967.22987 66.03683455 13131.98892 5545.972683 206.5512105 1632.379057 0 3011.269261 8541.201024 0 39.26309749 24221.4451 245.6769748 54.44169531 0 18123.11289 5235.416595 33276.18809 6413.121082 88605.79851 0 200.8040979 0 0 277.9186839 0 5354.409041 81.41668348 42944.93927 39861.12902 14560.61272 57549.76376 23658.81841 0 10190.79457 42011.06494 1034.52154 18795.26086 3912.2893 1106.613062 56010.16954 6430.557858 12048.10423 0 2095.326232 27628.36861 5205.945703 9171.086693 4217.818043 20844.51684 35.75014063 0 4022.032915 26623.06152 50503.90829 73242.20871 20850.09487 29691.42689 17545.15229 5356.533299 3549.043998 15270.98495 139.1808838 40436.536 12684.77885 39084.80235 3127.538739 0 10046.13482 0 10247.20877 20346.31625 11231.32775 13520.00906 13654.80302 0 46636.9815 38033.07799 28600.39021 36570.31034 2648.915271 0 851.6909565 9454.267825 0 3540.245902 42655.53209 19300.71705 2522.848642 6069.912691 5456.155546 5044.275248 38948.87557 0 70107.98505 0 5699.574748 11184.36545 45476.39958 653.4380001 15547.4075 0 7390.325405 4640.951121 5940.863546 4127.441733 6069.446938 3112.077051 34855.45026 3970.214201 36762.89426 49984.02711 4798.243591 15298.01038 213.4554094 16555.33397 1614.756676 16589.70659 27517.17322 45180.06294 14146.01113 212.2186495 54504.58811 0 0 26220.43425 1749.064956 2288.60902 0 8.124523264 1041.003504 3557.516289 43107.15073 4683.401368 16614.04706 0 26181.9828 3807.948277 0 31966.58547 29764.51417 44.54160418 0 964.8542607 0 0 2123.710777 37998.04823 21779.02444 3579.70039 23506.80779 292.7626793 13268.56052 0 0 3.316820559 17944.75275 0 13133.73732 547.7098207 0 4992.79935 0 0 0 0 35654.2981 5009.28663 0 32942.95612 0 6816.46283 8646.876794 0 29760.85273 8557.479911 26303.17004 0 3915.695027 40.81667683 1374.47706 9.100564076e-07 5939.09605 2041.919448 0 96.76128552 19586.30728 0 31799.14495 18854.41999 2122.021779 31.16337526 0 2213.341039 5086.925716 42037.10952 56024.2983 0 5124.310727 1375.723921 3499.342177 48798.36039 1299.397832 0 2803.476476 6816.063533 27245.70986 0 27978.38423 0 6055.603454 6192.75835 6420.489598 814.5219604 665.3176842 0 141.1480435 0 0 0 317.0056201 26597.8432 15588.91848 16337.57469 10310.2643 26995.53874 0 153.049548 0 6585.739833 3446.890426 0 38133.91309 0 0 48.17095933 968.7210904 26730.74298 +0 0 2816.411923 51500.25154 0 0 0 0 7388.217042 11060.29014 0 35.98704519 15591.00173 430.2321551 60522.28588 29802.22152 0 962.635147 0 77525.03173 0 22285.12855 240.7902588 32631.28781 3426.8559 27264.31325 220.148385 0 0 22927.02019 824.7524017 0 821.0602297 0 0 0 19373.57612 22895.45442 44478.61189 0 11750.67154 3105.714939 24570.02122 2138.312761 2064.20047 7205.174463 0 0.4071168214 0 0 21216.88707 39492.95338 7268.451039 2000.360162 10070.17845 28765.67147 5601.695557 0 0 2452.654137 11191.08806 52338.94106 5866.903408 1241.406799 0 18573.34659 46475.03451 1087.277225 22979.73823 0 310.7940097 5234.639939 36952.25696 13480.28664 0 32293.69939 45529.60083 0 17806.94046 53155.3898 327.8583605 3600.816395 5362.359989 0 587.2336647 80525.72557 30912.05923 48950.83275 2037.970443 1878.193646 0.06012421833 19049.74096 1434.173094 6520.014023 70436.50902 22834.00629 68789.16719 7761.574214 13840.54231 8408.542464 25805.49558 18805.70028 983.2627384 16616.1201 2082.807396 0 0 13669.49248 8682.288852 14.54574862 49999.992 38228.74085 17308.43665 2687.096159 1838.774576 3083.56244 34996.68098 28086.71346 8752.982203 13597.0827 20602.73019 0 5491.154865 0 732.2594578 60025.81953 89632.61819 0 20590.61489 29823.05136 8395.392702 0 455.2458132 0 0 11841.86361 23178.30102 16184.66133 4412.219989 11275.14832 0 21762.98243 33246.09015 22821.63612 18749.74653 50414.27093 2870.729594 36465.7444 21458.38246 10425.33687 2409.486949 24391.30943 19477.33316 7422.261585 0 26373.68942 36241.89396 3016.341747 0 37236.53914 0 0 74161.97039 43415.52027 10270.66725 2064.52355 39736.46275 4453.660556 583.9064509 11350.77197 0 0 11446.15161 4720.954575 27216.46808 11998.91486 44132.45937 19992.3754 11536.48847 44889.33584 24110.51209 3166.58067 30867.70258 7295.762547 0 0 17613.0658 0 21092.89251 4694.011822 9006.561033 0 4046.510215 4209.867978 19010.70685 8472.650773 8939.688201 0 20219.50067 41431.67475 16938.45904 12293.56265 7.003067367e-08 21898.3954 0 1731.2637 0 2932.007433 3298.743085 0 0 2687.778584 0 6960.927539 14959.82651 13146.849 43005.27661 0 6401.211462 7171.009992 260.6223287 4412.990031 12008.83544 40900.22542 26229.15814 21513.08097 37447.22472 1724.835204 8496.527121 6626.661589 0 22309.81439 5411.584247 75443.37731 16532.17986 9581.267205 0.003439149037 6937.177359 0 9121.813037 8.002390987e-11 0 29567.92183 0 607.6670824 0 45037.3021 0 11283.27148 222.447917 10.26854562 0 2902.542663 2715.890856 1243.371207 10414.45279 244.2151922 39.92914583 0 136.3522905 0 27641.05518 0 4363.667474 27780.82123 3679.778586 8397.46602 0 0 0 1620.586081 310.9024737 35609.00913 0 267.6424143 74.76350552 0 0 234.7848002 0 27960.96294 37258.97231 0 0 0 41653.90413 4786.927063 20017.04914 0 6332.908404 9847.244485 0 0 2858.431425 14756.66428 35.02063805 0.5960540623 0 18153.38601 6450.397052 +0 67316.41683 4910.869184 4691.627763 0 0 551.0471137 33167.14923 0 18827.89488 0 0 29.79001687 19224.56316 0 566.1714055 54649.01754 27226.68403 2792.366389 0 33879.93247 0 0 22850.60612 47376.36071 6271.477152 2494.095573 16121.23191 0 817.5338104 16924.90658 0 600.8220631 8299.257282 288.478737 1854.169652 35994.04155 0 0 59281.31262 0 30830.40322 11411.60757 333.37843 8064.229692 18079.78912 502.5526303 6236.233873 10851.95008 0 0 97.93147692 169.0043336 1346.539002 3236.856179 0 0 25838.72465 12857.09076 7413.849177 8778.02099 7461.698961 737.5856944 2167.964894 80860.72614 0 0 30338.92191 42917.71736 24525.8186 31551.68863 0 31724.1 30637.67637 39564.2117 23246.7917 3578.517975 0 3449.899546 250.6336674 4421.995726 4190.226704 0 6614.033327 0 49928.49462 4752.769248 0 44961.70089 0 76720.80974 36.41496226 66204.27721 1814.293948 0 829.9548421 21672.89882 0 0 9401.18873 32314.23981 36275.01395 4088.438154 9798.585731 16035.3653 5700.119589 155.0802329 2548.12222 2092.474977 20194.01607 7751.163986 0 7819.576528 28943.75413 1616.833783 2637.864901 6292.122509 17536.55844 39867.09939 1133.315107 5495.807051 2464.082974 23535.41286 1032.172589 21742.3569 11.47568417 0 32765.75754 12787.60952 8236.690309 0 3815.301789 15564.48328 8477.988018 31539.22661 0 4331.547815 0 3450.099012 1143.859085 12772.78864 0 44230.78699 5346.351461 0 0 34468.67147 0 178.7806553 5180.55222 0 28977.36689 20114.22602 29754.02738 1726.124401 46278.53026 54534.26033 1702.388438 7291.927102 364.6872105 10415.34609 14973.27263 2662.06365 556.4535726 0.749892066 3698.272492 15.04215824 28634.41097 67126.1092 9720.608166 0 41802.02428 42732.80931 29045.3646 332.2066806 6038.792762 6758.434895 12253.74765 19658.49563 406.8138622 39279.85134 12262.08659 2891.145132 0 37043.51185 15010.39286 26029.07392 0 28001.58518 54009.05576 3835.167381 52698.99439 10652.49543 36411.88201 2210.41057 3877.844366 242.5777679 24127.32658 1288.314466 8081.837162 3891.73129 0 0 3230.005296 51618.16936 0 3.37603111e-07 3754.489183 8523.788183 45150.67419 30206.9864 196.6026681 1023.378873 3554.608348 5548.219098 60308.25023 21171.42659 8485.652367 51048.06727 2034.133592 27764.80712 0 1687.036226 6663.071461 24728.32133 0 12062.3524 29052.32273 1828.619915 0 42484.4133 5749.252944 70.36024146 30212.72073 2805.332146 43121.97402 125.5407288 3772.639291 0 3490.666217 1281.653162 0 68.23840873 3431.917457 0 14280.55372 0 29535.58695 26476.39527 3425.990401 9961.856844 0 17088.95778 60500.46039 68620.98638 57.40819059 52914.67825 17486.84876 8675.687263 81568.61016 0 6046.61711 3925.769375 43007.05846 15275.59426 0 12049.22177 0 0 16852.51454 0 2572.214219 2709.182144 0 0 3406.04856 0 19101.60662 5534.340279 0 4918.636123 0 39482.3964 0 127.4821684 25718.05117 21048.79137 0 0 2321.136161 0 0 2026.212488 5724.625353 7102.488199 0 16006.19364 0 4954.178917 518.2764456 +0 57126.79918 0 24674.46688 3289.213001 2306.007528 2985.453535 31810.95264 3675.070963 1855.036346 84.38114859 470.9078983 1914.605557 0 798.4509565 0 0 2508.310296 20422.4082 13304.81334 26901.67854 1271.881391 0 4452.64406 0 0 615.5082487 25931.88063 11575.13114 5769.323995 1490.705647 2065.863868 1607.323307 4.605808006 45405.694 12390.31089 0 71290.72037 19720.85486 0 231.4194236 1958.024767 4181.851149 19746.33769 10438.30006 0 0 4898.565597 3140.962656 29366.66695 0 0 0 7763.87582 0 0 4554.471158 2463.631496 36322.79058 5747.951925 17128.41763 0 5266.649263 0 11408.14997 0 21072.61924 43978.01087 1891.736462 1395.710501 0 4.0515195 0 0 66666.03076 4005.999019 42079.9341 2713.715837 136.8057333 4159.179621 10568.5642 0 2031.944845 44274.23941 3708.545881 149.55902 9242.383455 0 25645.64939 22470.16679 0 170.4828299 11145.25392 2006.938784 23036.72312 67366.57932 9973.121997 0 14693.39248 54685.62716 0 33744.76311 47330.62627 0 3527.710716 43.45598945 12780.94585 42089.13181 77289.70006 41590.12324 12833.75342 0 4054.787031 5097.344831 37924.9079 8928.596085 31898.9971 7.239195082e-05 25789.91639 19937.76196 0 5466.045452 19273.25482 3909.807773 3306.390066 0 68873.24485 447.9780424 18662.44933 45890.68414 13036.40658 13336.14406 4703.545541 0 47937.30768 235.0172968 12697.08103 54737.53768 0 8895.706856 56247.24197 8166.873313 73533.34516 2119.59942 0 65752.79825 26366.57756 0 10627.22588 32536.01854 492.4237376 0 40385.07646 0 59762.71901 22239.73005 12055.49217 3291.642205 0.3009760289 9011.668285 5168.989881 16044.59409 41277.69158 9020.754945 10542.93709 13234.01714 6530.517172 0 15038.99989 21113.20948 69400.07933 27054.14205 18579.02903 2524.300506 1762.385907 48312.00976 2018.833752 64590.49948 0 75074.85116 13567.20244 35506.09939 23424.41472 73992.39571 0 15822.53765 107.859173 46876.54566 3335.234286 0.6683328011 3181.789046 7310.567528 14444.12206 42.24152127 0 2684.610289 2728.571218 14222.43342 5903.995337 9221.301678 0 26456.46192 19931.90126 30985.27469 0 474.7789146 0 59735.59032 547.4554271 34745.49437 14120.04095 14254.69067 43077.87265 0 55694.81639 0 14852.42348 52973.59848 0 3536.875062 153.5060202 28339.89435 30001.69621 0 900.348482 10705.55715 9333.314823 20883.70601 0 0 770.5522469 4906.759465 14.78631358 61576.82173 8206.956408 2.25236321 3499.732583 93.55761342 0 5448.535962 211.1319691 130.0823446 15190.72923 58874.97667 3108.374792 18147.61183 23375.93575 7928.53798 0 0 21390.03558 29807.08538 13.03926007 14402.57832 0 1523.08076 461.5910508 0 0 291.7203248 54807.45017 8185.893132 0 0 51475.24294 1790.456943 4086.86772 53556.37889 79579.81812 15883.35319 2882.344468 8197.134315 18933.53107 14147.59502 0.01450348224 0 7149.540526 1749.401667 11031.7256 0 0 161.8366069 39.42864947 0 0 6861.867898 0 23953.67961 0 29811.10722 2195.823274 9352.865199 9661.586566 9386.096771 25328.87586 0 0 1823.944355 145.419175 12206.54818 +30589.09496 3626.708423 4136.439914 0 0 61927.007 0 0 53041.04104 0 3033.808044 0 33866.17106 5829.647734 45285.75838 164.6501376 43478.25995 38.94134771 134.7322958 215.5511728 0 0 62746.21224 326.4195061 0 12761.08161 3854.349585 0 0 28702.96689 0 0 5697.312286 8105.885695 2418.943793 0 0 22181.45007 17902.57666 20285.81028 22806.86502 7964.740146 0 45049.45999 13504.08972 8128.582348 17226.54337 6005.62768 7238.048706 0 44330.45897 2549.980214 63404.32802 9975.606769 0 0 12023.21636 651.7245527 88.95531415 135.8506046 0 0 0 2055.070944 6671.70397 0 10022.34013 0 18136.09449 37218.00513 41298.87303 8481.273814 52901.53805 0 140.3104487 8792.51923 0 28446.85289 2.847525324e-09 59573.23694 24.61167134 3059.353333 45675.06372 34814.44737 0 103.160576 12414.39207 714.4328317 56.45900747 44336.08342 6889.611443 27690.04498 0 2221.738179 11209.9839 230.7205582 0 0 23364.81298 1706.567887 9823.520581 2571.051466 34817.62109 2325.436433 6337.488035 36371.46622 11464.31724 8847.354861 9809.307077 451.768574 1713.867889 0 152.1715768 4785.20786 283.3886953 11747.48374 22483.91873 12609.42973 32846.41674 40941.67417 181.0045336 0 3660.441872 264.9094442 32257.22903 26028.68423 2814.880832 5206.928659 35060.80936 55042.88387 1590.640121 13160.76484 18631.85494 330.1553646 80.8430771 22904.24122 3839.31675 6149.109684 123.5187954 7901.131679 987.5236018 66810.07085 7693.508707 17488.17801 6170.439553 8686.636855 68.82018175 1909.930749 31565.29303 0 33969.77142 64768.21216 0 8357.572573 7724.996681 4055.69914 1488.810444 17642.46012 36050.6824 39049.54508 3769.202467 260.5061736 690.013121 7086.244466 0 60580.00603 10312.82489 11347.95513 27162.28939 10098.505 28995.74516 4923.287217 47678.0579 1152.357624 15.51815389 51316.13529 0 0 20344.78417 4315.193637 93108.37189 0 0 0 0 55441.86246 27002.89008 4928.299519 28935.52748 0 642.7567494 2702.977149 0 0 8264.826168 1050.635592 46484.46685 8518.029742 28253.27693 53810.82369 0 8575.278325 20164.5319 11165.98186 0 6214.551083 735.0670233 2386.949743 32897.59012 8893.600923 38792.20082 290.4789172 62555.76777 2215.065468 1027.464861 41880.76354 81649.23159 16117.64636 0 2982.366937 1972.995305 7616.000099 111.0724693 20077.67982 10191.12237 4395.11335 35465.31967 261.4094685 45523.43714 0 0 5020.816727 26938.63459 14663.85126 76.73004425 2550.452674 8287.610571 0 0 33348.04622 178.6270564 6999.308077 4925.635525 7049.774354 94.71573964 0 0 13114.44451 3403.62608 117.4367314 14771.52451 0 0 41355.38753 6059.769068 840.375656 7869.408366 0 156.9914254 0 4292.311445 16716.64786 5261.013397 7059.909851 25922.09086 6.706081088 0 3247.992743 15952.40559 0 1693.287351 0.01455040846 18522.72146 0 0 13369.31984 127.3589459 12675.83567 0 23459.77862 0 0 17336.97584 0 2556.223335 16488.64373 10062.97982 5158.778375 15905.78993 0 0 2383.113391 24319.55955 2445.531827 28151.30338 0 0 0 33377.95521 19.95074928 +0.1071460554 0 0 0 0 295.7072177 4310.376171 10410.03676 20186.01584 0 8804.557492 61812.80758 0 23658.89203 17057.56953 34274.12052 1180.792028 3746.706155 1281.688888 3102.583454 0 0 3765.696818 154.8222681 7519.089957 0 54685.35154 10436.46441 0 0 0 0 36613.83065 58.71936825 6659.70839 0 10210.17581 21729.5039 15143.30511 36704.12033 10717.22239 1120.721018 209.224619 28710.69346 0 17108.49562 0 0 5519.104384 2483.540332 28095.31672 38676.0172 0 4546.773096 0 9576.305229 20695.78514 33566.96359 0 26591.10815 0 0 2.592475962 19209.80201 20167.417 600.4308166 32098.982 3427.616028 36583.65819 5867.948956 24088.18928 24994.73661 6727.270953 2310.751295 0 18811.76164 6446.318256 54218.01777 312.2420441 54962.8414 0.1613960371 34381.42974 0 2902.22061 0 4963.592667 23405.78812 70588.85388 0 12145.16581 74420.69016 0 0 33928.91274 106.6523623 4262.870132 11503.87977 0 15589.79212 2.146625202e-08 32246.19303 8082.125494 4320.842222 18855.00138 12973.42191 0 8709.143209 23.26315154 3755.523728 6329.210368 0 17753.79446 11209.52411 7483.113662 68742.06988 2504.495145 57758.01144 3178.55598 3845.522184 8441.228095 10376.06307 21536.91536 1356.116691 0 6365.492647 84237.12714 4940.920347 77.07344153 285.5898596 7006.043043 1921.880916 7243.673384 4050.104889 1437.014051 932.1218185 27439.54754 0 19142.13895 18938.39405 5757.207147 789.7563 34.35943789 21163.73362 24201.76867 8982.209164 8757.430823 41254.33539 24636.59911 50640.18017 5462.918822 0 18956.7779 19866.30795 258.4575947 6706.617431 0 10216.30567 3816.730037 1220.987056 6219.3635 3116.875029 0 0 0.04668478583 46796.01014 499.0905272 0 13660.71654 7924.110492 60229.72521 3377.527924 2781.433196 18812.84188 45716.40117 5671.875475 0 19344.46354 0 14483.47254 0.4668113418 1205.389435 1935.82028 34411.62225 3436.100957 0 0 14394.50048 5596.362549 46472.79403 42519.11794 0 3.108365881e-09 3197.440414 7329.856185 24239.23841 4703.039806 0 13264.20115 0 0 0 1087.569711 29144.458 0 4404.803982 49748.61019 0 0 0 0 0 3142.462919 2144.887571 0 282.9473506 4.985839434e-06 103315.0634 0 49439.69998 12097.93714 36572.70995 4071.565288 2755.066364 6351.952719 8991.598263 21425.88555 28.46110684 18340.17353 48344.50869 4038.308663 11910.9918 0 0.3043263006 0 0 3994.121462 29532.14613 59377.82572 38590.46481 14400.62841 31462.03438 0 302.6274299 0 0 0 8060.15881 0 0 0 3301.111097 8632.537173 1166.322377 0 0 39480.80707 3763.552538 0 0 0 0 40409.78509 2668.651394 6771.615234 132.1344085 0 291.7016613 598.7136281 2623.768155 20255.06602 9575.914958 21172.67863 0 29415.89235 0 0 0 16401.69051 55100.72946 10109.1364 4839.130753 4915.439058 0 0.01605543246 5152.756428 29860.43589 15656.5471 39760.13506 0 8463.607112 0 2503.325082 13690.83303 0 6289.586228 29027.98643 55241.68053 0 0 19122.98406 +0 8320.015728 0 5007.189952 77170.53546 0 0.3246956302 0 0 137.3100383 1286.555998 29960.86907 0 0 0 4.796027156e-08 0 0 23834.28341 3987.669404 65783.85957 22067.38122 0.7304454995 0 7.677399406e-08 21525.78778 40.39533372 5379.97944 3.826497394e-08 2.415125443 1635.914489 39992.66919 3603.816302 0 7573.80052 33470.60206 7866.001359 14502.16894 0 8235.626248 5859.267347 2351.824869 0 0 4124.308394 660.6900048 8327.460627 89.06850411 0 0 2394.866918 1354.454811 2135.994246 0 0 275.1121621 0 10275.94628 0 0 23254.8264 35954.41528 1811.780074 10795.81917 12397.67027 0 0 0 40597.03 11095.48418 0 0 0 19651.76655 1504.53784 5136.416951 0 0 20669.99535 57992.6034 0 2435.732693 31089.17308 0 8.308797533e-12 15803.74042 34811.58449 6447.259997 0 33962.61767 49.87638231 63953.28623 26364.80094 0 0 23107.46238 10747.24495 45335.76103 12973.61576 43465.77322 13566.06053 36054.52019 11419.44838 13780.08725 23233.84872 25.8590899 371.7832187 0 0 5237.131 22830.16748 0 3930.673799 12911.02578 84530.77184 1.700029963e-10 0 0 1638.89187 10557.79491 2319.052474 7594.248236 23998.60402 3537.813107 0 0 28257.38544 0 6672.778033 5696.044589 0 30044.15632 0 22917.25844 5810.414311 0 33539.07276 6502.631255 2876.24146 4533.148284 1007.929249 0 56.0068238 0 33085.38186 0 0 3084.389584 0 30798.11682 0 4132.979602 48132.49348 0 0.2326351241 18052.87876 2808.854036 27807.0863 1977.517188 45852.71334 1463.985507 1534.395271 26463.97783 83.53517856 275.7758177 1997.003227 0 44303.99134 2378.727979 25575.87409 93.45833261 0 0 16802.31695 28163.16133 1570.51428 41648.91265 16481.92541 20093.57133 14269.80479 0 8970.366324 46840.05859 3984.773666 0 5252.462228 41461.71042 67027.99073 7037.912572 8381.060405 41739.82195 10178.16794 1394.018284 0 46126.0128 21086.48365 47863.6997 2711.895015 0 337.9957678 15690.90542 31221.21698 9881.609252 1453.530556 53824.02071 20054.4876 27833.22192 44528.24758 40.28761743 12477.32147 76.93813578 0 4510.801255 22204.94421 37341.24984 44404.43847 34840.79357 228.882995 352.3506326 0 11829.43328 0 5159.023167 0 394.2642841 17054.09775 31234.51353 1854.932541 0 23.46182565 45670.14472 14055.57452 37183.3216 19250.04528 13011.42915 493.779838 4176.625998 2753.168396 1.432810459 7468.047036 0 4803.833279 3401.116502 42507.64187 2935.513361 19677.2573 4197.233347 46266.71236 0 6375.399082 24206.59197 0 9019.851165 7051.272967 6310.306176 30.73444973 7877.138513 7016.387398 0 23919.15681 3146.378324 27018.27258 0 39638.7157 16832.76195 34914.06527 0 0 14744.17172 1220.37182 40718.03593 1381.318912 6908.578709 23870.21823 2257.757713 35021.52013 8731.201602 0 50871.10783 0 200.4007218 22881.74153 6625.451377 0 0 45.17631117 4911.388135 44389.55751 456.675087 14418.12008 22618.75278 15635.09465 0 0 0 6991.15769 0 0 0 32130.48868 +0 0 2054.824535 0 14930.94849 15802.98955 0 0 71.11931006 12259.89268 5468.646897 0 9890.11647 0 8278.421755 18727.59638 0 20462.43394 0 20906.00639 4550.700199 0 10139.04298 3949.862672 0 0 22477.87291 0 0 0 5420.779363 11919.58111 21425.48004 0 6396.805784 0 4970.34017 0 10034.47606 262.068691 0 3397.239915 31100.38631 0 0 8839.42451 45332.35038 0 54862.40572 13191.09399 7415.662168 0 215.121249 0 29776.38041 276.8625468 0 59791.6072 9847.026665 0 0 0 0 4878.239866 26100.84695 57424.70742 2117.453131 5237.949928 2608.712812 2174.818788 4505.508986 3087.010375 49239.05364 78.11133515 63746.38392 33242.40224 64526.12965 13120.04331 0 0 12274.25943 0 72409.20514 62203.81308 3515.026481 0 39192.53727 16406.50874 27186.44502 4606.16742 0 16765.02572 14454.58419 3816.721138 0 59946.52116 2437.755042 37668.05167 44810.52213 0 80383.92877 0 5976.696624 41660.0242 65752.40164 49452.33148 8162.026127 0 54351.74368 43430.63406 5146.977492 0 22411.43208 2289.287705 32878.95075 12468.30728 18486.03639 3320.606743 3892.965239 9449.066688 5587.430028 0 23331.78675 0 0 30472.78165 25614.06242 9901.274693 6286.739626 15378.91755 2206.416231 856.4192632 34269.65639 26.17983874 15627.50647 26570.02109 0 7469.164604 61572.67373 47429.78446 329.6606364 11088.14323 14954.87632 53720.75205 81953.26103 3127.48116 164.752156 8153.274764 9132.256989 0.01964858459 3742.582832 676.8372411 86189.29425 38236.39412 1872.06966 8855.577712 0 0 60.99682524 49618.21889 51404.0237 9433.178807 19280.51313 38286.865 443.6580227 8027.693039 1150.070382 4805.126352 72269.14578 0.4038936901 42498.30347 4120.777785 1681.556681 0 37759.42621 22749.17815 13910.25832 1344.783467 19099.74161 8620.223867 45261.68531 1494.852051 0 2727.888029 28660.99759 38848.12686 66222.02836 35.7161946 12343.46276 8901.910484 3700.80061 56617.98703 246.1981437 0 17.0297174 5895.002202 132.7284907 17465.35582 36987.70081 361.4330658 32751.11982 12234.28029 57854.39228 4128.040762 54945.95165 7725.497241 130.6959303 2044.827857 22528.81333 17089.8933 31878.42016 26772.75241 0 19921.43096 2516.345782 0 615.9164988 0 0 0 23303.33222 38415.61469 0 9553.627523 0 256.9413504 2851.977804 38113.96935 3979.884288 5863.495951 28135.10554 0 0 3431.00602 0.001084118225 33403.80176 1936.137967 4813.037134 3.022593033e-05 15448.3693 0 36478.0618 1988.384499 1934.436622 9054.706203 0 1510.037815 1598.688771 0 774.4662731 0 2750.063242 3734.357185 0 3186.913093 1457.999999 0 301.4946345 246.8746441 8502.021731 12149.38703 0 139.6980957 6651.103616 46.5075485 26977.89243 0 29.88783392 0 37919.12498 39533.56392 57.7896491 21368.09423 31625.45983 1742.93258 5348.465595 0 0 0 39037.30912 458.3543422 1485.787102 71688.92309 18664.25721 0 0 155.1032744 11704.55148 0.133212029 0 0 0 614.5050762 28041.76349 0 0 0 0 0 7416.983643 +62417.86115 1022.585155 1003.043651 15444.36733 0 0 0 2392.810259 0 0 0 29350.46271 0 66072.65745 42521.97506 84.33513734 0.9054783691 15216.23699 0 4109.996845 12806.07316 135.6341624 0 0 25315.1971 0 6381.710005 6050.098974 21521.15724 0 1180.927195 6954.637151 22201.48753 0 0 0 641.9605659 3501.426536 0 5730.221602 15146.37756 2220.787801 10274.90503 24630.1059 3154.230418 4456.95594 43486.01577 5923.481949 34651.03921 2961.466748 181.9967516 2306.359747 44589.87633 57450.96627 1769.820238 7939.758085 3243.632558 0 0 10557.08591 4221.617956 24763.88294 7901.881019 18579.95096 79348.3441 1069.313416 47.74884962 59523.39877 0 0 415.5374294 214.0639745 0 52325.39179 33709.25709 10158.38643 3783.631154 47461.16484 1326.853589 6085.477333 48234.97344 6627.87503 15300.14895 460.9000961 0 25579.17857 10297.98993 330.1050073 36326.94005 101.1147725 45834.22033 4777.524827 0 44221.93175 7960.04057 1596.592163 34802.85249 23618.89586 0 0 0 23395.86612 0.0177288034 0 0 17283.3227 22530.90039 0 20272.99736 0 35982.28673 984.8479852 0 33008.76154 7774.278226 18179.67146 0 6886.695274 0 23407.47793 46732.42054 36614.27719 42143.18256 62719.61139 1180.658956 4467.010058 3943.197114 580.4422882 0 9384.528723 0 155.4137781 5764.452948 0 29242.45271 3988.47182 6836.162552 2835.59586 5666.374187 43254.31918 0 11176.14647 182.2471117 59328.48055 24488.52981 63538.32321 0 0 5541.46369 16584.48606 7961.792556 569.4553287 11470.34364 2774.900215 10491.70362 0 12214.94461 2.871243994 0 0 54895.57216 46020.00894 63362.1938 17785.47353 7996.591335 242.6752497 41602.12289 74284.74257 18436.03712 16252.47002 15456.48176 13782.5773 0 465.4453766 0 81.91859315 28885.14887 2782.355194 0 959.5421845 3998.914858 5511.504558 2321.457715 598.8301733 0 38404.95607 0 5996.536096 70303.73285 2296.931033 0 16127.87805 9642.894116 9302.57292 47113.27999 3419.771878 9152.937155 11401.98944 614.2426401 36090.14878 4305.271157 90.27515665 23487.1251 13828.53194 14501.41762 1965.400441 20384.25102 0 103.816443 0 80.25410032 26983.60707 0.004825271075 34.83736222 1205.162501 16885.32753 0 3189.959755 20551.21343 0 0 2130.799138 838.4845839 27180.62418 50983.66499 2055.791736 2.879719669e-12 21673.05965 0 651.6892347 11178.84413 0 9748.364103 9868.506021 0 45818.11801 0 1306.185159 69584.05302 822.5135339 0 19311.96093 0 115.6889072 0 14668.64529 44795.10514 0 7819.321643 60.99819577 1716.155352 0 72.0164955 204.843741 43364.99745 876.6969223 0 0 3.615147466 2165.762759 144.7153366 7945.03457 0 9569.633292 5462.51596 40.58654385 13028.02052 0 2272.836025 22014.71125 9400.825379 0 0 6047.160591 86544.59927 2606.502961 31401.05375 0 0 3201.434086 1653.207494 0 580.0196597 31.73343885 32834.8697 0 0 3319.080769 0 3232.53383 0 0 52779.70327 5287.49725 0 62.15796601 11334.72204 6850.706502 0 0 +0 7452.38183 28199.04737 10225.08888 22930.65976 0 13658.64409 0 19362.54586 0 0 0 0.03170517678 4090.553022 0 0 1848.927423 595.6947869 0 21753.03668 0 14293.55812 25647.0119 22409.22538 10232.46729 0 0 0 47543.05674 10166.25791 24195.31026 47.6326635 46434.30093 5796.207672 0 29860.33869 7163.207105 0 0 9754.39702 4583.383991 0 1153.597608 11343.94867 0 5332.830105 32645.99421 0 0 169.2421206 20608.52234 117.0358565 0 46.26814258 13950.84202 2211.023365 0 63425.2779 6335.241812 8693.447446 0 33201.46123 37.06686895 10355.53786 7606.743507 78377.78887 8870.400148 30048.26921 0 18196.81376 9337.669967 18355.2306 0 19473.40682 244.2334437 3.027643272 0 4173.2259 9135.531778 25926.83359 663.81341 10616.63996 18919.27482 0 0 586.9403528 53287.42581 37481.52251 1.599632442 15665.42212 33827.46725 0 0 0 59373.96657 5310.552905 8734.557465 8736.783972 0 1599.105109 47979.25473 63788.92754 23835.68782 13279.11206 32904.27115 7848.034131 0 2161.439014 0 43473.42366 0 6763.307317 53830.01741 14424.75957 2869.281018 10114.93226 0 10300.8756 43276.12137 3378.570613 115.3774533 0 12226.37274 1351.066881 0 15473.33984 16672.99889 2176.42316 10532.13084 42201.93678 57636.32659 127.2804432 3024.416745 7227.837429 1393.997081 38879.54084 90854.43323 36255.94145 19.79754244 1.383309444e-11 19195.06663 5316.322359 49358.09456 48680.71253 9259.282638 33760.73985 17319.18677 0.00114037774 8860.321346 29453.43687 10035.95272 81.77288615 32140.93944 37844.04096 2483.073135 135.3064814 0 18991.71466 0 16573.69566 37641.16175 35706.1474 1964.173071 0 2373.857356 0 4453.693435 3503.192754 43167.43636 664.9881738 4094.192194 9704.462752 0 156.8406171 88386.58888 4844.194173 8696.558784 0 311.8782739 44904.51353 22212.61938 13454.23338 2246.01643 83658.15925 10568.46021 0 27580.09206 5533.556106 1583.721584 0 0 0 23027.01379 0 19728.03948 0 68802.0993 3576.710425 36.84812398 221.9963937 305.2300164 5696.954939 34001.21156 4036.934663 1040.796591 66485.67032 0 1966.723414 5219.321767 8784.933001 4111.635022 0 0 6629.637329 0 16279.52391 9347.449371 0 0 0 6292.840418 0 0 0 46813.51908 0 24097.84395 28654.9904 0 0 0 351.6284083 0 16477.16398 2248.25275 0 5119.033791 44450.80148 33.15527613 8.843765433 39497.93511 3773.085384 19893.55281 36666.01275 5996.183704 6886.46433 20381.85717 13100.06518 0 31865.05945 32106.24834 4020.009647 21925.1124 0 12952.27034 0 0 2502.874747 0 21067.57087 323.1143258 18661.20979 1411.790967 411.2709973 4972.454642 0 90.07550758 0 0 16988.89934 5219.880236 0 35201.83821 0 0 23146.4322 4599.131248 0 11300.04627 0 17171.99633 4045.34406 0 0 39702.37963 19114.31758 460.9224259 260.6906271 5901.393087 0 4627.238372 58288.11573 12256.70148 4548.572767 10753.78387 12140.35847 0 198.7505332 259.3576746 0 +6788.860746 166.1956822 378.2285981 0 31263.96064 0 49917.0979 0 0 5.584098207 0 4947.189994 0 2.980057121e-12 71115.45807 0 0 0 0 19566.42977 0 0 6344.467168 0 1839.078191 8326.763795 15906.92233 0 54822.56023 12437.58508 0 0 0 0 4885.060069 0 30236.45936 6198.549242 17699.14229 25.57914414 5149.262882 0 18228.92366 18150.67468 0 4663.632414 7682.826274 9426.46622 0 9485.206607 37386.5861 20191.45473 0 4910.38822 5452.750278 2372.227733 2311.797284 3485.922786 0 3600.764322 0 0 0 1958.344999 70588.19749 0 0 1987.075937 0.01758443107 14540.2066 11300.76692 106.2981406 273.9451544 627.3440109 9495.186255 106.2123503 8556.344794 15370.12585 21894.42998 6838.424592 24660.47629 0 1.182836186e-06 51848.45867 32225.70871 0 4256.613917 41.8613368 223.6717183 56675.46407 18324.99243 0 32068.82876 20497.77171 0.3358320499 25118.69885 19893.8651 356.629305 0 1582.48243 7087.33714 12366.1604 4978.805183 8827.485124 29751.53237 4669.088628 0 68000.10142 27509.81474 0 1659.202117 0 2266.353112 5769.77441 12003.13381 1.28036439 55.88369468 34012.67383 2932.762439 18541.6283 6649.454837 19755.61383 0 39230.56838 8558.403956 1036.681514 0 25.69500196 0 1567.712368 0 14678.93698 4573.006493 13858.43973 0 2158.83675 29778.85008 0 14175.082 2856.67611 4259.731626 2115.618574 0 0 43905.45993 1302.129817 80269.04359 0 38816.84524 25768.74708 0 3614.698988 6817.472789 9362.404243 273.3729133 0 0 34911.20749 33263.35101 9425.98918 32690.09836 2686.169215 2780.915111 45124.77446 35463.68392 2107.012867 0 22190.2039 7680.457216 0 6635.375559 0 9082.975085 3990.247685 28143.55596 0 2044.11701 924.0295836 0 3250.620772 137.4974229 0 61067.56329 0 8222.870527 18005.80173 47890.46116 11781.72202 44122.82788 43468.07311 859.0464439 5634.026379 744.9981789 9333.240342 5062.369054 4549.350689 6762.528848 6257.54561 790.8461674 0 0 50297.30813 0 0 12081.96287 2066.883566 11414.01265 16518.87726 778.2168662 5199.608538 26050.36931 8188.204062 3145.608688 1945.879603 34599.58341 8440.922764 0 0 3417.531215 0 5957.008333 974.5902874 3549.239784 12904.23627 33549.44824 30438.85241 13066.11627 4391.171228 0 6268.073928 20289.72335 33118.73729 7773.966954 52104.33687 8119.715388 6755.414511 0 45385.80154 0 0 0 0 28671.66049 329.2879457 2420.910044 0 1703.336064 23001.41103 8397.842338 26808.4451 40879.32395 5051.640867 0 6181.420498 2053.907005 0 99.88241151 5543.236635 11876.7805 2811.309431 0 1392.067788 4759.477248 2231.824319 18266.07324 4574.355567 3086.112522 0 0 0 4045.887402 0 0 7998.051518 13931.39931 44685.16399 0 14396.44079 0 1876.314415 0 0 4479.708572 166.4077691 0 0 74.33041557 0 9155.661265 12494.67092 0 64.61049663 0 71.27234494 7741.126142 38930.42299 0 15656.50426 2523.501564 0 +5206.349969 6885.77713 0 0 32639.33716 26754.12061 0 5334.357465 4913.078289 0 48232.50635 29300.79932 26994.34088 7963.940329 0 29723.93124 4462.516127 0 0.1969981625 32619.60576 37196.95335 23980.82339 13868.74217 19027.69004 11999.27298 10435.84512 8107.470464 40590.91663 42058.29542 920.0476919 0 0 0 261.0975112 0 0 0 47524.03323 0 0 17212.36987 14879.21794 0 5514.09499 0 21943.66366 0 254.370912 9626.885299 0 0 3449.550297 47174.95379 20176.23122 68468.74651 33829.91225 27558.34572 1908.617911 0 979.7736201 10236.67403 0 13615.25514 256.6817126 34780.05053 0 63058.48577 4169.21257 0 8955.984383 14677.06743 39800.00786 2200.639239 46028.50213 7814.798463 14310.00235 9409.19258 43013.91724 1081.888413 2946.682142 0 0 0 70978.06215 59.93970899 26191.3928 2975.847973 0 0 4719.950443 0 18127.75541 50617.75499 14291.46309 17238.63871 17398.22154 32325.52972 37546.9396 5613.306443 14513.53361 73473.13851 17275.80625 55074.21335 3215.985713 0 24539.56352 4057.438327 34398.50252 4115.02899 12972.05713 4269.893133 19335.0678 16153.18338 11303.17857 9629.65143 0 1.460813758 0 48337.70113 8122.485198 5289.104163 32580.77064 40362.38451 520.5640609 33596.60476 9321.746151 18716.91081 3062.957752 0 45943.55948 23643.32044 52118.50311 0 25220.68041 4638.246505 1.304302301 0 1349.782766 0 136.7553893 30261.28958 1013.88182 5292.949218 13180.18261 0 0 48405.40056 1938.367695 39844.34686 35104.42077 26056.30646 39190.26304 12.59574808 3807.951186 15262.89122 0 0 10858.74212 14700.28988 1567.925028 25811.46432 40846.78474 0 23232.83296 15827.56365 0 0 24891.16613 0 3023.016925 21328.9232 72037.74711 31236.38756 8032.577022 5509.065132 48410.24638 15625.99977 3545.019453 37067.39551 0 62169.54561 235.3315733 331.0113205 38207.4787 18089.19838 66.1440867 52339.12045 6327.760264 32.13681812 14599.07925 5508.12964 0 50559.7568 2899.499803 0 1147.330889 43648.9884 0 1759.983258 1826.720244 0 42364.08496 48199.61305 1118.677548 101.4109269 46571.7119 14166.11417 10453.3639 38440.4088 4058.554467 18630.20742 3482.207594 1134.473654 0.2141048064 214.331916 2738.47609 9819.578938 0 59909.42256 0 4347.213831 0 0 0 10454.32125 8490.555855 0 17581.76118 0 1328.903213 0 0 79568.68519 0 24974.64488 15218.94925 714.3819741 85999.89075 39862.51816 0 48600.68968 2183.35169 0 300.0399948 0 18201.18358 2094.744497 1304.970657 7349.918922 0 122.5170992 0 1355.597887 6108.043019 7372.186023 18608.75866 0 0 70341.09323 22236.03886 297.4229809 3292.289638 0 2454.597199 46382.94903 0 33500.5193 0 0 0 1935.238982 1970.913341 0 225.4597197 0 264.4925087 2467.660973 0 0 0 0 83.30243102 25378.2973 0 5490.757449 3184.802754 757.6380642 2961.737869 10928.33152 503.1453818 0 5751.572419 0 19569.35268 0 3095.417229 4955.30641 0 5683.261707 26200.42459 +0 0 17490.93952 34765.69458 0 0 3088.938474 357.9349646 28679.64797 37043.42245 0.0009559252283 6364.871633 5620.071286 1161.483195 263.4771431 231.7967938 2430.817728 0 0 6226.249941 0 0 0 9190.044904 38934.48138 2538.845745 0 0.0004154646027 0 34846.52267 0 18330.75417 447.8494968 23694.26802 51069.85199 47282.82923 1820.600339 0 3562.467409 288.740443 0 0 0 18691.38624 0 5481.819663 13430.1682 26843.67036 1735.569377 0 12676.08762 52845.1856 1230.348428 0 23223.68911 0 163.5989334 6860.199047 0 15508.73576 6086.240178 41606.80128 5608.055253 5605.371863 0 0 0 4187.621405 0 20880.20184 19818.28786 16896.40131 3266.30539 16139.81942 13312.66566 39326.41151 0 12303.79366 511.6731215 0 40915.57142 1126.648699 41860.51121 4145.209197 21361.56847 0 12288.49753 34662.90115 24404.78795 0 35079.42967 18136.61349 6267.32187 0 1170.097628 42623.60898 0 5070.048139 7278.353091 2328.861029 9686.663892 2495.24299 3584.468181 45452.63397 379.5342629 22432.46989 22407.80002 20440.38902 0 36159.96196 44823.52031 1784.678211 30289.26045 8099.603467 3532.805707 0 1686.926415 1843.493315 52987.16116 9505.903461 18282.50403 69015.99206 0 3136.544669 28399.59935 36111.13271 16028.36192 8940.175933 14900.53281 7435.751965 0 63199.01777 32031.76719 23174.60263 2640.262461 0 18245.48649 32920.32645 10519.83391 0 0 5013.375812 11847.39106 25910.68066 1184.581067 0 0 5086.901739 2515.495256 394.4331659 6818.119214 2383.315358 6758.189265 0.8323348886 1786.501116 967.7490597 15994.98968 41909.9442 30295.30182 32280.06785 45834.19355 43334.37493 2903.612777 38490.21692 15040.21686 588.0500409 43077.9085 46468.69746 0 7167.314544 20679.91601 9024.943527 0 0.009434639766 60897.10552 0 6873.926121 42411.93349 88140.95131 3096.569051 71213.61323 5249.589367 13239.85979 94.1275784 6740.686319 46402.53237 27905.00003 8598.658926 14252.42676 3948.584624 43434.54212 20398.17866 4798.801082 383.1227497 33.28499624 73832.44892 2691.170555 18981.49845 1104.138319 11672.36804 14379.51535 18867.68635 59396.38552 9100.21404 6734.613468 0 14312.06583 0 6919.390527 37806.1091 82585.29616 41063.7445 267.9214186 0 0 0 35470.08788 55149.52998 5.457455332e-09 1708.544648 13322.33991 26.15240942 5550.957734 16271.96675 14255.34792 0 0 58361.45457 24899.92632 0 8474.271703 1936.534188 0 114.5237293 0 23570.88016 176.975352 12598.30673 58541.16935 11108.90781 3076.04979 0 10541.80089 1350.818657 3161.759031 78088.64532 0 2907.446446 0 2000.82506 0.5842976052 0 13198.33422 264.7030566 32.23740986 0 3158.477133 13808.31898 33430.77371 4664.276888 8194.617869 0 36274.912 3473.693042 9055.880354 13682.48161 35326.48144 149.7051608 0 0 13006.14038 8857.362366 38798.95503 26460.02496 0 4389.780235 24682.4728 7111.664858 0 0 2938.695451 8708.709821 33105.55014 1867.403716 34212.3398 0 134.4009543 0 0 39984.65835 46342.0041 4449.478244 0 161.5144323 28646.8537 36357.26022 0 15008.7341 0 395.426034 +0 0 0 23288.67824 59061.89118 1144.089118 0 1004.869811 0 0 8944.310739 3065.191302 6035.776874 0 1080.896908 59.50836718 0 26079.13082 61211.29019 1759.57583 0 3101.077654 0 0 18931.835 1.646304071e-11 9319.856468 57176.48381 3977.811123 132.1096898 24638.68241 4376.142035 8039.17902 0 12.10362851 10608.1214 4881.255667 23795.13527 39135.2822 0 144.4886049 5944.934416 1557.459949 14702.51939 0 681.483706 0 6406.425225 0 0 2403.31434 0 0 0 30206.07896 23354.81429 0 75600.61556 0 299.7198602 268.6833177 2235.200854 20578.60193 989.3709173 34521.99021 44079.16221 166.9921093 0 4272.640854 43484.38885 0 0 4772.947251 23235.1594 2742.893257 2592.793466 28707.42709 49652.28541 19447.53569 15336.15489 29502.12075 0 2343.977884 62578.65839 32883.67302 5455.266924 12346.46632 2907.859071 58208.52616 45.77533225 28037.48092 65.28349616 79.6145478 47156.09965 3170.841445 0 72311.40256 2123.750003 15745.6282 33.83523243 1222.315659 51334.13522 0 0 31690.23536 39140.01492 2366.507155 37421.06086 0 3635.367205 51651.16227 4715.403743 7898.210488 68660.79174 1400.9034 8440.748778 5682.745199 11355.32028 1789.04221 8470.641263 6384.861725 1036.234218 35442.80815 2182.11351 4640.438746 44754.06644 238.5470072 4517.84265 21070.47581 40296.14732 10444.59843 3110.962653 52206.46337 10302.49844 0 40325.03921 696.3394972 0 4437.300821 3179.191619 0 0 0 18497.37098 16.38493585 25242.64051 0 56155.0274 9358.658016 0 0 63197.12234 6588.13669 0 12392.8101 1156.502494 6625.544764 4159.368072 18656.5513 95.36717771 0 47337.05681 6708.112815 2780.805778 25337.17269 1753.194665 1847.905952 8433.815548 17867.31962 9469.889865 9082.762705 2564.726882 16480.71618 8433.825908 206.589511 2877.923388 45720.35424 7390.517234 0 4596.716109 5188.466554 16137.36704 5263.126345 38501.14451 34272.97382 0 2980.838794 12842.7804 10093.06318 9135.481039 22904.91376 328.2003462 15233.6231 24497.99505 38415.26939 40237.69986 7676.742289 29441.46474 9378.466727 173.7105326 9926.21774 125.9168914 4806.890957 7024.337052 4541.132437 0 6125.806488 0 3727.150717 16305.38033 0 27516.30042 7375.771626 20081.64675 0 20.67498624 26385.23874 0 22920.79633 47651.0443 34241.65564 1.451013407 0 3490.965659 23752.35414 5070.707935 0 0 1877.529951 364.4520049 13958.77307 30035.91509 563.9657276 64.76637752 15120.81775 0 4593.57468 115.7309373 1950.58755 20022.25715 7846.358745 0 3640.13822 1696.69466 69.75698471 6894.816748 9.9794061e-09 0 20658.65833 15810.11251 120.8428625 11831.30477 0 0 9959.282306 26066.90556 0 0 1399.245781 11051.32041 17425.65058 24921.1735 0 2866.448152 20993.76358 6.434661152e-06 50745.06074 0 0 2590.791579 0 0 0 0 17.07660441 15289.81621 30087.48909 33512.50242 0 4161.061366 14609.71135 0 2255.88089 4944.914894 346.913095 0 10.49720705 15253.95218 6825.668851 18761.8245 4669.611383 21615.05633 0 0 0 0 1047.523774 4472.751203 2169.359956 0 +6572.505887 3401.514661 0 1967.536197 19156.23942 7377.242331 19809.47427 65.66981912 5312.078954 35700.68646 87.07468086 0 0 0 2132.082777 2913.267467 13848.55961 2269.973603 4848.070552 0 7520.236761 1083.206553 67241.76298 0 4691.882291 0 99.99338748 8775.991165 5127.8379 0 17978.29701 22135.85059 6408.357072 3370.76701 0 5469.818741 1477.856539 22216.1209 11341.16177 436.8187369 1.948563695e-05 0 16715.42077 21143.09546 0 0 45709.74617 2431.498301 34633.00304 135.916205 0 28963.47782 15933.36679 1.539716646 40511.40545 99.62971655 7609.465218 4638.290178 4047.160727 559.2807215 6444.459867 17358.06964 0 29743.78113 1964.84573 5331.227223 1873.448529 409.5207949 1330.290953 8192.599468 0 347.6450085 11459.66848 20085.86608 0 102.0527436 4338.77262 0 52580.63326 50378.48328 12448.6826 5580.315891 902.242588 431.6288602 312.5018771 4257.374227 6867.765123 6929.857152 0 22524.69185 5876.260663 11210.14409 0 1816.322709 18225.65243 1504.396085 222.0509093 26160.84836 30643.50002 0 0 615.2910629 0 37171.39408 4327.344856 7423.39198 0 6442.09361 72900.42672 0 0 1356.55704 12495.08218 23651.42365 70733.99317 280.3209182 0 12662.34107 83028.40631 14847.47163 154.9089349 33989.13555 0 7040.54946 8730.226466 6925.110263 7655.011798 24192.63656 2577.546871 9732.996051 4795.603013 19736.24814 24655.53783 7315.314765 26287.19971 10684.91768 100.6971025 0 6604.194772 61103.84031 25182.67068 0 852.4339206 11643.00429 48018.04799 188.9876297 978.4768824 0 54307.31827 2052.392626 2.895318862e-11 66202.39557 20990.25123 0 51123.93198 13091.11656 15352.08531 823.3785053 0 1496.455379 4492.128319 37502.13319 0.01141042943 644.6666665 6720.018861 0 656.8529111 3718.96693 48697.92234 1325.861008 18235.14085 6894.318883 0 0.02574134146 29371.87906 0 28400.38939 13689.55781 0 34846.02934 382.03402 650.8635144 20201.80611 387.3284178 5195.72356 707.6527446 39402.36183 0 0 4451.094391 0 0 9986.066888 2602.375891 21051.37838 18678.18213 0 2096.595045 10910.44397 595.9562045 0 61652.11186 18885.59136 1072.946038 32573.66014 23485.41199 11245.20229 0 165.7739479 209.578454 0 267.7529599 24054.1338 33013.02574 112.8602778 9859.91127 2500.041318 0 23618.37623 43467.39483 65227.81097 0 1524.479226 2183.472649 21020.46888 0 1569.194616 1037.968961 1416.82353 0 12265.95753 33.25132473 74.87731232 200.8348315 0 0 263.8481396 0 49767.25938 5237.597436 4462.29301 0.01201883559 61744.73377 4757.820013 42359.27964 141.1702291 38016.15902 38377.76952 0 0 887.1325421 23171.71838 9923.742088 9.464800517 1793.717038 22640.77947 1883.70078 0 521.359179 0 0 0 0 0 4180.265532 0 3712.413149 8522.474415 2579.412386 10023.75582 0 275.8625677 193.5878254 0 0 0 9360.270389 34051.46572 13265.98587 17382.23979 0 7001.958822 15258.29005 0 0.1488591607 0 2229.279517 8003.452795 3.47587213 31934.93057 0.1838161786 4077.028703 0 14039.94517 0 14291.93165 0 0 0 4245.500589 +0 7895.774794 0 0 0 0 0 1727.211347 36342.52631 2264.822036 15376.96559 0 0 2795.435626 18188.71838 42675.83722 0 0 0 35858.5398 31826.26035 2677.302419 0 2675.172923 0 0 26910.62016 237.8729466 61003.83496 17573.67762 30938.50838 0 7069.342653 6.275553126 22502.73208 0 11874.72922 17596.43611 32345.60746 4451.850802 1.20263294 0 10468.13369 6396.388851 6697.85289 4871.998869 24423.62854 56976.06181 16997.45087 41677.18793 0 8227.468231 11846.58121 3845.790667 3335.482816 12967.81057 39.12339391 2536.856933 9794.415455 46058.1428 0 31.90588568 18379.32291 0 34994.39906 21509.15981 0 61743.39502 4454.722251 3249.858329 0 2993.857444 19989.69131 16.60600183 71582.96652 0 78642.65715 50027.6195 35920.88539 1957.675496 8768.242781 80742.9301 1178.921182 100141.0234 3215.949752 4124.78792 405.2207539 21985.01065 25232.71235 23776.92301 3329.521591 42184.45709 39926.86272 25547.9517 0 24439.39427 74278.4924 51687.22022 18630.9608 706.4618368 2470.330956 30459.12943 9737.551677 131.7804408 66309.57239 43851.37206 52046.99866 18879.79791 32146.93949 11829.73564 1165.560719 0 54413.06193 165.4231121 52720.49429 0 8448.874144 4799.537496 2699.293458 11573.90521 0 19088.37868 22838.6665 1.576913786 4508.768057 26949.25185 2896.114424 6283.348274 30941.08559 51847.12363 40340.3824 9152.610734 10650.54633 21854.69854 2252.17848 45027.98204 22373.60592 3222.503535 4730.839263 7739.467108 0 20071.29776 4563.569758 4064.911117 1341.010187 48443.42116 3365.406221 0 24368.4831 157.7018326 0 7514.430382 9573.892144 2522.074628 12889.73133 940.9429529 0 8084.145738 935.9261385 3016.948125 118.4019375 0 5303.004099 0 20999.65172 2834.213494 0 310.0482201 3935.406842 67263.6538 16235.5067 0 20148.23195 663.3979529 16432.80664 133.125258 3878.802677 27019.42018 48154.00032 9974.448035 26935.59573 62379.64126 41768.47159 40358.37 1590.695493 13739.94664 54417.57778 0.316222803 338.9121338 0 22905.28185 0 6021.61016 24790.58841 4440.953137 19140.29676 11658.39649 0 26304.67882 28031.78644 445.5125081 0 0 19244.18633 35033.12086 13490.91058 13226.75233 21596.39383 2430.402161 15866.08506 0 4139.18678 8709.608102 5856.152539 5223.338686 3936.160412 15649.22324 3204.914395 3370.308377 14126.83842 6704.912621 1690.942183 0 46757.33798 8757.723934 19950.46289 497.8787598 0 3648.972676 14217.84235 7385.348339 3.00346401e-09 26913.54654 1.52300037e-05 28.19704147 6383.313574 0 61402.67218 6766.218346 0 52026.13804 15914.77847 49893.65364 3510.845082 3172.764545 0 5883.395372 1776.156141 0 6181.223819 0 0 9549.946941 0 2060.693694 8665.710518 0 5356.786854 24550.24452 0 0 1757.824875 302.5192658 12698.45166 0 3279.705483 0 0 0 5635.524079 1262.909039 17291.54672 6232.168795 281.1234656 48166.80783 15472.38659 6785.388341 0 32880.57829 171.5122316 2413.026701 1860.459162 23541.58814 0 5996.081502 8907.217887 0 3692.661741 18692.70946 0 25487.41999 39629.11043 17886.09758 28216.16251 1425.070925 301.6822924 10510.7938 1652.771287 0 1333.587221 +0 359.8989194 45549.40546 0 24113.30988 0 0 0.9496520579 123.7503318 12801.00451 17086.97656 3542.35768 0 0 2.08584105e-14 0 0 0 22295.72227 146.7280909 0.5095794176 46640.42967 0 28520.23016 27443.98605 39177.48877 2040.261552 0 918.6756085 0 13935.29823 20160.51777 81750.87985 8582.570105 0 61462.19629 0 6184.334707 499.6610612 13659.17313 36726.96366 0.17173275 972.4861923 20416.97748 27249.22522 62122.34605 595.4393294 0 14223.53333 872.6848697 0 21043.21053 4344.202985 24398.01759 0 53032.03575 6346.543652 22641.56039 4230.797014 0 63134.42615 0 0 0 13027.17181 15726.23563 0 2091.494117 33989.22393 0 0 22424.68493 4218.114671 13460.68358 5751.801466 24213.57755 0 42310.27452 6051.128259 48321.70592 42822.50157 19830.10359 0 41210.92579 6183.707066 33113.27661 0 0 2143.009119 56661.89766 18357.82476 0 63181.44293 0 29788.09781 817.2412905 0 23920.80728 0 0 0 29839.82682 649.6332443 3089.512705 60397.60631 1835.415599 0 7840.291034 0 7108.057508 48754.98278 12245.31489 2647.884026 13575.9084 9481.66143 6500.076643 51863.12438 0 10166.23142 63880.24956 0 18618.48034 7178.092911 6210.612072 81326.10717 0 63.03622731 0 127.6936066 0 14665.96052 2512.87048 41156.60239 2396.815925 17021.85596 8370.955684 18204.65048 9460.06814 173.9225189 0 28305.70763 2669.337884 44299.06977 21275.88566 1871.397011 1146.183021 9251.462851 4144.99066 23278.1618 47850.76894 4463.763193 815.6600764 0 9917.176885 1968.909697 17105.26758 15741.34317 49287.15821 0 0.4234109786 3324.628572 0 0 401.7137452 43737.17883 0 16153.37052 28542.03507 37824.29869 20376.40491 14015.32507 17741.22967 37978.38612 219.0408446 13939.54329 539.8556891 29131.13631 12275.10608 0 13812.59369 0 296.8962211 0 0 40273.04042 37224.81329 18974.25135 2770.327273 4811.910359 0 36.55390939 993.213275 7992.301495 12415.18759 506.1422172 2255.790149 2010.30716 36320.46855 4.282655861 119.197963 4093.233436 48932.52706 3398.068282 42975.17458 44129.91581 59147.29311 0 22834.03062 8432.321927 2082.918188 4564.760533 26016.78937 6900.173784 0 21558.35038 0 0 2950.567551 0 17510.02643 57406.81462 2967.812953 0 0 54755.81162 25822.20874 674.3580216 0 9687.090436 3731.087247 26252.13969 201.7188642 8946.967319 1816.07588 30244.55913 25554.17015 8654.9031 5612.896862 8522.410055 3753.654963 35028.08285 1800.825835 0 0 0 16852.53086 455.7444897 16843.34715 0 3414.24924 1948.188093 6811.446558 7508.30218 0 0 16777.25786 0 2103.50811 0 0 5022.545746 5118.77726 22136.55506 8235.807808 29604.31681 100.1710076 29.25674516 115.1058842 1991.400282 3543.783863 20526.03215 34.03999613 34.56714329 0 0 17.14276254 52466.2407 0 32996.19916 5017.812578 132.5033433 1469.605223 3122.879607 1692.122233 0 7960.793685 0 3408.123015 57904.99935 0 62.41326088 20693.23143 13093.3798 0 0 7472.094303 0 12441.73456 0 0 +0 0 0 0 0 34625.06398 32894.81399 4156.660746 0 7996.535327 0 4641.399556 3374.895594 32119.51049 0 0 9394.215145 1334.98302 26574.18484 214.4357115 0 0 43599.72682 39947.28505 2627.416991 0 9195.584005 27362.92655 75693.88987 47483.81993 0 1730.097406 0 76863.00874 8680.197139 16343.2595 8804.118932 23144.00505 63.36592458 2294.409643 920.505357 10150.41957 542.1684122 1252.001498 0 4023.133957 0 0 0 0 0 0 2569.446599 11823.06552 52266.68697 35516.83071 0 262.2521515 0 0 6134.551492 0 5652.141299 0 0.001072597294 45201.78076 62105.64852 18928.34203 1075.517386 13695.89789 0 8147.649252 0 13444.63414 0 42.35288617 15718.6621 0 26874.90584 3166.000703 9725.802705 694.8801331 8994.002515 8803.736402 3910.981391 1454.970296 41887.79911 8279.714076 382.8810906 13982.8937 18730.87168 262.6546202 24562.50597 1452.06139 3471.126724 5389.216798 24538.92149 14232.27168 0 0 0 20068.32619 59134.62007 7896.85754 0 5341.27376 0 0 20.82324741 55.55395143 39553.61651 1.496823388e-05 9786.415314 906.0295162 7332.512651 636.2451527 4140.316265 1956.37541 48982.05931 49735.58337 26297.61715 18079.48784 3413.907066 66651.67913 51030.56961 5471.233164 43993.78443 8179.811052 0 7935.858643 9455.700158 41924.13789 6261.010728 209.6334258 5212.916508 31858.90601 28667.49187 62718.47415 2556.139361 37477.54746 0 0 70047.95488 958.7338538 3149.457317 1048.982026 0 52968.71956 10912.05073 61476.31119 4292.273945 51506.01036 47.26822401 22542.02926 1583.222561 605.0789234 8052.576511 33325.77843 1.121541872 0 0 308.1310527 0 33742.05376 351.2464461 2467.719024 11085.3263 97.20609243 5329.499281 18596.72264 20211.43335 24800.26179 0 488.0720352 26375.34081 2027.590293 1936.311538 9766.456978 31913.39737 678.898499 25886.60738 0 13.09235323 1955.856689 0 0 29832.32083 179.1309582 0 7586.804265 0 58875.82669 0 25510.30283 3278.272923 5721.810388 727.563863 0 36586.25345 32832.09359 28092.78407 1428.049437 48121.39417 29167.67276 6049.887914 0 3972.993855 2824.508508 352.1518583 0 38033.89294 15483.92834 21908.6383 0 21573.87612 3088.166977 4022.796582 53031.21067 0 0 1832.764226 2811.626926 13100.91613 38.51652231 5300.0072 23675.35151 18631.23385 22225.96319 0 0 0 82.21712249 2468.466677 46438.78521 8712.603005 42834.48162 24478.14137 13796.68093 1635.727324 9714.313986 62.50758219 5643.268742 88.41243094 8017.909437 14803.78342 16685.86879 0 37239.71505 0 0 0 9732.129403 6951.81361 6446.30834 4661.562166 3776.437191 0 63.45628529 1893.81825 50153.49819 319.8614019 8119.296946 7582.111588 4531.495565 0 3586.913947 33378.73507 0 0 6387.276922 0 7961.504727 0 0 0 5070.770781 4691.485801 0 2779.842721 12784.1806 0 23759.46644 3641.382408 34956.4248 0 0 42.19715228 0 95.16636507 0 1792.14279 57604.75508 5882.740081 32322.77347 19230.29278 17946.41699 1805.43854 657.4896637 0 4255.911342 +7029.576248 0 0 5715.25936 0 2828.9397 0 0 126.6538474 0 0 0 30456.70367 1895.999411 0 2889.726635 1572.107719 0 0 32025.16351 4818.313853 5540.969464 0 0 7526.967183 66760.97751 0 2.61209534e-06 29162.71896 2558.640844 6490.064273 0 12386.64257 4937.202843 5825.314758 306.2893484 46755.11411 8375.930035 0 4539.830427 45894.84675 4453.898873 0 325.1407698 362.8772008 0 0 0 14778.27007 17974.63718 2055.813619 24332.77329 26915.83569 4379.202073 895.459557 20562.40366 0 478.2056779 5112.463524 15975.36035 6480.968407 23402.04706 41393.63221 0.0003067161704 35032.27996 5857.815154 0 11486.59808 0 0 0 44.51869129 24636.33279 2595.943554 278.3851069 19343.77273 10055.46119 0 21191.38498 0 0 7251.597242 0 2593.578808 7005.838617 22699.4789 35919.30021 65761.39516 4131.674839 35419.96737 15789.8081 0 0 28135.03153 28569.09743 0 37304.90735 0 0 16419.12186 23589.72898 5512.270462 3983.890498 36164.80907 0 0 261.5821179 11214.86385 0 36736.03626 27204.58984 423.3617231 445.6343966 41331.18658 3391.556477 0 15.31311024 0 2501.039774 60311.31848 0 15589.20282 159.3104465 0 807.9667866 41313.26049 0 11429.28498 468.4121733 7421.851853 130.2348798 43603.94861 0 125.0914844 94.72938432 0 0 0 12781.91993 53.87539123 29767.49584 0 84647.58551 37025.59605 0 0 38594.99457 36281.79577 5231.547475 7513.656793 16330.44885 34371.23213 0 50272.0245 21257.98441 7444.334453 46757.23908 8585.144362 13630.79909 56725.68124 6094.236241 4148.300753 25901.59484 6532.15664 7600.916913 0 1789.223704 7642.096954 37362.54904 35973.47035 0 13257.64459 38540.35203 4071.642792 115.6556618 21644.92754 67474.75985 12327.57095 0 19605.76183 0 5572.5474 8123.976103 3480.056219 0 8540.290354 0 0 0 14189.39111 0 31771.39277 21.79536729 3304.714148 15614.95103 11505.92673 100.5341641 2.915234916e-09 2679.834168 2239.018507 5406.601703 7099.671569 18631.0901 45.2825114 14784.99496 0 28751.17989 58362.10731 2392.85849 8504.515696 520.1600483 5931.47834 2429.511436 0 57471.55558 223.8023458 0 14284.75954 21470.19028 3561.973062 251.1135474 31300.43797 28015.56911 0 3185.86115 40831.04627 1909.384293 0 0 0 2360.724832 0 16702.99628 276.2238306 17444.17178 30693.63126 57.26462006 0 0 15650.56691 76.96218239 3255.833329 1403.311686 0 4185.844613 31634.83409 0 0 52448.67137 14635.78139 8227.512422 0 54842.6036 231.5162808 0 7213.263342 2002.586167 11117.12363 0 74209.72663 2647.274502 0 10185.22394 0 72.23912438 5728.649679 1243.321313 3481.571062 236.1076962 3322.789598 615.0105958 1774.694415 35364.84995 0 2687.434862 3453.87521 32951.04017 0 4591.781609 0 0 4429.766807 0 0 0 10965.88726 8357.812054 8015.693419 177.2178924 0 0 12354.31815 0 0 623.949123 4366.880233 0 0 0 0 +0 29278.83318 3110.614801 850.9374072 600.2589898 1392.159335 0 49437.28332 6099.450157 7913.064386 0 53274.13481 46805.03677 1396.275284 2317.618062 51881.54088 1439.739226 3103.499167 0 0 6466.441043 0 0 4397.003955 24254.2233 2329.119185 33681.48702 0 0 365.1895402 1760.622254 41573.83086 0 0 1509.62148 58947.80783 5249.55274 25240.56548 2766.51572 2118.688949 6924.809724 7354.912247 5899.984782 0 0 5302.339487 296.6444419 3597.418127 0 4988.615853 2360.482987 5243.269242 0 15501.77138 34721.76036 0 0 261.436473 114.7633723 1671.956038 0 19961.59988 43373.50904 0 1385.091042 10170.15554 9389.635011 0 0 2405.566236 0 187.8926121 89392.84096 4818.435026 18979.77319 29081.18662 50476.83652 4487.110624 68.57446022 0 33520.54124 12988.49816 1168.776434 28891.76435 108.264904 6859.785971 64393.10488 1201.837729 20871.1868 1824.780514 19452.85643 22539.63641 28119.50485 0 41807.86748 26570.70329 458.8431848 0 3294.092086 1820.172601 811.6511783 19465.2854 10778.68084 16922.31708 5021.279652 21301.09467 2101.808889 0 18824.32268 74555.85856 17556.11891 3874.988953 10686.50531 9486.173067 4968.966892 2332.328237 15018.7355 0 2815.02466 0 1534.222849 1641.406085 8963.548538 18485.03815 0 81515.03894 0 1380.983544 44.48693786 0 10874.04519 4804.61752 38045.61964 0 7820.685843 8667.600253 11123.75148 31.03067912 0 746.3394629 0 113.3063981 5387.414909 4636.433751 3985.610424 1100.427529 550.0102075 36.67825044 15097.89932 5761.892914 0 14515.54895 0 34483.59379 33438.67524 29827.50914 3173.584287 0 59986.39564 3.335245284e-06 11860.95334 0 0 14662.0139 0 88548.10439 0 0 912.6099369 54703.57561 5847.608677 52599.65062 7558.20336 2836.320643 11397.43775 63025.71813 0 4314.896198 7528.648724 37143.80586 10929.59675 8408.281986 83148.43798 14962.60131 9593.405674 1392.759985 27394.66934 2284.343745 21037.04393 17417.35178 3359.751986 2935.059126 80735.69895 0 0 44608.65395 2063.356917 39475.44165 0 32689.31782 45954.54016 0 5753.627868 19529.36478 0 26551.57894 25561.15828 0 2.917511377 0 0 1250.688157 7028.360753 25240.69594 14728.46072 7122.564401 41673.30049 0 631.6101756 8370.859613 34290.21867 6800.292201 22943.40204 80649.88372 33280.05899 3028.184868 3385.111106 12005.14393 1803.518455 24723.28526 61076.99633 169.4890099 11693.47073 6873.924123 5421.559866 0 2876.589402 11108.79278 0 3.628119212 0 6720.003165 10355.09293 0 4531.628598 680.2006736 18383.39409 0 10107.44224 51274.2608 3527.706316 0 0 28840.89051 21348.63226 13582.91636 29468.45827 8068.297133 19.85516655 2438.369104 10755.46111 0 0 4074.033098 0 3.804103514 4676.99169 51544.61283 7064.958167 2053.734527 9349.747677 9319.655261 0 14937.09409 7818.48491 37697.73721 67.94936261 0 4375.347283 33.75399617 1182.143529 0 0 7086.186139 5693.912201 0 20305.86359 7077.382256 21825.7028 27541.44562 1379.427219 27188.04793 0 3456.405513 912.6543292 0 3453.600237 2.192659478e-05 0.002574720287 12705.71016 +2715.347541 22236.55386 90.15376009 34070.19216 0 0 11565.76573 0 5068.777331 12023.56855 2.255131669 41551.19144 3776.491983 27371.92038 0 0 2368.373943 2200.264011 44775.23278 0 3440.237756 32233.02375 0 0 8180.197824 16691.10511 6500.127578 6215.010388 0 26343.09898 0 800.2767499 0 0 14721.59777 1.088929929e-05 0 3329.747498 19.52229749 0 0 0 7384.588989 42020.11509 12300.83783 11274.63202 2886.473236 2140.160507 16200.38435 1133.258354 1695.138442 0 23402.65533 19294.60837 14420.71051 17075.39025 20307.39545 9343.605721 0 6114.264154 201.2930226 31966.0804 0 734.9283934 1467.943767 0 66580.23588 57925.67886 0 9177.415939 40.30817672 0 0 0 73442.47571 4810.186106 19485.49162 7.955883003 1780.898775 46916.79961 12644.61941 0 0 16.53769375 9370.921014 36918.86861 71189.15949 16123.41779 0 1574.813966 4546.956748 0 25374.56567 35.78019514 0 58910.46165 8760.553614 20082.65397 15482.23124 6653.749142 9898.667363 27308.6997 0 25210.3222 37452.61623 51055.51446 5583.304198 16370.70885 8801.630818 51019.64931 2362.372591 11498.28589 0 19161.02404 1646.336869 13409.45937 0 26059.97555 61988.16549 8824.960704 2403.864927 56071.19467 328.7210544 39946.80053 0.01333590053 17617.25279 66726.88001 1491.724203 1610.781303 0 0 7510.800208 20519.86254 25633.55073 3105.325898 0 131.3218172 0 4168.296286 11251.39506 114.3893248 311.8070578 8644.165349 21829.55474 0 17205.25607 11174.26091 7845.350354 3806.397026 39270.57112 94.29462873 29.7915666 8926.246891 0 6964.525461 14789.18839 23911.51979 38772.82582 0 7780.225342 15671.7207 11405.29782 0 7972.2763 75.38645303 11498.85555 322.822623 0 157.3485225 9604.548216 64384.04113 0 2612.997522 4340.227508 20346.93804 26067.81486 15552.34822 45024.90585 44088.61704 42453.90365 10513.10825 27130.40418 32840.64533 26205.99067 12484.60041 561.0909355 4018.533371 0 25.00389923 3690.173643 168.216435 5122.049376 4619.62618 19129.59934 3602.775886 0 2782.373137 9210.578268 15719.73974 664.7372732 0 3287.868588 42.79965907 2044.440502 6676.449316 25021.26826 2383.318569 356.0230012 3486.155921 2063.601787 0 15986.77172 44192.32571 35593.79931 6241.523751 15105.99879 5470.681475 0 304.2159187 0 55963.76955 49053.29496 0 60.60256689 6253.574366 719.7476929 60314.38133 0 119.901172 36388.05978 53004.75674 0 4024.754479 0 4041.631191 2462.272012 0 28350.26569 44895.7313 2766.035161 178.4189274 9320.343855 0 0 0 3474.215843 1025.425952 0.4338812419 14745.21403 8838.95835 0 52.57826018 2544.111222 526.6677451 0 14348.22505 0 271.4912911 4672.723324 17643.22927 1717.212198 0 2671.193992 0 0 7872.675305 3883.32854 0 25893.48755 0 8876.615205 11985.23858 50693.63332 0 1325.257455 3044.114952 95.18867542 0 3987.663139 15552.61096 0 0 0 0 8.270627249e-14 30793.86018 0 0 10039.48222 1497.238489 0 71356.05661 1114.311812 300.6653727 4138.959665 0 0 0 0 537.6747725 +8271.975986 0 20418.32539 6951.444657 41607.10119 0 215.4434958 0 134.1847792 0 2997.55877 0 0 58031.75906 0 0 9454.715707 0 0 3432.478752 66.43738539 3475.131567 48190.20567 6962.172896 39.55845894 0 0 0 22587.537 265.7018026 134.2836999 13730.72832 0 56366.4694 37598.19323 0 0 3.508269672e-12 3007.756954 24014.8741 11291.74356 44874.5829 8.69220227 1077.20526 7499.265795 1413.100012 5330.711647 10060.89079 58335.84873 39702.42457 16753.32022 34711.16247 28054.86112 23114.4324 322.5317241 0 21125.5846 76376.60717 4352.397135 47.66294752 428.3191384 1911.323131 18399.7995 0 71449.97887 20054.04922 534.9219092 575.5457059 144.7743295 14287.5108 1360.621677 62240.06134 0 44502.67337 17636.58272 0 847.9762678 23474.92536 19764.18637 34217.26557 3043.537097 12666.5227 15451.66055 17231.10513 12025.45888 0 0 0 39677.38503 65786.22097 35796.6883 6420.261017 29561.40398 693.8371076 10023.13345 0 46741.45993 27093.29147 0 9889.897559 448.9491544 57511.6165 1532.056935 39094.08295 68932.80013 8554.73148 185.2218187 18.46325279 27102.22271 2604.085192 38380.61452 0 45689.34936 0 17074.17787 27943.90375 21549.46883 16016.78247 55579.99438 1831.680474 29289.82536 6094.287619 8706.738523 0 20413.2818 0 0 5015.612955 24464.01607 34037.83099 0 29128.60823 13407.0751 42296.77035 5715.268119 44033.29115 53280.1649 0 24709.27156 78489.53675 14827.86725 2479.760263 2073.938428 462.9355945 2850.294644 0 5183.984997 0 51642.32537 10363.26478 0 0 21634.91263 8633.863871 9597.380203 65175.22156 35646.63719 0 5091.487717 1584.870121 0 6360.036889 3821.695367 5620.888055 0 4442.725146 98.22853526 7285.567939 0 9419.301124 3982.405542 3797.169183 10128.20481 17585.95921 0 0 8924.637308 180.4072698 58248.75206 17266.87927 0 47232.60723 41615.4602 19883.31581 6507.009256 54237.12 24355.88385 28412.97284 39197.46343 0 49645.51935 666.1119788 8713.179434 0 10202.7274 0 110.4863993 27806.45704 5174.015684 1181.698105 36681.67151 13591.99668 9672.103097 0 26026.98303 1636.478748 0 37860.02784 18655.06287 14843.03767 6036.103606 0 0 44502.56669 14439.68269 0 60568.761 45591.3541 23265.05887 0 29243.92322 1713.082461 534.8523556 0 0 63234.8572 4634.16325 36559.02501 340.2973005 0 19559.31063 254.080447 209.1250552 33156.31987 44.8646704 0 651.1659309 13202.86285 95.16612545 0 6396.799694 8013.826443 0 45764.39908 0 18267.75638 120.6510039 239.8574938 0 13002.99686 38311.56511 153.0128316 0 23652.53314 0 0 2378.840767 678.1731107 30773.90667 1750.400011 29792.34059 20298.70033 10233.16085 45171.96377 36576.36351 2624.559423 7342.858878 3965.892905 2613.951888 5356.869093 59.08764753 0 0 1024.260157 51.75096693 0 0 0 46524.09929 0 150.7325528 0 0 326.0983089 8008.803638 0 0 78.54813609 14398.4465 48.4300997 0 0 0 58534.97298 0 0 49.57487341 713.899589 0 0 +18102.48621 0 267.6020951 0 6351.027762 0 0 4871.400445 0 3915.036642 4798.213046 0 57261.91028 40017.98968 12012.02015 0 0 1275.601078 349.3771618 0 0 1053.676515 468.9650076 0 14183.05107 7695.455403 0 0 28799.15541 35697.36341 0 82528.38096 1.596260966 1511.038009 12436.90376 21271.69462 1936.361025 58473.04169 0 0 0 9176.188416 0 55165.36641 0 0 0 13497.35289 29849.09581 4671.093447 4814.497197 0 40158.13567 23.1958185 0 6225.118836 2481.505369 42015.14937 18227.63198 14394.54382 0 4073.102365 0 4093.787671 56214.96954 0 0 4253.08237 17947.98682 4298.966307 0.3595792804 2811.702761 0 43.40980043 6050.901201 0 510.6544436 23328.96786 69387.63231 97712.48736 0 190.9707764 5628.504977 72842.06675 66469.78899 242.7209552 42767.32251 27052.56641 31004.52885 33626.33883 39118.63839 0 9320.191569 6359.404888 11851.29274 2132.346853 68602.28089 1435.833724 0 0 0 0 5928.27176 0 8966.127239 4155.816916 42614.20725 18779.67378 15764.35818 7389.577016 2412.697543 46585.91002 0 10324.99611 0 855.639821 0 0.5966247771 0 8303.551387 229.6383613 0 1.01650352e-05 10253.63673 0 0 0 0 0 0 39.27439808 2750.574042 19765.79852 0 55244.84989 191.5920479 28672.03128 28185.3162 0 1815.268341 4577.687368 2381.570695 0 10266.49307 0 3565.939254 90363.92974 18009.74399 26015.31817 20024.85871 1606.866742 28365.20285 30404.61314 37982.76502 45414.62137 286.5084366 495.235691 210.9526136 0 64846.78937 0 0 63003.99858 17809.80668 46833.59915 4951.01081 6194.512256 23979.394 40095.19023 0.1238466827 21323.31619 937.5106652 4845.284724 359.4758418 11262.48825 132.0343687 24146.86331 0 17408.78435 5582.318834 31814.5243 28154.04943 209.3588618 73693.07205 32492.22426 0 55218.81441 0 29309.88269 19166.37939 3.876041718 1755.638378 6863.954743 10473.41573 28699.93169 38939.8296 46.51193465 10775.59163 7984.026987 5209.611931 0 5321.369155 4962.675931 4313.645789 46210.24048 3127.738192 17618.33897 4382.215315 61036.32483 60.85652904 169.4929744 0 3.302634861 62695.35117 107.1808649 0 0 17775.74363 4942.158971 33467.68097 0 0 0 9221.134926 23143.79022 0 122.362123 0 0 4405.472161 8493.910876 48.20542388 1997.058966 7052.761962 456.744474 10255.36518 8534.264131 7314.603558 49223.03926 269.735227 44438.95645 20735.67748 223.1598769 0 18757.22615 0 10557.15068 0 0 53932.66586 3156.844985 5101.9397 4314.448622 0 0 4973.620829 0 0 0 22.01339517 15581.94768 51216.21127 56181.98707 0 55329.13925 5685.011942 54743.05676 20391.07392 0 15714.22009 1681.734325 0 11026.14674 26.06749363 20798.63378 0 43.388001 35233.00169 21567.85295 0 225.9938098 0 0 5536.89586 1566.203957 38493.09836 0 24009.19052 0 11731.03554 0 0 0 33887.61417 0 0 3323.943132 18711.38683 0 0 +17471.4554 2783.020316 3613.576113 53196.38726 8900.516432 19926.77734 2.764040479 0 0 2232.407671 0 3338.345067 35133.55249 8272.383153 38414.68792 0 3063.710559 11150.90676 4971.584498 5198.830183 31364.40122 49.50464028 25583.82316 0 0 31134.52863 3399.50293 10803.91863 21689.15413 497.8187817 0 61493.7369 26081.88286 0 0 0 0 8913.785499 1619.24987 25683.40202 4785.225862 29633.14414 8653.537883 17931.54205 25399.58341 9524.811228 78.51121341 30392.85652 11700.02269 4149.931948 576.1682687 0 47.44382276 1631.747379 38654.4717 0 0 0 4366.962352 6239.412393 232.7630788 34076.77806 329.2906983 0 18597.45545 1.137113809 0 0 56285.41564 0 0 26.90828899 0 10791.00663 73474.65145 14274.29341 27950.24185 19976.67996 22154.38487 21590.44579 46755.5305 0 44614.49783 0 57160.81393 37746.79165 50745.41145 0 31053.6682 289.9325826 3907.499208 20262.28043 56869.67393 0 0 8434.142602 14019.26478 903.8496603 3132.9226 70179.41498 49372.66008 28229.37157 58244.72502 35873.42999 0 7907.423561 3435.652844 17755.80613 7019.62196 29564.10951 0 1966.517103 4277.4277 0 13914.69412 109.5957663 53395.33336 0 4957.195476 35.86750157 11679.79359 15588.21259 0 21878.92708 35499.40675 2160.689422 30014.90946 11683.32906 0 7948.838016 0 12385.65846 56279.39364 0 0.0001772933316 0 2.207779004e-09 8948.993607 39664.75362 7142.503917 7968.437334 0 10828.60661 53202.68153 35955.36611 6421.359805 23.41035025 7683.748014 45980.77017 26520.62843 10856.25032 19931.78324 8703.344907 190.9728844 3164.730596 0 4735.190901 0 24415.26418 8673.2882 19453.77358 21070.14356 7699.599119 0 7115.362561 3785.704602 22104.7665 0 26565.5608 745.0946988 0 18900.45341 14914.03379 28399.38674 8224.619799 47932.84754 0 51527.37515 12734.10319 0 330.2996796 0 0 8425.643622 28903.53308 55001.45905 0 0 8604.818636 21158.27133 15486.62632 57093.69682 40528.22004 55515.00245 17048.84842 0 76971.44751 9381.321502 3214.814346 137.0688432 3123.745626 256.2383467 0 38563.09552 141.9511621 7486.856005 23822.59473 2003.10543 24922.47579 36183.63809 33066.99543 0 85.28519265 302.3247459 10753.04559 0 10486.86341 0 15449.33961 4502.019216 0 25764.48828 0 4535.635061 39889.18227 1739.757207 1349.094884 6065.405948 0 45703.07231 29770.58581 3583.442072 28820.88268 28440.92646 64557.73068 204.4424013 0 11617.23613 3671.973737 3360.953304 0 18055.70576 0 10627.36577 0 5280.003713 15249.39407 5281.667927 71807.79234 30913.50904 6780.403051 30548.1785 0 19990.32832 12731.67404 1305.116996 0 0 4409.991764 28857.49688 58912.75592 38753.38716 20622.68045 0 23195.86666 3537.168548 1968.399943 8418.792139 0 2527.795621 21321.84648 18876.65583 2031.381783 4982.757635 0 0 6326.525776 0 2299.934079 2209.312157 6091.892463 0 25191.39192 27705.56762 95.9438829 0 33072.74508 3014.850027 113.2793032 12202.63757 0 380.1235502 0 4773.880893 5522.079047 2236.283865 31930.2409 93.84574166 0 319.7771146 +36033.1867 0 49007.69493 0 0 0 0 71988.28507 2522.593019 1363.993938 0 0 20053.76543 1576.764292 24837.14117 30410.29408 31302.22726 22885.36754 14430.43768 24360.18344 45809.03485 8959.440241 9311.761895 0 0 34516.56468 28432.16629 10310.83795 3462.323391 63.39966035 5227.662159 0 0 18155.47121 2088.440994 3182.981049 1289.389653 568.7263195 0 10016.48986 59662.17871 2079.056026 3680.975635 17181.15022 0 34098.17306 17789.11633 45222.65589 0 0 49795.82691 61636.25166 6440.914826 395.3836796 8149.626734 0 113.9492686 10011.77508 29235.82789 0 56151.41089 21315.06302 0 229.4902563 5588.187654 2119.208656 22039.18497 16744.28875 37674.35602 0 30506.56826 0 2343.985882 0 0 5316.97751 0 14180.07495 507.2507445 48.105331 0 1735.897291 74.95799456 16511.72028 6296.378941 13169.17559 19881.55817 7211.447406 0 0 176.5503746 44623.44729 25411.35757 4553.224194 14293.65015 15267.81952 17283.217 0 3895.694248 34082.15435 6470.254886 33419.58984 30520.7738 4120.946349 36.80019293 61213.15224 1478.716776 390.6191349 0 53636.28206 39809.82526 131.6665875 1524.552393 0 17567.30956 0 0 952.2296218 0 0 6076.265049 16337.28891 10778.73778 59918.07418 1.382915334e-08 18977.81842 76933.79105 0 35452.11551 48690.25712 0 15667.93187 37712.08949 19767.74722 4826.803247 40988.84427 2124.914075 15840.32412 2041.701264 5408.823613 0 16157.27291 22038.38992 17221.59839 8147.529006 36348.03193 1160.546258 2058.397121 489.508731 41649.04123 0 1430.425992 6531.747217 2738.966191 15591.79789 0 1038.184741 4320.26984 1560.83421 68664.34246 4925.821957 0 0 1904.821892 9460.593139 13926.15121 0 0.008250186504 34792.80722 19541.12802 3800.03852 30723.34319 93.76684744 0 1618.163426 2454.721241 4076.455309 35530.14071 4274.929126 45683.6064 1579.264805 60381.14513 2886.331695 0 9409.47786 0 53212.25562 11265.40878 4771.293805 58027.241 13483.8498 0 0 5551.837067 772.4213651 0 24281.85897 7573.109227 8130.647556 0.007774534805 15554.99136 17614.24804 712.8255356 1133.488893 29550.11003 74.95737599 86.94646776 13389.49141 14075.46087 15644.91639 37015.07777 4449.23527 8704.150853 23630.0148 0 2784.115684 20095.02134 3877.581808 79.26263642 27392.04716 30408.33538 58237.66621 0 13779.01119 3678.047551 0 32868.18801 92.99582348 0 0 21345.40679 33.50230869 0 7735.110988 18703.72855 11722.14342 33.83866108 8437.372086 12649.98354 17842.37499 0 17626.40609 0 1304.921931 0 24307.16231 9977.667851 19943.65437 0 0 0 16831.68232 0 0 58666.42167 0 0 15094.64848 20.72730376 53705.66257 532.4398129 9926.283982 922.8403109 7172.850846 5404.225858 0 59819.1863 0 418.8443329 581.9070765 29878.0555 1089.73707 0 44363.18258 11157.93753 41552.933 0 22378.56221 0 49903.63512 0 7923.142777 666.4265462 0 2705.659577 551.9949764 0 0 13894.72863 0 2675.125943 34.33342549 0 638.3679952 14794.57541 0 626.1723937 13875.20083 24638.16843 939.53726 +8741.01268 0 4814.6535 58.42778803 8489.631809 0 0 428.2277298 113.3583238 27605.77731 6529.892559 0 0 0 0 19864.41959 1.502160678e-06 6083.063416 0 0 7748.328632 6.406569297 0 5244.053683 0 0 47.61229191 8.559521098 0 9165.245758 5633.626506 3376.963026 267.9210804 5173.567545 36.73507305 1696.411371 2644.501981 1152.06363 0 749.310768 104.7995383 0 69138.28762 29205.3389 10328.79578 9003.939738 3694.092061 66.76254296 44219.23475 81667.93002 13488.72795 378.6253161 8564.703621 0 5789.045292 25854.06531 2896.756547 12181.01786 53647.84461 0 53065.9133 67.85870249 41176.62456 6031.967244 239.7182248 0 34799.40835 19871.39434 1600.970427 0 36634.88225 3961.036627 16020.528 1643.604591 0 0 5241.13849 2382.094447 44474.214 0 14600.94672 4814.608953 0 6479.562192 32234.7229 0 0 14564.32987 0 0 42243.44326 28483.66001 8092.939387 0 26.96020141 0 174.8844889 17551.7637 1762.915613 85962.98778 0.006263231171 6006.834906 9956.659617 23466.73667 2956.778543 962.8839978 38059.43951 8.741828289 4476.009311 74.18093322 89732.59398 80985.63223 60404.98758 34671.51111 0 4102.895109 43683.88914 7489.985418 12333.46609 15288.6756 9173.641186 0 15827.06366 37653.56235 7216.522771 55878.37105 5160.358416 0 0 5468.898362 3407.891192 10052.93887 0 4328.906435 9598.070538 0 6674.507017 2836.867769 23146.70315 0 0 0.03138726954 3380.634745 0 39.23057776 3658.515946 2.414068458e-07 0 19266.82907 43462.55646 0 47809.6456 3621.914728 13375.76213 8979.225172 0 7298.839792 13978.39957 0 12289.85997 6348.72416 10362.84706 10741.95452 1070.404098 0 7253.691916 735.8488037 2949.262049 6205.693997 2242.133784 15965.76196 39661.34387 2868.43075 2948.933657 11720.41109 0 37030.2625 0 19286.00217 12879.42537 7911.897967 2279.907714 14775.41756 5286.782287 3821.483956 48492.43607 0 0 9416.648682 11963.81473 22550.14074 0 32567.17565 1668.385809 0 5798.233703 10228.94718 26819.28049 33093.29138 2749.351529 6969.577765 30893.58967 23990.57762 0 4152.112675 69169.33097 47.32616109 0 25361.56149 0 37393.83407 44797.72457 5828.696549 0 0 3821.225375 79310.77483 5366.964928 48083.08725 5091.361763 0 0 11254.47537 82322.07606 0 820.2618957 4575.704017 0 19755.35966 10744.22898 37.94036839 60495.38793 358.2571862 0 5177.825526 36420.94958 0 0 0 26714.01069 14682.12063 0 5895.950847 23826.77489 60549.5008 2746.069922 8968.364634 0 17171.19369 53237.65304 1971.152132 1877.313209 0 26.80329788 9478.663903 0 3975.243951 24089.04418 27.14463638 1217.460226 465.0951489 0 9401.537352 16347.62223 0 4164.396802 0 650.866946 35670.56305 16725.53289 1448.890624 48280.3221 6072.609765 0 5131.834673 705.5528761 4054.787735 25052.5391 0 2383.068846 0 842.6523837 2024.737991 25552.63069 0 37585.65377 0 0 13155.63646 0 2221.470785 3164.315765 705.3637153 0 0 94.22384125 17898.17807 26548.30078 62049.45204 7536.473879 +48193.31232 1397.534943 11587.22109 4237.956676 6037.201872 19611.522 0 4179.256716 0 23675.49247 18056.25933 7125.099207 0 0 0 57006.12498 544.4221918 21715.63151 0 0 0 0 2052.617732 82.81424085 422.7990386 0 668.3973327 0 8342.10373 0 21225.61396 21571.24517 13690.02983 10175.89517 0 0 740.9303532 0 42991.94225 17642.75649 0 0 0 92.75637873 1404.609298 2056.232117 301.817761 17427.49265 0 0 20763.39839 998.1914016 0 17408.7413 44243.38342 30195.21407 0 6232.439082 23784.04307 0 6024.007125 24521.34488 86.92918599 19111.41999 11250.51094 0 2.371367927e-05 11766.44884 0 2408.636743 40807.11156 8775.328046 5667.223369 3199.142942 43073.49623 33506.07532 4496.408001 0 4237.287103 0 0 0 0 132.2597255 1265.602414 0 0 20830.89966 9280.875013 0 35138.32383 110.7065964 4278.064396 32555.75781 95.52474532 56696.22252 0 29992.10131 43013.64876 46853.95192 13988.74895 4915.206079 0 66490.5541 3827.724134 14303.0818 1114.170624 12465.33929 8208.89988 10.20466223 87020.91146 0 0 1908.571575 2519.447761 68457.60751 15037.99316 8618.693147 4033.65195 33541.88366 34124.03778 10432.87374 6715.164759 1942.008162 25802.90716 52035.30192 0 5517.168056 332.881181 30357.54231 51509.04876 10004.82953 40161.47495 9954.229194 2551.872425 4069.381141 41777.80791 4868.694873 45231.29601 64376.44341 3919.808215 22844.94827 7497.089793 740.8940339 0 5466.834901 4381.544382 0 1422.311679 3448.428424 15874.91858 2281.182543 5120.49619 14169.91744 1722.583222 0 1627.724852 5651.711729 8191.401507 25614.84147 31860.32713 3991.346647 25974.75001 6686.239903 9052.400983 60022.28933 4900.125632 44850.86362 1839.885494 37899.61251 10302.46102 14273.8851 5540.268552 30126.46222 0 0 35352.71599 4321.454786 7105.888195 6408.779603 302.920387 2898.088663 12519.24323 55239.31279 20897.47695 3994.907358 0 56435.89218 4590.626147 801.2838468 30891.60608 1261.425699 0 685.5061545 0 128.7537417 5327.431329 46948.72261 0 4222.903549 0 337.1904284 1.613320653 14303.99337 49771.23928 0 3198.893733 10615.58572 6568.964882 8336.4566 22474.66973 9017.810433 3644.870145 24434.08785 7853.752302 209.6226087 47843.50616 11410.15112 12117.94772 10590.22771 78590.58934 0 43297.86646 0 0 19923.30696 16016.61486 4926.432933 32554.08807 40726.92489 57875.61104 22.21594306 6021.431403 0 2.19028407e-05 4803.548083 0 0.1510544994 50103.2733 6327.205951 12957.08676 0 27213.15865 1530.071256 0 53369.51032 38244.65508 0 45112.42552 0 49403.28943 0 10449.31866 2512.023775 46.70676162 14616.4546 56086.36206 0 0 2559.023269 0 36609.12861 5699.671681 14526.5862 17625.6434 5614.210926 64053.97618 122.4404804 6407.182498 5432.300391 0 0 0 5164.851104 988.459631 2579.388749 2154.923552 15349.81615 27790.03017 6725.637964 10244.60276 4717.182171 35965.07271 1087.556704 37.71682841 0 10677.58722 5285.209064 422.9866037 1280.855804 0 35845.83332 17604.50788 33791.76718 727.4950583 25988.17586 3161.868607 0 159.2485115 897.9201552 +60.04190756 39065.84701 15227.6819 0 242.2257463 0 2752.903834 0 0 0 0 0 5722.950146 31572.64138 0 12911.38893 12221.33874 0 0 4494.044889 42543.34454 0 33407.00459 0 0 11153.76636 0 1987.061795 36672.37518 3215.699705 1440.552104 35769.0738 0 23934.69916 0 8068.750838 82839.4369 0 9867.775534 0 0 30675.2384 7038.819603 461.4146053 167.6678965 5062.212276 29225.02293 73924.20176 6772.6962 14640.2688 3187.960164 66707.70066 0 0 1338.883112 0 0 11534.80606 24955.31884 2168.558288 11386.79199 0 5283.958805 109.6961743 27995.99322 26793.33409 0 431.4357936 62452.51028 5560.380374 21695.95262 45370.62683 21367.16836 184.111788 2362.53077 9711.043675 0 52442.40214 441.3213188 20473.02529 2499.642854 7131.977145 0 0 33443.28968 45285.25322 0 4929.610777 31306.99511 18639.1042 20150.04045 76.95313893 39916.07407 0 0 43966.53643 0 62221.02211 67651.24736 49413.87289 66227.68245 257.2766778 449.1363726 0 20368.72634 2965.396504 2907.373817 5316.120454 14870.52981 2890.421202 31496.41482 1629.059389 70040.82851 2666.161354 1071.093973 1052.666961 8630.046893 51652.1639 0 1556.623854 32694.47474 160.3800775 23170.31064 24159.81081 1237.345578 0 1.895074959 13846.22047 55395.87696 60528.98869 1784.669931 0 2186.378921 12470.22975 15199.12822 50949.44218 17683.38803 23138.96066 0 0 3411.994495 26459.50738 23330.45378 3252.529596 10852.25717 22082.5946 2761.967568 0 4508.652438 29966.59363 0 77620.5193 31666.41078 0 7206.000483 4063.69697 31916.92145 12372.00161 21293.93735 0 16939.01379 18851.56174 42601.28396 6317.149893 0 35.62955148 1176.140686 4261.481346 6083.919512 178.3214712 0 4170.797845 0 36599.31427 9801.968311 777.769963 12267.75998 12502.02858 0 829.6652069 0 18444.12627 3115.294608 1773.46347 55824.61256 0.02649987911 22108.5076 1300.662612 17485.77459 0 6185.660024 22792.87481 0 24441.37406 19917.84785 3347.253785 0 15560.53198 0 45319.23111 38082.39236 0 22743.69913 10611.01579 4612.459304 34012.47135 8905.181632 0 14436.41439 8974.624289 17202.12557 0 37186.74189 0 983.5207673 0 16471.29492 1914.891462 24108.22479 27878.87228 12.99935074 15284.31099 36860.96925 49114.2027 0 47247.23271 24618.35167 20160.3354 173.6286547 0 66976.69347 2121.565638 1027.397661 4350.077984 1466.39553 0 0 3630.901043 63588.23706 0 17382.61999 0 4470.128645 146.4654985 5159.028787 22072.27853 44.13281059 7363.905729 270.1396353 43831.81678 41101.3057 833.1456895 14805.34336 16442.93694 7180.494584 3851.471088 3769.147053 4219.137157 5654.588078 15409.3038 32680.63387 0 0 5713.421178 0 36181.92988 17318.03366 0 15367.99352 0 50795.06084 25490.74974 0 1723.926306 31731.08881 204.8363458 980.909824 0 19506.68119 0 0 992.7044533 91.8688268 8507.341338 2168.402023 10598.35897 0 0 0 7764.712644 38150.38417 0.005105412707 21188.07148 0 2693.297096 4903.320967 14681.1118 0 0.02552723489 21239.94423 +4892.653845 0 5030.321337 53691.19328 0 1604.321524 0 14366.61379 10776.88357 112.032383 0 2197.735772 18016.96569 0 5688.309141 0 4783.48393 0 0 9711.351795 0 0 12151.10554 75275.91682 56.70577003 84.47176867 6766.972786 56403.92209 9681.099635 0 8938.543706 3400.568768 1794.078751 4683.202722 17534.09177 0 211.2139892 116.9345179 1450.699459 0 0 3224.706582 0 17508.19335 0 46733.75075 1933.737206 6789.272168 16942.6038 0 9192.704305 0 59.57749081 4598.290946 2317.542442 810.6024634 0 2867.905775 0 87249.68618 0 0 5433.490887 4844.449371 0 0 46.64342818 50367.88717 12059.56291 341.7982047 15318.94038 10474.39911 62667.45959 46580.73029 6661.200901 35783.14746 370.3764998 845.0807822 0 12801.70921 14877.2035 4069.225417 1124.878972 2271.461025 155.1539985 25867.97886 531.4817998 13492.21401 9601.240294 0 45303.72112 17043.38232 0 35073.62679 3152.829119 45106.48952 37778.10788 40643.30636 0 293.6292434 75907.61181 33212.40593 9107.386332 8012.783341 2692.792066 10641.89615 1325.089548 15659.86054 0.0001190953433 2372.822305 2045.878158 1551.781148 0 30364.31929 39949.81908 4158.650678 53.52679513 25260.09019 9838.749465 14711.98534 0 205.0817186 20667.86783 13300.59991 21778.58244 1762.378356 60.33499301 25976.61104 1843.207807 22570.38925 13220.96685 0 5214.826456 1711.112665 48086.49139 6960.256616 9678.613729 27592.18092 43564.1289 1977.941901 34619.2443 0 1950.247623 7035.35334 16559.02215 75352.91914 20246.80945 25195.8033 20632.85559 3952.465749 45674.44272 31135.83255 1786.867659 52099.61298 0 23025.47966 4879.989604 621.6990925 42170.27637 2446.274507 1913.896442 12764.65262 30724.20803 0 0 57200.38434 37455.32893 15077.07178 5445.233494 3882.615098 0 8396.419791 0 0 0 32375.23667 1117.176745 23126.78703 30708.21545 40662.91563 14940.70511 0 99341.4834 11181.32096 26610.77385 12541.08114 0 0 42533.82439 1897.940263 28524.26278 948.2415794 39775.21849 8658.786887 770.3922423 2855.528825 795.6615323 329.0837016 17600.44403 540.6837248 3690.593753 0 34829.18653 933.3556819 6007.566553 154.0124158 39459.35736 25138.84358 2824.347952 71361.76504 11180.38335 25616.24895 6128.267357 0 19368.58257 0 1019.889402 10115.1897 6257.463509 0 193.4357078 13282.10507 493.4666152 0 24970.9168 3288.578926 7831.24393 5548.442122 0 12808.56502 0 2555.815093 4737.3026 0 38081.89594 4463.876225 32661.66648 8842.784841 0 0 11950.54832 50981.04566 0 4732.031159 1014.20962 0.01462664167 4835.480875 9262.432851 51719.72703 2137.523155 0 21992.10439 0 4915.073991 0 42159.51608 34276.08601 0 0 0 0 0 154.1812579 0 29.53669142 14237.42451 6221.122826 0 10364.7303 0 0 0 58621.94711 39736.00628 0 0 0 37841.48385 27210.37272 0 2668.564177 33263.3176 345.9033532 38775.51741 0 1377.87045 0 69958.58135 27096.62787 1742.141054 0 0 0 73992.89476 4362.863866 860.301772 613.4843269 16265.13071 66420.41136 111.0901755 +0 0 476.753311 2.929641991 21547.0519 583.7167751 0 0 64030.56769 69698.15099 4388.741826 0 2446.895585 0 67296.18528 17244.9865 1887.979781 17253.0647 0 4369.352805 0 423.2921387 6359.043964 0 0 0 3634.201319 13351.26989 0 3336.529821 218.2317302 4274.864237 13508.52469 0 7487.996417 5525.957955 2936.857011 0 5927.32424 1660.381288 2616.107877 0 351.9080984 0 387.9949585 0 4480.220144 8376.359637 46897.76001 0 38269.03442 0 0 0 212.7304417 0 0 26652.49474 2913.390142 22687.00155 2224.341828 3479.675683 12609.8004 19816.35563 46358.43662 17667.7389 20395.93058 0 0 0 0 0 0 19347.6772 4123.318789 7976.409655 268.1424264 0 847.9729247 7042.64579 21542.11651 0 0 0 111.8928205 1161.804935 21703.50057 13770.73371 5878.172856 0 0.003946473927 35913.25032 65391.60929 2960.948223 35582.56646 5485.732471 21595.97225 2784.752057 33658.7229 42132.84259 55817.73034 1355.225796 40718.44648 4020.179574 21371.38481 42425.73416 129.4216635 9513.666749 7621.860466 102.2351895 2254.974331 41.59397974 2187.158118 2934.423977 0 0 0 6600.814328 524.2966469 0 17525.43263 2669.132728 4186.593923 6621.8608 43729.09758 0 6055.413233 357.554077 5294.875395 0 4.92482408 9687.277693 3672.506246 29009.99746 2398.845454 7386.546788 4392.993254 960.0584608 4671.866895 0 5057.964674 0 0 70254.9229 55899.61909 61.54797428 8209.053534 7031.619806 19648.71743 25120.56524 7477.713724 41263.25129 6686.700433 3279.593876 2471.048867 13108.22432 3385.173295 1286.728109 46115.92646 35150.06933 0 32405.36614 848.5078686 341.8396171 3314.733022 5308.344783 10.94440347 6548.399331 434.7841573 1579.786805 0 0 12960.43315 5.125065144e-05 0 24034.60668 3496.708684 14114.40048 3704.461736 70548.90526 0 22621.9259 0 1138.592216 20005.98899 5454.665283 390.4119859 342.446485 0 1.455319774e-09 36498.76818 29003.34129 0 10527.65182 21887.27064 5684.297092 29.80666863 0 0.6382241403 40400.65569 894.7613732 2397.635262 675.5680467 0 38624.76711 7016.525419 3994.454265 5.754707153e-07 37214.95739 142.5812657 0 2234.305848 0 0 19038.52082 0 14148.63122 0.007881553098 0 32008.21826 860.1932436 3674.659303 34834.10674 16374.35783 44964.64915 6495.822542 20118.32187 17149.79318 0 3299.284473 4031.824252 3450.767511 11253.51858 0 9143.517865 11397.99823 0 0 0 2587.523934 268.5824197 27138.48597 86154.7849 48826.31451 181.0831225 5031.912495 0 76.54504481 9411.457613 49239.0813 0 0 64672.81585 0 0 0 67.11932961 2229.777693 88.19815765 0 0 29905.06873 0 25857.70399 0 9053.869022 6877.715839 10446.19696 24089.35381 12.79541 19179.08664 9720.682268 0 0 1847.226246 0 0 0 108.8461976 0 0 198.4921682 31952.22841 189.1620987 56.60802432 102.3798856 62525.07495 0 22188.95123 0 213.9399784 0 5255.439189 14244.96092 0 4758.730625 4460.974954 0 34634.67737 2587.577613 +0 0 0 0 3849.464868 1947.631502 0 19.72576458 0 0 0 2281.237617 0 2623.080887 0 33341.72475 1822.017484 5113.58336 0 21713.74117 0 2565.79081 53365.02326 5492.791722 16419.17255 0 0 31580.14688 0 11689.21596 39438.08999 40458.81248 3706.247368 1184.322557 62509.71427 0 0 684.7029593 4790.489619 4476.195819 20311.03942 0 2585.096139 19059.43059 7793.006961 35644.30293 40568.66075 14035.40883 24928.61705 4482.162643 38794.55043 12012.97834 9192.175154 8555.889562 3649.510147 0 519.9486238 0 0 0 1348.259224 0 4768.725714 6258.669674 1067.394231 145.9184929 76.76977354 0 4494.644349 0 4984.847483 0 2650.582209 0 50841.06289 0 19.43378018 140.001721 2150.776422 19933.75687 8681.034153 163.8259388 195.1741187 20468.05136 0 10646.98847 13076.96197 8228.65829 35326.96289 26104.80501 3.972033238 15053.21511 3134.656499 2548.862452 10292.83282 10766.08803 55494.05154 0 0 518.0234458 309.232355 64978.86333 12275.83955 108.1969904 14862.84425 9.615941069e-13 19880.37479 37165.32257 37814.55207 39504.88168 4790.176331 12726.01872 5390.14558 26646.68046 13115.35548 0 32079.77854 7429.385908 9827.104124 27016.55496 16508.31656 12936.42813 119.2067548 1128.856332 51851.29576 54792.50493 40067.55719 13343.15168 71776.56423 377.3415017 20654.16553 1514.15914 35234.55815 34125.02082 8979.128772 3038.097383 7642.186855 3780.287508 10520.42943 43369.63964 1508.515744 15775.18622 28870.15158 24930.38477 49375.11191 0 12976.61738 3447.049264 43587.82204 40134.11676 1379.592884 53126.36572 0 108.8316404 12239.53547 0 3637.645903 48044.6084 1493.703209 18079.39249 1925.434715 11385.24762 3168.50936 615.3146161 13935.36477 47364.37268 35690.26318 14459.96091 960.4841511 6533.451736 0 11546.34643 364.3109624 14734.50992 0 0.0002041814566 1845.549385 4890.112756 54325.00941 24783.57066 0 11214.48464 0 6.982385817e-08 0 21757.80503 24182.15308 0 2192.339458 0 536.5450738 38581.44799 11314.3095 4160.646317 73.77382685 0 19995.08732 4400.165069 58512.39866 0 4854.856474 24273.6019 21908.6133 16.77292628 26262.5141 5497.477346 16224.23939 706.8422848 5690.714068 40253.0864 3405.296563 51442.29907 5509.640636 26249.19025 142.6220401 72267.51529 53678.06565 427.3114147 33589.50964 32337.96212 700.3691105 0 60240.10311 0 21972.55306 0 50999.31957 14233.32139 1896.848669 0 0.07444098736 22957.17555 0 5694.071925 0 4986.67147 39380.79226 0 60811.53563 0 34877.74259 3638.24904 54169.93001 6418.531613 0 422.532376 19556.73717 51564.73966 0 31027.0676 51465.38582 0 12332.04178 2375.602163 2637.313767 2849.165762 57.19469811 740.8126849 30.80858315 1791.972307 239.2254839 5647.901032 15016.13783 0 0 29600.1553 3215.380539 0 0 4292.917647 11582.74221 7552.170579 4029.2264 3054.705331 0 0 0 1765.954002 52.04585614 207.228265 59964.17404 3196.567181 0 6390.183371 0 14229.36294 0 5369.36154 5983.403001 531.9581406 38.83999918 0 0 4021.703387 8180.947916 61.32830881 0 24754.72081 0 1641.866632 +0 39535.5116 32.88316076 1734.693127 39176.37025 0 0 0 1488.657342 24201.10363 358.7387964 12713.69834 0 55784.68104 0 0 0 2531.484032 2242.786133 0 3161.592628 0 7414.642346 6226.694929 0 0 0 0 0 4401.199868 60103.73025 34394.57166 19674.63912 14368.74557 0 0 724.1674428 2773.063716 53172.13095 0 42037.45521 14761.58096 25995.39967 659.963989 0 125.266467 0 82935.59235 57104.43564 17920.17441 0 45772.2925 1981.951219 16599.00834 0 28244.83472 60.411584 2193.877292 9307.872843 0 34969.44551 23754.5445 12981.75395 9464.030073 44779.34011 3093.649404 165.7449789 105.2175454 13038.71723 13062.07775 0 0 11449.89185 0 77.48725739 9462.970649 2199.556953 181.4857129 26102.18379 10315.85494 38738.22373 0 8052.155269 0 24892.45766 0 3767.09164 3080.204898 4167.251754 0 26889.96212 0 486.7918304 1711.98402 0 4284.664947 10595.63018 22788.74701 15608.76165 49.19352928 15379.52623 0 898.3586183 148.3445895 1145.837331 40186.21416 0 46375.41171 0 683.8652173 71754.24299 25753.68823 3920.816341 0 0 1179.459297 2334.249934 0 79671.27975 68013.67508 0 4084.25409 89552.4434 0 9120.41708 556.8960336 2392.302452 13299.62081 0 15294.37328 0 0 70229.12509 11929.48803 33345.42429 0 0.05258767007 9071.550902 13860.40731 19736.18544 50.92063078 2470.914702 8939.845048 0.06230462015 10504.69934 0 1335.592482 12250.65599 13033.65926 17518.12182 54595.98715 0 30928.24722 13193.7879 5222.580779 24680.45402 2826.794548 26240.22446 123.5589125 746.2701153 22124.1128 3380.845795 0 53752.75316 86.51217096 1681.836797 51717.05817 25496.9293 25862.56503 13883.22152 29568.62755 1140.539321 732.7124545 3066.046293 8006.414355 40156.79099 23523.95903 6693.173382 12893.83323 34642.36977 734.1097277 0 10540.51139 0 3174.837226 13599.34726 2677.857523 49597.98475 17592.8377 0 4904.008394 41684.36175 6181.693893 0 2965.523976 14050.62222 2932.6142 2173.267292 0 35966.66442 0 19364.96077 1547.193624 4271.705309 23481.22166 3083.505351 14187.11923 5049.20939 5392.41571 0 47842.72507 14020.8769 28892.30652 0 668.1161461 9746.722293 43796.01609 1110.55964 4623.129061 17994.80581 0 2236.313688 1975.405681 14827.92841 9.243373398e-05 0 6929.450503 0 13818.39692 0 0 831.8006424 0 0 0 72.18620144 26190.80178 12668.68311 941.5817038 0 0 1031.416197 3607.310403 0 0 886.1224348 0 3794.2041 0 2429.071327 21045.1265 0 0 21883.55121 0 24953.8466 0 0 0 267.5521504 0 3574.522146 14384.91303 4342.682218 146.2065078 25970.14842 18411.01055 58813.88806 0 2178.870007 397.9964186 0 2707.929357 0 0 0 15516.73773 9714.579423 0 16813.29303 228.2102734 16964.92525 2728.333786 78092.08997 0 0 4137.576421 30589.61284 2481.74125 44786.76519 0 0 0 28159.39503 31966.4798 0 17563.96052 0 9061.439367 3562.905711 +22.3754433 9803.675907 51032.97108 0 29731.46957 9044.542137 27205.1602 8369.107055 16495.161 3461.483184 0 0 0 0 0 0.04203572351 299.3718364 0 1003.238884 61.68042322 0.8554179701 20833.07976 11811.18878 1965.20686 0 247.0528425 0 25385.35022 45011.73167 0 0 23764.85277 0 3135.371668 0 0 0 20100.36492 0 6.183109826 745.0673856 1914.899104 170.9857253 9736.932696 3826.89482 8610.657823 18305.27637 1039.26407 0 31392.22879 0 3455.349358 5434.968397 0 0 1486.015503 50546.61794 40718.91332 2096.640011 0 30100.9336 0 2464.285789 0 6200.586536 0 9154.053883 9674.190507 34552.41894 13087.77346 0 3108.336641 12553.01341 46.70788878 42493.09112 9021.183725 30581.68721 160.9630851 0 0 10161.47834 0 15671.17055 50477.41281 0 31783.76558 88.63476048 164.6883028 0 42169.51622 22895.16955 0 179.997325 43935.98389 0 35.11172725 4306.685199 0 37565.72859 12935.66844 0 9403.631039 18181.47028 0 8272.647195 0 5255.021084 973.5475904 6609.444092 7913.051848 0 12898.67568 46304.01426 67.90386365 2969.863028 0 0 84.57189144 24404.03746 5002.677005 10851.75812 0 16198.41509 98.41582806 56686.02172 1100.574922 160.7975238 0 2718.453305 0 0 24222.46203 34040.82878 10732.56807 3563.06488 16078.76088 35919.13771 40850.6673 262.7103738 9714.543339 99.64820549 6941.718555 14362.89644 0 4453.734094 2323.091822 23959.37874 74934.19276 1.198738788 8907.96132 146.3743858 8532.347574 0 16196.30508 39688.23706 19443.95388 6292.757767 0 0 97.89406222 16089.85861 2447.560064 28548.29346 11246.31838 14626.03738 12696.93253 0 37553.59384 0 39552.9546 0 20052.75674 0 27860.68132 39.63332998 2441.944034 4393.158279 0 777.2590057 9323.533134 8.379217485e-12 21378.52426 30342.81659 0 2104.723531 19938.49324 79567.26125 59999.89398 137.3630412 3701.869682 0 0 74.31820549 5466.1075 3130.967079 26017.09233 5068.601133 0 10250.17092 5290.159935 50115.3402 7002.716106 7882.127672 0 0 15944.32108 0 11542.86415 20400.5287 25387.37354 0 26039.06889 14989.51957 0 0 3381.53391 32843.58493 47314.85452 44235.27354 1132.716679 0 0 11839.44348 6959.985712 2936.196831 6740.718585 14720.97002 22443.68604 11379.55535 0.002008283487 23606.21539 2506.571129 2264.78018 0 0 36360.19638 2071.649211 85565.2296 14.15397797 0.0008804158711 7386.935161 120.665501 0 41470.93306 9410.052514 0 62791.86012 0 0 227.1802848 0 221.0670672 0 0 130.0818314 2269.980606 0 6817.730357 19622.45104 68.37110016 31.03743917 18173.58348 0 0 47168.58556 46404.40617 64472.64599 0 0 23533.042 46.62421088 6284.470792 0 0 0 185.0035 32.77997591 4856.245663 32685.82303 21618.99885 0 15858.15747 4535.4785 53.31278022 13510.62842 0 0 0 0 0 0 51235.21039 0 7106.826479 391.9016964 0 20971.19657 43687.7036 0 2298.810966 +0 0 4759.521968 0.8595080492 53463.86459 0 12268.68306 0 7440.756356 4543.427291 0 0 37270.69369 0 0 4.758688009 0 27190.87241 53.61960119 3115.267364 1002.343529 0 11860.46753 1492.872411 19296.42257 20805.97278 3482.17788 0 0 0 0 6143.847587 3679.394398 23004.68566 0 9215.402597 134.2267366 0 13441.68122 0 0 2981.701732 0 17690.17811 29330.60772 43070.16466 0 1794.526102 0 17728.60668 9190.201574 0 9235.844342 0 125.6379575 7398.00486 0 27106.85366 1393.617305 278.9994857 6649.735106 35504.03581 6125.69714 4722.969636 21281.41158 1377.187249 0 0 3089.934763 22281.82707 0 0 34742.47315 16628.78113 0 88762.88796 4691.744395 17379.0247 9078.428999 17986.03047 146.8902222 0 21243.23705 49987.59834 16044.84586 0 45140.39921 43225.21953 0.01430921139 12976.86373 748.0708173 49107.88679 9774.253914 40246.55074 208.7299279 55736.988 18627.3336 43032.72612 32541.12606 26295.0792 3188.350703 362.5732977 37599.62189 0 39425.82127 21947.88922 41078.19222 3499.151635 13207.32801 954.0316316 27581.64597 1.040563195e-11 0 0 3843.004307 48963.70005 0 9200.400219 42482.2266 44182.65147 0 2419.133045 0 30.57339632 2456.27219 351.199117 4548.486629 7783.528923 28213.56205 82905.22177 21589.0214 502.1902393 0 0 0 14947.00317 3264.489988 0 12223.8394 0 14533.49959 1336.780293 69.85282698 8.086495307e-09 42.51869474 16845.14321 0 4.079856555 0 7117.462756 20490.39259 28995.78343 247.6161164 31013.96128 253.5193964 18762.03617 52913.87435 17386.54801 9464.172006 29734.26189 1820.877959 30454.00575 10855.24871 0 3522.002321 1675.035692 1410.051531 42517.60786 21999.51478 8971.35839 14275.88329 14205.17571 56469.28499 3951.201524 0 13588.8298 0 0 43529.00815 0 1703.601897 61383.6961 24749.18975 429.0768189 5670.026901 1439.644874 401.5042963 0 0 7829.073427 1334.448901 2665.116741 8433.775707 0 4209.707682 13812.00604 0 9044.475913 0 16023.18292 0 10378.98518 18200.47304 18957.35559 22907.71156 54306.23361 13586.44468 0 17088.09501 24722.72848 0 10685.0172 645.847688 45654.98127 4063.709787 0 5234.982945 0 32447.64051 0 3222.241141 0 13358.70033 8533.749391 0 0 8190.212376 15971.94389 0 0 0 16332.80246 0 41924.32023 27130.1377 0 28428.58734 23519.11601 0 19.8619087 3.241723396e-05 0 5134.225415 19055.86399 0 0 4488.572734 23325.14629 57140.12167 41186.48422 141.2016786 2200.050705 0 0 20466.44894 53.12000859 716.2068255 21395.15271 0 31718.40713 0 0 554.46282 43670.70368 167.1206222 61773.33066 14281.45209 0 5511.69418 31636.82441 26798.24653 0 2835.374503 13141.42952 0 0 1107.741318 8871.933171 24134.92255 3270.391956 19880.37106 3525.545116 10040.59697 0 8384.819214 0 54588.84347 6346.97728 0 0 4215.7792 3458.937136 3058.282482 2167.369332 0 10726.21014 17639.86937 2810.283455 7581.527126 0 +281.718001 680.6487171 5659.924933 2291.218586 27393.4811 1753.964923 11425.14307 0 0 67580.84707 736.9279277 6567.505081 930.1127522 2376.850464 40358.49522 51288.24583 1586.271873 1217.989841 10814.87655 290.8772702 0 0 0 56.02915078 0 11694.49789 0 4587.518166 0 4731.004198 0.6946101227 18319.35116 0 1622.741049 6647.734702 2094.765899 5476.774621 0 58.33086383 11416.904 6736.802665 41059.18668 77204.30696 0 3993.762604 17168.95975 14702.01287 8972.093541 18928.95672 7960.776595 0 7252.000893 1719.080293 307.8401939 23122.18482 1087.954911 826.091906 16272.99789 5393.0893 4657.900856 18097.5367 0 5831.996216 65876.011 12066.53107 11963.30995 0 17553.79749 0 705.847732 9814.921772 22523.87484 0 0 1455.165362 0.4279588339 0 7498.31344 116.8287425 26087.32688 75266.23608 0 42405.86673 0 0 20358.04477 0 1580.345402 180.5371492 70369.14917 36455.06936 14817.95962 0 59799.71359 6348.022068 13345.83386 713.3849101 5251.865236 0 17775.50621 4763.585027 0 12344.26057 11381.75441 271.9551647 3326.015275 4074.938761 18673.58335 10743.05961 3766.908686 59504.12953 0 0 8640.919528 2831.332227 22856.84293 16968.29393 3997.159628 3034.980573 860.8120976 0 0 1.751780536e-09 37.63804585 59200.88171 4911.175184 40266.2663 715.2184017 5623.167433 29630.52747 57059.66723 0 0 4024.43707 30295.27221 711.9336396 22890.73737 3292.375542 27689.38471 7865.192728 14329.15147 1505.926966 272.0219949 8438.197697 62731.77381 0 1810.479225 8879.102342 22194.35166 25145.25922 0 41584.51419 0 4907.425704 246.5109399 0 76262.43767 56325.88002 57.87589385 12103.19267 50630.20294 0 1052.76622 23386.70497 0 15512.9046 38071.3905 7838.458972 6689.107881 0 1006.548587 16.521989 12088.84723 21622.47046 19457.86746 0 1117.789223 1185.485515 12967.05271 11994.98206 64433.68425 1858.358118 11350.56494 0 57337.75485 0 33943.18939 23891.50584 0 57535.50738 27936.65468 8842.080053 2543.93815 2739.682066 0 10294.2248 44941.51958 0 4262.476584 13227.88395 54464.15597 4820.257016 0 478.8488451 161.2865526 20299.82101 0 19365.3847 2215.488984 24618.8078 0 30924.96195 3617.134962 0 18966.24346 1697.648545 9661.927281 0 537.079522 1669.968602 0 643.417509 25.62163975 3131.998065 2028.937803 22304.78423 27345.50424 0 0 0 0 26622.17614 0 0 0 296.5339986 38918.79709 0 0 32517.95328 29467.48163 6.480660547 141.8423465 22426.98656 684.6937789 0 0 3316.323572 3331.573528 1104.127442 22095.84191 6301.578859 0 223.9449932 34904.10098 4249.230808 35538.22675 0 0 1399.983057 34.5891918 4244.961818 0 55855.48004 5785.022394 0 0 11982.61688 216.1146821 0 3465.017813 12773.48325 356.8531327 0 9978.436789 50676.82016 0 1940.589868 20564.40921 9410.9441 2938.354345 2779.49189 0 0 28193.10079 0 406.1147498 0 75499.0814 66755.1225 20991.72224 75.43809868 481.7380752 84.33691378 5689.401777 0 0 11481.27757 15111.79947 914.4009197 +0 0 11386.92858 365.1628842 0 58212.02691 0 0 0 0 0 68.03388468 3786.1007 0 0 0 543.9934191 3431.219978 12516.81408 0 7260.800561 0 138.9194537 11674.73138 0 0 13402.55444 2791.583142 5138.332914 14009.84178 0 0 0 15100.24459 3865.380404 4982.189407 0 15097.11089 0 0 59730.30555 2969.026696 19140.08555 33776.27505 0 25169.07238 0 3342.536413 21713.97716 12235.94026 41863.20034 7198.981476 15895.52162 0 7320.280692 33679.36151 0 15979.00039 27146.19906 14132.75273 2609.242553 28325.40997 0 1597.090635 18713.67531 9010.22685 1215.302509 0.7631406652 0 10327.76106 2856.532223 1503.4324 1464.489138 1140.844777 21982.95547 0 43292.44116 33976.74606 7028.049384 74893.83778 2568.919004 50731.69978 31710.2578 202.3943673 0 8578.895701 950.2486496 661.6670376 20430.01384 17366.24265 34562.89447 28718.00644 24701.34534 8643.712002 0 0 23993.20969 3435.423651 113.1024457 55209.80692 0 0 19747.24479 42979.9462 2163.181928 7794.987143 0 65.05500988 21935.14406 0 8564.792828 0 1496.408614 0 12056.40229 0 27077.57891 30704.92349 50967.91352 40359.95815 1164.082053 5076.585733 0 17458.96606 12707.25528 44367.24403 38672.52148 21579.25776 2748.296991 4071.317279 112.2994381 3658.838207 2217.249441 0 0 36782.35976 6213.301561 7782.092406 65755.48626 49382.98448 34808.32784 35626.43208 32676.17716 5967.758069 52253.68294 155.6299245 0 7355.050269 27414.82147 9068.276363 0 1114.166036 22966.7634 6828.281865 13198.58482 0 0 2534.941408 0 6871.279785 5192.984464 40956.96867 4870.684668 0 0 0 2699.977054 502.4010489 0 15714.10832 17945.49859 1359.435947 61.84472794 0 35381.39313 50383.86797 1204.451248 224.6720153 33457.54266 0 0 24649.84066 0 26955.1518 24909.68233 0 43391.01496 5411.107003 10206.86197 77411.93599 21623.46696 2527.796164 0 0 0 47191.80979 3033.694615 3161.103571 7143.975125 33564.01435 23023.86536 0 3779.261509 17.0438442 0 7100.934474 37447.11059 63884.22081 5083.813128 2.770480147e-12 59.17969602 0 4463.79735 22395.665 156.0446192 7671.987385 7206.596088 29940.38618 2437.914776 33396.94263 690.3284395 6392.924248 7225.644426 4934.480296 4507.039721 35432.16477 32782.04735 71228.703 0 11142.26203 362.6701127 0 24145.30437 0 21487.31595 6441.683536 36100.73957 2076.24625 0 7063.515351 425.6173019 0 2549.509324 14079.21663 0 0 46.04966693 12601.14685 0 19488.65387 26620.81315 56040.95959 70.27237953 7804.668887 0 0 7063.814593 48127.55572 39.83306007 0 0 0 4280.632299 10299.00801 54363.79521 0 0 0 8536.782926 8293.986526 384.2192433 0 0 0 4218.253174 3028.697762 0 0 1802.124509 282.2558607 0 1057.798217 0 0 0 11702.10096 11575.55431 0 34138.85311 17625.07883 0 822.1279126 30857.33294 4602.039044 6844.771259 105.5655902 0 2139.891102 2450.055023 0 +0 0 9300.352141 0 26029.82106 8700.044263 3833.33785 6416.878058 22971.12645 46.15002231 0.01485195582 5968.830646 0 0 4381.905024 44151.48657 50102.82254 15047.28343 0 24804.72866 0 40023.62028 47254.48727 0 6194.058673 21030.9658 0 25.11255885 237.7819598 46127.95184 157.0909767 0 4018.50936 1506.071048 0 828.8962118 0 18488.88941 0 15526.18508 45055.92342 716.736458 24606.48421 4133.261223 30782.37797 38992.71734 3389.043363 5735.085758 16310.9937 32669.14844 0 6900.369595 5595.848072 18052.45065 0 0 1527.719699 4315.509257 0 1338.648136 62922.2876 26532.44504 0 31118.94191 0 6299.748086 29888.08124 2171.994952 40651.39913 22388.58723 18083.78527 16674.80414 564.0107786 3944.498462 15195.70155 7629.496143 32267.6625 13058.87351 0 0 20022.52506 9193.504122 46335.04579 12454.02088 4662.577971 21029.765 19494.87627 0 2042.684936 0 11962.63442 0 37836.75496 0 1873.367468 461.3101179 10172.689 6791.954967 18994.037 0 0 29026.83739 0 47563.2566 0 0 0 27641.224 0 74037.09659 2020.843465 32259.85332 15240.13021 48641.47055 9012.470537 17655.23873 3404.115932 0 3111.303742 2008.982954 7074.598095 37280.08865 12791.35221 2893.191819 0 14831.76507 0 0 31914.4939 10738.07595 0 15394.18246 5234.17653 27073.28297 56638.66092 4069.132868 0 2543.979251 10337.32765 34282.97923 30883.61225 25237.06943 48530.90808 10474.52756 40520.56659 39366.53787 479.3528519 9874.302476 22476.0886 63812.33352 2451.1898 6697.756543 12231.9859 0 0 10379.2622 20781.63901 13405.66948 29833.54829 14807.96932 6169.9551 21320.6259 49957.8872 6091.943067 41432.93315 1719.144353 29930.1841 9309.637713 4809.980915 12069.62818 11344.28727 37424.27023 0 53834.17253 0 0 0 0 89.31414985 27625.06674 14254.87833 34885.11151 8714.580255 10503.40298 2955.28362 1678.926928 0 15459.65367 38910.97686 5566.404727 8323.74544 5100.909962 0 1188.963412 4313.576669 13223.58854 16.65377224 0 58184.66848 0 0 89.27112457 5359.006641 0 0 1316.51713 0 0 18329.22769 3828.162358 2.035180659 5782.096832 2838.17193 3117.621472 17564.99436 30842.71755 1290.200873 1058.843368 13047.11153 0 0 0 0 8348.565384 0 0 0 0 0 19028.53729 48997.07682 0 6477.156573 4671.507814 51854.34327 0 3366.613711 13095.77577 0 1159.992429 0 0 1124.666575 663.7217245 1102.973444 15353.82672 40120.58326 0 40845.81665 80.06447745 7922.067525 0 0 44830.39042 21338.24706 1450.239346 18257.8723 114.1800073 4248.043414 46576.47102 0 2569.83348 29332.85763 0 6639.723842 1430.050136 0 26324.89223 0 28099.38659 6547.014115 195.1359001 0 21860.6147 1974.188588 0 8343.577526 0 454.7682897 0 3562.320553 4364.154879 0 40939.42016 3671.434115 6297.099211 0 5806.899922 0 0 5302.995479 37365.87559 32664.16856 5304.965319 2.314034636e-08 0 3203.810221 1598.903615 0 7834.565581 +26718.6618 0 34.46951516 0 29210.87196 10924.53347 14037.19472 0 2247.752972 7279.595717 30351.42418 43903.7207 3513.469697 3182.818855 19621.7058 125.6067362 9277.223313 17959.2171 7156.006713 28566.65295 2382.289214 0 0 0 0 0 0 0 15704.58775 1774.319975 2380.274891 44991.85072 5340.178604 0 34208.39652 5972.954765 8827.117935 188.7135728 0 3510.970606 0 10234.80586 1572.15504 3474.334626 0 0 7166.451808 0 213.0565763 13390.15688 56378.71683 0 0 23694.43779 0 0 28.30426098 3411.400067 4379.92773 6729.76161 5686.987998 504.6939771 41324.12138 355.1950028 31.34152208 44327.51861 1917.810708 2100.395064 15398.58051 0 553.0504404 25078.24563 60879.30204 50115.25716 5623.977604 3583.162731 5931.795886 0 0 0 4666.19252 63940.91124 0 3239.605671 0 365.8105603 5939.845079 0 19340.97499 43520.49416 21014.0583 12101.6807 3426.95784 19942.66741 187.3417271 0 27006.85924 4406.807475 5814.960966 16572.01071 47725.01322 14937.91273 0.00512166067 4550.286319 14762.20626 18357.19935 0 13501.10392 18986.42501 1513.201927 0 43826.76465 2001.07878 306.5434197 1449.26406 6145.625951 26766.06158 21417.68694 15422.69508 0 47144.0963 0 21749.13578 5420.996017 55609.51511 17816.86025 31576.49025 446.6579757 0 3157.246735 5622.520982 2577.897432 0.003582430548 0 56105.97961 2044.888743 2723.349994 21554.80898 24106.87551 4960.048731 5376.994394 57269.6352 15099.81998 0 895.9475891 190.7221052 2659.362157 27248.05549 21036.71494 514.8802023 24764.35754 2783.547885 2025.468582 0 1946.597961 12168.42898 12348.45484 1342.275574 4941.461621 637.7058548 4624.9227 0 17949.25044 26449.21619 7988.645358 15710.70869 19162.81896 0 15566.69492 77400.96699 56072.8481 0 2980.447885 18616.93292 2583.951685 2233.387416 37503.67805 0 14920.45353 0 669.8567168 7262.730354 15923.66629 2295.61363 29702.12961 14055.39037 28115.02505 0 0 29614.51565 18076.80743 156.1989625 37543.29553 0 9376.088776 14172.31264 11259.20528 2241.647286 34352.73291 0 5919.882316 66427.14023 13482.3755 0 0 55808.01851 3163.980855 209.8115872 7820.99533 29621.46767 0 35756.58686 318.2189852 0 0 18719.93954 0 313.6012951 0 50.07067777 26237.31985 7056.75416 619.5063969 225.9467391 0 6061.116252 36783.96346 3487.852461 0 0 38649.13216 16642.88398 1814.501859 258.1026517 48.83946431 21640.55834 19656.53496 40710.75555 4305.386698 807.6679074 0 50546.56833 688.7590648 0 22968.65479 24261.63768 6887.847751 0 33004.33221 0 4817.929661 0 5775.03344 0 0 1402.885701 9936.471082 2548.92284 33615.96121 0 66.35332323 0 0 0 0 54535.61635 0 0 1711.774352 3771.623041 0 42329.34567 3728.374521 1990.062983 7875.157076 36320.56999 27966.10351 48.92948466 243.8664353 20744.91205 0 1057.251471 0 0 0 0.002632637204 7884.805482 86.23670906 57177.92337 17117.36525 0 43217.60333 20264.11391 1173.855567 0 2800.002797 0 17619.92396 15348.32267 185.3424864 +0 0 0 0 8809.0062 1281.614251 1905.632997 0 0 1107.622571 6884.460437 3855.308239 0 30865.60933 1436.138599 0 0 0 33678.06086 30.44160178 1050.052792 9745.812096 0 18400.68666 0 0 0 0 3769.099376 0 0 6012.814005 0 8530.464947 5297.066009 58188.49035 0 2437.278013 27185.70001 3355.78151 6802.412186 7044.183309 0 0 2758.573559 64325.59744 6568.946573 22868.58156 25.00497658 0 103.8672865 10294.66522 30943.74959 46820.3502 17860.91282 0 27671.14574 0 14419.81576 0 48055.28814 13432.20735 0 28437.41305 5890.993125 0 31665.34941 6362.97743 722.0401146 14649.41302 7025.793719 9335.756432 17236.74054 10297.96911 0 2522.646262 2918.982111 63991.26974 43580.20489 15684.0389 207.3587971 1119.13247 2326.297909 0 41472.25829 0 0.0003062321002 5968.346043 37308.41942 18198.76109 0 8598.048719 1314.369892 23344.36501 3226.388892 37992.11479 68811.91851 28346.34463 0 0 2097.916515 4.094254015e-05 30364.82996 3478.369734 14496.36248 28119.75159 2583.365576 22200.48064 8106.4108 29983.83483 34471.90966 19828.56288 2210.321791 0 1163.760547 46793.29226 171.6020982 14738.89096 113.5125316 623.5056988 0 0 15832.51713 0 26963.28681 45434.18902 30393.058 48974.60785 46494.82408 0.001258609805 85492.22999 11412.88552 1841.940031 9202.337517 29333.03208 0 34223.27557 6066.593708 6018.298276 14727.18908 1002.351564 3491.27877 35449.46516 92.19246761 84.91181599 19193.32131 1474.225747 0.001858726344 22516.1141 14245.59535 36016.97382 60.5214439 0 191.7235865 32265.10745 40118.89395 54.05200812 0 41901.01707 24958.74852 8277.215102 11938.68629 149.4566778 0 53.98405427 25482.70543 0 2263.357938 23906.07367 2474.477435 52917.44946 16586.99856 10706.96286 31497.39843 52838.54006 15882.35994 36597.5895 0 0 850.6136696 0 33401.72934 0 0 37369.70145 30758.23028 22953.0707 57286.7708 3418.87289 13400.44714 1607.678477 8472.754487 1236.09852 0 15322.16413 50183.22654 14164.53611 27490.1272 3521.11454 2684.20381 44126.16792 6925.237933 27053.39196 30280.83347 20729.01855 40470.2012 147.4941967 0 3874.078598 15158.25198 0 0 428.4308975 95.10606155 17085.98483 39801.09166 2501.011334 0 0 0 6329.886731 28789.54756 4.785058167 570.2006998 31377.2895 11096.18972 5060.480474 18610.52025 11452.09571 0 39888.99356 196.1808047 19884.97689 0 16240.47127 64.69196111 2650.165053 0 2221.233814 4057.126631 320.5640144 18081.27239 6537.360666 19399.57857 86.77400713 9193.697045 26300.06616 4142.553105 26.8010691 1372.743007 0 2981.305921 0 0 0 11918.40285 0 0 1092.077382 0 12988.61736 0 0 0 3126.163447 1168.018013 0 52.41396658 0 0 194.6810198 0 0 41388.88764 36435.53926 0 15464.72879 0 27.9578173 38299.73431 2154.24988 34635.9037 0 444.5727266 0 11223.41671 4156.742334 0 4636.632459 0 0 4844.0926 0 8829.646663 50.09067437 55495.93968 0 0 5038.773181 0 +1905.470638 14279.56709 0 0 44663.76107 4029.692525 14176.33595 4313.326405 0 3143.268162 0 0 41.71782778 0 76.40521909 6338.834512 65220.30208 13548.92678 764.9819304 8130.459739 7120.218903 4580.347785 1974.750442 13.70056838 0 0 4410.14277 0 3608.21981 30434.23677 47.3623179 0 0 7571.451253 1366.756898 42416.87406 0 8.95147217 58302.42047 3355.28332 2278.000775 0 366.0010303 20716.04702 0 0 14732.36268 30858.18827 32315.99517 24105.75465 53.66767881 0 36616.26774 38245.58503 2.835842514e-10 0 27194.56843 75642.43715 3912.113009 1404.233827 17000.02754 1065.016949 2546.693164 93.24548554 0 0 3193.76147 69.19844095 0 47078.58318 5476.426752 17.78219075 9599.83692 0 10385.16297 115.3117308 2243.420252 6216.500907 25718.72067 1937.763296 41819.68832 5798.138841 855.857752 4907.321199 0 36307.6763 0 0 2993.524054 6473.248431 0 0.01630572031 47422.54807 0 854.8429635 739.5880387 1079.741681 46945.18289 0 11419.66733 54565.21927 243.5278147 10829.76631 0 4137.62323 26811.82252 14529.12089 0 18938.3312 20026.49491 16917.75088 0 652.228874 13397.23674 1163.919249 4284.576905 14004.66273 52901.59727 17107.13303 0.1149921326 1509.702028 436.5922567 58150.26003 1.308445397 170.4297049 445.0718534 3929.962071 0 9119.014654 0 51546.72873 6048.6908 85055.44405 0 12159.83443 0 38637.65319 15375.65025 0 4406.823534 76851.07656 20133.02222 3798.148445 3299.798096 51247.1435 6421.312256 28283.201 2332.883097 6687.585497 0 3277.473682 10397.35986 7410.464323 6838.158962 37091.18832 0 451.2005009 99.96430721 7053.67871 13256.10184 1004.705878 45925.02399 0 3.787799678 41875.82274 42651.70801 43736.76533 9790.234168 0 0 22851.68138 40915.64238 2326.083675 3835.235864 124.5284433 6026.04768 47410.10087 1414.456022 5800.72513 38728.56057 5790.247244 25376.79924 0 14066.72388 23639.21565 2310.786832 6512.854806 0 61820.85195 0 798.6338939 2823.522925 0 31399.3408 25606.08154 5744.826027 1934.398674 1883.341367 7549.227147 1876.536141 6632.992926 44033.42968 63498.15269 0 0 0 2428.988302 30350.67178 57879.88237 5859.594614 0 142.5526884 3818.289461 1577.794152 4064.808607 4774.016553 937.915376 2722.229693 0 17507.42028 0 60741.42424 24972.19574 5987.676069 196.3127128 20950.66995 4615.425634 0 0 0 0 0 49495.28245 0 4787.705266 4577.361567 0 0 1006.484946 1981.785574 14734.00671 24664.44891 81853.73366 306.7133474 0 0 6962.803015 0 23796.83848 0 0 1934.945243 0 4228.305836 27756.44842 3426.119985 0 750.6418992 7205.677526 7227.532948 0 16362.82217 2533.427438 25931.61516 903.7301277 0 0 1713.87474 25787.8701 7.506444908 8902.468874 985.015549 0 0 16970.03718 0.5786987961 0 20162.88842 8949.710111 2416.41585 26356.28763 231.7444115 7393.094474 15316.24059 12.43911899 7950.931787 7368.774364 45193.10841 46830.40851 6732.833192 0 0 10458.93757 33616.58904 0 312.9628354 19169.97137 1747.716985 4042.772142 16795.85545 +0 0 39651.89197 0 50836.29504 0 0 5510.865966 0 68638.72173 79.46547829 74741.59201 0 424.3373476 0 0 0 0 84.07844109 2789.854851 5989.049782 2913.625001 0 0 39313.77278 0 41706.57465 0 6447.240366 0 0 6758.706832 3086.076015 0 18702.22688 0 18134.87195 0 0 28051.61861 6021.770525 66359.86695 101.7417109 80829.01149 0 9495.500904 2338.21625 0 46172.71788 71895.23445 3452.48594 0 34713.38641 5158.659403 105.1099174 6157.42354 0 7364.975872 2030.008325 0 13771.05348 51372.62192 0 2191.092435 0 3328.509199 30908.96186 979.180309 0 77972.77264 0 0 0 810.1638304 2474.432171 2269.601788 680.1540282 18909.73972 20923.5775 0 0 15871.57962 664.2923647 10114.92009 6746.205979 4308.344335 0 16758.83304 301.8448025 13141.15846 0 0.7051518331 17158.93833 0 4622.095691 562.8884235 3250.344014 3107.773032 0 1.205003897e-11 4152.342554 17210.49229 0 232.0186902 3906.410392 542.7612357 166.0382691 10881.89113 11707.66031 820.518306 8394.247044 29428.43659 5259.085343 59519.0833 71920.50401 38482.93097 19618.64319 116.4168751 0 14240.66625 210.6132602 108.9869774 4393.561836 14.66559521 0 4060.475285 43.24324645 4053.134499 1528.76304 62795.73539 0 65733.57473 1980.052673 19026.59497 49982.02003 0 33989.44973 1483.657841 71638.09284 37839.20946 15340.40883 9014.512626 15293.93033 0 0 43610.19295 1014.194174 532.6615576 33992.5358 104.4368198 0 0 736.2007448 0 2323.490181 3020.623775 0 93.79228286 15896.26245 29495.46382 0 0 0 2723.995147 6443.106684 13089.69107 3188.721341 32550.58284 12790.06685 1865.226713 12433.36915 0 35826.10732 1678.246056 5124.073036 19230.89916 16736.53691 5089.566425 812.9842026 20680.59158 25185.88607 3418.259014 30248.40391 10383.07631 120.8186069 13393.41608 253.0799369 0 6508.892242 50108.68344 0 0 18429.02407 4845.052113 10068.78794 3363.273379 27363.82304 0.01031400118 59603.22938 2626.970178 2386.254955 3864.389459 162.8762137 5235.378872 16595.13991 487.8251823 83586.04948 1780.421478 15516.10758 0 0 10191.61602 2467.656224 43175.4094 31055.23171 417.0722972 57670.92095 0.008860091526 50088.29161 7506.522923 0 69973.6173 28175.98721 21232.16092 1405.651353 0.02461724369 0 8316.033098 24580.28778 9241.521134 3165.932315 48984.75975 0 70894.32896 0 0 31142.83654 9584.816053 45722.95075 0 2182.744904 54095.09923 19876.03244 0 0 14.23464654 0 4086.487095 6101.207508 7982.675911 0 0 0 34722.74074 0 328.7454088 28888.33168 17726.29198 879.7118096 5798.907811 0 267.3563291 29767.91239 0 0 0 3015.470651 161.5120219 5447.131668 49.22440569 188.3594367 8248.085979 3027.573458 10376.65088 0 685.9104744 0 0 63860.87466 2.454647091 30772.378 4525.088174 0 0 59.16840691 7409.83911 112.0235287 5182.68245 7333.464178 18480.57994 31788.42749 0 7.795931608e-09 27.34162675 0 7455.164004 13445.80485 4686.017894 7636.349784 0 +2632.239085 0 11503.9728 0 20447.29421 0 2383.733323 965.7275005 25530.19914 14.13754084 1060.546993 1276.073453 0 0 0 5492.667458 0 0 20392.02188 0 0 26453.83799 0 0 10660.25036 0 48104.87751 0 0 0 0 0 20509.36431 0 32105.56559 0 0 2339.928532 0 1124.175852 3061.506103 18459.1348 26495.74154 8677.298151 31418.19903 122.5061188 1575.327586 3389.82827 6560.482623 0 18138.22068 31403.41057 18255.30516 12458.68431 13326.47058 795.4871079 0 0 45.62155651 5334.758303 1803.848393 21987.52552 1774.328079 42396.35206 52499.35035 64.7953388 2922.192118 814.7691153 0 0 0 14769.68762 8250.651967 64105.94378 0 0 13532.15943 65734.84326 1179.95039 61757.50434 0 0.8061252002 6923.772155 0 14588.12184 1388.009004 22069.92668 34865.5229 0 8999.70913 47934.10829 5536.525193 19856.66996 20988.75379 24713.08646 0 0 4333.019808 22497.46455 11655.8707 8760.590753 182.7009433 29001.21063 17510.81426 5863.6863 5285.800425 40.0513389 1725.078031 0 0 6482.300464 20850.34176 0 13416.28447 15241.08928 0 8218.148183 46.91696451 41448.05018 0 6876.656995 27779.53595 38267.80542 26993.64661 76494.2382 11683.9126 23608.23772 21801.02541 8.577765916 0 0 0 54668.65581 49948.02331 893.9805264 5445.38041 39846.4764 10336.63955 45224.21539 23043.49359 10739.56572 40142.70624 5073.165826 43123.77871 34709.59616 0 53510.53932 31975.84218 10432.57743 11400.13944 18423.43866 23791.47616 20777.79109 316.5910956 10799.0029 75739.84026 15878.45477 17344.7889 42368.9099 0 53918.5787 0 0 9048.062729 0 0 0 29832.90814 0 24969.26736 1570.59813 6987.126722 3333.995877 1045.574529 2441.738689 0 22449.62494 0.02059030695 32837.73384 11594.00198 4197.17493 6698.878043 77.37417998 59.15904698 34372.52097 6.825950812 0 1065.346486 2815.62933 0 42706.55653 36052.37029 70641.62528 0 699.637847 8678.550155 3298.281461 11784.97265 541.7676406 64123.84538 3605.044405 12972.87006 22785.96093 76400.60419 81.56103405 60367.16603 57724.42043 18271.27803 35043.00567 41196.09788 15176.50276 0 143.132016 9034.760344 56216.24257 43690.90307 0 31.37538964 38057.67601 55178.97926 0 2940.036685 2773.077306 5693.050763 16427.72396 5054.01327 46308.09244 41738.46766 0 394.3771796 4517.442624 17985.10322 4622.854583 22.296938 0 2169.550147 165.1819644 48187.13336 73.71318596 34723.0781 31472.29543 14172.6757 0 4408.486279 68309.74465 2130.209917 18323.49898 7646.205815 0 15758.12001 10261.55457 1891.917793 1570.86754 153.1116002 14561.65176 25187.817 484.8154387 31401.01122 4582.821752 0 17578.61418 35.23484878 0 6971.006774 0 6254.398025 0 38612.30878 51701.66714 11498.22286 30515.64594 10336.60501 60915.38372 2.269265081 3494.718139 9493.686631 260.5900871 0 33212.64699 22209.89526 17737.07514 285.9150586 9599.07434 9249.79046 0 0 0 0 0 2225.252564 21487.2908 0 26031.47949 5364.136126 0 9.511924218 16226.06408 0 0 20941.55187 +18091.67565 3168.749777 42095.19445 0 0 4721.682791 0 4276.265604 0 0 1034.513637 2578.625653 11518.8889 30092.59857 3241.19605 2097.882779 0 12053.53681 0 0 60128.41014 7126.551344 8636.862945 0 19270.93553 28367.99914 6378.795335 3035.280898 45.2679624 17591.11581 0 2977.239696 0 13254.3781 36042.75721 2493.496739 36054.75104 2650.380547 0 9779.288852 1537.538687 25701.27219 2665.694948 0 0 4073.185865 5875.260141 2.745703299e-08 0 27785.8672 0 66954.05053 16.22089183 8351.204273 10593.132 5018.564039 24431.29395 0 59387.87991 7643.407141 44428.8638 0 143.35829 0 8634.164314 0 25891.4443 22522.32078 6.458025593e-11 60349.96343 39657.66147 9248.601613 1372.414778 12569.76258 0 37597.28516 26668.16884 6062.130968 19951.59844 51162.76758 20923.73139 45502.94917 248.4328275 0 57377.86893 0 82457.42758 97.55994278 50258.65392 35977.68319 4170.586341 19164.92393 0 140.5161826 33.09285029 0 0 624.4440465 6290.948762 8613.219181 45672.20538 476.5070001 47246.62305 8007.758755 24631.01523 0 65704.90341 0 17683.57264 59.90099834 11941.1245 5401.113495 0 54736.72643 0 0 75.43867544 943.1317739 9978.692906 64699.64842 0 7407.577281 3524.482031 2517.002494 6282.715234 0 20908.88426 3165.717246 0 51547.56182 2238.92428 8763.36756 4294.1389 94455.36204 1934.575749 2900.548525 0 5124.987398 2949.490679 28359.23513 7871.758143 0 871.1154962 1250.829906 443.6725846 58803.21908 0 8152.729503 2474.284306 3280.676369 120.2660298 0 0 6377.435443 57662.46755 2422.855199 6980.448649 530.1852101 6952.175586 1405.662409 3990.981473 0 270.6089016 1445.257584 30247.22282 1223.121816 0 2305.461711 27412.6272 22961.56693 0 0 12592.95859 5.951645116e-07 39361.17336 2.444674089e-05 6297.165927 64638.04176 0 3.218452009e-11 2289.427478 34680.90814 3574.560134 50921.59215 0 71339.39386 41084.02288 24956.7424 54281.73977 402.8392414 19724.03881 4349.494578 14535.46509 9405.390677 4973.637368 29182.63071 0 170.5311126 6807.395889 8393.265248 56.66274854 0 12126.55122 8950.54507 2826.824112 72735.24094 1643.623463 3066.177922 17010.17272 1027.529685 8.189872354e-13 21193.06597 27928.74436 38297.84019 48516.54388 3553.55784 30158.82981 0 3762.867149 10184.69792 0 1935.215499 107.6549601 1.772203783e-11 0 6627.949632 0 0 0 29936.15916 0 6259.563439 0.308211899 714.5877701 3344.957224 0 12796.80715 0 34809.22719 41584.42422 69473.25427 0 224.6686085 0 1471.539188 7623.105848 352.855891 2449.668886 36096.58823 5613.68906 0 0 54425.10634 19597.66149 22871.30379 0 6139.901254 10150.78758 516.3592945 24635.48359 0 27013.17999 0 0 2550.106344 0 0 1760.619413 21.82083169 0 345.7784991 0 0 0 0 0 1206.266305 0 0 34812.47207 14513.35218 0 27885.70232 0 945.259982 884.3668354 19242.62196 2939.655023 406.9552681 0 4086.524703 3054.214094 0 41.1799794 0 23197.41444 3838.444425 174.6015814 0 15240.10509 +0 0 2185.58595 66.4760081 0 228.2516368 2918.994361 8721.860064 0 0 0 0 6573.522672 13430.86596 12222.26513 31389.88316 0 39870.26592 0 51806.15635 37.16415248 2.114811385 80683.81659 0 4873.97008 43521.52557 13171.14459 768.8749279 24110.34488 0 5368.217246 40856.83169 0 76955.33067 0 0 8648.346675 0 0 47139.63976 0 22334.03244 33.07575728 7458.036935 3584.585957 29807.71957 0 42963.30448 243.8142074 18820.80506 0 0 31318.59685 57688.21231 3584.43647 0 32089.88101 60547.20995 4190.911188 5164.86402 0.7858514879 0 779.2805372 0 0 0 47086.83105 1510.201307 0 62109.41855 0 47861.79014 5104.980198 3402.461882 3902.938104 31.97116289 0 815.6892044 1998.57542 12427.53565 9689.574708 0 0 9322.705956 2480.031191 0 13937.13027 0 23629.0892 57065.1395 3856.148836 0 42087.42706 156.4491397 0 6440.111211 14193.20397 28755.0832 4555.850287 0 11341.65106 11059.47267 0 0 67247.82563 24672.42641 0 2760.120901 0 22498.71661 0 940.6055524 8641.274574 0 19570.4794 2433.670384 5083.432164 0 29946.04999 18193.98234 96307.75231 16374.74008 5281.903242 5561.747604 34866.28609 0 1285.935818 98.9216383 0.3407769032 0 0 6635.579675 1.503509115 5.04335026 4.685758483e-12 51705.66338 686.3692554 4446.740593 1599.908499 3050.419449 35124.4868 9836.274707 2487.551947 461.5804996 16780.99983 0.0302158924 10851.45842 67412.59999 0 39.12381608 17333.17453 0 18726.09333 0 3088.457147 19493.10846 3980.446489 3437.178563 7163.890507 17086.4765 31166.25328 399.6642802 1156.017736 6179.410664 27095.90136 0 3518.425044 5948.279375 1724.409265 15468.16442 7145.585659 0 258.0416989 109.3866374 319.7288809 9431.300159 65767.78434 0 11959.72419 2006.76922 2029.163479 1063.620149 1339.786139 2683.999451 0 1810.224836 0 76037.67671 4496.955721 68050.40128 21641.77809 0 24917.92172 0 1082.36176 8911.573346 15132.48173 3272.724491 0 88.60729553 54.77697684 997.0756577 2207.928588 0 33503.8132 0 15387.93032 10227.5404 9663.877989 15347.43726 50361.32916 4217.57775 0 1283.580518 7968.777111 46963.75932 2242.577954 11415.37962 0 23354.96344 3713.49889 0 2677.740503 3615.092854 36645.02324 4129.351118 0 6530.692464 28878.06094 0 61.24022938 32879.5512 55635.88643 74704.33605 7143.426655 2194.977607 0 0 819.3562811 0 22307.26638 27199.06661 23238.46738 114.5850795 47127.47301 10504.76866 49032.36871 8433.154185 35494.28601 25514.77148 1452.029294 0 5294.233867 0 160.8021531 8648.171713 39140.7739 34957.02485 25447.85159 71.11187668 3670.511144 3592.972607 0 8027.580464 35156.2959 0 2002.389314 0 4704.398929 0 0 9250.766057 0 0 0 578.1354209 6004.717639 0 4929.127626 0 33644.57985 0 15728.83699 0 3658.679247 0 0 0 194.4552209 1824.048749 74658.45008 25082.67396 6759.781063 0 0 0 902.9155923 0 1164.744775 6432.844571 +7530.684146 0 7864.457224 42989.88007 45051.43411 0 27540.0913 10151.83212 262.0563587 0 56266.5728 1035.609843 9639.409468 0 0 4458.853291 90363.11543 0.001411863684 0 0 12383.69231 0 14064.10643 2136.128478 3.958192349 3703.575216 0 8693.982468 0 0 0 0 15718.2679 2188.293467 0 2109.995781 9433.809847 52653.47282 0 21600.89944 384.1251409 9407.113414 18503.85308 0 0.0112508743 0 0 40193.09112 24.23788922 228.0002792 6919.318628 41390.01676 0 43893.08608 2536.743838 16231.27498 8478.210164 0 585.5177357 1822.410611 47412.34346 4904.524856 1522.978099 4815.482655 1446.518925 25338.39185 0 29371.78576 23795.43908 19718.64109 5964.053072 45338.50073 0 34491.30951 18366.11175 8775.228038 0 0 0 10361.77214 21335.8791 35918.81548 11.77333958 5383.044865 2268.265847 35473.54814 0 0 0 0 35710.67721 3082.553082 19454.34944 16809.52922 46535.2567 46.71448998 2373.844866 175.4184445 27860.59083 10906.46483 43510.07633 1680.405933 0 32127.60302 200.4498215 0 34827.7261 27.84903531 70580.68514 0 8226.276048 81098.47946 7805.732959 12184.63739 1784.701644 4514.158064 9325.905641 27804.21979 0 30.8472794 11554.97048 26085.67892 0 1348.188149 424.9640667 8060.37405 10593.50944 0 17330.07531 5030.717267 17.05068033 3904.556777 6791.431849 57610.0748 987.1372332 65936.18557 31719.23834 0 55195.06496 4984.265741 36380.41527 7390.83358 146.1544328 60.7791263 11287.19252 32170.21377 19958.81177 0 4.197383492 567.3298775 4609.564663 0 17063.91059 5.720176491e-05 5045.78245 2362.664158 16.68312401 1765.430358 0 4386.982701 0 29851.06231 0 3070.754016 5666.64638 0.3974185233 389.4439831 23307.76386 0 3910.784805 26039.54766 3305.518418 3418.399206 26589.90533 886.9787686 13790.14564 48228.1996 34937.63881 20411.46733 0 0 74.06743574 5020.808928 5431.563979 2802.477444 0.08101539841 9877.018223 30417.21388 4128.41111 18953.86317 57174.22175 898.8793588 4455.446182 26903.07044 8322.256466 1582.766739 0 22000.91827 0 0 28427.32371 2072.32238 716.6594214 0 5622.669661 0 18091.24297 1.459969129 9089.855794 35736.74004 33882.61695 4426.666104 5094.445995 22622.56185 34722.71695 0 0 0 30173.79423 60287.32792 5926.075627 1802.950884 35179.18343 8802.532682 0 373.2480535 26058.77776 1782.437577 9744.801445 2482.249529 0 220.1796756 0 0 11462.26242 0 4759.251597 7213.69002 654.7910211 0 6610.836747 824.162066 0 0 9128.378428 4263.585898 122.4940187 8616.850022 33929.02037 5003.358474 0.8814615439 0.05298937963 356.0497371 0 1.049575752 3617.056116 4584.588348 0 0 319.7194684 9075.834805 0 0 0 177.0133028 71517.98942 11155.83177 0 0 61890.56856 0 0 6622.693902 8695.217303 0 0 0 10891.78674 0 0 2919.56726 121.9006879 0 2584.312916 0 33093.16212 39596.15228 50827.80011 0 1692.209465 2444.500921 220.1097548 29707.0736 1.499844595e-08 17120.33481 19296.56124 123.1305871 2879.784071 0 0 +15660.12964 27233.28456 274.0175288 423.7204961 21268.03439 0 0 3189.376258 39.39183419 1134.104775 179.4672394 24411.74708 0 6228.619916 3709.757145 0 7936.143288 1203.323518 1045.579276 0 528.6512069 0 0 60935.48556 19456.63564 3343.486203 13676.15868 9586.503112 2210.111825 0 2330.69989 21430.18456 172.4580645 48982.87502 14346.79844 25615.12334 0 10671.30406 0 0 0 42984.53053 489.9926216 64957.5798 0 56109.71443 4430.718871 12559.29713 271.4715806 4243.464844 0 34868.4046 27254.98575 5796.928693 0 8836.953531 7548.545364 21663.84783 0 32.31724417 302.3813128 3155.366344 8431.331572 0 45520.21385 8561.365314 2228.322688 58190.63843 96.32393683 10962.86361 0 0 4275.683286 118.4768372 40538.15434 6597.222607 42929.48893 15340.8898 0 696.8908278 62.65904506 6717.738113 0 15103.77145 37.21389836 0 0 25569.71092 39220.79394 0 70567.41548 33907.34706 47133.28975 79.22707362 0 0 0 5438.646512 15672.76429 65020.41633 22694.37473 24172.25454 2167.29877 4700.831409 6.630343389e-06 135.2459767 0 47728.48285 0.006199163557 0 55537.87815 0 38015.77796 0 0 25079.90785 7794.74702 10246.74441 6820.833728 0 69520.72151 12853.86756 34993.83327 47969.12545 25661.02136 6500.308227 1651.522468 52444.53054 7505.406902 0 24503.03192 4150.151641 0 29066.4 5370.728501 18953.93787 3525.404752 3654.969768 11181.15417 6065.872525 43959.25073 17056.04712 305.1287823 0 69043.19302 0 476.1856358 6239.374097 0 0 0 4866.772283 4260.646681 118.7088248 56650.60653 5520.889012 35691.23343 3517.955702 9073.31666 4072.222519 26611.38027 0 1709.245536 59058.66138 0 5463.238708 12027.70188 6953.383306 2681.506209 26166.61687 9307.604469 3678.646976 9963.01498 0 11729.43669 29.62266746 0 24051.1894 62839.09014 5012.88673 3305.894208 0 41228.49821 14.19972734 15142.53845 8020.093067 0 4949.787411 62072.21643 31096.8574 0 33459.31333 561.8262495 31690.10563 0 1961.068553 3404.460793 1725.734699 0 444.5574674 2766.118046 68.18258823 19407.46316 0 4987.228491 5388.663641 47516.0498 36260.25546 35838.89117 4552.336149 19970.81656 0 10908.85859 46139.84329 2718.927098 1628.39496 1812.179261 0 12262.4979 0 42591.21342 129.4255785 68120.50187 40185.45937 72706.92946 797.1916362 23317.79595 24194.67933 11962.15367 41926.44171 9506.658775 14511.27321 2752.009792 3979.247647 32267.08954 561.9018379 1657.027729 0 444.4641188 3030.922324 15961.55316 1881.409649 27533.74012 0 19345.75109 31762.26214 5215.488541 0 26019.61513 8359.619281 0 0 37.05688025 0 4762.797249 2222.530908 11368.51483 6678.365237 0 5094.067522 0 22835.72208 0 20795.65973 0 246.7716242 2387.498699 18713.76307 603.4461224 0 3710.298584 20951.119 175.2055808 2839.956228 0 3598.307458 44815.91778 0 1335.467136 0 23811.15471 0 0 6053.619035 0 5796.52437 31823.51848 18631.3312 9246.855612 6760.847625 3057.968623 19340.63214 1827.61359 50.65893506 11970.14429 6505.517695 0.0005902869335 234.6881513 0 5876.836553 +2462.468768 11869.0912 81283.12072 0.6146860739 6.085472877e-08 595.3238169 0 10034.23287 34094.99842 6424.88568 0 34801.61397 0 22124.3971 3007.8305 1931.001149 7.642659003 0 0 0 3658.27848 0 0 213.6637532 0 11368.03378 13028.54071 0 0 0 1856.360944 2561.428141 0 0 0 0 0 65.56305785 4129.2272 0 1597.052267 0 0 4.634757153e-05 4794.323424 16279.94289 27272.25159 11442.18379 260.1474331 32788.46744 0 36563.53974 15984.02391 0 3936.785385 40531.83206 3.284706921e-09 568.1763774 16340.30469 38.60401243 2770.329984 89.62691629 40853.54919 0 4825.368967 0 3183.423635 7073.22259 13169.19808 18183.12407 4399.597959 0 114.9241847 5313.800812 6557.119057 62045.85889 0 0 8763.625473 6379.282396 0 21250.22961 0 0 0 33817.14308 75805.77604 11586.48767 0 4714.50607 23414.52575 0 20698.17446 0 4208.068098 36027.68743 6860.796335 0 2879.072271 4391.572668 18948.67857 39622.24845 2353.661451 0 2172.655692 1880.144558 19508.49763 106.875607 4623.391892 36901.91089 60468.43944 21271.51491 2730.501812 57743.47428 1679.856493 15729.77882 3002.975346 1.374392413e-09 56025.85042 2350.332055 16425.15703 6199.58193 32287.9895 8288.270517 3465.179954 13582.13997 19097.85652 2358.458433 35.09768202 0 2.120237428 1.822978517e-06 0 86791.12265 0 268.6314324 51327.86342 0 801.729354 0 25560.61391 30719.99902 35816.06771 14250.53808 14882.37892 6360.762541 58108.1141 20178.77548 45572.16427 0 4956.136064 46867.01386 21661.06124 0 52309.83461 4492.304197 16138.76959 4485.785453 27321.32303 25554.63442 0 19572.119 64.85744411 4906.707431 296.9803101 0 0 2440.205837 13890.07895 0 19390.59536 9253.211517 22187.0434 0 25852.69068 17191.32599 66317.90411 80128.41928 42827.03174 3431.981548 1283.268361 0 3832.470336 7.683809619e-07 12949.06633 4515.658028 0 4229.312903 4093.669171 69106.47519 322.4667721 2861.120486 0.9121046676 6684.480161 0 90.85736336 17152.15379 24413.37552 65980.62959 0 4027.207409 0 2325.084692 0 10952.57116 63174.27603 17839.56076 6661.989727 61577.2087 4540.576027 1325.972609 47866.51953 0 1474.659923 1950.479997 20508.26305 0 8781.574128 4413.397934 29624.1063 58248.08153 6546.220856 0 10087.51836 11578.23958 25591.25268 0 276.1624572 8738.152183 546.2015419 21248.89982 0 49369.12703 160.0429434 222.1482101 160.7402091 11894.90636 0 30335.68947 28485.03943 492.513522 54425.18263 0 0 5034.654782 404.7633705 23439.80429 347.2794431 1575.18005 218.1466632 3944.570346 42.13272566 0 39495.01282 0 8388.053184 963.9336433 19826.09242 0 10986.59425 36108.23248 28904.40794 0 1444.523333 298.1316292 34.75588797 44389.22786 252.3458072 4274.499344 37658.94772 0 1317.819839 38264.73199 27079.87169 4069.412912 20917.35559 8962.578654 15797.51911 1736.765943 15270.21163 11396.74944 56.26191553 1522.544674 8359.719428 4596.806725 24719.06182 25235.83751 2102.478211 0 2395.090623 0 0 13849.56962 36684.53299 43997.13488 1091.304623 0 6096.389005 15246.41359 0 +10467.34266 16864.09786 0 0 8884.730328 2809.231943 0 10766.9763 15154.44098 0 8147.301678 4839.942993 0 1903.89492 17733.76467 5379.088858 11300.42811 0 1021.940587 0 3076.55429 68611.68785 3161.725367 0 0 35783.91423 6192.046428 0 52326.79841 57990.5468 813.3985214 2729.282733 7146.479028 0 0 4940.644415 76221.21459 0 2526.735176 61715.18322 39409.45958 0 17322.63344 0 19052.78342 18639.4763 764.3090207 1806.952578 24.84855945 43137.3734 0 14684.87325 24548.56116 2803.822733 21766.08774 0 34854.18146 0 122.18295 4704.428595 2194.515934 55283.30236 960.1917986 56910.6509 0 42194.11819 16872.37577 59.10620385 0 4647.484037 26040.37378 8867.553847 26094.9942 2427.505654 0 21967.74785 0 27077.61725 0 40546.21935 17732.64628 9544.276508 46839.87866 3785.780662 21794.07446 5625.188839 0 15868.76136 22301.37579 15247.02668 0 0 4504.195309 38877.14697 38061.25604 18081.23572 26699.75911 30470.38462 25085.30724 55131.1105 9369.507199 2039.651606 2237.793858 11508.2662 40977.81655 60650.1849 2.414377804 0 0 8479.921848 18766.50734 69342.69337 5864.384478 717.9915077 3473.252955 13738.00014 7669.674974 6157.676608 9436.239577 37942.58949 3854.699037 1776.048057 0 2673.075267 0.1075285964 40703.98615 0 0 83058.02684 19006.73345 172.0625623 0 0 58226.46464 8599.281263 9163.513178 0 42586.38578 21184.57114 1165.334432 72.34140793 3361.5358 29473.00046 2370.207641 39356.47132 9100.812496 0 5345.005627 12081.59745 3688.784662 11580.45233 8199.391613 25343.04337 28178.83333 3425.816346 4523.144532 1580.081251 263.0704284 2774.062494 0 59404.71822 3512.242585 0 243.1147313 7350.937455 0 3227.889468 21697.56628 0 20743.38306 0 1494.02695 28939.12148 42054.50502 31381.84799 14711.3651 7429.675632 0 49454.01641 0 6439.302309 64770.83631 18011.14265 0 23307.65077 232.5041891 5877.887944 3976.824309 4534.251723 16661.33272 61674.09026 3390.595429 2604.859708 0 49132.2845 0 0.1159216543 11518.05643 42349.3626 69476.70389 33610.15293 36641.83295 37153.72965 4315.921937 14021.51247 0 0 0 15274.57697 40552.57308 75271.19624 89.34733522 245.6714147 0 83.08291448 49440.88013 20365.5395 0 21905.13596 22050.12511 39.74375317 8988.754381 19596.11303 0 0 10676.65448 36566.1278 44194.2912 0 0 50980.6791 43725.60008 12507.42614 43470.17686 2559.791624 17142.71013 28317.84049 18334.41504 0 0 1263.284322 16752.93263 1695.724106 0 0 36345.41996 0 45145.1223 0 9472.099618 0 19278.13258 0 4483.880763 3263.062182 0 42.53600649 767.4955391 0 2567.964271 9510.629063 30758.60915 0 16993.61176 22428.53689 4880.277355 44667.37744 4663.461665 0 0 3029.513615 7393.780042 1813.090858 297.2180173 2143.336193 12103.90651 15105.14384 91.69737196 8231.031989 0 142.531119 2821.18074 72492.15273 38.71633137 3574.712183 391.3551778 0 9648.979615 1630.893342 30564.40914 0 0 0.3480512995 15582.45871 18366.1846 0 16248.20209 0 0 0 +3826.356793 3844.305149 0 25059.35328 1303.4658 0 12431.53535 44343.93943 0 0 37025.20022 223.873174 24982.50108 777.3173293 0 129.346875 559.9034611 0 11490.60873 2378.19813 754.1336288 22515.2436 71643.46753 2620.923646 1760.501935 0 0 39988.25157 0 5124.701512 0 35620.40552 0 16395.48144 0 0 24227.95985 0 1557.297746 0 1485.242162 15.29063877 51958.68672 0 2466.299536 0 11584.42779 0 0 624.4517224 0 0 6531.246698 0 7790.108114 37517.72982 0 6021.12486 153.6929685 2476.208701 0 477.5009724 45753.6819 5680.036098 40.96445543 32983.47404 0 0 0 0 13176.08865 1109.427776 0 0 7210.557726 9532.912563 103.6377291 24846.47675 1368.019071 3697.990135 8231.737441 38150.80855 0 58322.71484 7912.478228 20539.60537 133.3209026 4622.542662 13229.41301 21906.00323 1693.518585 0 25239.57186 20232.93068 28182.60237 0 0 28715.71092 22574.74838 0 1412.424902 17018.4623 2780.821943 23.02887251 0 24666.56435 3841.362307 808.9603411 15127.92286 23686.72402 0 43206.92584 45727.427 1108.705352 63777.68697 1386.685976 4463.057626 7830.932037 0 39313.17426 8607.624339 14739.78787 257.5693877 32902.52919 49297.23254 10726.69999 0 45.73705945 2389.02113 906.883734 24316.34903 9720.430596 660.688394 59.93183079 1143.488803 37607.16076 25262.44756 0 0 995.6761466 0 0 0 0 32461.14702 0 2565.852541 815.4843764 17266.19214 83.75339453 52891.1176 216.6891511 0 0 0 41261.08893 10158.31337 419.9815417 0 10247.15668 9649.611329 405.878819 10388.56909 4162.807176 30712.17462 0 2.718084348e-07 11286.54692 16644.65834 22906.76452 0 30192.03944 0 33060.38822 3097.58782 81145.97455 54.2860437 2241.964879 38249.79302 69.59076816 10944.10387 2107.645265 7370.899858 2808.308064 13408.83094 2176.095735 0 10618.96014 25721.36635 5783.218903 0 1152.863154 37.94500744 10795.63179 0 1310.344222 0 17831.79491 0 5102.319453 11088.52361 6268.317194 4715.167684 7083.926725 46270.08239 23926.01173 0 13923.21102 15538.7507 83250.76618 0 1345.917171 45184.64267 12959.21149 7826.741096 0 0 55216.87997 6635.509199 34384.40119 0 16853.31729 11749.6301 35414.59447 23397.08746 41881.46298 4899.664957 11437.137 3468.974516 0 0 0 0 0 0 0 0 9349.129834 25343.30292 115.822705 5426.886934 38364.42889 0 8668.326389 86.0343367 0 1359.243073 7829.312374 12858.34692 794.5401744 2631.177796 1.123300715e-11 0 0 29298.3592 13957.06867 0 0 44626.79648 31233.11737 7124.597027 14444.36732 1719.091969 42.64595912 4373.090839 25468.72698 0 0 2247.199524 5817.929749 0 37647.27433 35960.03778 0 18314.04731 0 4073.907696 9.805874223 0 37418.37575 5171.918571 0 3823.96884 3905.468566 40052.94706 25150.85448 6772.265183 23776.34486 28.32967188 0 0 2422.493224 0 33569.32562 570.4654747 0 0 0 13366.37162 4413.133097 +0 0 0 0 0 0 0 0 0 3006.309193 0 0 25419.13504 0.01499321205 0 26840.79852 0 0 225.1259303 25.8930773 0 7740.746941 42.32670491 48649.07742 0 1032.630236 20207.59544 0 24650.21028 0 175.8963839 12544.95398 35979.40886 0 8937.452971 523.2850137 398.0430786 0 23300.19364 240.2654601 0 15910.45858 23620.417 0 0 0 25548.28243 0 0 31.12543506 0 0 0 0 1033.130741 4421.684518 30757.47548 55029.30149 340.4789917 12551.92922 21770.03511 11216.24511 3192.642486 11129.79376 1475.702932 9521.464074 7631.741534 0 0 0 1459.831928 66491.67073 22691.24739 45752.56002 2191.354496 2537.24499 18716.37583 2899.89667 18018.33376 0 1745.958479 0 58693.30026 15765.11192 0 41224.67573 2585.945026 41043.06774 39839.96749 45106.36729 51839.34243 17229.61514 4739.670511 9112.342545 949.5360529 15881.45322 4885.398352 5352.858974 54052.56076 10928.23952 24786.2909 58579.22319 249.9073042 2325.536362 18392.29019 4480.896076 38972.3204 143.6350876 13329.45646 14015.98878 35860.81705 0 9001.060749 8835.192733 1596.571551 8761.390565 31685.31215 40731.29875 6422.784862 9332.329192 0 42395.66422 3463.163675 12886.10535 4906.057861 3693.484039 20981.81173 4909.718407 0 17445.37064 9719.789173 9464.484719 51775.00149 2704.334325 0 0 37581.06247 52407.97891 29712.11901 201.110531 22209.11825 0 4086.175983 3933.848699 19838.79598 0 22037.86058 22742.08431 0 1088.490243 12414.44713 2440.508949 33856.96166 11124.52884 0 0 7.800628928 29876.88362 10624.75444 0 56461.13093 0 1544.742221 6752.654843 35288.4248 12370.8024 1985.025467 43363.62112 30454.91149 18758.96101 0 4767.521292 0.4583983573 318.9887902 40894.46169 51362.41429 7454.191362 2262.05637 1301.382695 10854.21328 2506.90575 4882.636634 6842.835745 751.264131 0 7557.816536 41388.23833 0 0 45047.17871 4311.913525 259.7065279 8763.825281 28.82853835 26620.97064 43178.97351 1551.886104 43518.87296 0 0 0 916.6799609 13326.03978 76393.6224 21098.07102 0 1605.138232 33591.4527 4348.281932 15340.9327 17060.70602 19531.08406 7594.030405 4534.503367 33401.12218 38459.31674 9914.041524 4614.791749 3809.446511 0 0 27.8994717 27271.44055 0 1742.674468 1416.937033 419.6002035 1607.701792 15285.82919 0 0 1728.667637 0 1887.69412 12865.75669 6232.633811 21410.05963 52674.7532 226.976308 0 0 0 115.2378417 6921.938741 0 16618.82671 0 0 20622.36299 0 0 2109.007881 64182.70655 313.3291157 0 7878.513742 3965.717102 0 0 18710.82238 4289.069632 17583.49646 51985.8155 4.926011699 0 1217.196222 0 0 0 10336.35926 0 724.7240203 66193.74358 0 1142.255832 15414.63363 656.9914093 73154.11895 0 2238.900293 0 0 12756.54089 3600.106536 16082.67258 73.68620252 0 2433.365081 21492.28594 10134.53414 213.8198429 599.1494369 0 14971.90754 812.4131762 0 19664.20781 3068.719939 0.08154485473 1.026027474e-14 +0 15799.62228 5120.074511 0 0 0 0 0.3334743378 0 0 0 0 4504.993109 0.004816668236 39355.64189 8846.954734 4378.442513 52534.99918 0 34613.23674 0 0 2818.336328 0 2713.071359 327.4136066 3519.726909 3711.866384 0 68.83731695 0 0 0 0 991.2387318 13941.93767 0 0 37156.39388 61041.28226 0 0 0 0 41454.99722 29245.1043 9262.006352 3643.61365 7951.363163 5318.984034 0 0 34139.13647 39760.60222 0 8326.037194 262.9877065 40.63699287 30024.27366 289.9582716 0 0 0 30.67160498 0 6245.084778 3.357413493 43557.1741 32854.57406 0 118.49816 2087.981971 25426.55641 3334.195643 4232.738052 3467.609631 30938.55665 307.661347 0 9611.534585 9558.733009 0 34344.1609 114.3235358 3090.580528 14651.04088 15712.45412 15051.661 0 2383.774565 10694.23587 3829.277072 45547.5183 34930.68937 35386.41576 21622.23786 0 0 3290.30821 57479.10162 3522.648809 2529.26515 0 7317.135449 0 2166.662576 3302.357887 0 49218.7472 53649.69466 14810.02139 54.00404101 9928.960295 331.0071185 21482.64446 0 5.6071446 8697.277257 13924.37112 65268.9938 19444.87857 0 2725.449482 2162.113434 8443.927853 3170.439313 40329.48872 16235.13912 0 11657.71382 384.8838787 18667.51922 5268.207405 10864.33973 8893.247992 541.1524662 0 0 4753.217345 0 2374.240826 0 8047.489864 11640.9938 6216.341878 76014.65659 8958.903524 0 58425.38732 0 55308.79549 2369.768117 58325.01763 0.02793492854 3.795109691 17212.783 17980.97449 0 210.1448306 0 1694.02821 0 14492.62379 0 0 0 46532.54072 25170.20349 16417.08627 21400.09879 3519.522071 0 16559.03714 623.8106895 0 0 1159.152769 5070.225465 358.7071515 3541.224361 41042.55175 5095.531607 0 11234.2819 72761.27037 0 0 39909.02467 4475.207334 6.935791753e-10 0 54125.00937 22209.27868 0 10905.18326 0 0 26604.83582 204.9513573 7866.13536 20794.56044 0 8869.709594 3369.192635 0 6721.058559 0 0 0 55435.07451 15374.66222 39.82120046 0 25529.21516 20774.30257 20799.74816 6252.16199 19504.05857 220.4437071 7.28631666e-08 6166.658392 0 8.316568618 15918.4822 0 9139.997572 48.92274142 30957.10701 3702.851116 0 3805.776359 23.91134495 15867.5297 0 0 27303.35746 13130.13471 3260.295631 18589.30689 0 104.7300831 606.0804619 43.41356737 2076.911333 0 1432.651735 878.972745 0 5539.708289 0 5362.455245 8336.7034 32200.1851 65951.02926 2000.830147 19724.05668 1480.107063 0 15999.79262 16788.3112 951.3265839 5417.81224 17695.39743 0 1357.065893 5251.838944 0 31743.65869 0 0 0 8194.792444 18734.12981 0 8959.008223 0 11338.19882 0 0 3880.826221 0 0 0 7064.333381 115.8527533 0 6268.398541 3329.472777 0 0 0 0 0 0 0 8540.413868 30813.53462 0 0 821.1198875 +0 2442.157703 0 9816.477849 98267.25891 215.9455641 36745.43404 49402.64152 133.6708633 6359.311509 0 0 0 0 33941.76358 0 0 0 692.2140943 0 0 2654.207642 0 9.562022717e-11 68825.70319 0 0 14015.29284 697.6092839 28794.35078 0 0 10851.56781 3496.438184 11293.01844 18903.82298 0 0 0 57403.25104 29528.21372 7401.203972 778.5552731 23570.9299 3300.900031 54597.21386 0 994.4913677 13560.31624 0 40234.44813 0 0 269.0356241 19054.0561 4301.316898 8412.408046 57408.06368 5535.381289 11846.85386 0 15320.20333 0 47.94950734 37178.66196 195.0865886 1267.4272 2330.650272 0 1775.134027 4304.639711 3104.206102 594.1496821 14323.77304 904.2085276 3534.730591 0.003885036781 6512.969792 45153.64598 3320.086978 13134.41853 0 4379.979261 0 31164.14803 10043.31112 216.0296591 6230.644047 0 0 0 44443.14334 14166.92404 2451.651133 18891.54189 35764.89376 0 35377.95322 0 33473.76203 0 30978.47189 0 50201.41883 2385.182327 9603.428016 42929.86119 36820.21921 2449.704922 82.45345197 42317.13808 6262.826867 0.0444395128 66829.04168 28426.2632 4421.188007 0 62876.80025 3208.787395 16883.04922 45480.89485 209.2918499 173.7107418 47298.11911 103286.8675 1300.04565 30539.94662 1892.956789 5889.1194 214.4132515 47676.50549 2508.441902 1.698365547e-09 0 3216.928044 33574.22321 26967.67226 335.5921717 0 37337.50242 27618.36851 16480.27427 27713.11953 7279.550355 12351.2258 2383.722143 11328.23986 11276.56587 2788.593997 7805.640943 195.9118858 309.6795248 44924.17235 13437.55841 0 0 0 6972.574378 0 0 0 61406.18575 10822.01197 20989.45325 69438.98463 0 26499.83137 46213.574 0 19962.33838 39.04298942 0 612.421863 18733.37147 1874.266746 11338.57119 2075.906772 1184.533508 46461.50936 64080.34982 50670.22729 263.1352445 8264.115278 0 592.743734 367.6577368 0 0 0 11379.82861 566.8164971 0 12393.0553 0 4036.869844 32.42509604 0 2140.315852 2876.581279 7057.778968 0 0 4824.486885 0 15929.53586 1388.246452 0 35778.30717 0 38669.558 248.0649239 0 0 6366.282736 0 3351.094353 10040.53576 475.5686821 6426.346987 0 0 0 0 24830.41009 16206.89943 0 16374.43085 1083.233381 7648.360454 16100.02674 0 104.3185137 16982.97938 40650.66538 151.4753531 21632.22475 48737.13658 1950.180578 10065.08492 58398.18254 0 10926.22233 1073.107059 157.8588115 0 0 0 7159.429023 2767.488116 251.8322402 0 0 6863.533826 81.19002136 0 40163.1269 152.7890595 3085.015606 0 0 1866.932298 2704.516907 38.39117924 0 0 15711.67476 7537.20808 15018.97419 0 0 74011.50312 8390.953822 0 14194.36105 0 30396.51344 0 0 47024.27506 375.1448938 0 24351.15556 0 7474.381423 10713.45849 13673.61764 3937.677637 19989.22088 4651.49415 17490.19839 12517.81281 8893.758709 24923.56431 4098.394913 1146.597736 1280.088717 0 0.1925680001 0 0 +0 1117.021424 10598.85899 0 0 1513.833329 0 591.0405691 9422.276433 172.1725603 22769.63697 0 0 265.8490469 26747.9102 57182.58712 4255.527633 4416.931646 0 0 0 0 0 1004.350231 18744.35392 0 10.40940452 0 0 9457.51673 8875.81868 9305.109419 11951.25854 9426.250693 6816.928456 16435.93368 17463.01327 7283.64575 0 37392.47479 19051.0026 13052.17206 37840.56235 1252.089743 12238.4303 18308.55919 0 38083.17413 30911.11675 3647.92771 4766.913783 9632.396968 13574.37594 8680.354654 51.76435859 0 14652.631 251.8438074 0 5382.682992 44739.40906 11287.00606 524.047815 1766.805691 3677.303084 6324.1272 31475.66693 0 4220.869639 12.37896611 14434.53951 39559.78983 0 0 19663.35434 0 0 9.920675697 1892.532444 2.829017017 14463.3141 0 18712.30169 3464.937643 0.4757698413 0 0 2308.385359 30663.31683 27561.32479 2470.501749 2634.661473 34357.43672 826.289504 226.1929094 33095.65378 42469.24783 15368.33581 49673.81377 5455.912735 1552.372538 58007.61975 16062.12338 7551.322134 49051.21197 0 19392.74166 1875.543036 2308.32502 0 36856.47633 2890.715946 7882.756281 3457.809034 12103.37756 60973.00913 4180.832162 49137.54549 4914.002908 29390.31031 0 0 33438.71356 2399.534441 150.2919416 0 66582.72603 0 20452.9229 6962.707271 202.8640318 24633.79931 0 0 22197.55427 15416.41784 35434.12242 0 0 0 52.7068376 18415.56172 32503.95137 0 28031.92336 8.046592126e-09 11962.36557 2307.736079 0 77181.22333 4707.067484 434.1462475 50318.21236 0 25250.99229 0 31150.74167 2068.202845 1656.373892 23141.78644 164.1675184 32071.25673 3329.443689 1814.374796 3950.559544 65626.96898 101.1531055 0 5618.499778 56805.03126 5279.732264 5808.027065 0.5525742566 161.126656 3135.365099 1910.129296 0 0 9063.643633 7952.984548 20707.6355 23623.66401 62503.91619 288.91494 0 2980.762146 4259.139128 21359.69317 158.3350666 61415.54436 0 42069.43951 35005.27829 4843.981253 4374.896339 16059.05997 48.42366753 0 14434.70317 0 3000.374986 0 0 1658.01072 11463.75338 134.4369613 17350.23704 0 116.01186 0 4203.740044 13200.67355 14310.29223 442.0477416 0 12475.98822 1162.592724 9172.716981 4439.702898 1401.45013 97.79399974 31739.5714 0 2764.612609 66946.08386 35664.27838 20103.314 11947.78192 35304.15132 5510.571472 0 4337.212553 12025.81359 0 8619.590674 0 4935.337658 59.14945669 2838.91556 0 25986.97785 14474.607 2525.251164 10412.16839 8577.725656 0 0 487.8560677 68166.26461 1310.7267 0 1077.855795 2801.151249 1529.458742 20114.24736 18965.15557 0 16269.19416 3063.087647 7494.364831 8689.262861 0 0 0 0 0 1098.366673 0.2511574464 27726.33106 61792.27021 27895.09944 0 0 17107.0758 18280.14624 8288.855746 1469.834857 2148.523124 28323.98707 23833.51691 0 0 0 19424.19332 196.3457011 2421.645096 0 10373.62436 0 26823.89 0 12846.78178 0 0 16869.11486 2.043053524e-13 25850.85638 0 5828.216871 12823.29139 +0 526.701935 0 86407.58157 18407.64179 160.1562126 28370.44112 3431.896845 6650.092557 0 1083.068234 0 7161.188073 0 0 0 11670.1865 5249.582487 26206.81711 13021.91393 1358.424987 0 395.5640172 681.5615503 119.6079238 1157.392039 0 0 0 7766.215473 0 1071.624018 762.6110359 1029.137056 0 23454.93299 19459.97915 13921.64579 287.0103793 0 1983.735607 0 0 54086.58263 2907.524866 3468.486019 2810.391115 0 0 10516.41577 55496.11192 1878.936753 52719.89806 0 8009.136061 0 1742.942089 0 0 726.3685004 68836.62385 12603.78175 18826.90557 4001.055151 3666.058221 28295.14828 0 198.3931527 51040.11485 33137.76476 0 47403.57756 5486.901362 312.4113558 3451.562268 16129.51606 372.5908671 17028.2774 2243.436919 28629.67875 13880.04061 22071.24668 6338.709577 1317.713334 33510.87843 0 26808.75353 2205.404308 2095.201243 17725.64517 0 4614.119279 24370.96295 3811.293644 812.7412348 2665.990255 0 14727.22053 8521.462889 0 0 315.0731977 2936.33589 6690.501048 15166.5615 26446.04336 20085.10503 0 33345.13382 9008.312035 0 12606.27174 0 5.159367884e-07 9050.51827 648.7843403 515.0062553 0 3368.463132 0 3103.819527 5122.772525 4275.358969 39607.45325 60005.94553 35370.13056 70.1287476 32602.7375 0 9130.669673 2860.111879 42796.01005 9564.142084 10220.61493 1587.478028 65628.09113 24499.96686 38285.41833 36363.46259 5.838799702e-10 0 0 20666.32111 20731.57895 0 10015.53376 2345.96982 4347.471322 52261.64961 8458.897676 67778.22799 0 28237.84624 30881.51096 0 0 0 2695.108983 0 0 11751.015 52019.31841 0.003767032156 8.4809821e-14 729.9104963 86.34624317 12166.64812 34.68214022 6827.087942 15657.01928 38669.06102 33560.63313 120.2397301 1242.194811 0 26283.11346 0 17326.40524 0 0 1.94893403e-12 19033.39892 776.1884535 7186.017285 0 1658.852874 22612.04485 0 0 26675.74195 16765.49592 22792.51654 419.9894981 0 0 30036.99758 20367.74019 18901.40808 3813.88254 0 3438.745139 19844.66464 24737.58175 0 0 28712.18479 0 3741.478078 0 0 0 15.09025285 32350.70493 0 2695.953479 9.411449916e-13 1811.688974 0 0 0 16536.03356 7267.500846 0 4821.043315 27598.72164 28.99824328 2.058527168 5282.711951 0 3217.878766 22975.74114 14037.43256 0 0 0 34761.8986 8339.072093 36033.42435 0 19777.82517 121.4626608 25908.21957 0 23076.90171 0 7617.755216 0 312.0184735 0 34.36241968 7986.480098 3774.873335 196.3233549 0 3213.66476 13.3586065 0 0 43233.58354 0 3580.825531 0 76297.81836 0 7438.32961 128.236681 874.60664 0 5505.809692 49495.77164 19503.94989 307.5333524 1778.223935 12585.63067 21908.54329 0 0 11322.22526 7382.15667 626.454511 0 12053.76206 2505.632202 0 5465.957234 0.01125752641 0 5295.481744 0 7.313818639 24233.99088 0 500.3337126 1264.236158 0 0 0 0 0 0 +0 8308.846121 0 0 2682.303596 12942.31455 0 0 0 27392.33105 11182.64101 10268.5251 31023.80062 1795.518284 0 0 0 46485.76744 75333.86292 0 5194.114818 14788.82551 0 0 14449.93004 0 249.1088043 0 4108.126911 12032.89098 12924.10913 0 4807.108245 0 21178.84422 8785.535318 16032.36617 0 0 262.3977543 14007.72046 10666.46529 0 621.4883981 0 4720.319085 0 8949.325406 36847.34104 25090.23575 334.2012589 17014.82986 34901.42819 2139.811014 0 0 22658.7842 0 0 296.6993081 44115.4061 0 2151.859702 3490.927423 2688.822229 8665.835203 6545.393947 25003.93648 24831.21688 11526.13715 190.1658669 38955.25848 59873.97827 2764.242714 0 58399.20595 69504.76006 2566.1946 21678.29829 35477.6713 20776.56598 0 8126.339605 20656.62248 61288.20491 0 31.87613202 969.1753276 52145.59642 6537.176227 0 8546.636057 15501.87025 0 2484.319481 0 7352.000676 23174.88619 8383.09113 0.398225098 57095.09187 0 52086.45652 0 11852.81597 2332.280155 8171.442903 0 2278.432997 43077.18814 15258.33931 39541.45524 9318.090585 0 858.9658383 8057.706384 40254.05306 28672.80151 5095.041286 0 2341.788837 11206.48005 10527.14981 9979.901762 128.0285635 26105.83782 559.8149014 0 63514.40736 2988.655848 0.1497500422 5646.288128 6295.196416 0 0 3371.225852 52116.09168 31335.44073 33676.65635 28168.86348 4893.054745 3739.522713 26973.79913 31681.0494 20417.53479 0 34839.61548 185.0447895 0 44905.24646 0 54248.50965 86.62298068 2866.404649 37649.31841 0 0 42121.52507 27698.46633 0 37997.19304 4.983658113e-05 1285.300526 0.004130916779 0 540.6677281 0 0 0 25764.11139 39158.48006 207.5536537 0 80476.52515 99.30551245 30979.70092 37150.68341 5137.295359 37.62105275 28421.28934 3417.304137 62228.45488 47959.97471 0 0 35543.58818 0 1117.085119 16672.00281 3483.129306 21419.27684 0 12552.3441 41.57706916 27430.8626 4236.686582 306.1573758 0 135.921196 4685.255424 0 0 7468.375912 20770.36082 41366.72485 0 0 432.4752773 20057.89054 0 28528.97142 0 4153.731708 45093.80908 86.14164672 0 0 4014.947475 12935.03807 0 14757.57725 6303.662858 0 17928.62694 0 0 50110.61516 3404.010139 16081.49396 1062.82661 0 0 79.19378951 18215.9909 50710.78275 26024.11727 30016.78544 0 3344.292701 8654.583612 16488.8437 0 7294.927551 22286.11324 0 0 0 4963.616729 14484.13083 0 58.98012781 20639.23786 0 0 25850.64221 6358.21591 42226.00811 0 14242.04185 93.82516963 61.00423644 0 0 3583.667711 0 0 4082.730291 78818.29121 7577.399726 3288.858633 20711.1801 34923.46606 11565.30318 0 0 0 6957.652359 0 0 3056.355703 61210.45758 1684.356384 3409.342276 27064.06948 5013.015923 1814.179282 3152.570584 27081.81682 0 12221.0467 0.0004978087378 150.4778391 0 0 0 215.9196152 2052.045896 50873.8872 12865.37814 5943.252679 +1567.662313 29473.03422 16863.42606 42686.41886 0 0 5755.506048 35034.68948 0 40.49782446 0 0 5115.463702 328.5192956 36253.55825 287.7283575 25151.97254 23276.28349 0 9090.574442 271.5838091 2483.516412 0 810.5118981 2911.344663 431.5400082 2549.610783 0 8458.298443 22383.69183 0 0 0.07901409479 549.5502136 9692.844598 18287.81442 19625.99001 35878.52289 0.348834101 44283.19968 2579.718064 1994.309134 0 5536.875151 37379.42476 0 0 0 0 30943.18894 0 5552.380416 60512.26757 9105.044051 5618.655349 0 9533.062256 21973.2378 15924.17049 0 73741.08975 0 55821.0111 6047.576216 145.67272 3629.632807 286.2109343 0 0 3941.199924 3168.986176 6602.603297 50.97451346 0 31871.36115 349.9906721 0 20883.8364 38963.58441 966.7148284 0 0 0 7904.061422 38063.32278 1053.902542 0 0 2826.291158 0 3271.650831 58766.42964 248.8319717 8694.140713 11939.50694 24624.70525 18914.28302 9169.687502 65961.77394 7566.098701 57382.21391 0 5278.184829 2146.808761 31157.48182 3661.060065 1018.547613 26885.00201 10876.30907 23073.00943 11971.54271 19365.41916 5377.857693 24023.60962 9146.129194 29729.40155 26827.93983 43988.63385 41728.02659 0 3574.920731 21796.653 76.40595292 3469.063202 3590.078535 37175.23935 22245.74556 22055.71043 3825.792016 0 233.1321689 0 0 0 5923.706823 8763.404598 20.17007126 19603.07608 0 2166.708778 0 37878.03956 10147.95298 49501.49616 3666.291898 14533.04879 0 1048.177176 6428.150316 0 36389.48733 50.78020565 23939.49445 62480.93714 24467.82933 8905.602836 19199.05982 291.7162207 5152.272148 7.924167e-12 1350.70358 33602.89289 0 52850.02419 2147.140738 12730.36401 2662.074666 27581.71633 23673.89737 0 6132.554151 0.01013177811 23488.11057 2100.5259 14323.11182 0.816579894 0 21153.17842 4843.471396 0 2672.311956 10792.59592 561.8278355 70315.25305 41526.51403 14637.45016 184.3614596 4101.701873 0 34096.15128 28.08122935 1516.224374 66.03045319 273.9119468 199.7622584 3163.124992 0 12970.5904 0 26032.38912 20370.63842 1541.051781 8152.46256 8.644804919 0 25527.81853 17268.42787 9374.86529 52251.59772 0 7891.259694 319.1990033 0 472.6496839 4702.86786 29621.11316 1077.337179 10916.71493 7281.969027 4214.133084 4667.568557 234.4949094 1274.529732 0 17516.34446 2792.119695 48.56711878 85.19552979 3756.172275 14753.71354 5157.429511 26231.12045 797.4601087 6735.719236 0 14714.60055 0 275.6879001 93.38721448 16.52821105 0 1809.930769 22358.65206 1881.234589 29113.27908 16120.94403 31254.62917 8107.184005 4534.805091 1084.646715 20736.7478 2272.742494 13287.28403 83904.55753 3371.279153 6787.056128 0 0 16916.99684 26462.82618 4045.898965 3825.94174 0 1010.865631 26838.49784 0 1762.308972 11093.58831 0 1840.450777 0 0 0 188.6752721 0 8151.397961 14087.65295 35350.00618 5787.072756 37392.53956 0 0 4358.054933 8064.366233 1350.083699 20757.9203 0 40632.5656 0 0 0 13465.85128 0 2967.880389 4566.828735 0 5813.976686 17.45984507 52.31970724 0 +729.2802156 0 2167.950623 13492.85479 0 9.825656208e-14 32118.53407 468.4429069 1915.015527 6948.957792 6577.822428 0 0 8147.858006 127.4076833 0 0 10785.29718 0 0 35430.4263 27614.86966 687.5325355 0 0 8761.4079 9686.779576 481.6402537 34128.68892 0 7135.373841 0 976.6077989 74.96529037 0 46427.5909 40833.92183 44428.87018 2752.016241 10323.25915 4760.869859 6277.865408 98.2375853 45374.09243 1320.789534 0 0 19444.62313 0 0 0 5855.454488 2045.153842 4794.313153 1378.305319 9518.658166 14589.7484 0 0 0 59.91571452 9553.244039 6791.270042 12919.32186 45091.07259 9776.040209 0.550818392 38050.73815 7758.142411 3053.598621 1624.286345 0 60396.83419 28308.84112 31749.33576 51904.2154 26132.10489 4108.95269 13474.4341 18122.10979 43459.14015 22942.88363 33022.2624 55386.95459 27723.71127 0 7025.824639 2708.536285 0 0 20333.04895 0 6338.393041 0 21546.53827 50527.9265 38697.43159 0 242.9233472 3777.661982 1660.545608 36261.45044 13656.95845 47506.13832 3543.135657 11085.46171 4372.90937 0 2383.662397 24665.2008 32667.71798 8727.005966 27979.62608 31042.15644 1013.333549 34346.17839 11898.94757 889.3888136 33613.13278 6053.727667 0 304.364222 1836.219947 7.313300501 27367.30051 20066.93294 40818.12753 17609.60768 16462.08264 28339.90713 31342.60235 1.006585677e-07 71094.64634 4329.098188 15599.33487 0 0 1944.759906 0 0 23649.24715 0 157.1809697 175.6780201 29796.29716 13655.02275 50507.28782 2.547683395 1.133981367 24647.88323 3650.012496 22878.0547 16905.4508 0 41588.74935 8350.906268 50205.59464 0 4229.338589 0 14404.39808 49958.34593 26399.12899 17429.37253 42728.11389 30475.48549 0 8428.616573 54644.26929 12260.86505 0 34474.0984 3654.824228 19887.58558 23527.60895 264.2288092 385.1629685 13603.44944 14254.94051 15735.71548 42346.6357 7183.208782 0 367.9265127 5822.847759 1501.863797 0 0 4280.726826 460.0927175 0 3194.171228 460.958661 5958.555327 29576.31561 23947.63757 6.316863211e-08 0 0 5809.529227 36870.94103 0 0 0 4606.8315 31731.68135 29961.61931 6131.158898 599.8944588 2989.552458 0 0 53941.11239 1801.105325 0 277.1913071 16319.57921 45362.03309 1557.961475 21162.57513 63284.09916 0 16782.05358 2116.831157 38668.49459 5344.573418 4853.874222 29.62179897 0 0 5.339666695 761.3128886 6295.191639 9798.509553 7316.322409 37876.20836 15015.44179 0 47215.94463 0 7791.374847 0 36951.77734 15398.48601 6467.321891 0 4171.96444 11538.79104 5574.45315 3380.078017 4206.005512 8108.219445 0 0 39.06171578 0 16783.24945 0 0 19739.44302 63371.21164 0 3617.010961 1024.76596 16725.45315 433.587427 3538.965621 57520.27 40.95461597 17037.11288 109.8053746 4249.081377 4835.870174 0 0 0 1329.489107 44491.37878 23800.78319 28027.95765 1389.917738 1391.06055 0 3756.234154 0 0 17218.76096 0 0 0 11610.91191 9966.45515 0 16905.44056 25029.49391 0 0 15593.77701 1811.627232 0 +14005.40829 0 26558.76603 1623.161586 6651.922457 16909.21803 13287.1597 24871.30362 0 1513.585713 0 11530.23855 3191.042387 0 0 47910.03311 6354.391394 103.6664044 27504.21107 0 27636.91927 15366.44022 6498.179834 1941.913116 0 0 7168.821201 0 0 46160.70835 28030.9153 18989.83063 6907.338414 14760.14915 1687.422232 0 30.72644758 31818.22103 6657.980894 14880.38073 0 131.0079166 16965.45273 1789.638854 0 5038.820081 2718.153735 0 5943.225698 1078.275305 0 29687.09926 0 6775.050511 70944.977 0 0 1363.498278 38107.3566 11548.34416 832.7095062 11417.40756 6595.385942 67530.41378 5.138762289e-12 6870.427145 13894.50835 23776.76756 0 551.5020027 0 23.35007369 3355.396592 0 0 1895.853248 18131.40252 0.0001793320732 58912.30752 0 3726.014363 696.5785766 21280.63815 35413.38328 17299.88724 37927.19923 29610.77996 14327.5197 19721.47056 14700.60405 5507.360009 13843.842 5.357894832 5608.587403 45136.99957 2086.909772 19841.24945 0 36682.36229 1859.690727 42594.31994 254.249594 8603.183331 25448.70936 0 0 7447.877764 1490.101456 22871.2373 42296.03494 0 3583.934434 1011.48374 22017.20432 616.8181769 7375.148261 0 15386.12201 3.990682024e-11 6069.045614 0 8155.384074 0 55883.19427 8076.168816 77272.30119 951.7136508 0 7357.995811 0.6909900172 9042.55685 43462.58218 37363.49614 373.8802078 3924.368967 2.544363442 82.50985496 0 55.69183011 17407.70609 23525.38362 1547.89563 0 22239.9606 7228.710642 0 12767.65805 114.4141585 9989.594246 62897.15238 59577.08785 1545.428455 18834.95185 13109.27503 8299.257907 6028.136936 46732.03431 828.9493377 9106.391462 25918.66163 479.3988849 6653.12771 30769.86269 27131.40207 3069.82825 50483.51015 55050.35001 0 2412.939834 20777.69833 12022.2603 10493.9362 0 1190.929688 16088.56733 0 20073.04526 18506.52338 9480.060293 123.4117351 54720.05399 9431.095562 370.5446625 7869.095094 27891.06599 60292.27305 0 1542.121756 2832.555157 0 28330.64416 12530.9351 14797.24553 0 8368.354565 10766.50941 4464.906769 29625.8981 11455.5606 0 871.3131669 54904.51206 3530.988222 4520.262605 0 19556.09856 1022.51826 13400.37825 12159.98305 14174.16597 0 4766.585398 7875.394109 23706.02851 0 41433.25446 0 3997.267335 196.2847235 821.4620984 0 8440.051695 2200.502887 1122.891208 332.4607564 2525.719263 2904.682767 4915.926586 0 7382.712744 0 0 0 10033.5399 20232.90213 0 72993.13744 7518.445714 9753.080902 30.94447918 3855.062909 0 51977.64004 0 6403.140166 22157.2171 0 39.07351201 14647.30755 20220.89532 3020.629892 0 155.8210017 1.068550708 11689.40294 18558.42682 0 565.2980653 0 4314.969146 302.6606059 6599.067162 2844.305917 0 0 768.8956434 66969.38112 8215.213848 0 29315.37274 36708.82578 46756.04152 19954.52242 0 0 0 0 0 0 18696.85903 829.1210405 0 0 18203.39023 0 11885.50435 24397.80818 0 0 5499.93668 0 8051.800936 2187.690489 153.4987592 15348.45057 0 0 13929.23455 0 0.0004088201492 +4775.724702 0 18542.93607 21992.33292 0 43169.23751 9712.738385 416.4659147 3157.524845 0 0 0 22786.30434 162.6830038 25.28022647 0 7338.615476 0 0 0.0005782978066 14432.03336 27037.74704 0 4525.844948 1397.392035 0 0 12967.02414 47192.16866 48753.24644 11433.33517 2004.899357 31961.74094 0 2235.670637 9242.609524 0 0 0 1409.191506 8300.176702 17664.20587 0 318.4169054 10957.12255 914.7591044 39827.24727 3368.422166 2961.986203 7999.737304 0 97.29855125 0 0 0 20239.04839 114.9639337 0 0 3667.262429 13294.61015 28880.11648 42906.39901 9761.070825 124.6068991 4589.917494 497.0874342 0 482.4315019 0 0 5018.349507 3605.024251 6427.504083 35135.76973 54428.08501 9986.693344 8887.262554 26225.59619 10597.13648 295.1761193 876.6198059 0 5925.111827 8364.630558 5472.548395 0 64273.39078 34234.10418 20755.89354 3151.927149 0 17597.13293 0 6723.277504 18225.41402 802.5723778 0 58283.23096 1077.808719 6102.693121 6931.352472 1705.767666 14296.5354 8240.056551 7968.013716 50846.84757 14894.80624 4880.121211 10627.22256 3681.240933 0 10351.44644 0 0 7313.319657 3005.300076 7857.722218 7068.203267 22011.77558 28001.88819 59680.57761 12771.28881 1886.11108 0 0 0 382.0703164 42494.62241 8639.164134 13083.26991 1915.678837 13083.76165 3907.660173 29305.34709 0 2120.668313 41010.86683 8336.715839 2532.12622 44.65501273 83.84373989 3751.304603 0 10974.75797 2347.74836 49937.39156 46070.53011 23531.11708 284.3248136 1839.858863 4083.866805 0 4995.561393 13061.2216 1621.171079 171.4565718 2596.669759 8477.26626 706.2848512 5725.907915 20274.30787 6114.18684 25335.434 378.6998426 0 1432.786615 4865.546987 0 5529.611406 9871.502472 35444.4008 5160.221967 7950.470264 0 29035.24819 0 71229.2613 0 2430.326339 53422.12611 47568.25885 0 14861.47377 4764.52704 4482.343829 47876.99553 8241.287938 428.1819426 30.9943225 22948.62573 4341.223112 19297.18271 5796.862266 0 65039.71576 43815.66988 859.3324074 21863.77318 36007.24901 2883.093713 74424.74988 10399.09667 0 0 20506.32171 0 0 31805.10042 27566.52706 29675.56159 30213.87055 0 30806.76168 0.1151100673 2827.603417 3004.985022 0 13729.24506 9472.221781 11103.27916 14921.5211 71.17837047 0 19796.459 53.09890024 66779.64241 48478.26803 5741.880829 41205.37756 0 64058.21463 8561.849147 635.7004957 400.6368859 9612.798148 0 230.6446613 129.1510439 7457.16172 15250.86775 3796.989989 4002.949451 0 2229.994709 40395.71006 37.54404686 0 3344.390734 18555.598 0.5831007644 2640.983473 444.8512073 0 0 0 19888.26736 1171.117454 62356.29484 45052.7767 9713.642794 0 0 1268.808112 53021.53022 0 0 0 2070.128515 11639.78829 10546.91415 3414.792251 0 1622.809686 27016.06168 0 0 0 3184.819629 36618.11185 17745.23474 27989.10628 0 2376.626532 132.9817795 49202.1821 5.986189455e-06 8358.523444 2748.543168 4312.03085 64380.94911 729.0379214 26792.25891 0 0 7717.158036 3546.710072 12734.8717 0 0 +1477.197008 0 0 40039.01217 0 7945.442772 132.8827656 0 6029.191449 12291.50577 7934.19246 37631.86006 0 0 0 0 37894.53077 4949.224218 1300.501244 12929.79716 371.1493855 53.63362816 0 0 1773.698296 89945.37965 0 7129.58125 0.0001422342465 5630.16774 476.6402097 0 0 13161.34745 5469.632587 2136.87998 0 83.54635026 0 41323.95091 0 1082.788903 41.33431785 0 49975.01116 17407.47876 0 0 54.18141065 4722.595377 108.5343535 0 17561.91895 561.6155017 37260.6464 4237.498728 44669.56288 2062.223594 0 127.9975007 10863.17079 38173.54122 2900.723997 1364.690249 0 1513.324736 0 36717.65746 429.3512555 5517.541942 1758.333564 0 27646.86097 0 4152.91448 72.7800824 674.0038474 0 8724.891545 18410.57357 1.637740502e-05 70640.45854 60497.74609 23203.07215 22598.73167 37346.51848 0 6621.757867 7362.983168 14830.9306 14619.53254 7102.645519 69776.30622 61938.73782 3430.41746 54457.13108 6365.315837 3.137412783e-10 10444.08761 59768.69985 65172.04671 1710.914324 231.3700037 230.1295176 2793.148318 24863.6857 28005.42785 28841.16196 0 8842.729512 54999.25606 0 15945.96329 51143.24052 32256.93455 0 83.73227052 0 4015.368394 3576.223962 10225.25827 39018.74818 38304.75131 1.914269634e-15 11622.71666 0 6.133803074e-09 6141.913281 0 14907.20182 2366.538309 1919.411931 379.5076622 0 11928.7957 8083.259375 1.553285336 15985.26482 0 26046.70486 0.06238993951 116.0125609 39135.81496 66048.68794 6532.878743 0 3804.647938 23511.75241 0 6529.562486 44161.62812 17244.49465 533.4018743 30532.47658 51307.52156 9457.97201 8184.839764 54324.75999 60375.12523 0 1680.390567 57340.99326 3829.505329 0 0 0 4026.586297 53.78942292 0 55321.77404 9958.404778 0 7266.640564 39363.2034 32.28225076 11359.1592 36751.18648 1680.017727 28.68188486 0 0 17315.07311 2416.73345 0 915.2088191 69553.53018 2547.058452 39.43374201 28488.12621 13687.78328 302.8103187 12725.26344 1408.167839 0 4084.522714 257.0858151 0 45095.90196 0 40065.59313 1952.095327 1612.468214 28936.02209 33293.14173 0 11379.77807 2697.364667 2075.598272 0 9090.69507 4812.962248 4996.280147 0 21261.85664 4592.541891 37971.8759 4794.324404 10020.85271 33823.47212 1976.603902 49180.36631 7055.306438 0 26228.91642 4675.873327 2152.674658 19879.16862 1931.892299 4871.313805 7109.115742 1801.222266 0 936.976648 3089.208408 0 660.4523338 39230.57129 0 2672.125089 0 1622.318247 1867.458489 8405.262145 17581.38945 54.75719981 33016.14546 6516.394321 862.4465897 0 3549.662151 0 2153.801696 0 0 8520.988098 135.2169588 12695.50932 5263.797867 5296.439232 0 17415.43733 7562.854088 25970.39166 1601.410387 0 5831.264204 1201.825074 0 44762.89537 0.0004756613333 0 15713.85194 0 1970.061185 46885.66191 0 41331.4201 0 650.9125251 0 0 7701.379405 29.68854893 46.20590255 6486.839183 750.701661 45674.9461 0 0 0 0 45174.91629 41.52006469 13191.43778 112.7111289 0 3136.984109 9499.252053 2203.812885 0 +3015.28276 35520.42257 0 10233.67907 20782.13775 6554.170017 1198.61707 7242.175473 0 0 0 84.3249566 0 76236.21044 2700.529487 0 5752.20266 4512.349471 137.5190073 38856.11197 0 417.5174944 1671.915737 1757.291913 26874.76183 0 61216.23016 52.78312795 0 0 1226.657158 0 0 31118.51824 30290.57009 2.998732276e-07 4137.88124 0 41628.76072 0 0 0 18585.34415 3289.843537 0 46.1496784 9173.902339 0 0 3123.511805 9139.459615 2124.404833 19289.03198 1046.900233 25415.72679 2022.461496 5450.137653 41.41682319 0 0 66478.78581 23830.50448 0 537.5871562 17426.26806 0 7579.046209 25090.58086 2265.403544 0 0 1782.064296 0 29735.21397 294.2786771 11961.61716 33999.94063 2815.26697 0 16793.60383 0 17987.30302 0 69266.64481 2548.098103 3395.431277 3487.627682 13320.22486 45762.64602 429.0921064 2819.850008 500.1291726 0 36011.61469 29017.54095 0 3974.910752 15980.42939 38022.87713 5302.294442 44849.96921 44189.02017 0 5878.008461 6514.907148 6246.787908 23791.14847 0 27274.79106 2129.774732 3954.821524 0 51106.71211 1931.676248 2499.788991 32138.47595 42277.97363 9741.61647 0 0 34712.74086 4.112064573e-08 23287.25581 2019.527383 5080.626089 1200.038405 0 62112.62482 2690.048905 56292.6093 20176.96849 35364.64319 2583.368986 0 0 5599.00049 12417.56131 45002.31824 417.3839487 699.3714431 59531.97265 35965.03183 3125.860814 24530.26241 5106.083587 17447.62023 4567.113905 12424.76329 0 63709.56587 7656.26274 0 0.4615097273 3617.676373 1160.884986 3.044508922 18397.94407 0 19348.1244 2191.986969 3719.501559 0 15002.61222 1050.323571 41967.73053 10761.78353 46715.31545 57265.87663 0 2212.078143 10194.80125 742.5745403 7800.734249 0 10925.31309 37.68452751 75441.08481 45956.92137 709.0396755 0 0.2277463437 2369.953583 0 17520.95933 41.4942679 3429.375012 5195.802695 19947.47213 42033.19808 1215.155357 16893.01475 9733.871292 0 6212.209405 42046.08136 0 0 0 51100.30725 19270.47956 6080.641261 0 4506.473328 16783.05449 16448.7137 19922.45131 16169.73233 0 36588.24126 16220.27717 0 0 0 843.7176473 0 16371.09405 0 0.3984358475 0 2012.244186 0 140.9980555 21773.23504 28646.04927 8664.157804 1491.985286 20290.29579 5190.776646 16551.95555 607.5350686 21805.8397 0 0 0 52215.54429 5685.835739 0 0 0 0 1483.994201 39170.44349 12695.18814 0 33048.1388 0 174.9137218 2527.791994 1154.715951 0 111.6745802 0 34828.99135 23811.82162 4208.79296 3009.502074 0 220.5411426 1668.849098 1119.820587 1860.678415 0 54.62907465 0 0 0 0 4548.055455 23965.32803 0 0 0 0 6824.715336 0 7211.77822 329.1098528 4431.076612 674.4979628 0 0 0 0 14990.62731 1603.50593 4871.119609 0 0 41774.50766 5.380870977e-09 13840.05102 0 31.43539025 42077.91564 2123.188696 17120.56209 25413.84096 0 0 0 +0 5294.878682 16468.89325 0 0 0 0 0 0 1.266585246e-05 15694.47436 3716.260748 20438.19234 914.8801163 0 28426.98833 1438.949145 3156.308391 0 0 0 1192.165812 32780.31593 4499.905637 8597.777715 0 87.24926868 0 0 7768.90073 969.7048069 0 0 48792.30053 14352.17747 4302.570811 88615.43345 22996.05104 2506.536234 0 0 0 57.08784004 0 6645.897285 16166.32544 0 3667.71576 0 0 10604.15399 4477.980718 37.06416881 0 4508.239416 37205.60775 2387.169032 12695.1724 70644.74461 961.5096983 0 4195.183839 0 204.6310595 26664.21953 0 5080.85422 363.3233833 2518.88214 6356.556736 854.7179013 0 10444.07522 0 0 22312.68114 7527.030847 0 19223.0962 0 0 0 0 19359.37766 2187.393855 20942.09345 0 7419.78859 38570.7715 0 7106.286734 0 11975.32796 12177.48084 16393.01984 37321.14039 23286.74564 6852.209481 15149.18029 38434.85042 0.0006335100056 4.114536205e-05 64728.35917 41728.08671 2785.401955 22171.33646 39416.6942 3855.819029 2972.204088 28298.92237 70928.7139 5018.786969 0 0 173.1964654 0 0 0 0 50997.72332 4332.266378 54077.12237 1222.230647 28684.29757 13729.66959 348.6515042 2758.963974 8516.935748 0.0009115382133 16428.53354 0 34973.64606 8823.32396 21511.04525 7183.409 45123.86651 1.999221717e-06 49404.57321 33839.31226 3054.067942 0.1020787309 1430.307393 177.9470651 15420.5158 0 39341.45253 12790.45957 3972.352615 5268.763315 38191.8241 3563.30359 0 139.3571101 21513.57209 9.991815979e-16 0 409.4356532 3235.233727 4434.804893 0 2552.350806 55643.3591 51349.64468 1949.664419 0 0 2407.583688 4889.95513 0 0 0 20935.86663 16730.30599 0 0 67.03138986 49529.24665 18781.21448 0 534.532889 380.3437715 4754.198287 23887.76168 14550.15691 62.48875794 28638.54615 0 39511.16361 8218.580849 1970.607364 965.6094617 2927.107911 36489.55232 5367.899253 24700.91187 5983.810698 23837.78149 18618.99133 0 0 3646.409894 2521.895642 130.9646682 0 1639.824274 2591.829843 0 54013.68347 1616.060169 30521.59154 0 0 10.74756272 31430.80947 9214.241867 9972.922435 3770.458066 0 5147.130667 1649.551679 2416.23053 18156.28068 22.99475171 46257.98061 0 0 0 8805.363951 550.3386006 37347.52179 0 0 1680.894826 38378.30203 33138.93355 6306.634166 0 2329.660242 26247.54341 0 54308.00017 5667.82812 0 0 7823.439835 7965.227692 0 4938.660322 168.2007728 8091.468215 0 86.73789528 0 0 0 0 12853.67708 0 0 57342.18175 35745.88736 7048.033943 0 0 0 661.1842603 1362.279722 0 42010.81126 0 168.5072832 67235.72632 0 784.6372476 0 0 1342.149806 6673.834427 4178.478351 4684.56245 0 6666.772995 0 1540.002358 12713.34116 21627.34271 5825.557112 31522.04683 1571.330038 431.6683562 0 6641.812727 26095.72599 0 0 1561.126766 2841.54601 105.9541742 9.444467374e-10 0 +2986.672887 4689.848343 791.2847385 1659.360738 22437.29521 16228.02284 0 0 34398.0229 0.1581302126 0 24301.8148 0 0 9855.46194 2352.644189 46048.09369 60440.95542 19510.46585 12932.58724 942.9096502 15772.12912 0 17744.79675 0 0 31532.25815 36295.03075 0 19031.00762 0 212.7168985 0 0 0 0 0 8751.512931 1.457605993 4159.287566 6253.696222 0 0 0 0 15950.96648 17719.46602 0 0 29439.79319 1831.563581 7981.930134 0 18595.48862 4482.164046 70192.33397 5201.264039 42507.80468 0 3041.446958 0 9122.911812 27471.12081 121.3282001 2028.486788 2606.771661 2227.342626 0 4072.005707 16984.57974 13023.13815 47301.86788 34.4092402 259.0606071 10474.38351 4830.353039 17692.54721 0 39641.35593 21979.99903 0 9286.552107 0 20555.4005 65631.17693 22045.54725 54369.85956 3724.880804 2128.618993 52823.80645 61812.61912 0 6918.275744 0 0 57319.1984 54727.7357 0 7056.37947 5451.345189 16818.99228 0 0 47865.33856 0 0 90.30677681 0 0 59972.38257 0 37879.27961 187.9416275 76031.95011 15906.87849 44.08809171 0 11945.46807 14516.92384 39509.74133 31496.47111 35485.71602 3985.628909 3480.921865 8930.41751 0 0 2610.726647 33894.44204 12628.13995 0 25343.50634 60121.61438 7280.739306 34345.30067 5143.713401 1738.770422 6883.899028 48056.65486 175.5173592 19717.69174 65933.48209 31294.37652 65701.98148 0 44379.64431 46971.10325 36206.19043 0 49709.5795 68099.33157 341.464903 19065.28928 0 67710.70338 21593.69988 11158.72498 26612.02154 20237.28105 12766.03139 28433.97986 0 0.4397102649 31326.73337 5158.07852 2355.684369 664.5999289 66889.42042 4074.887704 10605.84313 3501.514712 72.14007105 1572.003107 0 20845.63537 25655.69691 20059.30788 0 693.0364445 31763.14646 22536.8141 4095.839158 10063.05599 22300.9996 42.87587054 12120.74461 7102.79109 2011.626885 0 4249.851226 0 4679.926222 106.3879552 0.04455729021 8991.550427 16573.63288 18995.27709 40063.29903 0 2565.054875 0 18171.31188 4875.987295 62.95672603 19126.8441 413.2391754 24.40926711 0 0 0 8105.827088 0 0 27951.16148 45150.72681 0 4483.728651 0 2434.309711 11518.99399 59142.63529 9716.023481 12102.60631 9625.351092 7973.765504 79251.90194 10331.0403 108.0771757 26914.67496 3892.898285 18570.89569 0 70.71802937 26880.38673 24544.95677 4443.876286 0 337.7944531 20255.99748 0 0 26188.95717 6958.915844 3.858504815 0 0 0 17508.56698 12215.29668 0 0 957.4389679 1151.045308 2227.472552 1766.930678 43565.93422 79.04961199 85.53065692 6587.799837 0 0 0 0 23049.17539 2302.296056 4221.593777 2084.782082 0 2702.373414 0 0 8907.624568 0 0 11276.61783 0 0 22211.07199 0 0 25400.13493 0 0 0 52887.289 0 0 0 0 0 20374.74352 2592.568846 4588.08607 108.9035812 53996.60093 0 1222.557736 47271.45602 16707.72654 12629.48584 +0 999.1607413 0 0 20319.04692 2052.37867 20034.6735 5538.216454 12279.81919 8084.3424 9242.164323 16109.78566 0 0 0 45237.17195 9830.317712 7485.759769 1917.546273 257.1989613 22315.83778 698.6633295 507.1468267 0 0 59355.52011 0 0 22884.65036 22253.8064 5527.569045 14.58118872 3598.697098 1766.439002 341.3183129 0 0 17969.22045 0.1355800485 0 15.73289592 0 64.9841491 0 19663.67427 0 0 43422.97761 32451.23987 0 0 0 33542.55334 0 0 4358.795762 25980.83951 0 0 3159.773141 0 4375.917833 777.5666043 9334.297076 0 7774.070871 9246.920884 30013.55521 0 29496.3949 0 0 0.0001516650028 30263.6942 0 0 63239.78758 3713.912434 0 3926.660135 11880.27043 4003.510843 5683.451427 0 0 43428.85177 748.0490164 3943.888746 0 42604.33263 29154.33257 22782.12693 1912.888612 1.797499353e-05 0 24535.60785 2061.310668 23471.20548 47610.11689 29875.61972 17991.74401 0 10913.87095 1984.41358 0 17296.62176 2606.790297 9072.455664 25688.65547 12124.68438 42622.63353 66128.91951 5850.096286 0 13213.46318 27709.42749 42.20107934 50920.71984 123.0532967 0 2139.36916 468.3988972 40.65318484 13759.37005 64115.16279 3.523679408 0 19754.9444 19130.13014 3845.405864 52451.73308 1247.14749 56.95132462 0 7281.327279 57322.42796 34060.02222 44363.11843 22456.11069 22130.12952 4190.71321 806.746392 37703.64179 0 0 14195.17362 557.2588147 32580.9324 13419.18006 17195.5585 0 208.4603228 10491.73718 52578.32861 0 492.9684732 18680.0005 45679.76574 36133.01597 19895.37015 0 23405.02335 0 0.6021451798 22092.34625 0 240.4908312 3112.540426 450.0871296 1087.91841 0.0003835489703 15691.57079 6344.977874 2024.362338 0 8578.677396 26030.05534 1922.864927 51887.93052 4098.823886 12538.70994 2744.454735 51916.00538 154.7454249 42171.77057 3914.972025 0 0 34.79726805 0 407.0032169 2748.451728 40539.47997 3414.893059 3678.206783 0 0 52316.96724 54996.42173 5327.037849 0 0 48849.25557 0 41530.89503 3332.06384 17240.59783 0 350.3863789 7738.795799 0 0 0 2703.221988 8533.781537 6643.925048 0 3798.24848 21509.35486 0 2839.094514 17250.42339 382.8387868 132.0703034 7074.924297 0 442.4878637 9514.594836 52.25293518 2765.062715 31666.0463 2243.659628 32972.98796 1746.595071 101.9103351 18443.53853 8591.147391 23263.1904 30436.47508 0 14676.72322 74.62646186 10980.0891 1983.420384 344.6229667 6777.953154 0 22063.88473 4834.500919 0 0 50353.36993 3563.07624 0 4369.760391 0 149.8699579 33568.41492 162.7630739 0 106.1760277 0 3967.031014 8681.242838 20070.45004 2125.750096 0 48.59871225 4561.742927 0.0007874049362 35969.72859 1059.825477 0 2520.694391 0 3639.753596 0 3801.683554 22972.88997 0 28694.54481 52.52834107 129.6472207 0 0 3739.915052 200.8945857 48339.92265 20229.09966 16552.10429 0 0 0 10603.14587 0 3819.039609 0 0 21371.80712 3386.824325 +15734.00835 23127.95364 707.732491 8121.501609 0 0 0 0 0 9452.539653 74.08705135 777.7052413 0 17892.10368 0 3863.249201 4.426877989e-05 0 6483.025716 238.8958732 1742.370945 0 4123.617168 1824.244214 0.0005848469889 1662.868063 6399.961254 4827.105401 18627.05636 54264.97421 10849.37908 3472.146042 71645.71186 10995.77348 0 0 0 16927.37304 15304.4222 0 0 0 0 45854.8501 327.675761 0 62764.49607 0 36937.00616 46092.99574 21371.01336 3881.06754 0 9636.909448 46.68546844 0 0 2766.567703 1953.793167 71351.79469 0 0 0 7014.627287 12490.61799 0 0 49401.85635 0 7219.578752 0 20247.57184 35303.41246 13817.95323 29868.10752 0 29733.11373 0 4915.968885 797.2206689 17882.2307 2368.48368 2514.786512 12117.99926 8270.284055 30933.79506 41645.32485 22645.96526 0 50090.68138 0 31260.28255 27735.94116 31960.08824 17183.91079 40253.95625 79960.61245 8180.270689 0 6275.494656 22006.57238 0.3215148281 0 0 64365.80125 0 0 4818.535611 0 0 5780.43212 0 17573.70963 33862.119 1835.518846 15915.42559 22567.84866 0 27837.80654 12092.54534 51000.72821 0 28024.08235 6834.356989 19467.52213 37439.59498 7882.438846 8157.498853 0 104.0889064 44959.08352 0 1.286841385e-10 21705.67073 7894.090667 41974.76191 49095.7524 5264.181302 33316.65588 14207.60213 11422.62901 57792.97623 0 0 2765.517868 13857.87079 22786.74395 0 18355.3994 0.03096520081 0 0 67982.13426 0 2.586454011e-14 18708.77476 17677.73313 10097.85142 20629.78614 9689.893509 3716.090121 60258.85849 3692.134346 21191.77529 40425.89893 229.3822346 23260.72701 0 0 30489.06658 6071.52826 11148.42618 21429.4762 0 0 340.1328654 44646.67684 4042.955998 7249.357366 16002.72042 28607.33848 7042.871853 0 13482.83687 32144.3906 731.4697856 861.3825238 9161.228461 17714.22177 5920.644245 6226.880485 50587.83621 6984.227566 37438.07295 20415.03329 20293.07895 36792.15119 0 20520.38734 7080.404637 2687.273698 30362.03098 1.682419272 3485.53212 32438.45128 133.2177737 22370.55772 21130.15033 57.20368386 8366.667369 0 2669.959185 4611.143807 0 29046.22173 0 10298.0854 21957.8809 5007.993054 0 64.48777986 0 99.32029077 10089.28563 0.3572182174 1441.191331 0 4708.339397 0 0 3985.272298 41659.72195 47835.57419 0 9004.899452 47008.75508 1482.227776 0 0 23470.29427 61135.56746 0 0 15281.0173 931.9873891 0 59.09113804 0 0 0 0 3299.576642 26513.29777 9255.790624 0 1720.113402 639.6370827 9856.923743 1.58220935 0 0 2454.484129 83.27252271 11998.55212 926.5761837 2105.242809 0 16567.86298 2052.455347 21925.75547 7455.113136 20.89106667 64976.36156 29191.29899 220.5648346 4228.666133 21211.80431 0 0 33205.79888 19503.21858 0 2491.910795 29157.2698 1.0758485 9244.564549 0 1639.298737 0 0 0 1623.114237 0 0 3.063670102 7933.879539 0.01010818402 0 0 39201.15424 +30272.56904 54493.86121 3960.84859 5890.479264 7232.973615 0 34767.56946 1882.954015 1617.499494 0 54917.97416 0 14198.8811 0.5519655438 6129.408191 270.7080023 0 13538.06132 8528.270826 119.5085839 11987.16781 0 1851.999573 11225.83493 297.6380277 31918.33878 0 4303.271604 1884.348766 4671.620407 26756.00243 7996.069019 26056.09897 0 58536.54943 2382.638655 1517.942856 33174.47639 7.055159806e-10 0 0 0 0 0 7424.363915 8604.582944 0 75112.45755 5474.659219 3.995520331e-16 0 0 29943.24843 6919.114782 34140.47863 5345.737939 10067.08769 26202.59418 32589.44823 0 9608.911433 29078.70457 10702.03559 7009.475563 6987.337904 27.32097413 18507.93619 56497.894 0 2179.251498 23395.32131 0 9436.890012 0 15123.37014 1288.238245 31233.99403 0 55279.58507 29615.98358 6310.181314 38762.63628 0 11155.22773 16750.52637 13589.95458 3183.116154 4809.203828 0 9756.983115 7160.320377 10078.80702 0 13046.95275 9887.48526 63370.82976 55814.09592 0 0 0 19597.22878 5378.570722 16859.65109 23607.90289 23066.1789 55051.52128 37334.64367 33578.87857 3494.057727 57417.28023 43522.05539 8019.346218 20721.19322 8314.494009 1674.932244 0 36.2062352 22843.95879 4384.283719 13316.6683 25881.21664 18072.62293 11226.75624 0 42735.3842 2605.774379 15862.21969 50832.61717 802.5820883 0 9535.042071 7555.378435 1954.99559 22254.4054 19752.62832 0 8475.819743 61585.47801 8697.115597 0 73800.28284 4285.370881 30910.91905 0 0 67190.07592 9688.969951 23671.27825 19000.23459 89477.56897 642.5009471 471.7298774 22441.49579 7109.418119 3.090395538e-07 0 11210.7237 0 46058.77702 84159.86117 8134.254776 0 6112.025784 4729.073657 50.35485794 151.8892675 0 65591.02098 0 7291.507682 6425.425691 25576.60001 8072.227227 28399.85258 59407.17176 2500.024845 0 1828.267785 5723.111677 0 27762.82463 28473.63804 4479.441484 0 14353.23906 1776.198817 8711.46587 187.6881437 15464.55111 14310.19015 39490.70875 39007.48529 22173.20089 22.95676802 0 12732.90924 45968.05421 25492.35858 1711.091108 43675.82701 0 13051.03585 0 1874.806061 0 1.395369276 10810.81765 0 0 40342.7973 40866.50662 45725.68632 5579.545304 2177.743152 0 22053.24524 11076.07348 12927.52407 0 0 0 0 14058.8949 12368.78324 7493.474707 0 18736.13969 486.0095344 3073.262779 0 15315.32056 0 6626.348257 1051.91532 0 0 0 9260.41308 0 0 637.6207532 0.2078713311 26733.2408 29958.5718 4532.963595 72.68318389 4764.977821 58296.41507 3129.855261 12406.48137 0 0 5851.751909 5695.873918 0 0 282.8713481 38293.938 14159.79259 59027.65311 0 0 0 0 0 9187.795052 202.7803684 5166.544222 11123.38492 2539.552293 2544.392897 14479.95523 0 0 939.0647106 0 21191.29436 9154.337801 284.3492005 3418.967509 0 46.38407616 17148.39232 8793.690926 2790.254187 0 11026.94123 98.38142633 0 1730.221393 69.63959483 0 3973.043518 19149.87583 0 37721.27821 4326.817023 4441.697766 18035.84717 12082.97748 +2236.628853 178.1203293 0.00470782901 66899.92211 0 111.354811 0 26547.04911 38660.3928 0 0 0 0 52197.54807 0 22463.38443 0 1344.82854 6930.21891 15668.16793 774.4870905 1110.486299 45033.86155 15508.88599 0 0 8468.206638 24332.10976 0 3930.423209 11134.55746 15560.65049 0 51309.03279 2983.156408 52.29434569 38121.84708 10466.05306 4479.920039 3930.921204 9626.519487 3451.759487 0 5844.725041 6827.007385 6890.866091 1954.962137 0 0 3304.523278 0 0 0 17021.04479 16165.42131 3047.491934 33.54360134 0 0 5565.76542 0 11138.26409 820.8011417 29038.70073 0 1587.870449 6623.608094 0 1681.238015 1760.677085 61963.32812 5087.20043 0 66611.03751 14988.09097 18610.8377 0 0 278.0208748 3196.427169 8716.866811 0 33944.89138 0 5904.073476 25092.71674 7311.516961 0 1935.342696 0.0003077691966 22521.0445 40774.05957 40601.49363 236.7811421 0 0 51.06772741 0 46015.4422 0 0 48845.58571 0 2096.251216 1689.711315 24173.97729 35817.33261 18693.9593 0 9701.729839 12740.82244 0 5880.381469 0 40047.78919 1468.110994 0 141.853351 3444.87069 50962.92956 6774.028787 5.581108427 13372.39132 16730.14014 10706.44936 0 3041.14353 0 6119.924657 18187.63773 17041.75057 861.78354 0 0 99253.658 53839.32279 50924.70946 0 0 2099.137774 32253.34049 25284.95594 40634.25535 12132.96998 0 5586.458676 60304.5634 11111.58577 18652.1365 0 2937.044143 7433.520728 14319.02213 105.03278 29867.7164 9897.343685 8859.849112 0 9363.497636 0 27139.94499 12339.83488 23517.99078 0 5460.435237 18111.25402 0 4257.8966 16772.47406 2219.67168 25165.094 32612.0984 0 48167.72539 0 0 30981.02213 2437.906492 26458.97692 28045.77815 0 0 1741.703665 8969.990737 0 0 61182.71808 12611.26848 54263.315 15371.80027 0 26173.12618 193.0116509 58873.64918 0.002499068567 6833.553634 5195.767335 0 5438.634295 448.565555 2129.030771 0 29509.19521 22399.7561 34930.38209 37197.56928 46365.44546 0 0 10827.81225 5926.261567 1.812332073 21782.52226 29687.1198 6360.732509 81444.66241 720.4841088 1395.790284 9841.236535 7437.898188 4002.985052 0 1489.972274 113.4543722 29848.51633 0 20548.51204 8192.033634 9222.050627 4657.071452 27688.18517 20379.92891 111.9173543 10726.47915 2134.544259 12.28496523 24937.99787 36299.99104 4958.323706 12827.31034 19067.70837 8642.877736 0 34650.56232 368.21102 0 5728.678226 5076.200069 4003.250848 0 16415.39783 35085.74927 106.6531737 0 6126.54814 1115.983619 6340.287459 0 403.5087046 27130.88461 8799.351828 3041.59462 24028.26949 136.6374942 0 3011.415062 0 0 5528.753622 0 837.4668122 28751.24492 0 20171.43596 36988.37272 10004.49588 1163.606364 5451.429959 34959.33068 0 0 1169.341934 2898.071222 10781.03494 5629.138204 0 0 500.8392941 22564.11932 1895.97786 11954.11369 3929.108212 103.0073885 40139.87787 15085.72976 212.1626314 0 0 515.9671476 0 +2604.71044 431.5689366 0 0 7640.669306 0 0 29239.1499 7025.308406 0.1524155179 30766.32778 11982.96524 38841.20648 9209.708966 8689.74071 2633.665454 169.0460189 32170.48132 0 0 2871.707536 0 0 0 25507.60502 0 0 10438.2749 26428.57875 0 0 4218.622898 0 9436.508757 4.956633489e-06 39348.70956 8672.641682 0.007911916943 0 0 50626.01507 0 0 0 0 15185.61733 3922.35671 4173.679955 3361.255831 3555.766356 0 79430.91599 9243.922236 75318.54006 23170.67113 0 12880.94381 8011.35001 11073.39983 63498.11912 0 0.01299683092 10161.73265 0 0 2323.798449 0 2500.849698 7.464748683 10671.09425 4726.06738 0 0 0 3014.974644 46683.79647 3280.186213 56426.65043 37603.61919 20437.60736 0 6384.302288 11904.63402 303.4273766 94417.17668 5289.988498 42689.25485 0 2618.072031 2574.670164 245.7802511 0 32140.61018 2608.097124 24404.25813 4874.844162 20059.25464 0 5140.645946 0 13214.57786 853.8867761 4136.07173 2962.024955 2139.792018 3517.038164 0 0 3897.835527 58512.69791 0 2135.621815 160.4694132 8537.416772 0 0 34067.60323 0 49052.46205 2067.468428 54069.4011 16326.39237 4669.278565 2153.948824 52730.30242 4349.603848 10650.85232 0 35083.15993 32362.63279 2886.150031 13342.23009 52765.91181 52465.11968 13227.33201 5909.174432 19244.0483 5801.183578 0 3931.253286 30755.99202 20760.83349 13222.5432 23.05765904 78843.3455 163.3566033 40317.56133 6051.736454 0 0 0 3609.050061 0 437.9855992 7822.23135 2810.899024 37703.63722 48735.42815 157.7423119 0 310.4245982 5628.799698 29479.27807 0 6094.678345 57537.72132 2748.757976 168.0666571 708.9211283 7688.03158 0 2556.151107 0 0 173.2662121 1518.177327 16731.13022 60647.28403 0.000507590894 10665.23228 52.11786118 0 25932.10422 18712.18149 4740.996211 19.5471759 11358.00028 3943.246548 0 5134.924483 2001.406485 0 0 37425.14051 752.1198903 2318.15709 19548.61826 37121.24898 9121.91029 0 0 0 33.44246134 0 16009.82209 14030.47915 91.89807648 1622.069312 38812.75712 4475.196718 13.39821996 0 48644.79269 29051.15726 133.5911829 11095.06305 0 0 20015.01147 0 2880.427258 0 0 27563.06519 0 21178.98706 0 0 4937.744152 4007.312488 1605.797596 219.7019653 0 0 777.0550266 17615.14197 0 54.73850051 0 0 0.08663887044 57.95100418 8000.900134 37523.95742 0 3032.441931 1754.283311 9029.365212 5792.226533 0 22730.56205 5149.92518 74147.0385 0 32811.9761 7936.553724 21416.19953 12436.98924 0 25685.09221 0 7256.184811 3937.470023 0 624.9081228 26654.13313 0 4965.229622 0 7000.186194 2441.236094 2759.776156 3818.616584 0 47841.76051 222.4830386 2329.159105 11618.51111 0 0 0 864.2079568 5.542305912e-06 0 0 10365.86645 29365.99703 48527.69367 19739.59033 0 0 1922.73833 38004.69581 0 0 10805.56975 11738.8456 0 0 22126.5859 +0 3002.224108 1471.577903 53276.40902 0 0 1600.456695 7431.96628 0 1896.739394 0 0 57215.29057 28655.8907 0 0 0 0 0 9322.084937 0 1224.645149 41134.71974 759.6715545 33071.20173 25565.4736 2642.319936 19998.94555 0 0 1590.973749 0 0 2138.563722 0 119.9080566 29130.07233 902.0390507 20560.78544 0 386.8715022 2683.987123 24836.75221 0 38181.14538 0 9882.884935 0 8888.518668 120.7468665 29431.5863 16.14194794 19771.28195 7155.13563 0 2860.118363 0 1583.967328 0 0 0 463.1767701 1054.421616 50283.45577 3424.710086 0 11388.45714 46101.55088 6133.814119 0 14576.67126 2300.538842 17196.02367 23863.36627 24.7756275 44209.91999 2966.441097 58835.5873 116.8526397 0 57665.22942 0 7198.764861 0 0 2195.440794 18320.0875 19076.44646 15.56651748 0 8301.171106 33222.91732 0 4000.34827 6368.594417 57216.28091 6342.945221 6827.473543 0 57958.15518 12498.48107 783.6508098 1643.397655 13883.93015 0 2894.537193 2460.571905 0 2789.563281 1.086107916e-08 4210.524108 0 189.0317509 3790.392674 0 2431.849096 60226.36509 0 0 0 2943.993801 55021.79136 4276.805045 169.7961405 2073.767022 0 55431.4659 3409.3666 21770.11502 19477.59295 0 0 2466.231988 40873.03312 0 34701.91677 5291.106416 126.9173729 21137.6565 2124.593256 2360.0973 53.43293764 30887.02631 2252.318029 3181.387319 3692.163751 10777.86897 12390.66448 24781.98491 36318.11504 0.002660530183 937.4410262 47.27968382 10222.17188 2613.966137 30471.61492 60285.62143 42783.7151 0 77405.04537 16474.38928 18562.5324 44659.15608 56408.68584 55630.65326 3912.76933 45096.37903 0 163.0167536 1825.011753 9213.399049 22827.61269 0 4502.128068 41940.34981 0 4723.852193 5729.906053 10531.73903 51.8082556 961.3669847 1097.91137 9919.620797 0 17731.40754 9478.691545 0 0 14574.44749 38636.03114 5487.043108 759.068309 26.43310022 30298.22783 103.4164089 25499.15077 68865.64377 8794.27691 51263.30298 31817.99966 0 0 49584.52059 0 71742.34871 0 43125.40088 0 49440.657 2075.160708 60305.52329 2287.989142 7530.451191 8443.463877 175.9364661 0 41151.14118 0 65411.89239 0 29106.91556 0 10848.77594 36118.09614 0 33771.0282 0 0 52485.58792 8350.377585 21037.51294 3977.473579 0 0 6820.842123 8446.905867 9.120554646 0 0 0 0 2284.513917 6436.378639 0 9690.644533 7444.991426 11888.36006 2630.310499 2737.990189 0 21753.63514 0 42792.4578 20272.3289 3164.077947 0 2749.665167 0 0 11127.47776 0 0 52.48336208 0 4821.497068 0 70.19600568 57751.67883 155.4672334 198.3859355 0 2188.258425 3266.587677 2.924149707 0 0 1562.366176 29590.87586 6428.452443 4077.059928 7487.98352 18374.31047 0 9504.801289 13956.27115 23054.77831 0 0 542.413329 53491.95006 0 8291.011943 0 0 0 0 10273.40281 0 0 9580.259134 +401.6184029 0 6281.459245 69769.22302 7326.865166 266.8295332 0 1822.771919 8479.089565 26785.1421 0 4704.764472 21686.34984 0 0 0 0 27687.56625 12144.49425 3109.494667 0 0 0 0 0 3090.926088 9075.033202 8.096517981 49746.43762 3566.133574 1951.833943 0 4022.310985 26195.1138 1761.536063 52018.45306 285.9851655 0 5079.222983 0 2490.916261 267.4970942 0 3284.512724 19101.89034 64305.35171 0.003273551502 4719.527765 3046.889107 31607.154 4257.57804 0 1742.153094 4490.743329 8882.259459 10962.48253 8089.859904 37528.01754 37511.49592 6079.604953 0 8506.667902 20211.44322 0 5378.006416 5295.686283 5616.549786 0 5419.6192 0 0 7898.311427 0 28594.02012 28903.34974 0 8145.826096 0 0 2663.896356 6989.087549 0 7867.766471 39647.83352 47962.81472 3692.194759 1706.846895 58.5247492 26849.66275 24960.28388 8108.698058 19453.5695 0 5445.535788 636.590603 1888.955506 119.1871713 42750.98659 2405.149874 16828.16311 18.56897675 1.641657996 1567.637209 32272.18323 45535.1187 18409.95435 14887.53815 9794.198629 31884.67162 6773.609969 33244.55744 5799.062329 17561.80999 57709.07013 0 15055.56217 4749.311998 52759.16107 2502.02014 0 50854.99197 0 25435.35764 16794.25589 20764.52946 9563.360582 3691.14646 1237.364258 6279.653678 0 1018.078851 1217.868588 6190.241455 0 0 68978.47585 239.3200032 15737.20734 0 2540.551736 2092.787495 32348.01181 0 1906.849775 63413.77141 1690.086551 45317.73397 0 4071.058039 7526.325325 8333.609778 3201.097851 0 3790.091184 66895.79183 34030.38146 4266.091589 27857.01839 14395.40208 0 8918.086066 1445.661823 9966.517361 69064.63764 10617.84572 0 20941.39147 4269.633197 79.58721706 11921.66598 15376.9479 0 6713.852184 2558.942961 8637.054175 21750.65808 6835.989617 25190.7815 38881.42189 0 26479.85654 91.96930755 13512.44834 308.9042449 2630.573029 26567.40472 21617.02109 17413.90873 0 8970.202694 2478.582358 5527.644537 6108.425743 0 2293.190022 12080.17552 0 0 13012.2504 36782.48231 24245.16414 0 0 7037.553473 0 3147.856974 6632.891546 2319.195663 790.1132304 0 2041.176035 5985.020129 1565.568948 2414.210652 0 13552.7787 0 1048.126775 318.8234764 392.4666364 820.5836557 0 20918.17494 5927.513352 17370.83153 2911.898361 6471.130051 0 0 11071.66695 2833.109849 0 0 13328.46295 0 0 0 0 0 16971.37057 45717.97324 19155.95241 9229.212801 2294.567721 0 192.6898088 1193.292127 17246.49801 196.8210089 1123.82863 32547.04078 0 8997.689257 0 7907.862852 0 3751.267082 0 1.776465389 13712.60882 6821.268295 0 0 2084.612738 138.1131387 1051.011357 4945.167601 0 0 1884.350084 1724.010817 4608.12858 0 0 0 7073.733591 4166.922936 0 302.3557603 23747.7827 81.75755137 0 0 0 0 0 0 3093.361701 0 8224.009908 2118.76346 1678.84814 0 20551.91908 29.35507816 0 3251.207672 17319.85862 6092.157665 0 +16549.86174 60.50179825 5704.446939 0 16966.43674 1421.283434 43097.34604 33029.98947 10605.21665 61.20844819 0 0 8019.453033 0 0.8979595412 1728.393327 0 20332.31325 0 0 50425.09694 42111.87308 2913.618148 5816.663467 0 3240.389326 1806.869334 8991.129853 18062.99848 7996.187041 0 0 0 1723.731498 3691.475969 16402.39666 0 0 0 3857.314056 0 0 5082.292825 13.84391448 33565.73423 12797.05032 15149.75569 2295.615191 470.5468683 8088.764163 15167.74097 16106.92886 8334.937082 127.6001613 1225.965943 11758.27694 0 0 3876.427529 28457.54612 27177.10164 0 21719.6198 7591.510245 0 0 24921.36166 0 23804.27969 1169.684411 26682.23332 0 0 9374.867893 0 0 18824.55008 0 1700.810485 1462.901474 33659.56517 614.549303 17.21902765 0 33607.79777 111.5019345 13742.3789 24421.85102 0 4127.579906 0 27734.2612 2913.414297 272.7227231 9560.287419 0 0 54150.76116 0 21194.96849 12152.13472 20368.58423 8031.159468 47.56121731 8724.561657 1012.909295 5530.830591 1827.23621 9.376038427e-11 3346.950354 2127.084852 0 4098.407877 6879.259817 16928.98754 23284.53577 38672.03785 2384.428045 0 0 2998.986925 907.150128 0 26015.93454 0 3069.130626 39548.54313 162.5908336 0 0 15920.54194 2019.769916 15375.22489 1099.090671 0 33052.75539 16240.46958 0 15700.48923 33168.49986 49.0325795 110.0324568 38372.85482 9106.571395 0 8111.164623 23.3290801 8516.66532 0 5500.597972 43695.90421 16720.46296 0 21106.28461 13391.10884 0 5658.534682 4922.289142 24146.19296 1815.400878 8791.996211 0 66646.07744 9295.29604 44934.54658 32676.0751 9894.54475 1012.610239 6301.139536 0 54477.87174 9175.547865 0 445.4131442 0 12936.45944 0 0 0 20838.49558 66309.50404 0 7734.768245 46884.56277 44514.97181 56.90712805 17540.35825 2661.730256 0 1847.439658 39.12233361 0 6853.560748 0 0 903.2197184 12388.14025 9146.911952 2.082117252e-05 34780.00759 28276.67906 0 35620.40883 10377.07542 25545.88589 42117.36141 35520.84527 35964.29865 3221.240914 0 4112.724223 6734.644297 0 22070.94769 20317.6218 0 75790.40978 28301.15096 0 3696.13744 3519.647212 3925.684749 3824.684107 38108.26547 2738.25917 0 158.4230449 35424.68693 2447.403665 1.24366453 36911.89871 3650.885504 4351.177953 0 0 1454.154567 4414.678663 470.0433277 0 0 22769.93605 0 0 0 1899.704726 46576.78593 1272.661889 7970.150584 7690.979669 9998.310792 0 3248.839602 47691.80481 55.65795241 1724.140872 2089.42614 40690.80444 0 24921.66304 11803.21735 0 640.0888441 4234.393831 25585.01457 0 13945.30225 0 0 1221.348955 1801.618341 33925.76475 235.2732356 0 0 34.29990657 0 62077.18366 0 0 37760.49809 0 0 21667.08663 0 4697.420094 0 0 0 0 1390.78656 0 83593.4836 3469.102922 4296.591702 66.73457976 0 844.6480864 79.8234602 4133.784141 0 +0 1017.564038 1688.262113 0 15098.36408 573.260126 20442.16289 14407.9565 15900.89084 0 223.9920768 0 1.987740454 58299.21815 19702.14625 0 0 0.02216926462 14613.73989 7532.435113 0.009933566539 47019.80325 0 0 1534.481997 0 512.4071961 38.43423339 0 0 0 0 963.0737965 2056.916812 105.5630113 0 0 0 86.46873641 6709.771458 45601.52466 47687.51879 185.849201 0 4908.600774 21208.76177 3405.009481 39902.53705 9471.657461 9334.143819 0 15982.95478 31502.98819 2373.167383 0 18420.98225 0 0 0 13322.93204 64610.88505 48006.9839 8747.981756 0 7278.293539 0 0 30909.90476 0 0 15453.91113 69925.62717 0 9759.549805 21007.90079 40806.86014 0 0 13114.84709 46.84859083 8791.885579 4484.445882 59243.76129 37838.5047 4209.429192 0 8477.552336 24904.99821 0 22898.40064 535.229503 0 383.6918633 0 6372.81026 6228.530605 31585.13476 4533.318461 9120.80656 1764.537916 5120.296467 25804.08053 14879.03597 0 5298.007539 3574.031314 0 27831.23578 13888.80403 1515.458152 4658.405275 25881.27292 66869.01117 10903.51163 6924.265089 1860.556342 1357.176605 2414.279732 74812.4668 0 536.0892955 52448.5415 1842.404442 2708.316788 23578.72023 78.17366052 26641.76954 140.5539053 0 6241.887751 0 331.5358663 45756.44975 34956.91985 1888.185793 13930.19751 4.832243424e-07 47615.32416 0 61899.61141 19119.12785 17249.74375 23902.49653 17783.63698 4769.245546 10113.71527 4491.622253 114.9983164 0.3693303202 43536.30328 2550.760052 17553.91359 16038.88159 0 14689.19058 0 11244.38564 297.4421755 6989.559885 32612.06045 902.7909198 4924.809817 0 18616.39065 0 2307.992325 0 5000.721945 23479.16359 0 0 159.9926191 11880.86265 44956.10032 0 0 57165.49706 32669.42635 0 14331.10988 24970.4222 8314.074072 5638.368825 0 49483.76615 11621.05569 15354.04743 39665.83432 0 0 36314.88345 22.31420723 0.003603326069 66544.933 42592.21047 21577.90397 16754.65171 16687.81663 1137.437852 0 1702.444295 634.3513202 5280.524877 11250.44183 2216.179634 1685.892267 0 0 8956.61345 0 7306.285533 10424.21802 0 28206.75651 0 10493.3946 5764.407525 35890.91406 88.92030297 0 0 0 6057.317699 4315.470295 0 0 22035.28499 2731.178799 0 0 55272.08199 5593.019033 0 3555.630374 38619.11 0 6757.703193 8885.283534 0 0 54865.22266 380.2050631 0 0 14156.32352 132.995846 0 1.28891566e-12 22917.50567 230.325163 8286.666745 48873.37767 2924.745028 0 22162.55417 0 0 87.96624845 0 21013.88223 76.83215486 0 11648.16328 0 0 4231.022093 8211.752445 81.49463614 2042.476706 0 16705.74552 32122.42185 2384.768311 26313.37155 3531.504798 0 31180.3509 0 0 0 28754.68825 0 65173.23273 0 3919.627697 0 15926.43975 35983.78338 0 1923.158016 0 0 0 33.75645703 6916.49705 33478.42683 40365.76688 4217.992775 8522.901074 150.9601108 +61987.92517 2972.00784 0 1895.392999 3581.482882 0 0 25534.34351 4220.48271 0 3557.596466 0 15392.33662 0 0 0 16623.77868 54108.47002 44486.09607 1360.131994 0 2116.814134 0 0 0 33652.89416 0 0 4609.207364 18232.88489 0 0 0 11529.89651 0 5511.568089 0 20153.60633 3116.923629 25655.13551 25121.5294 0 0 0 6986.042948 2584.756283 0 0 16229.6796 27759.02012 22894.47581 58991.93264 0 1906.793168 7702.309696 27490.00042 3441.490225 14530.4427 43675.60602 13916.55287 0 0 79072.7655 399.36309 0 29141.2199 76620.22256 130.4769923 57402.42022 0 0 0 0 45770.39497 62820.4898 8821.60027 2553.501158 0 0 30383.34574 0 16589.36766 144.1035447 0 0 50621.63285 0 44197.70678 23679.6182 18068.21059 2060.284265 58142.58554 7142.509605 58460.81434 48885.13402 8112.946389 0 7454.009271 0 33751.52579 22997.40629 8382.791151 452.4855336 20314.36997 30298.23991 17644.77195 4000.114993 0 0 2.903034036 12853.82591 19194.02156 39199.61517 5796.036404 32633.25938 0 4325.669648 14289.9944 633.5419456 0 0 0 7513.121459 11719.05872 3491.153842 3790.60324 49751.10638 2847.450824 0 0 13698.11458 0 0 0 2940.778141 1.073569525e-09 1288.283515 24078.02195 0 66045.88826 20168.7575 0 2890.817417 6082.161668 685.9955553 0 26766.68012 30224.80492 678.7703822 3648.203256 25182.33967 0 14952.70693 0 1365.732354 2257.295996 6229.868281 9856.724023 0 10295.45954 37254.14114 94.69603164 26338.61287 2433.012159 52147.21463 82401.68882 14929.30767 0 36804.54532 30143.41655 0 5320.099737 310.7518174 0.0641580336 0 1084.431774 0 13011.11114 23676.58285 0 3746.456726 23477.9694 3534.131323 17278.92889 0 0 17996.79332 25573.34694 1884.584066 0 10595.77373 55982.8158 9030.693284 0 0 0 0 917.0356088 169.4201833 0 2795.09094 11062.31947 18702.9177 49543.56659 0 40577.57751 14387.83457 0 7835.078979 0 0 648.8853918 0 10999.75014 674.0173778 30734.27247 6894.408268 11451.59215 51743.94752 11598.21505 66049.96741 6225.244981 4263.420662 27303.24008 4112.49888 0 0 25294.1856 18405.21445 9662.422194 43137.89865 43677.60584 138.1769147 2727.594548 20106.85585 3554.667484 14205.66853 960.873161 0 19291.00462 5184.992758 1859.622434 33673.7897 161.8854734 73605.64886 20764.63821 8233.910763 7351.492208 9538.579552 49805.16535 0 0 0 3021.888815 0 0 0 6150.834166 0 47592.72971 5818.356274 118.3082663 0.0002189465987 3660.493358 0 2.117864789e-12 9633.197101 452.2990707 3.901121226e-05 0 2814.229318 1769.812291 7385.188787 7309.205161 9.933878207e-05 1249.81678 0 10737.5825 0 519.2956573 0 0 0 0 3209.022263 0 6603.140257 0 0 0 2383.962666 268.4459872 184.4938348 41853.3208 4219.673392 12304.76484 0 0 0 0 +53861.62316 19217.41755 69997.75835 0 641.6703262 0 0 27813.91406 0 10348.72694 23373.69469 33311.02191 0 2600.213734 4800.150315 4952.43823 768.4017682 294.143782 4343.563708 40770.13889 247.6133891 23296.52119 16731.4761 0 30814.50209 773.4866782 0 7642.010749 0 0 0 0 6954.859195 248.764004 0 0 21506.11183 370.3374701 28214.73109 45792.30033 0 0 0 8955.640695 12.66727091 9680.151589 0 10711.12749 1494.619264 0 43225.43005 57.07999194 0 0 0 30302.7038 49054.56514 9805.683049 0 52997.1109 11354.25722 16407.68997 791.2581512 8088.484521 0 58.93876834 69617.02061 16369.35662 52768.88081 3002.481072 27445.57437 521.584139 62878.95072 0 8284.887069 0 58.1089142 0 0 0 4781.824335 33208.85648 9151.264707 35.39031971 0 192.9287683 17084.93655 75644.24272 0 0 41742.93263 13225.01293 8502.978601 52520.93601 28712.80041 0 15229.12248 0 29837.90104 0 31540.16936 15021.75243 0 821.040354 1728.792985 2840.348383 37433.76757 0 434.1129768 0 37915.18262 3861.334837 29019.75895 4144.765564 0.0008023501798 7943.370094 0 7.571395557 52949.20692 128.5645572 7155.183986 0 0 0 3587.00358 32063.46357 5482.879391 0 0 608.0378113 21043.65374 41646.22725 8015.124731 2269.841087 48416.09277 0 0 14630.09431 187.3824614 0 2970.475386 90451.90961 23490.9075 1356.846516 4562.513778 16155.40859 48360.63059 5634.00009 40986.04061 0 367.782177 2355.252422 9247.637976 0 0 0 27620.28543 10091.61803 0 0 0 18966.46757 87.00027556 58073.0533 6745.958946 0 0 0 21738.87453 11161.96991 2763.415838 1958.624035 28229.03638 2439.158371 0 36657.399 45406.33588 6209.423927 12595.86853 11702.49041 11341.72044 7714.86794 0 27378.46391 53662.7011 10249.82328 43734.56019 0 0 0 3747.957761 11487.40644 3083.470252 0 59255.35195 1708.199718 0 50903.94758 0 0 77280.23054 6732.791762 4017.644415 0 3539.956151 36656.18139 469.2322857 6736.560221 0 67448.51315 711.9126573 19092.48359 46.19982459 0 856.2009131 21039.04413 0 0 0 0 29265.45282 5645.720659 17634.32671 0 7037.735296 25.62997399 4939.596619 0 447.1742475 5386.309114 227.6958191 0 21725.1788 72.39664286 62043.42959 38279.63947 2214.541321 42344.38003 0 8951.192085 0 7295.153464 27689.92617 22777.81966 8116.643638 1696.132442 0 14911.98903 9600.026263 19040.45875 0 41.67489386 13621.95063 30845.54223 61817.01811 235.7368399 9416.970231 0 0 666.5685425 23768.48198 15531.91792 19647.19192 4547.670304 0 569.7910275 4148.247664 19837.2807 13982.81403 16546.27829 543.0931546 314.5540259 0 0 15984.65928 0 4543.369362 964.5997362 89.97072099 15357.43886 44877.38661 0 0 6016.324442 0 38099.37476 4317.640924 318.8422502 2467.862137 912.0144094 14517.45238 0 0 23499.73124 30658.70344 22226.198 9077.802565 0 1550.21801 0 +0 0 0 0 0 0 0 3320.706389 0 0 0 277.4097965 43531.08737 3783.963561 43.53924892 0 0 7440.815129 0 0 0 0 0 13929.7562 0 2296.223377 2715.248961 0 8634.95807 0 9477.042109 59025.83923 0 1513.878444 61454.776 0 50672.5349 0 6509.995874 0 13589.79813 1509.389521 41689.56016 0 14899.85133 0 41140.31666 0 31225.2644 53734.87539 5072.748242 7588.666193 0 0 66577.06488 715.4686156 0 0 0 0 9225.784352 267.0161495 3527.42389 2063.89717 0 52778.0998 59647.58476 4698.311068 224.7040933 29829.82328 839.7298514 14959.61653 0 0 4432.704246 39981.50552 0 0 0 2413.514331 1384.241785 69.30869509 17051.44812 62.50866991 641.2295132 13841.15219 0 10237.06485 3855.88582 231.0933923 6781.555824 0 0 0 4153.461395 9324.317953 0 0 0 192.8258886 50870.46474 12081.10853 0 0 26571.82931 17533.6045 0 4394.177945 13560.1026 18037.90942 9433.661825 0 0 0 0 8610.523195 45987.67552 0 11547.32116 0 8251.954105 0 19797.97218 0 0 0 1748.455852 15802.01609 0 8366.234763 2044.416258 1399.388359 0 138.0615791 0 2758.741426 7170.442535 0 67554.18075 19462.30989 0 7489.647818 59003.17701 4499.364499 531.2625718 0 31625.99338 12787.75356 0.0001279223896 8751.600275 1432.80959 0.04263333019 0 10589.82048 6871.041377 0 15847.45754 12314.15639 2653.491625 0 9286.810463 3871.834668 1941.087352 16850.49367 4470.811034 0 29345.04923 1133.263444 469.2465697 0 152.9492101 26000.23962 40351.43075 2406.70561 4401.908828 0 34294.7047 204.2739871 5978.069803 6347.468282 1514.11196 10641.89955 331.8436449 48841.43347 13373.88429 17200.6293 47373.90534 0 1263.023605 0 0 43868.90532 29466.03432 52571.86363 25037.24107 0 88731.35677 0 2733.367151 11207.67092 0 0 31290.09064 0 11602.6372 1.016628785e-07 3429.28582 20183.30016 1151.40996 214.8000177 0 16721.61023 0 0 0 30996.35342 0.002725344755 51988.03414 19961.68069 22753.54914 0 11619.46864 2311.978081 0 7422.732327 391.8572046 22814.09667 2231.391603 10884.94255 5992.795695 32482.90091 2375.977018 0 0 34566.98151 0 188.8200548 0 10183.57584 15834.71714 6227.757427 21447.18417 5184.46977 25366.03214 0 1604.783238 52183.46757 0 816.5622141 23.75653386 149.3725012 0 33195.463 54.82691652 13188.09434 33682.96838 0 34985.28379 5799.604862 0 3198.100904 0 56872.84747 4897.713113 1629.829075 5870.603364 10879.72175 0 273.6651078 2737.925852 41907.19776 38813.39531 7740.651083 0 29.30912621 15226.01266 52909.29956 0 0 455.6488465 1798.443887 0 4600.175286 628.286944 0 26717.309 743.3344227 5191.252689 7442.212932 0 212.5786761 0 25.55423049 0 0 3209.956085 0 0 0 0 +0 0 0 8933.357579 1414.950165 0 0 0 0 0 5626.624961 850.8643619 3921.229546 0 32.80149364 13943.58933 11905.13615 3297.375324 0 0 459.9174708 1342.071634 0.00819853972 1910.471447 5007.021631 5571.857157 0 0 0 9021.399906 21783.69039 0 0 0 0 10552.09322 0 2772.750634 0 24698.6297 904.0405593 0 8345.596638 0 1431.62941 0 0 26973.39908 2.767720502 24108.88643 0 47089.39332 47246.59323 0 0 0 0 61080.73764 7471.852357 24214.13394 7465.504493 0 6307.762168 3480.589441 3187.809498 0.6960313592 3978.001874 2225.1227 1289.268775 306.8342172 0 55532.82957 0 0 53327.89015 15756.77818 0 17327.86981 0 0 14835.61634 0 0 0 31208.62176 44237.52526 0 27128.35124 19.20815964 4790.689213 31316.84023 23295.64421 30.02340373 27350.28914 16739.50333 32421.6056 2593.564372 0 5643.119669 440.2514138 0 34970.70431 1626.509289 44467.37393 0 0 37204.16599 1628.051272 0 1237.740923 10061.06358 71256.50397 0 1078.185621 3311.216375 18599.16186 0 34086.77778 18305.85815 3669.211877 1565.293731 2947.175808 9132.103477 2532.376176 12635.34907 18790.15147 103.365397 838.1409265 13471.08428 0 41018.07012 81262.30108 3165.377767 0 10163.55392 15947.73539 20760.94075 0 0 30725.45412 15107.72561 0 0 2667.737022 20970.68568 24390.45642 0 114.8918011 628.6137899 0 18962.53178 2606.647597 0 51.44409443 7254.527232 2898.073773 0 0 0 7712.916956 2904.335569 335.8573372 24828.61987 187.7134009 4668.614813 8031.555225 1407.728041 4918.031863 23225.94746 11622.57182 2103.687776 0 4506.09308 0 322.5866657 30503.12453 21289.17745 1739.519108 14940.19788 12730.67554 15772.59541 63824.1662 7571.125849 21381.56382 42.56438181 6911.884351 0 48202.84606 12916.37454 0 565.1883631 0 41952.85822 0 115.2913571 0 16446.90131 114.3694314 0 39963.08923 0 0 583.8181596 43219.77095 25839.34229 0 27832.13767 0 0 0 21624.28778 29541.75058 0.007707459206 2210.42753 26321.16531 427.0837852 14029.60834 0 349.6585281 2226.796134 432.2389564 0.006135139121 1131.217139 0 24661.45124 29775.60567 0 9481.04827 2362.764457 0 38446.58714 0 0 3918.99542 34.9751253 0 8378.754413 671.0177549 0 1831.433693 0.0006168616775 0 5979.155784 3206.626735 0 30730.9929 0 11713.41329 30642.0067 0 0 13358.98378 7667.213422 1982.994411 29547.48689 7134.87161 11152.01493 0 1997.775318 0 6452.872519 0 2472.145761 0 6806.495192 0 71303.14315 0 67921.17394 0 327.1417898 0 14907.27137 0 2313.777564 188.0650649 4133.337776 108.3768931 19648.40024 65773.36928 0 0 21759.95761 0 0 0 0 55.6885201 9923.645647 0 11096.08574 3532.302367 0 0 0 2751.835954 24409.89414 1839.728862 42357.51849 0 +17538.67578 0 0 13973.51349 2530.607821 0 0 237.6358388 0 0 9090.964023 103.2015447 0 290.7408862 862.9230408 133.7281816 0 19699.36103 7234.299843 647.7095838 9565.892034 0 11692.24084 7201.725649 5780.744388 7353.504674 0 0 0 26742.44631 0 0 3064.896473 19213.56202 0 17609.03394 40973.50556 42849.82198 0 4045.836426 0 21559.02451 33657.51192 981.1283996 192.9185568 0 130.3772916 0 0 0 22914.98721 8220.779166 50344.98803 0 0 32870.23225 3214.475507 0 0 0 1734.733841 0 0 2351.375613 5354.737261 3.577868645e-05 0 77755.40424 0 0 3693.871538 5061.573676 20067.60344 56446.64024 52056.29756 0 46321.89307 15072.44797 5193.956375 4094.50346 0 0 35871.69751 32827.31267 516.0763191 0 0 1941.082027 46.30211954 6620.089637 26466.23882 0 660.4804708 0 7242.44977 26656.0624 14947.33611 0 0.3488838229 53.54596247 0 4988.271942 76.20714089 22536.93789 52454.01794 1833.287841 0 56627.07368 0 48649.55238 2804.804415 142.4801695 24912.07981 17513.31971 2533.294831 9300.244974 19769.14495 7325.617333 21575.4263 14599.0512 57499.70514 0 1275.247584 112.4756438 17512.67028 37689.5813 6013.967412 0 110.9198901 38.58411828 1146.669536 716.7051232 0 28798.79938 0 5664.826026 1640.291315 31820.35112 0 0 27452.47384 42932.25102 19879.32559 47966.52108 10081.06753 49396.58601 8279.59742 18342.19759 48804.08084 3690.161474 15734.89598 49554.81433 2794.823767 3541.931365 0 855.2682444 9920.362215 14215.61953 48018.95892 6548.893125 0 4600.591568 3940.651318 9619.410422 12904.47269 39347.72984 0 8353.198516 50485.00975 3461.002609 0 45709.42654 8850.927031 0 0 7936.803686 59255.98342 8545.068463 27198.74891 88449.78997 21518.83506 3021.166092 27854.80604 30968.60526 0 36.83808809 42335.73254 4605.440474 44331.21887 0 43320.47703 5657.854759 34390.06439 34356.18146 17181.79457 14284.40994 0 0 26565.33915 16861.62268 212.265118 68.65225795 26019.17579 0 0 0 28044.75269 50735.18642 60631.58707 46705.95206 18474.28337 523.9258685 3770.598876 16610.75453 24407.52917 0 0 0 7125.790527 0 16770.59164 0 1872.2068 26138.40698 157.7504171 111.7792839 6680.192998 68557.16797 37745.20024 0 0 0 6614.021877 22306.7429 224.138396 151.2585883 0 0 446.0809789 50377.53356 1763.480982 0 8358.794358 36140.15974 3703.608785 9412.509237 10716.6559 5425.658267 0 0 0 9555.179322 7455.922566 448.5143123 10984.19725 19875.5269 0 0 53.47163415 0 0 0 125.8727539 2891.611721 0 35321.18922 30036.4128 19694.34165 8720.646188 32102.78228 12311.53923 252.3588527 0 44028.05186 9879.798651 1479.496709 2692.076511 0 0 0 32395.03132 51213.55294 6809.966592 28925.08965 0 0 0 2829.034012 0 1762.523378 42.70976297 268.2927398 0 6585.149821 0 0 1934.433815 3282.611688 0 4451.202319 +0 34857.71892 68800.0517 65049.70297 34.85719281 0 1551.166977 0 138.7909856 11864.92222 304.6411113 2726.327213 20863.11698 0 0 0 55.42005378 0 29226.19347 6752.039451 32136.9486 0 5563.827178 0 4466.778564 0 0 0.3071328667 7562.037659 0 0 12403.26754 98.23786585 0 46553.45442 20768.86185 8519.303303 0 0 24705.61627 30323.97302 0 1118.197626 209.2083056 5186.070741 0 0 0 3762.09901 0 48620.0185 0 1280.688414 1684.435835 18190.94499 116.4197417 189.3392 182.936415 0 6666.287502 3314.595111 0 35704.30435 8411.775067 16091.74328 0 0 3613.806453 2462.527798 24589.07242 5027.889679 0 7714.955841 51869.50116 17135.86901 51057.18801 51.19582045 56449.16556 8559.405458 2546.807015 68.06417874 3917.665615 16144.31917 7725.047631 26847.33764 0 8666.76013 45743.43423 15594.40829 936.2268517 7980.884193 4332.899366 2.27522577 3287.778861 294.0520106 391.6048008 0 0 10780.26467 57.24889395 72959.1586 4524.848212 13953.7405 47426.43084 0 0 60920.74584 2837.683666 0 0 77701.23876 29913.22315 64133.30573 6542.03176 43304.06224 391.1130404 40954.1769 8820.538423 35640.79093 36692.88434 22638.92695 449.5897778 11235.3216 8056.916286 7176.086512 0 19206.41973 44485.17122 7521.12704 19011.76734 1744.034029 0 93198.49618 13026.98737 6589.481087 81716.03105 5942.160137 0 8810.51155 20739.31835 0 640.6248883 41068.99394 11784.79034 14387.46227 0 37710.7496 0 0 2297.636846 34569.569 89.24789499 72592.93038 3171.730383 0 82923.52839 620.9305146 0 0 0 23239.53772 13938.82002 3283.281328 4866.236187 18804.84168 24466.69412 4605.037989 0 5250.738547 7582.685903 12014.38986 76496.1922 3405.476169 31874.29343 18808.17592 50.62791862 65.87508128 14187.59701 0 2311.681904 29000.16348 29960.35855 40441.60147 0 27271.50544 17386.71573 868.4219242 63.31707819 0 0 6278.538497 5346.637982 17084.30595 5540.033716 0 3199.246901 57088.91897 3610.976446 16234.3305 309.0267379 282.6188232 9.632831307e-10 37814.24227 77855.90772 7014.894979 39935.44943 6943.564262 0 0 0 7759.978334 0 0 17902.36007 1643.322787 3463.151236 0 1770.236957 4195.964348 6482.778534 43108.73933 38984.36389 57561.8623 2645.015588 21332.93011 34326.17865 43303.66932 0 342.2114307 44.23359492 11054.49404 42247.16181 0 17061.18803 6972.190136 0 0 0 0 17837.53316 43424.93372 68898.07118 20388.63265 2075.129982 0 0 0 91.10632117 7920.54899 0 6614.626796 0 2465.687166 3199.212476 0 0 29496.08933 0 0 1598.464417 0 139.3249753 53571.36557 0 10415.41195 0 0 9446.167572 44.69580836 5378.977645 0 110.6286285 2179.583437 0 0 0 925.1076578 0 0 109.4881843 34413.14326 0 0 1295.394865 0 3671.414655 7169.816495 37056.32352 0 0 0 0 0 0 8499.825863 0 0 93.30972346 0 6240.453722 +0 0 1994.496118 0 6.458334748 0 0 852.8861462 0 78376.5577 36245.9146 0 0 63368.4332 311.2666746 13582.18124 0 0 0 4295.624717 0 0 0 5038.240159 0 0 0 15747.53675 0 0 9792.261152 26812.47188 2754.035552 35419.4533 0 8658.124835 239.5840496 74005.58638 0 2957.23879 5565.405828 54862.39386 40391.09732 17986.83814 0 70.65351043 14.13712565 0 992.3413919 0 107.6270481 7997.510249 17033.41909 7435.109267 1868.642362 9178.550611 17102.51953 6379.421063 0 0 0 0 155.644014 18101.18811 11700.53661 50143.37471 42.23234969 146.2652287 10.96427669 545.7687259 1084.575061 40210.05946 6812.891609 0 5806.791683 5868.017698 78.36333011 6704.284805 72342.40469 16272.30333 47307.07778 137.5017065 5207.922414 28981.20815 4634.471648 0 36481.37989 73731.20174 35943.7354 55083.87056 0 12477.71748 49894.58265 44067.15251 34154.51171 15830.21436 23651.1443 8782.554822 52502.86673 28763.94774 32896.7869 5818.829221 46578.88214 0 0 0 0 885.9112042 1351.937885 2045.95408 8935.476816 33171.65107 11564.42044 0 0 1846.643992 0 40595.46158 22036.05639 209.8850221 15750.01661 37701.55575 7573.795156 0 1752.535729 29407.35184 0 1241.730916 35921.98884 23821.0342 1743.228793 24496.67227 0 4992.258475 4688.45853 10021.33129 0 51015.0087 4120.608284 289.3691803 0 0 30229.00554 3654.961606 67122.28519 48939.2454 19378.64653 79407.30755 10845.02523 0 0 949.5814226 85226.08152 12735.22235 19091.53186 73019.80412 5245.629198 0 45543.76178 4087.151704 24848.84976 0.002784715912 44414.40726 955.3524383 2406.467786 10408.46293 2514.752025 11003.18028 10360.7268 4810.955957 73312.25129 20505.72988 214.2463514 23972.42073 0 22531.36799 12854.6619 23731.09801 13869.19882 12582.45631 45546.4303 165.6515727 1517.707863 0 0 21885.68994 0 76160.49629 25641.53339 0 5151.794472 15765.52534 28789.09054 33104.08338 3873.645837 228.317185 26748.61237 30626.57572 57890.43015 105.8642078 8420.119647 6433.448544 2422.836707 2802.423137 10492.94432 6832.66515 9465.64203 16013.84295 0 191.7451189 651.9244454 46909.04817 2.249610153e-14 0 54143.52531 187.2024889 3.318744299e-11 20863.21428 8233.69793 0 1774.400711 3132.324369 0 0 2300.527452 2850.102487 6437.916777 0 11974.14837 90.30553264 25655.27042 399.4120158 0 29909.6737 0 0 2275.342045 61.03465829 0 4050.346642 0 0 5921.491602 8.054606823 0 4020.035955 0 0 0 15144.50194 0 327.5043988 2752.203289 30661.17301 220.6123221 0 2616.02973 0 0 8314.823613 0 23604.20586 30180.18952 0 1072.313395 0 8145.948731 14736.94554 0 1107.489732 14008.73489 0 17698.06109 4873.656162 0 163.0789344 15019.80949 0 2504.017713 36337.11761 14611.58616 3533.519709 0 51105.99137 0 50113.43112 174.8708906 8258.743171 0.05278521682 15602.99774 0 0 0 28271.96396 0 40318.16624 130.214566 0 0 18008.17327 +8858.421276 0 14139.70547 27085.81888 0 0 0 0 0 1.421674641e-06 0 0.1839066796 0 0 64695.03949 2392.114835 0 47101.51447 0 0 0 19742.53372 0 403.8447251 0 11099.71304 227.1319537 42381.75103 0 54.57970193 172.4963511 31511.89718 187.1409878 0 4508.287942 0 112.7247012 10328.24571 5266.071577 0 3322.716996 30182.08254 14147.6194 255.0832808 0 0 0 11093.18686 0 0 40247.20985 4303.07024 3643.304399 4.836319881e-11 22246.98904 0 7722.95197 52.81091554 0 40055.1747 0 1476.854749 0 7504.247801 1097.89111 24478.70187 3346.81306 0 78141.12331 0 213.3271915 0 5248.204554 212.4056125 7421.311056 0 17730.27811 12768.81556 43423.64771 10093.20601 4265.053876 219.816652 32796.47677 4.547793154 25077.96112 24269.49576 26893.60773 1175.909879 42198.69879 5214.936359 134.652912 13597.90006 5579.577372 3132.963133 0 237.5596477 13167.73247 0 9665.184518 35.53702273 211.449895 9414.528277 2489.449529 0 17658.82057 11098.54554 16961.63616 0 0 0 23749.46004 0 23816.03767 23278.0519 6444.713444 7567.617645 110.0102409 6225.44747 0 2975.936006 0 0 11667.51816 4429.43397 9021.530518 22318.01107 9321.520774 19475.74316 3373.487398 36479.21484 5797.704717 0 0 0 0 41693.68635 0 44280.79391 16869.44499 1620.965709 57917.66192 2722.342477 44453.43226 5.239525726e-12 0 713.6266936 5169.222334 6.424310346e-05 4354.81685 3546.45485 0 0 3.088498687 14471.87352 9206.925374 76660.04258 42945.24905 0 57060.70161 10141.77781 43385.42561 21138.92685 0 2226.796294 0 172.7384627 30708.69208 44992.22406 6186.314749 0.06591260318 26256.37839 15593.73816 7577.433014 0 9330.336202 23061.53619 400.2409345 6052.571761 8709.870817 8319.02907 1729.434844 27061.33789 7051.508057 0 0 0 965.6164453 3915.364309 24418.32792 2573.939857 1889.410061 38994.79354 8346.38269 21921.31649 3277.538893 0 4530.896923 4518.256539 0 12469.18005 35187.18029 5510.032143 4171.557864 0 2326.895209 0 7240.210709 1869.76717 3226.836762 53509.87177 15669.22507 3428.957286 0 0 571.9895057 6003.250262 4194.07344 0 6258.494176 47704.91812 2109.676159 0 12181.20349 0 22183.09962 0 0 0 301.1882528 1905.728988 0 6782.284526 0 185.2771119 47782.65069 38718.13368 109.1321188 1869.967694 8912.693469 0 21582.37764 4518.812839 7649.982059 0 0 47993.44023 0.01396904541 2540.543271 24853.31552 4512.805059 20514.4808 62903.01303 0 0 0 0 0 6074.294187 5829.067907 0 0 24776.06108 0 0 0 4404.251548 3175.098418 64.22979343 9891.874406 283.596641 0 2253.168009 298.0537742 0 16.43002671 0 7399.595433 22122.17209 0 45213.36538 4381.457028 2380.796814 0 24.6822766 8681.760573 1790.35127 11474.56833 0 523.7459014 0 0 1143.717695 18.49203774 4530.181002 3392.685425 8510.370796 0 44009.33601 0 0 +0 8728.330418 0 2816.015691 3427.139477 2477.766381 0 0 6488.310814 37.66904422 7263.879016 21639.24496 0 17153.08934 0 4398.531078 0 0 7486.160195 4218.797601 6991.790344 4730.20232 20584.90546 0 11366.92149 5358.698625 0 0 313.4562011 3258.501295 0 2700.701659 17.8476222 0 340.8734434 3521.422663 0 16151.65822 5830.599622 15512.09697 0 0 0 2356.920879 0 14637.31334 20023.20914 953.401819 0 2209.945965 48989.5274 16362.78078 1868.218951 16333.43505 20046.81033 0 136.3174477 27937.27879 0 0 17287.23588 0 0 2227.082209 6921.247902 8008.08564 0 43241.82656 9191.867625 0 27394.94109 181.7520275 0 0 0 53342.85872 0 0 58673.52686 4169.193592 24948.56325 14633.10007 5951.009568 0 0 41133.2776 0 7741.460925 2825.500289 4088.473033 27860.24295 2547.010578 21787.19245 64028.40496 3267.695566 0 0 26388.10001 11991.20176 0 22819.83796 0 6812.265346 39.97791 119.4020663 124.4201286 35465.10127 0 1739.939592 0 990.9882474 7029.817982 2428.139758 10966.54626 27173.1384 86633.80752 4590.139225 54385.79594 0 151.6650558 22220.84538 2136.721432 6658.963246 9129.198757 51.52662993 5642.303633 64.53387212 20211.62029 6.612772296 0 7545.057835 2922.628274 4343.53211 52869.31268 24189.48554 5761.223461 51125.79752 0 40565.71262 176.3186661 995.9149204 0 2902.837775 0 4289.473819 552.9757215 5037.919249 22928.98224 0 10737.77924 0 466.4637299 0 24841.2305 11610.34345 8003.55616 32329.90308 1675.128492 26411.40165 1.901422347e-13 9776.053993 0 32270.50614 1252.144241 19732.29537 196.8049513 0 3569.973029 14266.04188 10692.02861 1651.062525 0 0 4592.047379 118.3923172 181.9267825 25983.56403 4350.401496 9610.322334 17505.31967 6089.105816 35333.16716 9931.065808 5381.572264 34035.11427 4336.546631 43312.65323 11675.89719 1561.213153 41213.5493 2865.125072 5644.196223 11823.09754 6600.800759 711.7266601 17750.22002 0 35161.70814 0 4047.12595 0 18296.73803 38473.58173 4082.133767 7364.059441 4727.026781 1.157160905e-07 1189.155683 0 1527.884093 259.8273282 1816.595366 3577.943207 4096.774663 16827.40321 0 0 24764.96976 0 4501.569884 0 2198.598419 4344.403286 7946.055841 3182.187518 4373.424995 104.4096335 1510.63862 0 0 33594.21954 11149.18728 23117.47002 2073.691007 0 27634.4406 0 7986.166517 0 4988.460304 11110.79284 91.02410532 12000.81066 58.58412163 21684.31939 0 8188.335638 7472.642124 24440.16101 49034.51458 2973.371368 4022.363361 0 42567.35611 42001.53415 1817.232308 3522.971509 5773.593854 3673.535589 11585.64683 0 0 5573.682128 0 1121.113128 0 0 0 263.7956088 48321.92612 0 3967.851184 190.5154848 0 7100.632575 0 4754.954859 2827.267253 0 0 31.87827209 38688.71975 1824.822889 53381.41502 2113.849372 2.925538342e-08 179.5201632 4274.831588 0 7767.320674 0 0 1410.038118 6910.768968 0 0 0 23626.46745 2812.024726 7649.158541 +7875.86242 16616.48858 0 8299.480862 0 0 6013.766189 0 132.2458144 0 2535.703069 0 0 0 2612.387438 10748.85136 7727.53725 7095.215407 0 4016.578188 2.934989923 1999.139152 26385.82905 47076.76881 6968.963262 0 36904.89755 0 28794.70229 13051.76378 0 4575.381669 0 72.20385998 0 34949.98243 0 19092.27026 17966.58606 1989.248965 0 0 39515.32206 0 1629.180381 4394.393699 18812.92327 0 0 32893.99729 18081.70874 48150.1653 9.373488736e-07 1632.810258 0 0 0 27246.25299 0 13152.19369 39591.8169 2601.493135 0 0 30183.43209 2.466512512 6512.945128 0 55055.47818 2318.821118 0 39361.0714 57005.10318 4860.114906 35892.44894 0 6393.745884 0 40432.52459 14524.01588 13362.94725 14373.4428 0 49150.31951 23890.40093 16452.64024 1480.755887 150.6575758 18081.00545 0 595.1336284 0 0 0 0 25696.24895 0 2369.315343 4700.889446 11475.35387 184.9479412 24.85584381 0 5613.09821 138.6546912 0 4376.706156 0 1242.175002 9698.627474 2944.552552 1075.226361 29961.10376 8811.790909 4822.67473 6643.961953 70166.48621 37295.62096 0 351.4888225 0 78.00422714 21859.54612 13785.24917 0 29182.5027 0 1.273370266 0 2.534819012e-05 24443.31473 8551.187343 51415.74923 4756.378548 44089.62855 19.34967153 26462.99929 0 2775.291709 4296.40276 0 759.7578223 11396.10473 0 19945.40777 19566.20593 42.96191837 0 0 17075.07577 52729.16734 0 0 770.9064732 0 116.4058426 27912.27621 4584.994433 1037.580092 2384.585 5610.828698 468.67677 0 9456.456615 2041.701203 0 55479.37161 3990.383683 1233.570576 19848.11636 2370.638145 5481.410508 19089.93597 0 0 16317.56555 21778.80062 20716.77212 853.5080442 4440.143055 0 0 3126.558069 11352.3791 0 32829.18426 0 0 27266.54719 0 1000.219443 0 28611.58441 3390.702153 14564.88838 0 88325.54764 0 2540.014763 62792.94538 24791.9021 4688.218579 728.9876307 1891.751501 31806.14468 14429.59188 0 274.3903271 0 0 38256.52559 0 8246.822923 2351.144861 10353.93678 8.675491282 0 3449.569749 24894.79149 4254.01533 23780.62525 2372.401392 109.1779276 1080.434555 33429.99967 13321.03623 27140.09657 39699.3004 1049.35484 0 8195.379042 9274.008285 0 354.3333161 21323.91123 3090.223731 0 2276.374566 4304.428747 35663.15024 46428.40044 485.1123596 59259.23717 52127.1113 0 0 29186.9559 0 11997.35066 0 149.4922631 34007.25792 0 8554.993668 44624.44632 39426.17871 44164.34858 3359.824457 19437.87608 2475.684959 19722.06741 7032.148792 7052.745799 2326.291609 306.4152133 61.51701234 0 53.78921185 0 0 361.0911457 0 765.7510563 9826.809433 7966.745628 0 4144.289975 243.4739817 0 0 13423.83026 7269.220525 11750.38789 61870.88065 3072.413452 1680.86988 0 505.6255009 661.7440648 11494.51331 10602.06514 2400.224566 0 2212.901241 0 3226.934355 0 0 8051.653428 17753.81331 +1058.829894 7751.164721 3680.346612 0 755.9252434 5654.862077 0 0 4632.982514 13227.20167 0 0 14599.49661 59.05476465 0 26685.87271 0 514.0294694 6765.02432 0 0 4527.837214 0 0 5012.373883 0 5473.401928 627.8026659 12231.99219 59638.6441 43.46364225 0 1949.694749 236.4733719 3304.381099 0.0001837479804 154.405192 3932.711043 989.3857929 0 19629.799 33667.59714 4788.410406 0 40400.85323 141.1149659 12089.51644 8837.695135 8849.229795 0 546.3801086 0 4958.108585 0 19.90431114 2836.007615 10341.55627 4231.532982 237.0954564 40097.00375 21544.28372 0 2716.35814 0 0 14675.33322 20843.78308 15556.47746 0 42595.91172 19605.96008 1769.451011 77.48286538 0 2261.850415 35309.50572 0 12156.2015 0 33.24137038 29246.77343 0 194.4095123 22740.34086 650.1702434 0 18243.06067 43443.1784 64545.52115 0 39029.94773 2156.548316 196.9774181 2393.828962 3558.155074 70.5431603 0 16839.14611 1643.914342 805.3262557 70247.41473 16141.54365 2105.738134 53576.46696 1710.162104 24550.48133 16587.44374 26900.12433 823.3225362 0 26971.80617 0 3746.18044 26568.96298 6444.704507 5723.269668 0 18816.00809 48208.00331 61182.22075 0 19667.30953 9529.139391 0 10005.28125 61978.85093 0 0 16579.05663 11345.01814 0 2182.938038 0 21743.8928 2326.689106 9601.471278 46962.60101 52232.29478 1274.601524 12228.67248 0 0 40.22705383 17117.74882 23981.7387 0 76990.11419 23853.60662 265.0585369 12134.18929 0 1779.695492 0 5028.378188 0 12681.13744 1516.065528 1008.607235 0 45467.98643 60173.03541 18419.40485 9410.069951 43.58892917 0 2009.383381 0 11631.70248 59041.74419 19666.19296 5664.652047 175.688459 4912.989136 0 0 20507.86165 27231.66382 2724.75628 18006.32525 0 5013.383732 17255.47865 0 7186.331288 58367.25334 4490.875962 35164.58937 5588.206796 0 0 0 3974.567783 35302.47333 51.63222538 0 4330.741222 4861.498872 5670.89682 0 16353.73413 3438.423622 0 601.0071032 24314.27928 9281.854023 0 0 22196.08231 0 370.3986905 2066.849942 24957.9762 3196.002875 16040.56236 0 1306.596935 10890.62213 38.46067081 6070.914637 13853.0922 289.1128956 43475.04861 7762.969465 0 47392.93768 0 18233.21943 8763.584712 4029.755646 9919.079372 0 34617.03646 19655.06691 1791.030945 2.853802956 14296.5701 10905.58815 0 0 0 0 14355.77557 39945.55165 0 0 37137.92733 14652.78331 0 27292.40242 30400.97587 0 25137.20925 23690.94143 11388.37689 7133.058691 27810.45183 11415.02081 7.857472637 2683.281657 2510.955567 0 0 2389.971703 0 0 2.240309465e-08 24346.67524 0 0.001106074401 8184.681655 0 498.1951961 5020.849687 0 4105.846711 2075.553026 0 63995.11798 2985.988896 0 47793.52869 0 38638.68116 654.3227674 711.5388109 691.0322215 1119.289079 0 0 59.20291197 3679.425381 65680.31917 2201.352932 5047.621122 7347.488119 3682.738456 1959.746399 28.47860818 0 0 +9901.001223 912.4963799 7169.515563 2654.477151 0 39736.6197 0 0 0 34196.50769 0 13268.37019 67146.83061 0 0 17428.92574 2995.287335 120.5665796 6816.865663 0 0 0 0 41.16730202 90.74845057 0 410.8868842 7652.147222 0 13523.09889 57016.16107 25999.10547 6740.515658 0 14944.49469 0 20679.2048 20862.56785 0 0 11333.71149 0 0 32329.11 22639.64562 0 1848.876534 50170.78131 2681.705917 13877.3407 0 3233.292264 3499.182258 0 0 2376.752085 5169.616202 34714.70313 4061.572794 10293.41309 16504.45944 0 7166.842273 6605.973432 0 5788.152191 0 67647.16781 2147.979804 1016.764337 6961.439794 0 3649.513614 608.9865973 48.94149095 16985.63187 18919.78692 0 0 29203.42799 33775.11501 7142.206082 0 0 60.1103332 0 4379.058792 99.20860021 0 0 1907.855722 48663.49711 0 0 74380.35137 0 66.34120359 2647.194746 2674.566083 5676.61059 14781.74437 42061.55954 422.0165533 3006.615905 8638.868766 2828.673317 0 9625.576826 0 52721.03031 3541.921047 17209.46516 0 0 69236.41103 0 25123.00097 0 3140.791972 0 23552.30465 1803.463193 1226.732932 4200.985378 27277.78936 0 0 5316.218385 50304.42265 0 7732.301952 447.1972678 21225.83383 400.696655 46950.13562 16366.02411 0 40276.22715 575.4008727 59595.85648 376.9921392 48.03618224 0 42547.68057 16633.74747 22.59313486 23758.60645 2353.278594 676.917729 1624.465887 0 40.10621226 91.73047606 1901.95775 35341.70238 309.7253546 0 0 11760.7232 0 55977.15564 42.65814072 0 137.3702755 6692.730854 0 11377.15692 0 0 5474.713698 0 2267.05735 31378.14978 0 22262.85494 37917.08236 19071.37519 0 0 6059.3549 35493.5144 0 2170.906357 0 0 0 1915.997654 220.9508785 2181.229692 18640.69356 24173.79087 0 4014.911216 6716.350683 27293.56598 30958.79513 0 3.439065883 38236.26265 13711.89279 8126.779653 0 6947.636739 13992.76145 28898.8987 44625.02148 14321.24871 5301.254193 30634.2685 0 3322.10482 10311.77835 0 12462.78406 0 0 25059.82765 454.4170668 39162.53499 0 10742.9057 0 32272.90357 6935.280603 0 0 64224.19128 9849.840509 0 7492.689326 39.95201393 2507.449141 45101.14383 0 5914.505669 13854.36742 55.11732685 52245.56931 0 1201.603315 0 3172.4492 0 0 54.98835322 1453.867271 7117.240337 0 289.8203069 17168.14673 5658.37218 36314.54789 19762.53235 223.1215671 0 2971.880154 0 5518.066678 0.0003255014598 49953.33846 3794.784755 0 0 0 30581.85457 73633.0843 28793.62074 1866.509613 4382.080727 0 809.6959381 0 0 0 2808.888596 3153.771743 0 0 653.4770335 0 0 0 0 2754.497162 0 0 0 133.9025617 0 0 0 4123.218545 36435.47016 0 369.4398459 86.08072804 43367.4723 2232.734544 0 0 +0 4864.485568 0 0 0 3766.701356 13921.36193 0 19.92012444 47760.54027 0 24222.46761 0 2028.830374 3473.493611 0 0 0 0 0 11601.90071 1365.248152 55075.09295 0 3370.129701 9431.384482 250.8098257 3436.015652 37972.94174 1959.00104 0 0 395.9281433 4397.940125 4051.866575 20699.66545 2898.377643 0 0 0 10085.26082 104.2125284 1036.268076 2424.301003 1832.241685 48166.841 4120.592645 0 14110.92087 11480.56048 3194.000205 1916.458221 0 63188.16336 17728.46109 0 23014.73573 7.023846889 20328.61111 0 55827.43083 2.457388831e-06 0 37767.34142 0 25551.08929 0 25.37237049 20455.91697 8468.116717 0 1723.566524 23116.82584 20845.46947 5910.521993 34228.60134 26789.87538 1.515233952 464.1879105 2407.430206 44675.45725 4130.345495 42152.85714 62132.87423 17967.32954 0 20076.28501 132.6746793 0 3584.060341 40372.42492 0 2130.67229 52713.44372 9289.32457 0 3732.265331 0 15552.90337 8221.771347 58050.86306 0 0 79357.65982 20728.14242 66769.26276 0 52.6669384 63.08971422 0 26172.42728 60227.4066 2199.451688 3658.147862 0 27811.56269 2363.706235 4986.872038 3897.956863 7630.018218 32000.96681 45403.41678 4538.457808 6230.838009 4038.120513 40633.28777 23350.64832 15249.40171 21306.07919 0 5545.801834 149.6286086 0 2154.483995 0 69467.1888 0 6553.108664 1073.088784 4452.77662 12868.77082 83.67012307 28536.43573 108.4752792 0 507.1682461 682.177356 0 52.02186769 15820.74925 0 0.0002412012642 12131.04445 0 0 1.338037805 0 645.361115 0 0 10139.58281 26123.51673 17095.37744 0 28573.13367 0 7274.772186 1091.132328 14189.64911 67351.57449 0.0001409639428 5721.489364 5816.51556 17471.27506 0 1058.16931 59.71446097 9137.171816 24973.1774 22622.60913 5767.020231 6255.072912 21499.49496 7738.793704 42948.07963 0 5568.244388 11.85809691 0 0.0004700343236 416.7650451 0 16337.39159 13630.63561 18048.84144 175.176214 343.7478052 0 8188.426087 937.1613117 0 18496.77634 0 66445.56689 2215.722323 6865.796093 28249.05197 0 4812.786849 28535.82857 54314.98399 0 218.7413402 30181.84518 20954.80795 36500.98193 8322.742944 6973.480906 4539.443655 0 0 323.7992562 20764.77726 2407.184285 1331.49679 14431.81834 0 23100.34335 0 4000.024271 0 39540.66573 8199.075695 18082.1631 2012.34089 26493.99086 547.8474849 0 0 5189.869358 0 27662.69316 17086.9044 17342.09411 0 0 147.1054529 0 0 88.73909837 0 21955.12165 0 173.0662122 0 4973.68252 0 4350.021796 9121.227182 3297.175135 6638.997296 0 43.29267798 0 4614.629725 0 11148.82538 24895.73243 16005.60747 10102.20846 408.8301552 45964.55199 17834.6664 12094.2302 5702.347204 2749.81377 46766.83644 0 55225.80395 23133.99352 0 0 1548.561207 10268.53134 0 0 4025.994491 6029.579848 0 6909.337021 1853.334682 0 4619.884296 0 60474.28107 19219.25635 2857.209273 536.8444499 0 0 +0 23.99499162 0 0 0 5971.405113 13066.42432 0 6297.879667 0 0 35219.58942 16009.76747 2885.869686 1512.067478 2494.680802 234.8139753 24181.67579 0 0 0 0 31342.77076 82.81481044 0 3172.049994 0 6513.176675 51545.82774 0 57390.97987 1857.97903 84576.16975 2.94879779 0 1225.702962 0 60.1700058 14125.5304 3107.142338 105.8667472 0 0 0 0 0 3571.94252 6292.326858 0 2716.580113 0 14103.1712 5201.234086 273.1751739 3971.121943 1966.952211 4557.188121 78.30606044 0 0 0 25.30643039 0 27676.67655 0 52.68577759 27.38863146 0 0 25164.89339 0.8240440304 37729.28549 0 7423.201455 1272.251794 48624.91583 26793.14245 1.682047227 0 418.0404559 0 1098.788804 0 57067.57414 0 179.0280913 42906.55766 0 7206.316649 5909.068563 48139.56653 0 0 0 22673.92083 14043.45199 0 4477.88595 0 5609.824612 5927.12647 9224.964199 7.459014746e-13 14766.25268 0 4527.786193 0 0.003556753957 29895.96755 70657.95649 0 26312.1866 28180.62042 61.77677676 1208.381474 5078.645387 15742.58908 31924.36005 45718.94291 0 1961.242633 20022.15808 472.8658525 51599.30893 0 195.6106347 4810.879151 0 0 6272.261058 68079.56374 184.3597637 3404.327891 3094.805368 0 483.6503466 60.9522158 45793.0027 7073.836878 40294.27349 8188.347217 24557.056 0 24070.62535 91.29571607 27595.968 0 0 2420.780283 0 9873.339565 0 0 0 29699.9376 393.3029968 43957.84019 0 6690.413748 0 0 36297.98346 0 0 23831.28297 23.73102871 3404.123875 33085.92754 21267.96951 0 4455.46327 16268.59548 17224.73122 492.6869923 7732.056866 20939.13169 1829.148896 0 0 0 32530.47049 6258.173781 2450.667587 1755.731953 0 59570.43222 8470.380322 23987.20251 0 39424.50571 1842.066536 7660.601351 4807.587838 37836.95569 3143.581931 7455.189691 15104.08004 5709.703585 5269.782328 3896.599836 35594.55928 0 0 3112.637305 27567.12636 37534.64421 21110.34422 12825.09982 3921.207272 3722.838313 11565.35738 0 21767.43896 31026.54539 1589.414635 2963.495967 0 0 713.344771 12997.73698 17317.96926 17063.57119 1333.89439 38614.68182 6238.874639 4598.559563 11583.23584 0 58608.7719 27755.6477 0 0 0 7051.078941 0 3126.290841 15479.37241 515.4919847 1435.835646 18756.25185 0 15509.52731 5026.999031 0 6493.275793 0 17295.45573 0 2356.063225 0 0 20664.22501 17533.93385 3430.145186 696.926656 19527.73239 0 8978.90251 3080.14811 0 22090.85042 0 3432.733306 11589.67546 18702.26815 0 0 18637.19951 0 0 483.1240453 5433.062377 15929.36409 0 0 0 70.97022253 25997.51777 22995.52639 5786.652861 0 0 9100.896812 23574.81678 984.9187844 0 0 2400.249974 5625.847622 19592.00197 18884.42754 30595.12933 0 9209.795408 9.90798863e-05 10165.75762 0.0003404918588 0 0 8894.222343 +0 0 7682.524405 3136.784455 1454.999555 23408.67214 4809.757567 0 0 19391.5266 0 17179.31171 4267.175121 6561.058076 0 4543.716393 1785.524744 0 7480.377531 0 649.1017551 0 0 2269.727835 1655.317851 49729.63977 228.4129278 954.5967065 31.12005412 0 67527.85905 0 5797.293641 1654.970351 0 0 0 10353.47407 7143.803992 0 8763.521423 63.60499237 7486.602812 149.9688423 0.007320974983 0 0 59385.72486 27867.47778 258.0732843 2472.826191 7410.865864 8074.201921 3333.033649 0 0 6100.728561 0 0 3138.429881 14047.88778 0 51.31190219 2740.994956 666.7351354 0 28062.22901 0 0 0 16187.13137 19885.99771 0 74330.86259 34.07380816 50029.23012 52952.36493 68958.29337 0 8364.167053 23569.991 52116.92521 4064.46102 7996.361746 0 55835.62402 2504.520177 11117.56981 0 27690.04672 311.8997911 24589.34299 24115.35342 49783.58255 0 3137.077396 0 14013.5029 708.1123651 0 5133.618451 63244.08244 29624.04367 12.70741793 2887.19847 0 6225.820695 0 574.9983446 270.5364111 2892.853524 0 1147.368405 0 62.22502916 95.61419905 0 0 10288.85188 2456.721459 8792.276325 4007.266377 0 23.78508214 0 0 45699.13854 4420.841556 15795.24996 25435.98506 8508.913217 0 0 3809.843366 40429.7098 0 24747.14754 0 2778.26941 0 47780.26441 27931.82076 22742.26374 120.2350191 1712.74847 71909.97436 0 621.5444627 435.7536097 4855.162787 5566.375093 52738.55446 8561.85673 0 12507.80292 67.9205993 3003.255151 2299.918383 16555.70675 0 15094.60171 47856.74814 16491.98855 20888.56052 72164.55692 28499.10287 68377.53964 12622.39104 1817.316348 19747.92485 27411.06322 15336.83989 38532.34371 5012.285695 21475.6292 41100.6305 13220.59229 5567.832381 0 1683.701691 19739.35998 2564.276507 0 26026.65426 8021.537017 59.11405058 0 80.82999507 80.39261777 0 38110.7953 0 7700.01432 3739.484736 26733.67218 2908.387161 0 33641.7297 52954.4977 8386.039983 37759.45714 0 0 218.6990966 0 28932.7946 3744.300491 0 3352.098305 44690.81681 39180.07724 0 0 54879.55356 18374.72454 18820.90658 137.3452352 1971.170921 21181.59489 0 2798.941116 1986.97552 852.2133666 0 56942.49736 3608.675047 0 0 0 10041.01668 0 71514.61583 0 2482.937348 37915.91567 6526.651763 2633.180053 0 2723.007949 35285.39906 28631.84557 0 6498.723865 0 0 1.56783414e-10 24420.70322 49508.65693 16708.4546 0 235.1840692 77.41877187 3563.026878 25429.36768 31991.7542 56979.05813 6.58879113e-05 0 3024.327719 0 0 0 27798.93247 23685.60974 0 0 0 9241.234301 0 11055.40202 0 105.2932235 0 7966.517649 158.5110232 0 0 7379.92175 6832.846826 7869.536292 1726.446283 4610.819485 346.2082163 10377.17627 1150.036256 0 1718.258289 13669.85921 7741.812675 16997.97361 6702.547932 24081.56536 52420.96473 19531.38292 0 1715.313828 0 81875.04288 35660.59388 0 +1269.345363 153.3717713 0 45.71762068 14027.87921 5198.408141 46265.12153 9412.188765 11701.43087 10474.15446 8897.525845 100.3589983 3182.576896 0 147.776679 2367.205732 94.48125309 0 0 9277.041959 0 26587.41555 15787.00897 231.3213484 0.0002719284913 0 0 60.47660772 0 2215.118639 51844.14755 884.2773293 4066.668049 4903.125737 0 2310.107661 0 8987.154699 0 501.6776752 19235.91311 3896.642658 0 0 24.93000869 4822.245695 308.7766261 292.4607077 34595.37613 0 0 0 46447.23891 0 0 2065.94457 1437.758179 0 56857.81121 1444.04902 2821.82365 18405.14142 29334.31675 0 0 686.973102 27461.00881 41666.8972 19684.60837 49159.47539 2280.623468 1.246409447e-05 25663.28594 11063.38935 3654.824668 48898.26605 47817.82279 39174.91385 19014.55169 4040.988793 2057.266825 0 10483.05746 0 0 123.1300701 2361.467834 5823.834418 24052.33969 16672.5081 15836.47829 0 21668.26753 30682.87594 14785.20884 766.8423633 44829.49166 32052.47362 1551.86041 5569.716777 521.2205291 4187.351941 43144.78477 0 0 0 56.96725789 9615.998187 11309.64323 52438.45865 10750.46202 7155.919445 17119.74763 10502.96521 3648.275056 4787.726026 1257.294966 23355.33894 0 2713.923485 12238.76739 165.2788485 0 0 278.8925456 14557.24388 0 242.9439874 4654.82719 12423.81287 14223.43197 11767.27565 0 24306.79694 1698.966024 29380.65746 52835.72601 766.1901895 0 396.0917957 1673.090659 1336.3258 7386.334639 45074.47992 0 50.37026113 9475.930307 76.02837098 35899.64086 13418.53933 0 31397.45354 7438.609399 0 6496.056809 24781.80554 35863.04758 28252.8168 0 16408.05578 0 37179.91324 0 33218.75661 1237.165117 8390.450878 0 2929.631869 0.02796643182 3.275936927e-06 0 27832.4865 64997.41276 28660.29987 17590.35 1126.249509 75055.25728 19399.29674 31148.57209 52767.63845 0 18590.06808 44644.58715 18775.83143 7401.99081 8564.637715 9331.535243 28131.78316 0 82.46816464 8421.929329 0 0 17898.81397 34575.2643 55.89608383 74517.09967 5320.831036 6031.845788 633.305537 0 50436.93269 0.01011453778 1841.660971 43569.56546 18910.33636 183.6686802 3673.542653 13883.6696 0 4361.90447 1.038174218 9418.520055 0 0 8709.600998 0 4640.48887 0 0 10868.43426 0 63778.5099 8320.367866 0 13913.68552 745.809812 8851.805565 1009.202018 4061.517942 42346.50441 2966.694884 0 38196.17248 0 0 9127.286213 0 0 57156.4403 0 3339.380524 0 26070.37494 1660.43016 0 359.1345176 1462.358531 4031.765816 0 10239.11049 0 3167.622946 0 40392.79283 19888.39138 0 0 5724.350036 3679.028583 49368.97334 442.7877517 58.37299364 0 0 0 78.80315937 1283.516967 0 31.24868951 0 0 45313.1897 5938.078086 0 0 0 2187.412683 1358.235182 0 562.8098627 4907.288602 0 0 0 8049.78349 3624.440844 21815.29221 0 13578.82413 3949.008411 0 2514.681079 0 0 0 2572.027735 0 0 39.12115855 +0 11102.05324 0 0 7016.46996 26.0244949 2127.576205 0 0 22462.4668 0 12288.61983 23878.65529 18273.47437 0 9775.439475 2907.821685 3495.052038 15869.65849 18662.40866 2359.399987 0 0 106.2079057 2949.838156 1960.303289 172.7363991 39590.49163 0 5888.113646 1750.052343 0 0 0 0 0 0 0 0 0 0 30850.41025 10609.74509 57565.33374 0 0 11089.07956 5736.532799 7207.234386 0 0 20945.19188 0 0 0 4863.842195 27049.15091 56807.40097 17802.70658 65.40556304 28623.49172 0 0 2549.839974 32943.95384 0 11201.48045 210.2045358 33991.88836 9233.36588 0 46595.00873 0 21950.86921 0 2791.953297 60446.4277 9367.895357 13577.02063 4244.377478 60104.71301 0 26613.48198 25453.73628 147.897222 30223.86056 1478.88504 22799.89675 41232.51008 0 56.51130748 3678.830196 138.3018253 8301.359228 10435.58238 0 12650.72112 1160.392282 22099.7985 0 3788.981296 8778.136117 4215.464599 2111.301355 4396.140074 3161.328383 2665.946194 20131.51821 13946.10129 49459.41787 1.496649218e-06 3848.812503 0 21753.62343 489.2054029 96.3766724 32733.01928 3496.084648 15067.09518 0 0 4184.038847 19776.14592 0 807.6898897 17529.4508 42030.64279 955.9688594 0 4740.399496 23504.72457 23.8089666 0 0 4594.651368 25548.44578 6100.790406 56968.60758 36034.41505 41253.50939 37604.58706 0 70565.64953 0 1992.118982 5001.964937 61974.20524 36585.3139 5580.051541 44431.24779 37039.25433 23204.94933 408.6678986 69022.79311 11429.47595 56377.92724 0 3600.463588 718.416997 9978.249484 0 0 8085.342954 48355.17208 18224.6356 26650.4078 7870.348415 0 14801.15142 7924.474369 17268.65229 434.9834631 3028.328536 7673.977527 0 37537.72469 6139.443817 2389.399365 0 7596.177562 29316.42926 0 0 38847.10653 10717.1355 1696.932756 0 0 2102.678436 0 39400.60629 0 15475.10706 36166.27157 8861.352317 44350.98751 1015.803503 9056.636646 5725.496965 6251.762529 0 2143.139259 16198.31929 8861.564487 0 2391.597973 0 2174.075104 21306.06495 8222.71213 0 1177.831976 35650.75545 457.4401394 8421.139042 8159.791772 2966.00075 37.45594196 42570.08587 52477.71143 37921.54049 12389.10629 0 4043.098188 23168.3454 0 11120.85369 8845.906283 0 19843.17313 8949.874689 0 7201.680144 65392.53091 0 1851.981584 343.9010325 0 0 2325.59695 8463.463548 46328.24876 25225.18177 0 19079.83683 12322.38551 31190.38979 3882.949459 0 45035.43497 192.290428 2673.345741 36307.27595 28.07597079 63404.12485 108.4914651 0 7104.69049 27692.07981 11880.88231 9319.023739 0 0 0 32.1039936 9477.953616 7070.123984 0 153.9574465 36908.99315 0 26376.21685 8174.736955 0 1674.511523 4799.612408 3006.578851 0 2798.713678 0 0 19530.5119 2600.603401 1912.524624 4801.200667 3246.313581 0 1931.301013 12951.45512 1458.248081 0 0 920.8207088 25010.43021 10381.46541 0 0 4186.799285 0 2353.265054 +40.16783851 0 4106.270029 0 1530.562081 29765.60924 0 0 0 0 60625.38589 22790.23607 0 783.7753131 0 2049.82625 20264.7357 10385.90972 0 0 7294.994804 0 12936.59406 0 0 13092.31754 74.85967261 25128.10435 1255.203588 1681.08623 0 0 44454.64717 34487.58754 18660.41584 0 2787.71771 29043.92165 7313.259154 0 0 30052.08942 30872.16193 1899.917714 1087.389255 25364.96368 2097.77632 0 50398.26146 0 0 0 7392.089744 39769.36384 0 0 43500.75438 28.61342299 0 4580.811834 0 0 10289.52254 28.01605151 0 564.4212534 0 59.46566868 0 0 6159.881144 59316.63402 0 6715.747184 14146.90191 2371.010474 9458.900963 29737.5356 44355.14084 0 0 32854.92163 0 63612.37531 13392.78474 0 0 0 2840.374704 0 0 264.4881104 19594.17406 48154.18575 7306.043866 0 55651.71174 13049.71648 1483.989503 18817.37173 2696.238715 0 3303.978261 21409.10391 25072.53977 2987.338899 2677.961853 0 37962.53527 2032.485796 1175.172951 0 1090.866117 9353.924783 0 0 19690.80454 1909.206652 48034.40854 28406.75647 0 46295.55383 0.09492080914 5357.644587 4115.792603 0 0 2463.369996 0 0 0 22513.85472 23795.8275 115.7787352 112.9228906 1614.392962 2181.371663 0 973.9798243 42.19999562 37875.07938 2689.353382 0.003510384493 2495.742303 3671.261819 0 47882.28889 17300.34721 321.5004581 23271.48654 18805.65577 57831.30272 7732.49427 0 3990.311768 0 25154.42049 11686.99808 0 0 0.119131554 0 7622.686236 2676.982426 16022.00959 254.6834349 18553.86013 0 32163.16172 37522.71231 56680.65949 66586.65168 0 46424.87192 222.0751592 7953.390555 1575.780002 7623.349983 0 18574.85458 21003.60497 1306.803336 0 0 2094.590841 15564.08077 0 40085.56131 34365.66565 71665.52224 0 0 364.2597467 8517.369087 39.89486279 2968.329056 12055.69444 0 12468.91488 9171.530236 2311.451793 5134.697393 3492.509723 3429.467351 10928.38493 0.4234844619 2964.332996 1835.087352 0 3610.823712 3432.75266 46.45801045 36276.75444 2082.536321 0 0 196.3169885 27023.17984 8572.507144 0 0 429.2182937 5824.567068 0 0 2727.955919 30952.26308 2370.392106 736.7656871 1928.685587 66239.13151 1932.110987 0 5668.36258 0 15730.73194 0 4693.587335 0 9052.684154 0 0 13787.07566 6173.684998 2142.0079 56015.14413 1029.190039 85.8902742 62879.63484 0 0 0 0 9321.620439 21318.89444 0 5143.932752 0 0 0 0 0 140.598045 362.6780285 8434.145098 0 0 47.18162749 10321.4046 7210.961427 2268.484048 5964.027892 0 1374.573165 9557.229414 2920.563446 2322.214533 0 0 0 0 11097.56941 1338.075854 0 41841.14625 0 2074.148714 27748.13562 0 4318.64671 0 0 31691.77797 12870.38417 0 1900.976934 0 43.61510478 0 44394.17295 +0 37.59389792 34549.17388 16543.79973 2470.598337 19079.89986 0 0 29939.59109 7319.272992 0 45937.81472 0 0 49912.65428 18469.46913 42155.95608 1.515573756 308.8235021 0 7394.235106 26587.42839 0 0 0 1964.1013 1891.592563 0 0 3147.842239 0 2624.693569 35531.82967 0 37094.23115 0 4894.551172 48380.13926 0 1952.14561 0 2830.296839 0 0 0.3408996727 9726.226989 0 1774.916746 0 15056.01837 42140.40774 4321.009595 6610.371987 0 0 2476.817301 43172.01177 23005.53474 3490.484003 0 0 998.2781251 352.3924666 0 0 105.9692181 14055.90783 420.2609816 8473.299107 0 35072.18097 1471.662328 1847.276342 2755.525583 1748.908328 28394.8395 25453.36655 12844.98674 33226.01695 46492.26325 11352.92205 0 2121.142913 0 3789.500069 1664.514339 236.7497167 17837.21231 22313.18964 18754.99164 6779.997236 0 18648.69922 299.2550389 55077.16097 36898.98916 0 5680.296619 0 28433.99781 26052.41574 0 4125.438831 20840.98923 0 49306.20952 134.953764 0 30766.01798 5269.174272 11953.25979 6104.026077 1678.961429 8098.234092 43665.79541 12475.72473 0 3290.056316 38150.32076 79403.11617 0 39197.45517 3122.856923 0 143.1731812 0 33428.81747 2900.837013 11566.30255 10783.63921 0 15789.89241 17140.65364 31337.36038 13732.65604 0 746.9668826 5190.352833 106.638101 15483.06191 0 35703.95414 0 2975.413371 2127.333783 43041.68293 1616.193341 1663.491818 64583.87537 4049.323864 44248.73895 4784.918978 0 67433.66031 10123.44686 2080.932342 1.495754334e-05 5503.987114 0 2964.863726 10077.79224 1.050103635e-08 0 7035.928324 5033.039057 3438.067734 201.0849812 9268.317898 5892.284107 4.52627483e-11 0 874.460313 0 524.7162896 11766.41565 0 6556.995822 0 0 20063.18433 22172.06819 4602.475922 0 16083.18487 7904.88568 0 0 2.440865155e-06 8236.296591 0 12786.34759 2931.600516 0 1729.986136 0 45.94592979 0 19645.247 37727.53759 3267.315776 0 68.53103845 0 0 2630.272472 10125.66153 8659.8722 6880.592513 41810.31152 4942.592829 15441.41257 33657.52954 28087.40637 1564.373969 23524.72272 3090.941066 0 32369.93743 0 375.5019595 0 14.22656842 2116.127118 9640.360703 0 3594.392336 2816.534371 14370.95081 0 3966.599677 13227.40795 17164.26848 0 0 0 0 43.10746917 2297.265957 0 9542.288069 10373.59954 27214.26495 0 12111.21298 4443.476669 26510.3946 19440.60815 0 0 1045.724112 17693.03291 4275.015708 0 0 1831.776488 0 0 0 746.8684654 24975.90814 2802.689889 578.6911839 25646.10999 0 10743.62503 5301.919209 6111.486633 0 0 31262.84965 5629.99975 353.9189589 0 0 29494.15126 2128.027998 8992.539553 62.57136805 0 0 0 52352.0089 31375.58209 20971.45174 0 2259.84886 7346.668923 0 14843.65682 0 0 1471.13488 0 0 2873.200528 14538.08155 1477.622068 4194.054407 3585.487478 0 +0 0 64712.68604 23793.87285 36731.80286 24171.92257 306.8535968 0 6415.389151 3071.833008 821.5246814 22687.14009 58963.29823 16554.66524 0 2822.284854 0 0 0 15664.7566 3939.157055 0 22810.05956 0 0 0 2355.556265 0 0 2871.473188 0 930.936752 13170.36376 0 0 25212.64728 55891.23629 0 0 1523.136306 0 0 4763.850465 0 4343.036246 28740.62962 15665.76385 7736.386093 5872.69646 0 0 0 80545.2634 14354.04823 36.86125439 5674.8933 2296.791068 0 0 7034.467839 0 66063.61369 0 350.1720649 4585.664411 0 0 10818.47915 17866.33028 14350.76872 41004.78619 5488.387226 0 35642.1179 13647.51328 7415.922801 15042.19434 73118.22062 237.955448 789.936531 11714.00273 0 8304.911852 48944.21372 75.25769526 1478.465331 11050.99584 2612.316878 26044.03773 0 21195.54892 4070.102445 2089.615699 42500.88849 67191.91955 55916.80632 2684.016326 28613.92766 1079.689217 3297.166396 22329.64329 6374.95219 6459.333609 0 16902.11644 0 62.8357649 9664.670503 13393.93606 48477.6024 0.004554461926 0 0 59.74361777 27004.39095 262.2338832 5108.019828 0 16635.6613 7975.062749 14037.72514 71622.42148 25166.02667 0 0 15748.74015 559.1751624 4619.596737 7220.661747 18686.63265 2433.086639 14790.91504 32143.50876 15434.86626 36196.41955 0 465.8653543 1442.681057 4416.96686 3321.164927 0 0 53.4461588 61.48645814 649.4535672 17038.92924 0 0 6577.952081 32991.7122 23570.78046 477.798056 1045.425259 21908.24832 2363.140797 0 4424.554125 23340.73224 0 8376.335104 374.2311793 0 261.1690744 5001.759789 38251.12273 39091.4614 0 69146.54581 894.3271223 4892.480178 9811.712404 0 53751.63358 672.9204458 0 6357.798099 1796.851231 4799.356944 9427.189914 0 4240.804886 19447.16655 4775.718994 0 1308.234358 21854.88257 6843.914535 1652.611861 3780.255078 23685.54716 29497.17182 1108.526183 31039.49738 6573.582131 19562.51053 7035.980572 30524.93688 0.006562474471 13300.62335 0 0.4340331361 7298.101442 0 0 0 1993.479302 34316.44768 0 743.3228947 0 44178.81638 664.8481638 0 0 0 37740.15294 0 0 9991.767657 0 4434.202152 0 8544.885925 0 8210.267891 0 36951.39087 0 1089.399257 14521.51332 78770.11171 8877.216339 0 13082.47934 134.6337438 46490.21349 32815.60066 4363.206021 5442.859685 0 0 2993.984752 23271.42976 0 0 0 0 0 0 4352.598916 0 0 153.4461338 8162.335328 16639.42419 0 0 5208.191565 6947.120348 0 0 0 0 291.1944423 130.0209169 0 0 31718.40829 479.6906538 0 0 0 0 4449.540844 3426.507549 0 0 2047.086937 22191.2422 0 4917.44149 0 67810.36676 0 0 0 0 15252.26215 1056.420924 0.3432501067 35.71047673 0 2122.129106 0 2336.242329 0 2057.333457 32.66100279 6146.406968 0 +65250.71541 0 794.2432246 23224.69122 66518.08836 2062.981671 0 7129.379917 38571.3783 0 0 6067.298198 19671.92892 0 0 0 0 627.2595675 0 0 4142.526688 18594.73699 10051.48693 10249.4154 45610.67819 157.0118862 23237.8689 0 3028.557995 0 46241.75982 3.544912768 0 22422.03898 0 1442.167326 3750.563698 10616.63116 0 4854.507188 0 0 3279.83974 1423.984533 0 0 44306.40743 0 3765.179571 0 0 0 0 6247.184315 25810.85095 4586.608234 35762.80984 57.54251066 17114.59927 26233.92228 0 0 24540.29076 18762.75098 16065.93933 0 0 0 52215.50956 0 0 38292.30289 0 0 3568.842868 33691.92478 0 44114.65647 0 0 958.146803 0 19172.01548 2488.633221 2602.513118 420.281043 4207.994018 0 3522.544274 0 0 0 2403.691698 12660.852 88.5385523 8963.638531 0 397.0500923 2465.538209 37721.06426 0 7421.74511 0 0 0 19124.03273 0 64916.68794 69627.98767 0 56654.41656 0 176.7177052 17948.52016 16980.31877 20012.12439 44391.82942 0 4.089509669 2197.630749 12953.14917 4996.776496 3844.568727 11858.6472 6394.329181 5604.37885 15693.41892 21642.36618 0 44133.69612 29667.32147 33361.375 0 20269.12269 45352.82607 0 871.2460724 239.5652735 1033.154701 27610.85854 0 57023.71873 6149.772665 16790.62469 4661.357912 1225.86778 1557.107131 6039.509564 0 11596.16462 0 11264.39561 81654.09577 1738.26015 1780.721458 67701.53702 28185.90787 0.4135895832 7280.987658 0 27316.65337 39.32820726 18374.15825 0 865.9281427 0 0 11871.26477 4158.120393 20990.01939 0 45603.04726 4327.772253 0 2128.14181 118.4239011 0 117.8772853 6854.158231 3848.041211 590.517822 58016.90512 15965.1312 0 4120.362498 2245.013946 7619.611384 0 43.07259248 44864.82446 2949.794885 32397.55119 0 11098.24412 3149.50318 33699.57348 0 0 0 28512.34902 1.664612221e-05 3743.131112 19509.16662 2288.880202 3015.095262 2944.384739 3512.335058 60850.7879 9460.560532 5600.949106 0 229.2576331 38975.11983 0 14081.64446 5310.100129 11512.04747 126.9925047 0 3864.282696 3363.243353 3403.2694 5743.128262 0 5507.190625 1048.313074 3944.12939 0 0 4104.736709 0 2803.962593 0 0 0 6892.548129 0 3783.363669 3956.790571 0 2401.232729 1666.220478 0 26339.30439 46.11513021 0 0 2199.413223 45143.14125 0 54797.8148 0 0 0 2353.0001 8725.556167 2039.699882 0 2852.069609 14550.34133 0 5278.356722 0 249.4912627 0 15914.63292 0 6374.315457 654.259777 3184.151758 0 0 0 0 0 0.01289560214 0 43.9120807 0 48746.93949 0 119.7718346 0 0 37.51950118 2257.284095 0 0 15556.75845 0 0 2608.649719 19712.12273 0 10063.09513 0 3182.153931 0 2454.105292 545.2119552 +0 0 0 0 0 0 0 21862.57643 0 0 0 0 0 4604.409407 158.8607684 0 3464.036659 3828.581679 2210.764128 0 0 0 46189.26551 25381.55239 0 0 14647.94697 0 0 54.53811612 0 35006.86938 0 4260.479005 3067.095554 13450.67089 13008.1667 0 23283.42418 14307.3612 57348.46591 8579.899041 0 0 17697.0423 84.47944403 0 8181.200256 0 0 26.99032221 11793.15675 154.3823231 31822.03879 0 7747.21904 3948.274528 961.663023 0 47162.08556 851.3316912 9956.003633 0 0 0 0 0.152059084 0 719.7395375 3233.389397 0 0 192.2506416 19146.63721 1332.873514 0 7482.819328 7006.555952 0.2121326706 4037.24732 6903.43944 0 35525.69972 0 2526.234831 7525.469163 0 17424.83043 3602.051494 80.58703726 1319.073265 42.38809055 0 65.23227216 29579.81995 0 25422.69982 30226.35308 43113.23876 0 15015.30374 1210.727383 4212.880702 0 2829.944474 29802.94467 762.1020377 73988.02781 0 20141.84086 0 0 0 0 4799.002609 9778.111123 502.2747591 2758.466841 3597.368473 0 2394.464599 13980.00227 1743.410614 0 3669.061709 3366.525786 0 10701.70766 19291.43028 3391.812402 63.11416336 0 19995.18048 0 24989.86326 9521.974186 2834.009011 5926.781568 0 0 339.9946478 3750.718843 0 1169.577403 0 11051.7618 0 133.4907406 187.9024663 0 0 0 0 40748.98606 0 58694.03031 17582.21165 6998.326105 42788.93898 0 0 0 13908.39194 12538.83595 122.0385614 0 0 187.5273219 3893.791892 5.829379839e-05 46083.30796 17770.37458 46106.62407 13163.49706 0 150.133619 29206.40644 2379.136709 22052.94492 0 4848.060029 10261.5858 0 0 0 1746.312075 24472.95182 0 32211.34094 0 0 0 4014.167116 5704.994228 3398.690394 0 25110.1182 36900.90428 605.3999214 42826.23497 253.554698 9273.86322 12363.15901 0 13062.8482 582.6601165 16410.5624 5957.144668 52938.23434 20.51312205 17028.06524 2217.398161 0 0 10128.4719 143.7803828 22963.47599 32040.8687 4240.008426 0 0 5412.610146 2206.049127 4813.095351 51785.842 15051.46435 1317.790394 0 0 63591.0758 0 0 37998.6649 0 4134.379834 0 0 0 8046.383894 15065.13062 2153.987475 0 35815.01925 5596.191681 0 8790.030909 0 18397.49925 0 1703.929201 3172.880506 34230.91356 5904.84975 4231.364643 0 0 0 62.22294351 1536.312338 4119.96265 0 0 0 56785.58318 0 0 0 381.466144 10001.3951 442.0628105 0 472.3178288 0 12415.82391 0 0 409.9578435 21192.05133 0 6896.695631 13670.37938 1045.393211 93.94473314 494.6631746 0 16712.56606 0 12674.63861 1.158955469e-08 39053.81228 3538.690632 0 390.0643793 62163.59442 397.3680553 0 0 0 0 18036.7037 +8676.923531 10644.41279 0 0 2309.454547 0 0 0 23201.53244 28.47810155 8779.807778 0 29872.33967 158.0101661 8376.564309 0 7255.201359 15621.05471 0 3596.097007 0 46746.2075 0 91.03407091 0 352.2360346 0 256.9466493 26476.82057 0 68915.10634 0 32708.11715 4725.097676 0 4362.243236 414.6092775 0 721.9460836 68318.66111 23790.81761 0 15354.70621 0 0 0 0 13950.49702 1641.129656 0 0 73559.22894 2658.083981 0 0 32216.33546 0 20115.33277 13124.29837 0 2666.840901 248.1822923 8323.791397 0 34078.89107 2611.688851 0 15198.45787 8509.341928 9163.314268 22204.03005 0 0 158.5746819 0 25122.92013 10549.84248 26.86448872 19.56799147 29442.09195 5.092985988 3670.564125 9594.144043 0 106.8104541 29290.88851 9103.208066 0 0 17445.4538 29828.07208 7719.947319 0 0 32420.98259 0 3271.275003 26690.85267 39.57507514 8964.69287 4250.144604 33674.74006 0 0 2650.548436 1535.787493 14831.49149 12384.99832 0 3695.873874 17295.56064 3728.95402 0 0 13599.7984 6742.262965 0 2388.400706 0 0 0 23050.07622 1921.4172 0 29893.56608 8788.215788 18623.60014 2113.569246 0 0 17396.65242 8766.774566 39433.14694 43.04933291 0 0 6264.632274 49549.37821 41567.05128 372.6068442 0 1016.465702 15020.01907 0 8075.56114 0 7169.604563 0 0 0 34448.93461 12780.64279 1522.227826 3572.685918 832.6718086 1241.228033 0 0 58453.12251 9621.104594 8330.716103 14387.67638 0 1593.94848 0 29821.7529 11038.83973 4121.839939 1927.177074 16773.12013 12418.346 2349.527934 10609.042 18131.84626 3102.181272 7268.226517 0 683.598154 4039.798651 15367.31702 58.8269608 597.8911581 0 2058.596315 4426.302222 7022.82859 6048.353761 3112.481125 0 1810.264184 0 5.776133049 10123.23755 3068.495523 3585.155816 7276.419178 4833.951165 0 26623.23861 13693.01323 0 0 0 14101.52368 67.85896963 15240.51872 38296.01032 0 5.503637247e-05 5446.459466 3855.195477 35060.07416 34235.36122 12080.0468 0 0 0 0 7413.787459 22556.04802 6263.43794 0 0 76651.016 34866.88793 6457.048003 51184.93516 0 742.6845673 0 0 0 0 768.7291463 0 0 0 7361.783012 14394.30859 4047.324637 27267.64009 2498.304983 32654.46042 0 0 43021.88117 96.80521658 0 1487.34477 3376.991509 4664.909097 0 32343.81208 10081.47114 26094.05497 0 0 0 0 1694.811899 0 19840.97346 133.1086177 1122.882453 25235.64007 0 2108.737955 1286.491002 11046.31172 4626.026901 0 0 16.71682449 12970.8502 0 0 0 0 48872.89691 5667.420423 0.00532067741 0 0 0.05661477293 0 26972.9208 4055.282908 26819.67887 0 9230.510848 0 1800.878967 7150.008502 0 10238.13334 0 38939.74595 2306.321566 1084.046789 2903.313058 +9169.540815 4131.186841 6446.739345 1162.475111 0 0 3103.252893 5609.277931 0 1546.800035 0 0 9597.44403 1986.182963 4082.263073 0 0 0 0 53290.79291 573.7600899 0 0 7490.018269 0 119.3145688 0 116.469923 50.78664541 62624.59706 51.1875367 0 225.1041889 8403.11044 9521.798096 0 8401.87637 22189.43716 5723.823453 45.75676385 1978.992956 0 31986.05283 0 3831.546898 4205.383857 0 0 0 900.4390932 0 13695.02259 0 0 0 0 25634.10024 0 665.5243806 43.27295863 0 49530.88487 8115.332097 0 0 0 371.5439728 10368.69128 0 0 0 1099.038093 0 11773.79816 5511.221608 1082.339096 0 0 0 35941.90336 0 13326.10484 59721.60506 17029.80156 9014.284914 15862.84792 124.2244682 11788.60993 551.6795882 0 0 2306.407523 0 24211.55675 6758.743574 0 50389.92778 0 70473.61045 4161.47315 15.38883142 343.0914087 0 2850.479235 4154.473563 0 3510.757589 78163.8419 8.682067201e-06 19889.9717 53.84560221 0 60.80518321 4857.49507 6583.88327 0 41206.18557 5416.0883 9937.41931 4090.81721 0 6269.453517 3231.30256 7275.655741 0 0 607.443173 760.8504387 1544.344153 179.5529789 0 11121.14486 201.9282027 0 111.6918422 0 3394.671926 7107.19358 1.881242143e-14 333.5751065 20842.72659 7677.385648 7881.983202 0 1978.79049 0 14231.11704 3515.371263 0 10074.79934 50862.62715 81.38019719 0 1111.132776 27140.32469 0 0 267.7552081 0 29653.27967 2470.463627 815.9711967 2032.706453 0 1362.734014 0 15990.54314 28754.43647 23605.40308 38.18022727 41667.41145 237.9621087 0 2076.979712 0 0 37374.06322 26176.58426 105.382392 2220.450159 0 2981.185792 18683.6422 26084.95418 0 16614.62521 0 0 0 8010.989887 0 12345.16898 2661.467561 3498.550286 17981.38891 0 28212.73456 24769.40901 0 54231.39595 8028.565202 25462.39632 13986.38507 9818.23986 0 10010.50022 1158.166804 45.09162439 52.35432295 28704.38345 86.18294455 0 9059.272294 6699.5891 30091.76681 10850.45068 0 0 17629.87111 32334.82803 15459.50537 316.1746328 13689.41069 15902.40799 19731.36195 8790.216296 124.3865461 40857.92876 0 1068.265554 42637.60536 7030.196989 9657.647656 0 1540.181533 0 0 29760.5286 24386.65729 0 0 1347.428729 18147.20681 21.85641087 3.359179266e-10 73936.30709 0 44118.72031 59382.413 65.16778498 0 7287.057445 0 4793.304812 10977.55355 4741.247987 6629.444329 40882.18298 0 3781.056159 0 16601.98906 0 3250.278735 65361.04314 29.3688034 2441.96044 19108.76462 0 39471.93239 0 55179.01091 0 0 9675.01092 0 0 1816.675818 0 6678.550537 1450.334504 3679.965761 0 12341.66497 5.020273752e-09 1026.57445 10982.66318 0 17.51131887 405.1144404 37900.14937 0 0 27196.34968 0 2731.274242 3575.826713 0 0 0 +1625.573024 700.4779687 0 1926.937747 1395.798162 305.018332 6.151575564e-11 2211.862338 393.9631942 15201.28598 6580.267377 0 12796.03472 111.1801897 1218.943456 0 16849.91485 2077.066916 977.8031094 0 28843.16387 30413.92635 31612.60782 30263.38625 15534.97581 9946.034706 10825.86629 21452.18643 0 32.85046801 0 4877.580112 0 3627.387812 17672.15511 14869.93593 0 0 1586.610698 285.4343856 0 7485.521436 167.6671166 0 0 187.3823877 0 7676.33715 0 0 5992.842892 23748.41361 11933.21023 5661.928634 5525.847303 17380.68259 254.7961925 0 0 166.747537 0 0 4984.649464 0 205.9820726 6139.991715 2502.029016 0 4651.325597 4850.06999 0 3913.861945 7213.456407 0 23406.93995 642.2408245 0 0 0 0 3005.896617 62860.02419 1150.855441 0 77487.35878 1723.664866 4508.063267 0 511.2726445 284.162143 11486.65356 186.311949 0 16905.26085 5614.822344 35258.29171 0 1036.106496 66451.42829 0 31373.88526 4819.493029 2157.026396 0 64.57941405 9205.659889 40263.17027 7961.810802 0 5644.891671 220.5385687 0 25567.13395 1.190137439 0 1455.286795 56551.96459 18872.05506 143.4596075 27.15354289 735.7034611 571.9947006 140.9546107 47307.69018 40390.65736 0.008541363764 11116.08028 16161.59165 0 1844.548348 44998.7229 53693.17362 6215.397283 38136.31786 0 0 47.54551516 0 1.665456265 42207.85804 0 7604.297935 21021.45608 0 0 52309.77495 9121.359451 0 22906.41274 4633.840028 22.30676304 0 0 2456.272159 96.11471978 559.5616104 8891.642647 67055.22311 0 1839.070574 0 22810.44231 689.7638447 1316.616527 0 0 2016.492884 0 0 231.877721 3200.058977 28642.22652 7725.011953 50918.10334 0 9368.262892 36081.93281 575.0952706 2236.635703 60.59032668 5647.694631 190.5543137 0 533.0256019 0 0 2749.905383 722.3566394 38016.50117 46858.88479 4304.795792 0 0 2548.442539 0 2299.652293 69512.14124 176.4014504 43079.04034 25233.02225 0 18665.06244 3312.354803 328.0569733 2579.354981 0 0 42445.16011 0 0 15550.72401 27651.44293 11379.27498 865.0710245 26875.20654 12351.42688 2359.759192 0 0 0 2708.495183 0 3713.970297 31400.39943 1623.393812 23063.53155 3567.572944 331.8293901 0 58167.23801 0 3680.324557 394.4749836 8982.487413 17831.09947 0 0 0 0 0 314.2974616 16934.29924 84.57818416 4404.705286 0 0 2062.650672 530.9862444 204.0507077 0 5299.864362 34338.20026 18831.66568 13003.60753 21881.63231 37030.44131 0 4428.222924 2656.228762 30944.11948 0 23.52784117 21233.53014 0 0 0 31291.30547 764.187215 7434.002289 17162.68721 11350.84897 1699.018445 0 7762.044472 0 0 44836.9782 0 50669.29979 53.88996478 5710.385088 131.1055121 773.3674623 3219.856937 13225.28914 12811.39284 0 10283.25162 0 0 0 0 1.168281429e-06 0 0 0 0 6089.654064 29994.74681 9168.21114 +29817.93793 11.33210962 33605.0616 0 0 0 0 345.989453 0 0 2001.321741 0 0 0 112.0945322 0 0 32203.72587 4833.600466 44057.1719 4757.793804 323.983818 2443.641661 0 0 5138.660483 174.2672502 7283.903771 0 6311.430604 4567.744161 0 12284.22589 0 2783.63225 0 5489.646652 52656.99763 0 0 0 0 0 0 0 0 0 6567.786259 0 563.453484 0 15207.26003 0 20402.26776 9206.443338 10956.42882 0.02854511433 3791.54037 805.4395538 71.73409642 2338.11333 0 36819.87009 8410.878686 7548.691843 32662.12202 0 31463.36663 2265.499234 0 247.2634353 16876.29507 2035.935653 0 33358.60706 0 2839.920196 0 4079.819051 1577.986513 924.7652131 13831.60959 41523.71644 946.2634296 0 4914.064458 39553.96485 0 0 36947.12875 8296.449241 0 6132.053804 387.8228496 0 29407.02705 47127.50197 11.91902844 49565.69742 286.5772828 0 51271.08646 49710.32422 5549.145981 364.9034022 9365.975979 0 5917.064852 0 0 41665.90556 3583.790702 36837.49051 0 4634.389219 1749.747231 5232.646252 0.001901955814 1093.629631 3475.81121 0 0 8276.177214 7222.352892 1000.182328 5542.980263 0 17948.13216 112.5692571 5707.322271 7317.697523 0 0 11600.64083 0 0 6233.420665 0 0 78868.40001 17250.86986 0 45067.53898 1084.79919 7336.127172 1712.390739 36415.99013 0 24224.46244 0 10287.74121 15479.62007 54521.55575 38944.13096 4309.84832 0 0 28633.81496 27255.23698 2908.90051 1003.284897 6936.871436 0 0 6742.981171 2017.88828 0 1333.368567 452.0671544 29029.06356 6936.32695 6.247130256 0 17640.96582 4397.989013 0.0001777573638 0 13034.06682 21203.08948 24.12611545 1436.820751 0 5473.342787 11464.58109 3342.161318 56061.15952 9639.538131 0 25906.53709 0 30950.8574 28283.81334 20834.48185 0 29268.38311 0 55839.52515 18650.9413 0 24437.05453 13452.69283 0 0 8135.125583 6062.972155 0 161.940894 20076.81294 3604.128215 2710.079005 0 8098.226058 18283.56467 11063.47762 28915.53815 0 47532.50088 17905.05922 35.28092868 20475.80541 7247.171909 4854.898816 3044.42403 12020.72696 3816.054666 3200.494887 6420.214119 22272.10252 66895.02293 17654.16798 2652.262685 153.1487902 24798.37608 4644.345958 20422.36018 0 24048.28685 15464.24218 35534.88417 75.52453296 3668.25278 2067.345816 0 1612.503833 0 0 4484.921827 0 4953.388928 0 9158.750443 0 929.6277025 1028.913724 1280.71853 4470.610246 21282.50207 0 29.49875753 88.65097002 0 108.1660468 0 2052.533974 191.1377513 6.675661873e-06 4020.245833 0 0 0.02382817175 12409.58373 0 2236.192227 0 73165.41292 0 0 0 7207.14382 3542.648358 179.9633824 0 4985.225776 61.51201805 0 0 0 0 0 24465.27998 1381.195529 0 2549.329559 0 55371.66989 129.2677567 0 3240.219978 1.134172766 1465.595311 +24378.51382 235.1034866 0 0 0 3582.413409 96.23249503 38125.747 6718.33863 0 7795.775767 0 223.5622775 16218.15046 681.8679124 16492.03083 6429.819418 13283.11659 25229.44733 15050.80327 29268.29578 0 0.9209391761 0 3707.786438 1505.75122 0 0 14877.42518 0 8337.80188 21257.72641 0 0 9107.967319 0 45312.83768 0 2143.512903 1580.319786 9536.296954 0 16184.97665 275.0995637 0 327.074704 5468.558405 0 1519.28066 61602.55909 0 0 0 47836.02501 0 0 6740.569888 76.81337096 0 0 2257.183038 13.01927329 0 3897.561337 0 0 0 39.81649925 0 51199.36079 3283.115875 0 171.0387397 3217.519865 0 6008.033705 32956.80131 7957.671811 3789.226313 0.000550548312 2150.961198 486.3450491 42413.19501 2659.980882 3947.35526 5183.771632 59411.97944 0 6490.495348 0 36060.92768 13683.02624 0 0 31986.69101 0 2008.769921 14087.79102 0 26039.09976 0 0 18613.84874 0 1018.72952 4180.11866 0 20.12964907 3599.360148 40302.41721 38362.17686 0 6998.153666 1566.261637 6744.452256 6584.681316 4314.418378 8218.720093 2475.754875 53618.4383 0 68774.69641 19397.59372 14166.1508 10011.22111 0 41554.77053 0 0 0 2216.063326 4971.240208 0 23318.06981 1401.758421 0 22639.27717 39750.93284 138.5827782 2365.807322 0 9864.090282 4067.673784 32206.99917 4141.915161 0 18018.86452 8612.193639 0 8423.623857 108.0150689 0 5186.270825 405.4748309 8181.475484 0 20049.08836 22.72867971 3040.811552 0 3579.377575 0 5.856138879e-08 86.47986931 2.504551355e-11 2790.241179 10268.342 12617.61207 47298.74469 3.544157566 4977.545145 1012.793457 0 0 0 0 22318.23418 0 4002.041374 3305.447012 63791.25074 0 12786.35856 0 69824.21762 0 3884.346903 0 7324.478262 4673.993884 81570.67925 0 718.8231535 3765.299005 0 2785.447931 36839.1113 0.0002075340893 3013.48761 0 0 19307.72912 0 64446.97264 1181.649178 46884.63268 8302.383484 5620.553373 0 0 0 9845.672104 4831.131811 20576.41312 954.6345375 0 34140.65251 8429.657503 0 42838.75462 0 2670.542696 0 1099.35521 0 45574.80983 157.8243225 0 30288.60586 5200.912671 1336.3572 0 0 0 5715.939098 2733.04284 8952.190387 0 0 0.004128115088 1361.212099 17120.95059 0 0 22256.91128 8440.796911 84.02648291 11880.62616 2625.079324 46508.50417 23745.16662 7622.78126 48399.23143 3148.187657 0 1498.120604 16706.75306 13428.05092 0 8878.699898 41462.72252 0 6336.754997 12091.92901 0 0 0 0 0 37900.6653 770.3797494 8489.494151 4127.868354 28830.86583 29777.42627 1858.983113 2297.229113 5651.836938 0 0 3155.422286 0 0 0 0 23606.40284 0 306.4298865 17363.15369 0 2227.956947 6949.832955 36573.97002 0 5938.601291 1627.163602 9357.432726 39.07947706 0 0 +12623.82042 0 0 0 697.3125053 10319.19737 0 3518.710655 7856.568881 24372.90176 0 29636.29964 26143.80583 0 494.8885089 9297.967209 0 99.96475266 10332.24464 23498.51472 0 0 67901.68192 3555.969393 19506.62948 0 794.0592335 0 2345.315919 29403.38787 0 40419.20334 0 0 15938.95477 12055.99008 11500.44943 56430.6186 0 142.8862646 0 0 3241.250403 0 0.1194259122 21531.80828 3.47851168e-08 20767.99525 7117.064905 63923.50479 312.1971238 0 22607.85464 0 17581.03097 22789.09902 0 0 3345.359237 24637.07636 14387.78069 0 2157.845798 0 0 260.1480437 452.7105795 4940.887857 25116.87148 0 51668.25713 0 1622.624972 1777.620768 9704.158933 0 0 130.2192965 10337.98193 1715.976886 0 124.5520131 3747.599194 0 4146.511419 31388.83045 10034.21502 24323.2008 260.0187694 0 0 3669.478639 0 393.0258949 2693.886271 0 30396.40966 29812.04932 0 0 233.6251633 8697.666557 0 7798.43056 32432.454 0 327.9963149 41744.89603 21084.69177 53515.73146 0 0 0 252.8191567 24351.30964 3378.418321 0 7879.755548 80.9583449 0 25125.22148 38454.97681 6735.788942 48477.6379 317.7911272 9923.733307 16.42094247 1723.415271 10178.23267 0 21.00902188 2335.633906 19990.46859 0.01534455529 5976.332195 54965.16442 37440.07196 537.4275837 636.4968238 9758.2567 0 28114.18814 1108.202039 0 0 0 14738.90077 45485.81944 86.32805006 0 4.728962681 8070.015675 42204.08822 25701.14318 3890.770031 4635.342964 160.5042833 8761.52644 4455.252938 7510.864162 23554.74665 0 50059.4417 0 7931.01652 4713.374198 6746.92979 1706.241396 30302.19619 1439.766637 2032.126372 19527.23724 25855.6114 5645.544995 21587.7307 43308.26608 0 4227.722343 3181.461975 22293.90008 181.2828028 893.0633229 1509.645279 33060.26556 15325.79355 0.537405946 33168.12814 34567.45482 5661.747565 0 11070.54103 20015.917 12862.07828 95.50497758 6336.391917 6475.517284 0 0 2351.093834 20301.56339 36958.59335 4402.600911 1305.033482 1265.589507 0 2953.795162 34273.98445 0 317.5068886 0 3452.952916 11062.72162 28694.34239 794.5504812 0 11914.78926 21575.8634 1043.194563 0 364.6596147 45270.95115 20676.19696 7121.296496 2453.639845 37006.22687 8238.435635 4891.416463 0 11373.18888 10123.11417 529.9975235 1773.006499 25460.88318 0 0 21962.12872 10274.07064 0 0.3016273191 1544.609073 325.8362427 2649.153642 6775.458775 22240.68954 0 9238.997072 0 0 0 6855.252693 0 27214.49862 0 0 7375.450511 5598.389049 2631.047791 0 0 0 43052.07578 3823.053375 0 2459.548173 15422.558 135.7172147 17233.64823 6495.611951 1674.246029 16653.35812 0 0 36.93625639 48563.6039 852.1193844 5906.508292 24352.35699 0 3787.922368 0.8560533555 0 0 104.1545742 0 9568.136236 2138.443275 0 0 7970.196986 0 3274.288604 26565.61956 0 8428.907368 0 0 0 1108.688273 15481.97231 35292.9958 +0.04953346771 15861.59123 364.9996178 0 4933.531931 0 1308.656992 0 4637.409205 0 61121.45293 6462.112217 141.2879923 0 78200.07064 0 0 0 2736.110143 8162.304304 20.1272035 0 8228.312269 19386.10346 4660.0936 29117.11511 0 31810.72692 23917.94633 33475.66757 1146.21608 68680.35496 8438.599919 0 3399.696412 16442.57284 13471.94354 2925.44284 12519.72377 3847.170586 65339.94504 494.2962335 26.35956133 6132.867153 2905.905129 0 0 0 0 4134.355219 6004.58383 0 137.9344429 12571.17114 0 13470.05667 0 0 0 0 45858.62024 0 0 35520.03998 9706.015675 0 965.3657744 18163.86952 5750.69569 0 0.04181909697 0 7487.955889 36102.15738 94.59729795 8371.98832 2436.89778 55158.76658 0 0 1310.406124 22764.79948 25934.05328 3508.559906 3418.915247 12878.42178 17546.69125 29505.29065 458.1310587 7176.366065 15835.69269 32598.55955 15788.88449 6789.614975 0 18218.8085 0 0 0 277.0750519 0 0 49493.99741 0 2641.229116 120.6485276 32732.2422 19769.01144 7607.645598 2707.204237 905.2012841 14849.87016 0 2769.595089 15825.84368 510.3373238 2133.458224 0 0 0 0 0 0 354.3755126 7561.825721 0 37644.24597 15849.0827 40610.517 0 0 17118.14123 3620.55332 0 3835.283766 0 1645.617345 1912.996625 2758.90288 27940.47966 11465.18164 248.3221272 13304.49416 6355.451011 0 2502.311506 0 33426.19928 7306.762915 46.77943272 12427.72817 6589.380812 0 38125.08233 0 6583.99384 268.4781274 5092.511638 20556.62231 14992.83885 2550.732087 0 0 14948.22713 4259.592409 20363.59584 32800.36393 0 40711.33478 9358.636925 47287.02985 28051.83054 70606.42429 0 12323.74282 0 19557.86864 14298.02667 53130.0448 0 21401.50576 0 2656.430236 18854.10158 0 82044.4931 0 0 6173.482052 2539.723056 4185.588815 13103.52928 33707.21972 0 813.916808 0 5686.535975 15721.8987 0 23186.31587 19.68689943 367.0696207 0 0 0 0 2993.423509 0 8777.83957 18806.33636 5013.312575 1988.497645 25067.82663 23173.99397 16083.08514 17488.46717 0 0 1584.928654 0 0 76.78019701 24175.37265 31729.41649 0 14265.51855 3870.040966 6124.283587 36902.6357 685.3977055 4412.634637 0 0 2723.097979 287.9805641 0 0 19384.8318 0 0 0 0 2295.284402 75.54059234 17516.97625 6286.815581 90.35114409 0 0 0 0 0 30094.70104 56.19169876 0 4380.107619 0 6750.053441 0 4121.631223 0 4004.943719 0 7640.021262 327.1143367 247.7317674 0 0 0 769.9849917 0 2811.030857 0 1543.342025 5030.912146 0 0 3170.095627 886.5426987 0 119.5192803 0 0 1810.981384 0 124.4743102 0 0 0 905.5346864 39863.45703 8775.329773 5337.152654 5871.885201 1461.949739 24499.38452 0 7174.828762 0 0 +0.02662095002 0 0 0 0 0 0.3731110662 0 0 0 1824.128424 0 0 0 1056.838694 0 0 0 0 3345.119466 0 0 61392.72658 7118.974635 5524.936729 0 4097.226898 0 0 0 42.70425251 0 32614.51086 0 26682.49473 0 6371.557604 0 24648.32572 0 298.7577767 0 0 0 18018.66492 172.6800525 0 0 4970.894484 32568.99541 0 0 63920.7922 43601.74556 19751.47695 0 0 0 0 14145.32365 86.63874293 0 0 28277.08837 4918.704185 0 445.9917665 0 0 0 27247.32191 0 35.29352989 1600.072188 2072.914523 4920.371759 2.920394168e-06 0 19626.43255 0 58461.17383 15016.90807 21974.76268 53948.65577 0 11453.65336 0 0 6790.409257 232.2583729 0 3949.997936 127.8757934 0 14321.3697 55623.76579 7069.821951 0 0 0 24814.04252 0 36297.72729 7373.216455 9047.453212 46688.42727 16592.17688 0 22625.44405 1373.829809 28.51714851 42944.55237 1850.313191 0 0 0 1601.903806 21163.87677 6247.693887 0 60006.38808 4216.320612 5802.379426 6567.411287 2596.811402 1643.320633 6089.175886 0 0 13701.92568 5404.627829 3626.801424 2294.712475 3510.508102 16182.09356 0 577.6710796 3983.265031 3310.88348 0 19539.9361 0 0 0 0 1157.731319 16779.02093 2181.068059 0 0 0.0408444854 0 0 15406.59946 0 0 0 64.45508145 0 0 0 9372.730703 0 4511.411781 209.2882449 7432.384802 0.03217832058 6918.4881 42856.26945 0 11863.90574 0 0 38824.32338 0 0 0 98.50864275 2.916900085 4192.684768 1761.467993 371.6786446 38620.24019 9.831237052e-05 16941.56001 4451.084459 2897.845034 41377.06561 0 358.440444 356.0727993 0 120.2840013 0 42854.47367 0 0 1540.687001 63.19086568 1856.764385 3943.267396 0 0 133.0411885 96.19989321 0 0 25864.53404 0 12342.99837 0 32454.60001 157.7204945 0 11743.13099 23603.89526 0 0 926.990884 0 0 0 30450.04415 1322.677711 11200.13298 0 47452.60793 38118.5607 0 2531.74843 0 0 0 3511.263045 18191.46916 0 29567.52 935.186715 33278.74618 0 0 0 307.6535631 0 0 0 0 90.2817257 70498.26139 12233.66775 0 6301.560187 10590.35721 66.23400058 12786.30288 3853.163266 67017.23989 1009.447801 2442.509167 81.52796614 1.066869836e-11 0 0 10148.21142 0 3092.723854 0 0 0 0 47026.57851 0 38409.80674 11973.07936 35106.72444 70245.50597 52.19601383 89.48831797 0 0 2011.88557 0 4043.342528 22608.39812 452.1472326 0 20818.40244 0 4763.737276 16350.59578 101.7254665 7104.441231 898.3165418 9694.473609 0 14.2428274 0 6806.41975 27208.54162 0 +5505.836104 0 0 0 1201.496634 1508.646428 3031.456227 0 0 3839.462678 13811.63747 0 3.094408217e-19 4224.818468 25739.39133 4181.374949 7858.274519 0 178.5996516 0 359.9901406 0 0 0 55.36911016 42455.4124 22551.16407 170.5376476 1693.208356 21661.70282 0.1056248494 0 0 0 11425.89622 24449.46128 3682.593679 10636.50222 950.8491641 534.1356725 8040.869482 920.8139544 17721.2604 17060.59271 8030.703295 0 33476.99409 2709.744046 12669.52993 0 267.5660593 0 0 1982.793757 120.2098569 0 6605.372908 36036.62421 10825.89528 3402.58356 0 1232.774424 6084.051132 0 120.6760772 0 3388.587336 7522.364498 0 3098.385103 581.682242 0 0 38714.88457 2484.729379 2299.316698 0 6741.595823 0 17452.73705 15468.55835 0 0 0.2717501521 21888.56779 0 1806.270188 25958.76104 15387.90558 37164.26261 0 3220.776141 38048.72046 19517.06585 0 0 294.1915465 0.3994719195 0 9606.494788 0 24179.50134 0 18109.66286 62499.02228 4962.46767 8553.816289 11527.79025 15736.3961 221.7133314 0 4116.081565 23.51262113 467.3375849 6430.994199 0 0 109.8007699 0 0 895.7678717 0 0 76886.82546 2455.768507 2867.232329 0 716.6216025 0 16102.0705 7.534180591 0 0 66945.74792 0 0 7544.356698 29558.34384 3512.033219 0 1763.243478 16505.29686 12534.8504 0 54.72426658 0 131.3034487 562.7424109 0 1006.896103 0 27320.90874 0 0 0 2677.336152 0 44083.69904 102.9257548 33354.51576 4533.357342 339.0646338 18357.46258 43799.79568 0 615.2716455 21104.927 0 0 32377.7787 31417.86745 39468.80166 5844.477396 49.22449322 25294.43953 25174.25573 0 219.362374 0 11084.37753 82.33337534 50740.65939 9982.994611 5376.196702 5554.778754 2107.036073 129.2998801 0 12365.66299 10953.67875 14913.11276 33361.72334 0 0 33252.38398 0 4631.937684 0 0 7417.776992 0 8646.605411 22293.27658 0 0 0 3232.705296 770.8426805 8283.994995 0 0 0 0 38942.36506 0 0 5431.130052 21169.93521 0 135.1851478 18953.84353 37348.79525 0 486.5251343 6943.252392 0 0 4073.409528 0 3266.843808 0 0 12877.29031 0 0 1177.952021 45610.34648 0 35.63539623 1950.085573 0 0 0 0 601.2483542 7993.18108 42.04983297 0 0 0 34803.34759 0 91.10660614 6664.549508 1446.921933 0 180.8526666 1733.090278 7096.937109 0 5443.405103 6039.718847 21907.77627 385.0988116 0 0 8728.641402 0.01440514763 2266.428336 506.4739546 304.7588971 3830.794273 1.365916297e-08 0 0 37066.27281 2407.12762 2254.101065 9369.466556 21160.92665 42400.00499 0 0 2568.491675 0 34503.17717 3518.851152 0 4549.083235 15749.77799 16400.66754 13817.02512 1515.310154 13942.40193 0 15936.68202 0 0 0 4680.384245 +0 0 0 64053.09076 18361.83829 3149.860891 0 0 22899.44295 8923.832977 0 0 0 4667.903922 0 0 284.2400078 3655.238386 42435.16867 3352.052674 0 0 0.02539374055 48725.98982 0 49419.98264 37554.44742 0 1952.025166 0 21876.63842 1548.229209 45110.28649 0 8945.960216 8890.143771 0 8847.512361 377.6719976 0 25319.99154 1904.73772 0 0 0 0 0 9126.202183 1552.629839 0 39879.02785 0 70775.56503 34073.33117 33356.43378 85.22811581 0 0 8.392436198 10622.40147 0 66.12929269 2203.00157 50443.0696 0 12145.3042 0 53941.12538 3586.995286 0 0 6495.271019 0 20112.51302 0 5617.895601 0 17440.54745 8320.616623 7239.026175 1499.271063 11396.32402 12830.02697 63163.59813 0 95.30616026 0 3105.217995 0 9425.538916 20720.07964 3.569362315 0 0 27619.28229 2338.983998 0 0 512.462669 11434.89611 0 7841.196469 39079.23084 5534.231824 0 33094.50519 18561.79853 1957.063456 0 53729.03182 0 27011.86254 7018.132058 0 6457.076486 1666.902837 0 338.4770486 1927.864151 31037.03797 0 368.5689421 4256.703704 4682.805821 56277.40105 41356.65717 6585.721454 64852.42807 10213.95396 48897.51528 5096.599402 18865.81127 9647.909804 4842.538577 216.1628271 64818.96425 0 5288.502901 0 10802.43077 0 0 1743.324672 4804.450933 44296.66829 0 5489.255775 3323.754695 1076.600447 23.86639733 3357.54648 0 43907.69656 2.281234662e-05 4371.427188 49998.70978 3642.854013 0 0 0 9010.063759 3251.13775 0 0 0 0 218.9620371 56006.25717 13159.80943 12460.67008 0 40496.40348 33029.09521 0.04573574704 0 1327.422857 0 0 0 58622.36518 44590.8925 0 2999.118406 8224.366593 23335.31106 28430.88161 33024.08115 0 22421.81891 0 0 0 8614.662084 9276.13084 889.7804201 1591.551767 0 1752.800567 0 3576.649483 1337.978312 1708.976562 5594.15765 7384.025565 0 6962.260056 0 1677.575489 9227.519369 0 13516.35168 18850.67735 6539.259412 0 27325.15519 0 0 0 0 19.68327342 0 146.8427288 3690.624255 10030.95336 15582.18987 6695.478139 22730.8024 5582.199033 51.84074405 3074.494193 0 0 0 2817.949254 0 201.9021161 38416.3044 456.8732563 0 1276.162888 3916.927655 0 7633.749954 19118.05086 6800.414461 0 74905.5136 88385.95347 0 0 0 2231.725183 3869.768046 25984.29624 3734.757033 0 61695.63895 251.3032845 2100.083742 1384.985166 0 9107.56173 0 0 0 0 1418.142929 5177.701926 9090.356396 3999.386661 0 46104.81 33603.87478 0 69.94453314 0 13822.40927 0 19691.31858 61721.94572 0 0 0 0 0 0 0 0 33807.55413 0 0 4518.18638 0 41.01400435 0 0 0 186.3934792 8791.962311 0 +7593.736567 38913.43833 2981.176602 0 34586.60008 1988.811674 21006.21935 0 40187.4743 5.342390642e-08 25501.51406 0 0 0 1.246788379 0 6223.684599 27775.26075 0 769.7536842 0 16356.53547 0 3404.095374 0 0 95.2388064 0 0 0 46301.9954 24057.58762 4192.340739 0 29496.18543 12696.86833 0 779.0543096 0 50704.45832 0 1461.479769 101.3675896 7910.601308 0 2147.158477 53061.96279 0 58674.42968 0 1644.46592 0 10124.07545 10252.44161 17076.3692 0 0 0 16419.02867 0 0 0 14808.32695 4298.975608 0 0 16164.75316 0 0 0 1320.616819 0 0 4677.794755 0.009295198227 0 0 0 8083.557758 0 43417.61624 7521.814189 0 8140.448423 874.8206417 0 0 26879.13777 0 0 0.3424487162 0 1706.794465 8758.654011 9357.87861 0 8070.383402 824.5664389 19507.81176 0 0 0 0 0 6252.741239 0 2791.223121 32732.30119 27644.24759 0 11647.77304 0 9555.103279 0 1323.783831 0 61797.36563 0 54298.40897 6636.900688 79.52994024 0 0 17043.18904 4809.172866 6649.222028 2942.932693 7853.400265 21437.3429 51108.06955 34277.5971 1949.936355 0 46097.37469 0 55.56301331 0 10056.44002 3105.352424 5121.363995 958.7735707 3718.958617 24449.26403 124.1432501 0 48221.95603 11241.69942 2570.600531 16766.00008 51870.63746 0 1839.343973 0 10241.3547 2145.977883 77902.36585 0 28056.81814 0 0 9814.516292 0 51496.63075 0 0 11080.75806 0 4513.777834 1122.370568 11717.80721 6.110061428e-06 31024.20997 0 4198.94266 5808.67785 20807.44689 2985.630434 6084.032935 0 147.945925 11773.47631 24870.09403 13276.30839 33052.01403 3006.024034 4905.99287 212.4258337 25520.0104 8477.174117 213.7417334 32070.13982 0 2210.312607 0 7082.569042 5617.551616 11771.04991 11710.67643 1180.852215 0 75259.86617 46495.61441 27420.5138 0 0 0 26060.47184 8600.176229 17494.22302 0 2581.986047 1123.201933 0 86.04938399 0 0 0 1279.893192 0 1776.18106 228.3334732 0 0 0 23398.38991 1967.500949 0 1059.12937 0 7671.688652 4663.588742 0 6883.566107 257.3904404 421.8437069 0 11696.0663 0 3097.850726 0 19622.81848 233.3968323 386.227049 7866.232304 6233.139815 0 3358.895091 37680.17601 6682.293678 12092.90291 0 0 14636.36623 0 13545.85087 14547.74299 0 0 13568.96775 0 42611.96895 0 15802.24067 0 1864.529728 8115.456843 14906.1382 0 5458.871029 0 20741.03886 0 0 0 1687.766637 0 7500.628724 0 0 79601.56563 0 0 0 41566.49878 0 0 0 17766.14021 0 35429.61455 0 6810.917881 0 0 25445.96334 0 0 0 0 22.18424435 +0 0 0 298.3347248 0 0 6265.150721 0 35269.38513 0 0 0 10450.83749 0 447.7111919 0 297.9298293 0 13329.75177 75622.94183 0 8626.687465 0 0 0 488.6179542 0 216.278042 0 30.93896982 0 0 1.653211754e-06 0 0 373.5275397 2277.94679 1453.285579 1719.787936 0 0 52.80101542 27900.69372 50542.71553 0 0 3652.393937 0 45527.09842 0 276.1370803 0 100.8299099 56763.39359 15095.71651 0 3767.964357 0 0 107.292965 28177.32124 1788.276701 24195.84576 0 5354.346152 0 0 3143.822073 22539.8581 12319.84029 547.0016077 1382.85874 57.41442562 0 22325.54804 4636.179641 35221.55741 21710.94154 0 10030.87598 39849.99819 0 0 49448.45763 16245.3774 11324.44619 0 1708.130419 63465.07919 25405.6318 18679.98702 0 4292.546543 0 0 0 0 8.080529866e-09 2094.394006 4605.140416 16688.81333 2432.976114 2083.533625 204.7094013 0 0 1.42067931e-05 7778.985496 0 104.0139748 2950.299693 9782.083968 10872.97918 2468.597417 42370.54125 5461.66478 59133.20922 0 39054.21826 0 0 3354.012662 4204.07293 1425.838797 1749.069945 0 27989.20385 0 0 4019.493184 3721.19364 0 11657.3927 0 5058.442496 0 3959.512907 24655.94253 7249.129583 33630.23921 46751.76989 2.667766065e-06 90.56313185 311.1826523 32966.95982 13461.02767 0 25057.89549 228.5079686 0 2018.907066 41539.99456 0 0 0 20505.2442 0 1283.55616 8149.000885 50458.66717 14320.57312 0 47.31433068 0 44734.89378 8670.499768 48253.32937 0 1160.046694 51277.33163 1125.34616 12490.73169 0 3614.193486 0 0 23514.34659 2.335277452 16876.43975 3894.459794 17366.56909 8859.951301 0 3602.73132 21741.61367 1082.733446 3294.783064 537.2383624 0 0 2362.685358 2413.997493 35318.61449 3551.263303 1940.635441 0 0 17869.1539 0 55.69701431 354.9712525 20624.67781 1021.549658 21212.09301 2085.570935 9200.852032 0 12804.10489 0 2579.039813 4.0588498 0 4466.111012 0 0 7466.08396 4017.714421 0 6609.893683 24918.71968 0 0 9444.902771 0 0 3271.417103 2324.46013 19250.23194 0 5081.189569 0 12958.24621 0 19657.76403 0 8450.743347 15478.53279 5270.681392 10579.09973 15716.75889 0 25646.0753 0.001683647354 0 3416.297232 0 0 0 34532.83355 5673.946151 11845.78752 10947.74864 6798.28653 0 2393.143082 1916.376472 1838.347992 0 0 30891.19188 0 14642.53932 0 0 4277.750321 0 235.3803857 4546.294674 0 0 0 0 4626.418594 516.8113882 3698.035756 831.6792154 25908.54463 3537.067196 0 8510.640843 0 934.2549968 0 0 0 0 0 20.93519885 0 0 5287.064539 0 41301.71716 16010.91907 117.7754475 9594.052057 1262.729122 38.71291389 5547.164229 813.9032857 +4310.775789 32289.80373 0 13345.45102 6860.138556 0 0 0 39028.12656 1946.932288 0 5560.940104 0 17245.26415 0 329.239511 0 0 0 0 54272.4452 11101.02182 59.83273469 39127.41246 0 0 2269.54486 0 20458.51219 174.1120239 0 0 2231.919477 0 0 149.1728225 0 73.72147354 356.2334017 0 6525.966016 0 965.0067542 10590.80035 12880.35941 0 4274.818036 321.3447345 16559.16736 0 6851.699635 0 0 66.55881392 0 7818.918164 2536.944012 1364.0917 15194.97591 24672.73902 1974.703784 0 79109.1426 0 23736.6062 7.892993616 37436.4463 0 252.6001395 54127.96135 2105.877675 51226.51809 0 0 6553.860553 25810.01442 41.01808394 50733.49179 0 0 86.93210327 417.188767 0 153.2502158 43536.23153 5904.002981 834.6924665 0 9360.089116 309.0862569 1101.689328 0 0 2072.268536 0 316.7840703 0 5839.791286 0 0 0 3028.728017 32660.72785 12568.28246 9628.456263 22175.9916 0 328.7390222 3577.794237 0 1381.804232 0 13084.23541 10013.91639 14492.10833 3247.758697 50177.44846 0 0.08899640195 1915.65107 0 65755.28047 0 60629.97174 5553.71982 0 1697.091772 0 44181.20198 29105.18301 0 10055.72646 0 0 0 50084.76752 8263.233651 0 0 27043.3797 6696.708263 67.5623196 0 1.151551055e-11 20450.53561 11700.63009 70616.3249 15330.62389 8588.559297 16764.5639 0 9981.566764 0 27162.13457 6774.840549 1682.548678 11.37901739 0 0 0 10896.73632 10079.55752 0 0 0 4131.48362 2327.805282 0 0 0 0 3723.708393 32883.63651 7846.867406 31604.70287 4910.555933 2860.941194 235.8808302 3998.142939 147.5171606 52.36003393 4244.217138 16527.97177 0 0 0 59511.09961 21461.32665 19395.3541 0.001470286379 3094.837964 4315.429373 0.001299065771 0 9298.705608 3964.129242 0 3262.766991 0 5725.508803 42034.03162 0 0 0 2141.803486 6932.75001 10218.229 15084.71851 43112.5603 26625.8548 0 7587.263039 9393.187725 5217.265386 0 33315.83989 460.6351728 559.0213936 2370.741129 3765.317998 9746.36852 29934.03761 0 0 3246.686612 3243.695595 56518.95901 7574.751547 0 0 2583.898375 0 0 7275.274559 0 0 32629.02927 591.9009053 37518.95421 0 51841.1288 14536.96474 0 0 0 34597.39829 0 0 2167.841893 58436.30512 0 0 22176.01204 0 0 7630.543928 0 9308.092607 3849.086868 0 0 10699.3603 17663.35996 0 0 0 0 19783.70936 0 46.33981367 0 10732.93794 8234.453812 0 32.56917314 0 1477.278687 0 28330.85911 0 0 3330.417972 3286.486752 17258.73851 0 9644.104823 105.6736046 0 1234.653264 0 0 0 0 4022.307004 110.9671694 1494.344529 0 0 0 0 +0 0 602.7722531 0 35403.61799 0 0 0 40742.46617 382.7654632 0 49162.53009 38965.45897 0 32927.48527 0 39861.70213 0 1671.509943 0 0 0 0 0 0 0.4829182401 3815.34077 0 98.04197097 3218.709912 40277.5624 0 0.3813017057 2557.958984 8746.962209 5717.489006 0 0 0 0 0 19596.6623 19626.42213 32864.33888 0 0 1204.671383 24660.05315 0 19343.90344 0 0 5580.661016 36196.43434 0 31493.38725 55976.16115 0 177.0278758 5960.080319 277.2035412 0 0 12572.13346 0 0 16847.22048 9227.447754 0 10444.06111 50536.49805 7874.843714 0 741.625027 27144.78137 1.967170943e-09 0 0 55.19124238 50423.26176 0 35214.06138 0 1780.856081 5449.444106 12.28147416 33811.82715 26.4703809 11499.56545 0 11167.3192 0 37794.9914 34558.78225 236.5658945 1397.206918 0 11912.47302 31599.21186 57098.8872 0 2581.477936 0 0 53865.32524 244.2091971 1973.864314 0 0 59111.68834 0 2977.969121 0 17577.02713 0 0 0 2337.440746 0 0 0 64339.39875 0 2145.244941 181.83859 6828.275376 6233.66637 0 27240.63241 13086.25111 0 0 25931.629 3704.25659 22391.05677 14855.90343 0 1599.175891 5852.34097 2614.111371 3030.562797 0 310.5983247 0 0 13920.77801 8007.603211 30338.04714 0 6753.959181 67166.4534 42411.92115 0 10169.69705 42775.44275 0 76576.67457 46030.03504 9876.655159 0 46778.53863 69.1405876 22145.11823 57811.3605 0 0 1.787944788e-09 3540.006563 8982.539114 0.002353280751 34036.12345 0 0 3881.179065 16442.05572 0 0 0 62072.15341 0 0.001251717806 6414.25698 19920.02846 12888.63801 0 268.4035202 0 6331.831038 24178.28329 106.5019165 0 26822.0467 0 26.53826805 4062.636552 7397.473463 3857.439589 13297.65812 0 0 0 0 12574.59671 16463.60547 0 11200.66752 0 4586.388981 3395.554675 1453.291664 9216.974608 6340.234895 247.5126352 0 0 3598.585873 22845.28888 4742.18119 0 27677.69364 0 732.6744895 43941.77907 21007.03648 0 0 469.9425009 21754.42571 0 0 0 2999.106463 0 0 3932.963534 0 40809.40916 22796.69869 0 0 0 0 52882.43437 0 211.7552807 0 29491.47352 0 0 0 0 0 542.0953299 18084.84974 9976.407069 22.67378742 0 273.1198667 2565.386577 3997.834455 0 5453.431559 16671.04598 0 9208.730562 16155.15574 15913.9357 0 0 14108.86967 0 1435.927836 7336.085735 1958.777226 0 12462.24632 0 2854.055093 0 6737.589951 0 0 12892.67896 0 0 0 0 0 0 0 1663.403434 0 0 1616.119065 0 30933.72392 25478.68339 0 14370.84447 3.828531192e-05 +21.17877461 0 1099.296797 58.65476223 0 11113.59302 0 7361.541244 8386.957867 0 10352.96573 0 3297.916896 13647.57383 75519.95586 0 5688.366252 324.0892144 0 39409.24195 0 0 6344.713142 0 0 0 13868.46627 6944.533736 0 0 1373.858157 0 117.6185577 0 19354.43107 20331.66225 0 411.8265093 6322.896364 0 0 0 16496.68104 0 36943.87312 0 0 0 0 2271.768174 0 10299.07215 13384.99878 0 2249.493638 44417.21962 12752.1821 11037.02933 0 5718.101682 1426.895851 0 0 0 17245.28037 8479.903577 0 3194.680317 0 0 0 0.05038741633 0 2.244079668e-08 1913.199819 10492.59916 4.591655871 5146.766265 13262.64399 0 2055.142572 0 0 14175.39502 6681.631867 110.9114368 0 0 19049.72342 5499.077631 1417.795347 1966.641364 90.58872241 7451.004439 97.61483168 17153.98538 11.05903491 10819.58594 3602.446585 55468.88965 35408.90426 0 3996.006715 0.0001797176449 0 37543.89331 20174.60502 0 0 8560.554348 0 0 0 13646.46432 0 0 12994.71491 0 0 254.0631702 0 8963.658667 0 801.1869499 0 52140.0721 9256.671071 3300.811754 0 1658.485657 24229.00187 956.139356 0 1101.007137 1680.204616 0 25110.93908 0 53821.13139 0 13560.47776 0 2.021492186 111.5299907 1.24578697 33031.40434 3164.861106 15435.81514 0 5336.321528 54683.77271 24256.6498 9035.951575 3632.638886 2556.602117 14618.03636 17023.23924 10161.00885 0 3943.761294 11103.03098 21380.82179 21031.59296 1582.201434 29073.0703 0 13691.58063 5516.657832 23946.47199 0 0 19219.57796 0 31936.16459 0 0.01701692638 4398.245919 12773.05328 1707.496416 0 0 2429.751763 0 1665.639105 0 13805.46558 9060.852645 2612.254739 25.57844716 0 130.6423223 2796.513601 809.0456698 0 20088.14852 0 37538.46 52088.24427 2553.915319 1765.221044 46822.65174 6918.000772 0 0 0 0 0 3278.355416 0 246.3472558 51563.51073 0 1240.61683 19721.37786 0 0 4343.744667 15711.12845 0 0 4554.550383 745.4103952 68.71474141 0 35658.03564 23071.01369 16.69282822 1048.529097 0 2531.304826 23793.76757 419.9685598 0 0 4198.150288 0 0 0 50447.79491 1768.167383 1710.083232 4867.279334 19979.39332 14877.49557 0 0 0 4840.757519 5177.836963 860.1180588 9045.885779 27176.82963 18599.60111 0 0 0 153.1260177 0 0 7229.864925 0 0 0 7307.864104 8769.932524 28827.49177 0 0 10909.13166 3966.075983 2510.62237 120.4325476 119.8397434 0 0 9017.560498 0 3292.061394 0 0 0 19636.02144 0 3376.85593 1755.833017 0 0 0 0 1373.8585 0 0 0 0 7991.01405 30175.74538 5183.289901 37.94751753 0 988.9081845 +0 0 0 0 4255.109269 23049.53437 5658.973294 19694.13017 1186.590822 10474.54826 0 0 6069.20354 4907.517072 26464.55726 14397.38051 0 0 2862.602156 3031.066903 0 706.292827 48.03895288 42162.50135 0 0 4813.07206 4214.40243 4775.274514 0 3046.132872 0 4011.418166 9593.726074 5099.990056 15272.97076 29121.63078 8228.946989 809.9589462 43.46344447 27741.66365 20.83226318 8444.218877 0 0 61500.41699 4302.33295 2178.613979 35157.75508 107.1935105 20653.30373 0 64866.22665 1591.494525 31691.28775 1294.359323 52279.36382 0 0 0 0 23677.35378 3081.36849 45151.96106 2919.639045 1580.225996 4980.282165 2848.471345 18239.54612 16093.64972 38630.79562 0 0 21296.50069 4166.959752 0 3834.269668 21053.47503 459.3960258 0 53715.92997 8618.570217 5514.054062 0 1156.327644 392.7276826 11489.56471 348.4469528 12961.08335 4570.595816 10494.15318 1616.138087 0 0 7859.166998 6.789590144 46191.8981 0 6448.149983 6509.713869 7001.710095 0 29597.8937 0 0 9359.224141 0 0 9258.466857 839.7019902 0 0 25731.70562 0 0 8342.413733 4078.805366 39609.99747 53760.28419 0 2718.531669 38685.12245 0 5882.646743 0 0 12591.89573 221.5538514 9793.188483 5290.272994 0 6569.476139 0 810.8613732 136.4266606 3122.39028 0 0 13658.89148 2230.5584 0 27373.57842 11042.93633 43170.88338 471.2522648 4350.400464 17204.23479 0.9933016572 1763.553797 27771.69194 7798.885288 2516.510481 1836.023153 51117.06927 27389.44319 3768.214948 12210.29906 35119.16373 0 0 2738.492792 10453.4218 58357.22585 0 21682.48671 0 13283.48766 0 4324.816159 12649.61938 3866.822694 12302.87727 25495.11544 0 0 0 2732.824813 5256.238792 0 0 1568.78546 11372.49359 9944.30209 2329.295019 5442.71994 2773.274561 0 12557.7658 33560.89667 35860.14697 54413.09165 23532.69251 0 482.0429838 0 0 0 9366.076082 846.1199324 4431.200092 0 0 0 42416.91531 0 922.9641918 989.9079827 19810.80023 27492.99628 6474.12903 1738.91149 23549.71963 2581.922259 109.4551474 0 0 0 15465.25065 3932.879363 794.9315397 0 15191.26892 0 0 1792.815281 3946.581262 2226.73725 0 1441.487019 0 0 1969.009228 7830.315441 3462.569617 4506.034774 0 482.432261 15005.14855 43.97291057 0 57657.5575 39.27376179 0 0 3053.105311 0 68453.38948 30804.36034 0 6152.951392 6176.39972 161.9820007 0 0 0 0 3281.6685 2618.601155 55.61347382 7918.398551 33474.33513 64375.86331 14381.00889 0 17081.84633 0 9402.341128 0 8042.437068 0 0 0 0 17363.06316 8908.693465 4871.053373 0 19258.6753 215.8520178 21039.58918 0 1817.546894 11049.86277 1055.645811 0 117.9887057 0 0 13644.71335 823.0703529 1.286001112e-14 0 0 37220.90178 0 70.48153579 16573.37535 2701.558503 0 0 +24727.63461 0 0 3590.152206 0 22345.32557 0 0 14440.33683 190.90036 0 0 0 0 0 1165.385513 4254.863208 63485.42607 4013.591908 19193.06817 0 65.80864235 0 391.8409136 38520.41745 4011.781845 23.97487409 0 0 0 2324.29865 0 0 0 17180.26384 0 20908.02364 1354.579214 3714.363503 0 1770.490425 1890.61555 51.65105559 0 1148.973972 0 0 0.0039437354 0 557.4546478 0 0 0 0 8762.80862 4236.389746 19042.37111 24679.48335 3009.461221 32629.96091 24646.66393 61392.8065 0 2064.335015 0 0 0 0 0 0 0 0 12671.35385 0 6284.252261 0 8372.20616 33366.8022 0 41549.73571 0 0 296.1197117 49300.57423 15129.36743 19789.23972 0 19449.21796 0 0 212.8525108 2626.619089 2038.577682 3044.064787 0 17155.51296 0 0 0 0 5461.654599 0 10071.56827 0 2.631881705 3098.955252 32195.44551 15.38977739 8805.175211 0 4869.809269 0 2491.115413 8097.659376 11359.01622 67706.89463 37116.63767 4603.838822 64603.88632 8587.766463 0 30598.22652 156.9609614 9503.242989 0 0 18624.10049 0 237.7015791 0 0 0 12727.36275 25282.69688 1649.496689 1708.777967 24740.8968 0.0008691503979 7298.259472 0 3041.71396 1567.1153 3764.686264 0 1463.695846 44416.65431 0 0 0 2411.510386 7683.115957 19020.36702 47244.5015 56756.23373 0 4424.648311 9616.54304 14128.07783 21924.2081 12228.13 0 26131.53181 17104.89679 7092.796953 0 5340.690636 5565.320447 0 2998.81063 18838.63297 4182.04299 0 0 55756.55201 0 21955.81341 10627.89581 8303.130491 34636.52754 40.01120048 39.57656366 12801.11095 33.35845479 28432.41426 0 12155.40379 0 709.647066 3069.076707 0 0.02607219016 15814.67123 1275.971525 41636.63504 47682.34163 0 0 2654.778966 36.66445123 0 0 44748.19413 20519.13137 0 0 0 0 11239.19131 1261.969943 3165.556199 8396.081157 0 55665.01151 0 0 4868.733392 15203.49247 5776.708893 0 9822.054967 0 0 5269.749253 13274.50775 0 0 0 23739.22447 0 0 0 0 0 0 58748.50024 42702.00568 0 0 0 12162.01174 0 3290.461634 274.5395885 0 0 45056.04232 1842.670089 7294.019227 9728.973395 123.8337711 6068.100225 0 0 0 0 0 2005.394066 0 9565.305405 0 5254.416581 0 0 0 0 4739.533795 0 4063.552416 2109.370715 783.9095736 206.2406371 239.1459784 7110.169328 105.7360067 2880.189159 0 1002.325167 23118.48491 0 6716.67626 0 0 3314.959471 3081.647617 3099.341237 1041.800818 323.4492347 772.1816187 0 5634.858755 201.286953 0 4510.118915 15391.52209 6002.02388 1444.021342 151.0761254 1344.385015 4423.511184 1019.776643 +20270.63524 847.2183016 12416.8709 0 31052.27375 0 0 7331.507804 0 0 7567.124103 0 26435.9754 7446.54285 0 18491.11333 46288.71266 17169.13477 0 1842.447504 7.46830518e-05 0 0 0 19569.39405 0 27.54441115 74.38132995 28408.54878 8.315093449 0 249.5436699 44694.22458 4522.344005 2540.567772 0 699.1773283 1538.157367 260.4366736 0 0 42459.65345 0 0 4442.749649 0 9626.893768 628.0518876 0 0 0 18867.71257 0 5970.945674 0 20231.90153 29766.31025 13831.68481 19538.93316 26954.5396 0 14167.8402 379.136954 0 10020.33404 219.9589222 4360.578805 3205.596092 801.9003635 13639.63455 7859.596664 2033.806917 0 32078.2266 0 1578.452446 29467.82769 0 6697.560345 7517.989222 0 0 0 0 3989.618879 5191.303612 38.07606311 11897.70384 0 321.5111429 8137.419491 972.5185198 28102.81281 0 40137.15159 20154.67372 67687.32008 2137.301719 0 0 285.8000612 0 762.6619331 35945.60104 1973.50583 2916.963468 32795.11805 0 0 16718.71888 4300.018327 0 12113.14632 0 0 3382.355964 350.9537338 23486.78347 3083.914822 1222.416802 0 0 2254.362377 21684.89935 2721.792779 207.7043782 574.9778095 142.1150757 9914.541848 31801.88531 0 0 17705.11368 1313.353576 60.03571059 63441.59787 0 24393.37483 13135.80103 27507.29532 7908.412687 0 50271.02748 0 3173.213414 1404.302784 3985.677395 48609.50777 0 10882.59653 3554.049017 64.65389224 0 7599.260882 6625.424551 2487.850312 0 61898.84295 0 0 1402.5268 36465.6222 0 7628.089048 18634.68933 0 0 2684.107825 88.3601209 0 4135.932514 0 0 14091.94369 23651.50414 0 0 27234.86907 4801.064051 0 0 58865.25128 69.15701064 17846.22327 0 10627.69344 7465.556802 0 0 11820.46556 66.87391985 5344.861146 0 38.81453512 2129.673183 7686.98839 884.7122992 4804.845516 0 13524.09842 4705.523268 0 4125.704239 10599.62389 17981.26228 2260.033367 0 113.8848884 0 0 207.1322369 7407.133586 1140.736703 11470.95886 4603.392641 28774.84957 0 0 1607.042721 5603.353643 0 0 0 0 46714.40052 0 0 0 0 0 12458.28894 19018.44728 0 43304.04534 14808.50795 24487.1695 0 0 193.5240483 10160.51669 0 21834.73351 0 12383.05703 0.5675864944 0 0 64.19470138 13321.45131 0 0 0 0 0 0 6408.162938 7711.116116 0 79.78481128 0 56284.9677 2136.364977 0 0 0 0 0 2276.475122 0 0 6552.511517 8278.543764 4521.546051 0 0 1731.852478 0 0 12769.18299 7492.745934 0 0 48196.10554 0 1006.255529 82.24570404 802.193653 0 0 0 17452.51389 31648.96849 35601.44415 0 3111.549358 0 0 23721.00357 0 0 +2064.879389 14177.66403 0 5061.650074 0 366.0149287 0 618.3454096 2403.178443 56.57341034 0 0 30500.54954 24046.17556 0 1901.059874 0 0 0 0 0 0 18590.29125 0 0.4341823824 0 20934.34248 0 4809.453163 0 0 4790.723936 40212.59524 0 0 6483.812887 0 5575.763445 3610.249622 18982.21719 326.4915619 2223.234898 0 2977.315049 12305.9897 518.6461654 0 19799.37327 21317.33622 325.2646056 2003.981315 0.08725733196 29315.88068 0 0 0 0 2903.050531 15113.6002 36407.91694 0 19744.15175 61261.89873 0 5919.008345 0 28045.81075 10468.61449 0 152.2488428 18735.13145 3354.217153 0 31497.17353 0 8570.308848 2773.793274 5533.92511 8191.133864 10967.02464 0 23242.84688 6903.427659 0 0 28662.66283 1971.744098 18437.65687 0.2716804392 1496.482707 0 22429.73468 41904.62783 3074.510812 29766.98312 0 0 3744.920917 0 43725.0545 10924.9386 6298.805415 0 10034.06317 0 0 24911.87554 0 2052.281094 2042.626011 8633.08516 0 23321.11507 25389.23328 22357.89703 2493.054733 2398.195584 1106.316722 54211.2758 0 2289.790292 64657.61417 46608.68628 35582.23007 36963.7565 588.9583214 4373.399935 2982.682128 0 0 47176.41712 38037.01552 5624.84999 428.7356615 7269.323201 0 444.2642381 2524.940788 10954.96539 402.9796064 0 446.4623105 51272.0655 37133.72726 6.863727631 9589.987654 0 0 78.1794117 12670.97608 8625.237915 5841.643075 0 4301.741172 42379.00843 1417.531566 138.9660681 2995.500017 6735.524631 0 0 25132.68699 16396.60042 13690.11202 248.8440218 26645.85105 0 0 995.2347464 3079.029857 0 0 0 0 0 139.8746528 0 45.54165273 0 44.97241526 17776.42147 5149.842615 0 0 8175.930688 0 17351.68247 42459.62595 3462.073771 57.30069626 0 18266.88512 35742.3773 0 0 1887.927441 0 0 19734.83099 25837.02802 0 25339.26816 11156.89592 72.07296941 0 26316.83474 46944.79545 51556.23033 64671.03386 9524.89315 22733.4526 6090.756904 0 0 11271.54243 0 2801.549304 0 0 4477.718277 1724.056836 1078.68897 0 37830.54618 0 0 0 0 47040.02033 15473.17003 0 0 0 4034.935795 1243.777395 2930.265973 0 2232.354198 0 9563.215559 0 0 22873.25517 19986.44617 0 2198.512369 7828.471515 55935.70956 2121.834775 25914.88583 287.2646721 0 0 0 0 204.3995014 27792.30409 4102.707165 0 0 0 2176.113813 4943.473378 0 6968.03114 2463.33915 18271.18398 0 15023.86115 0 4366.082086 0 121.8067681 3012.256042 0 37918.9407 0 15145.72412 0 0 0 0 3366.321015 98.52488412 0 0 0 0 0 0 0 0 0 2846.730186 13338.69709 0 2385.101179 4923.147115 3776.13968 0 +0 139.628564 1441.185967 0 2921.835974 0 27272.19553 2139.88015 0 5610.860701 0 2988.845363 0 0 13083.47552 17586.48584 4166.272621 0.0001994165626 99.97586693 0 3113.963181 0 4184.73817 3824.530551 0 164.8399596 0 35461.24819 6499.595107 44892.549 21702.66436 0 542.8803863 427.8053606 0 0 0 0 2561.882788 0 0 6941.127009 1385.10295 2380.391002 664.0309949 0 13433.29066 4615.445139 887.6609485 707.7589383 3823.257156 170.050838 0 17708.45065 7524.753314 31265.66604 0 0 0 29916.84477 0 0 0 0 0 0 37.07647879 0 0 1347.194572 337.8736805 34016.60413 0 0 3162.832065 0 0 0 38.22875859 0 525.2464492 668.0573699 39659.39126 0 0 0 4693.648232 0 197.2986476 0 0 54302.07253 0 6278.000001 21803.86354 16116.59255 0.4504204844 7787.757646 1441.376439 0 38895.7543 0 0 12463.75202 30556.09229 5043.734608 8030.052845 2397.027307 0 9359.830558 29097.44925 25612.22214 5030.929555 8620.47965 8566.197398 0 860.6566372 11392.26636 0 2806.872602 20216.62453 0.2422412919 0 0 130.3954183 18960.00523 35375.03358 9602.485213 51093.76777 20767.79349 17433.74556 43385.68689 0 0 0 44570.59804 14666.74611 195.3063995 0 75.17982334 4320.722495 26246.37967 11772.80706 0 22112.42679 52382.98915 0 0 13837.05601 0 468.656344 2530.79743 0 48.3369221 0 6204.361044 329.0476178 6247.295252 0 0 7998.256521 32380.57193 47452.30487 9002.10112 0 0 56877.01942 28399.63143 13925.8054 0 6428.804802 15595.95388 0 3.270160009 0 0 304.2762062 6018.722467 1075.266288 11152.73273 0 30420.26587 0 0 1541.969189 1887.425794 4835.039519 27780.34831 45486.49097 0 10162.4537 6629.6152 27466.33849 0 41416.31364 0 0 0 108.1572655 0 0 20112.79031 0 39169.02367 0 0 20578.09616 378.1860046 23127.28439 4093.912628 0 0 0 0 20005.40281 3643.76277 0 20909.40031 0 0 502.008481 6825.398974 3333.477694 0 0 3414.577143 2097.807442 0 0 0 3558.687086 312.5951772 7695.828557 14755.16926 21728.87389 18880.68666 0 0 41981.43841 3965.300031 0 0 3445.975905 0 0 0 0 2309.837769 53165.72626 21190.82077 0 0 0 32051.06517 5595.309822 11102.0503 0 10730.25 111.9950691 10877.77033 3951.793236 0 0 0 122.1110535 194.4507303 0 2637.047219 0 0 5608.807445 0 56.6804937 0 0 3997.20803 0 6799.843507 0 0 0 0 17174.6409 10092.28022 0 0 178.2533899 3900.05318 9418.133865 0 0 6588.503329 51.97410613 30781.35383 279.7578298 128.5645645 0 0 47.78483888 42854.15511 +0 0 0 44522.33187 9626.726283 0 0 0 1098.18238 16587.62888 3366.733915 0 0 0 0 0 275.7479605 7752.152205 0 7096.004927 8593.057629 7.869253633e-05 0 0 0 2326.020807 0 34491.99142 1290.958687 5280.49738 42949.04678 2915.609772 0 149.745255 4048.20488 2996.393508 1417.357617 1278.51157 4391.050482 14506.02074 0 0 557.8454062 0 0 17216.59303 0 482.881762 0 0 0 0 7282.892966 9297.598012 2897.588465 17437.0952 0 0 0 310.0693868 0 13561.117 0 263.1425206 0 40986.73738 9082.610891 5307.026375 7173.102544 0 12477.76078 41888.11737 175.324538 2679.316678 0 22514.18224 470.2993021 3976.658676 59077.56928 0 0 25668.53762 12707.03276 0 0 10521.93374 2674.807803 1377.36967 6378.522329 20845.05787 38597.34624 0 24020.63681 19325.9183 3176.410503 0.01464479167 729.1925744 19545.44252 60437.01724 60.42465642 10119.11371 0 18349.14696 18815.90411 0 2264.575899 1989.910435 0 0 0 1181.404516 8329.097032 354.8568668 0 7367.924161 39437.60344 4725.248006 0 1731.074675 1502.440392 0 4040.864355 41792.41323 0 28322.59931 29370.68334 853.8654801 24044.70806 0 4188.235891 0 0 26483.19235 0 57933.53129 53609.67988 1905.498011 0 8673.343045 1995.302735 23373.88319 3254.94869 0 9237.132286 32200.44248 64504.27802 8361.306757 0 6704.06626 0 59149.77538 5356.823491 2502.586521 26493.87058 7222.709296 56873.93451 28773.79575 0 23561.41952 25109.44328 0 0 51283.87116 0 0 15.40354483 23801.48583 0 11741.28227 61467.66121 3295.583734 23336.09708 8523.403471 43670.79657 0 0 31496.59186 2.144347788e-07 1692.113723 0 75891.46659 0 0 11185.12735 0 0 18149.47584 0 9452.31775 0 134.1032832 0 0 0 1911.56816 0 10.45280974 0 10910.70048 0 0.001724664668 15756.30648 8501.374104 732.2234953 2996.30771 561.6592326 14888.75285 0 3115.159385 0 5690.700448 16073.12105 0 0 21884.52208 73813.30312 0 3489.594854 0 0 6113.278348 122.4602836 0 52838.20811 33446.38112 1943.877497 1850.363824 1942.177127 0 1019.348936 3118.564395 0 0 7.737555296e-09 12616.15718 2270.357658 6858.600489 9684.683799 0 0 50.16745563 8919.990483 56860.58176 3590.245924 0 25277.79022 37122.28915 0 446.2582059 2563.575488 1298.773436 0 5670.023158 5459.494171 2449.541608 0 0 0 0 63.81621438 0 2988.746633 11267.1304 2692.845334 0 11152.19869 213.0052357 0 1768.234483 0 28955.05982 0 0 0 12873.43481 0 40894.30885 0 8831.891126 3052.849081 0 66.35864009 0 0 18005.71386 0 48829.56294 0 5266.173584 0 0 0 0 57489.82828 0 7563.28601 1208.718052 9611.532161 4710.561359 0 +4909.384475 0 29384.40302 0 0 9207.693123 0 0 0 24383.04415 0 0 0 0 0 27637.21521 0 4242.178754 0 9444.041311 0 40765.71602 0 0 0 18942.80354 2975.675132 0 87.89369959 0 0 0 927.3424888 0 60942.77101 0 0 0 2116.434346 524.9762605 29.95380462 0 0 0 59061.26894 0 0 27356.61183 1857.386804 44583.11832 0 0 0 1156.269658 13159.24881 1119.581907 37284.33213 3312.684857 44633.63127 0 142.9561896 0 28712.85892 0 0 15984.11367 0 0 31641.39678 0 47.61311148 0 41300.67671 45879.39488 665.1501579 0 0 3161.357439 1563.078358 39842.30831 0 11696.93993 47633.25982 2890.637315 46608.7802 3.356957475e-05 2213.064373 3513.658026 2669.39373 18876.83526 2635.186605 2281.709035 0 0 0 0 0 6961.464763 0 31053.05141 19743.61262 8462.261971 0 16052.62145 5075.727301 0 18105.9514 51996.13129 9174.903119 6381.457156 13575.25474 0 0 4557.316659 0 0 5271.857436 0 14096.05184 0 8666.38181 0 0 11588.94207 16385.51933 0.03118038992 43.51558585 551.5202363 0 0 51097.81998 0 0 26990.26611 51467.95137 29556.1799 4.120304112 2730.76301 32423.3188 30.13507801 0 0 12731.64486 6216.878503 12147.05329 8136.91442 6120.172032 22888.578 7517.15199 14012.87463 660.4165036 0 0 0 2207.466176 868.1051483 4807.672946 0 0 8139.556279 29989.69819 10759.49564 71950.37314 0 9331.647014 43366.5434 0 33859.92661 4814.968271 2973.124845 1723.744946 0 0 20466.5893 3890.587167 6819.649535 6360.52635 9190.867239 17652.81521 0 13477.18964 9549.592338 2049.216347 0 0 66340.40444 2824.198486 0 62.16492123 126.0329933 18124.20361 0 0 5523.950364 27.36370592 0 5066.15073 13239.30988 4363.733753 9391.215576 0 0 7159.668153 236.498745 3336.367371 2199.318397 0 2250.25055 15864.37097 0 38587.89097 0 41.57497324 209.9405163 0.01872843435 7057.093825 22708.68102 76.36204949 0 3611.14732 0.06515869996 9018.785693 17980.46584 21681.68358 0 0 12351.60305 2031.450637 0 0 0 0 0 37397.67683 0 254.1926058 37579.09712 0 0 9816.450512 0 2048.802388 0 10663.79872 0 0 4977.882583 10101.87122 19527.89109 13195.7093 4381.710495 20279.63328 11545.47617 3020.585029 0 50326.16931 4839.488026 38536.4942 0 112.9218451 0 0 0 0 2569.273612 0 184.0165384 11512.07983 0 0 0 0 27720.48531 274.4938598 22.63302001 8390.272967 0 1985.505077 16648.1602 0 10691.9065 45819.60164 0 0 0 0 118.1798876 537.1962307 5185.522238 542.762605 0 0 6.888274053e-06 22624.70792 527.0390496 0 0 0 3796.014455 234.1766309 +2109.479781 0 0 0 16385.73343 19692.15453 0 45356.36822 0 4916.213268 0 3019.473877 37928.56798 42080.01343 2784.605777 0 0 0 0 33339.12123 0 0 155.3675738 7159.664408 1439.759487 43062.34561 3423.940069 45392.81206 0 1654.529912 41764.10172 0 0 5.535746854 0 0 0 13450.17091 4557.485191 42.36735903 332.1362626 0 29877.02334 0 167.5234869 24712.28204 0 0 0 4746.839061 26532.55418 63.97755571 0 0 0 0 0 0 0 0 2220.647752 1394.14412 19816.14563 12892.42839 0 0 0 0 23473.51599 11913.59166 49471.27581 3100.363032 25619.21209 7453.679098 3539.108866 5936.601194 0 660.8179922 0 0 27409.43007 0 24111.46712 44820.68458 47901.50249 2379.659133 0 0 0 9637.86176 13519.14954 47.48172679 16075.16844 0.1917353206 0 0 1569.480012 0 2916.173237 1809.165629 3191.620133 0 0 0 1340.98391 16.35843986 3167.465826 0 2016.226698 0 0 26177.86121 18395.10683 83220.46027 15801.72701 797.3964522 7736.476313 16753.24076 0 0 35501.82142 0 2701.792125 3502.990314 0 0 63871.66084 0 0 5777.383321 0 751.7435136 57616.77393 54383.07388 33677.27151 4963.260824 0 0 15929.81163 33585.95428 35405.51839 0 0 78.7360412 26590.58577 0 0 5194.702906 4991.959277 0 21757.61429 5.153265472 0 3866.737664 10133.93523 1747.433973 0 44084.08974 0 16746.49521 0 3465.966966 24705.45191 20965.36937 0 70829.68758 4937.164927 6.04885357 284.0176388 40310.26351 0 4262.105424 21557.44212 0.02382694168 3372.443403 0 6.040946582 2025.166036 10945.1465 4717.284974 429.8359774 2496.603918 0 17949.78828 7880.832488 0 2371.696209 14126.29231 0 0 0 184.6570723 24533.83103 3242.073465 114.3106477 0 0 3071.933118 6936.361573 0 0 17560.81965 4526.031024 14888.75087 3360.193578 6435.733041 0 26861.20021 0 8111.577528 0 0 7434.344388 620.5263444 7123.553206 1593.762927 18725.2585 0 16114.66306 1841.908621 40057.55165 0 0 0 0 49379.1194 0 1740.042388 0 0 0 0 5744.01802 0.02937398606 21484.61576 749.9610342 13201.81905 0 69.80307051 0 2784.556921 21041.65626 0 2596.921261 28328.57425 33953.12091 21822.75006 0 0 12759.86873 18744.90448 14437.30262 2485.928823 15350.6404 3670.435121 0 19522.49588 2740.142923 2230.419967 71293.21411 0 146.123227 0 0 0 0 0 0 0 66.44284559 146.0611333 6941.408872 0 38.67839091 0 0 553.0714581 0 0 0 174.4338792 18144.65453 24.66969772 0 0 29.88179514 0 0 0 2059.416234 0 20589.01407 0 0 12755.12489 23613.43059 0 7442.264647 0 0 +33005.57438 4387.912692 0 926.8846224 49586.98 3650.378507 5904.190626 0 0 3428.133807 0 359.7557608 2317.195764 0 0 25237.29129 22445.86164 0 3925.543767 61636.69556 0 0 10278.07516 0 0 7929.432023 271.5485705 5994.956266 4476.273137 0 0 0 0 0 19645.10248 0 2693.454459 31033.42319 26896.27616 0 41766.80898 10126.81723 38195.90573 0 21264.52578 0 0 34677.84523 445.7275275 0 0 22940.52382 3794.601431 0 0 0 45540.02242 5635.390402 0 6439.968448 2279.189343 0 6690.77969 0 0 0 0 0 20800.73617 0 4646.783157 0 0 0 25334.97994 24385.67663 2901.642054 0 2592.999215 0 0 0 11618.28339 2714.006608 14861.72703 1704.382651 1494.537562 0 0 0 54780.11411 16117.52709 13505.38329 22678.47723 0 1640.84549 39814.87616 0 8581.716543 1623.898455 1108.695061 8763.356776 10997.93881 8199.474908 15350.68392 11892.86392 0 48836.60208 15344.33161 48.34406923 3750.351999 33496.73068 11422.1776 19921.12965 20669.28913 0 0 0 123.3922893 1160.592419 16715.87565 7767.910381 0 13052.42965 37761.92158 968.4714079 0 0 0 34742.21736 9371.326828 64223.58998 0 0 0 30.74340473 0 49625.03371 2489.847949 16577.1828 0 0 65657.39053 7962.686251 0 15206.75451 0 51885.72971 32283.73122 3437.859189 1730.677453 0 0 0 8067.13505 0 0 34808.04639 1573.391932 42.96479482 0 0 7453.798071 0 34.49730936 37.06270514 3439.577746 2469.734991 23008.16984 58921.29703 45509.0778 0 12956.10571 0 366.7493348 5242.155951 2888.864204 0 0 4403.986987 36030.30991 10317.28791 14815.71871 0 0 7423.510644 0 0 22705.77304 6.17567099 10086.81469 657.7019106 4019.708919 0 0 0 257.1123169 0 20322.00392 4538.57189 0 389.6313028 0 3861.135248 0 42985.12333 0 0 42037.29706 0 0 0 10764.06869 0 15737.37178 2881.344876 0 0 0 15798.03331 8769.219334 0 1.123738189e-05 0 20314.04571 6960.30173 0 6522.199677 14.50743947 48.63050083 0 0 4804.720885 0 0 34200.28284 0 0 0 1929.52708 0 0 0 7680.882571 46109.05927 1564.695675 0 23698.44761 1987.110819 0 0 58182.11575 18.08447394 5469.874432 0 596.9031068 7067.745993 22.70670587 0 0 21506.40659 0 0 16090.86328 343.4281594 0 0 0 95.50757476 63.39736595 2359.480815 0 0 9442.98652 0 46675.41749 0 0 9623.072009 0 0 419.539549 0 0 0 0 23160.28857 6167.691986 0 0 7347.244904 3385.488707 33.50251771 0 0 2998.7694 0 0 3010.358611 0 +0 0 2455.619014 1874.559408 313.1690895 37423.85363 0 806.490474 0 0 3059.037589 2043.546983 0 7950.855874 14493.9628 2457.286702 0 0 23450.54732 5228.00567 0 7267.059597 58028.84522 2160.405004 5843.86225 0 0 0 0 16144.67003 0 0 673.8106345 0 2642.752139 0 0 51045.38035 0 13847.94893 2643.292535 0 56042.77 0 0 2055.237373 126.5273132 0 0 20869.12491 0 11838.43314 3441.823261 135.5052791 5514.598833 296.9346666 23848.73582 86299.83323 0 10276.94774 0 3873.61241 0 0 5477.512422 5187.265599 0 15392.59571 23903.35342 0 5111.240879 0 2634.86482 0 3070.785676 52496.24428 3587.072213 5279.404267 32384.37398 4979.714482 103.3699343 1615.222238 32819.33075 38373.36579 27619.61214 4293.408682 0 35981.01991 0 0 101.1270924 0 17843.86055 3174.230482 43049.72296 8509.227879 0 0 3656.506236 0 0 0 0 10101.87016 0 0 0 112.5405779 24503.79802 0 16271.61765 0 5301.844742 44197.38728 0 50865.24589 0 0 10787.44565 47984.5931 7717.965724 0 0 0 0 2826.24572 33.61410781 0 0 2490.341385 3334.40643 1354.158609 0 43.77072405 1943.297717 0 9583.456657 2962.631165 9188.45539 21161.13 37788.93281 12110.48345 3311.625187 2661.387925 13969.28695 0 0 57458.70965 2570.706546 0 2459.099809 13789.5159 0 0 977.926192 0 1.431126544 0 0 2594.884895 0 47239.02695 3939.475171 7714.502615 0 1916.703602 0 8212.293217 0 0 0 9751.609295 0 4600.462988 20211.42378 0 63022.53367 709.8464107 5780.541507 0 242.2187232 0 0 50389.127 8064.110964 1165.89367 2207.019048 27979.33891 44.42971715 19038.7055 0 124.7738111 4630.492779 3198.509715 20715.69016 3071.785948 8511.80224 2017.119447 3003.83808 2668.380915 291.2928479 0 383.3773371 0 4996.934245 0 0 18148.90475 0 16661.48864 5953.07422 4371.967915 70611.80966 24174.03765 0 0 0 0 0 0 7645.364381 10.98984168 2976.1829 0 0 617.3900607 1257.242244 24788.98966 13610.21028 1463.012249 21828.70493 255.014292 1495.104872 131.3076962 39288.24873 0 3853.432654 0 0 0 118.7208366 0 0 55459.13137 1828.40036 0 19486.03498 2063.957979 17.1574809 0 25406.61224 7644.653814 51.76149496 243.7650009 14010.64271 0 282.0118212 0 5041.732193 0 23479.16839 6372.292092 40.99557604 23099.14533 282.979235 114.423319 0 2070.693646 0 3403.836694 664.696855 0 562.6207633 39434.24913 0 0 0 0 0 0 0 0 0 0 3783.387341 25010.80423 2823.236137 6063.591543 0 14960.24276 0 885.2913533 0 0 30355.28391 7.606663351e-06 0 0 15977.19055 1684.272209 +3132.393336 0 0 38875.45249 0 149.0233447 0 5009.071147 0 55020.47257 217.8720485 1669.760178 0 3594.550546 14623.33165 2359.570735 19872.40354 2036.954879 44862.13563 0 33.49251552 0 155.273251 3901.70621 4847.351247 0 3649.386248 0 0 0 0 0 1866.970285 4286.775088 0 0 0 0 0 0 0 980.9516819 14653.01668 0 110.2201522 0 5817.696864 0 0 35.72401526 0 340.5385501 0 17974.38211 0 0 40446.53902 0 0 1921.80619 0 0 0 35.76360667 697.1120815 0 1023.885417 0 1354.885046 0 1262.689257 132.6311672 390.6393023 30005.07612 0 17062.46476 31674.871 0 2830.148291 2520.954745 1740.091997 0 15407.72856 0 0 0 0 21415.80743 3688.00614 31214.12593 5929.056401 33852.28365 11168.37206 0 0 20236.69291 43646.02073 21372.10561 1679.829054 23.33070624 17067.4714 40932.97685 69114.21409 3018.218061 0 2908.585178 31691.43976 55220.89433 0 0 32217.91059 15308.701 8974.142125 3245.445003 0 28017.60724 31325.08332 3880.709446 2514.749532 66048.49046 0.07016816668 0 391.4813526 9.5307442 71.84248888 1667.546475 610.1260163 0 0 149.2314967 0 44.7766421 0 0 0 63.37634189 0 0 6414.70403 6144.490921 0 9342.877339 4786.159072 3.446371914e-15 41146.45595 0 25746.08625 2207.595883 0 14905.77968 14.36219762 53558.06546 3669.155876 16752.92994 0 0 1211.346748 0 35882.00122 3484.799954 1015.371445 1918.753499 0 12663.73064 3213.310331 0 0 2944.440779 4071.91213 0 2347.649611 4439.853492 0 3513.811355 5585.419254 142.7557589 0 0 8631.186471 2168.334412 2376.332539 2023.906291 0 9499.709722 5489.585832 0 18156.64922 5096.828576 14966.97276 485.3960288 0 0 1326.915105 0 0 65918.81832 37446.06761 0 22128.54344 5424.637792 28957.23111 61946.94449 338.9092412 162.1443356 0 0 7074.946592 0 2411.091183 0 32681.57961 2670.791056 14781.17657 0 3.176230782 11464.56494 2109.519483 5172.71055 1365.742466 0 4404.886569 2203.26013 0 83.10555749 0 5521.569777 0 75.32128411 85.53830439 225.8745019 4945.118269 2035.750588 86309.80582 9102.143509 6528.68505 2591.827848 0 1281.258235 52262.52212 0 0 3873.118898 23972.48492 1633.355283 2203.844647 6780.605636 0 2271.153452 0 0 0 10087.32018 1737.309088 0 1829.709862 34358.21335 7326.464144 0 0 0 7845.997632 0 62797.24816 0 57.1825477 0 20054.7028 0.000552167321 3208.108741 2869.405863 3268.492985 0 0 8645.27398 6808.313191 252.2530893 24827.59806 0 0 183.6260803 0 3787.440282 0 0 29.83099439 37757.83433 2.028831488e-12 0 0 0 25601.45218 41340.31724 10274.17881 0 0 0 7501.397426 6293.998938 337.491889 0 +116.7881551 0 0 0 0 41.78429643 0 0 0 0 0 12251.67724 4060.11709 0 10193.86674 26226.77151 28191.91648 26219.64336 0 1203.390726 99.6871934 0 0 157.7716225 0 0 0 0 22109.46737 7203.293522 14802.75173 0 2454.902907 3312.996282 5764.350274 0 0 73561.90276 0 34087.41588 0 7177.424037 0 0.1097300945 6993.883997 0 110.6118083 37593.86878 0 26963.74427 0 0 0 0 8040.484328 0 0 0 0.2694584597 1684.014378 0 60933.68318 3492.952105 0 4121.45632 37716.12857 4148.906651 2442.396078 0 0 24960.29213 10635.60394 0 19418.58036 0 0 49.2805178 1649.267302 1944.998032 0 0 0 527.8516944 63750.28897 6704.932265 12047.57999 75886.74025 3.387297668e-06 0 38193.42033 0 4563.620502 0 321.5868876 0 104.1761067 0 0 28031.81747 4934.107136 10642.90772 14264.9358 9314.731697 124.2941749 23426.29739 0 36237.72796 0 20188.68064 6.756163745 0 339.4147596 41150.87037 102.5005451 6203.999972 0 0 13119.5475 12965.33095 8292.851438 60702.43675 3733.66571 32.58288096 3914.066529 6025.717475 8607.604876 22307.71069 6179.214831 1002.990277 2195.185682 110.9282955 10443.76631 627.9847992 1834.725507 0 4634.750571 10938.84157 4.245595 0 64.867426 0 1769.498167 1286.704377 0 0 0 9369.599874 45839.03068 19735.29565 25303.85913 0 0 5305.178332 0 140.803468 5934.147635 0 0 0 5696.651882 12869.24305 18240.38268 44116.18748 9148.031795 0 10749.41415 107.289412 22110.60183 2419.320386 0 0 2084.189668 26993.30222 1387.947931 0 0 8530.144853 533.1929555 65939.31825 2415.174583 11879.61234 37672.77845 3407.020474 18335.10913 0 0 0 10101.14811 28976.6049 9014.723298 27599.09223 1476.455919 14590.69 15765.73001 21289.02333 38671.15061 0 628.2847985 0 3581.69063 0 0 0 45496.07043 1867.483699 59298.65709 0 0 47114.89352 0 0 11146.88912 4015.64461 2549.569874 28961.92436 1899.648347 0 4369.55725 0 2765.890246 10593.88354 7404.021394 0 0 0 51613.79799 27499.73237 1291.544462 1176.252334 0 5030.209847 5411.371732 32816.70908 44.82765819 55.93504807 488.0222718 0 18390.02546 32454.41946 20025.79381 0 0 0 63.09584385 0 4810.220566 19467.039 4354.068302 14820.98789 24284.97357 0 45189.25646 34922.11599 4633.802786 115.8694737 41245.8626 0 0 15552.42081 0 4551.959457 184.4535673 837.0114538 0 4302.803546 236.79883 4206.407999 24139.73497 0 0 0 0 0 0 47577.53123 0 0 0 0 3696.091013 3104.316511 0 0 0 2439.45757 0 8846.436598 1427.824814 0 0 0 2175.187331 0 0 0 0 0 11467.5756 2110.808322 5295.017403 +28318.11608 0 0 56863.25769 3796.981159 0 1384.110573 0 0 3004.159305 310.1192216 5601.742506 0 0 0 1388.317049 45230.49237 0 39417.95274 31624.50773 1284.718077 0 190.4655201 0 0 27755.73897 0 0 0 0 14487.25621 23119.73432 80.92748876 0 0 0 0 9071.136937 1569.123902 4465.518394 11600.27879 2416.989855 1176.224028 339.8024912 0 111.3645205 2214.540461 0 2466.859495 2083.523382 5939.813958 0 0 0 17834.18972 8544.154033 0 734.5878891 11676.46653 0 2197.053184 0 1869.631808 0 12138.44245 1972.128449 39416.06736 0 0.8382403888 28634.98682 64315.65464 188.4399474 0.002236722855 5402.636015 51909.59894 4174.098511 0 0 0 0 0 12227.77399 6338.597012 1415.968051 341.7333847 1812.861494 0 0 5945.409005 0 0 0 0 5178.713526 0 0 0 65636.69358 0 11143.87191 0 4705.108026 0 14292.22227 2111.703224 45157.21852 9367.746999 915.4376937 0 0 0 0 2946.719465 29803.96472 58533.36827 0 0 0 1897.719877 38505.97215 0 6299.626585 40061.78894 3107.388382 0 0 2443.027185 0 0 9101.028362 0 0 7567.868823 0 51216.92958 711.3904113 48467.37016 7992.0061 42731.48272 4014.631891 14823.96002 5003.658646 8390.283639 0 22607.3326 3104.216524 67046.05478 18362.25551 12064.28714 8445.467868 28002.78322 0 34659.62858 945.804705 61245.15209 40602.03998 3148.791905 5064.638604 4685.428974 964.2992514 0 7380.510039 0 0 0 9086.977856 0 0 9856.358049 15160.13889 19524.35531 10285.29591 19457.41511 8206.578966 2716.338982 4816.797394 29002.51537 375.7835521 0 0 32.18182326 0 3680.601431 0 27715.62528 29893.53929 22860.1414 0 1208.263662 0 0 0 0 16512.91948 937.7507256 1693.21978 0 158.6427425 13662.53951 0 0 4843.857165 0 0 22227.77333 17569.30193 0 10251.71098 6644.273063 0 5400.684952 7997.715987 7832.657102 0 8777.266188 0 0 0 2158.645606 0 5272.535628 0 0 0 0 53232.98836 4637.375545 150.4723507 0 0 10729.06778 90.18864398 3519.548907 0 0 0 0 326.8534581 7639.954836 738.0164805 2567.958423 17634.05309 15489.35809 0 0 0 1644.585616 3723.091102 1467.752642 744.5587202 0 0 0 0 0 1442.402577 78.92739836 0 1336.009674 1100.499355 0 989.9796176 0 24375.01681 0 8573.119065 4751.248934 0 3000.117756 1617.644183 4619.635007 0 2034.1715 0 0 0 858.4029655 0 0 547.424838 0 373.3587574 6848.199127 1102.368952 43671.16013 79.83991187 38084.88452 0 0 1882.631017 0 995.4785938 2228.850746 1206.731129 1314.929902 0 0 7479.684612 0 0 +0 1281.03685 0 4173.115569 123.8781502 0 5896.664757 0 0 468.9531493 28485.14979 15919.21247 51234.3967 1530.893944 27.49514843 0 0 5322.859681 0 9336.849751 49387.01762 43078.22494 1161.741194 0 0 0 9.483969472 0 22064.15969 13603.10523 0 15163.73343 2207.251845 811.5194533 2963.245981 0 27030.27136 1558.120744 10070.9254 6891.11609 0 0 0 2523.564592 0 0 0 1793.764181 0 0 1272.34636 0 0 1379.577017 0 0 0 6032.539929 0 0 38191.11414 0 0.01504638301 0 0 1577.971953 48422.67005 0 1850.604128 4160.617248 0 49897.88504 23445.27077 7751.316399 4360.909961 8855.08549 8374.993455 63251.61211 1721.285724 79538.32071 45.13513621 0 43066.01422 48057.19392 0 0 55422.37632 18148.76518 23666.05527 0 0 0 24174.86221 0 2343.608892 0 0 39895.52753 23575.213 0 218.3058282 0 833.4931809 8672.486369 0 0 183.8033185 49.95629083 31016.54162 40745.89118 62936.26046 18411.67673 0 7786.869238 0 11613.9154 0 0 4604.093434 0 7797.5357 0 25841.14354 0 0 0 0 15192.46697 1163.337105 12437.62373 10810.77437 37551.22732 0 1380.463839 0 22192.49107 52176.58183 0 0 0 15437.42563 48723.23308 32808.0918 0 5567.380222 4401.157726 0 0 47.15515189 6308.672981 6582.553698 0 10083.23541 0 16773.46092 0 0 51545.42466 0 3804.223699 858.9233185 0 4301.028643 954.4858946 0 13254.89692 0 1766.600807 0 0 1831.320288 5685.287273 0 8213.643462 27288.6226 0 0 0 1913.746493 78016.63851 2827.029188 0 16150.71223 0 16729.70082 44578.62899 0 12396.77397 0 9483.688429 0 0 0 0 632.7228221 19710.21024 243.2409793 0 0 0 46.50342685 19159.1516 1820.025561 0 35609.03282 0 6011.284562 2126.457137 0 0 312.736138 21396.21969 0 0 3915.236232 0 1114.291498 11038.61223 66.35030812 689.00696 0.9861472035 28491.29862 5174.772058 0 5208.234515 16059.86123 1082.387021 0 0 0 0 54.05717041 12619.642 0 0 1569.443871 43420.76429 66712.85801 0 3599.499333 0 0 0 17899.09991 37152.01402 45775.56905 0 128.6047262 0 155.7134868 0 5030.989756 1454.716461 1499.527586 0 0 6922.473107 32875.7891 45066.14864 1469.633432 9038.355023 0 0 5215.842736 7834.5513 16344.7649 0 0 0 56.03921175 8906.632432 53.5607577 0 2759.998597 47523.34881 43.54729477 0 0 0 15566.13816 17994.95447 0 0 0 0 0 0 0 0 38286.327 0 821.232991 2826.66813 0 24.51050664 0 0 0 659.8315361 0 +554.4617863 0 1321.778536 0 9109.43128 2091.248593 973.1174961 0 1805.429012 394.4201474 0 11172.06358 14732.26516 0 7671.816506 0 0 1482.002485 5900.677075 786.11432 0 0 0 0 14999.92387 0 40.55493392 16669.60459 220.7325753 10744.22795 0 0 75.91407695 0 0 0 29458.67383 0 112.0213857 2053.722528 48452.2945 0 0 0 4.623959533 0 847.5303835 29714.25373 16325.01156 4603.252732 16530.9409 0 3010.502715 68845.52585 6864.047563 4279.894055 0 0 4005.289147 30121.83755 0 474.0465274 10198.6133 1127.823258 59.18912911 45026.48697 1624.792975 0 1059.188724 0 10521.38494 1827.739098 20733.1649 0 2178.665752 0 2053.599282 0 0 13221.55095 0 2.172783728 21966.96043 2446.711237 0.1174570507 0 45749.2346 0 1655.37428 0 0 44.8659396 17588.12658 0 50011.85155 10435.79519 22942.13662 127.0758193 0 1696.946743 35609.6296 2076.889885 1229.572011 24156.18676 5399.293426 117.2372668 4386.644892 22510.00532 0 0 13031.61211 2152.10801 11377.32348 5441.446502 30403.55403 34221.01544 0 0 0 0 2390.162448 5424.451782 0 2756.723047 42840.16727 3443.567172 112.9383851 0 3275.806291 63891.48325 26221.43909 2169.124038 583.3422728 30199.54116 0.004685758659 8756.31005 0 0 4277.824177 0.0001026582499 8283.02488 0 0 11796.89868 38529.59489 1436.00642 0 0 1822.193596 2226.936468 0 7626.446807 4053.644339 2255.522998 0 2395.49492 26253.72 9830.787046 8653.749353 3259.559099 6453.834906 1552.731002 0 148.5705352 0 0 4770.92771 0 0 1593.408783 0 0 0 0 5198.898516 29443.3208 7363.492203 73553.91424 0 2761.250348 378.5279139 0 0 0 0 3986.989118 0 0.9578766737 0 9726.406376 3163.197247 23592.8326 18687.505 0 7431.802704 733.3241752 8832.704476 11245.69932 2741.707759 0 7493.516167 4871.698667 0 34672.21414 0 34967.31567 76444.72184 83.12421538 322.7271597 4734.494541 0 0 8781.310983 4796.700972 41356.29174 0 846.5396029 3844.821166 0 0 645.6697147 2257.804576 67726.73619 7406.738137 0 0 0 0 0 0 31417.38167 0 16733.2755 0 0 1829.803365 0 0 0 6416.32972 6971.123511 0 0 0 48271.82042 694.6045993 873.6480912 2003.778958 158.0220417 2996.117623 1.363299924e-05 1588.68517 0 24309.95096 0 52.84519553 1597.729336 29336.67906 16804.81381 253.2222125 1648.089625 0 0 0 0 0 0 1998.944552 161.4052593 0 0 0 0 0 0 45397.19772 0 0 10952.65906 0 0 0 0 49728.20443 0 0 0 16083.44941 0 0 0 24289.13739 0 0 7954.058322 0 33803.66859 20267.76283 4500.578933 1123.159389 +44.94260972 0 0 0 0 0 0 135.1544297 10134.0102 0 0 0 0 272.6930885 0 5340.769618 58186.41691 418.53971 16065.15852 0 12341.70502 0 2999.046166 2470.453645 1370.117009 0 16704.50713 0 0 34494.88612 3979.329765 0 476.4421505 600.1278109 116.9539001 11427.98991 45561.48787 4891.362328 20765.35355 70592.57434 30952.34613 6454.327027 2592.362995 0 0 0 0 0 0 0 0 0 38613.71025 12447.84299 0 0 11672.48045 35233.84466 59059.45915 0 191.9015906 7491.426138 0 0 3875.188475 298.286591 0 5920.661389 60777.54693 0 0 205.8183573 459.6398891 174.6093065 0 24534.25073 0 27.87858271 9472.361732 12168.27327 8339.530194 19172.75181 210.6502534 28452.55909 39115.62531 0 32911.18042 6716.645143 2253.614777 401.9060332 0 0 0 4338.402495 0 1118.12546 53872.95142 14149.57827 11244.82695 157.3738626 59329.49292 0 73093.85866 0 0 0 0 0 0 8835.070401 0 0 55.30548885 55016.02393 35222.15672 0 0 828.6544538 0 45130.69533 5285.369953 22011.08923 0 0 0 11789.87895 11492.06642 8061.667976 2810.581919 0 8627.580107 23516.90729 0 0 0 0 4163.568052 43573.7181 0 78.18059859 0 4268.959139 0 2563.404108 74315.08046 278.3024257 2026.157118 6018.32505 0 63801.31878 926.1498273 3338.696505 204.2385502 4811.381355 5334.903639 0 741.2522946 9955.135632 17922.82862 48307.4163 0 1742.564168 137.6916515 5766.058772 0 3180.258252 0 998.630976 0 16763.0623 0 2414.451519 9544.23794 11155.06361 1858.992121 7027.442817 22115.76235 47933.06849 0 1853.286213 11436.83244 59774.8613 2080.358753 14357.47941 0 16512.35329 0 338.4463141 0 29749.76733 2718.682594 0 0 0 91.51902154 0 24157.05742 91929.25777 14302.61493 521.0686751 8471.030217 0.04243066762 0 0 322.6796336 0 0 2854.631867 0 15429.93795 0 0 45612.03472 3941.133747 107.0964032 144.0245224 0 0 15661.11664 0 27979.35508 0 0 241.2492429 108.1044141 9347.387646 0 0 0 136.9839577 0 1795.465013 2087.979455 9322.994858 0 0 0 0 0 2598.842772 16816.43185 7621.202448 0 1035.047569 0 0 0 16162.72132 0 0 0 3646.07315 33669.86135 20670.9475 7458.420491 88.77647802 0 0 7271.831675 49981.69543 0 0 1946.419326 8260.456404 0 4940.389517 0 0 13082.20709 24804.22799 26937.38457 0 0 0 1200.722532 5607.97051 0 0 297.7892904 0 0 0 17105.04791 0 3854.677793 0 7044.044358 0 0 134.4364386 758.3879342 18214.55661 0 0.6334103335 0 0 6813.488592 3250.266847 23947.22344 0 +10358.65391 0 2910.053916 0 0 0 23.14191466 74.35157797 81.65347381 0 3277.328948 0 9911.46879 3492.50588 2476.320398 2689.582279 9770.566416 5802.747806 0 0 19260.41884 0 74685.76349 1479.110185 1144.293463 49.66900603 1934.12738 4794.178667 0 0 27543.7543 62361.57278 0 0 16153.20669 0 55769.57605 9064.365522 0 0 9014.265902 0 0 0 2383.11316 0 0 0 0 16614.97665 0 2343.740904 0 0 11959.01045 6001.112001 32710.77043 0 0 0 0 5309.67926 11612.24757 0 3774.14552 56418.35819 0 0 1246.706555 0 0 4972.105328 15880.08129 0 0 8093.215272 0 0 6248.215089 506.8949251 0 0 53402.93331 95.64502693 1255.224431 0.0727353806 0 0 0 76.50341104 6205.40859 2687.165406 17534.28456 686.9203442 0 0 0 0 14303.13449 1430.7188 18635.8331 0 8766.847927 0 0 0 0 13404.70096 12397.22306 1668.077692 11562.12487 2486.265159 13507.9454 10201.86456 1621.655763 0 7284.226222 8149.263184 0 29818.16786 1787.308205 61.07001386 0 0 9745.759589 0 231.5764664 13655.5368 3510.110411 3306.971806 18419.42551 4250.054882 14757.90233 11677.78213 0 7445.432312 38312.59396 0 0 12584.01586 1467.621934 8806.849393 1179.26246 3469.479495 18513.76363 5004.333705 0 11371.81038 0 0 0 681.7265864 0 0 1207.20415 3368.765516 16222.72199 46893.63218 263.6615452 28999.70075 54865.48062 4067.75967 3994.648928 37.05737661 63.58823345 63.18485643 1831.39591 24462.47612 4075.209862 11897.51863 27699.80862 67.12257003 0 73.97958628 142.9182807 28.44289436 4525.326859 0 444.9227874 19946.03103 300.5672468 20614.36868 0 6243.603172 7776.231763 1177.05845 0 5966.252033 7673.783087 0 0.267344369 24.53902554 5243.819807 11855.05212 0 0 12226.72491 59.24933929 273.7347716 17227.52916 6350.362279 0 4192.792104 47905.76716 579.4170629 0 1272.725925 0 9445.385179 7670.898372 1852.926908 3288.665417 0 6137.796278 39923.04943 0 4617.426795 4936.367187 12445.66726 0 29.8654876 36550.63602 1195.708218 3731.50653 0 4735.349936 0 0 0 0 1441.891311 0 30.377038 0.6212676099 0 0 17377.45789 10996.48979 9782.500128 21049.83515 16280.10137 3125.168897 0 32994.5214 0 0 53805.48159 8933.251457 0 0 0 20981.33792 642.4789752 9642.699185 0 0 10726.01907 0 0 30926.16755 82.46712752 0 5765.840354 0 53180.66171 0 0 3506.31672 3985.854625 0 0 71398.29517 0 0 0 0 3870.49266 13823.9811 0 3801.455504 0 0 2140.759127 0 0 0 62935.18348 25178.47122 0 33.68634372 0 10417.70429 36842.0353 0 0 21540.59668 24841.83748 0 0 0 +0 7061.845794 0 0 9695.357379 0 0 21687.5753 0 0 0 18953.73724 28.65607337 306.3879719 0 18362.26529 0 28549.2002 0 6621.869015 5924.346826 0 38.25413265 0 9092.954973 849.782898 47946.75489 0 432.0386925 997.6542363 0 0 5899.933334 1771.831508 26041.70075 0 12113.27885 0 28781.30924 0 62032.91429 71762.66318 0 0 0 0 0 0 44002.17969 2112.242556 16406.11772 0 61804.18862 6247.258812 4344.113248 21566.84633 2026.032647 0 21345.9072 42300.74732 1740.079873 29970.96882 0 4855.678939 77828.90337 1930.782168 54411.34406 3611.652402 4240.193758 0.0003651628254 2702.182175 0 0 2715.563415 0 0 0 0 1609.751534 3583.27551 0 4974.09432 82441.87659 21672.55137 0 6644.242959 1037.274626 0 381.2897707 0 55135.90421 6528.546376 0 23940.21368 8876.126191 2146.174218 0 0 0 0 0 0 32921.69706 2829.274681 1739.518532 190.5287384 3362.959252 21744.50627 658.829366 0 53306.772 51128.08992 15412.55178 85.59978511 0 75165.79174 9568.873191 43.23122187 0 28577.84438 3600.617011 0 6741.334837 32565.91407 0 0 0 3966.447818 21412.43359 0 37430.35817 1247.677755 1790.965992 0 51785.21347 39441.64156 0 4389.991522 4802.50945 0 3628.433452 0 0 1613.653331 4.630701342 44057.16006 109.7403844 3136.616107 31.99731456 0 0 0 0 0 0 0 17117.45591 0.6533565024 0 3282.190341 0 14129.63736 633.5041422 0 0 0 172.6063207 0 0 0 27971.99811 4945.493826 24688.96595 4312.62724 3.657833566e-13 5575.409441 3640.186071 17990.34784 0 0 0 0 2368.97177 11678.43102 23507.53419 0 0 14380.40474 1847.050421 61.20557718 0.03943656894 0 0 95.19005504 0.6708022108 0 4773.372056 14998.57686 59454.2821 39.40299787 11634.54695 47.69881134 0 1663.71267 13081.68808 8139.737314 118.4265749 0 0 0 15591.38795 0 22742.02562 700.9243277 0 5424.991013 0 392.0027228 0 3348.262713 45523.31169 0 0 21630.95831 12087.87711 0 1265.310392 0 0 0 0 0 0 0 39465.60701 0 1038.993555 0 598.3068207 1756.52675 238.1803785 19771.35373 0 0 0 38037.23151 0 0 7774.184212 0 121.5147833 3448.827347 0 0 0 176.2652635 1054.835489 0 13058.27474 0 6748.475303 0 6910.762638 0 0 0 94.99692952 0 325.6487701 339.6059992 23344.22884 0 25615.99001 0 74.90100504 8498.136167 0 0 45.90618676 0 0 0 29915.55046 0 0 9105.717115 0 0 9288.515688 1866.864405 62084.89731 18303.35517 0 0 0 0 0 0 27893.61592 0 +33513.9088 0 0 0.02965369337 0 492.2828811 497.328049 0 0 1820.178198 0 0 241.8872381 19426.53687 9116.713204 0 0 32743.16884 14128.21974 1498.007465 0 3325.929517 74.25204878 0 0 0 7789.147399 0 1209.618435 0.0001238282828 2653.273905 416.0183852 0 9871.718754 22307.95987 0 15968.97216 4947.26802 3201.438465 11622.61049 0 139.1647279 498.5710538 0 459.5202259 2223.022348 0 44073.4701 101.6213058 52.61694298 0 0 4311.970208 8525.316088 180.8652899 2402.689096 0 1641.949817 2752.105561 4295.965769 0 420.8395177 9533.603649 181.6574413 0 0 935.8116749 0 0 8706.313448 29244.03754 0.0001309145411 0 4641.875523 0 0 0 0 5231.566915 0 2636.160766 1781.773512 6412.925904 4805.028395 0 0 7195.54167 29427.07328 6215.295788 48212.34767 209.8493548 3116.462648 0 1009.440289 0 7924.510494 14172.74246 0 0 77.04711702 0 6320.271605 0 4508.105043 0 0 0 0 0 0 9089.096669 1882.052236 0 0 12321.94372 0 0 22659.20735 58661.06053 0 38206.32706 5989.550906 0 6190.326581 0 2242.723638 0 8895.720535 0 3873.614606 174.3647894 0 16173.54803 2103.228135 284.9284236 0 0 350.4294555 1033.240845 6989.992034 7738.447011 2797.600359 0 0 0 3869.008501 110.3812694 10153.86708 0 65010.75386 19086.80486 14973.30894 116.139486 0 10070.29516 0 727.4035915 46894.40111 2222.49149 5655.516313 0 1.260005296e-10 0 21487.10324 1680.564973 38360.72199 4289.181579 3751.397353 0 3000.898081 5162.538198 0 10117.96225 0 0 5111.681856 12134.84689 1436.535987 5870.707085 17179.65286 84.51486474 2898.05131 0 0 24.44868941 33699.91663 0 5259.464536 179.5660073 12443.54695 0 845.1451593 0 32495.94681 0 0 20977.07577 0 0 297.827485 13431.42141 69.76268676 1661.297494 52435.87161 0 1740.2365 21056.35709 79.5856725 73.25363835 393.9349834 26138.00971 4850.179364 626.1821339 0 15157.91636 3532.231504 0 33176.23245 8.374155806 2.601082844 34984.60718 0 462.0765367 4598.967339 53016.93715 0 6232.636483 0 5233.505163 15926.72972 3260.437033 2658.549035 8636.936165 15515.86922 0 183.5183163 0 0 8236.49225 19293.24804 17885.57142 0 0 7057.093748 0 0 16078.50421 0 4173.35351 21518.17518 43.14705018 0 0 0 0 12506.8777 0 0 0 0 15.34162183 9229.290224 0 10517.16091 0.001975630814 0 196.1871014 0 0 0 12641.64238 0 0 26.97508721 683.8165905 0 7882.959078 2428.751158 0 2761.95905 0 23606.71484 32690.14598 3004.991439 0 0 0 0 4863.425971 29983.34929 26751.14478 1185.461885 0 0 0 0 0 142.1843284 22792.14011 0 +0 44137.69035 0 0 0 0 0 0 15245.103 0 3242.79428 0 0 0 553.7443529 30083.07593 0 348.3420494 2.442929509e-16 0 17734.64406 0 0 0 0 2.111930016e-07 93.12844935 6625.510205 0 0 12344.04667 0 321.9371453 0 2022.933278 9790.769753 946.8646917 5941.894981 4292.651214 24731.38683 997.9313674 0 0 0 0 0 0 6282.573108 11502.86593 0 3321.580637 0 1202.730792 45.13573031 0 7093.808366 0 0 12180.77638 0 0 0 0 0 1305.736464 0 0 52138.27352 0 0 4253.672926 1447.756796 0 0 0 0 8574.610304 0 277.7303446 0 2396.630624 0 8102.874397 3739.809667 1921.133248 0 0 81450.77822 14606.67478 25851.41464 0 22849.0734 5731.465217 3253.680963 35800.75394 7567.875806 15041.48187 0 17638.18714 20174.65766 50.66931469 0 0 15480.99148 10039.3477 0 20376.84408 0 1636.378104 0 0 5461.452882 4052.99644 5414.581024 2982.917673 0 0 12025.7893 7.299971333e-08 0 3043.336032 572.1639126 11009.2317 12489.85563 26217.19592 413.7533241 0 0 2024.31281 0 1158.898424 3623.980751 0 138.740252 6.310246032 35738.31713 0 0 0 0 1476.899027 16960.7244 5990.916631 3015.641005 1904.46541 2649.118411 59.50424479 1617.205641 21374.1685 7445.699159 1650.215016 0 0.0007090651238 0 0 0 0 843.6437906 0 0 0 93.72370564 4445.577204 22794.62261 8261.937202 9988.989721 0 7.372301859 0 3063.942629 0 0 0 122.9452616 1586.189181 0 71254.74867 0 11802.17243 2.230554251e-05 0 4366.068636 0 24987.38029 354.0571885 0 341.8393885 38248.06857 0 18795.01952 9972.918401 5113.357293 20007.47037 2706.266623 28405.3813 455.9586791 0 307.2503979 2176.628919 0 5.923575956 0 20514.67049 3726.704775 36931.52285 34665.14934 0 41048.53836 0 13404.3681 0 2073.969443 21694.05775 299.7374775 0 28341.52671 30324.51636 30396.63159 0 0 0 16750.39725 4232.16982 1917.53365 30102.04807 0 5970.757644 3639.186282 0 0 0 0 21.52436527 7964.893273 3891.040012 0 132.4041105 0 2391.145676 0 17052.55629 3.168219474e-15 73.79655324 37771.7414 0 74.46917147 0 0 0 0 102.4710478 2292.723707 16314.42987 0 591.2362055 14830.90278 0 6142.180179 0 20.08708562 4801.856009 4126.438799 24970.67777 0 255.4653021 43240.04849 5539.798292 7784.68635 101.7497584 0 689.5606494 0 0 88.60241649 1770.748848 0 2069.261321 0 0 4805.434237 0 0 281.6304114 342.21854 8217.734047 0 0 4191.580222 0 2954.640983 0 0 52244.25789 1913.215247 0 7703.948135 16068.38343 0 0 0 +0 0 0 0 0 22058.36294 0.2635716693 0.2292210233 0 0 0 0 388.6018663 102.1182037 20118.51368 34076.05641 0 0 0 21125.30665 0 29628.23964 7030.117142 6972.864688 0 24477.0326 3765.018854 0 0 3206.127063 17593.08933 1916.407339 16134.77861 0 0 41719.26693 11163.45751 0 0 1163.067165 0 2758.820737 8353.492083 0 0 0 0 0 0 0 16039.11719 0 26125.23786 16923.10295 0 19600.7159 13446.21568 0 0.2521002869 0 0 41502.38425 643.2415143 0 0 0 5542.334412 12868.80107 14651.12819 6947.017344 726.6554379 0 4082.247883 429.2555952 2625.024999 0 1210.722053 4677.693274 0 48868.39709 12956.57235 56263.98877 10227.193 0 0 0 22132.86362 101.6345274 0 38133.77674 859.0351401 21801.85047 7585.825134 0 657.0734986 0 0 0 4811.43621 0 959.7530098 39654.62625 0 8060.011863 37519.79958 13070.1754 42138.72792 0 1502.077557 7015.211656 2402.902357 49484.41733 0 0 0 45847.91064 18565.77273 48281.10473 22369.55186 0 0 13604.36553 65.50257437 31169.73551 342.5431839 6674.955449 3222.728018 26778.73791 35198.84371 0 0 0 1347.832598 0 21001.59477 5357.941007 0 34120.01463 0 1939.333996 0 3601.148354 5680.584614 26916.28894 1226.950198 2056.319633 27057.16701 8967.638069 0 15277.88293 8307.354386 941.9447593 6627.77134 59.14414744 5100.878936 0 0 0 0 509.2085606 0 0 0.02447506171 0 1905.766892 5.84783493 0 0 6947.621074 42676.85431 0 0 2238.027019 71783.70195 0 62754.8506 58686.52128 1985.798946 37708.46878 2856.995169 10987.8932 0 47.73926363 10887.3916 705.3268795 1065.301714 21.84672147 16156.12961 16238.14407 12653.56682 15831.15005 82.30661977 0 23672.99589 0 47853.61421 0 23586.72092 0 52058.3595 3898.602935 0 75.58079448 0 10574.80484 0 0 21312.44818 2503.146442 26012.27886 0 0 0 0 0 77800.33803 0 10600.8085 33496.67069 72.23403831 11723.90006 7039.055019 0 4476.937915 0 2.312857734 81044.20309 233.8712591 0 0 50.50941676 7653.963166 0 0 0 0.03774744724 7479.169805 0 1656.004273 0 20241.07978 0 237.4859413 4161.393135 0.006146517686 1523.889626 8897.72281 0 16830.76643 39.79989462 0 0.005691683343 2108.342465 1147.921797 0 0 33.68510986 10540.85622 0 35972.21158 3123.91976 0 2677.360428 0 12419.26563 7191.470454 0 18444.4152 0 22838.31276 23774.81872 0 0 0 520.4472652 0 0 273.6519824 0 311.437114 2124.485403 0 0 0 2046.056921 22794.63184 13127.18392 0 0 0 0 0 24128.90431 4074.058888 0 0 2437.238807 0 18648.17333 0 +0 0 12377.17992 8636.668553 0.2022427369 6343.929165 9582.523965 0 0 8594.069218 0 4046.109353 3490.30595 0 14533.24232 0 1599.51095 32968.57232 2121.900739 2255.667869 5809.246292 0 0 95.68238288 0 1640.211526 0 5935.375963 20764.72421 0 0 28741.55867 37126.11344 0 3904.686062 9105.317184 0 0 0 2761.614436 0 0 17750.12496 103.8733258 39122.64091 15368.8426 0 28272.88967 7844.734605 0 0 0 4808.640349 8066.613018 0 4866.715989 0 0 0 9119.924899 0 0 0 1619.670602 0 15038.72295 0 13201.12436 0 29677.84799 0 48063.00334 0 0 21633.35426 0 2939.222253 5442.48095 4302.697402 0 0 15493.77918 4322.868041 0 0 34646.43292 11204.64356 571.444163 3885.005605 588.5881751 65996.5944 0 59889.29857 0 21393.70359 0 45101.50885 0 1681.308202 17112.38474 19.29520009 0 35.72071615 4691.415051 3543.729371 0 37617.61977 0 15518.63866 0 16607.94138 677.4056369 0 0 0 0 0 0 1946.142777 0 323.0162459 2383.350223 0 0 2714.08399 0 0 0 11171.38223 8930.992619 4154.116531 3859.909289 0 22054.40495 25554.74398 0 44286.62475 0 0 0 0 0 31702.00395 0 0 20911.54148 47033.05917 68286.69089 0 1533.666171 18916.12924 28919.68824 0 0 4958.723606 0 0 2800.091293 0 0 1711.113792 0 12683.41507 0 45573.4201 2072.278054 40915.52733 0 1681.813452 3542.954873 2607.083791 7229.43208 5078.613095 8893.499347 0 0 0 14441.32708 12915.9671 4486.403239 0 5031.596371 185.1130976 0 26235.16561 14036.98935 0 0 0 9757.477388 0 4281.923154 247.7420235 0 50.00941645 0 7951.564806 91.48735893 34261.39194 0 7529.475635 1995.213968 4540.200532 16537.68365 21392.3343 30201.89869 2628.752887 10330.24617 58700.96316 1453.388857 10931.17999 0 0 1394.152665 0 0 10961.9608 178.7529922 0 0 1816.299964 2441.860959 109.7524123 15.51603064 0 173.7248681 4683.924373 11093.49888 0 5762.304108 10282.44576 0 0 0.7785647709 36312.36036 0 10713.23382 1119.941129 0 0 0 0 360.2695205 0 0 42.28336915 0 0 14363.26341 1740.257565 8807.703451 25340.32545 0 1142.511756 0 117.1398447 0 0 2860.766481 0 20194.29008 0 2108.691508 679.821808 307.7497931 2664.928273 0 3960.068061 0 0 0 0 0 0 0 26057.24308 3620.586201 1710.546733 16.88453317 0 11470.07494 128.0755759 0 0 0 0 0 0 0 0 54594.26908 235.7103326 0 0 30905.14684 0 33955.00839 0 0 0 +13374.85014 3755.707671 0 0 0 9404.236181 0 60.50789817 5455.252182 0 0 0 0 1123.666757 0 0 24056.55895 0 0 2070.448747 0 50820.35656 0.003257087009 0 0 0 7488.76377 0 0 278.8465618 6450.682912 5135.943469 0 0 0 2535.585928 4106.632857 13660.17282 1319.11905 968.6701991 17352.75087 19568.82925 842.1664247 0 0 56348.65344 10742.47927 0 41831.14174 16893.93925 8007.324675 0 0 15187.17684 8135.095841 346.453326 0 6162.644169 0 12038.1553 583.1857469 68197.54366 10655.61048 0 0 0 267.9579884 0 0 0 0 0 39700.69803 0 14559.61865 0 0 2548.668991 3701.477902 42889.5486 0 0 1924.137042 28869.16425 0 2825.772022 33953.48428 4594.524036 5121.889275 2349.241158 17701.35807 0 33323.11003 573.635829 1865.119604 0 0 8707.703176 26562.51644 3966.398572 2298.144278 0 17424.38635 18593.25641 0 0 25576.32676 0 0 1291.77586 0 0 0 83.02343684 48661.60608 3335.520721 0 17721.00463 0 3937.329004 0 0 0 0 24011.86394 0 0 275.1219105 57327.58203 0 0 2339.771395 0 0 0 3629.910954 95.72073287 4096.792089 8182.700458 285.6529747 248.4771849 0 7775.682251 45897.56285 0 34127.21527 0 0 2205.698062 5178.874771 4412.505144 6555.062905 50435.69091 2688.782097 0 202.368992 514.4002734 20580.28283 4076.33432 0 2054.535168 50605.18026 0 2291.028386 10468.9774 0 13799.24583 0 50480.87034 12.48002886 101.1904552 4426.645598 6814.516885 15142.67451 2834.975903 0 18561.82979 2225.976645 273.2850174 249.7025275 5410.743703 3547.443577 0 0 4556.563784 242.1210124 0 117.8137985 17.93071042 34953.10077 26003.37272 0 0 0 66550.6613 0 1325.275428 0 15759.62688 3882.163608 0 0 2436.284316 0 0 27336.83961 8058.384322 52628.97421 2264.357546 172.5537003 39104.03387 12933.93393 0 21048.90476 8074.804412 0 11522.2357 41395.0137 2248.446141 28835.36274 0 0 0.1112340689 19311.82223 301.47495 0.002182576185 0 0 8950.162453 0 30363.90001 0 78320.46291 0 0 41961.7271 58.18889736 750.7114166 0 4839.279881 15163.96872 0 52865.03529 0 1986.109228 0 0 1125.342351 0 0 1387.094303 531.7584246 441.1342045 0 4005.595078 0 0 0 0 160.1777784 0 19428.85838 0 0 9107.770772 4838.328388 0 164.8729271 1744.284427 0 0 44.29884106 0 6165.470446 26210.51574 0 0 0 0 18349.08005 723.1128365 1067.291002 0 32796.75151 0 3846.172269 24460.10487 0 29029.9676 0 0.005361952556 0 0 0 4842.599303 3031.053339 3.430847298 5562.641613 1165.032815 0 +57741.30673 90.15190498 7542.311125 4747.226363 0 66054.14827 0 9144.33671 48970.54115 0 0 0 218.2294394 0 20216.35172 70470.25258 0 0 0 0 818.6347821 0 144.0048209 0 512.1454264 350.2457038 61.94024772 14859.02211 487.564153 5839.521908 0 4822.845319 1171.601928 0 0 0 0 108.2933438 9.312089304 0 26038.97363 0 0 0 0 23949.72998 0 0 15936.86055 0 0 48267.49394 0 1376.881166 9849.714817 4368.948868 1.081260688e-07 0 0 0 0 0 0 0 0.4908929505 0 0 1209.591611 0.0008583182856 40444.0855 117.6135507 2000.577164 0 36832.7507 1423.990485 0 12.7402859 0 2179.88579 0 0 3542.188663 17324.75111 0 3512.015428 38062.70641 0 6358.071332 212.6189481 1401.411159 194.8041151 168.3714492 0 40287.64118 0 2021.932829 68.84860502 2318.414827 22714.00934 2848.818179 2568.800895 8124.367663 942.1631491 1999.198798 18017.06404 11902.44477 0 40091.65531 24312.14321 1393.638283 0 0 15625.97191 0 2382.928527 0 1926.240885 0 0 34815.86677 2017.024362 0 2582.029906 2515.070819 62.5138728 0 22157.10671 417.590206 39.70325264 0 55532.30699 0 0 0 1753.685401 0 0 1418.314243 4266.973977 834.5966641 0 0 17075.99909 0 8525.821275 2118.862586 1881.618354 4664.389106 2439.973312 17953.49563 60337.99314 29749.11716 54544.57193 5683.81582 3280.366753 6090.910789 8031.88209 0 0 0 0 0 0 27569.16996 0 16629.42658 15676.75203 0 0 12783.64338 0 14453.69622 0 0 4420.628229 39370.56781 0 0 9928.137954 0 0 0 11883.35767 0 0 1640.768219 287.133273 22.17764247 381.2473755 1100.942045 0 27016.84642 0 0 0 30006.20409 16278.36638 1419.330981 0 0 0 0 2505.515864 32114.41655 21325.06602 0 3005.262469 0 0 0 0 7093.444047 36268.8883 7334.375576 18202.84165 8110.305085 0 0 0 5892.721599 1085.868369 0 10276.49236 467.4017394 940.1404842 0 0 14482.33183 0 222.6806781 477.0862382 3024.474689 0 0.02249026298 0 0 0 3596.386083 2210.251604 0 3455.696174 3480.963435 0 4255.058664 113.9533915 0 453.8360416 4320.451784 79.02337799 0 2452.472584 3563.038892 0 0 4260.059632 17411.60823 57.37742994 596.725468 143.7378486 0 0 12911.7099 84.48565997 0 0 0 0 38438.40059 0 10844.24242 0 29702.99528 828.1474074 0 8977.441099 0 3900.661579 0 5794.261283 0 7201.041428 0 6758.616328 0 0 1505.988457 20803.27803 0 16867.68832 295.6193307 23655.76275 2378.307582 0 0 0 0 0 527.5107134 2190.391887 30211.98511 +0 23857.67952 0 1412.359053 0 3940.715938 0 0 0 68075.19179 0 0 0 12.60701989 0 0 0 0 9157.060917 0 42248.34064 2019.828981 0 11705.56091 0 0 13286.23008 0 0 9018.58002 1704.964707 0 0 50921.39513 8369.676717 0 0 0 0 26412.04139 8436.655262 2270.94884 0 169.4367977 0 0 620.7190102 14390.66205 16376.27497 0 22011.67418 2013.232627 5169.682837 0 0 4506.665099 4792.323155 5302.445267 14050.92625 0 0 8573.510399 0 4268.036995 0 1731.695286 0 0 30296.27199 0 8127.27018 0 0 0 8951.178456 13697.33977 409.7426499 32733.37334 7211.773225 0 0 0 14959.9481 687.0671318 2408.106945 2613.07625 0 2102.916248 50.48448898 10936.34934 1826.560241 0 903.6419538 40841.4618 0 20449.8525 0 1463.797645 19092.79948 0 17717.56202 0 0 6628.94189 3614.553713 0 21.0749457 0 3790.620534 0 0 0 8027.075812 6576.640603 30175.47637 38201.67429 831.7305783 4128.673477 12678.29632 63384.31463 795.6720752 33289.74568 1649.875557 0 0 15236.79462 17682.55163 18988.15387 1214.526963 21299.39457 0 18135.41598 17876.70003 0 0 0 0 3945.095239 445.8337426 2277.569204 0 8932.729749 0 0 0 0 6574.688136 0.02240581301 1143.382497 3171.400741 4906.058841 0 0 8172.789687 1079.290993 0 0 0 2248.551544 0 8117.767532 0 62.34776487 0 2201.711205 37.01185618 51.02035943 42.25278327 5094.245476 0 0 76.11137235 13531.70562 9506.87551 1830.330424 6643.474295 66.57615923 0 3559.435112 2111.246251 17400.11486 0 19247.55793 0 326.7284361 0 0 0 6731.607201 0 0 3505.656721 0 0 0 1304.093302 21110.15696 14982.69104 0 3440.767375 2771.703389 0 12533.02484 61781.76332 1529.010324 0 1844.436842 40.17803972 4893.75726 5644.696781 2428.731912 0 1154.657151 1498.793184 22266.6688 0 47915.73248 56657.71589 0 0 0 6817.050234 0 689.2689997 0 202.0888206 0 0 53486.78723 15257.363 0 0 37354.06371 0 2664.766687 506.7556722 2254.949355 0 0 0 0 448.1811233 522.3931863 0 147.2558096 0 0 5453.901131 0 0 3547.617705 8281.29968 15863.19236 0 0 0 109.8822502 0 19352.57391 0 0 9152.025276 0 3568.510368 1510.737929 0 0 2558.525205 0 0 0 3083.343338 0 0 0 20664.75456 15845.83378 19814.6423 0 0 0 0 0 4636.066672 0 0 0 6916.284684 0 0 0 0.433179766 0 0 0 0 7689.235394 0 0 506.4635781 +32439.7168 0 0 57813.32804 0 39969.54318 0 0 0 0 2.066118989 4495.744119 0 1678.234046 0 0 0 3407.126029 0 0 20942.98204 0 0 16143.71575 0 1278.251346 0 13020.53236 0 0 0 12163.37407 0 0 1177.248806 0 0 1114.469359 0 4324.282277 0 0 4780.285349 0 63157.62989 0 6339.071009 0 986.2697829 0 0 0 0 22237.45648 46372.58003 21504.29062 3279.2103 0 17816.33611 0 1229.676429 1103.651385 41.11508339 4015.105737 1415.528525 0 0 26836.29491 4988.882783 0 848.1172653 0 0.1640322178 462.9300406 7528.839589 0 0 0 2330.514204 0 0 0 121.0687896 0 31896.13932 29563.67419 0 0 0 1697.692343 0 2727.905003 0 33036.1381 24951.40292 0 1582.54753 20612.74326 420.6943471 15854.50193 9734.148859 0 16060.02521 3272.68739 0 1638.173118 0 11451.57083 0 9836.686417 0 16461.99798 0.1274926741 45656.32568 0 28850.65089 4499.898476 4350.989082 4745.347925 0 0 0 2138.012072 0 1229.520442 2615.501463 222.7834762 21626.26008 1142.482876 540.6787595 0 22352.08236 5624.515389 0 0 0 4820.493333 3524.34604 516.3581474 0 45.83823094 985.4926115 0 0 0 0 9387.375055 0 4.104462048 0 0 14855.83032 0 8172.129082 0 28731.64414 0 260.0151163 0 6451.413331 4345.008742 16492.91234 0 78.95652234 0 0 40250.21592 0 0 6728.024453 0 0 0 0 11.11981344 0 2552.624657 13095.70027 0 4466.762778 0.003226868199 0 0 0 608.3739414 9567.846988 0 0 0 2621.582605 0 0 0 0 0 0 0 0 0 633.090299 8159.773363 23185.53465 3437.181543 0 21676.31568 2328.502828 3174.931988 0 902.207735 7459.998519 0 0 12599.70042 12851.14363 0 11312.67038 0 1634.522398 9613.891395 0 17672.69497 0 7706.105993 881.4068769 0 62.25966577 18558.84312 5318.269263 0 1045.294653 0 0 1911.500761 118.0477957 0 1502.977921 4184.049073 2069.608005 6177.974145 3576.240497 0 0 0 0 0 0 0 0 38135.2008 5887.665534 0 0 5934.075476 0 0 3177.282518 0 0 0 0 17777.24225 0 153.6965151 0 0 0 6285.636318 34265.98777 0 0 0 60.14422473 16241.59952 6825.217294 0 0 0 0 4171.233036 0 6208.639345 0 87.60504894 0 0 0 1594.921693 0 3556.087854 0 9127.752867 0 6.611735189 0 0 0 0 0 0 0 +0 0 5309.873882 949.2921724 0 4433.234937 0 0 41728.21283 0 16384.58759 95.41150914 0 0 0 3875.901551 16112.77295 1424.874179 747.5067784 0 0 1120.081512 0 0 0 0 0 1442.986815 154.6214829 300.1312414 0 0 0 4551.465954 2788.877215 0 38419.23913 6655.545069 2729.143337 407.8578424 0 30865.53713 4227.164279 58.9868396 41229.00114 0 4873.052692 0 95.43843735 1701.105868 0.6281981355 6.212589474 1773.329899 0 4233.012275 0 0 0 0 359.7435672 71121.08732 0 0 0 347.2887962 0 0 0 0 8628.03514 0.4269330274 0 0 0 75600.10377 0 582.6413385 7550.75705 0 0 0 50497.43661 0 5094.174616 29558.78442 0 2279.490664 6811.158893 3547.401601 61883.07152 0 2547.850455 3429.315907 0 4958.662239 27046.40516 1260.258201 0 6512.682543 15859.3287 79.75999053 0 2378.536462 0 11045.66012 0 0 6551.039726 6765.955316 39558.21774 2252.771355 9537.808363 3365.657067 0 1679.574382 1297.81536 0 12942.53393 8594.94345 3376.189648 3667.020959 0 1568.157534 1575.826694 0 53.35598127 21275.31268 3539.985431 10196.07907 163.6564525 1213.249125 19428.63294 60118.75364 194.2994216 19141.43273 0 15477.6836 293.408122 0 31327.60581 0 0 0 67.73183486 4854.667182 26422.57479 0 10715.44762 0 17305.43707 6906.320661 17866.82865 8934.231703 4061.500145 0 0 9170.125825 0 6000.613201 4170.87721 5139.978524 30960.71165 0 22600.6616 20145.71249 3174.673879 0 0 0 0 0 2383.660995 0 0 0 0 0 0 0 8041.189684 44.73138177 8214.122126 0 0 0 3620.987568 10446.24385 333.4734277 0 14559.8294 0 0 0 5933.765746 1917.781637 24988.59162 0 1290.852076 0 0 0 2608.410735 19541.29244 3028.312585 0 0 0 15959.09308 30266.24121 27529.79716 0 4587.014304 16558.95886 13494.69451 0 2142.570897 0 212.7605823 0 6678.562892 0 4.306070163e-07 0 371.2390949 54227.12678 3205.79935 0 0 0 5149.26706 0 9073.813938 17551.40364 0 7820.325561 0 0 0 17328.72432 28702.19309 0 402.9934597 231.5355672 994.7410862 0 0 19996.11364 0 0 923.7040824 0 14202.38841 240.487365 0 2013.654835 32720.77004 0 0 388.1258788 0 7278.506486 14709.93255 60.65190301 0 2593.137802 10442.88764 55929.35664 40170.95363 0 429.2027668 17333.95785 0 20532.75096 0 0 0 0 1.320536105 0 0 0 4146.77179 61441.98685 162.1446137 7988.122114 2919.625206 0 0.01062269889 1367.370235 0 0 7060.836814 9386.963519 0 0 0 0 0 613.9246863 0 +0 28482.56033 503.5829222 3393.824802 0 0 0 0 10985.22716 0 2772.569961 5057.587529 4157.911118 2392.683101 575.300183 21984.74881 3614.144005 0 4392.665692 0 0 4565.562378 2369.778322 0 0 18183.72731 2748.556412 0 0 10225.42002 2522.045164 0 1466.314777 60175.34877 0 16298.1654 1.885393868e-06 0 0 4903.754365 0 8152.726635 525.9309835 31813.33939 3378.923614 0 4193.817789 0 4905.594947 0 324.9257758 0 28578.62623 4415.294 2238.327726 7473.844797 0 0 0 13217.42574 0 0 34802.54618 1011.738021 0 0 0 0 2703.852804 0 306.1905254 0 7790.177583 7804.945928 10989.66577 59862.21907 60963.17501 0 0 0 19958.5199 0 6307.686878 443.6632435 0 58307.2307 3128.985705 8560.253779 0 8994.285774 98346.29564 3696.849413 0 0 11076.23528 13024.26824 0 1613.649657 1601.574383 0 9150.626761 13531.9483 0 0 6035.81447 0 1442.504552 97.35484984 2542.994016 171.6451205 18589.74073 25.67430411 5.743523608 5759.652362 0 9112.314622 0 7142.360106 0 0 0 20744.54146 3579.724865 0 0 4425.321885 0 45283.32824 3169.398144 2015.260983 0.004732437032 9971.781984 29028.12697 3344.517509 65.44582986 0 0 0 0 33096.07908 0 0 16358.53222 37739.15924 0 42230.50792 0.0295355037 0 3468.525759 20148.5267 0 0 0 11951.98223 36585.18811 9857.664862 0 0 0.0198332744 0 0 0 0 69.12318073 4608.847108 0 17285.48906 2580.630976 18910.78095 0 0 0 0 0 11304.21616 0 8562.489227 4756.882041 11908.82096 2465.21174 9749.812203 12380.5599 0 0 42981.57363 12312.52301 22241.00275 0 58722.00824 11345.97125 9334.370524 4166.117798 53119.52097 2106.672352 0 0 0 0 37714.68035 47.65437301 0 6330.626683 0 0 40635.84755 3251.437172 0 0 0 0 0.008478307738 46952.02224 20716.40336 9926.613751 0 56246.409 0 69845.76816 6076.701961 9975.5534 52959.24361 0 23961.34817 2274.993641 0 8995.97306 1400.108387 0 22729.52743 811.0708285 0 0.1970889311 102.5104762 0 18215.02264 0 0 0 12615.30543 540.1242998 0 14718.03402 0 0 7830.575087 40.92174263 0 59571.55642 0 0 6714.046779 0 0 389.4351774 37878.94628 0 0 0 129.7791605 0 582.3688576 214.9976586 21945.90718 0 0 0 21565.59023 5.263279794e-15 0 0 4861.453751 4265.433916 0 1786.092004 9426.527794 3473.970705 0 0 40955.63191 0 0 0 0 0 5054.756149 7231.255593 2194.706163 0 1.346225189 0 0 0 2148.960557 0 10700.7468 15671.21281 0 0 0 0 +0 0 3050.189571 0 58168.30195 21065.15525 0 10950.23565 0 0 25006.72581 0 0 0 0 9.379168578 1815.600773 6087.006855 80.15542722 421.6023933 8982.892923 6884.535334 4807.226323 0 32.03789455 0 0 0 0 78.62238155 4167.274179 11116.34323 837.5853112 0 30084.89374 3468.254936 5675.586682 239.755111 0 8019.818447 0 169.9824186 0 0 10822.23339 239.6878192 121.3527548 457.4444888 0 281.947697 0 4836.811772 0 20889.72403 7495.874999 125.7379053 0 0 24040.64829 53366.16285 0.00325942313 0 22429.83901 22072.16747 0 0 0 24895.66059 0 0 0 0 0 0 2826.501167 5374.972138 0 4248.819333 0 0 0 2.180287866e-06 0 5589.050295 0 15190.78517 0 0 53.60929429 68515.1422 51318.93712 0 1.425733603e-06 457.1999955 0 4675.846075 18071.86854 0 31093.22504 21874.36711 0 0 1639.237624 0 0 931.7878906 44545.3896 0 8816.090277 6871.069335 2319.511332 0 0 0 6714.012442 1597.584832 4110.606672 286.5819499 688.7506571 0 2211.613601 1915.535996 0 2008.04123 0 916.0868033 0 7456.389585 0 0 3195.55811 0 51757.77104 860.8189451 0 349.1170023 0 8940.068781 0 0 18604.8434 2009.600306 2664.286962 0 16706.15961 32241.07488 0 10267.93951 3.579996077 15258.49778 0 4915.053309 3905.157704 19681.65395 5861.795401 0 0 26914.49335 7085.231722 0 3040.941087 2510.036069 0 299.3506703 30549.26906 21817.9103 0 14619.77558 1759.565509 2816.630133 11563.35701 0 4633.520713 64.24743908 0 11944.25186 7829.823866 0 0 0 0 6464.727501 0 297.7817766 0 0 887.726209 24817.76308 95.08731284 0 9357.12004 274.0117393 0 24025.30343 5647.238471 0 0 31696.9642 39163.81878 0 0 0 14272.57573 52.55496751 353.8122806 0 0 2830.0686 0 14691.3721 6962.219582 0 1013.654381 1803.426214 5287.640773 0 5970.027468 0 24861.91566 0 0 18235.53025 130.8565447 0 0 30607.14082 0 0 0 7661.095821 1.790049799 183.3397865 456.9361118 69424.52236 1523.377808 0.005557729494 1814.171382 0 2530.972431 0 0 209.2219864 1883.683702 0 12384.1429 28.58311254 0 23401.77476 4959.768389 0 0 0 296.3104551 0 12151.52703 4647.876997 372.7155502 76.95506616 372.97228 8667.221408 5895.507288 0 9366.811311 26860.04424 0 774.3422098 4119.167847 0 102.4615281 0 0 0 23033.00631 0 0 0 5248.828095 215.9172324 2446.596579 0 2084.454038 12475.81012 5.045009803 0 0 4507.943333 2935.101576 4806.931285 155.3777248 0 1079.052558 588.6506377 0 13902.21553 636.4867348 0 9.198271598e-16 2371.00779 52.67627014 429.0607983 +0 19288.04038 0 3857.450665 0 0 0 1842.212585 15331.79246 10769.64142 0 0 0 11242.00178 2492.767804 0 0 35562.15972 6730.42873 0 0 0 0 0 0 6739.959712 11961.52295 4906.403401 44033.17059 32192.10225 4378.525573 0 1727.115008 3374.773225 0 36014.87693 3690.224857 0 0 117.6179354 0 2127.896541 290.5031106 3780.546529 1998.38099 0 2743.677042 36.40692184 0 77138.7461 2293.428668 0 7563.914557 0 8078.772156 10693.38853 0 0 10390.39607 11292.75368 0 50765.19439 0 0 13625.20965 12292.59101 25413.27261 0 0 0 5.799586581e-17 7022.894012 0 0 0 58.23724633 1385.378634 0 10684.67608 0 90.42021788 16761.0104 0 0 524.6263352 0 0 0 4643.218816 84.30824607 0 0 0 0 4437.335879 0 7121.223639 2702.982011 2647.41583 0 0 22438.35129 0 15604.99844 0 0 27767.88718 3897.371365 0 14645.10925 0 17586.26801 0 0 0 0 7169.504604 0 0 7674.409598 40023.16787 0 0 134.7831072 3024.904203 21393.64732 5257.842602 166.2614511 13069.28811 4786.029157 0 0 0 708.2841269 967.5211409 10971.26978 0 0 0 0 8561.387226 0 3959.452514 464.3928378 57573.88881 0 1202.316321 20769.77886 3785.51456 21020.8649 13880.86676 0.008055432185 11136.65075 1620.054967 1579.07846 0 3708.957868 952.5330489 0 0 0 21421.64624 0 0 0 63292.54606 254.6287102 6655.13363 0.1293102273 2095.60474 9635.526393 4253.463165 0 17498.60505 3829.530955 0 39866.41448 8550.673478 0 4029.040672 1389.295728 0 25.26459375 34328.61541 14157.16538 87.92577827 3105.49923 2617.796255 10549.2824 0 5812.777698 1872.248296 0 0 0 0 0 0 4661.773324 6105.419204 0 0 1023.832497 66490.21991 5982.086046 0 0 2741.36385 16363.2479 0 2675.773829 0 0 0 0 0 0 4149.347689 3707.692267 19884.69464 0 0 172.5198938 0 0 4268.501193 8239.226893 2801.177867 5606.034787 0 0 0 0 0 0 0 0 59.49739084 0 28402.43289 0 0 31051.95804 0 0 3944.388625 0 0 0 0 0 12234.57862 189.4661294 48494.59185 0 14199.59592 0 0 0 4031.251109 0 31302.32889 0 0 13312.61074 16784.37059 149.8180571 33.03962719 0 0 0 2109.29554 8748.429307 0 65773.16794 0 14437.75087 3138.648583 58106.54702 0 0 10792.30388 0 28508.41236 0 7216.520925 0 2236.760136 7188.126306 42565.43123 0 0 19256.72767 2.545924459e-05 27505.0447 96.29377294 2691.695039 4127.481756 0 1440.235132 +0 0 0 0 31686.15601 27.74661422 0 0 0 0 0 0 0 0 0 0 2767.167625 0 3274.490893 0 55537.8676 0 605.1178441 1690.342372 0 4297.869089 88.52179379 0 6708.48897 0 7537.91305 0 0 0 6771.96448 0 2515.949453 96.00203452 0 0 0 0 5861.159176 29039.94649 13873.14113 4485.933113 0 0 0 24664.13535 10004.55795 39217.91005 4896.621832 781.3109765 5.981443974 7495.059123 0 17422.07978 0 0 0 0 14122.37132 5970.510423 0 0 2228.789719 0 0 0 3449.587015 0 14612.64177 0 0 74.90079502 0 0 2103.420291 168.5226758 5602.501418 7903.086937 0 1074.719003 0 1610.58513 17281.97485 0 63196.38976 3816.209656 0 30897.3165 0 0 16248.9481 1551.858387 2626.060662 7323.358081 575.0475369 0 0 26026.70076 2494.85185 2811.856194 4225.743931 0 29942.96965 1482.018723 43.46890587 0 86.59070361 0 0 0.6035541222 8543.909377 50931.10162 1448.538361 395.1133176 0 0 0 26365.28493 3807.494291 2327.331721 11367.78257 12205.14319 239.2948722 0 0 7565.311793 0 0 4693.326567 0 0 4608.782553 0 9088.752659 0 17229.80088 94.19841113 4031.450881 21729.0316 25094.25185 0 0 55.16874597 0 0 0 70159.79816 2039.750346 18060.63138 4700.727398 0 810.9491057 0 8639.948194 0 2445.427383 0 0 0 6817.972654 0 0 9.832342393 0.0003126110551 0 0 1.302034284e-05 463.0872242 5120.397974 0 22039.83214 505.0844292 0 2456.192388 6456.042608 3923.779407 0 35849.87406 0 5678.310786 0 494.0427738 2959.663469 10787.18918 1785.825749 15796.37459 13806.91439 846.783955 0 32737.42142 31059.62195 195.8467376 0 5153.057419 0 282.3660645 0 26.04408784 0 0 0 0 10.31250546 287.6176626 2288.729106 17910.36333 59659.12476 0 0 0 0 0 0 588.2047093 71.05827373 0 11829.56505 60.71504591 14108.0697 23676.65969 109.404004 0 321.1017816 3407.256874 0 0 25402.0362 0 0 171.1865282 8761.039323 1796.557442 0 0 0 2518.675191 5290.291997 2176.716203 0 0 8295.003896 31845.20037 9644.799472 8692.468742 0 10876.40161 0 1835.009149 40531.974 3842.702919 0 961.4418283 0 2374.754024 9599.417474 0 2925.588438 221.6821712 0 0 6992.515317 0 1568.419013 3078.83438 0 27.87946989 0 0 0 0 1883.300437 20078.41057 0 0 0 33852.42774 0 1839.206976 470.7657579 0.9937664958 18298.34938 0 14159.08745 4324.858246 0 0 0 2613.182325 0 0 39646.57566 227.6695213 0 0 0 815.5866903 +0 4646.458862 49.22495786 0 0 0 2232.962751 0 0 0 20789.40932 0 59.57612631 0 4457.083922 0 4239.006931 3696.485054 0 0 0 0 1331.50955 12678.84365 0 0 0 172.0602883 607.506172 0 6381.928141 0 0 0 50176.0411 0 2197.005903 18931.01766 6171.698325 0 0 0 1739.97625 5112.161806 0 30283.81595 0 1757.062328 0 0 15779.30917 0 5597.779929 0 0 155.593574 49972.59764 689.0981842 0 4656.117872 5925.843436 0 0 44826.52124 0 0 7119.416351 0 15165.13781 1533.271821 1730.764106 0 0 0 0 2854.76698 0 32008.38384 24562.00085 0 7084.933953 54864.9474 0 0 2313.169097 0 4870.857971 45202.73834 10293.52214 3670.760184 0 0 0 170.0805822 0 0 13832.27747 6813.735198 836.4595494 2009.500724 627.0081136 1253.197146 0 0 1969.937421 44276.51392 0 88.25167058 148.3493924 1749.775305 0 0 0 839.4020292 795.9616275 16835.71396 0 0 0 0 6209.003248 1585.158369 53911.04353 401.3245508 60698.47898 0 0 0 0 0 0 0 9.3654775e-05 0 0 0 5952.949487 2866.466528 2844.383691 95.74224132 0 0 19655.24662 0 0 0 0 77331.35599 11982.64265 0 6575.372762 0 5841.82298 0 9.310683898e-16 0 0 1003.487844 1159.957181 0 0 63.32910128 0 0 8079.801184 0 0 563.1986312 7902.279163 0 3453.745825 0 0 18912.44235 0 13819.90251 0 18305.23366 32602.34347 0.0008472127704 0 233.1779734 120.2073963 2657.455201 244.9145171 0 57364.74255 0 115.4101666 0 0 0 0 0 0 0 3697.745133 0 2297.715842 0 1232.480442 2183.102595 0 0 0 646.8334256 257.8028826 0 2684.157824 0 6892.101578 1.499874961 0 68593.41645 0 38777.9002 34981.1119 0 10940.16705 288.4485274 0 233.3309007 15011.30941 3217.411173 7178.15705 1891.464136 2074.542761 0 0 0 2665.412129 2790.708969 0 27826.86928 6732.018441 0 51.18948565 0 75.31473311 0 6.792574322e-13 0 6402.716246 3459.629269 3108.141174 0 57569.36711 0 14470.09702 0 0 0 0 0 11588.73885 1886.460747 0 2476.717085 278.840809 2213.761779 10437.28337 0 0 1109.607194 5639.50663 0 0 0 6869.037644 0 0 0 0 0 0 0 1062.69148 0 0 19174.95532 143.4197311 0 0 0 0 254.5116788 3801.187112 20211.08578 152.5682344 0 0 0 0 0 49.40168 11352.05302 0 0 0 5213.455513 +0 4550.664159 0 0 98.80935472 34069.75131 6568.252473 2216.597365 0 0 0 0 0 3728.665438 15069.94808 5810.6553 6884.713374 0 0 331.4773747 0 0 12394.47208 4395.859494 0 2142.395894 0 0 0 0 34.34836597 8677.653371 258.4803955 0 1910.665314 0 54476.19649 0 32172.28894 0 7408.37612 0 0 2353.435925 0 0 0 14758.77039 16143.55253 0 0 0 24469.83937 416.5685765 7620.68261 0 0 6380.906999 0 0 0 262.3746082 2302.753204 0 21557.71792 0 102.9623931 0 0 0 47230.23516 0 0 9002.9226 35.1572028 2495.381457 9168.717629 0 11177.4695 6082.814756 0 0 4135.142081 0 0 1483.502786 9477.337833 0 41041.89928 12411.80355 0 0 14789.49234 9539.657161 18118.51749 277.3719306 0 7611.575822 1606.609565 0 13908.85491 9898.070681 0 14986.79876 0 595.4936317 24424.22195 15918.00349 0 0 0 3985.580156 0 0 2635.504164 14171.09941 0 107.3443447 0 8521.111499 0 0 27111.6421 0 9844.739094 3332.539445 0 0 0 1837.820615 26790.54637 39.35395644 0 30.21495082 1112.855585 0 1570.853896 0 410.8386925 4323.392238 40822.50907 3805.558375 9153.967646 21341.22902 0 0 8555.087111 318.2661628 278.5872191 1673.76868 0 2499.24788 324.1189993 0 2816.793119 0 0 7006.889501 14595.20952 51067.29895 0 0 465.9891812 0 4755.834208 0 19879.56656 290.4944549 4213.34281 57.19739704 9923.645536 0 23477.92403 0 0 0 5416.447473 22321.74576 395.2924861 18051.5279 5200.349295 28165.56001 44454.47437 1823.936591 3037.399521 0 34326.45932 8399.198897 0 8773.000401 0 0 0 16684.55014 0.0005087514066 15526.9389 15370.00215 280.9134853 28.75346862 7365.906409 0 0 0 23.53543734 38193.03558 0 394.707026 17230.96457 0 0 1991.301767 10727.37669 5205.54052 112.8203769 0 135.1977913 0 0 0 6652.377569 0 49.18542804 0 0 73.22779753 8296.218548 0 3216.61743 0 0 0 0 0 7791.298306 309.7008657 830.2118223 6279.274834 1837.339678 3198.568759 26.9138 0.1448746485 0 44356.09045 66431.02165 1943.825328 2987.223033 15996.29907 607.490094 26834.35162 2872.284408 8467.486951 0 7436.816817 0 39207.29067 238.5367348 6628.31833 48667.406 15136.31339 0 0 0 0 0 0 8149.248856 31706.42389 0 0 6027.279015 20225.90064 4112.877536 1448.53016 1970.247595 7562.103233 3448.105142 5069.313768 0 174.1803288 0 55.71129509 0 0 0 0 0 7226.577426 18893.94526 0 0 9752.06783 12386.94519 51.22636893 5730.259293 7359.467544 0 10982.6452 11653.89147 0 0 +629.0277197 5164.087528 287.5666937 660.544036 0 0 0 0 29.28170875 0 8680.182075 0 680.1175319 0 0 333.1804315 4145.346489 17252.64453 6332.16404 3645.701538 31127.20492 0 0 0 0 0 0 3413.807196 0 6841.074522 0 0 0 0 0 0 12618.88964 0 22129.21209 494.5314823 0 0 0 0 0 8379.554359 0 4095.172718 8474.24264 51090.33765 0 11684.78934 30694.76442 0 0 1458.99534 0 0 143.0744923 55853.92167 3934.10278 22248.31726 0 0.1672546194 0 0 0 25259.91312 0 12574.72679 0 0 0 46465.96228 8281.072601 0 1709.3443 4672.243164 0 0 238.1420572 6001.969162 25190.79768 0 0 0 0 13884.03457 59568.05098 0 12686.46091 12810.50973 4707.03775 6630.67366 9548.912416 0 0 0 4675.629828 0 0 17602.07083 21148.89247 49507.25517 21232.50225 0 14992.06976 46838.39295 0 1865.565847 28787.84383 0 2737.440529 2273.063078 3436.887391 3635.006196 0 26522.89395 0 2173.190867 6065.046306 4478.453917 45117.89766 0 15267.37172 126.5592765 3094.191766 0 29830.81608 0 0 12939.88534 1976.26836 615.4491659 0 2029.720688 9742.37151 0 0 12.58856701 3746.583815 0 0 0 0 0 18874.89548 0 0 21540.85366 470.2493198 12711.69614 37828.88149 6590.014511 0 0 2663.436765 0 0 7297.603354 14886.03792 0 8665.682464 0 30082.13972 5256.823149 4334.388717 5095.710518 0 0 0 0 3614.340766 6447.979421 0 0 0 0 3736.084889 41.16547185 0 11041.70358 2442.263174 183.1760318 0 0 7985.932415 0 0 1624.287279 5883.583114 136.7613195 2388.35652 0 0 234.2320455 0 0 1378.536732 68.85378599 3718.693418 9796.763393 0.03529518157 17317.27237 0 6653.831857 0 0 2120.504943 4389.269816 1866.979215 5224.987563 0 547.0816646 3351.130505 10723.00427 6677.827397 857.9848246 82.58090537 0 6517.262911 78.62089868 371.161763 0 0 9043.921145 25123.66144 14066.26692 0 13983.47582 3798.485922 15643.89857 38474.8796 1455.77276 0 5584.076179 0 0 14206.53987 2980.349263 0 0 0 0 7839.22069 0 0 0 13434.11685 13558.41535 56.68640355 0 108.6679758 0 5530.37011 6067.460096 0 0 0 0 752.4754762 962.5379495 178.2884037 0 0 0 0 0 0 0 47.20895886 0 4124.213068 0 1765.748593 507.9489049 0 62223.00164 8701.763024 13313.38037 0 7888.538251 1517.931914 2034.809981 4133.606181 519.2326955 0 0 0 0 2128.799042 0 0 0 0 0 0 5869.893192 7.646344138e-05 1825.06134 +0 0 0 858.4759474 0 6127.203749 0 11132.30257 0 0 1950.46329 26624.33989 0 11304.52339 0 0 0 156.6863543 5206.896993 0 6165.729471 2220.732386 22576.64161 0 0 0 0 728.0820691 0 0 0 21626.92329 4479.150733 0 0 0 0 0 0 17093.32735 0 3670.23029 0 1451.28362 5432.136565 0 0 0 41306.95474 0 4538.18556 3887.142938 3891.263688 0 7737.806716 7523.355767 0 0 0 0 3782.438646 0 0 0 0 0 1822.543425 0 13971.55613 0 7127.358105 2872.128507 2210.14944 0 0 2497.647564 350.6526664 0 65092.38753 0 0 0 2621.225472 24431.44185 0 1752.929596 18007.0945 19428.00799 2795.026867 0 0 936.5999836 0 28911.97603 2041.456551 0 0 130.3579786 681.309967 0 5660.919372 0 0 321.4069382 0 591.431203 26674.71836 4101.618057 3902.023745 2680.992028 0 0 0 1519.451374 13346.59665 5305.285245 9207.119997 0 242.367865 44.26712765 35.2127391 0 0 0 0 332.3123335 2609.322765 0 1218.828929 0.06156599937 0 0 0 52.47755251 0 0 1805.453664 0 0 637.5042873 11885.72272 0 23486.59994 0 1981.162959 0 0 2352.987319 0 11012.8776 0 0 56207.32386 0 0 0 0 0 0 1985.364689 0 36562.14398 0 9889.505464 0 0 5422.054428 874.3644844 0 15580.41314 2780.14867 0 11247.85142 62735.67256 0 9538.669674 40049.54817 510.5025329 0 39.89725127 0 0 0 1602.281623 0 0 5663.290561 18989.10694 3616.106286 45004.33767 0 47799.89469 3014.065634 73213.47419 38.88341234 0 9886.58062 0 16708.73767 11138.95102 33090.38327 20471.11557 6026.159028 0 0 2633.177943 0 0 4870.511292 8680.747978 0 1713.355511 239.7179276 0 1154.624948 0 0 0 21708.83558 108.5290541 0 33751.84581 12213.37677 6399.534371 0 0 54153.82794 0 66598.759 0 0 39980.93479 1941.12535 0 0 0 0 0 0 3175.758497 6036.69266 3312.233938 0 0 31316.16909 0 0 71953.75529 0 4006.198634 0 0 2583.770873 19903.24842 2991.261399 61.91998561 0 0 0 3844.552476 9748.752768 0 0 0 0 57.6847821 0 0 0 282.9642012 2802.579773 346.3510598 0 14708.84537 11346.17187 0 0 1208.499091 0 1765.078814 0 147.4695901 0 0 4008.964424 7395.486931 0 0 0 0 19805.23618 0 0 2996.071557 0 0 4485.529754 0 125.0609633 59296.82127 +27681.72878 0 0 0 21177.40454 92.38931338 0 4356.691347 0 0.05924620875 8301.115779 0 0 0 0 40073.36957 14635.875 18270.99085 570.432615 0 0 13259.66674 0 0 0 0 0 0 1891.785417 5393.036351 0 54898.20284 0 0 1568.717324 0 0 12441.62937 0 0 11.53448081 383.1943954 0 0 31054.94155 0 0 0 354.305756 2095.168029 61480.22408 0 0 0 720.5041402 45454.43872 0 0 0 0 6004.6196 13610.55308 2303.050091 0 13622.49727 1536.95735 0 0 28.50906727 24982.56096 114.732056 156.5874618 15852.55759 0 0 565.3350538 0 0 1475.073644 0 0 0 0 0 6637.915549 0 1864.143485 0 0 0 0 0 0 4738.366107 0 22706.09685 13.72155849 44534.8455 9.493571069 45928.90517 0 23148.36533 0 0 251.7142789 9883.594667 43272.40404 7.325723583 19115.16032 96.23452631 70092.44516 0 0 37211.615 0 0 0 725.864806 63604.94335 0 0 21865.2368 0 0 0 0 0 12523.16473 12708.11629 0 17220.97799 59959.52366 0 8379.143514 96.02123688 459.2065961 0 4014.866867 1674.280321 2784.307764 2969.335831 3731.200006 13424.88253 0 0 5363.937306 1191.946768 0 1146.66097 0 3490.431183 0 1209.885097 0 250.0478441 22936.13482 0 0 919.497972 1027.125285 0 0 2136.470204 0 1535.62906 0 0 320.5626785 2753.343088 0 0 4256.463523 1958.680441 5543.883127 75.66862477 20144.52128 0 36340.73073 0 0 0 0 434.754575 13370.22286 0 0 0 2322.812498 2354.420793 13348.2644 1270.695621 0 11768.416 53741.91646 0 41.97353209 0 114.2144367 0 0 0 0 1989.203975 33330.89391 0 33681.17084 0 58270.2285 0 0 0 0 5213.616765 1787.451074 1533.495794 21950.08657 2572.869201 0 0 0 0 13508.60195 454.228556 31.03530435 0 1037.613994 2127.966616 1432.559573 3539.859725 23824.75849 0 50.84679393 0 23.20656013 0 0 0 0 7136.161868 0 235.6439786 15393.3435 8024.07298 0 41524.34837 0 0 24442.4013 1644.977696 0 11470.33673 0 38104.96529 0 0 0 0 4084.827283 5647.536061 0 311.3895979 10671.61637 0 11433.74652 0 6655.503766 0 33921.30694 0 0 274.1602053 0.001939922148 0 0 0 0 396.1696482 2545.24598 29113.13984 0 9515.38316 0 0 0 0 3923.312134 0 0 0 4242.916761 29168.58085 784.8118584 2768.796783 0 290.6487034 1754.446318 0 0 0 0 +1775.81417 7647.247826 0 366.1824709 0 0 0 3033.084389 0 0 0 0 0 0 0 47.39031567 0 0 0 0 0 0 0 9026.670157 0 0 0 0 0 37221.20089 0 0 0 0 983.3715096 8167.299391 0 0 0 0 0 0 0 0 0 52475.70312 0 94.69875164 5311.200586 0 74717.867 0 0 12143.76423 0 2544.559926 0 2586.176814 0 9280.47462 0 0 0 237.0660667 15605.96295 1715.26568 8702.992137 4417.114992 248.4257838 1264.87498 9672.758578 6638.010263 0 0 499.3981192 1858.454631 0 182.517668 0 34703.55767 0 0 14298.22199 190.2379114 1553.489527 232.3071804 0 8170.300434 0 1220.696457 3090.67576 0 11270.89288 0 0 0 11155.26079 88.80056232 3909.961535 1275.955046 2266.733488 0 2026.523853 7744.026988 10597.57278 2299.624546 3763.42106 7128.165485 0 51801.55031 0 0 0 0 0 805.9107721 0 3461.50744 0 2900.426192 0 192.2837703 0 0 0 0 0 0 0 51633.98089 4662.754931 0 0 0 152.4033991 3652.823704 2110.09552 0 2917.027772 0 3188.78376 22821.17953 22882.70829 0 15380.23782 4639.302742 12557.5041 0 0 23393.85495 0 0 0 0 0 0 68.74755273 0 7300.399964 100.7208376 0 0 0 784.401912 0 10906.3043 0 0 1481.729807 7.846426346 0 84.35587905 0 0 11617.30255 3598.079903 31267.33819 10038.76814 0 16390.5903 8205.35557 0 6161.027313 15275.20888 9349.516784 0 0 0 41697.12455 0 0 0 24434.10187 2676.219055 0 0 0 11775.13963 0 0 0 58761.24053 0 0 14100.61763 15484.92142 4736.196408 40022.43312 0.0003334244031 1677.393905 107.5921163 42821.95405 3916.542717 884.1609187 15392.21838 9919.725875 21289.29365 0 0 23794.40799 17538.75463 2033.648894 102.052935 0 2765.615147 4987.079051 14515.72965 4418.21075 2637.706849 29.0454612 4228.058094 15013.44249 0 5483.990016 0 37.0050529 20.04421717 38524.10276 0 0 0 0 6035.382278 0 3387.778539 0 0 19732.73663 0 30298.33566 0 0 1633.374723 185.0168194 0 1287.207271 0 2199.799404 0 0 0 0 2152.861219 593.8911332 0 0 0 7313.113105 0 0 0 3455.44438 0 0 0 0 647.5907327 0 0 4003.684599 0 53764.98512 0 59.83719322 0 4396.874809 0 0 0 0 0 7337.083253 2809.645867 44134.66037 257.6656872 0 35.33439273 256.8897306 8834.265598 0 +0 0 0 6017.505824 0 0 0 2517.400204 0 0 0 0 0 0 991.1919807 0 8771.027117 0 4010.598805 7832.761767 0 8212.925818 12557.199 3913.842622 0 0 0 973.7611253 0 0 12438.55151 11924.4282 0 0 0 0 4.999349355 4239.443227 4235.728814 0 0 10623.27261 4429.025769 193.2473579 5863.605495 0 0 0 22645.86339 3544.662336 0 0 11580.71874 14767.74917 0 0 8411.98828 3840.38845 0 0 8245.610269 0 7840.288092 0 0 2372.891619 19477.57054 88.91641462 0 4601.581871 72.54119203 9172.246378 21819.06266 18432.35592 38944.03367 0 1768.378323 0 56.9296487 0 2446.124667 147.167092 12773.7801 12100.11501 0 0 0 12266.15676 0 998.5648778 908.3551691 0 40.88983799 2583.093918 0 0 0 0 0 75543.56781 0 0 0 41386.19257 5970.793411 2881.46446 0 1.006182799e-05 0 0 283.4466575 0 0 3047.008089 0 0 0.02164108911 0 0 0 0 15226.05564 15437.06044 0 0 9542.20917 0 11731.60401 9981.703291 1322.30622 0 0 17125.70643 0 43552.89978 0 1067.439725 0 0 0 50162.48191 0 0 3050.560172 0 3052.485353 5673.014634 822.6796652 9435.928581 1834.421898 1425.909917 0 0 41759.74006 308.8298624 0 65.58916989 1784.049293 0 721.5049215 0.6275482131 32745.62044 6850.492605 0 10666.47942 12891.99115 0 205.1759047 3127.622918 732.3421195 1966.880945 488.9541729 1670.77839 0 25962.40668 9489.000635 0 418.0911105 23006.33502 710.5168866 3809.197384 0 718.0662133 2251.757421 16668.51424 4324.291645 17115.27742 0 244.2003565 1371.078989 36379.99097 0 2587.20421 0 3501.464542 6463.132406 0 0 3235.201002 20580.37126 5980.523023 17071.35993 1008.100732 0 3350.62582 14345.22461 0 905.3450219 0 1581.149393 0 20970.67196 139.4026406 0 0 659.7782732 0 0 0 20670.02071 308.1635012 3175.221086 0 0 6778.096443 0 284.9213285 0 0 61438.65084 0 0 0 0 0 1997.465756 0 28726.60499 1818.056126 4583.080302 1578.933335 0 15017.82659 0 83.59309126 0 25295.58212 0 0 0 0 33563.06773 6745.929777 0 10801.71366 0 7599.857246 0 0 11266.92113 4327.227178 7584.276823 1456.832369 0 0 3069.911251 112.6866403 0 1539.836282 0 59.71947645 0 505.919549 0 3040.501811 0.0006953316241 18526.16715 4752.169489 0 13823.02351 64.87557809 0 0 0 20721.31685 0 60463.68775 0 0 0 0 0 3259.717713 20614.64905 0 0 0 0 294.3049649 0 +0 0 0 4397.748163 0 0 14051.29268 10229.28323 0 0 10494.61679 0 0 1608.494805 0 0 24752.4498 0 5382.634951 0 1861.267196 46276.69011 0 7550.06341 0 17718.14457 0 0 31687.50157 0 33757.32551 0 0 2.161404357e-05 16901.51344 203.2032919 0 3344.797588 0 0 8422.172704 12119.5804 0 0 6880.907595 9908.209824 83.15575866 0 0 22.16754265 0 13973.39014 0 17616.79134 0 13001.19602 0 2.482007126e-14 0 0 12619.53838 0 1318.238154 55905.68978 15.38258674 20703.1734 1523.767376 0 72.93497205 0 3570.019504 0 0 0.03242832667 0 0 0 0 63.70165491 6264.174439 2452.262162 404.2413853 2082.656186 0 0 1591.201846 0 0 0 0 10978.29641 0 0 0 0 0 0 4996.325139 0 3905.546527 13204.57748 32370.66675 11388.8039 15581.57543 0 24039.60794 0 0 1130.507952 34560.53506 23703.59095 41493.6662 0 0 18856.15509 0 0 8444.185866 279.7752842 0 0 0 0 2708.743871 78.91952889 4113.347289 0 0 18558.78461 0 4147.711571 0 85.76121108 0 0.4095794662 0 18563.75622 55867.54 0 0 7399.783574 8465.619262 23.85663558 0 0 0 0 11347.08272 1619.102313 3737.625192 110.934617 0 16456.66001 45226.37593 55923.92827 230.5802362 5789.967846 0 368.3603136 0 641.4922057 0 37224.01203 0 25159.86949 3947.902709 34.53562957 0 134.8611364 0 13.95035841 0 1958.364032 0 0 0 0 21407.38588 0 16924.56653 0 0 3224.03476 0 0 0 0 0 0 1588.357094 18186.34867 0 2798.119009 2041.834471 0 0 25319.35711 9813.724319 39220.89103 768.9457442 9324.868599 43764.60684 0 0 0 7024.606873 435.0117852 0 17969.39864 10235.76719 0 0 0 61062.01314 4836.724817 16809.26062 0 0 52.28037207 3581.529321 2462.033492 0 0 0 0 0 0 72.02027021 1600.179179 0 101.6516167 0 0 0 91.42575024 21518.1707 1040.128791 0 14618.46244 27859.83059 0 127.2614721 0 2.042681781e-06 3711.751846 0 0 4263.441589 0 0 0 4854.239734 0 0 0 0 5497.439108 14094.153 0 4171.982344 14632.93645 2.433043808 97.65262256 18017.97112 0 0 238.7016353 0 0 0 9398.006982 0 9368.84267 0 0 0 18155.17306 28929.37039 3739.593435 0 22394.64724 42290.40303 184.2786137 0 0 9841.821641 0 15958.83059 1421.263182 13959.5467 4452.406504 0 0.07896119775 0 0 10969.26578 0 0 26299.45761 425.1989629 +124.0636189 0 6245.545716 3030.445721 0 5996.859381 0 0 4700.508421 0 0 0 0 26138.54647 0 0 0 1216.362668 642.0046737 6339.756089 0 0 0 0 0 0 0 0 0 0 5497.217155 35189.65339 0 2628.361983 8196.255837 2117.981512 1294.223828 0 0 0 36971.397 897.7086164 0 0 1076.030006 8291.991253 776.4592316 1773.853676 2349.234287 0 8514.990513 0 0 23031.23062 0 0 394.8783979 13051.25067 0 0 0 10454.86131 0 0 0 3263.549837 0 0 0 1846.579956 0 0 0 4406.518495 4164.916222 3781.663021 0 0 20398.57926 0 142.0641126 909.9388619 0 0 0 22858.55387 238.5834074 0 0 3947.951637 77.54402586 46725.32922 0 7568.376186 0 16473.68475 9719.504026 0 12317.67331 9601.520842 0 0 0 121.9521826 36001.74351 0 8335.551439 5228.872932 0 0 521.0940954 2581.268093 0 0 5997.625446 24294.11267 10844.12314 0 24407.64662 4401.269013 28331.56887 2377.18403 14004.83548 0 0 44974.27762 0 5164.113902 0 0 0 2334.66729 0 8229.641999 0 44507.41065 0 24876.9097 0 9038.873116 0 4047.564269 610.3626202 0 0 55351.70404 6756.698309 10197.22892 12544.62449 23272.03783 9050.85768 4040.730092 0 1885.093732 6664.711177 82.97522124 0 146.2340776 7951.238105 0 0 17880.58111 0 10036.77307 0 0 0 4012.37981 20254.42041 2220.206403 0 0 41311.67191 0 3004.614273 8086.717037 130.7209955 5096.542729 24191.19801 0 0 0 0 230.6554774 4582.506303 0 0 2476.290915 0 0 9361.991243 23794.93238 0 0 0 0 9404.502378 0 109.4597473 118.8585992 329.7586045 0 0 9067.556502 19156.90149 2343.699388 0 13839.17244 0 0 0 0 17499.62062 0 0 346.579719 0 0 3336.491189 11201.62732 13175.74557 0 6720.668072 7209.385053 0 0 0 0 2649.928677 0 0 8797.664738 323.6483482 13045.83856 0 14444.19311 0 16529.59445 33446.92615 2295.557956 1647.912908 2023.553223 114.0978444 0 0 0 1581.966125 0 0 519.1759247 73.08678688 0 0 0 0 0 1695.944301 0 0 3979.763413 0 0 2861.893928 5.663275093e-10 0 0 0 0 1304.012488 0 2701.56451 6033.564804 0 15399.63445 54120.53036 4526.095998 291.7674601 0 0 0 173.914519 0 0 2719.000299 30380.70951 0 0 0 5056.560177 0 0 0 13499.13216 50.48347934 0 0 4151.553887 57.62502972 0 1128.017213 +0 2868.444793 4206.093633 0 11667.47138 0 0 0 0 8193.259082 0 0 46.71152808 0 14560.06449 20833.43481 0 0 2930.063639 0 0 0 0 0 2192.115803 0 687.138303 28537.07526 0 6408.041323 5684.911414 0 3537.469279 0 6455.963762 0 4129.668757 0 0 0 2760.446988 0 25.21449432 14105.23118 0 0 0 0 0 0 0 5887.39313 0 148.4781728 54100.55363 0 0 0 6008.584942 0 6717.934269 37.21086632 0 7458.547436 4058.917375 4141.631287 0 14583.25676 30.04797237 1702.378842 15083.69078 0 20051.4999 0 4553.479886 0 0 0 0 612.3667328 68143.07195 0 0 0 0 3899.084036 55671.00824 2603.220654 6403.164859 2610.035071 0 5798.375311 0 0 127.9844169 3922.212992 0 0 10432.84277 0 398.842476 18541.38785 4763.191809 0 1066.269614 0 0 16681.87046 0 4043.421213 0 0 0 0 2183.355367 0 3.58146349e-09 14020.38795 3910.849293 0 0 0 0 0 0 0 2450.944556 41737.33682 0 0 4721.412809 0 0 0 0 22103.40805 2388.519412 0 0 0 0 0 5804.213731 0 0 18730.0009 10663.01922 0 5666.938565 0 0 0 241.1772258 24808.80126 4311.959901 1.266283594e-09 0 1.340121685e-07 42224.33316 0 0 0 5135.183013 44.88008192 0 6209.735001 212.3000594 23155.49623 0 0 104.6935358 12476.13442 2302.579722 13436.27465 0 0 0 9436.99152 0 0 21427.96916 13339.86225 0 0 268.6031198 1587.402051 5972.826242 0 0 42561.2099 1672.431093 4030.377132 39319.87094 102.6043642 2450.002178 37589.32826 0 3993.321419 0 0 0 16260.00346 334.1978898 0 0 0 0 28.41643449 0 0 0 14326.10928 0 18.48326773 0 0 0 7588.630239 0 3164.599855 907.8354587 0 762.4329473 122.7022116 0 19485.35113 0 22019.15035 51396.66754 0 0 0 10.242442 17033.5107 17459.86531 8358.854601 0 0 0 0 0 0 0 0 0 56657.5996 29786.60296 5483.073911 1060.200969 0 8691.253775 0 0 0 6380.7435 30518.08162 0 0 0 5513.912748 0 0 0 0 0 189.4955104 0 1571.838948 92.88589533 0 0 0 0 0 0 6463.553467 0 0.1007048469 0 0 21346.64143 0 0 0 12039.54291 0 0 0 0 460.6729359 37569.39011 8838.401534 5385.921568 20396.04446 22990.29151 0 25917.76462 4417.857432 0 10136.93165 +7922.165556 2616.237992 2455.62561 0 0 0 0 0 0 69.40916952 0 0 16900.9131 3909.126112 0 0 1496.438227 23371.52427 0 2165.597165 0 0 0 0 0 2204.859775 0 3760.417607 0 5468.487866 0 0 0 0 38.81250667 0 0 2677.776228 0 0 0 220.0923939 0 80.18308902 18869.89859 5701.204983 3571.004356 2124.668941 0 0 1596.672051 0 45449.81269 0 121.7874445 0 0 179.2732064 0 52739.42379 4749.028256 3600.796421 0 36554.52585 38.79138016 0 2096.344416 19970.8878 948.6587098 7613.190048 0 0 3.667297444 7374.691982 0 0 0 0 39.10879256 0 0 0 14314.91928 0 0 0 0 0 10699.25877 0 2811.118993 2525.986402 629.2462402 6392.755775 26410.53475 0 0 0 64214.84856 1709.111834 87.80053944 65.85408588 324.2119396 0 0 37122.46309 0 7721.958089 0 0 0 0 0 0 0 304.4903146 18706.33652 212.1471431 68495.76354 2655.133493 1827.772719 3897.495515 3839.860198 0 8953.872633 0 660.8065747 0 10845.68362 357.5006351 0 116.8440866 49328.52779 0 3339.041048 0 475.508979 0 3178.184905 30249.20939 2052.025427 3186.032974 0 7762.903873 0 0 91.98532009 35532.96393 50087.42756 0 29979.35475 11738.48344 12698.38351 0 3.464984303e-12 1959.772649 998.1375834 5175.85029 0 0 0 0 0 4439.715782 318.9209096 2.565187012 12834.92374 4735.977605 1769.990931 3046.639739 0 0 15451.33125 0 0 54597.73887 5823.732491 11122.9681 0 1703.113557 0 0 0 0 21981.95822 0 85.67219142 0 2406.910072 1541.68508 35945.41498 38261.11953 7147.807074 4583.104933 203.1430662 5976.297843 21714.65066 2775.047184 0 0 0 0 5159.314707 0 0 2774.092933 2266.571765 0 0 0 0 0 38.21783193 0 0 0 25426.8929 1566.281425 0 0 0 0 3915.499939 0 449.3283737 30047.1496 0 0 0 0 13906.60253 0 0 50523.10171 134.5845189 0 25693.58188 0 7398.373817 0 0 0 21429.05771 0 0 35653.22556 0 23893.23449 4228.864204 3000.313719 0 5051.62338 0 10299.28452 0 3714.103197 0 0 0 0 560.9674632 8666.386774 0 0 704.0315377 3140.17663 6544.633376 0 0 3446.471111 0 0 0 0 0 7059.747634 0 0 2156.446386 0 0 6301.745452 0 37085.82266 0 22893.22864 0 0 0 1179.289105 0 0 0 0 10880.61782 18780.96168 0 0 0 5219.657664 +23381.61471 1528.2877 0 20881.65121 0 0 0 7321.056779 6356.137872 16652.16318 0 3367.218538 5320.462282 19198.13694 0 2163.991163 0 321.0455376 0 6737.096225 0 0 0 3564.416613 8850.247494 1554.923153 0 3543.521281 0 0 50.88003599 0 0 0 0 0 0 0 0 570.5507006 46.30829906 5709.689889 0 0 0 0 0 0 0 0 7776.629064 2118.886633 0 46865.71045 0 0 0 90.35639831 0 0 0 8449.144464 0 121.0363134 0 17195.13282 0 2539.318432 0 276.6230979 2425.402894 7835.859993 0 1795.459417 0 0 2255.168477 0 0 80.20576518 0 618.6918915 17462.31238 0 20885.15761 24714.31786 3805.760379 3366.115879 2013.7685 47060.6036 4234.705993 5549.570575 0 13934.69485 4473.377518 10640.67946 11281.40706 303.2358805 514.1041371 11927.24689 11778.61005 9242.426493 1331.280387 0 0 0 0 6213.835274 2464.195897 36402.36957 409.7480038 0 23365.72057 12311.58781 0 26879.54607 61867.64067 0 0 0 5033.024285 667.3546414 0 0 28.25442492 3025.530485 17515.60322 1602.707355 33237.98022 10308.93286 0 70.2704552 0 4293.802376 27110.75787 0 0 2574.568297 50166.22503 3809.858684 54407.96029 0 4899.623246 0 30192.73329 0 810.2771839 0 2640.716618 5626.51281 2531.821994 0 0 3393.302776 0 0 0.1353478312 93.40841892 36.22301974 17954.50542 0 0 11795.642 12053.79572 7652.486143 0 0 11769.20521 239.8553296 2830.666224 3446.537777 14595.37139 0 55743.24674 12746.4064 17302.35903 1696.793624 0 3273.729513 0 0 0 6153.880341 7297.612767 16766.60174 1474.531374 835.4710279 14517.68562 12971.89648 64509.46447 4688.904042 0 17057.17825 0 7303.52908 0 0 4543.176145 46276.04337 462.2255396 792.2905442 0 0 32941.17328 9665.215517 4554.891134 0 5427.870146 301.1556924 94.14014274 31.01221552 0 348.642815 0 4774.84342 2184.412355 0 0 0 0 1386.932221 6689.847103 0 0 82.06226256 123.2339387 0 0 0 0 1496.163255 0 11302.29208 0 0 0 3358.017571 805.9646167 0 0 0 0 0 0 0 0 880.5383882 0 0 0 0 0 2927.526591 2551.048209 23817.60563 0 0 0 35264.82162 0 6083.377738 1647.351407 0.0009026912552 19551.35013 0 0 4853.795563 0 0 567.2479811 0 0 29278.7887 0 283.9155044 0 1034.765918 0 307.8183687 617.0843528 0 0 0 7254.830336 0 0 0 0 0 65.99797278 12311.74491 1905.146008 0 4433.867825 0 0 34.00823406 0 6.692719364e-15 0 +0 37157.89421 0 6039.349397 0 7916.011925 0 0 0 9642.321347 0 0 0 0 0 29136.10665 15447.35776 18991.61932 0 68.31155548 0 476.1533529 25.78331257 0 0 0 4381.581681 3809.187636 0 5052.859534 0 1523.553214 11810.0273 0 538.4769418 3879.621466 3572.367308 42403.77696 0 44485.3305 0 25178.57026 0 0 0 0 0 0 6452.995505 10250.34063 0 0 193.1572683 0 0 0 0 0 0 0 0 0 0 0 0 2470.39266 1713.769618 0 0 511.6534638 0 0 0 141.8629036 15164.48374 0 0 0 22835.44482 0 2298.363026 0 0 0 0 15298.89044 0 7121.435045 0 0 18108.85829 0 3875.557134 8644.804203 0 16321.72262 5.052258443e-05 5181.128292 1890.061953 5463.280073 2077.22023 1278.320345 0 0 8003.708232 0 0 110.3148883 0 23939.96164 0 43742.17196 3768.089914 0 5439.947061 0 1538.92799 0 18037.67446 102.6531823 31838.7547 46131.21554 0 0 7241.725798 5035.339809 5335.353761 440.737464 3932.710587 13184.24878 0 0 0 2066.322185 0 42.23810075 0 15693.54341 138.651742 10158.15594 58036.96702 59424.56037 6063.734806 1520.365687 0 1463.316972 12292.70012 0 793.3792863 106.1596059 0 962.9953178 3368.46196 1479.83856 0 7866.856696 3420.119368 1428.175674 0 901.9450192 8619.463005 40.46365276 2328.779119 2038.821571 8715.250593 0 0 22991.13976 6631.181552 15944.31164 0 0 0 490.9221319 33660.17458 9912.491751 0 0 15476.45581 0 0 0 1730.432565 44.47168262 0 0 0 0 0 0 0 3059.46418 333.2003399 8516.39915 0 52.6280432 0 0 4882.611904 409.0728592 485.9847015 2056.995896 0 0 8431.295421 16000.59648 24404.70752 0 0 0 4720.141534 2874.10754 142.777274 0 0 0 1819.806889 0 0 248.0870126 223.398983 26828.13823 0 0 2240.05209 15626.40309 0 0 0 77232.64329 5747.188143 0 0 10377.70291 0 0 0 64.30021088 0 0 0 6593.209733 7774.333242 0 19055.10044 7653.738501 0 349.6245613 122.9572729 0 8460.170747 0 4485.857098 0 0 0 5199.106578 0 573.8709515 0 0 0 4221.615487 13780.79888 0 15466.39392 0 41892.39437 0 3636.269147 11849.55484 0 0 28325.64372 22346.41396 38436.32859 0 23015.75584 10824.84601 0 0 0 0 0 0 0 0 3707.987801 0 0 0 0 15046.3735 0 2223.682411 0 0 6095.325517 0 113.3190002 +0 2481.372707 25092.56279 0 2326.122271 595.138031 344.5609804 0 0 0 0 0 0 0 0 0 0 0 825.2086107 0 41896.95969 185.4586091 0 0 1753.429222 1593.962358 0 0 0 4621.404509 24523.1403 0 0 14867.605 0 0 41927.72514 0 0 0 1835.854463 0 0 59005.45213 0 0 0 0 0 0 0 0 36.66761058 0 29921.58388 0 12139.99474 0 26731.2443 18229.97618 27278.47758 14590.39901 0 0 4413.747762 2076.235687 0 5804.339865 0 0 0 0 0 0 0 0 284.7651191 186.9741989 0 0 0 0 13489.68248 0 0 9449.080158 116.7629754 76.24135165 0 0 228.5271675 6135.409569 4951.811452 0 0 16809.11373 0 20131.36142 6108.264116 918.5889158 0 0 0 0 0 0 0 16397.73828 19282.32699 0 8564.3856 13011.9358 1136.504081 2653.415798 0 0 12556.48981 5618.126383 7134.887841 15446.44983 0 0 11650.72167 0 0 0 5266.725473 0 0 0 0 6021.853616 25878.99503 16850.98551 10174.15333 0 3.860510647e-17 0 0 0 0 15082.13077 0 19070.08589 0 2961.016148 0 48794.30034 1.989111146e-09 0 0 0 0 1841.814946 3890.493842 10008.54008 0 47166.8228 0 0 0 3628.316052 0 47385.49711 0 184.590307 935.3998881 0 0 224.5258264 0 25609.82524 43474.46678 46264.43343 5213.95789 0 43751.2082 0 0 4875.789731 0 0 1550.332038 0 0 1825.987551 1162.751551 0 44.57142253 55.91347845 0 0 0 399.3612334 0 6406.054509 0 0 0 377.6002829 3538.210912 0 17039.99419 23366.05164 0 12300.44739 12534.86602 5989.80387 10456.75081 0 0 7019.892708 0 49752.24005 0 0 0 176.4384174 0 9949.855749 0 18805.80743 0 6383.815682 9590.919648 0 0 0 5180.589093 32.62634898 0 21717.69478 0 3396.457643 0 0 0 0 23085.55355 0 0 0 0 0 715.2263695 0 0 753.4933881 0 0 0 3519.91938 0 53737.48899 93.6341086 178.2353956 0 67.92510145 14634.6113 5350.434836 2476.976115 0 2155.637083 468.2892317 9707.432002 2344.991793 1755.542426 0 0 0 0 1600.550286 27496.67025 185.8107748 0 0 9564.24038 5527.959022 1673.33909 0 11934.41537 0 168.6257308 0 618.5363788 0 66694.94569 512.4505337 304.7876795 0 0 3607.418686 0 0 0 0 0 0 0 0 +0 70.92201406 0 0 0 3474.554296 0 24089.41167 0.04978314236 5345.2909 0 0 1955.222308 16654.98736 0 0 0 26869.2295 0 0 10890.94014 0 201.4528945 24574.77852 11282.85458 3181.824116 6423.67451 2242.787188 3895.561785 0 0 17.49492378 0 0 30676.55715 0 1673.753528 0 104.8478837 0 49.45641638 0 77.0901125 0 0 0 7040.856983 8030.271479 0 1102.455234 0 0 0 0 0 23423.47764 18262.68961 0 0 239.294424 9886.426304 0 2267.580282 0 0 4103.517646 0 12595.29712 0 300.9866599 0 52375.20223 14099.90028 647.1549272 0 0 0 0 6458.119981 0 0 45879.78302 740.3651471 0 13145.00261 0 30.9325371 0 404.3897277 0 0 0 24095.7942 18539.97191 36542.06735 0 24810.12726 0 0 0 7812.852649 0 88.13268666 26521.14367 0 0 12762.28492 0 46752.51145 0 0 0 240.3780002 0 0 0 2535.077644 1485.298024 12253.79375 1582.380897 2021.681041 509.3383598 33.57505166 9598.499395 0 0 0 2635.417525 0 59107.04508 30732.7037 0 0 0 0 109.8384734 0 28522.94514 0 0 985.4963849 0 14674.92239 0 0 0 0 0 1492.163371 0 962.323285 0 1657.064846 0 0 46639.05835 1906.642408 6448.257903 473.8316374 0 0 0 0 23.4381051 2466.151893 1594.76721 804.6072544 9217.282265 0 0 0 0 0 2481.587719 0 0 0 1905.252748 7619.975412 0 0 0 4499.063005 0 0 32323.09035 0 0 0 0 21334.57628 22954.57063 0 23445.30953 0 1975.568413 3007.384571 0 0 5477.515662 0 3562.854312 0 0 487.0929718 16254.22438 1895.405254 0 2445.058849 604.8719322 3726.786991 511.5951472 8152.044766 0 0 3250.105542 0 568.2739652 20985.25421 180.9040756 2561.001805 0 0 2379.827761 53235.95014 4276.586115 5923.390248 48218.45315 0 34522.72997 0 0 5649.577468 0 0 0 18129.86712 33147.38246 17542.93589 305.3404396 0.1157232176 0 0 216.2194299 0 0 0 249.6791772 34802.53823 3276.338853 964.0234025 6179.345815 1942.267404 0 0 0 0 43.15778469 0 76.48469565 0 8401.866326 2543.811637 9751.421774 0 2403.078435 781.9802703 211.2661571 0 9272.729272 0 783.328091 1397.421405 0 0 0 11145.59398 0 0 209.4014914 0 0 0 0 408.1562555 2547.923202 0 1135.95471 4406.675216 2031.117968 0 890.9955569 0 0 0 0 44.34597657 0 26110.71592 18500.2436 +1388.096664 21293.63146 5189.055161 1239.507066 0 0 0 6765.684827 0 0 0 0 0 35041.98923 264.8239338 0 126.5451452 0 514.8395662 0 0 555.4957266 1452.609376 0 0 325.8096918 0 0 0 132.2828319 0 16079.7709 10357.5535 0 0 0 0 0 0 0 8411.01989 11301.30916 0 104.1155205 0 10944.6135 0 0 43269.19583 0 0 0 0 0 0 55543.19213 6493.324855 0 0 0 646.0193484 12674.77946 9739.5225 19921.42952 3947.085764 0 0 0 0 1498.37289 8201.383605 0.0002180670422 0 0 5208.048521 2495.23586 86.84656119 0 0 0 0 1.096372368 2728.815555 14296.46095 6087.900071 0 6076.813029 368.32699 6723.542863 0 0 0 2900.731213 45.69693458 0 21847.08679 0 0 281.6762043 0 0 0 6833.783259 8656.101323 0 5296.150543 0 0 0 0 0 0 0 631.3977818 1838.172804 4426.900176 22863.71659 2005.900325 0 475.7328786 0 0 3777.459955 4609.909774 0 0 0 19253.29135 0 0 2625.537571 3473.563011 0 2917.564817 29399.62752 0 23974.09346 0 8266.060616 55943.16218 2819.020079 162.2866264 93.40989156 0 0 2669.742912 5338.205773 0 867.8434126 10994.30218 0 852.0707973 5671.266186 0 2967.989993 0 801.169917 0 39438.58836 4.461275525 11741.82491 0 0 11924.43112 0 3077.112623 0 9009.348237 7690.198663 0 4134.492047 13110.2319 58.91436645 47.40229366 1968.204089 0 8099.520679 0 2342.306888 0 0 4624.62659 0 0 27621.39677 1870.200826 0 0 8562.736277 0 26595.70673 0 15097.03225 0 11217.3705 23559.45102 0 0 0 3258.080052 0 0 0 0 0 4052.728228 3024.78542 0 20374.06306 0 0 0 35854.79536 8157.68003 0 29728.70348 7105.940294 6857.877595 0 0 0 0 21584.49817 6788.999299 0 0 0 11254.22715 982.8136635 0 0 146.6673334 15034.731 2346.757457 15824.03092 13843.68715 29118.8612 993.5309138 0 4123.424514 0 0 12891.62707 0 156.3793039 38685.19522 0 0 3325.991593 11333.0124 0 1044.128347 1.256955221 2011.704402 0 12987.95667 0 6311.181629 114.6258648 829.4814873 0 25829.34872 0 8254.159115 0 3927.104999 64.25719845 8647.117305 0 0 0 0 0 0 20769.87513 0 51.57706891 2628.975776 8159.672753 0 2994.579136 0 0 0 0 0 0 0 0 0 0 0 22308.23455 19464.37411 5375.750853 0 0 0 0 0 +0 0 143.6709908 7780.360225 5512.473559 0 0 0 1267.781749 0 27492.87937 0 984.4510392 0 0 0 126.7173003 3847.454709 166.8216585 0 0 53.2591176 0 7333.557932 1125.763864 32.3327455 0 0 45732.34763 6075.8373 76.69662405 769.145755 0 12119.40447 431.4036239 23747.7154 0 0 4465.517819 0 3339.975307 0 0 0 0 3663.40387 0 0 2165.902463 0 0 0 0 0 0 0 0 4312.265615 1231.177203 0 0 11414.79792 24592.13747 7440.596966 0 7855.462657 59.14759044 0 0 1611.904547 3857.353077 0 6759.979326 5144.148991 0 5670.288776 0 0 8207.040382 0 27633.02417 61150.24056 0 0 0 2438.424147 0 10643.88238 12146.35891 2143.170259 0 1533.475592 0 28160.20317 2784.289316 14076.10199 0 0 0 8365.357316 12554.53009 0 5298.316352 0 0 18114.1823 0 13239.32733 3750.01524 0 0 26097.4653 0 272.0983082 13896.04666 14908.59745 6564.46183 0 8496.115416 0 0 0 11927.34068 4164.362093 14184.94143 104.85576 0 3.164893003e-09 0 0 2698.138952 0 0 7561.650762 0 5.082225051e-09 0 0 0 855.0929998 12798.93523 21832.92418 0 0 2904.645409 22024.18653 11480.27031 7120.658763 3054.506267 0 2135.231935 7733.240138 0 2875.494476 11415.45796 2499.800704 0 3565.070196 0 0 61365.71194 0 2668.765986 0 32996.46512 4440.715987 0 0 0 2574.489125 5454.621067 173.0018166 0 0 0 0 366.7772779 889.0447004 0 37.38631233 0 63893.56477 3285.976933 0 0 0 0 16643.79562 0 700.5487673 0 1667.728817 0 327.1583091 192.3247564 0 0 0 17887.9406 0 9853.822118 9223.571394 0 0 0 0 0 0 3825.914988 10148.12337 10176.96708 0 10556.52772 40093.96415 1554.893288 0 6730.463636 0 468.5698791 0 0 38194.24101 5812.869435 5141.469116 5834.217632 0 6176.66082 0 0 6529.015905 0 0 0 0 19089.73144 1133.318386 0 0 13983.63626 5017.072077 3820.082763 0 332.7437681 0 5082.911836 0 0 35.92121261 801.4216304 17348.11831 0 0 30728.56696 0 2078.284577 58.23447234 1543.206321 673.2766263 30112.34183 0 0 0 0 1730.381677 29760.75301 0 0 0 0 56.79735659 62.64095893 0 1329.831318 4040.089856 1578.134832 0 21496.58141 0 17664.67827 45152.83224 223.434054 0 0 0 0 2215.237567 284.4189713 0 0 0 13806.5367 3237.269104 0 0 19919.91729 0 0 0 0 71.57266627 +# Events [sample_PSD/image.dat] N: +0 2 0 0 0 1 2 0 0 0 1 0 1 1 3 0 0 2 0 0 1 4 1 2 0 1 0 0 0 0 0 0 0 1 0 1 1 2 0 2 0 0 0 0 1 2 1 0 1 0 0 0 1 0 2 0 0 0 1 0 1 0 2 2 2 0 1 3 0 1 2 0 2 0 0 1 1 2 0 0 0 2 2 0 2 0 3 0 1 1 1 2 1 0 0 1 0 0 0 3 0 0 1 0 2 0 0 2 0 0 0 0 0 0 2 2 1 2 1 0 1 2 0 3 0 0 1 0 1 1 0 2 0 1 1 2 3 1 2 0 1 0 1 0 2 1 2 0 2 1 0 0 1 2 1 0 0 1 0 0 2 2 0 0 0 1 0 0 0 1 1 1 1 0 1 0 2 0 0 0 1 0 0 0 2 0 1 0 1 1 1 0 1 1 0 1 2 3 0 1 1 1 1 1 0 1 2 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 0 2 0 0 0 1 0 2 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 2 0 2 0 1 0 +1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 0 2 0 1 0 0 1 1 1 0 0 0 2 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 1 1 1 0 0 1 1 0 0 0 2 0 0 1 0 0 1 1 0 1 0 2 3 1 0 0 0 1 0 1 1 1 1 4 2 0 2 2 2 1 1 1 3 3 0 1 1 0 1 1 2 0 3 1 4 1 1 0 0 2 1 1 0 0 1 2 0 0 0 2 1 2 0 0 1 0 0 0 1 1 2 2 1 2 2 0 0 0 3 0 0 0 0 0 0 1 0 1 0 1 2 1 2 0 1 0 2 0 2 2 0 0 0 2 1 1 1 2 0 2 1 3 0 2 0 0 0 0 1 0 1 1 2 2 2 1 0 1 1 0 0 1 1 0 1 0 0 2 0 0 1 0 0 3 2 1 2 2 0 3 0 0 2 0 2 0 0 3 0 0 4 0 1 0 0 0 0 0 0 0 2 0 1 3 2 2 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 3 0 0 1 0 0 1 3 0 2 0 0 0 3 1 2 0 3 0 0 0 0 2 1 0 2 1 1 1 0 +1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 1 0 0 0 2 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 2 0 1 0 0 0 0 2 0 0 0 0 0 1 1 0 0 1 0 1 3 2 0 1 0 1 1 3 2 0 2 0 0 0 0 1 0 1 1 3 0 0 1 1 0 0 1 0 0 1 3 0 2 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 2 0 0 1 2 0 1 0 0 2 1 1 0 1 0 0 2 2 0 2 1 0 1 0 0 0 4 1 0 0 1 1 0 2 0 1 0 1 0 2 0 1 0 1 0 0 2 0 0 1 2 2 0 0 0 0 2 4 0 0 0 0 0 0 0 0 1 2 0 2 1 0 0 0 1 0 1 1 2 1 2 1 1 2 0 1 1 0 0 1 1 1 0 2 2 0 0 0 0 3 1 1 3 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 2 2 0 0 1 0 0 2 0 2 1 1 0 0 0 0 1 1 0 0 3 0 1 0 1 0 1 0 1 2 1 3 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 2 0 3 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 1 +0 0 0 0 1 2 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 2 1 1 0 3 0 0 0 0 0 4 0 0 1 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1 3 1 1 1 1 0 1 1 2 0 1 1 2 0 1 2 0 0 0 0 1 0 0 0 3 1 0 1 1 0 1 1 0 2 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 2 0 0 1 0 2 1 0 2 1 1 0 0 2 1 1 2 1 1 0 1 1 1 0 0 0 0 0 0 0 2 0 1 0 0 0 0 1 0 0 1 1 0 4 1 1 0 0 0 2 1 0 1 0 0 0 1 0 0 0 0 1 1 0 1 2 0 2 2 0 1 0 0 0 1 0 2 2 0 0 3 0 0 1 0 0 0 0 0 1 2 1 2 0 0 1 0 2 0 1 0 1 0 1 2 0 0 1 1 0 1 1 1 0 0 0 1 2 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 2 1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 2 1 1 1 0 0 0 +0 1 1 0 0 2 0 1 0 0 0 2 1 0 0 1 0 1 1 0 0 2 1 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 0 1 0 1 2 0 0 0 1 0 0 0 1 2 1 0 0 0 0 0 0 0 0 2 2 0 0 0 1 0 0 0 1 0 0 0 1 0 2 1 3 0 1 0 0 0 0 0 0 0 0 2 0 1 0 1 1 1 2 2 1 0 0 1 1 1 1 1 0 0 3 1 1 0 1 0 2 0 0 1 0 3 2 1 3 0 1 0 0 0 0 2 1 1 0 0 0 1 1 3 1 0 1 2 1 0 0 0 3 0 1 0 0 3 1 1 1 0 2 0 0 0 0 0 2 0 0 0 1 2 1 2 1 1 1 0 1 1 1 1 0 1 0 2 2 0 2 1 0 0 1 0 0 0 0 3 1 0 0 1 0 2 0 2 1 1 0 2 2 1 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 2 0 0 0 1 0 0 1 0 0 0 0 0 0 3 1 0 1 1 1 1 1 0 0 0 1 1 0 3 1 0 2 1 0 1 0 0 0 1 1 1 0 2 1 0 0 0 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 2 2 1 1 0 0 +0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 2 1 1 0 2 0 1 1 0 0 0 0 0 1 0 0 0 0 0 2 2 1 4 1 1 0 0 2 0 0 0 1 0 1 0 1 0 2 0 0 0 1 0 0 0 1 1 1 0 0 2 0 0 1 0 0 0 1 0 2 1 1 0 0 3 1 0 0 2 1 0 1 0 1 2 0 2 0 1 2 0 0 2 1 1 0 1 1 1 2 1 2 0 2 1 2 0 0 3 0 2 0 2 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 2 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 2 0 0 3 1 0 3 0 0 1 0 2 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 2 0 0 1 0 0 2 1 1 1 0 1 1 0 0 1 0 0 1 0 1 2 0 1 0 2 0 0 0 1 0 1 1 0 0 1 0 1 1 3 2 1 0 1 0 0 0 1 0 1 0 0 2 1 2 0 0 0 0 0 0 0 0 2 0 1 0 0 1 0 0 0 1 1 2 2 0 0 1 1 0 0 0 1 0 2 2 2 0 0 0 0 0 1 0 0 0 1 1 0 1 1 3 1 0 1 1 0 1 0 0 0 0 0 2 +0 0 1 1 0 2 1 1 1 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 2 1 1 2 1 2 1 0 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 2 0 0 0 0 2 2 1 0 1 0 1 1 0 1 0 1 0 2 0 0 0 3 4 2 0 1 0 1 0 0 0 1 1 2 0 3 2 0 0 1 1 1 0 0 1 2 0 0 0 0 1 2 1 0 1 2 1 1 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 2 0 1 0 0 0 1 2 0 0 0 0 1 0 2 0 1 1 0 3 3 1 1 0 0 1 1 0 0 0 0 1 0 0 2 2 2 0 0 2 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 2 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 2 0 0 2 0 1 0 2 0 1 1 0 0 0 0 0 0 2 1 1 1 0 1 1 1 0 0 2 0 0 0 0 0 1 0 1 1 4 0 0 2 0 0 0 1 1 0 1 0 2 1 1 0 2 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 2 0 1 1 0 0 0 1 +0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 1 0 0 2 1 0 0 0 2 1 0 1 0 0 3 1 0 0 0 0 1 1 0 0 0 2 0 0 1 0 1 2 1 0 2 0 0 1 2 2 0 0 1 0 0 1 0 1 0 0 1 2 1 0 1 0 1 0 0 2 1 0 0 0 0 3 1 0 1 1 2 1 1 3 2 0 2 0 3 0 1 0 0 0 1 1 0 1 2 1 2 1 2 1 0 0 0 1 0 0 0 0 0 0 0 2 1 2 2 3 1 1 0 2 0 1 2 1 1 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 2 1 2 0 0 0 0 0 2 0 1 1 0 0 2 1 1 2 2 0 1 0 0 1 1 0 3 0 1 1 0 0 0 0 1 3 1 1 0 1 0 2 2 0 1 0 3 2 2 2 0 0 0 1 0 0 1 0 1 3 0 0 1 0 0 0 0 0 0 1 1 0 2 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 2 3 0 1 1 0 2 0 0 3 1 1 1 0 0 3 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 2 +2 0 0 1 0 0 0 0 0 0 1 2 0 1 2 0 0 1 1 1 0 0 1 1 1 0 0 1 2 0 0 1 3 1 2 1 0 2 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 1 2 0 1 0 0 2 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 3 2 2 0 1 0 1 0 1 1 2 0 0 2 1 2 1 2 0 0 0 0 0 1 1 1 1 1 1 2 2 3 0 0 1 1 0 0 0 1 1 0 0 1 3 0 0 1 1 0 1 0 1 4 1 0 0 1 1 1 0 1 0 1 1 0 0 1 0 2 0 1 0 1 0 0 1 1 1 1 0 0 1 2 0 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 2 1 1 1 1 2 0 2 1 2 1 1 1 0 0 1 2 1 0 0 1 0 1 0 1 0 0 0 2 2 0 0 0 2 0 0 0 1 1 1 2 2 0 0 0 3 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 2 3 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 2 3 1 0 2 0 0 1 1 0 1 0 0 2 0 0 1 1 0 1 0 1 0 0 0 3 1 +1 1 0 0 0 1 0 0 0 1 1 1 2 1 1 0 2 0 1 1 0 0 0 0 0 0 2 1 1 0 0 0 0 0 0 1 0 1 1 2 3 0 0 0 0 4 2 2 0 1 0 0 3 1 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 1 1 0 0 1 1 0 1 4 0 0 1 2 0 1 1 2 2 1 3 1 1 1 2 0 0 1 3 2 0 0 0 0 1 1 1 2 0 0 2 1 1 2 1 0 1 0 0 2 0 0 0 3 1 0 0 0 1 2 0 0 1 2 0 2 1 1 2 0 0 0 0 0 0 3 1 1 2 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 3 0 1 1 0 1 0 0 0 3 1 1 0 1 0 1 0 0 0 0 3 0 2 3 2 1 0 2 1 1 0 1 0 2 2 0 0 1 0 0 0 0 1 0 2 1 0 4 0 0 0 3 1 2 1 2 0 0 1 0 0 1 2 2 0 2 1 0 0 1 2 0 0 0 1 0 0 0 0 0 2 0 1 2 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 2 1 0 0 1 0 1 1 0 1 3 3 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 2 +0 0 1 2 0 0 1 1 0 0 1 0 1 3 0 2 1 0 0 0 0 2 1 0 1 0 0 1 0 1 1 1 0 0 1 2 1 1 0 3 1 0 0 0 2 1 1 1 2 1 1 1 1 0 0 0 0 2 1 0 1 0 0 2 0 3 0 1 0 0 0 2 0 2 0 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 3 1 1 1 0 0 1 0 0 0 1 3 0 0 1 2 0 2 2 0 1 0 0 0 1 2 0 0 0 0 0 0 0 0 2 0 0 0 1 1 1 0 0 0 1 1 2 1 0 1 2 2 2 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 4 0 0 1 0 0 1 0 0 2 2 1 1 0 0 3 1 1 2 1 1 1 1 0 0 0 0 3 0 2 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 2 0 1 0 0 1 1 0 1 0 1 2 0 0 2 0 4 2 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 3 0 0 0 0 2 0 0 2 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 2 0 1 1 1 +2 0 0 0 2 2 1 0 2 2 1 0 0 1 2 0 0 0 2 0 0 0 2 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 2 1 2 0 1 1 2 0 1 0 1 0 1 1 0 1 0 3 2 0 2 1 0 1 0 0 0 1 2 0 1 3 1 0 1 0 1 0 0 1 0 2 1 1 1 1 0 0 0 1 1 2 1 2 2 1 0 0 1 1 1 1 2 0 1 0 3 3 0 0 1 0 0 0 1 0 2 2 1 3 0 3 2 1 3 4 4 4 1 0 0 0 0 1 0 1 0 2 3 1 1 0 3 0 2 0 0 1 0 1 2 0 2 1 1 0 2 1 1 1 1 0 1 1 3 1 0 1 2 2 0 1 0 1 0 0 1 4 0 0 0 0 0 0 0 0 2 1 0 2 0 0 2 1 0 2 1 2 0 0 2 0 0 1 0 0 0 0 0 0 0 2 2 0 0 1 0 0 2 0 0 1 0 1 0 2 1 0 2 0 0 0 1 1 2 0 0 1 1 0 1 1 1 0 1 0 2 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 2 1 1 1 3 0 1 1 0 0 0 0 0 0 0 0 2 1 1 1 1 0 1 2 2 0 1 1 1 3 0 +1 1 0 0 0 0 1 0 1 1 0 2 2 0 0 1 0 0 0 0 1 1 2 0 0 0 0 1 0 0 0 0 2 0 0 0 2 1 1 0 1 0 1 2 1 1 0 1 0 2 0 0 0 2 0 0 0 1 1 1 1 1 2 0 0 1 1 0 1 1 0 0 1 1 1 2 1 0 1 0 4 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 3 0 0 0 0 0 2 0 2 0 0 2 1 1 1 0 0 1 1 1 0 0 0 1 3 0 0 0 1 2 0 0 1 1 0 2 0 1 3 0 3 1 1 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1 1 2 2 1 0 0 2 1 1 2 0 1 2 1 2 1 1 2 0 1 1 0 0 0 2 1 2 0 1 1 1 0 1 2 1 0 1 1 0 0 0 1 1 0 3 0 1 2 2 1 0 1 1 1 0 0 2 1 3 0 0 4 0 0 3 2 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 2 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0 0 2 0 1 0 0 0 1 2 2 0 2 1 1 1 0 0 0 1 1 0 2 0 0 2 0 1 1 2 1 +0 0 3 0 1 2 0 0 0 0 0 0 0 2 0 0 0 1 1 3 0 0 1 1 4 2 1 0 0 1 0 0 2 0 0 1 2 1 1 0 1 1 0 0 2 0 0 1 1 2 1 1 0 2 0 1 1 0 0 0 0 2 0 0 3 0 0 0 0 1 1 1 1 0 2 2 2 0 1 0 2 2 0 3 0 0 1 1 1 2 0 0 0 3 1 0 1 1 1 1 0 2 1 0 0 1 1 0 0 1 0 2 3 0 0 1 1 2 0 1 0 0 3 2 1 0 1 1 0 1 1 0 0 1 3 1 0 3 2 3 0 2 0 2 1 1 1 1 2 1 3 0 0 2 2 2 0 2 1 1 2 2 1 2 2 2 1 1 3 1 0 0 2 1 0 0 1 0 0 1 2 1 0 1 0 0 0 1 2 0 1 3 1 0 0 3 0 0 0 1 0 4 0 1 1 1 0 0 1 2 1 1 1 0 1 0 1 1 3 0 0 1 1 2 3 2 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 2 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 3 0 1 0 2 0 0 0 1 0 0 4 1 1 1 1 1 1 0 2 0 1 4 0 0 +2 0 0 0 0 3 0 0 1 0 0 1 1 1 2 1 1 0 0 2 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 2 0 3 0 1 1 0 2 2 1 0 2 0 1 1 0 1 1 0 2 0 0 0 0 2 0 1 1 0 1 0 0 1 2 0 1 0 1 1 2 0 0 2 0 1 0 1 0 2 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 1 1 1 1 0 2 0 3 1 3 0 1 0 2 0 2 1 1 3 1 1 2 1 0 0 0 2 1 2 1 1 1 2 0 1 0 0 1 0 0 0 1 0 4 2 1 0 0 1 0 0 2 2 1 1 1 0 0 0 1 3 1 0 0 0 0 1 1 2 0 0 0 0 1 1 0 1 0 1 0 2 1 0 2 3 1 0 1 0 0 1 2 0 0 1 0 1 2 2 1 0 0 3 0 0 0 1 1 1 0 0 2 1 1 1 2 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 1 1 1 0 2 0 0 1 1 1 2 0 1 2 0 1 1 2 0 0 1 0 1 0 1 0 1 0 0 0 0 2 1 0 1 1 0 1 3 0 0 1 0 1 1 0 0 1 2 0 0 2 1 0 0 2 0 0 1 0 +1 0 0 2 0 0 0 0 1 2 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 2 1 0 1 0 1 3 0 1 1 1 1 0 2 0 0 2 2 0 1 0 3 1 0 1 1 0 0 0 0 2 1 0 1 2 0 3 0 1 0 0 1 1 2 1 1 0 0 3 3 1 1 1 2 2 1 0 1 0 0 0 1 0 0 1 1 1 1 2 0 0 2 2 1 1 0 0 0 0 0 2 2 0 0 1 1 1 1 4 2 1 0 0 0 2 1 0 2 0 2 0 2 0 0 0 0 2 1 2 0 0 0 3 1 2 1 0 0 0 2 1 1 2 0 0 1 1 3 0 3 0 1 0 0 3 0 3 0 1 2 2 1 0 0 1 1 0 0 0 0 0 2 2 0 0 1 0 0 2 0 3 1 0 0 2 1 1 2 3 0 1 0 1 0 2 0 0 1 1 0 3 1 1 0 2 2 2 0 2 0 1 2 2 1 0 0 0 0 0 2 1 0 0 0 1 1 1 0 2 1 2 1 2 0 1 0 0 1 1 0 0 0 2 2 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 3 0 1 0 1 1 1 0 2 1 0 +2 0 0 0 2 0 0 1 1 0 0 1 2 0 0 1 0 0 0 0 0 2 2 2 1 1 0 0 2 3 2 1 0 0 2 2 1 0 0 1 1 3 2 2 0 0 1 1 3 1 1 2 1 0 0 0 2 2 0 0 0 2 1 1 3 1 1 1 2 0 0 0 0 0 1 1 1 1 0 1 2 2 0 1 2 1 2 1 1 1 0 0 0 2 2 1 1 1 0 0 0 1 1 2 0 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 0 1 4 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 2 1 0 0 0 3 0 1 2 0 0 1 0 2 0 1 1 0 1 0 1 1 0 3 0 2 0 1 0 3 1 0 3 1 0 0 3 0 0 1 0 0 1 0 1 0 0 2 0 0 0 0 1 2 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 1 2 1 3 0 0 2 0 0 1 1 1 0 1 1 0 0 1 1 0 0 3 0 3 0 0 1 0 0 0 0 0 4 1 1 0 2 0 0 1 0 0 2 0 0 2 0 3 0 0 0 1 0 0 1 1 0 2 0 2 0 0 1 0 1 0 0 0 1 0 2 0 0 3 1 0 0 0 3 0 0 0 0 0 +0 0 1 1 0 1 2 0 1 1 1 2 0 0 2 0 1 0 0 0 1 0 0 0 0 0 1 2 0 1 2 1 0 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 1 0 3 0 0 1 1 1 2 2 0 2 2 1 2 1 2 2 1 1 1 3 0 0 0 3 1 1 0 0 0 2 0 1 2 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 1 2 0 0 1 0 0 1 3 0 0 1 0 0 1 0 0 0 4 0 1 0 1 1 1 3 3 1 0 3 2 1 0 1 1 0 0 0 0 1 1 0 1 3 0 0 0 0 0 0 2 0 0 2 2 1 1 0 2 0 0 0 1 0 0 2 1 2 3 0 0 1 1 0 2 1 1 0 0 2 2 0 1 1 1 2 0 5 2 0 0 0 2 1 2 0 0 2 1 1 0 1 0 2 0 0 1 1 2 0 1 1 0 1 0 0 3 4 1 0 0 0 1 0 1 0 0 1 0 0 0 0 2 1 0 1 0 0 0 0 0 0 0 2 0 0 0 1 3 1 0 1 0 1 0 0 0 4 0 0 2 0 2 3 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 2 1 2 0 0 2 0 0 1 1 2 0 0 1 0 0 +0 2 1 0 0 1 1 0 1 1 1 0 1 2 1 1 0 0 1 0 1 0 0 3 1 0 0 2 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 2 0 0 2 0 1 1 1 0 2 1 1 0 0 1 0 1 0 1 0 0 1 4 1 0 0 1 1 1 0 0 0 0 0 3 1 2 2 1 0 1 0 0 0 0 1 0 3 0 0 0 0 0 0 1 0 1 2 1 0 1 1 1 0 3 0 3 1 0 0 0 0 3 0 0 0 3 3 1 1 1 1 1 1 3 1 0 0 0 0 2 0 0 2 0 2 0 0 1 1 1 0 3 0 0 0 2 1 0 3 1 0 1 0 0 2 0 2 1 0 0 0 0 1 0 1 2 2 0 2 4 0 0 0 1 0 1 1 0 0 1 3 1 1 2 1 1 0 0 1 1 0 0 1 0 0 1 0 0 3 0 0 0 0 0 3 1 2 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 2 0 0 0 1 0 1 0 1 2 0 0 0 1 0 0 0 0 3 2 0 1 0 1 2 1 1 2 0 2 0 0 0 2 0 1 1 0 0 0 1 0 1 2 0 0 0 0 1 0 +0 2 0 0 1 0 2 0 1 0 0 1 0 2 0 1 0 1 0 1 2 1 2 3 0 0 2 0 2 0 0 1 1 0 2 1 0 0 1 0 2 0 0 0 0 0 0 1 1 0 2 0 1 0 0 1 0 1 1 0 2 0 1 1 1 0 1 0 0 1 0 1 0 0 2 0 0 0 2 0 0 2 1 1 1 1 0 1 0 2 0 0 0 2 1 1 0 1 2 0 0 1 2 0 0 0 0 1 1 1 0 1 1 2 1 0 0 3 2 2 0 2 1 1 2 1 0 0 1 0 2 1 0 1 1 2 2 0 1 0 0 0 2 0 1 0 0 0 1 0 2 1 2 1 2 1 1 2 0 2 0 1 1 2 0 1 1 0 2 0 1 1 1 0 1 0 1 0 2 4 1 0 1 4 0 2 0 2 2 2 1 2 0 0 1 1 1 0 4 0 0 1 0 3 0 2 0 1 2 2 0 3 0 0 2 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 3 1 0 1 0 0 0 0 0 1 0 2 2 0 0 1 1 2 0 0 0 2 2 1 2 0 0 3 1 0 2 3 0 0 0 2 1 1 0 0 0 2 0 0 2 1 1 1 0 1 1 0 1 0 0 0 2 1 0 0 0 1 0 0 0 0 0 2 0 +0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1 3 0 0 1 3 1 0 1 3 0 2 1 1 2 0 0 0 0 0 1 0 0 0 0 0 1 2 1 2 0 0 1 1 0 3 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 2 2 0 1 0 1 0 0 1 0 2 2 0 0 3 1 1 3 1 2 2 1 1 1 2 1 0 0 1 3 0 0 0 0 1 0 2 2 0 1 3 0 0 0 1 1 1 2 0 2 3 0 1 2 0 0 0 1 2 0 1 0 2 1 1 0 1 0 3 0 0 0 1 0 1 0 0 2 2 0 1 1 0 1 1 1 1 0 0 1 1 1 3 1 0 0 1 2 1 1 1 0 1 5 1 2 2 2 1 1 2 0 3 3 0 2 2 0 0 0 1 0 3 0 2 1 1 0 2 1 0 0 0 1 0 2 0 1 0 2 0 0 0 1 0 0 0 2 0 1 1 1 1 0 0 0 2 0 1 0 0 2 1 1 0 0 0 1 2 0 0 4 1 2 1 0 0 1 1 0 2 0 0 1 1 0 0 1 0 2 1 0 1 0 1 1 2 0 0 2 0 0 1 0 0 0 0 0 3 0 2 0 3 +2 0 0 1 1 1 0 1 0 0 1 0 0 0 1 2 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 2 2 2 1 0 0 1 0 1 3 0 0 1 1 0 0 0 1 2 1 2 0 1 1 0 1 2 0 1 2 0 2 0 0 1 0 1 1 0 2 2 2 1 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 3 0 0 1 0 0 1 1 1 0 0 0 0 0 4 2 1 0 1 1 1 0 1 0 1 6 1 1 1 0 0 3 0 2 2 0 1 0 1 2 2 0 0 0 2 1 0 2 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 2 1 1 1 2 0 1 4 1 0 1 2 1 1 0 0 0 0 0 0 2 2 0 1 1 1 1 1 0 1 1 6 1 1 1 1 2 0 0 1 0 2 0 0 1 1 1 1 2 1 0 3 2 1 1 0 0 0 1 0 2 0 0 0 1 0 2 1 0 2 2 0 0 0 1 0 0 1 2 1 1 1 1 0 1 0 2 4 0 0 1 0 2 1 2 1 0 0 2 1 0 2 1 0 1 1 1 1 1 1 1 0 0 4 1 0 0 1 0 0 0 1 0 1 0 0 2 0 1 2 0 1 0 0 0 0 0 2 1 +0 1 0 1 3 2 0 1 1 0 3 1 1 0 0 2 0 0 0 0 1 2 0 1 2 0 1 1 0 1 1 2 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 1 2 0 3 1 1 1 0 0 0 0 0 0 0 3 1 1 0 0 0 3 1 0 0 2 1 0 1 2 0 0 0 1 1 0 0 2 0 0 2 0 0 2 2 1 2 4 1 0 1 1 2 0 2 1 1 0 0 2 1 1 0 0 0 1 0 0 0 1 0 1 0 0 2 0 4 0 0 1 2 1 1 0 2 1 0 2 0 1 2 0 2 0 1 1 1 2 0 0 1 1 2 2 3 2 3 1 2 3 3 2 1 1 1 0 1 2 0 2 1 1 2 3 2 0 0 1 0 1 2 1 1 2 0 2 0 1 1 2 0 0 2 0 1 3 1 0 0 0 0 2 0 0 1 1 0 1 1 2 0 0 0 4 1 0 1 0 2 0 1 0 3 2 0 3 2 0 1 2 0 1 0 2 1 0 1 0 2 0 0 0 0 1 2 3 1 1 1 3 3 0 0 2 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 3 3 0 0 1 0 0 2 1 1 0 1 0 1 1 0 2 0 0 0 1 1 0 1 0 1 0 1 0 0 0 2 1 +0 0 1 0 0 1 1 0 2 1 2 2 1 0 1 1 1 1 0 1 1 1 1 4 1 1 1 1 0 1 1 1 2 1 0 0 0 4 2 1 1 2 2 0 2 3 0 1 1 0 0 2 1 0 0 1 0 1 0 1 2 0 3 1 1 1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 2 0 0 1 1 2 1 0 3 0 2 0 1 1 3 0 2 2 2 0 0 0 2 0 3 1 0 2 1 2 1 1 1 0 1 1 2 0 0 1 0 0 0 0 0 1 2 2 1 2 4 0 0 0 0 0 3 2 0 0 0 1 2 0 0 2 1 0 0 1 1 0 2 0 1 1 4 1 1 1 0 1 0 0 0 1 1 0 3 1 1 0 2 0 1 3 0 2 3 2 1 1 2 1 2 2 1 0 3 1 0 0 1 2 2 0 0 2 1 4 0 4 1 1 0 0 0 3 0 1 3 1 2 0 0 0 1 3 0 2 3 2 1 2 1 1 2 4 0 0 0 0 2 0 2 1 2 0 1 1 0 2 1 1 1 0 0 0 1 2 0 0 2 0 2 0 2 1 0 1 0 0 0 0 1 2 0 0 1 0 0 0 1 1 2 2 0 0 0 4 0 3 0 1 0 0 2 1 1 0 0 +1 0 1 2 0 1 0 0 0 2 1 0 1 2 1 0 1 0 0 0 1 1 0 0 1 0 2 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 2 2 1 0 1 0 1 0 0 1 0 1 0 1 0 2 0 1 0 2 2 1 1 0 0 0 0 2 0 2 2 0 2 3 1 0 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 2 4 0 1 1 1 0 1 0 0 0 1 2 0 0 0 0 0 0 2 0 1 1 2 0 0 0 2 1 1 1 0 3 1 0 0 1 0 1 0 0 0 1 0 2 1 1 0 1 2 0 0 2 3 0 1 0 2 1 0 0 2 1 1 0 0 2 1 0 0 0 0 1 2 0 1 2 2 1 3 0 1 3 1 2 1 1 1 1 1 1 0 0 0 2 0 1 1 0 0 0 2 4 0 3 0 0 0 1 1 0 0 1 2 1 0 1 0 0 2 1 0 0 0 3 1 0 1 0 1 0 0 1 0 1 0 2 4 0 0 2 1 0 0 1 2 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 2 1 0 0 2 0 1 0 0 0 0 0 0 0 0 1 1 0 0 2 1 0 1 1 2 1 0 2 1 0 1 0 0 1 1 +0 0 1 1 0 2 1 2 2 0 0 1 2 0 0 4 0 0 0 1 2 0 1 0 0 1 2 0 1 0 1 2 0 0 0 0 0 1 0 1 0 0 0 2 0 1 1 4 0 2 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 0 1 2 0 1 1 0 0 0 0 3 0 1 0 4 0 4 1 2 1 0 2 0 1 2 1 2 2 0 2 2 0 0 2 2 1 2 3 2 0 1 1 0 2 0 0 1 2 1 0 1 1 1 1 0 2 4 1 1 2 2 3 0 1 0 0 3 2 0 2 1 2 2 1 0 1 1 1 1 2 1 2 2 2 1 3 3 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 2 1 2 1 1 0 2 2 3 0 1 1 0 1 2 2 0 0 1 1 0 0 2 1 4 1 0 1 2 0 2 1 2 0 1 0 0 0 0 2 0 0 0 2 0 1 1 0 0 0 1 3 1 1 0 0 0 2 2 2 1 0 0 0 0 2 1 0 0 1 0 1 1 0 0 0 1 1 2 0 0 0 3 0 0 4 0 1 1 0 0 0 0 1 1 0 1 0 2 2 0 0 0 0 0 0 1 0 2 2 2 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 0 +0 0 0 2 1 2 0 1 0 0 0 0 3 0 1 0 2 2 1 2 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 1 2 1 0 1 2 1 1 1 0 1 1 3 1 1 1 2 1 0 1 0 1 4 1 0 0 1 1 1 0 1 0 2 2 0 0 0 0 2 1 0 1 1 0 1 1 0 0 1 0 2 0 1 0 0 1 0 2 0 0 0 2 1 2 1 1 2 1 0 0 2 0 0 1 0 0 2 1 0 0 1 0 1 2 2 1 2 1 3 1 2 0 3 1 2 2 1 1 0 0 0 1 2 1 1 2 1 0 0 2 1 1 0 1 1 1 3 4 3 1 2 0 0 1 1 0 2 2 3 2 1 2 1 1 2 2 2 0 0 1 0 1 1 2 0 0 0 0 1 0 2 5 1 4 0 2 1 1 0 2 1 0 0 1 0 1 1 1 0 1 0 0 3 1 1 1 0 2 0 0 1 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 2 1 0 2 0 0 0 0 1 3 1 2 4 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 2 0 0 0 0 0 0 2 0 1 0 0 1 0 0 0 +0 1 0 0 0 0 1 1 1 0 1 2 2 0 1 0 1 0 1 0 0 0 2 0 0 2 3 1 2 0 2 0 2 1 0 0 1 1 0 1 1 0 0 0 1 0 0 2 0 0 2 0 0 1 1 0 0 0 1 2 1 1 1 0 1 0 2 0 0 0 0 1 0 2 0 4 1 0 0 1 3 1 0 3 1 2 3 1 1 1 0 3 1 3 2 0 3 1 1 0 0 0 1 0 2 3 0 2 1 2 2 1 1 2 0 2 1 1 0 0 1 0 1 1 2 0 0 3 1 0 0 4 0 0 2 1 1 0 0 1 4 0 0 2 2 1 2 0 0 2 0 1 2 0 0 3 1 0 0 0 0 1 0 1 0 0 2 1 0 1 3 1 2 0 2 0 0 3 1 1 2 0 1 0 1 0 1 0 2 2 0 2 1 1 0 0 2 0 0 2 0 0 0 1 0 0 0 1 1 2 1 0 2 1 1 1 0 0 3 0 1 0 2 2 1 0 1 1 2 0 0 2 0 0 0 1 2 0 2 2 1 0 0 0 0 1 0 2 0 0 1 0 2 2 1 1 0 0 1 3 1 1 1 2 0 0 0 0 3 0 0 2 0 0 2 0 0 1 0 2 0 0 0 0 0 0 3 0 0 0 1 1 0 0 1 0 0 0 2 0 +1 0 0 1 1 0 3 1 0 0 0 0 1 0 1 1 0 2 0 0 0 1 0 1 1 1 1 2 0 0 2 1 0 1 0 0 2 0 1 0 1 1 0 1 0 1 1 1 0 2 1 3 2 2 0 0 2 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 2 2 0 3 2 1 0 1 0 3 2 0 1 1 2 0 1 0 0 2 1 2 1 5 0 1 1 3 0 1 2 1 2 2 0 3 0 0 2 1 0 2 0 2 4 1 0 3 1 4 0 0 0 2 2 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 2 2 1 1 0 3 0 0 2 1 3 2 1 0 0 1 0 2 0 1 1 1 1 1 0 0 0 1 0 1 1 0 0 1 1 0 3 1 0 1 0 1 0 2 1 0 1 1 2 1 2 2 1 0 3 3 0 2 1 2 0 2 1 0 1 0 1 2 2 2 2 0 0 1 2 0 0 0 2 2 0 3 1 0 2 1 0 0 1 1 3 0 2 0 1 0 1 0 0 0 2 1 1 1 0 1 0 1 1 0 0 0 1 0 2 1 3 0 1 0 2 2 0 1 1 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 2 0 0 0 0 0 1 0 1 1 +2 2 0 0 2 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 2 2 1 1 1 2 1 2 2 0 1 1 0 0 0 1 2 0 1 1 3 0 1 2 0 0 0 1 0 1 3 1 2 0 3 1 2 0 1 0 2 2 0 0 0 0 2 2 0 1 1 1 2 0 1 2 1 3 1 2 2 1 1 2 1 0 1 0 0 0 0 0 1 1 1 0 1 2 0 2 1 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 2 0 0 0 0 2 1 1 0 0 0 1 1 2 1 1 0 1 1 1 0 1 1 2 1 1 0 1 1 0 0 0 1 1 3 2 0 1 1 1 1 2 1 1 2 0 1 0 1 1 0 0 0 0 2 2 1 0 1 2 0 4 1 0 0 1 0 2 1 2 0 0 1 1 0 2 1 0 1 0 0 0 1 0 3 0 0 0 0 0 2 1 0 2 1 1 1 2 0 0 1 1 1 1 0 1 0 1 1 1 2 0 0 0 1 1 0 2 0 1 2 0 1 0 2 0 1 2 0 1 0 3 1 1 0 0 0 0 1 0 0 1 1 1 1 3 0 5 0 1 1 0 1 1 3 1 2 0 0 1 2 1 1 0 1 2 3 +0 1 0 0 1 2 0 2 2 0 1 0 0 0 0 1 2 1 0 1 1 0 0 1 1 0 1 1 0 0 0 0 2 1 1 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 1 2 2 3 0 1 1 0 1 0 3 2 0 0 3 0 0 0 1 2 0 2 3 1 1 0 1 3 1 0 2 0 1 3 0 2 2 1 0 0 2 0 1 4 0 0 2 1 0 1 0 0 1 0 0 2 0 1 1 1 1 3 4 1 0 1 4 0 0 0 1 2 0 0 0 1 1 2 0 0 1 0 0 0 0 0 0 3 3 2 0 1 0 3 1 2 1 4 1 2 0 2 4 1 1 0 0 1 3 0 0 1 1 2 2 4 0 0 0 2 0 0 1 2 0 1 0 1 1 2 1 2 3 1 1 1 0 2 1 2 3 1 0 1 1 1 1 2 0 4 1 2 1 2 1 2 1 1 0 0 2 1 3 1 0 1 2 0 1 2 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 3 1 0 0 2 0 0 0 0 0 0 0 2 0 1 0 2 3 0 0 2 2 0 0 1 0 1 1 0 0 1 0 2 0 0 0 2 0 1 0 0 1 2 0 2 1 0 1 0 2 1 1 0 0 0 0 0 2 0 0 0 0 3 +0 2 1 2 1 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 2 0 0 1 0 2 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 2 1 2 0 0 1 0 2 0 0 0 0 1 1 0 0 0 1 4 1 1 1 0 2 3 0 2 0 1 1 0 2 2 0 1 2 0 2 0 1 0 1 0 1 2 1 0 0 1 2 1 2 1 1 0 1 0 1 3 1 2 1 4 1 1 0 2 0 1 1 2 1 1 3 0 1 1 2 0 0 4 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 2 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 3 2 0 2 0 1 1 1 1 3 2 1 2 0 3 0 2 1 2 2 1 2 2 0 1 0 0 1 2 0 1 2 0 3 0 2 1 3 2 1 0 2 1 0 1 0 0 1 2 5 0 0 2 1 1 1 2 0 1 2 2 1 0 0 0 0 1 1 0 0 0 1 0 2 0 1 0 1 0 0 0 0 3 1 3 1 0 0 1 2 1 0 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 3 0 3 3 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 1 1 +0 1 0 2 1 1 0 2 1 0 1 0 1 3 2 0 2 0 0 0 0 1 0 0 1 3 2 0 0 1 2 2 1 0 0 0 1 1 0 1 2 0 4 0 1 0 2 1 0 0 1 1 2 2 2 1 1 1 4 0 1 0 1 2 2 1 5 1 1 0 0 2 1 3 1 2 0 1 2 0 0 2 2 1 1 2 0 3 0 0 2 2 0 3 0 1 5 0 2 1 2 2 2 1 0 0 0 0 0 0 2 0 1 1 1 0 1 2 3 2 0 3 1 2 0 3 3 2 1 3 2 1 0 1 2 1 1 2 0 0 1 2 3 0 0 2 0 3 2 0 1 1 2 2 1 1 4 0 0 0 3 0 2 0 1 0 0 0 2 2 0 2 0 1 0 0 1 2 1 0 1 1 3 1 0 0 1 2 0 1 1 2 0 4 2 2 0 0 0 2 0 0 3 0 1 5 1 2 1 0 1 1 1 2 1 1 2 0 0 2 0 1 2 0 3 0 0 0 0 2 0 1 0 1 0 4 1 0 0 0 0 0 0 1 0 1 0 1 1 0 2 2 3 1 0 0 0 0 2 2 0 3 0 0 0 2 1 0 0 1 0 2 1 0 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 4 0 0 1 1 1 0 1 +1 0 0 1 0 0 0 0 0 2 1 1 1 0 0 0 1 0 1 0 0 1 1 2 0 4 1 0 0 2 0 0 1 0 0 0 0 0 0 0 0 2 1 1 1 3 0 2 0 1 0 0 0 0 0 0 1 2 1 0 1 2 2 1 1 2 0 0 1 0 0 1 1 1 1 3 2 1 1 2 1 1 1 0 0 0 0 0 0 0 3 2 0 0 0 0 1 2 0 0 0 1 1 0 4 0 1 1 0 0 2 2 0 0 0 3 0 1 0 0 1 0 2 2 2 1 0 0 2 1 0 1 2 1 1 0 1 0 0 1 1 1 1 2 2 2 2 0 0 0 0 0 2 0 1 0 2 1 3 0 1 1 0 0 0 2 0 0 1 3 1 1 0 0 0 0 1 1 0 1 1 1 0 1 2 2 1 0 1 0 0 1 2 1 0 1 1 4 0 1 1 2 1 1 0 0 1 1 1 0 2 0 0 0 2 0 2 1 1 0 1 0 1 2 2 2 1 1 1 1 1 0 2 0 0 1 1 0 1 1 0 1 0 1 0 2 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 0 0 1 1 2 0 2 0 0 0 0 1 0 1 0 0 0 0 1 0 0 3 0 0 1 0 0 0 1 1 0 0 0 0 0 2 0 2 +0 0 0 2 0 0 0 1 0 1 0 1 0 0 3 0 0 0 1 1 0 0 3 0 0 1 1 0 1 1 0 4 0 1 0 0 1 2 0 0 0 1 0 2 2 0 0 0 0 1 0 1 0 1 2 0 3 0 2 0 0 1 1 0 1 3 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 1 0 1 3 0 1 3 0 1 2 1 0 3 1 0 1 3 4 0 0 1 0 2 1 1 2 0 1 1 1 2 2 1 2 0 1 0 5 1 0 0 3 1 0 1 2 1 2 0 0 1 0 1 0 3 2 3 0 0 2 0 0 0 2 2 2 1 1 0 0 2 2 0 3 3 1 2 1 1 1 0 1 1 1 0 0 2 2 0 0 0 0 3 4 1 2 2 1 0 0 1 0 0 1 1 1 2 1 0 0 2 0 0 2 2 0 1 2 3 0 0 0 2 0 1 0 0 0 1 0 0 2 0 0 1 2 1 0 2 2 0 0 1 0 0 1 2 2 0 0 0 0 0 1 0 1 0 0 1 1 2 0 2 0 2 1 0 2 1 0 0 0 0 1 1 0 1 0 1 0 2 4 1 1 1 0 1 0 0 0 2 2 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 2 1 0 0 +1 0 1 2 0 0 1 2 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 1 1 0 3 0 1 0 1 1 0 1 0 0 0 0 2 0 1 0 0 2 2 0 2 0 2 2 2 0 0 1 0 1 1 0 1 0 0 4 0 3 1 1 0 0 1 0 1 0 2 1 0 1 0 1 0 3 1 0 1 0 2 1 1 2 0 1 0 3 1 2 0 3 0 0 1 2 2 1 1 1 2 1 0 1 1 1 2 2 3 2 3 1 0 1 1 2 1 0 0 2 5 1 1 1 3 3 2 0 1 2 0 2 1 4 3 2 1 0 2 1 2 0 2 1 1 1 3 2 2 0 2 2 2 1 1 1 1 1 1 2 2 2 2 5 1 2 2 1 1 2 4 0 0 1 1 0 1 0 0 3 2 5 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 2 2 1 1 0 0 0 1 2 0 0 1 2 0 0 0 1 1 0 1 0 2 0 1 0 0 1 1 0 0 2 1 4 1 0 0 2 2 1 3 1 2 0 3 0 1 0 2 1 0 1 1 1 0 0 1 1 0 1 0 0 1 2 0 0 0 2 0 1 0 0 0 1 1 0 1 3 0 2 2 0 1 0 1 1 0 1 0 0 1 1 0 0 +1 1 2 2 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 3 0 0 0 0 1 1 0 1 1 0 0 0 2 1 2 1 1 0 2 2 0 0 0 0 0 4 0 3 1 0 4 0 0 1 0 1 0 1 1 0 0 1 0 0 0 2 1 1 2 4 1 1 1 0 0 0 1 4 7 1 0 1 5 3 0 1 1 2 3 1 1 2 0 0 1 3 1 0 0 1 1 1 1 0 2 2 1 0 3 1 2 0 2 1 1 0 3 0 2 1 0 3 2 4 1 1 1 2 0 2 1 0 1 1 1 0 1 1 0 4 0 1 1 0 1 1 0 0 2 0 2 0 0 2 0 1 2 1 1 1 2 0 0 1 0 2 2 0 0 1 1 2 1 0 1 0 0 1 0 0 3 1 1 0 2 2 2 1 0 0 0 2 2 3 1 3 2 1 1 2 1 0 1 0 1 1 4 0 0 0 0 0 2 1 1 1 1 1 2 4 0 2 2 1 0 1 3 0 0 0 2 0 0 2 0 1 0 2 0 4 1 1 0 1 1 4 1 1 1 1 0 1 0 0 1 0 0 1 2 2 0 3 1 0 1 0 0 2 0 0 3 1 2 1 1 1 0 1 1 1 1 2 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 2 1 0 +2 1 0 1 1 1 0 0 0 1 0 2 1 1 1 1 0 1 2 0 1 0 0 2 1 0 0 0 1 0 0 1 0 3 0 0 1 0 3 0 0 1 0 0 0 0 2 0 0 0 1 0 0 2 3 0 0 3 0 1 0 1 0 2 1 1 0 0 1 0 1 1 2 1 0 0 0 0 3 1 0 1 1 1 0 0 1 2 0 1 1 2 1 1 1 0 0 4 1 2 0 4 1 1 2 1 3 1 1 1 4 2 4 1 2 0 2 0 1 1 0 0 3 1 0 2 1 1 1 2 1 1 1 1 0 1 2 2 1 5 1 3 1 3 1 1 1 2 1 0 2 1 4 1 2 3 0 1 2 1 1 1 2 1 2 2 3 0 1 0 3 0 1 1 1 1 0 1 2 2 0 1 0 1 0 0 0 1 1 0 1 1 1 0 2 3 0 1 0 0 1 2 1 2 1 0 1 0 1 0 2 1 1 1 1 0 1 0 0 3 3 2 1 0 0 2 0 0 3 0 0 2 0 1 2 0 1 0 0 2 0 1 2 1 0 0 2 0 0 0 2 1 0 0 2 1 0 0 1 0 0 0 0 1 1 1 0 1 2 2 0 0 0 1 2 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 +0 0 0 1 1 1 3 0 1 0 1 1 0 1 1 2 0 0 2 0 1 0 0 0 1 0 0 0 0 0 0 3 2 0 0 0 0 0 0 0 0 1 0 2 0 1 0 1 0 1 0 2 0 1 0 1 0 1 1 1 0 1 2 0 1 0 1 1 1 1 1 1 0 2 0 1 0 0 0 2 1 0 2 2 1 1 0 2 2 0 0 3 1 1 2 1 4 0 0 4 1 0 2 1 1 2 0 1 3 0 0 2 0 2 0 2 2 0 1 1 0 2 0 2 1 3 2 0 0 1 2 4 2 1 2 3 2 0 1 0 1 1 0 1 0 0 3 4 1 0 1 1 0 3 1 0 1 1 1 1 0 0 2 1 0 0 1 0 1 1 0 2 0 1 1 0 0 1 2 1 1 0 1 1 0 1 2 0 2 1 0 5 2 2 1 2 0 3 2 1 1 0 2 0 0 2 0 2 0 0 2 1 1 0 0 0 0 1 0 2 0 0 1 3 1 0 0 0 0 0 1 1 1 1 1 1 2 3 0 1 1 3 2 1 3 0 0 2 1 0 2 0 1 1 1 2 0 1 1 1 1 2 0 0 2 2 3 3 1 0 0 0 2 1 2 0 0 1 0 1 0 1 0 1 0 0 0 0 0 3 0 0 0 1 0 1 0 1 3 2 +1 0 1 1 0 0 0 3 0 0 0 0 0 0 1 0 1 1 1 0 2 1 2 0 1 1 2 0 0 0 0 0 0 1 2 1 2 0 2 0 1 0 2 1 1 1 1 1 1 1 1 1 2 1 2 3 3 0 2 1 0 1 1 3 0 2 0 2 2 1 1 2 1 1 0 0 1 2 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 2 1 0 0 1 1 1 0 1 2 1 2 1 0 2 0 0 0 3 2 1 0 3 0 2 0 1 0 0 0 2 1 2 1 1 3 0 0 1 3 2 1 3 1 0 2 2 1 1 1 1 3 0 5 1 1 0 3 1 0 0 1 1 2 1 0 2 0 0 0 1 1 1 1 0 1 0 2 4 0 3 1 1 1 2 2 1 0 0 2 0 0 2 1 1 1 1 0 0 0 2 0 1 2 1 1 1 0 1 2 1 0 2 2 0 2 0 2 4 0 0 2 0 2 1 2 0 0 3 2 1 1 1 0 0 1 1 0 1 1 0 0 1 0 2 3 0 0 0 0 0 0 2 2 1 0 1 1 3 2 0 1 0 0 1 0 0 1 0 0 0 0 2 1 1 0 0 0 2 1 0 1 0 1 1 1 2 2 3 0 0 0 0 0 2 0 1 0 0 1 2 1 0 +0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 4 0 0 0 0 3 0 1 1 0 0 2 1 1 2 1 0 0 1 1 1 0 0 0 1 2 1 1 0 2 2 1 1 2 0 1 0 0 1 1 2 0 2 1 1 1 2 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 2 2 0 1 3 0 0 0 0 1 1 0 2 0 1 5 2 0 0 1 0 3 1 0 1 2 0 0 0 2 0 1 1 0 1 0 2 2 1 0 2 0 2 1 2 1 4 0 0 1 1 1 1 1 1 1 0 0 1 1 0 2 0 1 0 2 0 0 3 1 0 3 0 0 0 0 0 3 3 0 0 0 1 1 2 3 2 1 1 3 2 0 2 1 1 2 2 0 0 0 1 2 1 0 4 1 1 0 0 1 0 0 0 1 1 0 1 2 1 1 1 0 0 1 0 0 2 1 0 2 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 2 2 1 0 1 0 1 2 0 0 1 0 1 1 2 1 2 0 0 0 0 1 3 0 1 1 0 1 1 0 1 2 2 0 1 0 0 1 0 1 1 2 2 2 1 0 0 0 2 1 1 0 1 0 3 0 1 0 1 1 5 1 0 0 3 0 0 +0 1 1 2 1 2 0 2 1 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1 0 1 1 2 0 0 2 1 0 2 2 0 0 3 0 3 1 2 0 1 0 2 0 0 1 0 1 1 1 0 1 0 0 0 0 1 2 2 1 1 0 1 0 1 0 2 1 0 1 0 2 1 2 0 0 2 1 2 2 3 2 0 1 0 0 0 3 0 0 0 0 0 2 1 0 4 3 0 1 0 1 1 2 2 3 1 2 2 3 0 2 0 2 6 0 0 1 4 0 2 1 0 1 1 0 1 1 1 2 0 3 1 0 2 2 3 0 2 3 0 4 1 1 2 1 2 1 0 1 1 0 0 0 0 0 0 2 2 0 2 0 2 1 0 1 1 0 3 1 2 1 1 3 1 2 2 0 0 0 1 2 2 1 0 0 0 0 0 2 1 0 1 0 1 2 1 1 1 3 2 0 3 2 0 3 1 2 2 0 1 2 0 0 1 0 0 0 0 0 1 0 0 1 0 2 0 1 1 0 2 1 2 0 1 2 1 0 5 1 1 1 1 0 2 0 1 1 0 0 0 1 1 1 1 0 1 1 1 1 2 0 1 1 0 1 2 0 0 0 0 1 0 0 0 1 0 1 0 0 2 1 0 0 0 0 2 0 1 0 0 1 0 1 0 0 1 +1 1 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 2 2 2 0 0 1 0 1 2 1 0 1 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 1 3 0 1 3 1 0 0 0 1 0 0 0 1 0 0 0 0 2 2 1 1 2 2 1 1 1 1 0 0 2 5 2 1 1 0 2 0 1 0 0 4 2 2 2 0 1 0 3 0 2 0 0 3 1 1 2 2 2 2 0 2 1 1 3 0 0 0 2 1 5 1 2 3 0 2 0 0 0 0 0 1 2 2 0 1 2 1 0 1 1 3 1 0 1 3 0 0 0 0 1 1 2 2 1 2 1 0 1 0 1 0 0 1 1 0 0 1 1 2 1 1 0 4 1 1 0 2 2 0 0 0 0 0 2 1 0 0 2 0 0 0 4 1 1 1 0 0 1 0 2 0 0 3 1 2 0 0 1 0 0 3 1 2 0 2 1 1 3 1 1 1 1 1 0 1 1 0 0 0 2 3 0 0 1 0 2 0 3 1 0 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 2 0 0 1 0 1 1 2 1 2 0 3 0 0 0 0 1 0 0 1 1 1 1 0 1 2 0 1 1 1 2 0 0 1 0 0 0 0 0 1 3 0 +0 1 2 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 2 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 1 2 0 0 1 2 1 0 0 3 0 0 0 0 0 0 0 0 0 0 1 0 0 3 0 2 0 1 3 1 0 2 1 0 1 1 2 1 0 0 2 1 0 0 2 1 2 0 1 2 0 0 1 2 2 1 2 1 0 0 1 1 1 2 3 2 1 0 0 3 2 1 1 1 1 0 2 1 1 1 1 2 2 0 3 2 4 1 3 0 1 0 1 0 0 2 1 1 1 1 3 3 2 0 1 1 1 2 3 0 0 2 2 3 2 1 0 4 2 0 1 1 1 1 0 0 2 0 1 0 1 1 0 1 3 1 0 1 0 1 0 2 0 2 0 2 2 0 0 0 1 1 0 1 4 0 0 2 1 1 4 4 0 2 1 2 1 1 0 0 1 0 2 0 2 2 0 0 1 1 2 3 2 0 0 1 1 1 2 0 0 0 2 2 1 0 0 0 0 0 1 0 3 2 2 2 2 1 1 0 2 0 0 0 0 1 2 2 1 0 0 0 0 1 1 1 0 1 0 1 0 3 1 0 1 1 0 0 1 1 0 0 1 1 0 1 2 1 0 0 0 0 2 1 1 0 1 0 4 3 1 2 0 1 0 +0 0 1 2 0 2 0 1 1 1 0 1 2 1 0 0 0 0 0 0 3 0 1 1 0 0 2 0 1 1 0 0 1 1 2 0 2 2 2 1 0 1 1 0 1 0 3 1 0 1 2 1 1 1 0 2 1 2 1 0 2 0 2 1 1 0 0 2 0 1 1 1 0 1 1 0 1 2 2 0 2 0 0 0 1 1 0 1 0 3 0 1 1 0 1 1 1 3 2 1 0 1 0 2 0 1 2 1 1 2 2 0 1 0 1 1 1 2 0 1 1 0 4 0 2 2 1 2 2 1 2 2 0 0 1 2 0 1 1 0 3 1 1 1 1 1 0 2 2 1 2 1 0 3 1 0 1 1 2 1 0 1 2 1 0 1 1 1 1 4 0 1 1 3 4 3 0 1 0 0 2 1 1 0 1 0 0 0 0 2 1 1 0 3 0 1 2 2 1 2 3 1 0 0 1 0 1 0 0 0 2 2 1 1 1 1 4 0 1 0 1 0 1 0 1 2 1 0 2 0 0 2 1 1 2 0 0 0 0 0 2 1 0 1 2 0 1 1 2 0 1 1 0 1 3 0 4 1 2 1 0 0 1 2 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 2 2 2 1 1 0 1 1 0 1 0 0 1 0 2 +1 1 1 0 0 2 0 1 1 1 3 2 1 2 1 0 1 0 0 0 0 1 0 0 0 0 0 1 2 0 2 0 0 0 1 3 0 0 0 2 2 0 0 2 1 2 0 0 1 0 1 3 2 1 0 2 2 0 0 0 0 1 1 0 3 0 3 2 1 1 1 3 0 1 0 0 0 1 0 1 0 0 2 1 1 0 2 2 1 0 0 2 2 2 3 0 0 0 0 2 1 0 1 0 3 0 0 2 0 0 1 3 0 2 0 0 0 1 3 1 0 0 1 0 1 1 1 2 1 1 3 2 0 0 2 3 2 1 0 0 1 1 3 2 1 1 2 2 1 1 2 1 2 1 1 1 0 1 0 1 1 4 0 2 2 1 1 2 0 1 1 2 2 0 1 2 1 2 2 1 0 0 1 0 0 3 0 1 1 3 1 0 0 3 1 0 0 0 2 0 1 0 1 0 2 0 0 3 0 2 0 1 5 0 2 1 1 0 1 3 2 0 0 1 1 1 4 0 0 1 0 1 0 1 0 0 0 1 0 3 1 1 0 0 2 0 0 0 0 0 0 1 2 1 1 0 1 0 0 1 2 2 1 0 1 0 1 3 1 3 0 0 1 0 0 2 1 0 1 1 1 2 0 1 0 0 0 0 2 1 1 0 0 1 1 0 1 0 0 0 +1 1 0 2 1 0 2 1 2 0 0 0 1 2 1 0 0 0 1 2 1 0 0 0 4 0 0 0 0 1 2 0 0 1 1 0 0 0 1 1 1 1 0 0 1 2 0 1 1 0 0 1 0 2 1 2 1 2 3 2 1 1 1 1 0 1 1 0 2 3 1 1 2 0 0 2 3 0 1 3 0 1 0 1 0 0 2 1 4 0 1 2 0 1 2 0 1 0 0 2 0 2 0 1 3 0 2 2 1 4 0 3 2 0 1 2 0 2 0 1 0 0 1 2 1 2 1 0 3 1 3 2 2 1 1 4 0 0 0 1 1 0 2 3 2 1 2 2 1 3 0 3 1 0 0 2 0 2 1 2 2 1 1 0 1 0 3 0 0 0 5 1 2 0 2 1 1 0 2 1 0 0 2 1 2 4 0 1 0 0 0 2 0 1 2 2 1 2 1 2 0 0 0 3 2 2 0 1 3 2 4 1 0 2 2 2 1 3 2 1 1 1 3 0 0 0 0 1 1 2 1 2 2 2 2 1 0 1 2 1 0 0 0 1 2 1 2 0 0 1 0 3 0 1 0 0 1 3 2 1 0 4 0 1 2 1 1 2 4 1 1 0 1 1 0 2 1 0 0 1 0 1 1 1 0 0 1 1 3 2 0 0 1 0 1 0 0 1 0 1 +1 1 0 1 1 0 0 0 1 0 1 0 2 0 1 0 1 0 1 1 2 3 0 0 3 0 1 0 0 0 3 2 0 1 1 1 1 0 1 3 1 0 1 1 0 1 0 2 2 0 1 0 1 2 2 0 1 0 0 0 2 0 1 1 0 1 1 1 0 1 1 3 2 1 0 2 0 0 1 0 0 0 0 1 1 1 1 3 1 2 1 1 1 2 0 0 2 0 1 0 0 2 0 0 2 2 1 1 3 0 1 2 0 1 0 3 1 2 2 1 1 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 1 3 1 2 3 1 1 1 0 1 2 0 3 2 2 1 3 2 0 0 1 3 2 1 0 1 0 0 1 1 4 0 2 1 1 2 0 1 2 2 2 0 0 0 0 1 3 1 1 1 1 0 1 0 0 1 2 0 0 1 1 2 0 3 1 2 0 1 2 0 4 0 1 0 2 1 0 1 0 0 3 2 0 2 1 2 1 3 2 0 0 1 0 0 1 0 2 2 1 0 0 0 3 3 2 0 2 1 2 1 2 1 1 2 1 1 2 2 3 0 1 0 3 0 1 0 1 1 0 0 0 1 2 1 0 0 1 0 2 3 0 0 1 1 0 2 1 2 0 0 0 1 1 0 0 0 1 2 0 0 0 1 0 0 +0 1 2 1 0 0 2 0 1 2 0 0 0 1 1 0 1 2 1 1 1 1 0 1 1 0 2 0 1 1 2 2 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 3 4 1 1 0 0 0 0 1 2 2 0 1 0 2 0 1 0 0 1 0 0 1 3 1 2 0 0 3 0 2 3 1 0 1 2 0 3 1 0 2 0 4 0 2 5 1 1 3 3 1 2 0 2 0 0 2 2 1 0 3 1 4 0 1 2 0 3 0 1 2 3 1 1 0 1 4 3 0 3 2 0 1 1 1 1 0 1 3 1 2 2 1 0 0 2 0 0 1 2 1 0 0 0 1 2 1 0 0 0 5 2 0 2 2 2 2 1 2 1 0 1 0 2 2 1 3 3 1 1 1 1 5 1 0 1 2 0 2 1 0 1 3 0 0 1 2 1 0 1 1 2 0 0 1 1 2 2 0 0 1 0 0 3 1 0 1 0 2 3 1 1 1 1 0 2 1 2 0 0 1 1 0 0 0 1 2 0 0 1 1 0 0 1 2 0 0 1 0 0 1 0 1 2 2 0 0 3 0 1 0 1 1 0 2 2 1 1 2 1 1 0 1 2 2 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 2 0 0 0 1 1 0 0 +0 1 0 0 0 0 1 1 0 0 0 0 2 1 0 2 1 0 0 1 3 2 0 0 0 2 0 0 0 1 0 1 2 1 0 1 1 1 1 2 3 1 1 1 1 1 0 0 1 0 0 0 1 1 1 0 0 3 1 2 2 0 2 5 3 0 0 0 0 3 1 2 2 2 1 0 1 1 3 0 2 0 1 2 0 0 1 2 1 1 1 0 1 3 0 2 1 1 2 0 0 0 1 0 1 1 0 2 1 0 1 1 0 2 0 0 1 2 2 2 3 0 1 2 0 1 2 0 0 1 0 0 0 2 2 1 1 1 1 0 1 2 1 0 1 1 4 1 1 0 3 0 0 1 1 1 2 0 0 1 2 2 1 0 1 3 3 0 1 1 1 1 3 1 0 1 1 2 2 0 1 0 2 2 2 0 0 2 1 2 3 1 2 1 1 0 0 0 1 0 0 3 0 0 0 1 2 0 0 0 1 2 0 1 0 1 1 1 2 0 2 1 0 0 1 1 1 0 1 0 0 0 2 2 1 2 2 2 0 1 0 0 1 3 0 2 0 0 1 1 1 0 0 0 2 2 0 0 0 1 2 1 2 0 1 2 1 0 1 2 1 1 0 1 1 0 3 2 2 1 1 0 2 1 0 0 1 0 0 0 1 0 1 2 2 0 1 0 0 0 +0 0 0 1 2 1 1 1 0 1 2 0 1 2 0 1 3 2 1 1 0 2 1 0 0 0 0 1 0 0 0 2 0 0 1 1 2 2 1 1 2 0 0 1 0 1 0 0 2 2 0 0 0 2 0 0 0 0 1 2 0 1 1 4 1 0 1 1 0 1 0 0 0 1 2 0 2 2 1 0 1 0 0 3 2 1 0 1 1 2 1 2 1 3 0 0 2 1 1 1 1 0 3 2 0 0 2 2 1 0 2 0 2 0 1 2 2 2 0 1 1 1 1 1 1 0 2 0 2 1 1 1 0 1 3 3 2 0 0 3 2 1 1 0 2 1 1 1 0 3 1 1 0 3 2 2 0 0 1 0 1 1 2 3 1 0 2 2 1 2 1 1 2 1 3 2 3 1 1 3 1 0 0 2 0 1 0 1 1 2 3 1 0 0 2 3 1 0 0 1 2 2 0 2 1 0 2 1 0 2 0 1 3 0 0 1 1 2 0 1 1 3 2 2 1 0 0 1 1 1 0 0 0 0 2 0 1 1 1 1 0 2 1 2 1 0 2 1 0 0 1 1 1 1 0 1 2 2 0 2 0 1 1 2 3 1 0 0 1 1 0 0 2 3 0 0 1 2 1 1 0 1 0 1 1 0 0 0 2 0 0 0 4 0 0 0 1 1 1 1 +0 1 1 1 0 0 0 0 1 0 2 2 0 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 2 0 3 1 1 0 0 2 2 0 2 0 1 0 0 0 1 1 0 0 2 1 1 1 1 3 0 1 0 2 0 0 1 2 1 3 2 1 2 0 0 1 0 3 0 1 1 4 1 1 0 2 1 0 1 1 0 1 1 2 1 1 0 0 0 1 2 0 1 1 1 0 1 2 1 1 4 0 2 2 1 0 0 0 2 0 2 5 2 1 0 3 0 0 1 2 0 0 3 0 3 2 1 0 2 0 1 1 1 1 1 1 0 1 1 1 2 2 1 1 1 1 0 0 1 3 0 2 1 2 1 2 0 2 1 0 1 0 1 1 0 2 3 2 1 0 2 0 1 3 1 2 0 2 2 0 3 4 2 2 1 2 1 1 1 1 0 1 1 2 1 1 2 1 0 3 0 1 0 1 4 1 1 0 1 1 1 1 2 1 3 0 0 1 1 0 1 1 2 1 0 1 0 1 0 0 3 3 3 0 1 0 1 1 1 2 2 0 0 1 0 1 0 0 0 1 0 0 1 3 0 0 1 4 0 1 0 1 0 1 1 1 0 1 0 2 0 1 1 1 0 1 1 0 1 1 0 3 1 0 1 0 2 1 1 2 0 0 1 0 1 0 +0 1 0 3 0 1 0 2 3 1 0 1 1 1 0 0 0 0 1 2 3 1 1 0 0 2 0 1 1 1 1 1 1 1 0 2 1 3 1 1 1 0 1 2 1 0 1 1 0 0 1 1 0 1 0 0 1 2 2 1 0 0 0 1 0 1 0 0 2 1 1 2 0 1 0 0 1 4 2 0 0 0 1 0 0 3 2 1 0 0 1 2 0 2 0 0 2 1 1 0 3 1 2 2 2 2 1 2 1 2 0 3 2 0 2 1 3 1 0 2 0 0 1 0 3 0 1 0 2 1 1 3 0 1 2 1 3 0 2 0 1 3 0 0 2 2 1 1 3 0 1 0 1 3 2 3 3 4 4 1 1 1 0 1 0 1 0 0 0 3 1 2 1 0 1 1 1 0 2 0 2 0 0 1 0 1 2 0 0 1 1 1 2 1 0 1 0 0 1 0 2 2 2 0 0 2 0 1 2 1 2 1 2 0 2 0 0 0 3 2 1 1 0 3 0 1 0 1 0 0 2 1 3 0 0 1 1 2 1 1 2 1 1 1 0 0 2 0 2 1 2 0 2 2 1 0 2 2 1 3 1 0 2 1 0 1 2 4 1 1 0 2 1 0 1 0 0 0 0 2 1 0 1 2 0 1 1 1 0 0 2 0 1 1 0 1 2 2 0 0 +0 2 0 1 0 0 0 0 2 1 0 1 1 3 1 0 1 0 0 1 1 3 0 1 1 1 0 1 0 0 1 1 2 0 1 0 0 1 1 1 1 0 1 0 0 1 0 2 3 0 1 1 1 1 1 0 0 1 0 1 1 0 2 0 1 1 1 1 1 0 0 2 0 3 0 0 3 2 3 2 0 1 0 4 3 1 0 7 2 2 1 0 1 5 1 1 2 1 1 0 1 1 2 3 1 3 2 2 1 0 2 2 0 3 1 0 1 1 0 1 1 4 3 1 1 0 0 1 0 0 1 0 3 1 1 1 1 3 2 1 4 0 1 2 2 2 5 2 0 1 0 1 1 0 0 1 3 0 0 3 2 1 3 1 2 3 1 1 4 2 1 0 1 2 1 1 0 0 1 1 1 2 0 1 0 0 2 1 1 2 1 2 2 1 0 3 0 0 1 1 0 0 2 1 2 1 1 1 3 1 0 0 0 1 0 1 3 2 1 3 1 0 1 1 1 1 0 2 1 1 0 1 1 1 0 0 0 1 0 2 0 1 0 0 0 1 2 1 0 2 1 0 1 1 0 1 1 1 2 0 0 0 2 2 0 2 1 0 0 2 1 1 0 0 1 1 1 0 0 2 1 1 0 0 0 0 0 0 0 2 2 0 2 0 0 2 0 0 2 2 +0 2 0 0 2 1 0 0 0 1 0 0 1 1 2 1 1 0 1 0 0 1 0 1 2 0 0 1 0 0 1 0 0 2 0 0 0 5 0 2 1 0 0 0 0 3 0 0 1 0 1 1 1 3 0 1 0 0 1 1 1 0 0 0 1 1 0 3 0 2 1 1 1 0 1 2 1 1 0 0 2 2 0 4 0 1 0 0 0 2 1 0 1 1 1 1 2 1 0 0 2 1 3 2 0 1 1 0 1 0 1 0 1 1 0 3 1 1 0 2 0 7 5 1 0 1 2 0 1 1 1 0 2 3 1 0 0 0 1 1 2 3 1 1 0 1 0 0 2 1 1 0 0 2 1 0 1 1 2 1 3 3 2 1 1 3 0 5 1 2 1 0 2 1 2 2 1 0 2 0 0 0 0 2 1 1 3 1 2 2 2 0 3 0 1 1 0 1 0 4 0 2 1 0 1 1 1 0 0 0 0 0 1 1 0 3 1 1 2 2 2 5 2 0 1 0 0 2 1 0 0 1 2 3 1 1 1 0 1 0 1 1 1 0 2 2 1 0 1 0 1 0 0 1 1 2 4 0 0 1 1 2 1 4 2 1 1 0 0 2 1 1 1 0 0 2 0 0 3 0 0 1 2 1 0 0 1 2 1 1 0 0 1 1 1 1 0 1 0 3 +0 1 1 0 0 0 1 0 2 0 0 1 0 2 1 0 0 0 0 3 1 0 1 1 2 1 2 0 0 1 0 0 1 1 0 2 1 1 1 3 1 0 0 1 1 0 0 1 1 0 2 0 1 2 0 2 1 0 2 2 0 2 0 0 3 2 2 3 1 2 1 2 0 1 2 2 0 2 2 0 0 0 2 1 1 0 0 1 0 1 0 2 1 0 1 1 3 0 0 2 1 2 0 2 0 0 3 3 1 1 0 1 0 1 1 3 0 1 1 0 1 1 2 2 1 0 3 0 2 2 0 3 0 0 3 3 2 0 1 1 2 4 1 0 1 0 1 4 0 3 3 0 2 2 3 1 1 1 0 0 0 0 0 0 0 1 0 2 1 1 0 1 1 0 1 0 2 3 0 0 2 1 0 0 0 0 2 2 1 2 2 0 2 2 1 3 2 0 1 2 1 3 0 0 2 1 0 0 1 0 0 1 0 3 2 0 1 2 0 4 1 0 1 2 1 2 1 0 0 1 1 1 0 0 0 1 1 1 3 1 0 0 0 0 2 2 0 0 1 1 2 2 1 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 2 2 0 2 1 0 0 1 2 0 1 2 2 0 1 0 0 1 2 1 1 0 1 0 0 0 0 1 1 0 0 1 +1 0 1 0 0 1 0 0 0 2 0 0 2 0 0 1 0 2 0 0 0 0 2 0 0 2 0 1 1 1 0 0 0 1 1 0 3 1 1 0 0 1 1 1 0 1 2 0 1 1 1 1 1 0 1 1 1 0 0 1 1 3 1 5 1 2 1 0 1 1 0 2 0 1 0 1 0 1 0 1 0 1 1 1 1 2 0 3 0 1 4 1 0 3 2 1 2 1 3 0 0 2 2 4 0 2 1 2 1 2 1 1 0 0 2 2 1 1 0 0 2 0 1 1 3 1 2 2 3 3 1 2 2 4 3 0 0 0 1 4 0 1 1 4 2 2 1 1 2 5 2 0 3 0 0 0 3 4 1 2 0 0 2 1 1 3 0 2 2 2 1 3 6 2 1 0 1 2 1 1 0 1 0 1 1 4 2 5 1 1 3 2 2 1 0 3 1 0 1 5 1 2 0 0 1 2 2 1 2 0 2 3 1 0 1 1 2 1 1 1 0 0 1 1 1 0 0 1 1 1 0 2 3 0 0 0 1 0 5 1 2 1 2 0 1 0 0 1 4 0 0 0 0 1 1 1 0 0 0 1 5 1 1 1 2 1 0 0 0 0 1 0 1 0 0 0 1 1 2 1 0 1 1 0 2 1 0 3 0 0 2 1 1 1 0 2 1 1 1 0 +2 3 1 1 1 2 3 2 1 1 1 0 2 1 1 1 1 0 1 0 0 0 0 0 0 1 2 1 1 1 1 1 3 2 2 1 0 0 0 1 0 0 0 2 0 3 0 1 1 0 4 3 0 0 3 2 3 0 1 0 2 1 1 1 3 0 2 0 0 2 0 1 0 2 1 0 1 0 1 2 1 1 2 1 2 0 2 0 0 3 0 0 3 0 1 2 5 1 1 1 2 1 2 1 3 1 1 2 1 1 2 1 3 1 2 2 0 0 0 3 1 1 1 1 2 2 1 1 2 1 2 1 0 1 3 1 0 1 0 1 1 2 2 0 1 1 0 0 2 1 1 0 2 0 0 1 0 0 0 0 0 2 1 1 0 1 0 2 2 1 1 0 2 0 0 2 0 2 0 3 1 0 3 1 3 2 4 2 1 0 1 0 1 1 1 1 1 0 2 0 1 1 0 0 3 1 0 0 1 1 0 0 0 4 0 1 0 3 0 1 1 1 1 1 1 1 2 0 0 0 3 1 3 0 0 1 3 4 1 0 1 1 0 3 0 2 1 1 0 1 1 0 3 1 0 1 4 0 1 0 0 2 2 1 1 1 1 0 1 3 2 0 1 2 1 2 1 1 2 0 1 0 3 0 1 2 1 0 0 2 1 2 1 0 2 1 0 1 0 2 +0 1 0 0 0 0 0 1 0 0 0 0 4 2 2 0 1 1 2 0 0 0 0 1 1 2 2 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 5 1 0 1 2 0 0 3 0 3 1 3 0 1 0 0 3 3 2 2 0 2 1 0 0 2 0 1 0 0 0 0 3 1 1 2 0 1 2 1 0 2 2 2 1 1 2 1 0 0 3 1 2 0 1 0 0 0 2 1 2 0 1 1 0 1 1 1 0 3 1 1 1 3 1 2 1 1 2 0 1 1 3 1 0 1 3 1 4 2 1 2 2 1 4 4 0 1 1 1 0 0 4 3 1 0 0 3 3 2 4 2 0 0 1 1 3 0 1 0 1 1 1 2 1 2 0 2 1 0 1 1 3 4 1 0 2 0 0 2 2 0 1 1 0 0 1 1 2 1 2 2 1 0 0 0 1 4 1 0 0 0 1 1 2 4 1 2 2 1 1 0 1 2 3 2 0 0 0 1 4 0 1 2 2 0 1 0 0 1 0 0 0 1 1 2 3 1 2 4 1 0 1 0 1 1 3 2 1 0 1 0 1 0 1 2 0 0 2 1 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 2 1 0 0 0 1 0 2 2 2 0 5 +0 1 0 0 0 3 1 1 0 1 0 3 2 0 1 2 0 0 0 0 1 0 2 3 0 2 0 0 0 1 0 1 4 1 1 0 1 2 0 2 3 0 0 0 2 2 3 1 0 1 2 0 0 0 0 2 1 2 1 4 0 2 1 0 0 3 2 2 4 0 0 1 3 1 2 0 1 2 2 0 0 3 0 1 3 0 1 1 0 0 1 2 1 1 1 1 0 0 0 0 1 0 0 0 1 3 0 3 0 0 0 1 0 1 1 2 3 2 0 1 1 2 1 4 2 2 1 0 0 2 2 1 2 2 1 5 4 0 2 1 1 0 2 3 2 0 3 0 3 1 1 1 1 1 0 2 2 1 1 2 1 2 4 1 1 1 0 1 2 1 2 0 1 2 0 0 0 1 1 2 4 2 1 1 0 2 0 1 2 2 2 2 1 1 3 4 2 0 1 2 0 2 3 1 1 0 2 3 1 1 1 1 1 0 1 1 2 1 0 0 1 0 1 2 2 1 0 2 1 2 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 2 1 1 2 3 3 0 1 0 2 0 2 4 1 1 1 1 0 1 1 0 0 0 1 0 0 2 0 1 1 1 1 0 0 0 2 0 1 0 0 0 0 1 2 2 0 0 0 0 +0 0 1 1 0 0 3 0 0 1 1 3 0 0 1 1 0 1 0 1 0 2 2 0 1 1 1 0 3 0 2 1 0 1 0 2 1 2 1 0 0 0 0 2 1 1 0 0 1 2 0 1 0 0 1 1 0 0 0 0 1 0 1 1 2 0 0 1 2 2 0 1 1 1 0 1 0 1 0 2 0 4 2 3 3 0 2 0 1 0 2 1 1 1 2 2 0 4 1 1 2 1 0 0 3 1 0 1 0 2 2 3 0 2 0 0 4 1 2 1 0 1 2 0 2 0 0 0 0 3 3 1 3 1 1 2 1 1 2 1 0 0 5 4 1 0 3 0 2 2 4 1 0 0 2 0 1 0 0 0 2 0 1 0 2 1 2 1 1 0 1 3 2 2 0 2 2 0 4 3 1 1 2 1 0 1 3 1 1 0 1 0 0 3 2 2 1 1 3 0 0 0 2 2 0 2 2 1 0 0 0 2 3 2 1 2 2 1 3 0 0 1 0 0 2 3 1 1 1 3 2 1 0 0 2 0 0 0 0 1 3 0 0 0 1 0 0 3 1 2 0 0 2 0 2 0 1 0 2 0 0 1 0 1 2 0 0 2 2 1 2 2 2 2 1 1 0 2 3 0 2 1 0 1 0 1 0 2 1 1 0 1 0 1 0 0 1 2 1 0 +1 0 1 1 0 0 1 1 0 1 2 0 0 0 2 1 1 1 0 0 0 1 3 3 2 0 2 0 3 2 1 1 1 1 1 0 1 0 1 0 2 2 1 4 1 2 0 1 0 1 1 1 0 1 0 0 2 0 1 3 0 1 1 2 1 1 3 1 1 1 1 0 1 0 0 2 0 1 1 0 1 0 4 0 2 1 2 0 1 0 0 0 0 1 1 2 3 2 3 1 2 1 1 1 6 2 4 3 3 0 0 2 1 2 0 2 0 3 0 0 0 2 2 0 1 0 1 0 0 2 2 0 2 1 1 3 0 2 1 1 3 1 2 2 1 1 1 3 1 1 4 3 2 1 2 0 0 0 2 1 0 0 1 0 2 1 1 1 1 2 0 1 1 1 0 1 1 1 1 1 1 2 0 2 1 0 0 2 1 0 0 1 3 0 1 3 3 1 1 1 1 0 2 1 3 1 0 2 0 0 0 0 2 1 1 1 3 2 2 1 3 3 1 1 1 1 1 0 0 2 1 0 2 1 1 0 1 5 1 3 0 0 0 1 0 1 1 2 3 1 2 1 2 1 1 1 1 3 4 1 4 4 1 0 0 2 2 5 0 0 0 0 0 3 1 1 1 3 1 0 2 4 1 2 1 0 0 2 2 1 2 0 0 1 2 0 0 1 0 0 +1 3 1 2 2 0 1 0 1 5 2 0 1 0 0 2 1 1 0 1 0 4 2 1 0 0 1 0 1 0 0 1 2 0 0 0 1 0 2 1 0 0 0 3 1 1 1 1 1 0 1 0 1 3 1 1 0 1 1 0 1 1 1 1 3 1 1 1 0 1 4 0 1 1 5 1 1 1 1 1 0 1 1 0 0 1 2 1 1 0 4 3 1 0 1 0 0 1 1 4 2 3 1 1 0 2 2 2 2 2 1 1 0 0 1 1 0 1 2 3 0 1 0 2 0 1 0 1 0 0 0 1 1 0 0 0 2 1 1 0 1 2 1 0 1 1 3 1 3 1 1 4 4 3 3 1 0 2 1 3 0 2 1 1 0 3 4 0 0 1 0 4 1 1 0 1 3 0 2 0 0 0 5 2 0 0 1 2 0 2 1 0 0 0 1 2 0 0 0 2 2 0 3 1 1 2 2 1 2 0 1 0 2 1 1 1 3 1 3 1 0 2 1 0 1 3 2 0 1 0 0 0 2 1 1 2 1 1 0 4 2 0 0 2 3 0 2 1 0 1 1 2 0 3 0 1 1 1 1 2 1 1 0 3 3 0 0 1 1 1 3 1 0 0 1 1 1 0 0 0 1 0 3 2 1 2 0 3 0 0 0 1 0 2 0 1 0 1 1 0 +0 0 1 2 0 1 2 0 0 1 1 1 0 0 1 0 2 1 0 0 0 0 2 2 0 0 1 1 2 2 0 0 2 0 1 1 1 0 0 1 3 1 1 1 0 1 0 0 2 0 0 3 0 1 1 1 1 0 2 0 2 2 2 0 0 0 1 0 0 1 2 0 1 2 0 2 1 1 1 0 1 1 2 1 0 1 0 1 0 1 4 2 1 0 0 1 0 0 1 1 2 2 1 3 0 1 3 1 0 3 3 6 1 4 0 2 4 1 1 2 1 1 0 1 0 1 2 1 1 2 1 3 0 1 1 0 2 1 2 1 1 1 2 4 0 0 2 1 2 2 0 1 0 2 2 0 2 2 3 4 1 1 0 1 0 1 1 1 1 3 0 2 3 1 0 1 0 2 1 1 1 0 1 1 1 0 1 1 3 0 1 1 0 1 2 1 1 2 1 1 1 1 0 0 1 1 1 1 1 2 1 2 0 0 2 1 0 3 2 1 1 0 1 0 0 0 3 1 0 0 0 0 1 0 4 2 0 0 0 2 0 0 1 1 1 1 0 0 2 0 4 1 0 1 1 2 0 2 0 1 1 1 1 1 0 2 0 0 1 0 0 2 0 2 1 1 0 0 1 2 0 3 0 2 0 1 0 1 0 2 1 0 1 0 0 3 0 1 0 0 +1 2 2 0 2 0 2 0 0 0 4 0 0 0 3 3 0 0 2 2 2 1 0 0 1 1 1 2 2 0 0 1 0 2 1 0 0 4 0 1 2 1 0 0 0 0 0 1 0 2 0 0 2 1 2 1 1 1 1 0 0 0 1 2 3 0 0 0 1 0 0 1 0 1 0 0 1 5 2 1 1 2 0 1 1 1 2 0 1 3 2 1 2 2 0 1 1 2 0 2 1 2 0 0 0 1 1 0 0 1 2 1 0 0 1 0 4 0 0 2 0 6 1 2 0 1 0 2 1 3 1 2 2 1 1 2 2 1 0 0 0 3 0 0 2 0 1 0 2 1 2 0 1 1 2 3 2 0 2 2 2 0 2 2 4 4 1 2 4 1 1 2 2 2 2 2 1 1 2 2 0 1 2 0 1 3 0 0 1 0 0 0 2 2 1 2 1 3 0 1 2 0 1 0 5 1 1 1 3 1 1 2 0 0 2 1 1 3 0 3 0 0 1 2 2 1 0 0 0 1 1 0 3 0 0 0 1 0 2 2 0 1 1 1 2 0 0 0 3 0 3 0 0 0 2 0 0 2 0 0 0 1 1 0 1 1 2 1 0 0 3 1 0 0 1 0 0 1 2 1 2 1 0 0 1 0 1 1 0 0 2 0 1 0 0 0 0 0 0 1 +0 0 0 3 1 2 2 1 0 0 3 1 2 0 1 2 2 0 0 1 0 1 2 1 3 1 2 1 0 4 2 0 2 1 0 0 2 0 2 0 0 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 2 2 0 1 1 0 0 1 3 1 4 0 2 1 1 2 0 3 2 2 2 0 2 1 1 1 0 2 2 0 1 0 0 1 1 1 3 2 3 1 3 0 1 1 3 0 1 2 2 3 0 0 3 2 3 1 2 0 2 2 6 2 0 1 2 2 0 1 0 6 1 3 1 2 1 1 0 1 2 2 0 1 0 0 1 0 3 2 2 0 1 1 2 1 0 0 0 1 2 1 1 3 1 0 1 2 0 1 1 2 0 1 1 2 0 1 1 1 0 4 1 1 0 2 3 2 3 0 0 1 1 2 1 1 1 1 0 3 0 1 2 1 0 0 0 3 2 3 1 4 0 1 2 2 1 0 1 1 0 2 0 1 1 3 1 2 0 1 1 2 0 3 0 0 2 3 1 2 3 1 0 1 2 0 1 1 0 1 2 0 2 0 1 0 2 1 0 1 1 0 0 0 0 1 1 0 1 1 2 2 1 1 0 1 1 1 0 0 1 1 0 1 2 0 0 3 0 1 1 1 0 2 1 1 3 0 1 0 0 1 0 1 +0 0 0 0 0 2 0 0 1 0 3 2 0 0 0 1 1 1 0 2 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 2 1 0 3 1 1 2 1 1 0 1 0 2 1 2 1 3 2 2 0 1 2 2 2 2 0 1 0 0 3 2 1 0 0 1 0 2 2 0 2 3 2 0 0 0 2 1 0 1 2 0 3 1 2 4 0 2 1 2 4 0 0 2 1 0 1 0 2 2 3 0 0 1 2 1 0 2 2 1 3 0 0 1 1 1 1 1 0 2 2 0 1 2 2 0 0 1 0 1 1 6 1 1 2 5 0 0 2 1 1 0 0 1 1 0 1 1 0 6 0 1 1 1 2 0 0 1 0 3 0 2 2 1 2 2 1 0 1 1 2 3 2 2 3 0 3 1 0 0 2 0 0 6 0 0 2 1 2 0 2 0 1 1 1 3 1 3 1 1 5 0 0 2 0 0 1 2 0 0 1 1 2 3 0 1 0 1 0 0 0 3 1 1 1 0 2 0 2 3 2 1 2 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 1 2 1 1 3 1 2 0 0 1 0 0 1 2 2 0 1 0 1 1 1 0 1 0 1 3 0 0 0 0 0 0 0 0 1 4 0 0 0 +1 1 1 1 1 1 1 1 2 1 0 0 2 0 0 0 1 1 0 1 0 0 1 0 3 0 1 1 0 0 0 0 2 1 0 3 1 1 3 0 0 1 0 3 2 0 0 1 1 1 1 1 2 3 3 2 3 1 1 2 2 2 0 0 0 0 0 1 0 2 1 0 1 1 1 1 2 0 0 0 0 0 3 2 1 2 0 2 0 4 4 2 4 1 0 2 3 2 1 1 1 0 0 3 1 0 0 3 1 0 0 3 0 2 2 0 1 1 2 2 1 1 0 0 2 0 1 3 1 2 0 3 0 1 0 0 0 0 4 2 1 1 1 2 0 0 1 1 0 1 5 3 0 1 2 2 0 2 0 2 1 0 2 3 3 0 1 0 2 0 2 3 0 1 2 1 4 0 0 0 2 2 1 0 0 0 0 1 4 4 0 1 0 1 2 1 1 3 2 0 0 3 0 1 1 5 2 0 0 3 0 3 1 2 0 0 3 1 0 4 2 1 0 2 1 0 2 0 1 2 1 0 1 2 1 0 0 1 0 0 0 1 0 1 0 2 1 0 0 2 2 0 0 0 1 1 2 2 2 1 2 1 0 1 1 1 0 1 0 0 1 0 2 0 1 1 0 2 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0 +1 0 1 1 2 2 0 1 0 0 0 0 2 1 0 0 2 0 1 1 2 1 3 0 2 0 0 0 0 3 0 0 1 1 0 1 1 0 2 2 2 0 0 0 1 0 1 2 1 1 0 1 0 0 0 2 2 2 0 0 1 1 0 0 0 0 0 1 2 0 0 0 2 1 1 3 2 0 3 2 2 3 1 1 2 0 5 0 0 1 1 0 2 0 1 0 1 3 2 2 1 2 1 3 3 0 1 1 2 2 2 0 1 1 4 1 1 1 1 2 3 0 1 2 1 2 3 0 0 3 0 2 4 5 2 2 2 1 0 4 1 2 2 1 1 0 1 1 0 2 0 3 1 1 0 2 1 2 0 1 1 3 2 4 2 2 0 2 0 0 1 3 1 1 3 1 3 2 3 2 1 2 0 0 2 1 5 1 0 2 1 2 1 1 1 0 1 0 2 4 1 2 2 0 1 2 3 2 1 0 2 2 1 4 1 3 0 0 1 1 2 0 0 3 2 0 2 0 1 0 1 0 1 2 1 3 2 1 0 2 1 2 1 0 1 1 0 1 2 1 1 0 1 0 2 1 1 0 0 1 0 0 3 0 1 4 0 0 1 0 1 0 1 0 3 1 1 0 5 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 3 1 +1 0 1 2 0 0 0 2 0 1 0 2 0 0 0 3 1 0 1 0 0 0 0 2 1 1 1 2 0 0 0 1 0 1 1 0 0 0 1 0 0 0 2 1 0 1 1 2 3 3 2 0 1 1 0 3 0 2 0 0 0 1 1 1 1 0 1 0 2 1 1 3 1 2 1 1 0 1 1 2 0 1 0 0 2 2 2 1 0 0 0 1 0 0 3 2 0 3 4 2 1 4 3 2 0 3 1 1 2 0 2 0 3 1 1 0 0 2 1 2 1 0 0 3 3 3 1 3 1 1 2 1 0 2 1 0 2 2 4 2 2 0 2 0 0 1 2 1 0 2 1 0 2 1 1 1 0 1 4 1 1 3 0 2 1 1 2 0 2 3 1 2 0 1 1 1 1 1 1 2 1 0 1 3 1 0 0 1 3 0 0 3 1 0 1 2 5 5 4 1 0 0 1 3 0 2 1 1 3 0 0 0 1 2 0 1 2 3 0 2 0 2 0 1 1 2 3 0 1 2 2 1 0 0 2 0 1 1 4 3 0 1 2 0 0 1 2 0 2 1 1 0 0 2 0 0 1 1 0 2 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 3 1 2 0 1 2 1 1 0 3 2 1 0 1 1 2 2 0 1 1 0 2 1 0 +0 0 1 0 1 1 0 1 1 0 2 1 1 2 1 1 2 1 0 2 2 1 0 2 1 1 0 1 3 1 1 1 5 1 0 1 2 1 0 0 2 1 1 0 4 2 0 1 1 0 1 0 2 2 3 1 2 1 0 3 1 0 0 0 1 2 2 1 0 0 2 0 0 1 0 2 0 1 3 2 1 2 1 0 1 0 1 0 4 1 0 2 2 2 2 2 2 3 0 3 1 3 0 4 1 0 1 0 2 0 2 1 2 0 0 2 1 4 2 1 4 3 2 1 2 1 4 0 1 0 0 3 1 0 0 1 0 1 3 2 4 1 1 3 0 1 1 2 0 2 1 3 2 1 1 2 1 2 4 4 0 3 3 0 1 1 1 2 1 4 3 1 1 1 1 2 1 0 1 2 1 3 1 0 0 0 0 2 0 0 1 0 2 2 1 2 2 1 3 3 2 1 1 2 1 2 1 0 2 1 2 1 1 1 0 0 4 2 0 0 3 2 0 1 1 1 0 2 2 2 1 2 0 2 2 0 3 0 1 1 1 0 0 0 1 1 2 1 1 0 3 0 1 0 1 0 0 0 1 2 0 0 1 4 3 2 1 1 0 1 0 0 0 0 0 1 2 2 0 1 1 0 0 1 0 2 0 1 0 0 0 0 4 1 0 1 0 1 0 1 +1 1 1 3 1 0 0 0 2 0 1 2 2 0 0 0 1 0 0 2 0 1 0 0 2 0 0 0 1 0 1 5 0 1 1 0 0 1 1 4 1 0 3 1 1 2 3 0 0 2 1 3 1 2 0 2 1 0 2 1 0 0 0 2 0 0 0 2 4 1 1 0 2 1 0 4 0 1 1 2 0 1 1 0 1 5 1 0 0 1 2 1 1 5 0 1 2 1 1 2 2 1 1 0 3 2 2 0 0 2 1 1 3 4 0 0 1 2 3 3 0 3 1 1 2 0 3 0 2 4 4 1 1 3 0 1 2 3 0 1 0 1 2 2 3 2 1 1 0 3 2 1 0 2 2 3 0 1 3 0 2 2 3 2 1 3 0 3 0 2 0 1 2 1 0 2 3 0 0 1 2 2 3 2 2 0 2 1 0 3 1 0 0 2 1 3 1 1 1 1 0 4 1 3 0 0 1 2 0 0 1 0 0 2 1 1 2 2 4 1 3 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 2 2 0 2 0 1 1 0 1 2 0 0 0 0 1 0 1 3 1 0 1 1 1 3 0 0 0 1 1 2 3 2 0 0 1 0 0 0 1 1 0 0 0 1 1 1 3 0 1 0 1 2 0 1 2 0 1 0 0 0 1 1 +0 2 1 4 2 0 2 1 2 1 0 0 0 0 1 0 0 1 0 0 0 2 0 1 0 0 1 1 1 2 0 2 0 1 1 0 2 2 1 1 3 1 1 2 2 2 2 1 1 1 0 1 0 1 2 2 1 2 0 2 0 1 2 1 2 0 1 1 2 0 1 2 0 2 1 1 0 0 1 0 0 1 3 0 3 0 0 2 0 1 1 0 0 3 0 1 2 2 1 0 1 3 0 3 0 1 2 1 3 0 2 3 2 1 0 2 2 1 1 2 2 3 1 1 4 1 1 1 0 2 1 2 1 0 2 1 0 1 1 1 0 3 1 1 2 0 0 0 0 1 0 3 4 2 0 0 1 1 1 2 0 0 1 1 3 0 1 1 1 2 6 1 1 2 0 1 2 0 2 2 1 0 1 1 1 2 0 2 2 2 1 0 4 0 2 2 3 3 3 0 2 1 2 0 2 0 0 3 1 2 1 1 1 2 0 1 0 1 3 0 3 3 1 1 3 1 1 1 2 1 0 3 1 0 2 1 1 2 1 1 3 0 1 3 0 1 0 1 0 0 0 1 1 2 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 2 2 0 1 0 2 2 1 1 1 0 2 0 2 0 0 0 0 1 0 0 1 1 0 2 1 0 0 2 1 +0 2 2 0 2 1 1 0 0 1 0 0 2 1 0 1 0 1 1 1 2 0 1 1 1 0 2 1 0 0 1 1 0 0 4 1 2 0 1 1 2 1 0 2 0 1 2 0 1 0 0 1 0 1 1 1 3 0 1 1 2 2 1 0 2 2 0 2 0 3 2 1 2 1 3 2 1 2 2 1 1 1 1 4 1 1 1 2 1 1 1 1 0 5 1 0 1 2 0 3 0 1 2 1 3 1 5 2 2 2 1 1 1 1 0 0 1 2 1 3 2 1 1 2 0 1 2 1 0 3 5 2 2 1 0 2 3 3 0 0 2 1 2 4 0 4 3 1 4 1 2 1 0 1 1 2 1 0 2 0 2 1 2 0 0 0 0 2 3 3 2 0 1 1 0 0 0 3 1 1 3 1 2 2 2 1 0 2 2 2 2 1 2 5 1 0 2 2 0 3 1 0 2 0 2 1 0 1 1 1 1 2 0 4 1 2 0 1 0 1 0 5 1 2 1 1 0 1 0 3 0 0 1 1 2 0 1 2 1 4 1 1 1 3 3 1 2 2 2 4 1 0 1 1 1 1 0 3 0 0 2 0 0 0 1 2 2 2 0 3 0 0 0 1 0 0 3 0 1 2 0 2 0 2 0 1 1 3 1 0 2 0 0 1 1 2 0 1 0 1 +0 0 3 2 1 0 1 0 0 0 3 1 1 2 0 1 0 0 0 0 1 1 0 3 1 0 1 1 1 2 0 0 1 0 0 2 0 2 2 3 1 1 1 2 1 1 2 0 2 0 1 0 0 1 0 2 0 0 0 4 1 2 0 2 0 1 3 3 0 1 1 0 2 1 2 5 0 3 5 0 0 3 1 3 3 0 1 3 4 1 0 4 0 0 1 1 2 2 0 3 0 3 2 0 3 1 0 1 1 0 1 2 2 1 2 2 2 3 2 2 2 1 1 1 2 0 2 0 3 3 3 0 2 1 1 0 2 1 1 2 0 4 0 1 1 1 1 1 4 0 0 2 0 2 1 2 3 3 1 1 0 2 1 0 1 1 2 0 1 1 0 1 3 2 2 0 1 0 2 0 1 1 1 1 2 2 1 1 1 0 0 2 4 3 2 2 0 2 0 0 1 1 2 3 1 0 2 1 1 4 2 1 3 1 0 1 5 1 1 4 0 2 0 1 0 2 0 0 1 0 1 1 2 1 1 3 3 0 2 0 2 0 1 1 0 0 0 2 0 0 2 0 0 1 2 1 0 1 3 0 0 0 3 1 1 3 0 1 0 0 0 3 0 3 1 1 0 0 1 2 2 1 1 1 0 0 0 1 0 1 2 0 1 2 0 0 1 2 0 1 +0 3 0 1 0 0 2 0 1 0 5 3 1 3 1 1 1 2 2 1 1 0 0 0 0 1 2 0 0 0 0 1 1 0 2 0 0 0 1 2 1 0 1 0 0 0 0 3 1 0 2 5 0 2 0 0 0 1 1 0 6 4 2 1 1 1 0 0 0 3 1 1 0 5 0 1 1 3 2 0 5 1 0 2 0 2 2 0 1 0 0 3 2 1 0 4 0 1 3 1 3 3 0 2 0 0 0 0 3 3 1 0 2 3 0 2 2 1 0 2 3 0 0 1 3 2 0 2 1 1 2 0 2 2 1 1 1 0 2 1 2 2 5 3 0 1 1 0 1 2 0 1 3 1 1 4 2 4 0 0 1 2 1 0 1 1 0 0 3 0 0 3 0 1 1 3 1 0 2 2 2 2 2 3 0 3 3 1 2 0 0 1 3 0 1 1 1 0 2 4 0 1 1 1 1 2 0 1 2 0 0 2 3 2 1 0 0 1 0 2 0 1 0 0 2 1 2 1 1 3 0 2 0 0 1 0 0 1 3 0 0 0 1 1 1 0 0 1 1 0 1 0 2 0 2 0 0 1 2 0 0 0 2 1 2 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 2 4 0 3 0 2 2 2 0 1 0 0 0 1 1 0 1 +0 1 1 1 2 0 1 0 2 1 2 1 1 2 1 2 0 0 0 0 0 1 0 1 0 2 1 0 0 1 0 2 1 0 2 1 1 0 1 2 0 1 0 2 3 2 1 1 0 1 3 1 0 1 0 0 2 0 1 2 0 0 2 1 1 2 0 0 0 1 1 0 1 2 0 1 2 0 1 0 1 1 0 1 0 0 0 2 0 1 2 1 0 0 1 3 1 0 1 2 2 1 3 2 2 2 1 1 0 3 1 0 1 2 0 1 2 1 2 0 0 2 1 1 4 2 1 0 1 0 2 0 1 2 1 1 1 1 1 2 0 2 0 2 1 3 1 1 2 1 0 3 3 2 4 1 4 2 2 2 4 3 1 3 2 1 0 3 0 1 2 3 0 0 3 0 2 1 1 0 3 1 1 0 2 2 2 1 0 0 2 1 1 2 3 0 1 1 4 0 4 0 1 2 0 1 1 0 1 0 0 0 5 4 0 2 4 3 0 0 0 1 1 2 4 2 3 0 1 1 0 5 2 3 2 1 2 0 2 0 0 0 1 0 5 1 1 3 2 0 1 0 0 2 0 0 0 2 0 3 3 1 0 2 1 0 0 3 2 1 1 0 2 2 2 0 2 1 0 1 2 1 2 0 2 2 2 0 0 2 0 1 0 2 1 0 2 1 2 0 +1 2 0 1 0 1 1 0 0 1 0 2 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 4 4 0 2 1 0 1 1 3 1 3 2 0 0 2 1 2 3 2 1 1 0 0 0 0 0 2 4 0 0 1 2 1 0 1 1 1 5 1 3 0 1 1 2 0 0 0 2 2 3 1 0 1 0 0 2 1 0 1 5 2 2 3 0 1 4 0 0 1 0 0 1 2 1 1 3 1 2 1 1 1 0 1 0 1 0 1 2 2 2 2 1 1 0 2 3 0 0 2 1 3 0 2 3 1 2 2 3 1 0 1 0 2 1 1 1 3 2 2 3 1 2 2 2 0 0 2 0 1 1 0 3 1 1 2 2 2 4 4 0 0 2 1 2 3 4 2 1 1 2 1 1 2 1 2 1 2 0 0 2 0 3 2 3 1 2 0 1 0 1 1 2 0 1 0 0 1 1 1 2 1 1 0 2 1 3 1 1 1 0 0 2 0 1 1 2 3 2 1 5 1 2 1 3 3 0 2 0 0 0 2 2 0 2 0 1 3 2 2 2 1 0 2 0 3 2 0 1 0 1 1 0 1 0 2 1 1 2 0 2 2 0 2 2 0 2 0 1 0 1 1 1 1 0 0 2 0 1 1 0 1 0 0 1 1 1 2 1 1 0 0 0 0 +0 1 1 1 1 1 0 4 1 0 0 0 3 1 2 0 3 0 0 1 2 2 1 0 3 0 0 1 2 1 0 1 0 2 0 2 1 0 1 1 0 1 2 0 1 0 2 0 2 3 1 3 0 1 1 1 2 2 1 0 3 0 0 0 0 1 0 2 0 1 2 1 1 1 1 1 1 1 2 3 3 0 2 2 1 2 1 1 2 1 0 2 2 0 0 0 3 2 3 0 3 2 3 2 1 1 0 0 5 2 1 2 2 3 0 1 0 4 0 1 0 1 3 3 2 1 1 3 3 1 1 1 0 0 1 1 0 1 3 0 0 0 1 2 0 0 0 1 0 1 1 0 1 2 0 1 3 0 1 0 2 0 4 0 1 1 0 2 1 0 2 1 2 1 4 1 1 3 5 1 2 0 1 0 1 3 0 1 1 2 4 2 0 4 5 0 2 0 3 4 1 1 1 1 1 2 2 0 1 2 1 1 1 3 3 1 1 3 1 3 0 0 1 0 0 1 1 0 2 0 0 0 1 2 2 2 0 2 1 2 1 2 2 2 0 1 1 0 1 2 0 0 1 1 2 2 4 1 1 1 1 0 0 1 2 0 3 1 1 2 2 2 0 0 0 0 0 0 1 2 2 1 0 1 0 0 1 2 0 2 2 2 2 1 0 1 1 1 0 3 +1 2 3 1 2 2 0 0 0 1 1 0 0 1 1 2 1 1 1 1 2 0 1 0 1 0 0 0 1 1 0 2 1 2 0 0 3 3 0 1 0 3 2 1 0 1 1 0 1 1 4 1 0 1 1 0 1 1 2 1 1 0 2 0 0 3 2 0 0 3 1 1 1 2 3 1 3 2 1 2 2 0 3 5 3 3 1 1 0 2 5 0 2 0 2 0 1 2 1 2 0 0 0 1 2 2 3 1 0 1 1 2 0 0 2 0 2 0 0 1 3 3 0 1 0 1 1 0 2 1 1 4 1 1 0 2 5 0 1 2 4 3 3 1 0 2 1 2 0 1 3 1 1 3 3 1 3 0 2 3 4 1 2 3 2 1 3 0 0 1 1 1 3 1 1 3 2 0 4 3 1 4 0 0 1 1 1 2 1 0 1 1 2 1 1 3 1 3 1 3 1 1 4 1 2 2 1 0 0 3 3 1 1 1 2 1 0 2 0 2 1 0 2 2 2 2 0 1 2 3 2 3 1 0 2 0 0 1 3 0 0 2 2 0 2 1 1 0 2 2 1 1 2 1 0 1 0 0 1 0 0 0 2 2 0 0 1 1 0 0 1 1 0 0 0 0 2 0 0 1 1 3 1 0 1 1 0 2 1 1 2 2 0 1 2 0 2 1 1 0 +1 3 0 1 0 2 0 3 1 0 0 1 1 3 1 2 0 1 1 1 0 1 5 2 1 1 2 0 3 1 0 2 0 1 1 1 0 1 1 0 1 1 2 0 2 3 0 0 1 1 2 1 2 1 1 1 1 1 0 2 0 2 0 1 1 1 0 1 0 2 2 1 1 3 0 2 1 1 1 0 2 4 0 2 1 0 2 1 5 5 2 1 1 3 0 0 4 1 1 0 1 3 2 0 4 0 3 2 2 1 1 0 0 2 2 2 1 2 1 1 3 2 3 4 1 0 1 2 1 0 1 3 0 4 1 0 1 1 0 1 2 2 1 4 1 1 2 2 0 1 2 1 2 2 2 1 0 1 3 2 4 0 1 6 1 2 1 2 1 0 2 1 1 0 2 1 3 2 1 1 1 1 1 0 1 1 3 2 0 1 1 0 0 5 0 0 0 1 0 1 2 1 1 2 2 1 3 2 2 1 0 0 2 3 1 1 1 2 1 1 3 1 1 0 1 1 1 0 3 2 1 1 0 2 1 0 0 3 0 1 0 1 2 0 0 0 1 0 1 1 1 0 1 0 9 0 1 3 5 0 0 1 2 0 1 1 2 2 0 1 2 0 2 0 2 0 2 0 1 0 1 1 2 1 0 3 1 0 2 0 0 0 0 1 0 3 0 1 2 0 +0 2 0 0 1 1 0 1 0 0 3 0 1 3 1 0 1 0 2 0 1 0 0 0 0 1 0 1 0 0 2 0 1 3 0 0 0 1 2 0 1 1 0 0 3 1 1 0 0 2 0 1 2 1 2 2 1 3 1 1 0 2 0 2 0 2 0 1 4 0 1 1 0 2 2 3 1 1 0 0 3 1 3 2 0 1 0 4 1 1 4 1 0 2 2 1 1 2 1 1 2 2 2 1 3 2 0 2 0 1 4 0 2 0 2 5 1 2 2 4 1 3 3 1 1 3 3 4 2 2 1 1 1 0 2 0 1 1 4 0 1 3 2 1 3 2 3 3 3 2 1 0 1 0 1 2 1 0 2 1 1 3 2 2 2 1 1 1 2 2 0 0 0 2 1 0 4 1 1 4 2 0 3 1 2 4 1 1 1 1 1 0 0 1 2 4 0 2 2 0 2 1 1 0 3 1 2 1 1 4 1 3 4 2 1 1 1 3 1 0 0 0 2 1 2 1 0 0 1 0 0 1 1 0 2 3 3 2 2 1 3 0 0 0 1 0 0 1 0 1 0 2 1 0 0 0 0 1 2 0 2 1 3 0 0 1 1 1 1 2 0 1 0 0 1 2 0 1 1 0 0 0 3 0 1 2 1 2 1 0 0 3 2 0 1 0 1 2 2 1 +0 2 0 0 1 1 2 0 1 1 2 0 1 1 1 2 0 0 0 2 1 0 2 0 0 1 1 2 6 0 2 1 1 0 1 2 2 0 2 0 0 0 1 0 2 0 0 0 1 2 0 1 0 2 0 2 1 0 1 0 2 0 2 1 2 1 1 1 0 2 0 1 0 1 4 0 1 1 2 3 2 2 0 2 0 1 1 1 1 1 1 2 1 1 3 5 1 0 1 0 1 1 0 1 0 0 1 1 2 2 1 2 2 0 0 0 2 1 0 0 1 1 1 1 3 2 0 1 2 1 2 0 5 2 0 1 2 2 2 1 2 1 4 0 1 3 5 0 1 3 1 0 1 2 1 1 0 0 1 1 2 3 1 1 3 0 1 2 0 2 0 0 2 0 1 1 2 1 2 2 0 3 2 1 1 1 0 2 0 1 2 2 2 1 2 3 1 4 2 1 2 1 1 2 2 3 3 1 2 0 0 2 0 0 0 2 3 0 0 4 2 1 0 1 1 0 0 1 1 1 2 3 1 3 2 2 1 0 2 0 2 0 0 1 0 1 1 1 1 3 1 0 2 0 1 0 2 0 2 1 1 1 5 2 0 3 0 0 0 1 0 0 5 1 1 1 2 1 1 3 1 1 1 1 0 2 2 0 1 1 1 3 2 0 3 1 2 0 1 1 +1 0 0 1 0 0 2 1 0 1 1 2 0 2 2 1 1 2 1 3 1 0 0 1 1 2 2 3 2 0 1 1 0 0 0 1 1 2 1 0 1 0 2 1 2 2 2 2 1 1 2 0 2 0 0 1 3 1 1 1 2 2 2 0 0 2 3 1 2 5 0 3 2 0 1 3 2 1 0 3 2 0 0 4 2 2 1 2 2 1 3 4 2 1 3 1 2 1 0 4 1 2 3 2 2 3 2 1 0 1 0 2 1 1 3 2 1 1 4 3 3 1 0 1 1 1 1 1 1 0 0 1 3 1 0 2 2 3 1 2 0 2 3 4 2 1 0 0 0 1 1 2 4 2 2 0 1 1 1 2 2 0 3 0 1 0 2 1 0 2 5 2 0 1 2 0 4 0 2 1 0 1 4 0 1 0 2 2 0 1 2 2 1 1 3 3 2 1 1 2 3 0 1 0 2 1 2 1 0 1 1 0 3 1 2 1 3 1 2 0 0 0 2 0 2 1 3 0 2 1 1 1 1 3 3 1 0 1 1 1 1 4 2 0 1 1 0 1 1 0 1 5 0 1 0 3 1 1 1 1 2 3 3 0 2 0 0 3 0 1 1 2 1 1 0 1 1 0 1 3 3 2 1 2 2 2 3 1 1 2 0 1 1 0 1 1 0 1 3 1 +0 0 0 3 3 0 1 1 2 0 0 0 0 1 1 2 0 0 1 1 3 2 0 0 1 6 2 2 0 0 1 2 3 2 1 1 2 1 3 0 1 1 0 3 1 2 1 2 2 2 1 0 1 0 1 0 3 0 1 0 2 3 0 1 0 0 0 1 2 1 1 1 1 0 1 1 1 5 0 2 0 0 0 1 1 1 2 1 3 1 0 0 2 2 1 0 0 1 0 0 1 2 2 1 3 1 4 2 2 1 2 1 0 0 2 4 0 3 3 0 1 1 1 2 4 0 1 2 1 3 0 1 0 1 2 0 3 1 1 2 2 3 0 3 0 3 2 3 2 0 1 0 3 1 4 1 3 1 2 4 2 0 0 0 1 2 0 2 3 1 4 0 0 2 4 2 1 1 2 0 1 2 4 0 1 1 2 1 1 3 5 0 2 2 0 1 3 2 0 1 1 0 0 2 2 0 2 1 1 0 1 3 1 1 1 3 0 2 0 3 1 2 0 0 2 3 4 5 0 3 0 2 4 0 1 3 1 2 4 1 2 0 2 2 0 2 1 1 1 1 1 2 1 1 2 2 0 2 2 0 1 0 1 0 1 0 3 3 4 0 1 1 2 2 0 3 0 0 1 1 0 1 1 0 0 1 2 1 0 0 1 3 2 2 0 3 0 0 1 1 +0 1 1 1 2 0 1 0 2 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 3 0 0 3 1 1 1 0 1 0 2 1 0 1 2 1 1 0 0 1 1 0 1 0 2 2 0 3 0 0 3 1 0 2 1 1 2 0 2 2 0 0 4 1 0 1 1 3 0 1 0 1 2 0 0 3 2 3 5 3 0 2 1 1 1 2 2 0 2 2 3 0 4 1 3 3 3 2 1 2 0 0 1 2 2 1 1 0 0 2 0 2 0 1 0 1 0 1 0 2 3 1 0 2 0 2 1 1 6 1 5 3 3 1 1 1 0 3 2 2 2 1 2 2 1 2 1 2 2 2 0 2 1 1 0 2 1 0 1 0 2 0 0 0 0 4 0 2 2 0 1 1 2 1 0 2 1 0 1 1 0 0 1 1 2 2 0 1 1 2 3 2 2 2 0 0 1 1 1 1 3 1 1 0 5 1 2 1 1 0 1 3 1 0 1 0 1 0 1 0 2 3 1 3 0 1 1 3 0 1 1 1 1 2 2 2 0 1 2 2 1 1 1 0 0 0 1 2 1 0 1 0 0 1 2 1 3 1 1 2 2 0 0 0 1 2 0 2 1 1 1 0 0 0 1 0 3 2 2 0 1 1 0 1 2 1 0 1 0 0 2 +0 0 0 2 0 1 1 2 1 4 0 1 2 0 1 1 1 1 0 1 1 1 0 1 3 1 1 1 0 1 1 0 4 1 1 1 0 2 2 1 0 0 1 2 0 1 4 0 2 0 4 1 0 1 2 0 1 1 0 3 1 1 2 2 1 1 1 2 1 2 0 2 2 1 1 0 0 2 1 0 0 1 2 0 2 0 3 3 3 2 0 1 1 3 1 0 0 1 2 2 4 1 1 1 3 2 0 0 1 3 2 2 2 2 1 1 0 3 3 1 2 0 3 1 3 2 1 1 1 0 2 3 2 2 1 1 3 1 1 1 2 1 1 0 3 2 2 4 1 1 3 0 3 3 4 1 0 1 1 0 0 3 0 1 1 3 1 0 3 2 1 1 4 0 5 2 5 5 0 2 3 2 0 1 2 0 0 1 0 3 2 0 2 3 1 0 3 2 1 0 0 0 1 0 1 1 1 1 0 2 2 1 1 1 0 1 2 0 2 3 1 2 1 1 1 2 2 0 2 3 0 0 1 0 0 2 2 0 1 1 0 0 0 3 1 1 1 0 0 1 0 1 0 2 1 0 0 0 0 0 1 4 2 0 1 2 1 0 1 0 1 0 0 1 1 0 3 1 3 0 1 1 1 1 2 2 1 0 0 0 1 1 1 3 0 1 1 2 0 1 +1 0 1 0 0 0 1 1 0 4 0 0 1 1 1 1 1 0 1 0 2 1 0 1 2 0 4 0 0 2 0 0 2 1 2 0 2 0 1 1 3 2 1 0 0 1 0 0 0 1 1 1 1 0 1 3 1 0 0 0 1 1 0 2 1 2 2 1 1 1 2 0 3 2 1 5 0 1 2 2 1 1 4 1 0 0 1 1 3 1 1 3 0 2 2 3 3 0 0 1 0 1 1 1 1 1 4 1 2 1 2 2 0 0 0 3 0 2 0 1 1 1 3 3 0 2 2 2 2 0 2 0 1 0 1 2 1 2 1 0 3 5 0 4 0 2 0 2 0 0 0 2 1 2 2 7 3 1 0 2 1 1 2 1 2 2 0 0 2 0 0 2 0 4 0 1 0 2 2 3 2 0 1 2 4 3 2 3 1 1 3 3 2 1 2 0 1 3 2 0 1 0 2 1 2 1 1 0 4 0 1 1 0 0 1 0 1 3 4 1 0 0 0 1 1 1 3 0 1 1 2 2 2 0 3 1 0 2 1 0 1 2 2 1 1 1 1 0 0 1 0 2 0 4 0 1 0 0 3 5 2 3 1 0 2 1 2 0 0 0 1 4 0 2 1 0 0 2 1 1 0 2 1 1 1 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 +0 0 1 0 0 1 0 0 1 1 1 1 2 0 2 3 1 1 0 2 1 0 1 2 0 0 2 0 4 2 0 1 1 0 2 1 1 3 1 3 0 2 1 0 1 1 0 3 0 0 2 0 1 1 3 3 1 1 1 2 0 2 0 1 1 0 0 0 1 1 1 0 2 1 1 2 1 3 1 1 3 1 2 2 1 1 0 1 2 1 3 1 2 4 1 0 0 2 2 4 1 2 1 2 0 2 1 1 6 1 1 4 0 1 1 2 1 1 1 5 4 2 2 2 1 2 2 0 0 2 1 4 0 2 1 1 3 2 2 1 2 3 2 1 1 3 1 3 4 1 2 0 2 0 0 1 0 1 1 0 0 2 3 1 1 1 2 2 0 1 1 0 3 0 2 4 1 3 0 1 1 3 5 1 2 3 1 3 0 0 0 0 3 2 1 0 1 2 1 1 3 1 1 1 0 0 0 2 1 1 1 0 0 4 0 1 0 2 0 2 1 0 0 0 1 3 1 2 2 1 2 0 1 1 0 0 0 1 1 0 4 0 0 1 1 1 0 0 4 1 0 0 1 1 2 0 1 0 0 2 0 3 0 0 2 1 1 0 1 3 3 0 0 1 1 0 1 4 1 0 0 2 0 0 2 0 2 0 2 1 0 1 0 2 1 1 2 2 1 0 +1 0 0 0 0 0 1 1 1 1 2 0 0 1 1 2 0 0 4 4 0 2 2 0 1 1 0 0 0 3 2 2 1 2 0 2 1 0 2 0 2 1 0 1 4 0 1 1 2 0 2 0 2 1 1 1 1 3 3 1 2 1 0 1 3 2 1 2 0 1 2 3 4 3 2 0 0 2 0 0 1 0 1 0 3 1 1 3 0 3 1 0 1 0 0 4 3 0 1 1 2 4 0 2 0 1 0 1 0 2 1 0 0 1 2 3 3 0 2 2 0 1 2 1 6 1 1 4 4 0 2 0 2 4 1 1 1 1 2 1 1 3 2 1 3 0 1 1 2 1 4 2 1 2 4 2 1 2 0 0 2 0 0 0 2 1 1 2 3 3 2 3 2 2 2 1 0 1 1 0 1 1 0 2 1 0 4 1 3 1 2 1 1 1 0 2 4 2 0 3 1 0 1 4 4 1 1 2 2 0 3 2 0 1 3 1 0 0 1 3 2 0 1 2 1 1 2 3 5 0 2 1 0 1 1 2 2 2 1 1 2 4 0 2 2 2 0 1 1 1 1 2 1 1 2 1 1 1 1 0 1 0 3 1 0 2 3 0 0 2 0 1 1 0 2 1 2 2 0 1 1 1 1 2 0 1 0 1 1 1 1 2 2 1 0 0 2 1 0 0 +1 1 1 2 0 0 1 0 0 1 0 2 1 0 1 0 0 0 2 1 0 0 0 1 0 0 1 2 0 0 1 1 0 3 1 2 2 1 0 1 1 0 1 1 3 3 1 1 1 1 0 0 1 2 0 0 1 2 0 0 0 3 1 0 0 0 5 2 0 3 0 2 1 0 1 2 0 2 2 6 0 0 0 1 0 2 2 4 3 0 1 1 2 0 1 1 4 3 2 2 3 2 2 1 2 2 1 3 0 1 3 2 3 2 1 4 1 0 2 1 1 2 1 2 0 0 3 1 1 1 0 1 1 1 3 0 1 2 0 2 3 1 4 0 1 1 1 0 0 0 2 0 2 1 1 1 2 3 1 1 2 1 2 0 2 2 1 0 0 4 2 0 0 1 2 0 0 1 2 2 1 2 1 3 1 1 1 1 3 1 1 0 1 2 1 3 1 2 1 0 1 3 0 1 1 3 0 0 3 2 0 1 1 0 0 2 0 0 3 2 1 1 1 3 2 1 5 1 2 1 0 1 2 1 2 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 2 1 2 2 1 0 0 0 3 1 0 3 0 2 4 1 1 2 1 1 2 1 1 0 0 0 2 1 1 2 1 2 1 0 0 0 1 2 1 1 1 0 0 1 0 0 1 0 1 5 +0 0 0 0 2 3 4 4 1 3 1 2 1 1 0 0 1 1 2 2 3 0 0 1 2 1 1 0 0 1 0 1 0 2 0 2 4 0 2 1 1 1 1 2 0 2 0 1 2 0 1 1 2 1 1 0 2 0 1 1 5 2 4 1 1 2 1 2 0 0 1 0 1 2 1 3 3 2 0 1 1 2 2 4 0 1 0 0 3 4 0 1 0 1 0 2 2 5 0 1 2 0 3 1 0 0 2 5 2 4 2 0 2 2 3 3 0 0 2 0 1 2 2 2 2 3 5 1 2 1 1 4 1 2 3 2 1 0 0 0 0 3 2 3 0 2 1 2 1 1 3 2 0 1 0 3 0 2 0 0 2 3 1 1 4 3 2 1 1 1 1 2 1 1 3 2 1 2 1 2 2 1 0 2 1 1 2 1 3 4 3 2 0 3 1 2 1 2 0 3 1 4 0 0 4 0 1 2 2 1 1 1 2 1 2 0 2 0 3 3 1 4 0 1 1 2 2 0 1 0 0 3 2 3 0 2 2 2 0 1 3 0 2 0 0 1 4 1 1 1 1 1 2 0 3 0 2 2 0 1 3 1 1 2 0 2 2 1 1 0 1 2 4 4 0 0 1 0 2 0 2 2 0 1 0 0 0 0 1 0 1 1 0 1 2 2 0 0 2 1 +1 1 2 1 2 3 0 2 0 0 1 0 0 2 1 2 0 0 2 0 2 0 1 0 0 2 5 2 0 0 0 1 1 2 1 1 1 3 2 2 3 1 0 0 0 2 0 0 2 0 2 0 0 1 1 1 0 1 2 2 1 3 4 2 3 1 3 1 0 1 1 1 2 1 0 1 0 5 1 2 2 2 1 1 0 2 4 0 1 2 2 1 0 1 5 0 4 1 1 1 0 1 1 2 4 1 1 1 1 1 2 1 3 0 2 1 1 1 0 2 3 3 0 0 1 3 1 1 1 1 0 1 1 0 0 0 1 4 0 1 0 1 0 2 1 2 3 1 0 1 0 2 0 3 2 1 4 1 1 0 0 3 3 4 2 4 2 0 3 2 3 1 0 1 0 2 0 0 2 2 1 1 2 3 3 2 0 2 1 2 1 0 2 0 4 1 2 2 1 2 2 0 0 0 2 2 1 0 1 4 2 0 0 2 2 4 0 0 0 0 1 0 1 1 1 1 2 0 1 2 2 0 4 0 0 1 3 2 1 4 2 2 0 0 0 0 1 2 0 1 1 0 0 0 1 0 0 4 0 0 0 4 2 1 0 0 0 1 1 0 1 1 0 1 0 1 2 3 0 0 1 1 0 1 0 2 0 1 0 3 2 1 1 1 1 2 0 1 1 1 +2 1 1 1 0 1 0 0 3 0 1 0 1 0 1 2 5 0 2 2 1 0 1 0 0 0 1 0 0 2 0 6 0 2 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 3 1 0 0 1 1 0 3 1 1 1 0 0 0 2 1 0 1 1 2 3 0 3 0 3 1 1 3 2 0 3 3 2 1 3 1 1 0 3 2 2 1 0 1 2 2 7 1 0 1 3 2 3 2 0 2 0 1 0 5 3 3 2 2 0 1 0 1 1 2 3 4 1 1 1 2 2 0 4 2 1 3 1 2 3 0 3 0 1 0 0 1 1 3 3 3 2 0 1 5 2 2 2 1 2 1 2 1 1 3 0 0 3 6 1 0 0 1 2 3 2 0 2 4 5 1 1 2 0 0 1 2 3 1 2 1 1 2 0 1 1 1 3 0 0 1 1 3 3 1 1 0 1 0 3 1 1 3 1 1 0 2 1 2 1 2 0 1 1 2 1 0 1 1 2 2 1 4 2 4 2 0 2 0 0 1 1 1 2 3 1 1 0 1 0 1 2 1 2 1 2 0 1 1 1 1 1 0 5 0 3 1 1 6 3 1 0 1 4 1 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 2 0 0 1 1 +3 0 0 1 1 0 1 1 2 0 2 2 0 1 1 1 0 1 3 3 0 0 0 0 0 1 0 1 0 0 4 3 1 0 2 3 0 0 0 1 1 2 2 1 3 0 1 0 2 1 2 1 0 0 0 2 0 0 0 1 2 2 1 1 1 1 3 0 2 3 1 0 1 1 1 0 0 1 3 1 1 1 1 1 5 1 3 3 1 2 0 1 4 1 2 1 1 5 2 2 0 1 1 1 1 1 2 1 1 0 0 1 3 1 4 0 4 2 3 2 1 0 3 1 1 4 0 4 0 1 1 2 2 0 0 0 1 2 1 2 4 1 0 1 2 4 0 4 1 4 2 1 1 0 0 0 2 2 1 0 1 3 2 1 4 0 3 2 2 3 1 2 1 2 1 1 1 3 1 2 0 0 2 3 2 2 0 2 2 3 1 3 3 1 0 2 2 3 2 2 4 1 0 3 1 2 1 1 1 1 1 1 0 0 2 0 1 0 0 1 0 0 3 1 1 1 2 1 1 1 0 1 2 0 2 1 0 2 0 2 0 0 0 1 1 1 0 2 2 3 2 1 1 1 1 0 1 2 0 2 1 1 0 0 0 1 0 2 2 2 2 0 0 1 0 0 0 0 2 2 1 0 1 2 3 1 2 0 0 1 0 1 2 1 1 2 1 0 1 1 +1 1 1 2 0 0 0 0 1 1 0 2 1 1 5 2 3 1 2 2 0 1 1 0 1 1 0 1 0 1 1 0 0 2 2 1 0 0 0 1 1 1 0 0 1 2 3 3 1 2 1 2 0 1 1 1 1 0 2 1 1 3 1 2 0 2 0 3 2 0 4 0 1 3 2 0 0 1 2 2 4 1 1 0 5 1 0 2 0 1 1 0 0 0 2 2 1 2 2 0 1 1 0 2 2 2 3 1 1 1 1 6 1 2 1 3 2 2 0 0 0 3 1 4 1 3 4 0 4 0 1 0 3 1 0 2 2 1 2 1 0 1 2 3 1 3 1 2 2 1 3 0 1 2 1 0 1 0 0 0 2 2 3 4 1 2 2 1 1 0 1 1 3 2 1 1 0 0 0 2 1 3 1 2 2 2 1 1 0 2 2 4 1 1 1 2 0 0 3 0 3 1 0 1 2 0 0 3 3 0 0 1 4 0 2 3 0 0 3 4 0 3 0 0 4 0 3 1 2 0 1 2 0 0 0 0 4 2 0 3 1 0 4 0 3 1 1 2 2 1 0 2 2 2 0 2 1 1 2 0 2 1 1 2 0 3 2 2 0 0 1 1 1 1 2 0 0 0 0 1 0 2 2 0 0 1 0 2 4 0 1 2 3 0 2 0 1 1 0 2 +1 2 0 0 1 0 2 1 0 2 1 1 0 0 0 0 1 1 1 2 2 2 3 2 0 1 2 0 0 2 1 1 0 1 1 2 0 0 1 3 1 1 1 0 1 0 0 0 0 0 0 3 1 4 2 1 3 1 1 2 0 1 1 0 0 0 2 2 3 2 1 2 0 2 3 3 3 1 3 1 2 2 1 1 3 8 1 3 2 1 3 2 5 3 0 2 1 2 0 5 1 2 1 6 1 2 1 2 1 3 0 0 2 3 3 0 4 2 2 0 1 4 3 2 4 0 4 1 4 2 0 0 1 6 3 2 3 1 3 4 1 1 2 3 1 0 0 2 1 1 2 4 2 0 1 0 3 3 1 1 4 2 2 2 3 1 0 0 3 1 3 1 1 1 1 0 3 3 3 0 3 0 1 1 2 4 0 4 2 1 0 1 0 4 2 0 0 2 1 0 1 2 1 1 2 0 1 3 1 1 2 2 1 3 1 1 2 0 2 2 0 3 2 0 1 0 2 1 1 1 3 1 0 3 4 1 3 1 1 0 1 0 0 0 0 0 2 4 1 1 1 1 2 0 1 0 0 2 1 0 1 2 0 2 0 1 1 0 1 0 3 1 1 0 0 2 0 1 0 0 0 0 0 3 1 2 0 2 1 1 0 3 0 0 0 1 0 1 1 0 +0 0 0 0 2 1 0 0 1 3 2 4 1 2 2 0 1 2 2 1 1 1 2 0 0 0 1 1 0 0 0 1 1 0 1 0 2 1 2 3 2 4 0 1 0 1 2 2 1 2 3 2 2 3 1 1 0 1 0 3 1 2 0 0 1 1 0 3 0 1 1 4 4 1 2 0 0 2 0 0 1 1 2 2 0 1 3 1 1 2 3 2 0 1 0 0 2 2 4 0 4 3 2 3 2 2 2 2 2 3 2 3 1 1 1 1 1 3 2 0 1 6 1 4 1 1 2 3 6 0 1 3 2 1 2 0 2 2 3 2 0 1 0 4 1 0 3 1 1 1 2 5 0 1 2 1 1 0 0 2 0 0 3 4 1 2 0 3 1 1 0 2 1 1 4 0 4 3 1 4 0 3 1 0 0 2 1 3 1 3 0 1 1 0 2 1 2 1 0 1 4 2 1 3 4 0 0 0 0 0 0 1 1 0 1 2 1 2 1 2 1 2 3 1 1 1 3 3 2 1 0 3 2 0 1 2 0 2 0 1 0 1 3 1 2 2 5 1 3 4 0 0 0 2 0 2 0 0 1 1 0 1 1 3 0 1 1 0 1 2 2 1 2 1 0 0 1 2 2 2 0 1 1 1 3 0 1 2 3 1 0 1 0 2 2 2 1 1 0 0 +3 0 0 4 1 0 1 2 3 1 2 1 0 1 0 0 1 1 0 2 0 1 1 1 0 1 1 1 1 1 0 2 1 0 1 0 0 1 0 0 1 0 1 0 0 1 2 0 2 0 1 2 0 2 1 2 1 1 2 1 3 0 1 2 1 0 1 1 2 1 1 0 2 1 1 1 0 3 0 0 1 0 1 4 1 1 1 1 3 0 2 1 1 3 0 1 2 4 1 0 1 2 1 3 1 2 2 2 1 0 1 0 0 1 2 3 2 1 2 3 2 0 4 4 4 0 3 1 4 1 1 2 2 4 4 2 2 4 1 3 0 1 1 1 3 2 1 1 0 0 3 1 1 3 1 1 2 2 1 1 2 1 0 2 2 2 1 2 2 2 2 0 1 1 2 2 1 1 0 2 2 0 0 0 3 1 3 1 1 1 3 0 1 0 1 3 1 2 3 0 1 1 1 0 0 1 0 4 0 1 4 2 2 0 1 2 1 3 1 1 1 0 3 4 1 2 2 4 1 2 1 1 1 3 1 1 0 3 4 1 0 0 1 1 2 0 1 0 0 4 0 2 1 0 2 0 1 2 4 0 2 2 0 1 1 0 2 1 3 0 1 1 0 0 0 3 1 3 2 2 2 1 1 0 0 3 1 0 3 1 3 0 0 0 0 1 0 1 3 0 +0 0 1 3 1 0 3 0 1 1 0 0 2 1 0 3 1 0 0 1 1 1 1 1 1 0 2 0 0 0 1 3 0 0 0 1 0 2 1 2 1 0 3 0 0 2 1 1 2 1 0 2 3 1 2 0 0 2 2 4 1 2 1 1 1 0 3 2 1 3 1 2 2 3 1 0 0 0 2 1 1 3 1 1 1 0 1 1 0 1 4 1 0 0 1 3 2 1 1 1 2 1 1 0 1 2 1 3 1 0 3 2 1 3 0 0 1 1 2 3 3 3 0 1 0 1 2 1 0 1 3 2 3 2 0 1 1 4 0 2 4 3 0 4 3 0 3 0 1 2 0 0 3 1 1 0 1 1 2 1 1 1 1 4 2 0 1 3 3 3 0 2 5 1 1 1 3 0 1 1 1 0 2 3 0 1 4 2 3 0 0 2 2 1 1 2 1 2 0 5 2 0 0 0 4 1 3 2 1 3 1 2 0 1 6 0 1 1 3 1 1 1 1 1 3 0 2 1 0 2 0 3 0 2 2 1 1 1 1 2 1 0 0 1 3 3 1 0 1 0 0 0 5 2 0 0 0 1 0 0 1 0 0 2 1 0 0 0 3 0 1 0 0 1 1 0 1 3 0 2 1 1 2 1 0 1 3 0 1 1 2 2 0 2 2 2 1 0 2 1 +3 0 0 0 2 0 1 3 4 0 0 0 1 4 0 0 1 3 1 0 1 0 2 1 1 1 1 2 1 3 2 1 1 1 2 3 2 1 0 2 1 2 0 1 1 2 1 2 1 1 3 1 2 1 0 2 1 2 2 2 0 4 1 1 1 2 1 1 1 1 1 2 0 0 3 1 2 1 0 0 2 1 1 0 1 2 1 1 1 1 1 2 1 1 0 2 1 1 2 1 1 2 1 2 4 1 5 1 2 4 2 3 0 2 0 1 1 1 0 1 0 2 2 1 0 0 1 3 0 2 2 0 3 1 3 2 1 2 1 2 2 0 0 2 2 3 3 5 0 1 1 0 1 1 3 2 1 3 1 2 2 2 1 1 2 4 1 1 2 1 0 2 4 4 1 2 2 1 2 2 1 0 3 2 0 1 1 0 1 1 4 3 0 4 0 0 1 2 1 0 0 0 0 0 1 0 5 2 2 2 2 1 0 1 0 0 3 1 2 2 0 2 2 1 2 2 3 2 0 4 2 3 0 3 4 2 0 1 0 0 1 0 0 0 0 0 1 2 0 2 0 0 0 0 1 3 0 1 0 1 0 1 1 3 1 1 0 1 1 2 3 1 1 2 0 0 0 1 1 2 3 1 1 2 2 1 1 2 0 4 0 1 1 1 1 1 1 1 0 0 +0 1 2 2 2 0 0 1 1 1 0 1 1 1 3 1 1 1 1 1 3 0 3 2 3 1 1 2 0 1 0 6 1 0 1 0 1 1 1 1 0 2 3 2 1 1 1 2 5 1 0 2 0 2 2 2 0 1 1 1 1 1 2 3 2 1 0 2 0 2 2 3 2 0 1 0 1 1 1 2 0 3 2 1 1 1 1 3 4 3 2 1 4 2 2 1 0 0 0 3 3 2 2 3 3 2 0 4 1 3 1 0 2 1 5 3 0 0 0 1 0 1 1 1 1 2 4 4 4 1 1 1 1 2 2 1 0 2 2 1 1 1 1 1 1 1 1 0 1 0 1 4 1 0 1 1 5 0 3 0 1 2 1 1 1 1 3 1 0 2 4 1 0 2 2 0 0 1 0 3 2 4 1 0 5 5 1 3 1 3 1 1 0 2 3 0 0 1 1 3 1 2 0 4 2 2 1 0 2 3 1 1 0 1 2 1 0 1 1 2 1 0 1 2 1 1 0 0 0 2 0 0 0 1 1 0 2 1 2 0 0 3 0 1 2 1 1 1 0 0 1 1 0 0 1 0 2 1 2 1 0 0 2 2 0 0 0 3 1 0 0 0 0 0 0 4 2 0 4 0 2 0 0 0 0 0 0 2 2 2 0 3 1 1 2 1 1 1 2 0 +0 1 0 1 1 0 2 1 0 1 0 0 1 0 0 2 1 1 0 1 2 3 2 0 1 0 1 3 2 0 1 0 1 1 1 0 2 0 1 1 0 1 1 0 0 0 1 1 0 3 2 2 1 4 1 0 0 3 2 3 2 2 4 1 0 3 0 0 1 0 1 2 0 2 4 2 4 2 1 2 1 2 1 3 3 1 5 0 2 2 1 0 1 2 1 1 3 3 0 1 0 2 0 1 2 3 4 4 3 2 2 0 3 1 3 1 1 1 1 3 3 3 1 2 2 3 1 5 2 2 1 0 0 3 3 3 0 3 1 0 1 4 0 1 1 1 1 1 2 2 5 2 1 5 0 3 0 0 1 4 3 0 2 0 0 3 3 1 1 2 3 2 2 1 2 0 2 3 1 2 3 3 1 6 3 4 2 3 1 0 1 2 0 1 3 2 2 0 0 0 1 0 1 2 2 2 2 1 7 3 5 0 1 0 0 1 2 1 1 0 0 1 1 4 1 1 3 1 0 0 0 3 1 1 2 0 1 2 2 0 3 2 1 1 1 0 0 2 2 1 1 1 1 0 0 2 2 3 1 4 2 2 0 0 2 1 2 1 0 2 0 2 1 1 0 0 1 1 2 2 1 1 0 4 3 2 0 2 0 2 3 3 2 0 2 0 1 0 0 0 +0 0 0 1 3 0 1 2 3 0 0 1 2 1 1 1 1 1 0 1 1 0 2 2 2 0 1 1 3 0 0 1 1 5 2 0 1 0 2 1 1 2 0 1 2 1 1 3 2 1 1 0 2 3 0 1 3 1 3 0 1 0 0 4 0 4 5 2 2 0 0 2 1 2 2 1 3 1 2 2 2 1 2 0 0 1 1 1 2 1 0 2 3 2 0 1 2 4 2 1 3 1 2 0 1 1 2 0 2 1 2 3 3 1 2 3 2 1 0 1 2 1 1 0 1 3 3 0 0 1 4 1 1 2 1 3 3 1 1 1 2 2 0 1 2 1 2 0 2 3 3 1 3 3 2 2 1 2 1 2 2 1 2 2 1 4 1 2 1 4 3 1 2 3 0 2 1 0 2 2 4 1 1 1 1 3 2 2 2 1 3 4 0 1 0 1 0 2 0 2 2 1 2 2 3 2 1 0 2 2 0 0 3 0 1 1 2 0 1 2 0 2 3 0 2 2 0 0 0 0 0 0 2 4 0 1 0 1 3 1 2 0 1 1 2 2 1 2 1 3 1 0 1 0 1 2 1 2 3 0 0 0 0 5 1 1 0 4 1 0 0 1 1 2 1 1 0 1 0 0 1 0 1 0 1 1 0 0 0 2 0 1 2 1 0 0 0 1 0 1 +0 2 2 0 1 0 0 0 1 0 4 2 1 4 2 0 1 2 1 1 1 1 0 2 2 2 0 0 3 0 3 0 2 1 1 1 2 0 0 0 1 4 2 0 1 1 1 3 0 0 1 0 1 1 2 0 2 1 2 1 1 2 1 1 1 0 1 0 0 0 1 2 1 0 3 2 2 0 0 4 1 0 2 1 2 2 0 1 1 2 2 2 1 2 1 1 3 4 3 0 0 4 2 1 3 1 0 0 4 2 2 2 0 1 2 1 1 2 2 1 0 3 3 1 2 0 1 2 1 0 3 1 2 2 1 2 4 0 2 1 0 0 2 1 3 0 3 3 1 3 0 2 1 2 1 1 1 0 0 2 2 1 2 2 1 2 0 1 0 1 6 2 0 0 5 3 4 2 3 0 1 4 1 0 1 2 2 3 4 2 0 4 1 3 3 2 3 0 1 1 0 3 1 4 0 1 0 2 1 3 1 1 1 1 0 1 2 1 3 2 5 0 5 3 0 2 1 1 4 2 1 1 0 3 2 2 2 0 1 0 1 1 2 1 0 1 1 1 0 0 1 1 2 1 2 0 3 3 1 1 3 1 3 2 0 1 0 0 0 3 3 1 0 2 1 0 2 0 1 0 2 3 1 0 1 1 0 4 1 3 0 1 1 0 0 1 3 1 0 1 +0 1 1 0 1 1 0 2 1 1 1 1 0 2 0 2 1 1 1 2 1 0 0 1 0 1 1 2 1 2 1 0 0 0 3 1 2 1 1 1 3 0 2 4 1 2 3 0 2 0 0 1 0 0 0 2 1 1 3 0 0 5 1 0 3 5 0 0 1 1 3 2 1 2 2 1 0 1 2 2 2 2 1 4 1 2 3 3 4 2 0 2 1 1 0 1 3 0 0 2 2 0 0 2 2 0 1 1 2 2 2 2 3 2 1 2 1 1 2 1 1 1 3 3 0 0 2 2 1 2 3 1 2 0 2 0 3 3 1 0 1 0 3 0 1 0 5 1 2 1 2 3 1 1 1 2 2 2 3 2 1 0 4 1 4 2 1 0 0 0 2 2 0 0 0 1 2 0 2 3 0 0 0 3 1 1 1 2 2 2 1 0 0 1 4 2 3 1 0 1 4 4 2 2 4 2 2 2 1 1 0 0 2 2 0 0 3 1 2 3 1 3 3 2 0 4 1 1 0 1 1 1 1 0 3 1 0 1 5 2 2 2 1 2 1 0 3 3 1 2 1 1 6 1 1 0 0 0 0 1 2 2 0 0 6 1 1 0 1 1 1 1 0 0 3 3 1 0 1 1 2 0 2 0 1 1 0 2 1 1 0 2 3 1 0 0 1 1 0 2 +0 3 0 2 5 1 0 0 0 1 2 1 0 3 2 1 0 1 1 2 5 1 0 1 4 0 0 2 0 0 0 0 6 2 1 1 2 2 2 0 0 0 0 0 0 0 2 1 0 0 0 2 1 2 4 3 3 0 0 2 0 0 1 5 2 1 2 1 2 2 3 3 1 4 4 0 0 1 1 5 1 3 0 2 4 2 1 2 0 0 1 2 2 0 2 0 1 0 0 3 1 0 5 2 1 2 0 1 2 1 3 2 2 1 2 3 1 1 2 2 1 3 2 0 2 1 1 3 0 2 3 2 0 2 1 0 1 1 2 0 2 0 3 1 1 2 1 2 1 5 3 1 1 1 3 1 1 1 1 0 1 5 3 1 2 3 0 1 0 1 2 3 3 2 3 1 1 4 3 1 3 1 0 2 1 1 1 1 2 4 4 2 0 2 1 1 1 1 1 2 0 2 3 2 1 1 1 3 0 1 2 0 3 2 1 0 3 1 1 0 2 0 2 1 1 1 1 1 1 2 0 2 3 1 0 3 4 1 0 1 0 3 1 0 1 0 0 4 1 3 2 1 0 0 2 2 2 0 0 0 0 0 3 1 1 2 1 0 0 4 0 0 1 2 1 2 0 2 1 0 0 0 1 1 3 2 2 1 2 0 1 2 1 1 3 0 0 2 0 0 +1 1 2 0 1 0 1 0 1 0 3 0 1 3 1 0 0 0 0 1 1 1 3 2 3 1 2 1 2 0 2 0 1 2 1 1 0 2 1 2 2 2 2 0 1 1 0 3 0 3 2 0 1 2 1 5 1 1 0 0 2 1 2 2 1 3 0 1 0 0 0 1 0 1 2 2 0 2 2 4 1 1 0 2 3 2 0 2 0 2 1 0 0 2 2 1 4 1 0 3 1 0 1 2 2 2 1 0 3 1 3 0 2 2 1 1 1 2 1 1 0 1 1 2 3 3 2 3 4 1 1 1 3 2 2 2 1 0 2 1 0 1 5 3 3 1 1 1 3 0 4 1 2 3 4 1 3 1 2 1 1 2 0 1 3 4 1 0 3 1 5 1 0 3 2 0 1 2 3 0 3 0 1 2 1 1 0 1 0 1 1 1 4 1 2 5 1 1 2 1 3 1 4 1 0 2 2 0 0 3 0 2 2 2 3 0 1 2 2 2 0 1 1 3 1 0 3 2 1 0 1 1 4 2 1 1 1 1 2 1 2 1 1 1 1 0 0 1 1 2 1 0 1 0 0 3 3 1 3 1 2 2 2 1 2 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 2 0 3 2 2 1 0 0 2 2 2 0 1 1 0 1 0 1 0 0 +1 1 0 1 2 0 1 2 1 4 1 0 3 2 1 0 0 1 0 2 0 1 1 0 0 1 1 1 0 0 3 1 1 0 0 0 1 3 1 1 2 4 2 0 3 1 0 0 3 2 0 0 0 0 1 1 0 2 0 1 0 1 0 0 2 2 5 2 0 0 2 1 2 1 3 1 0 1 1 1 0 1 1 0 2 0 0 0 0 3 1 5 0 2 0 1 0 4 2 0 1 0 2 2 2 1 0 2 0 3 1 2 2 2 0 1 2 3 4 2 1 2 2 1 0 1 1 2 1 2 2 1 2 1 0 0 1 1 1 1 2 1 2 2 3 3 2 0 3 3 2 1 2 1 1 2 0 2 1 2 2 3 3 2 0 2 1 2 1 1 5 1 1 2 3 1 2 0 1 2 1 1 2 0 0 2 1 1 0 1 3 1 1 1 1 1 0 2 1 2 1 1 2 1 2 3 2 0 3 1 3 1 1 0 2 5 0 2 0 2 1 2 0 1 0 2 0 1 1 2 3 2 1 2 0 5 2 0 1 2 2 2 2 0 1 2 1 3 0 1 0 3 2 1 1 1 0 0 0 3 0 0 1 2 0 1 3 2 0 2 2 4 0 1 0 1 0 2 0 2 0 0 2 3 1 0 1 0 1 0 0 2 1 1 0 0 0 0 1 2 +0 0 1 2 2 0 1 0 0 0 0 0 2 2 0 0 3 3 0 1 1 1 2 2 0 2 0 2 0 0 2 0 0 0 1 3 2 1 3 2 3 2 4 0 2 0 0 5 1 1 2 0 1 4 0 2 4 1 1 1 3 2 2 3 0 4 0 0 2 2 3 3 1 2 0 1 0 1 1 1 1 1 1 2 1 0 4 1 0 2 1 2 2 3 2 1 0 0 2 4 3 1 3 1 1 2 2 1 1 1 2 4 0 2 3 0 2 0 1 1 0 2 1 0 2 2 2 1 2 1 4 2 3 1 1 2 3 1 1 0 0 0 1 2 2 1 0 2 3 3 4 3 1 0 2 3 3 2 3 2 3 2 1 3 2 2 2 0 1 0 1 0 0 2 1 2 1 2 1 1 0 1 6 0 1 1 3 4 1 4 1 1 1 1 1 2 1 1 2 2 2 2 0 1 0 0 2 0 3 3 1 0 2 2 3 0 0 0 1 2 1 0 1 1 1 0 2 2 2 1 1 1 0 1 2 2 4 1 4 0 2 0 0 0 1 2 1 0 2 1 1 3 0 0 2 0 2 0 2 0 2 0 1 1 1 1 1 0 0 1 0 1 1 2 0 0 2 0 0 2 0 2 1 0 2 4 0 2 0 1 0 1 1 1 1 2 0 2 1 2 +1 0 1 1 0 0 0 1 2 1 1 0 0 1 0 1 0 0 1 0 3 1 1 1 1 1 2 2 1 3 1 1 0 0 1 3 2 0 1 1 3 3 0 1 1 1 0 2 2 0 1 1 0 1 1 0 0 1 1 2 2 1 3 2 1 2 2 1 3 0 1 1 3 1 3 3 3 3 2 2 2 3 2 3 1 2 2 3 1 0 2 1 1 2 0 4 3 3 3 0 2 2 3 3 1 4 0 0 0 2 2 2 1 1 1 3 3 1 2 1 3 3 3 1 1 1 1 3 1 0 1 2 1 1 0 5 2 0 0 2 1 1 3 2 2 3 1 3 1 2 2 2 2 2 1 3 0 3 2 2 0 1 1 0 2 0 1 2 2 1 1 3 1 2 3 2 1 0 3 0 1 2 1 3 4 0 0 1 3 0 4 2 1 3 4 0 2 0 2 1 4 2 1 1 2 2 0 3 1 1 2 0 2 2 3 1 0 1 1 1 0 2 3 1 3 3 2 0 2 0 2 0 1 2 0 0 1 1 1 1 1 0 2 4 2 0 2 6 1 3 2 1 1 3 0 2 3 4 2 2 1 1 1 0 1 2 1 0 0 4 2 1 4 2 2 1 1 4 1 2 2 1 0 1 0 1 1 3 0 3 1 0 1 0 0 2 0 1 1 0 +1 3 1 2 0 0 1 0 0 3 1 1 2 0 1 1 1 1 1 0 0 1 1 1 0 0 2 1 2 1 0 2 2 2 0 0 0 0 1 0 2 2 0 0 0 1 2 0 2 1 1 0 0 1 3 3 0 4 1 2 0 0 1 2 1 0 0 1 1 1 3 0 1 1 0 2 0 3 2 1 0 1 4 1 3 0 1 0 2 1 1 1 1 0 0 3 1 0 5 1 4 0 3 1 3 0 1 1 3 1 4 1 1 2 2 3 2 3 2 2 2 0 1 1 3 2 1 3 3 2 0 0 3 3 2 3 0 0 0 3 2 2 1 4 2 2 3 3 1 3 3 2 1 3 2 1 1 0 2 1 0 3 1 0 1 3 1 3 3 0 1 1 1 1 1 0 1 1 2 1 0 2 2 3 1 0 0 2 1 2 4 1 0 0 1 0 2 2 2 2 3 0 4 3 0 0 2 2 0 1 0 4 6 1 2 0 2 3 3 1 0 2 1 0 1 2 3 0 0 3 0 2 3 2 1 2 2 0 1 1 0 0 0 1 0 0 1 2 2 0 1 0 3 1 0 3 3 4 3 1 3 0 1 0 1 1 2 1 1 0 0 1 1 0 0 0 1 3 3 1 2 0 0 0 0 1 1 1 1 2 3 1 0 1 1 0 2 1 1 2 +1 1 2 0 0 4 2 1 1 0 0 2 3 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 2 0 2 2 1 1 2 2 1 1 2 0 1 2 0 2 2 2 1 2 1 0 4 1 1 2 2 0 0 2 2 2 2 0 3 1 0 0 2 0 2 1 1 0 3 1 4 4 0 0 1 2 1 1 1 4 0 0 1 0 1 0 2 0 2 0 1 3 2 2 1 1 2 3 1 1 1 0 0 1 0 0 1 0 0 5 0 1 1 3 0 1 2 1 2 4 3 0 2 2 2 1 2 3 3 2 2 3 0 2 2 3 2 3 1 0 2 3 7 4 2 2 1 3 1 2 2 1 1 2 5 0 3 2 1 0 0 2 0 1 2 0 2 3 1 4 1 0 1 0 2 1 1 2 5 0 2 0 2 5 3 1 4 3 4 2 0 3 1 2 3 2 3 4 2 2 2 0 2 4 2 2 2 1 1 1 0 0 0 2 1 1 3 1 5 0 2 0 1 2 1 0 1 1 0 0 1 3 1 3 0 4 2 0 1 0 2 0 0 1 2 2 0 1 1 1 1 0 2 0 2 4 1 2 1 1 0 0 4 2 3 0 0 1 0 5 0 0 0 0 1 0 1 3 2 1 1 0 0 1 3 1 1 1 0 4 1 0 3 0 1 0 +1 1 1 3 1 2 1 1 1 2 0 2 0 1 0 0 0 3 1 0 0 3 2 1 2 1 2 2 2 1 0 1 1 2 3 0 0 0 2 0 0 0 0 0 0 3 0 1 0 1 2 1 1 2 0 0 1 0 1 2 2 0 0 0 1 1 2 2 1 1 1 0 1 2 0 0 2 2 2 3 2 1 2 2 0 2 1 0 1 1 1 2 0 1 1 3 0 0 1 2 6 5 0 4 3 1 2 0 0 3 4 0 1 1 2 1 2 0 2 1 3 0 1 0 1 2 1 0 1 1 3 1 0 1 1 2 3 2 4 0 4 0 3 1 4 1 4 0 2 4 0 3 0 2 3 2 1 2 1 1 3 0 1 1 0 0 1 2 3 6 1 0 1 3 1 0 0 1 1 3 1 0 1 1 3 1 4 1 3 2 3 5 1 2 2 1 0 1 1 0 4 2 3 4 0 2 1 0 1 2 1 3 2 3 1 0 1 1 1 2 2 1 1 1 1 2 0 2 1 0 1 1 0 2 0 3 3 2 2 0 1 2 2 3 1 1 0 2 1 2 1 0 1 0 1 1 3 0 2 2 4 1 2 2 0 1 0 0 1 0 3 0 0 3 2 2 2 1 1 1 1 1 1 0 0 1 1 0 1 1 2 0 1 4 0 0 1 1 1 1 +1 1 1 0 0 2 1 1 1 0 0 2 1 3 2 0 2 1 1 0 2 0 2 0 1 1 0 1 0 2 0 1 0 2 1 2 3 1 1 1 1 2 0 1 1 1 1 2 0 0 0 1 2 0 2 1 0 3 0 1 3 1 0 2 0 5 2 1 1 0 4 2 1 1 0 0 1 0 1 1 1 1 1 1 0 1 4 2 2 2 0 3 1 1 2 3 2 2 0 4 0 1 3 1 1 1 1 4 2 4 3 1 1 1 0 1 4 2 2 4 1 1 1 1 0 1 0 0 0 2 2 5 1 1 0 1 1 3 2 4 3 2 1 2 2 0 2 2 1 1 2 1 1 4 1 2 1 2 1 1 1 2 1 0 3 4 4 2 1 3 0 1 0 1 1 2 3 2 2 1 2 3 1 3 3 3 1 2 1 1 0 1 1 1 1 1 1 0 1 4 2 1 2 3 1 0 0 2 3 2 3 1 2 3 0 2 3 1 0 1 1 2 2 2 0 2 2 0 3 2 4 0 1 2 2 2 1 1 1 1 2 3 1 1 4 1 3 2 0 1 0 1 0 0 1 0 2 1 0 1 0 1 0 2 2 0 2 0 3 0 1 2 0 0 2 0 1 2 0 2 0 1 4 2 1 0 0 1 2 3 1 0 1 0 0 1 3 2 0 0 +3 3 1 0 2 0 0 2 0 0 1 1 0 0 2 0 1 2 0 1 0 0 5 0 2 1 2 4 4 0 1 1 0 0 1 2 0 0 1 1 1 2 1 0 0 1 1 1 0 0 0 1 1 2 1 2 1 1 2 1 1 3 1 0 0 0 1 2 3 1 1 0 3 2 2 2 4 0 0 1 2 4 4 1 0 0 1 3 0 3 1 1 1 1 3 1 1 3 1 1 0 1 1 0 2 1 2 1 0 0 1 1 4 2 4 2 2 0 1 1 0 0 1 2 1 1 3 3 2 0 1 0 3 1 3 1 1 4 2 0 1 2 2 3 0 3 1 0 0 2 3 2 4 3 1 4 1 1 3 0 1 2 3 3 0 2 0 1 1 1 1 0 3 3 0 1 2 1 2 1 2 1 1 0 0 2 1 1 3 1 2 1 1 0 1 1 3 2 0 1 2 3 2 0 2 1 2 2 0 2 2 1 1 1 0 2 2 1 2 1 2 2 2 3 1 1 3 0 1 0 2 1 0 0 2 0 0 0 1 1 1 2 1 1 1 1 3 0 1 1 2 0 1 1 3 4 1 1 0 0 0 2 0 1 3 2 0 2 2 1 2 1 2 0 2 1 0 0 0 0 0 0 1 1 0 1 2 0 1 1 2 3 1 0 1 2 0 2 1 3 +1 1 0 2 1 0 1 0 2 1 0 2 3 1 0 0 2 1 1 2 0 2 1 0 2 0 3 1 2 0 1 3 3 0 1 1 0 3 1 0 0 0 3 1 0 1 0 1 2 1 1 0 0 0 1 1 2 2 3 0 2 0 0 0 2 0 1 1 1 1 1 0 2 0 1 1 3 1 1 2 0 1 1 0 1 5 0 0 0 1 1 1 4 0 4 0 2 0 3 2 2 2 0 0 1 0 3 1 1 0 0 4 1 2 3 3 1 1 2 1 2 3 2 2 3 1 2 1 1 0 1 0 0 3 4 0 6 1 1 0 4 0 1 3 1 1 0 3 2 3 3 1 2 4 2 2 1 1 3 0 2 0 1 3 3 1 1 1 0 3 2 3 0 0 2 0 4 2 1 1 2 1 0 2 1 2 1 0 1 2 2 0 2 0 1 0 1 2 1 2 4 0 4 2 1 1 1 0 1 2 3 1 1 2 1 3 3 0 2 2 2 0 2 3 1 1 0 1 0 1 1 4 2 2 0 0 3 2 1 2 2 0 1 0 0 1 3 1 2 0 2 4 1 2 1 1 0 2 0 1 2 0 2 1 1 1 1 1 4 1 0 0 1 1 1 3 0 2 1 0 1 1 0 0 1 1 2 0 0 2 0 1 4 2 0 0 2 0 1 2 +0 0 1 2 1 0 1 2 1 0 1 1 1 2 1 3 2 1 1 2 2 2 0 1 1 1 3 2 0 3 1 0 0 1 1 1 2 1 1 1 0 0 1 1 0 0 1 1 2 2 5 0 1 5 1 2 0 1 3 1 1 2 2 0 2 2 1 1 1 0 0 4 1 1 0 0 1 3 0 3 4 4 2 0 4 1 3 1 3 2 1 1 3 1 0 0 1 3 1 2 1 1 3 2 2 0 2 4 1 3 2 0 0 4 1 0 4 1 2 0 2 0 3 2 1 2 0 2 0 2 1 1 2 1 0 1 0 2 0 2 0 1 2 3 5 0 3 3 2 2 3 1 1 1 4 1 3 1 3 2 1 2 1 0 1 2 0 2 1 1 2 1 0 3 1 1 4 3 0 2 4 3 3 1 1 3 0 3 1 0 1 2 0 0 2 0 4 1 1 2 4 1 2 1 2 0 1 1 1 3 1 1 3 3 3 4 3 0 0 1 0 0 0 0 0 1 2 1 1 2 1 1 1 3 1 0 1 0 2 1 3 3 0 1 1 0 1 3 0 0 3 0 1 3 3 1 1 0 0 1 1 0 1 0 0 3 1 1 0 0 1 1 4 2 3 1 2 0 0 0 0 1 0 2 0 1 0 1 0 0 2 1 3 1 1 1 0 4 1 3 +0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 1 1 2 3 2 2 0 1 1 3 0 1 3 0 0 1 2 1 0 1 0 0 2 1 0 2 1 1 0 1 3 3 2 2 1 0 0 0 1 0 1 1 0 2 2 2 2 1 2 1 2 0 1 0 0 3 0 2 0 1 1 1 1 3 1 1 0 0 1 2 1 2 3 2 0 1 4 0 2 3 0 2 1 4 5 2 6 2 3 0 1 1 0 0 3 3 4 0 3 3 1 2 2 1 0 2 4 1 1 3 3 6 2 5 0 4 2 2 1 2 1 0 1 0 0 2 4 2 1 1 2 2 1 4 2 0 3 3 1 2 1 3 2 1 0 2 1 3 2 2 3 0 1 1 1 3 0 1 2 0 1 3 2 1 0 0 1 5 2 3 2 2 0 1 3 0 2 3 4 0 1 0 1 1 0 2 4 1 2 2 2 1 3 1 2 1 3 0 1 0 1 3 0 1 1 1 3 1 0 1 0 1 3 1 2 0 2 2 1 2 0 2 2 1 2 1 1 0 0 2 1 1 4 0 0 1 1 1 0 0 0 0 3 0 2 3 0 1 0 3 5 1 0 3 1 2 0 2 1 1 0 4 0 0 1 1 0 2 1 1 1 1 0 1 1 2 1 1 0 1 2 2 0 1 0 +3 0 2 2 1 1 0 0 0 0 0 2 1 0 4 0 0 1 3 0 1 1 0 0 0 2 3 3 0 2 2 1 1 1 0 1 0 2 3 0 2 2 1 1 1 2 1 2 1 1 1 1 1 0 2 0 3 1 2 0 0 2 2 1 1 2 2 1 0 1 0 0 1 0 2 3 2 3 4 3 0 3 3 2 1 5 0 2 0 1 0 0 0 0 1 1 5 2 1 0 1 1 3 3 3 0 3 2 2 1 1 2 0 1 3 1 2 3 1 0 2 1 1 3 0 1 0 4 4 1 2 1 1 1 0 3 0 0 2 4 4 2 3 0 0 3 1 0 2 4 0 2 1 1 2 0 2 2 2 2 5 1 0 0 1 2 2 2 4 4 1 0 3 0 1 1 2 1 2 2 2 0 4 0 4 0 1 3 0 1 2 1 2 3 2 0 1 1 1 3 2 0 1 0 4 0 3 1 1 0 0 0 4 0 1 2 3 1 2 1 2 3 0 1 0 2 2 2 1 0 3 0 1 3 2 1 1 2 1 1 1 0 4 0 1 4 0 4 3 0 2 1 2 2 3 3 0 2 2 2 2 1 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 1 1 1 0 4 2 2 0 1 0 2 0 4 1 1 1 0 2 1 1 2 0 0 +0 1 1 3 0 0 0 0 1 0 2 1 0 0 2 1 1 2 4 2 0 2 2 0 0 0 1 1 3 1 2 1 1 1 0 0 1 1 1 0 1 0 2 3 1 3 1 1 1 0 0 0 1 0 0 0 0 3 1 1 0 2 1 2 0 1 0 2 1 1 0 1 0 3 0 0 2 0 0 1 1 1 2 1 2 1 1 0 1 0 2 1 3 2 1 0 1 1 2 0 1 2 0 1 1 3 1 1 0 1 3 0 1 0 0 4 2 3 1 3 2 0 1 2 1 6 1 0 3 2 0 2 4 3 1 1 2 2 4 3 0 2 2 3 2 0 0 2 1 1 3 1 1 2 1 1 1 4 4 1 2 1 1 2 2 1 3 2 1 0 0 2 4 1 0 2 1 1 4 3 0 1 2 3 1 2 1 2 1 1 1 2 2 2 2 1 2 1 1 0 1 2 0 3 2 1 3 0 2 2 2 3 1 1 1 2 1 1 2 2 2 2 1 2 2 3 2 1 2 3 3 2 1 1 1 2 3 0 2 6 1 1 2 1 0 3 0 1 0 1 0 1 0 1 1 0 1 0 2 0 0 1 0 1 2 1 1 0 0 2 2 1 1 0 2 1 0 1 0 1 1 3 3 0 2 0 2 0 0 1 0 0 1 1 2 0 0 2 2 1 +0 2 1 1 2 0 0 0 1 0 1 1 1 0 2 0 0 2 1 0 0 1 1 1 0 0 0 1 1 2 3 0 2 1 1 1 4 2 0 1 0 1 0 1 1 1 2 2 1 1 0 0 2 1 1 3 1 1 2 2 2 1 0 4 1 2 0 2 0 4 1 4 2 1 2 0 1 2 1 1 1 1 2 6 0 2 2 1 0 0 3 4 4 1 0 1 5 2 0 2 0 3 4 0 2 1 1 2 2 4 3 3 1 3 0 0 5 1 3 1 1 2 1 4 2 3 2 1 4 2 1 2 3 4 2 1 0 3 1 1 2 2 0 0 0 3 0 1 5 1 3 2 0 2 0 1 2 0 2 3 3 2 0 2 3 3 2 0 1 2 1 4 1 1 2 3 3 1 1 2 4 1 0 1 0 1 1 0 0 1 2 1 0 3 0 1 1 2 1 1 0 2 1 0 4 3 0 4 0 1 3 3 1 4 1 0 2 2 2 1 0 1 0 0 1 3 2 1 1 1 2 0 1 2 1 1 0 0 1 0 1 2 1 2 3 1 2 1 0 1 0 1 3 1 0 1 0 4 0 2 0 0 1 2 0 0 1 1 0 3 0 0 1 2 0 1 1 0 1 1 0 1 0 1 0 1 1 1 3 2 3 1 0 1 0 0 2 0 0 1 +1 0 1 1 0 3 0 0 1 2 1 1 0 0 0 1 0 0 3 1 3 0 2 0 0 0 0 1 0 2 3 1 1 0 1 3 1 1 2 1 1 3 0 2 1 0 0 2 0 0 0 1 2 3 1 4 0 3 0 0 1 1 2 0 1 1 3 0 2 0 1 3 1 0 0 2 2 2 0 0 2 3 1 4 2 1 1 2 0 2 1 2 2 1 2 1 1 0 2 2 2 3 2 1 1 2 2 2 0 2 4 1 1 1 0 3 3 0 1 1 0 1 1 1 2 1 2 4 2 1 2 2 3 1 0 0 1 2 3 0 2 1 0 2 2 5 2 3 2 0 2 1 3 2 4 1 2 2 2 2 3 1 0 3 4 2 3 1 1 0 3 3 2 3 0 5 3 1 6 2 4 4 4 1 2 3 5 0 3 1 3 1 4 3 0 2 1 0 4 1 2 1 1 0 3 2 1 3 3 1 1 1 2 0 0 2 2 2 1 1 0 1 1 4 3 3 3 0 1 0 1 2 2 0 2 1 2 0 0 3 3 3 1 0 1 0 3 1 2 1 1 1 1 3 3 2 2 0 1 1 1 1 0 0 0 2 3 0 1 1 0 1 0 1 1 0 0 0 2 0 4 1 0 1 1 1 0 3 1 0 2 1 0 0 2 0 2 1 1 0 +0 3 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 3 3 2 2 0 4 2 1 1 1 0 0 1 0 1 0 1 3 3 2 1 3 0 1 0 2 3 1 2 1 1 2 2 1 2 0 2 0 1 1 2 2 0 2 1 1 1 0 1 0 0 2 0 1 0 2 1 2 2 2 2 3 0 1 3 2 2 3 3 3 3 0 1 4 2 0 5 2 2 0 3 5 2 2 0 0 0 1 0 2 3 2 1 0 1 1 3 1 0 3 2 0 2 4 0 4 3 2 1 4 3 2 5 3 1 3 1 5 0 3 3 1 0 2 1 0 0 2 0 0 0 1 2 1 1 1 0 2 0 1 3 0 3 3 5 1 2 1 2 0 1 2 2 2 5 1 1 0 0 1 2 2 1 3 3 2 3 2 2 2 1 3 1 1 2 3 2 1 0 0 1 2 0 3 0 2 1 3 0 1 2 2 2 3 1 1 0 1 1 1 1 0 4 0 4 1 0 0 1 0 0 1 3 0 2 1 0 3 1 7 0 0 0 3 0 1 0 0 0 5 0 0 1 2 0 2 2 4 1 2 1 0 0 3 0 0 3 0 1 0 0 2 2 1 1 0 1 4 0 1 1 0 0 1 0 2 1 0 0 2 0 0 0 0 1 2 2 +1 0 2 1 2 0 0 1 3 2 3 0 4 1 1 2 1 1 1 0 2 0 1 3 0 2 0 1 1 0 1 1 2 1 1 0 0 1 0 1 2 1 1 1 2 1 2 5 3 0 2 0 3 2 2 3 4 2 1 2 2 2 1 2 3 3 1 0 1 1 0 6 1 2 2 3 4 0 2 1 3 1 2 0 1 5 0 0 3 2 1 2 2 1 0 2 0 0 1 0 3 0 3 0 3 1 4 2 0 1 0 2 2 1 1 1 0 3 0 2 1 2 1 0 3 2 1 3 3 1 2 1 2 2 1 0 1 2 3 1 1 1 1 0 1 1 2 2 1 1 3 1 1 0 4 0 1 2 0 6 0 0 0 0 0 2 1 3 0 1 3 4 1 0 4 3 0 4 1 4 1 4 3 2 2 2 2 3 2 1 2 1 2 4 1 0 2 2 3 1 2 1 2 0 1 0 1 2 0 0 0 1 2 1 1 2 1 2 2 1 0 3 1 2 0 1 3 1 1 1 2 1 1 0 1 0 2 1 0 0 1 2 1 1 0 1 2 0 1 1 3 1 2 0 1 2 1 0 0 2 0 1 0 0 0 2 3 1 0 0 2 2 0 2 1 0 0 0 2 1 1 1 2 2 1 2 1 1 1 3 2 1 0 1 1 1 1 1 1 0 +0 1 0 0 1 1 0 1 1 2 0 0 0 2 0 1 2 0 1 0 1 1 2 1 0 0 4 1 3 2 1 2 0 0 1 0 4 1 3 1 1 2 4 2 1 3 1 1 2 0 1 2 3 1 0 4 1 0 1 2 2 2 1 0 2 1 2 0 0 0 3 0 4 2 0 1 0 1 1 1 1 2 2 0 1 2 1 1 1 1 1 0 8 4 1 0 0 0 3 2 1 1 2 4 3 3 3 2 2 3 4 3 0 1 1 3 1 1 2 2 2 1 3 1 3 1 0 2 1 2 2 1 2 1 3 0 4 0 2 0 1 1 2 1 4 2 3 0 0 4 3 0 4 3 1 2 0 0 5 2 2 2 1 3 3 2 3 2 1 1 3 2 1 1 1 1 2 0 0 0 0 2 0 4 1 0 2 1 4 0 1 2 0 2 3 2 0 0 1 3 4 3 1 2 1 3 0 1 2 3 2 1 1 1 0 1 0 3 3 1 1 1 2 0 1 2 3 1 1 0 1 2 4 3 1 1 1 2 0 3 1 2 4 0 1 0 3 2 0 0 1 1 1 3 0 1 1 2 0 2 1 1 1 2 0 0 2 2 0 2 1 1 1 0 0 2 2 1 2 2 0 0 2 3 0 0 1 1 1 4 1 0 4 0 0 1 1 0 2 0 +3 1 2 0 0 1 2 2 2 2 1 0 1 1 0 3 1 2 0 1 2 1 0 2 0 1 1 2 0 1 1 1 1 0 0 4 1 2 1 5 1 2 2 1 1 1 1 2 0 0 3 0 0 0 1 0 1 3 0 1 1 0 1 1 2 2 0 2 4 1 1 2 1 0 0 1 2 3 1 1 2 2 1 2 1 1 2 0 1 1 3 2 2 2 1 1 3 0 2 1 1 0 1 2 0 0 4 1 0 3 0 3 2 2 1 4 2 0 3 0 1 1 0 1 2 2 1 1 1 2 1 0 0 3 0 2 0 1 1 2 1 3 2 3 1 5 4 4 3 0 2 0 1 1 1 1 1 1 3 2 0 1 2 3 1 1 0 1 1 0 1 1 0 1 0 0 1 4 1 2 6 1 0 0 2 6 1 0 1 1 0 3 3 1 2 0 3 1 1 3 3 4 0 1 1 3 1 5 1 3 1 0 0 1 2 0 1 0 1 0 1 2 1 2 1 2 1 0 1 2 0 0 0 1 1 4 0 3 2 0 3 0 2 0 2 1 0 0 1 1 1 1 2 2 2 0 0 0 2 1 1 0 2 1 1 0 0 1 0 3 2 1 1 1 0 1 0 1 1 1 1 1 0 2 1 1 2 1 0 3 0 0 0 1 0 0 1 2 1 0 +2 1 2 1 2 3 3 1 3 0 1 2 1 1 2 2 0 1 0 0 1 0 0 0 3 0 1 3 0 0 4 0 2 0 0 0 1 0 1 1 1 1 4 1 1 2 1 2 1 0 2 0 1 2 0 4 1 1 0 0 1 1 1 0 0 1 1 0 0 2 1 0 1 0 2 2 1 0 2 1 1 2 1 2 0 3 2 0 1 5 1 2 1 2 2 2 2 1 3 2 0 2 0 2 2 4 0 3 0 1 0 1 1 2 3 0 3 2 1 2 0 3 1 2 2 5 1 3 2 2 5 2 4 1 4 1 1 3 0 2 2 1 0 0 0 4 4 0 1 4 0 2 0 3 0 1 4 3 1 0 1 3 0 0 0 4 1 1 1 3 0 1 0 1 0 0 2 0 1 2 0 1 3 3 2 2 2 0 4 1 1 2 3 1 2 4 0 5 0 3 0 0 1 0 2 1 3 3 1 0 3 3 0 2 1 1 0 1 4 1 0 1 0 1 2 3 2 1 0 1 0 1 3 1 2 2 1 1 1 2 1 1 0 3 0 1 0 1 2 0 1 1 4 1 1 1 5 2 0 1 0 0 0 0 3 0 1 2 3 0 0 2 1 0 1 3 1 2 0 0 0 0 0 2 0 1 1 1 1 3 2 2 1 2 2 0 0 0 1 2 +1 0 2 2 0 2 1 2 1 2 0 0 1 0 0 3 3 1 1 0 0 1 1 1 0 0 2 1 0 0 2 0 0 1 0 2 2 1 0 2 1 0 0 0 3 1 0 0 0 4 1 0 0 0 2 1 1 0 2 2 1 0 0 0 0 2 0 1 2 0 2 2 1 2 2 2 0 0 1 2 2 2 2 0 2 1 3 2 0 2 2 0 2 2 3 1 2 1 2 2 2 2 2 1 0 1 3 1 1 3 3 1 3 1 0 0 0 2 3 3 0 1 2 3 4 2 1 3 2 0 2 3 0 3 2 2 1 4 0 6 1 4 1 0 2 1 1 0 1 1 4 4 4 1 1 3 1 3 1 1 2 1 1 2 1 2 2 0 1 0 1 1 1 0 1 0 0 2 3 1 0 2 1 1 1 0 3 0 2 2 2 0 3 5 3 0 4 0 1 1 3 0 2 3 0 2 2 3 2 3 4 0 2 3 0 0 0 0 1 2 0 4 2 2 3 1 1 2 3 0 1 2 2 2 0 4 4 0 1 3 0 1 0 2 0 2 2 2 0 2 0 0 2 3 0 2 3 0 1 2 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 3 2 1 1 2 1 2 2 0 1 1 0 0 1 0 1 1 0 0 +0 1 1 0 1 0 0 0 3 1 2 0 0 1 0 1 2 0 1 0 1 1 0 1 2 0 0 2 0 0 1 3 3 0 2 2 1 0 2 1 1 0 1 1 1 0 1 1 1 1 0 3 2 1 2 3 0 2 3 0 0 1 0 0 2 0 2 1 2 1 1 2 0 2 0 0 0 0 0 6 0 1 2 1 0 2 1 0 1 1 2 1 0 1 3 0 0 1 1 1 5 0 1 1 1 0 0 2 3 1 2 1 2 2 1 1 1 2 2 2 1 4 3 0 3 0 2 1 1 0 2 2 3 1 0 1 1 2 2 3 3 1 4 0 0 2 2 3 0 1 1 1 1 2 1 4 0 1 2 2 0 2 1 2 0 2 0 2 2 5 1 1 2 0 2 1 1 3 2 0 2 3 2 2 0 1 7 1 3 0 1 4 3 2 0 1 1 0 2 1 1 3 0 1 1 2 1 0 3 2 1 3 4 2 1 1 0 0 3 2 1 2 0 0 0 1 1 2 2 3 2 1 0 0 2 1 3 0 0 2 1 1 3 3 2 0 1 1 2 3 2 3 2 2 1 1 2 1 1 3 0 4 2 3 2 2 0 1 0 0 2 1 3 1 0 1 0 2 1 4 0 1 3 2 1 2 1 1 2 2 0 1 1 2 2 2 1 1 0 1 +0 2 1 0 1 3 0 0 2 3 1 1 1 1 0 0 0 1 2 2 2 0 1 0 0 1 0 0 0 1 1 1 1 4 0 1 2 2 2 0 0 0 0 2 1 1 3 0 0 1 1 4 6 1 2 1 1 1 0 3 1 3 0 0 2 1 0 0 0 2 1 4 0 1 0 2 1 0 1 1 0 1 1 0 0 1 3 2 0 1 1 0 1 3 1 2 4 3 4 2 0 4 2 1 0 1 2 2 4 1 0 1 4 1 1 2 0 1 2 4 0 1 2 0 0 0 3 0 3 3 3 2 1 1 0 2 1 2 2 0 1 3 2 1 2 3 3 5 2 3 1 1 2 3 2 5 2 0 2 1 1 1 1 1 0 1 2 2 1 3 4 3 3 0 3 0 2 1 2 0 1 1 2 0 1 4 2 2 2 3 0 2 1 1 0 2 2 0 3 1 1 1 3 0 0 0 2 1 0 2 2 0 0 2 1 1 1 2 2 1 2 1 3 0 1 4 1 2 1 0 3 2 2 3 1 1 0 1 1 0 1 1 0 3 3 3 0 0 2 0 1 2 3 2 1 1 1 1 1 2 1 2 1 1 2 0 3 1 0 2 1 0 0 0 2 3 0 0 2 0 2 1 1 1 2 1 1 0 2 2 1 1 1 2 1 1 2 1 0 1 +2 0 3 0 1 1 2 2 2 3 0 1 0 1 0 1 1 1 0 1 1 3 0 3 1 0 0 1 2 3 1 1 3 1 2 2 1 2 0 0 2 2 0 3 0 1 1 1 1 1 0 1 2 0 3 2 1 0 2 1 0 1 2 0 1 0 0 0 3 2 1 0 2 0 1 1 2 1 2 2 1 2 1 0 0 1 0 2 1 4 2 2 1 3 2 0 1 0 1 0 0 1 1 1 1 4 1 2 0 2 2 6 0 0 0 1 0 5 0 2 1 2 2 1 2 1 0 0 3 3 1 3 1 0 4 1 0 3 0 0 0 2 4 4 2 1 1 2 2 4 2 1 0 3 1 0 1 3 2 2 1 2 1 2 2 1 3 3 1 5 1 1 2 1 1 0 2 3 1 1 1 2 2 0 3 1 2 1 3 2 4 0 0 1 5 2 1 4 2 5 0 4 1 2 2 3 0 1 2 2 0 3 1 1 2 1 2 1 1 3 2 1 2 1 1 0 4 2 0 3 2 0 2 3 1 1 2 0 1 0 3 1 0 0 3 0 1 4 1 0 0 1 1 4 1 4 0 0 1 0 0 1 1 0 0 1 1 0 2 1 1 0 0 1 1 1 1 0 1 4 2 0 2 1 2 1 3 2 0 1 1 1 2 0 0 0 1 2 1 1 +1 1 0 1 0 0 0 3 0 2 0 2 4 1 1 0 0 0 2 0 2 0 0 1 1 5 0 2 0 0 2 1 3 1 1 2 0 1 0 0 3 0 1 0 2 3 0 3 1 0 1 4 0 2 3 1 2 0 3 2 0 5 3 1 1 1 1 0 0 2 1 3 0 2 1 4 2 0 1 1 2 3 1 1 0 2 4 0 0 1 3 1 3 2 1 1 1 3 0 0 2 1 3 0 1 0 0 0 3 1 1 1 0 1 0 4 2 4 3 1 2 2 3 2 4 2 3 0 0 4 0 1 2 2 2 2 3 0 1 1 2 4 1 4 2 1 2 0 4 0 2 2 2 2 2 0 1 0 3 2 3 1 1 1 3 2 2 2 3 1 3 1 1 2 2 0 3 3 6 1 5 3 3 0 3 4 3 4 1 2 0 1 2 2 0 0 3 1 0 6 1 0 0 1 1 2 2 3 0 0 1 1 0 0 3 4 5 3 1 0 2 1 1 1 2 2 0 0 1 3 2 3 2 0 3 2 2 2 1 0 1 0 2 1 1 2 2 2 1 4 0 1 0 0 1 1 3 0 0 1 2 2 1 1 2 0 1 1 0 2 2 0 2 1 2 1 1 2 0 3 0 1 2 1 1 3 0 0 1 0 0 1 0 0 0 0 2 1 0 1 +0 3 2 1 0 1 1 0 0 1 1 0 2 1 2 3 1 1 3 1 3 0 0 1 2 0 2 0 3 0 0 0 0 0 0 3 0 1 1 0 2 0 2 1 2 0 1 1 2 1 1 0 0 3 2 1 2 4 1 4 2 0 2 1 0 2 0 4 2 2 0 2 1 1 2 1 2 1 2 4 2 1 3 0 3 1 2 0 1 1 2 3 0 1 0 1 0 2 1 2 3 2 1 0 2 1 1 0 0 1 1 3 0 0 1 2 2 1 4 2 2 2 4 0 2 3 3 2 1 1 2 1 0 2 3 1 2 1 1 1 2 0 4 0 0 0 2 1 0 3 2 1 0 2 2 0 1 1 2 2 1 4 4 2 0 1 3 2 1 2 0 1 1 4 1 5 1 1 0 4 3 1 1 2 2 5 5 1 1 0 4 3 0 2 3 0 0 0 1 1 1 0 3 1 3 3 3 0 3 1 0 2 2 3 1 1 0 0 1 1 2 1 0 2 1 1 3 2 0 0 1 1 1 2 0 0 1 3 0 1 2 0 1 0 0 1 0 1 1 0 0 1 2 0 2 0 0 1 1 1 2 0 1 0 1 1 1 0 0 1 0 0 0 0 0 1 1 0 2 0 0 2 1 0 1 1 2 0 2 0 1 1 0 1 0 1 0 1 2 2 +1 0 0 3 1 5 0 1 0 0 1 1 1 2 0 0 1 0 3 1 1 4 1 1 0 1 0 1 1 2 2 1 1 2 0 2 1 2 2 1 1 0 0 1 1 1 2 0 2 0 1 0 1 0 0 0 1 2 0 1 3 1 1 1 2 2 3 0 1 0 3 1 2 0 3 2 3 2 0 0 1 0 2 2 2 2 3 1 2 1 1 0 1 0 0 2 0 0 0 0 2 6 1 2 2 1 0 0 2 1 1 0 3 0 2 3 2 1 0 3 1 2 0 2 1 0 2 1 1 1 3 0 3 0 4 2 1 1 0 1 1 2 0 1 4 1 3 1 2 1 0 4 1 0 2 2 1 4 2 1 2 0 0 1 1 3 4 4 1 4 1 2 0 4 3 0 2 3 1 1 2 2 0 0 1 1 1 0 1 1 1 4 0 2 3 2 1 1 1 0 0 1 1 1 0 1 1 4 0 1 3 4 3 3 0 3 1 1 0 1 1 2 1 1 5 1 3 2 0 1 0 2 0 0 0 1 1 1 2 1 3 1 1 0 0 0 0 1 1 1 1 1 1 0 1 3 0 0 4 1 2 1 1 1 3 2 1 2 0 1 3 2 1 2 1 2 1 0 1 0 1 1 0 0 1 2 2 2 0 2 1 1 0 0 2 0 1 0 0 2 +1 4 1 1 1 1 1 4 1 1 2 0 0 3 1 0 3 2 1 1 2 0 3 0 2 1 0 2 0 1 2 0 1 1 0 2 2 0 1 0 0 1 2 1 2 0 1 0 3 0 0 1 1 1 1 2 0 1 3 1 2 1 2 0 4 0 3 0 1 1 2 0 1 2 0 2 0 4 1 3 2 1 3 1 1 1 2 2 0 2 2 3 2 2 0 0 1 0 1 0 1 0 1 1 1 1 0 2 2 1 2 3 0 3 1 2 1 2 1 3 0 2 1 1 6 1 1 3 2 1 1 6 3 1 0 1 1 1 2 1 3 2 1 2 2 3 2 1 2 1 2 0 2 2 2 2 0 1 4 4 0 0 1 0 2 3 0 3 3 4 2 4 1 1 1 1 0 2 0 2 1 1 1 0 1 2 1 1 2 1 0 0 1 0 3 4 0 0 2 2 2 3 1 1 1 4 1 1 2 1 2 2 5 3 1 2 0 0 2 1 0 3 2 1 1 1 0 1 1 0 1 4 0 1 1 1 2 2 1 3 2 3 0 5 0 2 1 1 0 1 0 1 0 1 4 1 0 2 1 2 3 1 1 0 1 1 1 4 2 0 0 2 0 1 3 0 0 0 0 4 0 2 3 1 0 0 0 2 1 0 0 1 0 1 1 1 0 0 4 0 +0 2 0 2 2 2 2 0 1 0 0 1 1 1 0 2 0 0 3 1 0 1 1 1 2 0 0 3 2 1 2 1 1 1 1 0 0 0 0 4 1 0 6 1 0 1 2 1 0 0 0 4 0 2 1 0 2 3 2 3 2 0 0 1 1 1 1 2 1 0 0 0 1 1 1 2 2 4 3 2 1 2 1 1 1 3 1 4 4 0 2 0 5 1 3 1 1 1 1 1 1 2 3 2 3 2 0 1 1 1 0 3 1 1 2 1 1 0 2 0 2 0 4 1 2 1 3 0 1 1 5 2 3 3 2 1 2 2 2 3 0 4 2 3 1 2 1 1 1 3 1 3 0 1 2 1 0 1 1 1 1 1 0 0 1 3 2 1 1 2 1 1 1 0 2 2 3 0 2 0 4 1 2 2 0 2 2 3 6 3 3 0 1 3 1 3 3 2 3 2 0 2 1 3 1 1 1 1 1 1 1 2 0 2 3 0 1 3 2 0 2 2 3 4 3 2 5 4 2 2 0 0 1 2 0 0 1 1 1 1 0 0 0 2 3 0 0 2 1 2 1 0 0 1 0 0 3 1 2 1 2 1 2 0 1 1 1 0 0 3 0 1 4 0 2 0 0 2 1 1 3 0 1 1 2 0 1 0 1 1 2 0 4 1 1 1 0 0 1 1 +0 2 0 1 0 0 0 4 0 3 0 0 0 0 0 2 0 3 1 0 3 4 1 0 2 2 2 2 1 0 3 1 1 1 0 3 1 1 1 2 0 1 1 2 1 2 3 1 2 3 0 0 1 1 0 0 0 0 1 1 1 4 4 2 1 2 2 1 1 0 2 2 1 0 1 1 0 3 1 0 0 1 1 0 4 0 1 3 0 1 0 0 2 1 1 2 2 0 1 4 2 2 2 4 2 2 1 2 1 1 2 2 3 1 3 1 1 1 2 5 2 2 3 2 3 2 2 1 3 3 4 1 1 2 2 1 1 3 1 2 3 2 1 2 1 4 2 3 1 2 0 1 2 0 1 1 4 1 1 3 5 2 2 1 2 0 3 4 4 0 3 3 0 2 3 1 0 0 1 1 6 0 7 4 0 2 0 1 4 0 4 2 3 1 3 3 1 0 3 2 1 2 3 1 0 1 1 3 1 2 2 1 1 1 1 0 0 0 2 0 1 3 1 3 0 0 3 1 3 0 2 2 1 1 1 0 0 0 0 1 1 0 4 0 1 1 2 4 0 2 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 2 1 0 2 1 0 0 0 1 1 1 0 0 1 1 2 2 1 0 0 0 1 2 0 1 2 1 0 3 0 +2 0 3 0 2 0 0 2 0 3 1 1 2 0 1 1 4 1 1 0 0 1 1 4 1 2 0 0 1 1 0 1 0 1 0 2 1 2 0 1 0 0 1 2 0 0 2 1 0 0 3 0 1 0 0 2 1 0 0 1 1 1 1 3 1 0 3 2 2 2 2 0 1 0 2 2 3 2 3 2 1 1 0 2 0 0 3 1 2 3 2 3 0 1 2 3 0 3 3 0 1 0 1 3 0 2 2 0 1 3 1 2 5 0 3 3 0 1 3 1 1 0 0 1 2 1 0 1 2 4 0 0 2 1 4 4 3 0 2 2 0 1 1 3 6 0 1 1 3 1 0 3 1 1 4 0 2 2 1 2 0 3 1 0 1 2 1 1 1 3 3 0 3 2 1 2 3 1 1 2 1 3 1 0 2 1 3 4 0 0 1 2 0 0 0 3 1 1 3 2 1 1 0 0 1 1 1 0 4 1 0 1 1 0 0 1 1 1 1 4 3 5 2 2 2 0 3 1 2 1 3 2 2 1 1 3 2 0 0 2 3 4 2 1 1 2 1 0 2 2 0 0 0 2 1 0 3 1 2 0 1 1 2 0 2 0 0 1 2 2 2 1 0 1 0 1 1 2 2 0 1 2 2 2 1 1 1 2 1 0 0 3 3 0 1 0 2 2 1 0 +0 0 1 0 2 0 1 0 1 0 1 1 1 0 0 2 1 1 1 1 0 1 2 4 2 2 0 0 1 1 0 0 0 0 1 1 0 0 3 1 1 0 0 1 0 1 0 1 1 1 0 2 1 1 2 1 0 0 0 3 1 0 2 2 2 0 2 4 0 3 3 1 4 0 0 1 2 6 1 2 2 0 5 0 2 2 1 0 1 0 3 2 1 3 2 3 1 2 1 3 0 2 0 1 2 1 0 0 1 0 1 2 0 2 1 0 3 0 3 2 3 3 1 1 0 4 1 3 0 1 2 5 2 0 0 3 3 2 4 1 3 0 0 0 1 0 1 1 0 0 4 3 1 4 0 1 5 2 1 2 0 0 2 3 1 2 2 2 0 2 2 3 2 1 2 2 2 5 1 2 3 4 3 4 2 4 2 2 1 1 2 4 2 3 4 2 0 0 1 2 1 1 4 3 0 0 3 1 3 5 2 2 2 2 1 1 2 1 0 0 0 2 1 1 2 3 1 0 0 3 1 1 1 0 0 3 1 4 1 3 1 3 0 1 1 0 0 3 2 2 2 3 1 1 2 3 0 2 2 2 0 4 0 0 0 1 4 3 1 1 2 2 1 0 2 2 3 2 1 1 1 0 1 1 4 2 3 0 1 1 1 1 4 2 1 0 1 1 2 0 +1 2 0 0 1 1 1 3 0 1 0 0 0 1 0 1 3 1 1 1 1 2 0 3 1 0 0 1 1 2 0 0 1 2 2 2 2 1 1 2 2 0 2 3 1 1 2 1 1 3 1 0 0 3 2 1 0 2 1 1 1 1 1 0 2 0 1 1 1 5 0 0 1 3 0 1 2 4 3 1 2 3 2 1 1 0 2 4 0 2 1 2 2 1 2 0 3 1 2 0 1 2 0 2 2 2 3 0 4 3 1 1 1 2 3 1 1 2 2 2 0 4 2 2 2 2 0 2 3 3 0 1 1 0 4 3 1 1 1 1 0 1 3 0 1 1 1 2 5 3 0 0 2 2 4 2 4 0 2 2 0 4 3 0 3 2 1 1 5 2 3 0 2 2 1 3 2 3 1 2 1 3 1 3 2 0 2 1 2 0 1 1 3 2 1 4 0 3 1 2 1 1 4 2 2 1 2 3 1 2 3 1 2 0 5 1 1 1 1 3 5 1 2 3 3 2 1 2 2 1 3 1 3 4 0 1 1 0 1 1 2 0 2 0 0 0 0 2 0 1 1 1 2 1 0 1 2 2 1 1 0 1 1 0 0 0 1 2 3 3 1 0 2 1 0 1 0 0 0 0 2 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 +0 1 2 2 1 0 0 0 1 1 2 0 1 1 1 0 0 0 1 1 1 1 1 3 1 1 0 0 1 0 2 2 0 1 0 1 1 0 2 1 1 1 1 0 2 1 2 0 0 0 0 0 1 1 0 2 1 0 0 4 1 1 2 2 2 0 2 1 1 2 1 0 1 4 2 3 0 0 1 3 1 1 0 4 2 3 0 0 2 0 3 4 4 3 5 3 2 1 3 1 3 2 3 1 2 1 1 2 2 5 0 3 4 4 2 0 2 2 1 1 1 3 5 0 0 3 0 1 2 0 1 2 0 0 3 0 2 2 2 3 2 3 4 3 2 2 1 1 0 2 4 1 2 2 4 2 1 5 1 1 2 2 4 3 0 0 3 4 2 1 3 2 4 4 3 3 2 5 5 0 1 0 2 1 0 3 0 0 1 2 2 2 2 2 4 2 0 1 1 1 2 1 4 1 3 1 1 2 1 3 0 0 1 1 1 1 2 1 1 0 1 1 2 1 3 3 0 2 3 2 0 2 1 3 3 1 0 4 5 2 1 1 2 2 1 0 2 1 1 2 4 2 0 3 0 3 3 1 0 2 0 1 1 1 2 3 3 0 0 0 2 1 1 2 2 1 2 3 4 0 1 3 1 0 1 1 1 1 1 1 3 0 0 2 1 0 2 2 1 1 +1 3 2 2 1 1 1 2 2 0 1 0 0 2 1 3 2 0 1 0 0 4 1 0 1 0 1 1 4 0 0 1 2 1 0 1 0 2 1 3 0 2 2 2 1 1 0 1 1 3 1 0 1 0 1 3 0 0 6 4 0 2 0 2 0 2 1 4 2 1 1 0 0 2 2 0 0 4 1 1 0 2 1 3 2 0 5 3 1 1 1 1 1 0 2 0 2 1 4 1 2 5 1 1 3 3 1 4 0 1 1 0 3 0 0 2 4 2 1 1 2 3 2 1 3 1 3 3 2 0 2 0 1 0 2 1 1 0 2 3 0 4 3 1 1 0 4 2 2 2 2 5 2 0 2 1 3 0 3 2 3 1 2 3 1 1 2 0 5 3 4 0 2 4 0 3 1 1 0 1 3 1 0 1 2 1 0 1 1 1 2 1 1 1 1 1 4 3 2 2 2 2 2 1 1 0 2 5 4 0 1 2 2 3 0 1 0 3 1 1 1 0 1 2 1 0 0 2 1 2 0 2 1 1 2 0 4 1 2 1 2 4 2 3 3 3 1 0 2 4 1 3 2 1 3 1 1 1 1 3 0 3 1 1 1 1 2 1 0 0 4 1 0 0 0 2 1 1 2 0 2 0 0 0 1 0 1 1 1 1 1 0 2 1 2 1 0 0 1 0 +1 1 1 1 1 1 1 1 0 0 2 2 0 1 2 0 1 3 1 2 5 1 0 5 0 1 1 0 3 1 1 1 0 3 1 2 2 1 1 0 1 3 4 1 0 0 0 2 1 1 0 2 0 2 1 0 1 0 1 2 1 1 1 1 1 1 1 1 0 3 1 0 1 2 1 2 0 5 2 3 2 5 0 1 0 0 2 0 1 1 2 2 1 3 4 0 2 4 1 3 1 1 2 4 3 0 1 2 2 4 2 3 1 0 2 4 5 4 3 2 1 2 1 3 1 2 1 3 1 0 1 0 3 2 2 3 2 0 1 3 2 4 2 0 1 2 0 2 2 3 2 1 1 1 3 0 1 0 1 2 3 2 1 0 2 1 2 1 2 2 1 1 1 3 1 1 1 3 1 2 3 1 1 1 4 0 0 3 1 2 0 1 1 1 5 3 1 0 1 2 0 3 2 1 0 2 0 0 1 3 1 1 1 1 2 0 0 1 2 0 4 1 0 3 0 0 0 0 3 1 0 1 0 1 1 0 2 1 1 0 1 1 1 1 1 2 0 1 2 0 2 1 1 1 0 1 2 2 4 0 2 1 1 4 3 0 1 1 2 0 2 0 1 2 3 1 1 0 1 0 0 0 1 2 2 3 3 1 0 1 0 3 1 0 2 0 0 1 1 1 +0 0 2 2 0 0 0 0 2 1 0 1 1 1 2 1 0 1 0 3 0 1 1 3 1 1 1 0 0 1 1 0 1 0 0 0 1 1 2 0 2 3 1 1 1 2 0 1 0 0 2 1 1 1 2 2 1 0 0 1 2 3 2 3 0 2 5 1 3 0 1 4 1 1 0 2 1 0 4 3 1 1 2 0 1 2 3 2 1 1 1 2 1 3 4 1 2 2 2 2 2 4 2 1 1 0 0 3 2 1 3 2 1 1 1 1 2 3 4 2 2 0 3 0 2 3 2 0 1 2 2 0 2 0 0 2 2 3 2 3 0 3 1 3 3 2 1 2 2 1 1 3 1 2 0 4 5 1 0 5 0 0 2 5 3 1 2 4 2 2 0 0 2 2 3 3 3 3 2 2 3 3 6 2 0 0 2 0 3 2 2 0 6 1 3 3 2 0 2 2 2 3 1 3 0 3 0 1 1 0 0 1 0 1 3 2 5 0 3 1 1 2 1 1 2 3 2 1 4 2 0 4 1 6 2 1 1 1 0 3 1 0 4 0 1 0 2 0 3 3 1 0 3 1 1 1 1 1 0 1 0 1 0 2 1 1 1 0 0 0 1 1 1 0 2 1 0 0 1 0 3 2 0 0 0 1 1 2 0 2 1 0 0 1 1 1 1 0 3 4 +0 2 2 1 0 0 1 1 0 3 0 0 1 3 0 1 1 1 2 0 2 0 0 3 1 1 1 1 0 2 1 0 2 2 1 1 2 0 0 4 0 2 3 1 2 3 1 2 2 0 0 1 1 1 1 0 0 2 3 3 1 2 1 1 4 0 0 1 1 3 2 0 2 1 3 2 2 0 1 1 1 2 0 3 0 3 1 0 1 0 4 1 2 1 0 3 2 0 0 2 4 1 2 2 7 2 1 1 2 5 4 0 1 2 1 1 2 3 2 1 1 1 3 1 4 1 0 3 4 2 0 2 5 2 3 0 2 0 1 2 4 0 4 2 0 0 1 0 1 1 0 5 3 1 2 3 2 2 4 1 2 2 2 1 1 2 1 2 3 2 0 1 1 2 1 1 1 1 2 2 3 1 1 0 2 2 4 0 4 3 1 3 1 4 2 1 1 3 3 2 4 0 0 1 2 0 1 3 3 4 1 1 2 2 3 2 2 1 3 1 2 0 1 2 2 0 2 1 2 0 1 2 3 1 1 4 2 1 0 1 1 0 1 2 0 2 0 1 4 2 4 0 5 5 1 1 2 2 3 3 0 3 3 3 2 0 1 0 0 3 0 1 2 0 0 1 0 1 1 0 1 0 1 0 1 1 2 0 0 1 0 0 1 2 1 0 2 0 2 1 +0 2 0 2 2 1 1 3 1 1 1 2 1 0 1 0 0 1 3 1 1 1 0 2 0 0 1 1 1 1 2 2 2 1 1 1 0 1 3 0 1 1 2 1 2 0 0 2 1 2 0 0 0 3 0 0 2 2 3 2 3 0 1 0 4 0 1 4 1 2 0 1 0 0 3 1 2 1 3 1 1 0 1 2 1 2 6 0 3 1 0 1 3 1 2 4 2 0 2 2 0 1 4 0 1 1 1 5 5 3 2 0 1 4 1 4 3 1 3 2 0 1 1 1 2 0 4 1 2 2 1 1 4 0 3 1 4 2 0 3 1 3 2 1 0 6 2 0 2 2 1 0 5 0 4 1 2 2 1 2 2 3 1 1 2 1 2 0 1 5 3 5 4 1 1 5 1 5 0 2 2 4 1 2 0 2 1 3 1 1 2 4 3 1 0 3 1 2 2 3 0 1 3 2 0 2 0 2 2 2 2 3 1 0 3 0 4 2 0 1 2 2 2 0 1 3 1 2 0 0 2 1 1 3 1 1 1 1 0 2 1 1 2 3 1 2 4 2 0 0 2 4 1 3 0 1 1 0 0 1 2 4 0 0 3 2 2 3 2 2 1 1 1 2 1 0 2 2 1 0 0 1 1 0 0 1 0 2 0 1 1 2 4 3 1 0 0 1 1 2 +6 1 2 0 0 4 0 0 2 0 1 0 3 3 2 1 3 1 2 1 0 0 1 1 0 1 4 0 0 4 0 0 1 3 1 0 0 3 3 1 1 2 0 2 3 2 2 2 2 0 4 1 4 1 0 0 1 1 2 1 0 0 0 3 2 0 1 0 3 3 2 4 2 0 2 1 0 2 1 2 1 1 3 1 0 1 2 1 1 2 3 3 0 1 1 2 0 0 3 3 2 1 1 1 2 1 2 2 2 2 1 0 1 1 2 1 4 3 2 3 1 0 1 1 4 3 2 2 4 1 1 4 3 1 1 2 1 4 1 2 3 3 3 1 2 3 2 1 2 0 1 3 0 3 1 2 1 3 2 3 4 1 1 2 0 4 1 2 2 3 1 1 2 2 1 2 0 0 2 2 2 0 0 0 0 1 2 2 4 0 2 2 0 0 3 2 2 3 3 2 0 3 1 3 0 1 1 2 1 1 3 1 3 2 1 4 3 1 0 2 1 2 1 1 1 1 2 3 3 0 0 1 2 1 1 1 2 0 0 1 1 2 1 1 1 0 0 1 1 1 4 0 0 2 1 1 2 0 1 0 2 3 2 1 1 1 0 1 2 0 1 1 1 0 0 1 1 1 0 1 0 0 1 0 1 2 1 2 2 0 0 2 2 1 1 0 0 0 1 1 +1 0 0 0 0 2 1 1 1 0 2 2 0 1 1 2 2 2 1 2 0 0 1 1 2 0 3 1 0 0 0 0 2 1 1 0 2 2 1 1 2 1 1 2 0 1 0 0 1 1 2 2 0 2 0 1 1 3 0 1 0 0 1 3 3 1 2 2 1 1 3 3 2 1 0 1 2 2 1 1 1 1 0 1 0 2 1 4 0 1 6 0 0 5 1 1 2 0 1 1 3 2 1 3 2 0 2 1 2 2 0 2 2 3 2 2 1 1 1 2 4 5 1 0 3 4 2 1 1 3 1 2 1 1 2 1 0 1 4 2 1 1 2 2 2 3 3 1 6 2 0 3 2 1 1 0 1 3 1 2 3 0 0 1 2 1 0 1 2 2 1 2 1 1 3 0 1 0 2 1 1 1 1 1 0 0 1 2 3 2 0 2 2 1 1 2 0 2 0 0 0 1 2 0 4 3 0 0 0 0 0 2 1 0 1 1 5 0 2 1 2 1 4 3 1 1 1 5 3 2 1 0 2 0 0 1 4 2 4 3 1 0 2 0 0 0 2 0 0 0 1 2 1 0 0 1 1 0 0 0 0 1 2 1 1 0 1 2 1 2 3 2 0 1 0 0 0 2 1 3 2 3 0 1 1 1 5 3 0 1 0 2 1 0 1 2 3 0 0 1 +0 2 0 1 2 0 1 0 0 2 1 1 0 0 0 1 0 0 1 1 2 2 1 0 1 2 1 1 2 1 3 3 1 0 1 1 2 2 0 1 3 2 0 0 2 1 1 1 0 0 1 1 1 0 0 1 0 2 0 0 2 3 1 3 1 0 0 0 2 2 0 0 0 2 1 2 0 0 2 5 0 1 4 0 1 3 5 3 0 2 1 3 3 0 0 3 4 1 3 3 1 1 1 2 3 1 1 0 0 1 2 0 2 2 4 1 0 0 1 2 1 3 7 1 0 0 2 0 1 1 0 3 0 2 3 0 4 5 1 1 2 0 1 0 1 0 0 1 0 3 0 2 5 0 1 2 1 1 2 2 1 2 1 1 1 1 0 2 1 3 2 0 0 3 2 1 5 2 2 2 0 2 4 1 0 2 2 4 2 3 3 1 2 0 2 1 2 1 0 1 3 1 1 2 2 2 3 3 1 2 1 0 1 2 3 2 3 1 1 0 4 0 2 0 1 1 2 1 0 1 2 1 3 4 1 2 1 2 1 2 0 1 1 2 1 2 2 3 0 2 3 0 3 1 2 1 2 2 0 1 2 2 0 2 4 3 0 0 5 2 2 1 1 1 2 1 2 0 5 0 2 1 2 0 0 1 4 1 1 1 1 3 0 0 0 2 0 0 0 4 +0 0 1 0 1 3 0 0 2 2 2 0 2 0 3 3 0 2 0 3 1 0 1 1 0 0 1 0 0 0 2 3 1 0 2 0 2 0 1 1 0 1 2 0 0 1 1 0 3 1 2 0 1 0 1 1 0 2 1 0 0 0 0 4 2 3 1 2 1 1 2 3 2 1 3 2 1 3 0 0 2 0 3 1 2 0 1 4 1 3 0 1 3 3 0 4 1 1 2 0 6 0 1 2 1 3 2 0 2 3 2 0 2 2 4 2 2 2 2 1 2 0 1 0 0 2 1 1 2 3 1 1 3 1 2 3 0 4 3 2 1 1 1 3 8 1 1 4 1 1 1 1 3 3 2 2 0 0 1 4 1 2 1 6 1 3 2 2 2 1 1 2 1 0 4 2 2 1 2 1 4 1 0 2 2 3 3 1 2 2 2 1 1 0 1 1 1 2 3 1 1 4 3 2 2 2 1 1 4 1 2 1 0 2 1 0 1 0 0 0 1 3 0 2 0 1 2 3 1 4 1 0 0 1 2 4 1 1 1 1 0 4 1 1 2 0 1 1 0 1 0 2 2 0 2 1 0 1 1 2 1 0 1 1 1 2 0 1 0 1 2 1 1 2 1 2 0 0 0 2 1 1 2 4 0 0 1 1 1 0 0 0 1 2 0 0 0 0 0 1 +2 1 2 1 0 0 0 1 0 0 0 1 0 3 1 1 1 1 0 1 3 2 0 0 1 0 1 2 3 0 1 1 1 0 0 0 1 1 0 2 1 1 3 2 2 1 3 1 1 3 1 1 1 2 1 4 1 0 0 3 1 3 1 3 3 1 1 2 0 0 2 1 0 3 3 3 2 4 1 1 3 2 2 2 0 3 1 1 3 1 2 1 0 2 3 2 1 2 0 0 0 2 1 0 0 1 3 0 2 0 2 1 0 1 2 2 0 1 0 2 1 4 6 3 2 1 2 1 0 3 0 1 2 0 4 1 1 1 2 6 0 3 1 2 1 2 0 0 3 2 2 1 2 3 2 0 3 2 0 0 2 1 3 4 2 2 2 2 3 3 3 1 0 3 0 1 1 3 0 1 1 2 2 1 0 3 0 2 1 1 0 3 1 4 3 3 2 2 1 2 4 1 2 1 1 3 3 0 1 0 1 2 1 1 1 2 0 1 1 0 0 1 1 2 1 2 1 2 0 1 2 0 3 2 0 2 0 2 2 2 0 1 0 1 0 1 4 0 3 2 1 0 2 1 2 1 0 0 1 1 1 2 0 1 3 1 4 0 2 1 1 0 0 2 3 1 2 0 0 3 1 0 2 1 1 0 0 1 0 2 0 0 2 2 0 1 2 1 0 0 +0 2 1 2 1 0 4 0 1 0 0 0 1 2 0 0 1 1 0 4 0 1 2 2 1 0 0 0 1 3 2 1 3 3 0 2 2 0 0 2 2 0 1 2 0 2 2 0 0 1 2 1 0 1 1 2 0 2 3 2 0 1 1 1 1 2 2 4 0 2 1 1 0 3 2 1 0 2 1 2 1 1 3 0 0 2 2 3 1 1 1 0 0 0 2 1 3 1 0 1 3 2 3 1 1 1 0 2 0 1 0 3 1 5 2 2 0 3 2 1 2 0 3 2 0 2 3 1 2 3 1 1 1 6 1 2 2 3 1 1 3 1 3 3 2 2 1 1 1 5 2 2 2 4 2 1 0 2 0 3 2 1 1 0 2 0 1 1 1 1 1 1 0 1 2 1 1 0 2 4 2 2 1 2 2 0 5 1 2 0 0 0 4 0 1 0 3 2 1 1 2 1 5 4 1 3 0 2 2 1 2 0 0 1 0 2 4 0 0 0 1 0 0 0 2 0 1 2 0 0 0 1 0 1 1 0 3 3 1 1 2 1 2 1 1 1 2 1 0 1 2 1 1 0 1 0 0 1 0 1 1 2 1 1 1 0 1 0 0 3 1 0 3 0 0 4 1 0 2 0 2 1 0 0 1 2 1 1 1 0 1 1 3 2 1 2 0 2 3 0 +2 1 1 0 1 0 1 0 0 1 0 2 0 1 2 0 0 0 0 2 0 0 1 0 1 1 1 0 1 1 0 0 0 0 1 0 2 2 1 1 1 0 1 3 0 2 1 2 0 2 2 2 0 2 2 1 1 2 0 1 0 0 0 1 4 0 0 1 1 2 2 1 3 1 1 1 2 1 2 2 2 0 1 3 2 0 3 1 2 2 1 0 5 4 2 3 2 1 0 1 3 1 1 1 1 1 0 2 2 0 2 0 3 1 1 1 1 5 1 1 3 2 0 2 2 1 0 1 0 1 0 2 2 1 0 1 1 0 1 2 2 1 0 0 2 2 2 0 2 3 0 2 4 1 1 0 0 4 2 2 1 1 3 2 2 1 0 1 2 0 3 0 4 1 2 0 2 1 0 1 2 0 3 0 3 1 4 3 2 1 2 1 1 4 3 1 4 1 1 0 0 3 0 0 1 2 2 1 1 2 1 3 2 1 5 2 0 0 2 0 1 1 3 2 1 1 2 1 0 2 2 1 2 2 1 3 0 1 0 0 0 0 1 1 3 0 1 2 2 2 3 1 0 2 1 0 1 1 1 2 0 1 1 1 1 1 2 0 0 0 1 0 0 1 1 2 0 2 0 2 0 0 2 1 0 0 1 0 1 1 0 1 0 1 2 2 0 3 1 0 +1 2 0 0 1 1 0 3 1 0 1 2 2 2 0 1 3 0 2 1 2 1 1 2 1 2 1 1 1 1 0 0 0 1 0 0 0 2 0 0 3 3 0 1 0 3 0 1 1 0 0 2 2 2 6 3 2 1 0 2 1 0 3 1 3 0 1 1 0 2 4 1 3 4 2 1 2 4 1 1 0 0 0 4 1 2 3 0 0 4 0 3 3 3 1 2 1 1 1 4 6 2 2 2 0 3 1 1 1 5 1 2 2 1 5 0 2 0 4 1 3 2 2 1 3 1 4 3 0 3 4 2 0 3 2 1 0 1 0 2 3 2 3 3 0 0 1 2 4 2 2 5 2 1 2 0 0 2 2 1 3 4 0 2 4 0 0 2 0 1 2 2 3 2 1 3 3 1 1 0 1 2 1 2 1 1 2 1 1 1 2 0 2 3 0 1 1 0 2 1 0 4 2 1 1 4 1 1 4 2 3 2 2 1 2 1 3 0 2 0 1 0 0 0 3 3 0 1 0 1 0 0 2 0 3 2 1 2 1 0 3 1 0 2 0 2 1 1 3 0 1 0 2 2 1 3 0 0 2 2 1 1 0 1 2 0 1 0 0 0 1 2 0 2 0 1 1 0 0 0 0 1 4 0 2 1 1 1 2 1 0 1 0 2 0 2 1 0 1 1 +0 0 2 2 0 0 2 2 2 2 1 1 1 1 1 1 1 0 0 3 0 0 0 1 1 2 0 1 0 2 0 2 1 2 3 2 1 0 2 1 0 0 0 4 0 2 2 2 2 0 1 2 1 0 2 0 1 1 0 3 1 2 2 2 0 0 0 2 0 2 1 2 1 3 1 2 0 2 1 0 2 1 2 3 1 0 1 2 2 0 1 2 3 0 1 4 0 2 1 2 1 1 1 3 2 1 1 2 0 4 1 3 2 3 2 0 2 2 2 4 1 3 0 2 1 4 3 1 2 4 0 2 3 2 2 0 7 2 1 0 0 2 2 3 1 0 0 3 1 2 2 2 2 1 1 2 2 2 4 5 3 1 2 2 1 1 1 2 0 4 6 2 0 2 2 0 1 3 3 1 3 5 3 2 2 3 1 2 1 2 2 1 2 1 1 3 2 2 1 2 2 2 2 4 2 0 3 0 3 4 2 1 1 0 0 0 2 4 1 1 2 1 3 2 2 0 0 4 1 0 1 1 0 1 0 3 1 3 2 1 3 0 1 1 1 3 0 1 0 1 1 0 2 1 2 0 1 2 2 1 4 0 1 1 2 1 4 2 0 0 2 1 5 3 0 2 5 1 0 0 2 4 2 1 2 0 1 0 0 2 1 1 0 1 1 2 0 3 0 1 +0 0 0 3 1 1 0 1 0 0 1 1 1 0 1 1 0 2 2 2 0 2 0 0 3 1 2 1 1 1 1 1 2 0 1 2 1 1 2 0 1 3 1 1 0 1 0 2 0 0 1 0 0 0 1 3 0 3 0 1 2 2 1 2 2 1 2 0 2 1 0 0 1 3 4 2 1 2 3 1 2 0 3 5 4 1 1 2 1 2 1 1 2 2 1 0 1 2 2 1 1 3 0 0 2 2 1 1 0 1 3 1 5 3 2 1 2 3 2 2 1 1 1 2 2 4 1 3 6 1 4 2 3 1 0 2 2 0 1 1 0 0 0 1 1 2 0 2 2 0 0 2 1 0 1 2 2 2 1 1 0 3 2 3 1 1 1 3 2 1 2 1 1 2 1 2 3 1 0 3 1 3 1 2 1 0 2 1 2 3 2 2 2 2 2 2 3 4 4 1 2 1 2 1 3 0 2 0 2 1 0 2 1 4 0 1 2 0 2 3 2 1 0 1 3 1 0 0 4 2 4 2 2 1 1 0 1 1 1 3 3 0 2 2 1 1 1 0 3 2 1 1 0 0 1 1 0 0 2 2 1 2 0 2 1 1 2 0 0 1 0 0 0 0 1 1 2 2 0 1 1 0 1 1 1 0 1 2 1 3 2 4 0 0 0 0 1 1 1 0 +3 2 0 2 1 1 4 1 1 3 1 0 0 0 1 1 1 1 1 0 1 1 4 0 2 0 1 1 2 0 2 3 2 2 0 1 1 4 2 1 1 0 1 2 0 0 2 1 1 1 0 3 2 1 1 1 2 3 1 1 2 4 0 1 1 3 2 1 1 4 0 1 2 2 0 1 1 0 7 4 3 2 2 1 1 1 2 4 0 1 2 3 0 1 2 1 1 1 1 0 0 1 0 3 1 1 0 1 2 0 0 2 3 3 4 1 0 2 2 3 2 6 0 2 2 2 2 1 1 3 2 2 2 2 1 2 1 0 3 2 1 0 2 2 3 2 1 0 3 2 1 2 2 0 1 3 1 1 0 2 1 2 2 1 2 0 1 2 1 1 2 1 0 1 2 0 3 3 0 1 3 1 3 1 3 2 5 0 0 5 0 0 3 2 2 3 0 1 1 2 0 3 1 1 1 2 1 0 1 1 0 1 3 4 2 2 1 0 1 1 3 0 2 2 2 0 1 3 3 0 2 1 1 3 0 0 1 0 2 1 1 1 3 1 3 1 1 1 0 0 1 4 4 1 2 1 1 0 3 0 0 0 0 0 1 0 2 2 1 2 0 1 1 0 0 0 1 2 4 2 0 1 3 0 1 0 2 2 1 2 1 1 0 1 0 1 0 0 0 1 +0 1 0 0 0 0 0 1 1 1 1 0 0 1 2 3 0 0 0 2 1 1 0 2 0 0 4 1 1 1 3 0 2 1 6 0 2 2 3 1 1 0 2 1 2 2 1 1 1 3 0 2 3 3 1 5 1 1 1 3 0 1 1 0 1 3 0 3 1 2 0 2 2 1 2 0 2 2 1 1 4 5 1 7 3 2 1 4 2 3 1 3 3 1 0 1 3 3 2 1 1 3 1 1 4 3 1 2 1 1 1 0 2 1 1 0 1 1 1 3 0 3 6 1 2 2 1 1 4 4 2 1 1 1 2 4 2 2 1 2 0 2 2 1 1 3 1 0 3 2 0 2 3 2 4 3 0 3 2 2 2 0 1 0 2 4 0 1 1 2 2 0 1 1 1 1 1 4 3 1 3 1 2 1 1 2 5 1 1 0 4 0 1 2 2 1 2 0 2 2 1 0 0 2 1 1 3 3 1 3 0 1 4 1 2 1 3 1 2 3 1 1 0 2 1 3 2 0 1 4 5 1 3 1 1 1 0 2 3 0 2 1 4 1 2 0 1 1 0 2 0 0 2 0 1 3 0 2 1 0 0 1 1 1 0 2 0 0 0 2 1 2 2 1 4 2 1 0 3 2 1 1 3 0 1 1 0 1 2 0 1 2 1 2 2 1 2 1 0 3 +0 1 1 0 1 0 0 1 1 1 1 2 0 0 1 0 0 0 2 1 1 1 0 2 2 4 2 0 1 0 1 1 4 4 0 1 0 1 1 2 5 1 1 2 4 3 1 0 1 1 0 1 1 4 0 1 2 2 3 0 2 0 0 0 2 3 0 2 2 0 0 3 1 1 2 6 0 2 1 4 2 1 0 3 1 9 0 0 1 3 3 0 5 0 2 1 0 3 0 0 0 2 1 2 6 2 0 1 0 1 4 4 1 1 1 2 2 0 4 1 0 3 1 1 5 0 1 0 1 0 2 1 1 1 2 2 1 1 1 0 3 1 2 2 1 1 3 2 2 2 3 1 0 3 3 3 1 3 0 1 3 0 0 1 2 0 2 4 5 2 3 3 2 1 3 2 1 1 0 3 0 1 0 0 3 2 2 1 2 0 1 2 1 1 1 1 1 4 1 1 2 1 1 4 1 2 0 5 1 1 1 4 1 0 2 0 0 1 0 3 4 2 0 0 2 2 2 0 1 3 1 1 3 2 3 3 3 2 1 2 2 1 0 0 0 4 1 1 0 1 1 3 2 0 0 3 0 1 0 0 1 1 1 2 1 1 1 1 1 1 2 1 3 0 0 1 2 0 3 1 1 1 2 2 0 2 0 3 2 0 1 2 1 0 0 2 0 1 0 0 +0 0 0 0 0 1 1 2 0 3 0 1 1 4 0 0 1 1 1 1 0 0 3 2 2 0 4 1 3 2 0 1 0 2 1 1 1 2 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 2 1 2 0 1 0 0 1 0 1 0 1 3 2 1 1 3 0 2 0 2 0 1 1 0 5 2 2 3 2 1 3 2 1 1 1 1 3 1 1 1 2 2 1 1 0 0 0 4 3 4 0 3 0 0 1 1 2 1 2 1 3 1 2 2 4 3 2 1 3 1 3 4 4 1 0 2 2 2 3 3 2 2 4 4 2 4 0 0 2 2 2 1 0 2 1 2 1 2 1 4 1 1 3 2 1 0 0 1 0 2 1 1 1 1 3 2 1 5 0 2 2 2 1 1 2 1 1 0 1 3 0 0 2 2 0 1 0 2 0 3 1 3 1 0 2 1 1 2 4 2 1 0 3 1 1 0 2 1 2 0 2 2 2 1 0 0 1 1 2 1 2 1 3 1 0 0 0 1 2 2 1 2 5 3 2 3 1 2 1 2 2 1 0 4 0 0 0 3 2 2 1 1 0 1 2 1 1 1 3 1 0 1 2 0 0 1 0 2 0 0 0 2 1 0 2 2 0 1 1 1 0 0 1 0 1 0 3 2 1 3 2 3 1 1 0 1 +1 0 0 2 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 4 2 1 0 0 1 2 0 1 2 1 1 0 3 1 1 1 3 3 0 1 4 1 0 1 2 0 0 0 1 1 2 2 4 1 1 3 0 3 1 1 2 2 3 1 1 1 0 5 0 0 0 1 2 1 1 2 3 0 2 0 0 3 0 1 4 3 1 2 1 1 3 0 0 1 2 0 2 0 0 5 2 1 1 7 0 0 1 3 0 3 3 1 1 1 1 0 1 0 4 3 0 5 1 0 1 2 0 3 1 3 2 2 0 1 1 0 0 0 3 1 2 0 5 4 0 0 1 2 1 3 1 2 0 5 2 2 2 2 3 4 4 2 4 2 1 0 2 2 1 1 0 1 3 2 1 2 2 3 0 2 0 2 1 4 0 1 0 0 0 3 0 2 1 2 2 2 1 1 2 1 1 3 5 1 3 0 2 3 2 2 1 1 1 0 5 2 0 2 1 2 1 3 2 0 3 2 3 0 0 0 2 0 2 1 2 3 1 0 0 1 1 1 1 0 2 2 0 0 2 1 1 0 4 2 0 3 1 1 0 1 2 0 1 0 1 1 1 2 1 2 1 2 2 0 2 2 1 0 2 0 0 1 0 0 0 1 3 2 1 0 0 1 0 0 1 1 0 0 0 0 +0 4 2 2 1 1 0 2 1 1 0 3 3 1 1 2 1 1 0 0 1 0 0 2 3 1 2 0 0 1 1 2 0 0 1 3 1 2 2 1 2 1 1 0 0 2 1 1 0 3 1 1 0 3 2 0 0 1 1 2 0 1 2 0 1 2 2 0 0 1 0 1 2 1 3 2 4 1 1 0 4 1 2 2 1 1 3 1 3 2 1 3 3 0 2 1 1 0 2 1 1 2 3 3 1 1 2 0 1 2 1 2 2 1 2 1 3 0 1 0 1 2 1 2 0 5 0 1 1 0 4 1 1 0 1 4 2 1 0 1 0 1 4 1 1 3 1 1 2 2 0 1 0 4 4 2 3 0 2 1 2 0 0 1 0 4 0 0 2 3 2 5 2 3 3 4 0 2 3 4 2 2 2 2 2 2 3 2 3 3 1 1 3 0 0 1 2 2 0 3 2 0 3 3 0 3 3 0 1 0 0 2 2 2 2 2 1 0 2 1 3 3 3 5 2 2 2 2 1 3 3 1 2 1 2 0 2 2 0 1 0 1 1 0 1 2 4 0 1 1 2 0 0 1 5 1 3 1 1 1 3 0 0 1 0 1 1 1 1 1 2 2 0 3 1 3 1 0 1 1 2 0 0 2 1 0 2 1 1 3 2 3 0 1 1 0 1 1 1 1 +2 2 2 1 0 0 1 0 1 1 1 3 3 2 0 0 1 1 2 0 2 1 0 0 3 3 3 2 0 3 0 1 0 0 4 1 0 3 1 0 0 0 1 1 2 2 3 2 3 2 1 0 2 2 3 2 2 3 0 2 1 2 0 1 1 0 3 3 0 2 1 0 0 0 2 2 2 1 2 3 1 0 0 1 3 3 3 3 0 1 1 0 2 1 0 4 3 3 1 2 4 5 0 3 2 1 1 1 3 2 1 2 0 3 1 3 0 3 1 5 2 3 1 4 1 3 5 1 1 0 0 1 4 2 1 0 1 0 2 3 1 2 3 2 0 4 3 2 1 2 2 1 1 0 3 2 3 1 0 1 2 4 0 1 1 2 1 0 1 1 2 0 2 1 2 4 2 3 2 1 1 3 1 2 4 2 3 0 1 4 1 1 1 2 2 0 2 4 3 1 0 1 1 1 3 3 1 1 1 1 0 3 2 3 1 1 2 0 2 0 2 1 0 1 1 1 3 0 1 3 5 0 3 0 2 2 0 2 2 1 1 2 0 0 0 1 1 1 2 3 0 1 1 2 0 2 0 2 1 2 1 0 3 0 0 2 2 0 2 0 2 1 1 0 1 2 1 0 1 1 0 0 0 0 1 3 0 0 3 1 0 2 1 1 1 0 0 0 0 1 +1 0 3 1 1 0 2 0 3 0 1 0 0 1 0 0 1 0 0 2 1 1 2 1 1 0 0 0 1 1 1 2 0 2 3 0 0 1 1 2 1 1 1 2 1 1 1 2 2 2 3 4 2 2 2 0 2 4 3 1 1 2 3 0 3 2 1 1 1 1 1 2 0 1 1 0 2 1 1 1 3 1 2 2 2 0 0 0 4 3 3 1 1 1 3 0 6 2 0 2 1 2 1 4 5 1 1 1 1 1 5 0 4 0 1 3 2 2 4 1 4 2 3 0 4 0 0 2 3 3 0 2 4 5 1 1 5 0 3 5 4 1 2 3 1 0 2 0 2 2 0 0 4 2 3 5 1 0 2 1 0 2 1 2 0 5 1 3 0 2 1 1 1 3 0 0 2 1 3 3 0 4 2 3 4 2 1 4 1 0 2 1 2 0 3 0 1 2 2 2 5 3 1 0 7 1 0 2 2 2 3 0 0 2 2 0 5 3 1 0 1 2 1 0 0 3 1 1 1 0 3 2 1 1 1 0 2 1 1 0 4 2 0 5 0 2 1 1 0 2 1 4 0 2 0 0 1 2 2 1 2 1 1 2 2 1 2 2 1 2 1 0 0 1 1 0 0 0 3 0 1 0 0 1 1 0 0 1 1 1 0 0 0 2 0 0 1 1 0 0 +2 0 1 0 1 0 0 1 0 1 1 0 1 2 3 0 0 2 1 0 0 1 1 0 2 1 0 0 4 1 0 2 1 1 1 1 1 4 0 0 0 1 0 2 0 0 0 4 4 1 1 0 1 1 0 3 2 3 2 3 0 1 0 1 2 0 0 1 1 2 1 1 0 1 2 0 1 3 2 4 0 1 1 4 4 2 4 2 1 1 1 0 2 1 2 1 3 1 0 0 0 0 1 0 2 1 1 2 2 2 4 1 0 3 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 1 1 2 0 3 1 2 2 0 2 1 3 0 1 0 4 4 2 3 2 1 3 5 4 2 1 1 1 0 3 0 0 4 2 4 2 1 1 2 1 2 1 1 1 3 2 5 0 2 2 2 3 1 4 1 0 1 0 2 3 1 1 1 2 3 2 1 3 2 1 0 4 1 2 2 1 1 2 4 1 2 0 1 4 1 0 0 1 2 2 0 0 0 3 2 0 2 0 0 1 3 1 1 2 1 1 1 2 2 2 3 1 1 0 2 0 2 0 0 4 2 2 3 0 0 1 0 0 0 1 1 2 3 0 2 2 1 3 0 2 2 0 6 1 1 0 1 6 2 0 1 0 0 2 1 4 0 2 0 1 0 0 0 3 0 0 1 4 0 0 +2 1 1 4 1 4 1 0 0 1 0 1 3 1 2 0 1 1 1 1 1 1 2 0 0 1 2 1 1 1 0 1 2 0 0 0 0 1 1 1 1 2 1 2 2 1 1 3 3 2 1 0 1 2 3 0 0 0 1 3 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 3 3 2 2 2 1 0 2 0 5 1 5 0 2 1 1 2 4 0 0 3 2 1 1 3 2 3 1 2 0 2 1 2 4 1 0 1 1 0 1 1 5 0 2 1 1 2 0 5 2 1 3 2 0 1 0 1 2 0 1 0 1 3 3 3 3 0 1 3 1 1 1 2 2 1 3 1 1 1 2 0 4 0 1 4 3 1 2 0 1 1 1 0 3 1 0 4 1 2 1 1 0 3 2 0 1 0 0 2 3 2 0 0 1 3 2 2 3 4 2 0 4 1 1 1 1 1 0 2 1 1 3 1 3 3 2 0 1 2 2 0 2 0 2 3 0 3 0 2 4 1 1 2 0 2 3 1 1 2 2 1 0 3 1 2 0 3 0 2 0 2 2 2 3 5 3 3 0 3 1 1 0 0 1 4 2 4 3 0 2 2 1 2 0 1 1 2 2 2 0 0 2 0 1 1 3 0 3 1 1 0 1 1 1 2 0 1 0 1 1 1 2 1 0 1 +2 0 3 0 0 0 0 2 1 2 0 0 2 1 2 2 1 1 2 1 2 2 3 0 0 1 3 2 1 1 1 0 0 2 1 2 1 1 0 3 2 2 1 2 0 1 2 1 0 0 1 3 4 1 1 0 1 3 2 0 4 2 0 1 1 1 1 3 1 0 1 0 2 0 0 2 0 1 1 1 0 1 1 2 3 1 2 6 0 0 2 7 2 1 3 2 1 0 2 2 3 2 2 1 1 3 1 1 0 1 4 1 2 0 1 0 0 1 0 0 2 1 4 3 1 2 3 0 5 3 0 3 1 1 2 3 1 1 1 2 0 2 1 1 2 4 2 2 1 3 0 1 2 2 2 0 1 2 2 1 1 0 0 1 2 1 0 1 2 1 1 2 1 0 2 2 1 2 2 3 6 2 2 0 4 0 1 3 2 4 3 0 0 1 1 0 2 2 1 1 4 4 1 2 4 1 1 1 3 1 3 1 1 2 0 2 6 1 1 3 3 1 0 1 1 0 1 2 0 0 2 1 0 1 3 1 1 2 2 2 0 1 0 1 0 2 3 3 0 0 0 1 0 0 1 0 0 1 1 3 1 1 1 2 2 0 3 0 1 1 2 1 0 1 1 2 0 1 0 2 0 3 1 0 1 1 0 0 1 0 1 1 0 2 3 0 1 2 1 1 +2 0 1 1 1 0 0 1 1 2 1 0 0 0 0 1 1 1 0 0 2 1 0 1 0 0 1 2 0 2 1 1 1 2 1 1 1 1 0 1 2 0 1 2 1 1 2 1 2 3 2 2 3 0 2 2 2 2 2 0 2 1 2 2 1 0 3 1 1 0 2 3 1 2 0 0 1 3 4 0 3 1 0 2 3 0 0 2 0 0 3 5 2 0 1 0 1 1 1 4 1 3 1 1 2 3 2 1 2 1 2 2 2 5 0 2 2 3 2 2 1 0 3 4 2 2 1 0 0 3 3 2 0 4 1 0 3 3 1 0 0 1 1 0 1 2 1 0 1 1 0 3 1 2 1 0 2 3 0 1 4 1 2 1 0 1 3 1 1 1 2 5 1 2 1 0 1 0 2 1 2 1 1 1 1 2 0 0 2 2 3 0 2 1 0 1 2 6 1 1 1 2 4 0 2 3 2 0 1 0 3 3 4 0 0 2 6 3 2 2 0 0 2 2 0 2 1 0 3 4 1 1 1 0 3 4 0 0 0 2 2 0 2 1 6 3 1 0 1 1 1 1 0 1 1 0 1 1 1 2 2 0 2 2 0 1 0 2 2 2 2 2 4 0 1 1 1 2 0 2 0 2 2 3 0 1 0 0 1 0 1 1 1 0 0 1 2 2 1 1 +3 1 1 1 1 1 0 2 0 1 1 2 0 0 0 2 1 2 0 0 0 0 1 1 1 0 2 0 1 0 2 1 1 1 0 0 1 0 2 1 0 0 0 1 2 2 1 3 0 0 1 1 0 3 3 2 0 1 3 0 1 4 1 3 1 0 1 3 0 2 2 3 2 1 2 2 1 0 4 0 0 0 0 1 1 0 0 2 4 0 1 1 1 1 2 3 0 6 2 3 1 2 0 2 1 1 1 1 2 2 2 0 0 1 1 3 2 1 1 3 1 5 1 1 1 4 0 2 1 3 1 3 5 1 2 1 3 2 1 4 1 2 4 1 0 2 1 0 2 3 1 2 2 1 1 0 1 3 2 3 5 1 3 3 2 4 4 1 1 3 1 2 3 2 0 0 4 1 4 2 1 2 4 3 1 2 0 2 3 2 3 2 0 3 0 3 1 2 0 3 0 1 1 4 3 0 3 2 2 2 3 3 1 1 1 1 1 2 1 1 4 0 4 0 0 2 1 2 3 2 2 1 3 0 1 1 0 1 1 2 2 0 1 1 0 3 2 0 2 0 2 0 2 1 1 1 2 0 0 2 0 4 2 3 2 2 2 1 1 1 0 0 0 1 1 1 1 2 1 2 1 1 2 2 1 0 1 1 1 1 0 2 1 2 1 1 2 0 1 1 +1 1 2 0 1 0 1 0 0 0 0 0 2 1 0 4 2 0 0 2 1 0 1 0 0 1 0 1 1 1 2 1 0 2 0 2 2 0 4 0 0 2 1 1 1 2 3 4 1 2 2 5 0 0 1 0 0 2 1 1 2 0 1 1 1 4 0 1 2 2 4 2 1 1 1 2 0 1 1 2 2 2 0 0 1 1 0 2 3 3 2 1 5 0 0 1 0 1 2 2 2 1 1 0 3 3 2 3 1 1 2 1 3 2 1 1 1 3 0 2 3 1 1 2 1 0 1 2 4 3 1 0 1 3 2 3 3 1 0 0 1 5 2 1 3 2 1 0 3 4 0 2 2 0 2 3 2 2 2 0 2 3 4 1 0 1 3 2 2 2 0 3 0 3 1 2 3 2 0 2 0 1 2 1 1 1 2 1 2 0 2 2 0 3 1 1 0 2 0 2 3 0 1 2 2 2 4 0 3 3 1 0 1 0 3 0 2 2 3 2 1 1 1 1 0 2 1 2 1 0 1 2 4 2 1 0 0 2 2 0 3 0 1 1 1 2 1 1 1 2 1 2 3 1 1 2 1 1 2 1 2 0 0 1 0 1 2 0 2 0 1 4 0 1 3 1 2 0 1 0 0 1 1 2 1 3 0 0 0 3 2 1 2 0 3 2 2 0 1 4 +2 0 2 1 0 1 0 2 1 1 0 1 3 0 2 0 1 0 0 2 0 0 2 3 1 1 4 4 3 0 3 1 1 3 1 0 1 1 1 0 0 1 0 1 0 2 1 2 2 0 2 0 1 3 1 1 0 1 0 3 0 0 1 4 0 0 1 4 1 1 2 3 2 2 1 2 1 1 0 4 1 2 1 3 1 4 1 1 2 0 1 2 0 1 1 3 4 1 0 1 2 2 2 2 2 1 1 3 1 1 1 4 0 2 4 2 1 1 1 1 0 1 2 3 4 1 1 2 1 4 2 0 1 2 2 3 5 4 2 1 1 0 2 3 3 2 2 1 3 2 3 3 1 3 0 3 3 1 3 1 2 1 2 0 0 2 4 2 2 3 0 1 0 0 0 3 1 3 1 3 1 0 2 1 2 6 0 0 4 1 3 2 2 2 1 1 1 1 1 1 2 0 7 2 2 1 2 3 1 3 1 3 2 0 3 0 2 1 1 0 1 2 1 0 3 1 1 2 0 2 0 1 1 0 4 2 5 2 0 0 1 1 0 1 1 1 3 3 3 1 0 1 0 2 0 3 2 0 0 0 0 0 1 0 1 2 2 0 2 0 0 0 1 3 0 0 0 1 3 0 1 2 1 1 0 1 0 1 3 2 0 0 0 2 1 1 1 1 1 2 +0 0 2 1 1 3 0 0 3 2 1 0 1 0 1 1 2 1 0 3 0 1 2 0 0 0 1 2 0 2 1 1 3 0 2 1 1 0 3 1 1 0 2 0 1 0 1 2 1 0 2 0 0 0 2 0 0 1 2 1 1 1 4 3 2 3 1 0 0 0 0 0 0 4 2 1 2 0 1 1 3 0 0 0 1 2 3 2 2 0 1 4 2 2 2 2 3 1 1 2 2 1 5 3 1 1 1 1 1 2 1 1 2 1 0 0 0 1 1 0 4 1 1 1 2 0 2 2 1 0 1 2 1 2 1 1 1 2 2 0 1 0 0 3 4 1 2 2 2 2 2 1 1 1 1 2 1 1 3 1 0 1 2 2 2 1 1 3 1 3 0 0 3 1 0 3 2 4 4 4 0 2 0 1 1 2 1 2 0 1 1 2 0 1 3 3 1 0 1 3 1 3 3 0 3 1 1 1 4 2 0 1 0 0 1 0 3 1 0 2 2 1 1 1 1 1 2 3 0 1 1 1 3 0 3 3 0 0 0 2 1 1 3 2 2 1 0 2 3 2 0 0 1 0 0 0 1 1 1 0 0 3 0 3 0 2 1 2 2 1 2 2 0 0 1 0 0 0 1 0 0 2 1 1 1 1 2 0 4 0 1 0 2 1 0 2 2 0 1 1 +0 0 0 0 2 1 0 1 0 0 0 1 0 1 0 3 1 1 0 1 0 2 3 2 2 0 0 2 0 2 1 3 2 1 1 0 0 2 1 1 3 0 2 2 1 3 2 4 2 2 3 1 3 3 1 0 2 0 0 0 1 0 1 2 2 2 1 0 3 0 2 0 3 0 1 0 2 1 1 2 2 1 1 1 0 1 2 2 2 2 1 1 2 1 1 1 2 0 0 1 1 3 3 1 2 1 3 1 1 3 2 3 1 2 4 0 3 1 3 3 1 1 1 1 4 3 1 1 3 1 2 1 3 5 2 2 2 2 3 4 1 3 3 3 4 0 1 1 1 1 1 5 0 1 1 0 3 3 1 3 1 1 2 1 2 3 2 1 1 1 0 2 2 2 0 1 2 1 1 1 0 1 0 1 0 2 3 0 1 0 1 1 3 2 1 0 2 1 7 0 2 5 4 1 2 1 3 1 1 6 2 4 1 2 2 4 4 1 4 3 1 0 4 0 2 0 3 1 1 0 2 3 0 2 0 2 5 0 1 0 2 1 1 1 0 1 2 2 0 3 1 0 2 2 2 2 1 1 1 2 1 2 2 0 0 2 3 0 0 2 1 1 2 3 0 0 0 2 1 1 5 1 0 3 0 2 0 1 3 1 1 0 0 1 2 2 0 2 0 2 +0 1 1 1 1 0 0 0 1 1 2 1 0 3 0 0 0 2 1 0 1 0 1 3 0 0 0 0 0 1 3 3 2 2 0 0 3 1 2 0 1 1 2 1 0 1 0 2 1 1 0 4 1 1 0 1 1 1 1 0 1 2 3 1 5 1 1 2 1 2 0 0 2 0 1 3 2 1 2 2 1 0 2 0 4 0 3 2 4 0 3 0 1 1 0 1 1 2 5 1 1 0 2 1 1 2 0 2 0 2 4 1 2 0 0 1 2 0 5 4 0 1 2 0 1 1 3 1 0 2 0 0 2 2 2 0 1 1 4 4 1 2 3 1 1 0 1 4 5 3 3 0 2 2 2 3 2 2 2 1 2 2 0 4 1 2 3 3 3 1 3 1 1 2 3 7 3 2 2 3 3 0 1 0 1 1 1 2 4 0 1 2 1 0 1 2 1 1 0 6 0 4 1 1 3 1 3 1 1 0 1 2 3 0 2 2 2 1 2 1 0 1 1 1 1 0 2 0 2 0 0 1 0 0 0 1 2 3 1 0 0 3 2 0 0 2 0 1 0 1 2 0 0 4 0 1 0 0 0 1 0 2 1 1 1 4 1 2 0 1 2 0 1 0 0 0 2 1 0 1 1 1 2 2 0 0 4 2 1 5 0 0 0 2 1 0 1 0 3 1 +2 1 2 0 1 2 1 1 2 1 0 0 0 0 0 1 1 0 1 1 1 3 2 1 0 1 0 3 1 0 0 3 0 1 0 0 0 1 0 1 2 2 1 1 1 1 2 1 0 1 0 1 3 0 0 1 2 3 1 0 2 0 1 0 1 0 2 1 8 1 0 2 3 1 2 3 2 1 0 0 3 0 1 6 0 4 1 1 0 2 3 0 1 2 0 1 2 0 2 1 0 1 2 0 1 0 1 1 1 1 0 1 2 1 1 0 0 1 2 1 2 0 2 1 3 3 1 0 3 0 0 4 1 1 2 5 3 1 1 2 1 4 4 0 1 2 2 4 1 1 2 2 0 4 2 2 1 0 0 2 1 1 3 1 4 3 0 6 0 6 0 2 0 3 1 2 1 0 2 2 1 1 2 0 1 1 4 2 1 1 0 0 1 2 1 1 1 0 2 1 2 2 4 0 0 3 0 2 2 2 0 1 1 0 0 3 1 1 2 4 0 0 1 1 1 1 3 2 2 1 2 1 1 0 0 1 2 2 1 1 3 2 0 3 1 0 2 0 0 1 0 1 0 0 2 2 0 1 1 1 1 1 0 0 1 3 2 0 0 1 1 2 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 1 0 3 1 0 2 +0 0 4 1 2 0 2 0 2 1 0 0 1 0 0 1 0 2 1 1 1 0 1 1 2 2 1 0 0 0 0 1 1 4 0 1 1 0 2 0 0 2 0 3 2 1 0 1 0 2 1 0 1 0 1 1 0 4 1 1 1 4 2 1 3 1 0 0 1 1 0 0 1 1 0 2 2 1 2 2 1 0 1 5 2 0 1 5 1 1 1 3 3 1 1 2 2 1 3 3 1 1 4 0 2 3 5 1 3 1 3 1 0 0 1 2 0 1 2 2 0 2 0 1 1 1 2 4 4 2 2 1 0 0 0 2 2 0 3 0 2 2 2 1 1 3 0 1 0 2 1 1 1 1 1 1 3 1 3 2 2 4 1 0 1 2 1 1 3 3 1 5 3 3 0 1 0 0 1 0 1 3 1 1 2 1 1 0 0 1 1 1 3 0 1 1 0 2 0 4 0 2 2 1 1 2 1 0 3 4 0 1 1 1 1 0 1 0 1 0 3 0 1 3 0 0 4 3 0 0 0 1 0 1 2 0 2 2 0 1 1 0 1 3 0 0 1 2 3 2 1 1 0 0 1 1 1 1 0 1 0 0 1 1 2 1 2 0 1 3 3 0 1 3 0 0 1 2 1 1 2 1 3 0 2 0 2 1 0 0 1 1 1 3 0 2 2 2 2 0 +1 2 2 1 3 1 2 0 0 3 1 1 1 1 3 2 1 1 1 1 0 0 0 1 0 2 0 1 0 1 1 2 0 1 1 1 1 0 1 2 1 1 2 0 1 2 2 3 2 1 0 3 3 1 1 3 1 1 2 2 1 0 3 2 1 2 0 5 0 1 2 2 0 0 1 1 0 1 1 2 2 0 2 0 0 1 0 1 1 2 2 2 0 4 2 1 2 1 0 5 2 0 2 1 1 1 1 7 1 3 3 0 0 2 2 1 2 2 1 1 0 0 1 1 2 1 4 1 1 2 1 0 0 3 4 2 3 1 3 2 4 2 1 1 4 0 1 1 2 3 0 2 0 1 2 0 4 3 1 4 4 0 1 2 0 1 2 2 3 0 1 1 3 3 3 0 3 1 2 2 1 1 2 0 1 0 2 3 0 3 1 2 1 2 0 3 2 0 3 2 5 2 0 1 3 1 0 5 2 2 0 2 1 0 2 2 2 0 1 1 0 1 1 2 1 1 3 0 0 0 0 2 0 0 0 1 3 0 0 2 2 1 1 2 2 0 0 1 1 1 2 2 0 1 1 1 1 0 0 1 1 3 0 3 1 0 0 1 1 0 1 1 2 0 3 3 0 1 1 1 1 1 0 0 2 0 1 0 2 2 1 1 1 1 2 0 0 1 2 1 +0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 1 2 0 0 2 2 3 1 0 0 0 1 1 2 0 1 0 0 2 2 3 4 0 1 0 1 2 2 2 2 4 0 2 3 0 2 1 1 2 2 0 1 3 3 1 1 0 1 1 1 1 2 2 0 3 4 3 5 1 2 2 1 0 2 1 1 2 4 1 3 3 6 0 0 4 1 1 1 0 0 1 4 3 1 0 1 5 0 1 0 2 0 2 0 3 3 5 2 1 2 0 5 2 1 3 1 1 1 2 2 1 0 0 3 2 1 1 3 1 2 5 3 2 2 0 1 4 3 0 1 3 2 2 0 0 1 0 1 3 4 2 0 0 0 2 1 0 3 2 2 1 0 3 1 2 1 3 0 0 2 0 3 1 0 3 2 2 3 4 1 0 0 0 1 4 1 1 3 2 0 5 2 0 1 2 4 3 1 2 0 2 3 1 2 2 4 1 3 2 1 2 1 1 2 4 2 0 1 1 0 3 0 2 3 1 1 0 2 1 0 2 2 0 0 1 2 0 6 2 3 1 1 0 0 1 2 1 0 0 0 1 2 2 0 0 0 2 1 1 0 0 0 1 2 0 0 1 1 0 1 0 0 0 2 2 0 2 2 0 1 1 1 1 1 0 1 2 0 +0 0 1 0 5 2 1 1 3 1 1 1 0 0 1 3 1 1 0 3 0 1 1 0 1 2 0 1 1 3 1 0 2 1 0 1 0 1 0 3 4 1 3 1 3 3 1 3 2 2 0 4 1 1 0 0 1 2 0 1 4 1 0 1 0 2 1 2 1 3 4 2 1 1 2 2 3 1 0 0 2 2 4 3 1 1 2 0 2 0 1 0 4 0 3 1 2 2 2 0 0 2 0 3 0 0 0 5 0 2 1 4 2 3 3 2 3 0 1 1 1 1 5 1 0 1 0 0 3 3 0 3 1 2 3 2 0 2 1 1 2 4 4 4 2 3 1 1 5 3 1 4 2 0 0 1 1 1 2 3 1 1 2 1 4 1 2 1 2 3 2 2 0 2 0 0 0 0 1 2 4 2 2 1 2 1 0 1 1 2 1 3 0 2 1 2 1 0 2 0 0 2 1 0 0 1 0 0 2 1 1 1 3 1 2 3 1 2 3 0 0 0 0 2 0 0 0 0 0 3 2 0 1 1 2 0 1 2 0 1 0 0 2 1 1 2 2 0 2 1 3 0 0 1 1 1 2 1 2 5 0 2 4 0 1 1 0 3 0 3 2 1 0 1 1 0 2 0 1 0 1 1 0 2 2 2 0 2 0 0 2 4 2 1 1 0 1 2 0 2 +4 0 1 0 4 1 2 0 1 1 3 2 1 1 2 1 1 1 1 2 1 0 0 0 0 0 0 0 4 1 1 2 3 0 2 2 1 1 0 1 0 1 1 1 0 0 3 0 1 2 4 0 0 1 0 0 2 2 2 2 1 1 1 1 1 4 3 1 1 0 2 3 3 3 1 2 3 0 0 0 1 2 0 1 0 1 3 0 2 1 2 1 1 2 1 0 2 2 3 2 3 1 1 4 1 1 0 2 2 2 0 1 1 1 1 2 1 2 1 0 3 0 2 1 4 4 4 1 0 2 1 1 1 0 5 2 2 1 2 1 2 4 4 0 2 1 1 2 1 2 3 1 2 0 1 2 2 2 1 1 1 0 2 1 3 3 1 0 4 1 1 0 1 3 2 1 3 0 1 0 1 3 3 1 2 2 3 0 0 5 3 1 1 0 2 1 2 1 2 0 3 3 2 0 0 3 1 1 1 1 0 2 1 0 0 5 0 1 0 1 1 1 1 1 0 2 4 2 0 0 5 3 1 2 1 4 4 4 2 1 0 3 1 0 3 1 1 0 1 0 1 0 2 0 0 1 1 2 1 0 1 0 0 0 0 2 0 0 1 1 0 2 2 1 3 2 2 1 2 3 0 3 0 0 0 1 1 1 5 1 0 2 2 1 0 2 0 2 1 1 +0 0 0 0 1 1 1 0 0 1 1 1 0 1 1 0 0 0 3 1 1 2 0 1 0 0 0 0 2 0 0 3 0 1 2 1 0 1 2 1 1 1 0 0 1 2 1 1 1 0 1 2 3 3 1 0 1 0 3 0 5 3 0 1 2 0 1 1 1 1 2 1 3 2 0 1 2 2 3 1 1 1 1 0 3 0 1 2 4 3 0 1 1 3 2 2 4 4 0 0 4 1 1 1 2 2 2 2 1 1 2 2 1 0 1 1 1 1 1 2 0 0 2 0 2 3 2 3 4 1 2 1 1 2 2 0 4 2 2 1 1 1 3 1 1 4 2 1 5 4 1 1 0 1 5 4 1 0 2 3 1 1 1 0 1 2 0 1 3 2 5 2 3 3 2 2 2 0 0 2 0 2 0 0 2 2 1 2 1 3 1 1 2 0 3 3 1 4 3 1 2 1 2 2 3 4 1 0 1 1 0 0 1 2 3 2 1 0 0 0 3 2 1 1 1 1 1 1 4 0 2 1 3 0 1 1 1 0 2 3 4 1 2 1 1 1 3 1 1 3 0 2 0 0 0 1 0 0 1 0 1 0 0 0 2 1 0 1 0 0 1 0 0 1 1 0 3 0 1 2 2 1 0 1 0 3 3 0 1 0 0 1 0 3 1 3 0 0 1 0 +1 3 0 0 3 1 1 2 0 3 0 0 1 0 1 1 3 1 1 1 1 2 2 1 0 0 2 0 2 2 1 0 0 1 1 4 0 1 4 2 1 0 2 1 0 0 1 2 3 3 1 0 1 3 1 0 1 4 2 1 5 2 1 2 0 0 1 1 0 3 3 1 3 0 2 1 1 2 1 1 3 2 1 3 0 1 0 0 1 1 0 1 1 0 1 2 2 1 0 3 2 2 3 0 1 2 5 0 1 2 2 0 2 2 2 1 3 5 3 1 1 1 3 1 1 1 1 0 2 0 2 1 2 0 2 0 1 2 0 2 3 2 1 1 4 1 2 1 1 0 2 2 1 1 1 0 3 1 1 3 1 4 0 1 4 3 2 2 0 0 4 3 1 1 3 2 2 1 1 5 2 3 0 5 1 2 1 0 2 0 1 1 0 1 2 1 1 2 3 1 2 1 2 0 0 0 2 2 6 1 0 1 3 1 3 1 2 2 0 3 0 5 2 5 2 1 2 0 0 0 0 0 2 0 2 3 0 0 1 1 3 2 2 1 0 0 1 0 4 0 0 2 0 2 3 1 0 2 1 1 0 1 4 1 1 0 0 1 1 1 1 1 0 0 2 1 0 2 1 1 2 1 2 1 1 1 1 3 3 1 0 0 1 3 0 1 5 1 1 1 +0 0 3 0 2 0 0 1 0 4 1 3 0 1 0 0 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 2 0 2 0 0 2 1 2 1 3 0 1 1 0 2 1 2 0 2 3 1 2 0 2 3 0 4 3 0 3 0 1 1 1 0 4 0 0 0 1 1 3 1 2 3 0 0 1 3 2 1 1 0 6 2 1 0 1 3 0 3 1 1 2 0 1 2 1 0 2 1 2 1 2 6 1 1 2 2 1 2 2 1 1 0 2 1 1 1 1 0 2 1 2 1 1 0 4 1 2 3 0 4 1 2 5 3 5 1 0 0 3 1 3 2 1 0 0 2 0 1 1 0 1 3 2 0 0 0 3 2 2 5 1 1 2 2 0 4 1 5 2 1 1 1 1 2 1 3 2 2 1 1 0 3 6 0 0 3 2 2 2 2 1 1 1 1 1 2 1 1 1 3 1 2 0 0 2 1 2 1 1 3 1 4 2 0 1 2 2 1 1 0 1 2 2 1 2 0 4 0 0 3 3 1 0 1 3 1 0 0 1 0 4 2 1 0 0 0 2 0 1 1 1 1 1 0 1 2 0 0 0 2 1 3 1 1 2 1 2 0 1 0 0 2 1 1 1 0 0 1 2 1 1 1 3 2 0 1 2 0 1 2 1 2 0 +1 0 2 0 1 0 2 1 2 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 3 0 2 0 0 0 0 0 3 0 2 0 0 1 0 1 2 1 4 1 1 1 1 1 2 0 1 1 1 1 1 2 0 0 1 2 1 4 1 1 2 1 2 3 0 0 0 1 1 2 0 0 2 2 2 2 0 1 1 0 1 1 3 2 0 4 5 1 3 4 2 0 0 1 2 2 2 1 1 3 3 1 1 2 0 0 2 2 0 1 1 0 3 2 2 0 2 3 2 2 3 1 3 1 1 0 0 0 2 2 2 1 1 6 2 1 2 6 1 1 1 0 3 2 4 2 1 2 1 1 2 4 4 2 3 0 3 0 0 2 0 0 0 2 0 2 3 2 1 2 2 0 1 2 2 2 2 1 1 1 2 1 0 2 2 0 2 1 2 0 1 3 2 2 1 5 3 5 2 2 1 2 2 3 3 1 1 0 1 2 2 1 0 1 4 4 0 1 1 1 1 1 2 4 0 4 4 1 2 1 0 1 1 2 1 1 2 2 0 1 2 1 2 1 0 2 3 2 3 1 1 1 1 3 2 0 1 1 0 1 0 2 0 4 1 3 1 3 2 1 1 2 1 0 3 2 2 1 3 1 0 0 0 0 0 1 1 0 1 2 0 1 2 0 0 2 +2 2 3 0 0 1 0 2 0 0 1 1 2 2 1 1 0 1 0 0 2 1 5 0 2 1 3 2 1 1 0 1 0 2 4 1 1 1 0 3 1 2 2 0 0 1 1 1 0 3 0 3 1 1 2 2 3 0 1 2 2 0 1 0 2 0 1 2 1 4 1 3 2 3 0 2 2 1 2 4 2 1 1 0 3 0 2 1 2 2 1 1 0 1 2 0 0 1 2 1 1 1 2 1 1 0 5 0 2 2 1 2 0 2 0 0 1 2 2 3 0 3 1 1 1 0 4 1 0 2 1 3 1 2 1 2 0 1 2 2 1 0 1 3 1 2 0 4 1 1 1 0 0 1 3 2 1 1 2 1 1 0 1 3 2 3 0 2 2 1 0 0 2 2 4 1 1 4 0 1 1 3 1 6 0 2 3 2 3 1 2 1 2 2 1 3 0 1 1 2 2 0 2 1 1 4 1 1 2 1 1 3 2 4 2 2 2 0 1 2 0 1 1 1 0 1 0 0 0 3 0 1 1 1 1 0 2 0 2 1 3 0 2 0 1 1 1 1 4 2 0 0 2 2 3 0 1 3 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 3 0 2 0 1 1 1 1 2 0 2 1 0 2 0 2 1 2 0 4 +0 0 2 1 0 1 1 3 0 0 0 0 2 1 2 1 0 2 0 2 1 1 3 0 1 5 1 1 2 0 1 4 0 2 0 0 1 0 0 2 0 1 1 1 2 1 0 2 1 2 0 0 3 4 3 0 2 2 2 1 1 0 1 0 0 0 2 2 0 2 0 2 2 2 1 1 0 2 1 1 2 0 0 1 2 0 2 0 2 3 2 0 2 1 0 1 2 2 1 0 1 3 0 0 3 4 0 2 0 4 0 1 2 0 2 1 1 0 4 2 5 1 3 3 2 0 1 1 2 0 0 1 1 1 1 1 1 3 2 1 2 2 1 2 3 1 3 2 0 1 1 0 1 0 2 3 1 1 1 3 3 1 3 2 2 0 2 4 1 7 1 0 1 1 1 2 3 0 4 1 4 1 1 2 0 1 0 2 2 3 2 0 2 0 1 2 2 1 0 1 1 2 1 0 4 0 3 2 2 1 3 1 0 1 1 2 2 3 0 1 2 0 2 1 2 1 0 2 1 0 1 2 3 2 1 1 0 0 1 0 2 4 3 2 2 5 4 1 1 1 1 0 1 0 1 2 2 1 1 1 2 1 0 2 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 0 2 0 0 0 1 1 1 3 1 0 0 0 1 0 2 2 +1 0 2 1 2 0 4 2 1 0 3 1 3 0 0 1 2 1 0 0 2 0 3 1 1 1 0 1 0 0 0 0 2 2 0 1 1 2 0 2 1 2 3 0 1 0 0 1 1 1 1 1 0 2 3 1 5 0 1 1 1 1 1 1 2 1 0 1 1 1 3 2 0 2 2 2 0 0 0 2 2 3 1 2 2 1 0 0 0 0 3 2 1 2 4 1 3 1 2 3 3 1 0 3 1 0 3 1 3 0 3 2 1 2 1 1 5 1 0 1 2 1 0 3 3 3 2 0 2 2 1 2 2 5 1 3 1 0 2 2 3 1 1 2 1 3 2 0 1 1 1 0 2 1 1 2 1 1 0 1 0 2 0 1 1 1 1 3 0 1 2 1 1 2 1 2 3 1 2 0 0 1 1 3 2 1 4 2 2 2 2 1 3 2 1 3 0 3 0 0 7 1 3 0 1 0 3 1 3 3 1 2 2 2 3 0 0 0 1 1 2 1 2 1 0 2 1 1 1 1 0 1 0 0 1 0 3 1 1 0 2 1 0 0 3 1 1 2 3 2 1 1 1 0 1 1 2 0 0 2 2 0 0 0 2 2 1 0 0 3 0 0 2 1 0 0 0 1 0 0 2 1 0 2 0 2 1 2 0 1 2 1 1 1 1 2 1 1 0 0 +1 2 1 1 5 0 0 1 1 1 1 2 0 3 1 0 1 1 1 0 1 0 0 1 2 1 2 1 2 0 1 3 1 1 1 2 0 3 0 0 0 2 1 1 0 2 2 1 1 1 0 2 1 1 0 1 1 3 0 1 1 2 1 0 2 3 1 1 1 2 0 0 1 2 4 1 2 2 0 2 1 2 0 3 1 0 0 3 3 0 2 1 4 1 0 0 0 1 1 4 1 6 2 1 1 1 0 2 1 0 2 0 3 0 0 2 1 2 1 0 2 3 4 2 3 2 1 3 2 0 3 1 0 2 2 1 1 2 2 4 4 3 2 0 4 0 1 2 0 0 0 1 1 2 6 2 5 1 3 3 4 0 4 3 0 3 1 4 1 3 4 1 2 0 3 1 0 1 2 1 1 0 3 2 1 1 0 3 3 5 0 3 2 2 0 1 1 1 0 1 1 1 2 0 1 2 3 1 4 3 2 0 1 2 3 1 1 0 4 0 1 1 3 3 3 1 2 3 1 1 1 1 2 1 5 2 1 0 1 1 1 1 2 0 1 2 3 0 2 1 0 0 1 0 1 2 1 1 0 3 0 2 0 2 0 1 1 2 2 0 1 1 1 1 0 1 4 0 1 0 1 0 0 2 0 1 3 1 3 1 1 3 1 1 2 2 1 1 0 2 +1 1 2 1 1 1 0 1 2 2 0 2 0 1 1 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1 2 0 1 1 1 1 3 1 2 1 3 0 2 0 1 2 2 1 1 0 2 2 2 1 0 0 1 2 0 1 0 0 0 4 6 1 0 2 2 0 2 0 1 2 3 0 1 1 1 1 1 0 1 2 3 1 3 3 4 3 1 3 1 1 1 1 3 1 1 3 1 3 1 3 4 2 1 0 1 1 0 4 0 1 3 0 3 0 1 1 1 2 2 3 2 2 4 0 1 2 2 0 2 2 1 1 3 2 0 1 1 1 1 0 0 2 1 0 4 4 3 0 6 3 2 3 2 1 2 0 1 1 2 1 0 2 1 3 1 1 1 1 0 2 3 2 2 0 1 0 2 0 1 4 2 2 3 1 2 1 0 1 2 1 0 1 2 4 2 1 0 1 2 3 0 1 2 1 4 0 3 2 2 2 3 0 3 5 1 2 0 0 3 1 1 1 1 1 1 1 0 1 0 1 1 2 0 2 1 2 0 1 1 1 4 1 1 3 0 2 3 1 1 2 2 2 1 2 1 1 1 3 2 2 2 1 0 1 0 0 1 2 1 1 0 1 2 0 +1 2 0 0 1 2 0 1 1 0 2 1 0 1 1 2 1 0 1 0 1 1 1 0 0 3 2 0 2 2 1 2 1 0 0 1 5 0 2 5 3 0 2 0 2 1 1 2 1 3 0 2 1 1 3 0 3 0 1 1 1 1 1 4 0 2 1 1 0 2 3 1 2 2 0 1 0 3 0 4 3 1 1 1 2 2 0 1 2 1 0 0 1 1 4 2 2 4 2 1 1 1 2 2 4 1 1 0 0 2 1 5 2 1 2 1 2 2 1 2 1 1 0 2 1 2 0 0 3 4 1 0 0 2 2 3 0 2 3 1 1 4 2 3 2 3 0 2 1 2 4 2 2 6 2 3 1 1 1 0 4 3 0 1 2 0 2 1 0 3 0 3 1 3 3 2 2 0 2 0 2 3 2 0 7 1 1 1 1 1 4 2 2 0 2 0 1 2 5 1 2 2 3 1 3 0 0 0 4 1 2 1 1 0 1 3 1 0 2 3 2 1 3 0 0 4 3 4 0 0 2 3 2 2 1 1 2 3 0 0 2 1 1 0 0 1 0 6 0 1 0 1 0 1 1 0 1 1 0 1 2 3 0 2 3 1 2 2 0 0 2 1 2 1 1 1 1 1 4 0 1 2 2 1 1 2 0 2 1 1 0 0 1 1 1 0 3 0 0 0 +2 1 0 1 1 0 2 2 0 0 4 1 2 1 0 1 1 0 1 2 1 4 2 1 1 0 0 5 0 1 0 1 0 1 0 0 2 0 1 0 2 1 1 0 1 0 2 0 0 1 0 0 3 0 2 1 0 1 1 2 0 2 2 2 1 2 0 0 0 0 2 1 0 0 1 2 1 3 1 2 3 4 0 4 4 2 1 3 1 2 1 0 1 2 2 0 0 1 4 0 1 2 1 1 0 3 2 1 2 4 0 1 4 1 3 2 3 2 0 1 1 1 1 4 2 2 0 1 2 2 5 1 1 1 2 1 3 0 0 3 0 0 0 0 3 0 2 1 2 1 3 1 0 0 0 4 1 2 0 4 1 1 4 4 2 0 1 3 1 1 0 2 0 2 2 4 1 3 2 1 2 1 5 1 1 3 0 2 6 1 0 1 1 3 0 1 0 3 0 2 2 2 2 2 2 1 0 1 3 5 0 2 1 1 3 0 0 4 1 3 0 2 3 2 3 3 3 1 1 0 0 0 0 0 0 0 0 2 1 1 1 1 0 2 1 0 2 4 2 1 1 1 0 0 3 1 0 0 5 1 2 3 1 1 1 3 0 0 1 1 0 2 1 0 2 0 4 1 0 4 3 0 3 2 1 2 3 3 1 0 0 1 0 1 1 0 0 0 1 1 +0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 2 0 0 1 1 0 1 1 1 0 2 1 0 1 0 1 2 2 0 1 1 1 0 1 1 0 5 3 0 0 0 1 0 0 1 0 0 0 0 2 1 3 1 1 2 2 2 1 1 1 2 1 0 0 0 1 1 3 4 1 1 2 1 2 0 1 0 1 3 0 3 1 2 3 2 2 1 1 3 1 1 3 2 2 2 1 4 1 1 1 1 3 1 2 3 2 0 4 2 1 3 2 1 3 2 0 6 3 3 3 1 4 1 0 1 1 1 6 2 0 0 1 3 3 1 3 0 3 1 3 0 1 1 0 1 2 2 3 2 0 0 1 1 2 0 1 0 1 1 6 3 1 2 3 2 0 1 1 1 4 2 3 3 1 3 2 1 1 1 0 1 1 0 0 1 1 1 4 1 5 1 1 4 0 0 0 2 2 2 2 0 2 1 1 4 3 3 2 2 2 2 2 3 1 0 0 1 2 0 1 2 1 1 2 0 0 1 0 1 2 3 1 2 2 0 0 0 1 2 0 1 0 0 2 0 0 2 2 1 0 1 1 0 0 1 2 1 1 1 0 2 0 0 0 2 0 1 2 0 2 1 1 2 0 2 0 0 4 1 1 1 0 2 1 1 1 1 0 1 1 0 1 1 1 1 +0 1 2 0 0 0 0 1 0 0 0 0 1 1 1 1 2 2 0 2 0 0 1 0 2 1 1 1 0 1 0 0 0 0 1 2 0 0 3 3 0 0 0 0 2 3 2 1 4 2 0 0 4 2 0 1 1 1 1 1 0 0 0 1 0 1 1 2 2 0 2 2 3 1 2 2 4 1 0 2 3 0 1 1 1 1 2 2 0 1 1 2 2 1 4 4 0 0 1 7 1 3 0 1 0 1 2 0 1 3 3 1 6 1 2 0 1 1 2 2 1 0 3 1 2 2 1 2 0 3 1 3 1 2 1 2 0 0 3 0 4 0 1 1 4 4 5 0 2 0 4 2 3 2 1 2 1 0 1 0 1 0 1 0 0 0 2 3 2 1 1 0 1 1 0 0 2 2 1 1 2 2 0 1 4 0 0 2 1 1 0 2 1 0 2 0 0 2 1 1 3 0 1 1 0 3 0 0 0 3 2 1 0 2 1 2 1 1 1 1 1 0 1 1 0 4 1 1 1 0 2 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 4 3 1 3 1 2 1 0 1 3 1 1 4 0 1 1 0 2 0 0 0 3 1 0 5 0 2 0 0 1 0 0 0 1 3 0 1 2 0 0 0 0 0 0 0 2 3 0 0 1 +0 2 0 2 4 1 1 2 1 2 0 0 0 0 2 0 0 0 1 0 0 1 0 1 2 0 0 2 1 2 0 0 2 2 1 1 0 0 0 2 2 2 2 3 1 2 0 1 2 0 1 0 0 2 2 2 2 3 1 3 0 1 0 1 1 1 1 2 0 2 1 1 1 3 4 1 1 1 1 1 4 0 1 0 3 2 1 2 0 0 0 4 3 2 2 1 0 4 0 5 0 1 0 3 1 3 4 3 1 2 1 3 1 1 2 2 0 1 1 1 2 1 1 2 3 1 2 1 4 1 1 1 1 0 1 3 2 2 0 2 3 1 2 1 1 1 5 1 3 1 1 3 2 2 0 0 0 1 0 0 0 2 4 2 2 0 2 2 0 4 2 0 1 2 1 1 1 2 2 3 3 2 1 0 2 1 0 0 0 2 1 0 2 0 1 1 0 1 1 4 0 0 3 0 2 2 0 3 0 2 1 0 0 3 0 2 3 1 3 0 0 0 0 2 1 0 2 4 2 1 0 1 2 2 1 2 1 2 4 5 0 2 1 1 0 0 0 1 2 1 0 0 1 1 0 1 2 1 0 0 1 1 1 0 0 2 1 2 0 0 1 3 0 3 0 3 0 0 3 1 0 1 0 2 2 1 1 1 1 2 1 2 1 1 1 1 0 1 0 0 +0 4 1 0 0 1 0 1 2 2 2 0 0 1 2 3 1 1 0 0 0 0 0 1 1 0 1 0 0 2 1 2 2 1 2 2 3 1 0 2 3 3 1 1 2 2 0 2 1 1 3 3 3 2 1 0 5 1 0 1 2 2 1 1 2 2 2 0 1 2 2 2 0 0 3 0 0 1 1 1 1 0 3 1 1 0 0 1 1 4 1 2 1 1 2 5 2 3 6 3 1 4 2 1 3 0 3 1 2 0 1 2 2 1 3 1 1 2 2 1 0 0 3 1 1 0 5 0 1 1 1 1 0 0 2 2 2 0 0 0 2 2 3 0 2 1 4 1 0 2 2 1 2 0 2 0 2 2 1 5 1 6 1 2 2 5 1 0 4 5 1 6 1 1 1 1 0 0 1 4 1 2 2 2 0 1 3 3 1 2 0 2 2 2 2 1 1 0 1 0 1 0 0 1 2 1 3 0 2 0 1 3 2 1 0 2 1 2 1 2 2 2 0 1 3 1 1 2 2 1 0 5 1 0 2 0 1 1 1 0 1 1 1 1 2 0 0 1 2 1 0 1 3 1 5 2 0 2 1 1 3 0 0 0 0 0 1 1 2 2 3 0 0 3 2 1 1 1 2 2 0 0 0 1 1 1 0 1 0 2 0 1 0 0 3 1 2 0 1 2 +0 1 0 2 3 1 1 1 1 0 1 0 1 0 0 0 3 1 3 1 2 0 1 1 2 2 0 0 0 1 0 1 1 1 0 1 2 3 1 0 1 0 0 3 1 1 1 0 0 1 2 1 3 0 1 0 1 0 0 1 3 1 2 1 1 3 0 2 3 2 0 2 1 1 2 3 1 3 3 1 1 1 2 2 2 0 3 1 2 1 0 1 2 2 2 1 0 2 2 0 0 1 1 2 1 2 2 0 2 1 0 3 0 1 1 2 3 0 3 0 1 2 1 5 4 4 1 5 0 1 1 3 1 5 1 2 3 2 1 1 0 0 3 3 0 3 4 1 3 1 2 0 2 3 0 0 0 3 0 0 2 1 1 1 3 2 5 1 1 1 1 1 1 2 0 2 0 2 0 0 1 3 1 1 0 2 2 0 0 2 1 1 1 0 0 5 1 1 2 0 4 2 2 0 0 2 0 4 0 0 0 1 2 0 1 1 1 0 0 0 1 1 0 2 1 1 1 2 0 3 3 1 0 0 0 4 1 2 0 2 1 3 0 2 0 1 0 1 0 1 2 1 1 0 1 1 0 0 2 0 1 0 2 0 1 1 2 0 1 1 3 1 2 1 2 0 0 2 2 2 0 2 2 0 1 1 0 2 0 1 1 0 2 1 0 0 0 0 0 0 +0 1 0 0 2 1 0 0 0 1 2 2 2 1 0 0 0 3 2 0 3 1 0 0 1 0 1 0 2 2 2 0 1 0 3 3 1 0 0 1 2 2 0 1 0 2 0 2 1 3 2 3 3 2 0 0 3 0 0 1 2 0 2 2 2 3 2 1 2 3 1 4 2 1 0 2 4 1 2 2 4 0 1 2 2 0 1 1 1 1 0 1 1 0 2 0 2 3 2 1 2 0 2 0 2 2 2 0 1 4 1 2 3 0 1 2 4 2 1 0 2 3 1 3 1 4 2 0 3 2 2 1 2 0 0 1 2 1 2 1 3 2 2 3 1 0 3 2 0 1 0 1 2 2 2 0 0 2 1 0 2 1 2 1 0 2 0 0 0 1 1 1 0 2 1 2 2 1 1 2 1 3 5 0 0 1 0 1 1 2 3 0 3 1 2 1 1 0 1 2 0 0 1 3 2 0 0 1 2 0 1 0 1 3 1 0 0 2 2 0 3 2 0 1 0 0 2 1 3 2 0 0 1 2 2 2 4 0 1 1 1 0 1 2 0 0 0 1 2 0 2 1 0 0 2 2 2 0 1 1 1 0 0 1 0 0 1 3 4 3 4 2 2 0 0 0 1 0 0 4 2 1 1 2 1 2 2 2 0 2 1 1 0 0 0 2 2 2 2 1 +1 2 1 1 0 0 2 2 0 1 0 0 2 1 1 1 1 2 0 2 1 1 0 1 1 1 1 0 2 1 0 0 1 1 3 3 1 2 1 1 1 1 0 2 1 0 0 0 0 3 0 2 2 2 1 0 1 1 1 0 2 0 1 1 1 2 1 0 0 3 2 1 1 0 5 1 0 1 1 1 0 0 0 1 3 1 0 0 2 0 1 4 1 2 1 3 1 2 3 3 2 0 3 1 3 1 2 3 2 1 1 4 2 2 1 3 2 2 3 0 2 2 1 2 2 2 3 2 1 0 1 0 0 0 1 2 1 1 0 2 0 4 4 3 2 1 0 1 1 0 3 1 5 3 3 1 1 2 1 1 1 1 0 1 2 1 2 3 3 0 3 1 3 2 2 1 0 2 1 0 1 4 1 3 3 2 2 2 0 1 1 1 1 2 1 1 0 1 0 3 3 3 2 2 0 3 4 2 3 0 2 1 0 1 2 1 1 1 1 3 3 2 2 0 2 1 1 1 1 3 1 4 1 2 0 1 0 1 1 1 0 1 2 1 2 1 3 2 2 1 3 2 2 2 1 2 0 0 3 2 1 1 0 2 2 0 2 1 0 2 0 0 0 1 0 2 2 2 1 2 0 0 1 1 2 1 0 2 0 0 0 2 0 1 2 0 3 1 1 0 +3 0 1 1 0 1 2 1 1 2 2 0 0 3 1 0 0 3 0 0 2 1 2 0 0 3 2 1 2 0 1 0 1 1 0 3 1 2 2 2 1 2 1 2 1 0 0 1 0 0 0 1 1 1 1 2 3 0 0 0 1 1 1 1 2 2 1 2 1 1 1 0 2 2 2 1 3 1 1 1 2 2 2 1 2 0 2 1 0 0 2 0 1 0 1 4 3 0 1 1 2 3 4 2 4 3 2 0 1 1 2 3 2 2 3 4 3 2 2 3 0 1 2 1 3 1 1 2 1 3 1 1 3 3 2 0 0 2 0 0 2 0 1 2 1 1 2 1 1 3 1 1 1 0 3 3 2 0 2 0 3 3 2 2 3 3 0 3 4 2 0 4 2 3 2 1 1 2 3 2 4 2 0 1 2 1 0 0 2 2 0 2 1 4 1 1 1 0 0 2 3 0 0 0 1 1 1 1 1 1 0 0 2 1 0 1 3 2 1 1 2 0 1 1 3 1 2 1 0 0 1 1 3 1 2 2 2 0 3 0 3 0 3 1 2 0 1 2 1 2 2 6 0 0 1 0 1 0 0 5 7 0 2 1 3 1 1 3 1 2 1 3 3 0 0 0 1 2 2 1 1 2 0 1 0 0 5 0 0 0 2 3 0 1 2 0 0 1 1 0 +1 0 1 2 1 2 3 1 0 2 0 1 2 0 0 1 2 1 1 0 3 1 2 3 0 0 1 0 0 1 2 2 1 2 1 0 1 3 2 1 0 1 1 1 0 2 1 0 2 1 0 1 0 2 2 0 0 2 2 2 1 1 1 2 1 1 2 1 0 1 0 1 1 0 0 1 3 1 2 0 1 3 1 3 1 2 1 1 3 2 2 1 2 1 4 1 2 0 3 2 2 1 2 2 0 0 1 2 2 4 0 1 1 3 1 2 0 4 1 2 0 2 0 5 1 2 2 0 2 1 2 1 2 2 1 1 1 0 1 2 1 1 0 1 1 0 4 1 2 5 4 1 3 4 3 3 3 1 1 1 1 3 4 1 2 1 4 0 3 2 2 3 0 2 1 0 4 2 1 1 2 2 3 1 1 4 0 1 1 0 3 1 1 0 3 1 2 4 3 0 1 2 1 2 0 3 1 3 1 3 0 1 1 1 0 2 0 3 1 1 0 1 1 2 2 3 1 1 0 3 0 0 0 1 2 0 4 1 2 1 1 0 1 0 3 1 0 1 3 1 1 0 1 1 2 1 0 2 0 4 1 1 2 0 0 3 1 1 0 2 1 1 2 0 0 0 0 0 0 2 1 0 0 1 0 1 2 0 0 2 0 4 1 1 2 0 0 2 0 1 +1 0 4 2 0 1 2 1 1 0 0 0 3 3 1 0 1 0 0 1 1 1 0 1 1 0 0 1 2 1 4 1 1 0 1 2 0 0 0 1 1 1 0 1 3 3 2 2 2 1 0 1 0 0 0 2 1 0 0 2 1 1 2 3 2 1 1 0 2 0 0 2 2 4 2 2 3 2 1 1 1 1 0 2 2 1 0 3 2 4 2 0 2 0 4 2 1 0 5 3 3 1 1 2 3 1 3 2 1 2 2 0 2 0 0 4 1 3 1 1 2 2 2 2 0 0 0 1 1 2 1 1 2 2 2 0 1 2 1 1 1 2 3 0 1 1 1 2 4 1 1 1 0 1 4 2 1 1 1 2 3 2 2 2 1 0 2 2 0 1 2 2 2 1 0 5 0 2 0 1 3 1 0 3 3 1 4 3 1 1 3 2 1 1 0 4 2 2 1 3 1 6 2 0 0 2 0 0 2 2 2 3 0 3 1 2 2 0 6 1 1 2 1 0 1 1 1 2 4 1 0 2 1 2 1 1 0 1 1 1 2 1 2 0 2 3 1 0 2 2 1 1 1 0 0 0 1 1 1 2 3 0 0 4 2 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 2 1 0 1 1 4 1 3 1 2 2 1 2 0 0 1 1 2 0 0 +1 0 0 3 0 1 2 0 1 1 2 3 0 0 0 0 3 2 1 2 1 1 0 0 1 2 0 1 1 1 1 0 0 1 1 1 0 2 0 2 0 2 1 0 3 4 0 0 1 1 1 0 2 1 3 1 4 1 0 1 3 1 1 2 0 1 0 1 3 1 1 0 1 0 1 1 1 0 1 2 1 2 4 2 4 4 0 1 1 1 2 1 2 3 1 3 3 1 2 2 3 2 1 1 1 1 1 1 0 2 3 0 1 2 2 0 1 0 2 2 2 2 2 1 1 0 1 1 0 1 2 1 2 0 1 2 1 1 0 2 1 1 1 2 2 0 2 3 0 2 1 3 1 2 3 1 2 5 4 0 1 2 1 0 0 0 1 1 0 2 2 0 2 2 1 5 1 1 1 0 0 2 1 0 1 4 1 1 4 4 2 2 1 0 3 1 0 5 0 1 1 2 2 6 0 2 1 1 0 2 2 1 0 2 1 3 1 1 1 1 1 1 0 1 3 1 4 1 1 2 2 0 1 1 0 1 2 0 1 0 1 1 2 1 1 3 2 1 0 2 0 2 0 0 1 1 1 1 1 0 2 1 1 1 0 1 1 0 3 1 0 1 0 1 2 0 4 0 1 0 0 2 1 1 2 2 2 0 0 0 0 4 1 2 1 0 1 2 1 0 +1 2 0 3 1 2 1 1 0 0 0 1 0 4 1 0 1 1 1 1 0 2 1 1 3 0 4 1 0 0 1 0 0 3 3 1 2 0 2 0 0 0 6 2 0 1 1 0 0 1 3 1 2 1 2 3 3 1 0 0 4 3 0 1 2 0 2 1 1 0 0 1 0 4 1 2 1 1 0 2 0 2 0 1 2 1 1 1 1 1 4 2 0 4 2 0 3 3 3 1 3 2 0 1 3 2 3 0 1 1 2 0 2 1 2 3 1 2 0 0 2 1 1 1 2 1 0 3 2 7 5 1 1 0 0 2 3 3 1 1 3 1 2 3 2 2 2 2 0 3 2 0 1 2 2 1 2 0 2 3 2 0 1 1 1 2 3 2 0 1 1 1 1 0 1 1 3 3 1 0 1 2 0 1 1 2 3 3 1 1 1 2 0 1 3 0 0 0 4 4 1 0 4 1 2 3 2 0 2 2 0 0 0 1 0 1 0 1 0 1 0 1 1 2 1 1 3 1 1 1 3 0 0 0 2 4 0 0 0 0 1 3 2 0 2 0 1 1 1 0 1 0 4 1 3 1 0 1 1 1 1 0 1 0 0 0 0 2 1 0 0 0 0 1 0 3 3 1 1 0 0 0 0 2 1 2 0 0 1 1 1 0 1 1 1 2 1 0 0 0 +0 2 3 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 1 1 1 2 0 1 0 0 3 1 0 0 1 1 2 3 2 1 0 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 2 1 2 2 0 1 0 2 1 0 2 1 1 2 1 0 2 0 0 2 2 0 4 0 0 0 0 1 1 3 0 2 2 0 1 0 2 1 2 1 1 1 3 1 1 1 3 2 2 3 3 1 2 2 2 2 0 0 1 0 0 0 0 2 2 4 2 4 2 2 2 3 1 3 0 2 2 1 1 2 1 1 2 1 1 1 2 2 0 4 3 2 1 3 2 0 1 1 1 0 2 1 1 0 1 1 2 1 0 0 2 2 0 0 0 3 1 0 0 1 2 1 0 1 1 2 6 1 1 3 0 3 3 3 1 2 2 1 2 3 4 2 0 0 6 1 1 0 1 1 0 2 1 1 0 0 2 4 3 2 1 0 1 1 3 2 1 3 0 0 0 2 1 4 0 0 1 2 1 2 0 1 4 0 2 1 0 0 3 1 0 2 2 1 0 1 0 0 0 0 2 0 0 1 3 2 0 0 0 3 1 0 2 0 1 1 0 2 0 0 1 1 2 1 0 3 0 1 1 2 1 1 1 1 0 2 3 0 0 1 1 1 1 0 +1 1 1 1 1 1 0 0 1 1 0 2 0 0 1 1 3 4 1 2 4 1 0 1 0 0 2 1 0 1 0 2 0 0 0 0 0 2 1 3 1 0 0 0 0 2 2 0 0 3 1 1 0 3 1 2 2 2 0 1 0 1 2 1 2 1 1 0 2 1 2 1 1 1 3 2 1 0 3 3 0 2 0 3 1 1 2 1 1 3 1 0 1 0 0 3 4 0 3 2 3 0 0 2 0 0 1 0 0 5 0 2 3 4 1 2 0 1 2 2 1 4 2 2 2 0 0 2 1 1 0 2 2 2 3 2 1 2 3 1 3 3 5 3 0 2 2 4 0 2 3 1 2 0 2 2 3 3 2 2 5 0 1 1 2 2 1 3 3 2 1 1 1 0 1 1 3 0 2 2 2 2 4 2 2 2 2 1 0 3 0 1 1 1 1 2 2 5 0 1 0 2 1 2 2 2 1 0 0 0 2 0 0 2 1 0 1 0 2 1 4 1 1 2 2 3 1 2 2 2 2 0 1 2 2 2 0 1 1 0 0 3 2 1 0 0 0 1 1 0 0 2 1 1 2 2 1 2 1 0 0 0 0 1 1 1 1 0 1 0 0 2 0 0 3 0 0 3 0 0 2 0 0 0 1 0 0 0 0 0 2 1 4 1 2 0 1 1 1 2 +0 1 0 0 2 1 1 1 2 1 1 1 0 0 0 2 2 3 1 1 3 1 2 0 0 3 0 0 1 1 2 1 3 1 1 0 0 1 1 0 1 0 1 0 2 0 0 1 1 0 0 0 2 0 0 2 1 0 0 2 0 4 1 1 0 2 1 3 0 4 0 0 1 4 0 0 2 3 0 2 2 1 2 0 0 1 1 2 0 1 1 3 1 1 0 1 2 2 2 3 2 0 3 1 0 1 1 1 2 1 3 3 1 0 2 3 1 2 2 0 1 1 1 2 6 1 0 3 4 1 1 1 1 0 3 2 1 2 4 1 2 1 1 0 0 1 1 8 2 2 0 2 2 3 0 1 3 4 1 3 0 3 0 1 2 0 2 1 1 3 1 2 3 3 0 1 2 3 1 2 2 1 3 1 5 1 0 0 1 0 2 1 1 2 3 0 0 2 1 1 0 0 4 0 3 1 2 0 1 2 0 0 0 1 1 1 0 1 1 0 3 1 1 1 2 0 1 2 1 1 2 1 4 1 1 1 1 2 2 0 1 1 2 1 1 1 0 2 2 0 0 3 2 0 1 0 1 2 1 0 1 0 1 2 2 1 0 1 1 1 1 1 0 1 0 1 0 1 2 0 2 1 1 0 0 1 1 3 1 1 0 0 0 1 0 2 0 0 1 3 +2 1 1 3 0 0 0 0 0 2 1 1 0 1 0 1 1 0 1 1 1 0 1 1 1 1 4 1 3 1 1 2 3 2 0 0 0 1 1 0 0 0 0 1 2 0 5 0 2 2 2 1 0 1 1 0 0 2 1 6 0 0 0 2 3 0 0 1 0 2 0 1 3 3 1 0 2 0 1 1 1 2 1 3 2 3 3 1 0 1 0 1 3 5 1 2 3 1 0 1 1 1 0 0 4 0 0 1 0 0 1 0 2 1 2 2 2 0 2 1 3 0 2 2 4 5 3 2 0 1 1 0 1 2 3 4 8 3 2 1 1 2 0 0 1 1 3 0 1 1 0 0 2 0 1 2 2 1 3 1 2 2 3 4 3 2 1 0 0 2 1 2 2 0 0 3 2 2 2 1 1 2 0 4 3 1 2 3 4 1 1 3 1 3 3 1 2 0 1 2 3 2 1 1 3 1 2 3 1 3 0 1 2 0 1 0 4 3 3 0 1 0 1 2 1 3 0 3 0 0 1 2 2 0 3 2 1 0 0 1 3 0 0 2 3 0 1 0 0 0 0 2 4 3 0 1 1 2 1 0 0 1 1 2 1 1 0 2 1 2 2 1 2 4 1 1 1 0 0 3 1 0 1 1 2 3 0 1 0 0 0 1 0 0 1 2 1 0 0 1 +1 3 1 1 1 0 3 1 2 0 2 0 1 1 3 1 0 2 1 1 2 0 2 2 1 2 0 1 1 2 2 1 2 0 2 1 1 1 1 0 0 0 0 0 2 1 0 2 1 1 0 0 1 2 2 2 1 1 1 0 2 2 3 1 1 1 1 2 0 2 2 0 2 0 1 2 2 0 1 1 1 3 0 1 1 1 1 1 0 1 2 1 0 2 1 2 2 0 0 0 1 1 3 2 2 1 3 2 2 1 2 1 2 4 1 0 1 3 1 1 2 1 3 0 3 1 1 1 1 0 2 1 1 4 2 0 1 2 1 0 3 1 2 0 0 1 1 3 1 2 1 2 2 2 1 0 3 0 4 2 2 0 1 1 1 2 0 2 0 3 2 5 1 2 1 2 0 1 2 0 1 5 2 0 1 1 2 1 2 4 3 1 3 1 0 3 3 2 1 2 0 1 0 2 0 1 1 0 0 4 2 1 1 1 0 1 2 1 0 0 0 0 2 3 1 0 1 2 1 0 1 0 1 1 0 0 0 2 0 0 2 1 1 3 1 1 1 3 1 1 0 0 1 3 0 0 1 2 1 2 0 0 0 0 0 1 1 2 2 1 1 2 0 0 2 0 2 1 1 3 0 1 1 2 1 0 2 1 0 2 2 0 2 2 0 1 1 1 3 2 +1 2 1 1 0 1 0 1 3 0 0 0 0 4 0 1 0 2 2 5 1 1 2 2 0 0 1 3 0 1 2 3 0 3 1 1 2 3 1 1 1 1 0 3 1 2 2 0 0 1 0 0 0 3 3 1 1 0 0 2 0 3 1 1 0 1 1 0 1 1 1 1 0 1 1 3 0 0 1 1 2 0 1 0 3 4 2 0 1 1 3 2 3 1 0 0 1 0 1 0 0 1 0 3 2 2 1 3 0 2 2 0 1 0 1 2 0 1 1 2 2 1 4 1 1 0 1 0 3 1 3 1 0 0 6 3 1 0 0 1 2 4 3 1 0 2 2 3 6 0 1 1 2 1 2 3 2 0 2 0 2 4 3 0 3 2 0 1 3 1 2 2 0 2 0 0 3 1 3 2 0 0 1 4 0 0 2 3 1 1 0 6 1 3 1 3 1 0 5 1 2 0 2 2 3 2 1 0 0 2 1 1 1 3 2 2 2 1 1 2 2 0 1 1 1 0 1 1 3 1 2 2 1 1 1 1 2 2 1 2 4 2 0 1 3 0 2 1 1 0 1 2 1 0 2 2 1 0 2 1 1 1 2 1 0 3 0 0 1 0 1 1 0 1 1 1 1 2 2 0 0 1 1 2 1 0 0 1 2 2 1 2 1 4 2 1 0 0 1 0 +1 1 0 0 2 0 0 1 1 1 1 2 2 1 2 1 1 2 0 0 1 0 0 0 1 0 0 2 2 0 0 1 0 1 1 4 2 1 0 0 1 0 0 0 0 1 1 2 1 1 0 4 2 2 1 0 1 2 2 3 0 1 2 0 0 1 0 1 1 3 1 0 0 0 2 4 2 3 2 3 0 2 2 1 3 1 4 0 1 1 1 0 2 2 3 1 1 0 2 0 2 1 1 2 2 2 0 0 3 3 0 1 1 3 0 0 2 0 2 1 2 2 1 1 3 4 1 0 5 2 1 1 5 1 2 1 4 1 0 2 2 3 2 1 2 1 3 1 0 0 0 2 0 1 4 1 4 5 1 0 1 1 2 0 1 2 2 1 4 2 0 1 0 0 2 1 5 3 1 3 1 0 3 3 3 1 2 2 0 2 2 0 0 2 1 3 3 2 1 0 0 0 1 0 2 2 1 1 2 2 1 0 3 3 1 3 0 0 1 0 1 0 0 2 0 1 0 0 1 2 1 1 0 0 1 2 0 1 0 0 1 1 4 1 0 2 1 2 1 0 2 2 2 0 1 2 2 4 0 1 0 2 3 0 1 4 0 3 0 1 2 1 1 0 2 1 1 2 0 0 0 1 1 0 0 1 2 2 2 0 0 1 3 0 0 1 3 0 0 3 +0 2 1 1 0 0 1 1 0 1 0 0 4 2 0 0 0 0 0 2 0 1 2 1 3 2 2 3 0 0 1 0 0 1 0 1 1 1 2 0 2 1 1 0 2 0 1 0 1 2 2 1 1 3 0 1 0 1 0 0 0 1 1 2 2 0 1 3 2 0 1 1 3 3 1 1 2 2 1 0 2 0 3 0 0 1 2 3 1 0 1 1 0 1 1 1 3 2 0 3 2 1 2 2 0 1 1 0 1 1 2 0 1 1 0 1 3 0 0 0 4 3 4 2 1 0 2 2 2 3 0 0 2 6 0 4 2 1 1 1 1 1 4 2 2 2 2 2 2 2 1 1 1 3 2 1 3 3 0 2 3 2 1 4 2 2 2 0 1 2 2 1 0 2 1 0 3 1 4 1 1 2 3 0 2 1 0 0 4 3 2 2 1 4 1 2 4 4 3 1 0 0 1 0 2 0 1 0 3 1 2 1 1 1 1 0 2 0 4 0 1 0 1 2 0 2 0 0 2 1 2 3 0 0 2 3 2 0 0 0 0 1 1 0 2 1 1 1 1 0 1 0 4 1 2 0 2 0 0 2 0 0 1 0 1 0 1 2 1 1 0 1 1 1 0 0 2 1 1 2 2 3 0 3 1 1 0 0 3 3 0 1 0 0 0 0 2 0 0 2 +1 0 1 2 2 1 0 1 2 2 0 1 4 0 0 0 0 3 2 1 0 0 0 0 0 1 2 1 2 1 1 0 1 3 1 1 1 0 2 0 1 1 0 1 2 3 1 1 2 1 1 0 1 1 3 1 1 2 1 3 0 1 2 0 1 2 1 0 1 0 0 3 0 2 2 0 1 0 0 1 1 0 2 1 3 2 1 1 3 2 1 1 0 1 1 1 1 3 1 5 1 1 1 3 3 1 2 2 4 2 1 1 1 2 0 4 3 2 2 0 3 0 4 1 1 1 1 1 2 0 2 2 1 0 0 1 1 2 0 1 1 1 0 1 1 1 2 0 2 1 2 1 0 2 5 1 1 2 2 0 1 2 2 3 2 0 1 2 1 1 3 0 3 1 1 5 2 2 2 0 2 1 3 1 1 1 3 2 0 2 2 2 2 0 2 3 0 0 2 2 2 0 0 1 0 2 1 1 1 0 3 2 1 1 0 1 0 1 1 1 1 0 2 1 2 2 2 0 0 1 3 0 0 3 0 0 0 0 0 3 3 2 3 1 0 1 1 2 1 1 1 0 3 0 1 0 2 0 1 1 1 0 0 1 3 1 2 0 0 2 1 3 0 0 0 2 1 0 1 1 1 0 0 0 0 0 0 1 0 1 1 1 0 4 1 0 1 2 1 0 +1 1 2 0 1 2 1 2 1 1 0 0 1 0 1 2 0 1 0 0 3 2 1 1 0 1 2 1 2 2 0 0 0 1 1 1 0 0 0 1 0 0 1 1 2 2 1 1 1 1 1 1 1 1 1 1 0 0 2 3 1 0 2 1 0 0 5 0 1 2 2 0 0 1 0 0 1 0 1 1 4 2 1 0 1 1 3 2 0 4 0 3 1 1 2 0 0 3 0 2 3 1 3 1 4 2 2 1 1 1 2 0 3 2 3 2 3 1 0 0 1 1 0 2 0 1 2 2 0 0 3 1 1 1 0 2 2 0 2 3 1 1 5 4 0 4 1 4 0 2 2 1 0 2 1 0 2 1 3 2 2 0 1 2 2 3 3 1 1 0 3 2 0 1 0 1 0 0 0 2 5 0 2 3 2 1 6 1 0 3 1 0 1 0 0 1 1 1 1 2 3 0 2 2 3 2 3 4 2 0 2 1 0 1 3 0 4 2 0 1 2 1 2 2 2 0 1 3 1 1 2 2 1 0 0 1 3 1 0 0 3 0 0 0 1 2 1 1 1 2 0 1 2 2 1 1 2 0 2 1 0 2 2 2 0 2 0 0 1 1 1 1 0 0 1 0 1 0 0 2 0 0 1 0 1 0 0 0 0 1 0 2 1 1 1 0 2 1 1 0 +0 1 1 0 2 1 1 1 1 0 1 0 1 4 1 0 0 1 1 2 1 1 0 0 2 0 1 1 0 0 0 0 1 2 1 0 0 0 2 2 1 3 1 0 2 2 3 2 3 1 0 2 1 1 0 2 0 0 0 1 1 1 2 0 1 0 0 2 0 0 1 1 0 1 2 1 0 0 3 1 3 4 3 2 1 0 2 6 0 1 2 0 2 0 2 3 2 1 1 2 1 1 1 0 2 2 0 1 1 2 1 2 3 1 2 1 2 2 3 0 1 2 2 3 2 2 2 1 0 1 0 1 1 3 1 3 1 7 0 5 2 1 1 1 3 1 2 1 1 3 1 2 2 0 1 0 1 1 5 1 1 3 0 2 0 2 0 4 1 0 0 1 1 1 0 0 4 3 0 5 2 3 2 0 2 1 2 1 0 0 2 1 1 2 3 1 1 3 1 0 1 1 2 1 2 2 0 0 2 0 3 4 0 1 0 1 3 1 2 0 0 0 1 2 0 0 1 1 0 0 3 1 0 1 3 0 3 3 0 0 2 1 0 0 4 1 0 1 3 1 2 3 1 0 3 0 0 1 0 1 1 0 3 0 0 1 1 2 1 0 2 3 2 2 1 0 1 0 0 0 2 0 1 0 1 0 1 3 0 1 0 0 0 1 1 1 2 1 1 1 +1 2 0 1 1 0 0 2 1 0 1 0 1 0 0 0 1 3 1 1 0 1 0 0 0 1 0 0 1 2 0 0 0 1 0 1 0 2 2 1 2 0 0 0 1 1 0 0 1 1 1 3 0 1 1 1 1 1 5 2 0 0 2 1 0 2 2 1 1 0 0 0 0 1 2 2 2 0 0 1 0 3 2 0 0 3 0 3 2 2 3 1 5 2 1 4 0 2 0 1 3 2 1 3 2 3 1 0 0 1 3 2 6 1 4 0 1 3 1 0 0 0 2 2 2 2 4 1 0 0 1 0 0 0 3 1 3 1 0 7 2 0 1 2 1 0 3 2 1 2 3 0 4 0 1 2 1 1 0 1 3 1 3 1 2 4 2 0 3 4 0 4 1 1 0 1 0 1 2 0 2 2 1 1 0 0 1 1 3 0 1 5 1 0 0 0 0 2 1 0 1 1 3 3 0 2 2 0 1 0 0 1 0 1 2 1 2 1 2 4 3 1 2 2 1 0 0 3 2 2 3 3 1 1 1 2 3 1 0 2 1 1 1 1 2 1 3 1 2 3 0 0 0 4 0 0 0 1 0 2 3 1 1 1 0 1 1 1 1 0 1 1 2 2 1 3 0 2 0 1 0 0 0 0 2 0 1 0 0 0 1 1 1 2 2 2 0 0 0 0 +2 1 2 0 1 0 0 2 0 3 1 1 0 2 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 1 0 0 4 2 2 4 0 0 0 2 1 1 0 2 1 0 3 1 0 0 0 4 1 2 0 2 2 1 2 1 0 1 3 3 2 2 1 2 5 0 2 0 1 0 0 0 2 3 3 1 0 1 3 5 0 0 3 2 6 4 2 0 2 0 1 0 2 1 0 1 1 3 2 0 1 0 2 2 4 2 1 1 0 1 4 2 3 0 0 0 2 2 6 0 0 1 3 3 2 1 3 0 0 1 1 0 3 2 3 2 1 1 2 1 2 0 1 1 3 0 0 0 3 2 0 0 0 1 1 3 1 0 0 0 1 2 2 1 1 2 0 2 1 3 1 2 2 3 0 2 2 1 9 0 0 0 1 1 2 0 4 1 0 1 0 0 2 2 1 0 1 2 1 2 0 4 1 3 1 0 2 5 0 0 0 0 1 1 1 0 1 1 3 0 1 1 1 0 1 1 3 1 1 2 0 2 0 1 2 2 3 1 0 1 1 4 0 1 2 2 2 1 1 0 0 2 2 3 1 1 0 2 1 1 4 1 1 1 0 0 3 0 1 1 1 3 1 0 0 2 0 2 1 1 1 1 2 0 0 2 1 4 1 0 1 0 +0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 2 0 0 0 0 0 2 0 1 4 0 1 0 1 3 0 1 1 0 2 0 2 0 1 1 1 0 2 0 4 0 1 3 1 2 0 0 2 2 0 0 0 0 3 2 1 1 0 1 6 1 1 3 1 2 0 0 1 2 0 0 0 1 2 1 1 1 1 3 0 1 1 1 3 0 0 0 1 3 0 0 0 1 2 3 0 0 4 1 0 2 3 1 2 0 0 0 0 1 2 0 3 0 2 0 1 0 0 0 1 3 0 2 1 1 0 1 0 3 3 0 2 4 0 1 4 1 1 0 2 1 1 2 1 1 0 2 2 0 1 2 1 0 2 3 1 3 1 0 4 2 3 0 1 2 3 2 2 0 1 1 1 2 2 1 2 2 3 3 2 0 2 0 0 2 2 3 1 0 4 0 1 2 0 0 2 0 1 1 1 1 1 2 0 1 0 0 0 2 1 2 2 2 0 2 2 0 1 1 1 2 4 2 1 3 0 0 4 0 1 0 3 1 2 1 3 1 0 1 2 0 1 1 1 0 3 1 1 1 0 1 1 0 1 0 2 1 1 3 1 0 1 3 2 2 1 0 1 3 1 0 0 1 1 0 1 1 0 2 1 1 2 0 1 0 1 0 0 2 0 0 0 0 +0 0 0 3 1 0 0 0 0 0 3 1 2 0 1 2 1 1 0 0 1 1 1 1 2 3 0 0 0 1 2 0 0 0 0 1 0 1 0 4 1 0 1 0 1 0 0 2 1 1 0 2 3 0 0 0 0 1 3 1 2 0 3 1 1 1 1 2 2 1 0 2 0 0 1 3 0 2 0 0 1 0 0 0 2 3 0 2 1 2 2 3 1 1 1 2 3 0 1 2 0 1 1 3 0 0 3 2 0 1 3 2 0 2 1 1 0 2 2 1 1 1 1 1 1 2 1 1 3 0 4 2 1 0 1 1 1 0 0 1 2 0 0 2 2 4 0 1 1 0 4 3 0 1 2 3 0 0 0 1 2 1 4 1 2 2 2 1 1 1 2 0 1 0 1 2 2 1 1 2 2 4 1 2 1 2 0 3 1 0 2 0 3 0 1 0 4 1 0 3 0 0 1 1 1 0 2 0 0 0 1 3 1 1 3 2 1 0 1 2 2 1 1 0 2 3 0 1 1 0 2 0 0 1 1 0 2 1 0 1 1 0 2 1 0 3 0 3 2 0 0 1 1 2 2 1 1 0 1 0 1 0 1 0 1 0 3 0 2 0 1 0 1 0 1 1 2 1 2 2 0 0 3 0 0 0 0 1 2 0 3 2 0 0 0 2 4 1 1 0 +2 0 0 2 1 0 0 1 0 0 1 1 0 1 2 1 0 2 1 1 1 0 1 2 3 1 0 0 0 2 0 0 1 1 0 1 1 1 0 2 0 2 1 1 1 0 1 0 0 0 3 1 3 0 0 3 2 0 0 0 2 0 0 1 2 1 0 2 0 0 3 1 1 1 2 0 1 2 1 1 0 0 2 5 1 0 0 2 1 2 1 0 1 0 1 3 1 0 1 1 0 3 1 3 6 1 0 1 0 1 1 1 2 3 2 1 2 2 1 3 2 0 2 1 2 4 2 0 1 1 1 1 0 2 0 2 2 1 0 0 3 1 2 3 1 2 3 1 2 1 2 3 1 1 0 1 1 2 3 2 0 2 1 2 3 1 0 2 4 1 0 3 1 0 0 1 3 4 2 4 2 2 2 1 0 1 3 1 2 0 1 2 2 1 1 2 0 0 3 2 1 1 4 0 0 0 3 2 2 3 3 1 1 2 1 0 0 0 1 0 1 0 2 1 1 1 2 4 2 0 0 0 2 3 1 1 0 0 1 1 1 0 1 1 2 2 1 1 0 0 0 1 2 1 2 1 0 0 1 0 0 0 1 1 0 3 1 1 1 2 2 1 0 2 3 1 1 0 0 0 2 3 1 4 0 0 0 2 0 1 1 1 0 2 0 0 1 1 0 1 +0 1 3 2 1 0 2 0 1 1 1 1 1 0 0 0 1 0 2 1 1 0 1 0 1 0 0 1 1 0 0 4 1 0 1 1 1 0 0 3 2 0 1 1 1 0 0 0 3 0 3 0 1 1 2 1 2 1 0 2 1 0 1 2 2 0 0 1 1 2 2 0 1 2 2 1 1 1 4 3 1 1 1 3 1 0 2 1 1 2 2 1 1 3 1 1 0 0 4 1 3 1 1 2 0 0 3 1 0 0 3 1 2 2 3 1 3 1 3 1 1 1 2 1 1 0 1 3 1 3 1 0 3 2 1 3 1 0 1 2 0 2 1 2 3 0 2 0 0 1 1 1 4 1 0 3 1 0 0 0 3 2 3 4 1 4 1 0 2 1 3 3 3 3 2 1 2 1 0 1 3 4 2 0 3 4 1 2 0 0 1 1 3 2 0 1 3 1 3 2 1 1 4 2 1 2 2 0 0 0 1 0 0 2 1 3 0 1 2 2 1 1 2 1 1 1 3 0 1 1 2 2 0 4 2 0 0 0 0 1 2 2 1 1 0 0 0 1 2 0 3 0 4 1 0 0 2 0 0 2 0 1 2 0 1 0 0 3 1 2 0 1 3 0 0 0 1 0 0 1 3 0 0 1 0 1 1 1 0 0 0 0 0 0 2 0 0 1 0 2 +0 0 1 0 1 0 0 1 0 2 2 0 0 1 1 1 0 0 0 2 0 0 0 2 0 0 0 3 0 0 2 4 1 2 0 3 1 3 0 2 1 4 2 1 0 1 1 0 2 0 1 3 2 1 2 1 1 2 0 0 0 0 2 4 2 1 1 1 1 1 1 2 1 0 1 2 1 2 3 2 2 1 2 3 1 0 1 3 1 2 0 1 3 3 2 1 1 1 2 2 3 1 2 0 0 0 0 1 1 2 1 1 2 0 0 1 0 1 1 1 4 2 2 0 1 1 0 2 1 1 1 2 0 2 2 1 0 2 2 1 0 0 5 2 4 3 2 3 1 0 0 2 4 3 4 3 2 0 3 2 2 1 1 1 1 2 2 2 2 2 5 1 1 1 0 1 2 1 1 2 1 1 3 0 0 1 0 3 1 0 2 2 2 4 1 1 6 2 2 1 1 1 1 1 2 1 2 1 0 1 2 1 1 0 3 2 1 1 2 0 2 1 0 0 1 2 2 0 2 2 1 1 0 5 0 0 1 2 0 2 0 0 2 1 0 1 0 0 0 1 0 1 1 3 1 0 1 0 0 1 0 1 1 0 1 0 4 1 0 1 1 0 3 2 0 1 2 0 1 2 3 1 0 1 0 2 1 2 1 1 0 0 0 2 0 2 1 0 0 1 +1 0 2 1 0 0 0 0 0 1 0 1 0 0 3 1 0 2 0 0 0 1 0 1 0 1 2 2 0 1 1 1 1 0 2 0 1 1 1 0 1 1 2 1 0 0 0 2 0 0 1 1 1 1 1 0 2 1 0 1 0 1 0 1 1 2 3 0 2 0 1 0 1 2 1 0 1 3 2 2 1 1 1 1 1 2 5 2 3 2 1 3 1 1 0 1 3 0 1 2 1 1 1 0 2 2 2 0 0 0 2 0 2 1 1 2 2 2 0 1 0 0 2 1 2 1 1 2 1 1 1 0 0 0 0 1 0 1 2 1 5 1 1 1 0 1 1 1 1 2 0 0 2 3 2 2 3 0 2 1 2 2 0 1 0 1 3 5 1 1 1 4 2 0 2 2 1 2 3 2 2 2 1 0 0 0 2 1 4 1 1 1 1 3 1 0 2 2 0 1 1 3 2 0 2 0 1 1 1 3 2 1 0 0 1 2 1 0 1 2 2 0 4 0 1 0 0 0 1 1 0 1 0 1 1 2 1 2 1 0 3 1 1 0 0 3 1 1 3 1 2 2 0 0 0 0 0 2 2 0 0 3 0 0 0 2 2 2 1 1 0 1 2 0 1 0 1 4 0 2 1 2 0 1 3 1 2 0 1 0 0 1 1 1 2 1 0 3 0 0 +0 2 0 1 2 2 0 0 1 1 1 2 0 1 0 1 0 0 2 1 3 2 1 0 2 1 0 0 1 3 0 1 1 0 1 1 0 3 1 2 0 0 0 1 0 2 2 2 0 1 2 1 1 1 3 0 1 3 0 0 3 0 0 2 2 2 0 4 1 0 2 1 0 0 0 1 0 0 3 2 1 2 3 0 0 5 0 3 1 2 4 1 1 2 1 0 0 2 2 0 2 0 2 1 2 1 2 0 1 0 1 1 2 2 1 2 2 6 0 2 3 1 3 3 1 1 1 1 1 0 5 1 2 3 2 2 1 0 3 2 2 0 2 0 1 1 2 2 0 2 0 1 0 3 2 1 2 2 1 1 3 0 1 1 2 1 0 2 3 4 2 0 0 2 1 2 3 1 2 2 2 1 2 1 2 1 1 2 2 4 1 1 1 3 1 3 0 1 0 1 0 5 2 1 3 1 1 2 0 1 2 1 1 2 2 0 0 2 0 1 0 1 1 3 2 2 1 2 0 0 5 3 1 1 0 7 0 1 0 2 1 1 1 1 2 0 3 2 3 1 1 1 0 3 5 1 2 3 1 1 0 0 1 0 3 0 0 0 1 2 0 2 2 0 2 0 2 1 0 0 1 1 1 1 1 1 1 1 0 2 0 0 2 2 0 0 0 1 3 2 +1 2 0 1 0 0 1 0 1 0 1 0 0 0 1 2 1 1 0 1 1 1 2 2 1 0 2 0 3 2 0 1 0 1 0 1 0 5 3 1 0 0 2 0 1 2 2 0 0 1 2 1 1 2 0 0 0 2 0 2 2 2 0 0 2 2 3 0 2 1 0 3 1 2 2 0 3 0 2 4 3 1 0 2 2 4 1 1 2 0 1 0 0 0 0 5 0 2 3 3 1 1 0 4 1 0 1 0 1 1 1 2 1 3 2 1 4 1 0 1 0 1 1 2 0 1 0 1 0 1 3 1 3 1 1 2 1 0 2 1 0 1 1 0 1 2 1 0 0 4 2 0 0 1 0 1 1 2 2 1 1 1 0 1 2 0 1 1 1 3 1 1 1 0 0 5 1 3 1 3 0 0 1 1 0 1 0 0 2 0 1 0 3 2 3 0 5 0 3 2 2 1 1 1 2 4 0 2 0 0 1 0 1 2 1 2 0 1 3 1 3 1 1 1 2 3 1 1 1 0 3 3 0 1 1 1 0 1 1 3 1 2 2 3 0 0 1 0 1 0 1 3 0 1 1 2 2 1 1 2 2 2 1 1 1 1 0 1 0 0 1 0 1 2 1 0 2 1 0 0 1 2 2 2 1 1 0 3 1 2 2 1 0 1 0 1 0 0 1 2 +1 1 2 0 2 2 0 0 1 2 0 0 1 1 0 2 0 1 2 0 0 2 0 0 1 0 2 1 4 3 1 0 1 1 2 1 1 1 2 0 3 2 1 0 1 1 2 2 1 0 1 0 2 0 1 2 1 1 2 2 2 0 2 0 0 1 1 2 0 2 3 1 1 0 1 2 0 1 0 2 2 0 1 2 2 0 3 1 4 0 2 1 1 2 1 2 0 1 2 1 4 1 2 1 2 2 3 3 2 0 1 0 2 1 4 2 0 4 2 1 0 2 2 0 2 2 0 0 2 2 0 2 0 2 1 2 2 3 3 2 0 0 1 2 3 0 4 3 1 1 0 2 0 2 0 3 1 1 0 3 3 2 1 1 0 1 0 3 2 3 1 2 2 0 0 2 1 2 3 0 1 1 0 2 2 1 2 2 0 0 0 1 2 1 0 1 2 1 0 2 2 0 1 4 1 0 0 2 0 1 2 2 1 2 0 1 2 1 2 1 1 2 1 0 1 0 3 4 1 1 0 1 1 1 1 4 1 0 0 0 0 3 2 0 0 4 5 0 2 1 0 1 1 2 1 2 2 1 2 2 0 0 1 0 0 1 2 0 1 2 0 2 2 0 1 2 0 2 1 0 2 0 1 1 1 1 1 0 0 1 1 3 1 2 1 1 1 1 0 0 +1 1 2 2 0 4 0 0 0 2 0 2 1 0 0 1 1 1 1 0 0 0 0 1 1 0 2 2 0 2 1 1 1 0 3 0 2 3 0 0 2 0 0 2 3 0 1 2 1 2 0 2 2 0 0 1 1 1 1 3 3 0 1 2 0 1 0 2 1 1 1 0 1 2 1 1 1 0 0 2 2 1 0 0 1 0 1 1 0 0 1 3 0 0 2 0 1 2 1 1 2 2 1 1 3 2 0 3 0 6 1 2 0 0 2 0 1 0 2 0 1 2 1 2 5 0 0 4 1 0 1 2 4 2 1 2 0 1 1 4 1 1 0 1 2 1 1 1 1 1 0 1 1 1 3 1 0 0 3 0 1 1 0 1 2 0 1 0 0 1 0 2 2 0 2 3 1 0 0 1 1 0 1 0 0 0 1 1 2 2 2 0 2 1 1 1 0 1 2 3 2 0 2 3 2 2 4 2 3 0 1 1 0 3 0 0 1 1 3 0 4 0 3 3 0 0 1 3 0 2 1 2 1 0 2 1 1 2 0 2 0 1 0 0 1 1 2 0 1 3 2 1 1 1 0 1 0 1 1 2 2 0 0 0 2 1 2 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 2 2 0 1 2 2 1 0 0 +0 2 0 0 0 1 1 0 1 2 0 2 0 1 2 0 0 0 0 0 3 1 1 0 2 2 2 1 2 2 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 2 0 2 1 1 1 0 2 2 0 2 1 2 0 2 1 0 2 0 2 0 1 2 1 0 1 1 2 2 4 1 1 1 2 3 1 2 3 6 0 2 1 0 2 3 0 1 2 1 0 1 0 2 1 4 0 0 2 3 2 0 1 1 0 3 3 1 2 0 1 2 2 2 2 2 2 3 1 1 1 1 2 3 0 2 2 0 2 0 3 0 3 2 2 2 1 1 1 0 1 1 0 1 2 0 1 3 0 0 2 0 1 0 0 2 3 1 0 2 0 2 1 1 2 1 4 3 5 0 2 2 1 2 1 3 1 3 3 2 0 1 1 0 1 1 0 2 1 3 1 1 0 2 1 0 1 0 2 1 2 1 0 1 2 4 0 1 2 3 1 2 2 2 0 0 1 4 2 1 1 0 1 0 2 0 2 3 2 1 3 1 0 0 1 0 2 1 3 0 0 1 0 0 1 0 1 0 2 0 2 0 1 2 1 2 0 2 0 1 0 2 3 2 1 1 2 3 1 1 3 2 0 2 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 3 2 1 1 0 0 +0 1 0 0 0 1 2 0 1 0 0 2 3 2 1 1 1 1 0 0 0 0 1 1 0 1 0 1 1 0 2 2 2 1 0 1 0 1 1 3 1 0 0 0 0 0 1 2 0 1 0 2 1 1 1 1 1 1 0 0 0 1 0 2 0 1 1 0 0 3 2 2 0 2 1 1 3 2 0 1 0 1 0 1 0 1 2 0 1 1 4 0 0 0 5 1 0 2 0 1 1 1 1 2 0 1 0 1 2 3 0 2 1 1 1 1 2 2 3 0 1 1 1 4 0 1 3 0 0 2 2 1 1 1 0 1 2 3 1 4 3 2 0 1 1 4 0 0 1 0 2 0 0 0 3 1 2 0 1 0 0 2 0 0 1 1 1 1 1 0 1 2 3 2 4 2 3 0 0 0 1 1 1 1 0 3 5 2 0 2 1 3 1 1 1 1 1 2 2 1 1 0 0 2 3 3 3 1 1 1 1 0 1 2 1 1 0 0 1 2 1 3 2 2 3 2 1 0 4 3 0 0 0 1 0 2 2 1 1 2 0 1 1 0 3 0 2 0 1 0 0 2 2 1 1 2 0 1 2 0 1 0 2 4 2 0 0 2 0 0 2 1 2 0 0 0 1 2 1 1 0 0 3 1 1 0 0 1 3 1 2 2 0 2 1 1 1 0 0 1 +0 0 2 1 1 2 1 0 0 2 0 1 2 1 0 1 2 0 1 0 1 0 0 1 1 2 1 4 1 0 3 0 2 1 0 0 0 2 1 0 3 2 2 1 1 0 0 2 1 2 2 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 2 0 0 0 3 1 0 2 2 2 2 2 0 1 2 2 1 1 0 1 1 1 0 2 2 1 1 4 0 2 0 2 1 0 2 5 2 1 2 0 3 0 3 2 1 0 1 0 1 1 0 0 2 1 2 2 0 1 0 0 4 2 1 3 3 0 0 2 3 0 2 0 2 0 2 2 1 1 1 3 0 1 3 1 1 3 1 0 2 1 2 1 1 0 4 3 2 4 2 3 4 2 2 2 2 2 2 2 2 2 3 4 0 1 1 2 0 2 3 1 0 1 1 0 2 0 1 2 1 2 0 2 3 1 2 0 0 2 0 2 1 0 1 3 1 0 0 1 3 1 2 2 2 0 2 1 1 0 1 1 0 0 0 2 0 1 0 2 1 1 2 0 1 1 1 0 2 0 0 1 3 4 2 0 2 1 2 2 1 2 1 0 3 0 0 0 1 1 0 0 0 2 0 1 0 1 0 1 1 0 0 1 1 2 2 1 1 2 1 0 1 1 2 1 3 1 1 2 0 3 0 2 3 0 +2 1 0 2 2 3 2 2 1 2 1 1 1 0 2 1 2 0 0 2 0 1 1 1 1 0 0 1 0 1 4 1 2 2 0 1 0 2 0 1 1 1 0 0 2 1 1 1 1 0 0 0 3 0 0 1 1 0 1 2 2 2 1 0 0 1 5 1 3 3 1 1 3 2 1 3 2 2 4 2 1 0 2 0 0 1 1 3 1 5 2 0 2 4 3 1 3 3 2 3 1 2 1 0 0 0 1 1 2 1 1 1 2 3 1 1 1 2 0 2 2 1 0 0 1 1 0 1 3 2 2 1 0 2 1 1 3 1 0 1 1 1 2 2 0 1 1 1 1 2 0 1 2 0 1 2 2 3 0 2 0 2 0 3 4 2 0 3 1 1 0 2 3 3 2 2 4 2 1 2 0 1 3 2 1 1 1 2 0 2 2 0 0 2 2 1 3 1 1 1 0 2 1 3 2 5 1 3 2 0 2 2 2 0 0 2 0 2 0 0 1 0 2 5 0 2 1 2 2 2 2 1 0 2 0 0 2 0 0 4 0 1 0 1 2 0 1 1 1 0 3 0 2 0 3 2 0 0 1 2 2 1 1 0 0 0 1 1 0 1 0 0 2 2 0 0 0 1 1 0 1 1 0 0 0 1 2 1 0 1 1 0 1 0 0 0 1 0 0 1 +0 2 0 0 1 1 1 0 0 2 0 1 3 2 0 1 1 1 1 2 2 0 0 1 1 1 1 2 0 2 1 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 1 1 1 0 0 2 0 0 0 1 1 3 1 2 2 0 0 2 2 0 3 1 5 2 0 5 0 2 0 1 3 3 1 1 1 0 1 4 1 3 1 3 1 0 1 2 1 3 1 0 2 1 2 0 1 1 1 2 2 1 1 3 2 2 1 1 0 3 1 1 3 1 2 0 0 2 4 0 1 4 2 1 0 2 1 1 0 0 1 2 1 4 2 3 2 0 3 0 2 2 2 3 2 1 2 2 1 4 4 2 0 1 1 2 0 0 1 4 2 1 1 0 1 1 1 1 1 1 0 1 2 2 0 2 1 0 0 2 2 1 0 0 1 0 3 0 1 1 1 1 3 2 3 1 0 1 1 1 0 1 0 1 2 1 0 1 2 1 1 1 1 1 1 2 1 2 0 2 1 0 1 1 0 1 3 0 2 3 0 2 1 0 0 2 1 2 1 0 3 1 1 1 0 3 2 1 2 1 2 1 0 2 2 1 1 0 0 0 1 1 2 0 1 1 0 1 2 0 1 3 2 0 2 0 0 1 2 1 1 2 0 1 1 2 0 0 1 2 1 0 0 1 0 1 +1 0 1 0 1 1 0 0 0 0 1 3 0 1 0 1 1 2 0 0 5 0 1 0 0 1 1 2 1 1 0 0 1 3 1 0 1 2 1 0 0 3 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 2 2 1 1 1 2 0 0 3 0 2 4 0 0 0 2 0 0 1 1 2 1 0 4 2 1 1 1 0 1 2 2 1 1 0 2 1 4 0 2 3 0 0 2 2 3 2 0 3 1 3 2 0 0 1 0 0 0 2 1 2 1 1 2 0 1 2 4 2 1 1 3 0 4 1 1 3 4 2 3 0 1 0 4 2 0 0 1 0 1 1 3 2 3 0 1 2 3 2 0 4 1 1 3 2 0 2 2 1 0 0 1 2 0 2 1 3 0 0 1 1 1 1 4 0 1 2 1 1 3 3 4 1 2 1 0 2 1 1 2 2 0 0 1 2 4 0 0 2 3 0 0 2 2 1 1 3 3 1 0 2 0 2 0 1 0 3 0 0 1 2 1 1 1 1 1 0 0 0 0 1 1 0 2 0 0 0 0 0 1 1 1 0 0 1 2 1 1 2 0 1 2 1 1 0 0 0 0 3 1 0 1 0 3 1 0 2 0 0 1 2 0 1 0 1 0 2 +0 1 2 1 3 1 0 0 4 5 0 2 0 0 3 3 1 1 2 0 1 1 0 0 0 1 2 0 0 1 0 1 1 0 4 0 3 1 0 1 0 1 0 0 1 2 0 3 0 2 2 4 2 0 0 3 2 2 2 0 0 1 1 0 0 1 3 2 1 0 1 1 1 1 2 2 4 1 2 2 1 0 1 0 1 1 1 3 1 1 5 0 2 2 2 3 0 1 0 2 4 0 1 2 0 2 1 0 2 1 2 1 1 3 2 1 0 1 1 4 0 4 1 0 1 0 1 2 2 6 0 3 2 3 1 0 1 4 1 1 0 3 0 1 2 2 1 2 4 2 3 2 0 1 2 3 1 1 0 1 2 1 0 1 3 2 1 1 1 1 0 1 0 2 2 0 2 0 0 2 2 2 0 2 1 0 0 1 1 0 3 1 0 1 0 1 0 2 2 2 0 1 0 0 2 2 2 1 3 2 3 1 1 1 1 1 0 3 0 1 0 1 2 1 0 3 2 3 0 4 1 3 0 0 0 0 1 1 0 1 3 2 0 2 1 2 2 0 0 1 1 1 0 0 2 0 0 0 2 2 1 1 2 0 1 1 1 0 0 2 1 1 0 0 1 1 2 2 0 0 0 1 2 2 0 1 2 0 2 0 0 1 0 0 1 3 1 1 1 0 +0 0 2 1 1 1 1 0 2 1 2 2 2 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 2 1 0 0 3 2 0 0 1 0 0 1 0 2 1 2 1 1 0 0 0 3 1 1 1 1 0 0 2 0 2 0 1 1 0 0 1 3 1 2 1 0 1 2 1 2 2 1 1 3 0 1 6 1 1 1 1 3 0 1 1 1 2 2 2 2 2 1 1 2 2 2 0 2 0 1 2 2 2 1 0 0 1 2 1 1 0 1 2 4 2 2 0 0 1 1 1 1 2 1 2 3 1 1 0 1 1 1 1 0 0 1 1 1 2 0 0 1 1 1 3 2 1 2 0 1 1 0 1 1 0 1 2 3 3 0 3 1 3 2 0 4 2 0 1 2 2 2 0 1 2 1 0 1 1 1 1 2 3 1 2 3 1 1 1 3 1 2 0 1 1 0 0 0 1 1 0 1 0 2 1 0 0 0 2 0 0 1 0 1 0 3 0 1 0 1 0 1 2 2 3 0 1 1 2 6 1 2 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 2 0 0 2 4 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 2 0 1 0 2 0 0 0 0 1 1 1 1 0 1 0 1 0 1 1 3 0 +1 0 1 1 2 1 0 2 3 0 0 2 1 0 0 0 0 1 0 0 2 1 1 2 2 1 1 0 1 0 3 1 0 1 0 1 1 2 0 1 0 0 1 1 0 0 2 0 2 0 0 0 0 1 2 2 3 1 4 2 0 0 3 1 3 0 0 0 2 0 0 3 0 0 1 6 0 1 0 0 1 0 3 1 2 1 1 0 2 0 0 0 2 5 1 2 0 1 2 2 0 3 0 0 0 3 0 3 2 0 2 0 1 2 1 3 2 0 1 2 3 2 1 1 1 1 2 2 0 2 1 1 0 2 2 0 2 1 1 1 0 2 3 3 1 1 1 2 0 2 0 3 3 1 2 3 2 2 1 0 2 3 2 0 1 0 0 2 2 4 0 3 2 0 1 1 0 1 2 2 1 2 1 0 2 1 2 0 1 2 1 2 0 1 1 1 0 0 0 2 1 2 2 2 2 1 1 4 1 2 0 1 1 0 2 1 3 1 0 2 2 1 2 0 2 2 1 0 0 2 0 1 0 0 0 5 0 1 1 0 1 1 0 6 1 0 0 1 2 0 1 0 0 0 2 1 2 0 1 1 0 1 0 2 0 2 0 1 1 1 0 0 0 0 0 1 0 1 0 2 0 1 0 0 1 1 0 0 2 0 0 3 2 0 3 0 1 0 1 1 +0 0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 1 2 1 0 0 0 1 1 0 0 2 0 0 1 0 2 0 1 1 1 2 0 2 3 2 1 0 0 1 1 0 1 0 0 1 2 1 3 0 2 3 1 0 3 1 1 0 0 0 0 1 0 1 1 0 0 1 2 1 0 1 2 1 1 3 0 2 0 1 1 0 3 1 1 2 1 0 1 2 0 3 2 3 0 1 1 1 0 3 2 1 3 0 2 0 0 0 0 4 1 1 4 1 0 1 3 2 0 1 1 0 2 2 2 1 0 2 0 2 4 2 1 0 0 2 1 0 1 0 1 0 2 1 0 0 0 0 5 0 2 2 1 3 0 0 0 1 2 1 0 0 1 1 1 4 1 3 2 0 1 4 2 1 0 1 1 0 0 0 2 1 0 1 0 0 0 2 2 2 0 2 1 2 4 2 1 3 0 2 1 1 2 2 1 1 1 0 0 2 1 1 1 1 0 0 1 2 1 2 2 2 0 0 2 0 0 4 0 3 0 0 0 2 1 1 0 2 1 0 3 0 3 0 1 1 2 2 1 0 0 0 2 1 1 0 0 0 2 0 0 0 1 1 1 0 2 0 2 0 0 1 1 0 1 2 2 2 1 0 2 0 1 1 2 2 0 1 1 1 0 0 0 0 3 +1 4 0 0 1 0 0 0 2 1 1 0 1 1 1 0 1 2 0 1 0 1 0 1 0 1 0 1 1 0 3 0 2 1 0 1 1 0 1 2 2 0 1 0 0 0 0 1 2 0 0 4 2 0 0 1 0 3 2 0 1 1 1 0 3 1 0 2 4 1 3 0 0 1 0 2 3 1 1 2 1 2 2 0 1 1 2 0 0 3 1 2 0 0 1 0 1 1 1 4 1 3 0 0 2 1 1 1 0 1 1 2 0 0 1 1 0 2 0 0 0 3 1 0 2 3 2 2 0 0 1 1 4 1 0 0 2 2 1 2 0 1 3 0 1 0 1 0 0 0 1 1 1 1 1 1 0 0 2 1 2 1 0 1 0 3 1 1 1 2 2 2 2 1 1 1 0 1 2 2 1 2 0 1 3 1 2 1 0 1 0 1 3 1 2 1 3 0 3 3 0 0 0 4 1 2 1 0 1 1 2 2 4 1 0 0 0 0 2 2 1 0 0 2 1 2 4 0 2 0 0 0 0 1 0 0 0 2 2 2 2 1 1 0 0 2 1 0 1 1 1 0 3 3 4 0 0 0 0 2 0 1 1 1 1 0 1 2 2 1 0 0 1 1 0 0 0 0 3 4 1 0 0 1 0 2 1 2 0 2 0 1 1 0 1 0 1 2 1 1 +2 1 1 1 0 0 1 2 0 1 0 0 2 1 1 0 0 0 0 2 2 0 0 1 0 1 0 1 1 3 1 0 1 2 1 0 1 4 2 1 1 0 3 0 1 2 0 0 0 1 0 3 0 0 0 0 1 0 2 1 0 1 1 0 0 0 1 2 0 0 0 1 0 2 1 1 0 0 0 1 0 1 2 2 2 1 1 1 1 0 0 1 0 3 2 0 4 0 3 3 1 1 0 3 1 0 1 3 1 1 1 0 1 1 1 0 1 3 2 1 0 2 1 3 0 0 1 1 1 1 0 2 1 0 1 0 1 1 1 1 4 2 1 0 1 0 2 1 0 3 2 1 0 2 2 0 0 1 0 2 1 1 2 0 1 0 3 1 1 1 2 1 0 2 0 0 4 3 1 1 0 1 2 1 0 1 0 0 0 2 0 3 1 3 2 0 2 2 0 1 2 1 3 1 0 1 2 2 1 2 1 0 1 1 2 2 0 0 1 2 1 1 1 3 1 4 1 2 0 1 1 2 2 0 1 0 0 2 2 0 0 1 3 1 1 3 0 4 2 1 0 3 0 2 2 3 2 1 0 1 0 2 0 2 2 1 1 1 0 3 0 4 0 0 1 0 0 4 0 1 2 3 0 1 1 1 2 0 1 1 1 0 0 1 0 1 2 0 0 0 +2 2 0 2 1 1 1 1 1 3 1 0 1 1 1 0 2 2 1 0 1 2 2 1 1 2 3 2 0 2 0 1 0 1 3 2 0 0 2 2 0 1 1 0 0 1 0 2 0 0 1 2 1 1 2 5 1 0 0 1 0 0 1 0 1 1 2 0 2 1 0 1 2 0 2 1 0 0 0 0 1 1 1 0 2 1 2 0 1 1 1 1 0 3 1 3 0 2 2 0 1 2 3 0 1 1 1 1 0 1 1 0 2 1 0 1 1 4 1 1 1 1 1 1 1 1 2 1 0 3 2 2 1 1 0 0 1 0 1 3 0 2 3 0 0 2 1 0 2 1 1 0 0 1 1 1 2 1 0 1 0 2 1 2 0 0 1 0 0 1 2 2 1 2 0 1 1 3 4 1 3 1 0 1 0 0 1 1 3 1 3 0 0 1 0 1 2 1 2 1 0 1 3 2 2 0 0 2 0 0 1 1 2 1 1 1 1 0 0 0 1 0 2 1 1 4 2 2 0 2 0 2 1 1 2 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 3 2 1 3 1 2 0 1 1 2 0 1 2 0 0 0 1 1 1 1 1 1 0 3 0 0 1 0 1 1 1 1 2 1 2 2 0 1 0 0 0 0 1 0 0 0 0 1 2 3 +3 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 3 2 2 1 1 1 0 0 4 1 1 0 2 2 0 3 0 2 0 1 1 0 0 0 0 0 0 0 0 0 1 0 2 0 1 0 3 2 3 1 2 1 1 2 0 4 1 1 4 0 1 1 0 1 2 1 0 1 0 1 0 2 2 1 2 1 1 0 1 1 0 0 3 1 0 1 1 0 2 2 2 2 2 0 2 2 1 2 1 0 2 0 0 1 1 1 0 1 1 1 1 1 2 0 0 1 1 1 3 0 3 1 2 1 0 0 1 0 0 3 0 0 2 3 0 4 2 2 1 1 0 2 0 1 2 7 3 1 0 0 3 4 1 1 2 0 0 1 1 0 1 1 2 1 1 0 1 2 1 0 2 2 1 2 0 1 1 1 5 1 0 2 0 2 1 1 0 1 0 2 1 0 2 1 0 0 2 2 0 2 1 2 1 0 2 4 2 3 0 3 2 1 1 2 2 1 2 1 1 2 1 1 3 1 1 4 1 1 0 1 2 3 1 2 2 0 1 0 0 2 0 1 0 1 0 1 1 2 2 3 0 1 1 0 1 0 1 1 1 2 0 0 1 2 0 3 0 2 0 0 0 1 2 1 0 1 1 0 0 0 0 0 2 1 0 1 0 2 1 0 1 1 1 +3 1 0 0 0 1 1 2 1 0 1 0 1 1 1 1 1 1 2 3 2 0 1 0 1 2 0 0 1 0 3 2 0 0 3 0 2 0 1 2 3 0 1 3 0 1 1 0 1 4 0 0 0 1 0 0 1 1 0 0 2 1 0 3 0 0 0 1 0 2 1 0 1 1 0 1 1 2 1 1 3 3 1 1 1 2 2 0 1 0 1 2 0 0 1 0 1 3 0 1 0 0 1 0 1 1 0 1 4 2 3 0 2 2 1 6 2 1 1 4 0 4 2 1 1 0 2 0 0 0 2 1 0 2 1 0 4 3 1 1 0 3 1 5 1 0 1 2 0 1 2 0 3 1 1 0 2 1 1 0 2 0 1 1 1 2 2 2 1 1 2 1 0 0 0 0 2 0 3 1 2 0 2 0 1 0 1 0 1 2 2 0 1 1 0 2 2 1 4 0 0 2 0 1 1 3 2 2 0 0 0 1 2 3 2 0 4 1 0 1 0 1 0 1 0 1 1 0 2 2 1 0 0 0 2 1 1 0 0 1 1 1 0 0 2 1 1 1 2 2 3 2 1 1 0 2 1 2 0 1 1 0 2 1 0 0 0 0 0 1 1 2 2 2 3 2 3 3 0 0 1 0 0 0 0 2 0 1 1 0 2 3 3 0 2 1 3 1 0 0 +2 0 0 0 1 2 0 1 1 1 0 1 1 0 1 5 0 1 1 2 0 0 2 1 3 0 1 0 1 4 0 3 0 0 2 1 1 1 0 1 0 0 1 0 1 3 1 1 1 2 2 0 1 0 1 3 0 0 1 1 1 0 2 0 0 2 1 2 1 0 3 0 1 1 1 0 0 1 2 1 0 1 2 0 2 4 1 1 1 0 0 2 0 1 2 0 1 2 0 0 1 3 0 2 5 0 1 4 1 2 0 0 0 1 2 1 0 2 1 0 4 6 1 5 1 2 1 1 2 0 1 2 5 1 2 2 3 1 1 1 0 2 1 0 0 0 2 3 1 0 1 2 1 3 1 1 2 1 2 1 2 0 1 0 2 1 2 1 1 2 1 1 1 1 1 5 0 2 2 3 1 3 1 3 2 1 4 4 2 0 2 1 5 1 1 1 0 0 1 3 3 2 1 1 0 1 3 0 2 0 1 1 2 1 0 1 2 2 0 2 1 1 2 2 1 3 2 0 3 2 1 2 4 0 0 2 1 0 1 2 2 1 2 1 0 1 0 0 0 2 0 2 0 0 1 1 1 0 0 0 1 1 0 1 2 1 2 2 1 4 0 0 1 2 1 1 4 0 2 1 0 0 1 0 1 2 0 0 2 0 1 3 0 1 0 0 0 1 1 2 +1 2 2 0 2 0 1 0 2 0 4 2 1 0 2 0 0 0 1 2 1 0 3 1 1 2 0 2 2 4 1 3 3 0 1 4 1 1 2 1 1 1 1 1 3 0 0 0 0 1 1 0 1 2 0 2 0 0 0 0 2 0 0 5 2 0 1 1 1 0 1 0 3 1 1 3 2 3 0 0 1 2 2 1 2 2 2 7 1 2 1 2 1 1 0 1 0 0 0 1 0 0 2 0 1 1 2 1 1 1 2 1 0 1 3 1 2 0 0 0 0 0 0 1 1 0 2 1 1 0 0 3 1 0 1 0 1 1 2 3 2 2 3 3 0 1 0 2 1 1 1 2 0 3 0 2 1 2 2 2 1 0 0 1 3 2 2 0 1 3 2 4 2 0 1 0 2 2 1 0 2 0 2 1 0 2 0 0 1 1 1 1 2 0 1 0 1 1 0 2 1 1 0 0 0 0 4 0 1 2 2 1 3 1 3 3 0 0 1 0 0 1 2 2 0 1 3 1 4 1 1 0 0 1 2 0 0 2 0 0 0 0 1 1 1 2 1 0 0 0 0 0 3 2 0 4 0 2 0 1 0 1 0 1 1 1 0 0 0 1 0 2 0 2 2 0 0 1 1 0 1 0 0 1 0 1 0 0 0 1 1 1 2 1 1 1 0 2 0 0 +1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 2 0 0 2 1 1 0 2 0 0 0 1 0 4 0 2 0 1 0 1 0 1 0 0 0 2 2 0 0 2 3 0 0 4 2 1 0 0 0 0 2 1 0 0 1 2 0 1 0 0 0 1 0 1 1 1 1 1 0 1 0 2 2 2 3 0 4 0 0 1 1 0 1 1 0 1 4 3 0 0 0 2 0 2 2 2 3 2 0 1 5 1 2 1 0 0 0 1 2 1 0 2 1 2 2 1 1 2 0 0 2 3 1 1 1 2 0 1 2 1 0 2 0 0 0 0 1 1 1 0 0 1 0 0 2 0 0 0 1 0 0 0 1 0 1 1 2 1 2 3 0 2 0 0 1 0 0 0 1 1 1 1 1 3 1 1 1 1 3 0 1 1 0 1 0 1 0 0 1 2 1 1 0 0 1 1 0 0 2 0 4 0 1 1 0 2 1 0 0 1 0 0 0 1 1 2 0 6 4 0 2 0 0 0 2 4 0 2 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 2 1 2 2 2 1 1 1 1 0 0 1 0 2 0 0 0 0 2 0 1 2 2 3 1 1 0 0 1 0 2 1 1 0 2 0 1 2 2 2 2 2 0 1 0 1 2 0 +1 0 0 0 2 1 1 0 0 1 2 0 1 1 2 3 1 0 1 0 1 0 0 0 1 2 2 2 1 3 1 0 0 0 1 3 1 2 1 1 1 1 3 1 1 0 2 2 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 1 0 2 0 2 1 0 0 1 1 0 3 2 1 3 0 2 2 1 0 0 1 1 0 3 0 4 0 1 3 2 3 1 2 1 0 3 1 1 1 0 0 1 0 0 2 0 0 4 2 1 0 2 0 2 1 0 0 2 0 0 3 3 1 0 1 3 3 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 1 3 1 1 1 2 0 1 1 0 0 1 2 4 3 1 1 4 0 1 0 1 1 2 2 2 1 1 1 0 3 4 5 2 0 0 3 0 1 0 0 1 0 3 2 0 0 0 1 1 1 0 0 0 0 2 0 0 1 1 0 1 1 2 0 1 1 0 0 2 0 1 0 0 2 0 0 1 1 0 1 1 0 0 0 0 1 3 1 0 0 0 2 0 1 2 1 0 1 1 4 0 2 1 1 2 0 0 3 1 1 3 1 1 1 0 0 2 2 1 3 2 1 0 0 1 0 1 1 0 1 3 2 2 2 2 0 2 0 0 0 1 +0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 2 1 1 1 0 0 1 1 0 3 4 0 2 0 1 2 1 0 1 1 0 2 1 0 2 1 0 0 0 0 0 3 1 0 1 0 2 4 2 1 0 0 1 1 0 1 1 2 0 3 0 2 2 0 0 1 0 1 0 1 0 2 3 2 1 5 1 1 0 1 0 2 0 1 1 2 0 0 3 1 0 0 1 1 0 2 1 1 0 2 1 2 0 2 0 2 1 0 1 1 0 1 2 2 0 1 3 2 4 3 4 2 2 4 1 1 2 3 1 1 0 1 0 2 0 0 1 1 1 0 4 3 1 1 3 0 1 1 1 3 1 0 0 0 2 1 0 0 0 0 2 4 2 2 0 1 3 1 0 1 0 0 0 1 3 0 2 2 3 2 3 0 2 0 0 0 3 1 1 1 0 1 0 1 3 1 2 1 0 1 0 1 2 0 2 1 2 0 2 0 0 0 0 1 0 1 1 2 1 1 2 1 1 2 0 0 0 1 0 1 3 1 0 1 1 0 2 1 2 0 2 3 0 0 0 1 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 2 1 2 0 2 1 0 1 0 2 0 1 3 0 0 0 0 0 0 0 0 2 0 0 1 0 1 0 0 0 1 2 0 +2 3 1 0 1 1 2 0 1 1 3 0 0 0 1 0 2 3 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 0 2 2 0 1 0 2 0 1 1 3 0 1 3 0 3 0 2 0 1 3 1 0 0 0 3 0 0 0 1 1 0 0 2 0 0 0 1 0 0 1 1 0 0 0 3 0 2 1 0 3 1 0 0 1 0 0 1 0 2 1 1 0 3 1 1 0 0 0 0 0 4 0 1 3 2 0 2 0 3 0 1 0 2 0 2 1 1 0 0 2 1 2 1 2 1 1 2 2 0 3 0 1 0 1 2 2 2 2 3 1 0 2 2 1 2 3 0 1 0 3 2 4 0 5 0 0 1 0 1 0 0 2 0 1 2 2 1 3 0 1 2 1 1 1 0 1 2 2 1 1 1 2 1 2 1 1 2 0 1 0 4 1 1 2 1 0 2 3 1 0 0 0 2 1 2 0 2 2 0 1 0 0 0 2 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 3 0 1 0 2 2 2 1 1 0 2 1 3 1 0 0 1 0 3 1 0 0 1 0 2 0 1 0 1 2 1 0 1 0 1 0 0 0 1 0 1 0 0 2 0 0 0 1 0 0 0 2 0 3 0 1 0 0 1 0 0 0 0 1 +0 0 0 1 0 0 1 0 1 0 0 0 2 0 2 0 1 0 4 2 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 3 1 1 0 0 1 1 2 0 0 1 0 1 0 1 0 1 2 1 0 1 0 0 1 2 1 3 0 2 0 0 2 2 1 1 2 1 0 1 1 1 1 0 4 3 0 0 3 3 2 0 1 2 3 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 3 1 1 3 1 2 0 1 0 0 4 1 1 1 0 3 0 0 1 2 0 2 0 3 0 3 1 1 3 1 1 1 1 1 3 0 2 1 0 2 6 0 0 0 1 0 1 1 3 3 0 1 0 4 1 1 0 1 3 1 1 0 1 0 0 3 1 2 1 3 1 0 2 1 2 1 2 0 0 1 1 2 3 1 0 0 1 0 1 1 3 1 1 1 1 0 2 0 1 1 0 1 0 0 1 2 0 1 2 0 0 1 0 0 1 1 1 0 1 0 2 0 2 0 1 2 3 1 2 0 2 1 0 1 0 0 0 2 1 1 1 1 0 1 1 1 0 0 3 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 2 2 0 2 0 1 0 0 0 0 0 2 0 0 1 0 1 1 1 1 3 1 3 1 +1 3 0 1 1 0 0 0 2 1 0 2 0 2 0 1 0 0 0 0 1 2 1 2 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 2 0 1 2 3 0 1 1 1 0 1 0 0 1 0 3 2 1 2 1 1 0 2 0 1 1 1 0 1 3 1 1 0 0 1 1 1 2 0 0 1 1 0 1 1 1 1 0 3 1 1 0 0 1 0 2 0 1 0 0 0 1 4 2 1 2 0 1 1 0 1 0 1 1 1 2 1 0 1 1 0 3 0 2 2 0 3 0 5 2 0 2 0 0 0 1 3 0 0 2 3 1 0 1 1 4 4 4 2 1 0 2 0 1 3 2 1 0 0 0 2 3 0 0 0 2 1 0 0 0 0 1 1 1 1 1 4 1 1 1 1 1 1 0 0 0 4 1 2 1 2 1 1 0 2 1 0 1 0 1 3 0 0 0 2 1 5 1 2 2 0 1 2 2 0 3 1 1 1 1 1 2 0 0 1 1 2 3 0 0 1 0 0 1 0 0 1 1 6 0 3 2 0 0 0 2 0 0 1 2 0 0 3 0 0 1 0 3 1 0 0 2 1 0 0 0 0 2 0 1 0 2 2 0 1 0 1 0 1 0 0 1 3 1 0 2 1 0 1 0 0 0 0 1 1 2 0 0 0 0 +0 0 1 0 2 0 0 0 2 1 0 2 2 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 3 0 1 1 1 1 0 0 0 0 0 2 3 3 0 0 2 2 0 2 0 0 2 3 0 1 4 0 1 1 1 0 0 1 0 0 1 1 0 2 1 1 0 1 4 1 0 0 1 3 0 3 0 2 2 2 2 1 2 0 2 0 2 2 1 1 0 1 1 2 0 1 0 0 4 1 1 0 0 2 0 1 0 2 0 0 0 2 0 0 0 3 0 1 1 2 1 0 1 1 0 0 1 1 2 1 0 2 3 2 1 0 1 0 0 2 2 3 0 1 4 2 0 2 2 0 3 1 2 0 2 1 2 3 0 0 1 1 1 1 1 0 0 2 1 0 0 0 2 0 1 1 1 2 0 1 0 1 3 1 0 1 0 1 2 2 2 4 0 0 0 0 2 2 0 3 0 1 2 1 3 2 1 0 0 1 2 3 0 2 0 1 2 2 0 0 1 1 0 0 0 1 0 0 1 0 1 3 0 0 0 0 1 0 1 0 3 0 0 0 0 0 1 2 2 1 0 1 1 1 0 1 1 0 1 3 1 0 0 1 0 2 1 2 0 2 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 2 2 0 1 1 +1 0 1 1 0 1 0 1 2 0 3 0 1 3 2 0 1 1 0 1 0 0 1 0 0 0 3 1 0 0 1 0 1 0 1 2 0 1 1 0 0 0 1 0 4 0 0 0 0 2 0 1 2 0 1 4 3 2 0 1 1 0 0 0 1 2 0 1 0 0 0 1 0 1 1 2 1 2 3 0 1 0 0 1 4 1 0 0 1 2 3 1 1 2 1 4 1 1 2 3 1 0 1 1 0 3 1 0 0 2 0 0 0 3 0 0 2 0 0 2 0 1 0 1 0 2 3 2 0 1 2 4 0 2 1 0 1 0 2 0 3 0 1 1 1 3 1 2 0 4 2 1 1 2 1 3 2 4 0 1 1 1 1 1 3 0 2 1 2 0 0 2 0 1 0 1 2 1 1 0 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 1 3 1 2 3 3 0 0 0 0 0 1 0 1 2 0 1 2 0 0 1 1 0 0 2 1 1 0 2 4 1 2 0 1 1 1 0 0 3 0 0 0 2 1 1 2 3 2 0 0 0 2 1 1 2 2 2 0 0 0 1 0 0 1 0 0 0 2 2 2 0 0 1 2 2 1 1 0 0 1 0 2 0 0 0 3 0 1 1 0 0 0 0 1 0 0 0 0 3 1 1 1 0 1 +0 0 0 0 2 1 1 3 1 2 0 0 2 3 1 2 0 0 1 1 0 1 1 1 0 0 4 3 1 0 1 0 1 2 2 1 1 2 1 1 2 1 1 0 0 2 1 3 1 2 2 0 2 2 1 1 2 0 0 0 0 3 2 4 1 1 2 1 1 1 1 0 0 1 2 0 2 1 2 0 1 2 2 0 2 2 1 1 2 2 2 1 0 0 1 1 3 0 3 1 3 0 2 0 0 2 0 0 1 1 0 0 3 0 0 1 2 2 3 0 1 2 0 2 0 0 2 1 1 1 0 3 0 1 1 1 0 0 2 1 0 1 2 2 1 1 4 1 2 2 2 3 1 2 1 2 1 2 0 0 3 1 2 0 2 0 1 0 1 1 2 2 2 0 0 0 2 2 0 0 1 3 2 2 1 4 0 1 2 3 2 2 0 1 0 0 0 2 1 1 0 0 0 1 0 1 1 1 2 3 1 1 2 1 0 0 0 1 1 1 0 2 0 0 1 1 1 0 2 0 0 1 2 1 1 0 2 1 1 0 2 1 0 0 1 0 4 1 0 1 1 1 0 0 0 0 2 1 1 2 1 3 1 0 2 0 1 0 1 0 0 0 0 1 1 1 0 2 1 3 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 3 1 0 0 +2 0 0 2 0 2 0 0 3 1 0 0 0 0 0 1 1 3 1 1 0 1 0 1 2 1 1 0 0 0 1 0 0 0 2 0 1 1 2 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 3 3 1 1 1 1 2 2 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 2 0 0 1 4 1 1 0 2 0 0 1 2 1 2 0 1 0 0 0 0 2 0 4 0 1 2 3 1 1 0 1 0 1 1 3 1 2 2 2 1 0 4 2 1 0 0 2 0 2 0 0 0 3 3 2 1 2 1 1 0 1 1 1 0 1 2 0 0 0 1 1 2 2 1 0 2 3 3 3 1 0 1 1 2 0 2 1 0 1 3 1 0 0 5 0 2 1 1 4 1 1 2 1 5 0 1 0 3 1 0 1 4 2 1 2 0 0 1 1 0 0 1 1 0 0 0 0 3 1 1 3 0 2 0 0 3 3 2 0 1 0 0 3 4 0 0 0 3 0 0 0 0 0 0 2 1 0 0 0 3 0 1 1 0 0 2 1 1 1 1 1 0 0 0 0 0 1 0 4 0 1 0 0 0 0 2 0 1 2 1 1 1 1 1 1 0 1 1 0 2 0 0 1 2 2 1 1 1 0 3 1 0 1 1 2 1 1 1 1 1 +1 1 1 0 2 0 0 1 0 0 4 0 2 1 0 3 1 1 0 1 1 0 0 0 2 0 1 1 4 1 0 1 4 2 2 0 1 1 1 0 0 1 0 0 2 0 2 1 0 0 0 3 0 1 0 2 1 3 1 2 0 2 2 0 4 1 1 1 1 2 2 1 0 4 0 2 2 0 2 1 0 0 0 0 1 1 1 3 0 1 1 1 1 0 1 2 1 1 0 0 1 0 2 3 1 2 1 0 0 3 1 0 2 0 0 3 1 3 2 1 0 0 1 1 1 1 1 1 5 3 0 0 3 1 1 2 0 1 1 3 1 0 2 0 1 1 1 2 0 3 1 1 0 1 1 2 0 1 0 0 1 4 0 1 1 0 0 1 1 0 1 0 0 3 3 0 0 1 1 0 0 1 2 1 0 2 1 0 0 4 1 1 0 1 1 2 1 2 0 2 1 0 1 1 3 2 0 1 0 0 2 1 1 2 1 2 0 0 1 2 0 0 0 0 1 0 0 0 0 0 2 2 0 2 2 1 0 0 1 4 0 2 0 2 1 0 0 1 1 0 0 0 0 0 0 2 2 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 1 0 0 2 0 0 1 1 0 0 1 0 1 1 2 0 0 0 2 2 2 0 2 0 0 1 0 0 +1 1 0 1 0 1 0 1 2 1 0 0 1 3 0 1 0 0 0 0 0 0 2 0 1 0 1 0 2 0 0 2 2 0 0 1 0 2 2 2 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 2 1 4 0 3 2 0 1 0 3 2 0 2 1 1 0 3 0 1 1 1 1 1 0 2 1 0 0 3 1 2 1 1 0 4 1 2 1 0 0 1 0 1 1 1 0 2 0 0 2 0 1 1 1 0 3 4 1 1 2 1 2 0 1 1 1 6 4 2 2 2 0 0 1 2 2 1 1 0 2 1 5 1 0 2 2 1 1 1 0 0 1 3 1 2 0 2 2 1 2 2 1 0 0 4 1 1 1 2 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 2 0 0 3 0 2 1 1 1 0 1 2 0 0 1 0 0 1 1 0 3 1 1 0 2 2 1 2 2 1 3 0 0 1 0 2 0 0 1 1 2 0 1 0 0 0 0 1 1 0 0 0 1 2 2 0 1 0 3 0 0 2 1 0 1 4 2 1 2 1 0 0 0 0 1 3 1 0 0 0 1 1 0 2 1 2 0 1 0 1 0 1 2 0 1 0 2 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 2 0 1 3 1 0 +0 1 1 0 1 0 1 1 0 2 0 1 0 0 2 2 1 1 1 0 1 0 1 1 0 1 0 3 1 1 2 0 1 1 0 0 0 0 2 0 0 1 1 1 3 0 3 1 1 1 1 2 0 1 4 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 5 0 0 1 0 0 0 1 0 1 1 2 0 0 0 1 0 1 0 0 2 0 4 1 2 1 2 1 0 2 0 0 2 3 2 1 1 0 1 2 2 2 2 2 0 2 2 0 1 1 1 0 0 1 2 1 1 1 1 3 5 0 0 0 2 3 1 0 1 1 2 3 0 3 1 0 0 2 0 2 3 0 1 0 1 1 3 0 0 2 3 3 1 0 0 1 1 2 0 1 4 0 1 0 0 1 2 1 1 0 1 0 0 2 1 1 4 1 0 1 1 2 0 2 0 0 0 1 0 0 1 0 2 0 0 1 2 1 3 0 0 0 0 2 1 0 1 0 0 1 3 2 0 0 4 1 0 0 0 1 1 1 2 3 1 0 0 1 1 0 0 1 0 0 0 0 2 3 2 0 0 0 2 1 1 0 1 1 3 2 0 0 0 1 2 0 1 0 0 1 0 1 0 0 2 0 1 0 0 0 0 1 1 0 0 1 2 1 0 0 1 1 2 2 1 0 0 1 4 +0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 2 2 0 1 1 1 1 1 2 1 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 2 0 0 0 2 0 2 0 1 0 2 1 2 1 0 1 3 1 2 0 1 1 2 3 0 0 1 3 0 0 2 1 1 3 1 2 0 1 1 2 1 1 1 2 1 1 0 2 2 0 1 1 0 0 0 1 1 1 0 1 3 1 0 1 1 0 2 3 0 1 1 1 2 0 2 0 0 2 0 1 2 3 0 1 1 3 1 0 1 2 3 1 0 1 0 2 1 2 2 3 1 3 0 2 3 0 0 2 0 0 1 1 0 1 3 4 1 1 2 0 0 1 1 1 0 3 0 0 1 0 0 4 0 1 0 1 0 0 0 1 0 1 0 4 0 1 2 1 1 3 1 3 0 3 0 1 1 0 0 1 3 0 1 0 0 2 2 0 2 1 1 1 1 0 1 1 0 0 1 3 1 2 2 0 0 1 1 1 1 0 1 3 0 1 3 1 0 1 2 1 0 0 0 0 1 0 1 2 1 0 2 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 2 0 2 0 1 0 0 0 0 1 0 2 1 1 1 0 +1 0 1 0 0 2 0 0 0 2 0 0 0 0 0 1 0 3 0 2 0 2 0 0 0 2 1 0 1 0 0 0 2 0 1 0 0 0 1 1 1 0 0 0 2 0 0 3 1 2 0 0 0 1 2 1 3 1 2 0 1 0 2 0 0 1 0 0 2 0 1 0 2 1 1 0 0 2 1 2 0 1 3 1 5 1 1 2 4 2 3 1 0 0 0 0 0 1 0 2 3 1 0 2 2 0 1 2 1 3 1 0 0 1 0 0 3 0 2 0 1 0 0 1 2 1 1 2 0 0 2 0 0 1 3 1 1 1 2 1 0 0 1 1 3 2 2 4 1 2 1 0 0 0 4 1 2 0 0 2 1 3 2 0 2 1 0 3 2 1 1 0 0 4 1 2 2 1 1 0 2 4 3 0 0 3 1 0 1 2 1 0 0 1 1 0 2 2 1 1 0 0 2 1 1 2 0 1 1 0 3 0 1 1 1 2 2 1 0 1 1 1 2 1 0 0 2 1 0 0 0 0 0 2 0 1 1 0 0 1 0 1 0 1 0 0 1 1 4 1 3 1 2 1 0 2 2 1 0 1 0 0 0 0 1 0 1 2 0 0 0 0 2 2 1 2 0 1 1 0 2 2 0 0 0 0 1 2 2 1 0 0 1 2 1 0 0 0 1 1 +1 0 0 0 2 2 0 2 0 1 0 1 2 1 1 0 0 0 0 4 0 0 1 1 1 2 1 2 0 1 2 0 0 1 0 0 0 1 1 2 1 0 1 0 1 1 0 0 0 2 2 1 0 0 0 0 0 0 0 0 1 1 1 2 0 0 0 0 3 1 1 1 2 1 1 1 0 1 0 0 2 0 2 1 3 1 0 0 0 1 2 2 1 1 0 0 1 0 1 2 2 0 0 0 1 1 2 0 1 0 0 3 2 5 5 1 2 3 0 0 4 0 1 3 0 0 2 0 0 2 0 1 4 1 4 2 0 0 1 1 1 0 0 1 1 0 0 1 4 0 2 1 0 1 2 1 0 3 0 2 0 1 2 3 0 2 3 1 1 1 0 1 2 1 1 0 1 1 2 1 1 2 0 2 2 0 1 2 0 0 0 1 4 1 2 0 0 2 1 0 0 2 1 1 1 3 0 1 0 2 0 0 2 2 1 1 3 0 4 1 2 0 0 0 0 2 0 1 0 0 0 0 1 1 2 1 1 0 1 0 2 3 0 1 2 2 1 0 0 1 1 1 1 1 1 0 1 1 3 2 0 1 0 0 0 0 0 0 0 1 1 3 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 2 0 1 0 0 2 3 0 1 0 0 +1 2 0 2 2 1 2 0 0 1 0 1 1 0 0 1 2 0 2 3 0 0 1 0 0 1 1 1 1 0 0 0 0 0 2 0 1 2 3 0 1 1 3 0 2 0 0 1 1 0 0 3 1 0 0 0 2 1 0 1 1 0 1 0 0 0 0 0 1 0 2 0 0 0 1 2 3 0 1 0 0 0 1 3 4 1 1 0 0 0 2 1 1 2 0 1 3 0 1 2 1 2 2 3 1 1 0 3 2 1 1 2 2 2 1 0 0 0 1 2 2 2 0 2 2 1 0 0 0 3 2 3 0 0 0 1 0 3 1 3 0 0 1 1 0 2 0 4 2 1 3 0 0 0 4 0 0 4 1 1 0 0 1 0 1 1 1 1 4 3 3 0 1 0 1 1 2 0 0 1 2 1 2 0 0 1 0 0 2 1 2 1 2 0 0 0 2 0 2 1 0 1 0 2 0 1 0 0 1 0 0 0 1 0 2 2 0 0 0 1 2 0 1 0 3 2 0 1 1 1 0 0 1 0 0 1 0 0 0 2 0 0 0 1 1 1 0 2 1 0 0 1 1 1 0 1 1 1 0 0 2 0 0 1 1 0 0 0 1 1 1 0 0 2 0 2 0 0 1 0 0 1 0 0 0 0 1 2 0 0 4 2 1 0 0 1 0 0 2 0 +0 0 1 1 2 3 0 1 0 0 2 1 0 1 1 1 0 0 3 1 0 1 1 3 3 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 4 0 0 1 1 0 0 1 0 1 1 1 1 1 1 2 0 2 0 2 0 0 2 1 0 1 3 0 1 0 2 0 2 3 1 1 1 2 1 2 1 1 1 1 0 3 0 0 1 0 2 1 1 1 0 0 1 0 0 0 0 2 0 0 0 1 3 0 2 0 2 1 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 1 1 0 3 1 1 1 1 1 1 1 2 0 0 3 1 0 1 1 0 0 3 0 1 0 0 2 0 1 1 1 0 1 0 2 0 0 0 1 0 1 2 0 3 1 1 0 1 0 0 2 2 1 1 1 1 1 0 1 1 3 2 2 1 1 1 1 2 0 4 0 2 0 0 2 0 2 1 1 3 3 0 0 0 0 0 0 1 1 2 0 0 1 1 3 2 1 2 1 1 1 2 0 1 0 0 0 1 0 0 2 1 0 2 1 1 0 1 1 1 1 3 0 1 0 2 0 2 2 1 2 1 1 0 1 0 1 1 0 1 3 0 0 0 0 0 0 0 0 0 0 2 2 1 2 0 3 0 1 0 0 4 1 0 0 2 1 +1 0 0 1 0 2 0 1 0 1 1 1 0 1 2 1 1 2 2 0 1 0 1 1 1 0 3 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 2 0 1 0 1 0 0 1 0 1 0 2 0 0 3 0 0 3 0 0 0 1 1 0 1 0 1 0 1 1 2 2 0 1 1 0 1 2 1 0 1 0 0 0 0 1 1 1 2 1 1 0 0 2 3 3 1 1 2 3 2 1 0 1 2 3 0 0 2 2 1 1 0 3 2 2 1 4 1 0 2 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 4 1 0 2 1 1 2 0 2 1 0 2 1 3 2 2 0 0 1 0 1 1 1 2 0 2 2 0 0 1 2 0 1 2 0 1 1 3 0 0 1 1 1 1 0 2 2 0 3 1 2 1 0 0 1 0 0 2 3 0 1 2 2 1 1 1 0 0 1 0 1 0 2 1 1 0 1 3 1 1 1 0 1 3 0 2 0 1 0 1 1 1 1 1 3 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 1 2 0 2 1 1 0 0 0 3 0 3 0 1 0 2 1 1 2 1 0 0 1 2 2 2 0 0 1 0 2 0 0 1 2 1 0 0 0 2 2 1 0 0 0 1 1 1 0 +1 0 0 0 0 1 0 0 0 0 0 1 1 0 2 1 1 3 0 1 1 0 0 1 0 0 0 0 2 1 3 0 1 2 3 0 0 2 0 2 0 1 0 1 2 0 1 2 0 2 0 0 0 0 1 0 0 0 1 1 0 3 2 0 1 1 1 2 0 0 2 1 0 4 0 0 1 1 1 0 0 0 1 5 3 3 4 1 0 1 0 1 0 2 0 1 0 0 5 2 1 1 1 1 2 0 2 0 2 1 0 1 2 1 2 0 0 1 2 1 2 1 1 3 2 2 1 2 1 1 1 1 1 2 0 1 2 1 0 1 0 1 3 0 0 0 1 1 2 2 0 0 1 0 1 1 0 0 0 2 3 4 2 4 0 1 1 3 1 0 0 2 1 1 0 0 1 2 3 1 2 3 1 1 0 0 0 2 1 1 1 1 1 2 3 2 0 2 0 2 0 0 0 1 1 3 0 0 1 0 0 2 1 1 2 4 0 1 0 1 2 3 0 0 0 5 2 1 2 0 3 1 1 1 1 2 0 1 2 1 0 0 0 1 0 1 1 2 2 2 0 1 3 1 1 5 0 0 2 0 2 1 1 0 1 1 1 3 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 2 0 0 0 0 0 1 1 1 +3 0 0 3 1 0 1 0 0 1 1 3 0 0 0 1 1 0 2 2 1 0 1 0 0 2 0 0 0 0 2 1 2 0 0 0 0 3 1 2 3 1 1 2 0 1 1 0 1 2 1 0 0 0 2 3 0 1 2 0 1 0 1 0 1 1 2 0 1 1 2 1 1 1 1 1 0 0 0 0 0 2 2 1 1 2 0 0 4 0 0 0 0 2 0 0 0 4 0 2 0 1 0 2 1 2 4 1 0 0 0 0 3 3 4 0 0 0 1 3 0 3 2 2 0 0 2 0 0 1 0 0 2 0 2 1 3 3 2 1 2 1 1 0 2 2 2 1 2 2 2 0 4 1 1 3 1 1 1 1 0 1 0 0 0 2 0 0 3 1 3 1 1 3 1 1 1 1 0 0 1 0 1 0 2 2 1 0 1 0 0 0 0 1 1 1 0 2 2 0 0 2 0 0 2 1 0 1 2 0 2 1 1 0 4 0 0 0 1 0 3 0 0 0 0 2 3 1 0 0 2 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 0 2 1 0 1 1 0 1 0 3 0 4 1 0 2 1 2 0 1 0 0 0 1 0 0 2 0 1 1 2 1 1 3 0 0 3 0 1 1 1 3 0 0 1 0 0 +0 1 0 1 1 0 2 0 0 1 1 2 1 2 1 0 0 2 0 2 5 2 1 0 0 0 1 0 1 3 0 1 1 1 1 0 2 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 2 0 0 1 0 1 0 0 1 2 0 1 1 0 2 3 1 1 2 1 1 1 2 1 0 2 3 0 0 3 1 1 0 0 0 2 0 2 0 0 1 1 0 1 0 1 2 0 0 1 1 2 2 3 3 0 3 0 2 0 0 2 0 2 0 1 0 0 0 0 2 2 2 2 2 0 1 0 4 4 0 0 0 1 2 2 0 1 2 0 0 1 4 2 0 1 0 1 0 0 1 0 2 1 0 2 1 0 2 0 1 0 0 2 1 0 1 1 0 0 0 1 2 1 0 3 0 1 1 0 1 0 1 0 0 0 0 2 4 1 0 0 0 1 1 1 0 2 0 2 1 0 0 1 3 0 0 1 0 2 2 1 1 1 2 1 0 1 1 1 0 0 0 0 1 4 0 0 1 2 3 0 2 0 0 0 2 4 1 0 1 0 1 0 2 1 1 0 0 1 1 2 1 1 0 0 2 3 2 0 0 0 1 4 1 0 1 1 2 0 0 0 2 2 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 +1 0 1 0 1 2 1 0 1 1 0 2 1 0 5 0 0 1 2 1 0 0 0 0 4 0 1 3 1 2 0 0 1 0 0 0 2 0 1 1 3 0 0 0 1 0 2 2 1 1 2 0 1 2 1 1 0 0 3 2 0 1 1 1 1 3 1 0 2 0 2 1 3 0 1 0 1 0 0 1 0 1 2 1 1 0 3 0 1 0 0 1 1 0 2 2 1 1 0 1 1 2 1 1 2 1 1 2 0 0 1 1 1 1 2 3 0 0 0 0 1 1 0 1 2 1 1 0 1 2 2 2 1 2 1 2 0 0 1 1 4 0 0 3 2 3 0 0 1 2 0 1 1 2 0 2 2 1 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0 2 1 1 4 0 1 1 0 0 0 0 3 0 1 0 3 1 3 3 0 2 1 2 2 2 0 2 2 0 1 0 1 4 1 1 2 0 0 2 2 1 0 1 2 0 0 1 1 2 2 0 0 0 0 0 0 1 0 1 0 0 2 0 0 0 1 2 0 0 0 2 1 1 1 1 1 1 1 0 2 0 1 1 2 2 1 1 0 0 0 0 0 0 3 2 0 0 0 0 0 0 2 0 0 2 0 0 0 0 1 0 0 0 1 0 0 0 3 0 0 1 0 3 1 1 1 +1 0 0 0 0 0 0 1 3 0 0 0 0 1 0 2 1 1 1 0 1 0 1 1 1 0 2 0 0 1 2 0 1 1 1 1 3 1 1 2 2 4 3 0 0 0 0 0 0 0 0 0 2 2 0 0 1 2 3 0 2 1 0 0 1 1 0 1 2 0 0 1 1 1 0 2 0 1 1 4 1 3 3 1 1 0 2 4 2 1 0 0 0 1 0 2 2 1 1 1 2 0 3 0 0 0 0 0 0 2 0 0 1 2 1 0 0 1 0 2 2 3 0 0 0 2 2 1 1 0 1 2 0 0 0 0 2 2 0 1 0 2 0 2 3 1 1 2 0 2 1 3 2 2 1 0 2 2 2 2 0 2 1 1 0 3 0 2 0 1 0 1 2 1 1 1 1 2 0 1 1 3 1 1 0 2 0 1 0 1 2 0 0 0 1 0 1 2 1 1 1 1 0 0 2 0 0 1 0 1 0 0 2 1 1 3 0 0 2 0 1 0 0 2 1 3 0 0 0 1 0 1 1 1 0 0 0 0 0 1 1 3 0 1 0 0 0 1 0 0 0 1 2 1 1 1 0 0 1 1 0 0 3 1 0 2 0 0 2 3 2 0 0 0 1 1 0 0 3 0 0 0 1 0 1 0 2 0 0 1 1 1 0 1 0 0 1 1 2 0 +2 0 1 0 0 0 1 1 1 0 1 0 2 1 1 1 3 1 0 0 3 0 3 2 1 1 1 1 0 0 2 3 0 0 2 0 2 1 0 0 2 0 0 0 1 0 0 0 0 2 0 3 0 0 2 2 1 0 0 0 0 1 1 0 2 3 0 0 1 0 0 1 2 0 0 1 0 0 1 1 0 0 2 1 2 1 0 0 0 1 1 2 2 1 0 0 0 0 2 1 4 0 3 0 0 0 0 1 2 2 2 1 1 1 1 0 2 1 0 1 1 1 0 0 2 0 2 3 3 2 2 1 1 2 0 2 1 0 0 2 2 1 1 1 2 1 0 2 0 0 0 1 0 0 1 2 1 1 1 1 2 1 1 1 3 1 1 3 1 1 1 1 0 1 1 1 2 0 1 1 2 1 0 1 1 2 0 3 3 0 1 1 1 2 0 0 2 1 1 2 1 0 4 1 1 0 1 0 1 2 1 1 0 1 2 0 1 1 1 0 1 1 1 2 0 2 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 2 0 1 0 0 2 1 0 0 0 4 2 1 0 0 1 0 0 2 1 0 1 0 2 0 0 1 2 0 0 3 0 0 0 0 2 2 0 1 0 0 1 0 0 0 3 1 0 1 0 2 1 0 0 1 2 0 0 0 +0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 2 2 0 1 0 2 1 4 0 2 1 0 0 1 1 1 0 1 0 3 0 5 2 0 0 0 0 0 0 1 2 1 0 1 1 1 2 1 0 2 1 1 2 0 1 2 1 2 1 1 1 1 0 0 2 0 0 0 0 1 3 0 2 3 2 0 3 1 0 1 0 2 3 0 2 2 1 0 0 0 0 0 0 4 1 1 1 1 1 1 0 2 3 3 1 0 2 1 1 0 1 1 0 2 3 0 0 0 2 3 0 2 1 1 0 1 2 0 2 1 0 1 0 0 1 1 3 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 1 4 3 1 1 1 2 2 0 0 0 0 2 1 3 0 0 3 1 1 1 0 0 1 1 0 3 2 1 1 2 1 0 2 2 4 1 0 0 0 1 0 3 2 0 2 0 2 0 2 2 0 0 2 3 0 1 0 0 0 0 0 0 0 2 0 2 0 1 1 1 2 0 0 0 1 0 0 1 0 1 1 0 0 0 2 1 0 3 0 2 0 1 0 0 0 1 0 1 1 1 0 2 0 1 2 0 0 1 0 0 0 4 0 0 2 0 0 2 1 1 2 0 0 0 0 0 0 3 0 +1 0 0 1 0 1 2 0 0 1 0 0 1 2 1 0 0 2 1 1 0 1 1 0 0 0 2 0 1 1 2 2 0 2 1 0 2 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1 1 1 0 2 2 1 0 2 2 1 0 0 1 0 0 3 2 1 0 1 0 0 0 0 3 0 1 1 1 2 0 0 1 2 1 4 1 1 0 2 0 2 1 0 0 1 0 3 0 1 0 0 0 0 0 0 2 1 0 0 3 0 0 1 1 0 1 1 0 2 0 2 0 1 0 2 1 0 1 1 1 0 0 1 1 2 2 1 0 0 0 1 1 1 0 3 1 2 2 0 2 0 1 1 1 1 0 1 0 3 1 4 1 2 0 1 1 0 3 0 0 2 1 1 1 2 1 1 0 0 1 2 0 1 1 1 0 1 0 2 0 0 2 0 0 1 1 1 1 4 0 2 1 1 1 1 2 1 1 0 3 1 0 3 1 1 2 0 2 3 1 0 2 0 1 2 1 1 1 2 0 1 0 0 1 4 1 0 0 1 0 0 3 0 1 2 1 0 0 0 0 1 0 0 0 0 1 3 0 2 1 0 1 0 0 0 2 0 0 1 1 0 1 1 0 1 0 2 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 2 0 +0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 4 0 1 1 0 2 0 0 0 0 1 2 2 0 0 2 0 2 0 1 1 1 1 1 2 1 0 0 0 0 0 0 2 1 0 2 0 1 1 0 2 0 0 2 0 0 0 0 0 2 0 0 2 0 0 1 2 0 0 0 0 2 0 1 0 2 0 2 1 1 0 0 2 2 2 0 3 1 1 1 1 3 0 1 2 2 0 0 3 1 0 1 0 1 0 0 3 1 1 1 0 0 2 1 0 1 1 1 2 3 2 0 0 2 0 1 1 0 1 1 3 0 0 0 0 1 1 2 1 1 1 1 1 1 2 1 0 1 0 0 0 0 1 0 0 0 1 1 1 4 2 0 1 0 1 0 0 0 1 1 0 2 0 1 1 0 2 0 1 1 0 2 2 0 2 1 1 1 1 2 1 0 1 2 0 1 0 3 1 1 1 0 1 0 3 0 1 2 1 0 2 2 2 0 0 0 2 1 2 3 0 1 2 0 0 0 0 1 2 1 0 1 0 2 0 1 1 1 2 0 1 0 0 0 0 1 2 1 0 1 1 0 1 0 1 1 1 2 0 1 1 2 1 1 0 2 0 0 1 3 0 3 0 0 1 0 0 1 1 1 0 0 1 0 2 0 0 2 2 0 2 4 0 0 0 +0 0 0 0 0 1 1 1 0 0 0 0 1 2 2 2 0 0 0 1 0 1 2 2 0 2 1 0 0 1 2 1 1 0 0 1 2 0 0 1 0 1 2 0 0 0 0 0 0 0 1 0 3 1 0 2 1 0 1 0 0 1 1 0 0 0 1 2 2 1 1 0 2 1 2 0 1 2 0 3 2 1 2 0 0 0 1 1 0 2 1 3 4 0 1 0 0 0 2 0 1 1 0 1 3 3 1 0 2 1 1 3 0 0 0 4 3 1 3 0 0 2 1 2 1 2 3 1 2 0 0 0 1 0 1 1 0 2 0 2 0 1 1 2 1 2 2 1 0 2 2 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 1 4 0 0 2 2 0 2 2 2 2 2 2 0 1 1 1 1 1 1 1 2 1 1 0 1 0 3 0 3 0 1 1 0 3 0 2 0 0 2 1 1 0 0 0 0 0 2 0 1 2 1 1 1 0 1 0 1 2 2 0 0 1 3 0 0 0 1 2 0 1 0 2 0 1 1 1 2 1 0 1 1 0 1 1 1 0 0 1 2 0 2 1 0 2 0 3 2 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 2 2 0 0 0 0 0 1 2 0 0 1 0 1 0 +0 0 1 1 1 1 3 0 0 3 0 1 2 0 2 0 1 2 1 1 1 0 0 1 0 1 0 1 1 0 0 2 4 0 1 1 0 0 0 2 0 0 3 1 2 1 0 1 2 0 0 0 1 1 0 2 0 0 0 1 0 0 0 1 0 1 0 4 0 1 0 1 0 0 3 0 2 1 2 0 0 1 1 0 0 1 3 1 2 1 2 0 2 0 3 0 2 0 1 2 1 0 1 2 2 0 2 0 1 0 2 1 0 0 0 0 0 0 2 0 1 1 0 0 1 0 0 0 1 1 3 2 0 2 3 0 2 0 0 0 0 0 1 0 0 2 1 2 0 1 2 1 0 0 1 0 0 1 0 0 1 0 4 0 3 1 3 0 3 1 2 1 2 2 0 0 0 2 1 1 0 2 1 0 2 1 0 0 0 2 0 3 1 0 1 0 2 1 3 0 1 2 1 2 1 2 1 1 2 2 2 0 0 1 0 0 2 2 0 0 1 1 2 1 0 1 3 2 0 1 2 0 0 2 2 0 1 1 0 0 0 0 1 0 0 1 0 0 1 1 2 2 0 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 2 2 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 2 0 1 0 0 0 +2 1 0 0 0 2 0 1 3 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 3 0 0 1 1 1 0 0 0 2 1 1 1 1 1 1 1 0 0 1 2 0 2 2 1 0 0 2 1 1 0 1 0 1 1 2 2 0 0 0 1 0 0 0 0 0 3 0 1 0 0 1 2 1 0 0 1 2 0 2 1 1 3 1 1 0 1 1 2 0 0 1 3 2 2 0 2 2 0 0 2 0 0 2 0 0 0 1 1 1 0 1 0 1 0 0 0 0 2 0 0 1 2 0 0 1 0 0 0 2 1 1 1 1 1 0 3 1 0 3 0 0 1 2 3 2 1 2 0 1 1 1 2 0 1 1 0 1 2 0 1 0 5 1 1 3 1 3 3 0 1 1 1 2 2 1 0 0 2 1 0 1 1 1 2 0 0 0 3 0 1 0 1 1 0 0 1 0 0 1 1 2 1 1 3 2 0 1 1 0 2 2 2 3 0 0 1 1 1 1 0 0 1 0 2 0 2 0 0 1 1 1 0 2 1 0 3 0 2 0 0 1 0 0 1 1 2 0 2 0 0 0 0 1 0 2 0 0 1 1 0 1 1 0 0 1 0 2 1 0 0 0 0 2 2 1 0 3 0 2 1 0 3 0 1 0 0 0 1 2 1 2 1 0 +2 1 1 1 0 2 0 1 1 0 0 0 1 0 4 3 0 0 0 0 1 0 1 0 1 1 1 3 1 2 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 2 0 0 1 0 1 2 1 1 0 0 0 0 0 0 0 1 0 0 1 1 2 1 1 0 2 1 0 1 0 1 0 0 1 2 0 1 1 0 2 1 2 1 1 0 2 0 1 1 1 1 1 2 1 1 2 1 1 0 2 1 1 0 0 1 0 1 0 1 0 0 2 1 0 1 1 1 0 2 2 1 0 2 0 0 0 1 0 0 1 2 1 0 0 2 0 3 1 1 1 1 1 2 2 3 1 2 1 1 0 0 0 0 0 0 1 0 2 2 0 0 2 0 2 0 0 2 2 0 0 1 0 0 0 2 0 0 1 1 1 3 1 0 1 0 0 0 1 1 1 0 0 0 0 1 2 1 0 1 0 0 0 0 1 2 2 2 2 0 0 0 1 2 0 1 1 1 0 0 2 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 4 1 0 2 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 2 0 2 0 2 1 0 3 0 1 0 1 0 1 0 1 0 0 1 1 0 2 1 2 2 0 0 0 0 0 1 1 1 +0 1 0 1 0 1 0 0 0 2 0 0 0 1 0 0 0 0 1 0 2 1 0 1 0 0 1 0 0 3 1 0 0 1 1 0 0 0 0 3 4 2 0 1 0 0 1 1 1 0 2 1 1 0 0 2 1 1 1 0 0 1 0 2 0 1 0 0 2 0 1 0 0 0 1 2 1 2 3 0 0 0 2 1 2 1 0 1 1 1 1 0 1 1 0 2 0 1 1 0 1 0 0 4 1 0 1 0 1 0 0 0 1 2 1 3 1 1 1 1 1 1 1 0 0 1 1 2 1 2 0 1 2 0 0 0 0 2 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 3 1 0 0 0 1 0 2 0 1 0 1 1 2 1 2 0 0 2 1 2 1 4 1 0 1 1 1 0 2 0 1 0 0 0 3 0 0 1 0 0 0 1 1 2 0 1 1 0 1 1 2 0 1 1 1 1 2 0 1 1 2 0 3 1 0 0 0 2 0 2 0 1 0 0 2 2 0 0 1 0 1 1 2 0 0 0 0 2 1 0 1 0 0 1 0 0 1 2 1 0 0 0 1 0 1 0 0 2 0 3 1 0 0 1 0 0 0 2 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 +3 0 0 1 0 2 0 0 0 0 1 1 0 1 0 0 0 1 0 0 3 0 0 1 0 1 0 2 0 0 0 2 0 0 2 0 0 1 0 1 0 0 1 0 3 0 1 0 1 0 0 0 0 3 1 5 1 0 1 0 1 1 1 2 3 0 0 1 1 0 1 0 1 1 1 0 0 0 1 0 0 0 1 0 5 1 0 0 0 1 0 3 0 1 3 0 1 3 2 2 2 0 2 1 0 2 0 2 0 1 0 3 1 2 0 1 2 1 3 0 0 0 1 0 1 2 2 3 1 1 0 2 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 0 5 0 2 0 2 0 1 0 1 2 4 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 2 0 3 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 2 0 2 1 1 0 1 1 0 0 2 1 0 1 0 1 1 0 1 0 3 1 0 1 1 1 0 1 0 0 1 1 0 1 2 1 1 2 0 0 0 0 0 0 0 0 3 3 0 0 4 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 2 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 2 0 1 0 0 0 0 0 0 0 +0 0 1 1 0 1 0 0 3 0 2 1 0 0 0 1 2 1 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1 0 3 2 1 1 0 2 1 1 1 0 1 0 1 2 1 1 1 0 1 0 0 0 0 1 2 0 0 0 1 0 0 0 0 1 1 0 0 0 2 0 2 2 0 0 0 1 0 1 1 0 1 1 1 3 0 2 1 0 2 1 1 0 1 1 1 0 1 0 2 0 0 2 3 1 1 1 1 0 1 2 0 1 3 2 3 0 1 1 0 1 1 1 2 1 1 2 2 1 1 0 1 2 0 1 0 0 0 1 3 3 0 2 0 4 1 3 1 3 0 0 1 0 1 1 2 3 0 2 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 2 1 3 0 0 0 1 3 1 0 2 0 0 0 1 2 3 0 1 0 0 0 2 1 2 0 0 0 2 1 4 0 1 1 1 0 1 0 1 0 1 0 1 0 1 2 1 0 0 0 1 0 1 2 0 4 0 0 0 1 4 0 1 1 1 0 0 3 0 0 1 0 2 1 0 1 1 0 0 2 0 1 2 1 0 2 1 1 1 0 1 3 0 1 0 0 0 0 1 0 0 0 1 1 3 2 2 0 1 1 0 0 1 1 0 0 0 0 0 1 0 +0 2 1 1 0 0 0 0 1 0 1 2 1 2 1 2 1 0 1 0 0 3 1 0 0 2 1 0 0 2 1 0 1 1 0 1 1 0 0 1 0 1 1 1 1 0 2 0 2 0 1 0 2 1 2 1 0 0 0 2 0 0 1 1 0 0 0 0 1 0 1 0 2 1 1 2 1 0 0 0 1 0 2 1 0 5 2 1 0 3 2 1 0 0 1 2 0 1 1 0 1 2 0 0 1 0 1 1 1 2 1 1 1 4 0 2 0 1 0 0 0 1 3 0 0 1 0 1 1 1 1 1 1 2 1 0 0 0 0 3 0 0 1 2 0 3 1 0 1 4 0 0 0 2 2 3 0 0 1 0 0 0 0 3 2 0 1 1 2 0 0 0 0 0 1 0 2 3 2 1 1 1 0 0 1 3 1 0 2 4 2 1 2 1 0 0 0 0 3 1 0 2 0 0 1 1 0 0 0 0 1 1 2 1 0 3 0 2 2 1 2 0 1 1 0 2 2 0 1 1 0 1 1 0 1 0 0 0 2 2 0 2 0 0 1 1 0 3 0 0 1 0 0 1 2 0 0 0 1 0 1 1 1 0 0 0 2 1 0 0 1 1 0 2 1 2 0 0 1 0 0 0 0 0 1 1 2 0 1 0 0 0 2 0 3 1 0 0 0 0 +0 0 1 0 1 2 0 2 0 0 1 0 0 0 0 1 1 2 1 1 1 2 2 0 1 0 0 0 0 1 2 2 1 0 1 2 1 1 0 1 0 1 0 0 1 1 1 1 0 2 0 1 0 2 1 1 0 0 2 3 1 0 2 2 0 0 0 3 0 0 0 0 0 0 1 1 0 2 0 0 0 1 0 1 0 2 0 0 1 3 2 0 1 1 0 2 1 0 3 2 0 0 1 0 0 1 3 0 2 2 1 0 0 0 1 1 1 1 1 0 2 1 0 1 0 1 0 3 0 0 1 0 1 2 0 1 0 2 0 0 1 2 1 0 1 1 0 1 1 1 0 1 1 5 3 0 0 3 1 0 1 1 0 1 1 2 0 2 1 2 1 0 2 1 0 2 1 0 0 0 0 2 0 1 0 0 1 2 1 0 1 2 0 1 1 0 0 2 1 0 0 0 1 1 1 0 0 1 0 2 2 0 1 1 2 0 2 0 1 0 0 2 1 0 0 2 0 0 0 1 1 2 1 2 1 1 1 0 1 0 0 1 2 0 2 1 0 1 1 0 0 0 1 0 1 1 1 1 1 2 2 0 1 1 0 2 1 0 1 0 0 0 2 0 0 0 1 1 1 0 1 1 1 0 0 1 2 1 1 0 2 1 0 1 1 0 1 4 1 1 +0 3 0 2 0 0 0 1 1 3 0 0 0 1 2 0 0 3 1 0 0 0 0 0 0 1 1 2 2 2 1 0 1 1 0 2 1 0 0 1 0 1 1 1 1 0 2 1 0 3 1 0 2 0 1 2 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 0 2 1 0 0 0 0 2 0 2 1 1 0 0 1 0 2 0 0 3 1 0 2 0 1 0 0 0 0 2 0 0 1 1 0 0 2 1 1 2 1 1 2 0 0 0 1 1 3 0 0 0 0 1 0 1 1 2 0 1 5 2 2 1 1 2 2 1 0 2 1 0 0 0 3 0 0 0 2 1 1 1 2 3 2 0 1 2 0 1 3 0 1 1 0 1 2 2 1 1 1 1 0 1 1 0 0 0 0 0 0 1 2 0 0 1 3 3 0 0 1 2 0 2 0 0 0 0 0 0 1 1 3 0 0 1 0 0 1 2 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 2 0 0 2 0 0 0 0 0 1 1 3 0 1 0 0 0 1 0 1 0 0 1 2 2 1 0 0 0 1 1 0 1 0 3 1 2 0 0 1 0 1 0 1 0 1 2 1 0 0 2 1 1 1 1 3 0 1 +0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 2 0 1 1 0 1 0 1 0 0 0 1 0 2 1 0 0 0 0 2 1 3 1 0 0 0 1 1 2 3 1 1 2 0 1 0 0 0 0 2 2 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 2 1 1 0 1 0 2 1 0 1 2 0 1 0 0 1 2 1 1 1 0 0 2 1 2 1 0 1 2 1 0 1 0 0 1 2 2 1 1 0 0 0 2 4 2 1 1 1 0 0 2 0 0 1 0 0 1 0 2 0 2 1 2 3 2 0 0 1 0 0 0 2 1 1 1 0 2 0 2 0 1 0 0 0 2 0 0 1 1 0 0 1 1 1 0 2 3 0 2 1 1 0 2 0 1 0 2 1 3 1 2 2 1 0 2 4 2 0 2 0 1 0 1 0 0 0 0 1 1 1 2 1 0 0 0 0 0 0 1 1 0 2 1 1 2 1 0 1 1 0 0 2 0 0 1 1 1 0 0 0 2 3 2 0 0 1 1 2 3 0 2 0 1 2 1 0 1 0 1 1 0 2 1 0 0 1 0 1 1 0 1 0 0 0 0 2 1 0 0 0 2 0 2 1 1 1 0 3 1 0 0 0 2 0 0 1 1 0 0 0 1 +0 1 1 0 0 0 1 0 0 0 2 0 1 0 3 0 1 3 0 0 0 0 2 2 0 0 0 1 1 0 1 0 0 0 3 0 1 4 1 0 0 0 3 1 0 2 0 1 0 0 1 0 2 0 0 1 2 1 0 4 1 0 0 2 0 0 1 0 1 1 2 0 0 0 0 2 0 2 1 0 1 2 0 0 1 0 1 2 1 2 0 0 0 1 0 0 1 1 2 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 1 3 0 0 0 0 3 1 3 1 1 0 0 0 0 0 0 0 1 0 0 0 1 2 1 1 0 0 4 0 0 0 0 2 1 0 3 0 1 0 1 0 0 1 1 0 0 1 0 0 3 0 0 1 1 0 1 0 0 1 0 1 0 1 2 1 0 1 1 2 1 0 2 0 1 0 0 0 0 0 0 0 1 0 1 0 1 2 0 0 0 2 1 0 1 0 1 1 0 2 0 3 2 0 1 1 0 1 1 1 1 1 1 0 0 0 2 1 0 1 1 0 1 0 1 0 1 0 2 1 2 0 2 0 1 0 0 0 0 0 1 2 0 1 1 2 1 0 0 1 2 0 0 0 1 0 0 0 0 0 0 0 2 0 0 1 1 0 0 0 0 1 2 2 1 0 0 0 0 0 1 1 0 0 0 2 +0 1 0 0 1 1 1 1 0 0 0 0 0 2 1 1 1 0 0 1 0 0 2 1 0 2 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 3 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 2 1 1 1 0 4 1 0 0 1 0 0 1 1 0 2 2 0 0 1 1 1 1 0 1 1 0 1 3 0 1 0 1 2 1 0 0 0 1 0 0 1 2 0 1 0 2 0 0 3 0 2 1 0 0 0 1 1 1 0 1 1 0 1 0 1 1 1 2 2 2 0 0 1 2 1 1 0 2 2 0 2 0 0 1 1 3 0 0 1 0 3 0 1 1 1 1 1 0 2 0 0 0 1 3 1 1 3 1 2 1 2 0 3 2 0 3 0 0 0 4 1 1 1 1 1 1 0 0 0 1 2 0 1 3 0 0 1 1 1 1 0 3 0 0 0 2 0 1 0 0 1 1 0 2 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 2 1 1 1 1 3 2 1 0 1 0 4 1 1 2 1 0 0 0 0 0 0 1 1 0 0 2 1 1 2 1 1 1 2 0 1 0 1 0 0 0 0 0 2 4 0 0 2 2 1 2 2 0 1 1 0 0 +1 1 1 1 0 0 0 0 1 0 2 0 1 0 0 1 1 1 2 1 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 3 0 2 1 1 0 1 1 0 0 1 0 0 1 3 1 1 0 1 0 0 0 1 0 1 0 0 0 2 4 0 2 1 0 0 1 1 2 0 0 0 0 1 3 0 1 3 1 1 1 0 0 0 2 0 0 1 1 1 1 0 2 3 0 2 1 0 1 1 2 3 0 2 0 2 1 1 1 0 1 1 1 0 1 0 0 2 1 1 0 2 2 0 0 1 2 0 0 0 0 0 1 0 0 2 1 2 4 1 0 0 2 0 0 2 1 0 2 0 2 1 2 2 0 0 0 0 1 3 0 0 0 0 2 1 0 1 2 1 0 0 2 0 0 1 1 1 1 0 0 2 0 0 1 1 1 3 1 1 0 2 0 0 1 1 1 1 0 2 1 1 1 1 1 0 2 1 1 0 0 1 1 1 0 1 1 2 1 1 0 1 0 0 2 1 0 0 0 0 3 0 0 0 3 1 1 0 1 0 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 2 3 3 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 +0 0 0 1 0 1 0 1 0 0 1 1 0 2 0 0 0 1 2 0 1 1 1 0 0 0 0 2 0 0 0 3 1 0 0 0 0 0 0 3 0 3 0 1 1 0 0 0 1 0 1 1 1 0 1 2 0 0 0 0 1 0 0 0 0 0 1 0 1 0 2 1 1 0 0 1 1 0 2 0 0 0 1 4 0 1 2 2 2 0 0 1 0 2 1 0 0 1 2 0 1 0 0 2 0 2 2 1 2 1 0 0 0 1 2 2 1 0 1 1 1 0 0 0 0 2 1 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 3 0 2 0 0 1 0 3 0 0 2 0 0 0 0 0 0 2 0 7 0 3 0 0 2 1 0 2 2 0 2 3 0 1 1 1 0 1 0 0 0 2 0 0 1 2 1 1 0 2 2 1 1 0 1 0 1 2 2 2 2 0 0 1 0 0 1 2 0 1 1 0 1 0 0 0 3 1 0 2 2 1 0 0 2 0 2 0 0 2 2 0 0 0 0 0 0 1 1 1 0 0 1 0 0 2 0 1 0 0 2 6 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 2 1 0 0 0 0 1 0 0 1 0 0 1 0 1 1 +2 0 0 0 1 1 0 1 0 1 1 0 0 0 0 2 1 1 1 0 0 1 0 0 0 0 0 0 1 3 0 1 0 0 1 0 0 1 0 0 1 1 0 0 2 0 0 0 1 2 1 0 0 0 1 1 0 0 0 0 2 3 1 0 1 1 0 0 1 1 2 1 3 0 0 1 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 2 1 1 2 0 2 0 0 2 2 2 1 2 1 2 0 0 1 0 0 0 1 2 0 0 2 0 0 0 0 0 3 2 0 1 2 0 1 2 1 0 1 1 2 1 1 1 0 0 1 1 0 1 0 1 0 2 0 2 1 0 0 1 1 0 0 1 0 1 0 0 1 2 0 0 2 1 2 2 2 0 2 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 0 1 0 0 0 0 1 5 0 1 0 1 0 0 0 0 1 1 1 1 3 0 0 0 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 2 2 0 3 0 0 2 1 0 2 0 1 0 0 0 0 1 1 0 1 1 0 1 0 2 0 2 0 0 2 1 0 0 0 0 1 3 1 0 1 0 0 0 0 3 0 0 0 1 1 1 1 0 1 1 0 0 0 0 +1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 1 0 1 3 0 3 0 0 3 0 1 0 1 0 2 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 3 0 0 1 1 2 1 0 1 0 2 2 0 1 0 0 0 3 1 1 1 1 0 1 1 1 2 2 3 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 3 1 0 0 0 2 1 2 0 1 0 2 3 2 0 2 1 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 2 0 3 0 0 1 1 0 1 0 0 2 2 1 2 0 2 1 0 1 1 2 0 0 0 2 0 0 0 1 2 0 0 0 1 0 0 0 3 0 0 2 3 2 3 1 2 1 2 1 1 2 2 4 0 0 1 1 1 1 0 1 2 2 3 1 1 1 1 0 2 0 1 1 1 0 0 0 0 2 0 1 0 0 1 0 2 0 0 2 1 0 1 0 2 0 0 0 0 2 1 0 0 0 2 0 0 0 2 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 2 1 2 1 0 1 1 1 0 +0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 2 0 1 1 0 2 2 1 0 0 0 1 0 0 1 3 0 0 0 0 1 1 1 0 0 2 1 1 2 0 0 0 1 1 0 0 1 2 0 0 2 1 0 0 1 0 2 0 0 1 3 1 0 2 1 1 2 3 1 0 1 0 1 0 1 1 1 1 0 0 0 2 0 2 1 0 1 3 0 0 0 0 0 2 0 0 0 4 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 2 0 0 1 0 1 1 1 0 0 4 0 3 0 1 0 0 0 2 0 0 1 0 1 1 1 1 1 1 0 0 2 1 0 1 1 0 1 1 1 2 0 2 3 0 1 1 1 2 1 2 0 2 2 0 1 2 2 1 0 2 1 2 1 2 0 1 1 1 0 1 0 3 1 0 0 3 1 2 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 2 1 4 0 0 2 0 1 0 0 1 0 0 0 0 0 1 0 4 1 1 2 0 2 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 2 1 2 0 0 2 1 0 1 0 1 0 2 0 1 1 1 2 0 1 2 0 0 0 1 0 2 0 0 0 0 0 1 2 0 0 0 0 1 0 +0 0 0 1 0 0 1 1 0 0 3 0 0 1 0 0 1 0 1 0 1 2 0 1 0 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 2 1 0 0 1 2 1 0 0 1 0 1 0 2 0 1 0 1 0 0 2 0 1 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0 1 2 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 3 0 2 0 0 1 3 2 2 0 0 1 0 0 1 1 0 0 0 0 1 2 1 0 0 1 0 2 0 1 0 1 0 1 1 0 0 1 2 1 0 0 0 0 1 1 1 1 0 3 2 2 1 3 0 1 0 2 0 2 0 1 1 1 0 1 0 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 2 1 0 0 1 3 2 1 1 2 0 0 0 2 1 0 1 2 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 3 0 2 0 1 1 0 0 1 0 0 0 1 0 0 0 0 2 2 0 2 1 1 1 1 0 0 1 0 0 0 2 0 1 0 0 0 2 2 1 0 2 1 1 0 0 3 0 2 2 2 2 0 1 0 0 1 0 0 2 1 +1 0 2 1 0 1 0 0 2 0 0 0 0 1 0 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 2 1 0 1 2 1 1 0 0 0 3 2 0 0 1 3 1 1 2 0 1 0 0 3 0 0 2 3 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 2 1 0 0 1 0 1 1 0 0 0 2 1 0 0 1 1 3 0 1 0 2 2 0 2 2 0 0 0 1 3 0 3 1 0 0 2 1 0 0 1 1 2 0 1 1 2 1 5 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 2 0 2 1 0 0 1 3 1 1 1 2 1 0 1 4 1 0 1 1 0 0 2 0 2 0 0 0 1 2 2 0 0 3 0 2 1 1 1 2 0 0 0 0 1 1 0 0 1 0 0 1 2 0 0 0 0 2 0 1 1 1 0 0 1 3 1 0 1 0 0 0 0 2 0 0 1 0 0 1 2 1 0 1 2 0 0 0 0 1 0 0 2 2 1 0 1 0 1 3 1 2 1 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 2 0 0 2 1 0 0 0 0 1 0 1 1 0 1 1 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 2 1 0 0 2 2 0 1 +0 1 1 0 2 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 2 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 3 0 0 0 1 0 2 1 0 1 1 1 0 2 1 1 1 0 1 0 1 0 0 0 0 1 2 0 0 0 0 2 1 1 1 1 0 1 0 0 1 1 0 0 1 0 1 2 2 0 1 0 0 3 0 1 0 0 0 0 1 0 1 2 1 0 0 0 0 0 0 0 1 3 0 0 3 0 0 0 0 2 1 0 0 0 0 0 2 0 0 1 1 0 1 0 0 0 1 1 2 1 0 1 2 0 0 0 1 1 0 1 1 3 0 0 1 2 2 2 0 0 0 1 0 0 2 2 0 0 1 1 1 0 0 2 1 2 1 1 1 2 0 1 0 0 0 3 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 2 0 1 2 0 1 1 0 4 0 2 4 0 0 0 1 2 1 2 0 0 0 0 0 0 0 0 0 2 2 2 1 0 1 0 0 0 1 2 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 3 0 0 0 2 0 0 0 0 1 1 1 2 3 1 0 2 1 0 1 +2 1 1 0 0 0 0 0 0 1 0 0 2 1 0 0 1 1 0 2 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 2 1 2 1 0 0 1 0 1 0 1 0 0 1 0 2 1 1 0 3 1 0 1 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 2 0 1 1 1 1 2 0 0 0 3 2 1 1 1 0 0 1 0 3 0 0 0 0 0 0 0 1 2 1 1 2 1 1 1 0 2 0 1 0 1 2 0 1 2 0 1 0 1 0 2 2 2 2 0 1 0 0 1 1 1 0 2 3 1 0 1 1 2 1 0 0 0 0 0 2 1 1 1 1 1 1 0 0 1 0 0 2 1 1 0 1 0 0 0 0 2 0 1 0 1 1 1 2 2 1 1 1 3 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 2 0 1 1 0 0 0 0 2 0 0 1 1 0 4 0 2 0 0 0 1 0 0 2 0 2 1 3 0 1 0 1 0 3 0 0 0 0 1 3 0 0 2 1 2 0 0 1 0 0 0 0 0 4 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 +1 1 0 1 0 0 0 1 1 3 0 2 2 3 0 1 0 1 0 1 0 0 0 1 1 1 0 2 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 2 1 0 2 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 1 0 2 0 0 1 0 0 1 0 2 3 0 1 2 2 1 1 1 2 2 0 2 2 1 2 2 1 1 3 1 1 0 0 0 0 1 1 1 1 0 4 1 0 1 2 0 0 0 1 1 0 0 1 1 1 1 3 1 0 1 0 2 1 0 0 2 1 1 1 0 2 0 1 0 1 0 1 2 1 0 0 1 0 0 1 1 1 3 0 0 2 4 1 0 0 1 1 1 1 4 0 2 3 2 1 0 1 0 0 0 2 2 1 1 1 3 2 2 1 0 1 0 3 0 0 4 3 1 1 0 0 2 1 1 0 2 1 3 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 2 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 2 2 0 0 0 2 0 2 1 1 1 0 0 1 0 0 1 0 0 2 0 1 0 1 0 1 1 0 0 0 2 0 0 0 0 0 2 1 1 0 1 0 0 1 0 1 0 +0 2 0 1 0 1 0 0 0 1 0 0 0 0 0 3 1 2 0 1 0 1 1 0 0 0 1 1 0 2 0 1 1 0 1 1 1 2 0 1 0 2 0 0 0 0 0 0 5 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 3 0 0 0 2 0 1 0 0 0 0 2 0 1 0 0 1 0 1 1 0 1 1 1 1 1 2 1 0 0 2 0 0 1 0 3 0 4 1 0 2 0 1 0 1 1 3 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0 2 1 1 1 2 3 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 2 1 1 1 2 2 0 0 1 2 2 0 0 0 1 1 2 0 0 2 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 2 1 1 1 0 0 1 3 1 0 0 0 1 2 1 0 0 0 1 0 0 1 1 2 0 0 1 2 0 0 0 2 1 0 0 2 0 0 0 1 0 0 0 2 1 0 1 2 0 1 1 0 3 0 2 0 0 0 2 0 1 0 0 0 1 2 0 2 0 2 0 1 2 0 0 1 1 1 0 2 2 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 2 0 0 1 0 1 +0 1 1 0 3 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 4 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 2 1 2 0 0 2 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 3 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 2 1 0 2 2 1 1 0 0 1 1 1 3 0 0 3 0 0 0 1 0 0 0 0 2 1 2 1 0 1 0 0 0 0 3 0 3 0 1 0 2 1 0 0 0 0 1 2 2 0 2 0 0 0 1 0 1 0 1 2 0 0 1 0 1 2 2 3 0 2 0 0 1 0 0 2 0 0 2 1 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0 2 1 0 1 1 3 1 0 0 3 0 1 0 0 0 1 0 2 0 2 0 2 1 0 0 0 1 1 0 1 0 1 0 0 0 0 2 0 0 0 0 0 2 0 0 1 0 0 0 2 0 1 1 1 0 1 2 1 2 0 2 1 2 1 1 0 0 0 0 2 2 1 0 0 2 1 2 0 1 0 1 0 1 0 2 1 1 0 0 1 0 0 0 0 0 0 0 0 +0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 2 0 0 1 0 1 2 1 2 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 2 0 0 1 2 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 0 3 0 0 1 1 0 2 0 1 0 1 0 0 0 1 2 1 0 2 0 0 0 1 0 1 1 0 0 3 0 2 0 0 0 1 0 0 0 1 1 2 1 1 2 1 2 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 1 0 2 0 0 0 0 0 1 0 2 0 1 0 0 1 1 1 1 0 0 0 0 1 1 2 2 1 0 0 0 0 0 1 0 0 0 1 2 0 0 0 2 0 0 1 0 0 0 0 1 3 0 2 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 1 1 3 0 0 1 2 1 2 2 0 1 0 0 1 0 0 0 1 1 1 1 1 0 0 2 0 0 0 1 2 1 1 2 1 0 0 0 0 1 0 1 0 2 1 1 0 1 2 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 2 1 0 1 0 0 0 0 1 0 1 1 +1 1 1 1 0 0 0 2 0 0 0 0 0 2 1 0 1 0 1 0 0 1 3 0 0 1 0 0 0 2 0 1 2 0 0 0 0 0 0 0 1 2 0 1 0 2 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 2 1 1 1 0 0 0 0 1 2 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 4 1 3 0 0 0 2 1 0 1 0 0 1 0 0 0 2 2 0 2 0 0 0 0 0 0 0 1 2 1 1 1 0 1 0 0 1 2 0 0 0 1 0 0 1 1 0 2 1 0 1 0 3 3 1 1 1 0 0 1 1 0 1 1 0 1 2 0 2 0 1 0 2 1 1 0 0 2 0 1 0 2 1 0 1 1 2 1 1 0 2 0 1 0 0 2 0 0 1 1 0 0 1 0 1 0 1 0 3 3 0 0 0 2 0 0 0 0 0 1 1 0 1 0 0 0 1 4 0 2 1 1 0 0 0 0 1 2 0 0 0 2 1 0 0 1 4 1 1 1 1 1 0 1 0 0 1 0 2 1 0 0 1 4 0 1 1 1 0 1 0 1 2 1 0 1 0 1 0 2 1 3 0 0 0 0 0 0 1 0 1 1 2 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 +0 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 1 1 0 0 2 1 1 1 0 1 1 1 0 0 1 0 1 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 2 1 0 2 1 0 0 1 1 0 1 1 0 1 0 0 1 0 2 4 0 0 0 1 0 2 2 1 0 1 0 2 2 3 0 0 0 1 1 0 1 0 0 2 0 1 1 0 0 5 0 1 1 2 2 0 2 0 0 0 2 1 1 1 0 1 0 0 1 0 0 2 0 1 0 0 0 1 1 1 0 0 3 2 1 1 1 0 1 1 0 1 2 2 0 1 0 0 2 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 1 0 2 1 0 0 0 0 2 0 1 0 1 0 1 1 0 0 0 1 0 1 2 0 0 0 0 0 0 1 2 2 0 2 2 1 0 1 0 1 0 0 2 1 2 3 0 1 0 0 1 0 0 0 0 1 2 0 0 1 3 1 0 1 0 1 0 0 1 1 3 0 0 3 0 1 2 1 1 2 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 2 1 0 0 0 0 1 1 0 0 0 1 1 0 0 2 0 0 0 0 1 diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/mccode.sim b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/mccode.sim new file mode 100644 index 0000000000..9a7c573b9c --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/mccode.sim @@ -0,0 +1,175 @@ +mcstas simulation description file for ODIN_baseline. +Date: Thu Feb 26 14:53:48 2026 +Program: 3.99.99, git + +begin instrument: ODIN_baseline + File: ODIN_baseline_10xMPI_1e8_seed_1000/mccode + Source: ODIN_baseline.instr + Parameters: l_min(double) l_max(double) n_pulses(int) wfm_delta(double) bp_frequency(double) WFM1_phase_offset(double) jitter_wfmc_1(double) WFM2_phase_offset(double) jitter_wfmc_2(double) fo1_phase_offset(double) jitter_fo_chopper_1(double) bp1_phase_offset(double) jitter_bp1(double) fo2_phase_offset(double) jitter_fo_chopper_2(double) bp2_phase_offset(double) jitter_bp2(double) t0_phase_offset(double) jit_t0_sec(double) fo3_phase_offset(double) jitter_fo_chopper_3(double) fo4_phase_offset(double) jitter_fo_chopper_4(double) fo5_phase_offset(double) jitter_fo_chopper_5(double) choppers(int) + Trace_enabled: yes + Default_main: yes + Embedded_runtime: yes +end instrument + +begin simulation: ODIN_baseline_10xMPI_1e8_seed_1000 + Format: McCode with text headers + URL: http://www.mccode.org + Creator: 3.99.99, git + Instrument: ODIN_baseline.instr + Ncount: 100000000 + Trace: no + Gravitation: no + Seed: 1000 + Directory: ODIN_baseline_10xMPI_1e8_seed_1000 + Nodes: 10 + Param: l_min=1 + Param: l_max=11 + Param: n_pulses=1 + Param: wfm_delta=0.3 + Param: bp_frequency=7 + Param: WFM1_phase_offset=0 + Param: jitter_wfmc_1=0 + Param: WFM2_phase_offset=0 + Param: jitter_wfmc_2=0 + Param: fo1_phase_offset=0 + Param: jitter_fo_chopper_1=0 + Param: bp1_phase_offset=0 + Param: jitter_bp1=0 + Param: fo2_phase_offset=0 + Param: jitter_fo_chopper_2=0 + Param: bp2_phase_offset=0 + Param: jitter_bp2=0 + Param: t0_phase_offset=0 + Param: jit_t0_sec=0 + Param: fo3_phase_offset=0 + Param: jitter_fo_chopper_3=0 + Param: fo4_phase_offset=0 + Param: jitter_fo_chopper_4=0 + Param: fo5_phase_offset=0 + Param: jitter_fo_chopper_5=0 + Param: choppers=2 +end simulation + +begin data + Date: Thu Feb 26 14:54:04 2026 (1772114044) + type: array_2d(300, 300) + Source: ODIN_baseline (ODIN_baseline.instr) + component: sample_PSD + position: 0.026 0 60.5 + title: Intensity Position Position Monitor (Square) per bin + Ncount: 100000000 + filename: image.dat + statistics: X0=-0.00439781; dX=0.0782353; Y0=-0.000502312; dY=0.0753274; + signal: Min=0; Max=229228; Mean=10185.2; + values: 9.16671e+08 5.03405e+06 100753 + xvar: x + yvar: y + xlabel: x [m] + ylabel: y [m] + zvar: I + zlabel: Signal per bin + xylimits: -0.15 0.15 -0.15 0.15 + variables: I I_err N +end data + +begin data + Date: Thu Feb 26 14:54:04 2026 (1772114044) + type: array_1d(300) + Source: ODIN_baseline (ODIN_baseline.instr) + component: profile_x + position: 0.026 0 60.5 + title: x [m] monitor + Ncount: 100000000 + filename: profile_x.dat + statistics: X0=-0.00439781; dX=0.0782353; + signal: Min=1.65241e+06; Max=4.96845e+06; Mean=3.05557e+06; + values: 9.16671e+08 5.03405e+06 100753 + xvar: x + yvar: (I,I_err) + xlabel: x [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: x I I_err N +end data + +begin data + Date: Thu Feb 26 14:54:04 2026 (1772114044) + type: array_1d(300) + Source: ODIN_baseline (ODIN_baseline.instr) + component: profile_y + position: 0.026 0 60.5 + title: y [m] monitor + Ncount: 100000000 + filename: profile_y.dat + statistics: X0=-0.000502312; dX=0.0753274; + signal: Min=1.13147e+06; Max=4.66548e+06; Mean=3.05557e+06; + values: 9.16671e+08 5.03405e+06 100753 + xvar: y + yvar: (I,I_err) + xlabel: y [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: y I I_err N +end data + +begin data + Date: Thu Feb 26 14:54:04 2026 (1772114044) + type: array_1d(300) + Source: ODIN_baseline (ODIN_baseline.instr) + component: wavelength + position: 0.026 0 60.5 + title: Wavelength [Angs] monitor + Ncount: 100000000 + filename: wavelength.dat + statistics: X0=3.53648; dX=1.45879; + signal: Min=0; Max=1.20393e+07; Mean=3.05557e+06; + values: 9.16671e+08 5.03405e+06 100753 + xvar: L + yvar: (I,I_err) + xlabel: Wavelength [Angs] + ylabel: Intensity [n/s/bin] + xlimits: 0.5 10 + variables: L I I_err N +end data + +begin data + Date: Thu Feb 26 14:54:04 2026 (1772114044) + type: array_1d(300) + Source: ODIN_baseline (ODIN_baseline.instr) + component: tof + position: 0.026 0 60.5 + title: TOF [s] monitor + Ncount: 100000000 + filename: time.dat + statistics: X0=0.0557584; dX=0.0222333; + signal: Min=0; Max=1.45069e+07; Mean=3.05557e+06; + values: 9.16671e+08 5.03405e+06 100753 + xvar: t + yvar: (I,I_err) + xlabel: TOF [s] + ylabel: Intensity [n/s/bin] + xlimits: 0 0.15 + variables: t I I_err N +end data + +begin data + Date: Thu Feb 26 14:54:04 2026 (1772114044) + type: array_2d(300, 300) + Source: ODIN_baseline (ODIN_baseline.instr) + component: wavelength_tof + position: 0.026 0 60.5 + title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin + Ncount: 100000000 + filename: wavelength_tof.dat + statistics: X0=0.0557584; dX=0.0222333; Y0=3.53648; dY=1.45879; + signal: Min=0; Max=1.1139e+07; Mean=10185.2; + values: 9.16671e+08 5.03405e+06 100753 + xvar: TO + yvar: Wa + xlabel: TOF [s] + ylabel: Wavelength [Angs] + zvar: I + zlabel: Signal per bin + xylimits: 0 0.15 0.5 10 + variables: I I_err N +end data diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/profile_x.dat b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/profile_x.dat new file mode 100644 index 0000000000..f6a3ba189c --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/profile_x.dat @@ -0,0 +1,353 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_baseline.instr +# Ncount: 10000000 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: ODIN_baseline_10xMPI_1e8_seed_1000 +# Nodes: 10 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Date: Thu Feb 26 14:54:04 2026 (1772114044) +# type: array_1d(300) +# Source: ODIN_baseline (ODIN_baseline.instr) +# component: profile_x +# position: 0.026 0 60.5 +# title: x [m] monitor +# Ncount: 100000000 +# filename: profile_x.dat +# statistics: X0=-0.00439781; dX=0.0782353; +# signal: Min=1.65241e+06; Max=4.96845e+06; Mean=3.05557e+06; +# values: 9.16671e+08 5.03405e+06 100753 +# xvar: x +# yvar: (I,I_err) +# xlabel: x [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: x I I_err N +-0.1495 1939204.281 229961.4283 224 +-0.1485 2180516.421 232658.3945 256 +-0.1475 1906899.53 232635.215 235 +-0.1465 2508570.339 283519.9705 260 +-0.1455 2616777.456 280517.7492 256 +-0.1445 2175386.673 247472.3346 241 +-0.1435 1668561.401 191223.8802 206 +-0.1425 1968344.368 220436.641 234 +-0.1415 2091953.287 215102.7967 244 +-0.1405 2236374.808 253069.6539 260 +-0.1395 1957865.044 229798.6681 236 +-0.1385 2063985.566 232479.1236 234 +-0.1375 2813155.867 273608.8162 265 +-0.1365 2514055.378 260671.5147 279 +-0.1355 2331757.558 261370.2119 251 +-0.1345 2625448.936 258980.7594 273 +-0.1335 2118677.044 245953.8275 240 +-0.1325 2332480.287 232239.9459 258 +-0.1315 2064168.95 234112.2686 237 +-0.1305 2510125.49 264467.5032 279 +-0.1295 2385061.343 243547.28 277 +-0.1285 2148280.821 250849.4641 231 +-0.1275 2998575.797 308366.8195 265 +-0.1265 2179155.717 243208.049 255 +-0.1255 2186707.573 237320.2225 252 +-0.1245 2148879.91 227740.6128 238 +-0.1235 2326025.565 230957.3442 310 +-0.1225 2203932.537 237557.8107 267 +-0.1215 2600557.013 272038.6929 255 +-0.1205 2282476.481 245383.6974 274 +-0.1195 2674040.397 277507.0655 275 +-0.1185 2671844.495 281732.5296 284 +-0.1175 2664488.09 276768.8383 292 +-0.1165 2422282.147 260456.7109 246 +-0.1155 2658958.715 273257.3977 265 +-0.1145 2517179.357 250832.2818 266 +-0.1135 2767614.512 282528.5901 281 +-0.1125 2790339.283 278071.2348 306 +-0.1115 2369444.721 244575.8732 281 +-0.1105 2782117.966 277575.119 304 +-0.1095 2763857.313 270019.8703 302 +-0.1085 2261598.567 241933.7837 279 +-0.1075 2494915.181 246420.7349 286 +-0.1065 2892358.903 294301.3134 272 +-0.1055 2443841.223 260874.6388 286 +-0.1045 2878062.459 277746.1956 309 +-0.1035 2343581.697 239922.6914 268 +-0.1025 2871955.01 286607.1629 305 +-0.1015 3194734.329 306689.0308 294 +-0.1005 2807403.969 290774.3859 274 +-0.0995 3009240.731 295658.252 284 +-0.0985 2909457.393 299150.8379 284 +-0.0975 2833600.116 287874.6992 305 +-0.0965 3296851.726 298190.8762 349 +-0.0955 2971962.885 280024.0595 303 +-0.0945 3006512.046 289777.4264 339 +-0.0935 2927165.11 286799.7462 296 +-0.0925 2809509.584 289603.0052 309 +-0.0915 2532633.527 256630.2262 290 +-0.0905 2849400.77 280790.0346 341 +-0.0895 3064242.721 302291.5578 317 +-0.0885 3410302.458 307253.6921 330 +-0.0875 2775075.635 266927.972 312 +-0.0865 2686427.964 265590.8573 324 +-0.0855 3506177.966 333248.9407 327 +-0.0845 3000929.858 296690.146 313 +-0.0835 3086141.279 295445.2589 318 +-0.0825 3505216.867 328275.8537 326 +-0.0815 3040992.595 297610.3823 290 +-0.0805 2928539.975 288724.7022 323 +-0.0795 2840195.601 264413.4917 322 +-0.0785 3231119.983 304569.4182 320 +-0.0775 2868617.561 282450.8087 302 +-0.0765 3273120.569 299647.0562 344 +-0.0755 3503752.839 324921.7982 356 +-0.0745 3923188.29 351789.0264 382 +-0.0735 3088163.68 299956.3576 331 +-0.0725 3752642.533 330942.9262 343 +-0.0715 3590258.547 303251.5111 383 +-0.0705 3955817.838 347305.4636 374 +-0.0695 3258904.22 303979.7343 348 +-0.0685 3352700.904 313398.4903 349 +-0.0675 3693610.13 321874.0505 371 +-0.0665 4968453.632 402867.2496 410 +-0.0655 3475611.823 314436.6481 377 +-0.0645 3850465.409 327689.1358 378 +-0.0635 4010403.61 343427.0785 394 +-0.0625 4091678.245 351627.9391 404 +-0.0615 3632309.019 324415.7162 357 +-0.0605 4354126.724 365844.7483 383 +-0.0595 4251840.281 368883.1649 389 +-0.0585 3901760.768 329111.8865 361 +-0.0575 3839116.707 321989.6999 391 +-0.0565 3793560.08 312053.3189 416 +-0.0555 3583775.666 306480.713 363 +-0.0545 3820766.03 333517.1329 370 +-0.0535 4486512.237 368376.8959 422 +-0.0525 3758793.354 325790.7865 363 +-0.0515 4172192.48 343934.3513 388 +-0.0505 4109910.007 347490.6112 410 +-0.0495 4391577.792 356569.6668 397 +-0.0485 4084657.885 331991.467 421 +-0.0475 3402967.728 310590.3093 375 +-0.0465 3703227.424 313740.0582 415 +-0.0455 4110197.668 337752.0453 434 +-0.0445 3372610.533 309838.2941 367 +-0.0435 3805147.067 318756.7855 392 +-0.0425 4244417.225 361513.4471 385 +-0.0415 3750097.176 327967.427 365 +-0.0405 4100133.239 357159.1395 397 +-0.0395 4143124.191 362477.2301 396 +-0.0385 4030882.562 355314.1042 392 +-0.0375 3254023.431 286946.0416 387 +-0.0365 3754896.594 338386.2312 389 +-0.0355 3650353.954 321910.6697 386 +-0.0345 3379100.811 299089.7122 395 +-0.0335 3921150.591 342948.0335 412 +-0.0325 3429502.816 295570.3307 417 +-0.0315 4283878.626 368932.85 405 +-0.0305 3969823.428 349677.0039 377 +-0.0295 3161020.599 293692.1592 352 +-0.0285 4522425.166 363258.5056 454 +-0.0275 3594753.024 299168.5758 448 +-0.0265 3688339.995 319470.0768 426 +-0.0255 4207957.063 360220.5608 428 +-0.0245 3961506.545 345547.2872 404 +-0.0235 3711560.252 317012.6368 427 +-0.0225 3203574.873 302109.8426 381 +-0.0215 3453891.615 306578.7795 403 +-0.0205 4127565.582 353198.2505 397 +-0.0195 3527506.626 322600.1938 394 +-0.0185 3396391.783 300066.3086 386 +-0.0175 3822980.805 344592.0302 391 +-0.0165 3426363.34 305757.5156 388 +-0.0155 3888962.037 342966.3547 396 +-0.0145 3831340.099 343483.4709 381 +-0.0135 3692639.926 309414.9758 434 +-0.0125 3933171.355 344930.7094 400 +-0.0115 3322134.89 307171.0995 370 +-0.0105 4054945.936 342743.6182 441 +-0.0095 4039632.088 352350.8463 399 +-0.0085 3562478.582 323288.4947 416 +-0.0075 4410739.608 357596.1653 464 +-0.0065 3336682.807 292086.7845 406 +-0.0055 3774270.673 333043.9635 387 +-0.0045 4066674.941 354216.439 408 +-0.0035 4104367.159 343630.5224 442 +-0.0025 3784696.76 328610.3109 402 +-0.0015 3562758.489 306350.0372 407 +-0.0005 4181717.306 345325.6033 429 +0.0005 4416372.757 368892.3882 419 +0.0015 3515780.961 317032.8234 407 +0.0025 3499412.899 313892.5145 399 +0.0035 3644543.932 312987.8681 425 +0.0045 3911027.859 341962.0524 446 +0.0055 3485397.064 326411.5263 384 +0.0065 3571306.215 321096.4828 396 +0.0075 3481057.619 322680.9758 387 +0.0085 3201442.082 290005.0821 369 +0.0095 3474465.119 316613.9201 367 +0.0105 3869118.716 329522.0375 399 +0.0115 4043007.065 353718.7502 397 +0.0125 3525945.171 326336.0362 373 +0.0135 3172295.014 287650.6835 392 +0.0145 3567090.322 305122.8395 389 +0.0155 3859918.377 334924.0293 430 +0.0165 3084318.366 291442.6155 360 +0.0175 3539669.841 308464.0545 401 +0.0185 3378535.183 292334.81 403 +0.0195 3969382.835 327681.4839 454 +0.0205 3911275.803 336496.1976 413 +0.0215 3743501.48 314100.7261 429 +0.0225 3235243.874 293624.3036 368 +0.0235 3673660.514 327942.7488 387 +0.0245 3582167.37 328224.9066 380 +0.0255 3593982.717 315660.146 379 +0.0265 4398332.964 354815.1415 439 +0.0275 3613247.8 310026.6111 426 +0.0285 3729366.41 322580.5472 386 +0.0295 3422681.856 312580.4078 393 +0.0305 3662973.966 328720.7726 406 +0.0315 3530798.443 314499.8005 397 +0.0325 3847418.713 341588.8717 400 +0.0335 3305088.935 301996.7871 361 +0.0345 3831754.09 329389.307 379 +0.0355 3576025.433 315107.4524 388 +0.0365 3696528.468 318036.5577 397 +0.0375 3350175.892 291936.9797 376 +0.0385 3276737.402 289755.252 388 +0.0395 3784100.165 342463.3459 397 +0.0405 3361776.746 309600.5041 388 +0.0415 3377303.105 314564.06 367 +0.0425 3641798.411 312137.9336 398 +0.0435 3300011.429 296441.3955 390 +0.0445 3688328.46 315795.4661 398 +0.0455 3429188.183 302898.4235 387 +0.0465 3502477.203 323576.0856 363 +0.0475 3637313.504 317705.3874 391 +0.0485 3318294.864 303516.9007 364 +0.0495 3301961.686 299305.4666 395 +0.0505 3427185.7 310494.7062 381 +0.0515 3068853.047 287120.6205 377 +0.0525 3050117.102 263567.3937 397 +0.0535 3446806.607 317675.7607 353 +0.0545 3445140.022 294672.8848 372 +0.0555 3979169.264 340864.9063 375 +0.0565 3140827.048 281306.3903 366 +0.0575 3322601.54 297672.0725 362 +0.0585 3296531.361 302244.5367 390 +0.0595 3296863.386 291249.0164 380 +0.0605 3648730.84 322957.9197 355 +0.0615 2826040.735 267452.9964 328 +0.0625 2864783.437 255960.811 355 +0.0635 3512410.628 309957.1227 357 +0.0645 3000433.852 273324.5275 347 +0.0655 3475445.696 322423.0445 352 +0.0665 3543808.718 317829.9626 376 +0.0675 2846462.269 279067.8385 322 +0.0685 3137132.415 280184.8104 351 +0.0695 2575930.648 245374.4043 343 +0.0705 3100553.065 294177.4337 336 +0.0715 2717015.744 260005.276 326 +0.0725 2767491.965 275850.4839 341 +0.0735 3153206.634 283793.3096 362 +0.0745 3405531.608 310146.6246 331 +0.0755 3023790.029 275533.1336 369 +0.0765 3449462.96 310027.8492 393 +0.0775 2900944.411 275234.9575 331 +0.0785 2393551.906 244599.5276 287 +0.0795 2287532.449 240647.9212 309 +0.0805 3015021.754 294644.1943 312 +0.0815 2652478.199 265981.6889 308 +0.0825 2561809.922 261817.322 322 +0.0835 2561784.153 256845.5446 325 +0.0845 2705753.831 252744.5873 322 +0.0855 2478815.595 231424.3708 331 +0.0865 2892004.452 265392.2859 331 +0.0875 2788876.258 282900.9553 303 +0.0885 2689830.094 277874.7696 294 +0.0895 2542135.677 249937.467 344 +0.0905 2785197.693 268398.0877 322 +0.0915 2420891.895 247569.9828 295 +0.0925 2978614.992 295971.7447 305 +0.0935 2187995.565 238850.1658 280 +0.0945 2160080.664 228732.7121 303 +0.0955 2788112.8 278161.462 281 +0.0965 2646262.947 255998.3277 305 +0.0975 2929916.98 282589.0382 319 +0.0985 2906529.248 287388.8696 319 +0.0995 2778866.115 282049.888 305 +0.1005 2186025.719 225967.4717 279 +0.1015 2633336.646 277668.1472 282 +0.1025 2688437.611 258410.6538 337 +0.1035 2567839.273 275113.7997 291 +0.1045 2430007.373 242529.5808 303 +0.1055 2175987.975 222546.8832 292 +0.1065 2187702.636 234613.5053 263 +0.1075 1920391.87 212599.293 265 +0.1085 2449403.184 255217.4556 303 +0.1095 2834396.963 298285.0252 294 +0.1105 2191590.296 233586.214 279 +0.1115 2247712.895 227335.8715 288 +0.1125 2161027.829 239759.7729 279 +0.1135 1885615.742 203109.7589 268 +0.1145 2127613.139 239367.2526 279 +0.1155 2275002.925 238747.1857 307 +0.1165 2401972.301 251669.2812 289 +0.1175 2379409.305 254454.0385 283 +0.1185 1797269.6 209506.9903 247 +0.1195 2427308.975 240235.203 296 +0.1205 2070308.305 224168.4007 274 +0.1215 1712674.256 207067.7032 257 +0.1225 1937996.493 223330.4368 249 +0.1235 1747304.912 192252.8453 255 +0.1245 2173606.923 244060.2757 262 +0.1255 1895641.208 218031.3114 259 +0.1265 2204957.133 233911.1007 268 +0.1275 1898068.77 207508.5407 249 +0.1285 2480926.546 257860.0674 272 +0.1295 2318554.885 245870.5268 279 +0.1305 1884703.391 215861.4398 247 +0.1315 1837986.51 204742.7973 247 +0.1325 2145016.819 248763.8875 260 +0.1335 2207846.416 238068.1523 270 +0.1345 1686542.434 212710.4768 209 +0.1355 2134886.107 213003.1573 264 +0.1365 1906289.362 221328.3858 268 +0.1375 2082891.184 222914.4611 268 +0.1385 1772628.864 198727.89 237 +0.1395 2109601.399 220008.8553 282 +0.1405 1884125.125 227459.0766 227 +0.1415 2035979.895 233704.1554 271 +0.1425 2134046.859 234389.4537 260 +0.1435 2367887.018 251476.3226 270 +0.1445 1836441.595 210875.3294 245 +0.1455 1652406.164 193655.1488 231 +0.1465 1826118.564 214817.6176 241 +0.1475 2096736.358 233449.7894 241 +0.1485 1790488.873 217462.7502 233 +0.1495 1687782.118 203449.7459 244 diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/profile_y.dat b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/profile_y.dat new file mode 100644 index 0000000000..29c1d9d571 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/profile_y.dat @@ -0,0 +1,353 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_baseline.instr +# Ncount: 10000000 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: ODIN_baseline_10xMPI_1e8_seed_1000 +# Nodes: 10 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Date: Thu Feb 26 14:54:04 2026 (1772114044) +# type: array_1d(300) +# Source: ODIN_baseline (ODIN_baseline.instr) +# component: profile_y +# position: 0.026 0 60.5 +# title: y [m] monitor +# Ncount: 100000000 +# filename: profile_y.dat +# statistics: X0=-0.000502312; dX=0.0753274; +# signal: Min=1.13147e+06; Max=4.66548e+06; Mean=3.05557e+06; +# values: 9.16671e+08 5.03405e+06 100753 +# xvar: y +# yvar: (I,I_err) +# xlabel: y [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: y I I_err N +-0.1495 1659891.069 193887.1743 203 +-0.1485 1754945.855 203332.685 228 +-0.1475 1629526.192 203789.8378 191 +-0.1465 1575624.668 210931.5927 176 +-0.1455 1636189.346 209949.0003 196 +-0.1445 1131471.969 153348.0968 194 +-0.1435 1185133.455 154185.9688 184 +-0.1425 1660326.823 207128.8888 202 +-0.1415 1651895.87 216526.8477 205 +-0.1405 2009342.245 234191.3049 225 +-0.1395 1372072.15 180698.1708 190 +-0.1385 1933337.931 218466.1884 240 +-0.1375 1573812.181 184601.4168 220 +-0.1365 1850584.906 200162.7044 249 +-0.1355 1652332.507 193672.99 217 +-0.1345 2076973.553 227418.2956 238 +-0.1335 1830729.596 215538.7959 224 +-0.1325 1821090.757 212524.4583 230 +-0.1315 1716278.801 196370.6463 207 +-0.1305 1904859.344 227845.8616 238 +-0.1295 2018351.114 240230.8582 244 +-0.1285 2044764.162 240111.5631 236 +-0.1275 2223877.844 244626.9051 264 +-0.1265 2493560.959 248285.4462 288 +-0.1255 1467426.975 183453.5157 220 +-0.1245 2289586.24 249137.8396 268 +-0.1235 1951559.234 230169.5346 245 +-0.1225 2275686.418 252337.4355 252 +-0.1215 2143595.722 240887.2686 270 +-0.1205 1990539.546 218706.2163 251 +-0.1195 2181923.68 236773.5968 271 +-0.1185 2119730.451 250542.6315 254 +-0.1175 2617444.21 271138.864 305 +-0.1165 1838456.863 218425.4183 222 +-0.1155 2184347.663 237645.1792 253 +-0.1145 2532567.089 270824.7811 293 +-0.1135 2435123.969 261198.1605 297 +-0.1125 2344951.825 262002.1458 274 +-0.1115 2262074.58 242000.3559 276 +-0.1105 2382198.47 256721.6469 276 +-0.1095 2050015.131 224836.0826 258 +-0.1085 2410262.511 255306.9608 283 +-0.1075 2440626.151 254344.1709 263 +-0.1065 2815495.283 278622.7992 284 +-0.1055 2055711.33 218145.4421 284 +-0.1045 2726808.457 291746.5849 277 +-0.1035 2916102.647 284763.3567 326 +-0.1025 2120972.58 223853.8404 289 +-0.1015 2704034.904 270233.0456 303 +-0.1005 2852845.929 283321.4705 282 +-0.0995 2279907.529 235166.4552 301 +-0.0985 2306832.395 229610.5883 296 +-0.0975 2512508.08 249962.4558 308 +-0.0965 2762286.137 277257.2125 313 +-0.0955 2521069.878 263176.6225 299 +-0.0945 2772463.216 273160.3653 288 +-0.0935 3128066.901 292501.9265 339 +-0.0925 2953648.629 284270.6334 328 +-0.0915 2784363.324 262387.6809 315 +-0.0905 3254800.887 299141.1914 323 +-0.0895 3195774.006 301310.2369 317 +-0.0885 3031003.187 296853.8804 352 +-0.0875 2775094.837 269807.5056 331 +-0.0865 2828383.289 284923.7347 302 +-0.0855 2861927.193 281662.5054 312 +-0.0845 3137422.667 294898.937 336 +-0.0835 3152537.052 302666.5063 311 +-0.0825 3150470.015 311326.7637 316 +-0.0815 3120917.187 280176.0467 347 +-0.0805 3060286.254 296316.7837 333 +-0.0795 2854587.582 277140.2746 358 +-0.0785 2909592.285 268231.1875 342 +-0.0775 3339157.429 295440.2751 331 +-0.0765 3652074.147 337841.2685 374 +-0.0755 3496770.683 316349.777 358 +-0.0745 2700939.059 260811.3085 339 +-0.0735 3227742.783 295390.52 358 +-0.0725 2821646.007 276290.5273 359 +-0.0715 4013704.668 354053.9089 363 +-0.0705 3520521.713 304062.7748 379 +-0.0695 3390570.357 306479.883 379 +-0.0685 3697767.297 321539.6979 372 +-0.0675 3210658.84 287366.0754 360 +-0.0665 3906896.362 334828.4511 409 +-0.0655 3634097.144 318038.0095 397 +-0.0645 3336264.51 315490.4037 343 +-0.0635 3076073.805 271405.9207 372 +-0.0625 3148606.117 287132.6112 356 +-0.0615 3664034.549 317383.0286 368 +-0.0605 3645050.315 313016.4702 398 +-0.0595 3120228.778 289858.335 355 +-0.0585 3861484.616 328647.2161 418 +-0.0575 3341091.657 291422.1809 368 +-0.0565 3426792.281 306244.1986 391 +-0.0555 3241646.706 308258.3372 377 +-0.0545 4108006.986 345814.3844 389 +-0.0535 3804390.546 311499.3628 420 +-0.0525 4051987.401 338722.0464 417 +-0.0515 3616804.871 318637.8918 391 +-0.0505 3156396.76 285872.2884 383 +-0.0495 3860865.749 338402.6405 397 +-0.0485 3880391.845 341727.0888 392 +-0.0475 4636693.69 370063.4002 438 +-0.0465 3925015.644 326343.8359 402 +-0.0455 4043219.542 334179.1131 418 +-0.0445 4029643.083 342617.7551 412 +-0.0435 3674857.656 308195.1062 420 +-0.0425 4595974.361 378976.9747 408 +-0.0415 4222935.487 365012.5213 378 +-0.0405 4332599.878 358669.2897 405 +-0.0395 4424208.965 360169.6322 443 +-0.0385 4005880.865 345858.4602 397 +-0.0375 4417774.194 375564.3505 420 +-0.0365 3650458.101 327658.7533 400 +-0.0355 3747301.708 326100.2393 409 +-0.0345 3509794.759 303325.3301 384 +-0.0335 3604023.081 314956.0839 390 +-0.0325 3543798.405 298192.4395 415 +-0.0315 3631117.776 308807.1374 411 +-0.0305 3659542.515 331966.1245 410 +-0.0295 3460065.014 301189.0505 386 +-0.0285 4045140.15 352376.1179 405 +-0.0275 3893883.46 345887.5546 431 +-0.0265 3587335.225 313864.1528 410 +-0.0255 3959937.363 327655.1207 413 +-0.0245 4150908.432 351820.0499 429 +-0.0235 3366799.07 288145.4514 381 +-0.0225 3399625.666 295421.9086 403 +-0.0215 4227559.969 364195.1757 396 +-0.0205 3686607.998 324031.524 401 +-0.0195 4145487.546 351221.8088 406 +-0.0185 3786709.479 323386.3456 412 +-0.0175 3732029.087 310346.8686 434 +-0.0165 3739090.559 329903.0141 380 +-0.0155 3092267.408 277651.5631 382 +-0.0145 4452521.181 370278.5628 408 +-0.0135 3623927.842 310049.186 419 +-0.0125 3993643.219 330184.4827 416 +-0.0115 4397531.881 362534.5779 404 +-0.0105 4392547.221 367671.3613 440 +-0.0095 4171526.382 330270.2442 421 +-0.0085 4275004.782 350830.0563 464 +-0.0075 3765456.071 304878.859 439 +-0.0065 3867430.951 323767.4061 417 +-0.0055 4203013.072 337943.7934 444 +-0.0045 4267929.417 349476.1921 453 +-0.0035 4550242.419 371682.447 462 +-0.0025 3914163.458 334644.2273 432 +-0.0015 3919734.173 337613.4226 398 +-0.0005 3901220.215 318057.52 423 +0.0005 4349044.028 372296.0489 413 +0.0015 3878104.187 340121.8403 410 +0.0025 3818730.253 333873.61 392 +0.0035 3175864.986 287077.0852 366 +0.0045 4383342.023 360255.665 429 +0.0055 4444480.258 359069.3746 455 +0.0065 3638636.049 316243.9899 408 +0.0075 3395236.847 302843.9121 421 +0.0085 4640058.671 365349.3179 459 +0.0095 4114061.57 341770.219 429 +0.0105 3958997.118 332252.0464 404 +0.0115 3569216.222 307684.664 401 +0.0125 4004179.49 345196.1629 436 +0.0135 3569024.632 313306.4135 434 +0.0145 4665480.182 367998.8534 446 +0.0155 4341097.544 372022.185 400 +0.0165 4520583.096 357174.2766 423 +0.0175 4014155.847 338761.9774 413 +0.0185 3920623.918 348265.3318 413 +0.0195 4165756.058 342793.3663 436 +0.0205 4272800.162 355683.6703 419 +0.0215 4232426.415 361882.8098 431 +0.0225 3269715.236 308357.911 379 +0.0235 4198818.199 344102.7796 448 +0.0245 3757097.029 329616.7079 403 +0.0255 3506150.604 310736.1567 369 +0.0265 3734164.214 320683.5509 377 +0.0275 3826969.337 336538.6334 403 +0.0285 3818938.509 319285.2321 415 +0.0295 3891002.172 312308.5875 414 +0.0305 3811518.974 313225.4795 415 +0.0315 3778495.596 315195.5484 396 +0.0325 3874126.476 330655.74 422 +0.0335 3740600.341 353213.4449 395 +0.0345 4379239.932 356454.1764 417 +0.0355 3936312.885 346514.7063 391 +0.0365 3802645.539 340968.9882 385 +0.0375 3478678.446 313807.5647 388 +0.0385 4058712.14 340501.9651 429 +0.0395 3995932.268 345637.1793 398 +0.0405 4588926.673 367899.1355 435 +0.0415 3603722.947 305066.1684 409 +0.0425 3804204.908 327288.8154 384 +0.0435 3202752.52 291206.0128 354 +0.0445 3891553.611 348656.7432 381 +0.0455 3564131.789 304388.485 415 +0.0465 3163789.56 289288.838 365 +0.0475 3789901.157 330835.7503 385 +0.0485 3382207.874 298244.4191 404 +0.0495 3920941.436 317807.6861 418 +0.0505 3634038.254 313760.9483 402 +0.0515 3620905.869 320301.8763 409 +0.0525 3710777.056 331084.012 382 +0.0535 3497036.031 314446.5081 380 +0.0545 3232621.389 301407.5032 354 +0.0555 4001476.911 350388.2098 389 +0.0565 3355611.446 300449.2827 370 +0.0575 3866844.347 328163.2967 402 +0.0585 3957228.561 347179.438 371 +0.0595 3725995.776 324824.509 396 +0.0605 3402460.951 315001.1179 382 +0.0615 3747449.503 335831.5218 375 +0.0625 2998125.153 275436.9187 362 +0.0635 3189851.671 288543.9664 366 +0.0645 3659227.825 325973.0336 370 +0.0655 3822797.527 335348.2365 366 +0.0665 3958645.028 339662.064 387 +0.0675 3088426.802 297430.5618 333 +0.0685 2933150.481 282427.0171 330 +0.0695 3855162.544 334911.1086 354 +0.0705 3848453.503 357661.2352 363 +0.0715 4219852.977 366038.1516 372 +0.0725 2920624.498 278012.0509 333 +0.0735 2913543.064 266568.7703 394 +0.0745 3315113.192 299731.711 354 +0.0755 3360847.011 302766.9368 373 +0.0765 3063058.538 303795.2764 322 +0.0775 3510082.816 307982.7464 366 +0.0785 3050112.82 281152.6351 332 +0.0795 3655411.287 336912.8456 363 +0.0805 3330476.709 299400.2304 373 +0.0815 3733505.087 314167.2251 354 +0.0825 2909534.088 292909.2151 331 +0.0835 3070552.929 275504.3137 365 +0.0845 3027846.371 296255.0239 305 +0.0855 2840916.455 286447.3579 331 +0.0865 2510795.444 252454.9791 304 +0.0875 2728051.276 258845.6334 315 +0.0885 2704385.04 272646.0287 320 +0.0895 2636378.003 277897.2558 311 +0.0905 2781624.689 270399.8268 328 +0.0915 2716381.585 280887.9329 331 +0.0925 3078963.683 270942.8223 367 +0.0935 2713013.796 265657.899 324 +0.0945 2386884.095 258288.9732 271 +0.0955 2301914.048 232901.5409 303 +0.0965 3247896.868 323911.9987 298 +0.0975 2698702.764 271055.6673 284 +0.0985 2304273.182 241330.1153 285 +0.0995 2547546.626 270251.8732 289 +0.1005 2953309.815 285554.3647 275 +0.1015 2134245.77 218568.6066 291 +0.1025 2634907.555 261090.0458 318 +0.1035 2356357.865 247387.4746 290 +0.1045 2422925.012 247474.9609 285 +0.1055 2589877.65 260296.3209 287 +0.1065 2277665.182 234731.7772 278 +0.1075 2784739.5 286626.7897 274 +0.1085 2577125.586 256000.9686 289 +0.1095 2593606.524 262856.1142 280 +0.1105 2468510.199 256606.9111 266 +0.1115 2324583.557 256381.8026 265 +0.1125 2213544.122 254482.3661 273 +0.1135 2709661.699 266848.2854 297 +0.1145 2204148.792 240611.6114 285 +0.1155 2544422.262 275932.6093 262 +0.1165 2213163.997 241245.2263 276 +0.1175 2440231.358 272620.0369 267 +0.1185 2140643.724 235241.5343 271 +0.1195 2539781.091 280315.5553 266 +0.1205 1816143.45 202022.6078 258 +0.1215 1703508.882 199745.4122 252 +0.1225 2460644.978 262046.9285 266 +0.1235 1996679.232 221749.3129 249 +0.1245 2236138.776 253307.8078 258 +0.1255 1792206.128 215789.8447 229 +0.1265 1633717.194 202953.2448 216 +0.1275 1455058.418 175148.7921 215 +0.1285 1852869.659 222039.2252 247 +0.1295 2373786.222 264870.9942 250 +0.1305 1692803.123 198209.5513 246 +0.1315 1906413.452 222945.3046 232 +0.1325 1572401.381 194451.8959 233 +0.1335 1426368.72 199520.5186 206 +0.1345 1750846.765 196893.9458 241 +0.1355 1629619.444 192319.6899 225 +0.1365 1722569.357 220929.4925 215 +0.1375 1761812.281 226583.2567 202 +0.1385 1511007.086 193167.4163 212 +0.1395 1527339.475 184988.4686 223 +0.1405 1755236.382 205732.8335 198 +0.1415 1465742.139 173367.5552 213 +0.1425 1478456.718 184322.2382 189 +0.1435 1568770.56 203817.989 196 +0.1445 1535205.399 187296.0188 228 +0.1455 1518423.437 186947.6095 204 +0.1465 1562758.512 196091.4599 187 +0.1475 1373378.849 186020.7779 181 +0.1485 1328667.611 163516.0002 200 +0.1495 1462987.873 175461.1456 200 diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/time.dat b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/time.dat new file mode 100644 index 0000000000..2e17ea28df --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/time.dat @@ -0,0 +1,353 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_baseline.instr +# Ncount: 10000000 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: ODIN_baseline_10xMPI_1e8_seed_1000 +# Nodes: 10 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Date: Thu Feb 26 14:54:04 2026 (1772114044) +# type: array_1d(300) +# Source: ODIN_baseline (ODIN_baseline.instr) +# component: tof +# position: 0.026 0 60.5 +# title: TOF [s] monitor +# Ncount: 100000000 +# filename: time.dat +# statistics: X0=0.0557584; dX=0.0222333; +# signal: Min=0; Max=1.45069e+07; Mean=3.05557e+06; +# values: 9.16671e+08 5.03405e+06 100753 +# xvar: t +# yvar: (I,I_err) +# xlabel: TOF [s] +# ylabel: Intensity [n/s/bin] +# xlimits: 0 0.15 +# variables: t I I_err N +0.00025 0 0 0 +0.00075 0 0 0 +0.00125 0 0 0 +0.00175 0 0 0 +0.00225 0 0 0 +0.00275 0 0 0 +0.00325 0 0 0 +0.00375 0 0 0 +0.00425 0 0 0 +0.00475 0 0 0 +0.00525 0 0 0 +0.00575 0 0 0 +0.00625 0 0 0 +0.00675 0 0 0 +0.00725 0 0 0 +0.00775 0 0 0 +0.00825 0 0 0 +0.00875 0 0 0 +0.00925 0 0 0 +0.00975 0 0 0 +0.01025 0 0 0 +0.01075 0 0 0 +0.01125 0 0 0 +0.01175 0 0 0 +0.01225 0 0 0 +0.01275 0 0 0 +0.01325 0 0 0 +0.01375 0 0 0 +0.01425 0 0 0 +0.01475 0 0 0 +0.01525 0 0 0 +0.01575 0 0 0 +0.01625 0 0 0 +0.01675 0 0 0 +0.01725 0 0 0 +0.01775 0 0 0 +0.01825 273526.9785 111515.6239 28 +0.01875 1257147.151 251698.9922 81 +0.01925 1649512.315 264680.4828 130 +0.01975 3201607.444 381981.3206 191 +0.02025 2764915.208 332939.9039 195 +0.02075 3655097.058 387811.4855 234 +0.02125 4067531.992 407922.9074 230 +0.02175 3234155.895 339299.7784 244 +0.02225 4719596.473 431998.3792 286 +0.02275 5198859.436 439744.9303 331 +0.02325 4669674.281 411780.3625 306 +0.02375 5369647.02 434672.0365 344 +0.02425 5428692.401 430989.7295 362 +0.02475 4761005.501 397699.4251 335 +0.02525 6415112.482 455851.4043 409 +0.02575 5785292.844 428582.2396 377 +0.02625 5770633.69 406018.8562 390 +0.02675 6260506.648 413685.4673 441 +0.02725 5163011.618 372746.4244 380 +0.02775 5606764.443 374626.6195 418 +0.02825 5474697.107 358273.0686 445 +0.02875 5420649.806 346271.4089 432 +0.02925 5689374.926 355252.4066 442 +0.02975 5220792.77 328563.4341 459 +0.03025 5887837.905 346034.0474 465 +0.03075 5536088.648 331152.7451 483 +0.03125 5040284.689 309230.0192 446 +0.03175 5397247.347 321945.6539 494 +0.03225 6429531.809 361492.8868 551 +0.03275 4863461.198 313223.096 473 +0.03325 5819844.859 348595.6338 496 +0.03375 6235882.66 374715.1447 534 +0.03425 6077016.6 379743.5721 510 +0.03475 6858873.442 424323.3445 526 +0.03525 5937217.683 395860.5612 474 +0.03575 6203140.316 420479.0103 480 +0.03625 5787034.316 411662.2531 448 +0.03675 6242467.683 452574.5367 466 +0.03725 5451626.482 425035.2883 408 +0.03775 3928026.672 356229.1647 316 +0.03825 1916479.086 242925.3084 165 +0.03875 1696122.178 234115.5603 118 +0.03925 674535.2794 142550.5893 70 +0.03975 552454.445 132578.8686 49 +0.04025 552965.3485 138514.6022 63 +0.04075 1363340.732 244181.2189 108 +0.04125 2868423.036 389254.3365 176 +0.04175 5153966.141 535132.9869 257 +0.04225 9234623.348 725842.189 418 +0.04275 12644054.04 840753.1314 546 +0.04325 13701531.86 859825.563 579 +0.04375 11606505.9 772140.8725 569 +0.04425 13022326.95 810398.4116 617 +0.04475 13492057.2 824000.778 583 +0.04525 12955213.82 795173.3059 614 +0.04575 13552189.38 804555.8671 603 +0.04625 13435986.62 791264.0673 608 +0.04675 12532844.41 749222.9555 625 +0.04725 14506859.35 802675.9887 662 +0.04775 12769489.26 739348.8721 630 +0.04825 12216298.25 710303.2588 641 +0.04875 12374765.39 715975.76 591 +0.04925 13049082.32 731247.5028 642 +0.04975 12789647.54 707697.9717 657 +0.05025 12116044.64 684916.3567 614 +0.05075 11123505.9 637320.289 643 +0.05125 11773511.45 656688.2837 638 +0.05175 11598133.38 643000.5449 651 +0.05225 11953733.06 644529.1423 672 +0.05275 10837269.76 602231.6868 632 +0.05325 11135873.89 604465.6608 621 +0.05375 11261928.29 600453.2242 641 +0.05425 10891389.73 578802.4166 636 +0.05475 11031764.24 579963.9186 639 +0.05525 10649688.22 550172.9508 692 +0.05575 8961678.471 500324.5772 611 +0.05625 9196474.661 497386.786 647 +0.05675 8481172.057 469111.4654 606 +0.05725 8345556.142 452919.2063 631 +0.05775 8411602.082 446136.9544 621 +0.05825 7302873.872 404743.8467 579 +0.05875 6651833.28 372455.3808 591 +0.05925 5170871.309 314590.7391 495 +0.05975 3179520.349 228892.0193 362 +0.06025 1857453.532 167450.8613 245 +0.06075 1147285.426 123956.9915 159 +0.06125 780974.004 109520.3557 118 +0.06175 1144073.023 151717.8253 114 +0.06225 2047358.746 216093.8662 172 +0.06275 3044541.625 258799.136 263 +0.06325 5629489.68 354630.4613 424 +0.06375 7149580.543 395002.3017 516 +0.06425 7125821.225 384243.4382 580 +0.06475 7928364.169 402084.901 633 +0.06525 7179369.132 378060.704 594 +0.06575 7052091.599 367769.6084 620 +0.06625 6921054.23 359120.1623 623 +0.06675 7082444.791 361223.9535 628 +0.06725 6121386.991 329645.9799 580 +0.06775 6502264.779 335323.6081 628 +0.06825 6064533.287 320395.7744 603 +0.06875 6158818.95 319924.9979 562 +0.06925 6660986.724 330800.7362 648 +0.06975 5674649.975 298781.1245 594 +0.07025 5318967.826 285530.1225 575 +0.07075 5862488.977 295675.3589 598 +0.07125 5650127.524 287693.4067 619 +0.07175 5772609.224 288405.3106 619 +0.07225 5377324.723 274371.2404 586 +0.07275 4804142.975 254191.9355 565 +0.07325 4926322.323 254034.5561 571 +0.07375 4631896.677 241077.9926 586 +0.07425 4694352.707 238990.025 589 +0.07475 4001479.016 217232.5398 560 +0.07525 4359303.594 224508.1238 583 +0.07575 4479709.508 224783.2983 614 +0.07625 3914982.725 207131.5006 572 +0.07675 3902959.647 204276.7241 540 +0.07725 4113557.783 205031.4997 593 +0.07775 3491962.359 184350.4968 564 +0.07825 3066780.259 169132.1784 519 +0.07875 3162262.099 168038.2473 558 +0.07925 2972560.783 157474.4131 570 +0.07975 2226865.264 132210.0571 458 +0.08025 1312220.782 95045.25669 314 +0.08075 942227.433 79328.38732 222 +0.08125 329919.3562 42192.24611 120 +0.08175 336277.3592 49030.88101 95 +0.08225 445249.0308 61038.44211 121 +0.08275 1082116.015 97635.1953 208 +0.08325 1526219.6 116878.3504 289 +0.08375 2608995.378 152415.9559 453 +0.08425 3090049.725 162578.4188 533 +0.08475 3005933.526 159581.0881 534 +0.08525 3148202.945 160865.5109 560 +0.08575 3104624.701 159483.8153 563 +0.08625 2977217.352 154646.5518 546 +0.08675 3027931.03 152559.888 560 +0.08725 2614161.355 140087.707 526 +0.08775 2734812.871 142440.3482 575 +0.08825 2733026.92 140247.8474 548 +0.08875 2666518.265 137693.3215 556 +0.08925 2582774.68 134027.4579 532 +0.08975 2592498.332 131858.7311 560 +0.09025 2274956.042 122299.9527 548 +0.09075 2471428.059 126261.9242 554 +0.09125 2334475.716 121310.8015 535 +0.09175 2126752.722 114538.5918 518 +0.09225 2168148.984 114415.2192 531 +0.09275 1799593.455 101874.2951 475 +0.09325 1823592.805 102191.7605 481 +0.09375 1803276.459 100900.3799 481 +0.09425 1863603.889 99802.67246 526 +0.09475 1685986.135 94298.77036 474 +0.09525 1516520.374 87400.15141 452 +0.09575 1662940.341 90825.49312 499 +0.09625 1662242.888 89559.6836 506 +0.09675 1529058.916 84685.37481 464 +0.09725 1505993.279 82261.24471 489 +0.09775 1400138.875 77354.02213 484 +0.09825 1298892.856 72563.6445 480 +0.09875 904728.1385 59037.80204 358 +0.09925 645954.3466 48578.26296 255 +0.09975 338923.3015 33193.23475 153 +0.10025 150198.3383 21523.68203 89 +0.10075 110260.1737 20808.41476 54 +0.10125 262763.9135 33093.19936 124 +0.10175 534377.8476 47470.75372 200 +0.10225 885667.5469 61634.78303 319 +0.10275 1194757.415 71250.95009 400 +0.10325 1338854.978 75081.8005 466 +0.10375 1289850.211 72685.18295 459 +0.10425 1331862.477 73068.51651 470 +0.10475 1326555.007 72355.29834 471 +0.10525 1213346.499 68164.05555 462 +0.10575 1165802.072 66407.59781 437 +0.10625 1149491.66 65329.94475 452 +0.10675 1166246.496 65211.41327 458 +0.10725 1082397.37 62180.01338 437 +0.10775 1067967.698 61251.17271 454 +0.10825 1019006.004 58793.95407 441 +0.10875 960666.4614 57040.26499 432 +0.10925 960775.415 55793.72258 441 +0.10975 1022109.433 57327.76634 469 +0.11025 907172.7514 53515.72757 415 +0.11075 861628.6316 51486.15397 414 +0.11125 870357.1883 51422.81564 419 +0.11175 833060.1815 49661.09961 402 +0.11225 852982.61 49782.51702 394 +0.11275 788622.7004 47128.61802 417 +0.11325 767824.0483 45815.00162 415 +0.11375 794999.9688 45859.27903 441 +0.11425 792042.5669 45137.82623 445 +0.11475 636634.4459 40169.31025 365 +0.11525 642429.2742 39489.19212 396 +0.11575 666369.9286 39376.05363 412 +0.11625 458056.2316 31875.16342 306 +0.11675 370348.9759 28060.83168 228 +0.11725 226756.3749 21517.48102 141 +0.11775 84945.82438 11944.19413 80 +0.11825 16735.46813 5372.863614 18 +0.11875 55346.135 11202.73017 37 +0.11925 110618.5284 16141.56193 76 +0.11975 262985.6836 24922.83416 175 +0.12025 405901.8238 31286.3945 247 +0.12075 554310.8682 36206.51785 341 +0.12125 496381.7275 33505.89934 340 +0.12175 574685.6263 35805.86421 373 +0.12225 516280.6956 33491.74037 358 +0.12275 556455.5803 34431.69922 385 +0.12325 546476.5074 34125.1896 378 +0.12375 528551.298 33091.33954 365 +0.12425 534760.8236 33032.36377 385 +0.12475 503611.5771 31703.95993 356 +0.12525 555313.0534 32787.06814 407 +0.12575 518473.0714 31456.96518 363 +0.12625 521785.1651 31307.81819 409 +0.12675 451898.678 28657.42421 381 +0.12725 416921.5882 27147.26596 351 +0.12775 455870.9338 28176.59458 372 +0.12825 424518.3454 27122.03741 351 +0.12875 435482.8589 26936.11536 363 +0.12925 400887.2978 25406.08901 351 +0.12975 457514.1837 26969.32855 400 +0.13025 397965.5506 24942.16874 366 +0.13075 390900.5694 24398.08172 389 +0.13125 411260.2941 24738.26961 405 +0.13175 357463.4642 22464.34263 375 +0.13225 375157.2385 22949.52504 388 +0.13275 378621.9941 22637.97522 397 +0.13325 338960.9652 20991.53793 364 +0.13375 261971.1219 17751.62223 315 +0.13425 225730.5872 16082.95849 269 +0.13475 151265.3529 12768.11017 185 +0.13525 77332.01988 8569.260473 117 +0.13575 36229.3616 5516.893732 65 +0.13625 7597.417968 2393.406052 16 +0.13675 215.0618493 215.0618493 1 +0.13725 0 0 0 +0.13775 0 0 0 +0.13825 0 0 0 +0.13875 0 0 0 +0.13925 0 0 0 +0.13975 0 0 0 +0.14025 0 0 0 +0.14075 0 0 0 +0.14125 0 0 0 +0.14175 0 0 0 +0.14225 0 0 0 +0.14275 0 0 0 +0.14325 0 0 0 +0.14375 0 0 0 +0.14425 0 0 0 +0.14475 0 0 0 +0.14525 0 0 0 +0.14575 0 0 0 +0.14625 0 0 0 +0.14675 0 0 0 +0.14725 0 0 0 +0.14775 0 0 0 +0.14825 0 0 0 +0.14875 0 0 0 +0.14925 0 0 0 +0.14975 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/wavelength.dat b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/wavelength.dat new file mode 100644 index 0000000000..bdfdd9fc45 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/wavelength.dat @@ -0,0 +1,353 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_baseline.instr +# Ncount: 10000000 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: ODIN_baseline_10xMPI_1e8_seed_1000 +# Nodes: 10 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Date: Thu Feb 26 14:54:04 2026 (1772114044) +# type: array_1d(300) +# Source: ODIN_baseline (ODIN_baseline.instr) +# component: wavelength +# position: 0.026 0 60.5 +# title: Wavelength [Angs] monitor +# Ncount: 100000000 +# filename: wavelength.dat +# statistics: X0=3.53648; dX=1.45879; +# signal: Min=0; Max=1.20393e+07; Mean=3.05557e+06; +# values: 9.16671e+08 5.03405e+06 100753 +# xvar: L +# yvar: (I,I_err) +# xlabel: Wavelength [Angs] +# ylabel: Intensity [n/s/bin] +# xlimits: 0.5 10 +# variables: L I I_err N +0.5158333333 0 0 0 +0.5475 0 0 0 +0.5791666667 0 0 0 +0.6108333333 0 0 0 +0.6425 0 0 0 +0.6741666667 0 0 0 +0.7058333333 0 0 0 +0.7375 0 0 0 +0.7691666667 0 0 0 +0.8008333333 0 0 0 +0.8325 0 0 0 +0.8641666667 0 0 0 +0.8958333333 0 0 0 +0.9275 0 0 0 +0.9591666667 0 0 0 +0.9908333333 43527.11492 34299.87136 6 +1.0225 582367.4809 164552.8661 52 +1.054166667 1375829.629 264881.5946 87 +1.085833333 1855202.181 290612.4221 122 +1.1175 2620293.158 335380.4524 172 +1.149166667 2529356.303 324885.8063 168 +1.180833333 2593155.93 319714.8572 191 +1.2125 3582981.076 381997.3105 202 +1.244166667 3269895.975 350862.3848 218 +1.275833333 3282965.405 349651.9914 209 +1.3075 3992966.782 398951.7947 259 +1.339166667 4628588.536 418056.4482 276 +1.370833333 3879955.754 368427.8746 270 +1.4025 4096461.346 380042.4555 284 +1.434166667 5103893.513 429813.7439 294 +1.465833333 4418512.913 386712.8985 305 +1.4975 4374408.174 374152.562 319 +1.529166667 5202305.807 405178.7363 341 +1.560833333 5326891.668 412886.1029 328 +1.5925 4883367.412 373290.8297 339 +1.624166667 5494526.544 386797.6464 377 +1.655833333 4666538.638 356348.26 351 +1.6875 4897101.408 357921.3203 345 +1.719166667 4149516.107 318837.1436 331 +1.750833333 4901820.845 337097.0587 392 +1.7825 4749499.989 321709.4994 376 +1.814166667 4792129.128 326735.6527 372 +1.845833333 4397883.456 303589.3327 384 +1.8775 5117214.372 323935.141 403 +1.909166667 4750374.691 310105.4807 403 +1.940833333 4698864.93 300534.2122 421 +1.9725 4372228.455 290268.9498 382 +2.004166667 4714709.702 299877.9685 426 +2.035833333 5371164.028 333584.7295 459 +2.0675 4229240.633 288493.1538 411 +2.099166667 4643136.881 305804.8446 417 +2.130833333 5198121.813 340398.9554 445 +2.1625 5497703.857 351308.7545 470 +2.194166667 5026383.603 343149.1398 419 +2.225833333 6093044.998 409553.7188 445 +2.2575 5185185.07 372568.0304 411 +2.289166667 5412884.32 386995.4598 427 +2.320833333 5031109.016 384752.6111 368 +2.3525 4977434.116 396166.0904 397 +2.384166667 5261622.434 411151.4872 401 +2.415833333 4887265.065 408911.0728 362 +2.4475 3504595.551 329703.0576 319 +2.479166667 3033696.423 336640.6345 244 +2.510833333 3922740.57 414765.5701 264 +2.5425 5250987.192 525371.1405 281 +2.574166667 7081355.542 621788.6006 361 +2.605833333 9642181.309 736105.164 429 +2.6375 10922054.66 777112.3918 486 +2.669166667 11341653.42 778338.0018 486 +2.700833333 10322553.3 729894.2737 493 +2.7325 11450858.03 759671.8972 522 +2.764166667 11159839.24 750487.2904 501 +2.795833333 11722650.69 757188.2401 540 +2.8275 10996259 729806.2219 501 +2.859166667 11770678.42 744067.3905 519 +2.890833333 11368000.66 730922.8346 528 +2.9225 11085006.13 702888.9256 550 +2.954166667 11910761.71 725263.3941 542 +2.985833333 10738868.81 680735.7496 538 +3.0175 10474120.26 660654.1154 557 +3.049166667 10932938.28 673890.7758 527 +3.080833333 10275116.11 648820.8777 512 +3.1125 12039258.15 701657.4766 570 +3.144166667 10523115.96 639228.92 563 +3.175833333 10442474.26 637150.9566 521 +3.2075 10073425.93 612427.0569 550 +3.239166667 9414263.367 583661.1657 547 +3.270833333 10344092.35 614025.9938 547 +3.3025 9786852.889 585761.5579 572 +3.334166667 10138794.6 591396.4902 565 +3.365833333 8854944.227 542262.039 527 +3.3975 10105703.49 577943.0052 555 +3.429166667 9726597.999 560299.8005 540 +3.460833333 9239554.4 537291.8398 527 +3.4925 9633828.649 540175.0234 572 +3.524166667 9256162.7 526510.0663 558 +3.555833333 8638078.4 492814.2094 576 +3.5875 7460129.799 455193.8161 517 +3.619166667 7969445.748 464351.7784 550 +3.650833333 7124427.062 430681.6747 515 +3.6825 7426131.772 431297.8377 565 +3.714166667 7531115.201 428339.1009 535 +3.745833333 6727035.04 394049.3634 520 +3.7775 6186295.179 369818.401 501 +3.809166667 5666311.761 342130.0102 529 +3.840833333 5210493.445 316086.7135 496 +3.8725 4334431.778 284494.8675 443 +3.904166667 4168102.308 281457.435 433 +3.935833333 4673792.382 306365.4014 452 +3.9675 6156288.247 360822.4876 498 +3.999166667 6328970.733 366567.6595 493 +4.030833333 6088987.981 355267.3562 511 +4.0625 6874777.839 375225.4015 518 +4.094166667 6229158.294 354381.2532 514 +4.125833333 6031152.944 343794.1901 526 +4.1575 5921069.622 334351.0473 541 +4.189166667 5953471.833 333088.9993 515 +4.220833333 6312465.314 340996.2389 567 +4.2525 5265338.317 305527.272 494 +4.284166667 5205808.213 300987.3316 497 +4.315833333 5286383.029 299826.5739 544 +4.3475 5510369.318 304693.2048 511 +4.379166667 5243183.494 294075.4204 490 +4.410833333 5770366.468 308355.3585 557 +4.4425 4673248.207 268274.5055 519 +4.474166667 4636352.367 267689.6557 481 +4.505833333 4844705.719 270043.5525 504 +4.5375 5085321.115 273539.5713 531 +4.569166667 4882406.34 266862.503 540 +4.600833333 4770980.489 260045.255 507 +4.6325 4352059.134 246713.4093 496 +4.664166667 4190416.486 237271.6571 486 +4.695833333 4227907.54 235194.0263 494 +4.7275 4188215.08 230816.023 507 +4.759166667 3802808.774 215550.9831 485 +4.790833333 3944718.293 219481.7979 506 +4.8225 3403635.149 198993.016 500 +4.854166667 3811505.315 209935.2473 508 +4.885833333 3738954.412 204896.5974 540 +4.9175 3524853.602 196472.7106 504 +4.949166667 3084843.098 182371.901 470 +4.980833333 3706384.218 196227.6456 534 +5.0125 3090442.203 175615.3833 500 +5.044166667 2999661.328 170364.1475 497 +5.075833333 2583614.883 154443.6709 432 +5.1075 2669298.186 154931.235 473 +5.139166667 2669816.33 149081.5188 502 +5.170833333 2249757.894 133601.6732 451 +5.2025 1849472.59 118071.2265 414 +5.234166667 1971905.235 123128.5351 394 +5.265833333 2039276.136 130753.671 390 +5.2975 2223335.969 136978.1111 437 +5.329166667 2435886.416 144351.3431 426 +5.360833333 2627497.991 148702.2004 468 +5.3925 2562344.038 146693.2458 466 +5.424166667 2760936.235 150694.2302 491 +5.455833333 2618092.998 146621.7994 468 +5.4875 2387506.561 138101.4341 447 +5.519166667 2792114.465 147928.6129 494 +5.550833333 2409568.367 135218.9617 473 +5.5825 2187680.918 128413.4409 449 +5.614166667 2340281.394 131211.6748 489 +5.645833333 2448269.535 132060.636 500 +5.6775 2239889.693 126701.2755 461 +5.709166667 2318519.5 127441.6217 465 +5.740833333 2049947.284 117293.5112 449 +5.7725 2041885.814 116258.9886 464 +5.804166667 2058677.019 116302.677 485 +5.835833333 2186863.871 118266.8277 485 +5.8675 1897791.815 109829.3781 448 +5.899166667 1778327.746 104071.1322 440 +5.930833333 1798287.871 104271.6916 445 +5.9625 1707150.487 100535.4276 424 +5.994166667 1557738.401 94222.83813 410 +6.025833333 1615562.282 96090.21595 414 +6.0575 1623515.102 95137.03766 436 +6.089166667 1489526.015 89388.07257 442 +6.120833333 1483553.296 88116.64828 421 +6.1525 1355469.224 83153.54662 399 +6.184166667 1299718.38 80304.13594 417 +6.215833333 1404330.283 82911.49779 429 +6.2475 1471559.319 83771.43237 449 +6.279166667 1266704.038 77058.52208 385 +6.310833333 1252218.436 74595.35237 426 +6.3425 1242951.573 73037.77172 412 +6.374166667 1041592.9 65583.01931 384 +6.405833333 1049415.407 64068.06143 399 +6.4375 851104.0729 57101.95982 338 +6.469166667 805771.6584 55801.16495 325 +6.500833333 876081.2807 58817.27199 321 +6.5325 991191.386 63834.62261 379 +6.564166667 1054858.604 66321.05708 376 +6.595833333 1106173.261 67913.04485 393 +6.6275 1085970.54 66941.0902 374 +6.659166667 1105619.422 66764.533 406 +6.690833333 1184933.818 68807.0058 406 +6.7225 1107352.925 65454.39727 399 +6.754166667 997502.285 61614.04754 389 +6.785833333 966776.2263 60450.4771 373 +6.8175 1041359.91 62001.28974 399 +6.849166667 998971.7159 60706.49834 397 +6.880833333 909425.5227 57132.44305 360 +6.9125 965229.9795 58398.49346 393 +6.944166667 829295.7103 53277.47603 363 +6.975833333 877970.3115 54663.47441 387 +7.0075 813526.1775 52246.04565 375 +7.039166667 836082.6042 52207.23513 376 +7.070833333 919674.5152 54367.55767 412 +7.1025 747085.3171 48710.93268 349 +7.134166667 779477.8406 49134.90579 370 +7.165833333 710110.5431 46543.39096 343 +7.1975 745884.6731 47293.31306 362 +7.229166667 715581.4295 46161.61738 338 +7.260833333 721475.4099 45678.44353 337 +7.2925 704227.2094 44486.30295 370 +7.324166667 686566.7494 43520.75658 376 +7.355833333 640078.7884 41531.21061 338 +7.3875 692193.2229 42473.72152 391 +7.419166667 634131.6343 40371.76433 352 +7.450833333 563857.7266 37514.367 317 +7.4825 531458.6225 35909.20637 341 +7.514166667 564072.361 36326.23937 339 +7.545833333 435704.4797 31330.6884 293 +7.5775 382926.9513 28860.348 247 +7.609166667 300147.3449 25186.09081 192 +7.640833333 303979.6746 25318.52015 206 +7.6725 345803.3373 27721.45837 243 +7.704166667 363636.8654 29405.18407 234 +7.735833333 410615.458 30955.15714 260 +7.7675 467232.9738 32882.42063 299 +7.799166667 470722.4544 32511.515 310 +7.830833333 462624.9266 31891.46383 302 +7.8625 434616.4618 30489.99981 307 +7.894166667 478495.3287 32012.52678 334 +7.925833333 430722.3932 30296.84458 303 +7.9575 486860.6602 31727.65568 342 +7.989166667 475699.8647 31299.0893 319 +8.020833333 388770.5289 27991.27222 293 +8.0525 500737.4639 31424.98068 361 +8.084166667 445445.0521 29268.7179 322 +8.115833333 425966.2243 28392.30787 312 +8.1475 448839.9746 29177.9334 334 +8.179166667 404696.9424 27071.21631 334 +8.210833333 364999.7236 25505.92274 312 +8.2425 400363.2283 26639.88686 323 +8.274166667 341317.8548 24223.22848 295 +8.305833333 367293.5678 25097.61569 306 +8.3375 398494.1545 25696.80377 317 +8.369166667 362187.9736 24320.40848 312 +8.400833333 346600.4536 23440.89594 312 +8.4325 380948.956 24526.9948 343 +8.464166667 321959.4696 22245.41877 318 +8.495833333 354748.1721 23188.93773 344 +8.5275 338517.5554 22198.39312 345 +8.559166667 283488.6281 20021.22976 295 +8.590833333 350160.7962 22144.05535 356 +8.6225 307621.153 20589.36809 319 +8.654166667 313295.878 20228.58169 325 +8.685833333 230175.4526 16822.43914 282 +8.7175 219244.8205 16045.27019 258 +8.749166667 157122.4644 13161.90631 191 +8.780833333 128570.9358 11646.2229 162 +8.8125 61667.15082 7644.330426 95 +8.844166667 43033.07035 5949.097557 72 +8.875833333 15031.25538 3161.716699 33 +8.9075 1740.967146 1080.166744 5 +8.939166667 215.0618493 215.0618493 1 +8.970833333 0 0 0 +9.0025 0 0 0 +9.034166667 0 0 0 +9.065833333 0 0 0 +9.0975 0 0 0 +9.129166667 0 0 0 +9.160833333 0 0 0 +9.1925 0 0 0 +9.224166667 0 0 0 +9.255833333 0 0 0 +9.2875 0 0 0 +9.319166667 0 0 0 +9.350833333 0 0 0 +9.3825 0 0 0 +9.414166667 0 0 0 +9.445833333 0 0 0 +9.4775 0 0 0 +9.509166667 0 0 0 +9.540833333 0 0 0 +9.5725 0 0 0 +9.604166667 0 0 0 +9.635833333 0 0 0 +9.6675 0 0 0 +9.699166667 0 0 0 +9.730833333 0 0 0 +9.7625 0 0 0 +9.794166667 0 0 0 +9.825833333 0 0 0 +9.8575 0 0 0 +9.889166667 0 0 0 +9.920833333 0 0 0 +9.9525 0 0 0 +9.984166667 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/wavelength_tof.dat b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/wavelength_tof.dat new file mode 100644 index 0000000000..eadb0d5206 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/wavelength_tof.dat @@ -0,0 +1,958 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_baseline.instr +# Ncount: 10000000 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: ODIN_baseline_10xMPI_1e8_seed_1000 +# Nodes: 10 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Date: Thu Feb 26 14:54:04 2026 (1772114044) +# type: array_2d(300, 300) +# Source: ODIN_baseline (ODIN_baseline.instr) +# component: wavelength_tof +# position: 0.026 0 60.5 +# title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin +# Ncount: 100000000 +# filename: wavelength_tof.dat +# statistics: X0=0.0557584; dX=0.0222333; Y0=3.53648; dY=1.45879; +# signal: Min=0; Max=1.1139e+07; Mean=10185.2; +# values: 9.16671e+08 5.03405e+06 100753 +# xvar: TO +# yvar: Wa +# xlabel: TOF [s] +# ylabel: Wavelength [Angs] +# zvar: I +# zlabel: Signal per bin +# xylimits: 0 0.15 0.5 10 +# variables: I I_err N +# Data [wavelength_tof/wavelength_tof.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43527.11492 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 229999.8636 352367.6173 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 904779.534 471050.0952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1178462.22 676739.9606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2524174.867 96118.29116 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 692.6162049 2468035.808 60627.8784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200761.1091 2392394.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1202074.359 2380906.717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1686625.276 1583270.699 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1650885.196 1632080.209 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3087516.264 905450.518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4248967.268 379621.268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44441.64948 3763366.114 72147.9903 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 526686.899 3569774.447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1727724.583 3376168.93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2052523.472 2365989.442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2395016.059 1979392.115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4435720.348 766585.4594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.019968849 4938194.592 388697.0564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80512.79262 4659448.188 143406.4313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 722488.4455 4772038.099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1345062.118 3321476.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1841535.098 3055566.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2551198.133 1598317.974 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3876379.133 1025441.712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4340662.959 408837.0302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54545.13606 4709458.235 28125.75728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 571079.6612 3826803.795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1365863.218 3751351.154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2136486.75 2613887.941 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2922200.707 1776664.223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3233799.582 1138428.873 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29820.88348 4116950.636 567938.1821 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 141867.8374 5105963.547 123332.6436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 755630.0801 3473610.553 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1266518.001 3376618.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2443225.98 2754895.833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3480986.826 2016717.031 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4060299.569 966084.034 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5619393.669 473651.3284 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 273395.7381 4850061.785 61727.54644 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 613504.5691 4799379.751 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1342033.018 3689075.998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2097958.318 2879475.798 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3362873.657 1806552.251 0 0 0 0 92196.52522 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118.2273969 3642071.291 810279.8394 0 0 0 216901.4813 217894.2258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3002.938876 3052361.093 40539.57466 0 0 0 265307.7887 143384.1558 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65385.73949 1654728.647 0 0 0 64404.78355 1121007.126 128170.1268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 221210.8643 1285647.621 0 0 0 98949.4498 2279350.332 37582.30365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 410474.5577 499827.6867 0 0 0 460902.5779 3879782.37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 174707.5928 188955.4619 0 0 0 1236601.467 5481091.02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54400.97666 5358.55041 0 0 0 3753532.328 5828889.453 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6815164.591 4106890.07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9518583.239 1823070.182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76058.55197 9137306.246 1109188.498 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 646129.4753 10553119.87 251608.6843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1360018.581 9799820.656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3440627.862 8282022.827 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4673190.995 6323068.002 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7229121.376 4541557.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8730142.846 2637857.812 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 164286.7386 9453450.6 1467268.793 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 441535.9953 11138992.96 330232.7543 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1900597.597 8838271.209 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3600985.295 6873134.962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5343163.286 5589774.998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6784990.389 3490125.716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9434187.243 2605070.908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124769.3584 9325340.075 1073006.525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 859236.5608 9390534.282 192703.4142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1652503.829 8420922.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 2509880.386 6904382.982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4869128.466 5474963.886 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6122341.348 3664511.541 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 828.1474074 8117741.199 2020225.251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 171480.3153 8055111.485 628352.4261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 761933.0238 8919440.92 424329.5423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1588080.545 8102306.6 36210.85368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2735292.143 6504262.257 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4350916.614 5282910.972 0 0 0 0 0 0 0 0 1.063516197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5748853.264 3507309.296 0 0 0 0 0 0 0 0 0.1399423844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7070768.957 1567306.45 0 0 0 0 0 0 0 0 2.993403719 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71609.96964 6600188.708 788330.6355 0 0 0 0 0 0 0 0 0.4862359667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 794183.3136 7003292.795 171969.6387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1404851.23 5719575.832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2589626.587 4836505.186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3509050.957 4022064.245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4388603.69 2338431.35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 934.1470405 4848707.159 1301900.093 0 0 0 33678.43274 1075.347677 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 115735.3631 4873399.19 428332.2864 0 0 0 248583.1105 261.8109499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 476533.9977 4012906.055 56337.79455 0 0 130861.2284 533854.3695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 729631.9044 2299538.928 0 0 0 500235.4816 805025.4637 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 823643.4866 1148196.351 0 0 0 1242333.282 953929.1883 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 709254.188 569191.3043 0 0 0 2065883.158 1329463.732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 544415.2029 130360.038 0 0 24729.27901 4163970.946 1292812.781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 269947.4724 67491.9827 0 0 136055.0013 5234728.033 620748.2435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 146.8069683 42229.3785 0 0 0 622039.7289 5106865.087 317706.9788 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1398207.894 5457713.367 18856.57789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2152943.823 4076214.471 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3084298.083 2946854.86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4059578.86 1861490.762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45657.87821 4753087.707 1154726.247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 306475.7609 5391071.829 614917.7235 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 536646.7146 4587429.167 141262.4353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 919040.1002 4259073.227 27694.88592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2101929.117 3184453.913 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2834719.977 2675649.341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17664.5115 3448026.495 1777492.487 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35143.11453 4734452.23 1000771.123 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149042.0064 4048565.251 475640.9494 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 625313.6006 3845254.405 165784.3619 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 998072.4711 3840602.223 6031.024375 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1856102.391 3229218.723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2414877.776 2467528.564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3288437.295 1482543.106 0 0 0 0 0 0 0 0 0.08836567732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16643.36569 3626630.426 708785.3424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 268151.1914 3454240.292 468025.0028 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 641117.3411 3490132.579 96657.61936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 968164.7411 3220050.338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1315188.719 2487620.055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2206732.651 1737984.573 0 0 0 0 0 0 0 0 1.068411101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2224546.6 1179082.066 0 0 0 0 0 0 0 6.405126393 0.07896119775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38947.84301 2913599.741 858942.4551 0 0 0 0 0 0 0 14.91804371 0.3572182174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 266621.7874 3120458.982 351853.8601 0 0 0 0 0 0 0 19.78275645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500308.0714 2905335.753 119191.6692 0 0 0 0 0 0 0 18.10833976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 657793.1116 2415516.969 11500.80149 0 0 0 0 0 0 5.153954693 27.06182058 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1368250.92 2338100.023 0 0 0 0 0 0 0 19.93453135 13.34048387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1760701.028 1329705.341 0 0 0 0 0 0 0 13.22411126 22.61008101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3255.930116 2132305.957 864057.2071 0 0 0 0 0 0 0 42.2337212 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29951.06119 2015630.373 538033.4491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 187092.6792 2253325.661 228878.5457 0 0 0 0 0 0 0 1.300187615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 370902.9884 2172379.739 59493.65505 0 0 10808.39166 56231.55609 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 571295.0248 1439143.034 8380.246099 0 0 156282.9917 74656.59702 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 728213.5777 652582.1529 0 0 6053.296668 345285.8635 117337.6996 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 645599.3298 441174.9367 0 0 23452.13374 771060.3913 90618.44317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5638.913596 496921.8028 57692.82191 0 0 193717.9243 1206960.081 78344.59225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4107.431133 239501.366 31062.25783 0 0 228639.7751 1716812.655 3212.483686 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21869.78029 70887.24536 0 0 0 813838.131 1529291.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15733.44688 1789.592721 0 0 0 1528844.181 1081130.771 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28701.80112 1840707.305 692934.9317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84095.44991 2259026.476 417814.3092 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 196241.5376 2269222.878 152628.5826 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 417587.5134 1906793.833 63125.21423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 917794.9364 1861119.935 13199.59316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1103685.881 1305882.486 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1277681.569 909999.3495 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17397.70737 1714540.726 608342.9614 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110272.7962 1880840.356 457156.3832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 243843.6024 1804802.655 191243.4356 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 404559.2265 1826426.509 87533.7652 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 565104.7354 1477041.014 7801.534475 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1027738.895 1014146.919 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184.6570723 1238990.355 819502.0063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14017.23374 1536719.057 636127.5809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 115206.9963 1473864.414 308720.4044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224483.7208 1365577.284 188266.7419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 452455.0341 1295170.718 50662.11884 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 684711.5239 1009138.984 13299.97842 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 727292.7528 830445.6483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12499.5988 964456.7256 638605.9577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15390.45262 1119614.844 488509.4148 0 0 0 0 0 0 0 0.3905310174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45055.65733 1201321.449 243146.4618 0 0 0 0 0 0 1.503659612 0.9427504218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 173773.0253 1180306.791 129468.621 0 0 0 0 0 0 0 4.85910988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 262532.8818 1039519.476 53407.55578 0 0 0 0 0 0 2.136584292 7.173521901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 347532.2762 940102.4695 12071.69446 0 0 0 0 0 0 7.763165343 4.176887248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 669430.3155 734880.2767 0 0 0 0 0 0 0 19.69060293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 901898.6575 569651.9668 0 0 0 0 0 0 0 8.694551598 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13392.25959 897634.535 355649.0379 0 0 0 0 0 0 18.27345682 9.932164109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61772.41414 1015299.02 175139.1693 0 0 0 0 0 0 7.832168056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 135045.2207 1006125.183 101781.1694 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 218874.5229 790004.1379 16132.28391 0 0 11101.68547 5480.269884 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 407105.655 544002.1868 0 0 0 73362.92074 24944.64436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 338894.1582 316632.4548 0 0 14723.4262 159815.7392 21038.29441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5698.566784 316320.9913 101026.6534 0 0 73515.44522 305261.2746 3948.727116 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12993.90479 212713.5281 32186.10624 0 4470.320366 203325.5094 410391.9119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25168.18338 99523.1546 1988.44659 0 4752.769248 455948.9836 403809.8486 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7363.524537 14678.14229 0 0 15377.92436 716855.0208 300583.9918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74092.54539 860663.7234 171416.9923 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 177607.2626 810537.8431 97825.43415 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 307895.3753 772867.6261 24856.42043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 461169.4168 701997.7325 21766.66889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 595164.5769 512188.3483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4536.277265 652266.5484 340699.4593 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27124.93309 720279.2205 219372.0727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104823.3927 789768.6127 146767.9046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140350.9743 808599.4623 50021.27937 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210879.1291 660375.5159 38170.87767 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 372000.5751 589330.3531 3899.051246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 430861.345 398434.3654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9605.122726 575609.68 292755.5088 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41062.90788 598354.9788 174108.2908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69555.97378 619980.5062 146546.1242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 166686.6179 672966.4674 80021.42979 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 202596.8416 516979.6021 27508.87336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 308969.8817 463598.2098 6909.74911 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1201.837729 368196.7562 340711.9491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2324.792247 482875.8091 260684.0717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39859.68097 512378.8763 163342.8722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59997.23348 569497.188 91980.98848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 120142.5498 513476.374 70608.28565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 183165.3379 468200.5207 35200.89081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 229015.2419 411063.5465 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 342510.5359 349682.687 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6224.995623 414334.185 213572.4537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28025.69493 379316.5577 156515.4739 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43745.43443 401946.881 85766.30711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83966.91925 444569.2044 35536.2374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 136034.4171 279629.7767 18542.3223 0 0 1497.963586 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 142870.4339 194437.0381 0 0 2770.478043 41268.68779 1580.313493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19.78357787 147703.6107 79535.13248 0 0 14077.44721 58811.37092 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9666.004785 138350.1688 16154.33266 0 0 47573.42816 92235.74021 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8871.073619 60010.0031 4176.888788 0 2653.415798 163200.0087 106891.9473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8781.488614 7085.533175 0 0 7549.934744 259111.4142 81108.49464 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1204.604537 0 0 0 39898.4623 320029.4322 49482.95896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 153172.9413 289693.7849 24366.24762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157204.9837 309226.6121 4290.858539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 231771.6144 230853.3122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9321.152237 247515.6551 177779.6544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33620.86971 311200.6581 133673.8009 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67475.2678 302508.5765 60738.54889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110294.13 343229.5957 33336.93452 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 123507.7841 332320.8925 19871.18814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1075.369371 162601.0687 222835.1004 2258.9904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6501.927856 251424.0397 242811.4963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9481.248786 287622.2069 148341.5964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22620.35971 318859.4487 84486.41593 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51272.02638 348549.9531 49017.99512 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88748.79606 289136.1107 26812.03566 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113744.5722 238727.81 12527.34145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 148881.9261 245572.067 5909.235231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2499.816436 192764.7851 146053.2532 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5006.740232 252704.4174 109582.4101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19851.43952 278131.3888 100511.3261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47769.05998 243924.0652 70494.84843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56451.90651 270883.9198 19264.62724 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 114805.5841 240558.642 25584.72997 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1329.831318 134142.207 181889.993 4597.438275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4000.074448 175459.688 173545.4676 1742.942089 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7966.158395 208404.1074 122147.2896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24713.28079 183601.3945 75173.95277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49971.83799 245045.9242 55143.03395 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54937.36152 219178.3572 33505.43437 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104300.603 196475.6294 12519.64568 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 105893.7316 122265.7485 2015.972515 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3086.169803 121937.7979 94220.85289 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5247.929835 118127.4908 33747.04385 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11366.27106 107184.7675 10019.89722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10333.54147 50929.03478 404.5745741 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16383.08788 26649.98247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9174.804563 5856.450822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1740.967146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 215.0618493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [wavelength_tof/wavelength_tof.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34299.87136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 107078.8534 126588.0658 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 218644.4953 151286.655 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 218183.4704 193635.5626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 330332.5977 60068.20193 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 799.7643047 319167.0955 60627.8784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76369.19472 310802.1134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224796.689 309540.1791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 266473.9558 229021.8395 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 250947.5817 244167.7842 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 356878.1458 179235.2523 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 400433.0527 121631.1081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37649.51589 364255.1128 45065.92943 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 151334.2149 349250.399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255827.9236 345878.9352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 257676.8569 288841.9912 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 273879.7418 255412.659 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 377927.7463 146760.4774 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.019968849 400292.4962 102116.1297 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47903.38333 365494.5874 61413.53637 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 145655.647 358595.0296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 197733.3611 296795.2674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225916.4342 277937.0783 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 251499.4975 196351.6666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 299913.0398 154339.7403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 308326.7574 92382.59841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35766.9143 324038.6881 27886.20053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113570.6604 281767.7683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 167509.8845 277445.1812 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 207027.8661 231094.4563 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 237390.5568 184544.2977 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 246504.7354 153595.7357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29820.88348 278337.9357 107973.8541 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52752.45164 323583.098 64549.70184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 120419.9362 262336.0743 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159695.4758 260987.2387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 231334.5608 249959.0093 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 279390.9125 213272.7671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 314411.2494 137847.3895 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 391928.263 119805.6334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 87919.45071 359465.4671 49258.79639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 116142.3489 369332.6046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 196353.6373 331187.941 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244913.0892 311764.1016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 328468.1714 243718.1949 0 0 0 0 46360.46423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118.2273969 348585.819 171649.5864 0 0 0 100264.3333 84579.45913 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3002.938876 309441.1588 21035.02108 0 0 0 93818.69998 64001.03842 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46677.69463 228584.9837 0 0 0 69011.2851 226752.4961 70243.0454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81013.22602 205882.9249 0 0 0 68897.47656 343963.3329 36506.08754 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112555.415 124589.2954 0 0 0 171477.7893 468839.4401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70618.50385 71480.64445 0 0 0 257219.9986 558033.5857 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28283.30861 3818.878291 0 0 0 465000.303 570658.7211 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 618041.5374 471863.639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 715913.9814 306425.6466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77089.79996 685377.7407 242619.2095 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 183969.0836 728920.4396 115220.1741 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 260383.5037 704269.2693 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 413514.935 634778.128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 479525.0116 550684.7543 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 587049.182 457768.9434 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 639931.2901 353971.6964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90485.21203 646552.2971 262673.3703 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 137799.3776 701446.108 126380.9095 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 290337.9304 616105.013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 389970.8056 533689.4414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 469179.6531 484181.598 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 527846.3126 377842.113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 622463.6891 324455.7034 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73340.32924 600829.8785 207605.1207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 188116.814 602793.7681 89530.43955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 251827.4745 558582.5645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 294677.5456 504114.7299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 421239.4641 447121.9425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 462440.1762 359966.4183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 828.1474074 529523.6291 263915.061 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77886.01057 517246.1318 145004.0534 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 161472.5659 542093.8972 121095.5993 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225877.2708 511895.3663 38517.06653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 290480.8895 452262.2357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 359950.6599 403049.0927 0 0 0 0 0 0 0 0 1.063516197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 417298.2187 321393.6554 0 0 0 0 0 0 0 0 0.1399423844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444993.7425 212250.3826 0 0 0 0 0 0 0 0 1.708043874 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41188.23885 428249.9986 149707.9852 0 0 0 0 0 0 0 0 0.4862359667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149242.6091 434531.2724 70208.63245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 191119.2201 386171.6887 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 257639.6813 346121.3535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 292378.2569 313264.0242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 317868.2696 233167.109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 934.1470405 327377.9042 170657.7499 0 0 0 24645.19671 807.0851383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50220.15602 317548.3397 97635.84099 0 0 0 66928.42817 261.8109499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 94717.171 277700.6761 31833.93207 0 0 57752.54428 99408.34473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 111867.4818 198211.9379 0 0 0 110378.599 131420.5711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110575.7663 134787.8963 0 0 0 171897.805 139805.1585 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99631.07556 91551.04932 0 0 0 216637.9904 169900.8512 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80250.90797 42113.27356 0 0 24729.27901 306589.435 166029.1917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51473.50254 29073.42523 0 0 56129.42551 338357.2184 116366.1454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 146.8069683 16852.96815 0 0 0 119144.7684 323864.3503 84162.05929 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 171514.5486 333358.2377 22760.93094 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208981.2894 286375.9517 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 246301.7041 240048.5215 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277219.0821 187156.0499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31419.06369 296672.5122 148820.9091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 78162.18235 314377.8506 107327.9779 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98316.14387 285227.2887 49812.34409 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 126300.9837 272638.7096 21161.72143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 189144.2434 232790.6849 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 218712.3972 212292.3266 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17664.5115 238198.9023 171734.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26566.75904 278896.9844 129454.9556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47660.75286 250027.1293 85428.55203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100559.5023 243001.1518 51038.88293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 123667.2758 240133.6971 4973.427837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 165119.1451 218193.1068 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 187585.461 189940.6268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 216566.9803 144104.0482 0 0 0 0 0 0 0 0 0.08836567732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17487.99615 225310.6683 99513.95043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61932.65841 215145.7051 79104.14998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92234.94183 213676.2356 35053.70117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112676.8184 201538.1024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127863.4592 173633.5532 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 164320.5465 145621.0952 0 0 0 0 0 0 0 0 1.068411101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159849.0843 118658.2056 0 0 0 0 0 0 0 2.922411876 0.07896119775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22534.13281 182463.7673 101702.9478 0 0 0 0 0 0 0 5.385192423 0.3572182174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55610.14098 186483.1644 64621.26247 0 0 0 0 0 0 0 6.864321916 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73927.87728 178167.8185 38097.2475 0 0 0 0 0 0 0 6.500572513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83936.45153 161580.3932 11500.80149 0 0 0 0 0 0 4.314850711 9.056415975 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 119277.653 155887.7153 0 0 0 0 0 0 0 9.414166505 7.017479816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 132727.9844 115093.3988 0 0 0 0 0 0 0 7.752418547 10.22074201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3255.930116 143274.8975 92238.64261 0 0 0 0 0 0 0 18.08063225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15836.7476 135955.4377 71801.17362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40665.13084 142070.6313 46942.97214 0 0 0 0 0 0 0 1.300187615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54144.92276 135165.1089 23342.40733 0 0 10304.0785 21064.54955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66021.28453 107989.4281 8380.246099 0 0 36229.03427 22073.64081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72834.97967 69294.23773 0 0 6947.075161 55122.70763 28367.84783 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64354.80759 56605.15551 0 0 15299.8966 82881.56827 27904.76352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6764.744885 55545.68242 20286.12531 0 0 43504.20835 104907.625 27074.09017 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3749.312175 34918.79014 15828.28936 0 0 43727.45877 124103.1124 3460.231091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8890.935163 18721.95751 0 0 0 84437.25032 115339.552 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7519.99263 2126.136045 0 0 0 113449.8617 95921.01358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17031.61571 124597.5245 75797.50267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27884.65188 136326.0188 58157.44535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39710.13083 136819.5667 35070.47316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57989.38585 123436.3624 22196.363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86471.6795 119729.3602 9793.249427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92005.16527 99156.59999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97860.06608 83225.97299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12978.22271 112334.2864 66815.90606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27725.57209 115809.1893 57292.81442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42610.39809 113580.6909 36869.63564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52900.19103 113232.1305 25342.0447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61678.90196 99527.28021 9237.461208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82816.53859 81653.65133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184.6570723 90240.57187 73433.02062 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9962.451013 99095.79416 63845.73538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27328.81545 96536.41278 44873.42679 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36536.23445 91280.69996 34328.04429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52821.34358 88441.47729 16601.64432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64082.84469 76967.66663 9874.524943 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64151.25943 69063.72653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8840.297255 74285.67919 60363.82415 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9190.854815 79266.04072 51927.59604 0 0 0 0 0 0 0 0.3905310174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16378.33695 79777.15257 37039.45363 0 0 0 0 0 0 1.503659612 0.5565969109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30202.63299 78833.97704 25465.4253 0 0 0 0 0 0 0 2.760085868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36305.44732 72999.52354 16712.4463 0 0 0 0 0 0 1.270887307 4.457094278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40887.69614 68736.06092 8058.030979 0 0 0 0 0 0 4.324580452 3.76503122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57069.17739 60187.01872 0 0 0 0 0 0 0 8.470082839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65468.99084 52310.00598 0 0 0 0 0 0 0 5.854624243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8095.131497 64508.88303 41492.9716 0 0 0 0 0 0 10.64122089 10.10537112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16830.51103 67087.75672 28104.59271 0 0 0 0 0 0 7.832168056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23509.32087 65973.37335 20900.3814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29147.35305 57633.31212 9017.648022 0 0 6684.886743 3886.8083 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38914.52713 46836.45279 0 0 0 17793.9088 9532.652421 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34690.19969 35319.31231 0 0 8794.698665 25681.32076 9464.47185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4093.910025 32875.84909 19542.98777 0 0 18250.23289 36032.29906 4653.261623 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5940.345982 25772.63159 10607.52357 0 4470.320366 29179.39708 42263.83986 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7690.622618 17248.88429 2124.048201 0 4752.769248 44207.99352 41774.06882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3571.961121 5253.320603 0 0 7092.305999 54958.60441 35995.31659 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17871.6526 60078.52609 26296.99875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27200.61548 57745.09681 20332.91437 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35558.65739 55623.25247 10355.79501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42870.50561 52971.84758 9821.90104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48077.47932 44450.89056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4749.082889 49739.25352 36155.57228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10445.51323 52252.34021 28654.31074 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19437.07851 54182.27628 23148.03702 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22746.9671 54629.94864 13784.3237 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27161.83329 48813.23404 12206.96843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36051.96121 45810.39704 4654.607365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38459.15894 36905.02374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5793.047812 44062.23904 31918.13733 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12005.62171 44767.62849 24228.78003 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15351.82857 44793.48053 22092.64955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22893.62319 46624.58103 16196.13025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25082.65082 40664.93075 9747.309698 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30838.40728 37965.66899 4894.205514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1201.837729 33382.15922 32442.65608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2538.215154 38063.16717 28016.25802 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11099.16651 38891.83307 22342.27538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13137.35667 40613.78303 16377.48396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18251.89766 38084.58892 14090.85103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22493.97933 35882.95975 10192.86351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24815.63991 33323.85825 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29661.93906 30424.85683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3634.64322 32401.70837 23859.00493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8019.035174 30586.22653 20241.2671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10572.21059 31179.3093 14437.29672 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13409.91258 32542.16462 9116.481986 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16892.52401 25432.04353 7063.454825 0 0 1584.602122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16982.40488 21087.65419 0 0 3292.755211 9590.923361 1580.313493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19.78357787 16708.16795 13551.98863 0 0 5908.101094 11830.47627 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3970.731885 16333.65878 5725.153068 0 0 10602.88946 14715.07729 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3715.80178 9978.923294 2713.948682 0 2653.415798 19679.12153 16015.06592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3412.267172 3344.918424 0 0 4513.431313 25115.42783 13958.35386 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1204.604537 0 0 0 9696.384115 27376.47558 10756.38082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19210.84264 25636.20586 7560.701478 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18765.46964 26399.23286 3246.357379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22587.3715 22536.56275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4534.033537 23029.37798 19501.89967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8734.601675 25675.85994 17061.14588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12155.61274 25373.62533 11321.67016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15215.36677 26655.68917 8151.683572 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16031.4051 26130.67329 6443.039094 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1075.369371 18160.77979 21183.72675 2492.915065 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3873.468594 22324.6216 21818.69991 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4366.874166 23521.02376 16911.66102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6523.298555 24609.4779 12629.79751 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9964.809353 25717.54692 9593.232408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12681.34441 22919.83808 6934.326394 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14330.68346 20651.30719 4459.540497 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16125.98065 20947.8487 3550.382583 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2078.640248 18139.55051 15958.24531 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2795.187227 20884.52105 13679.30628 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5879.178009 21496.55025 12835.73715 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8804.404921 19887.40464 10935.4144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9286.030079 20740.22284 5861.020103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13299.86122 19571.87539 6538.905815 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1329.831318 14173.85313 16901.09705 2788.389314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2342.909073 16039.92856 16519.12022 1742.942089 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3343.587631 17306.09328 13528.98765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5781.80067 15934.14181 10695.74613 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8094.101297 18510.05509 9112.234393 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8397.127992 17464.3927 7004.672831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11189.86871 16331.20595 4196.29693 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11079.00487 12593.84672 1515.23171 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1681.521085 11592.9131 10982.90662 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2247.348444 11231.64235 6516.753605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3216.016839 10630.45293 3581.719556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2811.310539 7108.65043 419.2849148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3246.751966 4996.352493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2330.844903 2164.142333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1080.166744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 215.0618493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [wavelength_tof/wavelength_tof.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 94 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 160 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 164 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 19 172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 89 129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 115 94 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 192 67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 259 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 261 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84 210 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152 153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182 137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 271 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 299 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 324 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38 339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95 256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124 221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 197 134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 311 81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 345 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 363 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48 336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 120 283 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182 221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 262 159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 286 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 383 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 436 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73 338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 290 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 206 239 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 295 175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 335 84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 414 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 380 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193 204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 261 133 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 274 53 0 0 0 19 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 1 254 7 0 0 0 44 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 137 0 0 0 2 86 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 91 0 0 0 9 140 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 51 0 0 0 26 177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 16 0 0 0 77 249 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 2 0 0 0 169 251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 295 191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 384 102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 439 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 486 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 420 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 155 385 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 229 272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 331 188 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 413 115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 482 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 503 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98 440 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 179 378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 263 264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 327 185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 451 119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 498 59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 467 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88 462 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 167 380 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 258 289 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 361 211 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 452 112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 476 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 489 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 447 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 172 355 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 278 293 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 346 211 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 470 102 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 459 46 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 50 488 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113 402 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 192 373 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 258 277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 343 177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 391 105 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 441 39 0 0 0 37 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 45 374 8 0 0 12 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 245 0 0 0 37 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 108 137 0 0 0 92 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104 69 0 0 0 166 113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 87 15 0 0 1 299 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 8 0 0 12 380 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 11 0 0 0 40 437 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 101 415 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 196 318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 274 252 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 364 177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 416 95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 480 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 427 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 96 398 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 216 328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 271 240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 319 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 453 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 442 52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 411 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112 390 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 189 342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 275 265 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350 156 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 4 403 89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 407 52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 409 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110 397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 173 312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277 228 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 325 166 0 0 0 0 0 0 0 8 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 7 384 104 0 0 0 0 0 0 0 12 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 33 442 51 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 68 403 15 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118 328 1 0 0 0 0 0 0 3 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 196 324 0 0 0 0 0 0 0 6 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 267 216 0 0 0 0 0 0 0 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 340 146 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 341 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 405 35 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 70 407 10 0 0 3 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 119 276 1 0 0 30 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159 146 0 0 2 70 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 150 80 0 0 5 139 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 118 17 0 0 32 210 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 65 7 0 0 58 302 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 20 0 0 0 140 257 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 269 189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 329 132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 393 82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35 404 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 361 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 156 335 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 216 257 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 262 187 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 360 125 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 379 93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 374 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 89 360 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129 318 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225 239 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 305 179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 351 132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 355 69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48 348 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 101 327 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 160 260 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 196 214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 254 158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 299 127 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 24 350 64 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49 332 35 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 78 298 16 0 0 0 0 0 0 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 119 287 4 0 0 0 0 0 0 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 196 224 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 273 173 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 271 104 0 0 0 0 0 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 339 66 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 46 331 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 87 286 6 0 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 157 203 0 0 0 27 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144 106 0 0 4 76 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 135 40 0 0 32 114 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 91 13 0 1 77 133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 55 3 0 1 175 132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 12 0 0 9 239 109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 298 66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 285 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 108 288 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152 248 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 209 190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 257 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 272 92 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 302 60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58 314 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84 263 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 149 242 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 248 133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 271 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 284 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 301 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104 232 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 145 223 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 175 167 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 231 128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 240 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 254 49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61 276 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 92 267 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 115 223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193 198 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 231 113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 223 78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 259 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 254 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 105 176 9 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 103 113 0 0 2 28 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 1 100 43 0 0 9 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 90 18 0 0 35 57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 52 3 0 1 113 66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 9 0 0 5 157 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 24 202 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86 199 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 108 198 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 156 146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 189 113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 232 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 220 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 241 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 226 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 129 160 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 176 181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 205 110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 219 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 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 264 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70 243 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 200 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 128 190 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 164 129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 201 97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 222 79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 212 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 235 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 108 212 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 132 179 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 178 160 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 9 212 124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 197 71 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 252 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65 227 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 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 119 197 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 136 143 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 155 99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 150 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 132 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 72 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_baseline/bi_spec_ellipse.comp new file mode 100644 index 0000000000..c24fb3cdea --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/bi_spec_ellipse.comp @@ -0,0 +1,794 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2011, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Bi-spectral extracion system +* +* %I +* Written by: Manuel Morgano +* Date: April 2015 +* Version: $Revision: 2.3 $ +* Origin: PSI +* Release: McStas 1.12c +* +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* +* %D +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* The supermirror number can be automatically calculated (setting the number to 0) or given +* Each mirror can be split in submirror pieces, each of them offseted by a constant angle +* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. +* The feeder's shape is calculated by the distance between the guide entrance and the first focus, +* the distance between the exit and the second focus, the length of the coated part and the opening +* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. +* User can specify different shapes for the horizontal and the vertical ellipse. +* Setting the m-coating to 0 means absorbing, -1 means transparent. +* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn +* but it's transparent. +* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. +* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. +* +* +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %P +* INPUT PARAMETERS: +* +* xheight: (m) height of mirror stack +* ywidth: (m) width of mirror plate +* zlength: (m) length of the mirror +* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) +* n_pieces (1) number of straight section per mirror +* tilt (degrees) angle between the mirrors and the horizontal direction +* angular_offset (degrees) angle between subsequent sub-mirrors +* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. +* R0_m: (1) Low-angle reflectivity +* Qc_m: (AA-1) Critical scattering vector +* alpha_mirror_m: (AA) Slope of reflectivity +* W_m: (AA-1) Width of supermirror cut-off +* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. +* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. +* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. +* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. +* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. +* ell_l: (m) length of the coated part of the ellipse +* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors +* ell_w: (m) width of the ellipse entrance +* ell_m: (1) m-value of the coating of the ellipse +* R0: (1) Low-angle reflectivity +* Qc: (AA-1) Critical scattering vector +* alpha_mirror: (AA) Slope of reflectivity +* W: (AA-1) Width of supermirror cut-off +* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* cut: (1) cutoff for lowest reflectivity consideration. +* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file +* +* %D +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT bi_spec_ellipse +DEFINITION PARAMETERS () + SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) +OUTPUT PARAMETERS (pTable) +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) + +SHARE +%{ +%include "read_table-lib" +%} + +DECLARE +%{ + t_Table pTable; + +%} + +INITIALIZE +%{ + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + +%} + +TRACE +%{ + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +%} + +MCDISPLAY +%{ + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i Date: Thu, 26 Feb 2026 15:25:06 +0100 Subject: [PATCH 04/75] Correct %Example lines --- .../examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr | 1 + .../examples/Prototypes/ODIN_baseline/ODIN_baseline.instr | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr index a273553d57..c9e234c57a 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr @@ -24,6 +24,7 @@ * %Description * Please write a longer instrument description here! * +* %Example: -y Detector: tof_I=9.16671e+08 * * %Parameters * l_min: [unit] Minimum simulated wavelength [AA] diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.instr b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.instr index a89ba7abbc..93f4c4cca8 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline.instr @@ -24,7 +24,7 @@ * %Description * Please write a longer instrument description here! * -* %Example -y Detector: tof_I=9.16671e+08 +* %Example: -y Detector: tof_I=9.16671e+08 * * %Parameters * l_min: [unit] Minimum simulated wavelength [AA] From 0ff8aa5c1c53ca9b452493dc16b7b41691efcdb6 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 15:35:52 +0100 Subject: [PATCH 05/75] Cogen (define-based) prototype support for TOF_TRAIN --- mccode/src/cogen.c.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index f9df2f1a96..71a033929a 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2463,6 +2463,12 @@ cogen_header(struct instr_def *instr, char *output_name) //cout(" randstate_t randstate[RANDSTATE_LEN]"); cout(" randstate_t randstate[7];"); // for the KISS generator cout(" double t, p; /* time, event weight */"); + cout(" #ifdef TOF_TRAIN"); + cout(" int Ntof_train; /* initialised like e.g. ncount, seed from cmdline */"); + cout(" double *tof_train;"); + cout(" int Ntof_init; /* 0/1 - set to 1 once \"times are filled in\" */"); + cout(" #pragma acc shape(tof_train[0:Ntof_train]) init_needed(Ntof_train)"); + cout(" #endif /* TOF_TRAIN */"); cout(" long long _uid; /* Unique event ID */"); cout(" long _index; /* component index where to send this event */"); /* these are needed for SCATTERED, ABSORB and RESTORE macros */ From d414ad35025f09fcac2c78510b22f026a015bb15 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 16:19:59 +0100 Subject: [PATCH 06/75] First stab at cogen support for N_trains et al --- common/lib/share/mccode-r.c | 8 ++++++++ mccode/nlib/share/mcstas-r.c | 10 +++++++++- mccode/src/cogen.c.in | 22 +++++++++++++++------- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 37929b861a..0d181d72f8 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -60,6 +60,7 @@ static long mcseed = 0; /* seed for random generator */ static long mcstartdate = 0; /* start simulation time */ static int mcdisable_output_files = 0; /* --no-output-files */ mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ +mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ @@ -1234,6 +1235,9 @@ static void mcruninfo_out(char *pre, FILE *f) fprintf(f, "%sNcount: %llu\n", pre, mcget_ncount()); fprintf(f, "%sTrace: %s\n", pre, mcdotrace ? "yes" : "no"); fprintf(f, "%sGravitation: %s\n", pre, mcgravitation ? "yes" : "no"); + #ifdef TOF_TRAIN + fprintf(f, "%sTOF_TRAIN: %d\n", pre, NTOF); + #endif snprintf(Parameters, CHAR_BUF_LENGTH, "%ld", mcseed); fprintf(f, "%sSeed: %s\n", pre, Parameters); fprintf(f, "%sDirectory: %s\n", pre, dirname ? dirname : "."); @@ -4800,6 +4804,10 @@ mcparseoptions(int argc, char *argv[]) else if(!strcmp("--format", argv[i]) && (i + 1) < argc) { mcformat=argv[++i]; } +#ifdef TOF_TRAIN + else if(!strncmp("--tof-trains=", argv[i], 13)) { + NTOF=atoi(&argv[i][13]); +#endif #ifdef USE_NEXUS else if(!strcmp("--IDF", argv[i])) { mcnexus_embed_idf = 1; diff --git a/mccode/nlib/share/mcstas-r.c b/mccode/nlib/share/mcstas-r.c index 0175f5cf49..8567a93342 100644 --- a/mccode/nlib/share/mcstas-r.c +++ b/mccode/nlib/share/mcstas-r.c @@ -51,7 +51,7 @@ int (*mcMagneticField) (double, double, double, double, * mcsetstate: transfer parameters into global McStas variables *******************************************************************************/ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, - double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop) + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF) { _class_particle mcneutron; @@ -81,6 +81,14 @@ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, d // what about mcneutron._logic ? mcneutron._logic.dummy=1; // init uservars via cogen'd-function + + #ifdef TOF_TRAIN + mcneutron.N_trains=NTOF; + mcneutron.t_offset=malloc(NTOF*sizeof(double)); + mcneutron.p_trains=malloc(NTOF*sizeof(double)); + mcneutron.alive_trains=malloc(NTOF*sizeof(int)); + #endif + particle_uservar_init(&mcneutron); return(mcneutron); diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 71a033929a..57e5a9e6cf 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2464,10 +2464,14 @@ cogen_header(struct instr_def *instr, char *output_name) cout(" randstate_t randstate[7];"); // for the KISS generator cout(" double t, p; /* time, event weight */"); cout(" #ifdef TOF_TRAIN"); - cout(" int Ntof_train; /* initialised like e.g. ncount, seed from cmdline */"); - cout(" double *tof_train;"); + cout(" int N_trains; /* initialised like e.g. ncount, seed from cmdline */"); + cout(" double *t_offset;"); + cout(" double *p_trains;"); + cout(" int *alive_trains;"); + cout(" #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains)"); + cout(" #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains)"); + cout(" #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains)"); cout(" int Ntof_init; /* 0/1 - set to 1 once \"times are filled in\" */"); - cout(" #pragma acc shape(tof_train[0:Ntof_train]) init_needed(Ntof_train)"); cout(" #endif /* TOF_TRAIN */"); cout(" long long _uid; /* Unique event ID */"); cout(" long _index; /* component index where to send this event */"); @@ -2542,7 +2546,7 @@ cogen_header(struct instr_def *instr, char *output_name) #if MCCODE_PROJECT == 1 /* neutron */ cout("#pragma acc routine"); cout("_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz,"); - cout(" double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop);"); + cout(" double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF);"); cout("#pragma acc routine"); cout("_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z,"); cout(" double *vx, double *vy, double *vz, double *t,"); @@ -2550,7 +2554,7 @@ cogen_header(struct instr_def *instr, char *output_name) #elif MCCODE_PROJECT == 2 /* xray */ cout("#pragma acc routine"); cout("_class_particle mcsetstate(double x, double y, double z, double kx, double ky, double kz,"); - cout(" double phi, double t, double Ex, double Ey, double Ez, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop);"); + cout(" double phi, double t, double Ex, double Ey, double Ez, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF);"); cout("#pragma acc routine"); cout("_class_particle mcgetstate(_class_particle mcphoton, double *x, double *y, double *z, double *kx, double *ky, double *kz,"); cout(" double *phi, double *t, double *Ex, double *Ey, double *Ez, double *p);"); @@ -2558,13 +2562,17 @@ cogen_header(struct instr_def *instr, char *output_name) cout(""); cout("extern int mcgravitation; /* flag to enable gravitation */"); cout("#pragma acc declare create ( mcgravitation )"); + cout(""); + + cout("extern int NTOF; /* TOF_train suppport */"); + cout("#pragma acc declare create ( NTOF )"); cout(""); cout("_class_particle mcgenstate(void) {"); #if MCCODE_PROJECT == 1 /* neutron */ - cout(" _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0);"); + cout(" _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0, NTOF);"); #elif MCCODE_PROJECT == 2 /* xray */ - cout(" _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, mcgravitation, NULL, 0);"); + cout(" _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, mcgravitation, NULL);"); #endif cout(" return(particle);"); cout("}"); From 7e0b01a9b6d60acce133ff66c325e76b6859679d Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 16:25:51 +0100 Subject: [PATCH 07/75] Peters 2nd prototype with cogen support --- .../ODIN_TOF_train2/DiskChopper.comp | 218 ++++ .../ODIN_TOF_train2/ESS_butterfly.comp | 614 ++++++++++ .../ODIN_TOF_train2/Graphite_Diffuser.comp | 115 ++ .../ODIN_TOF_train2/Monitor_nD.comp | 668 +++++++++++ .../ODIN_TOF_train2/MultiDiskChopper.comp | 351 ++++++ .../ODIN_TOF_train2/ODIN_TOF_train2.instr | 1016 +++++++++++++++++ .../ODIN_TOF_train2/bi_spec_ellipse.comp | 794 +++++++++++++ 7 files changed, 3776 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Graphite_Diffuser.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Monitor_nD.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp new file mode 100644 index 0000000000..06c37db584 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp @@ -0,0 +1,218 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: DiskChopper +* +* %I +* Written by: Peter Willendrup +* Date: March 9 2006 +* Origin: Risoe +* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disc chopper with nslit identical slits, which are symmetrically distributed +* on the disc. At time t=0, the centre of the first slit opening will be situated at the +* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. +* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z +* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see +* related bug on GitHub) +* +* For more complicated gemometries, see component manual example of DiskChopper GROUPing. +* +* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. +* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the +* chopper timing and phasing (thus conserving your simulated statistics). +* +* The isfirst parameter is ONLY relevant for use in continuous source settings. +* +* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper +* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) +* +* NOTA BENE wrt. GROUPing and isfirst: +* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need +* to set up +* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening +* that spans the full angular extent of the openings of the subsequent GROUP +* 2) Add your DiskChopper GROUP setting isfirst=0 +* +* %P +* INPUT PARAMETERS: +* +* theta_0: [deg] Angular width of the slits. +* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. +* radius: [m] Radius of the disc +* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) +* nslit: [1] Number of slits, regularly arranged around the disk +* +* Optional parameters: +* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) +* n_pulse: [1] Number of pulses (Only if isfirst) +* jitter: [s] Jitter in the time phase +* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? +* delay: [s] Time 'delay' +* phase: [deg] Angular 'delay' (overrides delay) +* xwidth: [m] Horizontal slit width opening at beam center +* verbose: [1] Set to 1 to display Disk chopper configuration +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT DiskChopper + + + +SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +DECLARE +%{ + double Tg; + double To; + double delta_y; + double height; + double omega; +%} + +INITIALIZE +%{ + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } +%} + +TRACE +%{ + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + // Check whether each t_offset carried by the ray make it through + int train_index; + int one_did_hit = 0; + double this_train_t; + int all_dead = 1; + for (train_index=0; train_indexalive_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + _particle->alive_trains[train_index] = 0; + else one_did_hit = 1; + } + if (!one_did_hit || all_dead) ABSORB; + + } + SCATTER; +%} + +MCDISPLAY +%{ + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp new file mode 100644 index 0000000000..e627ce669d --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp @@ -0,0 +1,614 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2016, All rights reserved +* DTU Physics, Kongens Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: ESS_butterfly +* +* %I +* +* Written by: Peter Willendrup and Esben Klinkby +* Date: August-September 2016 +* Origin: DTU +* +* ESS butterfly moderator, 2016 revision +* +* %D +* ESS butterfly moderator with automatic choice of coordinate system, with origin +* placed at relevant "Moderator Focus Coordinate System" depending on sector location. +* +* To select beamport N 5 simply use +* +* COMPONENT Source = ESS_butterfly(sector="N",beamline=5,Lmin=0.1,Lmax=20,dist=2, +* cold_frac=0.5, yheight=0.03,focus_xw=0.1, focus_yh=0.1) +* +* Geometry +* The geometry corresponds correctly to the latest release of the butterfly moderator, +* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. +* A set of official release documents are available with this component, see the benchmarking +* website mentioned below. +* +* Brilliances, geometry adapted from earlier BF2 design +* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, +* are released as an updated component library for McStas 2.3, as well as a stand alone archive for +* use with earlier versions of McStas. +* +* The following features are worth highlighting: +*
    +*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. +* As a result, the spatial variation of the brightness across the moderator face should be considered to +* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to +* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness +* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. +*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. +* To accommodate the influence of the changed geometry, this scaling factor has been applied independently +* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the +* spectrally-integrated 6cm width data shown in [1],Figure 3. +*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance +* have been implemented. For now, we recommend to keep these at their default value of 1.0. +*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This +* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, +* which has been derived from current MCNP butterfly 1 model. +*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, +* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. +* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree +* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees +* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- +* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. +*
+* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be +* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. +* +*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance +* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation +* across sectors and potentially also performance losses due to engineering reality. +* +* Engineering reality +* An ad-hoc method for future implementation of "engineering reality" is included, use the +* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. +* +* References: +*

    +*
  1. Release document "Update to ESS Moderators, latest version" +*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" +*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures +*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. +*
  5. Source code for ESS_butterfly.comp at GitHub. +*
+* %P +* Input parameters: +* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" +* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector +* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m +* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator +* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 +* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 +* Lmin: [AA] Minimum wavelength simulated +* Lmax: [AA] Maximum wavelength simulated +* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. +* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index +* focus_xw: [m] Width of focusing rectangle +* focus_yh: [m] Height of focusing rectangle +* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. +* acc_power: [MW] Accelerator power in MW +* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. +* tfocus_dist: [m] Position of time focusing window along z axis +* tfocus_time: [s] Time position of time focusing window +* tfocus_width: [s] Time width of time focusing window +* +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT ESS_butterfly + +SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, + int target_index=0, dist=0, focus_xw=0, focus_yh=0, + c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, + acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0) + + +SHARE %{ + %include "ESS_butterfly-lib" + %include "ESS_butterfly-geometry.c" + + int nearest_angle(double angle) { + int AngleList[] = {5, 15, 25, 35, 45, 55}; + double diff = 180; + int jmin=0; + int j; + for (j=0; j<6; j++) { + if (fabs(AngleList[j]-angle) < diff) { + diff = fabs(AngleList[j]-angle); + jmin = j; + } + } + return AngleList[jmin]; + } + double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; + double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; + double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; + double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; + double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; + double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; + double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; + double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; + double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; + double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; + double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; + double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; + double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; +%} + +DECLARE +%{ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double *Beamlines; + double wfrac_cold; + double wfrac_thermal; + /* 'Corner' parametrization, i.e. where are the limits of the moderators */ + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + /* - plus rotated versions of the same... */ + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + + double cos_thermal; + double cos_cold; + + double orientation_angle; + /* Centering-parameters, which sector are we in? */ + double cx; + double cz; + int jmax; + double dxC; + double dxT; +%} + +INITIALIZE +%{ + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; +%} + +TRACE +%{ + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + for (train_index=0; train_index0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/N_trains; + _particle->alive_trains[train_index] = 1; + + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=1; + + SCATTER; +%} + +MCDISPLAY +%{ + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Graphite_Diffuser.comp new file mode 100644 index 0000000000..ea21aa714e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Graphite_Diffuser.comp @@ -0,0 +1,115 @@ +/******************************************************************************* +* +* McStas, version 1.2 released February 2000 +* Maintained by Kristian Nielsen and Kim Lefmann, +* Risoe National Laboratory, Roskilde, Denmark +* +* %IDENTIFICATION +* +* Written by: Manuel Morgano +* Date: 18 Febrauary 2015 +* Version: $Revision: 1.1.1.1 $ +* Origin: PSI +* +* Graphite diffuser +* +* %DESCRIPTION +* +* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics +* +* The formula has only been verified for a diffuser thickness of 1 and 2 cm. +* No absorption is take into account. +* +* %PARAMETERS +* +* INPUT PARAMETERS: +* +* xwidth: (m) Size of diffuser +* ywidth: (m) Size of diffuser +* thick: (m) Thickness of diffuser +* abs (1) 0 = no absorption, 1 = absorption +* %LINKS +* %END +* +*******************************************************************************/ + +DEFINE COMPONENT Graphite_Diffuser +DEFINITION PARAMETERS () +SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) +OUTPUT PARAMETERS () +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) +SHARE +%{ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} +%} +INITIALIZE +%{ +%} +TRACE +%{ + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi +* Date: 14th Feb 2000. +* Origin: ILL +* Release: McStas 1.6 +* Version: $Revision$ +* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi +* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) +* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster +* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) +* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) +* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) +* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) +* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) +* +* This component is a general Monitor that can output 0/1/2D signals +* (Intensity or signal vs. [something] and vs. [something] ...) +* +* %Description +* This component is a general Monitor that can output 0/1/2D signals +* It can produce many 1D signals (one for any variable specified in +* option list), or a single 2D output (two variables correlation). +* Also, an additional 'list' of neutron events can be produced. +* By default, monitor is square (in x/y plane). A disk shape is also possible +* The 'cylinder' and 'banana' option will change that for a banana shape +* The 'sphere' option simulates spherical detector. The 'box' is a box. +* The cylinder, sphere and banana should be centered on the scattering point. +* The monitored flux may be per monitor unit area, and weighted by +* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. +* In normal configuration, the Monitor_nD measures the current parameters +* of the neutron that is beeing detected. But a PreMonitor_nD component can +* be used in order to study correlations between a neutron being detected in +* a Monitor_nD place, and given parameters that are monitored elsewhere +* (at PreMonitor_nD). +* The monitor can also act as a 3He gas detector, taking into account the +* detection efficiency. +* +* The 'bins' and 'limits' modifiers are to be used after each variable, +* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 +* limits=[-5 5]) When placed after all variables, these two latter modifiers +* apply to the signal (e.g. intensity). Unknown keywords are ignored. +* If no limits are specified for a given observable, reasonable defaults will be +* applied. Note that these implicit limits are even applied in list mode. +* +* Implicit limits for typical variables: +* (consult monitor_nd-lib.c if you don't find your variable here) +* x, y, z: Derived from detection-object geometry +* k: [0 10] Angs-1 +* v: [0 1e6] m/s +* t: [0 1] s +* p: [0 FLT_MAX] in intensity-units +* vx, vy: [-1000 1000] m/s +* vz: [0 10000] m/s +* kx, ky: [-1 1] Angs-1 +* kz: [-10 10] Angs-1 +* energy, omega: [0 100] meV +* lambda,wavelength: [0 100] Angs +* sx, sy, sz: [-1 1] in polarisation-units +* angle: [-50 50] deg +* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg +* longitude, lattitude: [-180 180] deg +* neutron: [0 simulaton_ncount] +* id, pixel id: [0 FLT_MAX] +* uservars u1,u2,u3: [-1e10 1e10] +* +* In the case of multiple components at the same position, the 'parallel' +* keyword must be used in each instance instead of defining a GROUP. +* +* Possible options are +* Variables to record: +* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm +* vx vy vz v [m/s] Velocity on x,y,z and norm +* x y z radius [m] Distance, Position and norm +* xy, yz, xz [m] Radial position in xy, yz and xz plane +* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane +* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane +* t time [s] Time of Flight +* energy omega [meV] energy of neutron +* lambda wavelength [Angs] wavelength of neutron +* sx sy sz [1] Spin +* vdiv ydiv dy [deg] vertical divergence (y) +* hdiv divergence xdiv [deg] horizontal divergence (x) +* angle [deg] divergence from direction +* theta longitude [deg] longitude (x/z) for sphere and cylinder +* phi lattitude [deg] lattitude (y/z) for sphere and cylinder +* +* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} +* user2 user3 to be assigned in an other component (see below) +* +* p intensity flux [n/s or n/cm^2/s] +* ncounts n neutron [1] neutron ID, i.e current event index +* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. +* +* Other options keywords are: +* abs Will monitor the abs of the following variable or of the signal (if used after all variables) +* auto Automatically set detector limits for one/all +* all {limits|bins|auto} To set all limits or bins values or auto mode +* binary {float|double} with 'source' option, saves in compact files +* bins=[bins=20] Number of bins in the detector along dimension +* borders To also count off-limits neutrons (X < min or X > max) +* capture weight by lambda/lambda(2200m/s) capture flux +* file=string Detector image file name. default is component name, plus date and variable extension. +* incoming Monitor incoming beam in non flat det +* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) +* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events +* log Will monitor the log of the following variable or of the signal (if used after all variables) +* min=[min_value] Same as limits, but only sets the min or max +* max=[max_value] +* multiple Create multiple independant 1D monitors files +* no or not Revert next option +* outgoing Monitor outgoing beam (default) +* parallel Use this option when the next component is at the same position (parallel components) +* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. +* per steradian Displays beam solid angle in steradian +* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. +* signal=[var] Will monitor [var] instead of usual intensity +* slit or absorb Absorb neutrons that are out detector +* source The monitor will save neutron states +* inactivate To inactivate detector (0D detector) +* verbose To display additional informations +* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) +* +* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) +* box Box of size xwidth, yheight, zdepth. +* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). +* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). +* disk Disk flat xy monitor. diameter is xwidth. +* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). +* square Square flat xy monitor (xwidth, yheight). +* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. +* +* EXAMPLES: +*
    +*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, +*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with +*   borders, file = mon1"); +* will monitor neutron angle from [z] axis, between -5 +* and 5 degrees, in 10 bins, into "mon1.A" output 1D file +* +*
  • options = "sphere theta phi outgoing" +* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" +* +*
  • options = "banana, theta limits=[10,130], bins=120, y" +* a theta/height banana detector +* +*
  • options = "angle radius all auto" +* is a 2D monitor with automatic limits +* +*
  • options = "list=1000 kx ky kz energy" +* records 1000 neutron event in a file +* +*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" +* makes 4 output 1D files and produces a complete list for all neutrons +* and monitor log(abs(tof)) within automatic limits (for t) +* +*
  • options = "theta y, sphere, pixel min=100" +* a 4pi detector which outputs an event list with pixelID from the actual +* detector surface, starting from index 100. +* +*
+* To dynamically define a number of bins, or limits: +* Use in DECLARE: char op[256]; +* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); +* Use in TRACE: Monitor_nD(... options=op ...) +* +* How to monitor any instrument/component variable into a Monitor_nD +* Suppose you want to monitor a variable 'age' which you assign somwhere in +* the instrument: +* COMPONENT MyMonitor = Monitor_nD( +* xwidth = 0.1, yheight = 0.1, +* user1="age", username1="Age of the Captain [years]", +* options="user1, auto") +* AT ... +* +* See also the example in PreMonitor_nD to +* monitor neutron parameters cross-correlations. +* +* %BUGS +* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI +* as each process may use different limits. +* +* %Parameters +* INPUT PARAMETERS: +* +* xwidth: [m] Width of detector. +* yheight: [m] Height of detector. +* zdepth: [m] Thickness of detector (z). +* radius: [m] Radius of sphere/banana shape monitor +* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). +* +* Optional input parameters (override xwidth yheight zdepth): +* xmin: [m] Lower x bound of opening +* xmax: [m] Upper x bound of opening +* ymin: [m] Lower y bound of opening +* ymax: [m] Upper y bound of opening +* zmin: [m] Lower z bound of opening +* zmax: [m] Upper z bound of opening +* filename: [str] Output file name (overrides file=XX option). +* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins +* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits +* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits +* user1: [str] Variable name of USERVAR to be monitored by user1. +* user2: [str] Variable name of USERVAR to be monitored by user2. +* user3: [str] Variable name of USERVAR to be monitored by user3. +* username1: [str] Name assigned to User1 +* username2: [str] Name assigned to User2 +* username3: [str] Name assigned to User3 +* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. +* geometry: [str] Name of an OFF file to specify a complex geometry detector +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* DEFS: [struct] structure containing Monitor_nD Defines +* Vars: [struct] structure containing Monitor_nD variables +* +* %Link +* PreMonitor_nD +* +* %End +******************************************************************************/ +DEFINE COMPONENT Monitor_nD + +SETTING PARAMETERS ( + string user1="", string user2="", string user3="", + xwidth=0, yheight=0, zdepth=0, + xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, + int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, + string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, + string username1="NULL", string username2="NULL", string username3="NULL", + tsplit=0 +) +/* these are protected C variables */ + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + %include "monitor_nd-lib" + %include "read_table-lib" + %include "interoff-lib" +%} + +DECLARE +%{ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +%} + +INITIALIZE +%{ + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif +%} + +TRACE +%{ + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + int train_index; + double p_original = p; + + if (tsplit==1) { + double pp_array[N_trains]; + double t_original = t; + for (train_index=0; train_indexalive_trains[train_index] == 1) { + p = p_original*_particle->p_trains[train_index]; + t = t_original + _particle->t_offset[train_index]; + + pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + } else pp_array[train_index] = 0; + } + p = p_original; + t = t_original; + + int pp_total = 0; + for (train_index=0; train_index 0) { + SCATTER; + } + } else { + + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + + p = p_original; + } + + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } +%} + +FINALLY +%{ + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); +%} + +MCDISPLAY +%{ + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp new file mode 100644 index 0000000000..bb64311496 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp @@ -0,0 +1,351 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2015, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: MultiDiskChopper +* +* %I +* Written by: Markus Appel +* Date: 2015-10-19 +* Origin: ILL / FAU Erlangen-Nuernberg +* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), +* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disk chopper with a freely configurable slit pattern. For simple applications, +* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. +* If the chopper slit pattern should be dynamically configurable or a complicated pattern +* is to be used as first chopper on a continuous source, use this component. +* +* Width and position of the slits is defined as a list in string parameters so +* they can easily be taken from instrument parameters. +* The chopper axis is located on the y axis as defined by the parameter delta_y. +* When the chopper is the first chopper after a continuous (i.e. time-independent) +* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. +* +* +* Examples (see parameter definitions for details): +* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, delay=0.02) +* +* First chopper on a continuous source, creating pulse trains for one additional revolution +* before and after the revolution at t=0: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) +* +* %P +* INPUT PARAMETERS: +* +* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" +* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) +* nslits: [] Number of slits to read from slit_width and slit_center +* radius: [m] Outer radius of the disk +* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. +* nu: [Hz] Rotation speed of the disk, the sign determines the direction. +* +* Optional parameters: +* verbose: [0/1] Set to 1 to display more information during the simulation. +* phase: [deg] Phase angle located on top of the disk at t=delay (see below). +* delay: [s] Time delay of the chopper clock. +* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. +* jitter: [s] Jitter in the time phase. +* abs_out: If 1, absorb all neutrons outside the disk diameter. +* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events +* will be shifted in time to pass the component (with adapted weight). +* +* Additional parameters when isfirst=1 (that have no effect for isfirst=0): +* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. +* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). +* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT MultiDiskChopper + +SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) + + +DECLARE +%{ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +%} + +INITIALIZE +%{ + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + %} + +TRACE +%{ + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // Check whether each t_offset carried by the ray make it through + int train_index; + int one_did_hit = 0; + int this_t_hit; + double this_train_t; + int all_dead = 1; + for (train_index=0; train_indexalive_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + this_t_hit = 0; + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + this_t_hit = 1; + + islit++; + } + if (this_t_hit == 0) _particle->alive_trains[train_index] = 0; + else one_did_hit = 1; + } + // if not a single t_offset made it through a slit, absorb this ray + if (!one_did_hit || all_dead) ABSORB; + } + } +%} + +FINALLY +%{ + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); +%} + +MCDISPLAY +%{ + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr new file mode 100644 index 0000000000..6fce340ec8 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr @@ -0,0 +1,1016 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN_TOF_train +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* %Example: -y Detector: tof_I=9.16671e+08 +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN_TOF_train2 ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2 // 0: no choppers 1: BP 2: WFM +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + + +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE + +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Origin + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0) +AT (0, 0, 0) RELATIVE Origin + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + + COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]", + tsplit=1 + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", + tsplit=1 + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +// Start of finally for generated ODIN +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/bi_spec_ellipse.comp new file mode 100644 index 0000000000..c24fb3cdea --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/bi_spec_ellipse.comp @@ -0,0 +1,794 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2011, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Bi-spectral extracion system +* +* %I +* Written by: Manuel Morgano +* Date: April 2015 +* Version: $Revision: 2.3 $ +* Origin: PSI +* Release: McStas 1.12c +* +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* +* %D +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* The supermirror number can be automatically calculated (setting the number to 0) or given +* Each mirror can be split in submirror pieces, each of them offseted by a constant angle +* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. +* The feeder's shape is calculated by the distance between the guide entrance and the first focus, +* the distance between the exit and the second focus, the length of the coated part and the opening +* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. +* User can specify different shapes for the horizontal and the vertical ellipse. +* Setting the m-coating to 0 means absorbing, -1 means transparent. +* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn +* but it's transparent. +* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. +* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. +* +* +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %P +* INPUT PARAMETERS: +* +* xheight: (m) height of mirror stack +* ywidth: (m) width of mirror plate +* zlength: (m) length of the mirror +* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) +* n_pieces (1) number of straight section per mirror +* tilt (degrees) angle between the mirrors and the horizontal direction +* angular_offset (degrees) angle between subsequent sub-mirrors +* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. +* R0_m: (1) Low-angle reflectivity +* Qc_m: (AA-1) Critical scattering vector +* alpha_mirror_m: (AA) Slope of reflectivity +* W_m: (AA-1) Width of supermirror cut-off +* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. +* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. +* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. +* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. +* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. +* ell_l: (m) length of the coated part of the ellipse +* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors +* ell_w: (m) width of the ellipse entrance +* ell_m: (1) m-value of the coating of the ellipse +* R0: (1) Low-angle reflectivity +* Qc: (AA-1) Critical scattering vector +* alpha_mirror: (AA) Slope of reflectivity +* W: (AA-1) Width of supermirror cut-off +* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* cut: (1) cutoff for lowest reflectivity consideration. +* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file +* +* %D +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT bi_spec_ellipse +DEFINITION PARAMETERS () + SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) +OUTPUT PARAMETERS (pTable) +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) + +SHARE +%{ +%include "read_table-lib" +%} + +DECLARE +%{ + t_Table pTable; + +%} + +INITIALIZE +%{ + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + +%} + +TRACE +%{ + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +%} + +MCDISPLAY +%{ + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i Date: Thu, 26 Feb 2026 16:27:27 +0100 Subject: [PATCH 08/75] Add DEPENDENCY for TOF_TRAINS --- .../examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp | 1 + 1 file changed, 1 insertion(+) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp index e627ce669d..9eedb695a8 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp @@ -110,6 +110,7 @@ SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0. c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0) +DEPENDENCY " -DTOF_TRAINS " SHARE %{ %include "ESS_butterfly-lib" From 134cc3cbf6320f2193b2a5ee476dbfa86d136643 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 16:41:30 +0100 Subject: [PATCH 09/75] Prototype 2 compiles, but for now produces 0 intensity --- common/lib/share/mccode-r.c | 1 + .../examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp | 2 +- .../Prototypes/ODIN_TOF_train2/ESS_butterfly.comp | 6 +++--- .../examples/Prototypes/ODIN_TOF_train2/Monitor_nD.comp | 8 ++++---- .../Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 0d181d72f8..202ac5beb6 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -4807,6 +4807,7 @@ mcparseoptions(int argc, char *argv[]) #ifdef TOF_TRAIN else if(!strncmp("--tof-trains=", argv[i], 13)) { NTOF=atoi(&argv[i][13]); + } #endif #ifdef USE_NEXUS else if(!strcmp("--IDF", argv[i])) { diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp index 06c37db584..9055e1ac2e 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp @@ -174,7 +174,7 @@ TRACE int one_did_hit = 0; double this_train_t; int all_dead = 1; - for (train_index=0; train_indexN_trains; train_index++) { if (_particle->alive_trains[train_index] == 0) continue; all_dead = 0; diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp index 9eedb695a8..6df88c7321 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp @@ -110,7 +110,7 @@ SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0. c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0) -DEPENDENCY " -DTOF_TRAINS " +DEPENDENCY " -DTOF_TRAIN " SHARE %{ %include "ESS_butterfly-lib" @@ -549,7 +549,7 @@ TRACE vx = v*dx/r; int train_index; - for (train_index=0; train_indexN_trains; train_index++) { /* Are we using time focusing? */ if (tfocus_width>0) { @@ -589,7 +589,7 @@ TRACE // Save these to t_offset and p_train _particle->t_offset[train_index] = t; - _particle->p_trains[train_index] = p/N_trains; + _particle->p_trains[train_index] = p/_particle->N_trains; _particle->alive_trains[train_index] = 1; } diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Monitor_nD.comp index 4113a22334..d852808417 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Monitor_nD.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Monitor_nD.comp @@ -571,9 +571,9 @@ TRACE double p_original = p; if (tsplit==1) { - double pp_array[N_trains]; + double pp_array[_particle->N_trains]; double t_original = t; - for (train_index=0; train_indexN_trains; train_index++) { if (_particle->alive_trains[train_index] == 1) { p = p_original*_particle->p_trains[train_index]; @@ -587,7 +587,7 @@ TRACE t = t_original; int pp_total = 0; - for (train_index=0; train_indexN_trains; train_index++) { pp_total += pp_array[train_index]; } if (pp_total == 0.0) { @@ -598,7 +598,7 @@ TRACE } else { double total_p = 0; - for (train_index=0; train_indexN_trains; train_index++) { if (_particle->alive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; } diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp index bb64311496..2bf64d7efc 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp @@ -286,7 +286,7 @@ TRACE int this_t_hit; double this_train_t; int all_dead = 1; - for (train_index=0; train_indexN_trains; train_index++) { if (_particle->alive_trains[train_index] == 0) continue; all_dead = 0; From 4b8bf793786f35ffb2b62b9954c4e6f0239d3189 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 20:44:25 +0100 Subject: [PATCH 10/75] Enable missing default for --tof-trains --- common/lib/share/mccode-r.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 202ac5beb6..4712b76c8f 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -61,6 +61,9 @@ static long mcstartdate = 0; /* start simulation time */ static int mcdisable_output_files = 0; /* --no-output-files */ mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ +#ifdef TOF_TRAIN +NTOF=10; /* Default to 10 TOF "sub-particles" in a TOF_TRAIN */ +#endif mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ @@ -4517,6 +4520,9 @@ mchelp(char *pgmname) " kernel run (default: 2147483647)\n" "\n" #endif +#ifdef TOF_TRAIN +" --tof-trains=K Number of TOF \"sub-particles\" (default 10)\n" +#endif "\n" " --bufsiz Monitor_nD list/buffer-size (default: 1000000)\n" " --format=FORMAT Output data files using FORMAT=" From a5ff8545abbbf044d210a62b249e066e1f987b81 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 20:53:47 +0100 Subject: [PATCH 11/75] NTOF default of 10 works when defined within mcparseoptions --- common/lib/share/mccode-r.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 4712b76c8f..456b99eccb 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -61,9 +61,9 @@ static long mcstartdate = 0; /* start simulation time */ static int mcdisable_output_files = 0; /* --no-output-files */ mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ -#ifdef TOF_TRAIN -NTOF=10; /* Default to 10 TOF "sub-particles" in a TOF_TRAIN */ -#endif + /* When -DTOF_TRAIN is defined, the default NTOF + becomes 10, defined below in the + mcparseoptions function body.*/ mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ @@ -4706,6 +4706,10 @@ mcparseoptions(int argc, char *argv[]) int paramset = 0, *paramsetarray; char *usedir=NULL; + #ifdef TOF_TRAIN + NTOF=10; /* Default to 10 TOF "sub-particles" in a TOF_TRAIN */ + #endif + /* Add one to numipar to avoid allocating zero size memory block. */ paramsetarray = (int*)malloc((numipar + 1)*sizeof(*paramsetarray)); if(paramsetarray == NULL) From 8924405d46616f755ccfbb43c35871503ec18849 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 20:54:58 +0100 Subject: [PATCH 12/75] Remove instr file from baseline dataset (gives 1/2 hickup from mctest) --- .../ODIN_baseline.instr | 1022 ----------------- 1 file changed, 1022 deletions(-) delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.instr diff --git a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.instr b/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.instr deleted file mode 100644 index 17fc71f099..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_baseline/ODIN_baseline_10xMPI_1e8_seed_1000/ODIN_baseline.instr +++ /dev/null @@ -1,1022 +0,0 @@ -/******************************************************************************** -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* This file was written by McStasScript, which is a -* python based McStas instrument generator written by -* Mads Bertelsen in 2019 while employed at the -* European Spallation Source Data Management and -* Software Centre -* -* Instrument: ODIN_baseline -* -* %Identification -* Written by: Python McStas Instrument Generator -* Date: 13:25:52 on February 25, 2026 -* Origin: ESS DMSC -* %INSTRUMENT_SITE: Generated_instruments -* -* !!Please write a short instrument description (1 line) here!! -* -* %Description -* Please write a longer instrument description here! -* -* -* %Parameters -* l_min: [unit] Minimum simulated wavelength [AA] -* l_max: [unit] Maximum simulated wavelength [AA] -* n_pulses: [unit] Number of simulated pulses -* wfm_delta: [unit] Distance between WFM choppers [m] -* bp_frequency: [unit] Frequency of bandpass choppers [Hz] -* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] -* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. -* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] -* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. -* fo1_phase_offset: [unit] Offset of fo1 phase [deg] -* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. -* bp1_phase_offset: [unit] Offset of bp1 phase [deg] -* jitter_bp1: [unit] Jitter of bp1 chopper -* fo2_phase_offset: [unit] Offset of fo2 phase [deg] -* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. -* bp2_phase_offset: [unit] Offset of bp2 phase [deg] -* jitter_bp2: [unit] Jitter of bp2 chopper -* t0_phase_offset: [unit] Offset of t0 phase [deg] -* jit_t0_sec: [unit] Jitter of t0 chopper -* fo3_phase_offset: [unit] Offset of fo3 phase [deg] -* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. -* fo4_phase_offset: [unit] Offset of fo4 phase [deg] -* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. -* fo5_phase_offset: [unit] Offset of fo5 phase [deg] -* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. -* -* %Link -* -* %End -********************************************************************************/ - -DEFINE INSTRUMENT ODIN_baseline ( -l_min = 1.0, // Minimum simulated wavelength [AA] -l_max = 11.0, // Maximum simulated wavelength [AA] -int n_pulses = 1, // Number of simulated pulses -wfm_delta = 0.3, // Distance between WFM choppers [m] -bp_frequency = 7, // Frequency of bandpass choppers [Hz] -WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] -jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. -WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] -jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. -fo1_phase_offset = 0, // Offset of fo1 phase [deg] -jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. -bp1_phase_offset = 0, // Offset of bp1 phase [deg] -jitter_bp1 = 0, // Jitter of bp1 chopper -fo2_phase_offset = 0, // Offset of fo2 phase [deg] -jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. -bp2_phase_offset = 0, // Offset of bp2 phase [deg] -jitter_bp2 = 0, // Jitter of bp2 chopper -t0_phase_offset = 0, // Offset of t0 phase [deg] -jit_t0_sec = 0, // Jitter of t0 chopper -fo3_phase_offset = 0, // Offset of fo3 phase [deg] -jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. -fo4_phase_offset = 0, // Offset of fo4 phase [deg] -jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. -fo5_phase_offset = 0, // Offset of fo5 phase [deg] -jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. -int choppers=2 // 0: no choppers 1: BP 2: WFM -) - -DECLARE -%{ -double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap -double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap -double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap -double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap -double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap -double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap -double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap -double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap -double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap -double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap -%} - -USERVARS -%{ -double *t_offset; -double *p_trains; -int *alive_trains; -%} - - -INITIALIZE -%{ -// Start of initialize for generated ODIN -WFM1_phase = WFM1_phase_offset; -WFM1_phase += 97.55; -WFM2_phase = WFM2_phase_offset; -WFM2_phase += -5.88015; -fo1_phase = fo1_phase_offset; -fo1_phase += -65.625; -bp1_phase = bp1_phase_offset; -bp1_phase += -11.475; -fo2_phase = fo2_phase_offset; -fo2_phase += -20.5; -bp2_phase = bp2_phase_offset; -bp2_phase += 185.195; -t0_phase = t0_phase_offset; -fo3_phase = fo3_phase_offset; -fo3_phase += 137.47; -fo4_phase = fo4_phase_offset; -fo4_phase += 111.700; -fo5_phase = fo5_phase_offset; -fo5_phase += -81.105; - - -MPI_MASTER( -struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "w"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); -); -%} - -TRACE - -COMPONENT Origin = Progress_bar() -AT (0, 0, 0) ABSOLUTE -EXTEND %{ -%} - -COMPONENT optical_axis = Arm() -AT (0.026, 0, 0) RELATIVE Origin - -COMPONENT Source = ESS_butterfly( - sector = "S", beamline = 2, - yheight = 0.03, cold_frac = 0.5, - target_index = 1, focus_xw = 0.0576862, - focus_yh = 0.0464308, c_performance = 1, - t_performance = 1, Lmin = l_min, - Lmax = l_max, n_pulses = n_pulses, - acc_power = 2.0) -AT (0, 0, 0) RELATIVE Origin - -COMPONENT Start_of_bi = Arm() -AT (0, 0, 2.0306) RELATIVE optical_axis - -COMPONENT bi = bi_spec_ellipse( - xheight = 0.044795, ywidth = 0.033273, - zlength = 0.3, n_mirror = 0, - tilt = 0.7355449343006287, n_pieces = 1, - angular_offset = 0.0274924630093546, m = 4, - Qc_m = 0.0217, alpha_mirror_m = 2.5, - W_m = 0.015, d_focus_1_x = 3.443249331959489, - d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, - d_focus_2_y = 33.78623864676767, ell_l = 0.31, - ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, - ell_m = 4, R0 = 0.99, - Qc = 0.0217, alpha_mirror = 2.5, - W = 0.0015, cut = 3, - substrate = 0) -AT (0, 0, 0) RELATIVE Start_of_bi -ROTATED (0, 0, 180) RELATIVE Start_of_bi - -COMPONENT End_of_bi = Arm() -AT (0, 0, 0.31) RELATIVE bi -ROTATED (0, 0, -180) RELATIVE bi - -COMPONENT NBOA_drawing_1_end = Guide_four_side( - w1l = 0.022187, linwl = 3.7532493319594886, - loutwl = 4.397849331959489, w1r = 0.022187, - linwr = 3.7532493319594886, loutwr = 4.397849331959489, - h1u = 0.017858, linhu = 2.213738646767668, - louthu = 33.23733864676767, h1d = 0.017858, - linhd = 2.213738646767668, louthd = 33.23733864676767, - l = 0.5488999999999999, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 0.31000099999999997) RELATIVE bi - -COMPONENT g1a2 = Guide_four_side( - w1l = 0.022397711974319966, linwl = 4.303349331959489, - loutwl = 3.3968493319594883, w1r = 0.022397711974319966, - linwr = 4.303349331959489, loutwr = 3.3968493319594883, - h1u = 0.019790525295492974, linhu = 2.763788626121542, - louthu = 32.236388626121546, h1d = 0.019790525295492974, - linhd = 2.763788626121542, louthd = 32.236388626121546, - l = 0.9998, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end - -COMPONENT g1a3 = Guide_four_side( - w1l = 0.021853309009560024, linwl = 5.3043493319594885, - loutwl = 1.8968293319594889, w1r = 0.021853309009560024, - linwr = 5.3043493319594885, loutwr = 1.8968293319594889, - h1u = 0.02274764602619812, linhu = 3.7648386261215414, - louthu = 30.73631862612154, h1d = 0.02274764602619812, - linhd = 3.7648386261215414, louthd = 30.73631862612154, - l = 1.49882, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 0.999801) RELATIVE g1a2 - -COMPONENT g1b1 = Guide_four_side( - w1l = 0.017955, linwl = 6.82655, - loutwl = 1.3934509999999998, w1r = 0.017955, - linwr = 6.82655, loutwr = 1.3934509999999998, - h1u = 0.026565, linhu = 5.2842144, - louthu = 30.232929999999996, h1d = 0.026565, - linhd = 5.2842144, louthd = 30.232929999999996, - l = 0.48300000000000054, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2.5, - myd = 2.5) -AT (0, 0, 5.4109) RELATIVE optical_axis - -COMPONENT g1c1 = Guide_four_side( - w1l = 0.015725, linwl = 7.323650000000001, - loutwl = 0.5472510000000002, w1r = 0.015725, - linwr = 7.323650000000001, loutwr = 0.5472510000000002, - h1u = 0.02753, linhu = 5.7813144, - louthu = 29.38673, h1d = 0.02753, - linhd = 5.7813144, louthd = 29.38673, - l = 0.8320999999999996, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2.5, - myd = 2.5) -AT (0, 0, 5.908) RELATIVE optical_axis - -COMPONENT wfm_position = Arm() -AT (0, 0, 7.0) RELATIVE optical_axis - -COMPONENT wfm_1_position = Arm() -AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position - -COMPONENT wfmc_1 = MultiDiskChopper( - slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", - nslits = 6, delta_y = -0.31499999999999995, - nu = -56.0, jitter = jitter_wfmc_1, - phase = WFM1_phase, radius = 0.35) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE wfm_1_position -ROTATED (0, 0, 180) RELATIVE wfm_1_position - - -COMPONENT pinhole_1 = Slit( - xwidth = 0.015, yheight = 0.06) -AT (0, 0, 0) RELATIVE wfm_position - -COMPONENT wfm_2_position = Arm() -AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position - -COMPONENT wfmc_2 = MultiDiskChopper( - slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", - nslits = 6, delta_y = -0.31499999999999995, - nu = -56.0, jitter = jitter_wfmc_2, - phase = WFM2_phase, radius = 0.35) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE wfm_2_position -ROTATED (0, 0, 180) RELATIVE wfm_2_position - -COMPONENT g2a1 = Guide_four_side( - w1l = 0.01121, linwl = 0.25980000000000025, - loutwl = 12.040199999999999, w1r = 0.01121, - linwr = 0.25980000000000025, loutwr = 12.040199999999999, - h1u = 0.029825, linhu = 7.2598, - louthu = 28.0402, h1d = 0.029825, - linhd = 7.2598, louthd = 28.0402, - l = 0.7000000000000002, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 3, - myd = 3) -AT (0, 0, 7.247800000000001) RELATIVE optical_axis - -COMPONENT monitor_1_position = Arm() -AT (0, 0, 7.96) RELATIVE optical_axis - -COMPONENT g2a2 = Guide_four_side( - w1l = 0.0212, linwl = 0.9858000000000002, - loutwl = 11.6045, w1r = 0.0212, - linwr = 0.9858000000000002, loutwr = 11.6045, - h1u = 0.03088, linhu = 7.9858, - louthu = 27.6045, h1d = 0.03088, - linhd = 7.9858, louthd = 27.6045, - l = 0.40969999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 3, - myd = 3) -AT (0, 0, 7.973800000000001) RELATIVE optical_axis - -COMPONENT fo1_position = Arm() -AT (0, 0, 8.392) RELATIVE optical_axis - -COMPONENT fo_chopper_1 = MultiDiskChopper( - slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", - nslits = 6, delta_y = -0.4625, - nu = -42.0, jitter = jitter_fo_chopper_1, - phase = fo1_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo1_position -ROTATED (0, 0, 180) RELATIVE fo1_position - -COMPONENT bp1_position = Arm() -AT (0, 0, 8.442) RELATIVE optical_axis - -COMPONENT bp1_chopper = DiskChopper( - theta_0 = 46.71, radius = 0.5, - yheight = 0.075, nu = bp_frequency, - nslit = 1, jitter = jitter_bp1, - phase = bp1_phase + (42.20500000000003)) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp1_position -ROTATED (0, 0, 180) RELATIVE bp1_position - -COMPONENT g2b1 = Guide_four_side( - w1l = 0.02521, linwl = 1.4502500000000005, - loutwl = 11.14005, w1r = 0.02521, - linwr = 1.4502500000000005, loutwr = 11.14005, - h1u = 0.031505, linhu = 8.45025, - louthu = 27.140050000000002, h1d = 0.031505, - linhd = 8.45025, louthd = 27.140050000000002, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.446250000000001) RELATIVE optical_axis - -COMPONENT g2b2 = Guide_four_side( - w1l = 0.02811, linwl = 1.8707999999999991, - loutwl = 9.67745, w1r = 0.02811, - linwr = 1.8707999999999991, loutwr = 9.67745, - h1u = 0.03203, linhu = 8.8708, - louthu = 25.67745, h1d = 0.03203, - linhd = 8.8708, louthd = 25.67745, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.8668) RELATIVE optical_axis - -COMPONENT g2b3 = Guide_four_side( - w1l = 0.03493, linwl = 3.3230500000000003, - loutwl = 8.2252, w1r = 0.03493, - linwr = 3.3230500000000003, loutwr = 8.2252, - h1u = 0.033615, linhu = 10.32305, - louthu = 24.2252, h1d = 0.033615, - linhd = 10.32305, louthd = 24.2252, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 10.31905) RELATIVE optical_axis - -COMPONENT g2b4 = Guide_four_side( - w1l = 0.03862, linwl = 4.7858, - loutwl = 7.804500000000001, w1r = 0.03862, - linwr = 4.7858, loutwr = 7.804500000000001, - h1u = 0.03488, linhu = 11.7858, - louthu = 23.8045, h1d = 0.03488, - linhd = 11.7858, louthd = 23.8045, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 11.7818) RELATIVE optical_axis - -COMPONENT fo2_position = Arm() -AT (0, 0, 12.2) RELATIVE optical_axis - -COMPONENT fo_chopper_2 = MultiDiskChopper( - slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", - nslits = 6, delta_y = -0.46, - nu = -42.0, jitter = jitter_fo_chopper_2, - phase = fo2_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo2_position -ROTATED (0, 0, 180) RELATIVE fo2_position - -COMPONENT bp2_position = Arm() -AT (0, 0, 12.25) RELATIVE optical_axis - -COMPONENT bp_chopper2 = DiskChopper( - theta_0 = 67.49, radius = 0.5, - yheight = 0.08, nu = bp_frequency, - nslit = 1, jitter = jitter_bp2, - phase = bp2_phase -141.795) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp2_position -ROTATED (0, 0, 180) RELATIVE bp2_position - -COMPONENT g2c1 = Guide_four_side( - w1l = 0.03929, linwl = 5.250249999999999, - loutwl = 6.536899999999999, w1r = 0.03929, - linwr = 5.250249999999999, loutwr = 6.536899999999999, - h1u = 0.03488, linhu = 12.25025, - louthu = 22.5369, h1d = 0.03488, - linhd = 12.25025, louthd = 22.5369, - l = 1.2128500000000013, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 12.254249999999999) RELATIVE optical_axis - -COMPONENT t0_start_position = Arm() -AT (0, 0, 13.503) RELATIVE optical_axis - -COMPONENT t0_chopper_alpha = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_start_position -ROTATED (0, 0, 180) RELATIVE t0_start_position - -COMPONENT t0_end_position = Arm() -AT (0, 0, 13.703) RELATIVE optical_axis - -COMPONENT t0_chopper_beta = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_end_position -ROTATED (0, 0, 180) RELATIVE t0_end_position - -COMPONENT g3a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03611, linhu = 13.7559, - louthu = 20.2631, h1d = 0.03611, - linhd = 13.7559, louthd = 20.2631, - l = 1.981, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 13.7379) RELATIVE optical_axis - -COMPONENT g3a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03687, linhu = 15.7409, - louthu = 19.0055, h1d = 0.03687, - linhd = 15.7409, louthd = 19.0055, - l = 1.2535999999999987, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 15.7229) RELATIVE optical_axis - -COMPONENT fo3_position = Arm() -AT (0, 0, 16.9865) RELATIVE optical_axis - -COMPONENT fo_chopper_3 = MultiDiskChopper( - slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", - nslits = 6, delta_y = -0.5575, - nu = -28.0, jitter = jitter_fo_chopper_3, - phase = fo3_phase, radius = 0.6) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo3_position -ROTATED (0, 0, 180) RELATIVE fo3_position - -COMPONENT g3b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03711, linhu = 17.0055, - louthu = 18.038, h1d = 0.03711, - linhd = 17.0055, louthd = 18.038, - l = 0.9564999999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 16.9965) RELATIVE optical_axis - -COMPONENT g4a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.2600000000000016, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 17.964) RELATIVE optical_axis - -COMPONENT monitor_2_position = Arm() -AT (0, 0, 19.245) RELATIVE optical_axis - -COMPONENT g4a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 19.25) RELATIVE optical_axis - -COMPONENT g4a3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.4252499999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 21.25025) RELATIVE optical_axis - -COMPONENT fo4_position = Arm() -AT (0, 0, 23.6855) RELATIVE optical_axis - -COMPONENT fo_chopper_4 = MultiDiskChopper( - slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_4, - phase = fo4_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo4_position -ROTATED (0, 0, 180) RELATIVE fo4_position - -COMPONENT g4b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.5565999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 23.6955) RELATIVE optical_axis - -COMPONENT g4b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.7800000000000011, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 24.2561) RELATIVE optical_axis - -COMPONENT g4b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.1380000000000017, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 26.0366) RELATIVE optical_axis - -COMPONENT g4b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 28.1786) RELATIVE optical_axis - -COMPONENT g4b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.4049499999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 30.17885) RELATIVE optical_axis - -COMPONENT g4b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.4106999999999985, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 31.5893) RELATIVE optical_axis - -COMPONENT g5a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, linhu = 18.0, - louthu = 17.005499999999998, h1d = 0.037165, - linhd = 18.0, louthd = 17.005499999999998, - l = 0.9945000000000022, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 32.0) RELATIVE optical_axis - -COMPONENT fo5_position = Arm() -AT (0, 0, 33.005) RELATIVE optical_axis - -COMPONENT fo_chopper_5 = MultiDiskChopper( - slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_5, - phase = fo5_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo5_position -ROTATED (0, 0, 180) RELATIVE fo5_position - -COMPONENT g5b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037105, linhu = 19.005499999999998, - louthu = 14.994750000000003, h1d = 0.037105, - linhd = 19.005499999999998, louthd = 14.994750000000003, - l = 1.9997499999999988, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 33.015499999999996) RELATIVE optical_axis - -COMPONENT g5b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.036645, linhu = 21.00575, - louthu = 12.994950000000003, h1d = 0.036645, - linhd = 21.00575, louthd = 12.994950000000003, - l = 1.999299999999998, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 35.01575) RELATIVE optical_axis - -COMPONENT g5b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.035695, linhu = 23.009500000000003, - louthu = 10.990749999999998, h1d = 0.035695, - linhd = 23.009500000000003, louthd = 10.990749999999998, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 37.0195) RELATIVE optical_axis - -COMPONENT g5b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03423, linhu = 25.009749999999997, - louthu = 8.990499999999997, h1d = 0.03423, - linhd = 25.009749999999997, louthd = 8.990499999999997, - l = 1.999750000000006, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 39.019749999999995) RELATIVE optical_axis - -COMPONENT g5b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03217, linhu = 27.0135, - louthu = 6.986750000000001, h1d = 0.03217, - linhd = 27.0135, louthd = 6.986750000000001, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 41.0235) RELATIVE optical_axis - -COMPONENT g5b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.029395, linhu = 29.01375, - louthu = 6.5, h1d = 0.029395, - linhd = 29.01375, louthd = 6.5, - l = 0.4862499999999983, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.02375) RELATIVE optical_axis - -COMPONENT g6a1 = Guide_four_side( - w1l = 0.04004, linwl = 6.5, - loutwl = 4.9864999999999995, w1r = 0.04004, - linwr = 6.5, loutwr = 4.9864999999999995, - h1u = 0.02859, linhu = 29.5, - louthu = 4.9864999999999995, h1d = 0.02859, - linhd = 29.5, louthd = 4.9864999999999995, - l = 1.5135000000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.51) RELATIVE optical_axis - -COMPONENT g6a2 = Guide_four_side( - w1l = 0.038935, linwl = 8.017499999999998, - loutwl = 2.982750000000003, w1r = 0.038935, - linwr = 8.017499999999998, loutwr = 2.982750000000003, - h1u = 0.02567, linhu = 31.0175, - louthu = 2.982750000000003, h1d = 0.02567, - linhd = 31.0175, louthd = 2.982750000000003, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 3, - myd = 3) -AT (0, 0, 45.027499999999996) RELATIVE optical_axis - -COMPONENT g6a3 = Guide_four_side( - w1l = 0.03367, linwl = 10.01775, - loutwl = 1.0, w1r = 0.03367, - linwr = 10.01775, loutwr = 1.0, - h1u = 0.02049, linhu = 33.01775, - louthu = 1.0, h1d = 0.02049, - linhd = 33.01775, louthd = 1.0, - l = 1.9822500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 47.02775) RELATIVE optical_axis - -COMPONENT guide_end = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT monitor_3_position = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT start_backend = Arm() -AT (0, 0, 0) RELATIVE optical_axis - -COMPONENT optical_axis_backend = Arm() -AT (0, 0, 0) RELATIVE start_backend - -COMPONENT pinhole_2 = Slit( - xwidth = 0.03, yheight = 0.03) -AT (0, 0, 50) RELATIVE optical_axis_backend - -COMPONENT graph = Graphite_Diffuser( - xwidth = 0.1, ywidth = 0.1, - thick = 0.2) -AT (0, 0, 50.001) RELATIVE optical_axis_backend - -COMPONENT sample_monitor_arm = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - - COMPONENT sample_PSD = Monitor_nD( - filename="image.dat", xwidth=0.3, yheight=0.3, - options="x bins 300 y bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT profile_x = Monitor_nD( - filename="profile_x.dat", xwidth=0.3, yheight=0.3, - options="x bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT profile_y = Monitor_nD( - filename="profile_y.dat", xwidth=0.3, yheight=0.3, - options="y bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT wavelength = Monitor_nD( - filename="wavelength.dat", xwidth=0.3, yheight=0.3, - options="L bins 300 limits [0.5 10]" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT tof = Monitor_nD( - filename="time.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15]" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT wavelength_tof = Monitor_nD( - filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT sample_position = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -SAVE -%{ - - MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "a"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); - ); -%} - -FINALLY -%{ -// Start of finally for generated ODIN -%} - -END From 37c10a372ac6a2edd2a9232fd9847a7a90080e0f Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 21:05:18 +0100 Subject: [PATCH 13/75] Add --tof-trains as metavar -> binary from within mcrun --- tools/Python/mcrun/mcrun.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/Python/mcrun/mcrun.py b/tools/Python/mcrun/mcrun.py index 2e74c84ce3..559dcf9c4a 100644 --- a/tools/Python/mcrun/mcrun.py +++ b/tools/Python/mcrun/mcrun.py @@ -286,6 +286,10 @@ def add_mcstas_options(parser): action='store_true', default=False, help='Assume any default parameter value in instrument') + add('--tof-trains', + metavar='TOFTRAINS', type=int, default=10, + help='Set number of %s-subtrains to simulate' % (mccode_config.configuration["PARTICLE"])) + if (mccode_config.configuration["MCCODE"] == 'mcstas'): add('-g', '--gravitation', '--gravity', action='store_true', default=False, From bfd7fde630870512f417bb9fb0c7ee29a6d9b368 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 21:11:37 +0100 Subject: [PATCH 14/75] Actually forward --tof-trains --- tools/Python/mcrun/mccode.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/Python/mcrun/mccode.py b/tools/Python/mcrun/mccode.py index ae217f448f..58efa9c5a7 100755 --- a/tools/Python/mcrun/mccode.py +++ b/tools/Python/mcrun/mccode.py @@ -373,7 +373,7 @@ def run(self, pipe=False, extra_opts=None, override_mpi=None): options = self.options # Handle proxy options with values - proxy_opts_val = ['trace', 'seed', 'ncount', 'dir', 'format', 'vecsize', 'numgangs', 'gpu_innerloop', 'bufsiz'] + proxy_opts_val = ['trace', 'seed', 'ncount', 'dir', 'format', 'vecsize', 'numgangs', 'gpu_innerloop', 'bufsiz','tof-trains'] proxy_opts_val.extend(('meta-defined', 'meta-type', 'meta-data')) for opt in proxy_opts_val: From 12264e0769aa5211bf47be20421d112e85538e5b Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 22:19:36 +0100 Subject: [PATCH 15/75] Default --tof-trains=None in the python layer --- tools/Python/mcrun/mcrun.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/Python/mcrun/mcrun.py b/tools/Python/mcrun/mcrun.py index 559dcf9c4a..f9e9ad12d8 100644 --- a/tools/Python/mcrun/mcrun.py +++ b/tools/Python/mcrun/mcrun.py @@ -287,7 +287,7 @@ def add_mcstas_options(parser): help='Assume any default parameter value in instrument') add('--tof-trains', - metavar='TOFTRAINS', type=int, default=10, + metavar='TOFTRAINS', type=int, default=None, help='Set number of %s-subtrains to simulate' % (mccode_config.configuration["PARTICLE"])) if (mccode_config.configuration["MCCODE"] == 'mcstas'): From 0867e5c00208c64202edbc9402225f29a5c312b2 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 26 Feb 2026 22:26:19 +0100 Subject: [PATCH 16/75] 3 values of --tof-trains in the prototype --- .../examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr index 6fce340ec8..cf1b88b484 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr @@ -24,7 +24,9 @@ * %Description * Please write a longer instrument description here! * -* %Example: -y Detector: tof_I=9.16671e+08 +* %Example: -y --tof-trains=1 Detector: tof_I=9.16671e+08 +* %Example: -y --tof-trains=10 Detector: tof_I=9.16671e+08 +* %Example: -y --tof-trains=100 Detector: tof_I=9.16671e+08 * * %Parameters * l_min: [unit] Minimum simulated wavelength [AA] From bb8981d54259a024c418419111f3959975b1d9e2 Mon Sep 17 00:00:00 2001 From: mads-bertelsen Date: Fri, 27 Feb 2026 10:56:44 +0100 Subject: [PATCH 17/75] Updated TOF train prototype with p now returning to normal functionality and adaptive p,t sampling. Instead of the weight p having a special meaning, it now acts as usual and contains a sum of all the weights carried by the time offsets. The N_trains variable is now used to allocate memory for t,p pairs in uservars, but the number actually sampled is controlled by the source and aims to provide a certain number of t,p packets on the detector. This can only be Monitor_nD here, and needs adaptive_target set to one. Only one adaptive target can be active, otherwise the calculation of the appropriate number of pairs will be wrong. The desired number of pairs that reach the sample needs to be given to the source, default is just 3. The adaptive sampling means that even without any choppers and N_trains=100, the new version just looses 10% performance. It also avoids cases of oversampling where large numbers of t,p pairs make it through a chopper cascade and bias tof monitor results as not enough velocities are sampled. This solution is thus much more user friendly. Performance remains constant with N_trains (only allocation) up to at least 100. --- .../ODIN_TOF_train3/DiskChopper.comp | 230 ++++ .../ODIN_TOF_train3/ESS_butterfly.comp | 622 ++++++++++ .../ODIN_TOF_train3/Graphite_Diffuser.comp | 115 ++ .../ODIN_TOF_train3/Monitor_nD.comp | 678 +++++++++++ .../ODIN_TOF_train3/MultiDiskChopper.comp | 361 ++++++ .../ODIN_TOF_train3/ODIN_TOF_train3.instr | 1044 +++++++++++++++++ .../ODIN_TOF_train3/bi_spec_ellipse.comp | 794 +++++++++++++ 7 files changed, 3844 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/DiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Graphite_Diffuser.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Monitor_nD.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/MultiDiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/DiskChopper.comp new file mode 100644 index 0000000000..4723e5b3aa --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/DiskChopper.comp @@ -0,0 +1,230 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: DiskChopper +* +* %I +* Written by: Peter Willendrup +* Date: March 9 2006 +* Origin: Risoe +* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disc chopper with nslit identical slits, which are symmetrically distributed +* on the disc. At time t=0, the centre of the first slit opening will be situated at the +* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. +* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z +* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see +* related bug on GitHub) +* +* For more complicated gemometries, see component manual example of DiskChopper GROUPing. +* +* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. +* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the +* chopper timing and phasing (thus conserving your simulated statistics). +* +* The isfirst parameter is ONLY relevant for use in continuous source settings. +* +* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper +* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) +* +* NOTA BENE wrt. GROUPing and isfirst: +* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need +* to set up +* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening +* that spans the full angular extent of the openings of the subsequent GROUP +* 2) Add your DiskChopper GROUP setting isfirst=0 +* +* %P +* INPUT PARAMETERS: +* +* theta_0: [deg] Angular width of the slits. +* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. +* radius: [m] Radius of the disc +* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) +* nslit: [1] Number of slits, regularly arranged around the disk +* +* Optional parameters: +* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) +* n_pulse: [1] Number of pulses (Only if isfirst) +* jitter: [s] Jitter in the time phase +* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? +* delay: [s] Time 'delay' +* phase: [deg] Angular 'delay' (overrides delay) +* xwidth: [m] Horizontal slit width opening at beam center +* verbose: [1] Set to 1 to display Disk chopper configuration +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT DiskChopper + + + +SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +DECLARE +%{ + double Tg; + double To; + double delta_y; + double height; + double omega; +%} + +INITIALIZE +%{ + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } +%} + +TRACE +%{ + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + double this_train_t; + int all_dead = 1; + + for (train_index=0; train_index<_particle->adaptive_N; train_index++) { + + if (_particle->p_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + _particle->p_trains[train_index] = 0; // T_ABSORB + else { + // T_TRANSMIT + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + + } + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + + } + SCATTER; +%} + +MCDISPLAY +%{ + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly.comp new file mode 100644 index 0000000000..c6aa13988d --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly.comp @@ -0,0 +1,622 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2016, All rights reserved +* DTU Physics, Kongens Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: ESS_butterfly +* +* %I +* +* Written by: Peter Willendrup and Esben Klinkby +* Date: August-September 2016 +* Origin: DTU +* +* ESS butterfly moderator, 2016 revision +* +* %D +* ESS butterfly moderator with automatic choice of coordinate system, with origin +* placed at relevant "Moderator Focus Coordinate System" depending on sector location. +* +* To select beamport N 5 simply use +* +* COMPONENT Source = ESS_butterfly(sector="N",beamline=5,Lmin=0.1,Lmax=20,dist=2, +* cold_frac=0.5, yheight=0.03,focus_xw=0.1, focus_yh=0.1) +* +* Geometry +* The geometry corresponds correctly to the latest release of the butterfly moderator, +* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. +* A set of official release documents are available with this component, see the benchmarking +* website mentioned below. +* +* Brilliances, geometry adapted from earlier BF2 design +* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, +* are released as an updated component library for McStas 2.3, as well as a stand alone archive for +* use with earlier versions of McStas. +* +* The following features are worth highlighting: +*
    +*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. +* As a result, the spatial variation of the brightness across the moderator face should be considered to +* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to +* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness +* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. +*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. +* To accommodate the influence of the changed geometry, this scaling factor has been applied independently +* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the +* spectrally-integrated 6cm width data shown in [1],Figure 3. +*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance +* have been implemented. For now, we recommend to keep these at their default value of 1.0. +*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This +* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, +* which has been derived from current MCNP butterfly 1 model. +*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, +* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. +* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree +* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees +* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- +* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. +*
+* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be +* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. +* +*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance +* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation +* across sectors and potentially also performance losses due to engineering reality. +* +* Engineering reality +* An ad-hoc method for future implementation of "engineering reality" is included, use the +* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. +* +* References: +*

    +*
  1. Release document "Update to ESS Moderators, latest version" +*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" +*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures +*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. +*
  5. Source code for ESS_butterfly.comp at GitHub. +*
+* %P +* Input parameters: +* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" +* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector +* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m +* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator +* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 +* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 +* Lmin: [AA] Minimum wavelength simulated +* Lmax: [AA] Maximum wavelength simulated +* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. +* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index +* focus_xw: [m] Width of focusing rectangle +* focus_yh: [m] Height of focusing rectangle +* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. +* acc_power: [MW] Accelerator power in MW +* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. +* tfocus_dist: [m] Position of time focusing window along z axis +* tfocus_time: [s] Time position of time focusing window +* tfocus_width: [s] Time width of time focusing window +* +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT ESS_butterfly + +SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, + int target_index=0, dist=0, focus_xw=0, focus_yh=0, + c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, + acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) + + +SHARE %{ + %include "ESS_butterfly-lib" + %include "ESS_butterfly-geometry.c" + + int nearest_angle(double angle) { + int AngleList[] = {5, 15, 25, 35, 45, 55}; + double diff = 180; + int jmin=0; + int j; + for (j=0; j<6; j++) { + if (fabs(AngleList[j]-angle) < diff) { + diff = fabs(AngleList[j]-angle); + jmin = j; + } + } + return AngleList[jmin]; + } + double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; + double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; + double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; + double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; + double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; + double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; + double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; + double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; + double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; + double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; + double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; + double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; + double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; +%} + +DECLARE +%{ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double *Beamlines; + double wfrac_cold; + double wfrac_thermal; + /* 'Corner' parametrization, i.e. where are the limits of the moderators */ + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + /* - plus rotated versions of the same... */ + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + + double cos_thermal; + double cos_cold; + + double orientation_angle; + /* Centering-parameters, which sector are we in? */ + double cx; + double cz; + int jmax; + double dxC; + double dxT; +%} + +INITIALIZE +%{ + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; +%} + +TRACE +%{ + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + + if (_particle->total_N_sent == 0) _particle->adaptive_N = N_trains; + else { + + _particle->adaptive_N = ceil(target_tsplit*_particle->total_N_sent/_particle->total_arrived); + + if (_particle->adaptive_N > N_trains) _particle->adaptive_N = N_trains; + } + + for (train_index=0; train_index<_particle->adaptive_N; train_index++) { + + /* Are we using time focusing? */ + if (tfocus_width>0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/_particle->adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=_particle->p_last_time_manipulation; + + SCATTER; +%} + +MCDISPLAY +%{ + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Graphite_Diffuser.comp new file mode 100644 index 0000000000..ea21aa714e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Graphite_Diffuser.comp @@ -0,0 +1,115 @@ +/******************************************************************************* +* +* McStas, version 1.2 released February 2000 +* Maintained by Kristian Nielsen and Kim Lefmann, +* Risoe National Laboratory, Roskilde, Denmark +* +* %IDENTIFICATION +* +* Written by: Manuel Morgano +* Date: 18 Febrauary 2015 +* Version: $Revision: 1.1.1.1 $ +* Origin: PSI +* +* Graphite diffuser +* +* %DESCRIPTION +* +* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics +* +* The formula has only been verified for a diffuser thickness of 1 and 2 cm. +* No absorption is take into account. +* +* %PARAMETERS +* +* INPUT PARAMETERS: +* +* xwidth: (m) Size of diffuser +* ywidth: (m) Size of diffuser +* thick: (m) Thickness of diffuser +* abs (1) 0 = no absorption, 1 = absorption +* %LINKS +* %END +* +*******************************************************************************/ + +DEFINE COMPONENT Graphite_Diffuser +DEFINITION PARAMETERS () +SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) +OUTPUT PARAMETERS () +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) +SHARE +%{ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} +%} +INITIALIZE +%{ +%} +TRACE +%{ + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi +* Date: 14th Feb 2000. +* Origin: ILL +* Release: McStas 1.6 +* Version: $Revision$ +* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi +* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) +* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster +* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) +* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) +* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) +* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) +* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) +* +* This component is a general Monitor that can output 0/1/2D signals +* (Intensity or signal vs. [something] and vs. [something] ...) +* +* %Description +* This component is a general Monitor that can output 0/1/2D signals +* It can produce many 1D signals (one for any variable specified in +* option list), or a single 2D output (two variables correlation). +* Also, an additional 'list' of neutron events can be produced. +* By default, monitor is square (in x/y plane). A disk shape is also possible +* The 'cylinder' and 'banana' option will change that for a banana shape +* The 'sphere' option simulates spherical detector. The 'box' is a box. +* The cylinder, sphere and banana should be centered on the scattering point. +* The monitored flux may be per monitor unit area, and weighted by +* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. +* In normal configuration, the Monitor_nD measures the current parameters +* of the neutron that is beeing detected. But a PreMonitor_nD component can +* be used in order to study correlations between a neutron being detected in +* a Monitor_nD place, and given parameters that are monitored elsewhere +* (at PreMonitor_nD). +* The monitor can also act as a 3He gas detector, taking into account the +* detection efficiency. +* +* The 'bins' and 'limits' modifiers are to be used after each variable, +* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 +* limits=[-5 5]) When placed after all variables, these two latter modifiers +* apply to the signal (e.g. intensity). Unknown keywords are ignored. +* If no limits are specified for a given observable, reasonable defaults will be +* applied. Note that these implicit limits are even applied in list mode. +* +* Implicit limits for typical variables: +* (consult monitor_nd-lib.c if you don't find your variable here) +* x, y, z: Derived from detection-object geometry +* k: [0 10] Angs-1 +* v: [0 1e6] m/s +* t: [0 1] s +* p: [0 FLT_MAX] in intensity-units +* vx, vy: [-1000 1000] m/s +* vz: [0 10000] m/s +* kx, ky: [-1 1] Angs-1 +* kz: [-10 10] Angs-1 +* energy, omega: [0 100] meV +* lambda,wavelength: [0 100] Angs +* sx, sy, sz: [-1 1] in polarisation-units +* angle: [-50 50] deg +* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg +* longitude, lattitude: [-180 180] deg +* neutron: [0 simulaton_ncount] +* id, pixel id: [0 FLT_MAX] +* uservars u1,u2,u3: [-1e10 1e10] +* +* In the case of multiple components at the same position, the 'parallel' +* keyword must be used in each instance instead of defining a GROUP. +* +* Possible options are +* Variables to record: +* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm +* vx vy vz v [m/s] Velocity on x,y,z and norm +* x y z radius [m] Distance, Position and norm +* xy, yz, xz [m] Radial position in xy, yz and xz plane +* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane +* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane +* t time [s] Time of Flight +* energy omega [meV] energy of neutron +* lambda wavelength [Angs] wavelength of neutron +* sx sy sz [1] Spin +* vdiv ydiv dy [deg] vertical divergence (y) +* hdiv divergence xdiv [deg] horizontal divergence (x) +* angle [deg] divergence from direction +* theta longitude [deg] longitude (x/z) for sphere and cylinder +* phi lattitude [deg] lattitude (y/z) for sphere and cylinder +* +* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} +* user2 user3 to be assigned in an other component (see below) +* +* p intensity flux [n/s or n/cm^2/s] +* ncounts n neutron [1] neutron ID, i.e current event index +* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. +* +* Other options keywords are: +* abs Will monitor the abs of the following variable or of the signal (if used after all variables) +* auto Automatically set detector limits for one/all +* all {limits|bins|auto} To set all limits or bins values or auto mode +* binary {float|double} with 'source' option, saves in compact files +* bins=[bins=20] Number of bins in the detector along dimension +* borders To also count off-limits neutrons (X < min or X > max) +* capture weight by lambda/lambda(2200m/s) capture flux +* file=string Detector image file name. default is component name, plus date and variable extension. +* incoming Monitor incoming beam in non flat det +* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) +* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events +* log Will monitor the log of the following variable or of the signal (if used after all variables) +* min=[min_value] Same as limits, but only sets the min or max +* max=[max_value] +* multiple Create multiple independant 1D monitors files +* no or not Revert next option +* outgoing Monitor outgoing beam (default) +* parallel Use this option when the next component is at the same position (parallel components) +* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. +* per steradian Displays beam solid angle in steradian +* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. +* signal=[var] Will monitor [var] instead of usual intensity +* slit or absorb Absorb neutrons that are out detector +* source The monitor will save neutron states +* inactivate To inactivate detector (0D detector) +* verbose To display additional informations +* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) +* +* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) +* box Box of size xwidth, yheight, zdepth. +* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). +* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). +* disk Disk flat xy monitor. diameter is xwidth. +* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). +* square Square flat xy monitor (xwidth, yheight). +* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. +* +* EXAMPLES: +*
    +*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, +*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with +*   borders, file = mon1"); +* will monitor neutron angle from [z] axis, between -5 +* and 5 degrees, in 10 bins, into "mon1.A" output 1D file +* +*
  • options = "sphere theta phi outgoing" +* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" +* +*
  • options = "banana, theta limits=[10,130], bins=120, y" +* a theta/height banana detector +* +*
  • options = "angle radius all auto" +* is a 2D monitor with automatic limits +* +*
  • options = "list=1000 kx ky kz energy" +* records 1000 neutron event in a file +* +*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" +* makes 4 output 1D files and produces a complete list for all neutrons +* and monitor log(abs(tof)) within automatic limits (for t) +* +*
  • options = "theta y, sphere, pixel min=100" +* a 4pi detector which outputs an event list with pixelID from the actual +* detector surface, starting from index 100. +* +*
+* To dynamically define a number of bins, or limits: +* Use in DECLARE: char op[256]; +* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); +* Use in TRACE: Monitor_nD(... options=op ...) +* +* How to monitor any instrument/component variable into a Monitor_nD +* Suppose you want to monitor a variable 'age' which you assign somwhere in +* the instrument: +* COMPONENT MyMonitor = Monitor_nD( +* xwidth = 0.1, yheight = 0.1, +* user1="age", username1="Age of the Captain [years]", +* options="user1, auto") +* AT ... +* +* See also the example in PreMonitor_nD to +* monitor neutron parameters cross-correlations. +* +* %BUGS +* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI +* as each process may use different limits. +* +* %Parameters +* INPUT PARAMETERS: +* +* xwidth: [m] Width of detector. +* yheight: [m] Height of detector. +* zdepth: [m] Thickness of detector (z). +* radius: [m] Radius of sphere/banana shape monitor +* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). +* +* Optional input parameters (override xwidth yheight zdepth): +* xmin: [m] Lower x bound of opening +* xmax: [m] Upper x bound of opening +* ymin: [m] Lower y bound of opening +* ymax: [m] Upper y bound of opening +* zmin: [m] Lower z bound of opening +* zmax: [m] Upper z bound of opening +* filename: [str] Output file name (overrides file=XX option). +* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins +* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits +* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits +* user1: [str] Variable name of USERVAR to be monitored by user1. +* user2: [str] Variable name of USERVAR to be monitored by user2. +* user3: [str] Variable name of USERVAR to be monitored by user3. +* username1: [str] Name assigned to User1 +* username2: [str] Name assigned to User2 +* username3: [str] Name assigned to User3 +* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. +* geometry: [str] Name of an OFF file to specify a complex geometry detector +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* DEFS: [struct] structure containing Monitor_nD Defines +* Vars: [struct] structure containing Monitor_nD variables +* +* %Link +* PreMonitor_nD +* +* %End +******************************************************************************/ +DEFINE COMPONENT Monitor_nD + +SETTING PARAMETERS ( + string user1="", string user2="", string user3="", + xwidth=0, yheight=0, zdepth=0, + xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, + int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, + string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, + string username1="NULL", string username2="NULL", string username3="NULL", + int tsplit=0, int adaptive_target=0 +) +/* these are protected C variables */ + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + %include "monitor_nd-lib" + %include "read_table-lib" + %include "interoff-lib" +%} + +DECLARE +%{ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +%} + +INITIALIZE +%{ + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif +%} + +TRACE +%{ + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + int train_index; + double p_original = p; + double p_factor = p/_particle->p_last_time_manipulation; + + if (adaptive_target) { + _particle->total_N_sent += _particle->adaptive_N; + _particle->total_rays_sent++; + } + + if (tsplit==1) { + double pp_array[N_trains]; + double t_original = t; + for (train_index=0; train_index<_particle->adaptive_N; train_index++) { + + if (_particle->p_trains[train_index] > 0) { + p = p_factor*_particle->p_trains[train_index]; + t = t_original + _particle->t_offset[train_index]; + + pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + if (adaptive_target) _particle->total_arrived++; + + } else pp_array[train_index] = 0; + } + p = p_original; + t = t_original; + + int pp_total = 0; + for (train_index=0; train_index<_particle->adaptive_N; train_index++) { + pp_total += pp_array[train_index]; + } + if (pp_total == 0.0) { + //ABSORB; + } else if (pp_total > 0) { + SCATTER; + } + + } else { + + /* + // Now just use normal p + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + */ + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + } + + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } +%} + +FINALLY +%{ + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); +%} + +MCDISPLAY +%{ + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/MultiDiskChopper.comp new file mode 100644 index 0000000000..9e89806628 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/MultiDiskChopper.comp @@ -0,0 +1,361 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2015, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: MultiDiskChopper +* +* %I +* Written by: Markus Appel +* Date: 2015-10-19 +* Origin: ILL / FAU Erlangen-Nuernberg +* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), +* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disk chopper with a freely configurable slit pattern. For simple applications, +* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. +* If the chopper slit pattern should be dynamically configurable or a complicated pattern +* is to be used as first chopper on a continuous source, use this component. +* +* Width and position of the slits is defined as a list in string parameters so +* they can easily be taken from instrument parameters. +* The chopper axis is located on the y axis as defined by the parameter delta_y. +* When the chopper is the first chopper after a continuous (i.e. time-independent) +* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. +* +* +* Examples (see parameter definitions for details): +* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, delay=0.02) +* +* First chopper on a continuous source, creating pulse trains for one additional revolution +* before and after the revolution at t=0: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) +* +* %P +* INPUT PARAMETERS: +* +* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" +* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) +* nslits: [] Number of slits to read from slit_width and slit_center +* radius: [m] Outer radius of the disk +* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. +* nu: [Hz] Rotation speed of the disk, the sign determines the direction. +* +* Optional parameters: +* verbose: [0/1] Set to 1 to display more information during the simulation. +* phase: [deg] Phase angle located on top of the disk at t=delay (see below). +* delay: [s] Time delay of the chopper clock. +* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. +* jitter: [s] Jitter in the time phase. +* abs_out: If 1, absorb all neutrons outside the disk diameter. +* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events +* will be shifted in time to pass the component (with adapted weight). +* +* Additional parameters when isfirst=1 (that have no effect for isfirst=0): +* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. +* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). +* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT MultiDiskChopper + +SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) + + +DECLARE +%{ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +%} + +INITIALIZE +%{ + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + %} + +TRACE +%{ + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + int this_t_hit; + double this_train_t; + int all_dead = 1; + double p_total = 0; + for (train_index=0; train_index<_particle->adaptive_N; train_index++) { + + if (_particle->p_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + this_t_hit = 0; + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + this_t_hit = 1; + + islit++; + } + if (this_t_hit == 0) _particle->p_trains[train_index] = 0; + else { + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + } + // if not a single t_offset made it through a slit, absorb this ray + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + } + } +%} + +FINALLY +%{ + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); +%} + +MCDISPLAY +%{ + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr new file mode 100644 index 0000000000..fbad414af0 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr @@ -0,0 +1,1044 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN_TOF_train3 ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2, // 0: no choppers 1: BP 2: WFM +int N_trains_par = 100, +target_tsplit = 3 +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap + +int allocated; +%} + +USERVARS +%{ +double *t_offset; +double *p_trains; +double p_last_time_manipulation; +//int allocated; +int adaptive_N; +long total_arrived; +long total_N_sent; +long total_rays_sent; +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + +allocated = 0; + +#define N_trains INSTRUMENT_GETPAR(N_trains_par) + +MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE + +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE +EXTEND %{ + + if (allocated == 0) { + t_offset = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + p_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + adaptive_N=INSTRUMENT_GETPAR(N_trains_par); + total_arrived=0; + total_N_sent=0; + total_rays_sent=0; + allocated = 1; + } +%} + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Origin + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0, + target_tsplit=target_tsplit) +AT (0, 0, 0) RELATIVE Origin + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]", + tsplit=1, adaptive_target=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", + tsplit=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +if (allocated == 1) { + free(_particle->t_offset); + free(_particle->p_trains); +} +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/bi_spec_ellipse.comp new file mode 100644 index 0000000000..c24fb3cdea --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/bi_spec_ellipse.comp @@ -0,0 +1,794 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2011, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Bi-spectral extracion system +* +* %I +* Written by: Manuel Morgano +* Date: April 2015 +* Version: $Revision: 2.3 $ +* Origin: PSI +* Release: McStas 1.12c +* +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* +* %D +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* The supermirror number can be automatically calculated (setting the number to 0) or given +* Each mirror can be split in submirror pieces, each of them offseted by a constant angle +* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. +* The feeder's shape is calculated by the distance between the guide entrance and the first focus, +* the distance between the exit and the second focus, the length of the coated part and the opening +* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. +* User can specify different shapes for the horizontal and the vertical ellipse. +* Setting the m-coating to 0 means absorbing, -1 means transparent. +* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn +* but it's transparent. +* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. +* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. +* +* +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %P +* INPUT PARAMETERS: +* +* xheight: (m) height of mirror stack +* ywidth: (m) width of mirror plate +* zlength: (m) length of the mirror +* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) +* n_pieces (1) number of straight section per mirror +* tilt (degrees) angle between the mirrors and the horizontal direction +* angular_offset (degrees) angle between subsequent sub-mirrors +* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. +* R0_m: (1) Low-angle reflectivity +* Qc_m: (AA-1) Critical scattering vector +* alpha_mirror_m: (AA) Slope of reflectivity +* W_m: (AA-1) Width of supermirror cut-off +* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. +* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. +* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. +* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. +* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. +* ell_l: (m) length of the coated part of the ellipse +* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors +* ell_w: (m) width of the ellipse entrance +* ell_m: (1) m-value of the coating of the ellipse +* R0: (1) Low-angle reflectivity +* Qc: (AA-1) Critical scattering vector +* alpha_mirror: (AA) Slope of reflectivity +* W: (AA-1) Width of supermirror cut-off +* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* cut: (1) cutoff for lowest reflectivity consideration. +* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file +* +* %D +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT bi_spec_ellipse +DEFINITION PARAMETERS () + SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) +OUTPUT PARAMETERS (pTable) +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) + +SHARE +%{ +%include "read_table-lib" +%} + +DECLARE +%{ + t_Table pTable; + +%} + +INITIALIZE +%{ + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + +%} + +TRACE +%{ + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +%} + +MCDISPLAY +%{ + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i Date: Fri, 27 Feb 2026 16:11:04 +0100 Subject: [PATCH 18/75] Rectify McXtrace mcgenstate/mcsetstate for shorter arg list --- mccode/src/cogen.c.in | 2 +- mccode/xlib/share/mcxtrace-r.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 57e5a9e6cf..8fe2f90013 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2554,7 +2554,7 @@ cogen_header(struct instr_def *instr, char *output_name) #elif MCCODE_PROJECT == 2 /* xray */ cout("#pragma acc routine"); cout("_class_particle mcsetstate(double x, double y, double z, double kx, double ky, double kz,"); - cout(" double phi, double t, double Ex, double Ey, double Ez, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF);"); + cout(" double phi, double t, double Ex, double Ey, double Ez, double p, int mcgravitation, void *mcMagnet);"); cout("#pragma acc routine"); cout("_class_particle mcgetstate(_class_particle mcphoton, double *x, double *y, double *z, double *kx, double *ky, double *kz,"); cout(" double *phi, double *t, double *Ex, double *Ey, double *Ez, double *p);"); diff --git a/mccode/xlib/share/mcxtrace-r.c b/mccode/xlib/share/mcxtrace-r.c index 0d118f4351..80264c26fc 100644 --- a/mccode/xlib/share/mcxtrace-r.c +++ b/mccode/xlib/share/mcxtrace-r.c @@ -34,7 +34,7 @@ * mcsetstate: transfer parameters into global McXtrace variables *******************************************************************************/ _class_particle mcsetstate(double x, double y, double z, double kx, double ky, double kz, - double phi, double t, double Ex, double Ey, double Ez, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop) + double phi, double t, double Ex, double Ey, double Ez, double p, int mcgravitation, void *mcMagnet) { _class_particle mcphoton; From 98d1f9afefd88364ea2e2eb7aa0d07520d3bf5a6 Mon Sep 17 00:00:00 2001 From: mads-bertelsen Date: Fri, 27 Feb 2026 16:18:45 +0100 Subject: [PATCH 19/75] Split of ESS_Butterfly weight calculation into time dependent and independent part, allowing reuse of most calculations when drawing many times --- .../ODIN_TOF_train3/ESS_butterfly-lib.c | 402 ++++++++++++++++++ .../ODIN_TOF_train3/ESS_butterfly-lib.h | 97 +++++ .../ODIN_TOF_train3/ESS_butterfly.comp | 41 +- 3 files changed, 526 insertions(+), 14 deletions(-) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.h diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.c new file mode 100644 index 0000000000..e100c9f9a4 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.c @@ -0,0 +1,402 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.c +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#error McStas : please import this library with %include "ESS_butterfly-lib" +#endif + +#ifdef OPENACC +#define exit(...) noprintf() +#endif + +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ + if(lambda<=0)return 0; + double par0=8.44e13/25.; + double par1=2.5; + double par2=2.2; + + double par3=-13.-.5*(theta-5); + double par4=2.53; + double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); + + double par6; + if(theta==5)par6=5.73745e+015/25.; + else if(theta==15)par6=5.88284e+015/25.; + else if(theta==25)par6=6.09573e+015/25.; + else if(theta==35)par6=6.29116e+015/25.; + else if(theta==45)par6=6.03436e+015/25.; + else if(theta==55)par6=6.02045e+015/25.; + double par7=0.788956+0.00854184*(theta-5.)/10.; + double par8=0.0461868-0.0016464*(theta-5.)/10.; + double par9=0.325; + + double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); + double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); + return para_part+SD_part; + +} +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ + if(lambda<=0)return 0; + double i=(theta-5.)/10.; + double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; + double par2=6.24806e+012-8.84602e+010*i; + double par3=-0.31107+0.0221138*i; + double aOlsqr=949./(325*lambda*lambda); + return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); + +} + + +/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ + + double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); + if(y0 < -height/2. || y0 > height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} /* end of ESS_2015_Schoenfeldt_cold */ + + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(timeadaptive_N > N_trains) _particle->adaptive_N = N_trains; } + // Part of weight calculation that is not t dependant + if (iscold) { + ESS_2015_Schoenfeldt_cold_no_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { + ESS_2015_Schoenfeldt_thermal_no_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + p*=cos_factor; + p*=w_stat*w_focus*w_geom*w_mult; + + // Base weight to reuse for each new sampling of p,t + double base_p = p; + for (train_index=0; train_index<_particle->adaptive_N; train_index++) { + + p = base_p; /* Are we using time focusing? */ if (tfocus_width>0) { @@ -575,23 +599,12 @@ TRACE if (iscold) { //case: cold moderator /* Apply simple engineering reality correction */ - ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= c_performance; - p *= ColdScalars[beamline-1]; + ESS_2015_Schoenfeldt_cold_only_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); } else { //case: thermal moderator - ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= t_performance; - p *= ThermalScalars[beamline-1]; + ESS_2015_Schoenfeldt_thermal_only_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); } - p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + p*=w_tfocus; // time focus correction t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ - p*=cos_factor; - /* Correct weight for sampling of cold vs. thermal events. */ - if (iscold) { - p /= cold_frac; - } else { - p /= (1-cold_frac); - } // Generate ray as normal with its associated p and t // Save these to t_offset and p_train From 73b9309f1a3deefe5da9f35dd6478a6f379a681e Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Fri, 27 Feb 2026 20:10:21 +0100 Subject: [PATCH 20/75] Update internal instr label --- .../examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr index cf1b88b484..edda6118e2 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr @@ -11,7 +11,7 @@ * European Spallation Source Data Management and * Software Centre * -* Instrument: ODIN_TOF_train +* Instrument: ODIN_TOF_train2 * * %Identification * Written by: Python McStas Instrument Generator From b897aaf84a025dc6d04dcd196ba0c99e1dd70d8c Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Fri, 27 Feb 2026 20:11:54 +0100 Subject: [PATCH 21/75] Add proto 3 tests --- .../Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr index fbad414af0..57bc7ce3b3 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr @@ -11,7 +11,7 @@ * European Spallation Source Data Management and * Software Centre * -* Instrument: ODIN +* Instrument: ODIN_TOF_train3 * * %Identification * Written by: Python McStas Instrument Generator @@ -24,6 +24,9 @@ * %Description * Please write a longer instrument description here! * +* %Example: N_trains_par=1 Detector: tof_I=9.16671e+08 +* %Example: N_trains_par=10 Detector: tof_I=9.16671e+08 +* %Example: N_trains_par=100 Detector: tof_I=9.16671e+08 * * %Parameters * l_min: [unit] Minimum simulated wavelength [AA] From a54704bcc27f301f18279439cc00c0f9bce5f652 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Fri, 27 Feb 2026 20:32:36 +0100 Subject: [PATCH 22/75] Add p_last_time_manipulation as particle member, in TOF_TRAIN mode --- mccode/src/cogen.c.in | 1 + 1 file changed, 1 insertion(+) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 8fe2f90013..93b15cf2e2 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2468,6 +2468,7 @@ cogen_header(struct instr_def *instr, char *output_name) cout(" double *t_offset;"); cout(" double *p_trains;"); cout(" int *alive_trains;"); + cout(" double p_last_time_manipulation;"); cout(" #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains)"); cout(" #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains)"); cout(" #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains)"); From 5e7b1b82f4e1662ef223e2eb463b5b60ffceb2a3 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Fri, 27 Feb 2026 20:34:15 +0100 Subject: [PATCH 23/75] Lift NTOF to 100 --- common/lib/share/mccode-r.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 456b99eccb..4182cc0261 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -4707,7 +4707,7 @@ mcparseoptions(int argc, char *argv[]) char *usedir=NULL; #ifdef TOF_TRAIN - NTOF=10; /* Default to 10 TOF "sub-particles" in a TOF_TRAIN */ + NTOF=100; /* Default to 100 TOF "sub-particles" in a TOF_TRAIN */ #endif /* Add one to numipar to avoid allocating zero size memory block. */ From 9a2336ac36123d13f07fdb29c525c9f4826b8d5f Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Fri, 27 Feb 2026 20:36:20 +0100 Subject: [PATCH 24/75] Add V4 prototype --- .../ODIN_TOF_train4/DiskChopper.comp | 230 + .../ODIN_TOF_train4/ESS_butterfly-lib.c | 402 + .../ODIN_TOF_train4/ESS_butterfly-lib.h | 97 + .../ODIN_TOF_train4/ESS_butterfly.comp | 628 + .../ODIN_TOF_train4/Graphite_Diffuser.comp | 115 + .../ODIN_TOF_train4/Monitor_nD.comp | 681 + .../ODIN_TOF_train4/MultiDiskChopper.comp | 361 + .../ODIN_TOF_train4/ODIN_TOF_train4.c | 34658 ++++++++++++++++ .../ODIN_TOF_train4/ODIN_TOF_train4.instr | 1027 + .../ODIN_TOF_train4/bi_spec_ellipse.comp | 794 + 10 files changed, 38993 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.h create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Graphite_Diffuser.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp new file mode 100644 index 0000000000..12de0104fb --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp @@ -0,0 +1,230 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: DiskChopper +* +* %I +* Written by: Peter Willendrup +* Date: March 9 2006 +* Origin: Risoe +* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disc chopper with nslit identical slits, which are symmetrically distributed +* on the disc. At time t=0, the centre of the first slit opening will be situated at the +* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. +* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z +* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see +* related bug on GitHub) +* +* For more complicated gemometries, see component manual example of DiskChopper GROUPing. +* +* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. +* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the +* chopper timing and phasing (thus conserving your simulated statistics). +* +* The isfirst parameter is ONLY relevant for use in continuous source settings. +* +* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper +* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) +* +* NOTA BENE wrt. GROUPing and isfirst: +* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need +* to set up +* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening +* that spans the full angular extent of the openings of the subsequent GROUP +* 2) Add your DiskChopper GROUP setting isfirst=0 +* +* %P +* INPUT PARAMETERS: +* +* theta_0: [deg] Angular width of the slits. +* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. +* radius: [m] Radius of the disc +* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) +* nslit: [1] Number of slits, regularly arranged around the disk +* +* Optional parameters: +* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) +* n_pulse: [1] Number of pulses (Only if isfirst) +* jitter: [s] Jitter in the time phase +* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? +* delay: [s] Time 'delay' +* phase: [deg] Angular 'delay' (overrides delay) +* xwidth: [m] Horizontal slit width opening at beam center +* verbose: [1] Set to 1 to display Disk chopper configuration +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT DiskChopper + + + +SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +DECLARE +%{ + double Tg; + double To; + double delta_y; + double height; + double omega; +%} + +INITIALIZE +%{ + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } +%} + +TRACE +%{ + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + double this_train_t; + int all_dead = 1; + + for (train_index=0; train_indexp_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + _particle->p_trains[train_index] = 0; // T_ABSORB + else { + // T_TRANSMIT + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + + } + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + + } + SCATTER; +%} + +MCDISPLAY +%{ + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.c new file mode 100644 index 0000000000..e100c9f9a4 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.c @@ -0,0 +1,402 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.c +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#error McStas : please import this library with %include "ESS_butterfly-lib" +#endif + +#ifdef OPENACC +#define exit(...) noprintf() +#endif + +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ + if(lambda<=0)return 0; + double par0=8.44e13/25.; + double par1=2.5; + double par2=2.2; + + double par3=-13.-.5*(theta-5); + double par4=2.53; + double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); + + double par6; + if(theta==5)par6=5.73745e+015/25.; + else if(theta==15)par6=5.88284e+015/25.; + else if(theta==25)par6=6.09573e+015/25.; + else if(theta==35)par6=6.29116e+015/25.; + else if(theta==45)par6=6.03436e+015/25.; + else if(theta==55)par6=6.02045e+015/25.; + double par7=0.788956+0.00854184*(theta-5.)/10.; + double par8=0.0461868-0.0016464*(theta-5.)/10.; + double par9=0.325; + + double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); + double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); + return para_part+SD_part; + +} +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ + if(lambda<=0)return 0; + double i=(theta-5.)/10.; + double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; + double par2=6.24806e+012-8.84602e+010*i; + double par3=-0.31107+0.0221138*i; + double aOlsqr=949./(325*lambda*lambda); + return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); + +} + + +/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ + + double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); + if(y0 < -height/2. || y0 > height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} /* end of ESS_2015_Schoenfeldt_cold */ + + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(timeGeometry +* The geometry corresponds correctly to the latest release of the butterfly moderator, +* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. +* A set of official release documents are available with this component, see the benchmarking +* website mentioned below. +* +* Brilliances, geometry adapted from earlier BF2 design +* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, +* are released as an updated component library for McStas 2.3, as well as a stand alone archive for +* use with earlier versions of McStas. +* +* The following features are worth highlighting: +*
    +*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. +* As a result, the spatial variation of the brightness across the moderator face should be considered to +* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to +* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness +* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. +*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. +* To accommodate the influence of the changed geometry, this scaling factor has been applied independently +* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the +* spectrally-integrated 6cm width data shown in [1],Figure 3. +*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance +* have been implemented. For now, we recommend to keep these at their default value of 1.0. +*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This +* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, +* which has been derived from current MCNP butterfly 1 model. +*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, +* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. +* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree +* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees +* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- +* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. +*
+* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be +* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. +* +*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance +* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation +* across sectors and potentially also performance losses due to engineering reality. +* +* Engineering reality +* An ad-hoc method for future implementation of "engineering reality" is included, use the +* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. +* +* References: +*

    +*
  1. Release document "Update to ESS Moderators, latest version" +*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" +*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures +*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. +*
  5. Source code for ESS_butterfly.comp at GitHub. +*
+* %P +* Input parameters: +* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" +* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector +* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m +* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator +* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 +* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 +* Lmin: [AA] Minimum wavelength simulated +* Lmax: [AA] Maximum wavelength simulated +* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. +* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index +* focus_xw: [m] Width of focusing rectangle +* focus_yh: [m] Height of focusing rectangle +* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. +* acc_power: [MW] Accelerator power in MW +* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. +* tfocus_dist: [m] Position of time focusing window along z axis +* tfocus_time: [s] Time position of time focusing window +* tfocus_width: [s] Time width of time focusing window +* +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT ESS_butterfly + +SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, + int target_index=0, dist=0, focus_xw=0, focus_yh=0, + c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, + acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) + +DEPENDENCY " -DTOF_TRAIN " + +SHARE %{ + %include "ESS_butterfly-lib" + %include "ESS_butterfly-geometry.c" + + int nearest_angle(double angle) { + int AngleList[] = {5, 15, 25, 35, 45, 55}; + double diff = 180; + int jmin=0; + int j; + for (j=0; j<6; j++) { + if (fabs(AngleList[j]-angle) < diff) { + diff = fabs(AngleList[j]-angle); + jmin = j; + } + } + return AngleList[jmin]; + } + double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; + double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; + double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; + double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; + double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; + double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; + double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; + double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; + double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; + double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; + double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; + double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; + double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; +%} + +DECLARE +%{ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double *Beamlines; + double wfrac_cold; + double wfrac_thermal; + /* 'Corner' parametrization, i.e. where are the limits of the moderators */ + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + /* - plus rotated versions of the same... */ + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + + double cos_thermal; + double cos_cold; + + double orientation_angle; + /* Centering-parameters, which sector are we in? */ + double cx; + double cz; + int jmax; + double dxC; + double dxT; +%} + +INITIALIZE +%{ + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; +%} + +TRACE +%{ + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + + if (total_N_sent == 0) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } else { + long tmp = ceil(target_tsplit*total_N_sent/total_arrived); + #pragma acc atomic + adaptive_N = tmp; + if (adaptive_N > _particle->N_trains) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } + } + + for (train_index=0; train_index0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=_particle->p_last_time_manipulation; + + SCATTER; +%} + +MCDISPLAY +%{ + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Graphite_Diffuser.comp new file mode 100644 index 0000000000..ea21aa714e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Graphite_Diffuser.comp @@ -0,0 +1,115 @@ +/******************************************************************************* +* +* McStas, version 1.2 released February 2000 +* Maintained by Kristian Nielsen and Kim Lefmann, +* Risoe National Laboratory, Roskilde, Denmark +* +* %IDENTIFICATION +* +* Written by: Manuel Morgano +* Date: 18 Febrauary 2015 +* Version: $Revision: 1.1.1.1 $ +* Origin: PSI +* +* Graphite diffuser +* +* %DESCRIPTION +* +* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics +* +* The formula has only been verified for a diffuser thickness of 1 and 2 cm. +* No absorption is take into account. +* +* %PARAMETERS +* +* INPUT PARAMETERS: +* +* xwidth: (m) Size of diffuser +* ywidth: (m) Size of diffuser +* thick: (m) Thickness of diffuser +* abs (1) 0 = no absorption, 1 = absorption +* %LINKS +* %END +* +*******************************************************************************/ + +DEFINE COMPONENT Graphite_Diffuser +DEFINITION PARAMETERS () +SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) +OUTPUT PARAMETERS () +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) +SHARE +%{ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} +%} +INITIALIZE +%{ +%} +TRACE +%{ + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi +* Date: 14th Feb 2000. +* Origin: ILL +* Release: McStas 1.6 +* Version: $Revision$ +* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi +* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) +* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster +* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) +* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) +* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) +* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) +* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) +* +* This component is a general Monitor that can output 0/1/2D signals +* (Intensity or signal vs. [something] and vs. [something] ...) +* +* %Description +* This component is a general Monitor that can output 0/1/2D signals +* It can produce many 1D signals (one for any variable specified in +* option list), or a single 2D output (two variables correlation). +* Also, an additional 'list' of neutron events can be produced. +* By default, monitor is square (in x/y plane). A disk shape is also possible +* The 'cylinder' and 'banana' option will change that for a banana shape +* The 'sphere' option simulates spherical detector. The 'box' is a box. +* The cylinder, sphere and banana should be centered on the scattering point. +* The monitored flux may be per monitor unit area, and weighted by +* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. +* In normal configuration, the Monitor_nD measures the current parameters +* of the neutron that is beeing detected. But a PreMonitor_nD component can +* be used in order to study correlations between a neutron being detected in +* a Monitor_nD place, and given parameters that are monitored elsewhere +* (at PreMonitor_nD). +* The monitor can also act as a 3He gas detector, taking into account the +* detection efficiency. +* +* The 'bins' and 'limits' modifiers are to be used after each variable, +* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 +* limits=[-5 5]) When placed after all variables, these two latter modifiers +* apply to the signal (e.g. intensity). Unknown keywords are ignored. +* If no limits are specified for a given observable, reasonable defaults will be +* applied. Note that these implicit limits are even applied in list mode. +* +* Implicit limits for typical variables: +* (consult monitor_nd-lib.c if you don't find your variable here) +* x, y, z: Derived from detection-object geometry +* k: [0 10] Angs-1 +* v: [0 1e6] m/s +* t: [0 1] s +* p: [0 FLT_MAX] in intensity-units +* vx, vy: [-1000 1000] m/s +* vz: [0 10000] m/s +* kx, ky: [-1 1] Angs-1 +* kz: [-10 10] Angs-1 +* energy, omega: [0 100] meV +* lambda,wavelength: [0 100] Angs +* sx, sy, sz: [-1 1] in polarisation-units +* angle: [-50 50] deg +* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg +* longitude, lattitude: [-180 180] deg +* neutron: [0 simulaton_ncount] +* id, pixel id: [0 FLT_MAX] +* uservars u1,u2,u3: [-1e10 1e10] +* +* In the case of multiple components at the same position, the 'parallel' +* keyword must be used in each instance instead of defining a GROUP. +* +* Possible options are +* Variables to record: +* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm +* vx vy vz v [m/s] Velocity on x,y,z and norm +* x y z radius [m] Distance, Position and norm +* xy, yz, xz [m] Radial position in xy, yz and xz plane +* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane +* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane +* t time [s] Time of Flight +* energy omega [meV] energy of neutron +* lambda wavelength [Angs] wavelength of neutron +* sx sy sz [1] Spin +* vdiv ydiv dy [deg] vertical divergence (y) +* hdiv divergence xdiv [deg] horizontal divergence (x) +* angle [deg] divergence from direction +* theta longitude [deg] longitude (x/z) for sphere and cylinder +* phi lattitude [deg] lattitude (y/z) for sphere and cylinder +* +* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} +* user2 user3 to be assigned in an other component (see below) +* +* p intensity flux [n/s or n/cm^2/s] +* ncounts n neutron [1] neutron ID, i.e current event index +* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. +* +* Other options keywords are: +* abs Will monitor the abs of the following variable or of the signal (if used after all variables) +* auto Automatically set detector limits for one/all +* all {limits|bins|auto} To set all limits or bins values or auto mode +* binary {float|double} with 'source' option, saves in compact files +* bins=[bins=20] Number of bins in the detector along dimension +* borders To also count off-limits neutrons (X < min or X > max) +* capture weight by lambda/lambda(2200m/s) capture flux +* file=string Detector image file name. default is component name, plus date and variable extension. +* incoming Monitor incoming beam in non flat det +* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) +* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events +* log Will monitor the log of the following variable or of the signal (if used after all variables) +* min=[min_value] Same as limits, but only sets the min or max +* max=[max_value] +* multiple Create multiple independant 1D monitors files +* no or not Revert next option +* outgoing Monitor outgoing beam (default) +* parallel Use this option when the next component is at the same position (parallel components) +* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. +* per steradian Displays beam solid angle in steradian +* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. +* signal=[var] Will monitor [var] instead of usual intensity +* slit or absorb Absorb neutrons that are out detector +* source The monitor will save neutron states +* inactivate To inactivate detector (0D detector) +* verbose To display additional informations +* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) +* +* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) +* box Box of size xwidth, yheight, zdepth. +* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). +* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). +* disk Disk flat xy monitor. diameter is xwidth. +* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). +* square Square flat xy monitor (xwidth, yheight). +* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. +* +* EXAMPLES: +*
    +*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, +*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with +*   borders, file = mon1"); +* will monitor neutron angle from [z] axis, between -5 +* and 5 degrees, in 10 bins, into "mon1.A" output 1D file +* +*
  • options = "sphere theta phi outgoing" +* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" +* +*
  • options = "banana, theta limits=[10,130], bins=120, y" +* a theta/height banana detector +* +*
  • options = "angle radius all auto" +* is a 2D monitor with automatic limits +* +*
  • options = "list=1000 kx ky kz energy" +* records 1000 neutron event in a file +* +*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" +* makes 4 output 1D files and produces a complete list for all neutrons +* and monitor log(abs(tof)) within automatic limits (for t) +* +*
  • options = "theta y, sphere, pixel min=100" +* a 4pi detector which outputs an event list with pixelID from the actual +* detector surface, starting from index 100. +* +*
+* To dynamically define a number of bins, or limits: +* Use in DECLARE: char op[256]; +* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); +* Use in TRACE: Monitor_nD(... options=op ...) +* +* How to monitor any instrument/component variable into a Monitor_nD +* Suppose you want to monitor a variable 'age' which you assign somwhere in +* the instrument: +* COMPONENT MyMonitor = Monitor_nD( +* xwidth = 0.1, yheight = 0.1, +* user1="age", username1="Age of the Captain [years]", +* options="user1, auto") +* AT ... +* +* See also the example in PreMonitor_nD to +* monitor neutron parameters cross-correlations. +* +* %BUGS +* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI +* as each process may use different limits. +* +* %Parameters +* INPUT PARAMETERS: +* +* xwidth: [m] Width of detector. +* yheight: [m] Height of detector. +* zdepth: [m] Thickness of detector (z). +* radius: [m] Radius of sphere/banana shape monitor +* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). +* +* Optional input parameters (override xwidth yheight zdepth): +* xmin: [m] Lower x bound of opening +* xmax: [m] Upper x bound of opening +* ymin: [m] Lower y bound of opening +* ymax: [m] Upper y bound of opening +* zmin: [m] Lower z bound of opening +* zmax: [m] Upper z bound of opening +* filename: [str] Output file name (overrides file=XX option). +* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins +* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits +* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits +* user1: [str] Variable name of USERVAR to be monitored by user1. +* user2: [str] Variable name of USERVAR to be monitored by user2. +* user3: [str] Variable name of USERVAR to be monitored by user3. +* username1: [str] Name assigned to User1 +* username2: [str] Name assigned to User2 +* username3: [str] Name assigned to User3 +* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. +* geometry: [str] Name of an OFF file to specify a complex geometry detector +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* DEFS: [struct] structure containing Monitor_nD Defines +* Vars: [struct] structure containing Monitor_nD variables +* +* %Link +* PreMonitor_nD +* +* %End +******************************************************************************/ +DEFINE COMPONENT Monitor_nD + +SETTING PARAMETERS ( + string user1="", string user2="", string user3="", + xwidth=0, yheight=0, zdepth=0, + xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, + int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, + string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, + string username1="NULL", string username2="NULL", string username3="NULL", + int tsplit=0, int adaptive_target=0 +) +/* these are protected C variables */ + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + %include "monitor_nd-lib" + %include "read_table-lib" + %include "interoff-lib" +%} + +DECLARE +%{ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +%} + +INITIALIZE +%{ + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif +%} + +TRACE +%{ + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + double *pp_array=malloc(sizeof(double)*_particle->N_trains); + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + int train_index; + double p_original = p; + double p_factor = p/_particle->p_last_time_manipulation; + + if (adaptive_target) { + #pragma acc atomic + total_N_sent += adaptive_N; + #pragma acc atomic + total_rays_sent++; + } + + if (tsplit==1) { + double t_original = t; + for (train_index=0; train_indexp_trains[train_index] > 0) { + p = p_factor*_particle->p_trains[train_index]; + t = t_original + _particle->t_offset[train_index]; + + pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + if (adaptive_target) total_arrived++; + + } else pp_array[train_index] = 0; + } + p = p_original; + t = t_original; + + int pp_total = 0; + for (train_index=0; train_index 0) { + SCATTER; + } + + } else { + + /* + // Now just use normal p + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + */ + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + } + + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } +%} + +FINALLY +%{ + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); +%} + +MCDISPLAY +%{ + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp new file mode 100644 index 0000000000..0ed57d7e3b --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp @@ -0,0 +1,361 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2015, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: MultiDiskChopper +* +* %I +* Written by: Markus Appel +* Date: 2015-10-19 +* Origin: ILL / FAU Erlangen-Nuernberg +* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), +* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disk chopper with a freely configurable slit pattern. For simple applications, +* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. +* If the chopper slit pattern should be dynamically configurable or a complicated pattern +* is to be used as first chopper on a continuous source, use this component. +* +* Width and position of the slits is defined as a list in string parameters so +* they can easily be taken from instrument parameters. +* The chopper axis is located on the y axis as defined by the parameter delta_y. +* When the chopper is the first chopper after a continuous (i.e. time-independent) +* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. +* +* +* Examples (see parameter definitions for details): +* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, delay=0.02) +* +* First chopper on a continuous source, creating pulse trains for one additional revolution +* before and after the revolution at t=0: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) +* +* %P +* INPUT PARAMETERS: +* +* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" +* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) +* nslits: [] Number of slits to read from slit_width and slit_center +* radius: [m] Outer radius of the disk +* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. +* nu: [Hz] Rotation speed of the disk, the sign determines the direction. +* +* Optional parameters: +* verbose: [0/1] Set to 1 to display more information during the simulation. +* phase: [deg] Phase angle located on top of the disk at t=delay (see below). +* delay: [s] Time delay of the chopper clock. +* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. +* jitter: [s] Jitter in the time phase. +* abs_out: If 1, absorb all neutrons outside the disk diameter. +* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events +* will be shifted in time to pass the component (with adapted weight). +* +* Additional parameters when isfirst=1 (that have no effect for isfirst=0): +* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. +* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). +* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT MultiDiskChopper + +SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) + + +DECLARE +%{ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +%} + +INITIALIZE +%{ + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + %} + +TRACE +%{ + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + int this_t_hit; + double this_train_t; + int all_dead = 1; + double p_total = 0; + for (train_index=0; train_indexp_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + this_t_hit = 0; + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + this_t_hit = 1; + + islit++; + } + if (this_t_hit == 0) _particle->p_trains[train_index] = 0; + else { + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + } + // if not a single t_offset made it through a slit, absorb this ray + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + } + } +%} + +FINALLY +%{ + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); +%} + +MCDISPLAY +%{ + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.c new file mode 100644 index 0000000000..573ee02ff4 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.c @@ -0,0 +1,34658 @@ +/* Automatically generated file. Do not edit. + * Format: ANSI C source code + * Creator: McStas + * Instrument: ODIN_TOF_train4.instr (ODIN_TOF_train3) + * Date: Fri Feb 27 20:30:36 2026 + * File: ./ODIN_TOF_train4.c + * CFLAGS= -DTOF_TRAIN + */ + +#ifndef WIN32 +# ifndef OPENACC +# define _GNU_SOURCE +# endif +# define _POSIX_C_SOURCE 200809L +#endif +/* In case of cl.exe on Windows, supppress warnings about #pragma acc */ +#ifdef _MSC_EXTENSIONS +#pragma warning(disable: 4068) +#endif + +#define MCCODE_STRING " 3.99.99, git" +#define FLAVOR "mcstas" +#define FLAVOR_UPPER "MCSTAS" + +#define MC_USE_DEFAULT_MAIN +#define MC_TRACE_ENABLED + +#include +#include + +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#define MCCODE_BASE_TYPES + +/* available random number generators */ +#define _RNG_ALG_MT 1 +#define _RNG_ALG_KISS 2 +/* selection of random number generator */ +#ifndef RNG_ALG +# define RNG_ALG _RNG_ALG_KISS +#endif +#if RNG_ALG == _RNG_ALG_MT // MT +#define randstate_t uint32_t +#elif RNG_ALG == _RNG_ALG_KISS // KISS +#define randstate_t uint64_t +#endif + +#ifndef MC_NUSERVAR +#define MC_NUSERVAR 10 +#endif + +/* Particle JUMP control logic */ +struct particle_logic_struct { +int dummy; +}; + +struct _struct_particle { + double x,y,z; /* position [m] */ + double vx,vy,vz; /* velocity [m/s] */ + double sx,sy,sz; /* spin [0-1] */ + int mcgravitation; /* gravity-state */ + void *mcMagnet; /* precession-state */ + int allow_backprop; /* allow backprop */ + /* Generic Temporaries: */ + /* May be used internally by components e.g. for special */ + /* return-values from functions used in trace, thusreturned via */ + /* particle struct. (Example: Wolter Conics from McStas, silicon slabs.) */ + double _mctmp_a; /* temp a */ + double _mctmp_b; /* temp b */ + double _mctmp_c; /* temp c */ + randstate_t randstate[7]; + double t, p; /* time, event weight */ + #ifdef TOF_TRAIN + int N_trains; /* initialised like e.g. ncount, seed from cmdline */ + double *t_offset; + double *p_trains; + int *alive_trains; + double p_last_time_manipulation; + #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains) + #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains) + #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains) + int Ntof_init; /* 0/1 - set to 1 once "times are filled in" */ + #endif /* TOF_TRAIN */ + long long _uid; /* Unique event ID */ + long _index; /* component index where to send this event */ + long _absorbed; /* flag set to TRUE when this event is to be removed/ignored */ + long _scattered; /* flag set to TRUE when this event has interacted with the last component instance */ + long _restore; /* set to true if neutron event must be restored */ + long flag_nocoordschange; /* set to true if particle is jumping */ + struct particle_logic_struct _logic; +}; +typedef struct _struct_particle _class_particle; + +_class_particle _particle_global_randnbuse_var; +_class_particle* _particle = &_particle_global_randnbuse_var; + +#pragma acc routine +_class_particle mcgenstate(void); +#pragma acc routine +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF); +#pragma acc routine +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p); + +extern int mcgravitation; /* flag to enable gravitation */ +#pragma acc declare create ( mcgravitation ) + +extern int NTOF; /* TOF_train suppport */ +#pragma acc declare create ( NTOF ) + +_class_particle mcgenstate(void) { + _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0, NTOF); + return(particle); +} +/*Generated user variable handlers:*/ + +#pragma acc routine +double particle_getvar(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +double particle_getvar(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + double rval=0; + if(!str_comp("x",name)){rval=p->x;s=0;} + if(!str_comp("y",name)){rval=p->y;s=0;} + if(!str_comp("z",name)){rval=p->z;s=0;} + if(!str_comp("vx",name)){rval=p->vx;s=0;} + if(!str_comp("vy",name)){rval=p->vy;s=0;} + if(!str_comp("vz",name)){rval=p->vz;s=0;} + if(!str_comp("sx",name)){rval=p->sx;s=0;} + if(!str_comp("sy",name)){rval=p->sy;s=0;} + if(!str_comp("sz",name)){rval=p->sz;s=0;} + if(!str_comp("t",name)){rval=p->t;s=0;} + if(!str_comp("p",name)){rval=p->p;s=0;} + if(!str_comp("_mctmp_a",name)){rval=p->_mctmp_a;s=0;} + if(!str_comp("_mctmp_b",name)){rval=p->_mctmp_b;s=0;} + if(!str_comp("_mctmp_c",name)){rval=p->_mctmp_c;s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void* particle_getvar_void(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +void* particle_getvar_void(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + void* rval=0; + if(!str_comp("x",name)) {rval=(void*)&(p->x); s=0;} + if(!str_comp("y",name)) {rval=(void*)&(p->y); s=0;} + if(!str_comp("z",name)) {rval=(void*)&(p->z); s=0;} + if(!str_comp("vx",name)){rval=(void*)&(p->vx);s=0;} + if(!str_comp("vy",name)){rval=(void*)&(p->vy);s=0;} + if(!str_comp("vz",name)){rval=(void*)&(p->vz);s=0;} + if(!str_comp("sx",name)){rval=(void*)&(p->sx);s=0;} + if(!str_comp("sy",name)){rval=(void*)&(p->sy);s=0;} + if(!str_comp("sz",name)){rval=(void*)&(p->sz);s=0;} + if(!str_comp("t",name)) {rval=(void*)&(p->t); s=0;} + if(!str_comp("p",name)) {rval=(void*)&(p->p); s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +int particle_setvar_void(_class_particle *, char *, void*); + +int particle_setvar_void(_class_particle *p, char *name, void* value){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + if(!str_comp("x",name)) {memcpy(&(p->x), value, sizeof(double)); rval=0;} + if(!str_comp("y",name)) {memcpy(&(p->y), value, sizeof(double)); rval=0;} + if(!str_comp("z",name)) {memcpy(&(p->z), value, sizeof(double)); rval=0;} + if(!str_comp("vx",name)){memcpy(&(p->vx), value, sizeof(double)); rval=0;} + if(!str_comp("vy",name)){memcpy(&(p->vy), value, sizeof(double)); rval=0;} + if(!str_comp("vz",name)){memcpy(&(p->vz), value, sizeof(double)); rval=0;} + if(!str_comp("sx",name)){memcpy(&(p->sx), value, sizeof(double)); rval=0;} + if(!str_comp("sy",name)){memcpy(&(p->sy), value, sizeof(double)); rval=0;} + if(!str_comp("sz",name)){memcpy(&(p->sz), value, sizeof(double)); rval=0;} + if(!str_comp("p",name)) {memcpy(&(p->p), value, sizeof(double)); rval=0;} + if(!str_comp("t",name)) {memcpy(&(p->t), value, sizeof(double)); rval=0;} + return rval; +} + +#pragma acc routine +int particle_setvar_void_array(_class_particle *, char *, void*, int); + +int particle_setvar_void_array(_class_particle *p, char *name, void* value, int elements){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + return rval; +} + +#pragma acc routine +void particle_restore(_class_particle *p, _class_particle *p0); + +void particle_restore(_class_particle *p, _class_particle *p0) { + p->x = p0->x; p->y = p0->y; p->z = p0->z; + p->vx = p0->vx; p->vy = p0->vy; p->vz = p0->vz; + p->sx = p0->sx; p->sy = p0->sy; p->sz = p0->sz; + p->t = p0->t; p->p = p0->p; + p->_absorbed=0; p->_restore=0; +} + +#pragma acc routine +double particle_getuservar_byid(_class_particle *p, int id, int *suc){ + int s=1; + double rval=0; + switch(id){ + } + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void particle_uservar_init(_class_particle *p){ +} + +#define MC_EMBEDDED_RUNTIME +/* embedding file "mccode-r.h" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: mcstas 3.99.99 +* Version: $Revision$ +* +* Runtime system header for McStas/McXtrace. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int numipar; +* metadata_table_t metadata_table[]; +* int num_metadata; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM mcAbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas/McXtrace version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCCODE_R_H +#define MCCODE_R_H "$Revision$" + +#include +#include +#include +#include +#include +#include +#include +#ifndef _MSC_EXTENSIONS +#include +#endif +#include +#include +#include +#ifdef OPENACC +#include +#ifndef GCCOFFLOAD +#include +#else +#include +#endif +#pragma acc routine +int noprintf(); +#pragma acc routine +size_t str_len(const char *s); +#else +#include +#endif + +/* In case of gcc / clang, ensure to use + the built-in isnan/isinf functions */ +#if defined(__GNUC__) || defined(__clang__) +# ifdef isnan +# undef isnan +# endif +# ifdef isinf +# undef isinf +# endif +# define isnan(x) __builtin_isnan(x) +# define isinf(x) __builtin_isinf(x) +#endif + +#ifdef _MSC_EXTENSIONS +#ifndef _TIMES_H +#define _TIMES_H + +#if defined(WIN32) || defined(_WIN32) +#include +#include +#include + +int gettimeofday(struct timeval* t,void* timezone); + +#define __need_clock_t +#include + + +/* Structure describing CPU time used by a process and its children. */ +struct tms + { + clock_t tms_utime; /* User CPU time. */ + clock_t tms_stime; /* System CPU time. */ + + clock_t tms_cutime; /* User CPU time of dead children. */ + clock_t tms_cstime; /* System CPU time of dead children. */ + }; + +/* Store the CPU time used by this process and all its + dead children (and their dead children) in BUFFER. + Return the elapsed real time, or (clock_t) -1 for errors. + All times are in CLK_TCKths of a second. */ +clock_t times (struct tms *__buffer); + +typedef long long suseconds_t ; + + + +int gettimeofday(struct timeval* t,void* timezone) +{ struct _timeb timebuffer; + _ftime( &timebuffer ); + t->tv_sec=timebuffer.time; + t->tv_usec=1000*timebuffer.millitm; + return 0; +} + +clock_t times (struct tms *__buffer) { + + __buffer->tms_utime = clock(); + __buffer->tms_stime = 0; + __buffer->tms_cstime = 0; + __buffer->tms_cutime = 0; + return __buffer->tms_utime; +} + + +#endif +#endif +#endif + +/* If the runtime is embedded in the simulation program, some definitions can + be made static. */ + +#ifdef MC_EMBEDDED_RUNTIME +# define mcstatic +#else +# define mcstatic +#endif + +#ifdef __dest_os +# if (__dest_os == __mac_os) +# define MAC +# endif +#endif + +#ifdef __FreeBSD__ +# define NEED_STAT_H +#endif + +#if defined(__APPLE__) && defined(__GNUC__) +# define NEED_STAT_H +#endif + +#if defined(WIN32) || defined(_WIN32) +# define NEED_STAT_H +# define NEED_TYPES_H +#endif + +#ifdef NEED_STAT_H +# include +#endif + +#ifdef NEED_TYPES_H +# include +#endif + +#ifndef MC_PATHSEP_C +#if defined(WIN32) || defined(_WIN32) +# define MC_PATHSEP_C '\\' +# define MC_PATHSEP_S "\\" +# else /* !WIN32 */ +# define MC_PATHSEP_C '/' +# define MC_PATHSEP_S "/" +# endif /* !WIN32 */ +#endif /* MC_PATHSEP_C */ + +#if defined(WIN32) || defined(_WIN32) +#if defined _MSC_VER +#include +#elif defined __GNUC__ +#include +#include +#include +#endif +#define mkdir(a,b) mkdir(a) +#define getpid() _getpid() +#endif + +/* the version string is replaced when building distribution with mkdist */ +#ifndef MCCODE_STRING +# define MCCODE_STRING " 3.99.99, git" +#endif + +#ifndef MCCODE_DATE +# define MCCODE_DATE "git" +#endif + +#ifndef MCCODE_VERSION +# define MCCODE_VERSION "3.99.99" +#endif + +#ifndef __MCCODE_VERSION__ +#define __MCCODE_VERSION__ 399099L +#endif + +#ifndef MCCODE_NAME +# define MCCODE_NAME "mcstas" +#endif + +#ifndef MCCODE_PARTICLE +# define MCCODE_PARTICLE "neutron" +#endif + +#ifndef MCCODE_PARTICLE_CODE +# define MCCODE_PARTICLE_CODE 2112 +#endif + +#ifndef MCCODE_LIBENV +# define MCCODE_LIBENV "MCSTAS" +#endif + +#ifndef FLAVOR_UPPER +# define FLAVOR_UPPER MCCODE_NAME +#endif + +#ifdef MC_PORTABLE +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef MAC +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#if (USE_MPI == 0) +# undef USE_MPI +#endif + +#ifdef USE_MPI /* default is to disable signals with MPI, as MPICH uses them to communicate */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef OPENACC /* default is to disable signals with PGI/OpenACC */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifndef OPENACC +# ifndef USE_OFF /* default is to enable OFF when not using PGI/OpenACC */ +# define USE_OFF +# endif +# ifndef CPUFUNNEL /* allow to enable FUNNEL-mode on CPU */ +# ifdef FUNNEL /* by default disable FUNNEL-mode when not using PGI/OpenACC */ +# undef FUNNEL +# endif +# endif +#endif + +#if (NOSIGNALS == 0) +# undef NOSIGNALS +#endif + +/** Header information for metadata-r.c ----------------------------------------------------------------------------- */ +struct metadata_table_struct { /* stores metadata strings from components */ + char * source; // component name which provided the metadata + char * name; // the name of the metadata + char * type; // the MIME type of the metadata (free form, valid identifier) + char * value; // the metadata string contents +}; +typedef struct metadata_table_struct metadata_table_t; +char * metadata_table_key_component(char* key); +char * metadata_table_key_literal(char * key); +int metadata_table_defined(int, metadata_table_t *, char *); +char * metadata_table_name(int, metadata_table_t *, char *); +char * metadata_table_type(int, metadata_table_t *, char *); +char * metadata_table_literal(int, metadata_table_t *, char *); +void metadata_table_print_all_keys(int no, metadata_table_t * tab); +int metadata_table_print_all_components(int no, metadata_table_t * tab); +int metadata_table_print_component_keys(int no, metadata_table_t * tab, char * key); +/* -------------------------------------------------------------------------- Header information for metadata-r.c --- */ + +/* Note: the enum instr_formal_types definition MUST be kept + synchronized with the one in mccode.h and with the + instr_formal_type_names array in cogen.c. */ +enum instr_formal_types + { + instr_type_int, + instr_type_string, instr_type_char, + instr_type_vector, instr_type_double + }; +struct mcinputtable_struct { /* defines instrument parameters */ + char *name; /* name of parameter */ + void *par; /* pointer to instrument parameter (variable) */ + enum instr_formal_types type; + char *val; /* default value */ + char *unit; /* expected unit for parameter; informational only */ +}; + + +#ifndef MCCODE_BASE_TYPES +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#endif + +/* the following variables are defined in the McStas generated C code + but should be defined externally in case of independent library usage */ +#ifndef DANSE +extern struct mcinputtable_struct mcinputtable[]; /* list of instrument parameters */ +extern int numipar; /* number of instrument parameters */ +extern metadata_table_t metadata_table[]; /* list of component-defined string metadata */ +extern int num_metadata; /* number of component-defined string metadata */ +extern char instrument_name[], instrument_source[]; /* instrument name and filename */ +extern char *instrument_exe; /* executable path = argv[0] or NULL */ +extern char instrument_code[]; /* contains the initial 'instr' file */ + +#ifndef MC_ANCIENT_COMPATIBILITY +extern int traceenabled, defaultmain; +#endif +#endif + + +/* Useful macros ============================================================ */ + + +/* SECTION: Dynamic Arrays */ +typedef int* IArray1d; +IArray1d create_iarr1d(int n); +void destroy_iarr1d(IArray1d a); + +typedef int** IArray2d; +IArray2d create_iarr2d(int nx, int ny); +void destroy_iarr2d(IArray2d a); + +typedef int*** IArray3d; +IArray3d create_iarr3d(int nx, int ny, int nz); +void destroy_iarr3d(IArray3d a); + +typedef double* DArray1d; +DArray1d create_darr1d(int n); +void destroy_darr1d(DArray1d a); + +typedef double** DArray2d; +DArray2d create_darr2d(int nx, int ny); +void destroy_darr2d(DArray2d a); + +typedef double*** DArray3d; +DArray3d create_darr3d(int nx, int ny, int nz); +void destroy_darr3d(DArray3d a); + + +/* MPI stuff */ +#ifdef USE_MPI +#include "mpi.h" + +#ifdef OMPI_MPI_H /* openmpi does not use signals: we may install our sighandler */ +#ifndef OPENACC /* ... but only if we are not also running on GPU */ +#undef NOSIGNALS +#endif +#endif + +/* + * MPI_MASTER(i): + * execution of i only on master node + */ +#define MPI_MASTER(statement) { \ + if(mpi_node_rank == mpi_node_root)\ + { statement; } \ +} + +#ifndef MPI_REDUCE_BLOCKSIZE +#define MPI_REDUCE_BLOCKSIZE 100000 +#endif + +int mc_MPI_Sum(double* buf, long count); +int mc_MPI_Send(void *sbuf, long count, MPI_Datatype dtype, int dest); +int mc_MPI_Recv(void *rbuf, long count, MPI_Datatype dtype, int source); + +/* MPI_Finalize exits gracefully and should be preferred to MPI_Abort */ +#define exit(code) do { \ + MPI_Finalize(); \ + exit(code); \ + } while(0) + +#else /* !USE_MPI */ +#define MPI_MASTER(instr) instr +#endif /* USE_MPI */ + + +#ifdef USE_MPI +static int mpi_node_count; +#endif + +#ifdef USE_THREADS /* user want threads */ +#error Threading (USE_THREADS) support has been removed for very poor efficiency. Use MPI/SSH grid instead. +#endif + + +void mcset_ncount(unsigned long long count); /* wrapper to get mcncount */ +#pragma acc routine +unsigned long long int mcget_ncount(void); /* wrapper to set mcncount */ +unsigned long long mcget_run_num(void); /* wrapper to get mcrun_num=0:mcncount-1 */ + +/* Following part is only embedded when not redundant with mccode.h ========= */ + +#ifndef MCCODE_H + +#ifndef NOSIGNALS +#include +char *mcsig_message; +#define SIG_MESSAGE(msg) mcsig_message=(char *)(msg); +#else +#define SIG_MESSAGE(...) +#endif /* !NOSIGNALS */ + + +/* Useful macros and constants ============================================== */ + + +#ifndef FLT_MAX +#define FLT_MAX 3.40282347E+38F /* max decimal value of a "float" */ +#endif + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef SQR +#define SQR(x) ( (x) * (x) ) +#endif +#ifndef SIGN +#define SIGN(x) (((x)>0.0)?(1):(-1)) +#endif + + +# ifndef M_E +# define M_E 2.71828182845904523536 // e +# endif +# ifndef M_LOG2E +# define M_LOG2E 1.44269504088896340736 // log2(e) +# endif +# ifndef M_LOG10E +# define M_LOG10E 0.434294481903251827651 // log10(e) +# endif +# ifndef M_LN2 +# define M_LN2 0.693147180559945309417 // ln(2) +# endif +# ifndef M_LN10 +# define M_LN10 2.30258509299404568402 // ln(10) +# endif +# ifndef M_PI +# define M_PI 3.14159265358979323846 // pi +# endif +# ifndef PI +# define PI M_PI // pi - also used in some places +# endif +# ifndef M_PI_2 +# define M_PI_2 1.57079632679489661923 // pi/2 +# endif +# ifndef M_PI_4 +# define M_PI_4 0.785398163397448309616 // pi/4 +# endif +# ifndef M_1_PI +# define M_1_PI 0.318309886183790671538 // 1/pi +# endif +# ifndef M_2_PI +# define M_2_PI 0.636619772367581343076 // 2/pi +# endif +# ifndef M_2_SQRTPI +# define M_2_SQRTPI 1.12837916709551257390 // 2/sqrt(pi) +# endif +# ifndef M_SQRT2 +# define M_SQRT2 1.41421356237309504880 // sqrt(2) +# endif +# ifndef M_SQRT1_2 +# define M_SQRT1_2 0.707106781186547524401 // 1/sqrt(2) +# endif + +#define RAD2MIN ((180*60)/PI) +#define MIN2RAD (PI/(180*60)) +#define DEG2RAD (PI/180) +#define RAD2DEG (180/PI) +#define FWHM2RMS 0.424660900144 /* Convert between full-width-half-max and */ +#define RMS2FWHM 2.35482004503 /* root-mean-square (standard deviation) */ +#define HBAR 1.05457168e-34 /* [Js] h bar Planck constant CODATA 2002 */ +#define MNEUTRON 1.67492728e-27 /* [kg] mass of neutron CODATA 2002 */ +#define GRAVITY 9.81 /* [m/s^2] gravitational acceleration */ +#define NA 6.02214179e23 /* [#atoms/g .mole] Avogadro's number*/ + + +#define UNSET nan("0x6E6F74736574") +int nans_match(double, double); +int is_unset(double); +int is_valid(double); +int is_set(double); +int all_unset(int n, ...); +int all_set(int n, ...); +int any_unset(int n, ...); +int any_set(int n, ...); + + +/* wrapper to get absolute and relative position of comp */ +/* mccomp_posa and mccomp_posr are defined in McStas generated C code */ +#define POS_A_COMP_INDEX(index) (instrument->_position_absolute[index]) +#define POS_R_COMP_INDEX(index) (instrument->_position_relative[index]) + +/* setting parameters based COMP_GETPAR (returned as pointer) */ +/* compname must be given as a string, type and par are symbols. */ +#define COMP_GETPAR3(type, compname, par) \ + &( ((_class_ ## type ##_parameters *) _getvar_parameters(compname))->par ) +/* the body of this function depends on component instances, and is cogen'd */ +void* _getvar_parameters(char* compname); + +int _getcomp_index(char* compname); + +/* Note: The two-stage approach to COMP_GETPAR is NOT redundant; without it, +* after #define C sample, COMP_GETPAR(C,x) would refer to component C, not to +* component sample. Such are the joys of ANSI C. + +* Anyway the usage of COMP_GETPAR requires that we use sometimes bare names... +* NOTE: This can ONLY be used in instrument descriptions, not components. +*/ +#define COMP_GETPAR2(comp, par) (_ ## comp ## _var._parameters.par) +#define COMP_GETPAR(comp, par) COMP_GETPAR2(comp,par) + +#define INSTRUMENT_GETPAR(par) (_instrument_var._parameters.par) + +/* Current component name, index, position and orientation */ +/* These macros work because, using class-based functions, "comp" is usually +* the local variable of the active/current component. */ +#define INDEX_CURRENT_COMP (_comp->_index) +#define NAME_CURRENT_COMP (_comp->_name) +#define TYPE_CURRENT_COMP (_comp->_type) +#define POS_A_CURRENT_COMP (_comp->_position_absolute) +#define POS_R_CURRENT_COMP (_comp->_position_relative) +#define ROT_A_CURRENT_COMP (_comp->_rotation_absolute) +#define ROT_R_CURRENT_COMP (_comp->_rotation_relative) + +#define NAME_INSTRUMENT (instrument->_name) + + +/* MCDISPLAY/trace and debugging message sent to stdout */ +#ifdef MC_TRACE_ENABLED +#define DEBUG +#endif + +#ifdef DEBUG +#define DEBUG_INSTR() if(!mcdotrace); else { printf("INSTRUMENT:\n"); printf("Instrument '%s' (%s)\n", instrument_name, instrument_source); } +#define DEBUG_COMPONENT(name,c,t) if(!mcdotrace); else {\ + printf("COMPONENT: \"%s\"\n" \ + "POS: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + name, c.x, c.y, c.z, t[0][0], t[0][1], t[0][2], \ + t[1][0], t[1][1], t[1][2], t[2][0], t[2][1], t[2][2]); \ + printf("Component %30s AT (%g,%g,%g)\n", name, c.x, c.y, c.z); } +#define DEBUG_INSTR_END() if(!mcdotrace); else printf("INSTRUMENT END:\n"); +#define DEBUG_ENTER() if(!mcdotrace); else printf("ENTER:\n"); +#define DEBUG_COMP(c) if(!mcdotrace); else printf("COMP: \"%s\"\n", c); +#define DEBUG_LEAVE() if(!mcdotrace); else printf("LEAVE:\n"); +#define DEBUG_ABSORB() if(!mcdotrace); else printf("ABSORB:\n"); +#else +#define DEBUG_INSTR() +#define DEBUG_COMPONENT(name,c,t) +#define DEBUG_INSTR_END() +#define DEBUG_ENTER() +#define DEBUG_COMP(c) +#define DEBUG_LEAVE() +#define DEBUG_ABSORB() +#endif + +// mcDEBUG_STATE and mcDEBUG_SCATTER are defined by mcstas-r.h and mcxtrace-r.h + + + +#ifdef TEST +#define test_printf printf +#else +#define test_printf while(0) printf +#endif + +/* send MCDISPLAY message to stdout to show gemoetry */ +void mcdis_magnify(char *what); +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2); +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n); +void mcdis_multiline(int count, ...); +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height); +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz); +void mcdis_circle(char *plane, double x, double y, double z, double r); +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz); +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz); +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz); +void mcdis_sphere(double x, double y, double z, double r); + + +/* random number generation. ================================================ */ + +#if RNG_ALG == _RNG_ALG_MT // MT (currently not functional for GPU) +# define MC_RAND_MAX ((uint32_t)0xffffffffUL) +# define RANDSTATE_LEN 1 +# define srandom(seed) mt_srandom_empty() +# define random() mt_random() +# define _random() mt_random() +#elif RNG_ALG == _RNG_ALG_KISS // KISS +# ifndef UINT64_MAX +# define UINT64_MAX ((uint64_t)0xffffffffffffffffULL) +# endif +# define MC_RAND_MAX UINT64_MAX +# define RANDSTATE_LEN 7 +# define srandom(seed) kiss_srandom(_particle->randstate, seed) +# define random() kiss_random(_particle->randstate) +# define _random() kiss_random(state) +#endif + +#pragma acc routine +double _randnorm2(randstate_t* state); + +// Component writer interface +#define randnorm() _randnorm2(_particle->randstate) // NOTE: can't use _randnorm on GPU +#define rand01() _rand01(_particle->randstate) +#define randpm1() _randpm1(_particle->randstate) +#define rand0max(p1) _rand0max(p1, _particle->randstate) +#define randminmax(p1, p2) _randminmax(p1, p2, _particle->randstate) +#define randtriangle() _randtriangle(_particle->randstate) + +// Mersenne Twister rng +uint32_t mt_random(void); +void mt_srandom (uint32_t x); +void mt_srandom_empty(); + +// KISS rng +#pragma acc routine +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed); +#pragma acc routine +uint64_t kiss_random(uint64_t state[7]); + +// Scrambler / hash function +#pragma acc routine seq +randstate_t _hash(randstate_t x); + +// internal RNG (transforms) interface +#pragma acc routine +double _rand01(randstate_t* state); +#pragma acc routine +double _randpm1(randstate_t* state); +#pragma acc routine +double _rand0max(double max, randstate_t* state); +#pragma acc routine +double _randminmax(double min, double max, randstate_t* state); +#pragma acc routine +double _randtriangle(randstate_t* state); + + +#ifdef USE_OPENCL +#include "opencl-lib.h" +#include "opencl-lib.c" +#endif + +#ifndef DANSE +int init(void); +int raytrace(_class_particle*); +int save(FILE *); +int finally(void); +int display(void); +#endif + + +/* GPU related algorithms =================================================== */ + +/* +* Divide-and-conquer strategy for parallel sort absorbed last. +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier); +#endif +long sort_absorb_last_serial(_class_particle* particles, long len); + + +/* simple vector algebra ==================================================== */ + + +#define vec_prod(x, y, z, x1, y1, z1, x2, y2, z2) \ + vec_prod_func(&x, &y, &z, x1, y1, z1, x2, y2, z2) +#pragma acc routine seq +mcstatic void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic double scalar_prod( + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic void norm_func(double *x, double *y, double *z); +#define NORM(x,y,z) norm_func(&x, &y, &z) + +#pragma acc routine seq +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z); + +/** + * Rotate the vector vx,vy,vz psi radians around the vector ax,ay,az + * and put the result in x,y,z. + */ +#define rotate(x, y, z, vx, vy, vz, phi, ax, ay, az) \ + do { \ + double mcrt_tmpx = (ax), mcrt_tmpy = (ay), mcrt_tmpz = (az); \ + double mcrt_vp, mcrt_vpx, mcrt_vpy, mcrt_vpz; \ + double mcrt_vnx, mcrt_vny, mcrt_vnz, mcrt_vn1x, mcrt_vn1y, mcrt_vn1z; \ + double mcrt_bx, mcrt_by, mcrt_bz; \ + double mcrt_cos, mcrt_sin; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vp = scalar_prod((vx), (vy), (vz), mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vpx = mcrt_vp*mcrt_tmpx; \ + mcrt_vpy = mcrt_vp*mcrt_tmpy; \ + mcrt_vpz = mcrt_vp*mcrt_tmpz; \ + mcrt_vnx = (vx) - mcrt_vpx; \ + mcrt_vny = (vy) - mcrt_vpy; \ + mcrt_vnz = (vz) - mcrt_vpz; \ + vec_prod(mcrt_bx, mcrt_by, mcrt_bz, \ + mcrt_tmpx, mcrt_tmpy, mcrt_tmpz, mcrt_vnx, mcrt_vny, mcrt_vnz); \ + mcrt_cos = cos((phi)); mcrt_sin = sin((phi)); \ + mcrt_vn1x = mcrt_vnx*mcrt_cos + mcrt_bx*mcrt_sin; \ + mcrt_vn1y = mcrt_vny*mcrt_cos + mcrt_by*mcrt_sin; \ + mcrt_vn1z = mcrt_vnz*mcrt_cos + mcrt_bz*mcrt_sin; \ + (x) = mcrt_vpx + mcrt_vn1x; \ + (y) = mcrt_vpy + mcrt_vn1y; \ + (z) = mcrt_vpz + mcrt_vn1z; \ + } while(0) + +/** + * Mirror (xyz) in the plane given by the point (rx,ry,rz) and normal (nx,ny,nz) + * + * TODO: This define is seemingly never used... + */ +#define mirror(x,y,z,rx,ry,rz,nx,ny,nz) \ + do { \ + double mcrt_tmpx= (nx), mcrt_tmpy = (ny), mcrt_tmpz = (nz); \ + double mcrt_tmpt; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_tmpt=scalar_prod((rx),(ry),(rz),mcrt_tmpx,mcrt_tmpy,mcrt_tmpz); \ + (x) = rx -2 * mcrt_tmpt*mcrt_rmpx; \ + (y) = ry -2 * mcrt_tmpt*mcrt_rmpy; \ + (z) = rz -2 * mcrt_tmpt*mcrt_rmpz; \ + } while (0) + +#pragma acc routine +Coords coords_set(MCNUM x, MCNUM y, MCNUM z); +#pragma acc routine +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z); +#pragma acc routine +Coords coords_add(Coords a, Coords b); +#pragma acc routine +Coords coords_sub(Coords a, Coords b); +#pragma acc routine +Coords coords_neg(Coords a); +#pragma acc routine +Coords coords_scale(Coords b, double scale); +#pragma acc routine +double coords_sp(Coords a, Coords b); +#pragma acc routine +Coords coords_xp(Coords b, Coords c); +#pragma acc routine +double coords_len(Coords a); +#pragma acc routine seq +void coords_print(Coords a); +#pragma acc routine seq +mcstatic void coords_norm(Coords* c); + +#pragma acc routine seq +void rot_set_rotation(Rotation t, double phx, double phy, double phz); +#pragma acc routine seq +int rot_test_identity(Rotation t); +#pragma acc routine seq +void rot_mul(Rotation t1, Rotation t2, Rotation t3); +#pragma acc routine seq +void rot_copy(Rotation dest, Rotation src); +#pragma acc routine seq +void rot_transpose(Rotation src, Rotation dst); +#pragma acc routine seq +Coords rot_apply(Rotation t, Coords a); + +#pragma acc routine seq +void mccoordschange(Coords a, Rotation t, _class_particle *particle); +#pragma acc routine seq +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz); + +double mcestimate_error(double N, double p1, double p2); +void mcreadparams(void); + +/* this is now in mcstas-r.h and mcxtrace-r.h as the number of state parameters +is no longer equal */ + +_class_particle mcgenstate(void); + +// trajectory/shape intersection routines +#pragma acc routine seq +int inside_rectangle(double, double, double, double); +#pragma acc routine seq +int box_intersect(double *dt_in, double *dt_out, double x, double y, double z, + double vx, double vy, double vz, double dx, double dy, double dz); +#pragma acc routine seq +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h); +#pragma acc routine seq +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r); +// second order equation roots +#pragma acc routine seq +int solve_2nd_order(double *t1, double *t2, + double A, double B, double C); + +// random vector generation to shape +// defines silently introducing _particle as the last argument +#define randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius) \ + _randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius, _particle) +#define randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A) \ + _randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, _particle) +#define randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order) \ + _randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order, _particle) +// defines forwarding to "inner" functions +#define randvec_target_sphere randvec_target_circle +#define randvec_target_rect(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9) \ + randvec_target_rect_real(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,0,0,0,1) +// headers for randvec +#pragma acc routine seq +void _randvec_target_circle(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double radius, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_angular(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double height, + double width, Rotation A, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, double height, double width, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle); + + +// this is the main() +int mccode_main(int argc, char *argv[]); + + +#endif /* !MCCODE_H */ + +#ifndef MCCODE_R_IO_H +#define MCCODE_R_IO_H "$Revision$" + +#if (USE_NEXUS == 0) +#undef USE_NEXUS +#endif + +#ifndef CHAR_BUF_LENGTH +#define CHAR_BUF_LENGTH 1024 +#endif + + +/* I/O section part ========================================================= */ + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + + +/* main DETECTOR structure which stores most information to write to data files */ +struct mcdetector_struct { + char filename[CHAR_BUF_LENGTH]; /* file name of monitor */ + double Position[3]; /* position of detector component*/ + char position[CHAR_BUF_LENGTH]; /* position of detector component (string)*/ + Rotation Rotation; /* position of detector component*/ + char options[CHAR_BUF_LENGTH]; /* Monitor_nD style list-mode'options' (string)*/ + char component[CHAR_BUF_LENGTH]; /* component instance name */ + char nexuscomp[CHAR_BUF_LENGTH]; /* component naming in NeXus/HDF case */ + char instrument[CHAR_BUF_LENGTH]; /* instrument name */ + char type[CHAR_BUF_LENGTH]; /* data type, e.g. 0d, 1d, 2d, 3d */ + char user[CHAR_BUF_LENGTH]; /* user name, e.g. HOME */ + char date[CHAR_BUF_LENGTH]; /* date of simulation end/write time */ + char title[CHAR_BUF_LENGTH]; /* title of detector */ + char xlabel[CHAR_BUF_LENGTH]; /* X axis label */ + char ylabel[CHAR_BUF_LENGTH]; /* Y axis label */ + char zlabel[CHAR_BUF_LENGTH]; /* Z axis label */ + char xvar[CHAR_BUF_LENGTH]; /* X variable name */ + char yvar[CHAR_BUF_LENGTH]; /* Y variable name */ + char zvar[CHAR_BUF_LENGTH]; /* Z variable name */ + char ncount[CHAR_BUF_LENGTH]; /* number of events initially generated */ + char limits[CHAR_BUF_LENGTH]; /* X Y Z limits, e.g. [xmin xmax ymin ymax zmin zmax] */ + char variables[CHAR_BUF_LENGTH]; /* variables written into data block */ + char statistics[CHAR_BUF_LENGTH]; /* center, mean and half width along axis */ + char signal[CHAR_BUF_LENGTH]; /* min max and mean of signal (data block) */ + char values[CHAR_BUF_LENGTH]; /* integrated values e.g. [I I_err N] */ + double xmin,xmax; /* min max of axes */ + double ymin,ymax; + double zmin,zmax; + double intensity; /* integrated values for data block */ + double error; + double events; + double min; /* statistics for data block */ + double max; + double mean; + double centerX; /* statistics for axes */ + double halfwidthX; + double centerY; + double halfwidthY; + int rank; /* dimensionaly of monitor, e.g. 0 1 2 3 */ + char istransposed; /* flag to transpose matrix for some formats */ + + long m,n,p; /* dimensions of data block and along axes */ + long date_l; /* same as date, but in sec since 1970 */ + + double *p0, *p1, *p2; /* pointers to saved data, NULL when freed */ + char format[CHAR_BUF_LENGTH]; /* format for file generation */ +}; + +typedef struct mcdetector_struct MCDETECTOR; + +static char *dirname = NULL; /* name of output directory */ +static char *siminfo_name = "mccode"; /* default output sim file name */ +char *mcformat = NULL; /* NULL (default) or a specific format */ + +/* file I/O definitions and function prototypes */ + +#ifndef MC_EMBEDDED_RUNTIME /* the mcstatic variables (from mccode-r.c) */ +extern FILE * siminfo_file; /* handle to the output siminfo file */ +extern int mcgravitation; /* flag to enable gravitation */ +extern int mcdotrace; /* flag to print MCDISPLAY messages */ +#else +mcstatic FILE *siminfo_file = NULL; +#endif + +/* I/O function prototypes ================================================== */ + +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle); + +/* output functions */ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, long n, + double *p0, double *p1, double *p2, char *f, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, long m, + long n, double *p0, double *p1, double *p2, char *f, + char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rot,char* options, int index); + +/* wrappers to output functions, that automatically set NAME and POSITION */ +#define DETECTOR_OUT(p0,p1,p2) mcdetector_out_0D(NAME_CURRENT_COMP,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_0D(t,p0,p1,p2) mcdetector_out_0D(t,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f) \ + mcdetector_out_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f) \ + mcdetector_out_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) + +#ifdef USE_NEXUS +#include "napi.h" +NXhandle nxhandle; +#endif + +#endif /* ndef MCCODE_R_IO_H */ + +#endif /* MCCODE_R_H */ +/* End of file "mccode-r.h". */ + +/* embedding file "mcstas-r.h" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system header for McStas. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int mcnumipar; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM instrument.counter_AbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#define MCSTAS_R_H "$Revision$" + +/* Following part is only embedded when not redundent with mcstas.h */ + +#ifndef MCCODE_H + +#define AA2MS 629.622368 /* Convert k[1/AA] to v[m/s] */ +#define MS2AA 1.58825361e-3 /* Convert v[m/s] to k[1/AA] */ +#define K2V AA2MS +#define V2K MS2AA +#define Q2V AA2MS +#define V2Q MS2AA +#define SE2V 437.393377 /* Convert sqrt(E)[meV] to v[m/s] */ +#define VS2E 5.22703725e-6 /* Convert (v[m/s])**2 to E[meV] */ + +#define SCATTER0 do {DEBUG_SCATTER(); SCATTERED++;} while(0) +#define SCATTER SCATTER0 + +#define JUMPTOCOMP(comp) mcneutron->_index = INDEX_COMP(comp); + +#define MAGNET_ON \ + do { \ + mcMagnet = 1; \ + } while(0) + +#define MAGNET_OFF \ + do { \ + mcMagnet = 0; \ + } while(0) + +#define ALLOW_BACKPROP \ + do { \ + allow_backprop = 1; \ + } while(0) + +#define DISALLOW_BACKPROP \ + do { \ + allow_backprop = 0; \ + } while(0) + +#define PROP_MAGNET(dt) \ + do { \ + } while (0) + /* change coordinates from local system to magnet system */ +/* Rotation rotLM, rotTemp; \ + Coords posLM = coords_sub(POS_A_CURRENT_COMP, mcMagnetPos); \ + rot_transpose(ROT_A_CURRENT_COMP, rotTemp); \ + rot_mul(rotTemp, mcMagnetRot, rotLM); \ + mcMagnetPrecession(x, y, z, t, vx, vy, vz, \ + &sx, &sy, &sz, dt, posLM, rotLM); \ + } while(0) +*/ + +#define mcPROP_DT(dt) \ + do { \ + if (mcMagnet && dt > 0) PROP_MAGNET(dt);\ + x += vx*(dt); \ + y += vy*(dt); \ + z += vz*(dt); \ + t += (dt); \ + if (isnan(p) || isinf(p)) { ABSORB; }\ + } while(0) + +/* ADD: E. Farhi, Aug 6th, 2001 PROP_GRAV_DT propagation with acceleration */ +#define PROP_GRAV_DT(dt, Ax, Ay, Az) \ + do { \ + if(dt < 0 && allow_backprop == 0) { ABSORB; }\ + if (mcMagnet) /*printf("Spin precession gravity\n")*/; \ + x += vx*(dt) + (Ax)*(dt)*(dt)/2; \ + y += vy*(dt) + (Ay)*(dt)*(dt)/2; \ + z += vz*(dt) + (Az)*(dt)*(dt)/2; \ + vx += (Ax)*(dt); \ + vy += (Ay)*(dt); \ + vz += (Az)*(dt); \ + t += (dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_DT(dt) \ + do { \ + if(dt < 0 && allow_backprop == 0) { RESTORE=1; ABSORB; }; \ + if (mcgravitation) { Coords mcLocG; double mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + PROP_GRAV_DT(dt, mc_gx, mc_gy, mc_gz); } \ + else mcPROP_DT(dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_Z0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gz/2, -vz, -z); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); z=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Z0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_Z0 \ + do { \ + double mc_dt; \ + if(vz == 0) { ABSORB; }; \ + mc_dt = -z/vz; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + z = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_X0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gx/2, -vx, -x); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); x=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_X0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_X0 \ + do { \ + double mc_dt; \ + if(vx == 0) { ABSORB; }; \ + mc_dt = -x/vx; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + x = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_Y0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gy/2, -vy, -y); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); y=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Y0; \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define mcPROP_Y0 \ + do { \ + double mc_dt; \ + if(vy == 0) { ABSORB; }; \ + mc_dt = -y/vy; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + y = 0; \ + DISALLOW_BACKPROP; \ + } while(0) + + +#ifdef DEBUG + +#define DEBUG_STATE() if(!mcdotrace); else \ + printf("STATE: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); +#define DEBUG_SCATTER() if(!mcdotrace); else \ + printf("SCATTER: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); + +#else + +#define DEBUG_STATE() +#define DEBUG_SCATTER() + +#endif + +#endif /* !MCCODE_H */ + +#endif /* MCSTAS_R_H */ +/* End of file "mcstas-r.h". */ + +/* embedding file "mccode-r.c" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y/McXtrace X.Y +* Version: $Revision$ +* +* Runtime system for McStas and McXtrace. +* Embedded within instrument in runtime mode. +* Contains SECTIONS: +* MPI handling (sum, send, recv) +* format definitions +* I/O +* mcdisplay support +* random numbers +* coordinates handling +* vectors math (solve 2nd order, normals, randvec...) +* parameter handling +* signal and main handlers +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + + +/** Include header files to avoid implicit declarations (not allowed on LLVM) */ +#include +#include + +// UNIX specific headers (non-Windows) +#if defined(__unix__) || defined(__APPLE__) +#include +#include +#endif + + +#ifndef DANSE +#ifdef MC_ANCIENT_COMPATIBILITY +int traceenabled = 0; +int defaultmain = 0; +#endif +/* else defined directly in the McCode generated C code */ + +static long mcseed = 0; /* seed for random generator */ +#pragma acc declare create ( mcseed ) +static long mcstartdate = 0; /* start simulation time */ +static int mcdisable_output_files = 0; /* --no-output-files */ +mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ +mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ + /* When -DTOF_TRAIN is defined, the default NTOF + becomes 10, defined below in the + mcparseoptions function body.*/ +mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ +mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ +mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ +#pragma acc declare create ( mcdotrace ) +int mcallowbackprop = 0; /* flag to enable negative/backprop */ + +/* OpenACC-related segmentation parameters: */ +int vecsize = 128; +int numgangs = 7813; +long gpu_innerloop = 2147483647; + +/* Monitor_nD list/buffer-size default */ +/* Starting value may be defined using -DND_BUFFER=N */ +/* Can further be controlled dynamically using --bufsiz input */ +long MONND_BUFSIZ = 10000000; +#ifdef ND_BUFFER +MONND_BUFSIZ = ND_BUFFER; +#endif + + +/* Number of particle histories to simulate. */ +#ifdef NEUTRONICS +mcstatic unsigned long long int mcncount = 1; +mcstatic unsigned long long int mcrun_num = 0; +#else +#ifdef MCDEFAULT_NCOUNT +mcstatic unsigned long long int mcncount = MCDEFAULT_NCOUNT; +#else +mcstatic unsigned long long int mcncount = 1000000; +#endif +#pragma acc declare create ( mcncount ) +mcstatic unsigned long long int mcrun_num = 0; +#pragma acc declare create ( mcrun_num ) +#endif /* NEUTRONICS */ + +#else +#include "mcstas-globals.h" +#endif /* !DANSE */ + +#ifndef NX_COMPRESSION +#define NX_COMPRESSION NX_COMP_NONE +#endif + +/* String nullification on GPU and other replacements */ +#ifdef OPENACC +int noprintf() { + return 0; +} + +int str_comp(char *str1, char *str2) { + while (*str1 && *str1 == *str2) { + str1++; + str2++; + } + return (*str1 - *str2); +} + +size_t str_len(const char *s) +{ + size_t len = 0; + if(s != NULL) + { + while(*s != '\0') + { + ++len; + ++s; + } + } + return len; +} + +#endif + +/* SECTION: Predefine (component) parameters ================================= */ + +int nans_match(double a, double b){ + return (*(uint64_t*)&a == *(uint64_t*)&b); +} +int is_unset(double x){ + return nans_match(x, UNSET); +} +int is_set(double x){ + return !nans_match(x, UNSET); +} +int is_valid(double x){ + return !isnan(x)||is_unset(x); +} +int all_unset(int n, ...){ + va_list ptr; + va_start(ptr, n); + int ret=1; + for (int i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Allreduce((double*)(sbuf+offset), (double*)(rbuf+offset), + length, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + for (i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Send((void*)((char*)sbuf+offset*dsize), length, dtype, dest, tag++, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Send */ + +/******************************************************************************* +* mc_MPI_Recv: Receives arrays from MPI nodes by blocks to avoid buffer limit +* the buffer must have been allocated previously. +*******************************************************************************/ +int mc_MPI_Recv(void *sbuf, + long count, MPI_Datatype dtype, + int source) +{ + int dsize; + long offset=0; + int tag=1; + int length=MPI_REDUCE_BLOCKSIZE; /* defined in mccode-r.h */ + + if (!sbuf || count <= 0) return(MPI_SUCCESS); /* nothing to recv */ + MPI_Type_size(dtype, &dsize); + + while (offset < count) { + if (offset+length > count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Recv((void*)((char*)sbuf+offset*dsize), length, dtype, source, tag++, + MPI_COMM_WORLD, MPI_STATUS_IGNORE) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Recv */ + +#endif /* USE_MPI */ + +/* SECTION: parameters handling ============================================= */ + +/* Instrument input parameter type handling. */ +/******************************************************************************* +* mcparm_double: extract double value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_double(char *s, void *vptr) +{ + char *p; + double *v = (double *)vptr; + + if (!s) { *v = 0; return(1); } + *v = strtod(s, &p); + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_double: display parameter type double +*******************************************************************************/ +static char * +mcparminfo_double(char *parmname) +{ + return "double"; +} + +/******************************************************************************* +* mcparmerror_double: display error message when failed extract double +*******************************************************************************/ +static void +mcparmerror_double(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for floating point parameter %s (mcparmerror_double)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_double: convert double to string +*******************************************************************************/ +static void +mcparmprinter_double(char *f, void *vptr) +{ + double *v = (double *)vptr; + sprintf(f, "%g", *v); +} + +/******************************************************************************* +* mcparm_int: extract int value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_int(char *s, void *vptr) +{ + char *p; + int *v = (int *)vptr; + long x; + + if (!s) { *v = 0; return(1); } + *v = 0; + x = strtol(s, &p, 10); + if(x < INT_MIN || x > INT_MAX) + return 0; /* Under/overflow */ + *v = x; + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_int: display parameter type int +*******************************************************************************/ +static char * +mcparminfo_int(char *parmname) +{ + return "int"; +} + +/******************************************************************************* +* mcparmerror_int: display error message when failed extract int +*******************************************************************************/ +static void +mcparmerror_int(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for integer parameter %s (mcparmerror_int)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_int: convert int to string +*******************************************************************************/ +static void +mcparmprinter_int(char *f, void *vptr) +{ + int *v = (int *)vptr; + sprintf(f, "%d", *v); +} + +/******************************************************************************* +* mcparm_string: extract char* value from 's' into 'vptr' (copy) +*******************************************************************************/ +static int +mcparm_string(char *s, void *vptr) +{ + char **v = (char **)vptr; + if (!s) { *v = NULL; return(1); } + *v = (char *)malloc(strlen(s) + 1); + if(*v == NULL) + { + exit(-fprintf(stderr, "Error: Out of memory %li (mcparm_string).\n", (long)strlen(s) + 1)); + } + strcpy(*v, s); + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_string: display parameter type string +*******************************************************************************/ +static char * +mcparminfo_string(char *parmname) +{ + return "string"; +} + +/******************************************************************************* +* mcparmerror_string: display error message when failed extract string +*******************************************************************************/ +static void +mcparmerror_string(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for string parameter %s (mcparmerror_string)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_string: convert string to string (including esc chars) +*******************************************************************************/ +static void +mcparmprinter_string(char *f, void *vptr) +{ + char **v = (char **)vptr; + char *p; + + if (!*v) { *f='\0'; return; } + strcpy(f, ""); + for(p = *v; *p != '\0'; p++) + { + switch(*p) + { + case '\n': + strcat(f, "\\n"); + break; + case '\r': + strcat(f, "\\r"); + break; + case '"': + strcat(f, "\\\""); + break; + case '\\': + strcat(f, "\\\\"); + break; + default: + strncat(f, p, 1); + } + } + /* strcat(f, "\""); */ +} /* mcparmprinter_string */ + +/* now we may define the parameter structure, using previous functions */ +static struct + { + int (*getparm)(char *, void *); + char * (*parminfo)(char *); + void (*error)(char *, char *); + void (*printer)(char *, void *); +} mcinputtypes[] = { + { + mcparm_int, mcparminfo_int, mcparmerror_int, + mcparmprinter_int + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + } +}; + +/******************************************************************************* +* mcestimate_error: compute sigma from N,p,p2 in Gaussian large numbers approx +*******************************************************************************/ +double mcestimate_error(double N, double p1, double p2) +{ + double pmean, n1; + if(N <= 1) + return p1; + pmean = p1 / N; + n1 = N - 1; + /* Note: underflow may cause p2 to become zero; the fabs() below guards + against this. */ + return sqrt((N/n1)*fabs(p2 - pmean*pmean)); +} + +double (*mcestimate_error_p) + (double V2, double psum, double p2sum)=mcestimate_error; + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + +#ifndef MCCODE_R_IO_C +#define MCCODE_R_IO_C "$Revision$" + +/* SECTION: file i/o handling ================================================ */ + +#ifndef HAVE_STRCASESTR +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle) +{ + int nlen = strlen(needle); + int hlen = strlen(haystack) - nlen + 1; + int i; + + for (i = 0; i < hlen; i++) { + int j; + for (j = 0; j < nlen; j++) { + unsigned char c1 = haystack[i+j]; + unsigned char c2 = needle[j]; + if (toupper(c1) != toupper(c2)) + goto next; + } + return (char *) haystack + i; + next: + ; + } + return NULL; +} + + +#endif +#ifndef HAVE_STRCASECMP +int strcasecmp( const char *s1, const char *s2 ) +{ + int c1, c2; + do { + c1 = tolower( (unsigned char) *s1++ ); + c2 = tolower( (unsigned char) *s2++ ); + } while (c1 == c2 && c1 != 0); + return c2 > c1 ? -1 : c1 > c2; +} +#endif + +#ifndef STRACPY +/* this is a replacement to strncpy, but ensures that the copy ends with NULL */ +/* http://stracpy.blogspot.fr/2011/04/stracpy-strncpy-replacement.html */ +#define STRACPY +char *stracpy(char *destination, const char *source, size_t amount) +{ + if (!destination || !source || !amount) return(NULL); + while(amount--) + if((*destination++ = *source++) == '\0') break; + *destination = '\0'; + return destination; +} +#endif + +/******************************************************************************* +* mcfull_file: allocates a full file name=dirname+file. Catenate extension if missing. +*******************************************************************************/ +char *mcfull_file(char *name, char *ext) +{ + int dirlen=0; + char *mem =NULL; + + dirlen = dirname ? strlen(dirname) : 0; + mem = (char*)malloc(dirlen + strlen(name) + CHAR_BUF_LENGTH); + if(!mem) { + exit(-fprintf(stderr, "Error: Out of memory %li (mcfull_file)\n", (long)(dirlen + strlen(name) + 256))); + } + strcpy(mem, ""); + + /* prepend directory name to path if name does not contain a path */ + if (dirlen > 0 && !strchr(name, MC_PATHSEP_C)) { + strcat(mem, dirname); + strcat(mem, MC_PATHSEP_S); + } /* dirlen */ + + strcat(mem, name); + if (!strchr(name, '.') && ext && strlen(ext)) + { /* add extension if not in file name already */ + strcat(mem, "."); + strcat(mem, ext); + } + return(mem); +} /* mcfull_file */ + +/******************************************************************************* +* mcnew_file: opens a new file within dirname if non NULL +* the file is opened in "a" (append, create if does not exist) +* the extension 'ext' is added if the file name does not include one. +* the last argument is set to 0 if file did not exist, else to 1. +*******************************************************************************/ +FILE *mcnew_file(char *name, char *ext, int *exists) +{ + char *mem; + FILE *file=NULL; + + if (!name || strlen(name) == 0 || mcdisable_output_files) return(NULL); + + mem = mcfull_file(name, ext); /* create dirname/name.ext */ + + /* check for existence */ + file = fopen(mem, "r"); /* for reading -> fails if does not exist */ + if (file) { + fclose(file); + *exists=1; + } else + *exists=0; + + /* open the file for writing/appending */ +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + /* NXhandle nxhandle is defined in the .h with USE_NEXUS */ + NXaccess mode = (*exists ? NXACC_CREATE5 | NXACC_RDWR : NXACC_CREATE5); + + if (NXopen(mem, mode, &nxhandle) != NX_OK) + file = NULL; + else + file = (FILE*)&nxhandle; /* to make it non NULL */ + } else +#endif + file = fopen(mem, "a+"); + + if(!file) + fprintf(stderr, "Warning: could not open output file '%s' for %s (mcnew_file)\n", + mem, *exists ? "append" : "create"); + free(mem); + + return file; +} /* mcnew_file */ + +/******************************************************************************* +* mcdetector_statistics: compute detector statistics, error bars, [x I I_err N] 1D +* RETURN: updated detector structure +* Used by: detector_import +*******************************************************************************/ +MCDETECTOR mcdetector_statistics( + MCDETECTOR detector) +{ + + if (!detector.p1 || !detector.m) + return(detector); + + /* compute statistics and update MCDETECTOR structure ===================== */ + double sum_z = 0, min_z = 0, max_z = 0; + double fmon_x =0, smon_x = 0, fmon_y =0, smon_y=0, mean_z=0; + double Nsum=0, P2sum=0; + + double sum_xz = 0, sum_yz = 0, sum_x = 0, sum_y = 0, sum_x2z = 0, sum_y2z = 0; + int i,j; + char hasnan=0, hasinf=0; + char israw = ((char*)strcasestr(detector.format,"raw") != NULL); + double *this_p1=NULL; /* new 1D McCode array [x I E N]. Freed after writing data */ + + /* if McCode/PGPLOT and rank==1 we create a new m*4 data block=[x I E N] */ + if (detector.rank == 1 && strcasestr(detector.format,"McCode")) { + this_p1 = (double *)calloc(detector.m*detector.n*detector.p*4, sizeof(double)); + if (!this_p1) + exit(-fprintf(stderr, "Error: Out of memory creating %zi 1D " MCCODE_STRING " data set for file '%s' (detector_import)\n", + detector.m*detector.n*detector.p*4*sizeof(double*), detector.filename)); + } + + max_z = min_z = detector.p1[0]; + + /* compute sum and moments (not for lists) */ + if (!strcasestr(detector.format,"list") && detector.m) + for(j = 0; j < detector.n*detector.p; j++) + { + for(i = 0; i < detector.m; i++) + { + double x,y,z; + double N, E; + long index= !detector.istransposed ? i*detector.n*detector.p + j : i+j*detector.m; + char hasnaninf=0; + + if (detector.m) + x = detector.xmin + (i + 0.5)/detector.m*(detector.xmax - detector.xmin); + else x = 0; + if (detector.n && detector.p) + y = detector.ymin + (j + 0.5)/detector.n/detector.p*(detector.ymax - detector.ymin); + else y = 0; + z = detector.p1[index]; + N = detector.p0 ? detector.p0[index] : 1; + E = detector.p2 ? detector.p2[index] : 0; + if (detector.p2 && !israw) + detector.p2[index] = (*mcestimate_error_p)(detector.p0[index],detector.p1[index],detector.p2[index]); /* set sigma */ + + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + /* fill-in 1D McCode array [x I E N] */ + this_p1[index*4] = x; + this_p1[index*4+1] = z; + this_p1[index*4+2] = detector.p2 ? detector.p2[index] : 0; + this_p1[index*4+3] = N; + } + + if (isnan(z) || isnan(E) || isnan(N)) hasnaninf=hasnan=1; + if (isinf(z) || isinf(E) || isinf(N)) hasnaninf=hasinf=1; + + /* compute stats integrals */ + if (!hasnaninf) { + sum_xz += x*z; + sum_yz += y*z; + sum_x += x; + sum_y += y; + sum_z += z; + sum_x2z += x*x*z; + sum_y2z += y*y*z; + if (z > max_z) max_z = z; + if (z < min_z) min_z = z; + + Nsum += N; + P2sum += E; + } + + } + } /* for j */ + + /* compute 1st and 2nd moments. For lists, sum_z=0 so this is skipped. */ + if (sum_z && detector.n*detector.m*detector.p) + { + fmon_x = sum_xz/sum_z; + fmon_y = sum_yz/sum_z; + smon_x = sum_x2z/sum_z-fmon_x*fmon_x; smon_x = smon_x > 0 ? sqrt(smon_x) : 0; + smon_y = sum_y2z/sum_z-fmon_y*fmon_y; smon_y = smon_y > 0 ? sqrt(smon_y) : 0; + mean_z = sum_z/detector.n/detector.m/detector.p; + } + /* store statistics into detector */ + detector.intensity = sum_z; + detector.error = Nsum ? (*mcestimate_error_p)(Nsum, sum_z, P2sum) : 0; + detector.events = Nsum; + detector.min = min_z; + detector.max = max_z; + detector.mean = mean_z; + detector.centerX = fmon_x; + detector.halfwidthX= smon_x; + detector.centerY = fmon_y; + detector.halfwidthY= smon_y; + + /* if McCode/PGPLOT and rank==1 replace p1 with new m*4 1D McCode and clear others */ + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + + detector.p1 = this_p1; + detector.n = detector.m; detector.m = 4; + detector.p0 = detector.p2 = NULL; + detector.istransposed = 1; + } + + if (detector.n*detector.m*detector.p > 1) + snprintf(detector.signal, CHAR_BUF_LENGTH, + "Min=%g; Max=%g; Mean=%g;", detector.min, detector.max, detector.mean); + else + strcpy(detector.signal, "None"); + snprintf(detector.values, CHAR_BUF_LENGTH, + "%g %g %g", detector.intensity, detector.error, detector.events); + + switch (detector.rank) { + case 1: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g;", + detector.centerX, detector.halfwidthX); break; + case 2: + case 3: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g; Y0=%g; dY=%g;", + detector.centerX, detector.halfwidthX, detector.centerY, detector.halfwidthY); + break; + default: strcpy(detector.statistics, "None"); + } + + if (hasnan) + printf("WARNING: Nan detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + if (hasinf) + printf("WARNING: Inf detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + + return(detector); + +} /* mcdetector_statistics */ + +/******************************************************************************* +* detector_import: build detector structure, merge non-lists from MPI +* compute basic stat, write "Detector:" line +* RETURN: detector structure. Invalid data if detector.p1 == NULL +* Invalid detector sets m=0 and filename="" +* Simulation data sets m=0 and filename=siminfo_name +* This function is equivalent to the old 'mcdetector_out', returning a structure +*******************************************************************************/ +MCDETECTOR detector_import( + char *format, + char *component, char *title, + long m, long n, long p, + char *xlabel, char *ylabel, char *zlabel, + char *xvar, char *yvar, char *zvar, + double x1, double x2, double y1, double y2, double z1, double z2, + char *filename, + double *p0, double *p1, double *p2, + Coords position, Rotation rotation, int index) +{ + time_t t; /* for detector.date */ + long date_l; /* date as a long number */ + char istransposed=0; + char c[CHAR_BUF_LENGTH]; /* temp var for signal label */ + + MCDETECTOR detector; + + /* build MCDETECTOR structure ============================================= */ + /* make sure we do not have NULL for char fields */ + + /* these also apply to simfile */ + strncpy (detector.filename, filename ? filename : "", CHAR_BUF_LENGTH); + strncpy (detector.format, format ? format : "McCode" , CHAR_BUF_LENGTH); + /* add extension if missing */ + if (strlen(detector.filename) && !strchr(detector.filename, '.')) + { /* add extension if not in file name already */ + strcat(detector.filename, ".dat"); + } + strncpy (detector.component, component ? component : MCCODE_STRING " component", CHAR_BUF_LENGTH); + #ifdef USE_NEXUS + char pref[5]; + if (index-1 < 10) { + sprintf(pref,"000"); + } else if (index-1 < 100) { + sprintf(pref,"00"); + } else if (index-1 < 1000) { + sprintf(pref,"0"); + } else if (index-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(detector.nexuscomp,"%s%d_%s",pref,index-1,detector.component); + #endif + + snprintf(detector.instrument, CHAR_BUF_LENGTH, "%s (%s)", instrument_name, instrument_source); + snprintf(detector.user, CHAR_BUF_LENGTH, "%s on %s", + getenv("USER") ? getenv("USER") : MCCODE_NAME, + getenv("HOST") ? getenv("HOST") : "localhost"); + time(&t); /* get current write time */ + date_l = (long)t; /* same but as a long */ + snprintf(detector.date, CHAR_BUF_LENGTH, "%s", ctime(&t)); + if (strlen(detector.date)) detector.date[strlen(detector.date)-1] = '\0'; /* remove last \n in date */ + detector.date_l = date_l; + + if (!mcget_run_num() || mcget_run_num() >= mcget_ncount()) + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%llu", mcget_ncount() +#ifdef USE_MPI +*mpi_node_count +#endif + ); + else + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%g/%g", (double)mcget_run_num(), (double)mcget_ncount()); + + detector.p0 = p0; + detector.p1 = p1; + detector.p2 = p2; + + /* handle transposition (not for NeXus) */ + if (!strcasestr(detector.format, "NeXus")) { + if (m<0 || n<0 || p<0) istransposed = !istransposed; + if (strcasestr(detector.format, "transpose")) istransposed = !istransposed; + if (istransposed) { /* do the swap once for all */ + long i=m; m=n; n=i; + } + } + + m=labs(m); n=labs(n); p=labs(p); /* make sure dimensions are positive */ + detector.istransposed = istransposed; + + /* determine detector rank (dimensionality) */ + if (!m || !n || !p || !p1) detector.rank = 4; /* invalid: exit with m=0 filename="" */ + else if (m*n*p == 1) detector.rank = 0; /* 0D */ + else if (n == 1 || m == 1) detector.rank = 1; /* 1D */ + else if (p == 1) detector.rank = 2; /* 2D */ + else detector.rank = 3; /* 3D */ + + /* from rank, set type */ + switch (detector.rank) { + case 0: strcpy(detector.type, "array_0d"); m=n=p=1; break; + case 1: snprintf(detector.type, CHAR_BUF_LENGTH, "array_1d(%ld)", m*n*p); m *= n*p; n=p=1; break; + case 2: snprintf(detector.type, CHAR_BUF_LENGTH, "array_2d(%ld, %ld)", m, n*p); n *= p; p=1; break; + case 3: snprintf(detector.type, CHAR_BUF_LENGTH, "array_3d(%ld, %ld, %ld)", m, n, p); break; + default: m=0; strcpy(detector.type, ""); strcpy(detector.filename, "");/* invalid */ + } + + detector.m = m; + detector.n = n; + detector.p = p; + + /* these only apply to detector files ===================================== */ + + detector.Position[0]=position.x; + detector.Position[1]=position.y; + detector.Position[2]=position.z; + rot_copy(detector.Rotation,rotation); + snprintf(detector.position, CHAR_BUF_LENGTH, "%g %g %g", position.x, position.y, position.z); + /* may also store actual detector orientation in the future */ + + strncpy(detector.title, title && strlen(title) ? title : component, CHAR_BUF_LENGTH); + strncpy(detector.xlabel, xlabel && strlen(xlabel) ? xlabel : "X", CHAR_BUF_LENGTH); /* axis labels */ + strncpy(detector.ylabel, ylabel && strlen(ylabel) ? ylabel : "Y", CHAR_BUF_LENGTH); + strncpy(detector.zlabel, zlabel && strlen(zlabel) ? zlabel : "Z", CHAR_BUF_LENGTH); + strncpy(detector.xvar, xvar && strlen(xvar) ? xvar : "x", CHAR_BUF_LENGTH); /* axis variables */ + strncpy(detector.yvar, yvar && strlen(yvar) ? yvar : detector.xvar, CHAR_BUF_LENGTH); + strncpy(detector.zvar, zvar && strlen(zvar) ? zvar : detector.yvar, CHAR_BUF_LENGTH); + + /* set "variables" as e.g. "I I_err N" */ + strcpy(c, "I "); + if (strlen(detector.zvar)) strncpy(c, detector.zvar,32); + else if (strlen(detector.yvar)) strncpy(c, detector.yvar,32); + else if (strlen(detector.xvar)) strncpy(c, detector.xvar,32); + + if (detector.rank == 1) + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s %s_err N", detector.xvar, c, c); + else + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s_err N", c, c); + + /* limits */ + detector.xmin = x1; + detector.xmax = x2; + detector.ymin = y1; + detector.ymax = y2; + detector.zmin = z1; + detector.zmax = z2; + if (abs(detector.rank) == 1) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g", x1, x2); + else if (detector.rank == 2) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g", x1, x2, y1, y2); + else + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g %g %g", x1, x2, y1, y2, z1, z2); + + /* if MPI and nodes_nb > 1: reduce data sets when using MPI =============== */ +#ifdef USE_MPI + if (!strcasestr(detector.format,"list") && mpi_node_count > 1 && m) { + /* we save additive data: reduce everything into mpi_node_root */ + if (p0) mc_MPI_Sum(p0, m*n*p); + if (p1) mc_MPI_Sum(p1, m*n*p); + if (p2) mc_MPI_Sum(p2, m*n*p); + if (!p0) { /* additive signal must be then divided by the number of nodes */ + int i; + for (i=0; i CHAR_BUF_LENGTH) break; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(Parameters) + strlen(ThisParam) + 1 >= CHAR_BUF_LENGTH) break; + strcat(Parameters, ThisParam); + } + + /* output data ============================================================ */ + if (f != stdout) + fprintf(f, "%sFile: %s%c%s\n", pre, dirname, MC_PATHSEP_C, siminfo_name); + else + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + + fprintf(f, "%sSource: %s\n", pre, instrument_source); + fprintf(f, "%sParameters: %s\n", pre, Parameters); + + fprintf(f, "%sTrace_enabled: %s\n", pre, traceenabled ? "yes" : "no"); + fprintf(f, "%sDefault_main: %s\n", pre, defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "yes"); +#else + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "no"); +#endif + + fflush(f); +} /* mcinfo_out */ + +/******************************************************************************* +* mcruninfo_out: output simulation tags/info (both in SIM and data files) +* Used in: siminfo_init (ascii case), mcdetector_out_xD_ascii +*******************************************************************************/ +static void mcruninfo_out(char *pre, FILE *f) +{ + int i; + char Parameters[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + fprintf(f, "%sFormat: %s%s\n", pre, + mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME, + mcformat && strcasestr(mcformat,"McCode") ? " with text headers" : ""); + fprintf(f, "%sURL: %s\n", pre, "http://www.mccode.org"); + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + fprintf(f, "%sInstrument: %s\n", pre, instrument_source); + fprintf(f, "%sNcount: %llu\n", pre, mcget_ncount()); + fprintf(f, "%sTrace: %s\n", pre, mcdotrace ? "yes" : "no"); + fprintf(f, "%sGravitation: %s\n", pre, mcgravitation ? "yes" : "no"); + #ifdef TOF_TRAIN + fprintf(f, "%sTOF_TRAIN: %d\n", pre, NTOF); + #endif + snprintf(Parameters, CHAR_BUF_LENGTH, "%ld", mcseed); + fprintf(f, "%sSeed: %s\n", pre, Parameters); + fprintf(f, "%sDirectory: %s\n", pre, dirname ? dirname : "."); +#ifdef USE_MPI + if (mpi_node_count > 1) + fprintf(f, "%sNodes: %i\n", pre, mpi_node_count); +#endif + + // TODO Consider replacing this by a a call to `mcparameterinfo_out(pre+"Param: ", f)` + /* output parameter string ================================================ */ + for(i = 0; i < numipar; i++) { + if (mcinputtable[i].par){ + /* Parameters with a default value */ + if(mcinputtable[i].val && strlen(mcinputtable[i].val)){ + (*mcinputtypes[mcinputtable[i].type].printer)(Parameters, mcinputtable[i].par); + fprintf(f, "%sParam: %s=%s\n", pre, mcinputtable[i].name, Parameters); + /* ... and those without */ + }else{ + fprintf(f, "%sParam: %s=NULL\n", pre, mcinputtable[i].name); + } + } + } + fflush(f); +} /* mcruninfo_out */ + +/******************************************************************************* + * @brief Print parameter information to the specified file + * @param pre any beginning-of-line padding + * @param f the output file + */ +static void mcparameterinfo_out(char * pre, FILE *f){ + if (!f || mcdisable_output_files) return; + + unsigned int nchar = 4; + for (int i=0; i < numipar; ++i){ + if (mcinputtable[i].par && mcinputtable[i].val && strlen(mcinputtable[i].val) > nchar) + nchar = strlen(mcinputtable[i].val); + } + char * buffer = calloc(nchar+1, sizeof(char)); + + if (!buffer) { + exit(1); + } + + for (int i=0; i < numipar; ++i) { + if (mcinputtable[i].par) { + char * name = mcinputtable[i].name; + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + mcinputtypes[mcinputtable[i].type].printer(buffer, mcinputtable[i].par); + } else { + strcpy(buffer, "NULL"); + } + if (strlen(mcinputtable[i].unit)){ + //fprintf(f, "%s%s %s (\"%s\") = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + fprintf(f, "%s%s %s/\"%s\" = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + } else { + fprintf(f, "%s%s %s = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, buffer); + } + } + } + + free(buffer); +} + +/******************************************************************************* +* siminfo_out: wrapper to fprintf(siminfo_file) +*******************************************************************************/ +void siminfo_out(char *format, ...) +{ + va_list ap; + + if(siminfo_file && !mcdisable_output_files) + { + va_start(ap, format); + vfprintf(siminfo_file, format, ap); + va_end(ap); + } +} /* siminfo_out */ + + +/******************************************************************************* +* mcdatainfo_out: output detector header +* mcdatainfo_out(prefix, file_handle, detector) writes info to data file +*******************************************************************************/ +static void +mcdatainfo_out(char *pre, FILE *f, MCDETECTOR detector) +{ + if (!f || !detector.m || mcdisable_output_files) return; + + /* output data ============================================================ */ + fprintf(f, "%sDate: %s (%li)\n", pre, detector.date, detector.date_l); + fprintf(f, "%stype: %s\n", pre, detector.type); + fprintf(f, "%sSource: %s\n", pre, detector.instrument); + fprintf(f, "%scomponent: %s\n", pre, detector.component); + fprintf(f, "%sposition: %s\n", pre, detector.position); + + fprintf(f, "%stitle: %s\n", pre, detector.title); + fprintf(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "%sNcount: %s\n" : + "%sratio: %s\n", pre, detector.ncount); + + if (strlen(detector.filename)) { + fprintf(f, "%sfilename: %s\n", pre, detector.filename); + } + + fprintf(f, "%sstatistics: %s\n", pre, detector.statistics); + fprintf(f, "%ssignal: %s\n", pre, detector.signal); + fprintf(f, "%svalues: %s\n", pre, detector.values); + + if (detector.rank >= 1) + { + fprintf(f, "%sxvar: %s\n", pre, detector.xvar); + fprintf(f, "%syvar: %s\n", pre, detector.yvar); + fprintf(f, "%sxlabel: %s\n", pre, detector.xlabel); + fprintf(f, "%sylabel: %s\n", pre, detector.ylabel); + if (detector.rank > 1) { + fprintf(f, "%szvar: %s\n", pre, detector.zvar); + fprintf(f, "%szlabel: %s\n", pre, detector.zlabel); + } + } + + fprintf(f, + abs(detector.rank)==1 ? + "%sxlimits: %s\n" : + "%sxylimits: %s\n", pre, detector.limits); + fprintf(f, "%svariables: %s\n", pre, + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + fflush(f); + +} /* mcdatainfo_out */ + +/* mcdetector_out_array_ascii: output a single array to a file + * m: columns + * n: rows + * p: array + * f: file handle (already opened) + */ +static void mcdetector_out_array_ascii(long m, long n, double *p, FILE *f, char istransposed) +{ + if(f) + { + int i,j; + for(j = 0; j < n; j++) + { + for(i = 0; i < m; i++) + { + fprintf(f, "%.10g ", p[!istransposed ? i*n + j : j*m+i]); + } + fprintf(f,"\n"); + } + } +} /* mcdetector_out_array_ascii */ + +/******************************************************************************* +* mcdetector_out_0D_ascii: called by mcdetector_out_0D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + /* Write data set information to simulation description file. */ + MPI_MASTER( + siminfo_out("\nbegin data\n"); // detector.component + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.component, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* write I I_err N */ + fprintf(outfile, "%g %g %g\n", + detector.intensity, detector.error, detector.events); + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); +} /* mcdetector_out_0D_ascii */ + +/******************************************************************************* +* mcdetector_out_1D_ascii: called by mcdetector_out_1D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* output the 1D array columns */ + mcdetector_out_array_ascii(detector.m, detector.n, detector.p1, outfile, detector.istransposed); + + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); + +} /* mcdetector_out_1D_ascii */ + +/******************************************************************************* +* mcdetector_out_2D_ascii: called by mcdetector_out_2D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write header only if file has just been created (not appending) */ + if (!exists) { + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + } + /* Add # Data entry for any write to the file (e.g. via -USR2, see GitHub issue #2174 ) */ + fprintf(outfile, "# Data [%s/%s] %s:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p1, + outfile, detector.istransposed); + if (detector.p2) { + fprintf(outfile, "# Errors [%s/%s] %s_err:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p2, + outfile, detector.istransposed); + } + if (detector.p0) { + fprintf(outfile, "# Events [%s/%s] N:\n", detector.component, detector.filename); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p0, + outfile, detector.istransposed); + } + fclose(outfile); + + if (!exists) { + if (strcasestr(detector.format, "list")) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } + } /* if outfile */ + ); /* MPI_MASTER */ +#ifdef USE_MPI + if (strcasestr(detector.format, "list") && mpi_node_count > 1) { + int node_i=0; + /* loop along MPI nodes to write sequentially */ + for(node_i=0; node_i strlen(original)) n = strlen(original); + else original += strlen(original)-n; + strncpy(valid, original, n); + + for (i=0; i < n; i++) + { + if ( (valid[i] > 122) + || (valid[i] < 32) + || (strchr("!\"#$%&'()*+,-.:;<=>?@[\\]^`/ \n\r\t", valid[i]) != NULL) ) + { + if (i) valid[i] = '_'; else valid[i] = 'm'; + } + } + valid[i] = '\0'; + + return(valid); +} /* strcpy_valid */ + +/* end ascii output section ================================================= */ + + + + + + + +#ifdef USE_NEXUS + +/* ========================================================================== */ + +/* NeXus output */ + +/* ========================================================================== */ + +#define nxprintf(...) nxstr('d', __VA_ARGS__) +#define nxprintattr(...) nxstr('a', __VA_ARGS__) + +/******************************************************************************* +* nxstr: output a tag=value data set (char) in NeXus/current group +* when 'format' is larger that 1024 chars it is used as value for the 'tag' +* else the value is assembled with format and following arguments. +* type='d' -> data set +* 'a' -> attribute for current data set +*******************************************************************************/ +static int nxstr(char type, NXhandle *f, char *tag, char *format, ...) +{ + va_list ap; + char value[CHAR_BUF_LENGTH]; + int i; + int ret=NX_OK; + + if (!tag || !format || !strlen(tag) || !strlen(format)) return(NX_OK); + + /* assemble the value string */ + if (strlen(format) < CHAR_BUF_LENGTH) { + va_start(ap, format); + ret = vsnprintf(value, CHAR_BUF_LENGTH, format, ap); + va_end(ap); + + i = strlen(value); + } else { + i = strlen(format); + } + + if (type == 'd') { + /* open/put/close data set */ + if (NXmakedata (f, tag, NX_CHAR, 1, &i) != NX_OK) return(NX_ERROR); + NXopendata (f, tag); + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputdata (f, value); + else + ret = NXputdata (f, format); + NXclosedata(f); + } else { + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputattr (f, tag, value, strlen(value), NX_CHAR); + else + ret = NXputattr (f, tag, format, strlen(format), NX_CHAR); + } + + return(ret); + +} /* nxstr */ + +/******************************************************************************* +* mcinfo_readfile: read a full file into a string buffer which is allocated +* Think to free the buffer after use. +* Used in: mcinfo_out_nexus (nexus) +*******************************************************************************/ +char *mcinfo_readfile(char *filename) +{ + FILE *f = fopen(filename, "rb"); + if (!f) return(NULL); + fseek(f, 0, SEEK_END); + long fsize = ftell(f); + rewind(f); + char *string = malloc(fsize + 1); + if (string) { + int n = fread(string, fsize, 1, f); + fclose(f); + + string[fsize] = 0; + } + return(string); +} + +/******************************************************************************* +* mcinfo_out: output instrument/simulation groups in NeXus file +* Used in: siminfo_init (nexus) +*******************************************************************************/ +static void mcinfo_out_nexus(NXhandle f) +{ + FILE *fid; /* for intrument source code/C/IDF */ + char *buffer=NULL; + time_t t =time(NULL); /* for date */ + char entry0[CHAR_BUF_LENGTH]; + int count=0; + char name[CHAR_BUF_LENGTH]; + char class[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + /* write NeXus NXroot attributes */ + /* automatically added: file_name, HDF5_Version, file_time, NeXus_version */ + nxprintattr(f, "creator", "%s generated with " MCCODE_STRING, instrument_name); + + /* count the number of existing NXentry and create the next one */ + NXgetgroupinfo(f, &count, name, class); + sprintf(entry0, "entry%i", count+1); + + /* create the main NXentry (mandatory in NeXus) */ + if (NXmakegroup(f, entry0, "NXentry") == NX_OK) + if (NXopengroup(f, entry0, "NXentry") == NX_OK) { + nxprintf(nxhandle, "program_name", MCCODE_STRING); + nxprintf(f, "start_time", ctime(&t)); + nxprintf(f, "title", "%s%s%s simulation generated by instrument %s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name, + instrument_name); + nxprintattr(f, "program_name", MCCODE_STRING); + nxprintattr(f, "instrument", instrument_name); + nxprintattr(f, "simulation", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + /* write NeXus instrument group */ + if (NXmakegroup(f, "instrument", "NXinstrument") == NX_OK) + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + int i; + char *string=NULL; + + /* write NeXus parameters(types) data =================================== */ + string = (char*)malloc(CHAR_BUF_LENGTH); + if (string) { + strcpy(string, ""); + for(i = 0; i < numipar; i++) + { + char ThisParam[CHAR_BUF_LENGTH]; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(string) + strlen(ThisParam) < CHAR_BUF_LENGTH) + strcat(string, ThisParam); + } + nxprintattr(f, "Parameters", string); + free(string); + } + + nxprintattr(f, "name", instrument_name); + nxprintf (f, "name", instrument_name); + nxprintattr(f, "Source", instrument_source); + + nxprintattr(f, "Trace_enabled", traceenabled ? "yes" : "no"); + nxprintattr(f, "Default_main", defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + nxprintattr(f, "Embedded_runtime", "yes"); +#else + nxprintattr(f, "Embedded_runtime", "no"); +#endif + + /* add instrument source code when available */ + buffer = mcinfo_readfile(instrument_source); + if (buffer && strlen(buffer)) { + long length=strlen(buffer); + nxprintf (f, "description", buffer); + NXopendata(f,"description"); + nxprintattr(f, "file_name", instrument_source); + nxprintattr(f, "file_size", "%li", length); + nxprintattr(f, "MCCODE_STRING", MCCODE_STRING); + NXclosedata(f); + nxprintf (f,"instrument_source", "%s " MCCODE_NAME " " MCCODE_PARTICLE " Monte Carlo simulation", instrument_name); + free(buffer); + } else + nxprintf (f, "description", "File %s not found (instrument description %s is missing)", + instrument_source, instrument_name); + + if (mcnexus_embed_idf) { + /* add Mantid/IDF.xml when available */ + char *IDFfile=NULL; + IDFfile = (char*)malloc(CHAR_BUF_LENGTH); + sprintf(IDFfile,"%s%s",instrument_source,".xml"); + buffer = mcinfo_readfile(IDFfile); + if (buffer && strlen(buffer)) { + NXmakegroup (nxhandle, "instrument_xml", "NXnote"); + NXopengroup (nxhandle, "instrument_xml", "NXnote"); + nxprintf(f, "data", buffer); + nxprintf(f, "description", "IDF.xml file found with instrument %s", instrument_source); + nxprintf(f, "type", "text/xml"); + NXclosegroup(f); /* instrument_xml */ + free(buffer); + } + free(IDFfile); + } + + /* Add "components" entry */ + if (NXmakegroup(f, "components", "NXdata") == NX_OK) { + NXopengroup(f, "components", "NXdata"); + nxprintattr(f, "description", "Component list for instrument %s", instrument_name); + NXclosegroup(f); /* components */ + } else { + printf("Failed to create NeXus component hierarchy\n"); + } + NXclosegroup(f); /* instrument */ + } /* NXinstrument */ + + /* write NeXus simulation group */ + if (NXmakegroup(f, "simulation", "NXnote") == NX_OK) + if (NXopengroup(f, "simulation", "NXnote") == NX_OK) { + + nxprintattr(f, "name", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + nxprintf (f, "name", "%s", siminfo_name); + nxprintattr(f, "Format", mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME); + nxprintattr(f, "URL", "http://www.mccode.org"); + nxprintattr(f, "program", MCCODE_STRING); + nxprintattr(f, "Instrument",instrument_source); + nxprintattr(f, "Trace", mcdotrace ? "yes" : "no"); + nxprintattr(f, "Gravitation",mcgravitation ? "yes" : "no"); + nxprintattr(f, "Seed", "%li", mcseed); + nxprintattr(f, "Directory", dirname); + #ifdef USE_MPI + if (mpi_node_count > 1) + nxprintf(f, "Nodes", "%i", mpi_node_count); + #endif + + /* output parameter string ================================================ */ + if (NXmakegroup(f, "Param", "NXparameters") == NX_OK) { + NXopengroup(f,"Param", "NXparameters"); + int i; + char string[CHAR_BUF_LENGTH]; + for(i = 0; i < numipar; i++) { + if (mcget_run_num() || (mcinputtable[i].val && strlen(mcinputtable[i].val))) { + if (mcinputtable[i].par == NULL) + strncpy(string, (mcinputtable[i].val ? mcinputtable[i].val : ""), CHAR_BUF_LENGTH); + else + (*mcinputtypes[mcinputtable[i].type].printer)(string, mcinputtable[i].par); + + nxprintf(f, mcinputtable[i].name, "%s", string); + nxprintattr(f, mcinputtable[i].name, string); + } + } + NXclosegroup(f); /* Param */ + } /* NXparameters */ + NXclosegroup(f); /* simulation */ + } /* NXsimulation */ + + /* create a group to hold all links for all monitors */ + NXmakegroup(f, "data", "NXdetector"); + + /* leave the NXentry opened (closed at exit) */ + } /* NXentry */ +} /* mcinfo_out_nexus */ + +/******************************************************************************* +* mccomp_placement_type_nexus: +* Places +* - absolute (3x1) position +* - absolute (3x3) rotation +* - type / class of component instance into attributes under +* entry/instrument/compname +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_placement_type_nexus(NXhandle nxhandle, char* component, Coords position, Rotation rotation, char* comptype) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, component, "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + int64_t pdims[3]; pdims[0]=3; pdims[1]=0; pdims[2]=0; + if (NXcompmakedata64(nxhandle, "Position", NX_FLOAT64, 1, pdims, NX_COMPRESSION, pdims) == NX_OK) { + if (NXopendata(nxhandle, "Position") == NX_OK) { + double pos[3]; coords_get(position, &pos[0], &pos[1], &pos[2]); + if (NXputdata (nxhandle, pos) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Position field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Position field for component %s\n",component); + } + } + int64_t rdims[3]; rdims[0]=3; rdims[1]=3; rdims[2]=0; + if (NXcompmakedata64(nxhandle, "Rotation", NX_FLOAT64, 2, rdims, NX_COMPRESSION, rdims) == NX_OK) { + if (NXopendata(nxhandle, "Rotation") == NX_OK) { + if (NXputdata (nxhandle, rotation) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Rotation field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Rotation field for component %s\n",component); + } + } + nxprintf(nxhandle, "Component_type", comptype); + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + } else { + printf("FAILED to create comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } + #endif +} /* mccomp_placement_nexus */ + +/******************************************************************************* +* mccomp_param_nexus: +* Output parameter/value pair for component instance into +* the attribute +* entry/instrument/compname/parameter +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_param_nexus(NXhandle nxhandle, char* component, char* parameter, char* defval, char* value, char* type) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(nxhandle, "parameters", "NXdata"); + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + if (NXopengroup(nxhandle, "parameters", "NXdata") == NX_OK) { + NXmakegroup(nxhandle, parameter, "NXnote"); + if (NXopengroup(nxhandle, parameter, "NXnote") == NX_OK) { + nxprintattr(nxhandle, "type", type); + nxprintattr(nxhandle, "default", defval); + nxprintattr(nxhandle, "value", value); + NXclosegroup(nxhandle); // parameter + } else { + printf("FAILED to open parameters %s data group \n",parameter); + } + NXclosegroup(nxhandle); // "parameters" + } else { + printf("FAILED to open comp/parameters data group \n"); + } + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } +#endif +} /* mccomp_param_nexus */ + +/******************************************************************************* +* mcdatainfo_out_nexus: output detector header +* mcdatainfo_out_nexus(detector) create group and write info to NeXus data file +* open data:NXdetector then filename:NXdata and write headers/attributes +* requires: NXentry to be opened +*******************************************************************************/ +static void +mcdatainfo_out_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + if (!f || !detector.m || mcdisable_output_files) return; + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(f, detector.nexuscomp, "NXdata"); + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + NXmakegroup(f, "output", "NXdetector"); + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + if (NXmakegroup(f, data_name, "NXdata") == NX_OK) { + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + /* output metadata (as attributes) ======================================== */ + nxprintattr(f, "Date", detector.date); + nxprintattr(f, "type", detector.type); + nxprintattr(f, "Source", detector.instrument); + nxprintattr(f, "component", detector.component); + nxprintattr(f, "position", detector.position); + + nxprintattr(f, "title", detector.title); + nxprintattr(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "Ncount" : + "ratio", detector.ncount); + + if (strlen(detector.filename)) { + nxprintattr(f, "filename", detector.filename); + } + + nxprintattr(f, "statistics", detector.statistics); + nxprintattr(f, "signal", detector.signal); + nxprintattr(f, "values", detector.values); + + if (detector.rank >= 1) + { + nxprintattr(f, "xvar", detector.xvar); + nxprintattr(f, "yvar", detector.yvar); + nxprintattr(f, "xlabel", detector.xlabel); + nxprintattr(f, "ylabel", detector.ylabel); + if (detector.rank > 1) { + nxprintattr(f, "zvar", detector.zvar); + nxprintattr(f, "zlabel", detector.zlabel); + } + } + + nxprintattr(f, abs(detector.rank)==1 ? + "xlimits" : + "xylimits", detector.limits); + nxprintattr(f, "variables", + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + NXclosegroup(f); // data_name + } + } + } + NXclosegroup(f); // output + NXclosegroup(f); // detector.nexuscomp + } + NXclosegroup(f); // components + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + NXclosegroup(f); // instrument + } /* NXdetector (instrument) */ +} /* mcdatainfo_out_nexus */ + +/******************************************************************************* +* mcdetector_out_axis_nexus: write detector axis into current NXdata +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_axis_nexus(NXhandle f, char *label, char *var, int rank, long length, double min, double max) +{ + if (!f || length <= 1 || mcdisable_output_files || max == min) return(NX_OK); + else { + double *axis; + axis=malloc(sizeof(double)*length); + if (!axis ) { + printf("Fatal memory error allocating NeXus axis of length %li, exiting!\n", length); + return(NX_ERROR); + } + char *valid; + valid=malloc(sizeof(char)*CHAR_BUF_LENGTH); + if (!valid ) { + printf("Fatal memory error allocating label axis of length %li, exiting!\n", CHAR_BUF_LENGTH); + free(axis); + return(NX_ERROR); + } + int dim=(int)length; + int i; + int nprimary=1; + /* create an axis from [min:max] */ + for(i = 0; i < length; i++) + axis[i] = min+(max-min)*(i+0.5)/length; + /* create the data set */ + strcpy_valid(valid, label); + NXcompmakedata(f, valid, NX_FLOAT64, 1, &dim, NX_COMPRESSION, &dim); + /* open it */ + if (NXopendata(f, valid) != NX_OK) { + fprintf(stderr, "Warning: could not open axis rank %i '%s' (NeXus)\n", + rank, valid); + free(axis); + free(valid); + return(NX_ERROR); + } + /* put the axis and its attributes */ + NXputdata (f, axis); + nxprintattr(f, "long_name", label); + nxprintattr(f, "short_name", var); + NXputattr (f, "axis", &rank, 1, NX_INT32); + nxprintattr(f, "units", var); + NXputattr (f, "primary", &nprimary, 1, NX_INT32); + NXclosedata(f); + free(axis); + free(valid); + return(NX_OK); + } +} /* mcdetector_out_axis_nexus */ + +/******************************************************************************* +* mcdetector_out_array_nexus: write detector array into current NXdata (1D,2D) +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_array_nexus(NXhandle f, char *part, double *data, MCDETECTOR detector) +{ + + int64_t dims[3]={detector.m,detector.n,detector.p}; /* number of elements to write */ + int64_t fulldims[3]={detector.m,detector.n,detector.p}; + int signal=1; + int exists=0; + int64_t current_dims[3]={0,0,0}; + int ret=NX_OK; + + if (!f || !data || !detector.m || mcdisable_output_files) return(NX_OK); + + /* when this is a list, we set 1st dimension to NX_UNLIMITED for creation */ + if (strcasestr(detector.format, "list")) fulldims[0] = NX_UNLIMITED; + + /* create the data set in NXdata group */ + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + ret = NXcompmakedata64(f, part, NX_FLOAT64, detector.rank, fulldims, NX_COMPRESSION, dims); + if (ret != NX_OK) { + /* failed: data set already exists */ + int datatype=0; + int rank=0; + exists=1; + /* inquire current size of data set (nb of events stored) */ + NXopendata(f, part); + NXgetinfo64(f, &rank, current_dims, &datatype); + NXclosedata(f); + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + + /* open the data set */ + if (NXopendata(f, part) == NX_ERROR) { + fprintf(stderr, "Warning: could not open DataSet %s '%s' (NeXus)\n", + part, detector.title); + return(NX_ERROR); + } + if (strcasestr(detector.format, "list")) { + current_dims[1] = current_dims[2] = 0; /* set starting location for writing slab */ + NXputslab64(f, data, current_dims, dims); + if (!exists) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + else + printf("Append: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } else { + NXputdata (f, data); + } + + if (strstr(part,"data") || strstr(part, "events")) { + NXputattr(f, "signal", &signal, 1, NX_INT32); + nxprintattr(f, "short_name", strlen(detector.filename) ? + detector.filename : detector.component); + } + nxprintattr(f, "long_name", "%s '%s'", part, detector.title); + NXclosedata(f); + + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +/******************************************************************************* +* mcdetector_out_data_nexus: write detector axes+data into current NXdata +* The data:NXdetector is opened, then filename:NXdata +* requires: NXentry to be opened +*******************************************************************************/ +int mcdetector_out_data_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + + if (!f || !detector.m || mcdisable_output_files) return(NX_OK); + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + NXlink pLink; + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + + /* the NXdata group has been created in mcdatainfo_out_nexus */ + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + + MPI_MASTER( + nxprintattr(f, "options", + strlen(detector.options) ? detector.options : "None"); + ); + /* write axes, for histogram data sets, not for lists */ + if (!strcasestr(detector.format, "list")) { + mcdetector_out_axis_nexus(f, detector.xlabel, detector.xvar, + 1, detector.m, detector.xmin, detector.xmax); + mcdetector_out_axis_nexus(f, detector.ylabel, detector.yvar, + 2, detector.n, detector.ymin, detector.ymax); + mcdetector_out_axis_nexus(f, detector.zlabel, detector.zvar, + 3, detector.p, detector.zmin, detector.zmax); + } else { + MPI_MASTER( + nxprintattr(f, "dataset columns", + strlen(detector.ylabel) ? detector.ylabel : "None"); + ); + } + + /* write the actual data (appended if already exists) */ + if (!strcasestr(detector.format, "list") && !strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus(f, "data", detector.p1, detector); + mcdetector_out_array_nexus(f, "errors", detector.p2, detector); + mcdetector_out_array_nexus(f, "ncount", detector.p0, detector); + } else if (strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus( f, "pixels", detector.p1, detector); + } else { + mcdetector_out_array_nexus( f, "events", detector.p1, detector); + } + NXclosegroup(f); + NXopengroup(f, data_name, "NXdata"); + NXgetgroupID(nxhandle, &pLink); + NXclosegroup(f); + } /* NXdata data_name*/ + NXclosegroup(f); + } /* NXdetector output */ + NXclosegroup(f); + } /* NXdata detector.nexuscomp */ + NXclosegroup(f); + } /* NXdata components */ + NXclosegroup(f); + } /* NXdata instrument */ + + if (!strcasestr(detector.format, "pixels")) { + if (NXopengroup(f, "data", "NXdetector") == NX_OK) { + NXmakelink(nxhandle, &pLink); + NXclosegroup(f); + } + } + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +#ifdef USE_MPI +/******************************************************************************* +* mcdetector_out_list_slaves: slaves send their list data to master which writes +* requires: NXentry to be opened +* WARNING: this method has a flaw: it requires all nodes to flush the lists +* the same number of times. In case one node is just below the buffer size +* when finishing (e.g. monitor_nd), it may not trigger save but others may. +* Then the number of recv/send is not constant along nodes, and simulation stalls. +*******************************************************************************/ +MCDETECTOR mcdetector_out_list_slaves(MCDETECTOR detector) +{ + int node_i=0; + MPI_MASTER( + printf("\n** MPI master gathering slave node list data ** \n"); + ); + + if (mpi_node_rank != mpi_node_root) { + /* MPI slave: slaves send their data to master: 2 MPI_Send calls */ + /* m, n, p must be sent first, since all slaves do not have the same number of events */ + int mnp[3]={detector.m,detector.n,detector.p}; + + if (mc_MPI_Send(mnp, 3, MPI_INT, mpi_node_root)!= MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send mnp list error (mcdetector_out_list_slaves)\n", mpi_node_rank); + if (!detector.p1 + || mc_MPI_Send(detector.p1, mnp[0]*mnp[1]*mnp[2], MPI_DOUBLE, mpi_node_root) != MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send p1 list error: mnp=%i (mcdetector_out_list_slaves)\n", mpi_node_rank, abs(mnp[0]*mnp[1]*mnp[2])); + /* slaves are done: sent mnp and p1 */ + } /* end slaves */ + + /* MPI master: receive data from slaves sequentially: 2 MPI_Recv calls */ + + if (mpi_node_rank == mpi_node_root) { + for(node_i=0; node_i 1) { + mcdetector_out_list_slaves(detector); + } +#endif /* USE_MPI */ + + return(detector); +} /* mcdetector_out_2D_nexus */ + +MCDETECTOR mcdetector_out_3D_nexus(MCDETECTOR detector) +{ + printf("Received detector from %s\n",detector.component); + MPI_MASTER( + mcdatainfo_out_nexus(nxhandle, detector); + mcdetector_out_data_nexus(nxhandle, detector); + ); + return(detector); +} /* mcdetector_out_3D_nexus */ + + +#endif /* USE_NEXUS*/ + + + + + + + + +/* ========================================================================== */ + +/* Main input functions */ +/* DETECTOR_OUT_xD function calls -> ascii or NeXus */ + +/* ========================================================================== */ + +/******************************************************************************* +* siminfo_init: open SIM and write header +*******************************************************************************/ +FILE *siminfo_init(FILE *f) +{ + int exists=0; + + /* check format */ + if (!mcformat || !strlen(mcformat) + || !strcasecmp(mcformat, "MCSTAS") || !strcasecmp(mcformat, "MCXTRACE") + || !strcasecmp(mcformat, "PGPLOT") || !strcasecmp(mcformat, "GNUPLOT") || !strcasecmp(mcformat, "MCCODE") + || !strcasecmp(mcformat, "MATLAB")) { + mcformat="McCode"; +#ifdef USE_NEXUS + } else if (strcasestr(mcformat, "NeXus")) { + /* Do nothing */ +#endif + } else { + fprintf(stderr, + "Warning: You have requested the output format %s which is unsupported by this binary. Resetting to standard %s format.\n",mcformat ,"McCode"); + mcformat="McCode"; + } + + /* open the SIM file if not defined yet */ + if (siminfo_file || mcdisable_output_files) + return (siminfo_file); + +#ifdef USE_NEXUS + /* only master writes NeXus header: calls NXopen(nxhandle) */ + if (mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + siminfo_file = mcnew_file(siminfo_name, "h5", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + mcinfo_out_nexus(nxhandle); + ); + return(siminfo_file); /* points to nxhandle */ + } +#endif + + /* write main description file (only MASTER) */ + MPI_MASTER( + + siminfo_file = mcnew_file(siminfo_name, "sim", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + { + /* write SIM header */ + time_t t=time(NULL); + siminfo_out("%s simulation description file for %s.\n", + MCCODE_NAME, instrument_name); + siminfo_out("Date: %s", ctime(&t)); /* includes \n */ + siminfo_out("Program: %s\n\n", MCCODE_STRING); + + siminfo_out("begin instrument: %s\n", instrument_name); + mcinfo_out( " ", siminfo_file); + siminfo_out("end instrument\n"); + + siminfo_out("\nbegin simulation: %s\n", dirname); + mcruninfo_out(" ", siminfo_file); + siminfo_out("end simulation\n"); + + } + ); /* MPI_MASTER */ + return (siminfo_file); + +} /* siminfo_init */ + +/******************************************************************************* +* siminfo_close: close SIM +*******************************************************************************/ +void siminfo_close() +{ +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(siminfo_file && !mcdisable_output_files) { +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + time_t t=time(NULL); + nxprintf(nxhandle, "end_time", ctime(&t)); + nxprintf(nxhandle, "duration", "%li", (long)t-mcstartdate); + NXclosegroup(nxhandle); /* NXentry */ + NXclose(&nxhandle); + } else { +#endif + fclose(siminfo_file); +#ifdef USE_NEXUS + } +#endif +#ifdef USE_MPI + } +#endif + siminfo_file = NULL; + } +} /* siminfo_close */ + +/******************************************************************************* +* mcdetector_out_0D: wrapper for 0D (single value). +* Output single detector/monitor data (p0, p1, p2). +* Title is t, component name is c. +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI reduce) */ + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " data"), + 1, 1, 1, + "I", "", "", + "I", "", "", + 0, 0, 0, 0, 0, 0, c, + &p0, &p1, &p2, posa, rota, index); /* write Detector: line */ + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_0D_nexus(detector)); + else +#endif + return(mcdetector_out_0D_ascii(detector)); + +} /* mcdetector_out_0D */ + + + +/******************************************************************************* +* mcdetector_out_1D: wrapper for 1D. +* Output 1d detector data (p0, p1, p2) for n bins linearly +* distributed across the range x1..x2 (x1 is lower limit of first +* bin, x2 is upper limit of last bin). Title is t, axis labels are xl +* and yl. File name is f, component name is c. +* +* t: title +* xl: x-label +* yl: y-label +* xvar: measured variable length +* x1: x axus min +* x2: x axis max +* n: 1d data vector lenght +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, + long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + // detector_import calls mcdetector_statistics, which will return different + // MCDETECTOR versions for 1-D data based on the value of mcformat. + // + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + xl, yl, (n > 1 ? "Signal per bin" : " Signal"), + xvar, "(I,I_err)", "I", + x1, x2, 0, 0, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + detector = mcdetector_out_1D_nexus(detector); + else +#endif + detector = mcdetector_out_1D_ascii(detector); + if (detector.p1 != p1 && detector.p1) { + // mcdetector_statistics allocated memory but it hasn't been freed. + free(detector.p1); + // plus undo the other damage done there: + detector.p0 = p0; // was set to NULL + detector.p1 = p1; // was set to this_p1 + detector.p2 = p2; // was set to NULL + detector.m = detector.n; // (e.g., labs(n)) + detector.n = 1; // not (n x n) + detector.istransposed = n < 0 ? 1 : 0; + } + return detector; + +} /* mcdetector_out_1D */ + +/******************************************************************************* +* mcdetector_out_2D: wrapper for 2D. +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D */ + +/******************************************************************************* +* mcdetector_out_2D_list: List mode 2D including forwarding "options" from +* Monitor_nD +* +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_list(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + MPI_MASTER( + if (strlen(options)) { + strcpy(detector.options,options); + } else { + strcpy(detector.options,"None"); + } + ); + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D_list */ + +/******************************************************************************* +* mcdetector_out_list: wrapper for list output (calls out_2D with mcformat+"list"). +* m=number of events, n=size of each event +*******************************************************************************/ +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char format_new[CHAR_BUF_LENGTH]; + char *format_org; + MCDETECTOR detector; + + format_org = mcformat; + strcpy(format_new, mcformat); + strcat(format_new, " list"); + mcformat = format_new; + detector = mcdetector_out_2D_list(t, xl, yl, + 1,labs(m),1,labs(n), + m,n, + NULL, p1, NULL, f, + c, posa,rota,options, index); + + mcformat = format_org; + return(detector); +} + +/******************************************************************************* + * mcuse_dir: set data/sim storage directory and create it, + * or exit with error if exists + ******************************************************************************/ +static void +mcuse_dir(char *dir) +{ + if (!dir || !strlen(dir)) return; +#ifdef MC_PORTABLE + fprintf(stderr, "Error: " + "Directory output cannot be used with portable simulation (mcuse_dir)\n"); + exit(1); +#else /* !MC_PORTABLE */ + /* handle file://directory URL type */ + if (strncmp(dir, "file://", strlen("file://"))) + dirname = dir; + else + dirname = dir+strlen("file://"); + + +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(mkdir(dirname, 0777)) { +#ifndef DANSE + fprintf(stderr, "Error: unable to create directory '%s' (mcuse_dir)\n", dir); + fprintf(stderr, "(Maybe the directory already exists?)\n"); +#endif +#ifdef USE_MPI + MPI_Abort(MPI_COMM_WORLD, -1); +#endif + exit(-1); + } +#ifdef USE_MPI + } +#endif + + /* remove trailing PATHSEP (if any) */ + while (strlen(dirname) && dirname[strlen(dirname) - 1] == MC_PATHSEP_C) + dirname[strlen(dirname) - 1]='\0'; +#endif /* !MC_PORTABLE */ +} /* mcuse_dir */ + +/******************************************************************************* +* mcinfo: display instrument simulation info to stdout and exit +*******************************************************************************/ +static void +mcinfo(void) +{ + fprintf(stdout, "begin instrument: %s\n", instrument_name); + mcinfo_out(" ", stdout); + fprintf(stdout, "end instrument\n"); + fprintf(stdout, "begin simulation: %s\n", dirname ? dirname : "."); + mcruninfo_out(" ", stdout); + fprintf(stdout, "end simulation\n"); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcinfo */ + +/******************************************************************************* +* mcparameterinfo: display instrument parameter info to stdout and exit +*******************************************************************************/ +static void +mcparameterinfo(void) +{ + mcparameterinfo_out(" ", stdout); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcparameterinfo */ + + + +#endif /* ndef MCCODE_R_IO_C */ + +/* end of the I/O section =================================================== */ + + + + + + + +/******************************************************************************* +* mcset_ncount: set total number of rays to generate +*******************************************************************************/ +void mcset_ncount(unsigned long long int count) +{ + mcncount = count; +} + +/* mcget_ncount: get total number of rays to generate */ +unsigned long long int mcget_ncount(void) +{ + return mcncount; +} + +/* mcget_run_num: get curent number of rays */ +/* Within the TRACE scope we are now using _particle->uid directly */ +unsigned long long int mcget_run_num() // shuld be (_class_particle* _particle) somehow +{ + /* This function only remains for the few cases outside TRACE where we need to know + the number of simulated particles */ + return mcrun_num; +} + +/* mcsetn_arg: get ncount from a string argument */ +static void +mcsetn_arg(char *arg) +{ + mcset_ncount((long long int) strtod(arg, NULL)); +} + +/* mcsetseed: set the random generator seed from a string argument */ +static void +mcsetseed(char *arg) +{ + mcseed = atol(arg); + if(!mcseed) { + // srandom(mcseed); + //} else { + fprintf(stderr, "Error: seed must not be zero (mcsetseed)\n"); + exit(1); + } +} + +/* Following part is only embedded when not redundent with mccode-r.h ========= */ + +#ifndef MCCODE_H + +/* SECTION: MCDISPLAY support. =============================================== */ + +/******************************************************************************* +* Just output MCDISPLAY keywords to be caught by an external plotter client. +*******************************************************************************/ + +void mcdis_magnify(char *what){ + // Do nothing here, better use interactive zoom from the tools +} + +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: multiline(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} + +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n){ + int i; + const double dx = (x2-x1)/(2*n+1); + const double dy = (y2-y1)/(2*n+1); + const double dz = (z2-z1)/(2*n+1); + + for(i = 0; i < n+1; i++) + mcdis_line(x1 + 2*i*dx, y1 + 2*i*dy, z1 + 2*i*dz, + x1 + (2*i+1)*dx, y1 + (2*i+1)*dy, z1 + (2*i+1)*dz); +} + +void mcdis_multiline(int count, ...){ + va_list ap; + double x,y,z; + + printf("MCDISPLAY: multiline(%d", count); + va_start(ap, count); + while(count--) + { + x = va_arg(ap, double); + y = va_arg(ap, double); + z = va_arg(ap, double); + printf(",%g,%g,%g", x, y, z); + } + va_end(ap); + printf(")\n"); +} + +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height){ + /* draws a rectangle in the plane */ + /* x is ALWAYS width and y is ALWAYS height */ + if (strcmp("xy", plane)==0) { + mcdis_multiline(5, + x - width/2, y - height/2, z, + x + width/2, y - height/2, z, + x + width/2, y + height/2, z, + x - width/2, y + height/2, z, + x - width/2, y - height/2, z); + } else if (strcmp("xz", plane)==0) { + mcdis_multiline(5, + x - width/2, y, z - height/2, + x + width/2, y, z - height/2, + x + width/2, y, z + height/2, + x - width/2, y, z + height/2, + x - width/2, y, z - height/2); + } else if (strcmp("yz", plane)==0) { + mcdis_multiline(5, + x, y - height/2, z - width/2, + x, y - height/2, z + width/2, + x, y + height/2, z + width/2, + x, y + height/2, z - width/2, + x, y - height/2, z - width/2); + } else { + + fprintf(stderr, "Error: Definition of plane %s unknown\n", plane); + exit(1); + } +} + +void mcdis_circle(char *plane, double x, double y, double z, double r){ + printf("MCDISPLAY: circle('%s',%g,%g,%g,%g)\n", plane, x, y, z, r); +} + +void mcdis_new_circle(double x, double y, double z, double r, double nx, double ny, double nz){ + printf("MCDISPLAY: new_circle(%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, r, nx, ny, nz); +} + + +/* Draws a circle with center (x,y,z), radius (r), and in the plane + * with normal (nx,ny,nz)*/ +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz){ + int i; + if(nx==0 && ny && nz==0){ + for (i=0;i<24; i++){ + mcdis_line(x+r*sin(i*2*PI/24),y,z+r*cos(i*2*PI/24), + x+r*sin((i+1)*2*PI/24),y,z+r*cos((i+1)*2*PI/24)); + } + }else{ + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + /*draw circle*/ + for (i=0;i<24; i++){ + double ux,uy,uz; + double wx,wy,wz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + rotate(wx,wy,wz, mx,my,mz, (i+1)*2*PI/24, nx,ny,nz); + mcdis_line(x+ux*r,y+uy*r,z+uz*r, + x+wx*r,y+wy*r,z+wz*r); + } + } +} + + +/* OLD IMPLEMENTATION + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_legacy_box(double x, double y, double z, + double width, double height, double length){ + + mcdis_rectangle("xy", x, y, z-length/2, width, height); + mcdis_rectangle("xy", x, y, z+length/2, width, height); + mcdis_line(x-width/2, y-height/2, z-length/2, + x-width/2, y-height/2, z+length/2); + mcdis_line(x-width/2, y+height/2, z-length/2, + x-width/2, y+height/2, z+length/2); + mcdis_line(x+width/2, y-height/2, z-length/2, + x+width/2, y-height/2, z+length/2); + mcdis_line(x+width/2, y+height/2, z-length/2, + x+width/2, y+height/2, z+length/2); +} + +/* NEW 3D IMPLEMENTATION OF BOX SUPPORTS HOLLOW ALSO + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: box(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, width, height, length, thickness, nx, ny, nz); + } else { + mcdis_legacy_box(x, y, z, width, height, length); + if (thickness) + mcdis_legacy_box(x, y, z, width-thickness, height-thickness, length); + } +} + + +/* OLD IMPLEMENTATION +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz. */ +void mcdis_legacy_cylinder( double x, double y, double z, + double r, double height, int N, double nx, double ny, double nz){ + int i; + /*no lines make little sense - so trigger the default*/ + if(N<=0) N=5; + + NORM(nx,ny,nz); + double h_2=height/2.0; + mcdis_Circle(x+nx*h_2,y+ny*h_2,z+nz*h_2,r,nx,ny,nz); + mcdis_Circle(x-nx*h_2,y-ny*h_2,z-nz*h_2,r,nx,ny,nz); + + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + if(nx==0 && ny && nz==0){ + mx=my=0;mz=1; + }else{ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + } + /*draw circle*/ + for (i=0; i<24; i++){ + double ux,uy,uz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + mcdis_line(x+nx*h_2+ux*r, y+ny*h_2+uy*r, z+nz*h_2+uz*r, + x-nx*h_2+ux*r, y-ny*h_2+uy*r, z-nz*h_2+uz*r); + } +} + +/* NEW 3D IMPLEMENTATION ALSO SUPPORTING HOLLOW +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz.*/ +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cylinder(%g, %g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, thickness, nx, ny, nz); + } else { + mcdis_legacy_cylinder(x, y, z, + r, height, 12, nx, ny, nz); + } +} + +/* Draws a cone with center at (x,y,z) with extent (r,height). + * The cone axis is along the vector nx,ny,nz.*/ +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cone(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, nx, ny, nz); + } else { + mcdis_Circle(x, y, z, r, nx, ny, nz); + mcdis_Circle(x+0.25*height*nx, y+0.25*height*ny, z+0.25*height*nz, 0.75*r, nx, ny, nz); + mcdis_Circle(x+0.5*height*nx, y+0.5*height*ny, z+0.5*height*nz, 0.5*r, nx, ny, nz); + mcdis_Circle(x+0.75*height*nx, y+0.75*height*ny, z+0.75*height*nz, 0.25*r, nx, ny, nz); + mcdis_line(x, y, z, x+height*nx, y+height*ny, z+height*nz); + } +} + +/* Draws a disc with center at (x,y,z) with extent (r). + * The disc axis is along the vector nx,ny,nz.*/ +void mcdis_disc( double x, double y, double z, + double r, double nx, double ny, double nz){ + printf("MCDISPLAY: disc(%g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, nx, ny, nz); +} + +/* Draws a annulus with center at (x,y,z) with extent (outer_radius) and remove inner_radius. + * The annulus axis is along the vector nx,ny,nz.*/ +void mcdis_annulus( double x, double y, double z, + double outer_radius, double inner_radius, double nx, double ny, double nz){ + printf("MCDISPLAY: annulus(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, outer_radius, inner_radius, nx, ny, nz); +} + +/* draws a sphere with center at (x,y,z) with extent (r)*/ +void mcdis_sphere(double x, double y, double z, double r){ + if (mcdotrace==2) { + printf("MCDISPLAY: sphere(%g,%g,%g,%g)\n", x, y, z, r); + } else { + double nx,ny,nz; + int i; + int N=12; + + nx=0;ny=0;nz=1; + mcdis_Circle(x,y,z,r,nx,ny,nz); + for (i=1;i 3) { + /* Split in triangles - as many as polygon rank */ + faceSize=count; + vtxSize=count+1; + } else { + faceSize=1; + vtxSize=count; + } + + for (int i = 0; i < faceSize;) { + int num_indices = 3; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + if (count==3) { // Single, basic triangle + ptr += sprintf(ptr, "[%g, %g, %g], [%g, %g, %g], [%g, %g, %g]", x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2]); + } else { + for (int i = 0; i < vtxSize-1; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", x[i], y[i], z[i]); + if (i < vtxSize - 2) { + ptr += sprintf(ptr, ", "); + } else { + ptr += sprintf(ptr, ", [%g, %g, %g]", x0, y0, z0); + } + } + } + ptr += sprintf(ptr, "], \"faces\": ["); + if (count==3) { // Single, basic triangle, 1 face... + ptr += sprintf(ptr, "{ \"face\": ["); + ptr += sprintf(ptr, "0, 1, 2"); + ptr += sprintf(ptr, "]}"); + } else { + for (int i = 0; i < faceSize; i++) { + int num = 3; + ptr += sprintf(ptr, "{ \"face\": ["); + if (i < faceSize - 1) { + ptr += sprintf(ptr, "%d, %d, %d",i,i+1,count); + } else { + ptr += sprintf(ptr, "%d, %d, %d",i,count,0); + } + ptr += sprintf(ptr, "]}"); + if (i < faceSize-1) { + ptr += sprintf(ptr, ", "); + } + } + } + ptr += sprintf(ptr, "]}"); + mcdis_polyhedron(json_string); + + free(json_string); + } + free(x);free(y);free(z); +} +/* END NEW POLYGON IMPLEMENTATION*/ + +/* +void mcdis_polygon(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: polygon(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} +*/ + +/* SECTION: coordinates handling ============================================ */ + +/******************************************************************************* +* Since we use a lot of geometric calculations using Cartesian coordinates, +* we collect some useful routines here. However, it is also permissible to +* work directly on the underlying struct coords whenever that is most +* convenient (that is, the type Coords is not abstract). +* +* Coordinates are also used to store rotation angles around x/y/z axis. +* +* Since coordinates are used much like a basic type (such as double), the +* structure itself is passed and returned, rather than a pointer. +* +* At compile-time, the values of the coordinates may be unknown (for example +* a motor position). Hence coordinates are general expressions and not simple +* numbers. For this we used the type Coords_exp which has three CExp +* fields. For runtime (or calculations possible at compile time), we use +* Coords which contains three double fields. +*******************************************************************************/ + +/* coords_set: Assign coordinates. */ +Coords coords_set(MCNUM x, MCNUM y, MCNUM z) +{ + Coords a; + + a.x = x; + a.y = y; + a.z = z; + return a; +} + +/* coords_get: get coordinates. Required when 'x','y','z' are #defined as ray pars */ +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z) +{ + *x = a.x; + *y = a.y; + *z = a.z; + return a; +} + +/* coords_add: Add two coordinates. */ +Coords coords_add(Coords a, Coords b) +{ + Coords c; + + c.x = a.x + b.x; + c.y = a.y + b.y; + c.z = a.z + b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_sub: Subtract two coordinates. */ +Coords coords_sub(Coords a, Coords b) +{ + Coords c; + + c.x = a.x - b.x; + c.y = a.y - b.y; + c.z = a.z - b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_neg: Negate coordinates. */ +Coords coords_neg(Coords a) +{ + Coords b; + + b.x = -a.x; + b.y = -a.y; + b.z = -a.z; + return b; +} + +/* coords_scale: Scale a vector. */ +Coords coords_scale(Coords b, double scale) { + Coords a; + + a.x = b.x*scale; + a.y = b.y*scale; + a.z = b.z*scale; + return a; +} + +/* coords_sp: Scalar product: a . b */ +double coords_sp(Coords a, Coords b) { + double value; + + value = a.x*b.x + a.y*b.y + a.z*b.z; + return value; +} + +/* coords_xp: Cross product: a = b x c. */ +Coords coords_xp(Coords b, Coords c) { + Coords a; + + a.x = b.y*c.z - c.y*b.z; + a.y = b.z*c.x - c.z*b.x; + a.z = b.x*c.y - c.x*b.y; + return a; +} + +/* coords_len: Gives length of coords set. */ +double coords_len(Coords a) { + return sqrt(a.x*a.x + a.y*a.y + a.z*a.z); +} + +/* coords_mirror: Mirror a in plane (through the origin) defined by normal n*/ +Coords coords_mirror(Coords a, Coords n) { + double t = scalar_prod(n.x, n.y, n.z, n.x, n.y, n.z); + Coords b; + if (t!=1) { + t = sqrt(t); + n.x /= t; + n.y /= t; + n.z /= t; + } + t=scalar_prod(a.x, a.y, a.z, n.x, n.y, n.z); + b.x = a.x-2*t*n.x; + b.y = a.y-2*t*n.y; + b.z = a.z-2*t*n.z; + return b; +} + +/* coords_print: Print out vector values. */ +void coords_print(Coords a) { + #ifndef OPENACC + fprintf(stdout, "(%f, %f, %f)\n", a.x, a.y, a.z); + #endif + return; +} + +mcstatic void coords_norm(Coords* c) { + double temp = coords_sp(*c,*c); + + // Skip if we will end dividing by zero + if (temp == 0) return; + + temp = sqrt(temp); + + c->x /= temp; + c->y /= temp; + c->z /= temp; +} + +/* coords_test_zero: check if zero vector*/ +int coords_test_zero(Coords a){ + return ( a.x==0 && a.y==0 && a.z==0 ); +} + +/******************************************************************************* +* The Rotation type implements a rotation transformation of a coordinate +* system in the form of a double[3][3] matrix. +* +* Contrary to the Coords type in coords.c, rotations are passed by +* reference. Functions that yield new rotations do so by writing to an +* explicit result parameter; rotations are not returned from functions. The +* reason for this is that arrays cannot by returned from functions (though +* structures can; thus an alternative would have been to wrap the +* double[3][3] array up in a struct). Such are the ways of C programming. +* +* A rotation represents the tranformation of the coordinates of a vector when +* changing between coordinate systems that are rotated with respect to each +* other. For example, suppose that coordinate system Q is rotated 45 degrees +* around the Z axis with respect to coordinate system P. Let T be the +* rotation transformation representing a 45 degree rotation around Z. Then to +* get the coordinates of a vector r in system Q, apply T to the coordinates +* of r in P. If r=(1,0,0) in P, it will be (sqrt(1/2),-sqrt(1/2),0) in +* Q. Thus we should be careful when interpreting the sign of rotation angles: +* they represent the rotation of the coordinate systems, not of the +* coordinates (which has opposite sign). +*******************************************************************************/ + +/******************************************************************************* +* rot_set_rotation: Get transformation for rotation first phx around x axis, +* then phy around y, then phz around z. +*******************************************************************************/ +void rot_set_rotation(Rotation t, double phx, double phy, double phz) +{ + if ((phx == 0) && (phy == 0) && (phz == 0)) { + t[0][0] = 1.0; + t[0][1] = 0.0; + t[0][2] = 0.0; + t[1][0] = 0.0; + t[1][1] = 1.0; + t[1][2] = 0.0; + t[2][0] = 0.0; + t[2][1] = 0.0; + t[2][2] = 1.0; + } else { + double cx = cos(phx); + double sx = sin(phx); + double cy = cos(phy); + double sy = sin(phy); + double cz = cos(phz); + double sz = sin(phz); + + t[0][0] = cy*cz; + t[0][1] = sx*sy*cz + cx*sz; + t[0][2] = sx*sz - cx*sy*cz; + t[1][0] = -cy*sz; + t[1][1] = cx*cz - sx*sy*sz; + t[1][2] = sx*cz + cx*sy*sz; + t[2][0] = sy; + t[2][1] = -sx*cy; + t[2][2] = cx*cy; + } +} + +/******************************************************************************* +* rot_test_identity: Test if rotation is identity +*******************************************************************************/ +int rot_test_identity(Rotation t) +{ + return (t[0][0] + t[1][1] + t[2][2] == 3); +} + +/******************************************************************************* +* rot_mul: Matrix multiplication of transformations (this corresponds to +* combining transformations). After rot_mul(T1, T2, T3), doing T3 is +* equal to doing first T2, then T1. +* Note that T3 must not alias (use the same array as) T1 or T2. +*******************************************************************************/ +void rot_mul(Rotation t1, Rotation t2, Rotation t3) +{ + if (rot_test_identity(t1)) { + rot_copy(t3, t2); + } else if (rot_test_identity(t2)) { + rot_copy(t3, t1); + } else { + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + t3[i][j] = t1[i][0]*t2[0][j] + t1[i][1]*t2[1][j] + t1[i][2]*t2[2][j]; + } +} + +/******************************************************************************* +* rot_copy: Copy a rotation transformation (arrays cannot be assigned in C). +*******************************************************************************/ +void rot_copy(Rotation dest, Rotation src) +{ + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + dest[i][j] = src[i][j]; +} + +/******************************************************************************* +* rot_transpose: Matrix transposition, which is inversion for Rotation matrices +*******************************************************************************/ +void rot_transpose(Rotation src, Rotation dst) +{ + dst[0][0] = src[0][0]; + dst[0][1] = src[1][0]; + dst[0][2] = src[2][0]; + dst[1][0] = src[0][1]; + dst[1][1] = src[1][1]; + dst[1][2] = src[2][1]; + dst[2][0] = src[0][2]; + dst[2][1] = src[1][2]; + dst[2][2] = src[2][2]; +} + +/******************************************************************************* +* rot_apply: returns t*a +*******************************************************************************/ +Coords rot_apply(Rotation t, Coords a) +{ + Coords b; + if (rot_test_identity(t)) { + return a; + } else { + b.x = t[0][0]*a.x + t[0][1]*a.y + t[0][2]*a.z; + b.y = t[1][0]*a.x + t[1][1]*a.y + t[1][2]*a.z; + b.z = t[2][0]*a.x + t[2][1]*a.y + t[2][2]*a.z; + return b; + } +} + +/** + * Pretty-printing of rotation matrices. + */ +void rot_print(Rotation rot) { + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[0][0], rot[0][1], rot[0][2]); + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[1][0], rot[1][1], rot[1][2]); + printf("[ %4.2f %4.2f %4.2f ]\n\n", + rot[2][0], rot[2][1], rot[2][2]); +} + +/** + * Vector product: used by vec_prod (mccode-r.h). Use coords_xp for Coords. + */ +void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, + double x2, double y2, double z2) { + *x = (y1)*(z2) - (y2)*(z1); + *y = (z1)*(x2) - (z2)*(x1); + *z = (x1)*(y2) - (x2)*(y1); +} + +/** + * Scalar product: use coords_sp for Coords. + */ +double scalar_prod( + double x1, double y1, double z1, + double x2, double y2, double z2) { + return ((x1 * x2) + (y1 * y2) + (z1 * z2)); +} + +mcstatic void norm_func(double *x, double *y, double *z) { + double temp = (*x * *x) + (*y * *y) + (*z * *z); + if (temp != 0) { + temp = sqrt(temp); + *x /= temp; + *y /= temp; + *z /= temp; + } +} + + +/* SECTION: GPU algorithms ================================================== */ + + +/* +* Divide-and-conquer strategy for parallelizing this task: Sort absorbed +* particles last. +* +* particles: the particle array, required to checking _absorbed +* pbuffer: same-size particle buffer array required for parallel sort +* len: sorting area-of-interest size (e.g. from previous calls) +* buffer_len: total array size +* flag_split: if set, multiply live particles into absorbed slots, up to buffer_len +* multiplier: output arg, becomes the SPLIT multiplier if flag_split is set +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier) { + #define SAL_THREADS 1024 // num parallel sections + if (len_absorbed)); + + // return (no SPLIT) + if (flag_split != 1) + return accumlen; + + // SPLIT - repeat the non-absorbed block N-1 times, where len % accumlen = N + R + int mult = buffer_len / accumlen; // TODO: possibly use a new arg, bufferlen, rather than len + + // not enough space for full-block split, return + if (mult <= 1) + return accumlen; + + // copy non-absorbed block + #pragma acc parallel loop present(particles[0:buffer_len]) + for (long tidx = 0; tidx < accumlen; tidx++) { // tidx: thread index + randstate_t randstate[7]; + _class_particle sourcebuffer; + _class_particle targetbuffer; + // assign reduced weight to all particles + particles[tidx].p=particles[tidx].p/mult; + #pragma acc loop seq + for (long bidx = 1; bidx < mult; bidx++) { // bidx: block index + // preserve absorbed particle (for randstate) + sourcebuffer = particles[bidx*accumlen + tidx]; + // buffer full particle struct + targetbuffer = particles[tidx]; + // reassign previous randstate + targetbuffer.randstate[0] = sourcebuffer.randstate[0]; + targetbuffer.randstate[1] = sourcebuffer.randstate[1]; + targetbuffer.randstate[2] = sourcebuffer.randstate[2]; + targetbuffer.randstate[3] = sourcebuffer.randstate[3]; + targetbuffer.randstate[4] = sourcebuffer.randstate[4]; + targetbuffer.randstate[5] = sourcebuffer.randstate[5]; + targetbuffer.randstate[6] = sourcebuffer.randstate[6]; + // apply + particles[bidx*accumlen + tidx] = targetbuffer; + } + } + + // set out split multiplier value + *multiplier = mult; + + // return expanded array size + return accumlen * mult; +} + +#endif + +/* +* Fallback serial version of the one above. +*/ +long sort_absorb_last_serial(_class_particle* particles, long len) { + long i = 0; + long j = len - 1; + _class_particle pbuffer; + + // bubble + while (i < j) { + while (!particles[i]._absorbed && ix; + b.y = particle->y; + b.z = particle->z; + c = rot_apply(t, b); + b = coords_add(c, a); + particle->x = b.x; + particle->y = b.y; + particle->z = b.z; + +#if MCCODE_PARTICLE_CODE == 2112 + if (particle->vz != 0.0 || particle->vx != 0.0 || particle->vy != 0.0) + mccoordschange_polarisation(t, &(particle->vx), &(particle->vy), &(particle->vz)); + + if (particle->sz != 0.0 || particle->sx != 0.0 || particle->sy != 0.0) + mccoordschange_polarisation(t, &(particle->sx), &(particle->sy), &(particle->sz)); +#elif MCCODE_PARTICLE_CODE == 22 + if (particle->kz != 0.0 || particle->kx != 0.0 || particle->ky != 0.0) + mccoordschange_polarisation(t, &(particle->kx), &(particle->ky), &(particle->kz)); + + if (particle->Ez != 0.0 || particle->Ex != 0.0 || particle->Ey != 0.0) + mccoordschange_polarisation(t, &(particle->Ex), &(particle->Ey), &(particle->Ez)); +#endif +} + +/******************************************************************************* +* mccoordschange_polarisation: applies rotation to vector (sx sy sz) +*******************************************************************************/ +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *sx; + b.y = *sy; + b.z = *sz; + c = rot_apply(t, b); + *sx = c.x; + *sy = c.y; + *sz = c.z; +} + +/* SECTION: vector math ==================================================== */ + +/* normal_vec_func: Compute normal vector to (x,y,z). */ +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z) +{ + double ax = fabs(x); + double ay = fabs(y); + double az = fabs(z); + double l; + if(x == 0 && y == 0 && z == 0) + { + *nx = 0; + *ny = 0; + *nz = 0; + return; + } + if(ax < ay) + { + if(ax < az) + { /* Use X axis */ + l = sqrt(z*z + y*y); + *nx = 0; + *ny = z/l; + *nz = -y/l; + return; + } + } + else + { + if(ay < az) + { /* Use Y axis */ + l = sqrt(z*z + x*x); + *nx = z/l; + *ny = 0; + *nz = -x/l; + return; + } + } + /* Use Z axis */ + l = sqrt(y*y + x*x); + *nx = y/l; + *ny = -x/l; + *nz = 0; +} /* normal_vec */ + +/******************************************************************************* + * solve_2nd_order: second order equation solve: A*t^2 + B*t + C = 0 + * solve_2nd_order(&t1, NULL, A,B,C) + * returns 0 if no solution was found, or set 't1' to the smallest positive + * solution. + * solve_2nd_order(&t1, &t2, A,B,C) + * same as with &t2=NULL, but also returns the second solution. + * EXAMPLE usage for intersection of a trajectory with a plane in gravitation + * field (gx,gy,gz): + * The neutron starts at point r=(x,y,z) with velocityv=(vx vy vz). The plane + * has a normal vector n=(nx,ny,nz) and contains the point W=(wx,wy,wz). + * The problem consists in solving the 2nd order equation: + * 1/2.n.g.t^2 + n.v.t + n.(r-W) = 0 + * so that A = 0.5 n.g; B = n.v; C = n.(r-W); + * Without acceleration, t=-n.(r-W)/n.v + ******************************************************************************/ +int solve_2nd_order_old(double *t1, double *t2, + double A, double B, double C) +{ + int ret=0; + + if (!t1) return 0; + *t1 = 0; + if (t2) *t2=0; + + if (fabs(A) < 1E-10) /* approximate to linear equation: A ~ 0 */ + { + if (B) { *t1 = -C/B; ret=1; if (t2) *t2=*t1; } + /* else no intersection: A=B=0 ret=0 */ + } + else + { + double D; + D = B*B - 4*A*C; + if (D >= 0) /* Delta > 0: two solutions */ + { + double sD, dt1, dt2; + sD = sqrt(D); + dt1 = (-B + sD)/2/A; + dt2 = (-B - sD)/2/A; + /* we identify very small values with zero */ + if (fabs(dt1) < 1e-10) dt1=0.0; + if (fabs(dt2) < 1e-10) dt2=0.0; + + /* now we choose the smallest positive solution */ + if (dt1<=0.0 && dt2>0.0) ret=2; /* dt2 positive */ + else if (dt2<=0.0 && dt1>0.0) ret=1; /* dt1 positive */ + else if (dt1> 0.0 && dt2>0.0) + { if (dt1 < dt2) ret=1; else ret=2; } /* all positive: min(dt1,dt2) */ + /* else two solutions are negative. ret=-1 */ + if (ret==1) { *t1 = dt1; if (t2) *t2=dt2; } + else { *t1 = dt2; if (t2) *t2=dt1; } + ret=2; /* found 2 solutions and t1 is the positive one */ + } /* else Delta <0: no intersection. ret=0 */ + } + return(ret); +} /* solve_2nd_order */ + +int solve_2nd_order(double *t0, double *t1, double A, double B, double C){ + int retval=0; + double sign=copysign(1.0,B); + double dt0,dt1; + + dt0=0; + dt1=0; + if(t1){ *t1=0;} + + /*protect against rounding errors by locally equating DBL_EPSILON with 0*/ + if (fabs(A)=0){ + dt0=(-B - sign*sqrt(B*B-4*A*C))/(2*A); + dt1=C/(A*dt0); + retval=2; + }else{ + /*no real roots*/ + retval=0; + } + } + /*sort the solutions*/ + if (retval==1){ + /*put both solutions in t0 and t1*/ + *t0=dt0; + if(t1) *t1=dt1; + }else{ + /*we have two solutions*/ + /*swap if both are positive and t1 smaller than t0 or t1 the only positive*/ + int swap=0; + if(dt1>0 && ( dt1) + * + * If height or width is zero, choose random direction in full 4PI, no target. + * + * Traditionally, this routine had the name randvec_target_rect - this is now a + * a define (see mcstas-r.h) pointing here. If you use the old rouine, you are NOT + * taking the local emmission coordinate into account. +*******************************************************************************/ +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, + double width, double height, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle) +{ + double dx, dy, dist, dist_p, nx, ny, nz, mx, my, mz, n_norm, m_norm; + double cos_theta; + Coords tmp; + Rotation Ainverse; + + rot_transpose(A, Ainverse); + + if(height == 0.0 || width == 0.0) + { + randvec_target_circle(xo, yo, zo, solid_angle, + xi, yi, zi, 0); + return; + } + else + { + /* Now choose point uniformly on rectangle within width x height */ + dx = width*randpm1()/2.0; + dy = height*randpm1()/2.0; + + /* Determine distance to target plane*/ + dist = sqrt(xi*xi + yi*yi + zi*zi); + /* Go to global coordinate system */ + + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(Ainverse, tmp); + coords_get(tmp, &xi, &yi, &zi); + + /* Determine vector normal to trajectory axis (z) and gravity [0 1 0] */ + vec_prod(nx, ny, nz, xi, yi, zi, 0, 1, 0); + + /* This now defines the x-axis, normalize: */ + n_norm=sqrt(nx*nx + ny*ny + nz*nz); + nx = nx/n_norm; + ny = ny/n_norm; + nz = nz/n_norm; + + /* Now, determine our y-axis (vertical in many cases...) */ + vec_prod(mx, my, mz, xi, yi, zi, nx, ny, nz); + m_norm=sqrt(mx*mx + my*my + mz*mz); + mx = mx/m_norm; + my = my/m_norm; + mz = mz/m_norm; + + /* Our output, random vector can now be defined by linear combination: */ + + *xo = xi + dx * nx + dy * mx; + *yo = yi + dx * ny + dy * my; + *zo = zi + dx * nz + dy * mz; + + /* Go back to local coordinate system */ + tmp = coords_set(*xo, *yo, *zo); + tmp = rot_apply(A, tmp); + coords_get(tmp, &*xo, &*yo, &*zo); + + /* Go back to local coordinate system */ + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(A, tmp); + coords_get(tmp, &xi, &yi, &zi); + + if (solid_angle) { + /* Calculate vector from local point to remote random point */ + lx = *xo - lx; + ly = *yo - ly; + lz = *zo - lz; + dist_p = sqrt(lx*lx + ly*ly + lz*lz); + + /* Adjust the 'solid angle' */ + /* 1/r^2 to the chosen point times cos(\theta) between the normal */ + /* vector of the target rectangle and direction vector of the chosen point. */ + cos_theta = (xi * lx + yi * ly + zi * lz) / (dist * dist_p); + *solid_angle = width * height / (dist_p * dist_p); + int counter; + for (counter = 0; counter < order; counter++) { + *solid_angle = *solid_angle * cos_theta; + } + } + } +} +/* randvec_target_rect_real */ + + +/* SECTION: random numbers ================================================== + + How to add a new RNG: + + - Use an rng with a manegable state vector, e.g. of lengt 4 or 7. The state + will sit on the particle struct as a "randstate_t state[RANDSTATE_LEN]" + - If the rng has a long state (as MT), set an empty "srandom" and initialize + it explicitly using the appropriate define (RNG_ALG) + - Add a seed and a random function (the transforms will be reused) + - Write the proper defines in mccode-r.h, e.g. randstate_t and RANDSTATE_LEN, + srandom and random. + - Compile using -DRNG_ALG= + +============================================================================= */ + + +/* "Mersenne Twister", by Makoto Matsumoto and Takuji Nishimura. */ +/* See http://www.math.keio.ac.jp/~matumoto/emt.html for original source. */ +/* + A C-program for MT19937, with initialization improved 2002/1/26. + Coded by Takuji Nishimura and Makoto Matsumoto. + + Before using, initialize the state by using mt_srandom(seed) + or init_by_array(init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Any feedback is very welcome. + http://www.math.keio.ac.jp/matumoto/emt.html + email: matumoto@math.keio.ac.jp +*/ +#include +#include // for uint32_t +#include // for size_t + +/* Period parameters */ +#define N 624 +#define M 397 +#define MATRIX_A 0x9908b0dfU /* constant vector a */ +#define UPPER_MASK 0x80000000U /* most significant w-r bits */ +#define LOWER_MASK 0x7fffffffU /* least significant r bits */ + +static uint32_t mt[N]; /* the array for the state vector */ +static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ + +// Required for compatibility with common RNG interface (e.g., kiss/mt polymorphism) +void mt_srandom_empty(void) {} + +// Initializes mt[N] with a seed +void mt_srandom(uint32_t seed) { + mt[0] = seed; + for (mti = 1; mti < N; mti++) { + mt[mti] = 1812433253U * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti; + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array mt[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + mt[mti] &= 0xffffffffU; + /* for >32 bit machines */ + } +} +/* Initialize by an array with array-length. + Init_key is the array for initializing keys. + key_length is its length. */ +void init_by_array(uint32_t init_key[], size_t key_length) { + size_t i = 1, j = 0, k; + mt_srandom(19650218U); + k = (N > key_length ? N : key_length); + for (; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525U)) + + init_key[j] + (uint32_t)j; + mt[i] &= 0xffffffffU; + i++; j++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + if (j >= key_length) j = 0; + } + for (k = N - 1; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941U)) + - (uint32_t)i; + mt[i] &= 0xffffffffU; + i++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + } + mt[0] = 0x80000000U; /* MSB is 1; ensuring non-zero initial array */ +} + +// Generates a random number on [0, 0xffffffff]-interval +uint32_t mt_random(void) { + uint32_t y; + static const uint32_t mag01[2] = { 0x0U, MATRIX_A }; + /* mag01[x] = x * MATRIX_A for x=0,1 */ + + if (mti >= N) { /* generate N words at one time */ + int kk; + + if (mti == N + 1) /* if mt_srandom() has not been called, */ + mt_srandom(5489U); /* a default initial seed is used */ + + for (kk = 0; kk < N - M; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + for (; kk < N - 1; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); + mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1U]; + + mti = 0; + } + + y = mt[mti++]; + + /* Tempering */ + y ^= (y >> 11); + y ^= (y << 7) & 0x9d2c5680U; + y ^= (y << 15) & 0xefc60000U; + y ^= (y >> 18); + + return y; +} +#undef N +#undef M +#undef MATRIX_A +#undef UPPER_MASK +#undef LOWER_MASK +/* End of "Mersenne Twister". */ + + +/* +KISS + + From: http://www.helsbreth.org/random/rng_kiss.html + Scott Nelson 1999 + + Based on Marsaglia's KISS or (KISS+SWB) + + KISS - Keep it Simple Stupid PRNG + + the idea is to use simple, fast, individually promising + generators to get a composite that will be fast, easy to code + have a very long period and pass all the tests put to it. + The three components of KISS are + x(n)=a*x(n-1)+1 mod 2^32 + y(n)=y(n-1)(I+L^13)(I+R^17)(I+L^5), + z(n)=2*z(n-1)+z(n-2) +carry mod 2^32 + The y's are a shift register sequence on 32bit binary vectors + period 2^32-1; + The z's are a simple multiply-with-carry sequence with period + 2^63+2^32-1. The period of KISS is thus + 2^32*(2^32-1)*(2^63+2^32-1) > 2^127 + + In 2025 adapted for consistent 64-bit behavior across platforms. +*/ + +/* the KISS state is stored as a vector of 7 uint64_t */ +/* 0 1 2 3 4 5 6 */ +/* [ x, y, z, w, carry, k, m ] */ + +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed) { + if (seed == 0) seed = 1ull; + state[0] = seed | 1ull; // x + state[1] = seed | 2ull; // y + state[2] = seed | 4ull; // z + state[3] = seed | 8ull; // w + state[4] = 0ull; // carry + state[5] = 0ull; // k + state[6] = 0ull; // m + return state; +} + +uint64_t kiss_random(uint64_t state[7]) { + // Linear congruential generator + state[0] = state[0] * 69069ull + 1ull; + + // Xorshift + state[1] ^= state[1] << 13ull; + state[1] ^= state[1] >> 17ull; + state[1] ^= state[1] << 5ull; + + // Multiply-with-carry + state[5] = (state[2] >> 2ull) + (state[3] >> 3ull) + (state[4] >> 2ull); + state[6] = state[3] + state[3] + state[2] + state[4]; + state[2] = state[3]; + state[3] = state[6]; + state[4] = state[5] >> 62ull; // Top bit of carry (adjusted for 64-bit) + + return state[0] + state[1] + state[3]; +} +/* end of "KISS" rng */ + + +/* FAST KISS in another implementation (Hundt) */ + +////////////////////////////////////////////////////////////////////////////// +// fast keep it simple stupid generator +////////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// Thomas Mueller hash for initialization of rngs +// http://stackoverflow.com/questions/664014/ +// what-integer-hash-function-are-good-that-accepts-an-integer-hash-key +////////////////////////////////////////////////////////////////////////////// +randstate_t _hash(randstate_t x) { + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x); + return x; +} + + +// SECTION: random number transforms ========================================== + + + +// generate a random number from normal law +double _randnorm(randstate_t* state) +{ + static double v1, v2, s; /* removing static breaks comparison with McStas <= 2.5 */ + static int phase = 0; + double X, u1, u2; + + if(phase == 0) + { + do + { + u1 = _rand01(state); + u2 = _rand01(state); + v1 = 2*u1 - 1; + v2 = 2*u2 - 1; + s = v1*v1 + v2*v2; + } while(s >= 1 || s == 0); + + X = v1*sqrt(-2*log(s)/s); + } + else + { + X = v2*sqrt(-2*log(s)/s); + } + + phase = 1 - phase; + return X; +} +// another one +double _randnorm2(randstate_t* state) { + double x, y, r; + do { + x = 2.0 * _rand01(state) - 1.0; + y = 2.0 * _rand01(state) - 1.0; + r = x*x + y*y; + } while (r == 0.0 || r >= 1.0); + return x * sqrt((-2.0 * log(r)) / r); +} + +// Generate a random number from -1 to 1 with triangle distribution +double _randtriangle(randstate_t* state) { + double randnum = _rand01(state); + if (randnum>0.5) return(1-sqrt(2*(randnum-0.5))); + else return(sqrt(2*randnum)-1); +} +double _rand01(randstate_t* state) { + double randnum; + randnum = (double) _random(); + // TODO: can we mult instead of div? + randnum /= (double) MC_RAND_MAX + 1; + return randnum; +} +// Return a random number between 1 and -1 +double _randpm1(randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / 2; + randnum -= 1; + return randnum; +} +// Return a random number between 0 and max. +double _rand0max(double max, randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / max; + return randnum; +} +// Return a random number between min and max. +double _randminmax(double min, double max, randstate_t* state) { + return _rand0max(max - min, state) + max; +} + + +/* SECTION: main and signal handlers ======================================== */ + +/******************************************************************************* +* mchelp: displays instrument executable help with possible options +*******************************************************************************/ +static void +mchelp(char *pgmname) +{ + int i; + + fprintf(stderr, "%s (%s) instrument simulation, generated with " MCCODE_STRING " (" MCCODE_DATE ")\n", instrument_name, instrument_source); + fprintf(stderr, "Usage: %s [options] [parm=value ...]\n", pgmname); + fprintf(stderr, +"Options are:\n" +" -s SEED --seed=SEED Set random seed (must be != 0)\n" +" -n COUNT --ncount=COUNT Set number of particles to simulate.\n" +" -d DIR --dir=DIR Put all data files in directory DIR.\n" +" -t --trace Enable trace of " MCCODE_PARTICLE "s through instrument.\n" +" (Use -t=2 or --trace=2 for modernised mcdisplay rendering)\n" +" -g --gravitation Enable gravitation for all trajectories.\n" +" --no-output-files Do not write any data files.\n" +" -h --help Show this help message.\n" +" -i --info Detailed instrument information.\n" +" --list-parameters Print the instrument parameters to standard out\n" +" -y --yes Assume default values for all parameters with a default\n" +" --meta-list Print names of components which defined metadata\n" +" --meta-defined COMP[:NAME] Print component defined metadata names, or (0,1) if NAME provided\n" +" --meta-type COMP:NAME Print metadata format type specified in definition\n" +" --meta-data COMP:NAME Print the metadata text\n" +" --source Show the instrument code which was compiled.\n" +#ifdef OPENACC +"\n" +" --vecsize OpenACC vector-size (default: 128)\n" +" --numgangs Number of OpenACC gangs (default: 7813)\n" +" --gpu_innerloop Maximum rays to process pr. OpenACC \n" +" kernel run (default: 2147483647)\n" +"\n" +#endif +#ifdef TOF_TRAIN +" --tof-trains=K Number of TOF \"sub-particles\" (default 10)\n" +#endif +"\n" +" --bufsiz Monitor_nD list/buffer-size (default: 1000000)\n" +" --format=FORMAT Output data files using FORMAT=" + FLAVOR_UPPER +#ifdef USE_NEXUS + " NEXUS\n" +" --IDF Embed an xml-formatted IDF instrument definition\n" +" in the NeXus file (if existent in .)\n\n" +#else +"\n\n" +#endif +); +#ifdef USE_MPI + fprintf(stderr, + "This instrument has been compiled with MPI support.\n Use 'mpirun %s [options] [parm=value ...]'.\n", pgmname); +#endif +#ifdef OPENACC + fprintf(stderr, + "This instrument has been compiled with NVIDIA GPU support through OpenACC.\n Running on systems without such devices will lead to segfaults.\nFurter, fprintf, sprintf and printf have been removed from any component TRACE.\n"); +#endif + + if(numipar > 0) + { + fprintf(stderr, "Instrument parameters are:\n"); + for(i = 0; i < numipar; i++) + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + fprintf(stderr, " %-16s(%s) [default='%s']\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name), + mcinputtable[i].val); + else + fprintf(stderr, " %-16s(%s)\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name)); + } + +#ifndef NOSIGNALS + fprintf(stderr, "Known signals are: " +#ifdef SIGUSR1 + "USR1 (status) " +#endif +#ifdef SIGUSR2 + "USR2 (save) " +#endif +#ifdef SIGBREAK + "BREAK (save) " +#endif +#ifdef SIGTERM + "TERM (save and exit)" +#endif + "\n"); +#endif /* !NOSIGNALS */ +} /* mchelp */ + + +/* mcshowhelp: show help and exit with 0 */ +static void +mcshowhelp(char *pgmname) +{ + mchelp(pgmname); + exit(0); +} + +/* mcusage: display usage when error in input arguments and exit with 1 */ +static void +mcusage(char *pgmname) +{ + fprintf(stderr, "Error: incorrect command line arguments\n"); + mchelp(pgmname); + exit(1); +} + +/* mcenabletrace: enable trace/mcdisplay or error if requires recompile */ +static void +mcenabletrace(int mode) +{ + if(traceenabled) { + mcdotrace = mode; + #pragma acc update device ( mcdotrace ) + } else { + if (mode>0) { + fprintf(stderr, + "Error: trace not enabled (mcenabletrace)\n" + "Please re-run the " MCCODE_NAME " compiler " + "with the --trace option, or rerun the\n" + "C compiler with the MC_TRACE_ENABLED macro defined.\n"); + exit(1); + } + } +} + +/******************************************************************************* +* mcreadparams: request parameters from the prompt (or use default) +*******************************************************************************/ +void +mcreadparams(void) +{ + int i,j,status; + static char buf[CHAR_BUF_LENGTH]; + char *p; + int len; + + MPI_MASTER(printf("Instrument parameters for %s (%s)\n", + instrument_name, instrument_source)); + + for(i = 0; mcinputtable[i].name != 0; i++) + { + do + { + MPI_MASTER( + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + printf("Set value of instrument parameter %s (%s) [default='%s']:\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name), mcinputtable[i].val); + else + printf("Set value of instrument parameter %s (%s):\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + fflush(stdout); + ); +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) + { + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } + } + else + p = buf; + MPI_Bcast(buf, CHAR_BUF_LENGTH, MPI_CHAR, mpi_node_root, MPI_COMM_WORLD); +#else /* !USE_MPI */ + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } +#endif /* USE_MPI */ + len = strlen(buf); + if (!len || (len == 1 && (buf[0] == '\n' || buf[0] == '\r'))) + { + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + strncpy(buf, mcinputtable[i].val, CHAR_BUF_LENGTH); /* use default value */ + len = strlen(buf); + } + } + for(j = 0; j < 2; j++) + { + if(len > 0 && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) + { + len--; + buf[len] = '\0'; + } + } + + status = (*mcinputtypes[mcinputtable[i].type].getparm) + (buf, mcinputtable[i].par); + if(!status) + { + (*mcinputtypes[mcinputtable[i].type].error)(mcinputtable[i].name, buf); + if (!mcinputtable[i].val || strlen(mcinputtable[i].val)) { + fprintf(stderr, " Change %s default value in instrument definition.\n", mcinputtable[i].name); + exit(1); + } + } + } while(!status); + } +} /* mcreadparams */ + +/******************************************************************************* +* mcparseoptions: parse command line arguments (options, parameters) +*******************************************************************************/ +void +mcparseoptions(int argc, char *argv[]) +{ + int i, j; + char *p; + int paramset = 0, *paramsetarray; + char *usedir=NULL; + + #ifdef TOF_TRAIN + NTOF=10; /* Default to 10 TOF "sub-particles" in a TOF_TRAIN */ + #endif + + /* Add one to numipar to avoid allocating zero size memory block. */ + paramsetarray = (int*)malloc((numipar + 1)*sizeof(*paramsetarray)); + if(paramsetarray == NULL) + { + fprintf(stderr, "Error: insufficient memory (mcparseoptions)\n"); + exit(1); + } + for(j = 0; j < numipar; j++) + { + paramsetarray[j] = 0; + if (mcinputtable[j].val != NULL && strlen(mcinputtable[j].val)) + { + int status; + char buf[CHAR_BUF_LENGTH]; + strncpy(buf, mcinputtable[j].val, CHAR_BUF_LENGTH); + status = (*mcinputtypes[mcinputtable[j].type].getparm) + (buf, mcinputtable[j].par); + if(!status) fprintf(stderr, "Invalid '%s' default value %s in instrument definition (mcparseoptions)\n", mcinputtable[j].name, buf); + else paramsetarray[j] = 1; + } else { + (*mcinputtypes[mcinputtable[j].type].getparm) + (NULL, mcinputtable[j].par); + paramsetarray[j] = 0; + } + } + for(i = 1; i < argc; i++) + { + if(!strcmp("-s", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("-s", argv[i], 2)) + mcsetseed(&argv[i][2]); + else if(!strcmp("--seed", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("--seed=", argv[i], 7)) + mcsetseed(&argv[i][7]); + else if(!strcmp("-n", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("-n", argv[i], 2)) + mcsetn_arg(&argv[i][2]); + else if(!strcmp("--ncount", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("--ncount=", argv[i], 9)) + mcsetn_arg(&argv[i][9]); + else if(!strcmp("-d", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; /* will create directory after parsing all arguments (end of this function) */ + else if(!strncmp("-d", argv[i], 2)) + usedir=&argv[i][2]; + else if(!strcmp("--dir", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; + else if(!strncmp("--dir=", argv[i], 6)) + usedir=&argv[i][6]; + else if(!strcmp("-h", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("--help", argv[i]) || !strcmp("--version", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("-i", argv[i])) { + mcformat=FLAVOR_UPPER; + mcinfo(); + } + else if(!strcmp("--info", argv[i])) + mcinfo(); + else if (!strcmp("--list-parameters", argv[i])) + mcparameterinfo(); + else if (!strcmp("--meta-list", argv[i]) && ((i+1) >= argc || argv[i+1][0] == '-')){ + //printf("Components with metadata defined:\n"); + exit(metadata_table_print_all_components(num_metadata, metadata_table) == 0); + } + else if (!strcmp("--meta-defined", argv[i]) && (i+1) < argc){ + exit(metadata_table_print_component_keys(num_metadata, metadata_table, argv[i+1]) == 0); + } + else if (!strcmp("--meta-type", argv[i]) && (i+1) < argc){ + char * literal_type = metadata_table_type(num_metadata, metadata_table, argv[i+1]); + if (literal_type == NULL) exit(1); + printf("%s\n", literal_type); + exit(0); + } + else if (!strcmp("--meta-data", argv[i]) && (i+1) < argc){ + char * literal = metadata_table_literal(num_metadata, metadata_table, argv[i+1]); + if (literal == NULL) exit(1); + printf("%s\n", literal); + exit(0); + } + else if(!strncmp("--trace=", argv[i], 8)) { + mcenabletrace(atoi(&argv[i][8])); + } else if(!strncmp("-t=", argv[i], 3) || !strcmp("--verbose", argv[i])) { + mcenabletrace(atoi(&argv[i][3])); + } else if(!strcmp("-t", argv[i])) + mcenabletrace(1); + else if(!strcmp("--trace", argv[i]) || !strcmp("--verbose", argv[i])) + mcenabletrace(1); + else if(!strcmp("--gravitation", argv[i])) + mcgravitation = 1; + else if(!strcmp("-g", argv[i])) + mcgravitation = 1; + else if(!strcmp("--yes", argv[i])) + mcusedefaults = 1; + else if(!strcmp("-y", argv[i])) + mcusedefaults = 1; + else if(!strncmp("--format=", argv[i], 9)) { + mcformat=&argv[i][9]; + } + else if(!strcmp("--format", argv[i]) && (i + 1) < argc) { + mcformat=argv[++i]; + } +#ifdef TOF_TRAIN + else if(!strncmp("--tof-trains=", argv[i], 13)) { + NTOF=atoi(&argv[i][13]); + } +#endif +#ifdef USE_NEXUS + else if(!strcmp("--IDF", argv[i])) { + mcnexus_embed_idf = 1; + } +#endif + else if(!strncmp("--vecsize=", argv[i], 10)) { + vecsize=atoi(&argv[i][10]); + } + else if(!strcmp("--vecsize", argv[i]) && (i + 1) < argc) { + vecsize=atoi(argv[++i]); + } + else if(!strncmp("--bufsiz=", argv[i], 9)) { + MONND_BUFSIZ=atoi(&argv[i][9]); + } + else if(!strcmp("--bufsiz", argv[i]) && (i + 1) < argc) { + MONND_BUFSIZ=atoi(argv[++i]); + } + else if(!strncmp("--numgangs=", argv[i], 11)) { + numgangs=atoi(&argv[i][11]); + } + else if(!strcmp("--numgangs", argv[i]) && (i + 1) < argc) { + numgangs=atoi(argv[++i]); + } + else if(!strncmp("--gpu_innerloop=", argv[i], 16)) { + gpu_innerloop=(long)strtod(&argv[i][16], NULL); + } + else if(!strcmp("--gpu_innerloop", argv[i]) && (i + 1) < argc) { + gpu_innerloop=(long)strtod(argv[++i], NULL); + } + + else if(!strcmp("--no-output-files", argv[i])) + mcdisable_output_files = 1; + else if(!strcmp("--source", argv[i])) { + printf("/* Source code %s from %s: */\n" + "/******************************************************************************/\n" + "%s\n" + "/******************************************************************************/\n" + "/* End of source code %s from %s */\n", + instrument_name, instrument_source, instrument_code, + instrument_name, instrument_source); + exit(1); + } + else if(argv[i][0] != '-' && (p = strchr(argv[i], '=')) != NULL) + { + *p++ = '\0'; + + for(j = 0; j < numipar; j++) + if(!strcmp(mcinputtable[j].name, argv[i])) + { + int status; + status = (*mcinputtypes[mcinputtable[j].type].getparm)(p, + mcinputtable[j].par); + if(!status || !strlen(p)) + { + (*mcinputtypes[mcinputtable[j].type].error) + (mcinputtable[j].name, p); + exit(1); + } + paramsetarray[j] = 1; + paramset = 1; + break; + } + if(j == numipar) + { /* Unrecognized parameter name */ + fprintf(stderr, "Error: unrecognized parameter %s (mcparseoptions)\n", argv[i]); + exit(1); + } + } + else if(argv[i][0] == '-') { + fprintf(stderr, "Error: unrecognized option argument %s (mcparseoptions). Ignored.\n", argv[i++]); + } + else { + fprintf(stderr, "Error: unrecognized argument %s (mcparseoptions). Aborting.\n", argv[i]); + mcusage(argv[0]); + } + } + if (mcusedefaults) { + MPI_MASTER( + printf("Using all default parameter values\n"); + ); + for(j = 0; j < numipar; j++) { + int status; + if(mcinputtable[j].val && strlen(mcinputtable[j].val)){ + status = (*mcinputtypes[mcinputtable[j].type].getparm)(mcinputtable[j].val, + mcinputtable[j].par); + paramsetarray[j] = 1; + paramset = 1; + } + } + } + if(!paramset) + mcreadparams(); /* Prompt for parameters if not specified. */ + else + { + for(j = 0; j < numipar; j++) + if(!paramsetarray[j]) + { + fprintf(stderr, "Error: Instrument parameter %s left unset (mcparseoptions)\n", + mcinputtable[j].name); + exit(1); + } + } + free(paramsetarray); +#ifdef USE_MPI + if (mcdotrace) mpi_node_count=1; /* disable threading when in trace mode */ +#endif + if (usedir && strlen(usedir) && !mcdisable_output_files) mcuse_dir(usedir); +} /* mcparseoptions */ + +#ifndef NOSIGNALS +/******************************************************************************* +* sighandler: signal handler that makes simulation stop, and save results +*******************************************************************************/ +void sighandler(int sig) +{ + /* MOD: E. Farhi, Sep 20th 2001: give more info */ + time_t t1, t0; +#define SIG_SAVE 0 +#define SIG_TERM 1 +#define SIG_STAT 2 +#define SIG_ABRT 3 + + printf("\n# " MCCODE_STRING ": [pid %i] Signal %i detected", getpid(), sig); +#ifdef USE_MPI + printf(" [proc %i]", mpi_node_rank); +#endif +#if defined(SIGUSR1) && defined(SIGUSR2) && defined(SIGKILL) + if (!strcmp(mcsig_message, "sighandler") && (sig != SIGUSR1) && (sig != SIGUSR2)) + { + printf("\n# Fatal : unrecoverable loop ! Suicide (naughty boy).\n"); + kill(0, SIGKILL); /* kill myself if error occurs within sighandler: loops */ + } +#endif + switch (sig) { +#ifdef SIGINT + case SIGINT : printf(" SIGINT (interrupt from terminal, Ctrl-C)"); sig = SIG_TERM; break; +#endif +#ifdef SIGILL + case SIGILL : printf(" SIGILL (Illegal instruction)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGFPE + case SIGFPE : printf(" SIGFPE (Math Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGSEGV + case SIGSEGV : printf(" SIGSEGV (Mem Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGTERM + case SIGTERM : printf(" SIGTERM (Termination)"); sig = SIG_TERM; break; +#endif +#ifdef SIGABRT + case SIGABRT : printf(" SIGABRT (Abort)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGQUIT + case SIGQUIT : printf(" SIGQUIT (Quit from terminal)"); sig = SIG_TERM; break; +#endif +#ifdef SIGTRAP + case SIGTRAP : printf(" SIGTRAP (Trace trap)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGPIPE + case SIGPIPE : printf(" SIGPIPE (Broken pipe)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGUSR1 + case SIGUSR1 : printf(" SIGUSR1 (Display info)"); sig = SIG_STAT; break; +#endif +#ifdef SIGUSR2 + case SIGUSR2 : printf(" SIGUSR2 (Save simulation)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGHUP + case SIGHUP : printf(" SIGHUP (Hangup/update)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGBUS + case SIGBUS : printf(" SIGBUS (Bus error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGURG + case SIGURG : printf(" SIGURG (Urgent socket condition)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGBREAK + case SIGBREAK: printf(" SIGBREAK (Break signal, Ctrl-Break)"); sig = SIG_SAVE; break; +#endif + default : printf(" (look at signal list for signification)"); sig = SIG_ABRT; break; + } + printf("\n"); + printf("# Simulation: %s (%s) \n", instrument_name, instrument_source); + printf("# Breakpoint: %s ", mcsig_message); + if (strstr(mcsig_message, "Save") && (sig == SIG_SAVE)) + sig = SIG_STAT; + SIG_MESSAGE("sighandler"); + if (mcget_ncount() == 0) + printf("(0 %%)\n" ); + else + { + printf("%.2f %% (%10.1f/%10.1f)\n", 100.0*mcget_run_num()/mcget_ncount(), 1.0*mcget_run_num(), 1.0*mcget_ncount()); + } + t0 = (time_t)mcstartdate; + t1 = time(NULL); + printf("# Date: %s", ctime(&t1)); + printf("# Started: %s", ctime(&t0)); + + if (sig == SIG_STAT) + { + printf("# " MCCODE_STRING ": Resuming simulation (continue)\n"); + fflush(stdout); + return; + } + else + if (sig == SIG_SAVE) + { + printf("# " MCCODE_STRING ": Saving data and resume simulation (continue)\n"); + save(NULL); + fflush(stdout); + return; + } + else + if (sig == SIG_TERM) + { + printf("# " MCCODE_STRING ": Finishing simulation (save results and exit)\n"); + finally(); + exit(0); + } + else + { + fflush(stdout); + perror("# Last I/O Error"); + printf("# " MCCODE_STRING ": Simulation stop (abort).\n"); +// This portion of the signal handling only works on UNIX +#if defined(__unix__) || defined(__APPLE__) + signal(sig, SIG_DFL); /* force to use default sighandler now */ + kill(getpid(), sig); /* and trigger it with the current signal */ +#endif + exit(-1); + } +#undef SIG_SAVE +#undef SIG_TERM +#undef SIG_STAT +#undef SIG_ABRT + +} /* sighandler */ +#endif /* !NOSIGNALS */ + +#ifdef NEUTRONICS +/*Main neutronics function steers the McStas calls, initializes parameters etc */ +/* Only called in case NEUTRONICS = TRUE */ +void neutronics_main_(float *inx, float *iny, float *inz, float *invx, float *invy, float *invz, float *intime, float *insx, float *insy, float *insz, float *inw, float *outx, float *outy, float *outz, float *outvx, float *outvy, float *outvz, float *outtime, float *outsx, float *outsy, float *outsz, float *outwgt) +{ + + extern double mcnx, mcny, mcnz, mcnvx, mcnvy, mcnvz; + extern double mcnt, mcnsx, mcnsy, mcnsz, mcnp; + + /* External code governs iteration - McStas is iterated once per call to neutronics_main. I.e. below counter must be initiancated for each call to neutronics_main*/ + mcrun_num=0; + + time_t t; + t = (time_t)mcstartdate; + mcstartdate = t; /* set start date before parsing options and creating sim file */ + init(); + + /* *** parse options *** */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat=getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + + /* Set neutron state based on input from neutronics code */ + mcsetstate(*inx,*iny,*inz,*invx,*invy,*invz,*intime,*insx,*insy,*insz,*inw); + + /* main neutron event loop - runs only one iteration */ + + //mcstas_raytrace(&mcncount); /* prior to McStas 1.12 */ + + mcallowbackprop = 1; //avoid absorbtion from negative dt + int argc=1; + char *argv[0]; + int dummy = mccode_main(argc, argv); + + *outx = mcnx; + *outy = mcny; + *outz = mcnz; + *outvx = mcnvx; + *outvy = mcnvy; + *outvz = mcnvz; + *outtime = mcnt; + *outsx = mcnsx; + *outsy = mcnsy; + *outsz = mcnsz; + *outwgt = mcnp; + + return; +} /* neutronics_main */ + +#endif /*NEUTRONICS*/ + +#endif /* !MCCODE_H */ +/* End of file "mccode-r.c". */ +/* End of file "mccode-r.c". */ + +/* embedding file "mcstas-r.c" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system for McStas. +* Embedded within instrument in runtime mode. +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#include "mcstas-r.h" +#endif +#ifdef DANSE +#include "mcstas-globals.h" +#endif + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + +/*the magnet stack*/ +#ifdef MC_POL_COMPAT +void (*mcMagnetPrecession) (double, double, double, double, double, double, + double, double*, double*, double*, double, Coords, Rotation)=NULL; +Coords mcMagnetPos; +Rotation mcMagnetRot; +double* mcMagnetData = NULL; +/* mcMagneticField(x, y, z, t, Bx, By, Bz) */ +int (*mcMagneticField) (double, double, double, double, + double*, double*, double*, void *) = NULL; +#endif + +#ifndef MCSTAS_H + +/******************************************************************************* +* mcsetstate: transfer parameters into global McStas variables +*******************************************************************************/ +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF) +{ + _class_particle mcneutron; + + mcneutron.x = x; + mcneutron.y = y; + mcneutron.z = z; + mcneutron.vx = vx; + mcneutron.vy = vy; + mcneutron.vz = vz; + mcneutron.t = t; + mcneutron.sx = sx; + mcneutron.sy = sy; + mcneutron.sz = sz; + mcneutron.p = p; + mcneutron.mcgravitation = mcgravitation; + mcneutron.mcMagnet = mcMagnet; + mcneutron.allow_backprop = mcallowbackprop; + mcneutron._uid = 0; + mcneutron._index = 1; + mcneutron._absorbed = 0; + mcneutron._restore = 0; + mcneutron._scattered = 0; + mcneutron.flag_nocoordschange = 0; + + /* init tmp-vars - FIXME are they used? */ + mcneutron._mctmp_a = mcneutron._mctmp_b = mcneutron._mctmp_c = 0; + // what about mcneutron._logic ? + mcneutron._logic.dummy=1; + // init uservars via cogen'd-function + + #ifdef TOF_TRAIN + mcneutron.N_trains=NTOF; + mcneutron.t_offset=malloc(NTOF*sizeof(double)); + mcneutron.p_trains=malloc(NTOF*sizeof(double)); + mcneutron.alive_trains=malloc(NTOF*sizeof(int)); + #endif + + particle_uservar_init(&mcneutron); + + return(mcneutron); +} /* mcsetstate */ + +/******************************************************************************* +* mcgetstate: get neutron parameters from particle structure +*******************************************************************************/ +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p) +{ + *x = mcneutron.x; + *y = mcneutron.y; + *z = mcneutron.z; + *vx = mcneutron.vx; + *vy = mcneutron.vy; + *vz = mcneutron.vz; + *t = mcneutron.t; + *sx = mcneutron.sx; + *sy = mcneutron.sy; + *sz = mcneutron.sz; + *p = mcneutron.p; + + return(mcneutron); +} /* mcgetstate */ + + +/******************************************************************************* +* mcgenstate: set default neutron parameters +*******************************************************************************/ +// Moved to generated code +/* #pragma acc routine seq */ +/* _class_particle mcgenstate(void) */ +/* { */ +/* return(mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, mcMagnet, mcallowbackprop)); */ +/* } */ + +/******************************************************************************* +* mccoordschanges: old style rotation routine rot -> (x y z) ,(vx vy vz),(sx,sy,sz) +*******************************************************************************/ +void +mccoordschanges(Coords a, Rotation t, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *x; + b.y = *y; + b.z = *z; + c = rot_apply(t, b); + b = coords_add(c, a); + *x = b.x; + *y = b.y; + *z = b.z; + + if ( (vz && vy && vx) && (*vz != 0.0 || *vx != 0.0 || *vy != 0.0) ) + mccoordschange_polarisation(t, vx, vy, vz); + + if ( (sz && sy && sx) && (*sz != 0.0 || *sx != 0.0 || *sy != 0.0) ) + mccoordschange_polarisation(t, sx, sy, sz); + +} + +/* intersection routines ==================================================== */ + +/******************************************************************************* +* inside_rectangle: Check if (x,y) is inside rectangle (xwidth, yheight) +* return 0 if outside and 1 if inside +*******************************************************************************/ +int inside_rectangle(double x, double y, double xwidth, double yheight) +{ + if (x>-xwidth/2 && x-yheight/2 && y -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[0] = tt; + else + t[0] = 0; + + tt = (dx/2 - x)/vx; + y_in = y + tt*vy; + z_in = z + tt*vz; + if( y_in > -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[1] = tt; + else + t[1] = 0; + } + else + t[0] = t[1] = 0; + + if(vy != 0) + { + tt = -(dy/2 + y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[2] = tt; + else + t[2] = 0; + + tt = (dy/2 - y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[3] = tt; + else + t[3] = 0; + } + else + t[2] = t[3] = 0; + + if(vz != 0) + { + tt = -(dz/2 + z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[4] = tt; + else + t[4] = 0; + + tt = (dz/2 - z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[5] = tt; + else + t[5] = 0; + } + else + t[4] = t[5] = 0; + + /* The intersection is evaluated and *dt_in and *dt_out are assigned */ + + a = b = s = 0; + count = 0; + + for( i = 0; i < 6; i = i + 1 ) + if( t[i] == 0 ) + s = s+1; + else if( count == 0 ) + { + a = t[i]; + count = 1; + } + else + { + b = t[i]; + count = 2; + } + + if ( a == 0 && b == 0 ) + return 0; + else if( a < b ) + { + *dt_in = a; + *dt_out = b; + return 1; + } + else + { + *dt_in = b; + *dt_out = a; + return 1; + } + +} /* box_intersect */ + +/******************************************************************************* + * cylinder_intersect: compute intersection with a cylinder + * returns 0 when no intersection is found + * or 2/4/8/16 bits depending on intersection, + * and resulting times t0 and t1 + * Written by: EM,NB,ABA 4.2.98 + *******************************************************************************/ +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h) +{ + double D, t_in, t_out, y_in, y_out; + int ret=1; + + D = (2*vx*x + 2*vz*z)*(2*vx*x + 2*vz*z) + - 4*(vx*vx + vz*vz)*(x*x + z*z - r*r); + + if (D>=0) + { + if (vz*vz + vx*vx) { + t_in = (-(2*vz*z + 2*vx*x) - sqrt(D))/(2*(vz*vz + vx*vx)); + t_out = (-(2*vz*z + 2*vx*x) + sqrt(D))/(2*(vz*vz + vx*vx)); + } else if (vy) { /* trajectory parallel to cylinder axis */ + t_in = (-h/2-y)/vy; + t_out = (h/2-y)/vy; + if (t_in>t_out){ + double tmp=t_in; + t_in=t_out;t_out=tmp; + } + } else return 0; + y_in = vy*t_in + y; + y_out =vy*t_out + y; + + if ( (y_in > h/2 && y_out > h/2) || (y_in < -h/2 && y_out < -h/2) ) + return 0; + else + { + if (y_in > h/2) + { t_in = ((h/2)-y)/vy; ret += 2; } + else if (y_in < -h/2) + { t_in = ((-h/2)-y)/vy; ret += 4; } + if (y_out > h/2) + { t_out = ((h/2)-y)/vy; ret += 8; } + else if (y_out < -h/2) + { t_out = ((-h/2)-y)/vy; ret += 16; } + } + *t0 = t_in; + *t1 = t_out; + return ret; + } + else + { + *t0 = *t1 = 0; + return 0; + } +} /* cylinder_intersect */ + + +/******************************************************************************* + * sphere_intersect: Calculate intersection between a line and a sphere. + * returns 0 when no intersection is found + * or 1 in case of intersection with resulting times t0 and t1 + *******************************************************************************/ +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r) +{ + double A, B, C, D, v; + + v = sqrt(vx*vx + vy*vy + vz*vz); + A = v*v; + B = 2*(x*vx + y*vy + z*vz); + C = x*x + y*y + z*z - r*r; + D = B*B - 4*A*C; + if(D < 0) + return 0; + D = sqrt(D); + *t0 = (-B - D) / (2*A); + *t1 = (-B + D) / (2*A); + return 1; +} /* sphere_intersect */ + +/******************************************************************************* + * plane_intersect: Calculate intersection between a plane and a line. + * returns 0 when no intersection is found (i.e. line is parallel to the plane) + * returns 1 or -1 when intersection time is positive and negative respectively + *******************************************************************************/ +int plane_intersect(double *t, double x, double y, double z, + double vx, double vy, double vz, double nx, double ny, double nz, double wx, double wy, double wz) +{ + double s; + if (fabs(s=scalar_prod(nx,ny,nz,vx,vy,vz)) height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} /* end of ESS_2015_Schoenfeldt_cold */ + + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(time +#include +#include + +#ifndef _MSC_EXTENSIONS +#include +#else +# include +# define strcasecmp _stricmp +# define strncasecmp _strnicmp +#endif + + typedef struct struct_table + { + char filename[1024]; + long filesize; + char *header; /* text header, e.g. comments */ + double *data; /* vector { x[0], y[0], ... x[n-1], y[n-1]... } */ + double min_x; /* min value of first column */ + double max_x; /* max value of first column */ + double step_x; /* minimal step value of first column */ + long rows; /* number of rows in matrix block */ + long columns; /* number of columns in matrix block */ + + long begin; /* start fseek index of block */ + long end; /* stop fseek index of block */ + long block_number; /* block index. 0 is catenation of all */ + long array_length; /* number of elements in the t_Table array */ + char monotonic; /* true when 1st column/vector data is monotonic */ + char constantstep; /* true when 1st column/vector data has constant step */ + char method[32]; /* interpolation method: nearest, linear */ + char quiet; /*output level for messages to the console 0: print all messages, 1:only print some/including errors, 2: never print anything.*/ + } t_Table; + +/*maximum number of rows to rebin a table = 1M*/ +enum { mcread_table_rebin_maxsize = 1000000 }; + +typedef struct t_Read_table_file_item { + int ref_count; + t_Table *table_ref; +} t_Read_table_file_item; + +typedef enum enum_Read_table_file_actions {STORE,FIND,GC} t_Read_table_file_actions; + +/* read_table-lib function prototypes */ +/* ========================================================================= */ + +/* 'public' functions */ +long Table_Read (t_Table *Table, char *File, long block_number); +long Table_Read_Offset (t_Table *Table, char *File, long block_number, + long *offset, long max_lines); +long Table_Read_Offset_Binary(t_Table *Table, char *File, char *Type, + long *Offset, long Rows, long Columns); +long Table_Rebin(t_Table *Table); /* rebin table with regular 1st column and interpolate all columns 2:end */ +long Table_Info (t_Table Table); +#pragma acc routine +double Table_Index(t_Table Table, long i, long j); /* get indexed value */ +#pragma acc routine +double Table_Value(t_Table Table, double X, long j); /* search X in 1st column and return interpolated value in j-column */ +t_Table *Table_Read_Array(char *File, long *blocks); +void Table_Free_Array(t_Table *Table); +long Table_Info_Array(t_Table *Table); +int Table_SetElement(t_Table *Table, long i, long j, double value); +long Table_Init(t_Table *Table, long rows, long columns); /* create a Table */ +#pragma acc routine +double Table_Value2d(t_Table Table, double X, double Y); /* same as Table_Index with non-integer indices and 2d interpolation */ +MCDETECTOR Table_Write(t_Table Table, char*file, char*xl, char*yl, + double x1, double x2, double y1, double y2); /* write Table to disk */ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier); +t_Table *Table_File_List_find(char *name, int block, int offset); +int Table_File_List_gc(t_Table *tab); +void *Table_File_List_store(t_Table *tab); + +#define Table_ParseHeader(header, ...) \ + Table_ParseHeader_backend(header,__VA_ARGS__,NULL); + +char **Table_ParseHeader_backend(char *header, ...); +FILE *Open_File(char *name, const char *Mode, char *path); + + +/* private functions */ +void Table_Free(t_Table *Table); +long Table_Read_Handle(t_Table *Table, FILE *fid, long block_number, long max_lines, char *name); +static void Table_Stat(t_Table *Table); +#pragma acc routine +double Table_Interp1d(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp1d_nearest(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp2d(double x, double y, double x1, double y1, double x2, double y2, +double z11, double z12, double z21, double z22); + + +#endif + +/* end of read_table-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/read_table-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Release: McStas CVS_090504 +* Version: $Revision$ +* +* This file is to be imported by components that may read data from table files +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "read_table-lib" +* +*******************************************************************************/ + +#ifndef READ_TABLE_LIB_H +#include "read_table-lib.h" +#endif + +#ifndef READ_TABLE_LIB_C +#define READ_TABLE_LIB_C "$Revision$" + + +/******************************************************************************* + * void *Table_File_List_Handler(action, item, item_modifier) + * ACTION: handle file entries in the read_table-lib file list. If a file is read - it is supposed to be + * stored in a list such that we can avoid reading the same file many times. + * input action: FIND, STORE, GC. check if file exists in the list, store an item in the list, or check if it can be garbage collected. + * input item: depends on the action. + * FIND) item is a filename, and item_modifier is the block number + * STORE) item is the Table to store - item_modifier is ignored + * GC) item is the Table to check. If it has a ref_count >1 then this is simply decremented. + * return depends on the action + * FIND) return a reference to a table+ref_count item if found - NULL otherwise. I.e. NULL means the file has not been read before and must be read again. + * STORE) return NULL always + * GC) return NULL if no garbage collection is needed, return an adress to the t_Table which should be garbage collected. 0x1 is returned if + * the item is not found in the list +*******************************************************************************/ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier){ + + /* logic here is Read_Table should include a call to FIND. If found the return value should just be used as + * if the table had been read from disk. If not found then read the table and STORE. + * Table_Free should include a call to GC. If this returns non-NULL then we should proceed with freeing the memory + * associated with the table item - otherwise only decrement the reference counter since there are more references + * that may need it.*/ + + static t_Read_table_file_item read_table_file_list[1024]; + static int read_table_file_count=0; + + t_Read_table_file_item *tr; + switch(action){ + case FIND: + /*interpret data item as a filename, if it is found return a pointer to the table and increment refcount. + * if not found return the item itself*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + int i=*((int*) item_modifier); + int j=*( ((int*) item_modifier)+1); + if ( !strcmp(tr->table_ref->filename,(char *) item) && + tr->table_ref->block_number==i && tr->table_ref->begin==j ){ + tr->ref_count++; + return (void *) tr; + } + tr++; + } + return NULL; + case STORE: + /*find an available slot and store references to table there*/ + tr=&(read_table_file_list[read_table_file_count++]); + tr->table_ref = ((t_Table *) item); + tr->ref_count++; + return NULL; + case GC: + /* Should this item be garbage collected (freed) - if so scratch the entry and return the address of the item - + * else decrement ref_count and return NULL. + * A non-NULL return expects the item to actually be freed afterwards.*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + if ( tr->table_ref->data ==((t_Table *)item)->data && + tr->table_ref->block_number == ((t_Table *)item)->block_number){ + /*matching item found*/ + if (tr->ref_count>1){ + /*the item is found and no garbage collection needed*/ + tr->ref_count--; + return NULL; + }else{ + /* The item is found and the reference counter is 1. + * This means we should garbage collect. Move remaining list items up one slot, + * and return the table for garbage collection by caller*/ + while (tr->table_ref!=NULL){ + *tr=*(tr+1); + tr++; + } + read_table_file_count--; + return (t_Table *) item; + } + } + tr++; + } + /* item not found, and so should be garbage collected. This could be the case if freeing a + * Table that has been constructed from code - not read from file. Return 0x1 to flag it for + * collection.*/ + return (void *) 0x1 ; + } + /* If we arrive here, nothing worked, return NULL */ + return NULL; +} + +/* Access functions to the handler*/ + +/******************************************** + * t_Table *Table_File_List_find(char *name, int block, int offset) + * input name: filename to search for in the file list + * input block: data block in the file as each file may contain more than 1 data block. + * return a ref. to a table if it is found (you may use this pointer and skip reading the file), NULL otherwise (i.e. go ahead and read the file) +*********************************************/ +t_Table *Table_File_List_find(char *name, int block, int offset){ + int vars[2]={block,offset}; + t_Read_table_file_item *item = Table_File_List_Handler(FIND,name, vars); + if (item == NULL){ + return NULL; + }else{ + return item->table_ref; + } +} +/******************************************** + * int Table_File_List_gc(t_Table *tab) + * input tab: the table to check for references. + * return 0: no garbage collection needed + * 1: Table's data and header (at least) should be freed. +*********************************************/ +int Table_File_List_gc(t_Table *tab){ + void *rval=Table_File_List_Handler(GC,tab,0); + if (rval==NULL) return 0; + else return 1; +} + + +/***************************************************************************** + * void *Table_File_List_store(t_Table *tab) + * input tab: pointer to table to store. + * return None. +*******************************************************************************/ +void *Table_File_List_store(t_Table *tab){ + return Table_File_List_Handler(STORE,tab,0); +} + + +/******************************************************************************* +* FILE *Open_File(char *name, char *Mode, char *path) +* ACTION: search for a file and open it. Optionally return the opened path. +* input name: file name from which table should be extracted +* mode: "r", "w", "a" or any valid fopen mode +* path: NULL or a pointer to at least 1024 allocated chars +* return initialized file handle or NULL in case of error +*******************************************************************************/ + + FILE *Open_File(char *File, const char *Mode, char *Path) + { + char path[1024]; + FILE *hfile = NULL; + + if (!File || File[0]=='\0') return(NULL); + if (!strcmp(File,"NULL") || !strcmp(File,"0")) return(NULL); + + /* search in current or full path */ + strncpy(path, File, 1024); + hfile = fopen(path, Mode); + if(!hfile) + { + char dir[1024]; + + if (!hfile && instrument_source[0] != '\0' && strlen(instrument_source)) /* search in instrument source location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_source, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_source; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_source, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile && instrument_exe[0] != '\0' && strlen(instrument_exe)) /* search in PWD instrument executable location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_exe, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_exe; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_exe, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile) /* search in HOME or . */ + { + strcpy(dir, getenv("HOME") ? getenv("HOME") : "."); + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MCSTAS/data */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "data", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MVCSTAS/contrib */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "contrib", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if(!hfile) + { + // fprintf(stderr, "Warning: Could not open input file '%s' (Open_File)\n", File); + return (NULL); + } + } + if (Path) strncpy(Path, path, 1024); + return(hfile); + } /* end Open_File */ + +/******************************************************************************* +* long Read_Table(t_Table *Table, char *name, int block_number) +* ACTION: read a single Table from a text file +* input Table: pointer to a t_Table structure +* name: file name from which table should be extracted +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* File is opened, read and closed +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebinned with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read(t_Table *Table, char *File, long block_number) + { /* reads all or a single data block from 'file' and returns a Table structure */ + return(Table_Read_Offset(Table, File, block_number, NULL, 0)); + } /* end Table_Read */ + +/******************************************************************************* +* long Table_Read_Offset(t_Table *Table, char *name, int block_number, long *offset +* long max_rows) +* ACTION: read a single Table from a text file, starting at offset +* Same as Table_Read(..) except: +* input offset: pointer to an offset (*offset should be 0 at start) +* max_rows: max number of data rows to read from file (0 means all) +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset(t_Table *Table, char *File, + long block_number, long *offset, + long max_rows) + { /* reads all/a data block in 'file' and returns a Table structure */ + FILE *hfile; + long nelements=0; + long begin=0; + long filesize=0; + char name[1024]; + char path[1024]; + struct stat stfile; + + /*Need to be able to store the pointer*/ + if (!Table) return(-1); + + /*TK: Valgrind flags it as usage of uninitialised variable: */ + Table->quiet = 0; + + //if (offset && *offset) snprintf(name, 1024, "%s@%li", File, *offset); + //else + strncpy(name, File, 1024); + if(offset && *offset){ + begin=*offset; + } + /* Check if the table has already been read from file. + * If so just reuse the table, if not (this is flagged by returning NULL + * set up a new table and read the data into it */ + t_Table *tab_p= Table_File_List_find(name,block_number,begin); + if ( tab_p!=NULL ){ + /*table was found in the Table_File_List*/ + *Table=*tab_p; + MPI_MASTER( + if(Table->quiet<1) + printf("Reusing input file '%s' (Table_Read_Offset)\n", name); + ); + return Table->rows*Table->columns; + } + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read_Offset)\n", path); + ); + } + + /* read file state */ + stat(path,&stfile); filesize = stfile.st_size; + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + + Table_Init(Table, 0, 0); + + /* read file content and set the Table */ + nelements = Table_Read_Handle(Table, hfile, block_number, max_rows, name); + Table->begin = begin; + Table->end = ftell(hfile); + Table->filesize = (filesize>0 ? filesize : 0); + Table_Stat(Table); + + Table_File_List_store(Table); + + if (offset) *offset=Table->end; + fclose(hfile); + return(nelements); + + } /* end Table_Read_Offset */ + +/******************************************************************************* +* long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, +* long *offset, long rows, long columns) +* ACTION: read a single Table from a binary file, starting at offset +* Same as Table_Read_Offset(..) except that it handles binary files. +* input type: may be "float"/NULL or "double" +* offset: pointer to an offset (*offset should be 0 at start) +* rows : number of rows (0 means read all) +* columns: number of columns +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, + long *offset, long rows, long columns) + { /* reads all/a data block in binary 'file' and returns a Table structure */ + long nelements, sizeofelement; + long filesize; + FILE *hfile; + char path[1024]; + struct stat stfile; + double *data = NULL; + double *datatmp = NULL; + long i; + long begin; + + if (!Table) return(-1); + + Table_Init(Table, 0, 0); + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read, Binary)\n", path); + ); + } + + /* read file state */ + stat(File,&stfile); + filesize = stfile.st_size; + Table->filesize=filesize; + + /* read file content */ + if (type && !strcmp(type,"double")) sizeofelement = sizeof(double); + else sizeofelement = sizeof(float); + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + if (rows && filesize > sizeofelement*columns*rows) + nelements = columns*rows; + else nelements = (long)(filesize/sizeofelement); + if (!nelements || filesize <= *offset) return(0); + data = (double*)malloc(nelements*sizeofelement); + if (!data) { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: allocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } + nelements = fread(data, sizeofelement, nelements, hfile); + + if (!data || !nelements) + { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: reading %ld elements from %s file '%s' (Table_Read_Offset_Binary)\n", nelements, type, File); + exit(-1); + } + Table->begin = begin; + Table->end = ftell(hfile); + if (offset) *offset=Table->end; + fclose(hfile); + + datatmp = (double*)realloc(data, (double)nelements*sizeofelement); + if (!datatmp) { + free(data); + fprintf(stderr,"Error: reallocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } else { + data = datatmp; + } + /* copy file data into Table */ + if (type && !strcmp(type,"double")) Table->data = data; + else { + float *s; + double *dataf; + s = (float*)data; + dataf = (double*)malloc(sizeof(double)*nelements); + if (!dataf) { + fprintf(stderr, "Could not allocate data block of size %ld\n", nelements); + exit(-1); + } + for (i=0; idata = dataf; + } + strncpy(Table->filename, File, 1024); + Table->rows = nelements/columns; + Table->columns = columns; + Table->array_length = 1; + Table->block_number = 1; + + Table_Stat(Table); + + return(nelements); + } /* end Table_Read_Offset_Binary */ + +/******************************************************************************* +* long Table_Read_Handle(t_Table *Table, FILE *fid, int block_number, long max_rows, char *name) +* ACTION: read a single Table from a text file handle (private) +* input Table:pointer to a t_Table structure +* fid: pointer to FILE handle +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* max_rows: if non 0, only reads that number of lines +* return initialized single Table t_Table structure containing data, header, ... +* modified Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebined with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read_Handle(t_Table *Table, FILE *hfile, + long block_number, long max_rows, char *name) + { /* reads all/a data block from 'file' handle and returns a Table structure */ + double *Data = NULL; + double *Datatmp = NULL; + char *Header = NULL; + char *Headertmp = NULL; + long malloc_size = CHAR_BUF_LENGTH; + long malloc_size_h = 4096; + long Rows = 0, Columns = 0; + long count_in_array = 0; + long count_in_header = 0; + long count_invalid = 0; + long block_Current_index = 0; + char flag_End_row_loop = 0; + + if (!Table) return(-1); + Table_Init(Table, 0, 0); + if (name && name[0]!='\0') strncpy(Table->filename, name, 1024); + + if(!hfile) { + fprintf(stderr, "Error: File handle is NULL (Table_Read_Handle).\n"); + return (-1); + } + Header = (char*) calloc(malloc_size_h, sizeof(char)); + Data = (double*)calloc(malloc_size, sizeof(double)); + if ((Header == NULL) || (Data == NULL)) { + fprintf(stderr, "Error: Could not allocate Table and Header (Table_Read_Handle).\n"); + return (-1); + } + + int flag_In_array = 0; + do { /* while (!flag_End_row_loop) */ + char *line=malloc(1024*CHAR_BUF_LENGTH*sizeof(char)); + long back_pos=0; /* ftell start of line */ + + if (!line) { + fprintf(stderr,"Could not allocate line buffer\n"); + exit(-1); + } + back_pos = ftell(hfile); + if (fgets(line, 1024*CHAR_BUF_LENGTH, hfile) != NULL) { /* analyse line */ + /* first skip blank and tabulation characters */ + int i = strspn(line, " \t"); + + /* handle comments: stored in header */ + if (NULL != strchr("#%;/", line[i])) + { /* line is a comment */ + count_in_header += strlen(line); + if (count_in_header >= malloc_size_h) { + /* if succeed and in array : add (and realloc if necessary) */ + malloc_size_h = count_in_header+4096; + char *Headertmp = (char*)realloc(Header, malloc_size_h*sizeof(char)); + if(!Headertmp) { + free(Header); + fprintf(stderr, "Error: Could not reallocate Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + strncat(Header, line, 4096); + flag_In_array=0; + /* exit line and file if passed desired block */ + if (block_number > 0 && block_number == block_Current_index) { + flag_End_row_loop = 1; + } + + /* Continue with next line */ + continue; + } + if (strstr(line, "***")) + { + count_invalid++; + /* Continue with next line */ + continue; + } + + /* get the number of columns splitting line with strtok */ + char *lexeme; + char flag_End_Line = 0; + long block_Num_Columns = 0; + const char seps[] = " ,;\t\n\r"; + + lexeme = strtok(line, seps); + while (!flag_End_Line) { + if ((lexeme != NULL) && (lexeme[0] != '\0')) { + /* reading line: the token is not empty */ + double X; + int count=1; + /* test if we have 'NaN','Inf' */ + if (!strncasecmp(lexeme,"NaN",3)) + X = 0; + else if (!strncasecmp(lexeme,"Inf",3) || !strncasecmp(lexeme,"+Inf",4)) + X = FLT_MAX; + else if (!strncasecmp(lexeme,"-Inf",4)) + X = -FLT_MAX; + else + count = sscanf(lexeme,"%lg",&X); + if (count == 1) { + /* reading line: the token is a number in the line */ + if (!flag_In_array) { + /* reading num: not already in a block: starts a new data block */ + block_Current_index++; + flag_In_array = 1; + block_Num_Columns= 0; + if (block_number > 0) { + /* initialise a new data block */ + Rows = 0; + count_in_array = 0; + } /* else append */ + } + /* reading num: all blocks or selected block */ + if (flag_In_array && (block_number == 0 || + block_number == block_Current_index)) { + /* starting block: already the desired number of rows ? */ + if (block_Num_Columns == 0 && + max_rows > 0 && Rows >= max_rows) { + flag_End_Line = 1; + flag_End_row_loop = 1; + flag_In_array = 0; + /* reposition to begining of line (ignore line) */ + fseek(hfile, back_pos, SEEK_SET); + } else { /* store into data array */ + if (count_in_array >= malloc_size) { + /* realloc data buffer if necessary */ + malloc_size = count_in_array*1.5; + Datatmp = (double*) realloc(Data, malloc_size*sizeof(double)); + if (Datatmp == NULL) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Handle).\n", + malloc_size*sizeof(double)); + free(Data); + return (-1); + } else { + Data=Datatmp; + } + } + if (0 == block_Num_Columns) Rows++; + Data[count_in_array] = X; + count_in_array++; + block_Num_Columns++; + } + } /* reading num: end if flag_In_array */ + } /* end reading num: end if sscanf lexeme -> numerical */ + else { + /* reading line: the token is not numerical in that line. end block */ + if (block_Current_index == block_number) { + flag_End_Line = 1; + flag_End_row_loop = 1; + } else { + flag_In_array = 0; + flag_End_Line = 1; + } + } + } + else { + /* no more tokens in line */ + flag_End_Line = 1; + if (block_Num_Columns > 0) Columns = block_Num_Columns; + } + + // parse next token + lexeme = strtok(NULL, seps); + + } /* while (!flag_End_Line) */ + } /* end: if fgets */ + else flag_End_row_loop = 1; /* else fgets : end of file */ + free(line); + } while (!flag_End_row_loop); /* end while flag_End_row_loop */ + + Table->block_number = block_number; + Table->array_length = 1; + + // shrink header to actual size (plus terminating 0-byte) + if (count_in_header) { + Headertmp = (char*)realloc(Header, count_in_header*sizeof(char) + 1); + if(!Headertmp) { + fprintf(stderr, "Error: Could not shrink Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + Table->header = Header; + + if (count_in_array*Rows*Columns == 0) + { + Table->rows = 0; + Table->columns = 0; + free(Data); + return (0); + } + if (Rows * Columns != count_in_array) + { + fprintf(stderr, "Warning: Read_Table :%s %s Data has %li values that should be %li x %li\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_in_array, Rows, Columns); + Columns = count_in_array; Rows = 1; + } + if (count_invalid) + { + fprintf(stderr,"Warning: Read_Table :%s %s Data has %li invalid lines (*****). Ignored.\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_invalid); + } + Datatmp = (double*)realloc(Data, count_in_array*sizeof(double)); + if(!Datatmp) { + fprintf(stderr, "Error: Could reallocate Data block to %li doubles (Table_Read_Handle).\n", count_in_array); + free(Data); + return (-1); + } else { + Data = Datatmp; + } + Table->data = Data; + Table->rows = Rows; + Table->columns = Columns; + + return (count_in_array); + + } /* end Table_Read_Handle */ + +/******************************************************************************* +* long Table_Rebin(t_Table *Table) +* ACTION: rebin a single Table, sorting 1st column in ascending order +* input Table: single table containing data. +* The data block is reallocated in this process +* return updated Table with increasing, evenly spaced first column (index 0) +* number of data elements (-1: error, 0:empty data) +*******************************************************************************/ + long Table_Rebin(t_Table *Table) + { + double new_step=0; + long i; + /* performs linear interpolation on X axis (0-th column) */ + + if (!Table) return(-1); + if (!Table->data + || Table->rows*Table->columns == 0 || !Table->step_x) + return(0); + Table_Stat(Table); /* recompute statitstics and minimal step */ + new_step = Table->step_x; /* minimal step in 1st column */ + + if (!(Table->constantstep)) /* not already evenly spaced */ + { + long Length_Table; + double *New_Table; + + Length_Table = ceil(fabs(Table->max_x - Table->min_x)/new_step)+1; + /*return early if the rebinned table will become too large*/ + if (Length_Table > mcread_table_rebin_maxsize){ + fprintf(stderr,"WARNING: (Table_Rebin): Rebinning table from %s would exceed 1M rows. Skipping.\n", Table->filename); + return(Table->rows*Table->columns); + } + New_Table = (double*)malloc(Length_Table*Table->columns*sizeof(double)); + if (!New_Table) { + fprintf(stderr,"Could not allocate New_Table of size %ld x %ld\n", Length_Table, Table->columns); + exit(-1); + } + for (i=0; i < Length_Table; i++) + { + long j; + double X; + X = Table->min_x + i*new_step; + New_Table[i*Table->columns] = X; + for (j=1; j < Table->columns; j++) + New_Table[i*Table->columns+j] + = Table_Value(*Table, X, j); + } /* end for i */ + + Table->rows = Length_Table; + Table->step_x = new_step; + Table->max_x = Table->min_x + (Length_Table-1)*new_step; + /*max might not be the same anymore + * Use Length_Table -1 since the first and laset rows are the limits of the defined interval.*/ + free(Table->data); + Table->data = New_Table; + Table->constantstep=1; + } /* end else (!constantstep) */ + return (Table->rows*Table->columns); + } /* end Table_Rebin */ + +/******************************************************************************* +* double Table_Index(t_Table Table, long i, long j) +* ACTION: read an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* return Value = data[i][j] +* Returns Value from the i-th row, j-th column of Table +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +double Table_Index(t_Table Table, long i, long j) +{ + long AbsIndex; + + if (Table.rows == 1 || Table.columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table.columns*Table.rows - 1); + i = 0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table.rows - 1); + j = MIN(MAX(0, j), Table.columns - 1); + } + + /* handle vectors specifically */ + AbsIndex = i*(Table.columns)+j; + + if (Table.data != NULL) + return (Table.data[AbsIndex]); + else + return 0; +} /* end Table_Index */ + +/******************************************************************************* +* void Table_SetElement(t_Table *Table, long i, long j, double value) +* ACTION: set an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* value = data[i][j] +* Returns 0 in case of error +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ +int Table_SetElement(t_Table *Table, long i, long j, + double value) +{ + long AbsIndex; + + if (Table->rows == 1 || Table->columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table->columns*Table->rows - 1); i=0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table->rows - 1); + j = MIN(MAX(0, j), Table->columns - 1); + } + + AbsIndex = i*(Table->columns)+j; + if (Table->data != NULL) { + Table->data[AbsIndex] = value; + return 1; + } + + return 0; +} /* end Table_SetElement */ + +/******************************************************************************* +* double Table_Value(t_Table Table, double X, long j) +* ACTION: read column [j] of a single Table at row which 1st column is X +* input Table: table containing data. +* X : data value in the first column (index 0) +* j : index of column from which is extracted the Value (0:Columns-1) +* return Value = data[index for X][j] with linear interpolation +* Returns Value from the j-th column of Table corresponding to the +* X value for the 1st column (index 0) +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value(t_Table Table, double X, long j) +{ + long Index = -1; + double X1=0, Y1=0, X2=0, Y2=0; + double ret=0; + + if (X > Table.max_x) return Table_Index(Table,Table.rows-1 ,j); + if (X < Table.min_x) return Table_Index(Table,0 ,j); + + // Use constant-time lookup when possible + if(Table.constantstep) { + Index = (long)floor( + (X - Table.min_x) / (Table.max_x - Table.min_x) * (Table.rows-1)); + X1 = Table_Index(Table,Index-1,0); + X2 = Table_Index(Table,Index ,0); + } + // Use binary search on large, monotonic tables + else if(Table.monotonic && Table.rows > 100) { + long left = Table.min_x; + long right = Table.max_x; + + while (!((X1 <= X) && (X < X2)) && (right - left > 1)) { + Index = (left + right) / 2; + + X1 = Table_Index(Table, Index-1, 0); + X2 = Table_Index(Table, Index, 0); + + if (X < X1) { + right = Index; + } else { + left = Index; + } + } + } + + // Fall back to linear search, if no-one else has set X1, X2 correctly + if (!((X1 <= X) && (X < X2))) { + /* look for index surrounding X in the table -> Index */ + for (Index=1; Index <= Table.rows-1; Index++) { + X1 = Table_Index(Table, Index-1,0); + X2 = Table_Index(Table, Index ,0); + if ((X1 <= X) && (X < X2)) break; + } /* end for Index */ + } + + Y1 = Table_Index(Table,Index-1, j); + Y2 = Table_Index(Table,Index , j); + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) { + ret = Table_Interp1d(X, X1,Y1, X2,Y2); + } + else if (!strcmp(Table.method,"nearest")) { + ret = Table_Interp1d_nearest(X, X1,Y1, X2,Y2); + } + +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + + return ret; +} /* end Table_Value */ + +/******************************************************************************* +* double Table_Value2d(t_Table Table, double X, double Y) +* ACTION: read element [X,Y] of a matrix Table +* input Table: table containing data. +* X : row index, may be non integer +* Y : column index, may be non integer +* return Value = data[index X][index Y] with bi-linear interpolation +* Returns Value for the indices [X,Y] +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value2d(t_Table Table, double X, double Y) + { + long x1,x2,y1,y2; + double z11,z12,z21,z22; + double ret=0; + + x1 = (long)floor(X); + y1 = (long)floor(Y); + + if (x1 > Table.rows-1 || x1 < 0) { + x2 = x1; + } else { + x2 = x1 + 1; + } + + if (y1 > Table.columns-1 || y1 < 0) { + y2 = y1; + } else { + y2 = y1 + 1; + } + + z11 = Table_Index(Table, x1, y1); + + if (y2 != y1) z12=Table_Index(Table, x1, y2); else z12 = z11; + if (x2 != x1) z21=Table_Index(Table, x2, y1); else z21 = z11; + if (y2 != y1) z22=Table_Index(Table, x2, y2); else z22 = z21; + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) + ret = Table_Interp2d(X,Y, x1,y1,x2,y2, z11,z12,z21,z22); +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + else { + if (fabs(X-x1) < fabs(X-x2)) { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z11; else ret = z12; + } else { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z21; else ret = z22; + } + } + return ret; + } /* end Table_Value2d */ + + +/******************************************************************************* +* void Table_Free(t_Table *Table) +* ACTION: free a single Table. First Call Table_File_list_gc. If this returns +* non-zero it means there are more refernces to the table, and so the table +* should not bee freed. +* return: empty Table +*******************************************************************************/ + void Table_Free(t_Table *Table) + { + if( !Table_File_List_gc(Table) ){ + return; + } + if (!Table) return; + if (Table->data != NULL) free(Table->data); + if (Table->header != NULL) free(Table->header); + Table->data = NULL; + Table->header = NULL; + } /* end Table_Free */ + +/****************************************************************************** +* void Table_Info(t_Table Table) +* ACTION: print informations about a single Table +*******************************************************************************/ + long Table_Info(t_Table Table) + { + char buffer[256]; + long ret=0; + + if (!Table.block_number) strcpy(buffer, "catenated"); + else sprintf(buffer, "block %li", Table.block_number); + printf("Table from file '%s' (%s)", + Table.filename[0] != '\0' ? Table.filename : "", buffer); + if ((Table.data != NULL) && (Table.rows*Table.columns)) + { + printf(" is %li x %li ", Table.rows, Table.columns); + if (Table.rows*Table.columns > 1) + printf("(x=%g:%g)", Table.min_x, Table.max_x); + else printf("(x=%g) ", Table.min_x); + ret = Table.rows*Table.columns; + if (Table.monotonic) printf(", monotonic"); + if (Table.constantstep) printf(", constant step"); + printf(". interpolation: %s\n", Table.method); + } + else printf(" is empty.\n"); + + if (Table.header && strlen(Table.header)) { + char *header; + int i; + header = malloc(80); + if (!header) return(ret); + for (i=0; i<80; header[i++]=0); + strncpy(header, Table.header, 75); + if (strlen(Table.header) > 75) { + strcat( header, " ..."); + } + for (i=0; iheader = NULL; + Table->filename[0]= '\0'; + Table->filesize= 0; + Table->min_x = 0; + Table->max_x = 0; + Table->step_x = 0; + Table->block_number = 0; + Table->array_length = 0; + Table->monotonic = 0; + Table->constantstep = 0; + Table->begin = 0; + Table->end = 0; + strcpy(Table->method,"linear"); + + if (rows*columns >= 1) { + data = (double*)malloc(rows*columns*sizeof(double)); + if (data) for (i=0; i < rows*columns; data[i++]=0); + else { + if(Table->quiet<2) + fprintf(stderr,"Error: allocating %ld double elements." + "Too big (Table_Init).\n", rows*columns); + rows = columns = 0; + } + } + Table->rows = (rows >= 1 ? rows : 0); + Table->columns = (columns >= 1 ? columns : 0); + Table->data = data; + return(Table->rows*Table->columns); +} /* end Table_Init */ + +/****************************************************************************** +* long Table_Write(t_Table Table, char *file, x1,x2, y1,y2) +* ACTION: write a Table to disk (ascii). +* when x1=x2=0 or y1=y2=0, the table default limits are used. +* return: 0=all is fine, non-0: error +*******************************************************************************/ +MCDETECTOR Table_Write(t_Table Table, char *file, char *xl, char *yl, + double x1, double x2, double y1, double y2) +{ + MCDETECTOR detector; + + if ((Table.data == NULL) && (Table.rows*Table.columns)) { + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + return(detector); /* Table is empty - nothing to do */ + } + if (!x1 && !x2) { + x1 = Table.min_x; + x2 = Table.max_x; + } + if (!y1 && !y2) { + y1 = 1; + y2 = Table.columns; + } + + /* transfer content of the Table into a 2D detector */ + Coords coords = { 0, 0, 0}; + Rotation rot; + rot_set_rotation(rot, 0, 0, 0); + + if (Table.rows == 1 || Table.columns == 1) { + detector = mcdetector_out_1D(Table.filename, + xl ? xl : "", yl ? yl : "", + "x", x1, x2, + Table.rows * Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } else { + detector = mcdetector_out_2D(Table.filename, + xl ? xl : "", yl ? yl : "", + x1, x2, y1, y2, + Table.rows, Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } + return(detector); +} + +/****************************************************************************** +* void Table_Stat(t_Table *Table) +* ACTION: computes min/max/mean step of 1st column for a single table (private) +* return: updated Table +*******************************************************************************/ + static void Table_Stat(t_Table *Table) + { + long i; + double max_x, min_x; + double row=1; + char monotonic=1; + char constantstep=1; + double step=0; + long n; + + if (!Table) return; + if (!Table->rows || !Table->columns) return; + if (Table->rows == 1) row=0; // single row + max_x = -FLT_MAX; + min_x = FLT_MAX; + n = (row ? Table->rows : Table->columns); + /* get min and max of first column/vector */ + for (i=0; i < n; i++) + { + double X; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + if (X < min_x) min_x = X; + if (X > max_x) max_x = X; + } /* for */ + + /* test for monotonicity and constant step if the table is an XY or single vector */ + if (n > 1) { + /* mean step */ + step = (max_x - min_x)/(n-1); + /* now test if table is monotonic on first column, and get minimal step size */ + for (i=0; i < n-1; i++) { + double X, diff;; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if (diff && fabs(diff) < fabs(step)) step = diff; + /* change sign ? */ + if ((max_x - min_x)*diff < 0 && monotonic) + monotonic = 0; + } /* end for */ + + /* now test if steps are constant within READ_TABLE_STEPTOL */ + if(!step){ + /*means there's a disconitnuity -> not constantstep*/ + constantstep=0; + }else if (monotonic) { + for (i=0; i < n-1; i++) { + double X, diff; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if ( fabs(step)*(1+READ_TABLE_STEPTOL) < fabs(diff) || + fabs(diff) < fabs(step)*(1-READ_TABLE_STEPTOL) ) + { constantstep = 0; break; } + } + } + + } + Table->step_x= step; + Table->max_x = max_x; + Table->min_x = min_x; + Table->monotonic = monotonic; + Table->constantstep = constantstep; + } /* end Table_Stat */ + +/****************************************************************************** +* t_Table *Table_Read_Array(char *File, long *blocks) +* ACTION: read as many data blocks as available, iteratively from file +* return: initialized t_Table array, last element is an empty Table. +* the number of extracted blocks in non NULL pointer *blocks +*******************************************************************************/ + t_Table *Table_Read_Array(char *File, long *blocks) + { + t_Table *Table_Array = NULL; + t_Table *Table_Arraytmp = NULL; + long offset=0; + long block_number=0; + long allocated=256; + long nelements=1; + + /* first allocate an initial empty t_Table array */ + Table_Array = (t_Table *)malloc(allocated*sizeof(t_Table)); + if (!Table_Array) { + fprintf(stderr, "Error: Can not allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + *blocks = 0; + return (NULL); + } + + while (nelements > 0) + { + t_Table Table; + + /* if ok, set t_Table block number else exit loop */ + block_number++; + Table.block_number = block_number; + + /* access file at offset and get following block. Block number is from the set offset + * hence the hardcoded 1 - i.e. the next block counted from offset.*/ + nelements = Table_Read_Offset(&Table, File, 1, &offset,0); + /*if the block is empty - don't store it*/ + if (nelements>0){ + /* if t_Table array is not long enough, expand and realocate */ + if (block_number >= allocated-1) { + allocated += 256; + Table_Arraytmp = (t_Table *)realloc(Table_Array, + allocated*sizeof(t_Table)); + if (!Table_Arraytmp) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + free(Table_Array); + *blocks = 0; + return (NULL); + } else { + Table_Array = Table_Arraytmp; + } + } + /* store it into t_Table array */ + //snprintf(Table.filename, 1024, "%s#%li", File, block_number-1); + Table_Array[block_number-1] = Table; + } + /* continues until we find an empty block */ + } + /* send back number of extracted blocks */ + if (blocks) *blocks = block_number-1; + + /* now store total number of elements in Table array */ + for (offset=0; offset < block_number; + Table_Array[offset++].array_length = block_number-1); + + return(Table_Array); + } /* end Table_Read_Array */ +/******************************************************************************* +* void Table_Free_Array(t_Table *Table) +* ACTION: free a Table array +*******************************************************************************/ + void Table_Free_Array(t_Table *Table) + { + long index; + if (!Table) return; + for (index=0;index < Table[0].array_length; index++){ + Table_Free(&Table[index]); + } + free(Table); + } /* end Table_Free_Array */ + +/****************************************************************************** +* long Table_Info_Array(t_Table *Table) +* ACTION: print informations about a Table array +* return: number of elements in the Table array +*******************************************************************************/ + long Table_Info_Array(t_Table *Table) + { + long index=0; + + if (!Table) return(-1); + while (index < Table[index].array_length + && (Table[index].data || Table[index].header) + && (Table[index].rows*Table[index].columns) ) { + Table_Info(Table[index]); + index++; + } + printf("This Table array contains %li elements\n", index); + return(index); + } /* end Table_Info_Array */ + +/****************************************************************************** +* char **Table_ParseHeader(char *header, symbol1, symbol2, ..., NULL) +* ACTION: search for char* symbols in header and return their value or NULL +* the search is not case sensitive. +* Last argument MUST be NULL +* return: array of char* with line following each symbol, or NULL if not found +*******************************************************************************/ +#ifndef MyNL_ARGMAX +#define MyNL_ARGMAX 50 +#endif + +char **Table_ParseHeader_backend(char *header, ...){ + va_list ap; + char exit_flag=0; + int counter =0; + char **ret =NULL; + if (!header || header[0]=='\0') return(NULL); + + ret = (char**)calloc(MyNL_ARGMAX, sizeof(char*)); + if (!ret) { + printf("Table_ParseHeader: Cannot allocate %i values array for Parser (Table_ParseHeader).\n", + MyNL_ARGMAX); + return(NULL); + } + for (counter=0; counter < MyNL_ARGMAX; ret[counter++] = NULL); + counter=0; + + va_start(ap, header); + while(!exit_flag && counter < MyNL_ARGMAX-1) + { + char *arg_char=NULL; + char *pos =NULL; + /* get variable argument value as a char */ + arg_char = va_arg(ap, char *); + if (!arg_char || arg_char[0]=='\0'){ + exit_flag = 1; break; + } + /* search for the symbol in the header */ + pos = (char*)strcasestr(header, arg_char); + if (pos) { + char *eol_pos; + eol_pos = strchr(pos+strlen(arg_char), '\n'); + if (!eol_pos) + eol_pos = strchr(pos+strlen(arg_char), '\r'); + if (!eol_pos) + eol_pos = pos+strlen(pos)-1; + ret[counter] = (char*)malloc(eol_pos - pos); + if (!ret[counter]) { + printf("Table_ParseHeader: Cannot allocate value[%i] array for Parser searching for %s (Table_ParseHeader).\n", + counter, arg_char); + exit_flag = 1; break; + } + strncpy(ret[counter], pos+strlen(arg_char), eol_pos - pos - strlen(arg_char)); + ret[counter][eol_pos - pos - strlen(arg_char)]='\0'; + } + counter++; + } + va_end(ap); + return(ret); +} /* Table_ParseHeader */ + +/****************************************************************************** +* double Table_Interp1d(x, x1, y1, x2, y2) +* ACTION: interpolates linearly at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d(double x, + double x1, double y1, + double x2, double y2) +{ + double slope; + if (x2 == x1) return (y1+y2)/2; + if (y1 == y2) return y1; + slope = (y2 - y1)/(x2 - x1); + return y1+slope*(x - x1); +} /* Table_Interp1d */ + +/****************************************************************************** +* double Table_Interp1d_nearest(x, x1, y1, x2, y2) +* ACTION: table lookup with nearest method at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d_nearest(double x, + double x1, double y1, + double x2, double y2) +{ + if (fabs(x-x1) < fabs(x-x2)) return (y1); + else return(y2); +} /* Table_Interp1d_nearest */ + +/****************************************************************************** +* double Table_Interp2d(x,y, x1,y1, x2,y2, z11,z12,z21,z22) +* ACTION: interpolates bi-linearly at (x,y) between z1=f(x1,y1) and z2=f(x2,y2) +* return: z=f(x,y) value +* x,y | x1 x2 +* ---------------- +* y1 | z11 z21 +* y2 | z12 z22 +*******************************************************************************/ +double Table_Interp2d(double x, double y, + double x1, double y1, + double x2, double y2, + double z11, double z12, double z21, double z22) +{ + double ratio_x, ratio_y; + if (x2 == x1) return Table_Interp1d(y, y1,z11, y2,z12); + if (y1 == y2) return Table_Interp1d(x, x1,z11, x2,z21); + + ratio_y = (y - y1)/(y2 - y1); + ratio_x = (x - x1)/(x2 - x1); + return (1-ratio_x)*(1-ratio_y)*z11 + ratio_x*(1-ratio_y)*z21 + + ratio_x*ratio_y*z22 + (1-ratio_x)*ratio_y*z12; +} /* Table_Interp2d */ + +/* end of read_table-lib.c */ +#endif // READ_TABLE_LIB_C + + +/* Shared user declarations for all components types 'Guide_four_side'. */ + + + void + TEST_INPUT (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s should \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + fprintf (stderr, " (for negative values use the global guide position !) \n"); + exit (-1); + }; + + void + TEST_INPUT_1 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s must \n", compname, name); + fprintf (stderr, " be -1 (transperent) or \n"); + fprintf (stderr, " be 0 (absorbing) or \n"); + fprintf (stderr, " be > 0 (reflecting) \n"); + exit (-1); + }; + + void + TEST_INPUT_2 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s can \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + exit (-1); + }; + + void + TEST_INPUT_3 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %sr must \n", compname, name); + fprintf (stderr, " be positive\n"); + exit (-1); + }; + + void + TEST_INPUT_4 (char name[20], char name1[20], double inputname, double inputname1, char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) \n", compname); + fprintf (stderr, " %s have to be bigger or equal %s \n", name, name1); + printf (" %s = %f \n", name, inputname); + printf (" %s = %f \n", name1, inputname1); + fprintf (stderr, " check curve parameter and wallthicknesses! \n"); + exit (-1); + }; + + /* function to calculate the needed parameters for an elliptic wall*/ + + void + ELLIPSE (double w1, double length, double lin, double lout, double wallthick, double* a, double* b, double* a2, double* b2, double* z0, double* w2, double* awt, + double* a2wt, double* bwt, double* b2wt, double* w2wt, double* w1wt) { + double DIV1, lb, u1, u2, u1wt, u2wt, dx, dz; + lb = lin + length + lout; /* lenght between the two focal points of the wall */ + *z0 = (lin - length - lout) / 2.0; + u1 = sqrt ((lin * lin) + (w1 * w1)); /* length between entrance focal point and starting point of the wall (INNER side)*/ + u2 = sqrt ((w1 * w1) + ((length + lout) * (length + lout))); /* length between exit focal point and end point of the wall (INNER side) */ + *a = (u1 + u2) / 2.0; /* long half axis a of the ellipse (INNER side)*/ + *a2 = *a * (*a); /* square of the long axis a (INNER side)*/ + *b = sqrt (*a2 - (lb * (lb) / 4.0)); /* short half axis b of the ellipse (INNER side)*/ + *b2 = *b * (*b); /* square of short half axis b of the ellipse (INNER side)*/ + DIV1 = sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2))); /* help variable to calculated the exit width (INNER side)*/ + *w2 = *b * (DIV1); /* exit width (INNER side)*/ + if (length < (lb) / 2 - lout) { /* if the maximum opening of the guide is smaller than the small half axis b, the OUTER side is defined by: */ + dx = wallthick * sin (atan (*a2 * w1 / (*b2 * (*z0)))); + dz = wallthick * cos (atan (*a2 * w1 / (*b2 * (*z0)))); + u1wt = sqrt (((lin + dz) * (lin + dz)) + ((w1 + dx) * (w1 + dx))); /* length between entrance focal point and starting point of the wall (OUTER side)*/ + u2wt = sqrt (((w1 + dx) * (w1 + dx)) + + ((length + lout - dz) * (length + lout - dz))); /* length between exit focal point and end point of the wall (OUTER side) */ + *awt = (u1wt + u2wt) / 2.0; /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *awt * (*awt); /* square of the long axis a (OUTER side)*/ + *bwt = sqrt (*a2wt - (lb * lb / 4.0)); /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout - length) * (lb / 2.0 - lout - length) / (*a2wt))); /* entrance width for OUTER side */ + } else { /* if the maximum opening of the guide is the small half axis b the OUTER wall is defined by:*/ + *bwt = *b + wallthick; /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of the long axis a (OUTER side)*/ + *awt = sqrt (*b2wt + (lb * lb / 4.0)); /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *b2wt + (lb * lb / 4.0); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lin) * (lb / 2.0 - lin) / (*a2wt))); /* entrance width for OUTER side */ + } + } + + /* function to calculate the needed parameters for a parabolical focusing wall*/ + + void + PARABEL_FOCUS (double w1, double length, double lout, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = (length + lout) * (length + lout); /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (lout + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = length + lout + *p2para / 4.0; /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = 1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (w1 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (w1 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (length + lout - dz) * (length + lout - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((w1 + dx) * (w1 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *pbwt = length + lout + *p2parawt / 4.0; /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = 1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + *w2wt = sqrt (*p2parawt * (lout + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lout + length + *p2parawt / 4.0)); /* entrance width (OUTER side) */ + } + + /* function to calculate the needed parameters for a parabolical defocusing wall*/ + + void + PARABEL_DEFOCUS (double w1, double length, double lin, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = lin * lin; /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (length + lin + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = -(lin + *p2para / 4.0); /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = -1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (-*w2 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (-*w2 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (lin + length - dz) * (lin + length - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((*w2 + dx) * (*w2 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lin + *p2parawt / 4.0)); /* entrance width for right focusing parabolic wall (OUTER side) */ + *w2wt = sqrt (*p2parawt * (lin + length + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *pbwt = -(lin + *p2parawt / 4.0); /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = -1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + } + + /* function to calculate the needed parameters for a linear wall*/ + + void + LINEAR (double w1, double w2, double length, double wallthick, double* w1wt, double* w2wt) { + *w1wt = w1 + wallthick / (cos (atan ((w1 - w2) / length))); /* entrance width (OUTER side) */ + *w2wt = w2 + wallthick / (cos (atan ((w1 - w2) / length))); /* exit width (OUTER side) */ + } + + /* function to calculate the intersection time with a linear wall at an negative axis*/ + + void + TIME_LINEAR (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (-w2 + w1) / length; + *t2 = (anstieg * zin - w1 - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (INNER side)*/ + *t2wt = (anstieg * zin - w1wt - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (OUTER side)*/ + if (*t2 < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (*t2wt < 1e-15) /* see comments above*/ + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with a linear wall at an positive axis*/ + + void + TIME_LINEAR_1 (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (w2 - w1) / length; + *t2 = (anstieg * zin + w1 - xin) / (vxin1 - anstieg * vzin1); + *t2wt = (anstieg * zin + w1wt - xin) / (vxin1 - anstieg * vzin1); + if (*t2 < 1e-15) + *t2 = t1in + 2.0; + if (*t2wt < 1e-15) + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with an elliptical wall at a negative axis*/ + + void + TIME_ELLIPSE (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + /* solving the elliptic equation in respect to z and the straight neutron trajectoty, only two z values possible! */ + + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); /* p parameter of quadratic equation for calulation the z component of the intersection point with + respect to the neutron trajectory (INNER side)*/ + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); /* q parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (INNER side)*/ + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; /* if the neutron never touch the ellipse the time is set to be bigger than the time (t1) needed to pass the component */ + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); /* first solution for z (INNER side)*/ + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); /* second solution for z (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* interaction time for first z value (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* interactime time for second z value (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) /* for the right wall x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); /* p parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (OUTER side)*/ + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); /* q parameter of quadratic equation for calulation the z component of the + intersection point with respect to the neutron trajectory (OUTER side)*/ + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; /* if the neutron never touch the ellipse the time is set bigger than need to pass the component */ + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); /* first solution for z (OUTER side) */ + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); /* second solution for z (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* interaction time for first z value (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* interactime time for second z value (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER side)*/ + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with an elliptical wall at a positive axis*/ + + void + TIME_ELLIPSE_1 (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; + n = -m * zin + xin; + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + } + + /* function to calculate the intersection time with a parabolical wall at an negative axis*/ + + void + TIME_PARABEL (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); /* p parameter of quadratic equation (INNER side) */ + q = n * n / (m * m) - pb / (pa * m * m); /* q parameter of quadratic equation (INNER side) */ + if (q > 0 + && q > (p * p + / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) the time is set to t1+2.0 */ + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { /* only neutron with a negativ x-component can hit the RIGHT wall (INNER side)*/ + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; /* the time solution for neutron with a positive x component is set to a time long behind the exit of the guide */ + /* (means will not scatter with the right wall)*/ + } + } else { /* if vx is not zero and x is a real variable*/ + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); /* first z-solution for intersection (INNER side)*/ + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); /* second z-solution for intersection (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* first time solution (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* second time solution (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) { /* the x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; + } /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); /* p parameter of quadratic equation (OUTER side)*/ + qwt = n * n / (m * m) - pbwt / (pawt * m * m); /* q parameter of quadratic equation (OUTER side)*/ + if (qwt > 0 && qwt > (pwt * pwt / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) and the + time is set to t1+2.0 */ + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; /* only neutron with a negativ x-component can hit the RIGHT wall (OUTER wall)*/ + } else { + *t2w1wt = t1in + 2.0; + } + } else { /* if vx is not zero */ + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); /* first z-solution for intersection (OUTER side)*/ + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); /* second z-solution for intersection (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* first time solution (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* second time solution (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER wall)*/ + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with a parabolical wall at an positive axis*/ + + void + TIME_PARABEL_1 (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; + n = -m * zin + xin; + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); + q = n * n / (m * m) - pb / (pa * m * m); + if (q > 0 && q > (p * p / 4)) { + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; + } + } else { + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); + qwt = n * n / (m * m) - pbwt / (pawt * m * m); + if (qwt > 0 && qwt > (pwt * pwt / 4)) { + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; + } else { + *t2w1wt = t1in + 2.0; + } + } else { + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + }; + + /* test if the left or right scattered neutron in the upper and lower limits defined by TOP und BOTTOM walls */ + + void + TEST_UP_DOWN (double t, double vzin, double zin, double vyin, double yin, double length, double linhdin, double louthdin, double linhuin, double louthuin, + double h2din, double h1din, double h2uin, double h1uin, double bhdin, double z0hdin, double a2hdin, double bhuin, double z0huin, double a2huin, + double pbhdin, double pahdin, double pbhuin, double pahuin, double* ylimitd, double* ylimitu, double* ytest) { + if (linhdin == 0 && louthdin == 0) { + *ylimitd + = (-h2din + h1din) / length * (vzin * t + zin) - h1din; /* calculation of the lower y-limit given by a linear bottom wall and the interaction time*/ + } else { + if (linhdin != 0 && louthdin != 0) { + *ylimitd = -bhdin + * sqrt (1 + - ((z0hdin + (vzin * t + zin)) * (z0hdin + (vzin * t + zin))) + / a2hdin); /* calculation of the lower y-limit given by a elliptic bottom wall and the interaction time*/ + } else { + *ylimitd = -sqrt (((vzin * t + zin) - pbhdin) / -pahdin); /* calculation of the lower y-limit given by a parabolic bottom wall and the interaction time*/ + } + } + if (linhuin == 0 && louthuin == 0) { + *ylimitu = (h2uin - h1uin) / length * (vzin * t + zin) + h1uin; /* calculation of the upper y-limit given by a linear top wall and the interaction time*/ + } else { + if (linhuin != 0 && louthuin != 0) { + *ylimitu = bhuin + * sqrt (1 + - ((z0huin + (vzin * t + zin)) * (z0huin + (vzin * t + zin))) + / a2huin); /* calculation of the upper y-limit given by a elliptic top wall and the interaction time*/ + } else { + *ylimitu = sqrt (((vzin * t + zin) - pbhuin) / -pahuin); /* calculation of the upper y-limit given by a parabolic top wall and the interaction time*/ + } + } + *ytest = vyin * t + yin; /* calculation of the y coordinate of the neutron at the interaction time */ + }; + + /* test if the up or down scattered neutron in the right and left limits defined by RIGHT und LEFT walls */ + + void + TEST_LEFT_RIGHT (double t, double vzin, double zin, double vxin, double xin, double length, double linwrin, double loutwrin, double linwlin, double loutwlin, + double w2rin, double w1rin, double w2lin, double w1lin, double bwrin, double z0wrin, double a2wrin, double bwlin, double z0wlin, double a2wlin, + double pbwrin, double pawrin, double pbwlin, double pawlin, double* xlimitr, double* xlimitl, double* xtest) { + if (linwrin == 0 && loutwrin == 0) { + *xlimitr = (-w2rin + w1rin) / length * (vzin * t + zin) - w1rin; + } else { + if (linwrin != 0 && loutwrin != 0) { + *xlimitr = -bwrin * sqrt (1 - ((z0wrin + (vzin * t + zin)) * (z0wrin + (vzin * t + zin))) / a2wrin); + } else { + *xlimitr = -sqrt (((vzin * t + zin) - pbwrin) / -pawrin); + } + } + if (linwlin == 0 && loutwlin == 0) { + *xlimitl = (w2lin - w1lin) / length * (vzin * t + zin) + w1lin; + } else { + if (linwlin != 0 && loutwlin != 0) { + *xlimitl = bwlin * sqrt (1 - ((z0wlin + (vzin * t + zin)) * (z0wlin + (vzin * t + zin))) / a2wlin); + } else { + *xlimitl = sqrt (((vzin * t + zin) - pbwlin) / -pawlin); + } + } + *xtest = vxin * t + xin; + }; + +/* Shared user declarations for all components types 'Slit'. */ + void + slit_print_if (int condition, char* level, char* message, char* component) { + if (condition) + fprintf (stderr, "Slit: %s: %s: %s\n", component, level, message); + } + void + slit_error_if (int condition, char* message, char* component) { + slit_print_if (condition, "Error", message, component); + if (condition) + exit (-1); + } + void + slit_warning_if (int condition, char* message, char* component) { + slit_print_if (condition, "Warning", message, component); + } + +/* Shared user declarations for all components types 'Graphite_Diffuser'. */ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} + +/* Shared user declarations for all components types 'Monitor_nD'. */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.h +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H + +#define MONITOR_ND_LIB_H "$Revision$" +#define MONnD_COORD_NMAX 30 /* max number of variables to record */ + + typedef struct MonitornD_Defines + { + int COORD_NONE ; + int COORD_X ; + int COORD_Y ; + int COORD_Z ; + int COORD_RADIUS; + int COORD_VX ; + int COORD_VY ; + int COORD_VZ ; + int COORD_V ; + int COORD_T ; + int COORD_P ; + int COORD_SX ; + int COORD_SY ; + int COORD_SZ ; + int COORD_KX ; + int COORD_KY ; + int COORD_KZ ; + int COORD_K ; + int COORD_ENERGY; + int COORD_LAMBDA; + int COORD_KXY ; + int COORD_KYZ ; + int COORD_KXZ ; + int COORD_VXY ; + int COORD_VYZ ; + int COORD_VXZ ; + int COORD_HDIV ; + int COORD_VDIV ; + int COORD_ANGLE ; + int COORD_NCOUNT; + int COORD_THETA ; + int COORD_PHI ; + int COORD_USER1 ; + int COORD_USER2 ; + int COORD_USER3 ; + int COORD_USERDOUBLE0 ; + int COORD_USERDOUBLE1 ; + int COORD_USERDOUBLE2 ; + int COORD_USERDOUBLE3 ; + int COORD_USERDOUBLE4 ; + int COORD_USERDOUBLE5 ; + int COORD_USERDOUBLE6 ; + int COORD_USERDOUBLE7 ; + int COORD_USERDOUBLE8 ; + int COORD_USERDOUBLE9 ; + int COORD_USERDOUBLE10 ; + int COORD_USERDOUBLE11 ; + int COORD_USERDOUBLE12 ; + int COORD_USERDOUBLE13 ; + int COORD_USERDOUBLE14 ; + int COORD_USERDOUBLE15 ; + int COORD_XY ; + int COORD_XZ ; + int COORD_YZ ; + int COORD_PIXELID; + + /* token modifiers */ + int COORD_VAR ; /* next token should be a variable or normal option */ + int COORD_MIN ; /* next token is a min value */ + int COORD_MAX ; /* next token is a max value */ + int COORD_DIM ; /* next token is a bin value */ + int COORD_FIL ; /* next token is a filename */ + int COORD_EVNT ; /* next token is a buffer size value */ + int COORD_3HE ; /* next token is a 3He pressure value */ + int COORD_LOG ; /* next variable will be in log scale */ + int COORD_ABS ; /* next variable will be in abs scale */ + int COORD_SIGNAL; /* next variable will be the signal var */ + int COORD_AUTO ; /* set auto limits */ + + char TOKEN_DEL[32]; /* token separators */ + + char SHAPE_SQUARE; /* shape of the monitor */ + char SHAPE_DISK ; + char SHAPE_SPHERE; + char SHAPE_CYLIND; + char SHAPE_BANANA; /* cylinder without top/bottom, on restricted angular area */ + char SHAPE_BOX ; + char SHAPE_PREVIOUS; + char SHAPE_OFF; + + } MonitornD_Defines_type; + + typedef struct MonitornD_Variables + { + double area; + double Sphere_Radius ; + double Cylinder_Height ; + char Flag_With_Borders ; /* 2 means xy borders too */ + char Flag_List ; /* 1 store 1 buffer, 2 is list all, 3 list all+append */ + char Flag_Multiple ; /* 1 when n1D, 0 for 2D */ + char Flag_Verbose ; + int Flag_Shape ; + char Flag_Auto_Limits ; /* get limits from first Buffer */ + char Flag_Absorb ; /* monitor is also a slit */ + char Flag_per_cm2 ; /* flux is per cm2 */ + char Flag_log ; /* log10 of the flux */ + char Flag_parallel ; /* set neutron state back after detection (parallel components) */ + char Flag_Binary_List ; + char Flag_capture ; /* lambda monitor with lambda/lambda(2200m/s = 1.7985 Angs) weightening */ + int Flag_signal ; /* 0:monitor p, else monitor a mean value */ + int Flag_mantid ; /* 0:normal monitor, else do mantid-event specifics */ + int Flag_OFF ; /* Flag to indicate external geometry from OFF file */ + long long OFF_polyidx; /* When intersection is done externally by off_intersect, this gives the + polygon number, i.e. pixel index */ + unsigned long Coord_Number ; /* total number of variables to monitor, plus intensity (0) */ + unsigned long Coord_NumberNoPixel; /* same but without counting PixelID */ + unsigned long Buffer_Block ; /* Buffer size for list or auto limits */ + long long Neutron_Counter ; /* event counter, simulation total counts is mcget_ncount() */ + unsigned long Buffer_Counter ; /* index in Buffer size (for realloc) */ + unsigned long Buffer_Size ; + int Coord_Type[MONnD_COORD_NMAX]; /* type of variable */ + char Coord_Label[MONnD_COORD_NMAX][30]; /* label of variable */ + char Coord_Var[MONnD_COORD_NMAX][30]; /* short id of variable */ + long Coord_Bin[MONnD_COORD_NMAX]; /* bins of variable array */ + long Coord_BinProd[MONnD_COORD_NMAX]; /* product of bins of variable array */ + double Coord_Min[MONnD_COORD_NMAX]; + double Coord_Max[MONnD_COORD_NMAX]; + char Monitor_Label[MONnD_COORD_NMAX*30];/* Label for monitor */ + char Mon_File[128]; /* output file name */ + + /* these don't seem to be used anymore as they are superseded by _particle + double cx, cy, cz; + double cvx, cvy, cvz; + double ckx, cky, ckz; + double csx, csy, csz; + double cEx, cEy, cEz; + double cs1, cs2, ct, cphi, cp; */ + + double He3_pressure; + char Flag_UsePreMonitor ; /* use a previously stored neutron parameter set */ + char UserName1[128]; + char UserName2[128]; + char UserName3[128]; + char UserVariable1[128]; + char UserVariable2[128]; + char UserVariable3[128]; + double UserDoubles[16]; + char option[CHAR_BUF_LENGTH]; + + long long int Nsum; + double psum, p2sum; + double **Mon2D_N; + double **Mon2D_p; + double **Mon2D_p2; + double *Mon2D_Buffer; + unsigned long PixelID; + + double mxmin,mxmax,mymin,mymax,mzmin,mzmax; + double mean_dx, mean_dy, min_x, min_y, max_x, max_y, mean_p; + + char compcurname[128]; + Coords compcurpos; + Rotation compcurrot; + int compcurindex; + } MonitornD_Variables_type; + +/* monitor_nd-lib function prototypes */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *, MonitornD_Variables_type *, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, int); +#pragma acc routine +int Monitor_nD_Trace(MonitornD_Defines_type *, MonitornD_Variables_type *, _class_particle* _particle); +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_Finally(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_McDisplay(MonitornD_Defines_type *, MonitornD_Variables_type *); + +#endif + +/* end of monitor_nd-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H +#error McStas : please import this library with %include "monitor_nd-lib" +#endif + +/* ========================================================================= */ +/* Monitor_nD_Init: this routine is used to parse options */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars, + MCNUM xwidth, + MCNUM yheight, + MCNUM zdepth, + MCNUM xmin, + MCNUM xmax, + MCNUM ymin, + MCNUM ymax, + MCNUM zmin, + MCNUM zmax, + int offflag) + { + long carg = 1; + char *option_copy, *token; + char Flag_New_token = 1; + char Flag_End = 1; + char Flag_All = 0; + char Flag_No = 0; + char Flag_abs = 0; + int Flag_auto = 0; /* -1: all, 1: the current variable */ + int Set_Vars_Coord_Type; + char Set_Vars_Coord_Label[64]; + char Set_Vars_Coord_Var[64]; + char Short_Label[MONnD_COORD_NMAX][64]; + int Set_Coord_Mode; + long i=0, j=0; + double lmin, lmax, XY=0; + long t; + int N_spatial_dims=0; + + t = (long)time(NULL); + +/* initialize DEFS */ +/* Variables to monitor */ + DEFS->COORD_NONE =0; + DEFS->COORD_X =1; + DEFS->COORD_Y =2; + DEFS->COORD_Z =3; + DEFS->COORD_RADIUS =19; + DEFS->COORD_VX =4; + DEFS->COORD_VY =5; + DEFS->COORD_VZ =6; + DEFS->COORD_V =16; + DEFS->COORD_T =7; + DEFS->COORD_P =8; + DEFS->COORD_SX =9; + DEFS->COORD_SY =10; + DEFS->COORD_SZ =11; + DEFS->COORD_KX =12; + DEFS->COORD_KY =13; + DEFS->COORD_KZ =14; + DEFS->COORD_K =15; + DEFS->COORD_ENERGY =17; + DEFS->COORD_LAMBDA =18; + DEFS->COORD_HDIV =20; + DEFS->COORD_VDIV =21; + DEFS->COORD_ANGLE =22; + DEFS->COORD_NCOUNT =23; + DEFS->COORD_THETA =24; + DEFS->COORD_PHI =25; + DEFS->COORD_USER1 =26; + DEFS->COORD_USER2 =27; + DEFS->COORD_USER3 =28; + DEFS->COORD_USERDOUBLE0=39; + DEFS->COORD_USERDOUBLE1=40; + DEFS->COORD_USERDOUBLE2=41; + DEFS->COORD_USERDOUBLE3=42; + DEFS->COORD_USERDOUBLE4=43; + DEFS->COORD_USERDOUBLE5=44; + DEFS->COORD_USERDOUBLE6=45; + DEFS->COORD_USERDOUBLE7=46; + DEFS->COORD_USERDOUBLE8=47; + DEFS->COORD_USERDOUBLE9=48; + DEFS->COORD_USERDOUBLE10=49; + DEFS->COORD_USERDOUBLE11=50; + DEFS->COORD_USERDOUBLE12=51; + DEFS->COORD_USERDOUBLE13=52; + DEFS->COORD_USERDOUBLE14=53; + DEFS->COORD_USERDOUBLE15=54; + DEFS->COORD_XY =37; + DEFS->COORD_YZ =31; + DEFS->COORD_XZ =32; + DEFS->COORD_VXY =30; + DEFS->COORD_VYZ =34; + DEFS->COORD_VXZ =36; + DEFS->COORD_KXY =29; + DEFS->COORD_KYZ =33; + DEFS->COORD_KXZ =35; + DEFS->COORD_PIXELID=38; + +/* token modifiers */ + DEFS->COORD_VAR =0; /* next token should be a variable or normal option */ + DEFS->COORD_MIN =1; /* next token is a min value */ + DEFS->COORD_MAX =2; /* next token is a max value */ + DEFS->COORD_DIM =3; /* next token is a bin value */ + DEFS->COORD_FIL =4; /* next token is a filename */ + DEFS->COORD_EVNT =5; /* next token is a buffer size value */ + DEFS->COORD_3HE =6; /* next token is a 3He pressure value */ + DEFS->COORD_LOG =64; /* next variable will be in log scale */ + DEFS->COORD_ABS =128; /* next variable will be in abs scale */ + DEFS->COORD_SIGNAL =256; /* next variable will be the signal var */ + DEFS->COORD_AUTO =512; /* set auto limits */ + + strcpy(DEFS->TOKEN_DEL, " =,;[](){}:"); /* token separators */ + + DEFS->SHAPE_SQUARE =0; /* shape of the monitor */ + DEFS->SHAPE_DISK =1; + DEFS->SHAPE_SPHERE =2; + DEFS->SHAPE_CYLIND =3; + DEFS->SHAPE_BANANA =4; + DEFS->SHAPE_BOX =5; + DEFS->SHAPE_PREVIOUS=6; + DEFS->SHAPE_OFF=7; + + Vars->Sphere_Radius = 0; + Vars->Cylinder_Height = 0; + Vars->Flag_With_Borders = 0; /* 2 means xy borders too */ + Vars->Flag_List = 0; /* 1=store 1 buffer, 2=list all, 3=re-use buffer */ + Vars->Flag_Multiple = 0; /* 1 when n1D, 0 for 2D */ + Vars->Flag_Verbose = 0; + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + Vars->Flag_Auto_Limits = 0; /* get limits from first Buffer */ + Vars->Flag_Absorb = 0; /* monitor is also a slit */ + Vars->Flag_per_cm2 = 0; /* flux is per cm2 */ + Vars->Flag_log = 0; /* log10 of the flux */ + Vars->Flag_parallel = 0; /* set neutron state back after detection (parallel components) */ + Vars->Flag_Binary_List = 0; /* save list as a binary file (smaller) */ + Vars->Coord_Number = 0; /* total number of variables to monitor, plus intensity (0) */ + Vars->Coord_NumberNoPixel=0; /* same but without counting PixelID */ + + Vars->Buffer_Block = MONND_BUFSIZ; /* Buffer size for list or auto limits */ + Vars->Neutron_Counter = 0; /* event counter, simulation total counts is mcget_ncount() */ + Vars->Buffer_Counter = 0; /* index in Buffer size (for realloc) */ + Vars->Buffer_Size = 0; + Vars->He3_pressure = 0; + Vars->Flag_capture = 0; + Vars->Flag_signal = DEFS->COORD_P; + Vars->Flag_mantid = 0; + Vars->Flag_OFF = offflag; + Vars->OFF_polyidx = -1; + Vars->mean_dx=Vars->mean_dy=0; + Vars->min_x = Vars->max_x =0; + Vars->min_y = Vars->max_y =0; + + Set_Vars_Coord_Type = DEFS->COORD_NONE; + Set_Coord_Mode = DEFS->COORD_VAR; + + /* handle size parameters */ + /* normal use is with xwidth, yheight, zdepth */ + /* if xmin,xmax,ymin,ymax,zmin,zmax are non 0, use them */ + if (fabs(xmin-xmax) == 0) + { Vars->mxmin = -fabs(xwidth)/2; Vars->mxmax = fabs(xwidth)/2; } + else + { if (xmin < xmax) {Vars->mxmin = xmin; Vars->mxmax = xmax;} + else {Vars->mxmin = xmax; Vars->mxmax = xmin;} + } + if (fabs(ymin-ymax) == 0) + { Vars->mymin = -fabs(yheight)/2; Vars->mymax = fabs(yheight)/2; } + else + { if (ymin < ymax) {Vars->mymin = ymin; Vars->mymax = ymax;} + else {Vars->mymin = ymax; Vars->mymax = ymin;} + } + if (fabs(zmin-zmax) == 0) + { Vars->mzmin = -fabs(zdepth)/2; Vars->mzmax = fabs(zdepth)/2; } + else + { if (zmin < zmax) {Vars->mzmin = zmin; Vars->mzmax = zmax; } + else {Vars->mzmin = zmax; Vars->mzmax = zmin; } + } + + if (fabs(Vars->mzmax-Vars->mzmin) == 0) + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + else + Vars->Flag_Shape = DEFS->SHAPE_BOX; + + if (Vars->Flag_OFF) { + N_spatial_dims++; + Vars->Flag_Shape = DEFS->SHAPE_OFF; + } + + /* parse option string */ + + option_copy = (char*)malloc(strlen(Vars->option)+1); + if (option_copy == NULL) + { + fprintf(stderr,"Monitor_nD: %s cannot allocate 'options' copy (%li). Fatal.\n", Vars->compcurname, (long)strlen(Vars->option)); + exit(-1); + } + + if (strlen(Vars->option)) + { + Flag_End = 0; + strcpy(option_copy, Vars->option); + } + + if (strstr(Vars->option, "cm2") || strstr(Vars->option, "cm^2")) Vars->Flag_per_cm2 = 1; + + if (strstr(Vars->option, "binary") || strstr(Vars->option, "float")) + Vars->Flag_Binary_List = 1; + if (strstr(Vars->option, "double")) + Vars->Flag_Binary_List = 2; + + strcpy(Vars->Coord_Label[0],"Intensity"); + strncpy(Vars->Coord_Var[0],"p",30); + Vars->Coord_Type[0] = DEFS->COORD_P; + Vars->Coord_Bin[0] = 1; + Vars->Coord_Min[0] = 0; + Vars->Coord_Max[0] = FLT_MAX; + + /* default file name is comp_name+dateID */ + sprintf(Vars->Mon_File, "%s_%li", Vars->compcurname, t); + + carg = 1; + while((Flag_End == 0) && (carg < 128)) + { + if (Flag_New_token) /* retain previous token or get a new one */ + { + if (carg == 1) token=(char *)strtok(option_copy,DEFS->TOKEN_DEL); + else token=(char *)strtok(NULL,DEFS->TOKEN_DEL); + if (token == NULL) Flag_End=1; + } + Flag_New_token = 1; + if ((token != NULL) && (strlen(token) != 0)) + { + char iskeyword=0; /* left at 0 when variables are processed, 1 for modifiers */ + int old_Mode; + /* change token to lower case */ + for (i=0; iCOORD_MAX) /* max=%i */ + { + if (!Flag_All) + Vars->Coord_Max[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Max[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_MIN) /* min=%i */ + { + if (!Flag_All) + Vars->Coord_Min[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Min[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_MAX; + } + if (Set_Coord_Mode == DEFS->COORD_DIM) /* bins=%i */ + { + if (!Flag_All) + Vars->Coord_Bin[Vars->Coord_Number] = atoi(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Bin[i++] = atoi(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_FIL) /* file=%s */ + { + if (!Flag_No) strncpy(Vars->Mon_File,token,128); + else { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1;} + Set_Coord_Mode = DEFS->COORD_VAR; + } + if (Set_Coord_Mode == DEFS->COORD_EVNT) /* list=%i */ + { + if (!strcmp(token, "all") || Flag_All) Vars->Flag_List = 2; + else { i = (long)ceil(atof(token)); if (i) Vars->Buffer_Block = i; + Vars->Flag_List = 1; } + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_3HE) /* pressure=%g */ + { + Vars->He3_pressure = atof(token); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + + /* now look for general option keywords */ + if (!strcmp(token, "borders")) {Vars->Flag_With_Borders = 1; iskeyword=1; } + if (!strcmp(token, "verbose")) {Vars->Flag_Verbose = 1; iskeyword=1; } + if (!strcmp(token, "log")) {Vars->Flag_log = 1; iskeyword=1; } + if (!strcmp(token, "abs")) {Flag_abs = 1; iskeyword=1; } + if (!strcmp(token, "multiple")) {Vars->Flag_Multiple = 1; iskeyword=1; } + if (!strcmp(token, "list") || !strcmp(token, "events")) { + Vars->Flag_List = 1; Set_Coord_Mode = DEFS->COORD_EVNT; } + if (!strcmp(token, "limits") || !strcmp(token, "min")) + Set_Coord_Mode = DEFS->COORD_MIN; + if (!strcmp(token, "slit") || !strcmp(token, "absorb")) { + Vars->Flag_Absorb = 1; iskeyword=1; } + if (!strcmp(token, "max")) Set_Coord_Mode = DEFS->COORD_MAX; + if (!strcmp(token, "bins") || !strcmp(token, "dim")) Set_Coord_Mode = DEFS->COORD_DIM; + if (!strcmp(token, "file") || !strcmp(token, "filename")) { + Set_Coord_Mode = DEFS->COORD_FIL; + if (Flag_No) { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1; } + } + if (!strcmp(token, "inactivate")) { + Flag_End = 1; Vars->Coord_Number = 0; iskeyword=1; } + if (!strcmp(token, "all")) { Flag_All = 1; iskeyword=1; } + if (!strcmp(token, "sphere")) { Vars->Flag_Shape = DEFS->SHAPE_SPHERE; iskeyword=1; } + if (!strcmp(token, "cylinder")) { Vars->Flag_Shape = DEFS->SHAPE_CYLIND; iskeyword=1; } + if (!strcmp(token, "banana")) { Vars->Flag_Shape = DEFS->SHAPE_BANANA; iskeyword=1; } + if (!strcmp(token, "square")) { Vars->Flag_Shape = DEFS->SHAPE_SQUARE; iskeyword=1; } + if (!strcmp(token, "disk")) { Vars->Flag_Shape = DEFS->SHAPE_DISK; iskeyword=1; } + if (!strcmp(token, "box")) { Vars->Flag_Shape = DEFS->SHAPE_BOX; iskeyword=1; } + if (!strcmp(token, "previous")) { Vars->Flag_Shape = DEFS->SHAPE_PREVIOUS; iskeyword=1; } + if (!strcmp(token, "parallel")){ Vars->Flag_parallel = 1; iskeyword=1; } + if (!strcmp(token, "capture")) { Vars->Flag_capture = 1; iskeyword=1; } + if (!strcmp(token, "auto")) { + #ifndef OPENACC + if (Flag_auto != -1) { + Vars->Flag_Auto_Limits = 1; + if (Flag_All) Flag_auto = -1; + else Flag_auto = 1; + iskeyword=1; Flag_All=0; + } + #endif + } + if (!strcmp(token, "premonitor")) { + Vars->Flag_UsePreMonitor = 1; iskeyword=1; } + if (!strcmp(token, "3He_pressure") || !strcmp(token, "pressure")) { + Vars->He3_pressure = 3; iskeyword=1; } + if (!strcmp(token, "no") || !strcmp(token, "not")) { Flag_No = 1; iskeyword=1; } + if (!strcmp(token, "signal")) Set_Coord_Mode = DEFS->COORD_SIGNAL; + if (!strcmp(token, "mantid")) { Vars->Flag_mantid = 1; iskeyword=1; } + + /* Mode has changed: this was a keyword or value ? */ + if (Set_Coord_Mode != old_Mode) iskeyword=1; + + /* now look for variable names to monitor */ + Set_Vars_Coord_Type = DEFS->COORD_NONE; lmin = 0; lmax = 0; + + if (!strcmp(token, "x")) + { Set_Vars_Coord_Type = DEFS->COORD_X; strcpy(Set_Vars_Coord_Label,"x [m]"); strcpy(Set_Vars_Coord_Var,"x"); + lmin = Vars->mxmin; lmax = Vars->mxmax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mxmin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mxmax; + N_spatial_dims++;} + if (!strcmp(token, "y")) + { Set_Vars_Coord_Type = DEFS->COORD_Y; strcpy(Set_Vars_Coord_Label,"y [m]"); strcpy(Set_Vars_Coord_Var,"y"); + lmin = Vars->mymin; lmax = Vars->mymax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mymin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mymax; + N_spatial_dims++;} + if (!strcmp(token, "z")) + { Set_Vars_Coord_Type = DEFS->COORD_Z; strcpy(Set_Vars_Coord_Label,"z [m]"); strcpy(Set_Vars_Coord_Var,"z"); lmin = Vars->mzmin; lmax = Vars->mzmax; + N_spatial_dims++;} + if (!strcmp(token, "k") || !strcmp(token, "wavevector")) + { Set_Vars_Coord_Type = DEFS->COORD_K; strcpy(Set_Vars_Coord_Label,"|k| [Angs-1]"); strcpy(Set_Vars_Coord_Var,"k"); lmin = 0; lmax = 10; } + if (!strcmp(token, "v")) + { Set_Vars_Coord_Type = DEFS->COORD_V; strcpy(Set_Vars_Coord_Label,"Velocity [m/s]"); strcpy(Set_Vars_Coord_Var,"v"); lmin = 0; lmax = 10000; } + if (!strcmp(token, "t") || !strcmp(token, "time") || !strcmp(token, "tof")) + { Set_Vars_Coord_Type = DEFS->COORD_T; strcpy(Set_Vars_Coord_Label,"TOF [s]"); strcpy(Set_Vars_Coord_Var,"t"); lmin = 0; lmax = 1.0; } + if ((!strcmp(token, "p") || !strcmp(token, "i") || !strcmp(token, "intensity") || !strcmp(token, "flux"))) + { Set_Vars_Coord_Type = DEFS->COORD_P; + strcpy(Set_Vars_Coord_Label,"Intensity"); + strncat(Set_Vars_Coord_Label, " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Set_Vars_Coord_Label, "/cm2", 30); + if (XY > 1 && Vars->Coord_Number) + strncat(Set_Vars_Coord_Label, "/bin", 30); + strncat(Set_Vars_Coord_Label, "]", 30); + strcpy(Set_Vars_Coord_Var,"I"); + lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + } + + if (!strcmp(token, "vx")) + { Set_Vars_Coord_Type = DEFS->COORD_VX; strcpy(Set_Vars_Coord_Label,"vx [m/s]"); strcpy(Set_Vars_Coord_Var,"vx"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vy")) + { Set_Vars_Coord_Type = DEFS->COORD_VY; strcpy(Set_Vars_Coord_Label,"vy [m/s]"); strcpy(Set_Vars_Coord_Var,"vy"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vz")) + { Set_Vars_Coord_Type = DEFS->COORD_VZ; strcpy(Set_Vars_Coord_Label,"vz [m/s]"); strcpy(Set_Vars_Coord_Var,"vz"); lmin = -10000; lmax = 10000; } + if (!strcmp(token, "kx")) + { Set_Vars_Coord_Type = DEFS->COORD_KX; strcpy(Set_Vars_Coord_Label,"kx [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "ky")) + { Set_Vars_Coord_Type = DEFS->COORD_KY; strcpy(Set_Vars_Coord_Label,"ky [Angs-1]"); strcpy(Set_Vars_Coord_Var,"ky"); lmin = -1; lmax = 1; } + if (!strcmp(token, "kz")) + { Set_Vars_Coord_Type = DEFS->COORD_KZ; strcpy(Set_Vars_Coord_Label,"kz [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kz"); lmin = -10; lmax = 10; } + if (!strcmp(token, "sx")) + { Set_Vars_Coord_Type = DEFS->COORD_SX; strcpy(Set_Vars_Coord_Label,"sx [1]"); strcpy(Set_Vars_Coord_Var,"sx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sy")) + { Set_Vars_Coord_Type = DEFS->COORD_SY; strcpy(Set_Vars_Coord_Label,"sy [1]"); strcpy(Set_Vars_Coord_Var,"sy"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sz")) + { Set_Vars_Coord_Type = DEFS->COORD_SZ; strcpy(Set_Vars_Coord_Label,"sz [1]"); strcpy(Set_Vars_Coord_Var,"sz"); lmin = -1; lmax = 1; } + + if (!strcmp(token, "energy") || !strcmp(token, "omega") || !strcmp(token, "e")) + { Set_Vars_Coord_Type = DEFS->COORD_ENERGY; strcpy(Set_Vars_Coord_Label,"Energy [meV]"); strcpy(Set_Vars_Coord_Var,"E"); lmin = 0; lmax = 100; } + if (!strcmp(token, "lambda") || !strcmp(token, "wavelength") || !strcmp(token, "l")) + { Set_Vars_Coord_Type = DEFS->COORD_LAMBDA; strcpy(Set_Vars_Coord_Label,"Wavelength [Angs]"); strcpy(Set_Vars_Coord_Var,"L"); lmin = 0; lmax = 100; } + if (!strcmp(token, "radius") || !strcmp(token, "r")) + { Set_Vars_Coord_Type = DEFS->COORD_RADIUS; strcpy(Set_Vars_Coord_Label,"Radius [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; } + if (!strcmp(token, "xy")) + { Set_Vars_Coord_Type = DEFS->COORD_XY; strcpy(Set_Vars_Coord_Label,"Radius (xy) [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "yz")) + { Set_Vars_Coord_Type = DEFS->COORD_YZ; strcpy(Set_Vars_Coord_Label,"Radius (yz) [m]"); strcpy(Set_Vars_Coord_Var,"yz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "xz")) + { Set_Vars_Coord_Type = DEFS->COORD_XZ; strcpy(Set_Vars_Coord_Label,"Radius (xz) [m]"); strcpy(Set_Vars_Coord_Var,"xz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "vxy")) + { Set_Vars_Coord_Type = DEFS->COORD_VXY; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xy) [m]"); strcpy(Set_Vars_Coord_Var,"Vxy"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxy")) + { Set_Vars_Coord_Type = DEFS->COORD_KXY; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xy) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxy"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vyz")) + { Set_Vars_Coord_Type = DEFS->COORD_VYZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (yz) [m]"); strcpy(Set_Vars_Coord_Var,"Vyz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kyz")) + { Set_Vars_Coord_Type = DEFS->COORD_KYZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (yz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kyz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vxz")) + { Set_Vars_Coord_Type = DEFS->COORD_VXZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xz) [m]"); strcpy(Set_Vars_Coord_Var,"Vxz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxz")) + { Set_Vars_Coord_Type = DEFS->COORD_KXZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "angle") || !strcmp(token, "a")) + { Set_Vars_Coord_Type = DEFS->COORD_ANGLE; strcpy(Set_Vars_Coord_Label,"Angle [deg]"); strcpy(Set_Vars_Coord_Var,"A"); lmin = -50; lmax = 50; N_spatial_dims++;} + if (!strcmp(token, "hdiv")|| !strcmp(token, "divergence") || !strcmp(token, "xdiv") || !strcmp(token, "hd") || !strcmp(token, "dx")) + { Set_Vars_Coord_Type = DEFS->COORD_HDIV; strcpy(Set_Vars_Coord_Label,"Hor. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"hd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "vdiv") || !strcmp(token, "ydiv") || !strcmp(token, "vd") || !strcmp(token, "dy")) + { Set_Vars_Coord_Type = DEFS->COORD_VDIV; strcpy(Set_Vars_Coord_Label,"Vert. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"vd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "theta") || !strcmp(token, "longitude") || !strcmp(token, "th")) + { Set_Vars_Coord_Type = DEFS->COORD_THETA; strcpy(Set_Vars_Coord_Label,"Longitude [deg]"); strcpy(Set_Vars_Coord_Var,"th"); lmin = -180; lmax = 180; N_spatial_dims++;} + if (!strcmp(token, "phi") || !strcmp(token, "latitude") || !strcmp(token, "ph")) + { Set_Vars_Coord_Type = DEFS->COORD_PHI; strcpy(Set_Vars_Coord_Label,"Latitude [deg]"); strcpy(Set_Vars_Coord_Var,"ph"); lmin = -90; lmax = 90; N_spatial_dims++;} + if (!strcmp(token, "ncounts") || !strcmp(token, "n") || !strcmp(token, "neutron")) + { Set_Vars_Coord_Type = DEFS->COORD_NCOUNT; strcpy(Set_Vars_Coord_Label,"Neutron ID [1]"); strcpy(Set_Vars_Coord_Var,"n"); lmin = 0; lmax = mcget_ncount(); if (Flag_auto>0) Flag_auto=0; } + if (!strcmp(token, "id") || !strcmp(token, "pixel")) + { Set_Vars_Coord_Type = DEFS->COORD_PIXELID; + strcpy(Set_Vars_Coord_Label,"Pixel ID [1]"); + strcpy(Set_Vars_Coord_Var,"id"); lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + Vars->Flag_List = 1; } + if (!strcmp(token, "user") || !strcmp(token, "user1") || !strcmp(token, "u1")) + { Set_Vars_Coord_Type = DEFS->COORD_USER1; strncpy(Set_Vars_Coord_Label,Vars->UserName1,30); strcpy(Set_Vars_Coord_Var,"U1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user2") || !strcmp(token, "u2")) + { Set_Vars_Coord_Type = DEFS->COORD_USER2; strncpy(Set_Vars_Coord_Label,Vars->UserName2,30); strcpy(Set_Vars_Coord_Var,"U2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user3") || !strcmp(token, "u3")) + { Set_Vars_Coord_Type = DEFS->COORD_USER3; strncpy(Set_Vars_Coord_Label,Vars->UserName3,30); strcpy(Set_Vars_Coord_Var,"U3"); lmin = -1e10; lmax = 1e10; } + + if (!strcmp(token, "userdouble0") || !strcmp(token, "ud0")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE0; strcpy(Set_Vars_Coord_Label,"ud0 [1]"); strcpy(Set_Vars_Coord_Var,"ud0"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble1") || !strcmp(token, "ud1")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE1; strcpy(Set_Vars_Coord_Label,"ud1 [1]"); strcpy(Set_Vars_Coord_Var,"ud1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble2") || !strcmp(token, "ud2")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE2; strcpy(Set_Vars_Coord_Label,"ud2 [1]"); strcpy(Set_Vars_Coord_Var,"ud2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble3") || !strcmp(token, "ud3")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE3; strcpy(Set_Vars_Coord_Label,"ud3 [1]"); strcpy(Set_Vars_Coord_Var,"ud3"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble4") || !strcmp(token, "ud4")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE4; strcpy(Set_Vars_Coord_Label,"ud4 [1]"); strcpy(Set_Vars_Coord_Var,"ud4"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble5") || !strcmp(token, "ud5")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE5; strcpy(Set_Vars_Coord_Label,"ud5 [1]"); strcpy(Set_Vars_Coord_Var,"ud5"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble6") || !strcmp(token, "ud6")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE6; strcpy(Set_Vars_Coord_Label,"ud6 [1]"); strcpy(Set_Vars_Coord_Var,"ud6"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble7") || !strcmp(token, "ud7")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE7; strcpy(Set_Vars_Coord_Label,"ud7 [1]"); strcpy(Set_Vars_Coord_Var,"ud7"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble8") || !strcmp(token, "ud8")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE8; strcpy(Set_Vars_Coord_Label,"ud8 [1]"); strcpy(Set_Vars_Coord_Var,"ud8"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble9") || !strcmp(token, "ud9")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE9; strcpy(Set_Vars_Coord_Label,"ud9 [1]"); strcpy(Set_Vars_Coord_Var,"ud9"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble10") || !strcmp(token, "ud10")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE10; strcpy(Set_Vars_Coord_Label,"ud10 [1]"); strcpy(Set_Vars_Coord_Var,"ud10"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble11") || !strcmp(token, "ud11")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE11; strcpy(Set_Vars_Coord_Label,"ud11 [1]"); strcpy(Set_Vars_Coord_Var,"ud11"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble12") || !strcmp(token, "ud12")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE12; strcpy(Set_Vars_Coord_Label,"ud12 [1]"); strcpy(Set_Vars_Coord_Var,"ud12"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble13") || !strcmp(token, "ud13")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE13; strcpy(Set_Vars_Coord_Label,"ud13 [1]"); strcpy(Set_Vars_Coord_Var,"ud13"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble14") || !strcmp(token, "ud14")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE14; strcpy(Set_Vars_Coord_Label,"ud14 [1]"); strcpy(Set_Vars_Coord_Var,"ud14"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble15") || !strcmp(token, "ud15")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE15; strcpy(Set_Vars_Coord_Label,"ud15 [1]"); strcpy(Set_Vars_Coord_Var,"ud15"); lmin = -1e10; lmax = 1e10; } + + /* now stores variable keywords detected, if any */ + if (Set_Vars_Coord_Type != DEFS->COORD_NONE) + { + int Coord_Number = Vars->Coord_Number; + if (Vars->Flag_log) { Set_Vars_Coord_Type |= DEFS->COORD_LOG; Vars->Flag_log = 0; } + if (Flag_abs) { Set_Vars_Coord_Type |= DEFS->COORD_ABS; Flag_abs = 0; } + if (Flag_auto != 0) { Set_Vars_Coord_Type |= DEFS->COORD_AUTO; + if (Flag_auto > 0) Flag_auto = 0; } + if (Set_Coord_Mode == DEFS->COORD_SIGNAL) + { + Coord_Number = 0; + Vars->Flag_signal = Set_Vars_Coord_Type; + } + else + { + if (Coord_Number < MONnD_COORD_NMAX) + { Coord_Number++; + Vars->Coord_Number = Coord_Number; + if (Set_Vars_Coord_Type != DEFS->COORD_PIXELID) + Vars->Coord_NumberNoPixel++; + } + else if (Vars->Flag_Verbose) printf("Monitor_nD: %s reached max number of variables (%i).\n", Vars->compcurname, MONnD_COORD_NMAX); + } + Vars->Coord_Type[Coord_Number] = Set_Vars_Coord_Type; + strncpy(Vars->Coord_Label[Coord_Number], Set_Vars_Coord_Label,30); + strncpy(Vars->Coord_Var[Coord_Number], Set_Vars_Coord_Var,30); + if (lmin > lmax) { XY = lmin; lmin=lmax; lmax = XY; } + Vars->Coord_Min[Coord_Number] = lmin; + Vars->Coord_Max[Coord_Number] = lmax; + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT || Set_Vars_Coord_Type == DEFS->COORD_PIXELID || Set_Vars_Coord_Type == DEFS->COORD_SIGNAL) + Vars->Coord_Bin[Coord_Number] = 1; + else + Vars->Coord_Bin[Coord_Number] = 20; + Set_Coord_Mode = DEFS->COORD_VAR; + Flag_All = 0; + Flag_No = 0; + } else { + /* no variable name could be read from options */ + if (!iskeyword) { + if (strcmp(token, "cm2") && strcmp(token, "incoming") + && strcmp(token, "outgoing") && strcmp(token, "cm2") + && strcmp(token, "cm^2") && strcmp(token, "float") + && strcmp(token, "double") && strcmp(token, "binary") + && strcmp(token, "steradian") && Vars->Flag_Verbose) + printf("Monitor_nD: %s: unknown '%s' keyword in 'options'. Ignoring.\n", Vars->compcurname, token); + } + } + carg++; + } /* end if token */ + } /* end while carg */ + free(option_copy); + if (carg == 128) printf("Monitor_nD: %s reached max number of tokens (%i). Skipping.\n", Vars->compcurname, 128); + + if ((Vars->Flag_Shape == DEFS->SHAPE_BOX) && (fabs(Vars->mzmax - Vars->mzmin) == 0)) Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + + if (Vars->Flag_log == 1) Vars->Coord_Type[0] |= DEFS->COORD_LOG; + if (Vars->Coord_Number == 0) + { Vars->Flag_Auto_Limits=0; Vars->Flag_Multiple=0; Vars->Flag_List=0; } + + /* now setting Monitor Name from variable labels */ + strcpy(Vars->Monitor_Label,""); + XY = 1; /* will contain total bin number */ + for (i = 0; i <= Vars->Coord_Number; i++) + { + if (Flag_auto != 0) Vars->Coord_Type[i] |= DEFS->COORD_AUTO; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if ((Set_Vars_Coord_Type == DEFS->COORD_X) + || (Set_Vars_Coord_Type == DEFS->COORD_Y) + || (Set_Vars_Coord_Type == DEFS->COORD_Z)) + strcpy(Short_Label[i],"Position"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_THETA) + || (Set_Vars_Coord_Type == DEFS->COORD_PHI) + || (Set_Vars_Coord_Type == DEFS->COORD_ANGLE)) + strcpy(Short_Label[i],"Angle"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_XY) + || (Set_Vars_Coord_Type == DEFS->COORD_XZ) + || (Set_Vars_Coord_Type == DEFS->COORD_YZ) + || (Set_Vars_Coord_Type == DEFS->COORD_RADIUS)) + strcpy(Short_Label[i],"Radius"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_VX) + || (Set_Vars_Coord_Type == DEFS->COORD_VY) + || (Set_Vars_Coord_Type == DEFS->COORD_VZ) + || (Set_Vars_Coord_Type == DEFS->COORD_V) + || (Set_Vars_Coord_Type == DEFS->COORD_VXY) + || (Set_Vars_Coord_Type == DEFS->COORD_VYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_VXZ)) + strcpy(Short_Label[i],"Velocity"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_KX) + || (Set_Vars_Coord_Type == DEFS->COORD_KY) + || (Set_Vars_Coord_Type == DEFS->COORD_KZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXY) + || (Set_Vars_Coord_Type == DEFS->COORD_KYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXZ) + || (Set_Vars_Coord_Type == DEFS->COORD_K)) + strcpy(Short_Label[i],"Wavevector"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_SX) + || (Set_Vars_Coord_Type == DEFS->COORD_SY) + || (Set_Vars_Coord_Type == DEFS->COORD_SZ)) + strcpy(Short_Label[i],"Spin"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_HDIV) + || (Set_Vars_Coord_Type == DEFS->COORD_VDIV)) + strcpy(Short_Label[i],"Divergence"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) + strcpy(Short_Label[i],"Energy"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) + strcpy(Short_Label[i],"Wavelength"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) + strcpy(Short_Label[i],"Neutron_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) + strcpy(Short_Label[i],"Pixel_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) + strcpy(Short_Label[i],"Time_Of_Flight"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) + strcpy(Short_Label[i],"Intensity"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) + strncpy(Short_Label[i],Vars->UserName1,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) + strncpy(Short_Label[i],Vars->UserName2,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) + strncpy(Short_Label[i],Vars->UserName3,30); + else + strcpy(Short_Label[i],"Unknown"); + + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) + { strcat(Vars->Coord_Label[i]," (abs)"); } + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) + { strcat(Vars->Coord_Label[i]," (log)"); } + + strcat(Vars->Monitor_Label, " "); + strcat(Vars->Monitor_Label, Short_Label[i]); + XY *= Vars->Coord_Bin[i]; + + } /* end for Short_Label */ + + if ((Vars->Coord_Type[0] & (DEFS->COORD_LOG-1)) == DEFS->COORD_P) { + strncat(Vars->Coord_Label[0], " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Vars->Coord_Label[0], "/cm2", 30); + + if (XY > 1 && Vars->Coord_Number) + strncat(Vars->Coord_Label[0], "/bin", 30); + strncat(Vars->Coord_Label[0], "]", 30); + } + + /* update label 'signal per bin' if more than 1 bin */ + if (XY > 1 && Vars->Coord_Number) { + if (Vars->Flag_capture) + printf("Monitor_nD: %s: Using capture flux weightening on %ld bins.\n" + "WARNING Use binned data with caution, and prefer monitor integral value (I,Ierr).\n", Vars->compcurname, (long)XY); + } + + strcat(Vars->Monitor_Label, " Monitor"); + if (Vars->Flag_Shape == DEFS->SHAPE_SQUARE) strcat(Vars->Monitor_Label, " (Square)"); + if (Vars->Flag_Shape == DEFS->SHAPE_DISK) strcat(Vars->Monitor_Label, " (Disk)"); + if (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) strcat(Vars->Monitor_Label, " (Sphere)"); + if (Vars->Flag_Shape == DEFS->SHAPE_CYLIND) strcat(Vars->Monitor_Label, " (Cylinder)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BANANA) strcat(Vars->Monitor_Label, " (Banana)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BOX) strcat(Vars->Monitor_Label, " (Box)"); + if (Vars->Flag_Shape == DEFS->SHAPE_PREVIOUS) strcat(Vars->Monitor_Label, " (on PREVIOUS)"); + if (Vars->Flag_Shape == DEFS->SHAPE_OFF) strcat(Vars->Monitor_Label, " (OFF geometry)"); + if ((Vars->Flag_Shape == DEFS->SHAPE_CYLIND) || (Vars->Flag_Shape == DEFS->SHAPE_BANANA) || (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) || (Vars->Flag_Shape == DEFS->SHAPE_BOX)) + { + if (strstr(Vars->option, "incoming")) + { + Vars->Flag_Shape = abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [in]"); + } + else /* if strstr(Vars->option, "outgoing")) */ + { + Vars->Flag_Shape = -abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [out]"); + } + } + if (Vars->Flag_UsePreMonitor == 1) + { + strcat(Vars->Monitor_Label, " at "); + strncat(Vars->Monitor_Label, Vars->UserName1,30); + } + if (Vars->Flag_log == 1) strcat(Vars->Monitor_Label, " [log] "); + + /* now allocate memory to store variables in TRACE */ + + /* Vars->Coord_Number 0 : intensity or signal + * Vars->Coord_Number 1:n : detector variables */ + + if ((Vars->Coord_NumberNoPixel != 2) && !Vars->Flag_Multiple && !Vars->Flag_List) + { Vars->Flag_Multiple = 1; /* default is n1D */ + if (Vars->Coord_Number != Vars->Coord_NumberNoPixel) Vars->Flag_List = 1; } + + /* list and auto limits case : Vars->Flag_List or Vars->Flag_Auto_Limits + * -> Buffer to flush and suppress after Vars->Flag_Auto_Limits + */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + Vars->Mon2D_Buffer = (double *)malloc((Vars->Coord_Number+1)*Vars->Buffer_Block*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot allocate Vars->Mon2D_Buffer (%zi). No list and auto limits.\n", Vars->compcurname, Vars->Buffer_Block*(Vars->Coord_Number+1)*sizeof(double)); Vars->Flag_List = 0; Vars->Flag_Auto_Limits = 0; } + else + { + for (i=0; i < (Vars->Coord_Number+1)*Vars->Buffer_Block; Vars->Mon2D_Buffer[i++] = (double)0); + } + Vars->Buffer_Size = Vars->Buffer_Block; + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_NumberNoPixel) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, (Vars->Coord_Number)*sizeof(double *)); exit(-1); } + for (i= 1; i <= Vars->Coord_Number; i++) + { + Vars->Mon2D_N[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p2[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[i], i, (Vars->Coord_Bin[i])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[i]; j++ ) + { Vars->Mon2D_N[i-1][j] = (double)0; Vars->Mon2D_p[i-1][j] = (double)0; Vars->Mon2D_p2[i-1][j] = (double)0; } + } + } + } + else /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], (Vars->Coord_Bin[1])*sizeof(double *)); exit(-1); } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + Vars->Mon2D_N[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p2[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], i, (Vars->Coord_Bin[2])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[2]; j++ ) + { Vars->Mon2D_N[i][j] = (double)0; Vars->Mon2D_p[i][j] = (double)0; Vars->Mon2D_p2[i][j] = (double)0; } + } + } + } + else { + Vars->Mon2D_N = Vars->Mon2D_p = Vars->Mon2D_p2 = NULL; + } + /* no Mon2D allocated for + * (Vars->Coord_Number != 2) && !Vars->Flag_Multiple && Vars->Flag_List */ + + Vars->psum = 0; + Vars->p2sum = 0; + Vars->Nsum = 0; + + Vars->area = fabs(Vars->mxmax - Vars->mxmin)*fabs(Vars->mymax - Vars->mymin)*1E4; /* in cm**2 for square and box shapes */ + Vars->Sphere_Radius = fabs(Vars->mxmax - Vars->mxmin)/2; + if ((abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + { + Vars->area = PI*Vars->Sphere_Radius*Vars->Sphere_Radius*1E4; /* disk shapes */ + } + + + if (Vars->area == 0 && abs(Vars->Flag_Shape) != DEFS->SHAPE_PREVIOUS ) { + if (abs(Vars->Flag_Shape) != DEFS->SHAPE_OFF) { + Vars->Coord_Number = 0; + } + } + if (Vars->Coord_Number == 0 && Vars->Flag_Verbose) + printf("Monitor_nD: %s is inactivated (0D)\n", Vars->compcurname); + Vars->Cylinder_Height = fabs(Vars->mymax - Vars->mymin); + + if (Vars->Flag_Verbose) + { + printf("Monitor_nD: %s is a %s.\n", Vars->compcurname, Vars->Monitor_Label); + printf("Monitor_nD: version %s with options=%s\n", MONITOR_ND_LIB_H, Vars->option); + } + + /* compute the product of bin dimensions for PixelID */ + Vars->Coord_BinProd[0]=1; + + for (i = 1; i <= Vars->Coord_Number; i++) { + Vars->Coord_BinProd[i]=Vars->Coord_Bin[i]*Vars->Coord_BinProd[i-1]; + } + + #ifdef USE_NEXUS + + #ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { + #endif + if(nxhandle) { + + /* This section of code writes detector shape information to + entryN/instrument/components/'name'/geometry in the NeXus file */ + + char nexuscomp[CHAR_BUF_LENGTH]; + char pref[5]; + if (Vars->compcurindex-1 < 10) { + sprintf(pref,"000"); + } else if (Vars->compcurindex-1 < 100) { + sprintf(pref,"00"); + } else if (Vars->compcurindex-1 < 1000) { + sprintf(pref,"0"); + } else if (Vars->compcurindex-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,Vars->compcurname); + + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, nexuscomp, "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + char tmp[CHAR_BUF_LENGTH]; + sprintf(tmp,"%g",Vars->Sphere_Radius); + nxprintattr(nxhandle, "radius", tmp); + + sprintf(tmp,"%g",Vars->Cylinder_Height); + nxprintattr(nxhandle, "height", tmp); + + sprintf(tmp,"%g",Vars->mxmin); + nxprintattr(nxhandle, "xmin", tmp); + sprintf(tmp,"%g",Vars->mxmax); + nxprintattr(nxhandle, "xmax", tmp); + + sprintf(tmp,"%g",Vars->mymin); + nxprintattr(nxhandle, "ymin", tmp); + sprintf(tmp,"%g",Vars->mymax); + nxprintattr(nxhandle, "ymax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%i",Vars->Flag_Shape); + nxprintattr(nxhandle, "Shape identifier", tmp); + sprintf(tmp,"%s",Vars->Monitor_Label); + nxprintattr(nxhandle, "Shape string", tmp); + sprintf(tmp,"%s",Vars->option); + nxprintattr(nxhandle, "Option string", tmp); + + NXclosegroup(nxhandle); // Geometry + } else { + printf("Failed to open component NeXus component Geometry group\n"); + } + } else { + printf("Failed to create component NeXus component Geometry group\n"); + } + NXclosegroup(nxhandle); // component + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } + + /* Below code communicates geometry-oriented "BINS" for the detector. */ + char metadata[CHAR_BUF_LENGTH]; + char metadatatmp[CHAR_BUF_LENGTH]; + // Vars for 1D, >3D, OFF + long numbins; + long minbins = 0; + long maxbins = 0; + char binlabel[CHAR_BUF_LENGTH]; + char binvar[CHAR_BUF_LENGTH]; + sprintf(binlabel,"none"); + sprintf(binvar,"none"); + + // Find index of pixel column + int id_index; + for (id_index=0;id_index<30;id_index++) { + if (strcmp(Vars->Coord_Var[id_index], "id") == 0) break; + } + if (id_index == 30) id_index = Vars->Coord_Number-1; // Revert to earlier behavior is id not found + long pix=Vars->Coord_Min[id_index]; + + MCDETECTOR detector; + + /* Init - perhaps better with an init-function in mccode-r? */ + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + + sprintf(detector.filename,"BINS"); + sprintf(detector.component,"%s",Vars->compcurname); + sprintf(detector.nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,detector.component); + sprintf(detector.format,"pixels"); + + if(!Vars->Flag_OFF) { + + sprintf(metadata,"id=%ld + %ld pixels: ",(long)Vars->Coord_Min[id_index],(long)Vars->Coord_BinProd[Vars->Coord_Number]); + for (i=1; iCoord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + } + sprintf(metadatatmp,"%s %s (%ld bins)",metadata,Vars->Coord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + numbins = Vars->Coord_BinProd[Vars->Coord_Number]; + if (N_spatial_dims==1) { + minbins=Vars->Coord_Min[1]; + maxbins=Vars->Coord_Max[1]; + sprintf(binlabel,"%s",Vars->Coord_Label[1]); + sprintf(binvar,"%s",Vars->Coord_Var[1]); + } else if (N_spatial_dims>3) { + minbins=1; + maxbins=Vars->Coord_BinProd[Vars->Coord_Number]; + sprintf(binlabel,"More than 3 dimensions"); + sprintf(binvar,"wrapped_variables_4plus_dims"); + N_spatial_dims=1; + } + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } else { + numbins = Vars->Flag_OFF; + minbins=1; + maxbins=Vars->Flag_OFF; + sprintf(binlabel,"OFF pixel index"); + sprintf(binvar,"OFF"); + N_spatial_dims=1; + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } + + long k,l,m; + if (N_spatial_dims==1) { // 1D case or ND + detector.m=numbins; + detector.n=1; + detector.p=1; + detector.rank=1; + detector.p0=(double *)calloc(numbins, sizeof(double)); + detector.p1=(double *)calloc(numbins, sizeof(double)); + detector.p2=(double *)calloc(numbins, sizeof(double)); + if (Vars->Flag_Verbose) printf("1D case %ld \n",Vars->Coord_Bin[1]); + for (k=0; kFlag_Verbose) printf("Assigning pixel no [%ld] = %ld\n",k,pix); + detector.p1[k]=pix; + pix++; + } + mcdetector_out_1D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==2) { // 2D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=1; + detector.rank=2; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("2D case %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld] = %ld\n",l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]+l]=pix; + pix++; + } + } + mcdetector_out_2D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==3) { // 3D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=Vars->Coord_Bin[3];; + detector.rank=3; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + sprintf(detector.zlabel,"%s",Vars->Coord_Label[3]); + sprintf(detector.zvar,"%s",Vars->Coord_Var[3]); + detector.zmin=Vars->Coord_Min[3]; + detector.zmax=Vars->Coord_Max[3]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("3D case %ld x %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2],Vars->Coord_Bin[3]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + for (m=0; mCoord_Bin[3]; m++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld,%ld] = %ld\n",m,l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]*Vars->Coord_Bin[3] + l*Vars->Coord_Bin[3] + m]=pix; + pix++; + } + } + } + mcdetector_out_3D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } + } // nxhandle available + #ifdef USE_MPI + } // Master only + #endif + + #endif // USE_NEXUS + } /* end Monitor_nD_Init */ + +/* ========================================================================= */ +/* Monitor_nD_Trace: this routine is used to monitor one propagating neutron */ +/* return values: 0=neutron was absorbed, -1=neutron was outside bounds, 1=neutron was measured*/ +/* ========================================================================= */ + +int Monitor_nD_Trace(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars, _class_particle* _particle) +{ + + double XY=0, pp=0; + long i =0, j =0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char While_End =0; + long While_Buffer=0; + char Set_Vars_Coord_Type = DEFS->COORD_NONE; + + /* the logic below depends mainly on: + Flag_List: 1=store 1 buffer, 2=list all, 3=re-use buffer + Flag_Auto_Limits: 0 (no auto limits/list), 1 (store events into Buffer), 2 (re-emit store events) + */ + + /* Vars->Flag_Auto_Limits=1: buffer full, we read the Buffer, and determine min and max bounds */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 1) && (Vars->Coord_Number > 0)) + { + /* auto limits case : get limits in Buffer for each variable */ + /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + for (i = 1; i <= Vars->Coord_Number; i++) + { + if (Vars->Coord_Type[i] & DEFS->COORD_AUTO) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step (read Buffer and generate new events to store in histograms) */ + } /* end if Flag_Auto_Limits == 1 */ + +#ifndef OPENACC + /* manage realloc for 'list all' if Buffer size exceeded: flush Buffer to file */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List >= 2)) + { + if (Vars->Buffer_Size >= 1000000 || Vars->Flag_List == 3) + { /* save current (possibly append) and re-use Buffer */ + + Monitor_nD_Save(DEFS, Vars); + Vars->Flag_List = 3; + Vars->Buffer_Block = Vars->Buffer_Size; + Vars->Buffer_Counter = 0; + Vars->Neutron_Counter = 0; + } + else + { + Vars->Mon2D_Buffer = (double *)realloc(Vars->Mon2D_Buffer, (Vars->Coord_Number+1)*(2*Vars->Buffer_Block)*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot reallocate Vars->Mon2D_Buffer[%li] (%zi). Skipping.\n", Vars->compcurname, i, (long int)(2*Vars->Buffer_Block)*sizeof(double)); Vars->Flag_List = 1; } + else { + Vars->Buffer_Block = 2*Vars->Buffer_Block; + Vars->Buffer_Size = Vars->Buffer_Block; + } + } + } /* end if Buffer realloc */ +#endif + + char outsidebounds=0; + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) or passing neutron */ + if ((Vars->Flag_Auto_Limits == 2) && (Vars->Coord_Number > 0)) + { /* Vars->Flag_Auto_Limits == 2: read back from Buffer (Buffer is filled or auto limits have been computed) */ + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loop (While_Buffer) */ + /* auto limits case : scan Buffer within limits and store in Mon2D */ + Coord[0] = pp = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) continue; + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + if (Vars->Coord_NumberNoPixel < Vars->Coord_Number) /* there is a Pixel variable */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char flag_outside=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!flag_outside) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + if (!Vars->Flag_List) /* free Buffer not needed anymore (no list to output) */ + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, p2) */ + free(Vars->Mon2D_Buffer); Vars->Mon2D_Buffer = NULL; + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + } /* if Vars->Flag_Auto_Limits == 2 */ + + if (Vars->Flag_Auto_Limits != 2 || !Vars->Coord_Number) /* Vars->Flag_Auto_Limits == 0 (no auto limits/list) or 1 (store events into Buffer) */ + { + /* automatically compute area and steradian solid angle when in AUTO mode */ + /* compute the steradian solid angle incoming on the monitor */ + double v; + double tmp; + v=sqrt(_particle->vx*_particle->vx + _particle->vy*_particle->vy + _particle->vz*_particle->vz); + tmp=_particle->x; + if (Vars->min_x > _particle->x){ + #pragma acc atomic write + Vars->min_x = tmp; + } + if (Vars->max_x < _particle->x){ + #pragma acc atomic write + Vars->max_x = tmp; + } + tmp=_particle->y; + if (Vars->min_y > _particle->y){ + #pragma acc atomic write + Vars->min_y = tmp; + } + if (Vars->max_y < _particle->y){ + tmp=_particle->y; + #pragma acc atomic write + Vars->max_y = tmp; + } + + #pragma acc atomic + Vars->mean_p = Vars->mean_p + _particle->p; + if (v) { + tmp=_particle->p*fabs(_particle->vx/v); + #pragma acc atomic + Vars->mean_dx = Vars->mean_dx + tmp; //_particle->p*fabs(_particle->vx/v); + tmp=_particle->p*fabs(_particle->vy/v); + #pragma acc atomic + Vars->mean_dy = Vars->mean_dy + tmp; //_particle->p*fabs(_particle->vy/v); + } + + for (i = 0; i <= Vars->Coord_Number; i++) + { /* handle current neutron : last while */ + XY = 0; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + /* get values for variables to monitor */ + if (Set_Vars_Coord_Type == DEFS->COORD_X) XY = _particle->x; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Y) XY = _particle->y; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Z) XY = _particle->z; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VX) XY = _particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VY) XY = _particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VZ) XY = _particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KX) XY = V2K*_particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KY) XY = V2K*_particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KZ) XY = V2K*_particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SX) XY = _particle->sx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SY) XY = _particle->sy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SZ) XY = _particle->sz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) XY = _particle->t; + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) XY = _particle->p; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE0) XY = Vars->UserDoubles[0]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE1) XY = Vars->UserDoubles[1]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE2) XY = Vars->UserDoubles[2]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE3) XY = Vars->UserDoubles[3]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE4) XY = Vars->UserDoubles[4]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE5) XY = Vars->UserDoubles[5]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE6) XY = Vars->UserDoubles[6]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE7) XY = Vars->UserDoubles[7]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE8) XY = Vars->UserDoubles[8]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE9) XY = Vars->UserDoubles[9]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE10) XY = Vars->UserDoubles[10]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE11) XY = Vars->UserDoubles[11]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE12) XY = Vars->UserDoubles[12]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE13) XY = Vars->UserDoubles[13]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE14) XY = Vars->UserDoubles[14]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE15) XY = Vars->UserDoubles[15]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV) XY = RAD2DEG*atan2(_particle->vx,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VDIV) XY = RAD2DEG*atan2(_particle->vy,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_V) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XY) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y)*(_particle->x > 0 ? 1 : -1); + else + if (Set_Vars_Coord_Type == DEFS->COORD_YZ) XY = sqrt(_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XZ) + XY = sqrt(_particle->x*_particle->x+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXY) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXZ) XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VYZ) XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_K) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXY) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXZ) { XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KYZ) { XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) { XY = _particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz; XY *= VS2E; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; if (XY != 0) XY = 2*PI/XY; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) XY = _particle->_uid; + else + if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + if (_particle->vz != 0) + XY = RAD2DEG*atan2(XY,_particle->vz)*(_particle->x > 0 ? 1 : -1); + else XY = 0; + } + else + if (Set_Vars_Coord_Type == DEFS->COORD_THETA) { if (_particle->z != 0) XY = RAD2DEG*atan2(_particle->x,_particle->z); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PHI) { double rr=sqrt(_particle->x*_particle->x+ _particle->y*_particle->y + _particle->z*_particle->z); if (rr != 0) XY = RAD2DEG*asin(_particle->y/rr); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) {int fail; XY = particle_getvar(_particle,Vars->UserVariable1,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) {int fail; XY = particle_getvar(_particle,Vars->UserVariable2,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) {int fail; XY = particle_getvar(_particle,Vars->UserVariable3,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID && !Vars->Flag_Auto_Limits) { + /* compute the PixelID from previous coordinates + the PixelID is the product of Coord_Index[i] in the detector geometry + pixelID = sum( Coord_Index[j]*prod(Vars->Coord_Bin[1:(j-1)]) ) + + this does not apply when we store events in the buffer as Coord_Index + is not set. Then the pixelID will be re-computed during SAVE. + */ + char flag_outside=0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] <= 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; XY=0; break; + } + XY += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (Vars->Flag_mantid && Vars->Flag_OFF && Vars->OFF_polyidx >=0) XY=Vars->OFF_polyidx; + if (!flag_outside) XY += Vars->Coord_Min[i]; + } + + /* handle 'abs' and 'log' keywords */ + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) XY=fabs(XY); + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) /* compute log of variable if requested */ + { if (XY > 0) XY = log(XY)/log(10); + else XY = -100; } + + Coord[i] = XY; Coord_Index[i] = 0; + if (i == 0) { pp = XY; Coord_Index[i] = 0; } + else { + /* check bounds for variables which have no automatic limits */ + if ((!Vars->Flag_Auto_Limits || !(Vars->Coord_Type[i] & DEFS->COORD_AUTO)) && Vars->Coord_Bin[i]>1) + { /* compute index in histograms for each variable to monitor */ + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + } + //if (0 > Coord_Index[i] || Coord_Index[i] >= Vars->Coord_Bin[i]) + // outsidebounds=1; + } /* else will get Index later from Buffer when Flag_Auto_Limits == 2 */ + } + + } /* end for i */ + While_End = 1; + }/* end else if Vars->Flag_Auto_Limits == 2 */ + + /* ====================================================================== */ + /* store n1d/2d neutron from Buffer (Auto_Limits == 2) or current neutron in while */ + if (Vars->Flag_Auto_Limits != 1) /* not when storing auto limits Buffer */ + { + /* apply per cm2 */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ( Vars->Coord_NumberNoPixel == 2 && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i][j] = Vars->Mon2D_N[i][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i][j] = Vars->Mon2D_p[i][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i][j] = Vars->Mon2D_p2[i][j] + p2; + } + } else { + outsidebounds=1; + } + } else { + /* 1D and n1D case : Vars->Flag_Multiple */ + /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + + for (i= 1; i <= Vars->Coord_Number; i++) { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i-1][j] = Vars->Mon2D_N[i-1][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i-1][j] = Vars->Mon2D_p[i-1][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i-1][j] = Vars->Mon2D_p2[i-1][j] + p2; + } + } + } else { + outsidebounds=1; + break; + } + } + } + } /* end (Vars->Flag_Auto_Limits != 1) */ + + if (Vars->Flag_Auto_Limits != 2 && !outsidebounds) /* not when reading auto limits Buffer */ + { /* now store Coord into Buffer (no index needed) if necessary (list or auto limits) */ + if ((Vars->Buffer_Counter < Vars->Buffer_Block) && ((Vars->Flag_List) || (Vars->Flag_Auto_Limits == 1))) + { + for (i = 0; i <= Vars->Coord_Number; i++) + { + // This is is where the list is appended. How to make this "atomic"? + #pragma acc atomic write + Vars->Mon2D_Buffer[i + Vars->Buffer_Counter*(Vars->Coord_Number+1)] = Coord[i]; + } + #pragma acc atomic update + Vars->Buffer_Counter = Vars->Buffer_Counter + 1; + if (Vars->Flag_Verbose && (Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List == 1)) + printf("Monitor_nD: %s %li neutrons stored in List.\n", Vars->compcurname, Vars->Buffer_Counter); + } + } /* end (Vars->Flag_Auto_Limits != 2) */ + + } /* end while */ + #pragma acc atomic + Vars->Nsum = Vars->Nsum + 1; + #pragma acc atomic + Vars->psum = Vars->psum + pp; + #pragma acc atomic + Vars->p2sum = Vars->p2sum + pp*pp; + + /*determine return value: 1:neutron was in bounds and measured, -1: outside bounds, 0: outside bounds, should be absorbed.*/ + if(outsidebounds){ + if(Vars->Flag_Absorb){ + return 0; + }else{ + return -1; + } + } else { + /* For the OPENACC list buffer an atomic capture/update of the + updated Neutron_counter - updated below under list mode + Only need to be updated when inside bounds. */ + #pragma acc atomic update + Vars->Neutron_Counter++; + } + return 1; +} /* end Monitor_nD_Trace */ + +/* ========================================================================= */ +/* Monitor_nD_Save: this routine is used to save data files */ +/* ========================================================================= */ + +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars) + { + char *fname; + long i,j; + double *p0m = NULL; + double *p1m = NULL; + double *p2m = NULL; + char Coord_X_Label[CHAR_BUF_LENGTH]; + double min1d, max1d; + double min2d, max2d; + char While_End = 0; + long While_Buffer = 0; + double XY=0, pp=0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char label[CHAR_BUF_LENGTH]; + + MCDETECTOR detector; + strcpy(detector.options,Vars->option); + if (Vars->Flag_Verbose && Vars->Flag_per_cm2) { + printf("Monitor_nD: %s: active flat detector area is %g [cm^2], total area is %g [cm^2]\n", + Vars->compcurname, (Vars->max_x-Vars->min_x) + *(Vars->max_y-Vars->min_y)*1E4, Vars->area); + printf("Monitor_nD: %s: beam solid angle is %g [st] (%g x %g [deg^2])\n", + Vars->compcurname, + 2*fabs(2*atan2(Vars->mean_dx,Vars->mean_p) + *sin(2*atan2(Vars->mean_dy,Vars->mean_p)/2)), + atan2(Vars->mean_dx,Vars->mean_p)*RAD2DEG, + atan2(Vars->mean_dy,Vars->mean_p)*RAD2DEG); + } + + /* check Buffer flush when end of simulation reached */ + if ((Vars->Buffer_Counter <= Vars->Buffer_Block) && Vars->Flag_Auto_Limits && Vars->Mon2D_Buffer && Vars->Buffer_Counter) + { + /* Get Auto Limits */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + + for (i = 1; i <= Vars->Coord_Number; i++) + { + if ((Vars->Coord_Type[i] & DEFS->COORD_AUTO) && Vars->Coord_Bin[i] > 1) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g in %li bins\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i], Vars->Coord_Bin[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step */ + Vars->Buffer_Block = Vars->Buffer_Counter; + + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) */ + /* simulation ended before Buffer was filled. Limits have to be computed, and stored events must be sent into histograms */ + + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loops (While_Buffer) */ + Coord[0] = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + /* auto limits case : scan Buffer within limits and store in Mon2D */ + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) Coord_Index[i] = 0; + else { + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char outsidebounds=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + outsidebounds=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!outsidebounds) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + While_End = 1; + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + + /* store n1d/2d section from Buffer */ + + pp = Coord[0]; + /* apply per cm2 or per st */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if (!Vars->Flag_Multiple && Vars->Coord_NumberNoPixel == 2) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + Vars->Mon2D_N[i][j]++; + Vars->Mon2D_p[i][j] += pp; + Vars->Mon2D_p2[i][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) pp=0; + } + else + /* 1D and n1D case : Vars->Flag_Multiple */ + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + for (i= 1; i <= Vars->Coord_Number; i++) + { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) + { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + Vars->Mon2D_N[i-1][j]++; + Vars->Mon2D_p[i-1][j] += pp; + Vars->Mon2D_p2[i-1][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) { + pp=0; break; + } + } + } /* end store 2D/1D */ + + } /* end while */ + } /* end Force Get Limits */ + + /* write output files (sent to file as p[i*n + j] vectors) */ + if (Vars->Coord_Number == 0) + { + double Nsum; + double psum, p2sum; + Nsum = Vars->Nsum; + psum = Vars->psum; + p2sum= Vars->p2sum; + if (Vars->Flag_signal != DEFS->COORD_P && Nsum > 0) + { psum /=Nsum; p2sum /= Nsum*Nsum; } + /* DETECTOR_OUT_0D(Vars->Monitor_Label, Vars->Nsum, Vars->psum, Vars->p2sum); */ + detector = mcdetector_out_0D(Vars->Monitor_Label, Nsum, psum, p2sum, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + else + if (strlen(Vars->Mon_File) > 0) + { + fname = (char*)malloc(strlen(Vars->Mon_File)+10*Vars->Coord_Number); + if (Vars->Flag_List && Vars->Mon2D_Buffer) /* List: DETECTOR_OUT_2D */ + { + + if (Vars->Flag_List >= 2) Vars->Buffer_Size = Vars->Neutron_Counter; + if (Vars->Buffer_Size >= Vars->Neutron_Counter) + Vars->Buffer_Size = Vars->Neutron_Counter; + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) strcat(fname, "_list"); + + strcpy(Coord_X_Label,""); + for (i= 0; i <= Vars->Coord_Number; i++) + { + strcat(Coord_X_Label, Vars->Coord_Var[i]); + strcat(Coord_X_Label, " "); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i]); } + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s List (%lix%li).\n", Vars->compcurname, fname,(long int)Vars->Neutron_Counter,Vars->Coord_Number); + + /* handle the type of list output */ + strcpy(label, Vars->Monitor_Label); + + detector = mcdetector_out_list( + label, "List of neutron events", Coord_X_Label, + -Vars->Buffer_Size, Vars->Coord_Number+1, + Vars->Mon2D_Buffer, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot, Vars->option,Vars->compcurindex); + } + if (Vars->Flag_Multiple) /* n1D: DETECTOR_OUT_1D */ + { + for (i= 0; i < Vars->Coord_Number; i++) + { + + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i+1]); } + sprintf(Coord_X_Label, "%s monitor", Vars->Coord_Label[i+1]); + strcpy(label, Coord_X_Label); + if (Vars->Coord_Bin[i+1] > 0) { /* 1D monitor */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 1D (%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[i+1]); + min1d = Vars->Coord_Min[i+1]; + max1d = Vars->Coord_Max[i+1]; + if (min1d == max1d) max1d = min1d+1e-6; + p1m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + if (p2m == NULL) /* use Raw Buffer line output */ + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for output. Using raw data.\n", Vars->compcurname); + if (p1m != NULL) free(p1m); + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],Vars->Mon2D_p[i],Vars->Mon2D_p2[i], + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } /* if (p2m == NULL) */ + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (j=0; j < Vars->Coord_Bin[i+1]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j] > 0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } /* if */ + + for (j=0; j < Vars->Coord_Bin[i+1]; j++) + { + p1m[j] = Vars->Mon2D_p[i][j]; + p2m[j] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && Vars->Mon2D_N[i][j] > 0) + { /* normalize mean signal to the number of events */ + p1m[j] /= Vars->Mon2D_N[i][j]; + p2m[j] /= Vars->Mon2D_N[i][j]*Vars->Mon2D_N[i][j]; + } + if (Vars->Flag_log != 0) + { + if ((p1m[j] > 0) && (p2m[j] > 0)) + { + p2m[j] /= p1m[j]*p1m[j]; + p1m[j] = log(p1m[j])/log(10); + } + else + { + p1m[j] = XY; + p2m[j] = 0; + } + } + } /* for */ + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + + } /* else */ + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p1m != NULL) free(p1m); p1m=NULL; + if (p2m != NULL) free(p2m); p2m=NULL; + */ + } else { /* 0d monitor */ + detector = mcdetector_out_0D(label, Vars->Mon2D_p[i][0], Vars->Mon2D_p2[i][0], Vars->Mon2D_N[i][0], Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + + } /* for */ + } /* if 1D */ + else + if (Vars->Coord_NumberNoPixel == 2) /* 2D: DETECTOR_OUT_2D */ + { + strcpy(fname,Vars->Mon_File); + + p0m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p1m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + if (p2m == NULL) + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for 2D array (%zi). Skipping.\n", Vars->compcurname, 3*Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + */ + } + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (i= 0; i < Vars->Coord_Bin[1]; i++) + for (j= 0; j < Vars->Coord_Bin[2]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j]>0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + for (j= 0; j < Vars->Coord_Bin[2]; j++) + { + long index; + index = j + i*Vars->Coord_Bin[2]; + p0m[index] = Vars->Mon2D_N[i][j]; + p1m[index] = Vars->Mon2D_p[i][j]; + p2m[index] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && p0m[index] > 0) + { + p1m[index] /= p0m[index]; + p2m[index] /= p0m[index]*p0m[index]; + } + + if (Vars->Flag_log != 0) + { + if ((p1m[index] > 0) && (p2m[index] > 0)) + { + p2m[index] /= (p1m[index]*p1m[index]); + p1m[index] = log(p1m[index])/log(10); + + } + else + { + p1m[index] = XY; + p2m[index] = 0; + } + } + } + } + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[1]); + strcat(fname, "_"); strcat(fname, Vars->Coord_Var[2]); } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 2D (%lix%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[1], Vars->Coord_Bin[2]); + + min1d = Vars->Coord_Min[1]; + max1d = Vars->Coord_Max[1]; + if (min1d == max1d) max1d = min1d+1e-6; + min2d = Vars->Coord_Min[2]; + max2d = Vars->Coord_Max[2]; + if (min2d == max2d) max2d = min2d+1e-6; + strcpy(label, Vars->Monitor_Label); + if (Vars->Coord_Bin[1]*Vars->Coord_Bin[2] > 1 + && Vars->Flag_signal == DEFS->COORD_P) + strcat(label, " per bin"); + if (Vars->Flag_List) { + detector = mcdetector_out_2D_list( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->option,Vars->compcurindex); + } else { + detector = mcdetector_out_2D( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + if (p2m != NULL) free(p2m); + */ + } + } + free(fname); + } + return(detector); + } /* end Monitor_nD_Save */ + +/* ========================================================================= */ +/* Monitor_nD_Finally: this routine is used to free memory */ +/* ========================================================================= */ + +void Monitor_nD_Finally(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + int i; + + /* Now Free memory Mon2D.. */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Mon2D_Buffer != NULL) free(Vars->Mon2D_Buffer); + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_Number) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + for (i= 0; i < Vars->Coord_Number; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + } /* end Monitor_nD_Finally */ + +/* ========================================================================= */ +/* Monitor_nD_McDisplay: this routine is used to display component */ +/* ========================================================================= */ + +void Monitor_nD_McDisplay(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + double radius, h; + double xmin; + double xmax; + double ymin; + double ymax; + double zmin; + double zmax; + int i; + double hdiv_min=-180, hdiv_max=180, vdiv_min=-90, vdiv_max=90; + char restricted = 0; + + radius = Vars->Sphere_Radius; + h = Vars->Cylinder_Height; + xmin = Vars->mxmin; + xmax = Vars->mxmax; + ymin = Vars->mymin; + ymax = Vars->mymax; + zmin = Vars->mzmin; + zmax = Vars->mzmax; + + /* determine if there are angular limits set at start (no auto) in coord_types + * cylinder/banana: look for hdiv + * sphere: look for angle, radius (->atan2(val,radius)), hdiv, vdiv + * this activates a 'restricted' flag, to draw a region as blades on cylinder/sphere + */ + for (i= 0; i <= Vars->Coord_Number; i++) + { + int Set_Vars_Coord_Type; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV || Set_Vars_Coord_Type == DEFS->COORD_THETA) + { hdiv_min = Vars->Coord_Min[i]; hdiv_max = Vars->Coord_Max[i]; restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_VDIV || Set_Vars_Coord_Type == DEFS->COORD_PHI) + { vdiv_min = Vars->Coord_Min[i]; vdiv_max = Vars->Coord_Max[i];restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { hdiv_min = vdiv_min = Vars->Coord_Min[i]; + hdiv_max = vdiv_max = Vars->Coord_Max[i]; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + { double angle; + angle = RAD2DEG*atan2(Vars->Coord_Max[i], radius); + hdiv_min = vdiv_min = angle; + hdiv_max = vdiv_max = angle; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_Y && abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE) + { + vdiv_min = atan2(ymin,radius)*RAD2DEG; + vdiv_max = atan2(ymax,radius)*RAD2DEG; + restricted = 1; + } + } + /* full sphere */ + if ((!restricted && (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + || abs(Vars->Flag_Shape) == DEFS->SHAPE_PREVIOUS) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + mcdis_circle("xz",0,0,0,radius); + mcdis_circle("yz",0,0,0,radius); + } + /* banana/cylinder/sphere portion */ + else + if (restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE))) + { + int NH=24, NV=24; + int ih, iv; + double width, height; + int issphere; + issphere = (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE); + width = (hdiv_max-hdiv_min)/NH; + if (!issphere) { + NV=1; /* cylinder has vertical axis */ + } + height= (vdiv_max-vdiv_min)/NV; + + /* check width and height of elements (sphere) to make sure the nb + of plates remains limited */ + if (width < 10 && NH > 1) { width = 10; NH=(hdiv_max-hdiv_min)/width; width=(hdiv_max-hdiv_min)/NH; } + if (height < 10 && NV > 1) { height = 10; NV=(vdiv_max-vdiv_min)/height; height= (vdiv_max-vdiv_min)/NV; } + + mcdis_magnify("xyz"); + for(ih = 0; ih < NH; ih++) + for(iv = 0; iv < NV; iv++) + { + double theta0, phi0, theta1, phi1; /* angles in spherical coordinates */ + double x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3; /* vertices at plate edges */ + phi0 = (hdiv_min+ width*ih-90)*DEG2RAD; /* in xz plane */ + phi1 = (hdiv_min+ width*(ih+1)-90)*DEG2RAD; + if (issphere) + { + theta0= (vdiv_min+height* iv + 90) *DEG2RAD; /* in vertical plane */ + theta1= (vdiv_min+height*(iv+1) + 90)*DEG2RAD; + + y0 = -radius*cos(theta0); /* z with Z vertical */ + y1 = -radius*cos(theta1); + if (y0 < ymin) y0=ymin; + if (y0 > ymax) y0=ymax; + if (y1 < ymin) y1=ymin; + if (y1 > ymax) y1=ymax; + } else { + y0 = ymin; + y1 = ymax; + theta0=theta1=90*DEG2RAD; + } + + x0 = radius*sin(theta0)*cos(phi0); /* x with Z vertical */ + z0 =-radius*sin(theta0)*sin(phi0); /* y with Z vertical */ + x1 = radius*sin(theta1)*cos(phi0); + z1 =-radius*sin(theta1)*sin(phi0); + x2 = radius*sin(theta1)*cos(phi1); + z2 =-radius*sin(theta1)*sin(phi1); + x3 = radius*sin(theta0)*cos(phi1); + z3 =-radius*sin(theta0)*sin(phi1); + y2 = y1; y3 = y0; + + mcdis_multiline(5, + x0,y0,z0, + x1,y1,z1, + x2,y2,z2, + x3,y3,z3, + x0,y0,z0); + } + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dt, dy; + dt = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_BANANA_DET: %g, %g, %g, %g, %g, %li, %li, %llu\n", radius, + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* disk (circle) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + } + /* rectangle (square) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_SQUARE) + { + mcdis_magnify("xy"); + mcdis_multiline(5, (double)xmin, (double)ymin, 0.0, + (double)xmax, (double)ymin, 0.0, + (double)xmax, (double)ymax, 0.0, + (double)xmin, (double)ymax, 0.0, + (double)xmin, (double)ymin, 0.0); + + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dx, dy; + dx = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_RECTANGULAR_DET: %g, %g, %g, %g, %li, %li, %llu\n", + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* full cylinder/banana */ + else + if (!restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA))) + { + mcdis_magnify("xyz"); + mcdis_circle("xz", 0, h/2.0, 0, radius); + mcdis_circle("xz", 0, -h/2.0, 0, radius); + mcdis_line(-radius, -h/2.0, 0, -radius, +h/2.0, 0); + mcdis_line(+radius, -h/2.0, 0, +radius, +h/2.0, 0); + mcdis_line(0, -h/2.0, -radius, 0, +h/2.0, -radius); + mcdis_line(0, -h/2.0, +radius, 0, +h/2.0, +radius); + } + else + /* box */ + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_BOX) + { + mcdis_magnify("xyz"); + mcdis_multiline(5, xmin, ymin, zmin, + xmax, ymin, zmin, + xmax, ymax, zmin, + xmin, ymax, zmin, + xmin, ymin, zmin); + mcdis_multiline(5, xmin, ymin, zmax, + xmax, ymin, zmax, + xmax, ymax, zmax, + xmin, ymax, zmax, + xmin, ymin, zmax); + mcdis_line(xmin, ymin, zmin, xmin, ymin, zmax); + mcdis_line(xmax, ymin, zmin, xmax, ymin, zmax); + mcdis_line(xmin, ymax, zmin, xmin, ymax, zmax); + mcdis_line(xmax, ymax, zmin, xmax, ymax, zmax); + } + } /* end Monitor_nD_McDisplay */ + +/* end of monitor_nd-lib.c */ + + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff.h +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Release: +* Version: +* +* Object File Format intersection header for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format: +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#define INTEROFF_LIB_H "$Revision$" + +#ifndef OFF_EPSILON +#define OFF_EPSILON 1e-13 +#endif + +#ifndef OFF_INTERSECT_MAX +#ifdef OPENACC +#define OFF_INTERSECT_MAX 100 +#else +#define OFF_INTERSECT_MAX 1024 +#endif +#endif + +//#include + +#define N_VERTEX_DISPLAYED 200000 + +typedef struct intersection { + MCNUM time; //time of the intersection + Coords v; //intersection point + Coords normal; //normal vector of the surface intersected + short in_out; //1 if the ray enters the volume, -1 otherwise + short edge; //1 if the intersection is on the boundary of the polygon, and error is possible + unsigned long index; // index of the face +} intersection; + +typedef struct polygon { + MCNUM* p; //vertices of the polygon in adjacent order, this way : x1 | y1 | z1 | x2 | y2 | z2 ... + int npol; //number of vertices + #pragma acc shape(p[0:npol]) init_needed(npol) + Coords normal; + double D; +} polygon; + +typedef struct off_struct { + long vtxSize; + long polySize; + long faceSize; + Coords* vtxArray; + #pragma acc shape(vtxArray[0:vtxSize]) init_needed(vtxSize) + Coords* normalArray; + #pragma acc shape(vtxArray[0:faceSize]) init_needed(faceSize) + unsigned long* faceArray; + #pragma acc shape(vtxArray[0:faceSize][0:polySize]) init_needed(faceSize,polySize) + double* DArray; + #pragma acc shape(vtxArray[0:polySize]) init_needed(polySize) + char *filename; + int mantidflag; + long mantidoffset; + intersection intersects[OFF_INTERSECT_MAX]; // After a call to off_intersect_all contains the list of intersections. + int nextintersect; // 'Next' intersection (first t>0) solution after call to off_intersect_all + int numintersect; // Number of intersections after call to off_intersect_all +} off_struct; + +/******************************************************************************* +* long off_init( char *offfile, double xwidth, double yheight, double zdepth, off_struct* data) +* ACTION: read an OFF file, optionally center object and rescale, initialize OFF data structure +* INPUT: 'offfile' OFF file to read +* 'xwidth,yheight,zdepth' if given as non-zero, apply bounding box. +* Specifying only one of these will also use the same ratio on all axes +* 'notcenter' center the object to the (0,0,0) position in local frame when set to zero +* RETURN: number of polyhedra and 'data' OFF structure +*******************************************************************************/ +long off_init( char *offfile, double xwidth, double yheight, double zdepth, + int notcenter, off_struct* data); + +/******************************************************************************* +* int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +* data is the full OFF structure, including a list intersection type +*******************************************************************************/ +#pragma acc routine +int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ); + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ); + +/***************************************************************************** +* int off_intersectx(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ); + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED points from the object +*******************************************************************************/ +void off_display(off_struct); + +/******************************************************************************* +void p_to_quadratic(double eq[], Coords acc, + Coords pos, Coords vel, + double* teq) +* ACTION: define the quadratic for the intersection of a parabola with a plane +* INPUT: 'eq' plane equation +* 'acc' acceleration vector +* 'vel' velocity of the particle +* 'pos' position of the particle +* equation of plane A * x + B * y + C * z - D = 0 +* eq[0] = (C*az)/2+(B*ay)/2+(A*ax)/2 +* eq[1] = C*vz+B*vy+A*vx +* eq[2] = C*z0+B*y0+A*x0-D +* RETURN: equation of parabola: teq(0) * t^2 + teq(1) * t + teq(2) +*******************************************************************************/ +void p_to_quadratic(Coords norm, MCNUM d, Coords acc, Coords pos, Coords vel, + double* teq); + +/******************************************************************************* +int quadraticSolve(double eq[], double* x1, double* x2); +* ACTION: solves the quadratic for the roots x1 and x2 +* eq[0] * t^2 + eq[1] * t + eq[2] = 0 +* INPUT: 'eq' the coefficients of the parabola +* RETURN: roots x1 and x2 and the number of solutions +*******************************************************************************/ +int quadraticSolve(double* eq, double* x1, double* x2); + +#endif + +/* end of interoff-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff-lib.c +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Origin: ILL +* Release: $Revision$ +* Version: McStas X.Y +* +* Object File Format intersection library for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format (it supports comments): +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#include "interoff-lib.h" +#endif + +#ifndef INTEROFF_LIB_C +#define INTEROFF_LIB_C "$Revision$" + +#ifdef OPENACC // If on GPU map fprintf to printf +#define fprintf(stderr,...) printf(__VA_ARGS__) +#endif + +#pragma acc routine +double off_F(double x, double y,double z,double A,double B,double C,double D) { + return ( A*x + B*y + C*z + D ); +} + +#pragma acc routine +char off_sign(double a) { + if (a<0) return(-1); + else if (a==0) return(0); + else return(1); +} + +// off_normal ****************************************************************** +//gives the normal vector of p +#pragma acc routine +void off_normal(Coords* n, polygon p) +{ + //using Newell method + int i=0,j=0; + n->x=0;n->y=0;n->z=0; + for (i = 0, j = p.npol-1; i < p.npol; j = i++) + { + MCNUM x1=p.p[3*i], + y1=p.p[3*i+1], + z1=p.p[3*i+2]; + MCNUM x2=p.p[3*j], + y2=p.p[3*j+1], + z2=p.p[3*j+2]; + // n is the cross product of v1*v2 + n->x += (y1 - y2) * (z1 + z2); + n->y += (z1 - z2) * (x1 + x2); + n->z += (x1 - x2) * (y1 + y2); + } +} /* off_normal */ + +// off_pnpoly ****************************************************************** +//based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html +//return 0 if the vertex is out +// 1 if it is in +// -1 if on the boundary +#pragma acc routine +int off_pnpoly(polygon p, Coords v) +{ + int i=0, c = 0; + MCNUM minx=FLT_MAX,maxx=-FLT_MAX,miny=FLT_MAX,maxy=-FLT_MAX,minz=FLT_MAX,maxz=-FLT_MAX; + MCNUM areax=0,areay=0,areaz=0; + + int pol2dx=0,pol2dy=1; //2d restriction of the poly + MCNUM x=v.x,y=v.y; + + /*areax: projected area with x-scratched = |v1_yz x v2_yz|, where v1=(x1-x0,0,z1-z0) & v2=(x2-x0,0,z2-z0).*/ + /* In principle, if polygon is triangle area should be scaled by 1/2, but this is irrelevant for finding the maximum area.*/ + /* Similarly for y and z scratched.*/ + areax=coords_len(coords_xp( + coords_set(0,p.p[3*1+1]-p.p[0+1],p.p[3*1+2]-p.p[0+2]), + coords_set(0,p.p[3*2+1]-p.p[0+1],p.p[3*2+2]-p.p[0+2]))); + areay=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],0,p.p[3*1+2]-p.p[0+2]), + coords_set(p.p[3*2+0]-p.p[0+0],0,p.p[3*2+2]-p.p[0+2]))); + areaz=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],p.p[3*1+1]-p.p[0+1],0), + coords_set(p.p[3*2+0]-p.p[0+0],p.p[3*2+1]-p.p[0+1],0))); + + if(areaztime = inter->edge = inter->in_out=0; + inter->v = inter->normal = coords_set(0,0,1); + + if (fabs(ndir) < OFF_EPSILON) // ray is parallel to polygon plane + { + if (nw0 == 0) // ray lies in polygon plane (infinite number of solution) + return 0; + else return 0; // ray disjoint from plane (no solution) + } + + // get intersect point of ray with polygon plane + inter->time = nw0 / ndir; //parametric value the point on line (a,b) + + inter->v = coords_set(a.x + inter->time * dir.x,// intersect point of ray and plane + a.y + inter->time * dir.y, + a.z + inter->time * dir.z); + + int res=off_pnpoly(p,inter->v); + + inter->edge=(res==-1); + if (ndir<0) + inter->in_out=1; //the negative dot product means we enter the surface + else + inter->in_out=-1; + + inter->normal=p.normal; + + return res; //true if the intersection point lies inside the poly +} /* off_intersectPoly */ + + +// off_getBlocksIndex ********************************************************** +/*reads the indexes at the beginning of the off file as this : +line 1 OFF +line 2 nbVertex nbFaces nbEdges +*/ +FILE *off_getBlocksIndex(char* filename, long* vtxSize, long* polySize ) +{ + FILE* f = Open_File(filename,"r", NULL); /* from read_table-lib: FILE *Open_File(char *name, char *Mode, char *path) */ + if (!f) return (f); + + char line[CHAR_BUF_LENGTH]; + char *ret=0; + *vtxSize = *polySize = 0; + + /* **************** start to read the file header */ + /* OFF file: + 'OFF' or '3' + */ + + ret=fgets(line,CHAR_BUF_LENGTH , f);// line 1 = "OFF" + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read 1st line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (strlen(line)>5) + { + fprintf(stderr,"Error: First line in %s is too long (=%lu). Possibly the line is not terminated by '\\n'.\n" + " The first line is required to be exactly 'OFF', '3' or 'ply'.\n", + filename,(long unsigned)strlen(line)); + fclose(f); + return(NULL); + } + + if (strncmp(line,"OFF",3) && strncmp(line,"3",1) && strncmp(line,"ply",1)) + { + fprintf(stderr, "Error: %s is probably not an OFF, NOFF or PLY file (interoff/off_getBlocksIndex).\n" + " Requires first line to be 'OFF', '3' or 'ply'.\n",filename); + fclose(f); + return(NULL); + } + + if (!strncmp(line,"OFF",3) || !strncmp(line,"3",1)) { + do /* OFF file: skip # comments which may be there */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + } while (line[0]=='#'); + //line = nblines of vertex,faces and edges arrays + sscanf(line,"%lu %lu",vtxSize,polySize); + } else { + do /* PLY file: read all lines until find 'end_header' + and locate 'element faces' and 'element vertex' */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (!strncmp(line,"element face",12)) + sscanf(line,"element face %lu",polySize); + else if (!strncmp(line,"element vertex",14)) + sscanf(line,"element vertex %lu",vtxSize); + else if (!strncmp(line,"format binary",13)) + exit(fprintf(stderr, + "Error: Can not read binary PLY file %s, only 'format ascii' (interoff/off_getBlocksIndex)\n%s\n", + filename, line)); + } while (strncmp(line,"end_header",10)); + } + + /* The FILE is left opened ready to read 'vtxSize' vertices (vtxSize *3 numbers) + and then polySize polygons (rows) */ + + return(f); +} /* off_getBlocksIndex */ + +// off_init_planes ************************************************************* +//gives the equations of 2 perpandicular planes of [ab] +#pragma acc routine +void off_init_planes(Coords a, Coords b, + MCNUM* A1, MCNUM* C1, MCNUM* D1, MCNUM *A2, MCNUM* B2, MCNUM* C2, MCNUM* D2) +{ + //direction vector of [a b] + Coords dir={b.x-a.x, b.y-a.y, b.z-a.z}; + + //the plane parallel to the 'y' is computed with the normal vector of the projection of [ab] on plane 'xz' + *A1= dir.z; + *C1=-dir.x; + if(*A1!=0 || *C1!=0) + *D1=-(a.x)*(*A1)-(a.z)*(*C1); + else + { + //the plane does not support the vector, take the one parallel to 'z'' + *A1=1; + //B1=dir.x=0 + *D1=-(a.x); + } + //the plane parallel to the 'x' is computed with the normal vector of the projection of [ab] on plane 'yz' + *B2= dir.z; + *C2=-dir.y; + *A2= 0; + if (*B2==0 && *C2==0) + { + //the plane does not support the vector, take the one parallel to 'z' + *B2=1; + //B1=dir.x=0 + *D2=-(a.y); + } + else { + if (dir.z==0) + { + //the planes are the same, take the one parallel to 'z' + *A2= dir.y; + *B2=-dir.x; + *D2=-(a.x)*(*A2)-(a.y)*(*B2); + } + else + *D2=-(a.y)**B2-(a.z)**C2; + } +} /* off_init_planes */ + +// off_clip_3D_mod ************************************************************* +#pragma acc routine +int off_clip_3D_mod(intersection* t, Coords a, Coords b, + Coords* vtxArray, unsigned long vtxSize, unsigned long* faceArray, + unsigned long faceSize, Coords* normalArray) +{ + MCNUM A1=0, C1=0, D1=0, A2=0, B2=0, C2=0, D2=0; //perpendicular plane equations to [a,b] + off_init_planes(a, b, &A1, &C1, &D1, &A2, &B2, &C2, &D2); + + int t_size=0; + MCNUM popol[3*4]; /*3 dimensions and max 4 vertices to form a polygon*/ + unsigned long i=0,indPoly=0; + + //exploring the polygons : + i=indPoly=0; + while (iOFF_INTERSECT_MAX) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", OFF_INTERSECT_MAX); + return (t_size); + } +#endif + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k t[0].time) { + t[0]=x; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (x.time < t[3].time) { + t[3]=x; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } /* if (jCHAR_BUF_LENGTH) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", CHAR_BUF_LENGTH); + return (t_size); + } + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k= 1) { + double time = 1.0e36; + if (x1 < time && x1 > 0.0) { + time = x1; + } + if (nsol == 2 && x2 < time && x2 > 0.0) { + time = x2; + } + if (time != 1.0e36) { + intersection inters; + double t2 = time * time * 0.5; + double tx = pos.x + time * vel.x; + if (acc.x != 0.0) { + tx = tx + t2 * acc.x; + } + double ty = pos.y + time * vel.y; + if (acc.y != 0.0) { + ty = ty + t2 * acc.y; + } + double tz = pos.z + time * vel.z; + if (acc.z != 0.0) { + tz = tz + t2 * acc.z; + } + inters.v = coords_set(tx, ty, tz); + Coords tvel = coords_set(vel.x + time * acc.x, + vel.y + time * acc.y, + vel.z + time * acc.z); + inters.time = time; + inters.normal = pol.normal; + inters.index = indPoly; + int res=off_pnpoly(pol,inters.v); + if (res != 0) { + inters.edge=(res==-1); + MCNUM ndir = scalar_prod(pol.normal.x,pol.normal.y,pol.normal.z,tvel.x,tvel.y,tvel.z); + if (ndir<0) { + inters.in_out=1; //the negative dot product means we enter the surface + } else { + inters.in_out=-1; + } +#ifdef OFF_LEGACY + t[t_size++]=inters; +#else + /* Check against our 4 existing times, starting from [-FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX] */ + /* Case 1, negative time? */ + if (t_size < 4) t_size++; + if (inters.time < 0) { + if (inters.time > t[0].time) { + t[0]=inters; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (inters.time < t[3].time) { + t[3]=inters; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } + } + i += pol.npol; + indPoly++; + } /* while itime - pb->time); +} /* off_compare */ + +// off_cleanDouble ************************************************************* +//given an array of intersections throw those which appear several times +//returns 1 if there is a possibility of error +#pragma acc routine +int off_cleanDouble(intersection* t, int* t_size) +{ + int i=1; + intersection prev=t[0]; + while (i<*t_size) + { + int j=i; + //for each intersection with the same time + while (j<*t_size && fabs(prev.time-t[j].time)maxx) maxx=vtxArray[i].x; + if (vtxArray[i].ymaxy) maxy=vtxArray[i].y; + if (vtxArray[i].zmaxz) maxz=vtxArray[i].z; + i++; // inquire next vertex + } + + // resizing and repositioning params + double centerx=0, centery=0, centerz=0; + if (!notcenter) { + centerx=(minx+maxx)*0.5; + centery=(miny+maxy)*0.5; + centerz=(minz+maxz)*0.5; + } + + double rangex=-minx+maxx, + rangey=-miny+maxy, + rangez=-minz+maxz; + + double ratiox=1,ratioy=1,ratioz=1; + + if (xwidth && rangex) + { + ratiox=xwidth/rangex; + ratioy=ratiox; + ratioz=ratiox; + } + + if (yheight && rangey) + { + ratioy=yheight/rangey; + if(!xwidth) ratiox=ratioy; + ratioz=ratioy; + } + + if (zdepth && rangez) + { + ratioz=zdepth/rangez; + if(!xwidth) ratiox=ratioz; + if(!yheight) ratioy=ratioz; + } + + rangex *= ratiox; + rangey *= ratioy; + rangez *= ratioz; + + //center and resize the object + for (i=0; i polySize*10) { + fprintf(stderr, "Error: %li exceeded allocated polygon array[%li] in file %s (interoff/off_init)\n", + faceSize, polySize*10, offfile); + } + faceArray[faceSize++] = nbVertex; // length of the polygon/face + // then read the vertex ID's + for (j=0; jvtxArray = vtxArray; + data->normalArray= normalArray; + data->DArray = DArray; + data->faceArray = faceArray; + data->vtxSize = vtxSize; + data->polySize = polySize; + data->faceSize = faceSize; + data->filename = offfile; + #ifdef OPENACC + acc_attach((void *)&vtxArray); + acc_attach((void *)&normalArray); + acc_attach((void *)&faceArray); + #endif + + return(polySize); +} /* off_init */ + +#pragma acc routine +int Min_int(int x, int y) { + return (xintersects, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray ); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(data->intersects, A, B, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray ); + } + #ifndef OPENACC + qsort(data->intersects, t_size, sizeof(intersection), off_compare); + #else + #ifdef USE_OFF + gpusort(data->intersects, t_size); + #endif + #endif + off_cleanDouble(data->intersects, &t_size); + off_cleanInOut(data->intersects, &t_size); + + /*find intersections "closest" to 0 (favouring positive ones)*/ + if(t_size>0){ + int i=0; + if(t_size>1) { + for (i=1; i < t_size-1; i++){ + if (data->intersects[i-1].time > 0 && data->intersects[i].time > 0) + break; + } + + data->nextintersect=i-1; + data->numintersect=t_size; + + if (t0) *t0 = data->intersects[i-1].time; + if (n0) *n0 = data->intersects[i-1].normal; + if (t3) *t3 = data->intersects[i].time; + if (n3) *n3 = data->intersects[i].normal; + } else { + if (t0) *t0 = data->intersects[0].time; + if (n0) *n0 = data->intersects[0].normal; + } + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(data->intersects[data->nextintersect]).index; + return t_size; + } +#else + intersection intersect4[4]; + intersect4[0].time=-FLT_MAX; + intersect4[1].time=FLT_MAX; + intersect4[2].time=FLT_MAX; + intersect4[3].time=FLT_MAX; + if(mcgravitation) { + Coords pos={ x, y, z}; + Coords vel={vx, vy, vz}; + Coords acc={ax, ay, az}; + t_size=off_clip_3D_mod_grav(intersect4, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(intersect4, A, B, + data->vtxArray, data->vtxSize, data->faceArray, data->faceSize, data->normalArray ); + } + if(t_size>0){ + int i=0; + if (intersect4[0].time == -FLT_MAX) i=1; + data->numintersect=t_size; + if (t0) *t0 = intersect4[i].time; + if (n0) *n0 = intersect4[i].normal; + if (t3) *t3 = intersect4[i+1].time; + if (n3) *n3 = intersect4[i+1].normal; + + if (intersect4[1].time == FLT_MAX) + { + if (t3) *t3 = 0.0; + } + + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(int)intersect4[i].index; + return t_size; + } +#endif + return 0; +} /* off_intersect */ + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +{ + return off_intersect_all(t0, t3, n0, n3, x, y, z, vx, vy, vz, ax, ay, az, &data ); +} /* off_intersect */ + +/***************************************************************************** +* int off_x_intersect(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +{ + /*This function simply reformats and calls off_intersect (as for neutrons) + *by normalizing the wavevector - this will yield the intersection lengths + *in m*/ + double jx,jy,jz,invk; + int n; + invk=1/sqrt(scalar_prod(kx,ky,kz,kx,ky,kz)); + jx=kx*invk;jy=ky*invk;jz=kz*invk; + n=off_intersect(l0,l3,n0,n3,x,y,z,jx,jy,jz,0.0,0.0,0.0,data); + return n; +} + + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED polygons from the object +*******************************************************************************/ +void off_display(off_struct data) +{ + if(mcdotrace==2){ + // Estimate size of the JSON string + const int VERTEX_OVERHEAD = 30; + const int FACE_OVERHEAD_BASE = 20; + const int FACE_INDEX_OVERHEAD = 15; + int estimated_size = 256; // Base size + estimated_size += data.vtxSize * VERTEX_OVERHEAD; + + for (int i = 0; i < data.faceSize;) { + int num_indices = data.faceArray[i]; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + for (int i = 0; i < data.vtxSize; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", data.vtxArray[i].x, data.vtxArray[i].y, data.vtxArray[i].z); + if (i < data.vtxSize - 1) { + ptr += sprintf(ptr, ", "); + } + } + + ptr += sprintf(ptr, "], \"faces\": ["); + + for (int i = 0; i < data.faceSize;) { + int num = data.faceArray[i]; + ptr += sprintf(ptr, "{ \"face\": ["); + for (int j = 1; j <= num; j++) { + ptr += sprintf(ptr, "%lu", data.faceArray[i + j]); + if (j < num) { + ptr += sprintf(ptr, ", "); + } + } + ptr += sprintf(ptr, "]}"); + i += num + 1; + if(i 1 || drawthis) { + mcdis_line(x1,y1,z1,x2,y2,z2); + } + x1 = x2; y1 = y2; z1 = z2; + } + if (ratio > 1 || drawthis) { + mcdis_line(x1,y1,z1,x0,y0,z0); + } + if (data.mantidflag) { + printf("MANTID_PIXEL: %s\n", pixelinfo); + pixel++; + } + i += nbVertex; + } + } +} /* off_display */ + +/* end of interoff-lib.c */ +#endif // INTEROFF_LIB_C + + + + +/* ************************************************************************** */ +/* End of SHARE user declarations for all components */ +/* ************************************************************************** */ + + +/* ********************** component definition declarations. **************** */ + +/* component Origin=Progress_bar() [1] DECLARE */ +/* Parameter definition for component type 'Progress_bar' */ +struct _struct_Progress_bar_parameters { + /* Component type 'Progress_bar' setting parameters */ + char profile[16384]; + MCNUM percent; + MCNUM flag_save; + MCNUM minutes; + /* Component type 'Progress_bar' private parameters */ + double IntermediateCnts; + time_t StartTime; + time_t EndTime; + time_t CurrentTime; + char infostring[64]; +}; /* _struct_Progress_bar_parameters */ +typedef struct _struct_Progress_bar_parameters _class_Progress_bar_parameters; + +/* Parameters for component type 'Progress_bar' */ +struct _struct_Progress_bar { + char _name[256]; /* e.g. Origin */ + char _type[256]; /* Progress_bar */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Progress_bar_parameters _parameters; +}; +typedef struct _struct_Progress_bar _class_Progress_bar; +_class_Progress_bar _Origin_var; +#pragma acc declare create ( _Origin_var ) + +/* component optical_axis=Arm() [2] DECLARE */ +/* Parameter definition for component type 'Arm' */ +struct _struct_Arm_parameters { + char Arm_has_no_parameters; +}; /* _struct_Arm_parameters */ +typedef struct _struct_Arm_parameters _class_Arm_parameters; + +/* Parameters for component type 'Arm' */ +struct _struct_Arm { + char _name[256]; /* e.g. optical_axis */ + char _type[256]; /* Arm */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Arm_parameters _parameters; +}; +typedef struct _struct_Arm _class_Arm; +_class_Arm _optical_axis_var; +#pragma acc declare create ( _optical_axis_var ) + +/* component Source=ESS_butterfly() [3] DECLARE */ +/* Parameter definition for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly_parameters { + /* Component type 'ESS_butterfly' setting parameters */ + char sector[16384]; + int beamline; + MCNUM yheight; + MCNUM cold_frac; + int target_index; + MCNUM dist; + MCNUM focus_xw; + MCNUM focus_yh; + MCNUM c_performance; + MCNUM t_performance; + MCNUM Lmin; + MCNUM Lmax; + MCNUM tmax_multiplier; + int n_pulses; + MCNUM acc_power; + MCNUM tfocus_dist; + MCNUM tfocus_time; + MCNUM tfocus_width; + MCNUM target_tsplit; + /* Component type 'ESS_butterfly' private parameters */ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double * Beamlines; + double wfrac_cold; + double wfrac_thermal; + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + double cos_thermal; + double cos_cold; + double orientation_angle; + double cx; + double cz; + int jmax; + double dxC; + double dxT; +}; /* _struct_ESS_butterfly_parameters */ +typedef struct _struct_ESS_butterfly_parameters _class_ESS_butterfly_parameters; + +/* Parameters for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly { + char _name[256]; /* e.g. Source */ + char _type[256]; /* ESS_butterfly */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_ESS_butterfly_parameters _parameters; +}; +typedef struct _struct_ESS_butterfly _class_ESS_butterfly; +_class_ESS_butterfly _Source_var; +#pragma acc declare create ( _Source_var ) + +_class_Arm _Start_of_bi_var; +#pragma acc declare create ( _Start_of_bi_var ) + +/* component bi=bi_spec_ellipse() [5] DECLARE */ +/* Parameter definition for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse_parameters { + /* Component type 'bi_spec_ellipse' setting parameters */ + MCNUM xheight; + MCNUM ywidth; + MCNUM zlength; + MCNUM n_mirror; + MCNUM tilt; + MCNUM n_pieces; + MCNUM angular_offset; + MCNUM m; + MCNUM R0_m; + MCNUM Qc_m; + MCNUM alpha_mirror_m; + MCNUM W_m; + MCNUM transmit; + MCNUM d_focus_1_x; + MCNUM d_focus_2_x; + MCNUM d_focus_1_y; + MCNUM d_focus_2_y; + MCNUM ell_l; + MCNUM ell_h; + MCNUM ell_w; + MCNUM ell_m; + MCNUM R0; + MCNUM Qc; + MCNUM alpha_mirror; + MCNUM W; + MCNUM cut; + MCNUM substrate; + char reflect_mirror[16384]; + char reflect[16384]; + /* Component type 'bi_spec_ellipse' private parameters */ + t_Table pTable; +}; /* _struct_bi_spec_ellipse_parameters */ +typedef struct _struct_bi_spec_ellipse_parameters _class_bi_spec_ellipse_parameters; + +/* Parameters for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse { + char _name[256]; /* e.g. bi */ + char _type[256]; /* bi_spec_ellipse */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_bi_spec_ellipse_parameters _parameters; +}; +typedef struct _struct_bi_spec_ellipse _class_bi_spec_ellipse; +_class_bi_spec_ellipse _bi_var; +#pragma acc declare create ( _bi_var ) + +_class_Arm _End_of_bi_var; +#pragma acc declare create ( _End_of_bi_var ) + +/* component NBOA_drawing_1_end=Guide_four_side() [7] DECLARE */ +/* Parameter definition for component type 'Guide_four_side' */ +struct _struct_Guide_four_side_parameters { + /* Component type 'Guide_four_side' setting parameters */ + char RIreflect[16384]; + char LIreflect[16384]; + char UIreflect[16384]; + char DIreflect[16384]; + char ROreflect[16384]; + char LOreflect[16384]; + char UOreflect[16384]; + char DOreflect[16384]; + MCNUM w1l; + MCNUM w2l; + MCNUM linwl; + MCNUM loutwl; + MCNUM w1r; + MCNUM w2r; + MCNUM linwr; + MCNUM loutwr; + MCNUM h1u; + MCNUM h2u; + MCNUM linhu; + MCNUM louthu; + MCNUM h1d; + MCNUM h2d; + MCNUM linhd; + MCNUM louthd; + MCNUM l; + MCNUM R0; + MCNUM Qcxl; + MCNUM Qcxr; + MCNUM Qcyu; + MCNUM Qcyd; + MCNUM alphaxl; + MCNUM alphaxr; + MCNUM alphayu; + MCNUM alphayd; + MCNUM Wxr; + MCNUM Wxl; + MCNUM Wyu; + MCNUM Wyd; + MCNUM mxr; + MCNUM mxl; + MCNUM myu; + MCNUM myd; + MCNUM QcxrOW; + MCNUM QcxlOW; + MCNUM QcyuOW; + MCNUM QcydOW; + MCNUM alphaxlOW; + MCNUM alphaxrOW; + MCNUM alphayuOW; + MCNUM alphaydOW; + MCNUM WxrOW; + MCNUM WxlOW; + MCNUM WyuOW; + MCNUM WydOW; + MCNUM mxrOW; + MCNUM mxlOW; + MCNUM myuOW; + MCNUM mydOW; + MCNUM rwallthick; + MCNUM lwallthick; + MCNUM uwallthick; + MCNUM dwallthick; + /* Component type 'Guide_four_side' private parameters */ + double w1rwt; + double w1lwt; + double h1uwt; + double h1dwt; + double w2rwt; + double w2lwt; + double h2uwt; + double h2dwt; + double pawr; + double pawl; + double pbwr; + double pbwl; + double pahu; + double pahd; + double pbhu; + double pbhd; + double awl; + double bwl; + double awr; + double bwr; + double ahu; + double bhu; + double ahd; + double bhd; + double awlwt; + double bwlwt; + double awrwt; + double bwrwt; + double ahuwt; + double bhuwt; + double ahdwt; + double bhdwt; + double pawrwt; + double pawlwt; + double pbwrwt; + double pbwlwt; + double pahuwt; + double pahdwt; + double pbhuwt; + double pbhdwt; + double a2wlwt; + double b2wlwt; + double a2wrwt; + double b2wrwt; + double a2huwt; + double b2huwt; + double a2hdwt; + double b2hdwt; + double a2wl; + double b2wl; + double a2wr; + double b2wr; + double a2hu; + double b2hu; + double a2hd; + double b2hd; + double mru1; + double mru2; + double nru1; + double nru2; + double mrd1; + double mrd2; + double nrd1; + double nrd2; + double mlu1; + double mlu2; + double nlu1; + double nlu2; + double mld1; + double mld2; + double nld1; + double nld2; + double z0wr; + double z0wl; + double z0hu; + double z0hd; + double p2parawr; + double p2parawl; + double p2parahu; + double p2parahd; + double p2parawrwt; + double p2parawlwt; + double p2parahuwt; + double p2parahdwt; + t_Table riTable; + t_Table liTable; + t_Table uiTable; + t_Table diTable; + t_Table roTable; + t_Table loTable; + t_Table uoTable; + t_Table doTable; +}; /* _struct_Guide_four_side_parameters */ +typedef struct _struct_Guide_four_side_parameters _class_Guide_four_side_parameters; + +/* Parameters for component type 'Guide_four_side' */ +struct _struct_Guide_four_side { + char _name[256]; /* e.g. NBOA_drawing_1_end */ + char _type[256]; /* Guide_four_side */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Guide_four_side_parameters _parameters; +}; +typedef struct _struct_Guide_four_side _class_Guide_four_side; +_class_Guide_four_side _NBOA_drawing_1_end_var; +#pragma acc declare create ( _NBOA_drawing_1_end_var ) + +_class_Guide_four_side _g1a2_var; +#pragma acc declare create ( _g1a2_var ) + +_class_Guide_four_side _g1a3_var; +#pragma acc declare create ( _g1a3_var ) + +_class_Guide_four_side _g1b1_var; +#pragma acc declare create ( _g1b1_var ) + +_class_Guide_four_side _g1c1_var; +#pragma acc declare create ( _g1c1_var ) + +_class_Arm _wfm_position_var; +#pragma acc declare create ( _wfm_position_var ) + +_class_Arm _wfm_1_position_var; +#pragma acc declare create ( _wfm_1_position_var ) + +/* component wfmc_1=MultiDiskChopper() [14] DECLARE */ +/* Parameter definition for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper_parameters { + /* Component type 'MultiDiskChopper' setting parameters */ + char slit_center[16384]; + char slit_width[16384]; + MCNUM nslits; + MCNUM delta_y; + MCNUM nu; + MCNUM nrev; + MCNUM ratio; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM phase; + MCNUM radius; + MCNUM equal; + MCNUM abs_out; + MCNUM verbose; + /* Component type 'MultiDiskChopper' private parameters */ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +}; /* _struct_MultiDiskChopper_parameters */ +typedef struct _struct_MultiDiskChopper_parameters _class_MultiDiskChopper_parameters; + +/* Parameters for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper { + char _name[256]; /* e.g. wfmc_1 */ + char _type[256]; /* MultiDiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_MultiDiskChopper_parameters _parameters; +}; +typedef struct _struct_MultiDiskChopper _class_MultiDiskChopper; +_class_MultiDiskChopper _wfmc_1_var; +#pragma acc declare create ( _wfmc_1_var ) + +/* component pinhole_1=Slit() [15] DECLARE */ +/* Parameter definition for component type 'Slit' */ +struct _struct_Slit_parameters { + /* Component type 'Slit' setting parameters */ + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM radius; + MCNUM xwidth; + MCNUM yheight; + /* Component type 'Slit' private parameters */ + char isradial; +}; /* _struct_Slit_parameters */ +typedef struct _struct_Slit_parameters _class_Slit_parameters; + +/* Parameters for component type 'Slit' */ +struct _struct_Slit { + char _name[256]; /* e.g. pinhole_1 */ + char _type[256]; /* Slit */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Slit_parameters _parameters; +}; +typedef struct _struct_Slit _class_Slit; +_class_Slit _pinhole_1_var; +#pragma acc declare create ( _pinhole_1_var ) + +_class_Arm _wfm_2_position_var; +#pragma acc declare create ( _wfm_2_position_var ) + +_class_MultiDiskChopper _wfmc_2_var; +#pragma acc declare create ( _wfmc_2_var ) + +_class_Guide_four_side _g2a1_var; +#pragma acc declare create ( _g2a1_var ) + +_class_Arm _monitor_1_position_var; +#pragma acc declare create ( _monitor_1_position_var ) + +_class_Guide_four_side _g2a2_var; +#pragma acc declare create ( _g2a2_var ) + +_class_Arm _fo1_position_var; +#pragma acc declare create ( _fo1_position_var ) + +_class_MultiDiskChopper _fo_chopper_1_var; +#pragma acc declare create ( _fo_chopper_1_var ) + +_class_Arm _bp1_position_var; +#pragma acc declare create ( _bp1_position_var ) + +/* component bp1_chopper=DiskChopper() [24] DECLARE */ +/* Parameter definition for component type 'DiskChopper' */ +struct _struct_DiskChopper_parameters { + /* Component type 'DiskChopper' setting parameters */ + MCNUM theta_0; + MCNUM radius; + MCNUM yheight; + MCNUM nu; + MCNUM nslit; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM n_pulse; + MCNUM abs_out; + MCNUM phase; + MCNUM xwidth; + MCNUM verbose; + /* Component type 'DiskChopper' private parameters */ + double Tg; + double To; + double delta_y; + double height; + double omega; +}; /* _struct_DiskChopper_parameters */ +typedef struct _struct_DiskChopper_parameters _class_DiskChopper_parameters; + +/* Parameters for component type 'DiskChopper' */ +struct _struct_DiskChopper { + char _name[256]; /* e.g. bp1_chopper */ + char _type[256]; /* DiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_DiskChopper_parameters _parameters; +}; +typedef struct _struct_DiskChopper _class_DiskChopper; +_class_DiskChopper _bp1_chopper_var; +#pragma acc declare create ( _bp1_chopper_var ) + +_class_Guide_four_side _g2b1_var; +#pragma acc declare create ( _g2b1_var ) + +_class_Guide_four_side _g2b2_var; +#pragma acc declare create ( _g2b2_var ) + +_class_Guide_four_side _g2b3_var; +#pragma acc declare create ( _g2b3_var ) + +_class_Guide_four_side _g2b4_var; +#pragma acc declare create ( _g2b4_var ) + +_class_Arm _fo2_position_var; +#pragma acc declare create ( _fo2_position_var ) + +_class_MultiDiskChopper _fo_chopper_2_var; +#pragma acc declare create ( _fo_chopper_2_var ) + +_class_Arm _bp2_position_var; +#pragma acc declare create ( _bp2_position_var ) + +_class_DiskChopper _bp_chopper2_var; +#pragma acc declare create ( _bp_chopper2_var ) + +_class_Guide_four_side _g2c1_var; +#pragma acc declare create ( _g2c1_var ) + +_class_Arm _t0_start_position_var; +#pragma acc declare create ( _t0_start_position_var ) + +_class_DiskChopper _t0_chopper_alpha_var; +#pragma acc declare create ( _t0_chopper_alpha_var ) + +_class_Arm _t0_end_position_var; +#pragma acc declare create ( _t0_end_position_var ) + +_class_DiskChopper _t0_chopper_beta_var; +#pragma acc declare create ( _t0_chopper_beta_var ) + +_class_Guide_four_side _g3a1_var; +#pragma acc declare create ( _g3a1_var ) + +_class_Guide_four_side _g3a2_var; +#pragma acc declare create ( _g3a2_var ) + +_class_Arm _fo3_position_var; +#pragma acc declare create ( _fo3_position_var ) + +_class_MultiDiskChopper _fo_chopper_3_var; +#pragma acc declare create ( _fo_chopper_3_var ) + +_class_Guide_four_side _g3b1_var; +#pragma acc declare create ( _g3b1_var ) + +_class_Guide_four_side _g4a1_var; +#pragma acc declare create ( _g4a1_var ) + +_class_Arm _monitor_2_position_var; +#pragma acc declare create ( _monitor_2_position_var ) + +_class_Guide_four_side _g4a2_var; +#pragma acc declare create ( _g4a2_var ) + +_class_Guide_four_side _g4a3_var; +#pragma acc declare create ( _g4a3_var ) + +_class_Arm _fo4_position_var; +#pragma acc declare create ( _fo4_position_var ) + +_class_MultiDiskChopper _fo_chopper_4_var; +#pragma acc declare create ( _fo_chopper_4_var ) + +_class_Guide_four_side _g4b1_var; +#pragma acc declare create ( _g4b1_var ) + +_class_Guide_four_side _g4b2_var; +#pragma acc declare create ( _g4b2_var ) + +_class_Guide_four_side _g4b3_var; +#pragma acc declare create ( _g4b3_var ) + +_class_Guide_four_side _g4b4_var; +#pragma acc declare create ( _g4b4_var ) + +_class_Guide_four_side _g4b5_var; +#pragma acc declare create ( _g4b5_var ) + +_class_Guide_four_side _g4b6_var; +#pragma acc declare create ( _g4b6_var ) + +_class_Guide_four_side _g5a1_var; +#pragma acc declare create ( _g5a1_var ) + +_class_Arm _fo5_position_var; +#pragma acc declare create ( _fo5_position_var ) + +_class_MultiDiskChopper _fo_chopper_5_var; +#pragma acc declare create ( _fo_chopper_5_var ) + +_class_Guide_four_side _g5b1_var; +#pragma acc declare create ( _g5b1_var ) + +_class_Guide_four_side _g5b2_var; +#pragma acc declare create ( _g5b2_var ) + +_class_Guide_four_side _g5b3_var; +#pragma acc declare create ( _g5b3_var ) + +_class_Guide_four_side _g5b4_var; +#pragma acc declare create ( _g5b4_var ) + +_class_Guide_four_side _g5b5_var; +#pragma acc declare create ( _g5b5_var ) + +_class_Guide_four_side _g5b6_var; +#pragma acc declare create ( _g5b6_var ) + +_class_Guide_four_side _g6a1_var; +#pragma acc declare create ( _g6a1_var ) + +_class_Guide_four_side _g6a2_var; +#pragma acc declare create ( _g6a2_var ) + +_class_Guide_four_side _g6a3_var; +#pragma acc declare create ( _g6a3_var ) + +_class_Arm _guide_end_var; +#pragma acc declare create ( _guide_end_var ) + +_class_Arm _monitor_3_position_var; +#pragma acc declare create ( _monitor_3_position_var ) + +_class_Arm _start_backend_var; +#pragma acc declare create ( _start_backend_var ) + +_class_Arm _optical_axis_backend_var; +#pragma acc declare create ( _optical_axis_backend_var ) + +_class_Slit _pinhole_2_var; +#pragma acc declare create ( _pinhole_2_var ) + +/* component graph=Graphite_Diffuser() [72] DECLARE */ +/* Parameter definition for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser_parameters { + /* Component type 'Graphite_Diffuser' setting parameters */ + MCNUM xwidth; + MCNUM ywidth; + MCNUM thick; + MCNUM abs; +}; /* _struct_Graphite_Diffuser_parameters */ +typedef struct _struct_Graphite_Diffuser_parameters _class_Graphite_Diffuser_parameters; + +/* Parameters for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser { + char _name[256]; /* e.g. graph */ + char _type[256]; /* Graphite_Diffuser */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Graphite_Diffuser_parameters _parameters; +}; +typedef struct _struct_Graphite_Diffuser _class_Graphite_Diffuser; +_class_Graphite_Diffuser _graph_var; +#pragma acc declare create ( _graph_var ) + +_class_Arm _sample_monitor_arm_var; +#pragma acc declare create ( _sample_monitor_arm_var ) + +/* component sample_PSD=Monitor_nD() [74] DECLARE */ +/* Parameter definition for component type 'Monitor_nD' */ +struct _struct_Monitor_nD_parameters { + /* Component type 'Monitor_nD' setting parameters */ + char user1[16384]; + char user2[16384]; + char user3[16384]; + MCNUM xwidth; + MCNUM yheight; + MCNUM zdepth; + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM zmin; + MCNUM zmax; + int bins; + MCNUM min; + MCNUM max; + int restore_neutron; + MCNUM radius; + char options[16384]; + char filename[16384]; + char geometry[16384]; + int nowritefile; + char username1[16384]; + char username2[16384]; + char username3[16384]; + int tsplit; + int adaptive_target; + /* Component type 'Monitor_nD' private parameters */ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +}; /* _struct_Monitor_nD_parameters */ +typedef struct _struct_Monitor_nD_parameters _class_Monitor_nD_parameters; + +/* Parameters for component type 'Monitor_nD' */ +struct _struct_Monitor_nD { + char _name[256]; /* e.g. sample_PSD */ + char _type[256]; /* Monitor_nD */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Monitor_nD_parameters _parameters; +}; +typedef struct _struct_Monitor_nD _class_Monitor_nD; +_class_Monitor_nD _sample_PSD_var; +#pragma acc declare create ( _sample_PSD_var ) + +_class_Monitor_nD _profile_x_var; +#pragma acc declare create ( _profile_x_var ) + +_class_Monitor_nD _profile_y_var; +#pragma acc declare create ( _profile_y_var ) + +_class_Monitor_nD _wavelength_var; +#pragma acc declare create ( _wavelength_var ) + +_class_Monitor_nD _tof_var; +#pragma acc declare create ( _tof_var ) + +_class_Monitor_nD _wavelength_tof_var; +#pragma acc declare create ( _wavelength_tof_var ) + +_class_Arm _sample_position_var; +#pragma acc declare create ( _sample_position_var ) + +int mcNUMCOMP = 80; + +/* User declarations from instrument definition. Can define functions. */ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap + +int adaptive_N; +long total_arrived; +long total_N_sent; +long total_rays_sent; + +#undef compcurname +#undef compcurtype +#undef compcurindex +/* end of instrument 'ODIN_TOF_train3' and components DECLARE */ + +/* ***************************************************************************** +* instrument 'ODIN_TOF_train3' and components INITIALISE +***************************************************************************** */ + +double index_getdistance(int first_index, int second_index) +/* Calculate the distance two components from their indexes*/ +{ + return coords_len(coords_sub(POS_A_COMP_INDEX(first_index), POS_A_COMP_INDEX(second_index))); +} + +double getdistance(char* first_component, char* second_component) +/* Calculate the distance between two named components */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + return index_getdistance(first_index, second_index); +} + +double checked_setpos_getdistance(int current_index, char* first_component, char* second_component) +/* Calculate the distance between two named components at *_setpos() time, with component index checking */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + if (first_index >= current_index || second_index >= current_index) { + printf("setpos_getdistance can only be used with the names of components before the current one!\n"); + return 0; + } + return index_getdistance(first_index, second_index); +} +#define setpos_getdistance(first, second) checked_setpos_getdistance(current_setpos_index, first, second) + +/* component Origin=Progress_bar() SETTING, POSITION/ROTATION */ +int _Origin_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Origin_setpos] component Origin=Progress_bar() SETTING [Progress_bar:0]"); + stracpy(_Origin_var._name, "Origin", 16384); + stracpy(_Origin_var._type, "Progress_bar", 16384); + _Origin_var._index=1; + int current_setpos_index = 1; + if("NULL" && strlen("NULL")) + stracpy(_Origin_var._parameters.profile, "NULL" ? "NULL" : "", 16384); + else + _Origin_var._parameters.profile[0]='\0'; + _Origin_var._parameters.percent = 10; + _Origin_var._parameters.flag_save = 0; + _Origin_var._parameters.minutes = 0; + + + /* component Origin=Progress_bar() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(_Origin_var._rotation_absolute, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_copy(_Origin_var._rotation_relative, _Origin_var._rotation_absolute); + _Origin_var._rotation_is_identity = rot_test_identity(_Origin_var._rotation_relative); + _Origin_var._position_absolute = coords_set( + 0, 0, 0); + tc1 = coords_neg(_Origin_var._position_absolute); + _Origin_var._position_relative = rot_apply(_Origin_var._rotation_absolute, tc1); + } /* Origin=Progress_bar() AT ROTATED */ + DEBUG_COMPONENT("Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute); + instrument->_position_absolute[1] = _Origin_var._position_absolute; + instrument->_position_relative[1] = _Origin_var._position_relative; + _Origin_var._position_relative_is_zero = coords_test_zero(_Origin_var._position_relative); + instrument->counter_N[1] = instrument->counter_P[1] = instrument->counter_P2[1] = 0; + instrument->counter_AbsorbProp[1]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0000_Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute, "Progress_bar"); + mccomp_param_nexus(nxhandle,"0000_Origin", "profile", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0000_Origin", "percent", "10", "10","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "flag_save", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "minutes", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Origin_setpos */ + +/* component optical_axis=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_setpos] component optical_axis=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_var._name, "optical_axis", 16384); + stracpy(_optical_axis_var._type, "Arm", 16384); + _optical_axis_var._index=2; + int current_setpos_index = 2; + /* component optical_axis=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Origin_var._rotation_absolute, _optical_axis_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_optical_axis_var._rotation_absolute, tr1, _optical_axis_var._rotation_relative); + _optical_axis_var._rotation_is_identity = rot_test_identity(_optical_axis_var._rotation_relative); + tc1 = coords_set( + 0.026, 0, 0); + rot_transpose(_Origin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _optical_axis_var._position_absolute); + _optical_axis_var._position_relative = rot_apply(_optical_axis_var._rotation_absolute, tc1); + } /* optical_axis=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute); + instrument->_position_absolute[2] = _optical_axis_var._position_absolute; + instrument->_position_relative[2] = _optical_axis_var._position_relative; + _optical_axis_var._position_relative_is_zero = coords_test_zero(_optical_axis_var._position_relative); + instrument->counter_N[2] = instrument->counter_P[2] = instrument->counter_P2[2] = 0; + instrument->counter_AbsorbProp[2]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0001_optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_setpos */ + +/* component Source=ESS_butterfly() SETTING, POSITION/ROTATION */ +int _Source_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Source_setpos] component Source=ESS_butterfly() SETTING [ESS_butterfly:0]"); + stracpy(_Source_var._name, "Source", 16384); + stracpy(_Source_var._type, "ESS_butterfly", 16384); + _Source_var._index=3; + int current_setpos_index = 3; + if("S" && strlen("S")) + stracpy(_Source_var._parameters.sector, "S" ? "S" : "", 16384); + else + _Source_var._parameters.sector[0]='\0'; + _Source_var._parameters.beamline = 2; + _Source_var._parameters.yheight = 0.03; + _Source_var._parameters.cold_frac = 0.5; + _Source_var._parameters.target_index = 1; + _Source_var._parameters.dist = 0; + _Source_var._parameters.focus_xw = 0.0576862; + _Source_var._parameters.focus_yh = 0.0464308; + _Source_var._parameters.c_performance = 1; + _Source_var._parameters.t_performance = 1; + _Source_var._parameters.Lmin = _instrument_var._parameters.l_min; + _Source_var._parameters.Lmax = _instrument_var._parameters.l_max; + _Source_var._parameters.tmax_multiplier = 3; + _Source_var._parameters.n_pulses = _instrument_var._parameters.n_pulses; + _Source_var._parameters.acc_power = 2.0; + _Source_var._parameters.tfocus_dist = 0; + _Source_var._parameters.tfocus_time = 0; + _Source_var._parameters.tfocus_width = 0; + _Source_var._parameters.target_tsplit = _instrument_var._parameters.target_tsplit; + + + /* component Source=ESS_butterfly() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Origin_var._rotation_absolute, _Source_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_Source_var._rotation_absolute, tr1, _Source_var._rotation_relative); + _Source_var._rotation_is_identity = rot_test_identity(_Source_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Origin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Source_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _Source_var._position_absolute); + _Source_var._position_relative = rot_apply(_Source_var._rotation_absolute, tc1); + } /* Source=ESS_butterfly() AT ROTATED */ + DEBUG_COMPONENT("Source", _Source_var._position_absolute, _Source_var._rotation_absolute); + instrument->_position_absolute[3] = _Source_var._position_absolute; + instrument->_position_relative[3] = _Source_var._position_relative; + _Source_var._position_relative_is_zero = coords_test_zero(_Source_var._position_relative); + instrument->counter_N[3] = instrument->counter_P[3] = instrument->counter_P2[3] = 0; + instrument->counter_AbsorbProp[3]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0002_Source", _Source_var._position_absolute, _Source_var._rotation_absolute, "ESS_butterfly"); + mccomp_param_nexus(nxhandle,"0002_Source", "sector", "N", "S", "char*"); + mccomp_param_nexus(nxhandle,"0002_Source", "beamline", "1", "2","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "yheight", "0.03", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "cold_frac", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "target_index", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "focus_xw", "0", "0.0576862","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "focus_yh", "0", "0.0464308","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "c_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "t_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "Lmin", "NONE", "_instrument_var._parameters.l_min","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "Lmax", "NONE", "_instrument_var._parameters.l_max","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tmax_multiplier", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "n_pulses", "1", "_instrument_var._parameters.n_pulses","int"); + mccomp_param_nexus(nxhandle,"0002_Source", "acc_power", "5", "2.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_time", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_width", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0002_Source", "target_tsplit", "5", "_instrument_var._parameters.target_tsplit","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Source_setpos */ + +/* component Start_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _Start_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Start_of_bi_setpos] component Start_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_Start_of_bi_var._name, "Start_of_bi", 16384); + stracpy(_Start_of_bi_var._type, "Arm", 16384); + _Start_of_bi_var._index=4; + int current_setpos_index = 4; + /* component Start_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _Start_of_bi_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_Start_of_bi_var._rotation_absolute, tr1, _Start_of_bi_var._rotation_relative); + _Start_of_bi_var._rotation_is_identity = rot_test_identity(_Start_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 2.0306); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Start_of_bi_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _Start_of_bi_var._position_absolute); + _Start_of_bi_var._position_relative = rot_apply(_Start_of_bi_var._rotation_absolute, tc1); + } /* Start_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute); + instrument->_position_absolute[4] = _Start_of_bi_var._position_absolute; + instrument->_position_relative[4] = _Start_of_bi_var._position_relative; + _Start_of_bi_var._position_relative_is_zero = coords_test_zero(_Start_of_bi_var._position_relative); + instrument->counter_N[4] = instrument->counter_P[4] = instrument->counter_P2[4] = 0; + instrument->counter_AbsorbProp[4]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0003_Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Start_of_bi_setpos */ + +/* component bi=bi_spec_ellipse() SETTING, POSITION/ROTATION */ +int _bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bi_setpos] component bi=bi_spec_ellipse() SETTING [bi_spec_ellipse:0]"); + stracpy(_bi_var._name, "bi", 16384); + stracpy(_bi_var._type, "bi_spec_ellipse", 16384); + _bi_var._index=5; + int current_setpos_index = 5; + _bi_var._parameters.xheight = 0.044795; + _bi_var._parameters.ywidth = 0.033273; + _bi_var._parameters.zlength = 0.3; + _bi_var._parameters.n_mirror = 0; + _bi_var._parameters.tilt = 0.7355449343006287; + _bi_var._parameters.n_pieces = 1; + _bi_var._parameters.angular_offset = 0.0274924630093546; + _bi_var._parameters.m = 4; + _bi_var._parameters.R0_m = 0.99; + _bi_var._parameters.Qc_m = 0.0217; + _bi_var._parameters.alpha_mirror_m = 2.5; + _bi_var._parameters.W_m = 0.015; + _bi_var._parameters.transmit = 1; + _bi_var._parameters.d_focus_1_x = 3.443249331959489; + _bi_var._parameters.d_focus_2_x = 4.946749331959489; + _bi_var._parameters.d_focus_1_y = 1.9037386467676676; + _bi_var._parameters.d_focus_2_y = 33.78623864676767; + _bi_var._parameters.ell_l = 0.31; + _bi_var._parameters.ell_h = 0.04381396598275876; + _bi_var._parameters.ell_w = 0.03326371014826339; + _bi_var._parameters.ell_m = 4; + _bi_var._parameters.R0 = 0.99; + _bi_var._parameters.Qc = 0.0217; + _bi_var._parameters.alpha_mirror = 2.5; + _bi_var._parameters.W = 0.0015; + _bi_var._parameters.cut = 3; + _bi_var._parameters.substrate = 0; + _bi_var._parameters.reflect_mirror[0]='\0'; + _bi_var._parameters.reflect[0]='\0'; + + + /* component bi=bi_spec_ellipse() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _Start_of_bi_var._rotation_absolute, _bi_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_bi_var._rotation_absolute, tr1, _bi_var._rotation_relative); + _bi_var._rotation_is_identity = rot_test_identity(_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Start_of_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bi_var._position_absolute = coords_add(_Start_of_bi_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _bi_var._position_absolute); + _bi_var._position_relative = rot_apply(_bi_var._rotation_absolute, tc1); + } /* bi=bi_spec_ellipse() AT ROTATED */ + DEBUG_COMPONENT("bi", _bi_var._position_absolute, _bi_var._rotation_absolute); + instrument->_position_absolute[5] = _bi_var._position_absolute; + instrument->_position_relative[5] = _bi_var._position_relative; + _bi_var._position_relative_is_zero = coords_test_zero(_bi_var._position_relative); + instrument->counter_N[5] = instrument->counter_P[5] = instrument->counter_P2[5] = 0; + instrument->counter_AbsorbProp[5]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0004_bi", _bi_var._position_absolute, _bi_var._rotation_absolute, "bi_spec_ellipse"); + mccomp_param_nexus(nxhandle,"0004_bi", "xheight", "NONE", "0.044795","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ywidth", "NONE", "0.033273","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "zlength", "NONE", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "n_mirror", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "tilt", "0.5", "0.7355449343006287","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "n_pieces", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "angular_offset", "0", "0.0274924630093546","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "R0_m", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "Qc_m", "0.021", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "alpha_mirror_m", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "W_m", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "transmit", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_1_x", "2.5", "3.443249331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_2_x", "5", "4.946749331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_1_y", "2.5", "1.9037386467676676","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_2_y", "5", "33.78623864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_l", "3", "0.31","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_h", "0", "0.04381396598275876","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_w", "0", "0.03326371014826339","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "ell_m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "Qc", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "alpha_mirror", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "W", "0.003", "0.0015","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "cut", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "substrate", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_bi", "reflect_mirror", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0004_bi", "reflect", 0, 0, "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bi_setpos */ + +/* component End_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _End_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_End_of_bi_setpos] component End_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_End_of_bi_var._name, "End_of_bi", 16384); + stracpy(_End_of_bi_var._type, "Arm", 16384); + _End_of_bi_var._index=6; + int current_setpos_index = 6; + /* component End_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (-180)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _End_of_bi_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_End_of_bi_var._rotation_absolute, tr1, _End_of_bi_var._rotation_relative); + _End_of_bi_var._rotation_is_identity = rot_test_identity(_End_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _End_of_bi_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _End_of_bi_var._position_absolute); + _End_of_bi_var._position_relative = rot_apply(_End_of_bi_var._rotation_absolute, tc1); + } /* End_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute); + instrument->_position_absolute[6] = _End_of_bi_var._position_absolute; + instrument->_position_relative[6] = _End_of_bi_var._position_relative; + _End_of_bi_var._position_relative_is_zero = coords_test_zero(_End_of_bi_var._position_relative); + instrument->counter_N[6] = instrument->counter_P[6] = instrument->counter_P2[6] = 0; + instrument->counter_AbsorbProp[6]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0005_End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _End_of_bi_setpos */ + +/* component NBOA_drawing_1_end=Guide_four_side() SETTING, POSITION/ROTATION */ +int _NBOA_drawing_1_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_NBOA_drawing_1_end_setpos] component NBOA_drawing_1_end=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_NBOA_drawing_1_end_var._name, "NBOA_drawing_1_end", 16384); + stracpy(_NBOA_drawing_1_end_var._type, "Guide_four_side", 16384); + _NBOA_drawing_1_end_var._index=7; + int current_setpos_index = 7; + _NBOA_drawing_1_end_var._parameters.RIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.ROreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.w1l = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2l = 0.002; + _NBOA_drawing_1_end_var._parameters.linwl = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwl = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.w1r = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2r = 0.002; + _NBOA_drawing_1_end_var._parameters.linwr = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwr = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.h1u = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2u = 0.002; + _NBOA_drawing_1_end_var._parameters.linhu = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthu = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.h1d = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2d = 0.002; + _NBOA_drawing_1_end_var._parameters.linhd = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthd = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.l = 0.5488999999999999; + _NBOA_drawing_1_end_var._parameters.R0 = 0.99; + _NBOA_drawing_1_end_var._parameters.Qcxl = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcxr = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcyu = 0.023; + _NBOA_drawing_1_end_var._parameters.Qcyd = 0.023; + _NBOA_drawing_1_end_var._parameters.alphaxl = 2.5; + _NBOA_drawing_1_end_var._parameters.alphaxr = 2.5; + _NBOA_drawing_1_end_var._parameters.alphayu = 1.8; + _NBOA_drawing_1_end_var._parameters.alphayd = 1.8; + _NBOA_drawing_1_end_var._parameters.Wxr = 0.015; + _NBOA_drawing_1_end_var._parameters.Wxl = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyu = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyd = 0.015; + _NBOA_drawing_1_end_var._parameters.mxr = 4; + _NBOA_drawing_1_end_var._parameters.mxl = 4; + _NBOA_drawing_1_end_var._parameters.myu = 2; + _NBOA_drawing_1_end_var._parameters.myd = 2; + _NBOA_drawing_1_end_var._parameters.QcxrOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcxlOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcyuOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcydOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.alphaxlOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaxrOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphayuOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaydOW = 6.07; + _NBOA_drawing_1_end_var._parameters.WxrOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WxlOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WyuOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WydOW = 0.003; + _NBOA_drawing_1_end_var._parameters.mxrOW = 0; + _NBOA_drawing_1_end_var._parameters.mxlOW = 0; + _NBOA_drawing_1_end_var._parameters.myuOW = 0; + _NBOA_drawing_1_end_var._parameters.mydOW = 0; + _NBOA_drawing_1_end_var._parameters.rwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.lwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.uwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.dwallthick = 0.001; + + + /* component NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_NBOA_drawing_1_end_var._rotation_absolute, tr1, _NBOA_drawing_1_end_var._rotation_relative); + _NBOA_drawing_1_end_var._rotation_is_identity = rot_test_identity(_NBOA_drawing_1_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31000099999999997); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _NBOA_drawing_1_end_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _NBOA_drawing_1_end_var._position_absolute); + _NBOA_drawing_1_end_var._position_relative = rot_apply(_NBOA_drawing_1_end_var._rotation_absolute, tc1); + } /* NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + instrument->_position_absolute[7] = _NBOA_drawing_1_end_var._position_absolute; + instrument->_position_relative[7] = _NBOA_drawing_1_end_var._position_relative; + _NBOA_drawing_1_end_var._position_relative_is_zero = coords_test_zero(_NBOA_drawing_1_end_var._position_relative); + instrument->counter_N[7] = instrument->counter_P[7] = instrument->counter_P2[7] = 0; + instrument->counter_AbsorbProp[7]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0006_NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w1l", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linwl", "0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "loutwl", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w1r", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linwr", "0.0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "loutwr", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h1u", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linhu", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "louthu", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h1d", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linhd", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "louthd", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "l", "0", "0.5488999999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _NBOA_drawing_1_end_setpos */ + +/* component g1a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a2_setpos] component g1a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a2_var._name, "g1a2", 16384); + stracpy(_g1a2_var._type, "Guide_four_side", 16384); + _g1a2_var._index=8; + int current_setpos_index = 8; + _g1a2_var._parameters.RIreflect[0]='\0'; + _g1a2_var._parameters.LIreflect[0]='\0'; + _g1a2_var._parameters.UIreflect[0]='\0'; + _g1a2_var._parameters.DIreflect[0]='\0'; + _g1a2_var._parameters.ROreflect[0]='\0'; + _g1a2_var._parameters.LOreflect[0]='\0'; + _g1a2_var._parameters.UOreflect[0]='\0'; + _g1a2_var._parameters.DOreflect[0]='\0'; + _g1a2_var._parameters.w1l = 0.022397711974319966; + _g1a2_var._parameters.w2l = 0.002; + _g1a2_var._parameters.linwl = 4.303349331959489; + _g1a2_var._parameters.loutwl = 3.3968493319594883; + _g1a2_var._parameters.w1r = 0.022397711974319966; + _g1a2_var._parameters.w2r = 0.002; + _g1a2_var._parameters.linwr = 4.303349331959489; + _g1a2_var._parameters.loutwr = 3.3968493319594883; + _g1a2_var._parameters.h1u = 0.019790525295492974; + _g1a2_var._parameters.h2u = 0.002; + _g1a2_var._parameters.linhu = 2.763788626121542; + _g1a2_var._parameters.louthu = 32.236388626121546; + _g1a2_var._parameters.h1d = 0.019790525295492974; + _g1a2_var._parameters.h2d = 0.002; + _g1a2_var._parameters.linhd = 2.763788626121542; + _g1a2_var._parameters.louthd = 32.236388626121546; + _g1a2_var._parameters.l = 0.9998; + _g1a2_var._parameters.R0 = 0.99; + _g1a2_var._parameters.Qcxl = 0.0217; + _g1a2_var._parameters.Qcxr = 0.0217; + _g1a2_var._parameters.Qcyu = 0.0217; + _g1a2_var._parameters.Qcyd = 0.0217; + _g1a2_var._parameters.alphaxl = 2.5; + _g1a2_var._parameters.alphaxr = 2.5; + _g1a2_var._parameters.alphayu = 2.5; + _g1a2_var._parameters.alphayd = 2.5; + _g1a2_var._parameters.Wxr = 0.015; + _g1a2_var._parameters.Wxl = 0.015; + _g1a2_var._parameters.Wyu = 0.015; + _g1a2_var._parameters.Wyd = 0.015; + _g1a2_var._parameters.mxr = 4; + _g1a2_var._parameters.mxl = 4; + _g1a2_var._parameters.myu = 4; + _g1a2_var._parameters.myd = 4; + _g1a2_var._parameters.QcxrOW = 0.0217; + _g1a2_var._parameters.QcxlOW = 0.0217; + _g1a2_var._parameters.QcyuOW = 0.0217; + _g1a2_var._parameters.QcydOW = 0.0217; + _g1a2_var._parameters.alphaxlOW = 6.07; + _g1a2_var._parameters.alphaxrOW = 6.07; + _g1a2_var._parameters.alphayuOW = 6.07; + _g1a2_var._parameters.alphaydOW = 6.07; + _g1a2_var._parameters.WxrOW = 0.003; + _g1a2_var._parameters.WxlOW = 0.003; + _g1a2_var._parameters.WyuOW = 0.003; + _g1a2_var._parameters.WydOW = 0.003; + _g1a2_var._parameters.mxrOW = 0; + _g1a2_var._parameters.mxlOW = 0; + _g1a2_var._parameters.myuOW = 0; + _g1a2_var._parameters.mydOW = 0; + _g1a2_var._parameters.rwallthick = 0.001; + _g1a2_var._parameters.lwallthick = 0.001; + _g1a2_var._parameters.uwallthick = 0.001; + _g1a2_var._parameters.dwallthick = 0.001; + + + /* component g1a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _NBOA_drawing_1_end_var._rotation_absolute, _g1a2_var._rotation_absolute); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + rot_mul(_g1a2_var._rotation_absolute, tr1, _g1a2_var._rotation_relative); + _g1a2_var._rotation_is_identity = rot_test_identity(_g1a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.548901); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a2_var._position_absolute = coords_add(_NBOA_drawing_1_end_var._position_absolute, tc2); + tc1 = coords_sub(_NBOA_drawing_1_end_var._position_absolute, _g1a2_var._position_absolute); + _g1a2_var._position_relative = rot_apply(_g1a2_var._rotation_absolute, tc1); + } /* g1a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute); + instrument->_position_absolute[8] = _g1a2_var._position_absolute; + instrument->_position_relative[8] = _g1a2_var._position_relative; + _g1a2_var._position_relative_is_zero = coords_test_zero(_g1a2_var._position_relative); + instrument->counter_N[8] = instrument->counter_P[8] = instrument->counter_P2[8] = 0; + instrument->counter_AbsorbProp[8]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0007_g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w1l", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linwl", "0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "loutwl", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w1r", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linwr", "0.0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "loutwr", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h1u", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linhu", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "louthu", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h1d", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "linhd", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "louthd", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "l", "0", "0.9998","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_g1a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a2_setpos */ + +/* component g1a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a3_setpos] component g1a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a3_var._name, "g1a3", 16384); + stracpy(_g1a3_var._type, "Guide_four_side", 16384); + _g1a3_var._index=9; + int current_setpos_index = 9; + _g1a3_var._parameters.RIreflect[0]='\0'; + _g1a3_var._parameters.LIreflect[0]='\0'; + _g1a3_var._parameters.UIreflect[0]='\0'; + _g1a3_var._parameters.DIreflect[0]='\0'; + _g1a3_var._parameters.ROreflect[0]='\0'; + _g1a3_var._parameters.LOreflect[0]='\0'; + _g1a3_var._parameters.UOreflect[0]='\0'; + _g1a3_var._parameters.DOreflect[0]='\0'; + _g1a3_var._parameters.w1l = 0.021853309009560024; + _g1a3_var._parameters.w2l = 0.002; + _g1a3_var._parameters.linwl = 5.3043493319594885; + _g1a3_var._parameters.loutwl = 1.8968293319594889; + _g1a3_var._parameters.w1r = 0.021853309009560024; + _g1a3_var._parameters.w2r = 0.002; + _g1a3_var._parameters.linwr = 5.3043493319594885; + _g1a3_var._parameters.loutwr = 1.8968293319594889; + _g1a3_var._parameters.h1u = 0.02274764602619812; + _g1a3_var._parameters.h2u = 0.002; + _g1a3_var._parameters.linhu = 3.7648386261215414; + _g1a3_var._parameters.louthu = 30.73631862612154; + _g1a3_var._parameters.h1d = 0.02274764602619812; + _g1a3_var._parameters.h2d = 0.002; + _g1a3_var._parameters.linhd = 3.7648386261215414; + _g1a3_var._parameters.louthd = 30.73631862612154; + _g1a3_var._parameters.l = 1.49882; + _g1a3_var._parameters.R0 = 0.99; + _g1a3_var._parameters.Qcxl = 0.0217; + _g1a3_var._parameters.Qcxr = 0.0217; + _g1a3_var._parameters.Qcyu = 0.0217; + _g1a3_var._parameters.Qcyd = 0.0217; + _g1a3_var._parameters.alphaxl = 2.5; + _g1a3_var._parameters.alphaxr = 2.5; + _g1a3_var._parameters.alphayu = 2.5; + _g1a3_var._parameters.alphayd = 2.5; + _g1a3_var._parameters.Wxr = 0.015; + _g1a3_var._parameters.Wxl = 0.015; + _g1a3_var._parameters.Wyu = 0.015; + _g1a3_var._parameters.Wyd = 0.015; + _g1a3_var._parameters.mxr = 4; + _g1a3_var._parameters.mxl = 4; + _g1a3_var._parameters.myu = 4; + _g1a3_var._parameters.myd = 4; + _g1a3_var._parameters.QcxrOW = 0.0217; + _g1a3_var._parameters.QcxlOW = 0.0217; + _g1a3_var._parameters.QcyuOW = 0.0217; + _g1a3_var._parameters.QcydOW = 0.0217; + _g1a3_var._parameters.alphaxlOW = 6.07; + _g1a3_var._parameters.alphaxrOW = 6.07; + _g1a3_var._parameters.alphayuOW = 6.07; + _g1a3_var._parameters.alphaydOW = 6.07; + _g1a3_var._parameters.WxrOW = 0.003; + _g1a3_var._parameters.WxlOW = 0.003; + _g1a3_var._parameters.WyuOW = 0.003; + _g1a3_var._parameters.WydOW = 0.003; + _g1a3_var._parameters.mxrOW = 0; + _g1a3_var._parameters.mxlOW = 0; + _g1a3_var._parameters.myuOW = 0; + _g1a3_var._parameters.mydOW = 0; + _g1a3_var._parameters.rwallthick = 0.001; + _g1a3_var._parameters.lwallthick = 0.001; + _g1a3_var._parameters.uwallthick = 0.001; + _g1a3_var._parameters.dwallthick = 0.001; + + + /* component g1a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _g1a2_var._rotation_absolute, _g1a3_var._rotation_absolute); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + rot_mul(_g1a3_var._rotation_absolute, tr1, _g1a3_var._rotation_relative); + _g1a3_var._rotation_is_identity = rot_test_identity(_g1a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.999801); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a3_var._position_absolute = coords_add(_g1a2_var._position_absolute, tc2); + tc1 = coords_sub(_g1a2_var._position_absolute, _g1a3_var._position_absolute); + _g1a3_var._position_relative = rot_apply(_g1a3_var._rotation_absolute, tc1); + } /* g1a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute); + instrument->_position_absolute[9] = _g1a3_var._position_absolute; + instrument->_position_relative[9] = _g1a3_var._position_relative; + _g1a3_var._position_relative_is_zero = coords_test_zero(_g1a3_var._position_relative); + instrument->counter_N[9] = instrument->counter_P[9] = instrument->counter_P2[9] = 0; + instrument->counter_AbsorbProp[9]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0008_g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w1l", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linwl", "0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "loutwl", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w1r", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linwr", "0.0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "loutwr", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h1u", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linhu", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "louthu", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h1d", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "linhd", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "louthd", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "l", "0", "1.49882","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_g1a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a3_setpos */ + +/* component g1b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1b1_setpos] component g1b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1b1_var._name, "g1b1", 16384); + stracpy(_g1b1_var._type, "Guide_four_side", 16384); + _g1b1_var._index=10; + int current_setpos_index = 10; + _g1b1_var._parameters.RIreflect[0]='\0'; + _g1b1_var._parameters.LIreflect[0]='\0'; + _g1b1_var._parameters.UIreflect[0]='\0'; + _g1b1_var._parameters.DIreflect[0]='\0'; + _g1b1_var._parameters.ROreflect[0]='\0'; + _g1b1_var._parameters.LOreflect[0]='\0'; + _g1b1_var._parameters.UOreflect[0]='\0'; + _g1b1_var._parameters.DOreflect[0]='\0'; + _g1b1_var._parameters.w1l = 0.017955; + _g1b1_var._parameters.w2l = 0.002; + _g1b1_var._parameters.linwl = 6.82655; + _g1b1_var._parameters.loutwl = 1.3934509999999998; + _g1b1_var._parameters.w1r = 0.017955; + _g1b1_var._parameters.w2r = 0.002; + _g1b1_var._parameters.linwr = 6.82655; + _g1b1_var._parameters.loutwr = 1.3934509999999998; + _g1b1_var._parameters.h1u = 0.026565; + _g1b1_var._parameters.h2u = 0.002; + _g1b1_var._parameters.linhu = 5.2842144; + _g1b1_var._parameters.louthu = 30.232929999999996; + _g1b1_var._parameters.h1d = 0.026565; + _g1b1_var._parameters.h2d = 0.002; + _g1b1_var._parameters.linhd = 5.2842144; + _g1b1_var._parameters.louthd = 30.232929999999996; + _g1b1_var._parameters.l = 0.48300000000000054; + _g1b1_var._parameters.R0 = 0.99; + _g1b1_var._parameters.Qcxl = 0.0217; + _g1b1_var._parameters.Qcxr = 0.0217; + _g1b1_var._parameters.Qcyu = 0.0221; + _g1b1_var._parameters.Qcyd = 0.0221; + _g1b1_var._parameters.alphaxl = 2.5; + _g1b1_var._parameters.alphaxr = 2.5; + _g1b1_var._parameters.alphayu = 1.75; + _g1b1_var._parameters.alphayd = 1.75; + _g1b1_var._parameters.Wxr = 0.015; + _g1b1_var._parameters.Wxl = 0.015; + _g1b1_var._parameters.Wyu = 0.015; + _g1b1_var._parameters.Wyd = 0.015; + _g1b1_var._parameters.mxr = 4; + _g1b1_var._parameters.mxl = 4; + _g1b1_var._parameters.myu = 2.5; + _g1b1_var._parameters.myd = 2.5; + _g1b1_var._parameters.QcxrOW = 0.0217; + _g1b1_var._parameters.QcxlOW = 0.0217; + _g1b1_var._parameters.QcyuOW = 0.0217; + _g1b1_var._parameters.QcydOW = 0.0217; + _g1b1_var._parameters.alphaxlOW = 6.07; + _g1b1_var._parameters.alphaxrOW = 6.07; + _g1b1_var._parameters.alphayuOW = 6.07; + _g1b1_var._parameters.alphaydOW = 6.07; + _g1b1_var._parameters.WxrOW = 0.003; + _g1b1_var._parameters.WxlOW = 0.003; + _g1b1_var._parameters.WyuOW = 0.003; + _g1b1_var._parameters.WydOW = 0.003; + _g1b1_var._parameters.mxrOW = 0; + _g1b1_var._parameters.mxlOW = 0; + _g1b1_var._parameters.myuOW = 0; + _g1b1_var._parameters.mydOW = 0; + _g1b1_var._parameters.rwallthick = 0.001; + _g1b1_var._parameters.lwallthick = 0.001; + _g1b1_var._parameters.uwallthick = 0.001; + _g1b1_var._parameters.dwallthick = 0.001; + + + /* component g1b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1b1_var._rotation_absolute); + rot_transpose(_g1a3_var._rotation_absolute, tr1); + rot_mul(_g1b1_var._rotation_absolute, tr1, _g1b1_var._rotation_relative); + _g1b1_var._rotation_is_identity = rot_test_identity(_g1b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.4109); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1a3_var._position_absolute, _g1b1_var._position_absolute); + _g1b1_var._position_relative = rot_apply(_g1b1_var._rotation_absolute, tc1); + } /* g1b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute); + instrument->_position_absolute[10] = _g1b1_var._position_absolute; + instrument->_position_relative[10] = _g1b1_var._position_relative; + _g1b1_var._position_relative_is_zero = coords_test_zero(_g1b1_var._position_relative); + instrument->counter_N[10] = instrument->counter_P[10] = instrument->counter_P2[10] = 0; + instrument->counter_AbsorbProp[10]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0009_g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w1l", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linwl", "0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "loutwl", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w1r", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linwr", "0.0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "loutwr", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h1u", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linhu", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "louthu", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h1d", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "linhd", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "louthd", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "l", "0", "0.48300000000000054","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_g1b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1b1_setpos */ + +/* component g1c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1c1_setpos] component g1c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1c1_var._name, "g1c1", 16384); + stracpy(_g1c1_var._type, "Guide_four_side", 16384); + _g1c1_var._index=11; + int current_setpos_index = 11; + _g1c1_var._parameters.RIreflect[0]='\0'; + _g1c1_var._parameters.LIreflect[0]='\0'; + _g1c1_var._parameters.UIreflect[0]='\0'; + _g1c1_var._parameters.DIreflect[0]='\0'; + _g1c1_var._parameters.ROreflect[0]='\0'; + _g1c1_var._parameters.LOreflect[0]='\0'; + _g1c1_var._parameters.UOreflect[0]='\0'; + _g1c1_var._parameters.DOreflect[0]='\0'; + _g1c1_var._parameters.w1l = 0.015725; + _g1c1_var._parameters.w2l = 0.002; + _g1c1_var._parameters.linwl = 7.323650000000001; + _g1c1_var._parameters.loutwl = 0.5472510000000002; + _g1c1_var._parameters.w1r = 0.015725; + _g1c1_var._parameters.w2r = 0.002; + _g1c1_var._parameters.linwr = 7.323650000000001; + _g1c1_var._parameters.loutwr = 0.5472510000000002; + _g1c1_var._parameters.h1u = 0.02753; + _g1c1_var._parameters.h2u = 0.002; + _g1c1_var._parameters.linhu = 5.7813144; + _g1c1_var._parameters.louthu = 29.38673; + _g1c1_var._parameters.h1d = 0.02753; + _g1c1_var._parameters.h2d = 0.002; + _g1c1_var._parameters.linhd = 5.7813144; + _g1c1_var._parameters.louthd = 29.38673; + _g1c1_var._parameters.l = 0.8320999999999996; + _g1c1_var._parameters.R0 = 0.99; + _g1c1_var._parameters.Qcxl = 0.0217; + _g1c1_var._parameters.Qcxr = 0.0217; + _g1c1_var._parameters.Qcyu = 0.0221; + _g1c1_var._parameters.Qcyd = 0.0221; + _g1c1_var._parameters.alphaxl = 2.5; + _g1c1_var._parameters.alphaxr = 2.5; + _g1c1_var._parameters.alphayu = 1.75; + _g1c1_var._parameters.alphayd = 1.75; + _g1c1_var._parameters.Wxr = 0.015; + _g1c1_var._parameters.Wxl = 0.015; + _g1c1_var._parameters.Wyu = 0.015; + _g1c1_var._parameters.Wyd = 0.015; + _g1c1_var._parameters.mxr = 4; + _g1c1_var._parameters.mxl = 4; + _g1c1_var._parameters.myu = 2.5; + _g1c1_var._parameters.myd = 2.5; + _g1c1_var._parameters.QcxrOW = 0.0217; + _g1c1_var._parameters.QcxlOW = 0.0217; + _g1c1_var._parameters.QcyuOW = 0.0217; + _g1c1_var._parameters.QcydOW = 0.0217; + _g1c1_var._parameters.alphaxlOW = 6.07; + _g1c1_var._parameters.alphaxrOW = 6.07; + _g1c1_var._parameters.alphayuOW = 6.07; + _g1c1_var._parameters.alphaydOW = 6.07; + _g1c1_var._parameters.WxrOW = 0.003; + _g1c1_var._parameters.WxlOW = 0.003; + _g1c1_var._parameters.WyuOW = 0.003; + _g1c1_var._parameters.WydOW = 0.003; + _g1c1_var._parameters.mxrOW = 0; + _g1c1_var._parameters.mxlOW = 0; + _g1c1_var._parameters.myuOW = 0; + _g1c1_var._parameters.mydOW = 0; + _g1c1_var._parameters.rwallthick = 0.001; + _g1c1_var._parameters.lwallthick = 0.001; + _g1c1_var._parameters.uwallthick = 0.001; + _g1c1_var._parameters.dwallthick = 0.001; + + + /* component g1c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1c1_var._rotation_absolute); + rot_transpose(_g1b1_var._rotation_absolute, tr1); + rot_mul(_g1c1_var._rotation_absolute, tr1, _g1c1_var._rotation_relative); + _g1c1_var._rotation_is_identity = rot_test_identity(_g1c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.908); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1b1_var._position_absolute, _g1c1_var._position_absolute); + _g1c1_var._position_relative = rot_apply(_g1c1_var._rotation_absolute, tc1); + } /* g1c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute); + instrument->_position_absolute[11] = _g1c1_var._position_absolute; + instrument->_position_relative[11] = _g1c1_var._position_relative; + _g1c1_var._position_relative_is_zero = coords_test_zero(_g1c1_var._position_relative); + instrument->counter_N[11] = instrument->counter_P[11] = instrument->counter_P2[11] = 0; + instrument->counter_AbsorbProp[11]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0010_g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w1l", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linwl", "0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "loutwl", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w1r", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linwr", "0.0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "loutwr", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h1u", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linhu", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "louthu", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h1d", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "linhd", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "louthd", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "l", "0", "0.8320999999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_g1c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1c1_setpos */ + +/* component wfm_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_position_setpos] component wfm_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_position_var._name, "wfm_position", 16384); + stracpy(_wfm_position_var._type, "Arm", 16384); + _wfm_position_var._index=12; + int current_setpos_index = 12; + /* component wfm_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _wfm_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_position_var._rotation_absolute, tr1, _wfm_position_var._rotation_relative); + _wfm_position_var._rotation_is_identity = rot_test_identity(_wfm_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_position_var._position_absolute); + _wfm_position_var._position_relative = rot_apply(_wfm_position_var._rotation_absolute, tc1); + } /* wfm_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute); + instrument->_position_absolute[12] = _wfm_position_var._position_absolute; + instrument->_position_relative[12] = _wfm_position_var._position_relative; + _wfm_position_var._position_relative_is_zero = coords_test_zero(_wfm_position_var._position_relative); + instrument->counter_N[12] = instrument->counter_P[12] = instrument->counter_P2[12] = 0; + instrument->counter_AbsorbProp[12]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0011_wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_position_setpos */ + +/* component wfm_1_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_1_position_setpos] component wfm_1_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_1_position_var._name, "wfm_1_position", 16384); + stracpy(_wfm_1_position_var._type, "Arm", 16384); + _wfm_1_position_var._index=13; + int current_setpos_index = 13; + /* component wfm_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_1_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_1_position_var._rotation_absolute, tr1, _wfm_1_position_var._rotation_relative); + _wfm_1_position_var._rotation_is_identity = rot_test_identity(_wfm_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, -0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_1_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_1_position_var._position_absolute); + _wfm_1_position_var._position_relative = rot_apply(_wfm_1_position_var._rotation_absolute, tc1); + } /* wfm_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute); + instrument->_position_absolute[13] = _wfm_1_position_var._position_absolute; + instrument->_position_relative[13] = _wfm_1_position_var._position_relative; + _wfm_1_position_var._position_relative_is_zero = coords_test_zero(_wfm_1_position_var._position_relative); + instrument->counter_N[13] = instrument->counter_P[13] = instrument->counter_P2[13] = 0; + instrument->counter_AbsorbProp[13]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0012_wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_1_position_setpos */ + +/* component wfmc_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_1_setpos] component wfmc_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_1_var._name, "wfmc_1", 16384); + stracpy(_wfmc_1_var._type, "MultiDiskChopper", 16384); + _wfmc_1_var._index=14; + int current_setpos_index = 14; + if("5.62;-44.68;-91.85;-136.08;-177.55;143.56" && strlen("5.62;-44.68;-91.85;-136.08;-177.55;143.56")) + stracpy(_wfmc_1_var._parameters.slit_center, "5.62;-44.68;-91.85;-136.08;-177.55;143.56" ? "5.62;-44.68;-91.85;-136.08;-177.55;143.56" : "", 16384); + else + _wfmc_1_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_1_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_1_var._parameters.slit_width[0]='\0'; + _wfmc_1_var._parameters.nslits = 6; + _wfmc_1_var._parameters.delta_y = -0.31499999999999995; + _wfmc_1_var._parameters.nu = -56.0; + _wfmc_1_var._parameters.nrev = 0; + _wfmc_1_var._parameters.ratio = 1; + _wfmc_1_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_1; + _wfmc_1_var._parameters.delay = 0; + _wfmc_1_var._parameters.isfirst = 0; + _wfmc_1_var._parameters.phase = WFM1_phase; + _wfmc_1_var._parameters.radius = 0.35; + _wfmc_1_var._parameters.equal = 0; + _wfmc_1_var._parameters.abs_out = 0; + _wfmc_1_var._parameters.verbose = 0; + + + /* component wfmc_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_1_position_var._rotation_absolute, _wfmc_1_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfmc_1_var._rotation_absolute, tr1, _wfmc_1_var._rotation_relative); + _wfmc_1_var._rotation_is_identity = rot_test_identity(_wfmc_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_1_var._position_absolute = coords_add(_wfm_1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfmc_1_var._position_absolute); + _wfmc_1_var._position_relative = rot_apply(_wfmc_1_var._rotation_absolute, tc1); + } /* wfmc_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute); + instrument->_position_absolute[14] = _wfmc_1_var._position_absolute; + instrument->_position_relative[14] = _wfmc_1_var._position_relative; + _wfmc_1_var._position_relative_is_zero = coords_test_zero(_wfmc_1_var._position_relative); + instrument->counter_N[14] = instrument->counter_P[14] = instrument->counter_P2[14] = 0; + instrument->counter_AbsorbProp[14]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0013_wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "slit_center", "0 180", "5.62;-44.68;-91.85;-136.08;-177.55;143.56", "char*"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "phase", "0", "WFM1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_wfmc_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_1_setpos */ + +/* component pinhole_1=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_1_setpos] component pinhole_1=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_1_var._name, "pinhole_1", 16384); + stracpy(_pinhole_1_var._type, "Slit", 16384); + _pinhole_1_var._index=15; + int current_setpos_index = 15; + _pinhole_1_var._parameters.xmin = UNSET; + _pinhole_1_var._parameters.xmax = UNSET; + _pinhole_1_var._parameters.ymin = UNSET; + _pinhole_1_var._parameters.ymax = UNSET; + _pinhole_1_var._parameters.radius = UNSET; + _pinhole_1_var._parameters.xwidth = 0.015; + _pinhole_1_var._parameters.yheight = 0.06; + + + /* component pinhole_1=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _pinhole_1_var._rotation_absolute); + rot_transpose(_wfmc_1_var._rotation_absolute, tr1); + rot_mul(_pinhole_1_var._rotation_absolute, tr1, _pinhole_1_var._rotation_relative); + _pinhole_1_var._rotation_is_identity = rot_test_identity(_pinhole_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_1_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_1_var._position_absolute, _pinhole_1_var._position_absolute); + _pinhole_1_var._position_relative = rot_apply(_pinhole_1_var._rotation_absolute, tc1); + } /* pinhole_1=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute); + instrument->_position_absolute[15] = _pinhole_1_var._position_absolute; + instrument->_position_relative[15] = _pinhole_1_var._position_relative; + _pinhole_1_var._position_relative_is_zero = coords_test_zero(_pinhole_1_var._position_relative); + instrument->counter_N[15] = instrument->counter_P[15] = instrument->counter_P2[15] = 0; + instrument->counter_AbsorbProp[15]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0014_pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xwidth", "UNSET", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0014_pinhole_1", "yheight", "UNSET", "0.06","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_1_setpos */ + +/* component wfm_2_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_2_position_setpos] component wfm_2_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_2_position_var._name, "wfm_2_position", 16384); + stracpy(_wfm_2_position_var._type, "Arm", 16384); + _wfm_2_position_var._index=16; + int current_setpos_index = 16; + /* component wfm_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_2_position_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfm_2_position_var._rotation_absolute, tr1, _wfm_2_position_var._rotation_relative); + _wfm_2_position_var._rotation_is_identity = rot_test_identity(_wfm_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_2_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfm_2_position_var._position_absolute); + _wfm_2_position_var._position_relative = rot_apply(_wfm_2_position_var._rotation_absolute, tc1); + } /* wfm_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute); + instrument->_position_absolute[16] = _wfm_2_position_var._position_absolute; + instrument->_position_relative[16] = _wfm_2_position_var._position_relative; + _wfm_2_position_var._position_relative_is_zero = coords_test_zero(_wfm_2_position_var._position_relative); + instrument->counter_N[16] = instrument->counter_P[16] = instrument->counter_P2[16] = 0; + instrument->counter_AbsorbProp[16]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0015_wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_2_position_setpos */ + +/* component wfmc_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_2_setpos] component wfmc_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_2_var._name, "wfmc_2", 16384); + stracpy(_wfmc_2_var._type, "MultiDiskChopper", 16384); + _wfmc_2_var._index=17; + int current_setpos_index = 17; + if("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" && strlen("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028")) + stracpy(_wfmc_2_var._parameters.slit_center, "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" ? "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" : "", 16384); + else + _wfmc_2_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_2_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_2_var._parameters.slit_width[0]='\0'; + _wfmc_2_var._parameters.nslits = 6; + _wfmc_2_var._parameters.delta_y = -0.31499999999999995; + _wfmc_2_var._parameters.nu = -56.0; + _wfmc_2_var._parameters.nrev = 0; + _wfmc_2_var._parameters.ratio = 1; + _wfmc_2_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_2; + _wfmc_2_var._parameters.delay = 0; + _wfmc_2_var._parameters.isfirst = 0; + _wfmc_2_var._parameters.phase = WFM2_phase; + _wfmc_2_var._parameters.radius = 0.35; + _wfmc_2_var._parameters.equal = 0; + _wfmc_2_var._parameters.abs_out = 0; + _wfmc_2_var._parameters.verbose = 0; + + + /* component wfmc_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_2_position_var._rotation_absolute, _wfmc_2_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfmc_2_var._rotation_absolute, tr1, _wfmc_2_var._rotation_relative); + _wfmc_2_var._rotation_is_identity = rot_test_identity(_wfmc_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_2_var._position_absolute = coords_add(_wfm_2_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfmc_2_var._position_absolute); + _wfmc_2_var._position_relative = rot_apply(_wfmc_2_var._rotation_absolute, tc1); + } /* wfmc_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute); + instrument->_position_absolute[17] = _wfmc_2_var._position_absolute; + instrument->_position_relative[17] = _wfmc_2_var._position_relative; + _wfmc_2_var._position_relative_is_zero = coords_test_zero(_wfmc_2_var._position_relative); + instrument->counter_N[17] = instrument->counter_P[17] = instrument->counter_P2[17] = 0; + instrument->counter_AbsorbProp[17]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0016_wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "slit_center", "0 180", "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", "char*"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "phase", "0", "WFM2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_wfmc_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_2_setpos */ + +/* component g2a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a1_setpos] component g2a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a1_var._name, "g2a1", 16384); + stracpy(_g2a1_var._type, "Guide_four_side", 16384); + _g2a1_var._index=18; + int current_setpos_index = 18; + _g2a1_var._parameters.RIreflect[0]='\0'; + _g2a1_var._parameters.LIreflect[0]='\0'; + _g2a1_var._parameters.UIreflect[0]='\0'; + _g2a1_var._parameters.DIreflect[0]='\0'; + _g2a1_var._parameters.ROreflect[0]='\0'; + _g2a1_var._parameters.LOreflect[0]='\0'; + _g2a1_var._parameters.UOreflect[0]='\0'; + _g2a1_var._parameters.DOreflect[0]='\0'; + _g2a1_var._parameters.w1l = 0.01121; + _g2a1_var._parameters.w2l = 0.002; + _g2a1_var._parameters.linwl = 0.25980000000000025; + _g2a1_var._parameters.loutwl = 12.040199999999999; + _g2a1_var._parameters.w1r = 0.01121; + _g2a1_var._parameters.w2r = 0.002; + _g2a1_var._parameters.linwr = 0.25980000000000025; + _g2a1_var._parameters.loutwr = 12.040199999999999; + _g2a1_var._parameters.h1u = 0.029825; + _g2a1_var._parameters.h2u = 0.002; + _g2a1_var._parameters.linhu = 7.2598; + _g2a1_var._parameters.louthu = 28.0402; + _g2a1_var._parameters.h1d = 0.029825; + _g2a1_var._parameters.h2d = 0.002; + _g2a1_var._parameters.linhd = 7.2598; + _g2a1_var._parameters.louthd = 28.0402; + _g2a1_var._parameters.l = 0.7000000000000002; + _g2a1_var._parameters.R0 = 0.99; + _g2a1_var._parameters.Qcxl = 0.023; + _g2a1_var._parameters.Qcxr = 0.023; + _g2a1_var._parameters.Qcyu = 0.0221; + _g2a1_var._parameters.Qcyd = 0.0221; + _g2a1_var._parameters.alphaxl = 1.8; + _g2a1_var._parameters.alphaxr = 1.8; + _g2a1_var._parameters.alphayu = 1.75; + _g2a1_var._parameters.alphayd = 1.75; + _g2a1_var._parameters.Wxr = 0.015; + _g2a1_var._parameters.Wxl = 0.015; + _g2a1_var._parameters.Wyu = 0.015; + _g2a1_var._parameters.Wyd = 0.015; + _g2a1_var._parameters.mxr = 2; + _g2a1_var._parameters.mxl = 2; + _g2a1_var._parameters.myu = 3; + _g2a1_var._parameters.myd = 3; + _g2a1_var._parameters.QcxrOW = 0.0217; + _g2a1_var._parameters.QcxlOW = 0.0217; + _g2a1_var._parameters.QcyuOW = 0.0217; + _g2a1_var._parameters.QcydOW = 0.0217; + _g2a1_var._parameters.alphaxlOW = 6.07; + _g2a1_var._parameters.alphaxrOW = 6.07; + _g2a1_var._parameters.alphayuOW = 6.07; + _g2a1_var._parameters.alphaydOW = 6.07; + _g2a1_var._parameters.WxrOW = 0.003; + _g2a1_var._parameters.WxlOW = 0.003; + _g2a1_var._parameters.WyuOW = 0.003; + _g2a1_var._parameters.WydOW = 0.003; + _g2a1_var._parameters.mxrOW = 0; + _g2a1_var._parameters.mxlOW = 0; + _g2a1_var._parameters.myuOW = 0; + _g2a1_var._parameters.mydOW = 0; + _g2a1_var._parameters.rwallthick = 0.001; + _g2a1_var._parameters.lwallthick = 0.001; + _g2a1_var._parameters.uwallthick = 0.001; + _g2a1_var._parameters.dwallthick = 0.001; + + + /* component g2a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a1_var._rotation_absolute); + rot_transpose(_wfmc_2_var._rotation_absolute, tr1); + rot_mul(_g2a1_var._rotation_absolute, tr1, _g2a1_var._rotation_relative); + _g2a1_var._rotation_is_identity = rot_test_identity(_g2a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.247800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_2_var._position_absolute, _g2a1_var._position_absolute); + _g2a1_var._position_relative = rot_apply(_g2a1_var._rotation_absolute, tc1); + } /* g2a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute); + instrument->_position_absolute[18] = _g2a1_var._position_absolute; + instrument->_position_relative[18] = _g2a1_var._position_relative; + _g2a1_var._position_relative_is_zero = coords_test_zero(_g2a1_var._position_relative); + instrument->counter_N[18] = instrument->counter_P[18] = instrument->counter_P2[18] = 0; + instrument->counter_AbsorbProp[18]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0017_g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w1l", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linwl", "0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "loutwl", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w1r", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linwr", "0.0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "loutwr", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h1u", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linhu", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "louthu", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h1d", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "linhd", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "louthd", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "l", "0", "0.7000000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g2a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a1_setpos */ + +/* component monitor_1_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_1_position_setpos] component monitor_1_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_1_position_var._name, "monitor_1_position", 16384); + stracpy(_monitor_1_position_var._type, "Arm", 16384); + _monitor_1_position_var._index=19; + int current_setpos_index = 19; + /* component monitor_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_1_position_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_monitor_1_position_var._rotation_absolute, tr1, _monitor_1_position_var._rotation_relative); + _monitor_1_position_var._rotation_is_identity = rot_test_identity(_monitor_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.96); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _monitor_1_position_var._position_absolute); + _monitor_1_position_var._position_relative = rot_apply(_monitor_1_position_var._rotation_absolute, tc1); + } /* monitor_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute); + instrument->_position_absolute[19] = _monitor_1_position_var._position_absolute; + instrument->_position_relative[19] = _monitor_1_position_var._position_relative; + _monitor_1_position_var._position_relative_is_zero = coords_test_zero(_monitor_1_position_var._position_relative); + instrument->counter_N[19] = instrument->counter_P[19] = instrument->counter_P2[19] = 0; + instrument->counter_AbsorbProp[19]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0018_monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_1_position_setpos */ + +/* component g2a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a2_setpos] component g2a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a2_var._name, "g2a2", 16384); + stracpy(_g2a2_var._type, "Guide_four_side", 16384); + _g2a2_var._index=20; + int current_setpos_index = 20; + _g2a2_var._parameters.RIreflect[0]='\0'; + _g2a2_var._parameters.LIreflect[0]='\0'; + _g2a2_var._parameters.UIreflect[0]='\0'; + _g2a2_var._parameters.DIreflect[0]='\0'; + _g2a2_var._parameters.ROreflect[0]='\0'; + _g2a2_var._parameters.LOreflect[0]='\0'; + _g2a2_var._parameters.UOreflect[0]='\0'; + _g2a2_var._parameters.DOreflect[0]='\0'; + _g2a2_var._parameters.w1l = 0.0212; + _g2a2_var._parameters.w2l = 0.002; + _g2a2_var._parameters.linwl = 0.9858000000000002; + _g2a2_var._parameters.loutwl = 11.6045; + _g2a2_var._parameters.w1r = 0.0212; + _g2a2_var._parameters.w2r = 0.002; + _g2a2_var._parameters.linwr = 0.9858000000000002; + _g2a2_var._parameters.loutwr = 11.6045; + _g2a2_var._parameters.h1u = 0.03088; + _g2a2_var._parameters.h2u = 0.002; + _g2a2_var._parameters.linhu = 7.9858; + _g2a2_var._parameters.louthu = 27.6045; + _g2a2_var._parameters.h1d = 0.03088; + _g2a2_var._parameters.h2d = 0.002; + _g2a2_var._parameters.linhd = 7.9858; + _g2a2_var._parameters.louthd = 27.6045; + _g2a2_var._parameters.l = 0.40969999999999995; + _g2a2_var._parameters.R0 = 0.99; + _g2a2_var._parameters.Qcxl = 0.0221; + _g2a2_var._parameters.Qcxr = 0.0221; + _g2a2_var._parameters.Qcyu = 0.0221; + _g2a2_var._parameters.Qcyd = 0.0221; + _g2a2_var._parameters.alphaxl = 1.75; + _g2a2_var._parameters.alphaxr = 1.75; + _g2a2_var._parameters.alphayu = 1.75; + _g2a2_var._parameters.alphayd = 1.75; + _g2a2_var._parameters.Wxr = 0.015; + _g2a2_var._parameters.Wxl = 0.015; + _g2a2_var._parameters.Wyu = 0.015; + _g2a2_var._parameters.Wyd = 0.015; + _g2a2_var._parameters.mxr = 3; + _g2a2_var._parameters.mxl = 3; + _g2a2_var._parameters.myu = 3; + _g2a2_var._parameters.myd = 3; + _g2a2_var._parameters.QcxrOW = 0.0217; + _g2a2_var._parameters.QcxlOW = 0.0217; + _g2a2_var._parameters.QcyuOW = 0.0217; + _g2a2_var._parameters.QcydOW = 0.0217; + _g2a2_var._parameters.alphaxlOW = 6.07; + _g2a2_var._parameters.alphaxrOW = 6.07; + _g2a2_var._parameters.alphayuOW = 6.07; + _g2a2_var._parameters.alphaydOW = 6.07; + _g2a2_var._parameters.WxrOW = 0.003; + _g2a2_var._parameters.WxlOW = 0.003; + _g2a2_var._parameters.WyuOW = 0.003; + _g2a2_var._parameters.WydOW = 0.003; + _g2a2_var._parameters.mxrOW = 0; + _g2a2_var._parameters.mxlOW = 0; + _g2a2_var._parameters.myuOW = 0; + _g2a2_var._parameters.mydOW = 0; + _g2a2_var._parameters.rwallthick = 0.001; + _g2a2_var._parameters.lwallthick = 0.001; + _g2a2_var._parameters.uwallthick = 0.001; + _g2a2_var._parameters.dwallthick = 0.001; + + + /* component g2a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a2_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_g2a2_var._rotation_absolute, tr1, _g2a2_var._rotation_relative); + _g2a2_var._rotation_is_identity = rot_test_identity(_g2a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.973800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _g2a2_var._position_absolute); + _g2a2_var._position_relative = rot_apply(_g2a2_var._rotation_absolute, tc1); + } /* g2a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute); + instrument->_position_absolute[20] = _g2a2_var._position_absolute; + instrument->_position_relative[20] = _g2a2_var._position_relative; + _g2a2_var._position_relative_is_zero = coords_test_zero(_g2a2_var._position_relative); + instrument->counter_N[20] = instrument->counter_P[20] = instrument->counter_P2[20] = 0; + instrument->counter_AbsorbProp[20]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0019_g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w1l", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linwl", "0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "loutwl", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w1r", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linwr", "0.0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "loutwr", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h1u", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linhu", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "louthu", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h1d", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "linhd", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "louthd", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "l", "0", "0.40969999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g2a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a2_setpos */ + +/* component fo1_position=Arm() SETTING, POSITION/ROTATION */ +int _fo1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo1_position_setpos] component fo1_position=Arm() SETTING [Arm:0]"); + stracpy(_fo1_position_var._name, "fo1_position", 16384); + stracpy(_fo1_position_var._type, "Arm", 16384); + _fo1_position_var._index=21; + int current_setpos_index = 21; + /* component fo1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo1_position_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo1_position_var._rotation_absolute, tr1, _fo1_position_var._rotation_relative); + _fo1_position_var._rotation_is_identity = rot_test_identity(_fo1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.392); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo1_position_var._position_absolute); + _fo1_position_var._position_relative = rot_apply(_fo1_position_var._rotation_absolute, tc1); + } /* fo1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute); + instrument->_position_absolute[21] = _fo1_position_var._position_absolute; + instrument->_position_relative[21] = _fo1_position_var._position_relative; + _fo1_position_var._position_relative_is_zero = coords_test_zero(_fo1_position_var._position_relative); + instrument->counter_N[21] = instrument->counter_P[21] = instrument->counter_P2[21] = 0; + instrument->counter_AbsorbProp[21]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0020_fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo1_position_setpos */ + +/* component fo_chopper_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_1_setpos] component fo_chopper_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_1_var._name, "fo_chopper_1", 16384); + stracpy(_fo_chopper_1_var._type, "MultiDiskChopper", 16384); + _fo_chopper_1_var._index=22; + int current_setpos_index = 22; + if("-146.745;166.555;122.775;81.715;43.215;5.525" && strlen("-146.745;166.555;122.775;81.715;43.215;5.525")) + stracpy(_fo_chopper_1_var._parameters.slit_center, "-146.745;166.555;122.775;81.715;43.215;5.525" ? "-146.745;166.555;122.775;81.715;43.215;5.525" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_center[0]='\0'; + if("11.06;13.06;14.94;16.71;18.36;16.72" && strlen("11.06;13.06;14.94;16.71;18.36;16.72")) + stracpy(_fo_chopper_1_var._parameters.slit_width, "11.06;13.06;14.94;16.71;18.36;16.72" ? "11.06;13.06;14.94;16.71;18.36;16.72" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_width[0]='\0'; + _fo_chopper_1_var._parameters.nslits = 6; + _fo_chopper_1_var._parameters.delta_y = -0.4625; + _fo_chopper_1_var._parameters.nu = -42.0; + _fo_chopper_1_var._parameters.nrev = 0; + _fo_chopper_1_var._parameters.ratio = 1; + _fo_chopper_1_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_1; + _fo_chopper_1_var._parameters.delay = 0; + _fo_chopper_1_var._parameters.isfirst = 0; + _fo_chopper_1_var._parameters.phase = fo1_phase; + _fo_chopper_1_var._parameters.radius = 0.5; + _fo_chopper_1_var._parameters.equal = 0; + _fo_chopper_1_var._parameters.abs_out = 0; + _fo_chopper_1_var._parameters.verbose = 0; + + + /* component fo_chopper_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo1_position_var._rotation_absolute, _fo_chopper_1_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_1_var._rotation_absolute, tr1, _fo_chopper_1_var._rotation_relative); + _fo_chopper_1_var._rotation_is_identity = rot_test_identity(_fo_chopper_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_1_var._position_absolute = coords_add(_fo1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo_chopper_1_var._position_absolute); + _fo_chopper_1_var._position_relative = rot_apply(_fo_chopper_1_var._rotation_absolute, tc1); + } /* fo_chopper_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute); + instrument->_position_absolute[22] = _fo_chopper_1_var._position_absolute; + instrument->_position_relative[22] = _fo_chopper_1_var._position_relative; + _fo_chopper_1_var._position_relative_is_zero = coords_test_zero(_fo_chopper_1_var._position_relative); + instrument->counter_N[22] = instrument->counter_P[22] = instrument->counter_P2[22] = 0; + instrument->counter_AbsorbProp[22]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0021_fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "slit_center", "0 180", "-146.745;166.555;122.775;81.715;43.215;5.525", "char*"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "slit_width", "10 20", "11.06;13.06;14.94;16.71;18.36;16.72", "char*"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "delta_y", "-0.3", "-0.4625","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "phase", "0", "fo1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_1_setpos */ + +/* component bp1_position=Arm() SETTING, POSITION/ROTATION */ +int _bp1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_position_setpos] component bp1_position=Arm() SETTING [Arm:0]"); + stracpy(_bp1_position_var._name, "bp1_position", 16384); + stracpy(_bp1_position_var._type, "Arm", 16384); + _bp1_position_var._index=23; + int current_setpos_index = 23; + /* component bp1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp1_position_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_position_var._rotation_absolute, tr1, _bp1_position_var._rotation_relative); + _bp1_position_var._rotation_is_identity = rot_test_identity(_bp1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.442); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_position_var._position_absolute); + _bp1_position_var._position_relative = rot_apply(_bp1_position_var._rotation_absolute, tc1); + } /* bp1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute); + instrument->_position_absolute[23] = _bp1_position_var._position_absolute; + instrument->_position_relative[23] = _bp1_position_var._position_relative; + _bp1_position_var._position_relative_is_zero = coords_test_zero(_bp1_position_var._position_relative); + instrument->counter_N[23] = instrument->counter_P[23] = instrument->counter_P2[23] = 0; + instrument->counter_AbsorbProp[23]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0022_bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_position_setpos */ + +/* component bp1_chopper=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp1_chopper_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_chopper_setpos] component bp1_chopper=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp1_chopper_var._name, "bp1_chopper", 16384); + stracpy(_bp1_chopper_var._type, "DiskChopper", 16384); + _bp1_chopper_var._index=24; + int current_setpos_index = 24; + _bp1_chopper_var._parameters.theta_0 = 46.71; + _bp1_chopper_var._parameters.radius = 0.5; + _bp1_chopper_var._parameters.yheight = 0.075; + _bp1_chopper_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp1_chopper_var._parameters.nslit = 1; + _bp1_chopper_var._parameters.jitter = _instrument_var._parameters.jitter_bp1; + _bp1_chopper_var._parameters.delay = 0; + _bp1_chopper_var._parameters.isfirst = 0; + _bp1_chopper_var._parameters.n_pulse = 1; + _bp1_chopper_var._parameters.abs_out = 1; + _bp1_chopper_var._parameters.phase = bp1_phase + ( 42.20500000000003 ); + _bp1_chopper_var._parameters.xwidth = 0; + _bp1_chopper_var._parameters.verbose = 0; + + + /* component bp1_chopper=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp1_position_var._rotation_absolute, _bp1_chopper_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_chopper_var._rotation_absolute, tr1, _bp1_chopper_var._rotation_relative); + _bp1_chopper_var._rotation_is_identity = rot_test_identity(_bp1_chopper_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_chopper_var._position_absolute = coords_add(_bp1_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_chopper_var._position_absolute); + _bp1_chopper_var._position_relative = rot_apply(_bp1_chopper_var._rotation_absolute, tc1); + } /* bp1_chopper=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute); + instrument->_position_absolute[24] = _bp1_chopper_var._position_absolute; + instrument->_position_relative[24] = _bp1_chopper_var._position_relative; + _bp1_chopper_var._position_relative_is_zero = coords_test_zero(_bp1_chopper_var._position_relative); + instrument->counter_N[24] = instrument->counter_P[24] = instrument->counter_P2[24] = 0; + instrument->counter_AbsorbProp[24]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0023_bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "theta_0", "0", "46.71","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "jitter", "0", "_instrument_var._parameters.jitter_bp1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "phase", "0", "bp1_phase + ( 42.20500000000003 )","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_chopper_setpos */ + +/* component g2b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b1_setpos] component g2b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b1_var._name, "g2b1", 16384); + stracpy(_g2b1_var._type, "Guide_four_side", 16384); + _g2b1_var._index=25; + int current_setpos_index = 25; + _g2b1_var._parameters.RIreflect[0]='\0'; + _g2b1_var._parameters.LIreflect[0]='\0'; + _g2b1_var._parameters.UIreflect[0]='\0'; + _g2b1_var._parameters.DIreflect[0]='\0'; + _g2b1_var._parameters.ROreflect[0]='\0'; + _g2b1_var._parameters.LOreflect[0]='\0'; + _g2b1_var._parameters.UOreflect[0]='\0'; + _g2b1_var._parameters.DOreflect[0]='\0'; + _g2b1_var._parameters.w1l = 0.02521; + _g2b1_var._parameters.w2l = 0.002; + _g2b1_var._parameters.linwl = 1.4502500000000005; + _g2b1_var._parameters.loutwl = 11.14005; + _g2b1_var._parameters.w1r = 0.02521; + _g2b1_var._parameters.w2r = 0.002; + _g2b1_var._parameters.linwr = 1.4502500000000005; + _g2b1_var._parameters.loutwr = 11.14005; + _g2b1_var._parameters.h1u = 0.031505; + _g2b1_var._parameters.h2u = 0.002; + _g2b1_var._parameters.linhu = 8.45025; + _g2b1_var._parameters.louthu = 27.140050000000002; + _g2b1_var._parameters.h1d = 0.031505; + _g2b1_var._parameters.h2d = 0.002; + _g2b1_var._parameters.linhd = 8.45025; + _g2b1_var._parameters.louthd = 27.140050000000002; + _g2b1_var._parameters.l = 0.40969999999999906; + _g2b1_var._parameters.R0 = 0.99; + _g2b1_var._parameters.Qcxl = 0.0217; + _g2b1_var._parameters.Qcxr = 0.0217; + _g2b1_var._parameters.Qcyu = 0.023; + _g2b1_var._parameters.Qcyd = 0.023; + _g2b1_var._parameters.alphaxl = 2.5; + _g2b1_var._parameters.alphaxr = 2.5; + _g2b1_var._parameters.alphayu = 1.8; + _g2b1_var._parameters.alphayd = 1.8; + _g2b1_var._parameters.Wxr = 0.015; + _g2b1_var._parameters.Wxl = 0.015; + _g2b1_var._parameters.Wyu = 0.015; + _g2b1_var._parameters.Wyd = 0.015; + _g2b1_var._parameters.mxr = 4; + _g2b1_var._parameters.mxl = 4; + _g2b1_var._parameters.myu = 2; + _g2b1_var._parameters.myd = 2; + _g2b1_var._parameters.QcxrOW = 0.0217; + _g2b1_var._parameters.QcxlOW = 0.0217; + _g2b1_var._parameters.QcyuOW = 0.0217; + _g2b1_var._parameters.QcydOW = 0.0217; + _g2b1_var._parameters.alphaxlOW = 6.07; + _g2b1_var._parameters.alphaxrOW = 6.07; + _g2b1_var._parameters.alphayuOW = 6.07; + _g2b1_var._parameters.alphaydOW = 6.07; + _g2b1_var._parameters.WxrOW = 0.003; + _g2b1_var._parameters.WxlOW = 0.003; + _g2b1_var._parameters.WyuOW = 0.003; + _g2b1_var._parameters.WydOW = 0.003; + _g2b1_var._parameters.mxrOW = 0; + _g2b1_var._parameters.mxlOW = 0; + _g2b1_var._parameters.myuOW = 0; + _g2b1_var._parameters.mydOW = 0; + _g2b1_var._parameters.rwallthick = 0.001; + _g2b1_var._parameters.lwallthick = 0.001; + _g2b1_var._parameters.uwallthick = 0.001; + _g2b1_var._parameters.dwallthick = 0.001; + + + /* component g2b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b1_var._rotation_absolute); + rot_transpose(_bp1_chopper_var._rotation_absolute, tr1); + rot_mul(_g2b1_var._rotation_absolute, tr1, _g2b1_var._rotation_relative); + _g2b1_var._rotation_is_identity = rot_test_identity(_g2b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.446250000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp1_chopper_var._position_absolute, _g2b1_var._position_absolute); + _g2b1_var._position_relative = rot_apply(_g2b1_var._rotation_absolute, tc1); + } /* g2b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute); + instrument->_position_absolute[25] = _g2b1_var._position_absolute; + instrument->_position_relative[25] = _g2b1_var._position_relative; + _g2b1_var._position_relative_is_zero = coords_test_zero(_g2b1_var._position_relative); + instrument->counter_N[25] = instrument->counter_P[25] = instrument->counter_P2[25] = 0; + instrument->counter_AbsorbProp[25]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0024_g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w1l", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linwl", "0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "loutwl", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w1r", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linwr", "0.0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "loutwr", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h1u", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linhu", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "louthu", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h1d", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "linhd", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "louthd", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0024_g2b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b1_setpos */ + +/* component g2b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b2_setpos] component g2b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b2_var._name, "g2b2", 16384); + stracpy(_g2b2_var._type, "Guide_four_side", 16384); + _g2b2_var._index=26; + int current_setpos_index = 26; + _g2b2_var._parameters.RIreflect[0]='\0'; + _g2b2_var._parameters.LIreflect[0]='\0'; + _g2b2_var._parameters.UIreflect[0]='\0'; + _g2b2_var._parameters.DIreflect[0]='\0'; + _g2b2_var._parameters.ROreflect[0]='\0'; + _g2b2_var._parameters.LOreflect[0]='\0'; + _g2b2_var._parameters.UOreflect[0]='\0'; + _g2b2_var._parameters.DOreflect[0]='\0'; + _g2b2_var._parameters.w1l = 0.02811; + _g2b2_var._parameters.w2l = 0.002; + _g2b2_var._parameters.linwl = 1.8707999999999991; + _g2b2_var._parameters.loutwl = 9.67745; + _g2b2_var._parameters.w1r = 0.02811; + _g2b2_var._parameters.w2r = 0.002; + _g2b2_var._parameters.linwr = 1.8707999999999991; + _g2b2_var._parameters.loutwr = 9.67745; + _g2b2_var._parameters.h1u = 0.03203; + _g2b2_var._parameters.h2u = 0.002; + _g2b2_var._parameters.linhu = 8.8708; + _g2b2_var._parameters.louthu = 25.67745; + _g2b2_var._parameters.h1d = 0.03203; + _g2b2_var._parameters.h2d = 0.002; + _g2b2_var._parameters.linhd = 8.8708; + _g2b2_var._parameters.louthd = 25.67745; + _g2b2_var._parameters.l = 1.4517500000000005; + _g2b2_var._parameters.R0 = 0.99; + _g2b2_var._parameters.Qcxl = 0.0217; + _g2b2_var._parameters.Qcxr = 0.0217; + _g2b2_var._parameters.Qcyu = 0.023; + _g2b2_var._parameters.Qcyd = 0.023; + _g2b2_var._parameters.alphaxl = 2.5; + _g2b2_var._parameters.alphaxr = 2.5; + _g2b2_var._parameters.alphayu = 1.8; + _g2b2_var._parameters.alphayd = 1.8; + _g2b2_var._parameters.Wxr = 0.015; + _g2b2_var._parameters.Wxl = 0.015; + _g2b2_var._parameters.Wyu = 0.015; + _g2b2_var._parameters.Wyd = 0.015; + _g2b2_var._parameters.mxr = 4; + _g2b2_var._parameters.mxl = 4; + _g2b2_var._parameters.myu = 2; + _g2b2_var._parameters.myd = 2; + _g2b2_var._parameters.QcxrOW = 0.0217; + _g2b2_var._parameters.QcxlOW = 0.0217; + _g2b2_var._parameters.QcyuOW = 0.0217; + _g2b2_var._parameters.QcydOW = 0.0217; + _g2b2_var._parameters.alphaxlOW = 6.07; + _g2b2_var._parameters.alphaxrOW = 6.07; + _g2b2_var._parameters.alphayuOW = 6.07; + _g2b2_var._parameters.alphaydOW = 6.07; + _g2b2_var._parameters.WxrOW = 0.003; + _g2b2_var._parameters.WxlOW = 0.003; + _g2b2_var._parameters.WyuOW = 0.003; + _g2b2_var._parameters.WydOW = 0.003; + _g2b2_var._parameters.mxrOW = 0; + _g2b2_var._parameters.mxlOW = 0; + _g2b2_var._parameters.myuOW = 0; + _g2b2_var._parameters.mydOW = 0; + _g2b2_var._parameters.rwallthick = 0.001; + _g2b2_var._parameters.lwallthick = 0.001; + _g2b2_var._parameters.uwallthick = 0.001; + _g2b2_var._parameters.dwallthick = 0.001; + + + /* component g2b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b2_var._rotation_absolute); + rot_transpose(_g2b1_var._rotation_absolute, tr1); + rot_mul(_g2b2_var._rotation_absolute, tr1, _g2b2_var._rotation_relative); + _g2b2_var._rotation_is_identity = rot_test_identity(_g2b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.8668); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b1_var._position_absolute, _g2b2_var._position_absolute); + _g2b2_var._position_relative = rot_apply(_g2b2_var._rotation_absolute, tc1); + } /* g2b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute); + instrument->_position_absolute[26] = _g2b2_var._position_absolute; + instrument->_position_relative[26] = _g2b2_var._position_relative; + _g2b2_var._position_relative_is_zero = coords_test_zero(_g2b2_var._position_relative); + instrument->counter_N[26] = instrument->counter_P[26] = instrument->counter_P2[26] = 0; + instrument->counter_AbsorbProp[26]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0025_g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w1l", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linwl", "0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "loutwl", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w1r", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linwr", "0.0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "loutwr", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h1u", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linhu", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "louthu", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h1d", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "linhd", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "louthd", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_g2b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b2_setpos */ + +/* component g2b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b3_setpos] component g2b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b3_var._name, "g2b3", 16384); + stracpy(_g2b3_var._type, "Guide_four_side", 16384); + _g2b3_var._index=27; + int current_setpos_index = 27; + _g2b3_var._parameters.RIreflect[0]='\0'; + _g2b3_var._parameters.LIreflect[0]='\0'; + _g2b3_var._parameters.UIreflect[0]='\0'; + _g2b3_var._parameters.DIreflect[0]='\0'; + _g2b3_var._parameters.ROreflect[0]='\0'; + _g2b3_var._parameters.LOreflect[0]='\0'; + _g2b3_var._parameters.UOreflect[0]='\0'; + _g2b3_var._parameters.DOreflect[0]='\0'; + _g2b3_var._parameters.w1l = 0.03493; + _g2b3_var._parameters.w2l = 0.002; + _g2b3_var._parameters.linwl = 3.3230500000000003; + _g2b3_var._parameters.loutwl = 8.2252; + _g2b3_var._parameters.w1r = 0.03493; + _g2b3_var._parameters.w2r = 0.002; + _g2b3_var._parameters.linwr = 3.3230500000000003; + _g2b3_var._parameters.loutwr = 8.2252; + _g2b3_var._parameters.h1u = 0.033615; + _g2b3_var._parameters.h2u = 0.002; + _g2b3_var._parameters.linhu = 10.32305; + _g2b3_var._parameters.louthu = 24.2252; + _g2b3_var._parameters.h1d = 0.033615; + _g2b3_var._parameters.h2d = 0.002; + _g2b3_var._parameters.linhd = 10.32305; + _g2b3_var._parameters.louthd = 24.2252; + _g2b3_var._parameters.l = 1.4517500000000005; + _g2b3_var._parameters.R0 = 0.99; + _g2b3_var._parameters.Qcxl = 0.0217; + _g2b3_var._parameters.Qcxr = 0.0217; + _g2b3_var._parameters.Qcyu = 0.023; + _g2b3_var._parameters.Qcyd = 0.023; + _g2b3_var._parameters.alphaxl = 2.5; + _g2b3_var._parameters.alphaxr = 2.5; + _g2b3_var._parameters.alphayu = 1.8; + _g2b3_var._parameters.alphayd = 1.8; + _g2b3_var._parameters.Wxr = 0.015; + _g2b3_var._parameters.Wxl = 0.015; + _g2b3_var._parameters.Wyu = 0.015; + _g2b3_var._parameters.Wyd = 0.015; + _g2b3_var._parameters.mxr = 4; + _g2b3_var._parameters.mxl = 4; + _g2b3_var._parameters.myu = 2; + _g2b3_var._parameters.myd = 2; + _g2b3_var._parameters.QcxrOW = 0.0217; + _g2b3_var._parameters.QcxlOW = 0.0217; + _g2b3_var._parameters.QcyuOW = 0.0217; + _g2b3_var._parameters.QcydOW = 0.0217; + _g2b3_var._parameters.alphaxlOW = 6.07; + _g2b3_var._parameters.alphaxrOW = 6.07; + _g2b3_var._parameters.alphayuOW = 6.07; + _g2b3_var._parameters.alphaydOW = 6.07; + _g2b3_var._parameters.WxrOW = 0.003; + _g2b3_var._parameters.WxlOW = 0.003; + _g2b3_var._parameters.WyuOW = 0.003; + _g2b3_var._parameters.WydOW = 0.003; + _g2b3_var._parameters.mxrOW = 0; + _g2b3_var._parameters.mxlOW = 0; + _g2b3_var._parameters.myuOW = 0; + _g2b3_var._parameters.mydOW = 0; + _g2b3_var._parameters.rwallthick = 0.001; + _g2b3_var._parameters.lwallthick = 0.001; + _g2b3_var._parameters.uwallthick = 0.001; + _g2b3_var._parameters.dwallthick = 0.001; + + + /* component g2b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b3_var._rotation_absolute); + rot_transpose(_g2b2_var._rotation_absolute, tr1); + rot_mul(_g2b3_var._rotation_absolute, tr1, _g2b3_var._rotation_relative); + _g2b3_var._rotation_is_identity = rot_test_identity(_g2b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 10.31905); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b2_var._position_absolute, _g2b3_var._position_absolute); + _g2b3_var._position_relative = rot_apply(_g2b3_var._rotation_absolute, tc1); + } /* g2b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute); + instrument->_position_absolute[27] = _g2b3_var._position_absolute; + instrument->_position_relative[27] = _g2b3_var._position_relative; + _g2b3_var._position_relative_is_zero = coords_test_zero(_g2b3_var._position_relative); + instrument->counter_N[27] = instrument->counter_P[27] = instrument->counter_P2[27] = 0; + instrument->counter_AbsorbProp[27]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0026_g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w1l", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linwl", "0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "loutwl", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w1r", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linwr", "0.0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "loutwr", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h1u", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linhu", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "louthu", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h1d", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "linhd", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "louthd", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b3_setpos */ + +/* component g2b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b4_setpos] component g2b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b4_var._name, "g2b4", 16384); + stracpy(_g2b4_var._type, "Guide_four_side", 16384); + _g2b4_var._index=28; + int current_setpos_index = 28; + _g2b4_var._parameters.RIreflect[0]='\0'; + _g2b4_var._parameters.LIreflect[0]='\0'; + _g2b4_var._parameters.UIreflect[0]='\0'; + _g2b4_var._parameters.DIreflect[0]='\0'; + _g2b4_var._parameters.ROreflect[0]='\0'; + _g2b4_var._parameters.LOreflect[0]='\0'; + _g2b4_var._parameters.UOreflect[0]='\0'; + _g2b4_var._parameters.DOreflect[0]='\0'; + _g2b4_var._parameters.w1l = 0.03862; + _g2b4_var._parameters.w2l = 0.002; + _g2b4_var._parameters.linwl = 4.7858; + _g2b4_var._parameters.loutwl = 7.804500000000001; + _g2b4_var._parameters.w1r = 0.03862; + _g2b4_var._parameters.w2r = 0.002; + _g2b4_var._parameters.linwr = 4.7858; + _g2b4_var._parameters.loutwr = 7.804500000000001; + _g2b4_var._parameters.h1u = 0.03488; + _g2b4_var._parameters.h2u = 0.002; + _g2b4_var._parameters.linhu = 11.7858; + _g2b4_var._parameters.louthu = 23.8045; + _g2b4_var._parameters.h1d = 0.03488; + _g2b4_var._parameters.h2d = 0.002; + _g2b4_var._parameters.linhd = 11.7858; + _g2b4_var._parameters.louthd = 23.8045; + _g2b4_var._parameters.l = 0.40969999999999906; + _g2b4_var._parameters.R0 = 0.99; + _g2b4_var._parameters.Qcxl = 0.0217; + _g2b4_var._parameters.Qcxr = 0.0217; + _g2b4_var._parameters.Qcyu = 0.023; + _g2b4_var._parameters.Qcyd = 0.023; + _g2b4_var._parameters.alphaxl = 2.5; + _g2b4_var._parameters.alphaxr = 2.5; + _g2b4_var._parameters.alphayu = 1.8; + _g2b4_var._parameters.alphayd = 1.8; + _g2b4_var._parameters.Wxr = 0.015; + _g2b4_var._parameters.Wxl = 0.015; + _g2b4_var._parameters.Wyu = 0.015; + _g2b4_var._parameters.Wyd = 0.015; + _g2b4_var._parameters.mxr = 4; + _g2b4_var._parameters.mxl = 4; + _g2b4_var._parameters.myu = 2; + _g2b4_var._parameters.myd = 2; + _g2b4_var._parameters.QcxrOW = 0.0217; + _g2b4_var._parameters.QcxlOW = 0.0217; + _g2b4_var._parameters.QcyuOW = 0.0217; + _g2b4_var._parameters.QcydOW = 0.0217; + _g2b4_var._parameters.alphaxlOW = 6.07; + _g2b4_var._parameters.alphaxrOW = 6.07; + _g2b4_var._parameters.alphayuOW = 6.07; + _g2b4_var._parameters.alphaydOW = 6.07; + _g2b4_var._parameters.WxrOW = 0.003; + _g2b4_var._parameters.WxlOW = 0.003; + _g2b4_var._parameters.WyuOW = 0.003; + _g2b4_var._parameters.WydOW = 0.003; + _g2b4_var._parameters.mxrOW = 0; + _g2b4_var._parameters.mxlOW = 0; + _g2b4_var._parameters.myuOW = 0; + _g2b4_var._parameters.mydOW = 0; + _g2b4_var._parameters.rwallthick = 0.001; + _g2b4_var._parameters.lwallthick = 0.001; + _g2b4_var._parameters.uwallthick = 0.001; + _g2b4_var._parameters.dwallthick = 0.001; + + + /* component g2b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b4_var._rotation_absolute); + rot_transpose(_g2b3_var._rotation_absolute, tr1); + rot_mul(_g2b4_var._rotation_absolute, tr1, _g2b4_var._rotation_relative); + _g2b4_var._rotation_is_identity = rot_test_identity(_g2b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 11.7818); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b3_var._position_absolute, _g2b4_var._position_absolute); + _g2b4_var._position_relative = rot_apply(_g2b4_var._rotation_absolute, tc1); + } /* g2b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute); + instrument->_position_absolute[28] = _g2b4_var._position_absolute; + instrument->_position_relative[28] = _g2b4_var._position_relative; + _g2b4_var._position_relative_is_zero = coords_test_zero(_g2b4_var._position_relative); + instrument->counter_N[28] = instrument->counter_P[28] = instrument->counter_P2[28] = 0; + instrument->counter_AbsorbProp[28]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0027_g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w1l", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linwl", "0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "loutwl", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w1r", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linwr", "0.0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "loutwr", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linhu", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "louthu", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "linhd", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "louthd", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0027_g2b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b4_setpos */ + +/* component fo2_position=Arm() SETTING, POSITION/ROTATION */ +int _fo2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo2_position_setpos] component fo2_position=Arm() SETTING [Arm:0]"); + stracpy(_fo2_position_var._name, "fo2_position", 16384); + stracpy(_fo2_position_var._type, "Arm", 16384); + _fo2_position_var._index=29; + int current_setpos_index = 29; + /* component fo2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo2_position_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo2_position_var._rotation_absolute, tr1, _fo2_position_var._rotation_relative); + _fo2_position_var._rotation_is_identity = rot_test_identity(_fo2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.2); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo2_position_var._position_absolute); + _fo2_position_var._position_relative = rot_apply(_fo2_position_var._rotation_absolute, tc1); + } /* fo2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute); + instrument->_position_absolute[29] = _fo2_position_var._position_absolute; + instrument->_position_relative[29] = _fo2_position_var._position_relative; + _fo2_position_var._position_relative_is_zero = coords_test_zero(_fo2_position_var._position_relative); + instrument->counter_N[29] = instrument->counter_P[29] = instrument->counter_P2[29] = 0; + instrument->counter_AbsorbProp[29]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0028_fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo2_position_setpos */ + +/* component fo_chopper_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_2_setpos] component fo_chopper_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_2_var._name, "fo_chopper_2", 16384); + stracpy(_fo_chopper_2_var._type, "MultiDiskChopper", 16384); + _fo_chopper_2_var._index=30; + int current_setpos_index = 30; + if("-127.07;165.08;101.46;41.97;-13.98;-67.15" && strlen("-127.07;165.08;101.46;41.97;-13.98;-67.15")) + stracpy(_fo_chopper_2_var._parameters.slit_center, "-127.07;165.08;101.46;41.97;-13.98;-67.15" ? "-127.07;165.08;101.46;41.97;-13.98;-67.15" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_center[0]='\0'; + if("32.9;33.54;34.15;34.37;34.89;34.31" && strlen("32.9;33.54;34.15;34.37;34.89;34.31")) + stracpy(_fo_chopper_2_var._parameters.slit_width, "32.9;33.54;34.15;34.37;34.89;34.31" ? "32.9;33.54;34.15;34.37;34.89;34.31" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_width[0]='\0'; + _fo_chopper_2_var._parameters.nslits = 6; + _fo_chopper_2_var._parameters.delta_y = -0.46; + _fo_chopper_2_var._parameters.nu = -42.0; + _fo_chopper_2_var._parameters.nrev = 0; + _fo_chopper_2_var._parameters.ratio = 1; + _fo_chopper_2_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_2; + _fo_chopper_2_var._parameters.delay = 0; + _fo_chopper_2_var._parameters.isfirst = 0; + _fo_chopper_2_var._parameters.phase = fo2_phase; + _fo_chopper_2_var._parameters.radius = 0.5; + _fo_chopper_2_var._parameters.equal = 0; + _fo_chopper_2_var._parameters.abs_out = 0; + _fo_chopper_2_var._parameters.verbose = 0; + + + /* component fo_chopper_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo2_position_var._rotation_absolute, _fo_chopper_2_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_2_var._rotation_absolute, tr1, _fo_chopper_2_var._rotation_relative); + _fo_chopper_2_var._rotation_is_identity = rot_test_identity(_fo_chopper_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_2_var._position_absolute = coords_add(_fo2_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo_chopper_2_var._position_absolute); + _fo_chopper_2_var._position_relative = rot_apply(_fo_chopper_2_var._rotation_absolute, tc1); + } /* fo_chopper_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute); + instrument->_position_absolute[30] = _fo_chopper_2_var._position_absolute; + instrument->_position_relative[30] = _fo_chopper_2_var._position_relative; + _fo_chopper_2_var._position_relative_is_zero = coords_test_zero(_fo_chopper_2_var._position_relative); + instrument->counter_N[30] = instrument->counter_P[30] = instrument->counter_P2[30] = 0; + instrument->counter_AbsorbProp[30]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0029_fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "slit_center", "0 180", "-127.07;165.08;101.46;41.97;-13.98;-67.15", "char*"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "slit_width", "10 20", "32.9;33.54;34.15;34.37;34.89;34.31", "char*"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "delta_y", "-0.3", "-0.46","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "phase", "0", "fo2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_2_setpos */ + +/* component bp2_position=Arm() SETTING, POSITION/ROTATION */ +int _bp2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp2_position_setpos] component bp2_position=Arm() SETTING [Arm:0]"); + stracpy(_bp2_position_var._name, "bp2_position", 16384); + stracpy(_bp2_position_var._type, "Arm", 16384); + _bp2_position_var._index=31; + int current_setpos_index = 31; + /* component bp2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp2_position_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp2_position_var._rotation_absolute, tr1, _bp2_position_var._rotation_relative); + _bp2_position_var._rotation_is_identity = rot_test_identity(_bp2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp2_position_var._position_absolute); + _bp2_position_var._position_relative = rot_apply(_bp2_position_var._rotation_absolute, tc1); + } /* bp2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute); + instrument->_position_absolute[31] = _bp2_position_var._position_absolute; + instrument->_position_relative[31] = _bp2_position_var._position_relative; + _bp2_position_var._position_relative_is_zero = coords_test_zero(_bp2_position_var._position_relative); + instrument->counter_N[31] = instrument->counter_P[31] = instrument->counter_P2[31] = 0; + instrument->counter_AbsorbProp[31]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0030_bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp2_position_setpos */ + +/* component bp_chopper2=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp_chopper2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp_chopper2_setpos] component bp_chopper2=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp_chopper2_var._name, "bp_chopper2", 16384); + stracpy(_bp_chopper2_var._type, "DiskChopper", 16384); + _bp_chopper2_var._index=32; + int current_setpos_index = 32; + _bp_chopper2_var._parameters.theta_0 = 67.49; + _bp_chopper2_var._parameters.radius = 0.5; + _bp_chopper2_var._parameters.yheight = 0.08; + _bp_chopper2_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp_chopper2_var._parameters.nslit = 1; + _bp_chopper2_var._parameters.jitter = _instrument_var._parameters.jitter_bp2; + _bp_chopper2_var._parameters.delay = 0; + _bp_chopper2_var._parameters.isfirst = 0; + _bp_chopper2_var._parameters.n_pulse = 1; + _bp_chopper2_var._parameters.abs_out = 1; + _bp_chopper2_var._parameters.phase = bp2_phase -141.795; + _bp_chopper2_var._parameters.xwidth = 0; + _bp_chopper2_var._parameters.verbose = 0; + + + /* component bp_chopper2=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp2_position_var._rotation_absolute, _bp_chopper2_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp_chopper2_var._rotation_absolute, tr1, _bp_chopper2_var._rotation_relative); + _bp_chopper2_var._rotation_is_identity = rot_test_identity(_bp_chopper2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp_chopper2_var._position_absolute = coords_add(_bp2_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp_chopper2_var._position_absolute); + _bp_chopper2_var._position_relative = rot_apply(_bp_chopper2_var._rotation_absolute, tc1); + } /* bp_chopper2=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute); + instrument->_position_absolute[32] = _bp_chopper2_var._position_absolute; + instrument->_position_relative[32] = _bp_chopper2_var._position_relative; + _bp_chopper2_var._position_relative_is_zero = coords_test_zero(_bp_chopper2_var._position_relative); + instrument->counter_N[32] = instrument->counter_P[32] = instrument->counter_P2[32] = 0; + instrument->counter_AbsorbProp[32]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0031_bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "theta_0", "0", "67.49","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "yheight", "NONE", "0.08","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "jitter", "0", "_instrument_var._parameters.jitter_bp2","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "phase", "0", "bp2_phase -141.795","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp_chopper2_setpos */ + +/* component g2c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2c1_setpos] component g2c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2c1_var._name, "g2c1", 16384); + stracpy(_g2c1_var._type, "Guide_four_side", 16384); + _g2c1_var._index=33; + int current_setpos_index = 33; + _g2c1_var._parameters.RIreflect[0]='\0'; + _g2c1_var._parameters.LIreflect[0]='\0'; + _g2c1_var._parameters.UIreflect[0]='\0'; + _g2c1_var._parameters.DIreflect[0]='\0'; + _g2c1_var._parameters.ROreflect[0]='\0'; + _g2c1_var._parameters.LOreflect[0]='\0'; + _g2c1_var._parameters.UOreflect[0]='\0'; + _g2c1_var._parameters.DOreflect[0]='\0'; + _g2c1_var._parameters.w1l = 0.03929; + _g2c1_var._parameters.w2l = 0.002; + _g2c1_var._parameters.linwl = 5.250249999999999; + _g2c1_var._parameters.loutwl = 6.536899999999999; + _g2c1_var._parameters.w1r = 0.03929; + _g2c1_var._parameters.w2r = 0.002; + _g2c1_var._parameters.linwr = 5.250249999999999; + _g2c1_var._parameters.loutwr = 6.536899999999999; + _g2c1_var._parameters.h1u = 0.03488; + _g2c1_var._parameters.h2u = 0.002; + _g2c1_var._parameters.linhu = 12.25025; + _g2c1_var._parameters.louthu = 22.5369; + _g2c1_var._parameters.h1d = 0.03488; + _g2c1_var._parameters.h2d = 0.002; + _g2c1_var._parameters.linhd = 12.25025; + _g2c1_var._parameters.louthd = 22.5369; + _g2c1_var._parameters.l = 1.2128500000000013; + _g2c1_var._parameters.R0 = 0.99; + _g2c1_var._parameters.Qcxl = 0.0217; + _g2c1_var._parameters.Qcxr = 0.0217; + _g2c1_var._parameters.Qcyu = 0.023; + _g2c1_var._parameters.Qcyd = 0.023; + _g2c1_var._parameters.alphaxl = 2.5; + _g2c1_var._parameters.alphaxr = 2.5; + _g2c1_var._parameters.alphayu = 1.8; + _g2c1_var._parameters.alphayd = 1.8; + _g2c1_var._parameters.Wxr = 0.015; + _g2c1_var._parameters.Wxl = 0.015; + _g2c1_var._parameters.Wyu = 0.015; + _g2c1_var._parameters.Wyd = 0.015; + _g2c1_var._parameters.mxr = 3.5; + _g2c1_var._parameters.mxl = 3.5; + _g2c1_var._parameters.myu = 2; + _g2c1_var._parameters.myd = 2; + _g2c1_var._parameters.QcxrOW = 0.0217; + _g2c1_var._parameters.QcxlOW = 0.0217; + _g2c1_var._parameters.QcyuOW = 0.0217; + _g2c1_var._parameters.QcydOW = 0.0217; + _g2c1_var._parameters.alphaxlOW = 6.07; + _g2c1_var._parameters.alphaxrOW = 6.07; + _g2c1_var._parameters.alphayuOW = 6.07; + _g2c1_var._parameters.alphaydOW = 6.07; + _g2c1_var._parameters.WxrOW = 0.003; + _g2c1_var._parameters.WxlOW = 0.003; + _g2c1_var._parameters.WyuOW = 0.003; + _g2c1_var._parameters.WydOW = 0.003; + _g2c1_var._parameters.mxrOW = 0; + _g2c1_var._parameters.mxlOW = 0; + _g2c1_var._parameters.myuOW = 0; + _g2c1_var._parameters.mydOW = 0; + _g2c1_var._parameters.rwallthick = 0.001; + _g2c1_var._parameters.lwallthick = 0.001; + _g2c1_var._parameters.uwallthick = 0.001; + _g2c1_var._parameters.dwallthick = 0.001; + + + /* component g2c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2c1_var._rotation_absolute); + rot_transpose(_bp_chopper2_var._rotation_absolute, tr1); + rot_mul(_g2c1_var._rotation_absolute, tr1, _g2c1_var._rotation_relative); + _g2c1_var._rotation_is_identity = rot_test_identity(_g2c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.254249999999999); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp_chopper2_var._position_absolute, _g2c1_var._position_absolute); + _g2c1_var._position_relative = rot_apply(_g2c1_var._rotation_absolute, tc1); + } /* g2c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute); + instrument->_position_absolute[33] = _g2c1_var._position_absolute; + instrument->_position_relative[33] = _g2c1_var._position_relative; + _g2c1_var._position_relative_is_zero = coords_test_zero(_g2c1_var._position_relative); + instrument->counter_N[33] = instrument->counter_P[33] = instrument->counter_P2[33] = 0; + instrument->counter_AbsorbProp[33]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0032_g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w1l", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linwl", "0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "loutwl", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w1r", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linwr", "0.0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "loutwr", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linhu", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "louthu", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "linhd", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "louthd", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "l", "0", "1.2128500000000013","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_g2c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2c1_setpos */ + +/* component t0_start_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_start_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_start_position_setpos] component t0_start_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_start_position_var._name, "t0_start_position", 16384); + stracpy(_t0_start_position_var._type, "Arm", 16384); + _t0_start_position_var._index=34; + int current_setpos_index = 34; + /* component t0_start_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_start_position_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_start_position_var._rotation_absolute, tr1, _t0_start_position_var._rotation_relative); + _t0_start_position_var._rotation_is_identity = rot_test_identity(_t0_start_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.503); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_start_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_start_position_var._position_absolute); + _t0_start_position_var._position_relative = rot_apply(_t0_start_position_var._rotation_absolute, tc1); + } /* t0_start_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute); + instrument->_position_absolute[34] = _t0_start_position_var._position_absolute; + instrument->_position_relative[34] = _t0_start_position_var._position_relative; + _t0_start_position_var._position_relative_is_zero = coords_test_zero(_t0_start_position_var._position_relative); + instrument->counter_N[34] = instrument->counter_P[34] = instrument->counter_P2[34] = 0; + instrument->counter_AbsorbProp[34]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0033_t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_start_position_setpos */ + +/* component t0_chopper_alpha=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_alpha_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_alpha_setpos] component t0_chopper_alpha=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_alpha_var._name, "t0_chopper_alpha", 16384); + stracpy(_t0_chopper_alpha_var._type, "DiskChopper", 16384); + _t0_chopper_alpha_var._index=35; + int current_setpos_index = 35; + _t0_chopper_alpha_var._parameters.theta_0 = 294.74; + _t0_chopper_alpha_var._parameters.radius = 0.32; + _t0_chopper_alpha_var._parameters.yheight = 0.075; + _t0_chopper_alpha_var._parameters.nu = 28.0; + _t0_chopper_alpha_var._parameters.nslit = 1; + _t0_chopper_alpha_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_alpha_var._parameters.delay = 0; + _t0_chopper_alpha_var._parameters.isfirst = 0; + _t0_chopper_alpha_var._parameters.n_pulse = 1; + _t0_chopper_alpha_var._parameters.abs_out = 1; + _t0_chopper_alpha_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_alpha_var._parameters.xwidth = 0; + _t0_chopper_alpha_var._parameters.verbose = 0; + + + /* component t0_chopper_alpha=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_start_position_var._rotation_absolute, _t0_chopper_alpha_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_alpha_var._rotation_absolute, tr1, _t0_chopper_alpha_var._rotation_relative); + _t0_chopper_alpha_var._rotation_is_identity = rot_test_identity(_t0_chopper_alpha_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_start_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_alpha_var._position_absolute = coords_add(_t0_start_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_chopper_alpha_var._position_absolute); + _t0_chopper_alpha_var._position_relative = rot_apply(_t0_chopper_alpha_var._rotation_absolute, tc1); + } /* t0_chopper_alpha=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute); + instrument->_position_absolute[35] = _t0_chopper_alpha_var._position_absolute; + instrument->_position_relative[35] = _t0_chopper_alpha_var._position_relative; + _t0_chopper_alpha_var._position_relative_is_zero = coords_test_zero(_t0_chopper_alpha_var._position_relative); + instrument->counter_N[35] = instrument->counter_P[35] = instrument->counter_P2[35] = 0; + instrument->counter_AbsorbProp[35]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0034_t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_alpha_setpos */ + +/* component t0_end_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_end_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_end_position_setpos] component t0_end_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_end_position_var._name, "t0_end_position", 16384); + stracpy(_t0_end_position_var._type, "Arm", 16384); + _t0_end_position_var._index=36; + int current_setpos_index = 36; + /* component t0_end_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_end_position_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_end_position_var._rotation_absolute, tr1, _t0_end_position_var._rotation_relative); + _t0_end_position_var._rotation_is_identity = rot_test_identity(_t0_end_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.703); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_end_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_end_position_var._position_absolute); + _t0_end_position_var._position_relative = rot_apply(_t0_end_position_var._rotation_absolute, tc1); + } /* t0_end_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute); + instrument->_position_absolute[36] = _t0_end_position_var._position_absolute; + instrument->_position_relative[36] = _t0_end_position_var._position_relative; + _t0_end_position_var._position_relative_is_zero = coords_test_zero(_t0_end_position_var._position_relative); + instrument->counter_N[36] = instrument->counter_P[36] = instrument->counter_P2[36] = 0; + instrument->counter_AbsorbProp[36]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0035_t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_end_position_setpos */ + +/* component t0_chopper_beta=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_beta_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_beta_setpos] component t0_chopper_beta=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_beta_var._name, "t0_chopper_beta", 16384); + stracpy(_t0_chopper_beta_var._type, "DiskChopper", 16384); + _t0_chopper_beta_var._index=37; + int current_setpos_index = 37; + _t0_chopper_beta_var._parameters.theta_0 = 294.74; + _t0_chopper_beta_var._parameters.radius = 0.32; + _t0_chopper_beta_var._parameters.yheight = 0.075; + _t0_chopper_beta_var._parameters.nu = 28.0; + _t0_chopper_beta_var._parameters.nslit = 1; + _t0_chopper_beta_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_beta_var._parameters.delay = 0; + _t0_chopper_beta_var._parameters.isfirst = 0; + _t0_chopper_beta_var._parameters.n_pulse = 1; + _t0_chopper_beta_var._parameters.abs_out = 1; + _t0_chopper_beta_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_beta_var._parameters.xwidth = 0; + _t0_chopper_beta_var._parameters.verbose = 0; + + + /* component t0_chopper_beta=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_end_position_var._rotation_absolute, _t0_chopper_beta_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_beta_var._rotation_absolute, tr1, _t0_chopper_beta_var._rotation_relative); + _t0_chopper_beta_var._rotation_is_identity = rot_test_identity(_t0_chopper_beta_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_end_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_beta_var._position_absolute = coords_add(_t0_end_position_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_chopper_beta_var._position_absolute); + _t0_chopper_beta_var._position_relative = rot_apply(_t0_chopper_beta_var._rotation_absolute, tc1); + } /* t0_chopper_beta=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute); + instrument->_position_absolute[37] = _t0_chopper_beta_var._position_absolute; + instrument->_position_relative[37] = _t0_chopper_beta_var._position_relative; + _t0_chopper_beta_var._position_relative_is_zero = coords_test_zero(_t0_chopper_beta_var._position_relative); + instrument->counter_N[37] = instrument->counter_P[37] = instrument->counter_P2[37] = 0; + instrument->counter_AbsorbProp[37]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0036_t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_beta_setpos */ + +/* component g3a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a1_setpos] component g3a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a1_var._name, "g3a1", 16384); + stracpy(_g3a1_var._type, "Guide_four_side", 16384); + _g3a1_var._index=38; + int current_setpos_index = 38; + _g3a1_var._parameters.RIreflect[0]='\0'; + _g3a1_var._parameters.LIreflect[0]='\0'; + _g3a1_var._parameters.UIreflect[0]='\0'; + _g3a1_var._parameters.DIreflect[0]='\0'; + _g3a1_var._parameters.ROreflect[0]='\0'; + _g3a1_var._parameters.LOreflect[0]='\0'; + _g3a1_var._parameters.UOreflect[0]='\0'; + _g3a1_var._parameters.DOreflect[0]='\0'; + _g3a1_var._parameters.w1l = 0.04004; + _g3a1_var._parameters.w2l = 0.04004; + _g3a1_var._parameters.linwl = 0; + _g3a1_var._parameters.loutwl = 0; + _g3a1_var._parameters.w1r = 0.04004; + _g3a1_var._parameters.w2r = 0.04004; + _g3a1_var._parameters.linwr = 0.0; + _g3a1_var._parameters.loutwr = 0; + _g3a1_var._parameters.h1u = 0.03611; + _g3a1_var._parameters.h2u = 0.002; + _g3a1_var._parameters.linhu = 13.7559; + _g3a1_var._parameters.louthu = 20.2631; + _g3a1_var._parameters.h1d = 0.03611; + _g3a1_var._parameters.h2d = 0.002; + _g3a1_var._parameters.linhd = 13.7559; + _g3a1_var._parameters.louthd = 20.2631; + _g3a1_var._parameters.l = 1.981; + _g3a1_var._parameters.R0 = 0.99; + _g3a1_var._parameters.Qcxl = 0.0217; + _g3a1_var._parameters.Qcxr = 0.0217; + _g3a1_var._parameters.Qcyu = 0.023; + _g3a1_var._parameters.Qcyd = 0.023; + _g3a1_var._parameters.alphaxl = 2.5; + _g3a1_var._parameters.alphaxr = 2.5; + _g3a1_var._parameters.alphayu = 1.8; + _g3a1_var._parameters.alphayd = 1.8; + _g3a1_var._parameters.Wxr = 0.015; + _g3a1_var._parameters.Wxl = 0.015; + _g3a1_var._parameters.Wyu = 0.015; + _g3a1_var._parameters.Wyd = 0.015; + _g3a1_var._parameters.mxr = 3.5; + _g3a1_var._parameters.mxl = 3.5; + _g3a1_var._parameters.myu = 2; + _g3a1_var._parameters.myd = 2; + _g3a1_var._parameters.QcxrOW = 0.0217; + _g3a1_var._parameters.QcxlOW = 0.0217; + _g3a1_var._parameters.QcyuOW = 0.0217; + _g3a1_var._parameters.QcydOW = 0.0217; + _g3a1_var._parameters.alphaxlOW = 6.07; + _g3a1_var._parameters.alphaxrOW = 6.07; + _g3a1_var._parameters.alphayuOW = 6.07; + _g3a1_var._parameters.alphaydOW = 6.07; + _g3a1_var._parameters.WxrOW = 0.003; + _g3a1_var._parameters.WxlOW = 0.003; + _g3a1_var._parameters.WyuOW = 0.003; + _g3a1_var._parameters.WydOW = 0.003; + _g3a1_var._parameters.mxrOW = 0; + _g3a1_var._parameters.mxlOW = 0; + _g3a1_var._parameters.myuOW = 0; + _g3a1_var._parameters.mydOW = 0; + _g3a1_var._parameters.rwallthick = 0.001; + _g3a1_var._parameters.lwallthick = 0.001; + _g3a1_var._parameters.uwallthick = 0.001; + _g3a1_var._parameters.dwallthick = 0.001; + + + /* component g3a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a1_var._rotation_absolute); + rot_transpose(_t0_chopper_beta_var._rotation_absolute, tr1); + rot_mul(_g3a1_var._rotation_absolute, tr1, _g3a1_var._rotation_relative); + _g3a1_var._rotation_is_identity = rot_test_identity(_g3a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.7379); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_beta_var._position_absolute, _g3a1_var._position_absolute); + _g3a1_var._position_relative = rot_apply(_g3a1_var._rotation_absolute, tc1); + } /* g3a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute); + instrument->_position_absolute[38] = _g3a1_var._position_absolute; + instrument->_position_relative[38] = _g3a1_var._position_relative; + _g3a1_var._position_relative_is_zero = coords_test_zero(_g3a1_var._position_relative); + instrument->counter_N[38] = instrument->counter_P[38] = instrument->counter_P2[38] = 0; + instrument->counter_AbsorbProp[38]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0037_g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h1u", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linhu", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "louthu", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h1d", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "linhd", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "louthd", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "l", "0", "1.981","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0037_g3a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a1_setpos */ + +/* component g3a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a2_setpos] component g3a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a2_var._name, "g3a2", 16384); + stracpy(_g3a2_var._type, "Guide_four_side", 16384); + _g3a2_var._index=39; + int current_setpos_index = 39; + _g3a2_var._parameters.RIreflect[0]='\0'; + _g3a2_var._parameters.LIreflect[0]='\0'; + _g3a2_var._parameters.UIreflect[0]='\0'; + _g3a2_var._parameters.DIreflect[0]='\0'; + _g3a2_var._parameters.ROreflect[0]='\0'; + _g3a2_var._parameters.LOreflect[0]='\0'; + _g3a2_var._parameters.UOreflect[0]='\0'; + _g3a2_var._parameters.DOreflect[0]='\0'; + _g3a2_var._parameters.w1l = 0.04004; + _g3a2_var._parameters.w2l = 0.04004; + _g3a2_var._parameters.linwl = 0; + _g3a2_var._parameters.loutwl = 0; + _g3a2_var._parameters.w1r = 0.04004; + _g3a2_var._parameters.w2r = 0.04004; + _g3a2_var._parameters.linwr = 0.0; + _g3a2_var._parameters.loutwr = 0; + _g3a2_var._parameters.h1u = 0.03687; + _g3a2_var._parameters.h2u = 0.002; + _g3a2_var._parameters.linhu = 15.7409; + _g3a2_var._parameters.louthu = 19.0055; + _g3a2_var._parameters.h1d = 0.03687; + _g3a2_var._parameters.h2d = 0.002; + _g3a2_var._parameters.linhd = 15.7409; + _g3a2_var._parameters.louthd = 19.0055; + _g3a2_var._parameters.l = 1.2535999999999987; + _g3a2_var._parameters.R0 = 0.99; + _g3a2_var._parameters.Qcxl = 0.0221; + _g3a2_var._parameters.Qcxr = 0.0221; + _g3a2_var._parameters.Qcyu = 0.023; + _g3a2_var._parameters.Qcyd = 0.023; + _g3a2_var._parameters.alphaxl = 1.75; + _g3a2_var._parameters.alphaxr = 1.75; + _g3a2_var._parameters.alphayu = 1.8; + _g3a2_var._parameters.alphayd = 1.8; + _g3a2_var._parameters.Wxr = 0.015; + _g3a2_var._parameters.Wxl = 0.015; + _g3a2_var._parameters.Wyu = 0.015; + _g3a2_var._parameters.Wyd = 0.015; + _g3a2_var._parameters.mxr = 3; + _g3a2_var._parameters.mxl = 3; + _g3a2_var._parameters.myu = 2; + _g3a2_var._parameters.myd = 2; + _g3a2_var._parameters.QcxrOW = 0.0217; + _g3a2_var._parameters.QcxlOW = 0.0217; + _g3a2_var._parameters.QcyuOW = 0.0217; + _g3a2_var._parameters.QcydOW = 0.0217; + _g3a2_var._parameters.alphaxlOW = 6.07; + _g3a2_var._parameters.alphaxrOW = 6.07; + _g3a2_var._parameters.alphayuOW = 6.07; + _g3a2_var._parameters.alphaydOW = 6.07; + _g3a2_var._parameters.WxrOW = 0.003; + _g3a2_var._parameters.WxlOW = 0.003; + _g3a2_var._parameters.WyuOW = 0.003; + _g3a2_var._parameters.WydOW = 0.003; + _g3a2_var._parameters.mxrOW = 0; + _g3a2_var._parameters.mxlOW = 0; + _g3a2_var._parameters.myuOW = 0; + _g3a2_var._parameters.mydOW = 0; + _g3a2_var._parameters.rwallthick = 0.001; + _g3a2_var._parameters.lwallthick = 0.001; + _g3a2_var._parameters.uwallthick = 0.001; + _g3a2_var._parameters.dwallthick = 0.001; + + + /* component g3a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a2_var._rotation_absolute); + rot_transpose(_g3a1_var._rotation_absolute, tr1); + rot_mul(_g3a2_var._rotation_absolute, tr1, _g3a2_var._rotation_relative); + _g3a2_var._rotation_is_identity = rot_test_identity(_g3a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 15.7229); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a1_var._position_absolute, _g3a2_var._position_absolute); + _g3a2_var._position_relative = rot_apply(_g3a2_var._rotation_absolute, tc1); + } /* g3a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute); + instrument->_position_absolute[39] = _g3a2_var._position_absolute; + instrument->_position_relative[39] = _g3a2_var._position_relative; + _g3a2_var._position_relative_is_zero = coords_test_zero(_g3a2_var._position_relative); + instrument->counter_N[39] = instrument->counter_P[39] = instrument->counter_P2[39] = 0; + instrument->counter_AbsorbProp[39]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0038_g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h1u", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linhu", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "louthu", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h1d", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "linhd", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "louthd", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "l", "0", "1.2535999999999987","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_g3a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a2_setpos */ + +/* component fo3_position=Arm() SETTING, POSITION/ROTATION */ +int _fo3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo3_position_setpos] component fo3_position=Arm() SETTING [Arm:0]"); + stracpy(_fo3_position_var._name, "fo3_position", 16384); + stracpy(_fo3_position_var._type, "Arm", 16384); + _fo3_position_var._index=40; + int current_setpos_index = 40; + /* component fo3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo3_position_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo3_position_var._rotation_absolute, tr1, _fo3_position_var._rotation_relative); + _fo3_position_var._rotation_is_identity = rot_test_identity(_fo3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9865); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo3_position_var._position_absolute); + _fo3_position_var._position_relative = rot_apply(_fo3_position_var._rotation_absolute, tc1); + } /* fo3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute); + instrument->_position_absolute[40] = _fo3_position_var._position_absolute; + instrument->_position_relative[40] = _fo3_position_var._position_relative; + _fo3_position_var._position_relative_is_zero = coords_test_zero(_fo3_position_var._position_relative); + instrument->counter_N[40] = instrument->counter_P[40] = instrument->counter_P2[40] = 0; + instrument->counter_AbsorbProp[40]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0039_fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo3_position_setpos */ + +/* component fo_chopper_3=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_3_setpos] component fo_chopper_3=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_3_var._name, "fo_chopper_3", 16384); + stracpy(_fo_chopper_3_var._type, "MultiDiskChopper", 16384); + _fo_chopper_3_var._index=41; + int current_setpos_index = 41; + if("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" && strlen("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08")) + stracpy(_fo_chopper_3_var._parameters.slit_center, "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" ? "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_center[0]='\0'; + if("40.32;39.61;38.94;38.31;37.72;36.06" && strlen("40.32;39.61;38.94;38.31;37.72;36.06")) + stracpy(_fo_chopper_3_var._parameters.slit_width, "40.32;39.61;38.94;38.31;37.72;36.06" ? "40.32;39.61;38.94;38.31;37.72;36.06" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_width[0]='\0'; + _fo_chopper_3_var._parameters.nslits = 6; + _fo_chopper_3_var._parameters.delta_y = -0.5575; + _fo_chopper_3_var._parameters.nu = -28.0; + _fo_chopper_3_var._parameters.nrev = 0; + _fo_chopper_3_var._parameters.ratio = 1; + _fo_chopper_3_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_3; + _fo_chopper_3_var._parameters.delay = 0; + _fo_chopper_3_var._parameters.isfirst = 0; + _fo_chopper_3_var._parameters.phase = fo3_phase; + _fo_chopper_3_var._parameters.radius = 0.6; + _fo_chopper_3_var._parameters.equal = 0; + _fo_chopper_3_var._parameters.abs_out = 0; + _fo_chopper_3_var._parameters.verbose = 0; + + + /* component fo_chopper_3=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo3_position_var._rotation_absolute, _fo_chopper_3_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_3_var._rotation_absolute, tr1, _fo_chopper_3_var._rotation_relative); + _fo_chopper_3_var._rotation_is_identity = rot_test_identity(_fo_chopper_3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo3_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_3_var._position_absolute = coords_add(_fo3_position_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo_chopper_3_var._position_absolute); + _fo_chopper_3_var._position_relative = rot_apply(_fo_chopper_3_var._rotation_absolute, tc1); + } /* fo_chopper_3=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute); + instrument->_position_absolute[41] = _fo_chopper_3_var._position_absolute; + instrument->_position_relative[41] = _fo_chopper_3_var._position_relative; + _fo_chopper_3_var._position_relative_is_zero = coords_test_zero(_fo_chopper_3_var._position_relative); + instrument->counter_N[41] = instrument->counter_P[41] = instrument->counter_P2[41] = 0; + instrument->counter_AbsorbProp[41]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0040_fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "slit_center", "0 180", "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", "char*"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "slit_width", "10 20", "40.32;39.61;38.94;38.31;37.72;36.06", "char*"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "delta_y", "-0.3", "-0.5575","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nu", "0", "-28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_3","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "phase", "0", "fo3_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "radius", "0.375", "0.6","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_3_setpos */ + +/* component g3b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3b1_setpos] component g3b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3b1_var._name, "g3b1", 16384); + stracpy(_g3b1_var._type, "Guide_four_side", 16384); + _g3b1_var._index=42; + int current_setpos_index = 42; + _g3b1_var._parameters.RIreflect[0]='\0'; + _g3b1_var._parameters.LIreflect[0]='\0'; + _g3b1_var._parameters.UIreflect[0]='\0'; + _g3b1_var._parameters.DIreflect[0]='\0'; + _g3b1_var._parameters.ROreflect[0]='\0'; + _g3b1_var._parameters.LOreflect[0]='\0'; + _g3b1_var._parameters.UOreflect[0]='\0'; + _g3b1_var._parameters.DOreflect[0]='\0'; + _g3b1_var._parameters.w1l = 0.04004; + _g3b1_var._parameters.w2l = 0.04004; + _g3b1_var._parameters.linwl = 0; + _g3b1_var._parameters.loutwl = 0; + _g3b1_var._parameters.w1r = 0.04004; + _g3b1_var._parameters.w2r = 0.04004; + _g3b1_var._parameters.linwr = 0.0; + _g3b1_var._parameters.loutwr = 0; + _g3b1_var._parameters.h1u = 0.03711; + _g3b1_var._parameters.h2u = 0.002; + _g3b1_var._parameters.linhu = 17.0055; + _g3b1_var._parameters.louthu = 18.038; + _g3b1_var._parameters.h1d = 0.03711; + _g3b1_var._parameters.h2d = 0.002; + _g3b1_var._parameters.linhd = 17.0055; + _g3b1_var._parameters.louthd = 18.038; + _g3b1_var._parameters.l = 0.9564999999999984; + _g3b1_var._parameters.R0 = 0.99; + _g3b1_var._parameters.Qcxl = 0.0221; + _g3b1_var._parameters.Qcxr = 0.0221; + _g3b1_var._parameters.Qcyu = 0.023; + _g3b1_var._parameters.Qcyd = 0.023; + _g3b1_var._parameters.alphaxl = 1.75; + _g3b1_var._parameters.alphaxr = 1.75; + _g3b1_var._parameters.alphayu = 1.8; + _g3b1_var._parameters.alphayd = 1.8; + _g3b1_var._parameters.Wxr = 0.015; + _g3b1_var._parameters.Wxl = 0.015; + _g3b1_var._parameters.Wyu = 0.015; + _g3b1_var._parameters.Wyd = 0.015; + _g3b1_var._parameters.mxr = 2.5; + _g3b1_var._parameters.mxl = 2.5; + _g3b1_var._parameters.myu = 2; + _g3b1_var._parameters.myd = 2; + _g3b1_var._parameters.QcxrOW = 0.0217; + _g3b1_var._parameters.QcxlOW = 0.0217; + _g3b1_var._parameters.QcyuOW = 0.0217; + _g3b1_var._parameters.QcydOW = 0.0217; + _g3b1_var._parameters.alphaxlOW = 6.07; + _g3b1_var._parameters.alphaxrOW = 6.07; + _g3b1_var._parameters.alphayuOW = 6.07; + _g3b1_var._parameters.alphaydOW = 6.07; + _g3b1_var._parameters.WxrOW = 0.003; + _g3b1_var._parameters.WxlOW = 0.003; + _g3b1_var._parameters.WyuOW = 0.003; + _g3b1_var._parameters.WydOW = 0.003; + _g3b1_var._parameters.mxrOW = 0; + _g3b1_var._parameters.mxlOW = 0; + _g3b1_var._parameters.myuOW = 0; + _g3b1_var._parameters.mydOW = 0; + _g3b1_var._parameters.rwallthick = 0.001; + _g3b1_var._parameters.lwallthick = 0.001; + _g3b1_var._parameters.uwallthick = 0.001; + _g3b1_var._parameters.dwallthick = 0.001; + + + /* component g3b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3b1_var._rotation_absolute); + rot_transpose(_fo_chopper_3_var._rotation_absolute, tr1); + rot_mul(_g3b1_var._rotation_absolute, tr1, _g3b1_var._rotation_relative); + _g3b1_var._rotation_is_identity = rot_test_identity(_g3b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9965); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_3_var._position_absolute, _g3b1_var._position_absolute); + _g3b1_var._position_relative = rot_apply(_g3b1_var._rotation_absolute, tc1); + } /* g3b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute); + instrument->_position_absolute[42] = _g3b1_var._position_absolute; + instrument->_position_relative[42] = _g3b1_var._position_relative; + _g3b1_var._position_relative_is_zero = coords_test_zero(_g3b1_var._position_relative); + instrument->counter_N[42] = instrument->counter_P[42] = instrument->counter_P2[42] = 0; + instrument->counter_AbsorbProp[42]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0041_g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h1u", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linhu", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "louthu", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h1d", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "linhd", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "louthd", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "l", "0", "0.9564999999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g3b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3b1_setpos */ + +/* component g4a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a1_setpos] component g4a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a1_var._name, "g4a1", 16384); + stracpy(_g4a1_var._type, "Guide_four_side", 16384); + _g4a1_var._index=43; + int current_setpos_index = 43; + _g4a1_var._parameters.RIreflect[0]='\0'; + _g4a1_var._parameters.LIreflect[0]='\0'; + _g4a1_var._parameters.UIreflect[0]='\0'; + _g4a1_var._parameters.DIreflect[0]='\0'; + _g4a1_var._parameters.ROreflect[0]='\0'; + _g4a1_var._parameters.LOreflect[0]='\0'; + _g4a1_var._parameters.UOreflect[0]='\0'; + _g4a1_var._parameters.DOreflect[0]='\0'; + _g4a1_var._parameters.w1l = 0.04004; + _g4a1_var._parameters.w2l = 0.04004; + _g4a1_var._parameters.linwl = 0; + _g4a1_var._parameters.loutwl = 0; + _g4a1_var._parameters.w1r = 0.04004; + _g4a1_var._parameters.w2r = 0.04004; + _g4a1_var._parameters.linwr = 0.0; + _g4a1_var._parameters.loutwr = 0; + _g4a1_var._parameters.h1u = 0.037165; + _g4a1_var._parameters.h2u = 0.037165; + _g4a1_var._parameters.linhu = 0.0; + _g4a1_var._parameters.louthu = 0; + _g4a1_var._parameters.h1d = 0.037165; + _g4a1_var._parameters.h2d = 0.037165; + _g4a1_var._parameters.linhd = 0.0; + _g4a1_var._parameters.louthd = 0; + _g4a1_var._parameters.l = 1.2600000000000016; + _g4a1_var._parameters.R0 = 0.99; + _g4a1_var._parameters.Qcxl = 0.0221; + _g4a1_var._parameters.Qcxr = 0.0221; + _g4a1_var._parameters.Qcyu = 0.023; + _g4a1_var._parameters.Qcyd = 0.023; + _g4a1_var._parameters.alphaxl = 1.75; + _g4a1_var._parameters.alphaxr = 1.75; + _g4a1_var._parameters.alphayu = 1.8; + _g4a1_var._parameters.alphayd = 1.8; + _g4a1_var._parameters.Wxr = 0.015; + _g4a1_var._parameters.Wxl = 0.015; + _g4a1_var._parameters.Wyu = 0.015; + _g4a1_var._parameters.Wyd = 0.015; + _g4a1_var._parameters.mxr = 3; + _g4a1_var._parameters.mxl = 3; + _g4a1_var._parameters.myu = 2; + _g4a1_var._parameters.myd = 2; + _g4a1_var._parameters.QcxrOW = 0.0217; + _g4a1_var._parameters.QcxlOW = 0.0217; + _g4a1_var._parameters.QcyuOW = 0.0217; + _g4a1_var._parameters.QcydOW = 0.0217; + _g4a1_var._parameters.alphaxlOW = 6.07; + _g4a1_var._parameters.alphaxrOW = 6.07; + _g4a1_var._parameters.alphayuOW = 6.07; + _g4a1_var._parameters.alphaydOW = 6.07; + _g4a1_var._parameters.WxrOW = 0.003; + _g4a1_var._parameters.WxlOW = 0.003; + _g4a1_var._parameters.WyuOW = 0.003; + _g4a1_var._parameters.WydOW = 0.003; + _g4a1_var._parameters.mxrOW = 0; + _g4a1_var._parameters.mxlOW = 0; + _g4a1_var._parameters.myuOW = 0; + _g4a1_var._parameters.mydOW = 0; + _g4a1_var._parameters.rwallthick = 0.001; + _g4a1_var._parameters.lwallthick = 0.001; + _g4a1_var._parameters.uwallthick = 0.001; + _g4a1_var._parameters.dwallthick = 0.001; + + + /* component g4a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a1_var._rotation_absolute); + rot_transpose(_g3b1_var._rotation_absolute, tr1); + rot_mul(_g4a1_var._rotation_absolute, tr1, _g4a1_var._rotation_relative); + _g4a1_var._rotation_is_identity = rot_test_identity(_g4a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 17.964); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3b1_var._position_absolute, _g4a1_var._position_absolute); + _g4a1_var._position_relative = rot_apply(_g4a1_var._rotation_absolute, tc1); + } /* g4a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute); + instrument->_position_absolute[43] = _g4a1_var._position_absolute; + instrument->_position_relative[43] = _g4a1_var._position_relative; + _g4a1_var._position_relative_is_zero = coords_test_zero(_g4a1_var._position_relative); + instrument->counter_N[43] = instrument->counter_P[43] = instrument->counter_P2[43] = 0; + instrument->counter_AbsorbProp[43]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0042_g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "l", "0", "1.2600000000000016","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0042_g4a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a1_setpos */ + +/* component monitor_2_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_2_position_setpos] component monitor_2_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_2_position_var._name, "monitor_2_position", 16384); + stracpy(_monitor_2_position_var._type, "Arm", 16384); + _monitor_2_position_var._index=44; + int current_setpos_index = 44; + /* component monitor_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_2_position_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_monitor_2_position_var._rotation_absolute, tr1, _monitor_2_position_var._rotation_relative); + _monitor_2_position_var._rotation_is_identity = rot_test_identity(_monitor_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.245); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _monitor_2_position_var._position_absolute); + _monitor_2_position_var._position_relative = rot_apply(_monitor_2_position_var._rotation_absolute, tc1); + } /* monitor_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute); + instrument->_position_absolute[44] = _monitor_2_position_var._position_absolute; + instrument->_position_relative[44] = _monitor_2_position_var._position_relative; + _monitor_2_position_var._position_relative_is_zero = coords_test_zero(_monitor_2_position_var._position_relative); + instrument->counter_N[44] = instrument->counter_P[44] = instrument->counter_P2[44] = 0; + instrument->counter_AbsorbProp[44]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0043_monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_2_position_setpos */ + +/* component g4a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a2_setpos] component g4a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a2_var._name, "g4a2", 16384); + stracpy(_g4a2_var._type, "Guide_four_side", 16384); + _g4a2_var._index=45; + int current_setpos_index = 45; + _g4a2_var._parameters.RIreflect[0]='\0'; + _g4a2_var._parameters.LIreflect[0]='\0'; + _g4a2_var._parameters.UIreflect[0]='\0'; + _g4a2_var._parameters.DIreflect[0]='\0'; + _g4a2_var._parameters.ROreflect[0]='\0'; + _g4a2_var._parameters.LOreflect[0]='\0'; + _g4a2_var._parameters.UOreflect[0]='\0'; + _g4a2_var._parameters.DOreflect[0]='\0'; + _g4a2_var._parameters.w1l = 0.04004; + _g4a2_var._parameters.w2l = 0.04004; + _g4a2_var._parameters.linwl = 0; + _g4a2_var._parameters.loutwl = 0; + _g4a2_var._parameters.w1r = 0.04004; + _g4a2_var._parameters.w2r = 0.04004; + _g4a2_var._parameters.linwr = 0.0; + _g4a2_var._parameters.loutwr = 0; + _g4a2_var._parameters.h1u = 0.037165; + _g4a2_var._parameters.h2u = 0.037165; + _g4a2_var._parameters.linhu = 0.0; + _g4a2_var._parameters.louthu = 0; + _g4a2_var._parameters.h1d = 0.037165; + _g4a2_var._parameters.h2d = 0.037165; + _g4a2_var._parameters.linhd = 0.0; + _g4a2_var._parameters.louthd = 0; + _g4a2_var._parameters.l = 1.9997499999999988; + _g4a2_var._parameters.R0 = 0.99; + _g4a2_var._parameters.Qcxl = 0.0221; + _g4a2_var._parameters.Qcxr = 0.0221; + _g4a2_var._parameters.Qcyu = 0.023; + _g4a2_var._parameters.Qcyd = 0.023; + _g4a2_var._parameters.alphaxl = 1.75; + _g4a2_var._parameters.alphaxr = 1.75; + _g4a2_var._parameters.alphayu = 1.8; + _g4a2_var._parameters.alphayd = 1.8; + _g4a2_var._parameters.Wxr = 0.015; + _g4a2_var._parameters.Wxl = 0.015; + _g4a2_var._parameters.Wyu = 0.015; + _g4a2_var._parameters.Wyd = 0.015; + _g4a2_var._parameters.mxr = 2.5; + _g4a2_var._parameters.mxl = 2.5; + _g4a2_var._parameters.myu = 2; + _g4a2_var._parameters.myd = 2; + _g4a2_var._parameters.QcxrOW = 0.0217; + _g4a2_var._parameters.QcxlOW = 0.0217; + _g4a2_var._parameters.QcyuOW = 0.0217; + _g4a2_var._parameters.QcydOW = 0.0217; + _g4a2_var._parameters.alphaxlOW = 6.07; + _g4a2_var._parameters.alphaxrOW = 6.07; + _g4a2_var._parameters.alphayuOW = 6.07; + _g4a2_var._parameters.alphaydOW = 6.07; + _g4a2_var._parameters.WxrOW = 0.003; + _g4a2_var._parameters.WxlOW = 0.003; + _g4a2_var._parameters.WyuOW = 0.003; + _g4a2_var._parameters.WydOW = 0.003; + _g4a2_var._parameters.mxrOW = 0; + _g4a2_var._parameters.mxlOW = 0; + _g4a2_var._parameters.myuOW = 0; + _g4a2_var._parameters.mydOW = 0; + _g4a2_var._parameters.rwallthick = 0.001; + _g4a2_var._parameters.lwallthick = 0.001; + _g4a2_var._parameters.uwallthick = 0.001; + _g4a2_var._parameters.dwallthick = 0.001; + + + /* component g4a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a2_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_g4a2_var._rotation_absolute, tr1, _g4a2_var._rotation_relative); + _g4a2_var._rotation_is_identity = rot_test_identity(_g4a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _g4a2_var._position_absolute); + _g4a2_var._position_relative = rot_apply(_g4a2_var._rotation_absolute, tc1); + } /* g4a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute); + instrument->_position_absolute[45] = _g4a2_var._position_absolute; + instrument->_position_relative[45] = _g4a2_var._position_relative; + _g4a2_var._position_relative_is_zero = coords_test_zero(_g4a2_var._position_relative); + instrument->counter_N[45] = instrument->counter_P[45] = instrument->counter_P2[45] = 0; + instrument->counter_AbsorbProp[45]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0044_g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0044_g4a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a2_setpos */ + +/* component g4a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a3_setpos] component g4a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a3_var._name, "g4a3", 16384); + stracpy(_g4a3_var._type, "Guide_four_side", 16384); + _g4a3_var._index=46; + int current_setpos_index = 46; + _g4a3_var._parameters.RIreflect[0]='\0'; + _g4a3_var._parameters.LIreflect[0]='\0'; + _g4a3_var._parameters.UIreflect[0]='\0'; + _g4a3_var._parameters.DIreflect[0]='\0'; + _g4a3_var._parameters.ROreflect[0]='\0'; + _g4a3_var._parameters.LOreflect[0]='\0'; + _g4a3_var._parameters.UOreflect[0]='\0'; + _g4a3_var._parameters.DOreflect[0]='\0'; + _g4a3_var._parameters.w1l = 0.04004; + _g4a3_var._parameters.w2l = 0.04004; + _g4a3_var._parameters.linwl = 0; + _g4a3_var._parameters.loutwl = 0; + _g4a3_var._parameters.w1r = 0.04004; + _g4a3_var._parameters.w2r = 0.04004; + _g4a3_var._parameters.linwr = 0.0; + _g4a3_var._parameters.loutwr = 0; + _g4a3_var._parameters.h1u = 0.037165; + _g4a3_var._parameters.h2u = 0.037165; + _g4a3_var._parameters.linhu = 0.0; + _g4a3_var._parameters.louthu = 0; + _g4a3_var._parameters.h1d = 0.037165; + _g4a3_var._parameters.h2d = 0.037165; + _g4a3_var._parameters.linhd = 0.0; + _g4a3_var._parameters.louthd = 0; + _g4a3_var._parameters.l = 2.4252499999999984; + _g4a3_var._parameters.R0 = 0.99; + _g4a3_var._parameters.Qcxl = 0.0221; + _g4a3_var._parameters.Qcxr = 0.0221; + _g4a3_var._parameters.Qcyu = 0.023; + _g4a3_var._parameters.Qcyd = 0.023; + _g4a3_var._parameters.alphaxl = 1.75; + _g4a3_var._parameters.alphaxr = 1.75; + _g4a3_var._parameters.alphayu = 1.8; + _g4a3_var._parameters.alphayd = 1.8; + _g4a3_var._parameters.Wxr = 0.015; + _g4a3_var._parameters.Wxl = 0.015; + _g4a3_var._parameters.Wyu = 0.015; + _g4a3_var._parameters.Wyd = 0.015; + _g4a3_var._parameters.mxr = 2.5; + _g4a3_var._parameters.mxl = 2.5; + _g4a3_var._parameters.myu = 2; + _g4a3_var._parameters.myd = 2; + _g4a3_var._parameters.QcxrOW = 0.0217; + _g4a3_var._parameters.QcxlOW = 0.0217; + _g4a3_var._parameters.QcyuOW = 0.0217; + _g4a3_var._parameters.QcydOW = 0.0217; + _g4a3_var._parameters.alphaxlOW = 6.07; + _g4a3_var._parameters.alphaxrOW = 6.07; + _g4a3_var._parameters.alphayuOW = 6.07; + _g4a3_var._parameters.alphaydOW = 6.07; + _g4a3_var._parameters.WxrOW = 0.003; + _g4a3_var._parameters.WxlOW = 0.003; + _g4a3_var._parameters.WyuOW = 0.003; + _g4a3_var._parameters.WydOW = 0.003; + _g4a3_var._parameters.mxrOW = 0; + _g4a3_var._parameters.mxlOW = 0; + _g4a3_var._parameters.myuOW = 0; + _g4a3_var._parameters.mydOW = 0; + _g4a3_var._parameters.rwallthick = 0.001; + _g4a3_var._parameters.lwallthick = 0.001; + _g4a3_var._parameters.uwallthick = 0.001; + _g4a3_var._parameters.dwallthick = 0.001; + + + /* component g4a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a3_var._rotation_absolute); + rot_transpose(_g4a2_var._rotation_absolute, tr1); + rot_mul(_g4a3_var._rotation_absolute, tr1, _g4a3_var._rotation_relative); + _g4a3_var._rotation_is_identity = rot_test_identity(_g4a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 21.25025); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a2_var._position_absolute, _g4a3_var._position_absolute); + _g4a3_var._position_relative = rot_apply(_g4a3_var._rotation_absolute, tc1); + } /* g4a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute); + instrument->_position_absolute[46] = _g4a3_var._position_absolute; + instrument->_position_relative[46] = _g4a3_var._position_relative; + _g4a3_var._position_relative_is_zero = coords_test_zero(_g4a3_var._position_relative); + instrument->counter_N[46] = instrument->counter_P[46] = instrument->counter_P2[46] = 0; + instrument->counter_AbsorbProp[46]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0045_g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "l", "0", "2.4252499999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_g4a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a3_setpos */ + +/* component fo4_position=Arm() SETTING, POSITION/ROTATION */ +int _fo4_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo4_position_setpos] component fo4_position=Arm() SETTING [Arm:0]"); + stracpy(_fo4_position_var._name, "fo4_position", 16384); + stracpy(_fo4_position_var._type, "Arm", 16384); + _fo4_position_var._index=47; + int current_setpos_index = 47; + /* component fo4_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo4_position_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo4_position_var._rotation_absolute, tr1, _fo4_position_var._rotation_relative); + _fo4_position_var._rotation_is_identity = rot_test_identity(_fo4_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6855); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo4_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo4_position_var._position_absolute); + _fo4_position_var._position_relative = rot_apply(_fo4_position_var._rotation_absolute, tc1); + } /* fo4_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute); + instrument->_position_absolute[47] = _fo4_position_var._position_absolute; + instrument->_position_relative[47] = _fo4_position_var._position_relative; + _fo4_position_var._position_relative_is_zero = coords_test_zero(_fo4_position_var._position_relative); + instrument->counter_N[47] = instrument->counter_P[47] = instrument->counter_P2[47] = 0; + instrument->counter_AbsorbProp[47]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0046_fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo4_position_setpos */ + +/* component fo_chopper_4=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_4_setpos] component fo_chopper_4=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_4_var._name, "fo_chopper_4", 16384); + stracpy(_fo_chopper_4_var._type, "MultiDiskChopper", 16384); + _fo_chopper_4_var._index=48; + int current_setpos_index = 48; + if("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" && strlen("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998")) + stracpy(_fo_chopper_4_var._parameters.slit_center, "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" ? "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_center[0]='\0'; + if("32.98;31.82;30.74;29.27;28.77;26.76" && strlen("32.98;31.82;30.74;29.27;28.77;26.76")) + stracpy(_fo_chopper_4_var._parameters.slit_width, "32.98;31.82;30.74;29.27;28.77;26.76" ? "32.98;31.82;30.74;29.27;28.77;26.76" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_width[0]='\0'; + _fo_chopper_4_var._parameters.nslits = 6; + _fo_chopper_4_var._parameters.delta_y = -0.7075; + _fo_chopper_4_var._parameters.nu = -14.0; + _fo_chopper_4_var._parameters.nrev = 0; + _fo_chopper_4_var._parameters.ratio = 1; + _fo_chopper_4_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_4; + _fo_chopper_4_var._parameters.delay = 0; + _fo_chopper_4_var._parameters.isfirst = 0; + _fo_chopper_4_var._parameters.phase = fo4_phase; + _fo_chopper_4_var._parameters.radius = 0.75; + _fo_chopper_4_var._parameters.equal = 0; + _fo_chopper_4_var._parameters.abs_out = 0; + _fo_chopper_4_var._parameters.verbose = 0; + + + /* component fo_chopper_4=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo4_position_var._rotation_absolute, _fo_chopper_4_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_4_var._rotation_absolute, tr1, _fo_chopper_4_var._rotation_relative); + _fo_chopper_4_var._rotation_is_identity = rot_test_identity(_fo_chopper_4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo4_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_4_var._position_absolute = coords_add(_fo4_position_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo_chopper_4_var._position_absolute); + _fo_chopper_4_var._position_relative = rot_apply(_fo_chopper_4_var._rotation_absolute, tc1); + } /* fo_chopper_4=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute); + instrument->_position_absolute[48] = _fo_chopper_4_var._position_absolute; + instrument->_position_relative[48] = _fo_chopper_4_var._position_relative; + _fo_chopper_4_var._position_relative_is_zero = coords_test_zero(_fo_chopper_4_var._position_relative); + instrument->counter_N[48] = instrument->counter_P[48] = instrument->counter_P2[48] = 0; + instrument->counter_AbsorbProp[48]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0047_fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "slit_center", "0 180", "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", "char*"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "slit_width", "10 20", "32.98;31.82;30.74;29.27;28.77;26.76", "char*"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_4","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "phase", "0", "fo4_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_4_setpos */ + +/* component g4b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b1_setpos] component g4b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b1_var._name, "g4b1", 16384); + stracpy(_g4b1_var._type, "Guide_four_side", 16384); + _g4b1_var._index=49; + int current_setpos_index = 49; + _g4b1_var._parameters.RIreflect[0]='\0'; + _g4b1_var._parameters.LIreflect[0]='\0'; + _g4b1_var._parameters.UIreflect[0]='\0'; + _g4b1_var._parameters.DIreflect[0]='\0'; + _g4b1_var._parameters.ROreflect[0]='\0'; + _g4b1_var._parameters.LOreflect[0]='\0'; + _g4b1_var._parameters.UOreflect[0]='\0'; + _g4b1_var._parameters.DOreflect[0]='\0'; + _g4b1_var._parameters.w1l = 0.04004; + _g4b1_var._parameters.w2l = 0.04004; + _g4b1_var._parameters.linwl = 0; + _g4b1_var._parameters.loutwl = 0; + _g4b1_var._parameters.w1r = 0.04004; + _g4b1_var._parameters.w2r = 0.04004; + _g4b1_var._parameters.linwr = 0.0; + _g4b1_var._parameters.loutwr = 0; + _g4b1_var._parameters.h1u = 0.037165; + _g4b1_var._parameters.h2u = 0.037165; + _g4b1_var._parameters.linhu = 0.0; + _g4b1_var._parameters.louthu = 0; + _g4b1_var._parameters.h1d = 0.037165; + _g4b1_var._parameters.h2d = 0.037165; + _g4b1_var._parameters.linhd = 0.0; + _g4b1_var._parameters.louthd = 0; + _g4b1_var._parameters.l = 0.5565999999999995; + _g4b1_var._parameters.R0 = 0.99; + _g4b1_var._parameters.Qcxl = 0.0221; + _g4b1_var._parameters.Qcxr = 0.0221; + _g4b1_var._parameters.Qcyu = 0.023; + _g4b1_var._parameters.Qcyd = 0.023; + _g4b1_var._parameters.alphaxl = 1.75; + _g4b1_var._parameters.alphaxr = 1.75; + _g4b1_var._parameters.alphayu = 1.8; + _g4b1_var._parameters.alphayd = 1.8; + _g4b1_var._parameters.Wxr = 0.015; + _g4b1_var._parameters.Wxl = 0.015; + _g4b1_var._parameters.Wyu = 0.015; + _g4b1_var._parameters.Wyd = 0.015; + _g4b1_var._parameters.mxr = 2.5; + _g4b1_var._parameters.mxl = 2.5; + _g4b1_var._parameters.myu = 2; + _g4b1_var._parameters.myd = 2; + _g4b1_var._parameters.QcxrOW = 0.0217; + _g4b1_var._parameters.QcxlOW = 0.0217; + _g4b1_var._parameters.QcyuOW = 0.0217; + _g4b1_var._parameters.QcydOW = 0.0217; + _g4b1_var._parameters.alphaxlOW = 6.07; + _g4b1_var._parameters.alphaxrOW = 6.07; + _g4b1_var._parameters.alphayuOW = 6.07; + _g4b1_var._parameters.alphaydOW = 6.07; + _g4b1_var._parameters.WxrOW = 0.003; + _g4b1_var._parameters.WxlOW = 0.003; + _g4b1_var._parameters.WyuOW = 0.003; + _g4b1_var._parameters.WydOW = 0.003; + _g4b1_var._parameters.mxrOW = 0; + _g4b1_var._parameters.mxlOW = 0; + _g4b1_var._parameters.myuOW = 0; + _g4b1_var._parameters.mydOW = 0; + _g4b1_var._parameters.rwallthick = 0.001; + _g4b1_var._parameters.lwallthick = 0.001; + _g4b1_var._parameters.uwallthick = 0.001; + _g4b1_var._parameters.dwallthick = 0.001; + + + /* component g4b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b1_var._rotation_absolute); + rot_transpose(_fo_chopper_4_var._rotation_absolute, tr1); + rot_mul(_g4b1_var._rotation_absolute, tr1, _g4b1_var._rotation_relative); + _g4b1_var._rotation_is_identity = rot_test_identity(_g4b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6955); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_4_var._position_absolute, _g4b1_var._position_absolute); + _g4b1_var._position_relative = rot_apply(_g4b1_var._rotation_absolute, tc1); + } /* g4b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute); + instrument->_position_absolute[49] = _g4b1_var._position_absolute; + instrument->_position_relative[49] = _g4b1_var._position_relative; + _g4b1_var._position_relative_is_zero = coords_test_zero(_g4b1_var._position_relative); + instrument->counter_N[49] = instrument->counter_P[49] = instrument->counter_P2[49] = 0; + instrument->counter_AbsorbProp[49]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0048_g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "l", "0", "0.5565999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0048_g4b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b1_setpos */ + +/* component g4b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b2_setpos] component g4b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b2_var._name, "g4b2", 16384); + stracpy(_g4b2_var._type, "Guide_four_side", 16384); + _g4b2_var._index=50; + int current_setpos_index = 50; + _g4b2_var._parameters.RIreflect[0]='\0'; + _g4b2_var._parameters.LIreflect[0]='\0'; + _g4b2_var._parameters.UIreflect[0]='\0'; + _g4b2_var._parameters.DIreflect[0]='\0'; + _g4b2_var._parameters.ROreflect[0]='\0'; + _g4b2_var._parameters.LOreflect[0]='\0'; + _g4b2_var._parameters.UOreflect[0]='\0'; + _g4b2_var._parameters.DOreflect[0]='\0'; + _g4b2_var._parameters.w1l = 0.04004; + _g4b2_var._parameters.w2l = 0.04004; + _g4b2_var._parameters.linwl = 0; + _g4b2_var._parameters.loutwl = 0; + _g4b2_var._parameters.w1r = 0.04004; + _g4b2_var._parameters.w2r = 0.04004; + _g4b2_var._parameters.linwr = 0.0; + _g4b2_var._parameters.loutwr = 0; + _g4b2_var._parameters.h1u = 0.037165; + _g4b2_var._parameters.h2u = 0.037165; + _g4b2_var._parameters.linhu = 0.0; + _g4b2_var._parameters.louthu = 0; + _g4b2_var._parameters.h1d = 0.037165; + _g4b2_var._parameters.h2d = 0.037165; + _g4b2_var._parameters.linhd = 0.0; + _g4b2_var._parameters.louthd = 0; + _g4b2_var._parameters.l = 1.7800000000000011; + _g4b2_var._parameters.R0 = 0.99; + _g4b2_var._parameters.Qcxl = 0.0221; + _g4b2_var._parameters.Qcxr = 0.0221; + _g4b2_var._parameters.Qcyu = 0.023; + _g4b2_var._parameters.Qcyd = 0.023; + _g4b2_var._parameters.alphaxl = 1.75; + _g4b2_var._parameters.alphaxr = 1.75; + _g4b2_var._parameters.alphayu = 1.8; + _g4b2_var._parameters.alphayd = 1.8; + _g4b2_var._parameters.Wxr = 0.015; + _g4b2_var._parameters.Wxl = 0.015; + _g4b2_var._parameters.Wyu = 0.015; + _g4b2_var._parameters.Wyd = 0.015; + _g4b2_var._parameters.mxr = 3.0; + _g4b2_var._parameters.mxl = 3.0; + _g4b2_var._parameters.myu = 2; + _g4b2_var._parameters.myd = 2; + _g4b2_var._parameters.QcxrOW = 0.0217; + _g4b2_var._parameters.QcxlOW = 0.0217; + _g4b2_var._parameters.QcyuOW = 0.0217; + _g4b2_var._parameters.QcydOW = 0.0217; + _g4b2_var._parameters.alphaxlOW = 6.07; + _g4b2_var._parameters.alphaxrOW = 6.07; + _g4b2_var._parameters.alphayuOW = 6.07; + _g4b2_var._parameters.alphaydOW = 6.07; + _g4b2_var._parameters.WxrOW = 0.003; + _g4b2_var._parameters.WxlOW = 0.003; + _g4b2_var._parameters.WyuOW = 0.003; + _g4b2_var._parameters.WydOW = 0.003; + _g4b2_var._parameters.mxrOW = 0; + _g4b2_var._parameters.mxlOW = 0; + _g4b2_var._parameters.myuOW = 0; + _g4b2_var._parameters.mydOW = 0; + _g4b2_var._parameters.rwallthick = 0.001; + _g4b2_var._parameters.lwallthick = 0.001; + _g4b2_var._parameters.uwallthick = 0.001; + _g4b2_var._parameters.dwallthick = 0.001; + + + /* component g4b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b2_var._rotation_absolute); + rot_transpose(_g4b1_var._rotation_absolute, tr1); + rot_mul(_g4b2_var._rotation_absolute, tr1, _g4b2_var._rotation_relative); + _g4b2_var._rotation_is_identity = rot_test_identity(_g4b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 24.2561); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b1_var._position_absolute, _g4b2_var._position_absolute); + _g4b2_var._position_relative = rot_apply(_g4b2_var._rotation_absolute, tc1); + } /* g4b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute); + instrument->_position_absolute[50] = _g4b2_var._position_absolute; + instrument->_position_relative[50] = _g4b2_var._position_relative; + _g4b2_var._position_relative_is_zero = coords_test_zero(_g4b2_var._position_relative); + instrument->counter_N[50] = instrument->counter_P[50] = instrument->counter_P2[50] = 0; + instrument->counter_AbsorbProp[50]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0049_g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "l", "0", "1.7800000000000011","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_g4b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b2_setpos */ + +/* component g4b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b3_setpos] component g4b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b3_var._name, "g4b3", 16384); + stracpy(_g4b3_var._type, "Guide_four_side", 16384); + _g4b3_var._index=51; + int current_setpos_index = 51; + _g4b3_var._parameters.RIreflect[0]='\0'; + _g4b3_var._parameters.LIreflect[0]='\0'; + _g4b3_var._parameters.UIreflect[0]='\0'; + _g4b3_var._parameters.DIreflect[0]='\0'; + _g4b3_var._parameters.ROreflect[0]='\0'; + _g4b3_var._parameters.LOreflect[0]='\0'; + _g4b3_var._parameters.UOreflect[0]='\0'; + _g4b3_var._parameters.DOreflect[0]='\0'; + _g4b3_var._parameters.w1l = 0.04004; + _g4b3_var._parameters.w2l = 0.04004; + _g4b3_var._parameters.linwl = 0; + _g4b3_var._parameters.loutwl = 0; + _g4b3_var._parameters.w1r = 0.04004; + _g4b3_var._parameters.w2r = 0.04004; + _g4b3_var._parameters.linwr = 0.0; + _g4b3_var._parameters.loutwr = 0; + _g4b3_var._parameters.h1u = 0.037165; + _g4b3_var._parameters.h2u = 0.037165; + _g4b3_var._parameters.linhu = 0.0; + _g4b3_var._parameters.louthu = 0; + _g4b3_var._parameters.h1d = 0.037165; + _g4b3_var._parameters.h2d = 0.037165; + _g4b3_var._parameters.linhd = 0.0; + _g4b3_var._parameters.louthd = 0; + _g4b3_var._parameters.l = 2.1380000000000017; + _g4b3_var._parameters.R0 = 0.99; + _g4b3_var._parameters.Qcxl = 0.0217; + _g4b3_var._parameters.Qcxr = 0.0217; + _g4b3_var._parameters.Qcyu = 0.023; + _g4b3_var._parameters.Qcyd = 0.023; + _g4b3_var._parameters.alphaxl = 2.5; + _g4b3_var._parameters.alphaxr = 2.5; + _g4b3_var._parameters.alphayu = 1.8; + _g4b3_var._parameters.alphayd = 1.8; + _g4b3_var._parameters.Wxr = 0.015; + _g4b3_var._parameters.Wxl = 0.015; + _g4b3_var._parameters.Wyu = 0.015; + _g4b3_var._parameters.Wyd = 0.015; + _g4b3_var._parameters.mxr = 3.5; + _g4b3_var._parameters.mxl = 3.5; + _g4b3_var._parameters.myu = 2; + _g4b3_var._parameters.myd = 2; + _g4b3_var._parameters.QcxrOW = 0.0217; + _g4b3_var._parameters.QcxlOW = 0.0217; + _g4b3_var._parameters.QcyuOW = 0.0217; + _g4b3_var._parameters.QcydOW = 0.0217; + _g4b3_var._parameters.alphaxlOW = 6.07; + _g4b3_var._parameters.alphaxrOW = 6.07; + _g4b3_var._parameters.alphayuOW = 6.07; + _g4b3_var._parameters.alphaydOW = 6.07; + _g4b3_var._parameters.WxrOW = 0.003; + _g4b3_var._parameters.WxlOW = 0.003; + _g4b3_var._parameters.WyuOW = 0.003; + _g4b3_var._parameters.WydOW = 0.003; + _g4b3_var._parameters.mxrOW = 0; + _g4b3_var._parameters.mxlOW = 0; + _g4b3_var._parameters.myuOW = 0; + _g4b3_var._parameters.mydOW = 0; + _g4b3_var._parameters.rwallthick = 0.001; + _g4b3_var._parameters.lwallthick = 0.001; + _g4b3_var._parameters.uwallthick = 0.001; + _g4b3_var._parameters.dwallthick = 0.001; + + + /* component g4b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b3_var._rotation_absolute); + rot_transpose(_g4b2_var._rotation_absolute, tr1); + rot_mul(_g4b3_var._rotation_absolute, tr1, _g4b3_var._rotation_relative); + _g4b3_var._rotation_is_identity = rot_test_identity(_g4b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 26.0366); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b2_var._position_absolute, _g4b3_var._position_absolute); + _g4b3_var._position_relative = rot_apply(_g4b3_var._rotation_absolute, tc1); + } /* g4b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute); + instrument->_position_absolute[51] = _g4b3_var._position_absolute; + instrument->_position_relative[51] = _g4b3_var._position_relative; + _g4b3_var._position_relative_is_zero = coords_test_zero(_g4b3_var._position_relative); + instrument->counter_N[51] = instrument->counter_P[51] = instrument->counter_P2[51] = 0; + instrument->counter_AbsorbProp[51]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0050_g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "l", "0", "2.1380000000000017","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g4b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b3_setpos */ + +/* component g4b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b4_setpos] component g4b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b4_var._name, "g4b4", 16384); + stracpy(_g4b4_var._type, "Guide_four_side", 16384); + _g4b4_var._index=52; + int current_setpos_index = 52; + _g4b4_var._parameters.RIreflect[0]='\0'; + _g4b4_var._parameters.LIreflect[0]='\0'; + _g4b4_var._parameters.UIreflect[0]='\0'; + _g4b4_var._parameters.DIreflect[0]='\0'; + _g4b4_var._parameters.ROreflect[0]='\0'; + _g4b4_var._parameters.LOreflect[0]='\0'; + _g4b4_var._parameters.UOreflect[0]='\0'; + _g4b4_var._parameters.DOreflect[0]='\0'; + _g4b4_var._parameters.w1l = 0.04004; + _g4b4_var._parameters.w2l = 0.04004; + _g4b4_var._parameters.linwl = 0; + _g4b4_var._parameters.loutwl = 0; + _g4b4_var._parameters.w1r = 0.04004; + _g4b4_var._parameters.w2r = 0.04004; + _g4b4_var._parameters.linwr = 0.0; + _g4b4_var._parameters.loutwr = 0; + _g4b4_var._parameters.h1u = 0.037165; + _g4b4_var._parameters.h2u = 0.037165; + _g4b4_var._parameters.linhu = 0.0; + _g4b4_var._parameters.louthu = 0; + _g4b4_var._parameters.h1d = 0.037165; + _g4b4_var._parameters.h2d = 0.037165; + _g4b4_var._parameters.linhd = 0.0; + _g4b4_var._parameters.louthd = 0; + _g4b4_var._parameters.l = 1.9997499999999988; + _g4b4_var._parameters.R0 = 0.99; + _g4b4_var._parameters.Qcxl = 0.0217; + _g4b4_var._parameters.Qcxr = 0.0217; + _g4b4_var._parameters.Qcyu = 0.023; + _g4b4_var._parameters.Qcyd = 0.023; + _g4b4_var._parameters.alphaxl = 2.5; + _g4b4_var._parameters.alphaxr = 2.5; + _g4b4_var._parameters.alphayu = 1.8; + _g4b4_var._parameters.alphayd = 1.8; + _g4b4_var._parameters.Wxr = 0.015; + _g4b4_var._parameters.Wxl = 0.015; + _g4b4_var._parameters.Wyu = 0.015; + _g4b4_var._parameters.Wyd = 0.015; + _g4b4_var._parameters.mxr = 3.5; + _g4b4_var._parameters.mxl = 3.5; + _g4b4_var._parameters.myu = 2; + _g4b4_var._parameters.myd = 2; + _g4b4_var._parameters.QcxrOW = 0.0217; + _g4b4_var._parameters.QcxlOW = 0.0217; + _g4b4_var._parameters.QcyuOW = 0.0217; + _g4b4_var._parameters.QcydOW = 0.0217; + _g4b4_var._parameters.alphaxlOW = 6.07; + _g4b4_var._parameters.alphaxrOW = 6.07; + _g4b4_var._parameters.alphayuOW = 6.07; + _g4b4_var._parameters.alphaydOW = 6.07; + _g4b4_var._parameters.WxrOW = 0.003; + _g4b4_var._parameters.WxlOW = 0.003; + _g4b4_var._parameters.WyuOW = 0.003; + _g4b4_var._parameters.WydOW = 0.003; + _g4b4_var._parameters.mxrOW = 0; + _g4b4_var._parameters.mxlOW = 0; + _g4b4_var._parameters.myuOW = 0; + _g4b4_var._parameters.mydOW = 0; + _g4b4_var._parameters.rwallthick = 0.001; + _g4b4_var._parameters.lwallthick = 0.001; + _g4b4_var._parameters.uwallthick = 0.001; + _g4b4_var._parameters.dwallthick = 0.001; + + + /* component g4b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b4_var._rotation_absolute); + rot_transpose(_g4b3_var._rotation_absolute, tr1); + rot_mul(_g4b4_var._rotation_absolute, tr1, _g4b4_var._rotation_relative); + _g4b4_var._rotation_is_identity = rot_test_identity(_g4b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 28.1786); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b3_var._position_absolute, _g4b4_var._position_absolute); + _g4b4_var._position_relative = rot_apply(_g4b4_var._rotation_absolute, tc1); + } /* g4b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute); + instrument->_position_absolute[52] = _g4b4_var._position_absolute; + instrument->_position_relative[52] = _g4b4_var._position_relative; + _g4b4_var._position_relative_is_zero = coords_test_zero(_g4b4_var._position_relative); + instrument->counter_N[52] = instrument->counter_P[52] = instrument->counter_P2[52] = 0; + instrument->counter_AbsorbProp[52]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0051_g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b4_setpos */ + +/* component g4b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b5_setpos] component g4b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b5_var._name, "g4b5", 16384); + stracpy(_g4b5_var._type, "Guide_four_side", 16384); + _g4b5_var._index=53; + int current_setpos_index = 53; + _g4b5_var._parameters.RIreflect[0]='\0'; + _g4b5_var._parameters.LIreflect[0]='\0'; + _g4b5_var._parameters.UIreflect[0]='\0'; + _g4b5_var._parameters.DIreflect[0]='\0'; + _g4b5_var._parameters.ROreflect[0]='\0'; + _g4b5_var._parameters.LOreflect[0]='\0'; + _g4b5_var._parameters.UOreflect[0]='\0'; + _g4b5_var._parameters.DOreflect[0]='\0'; + _g4b5_var._parameters.w1l = 0.04004; + _g4b5_var._parameters.w2l = 0.04004; + _g4b5_var._parameters.linwl = 0; + _g4b5_var._parameters.loutwl = 0; + _g4b5_var._parameters.w1r = 0.04004; + _g4b5_var._parameters.w2r = 0.04004; + _g4b5_var._parameters.linwr = 0.0; + _g4b5_var._parameters.loutwr = 0; + _g4b5_var._parameters.h1u = 0.037165; + _g4b5_var._parameters.h2u = 0.037165; + _g4b5_var._parameters.linhu = 0.0; + _g4b5_var._parameters.louthu = 0; + _g4b5_var._parameters.h1d = 0.037165; + _g4b5_var._parameters.h2d = 0.037165; + _g4b5_var._parameters.linhd = 0.0; + _g4b5_var._parameters.louthd = 0; + _g4b5_var._parameters.l = 1.4049499999999995; + _g4b5_var._parameters.R0 = 0.99; + _g4b5_var._parameters.Qcxl = 0.0221; + _g4b5_var._parameters.Qcxr = 0.0221; + _g4b5_var._parameters.Qcyu = 0.023; + _g4b5_var._parameters.Qcyd = 0.023; + _g4b5_var._parameters.alphaxl = 1.75; + _g4b5_var._parameters.alphaxr = 1.75; + _g4b5_var._parameters.alphayu = 1.8; + _g4b5_var._parameters.alphayd = 1.8; + _g4b5_var._parameters.Wxr = 0.015; + _g4b5_var._parameters.Wxl = 0.015; + _g4b5_var._parameters.Wyu = 0.015; + _g4b5_var._parameters.Wyd = 0.015; + _g4b5_var._parameters.mxr = 3; + _g4b5_var._parameters.mxl = 3; + _g4b5_var._parameters.myu = 2; + _g4b5_var._parameters.myd = 2; + _g4b5_var._parameters.QcxrOW = 0.0217; + _g4b5_var._parameters.QcxlOW = 0.0217; + _g4b5_var._parameters.QcyuOW = 0.0217; + _g4b5_var._parameters.QcydOW = 0.0217; + _g4b5_var._parameters.alphaxlOW = 6.07; + _g4b5_var._parameters.alphaxrOW = 6.07; + _g4b5_var._parameters.alphayuOW = 6.07; + _g4b5_var._parameters.alphaydOW = 6.07; + _g4b5_var._parameters.WxrOW = 0.003; + _g4b5_var._parameters.WxlOW = 0.003; + _g4b5_var._parameters.WyuOW = 0.003; + _g4b5_var._parameters.WydOW = 0.003; + _g4b5_var._parameters.mxrOW = 0; + _g4b5_var._parameters.mxlOW = 0; + _g4b5_var._parameters.myuOW = 0; + _g4b5_var._parameters.mydOW = 0; + _g4b5_var._parameters.rwallthick = 0.001; + _g4b5_var._parameters.lwallthick = 0.001; + _g4b5_var._parameters.uwallthick = 0.001; + _g4b5_var._parameters.dwallthick = 0.001; + + + /* component g4b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b5_var._rotation_absolute); + rot_transpose(_g4b4_var._rotation_absolute, tr1); + rot_mul(_g4b5_var._rotation_absolute, tr1, _g4b5_var._rotation_relative); + _g4b5_var._rotation_is_identity = rot_test_identity(_g4b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 30.17885); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b4_var._position_absolute, _g4b5_var._position_absolute); + _g4b5_var._position_relative = rot_apply(_g4b5_var._rotation_absolute, tc1); + } /* g4b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute); + instrument->_position_absolute[53] = _g4b5_var._position_absolute; + instrument->_position_relative[53] = _g4b5_var._position_relative; + _g4b5_var._position_relative_is_zero = coords_test_zero(_g4b5_var._position_relative); + instrument->counter_N[53] = instrument->counter_P[53] = instrument->counter_P2[53] = 0; + instrument->counter_AbsorbProp[53]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0052_g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "l", "0", "1.4049499999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0052_g4b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b5_setpos */ + +/* component g4b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b6_setpos] component g4b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b6_var._name, "g4b6", 16384); + stracpy(_g4b6_var._type, "Guide_four_side", 16384); + _g4b6_var._index=54; + int current_setpos_index = 54; + _g4b6_var._parameters.RIreflect[0]='\0'; + _g4b6_var._parameters.LIreflect[0]='\0'; + _g4b6_var._parameters.UIreflect[0]='\0'; + _g4b6_var._parameters.DIreflect[0]='\0'; + _g4b6_var._parameters.ROreflect[0]='\0'; + _g4b6_var._parameters.LOreflect[0]='\0'; + _g4b6_var._parameters.UOreflect[0]='\0'; + _g4b6_var._parameters.DOreflect[0]='\0'; + _g4b6_var._parameters.w1l = 0.04004; + _g4b6_var._parameters.w2l = 0.04004; + _g4b6_var._parameters.linwl = 0; + _g4b6_var._parameters.loutwl = 0; + _g4b6_var._parameters.w1r = 0.04004; + _g4b6_var._parameters.w2r = 0.04004; + _g4b6_var._parameters.linwr = 0.0; + _g4b6_var._parameters.loutwr = 0; + _g4b6_var._parameters.h1u = 0.037165; + _g4b6_var._parameters.h2u = 0.037165; + _g4b6_var._parameters.linhu = 0.0; + _g4b6_var._parameters.louthu = 0; + _g4b6_var._parameters.h1d = 0.037165; + _g4b6_var._parameters.h2d = 0.037165; + _g4b6_var._parameters.linhd = 0.0; + _g4b6_var._parameters.louthd = 0; + _g4b6_var._parameters.l = 0.4106999999999985; + _g4b6_var._parameters.R0 = 0.99; + _g4b6_var._parameters.Qcxl = 0.0221; + _g4b6_var._parameters.Qcxr = 0.0221; + _g4b6_var._parameters.Qcyu = 0.023; + _g4b6_var._parameters.Qcyd = 0.023; + _g4b6_var._parameters.alphaxl = 1.75; + _g4b6_var._parameters.alphaxr = 1.75; + _g4b6_var._parameters.alphayu = 1.8; + _g4b6_var._parameters.alphayd = 1.8; + _g4b6_var._parameters.Wxr = 0.015; + _g4b6_var._parameters.Wxl = 0.015; + _g4b6_var._parameters.Wyu = 0.015; + _g4b6_var._parameters.Wyd = 0.015; + _g4b6_var._parameters.mxr = 3; + _g4b6_var._parameters.mxl = 3; + _g4b6_var._parameters.myu = 2; + _g4b6_var._parameters.myd = 2; + _g4b6_var._parameters.QcxrOW = 0.0217; + _g4b6_var._parameters.QcxlOW = 0.0217; + _g4b6_var._parameters.QcyuOW = 0.0217; + _g4b6_var._parameters.QcydOW = 0.0217; + _g4b6_var._parameters.alphaxlOW = 6.07; + _g4b6_var._parameters.alphaxrOW = 6.07; + _g4b6_var._parameters.alphayuOW = 6.07; + _g4b6_var._parameters.alphaydOW = 6.07; + _g4b6_var._parameters.WxrOW = 0.003; + _g4b6_var._parameters.WxlOW = 0.003; + _g4b6_var._parameters.WyuOW = 0.003; + _g4b6_var._parameters.WydOW = 0.003; + _g4b6_var._parameters.mxrOW = 0; + _g4b6_var._parameters.mxlOW = 0; + _g4b6_var._parameters.myuOW = 0; + _g4b6_var._parameters.mydOW = 0; + _g4b6_var._parameters.rwallthick = 0.001; + _g4b6_var._parameters.lwallthick = 0.001; + _g4b6_var._parameters.uwallthick = 0.001; + _g4b6_var._parameters.dwallthick = 0.001; + + + /* component g4b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b6_var._rotation_absolute); + rot_transpose(_g4b5_var._rotation_absolute, tr1); + rot_mul(_g4b6_var._rotation_absolute, tr1, _g4b6_var._rotation_relative); + _g4b6_var._rotation_is_identity = rot_test_identity(_g4b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 31.5893); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b5_var._position_absolute, _g4b6_var._position_absolute); + _g4b6_var._position_relative = rot_apply(_g4b6_var._rotation_absolute, tc1); + } /* g4b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute); + instrument->_position_absolute[54] = _g4b6_var._position_absolute; + instrument->_position_relative[54] = _g4b6_var._position_relative; + _g4b6_var._position_relative_is_zero = coords_test_zero(_g4b6_var._position_relative); + instrument->counter_N[54] = instrument->counter_P[54] = instrument->counter_P2[54] = 0; + instrument->counter_AbsorbProp[54]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0053_g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "l", "0", "0.4106999999999985","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b6_setpos */ + +/* component g5a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5a1_setpos] component g5a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5a1_var._name, "g5a1", 16384); + stracpy(_g5a1_var._type, "Guide_four_side", 16384); + _g5a1_var._index=55; + int current_setpos_index = 55; + _g5a1_var._parameters.RIreflect[0]='\0'; + _g5a1_var._parameters.LIreflect[0]='\0'; + _g5a1_var._parameters.UIreflect[0]='\0'; + _g5a1_var._parameters.DIreflect[0]='\0'; + _g5a1_var._parameters.ROreflect[0]='\0'; + _g5a1_var._parameters.LOreflect[0]='\0'; + _g5a1_var._parameters.UOreflect[0]='\0'; + _g5a1_var._parameters.DOreflect[0]='\0'; + _g5a1_var._parameters.w1l = 0.04004; + _g5a1_var._parameters.w2l = 0.04004; + _g5a1_var._parameters.linwl = 0; + _g5a1_var._parameters.loutwl = 0; + _g5a1_var._parameters.w1r = 0.04004; + _g5a1_var._parameters.w2r = 0.04004; + _g5a1_var._parameters.linwr = 0.0; + _g5a1_var._parameters.loutwr = 0; + _g5a1_var._parameters.h1u = 0.037165; + _g5a1_var._parameters.h2u = 0.002; + _g5a1_var._parameters.linhu = 18.0; + _g5a1_var._parameters.louthu = 17.005499999999998; + _g5a1_var._parameters.h1d = 0.037165; + _g5a1_var._parameters.h2d = 0.002; + _g5a1_var._parameters.linhd = 18.0; + _g5a1_var._parameters.louthd = 17.005499999999998; + _g5a1_var._parameters.l = 0.9945000000000022; + _g5a1_var._parameters.R0 = 0.99; + _g5a1_var._parameters.Qcxl = 0.023; + _g5a1_var._parameters.Qcxr = 0.023; + _g5a1_var._parameters.Qcyu = 0.023; + _g5a1_var._parameters.Qcyd = 0.023; + _g5a1_var._parameters.alphaxl = 1.8; + _g5a1_var._parameters.alphaxr = 1.8; + _g5a1_var._parameters.alphayu = 1.8; + _g5a1_var._parameters.alphayd = 1.8; + _g5a1_var._parameters.Wxr = 0.015; + _g5a1_var._parameters.Wxl = 0.015; + _g5a1_var._parameters.Wyu = 0.015; + _g5a1_var._parameters.Wyd = 0.015; + _g5a1_var._parameters.mxr = 2; + _g5a1_var._parameters.mxl = 2; + _g5a1_var._parameters.myu = 2; + _g5a1_var._parameters.myd = 2; + _g5a1_var._parameters.QcxrOW = 0.0217; + _g5a1_var._parameters.QcxlOW = 0.0217; + _g5a1_var._parameters.QcyuOW = 0.0217; + _g5a1_var._parameters.QcydOW = 0.0217; + _g5a1_var._parameters.alphaxlOW = 6.07; + _g5a1_var._parameters.alphaxrOW = 6.07; + _g5a1_var._parameters.alphayuOW = 6.07; + _g5a1_var._parameters.alphaydOW = 6.07; + _g5a1_var._parameters.WxrOW = 0.003; + _g5a1_var._parameters.WxlOW = 0.003; + _g5a1_var._parameters.WyuOW = 0.003; + _g5a1_var._parameters.WydOW = 0.003; + _g5a1_var._parameters.mxrOW = 0; + _g5a1_var._parameters.mxlOW = 0; + _g5a1_var._parameters.myuOW = 0; + _g5a1_var._parameters.mydOW = 0; + _g5a1_var._parameters.rwallthick = 0.001; + _g5a1_var._parameters.lwallthick = 0.001; + _g5a1_var._parameters.uwallthick = 0.001; + _g5a1_var._parameters.dwallthick = 0.001; + + + /* component g5a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5a1_var._rotation_absolute); + rot_transpose(_g4b6_var._rotation_absolute, tr1); + rot_mul(_g5a1_var._rotation_absolute, tr1, _g5a1_var._rotation_relative); + _g5a1_var._rotation_is_identity = rot_test_identity(_g5a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 32.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b6_var._position_absolute, _g5a1_var._position_absolute); + _g5a1_var._position_relative = rot_apply(_g5a1_var._rotation_absolute, tc1); + } /* g5a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute); + instrument->_position_absolute[55] = _g5a1_var._position_absolute; + instrument->_position_relative[55] = _g5a1_var._position_relative; + _g5a1_var._position_relative_is_zero = coords_test_zero(_g5a1_var._position_relative); + instrument->counter_N[55] = instrument->counter_P[55] = instrument->counter_P2[55] = 0; + instrument->counter_AbsorbProp[55]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0054_g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linhu", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "louthu", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "linhd", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "louthd", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "l", "0", "0.9945000000000022","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g5a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5a1_setpos */ + +/* component fo5_position=Arm() SETTING, POSITION/ROTATION */ +int _fo5_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo5_position_setpos] component fo5_position=Arm() SETTING [Arm:0]"); + stracpy(_fo5_position_var._name, "fo5_position", 16384); + stracpy(_fo5_position_var._type, "Arm", 16384); + _fo5_position_var._index=56; + int current_setpos_index = 56; + /* component fo5_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo5_position_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo5_position_var._rotation_absolute, tr1, _fo5_position_var._rotation_relative); + _fo5_position_var._rotation_is_identity = rot_test_identity(_fo5_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.005); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo5_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo5_position_var._position_absolute); + _fo5_position_var._position_relative = rot_apply(_fo5_position_var._rotation_absolute, tc1); + } /* fo5_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute); + instrument->_position_absolute[56] = _fo5_position_var._position_absolute; + instrument->_position_relative[56] = _fo5_position_var._position_relative; + _fo5_position_var._position_relative_is_zero = coords_test_zero(_fo5_position_var._position_relative); + instrument->counter_N[56] = instrument->counter_P[56] = instrument->counter_P2[56] = 0; + instrument->counter_AbsorbProp[56]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0055_fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo5_position_setpos */ + +/* component fo_chopper_5=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_5_setpos] component fo_chopper_5=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_5_var._name, "fo_chopper_5", 16384); + stracpy(_fo_chopper_5_var._type, "MultiDiskChopper", 16384); + _fo_chopper_5_var._index=57; + int current_setpos_index = 57; + if("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" && strlen("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002")) + stracpy(_fo_chopper_5_var._parameters.slit_center, "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" ? "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_center[0]='\0'; + if("50.81;48.55;45.49;41.32;37.45;37.74" && strlen("50.81;48.55;45.49;41.32;37.45;37.74")) + stracpy(_fo_chopper_5_var._parameters.slit_width, "50.81;48.55;45.49;41.32;37.45;37.74" ? "50.81;48.55;45.49;41.32;37.45;37.74" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_width[0]='\0'; + _fo_chopper_5_var._parameters.nslits = 6; + _fo_chopper_5_var._parameters.delta_y = -0.7075; + _fo_chopper_5_var._parameters.nu = -14.0; + _fo_chopper_5_var._parameters.nrev = 0; + _fo_chopper_5_var._parameters.ratio = 1; + _fo_chopper_5_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_5; + _fo_chopper_5_var._parameters.delay = 0; + _fo_chopper_5_var._parameters.isfirst = 0; + _fo_chopper_5_var._parameters.phase = fo5_phase; + _fo_chopper_5_var._parameters.radius = 0.75; + _fo_chopper_5_var._parameters.equal = 0; + _fo_chopper_5_var._parameters.abs_out = 0; + _fo_chopper_5_var._parameters.verbose = 0; + + + /* component fo_chopper_5=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo5_position_var._rotation_absolute, _fo_chopper_5_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_5_var._rotation_absolute, tr1, _fo_chopper_5_var._rotation_relative); + _fo_chopper_5_var._rotation_is_identity = rot_test_identity(_fo_chopper_5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo5_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_5_var._position_absolute = coords_add(_fo5_position_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo_chopper_5_var._position_absolute); + _fo_chopper_5_var._position_relative = rot_apply(_fo_chopper_5_var._rotation_absolute, tc1); + } /* fo_chopper_5=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute); + instrument->_position_absolute[57] = _fo_chopper_5_var._position_absolute; + instrument->_position_relative[57] = _fo_chopper_5_var._position_relative; + _fo_chopper_5_var._position_relative_is_zero = coords_test_zero(_fo_chopper_5_var._position_relative); + instrument->counter_N[57] = instrument->counter_P[57] = instrument->counter_P2[57] = 0; + instrument->counter_AbsorbProp[57]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0056_fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "slit_center", "0 180", "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "slit_width", "10 20", "50.81;48.55;45.49;41.32;37.45;37.74", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_5","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "phase", "0", "fo5_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_5_setpos */ + +/* component g5b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b1_setpos] component g5b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b1_var._name, "g5b1", 16384); + stracpy(_g5b1_var._type, "Guide_four_side", 16384); + _g5b1_var._index=58; + int current_setpos_index = 58; + _g5b1_var._parameters.RIreflect[0]='\0'; + _g5b1_var._parameters.LIreflect[0]='\0'; + _g5b1_var._parameters.UIreflect[0]='\0'; + _g5b1_var._parameters.DIreflect[0]='\0'; + _g5b1_var._parameters.ROreflect[0]='\0'; + _g5b1_var._parameters.LOreflect[0]='\0'; + _g5b1_var._parameters.UOreflect[0]='\0'; + _g5b1_var._parameters.DOreflect[0]='\0'; + _g5b1_var._parameters.w1l = 0.04004; + _g5b1_var._parameters.w2l = 0.04004; + _g5b1_var._parameters.linwl = 0; + _g5b1_var._parameters.loutwl = 0; + _g5b1_var._parameters.w1r = 0.04004; + _g5b1_var._parameters.w2r = 0.04004; + _g5b1_var._parameters.linwr = 0.0; + _g5b1_var._parameters.loutwr = 0; + _g5b1_var._parameters.h1u = 0.037105; + _g5b1_var._parameters.h2u = 0.002; + _g5b1_var._parameters.linhu = 19.005499999999998; + _g5b1_var._parameters.louthu = 14.994750000000003; + _g5b1_var._parameters.h1d = 0.037105; + _g5b1_var._parameters.h2d = 0.002; + _g5b1_var._parameters.linhd = 19.005499999999998; + _g5b1_var._parameters.louthd = 14.994750000000003; + _g5b1_var._parameters.l = 1.9997499999999988; + _g5b1_var._parameters.R0 = 0.99; + _g5b1_var._parameters.Qcxl = 0.023; + _g5b1_var._parameters.Qcxr = 0.023; + _g5b1_var._parameters.Qcyu = 0.023; + _g5b1_var._parameters.Qcyd = 0.023; + _g5b1_var._parameters.alphaxl = 1.8; + _g5b1_var._parameters.alphaxr = 1.8; + _g5b1_var._parameters.alphayu = 1.8; + _g5b1_var._parameters.alphayd = 1.8; + _g5b1_var._parameters.Wxr = 0.015; + _g5b1_var._parameters.Wxl = 0.015; + _g5b1_var._parameters.Wyu = 0.015; + _g5b1_var._parameters.Wyd = 0.015; + _g5b1_var._parameters.mxr = 2; + _g5b1_var._parameters.mxl = 2; + _g5b1_var._parameters.myu = 2; + _g5b1_var._parameters.myd = 2; + _g5b1_var._parameters.QcxrOW = 0.0217; + _g5b1_var._parameters.QcxlOW = 0.0217; + _g5b1_var._parameters.QcyuOW = 0.0217; + _g5b1_var._parameters.QcydOW = 0.0217; + _g5b1_var._parameters.alphaxlOW = 6.07; + _g5b1_var._parameters.alphaxrOW = 6.07; + _g5b1_var._parameters.alphayuOW = 6.07; + _g5b1_var._parameters.alphaydOW = 6.07; + _g5b1_var._parameters.WxrOW = 0.003; + _g5b1_var._parameters.WxlOW = 0.003; + _g5b1_var._parameters.WyuOW = 0.003; + _g5b1_var._parameters.WydOW = 0.003; + _g5b1_var._parameters.mxrOW = 0; + _g5b1_var._parameters.mxlOW = 0; + _g5b1_var._parameters.myuOW = 0; + _g5b1_var._parameters.mydOW = 0; + _g5b1_var._parameters.rwallthick = 0.001; + _g5b1_var._parameters.lwallthick = 0.001; + _g5b1_var._parameters.uwallthick = 0.001; + _g5b1_var._parameters.dwallthick = 0.001; + + + /* component g5b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b1_var._rotation_absolute); + rot_transpose(_fo_chopper_5_var._rotation_absolute, tr1); + rot_mul(_g5b1_var._rotation_absolute, tr1, _g5b1_var._rotation_relative); + _g5b1_var._rotation_is_identity = rot_test_identity(_g5b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.015499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_5_var._position_absolute, _g5b1_var._position_absolute); + _g5b1_var._position_relative = rot_apply(_g5b1_var._rotation_absolute, tc1); + } /* g5b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute); + instrument->_position_absolute[58] = _g5b1_var._position_absolute; + instrument->_position_relative[58] = _g5b1_var._position_relative; + _g5b1_var._position_relative_is_zero = coords_test_zero(_g5b1_var._position_relative); + instrument->counter_N[58] = instrument->counter_P[58] = instrument->counter_P2[58] = 0; + instrument->counter_AbsorbProp[58]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0057_g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h1u", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linhu", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "louthu", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h1d", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "linhd", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "louthd", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g5b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b1_setpos */ + +/* component g5b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b2_setpos] component g5b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b2_var._name, "g5b2", 16384); + stracpy(_g5b2_var._type, "Guide_four_side", 16384); + _g5b2_var._index=59; + int current_setpos_index = 59; + _g5b2_var._parameters.RIreflect[0]='\0'; + _g5b2_var._parameters.LIreflect[0]='\0'; + _g5b2_var._parameters.UIreflect[0]='\0'; + _g5b2_var._parameters.DIreflect[0]='\0'; + _g5b2_var._parameters.ROreflect[0]='\0'; + _g5b2_var._parameters.LOreflect[0]='\0'; + _g5b2_var._parameters.UOreflect[0]='\0'; + _g5b2_var._parameters.DOreflect[0]='\0'; + _g5b2_var._parameters.w1l = 0.04004; + _g5b2_var._parameters.w2l = 0.04004; + _g5b2_var._parameters.linwl = 0; + _g5b2_var._parameters.loutwl = 0; + _g5b2_var._parameters.w1r = 0.04004; + _g5b2_var._parameters.w2r = 0.04004; + _g5b2_var._parameters.linwr = 0.0; + _g5b2_var._parameters.loutwr = 0; + _g5b2_var._parameters.h1u = 0.036645; + _g5b2_var._parameters.h2u = 0.002; + _g5b2_var._parameters.linhu = 21.00575; + _g5b2_var._parameters.louthu = 12.994950000000003; + _g5b2_var._parameters.h1d = 0.036645; + _g5b2_var._parameters.h2d = 0.002; + _g5b2_var._parameters.linhd = 21.00575; + _g5b2_var._parameters.louthd = 12.994950000000003; + _g5b2_var._parameters.l = 1.999299999999998; + _g5b2_var._parameters.R0 = 0.99; + _g5b2_var._parameters.Qcxl = 0.0221; + _g5b2_var._parameters.Qcxr = 0.0221; + _g5b2_var._parameters.Qcyu = 0.023; + _g5b2_var._parameters.Qcyd = 0.023; + _g5b2_var._parameters.alphaxl = 1.75; + _g5b2_var._parameters.alphaxr = 1.75; + _g5b2_var._parameters.alphayu = 1.8; + _g5b2_var._parameters.alphayd = 1.8; + _g5b2_var._parameters.Wxr = 0.015; + _g5b2_var._parameters.Wxl = 0.015; + _g5b2_var._parameters.Wyu = 0.015; + _g5b2_var._parameters.Wyd = 0.015; + _g5b2_var._parameters.mxr = 2.5; + _g5b2_var._parameters.mxl = 2.5; + _g5b2_var._parameters.myu = 2; + _g5b2_var._parameters.myd = 2; + _g5b2_var._parameters.QcxrOW = 0.0217; + _g5b2_var._parameters.QcxlOW = 0.0217; + _g5b2_var._parameters.QcyuOW = 0.0217; + _g5b2_var._parameters.QcydOW = 0.0217; + _g5b2_var._parameters.alphaxlOW = 6.07; + _g5b2_var._parameters.alphaxrOW = 6.07; + _g5b2_var._parameters.alphayuOW = 6.07; + _g5b2_var._parameters.alphaydOW = 6.07; + _g5b2_var._parameters.WxrOW = 0.003; + _g5b2_var._parameters.WxlOW = 0.003; + _g5b2_var._parameters.WyuOW = 0.003; + _g5b2_var._parameters.WydOW = 0.003; + _g5b2_var._parameters.mxrOW = 0; + _g5b2_var._parameters.mxlOW = 0; + _g5b2_var._parameters.myuOW = 0; + _g5b2_var._parameters.mydOW = 0; + _g5b2_var._parameters.rwallthick = 0.001; + _g5b2_var._parameters.lwallthick = 0.001; + _g5b2_var._parameters.uwallthick = 0.001; + _g5b2_var._parameters.dwallthick = 0.001; + + + /* component g5b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b2_var._rotation_absolute); + rot_transpose(_g5b1_var._rotation_absolute, tr1); + rot_mul(_g5b2_var._rotation_absolute, tr1, _g5b2_var._rotation_relative); + _g5b2_var._rotation_is_identity = rot_test_identity(_g5b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 35.01575); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b1_var._position_absolute, _g5b2_var._position_absolute); + _g5b2_var._position_relative = rot_apply(_g5b2_var._rotation_absolute, tc1); + } /* g5b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute); + instrument->_position_absolute[59] = _g5b2_var._position_absolute; + instrument->_position_relative[59] = _g5b2_var._position_relative; + _g5b2_var._position_relative_is_zero = coords_test_zero(_g5b2_var._position_relative); + instrument->counter_N[59] = instrument->counter_P[59] = instrument->counter_P2[59] = 0; + instrument->counter_AbsorbProp[59]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0058_g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h1u", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linhu", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "louthu", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h1d", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "linhd", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "louthd", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "l", "0", "1.999299999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g5b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b2_setpos */ + +/* component g5b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b3_setpos] component g5b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b3_var._name, "g5b3", 16384); + stracpy(_g5b3_var._type, "Guide_four_side", 16384); + _g5b3_var._index=60; + int current_setpos_index = 60; + _g5b3_var._parameters.RIreflect[0]='\0'; + _g5b3_var._parameters.LIreflect[0]='\0'; + _g5b3_var._parameters.UIreflect[0]='\0'; + _g5b3_var._parameters.DIreflect[0]='\0'; + _g5b3_var._parameters.ROreflect[0]='\0'; + _g5b3_var._parameters.LOreflect[0]='\0'; + _g5b3_var._parameters.UOreflect[0]='\0'; + _g5b3_var._parameters.DOreflect[0]='\0'; + _g5b3_var._parameters.w1l = 0.04004; + _g5b3_var._parameters.w2l = 0.04004; + _g5b3_var._parameters.linwl = 0; + _g5b3_var._parameters.loutwl = 0; + _g5b3_var._parameters.w1r = 0.04004; + _g5b3_var._parameters.w2r = 0.04004; + _g5b3_var._parameters.linwr = 0.0; + _g5b3_var._parameters.loutwr = 0; + _g5b3_var._parameters.h1u = 0.035695; + _g5b3_var._parameters.h2u = 0.002; + _g5b3_var._parameters.linhu = 23.009500000000003; + _g5b3_var._parameters.louthu = 10.990749999999998; + _g5b3_var._parameters.h1d = 0.035695; + _g5b3_var._parameters.h2d = 0.002; + _g5b3_var._parameters.linhd = 23.009500000000003; + _g5b3_var._parameters.louthd = 10.990749999999998; + _g5b3_var._parameters.l = 1.9997499999999988; + _g5b3_var._parameters.R0 = 0.99; + _g5b3_var._parameters.Qcxl = 0.0221; + _g5b3_var._parameters.Qcxr = 0.0221; + _g5b3_var._parameters.Qcyu = 0.023; + _g5b3_var._parameters.Qcyd = 0.023; + _g5b3_var._parameters.alphaxl = 1.75; + _g5b3_var._parameters.alphaxr = 1.75; + _g5b3_var._parameters.alphayu = 1.8; + _g5b3_var._parameters.alphayd = 1.8; + _g5b3_var._parameters.Wxr = 0.015; + _g5b3_var._parameters.Wxl = 0.015; + _g5b3_var._parameters.Wyu = 0.015; + _g5b3_var._parameters.Wyd = 0.015; + _g5b3_var._parameters.mxr = 2.5; + _g5b3_var._parameters.mxl = 2.5; + _g5b3_var._parameters.myu = 2; + _g5b3_var._parameters.myd = 2; + _g5b3_var._parameters.QcxrOW = 0.0217; + _g5b3_var._parameters.QcxlOW = 0.0217; + _g5b3_var._parameters.QcyuOW = 0.0217; + _g5b3_var._parameters.QcydOW = 0.0217; + _g5b3_var._parameters.alphaxlOW = 6.07; + _g5b3_var._parameters.alphaxrOW = 6.07; + _g5b3_var._parameters.alphayuOW = 6.07; + _g5b3_var._parameters.alphaydOW = 6.07; + _g5b3_var._parameters.WxrOW = 0.003; + _g5b3_var._parameters.WxlOW = 0.003; + _g5b3_var._parameters.WyuOW = 0.003; + _g5b3_var._parameters.WydOW = 0.003; + _g5b3_var._parameters.mxrOW = 0; + _g5b3_var._parameters.mxlOW = 0; + _g5b3_var._parameters.myuOW = 0; + _g5b3_var._parameters.mydOW = 0; + _g5b3_var._parameters.rwallthick = 0.001; + _g5b3_var._parameters.lwallthick = 0.001; + _g5b3_var._parameters.uwallthick = 0.001; + _g5b3_var._parameters.dwallthick = 0.001; + + + /* component g5b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b3_var._rotation_absolute); + rot_transpose(_g5b2_var._rotation_absolute, tr1); + rot_mul(_g5b3_var._rotation_absolute, tr1, _g5b3_var._rotation_relative); + _g5b3_var._rotation_is_identity = rot_test_identity(_g5b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 37.0195); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b2_var._position_absolute, _g5b3_var._position_absolute); + _g5b3_var._position_relative = rot_apply(_g5b3_var._rotation_absolute, tc1); + } /* g5b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute); + instrument->_position_absolute[60] = _g5b3_var._position_absolute; + instrument->_position_relative[60] = _g5b3_var._position_relative; + _g5b3_var._position_relative_is_zero = coords_test_zero(_g5b3_var._position_relative); + instrument->counter_N[60] = instrument->counter_P[60] = instrument->counter_P2[60] = 0; + instrument->counter_AbsorbProp[60]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0059_g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h1u", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linhu", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "louthu", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h1d", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "linhd", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "louthd", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g5b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b3_setpos */ + +/* component g5b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b4_setpos] component g5b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b4_var._name, "g5b4", 16384); + stracpy(_g5b4_var._type, "Guide_four_side", 16384); + _g5b4_var._index=61; + int current_setpos_index = 61; + _g5b4_var._parameters.RIreflect[0]='\0'; + _g5b4_var._parameters.LIreflect[0]='\0'; + _g5b4_var._parameters.UIreflect[0]='\0'; + _g5b4_var._parameters.DIreflect[0]='\0'; + _g5b4_var._parameters.ROreflect[0]='\0'; + _g5b4_var._parameters.LOreflect[0]='\0'; + _g5b4_var._parameters.UOreflect[0]='\0'; + _g5b4_var._parameters.DOreflect[0]='\0'; + _g5b4_var._parameters.w1l = 0.04004; + _g5b4_var._parameters.w2l = 0.04004; + _g5b4_var._parameters.linwl = 0; + _g5b4_var._parameters.loutwl = 0; + _g5b4_var._parameters.w1r = 0.04004; + _g5b4_var._parameters.w2r = 0.04004; + _g5b4_var._parameters.linwr = 0.0; + _g5b4_var._parameters.loutwr = 0; + _g5b4_var._parameters.h1u = 0.03423; + _g5b4_var._parameters.h2u = 0.002; + _g5b4_var._parameters.linhu = 25.009749999999997; + _g5b4_var._parameters.louthu = 8.990499999999997; + _g5b4_var._parameters.h1d = 0.03423; + _g5b4_var._parameters.h2d = 0.002; + _g5b4_var._parameters.linhd = 25.009749999999997; + _g5b4_var._parameters.louthd = 8.990499999999997; + _g5b4_var._parameters.l = 1.999750000000006; + _g5b4_var._parameters.R0 = 0.99; + _g5b4_var._parameters.Qcxl = 0.0221; + _g5b4_var._parameters.Qcxr = 0.0221; + _g5b4_var._parameters.Qcyu = 0.023; + _g5b4_var._parameters.Qcyd = 0.023; + _g5b4_var._parameters.alphaxl = 1.75; + _g5b4_var._parameters.alphaxr = 1.75; + _g5b4_var._parameters.alphayu = 1.8; + _g5b4_var._parameters.alphayd = 1.8; + _g5b4_var._parameters.Wxr = 0.015; + _g5b4_var._parameters.Wxl = 0.015; + _g5b4_var._parameters.Wyu = 0.015; + _g5b4_var._parameters.Wyd = 0.015; + _g5b4_var._parameters.mxr = 3.0; + _g5b4_var._parameters.mxl = 3.0; + _g5b4_var._parameters.myu = 2; + _g5b4_var._parameters.myd = 2; + _g5b4_var._parameters.QcxrOW = 0.0217; + _g5b4_var._parameters.QcxlOW = 0.0217; + _g5b4_var._parameters.QcyuOW = 0.0217; + _g5b4_var._parameters.QcydOW = 0.0217; + _g5b4_var._parameters.alphaxlOW = 6.07; + _g5b4_var._parameters.alphaxrOW = 6.07; + _g5b4_var._parameters.alphayuOW = 6.07; + _g5b4_var._parameters.alphaydOW = 6.07; + _g5b4_var._parameters.WxrOW = 0.003; + _g5b4_var._parameters.WxlOW = 0.003; + _g5b4_var._parameters.WyuOW = 0.003; + _g5b4_var._parameters.WydOW = 0.003; + _g5b4_var._parameters.mxrOW = 0; + _g5b4_var._parameters.mxlOW = 0; + _g5b4_var._parameters.myuOW = 0; + _g5b4_var._parameters.mydOW = 0; + _g5b4_var._parameters.rwallthick = 0.001; + _g5b4_var._parameters.lwallthick = 0.001; + _g5b4_var._parameters.uwallthick = 0.001; + _g5b4_var._parameters.dwallthick = 0.001; + + + /* component g5b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b4_var._rotation_absolute); + rot_transpose(_g5b3_var._rotation_absolute, tr1); + rot_mul(_g5b4_var._rotation_absolute, tr1, _g5b4_var._rotation_relative); + _g5b4_var._rotation_is_identity = rot_test_identity(_g5b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 39.019749999999995); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b3_var._position_absolute, _g5b4_var._position_absolute); + _g5b4_var._position_relative = rot_apply(_g5b4_var._rotation_absolute, tc1); + } /* g5b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute); + instrument->_position_absolute[61] = _g5b4_var._position_absolute; + instrument->_position_relative[61] = _g5b4_var._position_relative; + _g5b4_var._position_relative_is_zero = coords_test_zero(_g5b4_var._position_relative); + instrument->counter_N[61] = instrument->counter_P[61] = instrument->counter_P2[61] = 0; + instrument->counter_AbsorbProp[61]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0060_g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h1u", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linhu", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "louthu", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h1d", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "linhd", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "louthd", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "l", "0", "1.999750000000006","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g5b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b4_setpos */ + +/* component g5b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b5_setpos] component g5b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b5_var._name, "g5b5", 16384); + stracpy(_g5b5_var._type, "Guide_four_side", 16384); + _g5b5_var._index=62; + int current_setpos_index = 62; + _g5b5_var._parameters.RIreflect[0]='\0'; + _g5b5_var._parameters.LIreflect[0]='\0'; + _g5b5_var._parameters.UIreflect[0]='\0'; + _g5b5_var._parameters.DIreflect[0]='\0'; + _g5b5_var._parameters.ROreflect[0]='\0'; + _g5b5_var._parameters.LOreflect[0]='\0'; + _g5b5_var._parameters.UOreflect[0]='\0'; + _g5b5_var._parameters.DOreflect[0]='\0'; + _g5b5_var._parameters.w1l = 0.04004; + _g5b5_var._parameters.w2l = 0.04004; + _g5b5_var._parameters.linwl = 0; + _g5b5_var._parameters.loutwl = 0; + _g5b5_var._parameters.w1r = 0.04004; + _g5b5_var._parameters.w2r = 0.04004; + _g5b5_var._parameters.linwr = 0.0; + _g5b5_var._parameters.loutwr = 0; + _g5b5_var._parameters.h1u = 0.03217; + _g5b5_var._parameters.h2u = 0.002; + _g5b5_var._parameters.linhu = 27.0135; + _g5b5_var._parameters.louthu = 6.986750000000001; + _g5b5_var._parameters.h1d = 0.03217; + _g5b5_var._parameters.h2d = 0.002; + _g5b5_var._parameters.linhd = 27.0135; + _g5b5_var._parameters.louthd = 6.986750000000001; + _g5b5_var._parameters.l = 1.9997499999999988; + _g5b5_var._parameters.R0 = 0.99; + _g5b5_var._parameters.Qcxl = 0.0221; + _g5b5_var._parameters.Qcxr = 0.0221; + _g5b5_var._parameters.Qcyu = 0.0221; + _g5b5_var._parameters.Qcyd = 0.0221; + _g5b5_var._parameters.alphaxl = 1.75; + _g5b5_var._parameters.alphaxr = 1.75; + _g5b5_var._parameters.alphayu = 1.75; + _g5b5_var._parameters.alphayd = 1.75; + _g5b5_var._parameters.Wxr = 0.015; + _g5b5_var._parameters.Wxl = 0.015; + _g5b5_var._parameters.Wyu = 0.015; + _g5b5_var._parameters.Wyd = 0.015; + _g5b5_var._parameters.mxr = 3.0; + _g5b5_var._parameters.mxl = 3.0; + _g5b5_var._parameters.myu = 2.5; + _g5b5_var._parameters.myd = 2.5; + _g5b5_var._parameters.QcxrOW = 0.0217; + _g5b5_var._parameters.QcxlOW = 0.0217; + _g5b5_var._parameters.QcyuOW = 0.0217; + _g5b5_var._parameters.QcydOW = 0.0217; + _g5b5_var._parameters.alphaxlOW = 6.07; + _g5b5_var._parameters.alphaxrOW = 6.07; + _g5b5_var._parameters.alphayuOW = 6.07; + _g5b5_var._parameters.alphaydOW = 6.07; + _g5b5_var._parameters.WxrOW = 0.003; + _g5b5_var._parameters.WxlOW = 0.003; + _g5b5_var._parameters.WyuOW = 0.003; + _g5b5_var._parameters.WydOW = 0.003; + _g5b5_var._parameters.mxrOW = 0; + _g5b5_var._parameters.mxlOW = 0; + _g5b5_var._parameters.myuOW = 0; + _g5b5_var._parameters.mydOW = 0; + _g5b5_var._parameters.rwallthick = 0.001; + _g5b5_var._parameters.lwallthick = 0.001; + _g5b5_var._parameters.uwallthick = 0.001; + _g5b5_var._parameters.dwallthick = 0.001; + + + /* component g5b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b5_var._rotation_absolute); + rot_transpose(_g5b4_var._rotation_absolute, tr1); + rot_mul(_g5b5_var._rotation_absolute, tr1, _g5b5_var._rotation_relative); + _g5b5_var._rotation_is_identity = rot_test_identity(_g5b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 41.0235); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b4_var._position_absolute, _g5b5_var._position_absolute); + _g5b5_var._position_relative = rot_apply(_g5b5_var._rotation_absolute, tc1); + } /* g5b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute); + instrument->_position_absolute[62] = _g5b5_var._position_absolute; + instrument->_position_relative[62] = _g5b5_var._position_relative; + _g5b5_var._position_relative_is_zero = coords_test_zero(_g5b5_var._position_relative); + instrument->counter_N[62] = instrument->counter_P[62] = instrument->counter_P2[62] = 0; + instrument->counter_AbsorbProp[62]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0061_g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h1u", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linhu", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "louthu", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h1d", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "linhd", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "louthd", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g5b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b5_setpos */ + +/* component g5b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b6_setpos] component g5b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b6_var._name, "g5b6", 16384); + stracpy(_g5b6_var._type, "Guide_four_side", 16384); + _g5b6_var._index=63; + int current_setpos_index = 63; + _g5b6_var._parameters.RIreflect[0]='\0'; + _g5b6_var._parameters.LIreflect[0]='\0'; + _g5b6_var._parameters.UIreflect[0]='\0'; + _g5b6_var._parameters.DIreflect[0]='\0'; + _g5b6_var._parameters.ROreflect[0]='\0'; + _g5b6_var._parameters.LOreflect[0]='\0'; + _g5b6_var._parameters.UOreflect[0]='\0'; + _g5b6_var._parameters.DOreflect[0]='\0'; + _g5b6_var._parameters.w1l = 0.04004; + _g5b6_var._parameters.w2l = 0.04004; + _g5b6_var._parameters.linwl = 0; + _g5b6_var._parameters.loutwl = 0; + _g5b6_var._parameters.w1r = 0.04004; + _g5b6_var._parameters.w2r = 0.04004; + _g5b6_var._parameters.linwr = 0.0; + _g5b6_var._parameters.loutwr = 0; + _g5b6_var._parameters.h1u = 0.029395; + _g5b6_var._parameters.h2u = 0.002; + _g5b6_var._parameters.linhu = 29.01375; + _g5b6_var._parameters.louthu = 6.5; + _g5b6_var._parameters.h1d = 0.029395; + _g5b6_var._parameters.h2d = 0.002; + _g5b6_var._parameters.linhd = 29.01375; + _g5b6_var._parameters.louthd = 6.5; + _g5b6_var._parameters.l = 0.4862499999999983; + _g5b6_var._parameters.R0 = 0.99; + _g5b6_var._parameters.Qcxl = 0.0221; + _g5b6_var._parameters.Qcxr = 0.0221; + _g5b6_var._parameters.Qcyu = 0.0221; + _g5b6_var._parameters.Qcyd = 0.0221; + _g5b6_var._parameters.alphaxl = 1.75; + _g5b6_var._parameters.alphaxr = 1.75; + _g5b6_var._parameters.alphayu = 1.75; + _g5b6_var._parameters.alphayd = 1.75; + _g5b6_var._parameters.Wxr = 0.015; + _g5b6_var._parameters.Wxl = 0.015; + _g5b6_var._parameters.Wyu = 0.015; + _g5b6_var._parameters.Wyd = 0.015; + _g5b6_var._parameters.mxr = 3.0; + _g5b6_var._parameters.mxl = 3.0; + _g5b6_var._parameters.myu = 2.5; + _g5b6_var._parameters.myd = 2.5; + _g5b6_var._parameters.QcxrOW = 0.0217; + _g5b6_var._parameters.QcxlOW = 0.0217; + _g5b6_var._parameters.QcyuOW = 0.0217; + _g5b6_var._parameters.QcydOW = 0.0217; + _g5b6_var._parameters.alphaxlOW = 6.07; + _g5b6_var._parameters.alphaxrOW = 6.07; + _g5b6_var._parameters.alphayuOW = 6.07; + _g5b6_var._parameters.alphaydOW = 6.07; + _g5b6_var._parameters.WxrOW = 0.003; + _g5b6_var._parameters.WxlOW = 0.003; + _g5b6_var._parameters.WyuOW = 0.003; + _g5b6_var._parameters.WydOW = 0.003; + _g5b6_var._parameters.mxrOW = 0; + _g5b6_var._parameters.mxlOW = 0; + _g5b6_var._parameters.myuOW = 0; + _g5b6_var._parameters.mydOW = 0; + _g5b6_var._parameters.rwallthick = 0.001; + _g5b6_var._parameters.lwallthick = 0.001; + _g5b6_var._parameters.uwallthick = 0.001; + _g5b6_var._parameters.dwallthick = 0.001; + + + /* component g5b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b6_var._rotation_absolute); + rot_transpose(_g5b5_var._rotation_absolute, tr1); + rot_mul(_g5b6_var._rotation_absolute, tr1, _g5b6_var._rotation_relative); + _g5b6_var._rotation_is_identity = rot_test_identity(_g5b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.02375); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b5_var._position_absolute, _g5b6_var._position_absolute); + _g5b6_var._position_relative = rot_apply(_g5b6_var._rotation_absolute, tc1); + } /* g5b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute); + instrument->_position_absolute[63] = _g5b6_var._position_absolute; + instrument->_position_relative[63] = _g5b6_var._position_relative; + _g5b6_var._position_relative_is_zero = coords_test_zero(_g5b6_var._position_relative); + instrument->counter_N[63] = instrument->counter_P[63] = instrument->counter_P2[63] = 0; + instrument->counter_AbsorbProp[63]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0062_g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h1u", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linhu", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "louthu", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h1d", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "linhd", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "louthd", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "l", "0", "0.4862499999999983","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g5b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b6_setpos */ + +/* component g6a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a1_setpos] component g6a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a1_var._name, "g6a1", 16384); + stracpy(_g6a1_var._type, "Guide_four_side", 16384); + _g6a1_var._index=64; + int current_setpos_index = 64; + _g6a1_var._parameters.RIreflect[0]='\0'; + _g6a1_var._parameters.LIreflect[0]='\0'; + _g6a1_var._parameters.UIreflect[0]='\0'; + _g6a1_var._parameters.DIreflect[0]='\0'; + _g6a1_var._parameters.ROreflect[0]='\0'; + _g6a1_var._parameters.LOreflect[0]='\0'; + _g6a1_var._parameters.UOreflect[0]='\0'; + _g6a1_var._parameters.DOreflect[0]='\0'; + _g6a1_var._parameters.w1l = 0.04004; + _g6a1_var._parameters.w2l = 0.002; + _g6a1_var._parameters.linwl = 6.5; + _g6a1_var._parameters.loutwl = 4.9864999999999995; + _g6a1_var._parameters.w1r = 0.04004; + _g6a1_var._parameters.w2r = 0.002; + _g6a1_var._parameters.linwr = 6.5; + _g6a1_var._parameters.loutwr = 4.9864999999999995; + _g6a1_var._parameters.h1u = 0.02859; + _g6a1_var._parameters.h2u = 0.002; + _g6a1_var._parameters.linhu = 29.5; + _g6a1_var._parameters.louthu = 4.9864999999999995; + _g6a1_var._parameters.h1d = 0.02859; + _g6a1_var._parameters.h2d = 0.002; + _g6a1_var._parameters.linhd = 29.5; + _g6a1_var._parameters.louthd = 4.9864999999999995; + _g6a1_var._parameters.l = 1.5135000000000005; + _g6a1_var._parameters.R0 = 0.99; + _g6a1_var._parameters.Qcxl = 0.0217; + _g6a1_var._parameters.Qcxr = 0.0217; + _g6a1_var._parameters.Qcyu = 0.0221; + _g6a1_var._parameters.Qcyd = 0.0221; + _g6a1_var._parameters.alphaxl = 2.5; + _g6a1_var._parameters.alphaxr = 2.5; + _g6a1_var._parameters.alphayu = 1.75; + _g6a1_var._parameters.alphayd = 1.75; + _g6a1_var._parameters.Wxr = 0.015; + _g6a1_var._parameters.Wxl = 0.015; + _g6a1_var._parameters.Wyu = 0.015; + _g6a1_var._parameters.Wyd = 0.015; + _g6a1_var._parameters.mxr = 3.5; + _g6a1_var._parameters.mxl = 3.5; + _g6a1_var._parameters.myu = 2.5; + _g6a1_var._parameters.myd = 2.5; + _g6a1_var._parameters.QcxrOW = 0.0217; + _g6a1_var._parameters.QcxlOW = 0.0217; + _g6a1_var._parameters.QcyuOW = 0.0217; + _g6a1_var._parameters.QcydOW = 0.0217; + _g6a1_var._parameters.alphaxlOW = 6.07; + _g6a1_var._parameters.alphaxrOW = 6.07; + _g6a1_var._parameters.alphayuOW = 6.07; + _g6a1_var._parameters.alphaydOW = 6.07; + _g6a1_var._parameters.WxrOW = 0.003; + _g6a1_var._parameters.WxlOW = 0.003; + _g6a1_var._parameters.WyuOW = 0.003; + _g6a1_var._parameters.WydOW = 0.003; + _g6a1_var._parameters.mxrOW = 0; + _g6a1_var._parameters.mxlOW = 0; + _g6a1_var._parameters.myuOW = 0; + _g6a1_var._parameters.mydOW = 0; + _g6a1_var._parameters.rwallthick = 0.001; + _g6a1_var._parameters.lwallthick = 0.001; + _g6a1_var._parameters.uwallthick = 0.001; + _g6a1_var._parameters.dwallthick = 0.001; + + + /* component g6a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a1_var._rotation_absolute); + rot_transpose(_g5b6_var._rotation_absolute, tr1); + rot_mul(_g6a1_var._rotation_absolute, tr1, _g6a1_var._rotation_relative); + _g6a1_var._rotation_is_identity = rot_test_identity(_g6a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.51); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b6_var._position_absolute, _g6a1_var._position_absolute); + _g6a1_var._position_relative = rot_apply(_g6a1_var._rotation_absolute, tc1); + } /* g6a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute); + instrument->_position_absolute[64] = _g6a1_var._position_absolute; + instrument->_position_relative[64] = _g6a1_var._position_relative; + _g6a1_var._position_relative_is_zero = coords_test_zero(_g6a1_var._position_relative); + instrument->counter_N[64] = instrument->counter_P[64] = instrument->counter_P2[64] = 0; + instrument->counter_AbsorbProp[64]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0063_g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linwl", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "loutwl", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linwr", "0.0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "loutwr", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h1u", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linhu", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "louthu", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h1d", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "linhd", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "louthd", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "l", "0", "1.5135000000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g6a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a1_setpos */ + +/* component g6a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a2_setpos] component g6a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a2_var._name, "g6a2", 16384); + stracpy(_g6a2_var._type, "Guide_four_side", 16384); + _g6a2_var._index=65; + int current_setpos_index = 65; + _g6a2_var._parameters.RIreflect[0]='\0'; + _g6a2_var._parameters.LIreflect[0]='\0'; + _g6a2_var._parameters.UIreflect[0]='\0'; + _g6a2_var._parameters.DIreflect[0]='\0'; + _g6a2_var._parameters.ROreflect[0]='\0'; + _g6a2_var._parameters.LOreflect[0]='\0'; + _g6a2_var._parameters.UOreflect[0]='\0'; + _g6a2_var._parameters.DOreflect[0]='\0'; + _g6a2_var._parameters.w1l = 0.038935; + _g6a2_var._parameters.w2l = 0.002; + _g6a2_var._parameters.linwl = 8.017499999999998; + _g6a2_var._parameters.loutwl = 2.982750000000003; + _g6a2_var._parameters.w1r = 0.038935; + _g6a2_var._parameters.w2r = 0.002; + _g6a2_var._parameters.linwr = 8.017499999999998; + _g6a2_var._parameters.loutwr = 2.982750000000003; + _g6a2_var._parameters.h1u = 0.02567; + _g6a2_var._parameters.h2u = 0.002; + _g6a2_var._parameters.linhu = 31.0175; + _g6a2_var._parameters.louthu = 2.982750000000003; + _g6a2_var._parameters.h1d = 0.02567; + _g6a2_var._parameters.h2d = 0.002; + _g6a2_var._parameters.linhd = 31.0175; + _g6a2_var._parameters.louthd = 2.982750000000003; + _g6a2_var._parameters.l = 1.9997499999999988; + _g6a2_var._parameters.R0 = 0.99; + _g6a2_var._parameters.Qcxl = 0.0217; + _g6a2_var._parameters.Qcxr = 0.0217; + _g6a2_var._parameters.Qcyu = 0.0221; + _g6a2_var._parameters.Qcyd = 0.0221; + _g6a2_var._parameters.alphaxl = 2.5; + _g6a2_var._parameters.alphaxr = 2.5; + _g6a2_var._parameters.alphayu = 1.75; + _g6a2_var._parameters.alphayd = 1.75; + _g6a2_var._parameters.Wxr = 0.015; + _g6a2_var._parameters.Wxl = 0.015; + _g6a2_var._parameters.Wyu = 0.015; + _g6a2_var._parameters.Wyd = 0.015; + _g6a2_var._parameters.mxr = 4; + _g6a2_var._parameters.mxl = 4; + _g6a2_var._parameters.myu = 3; + _g6a2_var._parameters.myd = 3; + _g6a2_var._parameters.QcxrOW = 0.0217; + _g6a2_var._parameters.QcxlOW = 0.0217; + _g6a2_var._parameters.QcyuOW = 0.0217; + _g6a2_var._parameters.QcydOW = 0.0217; + _g6a2_var._parameters.alphaxlOW = 6.07; + _g6a2_var._parameters.alphaxrOW = 6.07; + _g6a2_var._parameters.alphayuOW = 6.07; + _g6a2_var._parameters.alphaydOW = 6.07; + _g6a2_var._parameters.WxrOW = 0.003; + _g6a2_var._parameters.WxlOW = 0.003; + _g6a2_var._parameters.WyuOW = 0.003; + _g6a2_var._parameters.WydOW = 0.003; + _g6a2_var._parameters.mxrOW = 0; + _g6a2_var._parameters.mxlOW = 0; + _g6a2_var._parameters.myuOW = 0; + _g6a2_var._parameters.mydOW = 0; + _g6a2_var._parameters.rwallthick = 0.001; + _g6a2_var._parameters.lwallthick = 0.001; + _g6a2_var._parameters.uwallthick = 0.001; + _g6a2_var._parameters.dwallthick = 0.001; + + + /* component g6a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a2_var._rotation_absolute); + rot_transpose(_g6a1_var._rotation_absolute, tr1); + rot_mul(_g6a2_var._rotation_absolute, tr1, _g6a2_var._rotation_relative); + _g6a2_var._rotation_is_identity = rot_test_identity(_g6a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 45.027499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a1_var._position_absolute, _g6a2_var._position_absolute); + _g6a2_var._position_relative = rot_apply(_g6a2_var._rotation_absolute, tc1); + } /* g6a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute); + instrument->_position_absolute[65] = _g6a2_var._position_absolute; + instrument->_position_relative[65] = _g6a2_var._position_relative; + _g6a2_var._position_relative_is_zero = coords_test_zero(_g6a2_var._position_relative); + instrument->counter_N[65] = instrument->counter_P[65] = instrument->counter_P2[65] = 0; + instrument->counter_AbsorbProp[65]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0064_g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w1l", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linwl", "0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "loutwl", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w1r", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linwr", "0.0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "loutwr", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h1u", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linhu", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "louthu", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h1d", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "linhd", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "louthd", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0064_g6a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a2_setpos */ + +/* component g6a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a3_setpos] component g6a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a3_var._name, "g6a3", 16384); + stracpy(_g6a3_var._type, "Guide_four_side", 16384); + _g6a3_var._index=66; + int current_setpos_index = 66; + _g6a3_var._parameters.RIreflect[0]='\0'; + _g6a3_var._parameters.LIreflect[0]='\0'; + _g6a3_var._parameters.UIreflect[0]='\0'; + _g6a3_var._parameters.DIreflect[0]='\0'; + _g6a3_var._parameters.ROreflect[0]='\0'; + _g6a3_var._parameters.LOreflect[0]='\0'; + _g6a3_var._parameters.UOreflect[0]='\0'; + _g6a3_var._parameters.DOreflect[0]='\0'; + _g6a3_var._parameters.w1l = 0.03367; + _g6a3_var._parameters.w2l = 0.002; + _g6a3_var._parameters.linwl = 10.01775; + _g6a3_var._parameters.loutwl = 1.0; + _g6a3_var._parameters.w1r = 0.03367; + _g6a3_var._parameters.w2r = 0.002; + _g6a3_var._parameters.linwr = 10.01775; + _g6a3_var._parameters.loutwr = 1.0; + _g6a3_var._parameters.h1u = 0.02049; + _g6a3_var._parameters.h2u = 0.002; + _g6a3_var._parameters.linhu = 33.01775; + _g6a3_var._parameters.louthu = 1.0; + _g6a3_var._parameters.h1d = 0.02049; + _g6a3_var._parameters.h2d = 0.002; + _g6a3_var._parameters.linhd = 33.01775; + _g6a3_var._parameters.louthd = 1.0; + _g6a3_var._parameters.l = 1.9822500000000005; + _g6a3_var._parameters.R0 = 0.99; + _g6a3_var._parameters.Qcxl = 0.0217; + _g6a3_var._parameters.Qcxr = 0.0217; + _g6a3_var._parameters.Qcyu = 0.0217; + _g6a3_var._parameters.Qcyd = 0.0217; + _g6a3_var._parameters.alphaxl = 2.5; + _g6a3_var._parameters.alphaxr = 2.5; + _g6a3_var._parameters.alphayu = 2.5; + _g6a3_var._parameters.alphayd = 2.5; + _g6a3_var._parameters.Wxr = 0.015; + _g6a3_var._parameters.Wxl = 0.015; + _g6a3_var._parameters.Wyu = 0.015; + _g6a3_var._parameters.Wyd = 0.015; + _g6a3_var._parameters.mxr = 4; + _g6a3_var._parameters.mxl = 4; + _g6a3_var._parameters.myu = 4; + _g6a3_var._parameters.myd = 4; + _g6a3_var._parameters.QcxrOW = 0.0217; + _g6a3_var._parameters.QcxlOW = 0.0217; + _g6a3_var._parameters.QcyuOW = 0.0217; + _g6a3_var._parameters.QcydOW = 0.0217; + _g6a3_var._parameters.alphaxlOW = 6.07; + _g6a3_var._parameters.alphaxrOW = 6.07; + _g6a3_var._parameters.alphayuOW = 6.07; + _g6a3_var._parameters.alphaydOW = 6.07; + _g6a3_var._parameters.WxrOW = 0.003; + _g6a3_var._parameters.WxlOW = 0.003; + _g6a3_var._parameters.WyuOW = 0.003; + _g6a3_var._parameters.WydOW = 0.003; + _g6a3_var._parameters.mxrOW = 0; + _g6a3_var._parameters.mxlOW = 0; + _g6a3_var._parameters.myuOW = 0; + _g6a3_var._parameters.mydOW = 0; + _g6a3_var._parameters.rwallthick = 0.001; + _g6a3_var._parameters.lwallthick = 0.001; + _g6a3_var._parameters.uwallthick = 0.001; + _g6a3_var._parameters.dwallthick = 0.001; + + + /* component g6a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a3_var._rotation_absolute); + rot_transpose(_g6a2_var._rotation_absolute, tr1); + rot_mul(_g6a3_var._rotation_absolute, tr1, _g6a3_var._rotation_relative); + _g6a3_var._rotation_is_identity = rot_test_identity(_g6a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 47.02775); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a2_var._position_absolute, _g6a3_var._position_absolute); + _g6a3_var._position_relative = rot_apply(_g6a3_var._rotation_absolute, tc1); + } /* g6a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute); + instrument->_position_absolute[66] = _g6a3_var._position_absolute; + instrument->_position_relative[66] = _g6a3_var._position_relative; + _g6a3_var._position_relative_is_zero = coords_test_zero(_g6a3_var._position_relative); + instrument->counter_N[66] = instrument->counter_P[66] = instrument->counter_P2[66] = 0; + instrument->counter_AbsorbProp[66]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0065_g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w1l", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linwl", "0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "loutwl", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w1r", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linwr", "0.0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "loutwr", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h1u", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linhu", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "louthu", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h1d", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "linhd", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "louthd", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "l", "0", "1.9822500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_g6a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a3_setpos */ + +/* component guide_end=Arm() SETTING, POSITION/ROTATION */ +int _guide_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_guide_end_setpos] component guide_end=Arm() SETTING [Arm:0]"); + stracpy(_guide_end_var._name, "guide_end", 16384); + stracpy(_guide_end_var._type, "Arm", 16384); + _guide_end_var._index=67; + int current_setpos_index = 67; + /* component guide_end=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _guide_end_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_guide_end_var._rotation_absolute, tr1, _guide_end_var._rotation_relative); + _guide_end_var._rotation_is_identity = rot_test_identity(_guide_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _guide_end_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _guide_end_var._position_absolute); + _guide_end_var._position_relative = rot_apply(_guide_end_var._rotation_absolute, tc1); + } /* guide_end=Arm() AT ROTATED */ + DEBUG_COMPONENT("guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute); + instrument->_position_absolute[67] = _guide_end_var._position_absolute; + instrument->_position_relative[67] = _guide_end_var._position_relative; + _guide_end_var._position_relative_is_zero = coords_test_zero(_guide_end_var._position_relative); + instrument->counter_N[67] = instrument->counter_P[67] = instrument->counter_P2[67] = 0; + instrument->counter_AbsorbProp[67]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0066_guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _guide_end_setpos */ + +/* component monitor_3_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_3_position_setpos] component monitor_3_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_3_position_var._name, "monitor_3_position", 16384); + stracpy(_monitor_3_position_var._type, "Arm", 16384); + _monitor_3_position_var._index=68; + int current_setpos_index = 68; + /* component monitor_3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_3_position_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_monitor_3_position_var._rotation_absolute, tr1, _monitor_3_position_var._rotation_relative); + _monitor_3_position_var._rotation_is_identity = rot_test_identity(_monitor_3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _monitor_3_position_var._position_absolute); + _monitor_3_position_var._position_relative = rot_apply(_monitor_3_position_var._rotation_absolute, tc1); + } /* monitor_3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute); + instrument->_position_absolute[68] = _monitor_3_position_var._position_absolute; + instrument->_position_relative[68] = _monitor_3_position_var._position_relative; + _monitor_3_position_var._position_relative_is_zero = coords_test_zero(_monitor_3_position_var._position_relative); + instrument->counter_N[68] = instrument->counter_P[68] = instrument->counter_P2[68] = 0; + instrument->counter_AbsorbProp[68]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0067_monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_3_position_setpos */ + +/* component start_backend=Arm() SETTING, POSITION/ROTATION */ +int _start_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_start_backend_setpos] component start_backend=Arm() SETTING [Arm:0]"); + stracpy(_start_backend_var._name, "start_backend", 16384); + stracpy(_start_backend_var._type, "Arm", 16384); + _start_backend_var._index=69; + int current_setpos_index = 69; + /* component start_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _start_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_start_backend_var._rotation_absolute, tr1, _start_backend_var._rotation_relative); + _start_backend_var._rotation_is_identity = rot_test_identity(_start_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _start_backend_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _start_backend_var._position_absolute); + _start_backend_var._position_relative = rot_apply(_start_backend_var._rotation_absolute, tc1); + } /* start_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute); + instrument->_position_absolute[69] = _start_backend_var._position_absolute; + instrument->_position_relative[69] = _start_backend_var._position_relative; + _start_backend_var._position_relative_is_zero = coords_test_zero(_start_backend_var._position_relative); + instrument->counter_N[69] = instrument->counter_P[69] = instrument->counter_P2[69] = 0; + instrument->counter_AbsorbProp[69]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0068_start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _start_backend_setpos */ + +/* component optical_axis_backend=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_backend_setpos] component optical_axis_backend=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_backend_var._name, "optical_axis_backend", 16384); + stracpy(_optical_axis_backend_var._type, "Arm", 16384); + _optical_axis_backend_var._index=70; + int current_setpos_index = 70; + /* component optical_axis_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _start_backend_var._rotation_absolute, _optical_axis_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_optical_axis_backend_var._rotation_absolute, tr1, _optical_axis_backend_var._rotation_relative); + _optical_axis_backend_var._rotation_is_identity = rot_test_identity(_optical_axis_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_start_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_backend_var._position_absolute = coords_add(_start_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _optical_axis_backend_var._position_absolute); + _optical_axis_backend_var._position_relative = rot_apply(_optical_axis_backend_var._rotation_absolute, tc1); + } /* optical_axis_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute); + instrument->_position_absolute[70] = _optical_axis_backend_var._position_absolute; + instrument->_position_relative[70] = _optical_axis_backend_var._position_relative; + _optical_axis_backend_var._position_relative_is_zero = coords_test_zero(_optical_axis_backend_var._position_relative); + instrument->counter_N[70] = instrument->counter_P[70] = instrument->counter_P2[70] = 0; + instrument->counter_AbsorbProp[70]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0069_optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_backend_setpos */ + +/* component pinhole_2=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_2_setpos] component pinhole_2=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_2_var._name, "pinhole_2", 16384); + stracpy(_pinhole_2_var._type, "Slit", 16384); + _pinhole_2_var._index=71; + int current_setpos_index = 71; + _pinhole_2_var._parameters.xmin = UNSET; + _pinhole_2_var._parameters.xmax = UNSET; + _pinhole_2_var._parameters.ymin = UNSET; + _pinhole_2_var._parameters.ymax = UNSET; + _pinhole_2_var._parameters.radius = UNSET; + _pinhole_2_var._parameters.xwidth = 0.03; + _pinhole_2_var._parameters.yheight = 0.03; + + + /* component pinhole_2=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _pinhole_2_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_pinhole_2_var._rotation_absolute, tr1, _pinhole_2_var._rotation_relative); + _pinhole_2_var._rotation_is_identity = rot_test_identity(_pinhole_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_2_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _pinhole_2_var._position_absolute); + _pinhole_2_var._position_relative = rot_apply(_pinhole_2_var._rotation_absolute, tc1); + } /* pinhole_2=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute); + instrument->_position_absolute[71] = _pinhole_2_var._position_absolute; + instrument->_position_relative[71] = _pinhole_2_var._position_relative; + _pinhole_2_var._position_relative_is_zero = coords_test_zero(_pinhole_2_var._position_relative); + instrument->counter_N[71] = instrument->counter_P[71] = instrument->counter_P2[71] = 0; + instrument->counter_AbsorbProp[71]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0070_pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xwidth", "UNSET", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_pinhole_2", "yheight", "UNSET", "0.03","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_2_setpos */ + +/* component graph=Graphite_Diffuser() SETTING, POSITION/ROTATION */ +int _graph_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_graph_setpos] component graph=Graphite_Diffuser() SETTING [Graphite_Diffuser:0]"); + stracpy(_graph_var._name, "graph", 16384); + stracpy(_graph_var._type, "Graphite_Diffuser", 16384); + _graph_var._index=72; + int current_setpos_index = 72; + _graph_var._parameters.xwidth = 0.1; + _graph_var._parameters.ywidth = 0.1; + _graph_var._parameters.thick = 0.2; + _graph_var._parameters.abs = 1; + + /* component graph=Graphite_Diffuser() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _graph_var._rotation_absolute); + rot_transpose(_pinhole_2_var._rotation_absolute, tr1); + rot_mul(_graph_var._rotation_absolute, tr1, _graph_var._rotation_relative); + _graph_var._rotation_is_identity = rot_test_identity(_graph_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50.001); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _graph_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_2_var._position_absolute, _graph_var._position_absolute); + _graph_var._position_relative = rot_apply(_graph_var._rotation_absolute, tc1); + } /* graph=Graphite_Diffuser() AT ROTATED */ + DEBUG_COMPONENT("graph", _graph_var._position_absolute, _graph_var._rotation_absolute); + instrument->_position_absolute[72] = _graph_var._position_absolute; + instrument->_position_relative[72] = _graph_var._position_relative; + _graph_var._position_relative_is_zero = coords_test_zero(_graph_var._position_relative); + instrument->counter_N[72] = instrument->counter_P[72] = instrument->counter_P2[72] = 0; + instrument->counter_AbsorbProp[72]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0071_graph", _graph_var._position_absolute, _graph_var._rotation_absolute, "Graphite_Diffuser"); + mccomp_param_nexus(nxhandle,"0071_graph", "xwidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "ywidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "thick", "0.01", "0.2","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_graph", "abs", "1", "1","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _graph_setpos */ + +/* component sample_monitor_arm=Arm() SETTING, POSITION/ROTATION */ +int _sample_monitor_arm_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_monitor_arm_setpos] component sample_monitor_arm=Arm() SETTING [Arm:0]"); + stracpy(_sample_monitor_arm_var._name, "sample_monitor_arm", 16384); + stracpy(_sample_monitor_arm_var._type, "Arm", 16384); + _sample_monitor_arm_var._index=73; + int current_setpos_index = 73; + /* component sample_monitor_arm=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_monitor_arm_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_monitor_arm_var._rotation_absolute, tr1, _sample_monitor_arm_var._rotation_relative); + _sample_monitor_arm_var._rotation_is_identity = rot_test_identity(_sample_monitor_arm_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_monitor_arm_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_monitor_arm_var._position_absolute); + _sample_monitor_arm_var._position_relative = rot_apply(_sample_monitor_arm_var._rotation_absolute, tc1); + } /* sample_monitor_arm=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute); + instrument->_position_absolute[73] = _sample_monitor_arm_var._position_absolute; + instrument->_position_relative[73] = _sample_monitor_arm_var._position_relative; + _sample_monitor_arm_var._position_relative_is_zero = coords_test_zero(_sample_monitor_arm_var._position_relative); + instrument->counter_N[73] = instrument->counter_P[73] = instrument->counter_P2[73] = 0; + instrument->counter_AbsorbProp[73]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0072_sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_monitor_arm_setpos */ + +/* component sample_PSD=Monitor_nD() SETTING, POSITION/ROTATION */ +int _sample_PSD_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_PSD_setpos] component sample_PSD=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_sample_PSD_var._name, "sample_PSD", 16384); + stracpy(_sample_PSD_var._type, "Monitor_nD", 16384); + _sample_PSD_var._index=74; + int current_setpos_index = 74; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user1, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user2, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user3, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user3[0]='\0'; + _sample_PSD_var._parameters.xwidth = 0.3; + _sample_PSD_var._parameters.yheight = 0.3; + _sample_PSD_var._parameters.zdepth = 0; + _sample_PSD_var._parameters.xmin = 0; + _sample_PSD_var._parameters.xmax = 0; + _sample_PSD_var._parameters.ymin = 0; + _sample_PSD_var._parameters.ymax = 0; + _sample_PSD_var._parameters.zmin = 0; + _sample_PSD_var._parameters.zmax = 0; + _sample_PSD_var._parameters.bins = 0; + _sample_PSD_var._parameters.min = -1e40; + _sample_PSD_var._parameters.max = 1e40; + _sample_PSD_var._parameters.restore_neutron = 0; + _sample_PSD_var._parameters.radius = 0; + if("x bins 300 y bins 300" && strlen("x bins 300 y bins 300")) + stracpy(_sample_PSD_var._parameters.options, "x bins 300 y bins 300" ? "x bins 300 y bins 300" : "", 16384); + else + _sample_PSD_var._parameters.options[0]='\0'; + if("image.dat" && strlen("image.dat")) + stracpy(_sample_PSD_var._parameters.filename, "image.dat" ? "image.dat" : "", 16384); + else + _sample_PSD_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.geometry[0]='\0'; + _sample_PSD_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username3[0]='\0'; + _sample_PSD_var._parameters.tsplit = 0; + _sample_PSD_var._parameters.adaptive_target = 0; + + + /* component sample_PSD=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _sample_PSD_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_PSD_var._rotation_absolute, tr1, _sample_PSD_var._rotation_relative); + _sample_PSD_var._rotation_is_identity = rot_test_identity(_sample_PSD_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_PSD_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_PSD_var._position_absolute); + _sample_PSD_var._position_relative = rot_apply(_sample_PSD_var._rotation_absolute, tc1); + } /* sample_PSD=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute); + instrument->_position_absolute[74] = _sample_PSD_var._position_absolute; + instrument->_position_relative[74] = _sample_PSD_var._position_relative; + _sample_PSD_var._position_relative_is_zero = coords_test_zero(_sample_PSD_var._position_relative); + instrument->counter_N[74] = instrument->counter_P[74] = instrument->counter_P2[74] = 0; + instrument->counter_AbsorbProp[74]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0073_sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "options", "NULL", "x bins 300 y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "filename", "NULL", "image.dat", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0073_sample_PSD", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_PSD_setpos */ + +/* component profile_x=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_x_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_x_setpos] component profile_x=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_x_var._name, "profile_x", 16384); + stracpy(_profile_x_var._type, "Monitor_nD", 16384); + _profile_x_var._index=75; + int current_setpos_index = 75; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user3[0]='\0'; + _profile_x_var._parameters.xwidth = 0.3; + _profile_x_var._parameters.yheight = 0.3; + _profile_x_var._parameters.zdepth = 0; + _profile_x_var._parameters.xmin = 0; + _profile_x_var._parameters.xmax = 0; + _profile_x_var._parameters.ymin = 0; + _profile_x_var._parameters.ymax = 0; + _profile_x_var._parameters.zmin = 0; + _profile_x_var._parameters.zmax = 0; + _profile_x_var._parameters.bins = 0; + _profile_x_var._parameters.min = -1e40; + _profile_x_var._parameters.max = 1e40; + _profile_x_var._parameters.restore_neutron = 0; + _profile_x_var._parameters.radius = 0; + if("x bins 300" && strlen("x bins 300")) + stracpy(_profile_x_var._parameters.options, "x bins 300" ? "x bins 300" : "", 16384); + else + _profile_x_var._parameters.options[0]='\0'; + if("profile_x.dat" && strlen("profile_x.dat")) + stracpy(_profile_x_var._parameters.filename, "profile_x.dat" ? "profile_x.dat" : "", 16384); + else + _profile_x_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.geometry[0]='\0'; + _profile_x_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username3[0]='\0'; + _profile_x_var._parameters.tsplit = 0; + _profile_x_var._parameters.adaptive_target = 0; + + + /* component profile_x=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_x_var._rotation_absolute); + rot_transpose(_sample_PSD_var._rotation_absolute, tr1); + rot_mul(_profile_x_var._rotation_absolute, tr1, _profile_x_var._rotation_relative); + _profile_x_var._rotation_is_identity = rot_test_identity(_profile_x_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_x_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_sample_PSD_var._position_absolute, _profile_x_var._position_absolute); + _profile_x_var._position_relative = rot_apply(_profile_x_var._rotation_absolute, tc1); + } /* profile_x=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute); + instrument->_position_absolute[75] = _profile_x_var._position_absolute; + instrument->_position_relative[75] = _profile_x_var._position_relative; + _profile_x_var._position_relative_is_zero = coords_test_zero(_profile_x_var._position_relative); + instrument->counter_N[75] = instrument->counter_P[75] = instrument->counter_P2[75] = 0; + instrument->counter_AbsorbProp[75]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0074_profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "options", "NULL", "x bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "filename", "NULL", "profile_x.dat", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0074_profile_x", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_x_setpos */ + +/* component profile_y=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_y_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_y_setpos] component profile_y=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_y_var._name, "profile_y", 16384); + stracpy(_profile_y_var._type, "Monitor_nD", 16384); + _profile_y_var._index=76; + int current_setpos_index = 76; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user3[0]='\0'; + _profile_y_var._parameters.xwidth = 0.3; + _profile_y_var._parameters.yheight = 0.3; + _profile_y_var._parameters.zdepth = 0; + _profile_y_var._parameters.xmin = 0; + _profile_y_var._parameters.xmax = 0; + _profile_y_var._parameters.ymin = 0; + _profile_y_var._parameters.ymax = 0; + _profile_y_var._parameters.zmin = 0; + _profile_y_var._parameters.zmax = 0; + _profile_y_var._parameters.bins = 0; + _profile_y_var._parameters.min = -1e40; + _profile_y_var._parameters.max = 1e40; + _profile_y_var._parameters.restore_neutron = 0; + _profile_y_var._parameters.radius = 0; + if("y bins 300" && strlen("y bins 300")) + stracpy(_profile_y_var._parameters.options, "y bins 300" ? "y bins 300" : "", 16384); + else + _profile_y_var._parameters.options[0]='\0'; + if("profile_y.dat" && strlen("profile_y.dat")) + stracpy(_profile_y_var._parameters.filename, "profile_y.dat" ? "profile_y.dat" : "", 16384); + else + _profile_y_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.geometry[0]='\0'; + _profile_y_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username3[0]='\0'; + _profile_y_var._parameters.tsplit = 0; + _profile_y_var._parameters.adaptive_target = 0; + + + /* component profile_y=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_y_var._rotation_absolute); + rot_transpose(_profile_x_var._rotation_absolute, tr1); + rot_mul(_profile_y_var._rotation_absolute, tr1, _profile_y_var._rotation_relative); + _profile_y_var._rotation_is_identity = rot_test_identity(_profile_y_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_y_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_x_var._position_absolute, _profile_y_var._position_absolute); + _profile_y_var._position_relative = rot_apply(_profile_y_var._rotation_absolute, tc1); + } /* profile_y=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute); + instrument->_position_absolute[76] = _profile_y_var._position_absolute; + instrument->_position_relative[76] = _profile_y_var._position_relative; + _profile_y_var._position_relative_is_zero = coords_test_zero(_profile_y_var._position_relative); + instrument->counter_N[76] = instrument->counter_P[76] = instrument->counter_P2[76] = 0; + instrument->counter_AbsorbProp[76]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0075_profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "options", "NULL", "y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "filename", "NULL", "profile_y.dat", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0075_profile_y", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_y_setpos */ + +/* component wavelength=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_setpos] component wavelength=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_var._name, "wavelength", 16384); + stracpy(_wavelength_var._type, "Monitor_nD", 16384); + _wavelength_var._index=77; + int current_setpos_index = 77; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user3[0]='\0'; + _wavelength_var._parameters.xwidth = 0.3; + _wavelength_var._parameters.yheight = 0.3; + _wavelength_var._parameters.zdepth = 0; + _wavelength_var._parameters.xmin = 0; + _wavelength_var._parameters.xmax = 0; + _wavelength_var._parameters.ymin = 0; + _wavelength_var._parameters.ymax = 0; + _wavelength_var._parameters.zmin = 0; + _wavelength_var._parameters.zmax = 0; + _wavelength_var._parameters.bins = 0; + _wavelength_var._parameters.min = -1e40; + _wavelength_var._parameters.max = 1e40; + _wavelength_var._parameters.restore_neutron = 0; + _wavelength_var._parameters.radius = 0; + if("L bins 300 limits [0.5 10]" && strlen("L bins 300 limits [0.5 10]")) + stracpy(_wavelength_var._parameters.options, "L bins 300 limits [0.5 10]" ? "L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_var._parameters.options[0]='\0'; + if("wavelength.dat" && strlen("wavelength.dat")) + stracpy(_wavelength_var._parameters.filename, "wavelength.dat" ? "wavelength.dat" : "", 16384); + else + _wavelength_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.geometry[0]='\0'; + _wavelength_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username3[0]='\0'; + _wavelength_var._parameters.tsplit = 0; + _wavelength_var._parameters.adaptive_target = 0; + + + /* component wavelength=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_var._rotation_absolute); + rot_transpose(_profile_y_var._rotation_absolute, tr1); + rot_mul(_wavelength_var._rotation_absolute, tr1, _wavelength_var._rotation_relative); + _wavelength_var._rotation_is_identity = rot_test_identity(_wavelength_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_y_var._position_absolute, _wavelength_var._position_absolute); + _wavelength_var._position_relative = rot_apply(_wavelength_var._rotation_absolute, tc1); + } /* wavelength=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute); + instrument->_position_absolute[77] = _wavelength_var._position_absolute; + instrument->_position_relative[77] = _wavelength_var._position_relative; + _wavelength_var._position_relative_is_zero = coords_test_zero(_wavelength_var._position_relative); + instrument->counter_N[77] = instrument->counter_P[77] = instrument->counter_P2[77] = 0; + instrument->counter_AbsorbProp[77]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0076_wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "options", "NULL", "L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "filename", "NULL", "wavelength.dat", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0076_wavelength", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_setpos */ + +/* component tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_tof_setpos] component tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_tof_var._name, "tof", 16384); + stracpy(_tof_var._type, "Monitor_nD", 16384); + _tof_var._index=78; + int current_setpos_index = 78; + if("" && strlen("")) + stracpy(_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _tof_var._parameters.user3[0]='\0'; + _tof_var._parameters.xwidth = 0.3; + _tof_var._parameters.yheight = 0.3; + _tof_var._parameters.zdepth = 0; + _tof_var._parameters.xmin = 0; + _tof_var._parameters.xmax = 0; + _tof_var._parameters.ymin = 0; + _tof_var._parameters.ymax = 0; + _tof_var._parameters.zmin = 0; + _tof_var._parameters.zmax = 0; + _tof_var._parameters.bins = 0; + _tof_var._parameters.min = -1e40; + _tof_var._parameters.max = 1e40; + _tof_var._parameters.restore_neutron = 0; + _tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15]" && strlen("t bins 300 limits [0, 0.15]")) + stracpy(_tof_var._parameters.options, "t bins 300 limits [0, 0.15]" ? "t bins 300 limits [0, 0.15]" : "", 16384); + else + _tof_var._parameters.options[0]='\0'; + if("time.dat" && strlen("time.dat")) + stracpy(_tof_var._parameters.filename, "time.dat" ? "time.dat" : "", 16384); + else + _tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.geometry[0]='\0'; + _tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username3[0]='\0'; + _tof_var._parameters.tsplit = 1; + _tof_var._parameters.adaptive_target = 1; + + + /* component tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _tof_var._rotation_absolute); + rot_transpose(_wavelength_var._rotation_absolute, tr1); + rot_mul(_tof_var._rotation_absolute, tr1, _tof_var._rotation_relative); + _tof_var._rotation_is_identity = rot_test_identity(_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_var._position_absolute, _tof_var._position_absolute); + _tof_var._position_relative = rot_apply(_tof_var._rotation_absolute, tc1); + } /* tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("tof", _tof_var._position_absolute, _tof_var._rotation_absolute); + instrument->_position_absolute[78] = _tof_var._position_absolute; + instrument->_position_relative[78] = _tof_var._position_relative; + _tof_var._position_relative_is_zero = coords_test_zero(_tof_var._position_relative); + instrument->counter_N[78] = instrument->counter_P[78] = instrument->counter_P2[78] = 0; + instrument->counter_AbsorbProp[78]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0077_tof", _tof_var._position_absolute, _tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0077_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0077_tof", "options", "NULL", "t bins 300 limits [0, 0.15]", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "filename", "NULL", "time.dat", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0077_tof", "tsplit", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0077_tof", "adaptive_target", "0", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _tof_setpos */ + +/* component wavelength_tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_tof_setpos] component wavelength_tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_tof_var._name, "wavelength_tof", 16384); + stracpy(_wavelength_tof_var._type, "Monitor_nD", 16384); + _wavelength_tof_var._index=79; + int current_setpos_index = 79; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user3[0]='\0'; + _wavelength_tof_var._parameters.xwidth = 0.3; + _wavelength_tof_var._parameters.yheight = 0.3; + _wavelength_tof_var._parameters.zdepth = 0; + _wavelength_tof_var._parameters.xmin = 0; + _wavelength_tof_var._parameters.xmax = 0; + _wavelength_tof_var._parameters.ymin = 0; + _wavelength_tof_var._parameters.ymax = 0; + _wavelength_tof_var._parameters.zmin = 0; + _wavelength_tof_var._parameters.zmax = 0; + _wavelength_tof_var._parameters.bins = 0; + _wavelength_tof_var._parameters.min = -1e40; + _wavelength_tof_var._parameters.max = 1e40; + _wavelength_tof_var._parameters.restore_neutron = 0; + _wavelength_tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" && strlen("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]")) + stracpy(_wavelength_tof_var._parameters.options, "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" ? "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_tof_var._parameters.options[0]='\0'; + if("wavelength_tof.dat" && strlen("wavelength_tof.dat")) + stracpy(_wavelength_tof_var._parameters.filename, "wavelength_tof.dat" ? "wavelength_tof.dat" : "", 16384); + else + _wavelength_tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.geometry[0]='\0'; + _wavelength_tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username3[0]='\0'; + _wavelength_tof_var._parameters.tsplit = 1; + _wavelength_tof_var._parameters.adaptive_target = 0; + + + /* component wavelength_tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_tof_var._rotation_absolute); + rot_transpose(_tof_var._rotation_absolute, tr1); + rot_mul(_wavelength_tof_var._rotation_absolute, tr1, _wavelength_tof_var._rotation_relative); + _wavelength_tof_var._rotation_is_identity = rot_test_identity(_wavelength_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_tof_var._position_absolute, _wavelength_tof_var._position_absolute); + _wavelength_tof_var._position_relative = rot_apply(_wavelength_tof_var._rotation_absolute, tc1); + } /* wavelength_tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute); + instrument->_position_absolute[79] = _wavelength_tof_var._position_absolute; + instrument->_position_relative[79] = _wavelength_tof_var._position_relative; + _wavelength_tof_var._position_relative_is_zero = coords_test_zero(_wavelength_tof_var._position_relative); + instrument->counter_N[79] = instrument->counter_P[79] = instrument->counter_P2[79] = 0; + instrument->counter_AbsorbProp[79]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0078_wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "options", "NULL", "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "filename", "NULL", "wavelength_tof.dat", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "tsplit", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_tof_setpos */ + +/* component sample_position=Arm() SETTING, POSITION/ROTATION */ +int _sample_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_position_setpos] component sample_position=Arm() SETTING [Arm:0]"); + stracpy(_sample_position_var._name, "sample_position", 16384); + stracpy(_sample_position_var._type, "Arm", 16384); + _sample_position_var._index=80; + int current_setpos_index = 80; + /* component sample_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_position_var._rotation_absolute); + rot_transpose(_wavelength_tof_var._rotation_absolute, tr1); + rot_mul(_sample_position_var._rotation_absolute, tr1, _sample_position_var._rotation_relative); + _sample_position_var._rotation_is_identity = rot_test_identity(_sample_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_position_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_tof_var._position_absolute, _sample_position_var._position_absolute); + _sample_position_var._position_relative = rot_apply(_sample_position_var._rotation_absolute, tc1); + } /* sample_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute); + instrument->_position_absolute[80] = _sample_position_var._position_absolute; + instrument->_position_relative[80] = _sample_position_var._position_relative; + _sample_position_var._position_relative_is_zero = coords_test_zero(_sample_position_var._position_relative); + instrument->counter_N[80] = instrument->counter_P[80] = instrument->counter_P2[80] = 0; + instrument->counter_AbsorbProp[80]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0079_sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_position_setpos */ + +_class_Progress_bar *class_Progress_bar_init(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_init] component Origin=Progress_bar() INITIALISE [Progress_bar:0]"); + + IntermediateCnts = 0; + StartTime = 0; + EndTime = 0; + CurrentTime = 0; + + fprintf (stdout, "[%s] Initialize\n", instrument_name); + if (percent * mcget_ncount () / 100 < 1e5) { + percent = 1e5 * 100.0 / mcget_ncount (); + } + #ifdef OPENACC + time (&StartTime); + #endif + + #ifdef USE_MPI + sprintf (infostring, "(%i MPI processes) ", mpi_node_count); + #else + sprintf (infostring, "(single process) "); + #endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_init */ + +_class_ESS_butterfly *class_ESS_butterfly_init(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define target_tsplit (_comp->_parameters.target_tsplit) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_init] component Source=ESS_butterfly() INITIALISE [ESS_butterfly:0]"); + + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef target_tsplit + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_init */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_init(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_init] component bi=bi_spec_ellipse() INITIALISE [bi_spec_ellipse:0]"); + + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return(_comp); +} /* class_bi_spec_ellipse_init */ + +_class_Guide_four_side *class_Guide_four_side_init(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_init] component NBOA_drawing_1_end=Guide_four_side() INITIALISE [Guide_four_side:0]"); + + + int i; + + if (RIreflect && strlen (RIreflect)) { + if (Table_Read (&riTable, RIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, RIreflect)); + } + + if (LIreflect && strlen (LIreflect)) { + if (Table_Read (&liTable, LIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LIreflect)); + } + + if (UIreflect && strlen (UIreflect)) { + if (Table_Read (&uiTable, UIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UIreflect)); + } + + if (DIreflect && strlen (DIreflect)) { + if (Table_Read (&diTable, DIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DIreflect)); + } + + if (ROreflect && strlen (ROreflect)) { + if (Table_Read (&roTable, ROreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, ROreflect)); + } + + if (LOreflect && strlen (LOreflect)) { + if (Table_Read (&loTable, LOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LOreflect)); + } + + if (UOreflect && strlen (UOreflect)) { + if (Table_Read (&uoTable, UOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UOreflect)); + } + + if (DOreflect && strlen (DOreflect)) { + if (Table_Read (&doTable, DOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DOreflect)); + } + + if (w1r < 0) + TEST_INPUT ("w1r", NAME_CURRENT_COMP); + + if (w1l < 0) + TEST_INPUT ("w1l", NAME_CURRENT_COMP); + + if (h1u < 0) + TEST_INPUT ("h1u", NAME_CURRENT_COMP); + + if (h1d < 0) + TEST_INPUT ("h1d", NAME_CURRENT_COMP); + + if (w2r < 0) + TEST_INPUT ("w2r", NAME_CURRENT_COMP); + + if (w2l < 0) + TEST_INPUT ("w2l", NAME_CURRENT_COMP); + + if (h2u < 0) + TEST_INPUT ("h2u", NAME_CURRENT_COMP); + + if (h2d < 0) + TEST_INPUT ("h2d", NAME_CURRENT_COMP); + + if (mxrOW != -1 && mxrOW < 0) + TEST_INPUT_1 ("mxrOW", NAME_CURRENT_COMP); + + if (mxlOW != -1 && mxlOW < 0) + TEST_INPUT_1 ("mxlOW", NAME_CURRENT_COMP); + + if (myuOW != -1 && myuOW < 0) + TEST_INPUT_1 ("myuOW", NAME_CURRENT_COMP); + + if (mydOW != -1 && mydOW < 0) + TEST_INPUT_1 ("mydOW", NAME_CURRENT_COMP); + + if (mxr < 0 && mxr != -1) + TEST_INPUT_1 ("mxr", NAME_CURRENT_COMP); + + if (mxl < 0 && mxl != -1) + TEST_INPUT_1 ("mxl", NAME_CURRENT_COMP); + + if (myu < 0 && myu != -1) + TEST_INPUT_1 ("myu", NAME_CURRENT_COMP); + + if (myd < 0 && myd != -1) + TEST_INPUT_1 ("myd", NAME_CURRENT_COMP); + + if (Qcxl < 0) + TEST_INPUT_2 ("Qcxl", NAME_CURRENT_COMP); + + if (Qcxr < 0) + TEST_INPUT_2 ("Qcxr", NAME_CURRENT_COMP); + + if (Qcyu < 0) + TEST_INPUT_2 ("Qcyu", NAME_CURRENT_COMP); + + if (Qcyd < 0) + TEST_INPUT_2 ("Qcyd", NAME_CURRENT_COMP); + + if (alphaxl < 0) + TEST_INPUT_2 ("alphaxl", NAME_CURRENT_COMP); + + if (alphaxr < 0) + TEST_INPUT_2 ("alphaxr", NAME_CURRENT_COMP); + + if (alphayu < 0) + TEST_INPUT_2 ("alphayu", NAME_CURRENT_COMP); + + if (alphayd < 0) + TEST_INPUT_2 ("alphayd", NAME_CURRENT_COMP); + + if (QcxlOW < 0) + TEST_INPUT_2 ("QcxlOW", NAME_CURRENT_COMP); + + if (QcxrOW < 0) + TEST_INPUT_2 ("QcxrOW", NAME_CURRENT_COMP); + + if (QcyuOW < 0) + TEST_INPUT_2 ("QcyuOW", NAME_CURRENT_COMP); + + if (QcydOW < 0) + TEST_INPUT_2 ("QcydOW", NAME_CURRENT_COMP); + + if (alphaxlOW < 0) + TEST_INPUT_2 ("alphaxlOW", NAME_CURRENT_COMP); + + if (alphaxrOW < 0) + TEST_INPUT_2 ("alphaxrOW", NAME_CURRENT_COMP); + + if (alphayuOW < 0) + TEST_INPUT_2 ("alphayuOW", NAME_CURRENT_COMP); + + if (alphaydOW < 0) + TEST_INPUT_2 ("alphaydOW", NAME_CURRENT_COMP); + + if (rwallthick < 0) + TEST_INPUT_2 ("rwallthick", NAME_CURRENT_COMP); + + if (lwallthick < 0) + TEST_INPUT_2 ("lwallthick", NAME_CURRENT_COMP); + + if (uwallthick < 0) + TEST_INPUT_2 ("uwallthick", NAME_CURRENT_COMP); + + if (dwallthick < 0) + TEST_INPUT_2 ("dwallthick", NAME_CURRENT_COMP); + + if (Wxr <= 0) + TEST_INPUT_3 ("Wxr", NAME_CURRENT_COMP); + + if (Wxl <= 0) + TEST_INPUT_3 ("Wxl", NAME_CURRENT_COMP); + + if (Wyu <= 0) + TEST_INPUT_3 ("Wyu", NAME_CURRENT_COMP); + + if (Wyd <= 0) + TEST_INPUT_3 ("Wyd", NAME_CURRENT_COMP); + + if (WxrOW <= 0) + TEST_INPUT_3 ("WxrOW", NAME_CURRENT_COMP); + + if (WxlOW <= 0) + TEST_INPUT_3 ("WxlOW", NAME_CURRENT_COMP); + + if (WyuOW <= 0) + TEST_INPUT_3 ("WyuOW", NAME_CURRENT_COMP); + + if (WydOW <= 0) + TEST_INPUT_3 ("WydOW", NAME_CURRENT_COMP); + + if (l <= 0) { + fprintf (stderr, "Component: %s (Guide_four_side) real guide length \n", NAME_CURRENT_COMP); + fprintf (stderr, " is <= ZERO ! \n"); + exit (-1); + } + + if (mcgravitation) + fprintf (stderr, + "WARNING: Guide_four_side: %s: " + "This component produces wrong results with gravitation !\n" + "Use Guide_gravity.\n", + NAME_CURRENT_COMP); + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + if (loutwr != 0 && linwr != 0) /* elliptic right side wall */ + { + ELLIPSE (w1r, l, linwr, loutwr, rwallthick, &awr, &bwr, &a2wr, &b2wr, &z0wr, &w2r, &awrwt, &a2wrwt, &bwrwt, &b2wrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr != 0) /* parabolic focusing right side wall */ + { + PARABEL_FOCUS (w1r, l, loutwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr != 0 && loutwr == 0) /* parabolic defocusing right side wall */ + { + PARABEL_DEFOCUS (w1r, l, linwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr == 0) /* straight right side wall */ + { + LINEAR (w1r, w2r, l, rwallthick, &w1rwt, &w2rwt); + } + + /* Calculation of curve-parameters for the left side wall - positive x-axis - analog to right side*/ + + if ((linwl != 0) && (loutwl != 0)) /* elleptic left side wall */ + { + ELLIPSE (w1l, l, linwl, loutwl, lwallthick, &awl, &bwl, &a2wl, &b2wl, &z0wl, &w2l, &awlwt, &a2wlwt, &bwlwt, &b2wlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl != 0) /* parabolic focusing left side wall */ + { + PARABEL_FOCUS (w1l, l, loutwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl != 0 && loutwl == 0) /* parabolic defocusing left side wall */ + { + PARABEL_DEFOCUS (w1l, l, linwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl == 0) /* straight left side wall */ + { + LINEAR (w1l, w2l, l, lwallthick, &w1lwt, &w2lwt); + } + + /* Calculation of curve-parameters for the top wall - positive y-axis - analog right wall*/ + + if (linhu != 0 && louthu != 0) /* elliptic top wall */ + { + ELLIPSE (h1u, l, linhu, louthu, uwallthick, &ahu, &bhu, &a2hu, &b2hu, &z0hu, &h2u, &ahuwt, &a2huwt, &bhuwt, &b2huwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu != 0) /* parabolic focusing top wall */ + { + PARABEL_FOCUS (h1u, l, louthu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu != 0 && louthu == 0) /* parabolic defocusing top wall */ + { + PARABEL_DEFOCUS (h1u, l, linhu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu == 0) { + LINEAR (h1u, h2u, l, uwallthick, &h1uwt, &h2uwt); + } + + /* Calculation of curve-parameters for the bottom wall - negative y-axis - analog right wall */ + + if (linhd != 0 && louthd != 0) /* elliptic bottom wall */ + { + ELLIPSE (h1d, l, linhd, louthd, dwallthick, &ahd, &bhd, &a2hd, &b2hd, &z0hd, &h2d, &ahdwt, &a2hdwt, &bhdwt, &b2hdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd != 0) /* parabolic focusing bottom wall */ + { + PARABEL_FOCUS (h1d, l, louthd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd != 0 && louthd == 0) /* parabolic defocusing bottom wall */ + { + PARABEL_DEFOCUS (h1d, l, linhd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd == 0) { + LINEAR (h1d, h2d, l, dwallthick, &h1dwt, &h2dwt); + } + + mru1 = (h1uwt - h1u) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right upper corner*/ + nru1 = h1u - mru1 * (-w1r); + + mrd1 = (-h1dwt + h1d) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right lower corner*/ + nrd1 = -h1d - mrd1 * (-w1r); + + mlu1 = (h1uwt - h1u) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left upper corner*/ + nlu1 = h1u - mlu1 * w1l; + + mld1 = (-h1dwt + h1d) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left lower corner*/ + nld1 = -h1d - mld1 * w1l; + + mru2 = (h2u - h2uwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right upper corner*/ + nru2 = h2u - mru2 * (-w2r); + + mrd2 = (-h2d + h2dwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right lower corner*/ + nrd2 = -h2d - mrd2 * (-w2r); + + mlu2 = (h2u - h2uwt) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left upper corner*/ + nlu2 = h2u - mlu2 * w2l; + + mld2 = (h2dwt - h2d) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left lower corner*/ + nld2 = -h2d - mld2 * w2l; + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_init */ + +_class_MultiDiskChopper *class_MultiDiskChopper_init(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_init] component wfmc_1=MultiDiskChopper() INITIALISE [MultiDiskChopper:0]"); + + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_init */ + +_class_Slit *class_Slit_init(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_init] component pinhole_1=Slit() INITIALISE [Slit:0]"); + + if (is_unset (radius)) { + isradial = 0; + if (all_set (3, xwidth, xmin, xmax)) { + slit_error_if (xwidth != xmax - xmin, "specifying xwidth, xmin and xmax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (xwidth) && any_unset (2, xmin, xmax), "specify either xwidth or xmin & xmax", NAME_CURRENT_COMP); + } + if (all_set (3, yheight, ymin, ymax)) { + slit_error_if (yheight != ymax - ymin, "specifying yheight, ymin and ymax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (yheight) && any_unset (2, ymin, ymax), "specify either yheight or ymin & ymax", NAME_CURRENT_COMP); + } + if (is_unset (xmin)) { // xmax also unset but xwidth *is* set + xmax = xwidth / 2; + xmin = -xmax; + } + if (is_unset (ymin)) { // ymax also unset but yheight *is* set + ymax = yheight / 2; + ymin = -ymax; + } + slit_warning_if (xmin == xmax || ymin == ymax, "Running with CLOSED rectangular slit - is this intentional?", NAME_CURRENT_COMP); + } else { + isradial = 1; + slit_error_if (any_set (6, xwidth, xmin, xmax, yheight, ymin, ymax), "specify radius OR width and height parameters", NAME_CURRENT_COMP); + slit_warning_if (radius == 0., "Running with CLOSED radial slit - is this intentional?", NAME_CURRENT_COMP); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_init */ + +_class_DiskChopper *class_DiskChopper_init(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_init] component bp1_chopper=DiskChopper() INITIALISE [DiskChopper:0]"); + + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_init */ + +_class_Monitor_nD *class_Monitor_nD_init(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_init] component sample_PSD=Monitor_nD() INITIALISE [Monitor_nD:0]"); + + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_init */ + + + +int init(void) { /* called by mccode_main for ODIN_TOF_train3:INITIALISE */ + DEBUG_INSTR(); + // Initialise rng + srandom(_hash(mcseed-1)); + + /* code_main/parseoptions/readparams sets instrument parameters value */ + stracpy(instrument->_name, "ODIN_TOF_train3", 256); + + /* Instrument 'ODIN_TOF_train3' INITIALISE */ + SIG_MESSAGE("[ODIN_TOF_train3] INITIALISE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) + #define target_tsplit (instrument->_parameters.target_tsplit) +{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + +adaptive_N=NTOF; +total_arrived=0; +total_N_sent=0; +total_rays_sent=0; + + +MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + #undef target_tsplit + _Origin_setpos(); /* type Progress_bar */ + _optical_axis_setpos(); /* type Arm */ + _Source_setpos(); /* type ESS_butterfly */ + _Start_of_bi_setpos(); /* type Arm */ + _bi_setpos(); /* type bi_spec_ellipse */ + _End_of_bi_setpos(); /* type Arm */ + _NBOA_drawing_1_end_setpos(); /* type Guide_four_side */ + _g1a2_setpos(); /* type Guide_four_side */ + _g1a3_setpos(); /* type Guide_four_side */ + _g1b1_setpos(); /* type Guide_four_side */ + _g1c1_setpos(); /* type Guide_four_side */ + _wfm_position_setpos(); /* type Arm */ + _wfm_1_position_setpos(); /* type Arm */ + _wfmc_1_setpos(); /* type MultiDiskChopper */ + _pinhole_1_setpos(); /* type Slit */ + _wfm_2_position_setpos(); /* type Arm */ + _wfmc_2_setpos(); /* type MultiDiskChopper */ + _g2a1_setpos(); /* type Guide_four_side */ + _monitor_1_position_setpos(); /* type Arm */ + _g2a2_setpos(); /* type Guide_four_side */ + _fo1_position_setpos(); /* type Arm */ + _fo_chopper_1_setpos(); /* type MultiDiskChopper */ + _bp1_position_setpos(); /* type Arm */ + _bp1_chopper_setpos(); /* type DiskChopper */ + _g2b1_setpos(); /* type Guide_four_side */ + _g2b2_setpos(); /* type Guide_four_side */ + _g2b3_setpos(); /* type Guide_four_side */ + _g2b4_setpos(); /* type Guide_four_side */ + _fo2_position_setpos(); /* type Arm */ + _fo_chopper_2_setpos(); /* type MultiDiskChopper */ + _bp2_position_setpos(); /* type Arm */ + _bp_chopper2_setpos(); /* type DiskChopper */ + _g2c1_setpos(); /* type Guide_four_side */ + _t0_start_position_setpos(); /* type Arm */ + _t0_chopper_alpha_setpos(); /* type DiskChopper */ + _t0_end_position_setpos(); /* type Arm */ + _t0_chopper_beta_setpos(); /* type DiskChopper */ + _g3a1_setpos(); /* type Guide_four_side */ + _g3a2_setpos(); /* type Guide_four_side */ + _fo3_position_setpos(); /* type Arm */ + _fo_chopper_3_setpos(); /* type MultiDiskChopper */ + _g3b1_setpos(); /* type Guide_four_side */ + _g4a1_setpos(); /* type Guide_four_side */ + _monitor_2_position_setpos(); /* type Arm */ + _g4a2_setpos(); /* type Guide_four_side */ + _g4a3_setpos(); /* type Guide_four_side */ + _fo4_position_setpos(); /* type Arm */ + _fo_chopper_4_setpos(); /* type MultiDiskChopper */ + _g4b1_setpos(); /* type Guide_four_side */ + _g4b2_setpos(); /* type Guide_four_side */ + _g4b3_setpos(); /* type Guide_four_side */ + _g4b4_setpos(); /* type Guide_four_side */ + _g4b5_setpos(); /* type Guide_four_side */ + _g4b6_setpos(); /* type Guide_four_side */ + _g5a1_setpos(); /* type Guide_four_side */ + _fo5_position_setpos(); /* type Arm */ + _fo_chopper_5_setpos(); /* type MultiDiskChopper */ + _g5b1_setpos(); /* type Guide_four_side */ + _g5b2_setpos(); /* type Guide_four_side */ + _g5b3_setpos(); /* type Guide_four_side */ + _g5b4_setpos(); /* type Guide_four_side */ + _g5b5_setpos(); /* type Guide_four_side */ + _g5b6_setpos(); /* type Guide_four_side */ + _g6a1_setpos(); /* type Guide_four_side */ + _g6a2_setpos(); /* type Guide_four_side */ + _g6a3_setpos(); /* type Guide_four_side */ + _guide_end_setpos(); /* type Arm */ + _monitor_3_position_setpos(); /* type Arm */ + _start_backend_setpos(); /* type Arm */ + _optical_axis_backend_setpos(); /* type Arm */ + _pinhole_2_setpos(); /* type Slit */ + _graph_setpos(); /* type Graphite_Diffuser */ + _sample_monitor_arm_setpos(); /* type Arm */ + _sample_PSD_setpos(); /* type Monitor_nD */ + _profile_x_setpos(); /* type Monitor_nD */ + _profile_y_setpos(); /* type Monitor_nD */ + _wavelength_setpos(); /* type Monitor_nD */ + _tof_setpos(); /* type Monitor_nD */ + _wavelength_tof_setpos(); /* type Monitor_nD */ + _sample_position_setpos(); /* type Arm */ + + /* call iteratively all components INITIALISE */ + class_Progress_bar_init(&_Origin_var); + + + class_ESS_butterfly_init(&_Source_var); + + + class_bi_spec_ellipse_init(&_bi_var); + + + class_Guide_four_side_init(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_init(&_g1a2_var); + + class_Guide_four_side_init(&_g1a3_var); + + class_Guide_four_side_init(&_g1b1_var); + + class_Guide_four_side_init(&_g1c1_var); + + + + class_MultiDiskChopper_init(&_wfmc_1_var); + + class_Slit_init(&_pinhole_1_var); + + + class_MultiDiskChopper_init(&_wfmc_2_var); + + class_Guide_four_side_init(&_g2a1_var); + + + class_Guide_four_side_init(&_g2a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_1_var); + + + class_DiskChopper_init(&_bp1_chopper_var); + + class_Guide_four_side_init(&_g2b1_var); + + class_Guide_four_side_init(&_g2b2_var); + + class_Guide_four_side_init(&_g2b3_var); + + class_Guide_four_side_init(&_g2b4_var); + + + class_MultiDiskChopper_init(&_fo_chopper_2_var); + + + class_DiskChopper_init(&_bp_chopper2_var); + + class_Guide_four_side_init(&_g2c1_var); + + + class_DiskChopper_init(&_t0_chopper_alpha_var); + + + class_DiskChopper_init(&_t0_chopper_beta_var); + + class_Guide_four_side_init(&_g3a1_var); + + class_Guide_four_side_init(&_g3a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_3_var); + + class_Guide_four_side_init(&_g3b1_var); + + class_Guide_four_side_init(&_g4a1_var); + + + class_Guide_four_side_init(&_g4a2_var); + + class_Guide_four_side_init(&_g4a3_var); + + + class_MultiDiskChopper_init(&_fo_chopper_4_var); + + class_Guide_four_side_init(&_g4b1_var); + + class_Guide_four_side_init(&_g4b2_var); + + class_Guide_four_side_init(&_g4b3_var); + + class_Guide_four_side_init(&_g4b4_var); + + class_Guide_four_side_init(&_g4b5_var); + + class_Guide_four_side_init(&_g4b6_var); + + class_Guide_four_side_init(&_g5a1_var); + + + class_MultiDiskChopper_init(&_fo_chopper_5_var); + + class_Guide_four_side_init(&_g5b1_var); + + class_Guide_four_side_init(&_g5b2_var); + + class_Guide_four_side_init(&_g5b3_var); + + class_Guide_four_side_init(&_g5b4_var); + + class_Guide_four_side_init(&_g5b5_var); + + class_Guide_four_side_init(&_g5b6_var); + + class_Guide_four_side_init(&_g6a1_var); + + class_Guide_four_side_init(&_g6a2_var); + + class_Guide_four_side_init(&_g6a3_var); + + + + + + class_Slit_init(&_pinhole_2_var); + + + + class_Monitor_nD_init(&_sample_PSD_var); + + class_Monitor_nD_init(&_profile_x_var); + + class_Monitor_nD_init(&_profile_y_var); + + class_Monitor_nD_init(&_wavelength_var); + + class_Monitor_nD_init(&_tof_var); + + class_Monitor_nD_init(&_wavelength_tof_var); + + + if (mcdotrace) display(); + DEBUG_INSTR_END(); + +#ifdef OPENACC +#include +#pragma acc update device(_Origin_var) +#pragma acc update device(_optical_axis_var) +#pragma acc update device(_Source_var) +#pragma acc update device(_Start_of_bi_var) +#pragma acc update device(_bi_var) +#pragma acc update device(_End_of_bi_var) +#pragma acc update device(_NBOA_drawing_1_end_var) +#pragma acc update device(_g1a2_var) +#pragma acc update device(_g1a3_var) +#pragma acc update device(_g1b1_var) +#pragma acc update device(_g1c1_var) +#pragma acc update device(_wfm_position_var) +#pragma acc update device(_wfm_1_position_var) +#pragma acc update device(_wfmc_1_var) +#pragma acc update device(_pinhole_1_var) +#pragma acc update device(_wfm_2_position_var) +#pragma acc update device(_wfmc_2_var) +#pragma acc update device(_g2a1_var) +#pragma acc update device(_monitor_1_position_var) +#pragma acc update device(_g2a2_var) +#pragma acc update device(_fo1_position_var) +#pragma acc update device(_fo_chopper_1_var) +#pragma acc update device(_bp1_position_var) +#pragma acc update device(_bp1_chopper_var) +#pragma acc update device(_g2b1_var) +#pragma acc update device(_g2b2_var) +#pragma acc update device(_g2b3_var) +#pragma acc update device(_g2b4_var) +#pragma acc update device(_fo2_position_var) +#pragma acc update device(_fo_chopper_2_var) +#pragma acc update device(_bp2_position_var) +#pragma acc update device(_bp_chopper2_var) +#pragma acc update device(_g2c1_var) +#pragma acc update device(_t0_start_position_var) +#pragma acc update device(_t0_chopper_alpha_var) +#pragma acc update device(_t0_end_position_var) +#pragma acc update device(_t0_chopper_beta_var) +#pragma acc update device(_g3a1_var) +#pragma acc update device(_g3a2_var) +#pragma acc update device(_fo3_position_var) +#pragma acc update device(_fo_chopper_3_var) +#pragma acc update device(_g3b1_var) +#pragma acc update device(_g4a1_var) +#pragma acc update device(_monitor_2_position_var) +#pragma acc update device(_g4a2_var) +#pragma acc update device(_g4a3_var) +#pragma acc update device(_fo4_position_var) +#pragma acc update device(_fo_chopper_4_var) +#pragma acc update device(_g4b1_var) +#pragma acc update device(_g4b2_var) +#pragma acc update device(_g4b3_var) +#pragma acc update device(_g4b4_var) +#pragma acc update device(_g4b5_var) +#pragma acc update device(_g4b6_var) +#pragma acc update device(_g5a1_var) +#pragma acc update device(_fo5_position_var) +#pragma acc update device(_fo_chopper_5_var) +#pragma acc update device(_g5b1_var) +#pragma acc update device(_g5b2_var) +#pragma acc update device(_g5b3_var) +#pragma acc update device(_g5b4_var) +#pragma acc update device(_g5b5_var) +#pragma acc update device(_g5b6_var) +#pragma acc update device(_g6a1_var) +#pragma acc update device(_g6a2_var) +#pragma acc update device(_g6a3_var) +#pragma acc update device(_guide_end_var) +#pragma acc update device(_monitor_3_position_var) +#pragma acc update device(_start_backend_var) +#pragma acc update device(_optical_axis_backend_var) +#pragma acc update device(_pinhole_2_var) +#pragma acc update device(_graph_var) +#pragma acc update device(_sample_monitor_arm_var) +#pragma acc update device(_sample_PSD_var) +#pragma acc update device(_profile_x_var) +#pragma acc update device(_profile_y_var) +#pragma acc update device(_wavelength_var) +#pragma acc update device(_tof_var) +#pragma acc update device(_wavelength_tof_var) +#pragma acc update device(_sample_position_var) +#pragma acc update device(_instrument_var) +#endif + + return(0); +} /* init */ + +/******************************************************************************* +* components TRACE +*******************************************************************************/ + +#define x (_particle->x) +#define y (_particle->y) +#define z (_particle->z) +#define vx (_particle->vx) +#define vy (_particle->vy) +#define vz (_particle->vz) +#define t (_particle->t) +#define sx (_particle->sx) +#define sy (_particle->sy) +#define sz (_particle->sz) +#define p (_particle->p) +#define mcgravitation (_particle->mcgravitation) +#define mcMagnet (_particle->mcMagnet) +#define allow_backprop (_particle->allow_backprop) +#define _mctmp_a (_particle->_mctmp_a) +#define _mctmp_b (_particle->_mctmp_b) +#define _mctmp_c (_particle->_mctmp_c) +/* if on GPU, globally nullify sprintf,fprintf,printfs */ +/* (Similar defines are available in each comp trace but */ +/* those are not enough to handle external libs etc. ) */ +#ifdef OPENACC +#define fprintf(stderr,...) printf(__VA_ARGS__) +#define sprintf(string,...) printf(__VA_ARGS__) +#define exit(...) noprintf() +#define strcmp(a,b) str_comp(a,b) +#define strlen(a) str_len(a) +#endif +#define SCATTERED (_particle->_scattered) +#define RESTORE (_particle->_restore) +#define RESTORE_NEUTRON(_index, ...) _particle->_restore = _index; +#define ABSORB0 do { DEBUG_STATE(); DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; return; } while(0) +#define ABSORBED (_particle->_absorbed) +#define mcget_run_num() _particle->_uid +#define ABSORB ABSORB0 +#pragma acc routine +void class_Progress_bar_trace(_class_Progress_bar *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_trace] component Origin=Progress_bar() TRACE [Progress_bar:0]"); + + #ifndef OPENACC + double ncount; + ncount = mcget_run_num (); + if (!StartTime) { + time (&StartTime); /* compute starting time */ + IntermediateCnts = 1e3; + } + time_t NowTime; + time (&NowTime); + /* compute initial estimate of computation duration */ + if (!EndTime && ncount >= IntermediateCnts) { + CurrentTime = NowTime; + if (difftime (NowTime, StartTime) > 10 && ncount) { /* wait 10 sec before writing ETA */ + EndTime = StartTime + (time_t)(difftime (NowTime, StartTime) * (double)mcget_ncount () / ncount); + IntermediateCnts = 0; + MPI_MASTER (fprintf (stdout, "\nTrace ETA "); fprintf (stdout, "%s", infostring); + if (difftime (EndTime, StartTime) < 60.0) fprintf (stdout, "%g [s] ", difftime (EndTime, StartTime)); + else if (difftime (EndTime, StartTime) > 3600.0) fprintf (stdout, "%g [h] ", difftime (EndTime, StartTime) / 3600.0); + else fprintf (stdout, "%g [min] ", difftime (EndTime, StartTime) / 60.0); fprintf (stdout, "\n");); + } else + IntermediateCnts += 1e3; + fflush (stdout); + } + + /* display percentage when percent or minutes have reached step */ + if (EndTime && mcget_ncount () && ((minutes && difftime (NowTime, CurrentTime) > minutes * 60) || (percent && !minutes && ncount >= IntermediateCnts))) { + MPI_MASTER (fprintf (stdout, "%llu %%\n", (unsigned long long)(ncount * 100.0 / mcget_ncount ())); fflush (stdout);); + CurrentTime = NowTime; + + IntermediateCnts = ncount + percent * mcget_ncount () / 100; + /* check that next intermediate ncount check is a multiple of the desired percentage */ + IntermediateCnts = floor (IntermediateCnts * 100 / percent / mcget_ncount ()) * percent * mcget_ncount () / 100; + /* raise flag to indicate that we did something */ + SCATTER; + if (flag_save) + save (NULL); + } + #endif +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return; +} /* class_Progress_bar_trace */ + +#pragma acc routine +void class_ESS_butterfly_trace(_class_ESS_butterfly *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define target_tsplit (_comp->_parameters.target_tsplit) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_trace] component Source=ESS_butterfly() TRACE [ESS_butterfly:0]"); + + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + + if (total_N_sent == 0) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } else { + long tmp = ceil(target_tsplit*total_N_sent/total_arrived); + #pragma acc atomic + adaptive_N = tmp; + if (adaptive_N > _particle->N_trains) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } + } + + for (train_index=0; train_index0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=_particle->p_last_time_manipulation; + + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef target_tsplit + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return; +} /* class_ESS_butterfly_trace */ + +#pragma acc routine +void class_bi_spec_ellipse_trace(_class_bi_spec_ellipse *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_trace] component bi=bi_spec_ellipse() TRACE [bi_spec_ellipse:0]"); + + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return; +} /* class_bi_spec_ellipse_trace */ + +#pragma acc routine +void class_Guide_four_side_trace(_class_Guide_four_side *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_trace] component NBOA_drawing_1_end=Guide_four_side() TRACE [Guide_four_side:0]"); + + + int i; + + PROP_Z0; /* Propagate neutron to guide entrance. */ + /* time variables (INNER walls)*/ + double t1; + double t2w1r; + double t2w1l; + double t2h1u; + double t2h1d; + /* time variables (OUTER walls)*/ + double t2w1rwt; + double t2w1lwt; + double t2h1uwt; + double t2h1dwt; + + /* zcomponent of the intersection point of the neutron trajectory and the ellipse (INNER walls)*/ + double m; + double n; + /* component and length of the surfaces normal vector at the intersection point */ + double nz; + double nx; + double ny; + double n2; + /* prefactor to calculate the velocity vector after the interaction */ + double pf; + /* velocity vector components before the interaction*/ + double vxin; + double vyin; + double vzin; + /* q-vector for the interaction */ + double q; + /* limit variables to determine the interaction position given by the time relative to the guide walls*/ + double xlimitr; + double xlimitrwt; + double xlimitl; + double xlimitlwt; + double ylimitd; + double ylimitdwt; + double ylimitu; + double ylimituwt; + /* interaction position of the neutron given by the interaction time; crosscheck with limit variables*/ + double xtest; + double ytest; + + if (x <= -w1r && x >= -w1rwt && y <= mru1 * x + nru1 && y >= mrd1 * x + nrd1 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT entrance wall and the wall is not transparent*/ + ABSORB; + if (x >= w1l && x <= w1lwt && y <= mlu1 * x + nlu1 && y >= mld1 * x + nld1 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT entrance wall and the wall is not transparent*/ + ABSORB; + if (y <= -h1d && y >= -h1dwt && x <= (y - nld1) / mld1 && x >= (y - nrd1) / mrd1 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM entrance wall and the wall is not transparent*/ + ABSORB; + if (y >= h1u && y <= h1uwt && x <= (y - nlu1) / mlu1 && x >= (y - nru1) / mru1 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP entrance wall and the wall is not transparent*/ + ABSORB; + + do { /* start the propagation loop inside the guide */ + t1 = (l - z) / vz; /* needed time to pass the guide (or rest of the guide without any interaction)*/ + + if (loutwr == 0 && linwr == 0) { + TIME_LINEAR (t1, w1r, w2r, l, x, z, vx, vz, w1rwt, &t2w1r, &t2w1rwt); + } + + if (loutwr != 0 && linwr != 0) { + TIME_ELLIPSE (vx, vz, x, z, a2wr, b2wr, z0wr, t1, a2wrwt, b2wrwt, &t2w1r, &t2w1rwt); + } + + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) { + TIME_PARABEL (vx, vz, x, z, pawr, pbwr, t1, pawrwt, pbwrwt, &t2w1r, &t2w1rwt); + } + + if (loutwl == 0 && linwl == 0) { + TIME_LINEAR_1 (t1, w1l, w2l, l, x, z, vx, vz, w1lwt, &t2w1l, &t2w1lwt); + } + + if (loutwl != 0 && linwl != 0) { + TIME_ELLIPSE_1 (vx, vz, x, z, a2wl, b2wl, z0wl, t1, a2wlwt, b2wlwt, &t2w1l, &t2w1lwt); + } + + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) { + TIME_PARABEL_1 (vx, vz, x, z, pawl, pbwl, t1, pawlwt, pbwlwt, &t2w1l, &t2w1lwt); + } + + if (louthu == 0 && linhu == 0) { + TIME_LINEAR_1 (t1, h1u, h2u, l, y, z, vy, vz, h1uwt, &t2h1u, &t2h1uwt); + } + + if (louthu != 0 && linhu != 0) { + TIME_ELLIPSE_1 (vy, vz, y, z, a2hu, b2hu, z0hu, t1, a2huwt, b2huwt, &t2h1u, &t2h1uwt); + } + + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) { + TIME_PARABEL_1 (vy, vz, y, z, pahu, pbhu, t1, pahuwt, pbhuwt, &t2h1u, &t2h1uwt); + } + + if (louthd == 0 && linhd == 0) { + TIME_LINEAR (t1, h1d, h2d, l, y, z, vy, vz, h1dwt, &t2h1d, &t2h1dwt); + } + + if (louthd != 0 && linhd != 0) { + TIME_ELLIPSE (vy, vz, y, z, a2hd, b2hd, z0hd, t1, a2hdwt, b2hdwt, &t2h1d, &t2h1dwt); + } + + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) { + TIME_PARABEL (vy, vz, y, z, pahd, pbhd, t1, pahdwt, pbhdwt, &t2h1d, &t2h1dwt); + } + + /* TEST OF THE INNER INTERSECTION - TIMES */ + /* possible interactions outside the guide have to be eliminated*/ + + if (t2w1r < t1 + 2.0) { /* test of RIGHT INNER wall interaction time*/ + TEST_UP_DOWN (t2w1r, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1r = t1 + 2.0; + } + } + + if (t2w1l < t1 + 2.0) { /* test of LEFT INNER wall interaction time - analog to right wall*/ + TEST_UP_DOWN (t2w1l, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1l = t1 + 2.0; + } + } + + if (t2h1u < t1 + 2.0) { /* test of TOP INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1u, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1u = t1 + 2.0; + } + } + + if (t2h1d < t1 + 2.0) { /* test of BOTTOM INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1d, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1d = t1 + 2.0; + } + } + + /* TEST OF THE OUTER INTERSECTION - TIMES */ + + if (t2w1rwt < t1 + 2.0) { /* test of RIGHT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1rwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1rwt = t1 + 2.0; + } + } + + if (t2w1lwt < t1 + 2.0) { /* test of LEFT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1lwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1lwt = t1 + 2.0; + } + } + + if (t2h1uwt < t1 + 2.0) { /* test of TOP OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1uwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1uwt = t1 + 2.0; + } + } + + if (t2h1dwt < t1 + 2.0) { /* test of BOTTOM OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1dwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1dwt = t1 + 2.0; + } + } + + /* which wall is hit first? which geometry? */ + + if (t1 < t2w1r && t1 < t2w1l && t1 < t2h1u && t1 < t2h1d && t1 < t2w1rwt && t1 < t2w1lwt && t1 < t2h1uwt && t1 < t2h1dwt) { + i = 1; + } + + /* neutron interacts with the INNER elliptic right wall and this wall is NOT transparent*/ + + if (t2w1r > 0 && t2w1r < t1 && t2w1r < t2w1l && t2w1r < t2h1u && t2w1r < t2h1d && t2w1r < t2w1rwt && t2w1r < t2w1lwt && t2w1r < t2h1uwt && t2w1r < t2h1dwt) { + if (mxr == 0) + i = 18; + else { + if (mxr == -1) + i = 14; + else { + if ((linwr != 0) && (loutwr != 0)) + i = 2; /* the neutron will be reflected*/ + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 3; + else { + if (loutwr == 0 && linwr == 0) + i = 4; + } + } + } + } + } + + /* neutron interacts with the elliptic left INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1l > 0 && t2w1l < t1 && t2w1l < t2w1r && t2w1l < t2h1u && t2w1l < t2h1d && t2w1l < t2w1rwt && t2w1l < t2w1lwt && t2w1l < t2h1uwt && t2w1l < t2h1dwt) { + if (mxl == 0) + i = 19; + else { + if (mxl == -1) + i = 15; + else { + if ((linwl != 0) && (loutwl != 0)) + i = 5; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 6; + else { + if (loutwl == 0 && linwl == 0) + i = 7; + } + } + } + } + } + + /* neutron interacts with the elliptic top INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1u > 0 && t2h1u < t1 && t2h1u < t2w1r && t2h1u < t2w1l && t2h1u < t2h1d && t2h1u < t2w1rwt && t2h1u < t2w1lwt && t2h1u < t2h1uwt && t2h1u < t2h1dwt) { + if (myu == 0) + i = 20; + else { + if (myu == -1) + i = 16; + else { + if (louthu != 0 && linhu != 0) + i = 8; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 9; + else { + if (louthu == 0 && linhu == 0) + i = 10; + } + } + } + } + } + + /* neutron interacts with the elliptic down INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1d > 0 && t2h1d < t1 && t2h1d < t2w1r && t2h1d < t2w1l && t2h1d < t2h1u && t2h1d < t2w1rwt && t2h1d < t2w1lwt && t2h1d < t2h1uwt && t2h1d < t2h1dwt) { + if (myd == 0) + i = 21; + else { + if (myd == -1) + i = 17; + else { + if (louthd != 0 && linhd != 0) + i = 11; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 12; + else { + if (louthd == 0 && linhd == 0) + i = 13; + } + } + } + } + } + + /* EVERTHING AGAIN FOR THE OUTER WALLS */ + + /* neutron interacts with the elliptic right OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1rwt > 0 && t2w1rwt < t1 && t2w1rwt < t2w1r && t2w1rwt < t2w1l && t2w1rwt < t2h1u && t2w1rwt < t2h1d && t2w1rwt < t2w1lwt && t2w1rwt < t2h1uwt + && t2w1rwt < t2h1dwt) { + if (mxrOW == 0) + i = 34; + else { + if (mxrOW == -1) + i = 38; + else { + if (linwr != 0 && loutwr != 0) + i = 22; + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 23; + else { + if (loutwr == 0 && linwr == 0) + i = 24; + } + } + } + } + } + + /* neutron interacts with the elliptic left OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1lwt > 0 && t2w1lwt < t1 && t2w1lwt < t2w1r && t2w1lwt < t2w1l && t2w1lwt < t2h1u && t2w1lwt < t2h1d && t2w1lwt < t2w1rwt && t2w1lwt < t2h1uwt + && t2w1lwt < t2h1dwt) { + if (mxlOW == 0) + i = 35; + else { + if (mxlOW == -1) + i = 39; + else { + if (linwl != 0 && loutwl != 0) + i = 25; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 26; + else { + if (loutwl == 0 && linwl == 0) + i = 27; + } + } + } + } + } + + /* neutron interacts with the elliptic top OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1uwt > 0 && t2h1uwt < t1 && t2h1uwt < t2w1r && t2h1uwt < t2w1l && t2h1uwt < t2h1u && t2h1uwt < t2h1d && t2h1uwt < t2w1rwt && t2h1uwt < t2w1lwt + && t2h1uwt < t2h1dwt) { + if (myuOW == 0) + i = 36; + else { + if (myuOW == -1) + i = 40; + else { + if (louthu != 0 && linhu != 0) + i = 28; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 29; + else { + if (louthu == 0 && linhu == 0) + i = 30; + } + } + } + } + } + + /* neutron interacts with the elliptic down OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1dwt > 0 && t2h1dwt < t1 && t2h1dwt < t2w1r && t2h1dwt < t2w1l && t2h1dwt < t2h1u && t2h1dwt < t2h1d && t2h1dwt < t2w1rwt && t2h1dwt < t2w1lwt + && t2h1dwt < t2h1uwt) { + if (mydOW == 0) + i = 37; + else { + if (mydOW == -1) + i = 41; + else { + if (louthd != 0 && linhd != 0) + i = 31; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 32; + else { + if (louthd == 0 && linhd == 0) + i = 33; + } + } + } + } + } + + switch (i) { /* the principal for the calculation is in every case the same: 1.) one needs the surface normal vector at the intersection point. 2.) + calculation of the velocity vector after the interaction by */ + /* vector subrtation (the basic idea and explanations can be found in the 'Mcstas component manual' in the section 'straight guide') */ + + case 1: /* no interaction, propagation to the end of the guide */ + PROP_DT (t1); + break; + + case 2: + PROP_DT (t2w1r); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = -x; /* surface normal vector components at the intersection point */ + nz = -x * x / ((a2wr / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 3: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawr; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 4: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = w2r - w1r; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 5: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -x * x / ((a2wl / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + SCATTER; + break; + + case 6: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawl; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 7: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = w2l - w1l; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 8: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hu / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 9: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahu; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 10: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = h2u - h1u; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 11: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hd / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 12: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahd; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 13: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = h2d - h1d; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 14: /* transperent walls - no interaction */ + PROP_DT (t2w1r); + break; + + case 15: + PROP_DT (t2w1l); + break; + + case 16: + PROP_DT (t2h1u); + break; + + case 17: + PROP_DT (t2h1d); + break; + + case 18: /* absorbing walls - neutrons are absorbed at interaction point*/ + PROP_DT (t2w1r); + ABSORB; + break; + + case 19: + PROP_DT (t2w1l); + ABSORB; + break; + + case 20: + PROP_DT (t2h1u); + ABSORB; + break; + + case 21: + PROP_DT (t2h1d); + ABSORB; + break; + + /* OUTER WALLS - analog to inner walls, but sign of surface normal vector is changed */ + + case 22: + PROP_DT (t2w1rwt); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = x; /* surface normal vector components at the intersection point */ + nz = x * x / ((a2wrwt / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 23: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawrwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 24: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = -(w2r - w1r); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 25: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = x * x / ((a2wlwt / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 26: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawlwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 27: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = -(w2l - w1l); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 28: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2huwt / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 29: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahuwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 30: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = -(h2u - h1u); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 31: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2hdwt / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 32: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahdwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 33: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = -(h2d - h1d); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 34: + PROP_DT (t2w1rwt); + ABSORB; + break; + + case 35: + PROP_DT (t2w1lwt); + ABSORB; + break; + + case 36: + PROP_DT (t2h1uwt); + ABSORB; + break; + + case 37: + PROP_DT (t2h1dwt); + ABSORB; + break; + + case 38: + PROP_DT (t2w1rwt); + break; + + case 39: + PROP_DT (t2w1lwt); + break; + + case 40: + PROP_DT (t2h1uwt); + break; + + case 41: + PROP_DT (t2h1dwt); + break; + } + + if (((i == 2) || (i == 3) || (i == 4))) { /* calculating the the probability that the neutron is reflected at the RIGHT INNER wall*/ + if (RIreflect && strlen (RIreflect)) { + p = Table_Value (riTable, q, 1); + } else { + if (mxr > 0 && q > Qcxr) { + double arg = (q - mxr * Qcxr) / Wxr; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxr * (q - Qcxr)); + } else + ABSORB; + } + } + } + + if (((i == 22) || (i == 23) || (i == 24))) { /* calculating the the probability that the neutron is reflected at the RIGHT OUTER wall*/ + if (ROreflect && strlen (ROreflect)) { + p = Table_Value (roTable, q, 1); + } else { + if (mxrOW > 0 && q > QcxrOW) { + double arg = (q - mxrOW * QcxrOW) / WxrOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxrOW * (q - QcxrOW)); + } else + ABSORB; + } + } + } + + if (((i == 5) || (i == 6) || (i == 7))) { /* calculating the the probability that the neutron is reflected at the LEFT INNER wall*/ + if (LIreflect && strlen (LIreflect)) { + p = Table_Value (liTable, q, 1); + } else { + if (mxl > 0 && q > Qcxl) { + double arg = (q - mxl * Qcxl) / Wxl; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxl * (q - Qcxl)); + } else + ABSORB; + } + } + } + + if (((i == 25) || (i == 26) || (i == 27))) { /* calculating the the probability that the neutron is reflected at the LEFT OUTER wall*/ + if (LOreflect && strlen (LOreflect)) { + p = Table_Value (loTable, q, 1); + } else { + if (mxlOW > 0 && q > QcxlOW) { + double arg = (q - mxlOW * QcxlOW) / WxlOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxlOW * (q - QcxlOW)); + } else + ABSORB; + } + } + } + + if (((i == 8) || (i == 9) || (i == 10))) { /* calculating the the probability that the neutron is reflected at the TOP INNER wall*/ + if (UIreflect && strlen (UIreflect)) { + p = Table_Value (uiTable, q, 1); + } else { + if (myu > 0 && q > Qcyu) { + double arg = (q - myu * Qcyu) / Wyu; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayu * (q - Qcyu)); + } else + ABSORB; + } + } + } + + if (((i == 28) || (i == 29) || (i == 30))) { /* calculating the the probability that the neutron is reflected at the TOP OUTER wall*/ + if (UOreflect && strlen (UOreflect)) { + p = Table_Value (uoTable, q, 1); + } else { + if (myuOW > 0 && q > QcyuOW) { + double arg = (q - myuOW * QcyuOW) / WyuOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayuOW * (q - QcyuOW)); + } else + ABSORB; + } + } + } + + if (((i == 11) || (i == 12) || (i == 13))) { /* calculating the the probability that the neutron is reflected at the BOTTOM INNER wall*/ + if (DIreflect && strlen (DIreflect)) { + p = Table_Value (diTable, q, 1); + } else { + if (myd > 0 && q > Qcyd) { + double arg = (q - myd * Qcyd) / Wyd; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayd * (q - Qcyd)); + } else + ABSORB; + } + } + } + + if (((i == 31) || (i == 32) || (i == 33))) { /* calculating the the probability that the neutron is reflected at the BOTTOM OUTER wall*/ + if (DOreflect && strlen (DOreflect)) { + p = Table_Value (doTable, q, 1); + } else { + if (mydOW > 0 && q > QcydOW) { + double arg = (q - mydOW * QcydOW) / WydOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaydOW * (q - QcydOW)); + } else + ABSORB; + } + } + } + + p *= R0; + SCATTER; + + } while (z < l); /* repeat the interaction loop untill the neutron pass the end of guide */ + + if (x <= -w2r && x >= -w2rwt && y <= mru2 * x + nru2 && y >= mrd2 * x + nrd2 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT exit wall and the wall is not transparent*/ + ABSORB; + if (x >= w2l && x <= w2lwt && y <= mlu2 * x + nlu2 && y >= mld2 * x + nld2 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT exit wall and the wall is not transparent*/ + ABSORB; + if (y <= -h2d && y >= -h2dwt && x <= (y - nld2) / mld2 && x >= (y - nrd2) / mrd2 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM exit wall and the wall is not transparent*/ + ABSORB; + if (y >= h2u && y <= h2uwt && x <= (y - nlu2) / mlu2 && x >= (y - nru2) / mru2 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP exit wall and the wall is not transparent*/ + ABSORB; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return; +} /* class_Guide_four_side_trace */ + +#pragma acc routine +void class_MultiDiskChopper_trace(_class_MultiDiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_trace] component wfmc_1=MultiDiskChopper() TRACE [MultiDiskChopper:0]"); + + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + int this_t_hit; + double this_train_t; + int all_dead = 1; + double p_total = 0; + for (train_index=0; train_indexp_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + this_t_hit = 0; + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + this_t_hit = 1; + + islit++; + } + if (this_t_hit == 0) _particle->p_trains[train_index] = 0; + else { + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + } + // if not a single t_offset made it through a slit, absorb this ray + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + } + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return; +} /* class_MultiDiskChopper_trace */ + +#pragma acc routine +void class_Slit_trace(_class_Slit *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_trace] component pinhole_1=Slit() TRACE [Slit:0]"); + + PROP_Z0; + if (!isradial ? (x < xmin || x > xmax || y < ymin || y > ymax) : (x * x + y * y > radius * radius)) + ABSORB; + else + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return; +} /* class_Slit_trace */ + +#pragma acc routine +void class_DiskChopper_trace(_class_DiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_trace] component bp1_chopper=DiskChopper() TRACE [DiskChopper:0]"); + + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + double this_train_t; + int all_dead = 1; + + for (train_index=0; train_indexp_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + _particle->p_trains[train_index] = 0; // T_ABSORB + else { + // T_TRANSMIT + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + + } + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return; +} /* class_DiskChopper_trace */ + +#pragma acc routine +void class_Graphite_Diffuser_trace(_class_Graphite_Diffuser *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_trace] component graph=Graphite_Diffuser() TRACE [Graphite_Diffuser:0]"); + + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || y_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return; +} /* class_Graphite_Diffuser_trace */ + +#pragma acc routine +void class_Monitor_nD_trace(_class_Monitor_nD *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_trace] component sample_PSD=Monitor_nD() TRACE [Monitor_nD:0]"); + + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + double *pp_array=malloc(sizeof(double)*_particle->N_trains); + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + int train_index; + double p_original = p; + double p_factor = p/_particle->p_last_time_manipulation; + + if (adaptive_target) { + #pragma acc atomic + total_N_sent += adaptive_N; + #pragma acc atomic + total_rays_sent++; + } + + if (tsplit==1) { + double t_original = t; + for (train_index=0; train_indexp_trains[train_index] > 0) { + p = p_factor*_particle->p_trains[train_index]; + t = t_original + _particle->t_offset[train_index]; + + pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + if (adaptive_target) total_arrived++; + + } else pp_array[train_index] = 0; + } + p = p_original; + t = t_original; + + int pp_total = 0; + for (train_index=0; train_index 0) { + SCATTER; + } + + } else { + + /* + // Now just use normal p + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + */ + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + } + + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return; +} /* class_Monitor_nD_trace */ + +/* ***************************************************************************** +* instrument 'ODIN_TOF_train3' TRACE +***************************************************************************** */ + +#ifndef FUNNEL +#pragma acc routine +int raytrace(_class_particle* _particle) { /* single event propagation, called by mccode_main for ODIN_TOF_train3:TRACE */ + + /* init variables and counters for TRACE */ + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++;} while(0) + #define ABSORB ABSORB0 + DEBUG_ENTER(); + DEBUG_STATE(); + _particle->flag_nocoordschange=0; /* Init */ + _class_particle _particle_save=*_particle; + /* the main iteration loop for one incoming event */ + while (!ABSORBED) { /* iterate event until absorbed */ + /* send particle event to component instance, one after the other */ + /* begin component Origin=Progress_bar() [1] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Origin_var._rotation_is_identity) { + if(!_Origin_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 1) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Origin_var._name); + DEBUG_STATE(); + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Origin [1] */ + /* begin component optical_axis=Arm() [2] */ + if (!ABSORBED && _particle->_index == 2) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis [2] */ + /* begin component Source=ESS_butterfly() [3] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Source_var._rotation_is_identity) { + if(!_Source_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 3) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Source_var._name); + DEBUG_STATE(); + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Source [3] */ + /* begin component Start_of_bi=Arm() [4] */ + if (!ABSORBED && _particle->_index == 4) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component Start_of_bi [4] */ + /* begin component bi=bi_spec_ellipse() [5] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bi_var._rotation_is_identity) { + if(!_bi_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 5) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bi_var._name); + DEBUG_STATE(); + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bi [5] */ + /* begin component End_of_bi=Arm() [6] */ + if (!ABSORBED && _particle->_index == 6) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component End_of_bi [6] */ + /* begin component NBOA_drawing_1_end=Guide_four_side() [7] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_NBOA_drawing_1_end_var._rotation_is_identity) { + if(!_NBOA_drawing_1_end_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 7) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_NBOA_drawing_1_end_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component NBOA_drawing_1_end [7] */ + /* begin component g1a2=Guide_four_side() [8] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a2_var._rotation_is_identity) { + if(!_g1a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 8) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a2 [8] */ + /* begin component g1a3=Guide_four_side() [9] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a3_var._rotation_is_identity) { + if(!_g1a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 9) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a3 [9] */ + /* begin component g1b1=Guide_four_side() [10] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1b1_var._rotation_is_identity) { + if(!_g1b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 10) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1b1 [10] */ + /* begin component g1c1=Guide_four_side() [11] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1c1_var._rotation_is_identity) { + if(!_g1c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 11) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1c1 [11] */ + /* begin component wfm_position=Arm() [12] */ + if (!ABSORBED && _particle->_index == 12) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_position [12] */ + /* begin component wfm_1_position=Arm() [13] */ + if (!ABSORBED && _particle->_index == 13) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_1_position [13] */ + /* begin component wfmc_1=MultiDiskChopper() [14] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_1_var._rotation_is_identity) { + if(!_wfmc_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 14) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_1 [14] */ + /* begin component pinhole_1=Slit() [15] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_1_var._rotation_is_identity) { + if(!_pinhole_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 15) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_1_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_1 [15] */ + /* begin component wfm_2_position=Arm() [16] */ + if (!ABSORBED && _particle->_index == 16) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_2_position [16] */ + /* begin component wfmc_2=MultiDiskChopper() [17] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_2_var._rotation_is_identity) { + if(!_wfmc_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 17) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_2 [17] */ + /* begin component g2a1=Guide_four_side() [18] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a1_var._rotation_is_identity) { + if(!_g2a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 18) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a1 [18] */ + /* begin component monitor_1_position=Arm() [19] */ + if (!ABSORBED && _particle->_index == 19) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_1_position [19] */ + /* begin component g2a2=Guide_four_side() [20] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a2_var._rotation_is_identity) { + if(!_g2a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 20) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a2 [20] */ + /* begin component fo1_position=Arm() [21] */ + if (!ABSORBED && _particle->_index == 21) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo1_position [21] */ + /* begin component fo_chopper_1=MultiDiskChopper() [22] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_1_var._rotation_is_identity) { + if(!_fo_chopper_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 22) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_1 [22] */ + /* begin component bp1_position=Arm() [23] */ + if (!ABSORBED && _particle->_index == 23) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp1_position [23] */ + /* begin component bp1_chopper=DiskChopper() [24] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp1_chopper_var._rotation_is_identity) { + if(!_bp1_chopper_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 24) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp1_chopper_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp1_chopper [24] */ + /* begin component g2b1=Guide_four_side() [25] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b1_var._rotation_is_identity) { + if(!_g2b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 25) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b1 [25] */ + /* begin component g2b2=Guide_four_side() [26] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b2_var._rotation_is_identity) { + if(!_g2b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 26) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b2 [26] */ + /* begin component g2b3=Guide_four_side() [27] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b3_var._rotation_is_identity) { + if(!_g2b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 27) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b3 [27] */ + /* begin component g2b4=Guide_four_side() [28] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b4_var._rotation_is_identity) { + if(!_g2b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 28) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b4 [28] */ + /* begin component fo2_position=Arm() [29] */ + if (!ABSORBED && _particle->_index == 29) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo2_position [29] */ + /* begin component fo_chopper_2=MultiDiskChopper() [30] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_2_var._rotation_is_identity) { + if(!_fo_chopper_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 30) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_2 [30] */ + /* begin component bp2_position=Arm() [31] */ + if (!ABSORBED && _particle->_index == 31) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp2_position [31] */ + /* begin component bp_chopper2=DiskChopper() [32] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp_chopper2_var._rotation_is_identity) { + if(!_bp_chopper2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 32) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp_chopper2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp_chopper2 [32] */ + /* begin component g2c1=Guide_four_side() [33] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2c1_var._rotation_is_identity) { + if(!_g2c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 33) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2c1 [33] */ + /* begin component t0_start_position=Arm() [34] */ + if (!ABSORBED && _particle->_index == 34) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_start_position [34] */ + /* begin component t0_chopper_alpha=DiskChopper() [35] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_alpha_var._rotation_is_identity) { + if(!_t0_chopper_alpha_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 35) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_alpha_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_alpha [35] */ + /* begin component t0_end_position=Arm() [36] */ + if (!ABSORBED && _particle->_index == 36) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_end_position [36] */ + /* begin component t0_chopper_beta=DiskChopper() [37] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_beta_var._rotation_is_identity) { + if(!_t0_chopper_beta_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 37) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_beta_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_beta [37] */ + /* begin component g3a1=Guide_four_side() [38] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a1_var._rotation_is_identity) { + if(!_g3a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 38) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a1 [38] */ + /* begin component g3a2=Guide_four_side() [39] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a2_var._rotation_is_identity) { + if(!_g3a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 39) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a2 [39] */ + /* begin component fo3_position=Arm() [40] */ + if (!ABSORBED && _particle->_index == 40) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo3_position [40] */ + /* begin component fo_chopper_3=MultiDiskChopper() [41] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_3_var._rotation_is_identity) { + if(!_fo_chopper_3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 41) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_3_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_3 [41] */ + /* begin component g3b1=Guide_four_side() [42] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3b1_var._rotation_is_identity) { + if(!_g3b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 42) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3b1 [42] */ + /* begin component g4a1=Guide_four_side() [43] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a1_var._rotation_is_identity) { + if(!_g4a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 43) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a1 [43] */ + /* begin component monitor_2_position=Arm() [44] */ + if (!ABSORBED && _particle->_index == 44) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_2_position [44] */ + /* begin component g4a2=Guide_four_side() [45] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a2_var._rotation_is_identity) { + if(!_g4a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 45) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a2 [45] */ + /* begin component g4a3=Guide_four_side() [46] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a3_var._rotation_is_identity) { + if(!_g4a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 46) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a3 [46] */ + /* begin component fo4_position=Arm() [47] */ + if (!ABSORBED && _particle->_index == 47) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo4_position [47] */ + /* begin component fo_chopper_4=MultiDiskChopper() [48] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_4_var._rotation_is_identity) { + if(!_fo_chopper_4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 48) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_4_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_4 [48] */ + /* begin component g4b1=Guide_four_side() [49] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b1_var._rotation_is_identity) { + if(!_g4b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 49) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b1 [49] */ + /* begin component g4b2=Guide_four_side() [50] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b2_var._rotation_is_identity) { + if(!_g4b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 50) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b2 [50] */ + /* begin component g4b3=Guide_four_side() [51] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b3_var._rotation_is_identity) { + if(!_g4b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 51) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b3 [51] */ + /* begin component g4b4=Guide_four_side() [52] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b4_var._rotation_is_identity) { + if(!_g4b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 52) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b4 [52] */ + /* begin component g4b5=Guide_four_side() [53] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b5_var._rotation_is_identity) { + if(!_g4b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 53) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b5 [53] */ + /* begin component g4b6=Guide_four_side() [54] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b6_var._rotation_is_identity) { + if(!_g4b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 54) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b6 [54] */ + /* begin component g5a1=Guide_four_side() [55] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5a1_var._rotation_is_identity) { + if(!_g5a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 55) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5a1 [55] */ + /* begin component fo5_position=Arm() [56] */ + if (!ABSORBED && _particle->_index == 56) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo5_position [56] */ + /* begin component fo_chopper_5=MultiDiskChopper() [57] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_5_var._rotation_is_identity) { + if(!_fo_chopper_5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 57) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_5_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_5 [57] */ + /* begin component g5b1=Guide_four_side() [58] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b1_var._rotation_is_identity) { + if(!_g5b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 58) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b1 [58] */ + /* begin component g5b2=Guide_four_side() [59] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b2_var._rotation_is_identity) { + if(!_g5b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 59) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b2 [59] */ + /* begin component g5b3=Guide_four_side() [60] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b3_var._rotation_is_identity) { + if(!_g5b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 60) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b3 [60] */ + /* begin component g5b4=Guide_four_side() [61] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b4_var._rotation_is_identity) { + if(!_g5b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 61) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b4 [61] */ + /* begin component g5b5=Guide_four_side() [62] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b5_var._rotation_is_identity) { + if(!_g5b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 62) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b5 [62] */ + /* begin component g5b6=Guide_four_side() [63] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b6_var._rotation_is_identity) { + if(!_g5b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 63) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b6 [63] */ + /* begin component g6a1=Guide_four_side() [64] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a1_var._rotation_is_identity) { + if(!_g6a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 64) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a1 [64] */ + /* begin component g6a2=Guide_four_side() [65] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a2_var._rotation_is_identity) { + if(!_g6a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 65) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a2 [65] */ + /* begin component g6a3=Guide_four_side() [66] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a3_var._rotation_is_identity) { + if(!_g6a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 66) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a3 [66] */ + /* begin component guide_end=Arm() [67] */ + if (!ABSORBED && _particle->_index == 67) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component guide_end [67] */ + /* begin component monitor_3_position=Arm() [68] */ + if (!ABSORBED && _particle->_index == 68) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_3_position [68] */ + /* begin component start_backend=Arm() [69] */ + if (!ABSORBED && _particle->_index == 69) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component start_backend [69] */ + /* begin component optical_axis_backend=Arm() [70] */ + if (!ABSORBED && _particle->_index == 70) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis_backend [70] */ + /* begin component pinhole_2=Slit() [71] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_2_var._rotation_is_identity) { + if(!_pinhole_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 71) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_2_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_2 [71] */ + /* begin component graph=Graphite_Diffuser() [72] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_graph_var._rotation_is_identity) { + if(!_graph_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 72) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_graph_var._name); + DEBUG_STATE(); + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component graph [72] */ + /* begin component sample_monitor_arm=Arm() [73] */ + if (!ABSORBED && _particle->_index == 73) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_monitor_arm [73] */ + /* begin component sample_PSD=Monitor_nD() [74] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_sample_PSD_var._rotation_is_identity) { + if(!_sample_PSD_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 74) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_sample_PSD_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component sample_PSD [74] */ + /* begin component profile_x=Monitor_nD() [75] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_x_var._rotation_is_identity) { + if(!_profile_x_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 75) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_x_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_x [75] */ + /* begin component profile_y=Monitor_nD() [76] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_y_var._rotation_is_identity) { + if(!_profile_y_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 76) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_y_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_y [76] */ + /* begin component wavelength=Monitor_nD() [77] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_var._rotation_is_identity) { + if(!_wavelength_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 77) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength [77] */ + /* begin component tof=Monitor_nD() [78] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_tof_var._rotation_is_identity) { + if(!_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 78) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component tof [78] */ + /* begin component wavelength_tof=Monitor_nD() [79] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_tof_var._rotation_is_identity) { + if(!_wavelength_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 79) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength_tof [79] */ + /* begin component sample_position=Arm() [80] */ + if (!ABSORBED && _particle->_index == 80) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_position [80] */ + if (_particle->_index > 80) + ABSORBED++; /* absorbed when passed all components */ + } /* while !ABSORBED */ + + DEBUG_LEAVE() + particle_restore(_particle, &_particle_save); + DEBUG_STATE() + + return(_particle->_index); +} /* raytrace */ + +/* loop to generate events and call raytrace() propagate them */ +void raytrace_all(unsigned long long ncount, unsigned long seed) { + + /* CPU-loop */ + unsigned long long loops; + loops = ceil((double)ncount/gpu_innerloop); + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #ifdef OPENACC + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around GPU kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + #endif + + /* if on GPU, re-nullify printf */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #pragma acc parallel loop num_gangs(numgangs) vector_length(vecsize) + for (unsigned long pidx=0 ; pidx < gpu_innerloop ; pidx++) { + _class_particle particleN = mcgenstate(); // initial particle + _class_particle* _particle = &particleN; + particleN._uid = pidx; + #ifdef USE_MPI + particleN._uid += mpi_node_rank * ncount; + #endif + + srandom(_hash((pidx+1)*(seed+1))); + + raytrace(_particle); + } /* inner for */ + seed = seed+gpu_innerloop; + } /* CPU for */ + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + MPI_MASTER( + printf("*** TRACE end *** \n"); + ); +} /* raytrace_all */ + +#endif //no-FUNNEL + +#ifdef FUNNEL +// Alternative raytrace algorithm which iterates all particles through +// one component at the time, can remove absorbs from the next loop and +// switch between cpu/gpu. +void raytrace_all_funnel(unsigned long long ncount, unsigned long seed) { + + // set up outer (CPU) loop / particle batches + unsigned long long loops; + + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + #ifdef OPENACC + loops = ceil((double)ncount/gpu_innerloop); + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + // create particles struct and pointer arrays (same memory used by all batches) + _class_particle* particles = malloc(gpu_innerloop*sizeof(_class_particle)); + _class_particle* pbuffer = malloc(gpu_innerloop*sizeof(_class_particle)); + long livebatchsize = gpu_innerloop; + + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; } while(0) + #define ABSORB ABSORB0 + // outer loop / particle batches + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + + // init particles + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + // generate particle state, set loop index and seed + particles[pidx] = mcgenstate(); + _class_particle* _particle = particles + pidx; + _particle->_uid = pidx; + #ifdef USE_MPI + _particle->_uid += mpi_node_rank * ncount; + #endif + srandom(_hash((pidx+1)*(seed+1))); // _particle->state usage built into srandom macro + } + + // iterate components + + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + _class_particle* _particle = &particles[pidx]; + _class_particle _particle_save; + + // Origin + if (!ABSORBED && _particle->_index == 1) { +#ifndef MULTICORE + if (_Origin_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // optical_axis + if (!ABSORBED && _particle->_index == 2) { + _particle->_index++; + } + + // Source + if (!ABSORBED && _particle->_index == 3) { +#ifndef MULTICORE + if (_Source_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + _particle_save = *_particle; + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Start_of_bi + if (!ABSORBED && _particle->_index == 4) { + _particle->_index++; + } + + // bi + if (!ABSORBED && _particle->_index == 5) { +#ifndef MULTICORE + if (_bi_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + _particle_save = *_particle; + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // End_of_bi + if (!ABSORBED && _particle->_index == 6) { + _particle->_index++; + } + + // NBOA_drawing_1_end + if (!ABSORBED && _particle->_index == 7) { +#ifndef MULTICORE + if (_NBOA_drawing_1_end_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a2 + if (!ABSORBED && _particle->_index == 8) { +#ifndef MULTICORE + if (_g1a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a3 + if (!ABSORBED && _particle->_index == 9) { +#ifndef MULTICORE + if (_g1a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1b1 + if (!ABSORBED && _particle->_index == 10) { +#ifndef MULTICORE + if (_g1b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1c1 + if (!ABSORBED && _particle->_index == 11) { +#ifndef MULTICORE + if (_g1c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_position + if (!ABSORBED && _particle->_index == 12) { + _particle->_index++; + } + + // wfm_1_position + if (!ABSORBED && _particle->_index == 13) { + _particle->_index++; + } + + // wfmc_1 + if (!ABSORBED && _particle->_index == 14) { +#ifndef MULTICORE + if (_wfmc_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // pinhole_1 + if (!ABSORBED && _particle->_index == 15) { +#ifndef MULTICORE + if (_pinhole_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_2_position + if (!ABSORBED && _particle->_index == 16) { + _particle->_index++; + } + + // wfmc_2 + if (!ABSORBED && _particle->_index == 17) { +#ifndef MULTICORE + if (_wfmc_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2a1 + if (!ABSORBED && _particle->_index == 18) { +#ifndef MULTICORE + if (_g2a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_1_position + if (!ABSORBED && _particle->_index == 19) { + _particle->_index++; + } + + // g2a2 + if (!ABSORBED && _particle->_index == 20) { +#ifndef MULTICORE + if (_g2a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo1_position + if (!ABSORBED && _particle->_index == 21) { + _particle->_index++; + } + + // fo_chopper_1 + if (!ABSORBED && _particle->_index == 22) { +#ifndef MULTICORE + if (_fo_chopper_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp1_position + if (!ABSORBED && _particle->_index == 23) { + _particle->_index++; + } + + // bp1_chopper + if (!ABSORBED && _particle->_index == 24) { +#ifndef MULTICORE + if (_bp1_chopper_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b1 + if (!ABSORBED && _particle->_index == 25) { +#ifndef MULTICORE + if (_g2b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b2 + if (!ABSORBED && _particle->_index == 26) { +#ifndef MULTICORE + if (_g2b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b3 + if (!ABSORBED && _particle->_index == 27) { +#ifndef MULTICORE + if (_g2b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b4 + if (!ABSORBED && _particle->_index == 28) { +#ifndef MULTICORE + if (_g2b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo2_position + if (!ABSORBED && _particle->_index == 29) { + _particle->_index++; + } + + // fo_chopper_2 + if (!ABSORBED && _particle->_index == 30) { +#ifndef MULTICORE + if (_fo_chopper_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp2_position + if (!ABSORBED && _particle->_index == 31) { + _particle->_index++; + } + + // bp_chopper2 + if (!ABSORBED && _particle->_index == 32) { +#ifndef MULTICORE + if (_bp_chopper2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2c1 + if (!ABSORBED && _particle->_index == 33) { +#ifndef MULTICORE + if (_g2c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_start_position + if (!ABSORBED && _particle->_index == 34) { + _particle->_index++; + } + + // t0_chopper_alpha + if (!ABSORBED && _particle->_index == 35) { +#ifndef MULTICORE + if (_t0_chopper_alpha_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_end_position + if (!ABSORBED && _particle->_index == 36) { + _particle->_index++; + } + + // t0_chopper_beta + if (!ABSORBED && _particle->_index == 37) { +#ifndef MULTICORE + if (_t0_chopper_beta_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a1 + if (!ABSORBED && _particle->_index == 38) { +#ifndef MULTICORE + if (_g3a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a2 + if (!ABSORBED && _particle->_index == 39) { +#ifndef MULTICORE + if (_g3a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo3_position + if (!ABSORBED && _particle->_index == 40) { + _particle->_index++; + } + + // fo_chopper_3 + if (!ABSORBED && _particle->_index == 41) { +#ifndef MULTICORE + if (_fo_chopper_3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3b1 + if (!ABSORBED && _particle->_index == 42) { +#ifndef MULTICORE + if (_g3b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a1 + if (!ABSORBED && _particle->_index == 43) { +#ifndef MULTICORE + if (_g4a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_2_position + if (!ABSORBED && _particle->_index == 44) { + _particle->_index++; + } + + // g4a2 + if (!ABSORBED && _particle->_index == 45) { +#ifndef MULTICORE + if (_g4a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a3 + if (!ABSORBED && _particle->_index == 46) { +#ifndef MULTICORE + if (_g4a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo4_position + if (!ABSORBED && _particle->_index == 47) { + _particle->_index++; + } + + // fo_chopper_4 + if (!ABSORBED && _particle->_index == 48) { +#ifndef MULTICORE + if (_fo_chopper_4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b1 + if (!ABSORBED && _particle->_index == 49) { +#ifndef MULTICORE + if (_g4b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b2 + if (!ABSORBED && _particle->_index == 50) { +#ifndef MULTICORE + if (_g4b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b3 + if (!ABSORBED && _particle->_index == 51) { +#ifndef MULTICORE + if (_g4b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b4 + if (!ABSORBED && _particle->_index == 52) { +#ifndef MULTICORE + if (_g4b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b5 + if (!ABSORBED && _particle->_index == 53) { +#ifndef MULTICORE + if (_g4b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b6 + if (!ABSORBED && _particle->_index == 54) { +#ifndef MULTICORE + if (_g4b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5a1 + if (!ABSORBED && _particle->_index == 55) { +#ifndef MULTICORE + if (_g5a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo5_position + if (!ABSORBED && _particle->_index == 56) { + _particle->_index++; + } + + // fo_chopper_5 + if (!ABSORBED && _particle->_index == 57) { +#ifndef MULTICORE + if (_fo_chopper_5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b1 + if (!ABSORBED && _particle->_index == 58) { +#ifndef MULTICORE + if (_g5b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b2 + if (!ABSORBED && _particle->_index == 59) { +#ifndef MULTICORE + if (_g5b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b3 + if (!ABSORBED && _particle->_index == 60) { +#ifndef MULTICORE + if (_g5b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b4 + if (!ABSORBED && _particle->_index == 61) { +#ifndef MULTICORE + if (_g5b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b5 + if (!ABSORBED && _particle->_index == 62) { +#ifndef MULTICORE + if (_g5b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b6 + if (!ABSORBED && _particle->_index == 63) { +#ifndef MULTICORE + if (_g5b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a1 + if (!ABSORBED && _particle->_index == 64) { +#ifndef MULTICORE + if (_g6a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a2 + if (!ABSORBED && _particle->_index == 65) { +#ifndef MULTICORE + if (_g6a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a3 + if (!ABSORBED && _particle->_index == 66) { +#ifndef MULTICORE + if (_g6a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // guide_end + if (!ABSORBED && _particle->_index == 67) { + _particle->_index++; + } + + // monitor_3_position + if (!ABSORBED && _particle->_index == 68) { + _particle->_index++; + } + + // start_backend + if (!ABSORBED && _particle->_index == 69) { + _particle->_index++; + } + + // optical_axis_backend + if (!ABSORBED && _particle->_index == 70) { + _particle->_index++; + } + + // pinhole_2 + if (!ABSORBED && _particle->_index == 71) { +#ifndef MULTICORE + if (_pinhole_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // graph + if (!ABSORBED && _particle->_index == 72) { +#ifndef MULTICORE + if (_graph_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_monitor_arm + if (!ABSORBED && _particle->_index == 73) { + _particle->_index++; + } + + // sample_PSD + if (!ABSORBED && _particle->_index == 74) { +#ifndef MULTICORE + if (_sample_PSD_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_x + if (!ABSORBED && _particle->_index == 75) { +#ifndef MULTICORE + if (_profile_x_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_y + if (!ABSORBED && _particle->_index == 76) { +#ifndef MULTICORE + if (_profile_y_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength + if (!ABSORBED && _particle->_index == 77) { +#ifndef MULTICORE + if (_wavelength_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // tof + if (!ABSORBED && _particle->_index == 78) { +#ifndef MULTICORE + if (_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength_tof + if (!ABSORBED && _particle->_index == 79) { +#ifndef MULTICORE + if (_wavelength_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_position + if (!ABSORBED && _particle->_index == 80) { + _particle->_index++; + } + + } + + // jump to next viable seed + seed = seed + gpu_innerloop; + } // outer loop / particle batches + + free(particles); + free(pbuffer); + + printf("\n"); +} /* raytrace_all_funnel */ +#endif // FUNNEL + +#undef x +#undef y +#undef z +#undef vx +#undef vy +#undef vz +#undef t +#undef sx +#undef sy +#undef sz +#undef p +#undef mcgravitation +#undef mcMagnet +#undef allow_backprop +#undef _mctmp_a +#undef _mctmp_b +#undef _mctmp_c +#ifdef OPENACC +#undef strlen +#undef strcmp +#undef exit +#undef printf +#undef sprintf +#undef fprintf +#endif +#undef SCATTERED +#undef RESTORE +#undef RESTORE_NEUTRON +#undef STORE_NEUTRON +#undef ABSORBED +#undef ABSORB +#undef ABSORB0 +/* ***************************************************************************** +* instrument 'ODIN_TOF_train3' and components SAVE +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_save(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_save] component Origin=Progress_bar() SAVE [Progress_bar:0]"); + + MPI_MASTER (fprintf (stdout, "\nSave [%s]\n", instrument_name);); + if (profile && strlen (profile) && strcmp (profile, "NULL") && strcmp (profile, "0")) { + char filename[256]; + if (!strlen (profile) || !strcmp (profile, "NULL") || !strcmp (profile, "0")) + strcpy (filename, instrument_name); + else + strcpy (filename, profile); + DETECTOR_OUT_1D ("Intensity profiler", "Component index [1]", "Intensity", "prof", 1, mcNUMCOMP, mcNUMCOMP - 1, &(instrument->counter_N[1]), + &(instrument->counter_P[1]), &(instrument->counter_P2[1]), filename); + } + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_save */ + +_class_Monitor_nD *class_Monitor_nD_save(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_save] component sample_PSD=Monitor_nD() SAVE [Monitor_nD:0]"); + + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_save */ + + + +int save(FILE *handle) { /* called by mccode_main for ODIN_TOF_train3:SAVE */ + if (!handle) siminfo_init(NULL); + + /* Instrument 'ODIN_TOF_train3' SAVE */ + SIG_MESSAGE("[ODIN_TOF_train3] SAVE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) + #define target_tsplit (instrument->_parameters.target_tsplit) +{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + #undef target_tsplit + /* call iteratively all components SAVE */ + class_Progress_bar_save(&_Origin_var); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + class_Monitor_nD_save(&_sample_PSD_var); + + class_Monitor_nD_save(&_profile_x_var); + + class_Monitor_nD_save(&_profile_y_var); + + class_Monitor_nD_save(&_wavelength_var); + + class_Monitor_nD_save(&_tof_var); + + class_Monitor_nD_save(&_wavelength_tof_var); + + + if (!handle) siminfo_close(); + + return(0); +} /* save */ + +/* ***************************************************************************** +* instrument 'ODIN_TOF_train3' and components FINALLY +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_finally(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_finally] component Origin=Progress_bar() FINALLY [Progress_bar:0]"); + + time_t NowTime; + time (&NowTime); + fprintf (stdout, "\nFinally [%s: %s]. Time: ", instrument_name, dirname ? dirname : "."); + if (difftime (NowTime, StartTime) < 60.0) + fprintf (stdout, "%g [s] ", difftime (NowTime, StartTime)); + else if (difftime (NowTime, StartTime) > 3600.0) + fprintf (stdout, "%g [h] ", difftime (NowTime, StartTime) / 3600.0); + else + fprintf (stdout, "%g [min] ", difftime (NowTime, StartTime) / 60.0); + fprintf (stdout, "\n"); + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_finally */ + +_class_Guide_four_side *class_Guide_four_side_finally(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_finally] component NBOA_drawing_1_end=Guide_four_side() FINALLY [Guide_four_side:0]"); + + + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_finally */ + +_class_MultiDiskChopper *class_MultiDiskChopper_finally(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_finally] component wfmc_1=MultiDiskChopper() FINALLY [MultiDiskChopper:0]"); + + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_finally */ + +_class_Monitor_nD *class_Monitor_nD_finally(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_finally] component sample_PSD=Monitor_nD() FINALLY [Monitor_nD:0]"); + + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_finally */ + + + +int finally(void) { /* called by mccode_main for ODIN_TOF_train3:FINALLY */ +#pragma acc update host(_Origin_var) +#pragma acc update host(_optical_axis_var) +#pragma acc update host(_Source_var) +#pragma acc update host(_Start_of_bi_var) +#pragma acc update host(_bi_var) +#pragma acc update host(_End_of_bi_var) +#pragma acc update host(_NBOA_drawing_1_end_var) +#pragma acc update host(_g1a2_var) +#pragma acc update host(_g1a3_var) +#pragma acc update host(_g1b1_var) +#pragma acc update host(_g1c1_var) +#pragma acc update host(_wfm_position_var) +#pragma acc update host(_wfm_1_position_var) +#pragma acc update host(_wfmc_1_var) +#pragma acc update host(_pinhole_1_var) +#pragma acc update host(_wfm_2_position_var) +#pragma acc update host(_wfmc_2_var) +#pragma acc update host(_g2a1_var) +#pragma acc update host(_monitor_1_position_var) +#pragma acc update host(_g2a2_var) +#pragma acc update host(_fo1_position_var) +#pragma acc update host(_fo_chopper_1_var) +#pragma acc update host(_bp1_position_var) +#pragma acc update host(_bp1_chopper_var) +#pragma acc update host(_g2b1_var) +#pragma acc update host(_g2b2_var) +#pragma acc update host(_g2b3_var) +#pragma acc update host(_g2b4_var) +#pragma acc update host(_fo2_position_var) +#pragma acc update host(_fo_chopper_2_var) +#pragma acc update host(_bp2_position_var) +#pragma acc update host(_bp_chopper2_var) +#pragma acc update host(_g2c1_var) +#pragma acc update host(_t0_start_position_var) +#pragma acc update host(_t0_chopper_alpha_var) +#pragma acc update host(_t0_end_position_var) +#pragma acc update host(_t0_chopper_beta_var) +#pragma acc update host(_g3a1_var) +#pragma acc update host(_g3a2_var) +#pragma acc update host(_fo3_position_var) +#pragma acc update host(_fo_chopper_3_var) +#pragma acc update host(_g3b1_var) +#pragma acc update host(_g4a1_var) +#pragma acc update host(_monitor_2_position_var) +#pragma acc update host(_g4a2_var) +#pragma acc update host(_g4a3_var) +#pragma acc update host(_fo4_position_var) +#pragma acc update host(_fo_chopper_4_var) +#pragma acc update host(_g4b1_var) +#pragma acc update host(_g4b2_var) +#pragma acc update host(_g4b3_var) +#pragma acc update host(_g4b4_var) +#pragma acc update host(_g4b5_var) +#pragma acc update host(_g4b6_var) +#pragma acc update host(_g5a1_var) +#pragma acc update host(_fo5_position_var) +#pragma acc update host(_fo_chopper_5_var) +#pragma acc update host(_g5b1_var) +#pragma acc update host(_g5b2_var) +#pragma acc update host(_g5b3_var) +#pragma acc update host(_g5b4_var) +#pragma acc update host(_g5b5_var) +#pragma acc update host(_g5b6_var) +#pragma acc update host(_g6a1_var) +#pragma acc update host(_g6a2_var) +#pragma acc update host(_g6a3_var) +#pragma acc update host(_guide_end_var) +#pragma acc update host(_monitor_3_position_var) +#pragma acc update host(_start_backend_var) +#pragma acc update host(_optical_axis_backend_var) +#pragma acc update host(_pinhole_2_var) +#pragma acc update host(_graph_var) +#pragma acc update host(_sample_monitor_arm_var) +#pragma acc update host(_sample_PSD_var) +#pragma acc update host(_profile_x_var) +#pragma acc update host(_profile_y_var) +#pragma acc update host(_wavelength_var) +#pragma acc update host(_tof_var) +#pragma acc update host(_wavelength_tof_var) +#pragma acc update host(_sample_position_var) +#pragma acc update host(_instrument_var) + + siminfo_init(NULL); + save(siminfo_file); /* save data when simulation ends */ + + /* call iteratively all components FINALLY */ + class_Progress_bar_finally(&_Origin_var); + + + + + + + class_Guide_four_side_finally(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_finally(&_g1a2_var); + + class_Guide_four_side_finally(&_g1a3_var); + + class_Guide_four_side_finally(&_g1b1_var); + + class_Guide_four_side_finally(&_g1c1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_2_var); + + class_Guide_four_side_finally(&_g2a1_var); + + + class_Guide_four_side_finally(&_g2a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_1_var); + + + + class_Guide_four_side_finally(&_g2b1_var); + + class_Guide_four_side_finally(&_g2b2_var); + + class_Guide_four_side_finally(&_g2b3_var); + + class_Guide_four_side_finally(&_g2b4_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_2_var); + + + + class_Guide_four_side_finally(&_g2c1_var); + + + + + + class_Guide_four_side_finally(&_g3a1_var); + + class_Guide_four_side_finally(&_g3a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_3_var); + + class_Guide_four_side_finally(&_g3b1_var); + + class_Guide_four_side_finally(&_g4a1_var); + + + class_Guide_four_side_finally(&_g4a2_var); + + class_Guide_four_side_finally(&_g4a3_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_4_var); + + class_Guide_four_side_finally(&_g4b1_var); + + class_Guide_four_side_finally(&_g4b2_var); + + class_Guide_four_side_finally(&_g4b3_var); + + class_Guide_four_side_finally(&_g4b4_var); + + class_Guide_four_side_finally(&_g4b5_var); + + class_Guide_four_side_finally(&_g4b6_var); + + class_Guide_four_side_finally(&_g5a1_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_5_var); + + class_Guide_four_side_finally(&_g5b1_var); + + class_Guide_four_side_finally(&_g5b2_var); + + class_Guide_four_side_finally(&_g5b3_var); + + class_Guide_four_side_finally(&_g5b4_var); + + class_Guide_four_side_finally(&_g5b5_var); + + class_Guide_four_side_finally(&_g5b6_var); + + class_Guide_four_side_finally(&_g6a1_var); + + class_Guide_four_side_finally(&_g6a2_var); + + class_Guide_four_side_finally(&_g6a3_var); + + + + + + + + + class_Monitor_nD_finally(&_sample_PSD_var); + + class_Monitor_nD_finally(&_profile_x_var); + + class_Monitor_nD_finally(&_profile_y_var); + + class_Monitor_nD_finally(&_wavelength_var); + + class_Monitor_nD_finally(&_tof_var); + + class_Monitor_nD_finally(&_wavelength_tof_var); + + + siminfo_close(); + + return(0); +} /* finally */ + +/* ***************************************************************************** +* instrument 'ODIN_TOF_train3' and components DISPLAY +***************************************************************************** */ + + #define magnify mcdis_magnify + #define line mcdis_line + #define dashed_line mcdis_dashed_line + #define multiline mcdis_multiline + #define rectangle mcdis_rectangle + #define box mcdis_box + #define circle mcdis_circle + #define cylinder mcdis_cylinder + #define sphere mcdis_sphere + #define cone mcdis_cone + #define polygon mcdis_polygon + #define polyhedron mcdis_polyhedron +_class_Progress_bar *class_Progress_bar_display(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_display] component Origin=Progress_bar() DISPLAY [Progress_bar:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_display */ + +_class_Arm *class_Arm_display(_class_Arm *_comp +) { + SIG_MESSAGE("[_optical_axis_display] component optical_axis=Arm() DISPLAY [Arm:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + /* A bit ugly; hard-coded dimensions. */ + + line (0, 0, 0, 0.2, 0, 0); + line (0, 0, 0, 0, 0.2, 0); + line (0, 0, 0, 0, 0, 0.2); + + cone (0.2, 0, 0, 0.01, 0.02, 1, 0, 0); + cone (0, 0.2, 0, 0.01, 0.02, 0, 1, 0); + cone (0, 0, 0.2, 0.01, 0.02, 0, 0, 1); + return(_comp); +} /* class_Arm_display */ + +_class_ESS_butterfly *class_ESS_butterfly_display(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define target_tsplit (_comp->_parameters.target_tsplit) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_display] component Source=ESS_butterfly() DISPLAY [ESS_butterfly:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef target_tsplit + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_display */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_display(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_display] component bi=bi_spec_ellipse() DISPLAY [bi_spec_ellipse:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_display] component NBOA_drawing_1_end=Guide_four_side() DISPLAY [Guide_four_side:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int i, imax; + double x1, y1, Z, x2, y2, Z1, Z0wr, Z0wl, Z0hu, Z0hd, xwt, ywt, x1wt, y1wt; + double mr, ml, mu, md, nr1, nl1, nu1, nd1, nr2, nl2, nu2, nd2; + double lbwl, lbwr, lbhu, lbhd; /* length between focal points , needed for elliptic case */ + + double x11, y11, x21, y21, Z11, Z0wr1, Z0wl1, Z0hu1, Z0hd1, xwt1, ywt1, x1wt1, y1wt1; + double mr1, ml1, mu1, md1, nr11, nl11, nu11, nd11, nr21, nl21, nu21, nd21; + double lbwl1, lbwr1, lbhu1, lbhd1; + + double x12, y12, x22, y22, Z12, Z0wr2, Z0wl2, Z0hu2, Z0hd2, xwt2, ywt2, x1wt2, y1wt2; + double mr2, ml2, mu2, md2, nr12, nl12, nu12, nd12, nr22, nl22, nu22, nd22; + double lbwl2, lbwr2, lbhu2, lbhd2; + + magnify ("xy"); + + imax = 100; /* maximum points for every line in Z direction*/ + + lbwr = linwr + l + loutwr; + lbwl = linwl + l + loutwl; + lbhu = linhu + l + louthu; + lbhd = linhd + l + louthd; + + if (linwr == 0 && loutwr == 0) { + mr = (-w2r + w1r) / l; + nr1 = -w1r; + nr2 = -(w1rwt); + } + + if (linwl == 0 && loutwl == 0) { + ml = (w2l - w1l) / l; + nl1 = w1l; + nl2 = (w1lwt); + } + + if (linhu == 0 && louthu == 0) { + mu = (h2u - h1u) / l; + nu1 = h1u; + nu2 = (h1uwt); + } + + if (linhd == 0 && louthd == 0) { + md = (-h2d + h1d) / l; + nd1 = -h1d; + nd2 = -(h1dwt); + } + + Z0wr = (linwr - l - loutwr) / 2.0; + Z0wl = (linwl - l - loutwl) / 2.0; + Z0hu = lbhu / 2.0 - l - louthu; + Z0hd = lbhd / 2.0 - l - louthd; + + if (myd != -1) + line (w1l, -h1d, 0.0, -w1r, -h1d, 0.0); /* entrance window given by the INNER walls*/ + if (myu != -1) + line (w1l, h1u, 0.0, -w1r, h1u, 0.0); + if (mxl != -1) + line (w1l, -h1d, 0.0, w1l, h1u, 0.0); + if (mxr != -1) + line (-w1r, h1u, 0.0, -w1r, -h1d, 0.0); + + if (myd != -1) + line (w2l, -h2d, l, -w2r, -h2d, l); /* exit window given by the INNER walls*/ + if (myu != -1) + line (w2l, h2u, l, -w2r, h2u, l); + if (mxl != -1) + line (w2l, -h2d, l, w2l, h2u, l); + if (mxr != -1) + line (-w2r, -h2d, l, -w2r, h2u, l); + + if (mydOW != -1) + line ((w1lwt), -(h1dwt), 0.0, -(w1rwt), -(h1dwt), 0.0); /* entrance window given by the OUTER walls */ + if (myuOW != -1) + line ((w1lwt), (h1uwt), 0.0, -(w1rwt), (h1uwt), 0.0); + if (mxlOW != -1) + line ((w1lwt), -(h1dwt), 0.0, (w1lwt), (h1uwt), 0.0); + if (mxrOW != -1) + line (-(w1rwt), (h1uwt), 0.0, -(w1rwt), -(h1dwt), 0.0); + + if (mydOW != -1) + line ((w2lwt), -(h2dwt), l, -(w2rwt), -(h2dwt), l); /* exit windows given by the OUTER walls*/ + if (myuOW != -1) + line ((w2lwt), (h2uwt), l, -(w2rwt), (h2uwt), l); + if (mxlOW != -1) + line ((w2lwt), -(h2dwt), l, (w2lwt), (h2uwt), l); + if (mxrOW != -1) + line (-(w2rwt), -(h2dwt), l, -(w2rwt), (h2uwt), l); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, -h1d, 0.0, (w1lwt), -(h1dwt), 0.0); /* corner connection lines for the entrance windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, h1u, 0.0, (w1lwt), (h1uwt), 0.0); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, -h1d, 0.0, -(w1rwt), -(h1dwt), 0.0); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, h1u, 0.0, -(w1rwt), (h1uwt), 0.0); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, -h2d, l, (w2lwt), -(h2dwt), l); /* corner connection lines for the exit windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, h2u, l, (w2lwt), (h2uwt), l); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, -h2d, l, -(w2rwt), -(h2dwt), l); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, h2u, l, -(w2rwt), (h2uwt), l); + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxl != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxr != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxr != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxl != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } /* END INNER LINES*/ + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxlOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxrOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxrOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxlOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_display */ + +_class_MultiDiskChopper *class_MultiDiskChopper_display(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_display] component wfmc_1=MultiDiskChopper() DISPLAY [MultiDiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_display */ + +_class_Slit *class_Slit_display(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_display] component pinhole_1=Slit() DISPLAY [Slit:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + if (is_unset (radius)) { + double xw, yh; + xw = (xmax - xmin) / 2.0; + yh = (ymax - ymin) / 2.0; + multiline (3, xmin - xw, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, ymax + yh, 0.0); + multiline (3, xmax + xw, (double)ymax, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmax, ymax + yh, 0.0); + multiline (3, xmin - xw, (double)ymin, 0.0, (double)xmin, (double)ymin, 0.0, (double)xmin, ymin - yh, 0.0); + multiline (3, xmax + xw, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, ymin - yh, 0.0); + } else { + circle ("xy", 0, 0, 0, radius); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_display */ + +_class_DiskChopper *class_DiskChopper_display(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_display] component bp1_chopper=DiskChopper() DISPLAY [DiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_display */ + +_class_Graphite_Diffuser *class_Graphite_Diffuser_display(_class_Graphite_Diffuser *_comp +) { + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_display] component graph=Graphite_Diffuser() DISPLAY [Graphite_Diffuser:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + magnify("xy"); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)-ywidth/2, 0.0); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)-ywidth/2, (double)thick); + line(-xwidth/2, -ywidth/2, 0.0, -xwidth/2, -ywidth/2, thick); + line(xwidth/2, -ywidth/2, 0.0, xwidth/2, -ywidth/2, thick); + line(-xwidth/2, ywidth/2, 0.0, -xwidth/2, ywidth/2, thick); + line(xwidth/2, ywidth/2, 0.0, xwidth/2, ywidth/2, thick); + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return(_comp); +} /* class_Graphite_Diffuser_display */ + +_class_Monitor_nD *class_Monitor_nD_display(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_display] component sample_PSD=Monitor_nD() DISPLAY [Monitor_nD:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_display */ + + + #undef magnify + #undef line + #undef dashed_line + #undef multiline + #undef rectangle + #undef box + #undef circle + #undef cylinder + #undef sphere + +int display(void) { /* called by mccode_main for ODIN_TOF_train3:DISPLAY */ + printf("MCDISPLAY: start\n"); + + /* call iteratively all components DISPLAY */ + class_Progress_bar_display(&_Origin_var); + + class_Arm_display(&_optical_axis_var); + + class_ESS_butterfly_display(&_Source_var); + + class_Arm_display(&_Start_of_bi_var); + + class_bi_spec_ellipse_display(&_bi_var); + + class_Arm_display(&_End_of_bi_var); + + class_Guide_four_side_display(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_display(&_g1a2_var); + + class_Guide_four_side_display(&_g1a3_var); + + class_Guide_four_side_display(&_g1b1_var); + + class_Guide_four_side_display(&_g1c1_var); + + class_Arm_display(&_wfm_position_var); + + class_Arm_display(&_wfm_1_position_var); + + class_MultiDiskChopper_display(&_wfmc_1_var); + + class_Slit_display(&_pinhole_1_var); + + class_Arm_display(&_wfm_2_position_var); + + class_MultiDiskChopper_display(&_wfmc_2_var); + + class_Guide_four_side_display(&_g2a1_var); + + class_Arm_display(&_monitor_1_position_var); + + class_Guide_four_side_display(&_g2a2_var); + + class_Arm_display(&_fo1_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_1_var); + + class_Arm_display(&_bp1_position_var); + + class_DiskChopper_display(&_bp1_chopper_var); + + class_Guide_four_side_display(&_g2b1_var); + + class_Guide_four_side_display(&_g2b2_var); + + class_Guide_four_side_display(&_g2b3_var); + + class_Guide_four_side_display(&_g2b4_var); + + class_Arm_display(&_fo2_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_2_var); + + class_Arm_display(&_bp2_position_var); + + class_DiskChopper_display(&_bp_chopper2_var); + + class_Guide_four_side_display(&_g2c1_var); + + class_Arm_display(&_t0_start_position_var); + + class_DiskChopper_display(&_t0_chopper_alpha_var); + + class_Arm_display(&_t0_end_position_var); + + class_DiskChopper_display(&_t0_chopper_beta_var); + + class_Guide_four_side_display(&_g3a1_var); + + class_Guide_four_side_display(&_g3a2_var); + + class_Arm_display(&_fo3_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_3_var); + + class_Guide_four_side_display(&_g3b1_var); + + class_Guide_four_side_display(&_g4a1_var); + + class_Arm_display(&_monitor_2_position_var); + + class_Guide_four_side_display(&_g4a2_var); + + class_Guide_four_side_display(&_g4a3_var); + + class_Arm_display(&_fo4_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_4_var); + + class_Guide_four_side_display(&_g4b1_var); + + class_Guide_four_side_display(&_g4b2_var); + + class_Guide_four_side_display(&_g4b3_var); + + class_Guide_four_side_display(&_g4b4_var); + + class_Guide_four_side_display(&_g4b5_var); + + class_Guide_four_side_display(&_g4b6_var); + + class_Guide_four_side_display(&_g5a1_var); + + class_Arm_display(&_fo5_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_5_var); + + class_Guide_four_side_display(&_g5b1_var); + + class_Guide_four_side_display(&_g5b2_var); + + class_Guide_four_side_display(&_g5b3_var); + + class_Guide_four_side_display(&_g5b4_var); + + class_Guide_four_side_display(&_g5b5_var); + + class_Guide_four_side_display(&_g5b6_var); + + class_Guide_four_side_display(&_g6a1_var); + + class_Guide_four_side_display(&_g6a2_var); + + class_Guide_four_side_display(&_g6a3_var); + + class_Arm_display(&_guide_end_var); + + class_Arm_display(&_monitor_3_position_var); + + class_Arm_display(&_start_backend_var); + + class_Arm_display(&_optical_axis_backend_var); + + class_Slit_display(&_pinhole_2_var); + + class_Graphite_Diffuser_display(&_graph_var); + + class_Arm_display(&_sample_monitor_arm_var); + + class_Monitor_nD_display(&_sample_PSD_var); + + class_Monitor_nD_display(&_profile_x_var); + + class_Monitor_nD_display(&_profile_y_var); + + class_Monitor_nD_display(&_wavelength_var); + + class_Monitor_nD_display(&_tof_var); + + class_Monitor_nD_display(&_wavelength_tof_var); + + class_Arm_display(&_sample_position_var); + + printf("MCDISPLAY: end\n"); + + return(0); +} /* display */ + +void* _getvar_parameters(char* compname) +/* enables settings parameters based use of the GETPAR macro */ +{ + #ifdef OPENACC + #define strcmp(a,b) str_comp(a,b) + #endif + if (!strcmp(compname, "Origin")) return (void *) &(_Origin_var._parameters); + if (!strcmp(compname, "optical_axis")) return (void *) &(_optical_axis_var._parameters); + if (!strcmp(compname, "Source")) return (void *) &(_Source_var._parameters); + if (!strcmp(compname, "Start_of_bi")) return (void *) &(_Start_of_bi_var._parameters); + if (!strcmp(compname, "bi")) return (void *) &(_bi_var._parameters); + if (!strcmp(compname, "End_of_bi")) return (void *) &(_End_of_bi_var._parameters); + if (!strcmp(compname, "NBOA_drawing_1_end")) return (void *) &(_NBOA_drawing_1_end_var._parameters); + if (!strcmp(compname, "g1a2")) return (void *) &(_g1a2_var._parameters); + if (!strcmp(compname, "g1a3")) return (void *) &(_g1a3_var._parameters); + if (!strcmp(compname, "g1b1")) return (void *) &(_g1b1_var._parameters); + if (!strcmp(compname, "g1c1")) return (void *) &(_g1c1_var._parameters); + if (!strcmp(compname, "wfm_position")) return (void *) &(_wfm_position_var._parameters); + if (!strcmp(compname, "wfm_1_position")) return (void *) &(_wfm_1_position_var._parameters); + if (!strcmp(compname, "wfmc_1")) return (void *) &(_wfmc_1_var._parameters); + if (!strcmp(compname, "pinhole_1")) return (void *) &(_pinhole_1_var._parameters); + if (!strcmp(compname, "wfm_2_position")) return (void *) &(_wfm_2_position_var._parameters); + if (!strcmp(compname, "wfmc_2")) return (void *) &(_wfmc_2_var._parameters); + if (!strcmp(compname, "g2a1")) return (void *) &(_g2a1_var._parameters); + if (!strcmp(compname, "monitor_1_position")) return (void *) &(_monitor_1_position_var._parameters); + if (!strcmp(compname, "g2a2")) return (void *) &(_g2a2_var._parameters); + if (!strcmp(compname, "fo1_position")) return (void *) &(_fo1_position_var._parameters); + if (!strcmp(compname, "fo_chopper_1")) return (void *) &(_fo_chopper_1_var._parameters); + if (!strcmp(compname, "bp1_position")) return (void *) &(_bp1_position_var._parameters); + if (!strcmp(compname, "bp1_chopper")) return (void *) &(_bp1_chopper_var._parameters); + if (!strcmp(compname, "g2b1")) return (void *) &(_g2b1_var._parameters); + if (!strcmp(compname, "g2b2")) return (void *) &(_g2b2_var._parameters); + if (!strcmp(compname, "g2b3")) return (void *) &(_g2b3_var._parameters); + if (!strcmp(compname, "g2b4")) return (void *) &(_g2b4_var._parameters); + if (!strcmp(compname, "fo2_position")) return (void *) &(_fo2_position_var._parameters); + if (!strcmp(compname, "fo_chopper_2")) return (void *) &(_fo_chopper_2_var._parameters); + if (!strcmp(compname, "bp2_position")) return (void *) &(_bp2_position_var._parameters); + if (!strcmp(compname, "bp_chopper2")) return (void *) &(_bp_chopper2_var._parameters); + if (!strcmp(compname, "g2c1")) return (void *) &(_g2c1_var._parameters); + if (!strcmp(compname, "t0_start_position")) return (void *) &(_t0_start_position_var._parameters); + if (!strcmp(compname, "t0_chopper_alpha")) return (void *) &(_t0_chopper_alpha_var._parameters); + if (!strcmp(compname, "t0_end_position")) return (void *) &(_t0_end_position_var._parameters); + if (!strcmp(compname, "t0_chopper_beta")) return (void *) &(_t0_chopper_beta_var._parameters); + if (!strcmp(compname, "g3a1")) return (void *) &(_g3a1_var._parameters); + if (!strcmp(compname, "g3a2")) return (void *) &(_g3a2_var._parameters); + if (!strcmp(compname, "fo3_position")) return (void *) &(_fo3_position_var._parameters); + if (!strcmp(compname, "fo_chopper_3")) return (void *) &(_fo_chopper_3_var._parameters); + if (!strcmp(compname, "g3b1")) return (void *) &(_g3b1_var._parameters); + if (!strcmp(compname, "g4a1")) return (void *) &(_g4a1_var._parameters); + if (!strcmp(compname, "monitor_2_position")) return (void *) &(_monitor_2_position_var._parameters); + if (!strcmp(compname, "g4a2")) return (void *) &(_g4a2_var._parameters); + if (!strcmp(compname, "g4a3")) return (void *) &(_g4a3_var._parameters); + if (!strcmp(compname, "fo4_position")) return (void *) &(_fo4_position_var._parameters); + if (!strcmp(compname, "fo_chopper_4")) return (void *) &(_fo_chopper_4_var._parameters); + if (!strcmp(compname, "g4b1")) return (void *) &(_g4b1_var._parameters); + if (!strcmp(compname, "g4b2")) return (void *) &(_g4b2_var._parameters); + if (!strcmp(compname, "g4b3")) return (void *) &(_g4b3_var._parameters); + if (!strcmp(compname, "g4b4")) return (void *) &(_g4b4_var._parameters); + if (!strcmp(compname, "g4b5")) return (void *) &(_g4b5_var._parameters); + if (!strcmp(compname, "g4b6")) return (void *) &(_g4b6_var._parameters); + if (!strcmp(compname, "g5a1")) return (void *) &(_g5a1_var._parameters); + if (!strcmp(compname, "fo5_position")) return (void *) &(_fo5_position_var._parameters); + if (!strcmp(compname, "fo_chopper_5")) return (void *) &(_fo_chopper_5_var._parameters); + if (!strcmp(compname, "g5b1")) return (void *) &(_g5b1_var._parameters); + if (!strcmp(compname, "g5b2")) return (void *) &(_g5b2_var._parameters); + if (!strcmp(compname, "g5b3")) return (void *) &(_g5b3_var._parameters); + if (!strcmp(compname, "g5b4")) return (void *) &(_g5b4_var._parameters); + if (!strcmp(compname, "g5b5")) return (void *) &(_g5b5_var._parameters); + if (!strcmp(compname, "g5b6")) return (void *) &(_g5b6_var._parameters); + if (!strcmp(compname, "g6a1")) return (void *) &(_g6a1_var._parameters); + if (!strcmp(compname, "g6a2")) return (void *) &(_g6a2_var._parameters); + if (!strcmp(compname, "g6a3")) return (void *) &(_g6a3_var._parameters); + if (!strcmp(compname, "guide_end")) return (void *) &(_guide_end_var._parameters); + if (!strcmp(compname, "monitor_3_position")) return (void *) &(_monitor_3_position_var._parameters); + if (!strcmp(compname, "start_backend")) return (void *) &(_start_backend_var._parameters); + if (!strcmp(compname, "optical_axis_backend")) return (void *) &(_optical_axis_backend_var._parameters); + if (!strcmp(compname, "pinhole_2")) return (void *) &(_pinhole_2_var._parameters); + if (!strcmp(compname, "graph")) return (void *) &(_graph_var._parameters); + if (!strcmp(compname, "sample_monitor_arm")) return (void *) &(_sample_monitor_arm_var._parameters); + if (!strcmp(compname, "sample_PSD")) return (void *) &(_sample_PSD_var._parameters); + if (!strcmp(compname, "profile_x")) return (void *) &(_profile_x_var._parameters); + if (!strcmp(compname, "profile_y")) return (void *) &(_profile_y_var._parameters); + if (!strcmp(compname, "wavelength")) return (void *) &(_wavelength_var._parameters); + if (!strcmp(compname, "tof")) return (void *) &(_tof_var._parameters); + if (!strcmp(compname, "wavelength_tof")) return (void *) &(_wavelength_tof_var._parameters); + if (!strcmp(compname, "sample_position")) return (void *) &(_sample_position_var._parameters); + return 0; +} + +void* _get_particle_var(char *token, _class_particle *p) +/* enables setpars based use of GET_PARTICLE_DVAR macro and similar */ +{ + return 0; +} + +int _getcomp_index(char* compname) +/* Enables retrieving the component position & rotation when the index is not known. + * Component indexing into MACROS, e.g., POS_A_COMP_INDEX, are 1-based! */ +{ + if (!strcmp(compname, "Origin")) return 1; + if (!strcmp(compname, "optical_axis")) return 2; + if (!strcmp(compname, "Source")) return 3; + if (!strcmp(compname, "Start_of_bi")) return 4; + if (!strcmp(compname, "bi")) return 5; + if (!strcmp(compname, "End_of_bi")) return 6; + if (!strcmp(compname, "NBOA_drawing_1_end")) return 7; + if (!strcmp(compname, "g1a2")) return 8; + if (!strcmp(compname, "g1a3")) return 9; + if (!strcmp(compname, "g1b1")) return 10; + if (!strcmp(compname, "g1c1")) return 11; + if (!strcmp(compname, "wfm_position")) return 12; + if (!strcmp(compname, "wfm_1_position")) return 13; + if (!strcmp(compname, "wfmc_1")) return 14; + if (!strcmp(compname, "pinhole_1")) return 15; + if (!strcmp(compname, "wfm_2_position")) return 16; + if (!strcmp(compname, "wfmc_2")) return 17; + if (!strcmp(compname, "g2a1")) return 18; + if (!strcmp(compname, "monitor_1_position")) return 19; + if (!strcmp(compname, "g2a2")) return 20; + if (!strcmp(compname, "fo1_position")) return 21; + if (!strcmp(compname, "fo_chopper_1")) return 22; + if (!strcmp(compname, "bp1_position")) return 23; + if (!strcmp(compname, "bp1_chopper")) return 24; + if (!strcmp(compname, "g2b1")) return 25; + if (!strcmp(compname, "g2b2")) return 26; + if (!strcmp(compname, "g2b3")) return 27; + if (!strcmp(compname, "g2b4")) return 28; + if (!strcmp(compname, "fo2_position")) return 29; + if (!strcmp(compname, "fo_chopper_2")) return 30; + if (!strcmp(compname, "bp2_position")) return 31; + if (!strcmp(compname, "bp_chopper2")) return 32; + if (!strcmp(compname, "g2c1")) return 33; + if (!strcmp(compname, "t0_start_position")) return 34; + if (!strcmp(compname, "t0_chopper_alpha")) return 35; + if (!strcmp(compname, "t0_end_position")) return 36; + if (!strcmp(compname, "t0_chopper_beta")) return 37; + if (!strcmp(compname, "g3a1")) return 38; + if (!strcmp(compname, "g3a2")) return 39; + if (!strcmp(compname, "fo3_position")) return 40; + if (!strcmp(compname, "fo_chopper_3")) return 41; + if (!strcmp(compname, "g3b1")) return 42; + if (!strcmp(compname, "g4a1")) return 43; + if (!strcmp(compname, "monitor_2_position")) return 44; + if (!strcmp(compname, "g4a2")) return 45; + if (!strcmp(compname, "g4a3")) return 46; + if (!strcmp(compname, "fo4_position")) return 47; + if (!strcmp(compname, "fo_chopper_4")) return 48; + if (!strcmp(compname, "g4b1")) return 49; + if (!strcmp(compname, "g4b2")) return 50; + if (!strcmp(compname, "g4b3")) return 51; + if (!strcmp(compname, "g4b4")) return 52; + if (!strcmp(compname, "g4b5")) return 53; + if (!strcmp(compname, "g4b6")) return 54; + if (!strcmp(compname, "g5a1")) return 55; + if (!strcmp(compname, "fo5_position")) return 56; + if (!strcmp(compname, "fo_chopper_5")) return 57; + if (!strcmp(compname, "g5b1")) return 58; + if (!strcmp(compname, "g5b2")) return 59; + if (!strcmp(compname, "g5b3")) return 60; + if (!strcmp(compname, "g5b4")) return 61; + if (!strcmp(compname, "g5b5")) return 62; + if (!strcmp(compname, "g5b6")) return 63; + if (!strcmp(compname, "g6a1")) return 64; + if (!strcmp(compname, "g6a2")) return 65; + if (!strcmp(compname, "g6a3")) return 66; + if (!strcmp(compname, "guide_end")) return 67; + if (!strcmp(compname, "monitor_3_position")) return 68; + if (!strcmp(compname, "start_backend")) return 69; + if (!strcmp(compname, "optical_axis_backend")) return 70; + if (!strcmp(compname, "pinhole_2")) return 71; + if (!strcmp(compname, "graph")) return 72; + if (!strcmp(compname, "sample_monitor_arm")) return 73; + if (!strcmp(compname, "sample_PSD")) return 74; + if (!strcmp(compname, "profile_x")) return 75; + if (!strcmp(compname, "profile_y")) return 76; + if (!strcmp(compname, "wavelength")) return 77; + if (!strcmp(compname, "tof")) return 78; + if (!strcmp(compname, "wavelength_tof")) return 79; + if (!strcmp(compname, "sample_position")) return 80; + return -1; +} + +/* embedding file "metadata-r.c" */ + +/** --- Contents of metadata-r.c ---------------------------------------------------------------------------------- */ +// Created by Gregory Tucker, Data Management Software Centre, European Spallation Source ERIC on 07/07/23. +#ifndef MCCODE_NAME +#include "metadata-r.h" +#endif + +char * metadata_table_key_component(char* key){ + if (strlen(key) == 0) return NULL; + char sep[2] = ":\0"; // matches any number of repeated colons + // look for the separator in the provided key; strtok is allowed to modify the string, so copy it + char * tok = malloc((strlen(key) + 1) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) -- but we need to move the pointer + char * comp = malloc((1 + strlen(pch)) * sizeof(char)); + if (!comp) { + fprintf(stderr,"Error allocating comp\n"); + exit(-1); + } + strcpy(comp, pch); + if (tok) free(tok); + return comp; +} +char * metadata_table_key_literal(char * key){ + if (strlen(key) == 0) return NULL; + char sep[3] = ":\0"; + char * tok = malloc((strlen(key) + 1 ) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) + if (pch) pch = strtok(NULL, sep); // either NULL or the literal name + char * name = NULL; + if (pch) { + name = malloc((1 + strlen(pch)) * sizeof(char)); + if (!name) { + fprintf(stderr,"Error allocating name\n"); + exit(-1); + } + strcpy(name, pch); + } + if (tok) free(tok); + return name; +} +int metadata_table_defined(int no, metadata_table_t * tab, char * key){ + if (strlen(key) == 0){ + /* This is 0 instead of `no` independent of any wildcard-matching logic + * because a caller _already_ knows `no` and can verify + * that `key` is not "" at call-time. So returning `no` is useless. + */ + return 0; + } + char * comp = metadata_table_key_component(key); + char * name = metadata_table_key_literal(key); + // look through the table for the matching component and literal names + int number = 0; + for (int i=0; i 1) { + MPI_MASTER( + printf("Simulation '%s' (%s): running on %i nodes (master is '%s', MPI version %i.%i).\n", + instrument_name, instrument_source, mpi_node_count, mpi_node_name, MPI_VERSION, MPI_SUBVERSION); + ); + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per noe */ + } +#endif /* USE_MPI */ + +#ifdef OPENACC +#ifdef USE_MPI + int num_devices = acc_get_num_devices(acc_device_nvidia); + if(num_devices>0){ + int my_device = mpi_node_rank % num_devices; + acc_set_device_num( my_device, acc_device_nvidia ); + printf("Have found %d GPU devices on rank %d. Will use device %d.\n", num_devices, mpi_node_rank, my_device); + }else{ + printf("There was an issue probing acc_get_num_devices, fallback to host\n"); + acc_set_device_type( acc_device_host ); + } +#endif +#endif + + /* *** parse options ******************************************************* */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat = getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + instrument_exe = argv[0]; /* store the executable path */ + /* read simulation parameters and options */ + mcparseoptions(argc, argv); /* sets output dir and format */ + + +#ifdef USE_MPI + if (mpi_node_count > 1) { + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per node */ + } +#endif + + +/* *** install sig handler, but only once !! after parameters parsing ******* */ +#ifndef NOSIGNALS +#ifdef SIGQUIT + if (signal( SIGQUIT ,sighandler) == SIG_IGN) + signal( SIGQUIT,SIG_IGN); /* quit (ASCII FS) */ +#endif +#ifdef SIGABRT + if (signal( SIGABRT ,sighandler) == SIG_IGN) + signal( SIGABRT,SIG_IGN); /* used by abort, replace SIGIOT in the future */ +#endif +#ifdef SIGTERM + if (signal( SIGTERM ,sighandler) == SIG_IGN) + signal( SIGTERM,SIG_IGN); /* software termination signal from kill */ +#endif +#ifdef SIGUSR1 + if (signal( SIGUSR1 ,sighandler) == SIG_IGN) + signal( SIGUSR1,SIG_IGN); /* display simulation status */ +#endif +#ifdef SIGUSR2 + if (signal( SIGUSR2 ,sighandler) == SIG_IGN) + signal( SIGUSR2,SIG_IGN); +#endif +#ifdef SIGHUP + if (signal( SIGHUP ,sighandler) == SIG_IGN) + signal( SIGHUP,SIG_IGN); +#endif +#ifdef SIGILL + if (signal( SIGILL ,sighandler) == SIG_IGN) + signal( SIGILL,SIG_IGN); /* illegal instruction (not reset when caught) */ +#endif +#ifdef SIGFPE + if (signal( SIGFPE ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* floating point exception */ +#endif +#ifdef SIGBUS + if (signal( SIGBUS ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* bus error */ +#endif +#ifdef SIGSEGV + if (signal( SIGSEGV ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* segmentation violation */ +#endif +#endif /* !NOSIGNALS */ + + + // init executed by master/host + siminfo_init(NULL); /* open SIM */ + SIG_MESSAGE("[" __FILE__ "] main INITIALISE"); + init(); + + +#ifndef NOSIGNALS +#ifdef SIGINT + if (signal( SIGINT ,sighandler) == SIG_IGN) + signal( SIGINT,SIG_IGN); /* interrupt (rubout) only after INIT */ +#endif +#endif /* !NOSIGNALS */ + +/* ================ main particle generation/propagation loop ================ */ +#ifdef USE_MPI + /* sliced Ncount on each MPI node */ + mcncount = mpi_node_count > 1 ? + floor(mcncount / mpi_node_count) : + mcncount; /* number of rays per node */ +#endif + +// MT specific init, note that per-ray init is empty +#if RNG_ALG == 2 + mt_srandom(mcseed); +#endif + + +// main raytrace work loop +#ifndef FUNNEL + // legacy version + raytrace_all(mcncount, mcseed); +#else + MPI_MASTER( + // "funneled" version in which propagation is more parallelizable + printf("\nNOTE: CPU COMPONENT grammar activated:\n 1) \"FUNNEL\" raytrace algorithm enabled.\n 2) Any SPLIT's are dynamically allocated based on available buffer size. \n"); + ); + raytrace_all_funnel(mcncount, mcseed); +#endif + + +#ifdef USE_MPI + /* merge run_num from MPI nodes */ + if (mpi_node_count > 1) { + double mcrun_num_double = (double)mcrun_num; + mc_MPI_Sum(&mcrun_num_double, 1); + mcrun_num = (unsigned long long)mcrun_num_double; + } +#endif + + + // save/finally executed by master node/thread/host + finally(); + + +#ifdef USE_MPI + MPI_Finalize(); +#endif /* USE_MPI */ + + + return 0; +} /* mccode_main */ +/* End of file "mccode_main.c". */ + +/* end of generated C code ./ODIN_TOF_train4.c */ diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr new file mode 100644 index 0000000000..7e8730b8ff --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr @@ -0,0 +1,1027 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN_TOF_train4 +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* %Example: -y --tof-trains=1 Detector: tof_I=9.16671e+08 +* %Example: -y --tof-trains=10 Detector: tof_I=9.16671e+08 +* %Example: -y --tof-trains=100 Detector: tof_I=9.16671e+08 +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN_TOF_train3 ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2, // 0: no choppers 1: BP 2: WFM +target_tsplit = 3 +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap + +int adaptive_N; +long total_arrived; +long total_N_sent; +long total_rays_sent; +%} + +USERVARS +%{ +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + +adaptive_N=NTOF; +total_arrived=0; +total_N_sent=0; +total_rays_sent=0; + + +MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE + +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Origin + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0, + target_tsplit=target_tsplit) +AT (0, 0, 0) RELATIVE Origin + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]", + tsplit=1, adaptive_target=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", + tsplit=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/bi_spec_ellipse.comp new file mode 100644 index 0000000000..c24fb3cdea --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/bi_spec_ellipse.comp @@ -0,0 +1,794 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2011, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Bi-spectral extracion system +* +* %I +* Written by: Manuel Morgano +* Date: April 2015 +* Version: $Revision: 2.3 $ +* Origin: PSI +* Release: McStas 1.12c +* +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* +* %D +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* The supermirror number can be automatically calculated (setting the number to 0) or given +* Each mirror can be split in submirror pieces, each of them offseted by a constant angle +* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. +* The feeder's shape is calculated by the distance between the guide entrance and the first focus, +* the distance between the exit and the second focus, the length of the coated part and the opening +* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. +* User can specify different shapes for the horizontal and the vertical ellipse. +* Setting the m-coating to 0 means absorbing, -1 means transparent. +* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn +* but it's transparent. +* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. +* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. +* +* +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %P +* INPUT PARAMETERS: +* +* xheight: (m) height of mirror stack +* ywidth: (m) width of mirror plate +* zlength: (m) length of the mirror +* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) +* n_pieces (1) number of straight section per mirror +* tilt (degrees) angle between the mirrors and the horizontal direction +* angular_offset (degrees) angle between subsequent sub-mirrors +* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. +* R0_m: (1) Low-angle reflectivity +* Qc_m: (AA-1) Critical scattering vector +* alpha_mirror_m: (AA) Slope of reflectivity +* W_m: (AA-1) Width of supermirror cut-off +* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. +* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. +* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. +* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. +* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. +* ell_l: (m) length of the coated part of the ellipse +* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors +* ell_w: (m) width of the ellipse entrance +* ell_m: (1) m-value of the coating of the ellipse +* R0: (1) Low-angle reflectivity +* Qc: (AA-1) Critical scattering vector +* alpha_mirror: (AA) Slope of reflectivity +* W: (AA-1) Width of supermirror cut-off +* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* cut: (1) cutoff for lowest reflectivity consideration. +* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file +* +* %D +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT bi_spec_ellipse +DEFINITION PARAMETERS () + SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) +OUTPUT PARAMETERS (pTable) +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) + +SHARE +%{ +%include "read_table-lib" +%} + +DECLARE +%{ + t_Table pTable; + +%} + +INITIALIZE +%{ + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + +%} + +TRACE +%{ + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +%} + +MCDISPLAY +%{ + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i Date: Fri, 27 Feb 2026 20:41:16 +0100 Subject: [PATCH 25/75] Remove .c junk --- .../ODIN_TOF_train4/ODIN_TOF_train4.c | 34658 ---------------- 1 file changed, 34658 deletions(-) delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.c diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.c deleted file mode 100644 index 573ee02ff4..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.c +++ /dev/null @@ -1,34658 +0,0 @@ -/* Automatically generated file. Do not edit. - * Format: ANSI C source code - * Creator: McStas - * Instrument: ODIN_TOF_train4.instr (ODIN_TOF_train3) - * Date: Fri Feb 27 20:30:36 2026 - * File: ./ODIN_TOF_train4.c - * CFLAGS= -DTOF_TRAIN - */ - -#ifndef WIN32 -# ifndef OPENACC -# define _GNU_SOURCE -# endif -# define _POSIX_C_SOURCE 200809L -#endif -/* In case of cl.exe on Windows, supppress warnings about #pragma acc */ -#ifdef _MSC_EXTENSIONS -#pragma warning(disable: 4068) -#endif - -#define MCCODE_STRING " 3.99.99, git" -#define FLAVOR "mcstas" -#define FLAVOR_UPPER "MCSTAS" - -#define MC_USE_DEFAULT_MAIN -#define MC_TRACE_ENABLED - -#include -#include - -typedef double MCNUM; -typedef struct {MCNUM x, y, z;} Coords; -typedef MCNUM Rotation[3][3]; -#define MCCODE_BASE_TYPES - -/* available random number generators */ -#define _RNG_ALG_MT 1 -#define _RNG_ALG_KISS 2 -/* selection of random number generator */ -#ifndef RNG_ALG -# define RNG_ALG _RNG_ALG_KISS -#endif -#if RNG_ALG == _RNG_ALG_MT // MT -#define randstate_t uint32_t -#elif RNG_ALG == _RNG_ALG_KISS // KISS -#define randstate_t uint64_t -#endif - -#ifndef MC_NUSERVAR -#define MC_NUSERVAR 10 -#endif - -/* Particle JUMP control logic */ -struct particle_logic_struct { -int dummy; -}; - -struct _struct_particle { - double x,y,z; /* position [m] */ - double vx,vy,vz; /* velocity [m/s] */ - double sx,sy,sz; /* spin [0-1] */ - int mcgravitation; /* gravity-state */ - void *mcMagnet; /* precession-state */ - int allow_backprop; /* allow backprop */ - /* Generic Temporaries: */ - /* May be used internally by components e.g. for special */ - /* return-values from functions used in trace, thusreturned via */ - /* particle struct. (Example: Wolter Conics from McStas, silicon slabs.) */ - double _mctmp_a; /* temp a */ - double _mctmp_b; /* temp b */ - double _mctmp_c; /* temp c */ - randstate_t randstate[7]; - double t, p; /* time, event weight */ - #ifdef TOF_TRAIN - int N_trains; /* initialised like e.g. ncount, seed from cmdline */ - double *t_offset; - double *p_trains; - int *alive_trains; - double p_last_time_manipulation; - #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains) - #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains) - #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains) - int Ntof_init; /* 0/1 - set to 1 once "times are filled in" */ - #endif /* TOF_TRAIN */ - long long _uid; /* Unique event ID */ - long _index; /* component index where to send this event */ - long _absorbed; /* flag set to TRUE when this event is to be removed/ignored */ - long _scattered; /* flag set to TRUE when this event has interacted with the last component instance */ - long _restore; /* set to true if neutron event must be restored */ - long flag_nocoordschange; /* set to true if particle is jumping */ - struct particle_logic_struct _logic; -}; -typedef struct _struct_particle _class_particle; - -_class_particle _particle_global_randnbuse_var; -_class_particle* _particle = &_particle_global_randnbuse_var; - -#pragma acc routine -_class_particle mcgenstate(void); -#pragma acc routine -_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, - double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF); -#pragma acc routine -_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, - double *vx, double *vy, double *vz, double *t, - double *sx, double *sy, double *sz, double *p); - -extern int mcgravitation; /* flag to enable gravitation */ -#pragma acc declare create ( mcgravitation ) - -extern int NTOF; /* TOF_train suppport */ -#pragma acc declare create ( NTOF ) - -_class_particle mcgenstate(void) { - _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0, NTOF); - return(particle); -} -/*Generated user variable handlers:*/ - -#pragma acc routine -double particle_getvar(_class_particle *p, char *name, int *suc); - -#ifdef OPENACC -#pragma acc routine -int str_comp(char *str1, char *str2); -#endif - -double particle_getvar(_class_particle *p, char *name, int *suc){ -#ifndef OPENACC -#define str_comp strcmp -#endif - int s=1; - double rval=0; - if(!str_comp("x",name)){rval=p->x;s=0;} - if(!str_comp("y",name)){rval=p->y;s=0;} - if(!str_comp("z",name)){rval=p->z;s=0;} - if(!str_comp("vx",name)){rval=p->vx;s=0;} - if(!str_comp("vy",name)){rval=p->vy;s=0;} - if(!str_comp("vz",name)){rval=p->vz;s=0;} - if(!str_comp("sx",name)){rval=p->sx;s=0;} - if(!str_comp("sy",name)){rval=p->sy;s=0;} - if(!str_comp("sz",name)){rval=p->sz;s=0;} - if(!str_comp("t",name)){rval=p->t;s=0;} - if(!str_comp("p",name)){rval=p->p;s=0;} - if(!str_comp("_mctmp_a",name)){rval=p->_mctmp_a;s=0;} - if(!str_comp("_mctmp_b",name)){rval=p->_mctmp_b;s=0;} - if(!str_comp("_mctmp_c",name)){rval=p->_mctmp_c;s=0;} - if (suc!=0x0) {*suc=s;} - return rval; -} - -#pragma acc routine -void* particle_getvar_void(_class_particle *p, char *name, int *suc); - -#ifdef OPENACC -#pragma acc routine -int str_comp(char *str1, char *str2); -#endif - -void* particle_getvar_void(_class_particle *p, char *name, int *suc){ -#ifndef OPENACC -#define str_comp strcmp -#endif - int s=1; - void* rval=0; - if(!str_comp("x",name)) {rval=(void*)&(p->x); s=0;} - if(!str_comp("y",name)) {rval=(void*)&(p->y); s=0;} - if(!str_comp("z",name)) {rval=(void*)&(p->z); s=0;} - if(!str_comp("vx",name)){rval=(void*)&(p->vx);s=0;} - if(!str_comp("vy",name)){rval=(void*)&(p->vy);s=0;} - if(!str_comp("vz",name)){rval=(void*)&(p->vz);s=0;} - if(!str_comp("sx",name)){rval=(void*)&(p->sx);s=0;} - if(!str_comp("sy",name)){rval=(void*)&(p->sy);s=0;} - if(!str_comp("sz",name)){rval=(void*)&(p->sz);s=0;} - if(!str_comp("t",name)) {rval=(void*)&(p->t); s=0;} - if(!str_comp("p",name)) {rval=(void*)&(p->p); s=0;} - if (suc!=0x0) {*suc=s;} - return rval; -} - -#pragma acc routine -int particle_setvar_void(_class_particle *, char *, void*); - -int particle_setvar_void(_class_particle *p, char *name, void* value){ -#ifndef OPENACC -#define str_comp strcmp -#endif - int rval=1; - if(!str_comp("x",name)) {memcpy(&(p->x), value, sizeof(double)); rval=0;} - if(!str_comp("y",name)) {memcpy(&(p->y), value, sizeof(double)); rval=0;} - if(!str_comp("z",name)) {memcpy(&(p->z), value, sizeof(double)); rval=0;} - if(!str_comp("vx",name)){memcpy(&(p->vx), value, sizeof(double)); rval=0;} - if(!str_comp("vy",name)){memcpy(&(p->vy), value, sizeof(double)); rval=0;} - if(!str_comp("vz",name)){memcpy(&(p->vz), value, sizeof(double)); rval=0;} - if(!str_comp("sx",name)){memcpy(&(p->sx), value, sizeof(double)); rval=0;} - if(!str_comp("sy",name)){memcpy(&(p->sy), value, sizeof(double)); rval=0;} - if(!str_comp("sz",name)){memcpy(&(p->sz), value, sizeof(double)); rval=0;} - if(!str_comp("p",name)) {memcpy(&(p->p), value, sizeof(double)); rval=0;} - if(!str_comp("t",name)) {memcpy(&(p->t), value, sizeof(double)); rval=0;} - return rval; -} - -#pragma acc routine -int particle_setvar_void_array(_class_particle *, char *, void*, int); - -int particle_setvar_void_array(_class_particle *p, char *name, void* value, int elements){ -#ifndef OPENACC -#define str_comp strcmp -#endif - int rval=1; - return rval; -} - -#pragma acc routine -void particle_restore(_class_particle *p, _class_particle *p0); - -void particle_restore(_class_particle *p, _class_particle *p0) { - p->x = p0->x; p->y = p0->y; p->z = p0->z; - p->vx = p0->vx; p->vy = p0->vy; p->vz = p0->vz; - p->sx = p0->sx; p->sy = p0->sy; p->sz = p0->sz; - p->t = p0->t; p->p = p0->p; - p->_absorbed=0; p->_restore=0; -} - -#pragma acc routine -double particle_getuservar_byid(_class_particle *p, int id, int *suc){ - int s=1; - double rval=0; - switch(id){ - } - if (suc!=0x0) {*suc=s;} - return rval; -} - -#pragma acc routine -void particle_uservar_init(_class_particle *p){ -} - -#define MC_EMBEDDED_RUNTIME -/* embedding file "mccode-r.h" */ - -/******************************************************************************* -* -* McCode, neutron/xray ray-tracing package -* Copyright (C) 1997-2009, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Runtime: share/mccode-r.h -* -* %Identification -* Written by: KN -* Date: Aug 29, 1997 -* Release: mcstas 3.99.99 -* Version: $Revision$ -* -* Runtime system header for McStas/McXtrace. -* -* In order to use this library as an external library, the following variables -* and macros must be declared (see details in the code) -* -* struct mcinputtable_struct mcinputtable[]; -* int numipar; -* metadata_table_t metadata_table[]; -* int num_metadata; -* char instrument_name[], instrument_source[]; -* int traceenabled, defaultmain; -* extern MCNUM mccomp_storein[]; -* extern MCNUM mcAbsorbProp[]; -* extern MCNUM mcScattered; -* #define MCCODE_STRING "the McStas/McXtrace version" -* -* Usage: Automatically embbeded in the c code. -* -* $Id$ -* -*******************************************************************************/ - -#ifndef MCCODE_R_H -#define MCCODE_R_H "$Revision$" - -#include -#include -#include -#include -#include -#include -#include -#ifndef _MSC_EXTENSIONS -#include -#endif -#include -#include -#include -#ifdef OPENACC -#include -#ifndef GCCOFFLOAD -#include -#else -#include -#endif -#pragma acc routine -int noprintf(); -#pragma acc routine -size_t str_len(const char *s); -#else -#include -#endif - -/* In case of gcc / clang, ensure to use - the built-in isnan/isinf functions */ -#if defined(__GNUC__) || defined(__clang__) -# ifdef isnan -# undef isnan -# endif -# ifdef isinf -# undef isinf -# endif -# define isnan(x) __builtin_isnan(x) -# define isinf(x) __builtin_isinf(x) -#endif - -#ifdef _MSC_EXTENSIONS -#ifndef _TIMES_H -#define _TIMES_H - -#if defined(WIN32) || defined(_WIN32) -#include -#include -#include - -int gettimeofday(struct timeval* t,void* timezone); - -#define __need_clock_t -#include - - -/* Structure describing CPU time used by a process and its children. */ -struct tms - { - clock_t tms_utime; /* User CPU time. */ - clock_t tms_stime; /* System CPU time. */ - - clock_t tms_cutime; /* User CPU time of dead children. */ - clock_t tms_cstime; /* System CPU time of dead children. */ - }; - -/* Store the CPU time used by this process and all its - dead children (and their dead children) in BUFFER. - Return the elapsed real time, or (clock_t) -1 for errors. - All times are in CLK_TCKths of a second. */ -clock_t times (struct tms *__buffer); - -typedef long long suseconds_t ; - - - -int gettimeofday(struct timeval* t,void* timezone) -{ struct _timeb timebuffer; - _ftime( &timebuffer ); - t->tv_sec=timebuffer.time; - t->tv_usec=1000*timebuffer.millitm; - return 0; -} - -clock_t times (struct tms *__buffer) { - - __buffer->tms_utime = clock(); - __buffer->tms_stime = 0; - __buffer->tms_cstime = 0; - __buffer->tms_cutime = 0; - return __buffer->tms_utime; -} - - -#endif -#endif -#endif - -/* If the runtime is embedded in the simulation program, some definitions can - be made static. */ - -#ifdef MC_EMBEDDED_RUNTIME -# define mcstatic -#else -# define mcstatic -#endif - -#ifdef __dest_os -# if (__dest_os == __mac_os) -# define MAC -# endif -#endif - -#ifdef __FreeBSD__ -# define NEED_STAT_H -#endif - -#if defined(__APPLE__) && defined(__GNUC__) -# define NEED_STAT_H -#endif - -#if defined(WIN32) || defined(_WIN32) -# define NEED_STAT_H -# define NEED_TYPES_H -#endif - -#ifdef NEED_STAT_H -# include -#endif - -#ifdef NEED_TYPES_H -# include -#endif - -#ifndef MC_PATHSEP_C -#if defined(WIN32) || defined(_WIN32) -# define MC_PATHSEP_C '\\' -# define MC_PATHSEP_S "\\" -# else /* !WIN32 */ -# define MC_PATHSEP_C '/' -# define MC_PATHSEP_S "/" -# endif /* !WIN32 */ -#endif /* MC_PATHSEP_C */ - -#if defined(WIN32) || defined(_WIN32) -#if defined _MSC_VER -#include -#elif defined __GNUC__ -#include -#include -#include -#endif -#define mkdir(a,b) mkdir(a) -#define getpid() _getpid() -#endif - -/* the version string is replaced when building distribution with mkdist */ -#ifndef MCCODE_STRING -# define MCCODE_STRING " 3.99.99, git" -#endif - -#ifndef MCCODE_DATE -# define MCCODE_DATE "git" -#endif - -#ifndef MCCODE_VERSION -# define MCCODE_VERSION "3.99.99" -#endif - -#ifndef __MCCODE_VERSION__ -#define __MCCODE_VERSION__ 399099L -#endif - -#ifndef MCCODE_NAME -# define MCCODE_NAME "mcstas" -#endif - -#ifndef MCCODE_PARTICLE -# define MCCODE_PARTICLE "neutron" -#endif - -#ifndef MCCODE_PARTICLE_CODE -# define MCCODE_PARTICLE_CODE 2112 -#endif - -#ifndef MCCODE_LIBENV -# define MCCODE_LIBENV "MCSTAS" -#endif - -#ifndef FLAVOR_UPPER -# define FLAVOR_UPPER MCCODE_NAME -#endif - -#ifdef MC_PORTABLE -# ifndef NOSIGNALS -# define NOSIGNALS 1 -# endif -#endif - -#ifdef MAC -# ifndef NOSIGNALS -# define NOSIGNALS 1 -# endif -#endif - -#if (USE_MPI == 0) -# undef USE_MPI -#endif - -#ifdef USE_MPI /* default is to disable signals with MPI, as MPICH uses them to communicate */ -# ifndef NOSIGNALS -# define NOSIGNALS 1 -# endif -#endif - -#ifdef OPENACC /* default is to disable signals with PGI/OpenACC */ -# ifndef NOSIGNALS -# define NOSIGNALS 1 -# endif -#endif - -#ifndef OPENACC -# ifndef USE_OFF /* default is to enable OFF when not using PGI/OpenACC */ -# define USE_OFF -# endif -# ifndef CPUFUNNEL /* allow to enable FUNNEL-mode on CPU */ -# ifdef FUNNEL /* by default disable FUNNEL-mode when not using PGI/OpenACC */ -# undef FUNNEL -# endif -# endif -#endif - -#if (NOSIGNALS == 0) -# undef NOSIGNALS -#endif - -/** Header information for metadata-r.c ----------------------------------------------------------------------------- */ -struct metadata_table_struct { /* stores metadata strings from components */ - char * source; // component name which provided the metadata - char * name; // the name of the metadata - char * type; // the MIME type of the metadata (free form, valid identifier) - char * value; // the metadata string contents -}; -typedef struct metadata_table_struct metadata_table_t; -char * metadata_table_key_component(char* key); -char * metadata_table_key_literal(char * key); -int metadata_table_defined(int, metadata_table_t *, char *); -char * metadata_table_name(int, metadata_table_t *, char *); -char * metadata_table_type(int, metadata_table_t *, char *); -char * metadata_table_literal(int, metadata_table_t *, char *); -void metadata_table_print_all_keys(int no, metadata_table_t * tab); -int metadata_table_print_all_components(int no, metadata_table_t * tab); -int metadata_table_print_component_keys(int no, metadata_table_t * tab, char * key); -/* -------------------------------------------------------------------------- Header information for metadata-r.c --- */ - -/* Note: the enum instr_formal_types definition MUST be kept - synchronized with the one in mccode.h and with the - instr_formal_type_names array in cogen.c. */ -enum instr_formal_types - { - instr_type_int, - instr_type_string, instr_type_char, - instr_type_vector, instr_type_double - }; -struct mcinputtable_struct { /* defines instrument parameters */ - char *name; /* name of parameter */ - void *par; /* pointer to instrument parameter (variable) */ - enum instr_formal_types type; - char *val; /* default value */ - char *unit; /* expected unit for parameter; informational only */ -}; - - -#ifndef MCCODE_BASE_TYPES -typedef double MCNUM; -typedef struct {MCNUM x, y, z;} Coords; -typedef MCNUM Rotation[3][3]; -#endif - -/* the following variables are defined in the McStas generated C code - but should be defined externally in case of independent library usage */ -#ifndef DANSE -extern struct mcinputtable_struct mcinputtable[]; /* list of instrument parameters */ -extern int numipar; /* number of instrument parameters */ -extern metadata_table_t metadata_table[]; /* list of component-defined string metadata */ -extern int num_metadata; /* number of component-defined string metadata */ -extern char instrument_name[], instrument_source[]; /* instrument name and filename */ -extern char *instrument_exe; /* executable path = argv[0] or NULL */ -extern char instrument_code[]; /* contains the initial 'instr' file */ - -#ifndef MC_ANCIENT_COMPATIBILITY -extern int traceenabled, defaultmain; -#endif -#endif - - -/* Useful macros ============================================================ */ - - -/* SECTION: Dynamic Arrays */ -typedef int* IArray1d; -IArray1d create_iarr1d(int n); -void destroy_iarr1d(IArray1d a); - -typedef int** IArray2d; -IArray2d create_iarr2d(int nx, int ny); -void destroy_iarr2d(IArray2d a); - -typedef int*** IArray3d; -IArray3d create_iarr3d(int nx, int ny, int nz); -void destroy_iarr3d(IArray3d a); - -typedef double* DArray1d; -DArray1d create_darr1d(int n); -void destroy_darr1d(DArray1d a); - -typedef double** DArray2d; -DArray2d create_darr2d(int nx, int ny); -void destroy_darr2d(DArray2d a); - -typedef double*** DArray3d; -DArray3d create_darr3d(int nx, int ny, int nz); -void destroy_darr3d(DArray3d a); - - -/* MPI stuff */ -#ifdef USE_MPI -#include "mpi.h" - -#ifdef OMPI_MPI_H /* openmpi does not use signals: we may install our sighandler */ -#ifndef OPENACC /* ... but only if we are not also running on GPU */ -#undef NOSIGNALS -#endif -#endif - -/* - * MPI_MASTER(i): - * execution of i only on master node - */ -#define MPI_MASTER(statement) { \ - if(mpi_node_rank == mpi_node_root)\ - { statement; } \ -} - -#ifndef MPI_REDUCE_BLOCKSIZE -#define MPI_REDUCE_BLOCKSIZE 100000 -#endif - -int mc_MPI_Sum(double* buf, long count); -int mc_MPI_Send(void *sbuf, long count, MPI_Datatype dtype, int dest); -int mc_MPI_Recv(void *rbuf, long count, MPI_Datatype dtype, int source); - -/* MPI_Finalize exits gracefully and should be preferred to MPI_Abort */ -#define exit(code) do { \ - MPI_Finalize(); \ - exit(code); \ - } while(0) - -#else /* !USE_MPI */ -#define MPI_MASTER(instr) instr -#endif /* USE_MPI */ - - -#ifdef USE_MPI -static int mpi_node_count; -#endif - -#ifdef USE_THREADS /* user want threads */ -#error Threading (USE_THREADS) support has been removed for very poor efficiency. Use MPI/SSH grid instead. -#endif - - -void mcset_ncount(unsigned long long count); /* wrapper to get mcncount */ -#pragma acc routine -unsigned long long int mcget_ncount(void); /* wrapper to set mcncount */ -unsigned long long mcget_run_num(void); /* wrapper to get mcrun_num=0:mcncount-1 */ - -/* Following part is only embedded when not redundant with mccode.h ========= */ - -#ifndef MCCODE_H - -#ifndef NOSIGNALS -#include -char *mcsig_message; -#define SIG_MESSAGE(msg) mcsig_message=(char *)(msg); -#else -#define SIG_MESSAGE(...) -#endif /* !NOSIGNALS */ - - -/* Useful macros and constants ============================================== */ - - -#ifndef FLT_MAX -#define FLT_MAX 3.40282347E+38F /* max decimal value of a "float" */ -#endif - -#ifndef MIN -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif -#ifndef MAX -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#endif -#ifndef SQR -#define SQR(x) ( (x) * (x) ) -#endif -#ifndef SIGN -#define SIGN(x) (((x)>0.0)?(1):(-1)) -#endif - - -# ifndef M_E -# define M_E 2.71828182845904523536 // e -# endif -# ifndef M_LOG2E -# define M_LOG2E 1.44269504088896340736 // log2(e) -# endif -# ifndef M_LOG10E -# define M_LOG10E 0.434294481903251827651 // log10(e) -# endif -# ifndef M_LN2 -# define M_LN2 0.693147180559945309417 // ln(2) -# endif -# ifndef M_LN10 -# define M_LN10 2.30258509299404568402 // ln(10) -# endif -# ifndef M_PI -# define M_PI 3.14159265358979323846 // pi -# endif -# ifndef PI -# define PI M_PI // pi - also used in some places -# endif -# ifndef M_PI_2 -# define M_PI_2 1.57079632679489661923 // pi/2 -# endif -# ifndef M_PI_4 -# define M_PI_4 0.785398163397448309616 // pi/4 -# endif -# ifndef M_1_PI -# define M_1_PI 0.318309886183790671538 // 1/pi -# endif -# ifndef M_2_PI -# define M_2_PI 0.636619772367581343076 // 2/pi -# endif -# ifndef M_2_SQRTPI -# define M_2_SQRTPI 1.12837916709551257390 // 2/sqrt(pi) -# endif -# ifndef M_SQRT2 -# define M_SQRT2 1.41421356237309504880 // sqrt(2) -# endif -# ifndef M_SQRT1_2 -# define M_SQRT1_2 0.707106781186547524401 // 1/sqrt(2) -# endif - -#define RAD2MIN ((180*60)/PI) -#define MIN2RAD (PI/(180*60)) -#define DEG2RAD (PI/180) -#define RAD2DEG (180/PI) -#define FWHM2RMS 0.424660900144 /* Convert between full-width-half-max and */ -#define RMS2FWHM 2.35482004503 /* root-mean-square (standard deviation) */ -#define HBAR 1.05457168e-34 /* [Js] h bar Planck constant CODATA 2002 */ -#define MNEUTRON 1.67492728e-27 /* [kg] mass of neutron CODATA 2002 */ -#define GRAVITY 9.81 /* [m/s^2] gravitational acceleration */ -#define NA 6.02214179e23 /* [#atoms/g .mole] Avogadro's number*/ - - -#define UNSET nan("0x6E6F74736574") -int nans_match(double, double); -int is_unset(double); -int is_valid(double); -int is_set(double); -int all_unset(int n, ...); -int all_set(int n, ...); -int any_unset(int n, ...); -int any_set(int n, ...); - - -/* wrapper to get absolute and relative position of comp */ -/* mccomp_posa and mccomp_posr are defined in McStas generated C code */ -#define POS_A_COMP_INDEX(index) (instrument->_position_absolute[index]) -#define POS_R_COMP_INDEX(index) (instrument->_position_relative[index]) - -/* setting parameters based COMP_GETPAR (returned as pointer) */ -/* compname must be given as a string, type and par are symbols. */ -#define COMP_GETPAR3(type, compname, par) \ - &( ((_class_ ## type ##_parameters *) _getvar_parameters(compname))->par ) -/* the body of this function depends on component instances, and is cogen'd */ -void* _getvar_parameters(char* compname); - -int _getcomp_index(char* compname); - -/* Note: The two-stage approach to COMP_GETPAR is NOT redundant; without it, -* after #define C sample, COMP_GETPAR(C,x) would refer to component C, not to -* component sample. Such are the joys of ANSI C. - -* Anyway the usage of COMP_GETPAR requires that we use sometimes bare names... -* NOTE: This can ONLY be used in instrument descriptions, not components. -*/ -#define COMP_GETPAR2(comp, par) (_ ## comp ## _var._parameters.par) -#define COMP_GETPAR(comp, par) COMP_GETPAR2(comp,par) - -#define INSTRUMENT_GETPAR(par) (_instrument_var._parameters.par) - -/* Current component name, index, position and orientation */ -/* These macros work because, using class-based functions, "comp" is usually -* the local variable of the active/current component. */ -#define INDEX_CURRENT_COMP (_comp->_index) -#define NAME_CURRENT_COMP (_comp->_name) -#define TYPE_CURRENT_COMP (_comp->_type) -#define POS_A_CURRENT_COMP (_comp->_position_absolute) -#define POS_R_CURRENT_COMP (_comp->_position_relative) -#define ROT_A_CURRENT_COMP (_comp->_rotation_absolute) -#define ROT_R_CURRENT_COMP (_comp->_rotation_relative) - -#define NAME_INSTRUMENT (instrument->_name) - - -/* MCDISPLAY/trace and debugging message sent to stdout */ -#ifdef MC_TRACE_ENABLED -#define DEBUG -#endif - -#ifdef DEBUG -#define DEBUG_INSTR() if(!mcdotrace); else { printf("INSTRUMENT:\n"); printf("Instrument '%s' (%s)\n", instrument_name, instrument_source); } -#define DEBUG_COMPONENT(name,c,t) if(!mcdotrace); else {\ - printf("COMPONENT: \"%s\"\n" \ - "POS: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ - name, c.x, c.y, c.z, t[0][0], t[0][1], t[0][2], \ - t[1][0], t[1][1], t[1][2], t[2][0], t[2][1], t[2][2]); \ - printf("Component %30s AT (%g,%g,%g)\n", name, c.x, c.y, c.z); } -#define DEBUG_INSTR_END() if(!mcdotrace); else printf("INSTRUMENT END:\n"); -#define DEBUG_ENTER() if(!mcdotrace); else printf("ENTER:\n"); -#define DEBUG_COMP(c) if(!mcdotrace); else printf("COMP: \"%s\"\n", c); -#define DEBUG_LEAVE() if(!mcdotrace); else printf("LEAVE:\n"); -#define DEBUG_ABSORB() if(!mcdotrace); else printf("ABSORB:\n"); -#else -#define DEBUG_INSTR() -#define DEBUG_COMPONENT(name,c,t) -#define DEBUG_INSTR_END() -#define DEBUG_ENTER() -#define DEBUG_COMP(c) -#define DEBUG_LEAVE() -#define DEBUG_ABSORB() -#endif - -// mcDEBUG_STATE and mcDEBUG_SCATTER are defined by mcstas-r.h and mcxtrace-r.h - - - -#ifdef TEST -#define test_printf printf -#else -#define test_printf while(0) printf -#endif - -/* send MCDISPLAY message to stdout to show gemoetry */ -void mcdis_magnify(char *what); -void mcdis_line(double x1, double y1, double z1, - double x2, double y2, double z2); -void mcdis_dashed_line(double x1, double y1, double z1, - double x2, double y2, double z2, int n); -void mcdis_multiline(int count, ...); -void mcdis_rectangle(char* plane, double x, double y, double z, - double width, double height); -void mcdis_box(double x, double y, double z, - double width, double height, double length, double thickness, double nx, double ny, double nz); -void mcdis_circle(char *plane, double x, double y, double z, double r); -void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz); -void mcdis_cylinder( double x, double y, double z, - double r, double height, double thickness, double nx, double ny, double nz); -void mcdis_cone( double x, double y, double z, - double r, double height, double nx, double ny, double nz); -void mcdis_sphere(double x, double y, double z, double r); - - -/* random number generation. ================================================ */ - -#if RNG_ALG == _RNG_ALG_MT // MT (currently not functional for GPU) -# define MC_RAND_MAX ((uint32_t)0xffffffffUL) -# define RANDSTATE_LEN 1 -# define srandom(seed) mt_srandom_empty() -# define random() mt_random() -# define _random() mt_random() -#elif RNG_ALG == _RNG_ALG_KISS // KISS -# ifndef UINT64_MAX -# define UINT64_MAX ((uint64_t)0xffffffffffffffffULL) -# endif -# define MC_RAND_MAX UINT64_MAX -# define RANDSTATE_LEN 7 -# define srandom(seed) kiss_srandom(_particle->randstate, seed) -# define random() kiss_random(_particle->randstate) -# define _random() kiss_random(state) -#endif - -#pragma acc routine -double _randnorm2(randstate_t* state); - -// Component writer interface -#define randnorm() _randnorm2(_particle->randstate) // NOTE: can't use _randnorm on GPU -#define rand01() _rand01(_particle->randstate) -#define randpm1() _randpm1(_particle->randstate) -#define rand0max(p1) _rand0max(p1, _particle->randstate) -#define randminmax(p1, p2) _randminmax(p1, p2, _particle->randstate) -#define randtriangle() _randtriangle(_particle->randstate) - -// Mersenne Twister rng -uint32_t mt_random(void); -void mt_srandom (uint32_t x); -void mt_srandom_empty(); - -// KISS rng -#pragma acc routine -uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed); -#pragma acc routine -uint64_t kiss_random(uint64_t state[7]); - -// Scrambler / hash function -#pragma acc routine seq -randstate_t _hash(randstate_t x); - -// internal RNG (transforms) interface -#pragma acc routine -double _rand01(randstate_t* state); -#pragma acc routine -double _randpm1(randstate_t* state); -#pragma acc routine -double _rand0max(double max, randstate_t* state); -#pragma acc routine -double _randminmax(double min, double max, randstate_t* state); -#pragma acc routine -double _randtriangle(randstate_t* state); - - -#ifdef USE_OPENCL -#include "opencl-lib.h" -#include "opencl-lib.c" -#endif - -#ifndef DANSE -int init(void); -int raytrace(_class_particle*); -int save(FILE *); -int finally(void); -int display(void); -#endif - - -/* GPU related algorithms =================================================== */ - -/* -* Divide-and-conquer strategy for parallel sort absorbed last. -*/ -#ifdef FUNNEL -long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier); -#endif -long sort_absorb_last_serial(_class_particle* particles, long len); - - -/* simple vector algebra ==================================================== */ - - -#define vec_prod(x, y, z, x1, y1, z1, x2, y2, z2) \ - vec_prod_func(&x, &y, &z, x1, y1, z1, x2, y2, z2) -#pragma acc routine seq -mcstatic void vec_prod_func(double *x, double *y, double *z, - double x1, double y1, double z1, double x2, double y2, double z2); - -#pragma acc routine seq -mcstatic double scalar_prod( - double x1, double y1, double z1, double x2, double y2, double z2); - -#pragma acc routine seq -mcstatic void norm_func(double *x, double *y, double *z); -#define NORM(x,y,z) norm_func(&x, &y, &z) - -#pragma acc routine seq -void normal_vec(double *nx, double *ny, double *nz, - double x, double y, double z); - -/** - * Rotate the vector vx,vy,vz psi radians around the vector ax,ay,az - * and put the result in x,y,z. - */ -#define rotate(x, y, z, vx, vy, vz, phi, ax, ay, az) \ - do { \ - double mcrt_tmpx = (ax), mcrt_tmpy = (ay), mcrt_tmpz = (az); \ - double mcrt_vp, mcrt_vpx, mcrt_vpy, mcrt_vpz; \ - double mcrt_vnx, mcrt_vny, mcrt_vnz, mcrt_vn1x, mcrt_vn1y, mcrt_vn1z; \ - double mcrt_bx, mcrt_by, mcrt_bz; \ - double mcrt_cos, mcrt_sin; \ - NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ - mcrt_vp = scalar_prod((vx), (vy), (vz), mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ - mcrt_vpx = mcrt_vp*mcrt_tmpx; \ - mcrt_vpy = mcrt_vp*mcrt_tmpy; \ - mcrt_vpz = mcrt_vp*mcrt_tmpz; \ - mcrt_vnx = (vx) - mcrt_vpx; \ - mcrt_vny = (vy) - mcrt_vpy; \ - mcrt_vnz = (vz) - mcrt_vpz; \ - vec_prod(mcrt_bx, mcrt_by, mcrt_bz, \ - mcrt_tmpx, mcrt_tmpy, mcrt_tmpz, mcrt_vnx, mcrt_vny, mcrt_vnz); \ - mcrt_cos = cos((phi)); mcrt_sin = sin((phi)); \ - mcrt_vn1x = mcrt_vnx*mcrt_cos + mcrt_bx*mcrt_sin; \ - mcrt_vn1y = mcrt_vny*mcrt_cos + mcrt_by*mcrt_sin; \ - mcrt_vn1z = mcrt_vnz*mcrt_cos + mcrt_bz*mcrt_sin; \ - (x) = mcrt_vpx + mcrt_vn1x; \ - (y) = mcrt_vpy + mcrt_vn1y; \ - (z) = mcrt_vpz + mcrt_vn1z; \ - } while(0) - -/** - * Mirror (xyz) in the plane given by the point (rx,ry,rz) and normal (nx,ny,nz) - * - * TODO: This define is seemingly never used... - */ -#define mirror(x,y,z,rx,ry,rz,nx,ny,nz) \ - do { \ - double mcrt_tmpx= (nx), mcrt_tmpy = (ny), mcrt_tmpz = (nz); \ - double mcrt_tmpt; \ - NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ - mcrt_tmpt=scalar_prod((rx),(ry),(rz),mcrt_tmpx,mcrt_tmpy,mcrt_tmpz); \ - (x) = rx -2 * mcrt_tmpt*mcrt_rmpx; \ - (y) = ry -2 * mcrt_tmpt*mcrt_rmpy; \ - (z) = rz -2 * mcrt_tmpt*mcrt_rmpz; \ - } while (0) - -#pragma acc routine -Coords coords_set(MCNUM x, MCNUM y, MCNUM z); -#pragma acc routine -Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z); -#pragma acc routine -Coords coords_add(Coords a, Coords b); -#pragma acc routine -Coords coords_sub(Coords a, Coords b); -#pragma acc routine -Coords coords_neg(Coords a); -#pragma acc routine -Coords coords_scale(Coords b, double scale); -#pragma acc routine -double coords_sp(Coords a, Coords b); -#pragma acc routine -Coords coords_xp(Coords b, Coords c); -#pragma acc routine -double coords_len(Coords a); -#pragma acc routine seq -void coords_print(Coords a); -#pragma acc routine seq -mcstatic void coords_norm(Coords* c); - -#pragma acc routine seq -void rot_set_rotation(Rotation t, double phx, double phy, double phz); -#pragma acc routine seq -int rot_test_identity(Rotation t); -#pragma acc routine seq -void rot_mul(Rotation t1, Rotation t2, Rotation t3); -#pragma acc routine seq -void rot_copy(Rotation dest, Rotation src); -#pragma acc routine seq -void rot_transpose(Rotation src, Rotation dst); -#pragma acc routine seq -Coords rot_apply(Rotation t, Coords a); - -#pragma acc routine seq -void mccoordschange(Coords a, Rotation t, _class_particle *particle); -#pragma acc routine seq -void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz); - -double mcestimate_error(double N, double p1, double p2); -void mcreadparams(void); - -/* this is now in mcstas-r.h and mcxtrace-r.h as the number of state parameters -is no longer equal */ - -_class_particle mcgenstate(void); - -// trajectory/shape intersection routines -#pragma acc routine seq -int inside_rectangle(double, double, double, double); -#pragma acc routine seq -int box_intersect(double *dt_in, double *dt_out, double x, double y, double z, - double vx, double vy, double vz, double dx, double dy, double dz); -#pragma acc routine seq -int cylinder_intersect(double *t0, double *t1, double x, double y, double z, - double vx, double vy, double vz, double r, double h); -#pragma acc routine seq -int sphere_intersect(double *t0, double *t1, double x, double y, double z, - double vx, double vy, double vz, double r); -// second order equation roots -#pragma acc routine seq -int solve_2nd_order(double *t1, double *t2, - double A, double B, double C); - -// random vector generation to shape -// defines silently introducing _particle as the last argument -#define randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius) \ - _randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius, _particle) -#define randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A) \ - _randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, _particle) -#define randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order) \ - _randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order, _particle) -// defines forwarding to "inner" functions -#define randvec_target_sphere randvec_target_circle -#define randvec_target_rect(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9) \ - randvec_target_rect_real(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,0,0,0,1) -// headers for randvec -#pragma acc routine seq -void _randvec_target_circle(double *xo, double *yo, double *zo, - double *solid_angle, double xi, double yi, double zi, double radius, - _class_particle* _particle); -#pragma acc routine seq -void _randvec_target_rect_angular(double *xo, double *yo, double *zo, - double *solid_angle, double xi, double yi, double zi, double height, - double width, Rotation A, - _class_particle* _particle); -#pragma acc routine seq -void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, - double xi, double yi, double zi, double height, double width, Rotation A, - double lx, double ly, double lz, int order, - _class_particle* _particle); - - -// this is the main() -int mccode_main(int argc, char *argv[]); - - -#endif /* !MCCODE_H */ - -#ifndef MCCODE_R_IO_H -#define MCCODE_R_IO_H "$Revision$" - -#if (USE_NEXUS == 0) -#undef USE_NEXUS -#endif - -#ifndef CHAR_BUF_LENGTH -#define CHAR_BUF_LENGTH 1024 -#endif - - -/* I/O section part ========================================================= */ - -/* ========================================================================== */ - -/* MCCODE_R_IO_C */ - -/* ========================================================================== */ - - -/* main DETECTOR structure which stores most information to write to data files */ -struct mcdetector_struct { - char filename[CHAR_BUF_LENGTH]; /* file name of monitor */ - double Position[3]; /* position of detector component*/ - char position[CHAR_BUF_LENGTH]; /* position of detector component (string)*/ - Rotation Rotation; /* position of detector component*/ - char options[CHAR_BUF_LENGTH]; /* Monitor_nD style list-mode'options' (string)*/ - char component[CHAR_BUF_LENGTH]; /* component instance name */ - char nexuscomp[CHAR_BUF_LENGTH]; /* component naming in NeXus/HDF case */ - char instrument[CHAR_BUF_LENGTH]; /* instrument name */ - char type[CHAR_BUF_LENGTH]; /* data type, e.g. 0d, 1d, 2d, 3d */ - char user[CHAR_BUF_LENGTH]; /* user name, e.g. HOME */ - char date[CHAR_BUF_LENGTH]; /* date of simulation end/write time */ - char title[CHAR_BUF_LENGTH]; /* title of detector */ - char xlabel[CHAR_BUF_LENGTH]; /* X axis label */ - char ylabel[CHAR_BUF_LENGTH]; /* Y axis label */ - char zlabel[CHAR_BUF_LENGTH]; /* Z axis label */ - char xvar[CHAR_BUF_LENGTH]; /* X variable name */ - char yvar[CHAR_BUF_LENGTH]; /* Y variable name */ - char zvar[CHAR_BUF_LENGTH]; /* Z variable name */ - char ncount[CHAR_BUF_LENGTH]; /* number of events initially generated */ - char limits[CHAR_BUF_LENGTH]; /* X Y Z limits, e.g. [xmin xmax ymin ymax zmin zmax] */ - char variables[CHAR_BUF_LENGTH]; /* variables written into data block */ - char statistics[CHAR_BUF_LENGTH]; /* center, mean and half width along axis */ - char signal[CHAR_BUF_LENGTH]; /* min max and mean of signal (data block) */ - char values[CHAR_BUF_LENGTH]; /* integrated values e.g. [I I_err N] */ - double xmin,xmax; /* min max of axes */ - double ymin,ymax; - double zmin,zmax; - double intensity; /* integrated values for data block */ - double error; - double events; - double min; /* statistics for data block */ - double max; - double mean; - double centerX; /* statistics for axes */ - double halfwidthX; - double centerY; - double halfwidthY; - int rank; /* dimensionaly of monitor, e.g. 0 1 2 3 */ - char istransposed; /* flag to transpose matrix for some formats */ - - long m,n,p; /* dimensions of data block and along axes */ - long date_l; /* same as date, but in sec since 1970 */ - - double *p0, *p1, *p2; /* pointers to saved data, NULL when freed */ - char format[CHAR_BUF_LENGTH]; /* format for file generation */ -}; - -typedef struct mcdetector_struct MCDETECTOR; - -static char *dirname = NULL; /* name of output directory */ -static char *siminfo_name = "mccode"; /* default output sim file name */ -char *mcformat = NULL; /* NULL (default) or a specific format */ - -/* file I/O definitions and function prototypes */ - -#ifndef MC_EMBEDDED_RUNTIME /* the mcstatic variables (from mccode-r.c) */ -extern FILE * siminfo_file; /* handle to the output siminfo file */ -extern int mcgravitation; /* flag to enable gravitation */ -extern int mcdotrace; /* flag to print MCDISPLAY messages */ -#else -mcstatic FILE *siminfo_file = NULL; -#endif - -/* I/O function prototypes ================================================== */ - -// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c -char *strcasestr(const char *haystack, const char *needle); - -/* output functions */ -MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, char *c, Coords pos, Rotation rot, int index); -MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, - char *xvar, double x1, double x2, long n, - double *p0, double *p1, double *p2, char *f, char *c, Coords pos, Rotation rot, int index); -MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, - double x1, double x2, double y1, double y2, long m, - long n, double *p0, double *p1, double *p2, char *f, - char *c, Coords pos, Rotation rot, int index); -MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, - long m, long n, - double *p1, char *f, - char *c, Coords posa, Rotation rot,char* options, int index); - -/* wrappers to output functions, that automatically set NAME and POSITION */ -#define DETECTOR_OUT(p0,p1,p2) mcdetector_out_0D(NAME_CURRENT_COMP,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) -#define DETECTOR_OUT_0D(t,p0,p1,p2) mcdetector_out_0D(t,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) -#define DETECTOR_OUT_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f) \ - mcdetector_out_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) -#define DETECTOR_OUT_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f) \ - mcdetector_out_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) - -#ifdef USE_NEXUS -#include "napi.h" -NXhandle nxhandle; -#endif - -#endif /* ndef MCCODE_R_IO_H */ - -#endif /* MCCODE_R_H */ -/* End of file "mccode-r.h". */ - -/* embedding file "mcstas-r.h" */ - -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2009, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Runtime: share/mcstas-r.h -* -* %Identification -* Written by: KN -* Date: Aug 29, 1997 -* Release: McStas X.Y -* Version: $Revision$ -* -* Runtime system header for McStas. -* -* In order to use this library as an external library, the following variables -* and macros must be declared (see details in the code) -* -* struct mcinputtable_struct mcinputtable[]; -* int mcnumipar; -* char instrument_name[], instrument_source[]; -* int traceenabled, defaultmain; -* extern MCNUM mccomp_storein[]; -* extern MCNUM instrument.counter_AbsorbProp[]; -* extern MCNUM mcScattered; -* #define MCCODE_STRING "the McStas version" -* -* Usage: Automatically embbeded in the c code. -* -* $Id$ -* -*******************************************************************************/ - -#ifndef MCSTAS_R_H -#define MCSTAS_R_H "$Revision$" - -/* Following part is only embedded when not redundent with mcstas.h */ - -#ifndef MCCODE_H - -#define AA2MS 629.622368 /* Convert k[1/AA] to v[m/s] */ -#define MS2AA 1.58825361e-3 /* Convert v[m/s] to k[1/AA] */ -#define K2V AA2MS -#define V2K MS2AA -#define Q2V AA2MS -#define V2Q MS2AA -#define SE2V 437.393377 /* Convert sqrt(E)[meV] to v[m/s] */ -#define VS2E 5.22703725e-6 /* Convert (v[m/s])**2 to E[meV] */ - -#define SCATTER0 do {DEBUG_SCATTER(); SCATTERED++;} while(0) -#define SCATTER SCATTER0 - -#define JUMPTOCOMP(comp) mcneutron->_index = INDEX_COMP(comp); - -#define MAGNET_ON \ - do { \ - mcMagnet = 1; \ - } while(0) - -#define MAGNET_OFF \ - do { \ - mcMagnet = 0; \ - } while(0) - -#define ALLOW_BACKPROP \ - do { \ - allow_backprop = 1; \ - } while(0) - -#define DISALLOW_BACKPROP \ - do { \ - allow_backprop = 0; \ - } while(0) - -#define PROP_MAGNET(dt) \ - do { \ - } while (0) - /* change coordinates from local system to magnet system */ -/* Rotation rotLM, rotTemp; \ - Coords posLM = coords_sub(POS_A_CURRENT_COMP, mcMagnetPos); \ - rot_transpose(ROT_A_CURRENT_COMP, rotTemp); \ - rot_mul(rotTemp, mcMagnetRot, rotLM); \ - mcMagnetPrecession(x, y, z, t, vx, vy, vz, \ - &sx, &sy, &sz, dt, posLM, rotLM); \ - } while(0) -*/ - -#define mcPROP_DT(dt) \ - do { \ - if (mcMagnet && dt > 0) PROP_MAGNET(dt);\ - x += vx*(dt); \ - y += vy*(dt); \ - z += vz*(dt); \ - t += (dt); \ - if (isnan(p) || isinf(p)) { ABSORB; }\ - } while(0) - -/* ADD: E. Farhi, Aug 6th, 2001 PROP_GRAV_DT propagation with acceleration */ -#define PROP_GRAV_DT(dt, Ax, Ay, Az) \ - do { \ - if(dt < 0 && allow_backprop == 0) { ABSORB; }\ - if (mcMagnet) /*printf("Spin precession gravity\n")*/; \ - x += vx*(dt) + (Ax)*(dt)*(dt)/2; \ - y += vy*(dt) + (Ay)*(dt)*(dt)/2; \ - z += vz*(dt) + (Az)*(dt)*(dt)/2; \ - vx += (Ax)*(dt); \ - vy += (Ay)*(dt); \ - vz += (Az)*(dt); \ - t += (dt); \ - DISALLOW_BACKPROP;\ - } while(0) - - -#define PROP_DT(dt) \ - do { \ - if(dt < 0 && allow_backprop == 0) { RESTORE=1; ABSORB; }; \ - if (mcgravitation) { Coords mcLocG; double mc_gx, mc_gy, mc_gz; \ - mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ - coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ - PROP_GRAV_DT(dt, mc_gx, mc_gy, mc_gz); } \ - else mcPROP_DT(dt); \ - DISALLOW_BACKPROP;\ - } while(0) - - -#define PROP_Z0 \ - do { \ - if (mcgravitation) { Coords mcLocG; int mc_ret; \ - double mc_dt, mc_gx, mc_gy, mc_gz; \ - mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ - coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ - mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gz/2, -vz, -z); \ - if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); z=0;}\ - else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ - else mcPROP_Z0; \ - DISALLOW_BACKPROP;\ - } while(0) - -#define mcPROP_Z0 \ - do { \ - double mc_dt; \ - if(vz == 0) { ABSORB; }; \ - mc_dt = -z/vz; \ - if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ - mcPROP_DT(mc_dt); \ - z = 0; \ - DISALLOW_BACKPROP;\ - } while(0) - -#define PROP_X0 \ - do { \ - if (mcgravitation) { Coords mcLocG; int mc_ret; \ - double mc_dt, mc_gx, mc_gy, mc_gz; \ - mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ - coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ - mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gx/2, -vx, -x); \ - if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); x=0;}\ - else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ - else mcPROP_X0; \ - DISALLOW_BACKPROP;\ - } while(0) - -#define mcPROP_X0 \ - do { \ - double mc_dt; \ - if(vx == 0) { ABSORB; }; \ - mc_dt = -x/vx; \ - if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ - mcPROP_DT(mc_dt); \ - x = 0; \ - DISALLOW_BACKPROP;\ - } while(0) - -#define PROP_Y0 \ - do { \ - if (mcgravitation) { Coords mcLocG; int mc_ret; \ - double mc_dt, mc_gx, mc_gy, mc_gz; \ - mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ - coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ - mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gy/2, -vy, -y); \ - if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); y=0;}\ - else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ - else mcPROP_Y0; \ - DISALLOW_BACKPROP;\ - } while(0) - - -#define mcPROP_Y0 \ - do { \ - double mc_dt; \ - if(vy == 0) { ABSORB; }; \ - mc_dt = -y/vy; \ - if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ - mcPROP_DT(mc_dt); \ - y = 0; \ - DISALLOW_BACKPROP; \ - } while(0) - - -#ifdef DEBUG - -#define DEBUG_STATE() if(!mcdotrace); else \ - printf("STATE: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ - x,y,z,vx,vy,vz,t,sx,sy,sz,p); -#define DEBUG_SCATTER() if(!mcdotrace); else \ - printf("SCATTER: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ - x,y,z,vx,vy,vz,t,sx,sy,sz,p); - -#else - -#define DEBUG_STATE() -#define DEBUG_SCATTER() - -#endif - -#endif /* !MCCODE_H */ - -#endif /* MCSTAS_R_H */ -/* End of file "mcstas-r.h". */ - -/* embedding file "mccode-r.c" */ - -/******************************************************************************* -* -* McCode, neutron/xray ray-tracing package -* Copyright (C) 1997-2009, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Runtime: share/mccode-r.c -* -* %Identification -* Written by: KN -* Date: Aug 29, 1997 -* Release: McStas X.Y/McXtrace X.Y -* Version: $Revision$ -* -* Runtime system for McStas and McXtrace. -* Embedded within instrument in runtime mode. -* Contains SECTIONS: -* MPI handling (sum, send, recv) -* format definitions -* I/O -* mcdisplay support -* random numbers -* coordinates handling -* vectors math (solve 2nd order, normals, randvec...) -* parameter handling -* signal and main handlers -* -* Usage: Automatically embbeded in the c code whenever required. -* -* $Id$ -* -*******************************************************************************/ - -/******************************************************************************* -* The I/O format definitions and functions -*******************************************************************************/ - - -/** Include header files to avoid implicit declarations (not allowed on LLVM) */ -#include -#include - -// UNIX specific headers (non-Windows) -#if defined(__unix__) || defined(__APPLE__) -#include -#include -#endif - - -#ifndef DANSE -#ifdef MC_ANCIENT_COMPATIBILITY -int traceenabled = 0; -int defaultmain = 0; -#endif -/* else defined directly in the McCode generated C code */ - -static long mcseed = 0; /* seed for random generator */ -#pragma acc declare create ( mcseed ) -static long mcstartdate = 0; /* start simulation time */ -static int mcdisable_output_files = 0; /* --no-output-files */ -mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ -mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ - /* When -DTOF_TRAIN is defined, the default NTOF - becomes 10, defined below in the - mcparseoptions function body.*/ -mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ -mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ -mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ -#pragma acc declare create ( mcdotrace ) -int mcallowbackprop = 0; /* flag to enable negative/backprop */ - -/* OpenACC-related segmentation parameters: */ -int vecsize = 128; -int numgangs = 7813; -long gpu_innerloop = 2147483647; - -/* Monitor_nD list/buffer-size default */ -/* Starting value may be defined using -DND_BUFFER=N */ -/* Can further be controlled dynamically using --bufsiz input */ -long MONND_BUFSIZ = 10000000; -#ifdef ND_BUFFER -MONND_BUFSIZ = ND_BUFFER; -#endif - - -/* Number of particle histories to simulate. */ -#ifdef NEUTRONICS -mcstatic unsigned long long int mcncount = 1; -mcstatic unsigned long long int mcrun_num = 0; -#else -#ifdef MCDEFAULT_NCOUNT -mcstatic unsigned long long int mcncount = MCDEFAULT_NCOUNT; -#else -mcstatic unsigned long long int mcncount = 1000000; -#endif -#pragma acc declare create ( mcncount ) -mcstatic unsigned long long int mcrun_num = 0; -#pragma acc declare create ( mcrun_num ) -#endif /* NEUTRONICS */ - -#else -#include "mcstas-globals.h" -#endif /* !DANSE */ - -#ifndef NX_COMPRESSION -#define NX_COMPRESSION NX_COMP_NONE -#endif - -/* String nullification on GPU and other replacements */ -#ifdef OPENACC -int noprintf() { - return 0; -} - -int str_comp(char *str1, char *str2) { - while (*str1 && *str1 == *str2) { - str1++; - str2++; - } - return (*str1 - *str2); -} - -size_t str_len(const char *s) -{ - size_t len = 0; - if(s != NULL) - { - while(*s != '\0') - { - ++len; - ++s; - } - } - return len; -} - -#endif - -/* SECTION: Predefine (component) parameters ================================= */ - -int nans_match(double a, double b){ - return (*(uint64_t*)&a == *(uint64_t*)&b); -} -int is_unset(double x){ - return nans_match(x, UNSET); -} -int is_set(double x){ - return !nans_match(x, UNSET); -} -int is_valid(double x){ - return !isnan(x)||is_unset(x); -} -int all_unset(int n, ...){ - va_list ptr; - va_start(ptr, n); - int ret=1; - for (int i=0; i count-1) length=count-offset; - else length=MPI_REDUCE_BLOCKSIZE; - if (MPI_Allreduce((double*)(sbuf+offset), (double*)(rbuf+offset), - length, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD) != MPI_SUCCESS) - return MPI_ERR_COUNT; - offset += length; - } - - for (i=0; i count-1) length=count-offset; - else length=MPI_REDUCE_BLOCKSIZE; - if (MPI_Send((void*)((char*)sbuf+offset*dsize), length, dtype, dest, tag++, MPI_COMM_WORLD) != MPI_SUCCESS) - return MPI_ERR_COUNT; - offset += length; - } - - return MPI_SUCCESS; -} /* mc_MPI_Send */ - -/******************************************************************************* -* mc_MPI_Recv: Receives arrays from MPI nodes by blocks to avoid buffer limit -* the buffer must have been allocated previously. -*******************************************************************************/ -int mc_MPI_Recv(void *sbuf, - long count, MPI_Datatype dtype, - int source) -{ - int dsize; - long offset=0; - int tag=1; - int length=MPI_REDUCE_BLOCKSIZE; /* defined in mccode-r.h */ - - if (!sbuf || count <= 0) return(MPI_SUCCESS); /* nothing to recv */ - MPI_Type_size(dtype, &dsize); - - while (offset < count) { - if (offset+length > count-1) length=count-offset; - else length=MPI_REDUCE_BLOCKSIZE; - if (MPI_Recv((void*)((char*)sbuf+offset*dsize), length, dtype, source, tag++, - MPI_COMM_WORLD, MPI_STATUS_IGNORE) != MPI_SUCCESS) - return MPI_ERR_COUNT; - offset += length; - } - - return MPI_SUCCESS; -} /* mc_MPI_Recv */ - -#endif /* USE_MPI */ - -/* SECTION: parameters handling ============================================= */ - -/* Instrument input parameter type handling. */ -/******************************************************************************* -* mcparm_double: extract double value from 's' into 'vptr' -*******************************************************************************/ -static int -mcparm_double(char *s, void *vptr) -{ - char *p; - double *v = (double *)vptr; - - if (!s) { *v = 0; return(1); } - *v = strtod(s, &p); - if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) - return 0; /* Failed */ - else - return 1; /* Success */ -} - -/******************************************************************************* -* mcparminfo_double: display parameter type double -*******************************************************************************/ -static char * -mcparminfo_double(char *parmname) -{ - return "double"; -} - -/******************************************************************************* -* mcparmerror_double: display error message when failed extract double -*******************************************************************************/ -static void -mcparmerror_double(char *parm, char *val) -{ - fprintf(stderr, "Error: Invalid value '%s' for floating point parameter %s (mcparmerror_double)\n", - val, parm); -} - -/******************************************************************************* -* mcparmprinter_double: convert double to string -*******************************************************************************/ -static void -mcparmprinter_double(char *f, void *vptr) -{ - double *v = (double *)vptr; - sprintf(f, "%g", *v); -} - -/******************************************************************************* -* mcparm_int: extract int value from 's' into 'vptr' -*******************************************************************************/ -static int -mcparm_int(char *s, void *vptr) -{ - char *p; - int *v = (int *)vptr; - long x; - - if (!s) { *v = 0; return(1); } - *v = 0; - x = strtol(s, &p, 10); - if(x < INT_MIN || x > INT_MAX) - return 0; /* Under/overflow */ - *v = x; - if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) - return 0; /* Failed */ - else - return 1; /* Success */ -} - -/******************************************************************************* -* mcparminfo_int: display parameter type int -*******************************************************************************/ -static char * -mcparminfo_int(char *parmname) -{ - return "int"; -} - -/******************************************************************************* -* mcparmerror_int: display error message when failed extract int -*******************************************************************************/ -static void -mcparmerror_int(char *parm, char *val) -{ - fprintf(stderr, "Error: Invalid value '%s' for integer parameter %s (mcparmerror_int)\n", - val, parm); -} - -/******************************************************************************* -* mcparmprinter_int: convert int to string -*******************************************************************************/ -static void -mcparmprinter_int(char *f, void *vptr) -{ - int *v = (int *)vptr; - sprintf(f, "%d", *v); -} - -/******************************************************************************* -* mcparm_string: extract char* value from 's' into 'vptr' (copy) -*******************************************************************************/ -static int -mcparm_string(char *s, void *vptr) -{ - char **v = (char **)vptr; - if (!s) { *v = NULL; return(1); } - *v = (char *)malloc(strlen(s) + 1); - if(*v == NULL) - { - exit(-fprintf(stderr, "Error: Out of memory %li (mcparm_string).\n", (long)strlen(s) + 1)); - } - strcpy(*v, s); - return 1; /* Success */ -} - -/******************************************************************************* -* mcparminfo_string: display parameter type string -*******************************************************************************/ -static char * -mcparminfo_string(char *parmname) -{ - return "string"; -} - -/******************************************************************************* -* mcparmerror_string: display error message when failed extract string -*******************************************************************************/ -static void -mcparmerror_string(char *parm, char *val) -{ - fprintf(stderr, "Error: Invalid value '%s' for string parameter %s (mcparmerror_string)\n", - val, parm); -} - -/******************************************************************************* -* mcparmprinter_string: convert string to string (including esc chars) -*******************************************************************************/ -static void -mcparmprinter_string(char *f, void *vptr) -{ - char **v = (char **)vptr; - char *p; - - if (!*v) { *f='\0'; return; } - strcpy(f, ""); - for(p = *v; *p != '\0'; p++) - { - switch(*p) - { - case '\n': - strcat(f, "\\n"); - break; - case '\r': - strcat(f, "\\r"); - break; - case '"': - strcat(f, "\\\""); - break; - case '\\': - strcat(f, "\\\\"); - break; - default: - strncat(f, p, 1); - } - } - /* strcat(f, "\""); */ -} /* mcparmprinter_string */ - -/* now we may define the parameter structure, using previous functions */ -static struct - { - int (*getparm)(char *, void *); - char * (*parminfo)(char *); - void (*error)(char *, char *); - void (*printer)(char *, void *); -} mcinputtypes[] = { - { - mcparm_int, mcparminfo_int, mcparmerror_int, - mcparmprinter_int - }, { - mcparm_string, mcparminfo_string, mcparmerror_string, - mcparmprinter_string - }, { - mcparm_string, mcparminfo_string, mcparmerror_string, - mcparmprinter_string - }, { - mcparm_double, mcparminfo_double, mcparmerror_double, - mcparmprinter_double - }, { - mcparm_double, mcparminfo_double, mcparmerror_double, - mcparmprinter_double - } -}; - -/******************************************************************************* -* mcestimate_error: compute sigma from N,p,p2 in Gaussian large numbers approx -*******************************************************************************/ -double mcestimate_error(double N, double p1, double p2) -{ - double pmean, n1; - if(N <= 1) - return p1; - pmean = p1 / N; - n1 = N - 1; - /* Note: underflow may cause p2 to become zero; the fabs() below guards - against this. */ - return sqrt((N/n1)*fabs(p2 - pmean*pmean)); -} - -double (*mcestimate_error_p) - (double V2, double psum, double p2sum)=mcestimate_error; - -/* ========================================================================== */ - -/* MCCODE_R_IO_C */ - -/* ========================================================================== */ - -#ifndef MCCODE_R_IO_C -#define MCCODE_R_IO_C "$Revision$" - -/* SECTION: file i/o handling ================================================ */ - -#ifndef HAVE_STRCASESTR -// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c -char *strcasestr(const char *haystack, const char *needle) -{ - int nlen = strlen(needle); - int hlen = strlen(haystack) - nlen + 1; - int i; - - for (i = 0; i < hlen; i++) { - int j; - for (j = 0; j < nlen; j++) { - unsigned char c1 = haystack[i+j]; - unsigned char c2 = needle[j]; - if (toupper(c1) != toupper(c2)) - goto next; - } - return (char *) haystack + i; - next: - ; - } - return NULL; -} - - -#endif -#ifndef HAVE_STRCASECMP -int strcasecmp( const char *s1, const char *s2 ) -{ - int c1, c2; - do { - c1 = tolower( (unsigned char) *s1++ ); - c2 = tolower( (unsigned char) *s2++ ); - } while (c1 == c2 && c1 != 0); - return c2 > c1 ? -1 : c1 > c2; -} -#endif - -#ifndef STRACPY -/* this is a replacement to strncpy, but ensures that the copy ends with NULL */ -/* http://stracpy.blogspot.fr/2011/04/stracpy-strncpy-replacement.html */ -#define STRACPY -char *stracpy(char *destination, const char *source, size_t amount) -{ - if (!destination || !source || !amount) return(NULL); - while(amount--) - if((*destination++ = *source++) == '\0') break; - *destination = '\0'; - return destination; -} -#endif - -/******************************************************************************* -* mcfull_file: allocates a full file name=dirname+file. Catenate extension if missing. -*******************************************************************************/ -char *mcfull_file(char *name, char *ext) -{ - int dirlen=0; - char *mem =NULL; - - dirlen = dirname ? strlen(dirname) : 0; - mem = (char*)malloc(dirlen + strlen(name) + CHAR_BUF_LENGTH); - if(!mem) { - exit(-fprintf(stderr, "Error: Out of memory %li (mcfull_file)\n", (long)(dirlen + strlen(name) + 256))); - } - strcpy(mem, ""); - - /* prepend directory name to path if name does not contain a path */ - if (dirlen > 0 && !strchr(name, MC_PATHSEP_C)) { - strcat(mem, dirname); - strcat(mem, MC_PATHSEP_S); - } /* dirlen */ - - strcat(mem, name); - if (!strchr(name, '.') && ext && strlen(ext)) - { /* add extension if not in file name already */ - strcat(mem, "."); - strcat(mem, ext); - } - return(mem); -} /* mcfull_file */ - -/******************************************************************************* -* mcnew_file: opens a new file within dirname if non NULL -* the file is opened in "a" (append, create if does not exist) -* the extension 'ext' is added if the file name does not include one. -* the last argument is set to 0 if file did not exist, else to 1. -*******************************************************************************/ -FILE *mcnew_file(char *name, char *ext, int *exists) -{ - char *mem; - FILE *file=NULL; - - if (!name || strlen(name) == 0 || mcdisable_output_files) return(NULL); - - mem = mcfull_file(name, ext); /* create dirname/name.ext */ - - /* check for existence */ - file = fopen(mem, "r"); /* for reading -> fails if does not exist */ - if (file) { - fclose(file); - *exists=1; - } else - *exists=0; - - /* open the file for writing/appending */ -#ifdef USE_NEXUS - if (mcformat && strcasestr(mcformat, "NeXus")) { - /* NXhandle nxhandle is defined in the .h with USE_NEXUS */ - NXaccess mode = (*exists ? NXACC_CREATE5 | NXACC_RDWR : NXACC_CREATE5); - - if (NXopen(mem, mode, &nxhandle) != NX_OK) - file = NULL; - else - file = (FILE*)&nxhandle; /* to make it non NULL */ - } else -#endif - file = fopen(mem, "a+"); - - if(!file) - fprintf(stderr, "Warning: could not open output file '%s' for %s (mcnew_file)\n", - mem, *exists ? "append" : "create"); - free(mem); - - return file; -} /* mcnew_file */ - -/******************************************************************************* -* mcdetector_statistics: compute detector statistics, error bars, [x I I_err N] 1D -* RETURN: updated detector structure -* Used by: detector_import -*******************************************************************************/ -MCDETECTOR mcdetector_statistics( - MCDETECTOR detector) -{ - - if (!detector.p1 || !detector.m) - return(detector); - - /* compute statistics and update MCDETECTOR structure ===================== */ - double sum_z = 0, min_z = 0, max_z = 0; - double fmon_x =0, smon_x = 0, fmon_y =0, smon_y=0, mean_z=0; - double Nsum=0, P2sum=0; - - double sum_xz = 0, sum_yz = 0, sum_x = 0, sum_y = 0, sum_x2z = 0, sum_y2z = 0; - int i,j; - char hasnan=0, hasinf=0; - char israw = ((char*)strcasestr(detector.format,"raw") != NULL); - double *this_p1=NULL; /* new 1D McCode array [x I E N]. Freed after writing data */ - - /* if McCode/PGPLOT and rank==1 we create a new m*4 data block=[x I E N] */ - if (detector.rank == 1 && strcasestr(detector.format,"McCode")) { - this_p1 = (double *)calloc(detector.m*detector.n*detector.p*4, sizeof(double)); - if (!this_p1) - exit(-fprintf(stderr, "Error: Out of memory creating %zi 1D " MCCODE_STRING " data set for file '%s' (detector_import)\n", - detector.m*detector.n*detector.p*4*sizeof(double*), detector.filename)); - } - - max_z = min_z = detector.p1[0]; - - /* compute sum and moments (not for lists) */ - if (!strcasestr(detector.format,"list") && detector.m) - for(j = 0; j < detector.n*detector.p; j++) - { - for(i = 0; i < detector.m; i++) - { - double x,y,z; - double N, E; - long index= !detector.istransposed ? i*detector.n*detector.p + j : i+j*detector.m; - char hasnaninf=0; - - if (detector.m) - x = detector.xmin + (i + 0.5)/detector.m*(detector.xmax - detector.xmin); - else x = 0; - if (detector.n && detector.p) - y = detector.ymin + (j + 0.5)/detector.n/detector.p*(detector.ymax - detector.ymin); - else y = 0; - z = detector.p1[index]; - N = detector.p0 ? detector.p0[index] : 1; - E = detector.p2 ? detector.p2[index] : 0; - if (detector.p2 && !israw) - detector.p2[index] = (*mcestimate_error_p)(detector.p0[index],detector.p1[index],detector.p2[index]); /* set sigma */ - - if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { - /* fill-in 1D McCode array [x I E N] */ - this_p1[index*4] = x; - this_p1[index*4+1] = z; - this_p1[index*4+2] = detector.p2 ? detector.p2[index] : 0; - this_p1[index*4+3] = N; - } - - if (isnan(z) || isnan(E) || isnan(N)) hasnaninf=hasnan=1; - if (isinf(z) || isinf(E) || isinf(N)) hasnaninf=hasinf=1; - - /* compute stats integrals */ - if (!hasnaninf) { - sum_xz += x*z; - sum_yz += y*z; - sum_x += x; - sum_y += y; - sum_z += z; - sum_x2z += x*x*z; - sum_y2z += y*y*z; - if (z > max_z) max_z = z; - if (z < min_z) min_z = z; - - Nsum += N; - P2sum += E; - } - - } - } /* for j */ - - /* compute 1st and 2nd moments. For lists, sum_z=0 so this is skipped. */ - if (sum_z && detector.n*detector.m*detector.p) - { - fmon_x = sum_xz/sum_z; - fmon_y = sum_yz/sum_z; - smon_x = sum_x2z/sum_z-fmon_x*fmon_x; smon_x = smon_x > 0 ? sqrt(smon_x) : 0; - smon_y = sum_y2z/sum_z-fmon_y*fmon_y; smon_y = smon_y > 0 ? sqrt(smon_y) : 0; - mean_z = sum_z/detector.n/detector.m/detector.p; - } - /* store statistics into detector */ - detector.intensity = sum_z; - detector.error = Nsum ? (*mcestimate_error_p)(Nsum, sum_z, P2sum) : 0; - detector.events = Nsum; - detector.min = min_z; - detector.max = max_z; - detector.mean = mean_z; - detector.centerX = fmon_x; - detector.halfwidthX= smon_x; - detector.centerY = fmon_y; - detector.halfwidthY= smon_y; - - /* if McCode/PGPLOT and rank==1 replace p1 with new m*4 1D McCode and clear others */ - if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { - - detector.p1 = this_p1; - detector.n = detector.m; detector.m = 4; - detector.p0 = detector.p2 = NULL; - detector.istransposed = 1; - } - - if (detector.n*detector.m*detector.p > 1) - snprintf(detector.signal, CHAR_BUF_LENGTH, - "Min=%g; Max=%g; Mean=%g;", detector.min, detector.max, detector.mean); - else - strcpy(detector.signal, "None"); - snprintf(detector.values, CHAR_BUF_LENGTH, - "%g %g %g", detector.intensity, detector.error, detector.events); - - switch (detector.rank) { - case 1: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g;", - detector.centerX, detector.halfwidthX); break; - case 2: - case 3: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g; Y0=%g; dY=%g;", - detector.centerX, detector.halfwidthX, detector.centerY, detector.halfwidthY); - break; - default: strcpy(detector.statistics, "None"); - } - - if (hasnan) - printf("WARNING: Nan detected in component/file %s %s\n", - detector.component, strlen(detector.filename) ? detector.filename : ""); - if (hasinf) - printf("WARNING: Inf detected in component/file %s %s\n", - detector.component, strlen(detector.filename) ? detector.filename : ""); - - return(detector); - -} /* mcdetector_statistics */ - -/******************************************************************************* -* detector_import: build detector structure, merge non-lists from MPI -* compute basic stat, write "Detector:" line -* RETURN: detector structure. Invalid data if detector.p1 == NULL -* Invalid detector sets m=0 and filename="" -* Simulation data sets m=0 and filename=siminfo_name -* This function is equivalent to the old 'mcdetector_out', returning a structure -*******************************************************************************/ -MCDETECTOR detector_import( - char *format, - char *component, char *title, - long m, long n, long p, - char *xlabel, char *ylabel, char *zlabel, - char *xvar, char *yvar, char *zvar, - double x1, double x2, double y1, double y2, double z1, double z2, - char *filename, - double *p0, double *p1, double *p2, - Coords position, Rotation rotation, int index) -{ - time_t t; /* for detector.date */ - long date_l; /* date as a long number */ - char istransposed=0; - char c[CHAR_BUF_LENGTH]; /* temp var for signal label */ - - MCDETECTOR detector; - - /* build MCDETECTOR structure ============================================= */ - /* make sure we do not have NULL for char fields */ - - /* these also apply to simfile */ - strncpy (detector.filename, filename ? filename : "", CHAR_BUF_LENGTH); - strncpy (detector.format, format ? format : "McCode" , CHAR_BUF_LENGTH); - /* add extension if missing */ - if (strlen(detector.filename) && !strchr(detector.filename, '.')) - { /* add extension if not in file name already */ - strcat(detector.filename, ".dat"); - } - strncpy (detector.component, component ? component : MCCODE_STRING " component", CHAR_BUF_LENGTH); - #ifdef USE_NEXUS - char pref[5]; - if (index-1 < 10) { - sprintf(pref,"000"); - } else if (index-1 < 100) { - sprintf(pref,"00"); - } else if (index-1 < 1000) { - sprintf(pref,"0"); - } else if (index-1 < 10000) { - sprintf(pref,""); - } else { - fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); - exit(-1); - } - sprintf(detector.nexuscomp,"%s%d_%s",pref,index-1,detector.component); - #endif - - snprintf(detector.instrument, CHAR_BUF_LENGTH, "%s (%s)", instrument_name, instrument_source); - snprintf(detector.user, CHAR_BUF_LENGTH, "%s on %s", - getenv("USER") ? getenv("USER") : MCCODE_NAME, - getenv("HOST") ? getenv("HOST") : "localhost"); - time(&t); /* get current write time */ - date_l = (long)t; /* same but as a long */ - snprintf(detector.date, CHAR_BUF_LENGTH, "%s", ctime(&t)); - if (strlen(detector.date)) detector.date[strlen(detector.date)-1] = '\0'; /* remove last \n in date */ - detector.date_l = date_l; - - if (!mcget_run_num() || mcget_run_num() >= mcget_ncount()) - snprintf(detector.ncount, CHAR_BUF_LENGTH, "%llu", mcget_ncount() -#ifdef USE_MPI -*mpi_node_count -#endif - ); - else - snprintf(detector.ncount, CHAR_BUF_LENGTH, "%g/%g", (double)mcget_run_num(), (double)mcget_ncount()); - - detector.p0 = p0; - detector.p1 = p1; - detector.p2 = p2; - - /* handle transposition (not for NeXus) */ - if (!strcasestr(detector.format, "NeXus")) { - if (m<0 || n<0 || p<0) istransposed = !istransposed; - if (strcasestr(detector.format, "transpose")) istransposed = !istransposed; - if (istransposed) { /* do the swap once for all */ - long i=m; m=n; n=i; - } - } - - m=labs(m); n=labs(n); p=labs(p); /* make sure dimensions are positive */ - detector.istransposed = istransposed; - - /* determine detector rank (dimensionality) */ - if (!m || !n || !p || !p1) detector.rank = 4; /* invalid: exit with m=0 filename="" */ - else if (m*n*p == 1) detector.rank = 0; /* 0D */ - else if (n == 1 || m == 1) detector.rank = 1; /* 1D */ - else if (p == 1) detector.rank = 2; /* 2D */ - else detector.rank = 3; /* 3D */ - - /* from rank, set type */ - switch (detector.rank) { - case 0: strcpy(detector.type, "array_0d"); m=n=p=1; break; - case 1: snprintf(detector.type, CHAR_BUF_LENGTH, "array_1d(%ld)", m*n*p); m *= n*p; n=p=1; break; - case 2: snprintf(detector.type, CHAR_BUF_LENGTH, "array_2d(%ld, %ld)", m, n*p); n *= p; p=1; break; - case 3: snprintf(detector.type, CHAR_BUF_LENGTH, "array_3d(%ld, %ld, %ld)", m, n, p); break; - default: m=0; strcpy(detector.type, ""); strcpy(detector.filename, "");/* invalid */ - } - - detector.m = m; - detector.n = n; - detector.p = p; - - /* these only apply to detector files ===================================== */ - - detector.Position[0]=position.x; - detector.Position[1]=position.y; - detector.Position[2]=position.z; - rot_copy(detector.Rotation,rotation); - snprintf(detector.position, CHAR_BUF_LENGTH, "%g %g %g", position.x, position.y, position.z); - /* may also store actual detector orientation in the future */ - - strncpy(detector.title, title && strlen(title) ? title : component, CHAR_BUF_LENGTH); - strncpy(detector.xlabel, xlabel && strlen(xlabel) ? xlabel : "X", CHAR_BUF_LENGTH); /* axis labels */ - strncpy(detector.ylabel, ylabel && strlen(ylabel) ? ylabel : "Y", CHAR_BUF_LENGTH); - strncpy(detector.zlabel, zlabel && strlen(zlabel) ? zlabel : "Z", CHAR_BUF_LENGTH); - strncpy(detector.xvar, xvar && strlen(xvar) ? xvar : "x", CHAR_BUF_LENGTH); /* axis variables */ - strncpy(detector.yvar, yvar && strlen(yvar) ? yvar : detector.xvar, CHAR_BUF_LENGTH); - strncpy(detector.zvar, zvar && strlen(zvar) ? zvar : detector.yvar, CHAR_BUF_LENGTH); - - /* set "variables" as e.g. "I I_err N" */ - strcpy(c, "I "); - if (strlen(detector.zvar)) strncpy(c, detector.zvar,32); - else if (strlen(detector.yvar)) strncpy(c, detector.yvar,32); - else if (strlen(detector.xvar)) strncpy(c, detector.xvar,32); - - if (detector.rank == 1) - snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s %s_err N", detector.xvar, c, c); - else - snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s_err N", c, c); - - /* limits */ - detector.xmin = x1; - detector.xmax = x2; - detector.ymin = y1; - detector.ymax = y2; - detector.zmin = z1; - detector.zmax = z2; - if (abs(detector.rank) == 1) - snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g", x1, x2); - else if (detector.rank == 2) - snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g", x1, x2, y1, y2); - else - snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g %g %g", x1, x2, y1, y2, z1, z2); - - /* if MPI and nodes_nb > 1: reduce data sets when using MPI =============== */ -#ifdef USE_MPI - if (!strcasestr(detector.format,"list") && mpi_node_count > 1 && m) { - /* we save additive data: reduce everything into mpi_node_root */ - if (p0) mc_MPI_Sum(p0, m*n*p); - if (p1) mc_MPI_Sum(p1, m*n*p); - if (p2) mc_MPI_Sum(p2, m*n*p); - if (!p0) { /* additive signal must be then divided by the number of nodes */ - int i; - for (i=0; i CHAR_BUF_LENGTH) break; - snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, - (*mcinputtypes[mcinputtable[i].type].parminfo) - (mcinputtable[i].name)); - if (strlen(Parameters) + strlen(ThisParam) + 1 >= CHAR_BUF_LENGTH) break; - strcat(Parameters, ThisParam); - } - - /* output data ============================================================ */ - if (f != stdout) - fprintf(f, "%sFile: %s%c%s\n", pre, dirname, MC_PATHSEP_C, siminfo_name); - else - fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); - - fprintf(f, "%sSource: %s\n", pre, instrument_source); - fprintf(f, "%sParameters: %s\n", pre, Parameters); - - fprintf(f, "%sTrace_enabled: %s\n", pre, traceenabled ? "yes" : "no"); - fprintf(f, "%sDefault_main: %s\n", pre, defaultmain ? "yes" : "no"); -#ifdef MC_EMBEDDED_RUNTIME - fprintf(f, "%sEmbedded_runtime: %s\n", pre, "yes"); -#else - fprintf(f, "%sEmbedded_runtime: %s\n", pre, "no"); -#endif - - fflush(f); -} /* mcinfo_out */ - -/******************************************************************************* -* mcruninfo_out: output simulation tags/info (both in SIM and data files) -* Used in: siminfo_init (ascii case), mcdetector_out_xD_ascii -*******************************************************************************/ -static void mcruninfo_out(char *pre, FILE *f) -{ - int i; - char Parameters[CHAR_BUF_LENGTH]; - - if (!f || mcdisable_output_files) return; - - fprintf(f, "%sFormat: %s%s\n", pre, - mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME, - mcformat && strcasestr(mcformat,"McCode") ? " with text headers" : ""); - fprintf(f, "%sURL: %s\n", pre, "http://www.mccode.org"); - fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); - fprintf(f, "%sInstrument: %s\n", pre, instrument_source); - fprintf(f, "%sNcount: %llu\n", pre, mcget_ncount()); - fprintf(f, "%sTrace: %s\n", pre, mcdotrace ? "yes" : "no"); - fprintf(f, "%sGravitation: %s\n", pre, mcgravitation ? "yes" : "no"); - #ifdef TOF_TRAIN - fprintf(f, "%sTOF_TRAIN: %d\n", pre, NTOF); - #endif - snprintf(Parameters, CHAR_BUF_LENGTH, "%ld", mcseed); - fprintf(f, "%sSeed: %s\n", pre, Parameters); - fprintf(f, "%sDirectory: %s\n", pre, dirname ? dirname : "."); -#ifdef USE_MPI - if (mpi_node_count > 1) - fprintf(f, "%sNodes: %i\n", pre, mpi_node_count); -#endif - - // TODO Consider replacing this by a a call to `mcparameterinfo_out(pre+"Param: ", f)` - /* output parameter string ================================================ */ - for(i = 0; i < numipar; i++) { - if (mcinputtable[i].par){ - /* Parameters with a default value */ - if(mcinputtable[i].val && strlen(mcinputtable[i].val)){ - (*mcinputtypes[mcinputtable[i].type].printer)(Parameters, mcinputtable[i].par); - fprintf(f, "%sParam: %s=%s\n", pre, mcinputtable[i].name, Parameters); - /* ... and those without */ - }else{ - fprintf(f, "%sParam: %s=NULL\n", pre, mcinputtable[i].name); - } - } - } - fflush(f); -} /* mcruninfo_out */ - -/******************************************************************************* - * @brief Print parameter information to the specified file - * @param pre any beginning-of-line padding - * @param f the output file - */ -static void mcparameterinfo_out(char * pre, FILE *f){ - if (!f || mcdisable_output_files) return; - - unsigned int nchar = 4; - for (int i=0; i < numipar; ++i){ - if (mcinputtable[i].par && mcinputtable[i].val && strlen(mcinputtable[i].val) > nchar) - nchar = strlen(mcinputtable[i].val); - } - char * buffer = calloc(nchar+1, sizeof(char)); - - if (!buffer) { - exit(1); - } - - for (int i=0; i < numipar; ++i) { - if (mcinputtable[i].par) { - char * name = mcinputtable[i].name; - if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { - mcinputtypes[mcinputtable[i].type].printer(buffer, mcinputtable[i].par); - } else { - strcpy(buffer, "NULL"); - } - if (strlen(mcinputtable[i].unit)){ - //fprintf(f, "%s%s %s (\"%s\") = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); - fprintf(f, "%s%s %s/\"%s\" = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); - } else { - fprintf(f, "%s%s %s = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, buffer); - } - } - } - - free(buffer); -} - -/******************************************************************************* -* siminfo_out: wrapper to fprintf(siminfo_file) -*******************************************************************************/ -void siminfo_out(char *format, ...) -{ - va_list ap; - - if(siminfo_file && !mcdisable_output_files) - { - va_start(ap, format); - vfprintf(siminfo_file, format, ap); - va_end(ap); - } -} /* siminfo_out */ - - -/******************************************************************************* -* mcdatainfo_out: output detector header -* mcdatainfo_out(prefix, file_handle, detector) writes info to data file -*******************************************************************************/ -static void -mcdatainfo_out(char *pre, FILE *f, MCDETECTOR detector) -{ - if (!f || !detector.m || mcdisable_output_files) return; - - /* output data ============================================================ */ - fprintf(f, "%sDate: %s (%li)\n", pre, detector.date, detector.date_l); - fprintf(f, "%stype: %s\n", pre, detector.type); - fprintf(f, "%sSource: %s\n", pre, detector.instrument); - fprintf(f, "%scomponent: %s\n", pre, detector.component); - fprintf(f, "%sposition: %s\n", pre, detector.position); - - fprintf(f, "%stitle: %s\n", pre, detector.title); - fprintf(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? - "%sNcount: %s\n" : - "%sratio: %s\n", pre, detector.ncount); - - if (strlen(detector.filename)) { - fprintf(f, "%sfilename: %s\n", pre, detector.filename); - } - - fprintf(f, "%sstatistics: %s\n", pre, detector.statistics); - fprintf(f, "%ssignal: %s\n", pre, detector.signal); - fprintf(f, "%svalues: %s\n", pre, detector.values); - - if (detector.rank >= 1) - { - fprintf(f, "%sxvar: %s\n", pre, detector.xvar); - fprintf(f, "%syvar: %s\n", pre, detector.yvar); - fprintf(f, "%sxlabel: %s\n", pre, detector.xlabel); - fprintf(f, "%sylabel: %s\n", pre, detector.ylabel); - if (detector.rank > 1) { - fprintf(f, "%szvar: %s\n", pre, detector.zvar); - fprintf(f, "%szlabel: %s\n", pre, detector.zlabel); - } - } - - fprintf(f, - abs(detector.rank)==1 ? - "%sxlimits: %s\n" : - "%sxylimits: %s\n", pre, detector.limits); - fprintf(f, "%svariables: %s\n", pre, - strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); - - fflush(f); - -} /* mcdatainfo_out */ - -/* mcdetector_out_array_ascii: output a single array to a file - * m: columns - * n: rows - * p: array - * f: file handle (already opened) - */ -static void mcdetector_out_array_ascii(long m, long n, double *p, FILE *f, char istransposed) -{ - if(f) - { - int i,j; - for(j = 0; j < n; j++) - { - for(i = 0; i < m; i++) - { - fprintf(f, "%.10g ", p[!istransposed ? i*n + j : j*m+i]); - } - fprintf(f,"\n"); - } - } -} /* mcdetector_out_array_ascii */ - -/******************************************************************************* -* mcdetector_out_0D_ascii: called by mcdetector_out_0D for ascii output -*******************************************************************************/ -MCDETECTOR mcdetector_out_0D_ascii(MCDETECTOR detector) -{ - int exists=0; - FILE *outfile = NULL; - - /* Write data set information to simulation description file. */ - MPI_MASTER( - siminfo_out("\nbegin data\n"); // detector.component - mcdatainfo_out(" ", siminfo_file, detector); - siminfo_out("end data\n"); - /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ - outfile = mcnew_file(detector.component, "dat", &exists); - if(outfile) - { - /* write data file header and entry in simulation description file */ - mcruninfo_out( "# ", outfile); - mcdatainfo_out("# ", outfile, detector); - /* write I I_err N */ - fprintf(outfile, "%g %g %g\n", - detector.intensity, detector.error, detector.events); - fclose(outfile); - } - ); /* MPI_MASTER */ - return(detector); -} /* mcdetector_out_0D_ascii */ - -/******************************************************************************* -* mcdetector_out_1D_ascii: called by mcdetector_out_1D for ascii output -*******************************************************************************/ -MCDETECTOR mcdetector_out_1D_ascii(MCDETECTOR detector) -{ - int exists=0; - FILE *outfile = NULL; - - MPI_MASTER( - /* Write data set information to simulation description file. */ - siminfo_out("\nbegin data\n"); // detector.filename - mcdatainfo_out(" ", siminfo_file, detector); - siminfo_out("end data\n"); - /* Loop over array elements, writing to file. */ - /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ - outfile = mcnew_file(detector.filename, "dat", &exists); - if(outfile) - { - /* write data file header and entry in simulation description file */ - mcruninfo_out( "# ", outfile); - mcdatainfo_out("# ", outfile, detector); - /* output the 1D array columns */ - mcdetector_out_array_ascii(detector.m, detector.n, detector.p1, outfile, detector.istransposed); - - fclose(outfile); - } - ); /* MPI_MASTER */ - return(detector); - -} /* mcdetector_out_1D_ascii */ - -/******************************************************************************* -* mcdetector_out_2D_ascii: called by mcdetector_out_2D for ascii output -*******************************************************************************/ -MCDETECTOR mcdetector_out_2D_ascii(MCDETECTOR detector) -{ - int exists=0; - FILE *outfile = NULL; - - MPI_MASTER( - /* Loop over array elements, writing to file. */ - /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ - outfile = mcnew_file(detector.filename, "dat", &exists); - if(outfile) - { - /* write header only if file has just been created (not appending) */ - if (!exists) { - /* Write data set information to simulation description file. */ - siminfo_out("\nbegin data\n"); // detector.filename - mcdatainfo_out(" ", siminfo_file, detector); - siminfo_out("end data\n"); - - mcruninfo_out( "# ", outfile); - mcdatainfo_out("# ", outfile, detector); - } - /* Add # Data entry for any write to the file (e.g. via -USR2, see GitHub issue #2174 ) */ - fprintf(outfile, "# Data [%s/%s] %s:\n", detector.component, detector.filename, detector.zvar); - mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p1, - outfile, detector.istransposed); - if (detector.p2) { - fprintf(outfile, "# Errors [%s/%s] %s_err:\n", detector.component, detector.filename, detector.zvar); - mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p2, - outfile, detector.istransposed); - } - if (detector.p0) { - fprintf(outfile, "# Events [%s/%s] N:\n", detector.component, detector.filename); - mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p0, - outfile, detector.istransposed); - } - fclose(outfile); - - if (!exists) { - if (strcasestr(detector.format, "list")) - printf("Events: \"%s\"\n", - strlen(detector.filename) ? detector.filename : detector.component); - } - } /* if outfile */ - ); /* MPI_MASTER */ -#ifdef USE_MPI - if (strcasestr(detector.format, "list") && mpi_node_count > 1) { - int node_i=0; - /* loop along MPI nodes to write sequentially */ - for(node_i=0; node_i strlen(original)) n = strlen(original); - else original += strlen(original)-n; - strncpy(valid, original, n); - - for (i=0; i < n; i++) - { - if ( (valid[i] > 122) - || (valid[i] < 32) - || (strchr("!\"#$%&'()*+,-.:;<=>?@[\\]^`/ \n\r\t", valid[i]) != NULL) ) - { - if (i) valid[i] = '_'; else valid[i] = 'm'; - } - } - valid[i] = '\0'; - - return(valid); -} /* strcpy_valid */ - -/* end ascii output section ================================================= */ - - - - - - - -#ifdef USE_NEXUS - -/* ========================================================================== */ - -/* NeXus output */ - -/* ========================================================================== */ - -#define nxprintf(...) nxstr('d', __VA_ARGS__) -#define nxprintattr(...) nxstr('a', __VA_ARGS__) - -/******************************************************************************* -* nxstr: output a tag=value data set (char) in NeXus/current group -* when 'format' is larger that 1024 chars it is used as value for the 'tag' -* else the value is assembled with format and following arguments. -* type='d' -> data set -* 'a' -> attribute for current data set -*******************************************************************************/ -static int nxstr(char type, NXhandle *f, char *tag, char *format, ...) -{ - va_list ap; - char value[CHAR_BUF_LENGTH]; - int i; - int ret=NX_OK; - - if (!tag || !format || !strlen(tag) || !strlen(format)) return(NX_OK); - - /* assemble the value string */ - if (strlen(format) < CHAR_BUF_LENGTH) { - va_start(ap, format); - ret = vsnprintf(value, CHAR_BUF_LENGTH, format, ap); - va_end(ap); - - i = strlen(value); - } else { - i = strlen(format); - } - - if (type == 'd') { - /* open/put/close data set */ - if (NXmakedata (f, tag, NX_CHAR, 1, &i) != NX_OK) return(NX_ERROR); - NXopendata (f, tag); - if (strlen(format) < CHAR_BUF_LENGTH) - ret = NXputdata (f, value); - else - ret = NXputdata (f, format); - NXclosedata(f); - } else { - if (strlen(format) < CHAR_BUF_LENGTH) - ret = NXputattr (f, tag, value, strlen(value), NX_CHAR); - else - ret = NXputattr (f, tag, format, strlen(format), NX_CHAR); - } - - return(ret); - -} /* nxstr */ - -/******************************************************************************* -* mcinfo_readfile: read a full file into a string buffer which is allocated -* Think to free the buffer after use. -* Used in: mcinfo_out_nexus (nexus) -*******************************************************************************/ -char *mcinfo_readfile(char *filename) -{ - FILE *f = fopen(filename, "rb"); - if (!f) return(NULL); - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - rewind(f); - char *string = malloc(fsize + 1); - if (string) { - int n = fread(string, fsize, 1, f); - fclose(f); - - string[fsize] = 0; - } - return(string); -} - -/******************************************************************************* -* mcinfo_out: output instrument/simulation groups in NeXus file -* Used in: siminfo_init (nexus) -*******************************************************************************/ -static void mcinfo_out_nexus(NXhandle f) -{ - FILE *fid; /* for intrument source code/C/IDF */ - char *buffer=NULL; - time_t t =time(NULL); /* for date */ - char entry0[CHAR_BUF_LENGTH]; - int count=0; - char name[CHAR_BUF_LENGTH]; - char class[CHAR_BUF_LENGTH]; - - if (!f || mcdisable_output_files) return; - - /* write NeXus NXroot attributes */ - /* automatically added: file_name, HDF5_Version, file_time, NeXus_version */ - nxprintattr(f, "creator", "%s generated with " MCCODE_STRING, instrument_name); - - /* count the number of existing NXentry and create the next one */ - NXgetgroupinfo(f, &count, name, class); - sprintf(entry0, "entry%i", count+1); - - /* create the main NXentry (mandatory in NeXus) */ - if (NXmakegroup(f, entry0, "NXentry") == NX_OK) - if (NXopengroup(f, entry0, "NXentry") == NX_OK) { - nxprintf(nxhandle, "program_name", MCCODE_STRING); - nxprintf(f, "start_time", ctime(&t)); - nxprintf(f, "title", "%s%s%s simulation generated by instrument %s", - dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name, - instrument_name); - nxprintattr(f, "program_name", MCCODE_STRING); - nxprintattr(f, "instrument", instrument_name); - nxprintattr(f, "simulation", "%s%s%s", - dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); - - /* write NeXus instrument group */ - if (NXmakegroup(f, "instrument", "NXinstrument") == NX_OK) - if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { - int i; - char *string=NULL; - - /* write NeXus parameters(types) data =================================== */ - string = (char*)malloc(CHAR_BUF_LENGTH); - if (string) { - strcpy(string, ""); - for(i = 0; i < numipar; i++) - { - char ThisParam[CHAR_BUF_LENGTH]; - snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, - (*mcinputtypes[mcinputtable[i].type].parminfo) - (mcinputtable[i].name)); - if (strlen(string) + strlen(ThisParam) < CHAR_BUF_LENGTH) - strcat(string, ThisParam); - } - nxprintattr(f, "Parameters", string); - free(string); - } - - nxprintattr(f, "name", instrument_name); - nxprintf (f, "name", instrument_name); - nxprintattr(f, "Source", instrument_source); - - nxprintattr(f, "Trace_enabled", traceenabled ? "yes" : "no"); - nxprintattr(f, "Default_main", defaultmain ? "yes" : "no"); -#ifdef MC_EMBEDDED_RUNTIME - nxprintattr(f, "Embedded_runtime", "yes"); -#else - nxprintattr(f, "Embedded_runtime", "no"); -#endif - - /* add instrument source code when available */ - buffer = mcinfo_readfile(instrument_source); - if (buffer && strlen(buffer)) { - long length=strlen(buffer); - nxprintf (f, "description", buffer); - NXopendata(f,"description"); - nxprintattr(f, "file_name", instrument_source); - nxprintattr(f, "file_size", "%li", length); - nxprintattr(f, "MCCODE_STRING", MCCODE_STRING); - NXclosedata(f); - nxprintf (f,"instrument_source", "%s " MCCODE_NAME " " MCCODE_PARTICLE " Monte Carlo simulation", instrument_name); - free(buffer); - } else - nxprintf (f, "description", "File %s not found (instrument description %s is missing)", - instrument_source, instrument_name); - - if (mcnexus_embed_idf) { - /* add Mantid/IDF.xml when available */ - char *IDFfile=NULL; - IDFfile = (char*)malloc(CHAR_BUF_LENGTH); - sprintf(IDFfile,"%s%s",instrument_source,".xml"); - buffer = mcinfo_readfile(IDFfile); - if (buffer && strlen(buffer)) { - NXmakegroup (nxhandle, "instrument_xml", "NXnote"); - NXopengroup (nxhandle, "instrument_xml", "NXnote"); - nxprintf(f, "data", buffer); - nxprintf(f, "description", "IDF.xml file found with instrument %s", instrument_source); - nxprintf(f, "type", "text/xml"); - NXclosegroup(f); /* instrument_xml */ - free(buffer); - } - free(IDFfile); - } - - /* Add "components" entry */ - if (NXmakegroup(f, "components", "NXdata") == NX_OK) { - NXopengroup(f, "components", "NXdata"); - nxprintattr(f, "description", "Component list for instrument %s", instrument_name); - NXclosegroup(f); /* components */ - } else { - printf("Failed to create NeXus component hierarchy\n"); - } - NXclosegroup(f); /* instrument */ - } /* NXinstrument */ - - /* write NeXus simulation group */ - if (NXmakegroup(f, "simulation", "NXnote") == NX_OK) - if (NXopengroup(f, "simulation", "NXnote") == NX_OK) { - - nxprintattr(f, "name", "%s%s%s", - dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); - - nxprintf (f, "name", "%s", siminfo_name); - nxprintattr(f, "Format", mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME); - nxprintattr(f, "URL", "http://www.mccode.org"); - nxprintattr(f, "program", MCCODE_STRING); - nxprintattr(f, "Instrument",instrument_source); - nxprintattr(f, "Trace", mcdotrace ? "yes" : "no"); - nxprintattr(f, "Gravitation",mcgravitation ? "yes" : "no"); - nxprintattr(f, "Seed", "%li", mcseed); - nxprintattr(f, "Directory", dirname); - #ifdef USE_MPI - if (mpi_node_count > 1) - nxprintf(f, "Nodes", "%i", mpi_node_count); - #endif - - /* output parameter string ================================================ */ - if (NXmakegroup(f, "Param", "NXparameters") == NX_OK) { - NXopengroup(f,"Param", "NXparameters"); - int i; - char string[CHAR_BUF_LENGTH]; - for(i = 0; i < numipar; i++) { - if (mcget_run_num() || (mcinputtable[i].val && strlen(mcinputtable[i].val))) { - if (mcinputtable[i].par == NULL) - strncpy(string, (mcinputtable[i].val ? mcinputtable[i].val : ""), CHAR_BUF_LENGTH); - else - (*mcinputtypes[mcinputtable[i].type].printer)(string, mcinputtable[i].par); - - nxprintf(f, mcinputtable[i].name, "%s", string); - nxprintattr(f, mcinputtable[i].name, string); - } - } - NXclosegroup(f); /* Param */ - } /* NXparameters */ - NXclosegroup(f); /* simulation */ - } /* NXsimulation */ - - /* create a group to hold all links for all monitors */ - NXmakegroup(f, "data", "NXdetector"); - - /* leave the NXentry opened (closed at exit) */ - } /* NXentry */ -} /* mcinfo_out_nexus */ - -/******************************************************************************* -* mccomp_placement_type_nexus: -* Places -* - absolute (3x1) position -* - absolute (3x3) rotation -* - type / class of component instance into attributes under -* entry/instrument/compname -* requires: NXentry to be opened -*******************************************************************************/ -static void mccomp_placement_type_nexus(NXhandle nxhandle, char* component, Coords position, Rotation rotation, char* comptype) -{ - /* open NeXus instrument group */ - - #ifdef USE_NEXUS - if(nxhandle) { - if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { - if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { - if (NXmakegroup(nxhandle, component, "NXdata") == NX_OK) { - if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { - int64_t pdims[3]; pdims[0]=3; pdims[1]=0; pdims[2]=0; - if (NXcompmakedata64(nxhandle, "Position", NX_FLOAT64, 1, pdims, NX_COMPRESSION, pdims) == NX_OK) { - if (NXopendata(nxhandle, "Position") == NX_OK) { - double pos[3]; coords_get(position, &pos[0], &pos[1], &pos[2]); - if (NXputdata (nxhandle, pos) == NX_OK) { - NXclosedata(nxhandle); - } else { - fprintf(stderr, "COULD NOT PUT Position field for component %s\n",component); - } - } else { - fprintf(stderr, "Warning: could not open Position field for component %s\n",component); - } - } - int64_t rdims[3]; rdims[0]=3; rdims[1]=3; rdims[2]=0; - if (NXcompmakedata64(nxhandle, "Rotation", NX_FLOAT64, 2, rdims, NX_COMPRESSION, rdims) == NX_OK) { - if (NXopendata(nxhandle, "Rotation") == NX_OK) { - if (NXputdata (nxhandle, rotation) == NX_OK) { - NXclosedata(nxhandle); - } else { - fprintf(stderr, "COULD NOT PUT Rotation field for component %s\n",component); - } - } else { - fprintf(stderr, "Warning: could not open Rotation field for component %s\n",component); - } - } - nxprintf(nxhandle, "Component_type", comptype); - NXclosegroup(nxhandle); // component - } else { - printf("FAILED to open comp data group %s\n",component); - } - } else { - printf("FAILED to create comp data group %s\n",component); - } - NXclosegroup(nxhandle); // components - } else { - printf("Failed to open NeXus component hierarchy\n"); - } - NXclosegroup(nxhandle); // instrument - } else { - printf("Failed to open NeXus instrument hierarchy\n"); - } - } else { - fprintf(stderr,"NO NEXUS FILE\n"); - } - #endif -} /* mccomp_placement_nexus */ - -/******************************************************************************* -* mccomp_param_nexus: -* Output parameter/value pair for component instance into -* the attribute -* entry/instrument/compname/parameter -* requires: NXentry to be opened -*******************************************************************************/ -static void mccomp_param_nexus(NXhandle nxhandle, char* component, char* parameter, char* defval, char* value, char* type) -{ - /* open NeXus instrument group */ - - #ifdef USE_NEXUS - if(nxhandle) { - if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { - if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { - if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { - NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ - NXmakegroup(nxhandle, "parameters", "NXdata"); - NXMEnableErrorReporting(); /* re-enable NeXus error messages */ - if (NXopengroup(nxhandle, "parameters", "NXdata") == NX_OK) { - NXmakegroup(nxhandle, parameter, "NXnote"); - if (NXopengroup(nxhandle, parameter, "NXnote") == NX_OK) { - nxprintattr(nxhandle, "type", type); - nxprintattr(nxhandle, "default", defval); - nxprintattr(nxhandle, "value", value); - NXclosegroup(nxhandle); // parameter - } else { - printf("FAILED to open parameters %s data group \n",parameter); - } - NXclosegroup(nxhandle); // "parameters" - } else { - printf("FAILED to open comp/parameters data group \n"); - } - NXclosegroup(nxhandle); // component - } else { - printf("FAILED to open comp data group %s\n",component); - } - NXclosegroup(nxhandle); // components - } else { - printf("Failed to open NeXus component hierarchy\n"); - } - NXclosegroup(nxhandle); // instrument - } else { - printf("Failed to open NeXus instrument hierarchy\n"); - } - } else { - fprintf(stderr,"NO NEXUS FILE\n"); - } -#endif -} /* mccomp_param_nexus */ - -/******************************************************************************* -* mcdatainfo_out_nexus: output detector header -* mcdatainfo_out_nexus(detector) create group and write info to NeXus data file -* open data:NXdetector then filename:NXdata and write headers/attributes -* requires: NXentry to be opened -*******************************************************************************/ -static void -mcdatainfo_out_nexus(NXhandle f, MCDETECTOR detector) -{ - char data_name[CHAR_BUF_LENGTH]; - if (!f || !detector.m || mcdisable_output_files) return; - - strcpy_valid(data_name, - strlen(detector.filename) ? - detector.filename : detector.component); - - /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ - if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { - if (NXopengroup(f, "components", "NXdata") == NX_OK) { - NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ - NXmakegroup(f, detector.nexuscomp, "NXdata"); - if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { - NXmakegroup(f, "output", "NXdetector"); - if (NXopengroup(f, "output", "NXdetector") == NX_OK) { - if (NXmakegroup(f, data_name, "NXdata") == NX_OK) { - if (NXopengroup(f, data_name, "NXdata") == NX_OK) { - /* output metadata (as attributes) ======================================== */ - nxprintattr(f, "Date", detector.date); - nxprintattr(f, "type", detector.type); - nxprintattr(f, "Source", detector.instrument); - nxprintattr(f, "component", detector.component); - nxprintattr(f, "position", detector.position); - - nxprintattr(f, "title", detector.title); - nxprintattr(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? - "Ncount" : - "ratio", detector.ncount); - - if (strlen(detector.filename)) { - nxprintattr(f, "filename", detector.filename); - } - - nxprintattr(f, "statistics", detector.statistics); - nxprintattr(f, "signal", detector.signal); - nxprintattr(f, "values", detector.values); - - if (detector.rank >= 1) - { - nxprintattr(f, "xvar", detector.xvar); - nxprintattr(f, "yvar", detector.yvar); - nxprintattr(f, "xlabel", detector.xlabel); - nxprintattr(f, "ylabel", detector.ylabel); - if (detector.rank > 1) { - nxprintattr(f, "zvar", detector.zvar); - nxprintattr(f, "zlabel", detector.zlabel); - } - } - - nxprintattr(f, abs(detector.rank)==1 ? - "xlimits" : - "xylimits", detector.limits); - nxprintattr(f, "variables", - strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); - - NXclosegroup(f); // data_name - } - } - } - NXclosegroup(f); // output - NXclosegroup(f); // detector.nexuscomp - } - NXclosegroup(f); // components - } - NXMEnableErrorReporting(); /* re-enable NeXus error messages */ - NXclosegroup(f); // instrument - } /* NXdetector (instrument) */ -} /* mcdatainfo_out_nexus */ - -/******************************************************************************* -* mcdetector_out_axis_nexus: write detector axis into current NXdata -* requires: NXdata to be opened -*******************************************************************************/ -int mcdetector_out_axis_nexus(NXhandle f, char *label, char *var, int rank, long length, double min, double max) -{ - if (!f || length <= 1 || mcdisable_output_files || max == min) return(NX_OK); - else { - double *axis; - axis=malloc(sizeof(double)*length); - if (!axis ) { - printf("Fatal memory error allocating NeXus axis of length %li, exiting!\n", length); - return(NX_ERROR); - } - char *valid; - valid=malloc(sizeof(char)*CHAR_BUF_LENGTH); - if (!valid ) { - printf("Fatal memory error allocating label axis of length %li, exiting!\n", CHAR_BUF_LENGTH); - free(axis); - return(NX_ERROR); - } - int dim=(int)length; - int i; - int nprimary=1; - /* create an axis from [min:max] */ - for(i = 0; i < length; i++) - axis[i] = min+(max-min)*(i+0.5)/length; - /* create the data set */ - strcpy_valid(valid, label); - NXcompmakedata(f, valid, NX_FLOAT64, 1, &dim, NX_COMPRESSION, &dim); - /* open it */ - if (NXopendata(f, valid) != NX_OK) { - fprintf(stderr, "Warning: could not open axis rank %i '%s' (NeXus)\n", - rank, valid); - free(axis); - free(valid); - return(NX_ERROR); - } - /* put the axis and its attributes */ - NXputdata (f, axis); - nxprintattr(f, "long_name", label); - nxprintattr(f, "short_name", var); - NXputattr (f, "axis", &rank, 1, NX_INT32); - nxprintattr(f, "units", var); - NXputattr (f, "primary", &nprimary, 1, NX_INT32); - NXclosedata(f); - free(axis); - free(valid); - return(NX_OK); - } -} /* mcdetector_out_axis_nexus */ - -/******************************************************************************* -* mcdetector_out_array_nexus: write detector array into current NXdata (1D,2D) -* requires: NXdata to be opened -*******************************************************************************/ -int mcdetector_out_array_nexus(NXhandle f, char *part, double *data, MCDETECTOR detector) -{ - - int64_t dims[3]={detector.m,detector.n,detector.p}; /* number of elements to write */ - int64_t fulldims[3]={detector.m,detector.n,detector.p}; - int signal=1; - int exists=0; - int64_t current_dims[3]={0,0,0}; - int ret=NX_OK; - - if (!f || !data || !detector.m || mcdisable_output_files) return(NX_OK); - - /* when this is a list, we set 1st dimension to NX_UNLIMITED for creation */ - if (strcasestr(detector.format, "list")) fulldims[0] = NX_UNLIMITED; - - /* create the data set in NXdata group */ - NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ - ret = NXcompmakedata64(f, part, NX_FLOAT64, detector.rank, fulldims, NX_COMPRESSION, dims); - if (ret != NX_OK) { - /* failed: data set already exists */ - int datatype=0; - int rank=0; - exists=1; - /* inquire current size of data set (nb of events stored) */ - NXopendata(f, part); - NXgetinfo64(f, &rank, current_dims, &datatype); - NXclosedata(f); - } - NXMEnableErrorReporting(); /* re-enable NeXus error messages */ - - /* open the data set */ - if (NXopendata(f, part) == NX_ERROR) { - fprintf(stderr, "Warning: could not open DataSet %s '%s' (NeXus)\n", - part, detector.title); - return(NX_ERROR); - } - if (strcasestr(detector.format, "list")) { - current_dims[1] = current_dims[2] = 0; /* set starting location for writing slab */ - NXputslab64(f, data, current_dims, dims); - if (!exists) - printf("Events: \"%s\"\n", - strlen(detector.filename) ? detector.filename : detector.component); - else - printf("Append: \"%s\"\n", - strlen(detector.filename) ? detector.filename : detector.component); - } else { - NXputdata (f, data); - } - - if (strstr(part,"data") || strstr(part, "events")) { - NXputattr(f, "signal", &signal, 1, NX_INT32); - nxprintattr(f, "short_name", strlen(detector.filename) ? - detector.filename : detector.component); - } - nxprintattr(f, "long_name", "%s '%s'", part, detector.title); - NXclosedata(f); - - return(NX_OK); -} /* mcdetector_out_array_nexus */ - -/******************************************************************************* -* mcdetector_out_data_nexus: write detector axes+data into current NXdata -* The data:NXdetector is opened, then filename:NXdata -* requires: NXentry to be opened -*******************************************************************************/ -int mcdetector_out_data_nexus(NXhandle f, MCDETECTOR detector) -{ - char data_name[CHAR_BUF_LENGTH]; - - if (!f || !detector.m || mcdisable_output_files) return(NX_OK); - - strcpy_valid(data_name, - strlen(detector.filename) ? - detector.filename : detector.component); - NXlink pLink; - /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ - if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { - if (NXopengroup(f, "components", "NXdata") == NX_OK) { - if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { - if (NXopengroup(f, "output", "NXdetector") == NX_OK) { - - /* the NXdata group has been created in mcdatainfo_out_nexus */ - if (NXopengroup(f, data_name, "NXdata") == NX_OK) { - - MPI_MASTER( - nxprintattr(f, "options", - strlen(detector.options) ? detector.options : "None"); - ); - /* write axes, for histogram data sets, not for lists */ - if (!strcasestr(detector.format, "list")) { - mcdetector_out_axis_nexus(f, detector.xlabel, detector.xvar, - 1, detector.m, detector.xmin, detector.xmax); - mcdetector_out_axis_nexus(f, detector.ylabel, detector.yvar, - 2, detector.n, detector.ymin, detector.ymax); - mcdetector_out_axis_nexus(f, detector.zlabel, detector.zvar, - 3, detector.p, detector.zmin, detector.zmax); - } else { - MPI_MASTER( - nxprintattr(f, "dataset columns", - strlen(detector.ylabel) ? detector.ylabel : "None"); - ); - } - - /* write the actual data (appended if already exists) */ - if (!strcasestr(detector.format, "list") && !strcasestr(detector.format, "pixels")) { - mcdetector_out_array_nexus(f, "data", detector.p1, detector); - mcdetector_out_array_nexus(f, "errors", detector.p2, detector); - mcdetector_out_array_nexus(f, "ncount", detector.p0, detector); - } else if (strcasestr(detector.format, "pixels")) { - mcdetector_out_array_nexus( f, "pixels", detector.p1, detector); - } else { - mcdetector_out_array_nexus( f, "events", detector.p1, detector); - } - NXclosegroup(f); - NXopengroup(f, data_name, "NXdata"); - NXgetgroupID(nxhandle, &pLink); - NXclosegroup(f); - } /* NXdata data_name*/ - NXclosegroup(f); - } /* NXdetector output */ - NXclosegroup(f); - } /* NXdata detector.nexuscomp */ - NXclosegroup(f); - } /* NXdata components */ - NXclosegroup(f); - } /* NXdata instrument */ - - if (!strcasestr(detector.format, "pixels")) { - if (NXopengroup(f, "data", "NXdetector") == NX_OK) { - NXmakelink(nxhandle, &pLink); - NXclosegroup(f); - } - } - return(NX_OK); -} /* mcdetector_out_array_nexus */ - -#ifdef USE_MPI -/******************************************************************************* -* mcdetector_out_list_slaves: slaves send their list data to master which writes -* requires: NXentry to be opened -* WARNING: this method has a flaw: it requires all nodes to flush the lists -* the same number of times. In case one node is just below the buffer size -* when finishing (e.g. monitor_nd), it may not trigger save but others may. -* Then the number of recv/send is not constant along nodes, and simulation stalls. -*******************************************************************************/ -MCDETECTOR mcdetector_out_list_slaves(MCDETECTOR detector) -{ - int node_i=0; - MPI_MASTER( - printf("\n** MPI master gathering slave node list data ** \n"); - ); - - if (mpi_node_rank != mpi_node_root) { - /* MPI slave: slaves send their data to master: 2 MPI_Send calls */ - /* m, n, p must be sent first, since all slaves do not have the same number of events */ - int mnp[3]={detector.m,detector.n,detector.p}; - - if (mc_MPI_Send(mnp, 3, MPI_INT, mpi_node_root)!= MPI_SUCCESS) - fprintf(stderr, "Warning: proc %i to master: MPI_Send mnp list error (mcdetector_out_list_slaves)\n", mpi_node_rank); - if (!detector.p1 - || mc_MPI_Send(detector.p1, mnp[0]*mnp[1]*mnp[2], MPI_DOUBLE, mpi_node_root) != MPI_SUCCESS) - fprintf(stderr, "Warning: proc %i to master: MPI_Send p1 list error: mnp=%i (mcdetector_out_list_slaves)\n", mpi_node_rank, abs(mnp[0]*mnp[1]*mnp[2])); - /* slaves are done: sent mnp and p1 */ - } /* end slaves */ - - /* MPI master: receive data from slaves sequentially: 2 MPI_Recv calls */ - - if (mpi_node_rank == mpi_node_root) { - for(node_i=0; node_i 1) { - mcdetector_out_list_slaves(detector); - } -#endif /* USE_MPI */ - - return(detector); -} /* mcdetector_out_2D_nexus */ - -MCDETECTOR mcdetector_out_3D_nexus(MCDETECTOR detector) -{ - printf("Received detector from %s\n",detector.component); - MPI_MASTER( - mcdatainfo_out_nexus(nxhandle, detector); - mcdetector_out_data_nexus(nxhandle, detector); - ); - return(detector); -} /* mcdetector_out_3D_nexus */ - - -#endif /* USE_NEXUS*/ - - - - - - - - -/* ========================================================================== */ - -/* Main input functions */ -/* DETECTOR_OUT_xD function calls -> ascii or NeXus */ - -/* ========================================================================== */ - -/******************************************************************************* -* siminfo_init: open SIM and write header -*******************************************************************************/ -FILE *siminfo_init(FILE *f) -{ - int exists=0; - - /* check format */ - if (!mcformat || !strlen(mcformat) - || !strcasecmp(mcformat, "MCSTAS") || !strcasecmp(mcformat, "MCXTRACE") - || !strcasecmp(mcformat, "PGPLOT") || !strcasecmp(mcformat, "GNUPLOT") || !strcasecmp(mcformat, "MCCODE") - || !strcasecmp(mcformat, "MATLAB")) { - mcformat="McCode"; -#ifdef USE_NEXUS - } else if (strcasestr(mcformat, "NeXus")) { - /* Do nothing */ -#endif - } else { - fprintf(stderr, - "Warning: You have requested the output format %s which is unsupported by this binary. Resetting to standard %s format.\n",mcformat ,"McCode"); - mcformat="McCode"; - } - - /* open the SIM file if not defined yet */ - if (siminfo_file || mcdisable_output_files) - return (siminfo_file); - -#ifdef USE_NEXUS - /* only master writes NeXus header: calls NXopen(nxhandle) */ - if (mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - siminfo_file = mcnew_file(siminfo_name, "h5", &exists); - if(!siminfo_file) - fprintf(stderr, - "Warning: could not open simulation description file '%s'\n", - siminfo_name); - else - mcinfo_out_nexus(nxhandle); - ); - return(siminfo_file); /* points to nxhandle */ - } -#endif - - /* write main description file (only MASTER) */ - MPI_MASTER( - - siminfo_file = mcnew_file(siminfo_name, "sim", &exists); - if(!siminfo_file) - fprintf(stderr, - "Warning: could not open simulation description file '%s'\n", - siminfo_name); - else - { - /* write SIM header */ - time_t t=time(NULL); - siminfo_out("%s simulation description file for %s.\n", - MCCODE_NAME, instrument_name); - siminfo_out("Date: %s", ctime(&t)); /* includes \n */ - siminfo_out("Program: %s\n\n", MCCODE_STRING); - - siminfo_out("begin instrument: %s\n", instrument_name); - mcinfo_out( " ", siminfo_file); - siminfo_out("end instrument\n"); - - siminfo_out("\nbegin simulation: %s\n", dirname); - mcruninfo_out(" ", siminfo_file); - siminfo_out("end simulation\n"); - - } - ); /* MPI_MASTER */ - return (siminfo_file); - -} /* siminfo_init */ - -/******************************************************************************* -* siminfo_close: close SIM -*******************************************************************************/ -void siminfo_close() -{ -#ifdef USE_MPI - if(mpi_node_rank == mpi_node_root) { -#endif - if(siminfo_file && !mcdisable_output_files) { -#ifdef USE_NEXUS - if (mcformat && strcasestr(mcformat, "NeXus")) { - time_t t=time(NULL); - nxprintf(nxhandle, "end_time", ctime(&t)); - nxprintf(nxhandle, "duration", "%li", (long)t-mcstartdate); - NXclosegroup(nxhandle); /* NXentry */ - NXclose(&nxhandle); - } else { -#endif - fclose(siminfo_file); -#ifdef USE_NEXUS - } -#endif -#ifdef USE_MPI - } -#endif - siminfo_file = NULL; - } -} /* siminfo_close */ - -/******************************************************************************* -* mcdetector_out_0D: wrapper for 0D (single value). -* Output single detector/monitor data (p0, p1, p2). -* Title is t, component name is c. -*******************************************************************************/ -MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, - char *c, Coords posa, Rotation rota, int index) -{ - /* import and perform basic detector analysis (and handle MPI reduce) */ - MCDETECTOR detector = detector_import(mcformat, - c, (t ? t : MCCODE_STRING " data"), - 1, 1, 1, - "I", "", "", - "I", "", "", - 0, 0, 0, 0, 0, 0, c, - &p0, &p1, &p2, posa, rota, index); /* write Detector: line */ - -#ifdef USE_NEXUS - if (strcasestr(detector.format, "NeXus")) - return(mcdetector_out_0D_nexus(detector)); - else -#endif - return(mcdetector_out_0D_ascii(detector)); - -} /* mcdetector_out_0D */ - - - -/******************************************************************************* -* mcdetector_out_1D: wrapper for 1D. -* Output 1d detector data (p0, p1, p2) for n bins linearly -* distributed across the range x1..x2 (x1 is lower limit of first -* bin, x2 is upper limit of last bin). Title is t, axis labels are xl -* and yl. File name is f, component name is c. -* -* t: title -* xl: x-label -* yl: y-label -* xvar: measured variable length -* x1: x axus min -* x2: x axis max -* n: 1d data vector lenght -* p0: pntr to start of data block#0 -* p1: pntr to start of data block#1 -* p2: pntr to start of data block#2 -* f: filename -* -* Not included in the macro, and here forwarded to detector_import: -* c: ? -* posa: ? -*******************************************************************************/ -MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, - char *xvar, double x1, double x2, - long n, - double *p0, double *p1, double *p2, char *f, - char *c, Coords posa, Rotation rota, int index) -{ - /* import and perform basic detector analysis (and handle MPI_Reduce) */ - // detector_import calls mcdetector_statistics, which will return different - // MCDETECTOR versions for 1-D data based on the value of mcformat. - // - MCDETECTOR detector = detector_import(mcformat, - c, (t ? t : MCCODE_STRING " 1D data"), - n, 1, 1, - xl, yl, (n > 1 ? "Signal per bin" : " Signal"), - xvar, "(I,I_err)", "I", - x1, x2, 0, 0, 0, 0, f, - p0, p1, p2, posa, rota, index); /* write Detector: line */ - if (!detector.p1 || !detector.m) return(detector); - -#ifdef USE_NEXUS - if (strcasestr(detector.format, "NeXus")) - detector = mcdetector_out_1D_nexus(detector); - else -#endif - detector = mcdetector_out_1D_ascii(detector); - if (detector.p1 != p1 && detector.p1) { - // mcdetector_statistics allocated memory but it hasn't been freed. - free(detector.p1); - // plus undo the other damage done there: - detector.p0 = p0; // was set to NULL - detector.p1 = p1; // was set to this_p1 - detector.p2 = p2; // was set to NULL - detector.m = detector.n; // (e.g., labs(n)) - detector.n = 1; // not (n x n) - detector.istransposed = n < 0 ? 1 : 0; - } - return detector; - -} /* mcdetector_out_1D */ - -/******************************************************************************* -* mcdetector_out_2D: wrapper for 2D. -* Special case for list: master creates file first, then slaves append their -* blocks without header- -* -* t: title -* xl: x-label -* yl: y-label -* x1: x axus min -* x2: x axis max -* y1: y axis min -* y2: y axis max -* m: dim 1 (x) size -* n: dim 2 (y) size -* p0: pntr to start of data block#0 -* p1: pntr to start of data block#1 -* p2: pntr to start of data block#2 -* f: filename -* -* Not included in the macro, and here forwarded to detector_import: -* c: ? -* posa: ? -* rota: ? -*******************************************************************************/ -MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, - double x1, double x2, double y1, double y2, - long m, long n, - double *p0, double *p1, double *p2, char *f, - char *c, Coords posa, Rotation rota, int index) -{ - char xvar[CHAR_BUF_LENGTH]; - char yvar[CHAR_BUF_LENGTH]; - - /* create short axes labels */ - if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } - else strcpy(xvar, "x"); - if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } - else strcpy(yvar, "y"); - - MCDETECTOR detector; - - /* import and perform basic detector analysis (and handle MPI_Reduce) */ - if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ - detector = detector_import(mcformat, - c, (t ? t : MCCODE_STRING " 1D data"), - n, 1, 1, - yl, "", "Signal per bin", - yvar, "(I,Ierr)", "I", - y1, y2, x1, x2, 0, 0, f, - p0, p1, p2, posa, rota, index); /* write Detector: line */ - } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ - detector = detector_import(mcformat, - c, (t ? t : MCCODE_STRING " 1D data"), - m, 1, 1, - xl, "", "Signal per bin", - xvar, "(I,Ierr)", "I", - x1, x2, y1, y2, 0, 0, f, - p0, p1, p2, posa, rota, index); /* write Detector: line */ - }else { - detector = detector_import(mcformat, - c, (t ? t : MCCODE_STRING " 2D data"), - m, n, 1, - xl, yl, "Signal per bin", - xvar, yvar, "I", - x1, x2, y1, y2, 0, 0, f, - p0, p1, p2, posa, rota, index); /* write Detector: line */ - } - - if (!detector.p1 || !detector.m) return(detector); - -#ifdef USE_NEXUS - if (strcasestr(detector.format, "NeXus")) - return(mcdetector_out_2D_nexus(detector)); - else -#endif - return(mcdetector_out_2D_ascii(detector)); - -} /* mcdetector_out_2D */ - -/******************************************************************************* -* mcdetector_out_2D_list: List mode 2D including forwarding "options" from -* Monitor_nD -* -* Special case for list: master creates file first, then slaves append their -* blocks without header- -* -* t: title -* xl: x-label -* yl: y-label -* x1: x axus min -* x2: x axis max -* y1: y axis min -* y2: y axis max -* m: dim 1 (x) size -* n: dim 2 (y) size -* p0: pntr to start of data block#0 -* p1: pntr to start of data block#1 -* p2: pntr to start of data block#2 -* f: filename -* -* Not included in the macro, and here forwarded to detector_import: -* c: ? -* posa: ? -* rota: ? -*******************************************************************************/ -MCDETECTOR mcdetector_out_2D_list(char *t, char *xl, char *yl, - double x1, double x2, double y1, double y2, - long m, long n, - double *p0, double *p1, double *p2, char *f, - char *c, Coords posa, Rotation rota, char* options, int index) -{ - char xvar[CHAR_BUF_LENGTH]; - char yvar[CHAR_BUF_LENGTH]; - - /* create short axes labels */ - if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } - else strcpy(xvar, "x"); - if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } - else strcpy(yvar, "y"); - - MCDETECTOR detector; - - /* import and perform basic detector analysis (and handle MPI_Reduce) */ - if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ - detector = detector_import(mcformat, - c, (t ? t : MCCODE_STRING " 1D data"), - n, 1, 1, - yl, "", "Signal per bin", - yvar, "(I,Ierr)", "I", - y1, y2, x1, x2, 0, 0, f, - p0, p1, p2, posa, rota, index); /* write Detector: line */ - } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ - detector = detector_import(mcformat, - c, (t ? t : MCCODE_STRING " 1D data"), - m, 1, 1, - xl, "", "Signal per bin", - xvar, "(I,Ierr)", "I", - x1, x2, y1, y2, 0, 0, f, - p0, p1, p2, posa, rota, index); /* write Detector: line */ - }else { - detector = detector_import(mcformat, - c, (t ? t : MCCODE_STRING " 2D data"), - m, n, 1, - xl, yl, "Signal per bin", - xvar, yvar, "I", - x1, x2, y1, y2, 0, 0, f, - p0, p1, p2, posa, rota, index); /* write Detector: line */ - } - - MPI_MASTER( - if (strlen(options)) { - strcpy(detector.options,options); - } else { - strcpy(detector.options,"None"); - } - ); - - if (!detector.p1 || !detector.m) return(detector); - -#ifdef USE_NEXUS - if (strcasestr(detector.format, "NeXus")) - return(mcdetector_out_2D_nexus(detector)); - else -#endif - return(mcdetector_out_2D_ascii(detector)); - -} /* mcdetector_out_2D_list */ - -/******************************************************************************* -* mcdetector_out_list: wrapper for list output (calls out_2D with mcformat+"list"). -* m=number of events, n=size of each event -*******************************************************************************/ -MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, - long m, long n, - double *p1, char *f, - char *c, Coords posa, Rotation rota, char* options, int index) -{ - char format_new[CHAR_BUF_LENGTH]; - char *format_org; - MCDETECTOR detector; - - format_org = mcformat; - strcpy(format_new, mcformat); - strcat(format_new, " list"); - mcformat = format_new; - detector = mcdetector_out_2D_list(t, xl, yl, - 1,labs(m),1,labs(n), - m,n, - NULL, p1, NULL, f, - c, posa,rota,options, index); - - mcformat = format_org; - return(detector); -} - -/******************************************************************************* - * mcuse_dir: set data/sim storage directory and create it, - * or exit with error if exists - ******************************************************************************/ -static void -mcuse_dir(char *dir) -{ - if (!dir || !strlen(dir)) return; -#ifdef MC_PORTABLE - fprintf(stderr, "Error: " - "Directory output cannot be used with portable simulation (mcuse_dir)\n"); - exit(1); -#else /* !MC_PORTABLE */ - /* handle file://directory URL type */ - if (strncmp(dir, "file://", strlen("file://"))) - dirname = dir; - else - dirname = dir+strlen("file://"); - - -#ifdef USE_MPI - if(mpi_node_rank == mpi_node_root) { -#endif - if(mkdir(dirname, 0777)) { -#ifndef DANSE - fprintf(stderr, "Error: unable to create directory '%s' (mcuse_dir)\n", dir); - fprintf(stderr, "(Maybe the directory already exists?)\n"); -#endif -#ifdef USE_MPI - MPI_Abort(MPI_COMM_WORLD, -1); -#endif - exit(-1); - } -#ifdef USE_MPI - } -#endif - - /* remove trailing PATHSEP (if any) */ - while (strlen(dirname) && dirname[strlen(dirname) - 1] == MC_PATHSEP_C) - dirname[strlen(dirname) - 1]='\0'; -#endif /* !MC_PORTABLE */ -} /* mcuse_dir */ - -/******************************************************************************* -* mcinfo: display instrument simulation info to stdout and exit -*******************************************************************************/ -static void -mcinfo(void) -{ - fprintf(stdout, "begin instrument: %s\n", instrument_name); - mcinfo_out(" ", stdout); - fprintf(stdout, "end instrument\n"); - fprintf(stdout, "begin simulation: %s\n", dirname ? dirname : "."); - mcruninfo_out(" ", stdout); - fprintf(stdout, "end simulation\n"); - exit(0); /* includes MPI_Finalize in MPI mode */ -} /* mcinfo */ - -/******************************************************************************* -* mcparameterinfo: display instrument parameter info to stdout and exit -*******************************************************************************/ -static void -mcparameterinfo(void) -{ - mcparameterinfo_out(" ", stdout); - exit(0); /* includes MPI_Finalize in MPI mode */ -} /* mcparameterinfo */ - - - -#endif /* ndef MCCODE_R_IO_C */ - -/* end of the I/O section =================================================== */ - - - - - - - -/******************************************************************************* -* mcset_ncount: set total number of rays to generate -*******************************************************************************/ -void mcset_ncount(unsigned long long int count) -{ - mcncount = count; -} - -/* mcget_ncount: get total number of rays to generate */ -unsigned long long int mcget_ncount(void) -{ - return mcncount; -} - -/* mcget_run_num: get curent number of rays */ -/* Within the TRACE scope we are now using _particle->uid directly */ -unsigned long long int mcget_run_num() // shuld be (_class_particle* _particle) somehow -{ - /* This function only remains for the few cases outside TRACE where we need to know - the number of simulated particles */ - return mcrun_num; -} - -/* mcsetn_arg: get ncount from a string argument */ -static void -mcsetn_arg(char *arg) -{ - mcset_ncount((long long int) strtod(arg, NULL)); -} - -/* mcsetseed: set the random generator seed from a string argument */ -static void -mcsetseed(char *arg) -{ - mcseed = atol(arg); - if(!mcseed) { - // srandom(mcseed); - //} else { - fprintf(stderr, "Error: seed must not be zero (mcsetseed)\n"); - exit(1); - } -} - -/* Following part is only embedded when not redundent with mccode-r.h ========= */ - -#ifndef MCCODE_H - -/* SECTION: MCDISPLAY support. =============================================== */ - -/******************************************************************************* -* Just output MCDISPLAY keywords to be caught by an external plotter client. -*******************************************************************************/ - -void mcdis_magnify(char *what){ - // Do nothing here, better use interactive zoom from the tools -} - -void mcdis_line(double x1, double y1, double z1, - double x2, double y2, double z2){ - printf("MCDISPLAY: multiline(2,%g,%g,%g,%g,%g,%g)\n", - x1,y1,z1,x2,y2,z2); -} - -void mcdis_dashed_line(double x1, double y1, double z1, - double x2, double y2, double z2, int n){ - int i; - const double dx = (x2-x1)/(2*n+1); - const double dy = (y2-y1)/(2*n+1); - const double dz = (z2-z1)/(2*n+1); - - for(i = 0; i < n+1; i++) - mcdis_line(x1 + 2*i*dx, y1 + 2*i*dy, z1 + 2*i*dz, - x1 + (2*i+1)*dx, y1 + (2*i+1)*dy, z1 + (2*i+1)*dz); -} - -void mcdis_multiline(int count, ...){ - va_list ap; - double x,y,z; - - printf("MCDISPLAY: multiline(%d", count); - va_start(ap, count); - while(count--) - { - x = va_arg(ap, double); - y = va_arg(ap, double); - z = va_arg(ap, double); - printf(",%g,%g,%g", x, y, z); - } - va_end(ap); - printf(")\n"); -} - -void mcdis_rectangle(char* plane, double x, double y, double z, - double width, double height){ - /* draws a rectangle in the plane */ - /* x is ALWAYS width and y is ALWAYS height */ - if (strcmp("xy", plane)==0) { - mcdis_multiline(5, - x - width/2, y - height/2, z, - x + width/2, y - height/2, z, - x + width/2, y + height/2, z, - x - width/2, y + height/2, z, - x - width/2, y - height/2, z); - } else if (strcmp("xz", plane)==0) { - mcdis_multiline(5, - x - width/2, y, z - height/2, - x + width/2, y, z - height/2, - x + width/2, y, z + height/2, - x - width/2, y, z + height/2, - x - width/2, y, z - height/2); - } else if (strcmp("yz", plane)==0) { - mcdis_multiline(5, - x, y - height/2, z - width/2, - x, y - height/2, z + width/2, - x, y + height/2, z + width/2, - x, y + height/2, z - width/2, - x, y - height/2, z - width/2); - } else { - - fprintf(stderr, "Error: Definition of plane %s unknown\n", plane); - exit(1); - } -} - -void mcdis_circle(char *plane, double x, double y, double z, double r){ - printf("MCDISPLAY: circle('%s',%g,%g,%g,%g)\n", plane, x, y, z, r); -} - -void mcdis_new_circle(double x, double y, double z, double r, double nx, double ny, double nz){ - printf("MCDISPLAY: new_circle(%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, r, nx, ny, nz); -} - - -/* Draws a circle with center (x,y,z), radius (r), and in the plane - * with normal (nx,ny,nz)*/ -void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz){ - int i; - if(nx==0 && ny && nz==0){ - for (i=0;i<24; i++){ - mcdis_line(x+r*sin(i*2*PI/24),y,z+r*cos(i*2*PI/24), - x+r*sin((i+1)*2*PI/24),y,z+r*cos((i+1)*2*PI/24)); - } - }else{ - double mx,my,mz; - /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ - vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); - NORM(mx,my,mz); - /*draw circle*/ - for (i=0;i<24; i++){ - double ux,uy,uz; - double wx,wy,wz; - rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); - rotate(wx,wy,wz, mx,my,mz, (i+1)*2*PI/24, nx,ny,nz); - mcdis_line(x+ux*r,y+uy*r,z+uz*r, - x+wx*r,y+wy*r,z+wz*r); - } - } -} - - -/* OLD IMPLEMENTATION - draws a box with center at (x, y, z) and - width (deltax), height (deltay), length (deltaz) */ -void mcdis_legacy_box(double x, double y, double z, - double width, double height, double length){ - - mcdis_rectangle("xy", x, y, z-length/2, width, height); - mcdis_rectangle("xy", x, y, z+length/2, width, height); - mcdis_line(x-width/2, y-height/2, z-length/2, - x-width/2, y-height/2, z+length/2); - mcdis_line(x-width/2, y+height/2, z-length/2, - x-width/2, y+height/2, z+length/2); - mcdis_line(x+width/2, y-height/2, z-length/2, - x+width/2, y-height/2, z+length/2); - mcdis_line(x+width/2, y+height/2, z-length/2, - x+width/2, y+height/2, z+length/2); -} - -/* NEW 3D IMPLEMENTATION OF BOX SUPPORTS HOLLOW ALSO - draws a box with center at (x, y, z) and - width (deltax), height (deltay), length (deltaz) */ -void mcdis_box(double x, double y, double z, - double width, double height, double length, double thickness, double nx, double ny, double nz){ - if (mcdotrace==2) { - printf("MCDISPLAY: box(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, width, height, length, thickness, nx, ny, nz); - } else { - mcdis_legacy_box(x, y, z, width, height, length); - if (thickness) - mcdis_legacy_box(x, y, z, width-thickness, height-thickness, length); - } -} - - -/* OLD IMPLEMENTATION -Draws a cylinder with center at (x,y,z) with extent (r,height). - * The cylinder axis is along the vector nx,ny,nz. */ -void mcdis_legacy_cylinder( double x, double y, double z, - double r, double height, int N, double nx, double ny, double nz){ - int i; - /*no lines make little sense - so trigger the default*/ - if(N<=0) N=5; - - NORM(nx,ny,nz); - double h_2=height/2.0; - mcdis_Circle(x+nx*h_2,y+ny*h_2,z+nz*h_2,r,nx,ny,nz); - mcdis_Circle(x-nx*h_2,y-ny*h_2,z-nz*h_2,r,nx,ny,nz); - - double mx,my,mz; - /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ - if(nx==0 && ny && nz==0){ - mx=my=0;mz=1; - }else{ - vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); - NORM(mx,my,mz); - } - /*draw circle*/ - for (i=0; i<24; i++){ - double ux,uy,uz; - rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); - mcdis_line(x+nx*h_2+ux*r, y+ny*h_2+uy*r, z+nz*h_2+uz*r, - x-nx*h_2+ux*r, y-ny*h_2+uy*r, z-nz*h_2+uz*r); - } -} - -/* NEW 3D IMPLEMENTATION ALSO SUPPORTING HOLLOW -Draws a cylinder with center at (x,y,z) with extent (r,height). - * The cylinder axis is along the vector nx,ny,nz.*/ -void mcdis_cylinder( double x, double y, double z, - double r, double height, double thickness, double nx, double ny, double nz){ - if (mcdotrace==2) { - printf("MCDISPLAY: cylinder(%g, %g, %g, %g, %g, %g, %g, %g, %g)\n", - x, y, z, r, height, thickness, nx, ny, nz); - } else { - mcdis_legacy_cylinder(x, y, z, - r, height, 12, nx, ny, nz); - } -} - -/* Draws a cone with center at (x,y,z) with extent (r,height). - * The cone axis is along the vector nx,ny,nz.*/ -void mcdis_cone( double x, double y, double z, - double r, double height, double nx, double ny, double nz){ - if (mcdotrace==2) { - printf("MCDISPLAY: cone(%g, %g, %g, %g, %g, %g, %g, %g)\n", - x, y, z, r, height, nx, ny, nz); - } else { - mcdis_Circle(x, y, z, r, nx, ny, nz); - mcdis_Circle(x+0.25*height*nx, y+0.25*height*ny, z+0.25*height*nz, 0.75*r, nx, ny, nz); - mcdis_Circle(x+0.5*height*nx, y+0.5*height*ny, z+0.5*height*nz, 0.5*r, nx, ny, nz); - mcdis_Circle(x+0.75*height*nx, y+0.75*height*ny, z+0.75*height*nz, 0.25*r, nx, ny, nz); - mcdis_line(x, y, z, x+height*nx, y+height*ny, z+height*nz); - } -} - -/* Draws a disc with center at (x,y,z) with extent (r). - * The disc axis is along the vector nx,ny,nz.*/ -void mcdis_disc( double x, double y, double z, - double r, double nx, double ny, double nz){ - printf("MCDISPLAY: disc(%g, %g, %g, %g, %g, %g, %g)\n", - x, y, z, r, nx, ny, nz); -} - -/* Draws a annulus with center at (x,y,z) with extent (outer_radius) and remove inner_radius. - * The annulus axis is along the vector nx,ny,nz.*/ -void mcdis_annulus( double x, double y, double z, - double outer_radius, double inner_radius, double nx, double ny, double nz){ - printf("MCDISPLAY: annulus(%g, %g, %g, %g, %g, %g, %g, %g)\n", - x, y, z, outer_radius, inner_radius, nx, ny, nz); -} - -/* draws a sphere with center at (x,y,z) with extent (r)*/ -void mcdis_sphere(double x, double y, double z, double r){ - if (mcdotrace==2) { - printf("MCDISPLAY: sphere(%g,%g,%g,%g)\n", x, y, z, r); - } else { - double nx,ny,nz; - int i; - int N=12; - - nx=0;ny=0;nz=1; - mcdis_Circle(x,y,z,r,nx,ny,nz); - for (i=1;i 3) { - /* Split in triangles - as many as polygon rank */ - faceSize=count; - vtxSize=count+1; - } else { - faceSize=1; - vtxSize=count; - } - - for (int i = 0; i < faceSize;) { - int num_indices = 3; - estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; - i += num_indices + 1; - } - - char *json_string = malloc(estimated_size); - if (json_string == NULL) { - fprintf(stderr, "Memory allocation failed.\n"); - return; - } - - char *ptr = json_string; - ptr += sprintf(ptr, "{ \"vertices\": ["); - - if (count==3) { // Single, basic triangle - ptr += sprintf(ptr, "[%g, %g, %g], [%g, %g, %g], [%g, %g, %g]", x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2]); - } else { - for (int i = 0; i < vtxSize-1; i++) { - ptr += sprintf(ptr, "[%g, %g, %g]", x[i], y[i], z[i]); - if (i < vtxSize - 2) { - ptr += sprintf(ptr, ", "); - } else { - ptr += sprintf(ptr, ", [%g, %g, %g]", x0, y0, z0); - } - } - } - ptr += sprintf(ptr, "], \"faces\": ["); - if (count==3) { // Single, basic triangle, 1 face... - ptr += sprintf(ptr, "{ \"face\": ["); - ptr += sprintf(ptr, "0, 1, 2"); - ptr += sprintf(ptr, "]}"); - } else { - for (int i = 0; i < faceSize; i++) { - int num = 3; - ptr += sprintf(ptr, "{ \"face\": ["); - if (i < faceSize - 1) { - ptr += sprintf(ptr, "%d, %d, %d",i,i+1,count); - } else { - ptr += sprintf(ptr, "%d, %d, %d",i,count,0); - } - ptr += sprintf(ptr, "]}"); - if (i < faceSize-1) { - ptr += sprintf(ptr, ", "); - } - } - } - ptr += sprintf(ptr, "]}"); - mcdis_polyhedron(json_string); - - free(json_string); - } - free(x);free(y);free(z); -} -/* END NEW POLYGON IMPLEMENTATION*/ - -/* -void mcdis_polygon(double x1, double y1, double z1, - double x2, double y2, double z2){ - printf("MCDISPLAY: polygon(2,%g,%g,%g,%g,%g,%g)\n", - x1,y1,z1,x2,y2,z2); -} -*/ - -/* SECTION: coordinates handling ============================================ */ - -/******************************************************************************* -* Since we use a lot of geometric calculations using Cartesian coordinates, -* we collect some useful routines here. However, it is also permissible to -* work directly on the underlying struct coords whenever that is most -* convenient (that is, the type Coords is not abstract). -* -* Coordinates are also used to store rotation angles around x/y/z axis. -* -* Since coordinates are used much like a basic type (such as double), the -* structure itself is passed and returned, rather than a pointer. -* -* At compile-time, the values of the coordinates may be unknown (for example -* a motor position). Hence coordinates are general expressions and not simple -* numbers. For this we used the type Coords_exp which has three CExp -* fields. For runtime (or calculations possible at compile time), we use -* Coords which contains three double fields. -*******************************************************************************/ - -/* coords_set: Assign coordinates. */ -Coords coords_set(MCNUM x, MCNUM y, MCNUM z) -{ - Coords a; - - a.x = x; - a.y = y; - a.z = z; - return a; -} - -/* coords_get: get coordinates. Required when 'x','y','z' are #defined as ray pars */ -Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z) -{ - *x = a.x; - *y = a.y; - *z = a.z; - return a; -} - -/* coords_add: Add two coordinates. */ -Coords coords_add(Coords a, Coords b) -{ - Coords c; - - c.x = a.x + b.x; - c.y = a.y + b.y; - c.z = a.z + b.z; - if (fabs(c.z) < 1e-14) c.z=0.0; - return c; -} - -/* coords_sub: Subtract two coordinates. */ -Coords coords_sub(Coords a, Coords b) -{ - Coords c; - - c.x = a.x - b.x; - c.y = a.y - b.y; - c.z = a.z - b.z; - if (fabs(c.z) < 1e-14) c.z=0.0; - return c; -} - -/* coords_neg: Negate coordinates. */ -Coords coords_neg(Coords a) -{ - Coords b; - - b.x = -a.x; - b.y = -a.y; - b.z = -a.z; - return b; -} - -/* coords_scale: Scale a vector. */ -Coords coords_scale(Coords b, double scale) { - Coords a; - - a.x = b.x*scale; - a.y = b.y*scale; - a.z = b.z*scale; - return a; -} - -/* coords_sp: Scalar product: a . b */ -double coords_sp(Coords a, Coords b) { - double value; - - value = a.x*b.x + a.y*b.y + a.z*b.z; - return value; -} - -/* coords_xp: Cross product: a = b x c. */ -Coords coords_xp(Coords b, Coords c) { - Coords a; - - a.x = b.y*c.z - c.y*b.z; - a.y = b.z*c.x - c.z*b.x; - a.z = b.x*c.y - c.x*b.y; - return a; -} - -/* coords_len: Gives length of coords set. */ -double coords_len(Coords a) { - return sqrt(a.x*a.x + a.y*a.y + a.z*a.z); -} - -/* coords_mirror: Mirror a in plane (through the origin) defined by normal n*/ -Coords coords_mirror(Coords a, Coords n) { - double t = scalar_prod(n.x, n.y, n.z, n.x, n.y, n.z); - Coords b; - if (t!=1) { - t = sqrt(t); - n.x /= t; - n.y /= t; - n.z /= t; - } - t=scalar_prod(a.x, a.y, a.z, n.x, n.y, n.z); - b.x = a.x-2*t*n.x; - b.y = a.y-2*t*n.y; - b.z = a.z-2*t*n.z; - return b; -} - -/* coords_print: Print out vector values. */ -void coords_print(Coords a) { - #ifndef OPENACC - fprintf(stdout, "(%f, %f, %f)\n", a.x, a.y, a.z); - #endif - return; -} - -mcstatic void coords_norm(Coords* c) { - double temp = coords_sp(*c,*c); - - // Skip if we will end dividing by zero - if (temp == 0) return; - - temp = sqrt(temp); - - c->x /= temp; - c->y /= temp; - c->z /= temp; -} - -/* coords_test_zero: check if zero vector*/ -int coords_test_zero(Coords a){ - return ( a.x==0 && a.y==0 && a.z==0 ); -} - -/******************************************************************************* -* The Rotation type implements a rotation transformation of a coordinate -* system in the form of a double[3][3] matrix. -* -* Contrary to the Coords type in coords.c, rotations are passed by -* reference. Functions that yield new rotations do so by writing to an -* explicit result parameter; rotations are not returned from functions. The -* reason for this is that arrays cannot by returned from functions (though -* structures can; thus an alternative would have been to wrap the -* double[3][3] array up in a struct). Such are the ways of C programming. -* -* A rotation represents the tranformation of the coordinates of a vector when -* changing between coordinate systems that are rotated with respect to each -* other. For example, suppose that coordinate system Q is rotated 45 degrees -* around the Z axis with respect to coordinate system P. Let T be the -* rotation transformation representing a 45 degree rotation around Z. Then to -* get the coordinates of a vector r in system Q, apply T to the coordinates -* of r in P. If r=(1,0,0) in P, it will be (sqrt(1/2),-sqrt(1/2),0) in -* Q. Thus we should be careful when interpreting the sign of rotation angles: -* they represent the rotation of the coordinate systems, not of the -* coordinates (which has opposite sign). -*******************************************************************************/ - -/******************************************************************************* -* rot_set_rotation: Get transformation for rotation first phx around x axis, -* then phy around y, then phz around z. -*******************************************************************************/ -void rot_set_rotation(Rotation t, double phx, double phy, double phz) -{ - if ((phx == 0) && (phy == 0) && (phz == 0)) { - t[0][0] = 1.0; - t[0][1] = 0.0; - t[0][2] = 0.0; - t[1][0] = 0.0; - t[1][1] = 1.0; - t[1][2] = 0.0; - t[2][0] = 0.0; - t[2][1] = 0.0; - t[2][2] = 1.0; - } else { - double cx = cos(phx); - double sx = sin(phx); - double cy = cos(phy); - double sy = sin(phy); - double cz = cos(phz); - double sz = sin(phz); - - t[0][0] = cy*cz; - t[0][1] = sx*sy*cz + cx*sz; - t[0][2] = sx*sz - cx*sy*cz; - t[1][0] = -cy*sz; - t[1][1] = cx*cz - sx*sy*sz; - t[1][2] = sx*cz + cx*sy*sz; - t[2][0] = sy; - t[2][1] = -sx*cy; - t[2][2] = cx*cy; - } -} - -/******************************************************************************* -* rot_test_identity: Test if rotation is identity -*******************************************************************************/ -int rot_test_identity(Rotation t) -{ - return (t[0][0] + t[1][1] + t[2][2] == 3); -} - -/******************************************************************************* -* rot_mul: Matrix multiplication of transformations (this corresponds to -* combining transformations). After rot_mul(T1, T2, T3), doing T3 is -* equal to doing first T2, then T1. -* Note that T3 must not alias (use the same array as) T1 or T2. -*******************************************************************************/ -void rot_mul(Rotation t1, Rotation t2, Rotation t3) -{ - if (rot_test_identity(t1)) { - rot_copy(t3, t2); - } else if (rot_test_identity(t2)) { - rot_copy(t3, t1); - } else { - int i,j; - for(i = 0; i < 3; i++) - for(j = 0; j < 3; j++) - t3[i][j] = t1[i][0]*t2[0][j] + t1[i][1]*t2[1][j] + t1[i][2]*t2[2][j]; - } -} - -/******************************************************************************* -* rot_copy: Copy a rotation transformation (arrays cannot be assigned in C). -*******************************************************************************/ -void rot_copy(Rotation dest, Rotation src) -{ - int i,j; - for(i = 0; i < 3; i++) - for(j = 0; j < 3; j++) - dest[i][j] = src[i][j]; -} - -/******************************************************************************* -* rot_transpose: Matrix transposition, which is inversion for Rotation matrices -*******************************************************************************/ -void rot_transpose(Rotation src, Rotation dst) -{ - dst[0][0] = src[0][0]; - dst[0][1] = src[1][0]; - dst[0][2] = src[2][0]; - dst[1][0] = src[0][1]; - dst[1][1] = src[1][1]; - dst[1][2] = src[2][1]; - dst[2][0] = src[0][2]; - dst[2][1] = src[1][2]; - dst[2][2] = src[2][2]; -} - -/******************************************************************************* -* rot_apply: returns t*a -*******************************************************************************/ -Coords rot_apply(Rotation t, Coords a) -{ - Coords b; - if (rot_test_identity(t)) { - return a; - } else { - b.x = t[0][0]*a.x + t[0][1]*a.y + t[0][2]*a.z; - b.y = t[1][0]*a.x + t[1][1]*a.y + t[1][2]*a.z; - b.z = t[2][0]*a.x + t[2][1]*a.y + t[2][2]*a.z; - return b; - } -} - -/** - * Pretty-printing of rotation matrices. - */ -void rot_print(Rotation rot) { - printf("[ %4.2f %4.2f %4.2f ]\n", - rot[0][0], rot[0][1], rot[0][2]); - printf("[ %4.2f %4.2f %4.2f ]\n", - rot[1][0], rot[1][1], rot[1][2]); - printf("[ %4.2f %4.2f %4.2f ]\n\n", - rot[2][0], rot[2][1], rot[2][2]); -} - -/** - * Vector product: used by vec_prod (mccode-r.h). Use coords_xp for Coords. - */ -void vec_prod_func(double *x, double *y, double *z, - double x1, double y1, double z1, - double x2, double y2, double z2) { - *x = (y1)*(z2) - (y2)*(z1); - *y = (z1)*(x2) - (z2)*(x1); - *z = (x1)*(y2) - (x2)*(y1); -} - -/** - * Scalar product: use coords_sp for Coords. - */ -double scalar_prod( - double x1, double y1, double z1, - double x2, double y2, double z2) { - return ((x1 * x2) + (y1 * y2) + (z1 * z2)); -} - -mcstatic void norm_func(double *x, double *y, double *z) { - double temp = (*x * *x) + (*y * *y) + (*z * *z); - if (temp != 0) { - temp = sqrt(temp); - *x /= temp; - *y /= temp; - *z /= temp; - } -} - - -/* SECTION: GPU algorithms ================================================== */ - - -/* -* Divide-and-conquer strategy for parallelizing this task: Sort absorbed -* particles last. -* -* particles: the particle array, required to checking _absorbed -* pbuffer: same-size particle buffer array required for parallel sort -* len: sorting area-of-interest size (e.g. from previous calls) -* buffer_len: total array size -* flag_split: if set, multiply live particles into absorbed slots, up to buffer_len -* multiplier: output arg, becomes the SPLIT multiplier if flag_split is set -*/ -#ifdef FUNNEL -long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier) { - #define SAL_THREADS 1024 // num parallel sections - if (len_absorbed)); - - // return (no SPLIT) - if (flag_split != 1) - return accumlen; - - // SPLIT - repeat the non-absorbed block N-1 times, where len % accumlen = N + R - int mult = buffer_len / accumlen; // TODO: possibly use a new arg, bufferlen, rather than len - - // not enough space for full-block split, return - if (mult <= 1) - return accumlen; - - // copy non-absorbed block - #pragma acc parallel loop present(particles[0:buffer_len]) - for (long tidx = 0; tidx < accumlen; tidx++) { // tidx: thread index - randstate_t randstate[7]; - _class_particle sourcebuffer; - _class_particle targetbuffer; - // assign reduced weight to all particles - particles[tidx].p=particles[tidx].p/mult; - #pragma acc loop seq - for (long bidx = 1; bidx < mult; bidx++) { // bidx: block index - // preserve absorbed particle (for randstate) - sourcebuffer = particles[bidx*accumlen + tidx]; - // buffer full particle struct - targetbuffer = particles[tidx]; - // reassign previous randstate - targetbuffer.randstate[0] = sourcebuffer.randstate[0]; - targetbuffer.randstate[1] = sourcebuffer.randstate[1]; - targetbuffer.randstate[2] = sourcebuffer.randstate[2]; - targetbuffer.randstate[3] = sourcebuffer.randstate[3]; - targetbuffer.randstate[4] = sourcebuffer.randstate[4]; - targetbuffer.randstate[5] = sourcebuffer.randstate[5]; - targetbuffer.randstate[6] = sourcebuffer.randstate[6]; - // apply - particles[bidx*accumlen + tidx] = targetbuffer; - } - } - - // set out split multiplier value - *multiplier = mult; - - // return expanded array size - return accumlen * mult; -} - -#endif - -/* -* Fallback serial version of the one above. -*/ -long sort_absorb_last_serial(_class_particle* particles, long len) { - long i = 0; - long j = len - 1; - _class_particle pbuffer; - - // bubble - while (i < j) { - while (!particles[i]._absorbed && ix; - b.y = particle->y; - b.z = particle->z; - c = rot_apply(t, b); - b = coords_add(c, a); - particle->x = b.x; - particle->y = b.y; - particle->z = b.z; - -#if MCCODE_PARTICLE_CODE == 2112 - if (particle->vz != 0.0 || particle->vx != 0.0 || particle->vy != 0.0) - mccoordschange_polarisation(t, &(particle->vx), &(particle->vy), &(particle->vz)); - - if (particle->sz != 0.0 || particle->sx != 0.0 || particle->sy != 0.0) - mccoordschange_polarisation(t, &(particle->sx), &(particle->sy), &(particle->sz)); -#elif MCCODE_PARTICLE_CODE == 22 - if (particle->kz != 0.0 || particle->kx != 0.0 || particle->ky != 0.0) - mccoordschange_polarisation(t, &(particle->kx), &(particle->ky), &(particle->kz)); - - if (particle->Ez != 0.0 || particle->Ex != 0.0 || particle->Ey != 0.0) - mccoordschange_polarisation(t, &(particle->Ex), &(particle->Ey), &(particle->Ez)); -#endif -} - -/******************************************************************************* -* mccoordschange_polarisation: applies rotation to vector (sx sy sz) -*******************************************************************************/ -void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz) -{ - Coords b, c; - - b.x = *sx; - b.y = *sy; - b.z = *sz; - c = rot_apply(t, b); - *sx = c.x; - *sy = c.y; - *sz = c.z; -} - -/* SECTION: vector math ==================================================== */ - -/* normal_vec_func: Compute normal vector to (x,y,z). */ -void normal_vec(double *nx, double *ny, double *nz, - double x, double y, double z) -{ - double ax = fabs(x); - double ay = fabs(y); - double az = fabs(z); - double l; - if(x == 0 && y == 0 && z == 0) - { - *nx = 0; - *ny = 0; - *nz = 0; - return; - } - if(ax < ay) - { - if(ax < az) - { /* Use X axis */ - l = sqrt(z*z + y*y); - *nx = 0; - *ny = z/l; - *nz = -y/l; - return; - } - } - else - { - if(ay < az) - { /* Use Y axis */ - l = sqrt(z*z + x*x); - *nx = z/l; - *ny = 0; - *nz = -x/l; - return; - } - } - /* Use Z axis */ - l = sqrt(y*y + x*x); - *nx = y/l; - *ny = -x/l; - *nz = 0; -} /* normal_vec */ - -/******************************************************************************* - * solve_2nd_order: second order equation solve: A*t^2 + B*t + C = 0 - * solve_2nd_order(&t1, NULL, A,B,C) - * returns 0 if no solution was found, or set 't1' to the smallest positive - * solution. - * solve_2nd_order(&t1, &t2, A,B,C) - * same as with &t2=NULL, but also returns the second solution. - * EXAMPLE usage for intersection of a trajectory with a plane in gravitation - * field (gx,gy,gz): - * The neutron starts at point r=(x,y,z) with velocityv=(vx vy vz). The plane - * has a normal vector n=(nx,ny,nz) and contains the point W=(wx,wy,wz). - * The problem consists in solving the 2nd order equation: - * 1/2.n.g.t^2 + n.v.t + n.(r-W) = 0 - * so that A = 0.5 n.g; B = n.v; C = n.(r-W); - * Without acceleration, t=-n.(r-W)/n.v - ******************************************************************************/ -int solve_2nd_order_old(double *t1, double *t2, - double A, double B, double C) -{ - int ret=0; - - if (!t1) return 0; - *t1 = 0; - if (t2) *t2=0; - - if (fabs(A) < 1E-10) /* approximate to linear equation: A ~ 0 */ - { - if (B) { *t1 = -C/B; ret=1; if (t2) *t2=*t1; } - /* else no intersection: A=B=0 ret=0 */ - } - else - { - double D; - D = B*B - 4*A*C; - if (D >= 0) /* Delta > 0: two solutions */ - { - double sD, dt1, dt2; - sD = sqrt(D); - dt1 = (-B + sD)/2/A; - dt2 = (-B - sD)/2/A; - /* we identify very small values with zero */ - if (fabs(dt1) < 1e-10) dt1=0.0; - if (fabs(dt2) < 1e-10) dt2=0.0; - - /* now we choose the smallest positive solution */ - if (dt1<=0.0 && dt2>0.0) ret=2; /* dt2 positive */ - else if (dt2<=0.0 && dt1>0.0) ret=1; /* dt1 positive */ - else if (dt1> 0.0 && dt2>0.0) - { if (dt1 < dt2) ret=1; else ret=2; } /* all positive: min(dt1,dt2) */ - /* else two solutions are negative. ret=-1 */ - if (ret==1) { *t1 = dt1; if (t2) *t2=dt2; } - else { *t1 = dt2; if (t2) *t2=dt1; } - ret=2; /* found 2 solutions and t1 is the positive one */ - } /* else Delta <0: no intersection. ret=0 */ - } - return(ret); -} /* solve_2nd_order */ - -int solve_2nd_order(double *t0, double *t1, double A, double B, double C){ - int retval=0; - double sign=copysign(1.0,B); - double dt0,dt1; - - dt0=0; - dt1=0; - if(t1){ *t1=0;} - - /*protect against rounding errors by locally equating DBL_EPSILON with 0*/ - if (fabs(A)=0){ - dt0=(-B - sign*sqrt(B*B-4*A*C))/(2*A); - dt1=C/(A*dt0); - retval=2; - }else{ - /*no real roots*/ - retval=0; - } - } - /*sort the solutions*/ - if (retval==1){ - /*put both solutions in t0 and t1*/ - *t0=dt0; - if(t1) *t1=dt1; - }else{ - /*we have two solutions*/ - /*swap if both are positive and t1 smaller than t0 or t1 the only positive*/ - int swap=0; - if(dt1>0 && ( dt1) - * - * If height or width is zero, choose random direction in full 4PI, no target. - * - * Traditionally, this routine had the name randvec_target_rect - this is now a - * a define (see mcstas-r.h) pointing here. If you use the old rouine, you are NOT - * taking the local emmission coordinate into account. -*******************************************************************************/ -void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, - double xi, double yi, double zi, - double width, double height, Rotation A, - double lx, double ly, double lz, int order, - _class_particle* _particle) -{ - double dx, dy, dist, dist_p, nx, ny, nz, mx, my, mz, n_norm, m_norm; - double cos_theta; - Coords tmp; - Rotation Ainverse; - - rot_transpose(A, Ainverse); - - if(height == 0.0 || width == 0.0) - { - randvec_target_circle(xo, yo, zo, solid_angle, - xi, yi, zi, 0); - return; - } - else - { - /* Now choose point uniformly on rectangle within width x height */ - dx = width*randpm1()/2.0; - dy = height*randpm1()/2.0; - - /* Determine distance to target plane*/ - dist = sqrt(xi*xi + yi*yi + zi*zi); - /* Go to global coordinate system */ - - tmp = coords_set(xi, yi, zi); - tmp = rot_apply(Ainverse, tmp); - coords_get(tmp, &xi, &yi, &zi); - - /* Determine vector normal to trajectory axis (z) and gravity [0 1 0] */ - vec_prod(nx, ny, nz, xi, yi, zi, 0, 1, 0); - - /* This now defines the x-axis, normalize: */ - n_norm=sqrt(nx*nx + ny*ny + nz*nz); - nx = nx/n_norm; - ny = ny/n_norm; - nz = nz/n_norm; - - /* Now, determine our y-axis (vertical in many cases...) */ - vec_prod(mx, my, mz, xi, yi, zi, nx, ny, nz); - m_norm=sqrt(mx*mx + my*my + mz*mz); - mx = mx/m_norm; - my = my/m_norm; - mz = mz/m_norm; - - /* Our output, random vector can now be defined by linear combination: */ - - *xo = xi + dx * nx + dy * mx; - *yo = yi + dx * ny + dy * my; - *zo = zi + dx * nz + dy * mz; - - /* Go back to local coordinate system */ - tmp = coords_set(*xo, *yo, *zo); - tmp = rot_apply(A, tmp); - coords_get(tmp, &*xo, &*yo, &*zo); - - /* Go back to local coordinate system */ - tmp = coords_set(xi, yi, zi); - tmp = rot_apply(A, tmp); - coords_get(tmp, &xi, &yi, &zi); - - if (solid_angle) { - /* Calculate vector from local point to remote random point */ - lx = *xo - lx; - ly = *yo - ly; - lz = *zo - lz; - dist_p = sqrt(lx*lx + ly*ly + lz*lz); - - /* Adjust the 'solid angle' */ - /* 1/r^2 to the chosen point times cos(\theta) between the normal */ - /* vector of the target rectangle and direction vector of the chosen point. */ - cos_theta = (xi * lx + yi * ly + zi * lz) / (dist * dist_p); - *solid_angle = width * height / (dist_p * dist_p); - int counter; - for (counter = 0; counter < order; counter++) { - *solid_angle = *solid_angle * cos_theta; - } - } - } -} -/* randvec_target_rect_real */ - - -/* SECTION: random numbers ================================================== - - How to add a new RNG: - - - Use an rng with a manegable state vector, e.g. of lengt 4 or 7. The state - will sit on the particle struct as a "randstate_t state[RANDSTATE_LEN]" - - If the rng has a long state (as MT), set an empty "srandom" and initialize - it explicitly using the appropriate define (RNG_ALG) - - Add a seed and a random function (the transforms will be reused) - - Write the proper defines in mccode-r.h, e.g. randstate_t and RANDSTATE_LEN, - srandom and random. - - Compile using -DRNG_ALG= - -============================================================================= */ - - -/* "Mersenne Twister", by Makoto Matsumoto and Takuji Nishimura. */ -/* See http://www.math.keio.ac.jp/~matumoto/emt.html for original source. */ -/* - A C-program for MT19937, with initialization improved 2002/1/26. - Coded by Takuji Nishimura and Makoto Matsumoto. - - Before using, initialize the state by using mt_srandom(seed) - or init_by_array(init_key, key_length). - - Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The names of its contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - Any feedback is very welcome. - http://www.math.keio.ac.jp/matumoto/emt.html - email: matumoto@math.keio.ac.jp -*/ -#include -#include // for uint32_t -#include // for size_t - -/* Period parameters */ -#define N 624 -#define M 397 -#define MATRIX_A 0x9908b0dfU /* constant vector a */ -#define UPPER_MASK 0x80000000U /* most significant w-r bits */ -#define LOWER_MASK 0x7fffffffU /* least significant r bits */ - -static uint32_t mt[N]; /* the array for the state vector */ -static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ - -// Required for compatibility with common RNG interface (e.g., kiss/mt polymorphism) -void mt_srandom_empty(void) {} - -// Initializes mt[N] with a seed -void mt_srandom(uint32_t seed) { - mt[0] = seed; - for (mti = 1; mti < N; mti++) { - mt[mti] = 1812433253U * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti; - /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ - /* In the previous versions, MSBs of the seed affect */ - /* only MSBs of the array mt[]. */ - /* 2002/01/09 modified by Makoto Matsumoto */ - mt[mti] &= 0xffffffffU; - /* for >32 bit machines */ - } -} -/* Initialize by an array with array-length. - Init_key is the array for initializing keys. - key_length is its length. */ -void init_by_array(uint32_t init_key[], size_t key_length) { - size_t i = 1, j = 0, k; - mt_srandom(19650218U); - k = (N > key_length ? N : key_length); - for (; k; k--) { - mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525U)) - + init_key[j] + (uint32_t)j; - mt[i] &= 0xffffffffU; - i++; j++; - if (i >= N) { mt[0] = mt[N - 1]; i = 1; } - if (j >= key_length) j = 0; - } - for (k = N - 1; k; k--) { - mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941U)) - - (uint32_t)i; - mt[i] &= 0xffffffffU; - i++; - if (i >= N) { mt[0] = mt[N - 1]; i = 1; } - } - mt[0] = 0x80000000U; /* MSB is 1; ensuring non-zero initial array */ -} - -// Generates a random number on [0, 0xffffffff]-interval -uint32_t mt_random(void) { - uint32_t y; - static const uint32_t mag01[2] = { 0x0U, MATRIX_A }; - /* mag01[x] = x * MATRIX_A for x=0,1 */ - - if (mti >= N) { /* generate N words at one time */ - int kk; - - if (mti == N + 1) /* if mt_srandom() has not been called, */ - mt_srandom(5489U); /* a default initial seed is used */ - - for (kk = 0; kk < N - M; kk++) { - y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); - mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1U]; - } - for (; kk < N - 1; kk++) { - y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); - mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1U]; - } - y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); - mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1U]; - - mti = 0; - } - - y = mt[mti++]; - - /* Tempering */ - y ^= (y >> 11); - y ^= (y << 7) & 0x9d2c5680U; - y ^= (y << 15) & 0xefc60000U; - y ^= (y >> 18); - - return y; -} -#undef N -#undef M -#undef MATRIX_A -#undef UPPER_MASK -#undef LOWER_MASK -/* End of "Mersenne Twister". */ - - -/* -KISS - - From: http://www.helsbreth.org/random/rng_kiss.html - Scott Nelson 1999 - - Based on Marsaglia's KISS or (KISS+SWB) - - KISS - Keep it Simple Stupid PRNG - - the idea is to use simple, fast, individually promising - generators to get a composite that will be fast, easy to code - have a very long period and pass all the tests put to it. - The three components of KISS are - x(n)=a*x(n-1)+1 mod 2^32 - y(n)=y(n-1)(I+L^13)(I+R^17)(I+L^5), - z(n)=2*z(n-1)+z(n-2) +carry mod 2^32 - The y's are a shift register sequence on 32bit binary vectors - period 2^32-1; - The z's are a simple multiply-with-carry sequence with period - 2^63+2^32-1. The period of KISS is thus - 2^32*(2^32-1)*(2^63+2^32-1) > 2^127 - - In 2025 adapted for consistent 64-bit behavior across platforms. -*/ - -/* the KISS state is stored as a vector of 7 uint64_t */ -/* 0 1 2 3 4 5 6 */ -/* [ x, y, z, w, carry, k, m ] */ - -uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed) { - if (seed == 0) seed = 1ull; - state[0] = seed | 1ull; // x - state[1] = seed | 2ull; // y - state[2] = seed | 4ull; // z - state[3] = seed | 8ull; // w - state[4] = 0ull; // carry - state[5] = 0ull; // k - state[6] = 0ull; // m - return state; -} - -uint64_t kiss_random(uint64_t state[7]) { - // Linear congruential generator - state[0] = state[0] * 69069ull + 1ull; - - // Xorshift - state[1] ^= state[1] << 13ull; - state[1] ^= state[1] >> 17ull; - state[1] ^= state[1] << 5ull; - - // Multiply-with-carry - state[5] = (state[2] >> 2ull) + (state[3] >> 3ull) + (state[4] >> 2ull); - state[6] = state[3] + state[3] + state[2] + state[4]; - state[2] = state[3]; - state[3] = state[6]; - state[4] = state[5] >> 62ull; // Top bit of carry (adjusted for 64-bit) - - return state[0] + state[1] + state[3]; -} -/* end of "KISS" rng */ - - -/* FAST KISS in another implementation (Hundt) */ - -////////////////////////////////////////////////////////////////////////////// -// fast keep it simple stupid generator -////////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////////////////// -// Thomas Mueller hash for initialization of rngs -// http://stackoverflow.com/questions/664014/ -// what-integer-hash-function-are-good-that-accepts-an-integer-hash-key -////////////////////////////////////////////////////////////////////////////// -randstate_t _hash(randstate_t x) { - x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; - x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; - x = ((x >> 16) ^ x); - return x; -} - - -// SECTION: random number transforms ========================================== - - - -// generate a random number from normal law -double _randnorm(randstate_t* state) -{ - static double v1, v2, s; /* removing static breaks comparison with McStas <= 2.5 */ - static int phase = 0; - double X, u1, u2; - - if(phase == 0) - { - do - { - u1 = _rand01(state); - u2 = _rand01(state); - v1 = 2*u1 - 1; - v2 = 2*u2 - 1; - s = v1*v1 + v2*v2; - } while(s >= 1 || s == 0); - - X = v1*sqrt(-2*log(s)/s); - } - else - { - X = v2*sqrt(-2*log(s)/s); - } - - phase = 1 - phase; - return X; -} -// another one -double _randnorm2(randstate_t* state) { - double x, y, r; - do { - x = 2.0 * _rand01(state) - 1.0; - y = 2.0 * _rand01(state) - 1.0; - r = x*x + y*y; - } while (r == 0.0 || r >= 1.0); - return x * sqrt((-2.0 * log(r)) / r); -} - -// Generate a random number from -1 to 1 with triangle distribution -double _randtriangle(randstate_t* state) { - double randnum = _rand01(state); - if (randnum>0.5) return(1-sqrt(2*(randnum-0.5))); - else return(sqrt(2*randnum)-1); -} -double _rand01(randstate_t* state) { - double randnum; - randnum = (double) _random(); - // TODO: can we mult instead of div? - randnum /= (double) MC_RAND_MAX + 1; - return randnum; -} -// Return a random number between 1 and -1 -double _randpm1(randstate_t* state) { - double randnum; - randnum = (double) _random(); - randnum /= ((double) MC_RAND_MAX + 1) / 2; - randnum -= 1; - return randnum; -} -// Return a random number between 0 and max. -double _rand0max(double max, randstate_t* state) { - double randnum; - randnum = (double) _random(); - randnum /= ((double) MC_RAND_MAX + 1) / max; - return randnum; -} -// Return a random number between min and max. -double _randminmax(double min, double max, randstate_t* state) { - return _rand0max(max - min, state) + max; -} - - -/* SECTION: main and signal handlers ======================================== */ - -/******************************************************************************* -* mchelp: displays instrument executable help with possible options -*******************************************************************************/ -static void -mchelp(char *pgmname) -{ - int i; - - fprintf(stderr, "%s (%s) instrument simulation, generated with " MCCODE_STRING " (" MCCODE_DATE ")\n", instrument_name, instrument_source); - fprintf(stderr, "Usage: %s [options] [parm=value ...]\n", pgmname); - fprintf(stderr, -"Options are:\n" -" -s SEED --seed=SEED Set random seed (must be != 0)\n" -" -n COUNT --ncount=COUNT Set number of particles to simulate.\n" -" -d DIR --dir=DIR Put all data files in directory DIR.\n" -" -t --trace Enable trace of " MCCODE_PARTICLE "s through instrument.\n" -" (Use -t=2 or --trace=2 for modernised mcdisplay rendering)\n" -" -g --gravitation Enable gravitation for all trajectories.\n" -" --no-output-files Do not write any data files.\n" -" -h --help Show this help message.\n" -" -i --info Detailed instrument information.\n" -" --list-parameters Print the instrument parameters to standard out\n" -" -y --yes Assume default values for all parameters with a default\n" -" --meta-list Print names of components which defined metadata\n" -" --meta-defined COMP[:NAME] Print component defined metadata names, or (0,1) if NAME provided\n" -" --meta-type COMP:NAME Print metadata format type specified in definition\n" -" --meta-data COMP:NAME Print the metadata text\n" -" --source Show the instrument code which was compiled.\n" -#ifdef OPENACC -"\n" -" --vecsize OpenACC vector-size (default: 128)\n" -" --numgangs Number of OpenACC gangs (default: 7813)\n" -" --gpu_innerloop Maximum rays to process pr. OpenACC \n" -" kernel run (default: 2147483647)\n" -"\n" -#endif -#ifdef TOF_TRAIN -" --tof-trains=K Number of TOF \"sub-particles\" (default 10)\n" -#endif -"\n" -" --bufsiz Monitor_nD list/buffer-size (default: 1000000)\n" -" --format=FORMAT Output data files using FORMAT=" - FLAVOR_UPPER -#ifdef USE_NEXUS - " NEXUS\n" -" --IDF Embed an xml-formatted IDF instrument definition\n" -" in the NeXus file (if existent in .)\n\n" -#else -"\n\n" -#endif -); -#ifdef USE_MPI - fprintf(stderr, - "This instrument has been compiled with MPI support.\n Use 'mpirun %s [options] [parm=value ...]'.\n", pgmname); -#endif -#ifdef OPENACC - fprintf(stderr, - "This instrument has been compiled with NVIDIA GPU support through OpenACC.\n Running on systems without such devices will lead to segfaults.\nFurter, fprintf, sprintf and printf have been removed from any component TRACE.\n"); -#endif - - if(numipar > 0) - { - fprintf(stderr, "Instrument parameters are:\n"); - for(i = 0; i < numipar; i++) - if (mcinputtable[i].val && strlen(mcinputtable[i].val)) - fprintf(stderr, " %-16s(%s) [default='%s']\n", mcinputtable[i].name, - (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name), - mcinputtable[i].val); - else - fprintf(stderr, " %-16s(%s)\n", mcinputtable[i].name, - (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name)); - } - -#ifndef NOSIGNALS - fprintf(stderr, "Known signals are: " -#ifdef SIGUSR1 - "USR1 (status) " -#endif -#ifdef SIGUSR2 - "USR2 (save) " -#endif -#ifdef SIGBREAK - "BREAK (save) " -#endif -#ifdef SIGTERM - "TERM (save and exit)" -#endif - "\n"); -#endif /* !NOSIGNALS */ -} /* mchelp */ - - -/* mcshowhelp: show help and exit with 0 */ -static void -mcshowhelp(char *pgmname) -{ - mchelp(pgmname); - exit(0); -} - -/* mcusage: display usage when error in input arguments and exit with 1 */ -static void -mcusage(char *pgmname) -{ - fprintf(stderr, "Error: incorrect command line arguments\n"); - mchelp(pgmname); - exit(1); -} - -/* mcenabletrace: enable trace/mcdisplay or error if requires recompile */ -static void -mcenabletrace(int mode) -{ - if(traceenabled) { - mcdotrace = mode; - #pragma acc update device ( mcdotrace ) - } else { - if (mode>0) { - fprintf(stderr, - "Error: trace not enabled (mcenabletrace)\n" - "Please re-run the " MCCODE_NAME " compiler " - "with the --trace option, or rerun the\n" - "C compiler with the MC_TRACE_ENABLED macro defined.\n"); - exit(1); - } - } -} - -/******************************************************************************* -* mcreadparams: request parameters from the prompt (or use default) -*******************************************************************************/ -void -mcreadparams(void) -{ - int i,j,status; - static char buf[CHAR_BUF_LENGTH]; - char *p; - int len; - - MPI_MASTER(printf("Instrument parameters for %s (%s)\n", - instrument_name, instrument_source)); - - for(i = 0; mcinputtable[i].name != 0; i++) - { - do - { - MPI_MASTER( - if (mcinputtable[i].val && strlen(mcinputtable[i].val)) - printf("Set value of instrument parameter %s (%s) [default='%s']:\n", - mcinputtable[i].name, - (*mcinputtypes[mcinputtable[i].type].parminfo) - (mcinputtable[i].name), mcinputtable[i].val); - else - printf("Set value of instrument parameter %s (%s):\n", - mcinputtable[i].name, - (*mcinputtypes[mcinputtable[i].type].parminfo) - (mcinputtable[i].name)); - fflush(stdout); - ); -#ifdef USE_MPI - if(mpi_node_rank == mpi_node_root) - { - p = fgets(buf, CHAR_BUF_LENGTH, stdin); - if(p == NULL) - { - fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); - exit(1); - } - } - else - p = buf; - MPI_Bcast(buf, CHAR_BUF_LENGTH, MPI_CHAR, mpi_node_root, MPI_COMM_WORLD); -#else /* !USE_MPI */ - p = fgets(buf, CHAR_BUF_LENGTH, stdin); - if(p == NULL) - { - fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); - exit(1); - } -#endif /* USE_MPI */ - len = strlen(buf); - if (!len || (len == 1 && (buf[0] == '\n' || buf[0] == '\r'))) - { - if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { - strncpy(buf, mcinputtable[i].val, CHAR_BUF_LENGTH); /* use default value */ - len = strlen(buf); - } - } - for(j = 0; j < 2; j++) - { - if(len > 0 && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) - { - len--; - buf[len] = '\0'; - } - } - - status = (*mcinputtypes[mcinputtable[i].type].getparm) - (buf, mcinputtable[i].par); - if(!status) - { - (*mcinputtypes[mcinputtable[i].type].error)(mcinputtable[i].name, buf); - if (!mcinputtable[i].val || strlen(mcinputtable[i].val)) { - fprintf(stderr, " Change %s default value in instrument definition.\n", mcinputtable[i].name); - exit(1); - } - } - } while(!status); - } -} /* mcreadparams */ - -/******************************************************************************* -* mcparseoptions: parse command line arguments (options, parameters) -*******************************************************************************/ -void -mcparseoptions(int argc, char *argv[]) -{ - int i, j; - char *p; - int paramset = 0, *paramsetarray; - char *usedir=NULL; - - #ifdef TOF_TRAIN - NTOF=10; /* Default to 10 TOF "sub-particles" in a TOF_TRAIN */ - #endif - - /* Add one to numipar to avoid allocating zero size memory block. */ - paramsetarray = (int*)malloc((numipar + 1)*sizeof(*paramsetarray)); - if(paramsetarray == NULL) - { - fprintf(stderr, "Error: insufficient memory (mcparseoptions)\n"); - exit(1); - } - for(j = 0; j < numipar; j++) - { - paramsetarray[j] = 0; - if (mcinputtable[j].val != NULL && strlen(mcinputtable[j].val)) - { - int status; - char buf[CHAR_BUF_LENGTH]; - strncpy(buf, mcinputtable[j].val, CHAR_BUF_LENGTH); - status = (*mcinputtypes[mcinputtable[j].type].getparm) - (buf, mcinputtable[j].par); - if(!status) fprintf(stderr, "Invalid '%s' default value %s in instrument definition (mcparseoptions)\n", mcinputtable[j].name, buf); - else paramsetarray[j] = 1; - } else { - (*mcinputtypes[mcinputtable[j].type].getparm) - (NULL, mcinputtable[j].par); - paramsetarray[j] = 0; - } - } - for(i = 1; i < argc; i++) - { - if(!strcmp("-s", argv[i]) && (i + 1) < argc) - mcsetseed(argv[++i]); - else if(!strncmp("-s", argv[i], 2)) - mcsetseed(&argv[i][2]); - else if(!strcmp("--seed", argv[i]) && (i + 1) < argc) - mcsetseed(argv[++i]); - else if(!strncmp("--seed=", argv[i], 7)) - mcsetseed(&argv[i][7]); - else if(!strcmp("-n", argv[i]) && (i + 1) < argc) - mcsetn_arg(argv[++i]); - else if(!strncmp("-n", argv[i], 2)) - mcsetn_arg(&argv[i][2]); - else if(!strcmp("--ncount", argv[i]) && (i + 1) < argc) - mcsetn_arg(argv[++i]); - else if(!strncmp("--ncount=", argv[i], 9)) - mcsetn_arg(&argv[i][9]); - else if(!strcmp("-d", argv[i]) && (i + 1) < argc) - usedir=argv[++i]; /* will create directory after parsing all arguments (end of this function) */ - else if(!strncmp("-d", argv[i], 2)) - usedir=&argv[i][2]; - else if(!strcmp("--dir", argv[i]) && (i + 1) < argc) - usedir=argv[++i]; - else if(!strncmp("--dir=", argv[i], 6)) - usedir=&argv[i][6]; - else if(!strcmp("-h", argv[i])) - mcshowhelp(argv[0]); - else if(!strcmp("--help", argv[i]) || !strcmp("--version", argv[i])) - mcshowhelp(argv[0]); - else if(!strcmp("-i", argv[i])) { - mcformat=FLAVOR_UPPER; - mcinfo(); - } - else if(!strcmp("--info", argv[i])) - mcinfo(); - else if (!strcmp("--list-parameters", argv[i])) - mcparameterinfo(); - else if (!strcmp("--meta-list", argv[i]) && ((i+1) >= argc || argv[i+1][0] == '-')){ - //printf("Components with metadata defined:\n"); - exit(metadata_table_print_all_components(num_metadata, metadata_table) == 0); - } - else if (!strcmp("--meta-defined", argv[i]) && (i+1) < argc){ - exit(metadata_table_print_component_keys(num_metadata, metadata_table, argv[i+1]) == 0); - } - else if (!strcmp("--meta-type", argv[i]) && (i+1) < argc){ - char * literal_type = metadata_table_type(num_metadata, metadata_table, argv[i+1]); - if (literal_type == NULL) exit(1); - printf("%s\n", literal_type); - exit(0); - } - else if (!strcmp("--meta-data", argv[i]) && (i+1) < argc){ - char * literal = metadata_table_literal(num_metadata, metadata_table, argv[i+1]); - if (literal == NULL) exit(1); - printf("%s\n", literal); - exit(0); - } - else if(!strncmp("--trace=", argv[i], 8)) { - mcenabletrace(atoi(&argv[i][8])); - } else if(!strncmp("-t=", argv[i], 3) || !strcmp("--verbose", argv[i])) { - mcenabletrace(atoi(&argv[i][3])); - } else if(!strcmp("-t", argv[i])) - mcenabletrace(1); - else if(!strcmp("--trace", argv[i]) || !strcmp("--verbose", argv[i])) - mcenabletrace(1); - else if(!strcmp("--gravitation", argv[i])) - mcgravitation = 1; - else if(!strcmp("-g", argv[i])) - mcgravitation = 1; - else if(!strcmp("--yes", argv[i])) - mcusedefaults = 1; - else if(!strcmp("-y", argv[i])) - mcusedefaults = 1; - else if(!strncmp("--format=", argv[i], 9)) { - mcformat=&argv[i][9]; - } - else if(!strcmp("--format", argv[i]) && (i + 1) < argc) { - mcformat=argv[++i]; - } -#ifdef TOF_TRAIN - else if(!strncmp("--tof-trains=", argv[i], 13)) { - NTOF=atoi(&argv[i][13]); - } -#endif -#ifdef USE_NEXUS - else if(!strcmp("--IDF", argv[i])) { - mcnexus_embed_idf = 1; - } -#endif - else if(!strncmp("--vecsize=", argv[i], 10)) { - vecsize=atoi(&argv[i][10]); - } - else if(!strcmp("--vecsize", argv[i]) && (i + 1) < argc) { - vecsize=atoi(argv[++i]); - } - else if(!strncmp("--bufsiz=", argv[i], 9)) { - MONND_BUFSIZ=atoi(&argv[i][9]); - } - else if(!strcmp("--bufsiz", argv[i]) && (i + 1) < argc) { - MONND_BUFSIZ=atoi(argv[++i]); - } - else if(!strncmp("--numgangs=", argv[i], 11)) { - numgangs=atoi(&argv[i][11]); - } - else if(!strcmp("--numgangs", argv[i]) && (i + 1) < argc) { - numgangs=atoi(argv[++i]); - } - else if(!strncmp("--gpu_innerloop=", argv[i], 16)) { - gpu_innerloop=(long)strtod(&argv[i][16], NULL); - } - else if(!strcmp("--gpu_innerloop", argv[i]) && (i + 1) < argc) { - gpu_innerloop=(long)strtod(argv[++i], NULL); - } - - else if(!strcmp("--no-output-files", argv[i])) - mcdisable_output_files = 1; - else if(!strcmp("--source", argv[i])) { - printf("/* Source code %s from %s: */\n" - "/******************************************************************************/\n" - "%s\n" - "/******************************************************************************/\n" - "/* End of source code %s from %s */\n", - instrument_name, instrument_source, instrument_code, - instrument_name, instrument_source); - exit(1); - } - else if(argv[i][0] != '-' && (p = strchr(argv[i], '=')) != NULL) - { - *p++ = '\0'; - - for(j = 0; j < numipar; j++) - if(!strcmp(mcinputtable[j].name, argv[i])) - { - int status; - status = (*mcinputtypes[mcinputtable[j].type].getparm)(p, - mcinputtable[j].par); - if(!status || !strlen(p)) - { - (*mcinputtypes[mcinputtable[j].type].error) - (mcinputtable[j].name, p); - exit(1); - } - paramsetarray[j] = 1; - paramset = 1; - break; - } - if(j == numipar) - { /* Unrecognized parameter name */ - fprintf(stderr, "Error: unrecognized parameter %s (mcparseoptions)\n", argv[i]); - exit(1); - } - } - else if(argv[i][0] == '-') { - fprintf(stderr, "Error: unrecognized option argument %s (mcparseoptions). Ignored.\n", argv[i++]); - } - else { - fprintf(stderr, "Error: unrecognized argument %s (mcparseoptions). Aborting.\n", argv[i]); - mcusage(argv[0]); - } - } - if (mcusedefaults) { - MPI_MASTER( - printf("Using all default parameter values\n"); - ); - for(j = 0; j < numipar; j++) { - int status; - if(mcinputtable[j].val && strlen(mcinputtable[j].val)){ - status = (*mcinputtypes[mcinputtable[j].type].getparm)(mcinputtable[j].val, - mcinputtable[j].par); - paramsetarray[j] = 1; - paramset = 1; - } - } - } - if(!paramset) - mcreadparams(); /* Prompt for parameters if not specified. */ - else - { - for(j = 0; j < numipar; j++) - if(!paramsetarray[j]) - { - fprintf(stderr, "Error: Instrument parameter %s left unset (mcparseoptions)\n", - mcinputtable[j].name); - exit(1); - } - } - free(paramsetarray); -#ifdef USE_MPI - if (mcdotrace) mpi_node_count=1; /* disable threading when in trace mode */ -#endif - if (usedir && strlen(usedir) && !mcdisable_output_files) mcuse_dir(usedir); -} /* mcparseoptions */ - -#ifndef NOSIGNALS -/******************************************************************************* -* sighandler: signal handler that makes simulation stop, and save results -*******************************************************************************/ -void sighandler(int sig) -{ - /* MOD: E. Farhi, Sep 20th 2001: give more info */ - time_t t1, t0; -#define SIG_SAVE 0 -#define SIG_TERM 1 -#define SIG_STAT 2 -#define SIG_ABRT 3 - - printf("\n# " MCCODE_STRING ": [pid %i] Signal %i detected", getpid(), sig); -#ifdef USE_MPI - printf(" [proc %i]", mpi_node_rank); -#endif -#if defined(SIGUSR1) && defined(SIGUSR2) && defined(SIGKILL) - if (!strcmp(mcsig_message, "sighandler") && (sig != SIGUSR1) && (sig != SIGUSR2)) - { - printf("\n# Fatal : unrecoverable loop ! Suicide (naughty boy).\n"); - kill(0, SIGKILL); /* kill myself if error occurs within sighandler: loops */ - } -#endif - switch (sig) { -#ifdef SIGINT - case SIGINT : printf(" SIGINT (interrupt from terminal, Ctrl-C)"); sig = SIG_TERM; break; -#endif -#ifdef SIGILL - case SIGILL : printf(" SIGILL (Illegal instruction)"); sig = SIG_ABRT; break; -#endif -#ifdef SIGFPE - case SIGFPE : printf(" SIGFPE (Math Error)"); sig = SIG_ABRT; break; -#endif -#ifdef SIGSEGV - case SIGSEGV : printf(" SIGSEGV (Mem Error)"); sig = SIG_ABRT; break; -#endif -#ifdef SIGTERM - case SIGTERM : printf(" SIGTERM (Termination)"); sig = SIG_TERM; break; -#endif -#ifdef SIGABRT - case SIGABRT : printf(" SIGABRT (Abort)"); sig = SIG_ABRT; break; -#endif -#ifdef SIGQUIT - case SIGQUIT : printf(" SIGQUIT (Quit from terminal)"); sig = SIG_TERM; break; -#endif -#ifdef SIGTRAP - case SIGTRAP : printf(" SIGTRAP (Trace trap)"); sig = SIG_ABRT; break; -#endif -#ifdef SIGPIPE - case SIGPIPE : printf(" SIGPIPE (Broken pipe)"); sig = SIG_ABRT; break; -#endif -#ifdef SIGUSR1 - case SIGUSR1 : printf(" SIGUSR1 (Display info)"); sig = SIG_STAT; break; -#endif -#ifdef SIGUSR2 - case SIGUSR2 : printf(" SIGUSR2 (Save simulation)"); sig = SIG_SAVE; break; -#endif -#ifdef SIGHUP - case SIGHUP : printf(" SIGHUP (Hangup/update)"); sig = SIG_SAVE; break; -#endif -#ifdef SIGBUS - case SIGBUS : printf(" SIGBUS (Bus error)"); sig = SIG_ABRT; break; -#endif -#ifdef SIGURG - case SIGURG : printf(" SIGURG (Urgent socket condition)"); sig = SIG_ABRT; break; -#endif -#ifdef SIGBREAK - case SIGBREAK: printf(" SIGBREAK (Break signal, Ctrl-Break)"); sig = SIG_SAVE; break; -#endif - default : printf(" (look at signal list for signification)"); sig = SIG_ABRT; break; - } - printf("\n"); - printf("# Simulation: %s (%s) \n", instrument_name, instrument_source); - printf("# Breakpoint: %s ", mcsig_message); - if (strstr(mcsig_message, "Save") && (sig == SIG_SAVE)) - sig = SIG_STAT; - SIG_MESSAGE("sighandler"); - if (mcget_ncount() == 0) - printf("(0 %%)\n" ); - else - { - printf("%.2f %% (%10.1f/%10.1f)\n", 100.0*mcget_run_num()/mcget_ncount(), 1.0*mcget_run_num(), 1.0*mcget_ncount()); - } - t0 = (time_t)mcstartdate; - t1 = time(NULL); - printf("# Date: %s", ctime(&t1)); - printf("# Started: %s", ctime(&t0)); - - if (sig == SIG_STAT) - { - printf("# " MCCODE_STRING ": Resuming simulation (continue)\n"); - fflush(stdout); - return; - } - else - if (sig == SIG_SAVE) - { - printf("# " MCCODE_STRING ": Saving data and resume simulation (continue)\n"); - save(NULL); - fflush(stdout); - return; - } - else - if (sig == SIG_TERM) - { - printf("# " MCCODE_STRING ": Finishing simulation (save results and exit)\n"); - finally(); - exit(0); - } - else - { - fflush(stdout); - perror("# Last I/O Error"); - printf("# " MCCODE_STRING ": Simulation stop (abort).\n"); -// This portion of the signal handling only works on UNIX -#if defined(__unix__) || defined(__APPLE__) - signal(sig, SIG_DFL); /* force to use default sighandler now */ - kill(getpid(), sig); /* and trigger it with the current signal */ -#endif - exit(-1); - } -#undef SIG_SAVE -#undef SIG_TERM -#undef SIG_STAT -#undef SIG_ABRT - -} /* sighandler */ -#endif /* !NOSIGNALS */ - -#ifdef NEUTRONICS -/*Main neutronics function steers the McStas calls, initializes parameters etc */ -/* Only called in case NEUTRONICS = TRUE */ -void neutronics_main_(float *inx, float *iny, float *inz, float *invx, float *invy, float *invz, float *intime, float *insx, float *insy, float *insz, float *inw, float *outx, float *outy, float *outz, float *outvx, float *outvy, float *outvz, float *outtime, float *outsx, float *outsy, float *outsz, float *outwgt) -{ - - extern double mcnx, mcny, mcnz, mcnvx, mcnvy, mcnvz; - extern double mcnt, mcnsx, mcnsy, mcnsz, mcnp; - - /* External code governs iteration - McStas is iterated once per call to neutronics_main. I.e. below counter must be initiancated for each call to neutronics_main*/ - mcrun_num=0; - - time_t t; - t = (time_t)mcstartdate; - mcstartdate = t; /* set start date before parsing options and creating sim file */ - init(); - - /* *** parse options *** */ - SIG_MESSAGE("[" __FILE__ "] main START"); - mcformat=getenv(FLAVOR_UPPER "_FORMAT") ? - getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; - - /* Set neutron state based on input from neutronics code */ - mcsetstate(*inx,*iny,*inz,*invx,*invy,*invz,*intime,*insx,*insy,*insz,*inw); - - /* main neutron event loop - runs only one iteration */ - - //mcstas_raytrace(&mcncount); /* prior to McStas 1.12 */ - - mcallowbackprop = 1; //avoid absorbtion from negative dt - int argc=1; - char *argv[0]; - int dummy = mccode_main(argc, argv); - - *outx = mcnx; - *outy = mcny; - *outz = mcnz; - *outvx = mcnvx; - *outvy = mcnvy; - *outvz = mcnvz; - *outtime = mcnt; - *outsx = mcnsx; - *outsy = mcnsy; - *outsz = mcnsz; - *outwgt = mcnp; - - return; -} /* neutronics_main */ - -#endif /*NEUTRONICS*/ - -#endif /* !MCCODE_H */ -/* End of file "mccode-r.c". */ -/* End of file "mccode-r.c". */ - -/* embedding file "mcstas-r.c" */ - -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2009, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Runtime: share/mcstas-r.c -* -* %Identification -* Written by: KN -* Date: Aug 29, 1997 -* Release: McStas X.Y -* Version: $Revision$ -* -* Runtime system for McStas. -* Embedded within instrument in runtime mode. -* -* Usage: Automatically embbeded in the c code whenever required. -* -* $Id$ -* -*******************************************************************************/ - -#ifndef MCSTAS_R_H -#include "mcstas-r.h" -#endif -#ifdef DANSE -#include "mcstas-globals.h" -#endif - -/******************************************************************************* -* The I/O format definitions and functions -*******************************************************************************/ - -/*the magnet stack*/ -#ifdef MC_POL_COMPAT -void (*mcMagnetPrecession) (double, double, double, double, double, double, - double, double*, double*, double*, double, Coords, Rotation)=NULL; -Coords mcMagnetPos; -Rotation mcMagnetRot; -double* mcMagnetData = NULL; -/* mcMagneticField(x, y, z, t, Bx, By, Bz) */ -int (*mcMagneticField) (double, double, double, double, - double*, double*, double*, void *) = NULL; -#endif - -#ifndef MCSTAS_H - -/******************************************************************************* -* mcsetstate: transfer parameters into global McStas variables -*******************************************************************************/ -_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, - double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF) -{ - _class_particle mcneutron; - - mcneutron.x = x; - mcneutron.y = y; - mcneutron.z = z; - mcneutron.vx = vx; - mcneutron.vy = vy; - mcneutron.vz = vz; - mcneutron.t = t; - mcneutron.sx = sx; - mcneutron.sy = sy; - mcneutron.sz = sz; - mcneutron.p = p; - mcneutron.mcgravitation = mcgravitation; - mcneutron.mcMagnet = mcMagnet; - mcneutron.allow_backprop = mcallowbackprop; - mcneutron._uid = 0; - mcneutron._index = 1; - mcneutron._absorbed = 0; - mcneutron._restore = 0; - mcneutron._scattered = 0; - mcneutron.flag_nocoordschange = 0; - - /* init tmp-vars - FIXME are they used? */ - mcneutron._mctmp_a = mcneutron._mctmp_b = mcneutron._mctmp_c = 0; - // what about mcneutron._logic ? - mcneutron._logic.dummy=1; - // init uservars via cogen'd-function - - #ifdef TOF_TRAIN - mcneutron.N_trains=NTOF; - mcneutron.t_offset=malloc(NTOF*sizeof(double)); - mcneutron.p_trains=malloc(NTOF*sizeof(double)); - mcneutron.alive_trains=malloc(NTOF*sizeof(int)); - #endif - - particle_uservar_init(&mcneutron); - - return(mcneutron); -} /* mcsetstate */ - -/******************************************************************************* -* mcgetstate: get neutron parameters from particle structure -*******************************************************************************/ -_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, - double *vx, double *vy, double *vz, double *t, - double *sx, double *sy, double *sz, double *p) -{ - *x = mcneutron.x; - *y = mcneutron.y; - *z = mcneutron.z; - *vx = mcneutron.vx; - *vy = mcneutron.vy; - *vz = mcneutron.vz; - *t = mcneutron.t; - *sx = mcneutron.sx; - *sy = mcneutron.sy; - *sz = mcneutron.sz; - *p = mcneutron.p; - - return(mcneutron); -} /* mcgetstate */ - - -/******************************************************************************* -* mcgenstate: set default neutron parameters -*******************************************************************************/ -// Moved to generated code -/* #pragma acc routine seq */ -/* _class_particle mcgenstate(void) */ -/* { */ -/* return(mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, mcMagnet, mcallowbackprop)); */ -/* } */ - -/******************************************************************************* -* mccoordschanges: old style rotation routine rot -> (x y z) ,(vx vy vz),(sx,sy,sz) -*******************************************************************************/ -void -mccoordschanges(Coords a, Rotation t, double *x, double *y, double *z, - double *vx, double *vy, double *vz, double *sx, double *sy, double *sz) -{ - Coords b, c; - - b.x = *x; - b.y = *y; - b.z = *z; - c = rot_apply(t, b); - b = coords_add(c, a); - *x = b.x; - *y = b.y; - *z = b.z; - - if ( (vz && vy && vx) && (*vz != 0.0 || *vx != 0.0 || *vy != 0.0) ) - mccoordschange_polarisation(t, vx, vy, vz); - - if ( (sz && sy && sx) && (*sz != 0.0 || *sx != 0.0 || *sy != 0.0) ) - mccoordschange_polarisation(t, sx, sy, sz); - -} - -/* intersection routines ==================================================== */ - -/******************************************************************************* -* inside_rectangle: Check if (x,y) is inside rectangle (xwidth, yheight) -* return 0 if outside and 1 if inside -*******************************************************************************/ -int inside_rectangle(double x, double y, double xwidth, double yheight) -{ - if (x>-xwidth/2 && x-yheight/2 && y -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) - t[0] = tt; - else - t[0] = 0; - - tt = (dx/2 - x)/vx; - y_in = y + tt*vy; - z_in = z + tt*vz; - if( y_in > -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) - t[1] = tt; - else - t[1] = 0; - } - else - t[0] = t[1] = 0; - - if(vy != 0) - { - tt = -(dy/2 + y)/vy; - x_in = x + tt*vx; - z_in = z + tt*vz; - if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) - t[2] = tt; - else - t[2] = 0; - - tt = (dy/2 - y)/vy; - x_in = x + tt*vx; - z_in = z + tt*vz; - if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) - t[3] = tt; - else - t[3] = 0; - } - else - t[2] = t[3] = 0; - - if(vz != 0) - { - tt = -(dz/2 + z)/vz; - x_in = x + tt*vx; - y_in = y + tt*vy; - if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) - t[4] = tt; - else - t[4] = 0; - - tt = (dz/2 - z)/vz; - x_in = x + tt*vx; - y_in = y + tt*vy; - if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) - t[5] = tt; - else - t[5] = 0; - } - else - t[4] = t[5] = 0; - - /* The intersection is evaluated and *dt_in and *dt_out are assigned */ - - a = b = s = 0; - count = 0; - - for( i = 0; i < 6; i = i + 1 ) - if( t[i] == 0 ) - s = s+1; - else if( count == 0 ) - { - a = t[i]; - count = 1; - } - else - { - b = t[i]; - count = 2; - } - - if ( a == 0 && b == 0 ) - return 0; - else if( a < b ) - { - *dt_in = a; - *dt_out = b; - return 1; - } - else - { - *dt_in = b; - *dt_out = a; - return 1; - } - -} /* box_intersect */ - -/******************************************************************************* - * cylinder_intersect: compute intersection with a cylinder - * returns 0 when no intersection is found - * or 2/4/8/16 bits depending on intersection, - * and resulting times t0 and t1 - * Written by: EM,NB,ABA 4.2.98 - *******************************************************************************/ -int cylinder_intersect(double *t0, double *t1, double x, double y, double z, - double vx, double vy, double vz, double r, double h) -{ - double D, t_in, t_out, y_in, y_out; - int ret=1; - - D = (2*vx*x + 2*vz*z)*(2*vx*x + 2*vz*z) - - 4*(vx*vx + vz*vz)*(x*x + z*z - r*r); - - if (D>=0) - { - if (vz*vz + vx*vx) { - t_in = (-(2*vz*z + 2*vx*x) - sqrt(D))/(2*(vz*vz + vx*vx)); - t_out = (-(2*vz*z + 2*vx*x) + sqrt(D))/(2*(vz*vz + vx*vx)); - } else if (vy) { /* trajectory parallel to cylinder axis */ - t_in = (-h/2-y)/vy; - t_out = (h/2-y)/vy; - if (t_in>t_out){ - double tmp=t_in; - t_in=t_out;t_out=tmp; - } - } else return 0; - y_in = vy*t_in + y; - y_out =vy*t_out + y; - - if ( (y_in > h/2 && y_out > h/2) || (y_in < -h/2 && y_out < -h/2) ) - return 0; - else - { - if (y_in > h/2) - { t_in = ((h/2)-y)/vy; ret += 2; } - else if (y_in < -h/2) - { t_in = ((-h/2)-y)/vy; ret += 4; } - if (y_out > h/2) - { t_out = ((h/2)-y)/vy; ret += 8; } - else if (y_out < -h/2) - { t_out = ((-h/2)-y)/vy; ret += 16; } - } - *t0 = t_in; - *t1 = t_out; - return ret; - } - else - { - *t0 = *t1 = 0; - return 0; - } -} /* cylinder_intersect */ - - -/******************************************************************************* - * sphere_intersect: Calculate intersection between a line and a sphere. - * returns 0 when no intersection is found - * or 1 in case of intersection with resulting times t0 and t1 - *******************************************************************************/ -int sphere_intersect(double *t0, double *t1, double x, double y, double z, - double vx, double vy, double vz, double r) -{ - double A, B, C, D, v; - - v = sqrt(vx*vx + vy*vy + vz*vz); - A = v*v; - B = 2*(x*vx + y*vy + z*vz); - C = x*x + y*y + z*z - r*r; - D = B*B - 4*A*C; - if(D < 0) - return 0; - D = sqrt(D); - *t0 = (-B - D) / (2*A); - *t1 = (-B + D) / (2*A); - return 1; -} /* sphere_intersect */ - -/******************************************************************************* - * plane_intersect: Calculate intersection between a plane and a line. - * returns 0 when no intersection is found (i.e. line is parallel to the plane) - * returns 1 or -1 when intersection time is positive and negative respectively - *******************************************************************************/ -int plane_intersect(double *t, double x, double y, double z, - double vx, double vy, double vz, double nx, double ny, double nz, double wx, double wy, double wz) -{ - double s; - if (fabs(s=scalar_prod(nx,ny,nz,vx,vy,vz)) height/2. )return 0; - double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); - double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); - double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; - return tmp; -} /* end of ESS_2014_Schoenfeldt_cold_y0 */ - -/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ - -/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ - double normalization=1; - if(x0<-width||x0>width)return 0; - return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); -} /* end of ESS_2014_Schoenfeldt_cold_x0 */ - -/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ - -double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ - // Kept for reference only... - /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; - long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); - if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity - *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope - return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity - *(0.84199+0.00307022*height) // asumetry - *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope -} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_t == 0.03) || (height_t == 0.06)) { - *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (6.2e14/9.0e14); - *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } -} /* end of ESS_2015_Schoenfeldt_thermal */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_t == 0.03) || (height_t == 0.06)) { - *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (6.2e14/9.0e14); - *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } -} /* end of ESS_2015_Schoenfeldt_thermal */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); -} - - -/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ -/* Parametrization including moderator height for the "pancake" moderator */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_c == 0.03) || (height_c == 0.06)) { - *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (10.1e14/16.0e14); - *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } -} /* end of ESS_2015_Schoenfeldt_cold */ - -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_c == 0.03) || (height_c == 0.06)) { - *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (10.1e14/16.0e14); - *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } -} /* end of ESS_2015_Schoenfeldt_cold */ - -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); -} /* end of ESS_2015_Schoenfeldt_cold */ - - -/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_y0(double y0){ - double par3=30; - double par4=.35; - double cosh_ish=exp(-par4*y0)+exp(par4*y0); - double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); - return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); - -} /* end of ESS_2015_Schoenfeldt_cold_y0 */ - -/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_y0(double y0){ - if(y0<-3./2.+0.105){ - return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); - } else if(y0>3./2.-0.105){ - return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); - } - return 1.005; -} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ - -/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ - // GEOMETRY / SAMPLING SPACE - double i=(theta-5.)/10.; - double par0=0.0146115+0.00797729*i-0.00279541*i*i; - double par1=0.980886; - if(i==1)par1=0.974217; - if(i==2)par1=0.981462; - if(i==3)par1=1.01466; - if(i==4)par1=1.11707; - if(i==5)par1=1.16057; - - double par2=-4-.75*i; - if(i==0)par2=-20; - double par3=-14.9402-0.178369*i+0.0367007*i*i; - if(i==0)par3*=0.95; - double par4=-15; - if(i==3)par4=-3.5; - if(i==5)par4=-1.9; - double par5=-7.07979+0.0835695*i-0.0546662*i*i; - if(i==5)par5*=0.85; - - //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); - //if(i==4) width=width+0.3; - //if(i==5) width=width-0.7; - - /* Rescaling to achieve a BF1 model */ - double tmp=(par5-par3)/width; - //printf("Cold x0 in BF1 units: %g,",x0); - x0=x0*tmp-7.16; - //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); - - /* if (x0<=par5 && x0>=par3) */ - /* return 1; */ - /* else */ - /* return 0; */ - - - double line=par0*(x0+12)+par1; - double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); - - return line*CutLeftCutRight; -} /* end of ESS_2015_Schoenfeldt_cold_x0 */ - -/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ - double i=(theta-5.)/10.; - double par0=-5.54775+0.492804*i; - double par1=-0.265929-0.711477*i; - if(theta==55)par1=-2.55; - - double par2=0.821885+0.00914832*i; - double par3=1.31108-0.00698647*i; - if(theta==55)par3=1.23; - double par4=-.035; - double par5=-0.0817358+0.00807125*i; - - double par6=-8; - double par7=-7.15; - if(theta==45)par7=-8.2; - if(theta==55)par7=-7.7; - - double par8=-8; - double par9=7.15; - if(theta==45)par9=7.5; - if(theta==55)par9=8.2; - - /* Rescaling to achieve a BF1 model */ - double tmp=(par9-par7)/width; - //printf("Thermal x0 in BF1 units: %g,",x0); - x0=x0*tmp-7.16; - //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); - - /* if (x0<=par9 && x0>=par7) */ - /* return 1; */ - /* else */ - /* return 0; */ - - double soften1=1./(1+exp(8.*(x0-par0))); - double soften2=1./(1+exp(8.*(x0-par1))); - double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); - double line1=par4*(x0-par0)+par2; - double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; - double line3=par5*(x0-par1)+par3; - double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); - - - return CutLeftCutRight*( - (line1)*soften1 - +line2*soften2*(1-soften1) - +line3*(1-soften2) - ); -} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ - -/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_cold_Y */ - -/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_thermal_Y */ - -/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ - -/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ - if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); - return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); -/* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ - - -/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ - if(time<0)return 0; - double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); - if(time -#include -#include - -#ifndef _MSC_EXTENSIONS -#include -#else -# include -# define strcasecmp _stricmp -# define strncasecmp _strnicmp -#endif - - typedef struct struct_table - { - char filename[1024]; - long filesize; - char *header; /* text header, e.g. comments */ - double *data; /* vector { x[0], y[0], ... x[n-1], y[n-1]... } */ - double min_x; /* min value of first column */ - double max_x; /* max value of first column */ - double step_x; /* minimal step value of first column */ - long rows; /* number of rows in matrix block */ - long columns; /* number of columns in matrix block */ - - long begin; /* start fseek index of block */ - long end; /* stop fseek index of block */ - long block_number; /* block index. 0 is catenation of all */ - long array_length; /* number of elements in the t_Table array */ - char monotonic; /* true when 1st column/vector data is monotonic */ - char constantstep; /* true when 1st column/vector data has constant step */ - char method[32]; /* interpolation method: nearest, linear */ - char quiet; /*output level for messages to the console 0: print all messages, 1:only print some/including errors, 2: never print anything.*/ - } t_Table; - -/*maximum number of rows to rebin a table = 1M*/ -enum { mcread_table_rebin_maxsize = 1000000 }; - -typedef struct t_Read_table_file_item { - int ref_count; - t_Table *table_ref; -} t_Read_table_file_item; - -typedef enum enum_Read_table_file_actions {STORE,FIND,GC} t_Read_table_file_actions; - -/* read_table-lib function prototypes */ -/* ========================================================================= */ - -/* 'public' functions */ -long Table_Read (t_Table *Table, char *File, long block_number); -long Table_Read_Offset (t_Table *Table, char *File, long block_number, - long *offset, long max_lines); -long Table_Read_Offset_Binary(t_Table *Table, char *File, char *Type, - long *Offset, long Rows, long Columns); -long Table_Rebin(t_Table *Table); /* rebin table with regular 1st column and interpolate all columns 2:end */ -long Table_Info (t_Table Table); -#pragma acc routine -double Table_Index(t_Table Table, long i, long j); /* get indexed value */ -#pragma acc routine -double Table_Value(t_Table Table, double X, long j); /* search X in 1st column and return interpolated value in j-column */ -t_Table *Table_Read_Array(char *File, long *blocks); -void Table_Free_Array(t_Table *Table); -long Table_Info_Array(t_Table *Table); -int Table_SetElement(t_Table *Table, long i, long j, double value); -long Table_Init(t_Table *Table, long rows, long columns); /* create a Table */ -#pragma acc routine -double Table_Value2d(t_Table Table, double X, double Y); /* same as Table_Index with non-integer indices and 2d interpolation */ -MCDETECTOR Table_Write(t_Table Table, char*file, char*xl, char*yl, - double x1, double x2, double y1, double y2); /* write Table to disk */ -void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier); -t_Table *Table_File_List_find(char *name, int block, int offset); -int Table_File_List_gc(t_Table *tab); -void *Table_File_List_store(t_Table *tab); - -#define Table_ParseHeader(header, ...) \ - Table_ParseHeader_backend(header,__VA_ARGS__,NULL); - -char **Table_ParseHeader_backend(char *header, ...); -FILE *Open_File(char *name, const char *Mode, char *path); - - -/* private functions */ -void Table_Free(t_Table *Table); -long Table_Read_Handle(t_Table *Table, FILE *fid, long block_number, long max_lines, char *name); -static void Table_Stat(t_Table *Table); -#pragma acc routine -double Table_Interp1d(double x, double x1, double y1, double x2, double y2); -#pragma acc routine -double Table_Interp1d_nearest(double x, double x1, double y1, double x2, double y2); -#pragma acc routine -double Table_Interp2d(double x, double y, double x1, double y1, double x2, double y2, -double z11, double z12, double z21, double z22); - - -#endif - -/* end of read_table-lib.h */ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2009, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Library: share/read_table-lib.c -* -* %Identification -* Written by: EF -* Date: Aug 28, 2002 -* Origin: ILL -* Release: McStas CVS_090504 -* Version: $Revision$ -* -* This file is to be imported by components that may read data from table files -* It handles some shared functions. Embedded within instrument in runtime mode. -* -* Usage: within SHARE -* %include "read_table-lib" -* -*******************************************************************************/ - -#ifndef READ_TABLE_LIB_H -#include "read_table-lib.h" -#endif - -#ifndef READ_TABLE_LIB_C -#define READ_TABLE_LIB_C "$Revision$" - - -/******************************************************************************* - * void *Table_File_List_Handler(action, item, item_modifier) - * ACTION: handle file entries in the read_table-lib file list. If a file is read - it is supposed to be - * stored in a list such that we can avoid reading the same file many times. - * input action: FIND, STORE, GC. check if file exists in the list, store an item in the list, or check if it can be garbage collected. - * input item: depends on the action. - * FIND) item is a filename, and item_modifier is the block number - * STORE) item is the Table to store - item_modifier is ignored - * GC) item is the Table to check. If it has a ref_count >1 then this is simply decremented. - * return depends on the action - * FIND) return a reference to a table+ref_count item if found - NULL otherwise. I.e. NULL means the file has not been read before and must be read again. - * STORE) return NULL always - * GC) return NULL if no garbage collection is needed, return an adress to the t_Table which should be garbage collected. 0x1 is returned if - * the item is not found in the list -*******************************************************************************/ -void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier){ - - /* logic here is Read_Table should include a call to FIND. If found the return value should just be used as - * if the table had been read from disk. If not found then read the table and STORE. - * Table_Free should include a call to GC. If this returns non-NULL then we should proceed with freeing the memory - * associated with the table item - otherwise only decrement the reference counter since there are more references - * that may need it.*/ - - static t_Read_table_file_item read_table_file_list[1024]; - static int read_table_file_count=0; - - t_Read_table_file_item *tr; - switch(action){ - case FIND: - /*interpret data item as a filename, if it is found return a pointer to the table and increment refcount. - * if not found return the item itself*/ - tr=read_table_file_list; - while ( tr->table_ref!=NULL ){ - int i=*((int*) item_modifier); - int j=*( ((int*) item_modifier)+1); - if ( !strcmp(tr->table_ref->filename,(char *) item) && - tr->table_ref->block_number==i && tr->table_ref->begin==j ){ - tr->ref_count++; - return (void *) tr; - } - tr++; - } - return NULL; - case STORE: - /*find an available slot and store references to table there*/ - tr=&(read_table_file_list[read_table_file_count++]); - tr->table_ref = ((t_Table *) item); - tr->ref_count++; - return NULL; - case GC: - /* Should this item be garbage collected (freed) - if so scratch the entry and return the address of the item - - * else decrement ref_count and return NULL. - * A non-NULL return expects the item to actually be freed afterwards.*/ - tr=read_table_file_list; - while ( tr->table_ref!=NULL ){ - if ( tr->table_ref->data ==((t_Table *)item)->data && - tr->table_ref->block_number == ((t_Table *)item)->block_number){ - /*matching item found*/ - if (tr->ref_count>1){ - /*the item is found and no garbage collection needed*/ - tr->ref_count--; - return NULL; - }else{ - /* The item is found and the reference counter is 1. - * This means we should garbage collect. Move remaining list items up one slot, - * and return the table for garbage collection by caller*/ - while (tr->table_ref!=NULL){ - *tr=*(tr+1); - tr++; - } - read_table_file_count--; - return (t_Table *) item; - } - } - tr++; - } - /* item not found, and so should be garbage collected. This could be the case if freeing a - * Table that has been constructed from code - not read from file. Return 0x1 to flag it for - * collection.*/ - return (void *) 0x1 ; - } - /* If we arrive here, nothing worked, return NULL */ - return NULL; -} - -/* Access functions to the handler*/ - -/******************************************** - * t_Table *Table_File_List_find(char *name, int block, int offset) - * input name: filename to search for in the file list - * input block: data block in the file as each file may contain more than 1 data block. - * return a ref. to a table if it is found (you may use this pointer and skip reading the file), NULL otherwise (i.e. go ahead and read the file) -*********************************************/ -t_Table *Table_File_List_find(char *name, int block, int offset){ - int vars[2]={block,offset}; - t_Read_table_file_item *item = Table_File_List_Handler(FIND,name, vars); - if (item == NULL){ - return NULL; - }else{ - return item->table_ref; - } -} -/******************************************** - * int Table_File_List_gc(t_Table *tab) - * input tab: the table to check for references. - * return 0: no garbage collection needed - * 1: Table's data and header (at least) should be freed. -*********************************************/ -int Table_File_List_gc(t_Table *tab){ - void *rval=Table_File_List_Handler(GC,tab,0); - if (rval==NULL) return 0; - else return 1; -} - - -/***************************************************************************** - * void *Table_File_List_store(t_Table *tab) - * input tab: pointer to table to store. - * return None. -*******************************************************************************/ -void *Table_File_List_store(t_Table *tab){ - return Table_File_List_Handler(STORE,tab,0); -} - - -/******************************************************************************* -* FILE *Open_File(char *name, char *Mode, char *path) -* ACTION: search for a file and open it. Optionally return the opened path. -* input name: file name from which table should be extracted -* mode: "r", "w", "a" or any valid fopen mode -* path: NULL or a pointer to at least 1024 allocated chars -* return initialized file handle or NULL in case of error -*******************************************************************************/ - - FILE *Open_File(char *File, const char *Mode, char *Path) - { - char path[1024]; - FILE *hfile = NULL; - - if (!File || File[0]=='\0') return(NULL); - if (!strcmp(File,"NULL") || !strcmp(File,"0")) return(NULL); - - /* search in current or full path */ - strncpy(path, File, 1024); - hfile = fopen(path, Mode); - if(!hfile) - { - char dir[1024]; - - if (!hfile && instrument_source[0] != '\0' && strlen(instrument_source)) /* search in instrument source location */ - { - char *path_pos = NULL; - /* extract path: searches for last file separator */ - path_pos = strrchr(instrument_source, MC_PATHSEP_C); /* last PATHSEP */ - if (path_pos) { - long path_length = path_pos +1 - instrument_source; /* from start to path+sep */ - if (path_length) { - strncpy(dir, instrument_source, path_length); - dir[path_length] = '\0'; - snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); - hfile = fopen(path, Mode); - } - } - } - if (!hfile && instrument_exe[0] != '\0' && strlen(instrument_exe)) /* search in PWD instrument executable location */ - { - char *path_pos = NULL; - /* extract path: searches for last file separator */ - path_pos = strrchr(instrument_exe, MC_PATHSEP_C); /* last PATHSEP */ - if (path_pos) { - long path_length = path_pos +1 - instrument_exe; /* from start to path+sep */ - if (path_length) { - strncpy(dir, instrument_exe, path_length); - dir[path_length] = '\0'; - snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); - hfile = fopen(path, Mode); - } - } - } - if (!hfile) /* search in HOME or . */ - { - strcpy(dir, getenv("HOME") ? getenv("HOME") : "."); - snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); - hfile = fopen(path, Mode); - } - if (!hfile) /* search in MCSTAS/data */ - { - strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); - snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "data", MC_PATHSEP_C, File); - hfile = fopen(path, Mode); - } - if (!hfile) /* search in MVCSTAS/contrib */ - { - strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); - snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "contrib", MC_PATHSEP_C, File); - hfile = fopen(path, Mode); - } - if(!hfile) - { - // fprintf(stderr, "Warning: Could not open input file '%s' (Open_File)\n", File); - return (NULL); - } - } - if (Path) strncpy(Path, path, 1024); - return(hfile); - } /* end Open_File */ - -/******************************************************************************* -* long Read_Table(t_Table *Table, char *name, int block_number) -* ACTION: read a single Table from a text file -* input Table: pointer to a t_Table structure -* name: file name from which table should be extracted -* block_number: if the file does contain more than one -* data block, then indicates which one to get (from index 1) -* a 0 value means append/catenate all -* return initialized single Table t_Table structure containing data, header, ... -* number of read elements (-1: error, 0:header only) -* The routine stores any line starting with '#', '%' and ';' into the header -* File is opened, read and closed -* Other lines are interpreted as numerical data, and stored. -* Data block should be a rectangular matrix or vector. -* Data block may be rebinned with Table_Rebin (also sort in ascending order) -*******************************************************************************/ - long Table_Read(t_Table *Table, char *File, long block_number) - { /* reads all or a single data block from 'file' and returns a Table structure */ - return(Table_Read_Offset(Table, File, block_number, NULL, 0)); - } /* end Table_Read */ - -/******************************************************************************* -* long Table_Read_Offset(t_Table *Table, char *name, int block_number, long *offset -* long max_rows) -* ACTION: read a single Table from a text file, starting at offset -* Same as Table_Read(..) except: -* input offset: pointer to an offset (*offset should be 0 at start) -* max_rows: max number of data rows to read from file (0 means all) -* return initialized single Table t_Table structure containing data, header, ... -* number of read elements (-1: error, 0:header only) -* updated *offset position (where end of reading occured) -*******************************************************************************/ - long Table_Read_Offset(t_Table *Table, char *File, - long block_number, long *offset, - long max_rows) - { /* reads all/a data block in 'file' and returns a Table structure */ - FILE *hfile; - long nelements=0; - long begin=0; - long filesize=0; - char name[1024]; - char path[1024]; - struct stat stfile; - - /*Need to be able to store the pointer*/ - if (!Table) return(-1); - - /*TK: Valgrind flags it as usage of uninitialised variable: */ - Table->quiet = 0; - - //if (offset && *offset) snprintf(name, 1024, "%s@%li", File, *offset); - //else - strncpy(name, File, 1024); - if(offset && *offset){ - begin=*offset; - } - /* Check if the table has already been read from file. - * If so just reuse the table, if not (this is flagged by returning NULL - * set up a new table and read the data into it */ - t_Table *tab_p= Table_File_List_find(name,block_number,begin); - if ( tab_p!=NULL ){ - /*table was found in the Table_File_List*/ - *Table=*tab_p; - MPI_MASTER( - if(Table->quiet<1) - printf("Reusing input file '%s' (Table_Read_Offset)\n", name); - ); - return Table->rows*Table->columns; - } - - /* open the file */ - hfile = Open_File(File, "r", path); - if (!hfile) return(-1); - else { - MPI_MASTER( - if(Table->quiet<1) - printf("Opening input file '%s' (Table_Read_Offset)\n", path); - ); - } - - /* read file state */ - stat(path,&stfile); filesize = stfile.st_size; - if (offset && *offset) fseek(hfile, *offset, SEEK_SET); - begin = ftell(hfile); - - Table_Init(Table, 0, 0); - - /* read file content and set the Table */ - nelements = Table_Read_Handle(Table, hfile, block_number, max_rows, name); - Table->begin = begin; - Table->end = ftell(hfile); - Table->filesize = (filesize>0 ? filesize : 0); - Table_Stat(Table); - - Table_File_List_store(Table); - - if (offset) *offset=Table->end; - fclose(hfile); - return(nelements); - - } /* end Table_Read_Offset */ - -/******************************************************************************* -* long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, -* long *offset, long rows, long columns) -* ACTION: read a single Table from a binary file, starting at offset -* Same as Table_Read_Offset(..) except that it handles binary files. -* input type: may be "float"/NULL or "double" -* offset: pointer to an offset (*offset should be 0 at start) -* rows : number of rows (0 means read all) -* columns: number of columns -* return initialized single Table t_Table structure containing data, header, ... -* number of read elements (-1: error, 0:header only) -* updated *offset position (where end of reading occured) -*******************************************************************************/ - long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, - long *offset, long rows, long columns) - { /* reads all/a data block in binary 'file' and returns a Table structure */ - long nelements, sizeofelement; - long filesize; - FILE *hfile; - char path[1024]; - struct stat stfile; - double *data = NULL; - double *datatmp = NULL; - long i; - long begin; - - if (!Table) return(-1); - - Table_Init(Table, 0, 0); - - /* open the file */ - hfile = Open_File(File, "r", path); - if (!hfile) return(-1); - else { - MPI_MASTER( - if(Table->quiet<1) - printf("Opening input file '%s' (Table_Read, Binary)\n", path); - ); - } - - /* read file state */ - stat(File,&stfile); - filesize = stfile.st_size; - Table->filesize=filesize; - - /* read file content */ - if (type && !strcmp(type,"double")) sizeofelement = sizeof(double); - else sizeofelement = sizeof(float); - if (offset && *offset) fseek(hfile, *offset, SEEK_SET); - begin = ftell(hfile); - if (rows && filesize > sizeofelement*columns*rows) - nelements = columns*rows; - else nelements = (long)(filesize/sizeofelement); - if (!nelements || filesize <= *offset) return(0); - data = (double*)malloc(nelements*sizeofelement); - if (!data) { - if(!(Table->quiet>1)) - fprintf(stderr,"Error: allocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); - exit(-1); - } - nelements = fread(data, sizeofelement, nelements, hfile); - - if (!data || !nelements) - { - if(!(Table->quiet>1)) - fprintf(stderr,"Error: reading %ld elements from %s file '%s' (Table_Read_Offset_Binary)\n", nelements, type, File); - exit(-1); - } - Table->begin = begin; - Table->end = ftell(hfile); - if (offset) *offset=Table->end; - fclose(hfile); - - datatmp = (double*)realloc(data, (double)nelements*sizeofelement); - if (!datatmp) { - free(data); - fprintf(stderr,"Error: reallocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); - exit(-1); - } else { - data = datatmp; - } - /* copy file data into Table */ - if (type && !strcmp(type,"double")) Table->data = data; - else { - float *s; - double *dataf; - s = (float*)data; - dataf = (double*)malloc(sizeof(double)*nelements); - if (!dataf) { - fprintf(stderr, "Could not allocate data block of size %ld\n", nelements); - exit(-1); - } - for (i=0; idata = dataf; - } - strncpy(Table->filename, File, 1024); - Table->rows = nelements/columns; - Table->columns = columns; - Table->array_length = 1; - Table->block_number = 1; - - Table_Stat(Table); - - return(nelements); - } /* end Table_Read_Offset_Binary */ - -/******************************************************************************* -* long Table_Read_Handle(t_Table *Table, FILE *fid, int block_number, long max_rows, char *name) -* ACTION: read a single Table from a text file handle (private) -* input Table:pointer to a t_Table structure -* fid: pointer to FILE handle -* block_number: if the file does contain more than one -* data block, then indicates which one to get (from index 1) -* a 0 value means append/catenate all -* max_rows: if non 0, only reads that number of lines -* return initialized single Table t_Table structure containing data, header, ... -* modified Table t_Table structure containing data, header, ... -* number of read elements (-1: error, 0:header only) -* The routine stores any line starting with '#', '%' and ';' into the header -* Other lines are interpreted as numerical data, and stored. -* Data block should be a rectangular matrix or vector. -* Data block may be rebined with Table_Rebin (also sort in ascending order) -*******************************************************************************/ - long Table_Read_Handle(t_Table *Table, FILE *hfile, - long block_number, long max_rows, char *name) - { /* reads all/a data block from 'file' handle and returns a Table structure */ - double *Data = NULL; - double *Datatmp = NULL; - char *Header = NULL; - char *Headertmp = NULL; - long malloc_size = CHAR_BUF_LENGTH; - long malloc_size_h = 4096; - long Rows = 0, Columns = 0; - long count_in_array = 0; - long count_in_header = 0; - long count_invalid = 0; - long block_Current_index = 0; - char flag_End_row_loop = 0; - - if (!Table) return(-1); - Table_Init(Table, 0, 0); - if (name && name[0]!='\0') strncpy(Table->filename, name, 1024); - - if(!hfile) { - fprintf(stderr, "Error: File handle is NULL (Table_Read_Handle).\n"); - return (-1); - } - Header = (char*) calloc(malloc_size_h, sizeof(char)); - Data = (double*)calloc(malloc_size, sizeof(double)); - if ((Header == NULL) || (Data == NULL)) { - fprintf(stderr, "Error: Could not allocate Table and Header (Table_Read_Handle).\n"); - return (-1); - } - - int flag_In_array = 0; - do { /* while (!flag_End_row_loop) */ - char *line=malloc(1024*CHAR_BUF_LENGTH*sizeof(char)); - long back_pos=0; /* ftell start of line */ - - if (!line) { - fprintf(stderr,"Could not allocate line buffer\n"); - exit(-1); - } - back_pos = ftell(hfile); - if (fgets(line, 1024*CHAR_BUF_LENGTH, hfile) != NULL) { /* analyse line */ - /* first skip blank and tabulation characters */ - int i = strspn(line, " \t"); - - /* handle comments: stored in header */ - if (NULL != strchr("#%;/", line[i])) - { /* line is a comment */ - count_in_header += strlen(line); - if (count_in_header >= malloc_size_h) { - /* if succeed and in array : add (and realloc if necessary) */ - malloc_size_h = count_in_header+4096; - char *Headertmp = (char*)realloc(Header, malloc_size_h*sizeof(char)); - if(!Headertmp) { - free(Header); - fprintf(stderr, "Error: Could not reallocate Header (Table_Read_Handle).\n"); - free(Header); - return (-1); - } else { - Header = Headertmp; - } - } - strncat(Header, line, 4096); - flag_In_array=0; - /* exit line and file if passed desired block */ - if (block_number > 0 && block_number == block_Current_index) { - flag_End_row_loop = 1; - } - - /* Continue with next line */ - continue; - } - if (strstr(line, "***")) - { - count_invalid++; - /* Continue with next line */ - continue; - } - - /* get the number of columns splitting line with strtok */ - char *lexeme; - char flag_End_Line = 0; - long block_Num_Columns = 0; - const char seps[] = " ,;\t\n\r"; - - lexeme = strtok(line, seps); - while (!flag_End_Line) { - if ((lexeme != NULL) && (lexeme[0] != '\0')) { - /* reading line: the token is not empty */ - double X; - int count=1; - /* test if we have 'NaN','Inf' */ - if (!strncasecmp(lexeme,"NaN",3)) - X = 0; - else if (!strncasecmp(lexeme,"Inf",3) || !strncasecmp(lexeme,"+Inf",4)) - X = FLT_MAX; - else if (!strncasecmp(lexeme,"-Inf",4)) - X = -FLT_MAX; - else - count = sscanf(lexeme,"%lg",&X); - if (count == 1) { - /* reading line: the token is a number in the line */ - if (!flag_In_array) { - /* reading num: not already in a block: starts a new data block */ - block_Current_index++; - flag_In_array = 1; - block_Num_Columns= 0; - if (block_number > 0) { - /* initialise a new data block */ - Rows = 0; - count_in_array = 0; - } /* else append */ - } - /* reading num: all blocks or selected block */ - if (flag_In_array && (block_number == 0 || - block_number == block_Current_index)) { - /* starting block: already the desired number of rows ? */ - if (block_Num_Columns == 0 && - max_rows > 0 && Rows >= max_rows) { - flag_End_Line = 1; - flag_End_row_loop = 1; - flag_In_array = 0; - /* reposition to begining of line (ignore line) */ - fseek(hfile, back_pos, SEEK_SET); - } else { /* store into data array */ - if (count_in_array >= malloc_size) { - /* realloc data buffer if necessary */ - malloc_size = count_in_array*1.5; - Datatmp = (double*) realloc(Data, malloc_size*sizeof(double)); - if (Datatmp == NULL) { - fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Handle).\n", - malloc_size*sizeof(double)); - free(Data); - return (-1); - } else { - Data=Datatmp; - } - } - if (0 == block_Num_Columns) Rows++; - Data[count_in_array] = X; - count_in_array++; - block_Num_Columns++; - } - } /* reading num: end if flag_In_array */ - } /* end reading num: end if sscanf lexeme -> numerical */ - else { - /* reading line: the token is not numerical in that line. end block */ - if (block_Current_index == block_number) { - flag_End_Line = 1; - flag_End_row_loop = 1; - } else { - flag_In_array = 0; - flag_End_Line = 1; - } - } - } - else { - /* no more tokens in line */ - flag_End_Line = 1; - if (block_Num_Columns > 0) Columns = block_Num_Columns; - } - - // parse next token - lexeme = strtok(NULL, seps); - - } /* while (!flag_End_Line) */ - } /* end: if fgets */ - else flag_End_row_loop = 1; /* else fgets : end of file */ - free(line); - } while (!flag_End_row_loop); /* end while flag_End_row_loop */ - - Table->block_number = block_number; - Table->array_length = 1; - - // shrink header to actual size (plus terminating 0-byte) - if (count_in_header) { - Headertmp = (char*)realloc(Header, count_in_header*sizeof(char) + 1); - if(!Headertmp) { - fprintf(stderr, "Error: Could not shrink Header (Table_Read_Handle).\n"); - free(Header); - return (-1); - } else { - Header = Headertmp; - } - } - Table->header = Header; - - if (count_in_array*Rows*Columns == 0) - { - Table->rows = 0; - Table->columns = 0; - free(Data); - return (0); - } - if (Rows * Columns != count_in_array) - { - fprintf(stderr, "Warning: Read_Table :%s %s Data has %li values that should be %li x %li\n", - (Table->filename[0] != '\0' ? Table->filename : ""), - (!block_number ? " catenated" : ""), - count_in_array, Rows, Columns); - Columns = count_in_array; Rows = 1; - } - if (count_invalid) - { - fprintf(stderr,"Warning: Read_Table :%s %s Data has %li invalid lines (*****). Ignored.\n", - (Table->filename[0] != '\0' ? Table->filename : ""), - (!block_number ? " catenated" : ""), - count_invalid); - } - Datatmp = (double*)realloc(Data, count_in_array*sizeof(double)); - if(!Datatmp) { - fprintf(stderr, "Error: Could reallocate Data block to %li doubles (Table_Read_Handle).\n", count_in_array); - free(Data); - return (-1); - } else { - Data = Datatmp; - } - Table->data = Data; - Table->rows = Rows; - Table->columns = Columns; - - return (count_in_array); - - } /* end Table_Read_Handle */ - -/******************************************************************************* -* long Table_Rebin(t_Table *Table) -* ACTION: rebin a single Table, sorting 1st column in ascending order -* input Table: single table containing data. -* The data block is reallocated in this process -* return updated Table with increasing, evenly spaced first column (index 0) -* number of data elements (-1: error, 0:empty data) -*******************************************************************************/ - long Table_Rebin(t_Table *Table) - { - double new_step=0; - long i; - /* performs linear interpolation on X axis (0-th column) */ - - if (!Table) return(-1); - if (!Table->data - || Table->rows*Table->columns == 0 || !Table->step_x) - return(0); - Table_Stat(Table); /* recompute statitstics and minimal step */ - new_step = Table->step_x; /* minimal step in 1st column */ - - if (!(Table->constantstep)) /* not already evenly spaced */ - { - long Length_Table; - double *New_Table; - - Length_Table = ceil(fabs(Table->max_x - Table->min_x)/new_step)+1; - /*return early if the rebinned table will become too large*/ - if (Length_Table > mcread_table_rebin_maxsize){ - fprintf(stderr,"WARNING: (Table_Rebin): Rebinning table from %s would exceed 1M rows. Skipping.\n", Table->filename); - return(Table->rows*Table->columns); - } - New_Table = (double*)malloc(Length_Table*Table->columns*sizeof(double)); - if (!New_Table) { - fprintf(stderr,"Could not allocate New_Table of size %ld x %ld\n", Length_Table, Table->columns); - exit(-1); - } - for (i=0; i < Length_Table; i++) - { - long j; - double X; - X = Table->min_x + i*new_step; - New_Table[i*Table->columns] = X; - for (j=1; j < Table->columns; j++) - New_Table[i*Table->columns+j] - = Table_Value(*Table, X, j); - } /* end for i */ - - Table->rows = Length_Table; - Table->step_x = new_step; - Table->max_x = Table->min_x + (Length_Table-1)*new_step; - /*max might not be the same anymore - * Use Length_Table -1 since the first and laset rows are the limits of the defined interval.*/ - free(Table->data); - Table->data = New_Table; - Table->constantstep=1; - } /* end else (!constantstep) */ - return (Table->rows*Table->columns); - } /* end Table_Rebin */ - -/******************************************************************************* -* double Table_Index(t_Table Table, long i, long j) -* ACTION: read an element [i,j] of a single Table -* input Table: table containing data -* i : index of row (0:Rows-1) -* j : index of column (0:Columns-1) -* return Value = data[i][j] -* Returns Value from the i-th row, j-th column of Table -* Tests are performed on indexes i,j to avoid errors -*******************************************************************************/ - -#ifndef MIN -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif -#ifndef MAX -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#endif - -double Table_Index(t_Table Table, long i, long j) -{ - long AbsIndex; - - if (Table.rows == 1 || Table.columns == 1) { - /* vector */ - j = MIN(MAX(0, i+j), Table.columns*Table.rows - 1); - i = 0; - } else { - /* matrix */ - i = MIN(MAX(0, i), Table.rows - 1); - j = MIN(MAX(0, j), Table.columns - 1); - } - - /* handle vectors specifically */ - AbsIndex = i*(Table.columns)+j; - - if (Table.data != NULL) - return (Table.data[AbsIndex]); - else - return 0; -} /* end Table_Index */ - -/******************************************************************************* -* void Table_SetElement(t_Table *Table, long i, long j, double value) -* ACTION: set an element [i,j] of a single Table -* input Table: table containing data -* i : index of row (0:Rows-1) -* j : index of column (0:Columns-1) -* value = data[i][j] -* Returns 0 in case of error -* Tests are performed on indexes i,j to avoid errors -*******************************************************************************/ -int Table_SetElement(t_Table *Table, long i, long j, - double value) -{ - long AbsIndex; - - if (Table->rows == 1 || Table->columns == 1) { - /* vector */ - j = MIN(MAX(0, i+j), Table->columns*Table->rows - 1); i=0; - } else { - /* matrix */ - i = MIN(MAX(0, i), Table->rows - 1); - j = MIN(MAX(0, j), Table->columns - 1); - } - - AbsIndex = i*(Table->columns)+j; - if (Table->data != NULL) { - Table->data[AbsIndex] = value; - return 1; - } - - return 0; -} /* end Table_SetElement */ - -/******************************************************************************* -* double Table_Value(t_Table Table, double X, long j) -* ACTION: read column [j] of a single Table at row which 1st column is X -* input Table: table containing data. -* X : data value in the first column (index 0) -* j : index of column from which is extracted the Value (0:Columns-1) -* return Value = data[index for X][j] with linear interpolation -* Returns Value from the j-th column of Table corresponding to the -* X value for the 1st column (index 0) -* Tests are performed (within Table_Index) on indexes i,j to avoid errors -* NOTE: data should rather be monotonic, and evenly sampled. -*******************************************************************************/ -double Table_Value(t_Table Table, double X, long j) -{ - long Index = -1; - double X1=0, Y1=0, X2=0, Y2=0; - double ret=0; - - if (X > Table.max_x) return Table_Index(Table,Table.rows-1 ,j); - if (X < Table.min_x) return Table_Index(Table,0 ,j); - - // Use constant-time lookup when possible - if(Table.constantstep) { - Index = (long)floor( - (X - Table.min_x) / (Table.max_x - Table.min_x) * (Table.rows-1)); - X1 = Table_Index(Table,Index-1,0); - X2 = Table_Index(Table,Index ,0); - } - // Use binary search on large, monotonic tables - else if(Table.monotonic && Table.rows > 100) { - long left = Table.min_x; - long right = Table.max_x; - - while (!((X1 <= X) && (X < X2)) && (right - left > 1)) { - Index = (left + right) / 2; - - X1 = Table_Index(Table, Index-1, 0); - X2 = Table_Index(Table, Index, 0); - - if (X < X1) { - right = Index; - } else { - left = Index; - } - } - } - - // Fall back to linear search, if no-one else has set X1, X2 correctly - if (!((X1 <= X) && (X < X2))) { - /* look for index surrounding X in the table -> Index */ - for (Index=1; Index <= Table.rows-1; Index++) { - X1 = Table_Index(Table, Index-1,0); - X2 = Table_Index(Table, Index ,0); - if ((X1 <= X) && (X < X2)) break; - } /* end for Index */ - } - - Y1 = Table_Index(Table,Index-1, j); - Y2 = Table_Index(Table,Index , j); - -#ifdef OPENACC -#define strcmp(a,b) str_comp(a,b) -#endif - - if (!strcmp(Table.method,"linear")) { - ret = Table_Interp1d(X, X1,Y1, X2,Y2); - } - else if (!strcmp(Table.method,"nearest")) { - ret = Table_Interp1d_nearest(X, X1,Y1, X2,Y2); - } - -#ifdef OPENACC -#ifdef strcmp -#undef strcmp -#endif -#endif - - return ret; -} /* end Table_Value */ - -/******************************************************************************* -* double Table_Value2d(t_Table Table, double X, double Y) -* ACTION: read element [X,Y] of a matrix Table -* input Table: table containing data. -* X : row index, may be non integer -* Y : column index, may be non integer -* return Value = data[index X][index Y] with bi-linear interpolation -* Returns Value for the indices [X,Y] -* Tests are performed (within Table_Index) on indexes i,j to avoid errors -* NOTE: data should rather be monotonic, and evenly sampled. -*******************************************************************************/ -double Table_Value2d(t_Table Table, double X, double Y) - { - long x1,x2,y1,y2; - double z11,z12,z21,z22; - double ret=0; - - x1 = (long)floor(X); - y1 = (long)floor(Y); - - if (x1 > Table.rows-1 || x1 < 0) { - x2 = x1; - } else { - x2 = x1 + 1; - } - - if (y1 > Table.columns-1 || y1 < 0) { - y2 = y1; - } else { - y2 = y1 + 1; - } - - z11 = Table_Index(Table, x1, y1); - - if (y2 != y1) z12=Table_Index(Table, x1, y2); else z12 = z11; - if (x2 != x1) z21=Table_Index(Table, x2, y1); else z21 = z11; - if (y2 != y1) z22=Table_Index(Table, x2, y2); else z22 = z21; - -#ifdef OPENACC -#define strcmp(a,b) str_comp(a,b) -#endif - - if (!strcmp(Table.method,"linear")) - ret = Table_Interp2d(X,Y, x1,y1,x2,y2, z11,z12,z21,z22); -#ifdef OPENACC -#ifdef strcmp -#undef strcmp -#endif -#endif - else { - if (fabs(X-x1) < fabs(X-x2)) { - if (fabs(Y-y1) < fabs(Y-y2)) ret = z11; else ret = z12; - } else { - if (fabs(Y-y1) < fabs(Y-y2)) ret = z21; else ret = z22; - } - } - return ret; - } /* end Table_Value2d */ - - -/******************************************************************************* -* void Table_Free(t_Table *Table) -* ACTION: free a single Table. First Call Table_File_list_gc. If this returns -* non-zero it means there are more refernces to the table, and so the table -* should not bee freed. -* return: empty Table -*******************************************************************************/ - void Table_Free(t_Table *Table) - { - if( !Table_File_List_gc(Table) ){ - return; - } - if (!Table) return; - if (Table->data != NULL) free(Table->data); - if (Table->header != NULL) free(Table->header); - Table->data = NULL; - Table->header = NULL; - } /* end Table_Free */ - -/****************************************************************************** -* void Table_Info(t_Table Table) -* ACTION: print informations about a single Table -*******************************************************************************/ - long Table_Info(t_Table Table) - { - char buffer[256]; - long ret=0; - - if (!Table.block_number) strcpy(buffer, "catenated"); - else sprintf(buffer, "block %li", Table.block_number); - printf("Table from file '%s' (%s)", - Table.filename[0] != '\0' ? Table.filename : "", buffer); - if ((Table.data != NULL) && (Table.rows*Table.columns)) - { - printf(" is %li x %li ", Table.rows, Table.columns); - if (Table.rows*Table.columns > 1) - printf("(x=%g:%g)", Table.min_x, Table.max_x); - else printf("(x=%g) ", Table.min_x); - ret = Table.rows*Table.columns; - if (Table.monotonic) printf(", monotonic"); - if (Table.constantstep) printf(", constant step"); - printf(". interpolation: %s\n", Table.method); - } - else printf(" is empty.\n"); - - if (Table.header && strlen(Table.header)) { - char *header; - int i; - header = malloc(80); - if (!header) return(ret); - for (i=0; i<80; header[i++]=0); - strncpy(header, Table.header, 75); - if (strlen(Table.header) > 75) { - strcat( header, " ..."); - } - for (i=0; iheader = NULL; - Table->filename[0]= '\0'; - Table->filesize= 0; - Table->min_x = 0; - Table->max_x = 0; - Table->step_x = 0; - Table->block_number = 0; - Table->array_length = 0; - Table->monotonic = 0; - Table->constantstep = 0; - Table->begin = 0; - Table->end = 0; - strcpy(Table->method,"linear"); - - if (rows*columns >= 1) { - data = (double*)malloc(rows*columns*sizeof(double)); - if (data) for (i=0; i < rows*columns; data[i++]=0); - else { - if(Table->quiet<2) - fprintf(stderr,"Error: allocating %ld double elements." - "Too big (Table_Init).\n", rows*columns); - rows = columns = 0; - } - } - Table->rows = (rows >= 1 ? rows : 0); - Table->columns = (columns >= 1 ? columns : 0); - Table->data = data; - return(Table->rows*Table->columns); -} /* end Table_Init */ - -/****************************************************************************** -* long Table_Write(t_Table Table, char *file, x1,x2, y1,y2) -* ACTION: write a Table to disk (ascii). -* when x1=x2=0 or y1=y2=0, the table default limits are used. -* return: 0=all is fine, non-0: error -*******************************************************************************/ -MCDETECTOR Table_Write(t_Table Table, char *file, char *xl, char *yl, - double x1, double x2, double y1, double y2) -{ - MCDETECTOR detector; - - if ((Table.data == NULL) && (Table.rows*Table.columns)) { - detector.m = 0; - detector.xmin = 0; - detector.xmax = 0; - detector.ymin = 0; - detector.ymax = 0; - detector.zmin = 0; - detector.zmax = 0; - detector.intensity = 0; - detector.error = 0; - detector.events = 0; - detector.min = 0; - detector.max = 0; - detector.mean = 0; - detector.centerX = 0; - detector.halfwidthX = 0; - detector.centerY = 0; - detector.halfwidthY = 0; - detector.rank = 0; - detector.istransposed = 0; - detector.n = 0; - detector.p = 0; - detector.date_l = 0; - detector.p0 = NULL; - detector.p1 = NULL; - detector.p2 = NULL; - return(detector); /* Table is empty - nothing to do */ - } - if (!x1 && !x2) { - x1 = Table.min_x; - x2 = Table.max_x; - } - if (!y1 && !y2) { - y1 = 1; - y2 = Table.columns; - } - - /* transfer content of the Table into a 2D detector */ - Coords coords = { 0, 0, 0}; - Rotation rot; - rot_set_rotation(rot, 0, 0, 0); - - if (Table.rows == 1 || Table.columns == 1) { - detector = mcdetector_out_1D(Table.filename, - xl ? xl : "", yl ? yl : "", - "x", x1, x2, - Table.rows * Table.columns, - NULL, Table.data, NULL, - file, file, coords, rot,9999); - } else { - detector = mcdetector_out_2D(Table.filename, - xl ? xl : "", yl ? yl : "", - x1, x2, y1, y2, - Table.rows, Table.columns, - NULL, Table.data, NULL, - file, file, coords, rot,9999); - } - return(detector); -} - -/****************************************************************************** -* void Table_Stat(t_Table *Table) -* ACTION: computes min/max/mean step of 1st column for a single table (private) -* return: updated Table -*******************************************************************************/ - static void Table_Stat(t_Table *Table) - { - long i; - double max_x, min_x; - double row=1; - char monotonic=1; - char constantstep=1; - double step=0; - long n; - - if (!Table) return; - if (!Table->rows || !Table->columns) return; - if (Table->rows == 1) row=0; // single row - max_x = -FLT_MAX; - min_x = FLT_MAX; - n = (row ? Table->rows : Table->columns); - /* get min and max of first column/vector */ - for (i=0; i < n; i++) - { - double X; - X = (row ? Table_Index(*Table,i ,0) - : Table_Index(*Table,0, i)); - if (X < min_x) min_x = X; - if (X > max_x) max_x = X; - } /* for */ - - /* test for monotonicity and constant step if the table is an XY or single vector */ - if (n > 1) { - /* mean step */ - step = (max_x - min_x)/(n-1); - /* now test if table is monotonic on first column, and get minimal step size */ - for (i=0; i < n-1; i++) { - double X, diff;; - X = (row ? Table_Index(*Table,i ,0) - : Table_Index(*Table,0, i)); - diff = (row ? Table_Index(*Table,i+1,0) - : Table_Index(*Table,0, i+1)) - X; - if (diff && fabs(diff) < fabs(step)) step = diff; - /* change sign ? */ - if ((max_x - min_x)*diff < 0 && monotonic) - monotonic = 0; - } /* end for */ - - /* now test if steps are constant within READ_TABLE_STEPTOL */ - if(!step){ - /*means there's a disconitnuity -> not constantstep*/ - constantstep=0; - }else if (monotonic) { - for (i=0; i < n-1; i++) { - double X, diff; - X = (row ? Table_Index(*Table,i ,0) - : Table_Index(*Table,0, i)); - diff = (row ? Table_Index(*Table,i+1,0) - : Table_Index(*Table,0, i+1)) - X; - if ( fabs(step)*(1+READ_TABLE_STEPTOL) < fabs(diff) || - fabs(diff) < fabs(step)*(1-READ_TABLE_STEPTOL) ) - { constantstep = 0; break; } - } - } - - } - Table->step_x= step; - Table->max_x = max_x; - Table->min_x = min_x; - Table->monotonic = monotonic; - Table->constantstep = constantstep; - } /* end Table_Stat */ - -/****************************************************************************** -* t_Table *Table_Read_Array(char *File, long *blocks) -* ACTION: read as many data blocks as available, iteratively from file -* return: initialized t_Table array, last element is an empty Table. -* the number of extracted blocks in non NULL pointer *blocks -*******************************************************************************/ - t_Table *Table_Read_Array(char *File, long *blocks) - { - t_Table *Table_Array = NULL; - t_Table *Table_Arraytmp = NULL; - long offset=0; - long block_number=0; - long allocated=256; - long nelements=1; - - /* first allocate an initial empty t_Table array */ - Table_Array = (t_Table *)malloc(allocated*sizeof(t_Table)); - if (!Table_Array) { - fprintf(stderr, "Error: Can not allocate memory %zi (Table_Read_Array).\n", - allocated*sizeof(t_Table)); - *blocks = 0; - return (NULL); - } - - while (nelements > 0) - { - t_Table Table; - - /* if ok, set t_Table block number else exit loop */ - block_number++; - Table.block_number = block_number; - - /* access file at offset and get following block. Block number is from the set offset - * hence the hardcoded 1 - i.e. the next block counted from offset.*/ - nelements = Table_Read_Offset(&Table, File, 1, &offset,0); - /*if the block is empty - don't store it*/ - if (nelements>0){ - /* if t_Table array is not long enough, expand and realocate */ - if (block_number >= allocated-1) { - allocated += 256; - Table_Arraytmp = (t_Table *)realloc(Table_Array, - allocated*sizeof(t_Table)); - if (!Table_Arraytmp) { - fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Array).\n", - allocated*sizeof(t_Table)); - free(Table_Array); - *blocks = 0; - return (NULL); - } else { - Table_Array = Table_Arraytmp; - } - } - /* store it into t_Table array */ - //snprintf(Table.filename, 1024, "%s#%li", File, block_number-1); - Table_Array[block_number-1] = Table; - } - /* continues until we find an empty block */ - } - /* send back number of extracted blocks */ - if (blocks) *blocks = block_number-1; - - /* now store total number of elements in Table array */ - for (offset=0; offset < block_number; - Table_Array[offset++].array_length = block_number-1); - - return(Table_Array); - } /* end Table_Read_Array */ -/******************************************************************************* -* void Table_Free_Array(t_Table *Table) -* ACTION: free a Table array -*******************************************************************************/ - void Table_Free_Array(t_Table *Table) - { - long index; - if (!Table) return; - for (index=0;index < Table[0].array_length; index++){ - Table_Free(&Table[index]); - } - free(Table); - } /* end Table_Free_Array */ - -/****************************************************************************** -* long Table_Info_Array(t_Table *Table) -* ACTION: print informations about a Table array -* return: number of elements in the Table array -*******************************************************************************/ - long Table_Info_Array(t_Table *Table) - { - long index=0; - - if (!Table) return(-1); - while (index < Table[index].array_length - && (Table[index].data || Table[index].header) - && (Table[index].rows*Table[index].columns) ) { - Table_Info(Table[index]); - index++; - } - printf("This Table array contains %li elements\n", index); - return(index); - } /* end Table_Info_Array */ - -/****************************************************************************** -* char **Table_ParseHeader(char *header, symbol1, symbol2, ..., NULL) -* ACTION: search for char* symbols in header and return their value or NULL -* the search is not case sensitive. -* Last argument MUST be NULL -* return: array of char* with line following each symbol, or NULL if not found -*******************************************************************************/ -#ifndef MyNL_ARGMAX -#define MyNL_ARGMAX 50 -#endif - -char **Table_ParseHeader_backend(char *header, ...){ - va_list ap; - char exit_flag=0; - int counter =0; - char **ret =NULL; - if (!header || header[0]=='\0') return(NULL); - - ret = (char**)calloc(MyNL_ARGMAX, sizeof(char*)); - if (!ret) { - printf("Table_ParseHeader: Cannot allocate %i values array for Parser (Table_ParseHeader).\n", - MyNL_ARGMAX); - return(NULL); - } - for (counter=0; counter < MyNL_ARGMAX; ret[counter++] = NULL); - counter=0; - - va_start(ap, header); - while(!exit_flag && counter < MyNL_ARGMAX-1) - { - char *arg_char=NULL; - char *pos =NULL; - /* get variable argument value as a char */ - arg_char = va_arg(ap, char *); - if (!arg_char || arg_char[0]=='\0'){ - exit_flag = 1; break; - } - /* search for the symbol in the header */ - pos = (char*)strcasestr(header, arg_char); - if (pos) { - char *eol_pos; - eol_pos = strchr(pos+strlen(arg_char), '\n'); - if (!eol_pos) - eol_pos = strchr(pos+strlen(arg_char), '\r'); - if (!eol_pos) - eol_pos = pos+strlen(pos)-1; - ret[counter] = (char*)malloc(eol_pos - pos); - if (!ret[counter]) { - printf("Table_ParseHeader: Cannot allocate value[%i] array for Parser searching for %s (Table_ParseHeader).\n", - counter, arg_char); - exit_flag = 1; break; - } - strncpy(ret[counter], pos+strlen(arg_char), eol_pos - pos - strlen(arg_char)); - ret[counter][eol_pos - pos - strlen(arg_char)]='\0'; - } - counter++; - } - va_end(ap); - return(ret); -} /* Table_ParseHeader */ - -/****************************************************************************** -* double Table_Interp1d(x, x1, y1, x2, y2) -* ACTION: interpolates linearly at x between y1=f(x1) and y2=f(x2) -* return: y=f(x) value -*******************************************************************************/ -double Table_Interp1d(double x, - double x1, double y1, - double x2, double y2) -{ - double slope; - if (x2 == x1) return (y1+y2)/2; - if (y1 == y2) return y1; - slope = (y2 - y1)/(x2 - x1); - return y1+slope*(x - x1); -} /* Table_Interp1d */ - -/****************************************************************************** -* double Table_Interp1d_nearest(x, x1, y1, x2, y2) -* ACTION: table lookup with nearest method at x between y1=f(x1) and y2=f(x2) -* return: y=f(x) value -*******************************************************************************/ -double Table_Interp1d_nearest(double x, - double x1, double y1, - double x2, double y2) -{ - if (fabs(x-x1) < fabs(x-x2)) return (y1); - else return(y2); -} /* Table_Interp1d_nearest */ - -/****************************************************************************** -* double Table_Interp2d(x,y, x1,y1, x2,y2, z11,z12,z21,z22) -* ACTION: interpolates bi-linearly at (x,y) between z1=f(x1,y1) and z2=f(x2,y2) -* return: z=f(x,y) value -* x,y | x1 x2 -* ---------------- -* y1 | z11 z21 -* y2 | z12 z22 -*******************************************************************************/ -double Table_Interp2d(double x, double y, - double x1, double y1, - double x2, double y2, - double z11, double z12, double z21, double z22) -{ - double ratio_x, ratio_y; - if (x2 == x1) return Table_Interp1d(y, y1,z11, y2,z12); - if (y1 == y2) return Table_Interp1d(x, x1,z11, x2,z21); - - ratio_y = (y - y1)/(y2 - y1); - ratio_x = (x - x1)/(x2 - x1); - return (1-ratio_x)*(1-ratio_y)*z11 + ratio_x*(1-ratio_y)*z21 - + ratio_x*ratio_y*z22 + (1-ratio_x)*ratio_y*z12; -} /* Table_Interp2d */ - -/* end of read_table-lib.c */ -#endif // READ_TABLE_LIB_C - - -/* Shared user declarations for all components types 'Guide_four_side'. */ - - - void - TEST_INPUT (char name[20], char compname[256]) { - fprintf (stderr, "Component: %s (Guide_four_side) %s should \n", compname, name); - fprintf (stderr, " NOT be negative \n"); - fprintf (stderr, " (for negative values use the global guide position !) \n"); - exit (-1); - }; - - void - TEST_INPUT_1 (char name[20], char compname[256]) { - fprintf (stderr, "Component: %s (Guide_four_side) %s must \n", compname, name); - fprintf (stderr, " be -1 (transperent) or \n"); - fprintf (stderr, " be 0 (absorbing) or \n"); - fprintf (stderr, " be > 0 (reflecting) \n"); - exit (-1); - }; - - void - TEST_INPUT_2 (char name[20], char compname[256]) { - fprintf (stderr, "Component: %s (Guide_four_side) %s can \n", compname, name); - fprintf (stderr, " NOT be negative \n"); - exit (-1); - }; - - void - TEST_INPUT_3 (char name[20], char compname[256]) { - fprintf (stderr, "Component: %s (Guide_four_side) %sr must \n", compname, name); - fprintf (stderr, " be positive\n"); - exit (-1); - }; - - void - TEST_INPUT_4 (char name[20], char name1[20], double inputname, double inputname1, char compname[256]) { - fprintf (stderr, "Component: %s (Guide_four_side) \n", compname); - fprintf (stderr, " %s have to be bigger or equal %s \n", name, name1); - printf (" %s = %f \n", name, inputname); - printf (" %s = %f \n", name1, inputname1); - fprintf (stderr, " check curve parameter and wallthicknesses! \n"); - exit (-1); - }; - - /* function to calculate the needed parameters for an elliptic wall*/ - - void - ELLIPSE (double w1, double length, double lin, double lout, double wallthick, double* a, double* b, double* a2, double* b2, double* z0, double* w2, double* awt, - double* a2wt, double* bwt, double* b2wt, double* w2wt, double* w1wt) { - double DIV1, lb, u1, u2, u1wt, u2wt, dx, dz; - lb = lin + length + lout; /* lenght between the two focal points of the wall */ - *z0 = (lin - length - lout) / 2.0; - u1 = sqrt ((lin * lin) + (w1 * w1)); /* length between entrance focal point and starting point of the wall (INNER side)*/ - u2 = sqrt ((w1 * w1) + ((length + lout) * (length + lout))); /* length between exit focal point and end point of the wall (INNER side) */ - *a = (u1 + u2) / 2.0; /* long half axis a of the ellipse (INNER side)*/ - *a2 = *a * (*a); /* square of the long axis a (INNER side)*/ - *b = sqrt (*a2 - (lb * (lb) / 4.0)); /* short half axis b of the ellipse (INNER side)*/ - *b2 = *b * (*b); /* square of short half axis b of the ellipse (INNER side)*/ - DIV1 = sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2))); /* help variable to calculated the exit width (INNER side)*/ - *w2 = *b * (DIV1); /* exit width (INNER side)*/ - if (length < (lb) / 2 - lout) { /* if the maximum opening of the guide is smaller than the small half axis b, the OUTER side is defined by: */ - dx = wallthick * sin (atan (*a2 * w1 / (*b2 * (*z0)))); - dz = wallthick * cos (atan (*a2 * w1 / (*b2 * (*z0)))); - u1wt = sqrt (((lin + dz) * (lin + dz)) + ((w1 + dx) * (w1 + dx))); /* length between entrance focal point and starting point of the wall (OUTER side)*/ - u2wt = sqrt (((w1 + dx) * (w1 + dx)) - + ((length + lout - dz) * (length + lout - dz))); /* length between exit focal point and end point of the wall (OUTER side) */ - *awt = (u1wt + u2wt) / 2.0; /* long half axis a of the ellipse (OUTER side)*/ - *a2wt = *awt * (*awt); /* square of the long axis a (OUTER side)*/ - *bwt = sqrt (*a2wt - (lb * lb / 4.0)); /* short half axis b of the ellipse (OUTER side)*/ - *b2wt = *bwt * (*bwt); /* square of short half axis b of the ellipse (OUTER side)*/ - *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ - *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout - length) * (lb / 2.0 - lout - length) / (*a2wt))); /* entrance width for OUTER side */ - } else { /* if the maximum opening of the guide is the small half axis b the OUTER wall is defined by:*/ - *bwt = *b + wallthick; /* short half axis b of the ellipse (OUTER side)*/ - *b2wt = *bwt * (*bwt); /* square of the long axis a (OUTER side)*/ - *awt = sqrt (*b2wt + (lb * lb / 4.0)); /* long half axis a of the ellipse (OUTER side)*/ - *a2wt = *b2wt + (lb * lb / 4.0); /* square of short half axis b of the ellipse (OUTER side)*/ - *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ - *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lin) * (lb / 2.0 - lin) / (*a2wt))); /* entrance width for OUTER side */ - } - } - - /* function to calculate the needed parameters for a parabolical focusing wall*/ - - void - PARABEL_FOCUS (double w1, double length, double lout, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, - double* pawt, double* w2wt, double* w1wt) { - double DIV1, DIV1wt, dx, dz; - DIV1 = (length + lout) * (length + lout); /* help variable to calculate the curve parameters (INNER side) */ - *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ - *w2 = sqrt (*p2para * (lout + *p2para / 4.0)); /* exit width (INNER side) */ - *pb = length + lout + *p2para / 4.0; /* parameter b for parabolic equation to define the wall (INNER side)*/ - *pa = 1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ - dx = wallthick - * sin ( - atan (w1 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ - dz = wallthick - * cos ( - atan (w1 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ - DIV1wt = (length + lout - dz) * (length + lout - dz); /* help variable to calculate the curve parameters (OUTER side) */ - *p2parawt = 2.0 * (sqrt (DIV1wt + ((w1 + dx) * (w1 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ - *pbwt = length + lout + *p2parawt / 4.0; /* parameter b for parabolic equation to define the wall (OUTER side)*/ - *pawt = 1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ - *w2wt = sqrt (*p2parawt * (lout + *p2parawt / 4.0)); /* exit width (OUTER side) */ - *w1wt = sqrt (*p2parawt * (lout + length + *p2parawt / 4.0)); /* entrance width (OUTER side) */ - } - - /* function to calculate the needed parameters for a parabolical defocusing wall*/ - - void - PARABEL_DEFOCUS (double w1, double length, double lin, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, - double* pawt, double* w2wt, double* w1wt) { - double DIV1, DIV1wt, dx, dz; - DIV1 = lin * lin; /* help variable to calculate the curve parameters (INNER side) */ - *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ - *w2 = sqrt (*p2para * (length + lin + *p2para / 4.0)); /* exit width (INNER side) */ - *pb = -(lin + *p2para / 4.0); /* parameter b for parabolic equation to define the wall (INNER side)*/ - *pa = -1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ - dx = wallthick - * sin ( - atan (-*w2 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ - dz = wallthick - * cos ( - atan (-*w2 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ - DIV1wt = (lin + length - dz) * (lin + length - dz); /* help variable to calculate the curve parameters (OUTER side) */ - *p2parawt = 2.0 * (sqrt (DIV1wt + ((*w2 + dx) * (*w2 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ - *w1wt = sqrt (*p2parawt * (lin + *p2parawt / 4.0)); /* entrance width for right focusing parabolic wall (OUTER side) */ - *w2wt = sqrt (*p2parawt * (lin + length + *p2parawt / 4.0)); /* exit width (OUTER side) */ - *pbwt = -(lin + *p2parawt / 4.0); /* parameter b for parabolic equation to define the wall (OUTER side)*/ - *pawt = -1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ - } - - /* function to calculate the needed parameters for a linear wall*/ - - void - LINEAR (double w1, double w2, double length, double wallthick, double* w1wt, double* w2wt) { - *w1wt = w1 + wallthick / (cos (atan ((w1 - w2) / length))); /* entrance width (OUTER side) */ - *w2wt = w2 + wallthick / (cos (atan ((w1 - w2) / length))); /* exit width (OUTER side) */ - } - - /* function to calculate the intersection time with a linear wall at an negative axis*/ - - void - TIME_LINEAR (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { - double anstieg; - anstieg = (-w2 + w1) / length; - *t2 = (anstieg * zin - w1 - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (INNER side)*/ - *t2wt = (anstieg * zin - w1wt - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (OUTER side)*/ - if (*t2 < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ - *t2 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall - tunneling.*/ - if (*t2wt < 1e-15) /* see comments above*/ - *t2wt = t1in + 2.0; - } - - /* function to calculate the intersection time with a linear wall at an positive axis*/ - - void - TIME_LINEAR_1 (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { - double anstieg; - anstieg = (w2 - w1) / length; - *t2 = (anstieg * zin + w1 - xin) / (vxin1 - anstieg * vzin1); - *t2wt = (anstieg * zin + w1wt - xin) / (vxin1 - anstieg * vzin1); - if (*t2 < 1e-15) - *t2 = t1in + 2.0; - if (*t2wt < 1e-15) - *t2wt = t1in + 2.0; - } - - /* function to calculate the intersection time with an elliptical wall at a negative axis*/ - - void - TIME_ELLIPSE (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, - double* t2w1wt) { - /* solving the elliptic equation in respect to z and the straight neutron trajectoty, only two z values possible! */ - - double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; - - m = vxin / vzin; /* m parameter of the neutron trajectory*/ - n = -m * zin + xin; /* n parameter of the neutron trajectory */ - p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); /* p parameter of quadratic equation for calulation the z component of the intersection point with - respect to the neutron trajectory (INNER side)*/ - q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); /* q parameter of quadratic equation for calulation the z component of the intersection point - with respect to the neutron trajectory (INNER side)*/ - if ((p * p / 4.0) - q < 0) { - *t2w1 = t1in + 2.0; /* if the neutron never touch the ellipse the time is set to be bigger than the time (t1) needed to pass the component */ - } else { - z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); /* first solution for z (INNER side)*/ - z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); /* second solution for z (INNER side)*/ - *t2w1 = (z1 - zin) / vzin; /* interaction time for first z value (INNER side)*/ - t2w2 = (z2 - zin) / vzin; /* interactime time for second z value (INNER side)*/ - if (*t2w1 - < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ - *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall - tunneling.*/ - if (t2w2 < 1e-15) /* see comments above*/ - t2w2 = t1in + 2.0; - if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ - *t2w1 = t2w2; - xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ - if (xintersec > 0) /* for the right wall x-coordinate of the intersection point have to be negative */ - *t2w1 = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ - } - pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); /* p parameter of quadratic equation for calulation the z component of the intersection point - with respect to the neutron trajectory (OUTER side)*/ - qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); /* q parameter of quadratic equation for calulation the z component of the - intersection point with respect to the neutron trajectory (OUTER side)*/ - if ((pwt * pwt / 4.0) - qwt < 0) { - *t2w1wt = t1in + 2.0; /* if the neutron never touch the ellipse the time is set bigger than need to pass the component */ - } else { - z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); /* first solution for z (OUTER side) */ - z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); /* second solution for z (OUTER side)*/ - *t2w1wt = (z1wt - zin) / vzin; /* interaction time for first z value (OUTER side)*/ - t2w2wt = (z2wt - zin) / vzin; /* interactime time for second z value (OUTER side)*/ - if (*t2w1wt - < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ - *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a - wall tunneling.*/ - if (t2w2wt < 1e-15) /* see comments above*/ - t2w2wt = t1in + 2.0; - if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER side)*/ - *t2w1wt = t2w2wt; - xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ - if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ - *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ - } - }; - - /* function to calculate the intersection time with an elliptical wall at a positive axis*/ - - void - TIME_ELLIPSE_1 (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, - double* t2w1wt) { - double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; - - m = vxin / vzin; - n = -m * zin + xin; - p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); - q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); - if ((p * p / 4.0) - q < 0) { - *t2w1 = t1in + 2.0; - } else { - z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); - z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); - *t2w1 = (z1 - zin) / vzin; - t2w2 = (z2 - zin) / vzin; - if (*t2w1 < 1e-15) - *t2w1 = t1in + 2.0; - if (t2w2 < 1e-15) - t2w2 = t1in + 2.0; - if (t2w2 < *t2w1) - *t2w1 = t2w2; - xintersec = m * (vzin * (*t2w1) + zin) + n; - if (xintersec < 0) { - *t2w1 = t1in + 2.0; - } - } - pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); - qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); - if ((pwt * pwt / 4.0) - qwt < 0) { - *t2w1wt = t1in + 2.0; - } else { - z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); - z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); - *t2w1wt = (z1wt - zin) / vzin; - t2w2wt = (z2wt - zin) / vzin; - if (*t2w1wt < 1e-15) - *t2w1wt = t1in + 2.0; - if (t2w2wt < 1e-15) - t2w2wt = t1in + 2.0; - if (t2w2wt < *t2w1wt) - *t2w1wt = t2w2wt; - xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; - if (xintersecwt < 0) - *t2w1wt = t1in + 2.0; - } - } - - /* function to calculate the intersection time with a parabolical wall at an negative axis*/ - - void - TIME_PARABEL (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { - double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; - - m = vxin / vzin; /* m parameter of the neutron trajectory*/ - n = -m * zin + xin; /* n parameter of the neutron trajectory */ - p = (2.0 * m * n * pa + 1.0) / (pa * m * m); /* p parameter of quadratic equation (INNER side) */ - q = n * n / (m * m) - pb / (pa * m * m); /* q parameter of quadratic equation (INNER side) */ - if (q > 0 - && q > (p * p - / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) the time is set to t1+2.0 */ - *t2w1 = t1in + 2.0; - } else { - if (vxin == 0) /* in the special case of vx = 0 is x a constant */ - { - if (xin < 0) { /* only neutron with a negativ x-component can hit the RIGHT wall (INNER side)*/ - *t2w1 = (pb - pa * xin * xin - zin) / vzin; - } else { - *t2w1 = t1in + 2.0; /* the time solution for neutron with a positive x component is set to a time long behind the exit of the guide */ - /* (means will not scatter with the right wall)*/ - } - } else { /* if vx is not zero and x is a real variable*/ - z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); /* first z-solution for intersection (INNER side)*/ - z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); /* second z-solution for intersection (INNER side)*/ - *t2w1 = (z1 - zin) / vzin; /* first time solution (INNER side)*/ - t2w2 = (z2 - zin) / vzin; /* second time solution (INNER side)*/ - if (*t2w1 - < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ - *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a - wall tunneling.*/ - if (t2w2 < 1e-15) /* see comments above*/ - t2w2 = t1in + 2.0; - if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ - *t2w1 = t2w2; - } - xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ - if (xintersec > 0) { /* the x-coordinate of the intersection point have to be negative */ - *t2w1 = t1in + 2.0; - } /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ - } - pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); /* p parameter of quadratic equation (OUTER side)*/ - qwt = n * n / (m * m) - pbwt / (pawt * m * m); /* q parameter of quadratic equation (OUTER side)*/ - if (qwt > 0 && qwt > (pwt * pwt / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) and the - time is set to t1+2.0 */ - *t2w1wt = t1in + 2.0; - } else { - if (vxin == 0) /* in the special case of vx = 0 is x a constant */ - { - if (xin < 0) { - *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; /* only neutron with a negativ x-component can hit the RIGHT wall (OUTER wall)*/ - } else { - *t2w1wt = t1in + 2.0; - } - } else { /* if vx is not zero */ - z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); /* first z-solution for intersection (OUTER side)*/ - z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); /* second z-solution for intersection (OUTER side)*/ - *t2w1wt = (z1wt - zin) / vzin; /* first time solution (OUTER side)*/ - t2w2wt = (z2wt - zin) / vzin; /* second time solution (OUTER side)*/ - if (*t2w1wt - < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ - *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a - wall tunneling.*/ - if (t2w2wt < 1e-15) /* see comments above*/ - t2w2wt = t1in + 2.0; - if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER wall)*/ - *t2w1wt = t2w2wt; - } - xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ - if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ - *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ - } - }; - - /* function to calculate the intersection time with a parabolical wall at an positive axis*/ - - void - TIME_PARABEL_1 (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { - double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; - - m = vxin / vzin; - n = -m * zin + xin; - p = (2.0 * m * n * pa + 1.0) / (pa * m * m); - q = n * n / (m * m) - pb / (pa * m * m); - if (q > 0 && q > (p * p / 4)) { - *t2w1 = t1in + 2.0; - } else { - if (vxin == 0) { - if (xin < 0) { - *t2w1 = (pb - pa * xin * xin - zin) / vzin; - } else { - *t2w1 = t1in + 2.0; - } - } else { - z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); - z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); - *t2w1 = (z1 - zin) / vzin; - t2w2 = (z2 - zin) / vzin; - if (*t2w1 < 1e-15) - *t2w1 = t1in + 2.0; - if (t2w2 < 1e-15) - t2w2 = t1in + 2.0; - if (t2w2 < *t2w1) - *t2w1 = t2w2; - } - xintersec = m * (vzin * (*t2w1) + zin) + n; - if (xintersec < 0) { - *t2w1 = t1in + 2.0; - } - } - pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); - qwt = n * n / (m * m) - pbwt / (pawt * m * m); - if (qwt > 0 && qwt > (pwt * pwt / 4)) { - *t2w1wt = t1in + 2.0; - } else { - if (vxin == 0) { - if (xin < 0) { - *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; - } else { - *t2w1wt = t1in + 2.0; - } - } else { - z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); - z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); - *t2w1wt = (z1wt - zin) / vzin; - t2w2wt = (z2wt - zin) / vzin; - if (*t2w1wt < 1e-15) - *t2w1wt = t1in + 2.0; - if (t2w2wt < 1e-15) - t2w2wt = t1in + 2.0; - if (t2w2wt < *t2w1wt) - *t2w1wt = t2w2wt; - } - xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; - if (xintersecwt < 0) - *t2w1wt = t1in + 2.0; - } - }; - - /* test if the left or right scattered neutron in the upper and lower limits defined by TOP und BOTTOM walls */ - - void - TEST_UP_DOWN (double t, double vzin, double zin, double vyin, double yin, double length, double linhdin, double louthdin, double linhuin, double louthuin, - double h2din, double h1din, double h2uin, double h1uin, double bhdin, double z0hdin, double a2hdin, double bhuin, double z0huin, double a2huin, - double pbhdin, double pahdin, double pbhuin, double pahuin, double* ylimitd, double* ylimitu, double* ytest) { - if (linhdin == 0 && louthdin == 0) { - *ylimitd - = (-h2din + h1din) / length * (vzin * t + zin) - h1din; /* calculation of the lower y-limit given by a linear bottom wall and the interaction time*/ - } else { - if (linhdin != 0 && louthdin != 0) { - *ylimitd = -bhdin - * sqrt (1 - - ((z0hdin + (vzin * t + zin)) * (z0hdin + (vzin * t + zin))) - / a2hdin); /* calculation of the lower y-limit given by a elliptic bottom wall and the interaction time*/ - } else { - *ylimitd = -sqrt (((vzin * t + zin) - pbhdin) / -pahdin); /* calculation of the lower y-limit given by a parabolic bottom wall and the interaction time*/ - } - } - if (linhuin == 0 && louthuin == 0) { - *ylimitu = (h2uin - h1uin) / length * (vzin * t + zin) + h1uin; /* calculation of the upper y-limit given by a linear top wall and the interaction time*/ - } else { - if (linhuin != 0 && louthuin != 0) { - *ylimitu = bhuin - * sqrt (1 - - ((z0huin + (vzin * t + zin)) * (z0huin + (vzin * t + zin))) - / a2huin); /* calculation of the upper y-limit given by a elliptic top wall and the interaction time*/ - } else { - *ylimitu = sqrt (((vzin * t + zin) - pbhuin) / -pahuin); /* calculation of the upper y-limit given by a parabolic top wall and the interaction time*/ - } - } - *ytest = vyin * t + yin; /* calculation of the y coordinate of the neutron at the interaction time */ - }; - - /* test if the up or down scattered neutron in the right and left limits defined by RIGHT und LEFT walls */ - - void - TEST_LEFT_RIGHT (double t, double vzin, double zin, double vxin, double xin, double length, double linwrin, double loutwrin, double linwlin, double loutwlin, - double w2rin, double w1rin, double w2lin, double w1lin, double bwrin, double z0wrin, double a2wrin, double bwlin, double z0wlin, double a2wlin, - double pbwrin, double pawrin, double pbwlin, double pawlin, double* xlimitr, double* xlimitl, double* xtest) { - if (linwrin == 0 && loutwrin == 0) { - *xlimitr = (-w2rin + w1rin) / length * (vzin * t + zin) - w1rin; - } else { - if (linwrin != 0 && loutwrin != 0) { - *xlimitr = -bwrin * sqrt (1 - ((z0wrin + (vzin * t + zin)) * (z0wrin + (vzin * t + zin))) / a2wrin); - } else { - *xlimitr = -sqrt (((vzin * t + zin) - pbwrin) / -pawrin); - } - } - if (linwlin == 0 && loutwlin == 0) { - *xlimitl = (w2lin - w1lin) / length * (vzin * t + zin) + w1lin; - } else { - if (linwlin != 0 && loutwlin != 0) { - *xlimitl = bwlin * sqrt (1 - ((z0wlin + (vzin * t + zin)) * (z0wlin + (vzin * t + zin))) / a2wlin); - } else { - *xlimitl = sqrt (((vzin * t + zin) - pbwlin) / -pawlin); - } - } - *xtest = vxin * t + xin; - }; - -/* Shared user declarations for all components types 'Slit'. */ - void - slit_print_if (int condition, char* level, char* message, char* component) { - if (condition) - fprintf (stderr, "Slit: %s: %s: %s\n", component, level, message); - } - void - slit_error_if (int condition, char* message, char* component) { - slit_print_if (condition, "Error", message, component); - if (condition) - exit (-1); - } - void - slit_warning_if (int condition, char* message, char* component) { - slit_print_if (condition, "Warning", message, component); - } - -/* Shared user declarations for all components types 'Graphite_Diffuser'. */ - double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ -{ - double rand1, rand2; - rand1 = rand01();// / ((double) RAND_MAX); - if(rand1 < 1e-100) rand1 = 1e-100; - rand1 = -2 * log(rand1); - rand2 = (rand01()) * 6.2831853071795864769252866; - - return (sigma * sqrt(rand1) * cos(rand2)) + mu; -} - -/* Shared user declarations for all components types 'Monitor_nD'. */ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright 1997-2002, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Library: share/monitor_nd-lib.h -* -* %Identification -* Written by: EF -* Date: Aug 28, 2002 -* Origin: ILL -* Modified by: TW, Nov 2020: introduced user doubles -* Release: McStas 1.6 -* Version: $Revision$ -* -* This file is to be imported by the monitor_nd related components -* It handles some shared functions. -* -* Usage: within SHARE -* %include "monitor_nd-lib" -* -*******************************************************************************/ - -#ifndef MONITOR_ND_LIB_H - -#define MONITOR_ND_LIB_H "$Revision$" -#define MONnD_COORD_NMAX 30 /* max number of variables to record */ - - typedef struct MonitornD_Defines - { - int COORD_NONE ; - int COORD_X ; - int COORD_Y ; - int COORD_Z ; - int COORD_RADIUS; - int COORD_VX ; - int COORD_VY ; - int COORD_VZ ; - int COORD_V ; - int COORD_T ; - int COORD_P ; - int COORD_SX ; - int COORD_SY ; - int COORD_SZ ; - int COORD_KX ; - int COORD_KY ; - int COORD_KZ ; - int COORD_K ; - int COORD_ENERGY; - int COORD_LAMBDA; - int COORD_KXY ; - int COORD_KYZ ; - int COORD_KXZ ; - int COORD_VXY ; - int COORD_VYZ ; - int COORD_VXZ ; - int COORD_HDIV ; - int COORD_VDIV ; - int COORD_ANGLE ; - int COORD_NCOUNT; - int COORD_THETA ; - int COORD_PHI ; - int COORD_USER1 ; - int COORD_USER2 ; - int COORD_USER3 ; - int COORD_USERDOUBLE0 ; - int COORD_USERDOUBLE1 ; - int COORD_USERDOUBLE2 ; - int COORD_USERDOUBLE3 ; - int COORD_USERDOUBLE4 ; - int COORD_USERDOUBLE5 ; - int COORD_USERDOUBLE6 ; - int COORD_USERDOUBLE7 ; - int COORD_USERDOUBLE8 ; - int COORD_USERDOUBLE9 ; - int COORD_USERDOUBLE10 ; - int COORD_USERDOUBLE11 ; - int COORD_USERDOUBLE12 ; - int COORD_USERDOUBLE13 ; - int COORD_USERDOUBLE14 ; - int COORD_USERDOUBLE15 ; - int COORD_XY ; - int COORD_XZ ; - int COORD_YZ ; - int COORD_PIXELID; - - /* token modifiers */ - int COORD_VAR ; /* next token should be a variable or normal option */ - int COORD_MIN ; /* next token is a min value */ - int COORD_MAX ; /* next token is a max value */ - int COORD_DIM ; /* next token is a bin value */ - int COORD_FIL ; /* next token is a filename */ - int COORD_EVNT ; /* next token is a buffer size value */ - int COORD_3HE ; /* next token is a 3He pressure value */ - int COORD_LOG ; /* next variable will be in log scale */ - int COORD_ABS ; /* next variable will be in abs scale */ - int COORD_SIGNAL; /* next variable will be the signal var */ - int COORD_AUTO ; /* set auto limits */ - - char TOKEN_DEL[32]; /* token separators */ - - char SHAPE_SQUARE; /* shape of the monitor */ - char SHAPE_DISK ; - char SHAPE_SPHERE; - char SHAPE_CYLIND; - char SHAPE_BANANA; /* cylinder without top/bottom, on restricted angular area */ - char SHAPE_BOX ; - char SHAPE_PREVIOUS; - char SHAPE_OFF; - - } MonitornD_Defines_type; - - typedef struct MonitornD_Variables - { - double area; - double Sphere_Radius ; - double Cylinder_Height ; - char Flag_With_Borders ; /* 2 means xy borders too */ - char Flag_List ; /* 1 store 1 buffer, 2 is list all, 3 list all+append */ - char Flag_Multiple ; /* 1 when n1D, 0 for 2D */ - char Flag_Verbose ; - int Flag_Shape ; - char Flag_Auto_Limits ; /* get limits from first Buffer */ - char Flag_Absorb ; /* monitor is also a slit */ - char Flag_per_cm2 ; /* flux is per cm2 */ - char Flag_log ; /* log10 of the flux */ - char Flag_parallel ; /* set neutron state back after detection (parallel components) */ - char Flag_Binary_List ; - char Flag_capture ; /* lambda monitor with lambda/lambda(2200m/s = 1.7985 Angs) weightening */ - int Flag_signal ; /* 0:monitor p, else monitor a mean value */ - int Flag_mantid ; /* 0:normal monitor, else do mantid-event specifics */ - int Flag_OFF ; /* Flag to indicate external geometry from OFF file */ - long long OFF_polyidx; /* When intersection is done externally by off_intersect, this gives the - polygon number, i.e. pixel index */ - unsigned long Coord_Number ; /* total number of variables to monitor, plus intensity (0) */ - unsigned long Coord_NumberNoPixel; /* same but without counting PixelID */ - unsigned long Buffer_Block ; /* Buffer size for list or auto limits */ - long long Neutron_Counter ; /* event counter, simulation total counts is mcget_ncount() */ - unsigned long Buffer_Counter ; /* index in Buffer size (for realloc) */ - unsigned long Buffer_Size ; - int Coord_Type[MONnD_COORD_NMAX]; /* type of variable */ - char Coord_Label[MONnD_COORD_NMAX][30]; /* label of variable */ - char Coord_Var[MONnD_COORD_NMAX][30]; /* short id of variable */ - long Coord_Bin[MONnD_COORD_NMAX]; /* bins of variable array */ - long Coord_BinProd[MONnD_COORD_NMAX]; /* product of bins of variable array */ - double Coord_Min[MONnD_COORD_NMAX]; - double Coord_Max[MONnD_COORD_NMAX]; - char Monitor_Label[MONnD_COORD_NMAX*30];/* Label for monitor */ - char Mon_File[128]; /* output file name */ - - /* these don't seem to be used anymore as they are superseded by _particle - double cx, cy, cz; - double cvx, cvy, cvz; - double ckx, cky, ckz; - double csx, csy, csz; - double cEx, cEy, cEz; - double cs1, cs2, ct, cphi, cp; */ - - double He3_pressure; - char Flag_UsePreMonitor ; /* use a previously stored neutron parameter set */ - char UserName1[128]; - char UserName2[128]; - char UserName3[128]; - char UserVariable1[128]; - char UserVariable2[128]; - char UserVariable3[128]; - double UserDoubles[16]; - char option[CHAR_BUF_LENGTH]; - - long long int Nsum; - double psum, p2sum; - double **Mon2D_N; - double **Mon2D_p; - double **Mon2D_p2; - double *Mon2D_Buffer; - unsigned long PixelID; - - double mxmin,mxmax,mymin,mymax,mzmin,mzmax; - double mean_dx, mean_dy, min_x, min_y, max_x, max_y, mean_p; - - char compcurname[128]; - Coords compcurpos; - Rotation compcurrot; - int compcurindex; - } MonitornD_Variables_type; - -/* monitor_nd-lib function prototypes */ -/* ========================================================================= */ - -void Monitor_nD_Init(MonitornD_Defines_type *, MonitornD_Variables_type *, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, int); -#pragma acc routine -int Monitor_nD_Trace(MonitornD_Defines_type *, MonitornD_Variables_type *, _class_particle* _particle); -MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *, MonitornD_Variables_type *); -void Monitor_nD_Finally(MonitornD_Defines_type *, MonitornD_Variables_type *); -void Monitor_nD_McDisplay(MonitornD_Defines_type *, MonitornD_Variables_type *); - -#endif - -/* end of monitor_nd-lib.h */ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright 1997-2002, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Library: share/monitor_nd-lib.c -* -* %Identification -* Written by: EF -* Date: Aug 28, 2002 -* Origin: ILL -* Modified by: TW, Nov 2020: introduced user doubles -* Release: McStas 1.6 -* Version: $Revision$ -* -* This file is to be imported by the monitor_nd related components -* It handles some shared functions. Embedded within instrument in runtime mode. -* -* Usage: within SHARE -* %include "monitor_nd-lib" -* -*******************************************************************************/ - -#ifndef MONITOR_ND_LIB_H -#error McStas : please import this library with %include "monitor_nd-lib" -#endif - -/* ========================================================================= */ -/* Monitor_nD_Init: this routine is used to parse options */ -/* ========================================================================= */ - -void Monitor_nD_Init(MonitornD_Defines_type *DEFS, - MonitornD_Variables_type *Vars, - MCNUM xwidth, - MCNUM yheight, - MCNUM zdepth, - MCNUM xmin, - MCNUM xmax, - MCNUM ymin, - MCNUM ymax, - MCNUM zmin, - MCNUM zmax, - int offflag) - { - long carg = 1; - char *option_copy, *token; - char Flag_New_token = 1; - char Flag_End = 1; - char Flag_All = 0; - char Flag_No = 0; - char Flag_abs = 0; - int Flag_auto = 0; /* -1: all, 1: the current variable */ - int Set_Vars_Coord_Type; - char Set_Vars_Coord_Label[64]; - char Set_Vars_Coord_Var[64]; - char Short_Label[MONnD_COORD_NMAX][64]; - int Set_Coord_Mode; - long i=0, j=0; - double lmin, lmax, XY=0; - long t; - int N_spatial_dims=0; - - t = (long)time(NULL); - -/* initialize DEFS */ -/* Variables to monitor */ - DEFS->COORD_NONE =0; - DEFS->COORD_X =1; - DEFS->COORD_Y =2; - DEFS->COORD_Z =3; - DEFS->COORD_RADIUS =19; - DEFS->COORD_VX =4; - DEFS->COORD_VY =5; - DEFS->COORD_VZ =6; - DEFS->COORD_V =16; - DEFS->COORD_T =7; - DEFS->COORD_P =8; - DEFS->COORD_SX =9; - DEFS->COORD_SY =10; - DEFS->COORD_SZ =11; - DEFS->COORD_KX =12; - DEFS->COORD_KY =13; - DEFS->COORD_KZ =14; - DEFS->COORD_K =15; - DEFS->COORD_ENERGY =17; - DEFS->COORD_LAMBDA =18; - DEFS->COORD_HDIV =20; - DEFS->COORD_VDIV =21; - DEFS->COORD_ANGLE =22; - DEFS->COORD_NCOUNT =23; - DEFS->COORD_THETA =24; - DEFS->COORD_PHI =25; - DEFS->COORD_USER1 =26; - DEFS->COORD_USER2 =27; - DEFS->COORD_USER3 =28; - DEFS->COORD_USERDOUBLE0=39; - DEFS->COORD_USERDOUBLE1=40; - DEFS->COORD_USERDOUBLE2=41; - DEFS->COORD_USERDOUBLE3=42; - DEFS->COORD_USERDOUBLE4=43; - DEFS->COORD_USERDOUBLE5=44; - DEFS->COORD_USERDOUBLE6=45; - DEFS->COORD_USERDOUBLE7=46; - DEFS->COORD_USERDOUBLE8=47; - DEFS->COORD_USERDOUBLE9=48; - DEFS->COORD_USERDOUBLE10=49; - DEFS->COORD_USERDOUBLE11=50; - DEFS->COORD_USERDOUBLE12=51; - DEFS->COORD_USERDOUBLE13=52; - DEFS->COORD_USERDOUBLE14=53; - DEFS->COORD_USERDOUBLE15=54; - DEFS->COORD_XY =37; - DEFS->COORD_YZ =31; - DEFS->COORD_XZ =32; - DEFS->COORD_VXY =30; - DEFS->COORD_VYZ =34; - DEFS->COORD_VXZ =36; - DEFS->COORD_KXY =29; - DEFS->COORD_KYZ =33; - DEFS->COORD_KXZ =35; - DEFS->COORD_PIXELID=38; - -/* token modifiers */ - DEFS->COORD_VAR =0; /* next token should be a variable or normal option */ - DEFS->COORD_MIN =1; /* next token is a min value */ - DEFS->COORD_MAX =2; /* next token is a max value */ - DEFS->COORD_DIM =3; /* next token is a bin value */ - DEFS->COORD_FIL =4; /* next token is a filename */ - DEFS->COORD_EVNT =5; /* next token is a buffer size value */ - DEFS->COORD_3HE =6; /* next token is a 3He pressure value */ - DEFS->COORD_LOG =64; /* next variable will be in log scale */ - DEFS->COORD_ABS =128; /* next variable will be in abs scale */ - DEFS->COORD_SIGNAL =256; /* next variable will be the signal var */ - DEFS->COORD_AUTO =512; /* set auto limits */ - - strcpy(DEFS->TOKEN_DEL, " =,;[](){}:"); /* token separators */ - - DEFS->SHAPE_SQUARE =0; /* shape of the monitor */ - DEFS->SHAPE_DISK =1; - DEFS->SHAPE_SPHERE =2; - DEFS->SHAPE_CYLIND =3; - DEFS->SHAPE_BANANA =4; - DEFS->SHAPE_BOX =5; - DEFS->SHAPE_PREVIOUS=6; - DEFS->SHAPE_OFF=7; - - Vars->Sphere_Radius = 0; - Vars->Cylinder_Height = 0; - Vars->Flag_With_Borders = 0; /* 2 means xy borders too */ - Vars->Flag_List = 0; /* 1=store 1 buffer, 2=list all, 3=re-use buffer */ - Vars->Flag_Multiple = 0; /* 1 when n1D, 0 for 2D */ - Vars->Flag_Verbose = 0; - Vars->Flag_Shape = DEFS->SHAPE_SQUARE; - Vars->Flag_Auto_Limits = 0; /* get limits from first Buffer */ - Vars->Flag_Absorb = 0; /* monitor is also a slit */ - Vars->Flag_per_cm2 = 0; /* flux is per cm2 */ - Vars->Flag_log = 0; /* log10 of the flux */ - Vars->Flag_parallel = 0; /* set neutron state back after detection (parallel components) */ - Vars->Flag_Binary_List = 0; /* save list as a binary file (smaller) */ - Vars->Coord_Number = 0; /* total number of variables to monitor, plus intensity (0) */ - Vars->Coord_NumberNoPixel=0; /* same but without counting PixelID */ - - Vars->Buffer_Block = MONND_BUFSIZ; /* Buffer size for list or auto limits */ - Vars->Neutron_Counter = 0; /* event counter, simulation total counts is mcget_ncount() */ - Vars->Buffer_Counter = 0; /* index in Buffer size (for realloc) */ - Vars->Buffer_Size = 0; - Vars->He3_pressure = 0; - Vars->Flag_capture = 0; - Vars->Flag_signal = DEFS->COORD_P; - Vars->Flag_mantid = 0; - Vars->Flag_OFF = offflag; - Vars->OFF_polyidx = -1; - Vars->mean_dx=Vars->mean_dy=0; - Vars->min_x = Vars->max_x =0; - Vars->min_y = Vars->max_y =0; - - Set_Vars_Coord_Type = DEFS->COORD_NONE; - Set_Coord_Mode = DEFS->COORD_VAR; - - /* handle size parameters */ - /* normal use is with xwidth, yheight, zdepth */ - /* if xmin,xmax,ymin,ymax,zmin,zmax are non 0, use them */ - if (fabs(xmin-xmax) == 0) - { Vars->mxmin = -fabs(xwidth)/2; Vars->mxmax = fabs(xwidth)/2; } - else - { if (xmin < xmax) {Vars->mxmin = xmin; Vars->mxmax = xmax;} - else {Vars->mxmin = xmax; Vars->mxmax = xmin;} - } - if (fabs(ymin-ymax) == 0) - { Vars->mymin = -fabs(yheight)/2; Vars->mymax = fabs(yheight)/2; } - else - { if (ymin < ymax) {Vars->mymin = ymin; Vars->mymax = ymax;} - else {Vars->mymin = ymax; Vars->mymax = ymin;} - } - if (fabs(zmin-zmax) == 0) - { Vars->mzmin = -fabs(zdepth)/2; Vars->mzmax = fabs(zdepth)/2; } - else - { if (zmin < zmax) {Vars->mzmin = zmin; Vars->mzmax = zmax; } - else {Vars->mzmin = zmax; Vars->mzmax = zmin; } - } - - if (fabs(Vars->mzmax-Vars->mzmin) == 0) - Vars->Flag_Shape = DEFS->SHAPE_SQUARE; - else - Vars->Flag_Shape = DEFS->SHAPE_BOX; - - if (Vars->Flag_OFF) { - N_spatial_dims++; - Vars->Flag_Shape = DEFS->SHAPE_OFF; - } - - /* parse option string */ - - option_copy = (char*)malloc(strlen(Vars->option)+1); - if (option_copy == NULL) - { - fprintf(stderr,"Monitor_nD: %s cannot allocate 'options' copy (%li). Fatal.\n", Vars->compcurname, (long)strlen(Vars->option)); - exit(-1); - } - - if (strlen(Vars->option)) - { - Flag_End = 0; - strcpy(option_copy, Vars->option); - } - - if (strstr(Vars->option, "cm2") || strstr(Vars->option, "cm^2")) Vars->Flag_per_cm2 = 1; - - if (strstr(Vars->option, "binary") || strstr(Vars->option, "float")) - Vars->Flag_Binary_List = 1; - if (strstr(Vars->option, "double")) - Vars->Flag_Binary_List = 2; - - strcpy(Vars->Coord_Label[0],"Intensity"); - strncpy(Vars->Coord_Var[0],"p",30); - Vars->Coord_Type[0] = DEFS->COORD_P; - Vars->Coord_Bin[0] = 1; - Vars->Coord_Min[0] = 0; - Vars->Coord_Max[0] = FLT_MAX; - - /* default file name is comp_name+dateID */ - sprintf(Vars->Mon_File, "%s_%li", Vars->compcurname, t); - - carg = 1; - while((Flag_End == 0) && (carg < 128)) - { - if (Flag_New_token) /* retain previous token or get a new one */ - { - if (carg == 1) token=(char *)strtok(option_copy,DEFS->TOKEN_DEL); - else token=(char *)strtok(NULL,DEFS->TOKEN_DEL); - if (token == NULL) Flag_End=1; - } - Flag_New_token = 1; - if ((token != NULL) && (strlen(token) != 0)) - { - char iskeyword=0; /* left at 0 when variables are processed, 1 for modifiers */ - int old_Mode; - /* change token to lower case */ - for (i=0; iCOORD_MAX) /* max=%i */ - { - if (!Flag_All) - Vars->Coord_Max[Vars->Coord_Number] = atof(token); - else - for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Max[i++] = atof(token)); - Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; - } - if (Set_Coord_Mode == DEFS->COORD_MIN) /* min=%i */ - { - if (!Flag_All) - Vars->Coord_Min[Vars->Coord_Number] = atof(token); - else - for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Min[i++] = atof(token)); - Set_Coord_Mode = DEFS->COORD_MAX; - } - if (Set_Coord_Mode == DEFS->COORD_DIM) /* bins=%i */ - { - if (!Flag_All) - Vars->Coord_Bin[Vars->Coord_Number] = atoi(token); - else - for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Bin[i++] = atoi(token)); - Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; - } - if (Set_Coord_Mode == DEFS->COORD_FIL) /* file=%s */ - { - if (!Flag_No) strncpy(Vars->Mon_File,token,128); - else { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1;} - Set_Coord_Mode = DEFS->COORD_VAR; - } - if (Set_Coord_Mode == DEFS->COORD_EVNT) /* list=%i */ - { - if (!strcmp(token, "all") || Flag_All) Vars->Flag_List = 2; - else { i = (long)ceil(atof(token)); if (i) Vars->Buffer_Block = i; - Vars->Flag_List = 1; } - Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; - } - if (Set_Coord_Mode == DEFS->COORD_3HE) /* pressure=%g */ - { - Vars->He3_pressure = atof(token); - Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; - } - - /* now look for general option keywords */ - if (!strcmp(token, "borders")) {Vars->Flag_With_Borders = 1; iskeyword=1; } - if (!strcmp(token, "verbose")) {Vars->Flag_Verbose = 1; iskeyword=1; } - if (!strcmp(token, "log")) {Vars->Flag_log = 1; iskeyword=1; } - if (!strcmp(token, "abs")) {Flag_abs = 1; iskeyword=1; } - if (!strcmp(token, "multiple")) {Vars->Flag_Multiple = 1; iskeyword=1; } - if (!strcmp(token, "list") || !strcmp(token, "events")) { - Vars->Flag_List = 1; Set_Coord_Mode = DEFS->COORD_EVNT; } - if (!strcmp(token, "limits") || !strcmp(token, "min")) - Set_Coord_Mode = DEFS->COORD_MIN; - if (!strcmp(token, "slit") || !strcmp(token, "absorb")) { - Vars->Flag_Absorb = 1; iskeyword=1; } - if (!strcmp(token, "max")) Set_Coord_Mode = DEFS->COORD_MAX; - if (!strcmp(token, "bins") || !strcmp(token, "dim")) Set_Coord_Mode = DEFS->COORD_DIM; - if (!strcmp(token, "file") || !strcmp(token, "filename")) { - Set_Coord_Mode = DEFS->COORD_FIL; - if (Flag_No) { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1; } - } - if (!strcmp(token, "inactivate")) { - Flag_End = 1; Vars->Coord_Number = 0; iskeyword=1; } - if (!strcmp(token, "all")) { Flag_All = 1; iskeyword=1; } - if (!strcmp(token, "sphere")) { Vars->Flag_Shape = DEFS->SHAPE_SPHERE; iskeyword=1; } - if (!strcmp(token, "cylinder")) { Vars->Flag_Shape = DEFS->SHAPE_CYLIND; iskeyword=1; } - if (!strcmp(token, "banana")) { Vars->Flag_Shape = DEFS->SHAPE_BANANA; iskeyword=1; } - if (!strcmp(token, "square")) { Vars->Flag_Shape = DEFS->SHAPE_SQUARE; iskeyword=1; } - if (!strcmp(token, "disk")) { Vars->Flag_Shape = DEFS->SHAPE_DISK; iskeyword=1; } - if (!strcmp(token, "box")) { Vars->Flag_Shape = DEFS->SHAPE_BOX; iskeyword=1; } - if (!strcmp(token, "previous")) { Vars->Flag_Shape = DEFS->SHAPE_PREVIOUS; iskeyword=1; } - if (!strcmp(token, "parallel")){ Vars->Flag_parallel = 1; iskeyword=1; } - if (!strcmp(token, "capture")) { Vars->Flag_capture = 1; iskeyword=1; } - if (!strcmp(token, "auto")) { - #ifndef OPENACC - if (Flag_auto != -1) { - Vars->Flag_Auto_Limits = 1; - if (Flag_All) Flag_auto = -1; - else Flag_auto = 1; - iskeyword=1; Flag_All=0; - } - #endif - } - if (!strcmp(token, "premonitor")) { - Vars->Flag_UsePreMonitor = 1; iskeyword=1; } - if (!strcmp(token, "3He_pressure") || !strcmp(token, "pressure")) { - Vars->He3_pressure = 3; iskeyword=1; } - if (!strcmp(token, "no") || !strcmp(token, "not")) { Flag_No = 1; iskeyword=1; } - if (!strcmp(token, "signal")) Set_Coord_Mode = DEFS->COORD_SIGNAL; - if (!strcmp(token, "mantid")) { Vars->Flag_mantid = 1; iskeyword=1; } - - /* Mode has changed: this was a keyword or value ? */ - if (Set_Coord_Mode != old_Mode) iskeyword=1; - - /* now look for variable names to monitor */ - Set_Vars_Coord_Type = DEFS->COORD_NONE; lmin = 0; lmax = 0; - - if (!strcmp(token, "x")) - { Set_Vars_Coord_Type = DEFS->COORD_X; strcpy(Set_Vars_Coord_Label,"x [m]"); strcpy(Set_Vars_Coord_Var,"x"); - lmin = Vars->mxmin; lmax = Vars->mxmax; - Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mxmin; - Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mxmax; - N_spatial_dims++;} - if (!strcmp(token, "y")) - { Set_Vars_Coord_Type = DEFS->COORD_Y; strcpy(Set_Vars_Coord_Label,"y [m]"); strcpy(Set_Vars_Coord_Var,"y"); - lmin = Vars->mymin; lmax = Vars->mymax; - Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mymin; - Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mymax; - N_spatial_dims++;} - if (!strcmp(token, "z")) - { Set_Vars_Coord_Type = DEFS->COORD_Z; strcpy(Set_Vars_Coord_Label,"z [m]"); strcpy(Set_Vars_Coord_Var,"z"); lmin = Vars->mzmin; lmax = Vars->mzmax; - N_spatial_dims++;} - if (!strcmp(token, "k") || !strcmp(token, "wavevector")) - { Set_Vars_Coord_Type = DEFS->COORD_K; strcpy(Set_Vars_Coord_Label,"|k| [Angs-1]"); strcpy(Set_Vars_Coord_Var,"k"); lmin = 0; lmax = 10; } - if (!strcmp(token, "v")) - { Set_Vars_Coord_Type = DEFS->COORD_V; strcpy(Set_Vars_Coord_Label,"Velocity [m/s]"); strcpy(Set_Vars_Coord_Var,"v"); lmin = 0; lmax = 10000; } - if (!strcmp(token, "t") || !strcmp(token, "time") || !strcmp(token, "tof")) - { Set_Vars_Coord_Type = DEFS->COORD_T; strcpy(Set_Vars_Coord_Label,"TOF [s]"); strcpy(Set_Vars_Coord_Var,"t"); lmin = 0; lmax = 1.0; } - if ((!strcmp(token, "p") || !strcmp(token, "i") || !strcmp(token, "intensity") || !strcmp(token, "flux"))) - { Set_Vars_Coord_Type = DEFS->COORD_P; - strcpy(Set_Vars_Coord_Label,"Intensity"); - strncat(Set_Vars_Coord_Label, " [n/s", 30); - if (Vars->Flag_per_cm2) strncat(Set_Vars_Coord_Label, "/cm2", 30); - if (XY > 1 && Vars->Coord_Number) - strncat(Set_Vars_Coord_Label, "/bin", 30); - strncat(Set_Vars_Coord_Label, "]", 30); - strcpy(Set_Vars_Coord_Var,"I"); - lmin = 0; lmax = FLT_MAX; - if (Flag_auto>0) Flag_auto=0; - } - - if (!strcmp(token, "vx")) - { Set_Vars_Coord_Type = DEFS->COORD_VX; strcpy(Set_Vars_Coord_Label,"vx [m/s]"); strcpy(Set_Vars_Coord_Var,"vx"); lmin = -1000; lmax = 1000; } - if (!strcmp(token, "vy")) - { Set_Vars_Coord_Type = DEFS->COORD_VY; strcpy(Set_Vars_Coord_Label,"vy [m/s]"); strcpy(Set_Vars_Coord_Var,"vy"); lmin = -1000; lmax = 1000; } - if (!strcmp(token, "vz")) - { Set_Vars_Coord_Type = DEFS->COORD_VZ; strcpy(Set_Vars_Coord_Label,"vz [m/s]"); strcpy(Set_Vars_Coord_Var,"vz"); lmin = -10000; lmax = 10000; } - if (!strcmp(token, "kx")) - { Set_Vars_Coord_Type = DEFS->COORD_KX; strcpy(Set_Vars_Coord_Label,"kx [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kx"); lmin = -1; lmax = 1; } - if (!strcmp(token, "ky")) - { Set_Vars_Coord_Type = DEFS->COORD_KY; strcpy(Set_Vars_Coord_Label,"ky [Angs-1]"); strcpy(Set_Vars_Coord_Var,"ky"); lmin = -1; lmax = 1; } - if (!strcmp(token, "kz")) - { Set_Vars_Coord_Type = DEFS->COORD_KZ; strcpy(Set_Vars_Coord_Label,"kz [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kz"); lmin = -10; lmax = 10; } - if (!strcmp(token, "sx")) - { Set_Vars_Coord_Type = DEFS->COORD_SX; strcpy(Set_Vars_Coord_Label,"sx [1]"); strcpy(Set_Vars_Coord_Var,"sx"); lmin = -1; lmax = 1; } - if (!strcmp(token, "sy")) - { Set_Vars_Coord_Type = DEFS->COORD_SY; strcpy(Set_Vars_Coord_Label,"sy [1]"); strcpy(Set_Vars_Coord_Var,"sy"); lmin = -1; lmax = 1; } - if (!strcmp(token, "sz")) - { Set_Vars_Coord_Type = DEFS->COORD_SZ; strcpy(Set_Vars_Coord_Label,"sz [1]"); strcpy(Set_Vars_Coord_Var,"sz"); lmin = -1; lmax = 1; } - - if (!strcmp(token, "energy") || !strcmp(token, "omega") || !strcmp(token, "e")) - { Set_Vars_Coord_Type = DEFS->COORD_ENERGY; strcpy(Set_Vars_Coord_Label,"Energy [meV]"); strcpy(Set_Vars_Coord_Var,"E"); lmin = 0; lmax = 100; } - if (!strcmp(token, "lambda") || !strcmp(token, "wavelength") || !strcmp(token, "l")) - { Set_Vars_Coord_Type = DEFS->COORD_LAMBDA; strcpy(Set_Vars_Coord_Label,"Wavelength [Angs]"); strcpy(Set_Vars_Coord_Var,"L"); lmin = 0; lmax = 100; } - if (!strcmp(token, "radius") || !strcmp(token, "r")) - { Set_Vars_Coord_Type = DEFS->COORD_RADIUS; strcpy(Set_Vars_Coord_Label,"Radius [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; } - if (!strcmp(token, "xy")) - { Set_Vars_Coord_Type = DEFS->COORD_XY; strcpy(Set_Vars_Coord_Label,"Radius (xy) [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} - if (!strcmp(token, "yz")) - { Set_Vars_Coord_Type = DEFS->COORD_YZ; strcpy(Set_Vars_Coord_Label,"Radius (yz) [m]"); strcpy(Set_Vars_Coord_Var,"yz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} - if (!strcmp(token, "xz")) - { Set_Vars_Coord_Type = DEFS->COORD_XZ; strcpy(Set_Vars_Coord_Label,"Radius (xz) [m]"); strcpy(Set_Vars_Coord_Var,"xz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} - if (!strcmp(token, "vxy")) - { Set_Vars_Coord_Type = DEFS->COORD_VXY; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xy) [m]"); strcpy(Set_Vars_Coord_Var,"Vxy"); lmin = 0; lmax = 2000; } - if (!strcmp(token, "kxy")) - { Set_Vars_Coord_Type = DEFS->COORD_KXY; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xy) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxy"); lmin = 0; lmax = 2; } - if (!strcmp(token, "vyz")) - { Set_Vars_Coord_Type = DEFS->COORD_VYZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (yz) [m]"); strcpy(Set_Vars_Coord_Var,"Vyz"); lmin = 0; lmax = 2000; } - if (!strcmp(token, "kyz")) - { Set_Vars_Coord_Type = DEFS->COORD_KYZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (yz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kyz"); lmin = 0; lmax = 2; } - if (!strcmp(token, "vxz")) - { Set_Vars_Coord_Type = DEFS->COORD_VXZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xz) [m]"); strcpy(Set_Vars_Coord_Var,"Vxz"); lmin = 0; lmax = 2000; } - if (!strcmp(token, "kxz")) - { Set_Vars_Coord_Type = DEFS->COORD_KXZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxz"); lmin = 0; lmax = 2; } - if (!strcmp(token, "angle") || !strcmp(token, "a")) - { Set_Vars_Coord_Type = DEFS->COORD_ANGLE; strcpy(Set_Vars_Coord_Label,"Angle [deg]"); strcpy(Set_Vars_Coord_Var,"A"); lmin = -50; lmax = 50; N_spatial_dims++;} - if (!strcmp(token, "hdiv")|| !strcmp(token, "divergence") || !strcmp(token, "xdiv") || !strcmp(token, "hd") || !strcmp(token, "dx")) - { Set_Vars_Coord_Type = DEFS->COORD_HDIV; strcpy(Set_Vars_Coord_Label,"Hor. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"hd"); lmin = -5; lmax = 5; N_spatial_dims++;} - if (!strcmp(token, "vdiv") || !strcmp(token, "ydiv") || !strcmp(token, "vd") || !strcmp(token, "dy")) - { Set_Vars_Coord_Type = DEFS->COORD_VDIV; strcpy(Set_Vars_Coord_Label,"Vert. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"vd"); lmin = -5; lmax = 5; N_spatial_dims++;} - if (!strcmp(token, "theta") || !strcmp(token, "longitude") || !strcmp(token, "th")) - { Set_Vars_Coord_Type = DEFS->COORD_THETA; strcpy(Set_Vars_Coord_Label,"Longitude [deg]"); strcpy(Set_Vars_Coord_Var,"th"); lmin = -180; lmax = 180; N_spatial_dims++;} - if (!strcmp(token, "phi") || !strcmp(token, "latitude") || !strcmp(token, "ph")) - { Set_Vars_Coord_Type = DEFS->COORD_PHI; strcpy(Set_Vars_Coord_Label,"Latitude [deg]"); strcpy(Set_Vars_Coord_Var,"ph"); lmin = -90; lmax = 90; N_spatial_dims++;} - if (!strcmp(token, "ncounts") || !strcmp(token, "n") || !strcmp(token, "neutron")) - { Set_Vars_Coord_Type = DEFS->COORD_NCOUNT; strcpy(Set_Vars_Coord_Label,"Neutron ID [1]"); strcpy(Set_Vars_Coord_Var,"n"); lmin = 0; lmax = mcget_ncount(); if (Flag_auto>0) Flag_auto=0; } - if (!strcmp(token, "id") || !strcmp(token, "pixel")) - { Set_Vars_Coord_Type = DEFS->COORD_PIXELID; - strcpy(Set_Vars_Coord_Label,"Pixel ID [1]"); - strcpy(Set_Vars_Coord_Var,"id"); lmin = 0; lmax = FLT_MAX; - if (Flag_auto>0) Flag_auto=0; - Vars->Flag_List = 1; } - if (!strcmp(token, "user") || !strcmp(token, "user1") || !strcmp(token, "u1")) - { Set_Vars_Coord_Type = DEFS->COORD_USER1; strncpy(Set_Vars_Coord_Label,Vars->UserName1,30); strcpy(Set_Vars_Coord_Var,"U1"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "user2") || !strcmp(token, "u2")) - { Set_Vars_Coord_Type = DEFS->COORD_USER2; strncpy(Set_Vars_Coord_Label,Vars->UserName2,30); strcpy(Set_Vars_Coord_Var,"U2"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "user3") || !strcmp(token, "u3")) - { Set_Vars_Coord_Type = DEFS->COORD_USER3; strncpy(Set_Vars_Coord_Label,Vars->UserName3,30); strcpy(Set_Vars_Coord_Var,"U3"); lmin = -1e10; lmax = 1e10; } - - if (!strcmp(token, "userdouble0") || !strcmp(token, "ud0")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE0; strcpy(Set_Vars_Coord_Label,"ud0 [1]"); strcpy(Set_Vars_Coord_Var,"ud0"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble1") || !strcmp(token, "ud1")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE1; strcpy(Set_Vars_Coord_Label,"ud1 [1]"); strcpy(Set_Vars_Coord_Var,"ud1"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble2") || !strcmp(token, "ud2")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE2; strcpy(Set_Vars_Coord_Label,"ud2 [1]"); strcpy(Set_Vars_Coord_Var,"ud2"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble3") || !strcmp(token, "ud3")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE3; strcpy(Set_Vars_Coord_Label,"ud3 [1]"); strcpy(Set_Vars_Coord_Var,"ud3"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble4") || !strcmp(token, "ud4")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE4; strcpy(Set_Vars_Coord_Label,"ud4 [1]"); strcpy(Set_Vars_Coord_Var,"ud4"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble5") || !strcmp(token, "ud5")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE5; strcpy(Set_Vars_Coord_Label,"ud5 [1]"); strcpy(Set_Vars_Coord_Var,"ud5"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble6") || !strcmp(token, "ud6")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE6; strcpy(Set_Vars_Coord_Label,"ud6 [1]"); strcpy(Set_Vars_Coord_Var,"ud6"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble7") || !strcmp(token, "ud7")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE7; strcpy(Set_Vars_Coord_Label,"ud7 [1]"); strcpy(Set_Vars_Coord_Var,"ud7"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble8") || !strcmp(token, "ud8")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE8; strcpy(Set_Vars_Coord_Label,"ud8 [1]"); strcpy(Set_Vars_Coord_Var,"ud8"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble9") || !strcmp(token, "ud9")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE9; strcpy(Set_Vars_Coord_Label,"ud9 [1]"); strcpy(Set_Vars_Coord_Var,"ud9"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble10") || !strcmp(token, "ud10")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE10; strcpy(Set_Vars_Coord_Label,"ud10 [1]"); strcpy(Set_Vars_Coord_Var,"ud10"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble11") || !strcmp(token, "ud11")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE11; strcpy(Set_Vars_Coord_Label,"ud11 [1]"); strcpy(Set_Vars_Coord_Var,"ud11"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble12") || !strcmp(token, "ud12")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE12; strcpy(Set_Vars_Coord_Label,"ud12 [1]"); strcpy(Set_Vars_Coord_Var,"ud12"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble13") || !strcmp(token, "ud13")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE13; strcpy(Set_Vars_Coord_Label,"ud13 [1]"); strcpy(Set_Vars_Coord_Var,"ud13"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble14") || !strcmp(token, "ud14")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE14; strcpy(Set_Vars_Coord_Label,"ud14 [1]"); strcpy(Set_Vars_Coord_Var,"ud14"); lmin = -1e10; lmax = 1e10; } - if (!strcmp(token, "userdouble15") || !strcmp(token, "ud15")) - { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE15; strcpy(Set_Vars_Coord_Label,"ud15 [1]"); strcpy(Set_Vars_Coord_Var,"ud15"); lmin = -1e10; lmax = 1e10; } - - /* now stores variable keywords detected, if any */ - if (Set_Vars_Coord_Type != DEFS->COORD_NONE) - { - int Coord_Number = Vars->Coord_Number; - if (Vars->Flag_log) { Set_Vars_Coord_Type |= DEFS->COORD_LOG; Vars->Flag_log = 0; } - if (Flag_abs) { Set_Vars_Coord_Type |= DEFS->COORD_ABS; Flag_abs = 0; } - if (Flag_auto != 0) { Set_Vars_Coord_Type |= DEFS->COORD_AUTO; - if (Flag_auto > 0) Flag_auto = 0; } - if (Set_Coord_Mode == DEFS->COORD_SIGNAL) - { - Coord_Number = 0; - Vars->Flag_signal = Set_Vars_Coord_Type; - } - else - { - if (Coord_Number < MONnD_COORD_NMAX) - { Coord_Number++; - Vars->Coord_Number = Coord_Number; - if (Set_Vars_Coord_Type != DEFS->COORD_PIXELID) - Vars->Coord_NumberNoPixel++; - } - else if (Vars->Flag_Verbose) printf("Monitor_nD: %s reached max number of variables (%i).\n", Vars->compcurname, MONnD_COORD_NMAX); - } - Vars->Coord_Type[Coord_Number] = Set_Vars_Coord_Type; - strncpy(Vars->Coord_Label[Coord_Number], Set_Vars_Coord_Label,30); - strncpy(Vars->Coord_Var[Coord_Number], Set_Vars_Coord_Var,30); - if (lmin > lmax) { XY = lmin; lmin=lmax; lmax = XY; } - Vars->Coord_Min[Coord_Number] = lmin; - Vars->Coord_Max[Coord_Number] = lmax; - if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT || Set_Vars_Coord_Type == DEFS->COORD_PIXELID || Set_Vars_Coord_Type == DEFS->COORD_SIGNAL) - Vars->Coord_Bin[Coord_Number] = 1; - else - Vars->Coord_Bin[Coord_Number] = 20; - Set_Coord_Mode = DEFS->COORD_VAR; - Flag_All = 0; - Flag_No = 0; - } else { - /* no variable name could be read from options */ - if (!iskeyword) { - if (strcmp(token, "cm2") && strcmp(token, "incoming") - && strcmp(token, "outgoing") && strcmp(token, "cm2") - && strcmp(token, "cm^2") && strcmp(token, "float") - && strcmp(token, "double") && strcmp(token, "binary") - && strcmp(token, "steradian") && Vars->Flag_Verbose) - printf("Monitor_nD: %s: unknown '%s' keyword in 'options'. Ignoring.\n", Vars->compcurname, token); - } - } - carg++; - } /* end if token */ - } /* end while carg */ - free(option_copy); - if (carg == 128) printf("Monitor_nD: %s reached max number of tokens (%i). Skipping.\n", Vars->compcurname, 128); - - if ((Vars->Flag_Shape == DEFS->SHAPE_BOX) && (fabs(Vars->mzmax - Vars->mzmin) == 0)) Vars->Flag_Shape = DEFS->SHAPE_SQUARE; - - if (Vars->Flag_log == 1) Vars->Coord_Type[0] |= DEFS->COORD_LOG; - if (Vars->Coord_Number == 0) - { Vars->Flag_Auto_Limits=0; Vars->Flag_Multiple=0; Vars->Flag_List=0; } - - /* now setting Monitor Name from variable labels */ - strcpy(Vars->Monitor_Label,""); - XY = 1; /* will contain total bin number */ - for (i = 0; i <= Vars->Coord_Number; i++) - { - if (Flag_auto != 0) Vars->Coord_Type[i] |= DEFS->COORD_AUTO; - Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); - if ((Set_Vars_Coord_Type == DEFS->COORD_X) - || (Set_Vars_Coord_Type == DEFS->COORD_Y) - || (Set_Vars_Coord_Type == DEFS->COORD_Z)) - strcpy(Short_Label[i],"Position"); - else - if ((Set_Vars_Coord_Type == DEFS->COORD_THETA) - || (Set_Vars_Coord_Type == DEFS->COORD_PHI) - || (Set_Vars_Coord_Type == DEFS->COORD_ANGLE)) - strcpy(Short_Label[i],"Angle"); - else - if ((Set_Vars_Coord_Type == DEFS->COORD_XY) - || (Set_Vars_Coord_Type == DEFS->COORD_XZ) - || (Set_Vars_Coord_Type == DEFS->COORD_YZ) - || (Set_Vars_Coord_Type == DEFS->COORD_RADIUS)) - strcpy(Short_Label[i],"Radius"); - else - if ((Set_Vars_Coord_Type == DEFS->COORD_VX) - || (Set_Vars_Coord_Type == DEFS->COORD_VY) - || (Set_Vars_Coord_Type == DEFS->COORD_VZ) - || (Set_Vars_Coord_Type == DEFS->COORD_V) - || (Set_Vars_Coord_Type == DEFS->COORD_VXY) - || (Set_Vars_Coord_Type == DEFS->COORD_VYZ) - || (Set_Vars_Coord_Type == DEFS->COORD_VXZ)) - strcpy(Short_Label[i],"Velocity"); - else - if ((Set_Vars_Coord_Type == DEFS->COORD_KX) - || (Set_Vars_Coord_Type == DEFS->COORD_KY) - || (Set_Vars_Coord_Type == DEFS->COORD_KZ) - || (Set_Vars_Coord_Type == DEFS->COORD_KXY) - || (Set_Vars_Coord_Type == DEFS->COORD_KYZ) - || (Set_Vars_Coord_Type == DEFS->COORD_KXZ) - || (Set_Vars_Coord_Type == DEFS->COORD_K)) - strcpy(Short_Label[i],"Wavevector"); - else - if ((Set_Vars_Coord_Type == DEFS->COORD_SX) - || (Set_Vars_Coord_Type == DEFS->COORD_SY) - || (Set_Vars_Coord_Type == DEFS->COORD_SZ)) - strcpy(Short_Label[i],"Spin"); - else - if ((Set_Vars_Coord_Type == DEFS->COORD_HDIV) - || (Set_Vars_Coord_Type == DEFS->COORD_VDIV)) - strcpy(Short_Label[i],"Divergence"); - else - if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) - strcpy(Short_Label[i],"Energy"); - else - if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) - strcpy(Short_Label[i],"Wavelength"); - else - if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) - strcpy(Short_Label[i],"Neutron_ID"); - else - if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) - strcpy(Short_Label[i],"Pixel_ID"); - else - if (Set_Vars_Coord_Type == DEFS->COORD_T) - strcpy(Short_Label[i],"Time_Of_Flight"); - else - if (Set_Vars_Coord_Type == DEFS->COORD_P) - strcpy(Short_Label[i],"Intensity"); - else - if (Set_Vars_Coord_Type == DEFS->COORD_USER1) - strncpy(Short_Label[i],Vars->UserName1,30); - else - if (Set_Vars_Coord_Type == DEFS->COORD_USER2) - strncpy(Short_Label[i],Vars->UserName2,30); - else - if (Set_Vars_Coord_Type == DEFS->COORD_USER3) - strncpy(Short_Label[i],Vars->UserName3,30); - else - strcpy(Short_Label[i],"Unknown"); - - if (Vars->Coord_Type[i] & DEFS->COORD_ABS) - { strcat(Vars->Coord_Label[i]," (abs)"); } - - if (Vars->Coord_Type[i] & DEFS->COORD_LOG) - { strcat(Vars->Coord_Label[i]," (log)"); } - - strcat(Vars->Monitor_Label, " "); - strcat(Vars->Monitor_Label, Short_Label[i]); - XY *= Vars->Coord_Bin[i]; - - } /* end for Short_Label */ - - if ((Vars->Coord_Type[0] & (DEFS->COORD_LOG-1)) == DEFS->COORD_P) { - strncat(Vars->Coord_Label[0], " [n/s", 30); - if (Vars->Flag_per_cm2) strncat(Vars->Coord_Label[0], "/cm2", 30); - - if (XY > 1 && Vars->Coord_Number) - strncat(Vars->Coord_Label[0], "/bin", 30); - strncat(Vars->Coord_Label[0], "]", 30); - } - - /* update label 'signal per bin' if more than 1 bin */ - if (XY > 1 && Vars->Coord_Number) { - if (Vars->Flag_capture) - printf("Monitor_nD: %s: Using capture flux weightening on %ld bins.\n" - "WARNING Use binned data with caution, and prefer monitor integral value (I,Ierr).\n", Vars->compcurname, (long)XY); - } - - strcat(Vars->Monitor_Label, " Monitor"); - if (Vars->Flag_Shape == DEFS->SHAPE_SQUARE) strcat(Vars->Monitor_Label, " (Square)"); - if (Vars->Flag_Shape == DEFS->SHAPE_DISK) strcat(Vars->Monitor_Label, " (Disk)"); - if (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) strcat(Vars->Monitor_Label, " (Sphere)"); - if (Vars->Flag_Shape == DEFS->SHAPE_CYLIND) strcat(Vars->Monitor_Label, " (Cylinder)"); - if (Vars->Flag_Shape == DEFS->SHAPE_BANANA) strcat(Vars->Monitor_Label, " (Banana)"); - if (Vars->Flag_Shape == DEFS->SHAPE_BOX) strcat(Vars->Monitor_Label, " (Box)"); - if (Vars->Flag_Shape == DEFS->SHAPE_PREVIOUS) strcat(Vars->Monitor_Label, " (on PREVIOUS)"); - if (Vars->Flag_Shape == DEFS->SHAPE_OFF) strcat(Vars->Monitor_Label, " (OFF geometry)"); - if ((Vars->Flag_Shape == DEFS->SHAPE_CYLIND) || (Vars->Flag_Shape == DEFS->SHAPE_BANANA) || (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) || (Vars->Flag_Shape == DEFS->SHAPE_BOX)) - { - if (strstr(Vars->option, "incoming")) - { - Vars->Flag_Shape = abs(Vars->Flag_Shape); - strcat(Vars->Monitor_Label, " [in]"); - } - else /* if strstr(Vars->option, "outgoing")) */ - { - Vars->Flag_Shape = -abs(Vars->Flag_Shape); - strcat(Vars->Monitor_Label, " [out]"); - } - } - if (Vars->Flag_UsePreMonitor == 1) - { - strcat(Vars->Monitor_Label, " at "); - strncat(Vars->Monitor_Label, Vars->UserName1,30); - } - if (Vars->Flag_log == 1) strcat(Vars->Monitor_Label, " [log] "); - - /* now allocate memory to store variables in TRACE */ - - /* Vars->Coord_Number 0 : intensity or signal - * Vars->Coord_Number 1:n : detector variables */ - - if ((Vars->Coord_NumberNoPixel != 2) && !Vars->Flag_Multiple && !Vars->Flag_List) - { Vars->Flag_Multiple = 1; /* default is n1D */ - if (Vars->Coord_Number != Vars->Coord_NumberNoPixel) Vars->Flag_List = 1; } - - /* list and auto limits case : Vars->Flag_List or Vars->Flag_Auto_Limits - * -> Buffer to flush and suppress after Vars->Flag_Auto_Limits - */ - if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) - { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ - Vars->Mon2D_Buffer = (double *)malloc((Vars->Coord_Number+1)*Vars->Buffer_Block*sizeof(double)); - if (Vars->Mon2D_Buffer == NULL) - { printf("Monitor_nD: %s cannot allocate Vars->Mon2D_Buffer (%zi). No list and auto limits.\n", Vars->compcurname, Vars->Buffer_Block*(Vars->Coord_Number+1)*sizeof(double)); Vars->Flag_List = 0; Vars->Flag_Auto_Limits = 0; } - else - { - for (i=0; i < (Vars->Coord_Number+1)*Vars->Buffer_Block; Vars->Mon2D_Buffer[i++] = (double)0); - } - Vars->Buffer_Size = Vars->Buffer_Block; - } - - /* 1D and n1D case : Vars->Flag_Multiple */ - if (Vars->Flag_Multiple && Vars->Coord_NumberNoPixel) - { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ - Vars->Mon2D_N = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); - Vars->Mon2D_p = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); - Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); - if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) - { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, (Vars->Coord_Number)*sizeof(double *)); exit(-1); } - for (i= 1; i <= Vars->Coord_Number; i++) - { - Vars->Mon2D_N[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); - Vars->Mon2D_p[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); - Vars->Mon2D_p2[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); - if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) - { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[i], i, (Vars->Coord_Bin[i])*sizeof(double *)); exit(-1); } - else - { - for (j=0; j < Vars->Coord_Bin[i]; j++ ) - { Vars->Mon2D_N[i-1][j] = (double)0; Vars->Mon2D_p[i-1][j] = (double)0; Vars->Mon2D_p2[i-1][j] = (double)0; } - } - } - } - else /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ - if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) - { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ - Vars->Mon2D_N = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); - Vars->Mon2D_p = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); - Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); - if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) - { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], (Vars->Coord_Bin[1])*sizeof(double *)); exit(-1); } - for (i= 0; i < Vars->Coord_Bin[1]; i++) - { - Vars->Mon2D_N[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); - Vars->Mon2D_p[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); - Vars->Mon2D_p2[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); - if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) - { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], i, (Vars->Coord_Bin[2])*sizeof(double *)); exit(-1); } - else - { - for (j=0; j < Vars->Coord_Bin[2]; j++ ) - { Vars->Mon2D_N[i][j] = (double)0; Vars->Mon2D_p[i][j] = (double)0; Vars->Mon2D_p2[i][j] = (double)0; } - } - } - } - else { - Vars->Mon2D_N = Vars->Mon2D_p = Vars->Mon2D_p2 = NULL; - } - /* no Mon2D allocated for - * (Vars->Coord_Number != 2) && !Vars->Flag_Multiple && Vars->Flag_List */ - - Vars->psum = 0; - Vars->p2sum = 0; - Vars->Nsum = 0; - - Vars->area = fabs(Vars->mxmax - Vars->mxmin)*fabs(Vars->mymax - Vars->mymin)*1E4; /* in cm**2 for square and box shapes */ - Vars->Sphere_Radius = fabs(Vars->mxmax - Vars->mxmin)/2; - if ((abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) - { - Vars->area = PI*Vars->Sphere_Radius*Vars->Sphere_Radius*1E4; /* disk shapes */ - } - - - if (Vars->area == 0 && abs(Vars->Flag_Shape) != DEFS->SHAPE_PREVIOUS ) { - if (abs(Vars->Flag_Shape) != DEFS->SHAPE_OFF) { - Vars->Coord_Number = 0; - } - } - if (Vars->Coord_Number == 0 && Vars->Flag_Verbose) - printf("Monitor_nD: %s is inactivated (0D)\n", Vars->compcurname); - Vars->Cylinder_Height = fabs(Vars->mymax - Vars->mymin); - - if (Vars->Flag_Verbose) - { - printf("Monitor_nD: %s is a %s.\n", Vars->compcurname, Vars->Monitor_Label); - printf("Monitor_nD: version %s with options=%s\n", MONITOR_ND_LIB_H, Vars->option); - } - - /* compute the product of bin dimensions for PixelID */ - Vars->Coord_BinProd[0]=1; - - for (i = 1; i <= Vars->Coord_Number; i++) { - Vars->Coord_BinProd[i]=Vars->Coord_Bin[i]*Vars->Coord_BinProd[i-1]; - } - - #ifdef USE_NEXUS - - #ifdef USE_MPI - if(mpi_node_rank == mpi_node_root) { - #endif - if(nxhandle) { - - /* This section of code writes detector shape information to - entryN/instrument/components/'name'/geometry in the NeXus file */ - - char nexuscomp[CHAR_BUF_LENGTH]; - char pref[5]; - if (Vars->compcurindex-1 < 10) { - sprintf(pref,"000"); - } else if (Vars->compcurindex-1 < 100) { - sprintf(pref,"00"); - } else if (Vars->compcurindex-1 < 1000) { - sprintf(pref,"0"); - } else if (Vars->compcurindex-1 < 10000) { - sprintf(pref,""); - } else { - fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); - exit(-1); - } - sprintf(nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,Vars->compcurname); - - if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { - if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { - if (NXopengroup(nxhandle, nexuscomp, "NXdata") == NX_OK) { - if (NXmakegroup(nxhandle, "Geometry", "NXdata") == NX_OK) { - if (NXopengroup(nxhandle, "Geometry", "NXdata") == NX_OK) { - char tmp[CHAR_BUF_LENGTH]; - sprintf(tmp,"%g",Vars->Sphere_Radius); - nxprintattr(nxhandle, "radius", tmp); - - sprintf(tmp,"%g",Vars->Cylinder_Height); - nxprintattr(nxhandle, "height", tmp); - - sprintf(tmp,"%g",Vars->mxmin); - nxprintattr(nxhandle, "xmin", tmp); - sprintf(tmp,"%g",Vars->mxmax); - nxprintattr(nxhandle, "xmax", tmp); - - sprintf(tmp,"%g",Vars->mymin); - nxprintattr(nxhandle, "ymin", tmp); - sprintf(tmp,"%g",Vars->mymax); - nxprintattr(nxhandle, "ymax", tmp); - - sprintf(tmp,"%g",Vars->mzmin); - nxprintattr(nxhandle, "zmin", tmp); - sprintf(tmp,"%g",Vars->mzmax); - nxprintattr(nxhandle, "zmax", tmp); - - sprintf(tmp,"%g",Vars->mzmin); - nxprintattr(nxhandle, "zmin", tmp); - sprintf(tmp,"%g",Vars->mzmax); - nxprintattr(nxhandle, "zmax", tmp); - - sprintf(tmp,"%i",Vars->Flag_Shape); - nxprintattr(nxhandle, "Shape identifier", tmp); - sprintf(tmp,"%s",Vars->Monitor_Label); - nxprintattr(nxhandle, "Shape string", tmp); - sprintf(tmp,"%s",Vars->option); - nxprintattr(nxhandle, "Option string", tmp); - - NXclosegroup(nxhandle); // Geometry - } else { - printf("Failed to open component NeXus component Geometry group\n"); - } - } else { - printf("Failed to create component NeXus component Geometry group\n"); - } - NXclosegroup(nxhandle); // component - } - NXclosegroup(nxhandle); // components - } else { - printf("Failed to open NeXus component hierarchy\n"); - } - NXclosegroup(nxhandle); // instrument - } - - /* Below code communicates geometry-oriented "BINS" for the detector. */ - char metadata[CHAR_BUF_LENGTH]; - char metadatatmp[CHAR_BUF_LENGTH]; - // Vars for 1D, >3D, OFF - long numbins; - long minbins = 0; - long maxbins = 0; - char binlabel[CHAR_BUF_LENGTH]; - char binvar[CHAR_BUF_LENGTH]; - sprintf(binlabel,"none"); - sprintf(binvar,"none"); - - // Find index of pixel column - int id_index; - for (id_index=0;id_index<30;id_index++) { - if (strcmp(Vars->Coord_Var[id_index], "id") == 0) break; - } - if (id_index == 30) id_index = Vars->Coord_Number-1; // Revert to earlier behavior is id not found - long pix=Vars->Coord_Min[id_index]; - - MCDETECTOR detector; - - /* Init - perhaps better with an init-function in mccode-r? */ - detector.m = 0; - detector.xmin = 0; - detector.xmax = 0; - detector.ymin = 0; - detector.ymax = 0; - detector.zmin = 0; - detector.zmax = 0; - detector.intensity = 0; - detector.error = 0; - detector.events = 0; - detector.min = 0; - detector.max = 0; - detector.mean = 0; - detector.centerX = 0; - detector.halfwidthX = 0; - detector.centerY = 0; - detector.halfwidthY = 0; - detector.rank = 0; - detector.istransposed = 0; - detector.n = 0; - detector.p = 0; - detector.date_l = 0; - detector.p0 = NULL; - detector.p1 = NULL; - detector.p2 = NULL; - - sprintf(detector.filename,"BINS"); - sprintf(detector.component,"%s",Vars->compcurname); - sprintf(detector.nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,detector.component); - sprintf(detector.format,"pixels"); - - if(!Vars->Flag_OFF) { - - sprintf(metadata,"id=%ld + %ld pixels: ",(long)Vars->Coord_Min[id_index],(long)Vars->Coord_BinProd[Vars->Coord_Number]); - for (i=1; iCoord_Label[i],Vars->Coord_Bin[i]); - sprintf(metadata,"%s",metadatatmp); - } - sprintf(metadatatmp,"%s %s (%ld bins)",metadata,Vars->Coord_Label[i],Vars->Coord_Bin[i]); - sprintf(metadata,"%s",metadatatmp); - numbins = Vars->Coord_BinProd[Vars->Coord_Number]; - if (N_spatial_dims==1) { - minbins=Vars->Coord_Min[1]; - maxbins=Vars->Coord_Max[1]; - sprintf(binlabel,"%s",Vars->Coord_Label[1]); - sprintf(binvar,"%s",Vars->Coord_Var[1]); - } else if (N_spatial_dims>3) { - minbins=1; - maxbins=Vars->Coord_BinProd[Vars->Coord_Number]; - sprintf(binlabel,"More than 3 dimensions"); - sprintf(binvar,"wrapped_variables_4plus_dims"); - N_spatial_dims=1; - } - sprintf(detector.xlabel,"%s",binlabel); - sprintf(detector.xvar,"%s",binvar); - detector.xmin=minbins; - detector.xmax=maxbins; - } else { - numbins = Vars->Flag_OFF; - minbins=1; - maxbins=Vars->Flag_OFF; - sprintf(binlabel,"OFF pixel index"); - sprintf(binvar,"OFF"); - N_spatial_dims=1; - sprintf(detector.xlabel,"%s",binlabel); - sprintf(detector.xvar,"%s",binvar); - detector.xmin=minbins; - detector.xmax=maxbins; - } - - long k,l,m; - if (N_spatial_dims==1) { // 1D case or ND - detector.m=numbins; - detector.n=1; - detector.p=1; - detector.rank=1; - detector.p0=(double *)calloc(numbins, sizeof(double)); - detector.p1=(double *)calloc(numbins, sizeof(double)); - detector.p2=(double *)calloc(numbins, sizeof(double)); - if (Vars->Flag_Verbose) printf("1D case %ld \n",Vars->Coord_Bin[1]); - for (k=0; kFlag_Verbose) printf("Assigning pixel no [%ld] = %ld\n",k,pix); - detector.p1[k]=pix; - pix++; - } - mcdetector_out_1D_nexus(detector); - free(detector.p0); - free(detector.p1); - free(detector.p2); - } else if (N_spatial_dims==2) { // 2D case - detector.m=Vars->Coord_Bin[1]; - detector.n=Vars->Coord_Bin[2]; - detector.p=1; - detector.rank=2; - sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); - sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); - detector.xmin=Vars->Coord_Min[1]; - detector.xmax=Vars->Coord_Max[1]; - sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); - sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); - detector.ymin=Vars->Coord_Min[2]; - detector.ymax=Vars->Coord_Max[2]; - detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); - detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); - detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); - if (Vars->Flag_Verbose) printf("2D case %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2]); - for (k=0; kCoord_Bin[1]; k++) { - for (l=0; lCoord_Bin[2]; l++) { - if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld] = %ld\n",l,k,pix); - detector.p1[k*Vars->Coord_Bin[2]+l]=pix; - pix++; - } - } - mcdetector_out_2D_nexus(detector); - free(detector.p0); - free(detector.p1); - free(detector.p2); - } else if (N_spatial_dims==3) { // 3D case - detector.m=Vars->Coord_Bin[1]; - detector.n=Vars->Coord_Bin[2]; - detector.p=Vars->Coord_Bin[3];; - detector.rank=3; - sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); - sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); - detector.xmin=Vars->Coord_Min[1]; - detector.xmax=Vars->Coord_Max[1]; - sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); - sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); - detector.ymin=Vars->Coord_Min[2]; - detector.ymax=Vars->Coord_Max[2]; - sprintf(detector.zlabel,"%s",Vars->Coord_Label[3]); - sprintf(detector.zvar,"%s",Vars->Coord_Var[3]); - detector.zmin=Vars->Coord_Min[3]; - detector.zmax=Vars->Coord_Max[3]; - detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); - detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); - detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); - if (Vars->Flag_Verbose) printf("3D case %ld x %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2],Vars->Coord_Bin[3]); - for (k=0; kCoord_Bin[1]; k++) { - for (l=0; lCoord_Bin[2]; l++) { - for (m=0; mCoord_Bin[3]; m++) { - if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld,%ld] = %ld\n",m,l,k,pix); - detector.p1[k*Vars->Coord_Bin[2]*Vars->Coord_Bin[3] + l*Vars->Coord_Bin[3] + m]=pix; - pix++; - } - } - } - mcdetector_out_3D_nexus(detector); - free(detector.p0); - free(detector.p1); - free(detector.p2); - } - } // nxhandle available - #ifdef USE_MPI - } // Master only - #endif - - #endif // USE_NEXUS - } /* end Monitor_nD_Init */ - -/* ========================================================================= */ -/* Monitor_nD_Trace: this routine is used to monitor one propagating neutron */ -/* return values: 0=neutron was absorbed, -1=neutron was outside bounds, 1=neutron was measured*/ -/* ========================================================================= */ - -int Monitor_nD_Trace(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars, _class_particle* _particle) -{ - - double XY=0, pp=0; - long i =0, j =0; - double Coord[MONnD_COORD_NMAX]; - long Coord_Index[MONnD_COORD_NMAX]; - char While_End =0; - long While_Buffer=0; - char Set_Vars_Coord_Type = DEFS->COORD_NONE; - - /* the logic below depends mainly on: - Flag_List: 1=store 1 buffer, 2=list all, 3=re-use buffer - Flag_Auto_Limits: 0 (no auto limits/list), 1 (store events into Buffer), 2 (re-emit store events) - */ - - /* Vars->Flag_Auto_Limits=1: buffer full, we read the Buffer, and determine min and max bounds */ - if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 1) && (Vars->Coord_Number > 0)) - { - /* auto limits case : get limits in Buffer for each variable */ - /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ - if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); - for (i = 1; i <= Vars->Coord_Number; i++) - { - if (Vars->Coord_Type[i] & DEFS->COORD_AUTO) - { - Vars->Coord_Min[i] = FLT_MAX; - Vars->Coord_Max[i] = -FLT_MAX; - for (j = 0; j < Vars->Buffer_Counter; j++) - { - XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ - if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; - if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; - } - if (Vars->Flag_Verbose) - printf(" %s: min=%g max=%g\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i]); - } - } - Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step (read Buffer and generate new events to store in histograms) */ - } /* end if Flag_Auto_Limits == 1 */ - -#ifndef OPENACC - /* manage realloc for 'list all' if Buffer size exceeded: flush Buffer to file */ - if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List >= 2)) - { - if (Vars->Buffer_Size >= 1000000 || Vars->Flag_List == 3) - { /* save current (possibly append) and re-use Buffer */ - - Monitor_nD_Save(DEFS, Vars); - Vars->Flag_List = 3; - Vars->Buffer_Block = Vars->Buffer_Size; - Vars->Buffer_Counter = 0; - Vars->Neutron_Counter = 0; - } - else - { - Vars->Mon2D_Buffer = (double *)realloc(Vars->Mon2D_Buffer, (Vars->Coord_Number+1)*(2*Vars->Buffer_Block)*sizeof(double)); - if (Vars->Mon2D_Buffer == NULL) - { printf("Monitor_nD: %s cannot reallocate Vars->Mon2D_Buffer[%li] (%zi). Skipping.\n", Vars->compcurname, i, (long int)(2*Vars->Buffer_Block)*sizeof(double)); Vars->Flag_List = 1; } - else { - Vars->Buffer_Block = 2*Vars->Buffer_Block; - Vars->Buffer_Size = Vars->Buffer_Block; - } - } - } /* end if Buffer realloc */ -#endif - - char outsidebounds=0; - while (!While_End) - { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) or passing neutron */ - if ((Vars->Flag_Auto_Limits == 2) && (Vars->Coord_Number > 0)) - { /* Vars->Flag_Auto_Limits == 2: read back from Buffer (Buffer is filled or auto limits have been computed) */ - if (While_Buffer < Vars->Buffer_Block) - { - /* first while loop (While_Buffer) */ - /* auto limits case : scan Buffer within limits and store in Mon2D */ - Coord[0] = pp = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; - - for (i = 1; i <= Vars->Coord_Number; i++) - { - /* scanning variables in Buffer */ - if (Vars->Coord_Bin[i] <= 1) continue; - XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); - - Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; - if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); - else Coord_Index[i] = 0; - if (Vars->Flag_With_Borders) - { - if (Coord_Index[i] < 0) Coord_Index[i] = 0; - if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; - } - } /* end for */ - - /* update the PixelID, we compute it from the previous variables index */ - if (Vars->Coord_NumberNoPixel < Vars->Coord_Number) /* there is a Pixel variable */ - for (i = 1; i <= Vars->Coord_Number; i++) { - char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); - if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { - char flag_outside=0; - Coord_Index[i] = Coord[i] = 0; - for (j= 1; j < i; j++) { - /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ - if (Vars->Coord_Bin[j] == 1) continue; - if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { - flag_outside=1; - Coord[i] = 0; - break; - } - Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; - } - if (!flag_outside) { - Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; - } - } /* end if PixelID */ - } - While_Buffer++; - } /* end if in Buffer */ - else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ - { - Vars->Flag_Auto_Limits = 0; - if (!Vars->Flag_List) /* free Buffer not needed anymore (no list to output) */ - { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, p2) */ - free(Vars->Mon2D_Buffer); Vars->Mon2D_Buffer = NULL; - } - if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); - } - } /* if Vars->Flag_Auto_Limits == 2 */ - - if (Vars->Flag_Auto_Limits != 2 || !Vars->Coord_Number) /* Vars->Flag_Auto_Limits == 0 (no auto limits/list) or 1 (store events into Buffer) */ - { - /* automatically compute area and steradian solid angle when in AUTO mode */ - /* compute the steradian solid angle incoming on the monitor */ - double v; - double tmp; - v=sqrt(_particle->vx*_particle->vx + _particle->vy*_particle->vy + _particle->vz*_particle->vz); - tmp=_particle->x; - if (Vars->min_x > _particle->x){ - #pragma acc atomic write - Vars->min_x = tmp; - } - if (Vars->max_x < _particle->x){ - #pragma acc atomic write - Vars->max_x = tmp; - } - tmp=_particle->y; - if (Vars->min_y > _particle->y){ - #pragma acc atomic write - Vars->min_y = tmp; - } - if (Vars->max_y < _particle->y){ - tmp=_particle->y; - #pragma acc atomic write - Vars->max_y = tmp; - } - - #pragma acc atomic - Vars->mean_p = Vars->mean_p + _particle->p; - if (v) { - tmp=_particle->p*fabs(_particle->vx/v); - #pragma acc atomic - Vars->mean_dx = Vars->mean_dx + tmp; //_particle->p*fabs(_particle->vx/v); - tmp=_particle->p*fabs(_particle->vy/v); - #pragma acc atomic - Vars->mean_dy = Vars->mean_dy + tmp; //_particle->p*fabs(_particle->vy/v); - } - - for (i = 0; i <= Vars->Coord_Number; i++) - { /* handle current neutron : last while */ - XY = 0; - Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); - /* get values for variables to monitor */ - if (Set_Vars_Coord_Type == DEFS->COORD_X) XY = _particle->x; - else - if (Set_Vars_Coord_Type == DEFS->COORD_Y) XY = _particle->y; - else - if (Set_Vars_Coord_Type == DEFS->COORD_Z) XY = _particle->z; - else - if (Set_Vars_Coord_Type == DEFS->COORD_VX) XY = _particle->vx; - else - if (Set_Vars_Coord_Type == DEFS->COORD_VY) XY = _particle->vy; - else - if (Set_Vars_Coord_Type == DEFS->COORD_VZ) XY = _particle->vz; - else - if (Set_Vars_Coord_Type == DEFS->COORD_KX) XY = V2K*_particle->vx; - else - if (Set_Vars_Coord_Type == DEFS->COORD_KY) XY = V2K*_particle->vy; - else - if (Set_Vars_Coord_Type == DEFS->COORD_KZ) XY = V2K*_particle->vz; - else - if (Set_Vars_Coord_Type == DEFS->COORD_SX) XY = _particle->sx; - else - if (Set_Vars_Coord_Type == DEFS->COORD_SY) XY = _particle->sy; - else - if (Set_Vars_Coord_Type == DEFS->COORD_SZ) XY = _particle->sz; - else - if (Set_Vars_Coord_Type == DEFS->COORD_T) XY = _particle->t; - else - if (Set_Vars_Coord_Type == DEFS->COORD_P) XY = _particle->p; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE0) XY = Vars->UserDoubles[0]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE1) XY = Vars->UserDoubles[1]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE2) XY = Vars->UserDoubles[2]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE3) XY = Vars->UserDoubles[3]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE4) XY = Vars->UserDoubles[4]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE5) XY = Vars->UserDoubles[5]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE6) XY = Vars->UserDoubles[6]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE7) XY = Vars->UserDoubles[7]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE8) XY = Vars->UserDoubles[8]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE9) XY = Vars->UserDoubles[9]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE10) XY = Vars->UserDoubles[10]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE11) XY = Vars->UserDoubles[11]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE12) XY = Vars->UserDoubles[12]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE13) XY = Vars->UserDoubles[13]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE14) XY = Vars->UserDoubles[14]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE15) XY = Vars->UserDoubles[15]; - else - if (Set_Vars_Coord_Type == DEFS->COORD_HDIV) XY = RAD2DEG*atan2(_particle->vx,_particle->vz); - else - if (Set_Vars_Coord_Type == DEFS->COORD_VDIV) XY = RAD2DEG*atan2(_particle->vy,_particle->vz); - else - if (Set_Vars_Coord_Type == DEFS->COORD_V) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); - else - if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) - XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y+_particle->z*_particle->z); - else - if (Set_Vars_Coord_Type == DEFS->COORD_XY) - XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y)*(_particle->x > 0 ? 1 : -1); - else - if (Set_Vars_Coord_Type == DEFS->COORD_YZ) XY = sqrt(_particle->y*_particle->y+_particle->z*_particle->z); - else - if (Set_Vars_Coord_Type == DEFS->COORD_XZ) - XY = sqrt(_particle->x*_particle->x+_particle->z*_particle->z); - else - if (Set_Vars_Coord_Type == DEFS->COORD_VXY) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); - else - if (Set_Vars_Coord_Type == DEFS->COORD_VXZ) XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); - else - if (Set_Vars_Coord_Type == DEFS->COORD_VYZ) XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); - else - if (Set_Vars_Coord_Type == DEFS->COORD_K) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_KXY) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); XY *= V2K; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_KXZ) { XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); XY *= V2K; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_KYZ) { XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) { XY = _particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz; XY *= VS2E; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; if (XY != 0) XY = 2*PI/XY; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) XY = _particle->_uid; - else - if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) - { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); - if (_particle->vz != 0) - XY = RAD2DEG*atan2(XY,_particle->vz)*(_particle->x > 0 ? 1 : -1); - else XY = 0; - } - else - if (Set_Vars_Coord_Type == DEFS->COORD_THETA) { if (_particle->z != 0) XY = RAD2DEG*atan2(_particle->x,_particle->z); } - else - if (Set_Vars_Coord_Type == DEFS->COORD_PHI) { double rr=sqrt(_particle->x*_particle->x+ _particle->y*_particle->y + _particle->z*_particle->z); if (rr != 0) XY = RAD2DEG*asin(_particle->y/rr); } - else - if (Set_Vars_Coord_Type == DEFS->COORD_USER1) {int fail; XY = particle_getvar(_particle,Vars->UserVariable1,&fail); if(fail) XY=0; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_USER2) {int fail; XY = particle_getvar(_particle,Vars->UserVariable2,&fail); if(fail) XY=0; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_USER3) {int fail; XY = particle_getvar(_particle,Vars->UserVariable3,&fail); if(fail) XY=0; } - else - if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID && !Vars->Flag_Auto_Limits) { - /* compute the PixelID from previous coordinates - the PixelID is the product of Coord_Index[i] in the detector geometry - pixelID = sum( Coord_Index[j]*prod(Vars->Coord_Bin[1:(j-1)]) ) - - this does not apply when we store events in the buffer as Coord_Index - is not set. Then the pixelID will be re-computed during SAVE. - */ - char flag_outside=0; - for (j= 1; j < i; j++) { - /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ - if (Vars->Coord_Bin[j] <= 1) continue; - if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { - flag_outside=1; XY=0; break; - } - XY += Coord_Index[j]*Vars->Coord_BinProd[j-1]; - } - if (Vars->Flag_mantid && Vars->Flag_OFF && Vars->OFF_polyidx >=0) XY=Vars->OFF_polyidx; - if (!flag_outside) XY += Vars->Coord_Min[i]; - } - - /* handle 'abs' and 'log' keywords */ - if (Vars->Coord_Type[i] & DEFS->COORD_ABS) XY=fabs(XY); - - if (Vars->Coord_Type[i] & DEFS->COORD_LOG) /* compute log of variable if requested */ - { if (XY > 0) XY = log(XY)/log(10); - else XY = -100; } - - Coord[i] = XY; Coord_Index[i] = 0; - if (i == 0) { pp = XY; Coord_Index[i] = 0; } - else { - /* check bounds for variables which have no automatic limits */ - if ((!Vars->Flag_Auto_Limits || !(Vars->Coord_Type[i] & DEFS->COORD_AUTO)) && Vars->Coord_Bin[i]>1) - { /* compute index in histograms for each variable to monitor */ - XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); - if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); - if (Vars->Flag_With_Borders) - { - if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; - if (Coord_Index[i] < 0) Coord_Index[i] = 0; - } - //if (0 > Coord_Index[i] || Coord_Index[i] >= Vars->Coord_Bin[i]) - // outsidebounds=1; - } /* else will get Index later from Buffer when Flag_Auto_Limits == 2 */ - } - - } /* end for i */ - While_End = 1; - }/* end else if Vars->Flag_Auto_Limits == 2 */ - - /* ====================================================================== */ - /* store n1d/2d neutron from Buffer (Auto_Limits == 2) or current neutron in while */ - if (Vars->Flag_Auto_Limits != 1) /* not when storing auto limits Buffer */ - { - /* apply per cm2 */ - if (Vars->Flag_per_cm2 && Vars->area != 0) - pp /= Vars->area; - - /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ - if ( Vars->Coord_NumberNoPixel == 2 && !Vars->Flag_Multiple) - { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ - - i = Coord_Index[1]; - j = Coord_Index[2]; - if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) - { - if (Vars->Mon2D_N) { - double p2 = pp*pp; - #pragma acc atomic - Vars->Mon2D_N[i][j] = Vars->Mon2D_N[i][j]+1; - #pragma acc atomic - Vars->Mon2D_p[i][j] = Vars->Mon2D_p[i][j]+pp; - #pragma acc atomic - Vars->Mon2D_p2[i][j] = Vars->Mon2D_p2[i][j] + p2; - } - } else { - outsidebounds=1; - } - } else { - /* 1D and n1D case : Vars->Flag_Multiple */ - /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ - - for (i= 1; i <= Vars->Coord_Number; i++) { - j = Coord_Index[i]; - if (j >= 0 && j < Vars->Coord_Bin[i]) { - if (Vars->Flag_Multiple && Vars->Mon2D_N) { - if (Vars->Mon2D_N) { - double p2 = pp*pp; - #pragma acc atomic - Vars->Mon2D_N[i-1][j] = Vars->Mon2D_N[i-1][j]+1; - #pragma acc atomic - Vars->Mon2D_p[i-1][j] = Vars->Mon2D_p[i-1][j]+pp; - #pragma acc atomic - Vars->Mon2D_p2[i-1][j] = Vars->Mon2D_p2[i-1][j] + p2; - } - } - } else { - outsidebounds=1; - break; - } - } - } - } /* end (Vars->Flag_Auto_Limits != 1) */ - - if (Vars->Flag_Auto_Limits != 2 && !outsidebounds) /* not when reading auto limits Buffer */ - { /* now store Coord into Buffer (no index needed) if necessary (list or auto limits) */ - if ((Vars->Buffer_Counter < Vars->Buffer_Block) && ((Vars->Flag_List) || (Vars->Flag_Auto_Limits == 1))) - { - for (i = 0; i <= Vars->Coord_Number; i++) - { - // This is is where the list is appended. How to make this "atomic"? - #pragma acc atomic write - Vars->Mon2D_Buffer[i + Vars->Buffer_Counter*(Vars->Coord_Number+1)] = Coord[i]; - } - #pragma acc atomic update - Vars->Buffer_Counter = Vars->Buffer_Counter + 1; - if (Vars->Flag_Verbose && (Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List == 1)) - printf("Monitor_nD: %s %li neutrons stored in List.\n", Vars->compcurname, Vars->Buffer_Counter); - } - } /* end (Vars->Flag_Auto_Limits != 2) */ - - } /* end while */ - #pragma acc atomic - Vars->Nsum = Vars->Nsum + 1; - #pragma acc atomic - Vars->psum = Vars->psum + pp; - #pragma acc atomic - Vars->p2sum = Vars->p2sum + pp*pp; - - /*determine return value: 1:neutron was in bounds and measured, -1: outside bounds, 0: outside bounds, should be absorbed.*/ - if(outsidebounds){ - if(Vars->Flag_Absorb){ - return 0; - }else{ - return -1; - } - } else { - /* For the OPENACC list buffer an atomic capture/update of the - updated Neutron_counter - updated below under list mode - Only need to be updated when inside bounds. */ - #pragma acc atomic update - Vars->Neutron_Counter++; - } - return 1; -} /* end Monitor_nD_Trace */ - -/* ========================================================================= */ -/* Monitor_nD_Save: this routine is used to save data files */ -/* ========================================================================= */ - -MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars) - { - char *fname; - long i,j; - double *p0m = NULL; - double *p1m = NULL; - double *p2m = NULL; - char Coord_X_Label[CHAR_BUF_LENGTH]; - double min1d, max1d; - double min2d, max2d; - char While_End = 0; - long While_Buffer = 0; - double XY=0, pp=0; - double Coord[MONnD_COORD_NMAX]; - long Coord_Index[MONnD_COORD_NMAX]; - char label[CHAR_BUF_LENGTH]; - - MCDETECTOR detector; - strcpy(detector.options,Vars->option); - if (Vars->Flag_Verbose && Vars->Flag_per_cm2) { - printf("Monitor_nD: %s: active flat detector area is %g [cm^2], total area is %g [cm^2]\n", - Vars->compcurname, (Vars->max_x-Vars->min_x) - *(Vars->max_y-Vars->min_y)*1E4, Vars->area); - printf("Monitor_nD: %s: beam solid angle is %g [st] (%g x %g [deg^2])\n", - Vars->compcurname, - 2*fabs(2*atan2(Vars->mean_dx,Vars->mean_p) - *sin(2*atan2(Vars->mean_dy,Vars->mean_p)/2)), - atan2(Vars->mean_dx,Vars->mean_p)*RAD2DEG, - atan2(Vars->mean_dy,Vars->mean_p)*RAD2DEG); - } - - /* check Buffer flush when end of simulation reached */ - if ((Vars->Buffer_Counter <= Vars->Buffer_Block) && Vars->Flag_Auto_Limits && Vars->Mon2D_Buffer && Vars->Buffer_Counter) - { - /* Get Auto Limits */ - if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); - - for (i = 1; i <= Vars->Coord_Number; i++) - { - if ((Vars->Coord_Type[i] & DEFS->COORD_AUTO) && Vars->Coord_Bin[i] > 1) - { - Vars->Coord_Min[i] = FLT_MAX; - Vars->Coord_Max[i] = -FLT_MAX; - for (j = 0; j < Vars->Buffer_Counter; j++) - { - XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ - if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; - if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; - } - if (Vars->Flag_Verbose) - printf(" %s: min=%g max=%g in %li bins\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i], Vars->Coord_Bin[i]); - } - } - Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step */ - Vars->Buffer_Block = Vars->Buffer_Counter; - - while (!While_End) - { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) */ - /* simulation ended before Buffer was filled. Limits have to be computed, and stored events must be sent into histograms */ - - if (While_Buffer < Vars->Buffer_Block) - { - /* first while loops (While_Buffer) */ - Coord[0] = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; - - /* auto limits case : scan Buffer within limits and store in Mon2D */ - for (i = 1; i <= Vars->Coord_Number; i++) - { - /* scanning variables in Buffer */ - if (Vars->Coord_Bin[i] <= 1) Coord_Index[i] = 0; - else { - XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); - Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; - if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); - else Coord_Index[i] = 0; - if (Vars->Flag_With_Borders) - { - if (Coord_Index[i] < 0) Coord_Index[i] = 0; - if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; - } - } - } /* end for */ - - /* update the PixelID, we compute it from the previous variables index */ - for (i = 1; i <= Vars->Coord_Number; i++) { - char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); - if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { - char outsidebounds=0; - Coord_Index[i] = Coord[i] = 0; - for (j= 1; j < i; j++) { - /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ - if (Vars->Coord_Bin[j] == 1) continue; - if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { - outsidebounds=1; - Coord[i] = 0; - break; - } - Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; - } - if (!outsidebounds) { - Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; - } - } /* end if PixelID */ - } - While_Buffer++; - } /* end if in Buffer */ - else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ - { - Vars->Flag_Auto_Limits = 0; - While_End = 1; - if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); - } - - /* store n1d/2d section from Buffer */ - - pp = Coord[0]; - /* apply per cm2 or per st */ - if (Vars->Flag_per_cm2 && Vars->area != 0) - pp /= Vars->area; - - /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ - if (!Vars->Flag_Multiple && Vars->Coord_NumberNoPixel == 2) - { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ - i = Coord_Index[1]; - j = Coord_Index[2]; - if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) - { - if (Vars->Mon2D_N) { - Vars->Mon2D_N[i][j]++; - Vars->Mon2D_p[i][j] += pp; - Vars->Mon2D_p2[i][j] += pp*pp; - } - } else if (Vars->Flag_Absorb) pp=0; - } - else - /* 1D and n1D case : Vars->Flag_Multiple */ - { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ - for (i= 1; i <= Vars->Coord_Number; i++) - { - j = Coord_Index[i]; - if (j >= 0 && j < Vars->Coord_Bin[i]) - { - if (Vars->Flag_Multiple && Vars->Mon2D_N) { - Vars->Mon2D_N[i-1][j]++; - Vars->Mon2D_p[i-1][j] += pp; - Vars->Mon2D_p2[i-1][j] += pp*pp; - } - } else if (Vars->Flag_Absorb) { - pp=0; break; - } - } - } /* end store 2D/1D */ - - } /* end while */ - } /* end Force Get Limits */ - - /* write output files (sent to file as p[i*n + j] vectors) */ - if (Vars->Coord_Number == 0) - { - double Nsum; - double psum, p2sum; - Nsum = Vars->Nsum; - psum = Vars->psum; - p2sum= Vars->p2sum; - if (Vars->Flag_signal != DEFS->COORD_P && Nsum > 0) - { psum /=Nsum; p2sum /= Nsum*Nsum; } - /* DETECTOR_OUT_0D(Vars->Monitor_Label, Vars->Nsum, Vars->psum, Vars->p2sum); */ - detector = mcdetector_out_0D(Vars->Monitor_Label, Nsum, psum, p2sum, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); - } - else - if (strlen(Vars->Mon_File) > 0) - { - fname = (char*)malloc(strlen(Vars->Mon_File)+10*Vars->Coord_Number); - if (Vars->Flag_List && Vars->Mon2D_Buffer) /* List: DETECTOR_OUT_2D */ - { - - if (Vars->Flag_List >= 2) Vars->Buffer_Size = Vars->Neutron_Counter; - if (Vars->Buffer_Size >= Vars->Neutron_Counter) - Vars->Buffer_Size = Vars->Neutron_Counter; - strcpy(fname,Vars->Mon_File); - if (strchr(Vars->Mon_File,'.') == NULL) strcat(fname, "_list"); - - strcpy(Coord_X_Label,""); - for (i= 0; i <= Vars->Coord_Number; i++) - { - strcat(Coord_X_Label, Vars->Coord_Var[i]); - strcat(Coord_X_Label, " "); - if (strchr(Vars->Mon_File,'.') == NULL) - { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i]); } - } - if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s List (%lix%li).\n", Vars->compcurname, fname,(long int)Vars->Neutron_Counter,Vars->Coord_Number); - - /* handle the type of list output */ - strcpy(label, Vars->Monitor_Label); - - detector = mcdetector_out_list( - label, "List of neutron events", Coord_X_Label, - -Vars->Buffer_Size, Vars->Coord_Number+1, - Vars->Mon2D_Buffer, - fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot, Vars->option,Vars->compcurindex); - } - if (Vars->Flag_Multiple) /* n1D: DETECTOR_OUT_1D */ - { - for (i= 0; i < Vars->Coord_Number; i++) - { - - strcpy(fname,Vars->Mon_File); - if (strchr(Vars->Mon_File,'.') == NULL) - { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i+1]); } - sprintf(Coord_X_Label, "%s monitor", Vars->Coord_Label[i+1]); - strcpy(label, Coord_X_Label); - if (Vars->Coord_Bin[i+1] > 0) { /* 1D monitor */ - if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 1D (%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[i+1]); - min1d = Vars->Coord_Min[i+1]; - max1d = Vars->Coord_Max[i+1]; - if (min1d == max1d) max1d = min1d+1e-6; - p1m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); - p2m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); - if (p2m == NULL) /* use Raw Buffer line output */ - { - if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for output. Using raw data.\n", Vars->compcurname); - if (p1m != NULL) free(p1m); - detector = mcdetector_out_1D( - label, - Vars->Coord_Label[i+1], - Vars->Coord_Label[0], - Vars->Coord_Var[i+1], - min1d, max1d, - Vars->Coord_Bin[i+1], - Vars->Mon2D_N[i],Vars->Mon2D_p[i],Vars->Mon2D_p2[i], - fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); - } /* if (p2m == NULL) */ - else - { - if (Vars->Flag_log != 0) - { - XY = FLT_MAX; - for (j=0; j < Vars->Coord_Bin[i+1]; j++) /* search min of signal */ - if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j] > 0)) XY = Vars->Mon2D_p[i][j]; - if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; - } /* if */ - - for (j=0; j < Vars->Coord_Bin[i+1]; j++) - { - p1m[j] = Vars->Mon2D_p[i][j]; - p2m[j] = Vars->Mon2D_p2[i][j]; - if (Vars->Flag_signal != DEFS->COORD_P && Vars->Mon2D_N[i][j] > 0) - { /* normalize mean signal to the number of events */ - p1m[j] /= Vars->Mon2D_N[i][j]; - p2m[j] /= Vars->Mon2D_N[i][j]*Vars->Mon2D_N[i][j]; - } - if (Vars->Flag_log != 0) - { - if ((p1m[j] > 0) && (p2m[j] > 0)) - { - p2m[j] /= p1m[j]*p1m[j]; - p1m[j] = log(p1m[j])/log(10); - } - else - { - p1m[j] = XY; - p2m[j] = 0; - } - } - } /* for */ - detector = mcdetector_out_1D( - label, - Vars->Coord_Label[i+1], - Vars->Coord_Label[0], - Vars->Coord_Var[i+1], - min1d, max1d, - Vars->Coord_Bin[i+1], - Vars->Mon2D_N[i],p1m,p2m, - fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); - - } /* else */ - /* comment out 'free memory' lines to avoid loosing arrays if - 'detector' structure is used by other instrument parts - if (p1m != NULL) free(p1m); p1m=NULL; - if (p2m != NULL) free(p2m); p2m=NULL; - */ - } else { /* 0d monitor */ - detector = mcdetector_out_0D(label, Vars->Mon2D_p[i][0], Vars->Mon2D_p2[i][0], Vars->Mon2D_N[i][0], Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); - } - - - } /* for */ - } /* if 1D */ - else - if (Vars->Coord_NumberNoPixel == 2) /* 2D: DETECTOR_OUT_2D */ - { - strcpy(fname,Vars->Mon_File); - - p0m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); - p1m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); - p2m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); - if (p2m == NULL) - { - if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for 2D array (%zi). Skipping.\n", Vars->compcurname, 3*Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); - /* comment out 'free memory' lines to avoid loosing arrays if - 'detector' structure is used by other instrument parts - if (p0m != NULL) free(p0m); - if (p1m != NULL) free(p1m); - */ - } - else - { - if (Vars->Flag_log != 0) - { - XY = FLT_MAX; - for (i= 0; i < Vars->Coord_Bin[1]; i++) - for (j= 0; j < Vars->Coord_Bin[2]; j++) /* search min of signal */ - if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j]>0)) XY = Vars->Mon2D_p[i][j]; - if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; - } - for (i= 0; i < Vars->Coord_Bin[1]; i++) - { - for (j= 0; j < Vars->Coord_Bin[2]; j++) - { - long index; - index = j + i*Vars->Coord_Bin[2]; - p0m[index] = Vars->Mon2D_N[i][j]; - p1m[index] = Vars->Mon2D_p[i][j]; - p2m[index] = Vars->Mon2D_p2[i][j]; - if (Vars->Flag_signal != DEFS->COORD_P && p0m[index] > 0) - { - p1m[index] /= p0m[index]; - p2m[index] /= p0m[index]*p0m[index]; - } - - if (Vars->Flag_log != 0) - { - if ((p1m[index] > 0) && (p2m[index] > 0)) - { - p2m[index] /= (p1m[index]*p1m[index]); - p1m[index] = log(p1m[index])/log(10); - - } - else - { - p1m[index] = XY; - p2m[index] = 0; - } - } - } - } - if (strchr(Vars->Mon_File,'.') == NULL) - { strcat(fname, "."); strcat(fname, Vars->Coord_Var[1]); - strcat(fname, "_"); strcat(fname, Vars->Coord_Var[2]); } - if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 2D (%lix%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[1], Vars->Coord_Bin[2]); - - min1d = Vars->Coord_Min[1]; - max1d = Vars->Coord_Max[1]; - if (min1d == max1d) max1d = min1d+1e-6; - min2d = Vars->Coord_Min[2]; - max2d = Vars->Coord_Max[2]; - if (min2d == max2d) max2d = min2d+1e-6; - strcpy(label, Vars->Monitor_Label); - if (Vars->Coord_Bin[1]*Vars->Coord_Bin[2] > 1 - && Vars->Flag_signal == DEFS->COORD_P) - strcat(label, " per bin"); - if (Vars->Flag_List) { - detector = mcdetector_out_2D_list( - label, - Vars->Coord_Label[1], - Vars->Coord_Label[2], - min1d, max1d, - min2d, max2d, - Vars->Coord_Bin[1], - Vars->Coord_Bin[2], - p0m,p1m,p2m, - fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->option,Vars->compcurindex); - } else { - detector = mcdetector_out_2D( - label, - Vars->Coord_Label[1], - Vars->Coord_Label[2], - min1d, max1d, - min2d, max2d, - Vars->Coord_Bin[1], - Vars->Coord_Bin[2], - p0m,p1m,p2m, - fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); - } - - /* comment out 'free memory' lines to avoid loosing arrays if - 'detector' structure is used by other instrument parts - if (p0m != NULL) free(p0m); - if (p1m != NULL) free(p1m); - if (p2m != NULL) free(p2m); - */ - } - } - free(fname); - } - return(detector); - } /* end Monitor_nD_Save */ - -/* ========================================================================= */ -/* Monitor_nD_Finally: this routine is used to free memory */ -/* ========================================================================= */ - -void Monitor_nD_Finally(MonitornD_Defines_type *DEFS, - MonitornD_Variables_type *Vars) - { - int i; - - /* Now Free memory Mon2D.. */ - if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) - { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ - if (Vars->Mon2D_Buffer != NULL) free(Vars->Mon2D_Buffer); - } - - /* 1D and n1D case : Vars->Flag_Multiple */ - if (Vars->Flag_Multiple && Vars->Coord_Number) - { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ - for (i= 0; i < Vars->Coord_Number; i++) - { - free(Vars->Mon2D_N[i]); - free(Vars->Mon2D_p[i]); - free(Vars->Mon2D_p2[i]); - } - free(Vars->Mon2D_N); - free(Vars->Mon2D_p); - free(Vars->Mon2D_p2); - } - - - /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ - if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) - { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ - for (i= 0; i < Vars->Coord_Bin[1]; i++) - { - free(Vars->Mon2D_N[i]); - free(Vars->Mon2D_p[i]); - free(Vars->Mon2D_p2[i]); - } - free(Vars->Mon2D_N); - free(Vars->Mon2D_p); - free(Vars->Mon2D_p2); - } - } /* end Monitor_nD_Finally */ - -/* ========================================================================= */ -/* Monitor_nD_McDisplay: this routine is used to display component */ -/* ========================================================================= */ - -void Monitor_nD_McDisplay(MonitornD_Defines_type *DEFS, - MonitornD_Variables_type *Vars) - { - double radius, h; - double xmin; - double xmax; - double ymin; - double ymax; - double zmin; - double zmax; - int i; - double hdiv_min=-180, hdiv_max=180, vdiv_min=-90, vdiv_max=90; - char restricted = 0; - - radius = Vars->Sphere_Radius; - h = Vars->Cylinder_Height; - xmin = Vars->mxmin; - xmax = Vars->mxmax; - ymin = Vars->mymin; - ymax = Vars->mymax; - zmin = Vars->mzmin; - zmax = Vars->mzmax; - - /* determine if there are angular limits set at start (no auto) in coord_types - * cylinder/banana: look for hdiv - * sphere: look for angle, radius (->atan2(val,radius)), hdiv, vdiv - * this activates a 'restricted' flag, to draw a region as blades on cylinder/sphere - */ - for (i= 0; i <= Vars->Coord_Number; i++) - { - int Set_Vars_Coord_Type; - Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); - if (Set_Vars_Coord_Type == DEFS->COORD_HDIV || Set_Vars_Coord_Type == DEFS->COORD_THETA) - { hdiv_min = Vars->Coord_Min[i]; hdiv_max = Vars->Coord_Max[i]; restricted = 1; } - else if (Set_Vars_Coord_Type == DEFS->COORD_VDIV || Set_Vars_Coord_Type == DEFS->COORD_PHI) - { vdiv_min = Vars->Coord_Min[i]; vdiv_max = Vars->Coord_Max[i];restricted = 1; } - else if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) - { hdiv_min = vdiv_min = Vars->Coord_Min[i]; - hdiv_max = vdiv_max = Vars->Coord_Max[i]; - restricted = 1; } - else if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) - { double angle; - angle = RAD2DEG*atan2(Vars->Coord_Max[i], radius); - hdiv_min = vdiv_min = angle; - hdiv_max = vdiv_max = angle; - restricted = 1; } - else if (Set_Vars_Coord_Type == DEFS->COORD_Y && abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE) - { - vdiv_min = atan2(ymin,radius)*RAD2DEG; - vdiv_max = atan2(ymax,radius)*RAD2DEG; - restricted = 1; - } - } - /* full sphere */ - if ((!restricted && (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) - || abs(Vars->Flag_Shape) == DEFS->SHAPE_PREVIOUS) - { - mcdis_magnify(""); - mcdis_circle("xy",0,0,0,radius); - mcdis_circle("xz",0,0,0,radius); - mcdis_circle("yz",0,0,0,radius); - } - /* banana/cylinder/sphere portion */ - else - if (restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) - || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA) - || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE))) - { - int NH=24, NV=24; - int ih, iv; - double width, height; - int issphere; - issphere = (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE); - width = (hdiv_max-hdiv_min)/NH; - if (!issphere) { - NV=1; /* cylinder has vertical axis */ - } - height= (vdiv_max-vdiv_min)/NV; - - /* check width and height of elements (sphere) to make sure the nb - of plates remains limited */ - if (width < 10 && NH > 1) { width = 10; NH=(hdiv_max-hdiv_min)/width; width=(hdiv_max-hdiv_min)/NH; } - if (height < 10 && NV > 1) { height = 10; NV=(vdiv_max-vdiv_min)/height; height= (vdiv_max-vdiv_min)/NV; } - - mcdis_magnify("xyz"); - for(ih = 0; ih < NH; ih++) - for(iv = 0; iv < NV; iv++) - { - double theta0, phi0, theta1, phi1; /* angles in spherical coordinates */ - double x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3; /* vertices at plate edges */ - phi0 = (hdiv_min+ width*ih-90)*DEG2RAD; /* in xz plane */ - phi1 = (hdiv_min+ width*(ih+1)-90)*DEG2RAD; - if (issphere) - { - theta0= (vdiv_min+height* iv + 90) *DEG2RAD; /* in vertical plane */ - theta1= (vdiv_min+height*(iv+1) + 90)*DEG2RAD; - - y0 = -radius*cos(theta0); /* z with Z vertical */ - y1 = -radius*cos(theta1); - if (y0 < ymin) y0=ymin; - if (y0 > ymax) y0=ymax; - if (y1 < ymin) y1=ymin; - if (y1 > ymax) y1=ymax; - } else { - y0 = ymin; - y1 = ymax; - theta0=theta1=90*DEG2RAD; - } - - x0 = radius*sin(theta0)*cos(phi0); /* x with Z vertical */ - z0 =-radius*sin(theta0)*sin(phi0); /* y with Z vertical */ - x1 = radius*sin(theta1)*cos(phi0); - z1 =-radius*sin(theta1)*sin(phi0); - x2 = radius*sin(theta1)*cos(phi1); - z2 =-radius*sin(theta1)*sin(phi1); - x3 = radius*sin(theta0)*cos(phi1); - z3 =-radius*sin(theta0)*sin(phi1); - y2 = y1; y3 = y0; - - mcdis_multiline(5, - x0,y0,z0, - x1,y1,z1, - x2,y2,z2, - x3,y3,z3, - x0,y0,z0); - } - if (Vars->Flag_mantid) { - /* First define the base pixel type */ - double dt, dy; - dt = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; - dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; - printf("MANTID_BANANA_DET: %g, %g, %g, %g, %g, %li, %li, %llu\n", radius, - Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); - } - } - /* disk (circle) */ - else - if (abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) - { - mcdis_magnify(""); - mcdis_circle("xy",0,0,0,radius); - } - /* rectangle (square) */ - else - if (abs(Vars->Flag_Shape) == DEFS->SHAPE_SQUARE) - { - mcdis_magnify("xy"); - mcdis_multiline(5, (double)xmin, (double)ymin, 0.0, - (double)xmax, (double)ymin, 0.0, - (double)xmax, (double)ymax, 0.0, - (double)xmin, (double)ymax, 0.0, - (double)xmin, (double)ymin, 0.0); - - if (Vars->Flag_mantid) { - /* First define the base pixel type */ - double dx, dy; - dx = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; - dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; - printf("MANTID_RECTANGULAR_DET: %g, %g, %g, %g, %li, %li, %llu\n", - Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); - } - } - /* full cylinder/banana */ - else - if (!restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA))) - { - mcdis_magnify("xyz"); - mcdis_circle("xz", 0, h/2.0, 0, radius); - mcdis_circle("xz", 0, -h/2.0, 0, radius); - mcdis_line(-radius, -h/2.0, 0, -radius, +h/2.0, 0); - mcdis_line(+radius, -h/2.0, 0, +radius, +h/2.0, 0); - mcdis_line(0, -h/2.0, -radius, 0, +h/2.0, -radius); - mcdis_line(0, -h/2.0, +radius, 0, +h/2.0, +radius); - } - else - /* box */ - if (abs(Vars->Flag_Shape) == DEFS->SHAPE_BOX) - { - mcdis_magnify("xyz"); - mcdis_multiline(5, xmin, ymin, zmin, - xmax, ymin, zmin, - xmax, ymax, zmin, - xmin, ymax, zmin, - xmin, ymin, zmin); - mcdis_multiline(5, xmin, ymin, zmax, - xmax, ymin, zmax, - xmax, ymax, zmax, - xmin, ymax, zmax, - xmin, ymin, zmax); - mcdis_line(xmin, ymin, zmin, xmin, ymin, zmax); - mcdis_line(xmax, ymin, zmin, xmax, ymin, zmax); - mcdis_line(xmin, ymax, zmin, xmin, ymax, zmax); - mcdis_line(xmax, ymax, zmin, xmax, ymax, zmax); - } - } /* end Monitor_nD_McDisplay */ - -/* end of monitor_nd-lib.c */ - - -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Runtime: share/interoff.h -* -* %Identification -* Written by: Reynald Arnerin -* Date: Jun 12, 2008 -* Release: -* Version: -* -* Object File Format intersection header for McStas. Requires the qsort function. -* -* Such files may be obtained with e.g. -* qhull < points.xyz Qx Qv Tv o > points.off -* where points.xyz has format: -* 3 -* -* -* ... -* The resulting file should have its first line being changed from '3' into 'OFF'. -* It can then be displayed with geomview. -* A similar, but somewhat older solution is to use 'powercrust' with e.g. -* powercrust -i points.xyz -* which will generate a 'pc.off' file to be renamed as suited. -* -*******************************************************************************/ - -#ifndef INTEROFF_LIB_H -#define INTEROFF_LIB_H "$Revision$" - -#ifndef OFF_EPSILON -#define OFF_EPSILON 1e-13 -#endif - -#ifndef OFF_INTERSECT_MAX -#ifdef OPENACC -#define OFF_INTERSECT_MAX 100 -#else -#define OFF_INTERSECT_MAX 1024 -#endif -#endif - -//#include - -#define N_VERTEX_DISPLAYED 200000 - -typedef struct intersection { - MCNUM time; //time of the intersection - Coords v; //intersection point - Coords normal; //normal vector of the surface intersected - short in_out; //1 if the ray enters the volume, -1 otherwise - short edge; //1 if the intersection is on the boundary of the polygon, and error is possible - unsigned long index; // index of the face -} intersection; - -typedef struct polygon { - MCNUM* p; //vertices of the polygon in adjacent order, this way : x1 | y1 | z1 | x2 | y2 | z2 ... - int npol; //number of vertices - #pragma acc shape(p[0:npol]) init_needed(npol) - Coords normal; - double D; -} polygon; - -typedef struct off_struct { - long vtxSize; - long polySize; - long faceSize; - Coords* vtxArray; - #pragma acc shape(vtxArray[0:vtxSize]) init_needed(vtxSize) - Coords* normalArray; - #pragma acc shape(vtxArray[0:faceSize]) init_needed(faceSize) - unsigned long* faceArray; - #pragma acc shape(vtxArray[0:faceSize][0:polySize]) init_needed(faceSize,polySize) - double* DArray; - #pragma acc shape(vtxArray[0:polySize]) init_needed(polySize) - char *filename; - int mantidflag; - long mantidoffset; - intersection intersects[OFF_INTERSECT_MAX]; // After a call to off_intersect_all contains the list of intersections. - int nextintersect; // 'Next' intersection (first t>0) solution after call to off_intersect_all - int numintersect; // Number of intersections after call to off_intersect_all -} off_struct; - -/******************************************************************************* -* long off_init( char *offfile, double xwidth, double yheight, double zdepth, off_struct* data) -* ACTION: read an OFF file, optionally center object and rescale, initialize OFF data structure -* INPUT: 'offfile' OFF file to read -* 'xwidth,yheight,zdepth' if given as non-zero, apply bounding box. -* Specifying only one of these will also use the same ratio on all axes -* 'notcenter' center the object to the (0,0,0) position in local frame when set to zero -* RETURN: number of polyhedra and 'data' OFF structure -*******************************************************************************/ -long off_init( char *offfile, double xwidth, double yheight, double zdepth, - int notcenter, off_struct* data); - -/******************************************************************************* -* int off_intersect_all(double* t0, double* t3, - Coords *n0, Coords *n3, - double x, double y, double z, - double vx, double vy, double vz, - double ax, double ay, double az, - off_struct *data ) -* ACTION: computes intersection of neutron trajectory with an object. -* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron -* ax, ay, az are the local acceleration vector -* data points to the OFF data structure -* RETURN: the number of polyhedral which trajectory intersects -* t0 and t3 are the smallest incoming and outgoing intersection times -* n0 and n3 are the corresponding normal vectors to the surface -* data is the full OFF structure, including a list intersection type -*******************************************************************************/ -#pragma acc routine -int off_intersect_all(double* t0, double* t3, - Coords *n0, Coords *n3, - double x, double y, double z, - double vx, double vy, double vz, - double ax, double ay, double az, - off_struct *data ); - -/******************************************************************************* -* int off_intersect(double* t0, double* t3, - Coords *n0, Coords *n3, - double x, double y, double z, - double vx, double vy, double vz, - double ax, double ay, double az, - off_struct data ) -* ACTION: computes intersection of neutron trajectory with an object. -* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron -* ax, ay, az are the local acceleration vector -* data points to the OFF data structure -* RETURN: the number of polyhedral which trajectory intersects -* t0 and t3 are the smallest incoming and outgoing intersection times -* n0 and n3 are the corresponding normal vectors to the surface -*******************************************************************************/ -#pragma acc routine -int off_intersect(double* t0, double* t3, - Coords *n0, Coords *n3, - double x, double y, double z, - double vx, double vy, double vz, - double ax, double ay, double az, - off_struct data ); - -/***************************************************************************** -* int off_intersectx(double* l0, double* l3, - Coords *n0, Coords *n3, - double x, double y, double z, - double kx, double ky, double kz, - off_struct data ) -* ACTION: computes intersection of an xray trajectory with an object. -* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray -* respectively. data points to the OFF data structure. -* RETURN: the number of polyhedral the trajectory intersects -* l0 and l3 are the smallest incoming and outgoing intersection lengths -* n0 and n3 are the corresponding normal vectors to the surface -*******************************************************************************/ -#pragma acc routine -int off_x_intersect(double *l0,double *l3, - Coords *n0, Coords *n3, - double x, double y, double z, - double kx, double ky, double kz, - off_struct data ); - -/******************************************************************************* -* void off_display(off_struct data) -* ACTION: display up to N_VERTEX_DISPLAYED points from the object -*******************************************************************************/ -void off_display(off_struct); - -/******************************************************************************* -void p_to_quadratic(double eq[], Coords acc, - Coords pos, Coords vel, - double* teq) -* ACTION: define the quadratic for the intersection of a parabola with a plane -* INPUT: 'eq' plane equation -* 'acc' acceleration vector -* 'vel' velocity of the particle -* 'pos' position of the particle -* equation of plane A * x + B * y + C * z - D = 0 -* eq[0] = (C*az)/2+(B*ay)/2+(A*ax)/2 -* eq[1] = C*vz+B*vy+A*vx -* eq[2] = C*z0+B*y0+A*x0-D -* RETURN: equation of parabola: teq(0) * t^2 + teq(1) * t + teq(2) -*******************************************************************************/ -void p_to_quadratic(Coords norm, MCNUM d, Coords acc, Coords pos, Coords vel, - double* teq); - -/******************************************************************************* -int quadraticSolve(double eq[], double* x1, double* x2); -* ACTION: solves the quadratic for the roots x1 and x2 -* eq[0] * t^2 + eq[1] * t + eq[2] = 0 -* INPUT: 'eq' the coefficients of the parabola -* RETURN: roots x1 and x2 and the number of solutions -*******************************************************************************/ -int quadraticSolve(double* eq, double* x1, double* x2); - -#endif - -/* end of interoff-lib.h */ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Runtime: share/interoff-lib.c -* -* %Identification -* Written by: Reynald Arnerin -* Date: Jun 12, 2008 -* Origin: ILL -* Release: $Revision$ -* Version: McStas X.Y -* -* Object File Format intersection library for McStas. Requires the qsort function. -* -* Such files may be obtained with e.g. -* qhull < points.xyz Qx Qv Tv o > points.off -* where points.xyz has format (it supports comments): -* 3 -* -* -* ... -* The resulting file should have its first line being changed from '3' into 'OFF'. -* It can then be displayed with geomview. -* A similar, but somewhat older solution is to use 'powercrust' with e.g. -* powercrust -i points.xyz -* which will generate a 'pc.off' file to be renamed as suited. -* -*******************************************************************************/ - -#ifndef INTEROFF_LIB_H -#include "interoff-lib.h" -#endif - -#ifndef INTEROFF_LIB_C -#define INTEROFF_LIB_C "$Revision$" - -#ifdef OPENACC // If on GPU map fprintf to printf -#define fprintf(stderr,...) printf(__VA_ARGS__) -#endif - -#pragma acc routine -double off_F(double x, double y,double z,double A,double B,double C,double D) { - return ( A*x + B*y + C*z + D ); -} - -#pragma acc routine -char off_sign(double a) { - if (a<0) return(-1); - else if (a==0) return(0); - else return(1); -} - -// off_normal ****************************************************************** -//gives the normal vector of p -#pragma acc routine -void off_normal(Coords* n, polygon p) -{ - //using Newell method - int i=0,j=0; - n->x=0;n->y=0;n->z=0; - for (i = 0, j = p.npol-1; i < p.npol; j = i++) - { - MCNUM x1=p.p[3*i], - y1=p.p[3*i+1], - z1=p.p[3*i+2]; - MCNUM x2=p.p[3*j], - y2=p.p[3*j+1], - z2=p.p[3*j+2]; - // n is the cross product of v1*v2 - n->x += (y1 - y2) * (z1 + z2); - n->y += (z1 - z2) * (x1 + x2); - n->z += (x1 - x2) * (y1 + y2); - } -} /* off_normal */ - -// off_pnpoly ****************************************************************** -//based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html -//return 0 if the vertex is out -// 1 if it is in -// -1 if on the boundary -#pragma acc routine -int off_pnpoly(polygon p, Coords v) -{ - int i=0, c = 0; - MCNUM minx=FLT_MAX,maxx=-FLT_MAX,miny=FLT_MAX,maxy=-FLT_MAX,minz=FLT_MAX,maxz=-FLT_MAX; - MCNUM areax=0,areay=0,areaz=0; - - int pol2dx=0,pol2dy=1; //2d restriction of the poly - MCNUM x=v.x,y=v.y; - - /*areax: projected area with x-scratched = |v1_yz x v2_yz|, where v1=(x1-x0,0,z1-z0) & v2=(x2-x0,0,z2-z0).*/ - /* In principle, if polygon is triangle area should be scaled by 1/2, but this is irrelevant for finding the maximum area.*/ - /* Similarly for y and z scratched.*/ - areax=coords_len(coords_xp( - coords_set(0,p.p[3*1+1]-p.p[0+1],p.p[3*1+2]-p.p[0+2]), - coords_set(0,p.p[3*2+1]-p.p[0+1],p.p[3*2+2]-p.p[0+2]))); - areay=coords_len(coords_xp( - coords_set(p.p[3*1+0]-p.p[0+0],0,p.p[3*1+2]-p.p[0+2]), - coords_set(p.p[3*2+0]-p.p[0+0],0,p.p[3*2+2]-p.p[0+2]))); - areaz=coords_len(coords_xp( - coords_set(p.p[3*1+0]-p.p[0+0],p.p[3*1+1]-p.p[0+1],0), - coords_set(p.p[3*2+0]-p.p[0+0],p.p[3*2+1]-p.p[0+1],0))); - - if(areaztime = inter->edge = inter->in_out=0; - inter->v = inter->normal = coords_set(0,0,1); - - if (fabs(ndir) < OFF_EPSILON) // ray is parallel to polygon plane - { - if (nw0 == 0) // ray lies in polygon plane (infinite number of solution) - return 0; - else return 0; // ray disjoint from plane (no solution) - } - - // get intersect point of ray with polygon plane - inter->time = nw0 / ndir; //parametric value the point on line (a,b) - - inter->v = coords_set(a.x + inter->time * dir.x,// intersect point of ray and plane - a.y + inter->time * dir.y, - a.z + inter->time * dir.z); - - int res=off_pnpoly(p,inter->v); - - inter->edge=(res==-1); - if (ndir<0) - inter->in_out=1; //the negative dot product means we enter the surface - else - inter->in_out=-1; - - inter->normal=p.normal; - - return res; //true if the intersection point lies inside the poly -} /* off_intersectPoly */ - - -// off_getBlocksIndex ********************************************************** -/*reads the indexes at the beginning of the off file as this : -line 1 OFF -line 2 nbVertex nbFaces nbEdges -*/ -FILE *off_getBlocksIndex(char* filename, long* vtxSize, long* polySize ) -{ - FILE* f = Open_File(filename,"r", NULL); /* from read_table-lib: FILE *Open_File(char *name, char *Mode, char *path) */ - if (!f) return (f); - - char line[CHAR_BUF_LENGTH]; - char *ret=0; - *vtxSize = *polySize = 0; - - /* **************** start to read the file header */ - /* OFF file: - 'OFF' or '3' - */ - - ret=fgets(line,CHAR_BUF_LENGTH , f);// line 1 = "OFF" - if (ret == NULL) - { - fprintf(stderr, "Error: Can not read 1st line in file %s (interoff/off_getBlocksIndex)\n", filename); - exit(1); - } - if (strlen(line)>5) - { - fprintf(stderr,"Error: First line in %s is too long (=%lu). Possibly the line is not terminated by '\\n'.\n" - " The first line is required to be exactly 'OFF', '3' or 'ply'.\n", - filename,(long unsigned)strlen(line)); - fclose(f); - return(NULL); - } - - if (strncmp(line,"OFF",3) && strncmp(line,"3",1) && strncmp(line,"ply",1)) - { - fprintf(stderr, "Error: %s is probably not an OFF, NOFF or PLY file (interoff/off_getBlocksIndex).\n" - " Requires first line to be 'OFF', '3' or 'ply'.\n",filename); - fclose(f); - return(NULL); - } - - if (!strncmp(line,"OFF",3) || !strncmp(line,"3",1)) { - do /* OFF file: skip # comments which may be there */ - { - ret=fgets(line,CHAR_BUF_LENGTH , f); - if (ret == NULL) - { - fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); - exit(1); - } - } while (line[0]=='#'); - //line = nblines of vertex,faces and edges arrays - sscanf(line,"%lu %lu",vtxSize,polySize); - } else { - do /* PLY file: read all lines until find 'end_header' - and locate 'element faces' and 'element vertex' */ - { - ret=fgets(line,CHAR_BUF_LENGTH , f); - if (ret == NULL) - { - fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); - exit(1); - } - if (!strncmp(line,"element face",12)) - sscanf(line,"element face %lu",polySize); - else if (!strncmp(line,"element vertex",14)) - sscanf(line,"element vertex %lu",vtxSize); - else if (!strncmp(line,"format binary",13)) - exit(fprintf(stderr, - "Error: Can not read binary PLY file %s, only 'format ascii' (interoff/off_getBlocksIndex)\n%s\n", - filename, line)); - } while (strncmp(line,"end_header",10)); - } - - /* The FILE is left opened ready to read 'vtxSize' vertices (vtxSize *3 numbers) - and then polySize polygons (rows) */ - - return(f); -} /* off_getBlocksIndex */ - -// off_init_planes ************************************************************* -//gives the equations of 2 perpandicular planes of [ab] -#pragma acc routine -void off_init_planes(Coords a, Coords b, - MCNUM* A1, MCNUM* C1, MCNUM* D1, MCNUM *A2, MCNUM* B2, MCNUM* C2, MCNUM* D2) -{ - //direction vector of [a b] - Coords dir={b.x-a.x, b.y-a.y, b.z-a.z}; - - //the plane parallel to the 'y' is computed with the normal vector of the projection of [ab] on plane 'xz' - *A1= dir.z; - *C1=-dir.x; - if(*A1!=0 || *C1!=0) - *D1=-(a.x)*(*A1)-(a.z)*(*C1); - else - { - //the plane does not support the vector, take the one parallel to 'z'' - *A1=1; - //B1=dir.x=0 - *D1=-(a.x); - } - //the plane parallel to the 'x' is computed with the normal vector of the projection of [ab] on plane 'yz' - *B2= dir.z; - *C2=-dir.y; - *A2= 0; - if (*B2==0 && *C2==0) - { - //the plane does not support the vector, take the one parallel to 'z' - *B2=1; - //B1=dir.x=0 - *D2=-(a.y); - } - else { - if (dir.z==0) - { - //the planes are the same, take the one parallel to 'z' - *A2= dir.y; - *B2=-dir.x; - *D2=-(a.x)*(*A2)-(a.y)*(*B2); - } - else - *D2=-(a.y)**B2-(a.z)**C2; - } -} /* off_init_planes */ - -// off_clip_3D_mod ************************************************************* -#pragma acc routine -int off_clip_3D_mod(intersection* t, Coords a, Coords b, - Coords* vtxArray, unsigned long vtxSize, unsigned long* faceArray, - unsigned long faceSize, Coords* normalArray) -{ - MCNUM A1=0, C1=0, D1=0, A2=0, B2=0, C2=0, D2=0; //perpendicular plane equations to [a,b] - off_init_planes(a, b, &A1, &C1, &D1, &A2, &B2, &C2, &D2); - - int t_size=0; - MCNUM popol[3*4]; /*3 dimensions and max 4 vertices to form a polygon*/ - unsigned long i=0,indPoly=0; - - //exploring the polygons : - i=indPoly=0; - while (iOFF_INTERSECT_MAX) - { - fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", OFF_INTERSECT_MAX); - return (t_size); - } -#endif - //both planes intersect the polygon, let's find the intersection point - //our polygon : - int k; - for (k=0; k t[0].time) { - t[0]=x; - } - } else { - /* Case 2, positive time */ - intersection xtmp; - if (x.time < t[3].time) { - t[3]=x; - if (t[3].time < t[2].time) { - xtmp = t[2]; - t[2] = t[3]; - t[3] = xtmp; - } - if (t[2].time < t[1].time) { - xtmp = t[1]; - t[1] = t[2]; - t[2] = xtmp; - } - } - } -#endif - } - } /* if (jCHAR_BUF_LENGTH) - { - fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", CHAR_BUF_LENGTH); - return (t_size); - } - //both planes intersect the polygon, let's find the intersection point - //our polygon : - int k; - for (k=0; k= 1) { - double time = 1.0e36; - if (x1 < time && x1 > 0.0) { - time = x1; - } - if (nsol == 2 && x2 < time && x2 > 0.0) { - time = x2; - } - if (time != 1.0e36) { - intersection inters; - double t2 = time * time * 0.5; - double tx = pos.x + time * vel.x; - if (acc.x != 0.0) { - tx = tx + t2 * acc.x; - } - double ty = pos.y + time * vel.y; - if (acc.y != 0.0) { - ty = ty + t2 * acc.y; - } - double tz = pos.z + time * vel.z; - if (acc.z != 0.0) { - tz = tz + t2 * acc.z; - } - inters.v = coords_set(tx, ty, tz); - Coords tvel = coords_set(vel.x + time * acc.x, - vel.y + time * acc.y, - vel.z + time * acc.z); - inters.time = time; - inters.normal = pol.normal; - inters.index = indPoly; - int res=off_pnpoly(pol,inters.v); - if (res != 0) { - inters.edge=(res==-1); - MCNUM ndir = scalar_prod(pol.normal.x,pol.normal.y,pol.normal.z,tvel.x,tvel.y,tvel.z); - if (ndir<0) { - inters.in_out=1; //the negative dot product means we enter the surface - } else { - inters.in_out=-1; - } -#ifdef OFF_LEGACY - t[t_size++]=inters; -#else - /* Check against our 4 existing times, starting from [-FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX] */ - /* Case 1, negative time? */ - if (t_size < 4) t_size++; - if (inters.time < 0) { - if (inters.time > t[0].time) { - t[0]=inters; - } - } else { - /* Case 2, positive time */ - intersection xtmp; - if (inters.time < t[3].time) { - t[3]=inters; - if (t[3].time < t[2].time) { - xtmp = t[2]; - t[2] = t[3]; - t[3] = xtmp; - } - if (t[2].time < t[1].time) { - xtmp = t[1]; - t[1] = t[2]; - t[2] = xtmp; - } - } - } -#endif - } - } - } - i += pol.npol; - indPoly++; - } /* while itime - pb->time); -} /* off_compare */ - -// off_cleanDouble ************************************************************* -//given an array of intersections throw those which appear several times -//returns 1 if there is a possibility of error -#pragma acc routine -int off_cleanDouble(intersection* t, int* t_size) -{ - int i=1; - intersection prev=t[0]; - while (i<*t_size) - { - int j=i; - //for each intersection with the same time - while (j<*t_size && fabs(prev.time-t[j].time)maxx) maxx=vtxArray[i].x; - if (vtxArray[i].ymaxy) maxy=vtxArray[i].y; - if (vtxArray[i].zmaxz) maxz=vtxArray[i].z; - i++; // inquire next vertex - } - - // resizing and repositioning params - double centerx=0, centery=0, centerz=0; - if (!notcenter) { - centerx=(minx+maxx)*0.5; - centery=(miny+maxy)*0.5; - centerz=(minz+maxz)*0.5; - } - - double rangex=-minx+maxx, - rangey=-miny+maxy, - rangez=-minz+maxz; - - double ratiox=1,ratioy=1,ratioz=1; - - if (xwidth && rangex) - { - ratiox=xwidth/rangex; - ratioy=ratiox; - ratioz=ratiox; - } - - if (yheight && rangey) - { - ratioy=yheight/rangey; - if(!xwidth) ratiox=ratioy; - ratioz=ratioy; - } - - if (zdepth && rangez) - { - ratioz=zdepth/rangez; - if(!xwidth) ratiox=ratioz; - if(!yheight) ratioy=ratioz; - } - - rangex *= ratiox; - rangey *= ratioy; - rangez *= ratioz; - - //center and resize the object - for (i=0; i polySize*10) { - fprintf(stderr, "Error: %li exceeded allocated polygon array[%li] in file %s (interoff/off_init)\n", - faceSize, polySize*10, offfile); - } - faceArray[faceSize++] = nbVertex; // length of the polygon/face - // then read the vertex ID's - for (j=0; jvtxArray = vtxArray; - data->normalArray= normalArray; - data->DArray = DArray; - data->faceArray = faceArray; - data->vtxSize = vtxSize; - data->polySize = polySize; - data->faceSize = faceSize; - data->filename = offfile; - #ifdef OPENACC - acc_attach((void *)&vtxArray); - acc_attach((void *)&normalArray); - acc_attach((void *)&faceArray); - #endif - - return(polySize); -} /* off_init */ - -#pragma acc routine -int Min_int(int x, int y) { - return (xintersects, pos, vel, acc, - data->vtxArray, data->vtxSize, data->faceArray, - data->faceSize, data->normalArray, data->DArray ); - } else { - /////////////////////////////////// - // non-grav - Coords A={x, y, z}; - Coords B={x+vx, y+vy, z+vz}; - t_size=off_clip_3D_mod(data->intersects, A, B, - data->vtxArray, data->vtxSize, data->faceArray, - data->faceSize, data->normalArray ); - } - #ifndef OPENACC - qsort(data->intersects, t_size, sizeof(intersection), off_compare); - #else - #ifdef USE_OFF - gpusort(data->intersects, t_size); - #endif - #endif - off_cleanDouble(data->intersects, &t_size); - off_cleanInOut(data->intersects, &t_size); - - /*find intersections "closest" to 0 (favouring positive ones)*/ - if(t_size>0){ - int i=0; - if(t_size>1) { - for (i=1; i < t_size-1; i++){ - if (data->intersects[i-1].time > 0 && data->intersects[i].time > 0) - break; - } - - data->nextintersect=i-1; - data->numintersect=t_size; - - if (t0) *t0 = data->intersects[i-1].time; - if (n0) *n0 = data->intersects[i-1].normal; - if (t3) *t3 = data->intersects[i].time; - if (n3) *n3 = data->intersects[i].normal; - } else { - if (t0) *t0 = data->intersects[0].time; - if (n0) *n0 = data->intersects[0].normal; - } - /* should also return t[0].index and t[i].index as polygon ID */ - data->nextintersect=(data->intersects[data->nextintersect]).index; - return t_size; - } -#else - intersection intersect4[4]; - intersect4[0].time=-FLT_MAX; - intersect4[1].time=FLT_MAX; - intersect4[2].time=FLT_MAX; - intersect4[3].time=FLT_MAX; - if(mcgravitation) { - Coords pos={ x, y, z}; - Coords vel={vx, vy, vz}; - Coords acc={ax, ay, az}; - t_size=off_clip_3D_mod_grav(intersect4, pos, vel, acc, - data->vtxArray, data->vtxSize, data->faceArray, - data->faceSize, data->normalArray, data->DArray); - } else { - /////////////////////////////////// - // non-grav - Coords A={x, y, z}; - Coords B={x+vx, y+vy, z+vz}; - t_size=off_clip_3D_mod(intersect4, A, B, - data->vtxArray, data->vtxSize, data->faceArray, data->faceSize, data->normalArray ); - } - if(t_size>0){ - int i=0; - if (intersect4[0].time == -FLT_MAX) i=1; - data->numintersect=t_size; - if (t0) *t0 = intersect4[i].time; - if (n0) *n0 = intersect4[i].normal; - if (t3) *t3 = intersect4[i+1].time; - if (n3) *n3 = intersect4[i+1].normal; - - if (intersect4[1].time == FLT_MAX) - { - if (t3) *t3 = 0.0; - } - - /* should also return t[0].index and t[i].index as polygon ID */ - data->nextintersect=(int)intersect4[i].index; - return t_size; - } -#endif - return 0; -} /* off_intersect */ - -/******************************************************************************* -* int off_intersect(double* t0, double* t3, - Coords *n0, Coords *n3, - double x, double y, double z, - double vx, double vy, double vz, - off_struct data ) -* ACTION: computes intersection of neutron trajectory with an object. -* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron -* data points to the OFF data structure -* RETURN: the number of polyhedral which trajectory intersects -* t0 and t3 are the smallest incoming and outgoing intersection times -* n0 and n3 are the corresponding normal vectors to the surface -*******************************************************************************/ -int off_intersect(double* t0, double* t3, - Coords *n0, Coords *n3, - double x, double y, double z, - double vx, double vy, double vz, - double ax, double ay, double az, - off_struct data ) -{ - return off_intersect_all(t0, t3, n0, n3, x, y, z, vx, vy, vz, ax, ay, az, &data ); -} /* off_intersect */ - -/***************************************************************************** -* int off_x_intersect(double* l0, double* l3, - Coords *n0, Coords *n3, - double x, double y, double z, - double kx, double ky, double kz, - off_struct data ) -* ACTION: computes intersection of an xray trajectory with an object. -* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray -* respectively. data points to the OFF data structure. -* RETURN: the number of polyhedral the trajectory intersects -* l0 and l3 are the smallest incoming and outgoing intersection lengths -* n0 and n3 are the corresponding normal vectors to the surface -*******************************************************************************/ -int off_x_intersect(double *l0,double *l3, - Coords *n0, Coords *n3, - double x, double y, double z, - double kx, double ky, double kz, - off_struct data ) -{ - /*This function simply reformats and calls off_intersect (as for neutrons) - *by normalizing the wavevector - this will yield the intersection lengths - *in m*/ - double jx,jy,jz,invk; - int n; - invk=1/sqrt(scalar_prod(kx,ky,kz,kx,ky,kz)); - jx=kx*invk;jy=ky*invk;jz=kz*invk; - n=off_intersect(l0,l3,n0,n3,x,y,z,jx,jy,jz,0.0,0.0,0.0,data); - return n; -} - - -/******************************************************************************* -* void off_display(off_struct data) -* ACTION: display up to N_VERTEX_DISPLAYED polygons from the object -*******************************************************************************/ -void off_display(off_struct data) -{ - if(mcdotrace==2){ - // Estimate size of the JSON string - const int VERTEX_OVERHEAD = 30; - const int FACE_OVERHEAD_BASE = 20; - const int FACE_INDEX_OVERHEAD = 15; - int estimated_size = 256; // Base size - estimated_size += data.vtxSize * VERTEX_OVERHEAD; - - for (int i = 0; i < data.faceSize;) { - int num_indices = data.faceArray[i]; - estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; - i += num_indices + 1; - } - - char *json_string = malloc(estimated_size); - if (json_string == NULL) { - fprintf(stderr, "Memory allocation failed.\n"); - return; - } - - char *ptr = json_string; - ptr += sprintf(ptr, "{ \"vertices\": ["); - - for (int i = 0; i < data.vtxSize; i++) { - ptr += sprintf(ptr, "[%g, %g, %g]", data.vtxArray[i].x, data.vtxArray[i].y, data.vtxArray[i].z); - if (i < data.vtxSize - 1) { - ptr += sprintf(ptr, ", "); - } - } - - ptr += sprintf(ptr, "], \"faces\": ["); - - for (int i = 0; i < data.faceSize;) { - int num = data.faceArray[i]; - ptr += sprintf(ptr, "{ \"face\": ["); - for (int j = 1; j <= num; j++) { - ptr += sprintf(ptr, "%lu", data.faceArray[i + j]); - if (j < num) { - ptr += sprintf(ptr, ", "); - } - } - ptr += sprintf(ptr, "]}"); - i += num + 1; - if(i 1 || drawthis) { - mcdis_line(x1,y1,z1,x2,y2,z2); - } - x1 = x2; y1 = y2; z1 = z2; - } - if (ratio > 1 || drawthis) { - mcdis_line(x1,y1,z1,x0,y0,z0); - } - if (data.mantidflag) { - printf("MANTID_PIXEL: %s\n", pixelinfo); - pixel++; - } - i += nbVertex; - } - } -} /* off_display */ - -/* end of interoff-lib.c */ -#endif // INTEROFF_LIB_C - - - - -/* ************************************************************************** */ -/* End of SHARE user declarations for all components */ -/* ************************************************************************** */ - - -/* ********************** component definition declarations. **************** */ - -/* component Origin=Progress_bar() [1] DECLARE */ -/* Parameter definition for component type 'Progress_bar' */ -struct _struct_Progress_bar_parameters { - /* Component type 'Progress_bar' setting parameters */ - char profile[16384]; - MCNUM percent; - MCNUM flag_save; - MCNUM minutes; - /* Component type 'Progress_bar' private parameters */ - double IntermediateCnts; - time_t StartTime; - time_t EndTime; - time_t CurrentTime; - char infostring[64]; -}; /* _struct_Progress_bar_parameters */ -typedef struct _struct_Progress_bar_parameters _class_Progress_bar_parameters; - -/* Parameters for component type 'Progress_bar' */ -struct _struct_Progress_bar { - char _name[256]; /* e.g. Origin */ - char _type[256]; /* Progress_bar */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_Progress_bar_parameters _parameters; -}; -typedef struct _struct_Progress_bar _class_Progress_bar; -_class_Progress_bar _Origin_var; -#pragma acc declare create ( _Origin_var ) - -/* component optical_axis=Arm() [2] DECLARE */ -/* Parameter definition for component type 'Arm' */ -struct _struct_Arm_parameters { - char Arm_has_no_parameters; -}; /* _struct_Arm_parameters */ -typedef struct _struct_Arm_parameters _class_Arm_parameters; - -/* Parameters for component type 'Arm' */ -struct _struct_Arm { - char _name[256]; /* e.g. optical_axis */ - char _type[256]; /* Arm */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_Arm_parameters _parameters; -}; -typedef struct _struct_Arm _class_Arm; -_class_Arm _optical_axis_var; -#pragma acc declare create ( _optical_axis_var ) - -/* component Source=ESS_butterfly() [3] DECLARE */ -/* Parameter definition for component type 'ESS_butterfly' */ -struct _struct_ESS_butterfly_parameters { - /* Component type 'ESS_butterfly' setting parameters */ - char sector[16384]; - int beamline; - MCNUM yheight; - MCNUM cold_frac; - int target_index; - MCNUM dist; - MCNUM focus_xw; - MCNUM focus_yh; - MCNUM c_performance; - MCNUM t_performance; - MCNUM Lmin; - MCNUM Lmax; - MCNUM tmax_multiplier; - int n_pulses; - MCNUM acc_power; - MCNUM tfocus_dist; - MCNUM tfocus_time; - MCNUM tfocus_width; - MCNUM target_tsplit; - /* Component type 'ESS_butterfly' private parameters */ - double* ColdWidths; - double* ThermalWidths; - double ColdScalars[11]; - double ThermalScalars[11]; - double * Beamlines; - double wfrac_cold; - double wfrac_thermal; - double C1_x; - double C1_z; - double C2_x; - double C2_z; - double C3_x; - double C3_z; - double T1_x; - double T1_z; - double T2_x; - double T2_z; - double T3_x; - double T3_z; - double rC1_x; - double rC1_z; - double rC2_x; - double rC2_z; - double rC3_x; - double rC3_z; - double rT1_x; - double rT1_z; - double rT2_x; - double rT2_z; - double rT3_x; - double rT3_z; - double tx; - double ty; - double tz; - double r11; - double r12; - double r21; - double r22; - double delta_y; - double Mwidth_c; - double Mwidth_t; - double beamportangle; - double w_mult; - double w_stat; - double w_focus; - double w_tfocus; - double w_geom_c; - double w_geom_t; - int isleft; - double l_range; - double cos_thermal; - double cos_cold; - double orientation_angle; - double cx; - double cz; - int jmax; - double dxC; - double dxT; -}; /* _struct_ESS_butterfly_parameters */ -typedef struct _struct_ESS_butterfly_parameters _class_ESS_butterfly_parameters; - -/* Parameters for component type 'ESS_butterfly' */ -struct _struct_ESS_butterfly { - char _name[256]; /* e.g. Source */ - char _type[256]; /* ESS_butterfly */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_ESS_butterfly_parameters _parameters; -}; -typedef struct _struct_ESS_butterfly _class_ESS_butterfly; -_class_ESS_butterfly _Source_var; -#pragma acc declare create ( _Source_var ) - -_class_Arm _Start_of_bi_var; -#pragma acc declare create ( _Start_of_bi_var ) - -/* component bi=bi_spec_ellipse() [5] DECLARE */ -/* Parameter definition for component type 'bi_spec_ellipse' */ -struct _struct_bi_spec_ellipse_parameters { - /* Component type 'bi_spec_ellipse' setting parameters */ - MCNUM xheight; - MCNUM ywidth; - MCNUM zlength; - MCNUM n_mirror; - MCNUM tilt; - MCNUM n_pieces; - MCNUM angular_offset; - MCNUM m; - MCNUM R0_m; - MCNUM Qc_m; - MCNUM alpha_mirror_m; - MCNUM W_m; - MCNUM transmit; - MCNUM d_focus_1_x; - MCNUM d_focus_2_x; - MCNUM d_focus_1_y; - MCNUM d_focus_2_y; - MCNUM ell_l; - MCNUM ell_h; - MCNUM ell_w; - MCNUM ell_m; - MCNUM R0; - MCNUM Qc; - MCNUM alpha_mirror; - MCNUM W; - MCNUM cut; - MCNUM substrate; - char reflect_mirror[16384]; - char reflect[16384]; - /* Component type 'bi_spec_ellipse' private parameters */ - t_Table pTable; -}; /* _struct_bi_spec_ellipse_parameters */ -typedef struct _struct_bi_spec_ellipse_parameters _class_bi_spec_ellipse_parameters; - -/* Parameters for component type 'bi_spec_ellipse' */ -struct _struct_bi_spec_ellipse { - char _name[256]; /* e.g. bi */ - char _type[256]; /* bi_spec_ellipse */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_bi_spec_ellipse_parameters _parameters; -}; -typedef struct _struct_bi_spec_ellipse _class_bi_spec_ellipse; -_class_bi_spec_ellipse _bi_var; -#pragma acc declare create ( _bi_var ) - -_class_Arm _End_of_bi_var; -#pragma acc declare create ( _End_of_bi_var ) - -/* component NBOA_drawing_1_end=Guide_four_side() [7] DECLARE */ -/* Parameter definition for component type 'Guide_four_side' */ -struct _struct_Guide_four_side_parameters { - /* Component type 'Guide_four_side' setting parameters */ - char RIreflect[16384]; - char LIreflect[16384]; - char UIreflect[16384]; - char DIreflect[16384]; - char ROreflect[16384]; - char LOreflect[16384]; - char UOreflect[16384]; - char DOreflect[16384]; - MCNUM w1l; - MCNUM w2l; - MCNUM linwl; - MCNUM loutwl; - MCNUM w1r; - MCNUM w2r; - MCNUM linwr; - MCNUM loutwr; - MCNUM h1u; - MCNUM h2u; - MCNUM linhu; - MCNUM louthu; - MCNUM h1d; - MCNUM h2d; - MCNUM linhd; - MCNUM louthd; - MCNUM l; - MCNUM R0; - MCNUM Qcxl; - MCNUM Qcxr; - MCNUM Qcyu; - MCNUM Qcyd; - MCNUM alphaxl; - MCNUM alphaxr; - MCNUM alphayu; - MCNUM alphayd; - MCNUM Wxr; - MCNUM Wxl; - MCNUM Wyu; - MCNUM Wyd; - MCNUM mxr; - MCNUM mxl; - MCNUM myu; - MCNUM myd; - MCNUM QcxrOW; - MCNUM QcxlOW; - MCNUM QcyuOW; - MCNUM QcydOW; - MCNUM alphaxlOW; - MCNUM alphaxrOW; - MCNUM alphayuOW; - MCNUM alphaydOW; - MCNUM WxrOW; - MCNUM WxlOW; - MCNUM WyuOW; - MCNUM WydOW; - MCNUM mxrOW; - MCNUM mxlOW; - MCNUM myuOW; - MCNUM mydOW; - MCNUM rwallthick; - MCNUM lwallthick; - MCNUM uwallthick; - MCNUM dwallthick; - /* Component type 'Guide_four_side' private parameters */ - double w1rwt; - double w1lwt; - double h1uwt; - double h1dwt; - double w2rwt; - double w2lwt; - double h2uwt; - double h2dwt; - double pawr; - double pawl; - double pbwr; - double pbwl; - double pahu; - double pahd; - double pbhu; - double pbhd; - double awl; - double bwl; - double awr; - double bwr; - double ahu; - double bhu; - double ahd; - double bhd; - double awlwt; - double bwlwt; - double awrwt; - double bwrwt; - double ahuwt; - double bhuwt; - double ahdwt; - double bhdwt; - double pawrwt; - double pawlwt; - double pbwrwt; - double pbwlwt; - double pahuwt; - double pahdwt; - double pbhuwt; - double pbhdwt; - double a2wlwt; - double b2wlwt; - double a2wrwt; - double b2wrwt; - double a2huwt; - double b2huwt; - double a2hdwt; - double b2hdwt; - double a2wl; - double b2wl; - double a2wr; - double b2wr; - double a2hu; - double b2hu; - double a2hd; - double b2hd; - double mru1; - double mru2; - double nru1; - double nru2; - double mrd1; - double mrd2; - double nrd1; - double nrd2; - double mlu1; - double mlu2; - double nlu1; - double nlu2; - double mld1; - double mld2; - double nld1; - double nld2; - double z0wr; - double z0wl; - double z0hu; - double z0hd; - double p2parawr; - double p2parawl; - double p2parahu; - double p2parahd; - double p2parawrwt; - double p2parawlwt; - double p2parahuwt; - double p2parahdwt; - t_Table riTable; - t_Table liTable; - t_Table uiTable; - t_Table diTable; - t_Table roTable; - t_Table loTable; - t_Table uoTable; - t_Table doTable; -}; /* _struct_Guide_four_side_parameters */ -typedef struct _struct_Guide_four_side_parameters _class_Guide_four_side_parameters; - -/* Parameters for component type 'Guide_four_side' */ -struct _struct_Guide_four_side { - char _name[256]; /* e.g. NBOA_drawing_1_end */ - char _type[256]; /* Guide_four_side */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_Guide_four_side_parameters _parameters; -}; -typedef struct _struct_Guide_four_side _class_Guide_four_side; -_class_Guide_four_side _NBOA_drawing_1_end_var; -#pragma acc declare create ( _NBOA_drawing_1_end_var ) - -_class_Guide_four_side _g1a2_var; -#pragma acc declare create ( _g1a2_var ) - -_class_Guide_four_side _g1a3_var; -#pragma acc declare create ( _g1a3_var ) - -_class_Guide_four_side _g1b1_var; -#pragma acc declare create ( _g1b1_var ) - -_class_Guide_four_side _g1c1_var; -#pragma acc declare create ( _g1c1_var ) - -_class_Arm _wfm_position_var; -#pragma acc declare create ( _wfm_position_var ) - -_class_Arm _wfm_1_position_var; -#pragma acc declare create ( _wfm_1_position_var ) - -/* component wfmc_1=MultiDiskChopper() [14] DECLARE */ -/* Parameter definition for component type 'MultiDiskChopper' */ -struct _struct_MultiDiskChopper_parameters { - /* Component type 'MultiDiskChopper' setting parameters */ - char slit_center[16384]; - char slit_width[16384]; - MCNUM nslits; - MCNUM delta_y; - MCNUM nu; - MCNUM nrev; - MCNUM ratio; - MCNUM jitter; - MCNUM delay; - MCNUM isfirst; - MCNUM phase; - MCNUM radius; - MCNUM equal; - MCNUM abs_out; - MCNUM verbose; - /* Component type 'MultiDiskChopper' private parameters */ - double T; - double To; - double omega; - double* dslit_center; - double* dhslit_width; - double* t0; - double* t1; -}; /* _struct_MultiDiskChopper_parameters */ -typedef struct _struct_MultiDiskChopper_parameters _class_MultiDiskChopper_parameters; - -/* Parameters for component type 'MultiDiskChopper' */ -struct _struct_MultiDiskChopper { - char _name[256]; /* e.g. wfmc_1 */ - char _type[256]; /* MultiDiskChopper */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_MultiDiskChopper_parameters _parameters; -}; -typedef struct _struct_MultiDiskChopper _class_MultiDiskChopper; -_class_MultiDiskChopper _wfmc_1_var; -#pragma acc declare create ( _wfmc_1_var ) - -/* component pinhole_1=Slit() [15] DECLARE */ -/* Parameter definition for component type 'Slit' */ -struct _struct_Slit_parameters { - /* Component type 'Slit' setting parameters */ - MCNUM xmin; - MCNUM xmax; - MCNUM ymin; - MCNUM ymax; - MCNUM radius; - MCNUM xwidth; - MCNUM yheight; - /* Component type 'Slit' private parameters */ - char isradial; -}; /* _struct_Slit_parameters */ -typedef struct _struct_Slit_parameters _class_Slit_parameters; - -/* Parameters for component type 'Slit' */ -struct _struct_Slit { - char _name[256]; /* e.g. pinhole_1 */ - char _type[256]; /* Slit */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_Slit_parameters _parameters; -}; -typedef struct _struct_Slit _class_Slit; -_class_Slit _pinhole_1_var; -#pragma acc declare create ( _pinhole_1_var ) - -_class_Arm _wfm_2_position_var; -#pragma acc declare create ( _wfm_2_position_var ) - -_class_MultiDiskChopper _wfmc_2_var; -#pragma acc declare create ( _wfmc_2_var ) - -_class_Guide_four_side _g2a1_var; -#pragma acc declare create ( _g2a1_var ) - -_class_Arm _monitor_1_position_var; -#pragma acc declare create ( _monitor_1_position_var ) - -_class_Guide_four_side _g2a2_var; -#pragma acc declare create ( _g2a2_var ) - -_class_Arm _fo1_position_var; -#pragma acc declare create ( _fo1_position_var ) - -_class_MultiDiskChopper _fo_chopper_1_var; -#pragma acc declare create ( _fo_chopper_1_var ) - -_class_Arm _bp1_position_var; -#pragma acc declare create ( _bp1_position_var ) - -/* component bp1_chopper=DiskChopper() [24] DECLARE */ -/* Parameter definition for component type 'DiskChopper' */ -struct _struct_DiskChopper_parameters { - /* Component type 'DiskChopper' setting parameters */ - MCNUM theta_0; - MCNUM radius; - MCNUM yheight; - MCNUM nu; - MCNUM nslit; - MCNUM jitter; - MCNUM delay; - MCNUM isfirst; - MCNUM n_pulse; - MCNUM abs_out; - MCNUM phase; - MCNUM xwidth; - MCNUM verbose; - /* Component type 'DiskChopper' private parameters */ - double Tg; - double To; - double delta_y; - double height; - double omega; -}; /* _struct_DiskChopper_parameters */ -typedef struct _struct_DiskChopper_parameters _class_DiskChopper_parameters; - -/* Parameters for component type 'DiskChopper' */ -struct _struct_DiskChopper { - char _name[256]; /* e.g. bp1_chopper */ - char _type[256]; /* DiskChopper */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_DiskChopper_parameters _parameters; -}; -typedef struct _struct_DiskChopper _class_DiskChopper; -_class_DiskChopper _bp1_chopper_var; -#pragma acc declare create ( _bp1_chopper_var ) - -_class_Guide_four_side _g2b1_var; -#pragma acc declare create ( _g2b1_var ) - -_class_Guide_four_side _g2b2_var; -#pragma acc declare create ( _g2b2_var ) - -_class_Guide_four_side _g2b3_var; -#pragma acc declare create ( _g2b3_var ) - -_class_Guide_four_side _g2b4_var; -#pragma acc declare create ( _g2b4_var ) - -_class_Arm _fo2_position_var; -#pragma acc declare create ( _fo2_position_var ) - -_class_MultiDiskChopper _fo_chopper_2_var; -#pragma acc declare create ( _fo_chopper_2_var ) - -_class_Arm _bp2_position_var; -#pragma acc declare create ( _bp2_position_var ) - -_class_DiskChopper _bp_chopper2_var; -#pragma acc declare create ( _bp_chopper2_var ) - -_class_Guide_four_side _g2c1_var; -#pragma acc declare create ( _g2c1_var ) - -_class_Arm _t0_start_position_var; -#pragma acc declare create ( _t0_start_position_var ) - -_class_DiskChopper _t0_chopper_alpha_var; -#pragma acc declare create ( _t0_chopper_alpha_var ) - -_class_Arm _t0_end_position_var; -#pragma acc declare create ( _t0_end_position_var ) - -_class_DiskChopper _t0_chopper_beta_var; -#pragma acc declare create ( _t0_chopper_beta_var ) - -_class_Guide_four_side _g3a1_var; -#pragma acc declare create ( _g3a1_var ) - -_class_Guide_four_side _g3a2_var; -#pragma acc declare create ( _g3a2_var ) - -_class_Arm _fo3_position_var; -#pragma acc declare create ( _fo3_position_var ) - -_class_MultiDiskChopper _fo_chopper_3_var; -#pragma acc declare create ( _fo_chopper_3_var ) - -_class_Guide_four_side _g3b1_var; -#pragma acc declare create ( _g3b1_var ) - -_class_Guide_four_side _g4a1_var; -#pragma acc declare create ( _g4a1_var ) - -_class_Arm _monitor_2_position_var; -#pragma acc declare create ( _monitor_2_position_var ) - -_class_Guide_four_side _g4a2_var; -#pragma acc declare create ( _g4a2_var ) - -_class_Guide_four_side _g4a3_var; -#pragma acc declare create ( _g4a3_var ) - -_class_Arm _fo4_position_var; -#pragma acc declare create ( _fo4_position_var ) - -_class_MultiDiskChopper _fo_chopper_4_var; -#pragma acc declare create ( _fo_chopper_4_var ) - -_class_Guide_four_side _g4b1_var; -#pragma acc declare create ( _g4b1_var ) - -_class_Guide_four_side _g4b2_var; -#pragma acc declare create ( _g4b2_var ) - -_class_Guide_four_side _g4b3_var; -#pragma acc declare create ( _g4b3_var ) - -_class_Guide_four_side _g4b4_var; -#pragma acc declare create ( _g4b4_var ) - -_class_Guide_four_side _g4b5_var; -#pragma acc declare create ( _g4b5_var ) - -_class_Guide_four_side _g4b6_var; -#pragma acc declare create ( _g4b6_var ) - -_class_Guide_four_side _g5a1_var; -#pragma acc declare create ( _g5a1_var ) - -_class_Arm _fo5_position_var; -#pragma acc declare create ( _fo5_position_var ) - -_class_MultiDiskChopper _fo_chopper_5_var; -#pragma acc declare create ( _fo_chopper_5_var ) - -_class_Guide_four_side _g5b1_var; -#pragma acc declare create ( _g5b1_var ) - -_class_Guide_four_side _g5b2_var; -#pragma acc declare create ( _g5b2_var ) - -_class_Guide_four_side _g5b3_var; -#pragma acc declare create ( _g5b3_var ) - -_class_Guide_four_side _g5b4_var; -#pragma acc declare create ( _g5b4_var ) - -_class_Guide_four_side _g5b5_var; -#pragma acc declare create ( _g5b5_var ) - -_class_Guide_four_side _g5b6_var; -#pragma acc declare create ( _g5b6_var ) - -_class_Guide_four_side _g6a1_var; -#pragma acc declare create ( _g6a1_var ) - -_class_Guide_four_side _g6a2_var; -#pragma acc declare create ( _g6a2_var ) - -_class_Guide_four_side _g6a3_var; -#pragma acc declare create ( _g6a3_var ) - -_class_Arm _guide_end_var; -#pragma acc declare create ( _guide_end_var ) - -_class_Arm _monitor_3_position_var; -#pragma acc declare create ( _monitor_3_position_var ) - -_class_Arm _start_backend_var; -#pragma acc declare create ( _start_backend_var ) - -_class_Arm _optical_axis_backend_var; -#pragma acc declare create ( _optical_axis_backend_var ) - -_class_Slit _pinhole_2_var; -#pragma acc declare create ( _pinhole_2_var ) - -/* component graph=Graphite_Diffuser() [72] DECLARE */ -/* Parameter definition for component type 'Graphite_Diffuser' */ -struct _struct_Graphite_Diffuser_parameters { - /* Component type 'Graphite_Diffuser' setting parameters */ - MCNUM xwidth; - MCNUM ywidth; - MCNUM thick; - MCNUM abs; -}; /* _struct_Graphite_Diffuser_parameters */ -typedef struct _struct_Graphite_Diffuser_parameters _class_Graphite_Diffuser_parameters; - -/* Parameters for component type 'Graphite_Diffuser' */ -struct _struct_Graphite_Diffuser { - char _name[256]; /* e.g. graph */ - char _type[256]; /* Graphite_Diffuser */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_Graphite_Diffuser_parameters _parameters; -}; -typedef struct _struct_Graphite_Diffuser _class_Graphite_Diffuser; -_class_Graphite_Diffuser _graph_var; -#pragma acc declare create ( _graph_var ) - -_class_Arm _sample_monitor_arm_var; -#pragma acc declare create ( _sample_monitor_arm_var ) - -/* component sample_PSD=Monitor_nD() [74] DECLARE */ -/* Parameter definition for component type 'Monitor_nD' */ -struct _struct_Monitor_nD_parameters { - /* Component type 'Monitor_nD' setting parameters */ - char user1[16384]; - char user2[16384]; - char user3[16384]; - MCNUM xwidth; - MCNUM yheight; - MCNUM zdepth; - MCNUM xmin; - MCNUM xmax; - MCNUM ymin; - MCNUM ymax; - MCNUM zmin; - MCNUM zmax; - int bins; - MCNUM min; - MCNUM max; - int restore_neutron; - MCNUM radius; - char options[16384]; - char filename[16384]; - char geometry[16384]; - int nowritefile; - char username1[16384]; - char username2[16384]; - char username3[16384]; - int tsplit; - int adaptive_target; - /* Component type 'Monitor_nD' private parameters */ - MonitornD_Defines_type DEFS; - MonitornD_Variables_type Vars; - MCDETECTOR detector; - off_struct offdata; -}; /* _struct_Monitor_nD_parameters */ -typedef struct _struct_Monitor_nD_parameters _class_Monitor_nD_parameters; - -/* Parameters for component type 'Monitor_nD' */ -struct _struct_Monitor_nD { - char _name[256]; /* e.g. sample_PSD */ - char _type[256]; /* Monitor_nD */ - long _index; /* e.g. 2 index in TRACE list */ - Coords _position_absolute; - Coords _position_relative; /* wrt PREVIOUS */ - Rotation _rotation_absolute; - Rotation _rotation_relative; /* wrt PREVIOUS */ - int _rotation_is_identity; - int _position_relative_is_zero; - _class_Monitor_nD_parameters _parameters; -}; -typedef struct _struct_Monitor_nD _class_Monitor_nD; -_class_Monitor_nD _sample_PSD_var; -#pragma acc declare create ( _sample_PSD_var ) - -_class_Monitor_nD _profile_x_var; -#pragma acc declare create ( _profile_x_var ) - -_class_Monitor_nD _profile_y_var; -#pragma acc declare create ( _profile_y_var ) - -_class_Monitor_nD _wavelength_var; -#pragma acc declare create ( _wavelength_var ) - -_class_Monitor_nD _tof_var; -#pragma acc declare create ( _tof_var ) - -_class_Monitor_nD _wavelength_tof_var; -#pragma acc declare create ( _wavelength_tof_var ) - -_class_Arm _sample_position_var; -#pragma acc declare create ( _sample_position_var ) - -int mcNUMCOMP = 80; - -/* User declarations from instrument definition. Can define functions. */ -double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap -double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap -double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap -double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap -double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap -double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap -double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap -double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap -double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap -double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap - -int adaptive_N; -long total_arrived; -long total_N_sent; -long total_rays_sent; - -#undef compcurname -#undef compcurtype -#undef compcurindex -/* end of instrument 'ODIN_TOF_train3' and components DECLARE */ - -/* ***************************************************************************** -* instrument 'ODIN_TOF_train3' and components INITIALISE -***************************************************************************** */ - -double index_getdistance(int first_index, int second_index) -/* Calculate the distance two components from their indexes*/ -{ - return coords_len(coords_sub(POS_A_COMP_INDEX(first_index), POS_A_COMP_INDEX(second_index))); -} - -double getdistance(char* first_component, char* second_component) -/* Calculate the distance between two named components */ -{ - int first_index = _getcomp_index(first_component); - int second_index = _getcomp_index(second_component); - return index_getdistance(first_index, second_index); -} - -double checked_setpos_getdistance(int current_index, char* first_component, char* second_component) -/* Calculate the distance between two named components at *_setpos() time, with component index checking */ -{ - int first_index = _getcomp_index(first_component); - int second_index = _getcomp_index(second_component); - if (first_index >= current_index || second_index >= current_index) { - printf("setpos_getdistance can only be used with the names of components before the current one!\n"); - return 0; - } - return index_getdistance(first_index, second_index); -} -#define setpos_getdistance(first, second) checked_setpos_getdistance(current_setpos_index, first, second) - -/* component Origin=Progress_bar() SETTING, POSITION/ROTATION */ -int _Origin_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_Origin_setpos] component Origin=Progress_bar() SETTING [Progress_bar:0]"); - stracpy(_Origin_var._name, "Origin", 16384); - stracpy(_Origin_var._type, "Progress_bar", 16384); - _Origin_var._index=1; - int current_setpos_index = 1; - if("NULL" && strlen("NULL")) - stracpy(_Origin_var._parameters.profile, "NULL" ? "NULL" : "", 16384); - else - _Origin_var._parameters.profile[0]='\0'; - _Origin_var._parameters.percent = 10; - _Origin_var._parameters.flag_save = 0; - _Origin_var._parameters.minutes = 0; - - - /* component Origin=Progress_bar() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(_Origin_var._rotation_absolute, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_copy(_Origin_var._rotation_relative, _Origin_var._rotation_absolute); - _Origin_var._rotation_is_identity = rot_test_identity(_Origin_var._rotation_relative); - _Origin_var._position_absolute = coords_set( - 0, 0, 0); - tc1 = coords_neg(_Origin_var._position_absolute); - _Origin_var._position_relative = rot_apply(_Origin_var._rotation_absolute, tc1); - } /* Origin=Progress_bar() AT ROTATED */ - DEBUG_COMPONENT("Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute); - instrument->_position_absolute[1] = _Origin_var._position_absolute; - instrument->_position_relative[1] = _Origin_var._position_relative; - _Origin_var._position_relative_is_zero = coords_test_zero(_Origin_var._position_relative); - instrument->counter_N[1] = instrument->counter_P[1] = instrument->counter_P2[1] = 0; - instrument->counter_AbsorbProp[1]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0000_Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute, "Progress_bar"); - mccomp_param_nexus(nxhandle,"0000_Origin", "profile", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0000_Origin", "percent", "10", "10","MCNUM"); - mccomp_param_nexus(nxhandle,"0000_Origin", "flag_save", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0000_Origin", "minutes", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _Origin_setpos */ - -/* component optical_axis=Arm() SETTING, POSITION/ROTATION */ -int _optical_axis_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_optical_axis_setpos] component optical_axis=Arm() SETTING [Arm:0]"); - stracpy(_optical_axis_var._name, "optical_axis", 16384); - stracpy(_optical_axis_var._type, "Arm", 16384); - _optical_axis_var._index=2; - int current_setpos_index = 2; - /* component optical_axis=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _Origin_var._rotation_absolute, _optical_axis_var._rotation_absolute); - rot_transpose(_Origin_var._rotation_absolute, tr1); - rot_mul(_optical_axis_var._rotation_absolute, tr1, _optical_axis_var._rotation_relative); - _optical_axis_var._rotation_is_identity = rot_test_identity(_optical_axis_var._rotation_relative); - tc1 = coords_set( - 0.026, 0, 0); - rot_transpose(_Origin_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _optical_axis_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); - tc1 = coords_sub(_Origin_var._position_absolute, _optical_axis_var._position_absolute); - _optical_axis_var._position_relative = rot_apply(_optical_axis_var._rotation_absolute, tc1); - } /* optical_axis=Arm() AT ROTATED */ - DEBUG_COMPONENT("optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute); - instrument->_position_absolute[2] = _optical_axis_var._position_absolute; - instrument->_position_relative[2] = _optical_axis_var._position_relative; - _optical_axis_var._position_relative_is_zero = coords_test_zero(_optical_axis_var._position_relative); - instrument->counter_N[2] = instrument->counter_P[2] = instrument->counter_P2[2] = 0; - instrument->counter_AbsorbProp[2]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0001_optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _optical_axis_setpos */ - -/* component Source=ESS_butterfly() SETTING, POSITION/ROTATION */ -int _Source_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_Source_setpos] component Source=ESS_butterfly() SETTING [ESS_butterfly:0]"); - stracpy(_Source_var._name, "Source", 16384); - stracpy(_Source_var._type, "ESS_butterfly", 16384); - _Source_var._index=3; - int current_setpos_index = 3; - if("S" && strlen("S")) - stracpy(_Source_var._parameters.sector, "S" ? "S" : "", 16384); - else - _Source_var._parameters.sector[0]='\0'; - _Source_var._parameters.beamline = 2; - _Source_var._parameters.yheight = 0.03; - _Source_var._parameters.cold_frac = 0.5; - _Source_var._parameters.target_index = 1; - _Source_var._parameters.dist = 0; - _Source_var._parameters.focus_xw = 0.0576862; - _Source_var._parameters.focus_yh = 0.0464308; - _Source_var._parameters.c_performance = 1; - _Source_var._parameters.t_performance = 1; - _Source_var._parameters.Lmin = _instrument_var._parameters.l_min; - _Source_var._parameters.Lmax = _instrument_var._parameters.l_max; - _Source_var._parameters.tmax_multiplier = 3; - _Source_var._parameters.n_pulses = _instrument_var._parameters.n_pulses; - _Source_var._parameters.acc_power = 2.0; - _Source_var._parameters.tfocus_dist = 0; - _Source_var._parameters.tfocus_time = 0; - _Source_var._parameters.tfocus_width = 0; - _Source_var._parameters.target_tsplit = _instrument_var._parameters.target_tsplit; - - - /* component Source=ESS_butterfly() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _Origin_var._rotation_absolute, _Source_var._rotation_absolute); - rot_transpose(_Origin_var._rotation_absolute, tr1); - rot_mul(_Source_var._rotation_absolute, tr1, _Source_var._rotation_relative); - _Source_var._rotation_is_identity = rot_test_identity(_Source_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_Origin_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _Source_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); - tc1 = coords_sub(_Origin_var._position_absolute, _Source_var._position_absolute); - _Source_var._position_relative = rot_apply(_Source_var._rotation_absolute, tc1); - } /* Source=ESS_butterfly() AT ROTATED */ - DEBUG_COMPONENT("Source", _Source_var._position_absolute, _Source_var._rotation_absolute); - instrument->_position_absolute[3] = _Source_var._position_absolute; - instrument->_position_relative[3] = _Source_var._position_relative; - _Source_var._position_relative_is_zero = coords_test_zero(_Source_var._position_relative); - instrument->counter_N[3] = instrument->counter_P[3] = instrument->counter_P2[3] = 0; - instrument->counter_AbsorbProp[3]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0002_Source", _Source_var._position_absolute, _Source_var._rotation_absolute, "ESS_butterfly"); - mccomp_param_nexus(nxhandle,"0002_Source", "sector", "N", "S", "char*"); - mccomp_param_nexus(nxhandle,"0002_Source", "beamline", "1", "2","int"); - mccomp_param_nexus(nxhandle,"0002_Source", "yheight", "0.03", "0.03","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "cold_frac", "0.5", "0.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "target_index", "0", "1","int"); - mccomp_param_nexus(nxhandle,"0002_Source", "dist", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "focus_xw", "0", "0.0576862","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "focus_yh", "0", "0.0464308","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "c_performance", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "t_performance", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "Lmin", "NONE", "_instrument_var._parameters.l_min","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "Lmax", "NONE", "_instrument_var._parameters.l_max","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "tmax_multiplier", "3", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "n_pulses", "1", "_instrument_var._parameters.n_pulses","int"); - mccomp_param_nexus(nxhandle,"0002_Source", "acc_power", "5", "2.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_dist", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_time", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "tfocus_width", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0002_Source", "target_tsplit", "5", "_instrument_var._parameters.target_tsplit","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _Source_setpos */ - -/* component Start_of_bi=Arm() SETTING, POSITION/ROTATION */ -int _Start_of_bi_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_Start_of_bi_setpos] component Start_of_bi=Arm() SETTING [Arm:0]"); - stracpy(_Start_of_bi_var._name, "Start_of_bi", 16384); - stracpy(_Start_of_bi_var._type, "Arm", 16384); - _Start_of_bi_var._index=4; - int current_setpos_index = 4; - /* component Start_of_bi=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _Start_of_bi_var._rotation_absolute); - rot_transpose(_Source_var._rotation_absolute, tr1); - rot_mul(_Start_of_bi_var._rotation_absolute, tr1, _Start_of_bi_var._rotation_relative); - _Start_of_bi_var._rotation_is_identity = rot_test_identity(_Start_of_bi_var._rotation_relative); - tc1 = coords_set( - 0, 0, 2.0306); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _Start_of_bi_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_Source_var._position_absolute, _Start_of_bi_var._position_absolute); - _Start_of_bi_var._position_relative = rot_apply(_Start_of_bi_var._rotation_absolute, tc1); - } /* Start_of_bi=Arm() AT ROTATED */ - DEBUG_COMPONENT("Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute); - instrument->_position_absolute[4] = _Start_of_bi_var._position_absolute; - instrument->_position_relative[4] = _Start_of_bi_var._position_relative; - _Start_of_bi_var._position_relative_is_zero = coords_test_zero(_Start_of_bi_var._position_relative); - instrument->counter_N[4] = instrument->counter_P[4] = instrument->counter_P2[4] = 0; - instrument->counter_AbsorbProp[4]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0003_Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _Start_of_bi_setpos */ - -/* component bi=bi_spec_ellipse() SETTING, POSITION/ROTATION */ -int _bi_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_bi_setpos] component bi=bi_spec_ellipse() SETTING [bi_spec_ellipse:0]"); - stracpy(_bi_var._name, "bi", 16384); - stracpy(_bi_var._type, "bi_spec_ellipse", 16384); - _bi_var._index=5; - int current_setpos_index = 5; - _bi_var._parameters.xheight = 0.044795; - _bi_var._parameters.ywidth = 0.033273; - _bi_var._parameters.zlength = 0.3; - _bi_var._parameters.n_mirror = 0; - _bi_var._parameters.tilt = 0.7355449343006287; - _bi_var._parameters.n_pieces = 1; - _bi_var._parameters.angular_offset = 0.0274924630093546; - _bi_var._parameters.m = 4; - _bi_var._parameters.R0_m = 0.99; - _bi_var._parameters.Qc_m = 0.0217; - _bi_var._parameters.alpha_mirror_m = 2.5; - _bi_var._parameters.W_m = 0.015; - _bi_var._parameters.transmit = 1; - _bi_var._parameters.d_focus_1_x = 3.443249331959489; - _bi_var._parameters.d_focus_2_x = 4.946749331959489; - _bi_var._parameters.d_focus_1_y = 1.9037386467676676; - _bi_var._parameters.d_focus_2_y = 33.78623864676767; - _bi_var._parameters.ell_l = 0.31; - _bi_var._parameters.ell_h = 0.04381396598275876; - _bi_var._parameters.ell_w = 0.03326371014826339; - _bi_var._parameters.ell_m = 4; - _bi_var._parameters.R0 = 0.99; - _bi_var._parameters.Qc = 0.0217; - _bi_var._parameters.alpha_mirror = 2.5; - _bi_var._parameters.W = 0.0015; - _bi_var._parameters.cut = 3; - _bi_var._parameters.substrate = 0; - _bi_var._parameters.reflect_mirror[0]='\0'; - _bi_var._parameters.reflect[0]='\0'; - - - /* component bi=bi_spec_ellipse() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _Start_of_bi_var._rotation_absolute, _bi_var._rotation_absolute); - rot_transpose(_Source_var._rotation_absolute, tr1); - rot_mul(_bi_var._rotation_absolute, tr1, _bi_var._rotation_relative); - _bi_var._rotation_is_identity = rot_test_identity(_bi_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_Start_of_bi_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _bi_var._position_absolute = coords_add(_Start_of_bi_var._position_absolute, tc2); - tc1 = coords_sub(_Source_var._position_absolute, _bi_var._position_absolute); - _bi_var._position_relative = rot_apply(_bi_var._rotation_absolute, tc1); - } /* bi=bi_spec_ellipse() AT ROTATED */ - DEBUG_COMPONENT("bi", _bi_var._position_absolute, _bi_var._rotation_absolute); - instrument->_position_absolute[5] = _bi_var._position_absolute; - instrument->_position_relative[5] = _bi_var._position_relative; - _bi_var._position_relative_is_zero = coords_test_zero(_bi_var._position_relative); - instrument->counter_N[5] = instrument->counter_P[5] = instrument->counter_P2[5] = 0; - instrument->counter_AbsorbProp[5]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0004_bi", _bi_var._position_absolute, _bi_var._rotation_absolute, "bi_spec_ellipse"); - mccomp_param_nexus(nxhandle,"0004_bi", "xheight", "NONE", "0.044795","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "ywidth", "NONE", "0.033273","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "zlength", "NONE", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "n_mirror", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "tilt", "0.5", "0.7355449343006287","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "n_pieces", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "angular_offset", "0", "0.0274924630093546","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "m", "2", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "R0_m", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "Qc_m", "0.021", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "alpha_mirror_m", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "W_m", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "transmit", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_1_x", "2.5", "3.443249331959489","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_2_x", "5", "4.946749331959489","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_1_y", "2.5", "1.9037386467676676","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "d_focus_2_y", "5", "33.78623864676767","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "ell_l", "3", "0.31","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "ell_h", "0", "0.04381396598275876","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "ell_w", "0", "0.03326371014826339","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "ell_m", "2", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "Qc", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "alpha_mirror", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "W", "0.003", "0.0015","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "cut", "3", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "substrate", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0004_bi", "reflect_mirror", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0004_bi", "reflect", 0, 0, "char*"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _bi_setpos */ - -/* component End_of_bi=Arm() SETTING, POSITION/ROTATION */ -int _End_of_bi_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_End_of_bi_setpos] component End_of_bi=Arm() SETTING [Arm:0]"); - stracpy(_End_of_bi_var._name, "End_of_bi", 16384); - stracpy(_End_of_bi_var._type, "Arm", 16384); - _End_of_bi_var._index=6; - int current_setpos_index = 6; - /* component End_of_bi=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (-180)*DEG2RAD); - rot_mul(tr1, _bi_var._rotation_absolute, _End_of_bi_var._rotation_absolute); - rot_transpose(_bi_var._rotation_absolute, tr1); - rot_mul(_End_of_bi_var._rotation_absolute, tr1, _End_of_bi_var._rotation_relative); - _End_of_bi_var._rotation_is_identity = rot_test_identity(_End_of_bi_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0.31); - rot_transpose(_bi_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _End_of_bi_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); - tc1 = coords_sub(_bi_var._position_absolute, _End_of_bi_var._position_absolute); - _End_of_bi_var._position_relative = rot_apply(_End_of_bi_var._rotation_absolute, tc1); - } /* End_of_bi=Arm() AT ROTATED */ - DEBUG_COMPONENT("End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute); - instrument->_position_absolute[6] = _End_of_bi_var._position_absolute; - instrument->_position_relative[6] = _End_of_bi_var._position_relative; - _End_of_bi_var._position_relative_is_zero = coords_test_zero(_End_of_bi_var._position_relative); - instrument->counter_N[6] = instrument->counter_P[6] = instrument->counter_P2[6] = 0; - instrument->counter_AbsorbProp[6]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0005_End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _End_of_bi_setpos */ - -/* component NBOA_drawing_1_end=Guide_four_side() SETTING, POSITION/ROTATION */ -int _NBOA_drawing_1_end_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_NBOA_drawing_1_end_setpos] component NBOA_drawing_1_end=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_NBOA_drawing_1_end_var._name, "NBOA_drawing_1_end", 16384); - stracpy(_NBOA_drawing_1_end_var._type, "Guide_four_side", 16384); - _NBOA_drawing_1_end_var._index=7; - int current_setpos_index = 7; - _NBOA_drawing_1_end_var._parameters.RIreflect[0]='\0'; - _NBOA_drawing_1_end_var._parameters.LIreflect[0]='\0'; - _NBOA_drawing_1_end_var._parameters.UIreflect[0]='\0'; - _NBOA_drawing_1_end_var._parameters.DIreflect[0]='\0'; - _NBOA_drawing_1_end_var._parameters.ROreflect[0]='\0'; - _NBOA_drawing_1_end_var._parameters.LOreflect[0]='\0'; - _NBOA_drawing_1_end_var._parameters.UOreflect[0]='\0'; - _NBOA_drawing_1_end_var._parameters.DOreflect[0]='\0'; - _NBOA_drawing_1_end_var._parameters.w1l = 0.022187; - _NBOA_drawing_1_end_var._parameters.w2l = 0.002; - _NBOA_drawing_1_end_var._parameters.linwl = 3.7532493319594886; - _NBOA_drawing_1_end_var._parameters.loutwl = 4.397849331959489; - _NBOA_drawing_1_end_var._parameters.w1r = 0.022187; - _NBOA_drawing_1_end_var._parameters.w2r = 0.002; - _NBOA_drawing_1_end_var._parameters.linwr = 3.7532493319594886; - _NBOA_drawing_1_end_var._parameters.loutwr = 4.397849331959489; - _NBOA_drawing_1_end_var._parameters.h1u = 0.017858; - _NBOA_drawing_1_end_var._parameters.h2u = 0.002; - _NBOA_drawing_1_end_var._parameters.linhu = 2.213738646767668; - _NBOA_drawing_1_end_var._parameters.louthu = 33.23733864676767; - _NBOA_drawing_1_end_var._parameters.h1d = 0.017858; - _NBOA_drawing_1_end_var._parameters.h2d = 0.002; - _NBOA_drawing_1_end_var._parameters.linhd = 2.213738646767668; - _NBOA_drawing_1_end_var._parameters.louthd = 33.23733864676767; - _NBOA_drawing_1_end_var._parameters.l = 0.5488999999999999; - _NBOA_drawing_1_end_var._parameters.R0 = 0.99; - _NBOA_drawing_1_end_var._parameters.Qcxl = 0.0217; - _NBOA_drawing_1_end_var._parameters.Qcxr = 0.0217; - _NBOA_drawing_1_end_var._parameters.Qcyu = 0.023; - _NBOA_drawing_1_end_var._parameters.Qcyd = 0.023; - _NBOA_drawing_1_end_var._parameters.alphaxl = 2.5; - _NBOA_drawing_1_end_var._parameters.alphaxr = 2.5; - _NBOA_drawing_1_end_var._parameters.alphayu = 1.8; - _NBOA_drawing_1_end_var._parameters.alphayd = 1.8; - _NBOA_drawing_1_end_var._parameters.Wxr = 0.015; - _NBOA_drawing_1_end_var._parameters.Wxl = 0.015; - _NBOA_drawing_1_end_var._parameters.Wyu = 0.015; - _NBOA_drawing_1_end_var._parameters.Wyd = 0.015; - _NBOA_drawing_1_end_var._parameters.mxr = 4; - _NBOA_drawing_1_end_var._parameters.mxl = 4; - _NBOA_drawing_1_end_var._parameters.myu = 2; - _NBOA_drawing_1_end_var._parameters.myd = 2; - _NBOA_drawing_1_end_var._parameters.QcxrOW = 0.0217; - _NBOA_drawing_1_end_var._parameters.QcxlOW = 0.0217; - _NBOA_drawing_1_end_var._parameters.QcyuOW = 0.0217; - _NBOA_drawing_1_end_var._parameters.QcydOW = 0.0217; - _NBOA_drawing_1_end_var._parameters.alphaxlOW = 6.07; - _NBOA_drawing_1_end_var._parameters.alphaxrOW = 6.07; - _NBOA_drawing_1_end_var._parameters.alphayuOW = 6.07; - _NBOA_drawing_1_end_var._parameters.alphaydOW = 6.07; - _NBOA_drawing_1_end_var._parameters.WxrOW = 0.003; - _NBOA_drawing_1_end_var._parameters.WxlOW = 0.003; - _NBOA_drawing_1_end_var._parameters.WyuOW = 0.003; - _NBOA_drawing_1_end_var._parameters.WydOW = 0.003; - _NBOA_drawing_1_end_var._parameters.mxrOW = 0; - _NBOA_drawing_1_end_var._parameters.mxlOW = 0; - _NBOA_drawing_1_end_var._parameters.myuOW = 0; - _NBOA_drawing_1_end_var._parameters.mydOW = 0; - _NBOA_drawing_1_end_var._parameters.rwallthick = 0.001; - _NBOA_drawing_1_end_var._parameters.lwallthick = 0.001; - _NBOA_drawing_1_end_var._parameters.uwallthick = 0.001; - _NBOA_drawing_1_end_var._parameters.dwallthick = 0.001; - - - /* component NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _bi_var._rotation_absolute, _NBOA_drawing_1_end_var._rotation_absolute); - rot_transpose(_bi_var._rotation_absolute, tr1); - rot_mul(_NBOA_drawing_1_end_var._rotation_absolute, tr1, _NBOA_drawing_1_end_var._rotation_relative); - _NBOA_drawing_1_end_var._rotation_is_identity = rot_test_identity(_NBOA_drawing_1_end_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0.31000099999999997); - rot_transpose(_bi_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _NBOA_drawing_1_end_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); - tc1 = coords_sub(_bi_var._position_absolute, _NBOA_drawing_1_end_var._position_absolute); - _NBOA_drawing_1_end_var._position_relative = rot_apply(_NBOA_drawing_1_end_var._rotation_absolute, tc1); - } /* NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute); - instrument->_position_absolute[7] = _NBOA_drawing_1_end_var._position_absolute; - instrument->_position_relative[7] = _NBOA_drawing_1_end_var._position_relative; - _NBOA_drawing_1_end_var._position_relative_is_zero = coords_test_zero(_NBOA_drawing_1_end_var._position_relative); - instrument->counter_N[7] = instrument->counter_P[7] = instrument->counter_P2[7] = 0; - instrument->counter_AbsorbProp[7]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0006_NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w1l", "0.002", "0.022187","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linwl", "0", "3.7532493319594886","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "loutwl", "0", "4.397849331959489","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w1r", "0.002", "0.022187","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linwr", "0.0", "3.7532493319594886","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "loutwr", "0", "4.397849331959489","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h1u", "0.002", "0.017858","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linhu", "0.0", "2.213738646767668","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "louthu", "0", "33.23733864676767","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h1d", "0.002", "0.017858","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "linhd", "0.0", "2.213738646767668","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "louthd", "0", "33.23733864676767","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "l", "0", "0.5488999999999999","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0006_NBOA_drawing_1_end", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _NBOA_drawing_1_end_setpos */ - -/* component g1a2=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g1a2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g1a2_setpos] component g1a2=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g1a2_var._name, "g1a2", 16384); - stracpy(_g1a2_var._type, "Guide_four_side", 16384); - _g1a2_var._index=8; - int current_setpos_index = 8; - _g1a2_var._parameters.RIreflect[0]='\0'; - _g1a2_var._parameters.LIreflect[0]='\0'; - _g1a2_var._parameters.UIreflect[0]='\0'; - _g1a2_var._parameters.DIreflect[0]='\0'; - _g1a2_var._parameters.ROreflect[0]='\0'; - _g1a2_var._parameters.LOreflect[0]='\0'; - _g1a2_var._parameters.UOreflect[0]='\0'; - _g1a2_var._parameters.DOreflect[0]='\0'; - _g1a2_var._parameters.w1l = 0.022397711974319966; - _g1a2_var._parameters.w2l = 0.002; - _g1a2_var._parameters.linwl = 4.303349331959489; - _g1a2_var._parameters.loutwl = 3.3968493319594883; - _g1a2_var._parameters.w1r = 0.022397711974319966; - _g1a2_var._parameters.w2r = 0.002; - _g1a2_var._parameters.linwr = 4.303349331959489; - _g1a2_var._parameters.loutwr = 3.3968493319594883; - _g1a2_var._parameters.h1u = 0.019790525295492974; - _g1a2_var._parameters.h2u = 0.002; - _g1a2_var._parameters.linhu = 2.763788626121542; - _g1a2_var._parameters.louthu = 32.236388626121546; - _g1a2_var._parameters.h1d = 0.019790525295492974; - _g1a2_var._parameters.h2d = 0.002; - _g1a2_var._parameters.linhd = 2.763788626121542; - _g1a2_var._parameters.louthd = 32.236388626121546; - _g1a2_var._parameters.l = 0.9998; - _g1a2_var._parameters.R0 = 0.99; - _g1a2_var._parameters.Qcxl = 0.0217; - _g1a2_var._parameters.Qcxr = 0.0217; - _g1a2_var._parameters.Qcyu = 0.0217; - _g1a2_var._parameters.Qcyd = 0.0217; - _g1a2_var._parameters.alphaxl = 2.5; - _g1a2_var._parameters.alphaxr = 2.5; - _g1a2_var._parameters.alphayu = 2.5; - _g1a2_var._parameters.alphayd = 2.5; - _g1a2_var._parameters.Wxr = 0.015; - _g1a2_var._parameters.Wxl = 0.015; - _g1a2_var._parameters.Wyu = 0.015; - _g1a2_var._parameters.Wyd = 0.015; - _g1a2_var._parameters.mxr = 4; - _g1a2_var._parameters.mxl = 4; - _g1a2_var._parameters.myu = 4; - _g1a2_var._parameters.myd = 4; - _g1a2_var._parameters.QcxrOW = 0.0217; - _g1a2_var._parameters.QcxlOW = 0.0217; - _g1a2_var._parameters.QcyuOW = 0.0217; - _g1a2_var._parameters.QcydOW = 0.0217; - _g1a2_var._parameters.alphaxlOW = 6.07; - _g1a2_var._parameters.alphaxrOW = 6.07; - _g1a2_var._parameters.alphayuOW = 6.07; - _g1a2_var._parameters.alphaydOW = 6.07; - _g1a2_var._parameters.WxrOW = 0.003; - _g1a2_var._parameters.WxlOW = 0.003; - _g1a2_var._parameters.WyuOW = 0.003; - _g1a2_var._parameters.WydOW = 0.003; - _g1a2_var._parameters.mxrOW = 0; - _g1a2_var._parameters.mxlOW = 0; - _g1a2_var._parameters.myuOW = 0; - _g1a2_var._parameters.mydOW = 0; - _g1a2_var._parameters.rwallthick = 0.001; - _g1a2_var._parameters.lwallthick = 0.001; - _g1a2_var._parameters.uwallthick = 0.001; - _g1a2_var._parameters.dwallthick = 0.001; - - - /* component g1a2=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _NBOA_drawing_1_end_var._rotation_absolute, _g1a2_var._rotation_absolute); - rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); - rot_mul(_g1a2_var._rotation_absolute, tr1, _g1a2_var._rotation_relative); - _g1a2_var._rotation_is_identity = rot_test_identity(_g1a2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0.548901); - rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g1a2_var._position_absolute = coords_add(_NBOA_drawing_1_end_var._position_absolute, tc2); - tc1 = coords_sub(_NBOA_drawing_1_end_var._position_absolute, _g1a2_var._position_absolute); - _g1a2_var._position_relative = rot_apply(_g1a2_var._rotation_absolute, tc1); - } /* g1a2=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute); - instrument->_position_absolute[8] = _g1a2_var._position_absolute; - instrument->_position_relative[8] = _g1a2_var._position_relative; - _g1a2_var._position_relative_is_zero = coords_test_zero(_g1a2_var._position_relative); - instrument->counter_N[8] = instrument->counter_P[8] = instrument->counter_P2[8] = 0; - instrument->counter_AbsorbProp[8]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0007_g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "w1l", "0.002", "0.022397711974319966","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "linwl", "0", "4.303349331959489","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "loutwl", "0", "3.3968493319594883","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "w1r", "0.002", "0.022397711974319966","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "linwr", "0.0", "4.303349331959489","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "loutwr", "0", "3.3968493319594883","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "h1u", "0.002", "0.019790525295492974","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "linhu", "0.0", "2.763788626121542","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "louthu", "0", "32.236388626121546","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "h1d", "0.002", "0.019790525295492974","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "linhd", "0.0", "2.763788626121542","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "louthd", "0", "32.236388626121546","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "l", "0", "0.9998","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcyu", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "Qcyd", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayu", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayd", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "myu", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "myd", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0007_g1a2", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g1a2_setpos */ - -/* component g1a3=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g1a3_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g1a3_setpos] component g1a3=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g1a3_var._name, "g1a3", 16384); - stracpy(_g1a3_var._type, "Guide_four_side", 16384); - _g1a3_var._index=9; - int current_setpos_index = 9; - _g1a3_var._parameters.RIreflect[0]='\0'; - _g1a3_var._parameters.LIreflect[0]='\0'; - _g1a3_var._parameters.UIreflect[0]='\0'; - _g1a3_var._parameters.DIreflect[0]='\0'; - _g1a3_var._parameters.ROreflect[0]='\0'; - _g1a3_var._parameters.LOreflect[0]='\0'; - _g1a3_var._parameters.UOreflect[0]='\0'; - _g1a3_var._parameters.DOreflect[0]='\0'; - _g1a3_var._parameters.w1l = 0.021853309009560024; - _g1a3_var._parameters.w2l = 0.002; - _g1a3_var._parameters.linwl = 5.3043493319594885; - _g1a3_var._parameters.loutwl = 1.8968293319594889; - _g1a3_var._parameters.w1r = 0.021853309009560024; - _g1a3_var._parameters.w2r = 0.002; - _g1a3_var._parameters.linwr = 5.3043493319594885; - _g1a3_var._parameters.loutwr = 1.8968293319594889; - _g1a3_var._parameters.h1u = 0.02274764602619812; - _g1a3_var._parameters.h2u = 0.002; - _g1a3_var._parameters.linhu = 3.7648386261215414; - _g1a3_var._parameters.louthu = 30.73631862612154; - _g1a3_var._parameters.h1d = 0.02274764602619812; - _g1a3_var._parameters.h2d = 0.002; - _g1a3_var._parameters.linhd = 3.7648386261215414; - _g1a3_var._parameters.louthd = 30.73631862612154; - _g1a3_var._parameters.l = 1.49882; - _g1a3_var._parameters.R0 = 0.99; - _g1a3_var._parameters.Qcxl = 0.0217; - _g1a3_var._parameters.Qcxr = 0.0217; - _g1a3_var._parameters.Qcyu = 0.0217; - _g1a3_var._parameters.Qcyd = 0.0217; - _g1a3_var._parameters.alphaxl = 2.5; - _g1a3_var._parameters.alphaxr = 2.5; - _g1a3_var._parameters.alphayu = 2.5; - _g1a3_var._parameters.alphayd = 2.5; - _g1a3_var._parameters.Wxr = 0.015; - _g1a3_var._parameters.Wxl = 0.015; - _g1a3_var._parameters.Wyu = 0.015; - _g1a3_var._parameters.Wyd = 0.015; - _g1a3_var._parameters.mxr = 4; - _g1a3_var._parameters.mxl = 4; - _g1a3_var._parameters.myu = 4; - _g1a3_var._parameters.myd = 4; - _g1a3_var._parameters.QcxrOW = 0.0217; - _g1a3_var._parameters.QcxlOW = 0.0217; - _g1a3_var._parameters.QcyuOW = 0.0217; - _g1a3_var._parameters.QcydOW = 0.0217; - _g1a3_var._parameters.alphaxlOW = 6.07; - _g1a3_var._parameters.alphaxrOW = 6.07; - _g1a3_var._parameters.alphayuOW = 6.07; - _g1a3_var._parameters.alphaydOW = 6.07; - _g1a3_var._parameters.WxrOW = 0.003; - _g1a3_var._parameters.WxlOW = 0.003; - _g1a3_var._parameters.WyuOW = 0.003; - _g1a3_var._parameters.WydOW = 0.003; - _g1a3_var._parameters.mxrOW = 0; - _g1a3_var._parameters.mxlOW = 0; - _g1a3_var._parameters.myuOW = 0; - _g1a3_var._parameters.mydOW = 0; - _g1a3_var._parameters.rwallthick = 0.001; - _g1a3_var._parameters.lwallthick = 0.001; - _g1a3_var._parameters.uwallthick = 0.001; - _g1a3_var._parameters.dwallthick = 0.001; - - - /* component g1a3=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _g1a2_var._rotation_absolute, _g1a3_var._rotation_absolute); - rot_transpose(_g1a2_var._rotation_absolute, tr1); - rot_mul(_g1a3_var._rotation_absolute, tr1, _g1a3_var._rotation_relative); - _g1a3_var._rotation_is_identity = rot_test_identity(_g1a3_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0.999801); - rot_transpose(_g1a2_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g1a3_var._position_absolute = coords_add(_g1a2_var._position_absolute, tc2); - tc1 = coords_sub(_g1a2_var._position_absolute, _g1a3_var._position_absolute); - _g1a3_var._position_relative = rot_apply(_g1a3_var._rotation_absolute, tc1); - } /* g1a3=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute); - instrument->_position_absolute[9] = _g1a3_var._position_absolute; - instrument->_position_relative[9] = _g1a3_var._position_relative; - _g1a3_var._position_relative_is_zero = coords_test_zero(_g1a3_var._position_relative); - instrument->counter_N[9] = instrument->counter_P[9] = instrument->counter_P2[9] = 0; - instrument->counter_AbsorbProp[9]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0008_g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "w1l", "0.002", "0.021853309009560024","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "linwl", "0", "5.3043493319594885","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "loutwl", "0", "1.8968293319594889","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "w1r", "0.002", "0.021853309009560024","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "linwr", "0.0", "5.3043493319594885","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "loutwr", "0", "1.8968293319594889","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "h1u", "0.002", "0.02274764602619812","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "linhu", "0.0", "3.7648386261215414","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "louthu", "0", "30.73631862612154","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "h1d", "0.002", "0.02274764602619812","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "linhd", "0.0", "3.7648386261215414","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "louthd", "0", "30.73631862612154","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "l", "0", "1.49882","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcyu", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "Qcyd", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayu", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayd", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "myu", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "myd", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0008_g1a3", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g1a3_setpos */ - -/* component g1b1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g1b1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g1b1_setpos] component g1b1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g1b1_var._name, "g1b1", 16384); - stracpy(_g1b1_var._type, "Guide_four_side", 16384); - _g1b1_var._index=10; - int current_setpos_index = 10; - _g1b1_var._parameters.RIreflect[0]='\0'; - _g1b1_var._parameters.LIreflect[0]='\0'; - _g1b1_var._parameters.UIreflect[0]='\0'; - _g1b1_var._parameters.DIreflect[0]='\0'; - _g1b1_var._parameters.ROreflect[0]='\0'; - _g1b1_var._parameters.LOreflect[0]='\0'; - _g1b1_var._parameters.UOreflect[0]='\0'; - _g1b1_var._parameters.DOreflect[0]='\0'; - _g1b1_var._parameters.w1l = 0.017955; - _g1b1_var._parameters.w2l = 0.002; - _g1b1_var._parameters.linwl = 6.82655; - _g1b1_var._parameters.loutwl = 1.3934509999999998; - _g1b1_var._parameters.w1r = 0.017955; - _g1b1_var._parameters.w2r = 0.002; - _g1b1_var._parameters.linwr = 6.82655; - _g1b1_var._parameters.loutwr = 1.3934509999999998; - _g1b1_var._parameters.h1u = 0.026565; - _g1b1_var._parameters.h2u = 0.002; - _g1b1_var._parameters.linhu = 5.2842144; - _g1b1_var._parameters.louthu = 30.232929999999996; - _g1b1_var._parameters.h1d = 0.026565; - _g1b1_var._parameters.h2d = 0.002; - _g1b1_var._parameters.linhd = 5.2842144; - _g1b1_var._parameters.louthd = 30.232929999999996; - _g1b1_var._parameters.l = 0.48300000000000054; - _g1b1_var._parameters.R0 = 0.99; - _g1b1_var._parameters.Qcxl = 0.0217; - _g1b1_var._parameters.Qcxr = 0.0217; - _g1b1_var._parameters.Qcyu = 0.0221; - _g1b1_var._parameters.Qcyd = 0.0221; - _g1b1_var._parameters.alphaxl = 2.5; - _g1b1_var._parameters.alphaxr = 2.5; - _g1b1_var._parameters.alphayu = 1.75; - _g1b1_var._parameters.alphayd = 1.75; - _g1b1_var._parameters.Wxr = 0.015; - _g1b1_var._parameters.Wxl = 0.015; - _g1b1_var._parameters.Wyu = 0.015; - _g1b1_var._parameters.Wyd = 0.015; - _g1b1_var._parameters.mxr = 4; - _g1b1_var._parameters.mxl = 4; - _g1b1_var._parameters.myu = 2.5; - _g1b1_var._parameters.myd = 2.5; - _g1b1_var._parameters.QcxrOW = 0.0217; - _g1b1_var._parameters.QcxlOW = 0.0217; - _g1b1_var._parameters.QcyuOW = 0.0217; - _g1b1_var._parameters.QcydOW = 0.0217; - _g1b1_var._parameters.alphaxlOW = 6.07; - _g1b1_var._parameters.alphaxrOW = 6.07; - _g1b1_var._parameters.alphayuOW = 6.07; - _g1b1_var._parameters.alphaydOW = 6.07; - _g1b1_var._parameters.WxrOW = 0.003; - _g1b1_var._parameters.WxlOW = 0.003; - _g1b1_var._parameters.WyuOW = 0.003; - _g1b1_var._parameters.WydOW = 0.003; - _g1b1_var._parameters.mxrOW = 0; - _g1b1_var._parameters.mxlOW = 0; - _g1b1_var._parameters.myuOW = 0; - _g1b1_var._parameters.mydOW = 0; - _g1b1_var._parameters.rwallthick = 0.001; - _g1b1_var._parameters.lwallthick = 0.001; - _g1b1_var._parameters.uwallthick = 0.001; - _g1b1_var._parameters.dwallthick = 0.001; - - - /* component g1b1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1b1_var._rotation_absolute); - rot_transpose(_g1a3_var._rotation_absolute, tr1); - rot_mul(_g1b1_var._rotation_absolute, tr1, _g1b1_var._rotation_relative); - _g1b1_var._rotation_is_identity = rot_test_identity(_g1b1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 5.4109); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g1b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g1a3_var._position_absolute, _g1b1_var._position_absolute); - _g1b1_var._position_relative = rot_apply(_g1b1_var._rotation_absolute, tc1); - } /* g1b1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute); - instrument->_position_absolute[10] = _g1b1_var._position_absolute; - instrument->_position_relative[10] = _g1b1_var._position_relative; - _g1b1_var._position_relative_is_zero = coords_test_zero(_g1b1_var._position_relative); - instrument->counter_N[10] = instrument->counter_P[10] = instrument->counter_P2[10] = 0; - instrument->counter_AbsorbProp[10]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0009_g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "w1l", "0.002", "0.017955","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "linwl", "0", "6.82655","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "loutwl", "0", "1.3934509999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "w1r", "0.002", "0.017955","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "linwr", "0.0", "6.82655","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "loutwr", "0", "1.3934509999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "h1u", "0.002", "0.026565","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "linhu", "0.0", "5.2842144","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "louthu", "0", "30.232929999999996","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "h1d", "0.002", "0.026565","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "linhd", "0.0", "5.2842144","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "louthd", "0", "30.232929999999996","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "l", "0", "0.48300000000000054","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcyu", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "Qcyd", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayu", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayd", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "myu", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "myd", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0009_g1b1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g1b1_setpos */ - -/* component g1c1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g1c1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g1c1_setpos] component g1c1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g1c1_var._name, "g1c1", 16384); - stracpy(_g1c1_var._type, "Guide_four_side", 16384); - _g1c1_var._index=11; - int current_setpos_index = 11; - _g1c1_var._parameters.RIreflect[0]='\0'; - _g1c1_var._parameters.LIreflect[0]='\0'; - _g1c1_var._parameters.UIreflect[0]='\0'; - _g1c1_var._parameters.DIreflect[0]='\0'; - _g1c1_var._parameters.ROreflect[0]='\0'; - _g1c1_var._parameters.LOreflect[0]='\0'; - _g1c1_var._parameters.UOreflect[0]='\0'; - _g1c1_var._parameters.DOreflect[0]='\0'; - _g1c1_var._parameters.w1l = 0.015725; - _g1c1_var._parameters.w2l = 0.002; - _g1c1_var._parameters.linwl = 7.323650000000001; - _g1c1_var._parameters.loutwl = 0.5472510000000002; - _g1c1_var._parameters.w1r = 0.015725; - _g1c1_var._parameters.w2r = 0.002; - _g1c1_var._parameters.linwr = 7.323650000000001; - _g1c1_var._parameters.loutwr = 0.5472510000000002; - _g1c1_var._parameters.h1u = 0.02753; - _g1c1_var._parameters.h2u = 0.002; - _g1c1_var._parameters.linhu = 5.7813144; - _g1c1_var._parameters.louthu = 29.38673; - _g1c1_var._parameters.h1d = 0.02753; - _g1c1_var._parameters.h2d = 0.002; - _g1c1_var._parameters.linhd = 5.7813144; - _g1c1_var._parameters.louthd = 29.38673; - _g1c1_var._parameters.l = 0.8320999999999996; - _g1c1_var._parameters.R0 = 0.99; - _g1c1_var._parameters.Qcxl = 0.0217; - _g1c1_var._parameters.Qcxr = 0.0217; - _g1c1_var._parameters.Qcyu = 0.0221; - _g1c1_var._parameters.Qcyd = 0.0221; - _g1c1_var._parameters.alphaxl = 2.5; - _g1c1_var._parameters.alphaxr = 2.5; - _g1c1_var._parameters.alphayu = 1.75; - _g1c1_var._parameters.alphayd = 1.75; - _g1c1_var._parameters.Wxr = 0.015; - _g1c1_var._parameters.Wxl = 0.015; - _g1c1_var._parameters.Wyu = 0.015; - _g1c1_var._parameters.Wyd = 0.015; - _g1c1_var._parameters.mxr = 4; - _g1c1_var._parameters.mxl = 4; - _g1c1_var._parameters.myu = 2.5; - _g1c1_var._parameters.myd = 2.5; - _g1c1_var._parameters.QcxrOW = 0.0217; - _g1c1_var._parameters.QcxlOW = 0.0217; - _g1c1_var._parameters.QcyuOW = 0.0217; - _g1c1_var._parameters.QcydOW = 0.0217; - _g1c1_var._parameters.alphaxlOW = 6.07; - _g1c1_var._parameters.alphaxrOW = 6.07; - _g1c1_var._parameters.alphayuOW = 6.07; - _g1c1_var._parameters.alphaydOW = 6.07; - _g1c1_var._parameters.WxrOW = 0.003; - _g1c1_var._parameters.WxlOW = 0.003; - _g1c1_var._parameters.WyuOW = 0.003; - _g1c1_var._parameters.WydOW = 0.003; - _g1c1_var._parameters.mxrOW = 0; - _g1c1_var._parameters.mxlOW = 0; - _g1c1_var._parameters.myuOW = 0; - _g1c1_var._parameters.mydOW = 0; - _g1c1_var._parameters.rwallthick = 0.001; - _g1c1_var._parameters.lwallthick = 0.001; - _g1c1_var._parameters.uwallthick = 0.001; - _g1c1_var._parameters.dwallthick = 0.001; - - - /* component g1c1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1c1_var._rotation_absolute); - rot_transpose(_g1b1_var._rotation_absolute, tr1); - rot_mul(_g1c1_var._rotation_absolute, tr1, _g1c1_var._rotation_relative); - _g1c1_var._rotation_is_identity = rot_test_identity(_g1c1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 5.908); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g1c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g1b1_var._position_absolute, _g1c1_var._position_absolute); - _g1c1_var._position_relative = rot_apply(_g1c1_var._rotation_absolute, tc1); - } /* g1c1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute); - instrument->_position_absolute[11] = _g1c1_var._position_absolute; - instrument->_position_relative[11] = _g1c1_var._position_relative; - _g1c1_var._position_relative_is_zero = coords_test_zero(_g1c1_var._position_relative); - instrument->counter_N[11] = instrument->counter_P[11] = instrument->counter_P2[11] = 0; - instrument->counter_AbsorbProp[11]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0010_g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "w1l", "0.002", "0.015725","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "linwl", "0", "7.323650000000001","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "loutwl", "0", "0.5472510000000002","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "w1r", "0.002", "0.015725","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "linwr", "0.0", "7.323650000000001","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "loutwr", "0", "0.5472510000000002","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "h1u", "0.002", "0.02753","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "linhu", "0.0", "5.7813144","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "louthu", "0", "29.38673","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "h1d", "0.002", "0.02753","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "linhd", "0.0", "5.7813144","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "louthd", "0", "29.38673","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "l", "0", "0.8320999999999996","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcyu", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "Qcyd", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayu", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayd", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "myu", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "myd", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0010_g1c1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g1c1_setpos */ - -/* component wfm_position=Arm() SETTING, POSITION/ROTATION */ -int _wfm_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_wfm_position_setpos] component wfm_position=Arm() SETTING [Arm:0]"); - stracpy(_wfm_position_var._name, "wfm_position", 16384); - stracpy(_wfm_position_var._type, "Arm", 16384); - _wfm_position_var._index=12; - int current_setpos_index = 12; - /* component wfm_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _wfm_position_var._rotation_absolute); - rot_transpose(_g1c1_var._rotation_absolute, tr1); - rot_mul(_wfm_position_var._rotation_absolute, tr1, _wfm_position_var._rotation_relative); - _wfm_position_var._rotation_is_identity = rot_test_identity(_wfm_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 7.0); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _wfm_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_position_var._position_absolute); - _wfm_position_var._position_relative = rot_apply(_wfm_position_var._rotation_absolute, tc1); - } /* wfm_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute); - instrument->_position_absolute[12] = _wfm_position_var._position_absolute; - instrument->_position_relative[12] = _wfm_position_var._position_relative; - _wfm_position_var._position_relative_is_zero = coords_test_zero(_wfm_position_var._position_relative); - instrument->counter_N[12] = instrument->counter_P[12] = instrument->counter_P2[12] = 0; - instrument->counter_AbsorbProp[12]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0011_wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _wfm_position_setpos */ - -/* component wfm_1_position=Arm() SETTING, POSITION/ROTATION */ -int _wfm_1_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_wfm_1_position_setpos] component wfm_1_position=Arm() SETTING [Arm:0]"); - stracpy(_wfm_1_position_var._name, "wfm_1_position", 16384); - stracpy(_wfm_1_position_var._type, "Arm", 16384); - _wfm_1_position_var._index=13; - int current_setpos_index = 13; - /* component wfm_1_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_1_position_var._rotation_absolute); - rot_transpose(_g1c1_var._rotation_absolute, tr1); - rot_mul(_wfm_1_position_var._rotation_absolute, tr1, _wfm_1_position_var._rotation_relative); - _wfm_1_position_var._rotation_is_identity = rot_test_identity(_wfm_1_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, -0.5 * _instrument_var._parameters.wfm_delta); - rot_transpose(_wfm_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _wfm_1_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); - tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_1_position_var._position_absolute); - _wfm_1_position_var._position_relative = rot_apply(_wfm_1_position_var._rotation_absolute, tc1); - } /* wfm_1_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute); - instrument->_position_absolute[13] = _wfm_1_position_var._position_absolute; - instrument->_position_relative[13] = _wfm_1_position_var._position_relative; - _wfm_1_position_var._position_relative_is_zero = coords_test_zero(_wfm_1_position_var._position_relative); - instrument->counter_N[13] = instrument->counter_P[13] = instrument->counter_P2[13] = 0; - instrument->counter_AbsorbProp[13]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0012_wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _wfm_1_position_setpos */ - -/* component wfmc_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ -int _wfmc_1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_wfmc_1_setpos] component wfmc_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); - stracpy(_wfmc_1_var._name, "wfmc_1", 16384); - stracpy(_wfmc_1_var._type, "MultiDiskChopper", 16384); - _wfmc_1_var._index=14; - int current_setpos_index = 14; - if("5.62;-44.68;-91.85;-136.08;-177.55;143.56" && strlen("5.62;-44.68;-91.85;-136.08;-177.55;143.56")) - stracpy(_wfmc_1_var._parameters.slit_center, "5.62;-44.68;-91.85;-136.08;-177.55;143.56" ? "5.62;-44.68;-91.85;-136.08;-177.55;143.56" : "", 16384); - else - _wfmc_1_var._parameters.slit_center[0]='\0'; - if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) - stracpy(_wfmc_1_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); - else - _wfmc_1_var._parameters.slit_width[0]='\0'; - _wfmc_1_var._parameters.nslits = 6; - _wfmc_1_var._parameters.delta_y = -0.31499999999999995; - _wfmc_1_var._parameters.nu = -56.0; - _wfmc_1_var._parameters.nrev = 0; - _wfmc_1_var._parameters.ratio = 1; - _wfmc_1_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_1; - _wfmc_1_var._parameters.delay = 0; - _wfmc_1_var._parameters.isfirst = 0; - _wfmc_1_var._parameters.phase = WFM1_phase; - _wfmc_1_var._parameters.radius = 0.35; - _wfmc_1_var._parameters.equal = 0; - _wfmc_1_var._parameters.abs_out = 0; - _wfmc_1_var._parameters.verbose = 0; - - - /* component wfmc_1=MultiDiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _wfm_1_position_var._rotation_absolute, _wfmc_1_var._rotation_absolute); - rot_transpose(_g1c1_var._rotation_absolute, tr1); - rot_mul(_wfmc_1_var._rotation_absolute, tr1, _wfmc_1_var._rotation_relative); - _wfmc_1_var._rotation_is_identity = rot_test_identity(_wfmc_1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_wfm_1_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _wfmc_1_var._position_absolute = coords_add(_wfm_1_position_var._position_absolute, tc2); - tc1 = coords_sub(_g1c1_var._position_absolute, _wfmc_1_var._position_absolute); - _wfmc_1_var._position_relative = rot_apply(_wfmc_1_var._rotation_absolute, tc1); - } /* wfmc_1=MultiDiskChopper() AT ROTATED */ - DEBUG_COMPONENT("wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute); - instrument->_position_absolute[14] = _wfmc_1_var._position_absolute; - instrument->_position_relative[14] = _wfmc_1_var._position_relative; - _wfmc_1_var._position_relative_is_zero = coords_test_zero(_wfmc_1_var._position_relative); - instrument->counter_N[14] = instrument->counter_P[14] = instrument->counter_P2[14] = 0; - instrument->counter_AbsorbProp[14]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0013_wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute, "MultiDiskChopper"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "slit_center", "0 180", "5.62;-44.68;-91.85;-136.08;-177.55;143.56", "char*"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nslits", "2", "6","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nu", "0", "-56.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "nrev", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "ratio", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_1","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "phase", "0", "WFM1_phase","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "radius", "0.375", "0.35","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "equal", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "abs_out", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0013_wfmc_1", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _wfmc_1_setpos */ - -/* component pinhole_1=Slit() SETTING, POSITION/ROTATION */ -int _pinhole_1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_pinhole_1_setpos] component pinhole_1=Slit() SETTING [Slit:0]"); - stracpy(_pinhole_1_var._name, "pinhole_1", 16384); - stracpy(_pinhole_1_var._type, "Slit", 16384); - _pinhole_1_var._index=15; - int current_setpos_index = 15; - _pinhole_1_var._parameters.xmin = UNSET; - _pinhole_1_var._parameters.xmax = UNSET; - _pinhole_1_var._parameters.ymin = UNSET; - _pinhole_1_var._parameters.ymax = UNSET; - _pinhole_1_var._parameters.radius = UNSET; - _pinhole_1_var._parameters.xwidth = 0.015; - _pinhole_1_var._parameters.yheight = 0.06; - - - /* component pinhole_1=Slit() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _wfm_position_var._rotation_absolute, _pinhole_1_var._rotation_absolute); - rot_transpose(_wfmc_1_var._rotation_absolute, tr1); - rot_mul(_pinhole_1_var._rotation_absolute, tr1, _pinhole_1_var._rotation_relative); - _pinhole_1_var._rotation_is_identity = rot_test_identity(_pinhole_1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_wfm_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _pinhole_1_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); - tc1 = coords_sub(_wfmc_1_var._position_absolute, _pinhole_1_var._position_absolute); - _pinhole_1_var._position_relative = rot_apply(_pinhole_1_var._rotation_absolute, tc1); - } /* pinhole_1=Slit() AT ROTATED */ - DEBUG_COMPONENT("pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute); - instrument->_position_absolute[15] = _pinhole_1_var._position_absolute; - instrument->_position_relative[15] = _pinhole_1_var._position_relative; - _pinhole_1_var._position_relative_is_zero = coords_test_zero(_pinhole_1_var._position_relative); - instrument->counter_N[15] = instrument->counter_P[15] = instrument->counter_P2[15] = 0; - instrument->counter_AbsorbProp[15]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0014_pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute, "Slit"); - mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xmin", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xmax", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0014_pinhole_1", "ymin", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0014_pinhole_1", "ymax", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0014_pinhole_1", "radius", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0014_pinhole_1", "xwidth", "UNSET", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0014_pinhole_1", "yheight", "UNSET", "0.06","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _pinhole_1_setpos */ - -/* component wfm_2_position=Arm() SETTING, POSITION/ROTATION */ -int _wfm_2_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_wfm_2_position_setpos] component wfm_2_position=Arm() SETTING [Arm:0]"); - stracpy(_wfm_2_position_var._name, "wfm_2_position", 16384); - stracpy(_wfm_2_position_var._type, "Arm", 16384); - _wfm_2_position_var._index=16; - int current_setpos_index = 16; - /* component wfm_2_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_2_position_var._rotation_absolute); - rot_transpose(_pinhole_1_var._rotation_absolute, tr1); - rot_mul(_wfm_2_position_var._rotation_absolute, tr1, _wfm_2_position_var._rotation_relative); - _wfm_2_position_var._rotation_is_identity = rot_test_identity(_wfm_2_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0.5 * _instrument_var._parameters.wfm_delta); - rot_transpose(_wfm_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _wfm_2_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); - tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfm_2_position_var._position_absolute); - _wfm_2_position_var._position_relative = rot_apply(_wfm_2_position_var._rotation_absolute, tc1); - } /* wfm_2_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute); - instrument->_position_absolute[16] = _wfm_2_position_var._position_absolute; - instrument->_position_relative[16] = _wfm_2_position_var._position_relative; - _wfm_2_position_var._position_relative_is_zero = coords_test_zero(_wfm_2_position_var._position_relative); - instrument->counter_N[16] = instrument->counter_P[16] = instrument->counter_P2[16] = 0; - instrument->counter_AbsorbProp[16]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0015_wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _wfm_2_position_setpos */ - -/* component wfmc_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ -int _wfmc_2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_wfmc_2_setpos] component wfmc_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); - stracpy(_wfmc_2_var._name, "wfmc_2", 16384); - stracpy(_wfmc_2_var._type, "MultiDiskChopper", 16384); - _wfmc_2_var._index=17; - int current_setpos_index = 17; - if("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" && strlen("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028")) - stracpy(_wfmc_2_var._parameters.slit_center, "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" ? "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" : "", 16384); - else - _wfmc_2_var._parameters.slit_center[0]='\0'; - if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) - stracpy(_wfmc_2_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); - else - _wfmc_2_var._parameters.slit_width[0]='\0'; - _wfmc_2_var._parameters.nslits = 6; - _wfmc_2_var._parameters.delta_y = -0.31499999999999995; - _wfmc_2_var._parameters.nu = -56.0; - _wfmc_2_var._parameters.nrev = 0; - _wfmc_2_var._parameters.ratio = 1; - _wfmc_2_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_2; - _wfmc_2_var._parameters.delay = 0; - _wfmc_2_var._parameters.isfirst = 0; - _wfmc_2_var._parameters.phase = WFM2_phase; - _wfmc_2_var._parameters.radius = 0.35; - _wfmc_2_var._parameters.equal = 0; - _wfmc_2_var._parameters.abs_out = 0; - _wfmc_2_var._parameters.verbose = 0; - - - /* component wfmc_2=MultiDiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _wfm_2_position_var._rotation_absolute, _wfmc_2_var._rotation_absolute); - rot_transpose(_pinhole_1_var._rotation_absolute, tr1); - rot_mul(_wfmc_2_var._rotation_absolute, tr1, _wfmc_2_var._rotation_relative); - _wfmc_2_var._rotation_is_identity = rot_test_identity(_wfmc_2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_wfm_2_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _wfmc_2_var._position_absolute = coords_add(_wfm_2_position_var._position_absolute, tc2); - tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfmc_2_var._position_absolute); - _wfmc_2_var._position_relative = rot_apply(_wfmc_2_var._rotation_absolute, tc1); - } /* wfmc_2=MultiDiskChopper() AT ROTATED */ - DEBUG_COMPONENT("wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute); - instrument->_position_absolute[17] = _wfmc_2_var._position_absolute; - instrument->_position_relative[17] = _wfmc_2_var._position_relative; - _wfmc_2_var._position_relative_is_zero = coords_test_zero(_wfmc_2_var._position_relative); - instrument->counter_N[17] = instrument->counter_P[17] = instrument->counter_P2[17] = 0; - instrument->counter_AbsorbProp[17]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0016_wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute, "MultiDiskChopper"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "slit_center", "0 180", "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", "char*"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nslits", "2", "6","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nu", "0", "-56.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "nrev", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "ratio", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_2","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "phase", "0", "WFM2_phase","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "radius", "0.375", "0.35","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "equal", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "abs_out", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0016_wfmc_2", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _wfmc_2_setpos */ - -/* component g2a1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g2a1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g2a1_setpos] component g2a1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g2a1_var._name, "g2a1", 16384); - stracpy(_g2a1_var._type, "Guide_four_side", 16384); - _g2a1_var._index=18; - int current_setpos_index = 18; - _g2a1_var._parameters.RIreflect[0]='\0'; - _g2a1_var._parameters.LIreflect[0]='\0'; - _g2a1_var._parameters.UIreflect[0]='\0'; - _g2a1_var._parameters.DIreflect[0]='\0'; - _g2a1_var._parameters.ROreflect[0]='\0'; - _g2a1_var._parameters.LOreflect[0]='\0'; - _g2a1_var._parameters.UOreflect[0]='\0'; - _g2a1_var._parameters.DOreflect[0]='\0'; - _g2a1_var._parameters.w1l = 0.01121; - _g2a1_var._parameters.w2l = 0.002; - _g2a1_var._parameters.linwl = 0.25980000000000025; - _g2a1_var._parameters.loutwl = 12.040199999999999; - _g2a1_var._parameters.w1r = 0.01121; - _g2a1_var._parameters.w2r = 0.002; - _g2a1_var._parameters.linwr = 0.25980000000000025; - _g2a1_var._parameters.loutwr = 12.040199999999999; - _g2a1_var._parameters.h1u = 0.029825; - _g2a1_var._parameters.h2u = 0.002; - _g2a1_var._parameters.linhu = 7.2598; - _g2a1_var._parameters.louthu = 28.0402; - _g2a1_var._parameters.h1d = 0.029825; - _g2a1_var._parameters.h2d = 0.002; - _g2a1_var._parameters.linhd = 7.2598; - _g2a1_var._parameters.louthd = 28.0402; - _g2a1_var._parameters.l = 0.7000000000000002; - _g2a1_var._parameters.R0 = 0.99; - _g2a1_var._parameters.Qcxl = 0.023; - _g2a1_var._parameters.Qcxr = 0.023; - _g2a1_var._parameters.Qcyu = 0.0221; - _g2a1_var._parameters.Qcyd = 0.0221; - _g2a1_var._parameters.alphaxl = 1.8; - _g2a1_var._parameters.alphaxr = 1.8; - _g2a1_var._parameters.alphayu = 1.75; - _g2a1_var._parameters.alphayd = 1.75; - _g2a1_var._parameters.Wxr = 0.015; - _g2a1_var._parameters.Wxl = 0.015; - _g2a1_var._parameters.Wyu = 0.015; - _g2a1_var._parameters.Wyd = 0.015; - _g2a1_var._parameters.mxr = 2; - _g2a1_var._parameters.mxl = 2; - _g2a1_var._parameters.myu = 3; - _g2a1_var._parameters.myd = 3; - _g2a1_var._parameters.QcxrOW = 0.0217; - _g2a1_var._parameters.QcxlOW = 0.0217; - _g2a1_var._parameters.QcyuOW = 0.0217; - _g2a1_var._parameters.QcydOW = 0.0217; - _g2a1_var._parameters.alphaxlOW = 6.07; - _g2a1_var._parameters.alphaxrOW = 6.07; - _g2a1_var._parameters.alphayuOW = 6.07; - _g2a1_var._parameters.alphaydOW = 6.07; - _g2a1_var._parameters.WxrOW = 0.003; - _g2a1_var._parameters.WxlOW = 0.003; - _g2a1_var._parameters.WyuOW = 0.003; - _g2a1_var._parameters.WydOW = 0.003; - _g2a1_var._parameters.mxrOW = 0; - _g2a1_var._parameters.mxlOW = 0; - _g2a1_var._parameters.myuOW = 0; - _g2a1_var._parameters.mydOW = 0; - _g2a1_var._parameters.rwallthick = 0.001; - _g2a1_var._parameters.lwallthick = 0.001; - _g2a1_var._parameters.uwallthick = 0.001; - _g2a1_var._parameters.dwallthick = 0.001; - - - /* component g2a1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a1_var._rotation_absolute); - rot_transpose(_wfmc_2_var._rotation_absolute, tr1); - rot_mul(_g2a1_var._rotation_absolute, tr1, _g2a1_var._rotation_relative); - _g2a1_var._rotation_is_identity = rot_test_identity(_g2a1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 7.247800000000001); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g2a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_wfmc_2_var._position_absolute, _g2a1_var._position_absolute); - _g2a1_var._position_relative = rot_apply(_g2a1_var._rotation_absolute, tc1); - } /* g2a1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute); - instrument->_position_absolute[18] = _g2a1_var._position_absolute; - instrument->_position_relative[18] = _g2a1_var._position_relative; - _g2a1_var._position_relative_is_zero = coords_test_zero(_g2a1_var._position_relative); - instrument->counter_N[18] = instrument->counter_P[18] = instrument->counter_P2[18] = 0; - instrument->counter_AbsorbProp[18]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0017_g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "w1l", "0.002", "0.01121","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "linwl", "0", "0.25980000000000025","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "loutwl", "0", "12.040199999999999","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "w1r", "0.002", "0.01121","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "linwr", "0.0", "0.25980000000000025","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "loutwr", "0", "12.040199999999999","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "h1u", "0.002", "0.029825","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "linhu", "0.0", "7.2598","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "louthu", "0", "28.0402","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "h1d", "0.002", "0.029825","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "linhd", "0.0", "7.2598","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "louthd", "0", "28.0402","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "l", "0", "0.7000000000000002","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcxl", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcxr", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcyu", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "Qcyd", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxl", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxr", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayu", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayd", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "mxr", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "mxl", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "myu", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "myd", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0017_g2a1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g2a1_setpos */ - -/* component monitor_1_position=Arm() SETTING, POSITION/ROTATION */ -int _monitor_1_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_monitor_1_position_setpos] component monitor_1_position=Arm() SETTING [Arm:0]"); - stracpy(_monitor_1_position_var._name, "monitor_1_position", 16384); - stracpy(_monitor_1_position_var._type, "Arm", 16384); - _monitor_1_position_var._index=19; - int current_setpos_index = 19; - /* component monitor_1_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_1_position_var._rotation_absolute); - rot_transpose(_g2a1_var._rotation_absolute, tr1); - rot_mul(_monitor_1_position_var._rotation_absolute, tr1, _monitor_1_position_var._rotation_relative); - _monitor_1_position_var._rotation_is_identity = rot_test_identity(_monitor_1_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 7.96); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _monitor_1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g2a1_var._position_absolute, _monitor_1_position_var._position_absolute); - _monitor_1_position_var._position_relative = rot_apply(_monitor_1_position_var._rotation_absolute, tc1); - } /* monitor_1_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute); - instrument->_position_absolute[19] = _monitor_1_position_var._position_absolute; - instrument->_position_relative[19] = _monitor_1_position_var._position_relative; - _monitor_1_position_var._position_relative_is_zero = coords_test_zero(_monitor_1_position_var._position_relative); - instrument->counter_N[19] = instrument->counter_P[19] = instrument->counter_P2[19] = 0; - instrument->counter_AbsorbProp[19]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0018_monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _monitor_1_position_setpos */ - -/* component g2a2=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g2a2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g2a2_setpos] component g2a2=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g2a2_var._name, "g2a2", 16384); - stracpy(_g2a2_var._type, "Guide_four_side", 16384); - _g2a2_var._index=20; - int current_setpos_index = 20; - _g2a2_var._parameters.RIreflect[0]='\0'; - _g2a2_var._parameters.LIreflect[0]='\0'; - _g2a2_var._parameters.UIreflect[0]='\0'; - _g2a2_var._parameters.DIreflect[0]='\0'; - _g2a2_var._parameters.ROreflect[0]='\0'; - _g2a2_var._parameters.LOreflect[0]='\0'; - _g2a2_var._parameters.UOreflect[0]='\0'; - _g2a2_var._parameters.DOreflect[0]='\0'; - _g2a2_var._parameters.w1l = 0.0212; - _g2a2_var._parameters.w2l = 0.002; - _g2a2_var._parameters.linwl = 0.9858000000000002; - _g2a2_var._parameters.loutwl = 11.6045; - _g2a2_var._parameters.w1r = 0.0212; - _g2a2_var._parameters.w2r = 0.002; - _g2a2_var._parameters.linwr = 0.9858000000000002; - _g2a2_var._parameters.loutwr = 11.6045; - _g2a2_var._parameters.h1u = 0.03088; - _g2a2_var._parameters.h2u = 0.002; - _g2a2_var._parameters.linhu = 7.9858; - _g2a2_var._parameters.louthu = 27.6045; - _g2a2_var._parameters.h1d = 0.03088; - _g2a2_var._parameters.h2d = 0.002; - _g2a2_var._parameters.linhd = 7.9858; - _g2a2_var._parameters.louthd = 27.6045; - _g2a2_var._parameters.l = 0.40969999999999995; - _g2a2_var._parameters.R0 = 0.99; - _g2a2_var._parameters.Qcxl = 0.0221; - _g2a2_var._parameters.Qcxr = 0.0221; - _g2a2_var._parameters.Qcyu = 0.0221; - _g2a2_var._parameters.Qcyd = 0.0221; - _g2a2_var._parameters.alphaxl = 1.75; - _g2a2_var._parameters.alphaxr = 1.75; - _g2a2_var._parameters.alphayu = 1.75; - _g2a2_var._parameters.alphayd = 1.75; - _g2a2_var._parameters.Wxr = 0.015; - _g2a2_var._parameters.Wxl = 0.015; - _g2a2_var._parameters.Wyu = 0.015; - _g2a2_var._parameters.Wyd = 0.015; - _g2a2_var._parameters.mxr = 3; - _g2a2_var._parameters.mxl = 3; - _g2a2_var._parameters.myu = 3; - _g2a2_var._parameters.myd = 3; - _g2a2_var._parameters.QcxrOW = 0.0217; - _g2a2_var._parameters.QcxlOW = 0.0217; - _g2a2_var._parameters.QcyuOW = 0.0217; - _g2a2_var._parameters.QcydOW = 0.0217; - _g2a2_var._parameters.alphaxlOW = 6.07; - _g2a2_var._parameters.alphaxrOW = 6.07; - _g2a2_var._parameters.alphayuOW = 6.07; - _g2a2_var._parameters.alphaydOW = 6.07; - _g2a2_var._parameters.WxrOW = 0.003; - _g2a2_var._parameters.WxlOW = 0.003; - _g2a2_var._parameters.WyuOW = 0.003; - _g2a2_var._parameters.WydOW = 0.003; - _g2a2_var._parameters.mxrOW = 0; - _g2a2_var._parameters.mxlOW = 0; - _g2a2_var._parameters.myuOW = 0; - _g2a2_var._parameters.mydOW = 0; - _g2a2_var._parameters.rwallthick = 0.001; - _g2a2_var._parameters.lwallthick = 0.001; - _g2a2_var._parameters.uwallthick = 0.001; - _g2a2_var._parameters.dwallthick = 0.001; - - - /* component g2a2=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a2_var._rotation_absolute); - rot_transpose(_g2a1_var._rotation_absolute, tr1); - rot_mul(_g2a2_var._rotation_absolute, tr1, _g2a2_var._rotation_relative); - _g2a2_var._rotation_is_identity = rot_test_identity(_g2a2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 7.973800000000001); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g2a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g2a1_var._position_absolute, _g2a2_var._position_absolute); - _g2a2_var._position_relative = rot_apply(_g2a2_var._rotation_absolute, tc1); - } /* g2a2=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute); - instrument->_position_absolute[20] = _g2a2_var._position_absolute; - instrument->_position_relative[20] = _g2a2_var._position_relative; - _g2a2_var._position_relative_is_zero = coords_test_zero(_g2a2_var._position_relative); - instrument->counter_N[20] = instrument->counter_P[20] = instrument->counter_P2[20] = 0; - instrument->counter_AbsorbProp[20]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0019_g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "w1l", "0.002", "0.0212","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "linwl", "0", "0.9858000000000002","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "loutwl", "0", "11.6045","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "w1r", "0.002", "0.0212","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "linwr", "0.0", "0.9858000000000002","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "loutwr", "0", "11.6045","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "h1u", "0.002", "0.03088","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "linhu", "0.0", "7.9858","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "louthu", "0", "27.6045","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "h1d", "0.002", "0.03088","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "linhd", "0.0", "7.9858","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "louthd", "0", "27.6045","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "l", "0", "0.40969999999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcyu", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "Qcyd", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayu", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayd", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "mxr", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "mxl", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "myu", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "myd", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0019_g2a2", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g2a2_setpos */ - -/* component fo1_position=Arm() SETTING, POSITION/ROTATION */ -int _fo1_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo1_position_setpos] component fo1_position=Arm() SETTING [Arm:0]"); - stracpy(_fo1_position_var._name, "fo1_position", 16384); - stracpy(_fo1_position_var._type, "Arm", 16384); - _fo1_position_var._index=21; - int current_setpos_index = 21; - /* component fo1_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo1_position_var._rotation_absolute); - rot_transpose(_g2a2_var._rotation_absolute, tr1); - rot_mul(_fo1_position_var._rotation_absolute, tr1, _fo1_position_var._rotation_relative); - _fo1_position_var._rotation_is_identity = rot_test_identity(_fo1_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 8.392); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g2a2_var._position_absolute, _fo1_position_var._position_absolute); - _fo1_position_var._position_relative = rot_apply(_fo1_position_var._rotation_absolute, tc1); - } /* fo1_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute); - instrument->_position_absolute[21] = _fo1_position_var._position_absolute; - instrument->_position_relative[21] = _fo1_position_var._position_relative; - _fo1_position_var._position_relative_is_zero = coords_test_zero(_fo1_position_var._position_relative); - instrument->counter_N[21] = instrument->counter_P[21] = instrument->counter_P2[21] = 0; - instrument->counter_AbsorbProp[21]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0020_fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo1_position_setpos */ - -/* component fo_chopper_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ -int _fo_chopper_1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo_chopper_1_setpos] component fo_chopper_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); - stracpy(_fo_chopper_1_var._name, "fo_chopper_1", 16384); - stracpy(_fo_chopper_1_var._type, "MultiDiskChopper", 16384); - _fo_chopper_1_var._index=22; - int current_setpos_index = 22; - if("-146.745;166.555;122.775;81.715;43.215;5.525" && strlen("-146.745;166.555;122.775;81.715;43.215;5.525")) - stracpy(_fo_chopper_1_var._parameters.slit_center, "-146.745;166.555;122.775;81.715;43.215;5.525" ? "-146.745;166.555;122.775;81.715;43.215;5.525" : "", 16384); - else - _fo_chopper_1_var._parameters.slit_center[0]='\0'; - if("11.06;13.06;14.94;16.71;18.36;16.72" && strlen("11.06;13.06;14.94;16.71;18.36;16.72")) - stracpy(_fo_chopper_1_var._parameters.slit_width, "11.06;13.06;14.94;16.71;18.36;16.72" ? "11.06;13.06;14.94;16.71;18.36;16.72" : "", 16384); - else - _fo_chopper_1_var._parameters.slit_width[0]='\0'; - _fo_chopper_1_var._parameters.nslits = 6; - _fo_chopper_1_var._parameters.delta_y = -0.4625; - _fo_chopper_1_var._parameters.nu = -42.0; - _fo_chopper_1_var._parameters.nrev = 0; - _fo_chopper_1_var._parameters.ratio = 1; - _fo_chopper_1_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_1; - _fo_chopper_1_var._parameters.delay = 0; - _fo_chopper_1_var._parameters.isfirst = 0; - _fo_chopper_1_var._parameters.phase = fo1_phase; - _fo_chopper_1_var._parameters.radius = 0.5; - _fo_chopper_1_var._parameters.equal = 0; - _fo_chopper_1_var._parameters.abs_out = 0; - _fo_chopper_1_var._parameters.verbose = 0; - - - /* component fo_chopper_1=MultiDiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _fo1_position_var._rotation_absolute, _fo_chopper_1_var._rotation_absolute); - rot_transpose(_g2a2_var._rotation_absolute, tr1); - rot_mul(_fo_chopper_1_var._rotation_absolute, tr1, _fo_chopper_1_var._rotation_relative); - _fo_chopper_1_var._rotation_is_identity = rot_test_identity(_fo_chopper_1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_fo1_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo_chopper_1_var._position_absolute = coords_add(_fo1_position_var._position_absolute, tc2); - tc1 = coords_sub(_g2a2_var._position_absolute, _fo_chopper_1_var._position_absolute); - _fo_chopper_1_var._position_relative = rot_apply(_fo_chopper_1_var._rotation_absolute, tc1); - } /* fo_chopper_1=MultiDiskChopper() AT ROTATED */ - DEBUG_COMPONENT("fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute); - instrument->_position_absolute[22] = _fo_chopper_1_var._position_absolute; - instrument->_position_relative[22] = _fo_chopper_1_var._position_relative; - _fo_chopper_1_var._position_relative_is_zero = coords_test_zero(_fo_chopper_1_var._position_relative); - instrument->counter_N[22] = instrument->counter_P[22] = instrument->counter_P2[22] = 0; - instrument->counter_AbsorbProp[22]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0021_fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute, "MultiDiskChopper"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "slit_center", "0 180", "-146.745;166.555;122.775;81.715;43.215;5.525", "char*"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "slit_width", "10 20", "11.06;13.06;14.94;16.71;18.36;16.72", "char*"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nslits", "2", "6","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "delta_y", "-0.3", "-0.4625","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nu", "0", "-42.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "nrev", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "ratio", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_1","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "phase", "0", "fo1_phase","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "radius", "0.375", "0.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "equal", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "abs_out", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0021_fo_chopper_1", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo_chopper_1_setpos */ - -/* component bp1_position=Arm() SETTING, POSITION/ROTATION */ -int _bp1_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_bp1_position_setpos] component bp1_position=Arm() SETTING [Arm:0]"); - stracpy(_bp1_position_var._name, "bp1_position", 16384); - stracpy(_bp1_position_var._type, "Arm", 16384); - _bp1_position_var._index=23; - int current_setpos_index = 23; - /* component bp1_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp1_position_var._rotation_absolute); - rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); - rot_mul(_bp1_position_var._rotation_absolute, tr1, _bp1_position_var._rotation_relative); - _bp1_position_var._rotation_is_identity = rot_test_identity(_bp1_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 8.442); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _bp1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_position_var._position_absolute); - _bp1_position_var._position_relative = rot_apply(_bp1_position_var._rotation_absolute, tc1); - } /* bp1_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute); - instrument->_position_absolute[23] = _bp1_position_var._position_absolute; - instrument->_position_relative[23] = _bp1_position_var._position_relative; - _bp1_position_var._position_relative_is_zero = coords_test_zero(_bp1_position_var._position_relative); - instrument->counter_N[23] = instrument->counter_P[23] = instrument->counter_P2[23] = 0; - instrument->counter_AbsorbProp[23]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0022_bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _bp1_position_setpos */ - -/* component bp1_chopper=DiskChopper() SETTING, POSITION/ROTATION */ -int _bp1_chopper_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_bp1_chopper_setpos] component bp1_chopper=DiskChopper() SETTING [DiskChopper:0]"); - stracpy(_bp1_chopper_var._name, "bp1_chopper", 16384); - stracpy(_bp1_chopper_var._type, "DiskChopper", 16384); - _bp1_chopper_var._index=24; - int current_setpos_index = 24; - _bp1_chopper_var._parameters.theta_0 = 46.71; - _bp1_chopper_var._parameters.radius = 0.5; - _bp1_chopper_var._parameters.yheight = 0.075; - _bp1_chopper_var._parameters.nu = _instrument_var._parameters.bp_frequency; - _bp1_chopper_var._parameters.nslit = 1; - _bp1_chopper_var._parameters.jitter = _instrument_var._parameters.jitter_bp1; - _bp1_chopper_var._parameters.delay = 0; - _bp1_chopper_var._parameters.isfirst = 0; - _bp1_chopper_var._parameters.n_pulse = 1; - _bp1_chopper_var._parameters.abs_out = 1; - _bp1_chopper_var._parameters.phase = bp1_phase + ( 42.20500000000003 ); - _bp1_chopper_var._parameters.xwidth = 0; - _bp1_chopper_var._parameters.verbose = 0; - - - /* component bp1_chopper=DiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _bp1_position_var._rotation_absolute, _bp1_chopper_var._rotation_absolute); - rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); - rot_mul(_bp1_chopper_var._rotation_absolute, tr1, _bp1_chopper_var._rotation_relative); - _bp1_chopper_var._rotation_is_identity = rot_test_identity(_bp1_chopper_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_bp1_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _bp1_chopper_var._position_absolute = coords_add(_bp1_position_var._position_absolute, tc2); - tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_chopper_var._position_absolute); - _bp1_chopper_var._position_relative = rot_apply(_bp1_chopper_var._rotation_absolute, tc1); - } /* bp1_chopper=DiskChopper() AT ROTATED */ - DEBUG_COMPONENT("bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute); - instrument->_position_absolute[24] = _bp1_chopper_var._position_absolute; - instrument->_position_relative[24] = _bp1_chopper_var._position_relative; - _bp1_chopper_var._position_relative_is_zero = coords_test_zero(_bp1_chopper_var._position_relative); - instrument->counter_N[24] = instrument->counter_P[24] = instrument->counter_P2[24] = 0; - instrument->counter_AbsorbProp[24]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0023_bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute, "DiskChopper"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "theta_0", "0", "46.71","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "radius", "0.5", "0.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "yheight", "NONE", "0.075","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "nslit", "3", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "jitter", "0", "_instrument_var._parameters.jitter_bp1","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "n_pulse", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "abs_out", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "phase", "0", "bp1_phase + ( 42.20500000000003 )","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "xwidth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0023_bp1_chopper", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _bp1_chopper_setpos */ - -/* component g2b1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g2b1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g2b1_setpos] component g2b1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g2b1_var._name, "g2b1", 16384); - stracpy(_g2b1_var._type, "Guide_four_side", 16384); - _g2b1_var._index=25; - int current_setpos_index = 25; - _g2b1_var._parameters.RIreflect[0]='\0'; - _g2b1_var._parameters.LIreflect[0]='\0'; - _g2b1_var._parameters.UIreflect[0]='\0'; - _g2b1_var._parameters.DIreflect[0]='\0'; - _g2b1_var._parameters.ROreflect[0]='\0'; - _g2b1_var._parameters.LOreflect[0]='\0'; - _g2b1_var._parameters.UOreflect[0]='\0'; - _g2b1_var._parameters.DOreflect[0]='\0'; - _g2b1_var._parameters.w1l = 0.02521; - _g2b1_var._parameters.w2l = 0.002; - _g2b1_var._parameters.linwl = 1.4502500000000005; - _g2b1_var._parameters.loutwl = 11.14005; - _g2b1_var._parameters.w1r = 0.02521; - _g2b1_var._parameters.w2r = 0.002; - _g2b1_var._parameters.linwr = 1.4502500000000005; - _g2b1_var._parameters.loutwr = 11.14005; - _g2b1_var._parameters.h1u = 0.031505; - _g2b1_var._parameters.h2u = 0.002; - _g2b1_var._parameters.linhu = 8.45025; - _g2b1_var._parameters.louthu = 27.140050000000002; - _g2b1_var._parameters.h1d = 0.031505; - _g2b1_var._parameters.h2d = 0.002; - _g2b1_var._parameters.linhd = 8.45025; - _g2b1_var._parameters.louthd = 27.140050000000002; - _g2b1_var._parameters.l = 0.40969999999999906; - _g2b1_var._parameters.R0 = 0.99; - _g2b1_var._parameters.Qcxl = 0.0217; - _g2b1_var._parameters.Qcxr = 0.0217; - _g2b1_var._parameters.Qcyu = 0.023; - _g2b1_var._parameters.Qcyd = 0.023; - _g2b1_var._parameters.alphaxl = 2.5; - _g2b1_var._parameters.alphaxr = 2.5; - _g2b1_var._parameters.alphayu = 1.8; - _g2b1_var._parameters.alphayd = 1.8; - _g2b1_var._parameters.Wxr = 0.015; - _g2b1_var._parameters.Wxl = 0.015; - _g2b1_var._parameters.Wyu = 0.015; - _g2b1_var._parameters.Wyd = 0.015; - _g2b1_var._parameters.mxr = 4; - _g2b1_var._parameters.mxl = 4; - _g2b1_var._parameters.myu = 2; - _g2b1_var._parameters.myd = 2; - _g2b1_var._parameters.QcxrOW = 0.0217; - _g2b1_var._parameters.QcxlOW = 0.0217; - _g2b1_var._parameters.QcyuOW = 0.0217; - _g2b1_var._parameters.QcydOW = 0.0217; - _g2b1_var._parameters.alphaxlOW = 6.07; - _g2b1_var._parameters.alphaxrOW = 6.07; - _g2b1_var._parameters.alphayuOW = 6.07; - _g2b1_var._parameters.alphaydOW = 6.07; - _g2b1_var._parameters.WxrOW = 0.003; - _g2b1_var._parameters.WxlOW = 0.003; - _g2b1_var._parameters.WyuOW = 0.003; - _g2b1_var._parameters.WydOW = 0.003; - _g2b1_var._parameters.mxrOW = 0; - _g2b1_var._parameters.mxlOW = 0; - _g2b1_var._parameters.myuOW = 0; - _g2b1_var._parameters.mydOW = 0; - _g2b1_var._parameters.rwallthick = 0.001; - _g2b1_var._parameters.lwallthick = 0.001; - _g2b1_var._parameters.uwallthick = 0.001; - _g2b1_var._parameters.dwallthick = 0.001; - - - /* component g2b1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b1_var._rotation_absolute); - rot_transpose(_bp1_chopper_var._rotation_absolute, tr1); - rot_mul(_g2b1_var._rotation_absolute, tr1, _g2b1_var._rotation_relative); - _g2b1_var._rotation_is_identity = rot_test_identity(_g2b1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 8.446250000000001); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g2b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_bp1_chopper_var._position_absolute, _g2b1_var._position_absolute); - _g2b1_var._position_relative = rot_apply(_g2b1_var._rotation_absolute, tc1); - } /* g2b1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute); - instrument->_position_absolute[25] = _g2b1_var._position_absolute; - instrument->_position_relative[25] = _g2b1_var._position_relative; - _g2b1_var._position_relative_is_zero = coords_test_zero(_g2b1_var._position_relative); - instrument->counter_N[25] = instrument->counter_P[25] = instrument->counter_P2[25] = 0; - instrument->counter_AbsorbProp[25]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0024_g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "w1l", "0.002", "0.02521","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "linwl", "0", "1.4502500000000005","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "loutwl", "0", "11.14005","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "w1r", "0.002", "0.02521","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "linwr", "0.0", "1.4502500000000005","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "loutwr", "0", "11.14005","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "h1u", "0.002", "0.031505","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "linhu", "0.0", "8.45025","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "louthu", "0", "27.140050000000002","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "h1d", "0.002", "0.031505","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "linhd", "0.0", "8.45025","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "louthd", "0", "27.140050000000002","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "l", "0", "0.40969999999999906","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0024_g2b1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g2b1_setpos */ - -/* component g2b2=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g2b2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g2b2_setpos] component g2b2=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g2b2_var._name, "g2b2", 16384); - stracpy(_g2b2_var._type, "Guide_four_side", 16384); - _g2b2_var._index=26; - int current_setpos_index = 26; - _g2b2_var._parameters.RIreflect[0]='\0'; - _g2b2_var._parameters.LIreflect[0]='\0'; - _g2b2_var._parameters.UIreflect[0]='\0'; - _g2b2_var._parameters.DIreflect[0]='\0'; - _g2b2_var._parameters.ROreflect[0]='\0'; - _g2b2_var._parameters.LOreflect[0]='\0'; - _g2b2_var._parameters.UOreflect[0]='\0'; - _g2b2_var._parameters.DOreflect[0]='\0'; - _g2b2_var._parameters.w1l = 0.02811; - _g2b2_var._parameters.w2l = 0.002; - _g2b2_var._parameters.linwl = 1.8707999999999991; - _g2b2_var._parameters.loutwl = 9.67745; - _g2b2_var._parameters.w1r = 0.02811; - _g2b2_var._parameters.w2r = 0.002; - _g2b2_var._parameters.linwr = 1.8707999999999991; - _g2b2_var._parameters.loutwr = 9.67745; - _g2b2_var._parameters.h1u = 0.03203; - _g2b2_var._parameters.h2u = 0.002; - _g2b2_var._parameters.linhu = 8.8708; - _g2b2_var._parameters.louthu = 25.67745; - _g2b2_var._parameters.h1d = 0.03203; - _g2b2_var._parameters.h2d = 0.002; - _g2b2_var._parameters.linhd = 8.8708; - _g2b2_var._parameters.louthd = 25.67745; - _g2b2_var._parameters.l = 1.4517500000000005; - _g2b2_var._parameters.R0 = 0.99; - _g2b2_var._parameters.Qcxl = 0.0217; - _g2b2_var._parameters.Qcxr = 0.0217; - _g2b2_var._parameters.Qcyu = 0.023; - _g2b2_var._parameters.Qcyd = 0.023; - _g2b2_var._parameters.alphaxl = 2.5; - _g2b2_var._parameters.alphaxr = 2.5; - _g2b2_var._parameters.alphayu = 1.8; - _g2b2_var._parameters.alphayd = 1.8; - _g2b2_var._parameters.Wxr = 0.015; - _g2b2_var._parameters.Wxl = 0.015; - _g2b2_var._parameters.Wyu = 0.015; - _g2b2_var._parameters.Wyd = 0.015; - _g2b2_var._parameters.mxr = 4; - _g2b2_var._parameters.mxl = 4; - _g2b2_var._parameters.myu = 2; - _g2b2_var._parameters.myd = 2; - _g2b2_var._parameters.QcxrOW = 0.0217; - _g2b2_var._parameters.QcxlOW = 0.0217; - _g2b2_var._parameters.QcyuOW = 0.0217; - _g2b2_var._parameters.QcydOW = 0.0217; - _g2b2_var._parameters.alphaxlOW = 6.07; - _g2b2_var._parameters.alphaxrOW = 6.07; - _g2b2_var._parameters.alphayuOW = 6.07; - _g2b2_var._parameters.alphaydOW = 6.07; - _g2b2_var._parameters.WxrOW = 0.003; - _g2b2_var._parameters.WxlOW = 0.003; - _g2b2_var._parameters.WyuOW = 0.003; - _g2b2_var._parameters.WydOW = 0.003; - _g2b2_var._parameters.mxrOW = 0; - _g2b2_var._parameters.mxlOW = 0; - _g2b2_var._parameters.myuOW = 0; - _g2b2_var._parameters.mydOW = 0; - _g2b2_var._parameters.rwallthick = 0.001; - _g2b2_var._parameters.lwallthick = 0.001; - _g2b2_var._parameters.uwallthick = 0.001; - _g2b2_var._parameters.dwallthick = 0.001; - - - /* component g2b2=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b2_var._rotation_absolute); - rot_transpose(_g2b1_var._rotation_absolute, tr1); - rot_mul(_g2b2_var._rotation_absolute, tr1, _g2b2_var._rotation_relative); - _g2b2_var._rotation_is_identity = rot_test_identity(_g2b2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 8.8668); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g2b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g2b1_var._position_absolute, _g2b2_var._position_absolute); - _g2b2_var._position_relative = rot_apply(_g2b2_var._rotation_absolute, tc1); - } /* g2b2=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute); - instrument->_position_absolute[26] = _g2b2_var._position_absolute; - instrument->_position_relative[26] = _g2b2_var._position_relative; - _g2b2_var._position_relative_is_zero = coords_test_zero(_g2b2_var._position_relative); - instrument->counter_N[26] = instrument->counter_P[26] = instrument->counter_P2[26] = 0; - instrument->counter_AbsorbProp[26]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0025_g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "w1l", "0.002", "0.02811","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "linwl", "0", "1.8707999999999991","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "loutwl", "0", "9.67745","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "w1r", "0.002", "0.02811","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "linwr", "0.0", "1.8707999999999991","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "loutwr", "0", "9.67745","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "h1u", "0.002", "0.03203","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "linhu", "0.0", "8.8708","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "louthu", "0", "25.67745","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "h1d", "0.002", "0.03203","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "linhd", "0.0", "8.8708","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "louthd", "0", "25.67745","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "l", "0", "1.4517500000000005","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0025_g2b2", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g2b2_setpos */ - -/* component g2b3=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g2b3_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g2b3_setpos] component g2b3=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g2b3_var._name, "g2b3", 16384); - stracpy(_g2b3_var._type, "Guide_four_side", 16384); - _g2b3_var._index=27; - int current_setpos_index = 27; - _g2b3_var._parameters.RIreflect[0]='\0'; - _g2b3_var._parameters.LIreflect[0]='\0'; - _g2b3_var._parameters.UIreflect[0]='\0'; - _g2b3_var._parameters.DIreflect[0]='\0'; - _g2b3_var._parameters.ROreflect[0]='\0'; - _g2b3_var._parameters.LOreflect[0]='\0'; - _g2b3_var._parameters.UOreflect[0]='\0'; - _g2b3_var._parameters.DOreflect[0]='\0'; - _g2b3_var._parameters.w1l = 0.03493; - _g2b3_var._parameters.w2l = 0.002; - _g2b3_var._parameters.linwl = 3.3230500000000003; - _g2b3_var._parameters.loutwl = 8.2252; - _g2b3_var._parameters.w1r = 0.03493; - _g2b3_var._parameters.w2r = 0.002; - _g2b3_var._parameters.linwr = 3.3230500000000003; - _g2b3_var._parameters.loutwr = 8.2252; - _g2b3_var._parameters.h1u = 0.033615; - _g2b3_var._parameters.h2u = 0.002; - _g2b3_var._parameters.linhu = 10.32305; - _g2b3_var._parameters.louthu = 24.2252; - _g2b3_var._parameters.h1d = 0.033615; - _g2b3_var._parameters.h2d = 0.002; - _g2b3_var._parameters.linhd = 10.32305; - _g2b3_var._parameters.louthd = 24.2252; - _g2b3_var._parameters.l = 1.4517500000000005; - _g2b3_var._parameters.R0 = 0.99; - _g2b3_var._parameters.Qcxl = 0.0217; - _g2b3_var._parameters.Qcxr = 0.0217; - _g2b3_var._parameters.Qcyu = 0.023; - _g2b3_var._parameters.Qcyd = 0.023; - _g2b3_var._parameters.alphaxl = 2.5; - _g2b3_var._parameters.alphaxr = 2.5; - _g2b3_var._parameters.alphayu = 1.8; - _g2b3_var._parameters.alphayd = 1.8; - _g2b3_var._parameters.Wxr = 0.015; - _g2b3_var._parameters.Wxl = 0.015; - _g2b3_var._parameters.Wyu = 0.015; - _g2b3_var._parameters.Wyd = 0.015; - _g2b3_var._parameters.mxr = 4; - _g2b3_var._parameters.mxl = 4; - _g2b3_var._parameters.myu = 2; - _g2b3_var._parameters.myd = 2; - _g2b3_var._parameters.QcxrOW = 0.0217; - _g2b3_var._parameters.QcxlOW = 0.0217; - _g2b3_var._parameters.QcyuOW = 0.0217; - _g2b3_var._parameters.QcydOW = 0.0217; - _g2b3_var._parameters.alphaxlOW = 6.07; - _g2b3_var._parameters.alphaxrOW = 6.07; - _g2b3_var._parameters.alphayuOW = 6.07; - _g2b3_var._parameters.alphaydOW = 6.07; - _g2b3_var._parameters.WxrOW = 0.003; - _g2b3_var._parameters.WxlOW = 0.003; - _g2b3_var._parameters.WyuOW = 0.003; - _g2b3_var._parameters.WydOW = 0.003; - _g2b3_var._parameters.mxrOW = 0; - _g2b3_var._parameters.mxlOW = 0; - _g2b3_var._parameters.myuOW = 0; - _g2b3_var._parameters.mydOW = 0; - _g2b3_var._parameters.rwallthick = 0.001; - _g2b3_var._parameters.lwallthick = 0.001; - _g2b3_var._parameters.uwallthick = 0.001; - _g2b3_var._parameters.dwallthick = 0.001; - - - /* component g2b3=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b3_var._rotation_absolute); - rot_transpose(_g2b2_var._rotation_absolute, tr1); - rot_mul(_g2b3_var._rotation_absolute, tr1, _g2b3_var._rotation_relative); - _g2b3_var._rotation_is_identity = rot_test_identity(_g2b3_var._rotation_relative); - tc1 = coords_set( - 0, 0, 10.31905); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g2b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g2b2_var._position_absolute, _g2b3_var._position_absolute); - _g2b3_var._position_relative = rot_apply(_g2b3_var._rotation_absolute, tc1); - } /* g2b3=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute); - instrument->_position_absolute[27] = _g2b3_var._position_absolute; - instrument->_position_relative[27] = _g2b3_var._position_relative; - _g2b3_var._position_relative_is_zero = coords_test_zero(_g2b3_var._position_relative); - instrument->counter_N[27] = instrument->counter_P[27] = instrument->counter_P2[27] = 0; - instrument->counter_AbsorbProp[27]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0026_g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "w1l", "0.002", "0.03493","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "linwl", "0", "3.3230500000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "loutwl", "0", "8.2252","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "w1r", "0.002", "0.03493","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "linwr", "0.0", "3.3230500000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "loutwr", "0", "8.2252","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "h1u", "0.002", "0.033615","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "linhu", "0.0", "10.32305","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "louthu", "0", "24.2252","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "h1d", "0.002", "0.033615","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "linhd", "0.0", "10.32305","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "louthd", "0", "24.2252","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "l", "0", "1.4517500000000005","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0026_g2b3", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g2b3_setpos */ - -/* component g2b4=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g2b4_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g2b4_setpos] component g2b4=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g2b4_var._name, "g2b4", 16384); - stracpy(_g2b4_var._type, "Guide_four_side", 16384); - _g2b4_var._index=28; - int current_setpos_index = 28; - _g2b4_var._parameters.RIreflect[0]='\0'; - _g2b4_var._parameters.LIreflect[0]='\0'; - _g2b4_var._parameters.UIreflect[0]='\0'; - _g2b4_var._parameters.DIreflect[0]='\0'; - _g2b4_var._parameters.ROreflect[0]='\0'; - _g2b4_var._parameters.LOreflect[0]='\0'; - _g2b4_var._parameters.UOreflect[0]='\0'; - _g2b4_var._parameters.DOreflect[0]='\0'; - _g2b4_var._parameters.w1l = 0.03862; - _g2b4_var._parameters.w2l = 0.002; - _g2b4_var._parameters.linwl = 4.7858; - _g2b4_var._parameters.loutwl = 7.804500000000001; - _g2b4_var._parameters.w1r = 0.03862; - _g2b4_var._parameters.w2r = 0.002; - _g2b4_var._parameters.linwr = 4.7858; - _g2b4_var._parameters.loutwr = 7.804500000000001; - _g2b4_var._parameters.h1u = 0.03488; - _g2b4_var._parameters.h2u = 0.002; - _g2b4_var._parameters.linhu = 11.7858; - _g2b4_var._parameters.louthu = 23.8045; - _g2b4_var._parameters.h1d = 0.03488; - _g2b4_var._parameters.h2d = 0.002; - _g2b4_var._parameters.linhd = 11.7858; - _g2b4_var._parameters.louthd = 23.8045; - _g2b4_var._parameters.l = 0.40969999999999906; - _g2b4_var._parameters.R0 = 0.99; - _g2b4_var._parameters.Qcxl = 0.0217; - _g2b4_var._parameters.Qcxr = 0.0217; - _g2b4_var._parameters.Qcyu = 0.023; - _g2b4_var._parameters.Qcyd = 0.023; - _g2b4_var._parameters.alphaxl = 2.5; - _g2b4_var._parameters.alphaxr = 2.5; - _g2b4_var._parameters.alphayu = 1.8; - _g2b4_var._parameters.alphayd = 1.8; - _g2b4_var._parameters.Wxr = 0.015; - _g2b4_var._parameters.Wxl = 0.015; - _g2b4_var._parameters.Wyu = 0.015; - _g2b4_var._parameters.Wyd = 0.015; - _g2b4_var._parameters.mxr = 4; - _g2b4_var._parameters.mxl = 4; - _g2b4_var._parameters.myu = 2; - _g2b4_var._parameters.myd = 2; - _g2b4_var._parameters.QcxrOW = 0.0217; - _g2b4_var._parameters.QcxlOW = 0.0217; - _g2b4_var._parameters.QcyuOW = 0.0217; - _g2b4_var._parameters.QcydOW = 0.0217; - _g2b4_var._parameters.alphaxlOW = 6.07; - _g2b4_var._parameters.alphaxrOW = 6.07; - _g2b4_var._parameters.alphayuOW = 6.07; - _g2b4_var._parameters.alphaydOW = 6.07; - _g2b4_var._parameters.WxrOW = 0.003; - _g2b4_var._parameters.WxlOW = 0.003; - _g2b4_var._parameters.WyuOW = 0.003; - _g2b4_var._parameters.WydOW = 0.003; - _g2b4_var._parameters.mxrOW = 0; - _g2b4_var._parameters.mxlOW = 0; - _g2b4_var._parameters.myuOW = 0; - _g2b4_var._parameters.mydOW = 0; - _g2b4_var._parameters.rwallthick = 0.001; - _g2b4_var._parameters.lwallthick = 0.001; - _g2b4_var._parameters.uwallthick = 0.001; - _g2b4_var._parameters.dwallthick = 0.001; - - - /* component g2b4=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b4_var._rotation_absolute); - rot_transpose(_g2b3_var._rotation_absolute, tr1); - rot_mul(_g2b4_var._rotation_absolute, tr1, _g2b4_var._rotation_relative); - _g2b4_var._rotation_is_identity = rot_test_identity(_g2b4_var._rotation_relative); - tc1 = coords_set( - 0, 0, 11.7818); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g2b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g2b3_var._position_absolute, _g2b4_var._position_absolute); - _g2b4_var._position_relative = rot_apply(_g2b4_var._rotation_absolute, tc1); - } /* g2b4=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute); - instrument->_position_absolute[28] = _g2b4_var._position_absolute; - instrument->_position_relative[28] = _g2b4_var._position_relative; - _g2b4_var._position_relative_is_zero = coords_test_zero(_g2b4_var._position_relative); - instrument->counter_N[28] = instrument->counter_P[28] = instrument->counter_P2[28] = 0; - instrument->counter_AbsorbProp[28]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0027_g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "w1l", "0.002", "0.03862","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "linwl", "0", "4.7858","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "loutwl", "0", "7.804500000000001","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "w1r", "0.002", "0.03862","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "linwr", "0.0", "4.7858","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "loutwr", "0", "7.804500000000001","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "h1u", "0.002", "0.03488","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "linhu", "0.0", "11.7858","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "louthu", "0", "23.8045","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "h1d", "0.002", "0.03488","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "linhd", "0.0", "11.7858","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "louthd", "0", "23.8045","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "l", "0", "0.40969999999999906","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0027_g2b4", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g2b4_setpos */ - -/* component fo2_position=Arm() SETTING, POSITION/ROTATION */ -int _fo2_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo2_position_setpos] component fo2_position=Arm() SETTING [Arm:0]"); - stracpy(_fo2_position_var._name, "fo2_position", 16384); - stracpy(_fo2_position_var._type, "Arm", 16384); - _fo2_position_var._index=29; - int current_setpos_index = 29; - /* component fo2_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo2_position_var._rotation_absolute); - rot_transpose(_g2b4_var._rotation_absolute, tr1); - rot_mul(_fo2_position_var._rotation_absolute, tr1, _fo2_position_var._rotation_relative); - _fo2_position_var._rotation_is_identity = rot_test_identity(_fo2_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 12.2); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g2b4_var._position_absolute, _fo2_position_var._position_absolute); - _fo2_position_var._position_relative = rot_apply(_fo2_position_var._rotation_absolute, tc1); - } /* fo2_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute); - instrument->_position_absolute[29] = _fo2_position_var._position_absolute; - instrument->_position_relative[29] = _fo2_position_var._position_relative; - _fo2_position_var._position_relative_is_zero = coords_test_zero(_fo2_position_var._position_relative); - instrument->counter_N[29] = instrument->counter_P[29] = instrument->counter_P2[29] = 0; - instrument->counter_AbsorbProp[29]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0028_fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo2_position_setpos */ - -/* component fo_chopper_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ -int _fo_chopper_2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo_chopper_2_setpos] component fo_chopper_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); - stracpy(_fo_chopper_2_var._name, "fo_chopper_2", 16384); - stracpy(_fo_chopper_2_var._type, "MultiDiskChopper", 16384); - _fo_chopper_2_var._index=30; - int current_setpos_index = 30; - if("-127.07;165.08;101.46;41.97;-13.98;-67.15" && strlen("-127.07;165.08;101.46;41.97;-13.98;-67.15")) - stracpy(_fo_chopper_2_var._parameters.slit_center, "-127.07;165.08;101.46;41.97;-13.98;-67.15" ? "-127.07;165.08;101.46;41.97;-13.98;-67.15" : "", 16384); - else - _fo_chopper_2_var._parameters.slit_center[0]='\0'; - if("32.9;33.54;34.15;34.37;34.89;34.31" && strlen("32.9;33.54;34.15;34.37;34.89;34.31")) - stracpy(_fo_chopper_2_var._parameters.slit_width, "32.9;33.54;34.15;34.37;34.89;34.31" ? "32.9;33.54;34.15;34.37;34.89;34.31" : "", 16384); - else - _fo_chopper_2_var._parameters.slit_width[0]='\0'; - _fo_chopper_2_var._parameters.nslits = 6; - _fo_chopper_2_var._parameters.delta_y = -0.46; - _fo_chopper_2_var._parameters.nu = -42.0; - _fo_chopper_2_var._parameters.nrev = 0; - _fo_chopper_2_var._parameters.ratio = 1; - _fo_chopper_2_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_2; - _fo_chopper_2_var._parameters.delay = 0; - _fo_chopper_2_var._parameters.isfirst = 0; - _fo_chopper_2_var._parameters.phase = fo2_phase; - _fo_chopper_2_var._parameters.radius = 0.5; - _fo_chopper_2_var._parameters.equal = 0; - _fo_chopper_2_var._parameters.abs_out = 0; - _fo_chopper_2_var._parameters.verbose = 0; - - - /* component fo_chopper_2=MultiDiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _fo2_position_var._rotation_absolute, _fo_chopper_2_var._rotation_absolute); - rot_transpose(_g2b4_var._rotation_absolute, tr1); - rot_mul(_fo_chopper_2_var._rotation_absolute, tr1, _fo_chopper_2_var._rotation_relative); - _fo_chopper_2_var._rotation_is_identity = rot_test_identity(_fo_chopper_2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_fo2_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo_chopper_2_var._position_absolute = coords_add(_fo2_position_var._position_absolute, tc2); - tc1 = coords_sub(_g2b4_var._position_absolute, _fo_chopper_2_var._position_absolute); - _fo_chopper_2_var._position_relative = rot_apply(_fo_chopper_2_var._rotation_absolute, tc1); - } /* fo_chopper_2=MultiDiskChopper() AT ROTATED */ - DEBUG_COMPONENT("fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute); - instrument->_position_absolute[30] = _fo_chopper_2_var._position_absolute; - instrument->_position_relative[30] = _fo_chopper_2_var._position_relative; - _fo_chopper_2_var._position_relative_is_zero = coords_test_zero(_fo_chopper_2_var._position_relative); - instrument->counter_N[30] = instrument->counter_P[30] = instrument->counter_P2[30] = 0; - instrument->counter_AbsorbProp[30]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0029_fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute, "MultiDiskChopper"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "slit_center", "0 180", "-127.07;165.08;101.46;41.97;-13.98;-67.15", "char*"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "slit_width", "10 20", "32.9;33.54;34.15;34.37;34.89;34.31", "char*"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nslits", "2", "6","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "delta_y", "-0.3", "-0.46","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nu", "0", "-42.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "nrev", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "ratio", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_2","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "phase", "0", "fo2_phase","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "radius", "0.375", "0.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "equal", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "abs_out", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0029_fo_chopper_2", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo_chopper_2_setpos */ - -/* component bp2_position=Arm() SETTING, POSITION/ROTATION */ -int _bp2_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_bp2_position_setpos] component bp2_position=Arm() SETTING [Arm:0]"); - stracpy(_bp2_position_var._name, "bp2_position", 16384); - stracpy(_bp2_position_var._type, "Arm", 16384); - _bp2_position_var._index=31; - int current_setpos_index = 31; - /* component bp2_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp2_position_var._rotation_absolute); - rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); - rot_mul(_bp2_position_var._rotation_absolute, tr1, _bp2_position_var._rotation_relative); - _bp2_position_var._rotation_is_identity = rot_test_identity(_bp2_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 12.25); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _bp2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp2_position_var._position_absolute); - _bp2_position_var._position_relative = rot_apply(_bp2_position_var._rotation_absolute, tc1); - } /* bp2_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute); - instrument->_position_absolute[31] = _bp2_position_var._position_absolute; - instrument->_position_relative[31] = _bp2_position_var._position_relative; - _bp2_position_var._position_relative_is_zero = coords_test_zero(_bp2_position_var._position_relative); - instrument->counter_N[31] = instrument->counter_P[31] = instrument->counter_P2[31] = 0; - instrument->counter_AbsorbProp[31]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0030_bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _bp2_position_setpos */ - -/* component bp_chopper2=DiskChopper() SETTING, POSITION/ROTATION */ -int _bp_chopper2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_bp_chopper2_setpos] component bp_chopper2=DiskChopper() SETTING [DiskChopper:0]"); - stracpy(_bp_chopper2_var._name, "bp_chopper2", 16384); - stracpy(_bp_chopper2_var._type, "DiskChopper", 16384); - _bp_chopper2_var._index=32; - int current_setpos_index = 32; - _bp_chopper2_var._parameters.theta_0 = 67.49; - _bp_chopper2_var._parameters.radius = 0.5; - _bp_chopper2_var._parameters.yheight = 0.08; - _bp_chopper2_var._parameters.nu = _instrument_var._parameters.bp_frequency; - _bp_chopper2_var._parameters.nslit = 1; - _bp_chopper2_var._parameters.jitter = _instrument_var._parameters.jitter_bp2; - _bp_chopper2_var._parameters.delay = 0; - _bp_chopper2_var._parameters.isfirst = 0; - _bp_chopper2_var._parameters.n_pulse = 1; - _bp_chopper2_var._parameters.abs_out = 1; - _bp_chopper2_var._parameters.phase = bp2_phase -141.795; - _bp_chopper2_var._parameters.xwidth = 0; - _bp_chopper2_var._parameters.verbose = 0; - - - /* component bp_chopper2=DiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _bp2_position_var._rotation_absolute, _bp_chopper2_var._rotation_absolute); - rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); - rot_mul(_bp_chopper2_var._rotation_absolute, tr1, _bp_chopper2_var._rotation_relative); - _bp_chopper2_var._rotation_is_identity = rot_test_identity(_bp_chopper2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_bp2_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _bp_chopper2_var._position_absolute = coords_add(_bp2_position_var._position_absolute, tc2); - tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp_chopper2_var._position_absolute); - _bp_chopper2_var._position_relative = rot_apply(_bp_chopper2_var._rotation_absolute, tc1); - } /* bp_chopper2=DiskChopper() AT ROTATED */ - DEBUG_COMPONENT("bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute); - instrument->_position_absolute[32] = _bp_chopper2_var._position_absolute; - instrument->_position_relative[32] = _bp_chopper2_var._position_relative; - _bp_chopper2_var._position_relative_is_zero = coords_test_zero(_bp_chopper2_var._position_relative); - instrument->counter_N[32] = instrument->counter_P[32] = instrument->counter_P2[32] = 0; - instrument->counter_AbsorbProp[32]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0031_bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute, "DiskChopper"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "theta_0", "0", "67.49","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "radius", "0.5", "0.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "yheight", "NONE", "0.08","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "nslit", "3", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "jitter", "0", "_instrument_var._parameters.jitter_bp2","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "n_pulse", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "abs_out", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "phase", "0", "bp2_phase -141.795","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "xwidth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0031_bp_chopper2", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _bp_chopper2_setpos */ - -/* component g2c1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g2c1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g2c1_setpos] component g2c1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g2c1_var._name, "g2c1", 16384); - stracpy(_g2c1_var._type, "Guide_four_side", 16384); - _g2c1_var._index=33; - int current_setpos_index = 33; - _g2c1_var._parameters.RIreflect[0]='\0'; - _g2c1_var._parameters.LIreflect[0]='\0'; - _g2c1_var._parameters.UIreflect[0]='\0'; - _g2c1_var._parameters.DIreflect[0]='\0'; - _g2c1_var._parameters.ROreflect[0]='\0'; - _g2c1_var._parameters.LOreflect[0]='\0'; - _g2c1_var._parameters.UOreflect[0]='\0'; - _g2c1_var._parameters.DOreflect[0]='\0'; - _g2c1_var._parameters.w1l = 0.03929; - _g2c1_var._parameters.w2l = 0.002; - _g2c1_var._parameters.linwl = 5.250249999999999; - _g2c1_var._parameters.loutwl = 6.536899999999999; - _g2c1_var._parameters.w1r = 0.03929; - _g2c1_var._parameters.w2r = 0.002; - _g2c1_var._parameters.linwr = 5.250249999999999; - _g2c1_var._parameters.loutwr = 6.536899999999999; - _g2c1_var._parameters.h1u = 0.03488; - _g2c1_var._parameters.h2u = 0.002; - _g2c1_var._parameters.linhu = 12.25025; - _g2c1_var._parameters.louthu = 22.5369; - _g2c1_var._parameters.h1d = 0.03488; - _g2c1_var._parameters.h2d = 0.002; - _g2c1_var._parameters.linhd = 12.25025; - _g2c1_var._parameters.louthd = 22.5369; - _g2c1_var._parameters.l = 1.2128500000000013; - _g2c1_var._parameters.R0 = 0.99; - _g2c1_var._parameters.Qcxl = 0.0217; - _g2c1_var._parameters.Qcxr = 0.0217; - _g2c1_var._parameters.Qcyu = 0.023; - _g2c1_var._parameters.Qcyd = 0.023; - _g2c1_var._parameters.alphaxl = 2.5; - _g2c1_var._parameters.alphaxr = 2.5; - _g2c1_var._parameters.alphayu = 1.8; - _g2c1_var._parameters.alphayd = 1.8; - _g2c1_var._parameters.Wxr = 0.015; - _g2c1_var._parameters.Wxl = 0.015; - _g2c1_var._parameters.Wyu = 0.015; - _g2c1_var._parameters.Wyd = 0.015; - _g2c1_var._parameters.mxr = 3.5; - _g2c1_var._parameters.mxl = 3.5; - _g2c1_var._parameters.myu = 2; - _g2c1_var._parameters.myd = 2; - _g2c1_var._parameters.QcxrOW = 0.0217; - _g2c1_var._parameters.QcxlOW = 0.0217; - _g2c1_var._parameters.QcyuOW = 0.0217; - _g2c1_var._parameters.QcydOW = 0.0217; - _g2c1_var._parameters.alphaxlOW = 6.07; - _g2c1_var._parameters.alphaxrOW = 6.07; - _g2c1_var._parameters.alphayuOW = 6.07; - _g2c1_var._parameters.alphaydOW = 6.07; - _g2c1_var._parameters.WxrOW = 0.003; - _g2c1_var._parameters.WxlOW = 0.003; - _g2c1_var._parameters.WyuOW = 0.003; - _g2c1_var._parameters.WydOW = 0.003; - _g2c1_var._parameters.mxrOW = 0; - _g2c1_var._parameters.mxlOW = 0; - _g2c1_var._parameters.myuOW = 0; - _g2c1_var._parameters.mydOW = 0; - _g2c1_var._parameters.rwallthick = 0.001; - _g2c1_var._parameters.lwallthick = 0.001; - _g2c1_var._parameters.uwallthick = 0.001; - _g2c1_var._parameters.dwallthick = 0.001; - - - /* component g2c1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2c1_var._rotation_absolute); - rot_transpose(_bp_chopper2_var._rotation_absolute, tr1); - rot_mul(_g2c1_var._rotation_absolute, tr1, _g2c1_var._rotation_relative); - _g2c1_var._rotation_is_identity = rot_test_identity(_g2c1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 12.254249999999999); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g2c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_bp_chopper2_var._position_absolute, _g2c1_var._position_absolute); - _g2c1_var._position_relative = rot_apply(_g2c1_var._rotation_absolute, tc1); - } /* g2c1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute); - instrument->_position_absolute[33] = _g2c1_var._position_absolute; - instrument->_position_relative[33] = _g2c1_var._position_relative; - _g2c1_var._position_relative_is_zero = coords_test_zero(_g2c1_var._position_relative); - instrument->counter_N[33] = instrument->counter_P[33] = instrument->counter_P2[33] = 0; - instrument->counter_AbsorbProp[33]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0032_g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "w1l", "0.002", "0.03929","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "linwl", "0", "5.250249999999999","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "loutwl", "0", "6.536899999999999","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "w1r", "0.002", "0.03929","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "linwr", "0.0", "5.250249999999999","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "loutwr", "0", "6.536899999999999","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "h1u", "0.002", "0.03488","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "linhu", "0.0", "12.25025","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "louthu", "0", "22.5369","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "h1d", "0.002", "0.03488","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "linhd", "0.0", "12.25025","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "louthd", "0", "22.5369","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "l", "0", "1.2128500000000013","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "mxr", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "mxl", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0032_g2c1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g2c1_setpos */ - -/* component t0_start_position=Arm() SETTING, POSITION/ROTATION */ -int _t0_start_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_t0_start_position_setpos] component t0_start_position=Arm() SETTING [Arm:0]"); - stracpy(_t0_start_position_var._name, "t0_start_position", 16384); - stracpy(_t0_start_position_var._type, "Arm", 16384); - _t0_start_position_var._index=34; - int current_setpos_index = 34; - /* component t0_start_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_start_position_var._rotation_absolute); - rot_transpose(_g2c1_var._rotation_absolute, tr1); - rot_mul(_t0_start_position_var._rotation_absolute, tr1, _t0_start_position_var._rotation_relative); - _t0_start_position_var._rotation_is_identity = rot_test_identity(_t0_start_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 13.503); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _t0_start_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g2c1_var._position_absolute, _t0_start_position_var._position_absolute); - _t0_start_position_var._position_relative = rot_apply(_t0_start_position_var._rotation_absolute, tc1); - } /* t0_start_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute); - instrument->_position_absolute[34] = _t0_start_position_var._position_absolute; - instrument->_position_relative[34] = _t0_start_position_var._position_relative; - _t0_start_position_var._position_relative_is_zero = coords_test_zero(_t0_start_position_var._position_relative); - instrument->counter_N[34] = instrument->counter_P[34] = instrument->counter_P2[34] = 0; - instrument->counter_AbsorbProp[34]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0033_t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _t0_start_position_setpos */ - -/* component t0_chopper_alpha=DiskChopper() SETTING, POSITION/ROTATION */ -int _t0_chopper_alpha_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_t0_chopper_alpha_setpos] component t0_chopper_alpha=DiskChopper() SETTING [DiskChopper:0]"); - stracpy(_t0_chopper_alpha_var._name, "t0_chopper_alpha", 16384); - stracpy(_t0_chopper_alpha_var._type, "DiskChopper", 16384); - _t0_chopper_alpha_var._index=35; - int current_setpos_index = 35; - _t0_chopper_alpha_var._parameters.theta_0 = 294.74; - _t0_chopper_alpha_var._parameters.radius = 0.32; - _t0_chopper_alpha_var._parameters.yheight = 0.075; - _t0_chopper_alpha_var._parameters.nu = 28.0; - _t0_chopper_alpha_var._parameters.nslit = 1; - _t0_chopper_alpha_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; - _t0_chopper_alpha_var._parameters.delay = 0; - _t0_chopper_alpha_var._parameters.isfirst = 0; - _t0_chopper_alpha_var._parameters.n_pulse = 1; - _t0_chopper_alpha_var._parameters.abs_out = 1; - _t0_chopper_alpha_var._parameters.phase = t0_phase + 179.34; - _t0_chopper_alpha_var._parameters.xwidth = 0; - _t0_chopper_alpha_var._parameters.verbose = 0; - - - /* component t0_chopper_alpha=DiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _t0_start_position_var._rotation_absolute, _t0_chopper_alpha_var._rotation_absolute); - rot_transpose(_g2c1_var._rotation_absolute, tr1); - rot_mul(_t0_chopper_alpha_var._rotation_absolute, tr1, _t0_chopper_alpha_var._rotation_relative); - _t0_chopper_alpha_var._rotation_is_identity = rot_test_identity(_t0_chopper_alpha_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_t0_start_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _t0_chopper_alpha_var._position_absolute = coords_add(_t0_start_position_var._position_absolute, tc2); - tc1 = coords_sub(_g2c1_var._position_absolute, _t0_chopper_alpha_var._position_absolute); - _t0_chopper_alpha_var._position_relative = rot_apply(_t0_chopper_alpha_var._rotation_absolute, tc1); - } /* t0_chopper_alpha=DiskChopper() AT ROTATED */ - DEBUG_COMPONENT("t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute); - instrument->_position_absolute[35] = _t0_chopper_alpha_var._position_absolute; - instrument->_position_relative[35] = _t0_chopper_alpha_var._position_relative; - _t0_chopper_alpha_var._position_relative_is_zero = coords_test_zero(_t0_chopper_alpha_var._position_relative); - instrument->counter_N[35] = instrument->counter_P[35] = instrument->counter_P2[35] = 0; - instrument->counter_AbsorbProp[35]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0034_t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute, "DiskChopper"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "theta_0", "0", "294.74","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "radius", "0.5", "0.32","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "yheight", "NONE", "0.075","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "nu", "NONE", "28.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "nslit", "3", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "n_pulse", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "abs_out", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "phase", "0", "t0_phase + 179.34","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "xwidth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0034_t0_chopper_alpha", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _t0_chopper_alpha_setpos */ - -/* component t0_end_position=Arm() SETTING, POSITION/ROTATION */ -int _t0_end_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_t0_end_position_setpos] component t0_end_position=Arm() SETTING [Arm:0]"); - stracpy(_t0_end_position_var._name, "t0_end_position", 16384); - stracpy(_t0_end_position_var._type, "Arm", 16384); - _t0_end_position_var._index=36; - int current_setpos_index = 36; - /* component t0_end_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_end_position_var._rotation_absolute); - rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); - rot_mul(_t0_end_position_var._rotation_absolute, tr1, _t0_end_position_var._rotation_relative); - _t0_end_position_var._rotation_is_identity = rot_test_identity(_t0_end_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 13.703); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _t0_end_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_end_position_var._position_absolute); - _t0_end_position_var._position_relative = rot_apply(_t0_end_position_var._rotation_absolute, tc1); - } /* t0_end_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute); - instrument->_position_absolute[36] = _t0_end_position_var._position_absolute; - instrument->_position_relative[36] = _t0_end_position_var._position_relative; - _t0_end_position_var._position_relative_is_zero = coords_test_zero(_t0_end_position_var._position_relative); - instrument->counter_N[36] = instrument->counter_P[36] = instrument->counter_P2[36] = 0; - instrument->counter_AbsorbProp[36]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0035_t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _t0_end_position_setpos */ - -/* component t0_chopper_beta=DiskChopper() SETTING, POSITION/ROTATION */ -int _t0_chopper_beta_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_t0_chopper_beta_setpos] component t0_chopper_beta=DiskChopper() SETTING [DiskChopper:0]"); - stracpy(_t0_chopper_beta_var._name, "t0_chopper_beta", 16384); - stracpy(_t0_chopper_beta_var._type, "DiskChopper", 16384); - _t0_chopper_beta_var._index=37; - int current_setpos_index = 37; - _t0_chopper_beta_var._parameters.theta_0 = 294.74; - _t0_chopper_beta_var._parameters.radius = 0.32; - _t0_chopper_beta_var._parameters.yheight = 0.075; - _t0_chopper_beta_var._parameters.nu = 28.0; - _t0_chopper_beta_var._parameters.nslit = 1; - _t0_chopper_beta_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; - _t0_chopper_beta_var._parameters.delay = 0; - _t0_chopper_beta_var._parameters.isfirst = 0; - _t0_chopper_beta_var._parameters.n_pulse = 1; - _t0_chopper_beta_var._parameters.abs_out = 1; - _t0_chopper_beta_var._parameters.phase = t0_phase + 179.34; - _t0_chopper_beta_var._parameters.xwidth = 0; - _t0_chopper_beta_var._parameters.verbose = 0; - - - /* component t0_chopper_beta=DiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _t0_end_position_var._rotation_absolute, _t0_chopper_beta_var._rotation_absolute); - rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); - rot_mul(_t0_chopper_beta_var._rotation_absolute, tr1, _t0_chopper_beta_var._rotation_relative); - _t0_chopper_beta_var._rotation_is_identity = rot_test_identity(_t0_chopper_beta_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_t0_end_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _t0_chopper_beta_var._position_absolute = coords_add(_t0_end_position_var._position_absolute, tc2); - tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_chopper_beta_var._position_absolute); - _t0_chopper_beta_var._position_relative = rot_apply(_t0_chopper_beta_var._rotation_absolute, tc1); - } /* t0_chopper_beta=DiskChopper() AT ROTATED */ - DEBUG_COMPONENT("t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute); - instrument->_position_absolute[37] = _t0_chopper_beta_var._position_absolute; - instrument->_position_relative[37] = _t0_chopper_beta_var._position_relative; - _t0_chopper_beta_var._position_relative_is_zero = coords_test_zero(_t0_chopper_beta_var._position_relative); - instrument->counter_N[37] = instrument->counter_P[37] = instrument->counter_P2[37] = 0; - instrument->counter_AbsorbProp[37]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0036_t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute, "DiskChopper"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "theta_0", "0", "294.74","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "radius", "0.5", "0.32","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "yheight", "NONE", "0.075","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "nu", "NONE", "28.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "nslit", "3", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "n_pulse", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "abs_out", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "phase", "0", "t0_phase + 179.34","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "xwidth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0036_t0_chopper_beta", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _t0_chopper_beta_setpos */ - -/* component g3a1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g3a1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g3a1_setpos] component g3a1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g3a1_var._name, "g3a1", 16384); - stracpy(_g3a1_var._type, "Guide_four_side", 16384); - _g3a1_var._index=38; - int current_setpos_index = 38; - _g3a1_var._parameters.RIreflect[0]='\0'; - _g3a1_var._parameters.LIreflect[0]='\0'; - _g3a1_var._parameters.UIreflect[0]='\0'; - _g3a1_var._parameters.DIreflect[0]='\0'; - _g3a1_var._parameters.ROreflect[0]='\0'; - _g3a1_var._parameters.LOreflect[0]='\0'; - _g3a1_var._parameters.UOreflect[0]='\0'; - _g3a1_var._parameters.DOreflect[0]='\0'; - _g3a1_var._parameters.w1l = 0.04004; - _g3a1_var._parameters.w2l = 0.04004; - _g3a1_var._parameters.linwl = 0; - _g3a1_var._parameters.loutwl = 0; - _g3a1_var._parameters.w1r = 0.04004; - _g3a1_var._parameters.w2r = 0.04004; - _g3a1_var._parameters.linwr = 0.0; - _g3a1_var._parameters.loutwr = 0; - _g3a1_var._parameters.h1u = 0.03611; - _g3a1_var._parameters.h2u = 0.002; - _g3a1_var._parameters.linhu = 13.7559; - _g3a1_var._parameters.louthu = 20.2631; - _g3a1_var._parameters.h1d = 0.03611; - _g3a1_var._parameters.h2d = 0.002; - _g3a1_var._parameters.linhd = 13.7559; - _g3a1_var._parameters.louthd = 20.2631; - _g3a1_var._parameters.l = 1.981; - _g3a1_var._parameters.R0 = 0.99; - _g3a1_var._parameters.Qcxl = 0.0217; - _g3a1_var._parameters.Qcxr = 0.0217; - _g3a1_var._parameters.Qcyu = 0.023; - _g3a1_var._parameters.Qcyd = 0.023; - _g3a1_var._parameters.alphaxl = 2.5; - _g3a1_var._parameters.alphaxr = 2.5; - _g3a1_var._parameters.alphayu = 1.8; - _g3a1_var._parameters.alphayd = 1.8; - _g3a1_var._parameters.Wxr = 0.015; - _g3a1_var._parameters.Wxl = 0.015; - _g3a1_var._parameters.Wyu = 0.015; - _g3a1_var._parameters.Wyd = 0.015; - _g3a1_var._parameters.mxr = 3.5; - _g3a1_var._parameters.mxl = 3.5; - _g3a1_var._parameters.myu = 2; - _g3a1_var._parameters.myd = 2; - _g3a1_var._parameters.QcxrOW = 0.0217; - _g3a1_var._parameters.QcxlOW = 0.0217; - _g3a1_var._parameters.QcyuOW = 0.0217; - _g3a1_var._parameters.QcydOW = 0.0217; - _g3a1_var._parameters.alphaxlOW = 6.07; - _g3a1_var._parameters.alphaxrOW = 6.07; - _g3a1_var._parameters.alphayuOW = 6.07; - _g3a1_var._parameters.alphaydOW = 6.07; - _g3a1_var._parameters.WxrOW = 0.003; - _g3a1_var._parameters.WxlOW = 0.003; - _g3a1_var._parameters.WyuOW = 0.003; - _g3a1_var._parameters.WydOW = 0.003; - _g3a1_var._parameters.mxrOW = 0; - _g3a1_var._parameters.mxlOW = 0; - _g3a1_var._parameters.myuOW = 0; - _g3a1_var._parameters.mydOW = 0; - _g3a1_var._parameters.rwallthick = 0.001; - _g3a1_var._parameters.lwallthick = 0.001; - _g3a1_var._parameters.uwallthick = 0.001; - _g3a1_var._parameters.dwallthick = 0.001; - - - /* component g3a1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a1_var._rotation_absolute); - rot_transpose(_t0_chopper_beta_var._rotation_absolute, tr1); - rot_mul(_g3a1_var._rotation_absolute, tr1, _g3a1_var._rotation_relative); - _g3a1_var._rotation_is_identity = rot_test_identity(_g3a1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 13.7379); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g3a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_t0_chopper_beta_var._position_absolute, _g3a1_var._position_absolute); - _g3a1_var._position_relative = rot_apply(_g3a1_var._rotation_absolute, tc1); - } /* g3a1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute); - instrument->_position_absolute[38] = _g3a1_var._position_absolute; - instrument->_position_relative[38] = _g3a1_var._position_relative; - _g3a1_var._position_relative_is_zero = coords_test_zero(_g3a1_var._position_relative); - instrument->counter_N[38] = instrument->counter_P[38] = instrument->counter_P2[38] = 0; - instrument->counter_AbsorbProp[38]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0037_g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "h1u", "0.002", "0.03611","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "linhu", "0.0", "13.7559","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "louthu", "0", "20.2631","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "h1d", "0.002", "0.03611","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "linhd", "0.0", "13.7559","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "louthd", "0", "20.2631","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "l", "0", "1.981","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "mxr", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "mxl", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0037_g3a1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g3a1_setpos */ - -/* component g3a2=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g3a2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g3a2_setpos] component g3a2=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g3a2_var._name, "g3a2", 16384); - stracpy(_g3a2_var._type, "Guide_four_side", 16384); - _g3a2_var._index=39; - int current_setpos_index = 39; - _g3a2_var._parameters.RIreflect[0]='\0'; - _g3a2_var._parameters.LIreflect[0]='\0'; - _g3a2_var._parameters.UIreflect[0]='\0'; - _g3a2_var._parameters.DIreflect[0]='\0'; - _g3a2_var._parameters.ROreflect[0]='\0'; - _g3a2_var._parameters.LOreflect[0]='\0'; - _g3a2_var._parameters.UOreflect[0]='\0'; - _g3a2_var._parameters.DOreflect[0]='\0'; - _g3a2_var._parameters.w1l = 0.04004; - _g3a2_var._parameters.w2l = 0.04004; - _g3a2_var._parameters.linwl = 0; - _g3a2_var._parameters.loutwl = 0; - _g3a2_var._parameters.w1r = 0.04004; - _g3a2_var._parameters.w2r = 0.04004; - _g3a2_var._parameters.linwr = 0.0; - _g3a2_var._parameters.loutwr = 0; - _g3a2_var._parameters.h1u = 0.03687; - _g3a2_var._parameters.h2u = 0.002; - _g3a2_var._parameters.linhu = 15.7409; - _g3a2_var._parameters.louthu = 19.0055; - _g3a2_var._parameters.h1d = 0.03687; - _g3a2_var._parameters.h2d = 0.002; - _g3a2_var._parameters.linhd = 15.7409; - _g3a2_var._parameters.louthd = 19.0055; - _g3a2_var._parameters.l = 1.2535999999999987; - _g3a2_var._parameters.R0 = 0.99; - _g3a2_var._parameters.Qcxl = 0.0221; - _g3a2_var._parameters.Qcxr = 0.0221; - _g3a2_var._parameters.Qcyu = 0.023; - _g3a2_var._parameters.Qcyd = 0.023; - _g3a2_var._parameters.alphaxl = 1.75; - _g3a2_var._parameters.alphaxr = 1.75; - _g3a2_var._parameters.alphayu = 1.8; - _g3a2_var._parameters.alphayd = 1.8; - _g3a2_var._parameters.Wxr = 0.015; - _g3a2_var._parameters.Wxl = 0.015; - _g3a2_var._parameters.Wyu = 0.015; - _g3a2_var._parameters.Wyd = 0.015; - _g3a2_var._parameters.mxr = 3; - _g3a2_var._parameters.mxl = 3; - _g3a2_var._parameters.myu = 2; - _g3a2_var._parameters.myd = 2; - _g3a2_var._parameters.QcxrOW = 0.0217; - _g3a2_var._parameters.QcxlOW = 0.0217; - _g3a2_var._parameters.QcyuOW = 0.0217; - _g3a2_var._parameters.QcydOW = 0.0217; - _g3a2_var._parameters.alphaxlOW = 6.07; - _g3a2_var._parameters.alphaxrOW = 6.07; - _g3a2_var._parameters.alphayuOW = 6.07; - _g3a2_var._parameters.alphaydOW = 6.07; - _g3a2_var._parameters.WxrOW = 0.003; - _g3a2_var._parameters.WxlOW = 0.003; - _g3a2_var._parameters.WyuOW = 0.003; - _g3a2_var._parameters.WydOW = 0.003; - _g3a2_var._parameters.mxrOW = 0; - _g3a2_var._parameters.mxlOW = 0; - _g3a2_var._parameters.myuOW = 0; - _g3a2_var._parameters.mydOW = 0; - _g3a2_var._parameters.rwallthick = 0.001; - _g3a2_var._parameters.lwallthick = 0.001; - _g3a2_var._parameters.uwallthick = 0.001; - _g3a2_var._parameters.dwallthick = 0.001; - - - /* component g3a2=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a2_var._rotation_absolute); - rot_transpose(_g3a1_var._rotation_absolute, tr1); - rot_mul(_g3a2_var._rotation_absolute, tr1, _g3a2_var._rotation_relative); - _g3a2_var._rotation_is_identity = rot_test_identity(_g3a2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 15.7229); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g3a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g3a1_var._position_absolute, _g3a2_var._position_absolute); - _g3a2_var._position_relative = rot_apply(_g3a2_var._rotation_absolute, tc1); - } /* g3a2=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute); - instrument->_position_absolute[39] = _g3a2_var._position_absolute; - instrument->_position_relative[39] = _g3a2_var._position_relative; - _g3a2_var._position_relative_is_zero = coords_test_zero(_g3a2_var._position_relative); - instrument->counter_N[39] = instrument->counter_P[39] = instrument->counter_P2[39] = 0; - instrument->counter_AbsorbProp[39]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0038_g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "h1u", "0.002", "0.03687","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "linhu", "0.0", "15.7409","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "louthu", "0", "19.0055","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "h1d", "0.002", "0.03687","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "linhd", "0.0", "15.7409","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "louthd", "0", "19.0055","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "l", "0", "1.2535999999999987","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "mxr", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "mxl", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0038_g3a2", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g3a2_setpos */ - -/* component fo3_position=Arm() SETTING, POSITION/ROTATION */ -int _fo3_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo3_position_setpos] component fo3_position=Arm() SETTING [Arm:0]"); - stracpy(_fo3_position_var._name, "fo3_position", 16384); - stracpy(_fo3_position_var._type, "Arm", 16384); - _fo3_position_var._index=40; - int current_setpos_index = 40; - /* component fo3_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo3_position_var._rotation_absolute); - rot_transpose(_g3a2_var._rotation_absolute, tr1); - rot_mul(_fo3_position_var._rotation_absolute, tr1, _fo3_position_var._rotation_relative); - _fo3_position_var._rotation_is_identity = rot_test_identity(_fo3_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 16.9865); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g3a2_var._position_absolute, _fo3_position_var._position_absolute); - _fo3_position_var._position_relative = rot_apply(_fo3_position_var._rotation_absolute, tc1); - } /* fo3_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute); - instrument->_position_absolute[40] = _fo3_position_var._position_absolute; - instrument->_position_relative[40] = _fo3_position_var._position_relative; - _fo3_position_var._position_relative_is_zero = coords_test_zero(_fo3_position_var._position_relative); - instrument->counter_N[40] = instrument->counter_P[40] = instrument->counter_P2[40] = 0; - instrument->counter_AbsorbProp[40]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0039_fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo3_position_setpos */ - -/* component fo_chopper_3=MultiDiskChopper() SETTING, POSITION/ROTATION */ -int _fo_chopper_3_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo_chopper_3_setpos] component fo_chopper_3=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); - stracpy(_fo_chopper_3_var._name, "fo_chopper_3", 16384); - stracpy(_fo_chopper_3_var._type, "MultiDiskChopper", 16384); - _fo_chopper_3_var._index=41; - int current_setpos_index = 41; - if("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" && strlen("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08")) - stracpy(_fo_chopper_3_var._parameters.slit_center, "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" ? "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" : "", 16384); - else - _fo_chopper_3_var._parameters.slit_center[0]='\0'; - if("40.32;39.61;38.94;38.31;37.72;36.06" && strlen("40.32;39.61;38.94;38.31;37.72;36.06")) - stracpy(_fo_chopper_3_var._parameters.slit_width, "40.32;39.61;38.94;38.31;37.72;36.06" ? "40.32;39.61;38.94;38.31;37.72;36.06" : "", 16384); - else - _fo_chopper_3_var._parameters.slit_width[0]='\0'; - _fo_chopper_3_var._parameters.nslits = 6; - _fo_chopper_3_var._parameters.delta_y = -0.5575; - _fo_chopper_3_var._parameters.nu = -28.0; - _fo_chopper_3_var._parameters.nrev = 0; - _fo_chopper_3_var._parameters.ratio = 1; - _fo_chopper_3_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_3; - _fo_chopper_3_var._parameters.delay = 0; - _fo_chopper_3_var._parameters.isfirst = 0; - _fo_chopper_3_var._parameters.phase = fo3_phase; - _fo_chopper_3_var._parameters.radius = 0.6; - _fo_chopper_3_var._parameters.equal = 0; - _fo_chopper_3_var._parameters.abs_out = 0; - _fo_chopper_3_var._parameters.verbose = 0; - - - /* component fo_chopper_3=MultiDiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _fo3_position_var._rotation_absolute, _fo_chopper_3_var._rotation_absolute); - rot_transpose(_g3a2_var._rotation_absolute, tr1); - rot_mul(_fo_chopper_3_var._rotation_absolute, tr1, _fo_chopper_3_var._rotation_relative); - _fo_chopper_3_var._rotation_is_identity = rot_test_identity(_fo_chopper_3_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_fo3_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo_chopper_3_var._position_absolute = coords_add(_fo3_position_var._position_absolute, tc2); - tc1 = coords_sub(_g3a2_var._position_absolute, _fo_chopper_3_var._position_absolute); - _fo_chopper_3_var._position_relative = rot_apply(_fo_chopper_3_var._rotation_absolute, tc1); - } /* fo_chopper_3=MultiDiskChopper() AT ROTATED */ - DEBUG_COMPONENT("fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute); - instrument->_position_absolute[41] = _fo_chopper_3_var._position_absolute; - instrument->_position_relative[41] = _fo_chopper_3_var._position_relative; - _fo_chopper_3_var._position_relative_is_zero = coords_test_zero(_fo_chopper_3_var._position_relative); - instrument->counter_N[41] = instrument->counter_P[41] = instrument->counter_P2[41] = 0; - instrument->counter_AbsorbProp[41]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0040_fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute, "MultiDiskChopper"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "slit_center", "0 180", "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", "char*"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "slit_width", "10 20", "40.32;39.61;38.94;38.31;37.72;36.06", "char*"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nslits", "2", "6","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "delta_y", "-0.3", "-0.5575","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nu", "0", "-28.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "nrev", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "ratio", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_3","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "phase", "0", "fo3_phase","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "radius", "0.375", "0.6","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "equal", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "abs_out", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0040_fo_chopper_3", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo_chopper_3_setpos */ - -/* component g3b1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g3b1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g3b1_setpos] component g3b1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g3b1_var._name, "g3b1", 16384); - stracpy(_g3b1_var._type, "Guide_four_side", 16384); - _g3b1_var._index=42; - int current_setpos_index = 42; - _g3b1_var._parameters.RIreflect[0]='\0'; - _g3b1_var._parameters.LIreflect[0]='\0'; - _g3b1_var._parameters.UIreflect[0]='\0'; - _g3b1_var._parameters.DIreflect[0]='\0'; - _g3b1_var._parameters.ROreflect[0]='\0'; - _g3b1_var._parameters.LOreflect[0]='\0'; - _g3b1_var._parameters.UOreflect[0]='\0'; - _g3b1_var._parameters.DOreflect[0]='\0'; - _g3b1_var._parameters.w1l = 0.04004; - _g3b1_var._parameters.w2l = 0.04004; - _g3b1_var._parameters.linwl = 0; - _g3b1_var._parameters.loutwl = 0; - _g3b1_var._parameters.w1r = 0.04004; - _g3b1_var._parameters.w2r = 0.04004; - _g3b1_var._parameters.linwr = 0.0; - _g3b1_var._parameters.loutwr = 0; - _g3b1_var._parameters.h1u = 0.03711; - _g3b1_var._parameters.h2u = 0.002; - _g3b1_var._parameters.linhu = 17.0055; - _g3b1_var._parameters.louthu = 18.038; - _g3b1_var._parameters.h1d = 0.03711; - _g3b1_var._parameters.h2d = 0.002; - _g3b1_var._parameters.linhd = 17.0055; - _g3b1_var._parameters.louthd = 18.038; - _g3b1_var._parameters.l = 0.9564999999999984; - _g3b1_var._parameters.R0 = 0.99; - _g3b1_var._parameters.Qcxl = 0.0221; - _g3b1_var._parameters.Qcxr = 0.0221; - _g3b1_var._parameters.Qcyu = 0.023; - _g3b1_var._parameters.Qcyd = 0.023; - _g3b1_var._parameters.alphaxl = 1.75; - _g3b1_var._parameters.alphaxr = 1.75; - _g3b1_var._parameters.alphayu = 1.8; - _g3b1_var._parameters.alphayd = 1.8; - _g3b1_var._parameters.Wxr = 0.015; - _g3b1_var._parameters.Wxl = 0.015; - _g3b1_var._parameters.Wyu = 0.015; - _g3b1_var._parameters.Wyd = 0.015; - _g3b1_var._parameters.mxr = 2.5; - _g3b1_var._parameters.mxl = 2.5; - _g3b1_var._parameters.myu = 2; - _g3b1_var._parameters.myd = 2; - _g3b1_var._parameters.QcxrOW = 0.0217; - _g3b1_var._parameters.QcxlOW = 0.0217; - _g3b1_var._parameters.QcyuOW = 0.0217; - _g3b1_var._parameters.QcydOW = 0.0217; - _g3b1_var._parameters.alphaxlOW = 6.07; - _g3b1_var._parameters.alphaxrOW = 6.07; - _g3b1_var._parameters.alphayuOW = 6.07; - _g3b1_var._parameters.alphaydOW = 6.07; - _g3b1_var._parameters.WxrOW = 0.003; - _g3b1_var._parameters.WxlOW = 0.003; - _g3b1_var._parameters.WyuOW = 0.003; - _g3b1_var._parameters.WydOW = 0.003; - _g3b1_var._parameters.mxrOW = 0; - _g3b1_var._parameters.mxlOW = 0; - _g3b1_var._parameters.myuOW = 0; - _g3b1_var._parameters.mydOW = 0; - _g3b1_var._parameters.rwallthick = 0.001; - _g3b1_var._parameters.lwallthick = 0.001; - _g3b1_var._parameters.uwallthick = 0.001; - _g3b1_var._parameters.dwallthick = 0.001; - - - /* component g3b1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3b1_var._rotation_absolute); - rot_transpose(_fo_chopper_3_var._rotation_absolute, tr1); - rot_mul(_g3b1_var._rotation_absolute, tr1, _g3b1_var._rotation_relative); - _g3b1_var._rotation_is_identity = rot_test_identity(_g3b1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 16.9965); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g3b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_fo_chopper_3_var._position_absolute, _g3b1_var._position_absolute); - _g3b1_var._position_relative = rot_apply(_g3b1_var._rotation_absolute, tc1); - } /* g3b1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute); - instrument->_position_absolute[42] = _g3b1_var._position_absolute; - instrument->_position_relative[42] = _g3b1_var._position_relative; - _g3b1_var._position_relative_is_zero = coords_test_zero(_g3b1_var._position_relative); - instrument->counter_N[42] = instrument->counter_P[42] = instrument->counter_P2[42] = 0; - instrument->counter_AbsorbProp[42]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0041_g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "h1u", "0.002", "0.03711","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "linhu", "0.0", "17.0055","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "louthu", "0", "18.038","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "h1d", "0.002", "0.03711","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "linhd", "0.0", "17.0055","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "louthd", "0", "18.038","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "l", "0", "0.9564999999999984","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "mxr", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "mxl", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0041_g3b1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g3b1_setpos */ - -/* component g4a1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4a1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4a1_setpos] component g4a1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4a1_var._name, "g4a1", 16384); - stracpy(_g4a1_var._type, "Guide_four_side", 16384); - _g4a1_var._index=43; - int current_setpos_index = 43; - _g4a1_var._parameters.RIreflect[0]='\0'; - _g4a1_var._parameters.LIreflect[0]='\0'; - _g4a1_var._parameters.UIreflect[0]='\0'; - _g4a1_var._parameters.DIreflect[0]='\0'; - _g4a1_var._parameters.ROreflect[0]='\0'; - _g4a1_var._parameters.LOreflect[0]='\0'; - _g4a1_var._parameters.UOreflect[0]='\0'; - _g4a1_var._parameters.DOreflect[0]='\0'; - _g4a1_var._parameters.w1l = 0.04004; - _g4a1_var._parameters.w2l = 0.04004; - _g4a1_var._parameters.linwl = 0; - _g4a1_var._parameters.loutwl = 0; - _g4a1_var._parameters.w1r = 0.04004; - _g4a1_var._parameters.w2r = 0.04004; - _g4a1_var._parameters.linwr = 0.0; - _g4a1_var._parameters.loutwr = 0; - _g4a1_var._parameters.h1u = 0.037165; - _g4a1_var._parameters.h2u = 0.037165; - _g4a1_var._parameters.linhu = 0.0; - _g4a1_var._parameters.louthu = 0; - _g4a1_var._parameters.h1d = 0.037165; - _g4a1_var._parameters.h2d = 0.037165; - _g4a1_var._parameters.linhd = 0.0; - _g4a1_var._parameters.louthd = 0; - _g4a1_var._parameters.l = 1.2600000000000016; - _g4a1_var._parameters.R0 = 0.99; - _g4a1_var._parameters.Qcxl = 0.0221; - _g4a1_var._parameters.Qcxr = 0.0221; - _g4a1_var._parameters.Qcyu = 0.023; - _g4a1_var._parameters.Qcyd = 0.023; - _g4a1_var._parameters.alphaxl = 1.75; - _g4a1_var._parameters.alphaxr = 1.75; - _g4a1_var._parameters.alphayu = 1.8; - _g4a1_var._parameters.alphayd = 1.8; - _g4a1_var._parameters.Wxr = 0.015; - _g4a1_var._parameters.Wxl = 0.015; - _g4a1_var._parameters.Wyu = 0.015; - _g4a1_var._parameters.Wyd = 0.015; - _g4a1_var._parameters.mxr = 3; - _g4a1_var._parameters.mxl = 3; - _g4a1_var._parameters.myu = 2; - _g4a1_var._parameters.myd = 2; - _g4a1_var._parameters.QcxrOW = 0.0217; - _g4a1_var._parameters.QcxlOW = 0.0217; - _g4a1_var._parameters.QcyuOW = 0.0217; - _g4a1_var._parameters.QcydOW = 0.0217; - _g4a1_var._parameters.alphaxlOW = 6.07; - _g4a1_var._parameters.alphaxrOW = 6.07; - _g4a1_var._parameters.alphayuOW = 6.07; - _g4a1_var._parameters.alphaydOW = 6.07; - _g4a1_var._parameters.WxrOW = 0.003; - _g4a1_var._parameters.WxlOW = 0.003; - _g4a1_var._parameters.WyuOW = 0.003; - _g4a1_var._parameters.WydOW = 0.003; - _g4a1_var._parameters.mxrOW = 0; - _g4a1_var._parameters.mxlOW = 0; - _g4a1_var._parameters.myuOW = 0; - _g4a1_var._parameters.mydOW = 0; - _g4a1_var._parameters.rwallthick = 0.001; - _g4a1_var._parameters.lwallthick = 0.001; - _g4a1_var._parameters.uwallthick = 0.001; - _g4a1_var._parameters.dwallthick = 0.001; - - - /* component g4a1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a1_var._rotation_absolute); - rot_transpose(_g3b1_var._rotation_absolute, tr1); - rot_mul(_g4a1_var._rotation_absolute, tr1, _g4a1_var._rotation_relative); - _g4a1_var._rotation_is_identity = rot_test_identity(_g4a1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 17.964); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g3b1_var._position_absolute, _g4a1_var._position_absolute); - _g4a1_var._position_relative = rot_apply(_g4a1_var._rotation_absolute, tc1); - } /* g4a1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute); - instrument->_position_absolute[43] = _g4a1_var._position_absolute; - instrument->_position_relative[43] = _g4a1_var._position_relative; - _g4a1_var._position_relative_is_zero = coords_test_zero(_g4a1_var._position_relative); - instrument->counter_N[43] = instrument->counter_P[43] = instrument->counter_P2[43] = 0; - instrument->counter_AbsorbProp[43]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0042_g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "l", "0", "1.2600000000000016","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "mxr", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "mxl", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0042_g4a1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4a1_setpos */ - -/* component monitor_2_position=Arm() SETTING, POSITION/ROTATION */ -int _monitor_2_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_monitor_2_position_setpos] component monitor_2_position=Arm() SETTING [Arm:0]"); - stracpy(_monitor_2_position_var._name, "monitor_2_position", 16384); - stracpy(_monitor_2_position_var._type, "Arm", 16384); - _monitor_2_position_var._index=44; - int current_setpos_index = 44; - /* component monitor_2_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_2_position_var._rotation_absolute); - rot_transpose(_g4a1_var._rotation_absolute, tr1); - rot_mul(_monitor_2_position_var._rotation_absolute, tr1, _monitor_2_position_var._rotation_relative); - _monitor_2_position_var._rotation_is_identity = rot_test_identity(_monitor_2_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 19.245); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _monitor_2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4a1_var._position_absolute, _monitor_2_position_var._position_absolute); - _monitor_2_position_var._position_relative = rot_apply(_monitor_2_position_var._rotation_absolute, tc1); - } /* monitor_2_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute); - instrument->_position_absolute[44] = _monitor_2_position_var._position_absolute; - instrument->_position_relative[44] = _monitor_2_position_var._position_relative; - _monitor_2_position_var._position_relative_is_zero = coords_test_zero(_monitor_2_position_var._position_relative); - instrument->counter_N[44] = instrument->counter_P[44] = instrument->counter_P2[44] = 0; - instrument->counter_AbsorbProp[44]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0043_monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _monitor_2_position_setpos */ - -/* component g4a2=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4a2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4a2_setpos] component g4a2=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4a2_var._name, "g4a2", 16384); - stracpy(_g4a2_var._type, "Guide_four_side", 16384); - _g4a2_var._index=45; - int current_setpos_index = 45; - _g4a2_var._parameters.RIreflect[0]='\0'; - _g4a2_var._parameters.LIreflect[0]='\0'; - _g4a2_var._parameters.UIreflect[0]='\0'; - _g4a2_var._parameters.DIreflect[0]='\0'; - _g4a2_var._parameters.ROreflect[0]='\0'; - _g4a2_var._parameters.LOreflect[0]='\0'; - _g4a2_var._parameters.UOreflect[0]='\0'; - _g4a2_var._parameters.DOreflect[0]='\0'; - _g4a2_var._parameters.w1l = 0.04004; - _g4a2_var._parameters.w2l = 0.04004; - _g4a2_var._parameters.linwl = 0; - _g4a2_var._parameters.loutwl = 0; - _g4a2_var._parameters.w1r = 0.04004; - _g4a2_var._parameters.w2r = 0.04004; - _g4a2_var._parameters.linwr = 0.0; - _g4a2_var._parameters.loutwr = 0; - _g4a2_var._parameters.h1u = 0.037165; - _g4a2_var._parameters.h2u = 0.037165; - _g4a2_var._parameters.linhu = 0.0; - _g4a2_var._parameters.louthu = 0; - _g4a2_var._parameters.h1d = 0.037165; - _g4a2_var._parameters.h2d = 0.037165; - _g4a2_var._parameters.linhd = 0.0; - _g4a2_var._parameters.louthd = 0; - _g4a2_var._parameters.l = 1.9997499999999988; - _g4a2_var._parameters.R0 = 0.99; - _g4a2_var._parameters.Qcxl = 0.0221; - _g4a2_var._parameters.Qcxr = 0.0221; - _g4a2_var._parameters.Qcyu = 0.023; - _g4a2_var._parameters.Qcyd = 0.023; - _g4a2_var._parameters.alphaxl = 1.75; - _g4a2_var._parameters.alphaxr = 1.75; - _g4a2_var._parameters.alphayu = 1.8; - _g4a2_var._parameters.alphayd = 1.8; - _g4a2_var._parameters.Wxr = 0.015; - _g4a2_var._parameters.Wxl = 0.015; - _g4a2_var._parameters.Wyu = 0.015; - _g4a2_var._parameters.Wyd = 0.015; - _g4a2_var._parameters.mxr = 2.5; - _g4a2_var._parameters.mxl = 2.5; - _g4a2_var._parameters.myu = 2; - _g4a2_var._parameters.myd = 2; - _g4a2_var._parameters.QcxrOW = 0.0217; - _g4a2_var._parameters.QcxlOW = 0.0217; - _g4a2_var._parameters.QcyuOW = 0.0217; - _g4a2_var._parameters.QcydOW = 0.0217; - _g4a2_var._parameters.alphaxlOW = 6.07; - _g4a2_var._parameters.alphaxrOW = 6.07; - _g4a2_var._parameters.alphayuOW = 6.07; - _g4a2_var._parameters.alphaydOW = 6.07; - _g4a2_var._parameters.WxrOW = 0.003; - _g4a2_var._parameters.WxlOW = 0.003; - _g4a2_var._parameters.WyuOW = 0.003; - _g4a2_var._parameters.WydOW = 0.003; - _g4a2_var._parameters.mxrOW = 0; - _g4a2_var._parameters.mxlOW = 0; - _g4a2_var._parameters.myuOW = 0; - _g4a2_var._parameters.mydOW = 0; - _g4a2_var._parameters.rwallthick = 0.001; - _g4a2_var._parameters.lwallthick = 0.001; - _g4a2_var._parameters.uwallthick = 0.001; - _g4a2_var._parameters.dwallthick = 0.001; - - - /* component g4a2=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a2_var._rotation_absolute); - rot_transpose(_g4a1_var._rotation_absolute, tr1); - rot_mul(_g4a2_var._rotation_absolute, tr1, _g4a2_var._rotation_relative); - _g4a2_var._rotation_is_identity = rot_test_identity(_g4a2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 19.25); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4a1_var._position_absolute, _g4a2_var._position_absolute); - _g4a2_var._position_relative = rot_apply(_g4a2_var._rotation_absolute, tc1); - } /* g4a2=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute); - instrument->_position_absolute[45] = _g4a2_var._position_absolute; - instrument->_position_relative[45] = _g4a2_var._position_relative; - _g4a2_var._position_relative_is_zero = coords_test_zero(_g4a2_var._position_relative); - instrument->counter_N[45] = instrument->counter_P[45] = instrument->counter_P2[45] = 0; - instrument->counter_AbsorbProp[45]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0044_g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "l", "0", "1.9997499999999988","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "mxr", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "mxl", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0044_g4a2", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4a2_setpos */ - -/* component g4a3=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4a3_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4a3_setpos] component g4a3=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4a3_var._name, "g4a3", 16384); - stracpy(_g4a3_var._type, "Guide_four_side", 16384); - _g4a3_var._index=46; - int current_setpos_index = 46; - _g4a3_var._parameters.RIreflect[0]='\0'; - _g4a3_var._parameters.LIreflect[0]='\0'; - _g4a3_var._parameters.UIreflect[0]='\0'; - _g4a3_var._parameters.DIreflect[0]='\0'; - _g4a3_var._parameters.ROreflect[0]='\0'; - _g4a3_var._parameters.LOreflect[0]='\0'; - _g4a3_var._parameters.UOreflect[0]='\0'; - _g4a3_var._parameters.DOreflect[0]='\0'; - _g4a3_var._parameters.w1l = 0.04004; - _g4a3_var._parameters.w2l = 0.04004; - _g4a3_var._parameters.linwl = 0; - _g4a3_var._parameters.loutwl = 0; - _g4a3_var._parameters.w1r = 0.04004; - _g4a3_var._parameters.w2r = 0.04004; - _g4a3_var._parameters.linwr = 0.0; - _g4a3_var._parameters.loutwr = 0; - _g4a3_var._parameters.h1u = 0.037165; - _g4a3_var._parameters.h2u = 0.037165; - _g4a3_var._parameters.linhu = 0.0; - _g4a3_var._parameters.louthu = 0; - _g4a3_var._parameters.h1d = 0.037165; - _g4a3_var._parameters.h2d = 0.037165; - _g4a3_var._parameters.linhd = 0.0; - _g4a3_var._parameters.louthd = 0; - _g4a3_var._parameters.l = 2.4252499999999984; - _g4a3_var._parameters.R0 = 0.99; - _g4a3_var._parameters.Qcxl = 0.0221; - _g4a3_var._parameters.Qcxr = 0.0221; - _g4a3_var._parameters.Qcyu = 0.023; - _g4a3_var._parameters.Qcyd = 0.023; - _g4a3_var._parameters.alphaxl = 1.75; - _g4a3_var._parameters.alphaxr = 1.75; - _g4a3_var._parameters.alphayu = 1.8; - _g4a3_var._parameters.alphayd = 1.8; - _g4a3_var._parameters.Wxr = 0.015; - _g4a3_var._parameters.Wxl = 0.015; - _g4a3_var._parameters.Wyu = 0.015; - _g4a3_var._parameters.Wyd = 0.015; - _g4a3_var._parameters.mxr = 2.5; - _g4a3_var._parameters.mxl = 2.5; - _g4a3_var._parameters.myu = 2; - _g4a3_var._parameters.myd = 2; - _g4a3_var._parameters.QcxrOW = 0.0217; - _g4a3_var._parameters.QcxlOW = 0.0217; - _g4a3_var._parameters.QcyuOW = 0.0217; - _g4a3_var._parameters.QcydOW = 0.0217; - _g4a3_var._parameters.alphaxlOW = 6.07; - _g4a3_var._parameters.alphaxrOW = 6.07; - _g4a3_var._parameters.alphayuOW = 6.07; - _g4a3_var._parameters.alphaydOW = 6.07; - _g4a3_var._parameters.WxrOW = 0.003; - _g4a3_var._parameters.WxlOW = 0.003; - _g4a3_var._parameters.WyuOW = 0.003; - _g4a3_var._parameters.WydOW = 0.003; - _g4a3_var._parameters.mxrOW = 0; - _g4a3_var._parameters.mxlOW = 0; - _g4a3_var._parameters.myuOW = 0; - _g4a3_var._parameters.mydOW = 0; - _g4a3_var._parameters.rwallthick = 0.001; - _g4a3_var._parameters.lwallthick = 0.001; - _g4a3_var._parameters.uwallthick = 0.001; - _g4a3_var._parameters.dwallthick = 0.001; - - - /* component g4a3=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a3_var._rotation_absolute); - rot_transpose(_g4a2_var._rotation_absolute, tr1); - rot_mul(_g4a3_var._rotation_absolute, tr1, _g4a3_var._rotation_relative); - _g4a3_var._rotation_is_identity = rot_test_identity(_g4a3_var._rotation_relative); - tc1 = coords_set( - 0, 0, 21.25025); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4a2_var._position_absolute, _g4a3_var._position_absolute); - _g4a3_var._position_relative = rot_apply(_g4a3_var._rotation_absolute, tc1); - } /* g4a3=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute); - instrument->_position_absolute[46] = _g4a3_var._position_absolute; - instrument->_position_relative[46] = _g4a3_var._position_relative; - _g4a3_var._position_relative_is_zero = coords_test_zero(_g4a3_var._position_relative); - instrument->counter_N[46] = instrument->counter_P[46] = instrument->counter_P2[46] = 0; - instrument->counter_AbsorbProp[46]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0045_g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "l", "0", "2.4252499999999984","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "mxr", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "mxl", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0045_g4a3", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4a3_setpos */ - -/* component fo4_position=Arm() SETTING, POSITION/ROTATION */ -int _fo4_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo4_position_setpos] component fo4_position=Arm() SETTING [Arm:0]"); - stracpy(_fo4_position_var._name, "fo4_position", 16384); - stracpy(_fo4_position_var._type, "Arm", 16384); - _fo4_position_var._index=47; - int current_setpos_index = 47; - /* component fo4_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo4_position_var._rotation_absolute); - rot_transpose(_g4a3_var._rotation_absolute, tr1); - rot_mul(_fo4_position_var._rotation_absolute, tr1, _fo4_position_var._rotation_relative); - _fo4_position_var._rotation_is_identity = rot_test_identity(_fo4_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 23.6855); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo4_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4a3_var._position_absolute, _fo4_position_var._position_absolute); - _fo4_position_var._position_relative = rot_apply(_fo4_position_var._rotation_absolute, tc1); - } /* fo4_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute); - instrument->_position_absolute[47] = _fo4_position_var._position_absolute; - instrument->_position_relative[47] = _fo4_position_var._position_relative; - _fo4_position_var._position_relative_is_zero = coords_test_zero(_fo4_position_var._position_relative); - instrument->counter_N[47] = instrument->counter_P[47] = instrument->counter_P2[47] = 0; - instrument->counter_AbsorbProp[47]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0046_fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo4_position_setpos */ - -/* component fo_chopper_4=MultiDiskChopper() SETTING, POSITION/ROTATION */ -int _fo_chopper_4_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo_chopper_4_setpos] component fo_chopper_4=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); - stracpy(_fo_chopper_4_var._name, "fo_chopper_4", 16384); - stracpy(_fo_chopper_4_var._type, "MultiDiskChopper", 16384); - _fo_chopper_4_var._index=48; - int current_setpos_index = 48; - if("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" && strlen("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998")) - stracpy(_fo_chopper_4_var._parameters.slit_center, "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" ? "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" : "", 16384); - else - _fo_chopper_4_var._parameters.slit_center[0]='\0'; - if("32.98;31.82;30.74;29.27;28.77;26.76" && strlen("32.98;31.82;30.74;29.27;28.77;26.76")) - stracpy(_fo_chopper_4_var._parameters.slit_width, "32.98;31.82;30.74;29.27;28.77;26.76" ? "32.98;31.82;30.74;29.27;28.77;26.76" : "", 16384); - else - _fo_chopper_4_var._parameters.slit_width[0]='\0'; - _fo_chopper_4_var._parameters.nslits = 6; - _fo_chopper_4_var._parameters.delta_y = -0.7075; - _fo_chopper_4_var._parameters.nu = -14.0; - _fo_chopper_4_var._parameters.nrev = 0; - _fo_chopper_4_var._parameters.ratio = 1; - _fo_chopper_4_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_4; - _fo_chopper_4_var._parameters.delay = 0; - _fo_chopper_4_var._parameters.isfirst = 0; - _fo_chopper_4_var._parameters.phase = fo4_phase; - _fo_chopper_4_var._parameters.radius = 0.75; - _fo_chopper_4_var._parameters.equal = 0; - _fo_chopper_4_var._parameters.abs_out = 0; - _fo_chopper_4_var._parameters.verbose = 0; - - - /* component fo_chopper_4=MultiDiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _fo4_position_var._rotation_absolute, _fo_chopper_4_var._rotation_absolute); - rot_transpose(_g4a3_var._rotation_absolute, tr1); - rot_mul(_fo_chopper_4_var._rotation_absolute, tr1, _fo_chopper_4_var._rotation_relative); - _fo_chopper_4_var._rotation_is_identity = rot_test_identity(_fo_chopper_4_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_fo4_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo_chopper_4_var._position_absolute = coords_add(_fo4_position_var._position_absolute, tc2); - tc1 = coords_sub(_g4a3_var._position_absolute, _fo_chopper_4_var._position_absolute); - _fo_chopper_4_var._position_relative = rot_apply(_fo_chopper_4_var._rotation_absolute, tc1); - } /* fo_chopper_4=MultiDiskChopper() AT ROTATED */ - DEBUG_COMPONENT("fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute); - instrument->_position_absolute[48] = _fo_chopper_4_var._position_absolute; - instrument->_position_relative[48] = _fo_chopper_4_var._position_relative; - _fo_chopper_4_var._position_relative_is_zero = coords_test_zero(_fo_chopper_4_var._position_relative); - instrument->counter_N[48] = instrument->counter_P[48] = instrument->counter_P2[48] = 0; - instrument->counter_AbsorbProp[48]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0047_fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute, "MultiDiskChopper"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "slit_center", "0 180", "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", "char*"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "slit_width", "10 20", "32.98;31.82;30.74;29.27;28.77;26.76", "char*"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nslits", "2", "6","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "delta_y", "-0.3", "-0.7075","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nu", "0", "-14.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "nrev", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "ratio", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_4","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "phase", "0", "fo4_phase","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "radius", "0.375", "0.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "equal", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "abs_out", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0047_fo_chopper_4", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo_chopper_4_setpos */ - -/* component g4b1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4b1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4b1_setpos] component g4b1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4b1_var._name, "g4b1", 16384); - stracpy(_g4b1_var._type, "Guide_four_side", 16384); - _g4b1_var._index=49; - int current_setpos_index = 49; - _g4b1_var._parameters.RIreflect[0]='\0'; - _g4b1_var._parameters.LIreflect[0]='\0'; - _g4b1_var._parameters.UIreflect[0]='\0'; - _g4b1_var._parameters.DIreflect[0]='\0'; - _g4b1_var._parameters.ROreflect[0]='\0'; - _g4b1_var._parameters.LOreflect[0]='\0'; - _g4b1_var._parameters.UOreflect[0]='\0'; - _g4b1_var._parameters.DOreflect[0]='\0'; - _g4b1_var._parameters.w1l = 0.04004; - _g4b1_var._parameters.w2l = 0.04004; - _g4b1_var._parameters.linwl = 0; - _g4b1_var._parameters.loutwl = 0; - _g4b1_var._parameters.w1r = 0.04004; - _g4b1_var._parameters.w2r = 0.04004; - _g4b1_var._parameters.linwr = 0.0; - _g4b1_var._parameters.loutwr = 0; - _g4b1_var._parameters.h1u = 0.037165; - _g4b1_var._parameters.h2u = 0.037165; - _g4b1_var._parameters.linhu = 0.0; - _g4b1_var._parameters.louthu = 0; - _g4b1_var._parameters.h1d = 0.037165; - _g4b1_var._parameters.h2d = 0.037165; - _g4b1_var._parameters.linhd = 0.0; - _g4b1_var._parameters.louthd = 0; - _g4b1_var._parameters.l = 0.5565999999999995; - _g4b1_var._parameters.R0 = 0.99; - _g4b1_var._parameters.Qcxl = 0.0221; - _g4b1_var._parameters.Qcxr = 0.0221; - _g4b1_var._parameters.Qcyu = 0.023; - _g4b1_var._parameters.Qcyd = 0.023; - _g4b1_var._parameters.alphaxl = 1.75; - _g4b1_var._parameters.alphaxr = 1.75; - _g4b1_var._parameters.alphayu = 1.8; - _g4b1_var._parameters.alphayd = 1.8; - _g4b1_var._parameters.Wxr = 0.015; - _g4b1_var._parameters.Wxl = 0.015; - _g4b1_var._parameters.Wyu = 0.015; - _g4b1_var._parameters.Wyd = 0.015; - _g4b1_var._parameters.mxr = 2.5; - _g4b1_var._parameters.mxl = 2.5; - _g4b1_var._parameters.myu = 2; - _g4b1_var._parameters.myd = 2; - _g4b1_var._parameters.QcxrOW = 0.0217; - _g4b1_var._parameters.QcxlOW = 0.0217; - _g4b1_var._parameters.QcyuOW = 0.0217; - _g4b1_var._parameters.QcydOW = 0.0217; - _g4b1_var._parameters.alphaxlOW = 6.07; - _g4b1_var._parameters.alphaxrOW = 6.07; - _g4b1_var._parameters.alphayuOW = 6.07; - _g4b1_var._parameters.alphaydOW = 6.07; - _g4b1_var._parameters.WxrOW = 0.003; - _g4b1_var._parameters.WxlOW = 0.003; - _g4b1_var._parameters.WyuOW = 0.003; - _g4b1_var._parameters.WydOW = 0.003; - _g4b1_var._parameters.mxrOW = 0; - _g4b1_var._parameters.mxlOW = 0; - _g4b1_var._parameters.myuOW = 0; - _g4b1_var._parameters.mydOW = 0; - _g4b1_var._parameters.rwallthick = 0.001; - _g4b1_var._parameters.lwallthick = 0.001; - _g4b1_var._parameters.uwallthick = 0.001; - _g4b1_var._parameters.dwallthick = 0.001; - - - /* component g4b1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b1_var._rotation_absolute); - rot_transpose(_fo_chopper_4_var._rotation_absolute, tr1); - rot_mul(_g4b1_var._rotation_absolute, tr1, _g4b1_var._rotation_relative); - _g4b1_var._rotation_is_identity = rot_test_identity(_g4b1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 23.6955); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_fo_chopper_4_var._position_absolute, _g4b1_var._position_absolute); - _g4b1_var._position_relative = rot_apply(_g4b1_var._rotation_absolute, tc1); - } /* g4b1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute); - instrument->_position_absolute[49] = _g4b1_var._position_absolute; - instrument->_position_relative[49] = _g4b1_var._position_relative; - _g4b1_var._position_relative_is_zero = coords_test_zero(_g4b1_var._position_relative); - instrument->counter_N[49] = instrument->counter_P[49] = instrument->counter_P2[49] = 0; - instrument->counter_AbsorbProp[49]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0048_g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "l", "0", "0.5565999999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "mxr", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "mxl", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0048_g4b1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4b1_setpos */ - -/* component g4b2=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4b2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4b2_setpos] component g4b2=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4b2_var._name, "g4b2", 16384); - stracpy(_g4b2_var._type, "Guide_four_side", 16384); - _g4b2_var._index=50; - int current_setpos_index = 50; - _g4b2_var._parameters.RIreflect[0]='\0'; - _g4b2_var._parameters.LIreflect[0]='\0'; - _g4b2_var._parameters.UIreflect[0]='\0'; - _g4b2_var._parameters.DIreflect[0]='\0'; - _g4b2_var._parameters.ROreflect[0]='\0'; - _g4b2_var._parameters.LOreflect[0]='\0'; - _g4b2_var._parameters.UOreflect[0]='\0'; - _g4b2_var._parameters.DOreflect[0]='\0'; - _g4b2_var._parameters.w1l = 0.04004; - _g4b2_var._parameters.w2l = 0.04004; - _g4b2_var._parameters.linwl = 0; - _g4b2_var._parameters.loutwl = 0; - _g4b2_var._parameters.w1r = 0.04004; - _g4b2_var._parameters.w2r = 0.04004; - _g4b2_var._parameters.linwr = 0.0; - _g4b2_var._parameters.loutwr = 0; - _g4b2_var._parameters.h1u = 0.037165; - _g4b2_var._parameters.h2u = 0.037165; - _g4b2_var._parameters.linhu = 0.0; - _g4b2_var._parameters.louthu = 0; - _g4b2_var._parameters.h1d = 0.037165; - _g4b2_var._parameters.h2d = 0.037165; - _g4b2_var._parameters.linhd = 0.0; - _g4b2_var._parameters.louthd = 0; - _g4b2_var._parameters.l = 1.7800000000000011; - _g4b2_var._parameters.R0 = 0.99; - _g4b2_var._parameters.Qcxl = 0.0221; - _g4b2_var._parameters.Qcxr = 0.0221; - _g4b2_var._parameters.Qcyu = 0.023; - _g4b2_var._parameters.Qcyd = 0.023; - _g4b2_var._parameters.alphaxl = 1.75; - _g4b2_var._parameters.alphaxr = 1.75; - _g4b2_var._parameters.alphayu = 1.8; - _g4b2_var._parameters.alphayd = 1.8; - _g4b2_var._parameters.Wxr = 0.015; - _g4b2_var._parameters.Wxl = 0.015; - _g4b2_var._parameters.Wyu = 0.015; - _g4b2_var._parameters.Wyd = 0.015; - _g4b2_var._parameters.mxr = 3.0; - _g4b2_var._parameters.mxl = 3.0; - _g4b2_var._parameters.myu = 2; - _g4b2_var._parameters.myd = 2; - _g4b2_var._parameters.QcxrOW = 0.0217; - _g4b2_var._parameters.QcxlOW = 0.0217; - _g4b2_var._parameters.QcyuOW = 0.0217; - _g4b2_var._parameters.QcydOW = 0.0217; - _g4b2_var._parameters.alphaxlOW = 6.07; - _g4b2_var._parameters.alphaxrOW = 6.07; - _g4b2_var._parameters.alphayuOW = 6.07; - _g4b2_var._parameters.alphaydOW = 6.07; - _g4b2_var._parameters.WxrOW = 0.003; - _g4b2_var._parameters.WxlOW = 0.003; - _g4b2_var._parameters.WyuOW = 0.003; - _g4b2_var._parameters.WydOW = 0.003; - _g4b2_var._parameters.mxrOW = 0; - _g4b2_var._parameters.mxlOW = 0; - _g4b2_var._parameters.myuOW = 0; - _g4b2_var._parameters.mydOW = 0; - _g4b2_var._parameters.rwallthick = 0.001; - _g4b2_var._parameters.lwallthick = 0.001; - _g4b2_var._parameters.uwallthick = 0.001; - _g4b2_var._parameters.dwallthick = 0.001; - - - /* component g4b2=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b2_var._rotation_absolute); - rot_transpose(_g4b1_var._rotation_absolute, tr1); - rot_mul(_g4b2_var._rotation_absolute, tr1, _g4b2_var._rotation_relative); - _g4b2_var._rotation_is_identity = rot_test_identity(_g4b2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 24.2561); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4b1_var._position_absolute, _g4b2_var._position_absolute); - _g4b2_var._position_relative = rot_apply(_g4b2_var._rotation_absolute, tc1); - } /* g4b2=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute); - instrument->_position_absolute[50] = _g4b2_var._position_absolute; - instrument->_position_relative[50] = _g4b2_var._position_relative; - _g4b2_var._position_relative_is_zero = coords_test_zero(_g4b2_var._position_relative); - instrument->counter_N[50] = instrument->counter_P[50] = instrument->counter_P2[50] = 0; - instrument->counter_AbsorbProp[50]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0049_g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "l", "0", "1.7800000000000011","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "mxr", "3.6", "3.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "mxl", "3.6", "3.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0049_g4b2", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4b2_setpos */ - -/* component g4b3=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4b3_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4b3_setpos] component g4b3=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4b3_var._name, "g4b3", 16384); - stracpy(_g4b3_var._type, "Guide_four_side", 16384); - _g4b3_var._index=51; - int current_setpos_index = 51; - _g4b3_var._parameters.RIreflect[0]='\0'; - _g4b3_var._parameters.LIreflect[0]='\0'; - _g4b3_var._parameters.UIreflect[0]='\0'; - _g4b3_var._parameters.DIreflect[0]='\0'; - _g4b3_var._parameters.ROreflect[0]='\0'; - _g4b3_var._parameters.LOreflect[0]='\0'; - _g4b3_var._parameters.UOreflect[0]='\0'; - _g4b3_var._parameters.DOreflect[0]='\0'; - _g4b3_var._parameters.w1l = 0.04004; - _g4b3_var._parameters.w2l = 0.04004; - _g4b3_var._parameters.linwl = 0; - _g4b3_var._parameters.loutwl = 0; - _g4b3_var._parameters.w1r = 0.04004; - _g4b3_var._parameters.w2r = 0.04004; - _g4b3_var._parameters.linwr = 0.0; - _g4b3_var._parameters.loutwr = 0; - _g4b3_var._parameters.h1u = 0.037165; - _g4b3_var._parameters.h2u = 0.037165; - _g4b3_var._parameters.linhu = 0.0; - _g4b3_var._parameters.louthu = 0; - _g4b3_var._parameters.h1d = 0.037165; - _g4b3_var._parameters.h2d = 0.037165; - _g4b3_var._parameters.linhd = 0.0; - _g4b3_var._parameters.louthd = 0; - _g4b3_var._parameters.l = 2.1380000000000017; - _g4b3_var._parameters.R0 = 0.99; - _g4b3_var._parameters.Qcxl = 0.0217; - _g4b3_var._parameters.Qcxr = 0.0217; - _g4b3_var._parameters.Qcyu = 0.023; - _g4b3_var._parameters.Qcyd = 0.023; - _g4b3_var._parameters.alphaxl = 2.5; - _g4b3_var._parameters.alphaxr = 2.5; - _g4b3_var._parameters.alphayu = 1.8; - _g4b3_var._parameters.alphayd = 1.8; - _g4b3_var._parameters.Wxr = 0.015; - _g4b3_var._parameters.Wxl = 0.015; - _g4b3_var._parameters.Wyu = 0.015; - _g4b3_var._parameters.Wyd = 0.015; - _g4b3_var._parameters.mxr = 3.5; - _g4b3_var._parameters.mxl = 3.5; - _g4b3_var._parameters.myu = 2; - _g4b3_var._parameters.myd = 2; - _g4b3_var._parameters.QcxrOW = 0.0217; - _g4b3_var._parameters.QcxlOW = 0.0217; - _g4b3_var._parameters.QcyuOW = 0.0217; - _g4b3_var._parameters.QcydOW = 0.0217; - _g4b3_var._parameters.alphaxlOW = 6.07; - _g4b3_var._parameters.alphaxrOW = 6.07; - _g4b3_var._parameters.alphayuOW = 6.07; - _g4b3_var._parameters.alphaydOW = 6.07; - _g4b3_var._parameters.WxrOW = 0.003; - _g4b3_var._parameters.WxlOW = 0.003; - _g4b3_var._parameters.WyuOW = 0.003; - _g4b3_var._parameters.WydOW = 0.003; - _g4b3_var._parameters.mxrOW = 0; - _g4b3_var._parameters.mxlOW = 0; - _g4b3_var._parameters.myuOW = 0; - _g4b3_var._parameters.mydOW = 0; - _g4b3_var._parameters.rwallthick = 0.001; - _g4b3_var._parameters.lwallthick = 0.001; - _g4b3_var._parameters.uwallthick = 0.001; - _g4b3_var._parameters.dwallthick = 0.001; - - - /* component g4b3=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b3_var._rotation_absolute); - rot_transpose(_g4b2_var._rotation_absolute, tr1); - rot_mul(_g4b3_var._rotation_absolute, tr1, _g4b3_var._rotation_relative); - _g4b3_var._rotation_is_identity = rot_test_identity(_g4b3_var._rotation_relative); - tc1 = coords_set( - 0, 0, 26.0366); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4b2_var._position_absolute, _g4b3_var._position_absolute); - _g4b3_var._position_relative = rot_apply(_g4b3_var._rotation_absolute, tc1); - } /* g4b3=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute); - instrument->_position_absolute[51] = _g4b3_var._position_absolute; - instrument->_position_relative[51] = _g4b3_var._position_relative; - _g4b3_var._position_relative_is_zero = coords_test_zero(_g4b3_var._position_relative); - instrument->counter_N[51] = instrument->counter_P[51] = instrument->counter_P2[51] = 0; - instrument->counter_AbsorbProp[51]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0050_g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "l", "0", "2.1380000000000017","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "mxr", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "mxl", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0050_g4b3", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4b3_setpos */ - -/* component g4b4=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4b4_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4b4_setpos] component g4b4=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4b4_var._name, "g4b4", 16384); - stracpy(_g4b4_var._type, "Guide_four_side", 16384); - _g4b4_var._index=52; - int current_setpos_index = 52; - _g4b4_var._parameters.RIreflect[0]='\0'; - _g4b4_var._parameters.LIreflect[0]='\0'; - _g4b4_var._parameters.UIreflect[0]='\0'; - _g4b4_var._parameters.DIreflect[0]='\0'; - _g4b4_var._parameters.ROreflect[0]='\0'; - _g4b4_var._parameters.LOreflect[0]='\0'; - _g4b4_var._parameters.UOreflect[0]='\0'; - _g4b4_var._parameters.DOreflect[0]='\0'; - _g4b4_var._parameters.w1l = 0.04004; - _g4b4_var._parameters.w2l = 0.04004; - _g4b4_var._parameters.linwl = 0; - _g4b4_var._parameters.loutwl = 0; - _g4b4_var._parameters.w1r = 0.04004; - _g4b4_var._parameters.w2r = 0.04004; - _g4b4_var._parameters.linwr = 0.0; - _g4b4_var._parameters.loutwr = 0; - _g4b4_var._parameters.h1u = 0.037165; - _g4b4_var._parameters.h2u = 0.037165; - _g4b4_var._parameters.linhu = 0.0; - _g4b4_var._parameters.louthu = 0; - _g4b4_var._parameters.h1d = 0.037165; - _g4b4_var._parameters.h2d = 0.037165; - _g4b4_var._parameters.linhd = 0.0; - _g4b4_var._parameters.louthd = 0; - _g4b4_var._parameters.l = 1.9997499999999988; - _g4b4_var._parameters.R0 = 0.99; - _g4b4_var._parameters.Qcxl = 0.0217; - _g4b4_var._parameters.Qcxr = 0.0217; - _g4b4_var._parameters.Qcyu = 0.023; - _g4b4_var._parameters.Qcyd = 0.023; - _g4b4_var._parameters.alphaxl = 2.5; - _g4b4_var._parameters.alphaxr = 2.5; - _g4b4_var._parameters.alphayu = 1.8; - _g4b4_var._parameters.alphayd = 1.8; - _g4b4_var._parameters.Wxr = 0.015; - _g4b4_var._parameters.Wxl = 0.015; - _g4b4_var._parameters.Wyu = 0.015; - _g4b4_var._parameters.Wyd = 0.015; - _g4b4_var._parameters.mxr = 3.5; - _g4b4_var._parameters.mxl = 3.5; - _g4b4_var._parameters.myu = 2; - _g4b4_var._parameters.myd = 2; - _g4b4_var._parameters.QcxrOW = 0.0217; - _g4b4_var._parameters.QcxlOW = 0.0217; - _g4b4_var._parameters.QcyuOW = 0.0217; - _g4b4_var._parameters.QcydOW = 0.0217; - _g4b4_var._parameters.alphaxlOW = 6.07; - _g4b4_var._parameters.alphaxrOW = 6.07; - _g4b4_var._parameters.alphayuOW = 6.07; - _g4b4_var._parameters.alphaydOW = 6.07; - _g4b4_var._parameters.WxrOW = 0.003; - _g4b4_var._parameters.WxlOW = 0.003; - _g4b4_var._parameters.WyuOW = 0.003; - _g4b4_var._parameters.WydOW = 0.003; - _g4b4_var._parameters.mxrOW = 0; - _g4b4_var._parameters.mxlOW = 0; - _g4b4_var._parameters.myuOW = 0; - _g4b4_var._parameters.mydOW = 0; - _g4b4_var._parameters.rwallthick = 0.001; - _g4b4_var._parameters.lwallthick = 0.001; - _g4b4_var._parameters.uwallthick = 0.001; - _g4b4_var._parameters.dwallthick = 0.001; - - - /* component g4b4=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b4_var._rotation_absolute); - rot_transpose(_g4b3_var._rotation_absolute, tr1); - rot_mul(_g4b4_var._rotation_absolute, tr1, _g4b4_var._rotation_relative); - _g4b4_var._rotation_is_identity = rot_test_identity(_g4b4_var._rotation_relative); - tc1 = coords_set( - 0, 0, 28.1786); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4b3_var._position_absolute, _g4b4_var._position_absolute); - _g4b4_var._position_relative = rot_apply(_g4b4_var._rotation_absolute, tc1); - } /* g4b4=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute); - instrument->_position_absolute[52] = _g4b4_var._position_absolute; - instrument->_position_relative[52] = _g4b4_var._position_relative; - _g4b4_var._position_relative_is_zero = coords_test_zero(_g4b4_var._position_relative); - instrument->counter_N[52] = instrument->counter_P[52] = instrument->counter_P2[52] = 0; - instrument->counter_AbsorbProp[52]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0051_g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "l", "0", "1.9997499999999988","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "mxr", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "mxl", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0051_g4b4", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4b4_setpos */ - -/* component g4b5=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4b5_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4b5_setpos] component g4b5=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4b5_var._name, "g4b5", 16384); - stracpy(_g4b5_var._type, "Guide_four_side", 16384); - _g4b5_var._index=53; - int current_setpos_index = 53; - _g4b5_var._parameters.RIreflect[0]='\0'; - _g4b5_var._parameters.LIreflect[0]='\0'; - _g4b5_var._parameters.UIreflect[0]='\0'; - _g4b5_var._parameters.DIreflect[0]='\0'; - _g4b5_var._parameters.ROreflect[0]='\0'; - _g4b5_var._parameters.LOreflect[0]='\0'; - _g4b5_var._parameters.UOreflect[0]='\0'; - _g4b5_var._parameters.DOreflect[0]='\0'; - _g4b5_var._parameters.w1l = 0.04004; - _g4b5_var._parameters.w2l = 0.04004; - _g4b5_var._parameters.linwl = 0; - _g4b5_var._parameters.loutwl = 0; - _g4b5_var._parameters.w1r = 0.04004; - _g4b5_var._parameters.w2r = 0.04004; - _g4b5_var._parameters.linwr = 0.0; - _g4b5_var._parameters.loutwr = 0; - _g4b5_var._parameters.h1u = 0.037165; - _g4b5_var._parameters.h2u = 0.037165; - _g4b5_var._parameters.linhu = 0.0; - _g4b5_var._parameters.louthu = 0; - _g4b5_var._parameters.h1d = 0.037165; - _g4b5_var._parameters.h2d = 0.037165; - _g4b5_var._parameters.linhd = 0.0; - _g4b5_var._parameters.louthd = 0; - _g4b5_var._parameters.l = 1.4049499999999995; - _g4b5_var._parameters.R0 = 0.99; - _g4b5_var._parameters.Qcxl = 0.0221; - _g4b5_var._parameters.Qcxr = 0.0221; - _g4b5_var._parameters.Qcyu = 0.023; - _g4b5_var._parameters.Qcyd = 0.023; - _g4b5_var._parameters.alphaxl = 1.75; - _g4b5_var._parameters.alphaxr = 1.75; - _g4b5_var._parameters.alphayu = 1.8; - _g4b5_var._parameters.alphayd = 1.8; - _g4b5_var._parameters.Wxr = 0.015; - _g4b5_var._parameters.Wxl = 0.015; - _g4b5_var._parameters.Wyu = 0.015; - _g4b5_var._parameters.Wyd = 0.015; - _g4b5_var._parameters.mxr = 3; - _g4b5_var._parameters.mxl = 3; - _g4b5_var._parameters.myu = 2; - _g4b5_var._parameters.myd = 2; - _g4b5_var._parameters.QcxrOW = 0.0217; - _g4b5_var._parameters.QcxlOW = 0.0217; - _g4b5_var._parameters.QcyuOW = 0.0217; - _g4b5_var._parameters.QcydOW = 0.0217; - _g4b5_var._parameters.alphaxlOW = 6.07; - _g4b5_var._parameters.alphaxrOW = 6.07; - _g4b5_var._parameters.alphayuOW = 6.07; - _g4b5_var._parameters.alphaydOW = 6.07; - _g4b5_var._parameters.WxrOW = 0.003; - _g4b5_var._parameters.WxlOW = 0.003; - _g4b5_var._parameters.WyuOW = 0.003; - _g4b5_var._parameters.WydOW = 0.003; - _g4b5_var._parameters.mxrOW = 0; - _g4b5_var._parameters.mxlOW = 0; - _g4b5_var._parameters.myuOW = 0; - _g4b5_var._parameters.mydOW = 0; - _g4b5_var._parameters.rwallthick = 0.001; - _g4b5_var._parameters.lwallthick = 0.001; - _g4b5_var._parameters.uwallthick = 0.001; - _g4b5_var._parameters.dwallthick = 0.001; - - - /* component g4b5=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b5_var._rotation_absolute); - rot_transpose(_g4b4_var._rotation_absolute, tr1); - rot_mul(_g4b5_var._rotation_absolute, tr1, _g4b5_var._rotation_relative); - _g4b5_var._rotation_is_identity = rot_test_identity(_g4b5_var._rotation_relative); - tc1 = coords_set( - 0, 0, 30.17885); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4b4_var._position_absolute, _g4b5_var._position_absolute); - _g4b5_var._position_relative = rot_apply(_g4b5_var._rotation_absolute, tc1); - } /* g4b5=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute); - instrument->_position_absolute[53] = _g4b5_var._position_absolute; - instrument->_position_relative[53] = _g4b5_var._position_relative; - _g4b5_var._position_relative_is_zero = coords_test_zero(_g4b5_var._position_relative); - instrument->counter_N[53] = instrument->counter_P[53] = instrument->counter_P2[53] = 0; - instrument->counter_AbsorbProp[53]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0052_g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "l", "0", "1.4049499999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "mxr", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "mxl", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0052_g4b5", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4b5_setpos */ - -/* component g4b6=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g4b6_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g4b6_setpos] component g4b6=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g4b6_var._name, "g4b6", 16384); - stracpy(_g4b6_var._type, "Guide_four_side", 16384); - _g4b6_var._index=54; - int current_setpos_index = 54; - _g4b6_var._parameters.RIreflect[0]='\0'; - _g4b6_var._parameters.LIreflect[0]='\0'; - _g4b6_var._parameters.UIreflect[0]='\0'; - _g4b6_var._parameters.DIreflect[0]='\0'; - _g4b6_var._parameters.ROreflect[0]='\0'; - _g4b6_var._parameters.LOreflect[0]='\0'; - _g4b6_var._parameters.UOreflect[0]='\0'; - _g4b6_var._parameters.DOreflect[0]='\0'; - _g4b6_var._parameters.w1l = 0.04004; - _g4b6_var._parameters.w2l = 0.04004; - _g4b6_var._parameters.linwl = 0; - _g4b6_var._parameters.loutwl = 0; - _g4b6_var._parameters.w1r = 0.04004; - _g4b6_var._parameters.w2r = 0.04004; - _g4b6_var._parameters.linwr = 0.0; - _g4b6_var._parameters.loutwr = 0; - _g4b6_var._parameters.h1u = 0.037165; - _g4b6_var._parameters.h2u = 0.037165; - _g4b6_var._parameters.linhu = 0.0; - _g4b6_var._parameters.louthu = 0; - _g4b6_var._parameters.h1d = 0.037165; - _g4b6_var._parameters.h2d = 0.037165; - _g4b6_var._parameters.linhd = 0.0; - _g4b6_var._parameters.louthd = 0; - _g4b6_var._parameters.l = 0.4106999999999985; - _g4b6_var._parameters.R0 = 0.99; - _g4b6_var._parameters.Qcxl = 0.0221; - _g4b6_var._parameters.Qcxr = 0.0221; - _g4b6_var._parameters.Qcyu = 0.023; - _g4b6_var._parameters.Qcyd = 0.023; - _g4b6_var._parameters.alphaxl = 1.75; - _g4b6_var._parameters.alphaxr = 1.75; - _g4b6_var._parameters.alphayu = 1.8; - _g4b6_var._parameters.alphayd = 1.8; - _g4b6_var._parameters.Wxr = 0.015; - _g4b6_var._parameters.Wxl = 0.015; - _g4b6_var._parameters.Wyu = 0.015; - _g4b6_var._parameters.Wyd = 0.015; - _g4b6_var._parameters.mxr = 3; - _g4b6_var._parameters.mxl = 3; - _g4b6_var._parameters.myu = 2; - _g4b6_var._parameters.myd = 2; - _g4b6_var._parameters.QcxrOW = 0.0217; - _g4b6_var._parameters.QcxlOW = 0.0217; - _g4b6_var._parameters.QcyuOW = 0.0217; - _g4b6_var._parameters.QcydOW = 0.0217; - _g4b6_var._parameters.alphaxlOW = 6.07; - _g4b6_var._parameters.alphaxrOW = 6.07; - _g4b6_var._parameters.alphayuOW = 6.07; - _g4b6_var._parameters.alphaydOW = 6.07; - _g4b6_var._parameters.WxrOW = 0.003; - _g4b6_var._parameters.WxlOW = 0.003; - _g4b6_var._parameters.WyuOW = 0.003; - _g4b6_var._parameters.WydOW = 0.003; - _g4b6_var._parameters.mxrOW = 0; - _g4b6_var._parameters.mxlOW = 0; - _g4b6_var._parameters.myuOW = 0; - _g4b6_var._parameters.mydOW = 0; - _g4b6_var._parameters.rwallthick = 0.001; - _g4b6_var._parameters.lwallthick = 0.001; - _g4b6_var._parameters.uwallthick = 0.001; - _g4b6_var._parameters.dwallthick = 0.001; - - - /* component g4b6=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b6_var._rotation_absolute); - rot_transpose(_g4b5_var._rotation_absolute, tr1); - rot_mul(_g4b6_var._rotation_absolute, tr1, _g4b6_var._rotation_relative); - _g4b6_var._rotation_is_identity = rot_test_identity(_g4b6_var._rotation_relative); - tc1 = coords_set( - 0, 0, 31.5893); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g4b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4b5_var._position_absolute, _g4b6_var._position_absolute); - _g4b6_var._position_relative = rot_apply(_g4b6_var._rotation_absolute, tc1); - } /* g4b6=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute); - instrument->_position_absolute[54] = _g4b6_var._position_absolute; - instrument->_position_relative[54] = _g4b6_var._position_relative; - _g4b6_var._position_relative_is_zero = coords_test_zero(_g4b6_var._position_relative); - instrument->counter_N[54] = instrument->counter_P[54] = instrument->counter_P2[54] = 0; - instrument->counter_AbsorbProp[54]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0053_g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "h2u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "linhu", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "louthu", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "h2d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "linhd", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "louthd", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "l", "0", "0.4106999999999985","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "mxr", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "mxl", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0053_g4b6", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g4b6_setpos */ - -/* component g5a1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g5a1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g5a1_setpos] component g5a1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g5a1_var._name, "g5a1", 16384); - stracpy(_g5a1_var._type, "Guide_four_side", 16384); - _g5a1_var._index=55; - int current_setpos_index = 55; - _g5a1_var._parameters.RIreflect[0]='\0'; - _g5a1_var._parameters.LIreflect[0]='\0'; - _g5a1_var._parameters.UIreflect[0]='\0'; - _g5a1_var._parameters.DIreflect[0]='\0'; - _g5a1_var._parameters.ROreflect[0]='\0'; - _g5a1_var._parameters.LOreflect[0]='\0'; - _g5a1_var._parameters.UOreflect[0]='\0'; - _g5a1_var._parameters.DOreflect[0]='\0'; - _g5a1_var._parameters.w1l = 0.04004; - _g5a1_var._parameters.w2l = 0.04004; - _g5a1_var._parameters.linwl = 0; - _g5a1_var._parameters.loutwl = 0; - _g5a1_var._parameters.w1r = 0.04004; - _g5a1_var._parameters.w2r = 0.04004; - _g5a1_var._parameters.linwr = 0.0; - _g5a1_var._parameters.loutwr = 0; - _g5a1_var._parameters.h1u = 0.037165; - _g5a1_var._parameters.h2u = 0.002; - _g5a1_var._parameters.linhu = 18.0; - _g5a1_var._parameters.louthu = 17.005499999999998; - _g5a1_var._parameters.h1d = 0.037165; - _g5a1_var._parameters.h2d = 0.002; - _g5a1_var._parameters.linhd = 18.0; - _g5a1_var._parameters.louthd = 17.005499999999998; - _g5a1_var._parameters.l = 0.9945000000000022; - _g5a1_var._parameters.R0 = 0.99; - _g5a1_var._parameters.Qcxl = 0.023; - _g5a1_var._parameters.Qcxr = 0.023; - _g5a1_var._parameters.Qcyu = 0.023; - _g5a1_var._parameters.Qcyd = 0.023; - _g5a1_var._parameters.alphaxl = 1.8; - _g5a1_var._parameters.alphaxr = 1.8; - _g5a1_var._parameters.alphayu = 1.8; - _g5a1_var._parameters.alphayd = 1.8; - _g5a1_var._parameters.Wxr = 0.015; - _g5a1_var._parameters.Wxl = 0.015; - _g5a1_var._parameters.Wyu = 0.015; - _g5a1_var._parameters.Wyd = 0.015; - _g5a1_var._parameters.mxr = 2; - _g5a1_var._parameters.mxl = 2; - _g5a1_var._parameters.myu = 2; - _g5a1_var._parameters.myd = 2; - _g5a1_var._parameters.QcxrOW = 0.0217; - _g5a1_var._parameters.QcxlOW = 0.0217; - _g5a1_var._parameters.QcyuOW = 0.0217; - _g5a1_var._parameters.QcydOW = 0.0217; - _g5a1_var._parameters.alphaxlOW = 6.07; - _g5a1_var._parameters.alphaxrOW = 6.07; - _g5a1_var._parameters.alphayuOW = 6.07; - _g5a1_var._parameters.alphaydOW = 6.07; - _g5a1_var._parameters.WxrOW = 0.003; - _g5a1_var._parameters.WxlOW = 0.003; - _g5a1_var._parameters.WyuOW = 0.003; - _g5a1_var._parameters.WydOW = 0.003; - _g5a1_var._parameters.mxrOW = 0; - _g5a1_var._parameters.mxlOW = 0; - _g5a1_var._parameters.myuOW = 0; - _g5a1_var._parameters.mydOW = 0; - _g5a1_var._parameters.rwallthick = 0.001; - _g5a1_var._parameters.lwallthick = 0.001; - _g5a1_var._parameters.uwallthick = 0.001; - _g5a1_var._parameters.dwallthick = 0.001; - - - /* component g5a1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5a1_var._rotation_absolute); - rot_transpose(_g4b6_var._rotation_absolute, tr1); - rot_mul(_g5a1_var._rotation_absolute, tr1, _g5a1_var._rotation_relative); - _g5a1_var._rotation_is_identity = rot_test_identity(_g5a1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 32.0); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g5a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g4b6_var._position_absolute, _g5a1_var._position_absolute); - _g5a1_var._position_relative = rot_apply(_g5a1_var._rotation_absolute, tc1); - } /* g5a1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute); - instrument->_position_absolute[55] = _g5a1_var._position_absolute; - instrument->_position_relative[55] = _g5a1_var._position_relative; - _g5a1_var._position_relative_is_zero = coords_test_zero(_g5a1_var._position_relative); - instrument->counter_N[55] = instrument->counter_P[55] = instrument->counter_P2[55] = 0; - instrument->counter_AbsorbProp[55]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0054_g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "h1u", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "linhu", "0.0", "18.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "louthu", "0", "17.005499999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "h1d", "0.002", "0.037165","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "linhd", "0.0", "18.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "louthd", "0", "17.005499999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "l", "0", "0.9945000000000022","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcxl", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcxr", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxl", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxr", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "mxr", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "mxl", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0054_g5a1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g5a1_setpos */ - -/* component fo5_position=Arm() SETTING, POSITION/ROTATION */ -int _fo5_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo5_position_setpos] component fo5_position=Arm() SETTING [Arm:0]"); - stracpy(_fo5_position_var._name, "fo5_position", 16384); - stracpy(_fo5_position_var._type, "Arm", 16384); - _fo5_position_var._index=56; - int current_setpos_index = 56; - /* component fo5_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo5_position_var._rotation_absolute); - rot_transpose(_g5a1_var._rotation_absolute, tr1); - rot_mul(_fo5_position_var._rotation_absolute, tr1, _fo5_position_var._rotation_relative); - _fo5_position_var._rotation_is_identity = rot_test_identity(_fo5_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 33.005); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo5_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g5a1_var._position_absolute, _fo5_position_var._position_absolute); - _fo5_position_var._position_relative = rot_apply(_fo5_position_var._rotation_absolute, tc1); - } /* fo5_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute); - instrument->_position_absolute[56] = _fo5_position_var._position_absolute; - instrument->_position_relative[56] = _fo5_position_var._position_relative; - _fo5_position_var._position_relative_is_zero = coords_test_zero(_fo5_position_var._position_relative); - instrument->counter_N[56] = instrument->counter_P[56] = instrument->counter_P2[56] = 0; - instrument->counter_AbsorbProp[56]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0055_fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo5_position_setpos */ - -/* component fo_chopper_5=MultiDiskChopper() SETTING, POSITION/ROTATION */ -int _fo_chopper_5_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_fo_chopper_5_setpos] component fo_chopper_5=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); - stracpy(_fo_chopper_5_var._name, "fo_chopper_5", 16384); - stracpy(_fo_chopper_5_var._type, "MultiDiskChopper", 16384); - _fo_chopper_5_var._index=57; - int current_setpos_index = 57; - if("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" && strlen("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002")) - stracpy(_fo_chopper_5_var._parameters.slit_center, "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" ? "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" : "", 16384); - else - _fo_chopper_5_var._parameters.slit_center[0]='\0'; - if("50.81;48.55;45.49;41.32;37.45;37.74" && strlen("50.81;48.55;45.49;41.32;37.45;37.74")) - stracpy(_fo_chopper_5_var._parameters.slit_width, "50.81;48.55;45.49;41.32;37.45;37.74" ? "50.81;48.55;45.49;41.32;37.45;37.74" : "", 16384); - else - _fo_chopper_5_var._parameters.slit_width[0]='\0'; - _fo_chopper_5_var._parameters.nslits = 6; - _fo_chopper_5_var._parameters.delta_y = -0.7075; - _fo_chopper_5_var._parameters.nu = -14.0; - _fo_chopper_5_var._parameters.nrev = 0; - _fo_chopper_5_var._parameters.ratio = 1; - _fo_chopper_5_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_5; - _fo_chopper_5_var._parameters.delay = 0; - _fo_chopper_5_var._parameters.isfirst = 0; - _fo_chopper_5_var._parameters.phase = fo5_phase; - _fo_chopper_5_var._parameters.radius = 0.75; - _fo_chopper_5_var._parameters.equal = 0; - _fo_chopper_5_var._parameters.abs_out = 0; - _fo_chopper_5_var._parameters.verbose = 0; - - - /* component fo_chopper_5=MultiDiskChopper() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); - rot_mul(tr1, _fo5_position_var._rotation_absolute, _fo_chopper_5_var._rotation_absolute); - rot_transpose(_g5a1_var._rotation_absolute, tr1); - rot_mul(_fo_chopper_5_var._rotation_absolute, tr1, _fo_chopper_5_var._rotation_relative); - _fo_chopper_5_var._rotation_is_identity = rot_test_identity(_fo_chopper_5_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_fo5_position_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _fo_chopper_5_var._position_absolute = coords_add(_fo5_position_var._position_absolute, tc2); - tc1 = coords_sub(_g5a1_var._position_absolute, _fo_chopper_5_var._position_absolute); - _fo_chopper_5_var._position_relative = rot_apply(_fo_chopper_5_var._rotation_absolute, tc1); - } /* fo_chopper_5=MultiDiskChopper() AT ROTATED */ - DEBUG_COMPONENT("fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute); - instrument->_position_absolute[57] = _fo_chopper_5_var._position_absolute; - instrument->_position_relative[57] = _fo_chopper_5_var._position_relative; - _fo_chopper_5_var._position_relative_is_zero = coords_test_zero(_fo_chopper_5_var._position_relative); - instrument->counter_N[57] = instrument->counter_P[57] = instrument->counter_P2[57] = 0; - instrument->counter_AbsorbProp[57]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0056_fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute, "MultiDiskChopper"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "slit_center", "0 180", "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", "char*"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "slit_width", "10 20", "50.81;48.55;45.49;41.32;37.45;37.74", "char*"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nslits", "2", "6","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "delta_y", "-0.3", "-0.7075","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nu", "0", "-14.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "nrev", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "ratio", "1", "1","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_5","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "delay", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "isfirst", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "phase", "0", "fo5_phase","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "radius", "0.375", "0.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "equal", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "abs_out", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0056_fo_chopper_5", "verbose", "0", "0","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _fo_chopper_5_setpos */ - -/* component g5b1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g5b1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g5b1_setpos] component g5b1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g5b1_var._name, "g5b1", 16384); - stracpy(_g5b1_var._type, "Guide_four_side", 16384); - _g5b1_var._index=58; - int current_setpos_index = 58; - _g5b1_var._parameters.RIreflect[0]='\0'; - _g5b1_var._parameters.LIreflect[0]='\0'; - _g5b1_var._parameters.UIreflect[0]='\0'; - _g5b1_var._parameters.DIreflect[0]='\0'; - _g5b1_var._parameters.ROreflect[0]='\0'; - _g5b1_var._parameters.LOreflect[0]='\0'; - _g5b1_var._parameters.UOreflect[0]='\0'; - _g5b1_var._parameters.DOreflect[0]='\0'; - _g5b1_var._parameters.w1l = 0.04004; - _g5b1_var._parameters.w2l = 0.04004; - _g5b1_var._parameters.linwl = 0; - _g5b1_var._parameters.loutwl = 0; - _g5b1_var._parameters.w1r = 0.04004; - _g5b1_var._parameters.w2r = 0.04004; - _g5b1_var._parameters.linwr = 0.0; - _g5b1_var._parameters.loutwr = 0; - _g5b1_var._parameters.h1u = 0.037105; - _g5b1_var._parameters.h2u = 0.002; - _g5b1_var._parameters.linhu = 19.005499999999998; - _g5b1_var._parameters.louthu = 14.994750000000003; - _g5b1_var._parameters.h1d = 0.037105; - _g5b1_var._parameters.h2d = 0.002; - _g5b1_var._parameters.linhd = 19.005499999999998; - _g5b1_var._parameters.louthd = 14.994750000000003; - _g5b1_var._parameters.l = 1.9997499999999988; - _g5b1_var._parameters.R0 = 0.99; - _g5b1_var._parameters.Qcxl = 0.023; - _g5b1_var._parameters.Qcxr = 0.023; - _g5b1_var._parameters.Qcyu = 0.023; - _g5b1_var._parameters.Qcyd = 0.023; - _g5b1_var._parameters.alphaxl = 1.8; - _g5b1_var._parameters.alphaxr = 1.8; - _g5b1_var._parameters.alphayu = 1.8; - _g5b1_var._parameters.alphayd = 1.8; - _g5b1_var._parameters.Wxr = 0.015; - _g5b1_var._parameters.Wxl = 0.015; - _g5b1_var._parameters.Wyu = 0.015; - _g5b1_var._parameters.Wyd = 0.015; - _g5b1_var._parameters.mxr = 2; - _g5b1_var._parameters.mxl = 2; - _g5b1_var._parameters.myu = 2; - _g5b1_var._parameters.myd = 2; - _g5b1_var._parameters.QcxrOW = 0.0217; - _g5b1_var._parameters.QcxlOW = 0.0217; - _g5b1_var._parameters.QcyuOW = 0.0217; - _g5b1_var._parameters.QcydOW = 0.0217; - _g5b1_var._parameters.alphaxlOW = 6.07; - _g5b1_var._parameters.alphaxrOW = 6.07; - _g5b1_var._parameters.alphayuOW = 6.07; - _g5b1_var._parameters.alphaydOW = 6.07; - _g5b1_var._parameters.WxrOW = 0.003; - _g5b1_var._parameters.WxlOW = 0.003; - _g5b1_var._parameters.WyuOW = 0.003; - _g5b1_var._parameters.WydOW = 0.003; - _g5b1_var._parameters.mxrOW = 0; - _g5b1_var._parameters.mxlOW = 0; - _g5b1_var._parameters.myuOW = 0; - _g5b1_var._parameters.mydOW = 0; - _g5b1_var._parameters.rwallthick = 0.001; - _g5b1_var._parameters.lwallthick = 0.001; - _g5b1_var._parameters.uwallthick = 0.001; - _g5b1_var._parameters.dwallthick = 0.001; - - - /* component g5b1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b1_var._rotation_absolute); - rot_transpose(_fo_chopper_5_var._rotation_absolute, tr1); - rot_mul(_g5b1_var._rotation_absolute, tr1, _g5b1_var._rotation_relative); - _g5b1_var._rotation_is_identity = rot_test_identity(_g5b1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 33.015499999999996); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g5b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_fo_chopper_5_var._position_absolute, _g5b1_var._position_absolute); - _g5b1_var._position_relative = rot_apply(_g5b1_var._rotation_absolute, tc1); - } /* g5b1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute); - instrument->_position_absolute[58] = _g5b1_var._position_absolute; - instrument->_position_relative[58] = _g5b1_var._position_relative; - _g5b1_var._position_relative_is_zero = coords_test_zero(_g5b1_var._position_relative); - instrument->counter_N[58] = instrument->counter_P[58] = instrument->counter_P2[58] = 0; - instrument->counter_AbsorbProp[58]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0057_g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "h1u", "0.002", "0.037105","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "linhu", "0.0", "19.005499999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "louthu", "0", "14.994750000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "h1d", "0.002", "0.037105","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "linhd", "0.0", "19.005499999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "louthd", "0", "14.994750000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "l", "0", "1.9997499999999988","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcxl", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcxr", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxl", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxr", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "mxr", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "mxl", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0057_g5b1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g5b1_setpos */ - -/* component g5b2=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g5b2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g5b2_setpos] component g5b2=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g5b2_var._name, "g5b2", 16384); - stracpy(_g5b2_var._type, "Guide_four_side", 16384); - _g5b2_var._index=59; - int current_setpos_index = 59; - _g5b2_var._parameters.RIreflect[0]='\0'; - _g5b2_var._parameters.LIreflect[0]='\0'; - _g5b2_var._parameters.UIreflect[0]='\0'; - _g5b2_var._parameters.DIreflect[0]='\0'; - _g5b2_var._parameters.ROreflect[0]='\0'; - _g5b2_var._parameters.LOreflect[0]='\0'; - _g5b2_var._parameters.UOreflect[0]='\0'; - _g5b2_var._parameters.DOreflect[0]='\0'; - _g5b2_var._parameters.w1l = 0.04004; - _g5b2_var._parameters.w2l = 0.04004; - _g5b2_var._parameters.linwl = 0; - _g5b2_var._parameters.loutwl = 0; - _g5b2_var._parameters.w1r = 0.04004; - _g5b2_var._parameters.w2r = 0.04004; - _g5b2_var._parameters.linwr = 0.0; - _g5b2_var._parameters.loutwr = 0; - _g5b2_var._parameters.h1u = 0.036645; - _g5b2_var._parameters.h2u = 0.002; - _g5b2_var._parameters.linhu = 21.00575; - _g5b2_var._parameters.louthu = 12.994950000000003; - _g5b2_var._parameters.h1d = 0.036645; - _g5b2_var._parameters.h2d = 0.002; - _g5b2_var._parameters.linhd = 21.00575; - _g5b2_var._parameters.louthd = 12.994950000000003; - _g5b2_var._parameters.l = 1.999299999999998; - _g5b2_var._parameters.R0 = 0.99; - _g5b2_var._parameters.Qcxl = 0.0221; - _g5b2_var._parameters.Qcxr = 0.0221; - _g5b2_var._parameters.Qcyu = 0.023; - _g5b2_var._parameters.Qcyd = 0.023; - _g5b2_var._parameters.alphaxl = 1.75; - _g5b2_var._parameters.alphaxr = 1.75; - _g5b2_var._parameters.alphayu = 1.8; - _g5b2_var._parameters.alphayd = 1.8; - _g5b2_var._parameters.Wxr = 0.015; - _g5b2_var._parameters.Wxl = 0.015; - _g5b2_var._parameters.Wyu = 0.015; - _g5b2_var._parameters.Wyd = 0.015; - _g5b2_var._parameters.mxr = 2.5; - _g5b2_var._parameters.mxl = 2.5; - _g5b2_var._parameters.myu = 2; - _g5b2_var._parameters.myd = 2; - _g5b2_var._parameters.QcxrOW = 0.0217; - _g5b2_var._parameters.QcxlOW = 0.0217; - _g5b2_var._parameters.QcyuOW = 0.0217; - _g5b2_var._parameters.QcydOW = 0.0217; - _g5b2_var._parameters.alphaxlOW = 6.07; - _g5b2_var._parameters.alphaxrOW = 6.07; - _g5b2_var._parameters.alphayuOW = 6.07; - _g5b2_var._parameters.alphaydOW = 6.07; - _g5b2_var._parameters.WxrOW = 0.003; - _g5b2_var._parameters.WxlOW = 0.003; - _g5b2_var._parameters.WyuOW = 0.003; - _g5b2_var._parameters.WydOW = 0.003; - _g5b2_var._parameters.mxrOW = 0; - _g5b2_var._parameters.mxlOW = 0; - _g5b2_var._parameters.myuOW = 0; - _g5b2_var._parameters.mydOW = 0; - _g5b2_var._parameters.rwallthick = 0.001; - _g5b2_var._parameters.lwallthick = 0.001; - _g5b2_var._parameters.uwallthick = 0.001; - _g5b2_var._parameters.dwallthick = 0.001; - - - /* component g5b2=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b2_var._rotation_absolute); - rot_transpose(_g5b1_var._rotation_absolute, tr1); - rot_mul(_g5b2_var._rotation_absolute, tr1, _g5b2_var._rotation_relative); - _g5b2_var._rotation_is_identity = rot_test_identity(_g5b2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 35.01575); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g5b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g5b1_var._position_absolute, _g5b2_var._position_absolute); - _g5b2_var._position_relative = rot_apply(_g5b2_var._rotation_absolute, tc1); - } /* g5b2=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute); - instrument->_position_absolute[59] = _g5b2_var._position_absolute; - instrument->_position_relative[59] = _g5b2_var._position_relative; - _g5b2_var._position_relative_is_zero = coords_test_zero(_g5b2_var._position_relative); - instrument->counter_N[59] = instrument->counter_P[59] = instrument->counter_P2[59] = 0; - instrument->counter_AbsorbProp[59]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0058_g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "h1u", "0.002", "0.036645","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "linhu", "0.0", "21.00575","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "louthu", "0", "12.994950000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "h1d", "0.002", "0.036645","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "linhd", "0.0", "21.00575","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "louthd", "0", "12.994950000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "l", "0", "1.999299999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "mxr", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "mxl", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0058_g5b2", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g5b2_setpos */ - -/* component g5b3=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g5b3_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g5b3_setpos] component g5b3=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g5b3_var._name, "g5b3", 16384); - stracpy(_g5b3_var._type, "Guide_four_side", 16384); - _g5b3_var._index=60; - int current_setpos_index = 60; - _g5b3_var._parameters.RIreflect[0]='\0'; - _g5b3_var._parameters.LIreflect[0]='\0'; - _g5b3_var._parameters.UIreflect[0]='\0'; - _g5b3_var._parameters.DIreflect[0]='\0'; - _g5b3_var._parameters.ROreflect[0]='\0'; - _g5b3_var._parameters.LOreflect[0]='\0'; - _g5b3_var._parameters.UOreflect[0]='\0'; - _g5b3_var._parameters.DOreflect[0]='\0'; - _g5b3_var._parameters.w1l = 0.04004; - _g5b3_var._parameters.w2l = 0.04004; - _g5b3_var._parameters.linwl = 0; - _g5b3_var._parameters.loutwl = 0; - _g5b3_var._parameters.w1r = 0.04004; - _g5b3_var._parameters.w2r = 0.04004; - _g5b3_var._parameters.linwr = 0.0; - _g5b3_var._parameters.loutwr = 0; - _g5b3_var._parameters.h1u = 0.035695; - _g5b3_var._parameters.h2u = 0.002; - _g5b3_var._parameters.linhu = 23.009500000000003; - _g5b3_var._parameters.louthu = 10.990749999999998; - _g5b3_var._parameters.h1d = 0.035695; - _g5b3_var._parameters.h2d = 0.002; - _g5b3_var._parameters.linhd = 23.009500000000003; - _g5b3_var._parameters.louthd = 10.990749999999998; - _g5b3_var._parameters.l = 1.9997499999999988; - _g5b3_var._parameters.R0 = 0.99; - _g5b3_var._parameters.Qcxl = 0.0221; - _g5b3_var._parameters.Qcxr = 0.0221; - _g5b3_var._parameters.Qcyu = 0.023; - _g5b3_var._parameters.Qcyd = 0.023; - _g5b3_var._parameters.alphaxl = 1.75; - _g5b3_var._parameters.alphaxr = 1.75; - _g5b3_var._parameters.alphayu = 1.8; - _g5b3_var._parameters.alphayd = 1.8; - _g5b3_var._parameters.Wxr = 0.015; - _g5b3_var._parameters.Wxl = 0.015; - _g5b3_var._parameters.Wyu = 0.015; - _g5b3_var._parameters.Wyd = 0.015; - _g5b3_var._parameters.mxr = 2.5; - _g5b3_var._parameters.mxl = 2.5; - _g5b3_var._parameters.myu = 2; - _g5b3_var._parameters.myd = 2; - _g5b3_var._parameters.QcxrOW = 0.0217; - _g5b3_var._parameters.QcxlOW = 0.0217; - _g5b3_var._parameters.QcyuOW = 0.0217; - _g5b3_var._parameters.QcydOW = 0.0217; - _g5b3_var._parameters.alphaxlOW = 6.07; - _g5b3_var._parameters.alphaxrOW = 6.07; - _g5b3_var._parameters.alphayuOW = 6.07; - _g5b3_var._parameters.alphaydOW = 6.07; - _g5b3_var._parameters.WxrOW = 0.003; - _g5b3_var._parameters.WxlOW = 0.003; - _g5b3_var._parameters.WyuOW = 0.003; - _g5b3_var._parameters.WydOW = 0.003; - _g5b3_var._parameters.mxrOW = 0; - _g5b3_var._parameters.mxlOW = 0; - _g5b3_var._parameters.myuOW = 0; - _g5b3_var._parameters.mydOW = 0; - _g5b3_var._parameters.rwallthick = 0.001; - _g5b3_var._parameters.lwallthick = 0.001; - _g5b3_var._parameters.uwallthick = 0.001; - _g5b3_var._parameters.dwallthick = 0.001; - - - /* component g5b3=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b3_var._rotation_absolute); - rot_transpose(_g5b2_var._rotation_absolute, tr1); - rot_mul(_g5b3_var._rotation_absolute, tr1, _g5b3_var._rotation_relative); - _g5b3_var._rotation_is_identity = rot_test_identity(_g5b3_var._rotation_relative); - tc1 = coords_set( - 0, 0, 37.0195); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g5b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g5b2_var._position_absolute, _g5b3_var._position_absolute); - _g5b3_var._position_relative = rot_apply(_g5b3_var._rotation_absolute, tc1); - } /* g5b3=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute); - instrument->_position_absolute[60] = _g5b3_var._position_absolute; - instrument->_position_relative[60] = _g5b3_var._position_relative; - _g5b3_var._position_relative_is_zero = coords_test_zero(_g5b3_var._position_relative); - instrument->counter_N[60] = instrument->counter_P[60] = instrument->counter_P2[60] = 0; - instrument->counter_AbsorbProp[60]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0059_g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "h1u", "0.002", "0.035695","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "linhu", "0.0", "23.009500000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "louthu", "0", "10.990749999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "h1d", "0.002", "0.035695","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "linhd", "0.0", "23.009500000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "louthd", "0", "10.990749999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "l", "0", "1.9997499999999988","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "mxr", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "mxl", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0059_g5b3", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g5b3_setpos */ - -/* component g5b4=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g5b4_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g5b4_setpos] component g5b4=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g5b4_var._name, "g5b4", 16384); - stracpy(_g5b4_var._type, "Guide_four_side", 16384); - _g5b4_var._index=61; - int current_setpos_index = 61; - _g5b4_var._parameters.RIreflect[0]='\0'; - _g5b4_var._parameters.LIreflect[0]='\0'; - _g5b4_var._parameters.UIreflect[0]='\0'; - _g5b4_var._parameters.DIreflect[0]='\0'; - _g5b4_var._parameters.ROreflect[0]='\0'; - _g5b4_var._parameters.LOreflect[0]='\0'; - _g5b4_var._parameters.UOreflect[0]='\0'; - _g5b4_var._parameters.DOreflect[0]='\0'; - _g5b4_var._parameters.w1l = 0.04004; - _g5b4_var._parameters.w2l = 0.04004; - _g5b4_var._parameters.linwl = 0; - _g5b4_var._parameters.loutwl = 0; - _g5b4_var._parameters.w1r = 0.04004; - _g5b4_var._parameters.w2r = 0.04004; - _g5b4_var._parameters.linwr = 0.0; - _g5b4_var._parameters.loutwr = 0; - _g5b4_var._parameters.h1u = 0.03423; - _g5b4_var._parameters.h2u = 0.002; - _g5b4_var._parameters.linhu = 25.009749999999997; - _g5b4_var._parameters.louthu = 8.990499999999997; - _g5b4_var._parameters.h1d = 0.03423; - _g5b4_var._parameters.h2d = 0.002; - _g5b4_var._parameters.linhd = 25.009749999999997; - _g5b4_var._parameters.louthd = 8.990499999999997; - _g5b4_var._parameters.l = 1.999750000000006; - _g5b4_var._parameters.R0 = 0.99; - _g5b4_var._parameters.Qcxl = 0.0221; - _g5b4_var._parameters.Qcxr = 0.0221; - _g5b4_var._parameters.Qcyu = 0.023; - _g5b4_var._parameters.Qcyd = 0.023; - _g5b4_var._parameters.alphaxl = 1.75; - _g5b4_var._parameters.alphaxr = 1.75; - _g5b4_var._parameters.alphayu = 1.8; - _g5b4_var._parameters.alphayd = 1.8; - _g5b4_var._parameters.Wxr = 0.015; - _g5b4_var._parameters.Wxl = 0.015; - _g5b4_var._parameters.Wyu = 0.015; - _g5b4_var._parameters.Wyd = 0.015; - _g5b4_var._parameters.mxr = 3.0; - _g5b4_var._parameters.mxl = 3.0; - _g5b4_var._parameters.myu = 2; - _g5b4_var._parameters.myd = 2; - _g5b4_var._parameters.QcxrOW = 0.0217; - _g5b4_var._parameters.QcxlOW = 0.0217; - _g5b4_var._parameters.QcyuOW = 0.0217; - _g5b4_var._parameters.QcydOW = 0.0217; - _g5b4_var._parameters.alphaxlOW = 6.07; - _g5b4_var._parameters.alphaxrOW = 6.07; - _g5b4_var._parameters.alphayuOW = 6.07; - _g5b4_var._parameters.alphaydOW = 6.07; - _g5b4_var._parameters.WxrOW = 0.003; - _g5b4_var._parameters.WxlOW = 0.003; - _g5b4_var._parameters.WyuOW = 0.003; - _g5b4_var._parameters.WydOW = 0.003; - _g5b4_var._parameters.mxrOW = 0; - _g5b4_var._parameters.mxlOW = 0; - _g5b4_var._parameters.myuOW = 0; - _g5b4_var._parameters.mydOW = 0; - _g5b4_var._parameters.rwallthick = 0.001; - _g5b4_var._parameters.lwallthick = 0.001; - _g5b4_var._parameters.uwallthick = 0.001; - _g5b4_var._parameters.dwallthick = 0.001; - - - /* component g5b4=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b4_var._rotation_absolute); - rot_transpose(_g5b3_var._rotation_absolute, tr1); - rot_mul(_g5b4_var._rotation_absolute, tr1, _g5b4_var._rotation_relative); - _g5b4_var._rotation_is_identity = rot_test_identity(_g5b4_var._rotation_relative); - tc1 = coords_set( - 0, 0, 39.019749999999995); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g5b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g5b3_var._position_absolute, _g5b4_var._position_absolute); - _g5b4_var._position_relative = rot_apply(_g5b4_var._rotation_absolute, tc1); - } /* g5b4=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute); - instrument->_position_absolute[61] = _g5b4_var._position_absolute; - instrument->_position_relative[61] = _g5b4_var._position_relative; - _g5b4_var._position_relative_is_zero = coords_test_zero(_g5b4_var._position_relative); - instrument->counter_N[61] = instrument->counter_P[61] = instrument->counter_P2[61] = 0; - instrument->counter_AbsorbProp[61]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0060_g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "h1u", "0.002", "0.03423","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "linhu", "0.0", "25.009749999999997","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "louthu", "0", "8.990499999999997","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "h1d", "0.002", "0.03423","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "linhd", "0.0", "25.009749999999997","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "louthd", "0", "8.990499999999997","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "l", "0", "1.999750000000006","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcyu", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "Qcyd", "0.0217", "0.023","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayu", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayd", "6.07", "1.8","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "mxr", "3.6", "3.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "mxl", "3.6", "3.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "myu", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "myd", "3.6", "2","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0060_g5b4", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g5b4_setpos */ - -/* component g5b5=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g5b5_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g5b5_setpos] component g5b5=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g5b5_var._name, "g5b5", 16384); - stracpy(_g5b5_var._type, "Guide_four_side", 16384); - _g5b5_var._index=62; - int current_setpos_index = 62; - _g5b5_var._parameters.RIreflect[0]='\0'; - _g5b5_var._parameters.LIreflect[0]='\0'; - _g5b5_var._parameters.UIreflect[0]='\0'; - _g5b5_var._parameters.DIreflect[0]='\0'; - _g5b5_var._parameters.ROreflect[0]='\0'; - _g5b5_var._parameters.LOreflect[0]='\0'; - _g5b5_var._parameters.UOreflect[0]='\0'; - _g5b5_var._parameters.DOreflect[0]='\0'; - _g5b5_var._parameters.w1l = 0.04004; - _g5b5_var._parameters.w2l = 0.04004; - _g5b5_var._parameters.linwl = 0; - _g5b5_var._parameters.loutwl = 0; - _g5b5_var._parameters.w1r = 0.04004; - _g5b5_var._parameters.w2r = 0.04004; - _g5b5_var._parameters.linwr = 0.0; - _g5b5_var._parameters.loutwr = 0; - _g5b5_var._parameters.h1u = 0.03217; - _g5b5_var._parameters.h2u = 0.002; - _g5b5_var._parameters.linhu = 27.0135; - _g5b5_var._parameters.louthu = 6.986750000000001; - _g5b5_var._parameters.h1d = 0.03217; - _g5b5_var._parameters.h2d = 0.002; - _g5b5_var._parameters.linhd = 27.0135; - _g5b5_var._parameters.louthd = 6.986750000000001; - _g5b5_var._parameters.l = 1.9997499999999988; - _g5b5_var._parameters.R0 = 0.99; - _g5b5_var._parameters.Qcxl = 0.0221; - _g5b5_var._parameters.Qcxr = 0.0221; - _g5b5_var._parameters.Qcyu = 0.0221; - _g5b5_var._parameters.Qcyd = 0.0221; - _g5b5_var._parameters.alphaxl = 1.75; - _g5b5_var._parameters.alphaxr = 1.75; - _g5b5_var._parameters.alphayu = 1.75; - _g5b5_var._parameters.alphayd = 1.75; - _g5b5_var._parameters.Wxr = 0.015; - _g5b5_var._parameters.Wxl = 0.015; - _g5b5_var._parameters.Wyu = 0.015; - _g5b5_var._parameters.Wyd = 0.015; - _g5b5_var._parameters.mxr = 3.0; - _g5b5_var._parameters.mxl = 3.0; - _g5b5_var._parameters.myu = 2.5; - _g5b5_var._parameters.myd = 2.5; - _g5b5_var._parameters.QcxrOW = 0.0217; - _g5b5_var._parameters.QcxlOW = 0.0217; - _g5b5_var._parameters.QcyuOW = 0.0217; - _g5b5_var._parameters.QcydOW = 0.0217; - _g5b5_var._parameters.alphaxlOW = 6.07; - _g5b5_var._parameters.alphaxrOW = 6.07; - _g5b5_var._parameters.alphayuOW = 6.07; - _g5b5_var._parameters.alphaydOW = 6.07; - _g5b5_var._parameters.WxrOW = 0.003; - _g5b5_var._parameters.WxlOW = 0.003; - _g5b5_var._parameters.WyuOW = 0.003; - _g5b5_var._parameters.WydOW = 0.003; - _g5b5_var._parameters.mxrOW = 0; - _g5b5_var._parameters.mxlOW = 0; - _g5b5_var._parameters.myuOW = 0; - _g5b5_var._parameters.mydOW = 0; - _g5b5_var._parameters.rwallthick = 0.001; - _g5b5_var._parameters.lwallthick = 0.001; - _g5b5_var._parameters.uwallthick = 0.001; - _g5b5_var._parameters.dwallthick = 0.001; - - - /* component g5b5=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b5_var._rotation_absolute); - rot_transpose(_g5b4_var._rotation_absolute, tr1); - rot_mul(_g5b5_var._rotation_absolute, tr1, _g5b5_var._rotation_relative); - _g5b5_var._rotation_is_identity = rot_test_identity(_g5b5_var._rotation_relative); - tc1 = coords_set( - 0, 0, 41.0235); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g5b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g5b4_var._position_absolute, _g5b5_var._position_absolute); - _g5b5_var._position_relative = rot_apply(_g5b5_var._rotation_absolute, tc1); - } /* g5b5=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute); - instrument->_position_absolute[62] = _g5b5_var._position_absolute; - instrument->_position_relative[62] = _g5b5_var._position_relative; - _g5b5_var._position_relative_is_zero = coords_test_zero(_g5b5_var._position_relative); - instrument->counter_N[62] = instrument->counter_P[62] = instrument->counter_P2[62] = 0; - instrument->counter_AbsorbProp[62]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0061_g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "h1u", "0.002", "0.03217","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "linhu", "0.0", "27.0135","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "louthu", "0", "6.986750000000001","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "h1d", "0.002", "0.03217","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "linhd", "0.0", "27.0135","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "louthd", "0", "6.986750000000001","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "l", "0", "1.9997499999999988","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcyu", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "Qcyd", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayu", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayd", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "mxr", "3.6", "3.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "mxl", "3.6", "3.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "myu", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "myd", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0061_g5b5", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g5b5_setpos */ - -/* component g5b6=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g5b6_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g5b6_setpos] component g5b6=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g5b6_var._name, "g5b6", 16384); - stracpy(_g5b6_var._type, "Guide_four_side", 16384); - _g5b6_var._index=63; - int current_setpos_index = 63; - _g5b6_var._parameters.RIreflect[0]='\0'; - _g5b6_var._parameters.LIreflect[0]='\0'; - _g5b6_var._parameters.UIreflect[0]='\0'; - _g5b6_var._parameters.DIreflect[0]='\0'; - _g5b6_var._parameters.ROreflect[0]='\0'; - _g5b6_var._parameters.LOreflect[0]='\0'; - _g5b6_var._parameters.UOreflect[0]='\0'; - _g5b6_var._parameters.DOreflect[0]='\0'; - _g5b6_var._parameters.w1l = 0.04004; - _g5b6_var._parameters.w2l = 0.04004; - _g5b6_var._parameters.linwl = 0; - _g5b6_var._parameters.loutwl = 0; - _g5b6_var._parameters.w1r = 0.04004; - _g5b6_var._parameters.w2r = 0.04004; - _g5b6_var._parameters.linwr = 0.0; - _g5b6_var._parameters.loutwr = 0; - _g5b6_var._parameters.h1u = 0.029395; - _g5b6_var._parameters.h2u = 0.002; - _g5b6_var._parameters.linhu = 29.01375; - _g5b6_var._parameters.louthu = 6.5; - _g5b6_var._parameters.h1d = 0.029395; - _g5b6_var._parameters.h2d = 0.002; - _g5b6_var._parameters.linhd = 29.01375; - _g5b6_var._parameters.louthd = 6.5; - _g5b6_var._parameters.l = 0.4862499999999983; - _g5b6_var._parameters.R0 = 0.99; - _g5b6_var._parameters.Qcxl = 0.0221; - _g5b6_var._parameters.Qcxr = 0.0221; - _g5b6_var._parameters.Qcyu = 0.0221; - _g5b6_var._parameters.Qcyd = 0.0221; - _g5b6_var._parameters.alphaxl = 1.75; - _g5b6_var._parameters.alphaxr = 1.75; - _g5b6_var._parameters.alphayu = 1.75; - _g5b6_var._parameters.alphayd = 1.75; - _g5b6_var._parameters.Wxr = 0.015; - _g5b6_var._parameters.Wxl = 0.015; - _g5b6_var._parameters.Wyu = 0.015; - _g5b6_var._parameters.Wyd = 0.015; - _g5b6_var._parameters.mxr = 3.0; - _g5b6_var._parameters.mxl = 3.0; - _g5b6_var._parameters.myu = 2.5; - _g5b6_var._parameters.myd = 2.5; - _g5b6_var._parameters.QcxrOW = 0.0217; - _g5b6_var._parameters.QcxlOW = 0.0217; - _g5b6_var._parameters.QcyuOW = 0.0217; - _g5b6_var._parameters.QcydOW = 0.0217; - _g5b6_var._parameters.alphaxlOW = 6.07; - _g5b6_var._parameters.alphaxrOW = 6.07; - _g5b6_var._parameters.alphayuOW = 6.07; - _g5b6_var._parameters.alphaydOW = 6.07; - _g5b6_var._parameters.WxrOW = 0.003; - _g5b6_var._parameters.WxlOW = 0.003; - _g5b6_var._parameters.WyuOW = 0.003; - _g5b6_var._parameters.WydOW = 0.003; - _g5b6_var._parameters.mxrOW = 0; - _g5b6_var._parameters.mxlOW = 0; - _g5b6_var._parameters.myuOW = 0; - _g5b6_var._parameters.mydOW = 0; - _g5b6_var._parameters.rwallthick = 0.001; - _g5b6_var._parameters.lwallthick = 0.001; - _g5b6_var._parameters.uwallthick = 0.001; - _g5b6_var._parameters.dwallthick = 0.001; - - - /* component g5b6=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b6_var._rotation_absolute); - rot_transpose(_g5b5_var._rotation_absolute, tr1); - rot_mul(_g5b6_var._rotation_absolute, tr1, _g5b6_var._rotation_relative); - _g5b6_var._rotation_is_identity = rot_test_identity(_g5b6_var._rotation_relative); - tc1 = coords_set( - 0, 0, 43.02375); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g5b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g5b5_var._position_absolute, _g5b6_var._position_absolute); - _g5b6_var._position_relative = rot_apply(_g5b6_var._rotation_absolute, tc1); - } /* g5b6=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute); - instrument->_position_absolute[63] = _g5b6_var._position_absolute; - instrument->_position_relative[63] = _g5b6_var._position_relative; - _g5b6_var._position_relative_is_zero = coords_test_zero(_g5b6_var._position_relative); - instrument->counter_N[63] = instrument->counter_P[63] = instrument->counter_P2[63] = 0; - instrument->counter_AbsorbProp[63]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0062_g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "w2l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "linwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "loutwl", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "w2r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "linwr", "0.0", "0.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "loutwr", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "h1u", "0.002", "0.029395","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "linhu", "0.0", "29.01375","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "louthu", "0", "6.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "h1d", "0.002", "0.029395","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "linhd", "0.0", "29.01375","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "louthd", "0", "6.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "l", "0", "0.4862499999999983","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcxl", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcxr", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcyu", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "Qcyd", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxl", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxr", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayu", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayd", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "mxr", "3.6", "3.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "mxl", "3.6", "3.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "myu", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "myd", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0062_g5b6", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g5b6_setpos */ - -/* component g6a1=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g6a1_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g6a1_setpos] component g6a1=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g6a1_var._name, "g6a1", 16384); - stracpy(_g6a1_var._type, "Guide_four_side", 16384); - _g6a1_var._index=64; - int current_setpos_index = 64; - _g6a1_var._parameters.RIreflect[0]='\0'; - _g6a1_var._parameters.LIreflect[0]='\0'; - _g6a1_var._parameters.UIreflect[0]='\0'; - _g6a1_var._parameters.DIreflect[0]='\0'; - _g6a1_var._parameters.ROreflect[0]='\0'; - _g6a1_var._parameters.LOreflect[0]='\0'; - _g6a1_var._parameters.UOreflect[0]='\0'; - _g6a1_var._parameters.DOreflect[0]='\0'; - _g6a1_var._parameters.w1l = 0.04004; - _g6a1_var._parameters.w2l = 0.002; - _g6a1_var._parameters.linwl = 6.5; - _g6a1_var._parameters.loutwl = 4.9864999999999995; - _g6a1_var._parameters.w1r = 0.04004; - _g6a1_var._parameters.w2r = 0.002; - _g6a1_var._parameters.linwr = 6.5; - _g6a1_var._parameters.loutwr = 4.9864999999999995; - _g6a1_var._parameters.h1u = 0.02859; - _g6a1_var._parameters.h2u = 0.002; - _g6a1_var._parameters.linhu = 29.5; - _g6a1_var._parameters.louthu = 4.9864999999999995; - _g6a1_var._parameters.h1d = 0.02859; - _g6a1_var._parameters.h2d = 0.002; - _g6a1_var._parameters.linhd = 29.5; - _g6a1_var._parameters.louthd = 4.9864999999999995; - _g6a1_var._parameters.l = 1.5135000000000005; - _g6a1_var._parameters.R0 = 0.99; - _g6a1_var._parameters.Qcxl = 0.0217; - _g6a1_var._parameters.Qcxr = 0.0217; - _g6a1_var._parameters.Qcyu = 0.0221; - _g6a1_var._parameters.Qcyd = 0.0221; - _g6a1_var._parameters.alphaxl = 2.5; - _g6a1_var._parameters.alphaxr = 2.5; - _g6a1_var._parameters.alphayu = 1.75; - _g6a1_var._parameters.alphayd = 1.75; - _g6a1_var._parameters.Wxr = 0.015; - _g6a1_var._parameters.Wxl = 0.015; - _g6a1_var._parameters.Wyu = 0.015; - _g6a1_var._parameters.Wyd = 0.015; - _g6a1_var._parameters.mxr = 3.5; - _g6a1_var._parameters.mxl = 3.5; - _g6a1_var._parameters.myu = 2.5; - _g6a1_var._parameters.myd = 2.5; - _g6a1_var._parameters.QcxrOW = 0.0217; - _g6a1_var._parameters.QcxlOW = 0.0217; - _g6a1_var._parameters.QcyuOW = 0.0217; - _g6a1_var._parameters.QcydOW = 0.0217; - _g6a1_var._parameters.alphaxlOW = 6.07; - _g6a1_var._parameters.alphaxrOW = 6.07; - _g6a1_var._parameters.alphayuOW = 6.07; - _g6a1_var._parameters.alphaydOW = 6.07; - _g6a1_var._parameters.WxrOW = 0.003; - _g6a1_var._parameters.WxlOW = 0.003; - _g6a1_var._parameters.WyuOW = 0.003; - _g6a1_var._parameters.WydOW = 0.003; - _g6a1_var._parameters.mxrOW = 0; - _g6a1_var._parameters.mxlOW = 0; - _g6a1_var._parameters.myuOW = 0; - _g6a1_var._parameters.mydOW = 0; - _g6a1_var._parameters.rwallthick = 0.001; - _g6a1_var._parameters.lwallthick = 0.001; - _g6a1_var._parameters.uwallthick = 0.001; - _g6a1_var._parameters.dwallthick = 0.001; - - - /* component g6a1=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a1_var._rotation_absolute); - rot_transpose(_g5b6_var._rotation_absolute, tr1); - rot_mul(_g6a1_var._rotation_absolute, tr1, _g6a1_var._rotation_relative); - _g6a1_var._rotation_is_identity = rot_test_identity(_g6a1_var._rotation_relative); - tc1 = coords_set( - 0, 0, 43.51); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g6a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g5b6_var._position_absolute, _g6a1_var._position_absolute); - _g6a1_var._position_relative = rot_apply(_g6a1_var._rotation_absolute, tc1); - } /* g6a1=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute); - instrument->_position_absolute[64] = _g6a1_var._position_absolute; - instrument->_position_relative[64] = _g6a1_var._position_relative; - _g6a1_var._position_relative_is_zero = coords_test_zero(_g6a1_var._position_relative); - instrument->counter_N[64] = instrument->counter_P[64] = instrument->counter_P2[64] = 0; - instrument->counter_AbsorbProp[64]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0063_g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "w1l", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "linwl", "0", "6.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "loutwl", "0", "4.9864999999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "w1r", "0.002", "0.04004","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "linwr", "0.0", "6.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "loutwr", "0", "4.9864999999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "h1u", "0.002", "0.02859","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "linhu", "0.0", "29.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "louthu", "0", "4.9864999999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "h1d", "0.002", "0.02859","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "linhd", "0.0", "29.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "louthd", "0", "4.9864999999999995","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "l", "0", "1.5135000000000005","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcyu", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "Qcyd", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayu", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayd", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "mxr", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "mxl", "3.6", "3.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "myu", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "myd", "3.6", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0063_g6a1", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g6a1_setpos */ - -/* component g6a2=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g6a2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g6a2_setpos] component g6a2=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g6a2_var._name, "g6a2", 16384); - stracpy(_g6a2_var._type, "Guide_four_side", 16384); - _g6a2_var._index=65; - int current_setpos_index = 65; - _g6a2_var._parameters.RIreflect[0]='\0'; - _g6a2_var._parameters.LIreflect[0]='\0'; - _g6a2_var._parameters.UIreflect[0]='\0'; - _g6a2_var._parameters.DIreflect[0]='\0'; - _g6a2_var._parameters.ROreflect[0]='\0'; - _g6a2_var._parameters.LOreflect[0]='\0'; - _g6a2_var._parameters.UOreflect[0]='\0'; - _g6a2_var._parameters.DOreflect[0]='\0'; - _g6a2_var._parameters.w1l = 0.038935; - _g6a2_var._parameters.w2l = 0.002; - _g6a2_var._parameters.linwl = 8.017499999999998; - _g6a2_var._parameters.loutwl = 2.982750000000003; - _g6a2_var._parameters.w1r = 0.038935; - _g6a2_var._parameters.w2r = 0.002; - _g6a2_var._parameters.linwr = 8.017499999999998; - _g6a2_var._parameters.loutwr = 2.982750000000003; - _g6a2_var._parameters.h1u = 0.02567; - _g6a2_var._parameters.h2u = 0.002; - _g6a2_var._parameters.linhu = 31.0175; - _g6a2_var._parameters.louthu = 2.982750000000003; - _g6a2_var._parameters.h1d = 0.02567; - _g6a2_var._parameters.h2d = 0.002; - _g6a2_var._parameters.linhd = 31.0175; - _g6a2_var._parameters.louthd = 2.982750000000003; - _g6a2_var._parameters.l = 1.9997499999999988; - _g6a2_var._parameters.R0 = 0.99; - _g6a2_var._parameters.Qcxl = 0.0217; - _g6a2_var._parameters.Qcxr = 0.0217; - _g6a2_var._parameters.Qcyu = 0.0221; - _g6a2_var._parameters.Qcyd = 0.0221; - _g6a2_var._parameters.alphaxl = 2.5; - _g6a2_var._parameters.alphaxr = 2.5; - _g6a2_var._parameters.alphayu = 1.75; - _g6a2_var._parameters.alphayd = 1.75; - _g6a2_var._parameters.Wxr = 0.015; - _g6a2_var._parameters.Wxl = 0.015; - _g6a2_var._parameters.Wyu = 0.015; - _g6a2_var._parameters.Wyd = 0.015; - _g6a2_var._parameters.mxr = 4; - _g6a2_var._parameters.mxl = 4; - _g6a2_var._parameters.myu = 3; - _g6a2_var._parameters.myd = 3; - _g6a2_var._parameters.QcxrOW = 0.0217; - _g6a2_var._parameters.QcxlOW = 0.0217; - _g6a2_var._parameters.QcyuOW = 0.0217; - _g6a2_var._parameters.QcydOW = 0.0217; - _g6a2_var._parameters.alphaxlOW = 6.07; - _g6a2_var._parameters.alphaxrOW = 6.07; - _g6a2_var._parameters.alphayuOW = 6.07; - _g6a2_var._parameters.alphaydOW = 6.07; - _g6a2_var._parameters.WxrOW = 0.003; - _g6a2_var._parameters.WxlOW = 0.003; - _g6a2_var._parameters.WyuOW = 0.003; - _g6a2_var._parameters.WydOW = 0.003; - _g6a2_var._parameters.mxrOW = 0; - _g6a2_var._parameters.mxlOW = 0; - _g6a2_var._parameters.myuOW = 0; - _g6a2_var._parameters.mydOW = 0; - _g6a2_var._parameters.rwallthick = 0.001; - _g6a2_var._parameters.lwallthick = 0.001; - _g6a2_var._parameters.uwallthick = 0.001; - _g6a2_var._parameters.dwallthick = 0.001; - - - /* component g6a2=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a2_var._rotation_absolute); - rot_transpose(_g6a1_var._rotation_absolute, tr1); - rot_mul(_g6a2_var._rotation_absolute, tr1, _g6a2_var._rotation_relative); - _g6a2_var._rotation_is_identity = rot_test_identity(_g6a2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 45.027499999999996); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g6a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g6a1_var._position_absolute, _g6a2_var._position_absolute); - _g6a2_var._position_relative = rot_apply(_g6a2_var._rotation_absolute, tc1); - } /* g6a2=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute); - instrument->_position_absolute[65] = _g6a2_var._position_absolute; - instrument->_position_relative[65] = _g6a2_var._position_relative; - _g6a2_var._position_relative_is_zero = coords_test_zero(_g6a2_var._position_relative); - instrument->counter_N[65] = instrument->counter_P[65] = instrument->counter_P2[65] = 0; - instrument->counter_AbsorbProp[65]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0064_g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "w1l", "0.002", "0.038935","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "linwl", "0", "8.017499999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "loutwl", "0", "2.982750000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "w1r", "0.002", "0.038935","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "linwr", "0.0", "8.017499999999998","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "loutwr", "0", "2.982750000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "h1u", "0.002", "0.02567","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "linhu", "0.0", "31.0175","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "louthu", "0", "2.982750000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "h1d", "0.002", "0.02567","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "linhd", "0.0", "31.0175","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "louthd", "0", "2.982750000000003","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "l", "0", "1.9997499999999988","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcyu", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "Qcyd", "0.0217", "0.0221","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayu", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayd", "6.07", "1.75","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "myu", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "myd", "3.6", "3","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0064_g6a2", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g6a2_setpos */ - -/* component g6a3=Guide_four_side() SETTING, POSITION/ROTATION */ -int _g6a3_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_g6a3_setpos] component g6a3=Guide_four_side() SETTING [Guide_four_side:0]"); - stracpy(_g6a3_var._name, "g6a3", 16384); - stracpy(_g6a3_var._type, "Guide_four_side", 16384); - _g6a3_var._index=66; - int current_setpos_index = 66; - _g6a3_var._parameters.RIreflect[0]='\0'; - _g6a3_var._parameters.LIreflect[0]='\0'; - _g6a3_var._parameters.UIreflect[0]='\0'; - _g6a3_var._parameters.DIreflect[0]='\0'; - _g6a3_var._parameters.ROreflect[0]='\0'; - _g6a3_var._parameters.LOreflect[0]='\0'; - _g6a3_var._parameters.UOreflect[0]='\0'; - _g6a3_var._parameters.DOreflect[0]='\0'; - _g6a3_var._parameters.w1l = 0.03367; - _g6a3_var._parameters.w2l = 0.002; - _g6a3_var._parameters.linwl = 10.01775; - _g6a3_var._parameters.loutwl = 1.0; - _g6a3_var._parameters.w1r = 0.03367; - _g6a3_var._parameters.w2r = 0.002; - _g6a3_var._parameters.linwr = 10.01775; - _g6a3_var._parameters.loutwr = 1.0; - _g6a3_var._parameters.h1u = 0.02049; - _g6a3_var._parameters.h2u = 0.002; - _g6a3_var._parameters.linhu = 33.01775; - _g6a3_var._parameters.louthu = 1.0; - _g6a3_var._parameters.h1d = 0.02049; - _g6a3_var._parameters.h2d = 0.002; - _g6a3_var._parameters.linhd = 33.01775; - _g6a3_var._parameters.louthd = 1.0; - _g6a3_var._parameters.l = 1.9822500000000005; - _g6a3_var._parameters.R0 = 0.99; - _g6a3_var._parameters.Qcxl = 0.0217; - _g6a3_var._parameters.Qcxr = 0.0217; - _g6a3_var._parameters.Qcyu = 0.0217; - _g6a3_var._parameters.Qcyd = 0.0217; - _g6a3_var._parameters.alphaxl = 2.5; - _g6a3_var._parameters.alphaxr = 2.5; - _g6a3_var._parameters.alphayu = 2.5; - _g6a3_var._parameters.alphayd = 2.5; - _g6a3_var._parameters.Wxr = 0.015; - _g6a3_var._parameters.Wxl = 0.015; - _g6a3_var._parameters.Wyu = 0.015; - _g6a3_var._parameters.Wyd = 0.015; - _g6a3_var._parameters.mxr = 4; - _g6a3_var._parameters.mxl = 4; - _g6a3_var._parameters.myu = 4; - _g6a3_var._parameters.myd = 4; - _g6a3_var._parameters.QcxrOW = 0.0217; - _g6a3_var._parameters.QcxlOW = 0.0217; - _g6a3_var._parameters.QcyuOW = 0.0217; - _g6a3_var._parameters.QcydOW = 0.0217; - _g6a3_var._parameters.alphaxlOW = 6.07; - _g6a3_var._parameters.alphaxrOW = 6.07; - _g6a3_var._parameters.alphayuOW = 6.07; - _g6a3_var._parameters.alphaydOW = 6.07; - _g6a3_var._parameters.WxrOW = 0.003; - _g6a3_var._parameters.WxlOW = 0.003; - _g6a3_var._parameters.WyuOW = 0.003; - _g6a3_var._parameters.WydOW = 0.003; - _g6a3_var._parameters.mxrOW = 0; - _g6a3_var._parameters.mxlOW = 0; - _g6a3_var._parameters.myuOW = 0; - _g6a3_var._parameters.mydOW = 0; - _g6a3_var._parameters.rwallthick = 0.001; - _g6a3_var._parameters.lwallthick = 0.001; - _g6a3_var._parameters.uwallthick = 0.001; - _g6a3_var._parameters.dwallthick = 0.001; - - - /* component g6a3=Guide_four_side() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a3_var._rotation_absolute); - rot_transpose(_g6a2_var._rotation_absolute, tr1); - rot_mul(_g6a3_var._rotation_absolute, tr1, _g6a3_var._rotation_relative); - _g6a3_var._rotation_is_identity = rot_test_identity(_g6a3_var._rotation_relative); - tc1 = coords_set( - 0, 0, 47.02775); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _g6a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g6a2_var._position_absolute, _g6a3_var._position_absolute); - _g6a3_var._position_relative = rot_apply(_g6a3_var._rotation_absolute, tc1); - } /* g6a3=Guide_four_side() AT ROTATED */ - DEBUG_COMPONENT("g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute); - instrument->_position_absolute[66] = _g6a3_var._position_absolute; - instrument->_position_relative[66] = _g6a3_var._position_relative; - _g6a3_var._position_relative_is_zero = coords_test_zero(_g6a3_var._position_relative); - instrument->counter_N[66] = instrument->counter_P[66] = instrument->counter_P2[66] = 0; - instrument->counter_AbsorbProp[66]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0065_g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute, "Guide_four_side"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "RIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "LIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "UIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "DIreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "ROreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "LOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "UOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "DOreflect", 0, 0, "char*"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "w1l", "0.002", "0.03367","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "w2l", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "linwl", "0", "10.01775","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "loutwl", "0", "1.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "w1r", "0.002", "0.03367","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "w2r", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "linwr", "0.0", "10.01775","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "loutwr", "0", "1.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "h1u", "0.002", "0.02049","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "h2u", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "linhu", "0.0", "33.01775","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "louthu", "0", "1.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "h1d", "0.002", "0.02049","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "h2d", "0.002", "0.002","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "linhd", "0.0", "33.01775","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "louthd", "0", "1.0","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "l", "0", "1.9822500000000005","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "R0", "0.99", "0.99","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcxl", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcxr", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcyu", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "Qcyd", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxl", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxr", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayu", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayd", "6.07", "2.5","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "Wxr", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "Wxl", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "Wyu", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "Wyd", "0.003", "0.015","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "mxr", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "mxl", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "myu", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "myd", "3.6", "4","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "QcydOW", "0.0217", "0.0217","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxlOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaxrOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "alphayuOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "alphaydOW", "6.07", "6.07","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "WxrOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "WxlOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "WyuOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "WydOW", "0.003", "0.003","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "mxrOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "mxlOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "myuOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "mydOW", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "rwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "lwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "uwallthick", "0.001", "0.001","MCNUM"); - mccomp_param_nexus(nxhandle,"0065_g6a3", "dwallthick", "0.001", "0.001","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _g6a3_setpos */ - -/* component guide_end=Arm() SETTING, POSITION/ROTATION */ -int _guide_end_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_guide_end_setpos] component guide_end=Arm() SETTING [Arm:0]"); - stracpy(_guide_end_var._name, "guide_end", 16384); - stracpy(_guide_end_var._type, "Arm", 16384); - _guide_end_var._index=67; - int current_setpos_index = 67; - /* component guide_end=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _guide_end_var._rotation_absolute); - rot_transpose(_g6a3_var._rotation_absolute, tr1); - rot_mul(_guide_end_var._rotation_absolute, tr1, _guide_end_var._rotation_relative); - _guide_end_var._rotation_is_identity = rot_test_identity(_guide_end_var._rotation_relative); - tc1 = coords_set( - 0, 0, 49.01); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _guide_end_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g6a3_var._position_absolute, _guide_end_var._position_absolute); - _guide_end_var._position_relative = rot_apply(_guide_end_var._rotation_absolute, tc1); - } /* guide_end=Arm() AT ROTATED */ - DEBUG_COMPONENT("guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute); - instrument->_position_absolute[67] = _guide_end_var._position_absolute; - instrument->_position_relative[67] = _guide_end_var._position_relative; - _guide_end_var._position_relative_is_zero = coords_test_zero(_guide_end_var._position_relative); - instrument->counter_N[67] = instrument->counter_P[67] = instrument->counter_P2[67] = 0; - instrument->counter_AbsorbProp[67]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0066_guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _guide_end_setpos */ - -/* component monitor_3_position=Arm() SETTING, POSITION/ROTATION */ -int _monitor_3_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_monitor_3_position_setpos] component monitor_3_position=Arm() SETTING [Arm:0]"); - stracpy(_monitor_3_position_var._name, "monitor_3_position", 16384); - stracpy(_monitor_3_position_var._type, "Arm", 16384); - _monitor_3_position_var._index=68; - int current_setpos_index = 68; - /* component monitor_3_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_3_position_var._rotation_absolute); - rot_transpose(_g6a3_var._rotation_absolute, tr1); - rot_mul(_monitor_3_position_var._rotation_absolute, tr1, _monitor_3_position_var._rotation_relative); - _monitor_3_position_var._rotation_is_identity = rot_test_identity(_monitor_3_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 49.01); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _monitor_3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g6a3_var._position_absolute, _monitor_3_position_var._position_absolute); - _monitor_3_position_var._position_relative = rot_apply(_monitor_3_position_var._rotation_absolute, tc1); - } /* monitor_3_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute); - instrument->_position_absolute[68] = _monitor_3_position_var._position_absolute; - instrument->_position_relative[68] = _monitor_3_position_var._position_relative; - _monitor_3_position_var._position_relative_is_zero = coords_test_zero(_monitor_3_position_var._position_relative); - instrument->counter_N[68] = instrument->counter_P[68] = instrument->counter_P2[68] = 0; - instrument->counter_AbsorbProp[68]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0067_monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _monitor_3_position_setpos */ - -/* component start_backend=Arm() SETTING, POSITION/ROTATION */ -int _start_backend_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_start_backend_setpos] component start_backend=Arm() SETTING [Arm:0]"); - stracpy(_start_backend_var._name, "start_backend", 16384); - stracpy(_start_backend_var._type, "Arm", 16384); - _start_backend_var._index=69; - int current_setpos_index = 69; - /* component start_backend=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_var._rotation_absolute, _start_backend_var._rotation_absolute); - rot_transpose(_g6a3_var._rotation_absolute, tr1); - rot_mul(_start_backend_var._rotation_absolute, tr1, _start_backend_var._rotation_relative); - _start_backend_var._rotation_is_identity = rot_test_identity(_start_backend_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_optical_axis_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _start_backend_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); - tc1 = coords_sub(_g6a3_var._position_absolute, _start_backend_var._position_absolute); - _start_backend_var._position_relative = rot_apply(_start_backend_var._rotation_absolute, tc1); - } /* start_backend=Arm() AT ROTATED */ - DEBUG_COMPONENT("start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute); - instrument->_position_absolute[69] = _start_backend_var._position_absolute; - instrument->_position_relative[69] = _start_backend_var._position_relative; - _start_backend_var._position_relative_is_zero = coords_test_zero(_start_backend_var._position_relative); - instrument->counter_N[69] = instrument->counter_P[69] = instrument->counter_P2[69] = 0; - instrument->counter_AbsorbProp[69]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0068_start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _start_backend_setpos */ - -/* component optical_axis_backend=Arm() SETTING, POSITION/ROTATION */ -int _optical_axis_backend_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_optical_axis_backend_setpos] component optical_axis_backend=Arm() SETTING [Arm:0]"); - stracpy(_optical_axis_backend_var._name, "optical_axis_backend", 16384); - stracpy(_optical_axis_backend_var._type, "Arm", 16384); - _optical_axis_backend_var._index=70; - int current_setpos_index = 70; - /* component optical_axis_backend=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _start_backend_var._rotation_absolute, _optical_axis_backend_var._rotation_absolute); - rot_transpose(_g6a3_var._rotation_absolute, tr1); - rot_mul(_optical_axis_backend_var._rotation_absolute, tr1, _optical_axis_backend_var._rotation_relative); - _optical_axis_backend_var._rotation_is_identity = rot_test_identity(_optical_axis_backend_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_start_backend_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _optical_axis_backend_var._position_absolute = coords_add(_start_backend_var._position_absolute, tc2); - tc1 = coords_sub(_g6a3_var._position_absolute, _optical_axis_backend_var._position_absolute); - _optical_axis_backend_var._position_relative = rot_apply(_optical_axis_backend_var._rotation_absolute, tc1); - } /* optical_axis_backend=Arm() AT ROTATED */ - DEBUG_COMPONENT("optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute); - instrument->_position_absolute[70] = _optical_axis_backend_var._position_absolute; - instrument->_position_relative[70] = _optical_axis_backend_var._position_relative; - _optical_axis_backend_var._position_relative_is_zero = coords_test_zero(_optical_axis_backend_var._position_relative); - instrument->counter_N[70] = instrument->counter_P[70] = instrument->counter_P2[70] = 0; - instrument->counter_AbsorbProp[70]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0069_optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _optical_axis_backend_setpos */ - -/* component pinhole_2=Slit() SETTING, POSITION/ROTATION */ -int _pinhole_2_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_pinhole_2_setpos] component pinhole_2=Slit() SETTING [Slit:0]"); - stracpy(_pinhole_2_var._name, "pinhole_2", 16384); - stracpy(_pinhole_2_var._type, "Slit", 16384); - _pinhole_2_var._index=71; - int current_setpos_index = 71; - _pinhole_2_var._parameters.xmin = UNSET; - _pinhole_2_var._parameters.xmax = UNSET; - _pinhole_2_var._parameters.ymin = UNSET; - _pinhole_2_var._parameters.ymax = UNSET; - _pinhole_2_var._parameters.radius = UNSET; - _pinhole_2_var._parameters.xwidth = 0.03; - _pinhole_2_var._parameters.yheight = 0.03; - - - /* component pinhole_2=Slit() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _pinhole_2_var._rotation_absolute); - rot_transpose(_g6a3_var._rotation_absolute, tr1); - rot_mul(_pinhole_2_var._rotation_absolute, tr1, _pinhole_2_var._rotation_relative); - _pinhole_2_var._rotation_is_identity = rot_test_identity(_pinhole_2_var._rotation_relative); - tc1 = coords_set( - 0, 0, 50); - rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _pinhole_2_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); - tc1 = coords_sub(_g6a3_var._position_absolute, _pinhole_2_var._position_absolute); - _pinhole_2_var._position_relative = rot_apply(_pinhole_2_var._rotation_absolute, tc1); - } /* pinhole_2=Slit() AT ROTATED */ - DEBUG_COMPONENT("pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute); - instrument->_position_absolute[71] = _pinhole_2_var._position_absolute; - instrument->_position_relative[71] = _pinhole_2_var._position_relative; - _pinhole_2_var._position_relative_is_zero = coords_test_zero(_pinhole_2_var._position_relative); - instrument->counter_N[71] = instrument->counter_P[71] = instrument->counter_P2[71] = 0; - instrument->counter_AbsorbProp[71]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0070_pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute, "Slit"); - mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xmin", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xmax", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0070_pinhole_2", "ymin", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0070_pinhole_2", "ymax", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0070_pinhole_2", "radius", "UNSET", "UNSET","MCNUM"); - mccomp_param_nexus(nxhandle,"0070_pinhole_2", "xwidth", "UNSET", "0.03","MCNUM"); - mccomp_param_nexus(nxhandle,"0070_pinhole_2", "yheight", "UNSET", "0.03","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _pinhole_2_setpos */ - -/* component graph=Graphite_Diffuser() SETTING, POSITION/ROTATION */ -int _graph_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_graph_setpos] component graph=Graphite_Diffuser() SETTING [Graphite_Diffuser:0]"); - stracpy(_graph_var._name, "graph", 16384); - stracpy(_graph_var._type, "Graphite_Diffuser", 16384); - _graph_var._index=72; - int current_setpos_index = 72; - _graph_var._parameters.xwidth = 0.1; - _graph_var._parameters.ywidth = 0.1; - _graph_var._parameters.thick = 0.2; - _graph_var._parameters.abs = 1; - - /* component graph=Graphite_Diffuser() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _graph_var._rotation_absolute); - rot_transpose(_pinhole_2_var._rotation_absolute, tr1); - rot_mul(_graph_var._rotation_absolute, tr1, _graph_var._rotation_relative); - _graph_var._rotation_is_identity = rot_test_identity(_graph_var._rotation_relative); - tc1 = coords_set( - 0, 0, 50.001); - rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _graph_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); - tc1 = coords_sub(_pinhole_2_var._position_absolute, _graph_var._position_absolute); - _graph_var._position_relative = rot_apply(_graph_var._rotation_absolute, tc1); - } /* graph=Graphite_Diffuser() AT ROTATED */ - DEBUG_COMPONENT("graph", _graph_var._position_absolute, _graph_var._rotation_absolute); - instrument->_position_absolute[72] = _graph_var._position_absolute; - instrument->_position_relative[72] = _graph_var._position_relative; - _graph_var._position_relative_is_zero = coords_test_zero(_graph_var._position_relative); - instrument->counter_N[72] = instrument->counter_P[72] = instrument->counter_P2[72] = 0; - instrument->counter_AbsorbProp[72]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0071_graph", _graph_var._position_absolute, _graph_var._rotation_absolute, "Graphite_Diffuser"); - mccomp_param_nexus(nxhandle,"0071_graph", "xwidth", "0.1", "0.1","MCNUM"); - mccomp_param_nexus(nxhandle,"0071_graph", "ywidth", "0.1", "0.1","MCNUM"); - mccomp_param_nexus(nxhandle,"0071_graph", "thick", "0.01", "0.2","MCNUM"); - mccomp_param_nexus(nxhandle,"0071_graph", "abs", "1", "1","MCNUM"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _graph_setpos */ - -/* component sample_monitor_arm=Arm() SETTING, POSITION/ROTATION */ -int _sample_monitor_arm_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_sample_monitor_arm_setpos] component sample_monitor_arm=Arm() SETTING [Arm:0]"); - stracpy(_sample_monitor_arm_var._name, "sample_monitor_arm", 16384); - stracpy(_sample_monitor_arm_var._type, "Arm", 16384); - _sample_monitor_arm_var._index=73; - int current_setpos_index = 73; - /* component sample_monitor_arm=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_monitor_arm_var._rotation_absolute); - rot_transpose(_graph_var._rotation_absolute, tr1); - rot_mul(_sample_monitor_arm_var._rotation_absolute, tr1, _sample_monitor_arm_var._rotation_relative); - _sample_monitor_arm_var._rotation_is_identity = rot_test_identity(_sample_monitor_arm_var._rotation_relative); - tc1 = coords_set( - 0, 0, 60.5); - rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _sample_monitor_arm_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); - tc1 = coords_sub(_graph_var._position_absolute, _sample_monitor_arm_var._position_absolute); - _sample_monitor_arm_var._position_relative = rot_apply(_sample_monitor_arm_var._rotation_absolute, tc1); - } /* sample_monitor_arm=Arm() AT ROTATED */ - DEBUG_COMPONENT("sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute); - instrument->_position_absolute[73] = _sample_monitor_arm_var._position_absolute; - instrument->_position_relative[73] = _sample_monitor_arm_var._position_relative; - _sample_monitor_arm_var._position_relative_is_zero = coords_test_zero(_sample_monitor_arm_var._position_relative); - instrument->counter_N[73] = instrument->counter_P[73] = instrument->counter_P2[73] = 0; - instrument->counter_AbsorbProp[73]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0072_sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _sample_monitor_arm_setpos */ - -/* component sample_PSD=Monitor_nD() SETTING, POSITION/ROTATION */ -int _sample_PSD_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_sample_PSD_setpos] component sample_PSD=Monitor_nD() SETTING [Monitor_nD:0]"); - stracpy(_sample_PSD_var._name, "sample_PSD", 16384); - stracpy(_sample_PSD_var._type, "Monitor_nD", 16384); - _sample_PSD_var._index=74; - int current_setpos_index = 74; - if("" && strlen("")) - stracpy(_sample_PSD_var._parameters.user1, "" ? "" : "", 16384); - else - _sample_PSD_var._parameters.user1[0]='\0'; - if("" && strlen("")) - stracpy(_sample_PSD_var._parameters.user2, "" ? "" : "", 16384); - else - _sample_PSD_var._parameters.user2[0]='\0'; - if("" && strlen("")) - stracpy(_sample_PSD_var._parameters.user3, "" ? "" : "", 16384); - else - _sample_PSD_var._parameters.user3[0]='\0'; - _sample_PSD_var._parameters.xwidth = 0.3; - _sample_PSD_var._parameters.yheight = 0.3; - _sample_PSD_var._parameters.zdepth = 0; - _sample_PSD_var._parameters.xmin = 0; - _sample_PSD_var._parameters.xmax = 0; - _sample_PSD_var._parameters.ymin = 0; - _sample_PSD_var._parameters.ymax = 0; - _sample_PSD_var._parameters.zmin = 0; - _sample_PSD_var._parameters.zmax = 0; - _sample_PSD_var._parameters.bins = 0; - _sample_PSD_var._parameters.min = -1e40; - _sample_PSD_var._parameters.max = 1e40; - _sample_PSD_var._parameters.restore_neutron = 0; - _sample_PSD_var._parameters.radius = 0; - if("x bins 300 y bins 300" && strlen("x bins 300 y bins 300")) - stracpy(_sample_PSD_var._parameters.options, "x bins 300 y bins 300" ? "x bins 300 y bins 300" : "", 16384); - else - _sample_PSD_var._parameters.options[0]='\0'; - if("image.dat" && strlen("image.dat")) - stracpy(_sample_PSD_var._parameters.filename, "image.dat" ? "image.dat" : "", 16384); - else - _sample_PSD_var._parameters.filename[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_sample_PSD_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); - else - _sample_PSD_var._parameters.geometry[0]='\0'; - _sample_PSD_var._parameters.nowritefile = 0; - if("NULL" && strlen("NULL")) - stracpy(_sample_PSD_var._parameters.username1, "NULL" ? "NULL" : "", 16384); - else - _sample_PSD_var._parameters.username1[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_sample_PSD_var._parameters.username2, "NULL" ? "NULL" : "", 16384); - else - _sample_PSD_var._parameters.username2[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_sample_PSD_var._parameters.username3, "NULL" ? "NULL" : "", 16384); - else - _sample_PSD_var._parameters.username3[0]='\0'; - _sample_PSD_var._parameters.tsplit = 0; - _sample_PSD_var._parameters.adaptive_target = 0; - - - /* component sample_PSD=Monitor_nD() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _sample_PSD_var._rotation_absolute); - rot_transpose(_graph_var._rotation_absolute, tr1); - rot_mul(_sample_PSD_var._rotation_absolute, tr1, _sample_PSD_var._rotation_relative); - _sample_PSD_var._rotation_is_identity = rot_test_identity(_sample_PSD_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _sample_PSD_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); - tc1 = coords_sub(_graph_var._position_absolute, _sample_PSD_var._position_absolute); - _sample_PSD_var._position_relative = rot_apply(_sample_PSD_var._rotation_absolute, tc1); - } /* sample_PSD=Monitor_nD() AT ROTATED */ - DEBUG_COMPONENT("sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute); - instrument->_position_absolute[74] = _sample_PSD_var._position_absolute; - instrument->_position_relative[74] = _sample_PSD_var._position_relative; - _sample_PSD_var._position_relative_is_zero = coords_test_zero(_sample_PSD_var._position_relative); - instrument->counter_N[74] = instrument->counter_P[74] = instrument->counter_P2[74] = 0; - instrument->counter_AbsorbProp[74]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0073_sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute, "Monitor_nD"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user1", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user2", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "user3", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xwidth", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "yheight", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zdepth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "xmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "ymin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "ymax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "zmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "bins", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "min", "-1e40", "-1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "max", "1e40", "1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "restore_neutron", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "radius", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "options", "NULL", "x bins 300 y bins 300", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "filename", "NULL", "image.dat", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "geometry", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "nowritefile", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username1", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username2", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "username3", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "tsplit", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0073_sample_PSD", "adaptive_target", "0", "0","int"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _sample_PSD_setpos */ - -/* component profile_x=Monitor_nD() SETTING, POSITION/ROTATION */ -int _profile_x_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_profile_x_setpos] component profile_x=Monitor_nD() SETTING [Monitor_nD:0]"); - stracpy(_profile_x_var._name, "profile_x", 16384); - stracpy(_profile_x_var._type, "Monitor_nD", 16384); - _profile_x_var._index=75; - int current_setpos_index = 75; - if("" && strlen("")) - stracpy(_profile_x_var._parameters.user1, "" ? "" : "", 16384); - else - _profile_x_var._parameters.user1[0]='\0'; - if("" && strlen("")) - stracpy(_profile_x_var._parameters.user2, "" ? "" : "", 16384); - else - _profile_x_var._parameters.user2[0]='\0'; - if("" && strlen("")) - stracpy(_profile_x_var._parameters.user3, "" ? "" : "", 16384); - else - _profile_x_var._parameters.user3[0]='\0'; - _profile_x_var._parameters.xwidth = 0.3; - _profile_x_var._parameters.yheight = 0.3; - _profile_x_var._parameters.zdepth = 0; - _profile_x_var._parameters.xmin = 0; - _profile_x_var._parameters.xmax = 0; - _profile_x_var._parameters.ymin = 0; - _profile_x_var._parameters.ymax = 0; - _profile_x_var._parameters.zmin = 0; - _profile_x_var._parameters.zmax = 0; - _profile_x_var._parameters.bins = 0; - _profile_x_var._parameters.min = -1e40; - _profile_x_var._parameters.max = 1e40; - _profile_x_var._parameters.restore_neutron = 0; - _profile_x_var._parameters.radius = 0; - if("x bins 300" && strlen("x bins 300")) - stracpy(_profile_x_var._parameters.options, "x bins 300" ? "x bins 300" : "", 16384); - else - _profile_x_var._parameters.options[0]='\0'; - if("profile_x.dat" && strlen("profile_x.dat")) - stracpy(_profile_x_var._parameters.filename, "profile_x.dat" ? "profile_x.dat" : "", 16384); - else - _profile_x_var._parameters.filename[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_profile_x_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); - else - _profile_x_var._parameters.geometry[0]='\0'; - _profile_x_var._parameters.nowritefile = 0; - if("NULL" && strlen("NULL")) - stracpy(_profile_x_var._parameters.username1, "NULL" ? "NULL" : "", 16384); - else - _profile_x_var._parameters.username1[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_profile_x_var._parameters.username2, "NULL" ? "NULL" : "", 16384); - else - _profile_x_var._parameters.username2[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_profile_x_var._parameters.username3, "NULL" ? "NULL" : "", 16384); - else - _profile_x_var._parameters.username3[0]='\0'; - _profile_x_var._parameters.tsplit = 0; - _profile_x_var._parameters.adaptive_target = 0; - - - /* component profile_x=Monitor_nD() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_x_var._rotation_absolute); - rot_transpose(_sample_PSD_var._rotation_absolute, tr1); - rot_mul(_profile_x_var._rotation_absolute, tr1, _profile_x_var._rotation_relative); - _profile_x_var._rotation_is_identity = rot_test_identity(_profile_x_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _profile_x_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); - tc1 = coords_sub(_sample_PSD_var._position_absolute, _profile_x_var._position_absolute); - _profile_x_var._position_relative = rot_apply(_profile_x_var._rotation_absolute, tc1); - } /* profile_x=Monitor_nD() AT ROTATED */ - DEBUG_COMPONENT("profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute); - instrument->_position_absolute[75] = _profile_x_var._position_absolute; - instrument->_position_relative[75] = _profile_x_var._position_relative; - _profile_x_var._position_relative_is_zero = coords_test_zero(_profile_x_var._position_relative); - instrument->counter_N[75] = instrument->counter_P[75] = instrument->counter_P2[75] = 0; - instrument->counter_AbsorbProp[75]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0074_profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute, "Monitor_nD"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "user1", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "user2", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "user3", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "xwidth", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "yheight", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "zdepth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "xmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "xmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "ymin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "ymax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "zmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "zmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "bins", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "min", "-1e40", "-1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "max", "1e40", "1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "restore_neutron", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "radius", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "options", "NULL", "x bins 300", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "filename", "NULL", "profile_x.dat", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "geometry", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "nowritefile", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "username1", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "username2", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "username3", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "tsplit", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0074_profile_x", "adaptive_target", "0", "0","int"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _profile_x_setpos */ - -/* component profile_y=Monitor_nD() SETTING, POSITION/ROTATION */ -int _profile_y_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_profile_y_setpos] component profile_y=Monitor_nD() SETTING [Monitor_nD:0]"); - stracpy(_profile_y_var._name, "profile_y", 16384); - stracpy(_profile_y_var._type, "Monitor_nD", 16384); - _profile_y_var._index=76; - int current_setpos_index = 76; - if("" && strlen("")) - stracpy(_profile_y_var._parameters.user1, "" ? "" : "", 16384); - else - _profile_y_var._parameters.user1[0]='\0'; - if("" && strlen("")) - stracpy(_profile_y_var._parameters.user2, "" ? "" : "", 16384); - else - _profile_y_var._parameters.user2[0]='\0'; - if("" && strlen("")) - stracpy(_profile_y_var._parameters.user3, "" ? "" : "", 16384); - else - _profile_y_var._parameters.user3[0]='\0'; - _profile_y_var._parameters.xwidth = 0.3; - _profile_y_var._parameters.yheight = 0.3; - _profile_y_var._parameters.zdepth = 0; - _profile_y_var._parameters.xmin = 0; - _profile_y_var._parameters.xmax = 0; - _profile_y_var._parameters.ymin = 0; - _profile_y_var._parameters.ymax = 0; - _profile_y_var._parameters.zmin = 0; - _profile_y_var._parameters.zmax = 0; - _profile_y_var._parameters.bins = 0; - _profile_y_var._parameters.min = -1e40; - _profile_y_var._parameters.max = 1e40; - _profile_y_var._parameters.restore_neutron = 0; - _profile_y_var._parameters.radius = 0; - if("y bins 300" && strlen("y bins 300")) - stracpy(_profile_y_var._parameters.options, "y bins 300" ? "y bins 300" : "", 16384); - else - _profile_y_var._parameters.options[0]='\0'; - if("profile_y.dat" && strlen("profile_y.dat")) - stracpy(_profile_y_var._parameters.filename, "profile_y.dat" ? "profile_y.dat" : "", 16384); - else - _profile_y_var._parameters.filename[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_profile_y_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); - else - _profile_y_var._parameters.geometry[0]='\0'; - _profile_y_var._parameters.nowritefile = 0; - if("NULL" && strlen("NULL")) - stracpy(_profile_y_var._parameters.username1, "NULL" ? "NULL" : "", 16384); - else - _profile_y_var._parameters.username1[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_profile_y_var._parameters.username2, "NULL" ? "NULL" : "", 16384); - else - _profile_y_var._parameters.username2[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_profile_y_var._parameters.username3, "NULL" ? "NULL" : "", 16384); - else - _profile_y_var._parameters.username3[0]='\0'; - _profile_y_var._parameters.tsplit = 0; - _profile_y_var._parameters.adaptive_target = 0; - - - /* component profile_y=Monitor_nD() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_y_var._rotation_absolute); - rot_transpose(_profile_x_var._rotation_absolute, tr1); - rot_mul(_profile_y_var._rotation_absolute, tr1, _profile_y_var._rotation_relative); - _profile_y_var._rotation_is_identity = rot_test_identity(_profile_y_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _profile_y_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); - tc1 = coords_sub(_profile_x_var._position_absolute, _profile_y_var._position_absolute); - _profile_y_var._position_relative = rot_apply(_profile_y_var._rotation_absolute, tc1); - } /* profile_y=Monitor_nD() AT ROTATED */ - DEBUG_COMPONENT("profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute); - instrument->_position_absolute[76] = _profile_y_var._position_absolute; - instrument->_position_relative[76] = _profile_y_var._position_relative; - _profile_y_var._position_relative_is_zero = coords_test_zero(_profile_y_var._position_relative); - instrument->counter_N[76] = instrument->counter_P[76] = instrument->counter_P2[76] = 0; - instrument->counter_AbsorbProp[76]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0075_profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute, "Monitor_nD"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "user1", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "user2", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "user3", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "xwidth", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "yheight", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "zdepth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "xmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "xmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "ymin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "ymax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "zmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "zmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "bins", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "min", "-1e40", "-1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "max", "1e40", "1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "restore_neutron", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "radius", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "options", "NULL", "y bins 300", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "filename", "NULL", "profile_y.dat", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "geometry", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "nowritefile", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "username1", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "username2", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "username3", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "tsplit", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0075_profile_y", "adaptive_target", "0", "0","int"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _profile_y_setpos */ - -/* component wavelength=Monitor_nD() SETTING, POSITION/ROTATION */ -int _wavelength_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_wavelength_setpos] component wavelength=Monitor_nD() SETTING [Monitor_nD:0]"); - stracpy(_wavelength_var._name, "wavelength", 16384); - stracpy(_wavelength_var._type, "Monitor_nD", 16384); - _wavelength_var._index=77; - int current_setpos_index = 77; - if("" && strlen("")) - stracpy(_wavelength_var._parameters.user1, "" ? "" : "", 16384); - else - _wavelength_var._parameters.user1[0]='\0'; - if("" && strlen("")) - stracpy(_wavelength_var._parameters.user2, "" ? "" : "", 16384); - else - _wavelength_var._parameters.user2[0]='\0'; - if("" && strlen("")) - stracpy(_wavelength_var._parameters.user3, "" ? "" : "", 16384); - else - _wavelength_var._parameters.user3[0]='\0'; - _wavelength_var._parameters.xwidth = 0.3; - _wavelength_var._parameters.yheight = 0.3; - _wavelength_var._parameters.zdepth = 0; - _wavelength_var._parameters.xmin = 0; - _wavelength_var._parameters.xmax = 0; - _wavelength_var._parameters.ymin = 0; - _wavelength_var._parameters.ymax = 0; - _wavelength_var._parameters.zmin = 0; - _wavelength_var._parameters.zmax = 0; - _wavelength_var._parameters.bins = 0; - _wavelength_var._parameters.min = -1e40; - _wavelength_var._parameters.max = 1e40; - _wavelength_var._parameters.restore_neutron = 0; - _wavelength_var._parameters.radius = 0; - if("L bins 300 limits [0.5 10]" && strlen("L bins 300 limits [0.5 10]")) - stracpy(_wavelength_var._parameters.options, "L bins 300 limits [0.5 10]" ? "L bins 300 limits [0.5 10]" : "", 16384); - else - _wavelength_var._parameters.options[0]='\0'; - if("wavelength.dat" && strlen("wavelength.dat")) - stracpy(_wavelength_var._parameters.filename, "wavelength.dat" ? "wavelength.dat" : "", 16384); - else - _wavelength_var._parameters.filename[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_wavelength_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); - else - _wavelength_var._parameters.geometry[0]='\0'; - _wavelength_var._parameters.nowritefile = 0; - if("NULL" && strlen("NULL")) - stracpy(_wavelength_var._parameters.username1, "NULL" ? "NULL" : "", 16384); - else - _wavelength_var._parameters.username1[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_wavelength_var._parameters.username2, "NULL" ? "NULL" : "", 16384); - else - _wavelength_var._parameters.username2[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_wavelength_var._parameters.username3, "NULL" ? "NULL" : "", 16384); - else - _wavelength_var._parameters.username3[0]='\0'; - _wavelength_var._parameters.tsplit = 0; - _wavelength_var._parameters.adaptive_target = 0; - - - /* component wavelength=Monitor_nD() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_var._rotation_absolute); - rot_transpose(_profile_y_var._rotation_absolute, tr1); - rot_mul(_wavelength_var._rotation_absolute, tr1, _wavelength_var._rotation_relative); - _wavelength_var._rotation_is_identity = rot_test_identity(_wavelength_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _wavelength_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); - tc1 = coords_sub(_profile_y_var._position_absolute, _wavelength_var._position_absolute); - _wavelength_var._position_relative = rot_apply(_wavelength_var._rotation_absolute, tc1); - } /* wavelength=Monitor_nD() AT ROTATED */ - DEBUG_COMPONENT("wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute); - instrument->_position_absolute[77] = _wavelength_var._position_absolute; - instrument->_position_relative[77] = _wavelength_var._position_relative; - _wavelength_var._position_relative_is_zero = coords_test_zero(_wavelength_var._position_relative); - instrument->counter_N[77] = instrument->counter_P[77] = instrument->counter_P2[77] = 0; - instrument->counter_AbsorbProp[77]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0076_wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute, "Monitor_nD"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "user1", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "user2", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "user3", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "xwidth", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "yheight", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "zdepth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "xmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "xmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "ymin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "ymax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "zmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "zmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "bins", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "min", "-1e40", "-1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "max", "1e40", "1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "restore_neutron", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "radius", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "options", "NULL", "L bins 300 limits [0.5 10]", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "filename", "NULL", "wavelength.dat", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "geometry", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "nowritefile", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "username1", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "username2", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "username3", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "tsplit", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0076_wavelength", "adaptive_target", "0", "0","int"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _wavelength_setpos */ - -/* component tof=Monitor_nD() SETTING, POSITION/ROTATION */ -int _tof_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_tof_setpos] component tof=Monitor_nD() SETTING [Monitor_nD:0]"); - stracpy(_tof_var._name, "tof", 16384); - stracpy(_tof_var._type, "Monitor_nD", 16384); - _tof_var._index=78; - int current_setpos_index = 78; - if("" && strlen("")) - stracpy(_tof_var._parameters.user1, "" ? "" : "", 16384); - else - _tof_var._parameters.user1[0]='\0'; - if("" && strlen("")) - stracpy(_tof_var._parameters.user2, "" ? "" : "", 16384); - else - _tof_var._parameters.user2[0]='\0'; - if("" && strlen("")) - stracpy(_tof_var._parameters.user3, "" ? "" : "", 16384); - else - _tof_var._parameters.user3[0]='\0'; - _tof_var._parameters.xwidth = 0.3; - _tof_var._parameters.yheight = 0.3; - _tof_var._parameters.zdepth = 0; - _tof_var._parameters.xmin = 0; - _tof_var._parameters.xmax = 0; - _tof_var._parameters.ymin = 0; - _tof_var._parameters.ymax = 0; - _tof_var._parameters.zmin = 0; - _tof_var._parameters.zmax = 0; - _tof_var._parameters.bins = 0; - _tof_var._parameters.min = -1e40; - _tof_var._parameters.max = 1e40; - _tof_var._parameters.restore_neutron = 0; - _tof_var._parameters.radius = 0; - if("t bins 300 limits [0, 0.15]" && strlen("t bins 300 limits [0, 0.15]")) - stracpy(_tof_var._parameters.options, "t bins 300 limits [0, 0.15]" ? "t bins 300 limits [0, 0.15]" : "", 16384); - else - _tof_var._parameters.options[0]='\0'; - if("time.dat" && strlen("time.dat")) - stracpy(_tof_var._parameters.filename, "time.dat" ? "time.dat" : "", 16384); - else - _tof_var._parameters.filename[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); - else - _tof_var._parameters.geometry[0]='\0'; - _tof_var._parameters.nowritefile = 0; - if("NULL" && strlen("NULL")) - stracpy(_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); - else - _tof_var._parameters.username1[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); - else - _tof_var._parameters.username2[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); - else - _tof_var._parameters.username3[0]='\0'; - _tof_var._parameters.tsplit = 1; - _tof_var._parameters.adaptive_target = 1; - - - /* component tof=Monitor_nD() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _tof_var._rotation_absolute); - rot_transpose(_wavelength_var._rotation_absolute, tr1); - rot_mul(_tof_var._rotation_absolute, tr1, _tof_var._rotation_relative); - _tof_var._rotation_is_identity = rot_test_identity(_tof_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); - tc1 = coords_sub(_wavelength_var._position_absolute, _tof_var._position_absolute); - _tof_var._position_relative = rot_apply(_tof_var._rotation_absolute, tc1); - } /* tof=Monitor_nD() AT ROTATED */ - DEBUG_COMPONENT("tof", _tof_var._position_absolute, _tof_var._rotation_absolute); - instrument->_position_absolute[78] = _tof_var._position_absolute; - instrument->_position_relative[78] = _tof_var._position_relative; - _tof_var._position_relative_is_zero = coords_test_zero(_tof_var._position_relative); - instrument->counter_N[78] = instrument->counter_P[78] = instrument->counter_P2[78] = 0; - instrument->counter_AbsorbProp[78]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0077_tof", _tof_var._position_absolute, _tof_var._rotation_absolute, "Monitor_nD"); - mccomp_param_nexus(nxhandle,"0077_tof", "user1", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "user2", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "user3", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "xwidth", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "yheight", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "zdepth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "xmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "xmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "ymin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "ymax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "zmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "zmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "bins", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0077_tof", "min", "-1e40", "-1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "max", "1e40", "1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "restore_neutron", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0077_tof", "radius", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0077_tof", "options", "NULL", "t bins 300 limits [0, 0.15]", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "filename", "NULL", "time.dat", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "geometry", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "nowritefile", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0077_tof", "username1", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "username2", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "username3", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0077_tof", "tsplit", "0", "1","int"); - mccomp_param_nexus(nxhandle,"0077_tof", "adaptive_target", "0", "1","int"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _tof_setpos */ - -/* component wavelength_tof=Monitor_nD() SETTING, POSITION/ROTATION */ -int _wavelength_tof_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_wavelength_tof_setpos] component wavelength_tof=Monitor_nD() SETTING [Monitor_nD:0]"); - stracpy(_wavelength_tof_var._name, "wavelength_tof", 16384); - stracpy(_wavelength_tof_var._type, "Monitor_nD", 16384); - _wavelength_tof_var._index=79; - int current_setpos_index = 79; - if("" && strlen("")) - stracpy(_wavelength_tof_var._parameters.user1, "" ? "" : "", 16384); - else - _wavelength_tof_var._parameters.user1[0]='\0'; - if("" && strlen("")) - stracpy(_wavelength_tof_var._parameters.user2, "" ? "" : "", 16384); - else - _wavelength_tof_var._parameters.user2[0]='\0'; - if("" && strlen("")) - stracpy(_wavelength_tof_var._parameters.user3, "" ? "" : "", 16384); - else - _wavelength_tof_var._parameters.user3[0]='\0'; - _wavelength_tof_var._parameters.xwidth = 0.3; - _wavelength_tof_var._parameters.yheight = 0.3; - _wavelength_tof_var._parameters.zdepth = 0; - _wavelength_tof_var._parameters.xmin = 0; - _wavelength_tof_var._parameters.xmax = 0; - _wavelength_tof_var._parameters.ymin = 0; - _wavelength_tof_var._parameters.ymax = 0; - _wavelength_tof_var._parameters.zmin = 0; - _wavelength_tof_var._parameters.zmax = 0; - _wavelength_tof_var._parameters.bins = 0; - _wavelength_tof_var._parameters.min = -1e40; - _wavelength_tof_var._parameters.max = 1e40; - _wavelength_tof_var._parameters.restore_neutron = 0; - _wavelength_tof_var._parameters.radius = 0; - if("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" && strlen("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]")) - stracpy(_wavelength_tof_var._parameters.options, "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" ? "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" : "", 16384); - else - _wavelength_tof_var._parameters.options[0]='\0'; - if("wavelength_tof.dat" && strlen("wavelength_tof.dat")) - stracpy(_wavelength_tof_var._parameters.filename, "wavelength_tof.dat" ? "wavelength_tof.dat" : "", 16384); - else - _wavelength_tof_var._parameters.filename[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_wavelength_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); - else - _wavelength_tof_var._parameters.geometry[0]='\0'; - _wavelength_tof_var._parameters.nowritefile = 0; - if("NULL" && strlen("NULL")) - stracpy(_wavelength_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); - else - _wavelength_tof_var._parameters.username1[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_wavelength_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); - else - _wavelength_tof_var._parameters.username2[0]='\0'; - if("NULL" && strlen("NULL")) - stracpy(_wavelength_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); - else - _wavelength_tof_var._parameters.username3[0]='\0'; - _wavelength_tof_var._parameters.tsplit = 1; - _wavelength_tof_var._parameters.adaptive_target = 0; - - - /* component wavelength_tof=Monitor_nD() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_tof_var._rotation_absolute); - rot_transpose(_tof_var._rotation_absolute, tr1); - rot_mul(_wavelength_tof_var._rotation_absolute, tr1, _wavelength_tof_var._rotation_relative); - _wavelength_tof_var._rotation_is_identity = rot_test_identity(_wavelength_tof_var._rotation_relative); - tc1 = coords_set( - 0, 0, 0); - rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _wavelength_tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); - tc1 = coords_sub(_tof_var._position_absolute, _wavelength_tof_var._position_absolute); - _wavelength_tof_var._position_relative = rot_apply(_wavelength_tof_var._rotation_absolute, tc1); - } /* wavelength_tof=Monitor_nD() AT ROTATED */ - DEBUG_COMPONENT("wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute); - instrument->_position_absolute[79] = _wavelength_tof_var._position_absolute; - instrument->_position_relative[79] = _wavelength_tof_var._position_relative; - _wavelength_tof_var._position_relative_is_zero = coords_test_zero(_wavelength_tof_var._position_relative); - instrument->counter_N[79] = instrument->counter_P[79] = instrument->counter_P2[79] = 0; - instrument->counter_AbsorbProp[79]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0078_wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute, "Monitor_nD"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user1", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user2", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "user3", "", "", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xwidth", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "yheight", "0", "0.3","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zdepth", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "xmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "ymin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "ymax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zmin", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "zmax", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "bins", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "min", "-1e40", "-1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "max", "1e40", "1e40","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "restore_neutron", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "radius", "0", "0","MCNUM"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "options", "NULL", "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "filename", "NULL", "wavelength_tof.dat", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "geometry", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "nowritefile", "0", "0","int"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username1", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username2", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "username3", "NULL", "NULL", "char*"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "tsplit", "0", "1","int"); - mccomp_param_nexus(nxhandle,"0078_wavelength_tof", "adaptive_target", "0", "0","int"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _wavelength_tof_setpos */ - -/* component sample_position=Arm() SETTING, POSITION/ROTATION */ -int _sample_position_setpos(void) -{ /* sets initial component parameters, position and rotation */ - SIG_MESSAGE("[_sample_position_setpos] component sample_position=Arm() SETTING [Arm:0]"); - stracpy(_sample_position_var._name, "sample_position", 16384); - stracpy(_sample_position_var._type, "Arm", 16384); - _sample_position_var._index=80; - int current_setpos_index = 80; - /* component sample_position=Arm() AT ROTATED */ - { - Coords tc1, tc2; - tc1 = coords_set(0,0,0); - tc2 = coords_set(0,0,0); - Rotation tr1; - rot_set_rotation(tr1,0,0,0); - rot_set_rotation(tr1, - (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); - rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_position_var._rotation_absolute); - rot_transpose(_wavelength_tof_var._rotation_absolute, tr1); - rot_mul(_sample_position_var._rotation_absolute, tr1, _sample_position_var._rotation_relative); - _sample_position_var._rotation_is_identity = rot_test_identity(_sample_position_var._rotation_relative); - tc1 = coords_set( - 0, 0, 60.5); - rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); - tc2 = rot_apply(tr1, tc1); - _sample_position_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); - tc1 = coords_sub(_wavelength_tof_var._position_absolute, _sample_position_var._position_absolute); - _sample_position_var._position_relative = rot_apply(_sample_position_var._rotation_absolute, tc1); - } /* sample_position=Arm() AT ROTATED */ - DEBUG_COMPONENT("sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute); - instrument->_position_absolute[80] = _sample_position_var._position_absolute; - instrument->_position_relative[80] = _sample_position_var._position_relative; - _sample_position_var._position_relative_is_zero = coords_test_zero(_sample_position_var._position_relative); - instrument->counter_N[80] = instrument->counter_P[80] = instrument->counter_P2[80] = 0; - instrument->counter_AbsorbProp[80]= 0; - #ifdef USE_NEXUS - if(nxhandle) { - if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { - MPI_MASTER( - mccomp_placement_type_nexus(nxhandle,"0079_sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute, "Arm"); - ); - } - } else { - // fprintf(stderr,"NO NEXUS FILE"); - } - #endif - return(0); -} /* _sample_position_setpos */ - -_class_Progress_bar *class_Progress_bar_init(_class_Progress_bar *_comp -) { - #define profile (_comp->_parameters.profile) - #define percent (_comp->_parameters.percent) - #define flag_save (_comp->_parameters.flag_save) - #define minutes (_comp->_parameters.minutes) - #define IntermediateCnts (_comp->_parameters.IntermediateCnts) - #define StartTime (_comp->_parameters.StartTime) - #define EndTime (_comp->_parameters.EndTime) - #define CurrentTime (_comp->_parameters.CurrentTime) - #define infostring (_comp->_parameters.infostring) - SIG_MESSAGE("[_Origin_init] component Origin=Progress_bar() INITIALISE [Progress_bar:0]"); - - IntermediateCnts = 0; - StartTime = 0; - EndTime = 0; - CurrentTime = 0; - - fprintf (stdout, "[%s] Initialize\n", instrument_name); - if (percent * mcget_ncount () / 100 < 1e5) { - percent = 1e5 * 100.0 / mcget_ncount (); - } - #ifdef OPENACC - time (&StartTime); - #endif - - #ifdef USE_MPI - sprintf (infostring, "(%i MPI processes) ", mpi_node_count); - #else - sprintf (infostring, "(single process) "); - #endif - #undef profile - #undef percent - #undef flag_save - #undef minutes - #undef IntermediateCnts - #undef StartTime - #undef EndTime - #undef CurrentTime - #undef infostring - return(_comp); -} /* class_Progress_bar_init */ - -_class_ESS_butterfly *class_ESS_butterfly_init(_class_ESS_butterfly *_comp -) { - #define sector (_comp->_parameters.sector) - #define beamline (_comp->_parameters.beamline) - #define yheight (_comp->_parameters.yheight) - #define cold_frac (_comp->_parameters.cold_frac) - #define target_index (_comp->_parameters.target_index) - #define dist (_comp->_parameters.dist) - #define focus_xw (_comp->_parameters.focus_xw) - #define focus_yh (_comp->_parameters.focus_yh) - #define c_performance (_comp->_parameters.c_performance) - #define t_performance (_comp->_parameters.t_performance) - #define Lmin (_comp->_parameters.Lmin) - #define Lmax (_comp->_parameters.Lmax) - #define tmax_multiplier (_comp->_parameters.tmax_multiplier) - #define n_pulses (_comp->_parameters.n_pulses) - #define acc_power (_comp->_parameters.acc_power) - #define tfocus_dist (_comp->_parameters.tfocus_dist) - #define tfocus_time (_comp->_parameters.tfocus_time) - #define tfocus_width (_comp->_parameters.tfocus_width) - #define target_tsplit (_comp->_parameters.target_tsplit) - #define ColdWidths (_comp->_parameters.ColdWidths) - #define ThermalWidths (_comp->_parameters.ThermalWidths) - #define ColdScalars (_comp->_parameters.ColdScalars) - #define ThermalScalars (_comp->_parameters.ThermalScalars) - #define Beamlines (_comp->_parameters.Beamlines) - #define wfrac_cold (_comp->_parameters.wfrac_cold) - #define wfrac_thermal (_comp->_parameters.wfrac_thermal) - #define C1_x (_comp->_parameters.C1_x) - #define C1_z (_comp->_parameters.C1_z) - #define C2_x (_comp->_parameters.C2_x) - #define C2_z (_comp->_parameters.C2_z) - #define C3_x (_comp->_parameters.C3_x) - #define C3_z (_comp->_parameters.C3_z) - #define T1_x (_comp->_parameters.T1_x) - #define T1_z (_comp->_parameters.T1_z) - #define T2_x (_comp->_parameters.T2_x) - #define T2_z (_comp->_parameters.T2_z) - #define T3_x (_comp->_parameters.T3_x) - #define T3_z (_comp->_parameters.T3_z) - #define rC1_x (_comp->_parameters.rC1_x) - #define rC1_z (_comp->_parameters.rC1_z) - #define rC2_x (_comp->_parameters.rC2_x) - #define rC2_z (_comp->_parameters.rC2_z) - #define rC3_x (_comp->_parameters.rC3_x) - #define rC3_z (_comp->_parameters.rC3_z) - #define rT1_x (_comp->_parameters.rT1_x) - #define rT1_z (_comp->_parameters.rT1_z) - #define rT2_x (_comp->_parameters.rT2_x) - #define rT2_z (_comp->_parameters.rT2_z) - #define rT3_x (_comp->_parameters.rT3_x) - #define rT3_z (_comp->_parameters.rT3_z) - #define tx (_comp->_parameters.tx) - #define ty (_comp->_parameters.ty) - #define tz (_comp->_parameters.tz) - #define r11 (_comp->_parameters.r11) - #define r12 (_comp->_parameters.r12) - #define r21 (_comp->_parameters.r21) - #define r22 (_comp->_parameters.r22) - #define delta_y (_comp->_parameters.delta_y) - #define Mwidth_c (_comp->_parameters.Mwidth_c) - #define Mwidth_t (_comp->_parameters.Mwidth_t) - #define beamportangle (_comp->_parameters.beamportangle) - #define w_mult (_comp->_parameters.w_mult) - #define w_stat (_comp->_parameters.w_stat) - #define w_focus (_comp->_parameters.w_focus) - #define w_tfocus (_comp->_parameters.w_tfocus) - #define w_geom_c (_comp->_parameters.w_geom_c) - #define w_geom_t (_comp->_parameters.w_geom_t) - #define isleft (_comp->_parameters.isleft) - #define l_range (_comp->_parameters.l_range) - #define cos_thermal (_comp->_parameters.cos_thermal) - #define cos_cold (_comp->_parameters.cos_cold) - #define orientation_angle (_comp->_parameters.orientation_angle) - #define cx (_comp->_parameters.cx) - #define cz (_comp->_parameters.cz) - #define jmax (_comp->_parameters.jmax) - #define dxC (_comp->_parameters.dxC) - #define dxT (_comp->_parameters.dxT) - SIG_MESSAGE("[_Source_init] component Source=ESS_butterfly() INITIALISE [ESS_butterfly:0]"); - - - - int sign_bl_angle; - - /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ - double oversampT=1.1; - double oversampC=1.0; - - - /* variables needed to correct for the emission surface angle */ - double internal_angle; - double cos_beamport_angle, sin_beamport_angle; - - if (beamline<4) { - wfrac_cold=1.0; - wfrac_thermal=(1-0.072); - } else { - wfrac_cold=1.0; - wfrac_thermal=1.0; - } - - /* Centering-parameters, which sector are we in? */ - if (strcasestr(sector,"N")) { - cx = 0.117; cz=0.0; sign_bl_angle=1; - orientation_angle = BeamlinesN[beamline-1]; - Beamlines = BeamlinesN; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsN[j]; - ThermalScalars[j] = ThermalScalarsN[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else if (strcasestr(sector,"W")) { - cx = 0.0; cz=0.0; sign_bl_angle=-1; - orientation_angle = BeamlinesW[beamline-1]; - Beamlines = BeamlinesW; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsW[j]; - ThermalScalars[j] = ThermalScalarsW[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"S")) { - cx = 0.0; cz=-0.185; sign_bl_angle=1; - orientation_angle = BeamlinesS[beamline-1]; - Beamlines = BeamlinesS; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsS[j]; - ThermalScalars[j] = ThermalScalarsS[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"E")) { - cx = 0.117; cz=-0.185; sign_bl_angle=-1; - orientation_angle = BeamlinesE[beamline-1]; - Beamlines = BeamlinesE; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsE[j]; - ThermalScalars[j] = ThermalScalarsE[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else { - fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); - exit(-1); - } - if (beamline > jmax || beamline <= 0 ) { - fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); - exit(-1); - } - - printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); - if (c_performance <= 0) { - fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); - exit(-1); - } - if (t_performance <= 0) { - fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); - exit(-1); - } - if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { - fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", - NAME_CURRENT_COMP); - exit(-1); - } - /* Figure out where to aim */ - if (target_index && !dist) - { - Coords ToTarget; - ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); - ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); - coords_get(ToTarget, &tx, &ty, &tz); - dist=sqrt(tx*tx+ty*ty+tz*tz); - } else if (!target_index && !dist) { - fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); - exit(-1); - } else { - tx=0; ty=0; tz=dist; - } - printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); - if (target_index) { - printf(" ( from target_index %i -> distance %g )\n", target_index, dist); - } else { - printf(" ( from dist parameter -> distance %g )\n", dist); - } - printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); - - /* Calculate orientation matrix for the display and calculations */ - r11 = cos(DEG2RAD*orientation_angle); - r12 = -sin(DEG2RAD*orientation_angle); - r21 = sin(DEG2RAD*orientation_angle); - r22 = cos(DEG2RAD*orientation_angle); - - /* Rotated corrdinates of the emission areas */ - rC1_x = r11*C1_z + r12*C1_x; - rC1_z = r21*C1_z + r22*C1_x; - rC2_x = r11*C2_z + r12*C2_x; - rC2_z = r21*C2_z + r22*C2_x; - rC3_x = r11*C3_z + r12*C3_x; - rC3_z = r21*C3_z + r22*C3_x; - rT1_x = r11*T1_z + r12*T1_x; - rT1_z = r21*T1_z + r22*T1_x; - rT2_x = r11*T2_z + r12*T2_x; - rT2_z = r21*T2_z + r22*T2_x; - rT3_x = r11*T3_z + r12*T3_x; - rT3_z = r21*T3_z + r22*T3_x; - /* Moderator half-height */ - delta_y = yheight/2.0; - /* Other moderator parms */ - /* "Measured" moderator widths in cm scale */ - Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; - Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; - - if (tfocus_width && tfocus_time && tfocus_dist) { - printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { - printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); - } else { - fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", - NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - exit(-1); - } - - l_range = Lmax-Lmin; - /* Weight multipliers */ - w_mult=acc_power/5; - w_stat=1.0/mcget_ncount(); - w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ - w_geom_t = 0.108*yheight*1.0e4; - w_mult *= l_range; /* wavelength range correction */ - n_pulses=(double)floor(n_pulses); - if (n_pulses == 0) n_pulses=1; - - dxC=dxCold[beamline-1]; - dxT=dxThermal[beamline-1]; - #undef sector - #undef beamline - #undef yheight - #undef cold_frac - #undef target_index - #undef dist - #undef focus_xw - #undef focus_yh - #undef c_performance - #undef t_performance - #undef Lmin - #undef Lmax - #undef tmax_multiplier - #undef n_pulses - #undef acc_power - #undef tfocus_dist - #undef tfocus_time - #undef tfocus_width - #undef target_tsplit - #undef ColdWidths - #undef ThermalWidths - #undef ColdScalars - #undef ThermalScalars - #undef Beamlines - #undef wfrac_cold - #undef wfrac_thermal - #undef C1_x - #undef C1_z - #undef C2_x - #undef C2_z - #undef C3_x - #undef C3_z - #undef T1_x - #undef T1_z - #undef T2_x - #undef T2_z - #undef T3_x - #undef T3_z - #undef rC1_x - #undef rC1_z - #undef rC2_x - #undef rC2_z - #undef rC3_x - #undef rC3_z - #undef rT1_x - #undef rT1_z - #undef rT2_x - #undef rT2_z - #undef rT3_x - #undef rT3_z - #undef tx - #undef ty - #undef tz - #undef r11 - #undef r12 - #undef r21 - #undef r22 - #undef delta_y - #undef Mwidth_c - #undef Mwidth_t - #undef beamportangle - #undef w_mult - #undef w_stat - #undef w_focus - #undef w_tfocus - #undef w_geom_c - #undef w_geom_t - #undef isleft - #undef l_range - #undef cos_thermal - #undef cos_cold - #undef orientation_angle - #undef cx - #undef cz - #undef jmax - #undef dxC - #undef dxT - return(_comp); -} /* class_ESS_butterfly_init */ - -_class_bi_spec_ellipse *class_bi_spec_ellipse_init(_class_bi_spec_ellipse *_comp -) { - #define xheight (_comp->_parameters.xheight) - #define ywidth (_comp->_parameters.ywidth) - #define zlength (_comp->_parameters.zlength) - #define n_mirror (_comp->_parameters.n_mirror) - #define tilt (_comp->_parameters.tilt) - #define n_pieces (_comp->_parameters.n_pieces) - #define angular_offset (_comp->_parameters.angular_offset) - #define m (_comp->_parameters.m) - #define R0_m (_comp->_parameters.R0_m) - #define Qc_m (_comp->_parameters.Qc_m) - #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) - #define W_m (_comp->_parameters.W_m) - #define transmit (_comp->_parameters.transmit) - #define d_focus_1_x (_comp->_parameters.d_focus_1_x) - #define d_focus_2_x (_comp->_parameters.d_focus_2_x) - #define d_focus_1_y (_comp->_parameters.d_focus_1_y) - #define d_focus_2_y (_comp->_parameters.d_focus_2_y) - #define ell_l (_comp->_parameters.ell_l) - #define ell_h (_comp->_parameters.ell_h) - #define ell_w (_comp->_parameters.ell_w) - #define ell_m (_comp->_parameters.ell_m) - #define R0 (_comp->_parameters.R0) - #define Qc (_comp->_parameters.Qc) - #define alpha_mirror (_comp->_parameters.alpha_mirror) - #define W (_comp->_parameters.W) - #define cut (_comp->_parameters.cut) - #define substrate (_comp->_parameters.substrate) - #define reflect_mirror (_comp->_parameters.reflect_mirror) - #define reflect (_comp->_parameters.reflect) - #define pTable (_comp->_parameters.pTable) - SIG_MESSAGE("[_bi_init] component bi=bi_spec_ellipse() INITIALISE [bi_spec_ellipse:0]"); - - - if (reflect && strlen(reflect)) { - if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); - } - if (n_mirror==1) - exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); - - - #undef xheight - #undef ywidth - #undef zlength - #undef n_mirror - #undef tilt - #undef n_pieces - #undef angular_offset - #undef m - #undef R0_m - #undef Qc_m - #undef alpha_mirror_m - #undef W_m - #undef transmit - #undef d_focus_1_x - #undef d_focus_2_x - #undef d_focus_1_y - #undef d_focus_2_y - #undef ell_l - #undef ell_h - #undef ell_w - #undef ell_m - #undef R0 - #undef Qc - #undef alpha_mirror - #undef W - #undef cut - #undef substrate - #undef reflect_mirror - #undef reflect - #undef pTable - return(_comp); -} /* class_bi_spec_ellipse_init */ - -_class_Guide_four_side *class_Guide_four_side_init(_class_Guide_four_side *_comp -) { - #define RIreflect (_comp->_parameters.RIreflect) - #define LIreflect (_comp->_parameters.LIreflect) - #define UIreflect (_comp->_parameters.UIreflect) - #define DIreflect (_comp->_parameters.DIreflect) - #define ROreflect (_comp->_parameters.ROreflect) - #define LOreflect (_comp->_parameters.LOreflect) - #define UOreflect (_comp->_parameters.UOreflect) - #define DOreflect (_comp->_parameters.DOreflect) - #define w1l (_comp->_parameters.w1l) - #define w2l (_comp->_parameters.w2l) - #define linwl (_comp->_parameters.linwl) - #define loutwl (_comp->_parameters.loutwl) - #define w1r (_comp->_parameters.w1r) - #define w2r (_comp->_parameters.w2r) - #define linwr (_comp->_parameters.linwr) - #define loutwr (_comp->_parameters.loutwr) - #define h1u (_comp->_parameters.h1u) - #define h2u (_comp->_parameters.h2u) - #define linhu (_comp->_parameters.linhu) - #define louthu (_comp->_parameters.louthu) - #define h1d (_comp->_parameters.h1d) - #define h2d (_comp->_parameters.h2d) - #define linhd (_comp->_parameters.linhd) - #define louthd (_comp->_parameters.louthd) - #define l (_comp->_parameters.l) - #define R0 (_comp->_parameters.R0) - #define Qcxl (_comp->_parameters.Qcxl) - #define Qcxr (_comp->_parameters.Qcxr) - #define Qcyu (_comp->_parameters.Qcyu) - #define Qcyd (_comp->_parameters.Qcyd) - #define alphaxl (_comp->_parameters.alphaxl) - #define alphaxr (_comp->_parameters.alphaxr) - #define alphayu (_comp->_parameters.alphayu) - #define alphayd (_comp->_parameters.alphayd) - #define Wxr (_comp->_parameters.Wxr) - #define Wxl (_comp->_parameters.Wxl) - #define Wyu (_comp->_parameters.Wyu) - #define Wyd (_comp->_parameters.Wyd) - #define mxr (_comp->_parameters.mxr) - #define mxl (_comp->_parameters.mxl) - #define myu (_comp->_parameters.myu) - #define myd (_comp->_parameters.myd) - #define QcxrOW (_comp->_parameters.QcxrOW) - #define QcxlOW (_comp->_parameters.QcxlOW) - #define QcyuOW (_comp->_parameters.QcyuOW) - #define QcydOW (_comp->_parameters.QcydOW) - #define alphaxlOW (_comp->_parameters.alphaxlOW) - #define alphaxrOW (_comp->_parameters.alphaxrOW) - #define alphayuOW (_comp->_parameters.alphayuOW) - #define alphaydOW (_comp->_parameters.alphaydOW) - #define WxrOW (_comp->_parameters.WxrOW) - #define WxlOW (_comp->_parameters.WxlOW) - #define WyuOW (_comp->_parameters.WyuOW) - #define WydOW (_comp->_parameters.WydOW) - #define mxrOW (_comp->_parameters.mxrOW) - #define mxlOW (_comp->_parameters.mxlOW) - #define myuOW (_comp->_parameters.myuOW) - #define mydOW (_comp->_parameters.mydOW) - #define rwallthick (_comp->_parameters.rwallthick) - #define lwallthick (_comp->_parameters.lwallthick) - #define uwallthick (_comp->_parameters.uwallthick) - #define dwallthick (_comp->_parameters.dwallthick) - #define w1rwt (_comp->_parameters.w1rwt) - #define w1lwt (_comp->_parameters.w1lwt) - #define h1uwt (_comp->_parameters.h1uwt) - #define h1dwt (_comp->_parameters.h1dwt) - #define w2rwt (_comp->_parameters.w2rwt) - #define w2lwt (_comp->_parameters.w2lwt) - #define h2uwt (_comp->_parameters.h2uwt) - #define h2dwt (_comp->_parameters.h2dwt) - #define pawr (_comp->_parameters.pawr) - #define pawl (_comp->_parameters.pawl) - #define pbwr (_comp->_parameters.pbwr) - #define pbwl (_comp->_parameters.pbwl) - #define pahu (_comp->_parameters.pahu) - #define pahd (_comp->_parameters.pahd) - #define pbhu (_comp->_parameters.pbhu) - #define pbhd (_comp->_parameters.pbhd) - #define awl (_comp->_parameters.awl) - #define bwl (_comp->_parameters.bwl) - #define awr (_comp->_parameters.awr) - #define bwr (_comp->_parameters.bwr) - #define ahu (_comp->_parameters.ahu) - #define bhu (_comp->_parameters.bhu) - #define ahd (_comp->_parameters.ahd) - #define bhd (_comp->_parameters.bhd) - #define awlwt (_comp->_parameters.awlwt) - #define bwlwt (_comp->_parameters.bwlwt) - #define awrwt (_comp->_parameters.awrwt) - #define bwrwt (_comp->_parameters.bwrwt) - #define ahuwt (_comp->_parameters.ahuwt) - #define bhuwt (_comp->_parameters.bhuwt) - #define ahdwt (_comp->_parameters.ahdwt) - #define bhdwt (_comp->_parameters.bhdwt) - #define pawrwt (_comp->_parameters.pawrwt) - #define pawlwt (_comp->_parameters.pawlwt) - #define pbwrwt (_comp->_parameters.pbwrwt) - #define pbwlwt (_comp->_parameters.pbwlwt) - #define pahuwt (_comp->_parameters.pahuwt) - #define pahdwt (_comp->_parameters.pahdwt) - #define pbhuwt (_comp->_parameters.pbhuwt) - #define pbhdwt (_comp->_parameters.pbhdwt) - #define a2wlwt (_comp->_parameters.a2wlwt) - #define b2wlwt (_comp->_parameters.b2wlwt) - #define a2wrwt (_comp->_parameters.a2wrwt) - #define b2wrwt (_comp->_parameters.b2wrwt) - #define a2huwt (_comp->_parameters.a2huwt) - #define b2huwt (_comp->_parameters.b2huwt) - #define a2hdwt (_comp->_parameters.a2hdwt) - #define b2hdwt (_comp->_parameters.b2hdwt) - #define a2wl (_comp->_parameters.a2wl) - #define b2wl (_comp->_parameters.b2wl) - #define a2wr (_comp->_parameters.a2wr) - #define b2wr (_comp->_parameters.b2wr) - #define a2hu (_comp->_parameters.a2hu) - #define b2hu (_comp->_parameters.b2hu) - #define a2hd (_comp->_parameters.a2hd) - #define b2hd (_comp->_parameters.b2hd) - #define mru1 (_comp->_parameters.mru1) - #define mru2 (_comp->_parameters.mru2) - #define nru1 (_comp->_parameters.nru1) - #define nru2 (_comp->_parameters.nru2) - #define mrd1 (_comp->_parameters.mrd1) - #define mrd2 (_comp->_parameters.mrd2) - #define nrd1 (_comp->_parameters.nrd1) - #define nrd2 (_comp->_parameters.nrd2) - #define mlu1 (_comp->_parameters.mlu1) - #define mlu2 (_comp->_parameters.mlu2) - #define nlu1 (_comp->_parameters.nlu1) - #define nlu2 (_comp->_parameters.nlu2) - #define mld1 (_comp->_parameters.mld1) - #define mld2 (_comp->_parameters.mld2) - #define nld1 (_comp->_parameters.nld1) - #define nld2 (_comp->_parameters.nld2) - #define z0wr (_comp->_parameters.z0wr) - #define z0wl (_comp->_parameters.z0wl) - #define z0hu (_comp->_parameters.z0hu) - #define z0hd (_comp->_parameters.z0hd) - #define p2parawr (_comp->_parameters.p2parawr) - #define p2parawl (_comp->_parameters.p2parawl) - #define p2parahu (_comp->_parameters.p2parahu) - #define p2parahd (_comp->_parameters.p2parahd) - #define p2parawrwt (_comp->_parameters.p2parawrwt) - #define p2parawlwt (_comp->_parameters.p2parawlwt) - #define p2parahuwt (_comp->_parameters.p2parahuwt) - #define p2parahdwt (_comp->_parameters.p2parahdwt) - #define riTable (_comp->_parameters.riTable) - #define liTable (_comp->_parameters.liTable) - #define uiTable (_comp->_parameters.uiTable) - #define diTable (_comp->_parameters.diTable) - #define roTable (_comp->_parameters.roTable) - #define loTable (_comp->_parameters.loTable) - #define uoTable (_comp->_parameters.uoTable) - #define doTable (_comp->_parameters.doTable) - SIG_MESSAGE("[_NBOA_drawing_1_end_init] component NBOA_drawing_1_end=Guide_four_side() INITIALISE [Guide_four_side:0]"); - - - int i; - - if (RIreflect && strlen (RIreflect)) { - if (Table_Read (&riTable, RIreflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit (fprintf (stderr, "right inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, RIreflect)); - } - - if (LIreflect && strlen (LIreflect)) { - if (Table_Read (&liTable, LIreflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit (fprintf (stderr, "left inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LIreflect)); - } - - if (UIreflect && strlen (UIreflect)) { - if (Table_Read (&uiTable, UIreflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit (fprintf (stderr, "top inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UIreflect)); - } - - if (DIreflect && strlen (DIreflect)) { - if (Table_Read (&diTable, DIreflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit (fprintf (stderr, "botton inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DIreflect)); - } - - if (ROreflect && strlen (ROreflect)) { - if (Table_Read (&roTable, ROreflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit (fprintf (stderr, "right outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, ROreflect)); - } - - if (LOreflect && strlen (LOreflect)) { - if (Table_Read (&loTable, LOreflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit (fprintf (stderr, "left outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LOreflect)); - } - - if (UOreflect && strlen (UOreflect)) { - if (Table_Read (&uoTable, UOreflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit (fprintf (stderr, "top outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UOreflect)); - } - - if (DOreflect && strlen (DOreflect)) { - if (Table_Read (&doTable, DOreflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit (fprintf (stderr, "botton outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DOreflect)); - } - - if (w1r < 0) - TEST_INPUT ("w1r", NAME_CURRENT_COMP); - - if (w1l < 0) - TEST_INPUT ("w1l", NAME_CURRENT_COMP); - - if (h1u < 0) - TEST_INPUT ("h1u", NAME_CURRENT_COMP); - - if (h1d < 0) - TEST_INPUT ("h1d", NAME_CURRENT_COMP); - - if (w2r < 0) - TEST_INPUT ("w2r", NAME_CURRENT_COMP); - - if (w2l < 0) - TEST_INPUT ("w2l", NAME_CURRENT_COMP); - - if (h2u < 0) - TEST_INPUT ("h2u", NAME_CURRENT_COMP); - - if (h2d < 0) - TEST_INPUT ("h2d", NAME_CURRENT_COMP); - - if (mxrOW != -1 && mxrOW < 0) - TEST_INPUT_1 ("mxrOW", NAME_CURRENT_COMP); - - if (mxlOW != -1 && mxlOW < 0) - TEST_INPUT_1 ("mxlOW", NAME_CURRENT_COMP); - - if (myuOW != -1 && myuOW < 0) - TEST_INPUT_1 ("myuOW", NAME_CURRENT_COMP); - - if (mydOW != -1 && mydOW < 0) - TEST_INPUT_1 ("mydOW", NAME_CURRENT_COMP); - - if (mxr < 0 && mxr != -1) - TEST_INPUT_1 ("mxr", NAME_CURRENT_COMP); - - if (mxl < 0 && mxl != -1) - TEST_INPUT_1 ("mxl", NAME_CURRENT_COMP); - - if (myu < 0 && myu != -1) - TEST_INPUT_1 ("myu", NAME_CURRENT_COMP); - - if (myd < 0 && myd != -1) - TEST_INPUT_1 ("myd", NAME_CURRENT_COMP); - - if (Qcxl < 0) - TEST_INPUT_2 ("Qcxl", NAME_CURRENT_COMP); - - if (Qcxr < 0) - TEST_INPUT_2 ("Qcxr", NAME_CURRENT_COMP); - - if (Qcyu < 0) - TEST_INPUT_2 ("Qcyu", NAME_CURRENT_COMP); - - if (Qcyd < 0) - TEST_INPUT_2 ("Qcyd", NAME_CURRENT_COMP); - - if (alphaxl < 0) - TEST_INPUT_2 ("alphaxl", NAME_CURRENT_COMP); - - if (alphaxr < 0) - TEST_INPUT_2 ("alphaxr", NAME_CURRENT_COMP); - - if (alphayu < 0) - TEST_INPUT_2 ("alphayu", NAME_CURRENT_COMP); - - if (alphayd < 0) - TEST_INPUT_2 ("alphayd", NAME_CURRENT_COMP); - - if (QcxlOW < 0) - TEST_INPUT_2 ("QcxlOW", NAME_CURRENT_COMP); - - if (QcxrOW < 0) - TEST_INPUT_2 ("QcxrOW", NAME_CURRENT_COMP); - - if (QcyuOW < 0) - TEST_INPUT_2 ("QcyuOW", NAME_CURRENT_COMP); - - if (QcydOW < 0) - TEST_INPUT_2 ("QcydOW", NAME_CURRENT_COMP); - - if (alphaxlOW < 0) - TEST_INPUT_2 ("alphaxlOW", NAME_CURRENT_COMP); - - if (alphaxrOW < 0) - TEST_INPUT_2 ("alphaxrOW", NAME_CURRENT_COMP); - - if (alphayuOW < 0) - TEST_INPUT_2 ("alphayuOW", NAME_CURRENT_COMP); - - if (alphaydOW < 0) - TEST_INPUT_2 ("alphaydOW", NAME_CURRENT_COMP); - - if (rwallthick < 0) - TEST_INPUT_2 ("rwallthick", NAME_CURRENT_COMP); - - if (lwallthick < 0) - TEST_INPUT_2 ("lwallthick", NAME_CURRENT_COMP); - - if (uwallthick < 0) - TEST_INPUT_2 ("uwallthick", NAME_CURRENT_COMP); - - if (dwallthick < 0) - TEST_INPUT_2 ("dwallthick", NAME_CURRENT_COMP); - - if (Wxr <= 0) - TEST_INPUT_3 ("Wxr", NAME_CURRENT_COMP); - - if (Wxl <= 0) - TEST_INPUT_3 ("Wxl", NAME_CURRENT_COMP); - - if (Wyu <= 0) - TEST_INPUT_3 ("Wyu", NAME_CURRENT_COMP); - - if (Wyd <= 0) - TEST_INPUT_3 ("Wyd", NAME_CURRENT_COMP); - - if (WxrOW <= 0) - TEST_INPUT_3 ("WxrOW", NAME_CURRENT_COMP); - - if (WxlOW <= 0) - TEST_INPUT_3 ("WxlOW", NAME_CURRENT_COMP); - - if (WyuOW <= 0) - TEST_INPUT_3 ("WyuOW", NAME_CURRENT_COMP); - - if (WydOW <= 0) - TEST_INPUT_3 ("WydOW", NAME_CURRENT_COMP); - - if (l <= 0) { - fprintf (stderr, "Component: %s (Guide_four_side) real guide length \n", NAME_CURRENT_COMP); - fprintf (stderr, " is <= ZERO ! \n"); - exit (-1); - } - - if (mcgravitation) - fprintf (stderr, - "WARNING: Guide_four_side: %s: " - "This component produces wrong results with gravitation !\n" - "Use Guide_gravity.\n", - NAME_CURRENT_COMP); - - /* Calculation of curve-parameters for the right side wall - negative x-axis */ - - /* Calculation of curve-parameters for the right side wall - negative x-axis */ - - if (loutwr != 0 && linwr != 0) /* elliptic right side wall */ - { - ELLIPSE (w1r, l, linwr, loutwr, rwallthick, &awr, &bwr, &a2wr, &b2wr, &z0wr, &w2r, &awrwt, &a2wrwt, &bwrwt, &b2wrwt, &w2rwt, &w1rwt); - } - - if (linwr == 0 && loutwr != 0) /* parabolic focusing right side wall */ - { - PARABEL_FOCUS (w1r, l, loutwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); - } - - if (linwr != 0 && loutwr == 0) /* parabolic defocusing right side wall */ - { - PARABEL_DEFOCUS (w1r, l, linwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); - } - - if (linwr == 0 && loutwr == 0) /* straight right side wall */ - { - LINEAR (w1r, w2r, l, rwallthick, &w1rwt, &w2rwt); - } - - /* Calculation of curve-parameters for the left side wall - positive x-axis - analog to right side*/ - - if ((linwl != 0) && (loutwl != 0)) /* elleptic left side wall */ - { - ELLIPSE (w1l, l, linwl, loutwl, lwallthick, &awl, &bwl, &a2wl, &b2wl, &z0wl, &w2l, &awlwt, &a2wlwt, &bwlwt, &b2wlwt, &w2lwt, &w1lwt); - } - - if (linwl == 0 && loutwl != 0) /* parabolic focusing left side wall */ - { - PARABEL_FOCUS (w1l, l, loutwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); - } - - if (linwl != 0 && loutwl == 0) /* parabolic defocusing left side wall */ - { - PARABEL_DEFOCUS (w1l, l, linwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); - } - - if (linwl == 0 && loutwl == 0) /* straight left side wall */ - { - LINEAR (w1l, w2l, l, lwallthick, &w1lwt, &w2lwt); - } - - /* Calculation of curve-parameters for the top wall - positive y-axis - analog right wall*/ - - if (linhu != 0 && louthu != 0) /* elliptic top wall */ - { - ELLIPSE (h1u, l, linhu, louthu, uwallthick, &ahu, &bhu, &a2hu, &b2hu, &z0hu, &h2u, &ahuwt, &a2huwt, &bhuwt, &b2huwt, &h2uwt, &h1uwt); - } - - if (linhu == 0 && louthu != 0) /* parabolic focusing top wall */ - { - PARABEL_FOCUS (h1u, l, louthu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); - } - - if (linhu != 0 && louthu == 0) /* parabolic defocusing top wall */ - { - PARABEL_DEFOCUS (h1u, l, linhu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); - } - - if (linhu == 0 && louthu == 0) { - LINEAR (h1u, h2u, l, uwallthick, &h1uwt, &h2uwt); - } - - /* Calculation of curve-parameters for the bottom wall - negative y-axis - analog right wall */ - - if (linhd != 0 && louthd != 0) /* elliptic bottom wall */ - { - ELLIPSE (h1d, l, linhd, louthd, dwallthick, &ahd, &bhd, &a2hd, &b2hd, &z0hd, &h2d, &ahdwt, &a2hdwt, &bhdwt, &b2hdwt, &h2dwt, &h1dwt); - } - - if (linhd == 0 && louthd != 0) /* parabolic focusing bottom wall */ - { - PARABEL_FOCUS (h1d, l, louthd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); - } - - if (linhd != 0 && louthd == 0) /* parabolic defocusing bottom wall */ - { - PARABEL_DEFOCUS (h1d, l, linhd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); - } - - if (linhd == 0 && louthd == 0) { - LINEAR (h1d, h2d, l, dwallthick, &h1dwt, &h2dwt); - } - - mru1 = (h1uwt - h1u) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right upper corner*/ - nru1 = h1u - mru1 * (-w1r); - - mrd1 = (-h1dwt + h1d) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right lower corner*/ - nrd1 = -h1d - mrd1 * (-w1r); - - mlu1 = (h1uwt - h1u) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left upper corner*/ - nlu1 = h1u - mlu1 * w1l; - - mld1 = (-h1dwt + h1d) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left lower corner*/ - nld1 = -h1d - mld1 * w1l; - - mru2 = (h2u - h2uwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right upper corner*/ - nru2 = h2u - mru2 * (-w2r); - - mrd2 = (-h2d + h2dwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right lower corner*/ - nrd2 = -h2d - mrd2 * (-w2r); - - mlu2 = (h2u - h2uwt) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left upper corner*/ - nlu2 = h2u - mlu2 * w2l; - - mld2 = (h2dwt - h2d) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left lower corner*/ - nld2 = -h2d - mld2 * w2l; - #undef RIreflect - #undef LIreflect - #undef UIreflect - #undef DIreflect - #undef ROreflect - #undef LOreflect - #undef UOreflect - #undef DOreflect - #undef w1l - #undef w2l - #undef linwl - #undef loutwl - #undef w1r - #undef w2r - #undef linwr - #undef loutwr - #undef h1u - #undef h2u - #undef linhu - #undef louthu - #undef h1d - #undef h2d - #undef linhd - #undef louthd - #undef l - #undef R0 - #undef Qcxl - #undef Qcxr - #undef Qcyu - #undef Qcyd - #undef alphaxl - #undef alphaxr - #undef alphayu - #undef alphayd - #undef Wxr - #undef Wxl - #undef Wyu - #undef Wyd - #undef mxr - #undef mxl - #undef myu - #undef myd - #undef QcxrOW - #undef QcxlOW - #undef QcyuOW - #undef QcydOW - #undef alphaxlOW - #undef alphaxrOW - #undef alphayuOW - #undef alphaydOW - #undef WxrOW - #undef WxlOW - #undef WyuOW - #undef WydOW - #undef mxrOW - #undef mxlOW - #undef myuOW - #undef mydOW - #undef rwallthick - #undef lwallthick - #undef uwallthick - #undef dwallthick - #undef w1rwt - #undef w1lwt - #undef h1uwt - #undef h1dwt - #undef w2rwt - #undef w2lwt - #undef h2uwt - #undef h2dwt - #undef pawr - #undef pawl - #undef pbwr - #undef pbwl - #undef pahu - #undef pahd - #undef pbhu - #undef pbhd - #undef awl - #undef bwl - #undef awr - #undef bwr - #undef ahu - #undef bhu - #undef ahd - #undef bhd - #undef awlwt - #undef bwlwt - #undef awrwt - #undef bwrwt - #undef ahuwt - #undef bhuwt - #undef ahdwt - #undef bhdwt - #undef pawrwt - #undef pawlwt - #undef pbwrwt - #undef pbwlwt - #undef pahuwt - #undef pahdwt - #undef pbhuwt - #undef pbhdwt - #undef a2wlwt - #undef b2wlwt - #undef a2wrwt - #undef b2wrwt - #undef a2huwt - #undef b2huwt - #undef a2hdwt - #undef b2hdwt - #undef a2wl - #undef b2wl - #undef a2wr - #undef b2wr - #undef a2hu - #undef b2hu - #undef a2hd - #undef b2hd - #undef mru1 - #undef mru2 - #undef nru1 - #undef nru2 - #undef mrd1 - #undef mrd2 - #undef nrd1 - #undef nrd2 - #undef mlu1 - #undef mlu2 - #undef nlu1 - #undef nlu2 - #undef mld1 - #undef mld2 - #undef nld1 - #undef nld2 - #undef z0wr - #undef z0wl - #undef z0hu - #undef z0hd - #undef p2parawr - #undef p2parawl - #undef p2parahu - #undef p2parahd - #undef p2parawrwt - #undef p2parawlwt - #undef p2parahuwt - #undef p2parahdwt - #undef riTable - #undef liTable - #undef uiTable - #undef diTable - #undef roTable - #undef loTable - #undef uoTable - #undef doTable - return(_comp); -} /* class_Guide_four_side_init */ - -_class_MultiDiskChopper *class_MultiDiskChopper_init(_class_MultiDiskChopper *_comp -) { - #define slit_center (_comp->_parameters.slit_center) - #define slit_width (_comp->_parameters.slit_width) - #define nslits (_comp->_parameters.nslits) - #define delta_y (_comp->_parameters.delta_y) - #define nu (_comp->_parameters.nu) - #define nrev (_comp->_parameters.nrev) - #define ratio (_comp->_parameters.ratio) - #define jitter (_comp->_parameters.jitter) - #define delay (_comp->_parameters.delay) - #define isfirst (_comp->_parameters.isfirst) - #define phase (_comp->_parameters.phase) - #define radius (_comp->_parameters.radius) - #define equal (_comp->_parameters.equal) - #define abs_out (_comp->_parameters.abs_out) - #define verbose (_comp->_parameters.verbose) - #define T (_comp->_parameters.T) - #define To (_comp->_parameters.To) - #define omega (_comp->_parameters.omega) - #define dslit_center (_comp->_parameters.dslit_center) - #define dhslit_width (_comp->_parameters.dhslit_width) - #define t0 (_comp->_parameters.t0) - #define t1 (_comp->_parameters.t1) - SIG_MESSAGE("[_wfmc_1_init] component wfmc_1=MultiDiskChopper() INITIALISE [MultiDiskChopper:0]"); - - char* pch; - int i; - double sense; - - phase = remainder (phase, 360.0) * DEG2RAD; - omega = 2.0 * PI * nu; /* rad/s */ - sense = (omega < 0) ? -1 : 1; - - if (isfirst && (nrev - floor (nrev) != 0)) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) - exit (-1); - } - - if (!omega) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - - if (nslits <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) - } - - // Read slits in array - dslit_center = malloc (nslits * sizeof (*dslit_center)); - pch = strtok (slit_center, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dslit_center[i] = atof (pch); - pch = strtok (NULL, ";_, "); - - if ((dslit_center[i] < 0)) { - while (dslit_center[i] < 0) { - dslit_center[i] += 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - if ((dslit_center[i] >= 360.0)) { - while (dslit_center[i] >= 360.0) { - dslit_center[i] -= 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - dslit_center[i] *= DEG2RAD; - } - - // dhslit_width: HALF slit width - dhslit_width = malloc (nslits * sizeof (*dhslit_width)); - pch = strtok (slit_width, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dhslit_width[i] = 0.5 * atof (pch); - pch = strtok (NULL, ";_, "); - if (dhslit_width[i] <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) - exit (-1); - } - dhslit_width[i] *= DEG2RAD; - } - - /* Calculate delay from phase and vice versa */ - if (phase) { - if (delay) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) - } - phase -= delay * omega; - delay = -phase / omega; - } else { - phase = delay * omega; - } - - /* Time for 1 revolution */ - T = 2.0 * PI / fabs (omega); - - // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE - - /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ - - // generate times t1: duration of slit openings (or their cumulative sum if !equal) - // dhslit_width is already in rad - t1 = malloc (nslits * sizeof (*t1)); - t1[0] = 2.0 * dhslit_width[0] / fabs (omega); - To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit - - for (i = 1; i < nslits; i++) { - t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); - To += (2.0 * dhslit_width[i] / fabs (omega)); - } - - // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) - t0 = malloc (nslits * sizeof (*t0)); - t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); - - for (i = 1; i < nslits; i++) { - t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); - } - - MPI_MASTER (if (verbose) { - printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); - printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); - printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); - - if (isfirst && equal) - printf (" --- first chopper distributing events equally on all slits\n"); - - if (isfirst && !equal) - printf (" --- first chopper distributing events proportional to slit size\n"); - - if (isfirst) - printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); - - printf (" --- Slit center [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", dslit_center[i] * RAD2DEG); - printf ("\n"); - printf (" --- Slit width [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); - printf ("\n"); - - // dump internal arrays for debugging - if (verbose == 2) { - printf (" --- Internal arrays:\n"); - printf (" --- i t0 t1 dslit_center dhslit_width\n"); - for (i = 0; i < nslits; i++) { - printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); - } - } - }) - #undef slit_center - #undef slit_width - #undef nslits - #undef delta_y - #undef nu - #undef nrev - #undef ratio - #undef jitter - #undef delay - #undef isfirst - #undef phase - #undef radius - #undef equal - #undef abs_out - #undef verbose - #undef T - #undef To - #undef omega - #undef dslit_center - #undef dhslit_width - #undef t0 - #undef t1 - return(_comp); -} /* class_MultiDiskChopper_init */ - -_class_Slit *class_Slit_init(_class_Slit *_comp -) { - #define xmin (_comp->_parameters.xmin) - #define xmax (_comp->_parameters.xmax) - #define ymin (_comp->_parameters.ymin) - #define ymax (_comp->_parameters.ymax) - #define radius (_comp->_parameters.radius) - #define xwidth (_comp->_parameters.xwidth) - #define yheight (_comp->_parameters.yheight) - #define isradial (_comp->_parameters.isradial) - SIG_MESSAGE("[_pinhole_1_init] component pinhole_1=Slit() INITIALISE [Slit:0]"); - - if (is_unset (radius)) { - isradial = 0; - if (all_set (3, xwidth, xmin, xmax)) { - slit_error_if (xwidth != xmax - xmin, "specifying xwidth, xmin and xmax requires consistent parameters", NAME_CURRENT_COMP); - } else { - slit_error_if (is_unset (xwidth) && any_unset (2, xmin, xmax), "specify either xwidth or xmin & xmax", NAME_CURRENT_COMP); - } - if (all_set (3, yheight, ymin, ymax)) { - slit_error_if (yheight != ymax - ymin, "specifying yheight, ymin and ymax requires consistent parameters", NAME_CURRENT_COMP); - } else { - slit_error_if (is_unset (yheight) && any_unset (2, ymin, ymax), "specify either yheight or ymin & ymax", NAME_CURRENT_COMP); - } - if (is_unset (xmin)) { // xmax also unset but xwidth *is* set - xmax = xwidth / 2; - xmin = -xmax; - } - if (is_unset (ymin)) { // ymax also unset but yheight *is* set - ymax = yheight / 2; - ymin = -ymax; - } - slit_warning_if (xmin == xmax || ymin == ymax, "Running with CLOSED rectangular slit - is this intentional?", NAME_CURRENT_COMP); - } else { - isradial = 1; - slit_error_if (any_set (6, xwidth, xmin, xmax, yheight, ymin, ymax), "specify radius OR width and height parameters", NAME_CURRENT_COMP); - slit_warning_if (radius == 0., "Running with CLOSED radial slit - is this intentional?", NAME_CURRENT_COMP); - } - #undef xmin - #undef xmax - #undef ymin - #undef ymax - #undef radius - #undef xwidth - #undef yheight - #undef isradial - return(_comp); -} /* class_Slit_init */ - -_class_DiskChopper *class_DiskChopper_init(_class_DiskChopper *_comp -) { - #define theta_0 (_comp->_parameters.theta_0) - #define radius (_comp->_parameters.radius) - #define yheight (_comp->_parameters.yheight) - #define nu (_comp->_parameters.nu) - #define nslit (_comp->_parameters.nslit) - #define jitter (_comp->_parameters.jitter) - #define delay (_comp->_parameters.delay) - #define isfirst (_comp->_parameters.isfirst) - #define n_pulse (_comp->_parameters.n_pulse) - #define abs_out (_comp->_parameters.abs_out) - #define phase (_comp->_parameters.phase) - #define xwidth (_comp->_parameters.xwidth) - #define verbose (_comp->_parameters.verbose) - #define Tg (_comp->_parameters.Tg) - #define To (_comp->_parameters.To) - #define delta_y (_comp->_parameters.delta_y) - #define height (_comp->_parameters.height) - #define omega (_comp->_parameters.omega) - SIG_MESSAGE("[_bp1_chopper_init] component bp1_chopper=DiskChopper() INITIALISE [DiskChopper:0]"); - - /* If slit height 'unset', assume full opening */ - if (yheight == 0) { - height = radius; - } else { - height = yheight; - } - delta_y = radius - height / 2; /* radius at beam center */ - omega = 2.0 * PI * nu; /* rad/s */ - if (xwidth && !theta_0 && radius) - theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); - - if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { - fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); - exit (-1); - } - if (nslit * theta_0 >= 360) { - fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); - exit (-1); - } - if (yheight && yheight > radius) { - fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); - exit (-1); - } - if (isfirst && n_pulse <= 0) { - fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); - exit (-1); - } - if (!omega) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - if (!abs_out) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); - } - - theta_0 *= DEG2RAD; - - /* Calulate delay from phase and vice versa */ - if (phase) { - if (delay) { - fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); - } - phase *= DEG2RAD; - /* 'Delay' should always be a delay, taking rotation direction into account: */ - delay = phase / fabs (omega); - } else { - phase = delay * omega; /* rad */ - } - - /* Time from opening of slit to next opening of slit */ - Tg = 2.0 * PI / fabs (omega) / nslit; - - /* How long can neutrons pass the Chopper at a single point */ - To = theta_0 / fabs (omega); - - if (!xwidth) - xwidth = 2 * delta_y * sin (theta_0 / 2); - - if (verbose && nu) { - printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); - printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); - } - #undef theta_0 - #undef radius - #undef yheight - #undef nu - #undef nslit - #undef jitter - #undef delay - #undef isfirst - #undef n_pulse - #undef abs_out - #undef phase - #undef xwidth - #undef verbose - #undef Tg - #undef To - #undef delta_y - #undef height - #undef omega - return(_comp); -} /* class_DiskChopper_init */ - -_class_Monitor_nD *class_Monitor_nD_init(_class_Monitor_nD *_comp -) { - #define user1 (_comp->_parameters.user1) - #define user2 (_comp->_parameters.user2) - #define user3 (_comp->_parameters.user3) - #define xwidth (_comp->_parameters.xwidth) - #define yheight (_comp->_parameters.yheight) - #define zdepth (_comp->_parameters.zdepth) - #define xmin (_comp->_parameters.xmin) - #define xmax (_comp->_parameters.xmax) - #define ymin (_comp->_parameters.ymin) - #define ymax (_comp->_parameters.ymax) - #define zmin (_comp->_parameters.zmin) - #define zmax (_comp->_parameters.zmax) - #define bins (_comp->_parameters.bins) - #define min (_comp->_parameters.min) - #define max (_comp->_parameters.max) - #define restore_neutron (_comp->_parameters.restore_neutron) - #define radius (_comp->_parameters.radius) - #define options (_comp->_parameters.options) - #define filename (_comp->_parameters.filename) - #define geometry (_comp->_parameters.geometry) - #define nowritefile (_comp->_parameters.nowritefile) - #define username1 (_comp->_parameters.username1) - #define username2 (_comp->_parameters.username2) - #define username3 (_comp->_parameters.username3) - #define tsplit (_comp->_parameters.tsplit) - #define adaptive_target (_comp->_parameters.adaptive_target) - #define DEFS (_comp->_parameters.DEFS) - #define Vars (_comp->_parameters.Vars) - #define detector (_comp->_parameters.detector) - #define offdata (_comp->_parameters.offdata) - SIG_MESSAGE("[_sample_PSD_init] component sample_PSD=Monitor_nD() INITIALISE [Monitor_nD:0]"); - - char tmp[CHAR_BUF_LENGTH]; - strcpy (Vars.compcurname, NAME_CURRENT_COMP); - Vars.compcurindex = INDEX_CURRENT_COMP; - if (options != NULL) - strncpy (Vars.option, options, CHAR_BUF_LENGTH); - else { - strcpy (Vars.option, "x y"); - printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); - } - Vars.compcurpos = POS_A_CURRENT_COMP; - - if (strstr (Vars.option, "source")) - strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); - - if (bins) { - sprintf (tmp, " all bins=%ld ", (long)bins); - strcat (Vars.option, tmp); - } - if (min > -FLT_MAX && max < FLT_MAX) { - sprintf (tmp, " all limits=[%g %g]", min, max); - strcat (Vars.option, tmp); - } else if (min > -FLT_MAX) { - sprintf (tmp, " all min=%g", min); - strcat (Vars.option, tmp); - } else if (max < FLT_MAX) { - sprintf (tmp, " all max=%g", max); - strcat (Vars.option, tmp); - } - - /* transfer, "zero", and check username- and user variable strings to Vars struct*/ - strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); - strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); - strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); - if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { - strncpy (Vars.UserVariable1, user1, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable1, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); - } - } - if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { - strncpy (Vars.UserVariable2, user2, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable2, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); - } - } - if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { - strncpy (Vars.UserVariable3, user3, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable3, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); - } - } - - /*sanitize parameters set for curved shapes*/ - if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { - /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ - if (!radius) { - if (xwidth) { - radius = xwidth / 2.0; - } else { - radius = zdepth / 2.0; - } - } else { - xwidth = 2 * radius; - } - if (!yheight) { - /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ - yheight = 2 * radius; - } - } else if (radius) { - /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values - (xwidth etc. They are used inside monitor_nd-lib.*/ - xwidth = zdepth = 2 * radius; - if (yheight) { - /*a height is given (and no shape explitly set - assume cylinder*/ - strcat (Vars.option, " banana"); - } else { - strcat (Vars.option, " sphere"); - yheight = 2 * radius; - } - } - - int offflag = 0; - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - #ifndef USE_OFF - fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); - exit (-1); - #else - if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { - printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" - " Defaulting to normal Monitor dimensions.\n", - NAME_CURRENT_COMP, geometry); - strcpy (geometry, ""); - } else { - offflag = 1; - } - #endif - } - - if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) - exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); - - Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); - - if (Vars.Flag_OFF) { - offdata.mantidflag = Vars.Flag_mantid; - offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; - } - - if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) - strncpy (Vars.Mon_File, filename, 128); - - /* check if user given filename with ext will be used more than once */ - if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { - char* XY; - XY = strrchr (Vars.Mon_File, '.'); - *XY = '_'; - } - - if (restore_neutron) - Vars.Flag_parallel = 1; - detector.m = 0; - - #ifdef USE_MPI - MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) - printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" - "WARNING this may create incorrect distributions (but integrated flux will be right).\n", - NAME_CURRENT_COMP);); - #else - #ifdef OPENACC - if (strstr (Vars.option, "auto")) - printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" - "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", - NAME_CURRENT_COMP); - #endif - #endif - #undef user1 - #undef user2 - #undef user3 - #undef xwidth - #undef yheight - #undef zdepth - #undef xmin - #undef xmax - #undef ymin - #undef ymax - #undef zmin - #undef zmax - #undef bins - #undef min - #undef max - #undef restore_neutron - #undef radius - #undef options - #undef filename - #undef geometry - #undef nowritefile - #undef username1 - #undef username2 - #undef username3 - #undef tsplit - #undef adaptive_target - #undef DEFS - #undef Vars - #undef detector - #undef offdata - return(_comp); -} /* class_Monitor_nD_init */ - - - -int init(void) { /* called by mccode_main for ODIN_TOF_train3:INITIALISE */ - DEBUG_INSTR(); - // Initialise rng - srandom(_hash(mcseed-1)); - - /* code_main/parseoptions/readparams sets instrument parameters value */ - stracpy(instrument->_name, "ODIN_TOF_train3", 256); - - /* Instrument 'ODIN_TOF_train3' INITIALISE */ - SIG_MESSAGE("[ODIN_TOF_train3] INITIALISE [(null):-1]"); - #define l_min (instrument->_parameters.l_min) - #define l_max (instrument->_parameters.l_max) - #define n_pulses (instrument->_parameters.n_pulses) - #define wfm_delta (instrument->_parameters.wfm_delta) - #define bp_frequency (instrument->_parameters.bp_frequency) - #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) - #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) - #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) - #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) - #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) - #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) - #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) - #define jitter_bp1 (instrument->_parameters.jitter_bp1) - #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) - #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) - #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) - #define jitter_bp2 (instrument->_parameters.jitter_bp2) - #define t0_phase_offset (instrument->_parameters.t0_phase_offset) - #define jit_t0_sec (instrument->_parameters.jit_t0_sec) - #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) - #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) - #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) - #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) - #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) - #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) - #define choppers (instrument->_parameters.choppers) - #define target_tsplit (instrument->_parameters.target_tsplit) -{ -// Start of initialize for generated ODIN -WFM1_phase = WFM1_phase_offset; -WFM1_phase += 97.55; -WFM2_phase = WFM2_phase_offset; -WFM2_phase += -5.88015; -fo1_phase = fo1_phase_offset; -fo1_phase += -65.625; -bp1_phase = bp1_phase_offset; -bp1_phase += -11.475; -fo2_phase = fo2_phase_offset; -fo2_phase += -20.5; -bp2_phase = bp2_phase_offset; -bp2_phase += 185.195; -t0_phase = t0_phase_offset; -fo3_phase = fo3_phase_offset; -fo3_phase += 137.47; -fo4_phase = fo4_phase_offset; -fo4_phase += 111.700; -fo5_phase = fo5_phase_offset; -fo5_phase += -81.105; - -adaptive_N=NTOF; -total_arrived=0; -total_N_sent=0; -total_rays_sent=0; - - -MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "w"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); -); -} - #undef l_min - #undef l_max - #undef n_pulses - #undef wfm_delta - #undef bp_frequency - #undef WFM1_phase_offset - #undef jitter_wfmc_1 - #undef WFM2_phase_offset - #undef jitter_wfmc_2 - #undef fo1_phase_offset - #undef jitter_fo_chopper_1 - #undef bp1_phase_offset - #undef jitter_bp1 - #undef fo2_phase_offset - #undef jitter_fo_chopper_2 - #undef bp2_phase_offset - #undef jitter_bp2 - #undef t0_phase_offset - #undef jit_t0_sec - #undef fo3_phase_offset - #undef jitter_fo_chopper_3 - #undef fo4_phase_offset - #undef jitter_fo_chopper_4 - #undef fo5_phase_offset - #undef jitter_fo_chopper_5 - #undef choppers - #undef target_tsplit - _Origin_setpos(); /* type Progress_bar */ - _optical_axis_setpos(); /* type Arm */ - _Source_setpos(); /* type ESS_butterfly */ - _Start_of_bi_setpos(); /* type Arm */ - _bi_setpos(); /* type bi_spec_ellipse */ - _End_of_bi_setpos(); /* type Arm */ - _NBOA_drawing_1_end_setpos(); /* type Guide_four_side */ - _g1a2_setpos(); /* type Guide_four_side */ - _g1a3_setpos(); /* type Guide_four_side */ - _g1b1_setpos(); /* type Guide_four_side */ - _g1c1_setpos(); /* type Guide_four_side */ - _wfm_position_setpos(); /* type Arm */ - _wfm_1_position_setpos(); /* type Arm */ - _wfmc_1_setpos(); /* type MultiDiskChopper */ - _pinhole_1_setpos(); /* type Slit */ - _wfm_2_position_setpos(); /* type Arm */ - _wfmc_2_setpos(); /* type MultiDiskChopper */ - _g2a1_setpos(); /* type Guide_four_side */ - _monitor_1_position_setpos(); /* type Arm */ - _g2a2_setpos(); /* type Guide_four_side */ - _fo1_position_setpos(); /* type Arm */ - _fo_chopper_1_setpos(); /* type MultiDiskChopper */ - _bp1_position_setpos(); /* type Arm */ - _bp1_chopper_setpos(); /* type DiskChopper */ - _g2b1_setpos(); /* type Guide_four_side */ - _g2b2_setpos(); /* type Guide_four_side */ - _g2b3_setpos(); /* type Guide_four_side */ - _g2b4_setpos(); /* type Guide_four_side */ - _fo2_position_setpos(); /* type Arm */ - _fo_chopper_2_setpos(); /* type MultiDiskChopper */ - _bp2_position_setpos(); /* type Arm */ - _bp_chopper2_setpos(); /* type DiskChopper */ - _g2c1_setpos(); /* type Guide_four_side */ - _t0_start_position_setpos(); /* type Arm */ - _t0_chopper_alpha_setpos(); /* type DiskChopper */ - _t0_end_position_setpos(); /* type Arm */ - _t0_chopper_beta_setpos(); /* type DiskChopper */ - _g3a1_setpos(); /* type Guide_four_side */ - _g3a2_setpos(); /* type Guide_four_side */ - _fo3_position_setpos(); /* type Arm */ - _fo_chopper_3_setpos(); /* type MultiDiskChopper */ - _g3b1_setpos(); /* type Guide_four_side */ - _g4a1_setpos(); /* type Guide_four_side */ - _monitor_2_position_setpos(); /* type Arm */ - _g4a2_setpos(); /* type Guide_four_side */ - _g4a3_setpos(); /* type Guide_four_side */ - _fo4_position_setpos(); /* type Arm */ - _fo_chopper_4_setpos(); /* type MultiDiskChopper */ - _g4b1_setpos(); /* type Guide_four_side */ - _g4b2_setpos(); /* type Guide_four_side */ - _g4b3_setpos(); /* type Guide_four_side */ - _g4b4_setpos(); /* type Guide_four_side */ - _g4b5_setpos(); /* type Guide_four_side */ - _g4b6_setpos(); /* type Guide_four_side */ - _g5a1_setpos(); /* type Guide_four_side */ - _fo5_position_setpos(); /* type Arm */ - _fo_chopper_5_setpos(); /* type MultiDiskChopper */ - _g5b1_setpos(); /* type Guide_four_side */ - _g5b2_setpos(); /* type Guide_four_side */ - _g5b3_setpos(); /* type Guide_four_side */ - _g5b4_setpos(); /* type Guide_four_side */ - _g5b5_setpos(); /* type Guide_four_side */ - _g5b6_setpos(); /* type Guide_four_side */ - _g6a1_setpos(); /* type Guide_four_side */ - _g6a2_setpos(); /* type Guide_four_side */ - _g6a3_setpos(); /* type Guide_four_side */ - _guide_end_setpos(); /* type Arm */ - _monitor_3_position_setpos(); /* type Arm */ - _start_backend_setpos(); /* type Arm */ - _optical_axis_backend_setpos(); /* type Arm */ - _pinhole_2_setpos(); /* type Slit */ - _graph_setpos(); /* type Graphite_Diffuser */ - _sample_monitor_arm_setpos(); /* type Arm */ - _sample_PSD_setpos(); /* type Monitor_nD */ - _profile_x_setpos(); /* type Monitor_nD */ - _profile_y_setpos(); /* type Monitor_nD */ - _wavelength_setpos(); /* type Monitor_nD */ - _tof_setpos(); /* type Monitor_nD */ - _wavelength_tof_setpos(); /* type Monitor_nD */ - _sample_position_setpos(); /* type Arm */ - - /* call iteratively all components INITIALISE */ - class_Progress_bar_init(&_Origin_var); - - - class_ESS_butterfly_init(&_Source_var); - - - class_bi_spec_ellipse_init(&_bi_var); - - - class_Guide_four_side_init(&_NBOA_drawing_1_end_var); - - class_Guide_four_side_init(&_g1a2_var); - - class_Guide_four_side_init(&_g1a3_var); - - class_Guide_four_side_init(&_g1b1_var); - - class_Guide_four_side_init(&_g1c1_var); - - - - class_MultiDiskChopper_init(&_wfmc_1_var); - - class_Slit_init(&_pinhole_1_var); - - - class_MultiDiskChopper_init(&_wfmc_2_var); - - class_Guide_four_side_init(&_g2a1_var); - - - class_Guide_four_side_init(&_g2a2_var); - - - class_MultiDiskChopper_init(&_fo_chopper_1_var); - - - class_DiskChopper_init(&_bp1_chopper_var); - - class_Guide_four_side_init(&_g2b1_var); - - class_Guide_four_side_init(&_g2b2_var); - - class_Guide_four_side_init(&_g2b3_var); - - class_Guide_four_side_init(&_g2b4_var); - - - class_MultiDiskChopper_init(&_fo_chopper_2_var); - - - class_DiskChopper_init(&_bp_chopper2_var); - - class_Guide_four_side_init(&_g2c1_var); - - - class_DiskChopper_init(&_t0_chopper_alpha_var); - - - class_DiskChopper_init(&_t0_chopper_beta_var); - - class_Guide_four_side_init(&_g3a1_var); - - class_Guide_four_side_init(&_g3a2_var); - - - class_MultiDiskChopper_init(&_fo_chopper_3_var); - - class_Guide_four_side_init(&_g3b1_var); - - class_Guide_four_side_init(&_g4a1_var); - - - class_Guide_four_side_init(&_g4a2_var); - - class_Guide_four_side_init(&_g4a3_var); - - - class_MultiDiskChopper_init(&_fo_chopper_4_var); - - class_Guide_four_side_init(&_g4b1_var); - - class_Guide_four_side_init(&_g4b2_var); - - class_Guide_four_side_init(&_g4b3_var); - - class_Guide_four_side_init(&_g4b4_var); - - class_Guide_four_side_init(&_g4b5_var); - - class_Guide_four_side_init(&_g4b6_var); - - class_Guide_four_side_init(&_g5a1_var); - - - class_MultiDiskChopper_init(&_fo_chopper_5_var); - - class_Guide_four_side_init(&_g5b1_var); - - class_Guide_four_side_init(&_g5b2_var); - - class_Guide_four_side_init(&_g5b3_var); - - class_Guide_four_side_init(&_g5b4_var); - - class_Guide_four_side_init(&_g5b5_var); - - class_Guide_four_side_init(&_g5b6_var); - - class_Guide_four_side_init(&_g6a1_var); - - class_Guide_four_side_init(&_g6a2_var); - - class_Guide_four_side_init(&_g6a3_var); - - - - - - class_Slit_init(&_pinhole_2_var); - - - - class_Monitor_nD_init(&_sample_PSD_var); - - class_Monitor_nD_init(&_profile_x_var); - - class_Monitor_nD_init(&_profile_y_var); - - class_Monitor_nD_init(&_wavelength_var); - - class_Monitor_nD_init(&_tof_var); - - class_Monitor_nD_init(&_wavelength_tof_var); - - - if (mcdotrace) display(); - DEBUG_INSTR_END(); - -#ifdef OPENACC -#include -#pragma acc update device(_Origin_var) -#pragma acc update device(_optical_axis_var) -#pragma acc update device(_Source_var) -#pragma acc update device(_Start_of_bi_var) -#pragma acc update device(_bi_var) -#pragma acc update device(_End_of_bi_var) -#pragma acc update device(_NBOA_drawing_1_end_var) -#pragma acc update device(_g1a2_var) -#pragma acc update device(_g1a3_var) -#pragma acc update device(_g1b1_var) -#pragma acc update device(_g1c1_var) -#pragma acc update device(_wfm_position_var) -#pragma acc update device(_wfm_1_position_var) -#pragma acc update device(_wfmc_1_var) -#pragma acc update device(_pinhole_1_var) -#pragma acc update device(_wfm_2_position_var) -#pragma acc update device(_wfmc_2_var) -#pragma acc update device(_g2a1_var) -#pragma acc update device(_monitor_1_position_var) -#pragma acc update device(_g2a2_var) -#pragma acc update device(_fo1_position_var) -#pragma acc update device(_fo_chopper_1_var) -#pragma acc update device(_bp1_position_var) -#pragma acc update device(_bp1_chopper_var) -#pragma acc update device(_g2b1_var) -#pragma acc update device(_g2b2_var) -#pragma acc update device(_g2b3_var) -#pragma acc update device(_g2b4_var) -#pragma acc update device(_fo2_position_var) -#pragma acc update device(_fo_chopper_2_var) -#pragma acc update device(_bp2_position_var) -#pragma acc update device(_bp_chopper2_var) -#pragma acc update device(_g2c1_var) -#pragma acc update device(_t0_start_position_var) -#pragma acc update device(_t0_chopper_alpha_var) -#pragma acc update device(_t0_end_position_var) -#pragma acc update device(_t0_chopper_beta_var) -#pragma acc update device(_g3a1_var) -#pragma acc update device(_g3a2_var) -#pragma acc update device(_fo3_position_var) -#pragma acc update device(_fo_chopper_3_var) -#pragma acc update device(_g3b1_var) -#pragma acc update device(_g4a1_var) -#pragma acc update device(_monitor_2_position_var) -#pragma acc update device(_g4a2_var) -#pragma acc update device(_g4a3_var) -#pragma acc update device(_fo4_position_var) -#pragma acc update device(_fo_chopper_4_var) -#pragma acc update device(_g4b1_var) -#pragma acc update device(_g4b2_var) -#pragma acc update device(_g4b3_var) -#pragma acc update device(_g4b4_var) -#pragma acc update device(_g4b5_var) -#pragma acc update device(_g4b6_var) -#pragma acc update device(_g5a1_var) -#pragma acc update device(_fo5_position_var) -#pragma acc update device(_fo_chopper_5_var) -#pragma acc update device(_g5b1_var) -#pragma acc update device(_g5b2_var) -#pragma acc update device(_g5b3_var) -#pragma acc update device(_g5b4_var) -#pragma acc update device(_g5b5_var) -#pragma acc update device(_g5b6_var) -#pragma acc update device(_g6a1_var) -#pragma acc update device(_g6a2_var) -#pragma acc update device(_g6a3_var) -#pragma acc update device(_guide_end_var) -#pragma acc update device(_monitor_3_position_var) -#pragma acc update device(_start_backend_var) -#pragma acc update device(_optical_axis_backend_var) -#pragma acc update device(_pinhole_2_var) -#pragma acc update device(_graph_var) -#pragma acc update device(_sample_monitor_arm_var) -#pragma acc update device(_sample_PSD_var) -#pragma acc update device(_profile_x_var) -#pragma acc update device(_profile_y_var) -#pragma acc update device(_wavelength_var) -#pragma acc update device(_tof_var) -#pragma acc update device(_wavelength_tof_var) -#pragma acc update device(_sample_position_var) -#pragma acc update device(_instrument_var) -#endif - - return(0); -} /* init */ - -/******************************************************************************* -* components TRACE -*******************************************************************************/ - -#define x (_particle->x) -#define y (_particle->y) -#define z (_particle->z) -#define vx (_particle->vx) -#define vy (_particle->vy) -#define vz (_particle->vz) -#define t (_particle->t) -#define sx (_particle->sx) -#define sy (_particle->sy) -#define sz (_particle->sz) -#define p (_particle->p) -#define mcgravitation (_particle->mcgravitation) -#define mcMagnet (_particle->mcMagnet) -#define allow_backprop (_particle->allow_backprop) -#define _mctmp_a (_particle->_mctmp_a) -#define _mctmp_b (_particle->_mctmp_b) -#define _mctmp_c (_particle->_mctmp_c) -/* if on GPU, globally nullify sprintf,fprintf,printfs */ -/* (Similar defines are available in each comp trace but */ -/* those are not enough to handle external libs etc. ) */ -#ifdef OPENACC -#define fprintf(stderr,...) printf(__VA_ARGS__) -#define sprintf(string,...) printf(__VA_ARGS__) -#define exit(...) noprintf() -#define strcmp(a,b) str_comp(a,b) -#define strlen(a) str_len(a) -#endif -#define SCATTERED (_particle->_scattered) -#define RESTORE (_particle->_restore) -#define RESTORE_NEUTRON(_index, ...) _particle->_restore = _index; -#define ABSORB0 do { DEBUG_STATE(); DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; return; } while(0) -#define ABSORBED (_particle->_absorbed) -#define mcget_run_num() _particle->_uid -#define ABSORB ABSORB0 -#pragma acc routine -void class_Progress_bar_trace(_class_Progress_bar *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define profile (_comp->_parameters.profile) - #define percent (_comp->_parameters.percent) - #define flag_save (_comp->_parameters.flag_save) - #define minutes (_comp->_parameters.minutes) - #define IntermediateCnts (_comp->_parameters.IntermediateCnts) - #define StartTime (_comp->_parameters.StartTime) - #define EndTime (_comp->_parameters.EndTime) - #define CurrentTime (_comp->_parameters.CurrentTime) - #define infostring (_comp->_parameters.infostring) - SIG_MESSAGE("[_Origin_trace] component Origin=Progress_bar() TRACE [Progress_bar:0]"); - - #ifndef OPENACC - double ncount; - ncount = mcget_run_num (); - if (!StartTime) { - time (&StartTime); /* compute starting time */ - IntermediateCnts = 1e3; - } - time_t NowTime; - time (&NowTime); - /* compute initial estimate of computation duration */ - if (!EndTime && ncount >= IntermediateCnts) { - CurrentTime = NowTime; - if (difftime (NowTime, StartTime) > 10 && ncount) { /* wait 10 sec before writing ETA */ - EndTime = StartTime + (time_t)(difftime (NowTime, StartTime) * (double)mcget_ncount () / ncount); - IntermediateCnts = 0; - MPI_MASTER (fprintf (stdout, "\nTrace ETA "); fprintf (stdout, "%s", infostring); - if (difftime (EndTime, StartTime) < 60.0) fprintf (stdout, "%g [s] ", difftime (EndTime, StartTime)); - else if (difftime (EndTime, StartTime) > 3600.0) fprintf (stdout, "%g [h] ", difftime (EndTime, StartTime) / 3600.0); - else fprintf (stdout, "%g [min] ", difftime (EndTime, StartTime) / 60.0); fprintf (stdout, "\n");); - } else - IntermediateCnts += 1e3; - fflush (stdout); - } - - /* display percentage when percent or minutes have reached step */ - if (EndTime && mcget_ncount () && ((minutes && difftime (NowTime, CurrentTime) > minutes * 60) || (percent && !minutes && ncount >= IntermediateCnts))) { - MPI_MASTER (fprintf (stdout, "%llu %%\n", (unsigned long long)(ncount * 100.0 / mcget_ncount ())); fflush (stdout);); - CurrentTime = NowTime; - - IntermediateCnts = ncount + percent * mcget_ncount () / 100; - /* check that next intermediate ncount check is a multiple of the desired percentage */ - IntermediateCnts = floor (IntermediateCnts * 100 / percent / mcget_ncount ()) * percent * mcget_ncount () / 100; - /* raise flag to indicate that we did something */ - SCATTER; - if (flag_save) - save (NULL); - } - #endif -#ifndef NOABSORB_INF_NAN - /* Check for nan or inf particle parms */ - if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; - if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; -#else - if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef profile - #undef percent - #undef flag_save - #undef minutes - #undef IntermediateCnts - #undef StartTime - #undef EndTime - #undef CurrentTime - #undef infostring - return; -} /* class_Progress_bar_trace */ - -#pragma acc routine -void class_ESS_butterfly_trace(_class_ESS_butterfly *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define sector (_comp->_parameters.sector) - #define beamline (_comp->_parameters.beamline) - #define yheight (_comp->_parameters.yheight) - #define cold_frac (_comp->_parameters.cold_frac) - #define target_index (_comp->_parameters.target_index) - #define dist (_comp->_parameters.dist) - #define focus_xw (_comp->_parameters.focus_xw) - #define focus_yh (_comp->_parameters.focus_yh) - #define c_performance (_comp->_parameters.c_performance) - #define t_performance (_comp->_parameters.t_performance) - #define Lmin (_comp->_parameters.Lmin) - #define Lmax (_comp->_parameters.Lmax) - #define tmax_multiplier (_comp->_parameters.tmax_multiplier) - #define n_pulses (_comp->_parameters.n_pulses) - #define acc_power (_comp->_parameters.acc_power) - #define tfocus_dist (_comp->_parameters.tfocus_dist) - #define tfocus_time (_comp->_parameters.tfocus_time) - #define tfocus_width (_comp->_parameters.tfocus_width) - #define target_tsplit (_comp->_parameters.target_tsplit) - #define ColdWidths (_comp->_parameters.ColdWidths) - #define ThermalWidths (_comp->_parameters.ThermalWidths) - #define ColdScalars (_comp->_parameters.ColdScalars) - #define ThermalScalars (_comp->_parameters.ThermalScalars) - #define Beamlines (_comp->_parameters.Beamlines) - #define wfrac_cold (_comp->_parameters.wfrac_cold) - #define wfrac_thermal (_comp->_parameters.wfrac_thermal) - #define C1_x (_comp->_parameters.C1_x) - #define C1_z (_comp->_parameters.C1_z) - #define C2_x (_comp->_parameters.C2_x) - #define C2_z (_comp->_parameters.C2_z) - #define C3_x (_comp->_parameters.C3_x) - #define C3_z (_comp->_parameters.C3_z) - #define T1_x (_comp->_parameters.T1_x) - #define T1_z (_comp->_parameters.T1_z) - #define T2_x (_comp->_parameters.T2_x) - #define T2_z (_comp->_parameters.T2_z) - #define T3_x (_comp->_parameters.T3_x) - #define T3_z (_comp->_parameters.T3_z) - #define rC1_x (_comp->_parameters.rC1_x) - #define rC1_z (_comp->_parameters.rC1_z) - #define rC2_x (_comp->_parameters.rC2_x) - #define rC2_z (_comp->_parameters.rC2_z) - #define rC3_x (_comp->_parameters.rC3_x) - #define rC3_z (_comp->_parameters.rC3_z) - #define rT1_x (_comp->_parameters.rT1_x) - #define rT1_z (_comp->_parameters.rT1_z) - #define rT2_x (_comp->_parameters.rT2_x) - #define rT2_z (_comp->_parameters.rT2_z) - #define rT3_x (_comp->_parameters.rT3_x) - #define rT3_z (_comp->_parameters.rT3_z) - #define tx (_comp->_parameters.tx) - #define ty (_comp->_parameters.ty) - #define tz (_comp->_parameters.tz) - #define r11 (_comp->_parameters.r11) - #define r12 (_comp->_parameters.r12) - #define r21 (_comp->_parameters.r21) - #define r22 (_comp->_parameters.r22) - #define delta_y (_comp->_parameters.delta_y) - #define Mwidth_c (_comp->_parameters.Mwidth_c) - #define Mwidth_t (_comp->_parameters.Mwidth_t) - #define beamportangle (_comp->_parameters.beamportangle) - #define w_mult (_comp->_parameters.w_mult) - #define w_stat (_comp->_parameters.w_stat) - #define w_focus (_comp->_parameters.w_focus) - #define w_tfocus (_comp->_parameters.w_tfocus) - #define w_geom_c (_comp->_parameters.w_geom_c) - #define w_geom_t (_comp->_parameters.w_geom_t) - #define isleft (_comp->_parameters.isleft) - #define l_range (_comp->_parameters.l_range) - #define cos_thermal (_comp->_parameters.cos_thermal) - #define cos_cold (_comp->_parameters.cos_cold) - #define orientation_angle (_comp->_parameters.orientation_angle) - #define cx (_comp->_parameters.cx) - #define cz (_comp->_parameters.cz) - #define jmax (_comp->_parameters.jmax) - #define dxC (_comp->_parameters.dxC) - #define dxT (_comp->_parameters.dxT) - SIG_MESSAGE("[_Source_trace] component Source=ESS_butterfly() TRACE [ESS_butterfly:0]"); - - double xtmp; - int iscold; - double x0,z0; - int surf_sign; - double cos_factor; - double w_geom; - double xf, yf, zf; - double dx,dy,dz; - double k,v,r,lambda; - double dt=0; - double modX,modY; - - /* Cold or thermal event? */ - p=1; - xtmp = rand01(); - y = randpm1()*delta_y; - modY=y; - if (rand01() < cold_frac) { - iscold=1; - if (rand01() < wfrac_cold) { // "Broad face" - x = rC1_x + (rC2_x - rC1_x)*xtmp; - z = rC1_z + (rC2_z - rC1_z)*xtmp; - x0 = C1_x + (C2_x - C1_x)*xtmp; - z0 = C1_z + (C2_z - C1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_cold; - } else { - x = rC1_x + (rC3_x - rC1_x)*xtmp; - z = rC1_z + (rC3_z - rC1_z)*xtmp; - x0 = C1_x + (C3_x - C1_x)*xtmp; - z0 = C1_z + (C3_z - C1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)-dxC); - w_geom=w_geom_c; - } else { - iscold=0; - if (rand01() < wfrac_thermal) { // "Broad face" - x = rT1_x + (rT2_x - rT1_x)*xtmp; - z = rT1_z + (rT2_z - rT1_z)*xtmp; - x0 = T1_x + (T2_x - T1_x)*xtmp; - z0 = T1_z + (T2_z - T1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } else { - x = rT1_x + (rT3_x - rT1_x)*xtmp; - z = rT1_z + (rT3_z - rT1_z)*xtmp; - x0 = T1_x + (T3_x - T1_x)*xtmp; - z0 = T1_z + (T3_z - T1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)+dxT); - w_geom=w_geom_t; - } - - SCATTER; - /* Where are we going? */ - randvec_target_rect_real(&xf, &yf, &zf, NULL, - tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); - - w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); - - dx = xf-x; - dy = yf-y; - dz = zf-z; - r = sqrt(dx*dx+dy*dy+dz*dz); - - lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ - - k = 2*PI/lambda; - v = K2V*k; - - vz = v*dz/r; - vy = v*dy/r; - vx = v*dx/r; - - int train_index; - - if (total_N_sent == 0) { - #pragma acc atomic - adaptive_N = _particle->N_trains; - } else { - long tmp = ceil(target_tsplit*total_N_sent/total_arrived); - #pragma acc atomic - adaptive_N = tmp; - if (adaptive_N > _particle->N_trains) { - #pragma acc atomic - adaptive_N = _particle->N_trains; - } - } - - for (train_index=0; train_index0) { - dt = tfocus_dist/vz; - t = tfocus_time-dt; /* Set time to hit time window center */ - t += randpm1()*tfocus_width/2.0; - if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ - if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; - w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); - } else { - /* Simple, random wavelength @ random time */ - t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; - w_tfocus=1; - } - - if (iscold) { //case: cold moderator - /* Apply simple engineering reality correction */ - ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= c_performance; - p *= ColdScalars[beamline-1]; - } else { //case: thermal moderator - ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= t_performance; - p *= ThermalScalars[beamline-1]; - } - p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; - t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ - p*=cos_factor; - /* Correct weight for sampling of cold vs. thermal events. */ - if (iscold) { - p /= cold_frac; - } else { - p /= (1-cold_frac); - } - - // Generate ray as normal with its associated p and t - // Save these to t_offset and p_train - - _particle->t_offset[train_index] = t; - _particle->p_trains[train_index] = p/adaptive_N; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; - } - // Set base particle t and p, now p will be decoupled from the source intensity. - t=0; - p=_particle->p_last_time_manipulation; - - SCATTER; -#ifndef NOABSORB_INF_NAN - /* Check for nan or inf particle parms */ - if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; - if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; -#else - if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef sector - #undef beamline - #undef yheight - #undef cold_frac - #undef target_index - #undef dist - #undef focus_xw - #undef focus_yh - #undef c_performance - #undef t_performance - #undef Lmin - #undef Lmax - #undef tmax_multiplier - #undef n_pulses - #undef acc_power - #undef tfocus_dist - #undef tfocus_time - #undef tfocus_width - #undef target_tsplit - #undef ColdWidths - #undef ThermalWidths - #undef ColdScalars - #undef ThermalScalars - #undef Beamlines - #undef wfrac_cold - #undef wfrac_thermal - #undef C1_x - #undef C1_z - #undef C2_x - #undef C2_z - #undef C3_x - #undef C3_z - #undef T1_x - #undef T1_z - #undef T2_x - #undef T2_z - #undef T3_x - #undef T3_z - #undef rC1_x - #undef rC1_z - #undef rC2_x - #undef rC2_z - #undef rC3_x - #undef rC3_z - #undef rT1_x - #undef rT1_z - #undef rT2_x - #undef rT2_z - #undef rT3_x - #undef rT3_z - #undef tx - #undef ty - #undef tz - #undef r11 - #undef r12 - #undef r21 - #undef r22 - #undef delta_y - #undef Mwidth_c - #undef Mwidth_t - #undef beamportangle - #undef w_mult - #undef w_stat - #undef w_focus - #undef w_tfocus - #undef w_geom_c - #undef w_geom_t - #undef isleft - #undef l_range - #undef cos_thermal - #undef cos_cold - #undef orientation_angle - #undef cx - #undef cz - #undef jmax - #undef dxC - #undef dxT - return; -} /* class_ESS_butterfly_trace */ - -#pragma acc routine -void class_bi_spec_ellipse_trace(_class_bi_spec_ellipse *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define xheight (_comp->_parameters.xheight) - #define ywidth (_comp->_parameters.ywidth) - #define zlength (_comp->_parameters.zlength) - #define n_mirror (_comp->_parameters.n_mirror) - #define tilt (_comp->_parameters.tilt) - #define n_pieces (_comp->_parameters.n_pieces) - #define angular_offset (_comp->_parameters.angular_offset) - #define m (_comp->_parameters.m) - #define R0_m (_comp->_parameters.R0_m) - #define Qc_m (_comp->_parameters.Qc_m) - #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) - #define W_m (_comp->_parameters.W_m) - #define transmit (_comp->_parameters.transmit) - #define d_focus_1_x (_comp->_parameters.d_focus_1_x) - #define d_focus_2_x (_comp->_parameters.d_focus_2_x) - #define d_focus_1_y (_comp->_parameters.d_focus_1_y) - #define d_focus_2_y (_comp->_parameters.d_focus_2_y) - #define ell_l (_comp->_parameters.ell_l) - #define ell_h (_comp->_parameters.ell_h) - #define ell_w (_comp->_parameters.ell_w) - #define ell_m (_comp->_parameters.ell_m) - #define R0 (_comp->_parameters.R0) - #define Qc (_comp->_parameters.Qc) - #define alpha_mirror (_comp->_parameters.alpha_mirror) - #define W (_comp->_parameters.W) - #define cut (_comp->_parameters.cut) - #define substrate (_comp->_parameters.substrate) - #define reflect_mirror (_comp->_parameters.reflect_mirror) - #define reflect (_comp->_parameters.reflect) - #define pTable (_comp->_parameters.pTable) - SIG_MESSAGE("[_bi_trace] component bi=bi_spec_ellipse() TRACE [bi_spec_ellipse:0]"); - - - double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; - double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; - double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; - double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; - char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; - int i=1,j=1; - PROP_Z0; - if(n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ - mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ - l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ - for(i=floor(n_pieces*0.5);i>0;i--) - sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ - sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ - alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ - l_acc=0; /* keeps track of the neutron z position */ - h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ - - if (substrate==1) { - sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ - sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ - sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ - } - - - - if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ - ell_h=2*sec_pos; - if ((ell_h==0)&&(alpha<0)) - ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); - - /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ - f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - z0_x=f_x-d_focus_1_x; - b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); - a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); - - /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ - f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); - z0_y=f_y-d_focus_1_y; - b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); - a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); - for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ - for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ - int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ - int_t=(int_z-z)/vz; /* time for intersection */ - int_x=x+vx*int_t; /* x of intersection */ - int_y=y+vy*int_t; /* y of intersection */ - is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ - is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); - is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - - /******************************** INTERSECTION WITH X ELLIPSE **********************************/ - if((xdelta>0)&&(ell_m!=-1)) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - - - xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ - xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); - xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); - - if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ - if (xell_int_x>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - - PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - - continue; - } - } - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ - if((ydelta>0)&&(ell_m!=-1)) { - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - - yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ - yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); - yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); - - if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ - if (yell_int_y>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - continue; - } - } - - - /******************************** INTERSECTION WITH MIRROR STACK **********************************/ - - if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ - if(m == 0) - ABSORB; - if (reflect_mirror && strlen(reflect_mirror)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { /* reflectivity for the q of the neutorn */ - arg_stack = ((q-m*Qc_m)/W_m); - if(arg_stack < cut) - weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ - else - - { - i++; - j=0; - if (substrate==1) { - eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); - if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) - (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); - } - p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ - sec_pos=sec_pos-mirror_gap; - intersect=1; - continue; - } - weight *= R0_m; - } - else { /* q <= Qc */ - weight *= R0_m; - } - rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ - - if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ - - PROP_DT(int_t); /* propagation to the intersection */ - - SCATTER; - r=-gamma-2*alpha; /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - } - else if (!transmit) - ABSORB; - else { - p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); - intersect=1; - } - } - sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ - } - l_acc=l_acc+l_section; /* keeps track of the neutron z position */ - sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ - alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ - h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ - if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ - PROP_DT(l_section/vz); - intersect=0; /* restores the check of the intersection to 0 */ - } - } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ - Dt=(zlength-z)/vz; - if (Dt>0) - PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ - do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ - - xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ - yell_intersect=0; - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - } - - - if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - } - - if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - - if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ - - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ - - if(xell_int_z0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - continue; - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - if(ydelta>0) { - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); - if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - } - } - - if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - continue; - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - if(xdelta>0) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); - if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - } - - } - - - } - - - - - } - }/*end of check of deltas*/ - - - } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ - r=(ell_l-z)/vz; /**/ - - /*PROP_DT((ell_l-z)/vz);*/ - PROP_DT(r); - -// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); - ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); - ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); -// printf("length = %f \n",ell_l); -// printf("ell_exit_x= %f\n",ell_exit_x); -// printf("ell_exit_y = %f\n",ell_exit_y); - if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) - ABSORB; - -#ifndef NOABSORB_INF_NAN - /* Check for nan or inf particle parms */ - if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; - if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; -#else - if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef xheight - #undef ywidth - #undef zlength - #undef n_mirror - #undef tilt - #undef n_pieces - #undef angular_offset - #undef m - #undef R0_m - #undef Qc_m - #undef alpha_mirror_m - #undef W_m - #undef transmit - #undef d_focus_1_x - #undef d_focus_2_x - #undef d_focus_1_y - #undef d_focus_2_y - #undef ell_l - #undef ell_h - #undef ell_w - #undef ell_m - #undef R0 - #undef Qc - #undef alpha_mirror - #undef W - #undef cut - #undef substrate - #undef reflect_mirror - #undef reflect - #undef pTable - return; -} /* class_bi_spec_ellipse_trace */ - -#pragma acc routine -void class_Guide_four_side_trace(_class_Guide_four_side *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define RIreflect (_comp->_parameters.RIreflect) - #define LIreflect (_comp->_parameters.LIreflect) - #define UIreflect (_comp->_parameters.UIreflect) - #define DIreflect (_comp->_parameters.DIreflect) - #define ROreflect (_comp->_parameters.ROreflect) - #define LOreflect (_comp->_parameters.LOreflect) - #define UOreflect (_comp->_parameters.UOreflect) - #define DOreflect (_comp->_parameters.DOreflect) - #define w1l (_comp->_parameters.w1l) - #define w2l (_comp->_parameters.w2l) - #define linwl (_comp->_parameters.linwl) - #define loutwl (_comp->_parameters.loutwl) - #define w1r (_comp->_parameters.w1r) - #define w2r (_comp->_parameters.w2r) - #define linwr (_comp->_parameters.linwr) - #define loutwr (_comp->_parameters.loutwr) - #define h1u (_comp->_parameters.h1u) - #define h2u (_comp->_parameters.h2u) - #define linhu (_comp->_parameters.linhu) - #define louthu (_comp->_parameters.louthu) - #define h1d (_comp->_parameters.h1d) - #define h2d (_comp->_parameters.h2d) - #define linhd (_comp->_parameters.linhd) - #define louthd (_comp->_parameters.louthd) - #define l (_comp->_parameters.l) - #define R0 (_comp->_parameters.R0) - #define Qcxl (_comp->_parameters.Qcxl) - #define Qcxr (_comp->_parameters.Qcxr) - #define Qcyu (_comp->_parameters.Qcyu) - #define Qcyd (_comp->_parameters.Qcyd) - #define alphaxl (_comp->_parameters.alphaxl) - #define alphaxr (_comp->_parameters.alphaxr) - #define alphayu (_comp->_parameters.alphayu) - #define alphayd (_comp->_parameters.alphayd) - #define Wxr (_comp->_parameters.Wxr) - #define Wxl (_comp->_parameters.Wxl) - #define Wyu (_comp->_parameters.Wyu) - #define Wyd (_comp->_parameters.Wyd) - #define mxr (_comp->_parameters.mxr) - #define mxl (_comp->_parameters.mxl) - #define myu (_comp->_parameters.myu) - #define myd (_comp->_parameters.myd) - #define QcxrOW (_comp->_parameters.QcxrOW) - #define QcxlOW (_comp->_parameters.QcxlOW) - #define QcyuOW (_comp->_parameters.QcyuOW) - #define QcydOW (_comp->_parameters.QcydOW) - #define alphaxlOW (_comp->_parameters.alphaxlOW) - #define alphaxrOW (_comp->_parameters.alphaxrOW) - #define alphayuOW (_comp->_parameters.alphayuOW) - #define alphaydOW (_comp->_parameters.alphaydOW) - #define WxrOW (_comp->_parameters.WxrOW) - #define WxlOW (_comp->_parameters.WxlOW) - #define WyuOW (_comp->_parameters.WyuOW) - #define WydOW (_comp->_parameters.WydOW) - #define mxrOW (_comp->_parameters.mxrOW) - #define mxlOW (_comp->_parameters.mxlOW) - #define myuOW (_comp->_parameters.myuOW) - #define mydOW (_comp->_parameters.mydOW) - #define rwallthick (_comp->_parameters.rwallthick) - #define lwallthick (_comp->_parameters.lwallthick) - #define uwallthick (_comp->_parameters.uwallthick) - #define dwallthick (_comp->_parameters.dwallthick) - #define w1rwt (_comp->_parameters.w1rwt) - #define w1lwt (_comp->_parameters.w1lwt) - #define h1uwt (_comp->_parameters.h1uwt) - #define h1dwt (_comp->_parameters.h1dwt) - #define w2rwt (_comp->_parameters.w2rwt) - #define w2lwt (_comp->_parameters.w2lwt) - #define h2uwt (_comp->_parameters.h2uwt) - #define h2dwt (_comp->_parameters.h2dwt) - #define pawr (_comp->_parameters.pawr) - #define pawl (_comp->_parameters.pawl) - #define pbwr (_comp->_parameters.pbwr) - #define pbwl (_comp->_parameters.pbwl) - #define pahu (_comp->_parameters.pahu) - #define pahd (_comp->_parameters.pahd) - #define pbhu (_comp->_parameters.pbhu) - #define pbhd (_comp->_parameters.pbhd) - #define awl (_comp->_parameters.awl) - #define bwl (_comp->_parameters.bwl) - #define awr (_comp->_parameters.awr) - #define bwr (_comp->_parameters.bwr) - #define ahu (_comp->_parameters.ahu) - #define bhu (_comp->_parameters.bhu) - #define ahd (_comp->_parameters.ahd) - #define bhd (_comp->_parameters.bhd) - #define awlwt (_comp->_parameters.awlwt) - #define bwlwt (_comp->_parameters.bwlwt) - #define awrwt (_comp->_parameters.awrwt) - #define bwrwt (_comp->_parameters.bwrwt) - #define ahuwt (_comp->_parameters.ahuwt) - #define bhuwt (_comp->_parameters.bhuwt) - #define ahdwt (_comp->_parameters.ahdwt) - #define bhdwt (_comp->_parameters.bhdwt) - #define pawrwt (_comp->_parameters.pawrwt) - #define pawlwt (_comp->_parameters.pawlwt) - #define pbwrwt (_comp->_parameters.pbwrwt) - #define pbwlwt (_comp->_parameters.pbwlwt) - #define pahuwt (_comp->_parameters.pahuwt) - #define pahdwt (_comp->_parameters.pahdwt) - #define pbhuwt (_comp->_parameters.pbhuwt) - #define pbhdwt (_comp->_parameters.pbhdwt) - #define a2wlwt (_comp->_parameters.a2wlwt) - #define b2wlwt (_comp->_parameters.b2wlwt) - #define a2wrwt (_comp->_parameters.a2wrwt) - #define b2wrwt (_comp->_parameters.b2wrwt) - #define a2huwt (_comp->_parameters.a2huwt) - #define b2huwt (_comp->_parameters.b2huwt) - #define a2hdwt (_comp->_parameters.a2hdwt) - #define b2hdwt (_comp->_parameters.b2hdwt) - #define a2wl (_comp->_parameters.a2wl) - #define b2wl (_comp->_parameters.b2wl) - #define a2wr (_comp->_parameters.a2wr) - #define b2wr (_comp->_parameters.b2wr) - #define a2hu (_comp->_parameters.a2hu) - #define b2hu (_comp->_parameters.b2hu) - #define a2hd (_comp->_parameters.a2hd) - #define b2hd (_comp->_parameters.b2hd) - #define mru1 (_comp->_parameters.mru1) - #define mru2 (_comp->_parameters.mru2) - #define nru1 (_comp->_parameters.nru1) - #define nru2 (_comp->_parameters.nru2) - #define mrd1 (_comp->_parameters.mrd1) - #define mrd2 (_comp->_parameters.mrd2) - #define nrd1 (_comp->_parameters.nrd1) - #define nrd2 (_comp->_parameters.nrd2) - #define mlu1 (_comp->_parameters.mlu1) - #define mlu2 (_comp->_parameters.mlu2) - #define nlu1 (_comp->_parameters.nlu1) - #define nlu2 (_comp->_parameters.nlu2) - #define mld1 (_comp->_parameters.mld1) - #define mld2 (_comp->_parameters.mld2) - #define nld1 (_comp->_parameters.nld1) - #define nld2 (_comp->_parameters.nld2) - #define z0wr (_comp->_parameters.z0wr) - #define z0wl (_comp->_parameters.z0wl) - #define z0hu (_comp->_parameters.z0hu) - #define z0hd (_comp->_parameters.z0hd) - #define p2parawr (_comp->_parameters.p2parawr) - #define p2parawl (_comp->_parameters.p2parawl) - #define p2parahu (_comp->_parameters.p2parahu) - #define p2parahd (_comp->_parameters.p2parahd) - #define p2parawrwt (_comp->_parameters.p2parawrwt) - #define p2parawlwt (_comp->_parameters.p2parawlwt) - #define p2parahuwt (_comp->_parameters.p2parahuwt) - #define p2parahdwt (_comp->_parameters.p2parahdwt) - #define riTable (_comp->_parameters.riTable) - #define liTable (_comp->_parameters.liTable) - #define uiTable (_comp->_parameters.uiTable) - #define diTable (_comp->_parameters.diTable) - #define roTable (_comp->_parameters.roTable) - #define loTable (_comp->_parameters.loTable) - #define uoTable (_comp->_parameters.uoTable) - #define doTable (_comp->_parameters.doTable) - SIG_MESSAGE("[_NBOA_drawing_1_end_trace] component NBOA_drawing_1_end=Guide_four_side() TRACE [Guide_four_side:0]"); - - - int i; - - PROP_Z0; /* Propagate neutron to guide entrance. */ - /* time variables (INNER walls)*/ - double t1; - double t2w1r; - double t2w1l; - double t2h1u; - double t2h1d; - /* time variables (OUTER walls)*/ - double t2w1rwt; - double t2w1lwt; - double t2h1uwt; - double t2h1dwt; - - /* zcomponent of the intersection point of the neutron trajectory and the ellipse (INNER walls)*/ - double m; - double n; - /* component and length of the surfaces normal vector at the intersection point */ - double nz; - double nx; - double ny; - double n2; - /* prefactor to calculate the velocity vector after the interaction */ - double pf; - /* velocity vector components before the interaction*/ - double vxin; - double vyin; - double vzin; - /* q-vector for the interaction */ - double q; - /* limit variables to determine the interaction position given by the time relative to the guide walls*/ - double xlimitr; - double xlimitrwt; - double xlimitl; - double xlimitlwt; - double ylimitd; - double ylimitdwt; - double ylimitu; - double ylimituwt; - /* interaction position of the neutron given by the interaction time; crosscheck with limit variables*/ - double xtest; - double ytest; - - if (x <= -w1r && x >= -w1rwt && y <= mru1 * x + nru1 && y >= mrd1 * x + nrd1 && mxr != -1 - && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT entrance wall and the wall is not transparent*/ - ABSORB; - if (x >= w1l && x <= w1lwt && y <= mlu1 * x + nlu1 && y >= mld1 * x + nld1 && mxl != -1 - && mxlOW != -1) /* absorbing the neutron if it hit the LEFT entrance wall and the wall is not transparent*/ - ABSORB; - if (y <= -h1d && y >= -h1dwt && x <= (y - nld1) / mld1 && x >= (y - nrd1) / mrd1 && myd != -1 - && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM entrance wall and the wall is not transparent*/ - ABSORB; - if (y >= h1u && y <= h1uwt && x <= (y - nlu1) / mlu1 && x >= (y - nru1) / mru1 && myu != -1 - && myuOW != -1) /* absorbing the neutron if it hit the TOP entrance wall and the wall is not transparent*/ - ABSORB; - - do { /* start the propagation loop inside the guide */ - t1 = (l - z) / vz; /* needed time to pass the guide (or rest of the guide without any interaction)*/ - - if (loutwr == 0 && linwr == 0) { - TIME_LINEAR (t1, w1r, w2r, l, x, z, vx, vz, w1rwt, &t2w1r, &t2w1rwt); - } - - if (loutwr != 0 && linwr != 0) { - TIME_ELLIPSE (vx, vz, x, z, a2wr, b2wr, z0wr, t1, a2wrwt, b2wrwt, &t2w1r, &t2w1rwt); - } - - if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) { - TIME_PARABEL (vx, vz, x, z, pawr, pbwr, t1, pawrwt, pbwrwt, &t2w1r, &t2w1rwt); - } - - if (loutwl == 0 && linwl == 0) { - TIME_LINEAR_1 (t1, w1l, w2l, l, x, z, vx, vz, w1lwt, &t2w1l, &t2w1lwt); - } - - if (loutwl != 0 && linwl != 0) { - TIME_ELLIPSE_1 (vx, vz, x, z, a2wl, b2wl, z0wl, t1, a2wlwt, b2wlwt, &t2w1l, &t2w1lwt); - } - - if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) { - TIME_PARABEL_1 (vx, vz, x, z, pawl, pbwl, t1, pawlwt, pbwlwt, &t2w1l, &t2w1lwt); - } - - if (louthu == 0 && linhu == 0) { - TIME_LINEAR_1 (t1, h1u, h2u, l, y, z, vy, vz, h1uwt, &t2h1u, &t2h1uwt); - } - - if (louthu != 0 && linhu != 0) { - TIME_ELLIPSE_1 (vy, vz, y, z, a2hu, b2hu, z0hu, t1, a2huwt, b2huwt, &t2h1u, &t2h1uwt); - } - - if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) { - TIME_PARABEL_1 (vy, vz, y, z, pahu, pbhu, t1, pahuwt, pbhuwt, &t2h1u, &t2h1uwt); - } - - if (louthd == 0 && linhd == 0) { - TIME_LINEAR (t1, h1d, h2d, l, y, z, vy, vz, h1dwt, &t2h1d, &t2h1dwt); - } - - if (louthd != 0 && linhd != 0) { - TIME_ELLIPSE (vy, vz, y, z, a2hd, b2hd, z0hd, t1, a2hdwt, b2hdwt, &t2h1d, &t2h1dwt); - } - - if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) { - TIME_PARABEL (vy, vz, y, z, pahd, pbhd, t1, pahdwt, pbhdwt, &t2h1d, &t2h1dwt); - } - - /* TEST OF THE INNER INTERSECTION - TIMES */ - /* possible interactions outside the guide have to be eliminated*/ - - if (t2w1r < t1 + 2.0) { /* test of RIGHT INNER wall interaction time*/ - TEST_UP_DOWN (t2w1r, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, - &ylimitu, &ytest); - if (ytest < ylimitd || ytest > ylimitu) { - t2w1r = t1 + 2.0; - } - } - - if (t2w1l < t1 + 2.0) { /* test of LEFT INNER wall interaction time - analog to right wall*/ - TEST_UP_DOWN (t2w1l, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, - &ylimitu, &ytest); - if (ytest < ylimitd || ytest > ylimitu) { - t2w1l = t1 + 2.0; - } - } - - if (t2h1u < t1 + 2.0) { /* test of TOP INNER wall interaction time - analog to right wall*/ - TEST_LEFT_RIGHT (t2h1u, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, - &xlimitr, &xlimitl, &xtest); - if (xtest < xlimitr || xtest > xlimitl) { - t2h1u = t1 + 2.0; - } - } - - if (t2h1d < t1 + 2.0) { /* test of BOTTOM INNER wall interaction time - analog to right wall*/ - TEST_LEFT_RIGHT (t2h1d, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, - &xlimitr, &xlimitl, &xtest); - if (xtest < xlimitr || xtest > xlimitl) { - t2h1d = t1 + 2.0; - } - } - - /* TEST OF THE OUTER INTERSECTION - TIMES */ - - if (t2w1rwt < t1 + 2.0) { /* test of RIGHT OUTER wall interaction time - analog inner wall*/ - TEST_UP_DOWN (t2w1rwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, - pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); - if (ytest < ylimitd || ytest > ylimitu) { - t2w1rwt = t1 + 2.0; - } - } - - if (t2w1lwt < t1 + 2.0) { /* test of LEFT OUTER wall interaction time - analog inner wall*/ - TEST_UP_DOWN (t2w1lwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, - pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); - if (ytest < ylimitd || ytest > ylimitu) { - t2w1lwt = t1 + 2.0; - } - } - - if (t2h1uwt < t1 + 2.0) { /* test of TOP OUTER wall interaction time - analog inner wall*/ - TEST_LEFT_RIGHT (t2h1uwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, - pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); - if (xtest < xlimitr || xtest > xlimitl) { - t2h1uwt = t1 + 2.0; - } - } - - if (t2h1dwt < t1 + 2.0) { /* test of BOTTOM OUTER wall interaction time - analog inner wall*/ - TEST_LEFT_RIGHT (t2h1dwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, - pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); - if (xtest < xlimitr || xtest > xlimitl) { - t2h1dwt = t1 + 2.0; - } - } - - /* which wall is hit first? which geometry? */ - - if (t1 < t2w1r && t1 < t2w1l && t1 < t2h1u && t1 < t2h1d && t1 < t2w1rwt && t1 < t2w1lwt && t1 < t2h1uwt && t1 < t2h1dwt) { - i = 1; - } - - /* neutron interacts with the INNER elliptic right wall and this wall is NOT transparent*/ - - if (t2w1r > 0 && t2w1r < t1 && t2w1r < t2w1l && t2w1r < t2h1u && t2w1r < t2h1d && t2w1r < t2w1rwt && t2w1r < t2w1lwt && t2w1r < t2h1uwt && t2w1r < t2h1dwt) { - if (mxr == 0) - i = 18; - else { - if (mxr == -1) - i = 14; - else { - if ((linwr != 0) && (loutwr != 0)) - i = 2; /* the neutron will be reflected*/ - else { - if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) - i = 3; - else { - if (loutwr == 0 && linwr == 0) - i = 4; - } - } - } - } - } - - /* neutron interacts with the elliptic left INNER wall - comments are analog to inner elliptic right wall*/ - - if (t2w1l > 0 && t2w1l < t1 && t2w1l < t2w1r && t2w1l < t2h1u && t2w1l < t2h1d && t2w1l < t2w1rwt && t2w1l < t2w1lwt && t2w1l < t2h1uwt && t2w1l < t2h1dwt) { - if (mxl == 0) - i = 19; - else { - if (mxl == -1) - i = 15; - else { - if ((linwl != 0) && (loutwl != 0)) - i = 5; - else { - if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) - i = 6; - else { - if (loutwl == 0 && linwl == 0) - i = 7; - } - } - } - } - } - - /* neutron interacts with the elliptic top INNER wall - comments are analog to inner elliptic right wall*/ - - if (t2h1u > 0 && t2h1u < t1 && t2h1u < t2w1r && t2h1u < t2w1l && t2h1u < t2h1d && t2h1u < t2w1rwt && t2h1u < t2w1lwt && t2h1u < t2h1uwt && t2h1u < t2h1dwt) { - if (myu == 0) - i = 20; - else { - if (myu == -1) - i = 16; - else { - if (louthu != 0 && linhu != 0) - i = 8; - else { - if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) - i = 9; - else { - if (louthu == 0 && linhu == 0) - i = 10; - } - } - } - } - } - - /* neutron interacts with the elliptic down INNER wall - comments are analog to inner elliptic right wall*/ - - if (t2h1d > 0 && t2h1d < t1 && t2h1d < t2w1r && t2h1d < t2w1l && t2h1d < t2h1u && t2h1d < t2w1rwt && t2h1d < t2w1lwt && t2h1d < t2h1uwt && t2h1d < t2h1dwt) { - if (myd == 0) - i = 21; - else { - if (myd == -1) - i = 17; - else { - if (louthd != 0 && linhd != 0) - i = 11; - else { - if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) - i = 12; - else { - if (louthd == 0 && linhd == 0) - i = 13; - } - } - } - } - } - - /* EVERTHING AGAIN FOR THE OUTER WALLS */ - - /* neutron interacts with the elliptic right OUTER wall - comments are analog to inner elliptic right wall*/ - - if (t2w1rwt > 0 && t2w1rwt < t1 && t2w1rwt < t2w1r && t2w1rwt < t2w1l && t2w1rwt < t2h1u && t2w1rwt < t2h1d && t2w1rwt < t2w1lwt && t2w1rwt < t2h1uwt - && t2w1rwt < t2h1dwt) { - if (mxrOW == 0) - i = 34; - else { - if (mxrOW == -1) - i = 38; - else { - if (linwr != 0 && loutwr != 0) - i = 22; - else { - if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) - i = 23; - else { - if (loutwr == 0 && linwr == 0) - i = 24; - } - } - } - } - } - - /* neutron interacts with the elliptic left OUTER wall - comments are analog to inner elliptic right wall*/ - - if (t2w1lwt > 0 && t2w1lwt < t1 && t2w1lwt < t2w1r && t2w1lwt < t2w1l && t2w1lwt < t2h1u && t2w1lwt < t2h1d && t2w1lwt < t2w1rwt && t2w1lwt < t2h1uwt - && t2w1lwt < t2h1dwt) { - if (mxlOW == 0) - i = 35; - else { - if (mxlOW == -1) - i = 39; - else { - if (linwl != 0 && loutwl != 0) - i = 25; - else { - if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) - i = 26; - else { - if (loutwl == 0 && linwl == 0) - i = 27; - } - } - } - } - } - - /* neutron interacts with the elliptic top OUTER wall - comments are analog to inner elliptic right wall*/ - - if (t2h1uwt > 0 && t2h1uwt < t1 && t2h1uwt < t2w1r && t2h1uwt < t2w1l && t2h1uwt < t2h1u && t2h1uwt < t2h1d && t2h1uwt < t2w1rwt && t2h1uwt < t2w1lwt - && t2h1uwt < t2h1dwt) { - if (myuOW == 0) - i = 36; - else { - if (myuOW == -1) - i = 40; - else { - if (louthu != 0 && linhu != 0) - i = 28; - else { - if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) - i = 29; - else { - if (louthu == 0 && linhu == 0) - i = 30; - } - } - } - } - } - - /* neutron interacts with the elliptic down OUTER wall - comments are analog to inner elliptic right wall*/ - - if (t2h1dwt > 0 && t2h1dwt < t1 && t2h1dwt < t2w1r && t2h1dwt < t2w1l && t2h1dwt < t2h1u && t2h1dwt < t2h1d && t2h1dwt < t2w1rwt && t2h1dwt < t2w1lwt - && t2h1dwt < t2h1uwt) { - if (mydOW == 0) - i = 37; - else { - if (mydOW == -1) - i = 41; - else { - if (louthd != 0 && linhd != 0) - i = 31; - else { - if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) - i = 32; - else { - if (louthd == 0 && linhd == 0) - i = 33; - } - } - } - } - } - - switch (i) { /* the principal for the calculation is in every case the same: 1.) one needs the surface normal vector at the intersection point. 2.) - calculation of the velocity vector after the interaction by */ - /* vector subrtation (the basic idea and explanations can be found in the 'Mcstas component manual' in the section 'straight guide') */ - - case 1: /* no interaction, propagation to the end of the guide */ - PROP_DT (t1); - break; - - case 2: - PROP_DT (t2w1r); /* propagation to interaction point */ - vxin = vx; /* saving the velocity vector before the interaction*/ - vyin = vy; - vzin = vz; - nx = -x; /* surface normal vector components at the intersection point */ - nz = -x * x / ((a2wr / (z + z0wr)) - (z0wr + z)); - n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ - pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ - vx -= pf * nx / n2; /* velocity vector after the interaction*/ - vz -= pf * nz / n2; - q = V2Q - * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ - break; - - case 3: - PROP_DT (t2w1r); - vxin = vx; - vyin = vy; - vzin = vz; - nx = -x; - nz = -0.5 / pawr; - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 4: - PROP_DT (t2w1r); - vxin = vx; - vyin = vy; - vzin = vz; - nx = l; - nz = w2r - w1r; - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 5: - PROP_DT (t2w1l); - vxin = vx; - vyin = vy; - vzin = vz; - nx = -x; - nz = -x * x / ((a2wl / (z + z0wl)) - (z0wl + z)); - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - SCATTER; - break; - - case 6: - PROP_DT (t2w1l); - vxin = vx; - vyin = vy; - vzin = vz; - nx = -x; - nz = -0.5 / pawl; - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 7: - PROP_DT (t2w1l); - vxin = vx; - vyin = vy; - vzin = vz; - nx = -l; - nz = w2l - w1l; - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 8: - PROP_DT (t2h1u); - vxin = vx; - vyin = vy; - vzin = vz; - ny = -y; - nz = -y * y / ((a2hu / (z + z0hu)) - (z0hu + z)); - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 9: - PROP_DT (t2h1u); - vxin = vx; - vyin = vy; - vzin = vz; - ny = -y; - nz = -0.5 / pahu; - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 10: - PROP_DT (t2h1u); - vxin = vx; - vyin = vy; - vzin = vz; - ny = -l; - nz = h2u - h1u; - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 11: - PROP_DT (t2h1d); - vxin = vx; - vyin = vy; - vzin = vz; - ny = -y; - nz = -y * y / ((a2hd / (z + z0hd)) - (z0hd + z)); - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 12: - PROP_DT (t2h1d); - vxin = vx; - vyin = vy; - vzin = vz; - ny = -y; - nz = -0.5 / pahd; - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 13: - PROP_DT (t2h1d); - vxin = vx; - vyin = vy; - vzin = vz; - ny = l; - nz = h2d - h1d; - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 14: /* transperent walls - no interaction */ - PROP_DT (t2w1r); - break; - - case 15: - PROP_DT (t2w1l); - break; - - case 16: - PROP_DT (t2h1u); - break; - - case 17: - PROP_DT (t2h1d); - break; - - case 18: /* absorbing walls - neutrons are absorbed at interaction point*/ - PROP_DT (t2w1r); - ABSORB; - break; - - case 19: - PROP_DT (t2w1l); - ABSORB; - break; - - case 20: - PROP_DT (t2h1u); - ABSORB; - break; - - case 21: - PROP_DT (t2h1d); - ABSORB; - break; - - /* OUTER WALLS - analog to inner walls, but sign of surface normal vector is changed */ - - case 22: - PROP_DT (t2w1rwt); /* propagation to interaction point */ - vxin = vx; /* saving the velocity vector before the interaction*/ - vyin = vy; - vzin = vz; - nx = x; /* surface normal vector components at the intersection point */ - nz = x * x / ((a2wrwt / (z + z0wr)) - (z0wr + z)); - n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ - pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ - vx -= pf * nx / n2; /* velocity vector after the interaction*/ - vz -= pf * nz / n2; - q = V2Q - * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ - break; - - case 23: - PROP_DT (t2w1rwt); - vxin = vx; - vyin = vy; - vzin = vz; - nx = x; - nz = 0.5 / pawrwt; - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 24: - PROP_DT (t2w1rwt); - vxin = vx; - vyin = vy; - vzin = vz; - nx = -l; - nz = -(w2r - w1r); - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 25: - PROP_DT (t2w1lwt); - vxin = vx; - vyin = vy; - vzin = vz; - nx = x; - nz = x * x / ((a2wlwt / (z + z0wl)) - (z0wl + z)); - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 26: - PROP_DT (t2w1lwt); - vxin = vx; - vyin = vy; - vzin = vz; - nx = x; - nz = 0.5 / pawlwt; - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 27: - PROP_DT (t2w1lwt); - vxin = vx; - vyin = vy; - vzin = vz; - nx = l; - nz = -(w2l - w1l); - n2 = sqrt (nx * nx + nz * nz); - pf = 2.0 * (vx * nx + vz * nz) / n2; - vx -= pf * nx / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 28: - PROP_DT (t2h1uwt); - vxin = vx; - vyin = vy; - vzin = vz; - ny = y; - nz = y * y / ((a2huwt / (z + z0hu)) - (z0hu + z)); - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 29: - PROP_DT (t2h1uwt); - vxin = vx; - vyin = vy; - vzin = vz; - ny = y; - nz = 0.5 / pahuwt; - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 30: - PROP_DT (t2h1uwt); - vxin = vx; - vyin = vy; - vzin = vz; - ny = l; - nz = -(h2u - h1u); - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 31: - PROP_DT (t2h1dwt); - vxin = vx; - vyin = vy; - vzin = vz; - ny = y; - nz = y * y / ((a2hdwt / (z + z0hd)) - (z0hd + z)); - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 32: - PROP_DT (t2h1dwt); - vxin = vx; - vyin = vy; - vzin = vz; - ny = y; - nz = 0.5 / pahdwt; - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 33: - PROP_DT (t2h1dwt); - vxin = vx; - vyin = vy; - vzin = vz; - ny = -l; - nz = -(h2d - h1d); - n2 = sqrt (ny * ny + nz * nz); - pf = 2.0 * (vy * ny + vz * nz) / n2; - vy -= pf * ny / n2; - vz -= pf * nz / n2; - q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); - break; - - case 34: - PROP_DT (t2w1rwt); - ABSORB; - break; - - case 35: - PROP_DT (t2w1lwt); - ABSORB; - break; - - case 36: - PROP_DT (t2h1uwt); - ABSORB; - break; - - case 37: - PROP_DT (t2h1dwt); - ABSORB; - break; - - case 38: - PROP_DT (t2w1rwt); - break; - - case 39: - PROP_DT (t2w1lwt); - break; - - case 40: - PROP_DT (t2h1uwt); - break; - - case 41: - PROP_DT (t2h1dwt); - break; - } - - if (((i == 2) || (i == 3) || (i == 4))) { /* calculating the the probability that the neutron is reflected at the RIGHT INNER wall*/ - if (RIreflect && strlen (RIreflect)) { - p = Table_Value (riTable, q, 1); - } else { - if (mxr > 0 && q > Qcxr) { - double arg = (q - mxr * Qcxr) / Wxr; - if (arg < 10) { - p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxr * (q - Qcxr)); - } else - ABSORB; - } - } - } - - if (((i == 22) || (i == 23) || (i == 24))) { /* calculating the the probability that the neutron is reflected at the RIGHT OUTER wall*/ - if (ROreflect && strlen (ROreflect)) { - p = Table_Value (roTable, q, 1); - } else { - if (mxrOW > 0 && q > QcxrOW) { - double arg = (q - mxrOW * QcxrOW) / WxrOW; - if (arg < 10) { - p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxrOW * (q - QcxrOW)); - } else - ABSORB; - } - } - } - - if (((i == 5) || (i == 6) || (i == 7))) { /* calculating the the probability that the neutron is reflected at the LEFT INNER wall*/ - if (LIreflect && strlen (LIreflect)) { - p = Table_Value (liTable, q, 1); - } else { - if (mxl > 0 && q > Qcxl) { - double arg = (q - mxl * Qcxl) / Wxl; - if (arg < 10) { - p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxl * (q - Qcxl)); - } else - ABSORB; - } - } - } - - if (((i == 25) || (i == 26) || (i == 27))) { /* calculating the the probability that the neutron is reflected at the LEFT OUTER wall*/ - if (LOreflect && strlen (LOreflect)) { - p = Table_Value (loTable, q, 1); - } else { - if (mxlOW > 0 && q > QcxlOW) { - double arg = (q - mxlOW * QcxlOW) / WxlOW; - if (arg < 10) { - p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxlOW * (q - QcxlOW)); - } else - ABSORB; - } - } - } - - if (((i == 8) || (i == 9) || (i == 10))) { /* calculating the the probability that the neutron is reflected at the TOP INNER wall*/ - if (UIreflect && strlen (UIreflect)) { - p = Table_Value (uiTable, q, 1); - } else { - if (myu > 0 && q > Qcyu) { - double arg = (q - myu * Qcyu) / Wyu; - if (arg < 10) { - p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayu * (q - Qcyu)); - } else - ABSORB; - } - } - } - - if (((i == 28) || (i == 29) || (i == 30))) { /* calculating the the probability that the neutron is reflected at the TOP OUTER wall*/ - if (UOreflect && strlen (UOreflect)) { - p = Table_Value (uoTable, q, 1); - } else { - if (myuOW > 0 && q > QcyuOW) { - double arg = (q - myuOW * QcyuOW) / WyuOW; - if (arg < 10) { - p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayuOW * (q - QcyuOW)); - } else - ABSORB; - } - } - } - - if (((i == 11) || (i == 12) || (i == 13))) { /* calculating the the probability that the neutron is reflected at the BOTTOM INNER wall*/ - if (DIreflect && strlen (DIreflect)) { - p = Table_Value (diTable, q, 1); - } else { - if (myd > 0 && q > Qcyd) { - double arg = (q - myd * Qcyd) / Wyd; - if (arg < 10) { - p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayd * (q - Qcyd)); - } else - ABSORB; - } - } - } - - if (((i == 31) || (i == 32) || (i == 33))) { /* calculating the the probability that the neutron is reflected at the BOTTOM OUTER wall*/ - if (DOreflect && strlen (DOreflect)) { - p = Table_Value (doTable, q, 1); - } else { - if (mydOW > 0 && q > QcydOW) { - double arg = (q - mydOW * QcydOW) / WydOW; - if (arg < 10) { - p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaydOW * (q - QcydOW)); - } else - ABSORB; - } - } - } - - p *= R0; - SCATTER; - - } while (z < l); /* repeat the interaction loop untill the neutron pass the end of guide */ - - if (x <= -w2r && x >= -w2rwt && y <= mru2 * x + nru2 && y >= mrd2 * x + nrd2 && mxr != -1 - && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT exit wall and the wall is not transparent*/ - ABSORB; - if (x >= w2l && x <= w2lwt && y <= mlu2 * x + nlu2 && y >= mld2 * x + nld2 && mxl != -1 - && mxlOW != -1) /* absorbing the neutron if it hit the LEFT exit wall and the wall is not transparent*/ - ABSORB; - if (y <= -h2d && y >= -h2dwt && x <= (y - nld2) / mld2 && x >= (y - nrd2) / mrd2 && myd != -1 - && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM exit wall and the wall is not transparent*/ - ABSORB; - if (y >= h2u && y <= h2uwt && x <= (y - nlu2) / mlu2 && x >= (y - nru2) / mru2 && myu != -1 - && myuOW != -1) /* absorbing the neutron if it hit the TOP exit wall and the wall is not transparent*/ - ABSORB; -#ifndef NOABSORB_INF_NAN - /* Check for nan or inf particle parms */ - if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; - if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; -#else - if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef RIreflect - #undef LIreflect - #undef UIreflect - #undef DIreflect - #undef ROreflect - #undef LOreflect - #undef UOreflect - #undef DOreflect - #undef w1l - #undef w2l - #undef linwl - #undef loutwl - #undef w1r - #undef w2r - #undef linwr - #undef loutwr - #undef h1u - #undef h2u - #undef linhu - #undef louthu - #undef h1d - #undef h2d - #undef linhd - #undef louthd - #undef l - #undef R0 - #undef Qcxl - #undef Qcxr - #undef Qcyu - #undef Qcyd - #undef alphaxl - #undef alphaxr - #undef alphayu - #undef alphayd - #undef Wxr - #undef Wxl - #undef Wyu - #undef Wyd - #undef mxr - #undef mxl - #undef myu - #undef myd - #undef QcxrOW - #undef QcxlOW - #undef QcyuOW - #undef QcydOW - #undef alphaxlOW - #undef alphaxrOW - #undef alphayuOW - #undef alphaydOW - #undef WxrOW - #undef WxlOW - #undef WyuOW - #undef WydOW - #undef mxrOW - #undef mxlOW - #undef myuOW - #undef mydOW - #undef rwallthick - #undef lwallthick - #undef uwallthick - #undef dwallthick - #undef w1rwt - #undef w1lwt - #undef h1uwt - #undef h1dwt - #undef w2rwt - #undef w2lwt - #undef h2uwt - #undef h2dwt - #undef pawr - #undef pawl - #undef pbwr - #undef pbwl - #undef pahu - #undef pahd - #undef pbhu - #undef pbhd - #undef awl - #undef bwl - #undef awr - #undef bwr - #undef ahu - #undef bhu - #undef ahd - #undef bhd - #undef awlwt - #undef bwlwt - #undef awrwt - #undef bwrwt - #undef ahuwt - #undef bhuwt - #undef ahdwt - #undef bhdwt - #undef pawrwt - #undef pawlwt - #undef pbwrwt - #undef pbwlwt - #undef pahuwt - #undef pahdwt - #undef pbhuwt - #undef pbhdwt - #undef a2wlwt - #undef b2wlwt - #undef a2wrwt - #undef b2wrwt - #undef a2huwt - #undef b2huwt - #undef a2hdwt - #undef b2hdwt - #undef a2wl - #undef b2wl - #undef a2wr - #undef b2wr - #undef a2hu - #undef b2hu - #undef a2hd - #undef b2hd - #undef mru1 - #undef mru2 - #undef nru1 - #undef nru2 - #undef mrd1 - #undef mrd2 - #undef nrd1 - #undef nrd2 - #undef mlu1 - #undef mlu2 - #undef nlu1 - #undef nlu2 - #undef mld1 - #undef mld2 - #undef nld1 - #undef nld2 - #undef z0wr - #undef z0wl - #undef z0hu - #undef z0hd - #undef p2parawr - #undef p2parawl - #undef p2parahu - #undef p2parahd - #undef p2parawrwt - #undef p2parawlwt - #undef p2parahuwt - #undef p2parahdwt - #undef riTable - #undef liTable - #undef uiTable - #undef diTable - #undef roTable - #undef loTable - #undef uoTable - #undef doTable - return; -} /* class_Guide_four_side_trace */ - -#pragma acc routine -void class_MultiDiskChopper_trace(_class_MultiDiskChopper *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define slit_center (_comp->_parameters.slit_center) - #define slit_width (_comp->_parameters.slit_width) - #define nslits (_comp->_parameters.nslits) - #define delta_y (_comp->_parameters.delta_y) - #define nu (_comp->_parameters.nu) - #define nrev (_comp->_parameters.nrev) - #define ratio (_comp->_parameters.ratio) - #define jitter (_comp->_parameters.jitter) - #define delay (_comp->_parameters.delay) - #define isfirst (_comp->_parameters.isfirst) - #define phase (_comp->_parameters.phase) - #define radius (_comp->_parameters.radius) - #define equal (_comp->_parameters.equal) - #define abs_out (_comp->_parameters.abs_out) - #define verbose (_comp->_parameters.verbose) - #define T (_comp->_parameters.T) - #define To (_comp->_parameters.To) - #define omega (_comp->_parameters.omega) - #define dslit_center (_comp->_parameters.dslit_center) - #define dhslit_width (_comp->_parameters.dhslit_width) - #define t0 (_comp->_parameters.t0) - #define t1 (_comp->_parameters.t1) - SIG_MESSAGE("[_wfmc_1_trace] component wfmc_1=MultiDiskChopper() TRACE [MultiDiskChopper:0]"); - - double phi; - double xprime, yprime; - double toff; - int irev, islit; - - // Propagate into the chopper disk plane - PROP_Z0; - - if (delta_y > 0) { - // 'anormal' case, chopper above guide - // mirror coordinate system - xprime = -x; - yprime = -y + delta_y; - } else { - // 'normal' case, chopper below guide - xprime = x; - yprime = y - delta_y; - } - - // Is neutron transmitted/absorbed outside the disk diameter ? - if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) - if (abs_out) { - ABSORB; - } else { - SCATTER; - } - else { - if (isfirst) { - irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); - - if (equal) { - // Distribute neutrons equally over slits - t = rand01 () * nslits; - islit = (t == nslits) ? nslits - 1 : floor (t); - t = (t - islit) * t1[islit]; - - p *= t1[islit] / T * nslits; - } else { - // Distribute neutrons proportional to slit size - t = rand01 () * To; - islit = 0; - while (t1[islit] < t) - islit++; - - /* weight correction: chopper slits transmission opening time per full revolution time */ - p *= To / T; - } - - // offset time stamp according to slit phase, neutron position and jitter - t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); - - } else { - - // Check whether each t_offset carried by the ray make it through - double weight_update = p/_particle->p_last_time_manipulation; - _particle->p_last_time_manipulation = 0; - - int train_index; - int one_did_hit = 0; - int this_t_hit; - double this_train_t; - int all_dead = 1; - double p_total = 0; - for (train_index=0; train_indexp_trains[train_index] == 0) continue; - all_dead = 0; - - this_train_t = t + _particle->t_offset[train_index]; - // where does the neutron hit the disk ? - phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); - - // does the neutron hit one of the slits ? - islit = 0; - this_t_hit = 0; - while (islit < nslits && !this_t_hit) { - if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) - this_t_hit = 1; - - islit++; - } - if (this_t_hit == 0) _particle->p_trains[train_index] = 0; - else { - one_did_hit = 1; - _particle->p_trains[train_index] *= weight_update; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; - } - } - // if not a single t_offset made it through a slit, absorb this ray - if (!one_did_hit || all_dead) ABSORB; - - p = _particle->p_last_time_manipulation; - } - } -#ifndef NOABSORB_INF_NAN - /* Check for nan or inf particle parms */ - if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; - if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; -#else - if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef slit_center - #undef slit_width - #undef nslits - #undef delta_y - #undef nu - #undef nrev - #undef ratio - #undef jitter - #undef delay - #undef isfirst - #undef phase - #undef radius - #undef equal - #undef abs_out - #undef verbose - #undef T - #undef To - #undef omega - #undef dslit_center - #undef dhslit_width - #undef t0 - #undef t1 - return; -} /* class_MultiDiskChopper_trace */ - -#pragma acc routine -void class_Slit_trace(_class_Slit *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define xmin (_comp->_parameters.xmin) - #define xmax (_comp->_parameters.xmax) - #define ymin (_comp->_parameters.ymin) - #define ymax (_comp->_parameters.ymax) - #define radius (_comp->_parameters.radius) - #define xwidth (_comp->_parameters.xwidth) - #define yheight (_comp->_parameters.yheight) - #define isradial (_comp->_parameters.isradial) - SIG_MESSAGE("[_pinhole_1_trace] component pinhole_1=Slit() TRACE [Slit:0]"); - - PROP_Z0; - if (!isradial ? (x < xmin || x > xmax || y < ymin || y > ymax) : (x * x + y * y > radius * radius)) - ABSORB; - else - SCATTER; -#ifndef NOABSORB_INF_NAN - /* Check for nan or inf particle parms */ - if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; - if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; -#else - if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef xmin - #undef xmax - #undef ymin - #undef ymax - #undef radius - #undef xwidth - #undef yheight - #undef isradial - return; -} /* class_Slit_trace */ - -#pragma acc routine -void class_DiskChopper_trace(_class_DiskChopper *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define theta_0 (_comp->_parameters.theta_0) - #define radius (_comp->_parameters.radius) - #define yheight (_comp->_parameters.yheight) - #define nu (_comp->_parameters.nu) - #define nslit (_comp->_parameters.nslit) - #define jitter (_comp->_parameters.jitter) - #define delay (_comp->_parameters.delay) - #define isfirst (_comp->_parameters.isfirst) - #define n_pulse (_comp->_parameters.n_pulse) - #define abs_out (_comp->_parameters.abs_out) - #define phase (_comp->_parameters.phase) - #define xwidth (_comp->_parameters.xwidth) - #define verbose (_comp->_parameters.verbose) - #define Tg (_comp->_parameters.Tg) - #define To (_comp->_parameters.To) - #define delta_y (_comp->_parameters.delta_y) - #define height (_comp->_parameters.height) - #define omega (_comp->_parameters.omega) - SIG_MESSAGE("[_bp1_chopper_trace] component bp1_chopper=DiskChopper() TRACE [DiskChopper:0]"); - - double toff; - double yprime; - PROP_Z0; - yprime = y + delta_y; - - /* Is neutron outside the vertical slit range and should we absorb? */ - if (abs_out && (x * x + yprime * yprime) > radius * radius) { - ABSORB; - } - /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ - if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { - ABSORB; - } - - if (isfirst) { - /* all events are put in the transmitted time frame */ - t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); - /* correction: chopper slits transmission opening/full disk */ - p *= nslit * theta_0 / 2.0 / PI; - } else { - - // Check whether each t_offset carried by the ray make it through - double weight_update = p/_particle->p_last_time_manipulation; - _particle->p_last_time_manipulation = 0; - - int train_index; - int one_did_hit = 0; - double this_train_t; - int all_dead = 1; - - for (train_index=0; train_indexp_trains[train_index] == 0) continue; - all_dead = 0; - - this_train_t = t + _particle->t_offset[train_index]; - toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); - - /* does neutron hit outside slit? */ - if (fmod (toff + To / 2.0, Tg) > To) - _particle->p_trains[train_index] = 0; // T_ABSORB - else { - // T_TRANSMIT - one_did_hit = 1; - _particle->p_trains[train_index] *= weight_update; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; - } - - } - if (!one_did_hit || all_dead) ABSORB; - - p = _particle->p_last_time_manipulation; - - } - SCATTER; -#ifndef NOABSORB_INF_NAN - /* Check for nan or inf particle parms */ - if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; - if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; -#else - if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef theta_0 - #undef radius - #undef yheight - #undef nu - #undef nslit - #undef jitter - #undef delay - #undef isfirst - #undef n_pulse - #undef abs_out - #undef phase - #undef xwidth - #undef verbose - #undef Tg - #undef To - #undef delta_y - #undef height - #undef omega - return; -} /* class_DiskChopper_trace */ - -#pragma acc routine -void class_Graphite_Diffuser_trace(_class_Graphite_Diffuser *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define xwidth (_comp->_parameters.xwidth) - #define ywidth (_comp->_parameters.ywidth) - #define thick (_comp->_parameters.thick) - #define abs (_comp->_parameters.abs) - SIG_MESSAGE("[_graph_trace] component graph=Graphite_Diffuser() TRACE [Graphite_Diffuser:0]"); - - - double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; - double dt; - PROP_Z0; - if (x>-xwidth/2 || x-ywidth/2 || y_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef xwidth - #undef ywidth - #undef thick - #undef abs - return; -} /* class_Graphite_Diffuser_trace */ - -#pragma acc routine -void class_Monitor_nD_trace(_class_Monitor_nD *_comp - , _class_particle *_particle) { - ABSORBED=SCATTERED=RESTORE=0; - #define user1 (_comp->_parameters.user1) - #define user2 (_comp->_parameters.user2) - #define user3 (_comp->_parameters.user3) - #define xwidth (_comp->_parameters.xwidth) - #define yheight (_comp->_parameters.yheight) - #define zdepth (_comp->_parameters.zdepth) - #define xmin (_comp->_parameters.xmin) - #define xmax (_comp->_parameters.xmax) - #define ymin (_comp->_parameters.ymin) - #define ymax (_comp->_parameters.ymax) - #define zmin (_comp->_parameters.zmin) - #define zmax (_comp->_parameters.zmax) - #define bins (_comp->_parameters.bins) - #define min (_comp->_parameters.min) - #define max (_comp->_parameters.max) - #define restore_neutron (_comp->_parameters.restore_neutron) - #define radius (_comp->_parameters.radius) - #define options (_comp->_parameters.options) - #define filename (_comp->_parameters.filename) - #define geometry (_comp->_parameters.geometry) - #define nowritefile (_comp->_parameters.nowritefile) - #define username1 (_comp->_parameters.username1) - #define username2 (_comp->_parameters.username2) - #define username3 (_comp->_parameters.username3) - #define tsplit (_comp->_parameters.tsplit) - #define adaptive_target (_comp->_parameters.adaptive_target) - #define DEFS (_comp->_parameters.DEFS) - #define Vars (_comp->_parameters.Vars) - #define detector (_comp->_parameters.detector) - #define offdata (_comp->_parameters.offdata) - SIG_MESSAGE("[_sample_PSD_trace] component sample_PSD=Monitor_nD() TRACE [Monitor_nD:0]"); - - double transmit_he3 = 1.0; - double multiplier_capture = 1.0; - double t0 = 0; - double t1 = 0; - int pp; - int intersect = 0; - char Flag_Restore = 0; - - #ifdef OPENACC - #ifdef USE_OFF - off_struct thread_offdata = offdata; - #endif - #else - #define thread_offdata offdata - #endif - - double *pp_array=malloc(sizeof(double)*_particle->N_trains); - - /* this is done automatically - STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - */ - #ifdef USE_OFF - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - /* determine intersections with object */ - intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); - if (Vars.Flag_mantid) { - if (intersect) { - Vars.OFF_polyidx = thread_offdata.nextintersect; - } else { - Vars.OFF_polyidx = -1; - } - } - } else - #endif - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ - { - // propagate to xy plane and find intersection - // make sure the event is recoverable afterwards - t0 = t; - ALLOW_BACKPROP; - PROP_Z0; - if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful - { - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { - // square xy - intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); - } else { - // disk xy - intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); - } - } else { - intersect = 0; - } - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ - { - intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); - /* intersect = (intersect && t0 > 0); */ - } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ - { - intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ - { - intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ - { - intersect = 1; - } - - if (intersect) { - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) - || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { - /* check if we have to remove the top/bottom with BANANA shape */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { - if (intersect == 1) { // Entered and left through sides - if (t0 < 0 && t1 > 0) { - t0 = t; /* neutron was already inside ! */ - } - if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ - t1 = t; - } - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - intersect = 0; - Flag_Restore = 1; - } - } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - intersect = 0; - Flag_Restore = 1; - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit - intersect = 0; - Flag_Restore = 1; - } else { - printf ("Cylinder_intersect returned unexpected value %i\n", intersect); - } - } else { - // All other shapes than the BANANA - if (t0 < 0 && t1 > 0) - t0 = t; /* neutron was already inside ! */ - if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ - t1 = t; - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) - PROP_DT (t1); /* t1 outgoing beam */ - else - PROP_DT (t0); /* t0 incoming beam */ - } - - /* Final test if we are on lid / bottom of banana/sphere */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { - if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { - intersect = 0; - Flag_Restore = 1; - } - } - } - } - - if (intersect) { - /* Now get the data to monitor: current or keep from PreMonitor */ - /* if (Vars.Flag_UsePreMonitor != 1)*/ - /* {*/ - /* Vars.cp = p;*/ - /* Vars.cx = x;*/ - /* Vars.cvx = vx;*/ - /* Vars.csx = sx;*/ - /* Vars.cy = y;*/ - /* Vars.cvy = vy;*/ - /* Vars.csy = sy;*/ - /* Vars.cz = z;*/ - /* Vars.cvz = vz;*/ - /* Vars.csz = sz;*/ - /* Vars.ct = t;*/ - /* }*/ - - if ((Vars.He3_pressure > 0) && (t1 != t0) - && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { - transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); - /* will monitor the absorbed part */ - p = p * (1 - transmit_he3); - } - - if (Vars.Flag_capture) { - multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); - if (multiplier_capture != 0) - multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ - p = p * multiplier_capture / 1.7985; - } - - - int train_index; - double p_original = p; - double p_factor = p/_particle->p_last_time_manipulation; - - if (adaptive_target) { - #pragma acc atomic - total_N_sent += adaptive_N; - #pragma acc atomic - total_rays_sent++; - } - - if (tsplit==1) { - double t_original = t; - for (train_index=0; train_indexp_trains[train_index] > 0) { - p = p_factor*_particle->p_trains[train_index]; - t = t_original + _particle->t_offset[train_index]; - - pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); - - if (adaptive_target) total_arrived++; - - } else pp_array[train_index] = 0; - } - p = p_original; - t = t_original; - - int pp_total = 0; - for (train_index=0; train_index 0) { - SCATTER; - } - - } else { - - /* - // Now just use normal p - double total_p = 0; - for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; - } - - p = total_p; - */ - - pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); - if (pp == 0.0) { - ABSORB; - } else if (pp == 1) { - SCATTER; - } - } - - - /*set weight to undetected part if capture and/or he3_pressure*/ - if (Vars.He3_pressure > 0) { - /* after monitor, only remains 1-p_detect */ - p = p * transmit_he3 / (1.0 - transmit_he3); - } - - if (Vars.Flag_capture) { - p = p / multiplier_capture * 1.7985; - } - - if (Vars.Flag_parallel) /* back to neutron state before detection */ - Flag_Restore = 1; - } /* end if intersection */ - else { - if (Vars.Flag_Absorb && !Vars.Flag_parallel) { - // restore neutron ray before absorbing for correct mcdisplay - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - ABSORB; - } else - Flag_Restore = 1; /* no intersection, back to previous state */ - } - - if (Flag_Restore) { - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - } -#ifndef NOABSORB_INF_NAN - /* Check for nan or inf particle parms */ - if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; - if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; -#else - if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); - if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); -#endif - #undef user1 - #undef user2 - #undef user3 - #undef xwidth - #undef yheight - #undef zdepth - #undef xmin - #undef xmax - #undef ymin - #undef ymax - #undef zmin - #undef zmax - #undef bins - #undef min - #undef max - #undef restore_neutron - #undef radius - #undef options - #undef filename - #undef geometry - #undef nowritefile - #undef username1 - #undef username2 - #undef username3 - #undef tsplit - #undef adaptive_target - #undef DEFS - #undef Vars - #undef detector - #undef offdata - return; -} /* class_Monitor_nD_trace */ - -/* ***************************************************************************** -* instrument 'ODIN_TOF_train3' TRACE -***************************************************************************** */ - -#ifndef FUNNEL -#pragma acc routine -int raytrace(_class_particle* _particle) { /* single event propagation, called by mccode_main for ODIN_TOF_train3:TRACE */ - - /* init variables and counters for TRACE */ - #undef ABSORB0 - #undef ABSORB - #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++;} while(0) - #define ABSORB ABSORB0 - DEBUG_ENTER(); - DEBUG_STATE(); - _particle->flag_nocoordschange=0; /* Init */ - _class_particle _particle_save=*_particle; - /* the main iteration loop for one incoming event */ - while (!ABSORBED) { /* iterate event until absorbed */ - /* send particle event to component instance, one after the other */ - /* begin component Origin=Progress_bar() [1] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_Origin_var._rotation_is_identity) { - if(!_Origin_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 1) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_Origin_var._name); - DEBUG_STATE(); - class_Progress_bar_trace(&_Origin_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component Origin [1] */ - /* begin component optical_axis=Arm() [2] */ - if (!ABSORBED && _particle->_index == 2) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component optical_axis [2] */ - /* begin component Source=ESS_butterfly() [3] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_Source_var._rotation_is_identity) { - if(!_Source_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 3) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_Source_var._name); - DEBUG_STATE(); - class_ESS_butterfly_trace(&_Source_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component Source [3] */ - /* begin component Start_of_bi=Arm() [4] */ - if (!ABSORBED && _particle->_index == 4) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component Start_of_bi [4] */ - /* begin component bi=bi_spec_ellipse() [5] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_bi_var._rotation_is_identity) { - if(!_bi_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 5) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_bi_var._name); - DEBUG_STATE(); - class_bi_spec_ellipse_trace(&_bi_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component bi [5] */ - /* begin component End_of_bi=Arm() [6] */ - if (!ABSORBED && _particle->_index == 6) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component End_of_bi [6] */ - /* begin component NBOA_drawing_1_end=Guide_four_side() [7] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_NBOA_drawing_1_end_var._rotation_is_identity) { - if(!_NBOA_drawing_1_end_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 7) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_NBOA_drawing_1_end_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component NBOA_drawing_1_end [7] */ - /* begin component g1a2=Guide_four_side() [8] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g1a2_var._rotation_is_identity) { - if(!_g1a2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 8) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g1a2_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g1a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g1a2 [8] */ - /* begin component g1a3=Guide_four_side() [9] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g1a3_var._rotation_is_identity) { - if(!_g1a3_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 9) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g1a3_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g1a3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g1a3 [9] */ - /* begin component g1b1=Guide_four_side() [10] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g1b1_var._rotation_is_identity) { - if(!_g1b1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 10) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g1b1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g1b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g1b1 [10] */ - /* begin component g1c1=Guide_four_side() [11] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g1c1_var._rotation_is_identity) { - if(!_g1c1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 11) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g1c1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g1c1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g1c1 [11] */ - /* begin component wfm_position=Arm() [12] */ - if (!ABSORBED && _particle->_index == 12) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component wfm_position [12] */ - /* begin component wfm_1_position=Arm() [13] */ - if (!ABSORBED && _particle->_index == 13) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component wfm_1_position [13] */ - /* begin component wfmc_1=MultiDiskChopper() [14] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_wfmc_1_var._rotation_is_identity) { - if(!_wfmc_1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 14) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_wfmc_1_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution - class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component wfmc_1 [14] */ - /* begin component pinhole_1=Slit() [15] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_pinhole_1_var._rotation_is_identity) { - if(!_pinhole_1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 15) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_pinhole_1_var._name); - DEBUG_STATE(); - class_Slit_trace(&_pinhole_1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component pinhole_1 [15] */ - /* begin component wfm_2_position=Arm() [16] */ - if (!ABSORBED && _particle->_index == 16) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component wfm_2_position [16] */ - /* begin component wfmc_2=MultiDiskChopper() [17] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_wfmc_2_var._rotation_is_identity) { - if(!_wfmc_2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 17) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_wfmc_2_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution - class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component wfmc_2 [17] */ - /* begin component g2a1=Guide_four_side() [18] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g2a1_var._rotation_is_identity) { - if(!_g2a1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 18) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g2a1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g2a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g2a1 [18] */ - /* begin component monitor_1_position=Arm() [19] */ - if (!ABSORBED && _particle->_index == 19) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component monitor_1_position [19] */ - /* begin component g2a2=Guide_four_side() [20] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g2a2_var._rotation_is_identity) { - if(!_g2a2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 20) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g2a2_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g2a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g2a2 [20] */ - /* begin component fo1_position=Arm() [21] */ - if (!ABSORBED && _particle->_index == 21) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component fo1_position [21] */ - /* begin component fo_chopper_1=MultiDiskChopper() [22] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_fo_chopper_1_var._rotation_is_identity) { - if(!_fo_chopper_1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 22) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_fo_chopper_1_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution - class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component fo_chopper_1 [22] */ - /* begin component bp1_position=Arm() [23] */ - if (!ABSORBED && _particle->_index == 23) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component bp1_position [23] */ - /* begin component bp1_chopper=DiskChopper() [24] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_bp1_chopper_var._rotation_is_identity) { - if(!_bp1_chopper_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 24) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_bp1_chopper_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution - class_DiskChopper_trace(&_bp1_chopper_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component bp1_chopper [24] */ - /* begin component g2b1=Guide_four_side() [25] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g2b1_var._rotation_is_identity) { - if(!_g2b1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 25) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g2b1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g2b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g2b1 [25] */ - /* begin component g2b2=Guide_four_side() [26] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g2b2_var._rotation_is_identity) { - if(!_g2b2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 26) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g2b2_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g2b2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g2b2 [26] */ - /* begin component g2b3=Guide_four_side() [27] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g2b3_var._rotation_is_identity) { - if(!_g2b3_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 27) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g2b3_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g2b3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g2b3 [27] */ - /* begin component g2b4=Guide_four_side() [28] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g2b4_var._rotation_is_identity) { - if(!_g2b4_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 28) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g2b4_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g2b4_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g2b4 [28] */ - /* begin component fo2_position=Arm() [29] */ - if (!ABSORBED && _particle->_index == 29) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component fo2_position [29] */ - /* begin component fo_chopper_2=MultiDiskChopper() [30] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_fo_chopper_2_var._rotation_is_identity) { - if(!_fo_chopper_2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 30) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_fo_chopper_2_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution - class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component fo_chopper_2 [30] */ - /* begin component bp2_position=Arm() [31] */ - if (!ABSORBED && _particle->_index == 31) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component bp2_position [31] */ - /* begin component bp_chopper2=DiskChopper() [32] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_bp_chopper2_var._rotation_is_identity) { - if(!_bp_chopper2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 32) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_bp_chopper2_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution - class_DiskChopper_trace(&_bp_chopper2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component bp_chopper2 [32] */ - /* begin component g2c1=Guide_four_side() [33] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g2c1_var._rotation_is_identity) { - if(!_g2c1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 33) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g2c1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g2c1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g2c1 [33] */ - /* begin component t0_start_position=Arm() [34] */ - if (!ABSORBED && _particle->_index == 34) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component t0_start_position [34] */ - /* begin component t0_chopper_alpha=DiskChopper() [35] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_t0_chopper_alpha_var._rotation_is_identity) { - if(!_t0_chopper_alpha_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 35) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_t0_chopper_alpha_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution - class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component t0_chopper_alpha [35] */ - /* begin component t0_end_position=Arm() [36] */ - if (!ABSORBED && _particle->_index == 36) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component t0_end_position [36] */ - /* begin component t0_chopper_beta=DiskChopper() [37] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_t0_chopper_beta_var._rotation_is_identity) { - if(!_t0_chopper_beta_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 37) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_t0_chopper_beta_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution - class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component t0_chopper_beta [37] */ - /* begin component g3a1=Guide_four_side() [38] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g3a1_var._rotation_is_identity) { - if(!_g3a1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 38) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g3a1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g3a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g3a1 [38] */ - /* begin component g3a2=Guide_four_side() [39] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g3a2_var._rotation_is_identity) { - if(!_g3a2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 39) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g3a2_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g3a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g3a2 [39] */ - /* begin component fo3_position=Arm() [40] */ - if (!ABSORBED && _particle->_index == 40) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component fo3_position [40] */ - /* begin component fo_chopper_3=MultiDiskChopper() [41] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_fo_chopper_3_var._rotation_is_identity) { - if(!_fo_chopper_3_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 41) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_fo_chopper_3_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution - class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component fo_chopper_3 [41] */ - /* begin component g3b1=Guide_four_side() [42] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g3b1_var._rotation_is_identity) { - if(!_g3b1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 42) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g3b1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g3b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g3b1 [42] */ - /* begin component g4a1=Guide_four_side() [43] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4a1_var._rotation_is_identity) { - if(!_g4a1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 43) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4a1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4a1 [43] */ - /* begin component monitor_2_position=Arm() [44] */ - if (!ABSORBED && _particle->_index == 44) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component monitor_2_position [44] */ - /* begin component g4a2=Guide_four_side() [45] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4a2_var._rotation_is_identity) { - if(!_g4a2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 45) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4a2_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4a2 [45] */ - /* begin component g4a3=Guide_four_side() [46] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4a3_var._rotation_is_identity) { - if(!_g4a3_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 46) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4a3_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4a3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4a3 [46] */ - /* begin component fo4_position=Arm() [47] */ - if (!ABSORBED && _particle->_index == 47) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component fo4_position [47] */ - /* begin component fo_chopper_4=MultiDiskChopper() [48] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_fo_chopper_4_var._rotation_is_identity) { - if(!_fo_chopper_4_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 48) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_fo_chopper_4_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution - class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component fo_chopper_4 [48] */ - /* begin component g4b1=Guide_four_side() [49] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4b1_var._rotation_is_identity) { - if(!_g4b1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 49) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4b1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4b1 [49] */ - /* begin component g4b2=Guide_four_side() [50] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4b2_var._rotation_is_identity) { - if(!_g4b2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 50) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4b2_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4b2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4b2 [50] */ - /* begin component g4b3=Guide_four_side() [51] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4b3_var._rotation_is_identity) { - if(!_g4b3_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 51) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4b3_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4b3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4b3 [51] */ - /* begin component g4b4=Guide_four_side() [52] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4b4_var._rotation_is_identity) { - if(!_g4b4_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 52) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4b4_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4b4_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4b4 [52] */ - /* begin component g4b5=Guide_four_side() [53] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4b5_var._rotation_is_identity) { - if(!_g4b5_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 53) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4b5_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4b5_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4b5 [53] */ - /* begin component g4b6=Guide_four_side() [54] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g4b6_var._rotation_is_identity) { - if(!_g4b6_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 54) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g4b6_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g4b6_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g4b6 [54] */ - /* begin component g5a1=Guide_four_side() [55] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g5a1_var._rotation_is_identity) { - if(!_g5a1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 55) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g5a1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g5a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g5a1 [55] */ - /* begin component fo5_position=Arm() [56] */ - if (!ABSORBED && _particle->_index == 56) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component fo5_position [56] */ - /* begin component fo_chopper_5=MultiDiskChopper() [57] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_fo_chopper_5_var._rotation_is_identity) { - if(!_fo_chopper_5_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 57) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_fo_chopper_5_var._name); - DEBUG_STATE(); - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution - class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component fo_chopper_5 [57] */ - /* begin component g5b1=Guide_four_side() [58] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g5b1_var._rotation_is_identity) { - if(!_g5b1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 58) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g5b1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g5b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g5b1 [58] */ - /* begin component g5b2=Guide_four_side() [59] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g5b2_var._rotation_is_identity) { - if(!_g5b2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 59) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g5b2_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g5b2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g5b2 [59] */ - /* begin component g5b3=Guide_four_side() [60] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g5b3_var._rotation_is_identity) { - if(!_g5b3_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 60) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g5b3_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g5b3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g5b3 [60] */ - /* begin component g5b4=Guide_four_side() [61] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g5b4_var._rotation_is_identity) { - if(!_g5b4_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 61) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g5b4_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g5b4_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g5b4 [61] */ - /* begin component g5b5=Guide_four_side() [62] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g5b5_var._rotation_is_identity) { - if(!_g5b5_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 62) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g5b5_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g5b5_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g5b5 [62] */ - /* begin component g5b6=Guide_four_side() [63] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g5b6_var._rotation_is_identity) { - if(!_g5b6_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 63) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g5b6_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g5b6_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g5b6 [63] */ - /* begin component g6a1=Guide_four_side() [64] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g6a1_var._rotation_is_identity) { - if(!_g6a1_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 64) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g6a1_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g6a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g6a1 [64] */ - /* begin component g6a2=Guide_four_side() [65] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g6a2_var._rotation_is_identity) { - if(!_g6a2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 65) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g6a2_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g6a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g6a2 [65] */ - /* begin component g6a3=Guide_four_side() [66] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_g6a3_var._rotation_is_identity) { - if(!_g6a3_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 66) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_g6a3_var._name); - DEBUG_STATE(); - class_Guide_four_side_trace(&_g6a3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component g6a3 [66] */ - /* begin component guide_end=Arm() [67] */ - if (!ABSORBED && _particle->_index == 67) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component guide_end [67] */ - /* begin component monitor_3_position=Arm() [68] */ - if (!ABSORBED && _particle->_index == 68) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component monitor_3_position [68] */ - /* begin component start_backend=Arm() [69] */ - if (!ABSORBED && _particle->_index == 69) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component start_backend [69] */ - /* begin component optical_axis_backend=Arm() [70] */ - if (!ABSORBED && _particle->_index == 70) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component optical_axis_backend [70] */ - /* begin component pinhole_2=Slit() [71] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_pinhole_2_var._rotation_is_identity) { - if(!_pinhole_2_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 71) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_pinhole_2_var._name); - DEBUG_STATE(); - class_Slit_trace(&_pinhole_2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component pinhole_2 [71] */ - /* begin component graph=Graphite_Diffuser() [72] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_graph_var._rotation_is_identity) { - if(!_graph_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 72) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_graph_var._name); - DEBUG_STATE(); - class_Graphite_Diffuser_trace(&_graph_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component graph [72] */ - /* begin component sample_monitor_arm=Arm() [73] */ - if (!ABSORBED && _particle->_index == 73) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component sample_monitor_arm [73] */ - /* begin component sample_PSD=Monitor_nD() [74] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_sample_PSD_var._rotation_is_identity) { - if(!_sample_PSD_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 74) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_sample_PSD_var._name); - DEBUG_STATE(); - class_Monitor_nD_trace(&_sample_PSD_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component sample_PSD [74] */ - /* begin component profile_x=Monitor_nD() [75] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_profile_x_var._rotation_is_identity) { - if(!_profile_x_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 75) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_profile_x_var._name); - DEBUG_STATE(); - class_Monitor_nD_trace(&_profile_x_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component profile_x [75] */ - /* begin component profile_y=Monitor_nD() [76] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_profile_y_var._rotation_is_identity) { - if(!_profile_y_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 76) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_profile_y_var._name); - DEBUG_STATE(); - class_Monitor_nD_trace(&_profile_y_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component profile_y [76] */ - /* begin component wavelength=Monitor_nD() [77] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_wavelength_var._rotation_is_identity) { - if(!_wavelength_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 77) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_wavelength_var._name); - DEBUG_STATE(); - class_Monitor_nD_trace(&_wavelength_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component wavelength [77] */ - /* begin component tof=Monitor_nD() [78] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_tof_var._rotation_is_identity) { - if(!_tof_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 78) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_tof_var._name); - DEBUG_STATE(); - class_Monitor_nD_trace(&_tof_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component tof [78] */ - /* begin component wavelength_tof=Monitor_nD() [79] */ - if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change - if (_wavelength_tof_var._rotation_is_identity) { - if(!_wavelength_tof_var._position_relative_is_zero) { - coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); - } - } else { - mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); - } - } - if (!ABSORBED && _particle->_index == 79) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle_save = *_particle; - DEBUG_COMP(_wavelength_tof_var._name); - DEBUG_STATE(); - class_Monitor_nD_trace(&_wavelength_tof_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - if (!ABSORBED) { DEBUG_STATE(); } - } /* end component wavelength_tof [79] */ - /* begin component sample_position=Arm() [80] */ - if (!ABSORBED && _particle->_index == 80) { - _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ - _particle->_index++; - } /* end component sample_position [80] */ - if (_particle->_index > 80) - ABSORBED++; /* absorbed when passed all components */ - } /* while !ABSORBED */ - - DEBUG_LEAVE() - particle_restore(_particle, &_particle_save); - DEBUG_STATE() - - return(_particle->_index); -} /* raytrace */ - -/* loop to generate events and call raytrace() propagate them */ -void raytrace_all(unsigned long long ncount, unsigned long seed) { - - /* CPU-loop */ - unsigned long long loops; - loops = ceil((double)ncount/gpu_innerloop); - /* if on GPU, printf has been globally nullified, re-enable here */ - #ifdef OPENACC - #undef strlen - #undef strcmp - #undef exit - #undef printf - #undef sprintf - #undef fprintf - #endif - - #ifdef OPENACC - if (ncount>gpu_innerloop) { - printf("Defining %llu CPU loops around GPU kernel and adjusting ncount\n",loops); - mcset_ncount(loops*gpu_innerloop); - } else { - #endif - loops=1; - gpu_innerloop = ncount; - #ifdef OPENACC - } - #endif - - for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); - #endif - - /* if on GPU, re-nullify printf */ - #ifdef OPENACC - #undef strlen - #undef strcmp - #undef exit - #undef printf - #undef sprintf - #undef fprintf - #endif - - #pragma acc parallel loop num_gangs(numgangs) vector_length(vecsize) - for (unsigned long pidx=0 ; pidx < gpu_innerloop ; pidx++) { - _class_particle particleN = mcgenstate(); // initial particle - _class_particle* _particle = &particleN; - particleN._uid = pidx; - #ifdef USE_MPI - particleN._uid += mpi_node_rank * ncount; - #endif - - srandom(_hash((pidx+1)*(seed+1))); - - raytrace(_particle); - } /* inner for */ - seed = seed+gpu_innerloop; - } /* CPU for */ - /* if on GPU, printf has been globally nullified, re-enable here */ - #ifdef OPENACC - #undef strlen - #undef strcmp - #undef exit - #undef printf - #undef sprintf - #undef fprintf - #endif - MPI_MASTER( - printf("*** TRACE end *** \n"); - ); -} /* raytrace_all */ - -#endif //no-FUNNEL - -#ifdef FUNNEL -// Alternative raytrace algorithm which iterates all particles through -// one component at the time, can remove absorbs from the next loop and -// switch between cpu/gpu. -void raytrace_all_funnel(unsigned long long ncount, unsigned long seed) { - - // set up outer (CPU) loop / particle batches - unsigned long long loops; - - /* if on GPU, printf has been globally nullified, re-enable here */ - #ifdef OPENACC - #undef strlen - #undef strcmp - #undef exit - #undef printf - #undef sprintf - #undef fprintf - #endif - #ifdef OPENACC - loops = ceil((double)ncount/gpu_innerloop); - if (ncount>gpu_innerloop) { - printf("Defining %llu CPU loops around kernel and adjusting ncount\n",loops); - mcset_ncount(loops*gpu_innerloop); - } else { - #endif - loops=1; - gpu_innerloop = ncount; - #ifdef OPENACC - } - #endif - - // create particles struct and pointer arrays (same memory used by all batches) - _class_particle* particles = malloc(gpu_innerloop*sizeof(_class_particle)); - _class_particle* pbuffer = malloc(gpu_innerloop*sizeof(_class_particle)); - long livebatchsize = gpu_innerloop; - - #undef ABSORB0 - #undef ABSORB - #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; } while(0) - #define ABSORB ABSORB0 - // outer loop / particle batches - for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); - - // init particles - #pragma acc parallel loop present(particles[0:livebatchsize]) - for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { - // generate particle state, set loop index and seed - particles[pidx] = mcgenstate(); - _class_particle* _particle = particles + pidx; - _particle->_uid = pidx; - #ifdef USE_MPI - _particle->_uid += mpi_node_rank * ncount; - #endif - srandom(_hash((pidx+1)*(seed+1))); // _particle->state usage built into srandom macro - } - - // iterate components - - #pragma acc parallel loop present(particles[0:livebatchsize]) - for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { - _class_particle* _particle = &particles[pidx]; - _class_particle _particle_save; - - // Origin - if (!ABSORBED && _particle->_index == 1) { -#ifndef MULTICORE - if (_Origin_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Progress_bar_trace(&_Origin_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // optical_axis - if (!ABSORBED && _particle->_index == 2) { - _particle->_index++; - } - - // Source - if (!ABSORBED && _particle->_index == 3) { -#ifndef MULTICORE - if (_Source_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); - _particle_save = *_particle; - class_ESS_butterfly_trace(&_Source_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // Start_of_bi - if (!ABSORBED && _particle->_index == 4) { - _particle->_index++; - } - - // bi - if (!ABSORBED && _particle->_index == 5) { -#ifndef MULTICORE - if (_bi_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); - _particle_save = *_particle; - class_bi_spec_ellipse_trace(&_bi_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // End_of_bi - if (!ABSORBED && _particle->_index == 6) { - _particle->_index++; - } - - // NBOA_drawing_1_end - if (!ABSORBED && _particle->_index == 7) { -#ifndef MULTICORE - if (_NBOA_drawing_1_end_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g1a2 - if (!ABSORBED && _particle->_index == 8) { -#ifndef MULTICORE - if (_g1a2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g1a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g1a3 - if (!ABSORBED && _particle->_index == 9) { -#ifndef MULTICORE - if (_g1a3_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g1a3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g1b1 - if (!ABSORBED && _particle->_index == 10) { -#ifndef MULTICORE - if (_g1b1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g1b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g1c1 - if (!ABSORBED && _particle->_index == 11) { -#ifndef MULTICORE - if (_g1c1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g1c1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // wfm_position - if (!ABSORBED && _particle->_index == 12) { - _particle->_index++; - } - - // wfm_1_position - if (!ABSORBED && _particle->_index == 13) { - _particle->_index++; - } - - // wfmc_1 - if (!ABSORBED && _particle->_index == 14) { -#ifndef MULTICORE - if (_wfmc_1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN - class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // pinhole_1 - if (!ABSORBED && _particle->_index == 15) { -#ifndef MULTICORE - if (_pinhole_1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Slit_trace(&_pinhole_1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // wfm_2_position - if (!ABSORBED && _particle->_index == 16) { - _particle->_index++; - } - - // wfmc_2 - if (!ABSORBED && _particle->_index == 17) { -#ifndef MULTICORE - if (_wfmc_2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN - class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g2a1 - if (!ABSORBED && _particle->_index == 18) { -#ifndef MULTICORE - if (_g2a1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g2a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // monitor_1_position - if (!ABSORBED && _particle->_index == 19) { - _particle->_index++; - } - - // g2a2 - if (!ABSORBED && _particle->_index == 20) { -#ifndef MULTICORE - if (_g2a2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g2a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // fo1_position - if (!ABSORBED && _particle->_index == 21) { - _particle->_index++; - } - - // fo_chopper_1 - if (!ABSORBED && _particle->_index == 22) { -#ifndef MULTICORE - if (_fo_chopper_1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN - class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // bp1_position - if (!ABSORBED && _particle->_index == 23) { - _particle->_index++; - } - - // bp1_chopper - if (!ABSORBED && _particle->_index == 24) { -#ifndef MULTICORE - if (_bp1_chopper_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN - class_DiskChopper_trace(&_bp1_chopper_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g2b1 - if (!ABSORBED && _particle->_index == 25) { -#ifndef MULTICORE - if (_g2b1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g2b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g2b2 - if (!ABSORBED && _particle->_index == 26) { -#ifndef MULTICORE - if (_g2b2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g2b2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g2b3 - if (!ABSORBED && _particle->_index == 27) { -#ifndef MULTICORE - if (_g2b3_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g2b3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g2b4 - if (!ABSORBED && _particle->_index == 28) { -#ifndef MULTICORE - if (_g2b4_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g2b4_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // fo2_position - if (!ABSORBED && _particle->_index == 29) { - _particle->_index++; - } - - // fo_chopper_2 - if (!ABSORBED && _particle->_index == 30) { -#ifndef MULTICORE - if (_fo_chopper_2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN - class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // bp2_position - if (!ABSORBED && _particle->_index == 31) { - _particle->_index++; - } - - // bp_chopper2 - if (!ABSORBED && _particle->_index == 32) { -#ifndef MULTICORE - if (_bp_chopper2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN - class_DiskChopper_trace(&_bp_chopper2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g2c1 - if (!ABSORBED && _particle->_index == 33) { -#ifndef MULTICORE - if (_g2c1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g2c1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // t0_start_position - if (!ABSORBED && _particle->_index == 34) { - _particle->_index++; - } - - // t0_chopper_alpha - if (!ABSORBED && _particle->_index == 35) { -#ifndef MULTICORE - if (_t0_chopper_alpha_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN - class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // t0_end_position - if (!ABSORBED && _particle->_index == 36) { - _particle->_index++; - } - - // t0_chopper_beta - if (!ABSORBED && _particle->_index == 37) { -#ifndef MULTICORE - if (_t0_chopper_beta_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN - class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g3a1 - if (!ABSORBED && _particle->_index == 38) { -#ifndef MULTICORE - if (_g3a1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g3a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g3a2 - if (!ABSORBED && _particle->_index == 39) { -#ifndef MULTICORE - if (_g3a2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g3a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // fo3_position - if (!ABSORBED && _particle->_index == 40) { - _particle->_index++; - } - - // fo_chopper_3 - if (!ABSORBED && _particle->_index == 41) { -#ifndef MULTICORE - if (_fo_chopper_3_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN - class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g3b1 - if (!ABSORBED && _particle->_index == 42) { -#ifndef MULTICORE - if (_g3b1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g3b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g4a1 - if (!ABSORBED && _particle->_index == 43) { -#ifndef MULTICORE - if (_g4a1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // monitor_2_position - if (!ABSORBED && _particle->_index == 44) { - _particle->_index++; - } - - // g4a2 - if (!ABSORBED && _particle->_index == 45) { -#ifndef MULTICORE - if (_g4a2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g4a3 - if (!ABSORBED && _particle->_index == 46) { -#ifndef MULTICORE - if (_g4a3_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4a3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // fo4_position - if (!ABSORBED && _particle->_index == 47) { - _particle->_index++; - } - - // fo_chopper_4 - if (!ABSORBED && _particle->_index == 48) { -#ifndef MULTICORE - if (_fo_chopper_4_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN - class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g4b1 - if (!ABSORBED && _particle->_index == 49) { -#ifndef MULTICORE - if (_g4b1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g4b2 - if (!ABSORBED && _particle->_index == 50) { -#ifndef MULTICORE - if (_g4b2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4b2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g4b3 - if (!ABSORBED && _particle->_index == 51) { -#ifndef MULTICORE - if (_g4b3_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4b3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g4b4 - if (!ABSORBED && _particle->_index == 52) { -#ifndef MULTICORE - if (_g4b4_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4b4_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g4b5 - if (!ABSORBED && _particle->_index == 53) { -#ifndef MULTICORE - if (_g4b5_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4b5_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g4b6 - if (!ABSORBED && _particle->_index == 54) { -#ifndef MULTICORE - if (_g4b6_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g4b6_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g5a1 - if (!ABSORBED && _particle->_index == 55) { -#ifndef MULTICORE - if (_g5a1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g5a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // fo5_position - if (!ABSORBED && _particle->_index == 56) { - _particle->_index++; - } - - // fo_chopper_5 - if (!ABSORBED && _particle->_index == 57) { -#ifndef MULTICORE - if (_fo_chopper_5_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); - _particle_save = *_particle; - if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN - class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g5b1 - if (!ABSORBED && _particle->_index == 58) { -#ifndef MULTICORE - if (_g5b1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g5b1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g5b2 - if (!ABSORBED && _particle->_index == 59) { -#ifndef MULTICORE - if (_g5b2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g5b2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g5b3 - if (!ABSORBED && _particle->_index == 60) { -#ifndef MULTICORE - if (_g5b3_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g5b3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g5b4 - if (!ABSORBED && _particle->_index == 61) { -#ifndef MULTICORE - if (_g5b4_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g5b4_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g5b5 - if (!ABSORBED && _particle->_index == 62) { -#ifndef MULTICORE - if (_g5b5_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g5b5_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g5b6 - if (!ABSORBED && _particle->_index == 63) { -#ifndef MULTICORE - if (_g5b6_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g5b6_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g6a1 - if (!ABSORBED && _particle->_index == 64) { -#ifndef MULTICORE - if (_g6a1_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g6a1_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g6a2 - if (!ABSORBED && _particle->_index == 65) { -#ifndef MULTICORE - if (_g6a2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g6a2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // g6a3 - if (!ABSORBED && _particle->_index == 66) { -#ifndef MULTICORE - if (_g6a3_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Guide_four_side_trace(&_g6a3_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // guide_end - if (!ABSORBED && _particle->_index == 67) { - _particle->_index++; - } - - // monitor_3_position - if (!ABSORBED && _particle->_index == 68) { - _particle->_index++; - } - - // start_backend - if (!ABSORBED && _particle->_index == 69) { - _particle->_index++; - } - - // optical_axis_backend - if (!ABSORBED && _particle->_index == 70) { - _particle->_index++; - } - - // pinhole_2 - if (!ABSORBED && _particle->_index == 71) { -#ifndef MULTICORE - if (_pinhole_2_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Slit_trace(&_pinhole_2_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // graph - if (!ABSORBED && _particle->_index == 72) { -#ifndef MULTICORE - if (_graph_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Graphite_Diffuser_trace(&_graph_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // sample_monitor_arm - if (!ABSORBED && _particle->_index == 73) { - _particle->_index++; - } - - // sample_PSD - if (!ABSORBED && _particle->_index == 74) { -#ifndef MULTICORE - if (_sample_PSD_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Monitor_nD_trace(&_sample_PSD_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // profile_x - if (!ABSORBED && _particle->_index == 75) { -#ifndef MULTICORE - if (_profile_x_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Monitor_nD_trace(&_profile_x_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // profile_y - if (!ABSORBED && _particle->_index == 76) { -#ifndef MULTICORE - if (_profile_y_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Monitor_nD_trace(&_profile_y_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // wavelength - if (!ABSORBED && _particle->_index == 77) { -#ifndef MULTICORE - if (_wavelength_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Monitor_nD_trace(&_wavelength_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // tof - if (!ABSORBED && _particle->_index == 78) { -#ifndef MULTICORE - if (_tof_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Monitor_nD_trace(&_tof_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // wavelength_tof - if (!ABSORBED && _particle->_index == 79) { -#ifndef MULTICORE - if (_wavelength_tof_var._rotation_is_identity) - coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); - else -#endif - mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); - _particle_save = *_particle; - class_Monitor_nD_trace(&_wavelength_tof_var, _particle); - if (_particle->_restore) - particle_restore(_particle, &_particle_save); - _particle->_index++; - } - - // sample_position - if (!ABSORBED && _particle->_index == 80) { - _particle->_index++; - } - - } - - // jump to next viable seed - seed = seed + gpu_innerloop; - } // outer loop / particle batches - - free(particles); - free(pbuffer); - - printf("\n"); -} /* raytrace_all_funnel */ -#endif // FUNNEL - -#undef x -#undef y -#undef z -#undef vx -#undef vy -#undef vz -#undef t -#undef sx -#undef sy -#undef sz -#undef p -#undef mcgravitation -#undef mcMagnet -#undef allow_backprop -#undef _mctmp_a -#undef _mctmp_b -#undef _mctmp_c -#ifdef OPENACC -#undef strlen -#undef strcmp -#undef exit -#undef printf -#undef sprintf -#undef fprintf -#endif -#undef SCATTERED -#undef RESTORE -#undef RESTORE_NEUTRON -#undef STORE_NEUTRON -#undef ABSORBED -#undef ABSORB -#undef ABSORB0 -/* ***************************************************************************** -* instrument 'ODIN_TOF_train3' and components SAVE -***************************************************************************** */ - -_class_Progress_bar *class_Progress_bar_save(_class_Progress_bar *_comp -) { - #define profile (_comp->_parameters.profile) - #define percent (_comp->_parameters.percent) - #define flag_save (_comp->_parameters.flag_save) - #define minutes (_comp->_parameters.minutes) - #define IntermediateCnts (_comp->_parameters.IntermediateCnts) - #define StartTime (_comp->_parameters.StartTime) - #define EndTime (_comp->_parameters.EndTime) - #define CurrentTime (_comp->_parameters.CurrentTime) - #define infostring (_comp->_parameters.infostring) - SIG_MESSAGE("[_Origin_save] component Origin=Progress_bar() SAVE [Progress_bar:0]"); - - MPI_MASTER (fprintf (stdout, "\nSave [%s]\n", instrument_name);); - if (profile && strlen (profile) && strcmp (profile, "NULL") && strcmp (profile, "0")) { - char filename[256]; - if (!strlen (profile) || !strcmp (profile, "NULL") || !strcmp (profile, "0")) - strcpy (filename, instrument_name); - else - strcpy (filename, profile); - DETECTOR_OUT_1D ("Intensity profiler", "Component index [1]", "Intensity", "prof", 1, mcNUMCOMP, mcNUMCOMP - 1, &(instrument->counter_N[1]), - &(instrument->counter_P[1]), &(instrument->counter_P2[1]), filename); - } - #undef profile - #undef percent - #undef flag_save - #undef minutes - #undef IntermediateCnts - #undef StartTime - #undef EndTime - #undef CurrentTime - #undef infostring - return(_comp); -} /* class_Progress_bar_save */ - -_class_Monitor_nD *class_Monitor_nD_save(_class_Monitor_nD *_comp -) { - #define user1 (_comp->_parameters.user1) - #define user2 (_comp->_parameters.user2) - #define user3 (_comp->_parameters.user3) - #define xwidth (_comp->_parameters.xwidth) - #define yheight (_comp->_parameters.yheight) - #define zdepth (_comp->_parameters.zdepth) - #define xmin (_comp->_parameters.xmin) - #define xmax (_comp->_parameters.xmax) - #define ymin (_comp->_parameters.ymin) - #define ymax (_comp->_parameters.ymax) - #define zmin (_comp->_parameters.zmin) - #define zmax (_comp->_parameters.zmax) - #define bins (_comp->_parameters.bins) - #define min (_comp->_parameters.min) - #define max (_comp->_parameters.max) - #define restore_neutron (_comp->_parameters.restore_neutron) - #define radius (_comp->_parameters.radius) - #define options (_comp->_parameters.options) - #define filename (_comp->_parameters.filename) - #define geometry (_comp->_parameters.geometry) - #define nowritefile (_comp->_parameters.nowritefile) - #define username1 (_comp->_parameters.username1) - #define username2 (_comp->_parameters.username2) - #define username3 (_comp->_parameters.username3) - #define tsplit (_comp->_parameters.tsplit) - #define adaptive_target (_comp->_parameters.adaptive_target) - #define DEFS (_comp->_parameters.DEFS) - #define Vars (_comp->_parameters.Vars) - #define detector (_comp->_parameters.detector) - #define offdata (_comp->_parameters.offdata) - SIG_MESSAGE("[_sample_PSD_save] component sample_PSD=Monitor_nD() SAVE [Monitor_nD:0]"); - - if (!nowritefile) { - /* save results, but do not free pointers */ - detector = Monitor_nD_Save (&DEFS, &Vars); - } - #undef user1 - #undef user2 - #undef user3 - #undef xwidth - #undef yheight - #undef zdepth - #undef xmin - #undef xmax - #undef ymin - #undef ymax - #undef zmin - #undef zmax - #undef bins - #undef min - #undef max - #undef restore_neutron - #undef radius - #undef options - #undef filename - #undef geometry - #undef nowritefile - #undef username1 - #undef username2 - #undef username3 - #undef tsplit - #undef adaptive_target - #undef DEFS - #undef Vars - #undef detector - #undef offdata - return(_comp); -} /* class_Monitor_nD_save */ - - - -int save(FILE *handle) { /* called by mccode_main for ODIN_TOF_train3:SAVE */ - if (!handle) siminfo_init(NULL); - - /* Instrument 'ODIN_TOF_train3' SAVE */ - SIG_MESSAGE("[ODIN_TOF_train3] SAVE [(null):-1]"); - #define l_min (instrument->_parameters.l_min) - #define l_max (instrument->_parameters.l_max) - #define n_pulses (instrument->_parameters.n_pulses) - #define wfm_delta (instrument->_parameters.wfm_delta) - #define bp_frequency (instrument->_parameters.bp_frequency) - #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) - #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) - #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) - #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) - #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) - #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) - #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) - #define jitter_bp1 (instrument->_parameters.jitter_bp1) - #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) - #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) - #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) - #define jitter_bp2 (instrument->_parameters.jitter_bp2) - #define t0_phase_offset (instrument->_parameters.t0_phase_offset) - #define jit_t0_sec (instrument->_parameters.jit_t0_sec) - #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) - #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) - #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) - #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) - #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) - #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) - #define choppers (instrument->_parameters.choppers) - #define target_tsplit (instrument->_parameters.target_tsplit) -{ - - MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "a"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); - ); -} - #undef l_min - #undef l_max - #undef n_pulses - #undef wfm_delta - #undef bp_frequency - #undef WFM1_phase_offset - #undef jitter_wfmc_1 - #undef WFM2_phase_offset - #undef jitter_wfmc_2 - #undef fo1_phase_offset - #undef jitter_fo_chopper_1 - #undef bp1_phase_offset - #undef jitter_bp1 - #undef fo2_phase_offset - #undef jitter_fo_chopper_2 - #undef bp2_phase_offset - #undef jitter_bp2 - #undef t0_phase_offset - #undef jit_t0_sec - #undef fo3_phase_offset - #undef jitter_fo_chopper_3 - #undef fo4_phase_offset - #undef jitter_fo_chopper_4 - #undef fo5_phase_offset - #undef jitter_fo_chopper_5 - #undef choppers - #undef target_tsplit - /* call iteratively all components SAVE */ - class_Progress_bar_save(&_Origin_var); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - class_Monitor_nD_save(&_sample_PSD_var); - - class_Monitor_nD_save(&_profile_x_var); - - class_Monitor_nD_save(&_profile_y_var); - - class_Monitor_nD_save(&_wavelength_var); - - class_Monitor_nD_save(&_tof_var); - - class_Monitor_nD_save(&_wavelength_tof_var); - - - if (!handle) siminfo_close(); - - return(0); -} /* save */ - -/* ***************************************************************************** -* instrument 'ODIN_TOF_train3' and components FINALLY -***************************************************************************** */ - -_class_Progress_bar *class_Progress_bar_finally(_class_Progress_bar *_comp -) { - #define profile (_comp->_parameters.profile) - #define percent (_comp->_parameters.percent) - #define flag_save (_comp->_parameters.flag_save) - #define minutes (_comp->_parameters.minutes) - #define IntermediateCnts (_comp->_parameters.IntermediateCnts) - #define StartTime (_comp->_parameters.StartTime) - #define EndTime (_comp->_parameters.EndTime) - #define CurrentTime (_comp->_parameters.CurrentTime) - #define infostring (_comp->_parameters.infostring) - SIG_MESSAGE("[_Origin_finally] component Origin=Progress_bar() FINALLY [Progress_bar:0]"); - - time_t NowTime; - time (&NowTime); - fprintf (stdout, "\nFinally [%s: %s]. Time: ", instrument_name, dirname ? dirname : "."); - if (difftime (NowTime, StartTime) < 60.0) - fprintf (stdout, "%g [s] ", difftime (NowTime, StartTime)); - else if (difftime (NowTime, StartTime) > 3600.0) - fprintf (stdout, "%g [h] ", difftime (NowTime, StartTime) / 3600.0); - else - fprintf (stdout, "%g [min] ", difftime (NowTime, StartTime) / 60.0); - fprintf (stdout, "\n"); - #undef profile - #undef percent - #undef flag_save - #undef minutes - #undef IntermediateCnts - #undef StartTime - #undef EndTime - #undef CurrentTime - #undef infostring - return(_comp); -} /* class_Progress_bar_finally */ - -_class_Guide_four_side *class_Guide_four_side_finally(_class_Guide_four_side *_comp -) { - #define RIreflect (_comp->_parameters.RIreflect) - #define LIreflect (_comp->_parameters.LIreflect) - #define UIreflect (_comp->_parameters.UIreflect) - #define DIreflect (_comp->_parameters.DIreflect) - #define ROreflect (_comp->_parameters.ROreflect) - #define LOreflect (_comp->_parameters.LOreflect) - #define UOreflect (_comp->_parameters.UOreflect) - #define DOreflect (_comp->_parameters.DOreflect) - #define w1l (_comp->_parameters.w1l) - #define w2l (_comp->_parameters.w2l) - #define linwl (_comp->_parameters.linwl) - #define loutwl (_comp->_parameters.loutwl) - #define w1r (_comp->_parameters.w1r) - #define w2r (_comp->_parameters.w2r) - #define linwr (_comp->_parameters.linwr) - #define loutwr (_comp->_parameters.loutwr) - #define h1u (_comp->_parameters.h1u) - #define h2u (_comp->_parameters.h2u) - #define linhu (_comp->_parameters.linhu) - #define louthu (_comp->_parameters.louthu) - #define h1d (_comp->_parameters.h1d) - #define h2d (_comp->_parameters.h2d) - #define linhd (_comp->_parameters.linhd) - #define louthd (_comp->_parameters.louthd) - #define l (_comp->_parameters.l) - #define R0 (_comp->_parameters.R0) - #define Qcxl (_comp->_parameters.Qcxl) - #define Qcxr (_comp->_parameters.Qcxr) - #define Qcyu (_comp->_parameters.Qcyu) - #define Qcyd (_comp->_parameters.Qcyd) - #define alphaxl (_comp->_parameters.alphaxl) - #define alphaxr (_comp->_parameters.alphaxr) - #define alphayu (_comp->_parameters.alphayu) - #define alphayd (_comp->_parameters.alphayd) - #define Wxr (_comp->_parameters.Wxr) - #define Wxl (_comp->_parameters.Wxl) - #define Wyu (_comp->_parameters.Wyu) - #define Wyd (_comp->_parameters.Wyd) - #define mxr (_comp->_parameters.mxr) - #define mxl (_comp->_parameters.mxl) - #define myu (_comp->_parameters.myu) - #define myd (_comp->_parameters.myd) - #define QcxrOW (_comp->_parameters.QcxrOW) - #define QcxlOW (_comp->_parameters.QcxlOW) - #define QcyuOW (_comp->_parameters.QcyuOW) - #define QcydOW (_comp->_parameters.QcydOW) - #define alphaxlOW (_comp->_parameters.alphaxlOW) - #define alphaxrOW (_comp->_parameters.alphaxrOW) - #define alphayuOW (_comp->_parameters.alphayuOW) - #define alphaydOW (_comp->_parameters.alphaydOW) - #define WxrOW (_comp->_parameters.WxrOW) - #define WxlOW (_comp->_parameters.WxlOW) - #define WyuOW (_comp->_parameters.WyuOW) - #define WydOW (_comp->_parameters.WydOW) - #define mxrOW (_comp->_parameters.mxrOW) - #define mxlOW (_comp->_parameters.mxlOW) - #define myuOW (_comp->_parameters.myuOW) - #define mydOW (_comp->_parameters.mydOW) - #define rwallthick (_comp->_parameters.rwallthick) - #define lwallthick (_comp->_parameters.lwallthick) - #define uwallthick (_comp->_parameters.uwallthick) - #define dwallthick (_comp->_parameters.dwallthick) - #define w1rwt (_comp->_parameters.w1rwt) - #define w1lwt (_comp->_parameters.w1lwt) - #define h1uwt (_comp->_parameters.h1uwt) - #define h1dwt (_comp->_parameters.h1dwt) - #define w2rwt (_comp->_parameters.w2rwt) - #define w2lwt (_comp->_parameters.w2lwt) - #define h2uwt (_comp->_parameters.h2uwt) - #define h2dwt (_comp->_parameters.h2dwt) - #define pawr (_comp->_parameters.pawr) - #define pawl (_comp->_parameters.pawl) - #define pbwr (_comp->_parameters.pbwr) - #define pbwl (_comp->_parameters.pbwl) - #define pahu (_comp->_parameters.pahu) - #define pahd (_comp->_parameters.pahd) - #define pbhu (_comp->_parameters.pbhu) - #define pbhd (_comp->_parameters.pbhd) - #define awl (_comp->_parameters.awl) - #define bwl (_comp->_parameters.bwl) - #define awr (_comp->_parameters.awr) - #define bwr (_comp->_parameters.bwr) - #define ahu (_comp->_parameters.ahu) - #define bhu (_comp->_parameters.bhu) - #define ahd (_comp->_parameters.ahd) - #define bhd (_comp->_parameters.bhd) - #define awlwt (_comp->_parameters.awlwt) - #define bwlwt (_comp->_parameters.bwlwt) - #define awrwt (_comp->_parameters.awrwt) - #define bwrwt (_comp->_parameters.bwrwt) - #define ahuwt (_comp->_parameters.ahuwt) - #define bhuwt (_comp->_parameters.bhuwt) - #define ahdwt (_comp->_parameters.ahdwt) - #define bhdwt (_comp->_parameters.bhdwt) - #define pawrwt (_comp->_parameters.pawrwt) - #define pawlwt (_comp->_parameters.pawlwt) - #define pbwrwt (_comp->_parameters.pbwrwt) - #define pbwlwt (_comp->_parameters.pbwlwt) - #define pahuwt (_comp->_parameters.pahuwt) - #define pahdwt (_comp->_parameters.pahdwt) - #define pbhuwt (_comp->_parameters.pbhuwt) - #define pbhdwt (_comp->_parameters.pbhdwt) - #define a2wlwt (_comp->_parameters.a2wlwt) - #define b2wlwt (_comp->_parameters.b2wlwt) - #define a2wrwt (_comp->_parameters.a2wrwt) - #define b2wrwt (_comp->_parameters.b2wrwt) - #define a2huwt (_comp->_parameters.a2huwt) - #define b2huwt (_comp->_parameters.b2huwt) - #define a2hdwt (_comp->_parameters.a2hdwt) - #define b2hdwt (_comp->_parameters.b2hdwt) - #define a2wl (_comp->_parameters.a2wl) - #define b2wl (_comp->_parameters.b2wl) - #define a2wr (_comp->_parameters.a2wr) - #define b2wr (_comp->_parameters.b2wr) - #define a2hu (_comp->_parameters.a2hu) - #define b2hu (_comp->_parameters.b2hu) - #define a2hd (_comp->_parameters.a2hd) - #define b2hd (_comp->_parameters.b2hd) - #define mru1 (_comp->_parameters.mru1) - #define mru2 (_comp->_parameters.mru2) - #define nru1 (_comp->_parameters.nru1) - #define nru2 (_comp->_parameters.nru2) - #define mrd1 (_comp->_parameters.mrd1) - #define mrd2 (_comp->_parameters.mrd2) - #define nrd1 (_comp->_parameters.nrd1) - #define nrd2 (_comp->_parameters.nrd2) - #define mlu1 (_comp->_parameters.mlu1) - #define mlu2 (_comp->_parameters.mlu2) - #define nlu1 (_comp->_parameters.nlu1) - #define nlu2 (_comp->_parameters.nlu2) - #define mld1 (_comp->_parameters.mld1) - #define mld2 (_comp->_parameters.mld2) - #define nld1 (_comp->_parameters.nld1) - #define nld2 (_comp->_parameters.nld2) - #define z0wr (_comp->_parameters.z0wr) - #define z0wl (_comp->_parameters.z0wl) - #define z0hu (_comp->_parameters.z0hu) - #define z0hd (_comp->_parameters.z0hd) - #define p2parawr (_comp->_parameters.p2parawr) - #define p2parawl (_comp->_parameters.p2parawl) - #define p2parahu (_comp->_parameters.p2parahu) - #define p2parahd (_comp->_parameters.p2parahd) - #define p2parawrwt (_comp->_parameters.p2parawrwt) - #define p2parawlwt (_comp->_parameters.p2parawlwt) - #define p2parahuwt (_comp->_parameters.p2parahuwt) - #define p2parahdwt (_comp->_parameters.p2parahdwt) - #define riTable (_comp->_parameters.riTable) - #define liTable (_comp->_parameters.liTable) - #define uiTable (_comp->_parameters.uiTable) - #define diTable (_comp->_parameters.diTable) - #define roTable (_comp->_parameters.roTable) - #define loTable (_comp->_parameters.loTable) - #define uoTable (_comp->_parameters.uoTable) - #define doTable (_comp->_parameters.doTable) - SIG_MESSAGE("[_NBOA_drawing_1_end_finally] component NBOA_drawing_1_end=Guide_four_side() FINALLY [Guide_four_side:0]"); - - - #undef RIreflect - #undef LIreflect - #undef UIreflect - #undef DIreflect - #undef ROreflect - #undef LOreflect - #undef UOreflect - #undef DOreflect - #undef w1l - #undef w2l - #undef linwl - #undef loutwl - #undef w1r - #undef w2r - #undef linwr - #undef loutwr - #undef h1u - #undef h2u - #undef linhu - #undef louthu - #undef h1d - #undef h2d - #undef linhd - #undef louthd - #undef l - #undef R0 - #undef Qcxl - #undef Qcxr - #undef Qcyu - #undef Qcyd - #undef alphaxl - #undef alphaxr - #undef alphayu - #undef alphayd - #undef Wxr - #undef Wxl - #undef Wyu - #undef Wyd - #undef mxr - #undef mxl - #undef myu - #undef myd - #undef QcxrOW - #undef QcxlOW - #undef QcyuOW - #undef QcydOW - #undef alphaxlOW - #undef alphaxrOW - #undef alphayuOW - #undef alphaydOW - #undef WxrOW - #undef WxlOW - #undef WyuOW - #undef WydOW - #undef mxrOW - #undef mxlOW - #undef myuOW - #undef mydOW - #undef rwallthick - #undef lwallthick - #undef uwallthick - #undef dwallthick - #undef w1rwt - #undef w1lwt - #undef h1uwt - #undef h1dwt - #undef w2rwt - #undef w2lwt - #undef h2uwt - #undef h2dwt - #undef pawr - #undef pawl - #undef pbwr - #undef pbwl - #undef pahu - #undef pahd - #undef pbhu - #undef pbhd - #undef awl - #undef bwl - #undef awr - #undef bwr - #undef ahu - #undef bhu - #undef ahd - #undef bhd - #undef awlwt - #undef bwlwt - #undef awrwt - #undef bwrwt - #undef ahuwt - #undef bhuwt - #undef ahdwt - #undef bhdwt - #undef pawrwt - #undef pawlwt - #undef pbwrwt - #undef pbwlwt - #undef pahuwt - #undef pahdwt - #undef pbhuwt - #undef pbhdwt - #undef a2wlwt - #undef b2wlwt - #undef a2wrwt - #undef b2wrwt - #undef a2huwt - #undef b2huwt - #undef a2hdwt - #undef b2hdwt - #undef a2wl - #undef b2wl - #undef a2wr - #undef b2wr - #undef a2hu - #undef b2hu - #undef a2hd - #undef b2hd - #undef mru1 - #undef mru2 - #undef nru1 - #undef nru2 - #undef mrd1 - #undef mrd2 - #undef nrd1 - #undef nrd2 - #undef mlu1 - #undef mlu2 - #undef nlu1 - #undef nlu2 - #undef mld1 - #undef mld2 - #undef nld1 - #undef nld2 - #undef z0wr - #undef z0wl - #undef z0hu - #undef z0hd - #undef p2parawr - #undef p2parawl - #undef p2parahu - #undef p2parahd - #undef p2parawrwt - #undef p2parawlwt - #undef p2parahuwt - #undef p2parahdwt - #undef riTable - #undef liTable - #undef uiTable - #undef diTable - #undef roTable - #undef loTable - #undef uoTable - #undef doTable - return(_comp); -} /* class_Guide_four_side_finally */ - -_class_MultiDiskChopper *class_MultiDiskChopper_finally(_class_MultiDiskChopper *_comp -) { - #define slit_center (_comp->_parameters.slit_center) - #define slit_width (_comp->_parameters.slit_width) - #define nslits (_comp->_parameters.nslits) - #define delta_y (_comp->_parameters.delta_y) - #define nu (_comp->_parameters.nu) - #define nrev (_comp->_parameters.nrev) - #define ratio (_comp->_parameters.ratio) - #define jitter (_comp->_parameters.jitter) - #define delay (_comp->_parameters.delay) - #define isfirst (_comp->_parameters.isfirst) - #define phase (_comp->_parameters.phase) - #define radius (_comp->_parameters.radius) - #define equal (_comp->_parameters.equal) - #define abs_out (_comp->_parameters.abs_out) - #define verbose (_comp->_parameters.verbose) - #define T (_comp->_parameters.T) - #define To (_comp->_parameters.To) - #define omega (_comp->_parameters.omega) - #define dslit_center (_comp->_parameters.dslit_center) - #define dhslit_width (_comp->_parameters.dhslit_width) - #define t0 (_comp->_parameters.t0) - #define t1 (_comp->_parameters.t1) - SIG_MESSAGE("[_wfmc_1_finally] component wfmc_1=MultiDiskChopper() FINALLY [MultiDiskChopper:0]"); - - // clean up - if (dslit_center) - free (dslit_center); - - if (dhslit_width) - free (dhslit_width); - - if (t0) - free (t0); - - if (t1) - free (t1); - #undef slit_center - #undef slit_width - #undef nslits - #undef delta_y - #undef nu - #undef nrev - #undef ratio - #undef jitter - #undef delay - #undef isfirst - #undef phase - #undef radius - #undef equal - #undef abs_out - #undef verbose - #undef T - #undef To - #undef omega - #undef dslit_center - #undef dhslit_width - #undef t0 - #undef t1 - return(_comp); -} /* class_MultiDiskChopper_finally */ - -_class_Monitor_nD *class_Monitor_nD_finally(_class_Monitor_nD *_comp -) { - #define user1 (_comp->_parameters.user1) - #define user2 (_comp->_parameters.user2) - #define user3 (_comp->_parameters.user3) - #define xwidth (_comp->_parameters.xwidth) - #define yheight (_comp->_parameters.yheight) - #define zdepth (_comp->_parameters.zdepth) - #define xmin (_comp->_parameters.xmin) - #define xmax (_comp->_parameters.xmax) - #define ymin (_comp->_parameters.ymin) - #define ymax (_comp->_parameters.ymax) - #define zmin (_comp->_parameters.zmin) - #define zmax (_comp->_parameters.zmax) - #define bins (_comp->_parameters.bins) - #define min (_comp->_parameters.min) - #define max (_comp->_parameters.max) - #define restore_neutron (_comp->_parameters.restore_neutron) - #define radius (_comp->_parameters.radius) - #define options (_comp->_parameters.options) - #define filename (_comp->_parameters.filename) - #define geometry (_comp->_parameters.geometry) - #define nowritefile (_comp->_parameters.nowritefile) - #define username1 (_comp->_parameters.username1) - #define username2 (_comp->_parameters.username2) - #define username3 (_comp->_parameters.username3) - #define tsplit (_comp->_parameters.tsplit) - #define adaptive_target (_comp->_parameters.adaptive_target) - #define DEFS (_comp->_parameters.DEFS) - #define Vars (_comp->_parameters.Vars) - #define detector (_comp->_parameters.detector) - #define offdata (_comp->_parameters.offdata) - SIG_MESSAGE("[_sample_PSD_finally] component sample_PSD=Monitor_nD() FINALLY [Monitor_nD:0]"); - - /* free pointers */ - Monitor_nD_Finally (&DEFS, &Vars); - #undef user1 - #undef user2 - #undef user3 - #undef xwidth - #undef yheight - #undef zdepth - #undef xmin - #undef xmax - #undef ymin - #undef ymax - #undef zmin - #undef zmax - #undef bins - #undef min - #undef max - #undef restore_neutron - #undef radius - #undef options - #undef filename - #undef geometry - #undef nowritefile - #undef username1 - #undef username2 - #undef username3 - #undef tsplit - #undef adaptive_target - #undef DEFS - #undef Vars - #undef detector - #undef offdata - return(_comp); -} /* class_Monitor_nD_finally */ - - - -int finally(void) { /* called by mccode_main for ODIN_TOF_train3:FINALLY */ -#pragma acc update host(_Origin_var) -#pragma acc update host(_optical_axis_var) -#pragma acc update host(_Source_var) -#pragma acc update host(_Start_of_bi_var) -#pragma acc update host(_bi_var) -#pragma acc update host(_End_of_bi_var) -#pragma acc update host(_NBOA_drawing_1_end_var) -#pragma acc update host(_g1a2_var) -#pragma acc update host(_g1a3_var) -#pragma acc update host(_g1b1_var) -#pragma acc update host(_g1c1_var) -#pragma acc update host(_wfm_position_var) -#pragma acc update host(_wfm_1_position_var) -#pragma acc update host(_wfmc_1_var) -#pragma acc update host(_pinhole_1_var) -#pragma acc update host(_wfm_2_position_var) -#pragma acc update host(_wfmc_2_var) -#pragma acc update host(_g2a1_var) -#pragma acc update host(_monitor_1_position_var) -#pragma acc update host(_g2a2_var) -#pragma acc update host(_fo1_position_var) -#pragma acc update host(_fo_chopper_1_var) -#pragma acc update host(_bp1_position_var) -#pragma acc update host(_bp1_chopper_var) -#pragma acc update host(_g2b1_var) -#pragma acc update host(_g2b2_var) -#pragma acc update host(_g2b3_var) -#pragma acc update host(_g2b4_var) -#pragma acc update host(_fo2_position_var) -#pragma acc update host(_fo_chopper_2_var) -#pragma acc update host(_bp2_position_var) -#pragma acc update host(_bp_chopper2_var) -#pragma acc update host(_g2c1_var) -#pragma acc update host(_t0_start_position_var) -#pragma acc update host(_t0_chopper_alpha_var) -#pragma acc update host(_t0_end_position_var) -#pragma acc update host(_t0_chopper_beta_var) -#pragma acc update host(_g3a1_var) -#pragma acc update host(_g3a2_var) -#pragma acc update host(_fo3_position_var) -#pragma acc update host(_fo_chopper_3_var) -#pragma acc update host(_g3b1_var) -#pragma acc update host(_g4a1_var) -#pragma acc update host(_monitor_2_position_var) -#pragma acc update host(_g4a2_var) -#pragma acc update host(_g4a3_var) -#pragma acc update host(_fo4_position_var) -#pragma acc update host(_fo_chopper_4_var) -#pragma acc update host(_g4b1_var) -#pragma acc update host(_g4b2_var) -#pragma acc update host(_g4b3_var) -#pragma acc update host(_g4b4_var) -#pragma acc update host(_g4b5_var) -#pragma acc update host(_g4b6_var) -#pragma acc update host(_g5a1_var) -#pragma acc update host(_fo5_position_var) -#pragma acc update host(_fo_chopper_5_var) -#pragma acc update host(_g5b1_var) -#pragma acc update host(_g5b2_var) -#pragma acc update host(_g5b3_var) -#pragma acc update host(_g5b4_var) -#pragma acc update host(_g5b5_var) -#pragma acc update host(_g5b6_var) -#pragma acc update host(_g6a1_var) -#pragma acc update host(_g6a2_var) -#pragma acc update host(_g6a3_var) -#pragma acc update host(_guide_end_var) -#pragma acc update host(_monitor_3_position_var) -#pragma acc update host(_start_backend_var) -#pragma acc update host(_optical_axis_backend_var) -#pragma acc update host(_pinhole_2_var) -#pragma acc update host(_graph_var) -#pragma acc update host(_sample_monitor_arm_var) -#pragma acc update host(_sample_PSD_var) -#pragma acc update host(_profile_x_var) -#pragma acc update host(_profile_y_var) -#pragma acc update host(_wavelength_var) -#pragma acc update host(_tof_var) -#pragma acc update host(_wavelength_tof_var) -#pragma acc update host(_sample_position_var) -#pragma acc update host(_instrument_var) - - siminfo_init(NULL); - save(siminfo_file); /* save data when simulation ends */ - - /* call iteratively all components FINALLY */ - class_Progress_bar_finally(&_Origin_var); - - - - - - - class_Guide_four_side_finally(&_NBOA_drawing_1_end_var); - - class_Guide_four_side_finally(&_g1a2_var); - - class_Guide_four_side_finally(&_g1a3_var); - - class_Guide_four_side_finally(&_g1b1_var); - - class_Guide_four_side_finally(&_g1c1_var); - - - - class_MultiDiskChopper_finally(&_wfmc_1_var); - - - - class_MultiDiskChopper_finally(&_wfmc_2_var); - - class_Guide_four_side_finally(&_g2a1_var); - - - class_Guide_four_side_finally(&_g2a2_var); - - - class_MultiDiskChopper_finally(&_fo_chopper_1_var); - - - - class_Guide_four_side_finally(&_g2b1_var); - - class_Guide_four_side_finally(&_g2b2_var); - - class_Guide_four_side_finally(&_g2b3_var); - - class_Guide_four_side_finally(&_g2b4_var); - - - class_MultiDiskChopper_finally(&_fo_chopper_2_var); - - - - class_Guide_four_side_finally(&_g2c1_var); - - - - - - class_Guide_four_side_finally(&_g3a1_var); - - class_Guide_four_side_finally(&_g3a2_var); - - - class_MultiDiskChopper_finally(&_fo_chopper_3_var); - - class_Guide_four_side_finally(&_g3b1_var); - - class_Guide_four_side_finally(&_g4a1_var); - - - class_Guide_four_side_finally(&_g4a2_var); - - class_Guide_four_side_finally(&_g4a3_var); - - - class_MultiDiskChopper_finally(&_fo_chopper_4_var); - - class_Guide_four_side_finally(&_g4b1_var); - - class_Guide_four_side_finally(&_g4b2_var); - - class_Guide_four_side_finally(&_g4b3_var); - - class_Guide_four_side_finally(&_g4b4_var); - - class_Guide_four_side_finally(&_g4b5_var); - - class_Guide_four_side_finally(&_g4b6_var); - - class_Guide_four_side_finally(&_g5a1_var); - - - class_MultiDiskChopper_finally(&_fo_chopper_5_var); - - class_Guide_four_side_finally(&_g5b1_var); - - class_Guide_four_side_finally(&_g5b2_var); - - class_Guide_four_side_finally(&_g5b3_var); - - class_Guide_four_side_finally(&_g5b4_var); - - class_Guide_four_side_finally(&_g5b5_var); - - class_Guide_four_side_finally(&_g5b6_var); - - class_Guide_four_side_finally(&_g6a1_var); - - class_Guide_four_side_finally(&_g6a2_var); - - class_Guide_four_side_finally(&_g6a3_var); - - - - - - - - - class_Monitor_nD_finally(&_sample_PSD_var); - - class_Monitor_nD_finally(&_profile_x_var); - - class_Monitor_nD_finally(&_profile_y_var); - - class_Monitor_nD_finally(&_wavelength_var); - - class_Monitor_nD_finally(&_tof_var); - - class_Monitor_nD_finally(&_wavelength_tof_var); - - - siminfo_close(); - - return(0); -} /* finally */ - -/* ***************************************************************************** -* instrument 'ODIN_TOF_train3' and components DISPLAY -***************************************************************************** */ - - #define magnify mcdis_magnify - #define line mcdis_line - #define dashed_line mcdis_dashed_line - #define multiline mcdis_multiline - #define rectangle mcdis_rectangle - #define box mcdis_box - #define circle mcdis_circle - #define cylinder mcdis_cylinder - #define sphere mcdis_sphere - #define cone mcdis_cone - #define polygon mcdis_polygon - #define polyhedron mcdis_polyhedron -_class_Progress_bar *class_Progress_bar_display(_class_Progress_bar *_comp -) { - #define profile (_comp->_parameters.profile) - #define percent (_comp->_parameters.percent) - #define flag_save (_comp->_parameters.flag_save) - #define minutes (_comp->_parameters.minutes) - #define IntermediateCnts (_comp->_parameters.IntermediateCnts) - #define StartTime (_comp->_parameters.StartTime) - #define EndTime (_comp->_parameters.EndTime) - #define CurrentTime (_comp->_parameters.CurrentTime) - #define infostring (_comp->_parameters.infostring) - SIG_MESSAGE("[_Origin_display] component Origin=Progress_bar() DISPLAY [Progress_bar:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - - #undef profile - #undef percent - #undef flag_save - #undef minutes - #undef IntermediateCnts - #undef StartTime - #undef EndTime - #undef CurrentTime - #undef infostring - return(_comp); -} /* class_Progress_bar_display */ - -_class_Arm *class_Arm_display(_class_Arm *_comp -) { - SIG_MESSAGE("[_optical_axis_display] component optical_axis=Arm() DISPLAY [Arm:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - /* A bit ugly; hard-coded dimensions. */ - - line (0, 0, 0, 0.2, 0, 0); - line (0, 0, 0, 0, 0.2, 0); - line (0, 0, 0, 0, 0, 0.2); - - cone (0.2, 0, 0, 0.01, 0.02, 1, 0, 0); - cone (0, 0.2, 0, 0.01, 0.02, 0, 1, 0); - cone (0, 0, 0.2, 0.01, 0.02, 0, 0, 1); - return(_comp); -} /* class_Arm_display */ - -_class_ESS_butterfly *class_ESS_butterfly_display(_class_ESS_butterfly *_comp -) { - #define sector (_comp->_parameters.sector) - #define beamline (_comp->_parameters.beamline) - #define yheight (_comp->_parameters.yheight) - #define cold_frac (_comp->_parameters.cold_frac) - #define target_index (_comp->_parameters.target_index) - #define dist (_comp->_parameters.dist) - #define focus_xw (_comp->_parameters.focus_xw) - #define focus_yh (_comp->_parameters.focus_yh) - #define c_performance (_comp->_parameters.c_performance) - #define t_performance (_comp->_parameters.t_performance) - #define Lmin (_comp->_parameters.Lmin) - #define Lmax (_comp->_parameters.Lmax) - #define tmax_multiplier (_comp->_parameters.tmax_multiplier) - #define n_pulses (_comp->_parameters.n_pulses) - #define acc_power (_comp->_parameters.acc_power) - #define tfocus_dist (_comp->_parameters.tfocus_dist) - #define tfocus_time (_comp->_parameters.tfocus_time) - #define tfocus_width (_comp->_parameters.tfocus_width) - #define target_tsplit (_comp->_parameters.target_tsplit) - #define ColdWidths (_comp->_parameters.ColdWidths) - #define ThermalWidths (_comp->_parameters.ThermalWidths) - #define ColdScalars (_comp->_parameters.ColdScalars) - #define ThermalScalars (_comp->_parameters.ThermalScalars) - #define Beamlines (_comp->_parameters.Beamlines) - #define wfrac_cold (_comp->_parameters.wfrac_cold) - #define wfrac_thermal (_comp->_parameters.wfrac_thermal) - #define C1_x (_comp->_parameters.C1_x) - #define C1_z (_comp->_parameters.C1_z) - #define C2_x (_comp->_parameters.C2_x) - #define C2_z (_comp->_parameters.C2_z) - #define C3_x (_comp->_parameters.C3_x) - #define C3_z (_comp->_parameters.C3_z) - #define T1_x (_comp->_parameters.T1_x) - #define T1_z (_comp->_parameters.T1_z) - #define T2_x (_comp->_parameters.T2_x) - #define T2_z (_comp->_parameters.T2_z) - #define T3_x (_comp->_parameters.T3_x) - #define T3_z (_comp->_parameters.T3_z) - #define rC1_x (_comp->_parameters.rC1_x) - #define rC1_z (_comp->_parameters.rC1_z) - #define rC2_x (_comp->_parameters.rC2_x) - #define rC2_z (_comp->_parameters.rC2_z) - #define rC3_x (_comp->_parameters.rC3_x) - #define rC3_z (_comp->_parameters.rC3_z) - #define rT1_x (_comp->_parameters.rT1_x) - #define rT1_z (_comp->_parameters.rT1_z) - #define rT2_x (_comp->_parameters.rT2_x) - #define rT2_z (_comp->_parameters.rT2_z) - #define rT3_x (_comp->_parameters.rT3_x) - #define rT3_z (_comp->_parameters.rT3_z) - #define tx (_comp->_parameters.tx) - #define ty (_comp->_parameters.ty) - #define tz (_comp->_parameters.tz) - #define r11 (_comp->_parameters.r11) - #define r12 (_comp->_parameters.r12) - #define r21 (_comp->_parameters.r21) - #define r22 (_comp->_parameters.r22) - #define delta_y (_comp->_parameters.delta_y) - #define Mwidth_c (_comp->_parameters.Mwidth_c) - #define Mwidth_t (_comp->_parameters.Mwidth_t) - #define beamportangle (_comp->_parameters.beamportangle) - #define w_mult (_comp->_parameters.w_mult) - #define w_stat (_comp->_parameters.w_stat) - #define w_focus (_comp->_parameters.w_focus) - #define w_tfocus (_comp->_parameters.w_tfocus) - #define w_geom_c (_comp->_parameters.w_geom_c) - #define w_geom_t (_comp->_parameters.w_geom_t) - #define isleft (_comp->_parameters.isleft) - #define l_range (_comp->_parameters.l_range) - #define cos_thermal (_comp->_parameters.cos_thermal) - #define cos_cold (_comp->_parameters.cos_cold) - #define orientation_angle (_comp->_parameters.orientation_angle) - #define cx (_comp->_parameters.cx) - #define cz (_comp->_parameters.cz) - #define jmax (_comp->_parameters.jmax) - #define dxC (_comp->_parameters.dxC) - #define dxT (_comp->_parameters.dxT) - SIG_MESSAGE("[_Source_display] component Source=ESS_butterfly() DISPLAY [ESS_butterfly:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - #ifndef OPENACC - magnify(""); - butterfly_geometry(delta_y, jmax, cx, cz, - orientation_angle, Beamlines, tx,ty,tz, - rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, - rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, - r11, r12, r21, r22, focus_xw, focus_yh); - #endif - #undef sector - #undef beamline - #undef yheight - #undef cold_frac - #undef target_index - #undef dist - #undef focus_xw - #undef focus_yh - #undef c_performance - #undef t_performance - #undef Lmin - #undef Lmax - #undef tmax_multiplier - #undef n_pulses - #undef acc_power - #undef tfocus_dist - #undef tfocus_time - #undef tfocus_width - #undef target_tsplit - #undef ColdWidths - #undef ThermalWidths - #undef ColdScalars - #undef ThermalScalars - #undef Beamlines - #undef wfrac_cold - #undef wfrac_thermal - #undef C1_x - #undef C1_z - #undef C2_x - #undef C2_z - #undef C3_x - #undef C3_z - #undef T1_x - #undef T1_z - #undef T2_x - #undef T2_z - #undef T3_x - #undef T3_z - #undef rC1_x - #undef rC1_z - #undef rC2_x - #undef rC2_z - #undef rC3_x - #undef rC3_z - #undef rT1_x - #undef rT1_z - #undef rT2_x - #undef rT2_z - #undef rT3_x - #undef rT3_z - #undef tx - #undef ty - #undef tz - #undef r11 - #undef r12 - #undef r21 - #undef r22 - #undef delta_y - #undef Mwidth_c - #undef Mwidth_t - #undef beamportangle - #undef w_mult - #undef w_stat - #undef w_focus - #undef w_tfocus - #undef w_geom_c - #undef w_geom_t - #undef isleft - #undef l_range - #undef cos_thermal - #undef cos_cold - #undef orientation_angle - #undef cx - #undef cz - #undef jmax - #undef dxC - #undef dxT - return(_comp); -} /* class_ESS_butterfly_display */ - -_class_bi_spec_ellipse *class_bi_spec_ellipse_display(_class_bi_spec_ellipse *_comp -) { - #define xheight (_comp->_parameters.xheight) - #define ywidth (_comp->_parameters.ywidth) - #define zlength (_comp->_parameters.zlength) - #define n_mirror (_comp->_parameters.n_mirror) - #define tilt (_comp->_parameters.tilt) - #define n_pieces (_comp->_parameters.n_pieces) - #define angular_offset (_comp->_parameters.angular_offset) - #define m (_comp->_parameters.m) - #define R0_m (_comp->_parameters.R0_m) - #define Qc_m (_comp->_parameters.Qc_m) - #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) - #define W_m (_comp->_parameters.W_m) - #define transmit (_comp->_parameters.transmit) - #define d_focus_1_x (_comp->_parameters.d_focus_1_x) - #define d_focus_2_x (_comp->_parameters.d_focus_2_x) - #define d_focus_1_y (_comp->_parameters.d_focus_1_y) - #define d_focus_2_y (_comp->_parameters.d_focus_2_y) - #define ell_l (_comp->_parameters.ell_l) - #define ell_h (_comp->_parameters.ell_h) - #define ell_w (_comp->_parameters.ell_w) - #define ell_m (_comp->_parameters.ell_m) - #define R0 (_comp->_parameters.R0) - #define Qc (_comp->_parameters.Qc) - #define alpha_mirror (_comp->_parameters.alpha_mirror) - #define W (_comp->_parameters.W) - #define cut (_comp->_parameters.cut) - #define substrate (_comp->_parameters.substrate) - #define reflect_mirror (_comp->_parameters.reflect_mirror) - #define reflect (_comp->_parameters.reflect) - #define pTable (_comp->_parameters.pTable) - SIG_MESSAGE("[_bi_display] component bi=bi_spec_ellipse() DISPLAY [bi_spec_ellipse:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; - int i,j,n_seg; - magnify("xy"); - if (n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ - draw_mirror_gap=xheight/(n_mirror-1); - draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ - - for(i=floor(n_pieces*0.5);i>0;i--) - draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ - draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; - draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; - if ((ell_h==0)&&(draw_alpha>=0)) - ell_h=2*draw_sec_pos; - if ((ell_h==0)&&(draw_alpha<0)) - ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); - - - for (i=1; i<=n_pieces; i++) { - for(j=1; j<=n_mirror; j++) { - multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, - (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); - draw_sec_pos=draw_sec_pos-draw_mirror_gap; - - } - draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ - draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); - draw_alpha=draw_alpha-angular_offset*DEG2RAD; - } - - n_seg=1000; - - draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - draw_z0_x=draw_f_x-d_focus_1_x; - draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); - draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); - - for (i=1;i_parameters.RIreflect) - #define LIreflect (_comp->_parameters.LIreflect) - #define UIreflect (_comp->_parameters.UIreflect) - #define DIreflect (_comp->_parameters.DIreflect) - #define ROreflect (_comp->_parameters.ROreflect) - #define LOreflect (_comp->_parameters.LOreflect) - #define UOreflect (_comp->_parameters.UOreflect) - #define DOreflect (_comp->_parameters.DOreflect) - #define w1l (_comp->_parameters.w1l) - #define w2l (_comp->_parameters.w2l) - #define linwl (_comp->_parameters.linwl) - #define loutwl (_comp->_parameters.loutwl) - #define w1r (_comp->_parameters.w1r) - #define w2r (_comp->_parameters.w2r) - #define linwr (_comp->_parameters.linwr) - #define loutwr (_comp->_parameters.loutwr) - #define h1u (_comp->_parameters.h1u) - #define h2u (_comp->_parameters.h2u) - #define linhu (_comp->_parameters.linhu) - #define louthu (_comp->_parameters.louthu) - #define h1d (_comp->_parameters.h1d) - #define h2d (_comp->_parameters.h2d) - #define linhd (_comp->_parameters.linhd) - #define louthd (_comp->_parameters.louthd) - #define l (_comp->_parameters.l) - #define R0 (_comp->_parameters.R0) - #define Qcxl (_comp->_parameters.Qcxl) - #define Qcxr (_comp->_parameters.Qcxr) - #define Qcyu (_comp->_parameters.Qcyu) - #define Qcyd (_comp->_parameters.Qcyd) - #define alphaxl (_comp->_parameters.alphaxl) - #define alphaxr (_comp->_parameters.alphaxr) - #define alphayu (_comp->_parameters.alphayu) - #define alphayd (_comp->_parameters.alphayd) - #define Wxr (_comp->_parameters.Wxr) - #define Wxl (_comp->_parameters.Wxl) - #define Wyu (_comp->_parameters.Wyu) - #define Wyd (_comp->_parameters.Wyd) - #define mxr (_comp->_parameters.mxr) - #define mxl (_comp->_parameters.mxl) - #define myu (_comp->_parameters.myu) - #define myd (_comp->_parameters.myd) - #define QcxrOW (_comp->_parameters.QcxrOW) - #define QcxlOW (_comp->_parameters.QcxlOW) - #define QcyuOW (_comp->_parameters.QcyuOW) - #define QcydOW (_comp->_parameters.QcydOW) - #define alphaxlOW (_comp->_parameters.alphaxlOW) - #define alphaxrOW (_comp->_parameters.alphaxrOW) - #define alphayuOW (_comp->_parameters.alphayuOW) - #define alphaydOW (_comp->_parameters.alphaydOW) - #define WxrOW (_comp->_parameters.WxrOW) - #define WxlOW (_comp->_parameters.WxlOW) - #define WyuOW (_comp->_parameters.WyuOW) - #define WydOW (_comp->_parameters.WydOW) - #define mxrOW (_comp->_parameters.mxrOW) - #define mxlOW (_comp->_parameters.mxlOW) - #define myuOW (_comp->_parameters.myuOW) - #define mydOW (_comp->_parameters.mydOW) - #define rwallthick (_comp->_parameters.rwallthick) - #define lwallthick (_comp->_parameters.lwallthick) - #define uwallthick (_comp->_parameters.uwallthick) - #define dwallthick (_comp->_parameters.dwallthick) - #define w1rwt (_comp->_parameters.w1rwt) - #define w1lwt (_comp->_parameters.w1lwt) - #define h1uwt (_comp->_parameters.h1uwt) - #define h1dwt (_comp->_parameters.h1dwt) - #define w2rwt (_comp->_parameters.w2rwt) - #define w2lwt (_comp->_parameters.w2lwt) - #define h2uwt (_comp->_parameters.h2uwt) - #define h2dwt (_comp->_parameters.h2dwt) - #define pawr (_comp->_parameters.pawr) - #define pawl (_comp->_parameters.pawl) - #define pbwr (_comp->_parameters.pbwr) - #define pbwl (_comp->_parameters.pbwl) - #define pahu (_comp->_parameters.pahu) - #define pahd (_comp->_parameters.pahd) - #define pbhu (_comp->_parameters.pbhu) - #define pbhd (_comp->_parameters.pbhd) - #define awl (_comp->_parameters.awl) - #define bwl (_comp->_parameters.bwl) - #define awr (_comp->_parameters.awr) - #define bwr (_comp->_parameters.bwr) - #define ahu (_comp->_parameters.ahu) - #define bhu (_comp->_parameters.bhu) - #define ahd (_comp->_parameters.ahd) - #define bhd (_comp->_parameters.bhd) - #define awlwt (_comp->_parameters.awlwt) - #define bwlwt (_comp->_parameters.bwlwt) - #define awrwt (_comp->_parameters.awrwt) - #define bwrwt (_comp->_parameters.bwrwt) - #define ahuwt (_comp->_parameters.ahuwt) - #define bhuwt (_comp->_parameters.bhuwt) - #define ahdwt (_comp->_parameters.ahdwt) - #define bhdwt (_comp->_parameters.bhdwt) - #define pawrwt (_comp->_parameters.pawrwt) - #define pawlwt (_comp->_parameters.pawlwt) - #define pbwrwt (_comp->_parameters.pbwrwt) - #define pbwlwt (_comp->_parameters.pbwlwt) - #define pahuwt (_comp->_parameters.pahuwt) - #define pahdwt (_comp->_parameters.pahdwt) - #define pbhuwt (_comp->_parameters.pbhuwt) - #define pbhdwt (_comp->_parameters.pbhdwt) - #define a2wlwt (_comp->_parameters.a2wlwt) - #define b2wlwt (_comp->_parameters.b2wlwt) - #define a2wrwt (_comp->_parameters.a2wrwt) - #define b2wrwt (_comp->_parameters.b2wrwt) - #define a2huwt (_comp->_parameters.a2huwt) - #define b2huwt (_comp->_parameters.b2huwt) - #define a2hdwt (_comp->_parameters.a2hdwt) - #define b2hdwt (_comp->_parameters.b2hdwt) - #define a2wl (_comp->_parameters.a2wl) - #define b2wl (_comp->_parameters.b2wl) - #define a2wr (_comp->_parameters.a2wr) - #define b2wr (_comp->_parameters.b2wr) - #define a2hu (_comp->_parameters.a2hu) - #define b2hu (_comp->_parameters.b2hu) - #define a2hd (_comp->_parameters.a2hd) - #define b2hd (_comp->_parameters.b2hd) - #define mru1 (_comp->_parameters.mru1) - #define mru2 (_comp->_parameters.mru2) - #define nru1 (_comp->_parameters.nru1) - #define nru2 (_comp->_parameters.nru2) - #define mrd1 (_comp->_parameters.mrd1) - #define mrd2 (_comp->_parameters.mrd2) - #define nrd1 (_comp->_parameters.nrd1) - #define nrd2 (_comp->_parameters.nrd2) - #define mlu1 (_comp->_parameters.mlu1) - #define mlu2 (_comp->_parameters.mlu2) - #define nlu1 (_comp->_parameters.nlu1) - #define nlu2 (_comp->_parameters.nlu2) - #define mld1 (_comp->_parameters.mld1) - #define mld2 (_comp->_parameters.mld2) - #define nld1 (_comp->_parameters.nld1) - #define nld2 (_comp->_parameters.nld2) - #define z0wr (_comp->_parameters.z0wr) - #define z0wl (_comp->_parameters.z0wl) - #define z0hu (_comp->_parameters.z0hu) - #define z0hd (_comp->_parameters.z0hd) - #define p2parawr (_comp->_parameters.p2parawr) - #define p2parawl (_comp->_parameters.p2parawl) - #define p2parahu (_comp->_parameters.p2parahu) - #define p2parahd (_comp->_parameters.p2parahd) - #define p2parawrwt (_comp->_parameters.p2parawrwt) - #define p2parawlwt (_comp->_parameters.p2parawlwt) - #define p2parahuwt (_comp->_parameters.p2parahuwt) - #define p2parahdwt (_comp->_parameters.p2parahdwt) - #define riTable (_comp->_parameters.riTable) - #define liTable (_comp->_parameters.liTable) - #define uiTable (_comp->_parameters.uiTable) - #define diTable (_comp->_parameters.diTable) - #define roTable (_comp->_parameters.roTable) - #define loTable (_comp->_parameters.loTable) - #define uoTable (_comp->_parameters.uoTable) - #define doTable (_comp->_parameters.doTable) - SIG_MESSAGE("[_NBOA_drawing_1_end_display] component NBOA_drawing_1_end=Guide_four_side() DISPLAY [Guide_four_side:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - int i, imax; - double x1, y1, Z, x2, y2, Z1, Z0wr, Z0wl, Z0hu, Z0hd, xwt, ywt, x1wt, y1wt; - double mr, ml, mu, md, nr1, nl1, nu1, nd1, nr2, nl2, nu2, nd2; - double lbwl, lbwr, lbhu, lbhd; /* length between focal points , needed for elliptic case */ - - double x11, y11, x21, y21, Z11, Z0wr1, Z0wl1, Z0hu1, Z0hd1, xwt1, ywt1, x1wt1, y1wt1; - double mr1, ml1, mu1, md1, nr11, nl11, nu11, nd11, nr21, nl21, nu21, nd21; - double lbwl1, lbwr1, lbhu1, lbhd1; - - double x12, y12, x22, y22, Z12, Z0wr2, Z0wl2, Z0hu2, Z0hd2, xwt2, ywt2, x1wt2, y1wt2; - double mr2, ml2, mu2, md2, nr12, nl12, nu12, nd12, nr22, nl22, nu22, nd22; - double lbwl2, lbwr2, lbhu2, lbhd2; - - magnify ("xy"); - - imax = 100; /* maximum points for every line in Z direction*/ - - lbwr = linwr + l + loutwr; - lbwl = linwl + l + loutwl; - lbhu = linhu + l + louthu; - lbhd = linhd + l + louthd; - - if (linwr == 0 && loutwr == 0) { - mr = (-w2r + w1r) / l; - nr1 = -w1r; - nr2 = -(w1rwt); - } - - if (linwl == 0 && loutwl == 0) { - ml = (w2l - w1l) / l; - nl1 = w1l; - nl2 = (w1lwt); - } - - if (linhu == 0 && louthu == 0) { - mu = (h2u - h1u) / l; - nu1 = h1u; - nu2 = (h1uwt); - } - - if (linhd == 0 && louthd == 0) { - md = (-h2d + h1d) / l; - nd1 = -h1d; - nd2 = -(h1dwt); - } - - Z0wr = (linwr - l - loutwr) / 2.0; - Z0wl = (linwl - l - loutwl) / 2.0; - Z0hu = lbhu / 2.0 - l - louthu; - Z0hd = lbhd / 2.0 - l - louthd; - - if (myd != -1) - line (w1l, -h1d, 0.0, -w1r, -h1d, 0.0); /* entrance window given by the INNER walls*/ - if (myu != -1) - line (w1l, h1u, 0.0, -w1r, h1u, 0.0); - if (mxl != -1) - line (w1l, -h1d, 0.0, w1l, h1u, 0.0); - if (mxr != -1) - line (-w1r, h1u, 0.0, -w1r, -h1d, 0.0); - - if (myd != -1) - line (w2l, -h2d, l, -w2r, -h2d, l); /* exit window given by the INNER walls*/ - if (myu != -1) - line (w2l, h2u, l, -w2r, h2u, l); - if (mxl != -1) - line (w2l, -h2d, l, w2l, h2u, l); - if (mxr != -1) - line (-w2r, -h2d, l, -w2r, h2u, l); - - if (mydOW != -1) - line ((w1lwt), -(h1dwt), 0.0, -(w1rwt), -(h1dwt), 0.0); /* entrance window given by the OUTER walls */ - if (myuOW != -1) - line ((w1lwt), (h1uwt), 0.0, -(w1rwt), (h1uwt), 0.0); - if (mxlOW != -1) - line ((w1lwt), -(h1dwt), 0.0, (w1lwt), (h1uwt), 0.0); - if (mxrOW != -1) - line (-(w1rwt), (h1uwt), 0.0, -(w1rwt), -(h1dwt), 0.0); - - if (mydOW != -1) - line ((w2lwt), -(h2dwt), l, -(w2rwt), -(h2dwt), l); /* exit windows given by the OUTER walls*/ - if (myuOW != -1) - line ((w2lwt), (h2uwt), l, -(w2rwt), (h2uwt), l); - if (mxlOW != -1) - line ((w2lwt), -(h2dwt), l, (w2lwt), (h2uwt), l); - if (mxrOW != -1) - line (-(w2rwt), -(h2dwt), l, -(w2rwt), (h2uwt), l); - - if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) - line (w1l, -h1d, 0.0, (w1lwt), -(h1dwt), 0.0); /* corner connection lines for the entrance windows*/ - if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) - line (w1l, h1u, 0.0, (w1lwt), (h1uwt), 0.0); - if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) - line (-w1r, -h1d, 0.0, -(w1rwt), -(h1dwt), 0.0); - if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) - line (-w1r, h1u, 0.0, -(w1rwt), (h1uwt), 0.0); - - if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) - line (w2l, -h2d, l, (w2lwt), -(h2dwt), l); /* corner connection lines for the exit windows*/ - if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) - line (w2l, h2u, l, (w2lwt), (h2uwt), l); - if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) - line (-w2r, -h2d, l, -(w2rwt), -(h2dwt), l); - if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) - line (-w2r, h2u, l, -(w2rwt), (h2uwt), l); - - for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT BOTTOM line */ - Z = i * l / imax; - Z1 = (i + 1) * l / imax; - if (linwl == 0 && loutwl == 0) { - x1 = ml * Z + nl1; - x2 = ml * Z1 + nl1; - } else { - if (linwl != 0 && loutwl != 0) { - x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); - x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); - } else { - x1 = sqrt ((Z - pbwl) / -pawl); - x2 = sqrt ((Z1 - pbwl) / -pawl); - } - } - if (linhd == 0 && louthd == 0) { - y1 = md * Z + nd1; - y2 = md * Z1 + nd1; - } else { - if (linhd != 0 && louthd != 0) { - y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); - y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); - } else { - y1 = -sqrt ((Z - pbhd) / -pahd); - y2 = -sqrt ((Z1 - pbhd) / -pahd); - } - } - if (mxl != -1 || myd != -1) - line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); - } - - for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT BOTTOM line */ - Z = i * l / imax; - Z1 = (i + 1) * l / imax; - if (linwr == 0 && loutwr == 0) { - x1 = mr * Z + nr1; - x2 = mr * Z1 + nr1; - } else { - if (linwr != 0 && loutwr != 0) { - x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); - x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); - } else { - x1 = -sqrt ((Z - pbwr) / -pawr); - x2 = -sqrt ((Z1 - pbwr) / -pawr); - } - } - if (linhd == 0 && louthd == 0) { - y1 = md * Z + nd1; - y2 = md * Z1 + nd1; - } else { - if (linhd != 0 && louthd != 0) { - y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); - y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); - } else { - y1 = -sqrt ((Z - pbhd) / -pahd); - y2 = -sqrt ((Z1 - pbhd) / -pahd); - } - } - if (mxr != -1 || myd != -1) - line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); - } - - for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT TOP line */ - Z = i * l / imax; - Z1 = (i + 1) * l / imax; - if (linwr == 0 && loutwr == 0) { - x1 = mr * Z + nr1; - x2 = mr * Z1 + nr1; - } else { - if (linwr != 0 && loutwr != 0) { - x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); - x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); - } else { - x1 = -sqrt ((Z - pbwr) / -pawr); - x2 = -sqrt ((Z1 - pbwr) / -pawr); - } - } - if (linhu == 0 && louthu == 0) { - y1 = mu * Z + nu1; - y2 = mu * Z1 + nu1; - } else { - if (linhu != 0 && louthu != 0) { - y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); - y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); - } else { - y1 = sqrt ((Z - pbhu) / -pahu); - y2 = sqrt ((Z1 - pbhu) / -pahu); - } - } - if (mxr != -1 || myu != -1) - line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); - } - - for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT TOP line */ - Z = i * l / imax; - Z1 = (i + 1) * l / imax; - if (linwl == 0 && loutwl == 0) { - x1 = ml * Z + nl1; - x2 = ml * Z1 + nl1; - } else { - if (linwl != 0 && loutwl != 0) { - x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); - x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); - } else { - x1 = sqrt ((Z - pbwl) / -pawl); - x2 = sqrt ((Z1 - pbwl) / -pawl); - } - } - if (linhu == 0 && louthu == 0) { - y1 = mu * Z + nu1; - y2 = mu * Z1 + nu1; - } else { - if (linhu != 0 && louthu != 0) { - y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); - y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); - } else { - y1 = sqrt ((Z - pbhu) / -pahu); - y2 = sqrt ((Z1 - pbhu) / -pahu); - } - } - if (mxl != -1 || myu != -1) - line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); - } /* END INNER LINES*/ - - for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT BOTTOM line */ - Z = i * l / imax; - Z1 = (i + 1) * l / imax; - if (linwl == 0 && loutwl == 0) { - xwt = ml * Z + nl2; - x1wt = ml * Z1 + nl2; - } else { - if (linwl != 0 && loutwl != 0) { - xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); - x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); - } else { - xwt = sqrt ((Z - pbwlwt) / -pawlwt); - x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); - } - } - if (linhd == 0 && louthd == 0) { - ywt = md * Z + nd2; - y1wt = md * Z1 + nd2; - } else { - if (linhd != 0 && louthd != 0) { - ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); - y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); - } else { - ywt = -sqrt ((Z - pbhdwt) / -pahdwt); - y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); - } - } - if (mxlOW != -1 || mydOW != -1) - line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); - } - - for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT BOTTOM line */ - Z = i * l / imax; - Z1 = (i + 1) * l / imax; - if (linwr == 0 && loutwr == 0) { - xwt = mr * Z + nr2; - x1wt = mr * Z1 + nr2; - } else { - if (linwr != 0 && loutwr != 0) { - xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); - x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); - } else { - xwt = -sqrt ((Z - pbwrwt) / -pawrwt); - x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); - } - } - if (linhd == 0 && louthd == 0) { - ywt = md * Z + nd2; - y1wt = md * Z1 + nd2; - } else { - if (linhd != 0 && louthd != 0) { - ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); - y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); - } else { - ywt = -sqrt ((Z - pbhdwt) / -pahdwt); - y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); - } - } - if (mxrOW != -1 || mydOW != -1) - line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); - } - - for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT TOP line */ - Z = i * l / imax; - Z1 = (i + 1) * l / imax; - if (linwr == 0 && loutwr == 0) { - xwt = mr * Z + nr2; - x1wt = mr * Z1 + nr2; - } else { - if (linwr != 0 && loutwr != 0) { - xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); - x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); - } else { - xwt = -sqrt ((Z - pbwrwt) / -pawrwt); - x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); - } - } - if (linhu == 0 && louthu == 0) { - ywt = mu * Z + nu2; - y1wt = mu * Z1 + nu2; - } else { - if (linhu != 0 && louthu != 0) { - ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); - y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); - } else { - ywt = sqrt ((Z - pbhuwt) / -pahuwt); - y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); - } - } - if (mxrOW != -1 || myuOW != -1) - line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); - } - - for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT TOP line */ - Z = i * l / imax; - Z1 = (i + 1) * l / imax; - if (linwl == 0 && loutwl == 0) { - xwt = ml * Z + nl2; - x1wt = ml * Z1 + nl2; - } else { - if (linwl != 0 && loutwl != 0) { - xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); - x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); - } else { - xwt = sqrt ((Z - pbwlwt) / -pawlwt); - x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); - } - } - if (linhu == 0 && louthu == 0) { - ywt = mu * Z + nu2; - y1wt = mu * Z1 + nu2; - } else { - if (linhu != 0 && louthu != 0) { - ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); - y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); - } else { - ywt = sqrt ((Z - pbhuwt) / -pahuwt); - y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); - } - } - if (mxlOW != -1 || myuOW != -1) - line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); - } - #undef RIreflect - #undef LIreflect - #undef UIreflect - #undef DIreflect - #undef ROreflect - #undef LOreflect - #undef UOreflect - #undef DOreflect - #undef w1l - #undef w2l - #undef linwl - #undef loutwl - #undef w1r - #undef w2r - #undef linwr - #undef loutwr - #undef h1u - #undef h2u - #undef linhu - #undef louthu - #undef h1d - #undef h2d - #undef linhd - #undef louthd - #undef l - #undef R0 - #undef Qcxl - #undef Qcxr - #undef Qcyu - #undef Qcyd - #undef alphaxl - #undef alphaxr - #undef alphayu - #undef alphayd - #undef Wxr - #undef Wxl - #undef Wyu - #undef Wyd - #undef mxr - #undef mxl - #undef myu - #undef myd - #undef QcxrOW - #undef QcxlOW - #undef QcyuOW - #undef QcydOW - #undef alphaxlOW - #undef alphaxrOW - #undef alphayuOW - #undef alphaydOW - #undef WxrOW - #undef WxlOW - #undef WyuOW - #undef WydOW - #undef mxrOW - #undef mxlOW - #undef myuOW - #undef mydOW - #undef rwallthick - #undef lwallthick - #undef uwallthick - #undef dwallthick - #undef w1rwt - #undef w1lwt - #undef h1uwt - #undef h1dwt - #undef w2rwt - #undef w2lwt - #undef h2uwt - #undef h2dwt - #undef pawr - #undef pawl - #undef pbwr - #undef pbwl - #undef pahu - #undef pahd - #undef pbhu - #undef pbhd - #undef awl - #undef bwl - #undef awr - #undef bwr - #undef ahu - #undef bhu - #undef ahd - #undef bhd - #undef awlwt - #undef bwlwt - #undef awrwt - #undef bwrwt - #undef ahuwt - #undef bhuwt - #undef ahdwt - #undef bhdwt - #undef pawrwt - #undef pawlwt - #undef pbwrwt - #undef pbwlwt - #undef pahuwt - #undef pahdwt - #undef pbhuwt - #undef pbhdwt - #undef a2wlwt - #undef b2wlwt - #undef a2wrwt - #undef b2wrwt - #undef a2huwt - #undef b2huwt - #undef a2hdwt - #undef b2hdwt - #undef a2wl - #undef b2wl - #undef a2wr - #undef b2wr - #undef a2hu - #undef b2hu - #undef a2hd - #undef b2hd - #undef mru1 - #undef mru2 - #undef nru1 - #undef nru2 - #undef mrd1 - #undef mrd2 - #undef nrd1 - #undef nrd2 - #undef mlu1 - #undef mlu2 - #undef nlu1 - #undef nlu2 - #undef mld1 - #undef mld2 - #undef nld1 - #undef nld2 - #undef z0wr - #undef z0wl - #undef z0hu - #undef z0hd - #undef p2parawr - #undef p2parawl - #undef p2parahu - #undef p2parahd - #undef p2parawrwt - #undef p2parawlwt - #undef p2parahuwt - #undef p2parahdwt - #undef riTable - #undef liTable - #undef uiTable - #undef diTable - #undef roTable - #undef loTable - #undef uoTable - #undef doTable - return(_comp); -} /* class_Guide_four_side_display */ - -_class_MultiDiskChopper *class_MultiDiskChopper_display(_class_MultiDiskChopper *_comp -) { - #define slit_center (_comp->_parameters.slit_center) - #define slit_width (_comp->_parameters.slit_width) - #define nslits (_comp->_parameters.nslits) - #define delta_y (_comp->_parameters.delta_y) - #define nu (_comp->_parameters.nu) - #define nrev (_comp->_parameters.nrev) - #define ratio (_comp->_parameters.ratio) - #define jitter (_comp->_parameters.jitter) - #define delay (_comp->_parameters.delay) - #define isfirst (_comp->_parameters.isfirst) - #define phase (_comp->_parameters.phase) - #define radius (_comp->_parameters.radius) - #define equal (_comp->_parameters.equal) - #define abs_out (_comp->_parameters.abs_out) - #define verbose (_comp->_parameters.verbose) - #define T (_comp->_parameters.T) - #define To (_comp->_parameters.To) - #define omega (_comp->_parameters.omega) - #define dslit_center (_comp->_parameters.dslit_center) - #define dhslit_width (_comp->_parameters.dhslit_width) - #define t0 (_comp->_parameters.t0) - #define t1 (_comp->_parameters.t1) - SIG_MESSAGE("[_wfmc_1_display] component wfmc_1=MultiDiskChopper() DISPLAY [MultiDiskChopper:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - int j; - - // the disk - circle ("xy", 0, delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslits; j++) { - /* Angular start/end of slit */ - double tmin = dslit_center[j] - dhslit_width[j] + phase; - double tmax = tmin + 2.0 * dhslit_width[j]; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); - line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); - } - #undef slit_center - #undef slit_width - #undef nslits - #undef delta_y - #undef nu - #undef nrev - #undef ratio - #undef jitter - #undef delay - #undef isfirst - #undef phase - #undef radius - #undef equal - #undef abs_out - #undef verbose - #undef T - #undef To - #undef omega - #undef dslit_center - #undef dhslit_width - #undef t0 - #undef t1 - return(_comp); -} /* class_MultiDiskChopper_display */ - -_class_Slit *class_Slit_display(_class_Slit *_comp -) { - #define xmin (_comp->_parameters.xmin) - #define xmax (_comp->_parameters.xmax) - #define ymin (_comp->_parameters.ymin) - #define ymax (_comp->_parameters.ymax) - #define radius (_comp->_parameters.radius) - #define xwidth (_comp->_parameters.xwidth) - #define yheight (_comp->_parameters.yheight) - #define isradial (_comp->_parameters.isradial) - SIG_MESSAGE("[_pinhole_1_display] component pinhole_1=Slit() DISPLAY [Slit:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - - if (is_unset (radius)) { - double xw, yh; - xw = (xmax - xmin) / 2.0; - yh = (ymax - ymin) / 2.0; - multiline (3, xmin - xw, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, ymax + yh, 0.0); - multiline (3, xmax + xw, (double)ymax, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmax, ymax + yh, 0.0); - multiline (3, xmin - xw, (double)ymin, 0.0, (double)xmin, (double)ymin, 0.0, (double)xmin, ymin - yh, 0.0); - multiline (3, xmax + xw, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, ymin - yh, 0.0); - } else { - circle ("xy", 0, 0, 0, radius); - } - #undef xmin - #undef xmax - #undef ymin - #undef ymax - #undef radius - #undef xwidth - #undef yheight - #undef isradial - return(_comp); -} /* class_Slit_display */ - -_class_DiskChopper *class_DiskChopper_display(_class_DiskChopper *_comp -) { - #define theta_0 (_comp->_parameters.theta_0) - #define radius (_comp->_parameters.radius) - #define yheight (_comp->_parameters.yheight) - #define nu (_comp->_parameters.nu) - #define nslit (_comp->_parameters.nslit) - #define jitter (_comp->_parameters.jitter) - #define delay (_comp->_parameters.delay) - #define isfirst (_comp->_parameters.isfirst) - #define n_pulse (_comp->_parameters.n_pulse) - #define abs_out (_comp->_parameters.abs_out) - #define phase (_comp->_parameters.phase) - #define xwidth (_comp->_parameters.xwidth) - #define verbose (_comp->_parameters.verbose) - #define Tg (_comp->_parameters.Tg) - #define To (_comp->_parameters.To) - #define delta_y (_comp->_parameters.delta_y) - #define height (_comp->_parameters.height) - #define omega (_comp->_parameters.omega) - SIG_MESSAGE("[_bp1_chopper_display] component bp1_chopper=DiskChopper() DISPLAY [DiskChopper:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - - int j; - /* Arrays for storing geometry of slit/beamstop */ - - circle ("xy", 0, -delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslit; j++) { - /* Angular start/end of slit */ - double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; - double tmax = tmin + theta_0; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); - line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, - 0); - line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); - } - #undef theta_0 - #undef radius - #undef yheight - #undef nu - #undef nslit - #undef jitter - #undef delay - #undef isfirst - #undef n_pulse - #undef abs_out - #undef phase - #undef xwidth - #undef verbose - #undef Tg - #undef To - #undef delta_y - #undef height - #undef omega - return(_comp); -} /* class_DiskChopper_display */ - -_class_Graphite_Diffuser *class_Graphite_Diffuser_display(_class_Graphite_Diffuser *_comp -) { - #define xwidth (_comp->_parameters.xwidth) - #define ywidth (_comp->_parameters.ywidth) - #define thick (_comp->_parameters.thick) - #define abs (_comp->_parameters.abs) - SIG_MESSAGE("[_graph_display] component graph=Graphite_Diffuser() DISPLAY [Graphite_Diffuser:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - magnify("xy"); - multiline(5, (double)-xwidth/2, (double)-ywidth/2, 0.0, - (double)xwidth/2, (double)-ywidth/2, 0.0, - (double)xwidth/2, (double)ywidth/2, 0.0, - (double)-xwidth/2, (double)ywidth/2, 0.0, - (double)-xwidth/2, (double)-ywidth/2, 0.0); - multiline(5, (double)-xwidth/2, (double)-ywidth/2, (double)thick, - (double)xwidth/2, (double)-ywidth/2, (double)thick, - (double)xwidth/2, (double)ywidth/2, (double)thick, - (double)-xwidth/2, (double)ywidth/2, (double)thick, - (double)-xwidth/2, (double)-ywidth/2, (double)thick); - line(-xwidth/2, -ywidth/2, 0.0, -xwidth/2, -ywidth/2, thick); - line(xwidth/2, -ywidth/2, 0.0, xwidth/2, -ywidth/2, thick); - line(-xwidth/2, ywidth/2, 0.0, -xwidth/2, ywidth/2, thick); - line(xwidth/2, ywidth/2, 0.0, xwidth/2, ywidth/2, thick); - #undef xwidth - #undef ywidth - #undef thick - #undef abs - return(_comp); -} /* class_Graphite_Diffuser_display */ - -_class_Monitor_nD *class_Monitor_nD_display(_class_Monitor_nD *_comp -) { - #define user1 (_comp->_parameters.user1) - #define user2 (_comp->_parameters.user2) - #define user3 (_comp->_parameters.user3) - #define xwidth (_comp->_parameters.xwidth) - #define yheight (_comp->_parameters.yheight) - #define zdepth (_comp->_parameters.zdepth) - #define xmin (_comp->_parameters.xmin) - #define xmax (_comp->_parameters.xmax) - #define ymin (_comp->_parameters.ymin) - #define ymax (_comp->_parameters.ymax) - #define zmin (_comp->_parameters.zmin) - #define zmax (_comp->_parameters.zmax) - #define bins (_comp->_parameters.bins) - #define min (_comp->_parameters.min) - #define max (_comp->_parameters.max) - #define restore_neutron (_comp->_parameters.restore_neutron) - #define radius (_comp->_parameters.radius) - #define options (_comp->_parameters.options) - #define filename (_comp->_parameters.filename) - #define geometry (_comp->_parameters.geometry) - #define nowritefile (_comp->_parameters.nowritefile) - #define username1 (_comp->_parameters.username1) - #define username2 (_comp->_parameters.username2) - #define username3 (_comp->_parameters.username3) - #define tsplit (_comp->_parameters.tsplit) - #define adaptive_target (_comp->_parameters.adaptive_target) - #define DEFS (_comp->_parameters.DEFS) - #define Vars (_comp->_parameters.Vars) - #define detector (_comp->_parameters.detector) - #define offdata (_comp->_parameters.offdata) - SIG_MESSAGE("[_sample_PSD_display] component sample_PSD=Monitor_nD() DISPLAY [Monitor_nD:0]"); - - printf("MCDISPLAY: component %s\n", _comp->_name); - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - off_display (offdata); - } else { - Monitor_nD_McDisplay (&DEFS, &Vars); - } - #undef user1 - #undef user2 - #undef user3 - #undef xwidth - #undef yheight - #undef zdepth - #undef xmin - #undef xmax - #undef ymin - #undef ymax - #undef zmin - #undef zmax - #undef bins - #undef min - #undef max - #undef restore_neutron - #undef radius - #undef options - #undef filename - #undef geometry - #undef nowritefile - #undef username1 - #undef username2 - #undef username3 - #undef tsplit - #undef adaptive_target - #undef DEFS - #undef Vars - #undef detector - #undef offdata - return(_comp); -} /* class_Monitor_nD_display */ - - - #undef magnify - #undef line - #undef dashed_line - #undef multiline - #undef rectangle - #undef box - #undef circle - #undef cylinder - #undef sphere - -int display(void) { /* called by mccode_main for ODIN_TOF_train3:DISPLAY */ - printf("MCDISPLAY: start\n"); - - /* call iteratively all components DISPLAY */ - class_Progress_bar_display(&_Origin_var); - - class_Arm_display(&_optical_axis_var); - - class_ESS_butterfly_display(&_Source_var); - - class_Arm_display(&_Start_of_bi_var); - - class_bi_spec_ellipse_display(&_bi_var); - - class_Arm_display(&_End_of_bi_var); - - class_Guide_four_side_display(&_NBOA_drawing_1_end_var); - - class_Guide_four_side_display(&_g1a2_var); - - class_Guide_four_side_display(&_g1a3_var); - - class_Guide_four_side_display(&_g1b1_var); - - class_Guide_four_side_display(&_g1c1_var); - - class_Arm_display(&_wfm_position_var); - - class_Arm_display(&_wfm_1_position_var); - - class_MultiDiskChopper_display(&_wfmc_1_var); - - class_Slit_display(&_pinhole_1_var); - - class_Arm_display(&_wfm_2_position_var); - - class_MultiDiskChopper_display(&_wfmc_2_var); - - class_Guide_four_side_display(&_g2a1_var); - - class_Arm_display(&_monitor_1_position_var); - - class_Guide_four_side_display(&_g2a2_var); - - class_Arm_display(&_fo1_position_var); - - class_MultiDiskChopper_display(&_fo_chopper_1_var); - - class_Arm_display(&_bp1_position_var); - - class_DiskChopper_display(&_bp1_chopper_var); - - class_Guide_four_side_display(&_g2b1_var); - - class_Guide_four_side_display(&_g2b2_var); - - class_Guide_four_side_display(&_g2b3_var); - - class_Guide_four_side_display(&_g2b4_var); - - class_Arm_display(&_fo2_position_var); - - class_MultiDiskChopper_display(&_fo_chopper_2_var); - - class_Arm_display(&_bp2_position_var); - - class_DiskChopper_display(&_bp_chopper2_var); - - class_Guide_four_side_display(&_g2c1_var); - - class_Arm_display(&_t0_start_position_var); - - class_DiskChopper_display(&_t0_chopper_alpha_var); - - class_Arm_display(&_t0_end_position_var); - - class_DiskChopper_display(&_t0_chopper_beta_var); - - class_Guide_four_side_display(&_g3a1_var); - - class_Guide_four_side_display(&_g3a2_var); - - class_Arm_display(&_fo3_position_var); - - class_MultiDiskChopper_display(&_fo_chopper_3_var); - - class_Guide_four_side_display(&_g3b1_var); - - class_Guide_four_side_display(&_g4a1_var); - - class_Arm_display(&_monitor_2_position_var); - - class_Guide_four_side_display(&_g4a2_var); - - class_Guide_four_side_display(&_g4a3_var); - - class_Arm_display(&_fo4_position_var); - - class_MultiDiskChopper_display(&_fo_chopper_4_var); - - class_Guide_four_side_display(&_g4b1_var); - - class_Guide_four_side_display(&_g4b2_var); - - class_Guide_four_side_display(&_g4b3_var); - - class_Guide_four_side_display(&_g4b4_var); - - class_Guide_four_side_display(&_g4b5_var); - - class_Guide_four_side_display(&_g4b6_var); - - class_Guide_four_side_display(&_g5a1_var); - - class_Arm_display(&_fo5_position_var); - - class_MultiDiskChopper_display(&_fo_chopper_5_var); - - class_Guide_four_side_display(&_g5b1_var); - - class_Guide_four_side_display(&_g5b2_var); - - class_Guide_four_side_display(&_g5b3_var); - - class_Guide_four_side_display(&_g5b4_var); - - class_Guide_four_side_display(&_g5b5_var); - - class_Guide_four_side_display(&_g5b6_var); - - class_Guide_four_side_display(&_g6a1_var); - - class_Guide_four_side_display(&_g6a2_var); - - class_Guide_four_side_display(&_g6a3_var); - - class_Arm_display(&_guide_end_var); - - class_Arm_display(&_monitor_3_position_var); - - class_Arm_display(&_start_backend_var); - - class_Arm_display(&_optical_axis_backend_var); - - class_Slit_display(&_pinhole_2_var); - - class_Graphite_Diffuser_display(&_graph_var); - - class_Arm_display(&_sample_monitor_arm_var); - - class_Monitor_nD_display(&_sample_PSD_var); - - class_Monitor_nD_display(&_profile_x_var); - - class_Monitor_nD_display(&_profile_y_var); - - class_Monitor_nD_display(&_wavelength_var); - - class_Monitor_nD_display(&_tof_var); - - class_Monitor_nD_display(&_wavelength_tof_var); - - class_Arm_display(&_sample_position_var); - - printf("MCDISPLAY: end\n"); - - return(0); -} /* display */ - -void* _getvar_parameters(char* compname) -/* enables settings parameters based use of the GETPAR macro */ -{ - #ifdef OPENACC - #define strcmp(a,b) str_comp(a,b) - #endif - if (!strcmp(compname, "Origin")) return (void *) &(_Origin_var._parameters); - if (!strcmp(compname, "optical_axis")) return (void *) &(_optical_axis_var._parameters); - if (!strcmp(compname, "Source")) return (void *) &(_Source_var._parameters); - if (!strcmp(compname, "Start_of_bi")) return (void *) &(_Start_of_bi_var._parameters); - if (!strcmp(compname, "bi")) return (void *) &(_bi_var._parameters); - if (!strcmp(compname, "End_of_bi")) return (void *) &(_End_of_bi_var._parameters); - if (!strcmp(compname, "NBOA_drawing_1_end")) return (void *) &(_NBOA_drawing_1_end_var._parameters); - if (!strcmp(compname, "g1a2")) return (void *) &(_g1a2_var._parameters); - if (!strcmp(compname, "g1a3")) return (void *) &(_g1a3_var._parameters); - if (!strcmp(compname, "g1b1")) return (void *) &(_g1b1_var._parameters); - if (!strcmp(compname, "g1c1")) return (void *) &(_g1c1_var._parameters); - if (!strcmp(compname, "wfm_position")) return (void *) &(_wfm_position_var._parameters); - if (!strcmp(compname, "wfm_1_position")) return (void *) &(_wfm_1_position_var._parameters); - if (!strcmp(compname, "wfmc_1")) return (void *) &(_wfmc_1_var._parameters); - if (!strcmp(compname, "pinhole_1")) return (void *) &(_pinhole_1_var._parameters); - if (!strcmp(compname, "wfm_2_position")) return (void *) &(_wfm_2_position_var._parameters); - if (!strcmp(compname, "wfmc_2")) return (void *) &(_wfmc_2_var._parameters); - if (!strcmp(compname, "g2a1")) return (void *) &(_g2a1_var._parameters); - if (!strcmp(compname, "monitor_1_position")) return (void *) &(_monitor_1_position_var._parameters); - if (!strcmp(compname, "g2a2")) return (void *) &(_g2a2_var._parameters); - if (!strcmp(compname, "fo1_position")) return (void *) &(_fo1_position_var._parameters); - if (!strcmp(compname, "fo_chopper_1")) return (void *) &(_fo_chopper_1_var._parameters); - if (!strcmp(compname, "bp1_position")) return (void *) &(_bp1_position_var._parameters); - if (!strcmp(compname, "bp1_chopper")) return (void *) &(_bp1_chopper_var._parameters); - if (!strcmp(compname, "g2b1")) return (void *) &(_g2b1_var._parameters); - if (!strcmp(compname, "g2b2")) return (void *) &(_g2b2_var._parameters); - if (!strcmp(compname, "g2b3")) return (void *) &(_g2b3_var._parameters); - if (!strcmp(compname, "g2b4")) return (void *) &(_g2b4_var._parameters); - if (!strcmp(compname, "fo2_position")) return (void *) &(_fo2_position_var._parameters); - if (!strcmp(compname, "fo_chopper_2")) return (void *) &(_fo_chopper_2_var._parameters); - if (!strcmp(compname, "bp2_position")) return (void *) &(_bp2_position_var._parameters); - if (!strcmp(compname, "bp_chopper2")) return (void *) &(_bp_chopper2_var._parameters); - if (!strcmp(compname, "g2c1")) return (void *) &(_g2c1_var._parameters); - if (!strcmp(compname, "t0_start_position")) return (void *) &(_t0_start_position_var._parameters); - if (!strcmp(compname, "t0_chopper_alpha")) return (void *) &(_t0_chopper_alpha_var._parameters); - if (!strcmp(compname, "t0_end_position")) return (void *) &(_t0_end_position_var._parameters); - if (!strcmp(compname, "t0_chopper_beta")) return (void *) &(_t0_chopper_beta_var._parameters); - if (!strcmp(compname, "g3a1")) return (void *) &(_g3a1_var._parameters); - if (!strcmp(compname, "g3a2")) return (void *) &(_g3a2_var._parameters); - if (!strcmp(compname, "fo3_position")) return (void *) &(_fo3_position_var._parameters); - if (!strcmp(compname, "fo_chopper_3")) return (void *) &(_fo_chopper_3_var._parameters); - if (!strcmp(compname, "g3b1")) return (void *) &(_g3b1_var._parameters); - if (!strcmp(compname, "g4a1")) return (void *) &(_g4a1_var._parameters); - if (!strcmp(compname, "monitor_2_position")) return (void *) &(_monitor_2_position_var._parameters); - if (!strcmp(compname, "g4a2")) return (void *) &(_g4a2_var._parameters); - if (!strcmp(compname, "g4a3")) return (void *) &(_g4a3_var._parameters); - if (!strcmp(compname, "fo4_position")) return (void *) &(_fo4_position_var._parameters); - if (!strcmp(compname, "fo_chopper_4")) return (void *) &(_fo_chopper_4_var._parameters); - if (!strcmp(compname, "g4b1")) return (void *) &(_g4b1_var._parameters); - if (!strcmp(compname, "g4b2")) return (void *) &(_g4b2_var._parameters); - if (!strcmp(compname, "g4b3")) return (void *) &(_g4b3_var._parameters); - if (!strcmp(compname, "g4b4")) return (void *) &(_g4b4_var._parameters); - if (!strcmp(compname, "g4b5")) return (void *) &(_g4b5_var._parameters); - if (!strcmp(compname, "g4b6")) return (void *) &(_g4b6_var._parameters); - if (!strcmp(compname, "g5a1")) return (void *) &(_g5a1_var._parameters); - if (!strcmp(compname, "fo5_position")) return (void *) &(_fo5_position_var._parameters); - if (!strcmp(compname, "fo_chopper_5")) return (void *) &(_fo_chopper_5_var._parameters); - if (!strcmp(compname, "g5b1")) return (void *) &(_g5b1_var._parameters); - if (!strcmp(compname, "g5b2")) return (void *) &(_g5b2_var._parameters); - if (!strcmp(compname, "g5b3")) return (void *) &(_g5b3_var._parameters); - if (!strcmp(compname, "g5b4")) return (void *) &(_g5b4_var._parameters); - if (!strcmp(compname, "g5b5")) return (void *) &(_g5b5_var._parameters); - if (!strcmp(compname, "g5b6")) return (void *) &(_g5b6_var._parameters); - if (!strcmp(compname, "g6a1")) return (void *) &(_g6a1_var._parameters); - if (!strcmp(compname, "g6a2")) return (void *) &(_g6a2_var._parameters); - if (!strcmp(compname, "g6a3")) return (void *) &(_g6a3_var._parameters); - if (!strcmp(compname, "guide_end")) return (void *) &(_guide_end_var._parameters); - if (!strcmp(compname, "monitor_3_position")) return (void *) &(_monitor_3_position_var._parameters); - if (!strcmp(compname, "start_backend")) return (void *) &(_start_backend_var._parameters); - if (!strcmp(compname, "optical_axis_backend")) return (void *) &(_optical_axis_backend_var._parameters); - if (!strcmp(compname, "pinhole_2")) return (void *) &(_pinhole_2_var._parameters); - if (!strcmp(compname, "graph")) return (void *) &(_graph_var._parameters); - if (!strcmp(compname, "sample_monitor_arm")) return (void *) &(_sample_monitor_arm_var._parameters); - if (!strcmp(compname, "sample_PSD")) return (void *) &(_sample_PSD_var._parameters); - if (!strcmp(compname, "profile_x")) return (void *) &(_profile_x_var._parameters); - if (!strcmp(compname, "profile_y")) return (void *) &(_profile_y_var._parameters); - if (!strcmp(compname, "wavelength")) return (void *) &(_wavelength_var._parameters); - if (!strcmp(compname, "tof")) return (void *) &(_tof_var._parameters); - if (!strcmp(compname, "wavelength_tof")) return (void *) &(_wavelength_tof_var._parameters); - if (!strcmp(compname, "sample_position")) return (void *) &(_sample_position_var._parameters); - return 0; -} - -void* _get_particle_var(char *token, _class_particle *p) -/* enables setpars based use of GET_PARTICLE_DVAR macro and similar */ -{ - return 0; -} - -int _getcomp_index(char* compname) -/* Enables retrieving the component position & rotation when the index is not known. - * Component indexing into MACROS, e.g., POS_A_COMP_INDEX, are 1-based! */ -{ - if (!strcmp(compname, "Origin")) return 1; - if (!strcmp(compname, "optical_axis")) return 2; - if (!strcmp(compname, "Source")) return 3; - if (!strcmp(compname, "Start_of_bi")) return 4; - if (!strcmp(compname, "bi")) return 5; - if (!strcmp(compname, "End_of_bi")) return 6; - if (!strcmp(compname, "NBOA_drawing_1_end")) return 7; - if (!strcmp(compname, "g1a2")) return 8; - if (!strcmp(compname, "g1a3")) return 9; - if (!strcmp(compname, "g1b1")) return 10; - if (!strcmp(compname, "g1c1")) return 11; - if (!strcmp(compname, "wfm_position")) return 12; - if (!strcmp(compname, "wfm_1_position")) return 13; - if (!strcmp(compname, "wfmc_1")) return 14; - if (!strcmp(compname, "pinhole_1")) return 15; - if (!strcmp(compname, "wfm_2_position")) return 16; - if (!strcmp(compname, "wfmc_2")) return 17; - if (!strcmp(compname, "g2a1")) return 18; - if (!strcmp(compname, "monitor_1_position")) return 19; - if (!strcmp(compname, "g2a2")) return 20; - if (!strcmp(compname, "fo1_position")) return 21; - if (!strcmp(compname, "fo_chopper_1")) return 22; - if (!strcmp(compname, "bp1_position")) return 23; - if (!strcmp(compname, "bp1_chopper")) return 24; - if (!strcmp(compname, "g2b1")) return 25; - if (!strcmp(compname, "g2b2")) return 26; - if (!strcmp(compname, "g2b3")) return 27; - if (!strcmp(compname, "g2b4")) return 28; - if (!strcmp(compname, "fo2_position")) return 29; - if (!strcmp(compname, "fo_chopper_2")) return 30; - if (!strcmp(compname, "bp2_position")) return 31; - if (!strcmp(compname, "bp_chopper2")) return 32; - if (!strcmp(compname, "g2c1")) return 33; - if (!strcmp(compname, "t0_start_position")) return 34; - if (!strcmp(compname, "t0_chopper_alpha")) return 35; - if (!strcmp(compname, "t0_end_position")) return 36; - if (!strcmp(compname, "t0_chopper_beta")) return 37; - if (!strcmp(compname, "g3a1")) return 38; - if (!strcmp(compname, "g3a2")) return 39; - if (!strcmp(compname, "fo3_position")) return 40; - if (!strcmp(compname, "fo_chopper_3")) return 41; - if (!strcmp(compname, "g3b1")) return 42; - if (!strcmp(compname, "g4a1")) return 43; - if (!strcmp(compname, "monitor_2_position")) return 44; - if (!strcmp(compname, "g4a2")) return 45; - if (!strcmp(compname, "g4a3")) return 46; - if (!strcmp(compname, "fo4_position")) return 47; - if (!strcmp(compname, "fo_chopper_4")) return 48; - if (!strcmp(compname, "g4b1")) return 49; - if (!strcmp(compname, "g4b2")) return 50; - if (!strcmp(compname, "g4b3")) return 51; - if (!strcmp(compname, "g4b4")) return 52; - if (!strcmp(compname, "g4b5")) return 53; - if (!strcmp(compname, "g4b6")) return 54; - if (!strcmp(compname, "g5a1")) return 55; - if (!strcmp(compname, "fo5_position")) return 56; - if (!strcmp(compname, "fo_chopper_5")) return 57; - if (!strcmp(compname, "g5b1")) return 58; - if (!strcmp(compname, "g5b2")) return 59; - if (!strcmp(compname, "g5b3")) return 60; - if (!strcmp(compname, "g5b4")) return 61; - if (!strcmp(compname, "g5b5")) return 62; - if (!strcmp(compname, "g5b6")) return 63; - if (!strcmp(compname, "g6a1")) return 64; - if (!strcmp(compname, "g6a2")) return 65; - if (!strcmp(compname, "g6a3")) return 66; - if (!strcmp(compname, "guide_end")) return 67; - if (!strcmp(compname, "monitor_3_position")) return 68; - if (!strcmp(compname, "start_backend")) return 69; - if (!strcmp(compname, "optical_axis_backend")) return 70; - if (!strcmp(compname, "pinhole_2")) return 71; - if (!strcmp(compname, "graph")) return 72; - if (!strcmp(compname, "sample_monitor_arm")) return 73; - if (!strcmp(compname, "sample_PSD")) return 74; - if (!strcmp(compname, "profile_x")) return 75; - if (!strcmp(compname, "profile_y")) return 76; - if (!strcmp(compname, "wavelength")) return 77; - if (!strcmp(compname, "tof")) return 78; - if (!strcmp(compname, "wavelength_tof")) return 79; - if (!strcmp(compname, "sample_position")) return 80; - return -1; -} - -/* embedding file "metadata-r.c" */ - -/** --- Contents of metadata-r.c ---------------------------------------------------------------------------------- */ -// Created by Gregory Tucker, Data Management Software Centre, European Spallation Source ERIC on 07/07/23. -#ifndef MCCODE_NAME -#include "metadata-r.h" -#endif - -char * metadata_table_key_component(char* key){ - if (strlen(key) == 0) return NULL; - char sep[2] = ":\0"; // matches any number of repeated colons - // look for the separator in the provided key; strtok is allowed to modify the string, so copy it - char * tok = malloc((strlen(key) + 1) * sizeof(char)); - if (!tok) { - fprintf(stderr,"Error allocating token\n"); - exit(-1); - } - strcpy(tok, key); - char * pch = strtok(tok, sep); // this *is* the component name (if provided) -- but we need to move the pointer - char * comp = malloc((1 + strlen(pch)) * sizeof(char)); - if (!comp) { - fprintf(stderr,"Error allocating comp\n"); - exit(-1); - } - strcpy(comp, pch); - if (tok) free(tok); - return comp; -} -char * metadata_table_key_literal(char * key){ - if (strlen(key) == 0) return NULL; - char sep[3] = ":\0"; - char * tok = malloc((strlen(key) + 1 ) * sizeof(char)); - if (!tok) { - fprintf(stderr,"Error allocating token\n"); - exit(-1); - } - strcpy(tok, key); - char * pch = strtok(tok, sep); // this *is* the component name (if provided) - if (pch) pch = strtok(NULL, sep); // either NULL or the literal name - char * name = NULL; - if (pch) { - name = malloc((1 + strlen(pch)) * sizeof(char)); - if (!name) { - fprintf(stderr,"Error allocating name\n"); - exit(-1); - } - strcpy(name, pch); - } - if (tok) free(tok); - return name; -} -int metadata_table_defined(int no, metadata_table_t * tab, char * key){ - if (strlen(key) == 0){ - /* This is 0 instead of `no` independent of any wildcard-matching logic - * because a caller _already_ knows `no` and can verify - * that `key` is not "" at call-time. So returning `no` is useless. - */ - return 0; - } - char * comp = metadata_table_key_component(key); - char * name = metadata_table_key_literal(key); - // look through the table for the matching component and literal names - int number = 0; - for (int i=0; i 1) { - MPI_MASTER( - printf("Simulation '%s' (%s): running on %i nodes (master is '%s', MPI version %i.%i).\n", - instrument_name, instrument_source, mpi_node_count, mpi_node_name, MPI_VERSION, MPI_SUBVERSION); - ); - /* share the same seed, then adapt random seed for each node */ - MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ - mcseed += mpi_node_rank; /* make sure we use different seeds per noe */ - } -#endif /* USE_MPI */ - -#ifdef OPENACC -#ifdef USE_MPI - int num_devices = acc_get_num_devices(acc_device_nvidia); - if(num_devices>0){ - int my_device = mpi_node_rank % num_devices; - acc_set_device_num( my_device, acc_device_nvidia ); - printf("Have found %d GPU devices on rank %d. Will use device %d.\n", num_devices, mpi_node_rank, my_device); - }else{ - printf("There was an issue probing acc_get_num_devices, fallback to host\n"); - acc_set_device_type( acc_device_host ); - } -#endif -#endif - - /* *** parse options ******************************************************* */ - SIG_MESSAGE("[" __FILE__ "] main START"); - mcformat = getenv(FLAVOR_UPPER "_FORMAT") ? - getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; - instrument_exe = argv[0]; /* store the executable path */ - /* read simulation parameters and options */ - mcparseoptions(argc, argv); /* sets output dir and format */ - - -#ifdef USE_MPI - if (mpi_node_count > 1) { - /* share the same seed, then adapt random seed for each node */ - MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ - mcseed += mpi_node_rank; /* make sure we use different seeds per node */ - } -#endif - - -/* *** install sig handler, but only once !! after parameters parsing ******* */ -#ifndef NOSIGNALS -#ifdef SIGQUIT - if (signal( SIGQUIT ,sighandler) == SIG_IGN) - signal( SIGQUIT,SIG_IGN); /* quit (ASCII FS) */ -#endif -#ifdef SIGABRT - if (signal( SIGABRT ,sighandler) == SIG_IGN) - signal( SIGABRT,SIG_IGN); /* used by abort, replace SIGIOT in the future */ -#endif -#ifdef SIGTERM - if (signal( SIGTERM ,sighandler) == SIG_IGN) - signal( SIGTERM,SIG_IGN); /* software termination signal from kill */ -#endif -#ifdef SIGUSR1 - if (signal( SIGUSR1 ,sighandler) == SIG_IGN) - signal( SIGUSR1,SIG_IGN); /* display simulation status */ -#endif -#ifdef SIGUSR2 - if (signal( SIGUSR2 ,sighandler) == SIG_IGN) - signal( SIGUSR2,SIG_IGN); -#endif -#ifdef SIGHUP - if (signal( SIGHUP ,sighandler) == SIG_IGN) - signal( SIGHUP,SIG_IGN); -#endif -#ifdef SIGILL - if (signal( SIGILL ,sighandler) == SIG_IGN) - signal( SIGILL,SIG_IGN); /* illegal instruction (not reset when caught) */ -#endif -#ifdef SIGFPE - if (signal( SIGFPE ,sighandler) == SIG_IGN) - signal( SIGSEGV,SIG_IGN); /* floating point exception */ -#endif -#ifdef SIGBUS - if (signal( SIGBUS ,sighandler) == SIG_IGN) - signal( SIGSEGV,SIG_IGN); /* bus error */ -#endif -#ifdef SIGSEGV - if (signal( SIGSEGV ,sighandler) == SIG_IGN) - signal( SIGSEGV,SIG_IGN); /* segmentation violation */ -#endif -#endif /* !NOSIGNALS */ - - - // init executed by master/host - siminfo_init(NULL); /* open SIM */ - SIG_MESSAGE("[" __FILE__ "] main INITIALISE"); - init(); - - -#ifndef NOSIGNALS -#ifdef SIGINT - if (signal( SIGINT ,sighandler) == SIG_IGN) - signal( SIGINT,SIG_IGN); /* interrupt (rubout) only after INIT */ -#endif -#endif /* !NOSIGNALS */ - -/* ================ main particle generation/propagation loop ================ */ -#ifdef USE_MPI - /* sliced Ncount on each MPI node */ - mcncount = mpi_node_count > 1 ? - floor(mcncount / mpi_node_count) : - mcncount; /* number of rays per node */ -#endif - -// MT specific init, note that per-ray init is empty -#if RNG_ALG == 2 - mt_srandom(mcseed); -#endif - - -// main raytrace work loop -#ifndef FUNNEL - // legacy version - raytrace_all(mcncount, mcseed); -#else - MPI_MASTER( - // "funneled" version in which propagation is more parallelizable - printf("\nNOTE: CPU COMPONENT grammar activated:\n 1) \"FUNNEL\" raytrace algorithm enabled.\n 2) Any SPLIT's are dynamically allocated based on available buffer size. \n"); - ); - raytrace_all_funnel(mcncount, mcseed); -#endif - - -#ifdef USE_MPI - /* merge run_num from MPI nodes */ - if (mpi_node_count > 1) { - double mcrun_num_double = (double)mcrun_num; - mc_MPI_Sum(&mcrun_num_double, 1); - mcrun_num = (unsigned long long)mcrun_num_double; - } -#endif - - - // save/finally executed by master node/thread/host - finally(); - - -#ifdef USE_MPI - MPI_Finalize(); -#endif /* USE_MPI */ - - - return 0; -} /* mccode_main */ -/* End of file "mccode_main.c". */ - -/* end of generated C code ./ODIN_TOF_train4.c */ From d720094a77c0f8923dfb95163ea853d8d4be0670 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Fri, 27 Feb 2026 21:02:09 +0100 Subject: [PATCH 26/75] Whitespace-edit to trigger just the test of this instr file --- .../examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr | 1 + 1 file changed, 1 insertion(+) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr index 7e8730b8ff..4576734bd7 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr @@ -1024,4 +1024,5 @@ FINALLY %{ %} + END From f9cb65af8c38e89670966132676aeb040528ee45 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Fri, 27 Feb 2026 21:57:22 +0100 Subject: [PATCH 27/75] Disble time measurement with MSVC compiler --- .../Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr index 4576734bd7..832272ee9e 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr @@ -142,7 +142,12 @@ total_arrived=0; total_N_sent=0; total_rays_sent=0; +// Don't measure time on windows, CLOCK_REALTIME +// macro is unknown... +// It is indicated in this oagehttps://learn.microsoft.com/en-us/answers/questions/2147256/clock-realtime-is-undefined-in-visual-studio-but-c that it might work to add a high enough _POSIX_C_SOURCE define, i.e. +// #define _POSIX_C_SOURCE 199309L. +#ifndef _MSC_EXTENSIONS MPI_MASTER( struct timespec ts; @@ -162,6 +167,7 @@ MPI_MASTER( fprintf(f, "%.9f\n", wall_time); fclose(f); ); +#endif %} TRACE @@ -998,7 +1004,7 @@ AT (0, 0, 60.5) RELATIVE optical_axis_backend SAVE %{ - + #ifndef _MSC_EXTENSIONS MPI_MASTER( struct timespec ts; @@ -1017,7 +1023,8 @@ SAVE fprintf(f, "%.9f\n", wall_time); fclose(f); - ); + ); + #endif %} FINALLY From e32a7462d150d06d8e3994bb4a5d8a3bec42a55c Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sat, 28 Feb 2026 08:12:22 +0100 Subject: [PATCH 28/75] Prevent gigantic memory leak --- mccode/src/cogen.c.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 93b15cf2e2..5298fdd656 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1995,6 +1995,12 @@ int cogen_raytrace(struct instr_def *instr) /* Debugging (final state). */ cout(" DEBUG_STATE()"); + cout(" // If TOF_TRAIN we need to nuke internal arrays!"); + cout(" #ifdef TOF_TRAIN"); + cout(" if (_particle->t_offset) free(_particle->t_offset);"); + cout(" if (_particle->p_trains) free(_particle->p_trains);"); + cout(" if (_particle->alive_trains) free(_particle->alive_trains);"); + cout(" #endif TOF_TRAIN"); cout(""); cout(" return(_particle->_index);"); coutf("} /* raytrace */"); From 6fdfb75154c58db6699ce2b11a9067d6322bf6e3 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sat, 28 Feb 2026 08:24:49 +0100 Subject: [PATCH 29/75] Clear local pp_array before exit --- .../examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp index 68451b6e45..1ddf35bf8c 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp @@ -626,7 +626,7 @@ TRACE SCATTER; } } - + if(pp_array) free(pp_array); /*set weight to undetected part if capture and/or he3_pressure*/ if (Vars.He3_pressure > 0) { From bf4287f378aef3985902b80497b126381f73c5f5 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sat, 28 Feb 2026 10:46:19 +0100 Subject: [PATCH 30/75] Correct #endif syntax... --- mccode/src/cogen.c.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 5298fdd656..dace5da66a 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2000,7 +2000,7 @@ int cogen_raytrace(struct instr_def *instr) cout(" if (_particle->t_offset) free(_particle->t_offset);"); cout(" if (_particle->p_trains) free(_particle->p_trains);"); cout(" if (_particle->alive_trains) free(_particle->alive_trains);"); - cout(" #endif TOF_TRAIN"); + cout(" #endif"); cout(""); cout(" return(_particle->_index);"); coutf("} /* raytrace */"); From 2a3c6860d074088ef2788d40ddd998e6477812db Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 16:31:08 +0100 Subject: [PATCH 31/75] Add instrument for "filtering" a raw ESS MCPL input to * limit divergence (must hit beamport, must come from source) * limit to wanted wavelength range * remove non-neutron particles --- .../ODIN_MCPL_baseline/Filter.instr | 306 ++++++++++++++++++ 1 file changed, 306 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filter.instr diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filter.instr b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filter.instr new file mode 100644 index 0000000000..1bf2166311 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filter.instr @@ -0,0 +1,306 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN_MCPL_baseline +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* Example: -y Detector: tof_I=9.16671e+08 +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN_MCPL_baseline ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2, // 0: no choppers 1: BP 2: WFM +int repeat=1,v_smear=0.1,pos_smear=0.01,dir_smear=0.01, +string sector="S", int beamline=2) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap +int filter=0; + double calcAlpha(double length, double radius) { + // calculate angle of arm after curved guide + return RAD2DEG * length/radius; + } + + double calcX(double length, double radius) { + // calculate position and angle of arm after curved guide + double alpha = DEG2RAD * calcAlpha(length, radius); + return radius*(1.0-cos(alpha)); + } + + double calcZ(double length, double radius) { + // calculate position and angle of arm after curved guide + double alpha = DEG2RAD * calcAlpha(length, radius); + return radius*sin(alpha); + } + + double XW, YH; + char options1[256],options2[256],options3[256],options4[256]; + char srcdef[128]; + double WidthC=0.072,WidthT=0.108; + double lambdamin, lambdamax; + double TCollmin; + double TCollmax; + #pragma acc declare create(TCollmin,TCollmax) + double EminTh=20, EmaxTh=100, EminC=0, EmaxC=20; + #pragma acc declare create(EminTh,EmaxTh,EminC,EmaxC) + /* 10 beamlines in sector N and E - plus one location added for drawing */ + double iBeamlinesN[] = { 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double iBeamlinesE[] = {-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + /* 11 beamlines in sector S and W - plus one location added for drawing */ + double iBeamlinesW[] = { 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double iBeamlinesS[] = {-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double* iBeamlines; + double ANGLE; + double DeltaX,DeltaZ; + char MCPLfile[128]; +%} + +USERVARS +%{ +double *t_offset; +double *p_trains; +int *alive_trains; +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + TCollmin=0; + TCollmax=0.06; + iBeamlines=iBeamlinesS; + DeltaX=0.0585; DeltaZ=-0.0925; + + ANGLE=iBeamlines[beamline-1]-90; + if (filter==0) + sprintf(MCPLfile,"%s%i.mcpl.gz",sector,beamline); + else + sprintf(MCPLfile,"%s%i_filtered.mcpl.gz",sector,beamline); + printf("MCPLfile is %s\n",MCPLfile); + +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE + +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE + +/* read neutrons from an mcpl file*/ + +COMPONENT vinROT2 = Arm() +AT(0,0,0) RELATIVE PREVIOUS + ROTATED (0,-90,0) RELATIVE PREVIOUS + +COMPONENT vinROT1 = Arm() +AT(0,0,0) RELATIVE PREVIOUS + ROTATED (-90,0,0) RELATIVE PREVIOUS + +COMPONENT vin = MCPL_input_once(filename=MCPLfile,verbose=1,v_smear=v_smear,pos_smear=pos_smear,dir_smear=dir_smear) +//COMPONENT vin = MCPL_input(filename=MCPLfile,verbose=1,repeat_count=repeat,v_smear=v_smear,pos_smear=pos_smear,dir_smear=dir_smear) +AT(0,0,0) RELATIVE PREVIOUS +EXTEND %{ + SCATTER; + p*=1.56e16; + p/=1e5; + z=z-0.137; +%} + +COMPONENT Sphere1 = PSD_monitor_4PI(filename="nonrotated", radius=2.2,restore_neutron=1) +AT (0,0,0) RELATIVE PREVIOUS + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0) +WHEN (0==1) AT (DeltaX,0,DeltaZ) ABSOLUTE + ROTATED (0, ANGLE, 0) ABSOLUTE + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Source + +COMPONENT Sphere2 = PSD_monitor_4PI(filename="final", radius=2.2,restore_neutron=1) +AT (0,0,0) RELATIVE Source + +COMPONENT Focus_cut=Shape(xwidth=0.01,yheight=0.01) + AT(0,0,2) RELATIVE Source +EXTEND %{ + double xtmp,ytmp,ztmp,vxtmp,vytmp,vztmp; + xtmp=x;ytmp=y;ztmp=z; + vxtmp=vx;vytmp=vy;vztmp=vz; + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + + if (fabs(x)>0.06 || fabs(y)>0.06) { + ABSORB; + } else { + x=xtmp;y=ytmp;z=ztmp; + vx=vxtmp;vy=vytmp;vz=vztmp; + } +%} + +COMPONENT PSD_cut=PSD_monitor(xwidth=0.01,yheight=0.01) +AT(0,0,0) RELATIVE Focus_cut +EXTEND %{ + ALLOW_BACKPROP; +%} +COMPONENT BackTrace = Shape(xwidth=0.3,yheight=0.3) + AT (0,0,0.08) RELATIVE Source +EXTEND %{ + /* Propagate back to a small rectangle in front of moderators */ + + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + + /* Remove neutrons that are not from around the moderators */ + if (fabs(x)>0.12 || fabs(y)>0.03) { + ABSORB; + } + double myL = (2*PI/V2K)/sqrt(vx*vx + vy*vy + vz*vz); + if ( myL < INSTRUMENT_GETPAR(l_min) || myL > INSTRUMENT_GETPAR(l_max) ) { + ABSORB; + } +%} + +COMPONENT Sphere0 = PSD_monitor_4PI(filename="rotated", radius=2.2) +AT (0,0,0) RELATIVE Source + +COMPONENT vout = MCPL_output(filename="S2_filtered.mcpl.gz") + AT (0,0,0) RELATIVE vin + +COMPONENT PSD_Backtrace=PSD_monitor(xwidth=0.3,yheight=0.3) +AT(0,0,0) RELATIVE BackTrace +EXTEND %{ + ALLOW_BACKPROP; +%} + + +END From 1912d56c037d62f6c4a42fa5c8b3189ac503a543 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 16:54:50 +0100 Subject: [PATCH 32/75] Add ODIN_MCPL model "baseline" --- .../ODIN_MCPL_baseline/Graphite_Diffuser.comp | 115 ++ .../ODIN_MCPL_baseline.instr | 1153 +++++++++++++++++ .../ODIN_MCPL_baseline/bi_spec_ellipse.comp | 794 ++++++++++++ 3 files changed, 2062 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Graphite_Diffuser.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/ODIN_MCPL_baseline.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Graphite_Diffuser.comp new file mode 100644 index 0000000000..ea21aa714e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Graphite_Diffuser.comp @@ -0,0 +1,115 @@ +/******************************************************************************* +* +* McStas, version 1.2 released February 2000 +* Maintained by Kristian Nielsen and Kim Lefmann, +* Risoe National Laboratory, Roskilde, Denmark +* +* %IDENTIFICATION +* +* Written by: Manuel Morgano +* Date: 18 Febrauary 2015 +* Version: $Revision: 1.1.1.1 $ +* Origin: PSI +* +* Graphite diffuser +* +* %DESCRIPTION +* +* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics +* +* The formula has only been verified for a diffuser thickness of 1 and 2 cm. +* No absorption is take into account. +* +* %PARAMETERS +* +* INPUT PARAMETERS: +* +* xwidth: (m) Size of diffuser +* ywidth: (m) Size of diffuser +* thick: (m) Thickness of diffuser +* abs (1) 0 = no absorption, 1 = absorption +* %LINKS +* %END +* +*******************************************************************************/ + +DEFINE COMPONENT Graphite_Diffuser +DEFINITION PARAMETERS () +SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) +OUTPUT PARAMETERS () +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) +SHARE +%{ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} +%} +INITIALIZE +%{ +%} +TRACE +%{ + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || y0.06 || fabs(y)>0.06) { + ABSORB; + } else { + x=xtmp;y=ytmp;z=ztmp; + vx=vxtmp;vy=vytmp;vz=vztmp; + } +%} + +COMPONENT PSD_cut=PSD_monitor(xwidth=0.01,yheight=0.01, restore_neutron=1) +WHEN(!filter) AT(0,0,0) RELATIVE Focus_cut +EXTEND %{ + ALLOW_BACKPROP; +%} +COMPONENT BackTrace = Shape(xwidth=0.3,yheight=0.3) +AT (0,0,0.08) RELATIVE Source +EXTEND %{ + /* Propagate back to a small rectangle in front of moderators */ + + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + if (!INSTRUMENT_GETPAR(filter)) { + /* Remove neutrons that are not from around the moderators */ + if (fabs(x)>0.12 || fabs(y)>0.03) { + ABSORB; + } + double myL = (2*PI/V2K)/sqrt(vx*vx + vy*vy + vz*vz); + if ( myL < INSTRUMENT_GETPAR(l_min) || myL > INSTRUMENT_GETPAR(l_max) ) { + ABSORB; + } + } + t+=rand01()*ESS_SOURCE_DURATION; + if (t>3*ESS_SOURCE_DURATION) { + ABSORB; + } +%} + +COMPONENT PSD_Backtrace=PSD_monitor(xwidth=0.3,yheight=0.3) +AT(0,0,0) RELATIVE BackTrace +EXTEND %{ + ALLOW_BACKPROP; +%} + + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + + COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +// Start of finally for generated ODIN +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/bi_spec_ellipse.comp new file mode 100644 index 0000000000..c24fb3cdea --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/bi_spec_ellipse.comp @@ -0,0 +1,794 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2011, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Bi-spectral extracion system +* +* %I +* Written by: Manuel Morgano +* Date: April 2015 +* Version: $Revision: 2.3 $ +* Origin: PSI +* Release: McStas 1.12c +* +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* +* %D +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* The supermirror number can be automatically calculated (setting the number to 0) or given +* Each mirror can be split in submirror pieces, each of them offseted by a constant angle +* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. +* The feeder's shape is calculated by the distance between the guide entrance and the first focus, +* the distance between the exit and the second focus, the length of the coated part and the opening +* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. +* User can specify different shapes for the horizontal and the vertical ellipse. +* Setting the m-coating to 0 means absorbing, -1 means transparent. +* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn +* but it's transparent. +* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. +* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. +* +* +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %P +* INPUT PARAMETERS: +* +* xheight: (m) height of mirror stack +* ywidth: (m) width of mirror plate +* zlength: (m) length of the mirror +* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) +* n_pieces (1) number of straight section per mirror +* tilt (degrees) angle between the mirrors and the horizontal direction +* angular_offset (degrees) angle between subsequent sub-mirrors +* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. +* R0_m: (1) Low-angle reflectivity +* Qc_m: (AA-1) Critical scattering vector +* alpha_mirror_m: (AA) Slope of reflectivity +* W_m: (AA-1) Width of supermirror cut-off +* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. +* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. +* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. +* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. +* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. +* ell_l: (m) length of the coated part of the ellipse +* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors +* ell_w: (m) width of the ellipse entrance +* ell_m: (1) m-value of the coating of the ellipse +* R0: (1) Low-angle reflectivity +* Qc: (AA-1) Critical scattering vector +* alpha_mirror: (AA) Slope of reflectivity +* W: (AA-1) Width of supermirror cut-off +* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* cut: (1) cutoff for lowest reflectivity consideration. +* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file +* +* %D +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT bi_spec_ellipse +DEFINITION PARAMETERS () + SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) +OUTPUT PARAMETERS (pTable) +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) + +SHARE +%{ +%include "read_table-lib" +%} + +DECLARE +%{ + t_Table pTable; + +%} + +INITIALIZE +%{ + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + +%} + +TRACE +%{ + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +%} + +MCDISPLAY +%{ + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i Date: Sun, 1 Mar 2026 17:27:54 +0100 Subject: [PATCH 33/75] Minor fixes --- .../ODIN_MCPL_baseline/ODIN_MCPL_baseline.instr | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/ODIN_MCPL_baseline.instr b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/ODIN_MCPL_baseline.instr index 8b4b9c611f..e5469e6496 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/ODIN_MCPL_baseline.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/ODIN_MCPL_baseline.instr @@ -205,9 +205,7 @@ TRACE COMPONENT Origin = Progress_bar() AT (0, 0, 0) ABSOLUTE -EXTEND %{ - ALLOW_BACKPROP; -%} + /* read neutrons from an mcpl file*/ COMPONENT vinROT2 = Arm() @@ -230,7 +228,7 @@ EXTEND %{ } %} -COMPONENT Sphere1 = PSD_monitor_4PI(filename="nonrotated", radius=2.2,restore_neutron=1) +COMPONENT Sphere1 = PSD_monitor_4PI(filename="nonrotated", radius=2.4,restore_neutron=1) AT (0,0,0) RELATIVE PREVIOUS COMPONENT Source = ESS_butterfly( @@ -249,6 +247,9 @@ AT (0.026, 0, 0) RELATIVE Source COMPONENT Sphere0 = PSD_monitor_4PI(filename="rotated", radius=2.2,restore_neutron=1) AT (0,0,0) RELATIVE Source +EXTEND %{ + ALLOW_BACKPROP; +%} COMPONENT Focus_cut=Shape(xwidth=0.01,yheight=0.01) WHEN (!filter) AT(0,0,2) RELATIVE Source @@ -269,10 +270,8 @@ EXTEND %{ %} COMPONENT PSD_cut=PSD_monitor(xwidth=0.01,yheight=0.01, restore_neutron=1) -WHEN(!filter) AT(0,0,0) RELATIVE Focus_cut -EXTEND %{ - ALLOW_BACKPROP; -%} +AT(0,0,0) RELATIVE Focus_cut + COMPONENT BackTrace = Shape(xwidth=0.3,yheight=0.3) AT (0,0,0.08) RELATIVE Source EXTEND %{ From 3f21be1f229e720d120eae28e19749afffbf56b0 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 17:31:05 +0100 Subject: [PATCH 34/75] Add output scan --- .../Filterscan/0/PSD_Backtrace.dat | 333 + .../Filterscan/0/PSD_cut.dat | 333 + .../ODIN_MCPL_baseline/Filterscan/0/image.dat | 963 + .../Filterscan/0/mccode.sim | 268 + .../Filterscan/0/nonrotated.dat | 333 + .../Filterscan/0/profile_x.dat | 358 + .../Filterscan/0/profile_y.dat | 358 + .../Filterscan/0/rotated.dat | 333 + .../ODIN_MCPL_baseline/Filterscan/0/time.dat | 358 + .../Filterscan/0/wavelength.dat | 358 + .../Filterscan/0/wavelength_tof.dat | 963 + .../Filterscan/1/PSD_Backtrace.dat | 333 + .../Filterscan/1/PSD_cut.dat | 333 + .../ODIN_MCPL_baseline/Filterscan/1/image.dat | 963 + .../Filterscan/1/mccode.sim | 268 + .../Filterscan/1/nonrotated.dat | 333 + .../Filterscan/1/profile_x.dat | 358 + .../Filterscan/1/profile_y.dat | 358 + .../Filterscan/1/rotated.dat | 333 + .../ODIN_MCPL_baseline/Filterscan/1/time.dat | 358 + .../Filterscan/1/wavelength.dat | 358 + .../Filterscan/1/wavelength_tof.dat | 963 + .../Filterscan/ODIN_MCPL_baseline.c | 36869 ++++++++++++++++ .../ODIN_MCPL_baseline/Filterscan/mccode.dat | 16 + .../ODIN_MCPL_baseline/Filterscan/mccode.sim | 27 + 25 files changed, 46828 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/PSD_Backtrace.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/PSD_cut.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/image.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/mccode.sim create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/nonrotated.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/profile_x.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/profile_y.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/rotated.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/time.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/wavelength.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/wavelength_tof.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/PSD_Backtrace.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/PSD_cut.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/image.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/mccode.sim create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/nonrotated.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/profile_x.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/profile_y.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/rotated.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/time.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/wavelength.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/wavelength_tof.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/ODIN_MCPL_baseline.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/mccode.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/mccode.sim diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/PSD_Backtrace.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/PSD_Backtrace.dat new file mode 100644 index 0000000000..3580bba49d --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/PSD_Backtrace.dat @@ -0,0 +1,333 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: PSD_Backtrace +# position: 0.123791 0 -0.138729 +# title: PSD monitor +# Ncount: 153447624 +# filename: PSD_Backtrace.dat +# statistics: X0=-0.854665; dX=5.98354; Y0=-0.00730746; dY=1.14411; +# signal: Min=0; Max=1.63527e+11; Mean=1.33741e+09; +# values: 1.0833e+13 3.27214e+11 1.06228e+07 +# xvar: X +# yvar: Y +# xlabel: X position [cm] +# ylabel: Y position [cm] +# zvar: I +# zlabel: Signal per bin +# xylimits: -15 15 -15 15 +# variables: I I_err N +# Data [PSD_Backtrace/PSD_Backtrace.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 238208734.3 475696406.2 640326938.4 637472855.6 550099765.3 681712533 500505619.6 449515533.9 1099139610 559630614.3 743718129.4 426298663.3 403722387.2 521851961.4 378213342 558625953.4 690106846.9 607663166.7 793711924.2 627187476.4 575342837.4 737291766.5 664436346.2 1010060514 447916259.8 319394340.4 496235158.3 639661936 679793723.2 582953747.5 926830358.3 379439897.5 766295534.7 670901600.1 940954253.6 462437571.2 420652224.7 384391459.4 807140233.2 514829342.2 535520191.7 529399927 429137756.9 488969854.7 723138699.8 362395754.4 442000230 312056137.2 271427398.8 601631200.2 505647699.9 517702210.1 313527659 635613920.2 838880111.1 569663477.4 471630677.4 502533282.5 587086351 341361107.1 495143638.4 1159977812 439045373.3 187756644.7 475623167.4 367023339.2 260899935.6 625065188 281052276.8 482855608.1 441799119.5 435079483.1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1068221225 1846832125 1780856495 1174007657 1290628198 2112174988 1845930478 1696505566 986120955.2 1567415678 1541604557 1799640332 1421556114 2477035608 1866436064 1108215619 1598423970 1939644851 1702529867 1474166682 1646157871 1312271295 1747784010 1966953897 1069036014 1480692821 1418830848 1534993736 1107394631 2090843217 1367634096 1260211384 1930193659 1580184991 1567444900 934754875.3 2352807746 1251180652 1237971527 1859407721 1944159349 1467223072 1178226320 1150794444 1812657467 1735772888 1116019632 1143558189 1527433497 1508721044 1156207062 1304241534 1201580892 972110734 1140230416 1966593026 1060276345 998122543 1580624527 797843533.9 1125999441 922588255.5 1321784795 1056547594 1139001835 833363010.1 789322839.9 1516684201 864934874.1 710215821.5 681973729.8 963764381 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2608366367 2473384682 3263089015 3029078308 3095918753 3262783132 2944230692 3326023260 3529792085 3225039431 2912299174 4513915714 3124433056 2546680070 3061383251 3242364160 3138668738 3364774552 2712302287 3282280183 3484706494 2429968909 3077049780 4120899001 3502122976 3717235707 2706304730 3200604831 2879871992 3146730426 3643616830 4059737580 6.190980116e+10 3485849684 2979619309 3318207025 3260677618 3003001073 2595898908 2753620645 2118410899 3611597315 2912305643 2899518987 2371743497 2826643222 2630541154 2365652994 2433157010 2661894032 2527138349 2430676630 2781302504 3245175474 2494027204 3190627748 2150594328 2390461245 2889889457 2783215637 2723798155 1898333986 2729729086 2695078474 1828848925 2743473044 2234580866 2102569470 1977041883 2087751284 2091514374 2454650047 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2307838940 3340969581 4672889195 4649612845 5401137408 5313099598 5805699897 5551625379 4798017536 6763603902 5189040760 6863320831 5131736053 6483719526 6856537130 6472734881 6524860226 6350650969 5820319882 6391867927 6066644618 6427293027 7605188261 6030727359 6098870785 6342956436 5339841656 6113775445 6101733489 6275861538 5730550418 8118072242 5859103021 7383965931 7514573472 6514547666 6199809614 5287022182 6280488915 4194534103 6268131429 4374231725 4563405022 5521120182 5374971311 5104687420 6192774185 4617033122 4508589377 6106260797 5039227911 4751680925 5158485947 5256119024 5124473821 4351863324 4445559974 4983976407 4862366508 5083047000 5111103039 4332486973 4075166092 3356727435 4709049216 5361045699 4998955052 4473021532 3785463810 3610494965 4081956331 4004920391 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3067197934 3819117822 5681979932 4605043945 6222802202 5818555847 6220860388 5132275557 4596162927 6675723030 7723589804 6981240845 1.099416252e+10 1.285793813e+10 1.629611255e+10 1.514217914e+10 1.466539873e+10 1.476508498e+10 1.546013898e+10 1.406714728e+10 1.403948245e+10 1.71595808e+10 1.365881381e+10 1.427559104e+10 1.68471047e+10 1.574828345e+10 1.390487324e+10 1.658813125e+10 1.657079608e+10 1.405628543e+10 1.4541678e+10 1.292768841e+10 1.306170037e+10 1.147052755e+10 1.17538434e+10 1.106028554e+10 8601021666 9669768158 9130641425 7698265063 8145476457 9382562400 8655199597 1.019677248e+10 8292870757 1.05214845e+10 7822797147 8921561031 8038668595 8822063808 9328967574 8732088303 7150641665 8323044596 8583724367 1.00285523e+10 8499272555 8969830175 8930463119 8305280108 8591107012 8580293815 8711130963 7142196245 6439369583 5718402996 5920417823 6362893011 5757631866 4721855986 5324442193 5524769529 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3082211035 4027878830 5835571960 5198309528 5197717158 5628791873 5670976481 6217117947 5833876659 7091625825 8181647708 8766908335 1.022105103e+10 1.882227129e+10 2.178337044e+10 1.987678629e+10 2.120256436e+10 2.152782165e+10 2.354720738e+10 2.211649538e+10 2.414009718e+10 2.484164077e+10 2.306863192e+10 2.316294766e+10 2.185707629e+10 2.170404897e+10 2.465711304e+10 2.36306792e+10 2.277024528e+10 2.358687925e+10 2.162732647e+10 1.842468071e+10 1.544107594e+10 1.241807246e+10 1.0919721e+10 1.112902332e+10 9347961126 9173187681 9271499068 7522976555 8171410274 9498524082 9308901072 8938782699 1.008885663e+10 8823995792 1.001099926e+10 1.032803839e+10 8701472647 8490489883 9597334796 8650594953 8997345426 1.125461201e+10 1.02369533e+10 1.220276058e+10 1.143406698e+10 1.004202518e+10 8973871530 9522698436 1.008103629e+10 1.013515456e+10 8846932427 7195057261 7169998558 7868927300 6300926502 6925967469 6398291678 5664062532 4577498231 4478012637 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3130666917 4483661973 4247298930 5076023486 6575654334 6398253990 7082621760 6491327509 6208553188 7264435638 7542445775 7665356970 1.149787441e+10 1.894953617e+10 1.951211096e+10 1.953528139e+10 1.891547689e+10 2.000202458e+10 2.211696426e+10 2.417524072e+10 2.464943016e+10 2.316142834e+10 2.219398143e+10 2.198752669e+10 1.635265174e+11 2.535964265e+10 2.538026385e+10 2.282101402e+10 2.225453888e+10 2.213852157e+10 2.188763378e+10 1.680473431e+10 1.53525781e+10 1.256242572e+10 1.069041475e+10 1.198025287e+10 8102907880 1.014254683e+10 9073719913 6883708372 8914511559 1.142768523e+10 1.006777894e+10 9452168429 1.066169829e+10 9267481593 8908046121 9891860384 9017643467 1.005992326e+10 9061452761 9112844227 9483838160 1.135463365e+10 1.183128411e+10 1.154457441e+10 1.249218892e+10 1.142587057e+10 1.043758923e+10 1.126282046e+10 9034495956 8857162080 8158948828 6924440828 6335810199 6145031033 7627971522 6119736049 6544626146 5232972259 4637804691 5633702942 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2722067640 3887276882 4110512868 4182571136 5633167476 5664169193 5367980636 5688181806 6981891096 8416036264 6672592386 8179382707 1.109519632e+10 1.916204198e+10 1.839812468e+10 2.017437989e+10 2.040044185e+10 6.835807685e+10 2.202604028e+10 2.311322661e+10 2.200640819e+10 2.291171808e+10 1.414293879e+11 2.255692408e+10 2.287051874e+10 2.26259606e+10 2.246692657e+10 2.298458295e+10 2.389519178e+10 2.173438456e+10 1.899918379e+10 1.744280625e+10 1.51924787e+10 1.288281883e+10 1.039707658e+10 9166337814 8311862470 9555132304 8795216235 7843849882 9012036306 8490576958 1.051678766e+10 9624718143 1.062402463e+10 1.053821733e+10 8675002419 8647380426 9454378282 8611463401 7938963567 7495543768 1.018974196e+10 1.157207926e+10 1.393329563e+10 1.090952103e+10 1.194339647e+10 1.188216161e+10 1.024585794e+10 1.065702628e+10 1.005199481e+10 9596830850 8796800675 7895895879 7610430487 6468595199 6871302872 6544207042 5950566242 5531241258 4484217761 5772903185 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2065557794 3544981443 4783296805 5169454314 5110316931 5740840668 5923202364 5305587449 5892634527 7857712796 7436773892 7923881335 1.13663858e+10 1.875800007e+10 1.672579302e+10 1.874132181e+10 1.935808426e+10 9.088992164e+10 2.010036771e+10 1.324971951e+11 2.075448579e+10 2.370793634e+10 2.080949075e+10 2.317546062e+10 2.215430982e+10 2.199938786e+10 2.13008742e+10 2.35212785e+10 2.354390792e+10 2.152740142e+10 2.075092981e+10 1.70207716e+10 1.295798687e+10 1.324527956e+10 1.045789811e+10 1.055014449e+10 8599480681 9424480858 8770939382 9864486887 9090877941 8895955662 1.016574077e+10 1.068960622e+10 1.015083613e+10 1.015888782e+10 8898638539 9466153772 8107506210 9689229624 8495364308 8138676408 9513654248 1.086412545e+10 9726238148 1.16885284e+10 9997969135 1.119233068e+10 1.023714295e+10 9429541643 8021425289 9292859246 9523849079 7165319657 6518942999 6052478943 6900953502 6208689119 1.161331964e+11 6159962394 5104619325 4874346718 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2865987471 4256882332 4420545176 4652513560 4951767869 5467147429 6077246203 6590480865 5781878084 7243401735 7342489904 6970953225 1.153419667e+10 1.780981293e+10 1.77350472e+10 2.01388642e+10 1.846733775e+10 1.929866719e+10 2.084387527e+10 2.161888524e+10 2.328882172e+10 2.21991055e+10 2.306745979e+10 2.253269111e+10 2.333079979e+10 2.27297343e+10 2.182894949e+10 2.208772384e+10 2.238561819e+10 1.880540376e+10 2.04458529e+10 1.671795576e+10 1.511718504e+10 1.315197377e+10 1.201475921e+10 1.107079443e+10 8857890755 8775086610 8564987739 8759136968 9327876918 1.027779976e+10 1.005211526e+10 9412254102 9352869617 1.061043716e+10 9414127005 9814535164 9262234521 9365506388 8642481927 7660266093 8244208158 9868944183 1.190832571e+10 1.195700999e+10 1.150366244e+10 1.096979853e+10 1.126646465e+10 9880928290 9920246170 9302672386 9041659948 6564231055 6550159215 7045307096 6779671155 5174962441 6057364690 5534643993 4493710881 4613403661 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3725320553 3769109518 5609846373 6248701560 5452151650 5964649300 5710802418 6014975589 6153783133 5879929344 7465523247 8348600989 1.197663566e+10 1.833546161e+10 1.816128483e+10 2.085091225e+10 9.738621999e+10 2.284908668e+10 2.094752337e+10 2.270395009e+10 2.3454389e+10 2.177016892e+10 2.183353099e+10 2.169387903e+10 2.135728667e+10 2.253669613e+10 2.100374948e+10 2.311411413e+10 2.337018992e+10 2.245992833e+10 2.017321457e+10 1.759252913e+10 1.321603795e+10 1.176304627e+10 1.094706882e+10 9318445242 9873407197 8217888821 8019507792 8893612564 7869729022 8717336870 1.056291227e+10 1.0288752e+10 8750716027 1.094855636e+10 1.026743944e+10 9073487879 9377230036 8224649249 5.913724298e+10 8475310532 8247173575 1.281373401e+10 1.127000587e+10 5.341311076e+10 1.148751672e+10 1.020920689e+10 9379826803 1.032993945e+10 9872170567 8804220584 1.082807659e+10 7697461529 7330299503 7820481130 7432021236 5939776945 6019115951 5939645219 4884672575 5135429602 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2227246312 4012056332 4740493117 5790848494 4613012452 4949864534 6101935771 5217481020 5854539631 7124878074 6989545253 7055384752 1.118645241e+10 1.946621638e+10 2.017870572e+10 1.900785291e+10 2.251128663e+10 2.324237045e+10 2.184854507e+10 2.368382323e+10 2.208769521e+10 2.369400566e+10 2.355622598e+10 2.345832542e+10 2.320508534e+10 2.612523846e+10 2.322909654e+10 2.495481837e+10 2.330758019e+10 2.41364203e+10 2.214354911e+10 1.825551924e+10 1.556393411e+10 1.189301934e+10 1.163092951e+10 1.251307607e+10 8666731435 7647009252 8109598218 7948163619 7496345907 1.016631055e+10 9800792151 1.006728629e+10 9701699586 1.029792065e+10 9593495924 1.059723258e+10 9077454793 8948293515 8838362334 8732064517 9617317627 1.119779034e+10 1.210095048e+10 1.184908273e+10 1.18139123e+10 1.071378679e+10 1.129331544e+10 1.005066587e+10 1.153859509e+10 9914728881 8.620231856e+10 8389539332 7726268967 6999191363 5571477760 7655794941 6462275809 5293406743 5695771027 5923592038 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3056228707 3310591402 4693195570 4838762205 5328550586 6215151303 5174754922 6615110044 5591542796 6623494829 6984157205 8035360190 1.014574875e+10 2.069576573e+10 2.120145405e+10 2.047099544e+10 1.957691262e+10 2.335462932e+10 2.353406226e+10 2.385740207e+10 2.578551962e+10 2.421754609e+10 2.303274846e+10 2.244921025e+10 1.310501591e+11 2.288038137e+10 2.368407485e+10 2.432260644e+10 2.193659254e+10 2.306347642e+10 1.002958307e+11 1.942068237e+10 1.501402176e+10 1.292293705e+10 1.101282118e+10 1.321204294e+10 9223216542 8590982815 8623369455 9014699114 9194508645 8355448680 1.081855202e+10 1.009309573e+10 8948353584 1.115578113e+10 9209088661 7.926878115e+10 1.016256603e+10 9354024381 8460347835 9387929736 8849457960 9601349492 1.15185682e+10 1.158376696e+10 1.13919361e+10 1.005077714e+10 1.045433222e+10 1.117754213e+10 1.03964123e+10 9131130347 8749515253 7245933192 7600560400 6398713082 5283217046 6769545037 5968421858 6032787747 5884345000 5821991814 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2930104662 3875810299 4616227849 4121004836 5671118845 5263514030 4896410805 6643953708 5821311869 6674748597 7620234652 8898825823 1.196983809e+10 1.398333343e+10 1.327215145e+10 1.493018727e+10 1.623263578e+10 1.618553577e+10 1.462500498e+10 1.519788134e+10 1.589190824e+10 1.658608868e+10 1.598184237e+10 1.448567746e+10 1.733009254e+10 1.364929282e+10 1.659740863e+10 1.48374569e+10 1.571974716e+10 1.536784996e+10 1.647629925e+10 1.463329525e+10 1.282959738e+10 1.227591042e+10 1.085516247e+10 1.164436107e+10 1.054511999e+10 1.007708065e+10 8715209988 7260114664 8757940657 9109921893 8594861688 8707596821 8766579034 8323556164 9681314299 8399070539 8586945216 9146318474 7233951158 7960315002 9656519274 9789670382 9618554197 9623488781 9066328199 8912050906 8073485056 1.012309971e+10 8128171649 8577533017 7659670349 7688425430 6740886099 6608145152 6060510334 6873111154 6118954599 4767194777 5544157668 5207555999 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2711708324 4283045357 5047488847 4343035143 4414966712 4605661873 3962325978 3715007985 5422502453 4446392267 5333698815 4959007496 6035613022 6975073090 5802963896 6147887792 6030013803 5239183197 6186728749 5520690704 5063661021 5068664761 5946121586 5079607882 5689618450 4675832961 4609700129 5679770737 5625002141 5798584476 6200273130 5239728879 6001878838 6541861930 6517713684 5853537003 5021415100 4139119914 5070364225 6192470506 5198999135 4829454927 4408816026 4574468078 4578557047 4753626568 5899612810 4073831221 4395990227 4851693264 4761635720 4809364085 4151471710 4775027631 4172143637 4039798669 4282767393 3778192725 3764220296 4390639423 3526069818 4795907391 3923208419 4033816021 4806217298 3955687189 2766897521 3433261398 4196088923 3576074003 2747309538 3446187959 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1550422138 1679614789 2833948801 2353034220 2199093207 3538553981 2973430146 3677118787 2989024901 3354823727 2741244023 2519170956 2556828929 2376755395 2786166968 2807435276 2485020519 2518650795 2936186710 3151460018 2536939193 2193973633 2745388043 3111138014 2471234420 2682325581 1875535131 2735675145 5099036649 2461512771 2091493568 2258993568 2386478178 2720708687 2697875802 2971623819 2532834692 2882255233 1924292058 2663598691 2314448451 1987800094 3016858870 2593268022 3847354727 2312048579 2857684141 2767359536 1709830815 1916807020 1981063871 2238918947 2108133641 2380173820 1582507734 3255250233 2849353803 1777516895 3146907148 2206445098 2554374872 2181964927 2199092342 2084288600 2135716929 1769471039 1444523520 1869779225 1908581967 1675014728 1940352756 1806658502 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 770224254.2 927146094.8 1997692552 1012182826 1168640559 1315551210 1342271372 1856016406 1214608973 1029688205 2163280996 1341090325 1323867708 1509311917 1073983234 1082635776 1836369787 1190853407 884690104.1 1455868862 1618017005 1950128882 1523425864 1135522418 1286006021 1165952781 925464176 1050086181 1684920604 1298050529 1555883742 1342993591 1197639161 1303448154 1285499474 1082553489 1100053105 1408537105 1092592314 1007294327 1382945876 1260468305 1345869394 1429458544 881354183.4 1089288586 768542442.6 1767917164 880565407.5 1394542974 874770435.4 1141355925 777230469 991072866.1 463090942.5 784864323.8 807026007.1 1176281093 976476555.8 1096980955 1103712552 1111533769 864121547.2 646954066.1 705304315.2 898738871.6 690316138.6 500061236.6 677670008.2 821529235.2 837397689.3 728825642 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 472713773.4 805548891.2 984285787.2 430977748.2 393833549.8 780511628.7 533615304.6 1006913025 542859511.1 536134289.8 740772524.7 398875325.7 426074745.4 256177324.5 658203024 642116155.8 362604550.6 513855960.3 514949034.1 436229260.6 729119792 746256654.2 757063425.4 520449060 610220979.3 365055590.7 247977695 944841669.6 275732217.6 392224117.4 443541200.7 448757583.8 775632821.2 363316715.8 352592177.6 335815319.3 516120510.8 651267248.8 496085014.1 471729378.4 572532448 643678818 531476492.9 450907956 372515404.8 406690975.9 1385913850 530504180.7 515050300.5 480854515.6 369898371.2 589890927.9 575513823.3 564994744.6 157506945.6 317276365 315984015.8 692633561.7 500152967.4 279831447.5 580468251.8 484452233.4 176660624.2 211994562.5 507791357.8 543511345.1 500640040 866340071.3 303192123.9 562815416.4 278208157.5 528696464.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [PSD_Backtrace/PSD_Backtrace.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 75250447.74 107585625.4 180309150.7 197496988.8 126509776.6 187547368.5 116470495.6 138630729.4 347585830.3 213793347.6 243440928.8 123998565.5 103949292.3 123300329.2 83903940.2 152043705.2 176472548.1 155707676.8 514304048.5 166267234 188366405.5 225569957.9 145609002.4 296965220.9 107026590.1 78168293.31 116460949.8 223702750 177112511.7 113130909.8 305747066.7 138969945.2 197540824 175400160.2 256259979.2 138635802 109960946.7 120360471.3 247474817.6 126557448.7 133976340.2 125091452.3 103174878.7 144570442.2 190387964.4 104597595.5 113346959.6 81815704.33 72115354.49 157304107.9 150633377.5 126940565.1 94536464.78 189857233.3 254106507.7 181393029.6 138152361 207801616.6 155156070 85608198.98 154542760 591119803.3 170176242 48441974.66 139969756.8 126797713.5 80318215.32 261502274 79118270.08 157597933.7 93567088.07 194049653.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 260392894.8 495691739.7 272632623.7 298273965.5 196793025.5 464432781.1 359033636.4 313605134.4 186768030.9 257203056.7 223463611.3 332303326.6 230301748.2 601171115.4 281173136.4 211998543.9 287509762.2 606588856.8 595382611.7 322273107.5 262585571 226625636.9 276750304.4 325717138.7 183372145.4 246420086.4 217735286.1 264718072.4 148050346.5 411035494.4 213526019.8 180299559.7 314033229.8 329192782.8 274869307.8 146506339.1 464838794.8 221968262.1 263237178.8 525314441.5 539452839.6 316067775.8 203892227.9 175844039.9 385248144.4 488955044.7 206134233.7 184124332 289068141.6 401112494.9 205805266.3 243286310.4 261893461.9 223160244.6 229110770.7 655393768.6 259724878.6 350253083.3 545213294.7 153560472.2 227351006.2 237945318.7 280455114 241534120.4 200317166.1 142346716.2 155601539.7 471283790.4 257405104.9 148805340.5 128876191.4 246514976.2 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 566116394.7 303601981 354761088.1 336565022.8 530021576.4 435848672.3 346843821 444719328.9 461369298.8 370379775.8 371214474.8 621786961.6 335834541.4 281872597 471826490.1 419388223.1 431273985.6 406145155.2 296495024.2 421296550.5 500834214.3 266021523.1 438857232.8 697530442.6 508641246.9 574661812.8 304509909.9 388299242.8 323570750.6 372676572 658098585.3 903300926.4 5.835786759e+10 465132509 354998838.6 467528382.7 426709515.4 430212126.8 300341481.3 361090126.6 220013914.9 586742098.6 399812049.8 407417042.3 276653647.9 343058677.2 405910940.9 313757385.4 359507503.5 539736984.1 328153797.7 307779482 484319065.4 537717179.7 285174791.3 486584913.7 303663750.6 301165602.8 442107342.2 351249454.7 544936592.6 213764586.6 403936080.6 384809664.6 237255465.4 494542187.1 400322143.3 314194116.9 322110073.1 300032367.9 316732710.4 617564616.7 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 236731514.1 521882974.6 453045829.9 410256542.1 496658936.3 657329168.1 740150801.3 519020509.6 436739566.3 786038931.4 416453214.7 681644920.9 386670072.6 581424977.2 628962695.3 502144719.9 619434661.5 641427987.1 498881717.3 703738022.6 546618486.2 653681609.4 882958782.9 607373617.7 663301166.8 653752555.9 560822944.1 570725492 578673470.5 590564660.6 548188194.3 769488923.3 539884856.3 612640011.7 737151812.2 606930474.9 554795163.8 552100796.7 588579571.9 397996899.8 720183440.8 379535128.6 483365335.7 673799042.7 548597848.9 533867595.1 786462727.6 471668818.4 390528110.5 691751509.3 557466230 427740875.1 645073849.9 634265039 512296230.6 487456980.3 514762272.6 499944324.5 607998003.4 649363355.3 545940039.2 459942657.6 436417235.1 333856324.3 574532567.5 639765163.3 527028993.7 504604612.5 364303733.6 437304848.3 546939474 544911375.5 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 578803454.7 369881966.4 567910003.2 377451779 497114397.6 542835747.1 676858280.1 404222688.1 362885137 541917432.2 624040709.2 486614067.4 769017477.7 904167610.4 1259056651 1083300197 953029029.5 1066226535 1084608461 841647497.7 910726747.3 1194007376 927699171.1 842364803 1050984469 1055150117 941820737.1 1164967867 1055880783 925165235.2 1010699522 941156334.3 933097271.8 810560102 923356247.5 813309680.6 925158637.2 715634756.6 679833233.9 653854639.6 687682049.9 840369428.3 748787346.7 1408068859 628671037.3 865896393.1 592615411.1 660980046.9 614342238.2 657510227.7 745747915.4 610236881.8 566049318.7 607678514.8 605923216.6 734667777.6 758927494.9 710779346.7 737513913.9 665464772.7 727184811 941333028 1025562323 655514987.6 597331880.4 511692425.6 658739146.1 583955870.8 555157915.3 462767210.1 478879173.7 585386797.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 355758516.7 434282924.9 531544298.5 469315890.2 474544954 504120539.5 537155098.8 549939735 490379195 654207221.1 836685961.1 684136973.1 643751645.3 993877181.9 1162089225 990299666.6 1317662215 1035609947 1267866932 1029758361 1179000112 1132472408 1161014264 1075142398 1072986624 991512080.5 1097127530 1050431144 1018465389 1088536916 1072087558 981422156.4 1078053512 815916558.2 711990900.7 750036811.4 737157411.8 599324230.2 576677803.2 523374547.9 608967696.1 651969068.6 598254285.3 572911535.4 657344670 535475864 637218507.4 709245342.5 541572445.2 539199301.8 797924815 574988018.8 580193264.7 723755867.4 687608988 908721596.6 1006257094 774595422.6 656383124.4 729288356.7 798518461.5 857334039.3 740702796.6 635887499.9 619513818.5 795637098 603570462.9 628257305.4 511933302.4 581689656 389668905 406182460.6 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 377611255 580858950.4 400515464.6 505248919.8 617408272 503900118.2 670294235.8 677578273.7 462065370.6 561256145.9 638491701.3 608120631.7 740684823 1021386847 1013444937 975567519.4 890092516.7 943660803.6 1035981925 1131162402 1003021921 953280658.8 932801056 923115861.4 1.388689746e+11 1102890687 1171330024 906733421.7 1019143493 1019860164 979829791.5 910635284.1 1011652261 902919767.2 688391111.3 870400985.5 608792424.6 680198373 626667670.7 486602860.3 596446033.1 962359183 679653298 633332199 636027378.5 648933073.2 650473337.6 760661564.7 588910639.4 635699977 607298113.4 673568794.4 727869967 775661924 787331746.4 863456400.5 937877319.7 770905990.9 684233944.8 857788188.4 664777418.8 731550984.9 678175028.4 571447855.5 712511887.1 467446950.5 910738473.4 568681961 683730195.7 397786199.3 473326415.2 503602551.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 328389578.5 404960306.8 372473095.2 386854521.4 678113181.3 459941569.3 551095008.6 478765029 653833664.7 1161499587 526598869.7 601238136.6 698194736 1104135553 921029495.8 1052211077 990771391.3 4.717718551e+10 991670838.8 1029473240 991301399.4 1024193170 1.165826466e+11 977980646.5 1036811914 959264989.8 1030744746 959227453.1 995499296.1 985440959.7 853689929 1016300322 1002229170 933626892.9 979416157.3 593705289.2 567889316.3 743301596.4 563419862.6 525229198.5 646639800.4 522357003.3 784813762.7 627833139.3 672132185.5 707787473.1 559770869.6 545166456.9 641144789 546802554.7 505978706.2 510319814.2 805272000.5 811313125.4 1023693530 714951174.9 878064274.7 780852301.8 780419264.3 813774497.8 801911558.6 711930132.8 684868785.9 711755198.6 738068246 836198394.6 516310859.6 704157452.1 469631437.7 466699447.6 334600211.7 686541233.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 281448078.2 368446552.8 395128339.6 491849792.5 450154667.6 595307810.6 518201892.4 465968898.3 479795041 678504150.5 632076152.9 642219721.8 792166403 943171620.7 857160627.3 1134634537 1081468743 7.174783187e+10 1016723460 1.100709202e+11 941047746.8 1011498586 893395529.7 1007505007 969325382.7 983422440.6 982301315.4 1069579757 1034921616 991882552 992204232.8 933501109 806381452.2 1116092563 717466475.1 667403081.4 669297793.5 879916214 624919043.7 696003403.9 581393933 609612989.9 696142638.3 669088814.9 731151967.2 758498047.9 548278444.7 602369740.7 519313004 588555859.7 564493261.2 579781746.7 706809633.8 703586394.6 648834362.1 855830273 677790284 782603518.5 693187442.1 650426840.7 676115866.7 668686668.4 804106085.2 568898065.7 554529547.7 556843175.1 537234528.5 488760858.7 1.108839695e+11 497820694.5 421640677.4 427995921.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 311174777.6 475149856.3 482067410 478983496.2 439634373.4 477377215.6 593728233.9 614626017.4 589200268.9 658003709.3 637930139.7 608774495.6 1008092776 1048965175 884310890.9 1170606678 944950154.7 934202064 1108523543 981867329.2 1151687451 944284675.7 1035315300 1163319836 1061305606 1096033993 959548056.1 984444050.6 1019611819 848285716.9 1049668158 959167633.3 947023549.3 965366822.7 705246864.6 647714324.3 654694685.2 659228179.8 532113351.2 549652611.9 645340517.2 624036194.2 634215898 547642071.1 557599032.6 666052209.6 662993531.6 596992254 613476126.2 546260737.2 584967965.3 545361136 551138472.6 648713486.8 845600443.3 774914428.7 805758112.7 730446972.4 881651697.4 771258566.8 795752352.8 664296507.3 733898562.5 568380467.6 709712767.2 559856410.2 566803914.1 365837567.7 530216666.3 455118775.5 349259486.3 394593283.2 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 679122122.3 374519145.6 1137572828 574606228.1 479299259.9 643505633.6 521190027.5 467438136.6 535943109.3 655300438.2 568034365.4 598099289.4 974437348.5 982411483.9 1117839888 1128311475 7.801655343e+10 1146907223 988370042.1 1033837241 1050060463 934885776.3 979087256.5 931605796.5 935944338.8 997886642.2 887467555.4 993855290.7 1006390669 1052218929 954334273.1 918013972.6 926566279.9 756951848.1 700163789.9 593972756.4 653300511.8 615739973.8 500329208.9 644181741 548299017.6 554141547.6 977391872.9 627360559.3 544513804.4 778424309 745930933.3 604502414 896330161.7 574175180.9 5.080780258e+10 585887235.4 543824237.9 820238292.6 734778912 3.96835178e+10 867246468.6 792382807.8 696173893 701705095.9 711333372.1 667710275.9 945295494.6 643311884.4 573037040.7 978839472.7 634140668.3 536049926.3 507512123.4 519278455.8 381234888.2 487975814.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 258154788.1 373994090.9 507488782.4 516560765.8 412420284.9 433804895.5 521900151.5 428091616.4 512695245.9 657521157.9 650126413.8 477098353.6 726702625.7 1028110298 1065921128 926488365.3 1257331657 1132260804 978904159.6 1030485406 941865949.7 1004022711 996072827.4 1052353058 1040441099 1087711934 967694933.6 1026300998 1077376489 1075200819 1034406328 951866373.5 892001526.5 801034943.2 791176577.9 829012564.4 644106386.3 522890906.1 628818949.8 540055878.6 461972495.2 736669240.8 616999034.3 642041474.5 621304303.1 769855260.1 595956115.2 801152204.6 547729753.6 625760190 583627585.9 596117923 686200538.2 685656004.6 781853106.3 824611173.5 804461225.5 695605767 1061547488 670474338 1900026668 748108776.9 7.833296712e+10 643907361.8 795724548.5 674789855.4 434744727.9 626946787.4 675594999.8 414575086 498947795.1 599777290.2 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 361091029.5 338319768.3 428797343.7 467770166.1 482933561.9 605925518.1 438088108.3 633859426 623835389.6 660081436.6 585067667.9 672130804.1 635833711.2 1004903972 1189603593 1002506882 968972031.7 1209085108 1124677215 1117114521 1402010203 1072578172 980428764.8 986513336.5 1.0568875e+11 1037095117 992892143.5 1135070602 935283791.5 1099831296 7.80187278e+10 1103839343 931050037.7 901477927.3 938863825.8 856059552.9 720764480 598056885.9 569240928.1 663769055.3 666355888.8 576833923.4 698782444.1 613232615.7 571846213.7 856106433.7 540387632.8 6.985156693e+10 726739369.2 637747417.1 550262998.3 589962820 589615894 682231660.8 735739986.4 803957073.4 908123127.2 714031218.8 802737326.6 930835475.2 750163285.3 661408993.3 632213787.9 726792577.7 748384364.9 540139476.6 385959136.8 610960189.7 487774159.8 506880980.8 595237773.6 763556055.2 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 337349685.6 399347553.1 422179727.3 398691430.1 608849359.6 470138064.1 399256509.3 580247774 485624920.1 544003449.5 685839833.4 717307492.5 1075215507 871210024.5 761112625.2 996236215.6 1145706696 997579272.2 936565330 1051649046 972283152.3 1045278470 966769114.9 866489267.1 1120491787 827769764.1 1281461799 887942671.2 1102411510 1016881888 1141517600 994095408.1 1019473287 922733807.9 634180908.9 761549982.4 910461193.2 857758438.5 674897169 507944039 741427735.1 684603620.1 651479640 779488969.9 793206835.4 586862236.7 774783754.7 623662290.3 648139936.9 641918210.9 575325800 688874773.3 712865496.6 1045472214 712189357.6 961465498.2 706600864.4 731728193.8 647117096 805230791.2 754799366.2 839753760.5 580668997 707197667.2 577090788.6 572726124.6 505835892.8 652285739.1 577324842.8 483232930.2 521140854.6 767164312 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 328243605.9 753501907.1 542141133.9 395064413.9 392764899.5 435564801.2 410583846.1 354899795.7 549058315.1 614005167.8 630322482.5 416551486.1 703105765.9 604234687.7 557035097.4 576406610.3 683056627.9 503795492.5 734770821.1 587503234.1 513820145.5 504980479.8 822785249.2 525457708.5 632301053.5 430747130.7 451806035 632336396.2 593028107.3 592100566.2 591268659.2 423501099.9 544340734.1 594872036.5 674354378.2 606944966.8 444903235.5 427712612.5 646476865.6 914556315.6 498653235.3 525323195.9 489306632.5 432810446.3 545539966 489655319 759714367 502072914.6 562875555.5 528392658.1 645582482.1 487947308.2 446037217.2 697648171.9 490564865.7 473393142 451077632.7 381652786.5 418685739 474468709.5 424389613.9 480485222.1 459463181.3 455757786.2 527450036.4 406762393.4 338908254.8 328216218.2 530473217.6 463029761.4 315495198.4 389058368.9 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 364841179.4 239868021.6 362979270.6 301035432.2 347068197.4 561133601.2 356188383.6 645110551.2 461773965.1 523267592.2 387689394.9 297609636.8 301711561.1 332969370.6 541117281.4 324669601.8 322277916.4 287510639.1 397565233 455255698.2 335257493.6 462851981.5 347516174.6 526630542.4 261272235.1 455456022.8 231780056.6 388780269.6 2046121727 383230002.3 238218096 332485069.3 309224514.5 304722617.3 436403712.1 405543269.4 354764026.6 483712976.9 247345733.5 458844985.2 450212651.1 265350807.5 463159774.2 336795836 824559229.7 349481732.7 441302347.8 603305636.1 204747904.6 222443596.1 350582373.7 248229748.8 445121634.8 352530821.9 209309985.7 665505666.8 465752297.1 209733597.6 515847253.9 370173916.6 431523362.5 335836949.1 325633976.2 346530881.4 355973596.9 272858650.7 221167806.7 384813280.7 272705437.7 228669266.3 303683701.1 260726894.6 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 137114768.4 172896905.3 358296492.3 221068302.9 281381914.3 403390366.6 217331493.8 411736221.3 216568319.3 201975466.2 989505365.5 289472600.5 264512602.1 320430996.2 199379178.6 179893990.8 345134885.3 225242530.3 187430543.6 367002325.6 302024990.7 518600204.2 339193525.3 222289814.8 230326542 263874742.2 187624004.7 226063670.7 371895247.1 282279704.4 295506387.2 335366788.9 276144528.4 292294135.1 293947516 253240341.2 184117370.2 246094186 283025165.1 225717492.6 220867132.2 233103891.7 274462547.7 338482619 187771573.8 258077054.5 159094887.9 360601645.1 140171341.1 225518242.2 167644390.7 266878383 144903362.6 169059034.6 90514212.3 205588236.4 135087474.3 310349716.5 218820818.7 226810443.9 272157436 255060331.9 185408087.4 125402558.6 145210961.4 233119641.9 157775914.3 131308127.5 165071050.5 200257419.8 197173232.5 138904000.8 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 137150200.2 254910278.4 368078225.4 127800637.1 101369082.8 223079216.6 163033110.8 350175554 131259650.4 117788270.1 186437475.4 87149101.63 99411980.86 83870145.71 302860513.2 184225005 106429092.4 200807253.2 274450288.5 131521636.1 186044817.7 220536752 202095418.3 114598070 182050781.7 94616617.82 106077207.9 284748389.1 83806358.56 94394298.07 128820714.1 138534292.8 209826289.4 87813717.46 94550743.65 90614778.95 151455747.6 260702701.9 241650255.4 158381321.7 200223408.4 174688123.7 184187042.8 144203781.7 107202990.4 125139771.2 791328895.7 172600480.8 165072764.4 135305629.3 106037144.3 177281477.1 140072267.7 149978611.9 42658641.1 83339380.89 88566468.05 170785838.2 155551372.7 90031997.06 193725387.7 171973298.2 71246227.38 53224591.76 133376162.7 206763598 171156261.7 388706272.5 86143083.45 201770959.6 90894900.61 155645884.9 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [PSD_Backtrace/PSD_Backtrace.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6854 6716 6662 6646 6719 6522 6553 6501 6509 6519 6414 6434 6317 6293 6271 6176 6202 6343 6029 6212 6142 6187 6063 5838 6169 5877 5931 6068 5860 6007 5851 5924 6074 6162 6127 5974 5928 6043 6097 5921 5860 5672 5712 5700 5577 5424 5506 5459 5490 5391 5321 5143 5183 5014 5195 4962 4972 4833 4791 4803 4608 4592 4419 4490 4534 4348 4166 4119 4187 4082 3967 3894 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11310 11623 11508 11342 11317 10944 11072 10877 10578 10665 10252 10025 9484 9234 8871 8820 8915 8903 8830 8963 8855 8912 8987 8807 8871 8914 9130 8918 8882 8868 9113 8858 8947 8833 8617 8675 8756 8372 8032 7839 8179 8083 8101 7950 7845 7905 7619 7640 7611 7503 7614 7239 7110 7092 6973 6788 6924 6796 6687 6605 6513 6390 6477 6316 6206 6129 6060 5852 5988 5733 5385 5433 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 13372 13594 13845 14196 14196 14180 14445 14157 14034 13911 13805 14045 13727 13613 13382 12842 12446 12244 11831 11944 11794 11539 11436 11681 11523 11593 11836 11706 11678 11563 11895 11801 11986 12511 12606 13021 12716 12334 11999 11575 11660 11559 11314 11352 11077 11250 11182 11013 10716 10681 10715 10670 10516 10368 10141 10302 10145 10023 10107 9767 9599 9726 9684 9484 9357 9150 9128 9157 8872 8761 8439 8417 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 12240 12726 13106 13397 13279 13235 13323 13133 12990 13245 13361 13224 12751 12443 11524 10671 9314 8210 7570 7418 7186 7306 7227 7122 7298 7280 7288 7378 7459 7517 7524 8052 9015 10527 11980 13187 13696 13972 13632 13325 12921 12679 12537 12187 12196 12159 11989 11942 11825 11746 12058 11787 11764 11442 11327 11365 11238 11151 10782 10971 10647 10525 10550 10399 10198 10306 9970 10021 9735 9259 8947 8777 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 10786 11145 11542 11534 11681 11884 11806 11577 11519 12020 12392 12450 11852 10557 10091 8554 7021 5348 4490 4291 4530 4485 4435 4487 4649 4480 4602 4713 4651 4634 4721 5285 6547 8330 9966 11417 12109 12761 12428 11728 10773 10041 10081 10068 9639 9544 9366 9312 9332 9404 9622 9678 9655 9195 9140 9234 9070 9206 8977 8960 8903 8902 8616 8594 8486 8376 8432 8274 7834 7802 7422 7073 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9322 9760 10082 10077 10110 10218 10304 10045 10154 10503 11204 11778 10874 10220 9407 7853 6055 4424 3548 3661 3777 3846 3741 3789 3799 3906 3836 3875 3958 3858 3775 4206 5360 7217 9049 10693 11999 12634 12482 11927 10618 10114 9980 9746 9424 9431 9165 9080 8955 9109 9269 9460 9179 9028 8829 8975 8928 8781 8560 8474 8289 8264 7986 7876 7470 7487 7261 6972 6743 6368 5884 5795 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8168 8256 8756 8822 8961 8951 9050 8705 8999 9586 10300 10419 9637 8653 7981 6810 5039 3378 2756 2736 2863 3042 2956 2970 2930 3013 3127 2982 2862 2772 2733 3053 4192 6389 8470 10489 11704 12575 12697 11798 11086 10347 10123 9917 9801 9352 9292 9076 8938 9100 9265 9346 9257 8955 8936 9084 8833 8925 8820 8618 8472 8328 8043 7816 7530 7245 7029 6916 6614 6263 5936 5536 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7580 7966 7992 8074 8409 8385 8318 8253 8313 8950 9661 9602 8794 7887 7172 6034 4211 2778 1991 2021 2199 2242 2291 2245 2281 2228 2145 2203 2231 2009 1864 2361 3623 5529 7925 10174 11557 12087 12388 11677 11009 10080 9954 9591 9542 9335 9108 8835 8568 8814 8975 9107 8902 8809 8631 8666 8743 8442 8583 8406 8335 8260 8024 7686 7657 7390 7125 6819 6678 6176 5919 5459 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7615 7600 7868 7855 7823 8322 8372 8341 8207 9170 9397 9518 8657 7956 7142 5778 4176 2600 1868 2011 2046 2190 2118 2100 2115 2112 2053 2096 2045 1956 1800 2259 3461 5648 7928 10012 11383 12288 12264 11926 10894 9882 9609 9545 9444 9400 8813 8842 8431 8537 8617 8835 8784 8843 8399 8771 8709 8696 8496 8235 8232 7964 7887 7679 7273 7095 7088 6763 6343 6033 5867 5303 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7458 7663 7838 7899 8130 8257 8391 8064 8117 8751 9413 9316 8581 7683 7151 5933 4001 2593 1891 1893 2112 2134 2085 2140 2091 2148 2044 2066 2025 1849 1741 2228 3587 5731 8044 10325 11464 12166 12355 11739 10962 9878 9562 9524 9399 9244 8933 8840 8532 8485 8621 8596 8665 8309 8550 8620 8607 8520 8489 8331 8146 8252 7835 7764 7345 7204 6973 6653 6440 6038 5833 5416 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7819 7731 7721 8132 8076 8198 8235 8133 7964 8936 9609 9658 8535 7823 7046 5982 4131 2708 1924 1999 2170 2205 2190 2159 2122 2128 2130 2161 2054 1841 1864 2245 3552 5712 7922 10135 11459 12225 12410 11875 10832 10072 9725 9710 9474 9121 9081 8671 8492 8503 8812 8986 8695 8766 8246 8767 8723 8499 8564 8415 8328 8064 7957 7665 7491 7128 6891 6815 6401 6234 5745 5428 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8022 7904 8306 8664 8535 8662 8611 8497 8523 9159 9901 10117 9206 8363 7653 6474 4674 3273 2523 2447 2651 2734 2774 2769 2728 2802 2644 2830 2689 2569 2431 2923 4152 6143 8329 10544 11735 12386 12656 12014 11063 10394 10007 10027 9611 9560 9239 8860 8877 8739 9041 9314 9354 8758 8932 8899 8766 8515 8836 8538 8267 8165 8084 7747 7508 7328 7086 6866 6596 6327 6072 5584 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9059 9345 9667 9480 9633 9964 9956 9827 9622 10302 11000 11457 10669 9793 9089 7723 5704 4399 3724 3565 3713 3737 3840 3757 3822 3787 3902 3755 3796 3606 3571 4087 5272 7035 9074 11062 11675 12674 12551 12144 11042 10192 10185 10076 9767 9307 9013 8965 8808 9047 9282 9511 9303 8914 8850 8940 8889 8864 8718 8469 8373 8262 8058 7783 7564 7286 7139 7042 6735 6393 6048 5551 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 10471 10798 11082 11031 11248 11436 11164 10958 11208 11699 12454 12353 11700 10678 9830 8447 6488 5097 4313 4152 4206 4180 4261 4271 4441 4419 4456 4437 4401 4427 4544 5179 6125 8007 9694 11174 11873 12053 12111 11372 10239 9722 9627 9379 9164 9034 8868 8514 8479 8608 8927 8977 8676 8487 8494 8465 8442 8573 8328 8359 8285 8357 8190 7955 7855 7859 7907 7718 7629 7358 6962 6647 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11916 12433 12391 12625 12725 12903 12656 12613 12602 12836 12776 13170 12013 11513 10727 9496 8098 7111 6301 6180 5968 5934 5967 6058 5893 6032 6090 6259 6218 6339 6354 6958 8011 9508 10674 11602 12420 13066 12726 12332 11685 11514 11471 11499 11153 10954 10828 10794 10690 10663 10835 10829 10521 10570 10599 10375 10605 10346 10304 10455 10275 10323 10053 9747 9767 9708 9687 9736 9430 9250 8755 8574 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 12135 12405 12541 12493 12587 12643 12558 12329 12497 12474 12209 12295 11752 11796 11608 11364 10913 10674 10278 10416 10016 10067 10166 10102 10267 10084 9949 10121 10046 10002 10251 10291 10669 10699 10944 10880 11054 10947 10669 10554 10487 10444 10369 10343 10227 9888 10150 9956 9728 9646 9614 9842 9363 9710 9501 9366 9173 9247 9211 9166 9037 9074 8932 8640 8795 8407 8410 8348 8210 8017 8136 7866 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11342 11701 11588 11646 11439 11446 11194 11198 10987 10722 10517 10449 9524 9064 9045 8993 9023 8865 9009 9059 8859 8911 8872 8924 8901 9018 8954 8889 8986 8879 8883 8899 8854 8659 8631 8408 8319 8095 8239 8005 7929 7898 8080 7886 7822 7728 7521 7695 7366 7405 7432 7452 7324 7149 7114 7008 7080 6914 6991 6785 6699 6587 6538 6543 6329 6190 6248 6048 5962 5758 5820 5771 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8601 8777 8476 8395 8135 7895 7944 7889 7502 7650 7277 7115 6688 6613 6611 6565 6651 6778 6621 6601 6530 6689 6576 6497 6701 6769 6609 6581 6543 6671 6737 6688 6671 6589 6586 6536 6253 6345 6461 6406 6440 6265 6245 6318 5950 6082 6083 6020 5975 5816 5836 5879 5732 5622 5542 5382 5436 5370 5325 5306 5354 5141 5132 5037 4874 4765 4761 4805 4755 4535 4452 4523 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/PSD_cut.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/PSD_cut.dat new file mode 100644 index 0000000000..402aad3ece --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/PSD_cut.dat @@ -0,0 +1,333 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: PSD_cut +# position: 1.69078 0 -1.24822 +# title: PSD monitor +# Ncount: 153447624 +# filename: PSD_cut.dat +# statistics: X0=0.03847; dX=0.288102; Y0=0.00841529; dY=0.277816; +# signal: Min=0.442238; Max=2.55939e+10; Mean=3.35587e+07; +# values: 2.71826e+11 2.66571e+10 690731 +# xvar: X +# yvar: Y +# xlabel: X position [cm] +# ylabel: Y position [cm] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.5 0.5 -0.5 0.5 +# variables: I I_err N +# Data [PSD_cut/PSD_cut.dat] I: +22207982.55 143947413.2 4340272.014 57010841.42 2509.066877 57389145.87 2785248.478 139517.8881 11252069.01 8831497.277 12004648.02 27106496.7 853587.1534 2840774.069 4688030.896 30310747.42 174427.4881 18157531.53 190534.1887 6433653.705 559080.8792 2871202.177 42531925.96 26703674.33 53802740.3 6021240.12 8143.790053 19955162.93 53447908.79 10305509.94 72584583.95 8212487.335 101683032.7 29367051.02 4434445.84 343709.7259 26206633.52 24668050.53 1366453.236 4671.867596 4619954.65 1959800.041 34950503.03 57072657.33 23935228.11 47165070.99 14268443.01 52905414.36 4921337.834 3863151.934 43608450.97 15643236.6 52464616.64 86240755.57 18339248.83 7437314.444 975046.4033 669428.1617 793908.5816 1155985.524 119779595.6 17484917.18 12631597.88 132441.2471 542268.9594 74368139.3 5972234.421 50394974.12 0.4422375846 47729565.22 53887382.84 26453402.23 38018282.8 2001185.634 28868948.58 1390650.726 46042414.54 18243879.22 4164159.886 70381.94595 63609213.34 65023654.37 441301.1029 24650030.62 26486586.19 32739708.65 39739541.65 1779612.574 1023460.925 6996001.561 +14773819.59 123310.2564 86065.09911 16057126.52 24036210.11 32482750.39 2986433.011 38092614.17 22131384.87 76622947.87 155752035.5 14430552.53 11530896.38 126248700 1800037.304 539341.8001 18566436.22 96977.42582 12924712.36 45850690.4 48882610.32 13435034.78 13715.88424 16162160.12 5945343.287 12056239.6 991.7651319 1367570.72 17453536.23 16800291.79 51909.14154 5093976.936 26336411.09 3674694.107 6545703.106 111624544 23054053.42 74959793.53 1127832.4 139279254.5 53154495.03 160118570.4 228362117.8 15373716.36 72517.04094 10991229.46 32219039.69 21434709.86 70485111.2 10272833.17 17840032.47 1476459.262 9904 6206812.045 17911098.12 23374.17747 14211855.18 9028.363782 16421140.71 778202.7901 35283360.28 17182957.36 1866046.412 944666.2632 9510445.762 20828578.77 11301638.4 272154.9063 4426833.2 29562740.33 14202.97733 7185699.813 40917152.09 130343231 18079939.97 24615346.04 65735488.89 8906168.805 298621.8973 58888392.8 45000049.05 13487040.79 9780705.685 35875753.47 86804.38406 222507.2696 18175889.41 65304964.48 4913734.489 21203790.29 +191994280.8 61490691.69 16245942.5 12736.85917 439246.4564 7200251.858 21237662.73 250802030.2 28196539.46 283281.4019 23314770.22 400301958.4 2029493.106 33649360.47 21372202.97 32506859.79 7879276.719 24980323.91 7012159.182 1243527.862 11522476.15 18411661.53 14471817.68 1456342.277 66428515.98 8564475.258 243546.3894 10547876.94 6008148.442 10095046.51 2487688.711 2957.070612 2268464.909 1216723.391 18740945.23 2859060.519 3575943.987 129470503.1 35618896.33 2478739256 10760384.71 24207298.69 44902650.59 661.0436176 14297105.61 5861031.052 1220168.83 8030950.056 17413635.94 48322783.15 8606067.409 2473403.538 132247067.3 122872602.9 29995227.77 31398801.48 3261.331281 111922107.8 64097888.08 12336134.83 37074.0858 7347382.662 3402196.1 15938498.91 3806.318463 68523930.99 26415741.01 667015772.1 2737264.889 1543715.006 2389339066 946.8842617 42243.87892 95852169.13 6054963.448 829367.0997 74080423.42 52327648.98 90178188.05 89978861.09 49021171.51 155875.0631 36547675.46 1162777.509 12654441.6 129216.745 8330873.036 3542853.028 94829.97654 18271.71816 +3115338.699 9685682.534 305291180.2 28623.68421 82681127.07 102180585.8 7423188.128 64492636.64 2769563.401 7461614.061 33438217.41 6014755.403 1404432.082 24282935.28 3752674.562 5090003.658 55121385.95 279283.9751 2043564.562 7148324.826 76314618.14 616964.733 29154553.73 12779599.56 8552526.12 230342497.7 4816801.881 232658.112 27954959.64 896855.7664 30368.91068 16295164.23 10476940.45 53824807.18 27222.08076 417954.1296 16203155.84 11089188.1 8761638.524 53722479.84 38865554.57 3711038.177 6147122.848 18294386.85 27901998.96 6536031.923 35789129.55 522070.301 10869809.38 46892930.8 249749.7582 20837182 5819314.394 107148403 1797078.427 180214.3458 1193461.555 6172.292409 10527847.85 148682965 23472.20925 77024352.75 136865.5645 71471.72587 711460.0047 76906227.74 139969.0165 7226509.335 4929812.925 72635782.05 48290716.29 37152112.21 27025213.34 1391.809193 15580957.63 9636981.892 1314020.104 36734049.51 149848.5973 9621921.987 2468073.155 2663092.214 143544.1512 7407029.778 14435.5545 33018.56775 44917161.7 11576279.43 9592441.958 4951958.192 +3957706.189 297323.7648 4792672.62 6979799.609 2946503.082 20483934.29 24973964.96 22557016.64 15605956.93 570166.0833 44596.31913 31233010.38 6659649.422 74293656.45 13819517.43 2155551.69 500.9736089 16843241.7 201173635.3 2585031.94 25378145.89 3441266.362 23562021.94 53824315.67 8410780.74 1218.853243 4368205.685 2143805.734 502690.0532 66439866.42 37173305.22 3318524.216 9251740.862 14050452.28 7375630.225 40183479.95 4437104.259 16360465.96 6673078.811 91126.00502 60808748.4 3468518.697 10865.07173 7093904.17 30826420.5 198786974.3 5359144.234 103268.6539 1855286.049 10399.89969 71499523.68 4354496.531 6191193.28 3162758.804 3796331.977 14809103.21 4121134.213 2131357.683 588388038.6 47042141.37 2332043.584 17513685.38 530514.8481 340837.4798 2928175.5 5653178.323 11745.92104 591586.9099 198706.2465 1720178.603 23456567.09 3105164.305 185764.0884 17226714.86 14074426.99 30555245.59 2270555.93 5134190.954 94043076.3 2578706.899 13583523.78 145000077.2 1106.576671 133792284.7 7829241.181 1489040.467 58399030.94 656376.8277 17566342.25 120364602.3 +642938.4445 3247406.401 238766978.3 6189000.991 16633587.64 3627979.105 43334815.77 73438649.04 28639.41462 2180690.914 4305673.932 7643050.741 409634837.8 587270.0977 1705640.549 519227.2816 79849288.52 20309716.06 10464855.31 25489526.82 10406326.96 6459186.184 6779978.358 106283.1891 11514604.04 18930591.55 1544819.53 11112740.1 263159.1043 9113.568324 36303.36573 291925.395 197582930.7 14031757.33 62808145.89 1163515.7 274402.7047 29102829.68 657089.4637 9205573.993 12428934.28 11913600.93 777.2273472 3610510.533 6181469.963 29920903.94 49598928.45 2678833.706 848164.2285 3893987.782 15833058.58 46127684.29 16445921.74 2706219.359 46024910.46 8788104.387 13478407.51 45624124.74 42798005.74 368.7660542 40929826.96 781161.7431 12876768.32 773971.8087 54962670.62 5610756.896 58502850.42 11158039.43 2866429.426 7844425.473 670812.1962 11371608.32 12526794.54 123383.3362 407813.9278 28499174.41 718719.5086 81294994.52 3379887.076 2552351.95 80521.27082 28314356.43 4077053.708 2722.75285 6442019.438 25209.95595 22600.55755 102338332.8 11609631.39 2219931.231 +303780495.5 26886214.68 331115.4535 34043332.02 645296.5903 88764.47644 48279758.61 65011865.54 9597376.142 143502374.1 84080731.58 74207323.94 6812720.077 30493123.63 7283728.697 231669728.3 195887.7369 26126320.74 82343247.55 6895.59994 4483575.454 22400590.02 88358601.15 13873630.9 17034856.13 1246021.26 14763472.81 6715670.162 6978285.343 5025442.915 449364.8225 22632089.87 1091249.676 15208017.76 3254839.383 1092.723253 29201198.3 27139172.32 1476625.21 775463.5034 1517382.727 6523514.241 44552632.43 18240540.17 14488716.13 38458447.05 59170390.8 27887023.31 85698.5844 984.1274665 24101812.62 103882428.8 29235787.06 25152227.78 18937.55967 13251681.46 5527196.089 14218415.38 580603.6513 84898358.19 79994158.79 12295.61403 1536441.407 88453968.56 402063.5985 8439701.416 297357.3159 151709.6568 814496.2625 16895.19879 1184.997448 53557.72998 27936743.57 39672069.37 17930495.93 14421.73117 4125363.077 3351059.965 501818.3105 7043150.193 36097235.7 5305370.885 1843089.548 92149254.94 516.5737734 4125.145514 112953870.9 57519302.6 1795984.581 148176.2856 +65660.66883 18611624.01 72376806.67 373626.7678 506467.2606 10282.48733 8932.703696 41547515.58 528232.5549 302258.4758 2659993.793 47821774.37 10459679.53 669979.8726 3751383.489 1782646.869 7032749.677 34.54947398 51683197.98 24513112 109222528.7 18163032.52 4390694.336 12112617.44 4570713.625 30212933.94 22515258.33 863099.5703 25169557.92 948489.3965 4717619.656 3189549.609 57356440.6 116634976.5 2593899.594 10591254.8 6888860.343 1580502.432 16486769.63 17481124.09 1094754.283 1250032.34 28090.86273 6949647.881 2297322.653 10375809.09 31351039.3 10028140.48 160165.1193 8160.309128 76854216.68 12905724.39 71882.23053 62418726.42 8053408.142 22990331.45 11353650.55 1134347.811 20209040.69 7141229.314 580.0215382 4318600.401 138744.8469 285399.2052 28225812.49 19412.71195 12882259.82 238889.8657 27382174.38 3814205.488 44667088.2 1301743.509 158662593.9 7846891.212 256977.5895 16103928.07 6127834.872 9874259.548 15326319.82 19620.59878 2237323.559 45898483.47 2522426.784 41223602.73 5010162.511 46862489.62 402560.8212 41826679.95 165228.3509 8295907.636 +564122.8999 2127845.454 464985.1641 11423775.09 5840046.148 273956.4558 6891080.153 3395344.478 10214878.41 17601039.58 20102.73393 3527291.257 1889647.382 71026789.82 97117110.32 51047036.06 5573727.159 978678.9367 194551578.4 351529.2833 24092879.39 65179360.62 37422493.92 573282.4073 311774.1869 6174693.199 154275629.8 26770122.94 11553744.63 851175.4268 423316.1165 116876304.3 2197100.079 6975562.27 758572.0459 12221881.7 25081504.15 15953430.64 18406577.47 1529785.662 345385.8454 67867161.49 30986660.79 12218688.6 12475707.61 4718039.829 3665380.402 38673410.83 13769461.5 3823515.584 1111003.232 104582119.2 17667545.43 15020174.24 1832207.91 1372511.527 13233972.34 2564479.591 73162031.42 271734.4441 199376.404 19579330.31 40639486.52 2150559.775 217555.3217 164892416.8 40700568.94 8207749.843 480522.0867 1447165.83 32219689.4 370.6140938 3884155.936 35696674.47 42732.64575 114211042.2 10605.59965 17624929.01 14626039.05 26103539.36 332411787.2 32260745.01 7170812.764 25590401.42 741137.6845 3917.69194 851386.7502 12053621.61 28793464.01 8160522.217 +25039438.86 1591547.078 115053306 46969461.73 2725816.52 1047420.219 17600529.27 5758321.935 13424481.23 34621.27642 90949146.7 714150.8754 14940142.6 35807036.77 23164030.92 2229628.878 49152181.64 271918.1372 18723552.8 876187.5723 11223583.52 13876461.74 139987687.7 82729822.54 62866589.37 2282236.437 24907259.34 24564.16712 3538.802222 21474305.83 557534.3131 14118712.47 163068.8789 359015.7876 1058.102903 8417627.023 8635790.063 500162.2693 15582831.71 990717.5137 259586.4135 251814.9631 44837463.23 52647777.37 297778.234 132360.4644 2213629.751 64475296.73 186113296.2 626431.0468 8735427.975 91781458.53 110349740.4 27587586.16 67114426.06 18888758.27 52890629.83 5936321.629 108440950.5 1540763.225 2331853.741 2236640.506 2999983.728 1205162.108 2384794.049 33990882.09 12712866.99 47953659.9 19829729.37 5540347.179 86832903.13 32660520.35 16263058.49 6709278.594 538205.2623 2351985.138 2774287.037 4.668877757 5160662.772 4813.990229 38002995.93 2885512.269 58380274.02 234020.8654 8668100.071 434360.7562 153407178.6 20759815.9 52779980.56 263462935.8 +19757.41687 4150544.149 2212926.029 28324464.14 193945.691 230599.205 22440963.29 57022305.9 116316.775 44632373.51 6337301.456 26979138.83 22724917.79 87381813.61 11507122.9 10817377.36 86433.66384 2365.062313 9102450.358 96411944.8 1346761.487 4382267.161 12988013.14 27837042.14 13342017.24 93873291.59 1558179.039 148129438.8 38585287.22 45191327.54 4743825.309 6348642.663 12332635.85 9834430.945 88141519.13 328126.1604 6473382.932 5516139.52 3963.12404 74979840.52 52040268.52 13366821.31 20760.67184 21594198.51 36050113.62 5059905.917 76504.03745 41135175.11 11463741.31 35762969.44 392570.5192 6961920.93 138061678.1 220176.0828 2765739.78 13650962.74 53693480.81 6990894.379 7374086.032 74148334.27 3454076.655 70163454.77 500315.5466 14151395.57 63818790.96 5899208.107 6987598.47 22242275.51 76017.17195 2462887.772 3146188.389 118364859.2 37356913.82 47643155.27 10398667.85 35969239.99 12891223.51 9137896.43 3341449.369 5579784.533 41273674.62 287984528.1 23674533.48 50325275.61 129340.125 510462470.4 11817713.1 1450052.641 12939269 15264401.67 +26432362.47 50.43102275 1316188.769 927.9152229 55207487.55 13207540.71 29077891.42 7339926.965 5007140.324 7888363.217 49066773.7 142479.3504 793253.7557 785284.134 117485402.1 210895934.8 11221107.52 14889716.7 36947007.91 501261.062 2161.655766 154367093.3 23340.32995 1231.279726 1444339.091 72257711.24 4037.302226 24558655.54 12580855.6 668916.5328 18450902.87 26023904.14 448930.1574 56869335.45 1863050.273 1781246.177 10815446.91 50464.64749 2655980.798 80448319.11 164648.2648 38400.15241 2260765.988 11307162.92 23108506.56 34526247.37 66291437.2 3379065.084 15969803.16 10648007.49 358993588.8 5384472.375 75217.43089 36637083.32 3874771.472 18238425.63 477946.7533 162077.2473 4162740.917 6381837.324 313571.9478 56629630.4 3046186.886 163691575.7 1118140.663 9012271.002 25818816.77 5192264.956 53161431.39 28676890.55 23551947.98 12157824.63 644252.2152 6024401.388 110192.7187 11411905.8 2064821.207 825083.4456 20818078.82 12083.20388 3304807.252 18420777 2621928.921 1692149.884 61729509.57 7658676.128 34201828.79 687414.5143 2114430.602 45091024.76 +1297.683459 60312803.79 12285546.41 128558.1713 22747790.96 6774163.068 37675150.44 55308695.31 109986995.5 9566006.154 478558.5938 1706759.056 202180.715 8283435.155 1310080.37 5158013.688 3524.915426 11418238.21 216.0413519 9717.792542 45755434.61 2019061.658 2937130.808 14788979.68 26277570.7 116524833.2 334004.8972 12542374.4 827090.0686 514050.0084 30688711.71 66040192.48 6364404.329 6319881.326 21499070.45 1732019.796 7228916.011 6527218.824 126948.3706 101139.8753 9801936.839 7014320.817 25925477.4 1420061.313 1010212.185 375411.1368 6738677.246 68821725.26 16025575.83 33948511.3 150708267.3 150163169 23507417.01 128.1758338 1559.822019 111310774 45130875.48 22894014.99 54008394.28 401217.7221 14987582.07 672172.6923 21234031.87 63311321.53 25109319.8 2426214.472 36594.44182 71347313.54 20821740.37 31031338.58 101.5096423 28245218.01 1564674.382 12060384.74 1975020.999 3786628.279 8803188.887 5943.853835 7924.054981 641062.9243 31150620.01 42680512.26 328241.7978 216955.6237 58241618.6 218750.855 249166.7246 72895366.3 120072.6332 37072240.5 +123230.9319 4448076.514 31847340.12 9198271.941 63993000.2 14433642.42 64742315.94 498882.6551 57030768.48 5259308.968 4958377.484 385884.128 52487683.22 227841.5813 68403242.61 415753268.4 266458.0785 9255670.787 4590081.012 6568662.778 4836068.479 18936367.94 7776079.143 33443756.72 6019556.799 687757.6662 387996.6447 52947075.66 1625.537176 13988422.14 15269366.72 80710.45568 78955798.92 94911272.49 75072247.27 261950194.9 11744237.84 70835482.88 130933.6264 1784737.646 14991889 10911219.19 21189390.55 27014487.14 14901783.64 24570641.01 4062330.816 5933.91563 3382658.869 42841388.38 520910.6013 23510237.44 6289375.56 5853505.759 4992300.727 523176.1783 932031.3877 12324018.94 13750174.66 8946460.013 548710.6489 6578090.531 2392297.355 10121901.91 477.5099927 4020196.084 2138537.409 918.4223944 1083510.104 7488048.276 6025393.044 13616603.06 12809848.37 143733277.2 1494356.381 8975612.518 96539083.15 582587.9242 7421.629353 11791607.05 67128854.03 183230075.5 48245557.18 35318593.38 113131857.3 41985341.53 2161188.771 427889.1785 5898743.588 1379076.62 +430002.4549 11561631.88 12796209.92 25975702.09 10289139.92 23334210.35 46075676.68 47436.12014 5052.587082 8771504.173 27753986.9 257963780.1 23840497.33 14935671.11 21123454.51 162376.477 62665651.3 9765766.034 7973890.451 56790567.95 169603.3907 106752225.5 2114487.753 96200945.51 26621390.3 51269409.47 414470253.3 27678202.1 2532955.324 35374030.47 76593163.01 52882471.83 91283303.29 15983256.54 36344436.3 6841429.66 4014119.496 33259814.62 100888413.8 1515256.701 28586544.19 8737450.682 70129169.96 224499.2825 2295241.795 751.2940803 950485.6122 24499821.52 20534949.55 2809499.727 22745581.66 29004.02614 40626277.59 2731612.455 85145092.09 48960076.67 20765.13669 940423.4198 70532985.13 561454.7439 5427930.867 1507066.853 5466.601718 36039321.87 5290673.034 5655375.677 197774.5624 29683780.43 55930953.88 479381.4747 267121.6109 2540232.04 28739149.57 25097048.92 1383512.72 14551744.57 136615801.8 13668.24512 6714992.771 1672009.335 74445228.75 2943.386242 3362423.678 93433202.91 9697182.917 27508182.53 23916848.09 8696287.539 45729499.28 712674.488 +86705445.89 20187862.15 58251907.94 25674376.59 69548553.97 3456314.462 442790.6617 1853135.94 43383613.19 22404294.98 4098368.011 324851.5975 43276495.2 1757141.245 1316659.055 2347151.362 3879315.805 36385238.91 1218501.693 10714423.72 31972551.27 342511.0556 2398451.874 4466774.656 45127416.78 13488076.29 11854.1495 611860.4835 22991212.65 23935198.8 77348.80082 4839308.55 3194523.146 21238921.3 7164562.724 54051762.58 25651149.21 28134.04808 142260.7967 1847203.833 259868.4273 3920974.298 275109.0184 12507895.82 62036481.18 11580508.47 19668496.19 3724854.336 70895284.97 37511050.4 14229301.87 4227787.932 34076395.14 126285043.4 22240172.63 442421.1479 430190.9925 104685376.9 47837456.97 76088366.69 1497636.002 8961054.077 2925389.937 3759959.898 17293.37503 54150391.87 9445428.784 20703035.21 10623.73388 86963.20592 14216993.69 22507784.74 14401505.32 74484789.4 73829.18805 1330436.021 18413395.73 157584584 267429.0959 3600.955095 2973514.243 20967456.74 23206313.84 15607850.33 7344197.645 80825340.23 233836859.5 6489378.438 35278.58514 116236822.3 +1081995.643 21242.93556 947861.0002 38803461.12 9283595.936 44109512.22 839094.0784 3919498.193 92470475.94 67371290.53 36421436.41 25794454.31 8920764.918 16754309.39 2655410.434 5530175.328 466592.0306 3608142.454 72189217.9 10004925.19 40192074.74 3343762.381 6288147.566 112908180.6 13357400.9 1861146.914 70028630.28 4968417.179 15353571.26 27833494.62 24265855.9 8965.015078 28416.82009 17800810.97 4915980.435 8241739.901 4279.136261 59882.16225 274832.5382 82320532.39 2602538.077 7626947.718 37768435.87 68991959.91 110300637.7 165308.0158 6814569.358 5176314.68 53010793.09 56398171.39 4908590.194 157707762.4 99600264.03 12249.62884 89002263.24 1041416.573 29878414.88 55131406.26 9622409.033 53252163.91 229690.7577 2797538.263 7024511.112 5488230.417 46276002.83 20120867.07 40113610.01 7930450.573 4585941.325 12332022.29 12491505.88 2027243.515 595944618.7 6239761.334 10754347.49 879406.6553 32864229.56 9267544.986 123941204.6 1076779.566 3683277.832 18311280.9 1750885.466 14732738.21 55687196.4 115961732.3 6880799.188 61347926.46 7700858.693 1842397.5 +1827015.44 22924444.55 27608626.99 3049021.574 1168096.968 1272.508101 56557.11468 50928893.37 140357802.3 56585484.52 6112685.352 46155950.36 3950553.93 3489758.875 7090561.66 4961536.642 1358266.264 32832548.65 5528680.443 325095.0768 58153553.07 38477102.43 46404698.71 45352446.77 8281122.094 52168001.52 21220877.79 16965485.59 900114.4794 4964645.71 84679810.58 2721387.048 184200317.8 5804682.287 27327067.56 13308116.66 5271.230117 20952217.75 14032313.66 25540357.29 479123.8388 148264095.2 34465287.55 381807.2231 7940993.42 1695634.428 19998965.75 2487498.281 1356835.941 1768532.749 8494320.019 31898.40035 27546695.14 1117757.695 31274434.33 28306020.67 17932276.02 273126.84 23594332.16 9676302.281 44654.19317 2086553.844 4850751.708 229302991.9 240234.0319 52526034.77 1947033.168 3099331.431 62992259.68 6535135.522 10076242.13 13792639.83 20042078.77 2079205.402 21050.82933 96943103.48 29778892.91 1518681 20599202.12 8480726.211 40603555.16 134218.1808 1888322.119 555921.4394 9393319.985 3640939.912 45515880.66 5039792.442 1854003.882 741325.5531 +5746728.937 13858145.79 63152096.64 21065046.73 1084787.672 97681.28333 13141833.85 51735508.06 133329.0452 2030787.867 4396593.937 35948934.25 208888.407 233314.3631 48407273.07 28861532.35 59825420.55 401806.2478 1229086.774 3091723.884 139834533.7 4990636.599 844.0667876 58245185.67 3779927.801 336652.0013 14397356.25 607334.4071 45845561.35 18472223.67 278601.994 43401230.82 14968822.86 50896277.57 10918278.48 47912.01328 17695778.89 31834739.42 33702051.57 37843092.99 18802434.15 14969976.68 22757074.27 7087169.123 25355302.53 39939.39082 713044.2856 5752.128971 9815908.842 419410.9518 29251273.45 11318897.7 17634454.13 27868163.17 19620240.64 4964365.219 19254372.06 3468783.467 1396294.244 734746.0943 21238446.04 1098614.252 566929.5631 648506.6592 34033545.51 5719306.009 358211.6872 305474.723 11118185.26 64994975.09 4160003.762 98456.40102 12123325.28 1946485.241 8907970.756 53503543.38 8639.100878 593196.287 16719043.12 42913632.24 53812035.84 499046.9237 27856637.72 9822952.995 6434133.583 1979155.171 5961568.711 22753741.97 2875733.896 106055108.8 +178484694.3 10886360.8 16526306.2 591638.5037 4854685.615 25889046.59 46255458.08 17724591.09 10998985.82 9343698.049 40081441.95 186245.5899 55252980.46 6176933.073 144153230.4 6069733.605 930459.6399 76041421.7 18320628.13 31031.80997 355196.1988 153445.5198 106455.1571 3443790.272 178696366.9 27365809.91 30589189.03 37573.73817 150331864.2 8626159.494 14113100.17 157315551.4 2108992.568 587922.2316 264119.3482 99874428.34 94247.9078 4538919.999 3370402.875 13964874.97 2089925.154 3326105.712 99795.13506 5950.421774 41532.9172 26960540.02 24958801.72 7606677.131 30328.31039 15501977.56 12166853.03 1830873.677 38877133.87 24995300.13 50356090.19 7192210.289 1846967.588 878586.7813 172554907.3 1183350.079 27323613.66 8190845.355 2845058.989 52360988.89 2795717.78 6065171.9 465713.8236 14332328.02 7169370.994 13990476.68 143836533.8 23634257.33 177153.6971 1410285.883 706522.5265 975575.3502 2848092.354 1514885.695 56732393.48 126710.0694 5554971.121 5279.501431 19705146.97 94171.14424 967317.8261 9128.68646 43518433.86 1687346.057 584801.2227 10808874.07 +81607633.22 59741.98928 13700974.15 62309.80291 1532652.09 43850172.2 1652125.563 38959174.02 18472310.62 17179256.7 10098099.76 2897372.224 7506059.858 5919056.556 22765433.29 36601.94284 36463118.51 52370926.76 99404139.33 93611488.91 359600.8318 5553632.262 22764761.71 54679068.55 2390069.96 12202997.08 700007652.5 65518427.06 30276764.93 2925426.164 59910199 2809862.635 198388.6423 848052.1805 18062633.69 28705864.3 12920778.41 1914917.108 60736.09292 35422199.13 79118626.39 40061222.62 536903.9471 37149114.33 954542.3645 11690778.79 1710542.543 72544914.32 8698716.886 166243.886 53183.83532 539194.4565 14968626.12 67258900.77 1094284.143 35452355.5 31331688.31 10268489.49 325056.402 54314785.59 16627288.37 31905.28566 24769473.68 2784.007934 22769661.51 19582414.66 9782.453951 2337556.495 9528226.697 16620428.73 8461.045224 295411.0261 180174.1351 38000851.01 6158158.706 30676.12587 672885.8927 18638203.37 112545114.7 43692166.65 69428033.24 244138.1509 797350.1427 171199767.2 50943252.5 1327027.862 14891028.1 131999512.8 729055.8428 162496.1685 +41727203.15 53106.6533 127970.591 1312988.506 4604114.023 91209.71761 666922.8043 1445645.519 15219282.02 3642799.325 77496021.52 443499.6518 151628648.6 1087382.582 403889.3859 28589236.63 11958.47237 13365820.57 17378447.23 61504815.81 155405564.6 16813.12745 9770.770711 4265964.661 60489.69313 25035769.98 43504284.2 11387750.77 38495964.44 34903559.63 47432771.14 25457002.19 108042866.4 9307960.179 8472955.381 14635750.54 1915468.478 630234.8147 1252638.962 20367776.92 161935327.7 161421.7612 30344.95567 39997.5246 37599159.98 172489.8655 14569640.46 15997849.92 10354817.94 103022.0367 1216091.851 166909.3242 6497350.066 27807726.3 78198501.89 23138.77174 13498940.26 27525576.62 3200145.961 223720.902 28378981.49 34779772.96 175028.6926 68852278.85 35685507.84 6374766.155 17575106.78 4061154.988 20431812.58 4757465.487 39496816.75 65007162.47 26342189.23 151593629.7 48525161.71 10675.33423 9675.413204 116595.5293 161747123.8 16688.47717 88747862.74 46229559 73696109.64 5799890.051 577797.281 32659253.52 76007343.35 381926.3372 86610.36995 4863880.464 +19221715.43 456265.3818 21599057.69 33906557.91 3432808.592 15864182.82 68034.6862 202236939.9 23348206.74 7157854.292 1607361.25 24204723.19 24637668.7 16901799.75 803774.8554 851868.1792 16328703.39 7748538.284 47304.61715 5746529.791 7598748.79 905.2301464 1277.789763 130432478.3 19344689.38 28336.95817 34533811.95 86814966.78 26.15499581 999875.252 24741894.22 4957939.915 957.287513 6176716.387 7658397.775 115783726 19406932.66 126613563.2 1457310.564 220295.9042 142619638.3 98926039.14 41797116.76 56804168.29 29557270.85 24012695.52 288097632.6 49022576.54 45675163.93 5810561.198 112047795.4 1310388.824 6069250.953 60924539.47 116288947.7 920366.314 38035523.05 13683539.87 2721156.152 942600.7227 56364269.37 77900791.41 120.4890965 58804608.73 275249.4989 1084265.377 82142667.03 494399.6347 19409736.61 207519.4682 82549861.37 31705431.38 4619179.233 72233.2807 52490553.66 14674959.49 302172.2204 65542242.03 1123395.119 111764969.2 13167044.67 56480970.51 62954531.33 49427.79387 1952241.245 8382304.717 8379154.517 14696475.67 252278589.7 7864606.553 +4470.375008 1642016.928 54650458.22 904372.2095 15299033.99 204796.7541 8422013.098 1016502.661 3619715.773 46560876.35 1494843.579 38593600.22 20907800.48 75565710.53 929983.923 40116080.45 68212203.18 4969589.394 113313077.6 16921193.64 70723601.79 2570864.254 8219124.389 22124.78196 27529452.88 6919336.077 159628300.4 46085.961 12907424.88 1097239.98 14723413.86 1654651.548 9328752.157 4389204.65 9519038.156 5307522.134 261898.227 6156869.38 3053350.324 2039158.162 8962867.022 4897363.574 10321329.51 83396038.58 88793592.2 178365.7836 10615713.74 4987827.069 18141042.6 753383.9993 85854499.42 117620.6993 2211694.194 117667.9757 23730962.48 48409029.19 14370965.78 563483.918 39421486.11 9007972.133 214471.2018 1605577.803 639712.0865 947245.7361 116462668.2 51304252.37 8575406.337 798903.8846 1722652.954 21605559.04 53473019.45 49256898.64 67964969.87 5235387.994 2814.273019 1239.098573 93110757.15 260240853.7 9614694.915 22640345.26 7631.936392 3649565.951 52803226.03 27032058.94 6878768.895 1080877.237 13133760.13 61005758.88 23082455.07 648084.2083 +75590.67855 267889.8994 52344601.51 1284490.113 14073738.81 2350140.31 66006660.11 7111815.897 7745514.875 2487980.34 28608036.02 39176602.08 933176.7846 15000113.87 1970.885024 30846649.31 7201953.83 35848.15957 1069371.208 44212655.01 10284954.52 68515967.3 180983179 3976.911605 2226818.256 79738597.43 18906306.65 4752360.238 50695974.25 2415413.637 5321.993142 815961.1303 143621476.8 25065982.4 199143549.7 205555108.5 81698868.51 3071414.08 7051834.84 69401026.29 5274829.245 2006072.811 12731415.14 5211667.452 194.7316551 1056755987 59266117.79 32082404.03 36310505.73 86414016.1 434128.8225 17914284.35 4714051.074 17097.57688 4488842.116 8634005.14 7970501.346 2983895.558 23061087.87 81954811.45 14896702.25 1664326.939 33806819.39 632224.1382 12560169.58 89280580.15 464762.372 37487038.33 22296928.51 192382.5833 156633788.7 4282590.57 55832842.94 40242929.6 2018581.858 7275472.565 77813394.74 55945.80527 68300398.67 1021208.546 42540839.25 35265.21529 535918.6742 47759551.59 9526761.188 13637931.32 5501020.828 3270519.534 62127900.94 195230590.3 +4407548.083 49391986.21 5073707.837 38783264.45 9984231.337 2472665.999 3462337.355 11249757.01 67326.81633 1406328.799 27034471.36 814599.6648 171354086.9 7767835.029 71944.10482 205.2204523 64788.94857 46532185.37 11303989.32 26457475.49 16778011.43 9004105.269 23035.68624 3793080.824 5407715.835 62174.7678 29484339.14 10737456.11 19433420.57 8953147.385 28650651.09 25363996.41 324671.6046 1764416.512 27513425.68 8314.545996 115778338.1 958581.1177 10528711.45 26784572.47 7720837.78 963627.6319 11948.67697 6017988.328 311830.1426 22145362.5 2803127.402 83830622.6 40980783.34 42259296.64 2736545.035 58249649.64 13572789.51 15063368.61 26026568.18 247.2965516 7637958.547 10472164.02 50130.01621 14683497.2 26650920.1 9408.027 194307080.2 6636409.312 43438889.11 191064406.7 2333445.717 5820502.262 4928252.161 53269.15817 3572728.025 1432089.422 656507.3285 2095663.146 41332768.06 15019333.88 3090918.92 16470471.96 275838.262 6566708.424 43795924.2 16804640.69 47541166.83 790005.9777 30622335.49 35183603 42183129.78 768901.9579 7813668.276 13921491.93 +135404979.5 6604128.597 2724579.319 4920868.272 1055325.623 23237656.23 821967.6504 229951433.6 3716944.517 29898036.22 64498.21 15254667.96 91886890.72 16660465.38 28792663.85 7226396.739 10672868.83 130159649.9 30023440.48 5044487.775 24181795.39 1308141.268 5814724.96 15478102.87 2512208.724 11092948.08 36339289.27 5947759.104 21982838.57 443810.2887 45755030.24 7910551.418 86099482.36 112353.1496 3429.147341 76627553.25 18550013.95 730220.7078 135021.0132 15624940.73 68241824.72 32446894.78 759623.348 136763.9695 58649442.02 13955059.57 411884908.5 268.7489324 34305573.27 13896548.05 53704849.07 102411.7179 29963561.54 2144.890384 51856237.51 2136.098666 18228404.37 23228922.25 182210.3317 903525.8968 21055353.42 33871715.85 7930628.171 59848981.06 63303584.36 2787.003204 6833595.884 3501.838111 21119423.27 11834753.79 77130883.61 204141.5951 2757902.443 952810.661 8705174.665 17455086.26 720001.9877 51654839.73 59981.60558 4849598.497 26947062.01 21346798.12 3342697.656 632241.4354 59492684.57 109072737.8 569583.6406 4422964.667 6454077.85 26038159.11 +36830095.72 119383388.4 17297831.37 1567012.423 41927753.78 5110218.603 549431012.5 6839572.57 8866.115675 14212765.55 104452.7266 809706.1232 19121769.15 37496585.1 100812381.7 53249872.48 8422491.666 38826692.95 19271321.87 72617708.55 32082242.92 135975384.7 1999820.761 12516532.2 51810727.94 22614389.29 24004598.83 31140574.85 104029656.1 145637661.5 168726.876 182873591.3 39582266.07 834203.0341 19176492.16 2061702.273 6526988.167 7365.294382 12847623.92 206180.7755 18613953.86 802697.1427 819931.1367 22889622.86 116722.5937 34124687.65 109969.4476 10997789.84 39761260.66 73045.13274 52534014.84 392472.1546 24072233.33 2963633.746 201128.7431 15734606.69 4939628.632 6639695.883 56602111.51 81247625.14 108334095.9 84490668.93 4562287.704 157388.4143 24577776.27 51728513.35 8991857.765 84766.0194 35595424.97 797127.4137 32774149.93 71402916.37 36737534.38 22935932.48 64901018.36 5838843.326 21520634.24 51293910.81 2959455.473 81674286.97 22708902.05 17409911.28 84087972.62 1560254.327 9030001.192 956567.3191 11492159.72 98594.95461 783519.6354 62608613.04 +66084.26055 14235098.02 257652.67 154723518.1 209371317.6 24213636.81 49127431.65 87074640.34 13718667.81 65793729.4 51.52710284 2086178.534 38158884.15 22108804.29 49667210.81 13497485.08 3115296.973 32510950.95 3220251.542 9306248.954 64666427.23 120476737.4 1425190.556 30925645.23 16134440.85 77247150.99 99240822.25 121853232 7194151.865 77178094.4 17543013.46 16411577.61 2527444.585 42565357.45 2352678.995 1293038.472 9157096.195 237790026.2 86285480 104273465.7 31720813.64 12578506.54 8580.62037 89242857.52 12088776.14 16832708.59 8327200.757 200014.6377 460.9427745 112484019.7 80862246.15 234327.2396 84831.98288 14565645.07 3799322.441 131861659.5 135899.0745 690955.7878 249797669.1 14396529.79 18297903.4 221791.7746 22003040.91 16935249.67 26219694.21 23795.55653 30202803.24 102647189.5 11973282.21 1072.998785 126312929.5 27986223.45 3677.223511 920213.5362 74919724.36 59030416.31 52289507.43 168577.1111 1153375.825 95515820.27 52114278.12 42716174.17 27029794.06 209225502.2 10124191.16 13326.90058 8170052.512 31584674.5 70053451.81 232153.8155 +363531.0449 8494997.329 454275.3798 1459.057494 462075.477 14769583.34 1930371.259 695447.8714 21886484.67 77.55571017 12428343.45 9389639.506 28106943.22 12409393.48 16429.3353 62986058.11 170413028.4 3531501.49 72155482.68 1969977.478 57568244.15 119335424.7 34745458.32 17613237.84 3299297.092 100846394.5 16821.49983 989349.317 313384.2142 17670442.79 14234.19617 1945734.22 94371532.05 59645157.52 73759751.33 200495493.4 9705828.429 1193800.197 11457.84198 117329.6611 49081019.91 431.7116255 41680086.05 14386958.95 7221616.024 226257.2099 5987915.587 9794294.851 157300179.9 59277546.38 67860401 37939.91805 35520.29537 36688.77066 43162177.56 155620329 548299.7863 25484757.51 31429.9824 6650750.405 47772598.67 2258713.165 16575348.13 2156772.801 1156032.632 84449944.26 19095066.57 69803514.57 9992.418937 35671256.62 4169.38246 4111629.397 257.603663 189673.8341 3837.122321 15937365.52 5600.480536 22217723.8 26400966.9 1168175.378 91181.70429 2412685.375 31998338.02 93589.07056 17332.22355 16098459.38 82741661.73 1480067.864 290874.7176 15025597.33 +9931553.106 40966328.37 211629581.1 458883.1523 79489191.5 7209978.457 152548726.1 21675.11379 67976479.91 2939552.531 122734.16 32400892.48 11614437.91 9260664.869 19762984.91 26820585.78 19355298.32 7845730.403 4445453.445 1618046.48 1143024.275 8643.956164 15092792.07 2372228.957 585612.4906 4474842.8 99189.25252 100301848.4 23927112.12 275492874.4 52528055.57 18141443.67 36719637.66 819363.5446 28358509.02 142322.3526 2041511.544 2113377.915 37204514.81 50342.28138 65392024.7 575252.8434 57396347.42 11232789.22 1289317.327 25724.59392 142489.9459 32019045.12 844023.1828 38038024.7 38372712.95 52631485.59 54783.47504 23972377.29 10535721.91 51798812.51 1616745.351 15918872.04 7718864.033 1364672.735 4131740.093 11278224.2 1830184.517 168019244 28672444.75 137347.9139 45206938.07 26227424.61 37341153.08 944286.7232 62476692.1 3111.689077 9752107.017 1778499.5 21355165.91 758901.7308 426522.9711 54670319.61 24237.01242 43153224.06 99581.71316 109513747.2 172413.1469 4551847.448 16331129.83 14721507.13 65146012.9 5331082.092 48490196.21 13106685.64 +106220198.4 14762248.27 1769.894906 63348217.16 458373.8532 51186427.2 163787888.3 15092658.67 1631826.389 44858.92412 1101615.996 2191576.07 9791945.596 4211103.474 72932287.56 31551215.83 103180.3759 257044.4247 1007822.298 15145024.73 58033677.8 25320.3265 636478.8154 10333461.63 79293128.3 818867.0186 4376705.754 2140980.07 93388675.5 46671274.22 66812269.19 6107821.082 7886.822976 38326.12904 8640466.862 15909733.36 35264650.31 1024620.773 240070614.6 53397.70005 35967819.9 999540.337 2062760.003 2163774.097 4698046.359 174202976.8 44061190.3 73311.72441 60081371.62 14703932.97 45654.48907 416279.735 6159381.182 98237051.25 850980.2478 6332366.991 1119574.92 88.8860517 24588188.87 12468378.83 6495640.926 68027385.47 1535180.071 26841591.32 2840152.091 83036557.29 208769.8445 43483544.63 42462812.17 45233425.03 1549197.542 16383173.7 288453.5054 12776596.83 53901950.9 20020870.99 87453.84172 3043251.406 33367893.35 46962821.83 2213293.998 11783344.8 1400161.871 3092145.028 20727324.94 829180.6237 66975928.82 30398879.22 10492001.3 4855507.83 +17391921.59 3033046.987 24793887.87 93389103.54 200276916.8 27520809.15 910865.827 1728322.453 4881134.874 1886030.723 8668573.815 121328167.5 9518849.548 24898345.58 34874099.75 31137453.89 40293629.52 89571474.41 326063.9715 13536334.43 3121913.084 130983.1777 6576045.656 55626946.63 35352237.39 34346298.82 9479.126637 85222086.91 295962044.5 13665766.65 3416140.029 15309211.48 2583788.43 9238559.599 14052413.33 11887690.28 60834941.41 24418175.05 184867.6023 72535544.22 9918553.779 8388399.237 3177113.887 710241.7103 57880232.8 27050057.28 123520394.8 2273954.433 6555258.864 24739662.81 95357670.44 90886.64407 1290701.005 40034711.71 15714491.41 2189790.969 43826703.8 10573888.27 1207237.439 10091356.7 23936427.58 97942527.86 11134.45505 24676552.73 2403921.668 1269542.247 31541714.93 16324645.82 24930.39497 638857.9674 27536771.91 393308.4534 496949.5908 2494829.094 866082.5971 4352664.374 27923941.9 32240208.03 14629685.24 55241642.84 119403.4322 9110834.767 1608347.906 32747607.57 9615109.433 6387743.895 8252.285284 273334.352 88781311.32 2281491.103 +5829320.296 1290245.133 3664760.163 49465007.16 1447578.647 5749922.615 9180231.299 54965462.91 7596436.968 36077461.03 9796512.809 690544.6353 236346263.6 687817.492 813798.9472 10965.44101 1720270.884 27033204.42 10865798.67 29471516.54 162227.6572 1630413.269 551760.4398 9219992.972 433226.4652 9627115.386 48521007.78 290071.0947 6261835.525 22037212.24 6124554.808 25523041.83 6205290.125 13266696.63 156007286.6 156629.7531 188962.6465 453684035.9 61862855.71 816366.2808 150414.7987 32186607.84 127084006.7 9484233.642 26077133.42 652447.506 11292858.9 3105588.262 18017430.11 12713597.48 17796001.28 683897.5189 17717241.87 1589569.231 8623.722819 196857685.4 3061285.367 46180146.41 1570807.705 2746944.096 16893489.79 7484408.712 7273377.38 3477016.593 200720.7823 502060.1074 84527398.33 53783847.82 354796.5235 240493732.2 77365864.19 72776384.61 26800096.87 817385.0303 4108310.683 4981222.731 15390713.63 2242931.433 8509770.106 39535832.3 8475075.536 2909396.864 92072844.37 5225275.911 65834231.89 13668395.18 2262584.078 3575042.387 172444.7759 62056021.55 +3317641.633 1201185.463 23234962.68 6985948.01 3086937.785 5380716.858 8273600.012 5931995.734 5599497.467 12169592.94 14741444.77 36429087.32 18998777.65 3943971.781 83609489.62 157424.4231 29358.22445 19618527.49 50255463.98 324476.7494 49430097.92 6921283.698 1328265.642 47361943.12 8347354.309 10410683.8 384473.7878 29320427.99 58693.12306 36042959.37 25546201.56 497613.6659 114802407.5 25198.77892 10360173.74 41144423.58 42311.9001 31413153.14 19548530.32 213918.8804 5088713.398 2296370.792 1022152.665 190036.357 17020720.69 435818288 1490895.297 36709841 43620288.41 750652.6408 5223951.453 43982272.12 278229.1922 4163302.505 19953723.77 38685900.99 167550281.8 69243695.3 8559413.575 75290903.45 11159993.09 91003830.72 716143.2589 3610644.961 172739.1831 981591.9787 26255829.1 11318.70669 154254977.1 11210577.32 124235.674 634.302373 6104.416878 4211671.191 90380128.92 69383789.76 1995057.707 332219950 267932.7441 817270.399 27609.37825 7583954.45 65811.60633 3871800.601 18853.7464 186589.1867 6978457.437 108391270.6 917.4668432 16442183.48 +19213050.2 5567334.313 45454838.95 40790064.24 610136.7377 18910.8415 20972298.26 3261875.11 79676357.35 15569.26821 18539.2189 4489871.931 31482.85782 4106601.728 8565274.099 105137267.4 863008.4793 18920603.56 199459.9613 50019502 68851560.21 147.8924894 7426.808228 8631077.384 1914229535 43437007.48 17612792.36 2947814.446 1194313.881 28091801.41 4527.626974 8233730.593 44324.2286 12714137.59 28514658.88 205416.5498 7424498.467 9969430.476 85520600.94 137069329.5 161233470.7 19292873.7 112471.6612 33342768.14 657472.5396 215225.2516 476582.6319 17360655.43 24085.92162 29935.91459 922359.8023 1341559.037 318556.7137 937844.9992 1244034.996 5527035.815 23029765.05 1264214.385 13611900.47 1882438.392 8315725.276 4700.467321 2359874.446 158.4889286 38209907.34 18300294.44 6861364.875 208601.5641 151034236.8 4723469.733 55674.25665 21034.77521 34964751.33 15599802.05 7483015.167 2248874.259 48103338.82 26757409.1 97450360.25 87757761.11 27377761.3 13629829.1 198.2428505 22588770.09 41002771.46 8299589.044 2736158.625 39253420.53 47170040.95 2426738.314 +11688545.7 13053479.8 7938019.825 49820997.61 12434130.05 102561511.9 37008172.69 1336683.794 28670497.98 9779643.756 1663029.957 1368009.423 162702699.6 28600264.75 45155048.45 564202.1133 18424902.35 34611552.53 27685407.83 4298349.43 4157731.412 18737.2663 50027.85528 728266.901 45112175.35 84445845.43 117702.4854 59224774.37 1204961.257 6509914.549 830897.9603 8514868.904 1500674.247 131359.9303 34917577.66 12154418 6484579.891 33392011.96 31092005.25 17886310.31 15253248.89 3503815.165 646326.6533 13941743.3 1561274.258 56218819.22 553876.5731 23407883.31 11872369.32 5633.116988 2083.690646 37017688.47 219668.3217 80725.83999 20114856.24 36023020.59 393.7186159 103364937.7 47687.339 4457393.679 38657520.52 55113284.32 3308413.399 305.5553958 19604316.71 53912887.79 5106127.71 36256334.97 11824549.18 15556307.01 623867.463 66259208.67 317815.3851 60628013.84 7026817.775 18678872.19 1998179.132 34093.93531 5892870.447 4321016.851 104.0208862 2934833.003 22817251.08 101172546 87064843.2 16409125.3 40582723.83 254653084.7 89150230.47 38727306.65 +66996939.97 7651491.925 25164717.71 22068361.39 771665.0074 267805.6875 1064288.315 1563124.736 510.6678261 14659043.4 2725198.102 8095780.106 54368942.54 87432774.49 50824164.91 550478.1502 104807313.1 149073.4889 38725.69286 40980497 69059664.84 44777840.95 86543227.08 35672788.59 386243.3243 181958320.4 2037711.6 40227.03271 8261906.535 12488048.52 18020936.89 42812938.45 1250430.214 95061747.62 2963733.781 198885.6332 23663982.19 3115097.753 281706289.2 621858.1828 130047654.5 18254782.72 46193256.87 40482834.74 59127849.45 3795738.525 52483669.64 539664.1947 24414350.18 110551949.6 106302780.7 5709975.735 11250981.26 6068.47007 33250585.05 120730169.7 12169006.45 56193436.65 10229722.02 33954642.14 53587951.51 48567881.22 565913.4817 16552358.61 1110462.478 15758989.91 16462677.96 20781694.8 12030979.8 10290028.92 11389729.67 3146401.224 417571.4092 259909298.7 70667.04846 727827.4686 38064663.66 6122541.914 83271282.97 29365272.88 5485332.477 52982126.48 64171964.55 7864685.368 2479485.108 260953.0221 330391812.4 2325009.995 2690331.744 90533617.71 +3155199.788 69105.01815 22872850.93 30860717.65 8424.745447 275564.1614 39579674.14 45202203.75 819088.7191 4470112.674 2422912.102 33007569 657.6713484 39492113.17 339840.3738 36266232.05 21738944.69 6166239.307 6499169.505 30964052.88 414083.2342 1117491.13 13548823.06 13473291.8 765832.2123 18829785.74 4411059.192 33291425.58 13224609.64 2368908.749 4091477.734 342247.4972 61707444.59 3218530.73 64449.73951 20184.20106 6818332.703 4310727.071 68217.2506 27250451.07 86416896.34 22526972.45 116668.8698 15334226.71 12845299.87 115883736.3 1354100.304 64993970.31 6480595.054 34011118.79 3176413.439 687233.6706 96789691.47 5327135.075 1381.486832 13805610.13 970636.1179 4880642.087 12920449.29 104441826.1 3132591.071 22461174.81 1751972.314 2830288.537 1017099.145 1925985.72 31538315.93 604359.4001 10443122.69 13059487.74 9696791.725 17774489.18 123478.4925 11779057.86 46029186.34 15426468.07 54956477.23 198119245.8 17512872.33 26582195.56 644153.516 824971.3182 135909753.7 1119835.145 648219.117 36240596.73 61649724.94 11583445.5 16745320.27 285000.843 +21361992.92 243749.6702 544323.0362 27605915.43 633124.466 483676.8281 7879538.51 21386414.48 7677968.159 16907531.44 13301452.78 7456411.869 2610365.622 84207.52766 4110449.495 79477292.07 8273222.777 6123071.847 154991925.4 2492118.459 104145252.7 25946098.6 1571143.217 82343924.25 13711005.32 13372455.95 6961851.076 35978424.18 19416593.94 25956270.89 2846743.246 2235.68561 23148033.83 5967103.548 33935508.96 4698921.67 31736098.95 51044250.87 15359513.78 8587625.54 4730209.012 809263.4622 14382018.56 3860883.007 7606138.949 8693339.146 2195.230223 779239.226 11847425.46 4313848.791 1699821.052 6758740.899 701393.4147 94937601.48 5242.663171 73965203 4254135.339 851.6486527 176728.8023 83523630.74 5269872.046 38428180.31 817.2777433 51959740.45 2907220.667 11011644.76 78643634.46 10689782.3 11965848.07 114650335.4 756344.9909 15754.07991 183841663.9 105974492.2 34643.89758 44841405.69 10893461.01 35713517.5 31140497.44 116448.5524 8042626.934 15179.46176 92565052.18 56283142.06 62541430.68 10670429.41 1636.34182 1202780.938 210101.4131 6859941.311 +277888.2182 1499.817833 16275.91612 1925593.28 1095.163445 3242752.863 144220968 8767934.552 2213337.273 65542659.09 1175996.376 108672530.2 51841.15284 82432912.66 46464837.35 791661.2415 147143897.7 11202531.92 90663.98676 4719251.609 3977319.02 6049344.19 83950365.42 6450.586662 10171.04325 673315780.5 31992295.58 4839214.514 5897012.625 2669368.863 337294462.5 54427172.51 103429775.9 16779263.74 40976518.72 5836874.478 23028848.48 14962815.88 117011866.6 348732.64 177944.2999 498833.5055 1342.137805 8789289.873 5060605.391 34195.64247 7051930.231 8678213.538 11189981.71 2966388.368 1513519.39 72764972.58 29259938.75 7316530.012 498727.6852 9821676.238 547439.0565 5299672.955 8581424.639 2120318.582 4082563.644 9527570.703 54402044.03 22278547.52 3191468.059 4581749.147 2600.531984 39705407.63 15591340.08 712553.7773 35880078.36 84722324.27 26051390.82 6812212.258 21384609.92 4014344.657 7797858.979 62948679.41 218098726.7 2510104.429 916986.4955 51481817.56 14739517.71 837258.7969 9649547.704 44484494.11 60423729.36 58504.83384 70424660.44 1664295.243 +93604174.47 1324416.285 6338420.986 652417.1065 55861303.89 30252807.53 3543352.351 1079828.377 80350031.1 53514.14188 79727715.51 69936303.05 142022584.6 13428898.14 75578107.31 10143927.31 191832.7666 95434.94035 35539248.81 7462141.285 6429267.824 42253.96434 14088.53229 800849.268 9511001.117 10034228.94 31926678.73 1453673.951 26629817.36 11660624.53 27771960.06 4175790.799 25516838.73 27560540.07 2707799.73 37544779.2 347423996.6 16569337.77 1161403.873 51746023.53 89755484.8 43041768.53 82205316.46 15374351.42 1446.250101 31159608.71 342542.5375 731651.7976 36526700.3 3462941.642 9517110.924 130833268.7 45979723.35 10572072.72 2577579.661 48420825.42 1269.330453 78796381.6 29242.22553 2037935.86 10653735.67 3303331.768 124009234.7 167928.6754 168910128.4 380362.2076 10768562.31 38205527.85 21251454.25 70369946.16 30665171.54 28211206.24 6053214.912 78071843.03 45523746.28 109834.4412 31364103.33 62393497.52 20388643.91 712482.3944 49663799.13 125635658.5 73406687.21 71823789.1 15770335.92 5412322.211 2134774.803 22273112.73 41960.62876 2905572.031 +1243348.048 1687178.593 30680653.37 9462019.927 224401577.8 11263699.14 4428580.587 10205515.79 150732910.5 26545633.31 4092742.493 10076267.56 29740760.66 9237815.261 9935497.247 14408630.27 2651974.909 61460749.79 56420469.28 27480546.18 21831048.14 373819.7795 20305316.14 68312693.79 781463.7872 27747.03309 98856414.95 8092750.418 44007.08729 24601102.05 15125100.53 10515423.89 3592975.37 20177071.86 15563505.78 1825778.81 10000346.82 29962984.2 6406929.54 30683.22213 47685113.29 3766572.388 2595013.818 29871574.61 61488620.97 128166.0475 154776.5256 5577775.301 15629370.77 12431769.61 851816.8215 528437.5508 3361267.51 19066265.71 13676739.75 36136649.88 28153008.99 18649870.14 56229865.52 1883895.059 33779125.36 12813.54278 35488545.51 3322.968435 20366998.35 5620335.837 12362724.36 61993354.82 4066103.719 304933.8572 75100506.15 17952556.41 3055025.659 12361233.45 9120713.918 2355199.223 17137579.65 63451.73474 2211299.008 41056289.83 396584.5952 3332020.323 11849265.73 71639835.06 13078718.23 567688.8798 37310897.12 24221648.55 5013492.949 35470538.75 +17492525.46 2379141.108 496425.6841 5436387.732 11695462.77 159.8526698 59644695.57 26650562.35 16072879.14 5151046.302 3757269.466 367236.3011 195619387.1 269590.7162 10912992.46 11109719.28 24746591.88 6701842.329 10827515.16 9027975.011 46138407.96 12886033.24 2761420.381 28067200.71 158531697.3 10899592.7 54868403.45 17071775.95 3297799.611 21912.32197 54752.14054 51339.67314 3136914.533 43362.68656 44528286.72 31286130.18 22991995.39 104877497.9 12234471.03 1657673.761 4532901.775 8683969.412 19624163.55 1444744.641 4159866.53 21946205.83 5615315.622 2279.082035 906733.3532 104879743.7 144013.2911 88650437.47 859857.2462 7601921.532 937.8538373 1399.345 1297968.989 156776485.8 38022824.72 294633.2 30452955.51 26004.59642 3742179.015 44089302.96 2985827.981 1654277.965 769704.8753 38078173 7886898.538 30363711.53 4523139.517 5905137.829 5544475.671 28040621.84 55726035.38 9221943.223 30956054.11 633736.1409 108351530.9 1574980.616 35630527.18 50815647.75 15324630.95 25392361.9 21447296.73 78727.8454 53002033.82 32434625.04 1654981.331 1500255.559 +5059611.631 143139.1314 24898375.67 27899998.08 34905635.96 17906978.55 502915.0168 121393194.3 363899.4452 56967857.08 120010894.3 26085773.88 9379862.883 5669970.139 267529.0373 2486205.906 57421343.25 999416.2991 5984694.206 94472900.64 5627698.372 7692858.974 5825733.413 1446495.167 28522427.12 63254311.36 62060.67603 2379772.417 58528490.27 8170309.672 181794.5791 4388835.448 8871812.136 4756124.511 49878104.04 1732638.386 3291908.58 8633776.763 7724266.094 96337430.49 19790960.87 19874894.71 863799.3069 12271.07741 6437591.662 1200229.458 11980380.83 227154.3935 10484306.8 71600.51815 3592.064893 87673375.26 20066261.15 24550382.81 2088208.317 22641230.23 104710354.3 310439453.4 32294873.01 31282895.31 41861435.07 66558547.27 51566265.97 16979228.23 54632972.79 1800.633116 686228.2004 3955868.552 8468719.549 466465.1551 24175048.73 4748694.734 22556262.52 31653773.56 30053.43607 76578.21615 99095963.24 2002976.121 23625360.29 3353635.15 7921673.307 15491837.07 1994742.513 5066174.587 494928.2861 4393874.85 41247038.47 20397.94875 1364221.127 16998587.46 +4033562.87 2670458.979 81726.16923 5530231.764 4162373.681 927.2870375 3485537.891 140306.2239 8383866.545 72721.35175 24393731.19 17048419.17 13522713.8 15577177.64 5658187.136 1593296.12 87467.84584 34648257.69 11010396.24 19732688.93 167372474.9 236.5423113 15211845.98 603035.7148 2408657.705 8470410.385 7839710.676 9131.007117 279460.0268 32186.38618 9779968.978 35462393.3 8032219.93 435784.974 1692452.077 28593582.17 33051654.98 34172724.16 54786166.59 869694.9073 14378002.33 15241881.2 253783.7367 1478884.383 67196510.99 47612107.54 23244693.01 17316739.95 190102.2465 5811556.073 208323212.6 290762.2178 877363.5747 56188.47089 33890436.03 37686631.46 14083.29882 1082186.048 15777224.66 72462717.6 898.326202 108533.4265 118077454.5 557631.643 388966.1639 63731139.02 95432360.64 347781.1086 12331893.98 1740626.773 3207028.286 109954474.5 5171484.689 60660953.06 3421274.391 3443028.63 7273836.278 7547012.639 15632841.89 30553274.28 14481813.32 1625117.045 14309436.72 171020368.3 5390334.976 3372498.208 21020627.66 32626306.32 21805773.73 1015467.753 +23818.86625 4167854.426 34691804.56 28073115.64 3343878.438 39772.33884 199879312.4 14262865.04 381100.8255 22333066.99 35967700.8 84855231.65 42380461.03 5490367.751 71483.13024 21860776.37 36.74834532 10012218.89 6854846.007 26789063.22 77262335.74 16328964.84 10980587.19 91147934.44 4692173.94 4433065.672 81471108.19 1286725.287 4246203.357 13232282.03 4169655.649 46433831.86 272422552.8 4335313.355 125858.5636 3360965.456 99457985.79 8756.812442 23034104.58 13215311.54 275926.9617 573411.5602 19545188.44 389172436.6 14405183.69 24319376.03 330251.49 31726882.75 86594638.78 7666057.629 6198162.165 37070856.65 3040402.771 3665530.574 70691.98344 11164886.38 14962207.7 135714475.4 17888897.58 22062628.2 298105.6345 3587973.499 41308517.63 13506.95277 8303342.647 1185063.666 98888803.67 118825697.4 114689577 1831347.664 48596472.8 35680885.98 19833895.04 85828981.92 247394782 748114.1099 58285974.72 2085846.149 2445464.284 22036469.05 17561991.78 300842.3947 22731318 197293571.8 12052627.33 7024.49396 78547563.36 4263480.447 5339.123212 23955021.39 +3851101.23 22706.66928 6223858.718 69655.64212 108071.6777 378988.7493 122238835.9 25624.85396 1114274.227 33412957.3 26784430.83 19479236.76 144568.078 114727710.7 9289812.779 4232605.759 25214289.02 12045658.18 47596726.27 248115304.1 86107591.19 16666682.13 6950955.214 38152.16106 514636.5847 16942388.89 1983695.838 1614423.031 1400.139472 2649704.68 9504050.961 18838213.42 7182496.124 5950586.771 1667661.03 70712223 5711794.356 768187.2464 3853328.61 71044596.49 67283200.08 21544482.75 1899762.003 7231934.397 150927.1051 23797652.78 2760057.829 19674163.34 12870.56788 3476446.274 15586010.24 10173720.24 7865615.991 4144456.502 29795141.49 328880.2705 43702372.44 6884498.354 273379.6667 54718186.95 2237.008007 12538086.8 156415.3597 49387.70421 9261161.661 49871.47542 9278539.421 2838336584 245766.8461 501299.8025 23928918.69 70631506.03 2101319.242 6755884.336 114292514.2 214944997.3 2137233.755 50811606.5 24442706.51 3147807.096 65272796.74 424918.037 4181729.577 3681080.247 28166609.8 5657050.743 10759.10632 8391004.141 130966034.2 16457.40168 +20720461.52 25875436.59 12375563.77 19647.49762 4369675.164 6238677.127 21003451.32 18910562.8 11699394.59 1546.965075 16210182.64 9415880.884 293883.432 101588821 2006837.283 27099220.73 61094143.75 1108044.236 690693.6413 7798199.218 2421111.25 89758759.73 18494.56127 275898.7218 514108.3999 60867.80976 44362711.6 140510205.3 4676147.246 1552587.027 7680496.199 18357318.84 17155739.83 53306.1843 251891.4865 7173952.564 31728.7352 51196971.85 16444763.42 2149041.859 774048625.4 12340.77116 193813539.5 1021024.696 3174636.507 35892361.6 215865.6216 25468300.76 141832.7875 60609370.11 914417.2934 24272856.18 114167056.3 89293122.23 146146898.2 5815460.003 2655555.904 240667382.9 19893318.7 45828951.9 77988018.77 64697821.8 37943.47196 49119281.41 2252096.984 22359536.1 5377.83839 18371091.08 13845825.7 2617995.541 26316.67778 44974671.14 88212107.64 19592.29294 19109447.37 45869.65257 4101454.294 20671284.98 11346.27153 13552696.22 34560118.79 320094779.7 15017516.28 66848.37369 17120088.48 2969.292901 11300227.91 6763610.312 202090793.1 11928612.51 +100747138.7 51244692.82 18209730.26 100235.4782 4176204.911 29819296.62 5789133.185 7077.841287 71684069.01 101244315.5 25867.40295 69910129.01 3476366.432 50362385.6 4720.35337 332461.9247 37367605.49 15844306.76 951780.06 45080466.77 22191810.25 60413543.14 14780163.67 37122744.9 4403183.421 7901828.708 82460210.52 84948.4937 276618.8699 332890.5832 112307.7624 81177744.79 268464.8286 293595.1952 5780935.677 4881944.755 22811790.81 162072.9921 504549.5096 307709.2901 656019.3309 1801621.439 51194885.97 39813544.73 11955070.33 15197110.83 51186067.1 119.2516314 72999245.89 3614306.084 15227854.36 37329863.28 24348011.96 1542479.715 15054752.61 6063820.346 306922876 316606.6845 9279776.783 66312071.85 37383016.21 15.68281701 29388651.74 112545839.8 113126783.8 121914074.4 707263.8974 2977706.321 3845361.833 178402725.3 64139.40462 1790892.501 6713.73176 49425922.89 25778.52706 10193835.21 348428802.7 37522.56595 5241199.921 37617.90275 14125712.63 118939377.8 5359372.569 122032605.6 354862.3765 52379598.72 105854601 17615878.7 95073826.49 75253074.69 +12032735.03 349992.2452 11946338.17 69940.13655 30419160.74 43667400.05 339417973.9 99488531.62 18587.50291 15002995.66 14853984.65 1587.031137 5057233.022 322743.9117 1913337.851 43311140.17 515930.7813 52577544.23 16738449.85 92447566.74 22786056.52 142.3607727 143538.1729 65912391.18 28808198.85 20783.45511 37641.58728 41842196.62 66667.48736 1692394.243 58648109.88 54997120.33 5858936.271 7122248.535 122258602.1 118068436.3 3820.401564 1414548.074 29201227.91 34380780.96 8069293.007 8915023.382 71242245.04 1092259.817 7712833.616 23287110.92 201759.2395 72932383.81 246270.4537 17990335.8 30163695.28 2781290.432 53197665.54 51279589.04 247639.8382 2791798.283 52664545.15 2054190.152 155893.3717 41205301.34 1805836.59 63629136.77 81370536.47 26748.8862 222712955.3 4798923.825 596163.6691 19804011.5 517504.8253 16953017.39 4912440.627 65384324.97 70380275.42 3943357.979 2977596.298 6198128.644 5221850.747 8808707.025 26790190.81 974166.0631 27404507.83 5764744.421 2113718.409 6524711.565 80281.12824 12291557.43 22386959.6 4880636.875 266081.7755 10232609.71 +7819629.35 2315990.868 56309633.82 3359298.952 1738628.552 7763859.103 184694.793 1193974.371 835522.3329 8293956.444 226461.0236 7910598.752 7494.079031 3078855.881 93870108.74 18263663.46 19964015.17 7042940.759 728012.135 14036241.98 39709476.97 159841.1683 11586.32188 8734720.908 57101.77783 7876878.127 2152279095 20114171 36757390.03 5457847.735 26679905.84 4251.528731 2524358.41 15107927.28 44365047.12 15668471.86 5050336.797 18358694.71 43323754.08 13495470.38 73067636.39 10955077.79 852448.099 59642723.94 7709544.14 4511745.42 26542285.7 9585847.226 349197.9462 12081209.26 10883706.88 2396429.345 177518670.2 2678529.269 42179646.7 14887961.79 37932853.62 5992552.432 6288332.275 30614716.82 198374939.3 619615.0607 64103611.49 7279.16293 36564075.41 16658627.11 9137632.251 6354011.271 11361147.86 81864273.11 55502547.31 26002923.21 24735496.05 11982394.17 100749278.8 402304.7383 26002435.88 9887640.226 1471030.544 297205.8288 55710640.34 23757608.43 3345771.624 13854684.9 2907901.377 61905080.22 10293139.83 77927698.55 28020650.09 8107495.864 +736468.9673 10278528.59 2315143.462 35159412.13 87731854.36 79689378.77 77407274.16 48689828 500403.0505 97996429.89 6573.972188 2194632.898 2401876.874 38750903.21 722817.495 35389078.48 19100669.69 23604293.15 2528246.504 29857886.28 8577220.642 169146.1814 16506751.67 19434742.06 10701899.81 971630.6978 5777999.372 153788.3632 52506704.45 7415693.191 5118988.901 17244565.99 28301.82175 1387816.764 82832100.01 62315871.68 232638502 45433067.99 31160092.05 44318001.38 69627829.64 18689269.89 7445208.267 209013657 28509556.49 5877397.218 10158.84535 78892298.53 23559264.98 16579081.34 10934451.78 13263118.83 100961011.7 64882048.94 18234.68789 2248780.95 9657174.284 25890669.03 1434124.953 21355135.34 2131461.076 52363880.52 25231.65623 29475503.39 1127704.119 2616094.271 69109.71518 503499.3747 45472067.21 63713851.7 46476457 53135144.1 85861121.2 12650780.55 3890006.324 11877533.74 34118393.84 53616410.82 124215663.9 616651.5747 50742247.51 95092321.31 1589707.15 14910588.86 165050.8904 3208773.227 15140360.73 29190971.08 48663078.86 174773264.4 +64694.82194 25497384.33 335294322.1 79244161.98 35905317.86 541052.7147 346888.5343 1437855.641 207702.2161 2234891.349 7182704.061 33037419.17 20201910.19 2405057.982 95836617.44 372069.1831 76383564.27 6427.193468 4816371.068 29654910.84 119603.3303 10495837.35 1029778.647 196676.6315 638689.7664 2790692.895 27112012.55 527424.444 5789215.733 2294630.421 129062286.4 1133775.23 2520200.153 45836690.71 9578507.561 3001239.947 364500.7565 25432736.19 42091708.28 323295.5647 64045599.9 33486.60525 487940.1999 88131505.51 754822.0365 10338179.61 15650.81382 65035855.31 1523098.452 4106615.534 10636078.65 75344.05654 2130383.105 807502.1948 64973.42903 16641374.46 3170081.295 48504376.97 31719885.41 21025085.89 57923488.18 43026268.45 83775831.62 76641231.39 56103172.31 9958396.77 6477250.354 71410756.05 6099419.743 9412334.875 6760654.007 11477460.52 62339788.19 899349.6324 2.559393653e+10 17365761.57 290808.2144 16942893.99 5085142.091 35790005.25 153226160.7 23304556.46 119725898.3 1995.264867 195264713.7 7140176.327 1717247.159 7377611.995 4793.310546 5456260.991 +145908.6172 1195060.612 17075223.85 5094382.302 159415566.2 65820.00484 12829238.48 18493045.28 233811.4512 8005097.692 2188550.658 2991419.107 31376297.45 903848.1949 55322.78521 108544.9099 418103.2405 725893.3838 126739157.5 54762059.08 70380.44214 30852717.74 61894.88504 11651718.8 1990204.486 8781.200625 100805.04 510699.3667 94339.13147 8981695.829 2860119.743 1818790.385 1611246.95 49153014.01 49560883.99 79181752.85 31999752.79 22027815.36 38775412.88 55256528.36 6571372.267 1209933.058 16403179.51 2477994.996 33715629.83 24684189.58 61160.70027 217697.4746 94653432.94 6873390.924 628863.6304 11090316.04 109485.0699 29676281.63 29342430.08 274087312.8 12346135.98 14735337.35 53258096.14 4871336.462 10055343.28 265867.7095 88551006.55 20939319.66 19910924.62 134553833.4 1432.68713 130235630.4 133951.0377 36793204.25 52199970.85 3672417.564 9102233.517 6010881.173 16764.45194 50740814.42 818127.818 25452849.08 18262585.88 140139.4067 72631.47364 24264016.11 5340717.601 39944662.26 2638786.429 31809299.85 178.9862837 28989854.38 8324842.274 45938331.52 +15989176.9 17939154.28 310202.4302 24352.33743 3809001.422 5859171.981 2401.336167 84452416.04 18260903.89 32181355.3 3039554.076 84228.7285 11061725.92 5266389.084 8057657.217 1894462.81 65009366.39 18052271.51 50881710.14 55732989.66 16943159.97 19228199.68 26108135.06 111028746.3 16956080.82 59085255.26 27837743.24 136450.7457 23000682.29 12391854.31 3211552.61 10981839.82 65215654.74 27310756.81 4131826.956 3404184.007 2548541.391 25107590.75 70118917.07 37200811.87 16836560.8 41554383.16 22573337.71 2552779.325 6816488.98 166206207.4 6100453.868 6161805.399 1804678.145 145665994.4 7244171.037 5936980.629 187444414.1 119855.8712 40318195.82 11905722.77 465210.6204 46258614.95 53225920.18 21350814.26 559101.4543 55516.34654 8555.34588 2592039.738 64335008.43 46876938.26 13171585.47 222919.9166 28780028.48 3007487.305 50065738.74 8318708.168 84908192.55 16996700.28 522684.9017 1354499.174 10275498.62 29127130.95 5618597.856 1532695.634 1929.346883 9844176.491 120279724.5 3591923.991 62425678.07 36155018.88 10039282.84 239508.6465 134825922.4 27134297.11 +234502372.7 219692.1776 85530649.87 6064382.246 78456361.41 139905731.9 19560091.52 29402.13016 23491.57205 993912.5965 87545893.41 48769624.37 385300.0031 5255107.452 225793320.1 23.73440744 253847426.8 18614259.03 486100.132 87356.05735 70324683.38 61678404.62 3617520.945 42040057.03 50182701.81 1312267.315 721216.1525 58998878.1 223582.5169 73648450.45 55453184.17 793247.0239 6793791.618 255800.6653 18494233.29 51595122.34 24632638.76 947635.6866 5122729.058 20543.68555 1998519.092 1320160.847 2326597.93 38880485.39 933672.8328 72785573.2 26798742.44 629050.0537 10063760.91 1849851.702 9390024.089 7927062.897 18707902.21 2099761.793 32523003.34 27347437.07 3585413.785 8622002.837 178659.7152 34316454.13 2296.625051 1296331.09 13006221.84 24490347.33 12751801.95 122814433.7 3721981.011 59458815.85 17501151.04 8150913.949 19128583.76 24580320.54 2370109.244 91183.61653 19780.14213 647615.8047 22083466.21 47854160.17 27293790.68 1503327.087 60814947.69 21310207.4 61320089.25 9757363.998 54879148.2 3005004.448 6312303.089 40352367.07 32211.30337 2100116.981 +1616106.435 5836045.016 7014886.998 6279177.681 42300227.97 181.0246931 8238177.227 66944174.64 151530275.8 141773.8664 31748644.82 23071351.85 925.1797214 50083170.18 21186350.66 2444543.066 225708008.9 23301227.32 6758195.926 488304.0027 422223419.2 7028017.994 990763.2166 59426033.14 88298816.06 298881.1999 200427.8594 2213529.381 847.8809657 105291769.6 31854691.67 97107.74893 14666608.09 42908339.48 166521574.8 3093587.097 427967.1659 67629496.64 4109911.631 801411.1208 13817893.62 48169575.32 23450652.34 4641952.866 15832794.84 22285644.2 4918947.969 6353.673079 5977892.11 40031938.69 13222258.74 43139.3956 53158695.07 2237573.878 738672.1726 83804362.57 41091203.7 12267371.75 48353372.01 7289674.873 45639927.27 7161821.479 9926006.891 8129106.899 4836265.898 3409207.895 13755224.51 130829.858 72474746.65 19520947.05 32094960.51 5200798.952 17339538.55 24380606.13 17556041.76 36701144.02 8192864.398 35653549.85 8680020.794 73494124.32 5786000.712 11373459.59 48942534.42 24657817.72 2887447.838 2720240.487 2585551.181 11286809.31 151663519.6 277589.4996 +16852548.67 107936171.8 17867027.91 27603480.25 384175.2411 126126372.8 1183888.276 6313568.633 1053043.511 22348.73727 49387575.46 77464031.83 55929801.21 42255114.18 23864102.62 79634.64365 2869876.085 117100402.4 53136477.64 21976423.35 1650011.515 14289346.74 52692866.92 1817360.392 29006091.41 172317.6889 105439.5531 31407.82878 220.4486782 5708626.799 39352715.32 1341171.262 392012.4284 3163792.344 8517767.243 2784429.74 28945770.2 131374398.7 1694949.485 1197.326273 45356036.11 801938.0361 49535104.11 544824.6596 620641.929 181910.125 20084488.68 58506.1854 6152157.684 79775583.65 180790316.5 449770.2991 910264.8284 36916844.99 29400.48754 4853556.267 24108302.35 2454973.714 6324601.956 95372642.67 93252420.97 122671.8708 21339648.8 35767265.26 159168865.8 1260136.089 1069528.366 20009605.34 36629789.25 5352933.472 12758.22414 38593608.87 23966195.95 72271562.9 34504447.22 3050.46388 10047100.31 139580637.6 6420.238767 28166299.93 430.437344 66309850.41 1365000.465 35060968.52 20149410.03 17768884.11 2467494.227 4906017.633 29227624.74 35885399.4 +288286.4297 29226198.11 31762823.28 4528395.987 7300396.44 306995.0279 73286084.2 673182.8688 980465.8548 22662576.89 42955694.97 21224919.63 8523580.268 61036.35174 701549.3229 103583170 30407.62148 57400543.76 6346787.871 82004558.6 131525.5013 24027848.46 267666.3844 47092026.77 28264885.56 2845057.405 14605.60191 11694275.96 42561.96333 14278425.87 20141373.49 984786.3416 35464431.58 40997130.03 20307103.97 19097967.19 100716578.7 43212127.08 5824821.378 5355291.258 29323324.53 10.88314617 1152670.169 74714921.7 31365131.4 168621.8088 46036850.27 39454284.66 1791061.835 64474366.68 1558692.044 30334286.12 47460311.46 316844.4621 34982420.35 32054040.19 70649866.87 101453607.8 330894.9242 24086821.28 3890823.49 8148912.997 178000.0926 37075689.99 105765189 5225996.486 1438153.002 25990020.6 6187.927112 44783100.97 52391996.82 40431970.86 73325.68127 1174131.027 935288.2576 4523445.025 4193331.096 89347.47249 48461765.32 582708.6835 86.05907075 161384693.7 7783869.08 29806738.77 41691582.01 87950787.27 4961059.475 235058049.4 69927.95981 1693460.949 +103891516.7 112454279.6 93097507.6 154337844.5 3784498.668 15615830.92 23013356.85 16494620.22 26212763.58 12524170.3 9307049.808 7477822.327 25942567.41 16174745.31 2658.881549 44686965.18 61924.35055 6624030.523 24544042.96 20993660.68 3506617 7532183.016 5756265.65 1526740.932 10408019.88 853.6016572 1950568.363 7649116.617 41080837.75 58106234.7 22216944.07 105708661.1 21239447.51 6561605.81 1073461.184 115309.5496 154835996.9 5999167.016 95682294.2 960320.5052 51854941.56 1403900.716 11126.99055 50891567.65 111355018.9 37464118.6 63323.65556 9573668.373 5597669.011 38062245.61 44375712.67 15014167.59 6208927.703 7534902.245 67847275.5 12393528.52 4107778.394 40089405.07 3161349.295 11388834.98 35792121.83 59913371.23 10023.85594 9341495.823 9726.833606 12382244.93 2052076.079 13203454.51 4963635.009 56974307.96 3.363732075 56857820.04 8176124.848 1606999.673 344925.365 48.08802161 3730696.999 29970535.53 168672.8754 4950835.942 3829384.94 2501459.098 46648653.89 4902261.785 293159.8711 29137317.84 30117711.38 16110012.44 19162.11556 67610.05008 +7825539.262 8395707.242 61406605.22 5852449.096 106118.5752 41572174.33 9012363.42 1155275.496 203883.4414 33564930.95 37663233.8 27893942.46 14814061.26 7147705.945 367739.4626 10158861.08 2427275.949 33008414.21 2730485.289 90830.74016 183567905.5 11391888.11 10050933.84 88769728.72 6466535.514 18437489.2 9570644.579 11040188.99 2078947.781 90953981.22 166304.7213 24731854.69 45578111.14 1966472.359 2716.016156 1987916.679 9025812.829 150181.3392 24477021.63 1106445.158 19178.64281 240993.8916 1592268.16 850842.2171 7674061.17 9054218.277 1668797.746 23258785.12 519228.1197 121053.4219 559241.1409 32214654.58 3345947.021 29092250.99 522057.6899 40269.97762 14029060.43 12345202.71 24135638.87 23766946.96 9729446.581 5538915.893 26127369.46 7606864.042 83589328.35 15268713.21 17659927.53 297167.3036 29271665.23 39582356.42 215869.8914 7426.310336 7512300.424 8230310.347 28454569.26 36642882.86 20428212.94 27253296.18 4536065.462 28168.68183 20197.63124 9910497.367 106989447.2 7785.473889 240111361.3 9741158.259 263952706.4 9996744.638 501843814 18074280.92 +3136070.787 24129720.5 8042675.603 9172.170752 10038928.54 46729622.08 6371590.141 68264.98952 13125192.15 14843.89579 38391116.57 4834370.843 280143.2895 45610815.4 113938269.1 16633.3097 19367611.75 50049088.91 68862036.62 114439.0426 376590.7507 5161597.515 37414326.69 5021900.499 406520.5286 14544000.17 113464851.3 715022.9978 167395.4373 19651682.86 20537945.14 2745924.733 18937365.5 24775968.07 848805.0692 101102166.1 341.181063 63458961.99 10467825.5 3213787.633 31332.15365 45504755.61 49306994.49 69713.83115 1975341.147 339492.4466 56055988.07 363070.7639 49880091.33 227457.4364 33589904.43 4181895.88 241201.1035 47825225.29 1222835.12 25786798.59 4377104.93 6209314.538 3639324.155 35275.21818 82651.78801 29349789.24 26752536.06 4619101.341 602990.0301 46491527.47 240641.5028 39938954.71 158537499.5 82010678.05 988433.7859 50727313.04 60394411.36 52948680.44 60537018.8 1751046.549 43930072.74 53580111.69 20143393.42 252618.8019 24139020.94 8091252.581 18278256.56 163.8218093 41043.73576 19784186.13 4974012.778 76636147.6 135215009 61064999.8 +52776000 36530157.73 48266828.84 15528028.86 222480393.7 2846038.403 10877681.92 184573.5119 48572907.9 48713407.87 1018774.381 102313947.7 85492810.82 823.7047863 55485152.4 18894705.21 1304634.123 9754.73553 55370206.92 4314894.837 111478696.5 3093561.521 30490069.34 7145739.381 39498879.6 37095193.6 190999.7538 263100.3238 7883359.484 2704082.003 919652.889 7706387.687 22737742.95 25025191.47 18956866.29 2387925.897 4112358.18 62617077.29 48471464.35 2529632.141 7882880.535 19010.30676 41427.35626 79502.68528 6657.848633 2342643.95 7072.974271 53405563.38 1058212.391 2256895.317 50714330.49 24576281.11 54991328.67 57451368.21 5691645.029 16883207.45 4786404.719 3766437.6 35933430.08 3539460.66 34670496.33 20235707.52 274.3167107 22124063.06 8086712.715 109736930.5 349.4517352 405662.9103 8702802.04 38079625.91 8762096.073 1839116.058 27419743.47 65624256.47 3165.088896 31313711.02 42024626.71 12021337.85 23718251.15 233098055.7 21139575.47 10845821.66 67.79931943 37294080.54 23280829.07 10192774.19 2824728.808 41989809.88 1990266.366 8397627.974 +6274990.333 35527963.36 17166186.28 54903785.43 22719532.39 7012919.266 4559477.696 23035074.23 692213.8528 61677.37579 18631701.8 36742440.93 15986425.5 623015.259 71358.05192 25454726.19 21968184.08 1152124.241 111766783.9 29819033.31 9663992.638 7278.78323 156003.1002 10920145.49 91483418.05 1247383.645 7577441.683 348911.8983 76469.88364 32809882.66 31241663.35 50310909.75 3848781.528 4315253.178 99745381.68 52781475.71 67493322.01 63876862 29523778.23 154976064.7 14166115.91 48866104.57 75875902.7 30125418.46 3020418.17 103448.3412 116369916.6 157546311 42035793.58 2141.810623 23000811.16 512144.8657 16134847.9 4146209.135 3121223.44 5411922.576 17180.18984 123406954.8 151063054.9 293854.5546 88561.52255 26762218.92 31612967.84 3523.321502 15776314.68 599619.7067 1053563.907 1787607.323 28957910.33 6543870.601 84661.57669 3149.815359 18073442.45 72406129.88 31755185.14 25727762.85 112108.6173 1874525.7 25402.05751 38085.62596 87935655.27 3636522.949 35533251.76 8604615.43 47441013.13 11471299.65 10366088.33 1455411.643 4083524.231 183232008.6 +15780015.96 111569152.5 1465115.623 67984482.24 10480302.48 698027.7733 826407.901 4223729.389 90974425.54 27123075.36 5086695.615 37596558.02 63102664.36 46957403.05 2723195.247 24216918.45 19980802.33 133334783.8 8172111.906 6465477.164 340597.9407 70611.44241 146764.5933 45320773.37 2562048.617 7599132.937 29261581.85 17484593.52 94338975.93 24801564.66 84668671.02 98729205.06 2894666 22849269.15 1500215.24 129481242.5 445307.0385 8320998.316 580436.328 25756814.81 14292404.91 568297.6949 7540313.996 66385174.58 491942.1912 318680867.6 19114107.18 132.2384642 12925170.37 1868708.513 21006963.53 162213.0943 2029203.914 1488125.121 6909.224368 19535856.91 4058057.796 35955089.52 7271.686514 6847011.53 3064141.957 7745983.104 5870549.862 31453283.55 138208.075 15114946.84 8352864.311 16355055.27 18582962.38 80816331.73 151703383.6 2604437.167 23137675.31 13207927.01 2806839.221 3909453.111 13555618.77 19739.53022 106492.8687 19450873.32 4118804.048 1996178.943 59945001.04 2914246.323 64047706.96 3644401.115 18841723.83 6992.439484 59710254.02 34759252.36 +789490.889 7457717.69 7087765.629 35396256.7 12571891.72 27825.47913 9474392.894 1745426.719 11598341.94 86439.00044 55559649.96 20537.66893 75072475.38 61765527.93 2951336.074 8287655.11 2748675.31 292.0817514 780113.4024 6532118.125 5469336.388 820759.8636 1873158.029 15148307.07 36019027.54 9787264.806 104472.8984 1514192.199 372.43257 108541485.2 6231351.194 48188.42227 1572612.075 27292079.37 635555.9601 23849500.98 6714295.546 61034820.23 143843005.7 28150031.38 2615673.35 7514110.775 3314957.606 902939.5335 22424.05915 31767900.07 421.1843343 61335600.1 8654076.742 212690.5948 10810889.25 3152935.333 153943484.6 86128693.12 67744457.13 1083.690332 74749649.91 536295.3468 44412883.08 1106568.448 10402335.82 19234916.68 12716972.04 23723498.3 269980.2949 9923820.836 16412140 671895.2653 8109852.386 7700507.443 2748282.409 906699.6811 24720786.02 5612942.21 1329562.553 1644186.239 21905087.04 14479114.23 20749536.85 9416607.335 44317218.08 4123104.795 207037.1618 21202942.38 4348611.288 10948359.72 31231935.97 4308760.445 41265194.14 14482414.88 +9281188.17 76629812.03 17517131.43 756878.9401 71228425.57 5010642.297 83118.42117 89810.66603 521412.9433 2843633.483 15506814.08 19668905.96 21891274.55 226864.362 35353724.68 2558452.854 11544111.07 156809643.2 63249734.51 20064134.09 15509753.3 110148.2865 86471.15565 45750042.09 186516890.4 7037778.919 4695713.108 2061.645936 47036344.94 3036767.106 3098141.429 27496372.29 104489846.5 4345834.263 440014.1473 6203085.746 277856091 1117497.634 17516370.96 24512402.9 5588604.878 16551233.63 56541676.69 4825046.865 76964.293 3986820.26 17774293.96 2304160.713 35934.84251 12485446.55 27314003.95 2183795.609 8816728.511 38130827.26 6180259.511 72357058.1 600954.0372 2126454.921 41147704.88 159636.7224 60509381.53 38591175.77 136736118.8 9752936.748 429683.3128 65102.25149 174930.1342 31452895.71 100397.0333 765536.07 187196.8285 56023746.94 62103892.56 73128004.58 12969132.29 93202831.26 25971293.25 23768380.35 68973102.85 11716865.48 18228930.6 16800994.86 1257161.407 1834557.359 32080780.6 6478408.651 43724111.48 48926613.88 102440593.4 77416339.54 +39797696.52 19909634.7 5884372.524 1678565.505 17758315.26 46132873.17 1922406.431 862766.6538 6873030.025 254351.0554 2981584.394 27585652.45 4744968.272 154138803.4 182996723 328217.274 12190.09884 96954.67627 29750122.3 34754773.47 71852257.54 90061702.45 989307.7649 388819.4501 5687397.06 3462813.348 226644.0388 1129180.522 3175638.105 2167220.442 51038846.33 20020.46865 2315995.551 89009559.56 4736574.954 8628605.895 7106320.691 114319845.2 193376945 10184058.76 1666172.639 104041887.7 71867178.86 12932303.01 15228.12357 39158164.78 664506.794 30435999.28 49189443.88 163374823 37382484.19 25464.39283 19549.49685 14847616.66 2058389.001 29167344.79 5124448.112 160650680.1 57518954.06 31818256.12 54150636.16 64274041.34 5934235.116 8422012.475 38748581.84 749030.5487 5265568.614 5451170.199 6850660.384 20245274.26 38631562.14 19322112.8 1177422.173 8086.388812 40215361.86 46438398.93 33079948.59 17627018.89 10031.93764 9269353.038 738385.4982 69674729.7 46130232.52 40089007.2 7926105.74 9623865.751 41933790.01 263035.1319 51119575.68 10054914.93 +6229243.316 49228852.63 58997827.26 49240.78305 25152516.57 25705311.29 790133.0917 160060733.6 11312022.63 15891580.62 2169552.789 1815926.842 62079.76856 34031060.79 11057240.03 14239674.26 6828307.038 4240036.59 2153075.894 41546637.87 119262.6145 1575165.204 29676974.71 27318132.33 104374733 39283237.2 2473989.303 584802.3264 1018119.304 39187078.92 111000559.1 49222755.9 80954665.75 5871011.723 11411964.5 13427587.1 2914.964362 9114161.519 15179417.95 4551078.875 1391760.928 28100024.92 378060492.5 1153719.167 148714318.4 335632.6691 9371.470033 1612439.137 20117959.25 20584770.93 216952643.1 1621841.559 26061.99456 51539780.62 10277132 2937975.259 72978158.66 337587.6651 258220549.6 59586828.13 24435624.52 99173825.46 75539.1511 25337102.16 30658933.64 18714684.76 31393002.34 2222646.946 11838076.46 71274865.27 10010597.54 226167.6098 13697971.71 89051160.23 215163.2888 8307274.847 6181719.904 24582392.77 9169255.058 210799991.8 191344376.9 18551194.39 6541477.351 9014210.708 21745837.61 172048886.1 34523507.39 14186067.89 20129049.8 49304383.52 +52965985.78 618739.6421 242373.2942 552.7757843 18849131.64 121016864.1 68091.28788 3605408.492 49752949.33 26555.94983 39734395.88 2197050.069 80442697.47 4755213.007 99052.6613 51541774.02 83596885.1 15640635.83 138015.3933 8377684.895 25088728.73 38295.28611 293531.8299 33994.61052 21070676.63 7725357.424 1694530.041 1034210.581 1747698.425 588288.8221 13724270.91 5192587.961 40203283.03 1902626.828 10104202.26 2120206.819 53259025.55 28241560.7 52833980.33 2937355.439 43962557.81 14767.00221 301553.3136 19729.86026 23749445.55 4386953.175 38849219.32 598832.2098 2375868.98 8030560.952 239245288 58779153.17 3567113.244 262156825.6 3198731.036 1653699.824 5525168.258 19407657.08 12740108.83 551653.3464 19007185.1 4376469.286 1967500.243 320983.7752 70089880.15 65199306.33 60093380.05 91807598.54 32978230.71 7390850.917 185589.5107 4928.518745 73499.48015 14284948.13 744704.3794 17249115.48 674087.8016 67096331.45 19071.58706 90835.43999 387.8016635 14119345.35 10583530.94 13644610.67 26688345.04 1944274.93 10493.90365 2270738.889 22011089.99 13027567.04 +263139.1783 4418137.271 181511744.1 148403654 7232263.24 1175281.175 41167209.05 6181669.895 15833530.65 7817162.405 75390903.04 4154426.19 82130819.54 32611.1433 16925.28166 29718949.58 2557804.037 51081502.17 6781685.538 14488961.73 3513107 5644683.461 15490455.1 31023308.89 499586.4794 52055642.54 99295.28477 12267.04536 53637432.59 1677395.766 3409808.5 4576663.046 55440935.3 35068552.02 11070570.51 5650687.325 44861389.42 38658.37828 83999.79104 365914.2092 3306688.191 95691032.98 910405.308 65911.74357 1122217.495 28393302.64 8373.558315 5687524.622 1198536.041 1703643.154 16692064.28 812671.4287 176569.556 1610754.951 55516947.88 8001642.592 24555621.8 82566296.12 716265.3579 16673940.64 20814907.76 24777522.48 91187.47383 32851579.2 11576.40662 2147973.558 1249259.651 46619592.7 8006764.093 46101446.59 74.04540037 17092971.45 57113950.39 9858186.153 17496406.34 1184095.249 31571393.66 78121697.8 61267.44745 34648.69175 49368556.81 46364397.95 8380.357939 25832636.44 126615569.9 2763828.68 5667170.81 1899512.028 486833.4016 3895083.779 +3969906.893 2615.003409 37848998.6 47419835.01 24955199.02 8095111.59 247735139 69126162.69 453708.1086 10588119.94 119299484.9 73684.45933 9510259.128 2441766.466 8973911.926 8315360.818 57886104.36 47577580.34 1049150.646 20453.67245 7245873.99 3536152.413 39167137.97 68460873.26 9982.03767 1485800.686 3191658.379 69122997.21 101771413 29967410.39 409549.0003 3950233.243 10114.30525 59079422.56 7696236.391 409445.8199 58596400.77 6881.262207 1635.850454 4624084.234 349268.7008 9821542.989 5974847.376 2228789.003 14598078.31 23117827.75 32039624.54 2479504.473 25137172.14 30182294.73 11188191.96 15055446.74 3820895.618 10662222.02 151974.9575 22256968.16 114227813.6 68964540.31 42637.82586 17599182 87165820.62 7415781.663 46109597.08 28759541.66 7620944.238 8786.965723 116461799.9 5139256.419 31945740.61 1283515.205 65383518.3 71721.23353 117274.1812 12286570 25185996.8 47187667.9 5917243.948 5667168.841 15851.54355 2783016.345 17526738.29 426291.3088 2672945.019 62776331.46 71312898.66 670187.9651 39998682.64 5011667.482 186188.1711 48107088.23 +21662525.35 32563855.16 14195263.29 11305346.97 58746664.83 27869529.77 840512.5453 84033899.38 60150357.09 91542723.24 102039262.9 43059.71359 45314482.32 202657767.7 28658071.34 7364461.549 5625726.662 25035757.77 10679546.87 86554.74369 11411.97784 130851485.6 24750155.7 57989.71702 60958860.57 9770192.202 100404674 25255808.18 8944831.985 9841844.19 207447.9916 102093.8839 140387383.5 63166885.08 254352.0241 3395959.686 38225662.79 74183.58463 668471.7862 2457690.987 51918.11277 90348882.98 55323515.07 4440.38463 3033084.328 13567.45424 2.187896937 50959826.19 50452420.61 1873538.179 35141882.77 49314172.8 183362407.4 2168875.971 1083151.233 1952495.784 4570114.441 9996144.853 1710544.759 31342767.17 110360715 663404.2685 2522343.618 17427.96212 45477882.08 24897.86187 100501.2388 4706214.518 28038.15566 4621675.746 176423.5557 6174507.108 19780126.86 276202.7476 211985.6903 323440.5026 21762140.11 41619308.92 8645405.707 47067588.21 72442511.85 7068.448489 29525805.88 89159301.12 668613.7388 55481.3929 34145.30762 90297284.2 22753466.24 12767876.12 +188635.4372 4433747.709 84105441.64 8997084.751 8893936.992 21298181.02 117203511.3 6143299.001 202191491.4 23427230.2 12847894.29 24537690.32 8762621.187 16891393.99 337930.6329 2893306.335 11265544.27 26299876.02 1744996.913 12047606.48 288089.7846 25667662.88 699247.0924 366018.8654 303315797.4 5083434.968 1569146.115 22521632.73 2194740.006 268902.462 372476.9776 5017868.729 948470.4775 56066559.51 78593271.34 8802.951354 125960019.6 8744279.57 4200741.082 68802387.54 14413544.81 5772133.032 3975.229034 3128169.556 112594572.5 60181956.67 65208750.02 5377526.562 638188.387 18001798.26 363915.9218 310433.5698 6182118.845 62766224.49 58445258.12 3750979.025 22295876.48 71829708.38 51848691.73 41171491.05 24603686.25 663.7885574 3316094.631 73201671.23 817.5749801 20754266.03 10639937.24 574397.7151 25682907.93 21813517.98 14287036.44 84373401.61 116686806.1 653515.6996 13672742.16 86739681.97 2131138.923 104167285.4 15503180.83 9046219.144 14586253.06 6736682.777 96435732.8 8011089.789 29143459.97 2538385.94 4114294.279 5961028.694 964486.083 171777.5664 +20933994.73 65621789.03 7435518.455 2834683.075 2356645.383 38251928.25 16444358.49 1036569724 73078.56365 27991768.73 4973314.732 51598699.5 3626491.444 30387507.48 598178.8957 160084.8962 74098158.99 64935428.53 16940180.09 18276266.11 586282.183 16364667.09 10972478.75 86283691.66 143508.6081 56364.40647 31686358.86 58808397.3 29036386.18 53533.11412 27838131.47 764180.5125 10385855 2461093.847 5226953.54 18696987.24 30984158.39 2799896.218 350491.4056 194420.2378 18607592.03 46385043.78 283017.3904 19310218.85 60215294.56 699254.8527 14338078.9 1563454.916 151215.4798 243198.1407 532796020.4 2075520.005 176474.3954 11747075.5 1570132.484 715365.8636 3696587.878 2198676.956 48438203.25 3930719.132 7200544.253 679376.6304 29167723.76 22056715.83 9640488.308 2157953.197 14843.89719 86271676.26 72178238.1 739164.2726 21558805.31 230346.564 7271217.616 2584375.397 14803120.5 9077358.615 104395522 7607027.508 177542235.5 211482391.4 721948.5086 654358.7493 275047.3585 8011849.834 1140718.1 121581330.2 174554356.7 19743.62712 161155.8146 27249048.4 +98701064.63 42967304.47 453618.3653 70510575.13 156310.6071 37244052.47 11737797.6 36437.11164 7571230.903 1202534.908 51489757.1 5705934.796 437483.4308 3956509.517 7493128.832 676507.3065 687423.6018 841238.2619 317664.5216 30282066.9 37942006.62 3422117.131 26464975.76 130092.9186 48446072.3 3692419.863 11409538.24 1991175.399 59909.65503 77981.3635 2444839.997 3330914.669 346702.2985 243100.9655 7638136.183 24494814.48 5880.951175 264220.7506 29351862.59 16997205.69 35442969.77 23525706.63 19822296.23 94180.65952 465346.4115 5576164.453 185950766.7 66585.0151 31526414.16 31393741.41 410757.2324 1201275.398 2989916.679 10329.40201 941379.9755 19146595.12 89272045.79 216971.8129 3329233.49 65303081.16 11156118.78 23121861.77 15922264.63 178616751.5 532870.2951 22904737.41 3599130.014 20449.37624 83693854.22 634568.0434 15036915.04 1624108111 16299020.65 6453819.569 9812613.599 25186576.11 29238396.75 46057581.12 18146634.55 32945671.29 74939.70915 22877324.13 18937007.26 922422.2781 479209.5511 8844261.519 307761917.6 157316.8808 88789540.58 7952515.797 +531734.4368 28862930.37 31913527.39 487.2538489 76778998.11 850998.9715 6247.32353 1279096.256 9631133.615 17986007.13 1053158.079 3556268.664 28592439.11 25411295.03 48542.06091 18658579.07 14657840.09 465303.3165 3086442.889 11823929.42 785716.7977 19862952.93 189874.9512 144246446.4 41356846.34 70063967.62 36927521.54 70241985.75 25037540.36 46216833.15 14325784.93 5621403.637 1686801.447 7234378.604 39570790.85 133699414.4 32705630.55 5490464.913 6253679.335 60237287.55 4564010.731 2551782.115 88727473.02 2311138.15 1738164.28 33392184.07 23930491.58 54593.91225 2464.366063 95478654.83 1344.802604 15314558.55 26765777.72 31490419 673683.5168 2175905.882 28188796.55 37970.40131 1379673.438 3802159.826 2218275.965 520383.5533 57765489.54 40420957.76 43705766.16 985558.6999 66595627.37 3749177.539 3695830.267 39409095.21 6942.223004 48231966.28 3518.096606 33296636.36 149340417 1071509.067 1841.339685 2609882.189 64147682.57 11310064.21 2604195.904 5554746.47 22208573.47 12217491.57 51864732.24 59519291.27 8774243.824 14593483.1 1102561.744 6049214.893 +18256.63575 45904053.78 1727822.778 107683561.4 80305321.84 15982711.7 62972094.17 41496292.25 11284100.31 1135644.372 2646184.802 21501129.01 19363151.46 47619502.75 2566359.684 9566432.572 2569135.789 21787.03978 2756500.564 20073905.03 106175.3154 4476.388399 33713570.73 48079388.59 3422.440393 8307030.899 17755451.2 174994.9925 5502450.86 4757368.437 5035647.268 455277.7694 83140744.05 134366.1167 26462657.77 8489239.847 1061076.351 1363182.743 110667206 186548.5919 47393868.3 6378617.603 16156756.82 52683974.08 19706942.13 25815.58375 63904691.75 721645.2855 36836975.95 3941479.036 35695700.75 479403.3775 103379966.5 127162.2574 1767.092076 33267777.58 6001004.986 59352112.24 56725.81599 4372816.264 24029388.43 53423263.56 758758.8995 19353831.78 1233457.103 311608432.6 6207763.697 23273096.4 5494227.704 21633239.72 24090402.2 38612906.23 32536232.67 262960764.1 46221.82902 4479103.852 42968654.44 73212.89406 32263.32991 7351820.911 2845948.535 840636.318 70358817.69 6549227.874 75316.43659 6304185.796 2776564.692 1262100.915 13531699.88 89116933.63 +5909747.763 1205.856835 1861181.817 158980129 5184233.588 12919422.53 46993489.09 16811515.34 19649751.81 9777526.036 4744208.022 35292924.61 6958370.594 824080.2605 531325.2141 11573626.37 883510.4476 2877585.303 13230069.31 49395724.96 52685366.16 58438057.5 4529086.806 4610141.524 5753765.094 11473152.89 104319587.1 2838761.881 95307759.13 81388820.74 404990.7875 1580737.229 148620102.7 17183954.07 97247396.12 64242.11754 1431688.922 2005445.586 150.2883957 2182848.166 225721991.7 133962014.2 56012650.29 497156.5249 74099610.44 222285975.5 149497828.7 17397578.12 457912.2197 8756154.062 18874105.74 58288428.49 2717043.742 123144137.7 508731.5687 12080625.67 988988.5213 3751278.506 12619327.52 3946603.523 5824302.337 406751.2559 155416.1148 1018067.607 25991798.83 14551361.68 128245773.7 63191016.58 114472762.2 1276504.948 93662734.89 2073215.234 39987865.68 156330935.7 6522028.122 99670953.48 347229659.2 14931312.44 15946619.57 22720840.5 30515240.57 1167202.578 68131.93549 54633858.64 56901160.14 90488354.75 44129016.02 1136495.177 479169.5896 277870.0712 +36919554.25 28347280.29 5191159.924 2768563.084 27633.16544 17077645.36 25124.26066 106529.478 3347620.681 1114164.027 3609760.829 14562618.57 42730.01806 189000.9648 11121355.7 129895927.9 227398.2853 71885584.42 87638183.39 1423722.508 37813642.93 3404093.133 5028995.091 860197.997 2367576.865 94671.35333 48125062.78 50785159.57 82996355.69 21282674.29 7122678.023 628561.6703 131393.45 247123.8468 74123798.44 34981464.42 16132.82021 126.5378229 59136.77581 6204263.887 18976985.18 74143894.35 117925984.5 230377035 25884265.14 5864.575853 22944668.69 129556620.4 4370264.274 114117509.9 1424624.35 5923254.703 82790.26974 72119246.5 1970997.938 408538.2601 15605308.85 21573499.36 516945.4107 4938374.137 26217154.04 154307271.5 2900059.605 16375015.07 65998128.9 143966586.7 13206056.54 34136588.33 4051445.296 7719187.037 2985801.278 16438476.46 1478106.529 2207545.178 24926953.88 26529790.66 17344196.37 8495540.535 381842.149 14776722.68 101485.4699 17200735.84 554.8736521 20750361.07 7069308.434 407436651.9 19277960.87 47085338.56 3091458.923 65991981.86 +290078.7681 138848.5156 105099.5195 6362527.796 806639.4432 12211227.85 187629914.4 36233907.99 46024632.63 16364626.82 15936734.18 1856861.733 191020.4694 12776211.67 8305.968046 21141925.07 656282.19 43311019.36 15937423.46 22418934.94 9417.01459 25253047.11 34214141.6 3197934.848 1392263.667 72906565.18 30255487.34 5278281.269 16645510.49 8822956.518 133627962.5 9261765.456 8652.369394 27933079.57 11576173.26 9477475.168 825953.8506 2002176.056 12674972.52 19632138.47 64866.56036 11571047.01 35940578.28 1296678.057 41881606.02 28315827.3 74214690.59 5134392.861 1896541.129 185040.672 26842041.84 20673397.93 879478.1236 303106620 28289832.59 1611202.041 1091358.828 3511898.926 8182599.694 38024601.92 1599502.632 3527052.554 22001150.49 11124668.85 42283.03378 40993606.87 3889340.441 10919809.33 248650.2404 136708.1309 86168201.98 11493726.83 700464.889 28399089.55 12261480.65 28921546.46 14703447.85 88429.74995 18332286.75 813698.3235 105527.218 62379862.41 214858260.2 11036749.55 3128066.219 8923.576866 35337877.02 7483374.292 393283.4146 2385425.948 +31920704.14 8289251.762 48393272.15 1105064.158 9705736.097 12023396.72 25317497.02 2297675.163 40913148.94 2332438.499 632495.9019 51942138.12 3949463.355 75964807.63 9958943.489 3995829.623 495.5687962 114163.5478 8253465.242 168378224.2 3097542.128 23200215.98 490446.0168 9896909.758 7901878.026 2647938.373 27697534.05 581861.8346 356174.3143 51020934.44 16303448.25 13043242.82 2073943.064 10702200.62 186465865.9 5764956.485 691565.4433 235316.1884 100.9196273 8362952.427 5363658.607 551612.9541 114538238.8 9864339.157 542468.8673 25845494.37 500728.803 25572816.35 14751895.93 2730019.754 949525.3948 2825807.012 54354.02352 193879683.7 4488376.885 1656815.187 50789398.5 16130605.57 41062397.3 225404727.2 28817422.08 51270.05306 30863876 745431.4819 426141.1094 2754644.637 8140955.531 5707.784784 513925.5488 25803459.67 97139897.77 181634.0712 1064112.421 29751759.5 187657.9454 10752827.17 33625362.58 615409.5711 58207920.16 38952518.1 89508026.4 10200851.08 730133.3472 75929.52569 2438163.537 191715037 144195.6736 50118688.18 7961393.201 30158286.7 +1875284.909 792175.9997 5693463.966 52522276.72 7643.781498 1126466.681 16161246.94 2667402.836 85263.0558 13918263.3 58869631.64 946279.5514 40740829.54 88582744.95 8237585.748 308612.7895 66838883.83 93260139.6 146556.2679 17435.07823 3538602.459 4929635.339 24526688.19 32132.76361 8798789.598 526496.6207 2541161.957 31257764.23 25296374.66 10146076.18 149428626 92554324.98 1707502.485 683395.8921 227563506.9 195996.9417 64860576.56 267163.6653 1011116.911 2742817.226 2835153.183 2701115.511 86538825.94 1914725.884 684471699.2 146471858.1 67225713.61 22833166.49 29530468 27007248.82 4482487.358 12963979.26 3564874.13 25979832.25 23652587.75 718087231.5 15980380.42 5220739.475 432772.1311 65010383.99 71227.35676 2243967.264 1128116.657 4547967.353 259887.998 6528043.661 4525622.797 182767.1369 465502.9282 11946458.77 74129.11174 12555.09979 277451549.2 31056277.87 131198.308 13013733.04 29560667 117012.9691 20596235.61 8962305.157 102222825.2 429193.6346 29354952.71 21726434.43 1370480.218 4855793.589 314957.282 62654298.83 1754287.38 5164259.618 +83831442.81 65886733.52 109654539.1 345903.4995 69836563.14 13442372.49 16660330.61 70261.51108 29425403.11 750201.4041 1144.70637 4472208.424 4629177.059 470653.3748 97446250.96 234.8271002 2317944.003 15519043.11 16331080.25 5324070.344 33891.89989 51148.0508 82424707.69 5774081.267 15184.23967 20941643.38 17968842.33 594283.7195 19436360.96 463950.6967 85110.44249 155679494.8 65381017.2 114258.0221 24812041.58 8645355.876 107618340.6 44887338.06 325294.4384 157685244.6 39859200.44 7986290.902 77603931.32 44659.19518 115717602.5 77402537.82 28151410.6 6552139.696 18930337.93 108972.0887 5354214.813 69582633.12 42094229.17 14649282.82 5205708.226 202148196.3 41039790.4 643419.6287 243597876 3492127.957 103721852.3 1301009.18 85363394.55 1239693.479 171894884.3 56870109.01 151539.2885 5429.456799 7754999.373 31830.90111 34694130.64 15509407.37 10717308.93 33056644.47 4044216.966 107472.0745 88734573.69 13207146.7 64266698.46 18004057.38 10937834.8 47370.03384 25243039.66 10036549.09 15824103.03 34685428.18 18072.02911 174970.5987 62509454.51 4421909.25 +94834.18022 6055985.535 25052444.67 3900.718891 200503998.6 33600274.79 513930.1737 34680192.19 4129287.801 29514143.37 31627947.2 2355057.267 19247786.83 12713300.07 1103750.732 554543.7535 29960757.1 6500206.701 11427020.56 2467589.64 76481468.73 1830.979764 3143504.122 9459022.259 20238608.16 89170110.82 1969240.19 7047854.02 181065011.3 11210847.69 35608677.04 91028070.98 76635943.43 33233469.77 2316717.941 36949.36261 5143415.839 1087.112247 23084288.23 4742334.641 4244202.386 52496166.47 76514.19205 126427367.3 10030270.62 42673.52678 1805183.135 30482539.35 60425538.59 164670014.2 7822966.127 14835008.81 678831.4917 1215828.669 13577.36444 33693996.37 323625001.1 488736.23 1254654728 53514532.11 704510.5757 107489.482 1358437.135 421650.9895 9509.129701 43571119.62 165991123.6 22462660.93 103947005.9 59110738.87 60922443.55 9616828.796 11042093.86 7809924.435 37494047.54 6581106.836 2385670.49 110973.0118 50239637.7 670717.259 45731684.16 13385189.31 6996.914595 1202614.598 1794545.854 641107.7252 257404.2041 335644454.3 13895070.04 8969501.334 +10084657.9 2346559.614 3788141.372 2424849.932 7738995.286 226253.2169 2751230.56 11476040.01 14183991.85 1720645.715 14937832.13 49528053.34 2819.308889 39161370.2 7336816.216 14934933.85 108518382.3 189511873.1 814749.565 7167276.573 21386427.64 8311128.706 38874852.92 105613.1163 11491049.72 123072059.8 19030555.64 96096241.65 9747450.83 24345019.86 32049474.68 225617866.3 14804451.35 5353342.193 42689113.97 111668351.4 38861554.94 19769361.84 19373495.61 402543.9075 14698812.58 110421363.5 143419373 447326.4405 222843.4821 55548.26793 338594.5994 336672.7932 28711307.4 3640040.714 3708054.892 1103.172602 79.42403316 334098.357 217820.2402 2076188.058 4586735.601 21291958.22 1043866.618 7309362.4 41652368.31 18040525.15 20238017.66 50284978.93 5997124.019 720007.2808 37366567.72 8111810.457 579613.4717 4861.381506 10012.2816 462004.9028 9883150.599 13836955.41 105064368.3 302483.2973 29199078.4 78767882.12 41852123.95 94334762.26 164850386.5 6186749.32 57810026.08 20248205.73 41145750.11 126187864.3 2640554.582 12214903.01 1651023.645 52441020 +18789766.64 1056549.524 406092.4912 3179645.68 10147034.07 2795611.312 216112.1715 92639470.04 36503702.19 124808262.2 4903619.568 27471267.71 18133917.35 2992600.298 2894538.543 50617807.92 24096393.97 1017194.808 34075690.37 10157585.87 8812120.438 4250553.737 9057918.594 888346.8873 25237.14561 305135.3491 10269368.28 235022.8711 161649.5306 2591886.163 55304616.97 21925744.92 33797126.07 1289818.585 1630917.516 39102331.54 9135415.228 16696103.72 18708.79221 2584720.472 4196874.522 1537312.025 1028192.677 1639910.416 13191914.7 458420.2478 14137821.47 59895362.04 15982.38645 6369258.758 39983005.06 11299979.15 207281294.7 40076.57748 12128276.59 57427316.29 22288232.18 1171297.293 153838896.3 593891.7669 1390321.611 8056483.453 19220114.64 64893647.84 11895024.56 6418291.713 20967269.02 9084119.36 96616628.99 5038006.59 3830706.052 132249.7671 43404680.87 19029797.84 614282.1689 70820.70149 7703080.976 22666284.54 3209.054722 1416069.945 67821347.29 459304.4824 1902523.653 14722964.87 13665003.5 78305.40822 31156772.04 11066644.2 293166.3811 22892908.8 +21337456.86 68889555.97 483425.19 7198378.795 10515120.85 407240.0565 4537281.759 6267037.185 63286.57594 642399.6686 10587.47298 81872352.26 50869159.25 1721022.183 537939.7792 75168.24966 85148.14154 2548708.072 97106994.98 15074579.56 44244993.14 622724.781 3189987.654 57962.57438 392335.8938 27605436.96 25122023.42 4176973.706 68825372.63 36307581.47 883991.8154 82711473.88 75113010.16 42528123.91 247392.8961 106851289.2 27627955.89 27663.36869 24353760.04 4346347.708 15583897.15 5212177.315 40993371.51 541464.1444 7308884.903 27537017.82 31912630.54 13630549.92 3874.320311 4766248.524 24220252.99 23487808.24 24555395.52 285904.1763 55268.75502 25577500.14 32957111.4 4118318.525 16916476.71 9132920.164 4420604.95 15434544.13 20383.81429 47851304.02 25064.03874 1054889.123 217478.0136 107452512.8 15517062.77 21663173.67 3405287.751 4649338.163 116755570.6 11685635.83 524443.6807 323245.5395 37112247.51 12129620.77 51663489.78 6530889.069 9386305.874 10491057.49 14368837.58 979241.2339 5431180.268 60094255.56 513165.466 7604654.855 66583979.9 1534243.24 +8007416.778 2266988.765 2053051.871 405781.2589 66519508.33 11350469.25 1776648.99 5612937.231 12939049.35 36185181.56 12349664.88 3496223.117 56444.41519 36377.72121 33652518.58 3226812.856 33803267.02 92217576.64 229522086.1 271229.3682 21433570.77 75394637.92 54025448.78 118415710.8 24248949.38 3027263.519 194287.6681 35365075.6 323617.2389 152168.1185 36935.81256 24671536.53 31270272.64 611773.4247 85161867.82 1113993.255 56223751.49 64444317.43 20481806.47 87252840.33 34866587.01 36162003.8 282232.4981 31994353.06 268437119.1 83767602.82 35126996.42 5689055.852 35674080.81 3577132.371 353.5052014 52838235.75 37302743.12 591888.5419 15511604.66 4510919.357 1884479.207 3409373.905 911361.7455 253269.5284 617446.4694 84293016.61 15192359.7 19285798.62 9185226.791 63246449.75 71659663.99 533188.1283 917722.5707 55928575.41 49319462.1 7446589.33 3789322.293 24149042 186991614.4 127604.6384 21250152.08 849348.043 1561601.626 104668.1207 20858093.56 7383736.955 47839918.1 18898825.21 25318706.21 138716181.5 10055564.12 28184735.53 10976936.16 21861132.81 +# Errors [PSD_cut/PSD_cut.dat] I_err: +22217618.81 109583595.9 4278145.951 51312630.47 1713.6304 47718948.57 2755418.779 132233.2574 7991167.31 6295164.498 10043622.43 22722210.8 739218.8783 2852079.835 4530310.065 21976625.41 165805.4357 17971716.62 132299.1208 6430869.794 494871.1452 2652552.203 34425741.11 15324155.99 32805445.3 5627706.506 6237.008609 20064857.74 39622224.27 7937858.456 47387878.18 8252122.034 101546325.9 21320488.74 2992061.291 271832.0698 26066732.91 14027090.62 1356490.772 4608.188779 4648801.675 1923340.317 32459199.23 39358206.01 23732706.98 47184631.91 13263492.52 40553226.95 4949221.392 3607809.016 42773495.42 15116205.52 50741955.69 83806089.92 18313291.7 7413908.737 595081.9754 651824.0066 693412.3637 1156872.759 117893116.7 16887460.92 8285574.842 102924.2846 470349.8913 47205075.14 5671524.13 50013896.87 0.3062592164 45515318.14 48365224.22 26587749.68 35853893.12 1908538.762 29012077.69 1115966.037 44717612.2 13980112.21 3347920.219 51129.95152 52159305.34 60871956.09 443762.6946 19483736.8 26628814.64 20333173.73 28866701.72 1384453.287 972746.7087 6789844.29 +11579699.91 100716.1217 83697.72336 11622908.16 19462945.34 29621851.92 2109589.511 34359009.06 16750471.07 59541505.28 96707269.09 14091513.79 8388995.505 94002990.87 1673134.446 542461.4191 15456697.49 94773.73736 12599664.06 38814347.21 40100075.18 12401195.54 10653.34327 13904708.24 5966994.031 10357243.32 547.1525673 1377154.454 10305385.04 15124962.08 28150.70826 4496273.879 20982089.09 3400257.222 6373719.688 79524839.64 22530230.45 72963062.52 901730.5009 138893561.7 39651409.85 156814992.4 182046508.4 10696188.29 42419.72499 9214781.004 32319849.39 18529838.82 70393971.13 10146037.06 16576974.12 1028656.899 9664.998604 3871999.186 18010295.27 17255.88308 10228169.5 9044.681333 15176900.93 782400.0463 22220089.43 17249646.15 1821089.175 786028.4564 7907778.93 15387864.6 11182876.6 194691.9348 3506869.539 29494288.1 13646.51195 7222865.75 37764142.76 91342423.8 17302017.76 15729537.63 49148037.34 8755410.939 300145.8424 50235604.56 44944215.89 9962577.101 8305274.903 33633961.26 71716.17046 200937.2413 18014642.35 49941414.66 3727365.848 21314132.45 +191435541.7 53889317.62 16047992.74 8860.073693 437783.7864 6690477.442 21082111.76 250687005.9 22337721.18 190437.3228 21690082.94 279305430.9 2020988.211 32411376.29 20398166.79 24896373.36 7911447.299 17303980.17 5232243.553 1194468.486 11573997.23 18508532.36 13963647.54 1462853.377 44552900.66 6140107.771 178684.9639 6993956.546 4746801.879 10082458.06 2501887.303 1665.253153 1820167.823 1145685.845 12603642.22 2858405.367 3511552.779 128289724.2 28417872.09 2484707276 9613764.419 24242589.62 39436105.57 546.62387 8242031.745 4331382.512 1024240.47 7763207.59 16971122.6 48222224.49 8367292.173 2214638.773 111692159.6 121450091.2 26237659 30548211.79 2605.371215 112522179.2 57896973.68 12399129.64 32298.17129 7245080.743 3209665.339 16040516.62 2708.351405 54978195.03 24827383.34 663255263.5 2277314.855 1072522.11 2380900392 898.5530708 29024.88304 88388294.82 4346250.704 732892.0146 49625670.67 50993799 86844240.83 71765601.11 49224572.4 156042.1723 35549118.02 981174.0445 7750015.125 130015.8434 7864868.037 2619514.308 82031.27892 13457.14337 +2276874.54 9626525.991 273645580.3 24807.35746 59518152.86 68914226.47 5297001.107 64926919.52 2586349.116 7031527.58 24025742.89 5704572.829 998377.0909 23517683.34 3714506.075 4767996.958 55160757.51 171608.3717 2050982.532 7194166.028 54551014.13 460651.2746 21391337.26 8536318.751 7723081.782 171805932.9 3193168.474 230237.2463 18687001.36 619519.7696 25005.53302 16254850.04 10519178.34 47426086.65 16412.21611 273580.9773 12893372.25 11096426.71 8455369.787 39406490.19 38844347.81 3682021.901 4241760.463 15010371.33 27737822.26 6570586.928 32991306.53 488749.4153 8805668.658 32789861.3 146868.9002 12247689.2 4528395.494 107405518.6 1398402.367 152029.9981 1143105.134 5417.252525 10380514.95 88539198.28 19010.31318 58867629.16 128754.7204 70932.15311 636682.3353 37447603.53 109873.1793 4218587.294 4948403.21 73075076.02 48445342.32 30999070.86 19410070.35 1064.236595 13396808.15 9305626.634 814506.29 27684291.81 85310.81588 8909175.346 1781274.964 1865157.163 115278.4054 5727097.008 10401.8799 30002.71411 41869786.22 11168049.24 7068532.141 4957981.443 +3661376.477 216648.3292 3116340.364 4896949.405 1966428.711 18880324.3 21401895.91 16787036.73 15459553.95 505449.232 29741.9805 20112544.98 6692210.801 74474975.56 13826798.5 1714910.457 332.5776539 12335285.29 128542189.7 2510617.456 23751783.41 3462166.044 17182797.16 48907628.51 7981632.754 783.3942357 3698856.02 1465812.424 349000.6195 48978431.18 34663089.1 2028148.861 6370788.854 10113679 7405890.054 39978776.06 4166656.661 13347793.76 6636878.101 79483.66452 46523888.14 3486476.494 7000.178104 4408258.259 30992596.11 129431917.1 3308312.585 92430.53643 1861472.252 10234.77818 41893871.44 3977823.35 5937784.121 2481132.061 3820823.84 10120014.68 2524037.638 1669083.354 581999030.8 32156554.89 2030184.676 15275045.39 533698.8413 298693.7142 2476538.19 5553526.814 8395.306684 419987.5704 185452.5773 1417416.935 18590365.01 2520599.316 140720.0145 12117114.76 14121942.98 26074511.81 2283828.004 2883269.209 67892780.58 2575511.193 12540579.45 144803249.1 857.2277626 133880411.7 7741537.284 1109631.953 42825869.33 628876.2367 13965176.36 109514651.6 +601677.7797 2758578.222 207722103 4411265.352 16719775.23 3642339.433 43213666.48 71076700.74 17622.37852 2194060.518 3951304.518 4061819.426 410587384.3 393441.5798 1690299.031 510608.6517 79932561.02 18590268.25 9472445.443 25524034.62 9645879.108 4600360.529 5471291.976 56494.58167 10038440.57 14057669.12 1458876.935 11127329.24 264798.4409 9018.974166 30363.61667 281902.2603 192475023.5 13837322.02 49937217.08 667456.5539 240797.7891 28887220.34 565576.7879 7605543.26 12463579.96 9108571.641 511.3887204 3006831.049 6182161.034 29549090.69 44738160 1943864.511 808689.4168 3902250.794 14266467.18 46298122.96 12621439.21 1716102.119 29093555.62 8747928.366 8314907.791 45902642.35 30042793.61 195.0158723 22586595.33 780807.3194 9439042.329 526371.6522 41396731.26 5637422.149 55113854.67 8479359.943 2602480.768 6493314.633 575546.4198 10396718.24 12301228.19 75901.41657 298737.6894 28339548.54 716572.4073 49299287.94 3369073.164 2560937.23 63334.10888 22364337.65 3181435.735 2632.401748 5752059.373 22966.25428 15205.44155 73044959.26 10738217.16 2211473.111 +276854873 21863181.32 306756.453 34230131.36 634608.8342 63579.93102 41157221.91 49251384.27 6051815.054 144442464.1 65849666.24 68807545.06 6842970.345 30653628.64 4945434.227 203626964.3 194881.8722 26267558.96 81896948.14 3968.732314 3952789.98 22472806.83 64057955.26 12790385.3 15696808.79 1198726.226 13515634.64 5521043.448 5482270.379 2558664.493 311016.2419 14920382.54 866158.3667 12976846.27 2955707.451 782.8390075 29368125.57 15161501.34 1158546.645 586677.3267 1407675.953 4980824.346 31679370.23 18232944.08 13990056.35 38399664.08 45049663.81 24181619.71 60850.93677 967.0994925 17854640.42 61850039.14 27912493.41 24835580.63 19053.72132 12683130.46 4241781.271 12882592.34 409283.9914 76986326.2 53215501.08 8612.686253 1528852.572 88902206.5 224079.7021 5826441.183 283376.1358 115597.9458 632594.1757 12754.90347 787.7754881 44014.36577 20302392.2 39508356.3 15836081.96 14488.29688 3861717.647 3304576.859 499324.5549 6879638.047 23922303.32 5229006.631 1854547.162 81929883.7 511.0823817 2480.41848 86355259.39 38526199.18 1802998.534 102725.3839 +53524.38064 15565144.6 72688100.83 374727.2135 452906.003 9029.610735 8930.441592 24312215.82 397996.1492 275695.0012 2675225.526 39839920.29 9669310.822 521386.9404 2975105.316 1762491.576 5834401.681 27.14612347 39936487.66 23973362.03 78745419.54 10496785.84 2478884.346 12169076.23 3738388.564 23020312.45 17700906.72 626811.1815 23513910.87 838785.9797 3168589.739 2688031.326 57624544.7 117187344.7 1935041.952 10571695.3 6907466.359 1175899.348 8756006.566 13560012.53 940574.0226 736529.5574 27581.01564 5650395.305 2293192.196 9799166.616 24116126.9 9781528.497 143787.3832 4485.986876 58295339.72 7971451.617 72234.42426 44505050.6 5788844.565 12909627.89 11073726.68 968907.3587 16646711.42 7124778.775 356.253867 3128146.06 138156.0563 250380.4737 23223451.36 17641.48993 9074563.32 206292.4297 23540678.6 3825594.166 44773296.15 1202967.762 118271745.8 7293492.159 254695.8631 15624611.12 5756947.047 9375816.783 13121630.35 18985.97722 1521535.893 45264139.87 2488235.804 39927199.61 4617647.667 33785461.75 405035.3691 23045834.68 141634.9584 8322886.958 +398682.3329 1674047.089 453389.481 10961412.86 4704414.908 223187.2973 6829137.614 3274890.18 9427699.303 16825772.15 16096.31991 2826446.08 1844290.763 59056806.98 87315816.61 51384031.78 3965087.96 981795.9474 112363426.9 344082.2999 22528983.99 62544913.55 37446742.47 350698.54 222186.628 5357220.752 110631401.9 21690568.69 10931879.2 842955.2186 418873.8568 88099130.26 2186042.405 4954357.831 697718.4199 12293793.03 24579905.88 10921352.48 13122680.19 1116433.261 240321.2308 46052292.63 25944334.51 7864478.8 8973575.479 4700959.406 3673899.103 30896112.67 13869211.88 2237363.623 934880.9778 92943981.04 12794325.28 13124276.31 1838095.63 1306592.18 9310958.672 2557284.394 70521293.26 243749.2198 181664.355 13461072.99 27490811.44 2160874.125 115469.5236 96279926.78 32795205.27 7910942.064 384396.1342 1244486.059 28849773.25 256.0023026 3406004.225 35193827.91 37628.59138 114759568.5 8462.758459 11234645.18 14268695.01 17048525.93 327043608.1 32484255.61 7129892.306 21963472.9 719503.3243 3677.015757 508956.3011 11779000.21 21936650.12 8203611.298 +21074969.98 1448515.625 105446229.2 45268274.3 2038003.361 859748.3348 17485683.37 5717340.642 13197232.94 33308.5368 61678004.02 518368.4555 13014757.89 35925540.04 16527882.2 2214725.084 33812891.78 226452.7087 18318837.48 610955.6936 11008624.28 12307497.78 87969741.73 83245200.53 38831850.16 1748112.266 17615346.66 24465.16189 1979.269755 13837828.99 553433.2457 14199497.94 144753.2518 361874.3442 837.3178196 7727485.842 7428007.539 502942.8605 15287347.71 769369.3062 239151.7198 211203.8092 44802946.74 44663231.42 271449.8259 127616.7016 2023904.785 64854674.25 163130941.4 623938.2553 6520218.555 92274750.35 93419930.37 27628776.09 67526529.66 17689496.21 50763426.07 5886692.764 63663909.33 1510783.24 1636091.837 2119582.442 2954410.97 1151603.922 1932460.192 18430097.89 12140536.05 48134016.43 18749223.25 5544737.787 78201725.89 32643430.59 15668124.34 5858774.813 511115.1356 1736396.149 2326924.494 2.115556848 4145258.834 3853.611042 35273580.16 2532387.74 57460427.02 154431.9456 7445733.296 360804.2096 153416720.7 15011023.09 38661640.76 259225076.7 +17347.92757 3978310.022 2206699.69 26141725.05 177325.7086 170014.6492 16643174.16 48751136.54 66751.79464 39416549.73 3331135.819 21635031.62 20792070.79 83869355.28 8369018.288 8696349.253 70250.89352 2027.232992 8908116.981 96926615.53 1348594.073 2980258.965 12839715.22 27276603.11 12548444.78 64371278.74 1369240.706 88003122.89 27824346.12 45408894.93 4619750.836 6374900.086 8122503.026 6154054.612 48677459.97 327024.771 6334383.968 3986495.764 2996.869376 68288595.48 43654806.25 13426828.48 20328.41628 18362665.73 36256705.51 4858660.429 76972.34322 29917717.91 11509268.34 21671965.99 371144.1533 4107697.75 138734672.9 152163.5201 2028091.641 11170603.2 54018741.24 7007223.418 6330873.494 54004356.8 2484649.922 66874671.84 487532.0499 12063122.94 45623588.24 4206130.806 6216559.824 20626943.66 55525.55254 2094184.814 3146590.187 116718235.3 28937572.54 25680552.38 7358958.045 19891374.72 12804011.04 6369269.904 3360574.31 5188599.675 27337697.29 287456717.4 21243624.59 36298068.96 93576.75834 478843906.8 11840277.21 1031445.676 11415577.23 14904371.58 +21551990.59 47.43612728 1305148.47 925.545898 49923351.19 7681336.854 29210052.83 6863642.573 4700291.829 7834251.121 47741646.96 120402.9282 450161.1715 643157.9517 96523615.09 189872998 8480824.53 10591768.31 37171939.93 421087.3096 1263.82567 120265565.7 19824.69538 664.7812101 1162695.191 53476702.47 2493.667055 23196634.87 12608902.1 670308.5256 13536308.29 26160819 299646.3754 40210164.83 1675931.115 1490325.073 10223730.12 49847.52196 1470535.937 80657860.65 165127.6001 33102.88402 1618269.947 8082042.813 13041016.33 34352031.86 62368242.17 2408481.851 11650032.51 9121225.402 266911468.2 5325863.753 45215.93484 36843684.89 2995456.768 18250992.28 472847.8753 113022.867 4152920.31 5266140.282 284104.5546 39480720.86 2265016.623 134542148.6 1074728.085 9056328.932 19784478.86 4114871.913 53014171.94 24979579.07 22541290.02 10585450.41 597596.9499 5398558.835 95757.47362 11375554.68 1735235.356 692883.2823 20223910.17 10128.04621 3149589.586 12521106.19 2112756.379 1698360.479 57554170.98 7671947.166 33920985.32 524384.0489 1405360.793 35561045.97 +636.668815 33521726.49 6887337.5 117603.7514 14273684.27 6704939.196 35552933.74 42491022.26 97097918.2 8420163.435 387595.1701 1612352.079 156731.1386 8273901.011 1317307.488 4901080.688 3410.605583 11478963.67 216.4449608 9420.854831 45999007.04 1634410.065 2950913.147 14818393.2 25900368.19 95945314.01 310025.9625 12620721.88 610631.8236 487622.3643 30847945.27 42210755.87 5840494.956 5989513.361 21579997.66 1038056.742 5755369.122 6565446.036 114619.7393 100861.8563 9094925.823 5629287.904 26082061.47 1428943.319 750994.9848 376910.3062 4762510.146 43626503.72 14826956.5 29155210.57 110711648.4 149909161.3 17351376.44 125.7378462 1531.745915 111137707.8 33475030.05 22941382.14 40591063.64 311404.9919 14847528.11 601371.4971 18568880.69 60521969.02 22036421.96 1987368.498 33599.8505 71799856.4 20750838.4 31267014.29 71.10738766 28376969.26 892241.2483 11418909.59 1911709.989 2925926.188 5806522.518 3232.171651 5462.631925 643738.2337 21705108.35 41442123.63 327755.9577 151156.2431 38612795.29 206079.3826 250147.351 68961028.21 93883.5395 28221796.27 +96610.45438 3491544.302 20782091.05 9008451.8 59844816.43 9884446.595 55090068.29 365853.0441 56498021.84 5103780.69 4782548.411 243503.7773 52757071.63 228443.5671 54890080.49 417273005.6 266464.375 9225676.419 2944125.778 6326251.152 4089868.418 14087944.54 7805586.413 29417931.55 5590662.547 678554.4594 383607.704 52801059.18 1238.540751 14039701.04 12215641.23 50706.54782 77128481.16 92093782.43 67679374.74 259583464.9 11800349.4 42117909.41 59672.9861 1768677.884 8661306.481 10513031.72 20995768.01 27161236.73 14945750.54 24482322.07 4054875.437 5248.574265 3228450.5 32356051.73 380056.8802 23606585.33 5472307.342 4019859.079 4581629.576 516354.091 593849.7181 6503784.646 9684265.721 7165729.38 531155.3499 6631359.866 1729515.255 8468034.449 397.1262603 2625680.115 1544222.747 586.1621281 985849.5282 7467205.617 4345308.373 10689068.37 12758708.31 83563801.69 1500258.435 7220784.787 69837252.58 584331.1008 6965.190173 11192840.1 66643052.23 184498066.8 48493888.51 21579657.44 67663090.05 42160885.94 2139264.669 345350.5033 3483739.986 1343648.04 +280875.5854 11618049.65 12780150.08 25837005.61 10230567.42 23456538.59 41140089.04 45389.22004 2341.828416 6458477.24 16779405.69 162399941.7 14959399.37 14929578.65 18369342.89 150262.522 39288984.39 6368723.433 7999650.294 56889799.14 167136.8157 107073574.3 2129535.971 83935641.79 19146917.24 28991259.35 411266952.5 27785340.88 2548360.438 35561903.37 57760709.78 48644534.97 57923125.13 16019918.46 35085645.43 6879999.47 3005214.806 33042172.32 101367638.6 1362489.992 27593854.66 4867975.918 69931793.41 139631.3921 1892876.826 715.5268656 941642.2947 21495783.64 15762446.65 2453304.64 22883522.65 28125.86912 28451909.58 2740447.749 85173032.76 32696717.62 16973.76608 920170.6731 53015772.13 472328.324 5240685.869 1174270.55 3345.907018 30538967.16 4085983.105 4082101.531 142573.2102 15942403.4 50991310.68 374382.4053 187377.2212 1692482.754 25814935.86 19876821.39 1125528.246 12728259.82 128858561.6 9670.336194 6500968.075 1174614.9 49649098.08 2205.17719 2916768.823 90343715.5 5874497.272 23730132.48 14107951.62 7182289.309 43209240.22 702456.6808 +87100038.82 16381887.07 42858044.04 25874302.59 44839848 3391124.683 385350.5959 1362385.68 43401737.4 20866006.84 4115168.781 326651.6134 42221791.62 1669001.055 977376.5664 1790907.098 3809290.747 29045642.89 920999.3719 7137453.244 32173720.24 301086.5212 2087689.903 3848431 41910400.59 12947682.52 11000.9956 609024.0802 19960075.08 16560011.25 75183.20186 4540766.885 3197959.558 12064522.71 6250970.575 42638229.09 19709803.34 28256.44415 102916.5132 1230810.536 252105.9885 2693327.678 155680.2036 7951379.398 41263140.87 7759110.95 15671960.94 2655536.166 67014417 30432795.77 14306832.54 2753972.738 34314333.41 101897570.1 12262411.97 445217.515 328511.9841 71719738.47 35447250.51 58577876.26 1170599.307 6084406.087 2940759.748 2828535.166 17327.02152 31942191.94 9397822.426 14620028.8 8387.451762 84942.61141 10388730.71 14122388.96 14433379.01 45041978.41 58403.12606 1011598.367 11540302.14 153574127.9 193077.868 2917.232915 2876584.694 16785275.29 18582691.49 15679835.57 6989530.374 67493429.13 234523172.7 4054942.991 27788.53878 84740620.77 +728361.8658 17226.10595 947665.0858 37943668.96 7380772.44 32074463.94 842609.1614 2934676.621 72835654.85 49648568.16 22190760.96 18687823.25 6495338.133 12420780.05 2253242.7 5436048.491 447398.1818 3604475.997 55173266.67 8981138.723 38955659.4 2495082.725 4542989.838 108453974.4 10836125.37 1471437.414 51741347.41 4630001.008 14782929.36 20429049.02 15513176.66 6199.807225 24277.42992 16622512.29 4672400.741 7015265.224 3646.442555 35278.46656 229621.2296 69323165.97 1743803.405 6091570.252 29254570.41 58414991.59 107470069.6 164097.5503 6833750.206 3272051.372 48377532.2 42139047.86 4555626.509 126105723.9 94522015.89 10463.95266 85522390.23 760114.6071 20725039.45 34064699.17 9470593.578 50657401.51 133491.762 2788589.826 5429838.454 4638109.531 42375238.52 19640149.38 30925674.84 4378204.003 4504673.992 7882330.244 11908674.25 1584415.743 594850170.1 5800512.685 6989864.811 710676.922 26710433.16 5902385.743 98012890.32 853235.3836 3397063.224 12899925.08 1266218.805 14480610.69 49017632.41 92792333.2 4979728.279 51917721.69 5344279.46 1754843.875 +1831336.688 20895799.79 24101411.36 3063064.892 1153998.804 756.5844191 31716.42273 44690999.37 128029423.7 56087731.25 4501189.24 44557171.02 3971845.5 2500522.63 7136339.696 3288363.39 1286406.399 28121034.74 4877670.716 168790.6465 47559032.9 23924142.71 37111796.62 45281503.1 8261304.814 38281634.53 15835621.3 9067575.969 804527.6861 3912819.668 48937628.28 2645108.174 131980300 5764970.745 27408821.24 10227219.39 5255.459973 12630694.47 12598132.74 25598337.52 467409.8028 148840824 23995761.61 296104.7902 7340546.117 1363396.133 11286195.73 2375602.866 1173816.149 1453930.703 5791030.664 32118.45432 26979423.89 1074093.008 30794713.3 28313084.32 17834905.94 162655.6422 23615983.06 9065700.87 40183.29884 1285264.028 4199901.225 152403248.4 146813.231 52776962.36 1481422.984 2839894.687 63189210.29 6169773.508 7254555.566 9674438.512 20026577.1 1536375.365 10706.18472 68158051.75 28997916.22 1200062.928 19774906.21 5962158.618 29510548.78 83431.57314 1895947.948 542650.8044 7369660.633 2321089.806 36617749.66 4607584.759 1499281.134 725514.1933 +5761301.689 12533851.35 63495287.19 21106214.49 749403.5368 95794.71541 9990970.992 49945449.26 99029.08805 1544597.186 3721688.309 26651133.47 209229.5717 157986.7067 47362194.77 28938047.74 58347375.86 269980.2243 916508.3279 3076056.403 120962526.5 4504958.827 654.3387925 51100972.46 3783663.271 337587.6723 10999664.43 605872.0494 29643561.58 12683737.15 192860.6384 43466525.75 15061003.02 36419170.46 7698405.097 34571.38995 12357110.66 32054633.12 32812127.25 27199427.31 13555750.11 8752003.822 18074493.67 5314001.855 16062086.79 30937.88766 581420.7558 5371.904654 6969359.187 303749.2767 28899683.91 10644572.86 15215491.99 27568045.31 19444392.33 4622681.936 13706224.85 2088282.903 1313306.588 711478.8088 19884733.14 1043933.657 451388.3741 601402.1034 31016949.71 5508913.44 338630.4159 221787.0197 11070617.73 55382688.37 2373814.228 66483.2441 12182754.9 1954604.467 6389929.016 50386950.23 5705.227225 503578.0454 16647453.83 39753472.61 39099505.82 394121.4802 27885878.43 9437264.955 6410400.299 1411143.203 5986821.356 16298624.13 1465156.588 100182472.1 +177328041.3 10964260.61 16511428.49 572083.4212 3994081.362 19890253.57 31588778.51 17790256.84 6280512.164 9353923.191 36780638.05 161146.1276 52662808.24 6197553.639 103256579.3 5325637.142 708180.0349 76336057 17819176.42 23364.32434 309941.0569 91726.03289 73141.71978 2275434.168 174734612.7 24336324.72 29868505.85 34341.07109 113392749.9 7217846.181 13324598.32 104385542 2115288.277 582686.0406 262767.2194 83937829.29 85022.80289 2998089.524 2165175.157 9369012.2 2103798.558 2310404.71 100490.2766 4197.065696 41637.26151 20716738.07 25015318.73 7113572.758 28264.42682 11653110.79 9877609.483 1463101.475 30024437.43 25120526.93 46005487.81 7222361.783 1537709.738 765303.1673 129962744.7 952752.2975 24705954.27 8241239.614 2766721.892 39327873.98 2227138.139 4974752.463 466388.0145 9568931.511 5759689.024 12176257.06 144443917.3 20797761.15 178332.563 1406320.153 706694.2263 979571.8588 2604235.35 1351249.931 41945904.04 105497.66 3883020.933 4221.352929 17380834.4 59196.99702 972987.8606 6521.439024 37167076.87 1685016.082 330513.7151 10736337.46 +81617898.23 59309.2713 9670537.519 39244.44935 1086319.484 31845221.92 1251979.653 22160613.04 18573498.5 12236791.75 10162903.8 2246297.089 6007157.108 3577982.773 15837621.95 36615.57825 27113965.95 39197379.52 98331458.53 93799484.41 354250.5115 4229542.937 13239960.87 54357124.82 1658418.452 10259186.85 704108341 63317920.32 29820953.92 2849777.939 32859569.28 2801997.597 154502.4825 637746.4014 14910522.03 23407762.44 10411418.86 1834610.818 36801.48707 35045756.42 69850651.77 31469170.09 535835.9189 19493519.02 962572.5984 8262963.454 1605871.709 51589247.38 6385550.733 117908.0867 37594.8842 540817.2839 8200344.381 67529908.86 1058772.746 31573872.54 26824629.26 10338425.05 196022.9483 34743793.1 15130702.76 28924.37384 19062958.41 2145.519499 19763219.06 19264610.04 7360.007771 2012301.526 9582401.502 11687268.69 6659.821148 264907.0707 134051.2203 29647497.35 5175080.249 30487.96709 514705.6641 18305689.71 77089090.88 24727676.04 69271147.05 185423.9465 599859.9321 169576116 51305694.04 941271.6983 10649877.34 126901959.9 733592.7088 148941.7112 +23056153.45 47225.66677 103261.3205 874008.3455 4620176.988 88249.60503 524689.9718 782070.3205 12760424.98 3655731.07 70831935.31 419541.7768 104852410 1069481.245 335513.8749 21614157.69 7106.974248 13387842.69 16574394.76 60395308.16 131833537.6 11431.92669 7458.823669 3594177.836 48679.44052 23329497.68 27941417.99 10282238.59 26858433.09 25738903.73 37470450.8 17771887.43 108229141.5 9303559.22 8445326.279 11092349.01 1736273.149 447576.9993 1114477.388 12593752.99 135379979.4 158154.507 24616.48101 26178.61199 29105660.91 168271.4964 14288871.65 16023038.93 10350447.11 68398.75354 793217.0341 138225.8425 6475087.152 21701603.9 67264311.43 22245.15546 11864080.3 27422196.34 2671558.244 154327.9524 18328523.72 24028278.66 154007.0298 69184270.19 26103193.73 6309096.654 16400096.5 2875772.92 15689321.47 4623015.385 39000800.98 56233576.02 24926620.15 147644460.5 35839779.82 10182.99659 5660.739293 111614.061 159215805.7 12533.7829 74437787.86 32981605.65 45893125.7 5797184.178 341712.2341 30704612.54 72073880.56 376638.2199 58148.84788 3461019.179 +18814952.48 324136.1219 20913987.4 31094698.6 3237296.685 15915528.42 44085.32101 132008268.2 18234103.04 6072091.745 1061531.639 21358604.21 17158546.66 12027981.14 555718.9494 690206.3768 14663868.08 5693413.938 42436.25653 5535765.124 7125570.09 884.0194837 1224.478715 103573860.4 19065294.71 25584.94716 32997402.07 79177967.94 14.79404946 856946.0246 24331266.37 4255584.677 662.6249831 4311836.28 6728369.861 66985455.97 19516423.08 127127420.4 1037486.373 168449.427 94364647.11 74196260.55 37825423.57 55501552.76 25864620.73 15906223.28 289856672.5 38333851.98 44128158.21 4336792.148 103325514.8 1317114.088 3551775.276 60983965.28 115815543.2 920112.6977 33706255.27 12670830.33 2004368.288 678572.3016 33896701.12 78235064.64 97.91381286 51247925.39 270779.7931 1006148.137 79102664.12 361434.2501 12113064.31 139302.3215 82998269.46 22366451.29 4146536.719 66424.51429 36969498.17 11996046.84 224265.9212 47711928.77 680147.4305 78955544.77 6234118.92 42494626.16 63270434.28 47969.64639 1410024.113 6036696.489 8399016.897 9471542.376 247026879.1 7715484.005 +4003.286322 1301801.306 50783113.2 603142.7398 15313823.82 132509.7262 4761863.387 1011770.4 3642544.896 43104811.07 1500806.477 29095325.98 17646320.24 74357334.14 927361.2562 40201465.8 47893635.54 4504269.029 82264629.5 11450195.85 61878141.13 1859291.73 6614777.071 22171.25714 19617111.1 4185554.67 97757534.57 46241.05889 9661461.06 1086747.916 11778754.85 1657710.616 9170945.188 3878861.104 8683562.342 5164637.972 186506.17 6187771.335 2350899.228 1445241.661 9021659.159 4881505.555 10202778 66358274.58 89327352.24 147771.4045 9793633.419 5007570.791 14571960.94 749265.185 80132475.22 77438.46623 1946171.423 115549.5854 14360456.06 33199633.87 14449836.84 379083.7461 29357599.38 8868924.624 159428.7482 1081484.107 299323.4514 858733.6599 116754026.9 51627651.94 8410248.223 792419.9907 1543199.87 16748864.9 46585225.56 26894186.74 66298922.01 5155571.655 2096.2614 740.1453074 88931381 261898579.3 7732288.73 20584818.63 4805.708754 2911890.646 38141612.89 26740017.25 6548241.099 1078575.042 11749180.81 54805546.37 21246096.91 535220.3735 +73220.44275 206952.5569 36165625.34 1086933.444 12917984.54 1741582.067 61720184.22 6541311.619 7803898.93 2444103.365 28756539.95 28436403.9 605704.6189 15023751.61 1540.168673 20790591.64 5363297.29 33178.91313 729155.56 36242743.94 9318112.125 49126114.86 170387672.9 2570.769674 1718296.005 79053618.35 18380762.98 4766028.013 50980953.33 2097325.018 3010.892106 817507.7071 83082595.75 20972160.67 100253708.2 151490091.5 77028042.69 3001204.624 6984701.59 58155750.34 5281915.056 1848257.14 6939887.159 4057912.13 146.0790734 1061466074 44964791.93 32227741.28 34355322.7 69329918.88 392804.0622 10365621.48 4745197.463 16805.70791 3415659.768 7439314.774 5565599.244 2833334.287 22827468.14 50794160.81 12425443.37 1210118.097 32227873.03 612010.6889 12623079.32 68707916.85 424801.5773 36531628.16 14086956.53 117906.1389 106997365.2 3834283.472 34609541.2 31115117.98 1367265.63 7307612.643 65345658.17 53819.99975 68725087.55 922503.1902 37804399.49 24120.455 393986.6783 36050728.99 8924429.113 13674799.79 5042524.356 3199778.222 54792438.09 167098550.9 +4430640.169 35103809.71 2797200.87 28883716.96 10038896.68 1622707.417 3482795.936 10106174.38 62191.78342 949662.9353 24168672.15 470397.9822 128470317.8 5279503.499 63221.22355 136.6557229 60566.6381 46376503.57 10460494.33 16185265.57 12035216.29 6877352.509 20068.5403 3072332.388 2602009.893 40657.77233 29549092.51 6510222.453 19551412.4 5763476.097 28804909.05 23813518.91 268350.0734 1496414.684 18964182.5 5995.262696 68707045.31 872774.3826 9980642.189 26947138.16 7702628.733 938741.4863 7520.761608 4528399.73 265407.0508 17620464.8 2818099.559 79391657.78 41221233.7 29318382.99 2695048.582 58567554.22 8364238.265 12319064.64 26176384.18 216.2831004 6823580.872 10071966.8 44335.1026 11314866.63 26583821.08 6220.030862 195348675.8 5635916.576 31379119.95 192151578.8 2019017.746 5837093.081 3346405.154 42666.67814 3228868.388 833044.2206 443839.3727 1491555.807 24086011.59 10844687.4 3108839.008 15999234.4 208579.0224 5490654.787 31888456.09 16879070.73 47907492.44 488244.9249 30795334.72 22601276.94 28409185.91 436369.6881 7592558.2 14006619.82 +128516914.1 6153229.656 2626192.548 4168759.056 1056430.259 23346527.74 561817.0787 231236237.7 2310167.432 30071708.61 48115.6375 15186228.02 92549168.95 15369937.44 28490347.21 7268614.276 10722611.85 118432419.7 30206388.66 4955712.531 23845962.12 1311459.68 5725525.576 14095841.98 1812485.693 6223843.983 30346004.64 5971267.796 19409088.02 262443.7247 41112200.1 5548673.29 61281986.48 75266.85926 2427.776345 61427470.7 18553237.43 717733.2955 135011.6648 14526551.41 53642493.1 28355296.65 757762.3169 120481.2443 46787753.33 14041393.57 357844524.7 195.8007896 33798686.23 11839874.04 37559857.82 60685.02272 29450532.85 1773.486438 39553488.12 1761.670804 12890206.11 14070281.77 115519.74 862966.0218 21167493.74 30226480.16 5196756.585 57880513.17 44906527.86 2059.744156 6285308.67 2622.998513 21135625.72 11804120.38 55032948.24 175677.8473 2134154.935 650816.69 8320569.162 11540585.31 477671.0131 40673660.53 58739.26534 3726456.596 23226589.99 14919038.01 3152857.62 575593.1792 34310693.07 108181675.8 405894.8074 3000012.854 5375211.389 14598825.39 +22290558.56 118376192.2 17392746.38 1114153.498 37048692.9 3618351.749 552987177.9 4397771.69 6327.890165 8980365.105 87946.45584 744599.2833 18368980.54 37228329.25 83736808.19 47337913.37 6011824.15 29611021.27 13226138.17 55837204.81 29389504.93 101850801.2 1457196.943 11049350.35 47878362.72 22590472.78 19594858.57 23333256.36 73079459.07 134659688.2 127024.8144 158970618.9 34684791.86 742931.0141 19244276.05 2073205.82 6244892.138 4683.699163 9633953.296 128392.7306 18015489.71 767552.9035 603805.0593 14147279.53 64434.18744 25664712.28 90295.13352 6860112.773 29540034.8 72277.61559 52861805.57 286132.7816 24220294.66 2226448.036 177789.6551 11171521.77 4950482.331 6570670.842 56962156.64 56400554.58 99720674.1 66504449.68 3776707.896 158240.1809 20201189.51 29310840.01 9022150.167 64033.72671 34002543.44 751589.796 26329483.85 43560901.5 36931467.85 22824793.02 49807713.43 4800650.56 21637523.54 27277912.02 2429176.846 81373135.8 17521400.42 10588644.67 67502147.71 1540970.969 7558011.739 804428.736 11482851.02 60184.94024 641094.1152 59254612.5 +63318.21378 9770121.894 250131.0927 110187865.3 139029659 24334656.32 38743690.87 86600996.09 8460936.715 58534769.12 30.3535506 2081225.877 38033375.24 20911972.92 44523566.01 10967577.57 2778265.796 30150443.53 3221704.934 9349216.563 64959891.83 117761811.9 1388369.511 30890846.31 14440431.92 77696754.63 68162733.13 117338028.4 4942578.808 68733359.75 10481560.7 16473187.56 1941352.962 29610304.22 2213700.469 1274651.626 9189754.076 171267229.4 54580213.31 81198934.73 29248871.47 10146494.96 5064.485249 74466110.74 10511526.12 16899565.51 6029042.463 138376.9637 302.6825315 113183791.2 59312742.49 234724.3383 75936.64806 12262850.61 3819878.216 127741108.5 73348.62711 614928.9915 221914960.4 11051094.61 13258447.16 126161.4736 21172842.09 17009127.92 20458994.64 17290.40002 30329524.05 77300930.72 11349148.84 963.9347969 72232509.25 27685673.68 2012.756611 904161.6693 67273113.34 59268405.81 32804338.14 116855.741 767710.6884 65043755.76 52438866.62 37814380.16 22313991.82 167629320.3 6481233.93 13263.65913 7530220.205 19229840.54 68764065.36 158574.3277 +365188.3667 7135506.72 348552.9967 1266.16466 443027.3749 14475629.27 1272392.406 621232.751 13484447.21 77.9200983 6848002.544 5808568.978 27232624.37 10094554.99 11884.39777 63124431.1 169288053.5 3281099.201 72590676.11 1979628.518 43447349.92 93252232.17 34894843.56 17421841.43 1786357.134 90105209.29 12036.13041 632840.6902 270925.1856 17772719.68 13183.38726 1539892.344 91703883.99 32406540.94 47424845.42 167369967.1 8708141.576 994818.5648 11068.43712 116171.5344 45102139.8 374.3573259 25185446.22 12886844.03 4769734.954 136087.4019 4323442.412 7604336.727 87804626.7 42766196.03 64962124.84 23090.57068 32852.60395 24841.45914 29841083.77 109926320.8 347112.7812 25629263.19 22809.74747 5626747.705 36711153.81 2131954.424 16641906.98 1876727.685 1121091.005 51851794.4 16210620.75 64159972.3 6519.953296 24971526.92 2361.476154 4083535.64 204.2799523 188456.9142 2682.54785 9255802.434 5140.272557 20408264.39 23775245.25 1175258.826 91584.49207 2408795.756 19307983.42 92067.47904 12023.14498 10561111.59 65062376.14 1478952.466 206342.4362 8932663.353 +9518476.228 41209418.84 152504211.2 394969.8915 65402148.5 5469777.665 152510601.2 14322.33151 48766258.43 2602302.146 60691.48045 22766261.79 9586005.621 4939289.432 14936973.45 15134184.5 15904130.65 7343232.159 4238150.727 1278132.243 1010998.896 8096.901199 10639125.13 2291121.882 352953.0667 3138861.469 71494.12431 74059655.78 24022326.67 277086087.8 39373768.72 18198186 29441215.72 522693.9612 20402841.85 92294.17165 1173843.905 2086915.622 30616884.87 39079.38143 57168533.36 444369.1934 41748947.65 10625473.09 1293535.216 18913.4132 87510.72788 18877593.59 648516.0282 29161858.12 27325968.93 51438211.91 49871.33014 14341251.96 10580656.78 44076838.23 1538938.356 13104594.46 7344987.507 1255566.053 2995196.338 11323465.16 1075739.083 127735501.8 28851395.71 135731.3909 43921836.69 22870835.83 26302352.66 862865.4312 37477233.58 1925.337622 8190041.78 1139486.524 21109319.06 755685.6583 230967.2239 34467001.19 23918.20422 30606079.53 85843.47983 75490559 135728.7101 2675337.636 16410359.56 10491160.12 38083919.32 3776231.859 48367350.73 12088289.94 +106709985.6 11338388 1384.655758 39439660.72 420252.5564 51380861.4 138974674.1 10535118.63 1033289.828 29296.45215 804089.2334 2170169.952 9245305.702 3135415.486 37420935.63 28957411.37 73234.21956 231356.6487 833686.0523 13465382.79 57750744.78 25431.71809 597926.288 7341873.402 56980928.09 579834.2319 3759557.216 2142970.732 73676649.58 32725608.06 67000486.03 6021650.274 6648.048702 30432.86855 6431554.205 9701507.198 28735671.23 997915.7024 186628380 36146.58073 28753501.6 1004586.467 1359882.38 2176914.503 3375045.664 162038865.9 43654557.23 46325.00352 45252309.11 9860614.12 26069.19355 324545.8175 6182695.922 96225453.65 610109.5996 6334438.306 1053176.344 57.50185516 24510134.68 8830103.205 6218821.648 67864163.83 1304558.248 19975261.33 2341453.264 70951311.5 209740.898 31152541.45 32594633.66 44326217.31 1078259.685 16303296.56 287604.1278 12218873.94 52835664.83 19577731.26 60594.47189 2079789.218 33544991.21 46932765.63 1580977.213 10854990.75 1144665.944 1951145.096 17259802.05 616443.3442 51299161.34 24711209.99 8258879.758 3454793.237 +12174782.26 2566254.107 15286503.18 93767546.16 194629721.5 27714990.21 903215.1773 1735245.395 4878768.636 1866618.363 7603665.008 108752631.7 5456534.048 24348516.8 34970941.97 25323152.41 40190569.05 61884823.3 311175.5112 13628326.89 3129694.142 93688.63759 5823574.831 55920861.49 32572104.46 33022484.22 9217.941038 76964566.82 290008837.1 9859331.57 2852291.518 12655238.98 2425806.844 6987144.501 12987456.41 11374958.19 60553911.46 24380199.96 137517.8118 62071339.74 9748352.417 6382457.547 2006104.76 660984.0079 34487032.15 26001581.11 124281499.2 2084871.535 5999604.14 17993936.55 59890590.6 87136.66681 1113550.741 40142571.48 15027031.83 1415157.395 43422957.28 10250716.16 1197975.331 6927821.714 18093759.3 97374152.59 11136.43123 24681345.39 1636277.894 830689.4854 31785078.57 11733728.43 17813.08333 542172.4719 26964187.28 316420.73 344805.0667 2506356.66 809161.9329 4029267.42 27635133.6 30302327.61 11787350.58 40920013.51 103921.3206 7345560.329 1382438.02 24405164.95 9621746.78 6419846.884 8288.893518 219100.103 86966321.1 2289905.687 +5845223.552 811442.4846 3639729.407 43489258.56 1121275.78 5385578.315 6816482.618 48236496.65 6775202.348 26418162.53 6867238.66 586346.0783 215861531.4 595020.3573 810397.7003 8354.036412 1730846.597 27052123.42 10218668.09 17420171.77 134685.211 1633835.775 376182.0143 9267804.699 371364.2016 6943489.768 39350236.55 290943.7768 5518908.358 22162837.47 6138025.569 22511527.79 5890821.861 9135482.1 126733330.7 150849.7865 185658.7924 455885979.7 45321188.09 807616.6107 136417.8452 32378873.16 122763186.2 9156700.81 17000367.76 455582.615 11188484.84 2469830.992 13041818.09 7689068.948 17819082.37 672946.9489 15665359.45 1102574.591 7870.777467 127867823.8 2952358.508 42770485.8 1221087.808 1765345.118 14810714.26 4910313.438 7119934.999 2304578.323 120613.9275 446958.1229 57077567.28 53341342.01 340435.2859 173742079.5 66817295.06 73086560.3 18544014.18 814530.4386 4130613.634 5009869.301 15019201.98 1995351.085 7374382.175 24355233.22 5835369.121 2923221.37 77276448.15 4445270.276 34568544.35 10427474.11 2181878.691 2853177.573 158438.2912 44211222.03 +3189699.66 826949.7846 22294476.23 4788348.129 2388924.687 5410637.285 8173687.526 5901382.189 5625970.765 9001342.542 10839266.95 34690894.41 10752049.19 3951199.163 58619299.73 134244.3291 24912.75863 19630165.47 50137283.17 226617.3135 49574422.79 4377647.614 1182484.845 34809995.82 5915783.456 9872178.534 372631.6473 29285546.03 46074.36749 35967422.7 18654963.05 489758.9354 97120136.11 23225.41041 9610235.46 40947772.92 42082.07304 31628816.04 12529866.85 214196.9017 5113198.867 1579544.307 807461.8824 189931.5994 10486462.54 392985248.3 1249671.8 36879656.94 43323793.25 426206.7819 5251299.7 42991588.45 199597.4891 3910151.708 15231257.87 27217823.3 119558267.9 51453881.17 6148954.756 68994805.21 11110836.44 65217660.8 684049.9983 2689837.72 123753.7907 976385.3619 21328399.22 8053.973649 108603738.4 11087887.64 95530.24661 474.1195366 3013.009515 4184471.204 73464803.48 66718011.95 1453483.915 322911566.9 177046.452 759966.5803 13894.48689 5423654.018 63011.22654 2720462.444 18511.9136 118724.3327 5928485.512 103483386.6 553.4370247 13275239.68 +14185798.03 5587886.609 35989423.42 38184026.95 596477.8961 12181.8149 14879149.59 3031696.305 60084540.87 15332.97985 18423.99688 3771757.417 21623.76173 3263734.613 6034053.72 76373381.31 814768.1899 16268032.11 190241.3206 42600719.81 69229469.58 105.063931 6259.718127 6610575.247 1923043744 43680771.58 17200444.3 2888137.14 1200534.296 15692401.29 3683.444379 8267396.755 38161.50497 12775877.35 17741226.39 177401.2718 5272435.927 8769883.237 49570298.64 135572250.5 117263934.6 19181048.72 111254.4963 31331988.12 456993.1872 198511.3234 470729.4988 15188837.86 19306.66195 30104.14924 903947.0919 1314959.862 313837.5908 829091.5229 1059301 4654876.684 22258138.96 896199.9685 10732272.57 1733333.757 5444060.938 4131.205172 1446152.185 93.09423408 38318296.12 13837559.34 6462982.417 206414.7732 149310818.5 4747483.745 36150.83991 14970.97342 24766243.31 15595101.7 7491131.203 2251244.634 48372300.61 23759106.69 96773954.09 79472428.01 24787617.99 9727265.349 197.2355068 19419999.68 40021356.86 7273940.045 1961370.055 30952895.8 46975963.1 1774020.121 +8135550.303 10986853.26 5640320.523 37082728.74 7562142.454 87821063.92 35159265.04 1243255.531 24973835.64 8804240.823 1300709.495 1376083.32 131824310.6 28463757.72 31446684.93 545978.1651 17659009.22 34709061.37 21273723.04 4323634.965 3333816.497 13252.12087 49164.49671 473619.9532 41079944.22 78367702.55 82336.87351 54150402.17 996761.625 5434915.183 803722.8491 6047005.142 1503490.368 130595.6518 35165476.78 9370236.128 6424319.645 20188999.38 31253906.41 17873359.03 15342445.56 3517946.162 440485.6657 13974870.13 887182.0026 56551516.43 360073.9383 16764091.06 11793211.26 4692.449814 1914.245095 27256701.9 139459.3453 66722.12458 19910732.02 33115139.03 264.8226856 74875601.9 47943.28423 3680287.199 35060227.54 48383591.27 2784390.313 163.4634566 18205854.18 48952240.07 4520904.702 36440653.35 9661763.442 14981322.86 512034.1801 66676039.59 293455.345 43371227.09 6158679.128 18778319.59 1770015.383 21132.36879 3976783.833 3111672.656 60.26639498 2034001.28 14961824.46 74729854.51 68257127.18 16376307.73 25100575.77 191636388.7 86419962.67 38897997.87 +49160063.02 5609262.272 17310434.54 21503720.78 771185.6554 260592.4664 1045273.205 1106249.193 513.5603736 11940174.77 2640827.195 5594748.237 39191506.27 61140664.04 51065058.71 317853.4451 71097466.26 136411.4213 38728.03641 40656653.45 67162196.07 40634179.09 80505704.57 30477392.5 339091.073 129651451.8 2034147.164 25633.24673 8259973.171 11802591.04 12810442.71 43043959.95 754538.5455 56789772.51 2979370.33 175777.0307 16500896.02 3128401.971 267163649.7 620749.8395 130175260.1 11988784.27 45187125.99 40427338.45 46879853.66 2446784.468 45189209.61 520475.703 18085337.15 72001245.68 64660234.94 3218334.807 7878040.06 5651.871123 33445621.01 120602383.3 8172915.43 39199626.22 10118880.72 33103515.87 34920027.28 30537461.23 567158.1068 10973295.86 932582.5829 14899975.21 11647209.83 16357906.1 12047947.15 9449623.401 11459221.49 3089398.186 323459.96 249083021.8 66614.7471 705458.6553 38286307.18 5340789.05 83477788.67 24078910.73 4800440.039 28467358.87 63092105.02 7004910.502 2456872.131 259660.774 319804720.5 2334624.877 1916628.174 67415611.04 +3173438.091 49482.04652 22302952.36 30843445.43 6595.448373 205742.928 27581740.43 41521716.56 824833.1578 3359798.948 1711681.836 32829613.91 610.8889107 33325491.25 213095.7972 30913501.65 21711897.39 6202862.437 4775976.308 23678846.2 351965.9508 1122211.997 11180780.32 12996863.67 760680.1698 18022914.85 4365081.832 26854618.84 12625612.75 1528715.554 4109036.541 328177.4666 43513407.56 3011832.764 52938.33845 14981.90929 6854591.177 2853212.213 48027.72984 21359689.47 56648757.12 21748234.16 66654.51552 14025624.35 12907154.13 93155949.72 1134012.528 65121281.63 6526740.439 33797381.29 2908178.195 691456.3583 75421097.21 4914232.044 818.9421544 12951310.65 754524.121 4320215.323 9666684.558 75472910.88 3092432.064 19228713.42 1638723.002 2812354.748 990471.3285 1257589.472 18486336.33 596696.9057 10505361.6 7977306.906 6913275.715 12603098.63 91381.1869 9042195.231 37732257.88 14988599.69 37605184.06 164133859.9 16934069.63 25492167.86 462043.6778 799938.6569 99433510.99 954429.5096 483924.7392 36468989.92 52594731.86 8615783.585 14944811.46 285005.5136 +21364607.09 243360.8808 539365.2051 22313527.69 633153.7909 369197.1657 6477172.824 20928051.1 7685635.569 13177695.76 10121791.48 5996341.099 1945498.047 74583.11872 3843802.326 67063660.41 5675983.579 6151442.666 144680578.6 1943477.616 94348828.72 16029407.06 1394157.153 65094411.06 13295700.52 11399788.93 5077746.988 33226369.68 17171231.59 18461681.92 2199004.243 1612.947635 18544443.37 4420038.166 33702864.17 4727003.787 27787802.82 34353065.34 14478949.74 8631921.481 2537064.394 615798.3689 14229736.64 3161553.745 7583279.406 7740098.306 1853.44767 764449.5495 11920868.62 2870611.506 1184635.067 3735279.168 364366.8579 69315633.06 5126.541741 59562597.04 2495396.779 777.7923147 116341.1447 77425201.09 5300087.32 38647151.45 742.9630328 46602945.97 2640588.469 9795194.16 78673498.69 7544812.374 11057041.1 74080708.67 690959.6188 15705.78344 181114400.5 93573918.88 27768.67346 37022024.25 8580220.456 34267317.97 16686825.6 103698.3764 7847616.286 10955.96724 64852079.95 45267519.92 53158563.92 10066728.6 1482.68346 983060.3332 191504.1088 4639457.598 +160514.8716 1093.777521 15111.51665 1881381.09 1093.4583 3065080.802 127216119.6 8730963.061 1744650.451 51162392.34 1151419.326 78885635.8 29743.12537 64748335.76 42160685.69 762543.4476 83506620.42 8921280.564 53867.40412 3692244.682 3929494.358 4689195.231 66378613.89 3805.320102 9128.64522 671398427 32203150.18 3358022.399 5908891.585 2552701.856 334514582.1 43703522.36 96792889.15 16431394.62 40678087.88 4356177.502 21809308.94 9467144.548 96620265.4 224650.6213 167554.3681 501113.1007 1231.069656 6609753.684 2925688.194 24700.44471 4853785.248 8738960.347 9776689.638 2002392.501 930436.2861 63451935.08 17290347.66 7276779.238 411724.7749 8940813.664 520634.7778 4981629.11 8454601.885 1408325.214 2977152.827 9437210.192 36430786.95 17996676.11 2497960.954 3181008.771 1525.748579 38156514.15 9951009.093 518397.2742 33019637.64 84269485.95 26070533.46 6221882.256 16230901.17 3961630.072 5791199.951 57195113.38 188629437.6 2517842.801 920226.7158 36471960.47 10460702.37 582922.8889 6473381.944 32633498.79 58667624.44 37942.53588 51155606.86 1611844.754 +62717570.79 1239233.713 5062418.751 630007.3068 52682863.87 16432621.21 2540300.5 881424.5713 65940851.16 34478.49952 46038100.41 69662421.19 142744720.3 10179342.93 47653860.98 10186348.91 156662.8353 95591.81433 29886097.87 6138359.843 6469036.719 38723.39558 14052.95003 647998.269 9203186.897 8425458.204 30732701.36 1459951.631 26665507.06 10748549.3 27878620.67 2985847.512 18126455.36 22374106.62 2363426.887 34464734.87 333986979.6 12812776.85 703988.9079 51593612.77 89735815.03 39009002.5 60495269.82 13797591.11 899.8716499 31341408.2 340848.5542 437234.6524 32803891.43 3200792.147 7885581.437 92816288.17 46075288.87 6117430.009 2550987.601 38526445.24 1049.724502 46362557.72 21494.30539 1650450.292 7485464.11 3048110.721 91689869.01 120579.1079 169772790.9 285226.6206 10750644.31 31312065.48 18629177.06 46396687.6 27776564.84 28370856.63 6083438.19 68422974.14 45501643.17 63748.88487 24543285.83 54909550.15 19930178.3 516347.575 35632695.25 101249627.8 73769285.28 66946506.18 10870892.5 5413802.247 1550655.645 13130953.93 31645.2364 2555353.37 +1042008.855 1684986.15 23444158.56 9359997.789 159386320.7 10864302.78 2971360.357 9611774.525 139135499.2 26563137.74 3993820.615 9634301.001 24525318.55 5920166.498 5882025.586 14217721.17 1866010.986 61852697.15 55708195.37 23973783.1 21879407.12 376799.3034 20427239.17 36347699.87 581260.0408 17279.71392 97319366.26 5529948.283 41860.16761 22618987.78 15213822.2 10485018.62 3611281.044 20029769.99 15253932.37 1832562.711 10062553.64 18440919.59 6363519.506 26237.5184 31265935.03 3069728.724 2603874.134 26371934.29 52576283.82 126371.9352 153901.4085 3477057.246 15674858.35 12355986.2 821111.0562 520988.4412 3365180.814 19183817.92 13712597.88 26377850.74 26857356.76 16680602.52 37904837.22 1658343.035 31203681.44 12895.95767 33746742.61 2690.400391 16466977.77 4013852.884 10287174.51 44623543.48 3989639.882 304853.4551 64485277.35 12881190.67 2529648.74 11086029.93 7273190.853 2308661.331 16683131.69 45188.28132 1932729.414 26634048.43 277235.2364 3187410.55 5773391.526 70235293.23 12787448.51 570840.5162 37256877.01 24193049.33 4667168.389 23688578.95 +12215388.48 1964607.476 363950.0514 2500348.012 9136888.234 129.6305216 45009433.62 18303856.05 14070523.86 4696827.888 3546452.954 369097.0965 175658176.3 159297.281 10922579.35 8495904.145 20608914.37 6599318.015 9824930.522 5528405.271 43794716.59 12700463.68 2003550.991 25727202.18 157641653.5 10091311.92 32389229.82 13739820.45 3309108.434 17257.09165 42872.77264 44839.50801 2807970.855 37778.29349 34792140.57 22578467.77 17245430.41 97860857.5 11654621.82 1653611.329 3497222.437 8729174.461 11368286.99 1450952.847 3519292.932 17088282.78 5649917.747 1438.234545 875318.2849 103972988.6 105739.8327 83605672.77 839181.006 7560607.019 830.8799463 816.6381066 1301481.258 157476841.5 26829092.55 157923.9338 21317978.47 23183.49516 3337932.03 44001912.87 3002740.541 954156.3786 752859.9664 35649891.69 7883592.71 23274867.46 3407925.309 3757477.199 3892511.099 25918255.08 44342934.58 7173037.527 26605775.92 498733.9155 67808994.61 1153477.378 35810938.71 30576917.5 11942711.19 23900431.45 16215739.63 52538.43218 53141884.18 32563402.95 1347748.975 866906.8853 +5088835.474 134900.798 18657917.18 20570718.96 33687349.61 12939996.07 470198.8968 121074622.4 235975.7096 57351459.77 86243911.84 19382377.61 5751524.381 4208243.474 256205.7939 2094933.229 56721496.94 981640.3396 3477875.075 66078681.71 3525097.347 5013859.272 5010847.327 1433204.492 20164909.06 57081814.53 58356.38184 1729988.689 58106321.33 6265938.199 181192.9359 4409686.966 6593916.597 3618196.879 48640750.29 1736144.792 2159441.573 8696915.713 7763799.91 81246503.39 18685743.04 9622086.549 763461.0574 11922.25055 5057858.977 950969.502 11743664.23 217794.0593 6697767.957 71860.10458 2169.077916 61928076.75 19112718.23 11288264.32 1847889.644 22653298.61 80694209.15 302290882 31386292.45 30434829.92 40632108.9 65532683.99 51482655.93 12540514.01 28079073.1 1259.495302 680313.1773 3904016.042 7344610.115 387499.3937 19101940.89 3719238.947 17119100.76 20014299.9 20457.73348 76916.97318 70246248.4 1985368.309 17608267.49 3236235.304 6763793.034 13053763.98 1776152.419 5090004.656 488849.8192 4386979.568 24623206.9 18105.67785 900872.1125 16283293.57 +2415822.054 2672937.936 78819.84173 4836242.65 3267521.88 690.436053 3496578.323 113059.0197 8410501.111 72548.35066 22542775.11 14225904.03 12187133.15 15616245.74 5553708.83 1601892.026 71481.24543 25813886.34 7331145.712 14031156.54 93640715.55 233.5687794 11198684.51 606694.3305 1390067.314 8364306.276 4864227.82 6972.685207 262955.0292 21011.09284 7805163.485 35002184.54 4787929.378 365032.4615 1689611.956 26710322.73 32335963.34 34235957.26 42845409.69 665160.0126 14410039.62 12523487.71 209617.7429 1383079.889 62659713.33 31653580.97 23385566.72 10123863.01 140124.2486 4096156.128 175511135.9 184853.6035 721143.3879 43232.43982 34105779.78 33599068.62 8620.532834 1062800.985 13571281.35 72097672.34 509.6505007 89377.28272 84432261.07 475392.8204 385778.6045 40624085.25 90968125.97 218405.3375 7753945.062 1724882.011 3225260.945 101635783.6 4065238.149 61008678.31 3432352.518 3459961.007 4952039.833 4989775.929 15635520.74 23419060.58 13278467.04 1435604.972 7805068.087 152551839.8 4210948.301 2518168.341 19943005.02 32833981.79 21131724.69 948107.4092 +21907.64104 4178936.92 29799195.63 28193556.32 3361824.516 25982.53278 195347744.9 14314289.18 367586.3461 18405795.34 33283946.79 85280758.09 42636395.33 5509224.905 49652.35974 19727127.61 26.96099122 9786988.399 5759630.953 18881654.97 62098759.5 15651987.97 7738760.692 75359918.02 3330064.348 2908461.065 44888318.98 872061.0293 2996794.238 8905561.549 3116690.618 25479345.83 270671318.4 3157767.497 103808.8004 3346631.396 99915778.55 6216.216589 23164738.65 11705594.92 230241.4681 469368.8931 16825615.77 381005854.5 14118241.98 24430228.89 323944.2356 31913339 54895305.88 5163236.618 4650602.565 37077648.9 3003108.765 3669676.141 67974.60752 7781948.697 14989124.44 130660576.8 17489205.1 20100509.26 293195.8529 2811520.333 41362035.11 9820.575553 8342839.013 864398.9954 89352052.7 94811194.73 113007320 1309199.164 40004763.8 24026782.11 17013073.92 75102889.05 248983333.8 749052.3858 43724249.12 1303412.653 1765045.778 19150741.44 10774408.82 202044.0996 19619196.93 138376262.8 8637071.63 3988.858304 66402660.71 4162547.637 5264.032399 17135406.51 +3871067.223 22039.54738 4220996.95 68055.85905 105402.5793 329032.8099 62576536.64 22038.0167 913921.4828 27332757.58 19141642.23 15661632.68 143156.7625 71465262.35 6706213.618 3498665.372 20154046.16 10665070.69 42256540.05 202740066.9 56148701.08 15365970.37 6355128.512 31807.48092 401200.6028 16463002.16 1994627.811 1219798.031 773.0574853 2636401.968 9102272.393 18541729.25 7213587.424 3601500.74 1180650.64 70296261.37 5734441.184 567806.3908 3844087.716 47000521.61 67659216.09 21576682.65 1739235.157 6984065.112 150052.4738 17554884.8 2146817.41 19059008.67 8502.872649 3098668.616 15260368.66 5894823.484 6660149.107 3494235.726 27799521.27 297213.2977 43083407.7 5004734.065 257168.6166 39408612.08 1994.95716 12574628.85 122287.8357 33836.86112 9142486.188 48446.89837 7419224.918 2819035673 246934.7037 356271.996 23303278.95 69568943.01 1579591.256 6124477.158 113700510.6 163061015.8 1691021.556 44293685.07 17439892.3 2802256.578 42890746.99 371325.9971 3686726.425 1940777.193 17401244.18 4950884.886 10655.94415 8214429.124 104715790 12769.63926 +20817482.4 18294052.21 8030436.928 18556.65485 3089388.548 5648519.317 13230482.54 18988846.78 11709304.74 1401.127986 16327132.79 8986317.945 273480.5925 94600957.54 1906483.17 25981435.89 59285419.82 990191.7548 435927.2577 6727464.687 1656446.905 48170854.76 12629.10571 275747.542 338936.8002 37222.08509 34795663.06 92569616.23 3430762.542 1515549.854 7102768.793 13472363.87 15596365.11 44787.04789 199152.6287 7215284.262 26419.85253 35897605.88 11959710.89 2092307.659 778421412.5 10428.32082 186856402.6 1023292.167 3138856.93 36071911.69 217157.1906 17152287.81 130477.6081 59085493.42 914884.6804 22479775.82 101971190.8 74326323.64 147102926.6 5834644.386 2670079.984 242045912.4 13663891.48 46070644.29 77600470.49 65045281.43 37959.19093 49444327.77 1945961.666 20352021.11 5257.506492 17295935.64 12063474.13 1989262.938 18133.84723 22870118.92 58796325.9 13011.86323 17470107.35 41521.77165 2906883.14 19817727.74 8151.367641 13085327.73 34528822.39 317320099.4 12444516.79 44368.27953 11504552.9 2933.344112 7860931.646 6762855.912 203214968.6 8793981.717 +71663494.74 40196685.15 12812227.08 86828.97992 3204674.817 20156927.8 4587106.954 6484.048436 63417256.02 58269159.16 23269.68182 48876033.49 2588198.053 48411509.4 4516.327018 322040.1394 37506960.54 12892072.14 434821.3585 44116356.57 21284903.15 42812367.99 14594581.71 27514677.8 3167908.203 5011072.815 52927883.63 54557.96586 222824.6083 325004.1847 109019.0713 79552482.49 200500.0375 172882.4558 5475473.415 3719812.193 19049706.9 95883.05397 454218.6622 252633.9575 645333.7426 1215533.702 38774409.28 38895699.29 11644152.54 15300977.98 50255228.07 61.32377047 65505046.29 2849674.867 6878930.136 37406760.7 24433290.77 1133458.128 10920269.78 4835552.98 296118924.4 167635.7237 7857005.991 57993328.03 37558204.3 8.909584769 23078314.78 78023828.78 113469315.5 122819214.7 677622.3702 2958524.662 3860946.391 145740415.8 56113.03576 1694238.749 5142.486608 38569749.81 22057.30542 10158907.66 347428691 29133.18566 5237558.982 27236.44627 13490436.54 97928029.01 5347208.638 122719099.2 272355.7112 37457907.68 106420203.6 17249741.19 77069736.29 58643970.19 +10230956.74 352077.2852 11197336.77 69998.37547 21616744.97 32191633.15 330323562 94539568.82 15384.78584 13653288.54 12252137.72 1111.431112 4989358.805 236659.1157 1894349.003 39025236.01 362898.9871 47320886.1 15145924.87 58881153.79 22837578.48 103.5180397 125636.6255 39706687.85 24523519.67 15969.59993 29883.92513 35832529.47 49161.71418 1616228.933 57677730.46 39525039.81 5876276.704 7160357.933 97347732.29 90316285.01 2999.605764 1401641.867 29352030.98 32357211.99 4653788.067 7241084.761 53705081.38 873463.645 7496068.206 23412948.14 200643.4402 73219214.15 218218.3737 14395977.19 24406843.54 1927424.57 53134097.24 46944741.15 146186.2276 2810297.91 49854770.52 2057773.796 147431.2209 40526899.28 1291253.598 49479074.27 78908243.42 25604.27957 224008250.3 4814256.538 494139.9717 12628762.76 358058.2512 15288237.71 3890284.035 44396041.88 68567059.74 3235257.406 2894169.928 4720990.601 5257319.891 5962997.289 21592197.99 933452.3118 22467045.03 5269623.46 2101520.905 4200819.259 80364.34117 11309068.19 22388639.81 3100989.145 264584.9472 9975790.284 +4693101.258 1849781.076 56568486.1 2500624.813 1738283.287 7815071.531 168290.6425 926179.9209 826486.1233 4754039.663 195115.4686 5851618.11 6848.69639 3023548.799 71943193.85 17335730.55 15900825.62 5499633.061 684677.3641 13123248.56 35228980.84 109900.6592 11403.06763 5801678.269 56110.40589 7913410.428 2164108142 15343114.87 35456729.45 5418419.084 26393675.81 2966.301072 1801731.311 14930042.8 28144890.59 15032380.17 4062712.275 13086237.87 23885594.17 8659204.219 52463936.63 7737262.925 528459.6799 47776710.57 6656146.76 4439444.302 18018983.13 6329417.84 228414.475 9153447.363 10871580.46 1706259.902 124720373.3 2664245.626 41631541.76 14597099.68 37863202.47 5487332.314 4807998.437 20543892.91 199387827.8 399847.5206 46722849.27 6649.678682 31064502.83 14313725.17 8084750.736 6324136.1 11337381.88 77558112.39 55591864.62 16481113.89 21566312.83 7853812.459 67107019.79 319270.1997 14807463.8 7518143.165 1407135.525 197755.3919 54619103.53 19552142.55 2386363.353 13920078.46 2625154.794 53438681.01 7840617.863 77701223.24 28180771.95 7487730.099 +641706.2145 10318808.66 2331264.846 33917155.94 74783176.15 67189620.46 74369104.04 31809138.58 300267.2717 89424631.06 5087.451928 1712123.011 2376204.409 38492059.41 706239.8981 32682111.52 15068344.73 23718792.34 1681907.295 28580486.09 7173535.12 168885.7566 11782266.3 14927826.56 7643069.591 926896.0505 5288950.325 121615.3331 31911972.05 7068065.751 3496664.103 17146357.19 24734.85924 1396012.139 58858103.42 57458777.4 157962265.1 40735701.06 30643393.24 44498553.03 58834769.45 18485773.85 5636895.668 171435000.5 17195114.64 5703390.859 8232.559928 74136506.13 17783772.28 16519860.07 8173285.857 6830336.096 83122421.18 64242058.49 18338.1649 1453946.051 7957791.175 21857114.68 1132674.481 16477957.1 1301273.95 45234393.1 25344.76984 29060001.41 764557.0455 1710209.063 50511.87293 279720.5606 40096999.77 64102233.53 46772846.34 45363615.3 66280056.95 12737735.63 2648372.016 11802920.57 34095217.02 53979405.57 124723118.4 550312.0764 50588412.91 95288345.61 962967.7892 11879372.77 143016.8456 2585652.506 15062791.43 24323461.72 48660674.8 131238328.9 +63998.37819 25617970.1 242539674.9 72563360.87 24191367.61 491643.3801 348776.2973 1436784.714 140493.5799 2246415.827 7226036.834 32920399.78 20297943.99 1727883.951 96335351.49 292007.5107 66810360.32 6176.340537 4809172.149 23918760.72 73629.45854 10308229.9 997406.875 197544.438 414378.893 2773638.177 24652375.22 338510.3658 5814385.614 1815259.532 123750388.3 1111364.62 2503782.063 39114135.41 5577629.622 3019633.732 305026.0538 22098826.06 35840092.4 325763.9373 64224268.46 26224.07046 421791.5732 88549978.57 628664.3683 10029444.32 10659.04844 50657509.98 1069717.153 2527016.817 7983689.944 60647.85684 2118823.87 812227.1071 44798.41235 16745881.79 2277750.099 33211228.77 22654883.23 17809115.5 57907017.41 30230031.13 54374690.78 54009793.96 50877547.72 6122912.087 4278620.389 71712649.24 5978447.002 6868589.195 5453593.55 11387533.04 49917475.85 590611.7772 2.573487451e+10 11594616.28 282272.3471 16309981.34 3230389.654 26232958.18 152047825.4 22520175.12 119165436 1832.733952 187787303.7 5743601.741 1274417.885 7128599.304 3596.032504 5475895.789 +143292.4028 1197996.16 14488040.11 5067103.104 120912177.6 66209.69589 11725445.44 18524733.5 232713.2888 5800861.62 1881585.484 2527985.519 31358333.29 724865.91 50349.38052 96029.04944 252234.6561 473368.2395 121856635.8 54963534.11 49704.93689 15823112.8 61678.63773 11281686.22 1395672.207 7049.476057 72038.63175 509650.3896 76099.93281 8859362.322 2177638.061 1826906.423 1283066.526 49370254.44 34629730.76 61127923.52 27985648.69 21754683.9 38028600.01 54693092.03 5474338.44 1063078.547 16500308.81 2487319.623 30099985.91 21960652.89 42003.68669 139328.9514 67713828.86 4942488.887 599150.9747 9631319.478 108863.6461 29834284.17 28942858.12 275234758.3 8100585.712 14793986.41 44869169.55 4834692.117 10018584.2 204303.9061 81417876.29 16400971.33 19190904.59 119958268.8 1120.600677 117315678.9 95664.5551 36869954.76 52355697.08 3586997.587 9162619.794 5895164.991 14380.02483 37845101.75 548375.5201 25584522.22 15673123.28 135139.6975 63272.43118 18928892.22 4285054.212 39294767.89 2639381.431 20648841.45 112.6485075 18909247.76 5434413.177 45209517.72 +9836573.378 17164543.34 272434.117 20406.61514 3418275.6 5665390.849 2408.281713 54637132.73 18352504.11 32317110.25 2438799.601 61770.82072 10949515.82 4317921.516 5467215.516 1095896.678 54057418.91 18139037.71 51214041.11 43838271.41 16708138.72 14546581.39 25610772.59 76870119.82 12982708.88 58366397.35 18727239.75 135612.1516 14517096.06 7968836.191 2492087.952 9429152.75 65353812.41 23443490.9 3692777.351 3212435.021 2563602.018 16994445.04 58342019.07 32289243.07 11950499.1 35778778.59 11991549.43 2570832.998 6841149.239 136116308.2 5808276.654 6186790.011 1745183.138 102981242.5 7162440.021 3532243.793 151959834.9 115517.3989 32107480.32 11857213.61 345472.1186 45892388.03 52177737.8 21380701.88 431439.6042 50787.08235 4860.358392 2145131.661 64387776.37 29347986.57 10201954.26 137027.5084 27994612.37 1962319.172 50337394.22 8366623.102 73694724.06 17055820.13 432620.5526 1237738.234 7456833.468 26949181.55 5549410.55 1319303.904 1543.920966 7453168.133 78412442.21 3609945.808 44868331.42 35514707.28 8993104.842 155148.4506 113893390.8 22580966.41 +235338403.4 110573.8849 60733934.09 5984448.191 68793180.9 61763457.52 14443151.46 26704.3581 23424.02516 898109.6373 85626864.53 45449841.39 307480.5345 2807381.948 156753260.4 23.11406174 176107041.9 17267904.76 320638.6277 56789.78544 62936375.81 55753021.32 3044921.563 30290146.06 47450185.39 921407.4336 657406.7948 59344681.46 217818.8534 71082526.19 38877621.74 795538.8865 5865784.065 256226.2264 18523766.34 48365596.6 18391363.06 638210.8466 4103457.647 14492.46094 1620989.996 1247356.289 1535387.065 30782258.21 548667.0935 45599304.92 25801543.19 607968.3877 10068695.06 1486503.283 5084474.648 5584282.333 15752486.71 2064490.42 31847856.28 25025099.88 3117952.36 6428696.068 175255.0955 26305481.53 1763.293496 950020.8036 12992782.64 18935192.73 12829355.94 99226996.83 2370430.914 44414545.73 14651569.24 7908615.808 16542006.02 23319062.74 2384404.421 86523.04948 12373.35483 644581.5629 20804236.43 45976746.88 26635158.36 1178421.626 57140569.5 20594846.82 38746591.44 8828923.567 51597722.31 2127281.862 6349315.973 30790687.9 31751.67782 2023604.055 +1263318.944 5868307.529 3861530.723 4792879.396 32877520.92 131.7674808 8046763.38 63023829.12 113716886 138887.9094 25587448.2 17509536.06 674.6942154 36608622.24 18255793.81 2432980.365 213195810 23317721.36 6467361.549 447624.2392 413585728 7037107.434 809531.6469 59826902.86 79871479.08 274731.8938 199585.3034 2105455.688 794.6047768 100567580.5 31951812.07 82540.6027 10709373.6 42676577.08 120031908.9 3107488.868 329157.8495 52984118.64 2927511.786 570349.4553 13807769.5 35592776.88 17758780.39 3598906.587 12680981.36 16953518.58 4362134.982 6381.322409 5609637.702 31401881.9 11901800.34 30276.8302 45411043.88 2223156.798 504488.9328 81631027.67 34107382.71 9386675.894 34822388.63 7305377.526 30212773.91 7146985.959 8672030.534 6476334.895 4616196.49 3084309.125 10955967.28 113112.2463 68116870.82 17014405.65 32009602.28 3688229.758 14532532.95 21267918.9 17334326.45 35596807.03 5560288.722 35842650.22 6842183.954 44456718.56 5431644.506 11321524.25 37788488.36 23484771.51 2403277.789 1686308.201 1719459 10854439.57 150204184.1 197181.42 +16219300.35 108580809.3 17975572.77 27755733.92 316532.9688 126566774.6 807852.2909 5678715.141 1053488.565 21753.41999 27497941.8 54666898.05 56206364.93 30401060.37 18488947 59305.64348 1821574.017 89557554.03 52115692.99 22149579.38 1137617.144 13767954.34 43292020.77 1323757.298 17714317.86 169902.9197 68023.44612 31444.28164 184.2911014 5744308.665 36304924.43 1197723.677 370427.7195 2551383.313 8511700.43 2620577.424 29045226.76 89749596.04 1632118.532 736.4007706 30793753.7 592589.8622 45193423.42 380520.6814 579960.5695 152863.4517 20176632.71 42902.6591 6159943.031 78671908.61 181789599.8 394060.5992 862902.6848 27803769.59 19477.06983 3267383.291 23411067.67 2227738.963 5623923.782 70255505.31 88184173.36 120152.0828 14140340.73 33897331.19 156638059.1 1238633.503 646413.2253 16443231.56 30539065.76 5383217.351 6967.822998 29961100.21 22885814.5 58743902.5 34270911.42 2307.986021 8334110.092 140191959 3836.492274 19872033.73 419.9989602 45731873.02 1241736.278 28588209.2 19949063.04 8839238.072 2112032.587 4498194.161 24411520.25 35076367.17 +289300.8501 29274253.26 31585291.04 3212744.551 5218691.01 169453.3612 56911975.55 602110.4698 962511.4756 21447816.36 42278986.16 21357618.74 8172661.192 48817.68554 641868.3028 104007257.7 21484.96169 42019502.41 5959171.639 75231267.03 132206.0239 24200829.97 222302.3564 36349856.65 27194243.66 1999687.336 12480.22821 11126588.93 28288.804 9529715.723 14554079.71 771316.098 34329984.02 28415196.06 18835064.69 13305490.49 73737780.48 24985339.17 5775392.963 3396067.279 28019969.55 6.981348009 731041.1421 51759283 31503319.16 158406.5909 46056199.98 39671358.32 1121533.951 64991337.61 1159182.624 22337205.64 25698034.68 196614.9288 32614464.56 26596550.05 71084093.08 69967309.87 236448.5907 23492911.85 2552000.791 8089809.552 103417.4275 26639861.27 99582099.38 3537484.634 768645.7329 18073610.18 5081.139757 45036869.39 36979897.99 29563772.06 40109.95152 748306.391 932315.5919 3081232.093 4063547.42 79812.30453 47323195.46 517345.6404 80.25941271 152149279.7 7188902.459 20347296.1 28793577.47 76386184 3490512.946 174638701.6 46787.37463 1436043.114 +56115942.35 65342789.86 52776828.66 93565312.74 3503569.811 15385968.29 23063582.83 16604342.1 21498898.93 8765593.633 9328024.598 6403108.066 20888585.86 13748438.23 2633.7855 42261601.96 56532.98254 4047082.64 15763657.66 16507505.38 3487398.781 5233302.305 3332308.723 1429845.121 10479293.48 537.3080206 1244304.861 5586186.67 33993590.01 51702612.19 16622983.85 75195582.62 20235486.94 5380059.308 612112.0084 86888.61923 88323666 5440671.582 95331527.33 950651.4117 44007330.86 1054737.164 7586.092027 48024395.72 92939838.81 27116388.96 59073.41723 7706215.353 3987324.316 34376175.68 32101545.42 10522094.11 5425036.058 5317893.592 45116373.97 9683578.072 2638137.772 40265990.2 2259102.849 11230483.12 26947627.22 59863888.48 7220.896336 7253551.615 9786.859618 12125126.63 1434177.769 9490062.304 4975710.848 40583395.21 1.920066826 57120707.05 8158412.179 1323585.69 274284.0183 42.48640509 3155751.725 24111885.58 169595.709 3026603.303 3826129.633 2216265.754 32192892.72 4844736.447 247022.2485 18194846.63 24213674.03 10831350.43 17608.07713 65032.12922 +7765438.692 8440082.238 40960107.94 5831769.304 106550.1451 41826757.45 8138243.462 1033256.732 204917.4388 19097245.3 24652575.59 20344498.94 14792198.99 4956841.731 305928.2832 9747764.926 1807918.366 22955564.71 1918248.129 81064.57943 169396928.9 8472664.725 7002945.24 67208587.82 4445000 11519026.78 9547958.99 8892717.032 1737837.443 65563247.62 162927.2662 20707716.59 45722896.24 1972839.415 2654.030258 1829994.621 5332649.385 138239.4322 17532255.76 896064.0153 16370.86216 169771.0305 1576290.323 855295.6281 6827960.086 9094016.985 1225152.53 19966513.11 487285.7314 66545.45853 397649.9583 23238009.49 1691347.054 18647526.53 436040.0138 20807.3305 10309191.99 8674340.036 21951591.18 17199152.26 6920242.7 5505320.018 25730918.22 5640523.042 59769847.76 10924701.24 17149383.8 291354.6736 26115897.44 39155416.24 173829.4426 4984.262326 7554414.268 8179336.966 28011440.08 36728153.33 16889309.27 26062375.23 4533870.51 25235.83169 14503.33784 9757555.663 55823899.5 6693.598471 209642596.7 6864584.061 265286907.7 8623192.177 504104860.4 16468846.1 +3109766.765 24254408.61 8009612.573 9001.479275 7026234.521 36544670.51 4217826.389 59307.10679 9060893.527 14329.92218 38630137.06 4717878.472 248745.3602 36345043.73 80864754.58 10213.96929 13701694.82 44678479.72 58261930.41 73665.52521 347381.6584 5142775.498 27323172.31 3569031.519 302874.2832 11789220.26 91148107.07 650550.5906 162250.2837 19380841.08 20185132.61 2606611.757 18822990.43 24593631.25 680777.9251 57943528.41 283.2602181 63834329.32 10486666.98 2391670.565 27094.05407 28909799.73 49056205.36 47331.45945 1902525.638 261493.2487 40820611.99 364594.1229 37769462.25 156749.7802 33010263.27 4206310.411 204867.2239 28765632.8 1130222.262 25819693.86 3343664.748 5018808.997 3548045.278 31967.7871 77251.56923 26700223.19 17472246.88 3632407.025 468976.1381 46711402.23 241813.6047 35724963.27 129375503.7 73441537.79 699256.6432 34285775.39 53761072.17 53266549.59 50428777.28 1691654.103 40188508.31 45512896.77 14963340.07 226243.7369 16202428.97 7405723.771 17746293.11 114.6343793 37176.73162 19893265.2 3632679.704 76142806.93 135607273.4 59174080.52 +51736220.05 30195817.6 47692427.03 15456145.12 223743166 2846985.745 5890511.27 121794.9901 48908310.68 48586262.91 676832.8725 79135295.09 54357141.73 755.2130781 53162840.65 16246047.45 1003474.027 8432.457245 39476274.02 3843919.86 59433244.54 1736886.928 30665492 6526874.35 39687315.14 29101909.17 124569.0492 187692.0876 5184448.53 2341999.42 866019.9937 7742922.428 15103247.05 23938092.89 18291539.63 1684778.475 2634037.559 54849293.99 31177473.23 1660722.742 4976991.649 12222.68298 32487.05525 65582.43522 6122.23392 1720117.643 6498.39131 35033537.37 673909.4675 2042579.935 31937454.38 18507129.49 44409811.78 57790834.95 4652550.998 14160761.36 3707007.276 3758109.575 29033206.82 3551834.989 23596896.83 16397096.22 205.495051 22131934.72 4202972.252 79220388.53 221.9955084 293217.2265 7955137.953 26511361.01 8153028.542 1828578.995 25965097.96 55251519.56 2498.284272 28894270.21 25619873.32 11975604.92 23841296.72 234396498.8 18043608.61 10842227.89 42.56833194 27154415.69 18308567.85 9753458.654 2017699.216 27244347.99 1514285.924 6221161.356 +4300762.972 35810094.02 8588000.721 55212553.93 15324999.15 4533801.448 4573961.552 16187125.57 660126.9988 53073.20105 11700399.26 32831231.79 12812362.48 566517.7447 71619.54007 25328366.01 21573124.12 971323.7739 102136927.2 23400402.82 6887572.614 4947.695858 153621.2949 6569524.896 77347849.79 740852.318 6381675.711 247804.7382 63546.42788 32963067.46 31313072.27 45795103.89 3873495.936 3511251.013 100038196.7 52768204.74 45956878.07 63839287.43 28916127.44 73506766.41 10105694.11 29994863.06 75888520.24 28874420.93 2445713.561 78525.82972 89605665.39 157075278.6 29868482.25 1510.138313 17350331.3 324130.6339 14717618.24 3108571.378 3134017.898 5363655.066 13070.30578 106814072.6 146460328.2 234767.1631 86464.08503 26908303.69 31637026.03 2033.985097 14291521.87 522151.403 981804.3265 1672772.396 28862759.36 4079852.452 85065.98634 3129.773572 10069261.26 44431860.83 15042985.44 25275018.96 86296.87248 1871225.096 18967.87335 26720.74582 62001973.92 3501119.628 35089460.2 8608621.726 35357043 11510194.14 10388136.4 1382287.774 4100533.006 153198013.6 +9106330.538 111926593.2 1239369.04 53471812.57 8161728.435 499486.1277 696342.2319 4237867.649 55837330.36 27023811.28 4622555.293 24361996.66 59099136.42 33453514.72 2742434.953 19908758.48 14950142.17 101821863.4 7286253.813 5143026.527 341216.5295 49418.46744 145789.1519 42189027.22 2029875.109 6772658.621 17726553.24 17549766.43 94197081.79 17722273.06 55731813.92 81785825.16 2098373.417 22874861.37 1413136.896 106331311.9 367682.7363 7266763.334 434169.6661 25086445.03 10317295.37 496223.4667 5527500.553 65297457.31 488206.9686 256210313.4 12879005.39 84.68036091 10705898.49 1556995.994 12508016.49 152456.9082 1583447.385 1493789.226 5379.671751 15560728.1 2971043.03 35436601.81 4214.451374 6511817.989 2145430.567 7594515.57 4501541.503 18496936.59 96371.82922 12740771.75 6043168.51 15348149.85 9932274.31 67994653.24 112039549.7 2449271.519 23120070.41 9413094.714 2025376.438 2879678.943 13441896.79 12064.84346 71862.65685 19304262.01 3776847.538 1744346.645 45493505.77 2774092.247 49427861.46 1848562.651 18937709.89 5411.442703 60070797.08 32048141.41 +438218.2811 6401772.954 5671027.52 24333898.33 12268831.42 19272.02934 8758271.487 1641335.868 8808888.561 59828.17827 31648871.46 19509.00525 55507034.47 58074371.71 2569858.174 6043670.193 1951222.432 189.592023 484175.6837 6541252.108 5464760.183 774220.411 1418461.696 8830388.014 25594080.47 7891742.94 103935.0999 1336568.882 303.8556651 108345024.4 4751109.625 40854.59202 1565120.432 20355749.16 470855.561 15491555.96 5775390.186 46371620.38 144544615.7 20207544.45 1880760.12 7527915.86 2536284.829 678158.753 14876.28722 31421466.34 379.9816837 60461987.1 7083173.448 157242.3586 10709225.64 3031898.624 112934312.2 71684859.45 59438962.88 687.6527647 61772245.52 487643.4001 37612152.57 978364.804 5812215.468 11672656.77 10590872.36 22241155.34 212756.0856 9809318.706 16073511.36 433460.5233 8036608.706 6712254.761 1960542.59 839320.1871 22493788.8 4326831.564 945524.8438 1646428.727 20771667.55 12310007.43 18669124.62 4924386.821 34679710.93 3559052.566 187565.4791 15026375.74 4375979.764 6480943.651 26771993.61 3865622.474 41541013.22 10813185.88 +8281132.529 56201261.67 17490040.27 584329.8366 46514143.09 4491501.146 78181.10063 75452.29621 374602.2985 1703506.875 12257937.94 16193395.65 21955464.59 226634.4479 29707965.51 1853176.21 7112333.301 157672967.4 37468307.6 12921893.28 15572125.75 88473.72454 77609.54978 35229892.51 186860664.6 5634476.286 4687507.072 1601.457762 40401080.06 2796150.402 3086888.887 20592305.84 73566860.1 4329072.238 288330.7453 3759906.441 272534580.3 1060946.162 16970679.72 24635456.18 3512860.313 11608869.8 39778684.26 4554524.912 75113.92689 3499168.933 14132672.7 2287989.715 35670.01163 8614199.411 26279066.3 2142710.282 8734260.089 24367166.2 4962139.853 59989646.29 550894.0531 1932900.054 27653666.08 103720.0329 58540083.97 27327409.46 96855038.37 8888130.937 307658.658 41091.29555 175806.4002 22801580.77 67986.85994 519481.1096 135984.3232 49914316.28 49712353.42 54577053.04 7633140.492 85907822.25 25198629.73 22410808.39 49798104.71 11729992.25 12861897.84 10085016.98 919123.8466 1323857.763 16205875.11 4696757.129 32117137.62 41275726.57 103047515.3 74022315.53 +37365981.09 18806673.14 3993664.085 1668583.861 15838416.62 46377760.03 1879307.761 616213.6985 6042257.28 173782.9348 2515912.272 27734215.97 2806069.237 154836872.6 183512085.9 329319.652 11250.99869 90013.70598 28165490.12 25333644.58 72061859.45 83797621.15 943537.5086 213385.4541 5696693.223 2464357.347 163238.2689 720547.832 2542403.215 1554599.211 51298914.59 18472.79761 2199333.507 89231818.63 4760949.619 8409990.877 6918816.733 83945253.61 108545141.6 7062477.782 1287725.919 70027362.03 68590866.37 11859157.64 11094.04151 38425088.42 631523.654 24168458.48 42073189.04 163437894.2 29242052.86 18639.47626 14009.00775 11989773.57 1453180.53 22264321.96 5155609.773 140001557.1 56208708.53 32014153.92 49164914.18 60758199.57 4930101.435 7738714.295 25699469.63 624039.6105 3069025.926 3764636.29 6897221.375 19451500.01 31315537.89 13030971.47 797418.4707 3776.359557 32277640.78 45553936.71 23149136.34 17721967.07 9304.987602 7206819.386 726248.9833 51007109.05 38737844.51 34342443.34 4789437.138 9347932.709 41291640.96 234277.858 47396002.6 7665606.539 +4424011.192 44673340.14 45028438.04 46317.96917 23780884.15 18918270.06 546672.0432 146997952.1 10988040.85 15775770.67 1423870.566 1813448.161 57848.40082 34258454.04 9268374.91 14061332.07 6471675.25 2248945.578 1319908.857 36139919.24 118240.0396 1407259.209 25841229.87 23536663.16 105047312.2 31150603.94 1982869.933 509327.2529 798297.343 37491556.41 69300518.93 41432413.13 54488277.62 5446478.539 7641969.123 9218159.046 2658.240128 8668478.391 14413827.59 4134211.254 1068627.439 18250289.31 379458355 812108.8203 94565220.56 315450.1657 7342.09077 1619984.335 13572093.62 15875336.06 217553095.1 1249658.315 24036.89511 47908655.98 10321354.39 2685311.068 72910944.02 230500.5882 181627161.1 59385757.85 13085162.81 58138697.91 57524.21691 25487048.3 27605303.45 13361028.83 30907584.65 1902934.267 9479567.18 66583656.04 9869255.913 103156.2098 13627830.31 52956161.31 210444.5091 8352054.34 6210793.899 24382076.72 7388861.811 167955865.7 140256299.8 18291861.71 5743572.392 8949708.637 17361046.61 107096716.7 27738956.79 12193097.74 18574638.45 49339314.06 +53225054.64 478063.7304 207523.0251 258.7739655 18890323.78 101544345.4 48652.63466 3565732.686 43529033.06 26085.88907 39994774.92 2032266.109 52858459.96 4183760.358 81744.38302 51806779.47 65110313.85 9249069.458 109675.1758 5343470.824 25028072.67 38208.86871 233698.4903 26514.62775 15962399.81 6900672.119 1357516.771 996569.1966 1664359.287 586740.7841 13577515.27 5202041.136 33771352.82 912432.8849 10120222.06 1265272.891 53602900.15 28143615.94 42536356.65 1891492.882 42241301.18 12858.38558 297863.0085 19179.39522 18986362.76 4270292.993 39021177.63 507576.2033 2254553.643 4650954.057 168761105.1 58730473.13 3236032.188 187541508.1 2308585.453 1294758.744 4971850.082 13968210.6 12719081.15 542547.7536 17633912.24 4188325.335 1890473.549 219604.9577 65897235.26 62758655.86 48455329.71 83128254.7 26748044.79 5910664.758 111030.2336 4884.425588 73866.54067 10192987.03 709898.3751 16718648.01 544309.4012 63503100.53 16819.08874 91524.83065 264.6327481 10287779.62 10543871.8 13709565.12 26668049.27 1735624.932 8545.973903 2044968.659 19964510.08 7948545.113 +226924.205 4314792.299 117776174.4 108390219.5 6226587.362 1165378.524 41061979.43 4026127.592 13009074.16 7762148.75 73301119.19 3770407.15 80108808.7 32492.98016 12230.69396 29573149.23 1824991.375 50560685.56 5391517.871 12500129.9 3512793.439 5659213.817 14792001.49 25616718.54 454723.3337 52356292.07 97826.17048 7622.850121 39980329.54 1644278.648 3340037.486 4605661.82 50129937.55 30362940.14 11132968.19 4899983.666 44594408.37 35390.82715 67039.74246 229739.7604 2031679.399 64756655.19 718016.3309 34343.91297 1103377.31 22794940.33 4824.865182 4937344.448 906569.679 1069515.903 11579474.18 811896.5167 177609.7856 1120837.648 54789313.64 5261846.909 21929658.77 44789179.45 500510.2033 16745865.72 20006870.58 24656392.15 62636.82579 26857211.54 10869.0844 1668323.37 986346.4404 25520517.96 5756167.677 46169994.22 62.28896822 15800527 42841327 8111555.978 17351748.27 1191647.566 31746183.01 57705279.51 56690.99447 32691.85459 36196195.21 46392934.44 8353.830629 25238568.14 93275219.22 2670130.823 4399257.198 1127271.834 333535.4038 3151927.446 +3749565.574 2581.787053 36934123.31 41272013.98 17688412.83 5503457.761 230440987.6 46183942.1 451026.8626 9808278.714 90849249.04 64053.52225 9294206.205 2084843.265 7715288.796 8356953.348 58277727.3 33880702.42 996749.8726 17141.14486 5525974.053 2655000.535 31400254.52 48308645.7 8211.97063 1484582.667 3198860.765 64017680.55 95725391.39 27986639.13 289932.0123 2530157.696 8537.510525 33723546.92 7614453.155 408711.792 57572322.19 6380.097976 1283.754775 2740509.285 298899.585 7915459.887 5086502.51 2014160.773 14549373.51 23255549.2 30971192.69 2389001.545 16092335.35 17741522.7 7872136.905 15132376.34 3799316.916 10728549.26 152477.9944 22293917.28 89819148 69053833.63 39969.56995 16896792.78 62495106.79 5119263.931 33234441.09 23496362.4 7163804.182 5063.965807 75403758.16 4992226.533 32123384.9 1231968.631 65762463.31 42382.38044 114239.2964 10926449.08 23858160.8 46311118.24 4038391.857 4053637.598 15625.02822 2110577.939 17548383.56 403825.9058 2191041.717 53197026.3 36065496.56 516067.6042 40176696.58 5011716.709 116559.9692 32534914.6 +21741662.73 32620192.96 14281368.08 10742282.93 49840532.89 26347098.98 833056.4176 53728868.58 57572126.22 79019746.09 78526569.44 24465.71016 44495600.29 168076527.5 28845241.63 5280526.376 3369902.194 21091230.35 6776145.105 77966.20457 5932.012059 129798616 24780903.65 29867.18998 45726046.16 8863088.788 100420788 22943566.23 8618207.686 7634475.337 158127.921 78848.61951 141118221.3 62303697.74 249495.7177 3412525.128 38069057.05 39064.32324 663620.9625 2391182.55 51081.05657 68120942.67 53072904.91 4405.949595 1940386.375 13174.11816 1.422796685 44279970.69 48456322 1176492.898 34409321.1 46986496.61 182394184.9 1418668.148 745024.7678 1962952.735 4318170.036 9795745.936 1650424.237 24209552.34 100200884.4 422082.0809 2415647.086 13048.85205 37780292.1 15002.95672 87432.69215 4664889.758 27633.06035 4150411.707 177411.1329 6192627.637 19936554.33 171555.7732 211020.7765 213123.9672 17954593.28 39287030.85 4726062.274 43978154.44 52650570.55 6627.851377 18866653.53 89669093.18 596851.9099 55297.66093 17592.17147 90887483.11 22587953.78 12705640.22 +188906.6836 3499066.447 84768433.15 9023773.324 7810143.375 20979177.31 114178017.6 3752690.066 189603296.4 17991515.71 12521387.8 22353059.17 8824002.058 12257799.19 335079.5054 2067958.089 8214541.182 26466823.11 1611712.924 8582806.368 282320.5362 25832060.56 677714.3164 366067.8951 236186116.9 3651236.152 1575758.922 19901076.71 2016329.37 268355.7241 369033.6022 5008586.669 676484.3653 56337373.08 66394822.74 8134.44636 92104287.2 8543267.975 2951682.528 68147162.44 13721649.71 3745110.989 3793.711893 2610685.268 79663630.58 58273151.31 51109450.3 3826785.646 590096.3378 11768222.39 262481.4656 164814.975 3622610.004 50018010.58 55456347.88 3763354.398 15689941.68 64712334.56 42657291.56 41050034.61 22916142.25 353.3915539 3328805.055 71554085.57 537.5750447 20602384.63 10701403.04 546129.9289 15710716.05 21706422.99 13321306.97 79547005.82 113246654 657017.2436 11539297.67 75782211.41 1900866.078 104797924.6 15427663.4 8430794.849 10266260.81 5475571.089 91649074.04 6860408.072 26504148.69 1727327.856 2508319.225 4003413.954 902664.8916 127991.1979 +12237076.49 65478141.67 5705395.596 2850848.381 1717931.57 38106171.33 16390466.58 1041673161 55149.61567 18489789.38 4826438.416 51138253.9 2497457.104 29607819.99 563430.3667 118834.5312 48375640.33 65222119.85 16850071.74 17063958.29 452920.9836 7674305.346 6950841.987 57090952.19 144452.5052 32291.55729 31878652.47 45362625.51 27631721.57 51302.69718 27999439.94 764692.0493 6883450.715 2453658.704 5153910.86 15528315.31 21673716.98 2381243.819 350213.938 192503.3837 16104285.11 44927611.36 207727.772 19412437.62 50314309.54 623972.2587 13655073.31 1152911.946 102930.189 237527.6728 536295313 2087140.092 113399.4277 11778457.84 1569412.046 717095.2906 2801558.228 1493219.867 33925009.35 3880781.99 5844504.85 677565.6515 29251546.4 19055243.43 8522287.069 2161772.049 9985.202359 86509799.14 50897507.45 665153.8094 14915095.5 231254.1937 4474859.145 2492236.289 13835502.34 5682932.512 101525231.7 4432787.206 173954765.3 207130593.3 544955.6447 657656.7326 276270.3902 8058296.033 919496.1833 71435719.22 136353008.3 19317.72532 150495.3359 25089420.96 +63177552.85 28484109.72 453420.5619 59434211.14 129525.4953 29230816.04 11630040.55 36564.38423 7617810.663 1208050.92 41556747.94 5443162.197 328578.5393 2862620.175 5234046.515 624682.5768 529131.6927 628264.6454 313700.1674 19771177.81 31492415.39 3114021.896 19104659.55 93717.82139 43352398.66 2568255.328 8203758.201 1242627.36 52934.05993 50212.13294 1648634.675 2753249.375 331864.8571 226838.3692 7339106.733 24440707.68 4239.404556 182769.6017 29497776.84 17114506.17 32498174.46 15631500.84 15265498.39 94593.51657 408898.2294 4664617.418 154845504.7 41013.75644 24657945.66 22384377.2 347655.6337 950824.9071 2885685.648 8125.644291 770898.1147 11806063.57 67373754.38 127155.4098 2935511.433 46423003.39 9950332.822 19379737.75 15729428.09 170630230.7 476869.8432 22909799.97 2980055.803 15752.96816 55307584.85 612298.3488 10248441.14 1628816681 15753743.66 5755171.147 6252118.798 17324010.97 29245144.17 43822281.64 17328354.36 22727287.73 51643.56052 19972808.83 14975299.46 805196.2505 457325.4374 7913348.547 231451843.3 151043.5281 82061284.57 4292298.748 +379437.1373 26985943.03 23216039.14 381.6516502 65557818.07 745737.7183 5807.262113 1265282.011 7014404.255 18109519.27 1015939.128 3573163.562 28782421.69 25401578.54 43618.77297 13080737.11 14061621.88 369724.4994 3103112.691 8173231.674 602707.3786 19998126.11 173731.227 133369020.2 39305518.67 57939454.7 23836148.99 59039878.95 25037908.43 28128685.83 10740564.78 5270576.56 1631768.649 3549010.848 39470129.75 134005494.5 29826272.22 4038200.632 4570096.121 54029060.42 4501722.494 1796772.733 72648078.08 2249631.763 1642649.93 23935970.23 17761295.84 44006.23656 1594.108944 65991962.34 1018.355706 14062822.39 25868960.83 28637227.83 563913.6486 2150887.243 24963021.12 29828.76042 1090141.042 3161160.647 1594590.851 339234.3843 57088765.87 33606430.04 40528933.72 673722.5132 40189351.67 3411249.673 3697535.881 39630706.29 5884.477205 47689614.78 2286.058622 33488103.53 129396875.7 1060809.444 1250.364384 2324528.538 40888972.26 11378311.14 2381910.272 5438835.653 20567866.45 7477165.78 37688563.47 43094917.66 7020426.961 13728960.77 749690.8148 4626494.738 +10196.55541 40713930.56 1737678.314 108353832 51474848.21 13406135.47 62376126.42 26894489.65 10315558.99 1121659.655 2148757.542 19587389.57 15262855.69 40386399.75 2114960.155 9627753.293 2016902.077 21427.72956 2072257.704 17436363.95 61581.87665 3918.220814 33433677.43 25090420.28 3120.131471 5320824.34 12761017.09 118543.8876 5461000.58 4677865.785 4266589.047 450321.2176 83536670.4 129469.4748 26490713.44 8068522.507 921970.1631 1289948.227 100166063.4 169795.5923 31341068.99 4402878.038 12453320.29 33970803.9 11113492.74 13062.3454 64231927.79 706292.8733 29289987.08 3963796.729 21771816.4 280900.4015 103394749.9 118937.9945 1330.227377 33515116.03 3524844.03 50954455.22 39574.4277 4394860.428 23672233.61 46946270.94 749484.808 11926442.69 1233394.77 270032448.3 5760977.938 23229664.76 3956052.758 18591629.47 23136519.76 25570939.24 27505086.38 257082315.8 32816.26127 3042482.498 43180913.11 73555.22599 24258.96066 7390649.892 2535961.565 788048.8704 52260047.87 4918963.713 59153.574 5373690.358 2553539.877 953490.5247 13447089.43 59483450.42 +5891491.467 1178.970304 1858778.037 160029664.9 3812838.795 12812157.74 47270600.13 12401369.4 19373229.28 9701589.854 4469047.614 30895563.63 6974359.152 765199.5002 496108.5746 9989314.581 851130.3162 1613565.041 11140161.63 49075581.92 52713344.19 58640225.54 3846795.963 3255689.785 5751419.629 11103491.15 63112797.19 2315286.675 67610909.36 78167594.85 254656.4503 881442.4265 103975852 16993292.68 57682328.08 55900.70693 998677.2271 1548166.158 90.61047345 2195555.776 159913145.9 115521948.4 39989903.97 349396.0003 62092281.7 223325935.1 105022359 12105124.26 323776.9529 8578301.642 14825986.1 37197123.34 1930722.776 68415590.78 364207.2825 12143840.9 679816.1644 3777343.068 9567243.742 2699332.912 5361977.149 279572.121 151084.2415 931142.327 25143151.88 13182894.52 86884615.61 63362191.58 101855191.9 1261000.173 85944694.1 1847856.458 30224428.3 141966429.1 4737585.346 75245383.54 343128502.1 12273259.16 12433421.45 16164617.77 30564006.11 846492.7107 46490.87981 54862581.23 56243228.22 76454756.76 30241056.1 1034663.974 365429.1571 263369.935 +37164108.19 24545705.84 4066703.757 2691604.821 18143.2072 17082376.57 24518.85731 107054.9629 3346146.534 837596.5771 3480103.997 9090131.896 35010.40778 186720.7956 10571107.65 126333937.6 195881.4345 71692740.28 59428357.58 1040558.453 28716694.3 2533222.403 4968753.667 615902.4794 1751195.26 72764.17288 37181346.89 51052806.47 63431266.98 20320333.07 6875657.49 527193.548 81266.43215 247988.5165 63992272.83 34177110.39 11103.55218 116.2398546 54957.66562 6235875.66 15084846.55 37445723.43 90288495.35 227413942.2 26051549.34 3315.169538 20024992.3 128418261.3 3516023.206 96707395.98 1269187.823 4100431.017 49099.80362 46926191 1392184.916 378541.7029 14909638.53 17615049.45 471536.9386 4678543.219 26353880.48 96446733.98 2910633.803 16432979.35 49583043.73 77749786.94 11266873.94 21499586.56 4021526.848 7759471.115 2031366.609 9893805.24 1486339.337 2206150.979 18786841.99 16652770.96 17388846.39 4865721.089 331988.9424 12516098.03 96671.83923 16309401.3 408.8362773 15498080.08 6831580.341 392353578.2 18289971.29 41872153.66 1991823.379 52572413.97 +287541.8952 106712.1168 89590.75921 6055209.852 776591.6793 11248478.5 182648723.4 26096206.17 31450509.4 16406757.61 16045696.98 1334225.818 183723.1128 8270670.695 7169.775295 21164988.62 539419.0179 43531357.72 15794111.29 21753743.09 6642.420471 25188597.68 32699038.11 3213196.265 875971.2333 72086981.66 29545904.42 3634244.682 15232866.95 8856361.208 87873896.67 9077563.077 6033.598206 19664868.27 9659603.53 6318507.741 508813.1991 1707867.735 12617039.25 19352434.48 35406.78688 10863156.56 36171422.02 999150.5248 32334016.9 28469982.61 41384702.54 5059382.046 1534907.795 136115.0215 26999218.56 18591373.63 721991.8195 262657870.1 28463443.37 1116015.691 1087708.25 3532117.874 8226312.88 26549074.88 1532832.249 3511031.266 19076223.01 8419367.909 41435.8401 35111221.03 2994630.831 10484245.03 204326.5112 105510.9861 60586641.93 9555821.342 696928.2258 27799165.96 12233962.14 17668045.05 14746633.94 49977.74032 13958872.97 452722.3004 73189.20156 54968528.42 203408196.6 7734652.358 3136597.477 8314.65955 25404069.66 7529599.188 393020.2763 2142374.501 +17113767.71 5917771.18 45948691.09 1112746.542 7464063.649 11379934.74 25473923.82 1680434.701 31824699.97 2244292.032 336294.0529 42317943.89 3453314.95 76348131.57 9046932.41 2927489.579 429.9639338 85388.18674 8314733.707 140154385.6 3110207.498 18639543.13 366804.5263 9879455.75 4098568.982 1558593.348 21353180.39 326774.4402 356612.6831 45322240.08 13309681.23 12590211.12 2068049.428 9806413.548 142348201.1 3671804.957 655927.7546 218834.0345 97.33474042 8416337.904 5005990.45 314609.0158 82985327.65 9903959.503 543118.3416 25806585.64 319758.3448 22010508.5 8557830.489 2533496.452 954240.037 2085299.594 45643.53516 195084829.7 2899500.209 1664994.357 42214384.69 11638293.63 40676712.58 197134384.9 19320690.58 51378.01845 23174570.96 743134.3571 313309.7751 2734703.63 7858033.832 3206.176309 386789.0351 22146376.23 65258500.06 126575.6081 1010909.221 20857277.62 188358.8733 8119464.818 23801542.2 444726.6749 58370549.71 23978959.65 61364048.06 10177632.88 723651.3737 53997.01272 1416105.018 136050688 141834.0133 49840285.75 5792049.816 20613707.16 +1375172.42 797464.493 5019450.706 31044990.57 7689.958057 1091982.383 16258680.5 2678079.102 82768.89333 11199901.82 58600456.17 647876.0737 27604817.07 88850327.26 8192765.264 190117.607 67155034.42 93836959.95 84442.09331 16730.92747 2695927.685 4796135.9 22727402.17 23214.09937 8787296.908 463278.5079 2200084.078 28248292.07 18424756.66 8594766.37 87053681.28 93055123.46 1027944.013 573849.3122 189752086.9 171734.1582 46766202.27 260474.5563 661665.4 2022557.005 2448316.073 2377432.831 75356447.4 1636456.944 655296519.2 123176347 67612605.43 22911994.8 21210295.45 21281687.26 4188501.96 8645835.541 2633084.71 17395041.64 23786905.76 642025726.2 11210966 4560079.098 405047.5921 65091265.61 50727.13395 2254180.086 1085374.173 4572896.644 190289.5307 6476516.681 4504517.194 164806.179 387685.6285 10942913.51 69869.72625 12522.57822 189104108 28527073.16 84264.19795 12395068.66 24699992.3 74803.54401 12641867.25 8963039.706 102654177.7 406211.7161 29489264.36 17774513.53 1369196.069 3878503.752 311649.0816 43836447.95 1640435.837 4923822.877 +66451878.89 37274762.29 82305858.13 288601.0014 69746944.53 12855071.05 11956922.02 69417.26458 23612208.25 740231.7179 1091.706815 3695653.453 3478492.821 469786.5014 67886262.69 147.2742064 1636068.338 11969630.09 13060674.78 5095097.904 30734.17429 36040.06952 62728333.2 5681616.027 9450.444571 17005667.65 17939093.57 595188.52 12228111.02 463454.5568 63233.08397 103975130.1 63000483.37 78883.17375 17939205.29 8672713.034 84765434.41 45165073.76 317942.7953 138089924.5 39837863.63 6901619.312 75628472.21 40459.99361 107000771.5 77507813.07 25170985.75 6425522.721 16340999.71 107264.4684 4066488.904 38310533.36 26465754.99 12069190.47 3764947.873 145503185.4 37172724.08 634248.7255 218127683.7 2695445.343 104309174.2 1106439.557 84549040.79 843169.0938 122358665.2 53658532.62 140697.3592 4171.961415 7796636.622 19596.895 28131005.87 11238262.14 7476709.723 22559173.9 4066952.709 104390.5645 75537510.64 11629635.87 64626005.97 18073462.44 9577024.481 37861.80905 24714673.45 9874843.866 15846510.66 22112702.42 13236.24241 175289.4315 62501989.51 3951202.994 +74454.49114 5796588.15 23677677.11 2300.715502 165343695.3 29024334.63 513764.7591 29318465.05 4142550.125 18247560.09 29428897.6 2225291.507 14811729.18 12729822.49 834624.1622 323088.3117 29166227.28 4855185.475 8403062.936 2476537.589 66824156.02 1674.908466 2902290.729 7704354.662 20307428.62 89441364.39 1285850.85 7004668.078 171115414.4 10146827.31 33383674.16 86606741.5 55625590.14 23058863.56 1712049.87 36088.54172 4030711.204 751.0920273 19282252.18 4282275.084 4257680.568 42357150.5 74058.96478 112714447.9 10027982.14 41945.38407 1786358.04 19212698.74 53714898.56 164315496.8 6969786.113 14653793.05 676753.9448 1215859.655 11089.38022 26761240.74 295552429.5 393728.2339 1221887590 53645296.54 680784.0292 71151.03051 1362645.775 372515.5795 6747.978714 42165414.31 153597931 18323890.75 87669421.68 44416351.13 47008799.02 9021478.584 7844218.811 5463187.034 29010473.14 5305201.815 1842047.723 69290.71785 46633300.67 649953.6089 46044060.13 13426130.25 4284.56584 1186148.048 1161555.264 356459.7763 258519.7311 299694618.7 13639832.6 4964421.685 +8872015.512 2156439.123 3332764.952 1565757.484 6906453.437 213867.7438 2699063.739 11125595.59 10846788.21 1415268.641 8605255.83 41340614.94 2771.177008 39239142.4 6634339.983 11293050.41 90859703.74 157776825.1 819088.6704 5521729.36 21257526.29 8092172.25 39058392.07 106190.3463 10797056.96 99961236.53 17551129.85 68913529.81 9771787.129 18314577.32 27556956.71 226638072.5 11256074.61 5241296.879 29452292.68 79560703.08 30654356.79 16921483.12 11980135.92 309641.6631 14778329.54 110129492.2 99757549.46 393346.452 222135.3006 34354.44439 243628.0063 264302.2082 28830377.49 3265531.788 2841140.083 867.9813484 34.28573369 217942.3828 144527.5408 1594174.735 3619738.025 16155075.04 805947.2235 7082112.09 31963038.63 10508128.31 20336106.29 32056815.77 4193896.136 691999.4628 29875427.43 7575311.526 579630.9063 3594.884246 9776.865712 464808.5199 8787685.696 12448140.05 78288377.27 183714.8403 29095696.4 67354486.23 38068618.71 78789270.22 156537761.5 4963770.349 44919880.6 14498282.16 41405227.56 123110983.9 2653648.985 6362620.103 1648867.523 49306565.62 +18810764.02 876398.4977 408154.1337 2289987.115 9601809.424 2507773.91 217455.1068 78460198.16 24941491.84 112191408.3 4203072.042 27363182.24 18223215.09 2228563.501 2080110.318 36816575.18 24239783 1015286.498 30018139.31 6403089.801 8729270.18 4254550.828 9047519.163 649589.9479 24013.11331 179639.0821 9419703.088 178431.4894 120748.8217 2483393.901 52600049.54 19001840.2 33995317.2 1295880.857 1002080.184 36086504.16 9087590.901 15270028.53 15181.95091 2469307.927 3868618.665 1024776.739 975250.1776 1565677 8675424.265 395104.8757 12894205.14 59440860.44 10986.94542 5291845.49 35197984.79 7022773.835 148370109.9 27848.64953 11972204.33 45232519.48 19831510.43 1157334.727 142601407 568378.2261 1392914.64 7817928.202 19110559.96 64479348.51 10743758.46 5210654.413 14231390.35 5211655.359 68598667.43 4488910.655 3849367.216 131287.1708 42882672.81 18915716.59 463400.1601 66870.13664 7605312.36 22117717.08 2926.079938 1378507.459 49787788.52 304855.1155 1278303.151 14788622.74 11537554.19 78527.22821 24582092.73 7853282.961 293787.4278 22840887.61 +16837520.46 69194759.39 443122.3601 4987814.575 7546777.553 369796.0207 4561591.255 4446867.822 46298.18845 478374.0032 5878.146905 58734368.75 32042365.77 1725307.56 389917.2595 60537.08272 82569.79953 2554740.599 55081469.69 11102991.24 32204955.08 435619.5267 2243855.642 49464.14584 298061.1547 16342132.09 20251153.34 4202964.392 64075543.62 35603182.77 639717.5643 54369381.11 38412748.72 33158142.81 244009.6315 82596874.38 26686988.98 15327.87663 21536382.92 4112626.07 9974660.741 5185472.832 33489688.6 541839.9715 6707669.128 27564350.2 31452207.35 13390668.45 3821.771756 4773804.857 18568442.01 17826992.59 17466225.14 262624.3507 44752.18696 24846910.4 31079329.03 2638504.242 15976519.18 6520621.261 2939717.272 13899539.78 15535.43586 35790791.11 17527.50117 1055409.819 207398.8115 65958079.64 11828911.13 19745556.43 2668146.712 4674489.936 85431909.43 9435508.566 362664.694 304858.0502 35734840.71 12212560.08 41634219.89 4282582.803 5956658.136 10488015.9 13701907.59 659968.7901 3457619.256 56297073.11 365035.0025 7534451.663 59143315.74 1188734.018 +7870103.482 1724328.94 2067730.299 333521.7535 48790753.88 7506225.144 1325779.413 4950302.917 13034862.41 36385353.49 11607848.55 1647296.696 43698.13435 25920.602 21292331.45 2210569.522 33628488.91 53095714.67 231084026.4 252041.984 12807069.45 54316656.79 27516580.36 118384990 24278222.29 2912803.853 144713.4952 25616602.95 324634.2421 141870.9489 35964.41186 24026732.55 29700977.54 343849.6518 48627413.3 838257.751 54082369.72 54898897.35 18973919.39 47913990.11 34925619.25 25658359.44 282984.3963 19710321.85 191806069.7 77111901.98 35139255.63 5714979.231 35870134.36 2759114.046 198.9007726 53157024.74 31600354.6 569485.8618 12249474.48 4500343.168 1538260.769 3350011.815 532815.5604 154827.9341 604882.9673 65149270.27 13912560.51 19056115.61 8820793.676 62392327.96 71571644.46 488715.2533 905311.1494 46205932.32 48993574.79 7327924.132 3754477.922 23323891.24 188217161.6 65467.66902 19807744.62 725572.4503 1158665.226 100313.924 20156544.17 7312812.998 40430717.63 18957901.81 18976159.49 107841807.5 10105660.47 26832305.38 10737032.56 20059099.63 +# Events [PSD_cut/PSD_cut.dat] N: +85 90 97 81 86 92 82 99 90 71 83 91 73 86 66 91 75 72 99 68 91 81 81 94 95 76 90 80 89 84 90 85 100 96 91 83 84 103 77 81 78 74 105 105 79 97 82 85 81 88 90 84 87 86 66 84 90 97 87 94 87 76 93 86 87 87 78 64 84 93 97 98 79 85 93 106 80 78 122 77 86 74 64 76 82 92 86 104 83 78 +99 103 100 82 86 104 90 96 92 73 91 82 70 102 92 85 68 83 76 79 93 92 73 89 73 74 72 71 72 86 97 72 89 91 88 86 77 91 88 79 94 94 88 101 92 82 71 86 69 93 71 85 78 84 83 82 63 89 100 84 87 96 87 98 69 83 83 81 79 91 86 82 105 96 91 100 97 106 85 80 92 98 83 91 89 84 74 90 85 83 +84 92 68 80 89 71 81 88 99 83 89 82 79 84 93 87 77 88 74 86 78 92 84 81 99 70 76 100 82 86 83 91 79 87 76 86 79 85 67 96 98 78 81 75 84 80 91 84 94 70 94 94 92 81 93 80 77 89 93 93 80 93 81 77 75 67 87 95 87 79 96 81 76 77 98 92 75 84 88 88 91 84 94 83 75 77 93 95 86 89 +72 82 85 82 80 69 94 74 92 87 73 73 81 88 81 79 87 97 82 77 101 83 85 96 76 97 78 82 76 88 85 78 84 79 87 73 106 77 90 97 98 100 88 94 87 80 95 91 84 83 91 76 103 96 86 74 78 92 75 88 79 83 90 90 94 107 98 78 70 82 100 106 101 70 80 82 82 85 90 88 90 84 95 72 80 75 82 84 79 80 +69 83 105 70 67 72 83 88 85 84 103 101 77 87 84 90 80 79 88 80 93 82 80 94 85 78 74 88 81 89 79 107 89 95 80 86 80 73 72 85 88 89 84 98 90 72 94 86 86 60 77 85 95 73 66 82 97 106 70 81 74 96 79 90 73 78 84 75 66 85 71 89 97 86 75 101 78 79 81 90 85 93 93 82 96 87 78 80 81 79 +66 87 88 84 79 88 83 88 92 75 81 99 87 93 84 84 100 87 70 90 88 78 82 67 81 85 80 87 80 75 98 80 86 78 85 96 80 79 89 86 90 90 75 82 99 75 79 84 81 97 95 85 78 103 91 82 99 73 81 92 109 69 86 104 85 80 79 93 89 90 94 95 83 83 73 71 85 74 67 93 93 93 96 91 79 85 83 96 85 77 +86 81 82 88 87 71 85 85 67 76 90 95 82 87 89 84 84 92 93 88 98 80 82 93 100 94 89 86 102 87 69 93 95 76 84 84 87 76 92 89 95 91 91 69 87 93 88 89 79 88 92 90 113 87 80 85 89 83 81 94 83 83 81 83 93 81 83 77 82 92 93 94 82 89 89 74 95 74 97 82 87 82 79 78 87 82 76 95 77 87 +59 94 90 77 87 77 85 92 95 92 85 78 99 92 92 65 84 79 75 86 64 88 74 82 88 83 87 72 75 80 80 101 75 91 82 93 82 107 85 96 72 93 77 72 98 79 90 86 62 97 101 100 63 97 87 91 80 90 82 82 84 86 89 79 93 91 91 73 84 82 76 83 76 83 81 76 81 85 87 96 62 96 110 99 87 85 77 80 74 93 +69 84 71 88 93 78 85 82 80 94 84 88 58 91 83 75 84 105 81 84 71 105 91 88 86 95 95 74 85 83 72 96 99 90 64 81 98 92 79 94 100 87 90 72 75 83 78 84 66 83 64 91 69 88 66 75 91 91 73 75 101 98 105 87 87 93 90 73 78 86 78 75 87 82 90 90 69 70 70 91 101 67 75 81 89 63 85 93 88 81 +84 73 87 82 66 78 94 86 96 94 85 65 91 101 81 97 91 86 85 83 85 83 79 80 73 81 81 87 84 82 101 78 83 61 84 86 87 77 90 85 73 78 95 100 83 95 84 82 89 103 97 73 82 84 78 83 96 77 89 94 81 69 98 84 85 71 86 106 103 92 70 100 99 87 89 82 84 92 87 76 77 77 88 83 89 83 76 78 85 72 +67 89 75 97 92 78 93 123 91 100 95 95 71 98 76 78 91 92 76 76 79 108 81 83 92 86 77 91 70 98 87 90 80 84 83 108 93 91 73 93 97 93 78 85 87 91 79 82 81 84 88 96 99 89 90 101 79 63 85 88 88 102 73 73 93 76 88 76 78 77 73 63 80 86 96 96 94 112 86 82 92 86 66 79 70 68 72 71 82 93 +84 68 77 83 84 88 72 75 84 76 101 86 74 93 87 94 74 89 80 74 75 92 87 93 78 87 81 79 77 76 89 75 88 80 92 69 88 83 87 94 87 78 88 76 82 74 79 97 90 82 91 109 96 73 95 99 82 75 99 95 83 81 88 92 93 74 86 82 86 88 86 88 79 95 79 77 79 85 79 81 74 93 86 73 76 96 79 91 81 86 +95 83 91 73 96 82 82 91 75 83 71 80 91 88 80 77 82 93 79 74 78 81 85 76 86 96 79 78 86 91 79 104 92 89 67 86 76 74 83 79 86 97 76 78 95 75 89 86 89 79 99 81 85 73 75 106 87 79 76 82 80 81 101 88 89 75 89 77 73 62 78 94 80 79 76 99 101 97 83 89 92 79 95 75 79 75 83 74 70 102 +90 73 87 91 93 92 82 83 92 77 79 79 91 71 97 80 83 73 88 106 78 78 89 85 100 77 94 103 82 77 72 95 93 80 76 71 85 85 75 81 103 101 87 79 77 93 93 76 93 77 77 77 80 91 77 87 87 88 102 86 90 59 84 106 75 92 77 78 84 96 67 84 93 73 74 99 82 78 74 86 88 72 77 80 86 92 96 89 93 91 +89 86 103 82 77 86 99 78 84 91 89 80 79 99 91 87 66 85 72 82 79 83 70 96 88 104 95 91 69 93 68 75 84 79 76 84 81 74 105 79 98 86 85 88 87 80 88 86 96 100 82 81 84 72 82 94 79 81 71 83 94 78 76 84 93 72 79 98 77 87 86 94 90 90 90 64 82 75 82 95 84 66 78 75 83 82 86 88 87 84 +105 96 83 63 90 82 87 89 98 102 75 78 93 88 91 74 74 95 95 96 77 91 86 91 104 91 80 97 81 71 80 85 102 77 89 76 70 89 89 94 74 91 75 71 86 80 90 65 83 73 91 76 71 102 84 78 100 96 83 84 76 100 80 78 67 84 95 101 80 93 95 95 84 88 89 81 91 107 80 75 84 73 78 102 88 77 83 82 73 76 +100 89 74 95 95 89 86 86 80 84 80 86 88 82 101 104 89 82 85 95 92 95 91 83 79 91 70 87 83 100 83 87 93 81 87 83 64 87 83 89 83 99 81 93 88 80 96 89 76 68 100 71 98 92 72 81 95 89 80 80 84 70 86 79 72 93 80 94 92 85 88 94 101 79 103 89 77 89 92 83 91 84 77 85 71 75 91 103 90 97 +85 87 65 90 92 92 92 86 87 101 92 101 90 86 77 95 77 89 102 83 72 84 87 73 74 80 79 102 75 100 78 90 82 88 95 68 56 88 76 78 80 83 62 101 80 90 98 88 85 96 71 69 83 105 88 76 86 90 78 102 79 94 85 81 70 99 77 83 70 96 78 94 95 88 94 86 83 81 84 86 90 89 89 83 97 91 87 82 87 92 +78 81 90 86 62 94 96 94 77 103 98 90 95 84 92 87 89 85 70 91 96 86 69 84 92 71 79 95 82 75 82 79 75 72 82 81 69 72 74 59 84 83 88 90 97 95 88 80 94 86 87 91 78 80 81 77 102 75 73 92 82 84 86 79 90 79 88 73 93 85 96 90 98 88 76 78 88 85 80 89 105 80 76 80 72 92 76 85 88 83 +92 68 87 78 96 94 88 88 95 92 80 98 80 89 74 80 97 86 71 90 92 84 78 83 74 79 79 73 92 75 79 89 82 87 83 88 83 77 101 98 72 71 69 77 83 96 88 92 75 75 99 85 86 82 81 83 85 87 94 104 99 76 103 83 78 87 73 95 88 75 80 76 72 74 81 71 87 67 93 90 75 76 82 76 85 86 102 81 89 83 +82 88 85 72 75 97 81 99 88 93 77 89 71 79 99 74 85 82 83 82 86 104 88 90 95 90 85 81 87 92 108 98 68 81 93 86 88 103 78 95 88 87 78 80 58 98 65 92 81 91 92 86 93 84 88 80 75 73 87 85 108 71 71 75 82 78 75 76 83 96 78 82 79 91 87 81 88 84 100 84 83 79 77 87 68 96 86 81 79 76 +96 75 77 103 83 79 88 97 70 83 77 101 83 82 119 94 79 72 92 83 80 92 77 95 84 76 79 90 82 94 83 80 78 71 91 90 82 98 89 70 91 82 77 84 92 73 94 106 89 83 88 93 75 78 86 96 69 92 86 88 93 83 92 84 77 88 77 85 85 96 77 79 83 77 76 79 79 95 75 92 97 61 87 105 92 88 84 99 80 91 +98 83 98 93 74 92 83 89 83 75 87 81 96 70 87 70 83 91 68 84 90 71 85 83 80 64 99 96 90 83 75 104 91 86 90 80 88 83 84 65 95 92 94 80 97 83 81 79 75 79 96 95 87 81 86 105 78 85 74 99 88 88 70 94 81 106 89 77 71 71 69 105 81 73 87 90 88 87 90 91 89 94 89 92 93 83 88 81 114 94 +82 88 69 88 73 76 88 76 79 94 90 85 80 95 74 91 82 87 94 107 95 86 71 90 92 82 98 80 75 84 90 77 87 87 92 81 80 99 83 80 74 98 75 72 66 75 90 86 86 84 91 81 80 78 95 89 68 76 78 80 99 65 95 92 83 79 80 77 76 98 84 83 90 84 83 102 83 78 86 87 71 82 83 80 86 85 91 87 84 97 +85 89 93 80 91 79 64 83 66 86 89 79 91 86 80 82 74 88 86 83 82 82 79 95 79 102 83 82 88 87 83 80 95 80 105 98 80 102 75 94 97 91 100 89 66 76 83 108 89 88 91 90 75 82 96 87 71 90 95 89 74 95 77 84 84 88 74 80 95 88 95 70 86 86 85 96 84 78 78 65 82 79 85 103 90 108 73 107 87 77 +88 70 91 95 91 89 81 84 58 77 79 77 108 91 100 75 82 84 95 93 76 78 85 83 88 82 57 81 82 98 82 71 73 99 91 58 88 93 89 79 80 93 78 90 65 78 91 76 84 89 78 91 72 89 81 63 88 95 87 92 84 82 85 85 89 82 91 97 91 77 96 86 88 83 98 85 83 74 70 76 83 88 59 86 85 80 91 93 93 81 +76 73 94 96 98 103 81 84 93 78 81 72 69 90 80 83 105 87 81 95 78 91 81 79 88 82 82 79 78 77 95 82 82 70 91 82 101 87 71 83 99 77 88 85 91 76 90 90 81 76 77 91 94 86 92 80 93 81 84 84 85 81 95 96 89 83 67 86 94 80 84 97 64 81 99 65 88 99 81 84 76 79 74 73 85 95 95 90 74 90 +94 78 83 87 89 86 77 83 93 86 92 87 95 79 90 80 95 95 103 73 96 92 88 95 107 73 85 113 102 90 82 99 77 86 84 81 88 75 84 78 98 87 73 84 106 77 79 83 90 71 79 84 81 93 75 80 85 83 74 88 88 84 97 82 99 94 76 82 84 86 81 102 88 88 78 90 81 82 92 83 95 78 72 74 84 91 78 91 72 83 +86 95 75 82 103 90 88 99 93 83 76 77 69 87 84 91 104 78 67 83 85 87 104 93 85 80 101 70 85 80 81 91 96 74 99 88 85 93 93 81 87 82 84 86 82 83 88 87 82 77 82 73 70 90 80 85 83 74 91 71 87 86 86 86 83 76 80 100 100 89 81 94 100 90 92 82 90 72 83 75 77 79 72 82 86 87 93 71 95 83 +74 84 76 93 98 75 84 77 95 67 64 72 64 85 76 87 81 97 74 71 91 90 93 92 87 90 75 89 81 85 94 96 76 85 84 79 82 87 74 95 78 80 68 83 78 86 74 76 85 95 84 78 94 82 82 83 69 86 79 84 88 86 73 84 86 77 88 87 77 77 85 82 89 92 90 93 83 85 92 82 82 78 86 61 85 81 97 74 94 81 +84 84 97 94 79 78 70 85 67 74 91 63 82 104 89 88 97 83 89 103 77 90 87 73 103 93 83 74 78 84 79 75 81 78 87 83 82 89 99 96 96 80 70 75 87 104 71 97 73 96 77 79 80 75 84 113 75 88 75 85 84 89 82 78 69 86 86 91 86 90 78 95 83 80 93 85 82 94 89 89 91 94 94 76 92 77 80 94 81 78 +80 89 91 92 91 89 86 83 115 88 66 77 93 97 85 74 76 80 83 100 80 69 76 87 76 79 81 96 85 94 89 74 90 84 92 90 86 88 105 88 92 75 84 82 93 89 102 83 81 75 95 71 89 97 89 86 75 78 83 73 101 98 96 100 97 71 83 83 77 68 99 101 83 90 92 82 81 86 86 95 93 79 74 93 100 85 90 71 92 80 +82 97 85 92 83 69 87 88 91 92 83 82 99 94 79 90 80 78 67 73 84 89 78 92 79 88 87 75 84 96 85 93 84 87 69 82 73 75 88 109 82 72 84 78 94 67 79 93 74 86 85 95 92 78 75 77 94 86 77 102 89 92 84 84 85 89 62 78 87 94 85 85 96 77 88 99 76 96 87 80 81 94 111 91 81 89 82 87 94 78 +74 76 79 75 64 95 92 84 87 99 93 102 90 81 83 98 74 83 76 96 83 94 75 95 90 74 105 81 81 87 105 75 82 78 84 83 66 102 71 76 66 83 95 74 93 81 99 83 102 85 91 75 90 91 80 82 94 78 73 91 81 97 81 84 95 82 83 85 89 81 85 75 88 95 86 84 94 66 86 89 85 97 70 84 86 88 93 81 93 91 +81 82 68 87 98 79 86 95 71 94 84 75 90 83 73 92 75 79 84 95 78 84 98 73 89 77 73 95 80 92 93 83 88 81 87 82 82 66 100 71 82 96 80 74 82 79 89 90 71 87 88 80 73 76 83 82 78 84 94 78 81 110 86 97 89 74 76 79 90 73 82 95 84 90 78 87 98 107 74 95 73 81 77 83 91 101 90 82 86 69 +85 92 86 72 86 74 96 87 90 87 87 82 100 85 91 81 70 90 93 84 88 68 74 98 95 78 83 89 72 94 87 85 74 90 75 89 70 88 84 73 95 92 83 74 86 93 105 95 81 74 100 82 76 96 76 77 94 102 99 82 77 81 102 90 70 89 81 79 87 87 91 79 90 96 77 75 83 96 89 72 103 96 83 100 91 92 92 78 91 94 +68 81 81 89 93 84 86 81 84 83 87 82 99 87 103 86 79 94 82 81 96 72 77 91 79 74 78 92 101 88 79 80 92 76 70 82 91 92 91 100 77 59 87 85 105 73 67 81 91 73 84 69 82 94 88 95 92 89 83 94 86 81 93 99 86 92 97 98 79 84 81 79 81 75 89 87 88 76 73 85 77 77 88 68 73 68 88 91 81 103 +92 88 96 87 76 86 85 86 68 77 97 91 74 88 88 98 87 91 72 88 80 74 72 88 77 86 83 86 82 79 70 91 89 89 76 77 83 89 98 86 67 94 90 71 85 86 87 91 97 97 93 91 97 86 84 73 92 90 111 73 108 87 94 96 108 75 81 81 63 89 80 88 86 93 92 91 85 84 77 92 92 71 91 96 77 87 91 82 71 89 +76 83 71 94 72 83 75 79 71 83 81 62 75 88 81 86 86 78 80 85 81 84 91 83 91 66 80 89 77 94 82 75 79 100 96 103 83 86 75 109 91 103 71 90 97 87 76 83 68 99 86 80 88 77 91 94 97 85 86 79 84 80 77 86 112 89 83 91 80 81 77 73 92 76 92 96 102 102 93 74 78 94 80 91 98 77 95 90 69 78 +78 86 82 109 79 88 78 80 91 89 90 85 82 94 67 84 89 84 71 96 84 81 77 93 89 86 81 89 90 95 90 83 101 78 88 79 84 73 98 81 89 87 87 92 84 84 82 72 79 102 80 78 96 91 76 78 93 82 91 78 79 87 73 93 74 89 92 88 84 92 95 86 85 72 71 82 78 99 88 90 88 95 89 74 78 77 97 98 86 77 +100 66 80 75 78 98 76 82 70 72 95 91 75 92 101 94 82 94 83 65 80 89 91 66 68 89 75 92 79 88 88 88 83 92 99 76 83 76 91 86 94 82 91 89 86 81 92 71 109 89 77 86 93 71 84 87 87 75 80 90 87 94 84 82 93 84 92 78 91 82 82 92 85 93 78 83 74 87 91 95 73 87 80 92 92 84 63 80 95 91 +92 93 82 90 74 69 65 81 80 72 78 90 92 104 75 93 86 82 87 70 79 107 89 80 100 77 90 98 85 83 89 83 86 101 81 101 88 96 101 76 95 72 98 93 66 84 69 85 78 71 85 99 82 90 91 84 87 92 89 70 88 90 98 91 87 91 83 91 95 95 79 86 84 100 82 90 86 74 83 77 91 71 85 91 87 77 72 82 66 79 +82 72 86 81 94 94 93 77 77 79 91 77 98 86 73 92 104 78 94 85 93 62 83 95 99 79 75 94 92 106 79 89 87 92 78 101 79 89 99 79 80 85 91 91 88 80 89 100 91 80 96 111 98 77 92 84 76 82 90 98 88 73 72 91 86 90 94 89 91 78 90 86 85 79 66 93 87 80 86 94 72 97 88 86 73 78 80 87 90 91 +76 81 84 81 96 108 91 91 85 102 93 98 64 91 84 76 81 80 94 73 80 95 76 88 99 86 101 69 77 86 90 69 73 80 90 92 96 81 85 96 74 90 88 90 80 84 75 72 77 93 99 88 86 79 80 88 78 91 79 93 82 81 89 96 87 77 97 92 80 71 68 83 101 82 79 90 98 79 70 79 85 89 96 87 85 95 77 81 90 75 +86 100 86 92 86 77 90 91 98 74 70 91 85 72 82 93 83 75 81 83 92 85 89 75 82 98 83 75 99 84 73 86 76 79 81 93 77 59 81 95 74 102 83 72 107 88 77 92 89 90 79 76 94 94 95 88 97 94 92 84 88 77 98 95 95 75 81 79 89 79 81 96 73 97 79 81 80 74 98 88 95 97 72 93 92 78 90 86 84 86 +88 101 89 72 82 80 89 79 99 78 95 71 109 102 110 80 87 97 78 88 94 86 74 82 88 89 108 78 78 89 93 81 95 79 64 87 85 82 95 104 104 97 98 83 90 74 76 66 79 88 76 82 80 78 78 80 85 87 86 100 82 68 83 91 84 83 100 112 83 78 85 87 98 83 92 93 84 85 81 88 79 96 100 75 92 85 87 77 82 76 +79 76 81 84 79 101 71 87 75 74 90 85 82 84 76 92 76 100 86 68 92 77 93 88 95 100 93 82 76 87 85 96 75 86 88 86 80 91 69 87 80 97 96 84 81 82 71 79 95 78 70 93 99 99 74 92 71 93 92 106 85 88 70 87 101 75 94 100 86 80 81 82 91 93 75 87 92 90 82 77 90 76 79 95 92 95 78 89 71 96 +82 89 86 73 85 75 103 92 73 101 80 111 71 91 81 69 84 77 81 97 98 69 76 86 82 78 86 84 75 85 70 84 87 71 104 88 91 72 83 101 89 84 77 98 83 75 93 96 94 80 76 84 105 72 99 99 85 94 77 102 79 83 92 86 79 78 96 97 89 76 95 102 81 84 81 94 99 118 94 74 81 75 90 84 71 75 93 90 79 82 +79 98 80 86 77 70 89 83 88 98 69 90 92 101 78 76 72 88 90 86 96 86 90 90 86 79 85 72 86 84 98 86 93 96 106 78 80 78 107 82 88 72 91 80 83 90 82 79 90 81 95 86 77 85 76 79 86 85 103 87 89 89 95 75 86 83 78 90 97 94 99 108 87 80 75 81 96 91 81 79 73 82 95 84 89 76 75 75 87 82 +85 84 92 88 77 92 85 83 69 103 94 91 97 91 78 101 87 96 81 82 96 80 71 83 86 83 87 91 79 69 85 76 82 88 73 102 98 78 96 76 88 96 74 84 77 71 97 94 80 92 103 74 90 97 89 90 85 91 81 82 83 77 93 92 76 66 89 83 86 77 88 90 90 72 69 63 72 89 77 86 86 90 80 81 75 84 92 84 72 87 +90 82 80 91 74 87 94 89 91 90 69 87 117 78 86 86 73 86 89 78 73 65 84 89 100 82 70 88 85 85 86 99 95 78 78 86 90 86 93 91 85 83 99 92 77 88 76 85 89 85 61 78 93 90 91 75 83 90 73 102 86 73 70 69 80 90 88 91 95 96 84 88 97 86 84 82 73 69 100 81 75 86 74 87 84 87 75 105 77 77 +89 91 73 87 79 75 82 86 94 80 86 76 79 80 77 89 83 76 70 95 83 87 79 86 74 88 88 81 99 91 101 70 62 72 76 78 85 69 91 86 83 100 82 98 81 76 98 95 99 83 99 75 92 81 89 99 71 98 84 86 94 77 96 82 87 84 85 87 85 86 68 91 71 97 91 96 100 87 82 89 92 110 76 89 98 82 89 88 84 77 +87 93 71 80 100 112 89 85 82 76 88 88 83 71 85 76 93 92 87 94 90 88 94 83 105 77 68 90 87 82 81 100 84 77 91 75 85 85 74 96 109 81 83 85 81 88 94 93 94 99 90 82 83 91 71 81 83 92 74 97 89 92 82 76 87 112 86 102 72 81 78 98 86 72 83 90 93 72 85 92 87 81 73 72 84 89 96 90 99 85 +90 79 92 82 79 87 81 88 103 91 69 81 95 105 92 74 86 83 81 96 87 89 84 88 82 83 91 80 84 81 78 84 73 98 85 78 94 91 104 65 86 76 81 82 84 70 84 82 86 109 98 107 76 68 93 79 99 96 81 96 85 87 94 87 87 85 87 105 88 84 86 69 101 101 87 89 76 92 87 81 83 76 110 100 95 98 67 89 86 66 +83 87 93 95 101 78 100 75 102 77 103 89 89 97 66 87 77 75 82 79 83 90 106 93 81 80 98 73 74 60 83 90 91 91 86 94 88 86 76 94 93 71 81 94 94 96 90 86 95 75 80 87 87 90 92 82 82 88 93 88 85 71 93 77 94 81 79 82 78 101 101 74 75 88 72 78 101 93 84 88 92 83 84 95 77 98 79 82 94 73 +72 88 94 84 80 98 85 92 96 94 98 80 85 83 83 96 83 100 76 79 97 75 70 91 76 77 76 94 94 82 80 100 81 79 87 87 83 86 81 87 92 85 71 68 77 98 78 85 89 87 76 79 73 77 73 92 83 84 98 83 92 76 81 79 94 93 74 95 78 84 87 86 103 85 77 94 95 87 95 81 71 83 85 99 97 95 88 81 80 70 +80 82 95 89 73 91 101 89 91 85 73 79 82 85 121 77 70 66 89 87 84 86 96 79 95 96 92 83 81 85 102 90 89 92 91 85 76 70 98 83 76 68 87 92 92 88 97 88 94 94 91 88 84 100 74 91 91 106 108 89 86 73 81 86 81 95 92 76 93 92 85 91 82 74 88 79 84 83 85 107 77 76 83 88 89 79 85 74 90 95 +91 83 101 94 73 86 90 84 97 80 105 94 99 74 84 66 97 78 74 87 80 93 81 73 96 71 91 88 90 82 82 74 92 87 84 77 83 94 97 76 82 110 91 91 83 72 99 59 86 84 98 84 94 87 84 78 95 84 92 81 82 90 85 93 77 91 93 90 87 72 99 79 82 87 95 75 73 83 77 85 81 93 90 92 86 83 92 94 87 80 +80 82 76 89 90 85 100 76 73 86 93 81 73 88 98 87 89 86 97 63 101 95 85 74 86 77 90 79 81 74 110 64 96 93 81 77 80 87 88 77 78 102 79 83 97 80 81 67 65 88 90 89 94 71 85 86 73 87 97 75 69 82 90 88 101 104 69 102 79 80 92 86 84 82 83 87 90 99 97 80 78 108 89 82 80 112 79 86 76 70 +94 82 91 81 69 73 65 93 83 88 92 78 96 72 79 85 65 72 86 94 91 69 85 86 78 83 80 91 87 82 85 89 91 80 95 91 77 76 108 89 98 81 83 80 94 76 71 80 100 62 81 81 95 72 70 90 81 87 91 97 84 83 86 98 87 106 92 76 90 83 84 88 86 85 98 75 90 76 96 76 73 87 83 106 82 84 87 88 82 93 +86 86 87 96 95 96 106 73 85 68 71 98 109 81 82 82 96 95 101 71 75 83 93 84 72 81 98 71 90 73 91 78 73 82 89 83 78 96 80 78 99 88 81 86 82 90 84 101 89 77 77 83 85 79 84 83 84 85 93 101 85 86 80 77 68 87 87 77 106 69 78 86 100 91 90 91 88 96 83 84 88 87 87 88 92 83 95 107 73 80 +71 81 89 87 81 79 88 77 69 101 100 89 99 89 77 103 94 90 84 83 70 96 74 83 78 84 90 94 97 106 87 76 87 88 98 71 100 85 90 85 86 85 91 80 84 99 75 62 96 83 86 91 69 82 88 88 79 98 74 96 100 80 97 89 78 83 100 81 79 111 82 91 88 85 74 87 67 73 83 83 86 75 77 73 83 90 86 83 82 80 +86 86 82 84 88 89 84 88 99 86 80 89 76 78 94 87 98 106 86 88 84 77 89 83 81 84 80 76 79 86 99 91 100 69 92 104 85 82 87 91 85 93 84 79 79 94 83 71 74 94 84 69 71 88 102 96 80 84 97 88 70 81 83 74 105 93 71 92 75 89 78 85 79 83 77 81 88 74 68 89 76 90 91 88 83 80 88 88 83 91 +78 88 86 85 77 97 90 96 71 89 82 86 91 85 81 90 72 73 65 80 89 72 79 94 102 107 99 90 88 97 86 89 99 82 87 86 100 94 74 94 80 81 92 81 94 86 88 86 91 88 72 81 98 76 92 87 79 90 83 76 86 92 77 83 72 96 83 92 81 90 94 81 87 94 94 77 74 71 96 80 86 68 81 88 82 71 83 82 79 82 +78 62 92 83 83 59 82 80 72 86 86 70 70 85 84 75 86 82 82 83 75 81 82 85 86 78 73 89 85 81 95 94 76 99 84 87 93 90 69 84 81 94 80 92 97 76 87 76 69 89 91 97 86 94 93 81 71 79 92 93 81 81 85 76 85 92 85 95 93 88 88 78 105 90 100 101 100 72 92 67 98 93 84 93 71 84 93 89 69 89 +87 83 107 74 94 84 89 90 94 76 70 82 92 81 70 90 90 91 103 75 97 79 91 75 67 99 82 79 97 100 96 82 83 92 94 90 84 75 91 93 88 75 88 83 80 100 87 76 96 89 79 75 74 70 89 90 75 107 85 90 76 99 80 85 80 91 91 98 88 91 106 87 87 76 93 82 82 79 85 91 83 86 93 80 89 87 79 76 81 77 +85 87 80 95 94 77 94 83 81 73 94 75 83 80 80 83 85 76 103 99 84 81 73 86 93 97 80 82 82 79 100 81 85 73 84 90 89 88 93 80 80 71 95 85 89 71 85 87 73 83 86 77 81 78 107 85 85 83 72 91 100 100 81 92 86 100 84 83 88 85 89 89 91 88 68 85 83 87 89 84 71 85 74 81 79 103 86 92 73 78 +82 78 85 79 96 77 93 80 94 81 86 87 73 87 99 80 69 90 84 71 77 81 69 87 90 93 87 88 85 101 83 70 88 86 92 83 89 77 79 92 98 87 92 83 74 86 82 78 87 96 98 94 97 86 86 91 79 93 101 79 76 86 88 78 105 89 82 70 88 94 97 85 71 83 100 90 80 76 92 91 101 74 93 84 85 84 94 82 84 82 +82 93 98 89 92 76 104 84 80 92 78 88 87 101 95 83 95 75 70 83 79 92 97 83 90 76 75 78 94 91 93 92 93 88 78 101 80 87 84 85 90 82 87 82 71 86 85 98 78 79 77 80 83 92 76 87 70 87 82 79 95 101 80 80 75 78 87 79 73 91 88 85 72 91 68 73 97 86 89 86 71 83 95 87 89 92 100 85 75 80 +66 91 80 87 82 87 83 94 88 78 91 84 72 74 96 88 76 99 101 88 84 84 91 86 71 101 86 102 93 84 82 83 99 82 84 90 78 80 90 87 77 107 80 89 88 85 71 88 86 86 70 79 82 89 82 77 68 93 81 70 79 88 91 83 84 91 94 71 94 75 84 92 67 88 94 77 83 90 89 86 88 72 87 69 90 82 88 88 87 96 +74 96 90 87 101 71 84 83 101 82 76 76 81 82 89 93 90 90 90 75 77 81 100 101 92 95 78 90 85 97 91 83 83 89 91 88 77 87 92 86 93 76 88 95 83 78 95 84 85 89 85 77 84 86 70 99 108 97 86 87 94 63 91 81 88 89 93 74 92 73 91 78 71 76 83 85 72 105 83 65 92 91 84 74 72 70 84 77 87 88 +84 85 82 70 79 85 82 102 96 70 88 83 83 88 76 79 77 78 81 90 81 72 79 82 80 84 86 68 84 85 81 72 74 102 74 89 101 90 95 70 82 89 101 103 87 75 79 89 71 76 92 91 78 90 89 94 87 100 90 76 102 78 82 89 73 93 105 83 88 104 95 87 96 87 86 73 90 99 81 90 82 104 85 83 75 84 83 73 80 68 +84 81 89 81 78 90 85 94 78 94 80 93 81 101 75 89 72 104 79 81 96 86 85 86 106 84 95 87 93 108 86 86 85 99 76 77 72 67 78 89 92 97 99 91 95 78 86 74 68 100 83 88 75 79 72 109 84 77 74 90 78 82 91 90 85 69 75 83 75 78 86 88 87 74 84 81 79 87 79 87 79 90 82 87 88 76 78 98 99 92 +103 91 81 90 102 87 95 90 70 77 80 95 79 89 76 85 83 90 84 75 75 95 104 80 99 97 92 90 89 82 93 100 73 83 82 66 80 78 85 86 78 86 84 65 94 90 74 84 76 93 95 92 90 98 79 93 73 78 88 107 76 84 68 90 81 74 80 110 84 91 84 69 62 88 94 98 89 78 73 89 82 77 76 82 96 77 71 76 95 69 +83 84 63 76 96 81 87 67 99 95 85 76 65 90 91 97 80 76 78 102 80 77 77 93 116 79 92 75 87 85 99 74 98 101 73 73 90 109 94 101 83 101 87 81 92 81 98 76 86 91 108 99 93 84 91 96 93 96 71 98 78 83 73 92 83 81 83 95 105 89 106 103 83 93 91 78 87 82 95 78 75 97 78 81 97 71 88 83 92 83 +74 95 90 68 70 79 101 93 92 90 83 78 79 88 91 65 85 81 83 89 91 84 98 103 72 117 80 73 81 91 77 90 96 103 99 108 91 98 88 80 75 71 83 73 83 92 83 88 91 81 74 88 79 86 88 89 81 71 75 99 93 77 97 90 93 86 69 83 84 90 92 83 86 91 79 93 93 77 86 89 90 83 81 85 77 95 92 81 77 89 +81 86 78 98 91 64 106 84 81 85 103 82 83 100 92 98 82 76 68 79 80 81 80 82 93 80 82 95 81 71 88 75 90 92 91 75 84 84 86 67 87 89 84 81 95 76 95 62 92 97 86 85 102 72 72 83 87 78 90 85 80 74 83 74 90 72 90 68 93 83 94 91 85 83 78 83 67 85 80 98 81 88 91 75 83 89 86 69 83 98 +84 88 95 71 105 107 94 81 92 72 83 98 75 83 75 84 85 71 84 82 95 71 95 89 90 76 107 92 90 78 83 87 95 96 82 89 100 76 75 78 91 96 87 81 90 99 90 95 83 91 92 88 83 75 88 103 95 82 72 69 87 75 72 91 86 91 97 80 99 70 73 92 79 75 73 80 78 96 110 82 92 72 79 79 80 83 86 81 77 90 +89 86 85 76 76 97 92 96 86 79 78 81 84 104 87 70 84 86 76 92 86 65 107 99 85 85 73 76 94 79 106 82 79 87 76 83 95 88 98 91 78 92 102 91 94 85 93 86 86 86 88 67 79 89 90 67 77 103 79 97 80 84 94 67 91 85 70 90 84 88 88 77 84 91 95 81 90 89 79 76 88 99 84 83 89 86 82 84 90 85 +107 80 89 72 75 70 63 77 88 92 84 85 76 96 88 98 87 90 96 101 82 93 86 92 81 75 95 88 73 89 84 97 83 95 78 87 93 92 80 85 97 87 78 76 75 79 74 79 77 88 100 86 85 101 85 87 88 71 76 76 77 97 96 93 89 84 82 83 78 88 78 88 63 102 87 99 80 63 103 89 95 91 96 117 80 83 105 83 78 95 +75 85 80 70 75 74 65 78 92 76 86 89 97 82 88 99 91 92 65 75 91 73 79 77 88 97 85 81 86 86 88 84 90 77 82 99 65 89 74 96 77 95 104 86 77 78 88 77 92 84 107 76 93 87 82 93 95 101 96 90 75 89 100 89 96 79 78 80 86 85 86 83 82 92 79 103 81 100 93 79 90 75 80 110 87 103 82 89 81 97 +88 76 85 79 84 78 72 77 71 88 70 85 84 92 83 82 78 96 94 94 86 91 86 89 104 93 96 85 90 86 98 78 94 80 77 87 79 101 91 75 85 87 73 75 101 85 109 70 74 79 76 79 83 73 81 98 91 81 89 81 85 100 85 75 87 84 72 94 99 95 87 79 74 77 83 85 94 94 102 82 74 87 87 80 79 76 84 74 72 85 +93 83 100 70 81 90 80 94 72 84 102 88 94 71 82 97 78 80 66 97 73 81 64 78 85 93 91 95 77 91 90 80 102 77 93 88 83 87 78 78 75 72 83 84 81 91 94 95 84 80 93 87 82 78 87 90 75 82 106 94 85 75 98 95 103 100 89 87 91 76 77 82 92 95 72 89 85 79 103 95 91 90 77 78 83 99 79 102 91 94 +93 65 84 80 81 76 80 90 89 94 96 83 84 92 79 91 105 77 94 91 98 71 91 77 81 101 115 87 109 73 74 90 89 84 76 86 94 96 91 73 85 97 76 80 81 76 85 75 88 91 59 76 83 90 87 84 89 88 82 109 71 88 86 85 74 87 87 71 75 86 90 71 84 68 90 87 104 72 86 84 80 90 87 79 71 92 87 93 98 85 +94 85 99 91 77 82 94 81 97 75 77 86 79 76 90 79 84 79 101 94 86 82 99 83 84 76 90 92 93 66 83 84 107 81 74 65 82 79 65 90 77 102 88 89 89 84 78 65 70 86 92 85 91 81 94 80 80 86 100 83 88 105 81 77 94 93 87 94 66 83 71 88 85 75 84 88 82 87 82 81 85 94 70 86 84 98 74 103 95 100 +75 80 88 79 83 84 83 77 115 79 89 87 72 83 81 96 95 88 112 86 91 87 94 79 95 70 85 87 91 98 97 83 88 84 92 75 87 80 85 76 73 80 87 74 80 75 87 91 88 90 91 82 86 92 82 90 111 74 77 78 72 89 71 89 80 96 71 96 88 78 69 75 77 95 98 87 79 77 84 85 69 100 75 82 75 87 83 91 87 106 +98 83 95 80 92 90 104 83 81 82 93 82 97 85 91 93 81 78 84 94 80 103 97 82 87 76 94 100 65 103 93 85 89 100 71 89 82 81 89 91 92 88 80 82 67 83 80 89 83 95 96 84 85 80 78 101 76 73 90 98 72 90 89 79 91 89 98 80 83 79 72 81 84 81 92 79 83 95 71 83 85 92 64 83 79 81 87 77 100 86 +85 87 96 90 73 82 76 79 97 93 93 90 78 85 106 102 83 85 78 81 82 90 90 77 82 80 85 81 94 75 93 68 85 82 83 84 96 67 96 106 78 80 88 83 98 85 78 85 96 80 91 102 97 84 90 76 92 75 96 83 85 79 88 96 106 96 90 97 99 79 92 77 82 90 95 92 80 100 78 85 85 93 86 101 80 82 89 75 72 94 +82 84 80 83 93 76 93 91 91 80 101 80 85 96 86 89 97 103 99 94 81 84 93 79 87 83 102 76 85 101 81 88 84 100 102 89 90 79 85 90 75 85 87 87 74 82 81 96 76 91 91 80 79 99 74 89 104 79 75 105 85 83 93 71 88 79 76 81 92 78 88 88 86 87 74 94 78 69 89 77 87 81 90 79 82 84 83 86 73 84 +90 93 65 88 89 76 80 69 67 86 81 88 81 73 99 88 97 81 73 100 87 96 89 91 76 89 92 87 95 71 79 73 79 96 90 82 93 89 87 91 92 68 81 93 79 70 91 76 83 90 96 82 103 82 85 80 91 87 99 89 74 94 86 78 87 99 87 92 77 72 77 79 85 81 76 85 86 78 86 72 104 81 96 84 87 99 99 98 87 92 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/image.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/image.dat new file mode 100644 index 0000000000..4e0d024e5f --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/image.dat @@ -0,0 +1,963 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_2d(300, 300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: sample_PSD +# position: 49.4198 0 -35.0741 +# title: Intensity Position Position Monitor (Square) per bin +# Ncount: 153447624 +# filename: image.dat +# statistics: X0=-0.0149376; dX=0.0713873; Y0=0.00896999; dY=0.0763887; +# signal: Min=0; Max=9.96965e+07; Mean=29582.1; +# values: 2.66239e+09 2.63647e+08 2313 +# xvar: x +# yvar: y +# xlabel: x [m] +# ylabel: y [m] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.15 0.15 -0.15 0.15 +# variables: I I_err N +# Data [sample_PSD/image.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.033596261e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.443219979e-39 0 0 0 0 0 0 0 0 0 0 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.874735149e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224.5756648 0 0 0 0 0 0 0 0 0 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.641390815e-11 352291.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 5.86737778e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.091806505e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.560066577e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.253453508e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.046788865e-07 0 0 0 2.607972247e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.243285694e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.253874107e-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 2.179085445e-16 0 0 0 1.422033672e-38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.880438652e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 343860.0422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.966627778e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.503581029e-24 0 0 0 0 0 0 0.0005440709103 0 0 0 0 0 0 0 0 0 0 3.378189639e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 974807.3053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1401.456655 0 0 0 0.017752909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.031841987e-15 0 0 0 0 0 0 0 0 0 0 0 24.72414825 0 0 0 0 0 0 0 0 0 0 0 0.2521023939 0 0 0 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.714905193e-12 2.783425521e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01034005732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.309466275e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.509305761e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.866116878e-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.812457519e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.209318642e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.32560706 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.586795496e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 470.5550167 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.410771205e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1422616.243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.54192059e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001159766555 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.689981651e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.897644147e-05 0 1.989773574e-17 9.993415454e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 7.144971851e-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 4.084204622e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.35781375e-24 0 0 0 0 0 0 0 0 0 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.499605681e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08211771737 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1226361301 0 0 0 0 0 0 0 0 0 0 0 3.898671365e-28 0 0 0 0 0 0 0 0 0 0 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.492795707e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.344996113e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.982269668e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 179.7592053 0 0 0 0 0 0 0 0 0 0 2.000305568e-07 0 0 0 0 0 0.006476279014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.976159551e-15 0 0 2340174.502 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.577205252e-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 1.363662169e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.298491582e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.072785151e-15 0 0 0 0 0 0 0 0 0 1.22122532e-10 0 8.678635043e-05 0 0 0 0 0 5.570152352e-15 0 0 0 0 0 0 0 0 0 0 0 16362.30284 0 4.55038071e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.923097756e-13 0.002553708536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.940765344e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.78033058e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.499064663 0 0 0 0 1.34671166e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.823881421e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 252.7403631 0 0 0 19297342.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21157782.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.60465299e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.950767831e-11 0 0 0.05970774111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.882802494e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.758120525e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.280924788e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.159579962e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.185625598e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.982631714e-24 0 0 0 0 0 0 0 0 0 2.593315311e-27 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 1999990.962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6891802.625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.440310608e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1264634.044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.174731481e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.470560075e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009506578231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.496502121e-29 0 0 0 0 0 0 0 0 0 1.074210071e-13 0 0 0 0 0 0 0 0 0 0.0005566832803 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.714431432e-15 0 0 0 0 0 0 0 1.770434283e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1238.892582 0 0 0 0 0 0 0 0 0 0 3.000362873e-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 5054561.139 0 0 0 0 3.655533906e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8455259.928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00469660949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.807225437e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 605.6323146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22779.64321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.743878085e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.306886959 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.013423306e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4535148.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.63197789e-25 0 0 0 0 0 0 0 0 0 0 0 6.026177822e-05 0 0 0 5111.412763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.835699036e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15573.09953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.882417884e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.548278769e-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 5.183448482e-21 1.321053118e-07 0 0 0.03457472117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.361590733e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.98790379e-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 4.119541085e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.001821648e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.813159813e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02914629488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.244348076e-07 0 0 0 0 0 2.722934073e-14 0 0 0 0 0 0 0 0 0 0 7432130.14 0 0 0 2.108339279e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.389633235e-21 2.845584519e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 451.4107616 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 10298026.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.420605803e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.351398319 0 0 0 0 0 0 0 0 0 1.074853176e-08 0 0 0 1.245821701e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.72802756e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9108.879524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100299.9091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18.77818836 0 0 0 0 0 0 0 0 0 0.1349916374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.349054434 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.708089258e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20409854.11 1.64529729e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.225088509e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.011351163 0 0 0 5.028277893e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.240379207e-15 0 0 0 0 0 0 0 0 0 2835768.502 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.417018471e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1635224.993 0 0 0 0 0 0 0 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.469605043e-14 0 0 0 0 0.02286982433 1.589662148e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.575290942e-18 0 0 0 0 0 0 0 0 0 0 0 5.20324273e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.783891039e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.361144475e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69070.47195 0 0 0 0 0 0 0 0 0 0 2.366004212e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.545072005e-34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2128168.159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 585221.9429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3217449.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.812317069e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.622026383e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.645970824e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.774068469e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.812336766e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02026851344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.596603157e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.190400585 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.220725622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.973343811e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.802368057e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03172711083 0 0 0 0 0 0 0 0 0 0 0 1.082979253e-23 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.875911099e-21 0 0 0 0 0 0 0 0 0 0 4.337035602e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8756.654436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.740606893e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2546411.636 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.120099401e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.858032505e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1.52514956e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1662.548516 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.966476979e-28 0 0 0 0 2.193661558e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.095555971e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002213889467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06047107679 0 0 4.981651255e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 388.8085766 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.894192432e-19 0 0 0 8.532328725e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.672688751e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006802674114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.448993576e-05 0 0 0 0 0 0 0 0 0 0 2.955845883e-22 0 0 0 0 0 0 0 0 0 0 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.967703617e-09 0 0 0 0 0 0 0 0 271754.4672 0 0 0 0 0 0 5484524.732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.157030428e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1344236.343 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.152753584e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.012953067e-21 0 0 0 0 0 0 0 0 1.359222115e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82.86447856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.18913515e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59.76403301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112469.8056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2472.217518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15.52508351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.017021864e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.900717899e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2767849.096 0 0 0 3.821018967e-13 0 0 0 0 0 0 0 0 0 2.182217218e-07 0 73142.3918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.203340406e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2317.406428 0 0 0 0 0 0 0 0 15590124.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.872177982e-23 0 0 0 0 0 0 0 0 0 0 0 3.075035287e-10 0 0 0 0 0 0 23.44531563 0 0 0 0 0 1.171517174e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.175717483 0 0 0 0 0 0 0 0 0 0 0 24.24942195 3.33952983e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.401929491e-14 0 0 0 0 0 0 0 0 0 0 0 6.004534691e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.593075157e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001426001717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11853864.68 0 0 0 0 0 0 0 0 0 0.07060737546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1546143.886 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.399868789e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001326996597 0 0 0 0 0 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.316677638e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 443.5303428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19918475.88 0 0 27653.82768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6277334.428 0 0 2.052862537e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.990205373e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.626705571 0 0 0 0 0 0 0 0 0 0 0 0 0.009910983818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003714931561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.381838883e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36507509.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.173892749e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2136176.992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.903745855e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.166087327e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 814526.401 0 0 0 0 0 0 0 0 0 0 0 0 4.194640555e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1695727609 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38857.13338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27865.34633 0 0 0 0 281266.3745 0 0 0 0 0 0 0 0 0 0 9.327642737e-10 0 0 23272335.51 5.777723094e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.725691728e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.059511722e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009344113392 0 0 0 0 0 0 0 0 0 0 0 0.001629754233 0 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.509377951e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7382530.999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.258867879e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01695333745 0 0 0 0 1.672733274e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106.3542994 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.999038991e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37076.7926 0 0 0 0 0 0 0 0 0 0 0 0 2.530526316e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.245056623e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.429795919e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.044671189e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.455459319e-22 0 0 0 0 0 0 0 0 0 0 0 1.858700344e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.491617658e-16 0 0 0 0 0 0 0 0 0 2.236241252e-12 0 0 0 0 0 0 0 0.0008812275712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 4218513.752 0 0 0 0 0 0 0 0 0 0 1009391.459 0 0 0 0 0 0 2.935191181e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.140852109e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.930572933e-20 1.09384444e-15 0 0 0 0 0 2.612843969e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7712720.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.251919852e-18 0 0 0 0 0 0 0 0 0 2.979738097e-20 0 0 5.057831978e-09 0 0 0 0 0 0 0 0 0 0 0 0 32213.31297 8.082105086e-12 0 0 0 101.2214807 0 0 0 0 0 0 0 1.194870463e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.587522172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09925064873 0 0 0 0 6.30124106e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144.7457701 350257.89 0 0 0 0 0 0.0002941827153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008750639569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002276873801 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.288363305e-09 0 0 0 0 0 0 0 0 0 0 0 0 8.197667961e-22 0 0 0 0 0 0 0 0 0 0 0 0 3.477014274e-11 0 0 0 0 0 0 0 0 0 0 9.355100752e-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 2.911439309e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008723498142 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 148.0791909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17217607.57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 413781.7222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.45785994e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.705598152e-21 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 281.6006039 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.344242458e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002157494904 0 1.02530716e-21 0 0 0 0 0 0 5.341574844e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27.08867185 0 0 2.75669858e-05 0 0 0 0 0 425189.3171 0 0 0 4.648678169e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 1.090158297e-05 0 0 0 0 0 32423.64615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.406087337e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 26415812.27 0 0 0 0 0 0 0.003590764984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0180049124 0 0 0 0 0 0 75.46140916 0 0 9.903724396e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7165.059621 0 0 0 0 0 0 0 0 0 0 0 0 2.323407963e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.414171381e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6829.114881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.727480453e-14 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 135.499437 0 0 0 0 0 0 0 0 0 0 2.446901945 0 0 0 0 0 0 0 0 0 0 0 0 3.102427368e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18386.41815 0 0 0 0 0 0 0 0 0 0 0 0 7.401129508e-11 0 0 0 0 0 0 1.174234309e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5916.866858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01792538621 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6047862.336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.421768914 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.510181924e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18673801.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3237655.378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.476332326e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.288180611 0 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.080103062e-15 0 0 0 0 0 0 0 0 0 1.66722247e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.647673005e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.545063262e-06 0 0 0 0 0 0 0 0 0 8773.709559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 36.39574445 0 0 0 0 0 0 0 0 7.177606673e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.551284553e-13 0 0 0 0 0 0 0 0 4.86069283e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.093952421e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.441254265e-22 0 0 0 0 0 2.60965451 8334.465039 0 0 0 0 0 0 0 1.338076105e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.521918583e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 27487609.34 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.901597305e-07 0 0 0 0 0 0 0.4115832831 0 0 0 0 0 0 2.0615857e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2514.430903 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.509210079e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8425774.384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.410016533e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.202584288e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.547265695e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.390248766e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.789746746e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.394104282e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.595049043e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7332359.229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 119806.37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 4.418462571e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.045343859e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.227160534e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.467568278e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 7.534804962e-16 0 0 0 0 0 0 0 0 0 0 0 0 3.553004161e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.219213045e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 378941.2148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58.46681998 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0721971375 6190368.874 0 0 0 0 1.009590477e-24 0 0 0 4.102777948 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.848019728e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.443048305e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.181213708e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1815678733 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.355636054e-08 0 0 0 0 0 0 0 0 0.0004131737961 55.20881379 0 0 0 0 0 0 0 9.0821264e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.714514822e-07 0 0 0 0 0 0 0 0 0 0 0 3.098487304e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 606.6220049 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03748531774 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.067146619e-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 45.56728348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008463441378 0 0 0 0 0 0 0 6.267879175e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.362013032e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01414516781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.184267246e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.60124877e-09 441.1077127 0 0 0 0 0 0 0 0 0 150477.0054 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.566209427e-06 0 0 0 0 2.846659738e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5453545.776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86.53289613 0 0 1157190.697 0 0 0 0 0 0.1998793011 0 0 0 0 0 6.224295664e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003529099676 2.897378332e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.373355463e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.923209742e-10 0 0 0 0 0 0 0 0 0 21.86034601 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.151122975e-06 0 0 0 0 0 0 0 1.490492387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.19025377e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.920344132e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.108672927e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.961529334e-21 0 0 0 0 0 0 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.910500205e-12 0 5.111848266e-39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25742234.74 0 0 0 0 0 0 0 0 4545.228769 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9947352.431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.57269069e-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.325627654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.732267122e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.809975508e-16 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009697653307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003686987916 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.030692323e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 8.700266885e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 521767.8681 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.652880908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.491914581e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.255313643e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 9.623525393e-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 855345.251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.227572362e-13 0 0 0 0 0 0 0 0 0 1158684.954 0 0 0 0 0 0 0 0 0 0 0 0 0 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.818764233e-05 0 0 0 0 0 0 0 0 0 4.524171621e-07 0 0 0 0 0 0 0 0 0 0 1.748285691e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10729.53026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 760595.4643 0 0 7.086206904e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1100.394043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7520430.183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 325.3154901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.01967478e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.499198377e-06 0 0 0 0 0 0 0 0 0 0 6.988036639e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8143311445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.688628207e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 4.618891407e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6405.938894 0 0 0 0 0 0 0 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.396689544e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.318520409e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2807.274403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.483345951e-19 0 0 0 4.56891672e-16 0 0 6.030763472e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.391757419e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.700805532e-18 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.810223605e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.02113877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2777566.427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.258576128e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003228893521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.850203978e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.697637713e-07 0 0 0 0 0 0 0 0.001215972118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.749976586e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.196202479e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.303304243e-13 0 0 0 0 0 0 0 0 0 0 0 2.991465714e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70623.30668 0 0 998.8084215 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.007056933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5500364.161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.704391638e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 408.2672526 0 0 0 7.287071966e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16306.2564 0 0 9054.431057 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15.04564579 0 0 0 0 0 0 0 0 0 0 0 2782884.522 2.296026583e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16580061.39 0 0 0 0 0 0 0 0 0 0 0 0.0004670844004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.855658383e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.479295861e-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 20.37291926 0 0 0 0 0 0 0 0.8908187782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.225591384e-09 675580.3573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001695478072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1041457.775 3.914358287e-08 1.108017939e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.552753617e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.735906239e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.595035675e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.328848569e-15 0 0 0 0 0 0 0 0 0 0 0 0 0.8103764877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.678692424e-07 0 0 0 0 0 0 0 0 2172258.495 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.539620861e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.353451171e-08 0 0 0 0 0 3.249801275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.47574479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002101531146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.782245709e-12 0 0 0 0 0 0 2.270606586 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.386040459e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.580027878e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.594922476e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.431842321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.889026141e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118157.2027 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001358868317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.12888855 0 0 0 6.396692294e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.145169778e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.086732668e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1.324682438e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.326564152e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.338405379e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 2.018435685e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.829545686e-11 0 0 0 0 0 0 0 0 0 2.130439092e-39 0 0 0 0 0 0 0 0 0 1.031945732e-15 0 0 0 0.0005905235614 0 0 0 0 0 0 0 296.6396695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.906220543e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22674131.45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1577.861538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 918.030292 0 0 0 0 0 0 0 1.190859587e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1917493.998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.478317031e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5903221.001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.655000396e-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 16.11044448 0 0 0 0 0 0 0 0 0 0 3.452325203e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9086388259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3231.87387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.621075712e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.332724625e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.890315474e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.977511032e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.273607294e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.761566195e-17 0 0 0 0 0 0.001332598229 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.419905732e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005878732504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.565129963e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.348354071e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4430114.12 0 0 0 0 11074958.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.811845698e-12 0 0 0 0 0 0 85196.39576 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14413675.59 0 0 0 0 0 0 0 0 0 0 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.073011697e-24 0 0 0 0 0 0 0 0 0 0 0 6.771749883e-10 0 18873797.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244.0935023 0 0 0 0 0 0 0 0 603.0484492 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14983991.78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002651202105 0 0 0 +0 4.313767451e-07 0 0 0 0 0 0 0 0 0 0 5.937693043e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00995248537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.532256558e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002388796944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56912.02958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 938.7427671 0 0 0 0 0 0 0 0 0 0 0 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.219456889e-06 0 0 0 0 0 0 0 0 0 0 0 5.259539081e-11 0 0 0 0 1.622701764e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.673641783e-06 0 0 0 0 0 0 0 0 0 1.333113613e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008291547709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.822544692e-16 0 0 0 0 0 0 0 0 4.400982002e-10 0 2.5690988e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.046954566e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003892423138 0 0 0 0 0 0 0 0 0 0 0 0 8.029657723e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13.08237519 0 0 0 0 0 0 0 0 0 0 0 0 0 8.632363529e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10135.60905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.258213432e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.556290814e-21 0 0 0 0 0 0 0 0 0 49.70830429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.724663968e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42.77916586 0 143049.1579 0 0 0 1.050490928e-25 0 0 9.747933202e-10 0 0 1.093124598e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.123819215e-05 0 0 0 3.163623947 0 0 0 0 0 0 0 0 7.877242046e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65097.14592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.624848315e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.659802642e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.436759721e-23 0 0 0 0.000267234071 0 0 0 0 0 0 0 0 0 0 0 0 0 1762.004346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.645245122e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.738356599e-13 0 0 0 0 0 0 0 0 0 0 0 0 4.409548442e-13 0 0 0 0 0 0 0 0 52391.04701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39892.59707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3914963.246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.694304185e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 656404.3066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1182.924184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14420233.12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8155243.802 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.281858025e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.002139987924 0 0 0 0 0 0 0 7.254322007e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.609681286e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12.09434566 0 0 0 0 0 37.44773796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.631166601e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09421582041 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7293029.115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.278178612e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40153.50717 0 0 0 0 0 0 0 4363458.715 0 0 0 0 0 0 0.0001325615061 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4704285999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.662725172e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.693329534e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.422823827 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.377716239e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04311821698 5243203.161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7116.586655 0 0 0 0 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.442092116e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.380082159e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3465625.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 297016.3673 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.079533163e-13 0 8.854071122e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15.62519775 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.25989054e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000160149967 0 0 0 0 6.092202551e-10 0 0 0 0 127510.273 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.434214294e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12891.67713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1906.71377 0 0 0 0 0 0 0 1.78084709e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.355681089e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 253.4702737 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.760533179e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02478895422 0 0 0 3.211500852e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.131077411e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.000880995e-09 0 0 0 0 0 0 0 0 0 0 486295.0967 0 0 0 0 0 0 0 0 0 0 0 0 3.401004032e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86791.50586 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.521493582e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.083103505e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.436627255e-07 0 2.384286924e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.18376634e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.774170624 0 0 0 0 0 0 28.01638338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 416.118761 0 0 0 0 2.15090008e-20 0 0 430398.1958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0.03054352077 0 0 0 0 0 7.356258771e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 806587.3632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.397102253e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.435262335e-07 0 0 4485684.306 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.53322651e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2385668.607 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.758556214e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3963299775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.689243301e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14734.38387 0.000404367743 0 0 0 0 0 1.01288942e-07 0 0 0 6.358429984e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27407932.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.605162501e-09 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8780682.99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.372105716e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00514930499 0 0 0 0 0 0 0 0 1.168813189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.012082604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001055216273 0 0 9932598.352 0 1.302239608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8288.533949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03702645663 0 0 0 0 0 0 0 0 0 0 14.48254425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.569684568e-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 2.465968531e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.847239404e-12 0 0 0 0 0 0 0 0 5.425327197e-14 0 0 0 0 0 0 0 0 0 89131.47513 3.14617021 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 937.4447078 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 704.2822267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17964531.13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140119.3277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.689061988e-26 0 0 0 0 0 0 0 2.121095807e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5281662.194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.408929991e-06 3182934.733 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.845305117e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.572084171e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003411265153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.590737006e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1334885.518 0 0 0 0 2.557894762e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17571.29687 2.981201711e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 274107.314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.075826683e-13 0 0 0 0 0 0 0 0 0 0 0 2.885222944e-10 0 0 0 0 0 0 0 0 0 1.918854135e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.293340972e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.363535115e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.402528353e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6635.863037 0 0 0 0 0 0 7.893360305e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.09503235e-19 0 0 0 0 0 0 0 6.375807972e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43602021 0 0 0 0 0 0 0 1.16310556e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33870171.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41797.93492 0 0 9.79936818e-13 0 0 0 0 59.07195619 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.706046774 0 9.908093463e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.962787279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.011791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42459982.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.16257938e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1192243.896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106.5165594 0 0 0 0 0 44.50493709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01371060679 0 0 0 0 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.115659324e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.753976748e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.192966398e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4877956.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008419929524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5646.863777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.301789037e-07 0 0 0 0 0 0 0 0 0.002608730559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.195107865e-08 0 0 0 0 0 0 0 0 0 0 0 0 2.940988347e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.668984753e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.111308264e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184.4376065 0 0 0 0 0 0 0 0 0 0 8.005261711e-22 0 0 0 0 0 0 9.258367773e-05 0 1.544687791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20.48074898 0 0 0 0 0 0 1.483656882e-06 0 0 0 2.514494539e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.541962447e-10 0 9238856.928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1297424.713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.277945186e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86.90637969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 931864.0324 0 0 0 0 0 0 0 0 0 0 0 0 0 1.040084768e-24 0 0 0 0 1.34009443e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03609059658 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 280.6582475 0 0 0 0 0 1.937153077e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.062203334e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37422.93694 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03506372763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001016350269 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.395349527e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20.5899219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.429409356e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.857271518e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.121106463e-05 0 0 0 0 0 0 0 7.230348186e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.805511956 6.578048373e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181.3427968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003870509544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.30815916e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.107780451e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.001033495e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.909476572e-12 0 0 0 0 0 0 0 0 0 0 0 0 0.00138649901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.152789376e-17 0 0 0 0 0.7277146057 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001126900202 0 0 0 0 0 0 517071.5931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.340680619 0 0 0 0 0 0 0 0 0 0 0 0 0 1.329783757e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008829412698 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 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.158924151e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008879309458 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.378621424e-06 0 0 0 0 0 0 0 0 0 0 0 0 2.100483634e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.589900604e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001508324797 0 19128884.62 0 0 0 0 0 0 0 0 0 0 0 0 1.932249821e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225281.6546 0 0 0 0 0 0 0 0 0 0.0001579535691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.866199951e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.508368526e-19 0 0 0 0 3.563669762e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.332960001e-11 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 3.684173312e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 134.7784561 0 0 0 0 0 0 0 0 0 0 0 0 1.662070078e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 519.7023698 0 0 0 0 0 0 0 0 0 0 0 0 7.662002549e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.183780328e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22157444.31 0 0 0 0 0.01069340953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.201408243e-12 0 0 0 0 0 0 0 0 0 0 0 25.80196252 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.536385623e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2496548.967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.427884342e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 304.3232787 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.172692411e-08 0 1.038679179e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.238631015e-07 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1227.476295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.113366094 0 0 0 0 3.685408556e-07 0 0 0 0 0 0 0 2659.245024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.200452377e-14 650536.908 0 0 0 2.967326812 0 0 0 0 1913473.677 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.081981965e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001613145423 0 0 0 0 0 0 0 0 0 0 0 5.717865621e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.0001075611354 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.626264111 0 0 0 0 1789213.831 2.564954694e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 262592.2992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.181484028 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3329851.839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.455583779e-18 0 0 0 0 0 0 5.61545594e-14 0 0 0 0 0 0 0 0 3.135731821e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.853663671e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.90900492e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 21450487.59 0 0 0 0 0 0 0 0 0 0 0 0 0 6.709258526e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6753138.849 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2009.659645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005977096156 0 0 0 0 0 0 0 0 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.038930181e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.684326059e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.43930023e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.145226575e-07 1.763574446e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.907593058e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.692017092e-14 0 0 0 0 0 0 0 0 0 0 0 0 0.008296996935 0 0 0 0 0 0.04720776598 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00239024446 112740.4793 0 0 0 0 0 0 0 0 0 0 7.35203383e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27780735.35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61.92209402 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.436248369e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.012188241e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.519290205e-19 0 0 0 0 0 0 1.148358796e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.114180553e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.909458776e-06 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 999338.2039 0 0 0 0 0 1.892758753e-11 0 0 0 0 0 0 0 0 0 6.425866827e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.561661289e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.370274282e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 344043.713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.42683471e-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 6.039940154e-23 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003445925982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01816684108 0 0 0 0 0.002870338734 0 0 0 0 0 2.111909609e-15 0 0 0 4.949294513e-16 0 0 0 1.744211236e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004554540244 0 0 0 0 1.809718191e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.021238203e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.784641432e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.101988032e-06 0 0 0 0 0.005215046605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.976682073e-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.2922569505 0 0 7.666905257e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.309091182e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004778701748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007952539402 0 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.806314096e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.509550372e-05 0 0 0 0 0 6.295950944e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.840274049e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.010246999e-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 7.33217696e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69859.44589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1948338.472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.592849925e-20 0 0 0 0 0 0 0 0 0 0 354878.6781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001103419756 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 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.714273879e-11 0 0 0 0 0 0 0 0 0 0 1.092167724e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.658487253e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.288843334e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.035457984e-20 0 0 0 0 0 0 0 0 3.966009921e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.084566713e-26 0 1.120338178e-05 0 0 0 0 0 0 0 0 0 0 0 0 29717.89885 0 0 0 0 0 0 0 0 0 0 0 0 0 7.073400882e-15 2.88236666e-16 0 0 0 0 0 0 0 0 0 14.44270487 0 0 0 0 0 6096.709443 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.695101902e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.035264794e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1360.887905 0 0 0 0 0 0 0 0 0 0 0 0 0 440721.0889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.68560403e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.9337173e-12 0 0 0 0 0 0 3.430898298e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.789024224e-10 0 0 0 0 0 0 0 0 276041.5928 0 0 0 4.124983137e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70.43229283 0 0 0 0 0 0 4583140.958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2235436293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +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.323397446e-06 0 0 0 0 0 0 0 566.0163492 0 0 0 0 0 0 0 0 0 0 2.452606086e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 229893.9362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02862103809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.055420062e-30 0 0 0 0 5.024749594e-09 0 0 0 0 0 0 0 9010447.905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25361.01423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.149304728e-11 0 0 0 0 0 0 0 7.588309566e-16 0 0 0 0 0 0 0 0 0 0 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.892333766e-14 0 0 0.003805555635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.631792748e-06 0 0 0 0 0 0 0 0 0 0 0 3.039256135e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1273940.537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.442598016e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13.44779444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.066483823e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 1.348439379 0 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.243176984e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 968576.885 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00175020563 7.271023417e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.961520726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.187081045e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.91098538e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2369444.046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.224508771 0 0 0 0 0 8.257888375e-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 327086.4762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06380170704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.508758248e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71265.41822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1334792.221 0 0 0 0 0 0 0 0 0 0 0 0 3.58913159e-22 0 0 0 0 0 0 19291014.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98.4259699 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04804515645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.914770882e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001459167428 0 0 5636.604727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.482395073 0 0 0 0 0 0 0 1.48258433e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1189462682 0 0 0 0.0002776073761 0.00120273147 0 0 0 0 0 0 13.48895473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 423.2637326 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.680873585e-09 0 0 0 0 0 0 0 9.750683767 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 737795.7053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.57846993 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.478445254 0 0 0 0 0 0 0 0 0 0 0.08736894111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.556125444e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.459108095e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.390879556e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.635026658e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1520415166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005171336421 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.851331899e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.587699845e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.748803213e-12 0 0 0 0 0 0 0 0 0 0 6.214923432e-09 0 0 0 0 0 0 0 0.0008595195073 1.407590969e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 9.316318509 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 286180.1789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.422400025e-15 0 0 0 0 0 0 0 0 0 0 17874582.25 2.123381992e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.907569466e-09 0 0 0 0 1.678482222e-10 0 0 1.996593708e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 658.1858241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2384438.768 0 5.473011921e-19 0 0 0 0 0 0 0.0006626658854 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51869.17161 0 0 0 0 0 0 0 0 0 0 2.050185993e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.316496978e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.192962937e-20 0 0 0 6.738238776e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.139289202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.12169409e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.569544188e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 272.4389828 0 0 0 0 0 0 0 180.8842342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004787236372 0.04694861291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1350723.665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36646128e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3470761.733 0 16.49083042 0 0 0 0 0 0 0 0 5.39516903e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.780925904e-25 0 0 0.02366182856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 692701.9215 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.302046466e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 4.415361173e-14 0 0 0 0 0 0 0 0 0 0 4.547298796e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.532991804e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.620625152e-07 0 0 5.589800654e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2007382.837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01933888587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1395924.723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22953199.01 0 0 0 0 0 1.053076738e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.698361847e-20 0 0 0 0 25103.75439 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.34481113e-08 0 0 0 0 0 0 0 0 0 7.397917637e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 1.057505584e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004913272699 6.478912608e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.247156042e-10 0 0 0 0 0 0 0 0 0 1.624559026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110937.5046 0 0 0 0 0 0 0 0 6.938298858e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.062931871e-09 0 94970.03786 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06078503608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.205825348e-11 3.216424482e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0963236506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22501140.53 0 0 0 0 0 0 0 0 0 0 0 4324.93288 0 0 0 0 0 0 0 0 0 0 6885107.795 0 0 0 +0 0 0 5.572208653e-07 6.292322586e-10 0 0 0.0001898542419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003437161638 0 0 0 0 0 0 0 0 0 0 0 0 0 1964.062308 8.200958462e-24 0 0 0 0 0 1.12421226e-05 0 0 0 0 0 0 0 0 0 0 0 0 1.318088687e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001181676396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.537021277e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881155.5444 0 0 0 0 0 0 0 0 0 0 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.349140539e-07 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27703054.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.958295299e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99.07170607 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001379382045 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23687.48402 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.165816869e-14 0 0 0 0 1.819535254e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.577782117e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 34547.64433 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.115747999e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.666562108e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02086473118 0 0 0 0 0 1.024338677e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1.913171625e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59171.99445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16331141.04 0 0 0 0 1.621210346e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.533896241e-32 0 0 0 0 0 0 15.99946671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.307166996e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5677665181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001439168363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.559428336e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2132007.706 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.316770713e-13 0 0 1.334521269e-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 5.40833672e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.50060049e-13 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8223.805498 0 0 0 0 0 1.021429457 0 0 8.149809135e-13 0 0 0 0 0.03373927538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.086526663e-10 0 0 0 0 0 0 0 0 1.178367505e-12 0 0 0 0 0 0 0 0 0 5.05382062 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77.24673865 0 0 0 0 0 0 0 0 0 0 0 0 0 2.058532374e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1.226678202e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001547527436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104772.0766 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1320740387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4327615.228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13118.88474 0 0 9.627442895e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.693086784e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112.7254337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5242748.538 0 7.187419454e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152587.8756 0 0 0 0 0 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.528634041e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.784113019e-08 0 0 0 0 0 0 0 0 159.2854386 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.773364504e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001360994484 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.369161232e-09 0 0 2248801.732 0 0 0 0 0 5.031878918e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.804399409e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.775517981e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 191681.0868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000404284154 0 0 0 28.55627445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1642168422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5153277.712 0 0 0 0 0 0 803949.5136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11696999.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.079336541e-08 0 0 0 0 0 0 0 0 2.025902303e-20 0 0 1536857.081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1354300.833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.158948481e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.406304505e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113543.3387 0 0 0 0 0 0 0 0 0 0 0 4.197866306e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.12837809e-19 0 0 0 0 0 0 0 0 0 56184142.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.298369994e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.199326776e-15 0 0 0 0 0 98621.5009 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.699850942e-09 0 0 0 0 9542422.834 0 0 0 0 0 0 0 0 0 0.0271480565 0 0 0 0 0 0 0 7.060336957e-25 0 0 0 0 0 0 0 0 0 0 1795.678967 0 0 0 0 0 0 0 0.007910094263 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.663760485e-09 0 0 0 0 0 0 0 0 0 299759.1764 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.112957602e-10 22.50608174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 302.9621967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.288629291e-14 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 5424381.212 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.975323041e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009230425397 0 0 8.360286372e-10 0 0 0 0 0 0 0 0 0 2.086328726e-07 0 0 0 0 0 0 0.07471080521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 904942.581 0 0 0 0 0 0 0 0 71438.60142 0 1291686.191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21003.03081 0 6.065167169e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.231909034e-14 0 0 0 0 0 0 0 0 0 0 7.555949934e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.467708201e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.590001077e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.099493009e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04899878203 0 0 0 0 0 0 0 0 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.401774933e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66.73926442 0 0 0 0 0 0 0 0 0 0 0.001696553503 4.537021874e-05 0 0 0 0 0 0 0 0 0 10.90254486 0 0 0 0 0 0 0 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.582903426e-07 0 0 0 0 0 0 0 0 0 0 0 0 3.657244592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.378980992e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.517320788e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118.7863989 0 0 0 0 0 0 0 0 0 0 0.09653871645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004500670288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 646553.9765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 3101488.989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.241020086e-15 0 0 0 0 0 55344.74945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.515961479e-22 0 0 0 0 1990610.792 0 0 0.0001632459974 0 0 0 0 0 0 0 0 0 0 0 0 0 2.720240245e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.261348116e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.348257245e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.81736781e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.335466592e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 217.8779922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01500262079 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4931754.943 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1279.029029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 922.8869144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.233659329e-10 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.937973349e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.694552512e-08 0 1.919894289e-11 8.418556715e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8381.376238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005853251444 0 0 0 0 0 0 0.0003803912459 0 0 0 0 0 0 0 0 0 4.628872139e-11 0 0 0 0 0 0 0 0 6.124110221e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09321135068 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99696482.39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.153393014e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.520663954e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1473546.111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.271813517 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.506241582e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.027949143e-19 0 0 0 8.569163032e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.237242142e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.181614012e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.703755289e-13 2.738203148e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.824611273e-17 0 0 0 0 0 0 0 7080172.206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.872903048e-05 0 0 0 0 0 0 0 0 0.1059185571 0 0 0 0 0 0 899805.022 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.886942066e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.42540762e-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 15837146.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 585591.1293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3760538.736 0 0 0 0 0 8337476.684 0 0 0 5.782396271e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.444621443 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.935452124e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 199981.005 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.985151971e-19 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.474448215e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.351913671e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25300198.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07707050182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 642802.4115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.668594673e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08371980037 8.155965684e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2976346.172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3983.83536 0 0 84.50388652 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.256278691e-11 0 0 0 0 0 0 1.667415208e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2946.383397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.497385584e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3015040.865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14826939.26 0 0 0 0.1971396326 +0 8.262155898e-07 0 7862834.292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.243327552e-07 0 0 308.128473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009115104256 0 0 0 0.0001199659178 0 0 0 0 0 0 0 0 0 0 0 9.957580766e-07 0 0 0 0 0 0 0 0.4139312416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3504920.748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5538903.716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.382757309e-11 0 0 0 1.161546084 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02013002273 0 1.251603121e-10 0 0 0 0 0.002122590643 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.93264915e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.694110034e-18 0 0 0 0 0 0 0 0 0 0 749856.6999 0 25787604.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.004082391e-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 7.354129268e-09 0 0 0 0 0 1.010817353e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 6.309158033e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03525935258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001165513982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.842829409 0 0 0 0 0 0 0 0 0 0 0 0 0 1.014499206e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.368676614e-13 0 0 0 0 0 0 0 349017.7308 0 0 0 0 3.322772336e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.336490394e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6295726.133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01859951899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1363577.463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.877655154e-15 0 0 0 0 0 0 2201128.97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 729.4852394 0 0 0 0 0 0 1.648000891e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224180.2914 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005954935786 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.863399945 0 0 0 0 0 0 0 0 69762.53752 0 0 0 0 0 0 0 4.374898846 9447827.538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.602052548 0 0 0 0 0 0 0 0 0 0 0 0 0 3.508165678 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.969576448e-14 0 63.45527819 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7014398.988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2206446.184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.096321601e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 89399.54779 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42976.33771 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1390413.307 0 0 12092.59423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.286789218e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4012360.635 0 0 0 0 0 0 0 0 0 0 6.508050951e-12 2.767024868e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.970670866e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.248450555e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557420239e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003557160946 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05849749041 0 0 0 0 0 0.2987818403 0 0 0 0 0 0 0 2.915047511e-23 0 0 0 0 0 0 0 0 0 3.544547866e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.964436033e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.129782899e-24 0 0 0 0 0 0 0 0 0 0 0 320071.1038 0 0 0 0 0 0 0 0 0 0 2.049223251e-16 0 0 0 0 0 0 0 4.378067435e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.069438946e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 284471.3985 0 0 0 0 0 0 0 0 0 0.04946640531 0 0 0 0 0 0 0 0 0 0 0 6.756643046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16661962.12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.447393126e-05 0 0 0 0 0 0 3.183339059e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2.981657035e-21 0 0 0 0 0 0 0 0 0 0 5384038.66 0 0 0 0 0 0 0 0 0 0 0 0 0 9663.432113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.038799506e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.961140261e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1759706171 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.326972789e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11547824.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 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.793312822e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3269484682 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 726.4801989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.592820563 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.321083118 0 0 0 0 0 0 0 0 10.31014366 0 0 0 0 0 0 0 7.230243037e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5242125.402 0 0 0 0 0 0 0 0 0 0 5.879421153e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4208235.442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1547511.158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001907260229 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.311141044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 749191.9499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.164995387e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1092.25057 0 0 0 0 0 0 0 0 0 0 0 1.02413903e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.377495533e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140.9018396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01349422104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1062533.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8181293.905 0 0 57.04148593 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.905854749e-14 0 0 5.065371356e-06 666.7104085 0 2.373310665e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.03907133 0 0 7.41543912e-37 3937.469781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79.77686213 0 0 10470736.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.403307199e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3845282.039 0 0 0 0 0 0 0 0 0 0 0 0 1.619367029e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.118113774e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.343272902e-18 0 2177592.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 407.2701021 0 0 0 0 0 0 0 0 0 0 0 0 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.227098005e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2468248122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.10730483e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4693810.905 6.181215962e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00500214303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.41455347e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3474634.347 0 0 0 0 0 0 0 1118.967575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.098245307e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4571415.521 0 0 0 0 0 0 0 0 0 0 0 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.8272774e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3002939302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8766.930113 0 0 0 1.749623281e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.57885365e-09 2.926021317e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16404.03646 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11262.79813 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.461127296e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.524266294e-11 0 0 0 0 15021254.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 1.119967939e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.492021719e-05 0 0 0 0 0 0 0 0 0 0 5.166234493e-07 0 0.00239174206 0.3264597467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.94819226e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17967905.89 0 0 0 275931.1029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 4.268956353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.824558049e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1178497.757 0 0 0 0 0 0 0 3.094090515e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08587495768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26.14414825 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.12544264e-08 0 0 0 0 0 9.319189429e-11 0 0 0 6050503.515 0 0 1.590943853e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9495.732695 0 0 0 0 0 0 0 0 0 0 7.020665802e-15 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.547198036e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.050287351e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003842577483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.769017567e-08 0 0 2754382.698 0 0 0 0 0 23871009.83 0 0 0 0 1863609.133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.208495222e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3928316.412 0 0 0 0 0 0 0 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.686131133e-05 0 32756084.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 0 0 0.03507351341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9651190.769 0.0001838794126 0 0 0 1324654.529 0 0 0 0 0 1.244035084e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7950503082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.107556491e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0.0012465556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.149431619e-15 0 0 0 6.512188538e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.261715306e-29 0 0 0 0 0 0 0 0 3205623.69 0 0 0 0 0 0 0 0 0 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.640282091e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.831767614e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.875930704e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.920757805e-10 0 0 0 0 0 0 1.200715684e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.3365338e-06 0 0 0 0 0 0 0 0 0 0 0 0 2.801518348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1697782.361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.722960595e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.361888793e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.112876424e-13 0 0 0 0 +6.129838767e-08 0 0 0 0 0 0 0 0 0 0 0 1.520408016e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193292.8512 0 0 0 0 0 0 312975.1781 0 0 0 0 0 0 0.4377248589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.87642864e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0277008318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.104031994e-27 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 2.509092688e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525651.3082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 365513.9264 0 0 0 0 0 0 0 0 0 0 4.136788038e-13 0 0 0 0 0 0 0 0 0 0 0 0 571600.9292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9330179654 0 0 0 0 0 0 0 0 0 0 0 5.597393938e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.718061652e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008328128082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6764.764881 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 989.8926884 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.86227289e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.549179733e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.849419325e-10 0 0 0 5076325.956 0 0 0 0 0 0 0 0 0 0 7.434803414e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.171611279e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 5.60587962e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.190046984e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.75005955e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.252758959 0 6.786897521e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 391117.7971 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.566000978e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.518164801e-34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001806615704 0 0 223610.8647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.716755953e-09 0 0 0 0 0 0 11381572.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.312993532e-20 0 0 0 0 0 0 0 0.003914111954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.713344596 0 0 0 0 0 8.168322764e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 4.650275206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22394.10026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.683643014e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1184912.899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.326876421 0 0 0 116.8745636 0 0 0 0 0 0 0 0 0 1.222779959e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.381011517e-08 0 0 0 0 0 0 5.362784717e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9212.481924 0 0.005543146922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.153600302e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.264247517e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.762782514e-11 0 0 0 0 0 0 0 0 0 0 0 596205.3103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20253.37138 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.02934948e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16537807.85 0 7.657074274e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.505028247e-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 5.51159472e-10 0 0 0 0 0 0 0 0 0 26436154.78 0 0 0 0 0 0 0 0 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.091950019e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 201300.5163 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1240193899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5529.849026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.976534998e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007529417765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.119738427e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.088694902e-06 0 0 0 0 2360.626118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.670053082e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.556791293e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4274.076505 0 0 0 0 0 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.412425396e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1092699461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01264945569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.261910657e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.842416713e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.857733672e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.619314644e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2940821.276 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.027843585e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.064952914e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0.003430003831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.227125299e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8078619.762 0 0 0 0 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.454636961e-10 0 0 0 0 0 0 1.033067146e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.51723647e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.052099551e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.051209917e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.999942537e-25 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 5.929192149e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.119617916e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02794251306 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6398765.648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.14525264e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.463291391e-20 0 0 0 0 0 0 0 1.829211313e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.41327785e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1311.932714 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4733818.703 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.58445493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39.55216506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.512931348e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.320753698e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21242493.17 0 0 0 0 0 0 41.02830479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001897179172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.461049758e-17 0 0 2.009606389e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8732082.466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.530809136e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.261180967e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.94345481e-12 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 7411840.829 0 0 0 0 0 0 0 0.8899105952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.465889392e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.174506922e-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 0 0 0 1.021258484e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277370.2819 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222.097025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2921504.754 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.806799496e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.116917881e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 109740.2575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.167209576e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6354556.667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.934763617e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49002.4422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.6791841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.53831999e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.77171968e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65603.37003 0 0 0 0 0 0 23.20128055 0 0 6.237847831e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.177282061e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43519780.9 0 0 0 0 0 0 0 0 0 3.190821407e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.361650324e-10 0 0 0 0 0.000877290835 0 0 0 0 0 0 0 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.261111882e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.350875933e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4167.779915 4.087923728e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004286402243 0 0 6.255392073e-24 0 0 0 0 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.140053052e-09 0 0 0 0 0 0 75.89898067 0 0 1.46571958e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 860.5506138 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.549679645e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5753.792076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 11123059.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.033702863 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0195189887 0 0 0 0 0 0 0 4.532922282e-15 0 0 0 0 0 0 0 0 0 0 0 144269.0178 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.394120536e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 994.5429209 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.399542418e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009399087248 17758.65892 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07016820738 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.661911201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01110133961 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.003941899e-14 0 0 0 0 0 0 0 0 0 0 0 5.802808555e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.319211055 0 869.7759478 0 0 0 0 0 0 0 0 0 0 0.001120267858 0 0 0 0 0 0 0 0 0 0 0 26604.13885 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.588727444e-12 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1.853306658e-15 0 0 0 0.001135544038 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.28540954e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.141461169 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.532201013e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3619019382 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12500.6711 0 0 0 0 0 0 0 0 0 0 0 0 0.00827888055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02813611363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01066199501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2993672169 0 0 0 0 0 16574.82483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.242142011e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.826530828 0 0 0 0 0 0 0 0 0 0 1014881.298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 643.7469346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32487035.11 0 0 0 0 0 9026648.167 0 0 0 0 0 0 0 0 0 0 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.165587541e-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 2.186022738e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.724280149e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09878676098 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00705961204 0 0 0 0 0 0 0 0 0 5205614.165 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.999447573e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 301983.2863 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.027912038 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.010549045e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 17.5321491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.233463889e-12 0 0 0 0 0 5.311452527e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.357274267e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 199655.0741 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.635142741e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.99535679e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.950336144e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102667.7238 0 0 0.0004240440667 0 0 0 0 0 0 0 0 0 3343253.489 0 1331.477175 0 0 0 0 0 0 0 0 0 1.437393241e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3204859.969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.478698364e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 1.590535875e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4795693.254 0 0 0.0009895871506 0 0 0 0 0 0 4.448739282e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3391446.538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3464.322299 0 0 1.050525063e-22 0 0 0 0 0 0 0 0 0 0 0 0 239405.5681 0 0 0 0 0 0 0 0 0 0 6.102094991e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12926967.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.152310651e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6071985.965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.684300377e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.992920579e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 454318.4459 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.188131708e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5538557.259 0 0 8.36959182e-25 0 0 0 5804249.556 0 0 0 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.511475885e-07 0 2.56056584e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1313908295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.084048093e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.029427323e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02168506087 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02806573196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7606049.947 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 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.651292354e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1148486.008 0 0 0 0 0 0 0 0 0 0 0 0 2461508.823 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009694007401 0 0 0 0 0 0 0 0 0 3.018846142e-15 0 0 35482936.63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.356426072e-16 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.024916906e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 6.438644612e-26 0 0 0 0 0 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.604829309e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001155337369 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.105520659e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.263890635e-10 0 0 0 0 0 0 0 0 0.004801636945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.784261481e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02425331929 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.201950815e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33.34031145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.477733637e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0742569387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9764600.074 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.340165087e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.093028584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.598997484e-12 0 0 0 0 0 0 0 0 1.887869895e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8286993.053 0 0 0.005119549753 0.1897008431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95.40352108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71.472379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 535.6113064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.43103179e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.151866718e-23 0 5430.978495 0 0 0 0 0 0 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.866464483e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77036224.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1096.283744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.971306725e-10 0 3.469942638e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005346911233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.732176318e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.879989687e-16 0 0 0 0 0 0 0 1.200794375e-11 0 0 17440307.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.444588533e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8483497639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 16.278455 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.667104952e-25 0 0 0 0 0 0 0 0 0 0 0 0 5.709250315e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008752086343 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.693258227e-06 0 0 0 0 0 0 0 0 0 0 0 0 3519551.883 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00300519141 0 0 0 0 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.652857361e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4231494.578 0 0 0 0 0 0 0.0009192009782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3047581651 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 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.509507981e-15 0 0 0 0 227599.0761 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7425.598657 0 0 0 0 0 0 0 0 0 27030998.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31951327.48 1.131057387e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.544353753e-10 0 0 0 0 0 7.457011351e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07501531945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.134177537e-36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.127234056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600056.2956 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.20032151e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.298843912e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009538991124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8272682.307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21081.85301 0 0 0 0 0 0 0 0 383.6816967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.661905877e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.490006181e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1066489.205 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1239.887045 0 0 0 0 0 0 0 0 0 0 0 0 1.089893916e-12 0 0 0 0 0 0 0 0 4.981023164e-17 0 0 0 0 0 0 0 0 14.34543136 0 0 0 0 0 0 0 0 0 0 0 0 1.240890386e-09 0 0 0 0 370969.2967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.265331697e-09 210.7431724 0 0 7863506.214 0 0 2.46938464e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 889.634289 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02483428378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.404505674e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1973607.952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.95131257e-14 0 4.252654956e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.44125375 0 0 0 0 0 0 0 9.026196034e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71194.50171 0 0 0 0 0 0 0 0 0 0 0 1.727422177e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01252927907 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.770139769e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.427998932 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2921131.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04976617351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.908004756e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.245246063e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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.237219942e-25 4.497923351e-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 3.780979022e-16 0 0 0 0 0 0 0 0 0 0 0 0 8.328699131e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.404666942e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.862276358e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0.02138305867 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.890855462e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002276136528 0 0 0 0 0 0 0 0 0 0 0 0 0 8.397825509e-23 0 0 2.686125034e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10757985.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31216683.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.094784122e-17 2452673.033 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3525966.712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001146424652 0 0 0 0 0 0 0 0 168.3462503 0 0 0 0 0 0 0 0 1.216131181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.749074384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007939694479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8181.310242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1507321113 0 0 0 0.333917825 0 0 0 0 0 2.484195409e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1999.162513 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.974361143e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.563063557e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.775915268e-16 0 0 0 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.766105778e-13 0 0 0 0 0 8.973352114e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 475548.6576 0 0 0 0 0 0 0 0 0 0 0 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.912992147e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.724344524e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.191994174e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001368947047 0 0 0 0 5.576702205e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 3392.199384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.11356305e-11 0 0 0 0 0.0001741777914 0 0 0 0 0 0 0 0 0 4.032051704e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.116832031e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.069083305e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.63346426e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.227988439e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.838632423e-08 0 0 34.76790184 0 0 0 0 0 0 0 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.962901323e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.541587842e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16376.49368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.465683269 0 0 +0 0 0 0 0 3.130741893e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3693488.047 0 0 0 0.001427427401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.821062772e-05 7.714441386e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.982890689e-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 3.407281271 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.495007381e-08 0 0 0 0 5.66425209e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.502968559e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.423152774e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.233409084e-06 50.33565838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2168398706 0 0 0 0 0 0 0 0 0 0 0 0 4.058219015e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18076019.16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004062350561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.731828887e-13 0 0 0 0 0 0 0 0 0 0 0 7146655.207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20.03980334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.767669476e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006688396689 0 3.645923887e-19 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8331.709748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.710912535e-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 5.36424848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.099140137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.067379109e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005510545868 0 0 0 0 19122.47277 0 0 0 201.7386175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2917418.349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.246817318e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.552177124e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.650214615e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7284756244 0 0 0 0 0 0 274.1241674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.926228895e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.076903863e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.743685146e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.518054869e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16963013.97 0 0 0 0 0 0 0 30394.84221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1785407.086 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 15.43912945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.341093084e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.642676592e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.342766149e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.062800174e-26 0 0 0 0 0 0 0 0 9.122363016e-06 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.750489047e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3714.367448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.707115442e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.37271989e-09 0 0 0 0 0 0 0 0 0 0 30935987.85 1.684901966e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.005426206e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.814368614e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.1190804068 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 221.8104218 0 0 0 10814.36665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.040181149e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.896122745e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 292.9549659 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.223428255e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005235542463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.439887262e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.232547662e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.510150271e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.818417896e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.467484068e-09 0 0 0 0 0 0 5.513152318e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.817818859e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.072859306e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.95513522e-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 1.70922054e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4189504.025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95906.59493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04719670603 0 0 0 0 0 0 0 0 0 0 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.52994701e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.724985418 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 321.7848428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51.67116374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.907760318e-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 2990614.628 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76669.94757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.065043336e-13 342.8312655 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 233.9963654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009409223016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2163307.147 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208.6624228 0 6.39918679e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.062163654e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007716494671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16448737.22 0 0 0 0 0 0 0 4.160651859e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.62912386e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19.6902717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.747630875e-09 0 0 0 0 186.7852639 0 0 0 0 0 0 0 0 0 0 0 0 6.565638154e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.031241533e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.102617246e-13 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 463002.3303 0 0 1.165142671e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.55640161e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 1.068155179e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.564917777e-08 0 0 0 0 0 0 0 0 0 1.732125848e-11 0 0 0 0 0 0 0 0 0 0 2666088.567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.151494508e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01530373086 0 0 0 0 0 0 0 0 0 0 5.499803804e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.093189396e-39 0 0 0 0 0 0 1.756826027e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.608245339e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08166168486 0 0 0 0 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.000449428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.359261024e-24 0 0 0 0 0 0 0 0 0 6137518.605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.130865134e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.616368001e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.06995563e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.440876041e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.701083822e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5730161992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.539076789 0 0 0 0 3969256.121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.845590074e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.925368707e-21 0 0 0 11.49141692 0 0 13137.09775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.959181358e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.334301179e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 302.1732971 0 0 0 0 8.317156005e-06 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.136179807e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.284727966 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1604697282 0 0 0 0 0 0 0 0 0 9.603897733e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.43330058 2.799837093e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 125.546596 0 0 0 129188.7779 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003393525896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14533.97785 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.999780676e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.996487106 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002766033523 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009301676976 0 0 0 0 0 0 0 0 0 0 6.443328456e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 14.26712796 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.634214375e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.740806328e-06 0.2368634882 0 0 0 0 0 0 0 0 1.307164122e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004367367392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.687006885 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.021809867e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.243902814e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11630408.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 898.5402194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0502634567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.082060151e-27 0 0 0 0.1990854832 0 0 0 0 0 0 0 0 0 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.178590244e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.597403017e-25 0 0 0 0 3.970706608e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.210148564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25155246.48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.329862332e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 217.2728055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8050.998313 0 0 0 0 0 0 0 21.60227072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1506737501 0 0 0 0 0 0 0 0 0 0 0.01013980345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71289.71901 0 0 0 0 0 0 0 0 0 0 0 2.398540356e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16435.53202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10776.68148 0 0 0 0 0 0 0 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.577213265e-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 8.051492224e-26 0 0 0 0 0 0 1.537310447e-06 0 0 6.466467322e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 391.6408976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.432316075e-11 0 0 0 0 0 0 0 0 2.221828665e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.660012755 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.684777273e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 739.1636755 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3644385.68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 728302.6964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008781304923 0 0 0 0 0 2.027528579e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.462050212e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5063231708 0 0 0 0 3.714641541e-05 0 0 0 0 8.209504838e-17 0 0 0 0 1.124707035e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13685360.41 0 0 0 0 0 0 0 0 0 0 0 0 5118.676382 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.603098733e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 911.229451 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.88107408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007130652968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79.15885133 0 0 0 0 0 0 0 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.076302446e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1479.14062 0 0 0 0 0 2.837915113e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.33160355e-24 0 0 0 0 0 0 0 0 0 0 0 1650919.667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.377933875e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008782190115 0 0 0 0.00339987086 0 0 0 0 0 0 0 0 0 0 0 0 0 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.445775026e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28658.8521 0 0 0 0 0 0 0 3309.509185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12099.95004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.92772192e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.608226713e-07 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 408935.3491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.224072782e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.034012926e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08322930524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006260662767 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.589753303 0 0 0 0 0 0 0 0 0 3703.219177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.991748751e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.693568168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.070052843e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2126603.029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.805464422e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.558834394e-07 0 0 5.647059953e-27 0 0 0 0 0 1.07733193e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02242474124 0 0 0 0 0 0 0 0 0 0 0 0.1013127067 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.824618552e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15089.52056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.496925823e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.854330598e-12 0 0 0 0 0 0 0 0 0 193.9727543 0 0 0 0 0 0 0 7.110068252e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.032917482e-09 0 0 0 0 0 0 0 0 0 0 2227976.697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88.27128606 0.007724905084 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.775006536e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.737596415e-11 0 0 0 0 0 0 0 0 0 0 0 7.05777141e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.813668291e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 545.7443584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.969725709e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.250189373e-06 0 0 0 0 93356.56278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.257018119e-08 0 0 0 0 0 0 0 0 0 0 1.550284302e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.185616803e-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 1.37335415e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73449.99229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4457194.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.675934944e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5754889.399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.112754476e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05284943519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1502355073 0 0 0 0 0 16.83166395 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.890591742e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106412.1139 0 0 5.260160707e-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 715691.7782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005873982949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13.31417636 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.065097915e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.309345615e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.535848745e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26407.52567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04458785426 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.875001954e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.091510864e-06 0 0 0 0 0 0 0 0 0 0 0 5.574694957e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 189544.7272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 348742.4946 1.60664865e-37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14744.6755 0 0 0 0 0 0 0 0 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.972273422e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129924.9573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12935.88414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.045494142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40951993.99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4966.689504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 121254.5383 0 0 1.654067352e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01168396 0 0 0 0 0 7.08886152e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.981179541e-23 0 3.304602674e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2019291821 0 0 0 0 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.021340369e-08 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.931469685e-05 0 0 0 0 0 0 0 0 0 0 0 4.221721094e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.4499566e-18 0 0 0 0 0 0 0 0 0 0 0 0 636854.0812 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00275138108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29010.36707 0 0 0 0 0 0 0 0 0 0 1.076280931e-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 3.396665039e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.632896366e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 437635.1933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11.44265177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2221.783756 0 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.196258688e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.629124729e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002789550508 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77051247.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.009993057e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.41641839e-26 0 0 0 0 0 0 0 0 0 0 3.037463345e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52564496.76 0 0 0 0 0 0 0 4.120243809e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09573346189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.534769116e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1697232.903 0 0 0 0 0 1.302422907e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.289666426e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.73057716e-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.000158135244 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.020432668e-26 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75.90271662 0 0 0 0 2034.783072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.654787132e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.288106128e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.269246815e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.603253732e-09 0 0 0 0 0.001134811298 0 6.053614663e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.031536979e-25 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.553730022e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.42511251e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7103.963287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.85422385e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.502971534e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009140621534 0 0 0 0 0 0 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.679444163e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 2.868908625e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.519409143e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.2973575e-18 0 0 0 0 0 0 0 0 7.269594519e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.716880385e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.418929019 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40487.79362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.221227329e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3161525948 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006603851544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [sample_PSD/image.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.033596261e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.443219979e-39 0 0 0 0 0 0 0 0 0 0 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.874735149e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224.5756648 0 0 0 0 0 0 0 0 0 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.641390815e-11 352291.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 5.86737778e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.091806505e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.560066577e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.253453508e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.046788865e-07 0 0 0 2.607972247e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.243285694e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.253874107e-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 2.179085445e-16 0 0 0 1.422033672e-38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.880438652e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 343860.0422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.966627778e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.503581029e-24 0 0 0 0 0 0 0.0005440709103 0 0 0 0 0 0 0 0 0 0 3.378189639e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 974807.3053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1401.456655 0 0 0 0.017752909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.031841987e-15 0 0 0 0 0 0 0 0 0 0 0 24.72414825 0 0 0 0 0 0 0 0 0 0 0 0.2521023939 0 0 0 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.714905193e-12 2.783425521e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01034005732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.309466275e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.509305761e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.866116878e-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.812457519e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.209318642e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.32560706 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.586795496e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 470.5550167 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.410771205e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1422616.243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.54192059e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001159766555 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.689981651e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.897644147e-05 0 1.989773574e-17 9.993415454e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 7.144971851e-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 4.084204622e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.35781375e-24 0 0 0 0 0 0 0 0 0 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.499605681e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08211771737 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1226361301 0 0 0 0 0 0 0 0 0 0 0 3.898671365e-28 0 0 0 0 0 0 0 0 0 0 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.492795707e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.536881587e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.982269668e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 179.7592053 0 0 0 0 0 0 0 0 0 0 2.000305568e-07 0 0 0 0 0 0.006476279014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.976159551e-15 0 0 2340174.502 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.577205252e-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 1.363662169e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.298491582e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.072785151e-15 0 0 0 0 0 0 0 0 0 1.22122532e-10 0 8.678635043e-05 0 0 0 0 0 5.570152352e-15 0 0 0 0 0 0 0 0 0 0 0 16362.30284 0 4.55038071e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.923097756e-13 0.002553708536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.940765344e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.78033058e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.499064663 0 0 0 0 1.34671166e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.823881421e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 252.7403631 0 0 0 19297342.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21157782.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.60465299e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.950767831e-11 0 0 0.05970774111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.882802494e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.758120525e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.280924788e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.159579962e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.185625598e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.982631714e-24 0 0 0 0 0 0 0 0 0 2.593315311e-27 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 1999990.962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6891802.625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.440310608e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1264634.044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.174731481e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.470560075e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009506578231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.496502121e-29 0 0 0 0 0 0 0 0 0 1.074210071e-13 0 0 0 0 0 0 0 0 0 0.0005566832803 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.714431432e-15 0 0 0 0 0 0 0 1.770434283e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1238.892582 0 0 0 0 0 0 0 0 0 0 3.000362873e-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 5054561.139 0 0 0 0 3.655533906e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8455259.928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00469660949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.807225437e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 605.6323146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22779.64321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.743878085e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.306886959 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.013423306e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4535148.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.63197789e-25 0 0 0 0 0 0 0 0 0 0 0 6.026177822e-05 0 0 0 5111.412763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.835699036e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15573.09953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.882417884e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.548278769e-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 5.183448482e-21 1.321053118e-07 0 0 0.03457472117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.361590733e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.98790379e-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 4.119541085e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.001821648e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.813159813e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02914629488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.244348076e-07 0 0 0 0 0 2.722934073e-14 0 0 0 0 0 0 0 0 0 0 7432130.14 0 0 0 2.108339279e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.389633235e-21 2.845584519e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 451.4107616 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 10298026.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.420605803e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.351398319 0 0 0 0 0 0 0 0 0 1.074853176e-08 0 0 0 1.245821701e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.72802756e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9108.879524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100299.9091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18.77818836 0 0 0 0 0 0 0 0 0 0.1349916374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.349054434 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.708089258e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20409854.11 1.64529729e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.225088509e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.011351163 0 0 0 5.028277893e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.240379207e-15 0 0 0 0 0 0 0 0 0 2835768.502 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.417018471e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1635224.993 0 0 0 0 0 0 0 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.469605043e-14 0 0 0 0 0.02286982433 1.589662148e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.575290942e-18 0 0 0 0 0 0 0 0 0 0 0 5.20324273e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.783891039e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.361144475e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69070.47195 0 0 0 0 0 0 0 0 0 0 2.366004212e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.545072005e-34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2128168.159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 585221.9429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3217449.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.812317069e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.622026383e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.645970824e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.774068469e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.812336766e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02026851344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.596603157e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.190400585 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.220725622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.973343811e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.802368057e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03172711083 0 0 0 0 0 0 0 0 0 0 0 1.082979253e-23 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.875911099e-21 0 0 0 0 0 0 0 0 0 0 4.337035602e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8756.654436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.740606893e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2546411.636 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.120099401e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.858032505e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1.52514956e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1662.548516 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.966476979e-28 0 0 0 0 2.193661558e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.095555971e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002213889467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06047107679 0 0 4.981651255e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 388.8085766 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.894192432e-19 0 0 0 8.532328725e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.672688751e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006802674114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.448993576e-05 0 0 0 0 0 0 0 0 0 0 2.955845883e-22 0 0 0 0 0 0 0 0 0 0 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.967703617e-09 0 0 0 0 0 0 0 0 271754.4672 0 0 0 0 0 0 5484524.732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.157030428e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1344236.343 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.152753584e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.012953067e-21 0 0 0 0 0 0 0 0 1.359222115e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82.86447856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.18913515e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59.76403301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112469.8056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2472.217518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15.52508351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.017021864e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.900717899e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2767849.096 0 0 0 3.821018967e-13 0 0 0 0 0 0 0 0 0 2.182217218e-07 0 73142.3918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.203340406e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2317.406428 0 0 0 0 0 0 0 0 15590124.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.872177982e-23 0 0 0 0 0 0 0 0 0 0 0 3.075035287e-10 0 0 0 0 0 0 23.44531563 0 0 0 0 0 1.171517174e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.175717483 0 0 0 0 0 0 0 0 0 0 0 24.24942195 3.33952983e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.401929491e-14 0 0 0 0 0 0 0 0 0 0 0 6.004534691e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.593075157e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001426001717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11853864.68 0 0 0 0 0 0 0 0 0 0.07060737546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1546143.886 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.399868789e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001326996597 0 0 0 0 0 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.316677638e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 443.5303428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19918475.88 0 0 27653.82768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6277334.428 0 0 2.052862537e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.990205373e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.626705571 0 0 0 0 0 0 0 0 0 0 0 0 0.009910983818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003714931561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.381838883e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36507509.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.173892749e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2136176.992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.903745855e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.166087327e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 814526.401 0 0 0 0 0 0 0 0 0 0 0 0 4.194640555e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1695727609 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38857.13338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27865.34633 0 0 0 0 281266.3745 0 0 0 0 0 0 0 0 0 0 9.327642737e-10 0 0 23272335.51 5.777723094e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.725691728e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.059511722e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009344113392 0 0 0 0 0 0 0 0 0 0 0 0.001629754233 0 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.509377951e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7382530.999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.258867879e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01695333745 0 0 0 0 1.672733274e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 130.2564219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.999038991e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37076.7926 0 0 0 0 0 0 0 0 0 0 0 0 2.530526316e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.245056623e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.429795919e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.044671189e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.455459319e-22 0 0 0 0 0 0 0 0 0 0 0 1.858700344e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.491617658e-16 0 0 0 0 0 0 0 0 0 2.236241252e-12 0 0 0 0 0 0 0 0.0008812275712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 4218513.752 0 0 0 0 0 0 0 0 0 0 1009391.459 0 0 0 0 0 0 2.935191181e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.140852109e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.930572933e-20 1.09384444e-15 0 0 0 0 0 2.612843969e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7712720.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.251919852e-18 0 0 0 0 0 0 0 0 0 2.979738097e-20 0 0 5.057831978e-09 0 0 0 0 0 0 0 0 0 0 0 0 32213.31297 8.082105086e-12 0 0 0 101.2214807 0 0 0 0 0 0 0 1.194870463e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.587522172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09925064873 0 0 0 0 6.30124106e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144.7457701 350257.89 0 0 0 0 0 0.0002941827153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008750639569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002276873801 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.288363305e-09 0 0 0 0 0 0 0 0 0 0 0 0 8.197667961e-22 0 0 0 0 0 0 0 0 0 0 0 0 3.477014274e-11 0 0 0 0 0 0 0 0 0 0 9.355100752e-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 2.911439309e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008723498142 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 148.0791909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17217607.57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 413781.7222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.45785994e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.705598152e-21 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 281.6006039 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.344242458e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002157494904 0 1.02530716e-21 0 0 0 0 0 0 5.341574844e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27.08867185 0 0 2.75669858e-05 0 0 0 0 0 425189.3171 0 0 0 4.648678169e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 1.090158297e-05 0 0 0 0 0 32423.64615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.406087337e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 26415812.27 0 0 0 0 0 0 0.003590764984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0180049124 0 0 0 0 0 0 75.46140916 0 0 9.903724396e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7165.059621 0 0 0 0 0 0 0 0 0 0 0 0 2.323407963e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.414171381e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6829.114881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.727480453e-14 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 135.499437 0 0 0 0 0 0 0 0 0 0 2.446901945 0 0 0 0 0 0 0 0 0 0 0 0 3.102427368e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18386.41815 0 0 0 0 0 0 0 0 0 0 0 0 7.401129508e-11 0 0 0 0 0 0 1.174234309e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5916.866858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01792538621 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6047862.336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.421768914 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.510181924e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18673801.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3237655.378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.476332326e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.288180611 0 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.080103062e-15 0 0 0 0 0 0 0 0 0 1.66722247e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.647673005e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.545063262e-06 0 0 0 0 0 0 0 0 0 8773.709559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 36.39574445 0 0 0 0 0 0 0 0 7.177606673e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.551284553e-13 0 0 0 0 0 0 0 0 4.86069283e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.093952421e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.441254265e-22 0 0 0 0 0 2.60965451 8334.465039 0 0 0 0 0 0 0 1.338076105e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.521918583e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 27487609.34 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.901597305e-07 0 0 0 0 0 0 0.4115832831 0 0 0 0 0 0 2.0615857e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2514.430903 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.509210079e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8425774.384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.410016533e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.202584288e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.547265695e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.390248766e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.789746746e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.394104282e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.595049043e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7332359.229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 119806.37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 4.418462571e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.28027953e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.227160534e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.467568278e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 7.534804962e-16 0 0 0 0 0 0 0 0 0 0 0 0 3.553004161e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.219213045e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 378941.2148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58.46681998 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0721971375 6190368.874 0 0 0 0 1.009590477e-24 0 0 0 4.102777948 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.848019728e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.443048305e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.181213708e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1815678733 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.355636054e-08 0 0 0 0 0 0 0 0 0.0004131737961 55.20881379 0 0 0 0 0 0 0 9.0821264e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.714514822e-07 0 0 0 0 0 0 0 0 0 0 0 3.098487304e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 606.6220049 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03748531774 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.067146619e-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 45.56728348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008463441378 0 0 0 0 0 0 0 6.267879175e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.362013032e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01414516781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.184267246e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.60124877e-09 441.1077127 0 0 0 0 0 0 0 0 0 150477.0054 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.566209427e-06 0 0 0 0 2.846659738e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5453545.776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86.53289613 0 0 1157190.697 0 0 0 0 0 0.1998793011 0 0 0 0 0 6.224295664e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003529099676 2.897378332e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.373355463e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.923209742e-10 0 0 0 0 0 0 0 0 0 21.86034601 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.151122975e-06 0 0 0 0 0 0 0 1.490492387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.19025377e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.920344132e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.108672927e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.961529334e-21 0 0 0 0 0 0 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.910500205e-12 0 5.111848266e-39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25742234.74 0 0 0 0 0 0 0 0 4545.228769 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9947352.431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.57269069e-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.325627654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.732267122e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.809975508e-16 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009697653307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003686987916 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.030692323e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 8.700266885e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 639032.5121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.652880908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.491914581e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.255313643e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 9.623525393e-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 855345.251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.227572362e-13 0 0 0 0 0 0 0 0 0 1158684.954 0 0 0 0 0 0 0 0 0 0 0 0 0 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.818764233e-05 0 0 0 0 0 0 0 0 0 4.524171621e-07 0 0 0 0 0 0 0 0 0 0 1.748285691e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10729.53026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 760595.4643 0 0 7.086206904e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1100.394043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7520430.183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 325.3154901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.01967478e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.499198377e-06 0 0 0 0 0 0 0 0 0 0 6.988036639e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8143311445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.688628207e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 4.618891407e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6405.938894 0 0 0 0 0 0 0 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.396689544e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.318520409e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2807.274403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.483345951e-19 0 0 0 4.56891672e-16 0 0 6.030763472e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.391757419e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.700805532e-18 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.810223605e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.02113877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2777566.427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.258576128e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003228893521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.850203978e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.697637713e-07 0 0 0 0 0 0 0 0.001215972118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.749976586e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.196202479e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.303304243e-13 0 0 0 0 0 0 0 0 0 0 0 2.991465714e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70623.30668 0 0 998.8084215 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.233387814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5500364.161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.704391638e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 408.2672526 0 0 0 7.287071966e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16306.2564 0 0 9054.431057 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15.04564579 0 0 0 0 0 0 0 0 0 0 0 2782884.522 2.296026583e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16580061.39 0 0 0 0 0 0 0 0 0 0 0 0.0004670844004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.855658383e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.479295861e-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 20.37291926 0 0 0 0 0 0 0 0.8908187782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.225591384e-09 675580.3573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001695478072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1041457.775 3.914358287e-08 1.108017939e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.552753617e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.735906239e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.595035675e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.328848569e-15 0 0 0 0 0 0 0 0 0 0 0 0 0.8103764877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.678692424e-07 0 0 0 0 0 0 0 0 2172258.495 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.539620861e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.353451171e-08 0 0 0 0 0 3.249801275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.47574479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002101531146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.782245709e-12 0 0 0 0 0 0 2.270606586 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.386040459e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.580027878e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.594922476e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.431842321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.889026141e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118157.2027 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001663878874 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.12888855 0 0 0 6.396692294e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.145169778e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.086732668e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1.324682438e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.326564152e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.338405379e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 2.018435685e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.829545686e-11 0 0 0 0 0 0 0 0 0 2.130439092e-39 0 0 0 0 0 0 0 0 0 1.031945732e-15 0 0 0 0.0005905235614 0 0 0 0 0 0 0 296.6396695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.906220543e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22674131.45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1577.861538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 918.030292 0 0 0 0 0 0 0 1.190859587e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1917493.998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.478317031e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5903221.001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.655000396e-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 19.73118425 0 0 0 0 0 0 0 0 0 0 3.452325203e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9086388259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3231.87387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.621075712e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.332724625e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.890315474e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.977511032e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.273607294e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.761566195e-17 0 0 0 0 0 0.001332598229 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.419905732e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005878732504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.565129963e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.348354071e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4430114.12 0 0 0 0 11074958.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.811845698e-12 0 0 0 0 0 0 85196.39576 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14413675.59 0 0 0 0 0 0 0 0 0 0 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.073011697e-24 0 0 0 0 0 0 0 0 0 0 0 6.771749883e-10 0 18873797.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244.0935023 0 0 0 0 0 0 0 0 603.0484492 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14983991.78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002651202105 0 0 0 +0 4.313767451e-07 0 0 0 0 0 0 0 0 0 0 5.937693043e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00995248537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.532256558e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002388796944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56912.02958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 938.7427671 0 0 0 0 0 0 0 0 0 0 0 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.219456889e-06 0 0 0 0 0 0 0 0 0 0 0 5.259539081e-11 0 0 0 0 1.622701764e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.673641783e-06 0 0 0 0 0 0 0 0 0 1.333113613e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008291547709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.822544692e-16 0 0 0 0 0 0 0 0 4.400982002e-10 0 2.5690988e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.046954566e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003892423138 0 0 0 0 0 0 0 0 0 0 0 0 8.029657723e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13.08237519 0 0 0 0 0 0 0 0 0 0 0 0 0 8.632363529e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10135.60905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.258213432e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.556290814e-21 0 0 0 0 0 0 0 0 0 49.70830429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.724663968e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42.77916586 0 143049.1579 0 0 0 1.050490928e-25 0 0 9.747933202e-10 0 0 1.093124598e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.123819215e-05 0 0 0 3.163623947 0 0 0 0 0 0 0 0 7.877242046e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65097.14592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.624848315e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.659802642e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.436759721e-23 0 0 0 0.000267234071 0 0 0 0 0 0 0 0 0 0 0 0 0 1762.004346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.645245122e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.738356599e-13 0 0 0 0 0 0 0 0 0 0 0 0 4.409548442e-13 0 0 0 0 0 0 0 0 52391.04701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39892.59707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3914963.246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.694304185e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 656404.3066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1182.924184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14420233.12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8155243.802 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.281858025e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.002139987924 0 0 0 0 0 0 0 7.254322007e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.609681286e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12.09434566 0 0 0 0 0 37.44773796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.631166601e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09421582041 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7293029.115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.278178612e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40153.50717 0 0 0 0 0 0 0 4363458.715 0 0 0 0 0 0 0.0001325615061 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4704285999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.662725172e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.693329534e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.422823827 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.377716239e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04311821698 5243203.161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7116.586655 0 0 0 0 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.442092116e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.380082159e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3465625.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 297016.3673 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.079533163e-13 0 1.047194995e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15.62519775 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.25989054e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000160149967 0 0 0 0 6.092202551e-10 0 0 0 0 127510.273 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.434214294e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12891.67713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1906.71377 0 0 0 0 0 0 0 1.78084709e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.355681089e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 253.4702737 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.760533179e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02478895422 0 0 0 3.211500852e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.131077411e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.000880995e-09 0 0 0 0 0 0 0 0 0 0 486295.0967 0 0 0 0 0 0 0 0 0 0 0 0 3.401004032e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86791.50586 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.521493582e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.083103505e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.436627255e-07 0 2.384286924e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.18376634e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.774170624 0 0 0 0 0 0 28.01638338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 416.118761 0 0 0 0 2.15090008e-20 0 0 430398.1958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0.03054352077 0 0 0 0 0 7.356258771e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 806587.3632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.397102253e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.435262335e-07 0 0 4485684.306 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.53322651e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2385668.607 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.758556214e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3963299775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.689243301e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14734.38387 0.000404367743 0 0 0 0 0 1.01288942e-07 0 0 0 6.358429984e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27407932.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.605162501e-09 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8780682.99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.372105716e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00514930499 0 0 0 0 0 0 0 0 1.168813189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.012082604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001055216273 0 0 9932598.352 0 1.302239608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8288.533949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03702645663 0 0 0 0 0 0 0 0 0 0 14.48254425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.569684568e-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 2.465968531e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.847239404e-12 0 0 0 0 0 0 0 0 5.425327197e-14 0 0 0 0 0 0 0 0 0 89131.47513 3.14617021 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 937.4447078 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 704.2822267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14187489.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 140119.3277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.689061988e-26 0 0 0 0 0 0 0 2.121095807e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5281662.194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.408929991e-06 3182934.733 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.845305117e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.572084171e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003411265153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.590737006e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1334885.518 0 0 0 0 2.557894762e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17571.29687 2.981201711e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 274107.314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.075826683e-13 0 0 0 0 0 0 0 0 0 0 0 2.885222944e-10 0 0 0 0 0 0 0 0 0 1.918854135e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.293340972e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.363535115e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.402528353e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8127.239222 0 0 0 0 0 0 7.893360305e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.09503235e-19 0 0 0 0 0 0 0 6.375807972e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43602021 0 0 0 0 0 0 0 1.16310556e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33870171.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41797.93492 0 0 9.79936818e-13 0 0 0 0 59.07195619 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.706046774 0 9.908093463e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.962787279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.011791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42459982.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.16257938e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1192243.896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106.5165594 0 0 0 0 0 44.50493709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01371060679 0 0 0 0 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.115659324e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.753976748e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.192966398e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4877956.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008419929524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5646.863777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.301789037e-07 0 0 0 0 0 0 0 0 0.002608730559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.195107865e-08 0 0 0 0 0 0 0 0 0 0 0 0 2.940988347e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.668984753e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.111308264e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184.4376065 0 0 0 0 0 0 0 0 0 0 8.005261711e-22 0 0 0 0 0 0 9.258367773e-05 0 1.544687791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20.48074898 0 0 0 0 0 0 1.483656882e-06 0 0 0 2.514494539e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.541962447e-10 0 9238856.928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1297424.713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.277945186e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86.90637969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 931864.0324 0 0 0 0 0 0 0 0 0 0 0 0 0 1.040084768e-24 0 0 0 0 1.34009443e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03609059658 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 280.6582475 0 0 0 0 0 1.937153077e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.062203334e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37422.93694 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03506372763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001016350269 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.395349527e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20.5899219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.429409356e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.857271518e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.121106463e-05 0 0 0 0 0 0 0 7.230348186e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12.00925047 6.578048373e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181.3427968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003870509544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.30815916e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.107780451e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.001033495e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.909476572e-12 0 0 0 0 0 0 0 0 0 0 0 0 0.00138649901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.152789376e-17 0 0 0 0 0.7277146057 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001126900202 0 0 0 0 0 0 517071.5931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.340680619 0 0 0 0 0 0 0 0 0 0 0 0 0 1.329783757e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008829412698 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 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.158924151e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008879309458 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.378621424e-06 0 0 0 0 0 0 0 0 0 0 0 0 2.100483634e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.589900604e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001508324797 0 19128884.62 0 0 0 0 0 0 0 0 0 0 0 0 1.932249821e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225281.6546 0 0 0 0 0 0 0 0 0 0.0001579535691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.866199951e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.508368526e-19 0 0 0 0 3.563669762e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.332960001e-11 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 3.684173312e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 134.7784561 0 0 0 0 0 0 0 0 0 0 0 0 1.662070078e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 519.7023698 0 0 0 0 0 0 0 0 0 0 0 0 7.662002549e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.183780328e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22157444.31 0 0 0 0 0.01069340953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.201408243e-12 0 0 0 0 0 0 0 0 0 0 0 25.80196252 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.536385623e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2496548.967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.427884342e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 304.3232787 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.172692411e-08 0 1.038679179e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.238631015e-07 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1227.476295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.113366094 0 0 0 0 3.685408556e-07 0 0 0 0 0 0 0 2659.245024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.200452377e-14 650536.908 0 0 0 2.967326812 0 0 0 0 1913473.677 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.081981965e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001613145423 0 0 0 0 0 0 0 0 0 0 0 5.717865621e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.0001075611354 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.626264111 0 0 0 0 2191330.463 2.564954694e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 262592.2992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.181484028 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3329851.839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.455583779e-18 0 0 0 0 0 0 5.61545594e-14 0 0 0 0 0 0 0 0 3.135731821e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.853663671e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.90900492e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 21450487.59 0 0 0 0 0 0 0 0 0 0 0 0 0 6.709258526e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6753138.849 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2009.659645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005977096156 0 0 0 0 0 0 0 0 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.038930181e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.684326059e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.43930023e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.145226575e-07 1.763574446e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.907593058e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.692017092e-14 0 0 0 0 0 0 0 0 0 0 0 0 0.008296996935 0 0 0 0 0 0.04720776598 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00239024446 112740.4793 0 0 0 0 0 0 0 0 0 0 7.35203383e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27780735.35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61.92209402 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.436248369e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.012188241e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.519290205e-19 0 0 0 0 0 0 1.148358796e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.114180553e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.909458776e-06 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 999338.2039 0 0 0 0 0 1.892758753e-11 0 0 0 0 0 0 0 0 0 6.425866827e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.561661289e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.370274282e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 344043.713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.42683471e-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 6.039940154e-23 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003445925982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01816684108 0 0 0 0 0.002870338734 0 0 0 0 0 2.111909609e-15 0 0 0 4.949294513e-16 0 0 0 1.744211236e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004554540244 0 0 0 0 1.809718191e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.021238203e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.784641432e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.101988032e-06 0 0 0 0 0.005215046605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.976682073e-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.2922569505 0 0 7.666905257e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.309091182e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004778701748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007952539402 0 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.806314096e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.509550372e-05 0 0 0 0 0 6.295950944e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.840274049e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.010246999e-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 7.33217696e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69859.44589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1948338.472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.592849925e-20 0 0 0 0 0 0 0 0 0 0 354878.6781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001103419756 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 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.714273879e-11 0 0 0 0 0 0 0 0 0 0 1.092167724e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.658487253e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.288843334e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.035457984e-20 0 0 0 0 0 0 0 0 3.966009921e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.084566713e-26 0 1.120338178e-05 0 0 0 0 0 0 0 0 0 0 0 0 29717.89885 0 0 0 0 0 0 0 0 0 0 0 0 0 7.073400882e-15 2.88236666e-16 0 0 0 0 0 0 0 0 0 14.44270487 0 0 0 0 0 6096.709443 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.695101902e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.035264794e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1360.887905 0 0 0 0 0 0 0 0 0 0 0 0 0 440721.0889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.68560403e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.9337173e-12 0 0 0 0 0 0 3.430898298e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.789024224e-10 0 0 0 0 0 0 0 0 276041.5928 0 0 0 4.124983137e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70.43229283 0 0 0 0 0 0 4583140.958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2235436293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +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.323397446e-06 0 0 0 0 0 0 0 566.0163492 0 0 0 0 0 0 0 0 0 0 2.452606086e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 281561.4193 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02862103809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.055420062e-30 0 0 0 0 6.153596814e-09 0 0 0 0 0 0 0 9010447.905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25361.01423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.149304728e-11 0 0 0 0 0 0 0 7.588309566e-16 0 0 0 0 0 0 0 0 0 0 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.892333766e-14 0 0 0.003805555635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.631792748e-06 0 0 0 0 0 0 0 0 0 0 0 3.039256135e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1273940.537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.442598016e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13.44779444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.066483823e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 1.348439379 0 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.243176984e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 968576.885 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00175020563 7.271023417e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.961520726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.187081045e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.91098538e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2369444.046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.224508771 0 0 0 0 0 8.257888375e-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 327086.4762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06380170704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.508758248e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71265.41822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1334792.221 0 0 0 0 0 0 0 0 0 0 0 0 3.58913159e-22 0 0 0 0 0 0 19291014.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98.4259699 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04804515645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.914770882e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001459167428 0 0 5636.604727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.482395073 0 0 0 0 0 0 0 1.48258433e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1189462682 0 0 0 0.0002776073761 0.00120273147 0 0 0 0 0 0 13.48895473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 423.2637326 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.680873585e-09 0 0 0 0 0 0 0 9.750683767 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 737795.7053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.57846993 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.478445254 0 0 0 0 0 0 0 0 0 0 0.08736894111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.556125444e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.459108095e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.390879556e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.635026658e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1520415166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005171336421 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.851331899e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.587699845e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.748803213e-12 0 0 0 0 0 0 0 0 0 0 6.214923432e-09 0 0 0 0 0 0 0 0.0008595195073 1.407590969e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 9.316318509 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 286180.1789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.422400025e-15 0 0 0 0 0 0 0 0 0 0 17874582.25 2.123381992e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.907569466e-09 0 0 0 0 1.678482222e-10 0 0 1.996593708e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 658.1858241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2384438.768 0 5.473011921e-19 0 0 0 0 0 0 0.0006626658854 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51869.17161 0 0 0 0 0 0 0 0 0 0 2.050185993e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.316496978e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.192962937e-20 0 0 0 6.738238776e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.139289202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.12169409e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.569544188e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 272.4389828 0 0 0 0 0 0 0 180.8842342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004787236372 0.04694861291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1350723.665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36646128e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3470761.733 0 16.49083042 0 0 0 0 0 0 0 0 5.39516903e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.780925904e-25 0 0 0.02897970301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 692701.9215 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.302046466e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 4.415361173e-14 0 0 0 0 0 0 0 0 0 0 4.547298796e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.532991804e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.620625152e-07 0 0 5.589800654e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2007382.837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01933888587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1395924.723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22953199.01 0 0 0 0 0 1.053076738e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.698361847e-20 0 0 0 0 25103.75439 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.34481113e-08 0 0 0 0 0 0 0 0 0 7.397917637e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 1.057505584e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004913272699 6.478912608e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.247156042e-10 0 0 0 0 0 0 0 0 0 1.624559026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110937.5046 0 0 0 0 0 0 0 0 6.938298858e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.062931871e-09 0 94970.03786 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06078503608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.205825348e-11 3.216424482e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0963236506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22501140.53 0 0 0 0 0 0 0 0 0 0 0 4324.93288 0 0 0 0 0 0 0 0 0 0 6885107.795 0 0 0 +0 0 0 5.572208653e-07 6.292322586e-10 0 0 0.0001898542419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003437161638 0 0 0 0 0 0 0 0 0 0 0 0 0 1964.062308 8.200958462e-24 0 0 0 0 0 1.12421226e-05 0 0 0 0 0 0 0 0 0 0 0 0 1.318088687e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001181676396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.537021277e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 881155.5444 0 0 0 0 0 0 0 0 0 0 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.349140539e-07 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27703054.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.958295299e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99.07170607 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001379382045 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23687.48402 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.165816869e-14 0 0 0 0 1.819535254e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.577782117e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 34547.64433 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.115747999e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.666562108e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02086473118 0 0 0 0 0 1.024338677e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1.913171625e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59171.99445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16331141.04 0 0 0 0 1.621210346e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.533896241e-32 0 0 0 0 0 0 15.99946671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.307166996e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5677665181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001439168363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.559428336e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2132007.706 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.316770713e-13 0 0 1.334521269e-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 5.40833672e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.50060049e-13 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8223.805498 0 0 0 0 0 1.021429457 0 0 8.149809135e-13 0 0 0 0 0.03373927538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.086526663e-10 0 0 0 0 0 0 0 0 1.178367505e-12 0 0 0 0 0 0 0 0 0 5.05382062 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77.24673865 0 0 0 0 0 0 0 0 0 0 0 0 0 2.058532374e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1.226678202e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001547527436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104772.0766 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1320740387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4327615.228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13118.88474 0 0 9.627442895e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.693086784e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112.7254337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5242748.538 0 7.187419454e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152587.8756 0 0 0 0 0 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.528634041e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.784113019e-08 0 0 0 0 0 0 0 0 159.2854386 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.773364504e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001360994484 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.369161232e-09 0 0 2248801.732 0 0 0 0 0 5.031878918e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.804399409e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.775517981e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 191681.0868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000404284154 0 0 0 28.55627445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1642168422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5153277.712 0 0 0 0 0 0 803949.5136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11696999.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.079336541e-08 0 0 0 0 0 0 0 0 2.025902303e-20 0 0 1536857.081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1354300.833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.158948481e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.406304505e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113543.3387 0 0 0 0 0 0 0 0 0 0 0 4.197866306e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.12837809e-19 0 0 0 0 0 0 0 0 0 56184142.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.298369994e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.199326776e-15 0 0 0 0 0 98621.5009 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.699850942e-09 0 0 0 0 11018640.78 0 0 0 0 0 0 0 0 0 0.0271480565 0 0 0 0 0 0 0 7.060336957e-25 0 0 0 0 0 0 0 0 0 0 1795.678967 0 0 0 0 0 0 0 0.007910094263 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.663760485e-09 0 0 0 0 0 0 0 0 0 299759.1764 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.112957602e-10 22.50608174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 302.9621967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.288629291e-14 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 5424381.212 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.975323041e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009230425397 0 0 8.360286372e-10 0 0 0 0 0 0 0 0 0 2.086328726e-07 0 0 0 0 0 0 0.07471080521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 904942.581 0 0 0 0 0 0 0 0 71438.60142 0 1291686.191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21003.03081 0 6.065167169e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.231909034e-14 0 0 0 0 0 0 0 0 0 0 7.555949934e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.467708201e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.590001077e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.099493009e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04899878203 0 0 0 0 0 0 0 0 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.401774933e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66.73926442 0 0 0 0 0 0 0 0 0 0 0.001696553503 4.537021874e-05 0 0 0 0 0 0 0 0 0 10.90254486 0 0 0 0 0 0 0 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.582903426e-07 0 0 0 0 0 0 0 0 0 0 0 0 3.657244592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.378980992e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.517320788e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 145.4739294 0 0 0 0 0 0 0 0 0 0 0.09653871645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004500670288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 646553.9765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 3101488.989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.241020086e-15 0 0 0 0 0 55344.74945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.515961479e-22 0 0 0 0 1990610.792 0 0 0.0001957829852 0 0 0 0 0 0 0 0 0 0 0 0 0 2.720240245e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.261348116e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.348257245e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.81736781e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.335466592e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 217.8779922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01500262079 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4931754.943 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1279.029029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 922.8869144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.233659329e-10 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.937973349e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.694552512e-08 0 1.919894289e-11 8.418556715e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8381.376238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005853251444 0 0 0 0 0 0 0.0003803912459 0 0 0 0 0 0 0 0 0 4.628872139e-11 0 0 0 0 0 0 0 0 6.124110221e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09321135068 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99696482.39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.153393014e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.520663954e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1473546.111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.271813517 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.506241582e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.027949143e-19 0 0 0 8.569163032e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.237242142e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.181614012e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.703755289e-13 2.738203148e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.824611273e-17 0 0 0 0 0 0 0 7080172.206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.872903048e-05 0 0 0 0 0 0 0 0 0.1059185571 0 0 0 0 0 0 899805.022 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.886942066e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.42540762e-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 15837146.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 585591.1293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3760538.736 0 0 0 0 0 8337476.684 0 0 0 5.782396271e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.444621443 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.935452124e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 199981.005 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.985151971e-19 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.474448215e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.351913671e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25300198.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07707050182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 642802.4115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.668594673e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08371980037 8.155965684e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2976346.172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3983.83536 0 0 84.50388652 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.256278691e-11 0 0 0 0 0 0 1.667415208e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2946.383397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.497385584e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3015040.865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14826939.26 0 0 0 0.1971396326 +0 8.262155898e-07 0 7862834.292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.243327552e-07 0 0 308.128473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009115104256 0 0 0 0.0001199659178 0 0 0 0 0 0 0 0 0 0 0 9.957580766e-07 0 0 0 0 0 0 0 0.4139312416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3504920.748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5538903.716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.382757309e-11 0 0 0 1.161546084 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02013002273 0 1.251603121e-10 0 0 0 0 0.002122590643 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.93264915e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.694110034e-18 0 0 0 0 0 0 0 0 0 0 749856.6999 0 25787604.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.004082391e-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 7.354129268e-09 0 0 0 0 0 1.010817353e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 6.309158033e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03525935258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001165513982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.842829409 0 0 0 0 0 0 0 0 0 0 0 0 0 1.014499206e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.368676614e-13 0 0 0 0 0 0 0 349017.7308 0 0 0 0 3.322772336e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.336490394e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6295726.133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01859951899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1363577.463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.877655154e-15 0 0 0 0 0 0 2201128.97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 729.4852394 0 0 0 0 0 0 1.648000891e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224180.2914 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005954935786 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.863399945 0 0 0 0 0 0 0 0 69762.53752 0 0 0 0 0 0 0 4.374898846 9447827.538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.602052548 0 0 0 0 0 0 0 0 0 0 0 0 0 3.508165678 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.969576448e-14 0 63.45527819 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7014398.988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2702333.648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.096321601e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 89399.54779 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42976.33771 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1390413.307 0 0 12092.59423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.286789218e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4012360.635 0 0 0 0 0 0 0 0 0 0 6.508050951e-12 2.767024868e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.970670866e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.248450555e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557420239e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003557160946 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05849749041 0 0 0 0 0 0.2987818403 0 0 0 0 0 0 0 2.915047511e-23 0 0 0 0 0 0 0 0 0 3.544547866e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.964436033e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.129782899e-24 0 0 0 0 0 0 0 0 0 0 0 320071.1038 0 0 0 0 0 0 0 0 0 0 2.049223251e-16 0 0 0 0 0 0 0 4.378067435e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.069438946e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 284471.3985 0 0 0 0 0 0 0 0 0 0.04946640531 0 0 0 0 0 0 0 0 0 0 0 6.756643046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16661962.12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.447393126e-05 0 0 0 0 0 0 3.183339059e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2.981657035e-21 0 0 0 0 0 0 0 0 0 0 5384038.66 0 0 0 0 0 0 0 0 0 0 0 0 0 9663.432113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.038799506e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.961140261e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1759706171 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.326972789e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11547824.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 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.793312822e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3269484682 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 726.4801989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.592820563 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.321083118 0 0 0 0 0 0 0 0 10.31014366 0 0 0 0 0 0 0 7.230243037e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5242125.402 0 0 0 0 0 0 0 0 0 0 5.879421153e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4208235.442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1547511.158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001907260229 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.311141044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 749191.9499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.164995387e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1092.25057 0 0 0 0 0 0 0 0 0 0 0 1.02413903e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.377495533e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140.9018396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01349422104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1062533.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8181293.905 0 0 57.04148593 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.905854749e-14 0 0 5.065371356e-06 666.7104085 0 2.373310665e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.03907133 0 0 7.41543912e-37 3937.469781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79.77686213 0 0 10470736.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.403307199e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3845282.039 0 0 0 0 0 0 0 0 0 0 0 0 1.619367029e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.118113774e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.343272902e-18 0 2177592.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 407.2701021 0 0 0 0 0 0 0 0 0 0 0 0 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.227098005e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2468248122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.10730483e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4693810.905 6.181215962e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00500214303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.41455347e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3474634.347 0 0 0 0 0 0 0 1118.967575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.098245307e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4571415.521 0 0 0 0 0 0 0 0 0 0 0 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.8272774e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3002939302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8766.930113 0 0 0 1.749623281e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.57885365e-09 2.926021317e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20083.96814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11262.79813 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.461127296e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.524266294e-11 0 0 0 0 15021254.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 1.119967939e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.492021719e-05 0 0 0 0 0 0 0 0 0 0 5.166234493e-07 0 0.00239174206 0.3264597467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.94819226e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17967905.89 0 0 0 275931.1029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 4.268956353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.824558049e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1178497.757 0 0 0 0 0 0 0 3.094090515e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08587495768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32.01991141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.12544264e-08 0 0 0 0 0 9.319189429e-11 0 0 0 6050503.515 0 0 1.590943853e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9495.732695 0 0 0 0 0 0 0 0 0 0 7.020665802e-15 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.547198036e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.050287351e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003842577483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.769017567e-08 0 0 2754382.698 0 0 0 0 0 23871009.83 0 0 0 0 1863609.133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.208495222e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3928316.412 0 0 0 0 0 0 0 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.686131133e-05 0 32756084.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 0 0 0.03507351341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9651190.769 0.0001838794126 0 0 0 1324654.529 0 0 0 0 0 1.244035084e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7950503082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.107556491e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0.0012465556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.149431619e-15 0 0 0 6.512188538e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.261715306e-29 0 0 0 0 0 0 0 0 3205623.69 0 0 0 0 0 0 0 0 0 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.640282091e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.831767614e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.875930704e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.920757805e-10 0 0 0 0 0 0 1.200715684e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.3365338e-06 0 0 0 0 0 0 0 0 0 0 0 0 2.801518348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1697782.361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.722960595e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.361888793e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.112876424e-13 0 0 0 0 +6.129838767e-08 0 0 0 0 0 0 0 0 0 0 0 1.520408016e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 236734.4281 0 0 0 0 0 0 312975.1781 0 0 0 0 0 0 0.4377248589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.87642864e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0277008318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.104031994e-27 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 2.509092688e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525651.3082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 365513.9264 0 0 0 0 0 0 0 0 0 0 4.136788038e-13 0 0 0 0 0 0 0 0 0 0 0 0 571600.9292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9330179654 0 0 0 0 0 0 0 0 0 0 0 5.597393938e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.718061652e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008328128082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6764.764881 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 989.8926884 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.86227289e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.549179733e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.849419325e-10 0 0 0 5076325.956 0 0 0 0 0 0 0 0 0 0 7.434803414e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.171611279e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 5.60587962e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.190046984e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.75005955e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.252758959 0 6.786897521e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 391117.7971 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.566000978e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.518164801e-34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001806615704 0 0 223610.8647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.716755953e-09 0 0 0 0 0 0 11381572.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.312993532e-20 0 0 0 0 0 0 0 0.003914111954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.713344596 0 0 0 0 0 8.168322764e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 4.650275206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22394.10026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.683643014e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1184912.899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.326876421 0 0 0 116.8745636 0 0 0 0 0 0 0 0 0 1.222779959e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.381011517e-08 0 0 0 0 0 0 5.362784717e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9212.481924 0 0.005543146922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.153600302e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.264247517e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.762782514e-11 0 0 0 0 0 0 0 0 0 0 0 730122.3202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20253.37138 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.02934948e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16537807.85 0 7.657074274e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.505028247e-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 5.51159472e-10 0 0 0 0 0 0 0 0 0 26436154.78 0 0 0 0 0 0 0 0 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.091950019e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 201300.5163 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1240193899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5529.849026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.976534998e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007529417765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.119738427e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.088694902e-06 0 0 0 0 2360.626118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.670053082e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.556791293e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4274.076505 0 0 0 0 0 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.412425396e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1092699461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01264945569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.261910657e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.842416713e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.857733672e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.619314644e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2940821.276 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.027843585e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.064952914e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0.003430003831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.227125299e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8078619.762 0 0 0 0 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.454636961e-10 0 0 0 0 0 0 1.033067146e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.51723647e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.052099551e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.051209917e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.999942537e-25 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 5.929192149e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.119617916e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02794251306 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6398765.648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.14525264e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.463291391e-20 0 0 0 0 0 0 0 1.829211313e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.41327785e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1311.932714 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4733818.703 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.58445493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39.55216506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.512931348e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.320753698e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21242493.17 0 0 0 0 0 0 41.02830479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001897179172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.461049758e-17 0 0 2.009606389e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8732082.466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.530809136e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.261180967e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.94345481e-12 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 7411840.829 0 0 0 0 0 0 0 0.8899105952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.465889392e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.174506922e-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 0 0 0 1.021258484e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 339622.1357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222.097025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2921504.754 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.806799496e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.116917881e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 109740.2575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.167209576e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6354556.667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.934763617e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49002.4422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.6791841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.53831999e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.77171968e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65603.37003 0 0 0 0 0 0 23.20128055 0 0 6.237847831e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.177282061e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43519780.9 0 0 0 0 0 0 0 0 0 3.190821407e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.361650324e-10 0 0 0 0 0.000877290835 0 0 0 0 0 0 0 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.261111882e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.350875933e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4167.779915 4.087923728e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004286402243 0 0 6.255392073e-24 0 0 0 0 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.140053052e-09 0 0 0 0 0 0 75.89898067 0 0 1.46571958e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 860.5506138 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.549679645e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5753.792076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 11123059.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.033702863 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0195189887 0 0 0 0 0 0 0 4.532922282e-15 0 0 0 0 0 0 0 0 0 0 0 144269.0178 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.394120536e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 994.5429209 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.399542418e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009399087248 17758.65892 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07016820738 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.661911201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01110133961 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.003941899e-14 0 0 0 0 0 0 0 0 0 0 0 5.802808555e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.319211055 0 1059.960699 0 0 0 0 0 0 0 0 0 0 0.001120267858 0 0 0 0 0 0 0 0 0 0 0 26604.13885 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.588727444e-12 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1.853306658e-15 0 0 0 0.001135544038 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.28540954e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.141461169 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.532201013e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3619019382 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12500.6711 0 0 0 0 0 0 0 0 0 0 0 0 0.00827888055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02813611363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01066199501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2993672169 0 0 0 0 0 16574.82483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.242142011e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.136013617 0 0 0 0 0 0 0 0 0 0 1014881.298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 643.7469346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32487035.11 0 0 0 0 0 9026648.167 0 0 0 0 0 0 0 0 0 0 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.165587541e-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 2.186022738e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.724280149e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09878676098 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00705961204 0 0 0 0 0 0 0 0 0 5205614.165 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.999447573e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 301983.2863 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.027912038 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.010549045e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 17.5321491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.233463889e-12 0 0 0 0 0 5.311452527e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.357274267e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 199655.0741 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.635142741e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.99535679e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.950336144e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102667.7238 0 0 0.0004240440667 0 0 0 0 0 0 0 0 0 3343253.489 0 1331.477175 0 0 0 0 0 0 0 0 0 1.437393241e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3204859.969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.478698364e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 1.590535875e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4795693.254 0 0 0.0009895871506 0 0 0 0 0 0 4.448739282e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3391446.538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3464.322299 0 0 1.050525063e-22 0 0 0 0 0 0 0 0 0 0 0 0 239405.5681 0 0 0 0 0 0 0 0 0 0 6.102094991e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12926967.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.152310651e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6071985.965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.684300377e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.992920579e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 454318.4459 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.188131708e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5538557.259 0 0 8.36959182e-25 0 0 0 5804249.556 0 0 0 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.511475885e-07 0 2.56056584e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1313908295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.084048093e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.029427323e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02168506087 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02806573196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7606049.947 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 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.651292354e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1148486.008 0 0 0 0 0 0 0 0 0 0 0 0 2461508.823 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009694007401 0 0 0 0 0 0 0 0 0 3.018846142e-15 0 0 35482936.63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.356426072e-16 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.024916906e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 6.438644612e-26 0 0 0 0 0 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.604829309e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001155337369 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.105520659e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.263890635e-10 0 0 0 0 0 0 0 0 0.004801636945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.784261481e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02425331929 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.201950815e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33.34031145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.477733637e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0742569387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9764600.074 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.340165087e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.093028584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.598997484e-12 0 0 0 0 0 0 0 0 1.887869895e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8286993.053 0 0 0.005119549753 0.1897008431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95.40352108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71.472379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 535.6113064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.43103179e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.151866718e-23 0 5430.978495 0 0 0 0 0 0 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.866464483e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77036224.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1096.283744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.971306725e-10 0 3.469942638e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005346911233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.732176318e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.879989687e-16 0 0 0 0 0 0 0 1.200794375e-11 0 0 18724168.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.444588533e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8483497639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 16.278455 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.667104952e-25 0 0 0 0 0 0 0 0 0 0 0 0 5.709250315e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008752086343 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.693258227e-06 0 0 0 0 0 0 0 0 0 0 0 0 4310553.119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00300519141 0 0 0 0 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.652857361e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4231494.578 0 0 0 0 0 0 0.0009192009782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3047581651 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 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.509507981e-15 0 0 0 0 227599.0761 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7425.598657 0 0 0 0 0 0 0 0 0 27030998.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31951327.48 1.131057387e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.544353753e-10 0 0 0 0 0 7.457011351e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07501531945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.134177537e-36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.127234056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600056.2956 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.20032151e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.298843912e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009538991124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8272682.307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21081.85301 0 0 0 0 0 0 0 0 383.6816967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.661905877e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.490006181e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1066489.205 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1239.887045 0 0 0 0 0 0 0 0 0 0 0 0 1.089893916e-12 0 0 0 0 0 0 0 0 4.981023164e-17 0 0 0 0 0 0 0 0 14.34543136 0 0 0 0 0 0 0 0 0 0 0 0 1.240890386e-09 0 0 0 0 370969.2967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.549708507e-09 210.7431724 0 0 7863506.214 0 0 2.46938464e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 889.634289 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02483428378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.404505674e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1973607.952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.95131257e-14 0 4.252654956e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.44125375 0 0 0 0 0 0 0 9.026196034e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71194.50171 0 0 0 0 0 0 0 0 0 0 0 1.727422177e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01252927907 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.770139769e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.427998932 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2921131.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04976617351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.908004756e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.245246063e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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.237219942e-25 4.497923351e-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 3.780979022e-16 0 0 0 0 0 0 0 0 0 0 0 0 8.328699131e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.404666942e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.862276358e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0.02138305867 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.890855462e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002276136528 0 0 0 0 0 0 0 0 0 0 0 0 0 8.397825509e-23 0 0 2.686125034e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10757985.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31216683.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.094784122e-17 2452673.033 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3525966.712 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001146424652 0 0 0 0 0 0 0 0 168.3462503 0 0 0 0 0 0 0 0 1.216131181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.749074384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007939694479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8181.310242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1507321113 0 0 0 0.333917825 0 0 0 0 0 2.484195409e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1999.162513 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.974361143e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.563063557e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.775915268e-16 0 0 0 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.766105778e-13 0 0 0 0 0 8.973352114e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 475548.6576 0 0 0 0 0 0 0 0 0 0 0 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.912992147e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.724344524e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.191994174e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001368947047 0 0 0 0 5.576702205e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 3392.199384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.11356305e-11 0 0 0 0 0.0001741777914 0 0 0 0 0 0 0 0 0 4.032051704e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.116832031e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.069083305e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.63346426e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.227988439e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.251714477e-08 0 0 34.76790184 0 0 0 0 0 0 0 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.962901323e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.541587842e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16376.49368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.465683269 0 0 +0 0 0 0 0 3.130741893e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3693488.047 0 0 0 0.001427427401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.821062772e-05 7.714441386e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.982890689e-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 3.407281271 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.495007381e-08 0 0 0 0 5.66425209e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.502968559e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.423152774e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.233409084e-06 50.33565838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2168398706 0 0 0 0 0 0 0 0 0 0 0 0 4.058219015e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18076019.16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004062350561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.731828887e-13 0 0 0 0 0 0 0 0 0 0 0 7146655.207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20.03980334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.767669476e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006688396689 0 3.645923887e-19 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8331.709748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.710912535e-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 5.36424848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.099140137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.067379109e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005510545868 0 0 0 0 19122.47277 0 0 0 201.7386175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2917418.349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.246817318e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.552177124e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.650214615e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7284756244 0 0 0 0 0 0 274.1241674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.926228895e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.076903863e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.743685146e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.518054869e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16963013.97 0 0 0 0 0 0 0 30394.84221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1785407.086 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 15.43912945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.341093084e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.642676592e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.342766149e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.062800174e-26 0 0 0 0 0 0 0 0 9.122363016e-06 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.750489047e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4549.152482 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.707115442e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.37271989e-09 0 0 0 0 0 0 0 0 0 0 30935987.85 1.684901966e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.005426206e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.814368614e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.1190804068 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 221.8104218 0 0 0 10814.36665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.040181149e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.896122745e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 292.9549659 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.223428255e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005235542463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.439887262e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.232547662e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.510150271e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.818417896e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.467484068e-09 0 0 0 0 0 0 5.513152318e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.817818859e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.072859306e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.95513522e-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 1.70922054e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4189504.025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95906.59493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04719670603 0 0 0 0 0 0 0 0 0 0 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.52994701e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.724985418 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 321.7848428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51.67116374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.907760318e-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 2990614.628 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76669.94757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.065043336e-13 342.8312655 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 233.9963654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009409223016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2163307.147 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208.6624228 0 6.39918679e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.062163654e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007716494671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16448737.22 0 0 0 0 0 0 0 4.160651859e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.62912386e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19.6902717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.747630875e-09 0 0 0 0 186.7852639 0 0 0 0 0 0 0 0 0 0 0 0 6.565638154e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.031241533e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.102617246e-13 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 463002.3303 0 0 1.165142671e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.55640161e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 1.068155179e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.564917777e-08 0 0 0 0 0 0 0 0 0 1.732125848e-11 0 0 0 0 0 0 0 0 0 0 2666088.567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.151494508e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01530373086 0 0 0 0 0 0 0 0 0 0 5.499803804e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.093189396e-39 0 0 0 0 0 0 1.756826027e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.608245339e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08166168486 0 0 0 0 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.000449428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.359261024e-24 0 0 0 0 0 0 0 0 0 6137518.605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.130865134e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.616368001e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.06995563e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.440876041e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.701083822e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5730161992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.539076789 0 0 0 0 3969256.121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.845590074e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.925368707e-21 0 0 0 11.49141692 0 0 13137.09775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.959181358e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.334301179e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 302.1732971 0 0 0 0 8.317156005e-06 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.136179807e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.284727966 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1604697282 0 0 0 0 0 0 0 0 0 9.603897733e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.43330058 2.799837093e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 125.546596 0 0 0 129188.7779 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003393525896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14533.97785 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.999780676e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.996487106 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002766033523 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009301676976 0 0 0 0 0 0 0 0 0 0 6.443328456e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 14.26712796 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.634214375e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.740806328e-06 0.2368634882 0 0 0 0 0 0 0 0 1.307164122e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004367367392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.687006885 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.021809867e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.748208463e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11630408.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 898.5402194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0502634567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.082060151e-27 0 0 0 0.1990854832 0 0 0 0 0 0 0 0 0 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.178590244e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.597403017e-25 0 0 0 0 3.970706608e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.210148564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25155246.48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.329862332e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 217.2728055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8050.998313 0 0 0 0 0 0 0 26.45727028 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1506737501 0 0 0 0 0 0 0 0 0 0 0.01013980345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71289.71901 0 0 0 0 0 0 0 0 0 0 0 2.398540356e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16435.53202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10776.68148 0 0 0 0 0 0 0 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.577213265e-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 8.051492224e-26 0 0 0 0 0 0 1.537310447e-06 0 0 6.466467322e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 391.6408976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.432316075e-11 0 0 0 0 0 0 0 0 2.221828665e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.660012755 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.684777273e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 739.1636755 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3644385.68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 728302.6964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008781304923 0 0 0 0 0 2.027528579e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.462050212e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5063231708 0 0 0 0 3.714641541e-05 0 0 0 0 8.209504838e-17 0 0 0 0 1.124707035e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13685360.41 0 0 0 0 0 0 0 0 0 0 0 0 5118.676382 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.603098733e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 911.229451 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.88107408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007130652968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79.15885133 0 0 0 0 0 0 0 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.076302446e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1479.14062 0 0 0 0 0 2.837915113e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.33160355e-24 0 0 0 0 0 0 0 0 0 0 0 1650919.667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.377933875e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008782190115 0 0 0 0.00339987086 0 0 0 0 0 0 0 0 0 0 0 0 0 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.445775026e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28658.8521 0 0 0 0 0 0 0 3309.509185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12099.95004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.92772192e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.608226713e-07 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 408935.3491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.224072782e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.034012926e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08322930524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006260662767 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.589753303 0 0 0 0 0 0 0 0 0 3703.219177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.991748751e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.693568168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.070052843e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2126603.029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.805464422e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.558834394e-07 0 0 5.647059953e-27 0 0 0 0 0 1.07733193e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02242474124 0 0 0 0 0 0 0 0 0 0 0 0.1013127067 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.824618552e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15089.52056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.496925823e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.854330598e-12 0 0 0 0 0 0 0 0 0 193.9727543 0 0 0 0 0 0 0 7.110068252e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.032917482e-09 0 0 0 0 0 0 0 0 0 0 2227976.697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88.27128606 0.007724905084 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.120352796e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.737596415e-11 0 0 0 0 0 0 0 0 0 0 0 7.05777141e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.813668291e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 545.7443584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.969725709e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.250189373e-06 0 0 0 0 93356.56278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.257018119e-08 0 0 0 0 0 0 0 0 0 0 1.898702748e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.185616803e-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 1.37335415e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73449.99229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4457194.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.675934944e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5754889.399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.112754476e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05284943519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1502355073 0 0 0 0 0 16.83166395 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.890591742e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106412.1139 0 0 5.260160707e-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 715691.7782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005873982949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13.31417636 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.065097915e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.309345615e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.535848745e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26407.52567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04458785426 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.875001954e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.091510864e-06 0 0 0 0 0 0 0 0 0 0 0 5.574694957e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 189544.7272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 348742.4946 1.60664865e-37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14744.6755 0 0 0 0 0 0 0 0 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.972273422e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129924.9573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12935.88414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.045494142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40951993.99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4966.689504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 121254.5383 0 0 1.654067352e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01168396 0 0 0 0 0 7.08886152e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.981179541e-23 0 3.304602674e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2019291821 0 0 0 0 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.021340369e-08 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.931469685e-05 0 0 0 0 0 0 0 0 0 0 0 4.221721094e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.4499566e-18 0 0 0 0 0 0 0 0 0 0 0 0 779983.7698 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00275138108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29010.36707 0 0 0 0 0 0 0 0 0 0 1.076280931e-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 3.396665039e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.632896366e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 437635.1933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11.44265177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2221.783756 0 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.196258688e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.629124729e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002789550508 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77051247.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.009993057e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.41641839e-26 0 0 0 0 0 0 0 0 0 0 3.037463345e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52564496.76 0 0 0 0 0 0 0 4.120243809e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09573346189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.534769116e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1697232.903 0 0 0 0 0 1.302422907e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.289666426e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.73057716e-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.000158135244 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.020432668e-26 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75.90271662 0 0 0 0 2034.783072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.654787132e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.288106128e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.269246815e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.603253732e-09 0 0 0 0 0.001134811298 0 6.053614663e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.031536979e-25 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.553730022e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.42511251e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7103.963287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.85422385e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.502971534e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009140621534 0 0 0 0 0 0 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.679444163e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 2.868908625e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.519409143e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.2973575e-18 0 0 0 0 0 0 0 0 7.269594519e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.716880385e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.418929019 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40487.79362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.221227329e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3161525948 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006603851544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [sample_PSD/image.dat] N: +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 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 1 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 1 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 1 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 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 0 0 0 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 1 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 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 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 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 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 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 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 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 1 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 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 2 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 1 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 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 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 1 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 1 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 1 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 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 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 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 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 1 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 1 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 1 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 1 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 1 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 1 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 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 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 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 1 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 1 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 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 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 1 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 0 0 0 0 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 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 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 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 1 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 1 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 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 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 1 0 0 0 0 1 1 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 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 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 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 1 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 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 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 1 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 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 1 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 1 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 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 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 1 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 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 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 1 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 1 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 1 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 1 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 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 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 1 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 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 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 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 1 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 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 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 1 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 1 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 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 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 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 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 1 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 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 1 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 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 1 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 1 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 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 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 1 1 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 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 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 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 1 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 1 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 +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 1 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 1 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 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 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 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 1 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 1 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 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 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 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 1 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 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 1 1 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 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 +1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 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 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 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 1 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 1 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 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 1 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 1 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 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 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 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 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 1 0 1 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 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 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 1 0 0 0 0 0 0 1 0 0 1 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 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 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 1 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 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 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 1 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 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 1 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 1 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 1 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 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 1 0 0 0 0 0 1 1 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 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 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 1 0 0 0 0 0 0 1 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 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 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 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 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 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 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 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 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 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 1 1 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 0 0 0 0 0 0 0 0 1 1 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 1 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 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 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 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 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 1 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 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 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 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 1 1 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 1 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 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 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 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 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 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 1 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 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 2 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 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 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 1 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 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 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 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 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 1 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 1 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 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 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 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 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 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 1 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 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 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 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 1 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 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 0 0 0 0 0 0 0 0 0 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 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 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 1 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 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 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 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 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 1 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 1 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 1 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 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 1 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 1 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 1 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 1 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 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 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 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 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 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 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 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 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 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 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 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 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 1 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 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 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 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 1 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 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 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 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 1 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 1 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 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 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 1 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 +0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 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 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 1 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 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 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 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 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 1 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 1 0 0 0 1 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 1 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 1 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 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 1 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 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 1 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 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 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 1 0 0 0 0 0 0 0 1 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 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 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 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 1 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 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 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 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 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 1 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 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 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 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 1 0 0 0 0 1 0 0 0 0 1 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 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 1 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 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 1 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 1 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 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 1 0 0 1 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 1 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 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 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 1 1 0 0 0 0 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 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 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 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 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 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 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 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 2 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 1 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 1 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 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 1 0 0 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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 1 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 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 1 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 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 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 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 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 1 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 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 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 1 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 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 1 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 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 2 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 1 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 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 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 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 1 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 1 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 1 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 1 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 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 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 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 1 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 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 1 0 1 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 1 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 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 1 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 1 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 +1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 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 1 1 0 0 0 1 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 1 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 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 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 1 0 0 0 0 2 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 1 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 1 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 1 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 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 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 1 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 1 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 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 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 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 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 1 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 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 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 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 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 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 1 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 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 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 1 0 0 0 0 0 1 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 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 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 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 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 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 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 1 0 0 0 0 1 0 0 0 0 0 1 0 0 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 1 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 1 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 1 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 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 1 0 0 1 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 1 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 1 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 1 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 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 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 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 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 1 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 1 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 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 2 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 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 1 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 1 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 1 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 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 1 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 1 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 1 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 1 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 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 1 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 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 1 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 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 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 1 0 1 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 1 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 1 1 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 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 1 0 1 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 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 1 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 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 1 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 1 0 1 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 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 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 +0 0 0 1 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 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 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 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 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 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 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 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 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 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 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 1 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 1 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 1 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 1 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 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 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 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 1 0 0 1 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 1 0 0 0 0 0 0 0 0 1 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 1 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 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 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 1 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 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 1 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 1 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 1 0 1 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 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 1 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 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 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 1 0 0 1 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 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 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 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 1 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 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 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 1 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 1 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 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 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 3 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 0 0 1 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 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 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 1 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 1 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 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 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 2 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 1 0 0 2 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 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 1 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 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 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 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 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 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 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 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 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 1 0 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 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 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 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 1 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 1 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 1 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 1 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 1 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 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 1 0 0 0 0 0 1 0 0 0 1 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 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 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 0 0 0 1 +0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 1 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 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 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 1 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 1 0 0 0 0 0 0 0 1 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 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 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 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 1 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 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 1 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 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 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 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 0 0 0 0 0 0 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 1 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 1 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 1 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 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 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 1 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 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 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 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 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 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 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 1 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 1 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 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 1 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 1 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 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 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 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 1 0 0 1 0 0 0 0 0 1 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 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 +1 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 1 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 1 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 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 1 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 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 1 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 1 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 1 0 0 0 0 0 1 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 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 1 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 1 0 0 0 1 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 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 1 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 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 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 1 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 1 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 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 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 1 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 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 1 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 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 1 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 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 1 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 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 1 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 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 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 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 1 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 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 1 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 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 1 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 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 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 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 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 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1 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 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 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 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 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 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 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 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 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 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 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 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 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 1 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 1 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 1 0 0 0 0 0 0 1 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 1 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 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 1 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 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 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 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 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 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 1 0 0 0 0 0 0 0 1 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 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 1 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 1 1 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 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 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 1 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 1 0 2 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 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 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 1 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 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 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 2 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 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 1 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 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 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 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 1 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 1 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 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 1 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 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 1 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 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 1 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 1 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 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 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 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 1 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 1 0 0 1 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 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 +1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 1 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 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 1 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 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 2 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 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 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 1 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 1 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 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 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 1 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 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 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 1 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 1 0 0 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 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 1 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 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 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 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 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 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 1 0 0 0 0 0 0 0 0 1 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 1 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 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 1 0 0 0 1 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 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 1 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 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 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 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 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 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 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 2 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 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 1 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 1 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 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 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 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 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 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 0 0 0 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 1 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 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 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 1 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 1 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 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 1 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 1 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 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 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 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 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 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 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 1 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 1 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 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 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 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 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 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 1 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 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 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 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 1 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 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 1 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 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 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 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 1 0 1 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 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 1 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 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 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 1 0 0 0 0 1 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 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 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 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 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 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 1 0 0 0 1 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 1 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 1 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 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 1 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 1 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 1 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 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 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 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 1 0 0 0 0 0 0 1 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 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 1 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 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 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 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 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 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 1 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 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 1 0 0 0 0 1 0 0 0 0 1 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 1 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 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 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 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 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 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 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 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 1 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 1 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 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 1 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 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 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 1 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 1 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 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 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 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 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 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 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 1 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 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 1 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 1 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 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 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 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 1 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 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 1 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 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 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 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 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 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 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 1 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 1 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 1 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 1 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 1 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 1 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 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 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 1 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 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 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 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 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 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 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 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 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 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 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 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 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 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 1 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 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 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 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 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 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 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 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/mccode.sim b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/mccode.sim new file mode 100644 index 0000000000..1583cac28e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/mccode.sim @@ -0,0 +1,268 @@ +mcstas simulation description file for ODIN_MCPL_baseline. +Date: Sun Mar 1 17:28:44 2026 +Program: 3.99.99, git + +begin instrument: ODIN_MCPL_baseline + File: Filterscan/0/mccode + Source: ODIN_MCPL_baseline.instr + Parameters: l_min(double) l_max(double) n_pulses(int) wfm_delta(double) bp_frequency(double) WFM1_phase_offset(double) jitter_wfmc_1(double) WFM2_phase_offset(double) jitter_wfmc_2(double) fo1_phase_offset(double) jitter_fo_chopper_1(double) bp1_phase_offset(double) jitter_bp1(double) fo2_phase_offset(double) jitter_fo_chopper_2(double) bp2_phase_offset(double) jitter_bp2(double) t0_phase_offset(double) jit_t0_sec(double) fo3_phase_offset(double) jitter_fo_chopper_3(double) fo4_phase_offset(double) jitter_fo_chopper_4(double) fo5_phase_offset(double) jitter_fo_chopper_5(double) choppers(int) repeat(int) v_smear(double) pos_smear(double) dir_smear(double) filter(int) + Trace_enabled: yes + Default_main: yes + Embedded_runtime: yes +end instrument + +begin simulation: Filterscan/0 + Format: McCode with text headers + URL: http://www.mccode.org + Creator: 3.99.99, git + Instrument: ODIN_MCPL_baseline.instr + Ncount: 1000000 + Trace: no + Gravitation: no + Seed: 1000 + Directory: Filterscan/0 + Nodes: 12 + Param: l_min=1 + Param: l_max=11 + Param: n_pulses=1 + Param: wfm_delta=0.3 + Param: bp_frequency=7 + Param: WFM1_phase_offset=0 + Param: jitter_wfmc_1=0 + Param: WFM2_phase_offset=0 + Param: jitter_wfmc_2=0 + Param: fo1_phase_offset=0 + Param: jitter_fo_chopper_1=0 + Param: bp1_phase_offset=0 + Param: jitter_bp1=0 + Param: fo2_phase_offset=0 + Param: jitter_fo_chopper_2=0 + Param: bp2_phase_offset=0 + Param: jitter_bp2=0 + Param: t0_phase_offset=0 + Param: jit_t0_sec=0 + Param: fo3_phase_offset=0 + Param: jitter_fo_chopper_3=0 + Param: fo4_phase_offset=0 + Param: jitter_fo_chopper_4=0 + Param: fo5_phase_offset=0 + Param: jitter_fo_chopper_5=0 + Param: choppers=2 + Param: repeat=1 + Param: v_smear=0.1 + Param: pos_smear=0.01 + Param: dir_smear=0.01 + Param: filter=0 +end simulation + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: Sphere1 + position: 0 0 0 + title: 4PI PSD monitor + Ncount: 153447624 + filename: nonrotated.dat + statistics: X0=-89.8519; dX=2.44464; Y0=2.20963; dY=32.5383; + signal: Min=0; Max=3.76408e+13; Mean=2.27916e+11; + values: 1.84612e+15 1.45689e+13 1.46251e+08 + xvar: Lo + yvar: La + xlabel: Longitude [deg] + ylabel: Latitude [deg] + zvar: I + zlabel: Signal per bin + xylimits: -180 180 -90 90 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: Sphere0 + position: 0.0585 0 -0.0925 + title: 4PI PSD monitor + Ncount: 153447624 + filename: rotated.dat + statistics: X0=54.6874; dX=33.703; Y0=1.17881; dY=1.83374; + signal: Min=0; Max=4.24593e+13; Mean=2.27916e+11; + values: 1.84612e+15 1.45689e+13 1.46251e+08 + xvar: Lo + yvar: La + xlabel: Longitude [deg] + ylabel: Latitude [deg] + zvar: I + zlabel: Signal per bin + xylimits: -180 180 -90 90 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: PSD_cut + position: 1.69078 0 -1.24822 + title: PSD monitor + Ncount: 153447624 + filename: PSD_cut.dat + statistics: X0=0.03847; dX=0.288102; Y0=0.00841529; dY=0.277816; + signal: Min=0.442238; Max=2.55939e+10; Mean=3.35587e+07; + values: 2.71826e+11 2.66571e+10 690731 + xvar: X + yvar: Y + xlabel: X position [cm] + ylabel: Y position [cm] + zvar: I + zlabel: Signal per bin + xylimits: -0.5 0.5 -0.5 0.5 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: PSD_Backtrace + position: 0.123791 0 -0.138729 + title: PSD monitor + Ncount: 153447624 + filename: PSD_Backtrace.dat + statistics: X0=-0.854665; dX=5.98354; Y0=-0.00730746; dY=1.14411; + signal: Min=0; Max=1.63527e+11; Mean=1.33741e+09; + values: 1.0833e+13 3.27214e+11 1.06228e+07 + xvar: X + yvar: Y + xlabel: X position [cm] + ylabel: Y position [cm] + zvar: I + zlabel: Signal per bin + xylimits: -15 15 -15 15 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_2d(300, 300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: sample_PSD + position: 49.4198 0 -35.0741 + title: Intensity Position Position Monitor (Square) per bin + Ncount: 153447624 + filename: image.dat + statistics: X0=-0.0149376; dX=0.0713873; Y0=0.00896999; dY=0.0763887; + signal: Min=0; Max=9.96965e+07; Mean=29582.1; + values: 2.66239e+09 2.63647e+08 2313 + xvar: x + yvar: y + xlabel: x [m] + ylabel: y [m] + zvar: I + zlabel: Signal per bin + xylimits: -0.15 0.15 -0.15 0.15 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: profile_x + position: 49.4198 0 -35.0741 + title: x [m] monitor + Ncount: 153447624 + filename: profile_x.dat + statistics: X0=-0.0149376; dX=0.0713873; + signal: Min=0; Max=1.25915e+08; Mean=8.87464e+06; + values: 2.66239e+09 2.63647e+08 2313 + xvar: x + yvar: (I,I_err) + xlabel: x [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: x I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: profile_y + position: 49.4198 0 -35.0741 + title: y [m] monitor + Ncount: 153447624 + filename: profile_y.dat + statistics: X0=0.00896999; dX=0.0763887; + signal: Min=9.00103e-12; Max=1.0117e+08; Mean=8.87464e+06; + values: 2.66239e+09 2.63647e+08 2313 + xvar: y + yvar: (I,I_err) + xlabel: y [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: y I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: wavelength + position: 49.4198 0 -35.0741 + title: Wavelength [Angs] monitor + Ncount: 153447624 + filename: wavelength.dat + statistics: X0=3.51872; dX=1.4352; + signal: Min=0; Max=1.24212e+08; Mean=8.87464e+06; + values: 2.66239e+09 2.63647e+08 2313 + xvar: L + yvar: (I,I_err) + xlabel: Wavelength [Angs] + ylabel: Intensity [n/s/bin] + xlimits: 0.5 10 + variables: L I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: tof + position: 49.4198 0 -35.0741 + title: TOF [s] monitor + Ncount: 153447624 + filename: time.dat + statistics: X0=0.0554832; dX=0.0217845; + signal: Min=0; Max=1.52304e+08; Mean=8.87464e+06; + values: 2.66239e+09 2.63647e+08 2313 + xvar: t + yvar: (I,I_err) + xlabel: TOF [s] + ylabel: Intensity [n/s/bin] + xlimits: 0 0.15 + variables: t I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:20 2026 (1772382560) + type: array_2d(300, 300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: wavelength_tof + position: 49.4198 0 -35.0741 + title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin + Ncount: 153447624 + filename: wavelength_tof.dat + statistics: X0=0.0554832; dX=0.0217845; Y0=3.51872; dY=1.4352; + signal: Min=0; Max=1.24212e+08; Mean=29582.1; + values: 2.66239e+09 2.63647e+08 2313 + xvar: TO + yvar: Wa + xlabel: TOF [s] + ylabel: Wavelength [Angs] + zvar: I + zlabel: Signal per bin + xylimits: 0 0.15 0.5 10 + variables: I I_err N +end data diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/nonrotated.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/nonrotated.dat new file mode 100644 index 0000000000..bbe0d23f42 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/nonrotated.dat @@ -0,0 +1,333 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: Sphere1 +# position: 0 0 0 +# title: 4PI PSD monitor +# Ncount: 153447624 +# filename: nonrotated.dat +# statistics: X0=-89.8519; dX=2.44464; Y0=2.20963; dY=32.5383; +# signal: Min=0; Max=3.76408e+13; Mean=2.27916e+11; +# values: 1.84612e+15 1.45689e+13 1.46251e+08 +# xvar: Lo +# yvar: La +# xlabel: Longitude [deg] +# ylabel: Latitude [deg] +# zvar: I +# zlabel: Signal per bin +# xylimits: -180 180 -90 90 +# variables: I I_err N +# Data [Sphere1/nonrotated.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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.543100202e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.516385e+11 5.753955746e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.10222151e+11 4.837917352e+10 0 6.923240054e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.458543191e+11 2.538267617e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.382078512e+11 1.073790775e+12 2.024652343e+12 7.133618367e+11 0 0 1.43229495e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.277432458e+12 8.94847283e+12 3.147664422e+12 0 0 1.028615069e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1.001773038e+11 0 0 0 6.073223484e+10 0 0 1.526242433e+11 3.053566177e+12 1.062032255e+13 5.768659135e+12 0 2.847984395e+11 0 1.045150187e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.248800653e+12 1.370643412e+13 3.640657491e+12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.803241801e+10 0 0 0 0 3.00860318e+12 1.305476992e+13 2.623020628e+12 1.04014118e+11 0 0 1.39746073e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.925155628e+10 2.632232859e+11 0 2.169370681e+12 1.529960758e+13 3.666586366e+12 0 0 6.348162854e+10 1.42524868e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.90358819e+11 2.419329479e+12 1.509716133e+13 2.729041078e+12 7.975865722e+10 6.483659899e+10 1.523347492e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.487116849e+11 1.109455903e+12 1.801805141e+13 3.802535348e+12 2.66285531e+11 2.229392617e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.743217516e+10 0 0 0 6.153594947e+10 1.596404521e+12 2.034714304e+13 3.93499166e+12 4.82741164e+10 0 0 0 0 1.484291182e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.964812052e+10 1.435935895e+11 1.162205661e+12 2.152117972e+13 3.997163754e+12 0 1.545240769e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.413781542e+11 7.8e+10 0 4.480088532e+11 2.09546825e+13 3.172576921e+12 7.269616592e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.064321845e+11 1.395145075e+11 0 4.563281107e+10 2.655667591e+13 3.264201598e+12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.934954953e+10 1.532595745e+11 0 4.529345012e+11 2.38772281e+13 1.411222325e+12 3.792216146e+11 6.086465693e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.494380522e+10 4.986074903e+11 2.687009798e+13 1.615134044e+12 4.899322557e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.43385958e+11 1.482957709e+11 3.917201807e+11 2.7796442e+13 1.914547911e+12 0 0 0 1.431972113e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.382936189e+11 0 0 0 0 8.470444536e+10 4.764220319e+11 2.855087479e+13 1.067408674e+12 9.944635785e+10 2.797996509e+11 0 1.549261086e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.713325787e+10 0 3.739421654e+11 3.302049387e+11 2.700190976e+13 1.453444873e+12 1.070715744e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.131954026e+10 0 0 4.529175782e+11 2.987464587e+13 4.502142159e+11 3.947473061e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.265230558e+11 3.280377316e+11 2.849799789e+13 1.380150969e+12 2.046818712e+11 5.719461751e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.384462788e+11 0 0 1.774271057e+11 4.50188864e+11 2.815900442e+13 1.249708177e+12 2.901631776e+11 0 0 0 7.980380058e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557647152e+11 0 1.364494915e+11 1.019576205e+12 3.04976694e+13 1.399948938e+12 1.304616866e+11 3.998422766e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.833924067e+10 0 0 1.527421088e+11 0 4.028188981e+11 2.995925072e+13 4.832864317e+11 1.676033653e+11 0 7.8e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557514558e+11 0 6.777205682e+10 1.782019397e+11 8.112942413e+11 3.123820894e+13 6.801382256e+11 1.2307268e+11 1.404408531e+11 1.428287745e+11 1.461928804e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.15998255e+10 0 2.460591831e+11 6.858649893e+11 3.498042592e+13 5.488485789e+11 1.967434731e+11 1.158049886e+11 4.38672173e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.457086051e+11 1.461288103e+11 4.52731979e+11 3.061855947e+13 8.666234894e+11 3.276992912e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.472027528e+11 4.29403882e+10 5.092686936e+11 3.322504945e+13 7.522799231e+11 1.540429351e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.47654047e+11 0 1.593694199e+11 3.669223999e+11 3.461777334e+13 7.540729097e+11 1.619094851e+11 5.824125087e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.72959646e+10 0 0 1.193474871e+12 3.572537711e+13 3.051623282e+11 3.005636001e+11 0 1.312492547e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.83046236e+10 3.470017669e+11 3.087744731e+13 5.249597418e+11 4.964626551e+10 5.866766274e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.854102972e+11 0 5.418588424e+11 3.421477113e+13 3.034492049e+11 1.523836491e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.028761518e+11 0 0 0 2.62982729e+11 3.529933175e+13 7.151245526e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.187885978e+11 0 0 0 0 0 4.831810677e+10 5.931533568e+11 3.764083728e+13 1.332665425e+12 3.109900067e+11 3.914021409e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.161402869e+10 0 0 0 1.303253499e+11 5.065664563e+11 3.668093661e+13 8.641043315e+11 1.262817829e+11 0 0 8.674122477e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.117554474e+11 0 0 1.513031373e+11 4.858000942e+11 3.371837384e+13 1.039764481e+12 0 6.09924624e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.57101985e+11 4.388896329e+11 3.228389857e+13 8.394438171e+11 4.134880328e+10 6.457540905e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.342543709e+11 3.883696504e+11 3.196201927e+13 7.797458303e+11 3.674802203e+11 1.555999303e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.034542818e+11 1.055247638e+12 3.40337169e+13 2.856114525e+11 2.885036266e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.479463956e+11 1.424865124e+11 1.565620372e+11 4.878196857e+11 3.155926864e+13 9.437229792e+11 5.239173067e+11 7.614395678e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.85158911e+11 7.51789032e+11 3.274532762e+13 7.785302929e+11 4.498675046e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.204297242e+11 0 1.320286217e+11 6.287532245e+11 3.6255351e+13 5.846126876e+11 2.839882858e+11 1.263564577e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.465406842e+11 0 2.794442643e+11 6.923558568e+11 3.450482291e+13 8.449710202e+11 2.298478982e+11 0 1.332456887e+11 1.369088287e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.815777577e+10 7.084589789e+11 3.133699015e+13 1.181167404e+12 1.415652344e+11 2.152130513e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34.44722766 1.022891859e+11 580.224748 1.242057792e+12 3.118887818e+13 3.516701585e+11 5.056574428e+10 118060.1146 7.695030294e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.415107804e-21 364.0609432 229723.8667 4097.27217 1.359930386e+11 6.091541515e+11 2.927479637e+13 1.067834516e+12 5761352.094 1.471752205e+11 1.509560492e+11 1.729725757e-08 1.038961222e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001654633941 890194.603 162375449.8 800310.5108 48398871.58 1.25370943e+11 6.126292063e+11 2.881635201e+13 3.60112469e+12 2.66200526e+11 1.361458207e+11 1.165109206e+11 14841.53935 3058.691317 0.004690665866 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.772133533e-07 47.10616367 7027195.203 3.243551953e+10 12722490.21 2.965890102e+11 4.228257521e+11 4.687318279e+11 3.18459521e+13 2.069935813e+12 4.969382846e+10 2.976362123e+11 289684989.6 50094.17414 49605714.43 1.529039276e+11 6.397501363e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1.596878895e-21 690977.0774 235037.9752 9809096.394 33153923.71 2.274588235e+11 125049866.2 3.993474824e+11 3.859384336e+11 3.112215179e+13 2.155758168e+12 3.045070637e+11 3.815401963e+11 10118346.85 15282536.11 4680165.143 238742343.7 158540.2937 5.188293821e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 11966.54846 861437.7638 17204581.92 28550389.69 396704479.6 108736781.6 2.082585591e+11 3.854625612e+11 1.094810014e+12 2.707174676e+13 1.434582256e+12 2.915244811e+11 1.949874421e+11 26241539.87 47742992.17 40073946.62 12083000.05 7677.025962 0.9044448993 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0.0127031147 2746435.647 51063366.22 585077580.8 118027410 1575642657 3012011761 60808273.58 1.279507436e+11 6.625971933e+11 2.725548812e+13 2.343595203e+12 5326025836 4449032947 1.301037722e+11 169350482.1 1.481342606e+11 389880.3598 115988.5049 0.3606618451 4.756569908e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 596108.5751 12779044.99 73841865.32 65836632.46 71969366.64 2.502181535e+10 2.235327048e+11 2162706462 2.847856133e+11 1.336881586e+12 2.74767074e+13 3.029900687e+12 3.107215812e+11 1.039957236e+10 1.577828181e+11 1.814883057e+10 225164210.2 1.512168229e+11 12858782.73 7808472.409 265734.4848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0.0156873753 898402.4035 4918364.108 3684735.247 38219688.98 131184283.9 240722810.7 1.25043973e+11 2.34678892e+11 4.484416436e+11 8.242915938e+11 2.846597778e+13 3.2333154e+12 9.907038043e+10 3256547277 1.10458419e+10 1.497110923e+11 304021031.1 7921522.495 33006788.17 8805517.964 13484039.07 19540.60604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 20397.89334 160013098 79963046.92 91871767.33 48267388.02 512031255.9 1.415368473e+11 571001586 430843982.1 3.561723371e+11 7.476207617e+11 2.329428734e+13 3.178838563e+12 2.540789491e+11 9.468177966e+10 615760133.6 158608194.8 1.711395808e+11 45012687.71 94998286.78 7559137.157 18733549.86 468422.9673 3.205689028e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 13670.73693 11860665.16 8087692.812 20107997.7 181577339.1 7.03605327e+10 117137927 405381133.5 8859072319 5.25659873e+10 1.713690533e+11 9.137323884e+11 2.531968633e+13 3.416599846e+12 8683810178 1.514760833e+11 1190249910 408976609.9 856441743.8 515930955.6 74577379.74 12267800.49 1065570.522 391567.7271 0.002410628547 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7.729921196e-27 20668.93843 4356722.197 12452849.06 22791276.75 67302017.64 84555179.41 1.501273099e+11 203652901.6 1.135073763e+10 1.161375034e+10 9.575109223e+10 1.188745117e+12 2.308793556e+13 3.389531985e+12 1.508177757e+11 2.074213999e+10 3714206355 1.551143326e+10 1.799379316e+11 209115501.8 269372107.7 304656996.5 11505123.49 43550960.1 380333.2609 0.0008200611922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.025883949 7509147.347 659961821.6 83953084.4 157658263.7 538802508.1 1.481375517e+11 863852418.6 1207537626 1.072376794e+11 1.008350307e+11 5.143216081e+11 1.896285003e+12 1.864426817e+13 4.754262812e+12 2.666801365e+11 1.332831283e+11 6387794269 437971753.4 7.46435208e+10 223696359.7 141947349.7 1.439025494e+11 7249613.05 959353166.5 1239668.036 0.8897611048 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.884535015e-12 70560025.5 2592766.553 12150525.82 118024147 200970048.5 108886337.5 1914743439 1.360556833e+11 700661416.1 1.369389395e+10 6.960903363e+10 1.962615712e+11 2.085648753e+12 1.841265341e+13 3.226725554e+12 2.304509883e+11 9.131450298e+10 1942337490 3.291428495e+10 1.545590499e+11 395063276.9 266102383.9 563652966.6 66612313.43 7544252.146 241971.4311 84413.46461 0.01222940645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0.001338896701 316802.7501 22407669.37 1985474.594 293224645.7 65102825.25 2518474908 1.435362354e+11 3523504891 1.418114023e+10 3161317715 1.752275524e+11 1.214348071e+11 3.265609708e+12 1.674186164e+13 4.822749356e+12 6.930152621e+11 1.981124647e+11 2.995138983e+11 1226292389 635650832.5 1266921615 241766140.4 197086630.5 107548691.6 138165855.1 87829510.2 55227770.62 32.30444424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.590092298e-05 201983.5968 16166.68633 48924063.76 14573635.4 1453804680 80280575.82 205828018.2 363303752.4 1.124673176e+10 1116765808 1.237826326e+11 1.088674366e+10 3.683900583e+11 2.558823425e+12 1.557478267e+13 4.981213056e+12 2.963948927e+11 2.010641045e+11 1.702270195e+10 7728495271 6985365973 5.961879664e+10 355173134.6 452701845.7 355696047 96402109.92 372056887 13513.42812 9590378.634 2.512336011e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1331.622483 17010514.52 5942505.712 244510987.9 26857731.81 24395683.17 3898952742 95895364.44 666707314.1 468213710.5 8.310638843e+10 1.560593771e+11 2.581137068e+10 2.624367968e+11 2.97626723e+12 1.476331326e+13 4.382222752e+12 1.754834925e+11 5.293132284e+10 7811369557 1491963691 6556663012 3769342311 1072128712 460754972.1 11294399.25 151668952.7 34939606.39 46310672.88 7123976.856 9.119963435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.542467272e-14 204348.739 1625848.599 23350617.17 3582333.273 84915420.67 118382262.7 57352526.79 1004915670 1.166820096e+10 4335489598 2.631392085e+11 1.251784507e+10 5.576811169e+10 2.357043646e+11 2.824942349e+12 1.318482406e+13 4.245797997e+12 4.121499879e+11 1.769235792e+11 4195491251 4983410857 3280258954 6.633425458e+10 4486598019 332567738.2 250292243.8 86857965.58 60546478.94 14168338.77 35716515.66 5.671742511 5.941289722e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2.371049143 1845978.937 2220891.128 4485172.658 103790410.7 4420687495 40998381.88 125335957.9 490877971 2230843960 7.688242642e+10 1.573980436e+10 1.514393292e+10 5.03935955e+10 3.270364874e+11 3.236252128e+12 1.177349273e+13 4.810690354e+12 1.552644623e+11 2.394643126e+10 2.859255012e+10 4039298677 5556631875 2451478209 869602732.5 211232687.3 519811670.5 122802932.8 162860985.9 187353.0747 6770345.745 26929498.61 1.412770634e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 902949.4432 374999.1452 23498752.01 15779723.4 227630010.3 111239871.3 194583355.7 3983060900 172983511 2047928463 1.177496533e+11 2.601056728e+11 1.929909878e+10 1.964583605e+11 2.071735684e+11 2.221825355e+12 1.052755386e+13 4.882677989e+12 5.143038341e+11 3.506233399e+10 4152262986 8757644485 5442864287 1302190244 6275979255 2423340592 49342734.45 42181129.47 984637867.9 24650287.41 12858959.19 1152.425997 2833.879769 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0002790542419 3783.429219 339094.517 110993.0187 29291016.88 103914708.1 63612275.61 73508247.53 159452836.4 485950628.6 437595196.4 946116675.6 6842445811 1.065521612e+10 6653744887 1.189486357e+11 9.498731464e+11 2.575668153e+12 4.919423026e+11 1.822290468e+11 1.569110867e+10 8577556902 6961922615 8014205346 5.395492891e+10 7191436104 1413427226 272133479.9 219233727.7 103248890.2 14550008.96 9541211.879 20981.43685 854422.8157 4.218259954e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 7.721420006 6002.863747 16214301.81 611137.236 316445758.3 285643916.7 40211515.37 54621422.68 52897637.13 1998905057 188803420.5 3.236517733e+10 1.264702131e+10 3855922645 9239754982 2.141631851e+10 4.659531026e+10 2.417779252e+11 1.05012696e+11 1.424503918e+11 1.182114421e+10 1.582678349e+10 2.38956288e+10 2.303852893e+10 1800408248 3068309582 885037999.1 604962798 73745086.98 13853863.65 136564101.8 540917.7495 8358181.001 41.32709505 1.128818251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.2512177263 12998190.04 15622542.75 12626660.11 8434139.891 88727223.01 884243777.8 3213203.465 548523546.8 491419532.5 96713015.79 4660756897 7.842791333e+10 647457495.1 2904181554 5552437272 1.06779512e+10 2.98629066e+11 2.621301079e+10 2.635041733e+10 1.008232835e+11 7184496318 8.437026522e+10 1582790935 728902189.6 2762610972 135202178.2 384620787.2 2187858384 6331625927 161741.3991 2472379.725 10234955.97 5897492.22 126520.388 49755.49673 23.40118616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1219.642617 12167.00824 170673.5755 6438632.528 922937.9003 2465190.872 5268783.227 135691600.4 1.007704216e+10 509117990.4 8.031519272e+10 8283498264 3.179268035e+10 2021604023 1337108242 1.186319301e+10 4353250831 1.59466699e+11 8.701779338e+10 8695609941 2.321928072e+10 1947266451 3951280111 1.007267892e+11 1.157745852e+10 472557024.8 93618584.39 2363200817 425787307.5 151796656.5 159424518.8 46094.39021 71814607.55 126797.9812 927421641.7 190909.711 11.78236483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 54562.27229 16.43522347 11768.57405 7087156.329 435642.3939 457573199.5 8672167.76 7769678826 31749895.07 3757559.301 46677167.84 361912309.7 47506345.5 1.264333522e+10 1.26028036e+10 4120646321 8033314329 6.506388328e+10 1.393189926e+11 1864430395 4793784149 2297033521 1.423046323e+11 992341710.1 93570669.16 641000690.7 82315088.11 484170790.4 100598821.1 368151081.6 47711140.69 639174081.8 47883412.68 919932.6871 376455.7184 3683550.649 0.0002113393994 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.02866039082 156621.5956 7494773.32 1555065.326 5492466.133 236226316.2 34428866.63 88218173.48 26790238.2 9938749.204 39699287.29 1212818736 324613478.2 209525337.8 245755733.4 5492683239 8.011138342e+10 6368380139 1337924956 760076584.2 1959243151 1142210928 1836286528 446303101.9 608847071.5 3674786758 671952530.6 82913441.26 452308808 828491197.6 3416605.279 76935.74761 10772393.52 9073.487364 679129.4104 9184.491065 0.0006163601615 1.01177225e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 106.2068052 0.1660412412 3091159.013 163350.0552 41408.14915 248120.2999 243531.124 26252903.31 871807.0207 4291401.822 37985010.17 594130212.2 318786390.2 18119929.38 916975025.2 233419723.3 2210721622 1110342946 4531734745 2607735102 616894866.3 226625120 181324230.7 821611709.5 112224420.4 1280305739 853987350.3 441239625.8 1876631.25 31515097.43 5886825.088 117677035.5 2098758.374 48322136.71 23489335.96 18076105.64 188563.8984 107535023 8.935213527e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.934847716e-05 6.204980031 291418.9933 338305923.7 965.0774212 1430.790015 15929787.5 1349601.971 3202454.342 26957952.4 133285780.6 95582953.01 60554096.21 24882187.53 1336851633 5565250.199 743198430.9 382544709.1 1011263372 57341526.35 392289562.1 1944348095 170596934.1 52047995.66 1259487177 1334987808 219834572.5 18537543.57 43295132.37 812239.0475 10111787.29 137.4295207 67359.80989 12717.20066 310174.4009 14249.38065 4604259.167 2.167955256 5.287150653e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 65.29255374 649520.7349 1.14413192 405.6902218 15609700.97 9069.197018 3605209.85 11931.30413 3849456.17 2477552.378 12117640.04 986925334.7 6828166300 18136393.16 230310795.4 5453391.871 590403022.8 802828863.8 991500.242 105865669.1 1038902094 664012335.4 324196.7563 1409420911 98550533.32 171584.6251 72923699.03 2699290.542 64386092.22 72915.60707 215339.4779 342.3485432 1506199806 4101.50383 11041910.66 907.6233334 3161.771422 0.02764532854 1.959231222e-22 4.594295311e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3.937304393e-05 6732.106959 9.818326934 206.6404536 1578.215053 5945786.473 16356.57058 1237053.488 336220.7209 143008.5943 44080.96436 158709.5894 33241.20395 1941.431084 690988.3096 2683103.325 16309.611 15401088.44 20877555.99 26297556.99 100988.0886 65.62586159 3327.009045 162457.8405 1714968.155 9632.805587 38548724.83 6980164917 2128672.437 43.76781055 0.02582566711 1718476.439 35452794.84 9.278365788 2479594.941 663.2819475 0.003345610291 0.002418042796 0 0 1.969377867e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 8.737402164e-06 0.001554667485 0.2042822275 0.2689596802 1.787923968 2207.243129 28218.65457 41.26184087 71.2743452 54006.5393 1101484.819 2791223.703 4760296.179 479127419.5 6656.54845 121484.3704 20816.77261 0.8442963347 492094.1695 687881.9869 10763452.73 54.98911819 617282.294 1350456.342 2.990586411 151.7788459 22659812.42 24.3345599 6021.738475 1712548.621 61283.83593 0.3950472015 10829462.97 0.003065834668 7179887.136 0.05414726781 0.006591459861 5.418816949e-15 2.445186144e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 6.814368434e-07 6856488.864 61.03832771 6.249456958 0.00440213005 410629.2293 205782.577 102.0975325 780859.2206 224589.4329 37.03101149 70.03980752 7.003595194 0.04045353409 323.103847 5165.242597 0.2506540466 5191.629573 0.1608494074 92.44047616 101544.8686 8.695812715 0.02617372207 0.5688435514 2353.560535 6408.281265 0.09615221584 6.522401196 0.000126414164 0.002102740655 4.142864881e-13 1188.850781 2.194996976e-08 656.0963719 8.210426346e-06 7.537970629e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.359270821 0.0001948895134 1480.929363 0.0001092989101 0 126.4792076 2825.593498 3.939281046e-17 24.08606548 7.077617333e-09 70.19417939 4.584160522e-11 55.52787641 341.2840022 2.561434474e-09 2121346.864 70.72141306 0.0003979548472 2.052979406e-13 5.17429711e-05 1.90261975e-08 157.4286968 0.04418868131 0.0003581324069 0.645329545 6.259261772e-11 3.111672213e-06 6.846181464e-11 3.317086263e-24 0 1.479410256e-06 8.846414272e-06 0 4.715267747e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0.1354394604 7.241745049e-11 0 0 1.601530275e-26 0 0 0 0 1.194515602e-25 0 0.001334744073 1.092869091e-12 4.229537204e-27 0 0 4.415465435e-07 0 1.925725382e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [Sphere1/nonrotated.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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.543100202e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.516385e+11 5.753955746e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.828925862e+11 4.837917352e+10 0 6.923240054e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.458543191e+11 1.735928284e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.382078512e+11 3.723792224e+11 4.936873676e+11 2.962316542e+11 0 0 1.43229495e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.38555455e+11 1.016991125e+12 5.991211922e+11 0 0 1.028615069e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1.001773038e+11 0 0 0 6.073223484e+10 0 0 1.526242433e+11 5.874355864e+11 1.111544372e+12 8.235801404e+11 0 2.028828602e+11 0 1.045150187e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.016225778e+11 1.297106486e+12 6.803151202e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.803241801e+10 0 0 0 0 6.007611943e+11 1.249311482e+12 5.409953132e+11 1.04014118e+11 0 0 1.39746073e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.925155628e+10 1.869326804e+11 0 5.142292323e+11 1.355913002e+12 6.299766047e+11 0 0 6.348162854e+10 1.42524868e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.053268119e+11 5.512215772e+11 1.330903264e+12 5.503140338e+11 7.975865722e+10 6.483659899e+10 1.523347492e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.487116849e+11 3.94119128e+11 1.486849104e+12 6.894982844e+11 1.883211066e+11 1.507139847e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.743217516e+10 0 0 0 6.153594947e+10 4.414579025e+11 1.536987643e+12 7.20684172e+11 4.82741164e+10 0 0 0 0 1.484291182e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.964812052e+10 1.435935895e+11 3.815414536e+11 1.561375773e+12 7.043461529e+11 0 1.545240769e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.101118165e+11 7.8e+10 0 2.36370031e+11 1.574712902e+12 6.08022407e+11 7.269616592e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.580631604e+10 1.395145075e+11 0 4.563281107e+10 1.795388479e+12 6.424248521e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.934954953e+10 1.293474002e+11 0 2.250124415e+11 1.676501968e+12 3.611705361e+11 2.101559766e+11 6.086465693e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.494380522e+10 2.61283955e+11 1.768018457e+12 4.16863915e+11 4.899322557e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.43385958e+11 1.482957709e+11 2.210747565e+11 1.827041548e+12 4.557797762e+11 0 0 0 1.431972113e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.382936189e+11 0 0 0 0 8.470444536e+10 2.547798781e+11 1.851614175e+12 3.637580893e+11 7.191603383e+10 1.986948122e+11 0 1.549261086e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.713325787e+10 0 2.16750417e+11 1.8583936e+11 1.782655034e+12 3.953059336e+11 1.070715744e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.131954026e+10 0 0 2.616042882e+11 1.890550322e+12 2.22383183e+11 3.947473061e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.265230558e+11 2.024968681e+11 1.808875821e+12 4.285795471e+11 1.526998978e+11 5.719461751e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.384462788e+11 0 0 1.551321903e+11 2.399518119e+11 1.809419715e+12 3.86203817e+11 1.898271858e+11 0 0 0 7.980380058e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557647152e+11 0 9.844518398e+10 3.737067497e+11 1.870694569e+12 4.369787339e+11 1.304616866e+11 2.310184608e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.833924067e+10 0 0 1.527421088e+11 0 2.175492723e+11 1.883345006e+12 2.611819457e+11 1.024651039e+11 0 7.8e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557514558e+11 0 6.777205682e+10 1.493623511e+11 2.952381226e+11 1.921826797e+12 2.715650154e+11 1.2307268e+11 1.404408531e+11 1.428287745e+11 1.461928804e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.15998255e+10 0 1.813776513e+11 3.093608204e+11 2.035283583e+12 2.410955775e+11 1.562381062e+11 1.158049886e+11 4.38672173e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.457086051e+11 1.037991088e+11 2.433585924e+11 1.854192316e+12 3.182022563e+11 1.949156526e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.472027528e+11 4.29403882e+10 2.372517305e+11 1.976533896e+12 3.22243423e+11 1.540429351e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.47654047e+11 0 1.20115773e+11 2.021646421e+11 2.012561893e+12 2.975435885e+11 1.144875766e+11 5.824125087e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.72959646e+10 0 0 4.097089112e+11 2.060171528e+12 2.158861589e+11 1.936495643e+11 0 1.312492547e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.83046236e+10 2.012332615e+11 1.902945647e+12 2.710388002e+11 4.964626551e+10 5.866766274e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.03115507e+11 0 2.67267997e+11 2.026071828e+12 2.146503688e+11 1.523836491e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.028761518e+11 0 0 0 1.871434986e+11 2.038487083e+12 2.722093689e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.187885978e+11 0 0 0 0 0 4.831810677e+10 2.604070383e+11 2.11626816e+12 4.322971076e+11 1.799379471e+11 3.914021409e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.161402869e+10 0 0 0 9.522281022e+10 2.375844146e+11 2.083712157e+12 3.405505741e+11 1.262817829e+11 0 0 8.674122477e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.117554474e+11 0 0 1.513031373e+11 2.616014965e+11 1.973671854e+12 3.606621336e+11 0 6.09924624e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.597230467e+11 2.253108969e+11 1.916852479e+12 3.141629419e+11 4.134880328e+10 6.457540905e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.342543709e+11 2.111231331e+11 1.945939561e+12 3.187018202e+11 2.133926193e+11 1.555999303e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.147336373e+11 3.992392492e+11 2.010067161e+12 1.874394956e+11 2.046185423e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.479463956e+11 1.424865124e+11 1.126790509e+11 2.519037171e+11 1.941762903e+12 3.640224822e+11 2.659607064e+11 7.614395678e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.15380573e+11 3.363102097e+11 1.966321912e+12 3.114180355e+11 2.598781689e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.204297242e+11 0 1.320286217e+11 2.720726633e+11 2.069218687e+12 2.549314873e+11 2.008724147e+11 9.824998401e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.465406842e+11 0 1.869728032e+11 3.028564192e+11 1.99445219e+12 3.150921571e+11 1.708316058e+11 0 1.332456887e+11 1.369088287e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.384203012e+10 3.079557671e+11 1.928559578e+12 4.059819718e+11 1.733812948e+11 1.774535881e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36.52498414 1.043149108e+11 549.3377827 4.099256759e+11 1.926393379e+12 2.103479348e+11 5.160844665e+10 120975.6081 8.037197006e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.729833991e-21 366.4462166 148037.5105 3083.369525 9.71502805e+10 2.680675988e+11 1.854094397e+12 3.712596052e+11 5712266.014 1.479933697e+11 1.522484562e+11 1.693656272e-08 1.199689083e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001717009961 894714.5448 162805159.1 682649.3431 41969140.69 1.255893675e+11 2.708931564e+11 1.847444515e+12 6.996122543e+11 1.889912714e+11 1.364737211e+11 1.168181627e+11 10640.51253 3079.250771 0.005416313924 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.046281289e-07 45.48012978 5197839.435 3.247448748e+10 6923328.964 2.100686362e+11 2.279688764e+11 2.306018786e+11 1.917850195e+12 5.002813001e+11 4.956869513e+10 2.107433268e+11 205305929.6 28826.00511 49782426 1.545220036e+11 6.923258027e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1.596878895e-21 697595.8111 167293.8045 8001223.123 26326157.1 1.685326032e+11 119688623.1 2.324414058e+11 2.11173805e+11 1.948203207e+12 5.228657221e+11 2.154005161e+11 2.303915345e+11 5283856.597 7610510.772 3523682.278 236476414.6 160922.9962 5.188293821e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 12161.05697 481214.4184 15165827.05 14626304.08 335726789.2 88095153.88 1.476565193e+11 2.213842338e+11 3.956824994e+11 1.813756022e+12 4.149246484e+11 2.062789033e+11 1.462896598e+11 17230566.09 25558851.85 29632793.98 5184428.866 6651.180014 0.6455077064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0.01037059649 2542694.407 36741497.8 500858906.7 86686062.89 1438770849 2155160864 40651360.24 1.260785927e+11 2.690959216e+11 1.783833685e+12 5.496605643e+11 5243077362 4090042092 1.218387271e+11 137453593.7 1.481942482e+11 275818.8412 95441.8692 0.3582767663 4.350817497e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 535020.1198 9047536.538 68496034.49 50815870.52 37624177.53 2.468000404e+10 1.599567868e+11 1897807334 1.980958032e+11 4.148474593e+11 1.811281354e+12 6.051288474e+11 1.830265522e+11 1.032496755e+10 1.542176692e+11 1.490194429e+10 164435463.4 1.511684169e+11 7311960.321 5551688.4 261238.7102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0.01607640641 620693.0616 3922587.67 2018452.848 30124759.37 69960764.44 88211830.65 1.246040916e+11 1.679685157e+11 2.28642139e+11 3.336890579e+11 1.861304641e+12 6.231414949e+11 9.733193562e+10 2597160244 1.074457508e+10 1.494172039e+11 232184201.2 4076394.674 19620999.05 6358786.611 10701614.3 18252.85931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 15667.18641 142556393.4 68988179.98 55120284.63 26860157.46 309267349.1 1.412660262e+11 295877814.1 189437453.1 2.058993779e+11 3.061504391e+11 1.650261085e+12 6.016442876e+11 1.812901406e+11 7.620453495e+10 229558117.2 63254150.21 1.503690729e+11 18636179.7 69427857.31 5895931.858 16393262.06 470693.6721 3.205689028e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 14044.87372 10563903.86 6109556.173 8751639.925 85424971.79 7.029396182e+10 39284178.46 140682418.4 7985208394 5.180554842e+10 9.479702116e+10 3.237578569e+11 1.719596849e+12 6.364939786e+11 5334626279 1.352502811e+11 555140809.9 169292990.5 494602028.1 342628522.6 45135761.59 5900710.134 760172.292 355531.0078 0.001940104423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7.729921196e-27 12821.12155 3681964.446 8108693.07 10385106.9 31486125.7 47123209.54 1.495619487e+11 61377299.45 9731012942 7031232146 6.570831522e+10 3.848196846e+11 1.67159036e+12 6.383328922e+11 1.284522273e+11 9526591559 2322123486 1.376277338e+10 1.577917662e+11 107206350.7 203435068 206918013.3 7643897.831 25374508.58 382641.8153 0.0008200611922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0.8369812686 5842447.821 659421689.8 44222242.04 116744026.5 309919203.6 1.471521912e+11 413176590 485911657.8 8.064327807e+10 4.982276729e+10 2.540272629e+11 4.744855135e+11 1.484635332e+12 7.644087614e+11 1.548043675e+11 1.141235715e+11 3709830857 116217047.3 7.438172211e+10 73815843.21 48905429.6 1.439307913e+11 4045874.194 935026239.6 1159347.541 0.912329489 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.088128869e-11 66310093.41 2386084.55 11256914.86 82733942.12 152318842.1 53724516.62 1766292569 1.35536327e+11 238686632.5 1.003014275e+10 5.276365528e+10 1.549912731e+11 4.84376253e+11 1.454134411e+12 6.272794173e+11 1.453536442e+11 8.428411296e+10 596543808.5 1.898819645e+10 1.535003836e+11 127265174.1 156943011.6 496905259 37304952.77 5469454.641 153711.4698 82848.83968 0.01412130221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0.0009187014178 307931.6724 13111017.67 1432464.484 232394553.5 26540382.74 1800481081 1.116482962e+11 2393619339 1.294169127e+10 1525655146 1.550002017e+11 5.79920071e+10 6.145480312e+11 1.41421413e+12 7.371093474e+11 2.746704045e+11 1.528160696e+11 2.076732932e+11 367645910.5 422054512.7 998357554.4 158568925.8 108816266.1 61606372.25 122500225.9 87031457.1 55298427.39 33.18965905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.590092298e-05 145070.9685 9496.50736 28662312.58 7403189.03 1153670373 39642367.83 77537911.7 126408110.3 1.020778795e+10 301459293.3 1.062179507e+11 5729977562 1.803925074e+11 5.095258059e+11 1.158148069e+12 7.256491469e+11 1.617042216e+11 1.55232018e+11 9685667194 3433427608 5265106510 5.914286811e+10 121754686 338962638.9 306209297.8 58152720.39 359737647.1 13207.03652 8008147.678 3.076722662e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1364.601097 16258794.9 5941711.212 224054900.4 18535087.45 10117487.74 2720098546 36277459.61 279531451.6 271536789.7 7.300759035e+10 1.518093495e+11 1.271122075e+10 1.084846459e+11 3.332640234e+11 5.148047363e+11 2.838723284e+11 8.261908023e+10 1.910817331e+10 3804533061 454002206.4 3692186843 2792870456 681379728.1 288639627.1 8324721.328 99677580.04 25767347.31 45116215.03 6460273.177 9.400461861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.880758556e-14 205427.5639 1547753.421 13105163.46 1937052.86 66836224.16 87121319.74 23089005.31 589336371.4 9065246852 2188660564 1.832911115e+11 6544890503 3.158472754e+10 1.571354139e+11 1.794782743e+11 3.91859852e+11 1.728160191e+11 1.957489737e+11 1.561342279e+11 1421963412 2106625654 2459697501 6.548277487e+10 3830721392 146143859.1 147681287.9 62488452.23 50512754.87 8643713.319 34196540.2 5.752191772 7.276551858e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2.560996322 1854640.743 1389868.642 2875696.282 65547181.33 3964444724 16235209.07 62530857.64 233294481.3 1388968917 7.424738302e+10 1.479080508e+10 8783701822 1.991147458e+10 1.68345097e+11 5.562379416e+11 9.768473773e+11 6.636524997e+11 9.2717617e+10 1.239518253e+10 2.223665864e+10 2184441026 3454732871 1441906672 431539633.5 76827411.98 429299362.3 59481446.88 85679823.64 121703.699 6687460.191 27147437.93 1.57951528e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 886687.6618 200550.7659 23038201.28 10790471.99 130251786.3 54211945.53 90998029.1 2795225624 119001661.8 1191168433 8.881053711e+10 1.811938272e+11 1.243766049e+10 1.037748238e+11 1.491554076e+11 4.7529397e+11 1.099575367e+12 7.31967061e+11 2.491343995e+11 1.203904456e+10 1480219111 4691038300 1948998600 678742506.2 2697671482 1878949406 16458026.5 23960048.75 836762997.5 16618522.88 9240042.885 1057.924411 2887.744142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0003087431814 2873.573518 291242.8632 68145.89312 16827573.8 103393476.7 53072774.83 44149670.38 130562558.1 369594407.9 227445822.2 468071650.9 3698952075 7289856930 2674670101 8.556454134e+10 3.055996806e+11 5.485461875e+11 2.331547157e+11 1.418752652e+11 4311891443 5251687098 3089651260 5710918996 5.118307942e+10 5608352484 1298321522 162629432.8 176414056 91185409.81 13613907.82 5723843.592 21035.31644 851523.7221 5.166292245e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 5.9271708 3978.720039 16104402.19 397875.0063 314570794.5 278244640.8 20365224.77 18454142.99 30954155.75 1349216438 79316110.07 3.09430831e+10 8203846621 2136590921 3749793092 5631842744 5958395473 1.547521066e+11 5.200659291e+10 9.775508155e+10 3874504146 8823637581 2.135652305e+10 1.534193192e+10 1503281535 2575771168 715108454.4 583658676.3 41165284.08 11497664.95 113443927.5 535842.0253 8238571.954 30.08503245 0.880875424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.2512177263 13250248.59 15682258.5 7838690.2 7776467.012 76023594.76 747715688.6 1873570.311 493923686.4 395913604.6 42916771.76 3608808674 6.572275641e+10 268749585.4 1884955144 2665720328 3616189314 1.597626089e+11 4613058814 5003187437 7.84457132e+10 2599938328 7.805154145e+10 720279572.8 234237686.2 2103337577 65059244.14 339333448.8 2077309597 6286605847 79315.80391 1558326.405 6819725.997 4174334.337 98442.93837 51197.97981 27.02136225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1317.364543 10706.96336 167418.6863 6426004.217 597837.5433 2009533.095 2638492.692 116477362.7 1.00174199e+10 469550413.7 7.804450838e+10 7978159787 3.12424802e+10 1802868021 733766686.4 6291842244 994958362.2 1.487032162e+11 7.802882919e+10 1491300708 7918923306 668380148.7 1766166094 1.003773865e+11 1.037136668e+10 448221800.6 36578252.88 1830202299 387197370.4 143904211.9 134201498.4 26362.03786 52498554.77 125806.3004 930784194.1 194685.8043 11.78236483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 56621.44094 9.277490085 9314.802128 6481115.87 295749.9865 393106458.8 7707553.915 5457103820 19924039.71 1840578.121 17902750.64 318935489.5 23396819.54 1.143972726e+10 1.231962795e+10 1553152703 3737098112 5.146012936e+10 1.297173665e+11 471590270.8 1908833199 1214589010 1.413779807e+11 830150366.2 50108718.34 575558078.6 41522718.42 478862986.8 61053026.23 332935425.8 30894739.55 593497053.9 34031618.6 918741.2744 346842.4625 3746486.219 0.0002282726397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.02940616629 150544.824 7534991.451 1215035.873 5301180.701 228157060.3 24074014.7 66420404.01 11892994.02 6562978.781 23511131.93 1004075841 200395868.9 150868485.3 130697947.2 3825848245 7.803451145e+10 3019922370 551531529 223454519.3 703765594.4 480063066.7 870509738.5 225266729.5 597864178.8 3351245122 645982314.6 48862875.89 420648235.2 818044678.3 3242192.947 74750.00509 9773147.705 7928.903979 657406.3061 9229.585724 0.0005715558454 1.01177225e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 118.7428174 0.1359029644 2300060.539 146868.7605 29930.75581 158900.4316 214917.199 24815834.38 821850.591 4116129.856 28723558.47 517052478.6 292066280.3 10647449.68 578015116 139286910.5 1212305779 612217379.1 3903188866 1239924260 268879791.2 140600424.7 129388576.8 815351054.8 66005125.02 885735854.9 793829004.5 439944506.7 1209613.27 28743843.47 4261313.04 116460767.5 1927458.759 47073255.66 21518027.09 16914456.36 192162.5935 113350336.8 8.935213527e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.934847716e-05 5.371360017 297419.2778 341313142.3 515.3982176 1136.181866 14625523.91 935256.7309 2003849.837 21573591.5 96600962.3 85166209.77 46025917.04 16984443.26 958732264.2 4662164.503 631454221.8 169798214.5 872310569.8 46880723.06 237015251 1517439869 130614919.2 29934613.69 1097187188 1243217420 199564514.1 11646864.38 38580795.25 684218.352 10133344.14 104.4727821 66752.18829 12793.16848 234652.803 12378.78697 4703286.536 2.273770652 5.287150653e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 68.47609554 671958.4765 1.019844933 308.234577 11700233.63 7330.179749 3492199.79 11464.09086 3183236.635 2228034.905 9063295.652 989850165.9 6845485870 16054698.86 215437259.4 3140986.31 404933610.3 804770189 593667.515 89380457.78 666280338.1 517191105.8 291099.2822 1383803643 84923256.52 151885.0595 50992330.81 2655669.224 60255436 43127.97134 193719.043 343.5623612 1518494986 4144.002091 11192690.46 668.3694307 3090.050705 0.02826299619 1.959231222e-22 4.594295311e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.546407503e-05 7096.263323 10.11898791 207.1353033 1146.519005 6016493.895 16535.72716 1173452.245 334363.5805 115235.8857 44115.51992 145672.7943 26732.74235 1506.202037 504099.0139 2694800.119 8603.562791 13724979.14 20455496.41 26457657.27 89035.93963 36.9252132 2443.049922 160621.4552 1645945.216 6515.179405 36094244.76 7027042677 2148290.843 37.47968775 0.01980451873 1386995.377 28438845.82 7.72145954 2530725.887 681.45742 0.003547929238 0.002961485514 0 0 1.969377867e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 8.737402164e-06 0.001732713143 0.1625330617 0.2807536515 1.828223128 2305.378514 28949.44232 38.42369812 59.70501483 42501.80805 1104559.605 2829698.468 4815291.492 484629984.2 5015.9322 122943.3838 18617.41124 0.6475224441 443583.8588 542467.3155 10957343.03 35.60829239 614964.802 1376179.483 1.766009921 138.5851319 22729135.03 24.03349798 6131.481597 1757033.716 60952.5591 0.4099351416 10848675.64 0.002671330455 7530329.157 0.05655293196 0.007046566971 6.256978179e-15 2.650416447e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 8.345862786e-07 7510907.233 64.33859392 6.62851626 0.004238003802 428882.9373 211126.8423 74.22964049 810330.791 202655.5898 32.03389749 53.5536203 7.232804263 0.04225163883 244.5268952 5360.16394 0.1853179299 5397.302116 0.1708078486 91.27090132 107640.3329 9.041084967 0.02733711628 0.5377013048 2340.882699 6619.721388 0.08881142114 6.875213294 0.0001296958948 0.002230293193 4.428898227e-13 1284.10404 2.53456419e-08 733.5380437 6.44783171e-06 9.232090246e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.889504837 0.0002250390261 1813.760642 0.000126199874 0 131.3767703 3460.631145 3.939281046e-17 29.49928516 7.752850747e-09 73.99115547 5.614427064e-11 50.18444376 376.0145466 2.883083192e-09 2371737.896 81.66205373 0.0004873931581 2.370555908e-13 6.334090436e-05 2.027592746e-08 181.7830009 0.04864048407 0.0002587385358 0.7451623731 7.665933703e-11 3.111672213e-06 6.846181464e-11 3.877861158e-24 0 1.479410256e-06 8.846414272e-06 0 4.715267747e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0.1354394604 7.241745049e-11 0 0 1.601530275e-26 0 0 0 0 1.194515602e-25 0 0.001334744073 1.334704942e-12 4.229537204e-27 0 0 4.415465435e-07 0 1.925725382e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [Sphere1/nonrotated.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9 19 6 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 29 89 33 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 1 0 0 0 1 0 0 1 32 105 56 0 2 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 33 126 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 29 124 27 1 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 1 2 0 20 147 39 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 21 144 29 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 9 165 34 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 15 203 32 1 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 1 1 11 218 37 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 3 1 0 4 204 32 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 2 1 0 1 249 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 5 232 18 4 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 1 4 264 17 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 1 1 4 266 20 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 1 0 0 0 0 1 4 271 10 2 2 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 1 0 3 4 264 16 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 1 0 0 3 284 5 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 1 3 289 12 2 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 1 0 0 2 4 279 12 3 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 1 0 2 8 302 11 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 4 292 4 3 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 1 0 1 2 9 300 7 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 5 337 7 2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 4 315 9 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 6 324 6 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 1 0 2 4 339 7 2 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 1 0 0 9 339 2 3 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 1 3 299 4 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 5 326 2 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 1 0 0 0 2 341 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 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 1 6 358 10 4 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 1 0 0 0 2 5 355 7 1 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 1 0 0 1 4 337 9 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 3 4 324 8 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 311 7 3 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 2 7 328 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 4 299 7 4 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 4 5 315 7 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 6 351 6 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 3 6 345 8 2 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 304 9 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 25 49 46 333 29 24 20 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 31 112 167 138 110 347 84 104 89 58 12 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 58 173 266 315 276 215 390 192 196 203 189 117 38 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 69 236 411 530 603 486 364 521 311 330 436 347 264 138 47 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 45 267 536 743 939 937 893 608 647 472 567 625 606 520 350 157 33 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 30 249 498 914 1244 1518 1539 1354 897 856 748 942 1077 977 828 584 371 138 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 9 142 458 933 1436 2048 2394 2490 2135 1583 1310 1165 1523 1633 1573 1242 881 584 285 97 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 67 342 786 1374 2152 3071 3698 3850 3369 2393 1892 1963 2394 2509 2285 1818 1325 929 489 202 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 19 192 614 1125 2065 3243 4534 5347 5690 5114 3657 3048 3228 3607 3623 3264 2570 1921 1316 748 424 140 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 95 421 897 1680 2884 4627 6409 7924 8485 7873 6261 5353 5566 5900 5502 4832 3765 2645 1665 1061 638 290 64 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 18 243 612 1247 2187 3877 6218 8860 10633 11785 11916 10146 10254 10076 9295 8109 6855 5172 3436 2208 1491 843 406 144 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 116 395 881 1642 2875 4757 7743 10729 12895 15255 17066 17949 22846 20785 14925 12022 9743 7202 4465 2957 1914 1120 580 265 82 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 16 228 554 1149 2046 3618 6045 9285 11994 14904 18680 24344 35372 59572 49500 24753 16255 12489 9388 6023 3711 2211 1461 793 381 145 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 2 101 366 802 1476 2471 4393 6887 10423 13185 17450 22776 35134 82064 211477 159289 45251 20681 14113 10702 7070 4371 2741 1683 975 513 257 69 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 21 195 514 980 1846 3018 5084 7819 11155 14557 19278 27212 53028 266529 1217493 807369 102597 26864 15994 11673 8380 5122 3081 1940 1242 701 331 138 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 72 330 619 1210 2012 3473 5700 8756 11692 15069 20536 30631 78692 1603361 14492195 7163187 253544 35116 17797 12259 9085 5657 3421 2213 1455 844 425 201 54 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 19 155 423 792 1447 2445 4027 6279 9225 11887 15674 20689 32219 95270 4240457 31682995 18255481 444594 40453 17926 12636 9325 6197 3855 2405 1530 919 554 294 105 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2 55 240 518 905 1548 2796 4365 6596 9116 11662 14985 19879 29878 84148 4192876 28053794 16589050 408599 37062 17069 12226 9486 6665 4104 2508 1652 1097 622 334 166 35 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 6 103 320 596 1115 1775 2958 4558 6735 8866 11065 14302 17997 25401 52624 1150340 7161343 3395340 155550 26811 15346 11536 8633 6497 4102 2605 1675 1086 679 403 166 58 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 39 152 323 630 1148 1859 2810 4504 6419 8154 10063 12316 15219 19462 29299 129880 410197 264847 45353 18656 13003 10014 8081 5969 3813 2459 1660 1156 663 424 224 76 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 4 64 209 390 648 1183 1764 2690 4075 5625 7029 8834 10517 12351 14475 18237 35992 62576 47350 20558 13039 10179 8327 6414 4977 3397 2279 1571 1074 724 445 238 133 38 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 14 98 240 402 695 1040 1597 2385 3325 4512 5910 7094 8362 9586 10688 11805 15798 20067 16470 11175 8616 7438 6064 4858 3758 2596 2016 1401 869 679 390 241 143 43 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 1 25 104 230 344 658 929 1364 1888 2571 3450 4181 5149 6032 6760 6876 7140 7778 8676 7518 6173 5420 4841 4099 3422 2733 2068 1581 1103 838 557 366 221 153 65 17 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 6 49 96 194 358 471 764 1086 1468 1924 2377 2946 3405 3832 4130 4109 4116 3891 4149 3604 3433 3086 2853 2627 2243 1886 1525 1173 892 658 453 332 197 107 65 25 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 13 52 89 189 279 431 568 802 1072 1340 1559 1893 2078 2368 2384 2435 2332 2094 1985 1844 1822 1771 1722 1624 1380 1217 1010 791 616 519 353 238 166 114 61 29 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 15 40 92 168 213 316 390 536 643 840 1017 1115 1264 1311 1300 1270 1222 1080 989 880 955 1016 953 972 795 775 637 535 465 355 279 200 145 86 62 30 8 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 4 12 48 71 111 145 196 300 346 423 515 607 669 702 751 710 698 601 549 524 421 457 485 548 464 472 454 377 313 275 223 160 135 111 64 46 25 9 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 1 18 24 56 85 106 142 182 206 264 324 345 313 371 385 371 344 293 263 269 238 247 243 261 266 268 229 233 198 156 133 112 103 67 41 32 23 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 10 13 26 40 46 58 101 104 135 159 170 168 189 190 175 149 160 150 130 124 125 113 135 148 134 135 117 112 115 76 74 64 61 41 36 27 12 13 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3 9 16 24 37 40 42 46 65 89 78 89 109 98 84 70 88 82 50 65 55 46 65 77 67 56 60 58 54 52 50 38 31 29 24 18 8 2 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 1 4 14 11 15 11 19 27 27 34 43 36 41 38 45 37 33 26 25 38 27 18 24 26 33 31 23 31 27 19 22 13 21 17 10 11 7 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 2 5 9 8 7 11 19 15 13 22 15 8 15 11 8 13 11 12 7 19 8 12 11 10 13 12 20 9 8 8 7 6 3 4 2 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 2 3 2 3 0 6 2 1 2 5 9 2 9 4 2 4 3 2 3 2 6 3 4 6 3 2 1 1 2 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 1 0 1 2 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/profile_x.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/profile_x.dat new file mode 100644 index 0000000000..6b2d1d4863 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/profile_x.dat @@ -0,0 +1,358 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: profile_x +# position: 49.4198 0 -35.0741 +# title: x [m] monitor +# Ncount: 153447624 +# filename: profile_x.dat +# statistics: X0=-0.0149376; dX=0.0713873; +# signal: Min=0; Max=1.25915e+08; Mean=8.87464e+06; +# values: 2.66239e+09 2.63647e+08 2313 +# xvar: x +# yvar: (I,I_err) +# xlabel: x [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: x I I_err N +-0.1495 2496548.967 2696581.082 6 +-0.1485 0.001247813196 0.001393598159 4 +-0.1475 37785672.25 30971126.09 8 +-0.1465 16665088.43 11483136.57 7 +-0.1455 6.375518079e-10 7.254343782e-10 3 +-0.1445 3.130741893e-21 3.130741893e-21 1 +-0.1435 33242043.63 25599727.23 7 +-0.1425 0.0001899769102 0.0002079693462 5 +-0.1415 2000027.379 2309385.384 3 +-0.1405 1.250189373e-06 1.531163023e-06 2 +-0.1395 3101488.989 3798532.733 2 +-0.1385 4218523.989 4446703.798 9 +-0.1375 17.53220849 19.60153416 4 +-0.1365 31840193.49 28963245.6 6 +-0.1355 2546029.596 2737195.35 4 +-0.1345 485781.9735 491298.9408 8 +-0.1335 15761.45464 15921.92954 5 +-0.1325 716162.3333 754399.3369 9 +-0.1315 3391446.737 3663180.928 6 +-0.1305 863253.795 650783.994 6 +-0.1295 5384198.897 5646825.69 10 +-0.1285 2385890.441 2530379.951 8 +-0.1275 8673532.518 5827522.715 7 +-0.1265 2136177.114 2283669.26 7 +-0.1255 2.962795603 3.628655127 2 +-0.1245 10814.50215 11470.36571 8 +-0.1235 7445841.662 7189782.063 12 +-0.1225 989.8926886 1084.37311 5 +-0.1215 0.1190552744 0.1112579698 4 +-0.1205 22674131.45 24239666.12 7 +-0.1195 1118.967575 1208.623117 6 +-0.1185 7520531.405 8238213.888 5 +-0.1175 807154.8013 862265.736 7 +-0.1165 8455999.103 8912616.822 9 +-0.1155 110237.0826 109928.6094 5 +-0.1145 8.827566898e-13 1.014877477e-12 3 +-0.1135 1480.254311 1597.620552 6 +-0.1125 8870192.371 9170586.546 11 +-0.1115 27788351.05 29920227.44 6 +-0.1105 297407.2885 307182.6924 6 +-0.1095 3.62912386e-22 3.62912386e-22 1 +-0.1085 314390.8288 255691.3533 9 +-0.1075 180.8842342 202.2347219 4 +-0.1065 102790.9056 104627.1068 8 +-0.1055 1536857.081 1642969.328 7 +-0.1045 19186175.6 22079934.09 3 +-0.1035 1227755.429 1268378.008 5 +-0.1025 343868.4702 384446.5865 4 +-0.1015 6.337550629 6.158133689 9 +-0.1005 2474502.74 1628704.52 10 +-0.0995 8182655.189 8836765.508 6 +-0.0985 11389906.41 12167230.58 7 +-0.0975 8100408.834 8515343.394 9 +-0.0965 9382223.553 7042503.135 9 +-0.0955 1635224.993 1828237.122 4 +-0.0945 3525966.712 3769416.969 7 +-0.0935 1273940.537 1376013.047 6 +-0.0925 1395924.723 1529158.919 5 +-0.0915 52570902.78 56775948.3 6 +-0.0905 6222431.488 5551898.467 10 +-0.0895 55346.79494 59779.09861 6 +-0.0885 1363584.26 1446292.192 8 +-0.0875 99696960.69 107684493.7 6 +-0.0865 1040.692843 966.205786 9 +-0.0855 1945306.486 1327040.201 8 +-0.0845 33899360 24480832.74 10 +-0.0835 1.857271518e-13 2.144592422e-13 3 +-0.0825 11853868.15 12985257.99 5 +-0.0815 1272.313511 1249.097271 9 +-0.0805 1763.257141 1969.887866 4 +-0.0795 110937.5046 121525.9475 5 +-0.0785 69948.67593 65400.20164 5 +-0.0775 313773.3021 342811.4768 5 +-0.0765 4031483.184 4255477.499 8 +-0.0755 6009782.796 6165304.584 11 +-0.0745 7211119.499 4719861.778 7 +-0.0735 5546645.855 5920792.871 7 +-0.0725 7091017.936 4320184.05 15 +-0.0715 4557.039134 3798.665611 10 +-0.0705 42584710.94 42636423.88 12 +-0.0695 6753140.813 7397692.874 5 +-0.0685 6190382.48 6525221.553 9 +-0.0675 42690524.87 44754370.06 9 +-0.0665 46065414.35 23259621.92 17 +-0.0655 52975158.99 36654690.58 15 +-0.0645 918.0399693 973.7180043 8 +-0.0635 137.126158 143.7018247 8 +-0.0625 32858852.08 34353951.02 10 +-0.0615 39516108.51 24989392.41 10 +-0.0605 2306610.024 2275404.154 15 +-0.0595 525670.4572 547115.0888 12 +-0.0585 3330810.867 2374616.209 10 +-0.0575 25742291.44 26886886.8 11 +-0.0565 23621078.22 24306855.46 11 +-0.0555 246194.6019 248461.1809 13 +-0.0545 974809.8982 1067847.782 5 +-0.0535 21744646.33 21542277.35 9 +-0.0525 36751677.62 23392132.26 18 +-0.0515 7921.306347 5893.743812 8 +-0.0505 1803013.062 1897544.193 8 +-0.0495 3470764.943 3471193.412 13 +-0.0485 23294419.89 22054521.88 13 +-0.0475 22242156.16 17552659.88 15 +-0.0465 86915644.91 80480752.46 12 +-0.0455 8273435.872 8720162.908 9 +-0.0445 14.66330152 14.17620115 10 +-0.0435 1999372.783 2087697.586 10 +-0.0425 1555665.626 1025041.635 15 +-0.0415 439137.8619 461290.1176 9 +-0.0405 59243049.65 38181575.04 14 +-0.0395 1427851.963 1499509.907 9 +-0.0385 37511763.32 34402057.47 10 +-0.0375 35240738.47 20260042.79 13 +-0.0365 700734.6131 708777.2963 10 +-0.0355 111704.32 116382.6947 8 +-0.0345 208.6642102 217.9407771 11 +-0.0335 58539656.39 39392029.82 12 +-0.0325 9224573.005 9427485.532 11 +-0.0315 585591.1332 609502.5717 12 +-0.0305 3644385.68 3865454.741 8 +-0.0295 15590125.87 16226716.17 12 +-0.0285 155.2201482 152.0845198 10 +-0.0275 35835402.82 37631236.63 8 +-0.0265 1492544.306 976620.5352 11 +-0.0255 519.4293236 483.7170905 6 +-0.0245 0.0005171336792 0.0005585681723 6 +-0.0235 29298978.71 21551375.86 13 +-0.0225 4693820.71 5069894.924 6 +-0.0215 107.7448646 84.9669929 14 +-0.0205 14.26714643 15.62885478 5 +-0.0195 11789553.3 9036958.792 8 +-0.0185 10746465.87 10982338.55 10 +-0.0175 18949505.46 17541121.95 10 +-0.0165 4190103.488 3703844.377 11 +-0.0155 9651190.797 10236633.66 8 +-0.0145 43602828 44943931.26 16 +-0.0135 5849023.319 4318796.381 11 +-0.0125 20614670.53 13821952.64 8 +-0.0115 6238614.329 4617799.498 11 +-0.0105 23759518.26 23026736.61 13 +-0.0095 303835.8663 310282.5855 14 +-0.0085 6249566.729 5841639.05 9 +-0.0075 1.875817793 1.81443558 10 +-0.0065 75.46553311 79.14455005 10 +-0.0055 88.21421686 72.22106711 8 +-0.0045 99.41976982 104.4266511 9 +-0.0035 5313567.413 5426239.927 14 +-0.0025 2830438.16 2407772.982 8 +-0.0015 20249503.37 14051730.66 10 +-0.0005 26777835.02 15294587.49 13 +0.0005 18595033.95 18092362 10 +0.0015 2274745.723 2405319.582 6 +0.0025 224181.4824 237779.0863 8 +0.0035 2881431.032 2124676.4 11 +0.0045 36580728.43 38288700.05 10 +0.0055 1984146.905 1985602.537 14 +0.0065 0.003190063889 0.002622052797 10 +0.0075 736161.0222 528269.3425 12 +0.0085 288.8519781 245.6637573 6 +0.0095 17691316.67 17727278.35 11 +0.0105 0.01148946642 0.008884809685 10 +0.0115 40910158.67 26003949.3 11 +0.0125 8173521.074 6139689.122 10 +0.0135 31633990.4 27903853.28 13 +0.0145 2248391.948 2245255.682 9 +0.0155 7433686.959 7834132.611 9 +0.0165 414889.6153 428299.8846 14 +0.0175 144066.1881 124173.3925 8 +0.0185 1.493370069e-06 1.585900098e-06 7 +0.0195 33870172.23 37102913.79 5 +0.0205 354977.3562 379379.0818 7 +0.0215 4035165.571 3967671.689 16 +0.0225 11609084.75 6776496.69 12 +0.0235 30307.48341 22823.8927 6 +0.0245 4562498.448 3341516.624 15 +0.0255 23810.51536 22590.79875 7 +0.0265 5026584.616 3761032.479 8 +0.0275 5153279.071 5566176.057 6 +0.0285 29478664.59 22189010.51 18 +0.0295 7903399.05 8212922.839 11 +0.0305 2815262.957 1767257.891 16 +0.0315 765473.0092 782634.2225 8 +0.0325 19.71234373 19.70913823 10 +0.0335 14685077.85 9999726.431 8 +0.0345 3268976.633 2613845.341 12 +0.0355 9932598.4 10880616.34 5 +0.0365 1785433.24 1908679.878 7 +0.0375 425205.6782 448188.6776 9 +0.0385 16273373.34 12422570.55 12 +0.0395 32200538.5 25587107.33 13 +0.0405 6168532.332 6436811.431 10 +0.0415 0.02408968446 0.01897705852 5 +0.0425 903927.1896 810211.0541 10 +0.0435 358392.9747 373614.4662 8 +0.0445 2905083.079 2249014.004 8 +0.0455 14723381.76 11148473.34 12 +0.0465 26234864.58 25948368.21 16 +0.0475 42813.41905 44055.65479 9 +0.0485 2340178.775 2466760.46 9 +0.0495 199789.6072 206661.9528 14 +0.0505 7731878.595 7484344.305 11 +0.0515 129441.6878 139532.2903 6 +0.0525 843059.5638 637340.1584 9 +0.0535 16574.82533 17580.25654 8 +0.0545 31244831.41 33109825.77 8 +0.0555 125915140.2 87321451.59 11 +0.0565 2921504.782 3098723.734 8 +0.0575 7080172.208 8671404.598 2 +0.0585 855368.8657 907230.2437 8 +0.0595 20253.37567 21876.14123 6 +0.0605 25680626 20854642.43 2 +0.0615 16424941.13 13064801.44 11 +0.0625 56192920.26 59592134.92 8 +0.0635 4231653.863 4523654.439 7 +0.0645 903195.6599 599717.7194 7 +0.0655 6277335.277 7018273.186 4 +0.0665 10048881.48 6101188.809 8 +0.0675 18673802.45 20877944.87 4 +0.0685 1008730.392 1012165.253 11 +0.0695 3.490006255e-05 4.029912005e-05 3 +0.0705 244.0946981 281.8547259 3 +0.0715 600076.3489 657327.8228 5 +0.0725 10.55456802 8.790817249 3 +0.0735 16784005.03 17251440.53 10 +0.0745 118158.1164 127624.3372 6 +0.0755 1.418929324 1.532618498 6 +0.0765 9175587.501 6902179.282 6 +0.0775 0.02086589076 0.02409234899 3 +0.0785 43548441.95 47672233.53 5 +0.0795 39460.18282 43403.86089 4 +0.0805 1697786.023 1960429.678 3 +0.0815 925.2507739 986.5579489 7 +0.0825 6295726.133 7269678.355 3 +0.0835 6193303.826 4602063.548 8 +0.0845 6241263.655 6598531.936 3 +0.0855 6355655.814 6961017.993 5 +0.0865 56763.38806 42447.48551 10 +0.0875 9060732.111 6440370.152 7 +0.0885 27879736.18 29464406.39 8 +0.0895 3.106125976 3.34724356 6 +0.0905 2126654.705 2329574.541 5 +0.0915 6829.11634 7635.182441 4 +0.0925 0.01371224887 0.0153288021 4 +0.0935 6050503.515 6050503.515 1 +0.0945 91805.93598 75863.3832 8 +0.0955 1.185625598e-14 1.185625598e-14 1 +0.0965 0.0009049317025 0.0009407965667 5 +0.0975 2.14246846e-07 2.069122961e-07 3 +0.0985 19471017.93 16918345.74 5 +0.0995 716389.4055 747909.9764 6 +0.1005 130418.3229 138885.3647 7 +0.1015 274.1241674 296.0879413 6 +0.1025 893260.0217 941814.1074 7 +0.1035 21585319.9 15216433.76 10 +0.1045 3058017.528 3222584.476 7 +0.1055 1100.406572 1205.420707 5 +0.1065 0.3339729582 0.3606707766 6 +0.1075 7320217.972 5540807.411 10 +0.1085 18506417.37 20183235.41 4 +0.1095 308.2871927 327.1020916 6 +0.1105 5753.792077 6432.935105 4 +0.1115 6690664.747 6633177.404 5 +0.1125 646553.9765 722869.3213 4 +0.1135 24866.33718 24259.38881 6 +0.1145 11553471.43 12172402.93 9 +0.1155 30935987.94 33888676.77 5 +0.1165 0.0008328312642 0.0009122998803 5 +0.1175 1702344.315 1859000.607 5 +0.1185 1317.536206 1466.381022 4 +0.1195 0.0008772915782 0.0009808409161 4 +0.1205 201300.5163 225060.8191 4 +0.1215 3231.873959 3490.822751 6 +0.1225 0 0 0 +0.1235 22501140.77 24648764.47 5 +0.1245 5.606866859e-11 6.806170208e-11 2 +0.1255 7382531.469 7974044.835 6 +0.1265 199988.7111 216003.9354 6 +0.1275 4.368957207e-05 5.035661608e-05 3 +0.1285 9.908093463e-26 9.908093463e-26 1 +0.1295 1297424.745 1421257.563 5 +0.1305 15.52696885 16.76894868 6 +0.1315 8393405.167 9554413.869 3 +0.1325 40491.3656 43731.70524 6 +0.1335 7969780.139 8209062.719 6 +0.1345 3299.374053 2679.808511 8 +0.1355 14123.02858 11235.37355 5 +0.1365 2858.025829 2228.737899 6 +0.1375 11262.79814 12040.43766 7 +0.1385 58.50430531 62.50283766 7 +0.1395 6764.890943 7231.835046 7 +0.1405 0.00134092499 0.00148929837 4 +0.1415 70623.30703 78959.25724 4 +0.1425 0.0001159766555 0.0001339183066 3 +0.1435 17243.70111 18724.36014 3 +0.1445 998.8084215 1153.324622 3 +0.1455 19560757.96 16538186.65 7 +0.1465 7793967.253 7349657.743 8 +0.1475 2238.874637 2399.332804 6 +0.1485 994.5516444 1218.05778 2 +0.1495 0.1971396326 0.1971396326 1 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/profile_y.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/profile_y.dat new file mode 100644 index 0000000000..36c32bbc2a --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/profile_y.dat @@ -0,0 +1,358 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: profile_y +# position: 49.4198 0 -35.0741 +# title: y [m] monitor +# Ncount: 153447624 +# filename: profile_y.dat +# statistics: X0=0.00896999; dX=0.0763887; +# signal: Min=9.00103e-12; Max=1.0117e+08; Mean=8.87464e+06; +# values: 2.66239e+09 2.63647e+08 2313 +# xvar: y +# yvar: (I,I_err) +# xlabel: y [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: y I I_err N +-0.1495 352515.7757 376610.2093 7 +-0.1485 3.086650936e-07 3.335915225e-07 5 +-0.1475 4.243285709e-07 4.648286585e-07 5 +-0.1465 343860.0427 376679.8034 5 +-0.1455 976233.7663 1027519.388 9 +-0.1445 8.812457519e-05 9.85262703e-05 4 +-0.1435 16.32560706 18.85118726 3 +-0.1425 1423086.798 1558376.621 5 +-0.1415 0.08214669935 0.0865592979 9 +-0.1405 2340354.39 2422309.792 14 +-0.1395 16362.30548 17247.38154 9 +-0.1385 19297598.74 20843504.25 6 +-0.1375 21157782.32 25912885.39 2 +-0.1365 0.0597089008 0.06293747002 9 +-0.1355 10156427.63 7823848.609 5 +-0.1345 5055800.034 5279306.306 11 +-0.1335 8455865.565 9453222.866 4 +-0.1325 4563048.243 4809845.365 8 +-0.1315 15573.09953 17411.25458 4 +-0.1305 0.03457485328 0.03696192874 7 +-0.1295 7432581.58 7834147.103 9 +-0.1285 10307141.04 11008855.05 7 +-0.1275 100319.1714 112137.2737 4 +-0.1265 20409854.11 22818910.6 4 +-0.1255 2835768.513 3170485.568 4 +-0.1245 1635225.016 1723678.488 9 +-0.1235 5999909.884 4132074.336 6 +-0.1225 5.420043105e-08 4.440965277e-08 5 +-0.1215 10.46312297 9.840422451 8 +-0.1205 2555168.29 2722049.608 7 +-0.1195 1662.548739 1795.757631 6 +-0.1185 388.8690477 448.9487499 3 +-0.1175 7100515.549 5872343.168 12 +-0.1165 82.86447856 95.683658 3 +-0.1155 115017.3122 123117.8985 5 +-0.1145 2840991.488 2958359.224 7 +-0.1135 15592442.03 19092979.28 2 +-0.1125 48.87188106 35.08983164 11 +-0.1115 13400008.63 13250517.18 4 +-0.1105 26223907.66 22191656.51 7 +-0.1095 36507511.05 39028169.19 7 +-0.1085 2989560.696 2426270.287 7 +-0.1075 30963998.23 25437875.16 11 +-0.1065 37183.16385 39324.24811 8 +-0.1055 0.0008998145768 0.0009345779634 8 +-0.1045 12940625.32 9300336.201 8 +-0.1035 382723.8584 363122.3332 15 +-0.1025 0.008723504465 0.009422454711 6 +-0.1015 17631537.37 18847492.58 5 +-0.1005 457921.6547 443598.2606 12 +-0.0995 26429881.93 27704990.51 10 +-0.0985 6072303.585 6374716.872 9 +-0.0975 21911458.44 20950299.26 4 +-0.0965 8777.997742 9379.395666 7 +-0.0955 8373.470443 8740.931102 10 +-0.0945 35915898.56 30555025.79 7 +-0.0935 3.547334185e-05 3.885831752e-05 5 +-0.0925 7452165.599 8189987.56 4 +-0.0915 378999.6816 397436.2843 10 +-0.0905 6190373.231 6565877.64 8 +-0.0895 661.8687176 645.151964 8 +-0.0885 45.58989208 49.21759684 6 +-0.0875 150918.1131 168206.2481 4 +-0.0865 6610845.066 5794363.114 12 +-0.0855 1.490499659 1.632752272 5 +-0.0845 35694132.72 28845792.67 10 +-0.0835 0.001338464124 0.001133969845 4 +-0.0825 1377117.772 1061137.636 7 +-0.0815 1931110.343 1452420.369 9 +-0.0805 7520756.313 8039670.786 7 +-0.0795 9213.2133 7308.139275 10 +-0.0785 2777576.448 3105412.925 4 +-0.0775 71622.11664 74067.17513 10 +-0.0765 5526134.123 5833616.396 8 +-0.0755 19362960.96 17911539.88 7 +-0.0745 1717059.396 1301047.652 9 +-0.0735 2172259.305 2322241.994 7 +-0.0725 28.99636334 25.15529201 8 +-0.0715 118162.6346 132103.3639 4 +-0.0705 17.13029996 18.50127069 6 +-0.0695 296.6402694 311.1183038 10 +-0.0685 24594121.34 24519161.25 6 +-0.0675 5906469.894 6310737.291 7 +-0.0665 0.001365933646 0.001424310475 7 +-0.0655 15505072.79 12756299.18 6 +-0.0645 48357508.4 29156989.98 10 +-0.0635 57850.7826 60828.88648 7 +-0.0625 0.000845405191 0.0008695672888 10 +-0.0615 10148.6954 10947.31427 6 +-0.0605 208241.955 163149.3252 12 +-0.0595 94045.64874 68725.70218 10 +-0.0585 3914963.246 4794831.157 2 +-0.0575 23233064.16 17450272.34 8 +-0.0565 11696691.44 8873276.485 10 +-0.0555 5250329.214 5561141.913 8 +-0.0545 3762657.762 3711894.205 7 +-0.0535 142308.664 135698.2658 8 +-0.0525 253.4702742 292.6822614 3 +-0.0515 486295.1215 525258.7367 6 +-0.0505 517635.611 457839.7347 11 +-0.0495 5292271.7 4854593.448 7 +-0.0485 29808335.44 28829017.06 10 +-0.0475 18713283.83 13950329.52 8 +-0.0465 98375.11956 93791.86198 10 +-0.0455 18105354.74 14644926.77 4 +-0.0445 8464596.93 6494613.782 8 +-0.0435 1626564.128 1463094.37 6 +-0.0425 3.583534384e-09 3.561902989e-09 6 +-0.0415 77520693 57129953.48 13 +-0.0405 43652386.8 44758684.47 9 +-0.0395 4883603.102 5343279.155 5 +-0.0385 0.002638582572 0.002914608694 4 +-0.0375 10536488.1 9701105.813 12 +-0.0365 932231.6331 982266.1422 9 +-0.0355 37443.56202 40420.76135 6 +-0.0345 191.1522712 190.3679657 10 +-0.0335 9.001033495e-12 9.001033495e-12 1 +-0.0325 517079.6639 545041.2096 9 +-0.0315 0.0009482085948 0.000971854705 5 +-0.0305 19354166.27 20162044.76 9 +-0.0295 22158124.61 23142689.89 11 +-0.0285 2496853.29 2696571.711 6 +-0.0275 2567901.389 2105492.976 11 +-0.0265 5381673.776 3920332.954 13 +-0.0255 28205636.11 23897165.15 7 +-0.0245 27893475.88 29015289.38 11 +-0.0235 61.92209793 66.19750291 7 +-0.0225 1343381.917 1115524.156 8 +-0.0215 0.02183722664 0.01925935551 10 +-0.0205 0.3102220938 0.3042590103 12 +-0.0195 2373076.598 2108846.257 7 +-0.0185 35829.05101 31304.1216 15 +-0.0175 5301335.183 4811204.248 11 +-0.0165 9266268.904 9307833.656 15 +-0.0155 2242536.181 1660057.703 12 +-0.0145 2696530.81 2549836.612 7 +-0.0135 20702807.44 20266117.52 10 +-0.0125 738268.3899 770598.4946 11 +-0.0115 3.565814451 3.807658961 5 +-0.0105 0.1534207656 0.1602511057 9 +-0.0095 20545868.7 18752066.39 12 +-0.0085 51870.31091 55015.5453 8 +-0.0075 5514657.21 3918086.964 13 +-0.0065 2007382.856 2129151.024 8 +-0.0055 24374227.48 24366621.71 8 +-0.0045 205909.2283 152981.6106 9 +-0.0035 29390573.36 25212174.39 6 +-0.0025 883119.6085 917123.7512 12 +-0.0015 27726840.67 30346100.67 5 +-0.0005 34547.66521 36643.31002 8 +0.0005 16390329.61 17213867.27 9 +0.0015 2132007.706 2302831.518 6 +0.0025 8307.161226 8667.937154 9 +0.0035 4445506.322 4625159.491 7 +0.0045 5395608.424 5560556.098 8 +0.0055 2248801.733 2428983.485 6 +0.0065 17845936.12 13483658.91 8 +0.0075 59188843.51 58933423.85 10 +0.0085 9942924.694 9822998.268 17 +0.0095 7713451.7 5823511.258 15 +0.0105 81.34979493 71.18817033 9 +0.0115 646672.8599 691192.6388 7 +0.0125 5147444.531 3834375.665 11 +0.0135 4934174.752 5272214.177 7 +0.0145 8381.470421 8790.460561 10 +0.0155 101170032.8 105730829.1 8 +0.0165 7979977.335 7511414.881 9 +0.0175 28720735.42 18995781.08 11 +0.0185 25943000.75 27694576.53 5 +0.0195 20825341.3 15963169.18 13 +0.0205 16906968.49 10531466.23 15 +0.0215 26537461.61 27184133.96 9 +0.0225 6644745.707 6682009.606 8 +0.0235 13307222.65 10120974.47 14 +0.0245 9353284.513 7761671.451 8 +0.0255 5414866.537 4439622.79 10 +0.0265 320071.4611 335693.4019 10 +0.0275 16946440.33 17990818.74 6 +0.0285 16941526.83 13431545.1 8 +0.0295 10998616.03 7140958.624 12 +0.0305 749201.2611 865091.004 3 +0.0315 1063766.206 1147629.407 6 +0.0325 24680069.76 14340245.61 18 +0.0335 4693811.157 5069895.219 6 +0.0345 8083602.9 5928627.373 14 +0.0355 33265091.52 24358902.88 11 +0.0365 7238527.504 6389689.193 13 +0.0375 28489001.66 25658810.18 7 +0.0385 47660246.81 35790672.23 11 +0.0395 3205623.692 3426955.874 7 +0.0405 1697785.163 1789619.708 9 +0.0415 506268.4947 385577.7569 9 +0.0425 1469531.863 891370.9002 10 +0.0435 5077315.849 5426798.774 7 +0.0445 614729.9164 470456.0687 10 +0.0455 11403977.08 12071626.93 8 +0.0465 1194246.588 1248922.622 9 +0.0475 616458.6817 637235.4477 7 +0.0485 43175263.15 33016583.59 7 +0.0495 7890.599918 6379.237049 7 +0.0505 4274.076505 4778.562803 4 +0.0515 2940821.398 3099897.806 9 +0.0525 8078619.765 8515612.933 9 +0.0535 6398765.676 7009496.57 5 +0.0545 4735130.636 5185578.891 5 +0.0555 77.13661998 58.93596954 4 +0.0565 29974616.66 24102915.21 9 +0.0575 10610938.85 8299317.071 11 +0.0585 6464296.925 7097486.638 4 +0.0595 43634420.6 45296069.33 12 +0.0605 10858.02203 7415.273722 12 +0.0615 11268324.75 11888814.83 7 +0.0625 17762.4004 19453.4658 5 +0.0635 27476.24629 28046.6067 9 +0.0645 29081.34687 21482.2317 13 +0.0655 42529214.15 35426490.54 9 +0.0665 5507599.585 5567673.214 7 +0.0675 199672.6063 211765.8909 8 +0.0685 11447805.91 6907392.569 11 +0.0695 22633269.82 15341505.43 9 +0.0705 19403175.39 11391747.92 14 +0.0715 39092931.46 37961812.82 7 +0.0725 0.004917171671 0.00513207845 7 +0.0735 33.36456489 37.27380347 4 +0.0745 18051595.49 13365089.99 10 +0.0755 77043454.27 81203215.56 9 +0.0765 17440308.73 16609792.45 10 +0.0775 7751063.049 5708899.912 12 +0.0785 59217350.58 44036633.54 8 +0.0795 600060.4979 657328.546 5 +0.0805 0.009538991124 0.01168283046 2 +0.0815 8294147.842 9061318.999 5 +0.0825 1066489.205 1066489.205 1 +0.0835 8236830.145 8167117.416 13 +0.0845 2044804.908 2070529.92 10 +0.0855 2921139.938 3199938.802 5 +0.0865 1.863681073e-07 2.011445585e-07 6 +0.0875 41974669.01 35070911.29 7 +0.0885 5989000.023 4444720.066 13 +0.0895 475548.6576 504395.5209 8 +0.0905 3392.199764 3557.768724 10 +0.0915 16412.72727 17369.32373 8 +0.0925 3693491.456 3948504.734 7 +0.0935 1.448102998e-06 1.589517194e-06 4 +0.0945 18076069.71 19801284.58 5 +0.0955 7146675.252 7640095.338 7 +0.0965 8340.173137 9126.546868 5 +0.0975 2937017.414 3075036.75 9 +0.0985 18778815.9 18194089.76 7 +0.0995 15.43913857 16.67616548 6 +0.1005 30939702.22 33071879.65 7 +0.1015 5.005426206e-11 6.130370074e-11 2 +0.1025 11329.25641 11468.21933 8 +0.1035 5.513399126e-05 5.95487749e-05 6 +0.1045 2.073158181e-05 2.317504903e-05 4 +0.1055 4285785.848 4443183.257 8 +0.1065 3067861.404 3273603.398 5 +0.1075 18612253.03 17560608.66 8 +0.1085 206.4755356 200.3516843 7 +0.1095 3129090.912 2813164.809 12 +0.1105 6137521.688 6629277.674 6 +0.1115 3969263.233 4210031.759 8 +0.1125 13450.76247 14040.87664 7 +0.1135 129332.2064 136175.1041 9 +0.1145 14535.97462 16249.33255 4 +0.1155 14.50536013 15.13064856 8 +0.1165 11631310.16 12433410.05 7 +0.1175 25155246.88 26892089.65 7 +0.1185 96015.28524 76920.07142 10 +0.1195 11168.32238 11431.35126 8 +0.1205 4.660012755 5.707326723 2 +0.1215 4373427.549 3992092.751 6 +0.1225 13690479.59 14630152.68 7 +0.1235 996.2765071 998.0838818 5 +0.1245 1696467.124 1713265.194 13 +0.1255 412643.2419 433696.7939 8 +0.1265 2126605.722 2455589.273 3 +0.1275 0.1237379038 0.1114010382 6 +0.1285 15089.52056 17423.87752 3 +0.1295 2228258.949 2381801.001 7 +0.1305 2.77875119e-08 2.900778961e-08 4 +0.1315 545.7443584 630.1713044 3 +0.1325 93356.56278 99802.36364 7 +0.1335 10285533.44 7863732.219 4 +0.1345 106429.1487 113758.9569 7 +0.1355 742112.6239 765039.0704 7 +0.1365 189544.7718 207635.8435 5 +0.1375 493412.1274 401529.8968 5 +0.1385 41091153.36 42623362.74 12 +0.1395 665864.4511 671617.3165 9 +0.1405 439868.4197 489130.841 4 +0.1415 77051247.53 82371248.42 7 +0.1425 54261729.76 56753359.31 6 +0.1435 0.000158135244 0.0001768005776 4 +0.1445 2110.685789 2270.878308 4 +0.1455 0.001134818902 0.001243123146 5 +0.1465 7103.963287 7942.47241 4 +0.1475 0.009185651249 0.01054830728 3 +0.1485 40489.21255 43283.24044 7 +0.1495 0.3227564464 0.364186981 3 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/rotated.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/rotated.dat new file mode 100644 index 0000000000..c296995821 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/rotated.dat @@ -0,0 +1,333 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: Sphere0 +# position: 0.0585 0 -0.0925 +# title: 4PI PSD monitor +# Ncount: 153447624 +# filename: rotated.dat +# statistics: X0=54.6874; dX=33.703; Y0=1.17881; dY=1.83374; +# signal: Min=0; Max=4.24593e+13; Mean=2.27916e+11; +# values: 1.84612e+15 1.45689e+13 1.46251e+08 +# xvar: Lo +# yvar: La +# xlabel: Longitude [deg] +# ylabel: Latitude [deg] +# zvar: I +# zlabel: Signal per bin +# xylimits: -180 180 -90 90 +# variables: I I_err N +# Data [Sphere0/rotated.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.659378217e-08 0.006241812911 13680.80034 64.61805682 0.9645867336 2.963828688e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52.62813065 68.07606865 72956410.87 1819417.439 11300124.34 142175574.4 596109.4168 9.295887077 0 0 0 0 0 0 0 0 0 0 1.187885978e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 734.0261049 17158084.82 6491410.344 10899292.87 664622000.4 4967592.758 22763005.65 12930984.47 2970775.025 296.2507727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25313.11709 2796313.21 10170890.53 263070921.3 23672288.83 15469341.77 31527693.27 86326746.12 1693283.8 16942760.03 1007741.254 0.5486814983 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7263.471721 23751369.38 11857444.87 27738507.78 41609881.21 325400672.3 201825936 83233646.68 6308412.727 655674022.1 2346005.452 46.6548958 0 0 0 0 0 0 0 4.161402869e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2512177263 15611963.51 22311470.57 54752360.44 171313183.3 1489853795 333299841.8 202014760.9 221567278.9 40410521.58 101448778 26741074.71 34455.83617 5.318038802e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13262.76278 32051309.81 348413976.3 432862148.7 4437150556 235179898.5 2258825009 432085388.1 2.175854097e+11 412174540.4 162209152.2 26925086.11 8307392.345 805.376417 0 0 0 0 0 0 0 0 1.028761518e+11 0 0 0 6.833924067e+10 0 0 1.382936189e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54578.832 2059505.661 882739676.8 389894000 4022732113 2466200328 2299056781 1.075803996e+11 1139956756 119453871.1 178614637.4 89851541.04 26078795.7 162368490.8 0 0 0 0 0 1.117554474e+11 0 0 0 0 0 0 1.384462788e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106.2068047 9910553.184 460543992.4 596907593.8 199895613 413178272.4 1404601241 798210873.5 3.879363418e+10 2.859687569e+11 536135699.2 2.501359931e+10 1857946879 3.244878658e+10 259939.4762 34.43625768 1.465406842e+11 1.204297242e+11 0 0 0 0 0 2.049500116e+11 0 0 0 1.557514558e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006690289285 2633111.062 286850717.3 1.796290197e+10 1126336377 3641948092 1.507865752e+10 1.485569019e+10 4209039678 1180478120 8759230803 1.417021639e+11 3098004737 2.274442811e+11 7241554.325 0.1394439473 0 0 0 1.479463956e+11 0 0 0 0 0 0 0 1.557647152e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 649586.0275 339240153.8 126235242.7 73062489.7 9.408411785e+10 1.191717991e+11 2.253297027e+11 1.24415035e+11 8.920783754e+10 3.948522918e+10 1403336817 2.046631257e+11 2.231060358e+11 137646365.3 1.556684209e+11 154.9527302 0 0 0 0 0 0 1.541767473e+11 0 0 0 4.15998255e+10 6.777205682e+10 0 6.131954026e+10 0 0 7.934954953e+10 0 0 6.743217516e+10 0 1.001773038e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6735.82561 20019944.85 46637934.13 1949007350 9.724310988e+10 5.653051525e+10 2.832112271e+11 1.322615853e+11 3.205421587e+11 1.204232588e+11 4.262184715e+10 1.495923498e+11 154144958.4 2.08559494e+11 2.74889005e+11 2.431302207e+11 4.826592922e+10 2.098459142e+11 1.424865124e+11 0 2.713166592e+11 0 0 1.312335498e+11 0 1.472027528e+11 1.457086051e+11 3.013905001e+11 0 5.713325787e+10 0 0 1.157045993e+11 5.776286602e+10 1.258939219e+11 8.803241801e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12.07987978 8304908.657 1297619239 1656117541 1.573981956e+10 1.541635051e+10 1.830190812e+11 5.824164416e+10 7.424902545e+10 2.757413881e+11 1.415348194e+11 3.791360163e+11 4.938577036e+11 3.825913229e+11 2.806213973e+11 2.247937674e+11 4.815777576e+10 3.489185933e+11 3.461633974e+11 2.406683214e+11 4.85712862e+10 3.29946594e+11 0 0 1.172017597e+11 6.812881029e+10 3.536127316e+11 1.927859759e+11 1.69613677e+11 0 4.132220542e+10 1.43385958e+11 4.495489486e+11 0 0 0 6.073223484e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6858039.578 5428938.877 7083151773 6624004854 2.494761953e+10 1.261962764e+11 4.274710399e+11 2.465909363e+11 9.461407574e+11 3.7833849e+11 6.047062038e+11 2.899853622e+11 2.47840208e+11 6.261747093e+11 4.545031952e+11 7.709990286e+11 3.596379576e+11 2.825023159e+11 4.471274743e+11 8.853565357e+11 3.93251201e+11 4.662553786e+11 7.168036441e+11 5.519095874e+11 3.914992526e+11 2.892755874e+11 9.409719908e+10 5.048193197e+11 6.875821016e+11 3.372199295e+11 3.100403409e+11 1.932395761e+11 0 2.267116849e+11 6.153594947e+10 1.955465137e+11 2.632232859e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3023.571748 484261304.4 1403300042 8.269351819e+10 2.213582213e+11 4.415792543e+11 6.324108261e+12 7.396248676e+12 8.997828519e+12 8.688406679e+12 8.760599919e+12 1.046718295e+13 1.024508581e+13 1.16913621e+13 1.009864526e+13 9.120279843e+12 9.950559882e+12 9.373346076e+12 1.160195612e+13 1.194651036e+13 1.050449117e+13 1.320687804e+13 1.213341824e+13 9.288488287e+12 1.133228933e+13 1.085452063e+13 1.158687552e+13 1.097027285e+13 7.848637509e+12 9.256181612e+12 1.239654979e+13 9.838097423e+12 8.351809951e+12 7.477525944e+12 7.254733043e+12 7.066502418e+12 7.574523858e+12 4.441856629e+12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 415.914512 2839932.059 1027516646 1.16546619e+10 2.427068368e+11 1.339139242e+12 1.903784913e+13 2.222620989e+13 2.544398332e+13 2.353582407e+13 2.923731452e+13 3.086620944e+13 3.226719403e+13 3.462845448e+13 3.517956469e+13 3.317506315e+13 3.575079805e+13 4.081992797e+13 3.68412269e+13 3.497747107e+13 3.642966466e+13 4.245932868e+13 4.068397042e+13 3.293344302e+13 3.956910603e+13 3.798727018e+13 3.535445156e+13 3.489707366e+13 3.626711617e+13 3.221808058e+13 3.397410527e+13 3.361213107e+13 3.137881252e+13 3.02345875e+13 2.513857034e+13 2.575664535e+13 2.357026741e+13 1.203854916e+13 2.90432843e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 158.1187161 13127301.11 2159046902 3583393787 2.673132673e+10 3.329047692e+11 9.640902741e+12 9.941476938e+12 1.216006369e+13 1.112172978e+13 1.509439204e+13 1.332619732e+13 1.508373043e+13 1.351059374e+13 1.825969107e+13 1.70831555e+13 1.848350008e+13 1.711499675e+13 1.610476005e+13 1.670416193e+13 1.910470837e+13 1.527123705e+13 1.903355592e+13 1.814627358e+13 1.813798659e+13 1.643327393e+13 1.752086579e+13 1.57559195e+13 1.472248701e+13 1.632005001e+13 1.437188335e+13 9.57250862e+12 1.532195363e+13 1.523443317e+13 1.007572767e+13 8.474764668e+12 1.053504273e+13 3.995634259e+12 2.602287512e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1844.949262 6998073275 272325096.7 3158011136 1.519276895e+11 2.42835872e+11 4.459903699e+11 6.745162624e+11 5.933582259e+11 1.003698102e+12 8.784002435e+11 4.966676748e+11 5.264147093e+11 6.491839511e+11 8.210340782e+11 7.539155081e+11 0 2.902341099e+11 4.861968026e+11 2.317392007e+11 4.650551137e+11 7.337050459e+11 6.931783959e+11 3.116795937e+11 2.523678546e+11 3.517110243e+11 5.07715162e+11 5.581953757e+11 2.857744009e+11 4.218781435e+10 3.020769861e+11 2.732268419e+11 1.235269217e+11 3.872558134e+11 3.306415229e+11 1.688507169e+11 4.280279346e+11 0 6.923240054e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06074242352 28695315.81 1584483554 2312619471 1.032320201e+11 5.825913138e+10 3.513364179e+10 2.457317676e+11 5.488669226e+11 1.56697739e+11 1.417007673e+10 1.071932797e+11 2.519159019e+11 1.541342797e+11 3.494083306e+11 1.407508807e+11 1.921309787e+11 4.299707544e+11 1.39491457e+11 8.158470497e+11 1.654980154e+11 0 2.561242894e+11 2.020299146e+11 3.816453438e+11 3.388696754e+11 1.408177328e+11 1.194680218e+11 2.714487791e+11 0 2.087386837e+11 2.561325417e+11 1.874451299e+11 1.523347492e+11 6.348162854e+10 2.82270941e+11 2.073765256e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005765847492 1535226951 16074244.08 4896262330 1.334332928e+10 3.275009762e+10 3.716542229e+10 2.999643498e+10 3.112126052e+11 1.340759595e+11 2.583875802e+10 2056744419 1213338062 2.052214641e+11 1.458294059e+11 1.471688883e+11 1.505842559e+11 4.274490952e+10 1.518208494e+11 3.937094085e+11 6.09924624e+10 0 1.811475002e+11 5.866766274e+10 0 1.540429351e+11 1.404408531e+11 1.391627333e+11 2.606795433e+11 5.719461751e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51.57720135 80842419.98 951190946.5 1209298119 2690902645 6.365507797e+10 9775029482 1.385476623e+10 8905886620 6616779446 2.127144492e+11 2.634156545e+10 6.158861816e+10 2409181.52 4.609919338e+11 1.361389373e+11 1.532449064e+11 0 1.59755505e+11 1.555999303e+11 6.457540905e+10 3.914021409e+10 0 0 5.824125087e+10 1.158049886e+11 1.218672173e+11 0 0 0 0 1.549261086e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 107533589.2 24638195.25 653844586.7 598451563.9 5786267828 1.431227415e+10 3776444506 1.640241898e+10 2.879497717e+10 1.581484e+10 610296975.8 3533998785 2.837637897e+11 138793648 1.165134132e+11 2.279030049e+11 0 0 0 0 0 0 0 0 1.312492547e+11 0 1.428287745e+11 0 0 0 1.431972113e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.935213527e-06 867665.9846 52496144.2 203646496.4 7213387452 5999385455 7.149563117e+10 6.154243391e+10 1.542414749e+11 1.801217278e+11 832009621.2 1.577020403e+10 1.494236327e+11 176358004.4 3827418.202 0.0007429769436 0 2.701545174e+11 0 0 0 0 0 0 0 0 0 1.461928804e+11 0 0 0 0 0 1.484291182e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4054412.791 999982892.7 125956703.9 242897915.3 854125930.3 699027285.9 1256517912 1154480811 463443041.5 2.456309117e+11 2702743270 1.481557209e+11 8522029.368 5047.500337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 190921.493 9906798.522 30750534.52 174006525.8 222550947.9 622258342.1 765369340.3 220027333.2 827096022 254120282.3 216272102.4 45592939.8 49622813.81 3044.192751 1.038961222e+11 0 0 0 0 0 8.674122477e+10 0 0 0 0 0 0 7.980380058e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.40498326 148061.8507 17776157.8 1068437818 301275420.8 399768725.7 737779513.3 106057055.2 209446002.5 11177106.18 1.510926257e+11 8254799.872 2672.719284 9.41119357e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 854422.8261 12858584.4 19923292.25 45828670.15 188671314.1 130762328.1 1.441810655e+11 68554924.3 39922404.8 127843685.4 2874676.802 1.529039276e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2833.763027 26929536.03 37551029.85 48375106.3 488295235.6 994514017.2 18283112.88 1504430.444 15263226.71 27978.98061 236745973.2 9.674322262 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.448853881 8543.810741 16113727.19 94955980.51 3894659.916 20566822.76 12807800.11 7808569.246 1.313019874 0.0001550498054 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.831901342e-08 55099437.5 131957.99 28654572.38 819199.3626 19423984.87 265733.8339 0.3564594548 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01222940645 0.2839412953 0.05291542209 5.788281083 20895.02658 0.6745794953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [Sphere0/rotated.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.914931056e-08 0.005144007458 13889.00895 61.91341029 0.9713351617 3.42226703e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54.61365688 49.73636587 66164917.61 1179711.523 10524544.93 141595381.8 533652.2813 9.242683317 0 0 0 0 0 0 0 0 0 0 1.187885978e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 730.9731424 16256012.16 5951519.93 7374736.651 659322985 3779168.613 18320682.01 9046061.861 2553175.808 302.0401343 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27729.08057 2051179.646 7251310.198 225464973.5 14436389.5 11481860.25 12425337.91 69252840.21 1007211.099 15008331.53 749725.3708 0.6335618214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4531.778926 23032830.18 7599422.136 12114485.69 16354444.91 234298712.7 120374367.2 53702313.31 3116293.501 506752162.8 1799919.212 45.525611 0 0 0 0 0 0 0 4.161402869e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2512177263 15644871.85 15740094.46 37151795.72 88167488.89 1153923049 173805861.3 110227034.6 89279130.81 17439951.37 49851319.08 17408388.15 30072.44225 6.140558442e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10786.8752 16484076.81 315026744.9 174784885.9 3963739973 99046720.79 1783267415 292008650.5 1.630762396e+11 258413783.4 91751173.58 14198671.48 5286441.315 487.7732622 0 0 0 0 0 0 0 0 1.028761518e+11 0 0 0 6.833924067e+10 0 0 1.382936189e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54823.47654 936041.5116 745154828.6 283872514.7 2794822298 2163467320 1678467235 1.054714321e+11 859784916.6 38075335.42 84151319.59 56700910.94 25418146.59 163277740.9 0 0 0 0 0 1.117554474e+11 0 0 0 0 0 0 1.384462788e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 130.0762393 7684406.591 392901467 502345140.6 131599449.2 126069362.1 614592250.5 221063544.2 3.665869144e+10 2.018341731e+11 214007019.4 2.467862644e+10 1476285283 3.245798369e+10 152998.7688 42.17562998 1.465406842e+11 1.204297242e+11 0 0 0 0 0 1.707830105e+11 0 0 0 1.557514558e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006101520787 2037244.975 229369128.9 1.140497929e+10 616029680.6 1467322050 9279764314 1.042681359e+10 2402931290 447594401.5 7977715177 1.412678054e+11 2156879608 1.685520971e+11 6548614.217 0.1707832592 0 0 0 1.479463956e+11 0 0 0 0 0 0 0 1.557647152e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 658228.6012 338795079.2 72201907.83 23897203.05 7.852951072e+10 8.881481871e+10 1.667907008e+11 1.064226676e+11 7.387882979e+10 1.985213154e+10 612792758.6 1.4701684e+11 1.59966533e+11 120192071.2 1.559223392e+11 120.6584609 0 0 0 0 0 0 1.541767473e+11 0 0 0 4.15998255e+10 6.777205682e+10 0 6.131954026e+10 0 0 7.934954953e+10 0 0 6.743217516e+10 0 1.001773038e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6839.824149 12125575.4 24614810.8 1153292227 7.155526511e+10 3.427566405e+10 1.819042974e+11 1.06247768e+11 2.168318859e+11 8.204554744e+10 4.099706362e+10 1.485789829e+11 74295600.28 1.476903581e+11 1.947826276e+11 1.76535406e+11 4.826592922e+10 1.583298823e+11 1.424865124e+11 0 1.960576717e+11 0 0 1.312335498e+11 0 1.472027528e+11 1.457086051e+11 2.131545807e+11 0 5.713325787e+10 0 0 8.385156957e+10 5.776286602e+10 1.258939219e+11 8.803241801e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.07470031 6096846.508 996755425.1 681730224.7 1.15897853e+10 6746897372 9.137907184e+10 1.769958833e+10 2.102496529e+10 1.629297095e+11 1.268966162e+11 1.829241543e+11 2.545282913e+11 2.223653999e+11 1.730424325e+11 1.335787514e+11 4.815777576e+10 2.175509297e+11 1.91527865e+11 1.786989808e+11 4.85712862e+10 1.90448935e+11 0 0 8.287627712e+10 6.812881029e+10 1.892133836e+11 1.560193961e+11 1.461005505e+11 0 4.132220542e+10 1.43385958e+11 2.418412934e+11 0 0 0 6.073223484e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6937632.841 3136381.336 6833737927 3704545941 1.361423689e+10 8.564467097e+10 1.767709516e+11 4.999692895e+10 2.870553334e+11 2.188043978e+11 2.368085367e+11 1.690562532e+11 1.621277723e+11 2.874979596e+11 2.538772714e+11 3.105036332e+11 2.336722856e+11 1.832537468e+11 2.582224273e+11 3.621882613e+11 1.886990918e+11 2.425469248e+11 3.009405007e+11 2.760575735e+11 2.123685794e+11 1.553000761e+11 6.774230108e+10 2.589138068e+11 2.951627718e+11 1.999473093e+11 2.19234966e+11 1.713254088e+11 0 1.752119757e+11 6.153594947e+10 1.689279172e+11 1.869326804e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2867.568763 479334042.3 898509760 7.802376567e+10 1.572136333e+11 1.851424607e+11 8.215126231e+11 4.112108643e+11 9.365942587e+11 9.89763671e+11 1.030648546e+12 1.112210474e+12 1.10320199e+12 1.19502128e+12 1.085029872e+12 1.023583253e+12 1.064742847e+12 1.028491328e+12 1.179509426e+12 1.184930244e+12 1.10740635e+12 1.241566224e+12 1.207519428e+12 1.034793735e+12 1.149127224e+12 1.103298151e+12 1.169487562e+12 1.150960375e+12 9.322686778e+11 1.039210817e+12 1.243371675e+12 1.068980482e+12 1.017440694e+12 9.151811087e+11 9.597904839e+11 9.241531755e+11 9.332111377e+11 7.472033521e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350.0409415 2194669.632 643903512.3 4772262090 1.515465004e+11 3.902380588e+11 1.447159095e+12 5.403681589e+11 1.469241235e+12 1.652248041e+12 1.890444993e+12 1.906089046e+12 1.972338751e+12 2.039966073e+12 2.036180109e+12 1.985916222e+12 2.072655426e+12 2.180131665e+12 2.096071635e+12 2.034063479e+12 2.066698297e+12 2.253613222e+12 2.186318665e+12 1.971025746e+12 2.171970493e+12 2.086525351e+12 2.021418356e+12 2.01467141e+12 2.050602903e+12 1.956819851e+12 2.030101258e+12 1.993670943e+12 1.933168709e+12 1.871293795e+12 1.723583877e+12 1.768961101e+12 1.683357109e+12 1.171245055e+12 1.881463861e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 160.5466263 10895800.13 1475538594 1578864721 7445628603 1.335989073e+11 1.027751715e+12 3.313797041e+11 1.077372533e+12 1.140730769e+12 1.351885991e+12 1.229050068e+12 1.342353942e+12 1.265205684e+12 1.497712459e+12 1.44590645e+12 1.486485101e+12 1.432899846e+12 1.381262169e+12 1.401303912e+12 1.494496344e+12 1.34808824e+12 1.502256133e+12 1.470951527e+12 1.468090117e+12 1.395742306e+12 1.45701471e+12 1.374644383e+12 1.320606159e+12 1.386288997e+12 1.276986768e+12 1.026208625e+12 1.356335479e+12 1.352765167e+12 1.10312762e+12 9.691295847e+11 1.133275995e+12 6.707081161e+11 1.814053215e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1380.392792 6983235653 122266971.1 1452141636 1.413650569e+11 1.252219553e+11 2.172048439e+11 2.274093717e+11 2.227740208e+11 3.279800708e+11 3.517742395e+11 2.353105574e+11 2.469468551e+11 3.037538993e+11 3.082771507e+11 3.294924005e+11 0 1.914591272e+11 2.516180596e+11 1.81232391e+11 2.009343836e+11 3.153118364e+11 2.799037619e+11 2.042925265e+11 1.881054264e+11 2.122086813e+11 2.093010131e+11 2.638741966e+11 2.035953774e+11 4.218781435e+10 1.898018831e+11 1.851596989e+11 9.138790122e+10 2.119798635e+11 1.933885581e+11 1.256589046e+11 2.480418879e+11 0 6.923240054e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05525350056 15686418.99 1257587112 1192982018 1.003702945e+11 2.399762222e+10 1.129978984e+10 1.577615126e+11 2.649845538e+11 8.723181408e+10 9193769502 9.68787768e+10 1.743095114e+11 1.540168962e+11 2.183099539e+11 1.440265494e+11 1.635177779e+11 2.482636576e+11 1.39491457e+11 3.36754449e+11 1.433551682e+11 0 1.649804109e+11 1.759631018e+11 2.081942595e+11 2.016737705e+11 1.007239702e+11 9.203743556e+10 1.574174421e+11 0 1.56739554e+11 1.859167786e+11 1.479405517e+11 1.523347492e+11 6.348162854e+10 1.996150389e+11 1.466466699e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004224370568 1509543977 10706055 3438841620 1.039876264e+10 1.571440055e+10 2.261917407e+10 1.066121444e+10 2.078214195e+11 1.13847593e+11 1.434825666e+10 1798630918 1135873572 1.514057946e+11 1.462651204e+11 1.508032353e+11 1.097630319e+11 4.274490952e+10 1.518208494e+11 2.302385724e+11 6.09924624e+10 0 1.589771446e+11 5.866766274e+10 0 1.540429351e+11 1.404408531e+11 1.391627333e+11 1.843297286e+11 5.719461751e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52.76259025 52748420.54 825594596.8 658342377.3 2087335225 5.150901809e+10 3847414925 4414096386 5098721984 3722751136 1.543126797e+11 1.546101827e+10 6.076509814e+10 1355813.33 2.669846698e+11 1.406035639e+11 1.532449064e+11 0 1.132107575e+11 1.555999303e+11 6.457540905e+10 3.914021409e+10 0 0 5.824125087e+10 1.158049886e+11 9.268687168e+10 0 0 0 0 1.549261086e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124169093.4 17509329.99 592748425.4 364196401.7 2896142159 6506000831 1598001995 7004061200 1.836289387e+10 1.376277202e+10 191954287.6 2670343312 1.96535275e+11 112952273 1.168808039e+11 1.776940909e+11 0 0 0 0 0 0 0 0 1.312492547e+11 0 1.428287745e+11 0 0 0 1.431972113e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.935213527e-06 681568.7222 34091312.44 136398536.1 6312947125 2869454934 6.559401533e+10 5.914917422e+10 1.53495317e+11 1.577828853e+11 480215709.6 1.466569191e+10 1.494487579e+11 171853970.9 3155992.332 0.0007429769436 0 1.9106321e+11 0 0 0 0 0 0 0 0 0 1.461928804e+11 0 0 0 0 0 1.484291182e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3725784.771 926460206.6 111702792.8 176709579.2 441414642 212125851.1 678647753.2 457305410.2 162525087.2 1.677553145e+11 2640987562 1.481912163e+11 6025698.297 4247.167109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 195619.5204 5595459.276 22719092.34 99006329.85 117124341.9 311207892.8 382412431.5 70963701.55 407503177.9 228191008.1 164150046 29838211.84 49726270.19 3122.775833 1.038961222e+11 0 0 0 0 0 8.674122477e+10 0 0 0 0 0 0 7.980380058e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24.82064252 104454.2439 10010871.18 838101313.8 115883111.5 306966479.2 508322052.1 32330125.83 95095460 8330549.204 1.511700736e+11 4079153.682 1999.670997 9.41119357e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 853564.1571 9237566.146 10892206.41 26715384.2 109929920.9 66935664.05 1.439215136e+11 31039389.42 20673730.66 110543271 1693518.311 1.555178593e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3168.24338 27082034.51 34160572.9 45120345.03 379606490.8 934548386 12704889.68 859063.5961 7170011.262 17236.76453 236985413.8 10.44946233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.130729958 8151.127948 10206876.76 87275239.04 2879234.206 15206736.44 10477960.15 5549401.525 0.7019643001 0.0001534621105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.918683136e-08 55475122.49 91403.05758 20742875.29 586641.4365 16546923.91 260075.9656 0.370990569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01412130221 0.2992875496 0.04228430595 5.858870944 18125.58981 0.7789190414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [Sphere0/rotated.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 10 31 25 21 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 87 240 321 302 210 103 12 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 16 168 419 593 698 722 625 401 160 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 141 503 923 1236 1363 1448 1154 920 478 125 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 388 987 1632 2292 2613 2563 2147 1486 846 358 60 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 1 208 809 1730 2782 3762 4250 4225 3699 2551 1516 664 171 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43 417 1317 2989 4882 6616 7340 7269 6004 4143 2285 1065 356 31 0 0 0 0 0 0 0 0 1 0 0 0 1 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 104 666 2005 4372 7768 10632 11725 11412 9727 6460 3274 1452 490 86 0 0 0 0 0 1 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 2 188 934 2694 6328 11947 16077 17935 17351 14364 9328 4586 1890 707 161 2 1 1 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 285 1172 3503 8365 16056 21554 24046 22857 18793 12287 5629 2310 771 235 2 0 0 0 1 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 30 346 1323 4003 10193 19904 27836 31868 30145 23648 15020 6684 2527 948 263 20 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 387 1419 4277 11812 24193 35338 42867 41428 29483 17175 7236 2745 903 272 34 1 2 1 0 2 0 0 1 0 1 1 2 0 1 0 0 2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 361 1396 4248 12137 27729 45828 66512 63117 38594 19177 7212 2510 891 248 35 1 3 4 2 1 4 0 0 2 1 4 2 2 0 1 1 4 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 42 342 1181 3721 11554 30513 71197 195778 169714 56819 19596 6391 2206 790 266 33 3 3 3 6 5 4 6 4 4 4 2 4 6 3 2 2 0 2 1 2 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 36 256 827 2960 10308 37227 570559 10312482 4306874 114511 18614 5143 1728 607 263 124 102 98 110 117 102 133 115 93 110 114 112 103 83 91 111 98 76 78 64 67 76 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 184 736 2587 10030 48317 2665854 50437289 22705556 239242 22367 5068 1790 775 477 351 338 403 350 339 355 402 395 316 375 382 349 342 361 310 320 325 302 300 240 241 223 121 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 199 710 2279 8383 36367 1359757 34259164 14294831 195002 19853 4638 1398 558 286 180 176 162 154 162 187 147 182 173 176 159 165 149 144 161 146 101 145 145 94 88 98 41 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 218 819 2571 8360 25625 116685 1071917 661625 75499 16971 4927 1700 575 191 25 0 3 4 2 6 6 7 3 2 3 7 5 2 1 3 3 2 4 4 2 3 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 38 261 860 2848 8285 21604 42224 82143 76909 36648 14225 5094 1755 558 199 19 2 3 1 6 2 0 3 2 4 3 2 2 4 0 2 2 2 1 1 2 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 20 242 875 2753 7558 17944 29264 37810 36194 25006 11959 4665 1804 617 167 20 2 1 1 3 1 0 2 1 0 1 1 1 2 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 21 227 861 2513 6442 14345 22241 25967 24715 18801 9776 4185 1719 642 160 15 1 0 2 1 1 1 0 0 1 1 2 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 3 178 733 2135 5104 10415 16658 19205 18313 14041 7543 3391 1518 557 157 9 0 0 0 0 0 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 1 124 581 1639 3682 6857 10550 12235 11997 8993 5307 2665 1231 450 111 1 0 2 0 0 0 0 0 0 0 0 0 1 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 70 366 1181 2612 4495 6322 7390 7214 5678 3596 1986 914 322 47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 267 817 1844 2922 3993 4552 4475 3673 2508 1392 693 201 18 1 0 0 0 0 0 1 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 8 110 492 1122 1956 2571 2939 2873 2434 1621 910 469 109 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 32 255 653 1074 1600 1772 1807 1426 985 595 223 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 81 330 618 802 980 931 915 544 278 93 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 109 279 433 470 472 422 243 107 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 73 142 201 168 151 63 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 9 27 31 18 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/time.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/time.dat new file mode 100644 index 0000000000..e9baf294eb --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/time.dat @@ -0,0 +1,358 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: tof +# position: 49.4198 0 -35.0741 +# title: TOF [s] monitor +# Ncount: 153447624 +# filename: time.dat +# statistics: X0=0.0554832; dX=0.0217845; +# signal: Min=0; Max=1.52304e+08; Mean=8.87464e+06; +# values: 2.66239e+09 2.63647e+08 2313 +# xvar: t +# yvar: (I,I_err) +# xlabel: TOF [s] +# ylabel: Intensity [n/s/bin] +# xlimits: 0 0.15 +# variables: t I I_err N +0.00025 0 0 0 +0.00075 0 0 0 +0.00125 0 0 0 +0.00175 0 0 0 +0.00225 0 0 0 +0.00275 0 0 0 +0.00325 0 0 0 +0.00375 0 0 0 +0.00425 0 0 0 +0.00475 0 0 0 +0.00525 0 0 0 +0.00575 0 0 0 +0.00625 0 0 0 +0.00675 0 0 0 +0.00725 0 0 0 +0.00775 0 0 0 +0.00825 0 0 0 +0.00875 0 0 0 +0.00925 0 0 0 +0.00975 0 0 0 +0.01025 0 0 0 +0.01075 0 0 0 +0.01125 0 0 0 +0.01175 0 0 0 +0.01225 0 0 0 +0.01275 0 0 0 +0.01325 0 0 0 +0.01375 0 0 0 +0.01425 0 0 0 +0.01475 0 0 0 +0.01525 0 0 0 +0.01575 0 0 0 +0.01625 0 0 0 +0.01675 0 0 0 +0.01725 0 0 0 +0.01775 0 0 0 +0.01825 4.08602932e-05 4.706297551e-05 3 +0.01875 344983.4292 360827.4743 10 +0.01925 1396886.078 1391589.58 18 +0.01975 1323963.494 971324.7168 35 +0.02025 14595249.37 11410996.03 40 +0.02075 2756027.23 1555038.666 54 +0.02125 5994052.051 3797367.226 54 +0.02175 7396759.067 7216283.69 52 +0.02225 19038987.13 16109539.91 46 +0.02275 9253872.213 5705115.058 55 +0.02325 33327795.83 19113277.16 61 +0.02375 11243477.68 7926487.547 69 +0.02425 24023144.1 10736518.89 63 +0.02475 1107642.409 946058.1279 63 +0.02525 2300560.335 1689613.436 60 +0.02575 23892374.79 11451160.41 67 +0.02625 8770330.334 4494062.383 51 +0.02675 27387680.2 27368852.41 40 +0.02725 51501647.73 32562104.99 54 +0.02775 32922719.52 18161902.2 53 +0.02825 4740493.037 4783913.01 47 +0.02875 1287146.174 769702.7717 51 +0.02925 24786578.62 22504933.04 46 +0.02975 8463596.59 5514453.091 44 +0.03025 10495808.57 5542588.435 49 +0.03075 361706.2075 229441.2257 33 +0.03125 14607239.31 12462495.83 37 +0.03175 5989015.169 3195604.308 42 +0.03225 1187053.902 1035246.121 37 +0.03275 35871673.33 32558693.72 31 +0.03325 9485.513621 9185.290221 36 +0.03375 8597395.704 6830392.05 31 +0.03425 5139081.911 3370573.235 37 +0.03475 3247624.853 2419657.425 29 +0.03525 19709461.42 12508927.89 24 +0.03575 106694033.9 47621318.88 32 +0.03625 810671.6384 666276.4144 25 +0.03675 409746.6175 422343.5444 15 +0.03725 0.01195514487 0.009048547838 6 +0.03775 9209226.586 7807160.447 8 +0.03825 1.544687791 1.544687791 1 +0.03875 0.0009192009782 0.0009192009782 1 +0.03925 2177592.05 2177592.05 1 +0.03975 0 0 0 +0.04025 3.401778406e-12 3.928030845e-12 3 +0.04075 104398.9605 105064.5619 5 +0.04125 7968252.579 8021206.04 9 +0.04175 30550048.22 24688351.14 13 +0.04225 58309376.67 39567954.51 24 +0.04275 102310351.2 54016786.11 20 +0.04325 6716.58157 6622.056255 15 +0.04375 77052601.15 79944168.95 13 +0.04425 34375247.1 27028130.62 24 +0.04475 39119507.52 26670636.11 19 +0.04525 8033745.017 4711792.963 11 +0.04575 6259044.036 6315958.669 17 +0.04625 40955721.88 23302381.45 12 +0.04675 152303637.3 93865471.77 13 +0.04725 11620672.97 8589024.84 10 +0.04775 45874555.53 34593172.7 18 +0.04825 25488669.56 19087797.7 16 +0.04875 18347918.14 11681960.65 21 +0.04925 41192984.89 28827872.41 16 +0.04975 53955786.94 38013946.75 16 +0.05025 60086961.82 43335267.34 18 +0.05075 6886509.252 7302736.173 8 +0.05125 8377845.362 7780771.539 17 +0.05175 43017080.23 33045494.58 7 +0.05225 18040119.83 18939033.94 9 +0.05275 28947518.94 28544435.26 12 +0.05325 124219904.1 104883919.4 14 +0.05375 34402616.35 29387630.94 9 +0.05425 56486489.35 58680501.56 11 +0.05475 42270053.91 35339736.28 17 +0.05525 6764946.077 5189549.967 8 +0.05575 8252374.128 6615978.103 5 +0.05625 11763906.38 7518397.106 10 +0.05675 476539.1185 350093.6747 10 +0.05725 1701565.326 1814327.691 7 +0.05775 8337476.771 9321582.306 4 +0.05825 9068254.83 7251908.125 7 +0.05875 4795693.254 5537589.582 3 +0.05925 9448844.514 8996875.965 5 +0.05975 1.216131181 1.216131181 1 +0.06025 44263619.62 41141759.33 2 +0.06075 0 0 0 +0.06125 0 0 0 +0.06175 0 0 0 +0.06225 704.2822267 862.5660451 2 +0.06275 11755626.22 9689758.155 6 +0.06325 4.397102253e-10 4.397102253e-10 1 +0.06375 646903.5485 492501.7338 6 +0.06425 28417242.91 20943790.77 10 +0.06475 4363520.511 4878490.546 4 +0.06525 0 0 0 +0.06575 26756181.76 29657925.01 3 +0.06625 15130939.44 10385210.41 7 +0.06675 572082.3824 617384.8146 6 +0.06725 224180.2914 258861.1032 3 +0.06775 12653467.55 10789639.64 5 +0.06825 0.0006260662767 0.0006260662767 1 +0.06875 12040252.38 10570271.21 6 +0.06925 9542422.834 11687033.43 2 +0.06975 1066534.772 1140123.904 7 +0.07025 45692039.4 50000746.44 3 +0.07075 3525170.266 2824748.279 5 +0.07125 46759197.43 31030346.83 10 +0.07175 24172823.18 24926326.6 2 +0.07225 16530.93567 18368.68077 4 +0.07275 3470761.733 4250797.633 2 +0.07325 13587653.57 9292535.934 4 +0.07375 22972755.32 18169029.63 3 +0.07425 29539337.35 21382154.92 6 +0.07475 29692656.15 22283436.86 5 +0.07525 6047862.336 7407088.378 2 +0.07575 59199.08313 66154.2888 4 +0.07625 29706474.01 20643617.44 5 +0.07675 42518042.65 29198957.19 4 +0.07725 1.590001077e-22 1.590001077e-22 1 +0.07775 1.474448215e-14 1.474448215e-14 1 +0.07825 5054561.139 6190547.833 2 +0.07875 36947661.96 26411315.84 2 +0.07925 1419117.557 1543420.691 3 +0.07975 22674131.45 22674131.45 1 +0.08025 0 0 0 +0.08075 0 0 0 +0.08125 52564496.76 52564496.76 1 +0.08175 0 0 0 +0.08225 10470736.46 10470736.46 1 +0.08275 3.51723647e-21 3.51723647e-21 1 +0.08325 0 0 0 +0.08375 1795.678967 1795.678967 1 +0.08425 15573.09953 19073.07378 2 +0.08475 7014416.117 8099527.815 3 +0.08525 40153.50717 40153.50717 1 +0.08575 3317749.219 3702496.935 3 +0.08625 1.760533179e-14 1.760533179e-14 1 +0.08675 4012360.718 4914118.076 2 +0.08725 0 0 0 +0.08775 11028694.86 8221676.139 7 +0.08825 31578790.27 37633589.81 2 +0.08875 5.570152352e-15 5.570152352e-15 1 +0.08925 8756.654436 8756.654436 1 +0.08975 2.720248682e-17 3.331596844e-17 2 +0.09025 14734.38387 18045.86108 2 +0.09075 44654948 34014012.71 3 +0.09125 0.0009344113392 0.0009344113392 1 +0.09175 0 0 0 +0.09225 3969256.121 4583302.18 3 +0.09275 16.278455 16.278455 1 +0.09325 129188.7779 129188.7779 1 +0.09375 30365973.39 22990209.81 2 +0.09425 14826939.26 14826939.26 1 +0.09475 11977326.24 10094979.83 3 +0.09525 0 0 0 +0.09575 3.961520726 3.961520726 1 +0.09625 0 0 0 +0.09675 11547824.56 11547824.56 1 +0.09725 0 0 0 +0.09775 1.432316075e-11 1.432316075e-11 1 +0.09825 0 0 0 +0.09875 0 0 0 +0.09925 0 0 0 +0.09975 1118.967575 1118.967575 1 +0.10025 0 0 0 +0.10075 0 0 0 +0.10125 0 0 0 +0.10175 3.152310651e-13 3.152310651e-13 1 +0.10225 0 0 0 +0.10275 2777566.427 2777566.427 1 +0.10325 15590124.62 15590124.62 1 +0.10375 0 0 0 +0.10425 9.316318509 9.316318509 1 +0.10475 1999990.962 2449478.673 2 +0.10525 5281662.194 5281662.194 1 +0.10575 0 0 0 +0.10625 0.01034005732 0.01034005732 1 +0.10675 18873797.49 18873797.49 1 +0.10725 1999.162513 1999.162513 1 +0.10775 0 0 0 +0.10825 0.0003228893521 0.0003228893521 1 +0.10875 0 0 0 +0.10925 6635.863038 8127.239222 2 +0.10975 715691.7783 876539.8348 2 +0.11025 0 0 0 +0.11075 5762005.986 7045370.735 2 +0.11125 4125171.255 4060054.838 2 +0.11175 26415812.27 26415812.27 1 +0.11225 0 0 0 +0.11275 6829.114881 6829.114881 1 +0.11325 0 0 0 +0.11375 0 0 0 +0.11425 0 0 0 +0.11475 0 0 0 +0.11525 0 0 0 +0.11575 0 0 0 +0.11625 0 0 0 +0.11675 0 0 0 +0.11725 9932598.352 9932598.352 1 +0.11775 0 0 0 +0.11825 0 0 0 +0.11875 0 0 0 +0.11925 0 0 0 +0.11975 0 0 0 +0.12025 0 0 0 +0.12075 1917493.998 2348440.94 2 +0.12125 0 0 0 +0.12175 0 0 0 +0.12225 0 0 0 +0.12275 0 0 0 +0.12325 0 0 0 +0.12375 3464.322299 3464.322299 1 +0.12425 13685360.41 13685360.41 1 +0.12475 0 0 0 +0.12525 0 0 0 +0.12575 0 0 0 +0.12625 4.86069283e-06 4.86069283e-06 1 +0.12675 10.90254486 13.3528359 2 +0.12725 2.863399945 2.863399945 1 +0.12775 179.7592053 179.7592053 1 +0.12825 0 0 0 +0.12875 321.7848428 394.104336 2 +0.12925 0 0 0 +0.12975 0 0 0 +0.13025 0 0 0 +0.13075 6891802.625 6891802.625 1 +0.13125 0 0 0 +0.13175 0 0 0 +0.13225 0 0 0 +0.13275 0 0 0 +0.13325 0 0 0 +0.13375 25103.75439 25103.75439 1 +0.13425 0 0 0 +0.13475 0 0 0 +0.13525 0 0 0 +0.13575 0 0 0 +0.13625 0 0 0 +0.13675 0 0 0 +0.13725 0 0 0 +0.13775 0 0 0 +0.13825 0 0 0 +0.13875 0 0 0 +0.13925 0 0 0 +0.13975 0 0 0 +0.14025 0 0 0 +0.14075 0 0 0 +0.14125 0 0 0 +0.14175 0 0 0 +0.14225 0 0 0 +0.14275 0 0 0 +0.14325 0 0 0 +0.14375 0 0 0 +0.14425 0 0 0 +0.14475 0 0 0 +0.14525 0 0 0 +0.14575 0 0 0 +0.14625 0 0 0 +0.14675 0 0 0 +0.14725 0 0 0 +0.14775 0 0 0 +0.14825 0 0 0 +0.14875 0 0 0 +0.14925 0 0 0 +0.14975 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/wavelength.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/wavelength.dat new file mode 100644 index 0000000000..d891ad06de --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/wavelength.dat @@ -0,0 +1,358 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: wavelength +# position: 49.4198 0 -35.0741 +# title: Wavelength [Angs] monitor +# Ncount: 153447624 +# filename: wavelength.dat +# statistics: X0=3.51872; dX=1.4352; +# signal: Min=0; Max=1.24212e+08; Mean=8.87464e+06; +# values: 2.66239e+09 2.63647e+08 2313 +# xvar: L +# yvar: (I,I_err) +# xlabel: Wavelength [Angs] +# ylabel: Intensity [n/s/bin] +# xlimits: 0.5 10 +# variables: L I I_err N +0.5158333333 0 0 0 +0.5475 0 0 0 +0.5791666667 0 0 0 +0.6108333333 0 0 0 +0.6425 0 0 0 +0.6741666667 0 0 0 +0.7058333333 0 0 0 +0.7375 0 0 0 +0.7691666667 0 0 0 +0.8008333333 0 0 0 +0.8325 0 0 0 +0.8641666667 0 0 0 +0.8958333333 0 0 0 +0.9275 0 0 0 +0.9591666667 0 0 0 +0.9908333333 1.502968559e-13 1.502968559e-13 1 +1.0225 344981.1578 367778.6863 7 +1.054166667 38299.16985 29857.33286 9 +1.085833333 2682248.142 1692031.964 23 +1.1175 304.5315077 298.3546658 28 +1.149166667 14595249.37 11421865.6 37 +1.180833333 2684737.45 1557486.618 41 +1.2125 5999735.478 3804796.703 44 +1.244166667 7299461.076 7218381.721 50 +1.275833333 975376.406 780227.022 42 +1.3075 18247521.53 16107603.33 42 +1.339166667 9232865.872 5713169.158 47 +1.370833333 27424551.78 18203182.54 48 +1.4025 14195909.59 9523904.822 52 +1.434166667 18759059.3 9104737.982 68 +1.465833333 8229662.41 6357914.927 47 +1.4975 1247806.36 959092.2722 57 +1.529166667 2145631.007 1684144.132 54 +1.560833333 23822515.22 11470602.33 53 +1.5925 5146700.845 2515148.89 43 +1.624166667 31081164.38 27604970.99 42 +1.655833333 51026093.6 32655338.32 40 +1.6875 26050738.37 17439839.57 49 +1.719166667 7349644.359 5164083.72 39 +1.750833333 4738389.947 4791199.874 41 +1.7825 23930884.26 22420027.78 45 +1.814166667 4190.007549 4219.598184 40 +1.845833333 10330488.64 5927748.228 36 +1.8775 9699192.309 5514982.688 41 +1.909166667 1068379.216 706598.4191 30 +1.940833333 804979.9239 500118.5343 31 +1.9725 14163959.81 12450743.07 38 +2.004166667 5988821.188 3204258.878 33 +2.035833333 1187231.039 1036861.601 33 +2.0675 35744971.09 32678326.56 25 +2.099166667 136101.8066 98939.01798 25 +2.130833333 8596955.498 6821349.85 34 +2.1625 1546991.668 1571700.812 30 +2.194166667 3598163.075 2996101.064 29 +2.225833333 3242094.999 2425675.815 25 +2.2575 19681807.59 12551316.69 20 +2.289166667 83767251.7 41732159.6 24 +2.320833333 23592179.72 23476745.2 22 +2.3525 172941.2387 150483.9272 21 +2.384166667 409733.3136 427112.776 11 +2.415833333 2129034.69 2275088.35 7 +2.4475 7080395.728 7463153.857 9 +2.479166667 95908.13962 110743.1739 3 +2.510833333 7976541.109 7981824.287 10 +2.5425 10183523.4 8534449.671 10 +2.574166667 36819296.92 26069848.6 19 +2.605833333 97586457.07 59250634.05 21 +2.6375 48764498.75 28967874.9 17 +2.669166667 16685.10739 17104.95685 11 +2.700833333 77036224.67 80796273.91 10 +2.7325 5407635.536 5523861.63 19 +2.764166667 67411538.71 37584173.58 19 +2.795833333 8183664.754 4721070.563 12 +2.8275 527051.9931 549013.7648 11 +2.859166667 20482490.47 12445485.73 14 +2.890833333 90643116.57 53329467.65 12 +2.9225 88391404.77 82011727.69 8 +2.954166667 16192088.49 9802107.894 9 +2.985833333 32756087.52 33764198.81 16 +3.0175 32942707.56 20314405.66 12 +3.049166667 5788717.476 4595437.629 17 +3.080833333 13652495.81 10954406.5 13 +3.1125 77702940.81 44148773.25 17 +3.144166667 29237582.94 19976448.29 16 +3.175833333 43414494.12 42683219.89 12 +3.2075 4881836.58 4788343.524 9 +3.239166667 6927957.019 7166067.6 12 +3.270833333 24915921.59 18965415.12 11 +3.3025 26436154.78 28959356.61 5 +3.334166667 18357389.56 18937431.92 9 +3.365833333 28629906.37 28643091.32 11 +3.3975 124211865.6 105748308.4 11 +3.429166667 34410997.73 29258316.09 10 +3.460833333 302088.5281 293028.2185 8 +3.4925 90174378.62 68266571.55 11 +3.524166667 8280082.356 6084496.835 12 +3.555833333 6764939.831 5254579.358 6 +3.5875 8252374.128 6558898.096 6 +3.619166667 11763906.38 7541066.187 9 +3.650833333 476534.8467 354875.2475 7 +3.6825 4336.545376 4587.097264 8 +3.714166667 1697233.053 1959795.725 3 +3.745833333 8337476.771 9321582.306 4 +3.7775 9068254.83 7305170.429 6 +3.809166667 4795693.254 5537589.582 3 +3.840833333 1212205.859 1356287.448 3 +3.8725 8237344.153 9142995.029 4 +3.904166667 52689394.01 39693269.76 7 +3.935833333 3329851.839 3329851.839 1 +3.9675 0.00275138152 0.003177021151 3 +3.999166667 275934.2491 302267.2352 5 +4.030833333 28788113.14 21020336.61 9 +4.0625 154.2805199 117.5805797 2 +4.094166667 4363465.303 5038487.177 3 +4.125833333 25787604.88 31583236.82 2 +4.1575 4612962.891 4216984.84 3 +4.189166667 12058157.77 9626188.755 9 +4.220833333 478.0459411 365.9701168 3 +4.2525 224180.2914 274563.6622 2 +4.284166667 3205623.69 3701535.401 3 +4.315833333 9447843.863 11571171.66 2 +4.3475 1948338.476 2249747.482 3 +4.379166667 10091913.9 10768738.58 4 +4.410833333 9542422.834 11687033.43 2 +4.4425 1066534.772 1151938.594 6 +4.474166667 43519780.9 50252314.44 3 +4.505833333 7032220.982 3795862.305 6 +4.5375 27780916.69 31059792.83 4 +4.569166667 38801270.84 24909294.41 7 +4.600833333 3015040.865 3692655.836 2 +4.6325 16435.53202 20129.33355 2 +4.664166667 95.40352108 116.8449732 2 +4.695833333 12826920.72 8956186.752 4 +4.7275 19871890.66 17276263.9 3 +4.759166667 12615595.56 9764823.252 3 +4.790833333 45825496.56 29371123.43 6 +4.8225 14171122.95 8722501.647 4 +4.854166667 2.009606389e-08 2.009606389e-08 1 +4.885833333 59171.99446 68325.93384 3 +4.9175 29706501.1 20543989.16 6 +4.949166667 28290812.89 29965022.42 2 +4.980833333 14227229.77 10273606.8 2 +5.0125 1.590001077e-22 1.590001077e-22 1 +5.044166667 5054561.139 6190547.833 2 +5.075833333 9.598997484e-12 9.598997484e-12 1 +5.1075 36947661.96 26411315.84 2 +5.139166667 1349355.019 1644267.499 2 +5.170833333 69762.53752 69762.53752 1 +5.2025 33144867.91 26423739.02 2 +5.234166667 3.51723647e-21 3.51723647e-21 1 +5.265833333 0 0 0 +5.2975 52566292.44 64377364.78 2 +5.329166667 0 0 0 +5.360833333 7029972.087 7841194.974 4 +5.3925 17.12888855 17.12888855 1 +5.424166667 40153.50717 40153.50717 1 +5.455833333 3317749.219 3702496.935 3 +5.4875 0 0 0 +5.519166667 0.08322930524 0.1019346647 2 +5.550833333 4012360.635 4012360.635 1 +5.5825 5485969.422 6666070.462 2 +5.614166667 37121515.71 33466495.49 7 +5.645833333 0 0 0 +5.6775 5.570152352e-15 5.570152352e-15 1 +5.709166667 0 0 0 +5.740833333 8756.654436 10111.31359 3 +5.7725 3.183339059e-17 3.183339059e-17 1 +5.804166667 44669682.38 34022613.73 4 +5.835833333 0.0009344113392 0.0009344113392 1 +5.8675 0 0 0 +5.899166667 0 0 0 +5.930833333 2.448993576e-05 2.999392322e-05 2 +5.9625 3969272.399 4861319.431 2 +5.994166667 129188.7779 129188.7779 1 +6.025833333 11074958.67 11074958.67 1 +6.0575 19291014.72 19291014.72 1 +6.089166667 0 0 0 +6.120833333 18346491.14 17209121.94 2 +6.1525 8457774.359 10354510.13 2 +6.184166667 3.961520726 3.961520726 1 +6.215833333 0 0 0 +6.2475 0 0 0 +6.279166667 11547824.56 11547824.56 1 +6.310833333 0 0 0 +6.3425 1.432316075e-11 1.432316075e-11 1 +6.374166667 0 0 0 +6.405833333 0 0 0 +6.4375 3.152310651e-13 3.152310651e-13 1 +6.469166667 0 0 0 +6.500833333 1118.967575 1118.967575 1 +6.5325 2777566.427 2777566.427 1 +6.564166667 15590124.62 15590124.62 1 +6.595833333 0 0 0 +6.6275 0 0 0 +6.659166667 0 0 0 +6.690833333 9.316318509 11.41011331 2 +6.7225 1999990.962 1999990.962 1 +6.754166667 5281662.194 5281662.194 1 +6.785833333 0 0 0 +6.8175 0 0 0 +6.849166667 0.01034005732 0.01034005732 1 +6.880833333 18873797.49 18873797.49 1 +6.9125 1999.162513 1999.162513 1 +6.944166667 0 0 0 +6.975833333 0 0 0 +7.0075 0.0003229368518 0.0003954376901 2 +7.039166667 0 0 0 +7.070833333 6635.863154 8127.239175 2 +7.1025 715691.7782 715691.7782 1 +7.134166667 0 0 0 +7.165833333 9887177.241 7257668.831 4 +7.1975 26415812.27 26415812.27 1 +7.229166667 0 0 0 +7.260833333 0 0 0 +7.2925 0 0 0 +7.324166667 6829.114881 6829.114881 1 +7.355833333 0 0 0 +7.3875 0 0 0 +7.419166667 0 0 0 +7.450833333 0 0 0 +7.4825 0 0 0 +7.514166667 0 0 0 +7.545833333 0 0 0 +7.5775 0 0 0 +7.609166667 9932598.352 9932598.352 1 +7.640833333 0 0 0 +7.6725 0 0 0 +7.704166667 0 0 0 +7.735833333 1917493.998 2348440.94 2 +7.7675 0 0 0 +7.799166667 0 0 0 +7.830833333 0 0 0 +7.8625 0 0 0 +7.894166667 0 0 0 +7.925833333 0 0 0 +7.9575 3464.322299 3464.322299 1 +7.989166667 13685360.41 13685360.41 1 +8.020833333 0 0 0 +8.0525 0 0 0 +8.084166667 0 0 0 +8.115833333 4.86069283e-06 4.86069283e-06 1 +8.1475 0 0 0 +8.179166667 13.7659448 12.61004663 3 +8.210833333 0 0 0 +8.2425 0 0 0 +8.274166667 179.7592053 179.7592053 1 +8.305833333 7.441254265e-22 7.441254265e-22 1 +8.3375 321.7848428 321.7848428 1 +8.369166667 0 0 0 +8.400833333 0 0 0 +8.4325 6891802.625 6891802.625 1 +8.464166667 0 0 0 +8.495833333 0 0 0 +8.5275 0 0 0 +8.559166667 0 0 0 +8.590833333 0 0 0 +8.6225 0 0 0 +8.654166667 0 0 0 +8.685833333 0 0 0 +8.7175 25103.75439 25103.75439 1 +8.749166667 0 0 0 +8.780833333 0 0 0 +8.8125 0 0 0 +8.844166667 0 0 0 +8.875833333 0 0 0 +8.9075 0 0 0 +8.939166667 0 0 0 +8.970833333 0 0 0 +9.0025 0 0 0 +9.034166667 0 0 0 +9.065833333 0 0 0 +9.0975 0 0 0 +9.129166667 0 0 0 +9.160833333 0 0 0 +9.1925 0 0 0 +9.224166667 0 0 0 +9.255833333 0 0 0 +9.2875 0 0 0 +9.319166667 0 0 0 +9.350833333 0 0 0 +9.3825 0 0 0 +9.414166667 0 0 0 +9.445833333 0 0 0 +9.4775 0 0 0 +9.509166667 0 0 0 +9.540833333 0 0 0 +9.5725 0 0 0 +9.604166667 0 0 0 +9.635833333 0 0 0 +9.6675 0 0 0 +9.699166667 0 0 0 +9.730833333 0 0 0 +9.7625 0 0 0 +9.794166667 0 0 0 +9.825833333 0 0 0 +9.8575 0 0 0 +9.889166667 0 0 0 +9.920833333 0 0 0 +9.9525 0 0 0 +9.984166667 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/wavelength_tof.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/wavelength_tof.dat new file mode 100644 index 0000000000..21298968a3 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/0/wavelength_tof.dat @@ -0,0 +1,963 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=0 +# Date: Sun Mar 1 17:29:20 2026 (1772382560) +# type: array_2d(300, 300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: wavelength_tof +# position: 49.4198 0 -35.0741 +# title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin +# Ncount: 153447624 +# filename: wavelength_tof.dat +# statistics: X0=0.0554832; dX=0.0217845; Y0=3.51872; dY=1.4352; +# signal: Min=0; Max=1.24212e+08; Mean=29582.1; +# values: 2.66239e+09 2.63647e+08 2313 +# xvar: TO +# yvar: Wa +# xlabel: TOF [s] +# ylabel: Wavelength [Angs] +# zvar: I +# zlabel: Signal per bin +# xylimits: 0 0.15 0.5 10 +# variables: I I_err N +# Data [wavelength_tof/wavelength_tof.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 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.502968559e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.086029305e-05 344981.1577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.27147936 38296.89837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1358589.18 1323658.962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 304.5315077 3.687761305e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14595249.37 4.243285694e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.630128928e-12 2684737.45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71289.77985 5928445.698 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65606.35237 7233854.723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 162904.3433 812472.0627 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18226515.06 21006.46899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9232865.744 0.1279792478 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008328128082 27424551.78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5903243.922 8292665.666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2950812.015 15808247.28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8214896.824 14765.5865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1092876.822 154929.5381 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2145630.797 0.2102401523 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23822515.12 0.09925064875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69859.46757 5076841.378 2.384286924e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3693488.857 27387675.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.67452865 51026088.93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 475558.8053 25575179.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7347539.956 2104.402429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4738388.635 1.31250047 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1287144.801 22643739.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06078503608 4189.946764 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2138649.218 8191839.424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 271757.1659 9427435.143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1068373.427 5.789445321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 361700.4181 443279.5058 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14163959.8 0.01220871752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5988821.184 0.004151616062 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193.9727543 1187037.066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.83166395 35744954.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 126719.0644 9382.742258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102.7713635 8596852.727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 542.9773653 1546448.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3592633.221 5529.854152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3242094.999 1.569684568e-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 19681807.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27653.82768 83739597.87 1.819535254e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22954436 637743.7155 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 172927.9229 13.31582577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 409733.3017 0.01195076625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.378621427e-06 2129034.69 0 0 0 0 3.401774936e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7080191.897 0 0 0 0 3.470560075e-18 203.8316461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.544687791 0 0 0 0 95906.59493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009192009782 0 0 0 8288.533949 7968252.574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2177592.05 0 0 0 0.00514930499 8005931.346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22544116.87 14275180.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44034196.62 53552260.45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48758090.77 6407.979949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 308.6016213 16376.50576 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77036224.64 0.02483428378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5395134.865 12500.6711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28980112.21 38431426.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 675580.3573 7508084.397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525660.6193 1391.373738 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6257652.663 14224837.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26730884.07 63912232.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88391404.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11620672.97 4571415.521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.382370719e-06 32756087.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8547052.493 24395655.07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1093014.494 4695702.982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13652215.16 280.658248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41192704.23 36510236.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.605162501e-09 17445550.36 11792032.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43414494.12 0.0004554540244 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4880435.123 1401.456661 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6885107.795 42849.22367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8334996.138 16580925.45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26436154.78 2.524686971e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18040119.83 317269.7387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28629906.37 2.981201711e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 342.8312655 124211522.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8381.376238 34402616.35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.322772336e-17 302088.5281 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56184400.82 33989977.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8280076.11 6.246173466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6764939.831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8252374.128 1.805464422e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11763906.38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 476534.8467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.271813905 4332.273562 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1697233.053 2.804399409e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8337476.771 3.552177124e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9068254.83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4795693.254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1212205.859 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8236638.654 1.216131181 0 0 0 0 704.2822267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44263619.62 0 0 0 3.277945186e-12 8425774.384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3329851.839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.288629291e-14 4.397102253e-10 0.00275138108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 275934.2491 2.866199951e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 370969.2967 28417143.84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99.07170607 55.20881379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4363465.303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25787604.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 968576.885 3644386.006 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11486553.43 571604.3365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 478.0459385 2.55601846e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224180.2914 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3205623.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9447843.863 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006260662767 1948338.476 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10091913.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9542422.834 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1066534.772 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.41327785e-12 43519780.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2172258.495 3525170.266 1334792.221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.028277893e-22 27780916.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17643488.52 21157782.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3015040.865 0.0001325615061 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16435.53202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95.40352108 1.874735149e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3470761.733 9356158.991 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4231494.578 15640396.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7332359.229 5283236.331 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24256101.02 21569395.54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8123260.61 6047862.336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.009606389e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59171.99446 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27.08867185 29706474.01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28290812.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14227229.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.590001077e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.474448215e-14 5054561.139 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.598997484e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36947661.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1349355.019 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69762.53752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22674131.45 0 0 0 0 10470736.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.51723647e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52564496.76 0 0 0 0 1795.678967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15573.09953 7014398.988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.12888855 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40153.50717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3317749.219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.760533179e-14 0.08322930524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4012360.635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5485969.422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5542725.44 31578790.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.570152352e-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 8756.654436 2.720248682e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.183339059e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14734.38387 44654948 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009344113392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.448993576e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3969256.121 16.278455 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129188.7779 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11074958.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19291014.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14826939.26 3519551.883 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8457774.359 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.961520726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11547824.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.432316075e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.152310651e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1118.967575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2777566.427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15590124.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.316318509 7.714441386e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1999990.962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5281662.194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01034005732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18873797.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1999.162513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003228893521 0 4.749976586e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6635.863037 0.0001165513982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 715691.7782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5762005.986 4125171.255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26415812.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6829.114881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9932598.352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1917493.998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3464.322299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13685360.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.86069283e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.90254486 2.863399945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 179.7592053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.441254265e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 321.7848428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6891802.625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25103.75439 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [wavelength_tof/wavelength_tof.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 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.502968559e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.989452777e-05 376839.6132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.487285156 30959.16374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1401818.76 1004168.878 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 298.74769 4.485957159e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11430117.73 5.196942392e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.06581664e-12 1558794.072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73791.86942 3822157.718 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66956.15392 7283037.493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118772.1303 785615.5553 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16180978.25 21860.62277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5719704.655 0.1342194815 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008328128082 18206910.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6222540.997 7445739.611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2838163.52 8697970.526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6435250.924 15025.53447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 951043.6341 156368.0632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1689338.535 0.2175239639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11474211.95 0.121556723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85559.98922 2516039.795 2.384286924e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3893278.236 27439453.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.022191088 32719631.85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 487292.3422 17545217.01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5201246.253 2102.325571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4807213.298 1.354171019 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 771355.4086 24742477.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06078503608 4220.916735 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2466289.514 5526772.595 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 283838.2604 5529534.969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 712357.4242 5.326640707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 230914.633 461271.8877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12506423.92 0.009119476446 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3206787.172 0.003474618227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193.9727543 1037327.579 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19.43553142 32762039.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 101439.7001 9337.789641 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84.57736359 6949752.237 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 313.5712157 1604507.482 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3006087.532 6057.645868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2427476.703 1.569684568e-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 12551316.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31931.88972 41847571.02 1.819535254e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23890438 667929.4222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 152101.2582 14.23341656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 433728.6921 0.009192225162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.055996515e-06 2606109.471 0 0 0 0 4.166306401e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7647459.421 0 0 0 0 3.470560075e-18 246.2357228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.544687791 0 0 0 0 117461.1103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009192009782 0 0 0 8288.533949 8069885.575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2177592.05 0 0 0 0.00514930499 8339016.663 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24646847.77 12291043.76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38666416.93 46626423.33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29406408.05 6794.490227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 325.2698902 18309.47565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81203310.61 0.02483428378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5531545.551 12500.6711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28274352.01 26864109.78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 755321.8015 4727911.853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 606968.5047 1097.92652 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6468888.46 11191114.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21235627.83 51229662.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82011727.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8660888.289 4571415.521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.891874665e-06 33905768.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7217109.757 19431598.17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1135681.406 4551112.358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11016531.36 343.734749 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28988530.21 36263953.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 9.605162501e-09 17920560.75 9912756.743 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42828759.15 0.0004554540244 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5057827.077 1535.218846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8432500.461 43839.44415 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8068639.595 18537007.79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30525842.16 3.066684927e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19207042.74 356269.2794 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28901718.42 3.651211506e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 342.8312655 106140992.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 10265.04756 29544976.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.322772336e-17 295203.5786 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62815761.41 36206294.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6121594.09 6.38973794 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5254579.358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6615978.103 1.805464422e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7541066.187 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 354875.2475 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.932665312 4737.398354 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2078677.232 2.804399409e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9627288.803 3.552177124e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7305170.429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5537589.582 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1356287.448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9997607.606 1.216131181 0 0 0 0 704.2822267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41141759.33 0 0 0 3.277945186e-12 9420302.143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3329851.839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.288629291e-14 4.397102253e-10 0.00275138108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 308500.1171 2.866199951e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 370969.2967 21118328.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 99.07170607 55.20881379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5038487.177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31583236.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 968576.885 4463442.537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9909481.057 639069.0129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 339.2622262 2.55601846e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 274563.6622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3701535.401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11571171.66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006260662767 2386217.55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10768738.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11687033.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1151938.594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.41327785e-12 53300628.47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2172258.495 2852778.458 1334792.221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.028277893e-22 32078403.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11292145.67 21157782.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3015040.865 0.0001325615061 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20129.33355 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95.40352108 1.874735149e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3470761.733 8544338.473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4231494.578 18099468.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7332359.229 6404670.945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21322126.04 23797542.35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6209378.416 6047862.336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.009606389e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 68325.93384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27.08867185 20643617.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29965022.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10273606.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.590001077e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.474448215e-14 5054561.139 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.598997484e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26411315.84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1644267.499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69762.53752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22674131.45 0 0 0 0 10470736.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.51723647e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52564496.76 0 0 0 0 1795.678967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19073.07378 8590849.186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.12888855 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40153.50717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3702496.935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.760533179e-14 0.08322930524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4012360.635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6666070.462 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6067391.94 37633589.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.570152352e-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 8756.654436 3.331596844e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.183339059e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14734.38387 34014012.71 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009344113392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.999392322e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3969256.121 16.278455 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129188.7779 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11074958.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19291014.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14826939.26 3519551.883 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10354510.13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.961520726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11547824.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.432316075e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.152310651e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1118.967575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2777566.427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15590124.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.316318509 7.714441386e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1999990.962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5281662.194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01034005732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18873797.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1999.162513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003228893521 0 4.749976586e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6635.863037 0.0001165513982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 715691.7782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7045370.735 4060054.838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26415812.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6829.114881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9932598.352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2348440.94 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3464.322299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13685360.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.86069283e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13.3528359 2.863399945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 179.7592053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.441254265e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 321.7848428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6891802.625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25103.75439 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [wavelength_tof/wavelength_tof.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 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 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 40 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 9 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 32 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 20 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 12 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 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 18 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 5 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 2 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 12 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 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 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 3 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 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 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 2 0 0 0 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 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 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 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 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/PSD_Backtrace.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/PSD_Backtrace.dat new file mode 100644 index 0000000000..97492f383d --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/PSD_Backtrace.dat @@ -0,0 +1,333 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: PSD_Backtrace +# position: 0.123791 0 -0.138729 +# title: PSD monitor +# Ncount: 10622832 +# filename: PSD_Backtrace.dat +# statistics: X0=-0.85466; dX=5.98354; Y0=-0.00730711; dY=1.14411; +# signal: Min=0; Max=1.63527e+11; Mean=1.33741e+09; +# values: 1.0833e+13 3.27214e+11 1.06228e+07 +# xvar: X +# yvar: Y +# xlabel: X position [cm] +# ylabel: Y position [cm] +# zvar: I +# zlabel: Signal per bin +# xylimits: -15 15 -15 15 +# variables: I I_err N +# Data [PSD_Backtrace/PSD_Backtrace.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.633618896e-17 238208730.8 475696409.7 640326933.5 637472859.6 550099766.4 681712524 500505618.6 449515536.8 1099139594 559630613.1 743718125.8 426298663.1 403722388.4 521851964.3 378213342.4 558625950.7 690106852.7 607663163.8 793711939.6 627187471 575342833.3 737291758.6 664436341.5 1010060521 447916255 319394340.7 496235158.3 639661929.6 679793719.7 582953744 926830350.1 379439901.9 766295534 670901596 940954255.8 462437576.9 420652223.6 384391459.5 807140222.4 514829342.1 535520188.9 529399929.7 429137758 488969853.2 723138701.4 362395754.1 442000227.5 312056135.5 271427398.5 601631197.7 505647704 517702208 313527658.4 635613922.4 838880111.1 569663472.5 471630678.4 502533280.5 587086352.9 341361110.2 495143634.3 1159977828 439045371 187756644.8 475623166.5 367023341.5 260899935.5 625065184.3 281052279.2 482855609.5 441799120.5 435079479.6 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1068221232 1846832109 1780856497 1174007651 1290628193 2112174999 1845930475 1696505566 986120953.3 1567415687 1541604557 1799640349 1421556115 2477035618 1866436064 1108215622 1598423960 1939644842 1702529855 1474166682 1646157854 1312271294 1747784015 1966953897 1069036009 1480692825 1418830847 1534993722 1107394626 2090843197 1367634096 1260211378 1930193663 1580184994 1567444895 934754877.2 2352807754 1251180656 1237971529 1859407708 1944159329 1467223054 1178226316 1150794442 1812657455 1735772910 1116019637 1143558185 1527433507 1508721067 1156207064 1304241534 1201580889 972110741.1 1140230405 1966593020 1060276338 998122541 1580624522 797843537.9 1125999439 922588259.5 1321784794 1056547587 1139001835 833363016.3 789322842.7 1516684213 864934868.5 710215816.1 681973732 963764386 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2608366353 2473384681 3263089030 3029078314 3095918752 3262783138 2944230697 3326023264 3529792090 3225039430 2912299182 4513915708 3124433056 2546680077 3061383231 3242364153 3138668730 3364774544 2712302292 3282280200 3484706518 2429968915 3077049786 4120898971 3502122948 3717235708 2706304735 3200604838 2879871998 3146730425 3643616815 4059737615 6.190980046e+10 3485849691 2979619306 3318207031 3260677609 3003001076 2595898901 2753620634 2118410896 3611597289 2912305653 2899518969 2371743507 2826643198 2630541158 2365652999 2433157002 2661894015 2527138354 2430676621 2781302496 3245175464 2494027199 3190627752 2150594334 2390461250 2889889467 2783215639 2723798147 1898333997 2729729088 2695078485 1828848912 2743473042 2234580867 2102569475 1977041885 2087751293 2091514365 2454650059 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2307838934 3336929638 4676929138 4649612830 5401137421 5313099576 5805699893 5551625388 4798017545 6763603900 5189040755 6863320813 5131736068 6483719523 6856537116 6472734881 6524860211 6350650974 5820319878 6391867968 6066644621 6427293041 7605188210 6030727403 6098870812 6342956434 5339841655 6113775463 6101733486 6275861525 5730550411 8118072226 5859103018 7383965937 7514575756 6514545356 6199809599 5287022170 6280488944 4194534094 6268131410 4374271850 4563364903 5521120183 5374971330 5104687436 6192774213 4617033099 4508589376 6106260783 5039227916 4751680913 5158485965 5256119016 5124473829 4351863327 4445559986 4983976412 4862366493 5083046986 5111103045 4332461251 4075191835 3356727433 4709049209 5361045724 4998955048 4473021535 3785463802 3610494984 4081956332 4004920380 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3067197941 3819117832 5681979943 4605043957 6222802196 5818555834 6220860397 5132275543 4596162933 6675721826 7723590973 6981240852 1.099416255e+10 1.285793815e+10 1.629611256e+10 1.514217917e+10 1.466539869e+10 1.476508498e+10 1.5460139e+10 1.406714722e+10 1.403948244e+10 1.715958078e+10 1.365900203e+10 1.42754028e+10 1.684710473e+10 1.574828352e+10 1.390487322e+10 1.658813131e+10 1.657079609e+10 1.405628543e+10 1.454167797e+10 1.29276884e+10 1.306170039e+10 1.147052377e+10 1.175384714e+10 1.106028555e+10 8601021678 9669768165 9130641418 7698265053 8145476453 9382562421 8655199578 1.01967725e+10 8292870740 1.052148452e+10 7822797146 8921561023 8038668617 8822063820 9328967562 8732088283 7150641639 8323044596 8583724352 1.002855227e+10 8499272564 8969830124 8930463103 8305280102 8591107037 8580293806 8711130962 7142196252 6439369561 5718402990 5920417822 6362893062 5757631878 4721856002 5324442203 5524769537 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3082211024 4027878821 5835571968 5198309514 5197717178 5628791867 5670976474 6217117951 5833876665 7091625851 8181647690 8766908353 1.022105102e+10 1.88222713e+10 2.178337046e+10 1.98767863e+10 2.120230472e+10 2.152808133e+10 2.354720741e+10 2.211649537e+10 2.414009715e+10 2.48416408e+10 2.306863194e+10 2.316294765e+10 2.185707631e+10 2.170404898e+10 2.465711301e+10 2.363067919e+10 2.277024532e+10 2.358687922e+10 2.162732649e+10 1.842468071e+10 1.544107591e+10 1.241807248e+10 1.091972103e+10 1.112902335e+10 9347961169 9172551579 9272135178 7522976566 8171410261 9498524087 9308901047 8938782719 1.008885662e+10 8823995803 1.001099935e+10 1.032803832e+10 8701472663 8490489864 9597334837 8650458743 8997478189 1.125461547e+10 1.023695331e+10 1.220276064e+10 1.143406698e+10 1.004202521e+10 8973871527 9522698383 1.008103631e+10 1.013515457e+10 8846932400 7195057246 7169998573 7868927298 6300926500 6925967488 6398291679 5664062520 4577498198 4478012612 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3130666923 4483661998 4247298921 5076023476 6575654359 6398254000 7082621764 6491327502 6208553173 7264435630 7542445741 7665356991 1.149787437e+10 1.894953618e+10 1.951211088e+10 1.953528139e+10 1.891547687e+10 2.000202459e+10 2.210466519e+10 2.417524068e+10 2.464943014e+10 2.316142834e+10 2.219398143e+10 2.19875267e+10 1.635265093e+11 2.535964265e+10 2.538026385e+10 2.282101403e+10 2.225453884e+10 2.213852158e+10 2.188763383e+10 1.680473427e+10 1.535257808e+10 1.245681027e+10 1.079603022e+10 1.198025286e+10 8102907903 1.014254682e+10 9073719904 6883708376 8914511573 1.142768521e+10 1.006777894e+10 9452139957 1.066172674e+10 9267481595 8908046145 9891860395 9017645400 1.005992133e+10 9061452776 9112844228 9483838129 1.135463366e+10 1.183128412e+10 1.154457444e+10 1.249218893e+10 1.142587057e+10 1.043758923e+10 1.12628205e+10 9034495958 8857162080 8158948829 6924440836 6335810218 6145031028 7627971520 6119709915 6544626153 5232972253 4637804688 5633398273 304653 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2722067636 3887276891 4110512878 4182571136 5633167516 5664169185 5367980649 5688181809 6981891131 8416036244 6672592382 8179382698 1.109519631e+10 1.916204203e+10 1.839812467e+10 2.017437991e+10 2.040044182e+10 6.835807709e+10 2.203833933e+10 2.311322661e+10 2.200640824e+10 2.291171807e+10 1.414293848e+11 2.255692406e+10 2.287051873e+10 2.262596059e+10 2.246692657e+10 2.298458295e+10 2.389519181e+10 2.173438459e+10 1.899918379e+10 1.744280624e+10 1.519247867e+10 1.288281888e+10 1.039707663e+10 9166337800 8311862474 9555132289 8795216246 7843850227 9012035973 8490576944 1.051678767e+10 9624718160 1.062402464e+10 1.053821732e+10 8675002405 8647380420 9454378273 8611463395 7938963564 7495543765 1.018974196e+10 1.157207928e+10 1.393329562e+10 1.090952104e+10 1.194339643e+10 1.18821616e+10 1.024585796e+10 1.065702627e+10 1.00519948e+10 9596830865 8796800675 7895895883 7610430970 6468594682 6871302858 6544207043 5950566229 5531241255 4484216325 5772903157 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2065557800 3544981430 4783296802 5169454312 5110318011 5740839587 5923202379 5305587461 5892634513 7857712865 7436773898 7923881405 1.13663857e+10 1.87580001e+10 1.672579302e+10 1.874132179e+10 1.935808426e+10 9.087214501e+10 2.011814466e+10 1.324971933e+11 2.075448585e+10 2.370793634e+10 2.080949074e+10 2.317546062e+10 2.215430981e+10 2.199938784e+10 2.130087424e+10 2.352127847e+10 2.354390785e+10 2.152740139e+10 2.075092983e+10 1.702077159e+10 1.295798687e+10 1.324527955e+10 1.045786042e+10 1.055018213e+10 8599480661 9424480841 8770939380 9864486915 9090877958 8895955674 1.016574077e+10 1.06896062e+10 1.015083614e+10 1.015888787e+10 8898638533 9466153782 8107506216 9689229614 8495363812 8138676911 9513654241 1.086412549e+10 9726238144 1.168852837e+10 9997969120 1.119233066e+10 1.023714297e+10 9429541647 8021425298 9292859224 9523808778 7165360009 6518943020 6052478977 6900953489 6208534378 1.161331958e+11 6159962384 5104619313 4874346726 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2865987478 4256882329 4420545181 4652513563 4951767872 5467147430 6077246180 6590480875 5781878088 7243401718 7342489890 6970953223 1.153419666e+10 1.780981288e+10 1.773504719e+10 2.013886423e+10 1.846733778e+10 1.929866716e+10 2.084387527e+10 2.161888521e+10 2.328882172e+10 2.219910549e+10 2.306745975e+10 2.253269112e+10 2.333079981e+10 2.272973431e+10 2.182894946e+10 2.208772382e+10 2.23856182e+10 1.880540377e+10 2.044585289e+10 1.671795577e+10 1.511718504e+10 1.315084356e+10 1.201588942e+10 1.107079445e+10 8857890715 8775086631 8564987755 8759136960 9327876915 1.027779975e+10 1.005211526e+10 9412254115 9352869640 1.061043716e+10 9414126978 9814535163 9262234536 9365506378 8642481907 7660266093 8244208168 9868944183 1.190832572e+10 1.195700998e+10 1.150366242e+10 1.096979854e+10 1.126646464e+10 9880928279 9920246145 9302672424 9041659962 6564231037 6550159230 7045307105 6779671152 5174962446 6057364693 5534643989 4493710866 4613403663 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3725320511 3769109172 5609846692 6248701553 5452151653 5964649270 5710802401 6014975614 6153783135 5879929360 7465523243 8348600973 1.197663566e+10 1.833546167e+10 1.816128485e+10 2.085091222e+10 9.738621693e+10 2.284908671e+10 2.09475234e+10 2.270395006e+10 2.345438894e+10 2.17701689e+10 2.183353099e+10 2.169388068e+10 2.135728502e+10 2.253669613e+10 2.100374948e+10 2.311411414e+10 2.337018991e+10 2.245992829e+10 2.01494276e+10 1.761631604e+10 1.321603794e+10 1.176304625e+10 1.09470688e+10 9318445249 9873407193 8217888819 8019507788 8893612548 7869729027 8717336875 1.056291217e+10 1.028875209e+10 8750716047 1.094855634e+10 1.026743943e+10 9073487880 9377230013 8224649261 5.913724425e+10 8475310562 8247173584 1.281373401e+10 1.127000587e+10 5.341311057e+10 1.148751683e+10 1.02092069e+10 9379826793 1.032993944e+10 9872170594 8804220588 1.082807658e+10 7697461528 7330299477 7820481130 7432021245 5939590282 6019115935 5939645233 4884672582 5134952591 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2227246308 4012056354 4740493114 5790848494 4613012454 4949864533 6101935768 5217481019 5854539655 7124878050 6989545215 7055384731 1.118645241e+10 1.946621638e+10 2.017870579e+10 1.900785291e+10 2.251128668e+10 2.324237043e+10 2.184854507e+10 2.368382321e+10 2.20876952e+10 2.369400568e+10 2.355622598e+10 2.345832542e+10 2.320508533e+10 2.612523844e+10 2.322909652e+10 2.495481838e+10 2.330758021e+10 2.413642029e+10 2.21435491e+10 1.825551924e+10 1.55639341e+10 1.189301936e+10 1.163092949e+10 1.251307603e+10 8666731435 7647009258 8109598221 7948163626 7496345888 1.016631176e+10 9800790940 1.00672863e+10 9701699580 1.029792066e+10 9593495918 1.059723256e+10 9077454802 8948293501 8838362338 8732064509 9617317666 1.119779036e+10 1.210095045e+10 1.184908275e+10 1.18139123e+10 1.071378677e+10 1.129331545e+10 1.005066588e+10 1.15385951e+10 9914728893 8.620231751e+10 8389539342 7726268960 6999191360 5571477753 7655794942 6462275820 5293406722 5695771032 5923592064 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3056228692 3310591403 4693195583 4838762207 5328550601 6215151308 5174754895 6615110051 5591542798 6623494831 6984157203 8035360203 1.014574874e+10 2.069576572e+10 2.120145406e+10 2.047099545e+10 1.957691258e+10 2.33546293e+10 2.353406224e+10 2.385740214e+10 2.578522594e+10 2.421783975e+10 2.303274847e+10 2.244921024e+10 1.310501593e+11 2.28803814e+10 2.368407487e+10 2.432260642e+10 2.193659254e+10 2.306347641e+10 1.002958276e+11 1.942068233e+10 1.501402177e+10 1.292293705e+10 1.101282124e+10 1.321204289e+10 9223216536 8590982835 8623369467 9014699091 9194508635 8355448680 1.081855201e+10 1.007229014e+10 8969159171 1.115578115e+10 9209088649 7.926878371e+10 1.016256602e+10 9354024383 8460347830 9387929732 8849457964 9601349519 1.15185682e+10 1.158376695e+10 1.139193609e+10 1.005077713e+10 1.045433221e+10 1.117754212e+10 1.039641234e+10 9131130355 8749515243 7245933200 7600560378 6398713105 5283217046 6769545039 5968421863 6032787740 5884344979 5821991816 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2930104662 3875810300 4616227845 4121004835 5671118830 5263514038 4896410810 6643953704 5821311859 6674748605 7620234651 8898825830 1.196983814e+10 1.398333343e+10 1.327215143e+10 1.493018725e+10 1.623263576e+10 1.61855357e+10 1.462500499e+10 1.519788132e+10 1.589190825e+10 1.658608868e+10 1.598184235e+10 1.448567744e+10 1.733009253e+10 1.364929285e+10 1.65974086e+10 1.483745691e+10 1.571974713e+10 1.536784996e+10 1.647629919e+10 1.463329526e+10 1.282959744e+10 1.227591041e+10 1.085516249e+10 1.164436111e+10 1.054512e+10 1.007708062e+10 8703032968 7272291698 8757940661 9109921888 8594861690 8707596834 8766579067 8323556157 9681314298 8399070546 8586945206 9146318436 7233951165 7960315010 9656519281 9789670391 9618554210 9623488797 9066328189 8912050916 8073485058 1.012309969e+10 8128171662 8577533055 7659670324 7688425427 6740886121 6608145183 6060510323 6873111181 6118954631 4767194756 5544157656 5207555973 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 4.094035527e-11 2711708323 4283045345 5047488840 4343966606 4414035246 4605661855 3962325973 3715007975 5422502475 4446392268 5333698808 4959007514 6035613016 6975073077 5801494006 6149357669 6030013801 5239183189 6186728726 5520690711 5063661022 5068664784 5946121571 5079607880 5689618462 4675832968 4609700119 5679770752 5625002142 5798584444 6200273131 5239728868 6001878819 6541861920 6517713680 5853536990 5021415094 4139119919 5070364189 6192470544 5198999141 4829454938 4408816028 4574468091 4578557073 4753626560 5899612811 4073831212 4395990225 4851693279 4761635726 4809364096 4151471710 4775027642 4172143634 4039798658 4282767401 3781947307 3760465711 4390639400 3526069819 4795907390 3923208414 4033816013 4806217308 3955687200 2766897510 3433261409 4196088910 3565432231 2757951290 3446187941 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1550422153 1679614788 2833948806 2353034230 2199093201 3538553995 2973430152 3677118790 2989024899 3354823729 2741244001 2519170955 2556828917 2376755399 2786166975 2807435277 2485020522 2518650791 2936186725 3151460002 2536939193 2193973628 2745388035 3111138023 2471234421 2682325572 1875535128 2735675146 5099036598 2461512768 2091493568 2258993560 2386478188 2720708699 2697875821 2971623825 2532834698 2882255239 1924292046 2663598704 2314448468 1987800092 3016858860 2593268015 3847354721 2312048571 2857684128 2767359538 1709830810 1916807026 1981063875 2238918947 2108133651 2380173823 1582507726 3255250212 2849353807 1777516904 3146907146 2206445088 2554374858 2181964926 2199092329 2084288597 2135716927 1769471046 1444523523 1869779246 1908581969 1675014724 1940352753 1806658499 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 770224249.4 927146097.8 1997692545 1012182827 1168640571 1315551217 1342271381 1856016416 1214608971 1029688201 2163280983 1341090325 1323867700 1509311912 1073983240 1082635783 1836369772 1190853410 884690098.6 1455868872 1618017009 1950128872 1523425859 1135522411 1286006022 1165952784 925464181.5 1050086173 1684920607 1298050522 1555883744 1342993588 1197639155 1303448158 1285499480 1082553487 1100053097 1408537105 1092592318 1007294332 1382945874 1260468309 1345869401 1429458556 881354180.2 1089288590 768542446.3 1767917160 880565402.2 1394542971 874770440.9 1141355912 777230471 991072868.6 463090944.1 784864327.5 807026011.2 1176281082 976476549.3 1096980956 1103712561 1111533759 864121551.3 646954072.6 705304315.4 898738871.5 690316132.8 500061239.1 677670001.3 821529232.8 837397701.2 728825641.5 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 472713774.5 805548899.7 984285792.6 430977746.7 393833552.9 780511626.3 533615303.1 1006913019 542859509.6 536134286.3 740772530.1 398875328.6 426074746.1 256177321.5 658203038.5 642116144.9 362604547.5 513855963 514949030.8 436229255.3 729119782.4 746256659.5 757063427.3 520449061.6 610220975.4 365055593.6 247977691.5 944841679.5 275732218.7 392224115.1 443541203.1 448757580 775632828.5 363316715.9 352592177.2 335815316.8 516120516 651267243.3 496085009.5 471729383.2 572532450.5 643678817.5 531476486.8 450907961.7 372515407.9 406690974.7 1385913878 530504180.9 515050295.1 480854517.3 369898370.5 589890934 575513819.9 564994741.6 157506945.5 317276366.2 315984015.4 692633571.7 500152963 279831447.5 580468255.9 484452234.4 176660622.4 211994563.2 507791362.2 543511333.9 500640041.4 866340072.3 303192125.8 562815409.9 278208157.7 528696466.3 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [PSD_Backtrace/PSD_Backtrace.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.633618896e-17 75250447.09 107585626.2 180309150.4 197496992.8 126509776.6 187547364.2 116470493.6 138630731 347585822.7 213793348 243440926.1 123998566.4 103949294.1 123300330.3 83903940.75 152043705.1 176472550.8 155707675.2 514304060.7 166267229.1 188366400.5 225569951.1 145609000.2 296965223 107026588.3 78168293.5 116460949.6 223702745.4 177112511.2 113130908.5 305747064 138969948 197540823.9 175400157 256259978.2 138635805 109960945.6 120360470.3 247474813.8 126557448.2 133976339.8 125091453 103174878.6 144570438.5 190387968.3 104597594.8 113346958.2 81815702.82 72115355.75 157304107 150633377.5 126940563.1 94536464.78 189857234.5 254106509 181393025.1 138152362.5 207801612.1 155156070.1 85608200.31 154542758.1 591119814.5 170176240.3 48441974.82 139969754 126797718.3 80318215.4 261502268.6 79118270.67 157597934.2 93567088.56 194049649.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 260392899 495691731 272632621 298273958.4 196793023.4 464432786 359033637.6 313605133.1 186768029.1 257203059.5 223463611 332303332.7 230301746.3 601171125.1 281173137.4 211998542.7 287509759 606588846 595382597.7 322273108.2 262585566.9 226625635.3 276750304.8 325717139.6 183372143.7 246420088.9 217735284 264718069.1 148050344.3 411035484.6 213526019.8 180299557.8 314033228.8 329192785.4 274869305.5 146506339.7 464838796.4 221968263.7 263237181.4 525314432.2 539452825.7 316067768.1 203892227.3 175844039.4 385248140.8 488955059.1 206134235.4 184124330.5 289068146.7 401112503.9 205805268.8 243286316.2 261893457.7 223160246.3 229110766.2 655393763.3 259724873 350253083.7 545213290.2 153560474 227351006.6 237945322.9 280455114.6 241534118.3 200317169.3 142346715.7 155601541 471283803.6 257405098 148805338 128876191.8 246514981.1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 566116390.2 303601980.4 354761089.9 336565023.1 530021583.1 435848672.4 346843821 444719328 461369300.9 370379777.8 371214477.1 621786959.5 335834540.8 281872598.7 471826478.6 419388221.5 431273977.2 406145153.9 296495024.1 421296554.9 500834221.5 266021523.9 438857237.1 697530420.2 508641235.8 574661810.2 304509911 388299243.6 323570751 372676568.5 658098582.7 903300955.1 5.835786669e+10 465132514.1 354998838.7 467528384.1 426709508.9 430212127.8 300341480.5 361090124.2 220013913.9 586742091.9 399812052.7 407417033.3 276653649.6 343058670.8 405910941.2 313757387 359507505.5 539736976.4 328153798.1 307779478.3 484319060.2 537717174.9 285174790.2 486584915.5 303663750.2 301165604.7 442107345.4 351249455.9 544936589.4 213764586.8 403936079.9 384809667.5 237255466.2 494542180.4 400322141.8 314194117.4 322110073.9 300032370.1 316732709.8 617564644.9 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 236731513.5 521867333.2 453063842.9 410256540 496658939 657329162.1 740150798.1 519020508.4 436739567.3 786038925.4 416453214.8 681644917.8 386670076 581424974.6 628962688.6 502144723.5 619434658 641427989.8 498881716.3 703738031.2 546618485.1 653681610.4 882958774.9 607373632.5 663301167.1 653752560.5 560822941.3 570725502.3 578673464.8 590564656.2 548188197 769488918.6 539884853.6 612640013.7 737151801.7 606930482.6 554795160.6 552100794.6 588579578.5 397996898.4 720183437.2 379535131.9 483365337 673799042.1 548597850.9 533867602.7 786462737.8 471668813.6 390528111 691751501.6 557466232.3 427740874.4 645073856.2 634265030.8 512296235.5 487456981.9 514762275.1 499944324.8 607997995.6 649363361.8 545940029.3 459942659.9 436417237.4 333856323.7 574532568.1 639765168.6 527028992.8 504604615.3 364303731.3 437304853 546939477.1 544911373.5 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 578803458.7 369881967.7 567910005.7 377451780.2 497114396 542835745.6 676858288.4 404222686.7 362885137.1 541917432.5 624040707.8 486614067.5 769017480.4 904167611.9 1259056651 1083300203 953029019.7 1066226534 1084608465 841647490.4 910726744.5 1194007373 927699170.4 842364795.5 1050984472 1055150126 941820736.4 1164967870 1055880786 925165211.1 1010699539 941156333.7 933097272.2 810560104.9 923356231.5 813309685.3 925158646.5 715634760.2 679833230.6 653854637.4 687682044.4 840369425.8 748787334.5 1408068886 628671034.1 865896400.5 592615410.4 660980046 614342245 657510232.3 745747918.3 610236879.9 566049319 607678512 605923214.1 734667773.4 758927493.8 710779335.2 737513915.7 665464770.7 727184821.6 941333024.3 1025562314 655514987.8 597331876.1 511692424.1 658739137.3 583955889.4 555157921.6 462767212.8 478879175.4 585386801.5 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 355758514 434282924.5 531544298.7 469315888.6 474544956.7 504120536.7 537155092.6 549939736.4 490379195.8 654207224.4 836685957.3 684136977.9 643751643.3 993877179.9 1162089227 990299664.9 1317662201 1035609959 1267866932 1029758360 1179000109 1132472413 1161014270 1075142396 1072986624 991512078.5 1097127528 1050431144 1018465392 1088536914 1072087555 981422159.8 1078053507 815916561.9 711990905 750036815.6 737157419.5 599323891.1 576678153.4 523374549.2 608967695.1 651969067.5 598254282.5 572911539.1 657344674.1 535475865.9 637218502.2 709245353.8 541572447.5 539199300.7 797924824.8 574988006 580193279.4 723755865.3 687608993.1 908721599.3 1006257099 774595422.8 656383123.8 729288347.6 798518465.1 857334044 740702791.3 635887496.5 619513819.7 795637094.5 603570456.9 628257309.9 511933304.4 581689650.4 389668909.9 406182454.5 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 377611257.1 580858954.2 400515460.8 505248918 617408277.9 503900119.3 670294237.2 677578274.1 462065370 561256144.5 638491696.2 608120637.7 740684814.1 1021386845 1013444948 975567506.8 890092500.6 943660806.7 1035908970 1131162398 1003021921 953280656.2 932801053.7 923115863 1.388689665e+11 1102890686 1171330024 906733422.4 1019143488 1019860162 979829798.2 910635277.2 1011652255 896720593.7 696446859.6 870400984.4 608792427.9 680198369.5 626667669.6 486602859.1 596446036.3 962359166.6 679653294.8 633332200.7 636027372.6 648933085.4 650473336.6 760661570.4 588910642.4 635699975.2 607298117.9 673568791.9 727869956.6 775661927.2 787331746.8 863456399.8 937877333.5 770905988.7 684233944.2 857788195.8 664777419.4 731550990.9 678175031.1 571447856.8 712511894.8 467446953.3 910738462.8 568681960.5 683730207.6 397786197.9 473326420.3 503602464.8 304653 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 328389579.9 404960306.9 372473096.9 386854522.6 678113192.4 459941570.4 551095005.6 478765028.6 653833673.8 1161499567 526598872 601238130.8 698194737.3 1104135560 921029495.4 1052211079 990771388.2 4.717718573e+10 991747012.7 1029473242 991301405.5 1024193168 1.165826435e+11 977980647.8 1036811914 959264991.8 1030744749 959227454.3 995499298 985440961.8 853689928.9 1016300326 1002229166 933626897.8 979416169.1 593705286.5 567889316 743301589.9 563419867.1 525229197.6 646639804.3 522357000.4 784813767.9 627833146 672132187.5 707787471.4 559770868 545166457.8 641144788.5 546802552.8 505978704.6 510319817.5 805271991.4 811313127.8 1023693525 714951173.7 878064275.6 780852300.9 780419267.1 813774494.2 801911563.3 711930135.4 684868788.5 711755199.9 738068239.3 836198376.8 516310857.7 704157435.8 469631436 466699449.1 334600220.3 686541207.7 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 281448075.5 368446553.6 395128338.5 491849790 450154668.9 595307800.2 518201895 465968900.3 479795048.5 678504156.4 632076154.1 642219718 792166401.5 943171615.4 857160633.4 1134634536 1081468742 7.174783532e+10 1016878755 1.100709184e+11 941047751 1011498589 893395529.4 1007505008 969325382.6 983422440.8 982301315 1069579758 1034921610 991882550.2 992204232.3 933501110.4 806381453.2 1116092556 717466473.4 667403073.8 669297788.3 879916208.3 624919046.4 696003411.9 581393934 609612991.7 696142638 669088809.7 731151973.2 758498060.3 548278445.2 602369741.1 519313002.3 588555859.2 564493263.3 579781741.9 706809631.7 703586398.1 648834363 855830268.5 677790280.8 782603517.1 693187441.6 650426840.6 676115865.5 668686668.6 804106098.9 568898064.8 554529550.9 556843188.2 537234527.7 488760840.2 1.108839689e+11 497820689.4 421640675.9 427995922.7 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 311174779.8 475149860.9 482067410.2 478983495.7 439634372.2 477377216.3 593728232.9 614626018.5 589200269.2 658003714.7 637930135.1 608774491.3 1008092772 1048965173 884310890.1 1170606681 944950132.7 934202107.6 1108523549 981867329.4 1151687449 944284676.3 1035315297 1163319834 1061305608 1096033998 959548052.6 984444050.8 1019611820 848285717.9 1049668160 959167636.9 947023553.2 965366177 705247763.3 647714322.8 654694689.3 659228171.4 532113351.7 549652609.8 645340515.7 624036195 634215900.1 547642073.5 557599034.5 666052213.8 662993522.2 596992253.3 613476128.3 546260735.3 584967961.9 545361134.8 551138473.9 648713486.6 845600445.3 774914427.5 805758107.4 730446973 881651694.9 771258563.8 795752352.5 664296513.1 733898564.8 568380460.1 709712771.3 559856413.7 566803913.2 365837567.5 530216668.3 455118773 349259482 394593281.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 679122104.2 374519150.3 1137572806 574606222 479299257 643505633.5 521190022.5 467438140.3 535943108.2 655300449 568034364.5 598099285.8 974437349.2 982411489.6 1117839886 1128311469 7.801655035e+10 1146907223 988370045.4 1033837239 1050060457 934885776.8 979087255.8 931605749.5 935944391.3 997886646.2 887467556.3 993855286.3 1006390668 1052218923 954037838.1 918322077.8 926566283.5 756951849.7 700163779.7 593972753.8 653300510 615739975.2 500329208.9 644181739.2 548299017.8 554141548 977391861.9 627360558 544513807.2 778424309.8 745930928.4 604502415.7 896330147.9 574175184 5.080780383e+10 585887242.1 543824240.9 820238293.4 734778914.9 3.968351795e+10 867246472.4 792382809.1 696173893.1 701705095.3 711333375.5 667710275 945295494.6 643311888.7 573037036.2 978839460.7 634140670.6 536049890.8 507512118 519278462.7 381234888.4 487975587.3 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 258154786.5 373994092.3 507488783.1 516560766.2 412420284.6 433804894.4 521900151.8 428091618.2 512695249.6 657521148.9 650126405.5 477098348.1 726702623.6 1028110303 1065921135 926488357.2 1257331663 1132260803 978904160.3 1030485404 941865949.9 1004022753 996072787.7 1052353061 1040441102 1087711932 967694933.9 1026301003 1077376489 1075200817 1034406326 951866374 892001522.7 801034942.5 791176575.1 829012559 644106393.7 522890906.7 628818956.5 540055876.3 461972494.2 736669245.4 616999034.2 642041474.6 621304301.1 769855258.4 595956117.9 801152193.9 547729755.3 625760187.6 583627586.8 596117922.5 686200545.3 685656006.8 781853103.3 824611175.6 804461222.8 695605764.9 1061547483 670474339.8 1900026668 748108780.9 7.833296609e+10 643907362.7 795724550.3 674789849.3 434744725.7 626946786.3 675594998.9 414575088.9 498947795 599777300 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 361091027.5 338319766.1 428797349.6 467770165.6 482933559.2 605925527.6 438088102.4 633859426.2 623835385 660081440.1 585067671.2 672130810.9 635833710.2 1004903972 1189603596 1002506884 968972028.1 1209085082 1124677242 1117114530 1402010203 1072578191 980428762.6 986513334.9 1.056887502e+11 1037095123 992892143.2 1135070596 935283789.4 1099831294 7.801872473e+10 1103839335 931050036.5 901477925.1 938863851.9 856059544 720764478.6 598056889.7 569240928.2 663769050 666355888 576833925.3 698782440.1 612879541.6 572224607.4 856106442.5 540387633 6.985156907e+10 726739370.7 637747423.2 550262998.6 589962818.4 589615892.7 682231667.7 735739985 803957069.4 908123124.6 714031217.5 802737322.9 930835483.3 750163283.7 661408994.6 632213785.9 726792576.5 748384361.8 540139480.2 385959136.8 610960189.4 487774157.7 506880982.3 595237761.7 763556047.9 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 337349685.4 399347553.3 422179726.3 398691431.6 608849353.1 470138065.7 399256510.3 580247775.6 485624917.1 544003451.5 685839833.2 717307494.6 1075215528 871210025.2 761112622.6 996236217 1145706693 997579263.4 936565331 1051649046 972283149.8 1045278468 966769113.1 866489264.9 1120491784 827769745.3 1281461793 887942670.5 1102411507 1016881890 1141517591 994095408.9 1019473296 922733803.5 634180911 761549987.5 910461193.9 857758440.7 674787303.7 508089987.7 741427733.7 684603620.8 651479642.1 779488975.6 793206839.7 586862238.5 774783756.6 623662291.7 648139931 641918204.5 575325804.7 688874768.6 712865505.5 1045472227 712189359.3 961465500.9 706600868.3 731728193.3 647117094.2 805230784.1 754799376.8 839753767.8 580668993.1 707197665 577090793.7 572726130.8 505835890.6 652285742.5 577324851.5 483232924.5 521140853.3 767164304.7 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 4.094035527e-11 328243605.4 753501906.2 542141132.2 395065511 392763797.7 435564796.6 410583846 354899793.5 549058317.8 614005176.4 630322474.6 416551488.6 703105759.4 604234688.8 557033163 576408480.9 683056622.1 503795492.1 734770820.7 587503235.4 513820147.9 504980483.2 822785238.3 525457706.6 632301061.6 430747132.5 451806033.9 632336398.3 593028104.9 592100560.1 591268658.1 423501098.2 544340730 594872031 674354383.4 606944959.7 444903236.1 427712614.8 646476853.9 914556336.5 498653236.9 525323198.8 489306632.7 432810446.5 545539974 489655315 759714368 502072906.8 562875552.4 528392659.7 645582483.3 487947308.6 446037217.6 697648169.4 490564862 473393137.5 451077636.8 381671254.5 418668904.6 474468704.3 424389616.2 480485221.2 459463178.2 455757786.4 527450037.2 406762397.5 338908250.9 328216217.3 530473214.8 462907442.2 315674639.3 389058365.2 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 364841192.1 239868020.1 362979269.5 301035434.8 347068193.4 561133609.3 356188385 645110553.4 461773964 523267593.1 387689389.6 297609637.2 301711558.5 332969371.8 541117292.6 324669602.1 322277916.6 287510634.7 397565239.5 455255695.7 335257492.4 462851973.4 347516170.6 526630546.1 261272236.8 455456019.1 231780055.8 388780269.5 2046121672 383230000.9 238218095.9 332485066.8 309224513.9 304722622 436403720.1 405543269.8 354764028.5 483712973.7 247345730 458844989.5 450212661.7 265350807 463159770.2 336795833.1 824559222.9 349481730.1 441302343 603305640.5 204747902.5 222443597.6 350582371 248229749 445121649.8 352530815.9 209309985.4 665505659.9 465752297.4 209733599.7 515847256.2 370173917.4 431523358.4 335836949.2 325633971.8 346530879 355973596.7 272858654.2 221167807.8 384813287.1 272705440.3 228669265.5 303683698.6 260726895.1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 137114766.9 172896904.5 358296490.9 221068302 281381920.9 403390374.4 217331497 411736228.3 216568319.1 201975464 989505342.6 289472601.6 264512597.8 320430993.8 199379180.4 179893993.4 345134879.4 225242531.1 187430540.8 367002333.1 302024990.3 518600198.3 339193525.2 222289810.9 230326542.6 263874744.4 187624006.7 226063668.6 371895249.8 282279699.9 295506388.2 335366785.1 276144524.9 292294139.2 293947515 253240339.5 184117367.9 246094186.4 283025168.8 225717496.8 220867130.7 233103894.7 274462549.4 338482624.6 187771572.7 258077056.1 159094888.5 360601646.9 140171339.7 225518243.9 167644389.4 266878378.5 144903362.6 169059037.5 90514212.57 205588240 135087475.7 310349709.4 218820815.6 226810446.8 272157439.2 255060326.5 185408090.7 125402560.7 145210960.9 233119642 157775912.3 131308129.6 165071044.9 200257417.5 197173239.8 138903998.4 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 137150202 254910282.4 368078230.7 127800637.5 101369083.5 223079217.3 163033109 350175554.1 131259649.7 117788269.2 186437477.8 87149102.86 99411980.9 83870144.28 302860526.9 184225000.4 106429091.3 200807255.4 274450286 131521632.2 186044816.2 220536751.6 202095420.7 114598069.9 182050776.1 94616619.41 106077205 284748392.3 83806358.74 94394297.84 128820716 138534289.5 209826293.6 87813717.36 94550742.44 90614777.83 151455752.7 260702696.5 241650250.9 158381323.6 200223411 174688124 184187034.7 144203783.9 107202991.5 125139770 791328921.3 172600481.6 165072762.5 135305632.3 106037142.6 177281480.3 140072266 149978610.9 42658641.16 83339382.58 88566466.15 170785842.2 155551369.9 90031996.4 193725389 171973300.7 71246226.12 53224591.94 133376161.6 206763595.3 171156262.7 388706278.4 86143084.26 201770953.5 90894900.93 155645886.7 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [PSD_Backtrace/PSD_Backtrace.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6853 6716 6662 6646 6719 6522 6554 6500 6509 6519 6414 6434 6317 6293 6271 6176 6202 6343 6029 6212 6142 6187 6063 5838 6169 5877 5931 6068 5860 6007 5851 5924 6074 6162 6127 5974 5929 6043 6096 5921 5860 5672 5712 5701 5576 5424 5506 5460 5489 5391 5321 5143 5183 5014 5195 4962 4972 4833 4791 4803 4608 4592 4419 4490 4535 4347 4166 4119 4187 4082 3967 3894 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11310 11623 11508 11342 11318 10943 11073 10877 10577 10665 10252 10025 9485 9233 8871 8820 8914 8904 8830 8963 8855 8912 8987 8807 8871 8913 9131 8918 8883 8867 9113 8858 8947 8833 8617 8675 8756 8372 8032 7839 8179 8083 8101 7950 7845 7905 7619 7640 7611 7504 7613 7238 7111 7092 6974 6787 6924 6796 6687 6605 6513 6390 6477 6316 6205 6130 6060 5852 5988 5733 5385 5433 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 13372 13594 13846 14196 14195 14180 14445 14157 14034 13911 13805 14045 13727 13613 13382 12842 12446 12244 11831 11944 11794 11539 11436 11681 11523 11593 11836 11706 11678 11563 11895 11801 11987 12509 12606 13022 12716 12334 11999 11575 11660 11559 11314 11353 11076 11250 11182 11013 10716 10681 10716 10669 10516 10368 10141 10302 10145 10023 10107 9767 9598 9727 9684 9484 9356 9151 9128 9157 8872 8761 8439 8416 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 12240 12726 13106 13397 13279 13235 13323 13133 12990 13245 13361 13224 12751 12443 11526 10669 9314 8210 7570 7418 7186 7306 7227 7122 7299 7279 7288 7377 7460 7517 7524 8052 9015 10527 11981 13186 13696 13972 13632 13325 12921 12680 12536 12187 12196 12159 11989 11942 11825 11746 12058 11787 11764 11443 11326 11365 11238 11151 10782 10970 10648 10524 10551 10399 10198 10306 9970 10020 9735 9259 8947 8777 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 10786 11145 11542 11534 11681 11884 11806 11577 11519 12019 12393 12450 11852 10557 10091 8554 7021 5348 4490 4291 4530 4485 4436 4486 4649 4480 4602 4713 4651 4635 4720 5285 6547 8329 9967 11417 12109 12761 12428 11728 10773 10041 10082 10067 9639 9544 9366 9312 9332 9405 9621 9678 9654 9196 9140 9234 9070 9207 8976 8960 8902 8903 8616 8594 8486 8376 8433 8273 7834 7802 7422 7073 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9322 9760 10082 10077 10110 10218 10304 10045 10154 10503 11204 11778 10874 10220 9407 7853 6054 4425 3548 3661 3777 3846 3741 3789 3799 3906 3836 3875 3958 3858 3775 4206 5360 7217 9049 10693 11999 12633 12483 11927 10618 10114 9980 9746 9424 9431 9166 9079 8955 9109 9269 9459 9179 9029 8828 8976 8928 8781 8560 8474 8289 8264 7986 7876 7470 7487 7261 6972 6743 6368 5883 5795 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8168 8256 8756 8822 8961 8951 9050 8705 8999 9586 10300 10419 9637 8653 7979 6811 5040 3378 2755 2736 2863 3042 2956 2970 2930 3013 3127 2982 2862 2772 2733 3053 4192 6388 8471 10488 11705 12575 12697 11799 11085 10347 10123 9916 9802 9351 9293 9076 8938 9100 9265 9346 9257 8955 8936 9085 8832 8925 8820 8618 8472 8328 8043 7816 7530 7245 7029 6915 6613 6263 5935 5535 1 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7579 7967 7992 8074 8409 8384 8318 8253 8313 8950 9661 9603 8793 7887 7172 6034 4211 2778 1992 2021 2199 2242 2291 2245 2281 2228 2145 2203 2231 2009 1864 2361 3623 5529 7925 10174 11557 12087 12388 11678 11008 10080 9954 9591 9542 9335 9108 8835 8568 8814 8975 9106 8903 8809 8631 8667 8742 8442 8583 8406 8335 8260 8024 7686 7658 7389 7125 6819 6678 6176 5917 5460 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7616 7599 7868 7855 7823 8323 8372 8341 8206 9170 9398 9519 8656 7957 7141 5778 4176 2599 1869 2011 2046 2190 2118 2100 2115 2112 2053 2096 2045 1956 1800 2259 3461 5648 7927 10013 11383 12288 12264 11926 10894 9882 9609 9545 9444 9400 8813 8842 8431 8537 8616 8836 8784 8843 8399 8771 8709 8696 8496 8235 8232 7964 7886 7680 7273 7095 7088 6762 6343 6033 5867 5303 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7458 7662 7838 7900 8130 8257 8391 8064 8118 8749 9414 9316 8581 7683 7151 5933 4002 2592 1891 1893 2112 2134 2085 2140 2091 2148 2044 2066 2025 1849 1741 2228 3587 5730 8045 10326 11461 12168 12355 11739 10962 9878 9562 9524 9399 9243 8934 8840 8532 8485 8621 8596 8665 8309 8550 8620 8607 8520 8489 8331 8146 8252 7835 7764 7345 7204 6973 6653 6440 6038 5833 5416 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7819 7730 7722 8132 8077 8196 8236 8133 7964 8936 9609 9658 8535 7823 7046 5982 4131 2708 1924 1999 2170 2205 2190 2160 2121 2128 2130 2161 2054 1841 1863 2246 3552 5712 7923 10135 11459 12225 12410 11875 10832 10072 9724 9711 9474 9121 9081 8671 8492 8503 8812 8986 8695 8766 8246 8766 8724 8499 8564 8415 8328 8064 7957 7665 7491 7128 6891 6814 6402 6233 5745 5427 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8022 7905 8305 8664 8535 8662 8611 8497 8523 9159 9900 10118 9206 8362 7653 6475 4674 3273 2523 2447 2651 2733 2775 2769 2728 2802 2644 2830 2689 2569 2431 2923 4152 6143 8329 10544 11734 12386 12656 12015 11062 10394 10007 10027 9611 9561 9238 8860 8877 8739 9041 9314 9354 8758 8932 8899 8766 8515 8836 8538 8267 8165 8084 7747 7508 7328 7086 6866 6597 6326 6072 5584 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9059 9345 9666 9481 9634 9963 9956 9827 9623 10301 11000 11457 10669 9793 9089 7723 5704 4400 3723 3565 3712 3738 3840 3757 3822 3787 3902 3755 3796 3606 3571 4087 5272 7035 9074 11062 11675 12673 12552 12144 11042 10192 10185 10075 9768 9307 9012 8966 8808 9047 9282 9511 9303 8914 8850 8940 8889 8864 8718 8468 8374 8262 8058 7783 7564 7286 7139 7042 6735 6393 6048 5551 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 10471 10798 11082 11031 11248 11436 11164 10958 11208 11699 12454 12353 11700 10678 9830 8447 6488 5097 4313 4152 4206 4180 4261 4271 4441 4420 4456 4437 4401 4427 4544 5179 6125 8007 9694 11174 11873 12052 12110 11373 10239 9722 9627 9379 9164 9034 8868 8514 8479 8608 8927 8978 8675 8487 8494 8466 8441 8573 8328 8360 8284 8357 8190 7955 7855 7859 7907 7718 7629 7358 6962 6647 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 1 11915 12433 12391 12626 12724 12903 12656 12613 12602 12836 12776 13170 12014 11512 10726 9497 8098 7111 6300 6180 5968 5934 5967 6058 5893 6032 6090 6259 6218 6339 6354 6958 8011 9508 10674 11603 12419 13066 12726 12332 11685 11514 11471 11499 11153 10954 10828 10794 10691 10662 10835 10829 10521 10570 10599 10375 10605 10346 10304 10455 10275 10323 10053 9746 9768 9708 9686 9737 9430 9248 8757 8574 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 12135 12405 12541 12493 12587 12643 12559 12328 12497 12474 12209 12295 11752 11796 11608 11364 10913 10675 10277 10416 10016 10067 10166 10102 10266 10085 9949 10121 10046 10002 10251 10290 10670 10697 10946 10880 11053 10948 10669 10554 10487 10444 10370 10343 10226 9888 10150 9955 9729 9646 9614 9842 9361 9712 9501 9366 9173 9247 9211 9166 9037 9074 8932 8640 8795 8407 8410 8349 8209 8017 8136 7866 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11342 11702 11588 11645 11439 11446 11194 11198 10987 10721 10518 10449 9524 9064 9045 8993 9023 8865 9009 9058 8860 8911 8872 8924 8901 9018 8954 8889 8986 8879 8883 8899 8854 8659 8631 8408 8319 8095 8239 8005 7929 7897 8080 7886 7822 7728 7521 7695 7366 7404 7433 7452 7325 7148 7114 7008 7080 6914 6991 6785 6699 6587 6538 6543 6329 6190 6248 6047 5963 5758 5819 5772 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8601 8777 8476 8395 8135 7894 7945 7889 7502 7650 7277 7115 6688 6613 6611 6565 6651 6778 6621 6602 6529 6689 6576 6497 6701 6769 6609 6581 6543 6671 6737 6688 6671 6589 6587 6536 6252 6345 6461 6406 6440 6265 6246 6318 5950 6082 6083 6020 5975 5815 5837 5879 5732 5622 5542 5381 5437 5370 5325 5306 5354 5141 5132 5037 4875 4764 4761 4805 4755 4535 4452 4523 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/PSD_cut.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/PSD_cut.dat new file mode 100644 index 0000000000..3e5e4426c1 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/PSD_cut.dat @@ -0,0 +1,333 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: PSD_cut +# position: 1.69078 0 -1.24822 +# title: PSD monitor +# Ncount: 10622832 +# filename: PSD_cut.dat +# statistics: X0=-0.000143389; dX=0.287533; Y0=0.00811166; dY=0.288024; +# signal: Min=1.00158e-20; Max=7.17965e+08; Mean=1.05054e+07; +# values: 8.50941e+10 2.19134e+09 89282 +# xvar: X +# yvar: Y +# xlabel: X position [cm] +# ylabel: Y position [cm] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.5 0.5 -0.5 0.5 +# variables: I I_err N +# Data [PSD_cut/PSD_cut.dat] I: +22132123.93 42687786.52 4338412.977 57007905.96 538.2881189 10812764.9 46827.36974 139446.9272 5339033.588 4124291.39 11193768.81 22289792.2 837076.9895 2.940745838 144879.5625 30309599.66 168167.0188 2150.525592 65940.47446 48652.57988 37.02634079 120.492878 4814410.549 16721643.55 9437761.084 410356.844 1938.78548 14371.52771 188.2699134 1999467.575 43095187.5 5445.797967 37595.26294 17744220 11887.30318 88152.90457 233581.2319 18356581.2 1365885.881 0.2748081972 4619285.066 1958702.966 34949070.75 23353553.72 23583096.09 200295.0576 13154386 46214672.98 4918950.5 226585.0647 43552060.59 15630510.95 202650.4531 581622.75 18187386.59 7376768.484 112893.5755 0.0003452575057 105782.6852 5.232443678e-05 11460.50716 16766581.03 78002.86713 130598.4001 3.832374469 33440656.88 5911164.538 49660644.65 0.0001978210376 1.497644414 5.623079989 26453188.26 37734149.06 2001103.741 28867014.8 1088880.42 0.7024980113 12964276.37 3222781.047 27370.12029 63608973.71 4724033.303 440566.1639 1349.846497 0.1538416571 24583442.44 13408235.11 1363387.651 986579.6084 251787.8133 +2259393.798 7362.090029 85711.50657 16055209.64 1743774.463 32422271.12 2958076.603 4160072.618 16109395.68 102614.2691 72233601.04 14217836.63 4399147.72 42422755.01 0.3489225003 539332.5228 3419082.069 2375.662963 331216.7605 43077181.99 48635405.69 0.311677717 12208.60885 16134201.25 0.3645289715 10151367.62 693.409367 1367557.694 11052166.56 1878416.191 10169.13942 5082100.908 20618276.73 5307.412006 6516614.517 60340272.19 23045737.51 74932994.04 931946.1626 1064797.959 1021676.669 108211.7462 176569624 15008957.77 30571.23446 8929409.637 24287.13299 18183035.77 10821.73029 24588.81521 27.47606144 44991.96296 190.5579823 3161212.444 17911039.38 8212.328359 6096930.947 26.96413159 16379342.48 777945.4268 35140080.04 17160936.77 1699.352822 173519.6388 7743336.861 20819650.15 141609.8037 259948.5047 4423281.771 74445.61987 0.002040106438 7185610.141 3047148.89 51183856.36 17552915.59 11428265.78 3426157.43 8760742.307 298607.8405 5868179.989 12086.15123 59047.31169 8085313.103 147559.7473 70386.73921 198795.1819 1.13544879e-08 45815879.89 3946392.436 577.0994873 +191222453 52919988.94 16244581.42 1776.138155 439245.7259 17087.51515 20951353.98 249401177.8 0.005034347631 41525.84336 22918270.83 220483027.1 20075.98837 1432826.867 15042.21114 26581035.06 2.772497892 22734988.69 2121558.19 46206.75982 11500499.98 356.8779196 64.86236742 1465.983127 61491848.07 5316041.432 385.3610286 3966189.653 14081.50349 50757.78589 5.650348945e-06 1984.318198 532850.8185 1140224.513 16172028.92 2849160.629 3488607.276 1941538.557 6735167.515 6756222.562 26717.12947 24089129.29 41193387.66 526.6762695 14296444.78 683460.9384 7406.959225 7710843.002 16879115.38 441379.2754 285049.6218 2195036.577 19946782.62 1975558.58 29831346.99 627875.6399 31.80437596 188.3685761 509077.45 12335880.44 5.346445554e-07 142259.0747 3187196.906 1113.213867 0.434833721 15868145.04 24620873.03 39633.29722 173.5352614 1504367.809 938292.6061 20.05375318 16026.79937 8414814.544 4172354.586 76983.03763 1728.556402 169920.405 533242.2606 68132213.22 49020972.89 155120.5708 2496.882394 61296.2653 6876960.962 0.2928589492 8272048.186 1236052.949 80789.65444 1158.119732 +3110569.375 9685191.58 33358804.27 631.150792 2.196582411 102180429.5 3175485.931 9.680750683 2768199.697 5.673210144 13536368.23 5654634.85 1115204.835 839685.3847 61002.97376 4726342.174 274160.8438 272281.2694 2042826.816 4.529019528e-05 7675.658521 204653.1186 22754306.27 8541440.753 7993454.065 2913978.62 4379697.002 228833.8672 3348663.829 26478.37078 6007.744072 16262061.09 10470743.65 16718.51994 16505.69354 82835.26597 16133893.93 12893.66232 8752457.862 53712280.25 86.03184438 14018.27679 450811.9258 18167743.55 27579025.96 6529941.843 3117070.865 521861.8384 10838841.67 15995390.95 81390.84732 14136370 4219268.866 42.855557 443668.6185 15559.92578 57964.77905 5389.980058 41.5687149 3432317.723 22314.67561 70387213.25 1.584297725 136.0755519 709638.9114 52141641.84 36724.7939 2672117.99 15587.75033 1.110228945 48204856.18 14.63168016 30014.69836 1005.606812 13233668.01 9429155.507 203659.0894 11924796.82 85598.00328 9343066.601 734.7308371 2293785.643 26.37035596 5444767.87 8419.884135 29712.57658 44212665.23 478353.0315 405658.3134 347.9772674 +176.7663907 56358.17344 3478185.38 6109088.222 1543136.268 1819162.591 1210214.871 7724977.71 237252.2863 68410.8257 27264.53163 5352533.648 6649384.71 3.037550932 57407.62967 2.852640285 307.252316 844242.853 102386159.6 1032.100171 65.18855485 17.20554229 23514134.17 5375878.264 87554.17023 684.5068647 293604.0087 1999736.369 45840723.63 18905042.33 35780987.39 3318502.194 34363.08984 3.79629719e-07 7374951.712 341453.1421 4430780.635 13182255.85 80.73789852 9660.086986 18171639.2 3467755.467 7078.011699 4005112.049 30821866.03 108072957.3 2584200.7 0.2810981633 1853645.229 1.79022573 48175583.69 418634.3775 6125278.84 319422.313 3590.857219 49623.51679 4115150.802 1622067.499 8519710 23378863.9 2202846.92 16118052.3 103.741231 859.3828104 60.02585174 0.1225223362 7539.502786 394553.1799 12121.59493 1388546.819 17776321.2 4413.44148 180974.7388 3621512.502 45376.74374 4700574.974 10.71441174 7034.01283 94037280.24 2578706.742 13583512.07 925745.1202 14.11503497 13460.32821 7825578.759 1195008.99 17386337.32 641622.0749 17559946.34 11975685.16 +12.04396879 15588.60722 213183564.8 2876171.219 16614951.69 3627949.396 42954338.7 70620457.29 23870.85759 2179583.874 54.12703382 5477500.271 0.00988993044 26637.47581 1689749.925 31.92632756 79536459.33 160395.2251 9350140.333 2336.79839 10129589.87 10734.87983 6779932.935 69613.05813 11382188.95 6622820.314 1544563.166 11110868.73 0.218978722 0.08910590816 0.2036712416 280420.2188 104581.3077 27137.68254 12836939.23 1882.222396 237145.6924 156664.4148 558266.0334 1877803.283 23117.47743 9106412.337 75.36250325 188210.5589 6154131.217 29348707.26 1638455.029 0.001130688576 1213.207367 3882776.626 14095667.05 98696.92899 4784068.501 2672838.175 43281580.99 8695298.923 1433.026443 45591428 13098517.86 227.7114463 28841519.37 0.1038231007 12828689.64 624107.6346 12406813.38 5610610.421 3856898.217 3.377592302 2577338.718 6710675.071 103363.2371 10287213.31 186923.7318 38368.30914 109935.9075 28143606.34 7.676156321e-05 51532660.21 0.002059937921 2550619.976 15324.31102 7215831.148 663500.6801 56.91357077 672105.8044 0.0002107161292 4242.176574 45953106.42 10633857.75 2199249.433 +111568.5565 21146935.4 2.19901069 708.5378011 631067.1522 88749.22251 227.6815218 10645837.71 8555790.73 143501937.4 14999704.26 101.6626792 6812088.121 238.5156917 4766914.006 86902.71448 812.9860657 0.1240732966 11927.0307 1473.038415 18629.8548 22392755.73 87149899.45 13441526.25 15992077.12 2061.083812 304.4738506 40280.02908 6519774.454 1575738.829 227402.5159 9771256.249 1061093.344 12923195.64 3198937.669 105.9001684 29200784 10051347.25 1085087.375 14842.46756 8828.101369 5517.591428 23070.3962 6.980507646e-08 14488660.88 206999.8016 15696276.85 23860757.79 85607.34334 12.30819189 0.006094582633 82986400.82 28008871.43 25145346.25 0.6767162254 625808.059 5509223.625 13117431.7 556717.6445 8775911.946 40878190.98 5174.077776 191.2396543 77187.02322 45639.25695 85651.00546 297307.7673 2590.025914 798098.8006 15331.42058 0.03074444393 43519.18662 18109707.25 219821.4553 15635020 27.57047662 108831.3085 31308.18091 497512.8945 20098.46302 3588021.148 38038.85082 4.859157366 2261247.615 1.00518985 3334.262083 31063486.41 41972014.02 6.925668721 144325.4533 +14351.49048 18611484.26 28.95042142 372332.0026 48.60581885 168.0196191 0.110812739 38215889.21 359777.5375 300733.3586 319.0050257 47446150.99 9581586.488 11464.51175 2820781.691 13529.83965 831101.322 0.2365306796 12165982.71 324225.7366 64161118.95 6554169.018 572551.3088 0.001858008303 308216.7224 9138205.143 22213368.14 752.7692811 25137028.88 2375.610891 1227017.712 2635321.234 8.949272156 116634870.9 2592257.094 10515235.98 35.07465068 379498.3659 10847153.42 3978309.383 1019878.256 228980.128 0.3651110451 5392037.419 2281552.718 10375551.27 31349271.73 19359.95911 18710.27081 1955.63849 75564055.08 2773083.364 71667.60982 26455356.58 5011814.945 6997045.255 3.124004609 1121228.157 4074755.341 7089836.365 79.9770776 816180.5868 0.0007111505453 260377.588 0.0004306318839 17472.82837 246175.6251 869.1863037 27275792.58 6210.189482 44481452.42 1194165.017 150593246.6 7227815.377 253115.4535 15584600.29 5987410.582 9303905.666 2356974.5 18877.62073 2236943.809 45871123 2477570.348 479940.1096 4608244.819 19513081.44 402433.0731 41801476.37 6.488529959e-14 8286909.407 +278093.8958 320.4673719 456216.2601 10890421.32 696359.125 5.460544518 6789968.725 3331373.295 9331496.298 58001.88544 404.6087552 6.707471497e-06 61707.21703 184737.893 95426691.91 1150.743579 5572754.891 930.1284484 96636804.41 1.244192046e-06 23962557.33 425860.393 37418103.08 264403.2322 222600.5566 398163.546 150826855.8 98.49693828 11374940.96 148.4103046 416002.1688 30580352.6 2178438.123 3379581.747 69585.71996 1766.434749 588650.7566 7027272.716 9787516 1212042.207 101444.9382 1697.750127 445184.8621 10137089.51 28899.979 35995.45607 9631.471713 38618255.46 20.23361588 1664894.875 964296.6059 11531838.06 1.188800481 14989766.92 1824324.73 39.30804437 30966.37441 9.447893658 70005382.63 240089.9258 19193.58501 3417952.89 2761763.698 3.456408066e-07 133985.5273 42715316.48 988311.1114 8158727.496 5877.091035 231062.421 2531139.876 233.0146653 132023.1863 0.007256855357 5610.799641 35931.29889 499.9302368 11419613.9 14175151.82 26070295.11 327479546.6 16223.43902 85783.91168 21599167.93 715084.4223 249.5633928 283089.0999 12030844.92 20312544.38 6912.321648 +20770889.59 1434769.788 10659037.54 2008557.924 1810747.28 22539.47768 17595074.38 0.8497986283 13125735.71 0.4792278793 46118335.16 3235.542729 2053712.005 35806954.11 12973.2065 2211307.804 27061482.36 49756.07814 18706670.24 870441.2393 259604.1045 13289956.54 173.1724665 0.4960411607 12540612.41 1702002.743 10263945.19 4.032582749e-05 2748.095657 4194846.421 1529.481116 14109368.4 8.781216111 1.061606646 102.7841 208360.6398 7317136.524 236.4190844 15198716.46 973806.778 17446.21664 205514.5811 44810289.46 52327892.41 0.007256312249 27.21753373 2181570.271 379.498128 6655423.939 620921.9525 8734044.282 91753067.47 18043737.28 0.05438793423 67098145.75 3.797213587e-05 2423568.128 5853664.667 30716646.63 1507581.479 1169122.079 4.432466085e-06 41948.25548 1143684.96 924.7146662 10787421 42.63501433 39.04294471 19703278.04 14674.28996 80661093.82 22168.19821 0.002817451448 574.9965635 507776.2657 21836.46802 2255015.039 1.711277192 4013442.334 1106.014163 69607.16084 161141.841 1251311.07 66102.10233 8323022.885 351381.9422 991086.8556 8462465.414 52750667.48 385.3651435 +2360.964506 3965072.436 204.0397159 28324016.35 192645.9515 106.0980458 15507896.58 9119460.541 52587.70971 5815567.297 14845.69787 11264.79691 22724285.86 3961598.013 216573.3055 10738436.19 101.6497843 0.0223374515 9064960.894 4851.774326 1340129.279 2378466.748 12979363.69 27836934.9 13300218.23 44635284.24 212784.2944 33446819.16 38492222.09 45191243.71 13061.77828 3906.011257 1839105.091 891.8092227 74500610.41 328087.5259 6298829.655 3623513.787 2775.102946 67756601.89 2191366.799 13355215.89 69.4727172 21506.47887 0.0001949900295 188955.3358 76490.87936 9182940.62 11462519.48 35762702.8 0.0005052996025 1963549.442 2674.633671 94308.17288 2677337.335 2724314.352 368.927619 37174.66101 6296456.072 26736390.19 1264868.145 3710746.88 365.7647096 14150982.29 27260443.96 5894219.163 6157189.962 20411924.58 68294.86149 2286915.72 1969.685715 18.16843178 195220.7791 23627825.94 10352505.08 12928243.86 12768824.48 3841.138868 2.525812242e-12 5574917.419 22751344.32 2192664.269 0.001448603206 20680474.49 36631.84109 4616.637085 41558.5159 1385850.565 1716974.911 15085962.59 +5703795.21 0.003768176364 1297837.04 1.428501303 5111862.902 9243536.512 29011556.25 7023380.972 5000812.998 7887756.267 1384016.505 138640.6092 175631.172 156704.0787 233.5051638 23422152.07 2721665.127 10551199.54 36946868.39 407735.4689 0.06247370016 2.179198678 3811.225436 825.6028163 13279.29785 58536170.62 1549.284341 23283066.33 4861.988519 668442.1904 3739222.625 26004832.13 162397.6243 30595440.2 1658944.684 1471493.678 10197196.56 49574.8635 1304847.842 80232083.6 75.4026289 0.005143178902 1268019.151 6188089.316 16487242.43 34173885.18 66091585.4 1969716.544 9932247.135 1039021.396 70877.23655 5302242.624 6640.162677 381.5115697 1002608.265 216.4810055 469929.9189 66379.99082 30742.43538 1245735.399 58.2362823 55501355.22 2002472.382 163656629.4 1094989.108 8995741.252 21590897.63 5192238.327 52708105.3 9.149878715 22382532.33 12042829.28 592467.6784 6024397.156 93782.63836 20409.13504 1705352.143 88015.89761 20086169.55 2259.708978 25331.95125 18376449.82 490857.5659 0.6003405965 4691731.899 7658611.607 364529.4804 665398.1947 2113948.739 11606854.18 +1.874458692 34314.58428 4536330.581 128554.0216 0.03865092872 6664254.254 35255608.06 38993863.81 109777357.5 1092134.943 478387.0739 1676492.59 2295.430001 0.001481850492 38.28617263 5157212.471 3388.757092 11418017.16 215.5717329 350.1466191 1093.537878 124490.0802 61.08182556 52524.06896 25858937.38 2868906.305 24656.65676 466.5656132 563518.7112 489167.3472 27471.32375 65234808.15 5779941.24 845.2640381 0.009629646433 952790.7307 5470534.664 8.236118987 0.0004109247169 100246.7916 9793615.079 5379274.813 25912559.26 1419874.553 1009269.923 45.3960529 6701181.627 32270411.4 1044804.196 1176.746151 55460643.3 150161841.2 8.396463721 0.6471142769 1526.64613 603308.8945 287.5088674 22802368.54 54008380 5223.056039 69230.06135 73.1845633 3.685705757 63280042.11 3385.935739 354.2413636 35099.26187 7.012212977e-07 1329.536014 31031329.09 0.5513464791 28227220.04 966554.3674 725753.3168 0.0450339379 1084618.905 8042607.969 0.003523025426 42.7460843 640152.1816 1487.800859 18069.35917 326038.9764 85439.47267 682134.09 13666.78342 248653.75 72870813.23 117402.285 36880806.82 +2.841872375e-05 2.774041228 13835026 9088269.992 63948351.09 14433398.73 10701870.61 5369.827056 27637.32837 5067401.185 4910356.682 170267.4347 15573.72097 100.1009565 15331326.66 15.00703073 622.2154566 9254544.667 2700322.852 6298024.764 4097198.609 18931961.53 7762097.51 4474153.656 266476.4063 674054.2957 387392.5057 52937140.33 1128.446776 37350.2711 15237911.7 80703.84949 77865976.13 94823997.34 74786562.25 4205102.723 1546.388357 70694513.42 40467.71982 1769262.403 469208.9074 10457038.37 315098.6031 23513.85915 336.5075324 58165.68716 26688.92847 22.39498343 3206631.515 42683430.15 330557.7232 0.1605654175 152733.56 2387142.445 72270.18154 514440.9002 114693.8313 2806387.306 11673176.36 1912580.535 539526.9063 4.806197888 971302.2821 9749765.141 0.04106211669 373048.6755 97387.5671 49.87368897 997182.2223 7470354.336 3554645.803 9991765.035 4028.442635 84806318.59 3868.481759 8931416.539 57207188.23 4.191355908e-10 3.203989176e-07 11107555 70228.28322 0.0005132127774 48213861.75 7758564.498 40975954.9 13061.89999 2132067.064 333519.1314 2086739.754 8948.610762 +22804.34298 11561573.48 14845.41493 1.305546728 10164516.9 4803.883384 40695718.11 147.3218386 1054.15291 3374.227757 22118530.93 184804.577 6324307.232 24658.48273 18648987.49 34.82012913 31701973.86 3090185.34 7954105.994 14553.56128 711.6342228 280161.7566 2114486.031 4501514.059 26621144.34 33.34697671 272613.4901 44266.8909 2530105.296 0.02379017789 116.757799 50446144.3 46365764 15981994 986253.5625 6839657.341 4000842.175 4.065944083e-06 0.1245062822 1343804.385 1121287.541 2191446.534 592962.7325 114700.6028 1954878.456 0.1445762162 12553.70944 3372834.041 4946766.757 373142.6085 0.0008250434398 27960.86219 15529202.51 5523.272516 373667.3518 26851202.75 10.20907732 928980.6993 21464955.91 29.33671016 5208840.033 1506877.243 1018.012374 29746508.13 3859820.937 808099.1295 62889.23162 2870370.578 1023.554474 21098.6631 124388.5213 1975497.613 25948719.62 18771502.17 301583.4711 13385571.23 136514612.8 1.008636077 51869.03598 9081.561766 14952220.02 392.1822756 38534.45076 3633192.629 4071131.059 23221074.79 23568843 429432.3132 2858904.103 699542.6242 +608.7944567 15940564.92 443.2209747 25671364.47 440.7839031 3412410.533 58269.40132 644123.1436 1.927281255e-06 415350.5842 4098326.599 324577.7507 646890.057 72792.64147 1316565.644 1654760.216 3795651.047 8438143.282 345698.1897 4295289.62 31966832.35 297906.6303 2387892.922 3768003.026 3414058.992 567004.7922 29.81538204 605907.2081 22982286.13 8975611.817 74688.91901 144188.4352 12131.99809 6519789.577 7.015879034 54051335.62 19908499.05 1.381378331 64.76640412 919399.1281 258611.758 3762859.475 260587.3863 7213134.901 26081260.45 767936.4156 14826211.55 1979117.221 70796509.56 3063144.521 425.4173201 381500.5894 2.020807844e-05 126273312.2 6940648.254 1.227218171 305042.9289 3281805.929 67.3876287 3558356.807 370070.4072 1082083.5 662.8976364 2557428.385 17275.77143 23861160.38 5946.724566 2526.545165 1195.156357 2400.213561 10046476.42 10849633.25 3.720355091 31114985.35 56483.70213 2480.785164 10766117 157528812.1 265023.8949 2916.688646 58.80927153 280383.2596 100835.1306 15607403.1 278285.8889 817821.9793 29853.93636 5880466.186 2.078837959e-06 3972324 +7342.086948 16672.52008 442.8303909 19.65921984 7106033.76 26821917.83 838712.6336 1309528.173 24171263.16 43653319.33 816964.8173 16498313.99 6193810.723 16371776.41 307835.219 2973.511795 444388.5219 3607610.265 273.5447216 443669.6181 1.215906583 2592450.212 4283744.107 5054.544558 0.09466693193 92951.12495 20575583.37 4902526.584 15276671.92 1432.915092 13827903.56 4795.271457 24597.76901 17761637.83 268864.786 183328.2733 400.6977185 30753.05193 51821.53757 82311140.37 501.7718478 4806.229231 9327207.462 8700579.638 3462705.763 0.08055221175 6798521.658 2492.630563 29277.34765 55956951.83 4523859.173 9226696.603 9741.046869 10550.23481 1.008742706 669563.5457 12139472.82 36944757.83 9410793.004 52401650.12 155300.7773 2768740.612 1848922.454 15445.87328 39.68585666 474935.4342 28788794 2973726.154 4479166.503 6487932.14 12417294.13 15590.07046 1705493.026 0.004235280087 9000626.571 199583.3022 1269.431163 2.999662594e-11 31676643.15 817150.4106 3363464.453 8229653.705 67389.81191 14681703.57 7240006.286 0.0004418667051 6461000.182 9279791.709 5166662.884 1807692.966 +1826276.076 20763218.9 4030910.582 407.0007993 16819.73802 907.7416922 35067.09154 43997976.81 140048280 55818727.9 6092012.571 44806478.51 3950055.871 152889.4895 7090511.783 11844.4513 79987.14779 5241649.156 4800035.871 270.8280638 3854368.765 31083235.07 10956953 374772.8423 116.2573013 44878862.7 14090400.03 4498858.348 792864.4665 747879.9065 18528097.93 140.4531735 184200069 26814.92723 7730.163917 9364544.426 62.16497495 7626197.028 13223140.65 74.81438689 507.81482 147067.6649 33610967.15 361472.8207 612936.1514 159771.5973 1590405.81 128111.3334 167556.1518 1739349.698 3176113.168 31896.04459 27528885.5 0.7487180101 31268715.11 4001.581008 200238.9961 18503.4013 16407.41407 6163.511193 0.009249917492 203832.1082 728593.4588 855455.7068 239937.1701 8701.175218 0.0117729722 402.2560842 271.4738789 5.850404529 6456527.389 6782291.949 13.8765159 30662.76973 8101.603715 88263007.36 26936.13826 1131675.716 39537.03937 195580.9223 196810.0908 49204.32879 1885463.224 551367.6164 488498.9529 438373.247 8389521.302 8.070899115 880.9832615 723726.1517 +5724690.361 1353075.956 63145605.2 3578.388844 646413.8128 0.0002218348854 2111157.571 2080478.544 128111.4325 602041.1897 39052.78646 21.5190636 208137.0512 2613.651794 88.90401729 28793492.03 8749.248684 1.601379692 807119.3141 3070099.413 18163869.29 543291.6916 4.91836496 51635546.86 0.007107597204 212.2853117 135.7066353 603048.208 23681834.1 8918178.338 40800.46587 3697.061884 14963931.16 46354.90223 526787.7913 28605.77144 17652188.46 31834354.74 1114084.998 22139597.36 18802229.09 40023.03645 17392813.75 6510887.206 15137057.27 3616.065841 32137.82349 0.4097047522 4599917.203 0.4440162932 29122079.74 10561190.31 17090029.19 430438.2616 200.449183 4584423.717 24979.78234 1275504.917 94928.45676 722198.2058 19812420.56 0.1219618811 534179.8044 644512.24 2867427.18 1.055123448e-05 17824.3102 151.8677342 11027160.75 53974905.87 2188083.503 60649.85219 12122493.64 31.82372857 5192307.022 1.702809385 3143.676712 3910.983529 78516.16708 42910083.26 53810932.12 54049.60952 27703861.01 9409133.505 737.9438745 365972.7428 5947806.011 21470146.23 1875999.854 106054891.4 +1866827.069 10884520.02 16526153.57 145.5771576 0.880797022 21385674.16 57718.14635 1042.056935 427.3321695 9328107.918 4257.076468 180279.8608 52274386.5 6171918.741 2398.735018 6061481.241 775651.1329 76041095.1 15144.22447 4163.631855 0.05140843479 302.7630014 56544.11147 372292.6235 64.72709219 27365718.25 29674824 33998.10588 146705809.9 1627037.52 700.17272 50372194.79 2102507.384 8553.73297 264040.1837 16765498.15 84729.57671 1947593.868 3347444.267 5765202.913 2089339.649 1868075.207 0.02294246152 2207.321869 2.84346697e-06 562067.1363 84426.30912 7053985.346 1270.247227 15468931.61 12148666.93 1687456.62 38876987.36 26348.42259 49971840.52 3.377209589e-05 309203.804 71773.3501 2599702.015 923182.2778 383926.2191 8190346.966 2838099.735 9.140320249 2360191.617 673805.7083 1.916809534e-05 175558.6128 5663053.93 13969252.43 66661.42206 23031556 177149.048 1409164.148 3.322714522 975140.9695 19.55329937 1364821.602 56059077.86 126637.1924 3311925.443 4120.249944 17144838.24 13785.76679 0.005993718725 1646.459014 36895403.72 1680613.873 191928.9263 6993.057128 +81123453.19 14.92891793 13650440.13 35890.57533 1514.116713 42805894.27 35562.07908 10486789.99 18468858.08 100495.9473 10097576.59 2896170.963 6526163.501 601724.3138 22138203.17 1.523456787e-07 23856452 1674161.226 97808867.19 60757.01387 0.2304724955 5551315.693 14255416.11 20737.34581 1579252.898 765151.7276 4577.682537 2484843.44 86567.92468 2886615.176 16920080.59 2792001.707 7424.128395 159.6592871 1183254.598 46998.68735 12917246.07 1837189.908 2743.863948 23829.43583 32300.51394 29523029.25 4065.20998 22856818.5 954393.0112 3880358.808 121032.002 3749197.998 5515973.016 16.72372214 10842.15621 595.7966938 1051.410096 47295.39298 1052169.886 32584.16286 26482231.14 107.2491165 172291.1951 12100418.63 14974031.99 1.051460205e-08 7076813.781 3.287274682 523212.6673 442960.8696 0.5675468693 79014.39729 0.5153352752 9457018.904 8458.940717 2.196529921 164755.4821 34103.67245 5018073.633 30300.42658 412.8139251 18366921.63 46185405.07 42555654.39 460260.0449 184553.3332 234937.4539 171173272.8 2.07877447e-10 611226.6255 14857686.55 4947754.567 728993.9023 10082.24707 +7111885.353 0.1603696852 126259.3715 749904.6865 13.04954086 1850.396241 513200.7469 255910.2446 13315396.94 1124.508667 77386432.33 415.5417521 92803073.73 2.255146247 399459.6105 9101309.802 5.556404114 13295663.73 16462855.83 61084931.41 27246616.04 148.1629213 9769.262018 769006.4308 60422.26288 25034909.67 41179472.54 1236783.5 21371710.67 12607098.64 21.71489429 5136215.134 184720.1137 9244720.242 8398991.031 10449122.43 1912785.434 233766.5469 1102966.506 10542507.11 30107626 157169.2753 122.2975302 24200.27158 27541141.84 167055.0185 331125.1503 13910.16081 10292692.17 72423.62344 809046.7921 16.20458572 6470591.167 6271742.501 77164148.38 171.9143361 12165660.11 27509823.79 615340.6298 122776.8478 28187921.33 7658546.103 6343.680672 67161.70132 35389474.75 6273191.588 223.735032 4008047.211 5756438.775 4596432.923 39213716 55072114.7 24725225.33 4026433.751 48463758.32 61.10718153 4720.800713 111056.5947 3380904.084 53.08851946 72210756.64 46228440.87 34638783.9 5797103.925 239535.471 30980189.31 4498883.367 5548.47228 59946.31198 886.0371035 +298005.8061 1429.991517 21565116.33 58084.20582 217844.4957 25705.95408 6999.464018 21468548.49 5931485.413 1219997.695 963855.8706 20988226.53 9615.439639 16900114.19 478481.9689 688231.3037 767130.3691 7359996 42067.0448 1.317510723 431545.6182 3.099147616 6.469897275 12108005.03 132446.4061 1.014625192 32792869.76 8504917.551 8.406036587 844734.9305 24430371.95 4848697.564 622.533397 6054143.759 0.03282324808 48609782.62 14.77128793 156131.4164 810394.134 2327.50153 83211856.03 32814496.26 2567191.53 1475542.372 29513288.54 639721.2643 10676.06054 12639409.57 45670756 4116715.799 9109292.395 47.13609812 0.7012674165 271358.745 115988288.9 18.08020278 33182436.08 1135881.929 1749457.361 2.41642378 26998170.96 102421.2062 0.004653297674 8394911.072 5231.994811 1019292.478 80614458.03 321186.9308 13614927.88 124723.3809 82414912.09 19533365.91 4601221.715 541.1502686 48020761.15 3092336.096 204935.5033 45360659.67 948274.4333 2001072.728 7636106.621 841354.6926 25270.34735 49117.32902 707767.9546 8072945.945 22124.88233 478554.3513 6359558.256 7736640.74 +364.125534 108776.4596 3252389.833 184904.4287 15294663.57 98863.82523 4837218.854 2.077048598e-06 3619708.474 46372886.29 1492536.786 5402437.917 1184493.904 74230329.6 921898.7994 39990476.45 29945670.47 4449559.058 783755.2526 15962698.7 7966224.159 1535555.142 2.909636099 0.9465171867 15630282.11 3666265.411 125695269.5 27.20871684 4.62608311 1080298.603 3149272.477 11.0997367 54.40608845 473485.3753 8596455 5300943.074 67.00797226 6156755.012 2508179.513 34419.92338 8961313 4856708.693 37.63336997 0.5502540469 589.4626132 166284.0468 919267.5528 0.009317435842 17996286.48 4.869699912 76309.00226 16840.69347 182068.2218 114801.257 4791689.191 36681071.58 1.104763944 42089.89379 39405818.18 8817465.718 70.46562462 670553.1222 113142.5751 933107.3226 406151.2813 51303964 8447010.322 11610.02999 1525210.003 5899083.146 7518416.211 23588036.5 2585.341973 5235386.024 2717.746215 574.2979712 4826788.676 5093.568586 1179.113387 1188307.876 626.6588013 2874529.635 35811924.65 27029561.14 941.6109613 1076636.241 1244873.116 260.2058172 23082424.51 517.5744948 +5.925217097 0.003153823962 26507092.57 3.26798175 27.50726289 819949.0216 4963285.503 262.1582991 2.307471819 0.2509796997 28596334 14470176.12 321382.5706 9209.840156 475.6043764 19238886.16 7201951.799 0.03670552196 641489.2171 4927087.798 10144874.19 68515362.77 1062285.76 2526.78132 1077.087807 78669166.3 114289.6876 4751561.249 36.07547828 86.55767047 517.8308832 3465.094285 139288635.8 20297234 51656.80034 4196989.571 76393933.45 3014579.885 0.6445073914 61664765.26 5274422.888 1833935.717 12092207.13 9.735461183 55.33869934 2091077.147 59265451.47 32081703.57 2684.365899 19231384.46 10249.75534 11369594.33 0.04834228756 17083.69768 1199833.634 7343508.689 7628845.114 6150.417791 339276.6086 23626523.78 12135097.04 1654902.293 638.5467987 23768.00576 2616.425841 1271413.586 457795.3556 13.03815246 10878236.58 6802.331609 56118315.01 3782943.115 15281626.52 2025007.899 1907284.953 7269903.238 77796930.81 0.0004916046511 10144.84578 26544.25674 1233.926136 117.2860968 532098.6125 32446704.22 9338634.658 2504.77914 4989451.65 1107.916727 7944903.684 2177538.854 +0.002661972504 24507375.44 1856095.222 12887922.83 9984188 938474.4564 3461580.965 11239894.16 5.579771787e-06 378067.4375 23861192.68 242685.8846 14693167.42 1438102.505 8971.465158 72.01599556 3092.38063 46504712.61 10388316.88 11971144.24 10066714.62 22644.34769 115.4679278 543.6365408 20.04594832 22.19956369 3.2843877e-05 4030496.471 77.45909119 4267847.084 19776.59203 1385485.575 61891.90221 295078.215 27506451.09 532.1639137 31569.55524 958252.8309 619931.6961 2824.409329 64912.15387 19006.5927 3089.480382 4150871.494 261640.0781 22144953.91 73.59949865 78719006.03 653.0830982 41569609.13 2736338.645 58248415.67 2530740.005 14822586.72 26016284 3.079247553 7505803.605 5.269132915 5769.376543 10569376.34 848.0074638 5669.867865 95433.21501 6301597.562 26231315.53 190990529.8 292143.6073 5807404.913 12647.62706 40473.71025 145245.5809 299583.3418 528210.0236 1727266.012 20992849.27 8954047.739 3090822.951 484918.0123 188350.3055 6531626.665 4416847.502 16791229.83 5.093175981 131460.72 6084.36093 27179258.16 25465819.4 654556.3424 2.027225318 0.0004474176432 +7967750.076 15367.86572 114742.145 771884.9765 1051208.479 0.1894913117 437954.7857 79257.22446 11.98184149 29895428.37 64.80542151 15096559.38 1093.543797 16459401.32 28313052.51 7225356.738 0.08142107079 127159687.3 2.955591202 4928762.151 13.82945131 1304421.228 960.7169955 132199.1954 463731.3213 4432965.593 35661159.88 12661.88938 19586578.43 107873.9597 40623611.75 2989586.945 9150.123231 4006.378473 705.5405841 7204.657538 18461927.56 14466.26612 134302.5568 611234.7565 17975317.51 781943.3897 1.409703709 10894.90132 1391152.312 13949950.09 1658274.422 11.30011321 38409.35855 0.00866315717 52092136.6 70118.69514 659822.7403 1739.849182 36576222.43 0.02700791612 18132486.66 23228891.68 95421.9219 174.3481319 21044498.17 29892384.86 7251180.548 657.9869868 63075951.39 805.2064278 613853.7858 49.54131514 39.12513766 11731343.92 34749811.33 173385.8755 777823.9232 0.1657837927 8359661.008 10794556.97 624533.605 39187844.59 58665.3986 4777132.004 0.4340938926 17571713.53 3125430.507 632236.0508 28918896.92 1346760.156 565484.1776 1926174.514 6284273.194 4147710.796 +19841273.78 1749928.781 17297653.54 717801.0688 5457854.579 115116.0655 10.10921469 567.1013476 5569.155047 9986947.877 18674.89356 743224.9273 203670.4782 37495724.19 18210869.17 50333592.7 4640816.026 4395822.808 19271245.65 51150140.01 29177650.84 7850900.076 20090.63132 11185478.1 51798340.01 22599066.28 2627898.778 8494187.855 43842128.45 5250098.967 123832.0144 8427222.914 1132929.631 15.62656936 19175910.48 2061427.657 6502204.77 27.90073586 4235724.14 190258.4062 17914012.75 24540.66101 301000.6853 19250072.55 92678.16676 33248478.2 11793.32755 5552443.742 13853772 71895.9027 21.3109944 375377.5435 75.2026904 690336.3397 409.9904175 15733663.16 4939494.916 6561907.011 56582486.16 51902399.8 1298788.842 133229.6279 677.087715 81.34066921 4942759.276 87163.5994 26907.1021 10.26531529 35562143.48 4197.65049 32642258.45 50796539.14 484.5430165 240644.3293 18869196 19812.33666 9996.723865 26419733.83 481236.8225 4816.668751 22682851.96 11602832.55 20032991.23 1560132.528 8904484.459 790670.4857 11488259.53 70858.30572 159537.7362 3815097.167 +1.295217771e-05 14099273.3 2200.31801 750779.6784 2231.845138 911.829267 629919.4318 86382729.92 11330507.52 0.02235366672 3.549558255 2078127.187 2463.893669 20918712.44 44286339.39 10578715.54 1533.777135 1025645.551 3198035.242 9298893.929 2670.023626 42319.27378 1381925.763 30924245.04 16126010.18 77230635.72 67608701.83 12502.92982 2781155.497 5540100.358 10538226.92 16411058.28 714949.5245 298908.0351 78752.00125 23898.10317 27.4695637 13772368.44 873624.7626 8997339.459 30399820.27 361560.4946 0.04327635772 72198320.11 11336279.57 11990.60325 2323549.243 178482.3407 0.06657029797 112479244.3 0.3559437327 616.5313911 31.55390754 121147.6937 28.94465292 127022846 82650.10711 8686.870057 30790517.06 3819936.608 6237.588404 7.377437161e-07 21043357.45 16911184.48 26167635.93 8449.459007 30141736.02 28935452.54 702123.8768 8.174923877e-06 63196105.21 14763.15113 517.9188284 902721.5922 2202980.981 1427.105241 30293010.53 167699.8985 2247.42221 33826815.82 1.183995734 203397.2062 1842043.75 1169049.906 4633569.096 13187.45509 456422.5895 31582772.59 836355.9389 222594.9784 +363339.0545 6957908.081 2403.399904 17.71163953 2.63017715e-05 8.637181839e-05 1365907.296 693205.9413 121052.2154 77.34521951 12310204.38 9359476.875 27246113.6 10332887.44 204.0635837 62784208.12 288730.1342 3284925.946 72155331.63 1035.167505 15870149.29 29564483.06 34743936.1 17326010.01 1632323.758 100014191.9 19.47343541 872287.8276 40824.17882 17669564.41 5.755222038e-05 1469568.378 5318.258057 38326.76333 67401015.39 7082278.482 283.6030424 999420.3051 35.27006026 1538.901223 44592990.12 370.4051828 7129786.005 12699145.04 7851.990069 8.252660979 5517520.736 9606605.253 61838351.24 772604.5458 67122580.73 14752.76871 35478.65299 18684.9213 25749079.64 1125038.995 453788.7522 1620.0712 25319.96047 44.05365513 14065212.75 2114962.463 16529385.76 36967.73988 6.309889288 12462575.4 3122597.375 64335181.23 5792.51396 52435.20037 1572.896239 4101337.564 61.16435922 187439.6517 2420.186623 10806554.36 410.5462211 22215152.12 2762041.974 1168157.51 0.0353902942 18707.57032 2817975.662 91294.37501 4.280937148 16035921.59 21.33893067 220.3676739 357.3090682 6750484.202 +480621.8839 40966299.05 211629581.3 249.9542166 1386.329826 7146566.955 151869021.6 9286.630271 21949643.41 382987.1878 0.9649039507 17060138.56 11613581.77 6368963.581 18355043.32 10648866.42 1928194.305 39.27280162 4213417.739 10.75976311 141385.8813 8045.553555 7717254.076 2372091.311 240552.784 1180210.681 1350.370153 100299704.1 2676.42518 28478.38771 36711607.39 0.001904387841 28593080.48 236956.7585 28211675.77 141785.3013 1970489.453 8581.870219 30746672.2 39636.05864 7742745.611 152232.2973 22070220.03 11047402.89 1.573942344 3276.484327 83546.43382 29591603.82 5890.464504 28179339.78 38331940.14 732.6252671 3.685739048 23957907.03 3088.252323 8025748.696 1528202.948 13597986.3 7284267.774 100977.5396 86197.58744 11260605.61 1510818.653 122757632.9 28644572 137342.4376 1548935.689 26214761.64 23916583.51 930003.1272 40060347.95 1201.354663 159452.2707 729443.6672 21346673.95 3137.767052 0.04585215072 17182453.37 66.97222101 43146584.53 86111.34788 23300.18024 157435.6758 3130637.187 16321966.25 4509921.22 25558068.1 15175.35617 48490016.48 54247.67852 +35109.7126 3887249.895 1324.865822 10325713.06 38241.62466 56365.77896 27999812.22 8870086.207 281880.8016 19226.66014 692122.0625 2191476.68 9771139.675 191.5518258 59963913.15 2928188.127 61496.41535 5199.265988 4301.29486 1876616.749 58033381.28 25306.23599 601268.4547 1994.600394 29503405.75 186753.2096 4365100.733 125.7519782 20.80019673 56163.78975 183789.3839 6103238.442 6625.987537 9641.411045 8587876.119 8879269.333 0.06630468669 1018489.714 66319225.22 32815.2824 8600437.116 999514.8783 1846650.736 12.40363767 4693449.75 12806334.34 385182.6488 48764.06839 42701101.14 14602419.27 21877.48896 724.8157254 6159041.458 574037.4151 567904.6567 6297843.405 12879.73827 4.340347996e-06 24416961.66 12318406.56 312968.9315 505255.6875 0.03364476602 18.54051566 483201.2197 14987.49926 208759.2691 11396764.69 32407119.54 23626.79624 1522487.615 102505.5445 286952.3498 12142559.19 53780708.48 448.6831171 13370.01705 1505282.696 12984.04725 46687257.41 394.5120461 238064.1573 1398335.822 206966.0533 16783416.48 828081.3435 66816435.89 3116632.164 364071.8125 293.8886414 +4939366.501 503561.1282 12268281.54 184.9303081 6130056.1 27520751.8 4360.396712 1727240.034 4871657.445 1856531.424 7646.047369 14144657.21 8492665.769 24336860.41 34751580 6243593.199 249760.8123 53039985.47 12794.76471 390.7561702 3119518.629 74407.12704 6426679.239 219.5822209 2075545.558 623081.7801 0.002339040528 8987180.706 3447251.203 8100169.446 194.1042158 391945.4863 172074.6331 0.1088108308 1198096.731 587576.9782 60357671.32 113.7162247 139143.5328 10414579.86 9699257.828 2595043.175 326686.4873 3371.979429 42301476.61 1129964.738 15169.8128 26.14904778 620386.3702 28422.11612 2361477.649 459.5867223 3117.035781 146236.4531 15130324.83 302079.23 43825639.56 10554578.86 13369.9727 438394.6849 7321426.547 1095161.751 7.508643983 139294.4806 1136646.65 761583.8235 573.1979746 6922295.006 16.81228454 638570.2796 1181.565269 348345.5816 14852.79913 4504.782382 1.205800092 4313246.942 27571313.55 30321994.69 11445381.5 19713.32973 42.93876061 4739.826693 1400126.981 32747523.05 9562849.213 393.1209108 8238.832361 212043.4446 86540661.74 2281467.299 +5806183.145 24715.65401 28649.70945 48890063.04 0.2181589538 5344632.508 2.154597019 47701453.96 7596357.121 36010395.17 4465181.119 650099.9305 7121185.296 367.5752813 17.57960352 10046.446 1719283.744 26896183.95 10125192.06 22513755.02 14940.84473 1630152.665 266748.4445 9219409 428003.2361 6268137.991 10866980.18 1.150967542 5470548.27 22037181.53 6108998.761 22275647.2 351406.8088 767184.0247 26952590.13 149834.5707 34.52154694 5909.672182 38438676.26 13510.20996 2.368083202 788.3651279 4502458.945 9163537.685 24632556.48 320729.9064 11141706.27 25.69744741 18012156.3 3070.592968 17753969.34 296.3013971 258919.8883 3.217923979e-08 737.7801514 41219078.58 0.04530204359 3849350.193 372214.9474 1286000.337 16586746.43 4114555.416 104085.1769 19874.10022 32039.37668 2216.763495 56460387.33 22204.30021 2142.220822 81219246.59 65782882.4 49770.21403 9225.762735 2958.829032 4108178.739 361.4879179 14933417.53 2242923.224 8329711.539 36102999.37 6165928.611 2909328.685 17316300 4405406.615 39959155.66 9726332.902 57797.08202 869186.1641 157911.0618 35176304.85 +3.052225478 982795.5093 23231181.63 178480.1196 2837437.562 37.20238877 8125352.916 5.900008185 5587083.741 11083717.7 9696966 35625071.72 18977624.34 3928051.505 63774289 132407.9003 535.1808472 19557362.04 11.23932875 315529.9058 49266669.43 455326.4213 1326565.998 12817199.44 8337855.977 583239.2583 1080.552521 29317486.69 15444.19201 247908.8916 8109203.768 5.420623773e-05 19878308.43 22989.21261 9847854.73 41132824.19 0.02165668176 16861.29158 7339270.956 1215.860735 6410.183833 260567.2795 0.4565599725 0.6161028053 3285698.277 23020492.43 2732.01214 36709680.95 43017796.54 650087.5918 2029.468224 42751672.23 274086.8002 282397.7995 13873566 1413.919817 167488741.8 69243614.05 3558806.238 68381944.99 11159894.85 35760292.18 681321.7643 1076876.154 101204.3795 4735.980725 20789160.75 4944.500489 2825666.214 11045138.12 91189.29473 36.93136069 3599.558968 10733.16649 18409706.48 1152087.736 1708842.369 326229.8991 167162.9724 416.0476598 1.001580901e-20 3175709.867 2087.487372 1773078.711 327.9741487 8249.46624 40969.77925 2813238.792 0.0936078707 1017392.065 +127228.6024 0.5620949597 34474220.3 2634113.227 79.14118389 9293.089736 11176676.71 3003357.348 25559579.03 6.829662503 18319.96136 4199858.09 212.0187649 3164501.203 4398540.481 13118468.08 862708.293 15.24074543 2515.060774 49941812.89 68851286.13 0.003833754019 6424.711714 102364.1796 1228028.61 20403.39829 17096121.12 70414.92969 0.0006927113911 15094809.75 593.6286451 0.4438743827 0.5446186322 12706601.41 28513670.39 1400.812533 363.4335251 1882.410717 55983287.28 1641937.022 7884949.681 188433.3594 651.2892236 32783791.17 370634.4185 250.9964363 36.38604857 210142.6172 5724.566895 15.99469743 3188.462427 1339230.226 311769.1759 937843.8351 1044391.233 45.19303817 781094.2609 617816.2631 10679516.92 1831832.372 4631891.952 643.9568102 2355121.295 41.83956747 38089480.49 13870.0108 6861254.755 1374.251324 82664.36421 4723418.989 22075.76596 10830.47686 20796314.24 15514967.87 7483012.768 6842.180991 48103320.34 26008134.9 757082.6531 2522.195044 19773.0111 279.3225454 0.08233845549 22558486.69 0.007764378597 7423938.308 109.3845336 36658237.63 14.27132594 2426591.197 +5.072667827e-07 10681634.14 4178894.75 49816837.94 6344800.989 85736415.43 0.3673810228 1336392.103 3392604.123 9722392.096 1475922.816 178.9881897 267375.1408 28600144.65 17628762.89 3601.265603 52779.41182 34525849.53 77009.97955 4297190.5 4153379.063 18619.37126 1090.954837 398547.0219 4.211890281 428797.9375 101305.0589 97.8364513 225345.3456 27329.5406 798373.6879 4011865.227 1495383.582 4.279118718 34917113.73 8840831.695 6421446.345 17045280.73 31083584.45 0.2133340165 6936.433801 3490943.276 229323.6111 13898892.57 1242285.567 56201905.88 70683.60248 1044108.446 11728631.29 0.06495413591 3.59114708e-05 15477.83635 91957.9818 65895.2751 20095271.44 32783865.28 4.962460643 98453960.95 5.238251804 889510.4991 34632308.84 7274909.992 3308406.03 189.1665687 18846947.55 53500170.78 645186.3586 36256273.73 2540324.04 1445.706125 187.2943364 52.92095871 2.722074562 18.02302423 959476.0758 18671894.57 89.3995338 14475.65532 18.6067523 4284948.045 38.02992755 1720850.298 18384931.3 64491629.69 199374.7343 16261409.63 32460419.05 131656.5583 3262365.784 13738.45102 +24360381.6 5216530.759 24340137.6 427434.8339 34.62958227 264490.9534 19659.1192 1562970.125 509.8252726 14092380.31 2625699.64 777415.8206 151964.9151 47277835.4 50777356.73 67150.73063 61068929.59 13756.24134 28.00390406 40980486.71 9636.565759 44724554.12 2371073.072 23.58121154 2.066724008 12004209.82 2023205.192 4837.014048 2407.547076 664674.2965 18020102.65 1.424204015 750818.1489 37690312.97 2959961.565 19817.21145 21739104.04 3112108.567 15593669.42 621358.3009 3936.61934 11179465.38 45514695.68 330773.7911 1508.391716 2087840.674 7859296.129 20566.291 24402538.78 109470622.9 62834929.24 4106926.213 11106093.48 5972.603591 1937.940469 948996.4338 7466561.738 18104480.12 10074343.83 33904573.08 31365996.46 24115.01649 565890.2091 10092816.26 906213.1284 14784868.44 16390559.51 20767377.55 23208.3719 225560.3283 11388267.05 3090492.131 398.22309 38630.35585 66186.97697 18114.75069 38063825.9 607948.2012 330523.4815 1395441.378 104456.2696 4819000.767 64159475.32 955614.8728 2470176.233 258177.4432 12452060 2325009.85 1137969.404 62633062.59 +3155198.517 6978.434516 697553.5128 30686963.65 0.3999200223 189109.3914 10085161.44 45201806.15 0.2331223687 3043911.895 918226.394 0.002026740749 0.2360817389 32362634 76984.00674 6150233.243 11.24616357 2417.936628 2296186.402 9268810.558 44987.01082 692.3452373 11279357.86 189532.389 2378.438024 965821.1482 62132.73964 33234396.52 502.8529062 1133803.817 4084272.263 16526.63642 38827318.45 3218052.087 0.4909405933 1838.744454 806.8029392 1717.800745 25827.635 579.4819058 41864268 394.9096895 101931.0023 1395777.068 1609.857382 112778769.5 242720.435 64732029.25 2.641099947 33693113.8 48677.10555 49.5168449 6859227.883 5323833.789 577.91134 7245.743682 730993.0359 4878787.256 1099236.162 81259.2663 3074737 3715537.691 1623138.945 2795952.754 1003497.322 817583.9301 20009539.14 9150.7933 0.05421045547 7479483.204 5872886.589 9345650.092 26994.88716 8492826.154 45239080.62 15087137.01 52641560.96 9464050.405 17347983.88 116665.3869 472535.4732 795165.9379 47938739.25 934109.9265 443947.3282 36234689.98 51362224.33 0.002499018535 14696121.1 1762.098192 +21359374.11 1769.146747 63.01394505 27171796.36 544.2679688 147319.4251 1385934.109 584519.1232 11265.84601 13313257.07 681501.4041 698.0024405 4280.976076 586.2035899 4041837.824 240.937246 8264542.517 6115168.634 11548521.04 3.540016754 10998550.72 24574374.21 193797.0027 82335244.43 13212286.77 1056836.129 2690793.445 2929990.895 0.7938147995 13457899.17 767759 486.9862378 5476633.22 791731.6458 418924.7716 22.34873872 3772306.414 4538602.297 356874.1807 8579229.856 3880479.755 806917.1436 213650.4654 3128888.182 67065.54412 7819659.105 20.65127175 48.65168056 11846443.57 3149880.586 1434285.458 4786177.492 291677.5734 58569099.96 148.3457032 17384467.35 747302.2485 4.835141846 75015.71469 6785841.941 5266988.649 4.887037024e-05 734.4217232 626.196125 247147.0468 445029.5557 13417.91113 10567547.53 11720726.79 69234092.75 66447.6711 15614.75293 2813670.64 11653980.58 6219.637848 44827343.42 6.936397599 34664702.96 13405589.65 3.580880263e-06 8030715.428 15128.04238 38086584.14 0.01106739136 62540746.1 9978816.58 76.32608414 10.32193873 204204.2373 3656.641872 +28042.59751 1474.670417 13.02520371 1917672.424 0.001682029871 0.007664295809 3.740588092 81326.50601 0.221982895 47858367.63 1150957.163 24281113.3 32255.39091 16072324.06 41688908.76 758030.5624 99053729.35 9030057.183 0.06545890681 1237979.945 3.089360051 4522439.944 80101552.13 2699.413748 4.691636443 1695579.293 7.588937308 1487205.443 25200.64533 2.838335899 4616159.12 53451649.44 98112294.27 16336923.98 1.260464775 1104301.426 274927.4177 14403363.31 112811346.6 1.831370374 9479.516135 349.9096657 1289.49101 5918124.441 3409449.604 3837.989688 9.591688294 8678061.007 2.780290634e-05 1511327.339 1422269.257 9849246.803 3355502.808 7230372.031 450922.2277 8913093.265 0.0179043716 5299588.45 8581398.47 1386485.409 4059254.176 20111.86328 50859578.1 4121911.909 3191350.412 2703252.032 3.676753267e-08 1832315.101 1209616.669 660711.7308 32662918.04 83811192.49 25982410.97 6362777.288 20820588.47 3941290.467 2403044.351 61483341.09 189756335.8 2505957.533 916976.9877 296455.257 9075911.094 695426.824 3.218776252e-07 0.01532798792 0.01284809837 17219.08914 2695.878567 239.4386814 +59426843.85 1313041.011 6338244.677 430.1138236 3653323.546 23600119.84 1984208.553 9266.628349 980837.2989 14363.97714 11587207.51 250298.0999 127.9449343 3281409.452 15812.69839 9147.913997 158137.115 95220.09905 33669566.35 1460397.725 6428478.539 38916.23914 50.31477215 182855.7088 9209784.637 1535120.041 31926309.48 1452560.806 26629218.54 10637752.61 27771804.05 0.6023493632 53896.95905 2054263.001 86406.08382 11354.09643 347411568.4 16567053.84 602640.1875 51741104.16 487009.5251 85.76897869 53010072.59 470653.5978 1171.437318 31156785.27 341405.6018 452322.0285 36526469.9 3174716.62 8922090.379 43829001.5 45804847.09 3413265.445 2539398.626 11716105.63 1030.954834 438.0942079 10204.53809 451792.9417 32168.18118 247495.4294 32180248.3 108175.1568 103970.8579 19304.18475 23424.74537 113517.7969 18321526.11 49439345.78 3246034.77 28207789.39 17.8336221 78071665.42 452.7779436 160532.074 7490280.758 1436731.383 324122.0275 663037.9614 9368924.875 125596852.9 73339120 5464445.309 9228654.303 5378953.292 2134178.152 13323430.97 472.2883932 2734823.993 +0.01868479091 1682916.03 22257334.67 2996.728372 224304707.3 10979826.28 2802.218459 9537542.143 150722943.4 26396429.41 4063964.775 10075947.58 6107100.035 8478766.146 7529551.412 14139183.83 1543315.437 40.67948659 24.29297282 3836058.019 37802.73069 0.04218549634 16.48400088 42967551.89 601719.3026 5635.05814 1281782.049 4199755.768 12.53551085 295153.3863 15118545.38 89183.6382 25.78943294 19921112 15521959.19 1825356.528 780.8861935 0.4815168092 13691.15092 5025.684063 32767723.63 3739445.812 1208.859881 27939977.5 52180010.4 2499.222611 416.6062471 4365427.897 39969.34731 12288524.85 8056.771585 518607.9121 4913.613519 0.4139216101 13653515.48 11076328.58 26672572.18 16460842.64 1245.193118 1630672.481 33603629.46 1.340565597 1790824.473 2599.767881 15716837.32 3210627.059 1949404.745 61968236 1894.283423 73.08527237 11958596.2 7759359.202 2460701.178 1244132.931 6873626.187 2335929.218 551271.7887 47.29751427 82153.5357 17159839.24 390473.2633 0.002308492846 1244285.737 1832249.254 590.9657522 567421.2428 37049218.56 166461.9435 4812238.408 27548277.82 +48337.92189 1531.782302 150116.7765 45022.93864 11695375.79 0.05981224599 43726852.06 9963848.757 13856284.44 413501.858 3523598.124 367236.2146 22809814.77 150773.3046 10861774.61 20812.53555 4378293.938 143924.1191 10816427.35 5391522.481 2697656.123 12809512.12 1104708.602 27689124.96 764000.1608 0.4823515041 21342801.22 3732917.3 3297664.103 1725.601929 55.37629279 7117.854452 5.526861614e-08 37237.94926 212638.2912 30213949.36 6764618.187 7762103.157 571275.7227 1645137.225 3775828.344 715.2576636 18885102.83 60.8494428 635131.5563 131275.8443 2673.802501 269.6121869 869318.2803 104878845.9 10.87992174 5665831.173 833959.2613 7512698.833 60.77236095 164.1264543 1293219.473 45109.29858 21043958.99 39581.08039 30421590.71 554.2258259 162.306673 43944117.55 2985632.163 9936.278238 0.06722579314 910490.1095 3102.818186 7930455.941 0.008639992687 3178252.261 3074930.425 26873931.9 55259465.01 2414338.341 29620591.13 474212.865 47301396.1 1574951.574 35625943 42836376.57 20.7352829 25045306.06 14975670.56 2.418422787 0.5081572112 32407089.01 344451.5818 1017061.781 +0.0001418533222 7584.789268 19501970.85 17970227.9 33462301.2 11862516.22 466928.7813 4363.740321 150118.315 0.6797452041 83144289.22 3196.381178 7490894.372 5508549.209 12371.20344 39149.84549 2.093295259 975984.0958 895019.4178 25717454.16 5226520.764 179989.5903 910437.0021 1423566.5 7431203.191 57094830.58 57910.53688 2375627.018 629743.3403 139199.578 21.30920094 4384561.542 2939903.549 644106.7165 49708141.69 277.8717281 661797.0897 8624138.67 836.0720005 16297617.21 18533653.47 9777561.507 752363.6466 11833.9375 14919.75233 241754.3289 46189.95286 496.9019871 7290832.823 3.301675006e-07 2.029098927e-08 11955814.67 0.01935598984 5240137.018 36529.31062 22610861.21 24839321.01 818.2312181 31594018.1 1012772.128 40710277.36 7377.904748 981.1856587 16977796.75 35430064.22 1054.822326 713.7795119 75006.20638 8468487.953 378564.3361 17933489.99 4383.029278 15451566.46 31204621.2 5619.592651 5.880949158 33204328.57 19999.48708 16664700.51 3352512.918 7921224.289 15269812.31 20174.89847 5062873.034 486145.9406 561.99814 14352382.01 17829.38014 931886.0566 16168726.86 +2894447.344 435.3957876 78705.76294 757481.5776 851405.7899 731.7446466 7652.4729 133220.4635 8383220.923 498.5872631 1876090.008 3315216.526 13522655.17 32079.35711 54628.30961 1252.136046 10.51660083 465.1735088 668092.5257 9923724.25 76298947.29 0.2947262951 15142810.84 603028.5785 2407795.886 116933.1422 1828844.106 2345.653428 260951.2243 24771.87325 7518081.502 35023150.97 2707706.023 79851.35793 1676607.391 26473670 7134.320707 34029003.47 13030218.44 608154.6123 36754.94028 15230660.45 4287.859093 1478501.843 67195959.67 47091189.02 130.7304417 12092607.34 774.7510088 2976253.899 134797.7767 189359.3273 871344.8284 43460.92172 5.174041635e-09 34932651.48 374.0075407 0.002660763189 15613702.21 71737970.36 364.9875709 92706.60083 52951616.05 0.3455572298 388368.6279 38726970.15 4553636.717 86752.5011 4913869.669 1715259.889 36.10550075 9286813.001 899831.7619 14501.8452 2511.546835 0.0003904716277 4866935.688 2016226.247 15629913.01 4680910.5 13142963.45 1414835.986 5476797.866 331314.2017 3993069.641 3360858.141 21019334.43 32622835.9 21529765.13 51809.42934 +31.50432137 13249.98665 12.61160241 28055696.88 2428.108612 12864.89035 199825684.5 1179.442216 9566.376017 22325757.65 70.23632657 50084.9403 62.48108045 5484408.374 2265.182148 21857116.27 0.02929285738 15476.10116 745.466389 20630.22698 74.22788216 7961.991823 10854384.38 6730.651551 95429.87769 2520543.85 38308380.6 665446.644 50.96089718 4623186.575 3772247.408 15600440.19 1509411.145 3948595.374 125630.541 33638.94118 99427684.44 6411.309366 22998703.3 11595014.32 225026.3579 1591.831268 19157929.95 1477945.082 14216913.3 13424.2188 327003.6838 31726871.56 61070586.38 6748485.466 12627.90432 36931133.26 3031869.718 13392.59574 2079.404027 11112408.04 4.166984442e-06 134297190.2 17842603.45 21852211.7 291890.0721 5.131530223 113874.2297 1258.703169 0.0006809486834 745844.7691 9860540.839 28829806.93 6137.087341 0.4857858097 6080966.536 13945414.75 3221393.749 11921457.07 54904.63036 1422.24246 17786461.75 2070671.78 1450416.125 2976493.376 11265270.79 23103.45481 3560698.585 113368822.2 7006546.623 76.0841774 494255.5859 4263176.442 62.80880699 13579392.12 +39.00123089 40.81828399 5732518.011 67571.22988 144.9128453 0.409494381 89053554.22 0.1804427065 238123.5597 3161217.5 26724923.86 18906587.75 147.2983616 63200866.8 9159431.776 3550366.294 3142309.789 257955.2307 80948.76108 34788637.92 41989783.54 863498.4955 6731644.172 0.8764817261 120452.3386 0.0009122103387 1983142.957 330807.3812 586.3202194 2620972.234 110220.5861 4.085336839 7180071.425 4894578.38 1658650.915 69909636.88 5707547.101 767860.1875 3821014.757 62179565.88 146.4529438 21543736.62 1726115.581 15.99051594 2.134112189 15212671.12 1993032.924 18959720.69 10521.16047 3467109.532 15564481.55 1557633.755 7155682.486 0.2052066384 2160289.57 293885.2078 42823304.11 2087187.44 0.004419440404 22756081.17 264.253479 33694.93414 26634.34269 112.8808452 9084345.018 263.0818797 9207246.323 32696046.35 13.80771201 11.07155577 756423.3876 70458682.75 2047979.686 6753225.815 1195654.51 40707.22781 512194.029 6816705.231 22.69284822 349352.875 16291649.3 11954.08704 2.802676781e-05 22.07365991 6188543.33 766915.0648 10600.03627 8168731.083 130965767.4 4222.638214 +20720273.91 14723661 9917163.822 18427.63942 4359763.657 49557.9519 17322334.47 9.094962063 55982.85548 1413.600993 16210091 8957127.282 101.6668272 7059137.832 1892789.31 1306789.87 58982759.04 0.05669202844 134753.3005 231245.4844 14944.85498 89758422.95 14218.82027 97.79291293 352504.7289 5339.930762 32495207.73 45164784.39 1523490.247 1506072.201 78965.56725 1434975.537 213425.3816 246.5283797 5406.035442 7172239.364 26373.11632 0.0009132910806 128499.8566 2078582.842 25.69080802 1214.751869 157929.7695 1016996.229 3119864.9 35873375.74 3.265909685 1776638.152 12559.9078 908029.6277 910103.7355 22264968.61 54843.63628 3823049.13 825.4366299 5813337.799 0.7323266718 224.454272 8737888.452 45812021.93 77262003.93 64683126.49 49.36842128 49117960 13698.854 20120311.1 5222.612791 1211295.917 13845620.26 69706.67865 17066.13044 10894216.81 45002907.62 8999.795325 1714947.37 2.678865379 2254219.859 240.9658203 4159.814726 524039.4074 34293952.59 1.564884262 14027122.32 34873.2153 6324426.891 16.32362378 259463.2598 6761274.353 22206.55772 11885704.38 +51416453.6 48566429 668004.9375 96424.94395 3965232.524 42436.05164 1459320.011 17.40231834 62275809.06 5809591.45 25340.56286 39028384.03 2450172.416 50361947.02 0.3885901592 5605.875848 7.706044161e-05 15834280.12 308161.4534 1239807.373 106347.8597 29734424.61 0.0006502406269 10864132.21 4025601.633 124.5916772 82373547.54 12065.8044 268680.4146 14.09450323 0.756315858 33505.56038 184532.6231 284639.1752 5426883.039 905801.6267 22345917.41 46911.82617 22925.48717 303352.7287 654156.2104 698091.7903 51019328.43 358240.1626 11626394.8 0.02962248705 107922.253 33.99777779 65929708.39 198123.7339 8997207.202 6299.059968 46029.82912 1389222.31 1698216.613 295311.7222 2207458.906 293170.0172 546.8511353 60692267.36 37382989.17 0.01413860389 7769639.418 69715512.49 397319.7842 79.25477178 673278.6499 4833.125874 3845098.683 224693.72 55147.3841 100394.1484 1964.112549 261283.2058 0.03523320273 10085217.65 345033393.8 28653.99917 19971.52921 0.0006468245487 14123596.44 3.71525567e-08 6129.126846 46655.66833 66003.77121 29000728.93 8042.491212 17143263.83 95070414.75 38.99328087 +6188.009972 0.2423404775 11131218.33 0.4181384945 15607838.61 1.58650775e-05 7158469.486 5328066.281 3625.916605 0.1112420371 11789461.55 2.196596455e-13 4967589.909 0.002414575221 0.0283693047 43275618.38 315939.1521 46720115.29 14959232.47 18517482.09 22682653.46 0.0139572915 64.42307289 12875530.4 25111191.75 14843.86431 29483.92865 0.1584660162 63984.84243 0.3557838301 189171.7858 22943597.17 5854818.813 48.37440455 29395218.66 82426520 536.540147 2420.168849 29196072.28 32811703.4 2371022.558 4092.7213 19177815.8 43017.29495 7482320.699 23281861.58 199359.8542 140040.8287 77.58125446 14460630.57 2.999840368 25067.54257 52849690.4 46898402.12 107547.1495 2791748.001 52660703.22 2051643.688 146402.6222 40959405.25 784253.5445 204.7273007 28146.35942 13.57841614 65856.60829 4788378.91 391.1603504 19425352.05 478493.1184 15105701.53 2177.526466 14885522.5 70380067.74 291.344882 2876892.91 6146308.894 0.01877145359 8806543.863 29170.89648 973598.1382 5.133451745 5229237.198 0.003724789711 3607790.826 79890.59788 276762.6337 22386950.99 736663.7816 262961.6388 325542.4336 +3520276.467 166.0145245 124764.2294 2247303.959 1727373.733 0.001658572874 0.1677965133 1120987.672 823543.2648 5060822.957 31131.47656 2833186.39 409.6999416 73924.58508 86354311.88 17225678.59 19268895 215925.976 49037.41202 1005894.89 38699037.08 87695.64618 0.04351257583 1582980.152 56854.39917 7875838.309 35.91151805 20004949.52 226297.0204 68511.10464 26424751.07 3985.22739 8.071427597e-06 14825853.02 5663225.516 14921901.51 10000.19432 1409570.945 40701286.4 8241667.173 49015288.6 10580835.92 304633.7261 46592982.06 6507123.226 20904.15573 10269565.05 15.14117978 184012.3592 3106003.848 10827438.49 1337422.602 173770426.7 2647848.075 787355.7924 14527203.48 37599514.02 5630938.533 4742483.506 28551395 39283.7432 518911.297 23645524.41 7174.194859 2154169.918 16555735.51 9121409.949 61097.89453 64270.93201 4858217.984 315259.7985 762743.5317 24506321.83 4748778.872 22348289.29 361995.3453 11307020.76 2380646.41 1397238.092 296551.5828 114269.7271 23756030.12 3.378322152e-08 13849603.31 2620831.181 9675293.684 834904.8351 14774.6731 5338.465025 37.94930246 +683373.7578 10272300.52 1.471769681 35056461.58 72942448.9 75661862.5 3072500.36 47458883.49 237191.3375 6711772.692 6560.508119 1626651.653 3841.002245 490598.6581 16474.8931 35387530.8 19097562.5 23603806.97 2526750.196 28412269.49 7015070.381 168003.1124 9047090 19364964.93 5921046.501 18541.88226 475.8546053 39066.29839 13119902.54 7238564.108 258253.9248 18.50296159 229.6525702 1387062.455 81520879.28 5494561.58 138600182.8 5254345.155 31160034 44282513.04 259562.9144 81283.61008 5563752.016 38863141.44 13448725.55 165009.1312 8140.288777 682.8674868 7452393.609 123781.0744 3684668.599 9132877.875 683387.5797 64166315.19 0.1398259519 2246720.826 7878062.975 4103850.358 333132.7406 934636.6819 283797.9208 125876.4492 2.688145423 28869126.53 3027.103824 227052.3193 48840.7546 454523.4671 41107073.9 3366.813965 46476402.62 8719761.063 61514686.77 12650560.81 1558102.508 11738150.68 557.88563 53609175.94 219041.8471 545491.2749 404938.3659 2.525322258 1027384.656 28.29495404 140528.7869 2556620.035 15022684.16 29181085.38 48477780.33 10.93120236 +0.0002221005183 25487600.42 10592336.45 2834518.272 35883375.01 0.6027040994 245.302224 8988.56226 154033.5574 2234174.091 0.2420574934 32795838.44 20191948.83 498841.8206 95816024 0.985874515 6280537.947 261.7412068 4809290.198 29621362.89 773.5664086 10448215.23 7457.561975 196431.7571 23869.86738 54.75386202 2716963.499 190064.8068 802.6300766 2.427699183e-05 6247073.344 8736.691685 67.62532881 6219257.409 6441231.602 0.0002196966107 300786.6573 25432653.18 34951377.69 323290.0243 99572.98439 29997.29152 416431.5741 24090.38878 607491.7359 2527.248289 14992.88345 56922640.96 1505305.906 0.01718137811 7359454.077 74257.87227 2104986.592 40.66368015 39991.23239 16641309.55 23429.39169 28905666.04 31691810.09 20952158.68 57914902.05 15451459.23 35593621.38 2137458.751 2.239791517e-08 5215324.279 5726546.284 71408308.38 18238.26853 8895983.423 5270485.634 11304655.21 47645972.97 195257.7994 5684331.635 15399204.12 9503.678383 63.17860055 4329435.305 13438986.89 3114.79421 22356145.53 2315.498543 1.718804464 195254643.1 7126619.27 6437.561563 286972.3375 4787.289279 5456244 +145436.7615 1194243.94 2760890.519 5061168.598 46842936.56 65794.26365 300375.7826 18402361.58 231622.1169 3176892.71 1931372.536 2462584.753 0.05382519472 54613.23809 0.07072657569 13432.42404 301366.1215 714286.0747 462596.3896 40290.75819 36335.70156 16367431.66 61388.89113 11650284.27 1134478 8065.248183 2.191747017 3690.323029 13483.2387 8785231.446 884123.6943 1817094.866 12896.88369 10.6024339 356747.62 109356.8166 58.85945805 383980.203 38755427.72 851727.2656 68536.62608 1042665.034 16399389.67 2474213.023 33715539.48 24672109.95 11557.4066 106000.9908 94644896.3 2842618.184 12190.29745 10961387.86 108532.6301 29673395.9 29118747.63 274027831.5 2875998.85 423.1956907 1130427.44 1080.135916 9968812.966 188210.3956 88352143.06 18817884.5 19077103.55 16469391.33 0.03387517228 118924993 73295.02378 36690161.96 52199943.47 3643386.901 9102198.82 40757.79723 2.699216669e-05 38592738.04 65955.97989 25452845.7 153175.0824 628.3451376 10141.77684 5911889.387 1551.888535 68529.13019 0.006275774454 23628626.94 0.2887561572 28977632.74 1636513.125 44899551.94 +9872648.159 17105812.71 32512.90899 464.5243227 127268.522 52681.50921 1.011013086e-05 42536277.52 18257858.86 33605.99278 56950.10821 13.43672092 10885749.98 143550.4688 7926239.06 735939.8028 12269247.5 618.800692 23.36822099 99418.49203 55637.66108 19187658.22 26108132.46 104731960.2 1790057.681 59064530.23 4971539.374 135786.5198 11729942.38 8939282.541 2754921.012 1068823.992 30509.8695 4305538.334 399239.6043 210158.715 33.14852153 364159.5255 13796625.79 591.2038097 8057724.082 3245726.244 12814294.75 2552769.943 17972.54438 64624.4071 231397.3674 6150812.103 1804619.42 92159434.23 105.9237711 3855135.409 39493985.17 653.7935023 30268474.86 20369.62433 303990.5872 1.900313876e-05 773001.4921 1182.473862 109741.6791 106.5034487 2857.337331 319519.7508 228051.2342 21127816.5 12591229.75 10.68068761 969867.9057 144676.3138 50056175.15 255.3113464 12646682.87 35031.80442 105951.2964 1228621.427 10271143.13 2373783.47 5521627.294 2.65199166 0.455602896 2.242318985e-13 11530567.35 3591907.911 21533424.99 460590.0261 33941.42981 49790.25609 131851514.2 1284497.115 +617617.9966 88668.07411 364.808266 6006976.669 67438598.8 79156192.36 5546179.112 75.38273251 0.00317603629 59449.3032 15047.54832 45146745.6 65712.30543 2405743.489 29889487.52 0.0966878929 139082724.3 17484754.94 277004.5131 32171.82715 4519.831996 5600109.23 2991639.271 83548.48409 47141885.51 2.199961477 676950.0991 58990384 216414.9537 73599773.71 53995655.44 791154.6269 6754907.699 254904.3083 18422995.53 3296369.669 0.001148346737 297436.5822 4459989.696 20355.28277 1991817.811 84161.49203 0.007722026168 9654314.194 79166.57266 7671145.853 25931938.6 1.359701593e-08 45033.47529 60443.98604 3879145.467 4151458.797 1.800178751 2054122.631 31646983.3 24754972.99 3069831.623 6232081.068 2.247495726 10093061.29 1719.31937 474067.3933 1059.986585 17709278.04 12750921.72 23368355.69 200783.8656 39226356 2565468.699 8145712.332 18333080.88 777.9351694 0.0194406306 85897.96185 804.5115024 3852.338415 1308632.82 1568352.376 45.19471979 1475794.133 0.4690298438 25.39339458 60988904.62 563902.5652 3695503.519 1561675.366 6312293.518 12351744.7 32045.43372 81680.03886 +1179216.671 5833272.501 5029522.826 6264977.258 11688222.19 7.687123153 238308.6579 4322030.749 42755780.57 139067.6836 1187883.874 15957110.43 44.5029295 82.39441707 3307.301903 0.09555135578 225708002.4 115691.4406 259098.8892 39051.41225 58.23144323 1.50416035 986981.6356 59421317.85 8772007.075 0.05378367408 59.99295933 2090975.375 0.03909658891 64418.30756 31854091.44 0.6024200788 11.85113299 42512612.05 6151521.564 5343.781199 315851.2078 16977905.32 3069824.109 407072.2214 13724191.14 31173779.16 4918592.962 21826.711 241.1197373 22270692.1 4307687.453 6327.903809 396144.2017 557318.3774 1397388.603 42585.79714 53130199.53 25917.70537 22780.92157 82901935.56 7600562.245 2340046.031 4034119.653 7277697.116 3431246.672 42995.971 0.03227921197 142.3391469 256872.2521 346852.9849 10410373.36 1720.519588 1821019.838 2856265.408 6289.675807 258975.8552 14095083.77 20893306.8 204561.0946 36700210.22 1931168.867 35628688.2 8648523.612 73493251.85 401669.3189 111999.4639 163398.9254 24642775.21 2807766.827 67180.17215 310081.4131 11277078.16 2140010.418 15345.75822 +16749203.92 1.741433707e-07 17858468 27601187.99 820.0527341 125893311.7 50296.76818 6310725.427 4358.517287 263.2943354 13705700.99 601045.4181 55826507.68 25560499 6413578.769 52299.69751 2865543.078 22593.8269 1299827.631 8.618845456e-08 853610.8091 14289327.57 31756.32559 476179.9528 0.02495226917 2798.701713 54993.91502 0.05064589903 0.2531146306 5708273.258 3313598.415 1336302.556 754.8932221 3159252.153 57980.95445 2597241.186 28945372.12 5401038.386 33.01690269 407.5034556 23492834.13 236400.1005 44765171.33 10196.45356 40801.88201 8268.381789 30988.90562 58484.24788 6113045.5 170538.1604 75.63366314 406371.3979 885686.8443 7139484.82 26894.35472 3940961.114 39.38941277 2200890.16 6154510.013 26926290.64 43376.45707 237.7656472 20789422.49 35243912.41 3300706.73 1247952.991 10740.52445 16196836.21 36600901.04 5351401.326 2044.939367 38573496.76 23641599.62 70514644.75 13419.16967 20.44517856 1922695.895 139547278.8 38.94083782 28160773.5 11.26058679 73596.91267 1268927.418 998976.7945 19915743.2 6414389.259 2467342.629 0.03125103622 29227028.08 3797.945935 +287774.0632 30612.24168 11740.40969 36.53694916 2832880.988 243417.3027 19107249.22 37474.28551 3799.847088 21587730.99 42041648.27 21222014.24 397744.5363 47628.28188 634352.3056 148564.9243 17903.28542 35602653.75 0.0571134674 27486.72959 131485.5537 0.001464465297 265021.3256 13264882.25 586724.386 1669391.673 0.004120374808 388186.7524 27422.47154 1787.166469 16416524.93 966509.2564 34126034.56 2523747.88 19148299.27 16710.95029 100681640 1225090.499 5810774.541 3022251.922 27926666.03 6.918707572e-05 64753.26135 6611866.418 26519.23215 7806.195809 45988985.4 24.17059718 1532051.188 0.0003591867411 3.474432781 20677038.76 35742364.31 18.05715088 2687526.783 25801899.73 70649370.9 98606362.07 325434.9594 23505634.79 3397143.03 43.60544794 35.05729233 26492255.6 1406053.241 4241870.198 537336.941 1743460.306 929.2872315 44773993.54 34388079 40431875.23 4.230434071e-13 641189.1559 930672.3397 3976783.004 4041315.662 79368.19201 1347964.087 535913.4314 85.08025706 10347780.99 7768702.661 14052649.58 35149499.48 78990867.55 3304493.694 4048.48274 0.0005814119607 1398067.528 +72620355.05 55305567.19 29583789.09 0.02296239542 3504308.101 15357484.04 22956291 16494619.09 781964.9702 9424553.253 9264583.187 1111596.298 5536483.653 2676527.515 2637.924529 701458.0224 1880.621619 5803135.981 7028590.016 5230483.091 3471577.967 2475962.946 26164.57735 34753.67224 10407279.72 181.3905491 403.3941739 2933062.687 6656845.807 9.213468761 22212327.13 41532035.22 20818945.67 6538565.748 484480.2024 108247.1501 102186710 657.6652881 94835988.16 960306.2402 8929342.069 76265.6968 7192.927987 259330.695 18824214.28 22460004.26 60843.37087 9562048.633 2351300.226 4128783.038 26241895.32 2023.507488 5430573.505 4842702.493 67767104.54 3146941.551 3335402.23 40089305.58 1414240.312 11381522.74 5742150.273 1325.833789 10015.78271 7031181.411 9716.886155 12052691.55 895072.7819 2932.241233 4953224.721 26526575.7 0.401701513 62978.0346 34944.83516 250.3761491 287443.0755 42.67338299 3727705.656 6160087.392 168583.2805 2691147.631 3804774.8 97088.75572 903873.0513 9316.307252 0.00015778774 4864871.092 24109033.12 7048070.706 1.659968418e-05 2191.56023 +7722412.661 8389593.272 36670040 42132.51303 105898.7777 220.5174959 8033222.411 32301.94425 0.2816776285 31611763.03 42.97681835 8925928.561 95094.33541 3036197.29 295191.3438 10008848.07 55.14487474 32323814.02 2617065.534 85130.63112 5611358.036 3497099.193 2547336.385 2874.52476 5.118045008e-13 3217157.789 3591.401495 10457393.08 0.002919601402 84101160 161982.6359 4394980.186 48222.68286 4722.845773 11.34689872 1809186.755 6926125.66 148299.2076 14765919.12 1098024.936 2812.480357 2320.866321 24368.27213 850794.7397 7673485.875 5544.419131 0.0004959401237 3657172.673 496214.6121 78630.44733 558641.3892 11671399.33 2044778.974 14547488.35 76803.82707 31652.25498 14027230.58 11265872.77 22637566.43 53702.62193 7486016.627 55160.72266 25596230.71 5586953.384 83372395.65 12046786.59 17650712.51 0.0005825390733 25745800.71 59830.04259 1.922621224 1514.206275 24.88009644 99005.16621 27820176 108904.0545 18520361 29859.56109 4535937.052 3252.50154 3293.440992 69904.64301 63765772.06 1.301974883e-08 25409555.23 6051438.68 0.06085153934 1444719.294 145520.2113 18072069.38 +34312.66007 156.8733131 7961085.343 6.297735367 3473782.38 979921.3498 3814964.281 58331.09754 775980.4255 156.9952614 16.60147667 4833477.067 655.3396932 42952977.52 1083519.778 1045.913086 12637854.71 44069723.31 68571124.52 66800.51345 344349.651 3.140818879e-05 0.208614672 0.005804227042 344907.0061 14543342.49 24055812.64 2.546816254 161289.6544 19612203.81 406811.7353 2697142.987 207271.4658 113286.7703 43417.44714 3051624.361 2.803642185 82.20921041 10457420.19 17792.50244 29726.06313 8207566.27 49280347 30570.80018 0.1828677835 339398.2734 21526607.59 362053.4073 34310158.89 83227.41337 33589356.21 143.3995819 200068.7755 23417817.77 6148.236293 218.8090335 4377026.39 1372661.758 3631761.261 3253.051312 76895.12638 26380454 24459897 7.388022878e-10 438027.3307 2590.631872 493.3078743 35271847.02 155678046.8 73324162.17 545186.3542 1720792.028 7174484.495 52948536.1 11704957.1 67898.63695 43920373.5 44241608 76654.91224 248280.7698 14494019.92 0.03584203314 17777298.97 0.006204669619 3651.324304 843.9508091 3323068.132 706520.1 1505.493594 125797.8849 +51390068.85 7391065.685 800722.3949 15366716.91 222399811.8 13285.70703 610566.659 12572.93792 1708.273569 3204.749938 477282.9972 35745.10058 85305132.68 800.6687464 22081.77087 2975445.154 89067.67363 9665.716187 23747.70291 4314894.45 92562925.02 767071.5569 30473230 268355.6125 39495848.08 29306039.82 72676.92974 262745.5639 7077573.355 137205.0595 272.3506051 7699885.816 11368285.11 413.865309 18186859.32 9749.192507 4077806.511 8306135.265 43090919.52 1209214.784 7067120.705 15.8015017 3576.466603 79299.84552 6074.378383 868301.7646 0.2062639893 18402168.48 1793.137823 2040891.323 31857176.61 8017383.269 10753721.1 34686.4516 170347.2326 13961535 3502029.808 3737386.101 3941900.285 3528773.795 26068311.86 20233255.3 75.49372188 22000884.87 1343032.787 36729144.98 63.50957963 253741.7925 8155892.769 25627754.79 4406.782073 21411.89596 25765577.92 53659432.44 183.6293352 28634815.78 34741602.25 11891482.52 0.8563745647 86394.69535 3345967.044 10763844.05 29.6779794 37053798.24 100499.2267 81.3014615 374.5887222 41989347.1 1915246.272 2975583.324 +4011473.143 3168.39475 17164900.89 54883074.25 19425656.14 98166.49949 13092.30414 239132.483 0.0001154854521 65.16211148 5490724.517 1.021428427e-06 3519106.901 2092.766263 71196.94531 294688.0965 21454522.47 1114841.11 10781381.52 7452754.067 139.4182395 3990.984465 186.3083686 7958989.033 33892.96423 430.152528 6587720.573 351.0669846 61535.89528 553.6910667 31197234.11 3808649.222 3848268.259 145374.2222 5.445820167 722.6197 47329019.97 63875275.18 826197.5007 68099383.33 6510421.002 40417065.13 35622.25312 28685936.17 3004213.558 9379.436187 84703842.75 18873.00227 40941511.32 3.355611425 22995517.32 234445.8523 248090.0817 667306.4448 3119487.547 12.29170906 5130.470768 4477902.655 916879.405 20345.32531 86869.82755 26754484.8 31599706.42 2606.270881 0.3365456292 527816.5965 2910.808747 127577.6183 28708416.67 323720.8491 0.0006585488071 3109.846747 16807074.96 1790502.117 22139386.92 567830.3694 93102.51122 2604.676186 1.161576562 25061.41179 86731296.78 111.9470467 280316.3896 8575661.704 47345182.72 11462718.1 33260.45647 1373686.326 2030.737331 31926012.45 +11130515.92 292139.5647 1252247.526 61570977.27 2837622.5 4797.830873 686129.1302 0.2583842432 10694792.7 270232.5257 526406.02 35423990.96 292934.1642 17795425.93 0.1214165632 19560869.38 18147.14364 78011.43532 7337365.691 4918701.846 939.5460394 69143.82751 145016.9598 3446560.057 2554626.087 7476959.643 2630019.232 17483939.4 170.0880847 9894947.256 84110035.51 1553546.509 937489.7643 0.2367446216 73036.45086 106414696.1 78867.90085 7135178.506 3468.981001 117212.6397 8398084.001 1.134408712 4818042.606 1476772.266 4188.978034 44641304.87 18975539.11 17.48815517 2414535.513 138451.2191 13982238.56 151287.4734 7.452438713 3035.953608 5278.227068 1780716.513 1480582.059 354765.5965 1888.029568 10305.31019 3038159.387 7638503.659 1718702.338 9900994.654 159.7314486 2678999.859 5776040.358 349.9980975 4272655.5 1526300.612 47036.34477 2433699.615 22988014.69 6137507.192 1154891.466 1421627.55 13555547.76 13622.41428 106161.519 19450807.85 3736043.434 145955.3831 41448078.29 2890818.916 8.830818706 2137713.782 18819268 5952.477025 59709580.28 34663879.46 +272012.1775 1025582.617 6333779.493 16832027.24 12202813.88 25884.4355 8696673.023 115096.3485 8230.596773 0.000555907423 12772544.85 489.8984376 54294416.78 4172860.916 366067.257 5794165.944 3252.747783 19.62134256 302718.208 6508434.621 36663.88659 2487.025304 596372.9825 242.6613187 36014280.76 2266083.322 269.0419018 1329745.197 297.2374572 876794.1804 4615728.529 5353.357272 1561307.023 20182914.62 452282.5399 22784118.13 1.893340752 53731370.61 0.08036593808 8677731.475 1510505.844 30179.32042 2340010.991 0.0312384516 14811.50205 324837.6262 379.1471347 196133.0086 0.1447459648 145836.1494 163887.0049 3137480.509 1365842.337 84901216.56 7.455558591e-08 565.5352485 60150541.26 481930.3185 36511480.61 1075386.312 5952717.133 10286083.13 181950.2826 75.73434529 667.4647562 9759576.443 2463.406863 566422.4291 7990555.339 233.8750654 2102302.066 60825.78344 22243672.48 3999713.5 616722.7072 7347.486646 0.9413398579 2344256.433 18559243.03 2143639.258 2.549373286 524725.7206 0.1514694061 80667.42429 4348553.026 10947496.28 38311.32535 3935728.688 41259383.64 411.467087 +511.741463 24575490.22 17513306.87 43688.71899 38736677.85 4976472.624 78899.55386 3285.832176 36931.43926 956740.7954 3612136.086 19668872.94 84739.73946 225679.779 3190543.406 819.6939327 1997526.146 154.8615473 24352330 10614180.94 19326.73091 2571.461529 76640.82208 8467379.27 185841600.6 7571.987859 33748.87771 24.67864469 7415560.649 3003521.69 65.57956886 19942.51922 83863112.49 4308093.736 256840.4452 4578133.794 270974469.6 65223.65625 85.58953098 9561.566696 3993154.833 8351908.915 16869472.97 300918.9427 75064.76915 3458989.947 3742684.371 30630.12237 35894.30178 12195237.26 26131566.11 23484.06496 1.40116402 37266659.69 1355140.424 823297.1659 529.810592 3246.454601 23021275.47 7314.528637 60478546.51 38119022.67 12871538.83 974558.6257 139313.102 17267.50739 4.834332087 441421.1563 8890.032386 282103.9946 374.031708 53741977.31 61080761.68 24948460.45 3011340.576 539.2784251 25037244.76 0.04112845359 40939085.86 455.5034485 9390372.823 10315191.3 17.92880637 725995.7481 17967256.1 3885364.886 15007358.38 48925438.04 0.004068295012 3831004.325 +2621284.943 1244550.634 3305759.685 1677050.671 15651556.33 46119207.65 52415.76019 82782.69429 118.6642442 16428.34294 2888169.242 7005.572313 3813866.935 60.5873946 3377.186293 327958.0827 12145.02029 89291.39844 29749306.87 33330364.18 239816.1991 83608577.23 939349.9827 174480.5095 8799.507056 1846654.116 134093.5307 58873.55032 2990886.625 1890471.164 51035686.4 77.73910944 7626.626284 0.8546764687 4731171.704 8525416.101 99997.25551 42429086.81 44693832.19 2734278.827 1276830.531 71782376.23 3437591.068 11728560.57 5.372571337 302827.6475 37661.55511 3178.289105 7525802.116 45.79106353 37371243.16 9410.731065 16019.16936 13374636.04 34497.50717 20640119.43 4.281447443 153925738 57316006.94 4818.343469 8.897984323e-11 318311.8134 1.606366829 8.043472434 2356962.924 123937.5974 0.09373917513 5137130.791 6850485.317 20245046.29 38609538.16 10127233.59 12544.29299 2842.855957 40215054.57 1206865.75 33079703.54 17619824.58 14.56363992 1904469.423 72.78015725 21484363.82 834594.0874 33962921.6 537103.3192 9294669.368 3.126656711e-09 231586.68 1154115.379 8374611.51 +5847007 49084074.74 4957307.436 46007.50047 1559966.178 9357129.075 1.015337128e-05 14506533 11149645.69 0.003881825028 314.0242655 1803980.301 58741.41926 0.02883821149 859921.3745 13989366.45 352786.0714 4149042.355 971945.6214 38352847.92 143.3327795 185811.7479 28323151.36 543754.104 104336278 30472546.77 2122217.425 375.2145446 260239.2886 39180457.9 44792236.01 41663038.68 36073620.62 413971.837 4036519.103 4845397.707 0.4154872022 9093268.319 281.3222351 0.0574069835 1292400.732 15857940.65 943313.8271 1139555.804 67609892.7 0.495562643 2202.458867 1610871.76 1425612.456 5463442.797 45702.18512 1189855.868 23795.82331 51539289.28 10267527.55 2653673.762 239729.8537 176577.5188 11623106.97 59586799.04 9276926.354 35875460.12 55013.66714 490.3319579 30657611.97 18704007.92 31392842.24 0.09024978001 2814203.029 3068704.153 1968.497377 18037.67469 171182.4766 64484192.98 3.897465764 8299892.347 413.5840715 24251088.13 1992008.378 50627951.62 46781791.4 18530213.23 588332.3236 9014199.895 5319479.012 97836599 7725769.842 14094524.08 19036961.26 15349.4323 +4.292569479e-09 617493.6313 3.454265721 86.85182282 18804454.69 953684.828 63704.60867 3544165.003 12129.0513 25926.24943 173.6922076 2194934.549 31750055.73 549110.2691 15193.88189 51530476 16366319.32 3770230.184 4297.480436 4641983.892 24871854.27 0.2213600693 67419.86164 2150.444849 18594049.42 153951.1722 1446768.051 1006233.431 1655143.409 588215.4247 219339.081 5180171.433 40109627.39 1093094.712 35881.6164 3926.558904 0.01353582828 86768.82462 11332752.24 523858.4201 41986325.73 14477.30188 296168.0938 19071.39859 23749375.54 552.3975252 26970.24738 94028.37355 135528.8974 5231117.375 95973092.48 2181.80917 115.2383409 110163.4445 3197914.434 139601.5481 5102089.084 13745943.56 12650286.93 539631.0935 10871.00437 4153863.951 88.08895828 54437.19517 4646740.433 0.1341936823 59380107.59 21340.64841 28631828.8 1490403.372 149414.947 0.0001111917307 0.008068395723 0.0005533022085 719556.1455 143.1453816 674086.7702 63134185.12 16563.9335 0.0362569356 17.03257932 79429.0595 127.9322519 136.8883241 26687557.51 226810.1608 234.9746091 20564.50856 21901087.35 3243132.586 +222964.1899 4297695.93 79531220.28 799877.4828 86.24237882 16780.10937 348267.4471 2788292.218 1484240.706 7706610.257 2526463.169 3723823.331 302563.4556 28.39334843 1.392157673 331193.4526 2800.09849 811730.0562 5097203.896 1592209.579 21142.80596 5620282.3 14802438.31 28337576.24 17455.91685 6374.78174 14.57745436 6239.51111 35522200.02 39010.48071 5.69030605 4574013.537 49646870.9 124455.5676 0.03142360418 5472108.958 1069.559247 0.8553835117 63480.19681 9286.511081 0.1091188994 2932.50783 677860.528 19.40912007 23438.37761 0.03499043467 319.1256916 833721.678 4266.158468 1155388.507 11055122.08 811468.2832 176560.138 407.5197608 2186.248435 7335434.877 24552286.96 44555717.53 405565.9927 16636749.32 784793.3201 278616.2568 42767.62114 26840641.93 233.3366511 125024.8296 1246771.349 21795601.75 8003853.808 807.1793252 0.1162498029 16638096.78 1405366.824 156939.9241 5.596548837 2.758242203e-12 31571272.18 50687967.95 5138.705208 32667.53773 49164278.14 56.51702356 8377.425802 25082679.77 80358901.63 2763106.25 5650349.499 5747.20014 206599.7236 9948.283769 +3882447.467 4.403202184 20385.4582 41617412.04 24935650.7 5742818.238 9865.215698 41735577.64 448137.7883 9751734.836 36743509.24 10818.41902 9234117.247 313424.2259 759139.253 8314397.456 1.757841233e-07 2596.253892 14793.64573 1646.895887 7243999.139 3417073.911 9236394.59 32830745.29 207.3171384 1476045.644 3185243.399 63707022.16 95695878.65 27790479.92 132494.6305 1512907.088 8731.757949 39630329.9 7649991.353 858.4638282 51.33303348 425.7706414 0.0007641705313 1397216.257 9.274992014e-07 397343.5715 5974721.963 214765.0281 122553.4523 2754.376806 1266850.234 500.9114694 3819638.311 17708552.8 11038536.22 8289.82185 7193.412667 0.058493333 151602.9978 22192294.83 29422684 0.584418271 41644.23411 17344044.07 49095277.24 7180477.311 8692646.673 24480228.34 7105037.113 3970.847267 52016510.31 15908.41756 1.035962889 1283065.071 65383424 0.01955883667 0.1087904718 10818708.51 25113832.92 0.3298582415 5915641.183 2289582.499 78.5819173 2453642.143 64630.58209 6701.01914 510019.9683 8719115.785 3487786.529 93.162117 39922531.94 4988106.981 92444.0509 17857266.15 +10516.91416 32442242.14 5.022137498e-05 547050.5624 56896.53014 8.850956899e-06 0.007076901365 50526176.9 57100364.74 85006156.74 101103995.3 0.1030739477 285497.5628 41.91259547 28657322 7357972.508 2287016.924 23465555.23 9084174.428 9289.218379 7952.297218 0.005144741103 41228.81511 11.00770049 17124333.68 8787394.009 5372.957088 22766824.89 8941314.117 8317608.597 63133.72403 13405.04263 140386894.6 63163470.54 509.9742723 3386991.599 376400.3664 27043.75969 89.06686033 33862.7776 50754.78605 29100603.87 52824241.06 10.36470869 2901255.555 394.1878642 0.002053940694 5171006.587 48115536.3 4.993262741e-07 25510.81718 13.74665398 0.01834064427 510154.5034 0.1813999477 1952485.85 4280364.11 259327.7302 1640200.904 31080503.5 11470305.38 360106.7427 32966.33485 4866.660567 4.087911884e-17 5684.536579 100201.868 4654306.612 308.3621089 1677.581665 13.74912736 6174294.317 19779866.19 163049.8569 1964.0434 22603.6753 3037.858844 40688113.67 5941718.039 58.83339834 72424983.33 0.00506580859 13018567.69 89144504.66 3771.054451 55017.97105 13327.74876 1276.320679 667.0453743 0.001231890579 +155.0428432 4433373.179 84105414.01 8964934.002 8729571.505 450116.7531 2529071.4 4927912.12 201899299.9 22197229.9 313202.9074 22126453.53 8758527.153 16852549.04 4692.0341 302.9258026 4330686.369 0.1579686898 1597679.032 12046532.35 287942.6245 42.38096133 23216.48953 1702.165002 39344651.64 433.8129298 1568563.089 19550415.61 2066319.242 268335.9396 1298.420916 4974924.737 264034.2509 56061586.79 1.80459557 8470.23318 31527.09101 8501039.506 1459795.363 2386.797784 13734998.54 23763.34285 144.1320863 3086257.71 551.1910665 2310891.218 3259.310164 2697110.547 633565.3633 4822.804696 822.6901807 131233.836 1870900.063 145.4223157 1254070.42 3750715.677 12609264.12 7307775.797 6.89962207 41165540.26 22702468.88 1.919255787e-05 3314227.969 71387328.39 653.418691 279583.6192 10638098.9 1218.603146 25152983.69 21641273.97 13471135.56 4163422.031 11613.81439 653513.5591 1932426.541 7077223.522 1948476.184 278.9890404 15480444.59 258039.2741 14585748.32 1452498.088 745741.3754 1321235.778 1247691.934 1288025.698 3076971.093 3534540.065 895605.6509 0.09804558774 +12989432.41 77.9734077 7316319.679 2830112.33 462893.7286 37986705.67 148.4459926 35.7348175 50715.81238 27982322.29 79827.86916 51345054.8 1299610.594 123113.8145 15.41695109 103734.0938 37737695.6 94352.30922 16813132.46 17053951.58 512293.5861 10636032.93 4253737.467 35791940.98 12.33823902 41295.95193 427.5073462 14543540.07 861678.5062 5.224664884 27820130.29 760846.2082 8202375.136 13.71412902 5133370.977 18466542.32 1827387.95 293969.8898 348241.816 611.2774001 741627.9383 1580388.185 64140.88057 19282639.74 32812.20203 694439.9297 14202024.89 1097532.212 35129.06223 236075.9376 30209.41698 2075384.84 41006.41775 35783.77113 390.6365426 713106.8699 3690944.692 2645.843995 22509787.57 0.0001523692559 2917.112715 32.46231854 61388.64747 3414832.778 9626632.98 7169.50365 4460.246006 77422.13867 69971864.61 667774.1622 7730803.333 7.797788305 5134137.167 2579987.089 1074446.97 1272047.377 5374.191034 1861862.125 3428265.407 1976241.061 500667.4163 11.20008564 275042.6055 8011334.322 115492.9555 17381466.03 14181026.44 19191.9649 154771.5164 24879579.02 +97568368.45 1699886.813 452636.3993 5025.399902 126545.9983 671952.1082 11702904.78 36348.625 7571225.637 384.8765298 5672631.361 5403477.002 386003.7057 2493532.728 217292.1798 51370.18345 677341.5793 2.034277602 20.77688269 4394504.642 109236.5626 3422100.846 26463465.66 129865.2241 44793229.65 2459838.306 9905766.946 711632.7816 7770.472344 48608.87301 257090.8587 3330841.119 329911.8136 225266.4699 270.5238441 0.002853931896 23.84175767 142909.8114 29327760.19 0.1272881967 3285771.067 7693912.381 14166570.08 57.02442173 46287.11777 1048863.227 33785742.69 63378.72925 8502901 12138396.74 363271.6084 1201082.475 7.065786942e-05 4.439793471 189861.6507 106745.4463 89248492.5 15999.9872 0.3450260214 31474397.32 14.87495767 4291092.889 3916.124685 169884274.1 61169.65332 152253.1347 116886.8472 2.394043051 18206081.4 10223.62281 13468624.88 3411911.354 94951.51841 775406.0198 387674.0178 16442532 29035017.13 38.76466031 927903.3279 16276524.49 666.5901646 2187803.108 4837053.699 3.507416108 5749.827846 35848.22976 25612854 156718.6741 1769.790872 3879318.735 +304297.2073 1974985.395 0.02539086159 463.0963645 64704948.41 118150.4341 198.984221 3309.640432 15428.43299 95.4103811 0.0193174786 3555071.832 1.508435353 25329648.7 5567.527487 11242391.35 14034329.25 439413.2414 648.7250698 249849.0427 232629.2386 2.478477125e-05 6908.409492 140946243.3 253615.4177 70059907.12 18264480.77 73445.6046 129091.0291 35582511.99 3751186.558 5253321.663 1646552.352 4699183.393 28918.42599 133272613.2 1682103.195 5489502.094 2390454.712 5.392592733 4531865.915 1573383.033 76717402.69 443.8194239 0.000466301557 14392191.74 15617944.4 43332.8933 871.5940579 25061729.88 254.9684897 13941682.5 25859640.71 1869976.132 672489.1519 2140568.204 24914989.72 29382.59493 9169.556667 3841.407124 0.3523079782 397231.5859 546.7403526 7933554.141 40573565.59 53236.04774 51426.91456 3723156.528 16252.4616 39387660.94 145.5806858 47734115.99 1581.223183 33294286.3 149334945.1 1054177.622 7.821027674 284740.9925 29711058.79 11309565.53 2603213.915 155135.3669 4652.464977 6217218.851 3473.382427 20607378.08 105010.0904 14090256.98 350210.9879 1214771.918 +7942.388256 5574814.744 1727566.952 107675539.7 636.7601243 110943.4259 743578.5604 18257566.68 10199686.49 2463.140539 571574.9484 1437815.133 2861363.004 39503097.99 444785.4688 9559712.007 1546.036743 21600.88278 2710705.553 17229466.51 83381.75327 502.8109746 33643894.46 29783244.36 275.5035305 8251570.549 17172499 95564.32209 7.100963668 109570.9192 815997.2804 6954.033848 83099006.2 58.68559946 26462295.44 431634.8053 961860.7717 73129.68972 11661987.61 36.11838143 28401320.3 6185155.353 15724244.19 8271990.132 19607352.21 2343.222249 0.01661631193 718191.399 27641109.04 116.3606714 7150369.569 40885.55947 454917.2131 121848.7561 108.8804669 2.755488514 5502565.713 50818095.08 0.0004422459018 4372448.612 23776977.28 48798509.51 757697.5252 3806566.015 1229608.671 41721340.62 2748.680843 23248850.23 2307145.607 75.89896547 23112140.51 2739410.035 3076840.575 23329.95898 25140.79724 2603842.516 14714.0291 2.810135338 0.01839778142 7351.895801 2498197.327 789251.3253 17338263.06 4790740.126 57448.98694 5633356.732 2525892.388 1251747.06 13529352.9 7874.262123 +40167.32344 30.04365415 1860411.121 1.124579235e-05 5177042.125 0.3058049232 89770.23526 178.4229449 19623333.26 9777417.983 25477.32861 30892.71877 29339.32222 63773.85755 492543.2059 11549755.52 2.664290543e-14 840578.6414 1976317.74 523471.6848 168112.9088 0.1096046061 764175.2711 2603552.16 5716126.5 2.000739421e-05 32466588.18 576994.3605 29688074.6 105.2779049 231917.2227 1304249.483 167295.3765 17177976.27 74376938.96 53.95251096 852267.8567 524211.5368 146.5973041 2182753.533 105135906.4 18535056.81 21306095.14 240383.8865 14031919 222092913.7 66152006.43 15060448.41 268271.5503 8529231.537 17590055.99 52402287.31 1351541.668 66152327.28 1.454910514 12074712.59 520480.258 3751019.799 34213.85885 1575542.555 5775524.504 105536.5608 8.593771549 86647.19824 396286.3234 13061353.25 29162847.39 63190770.69 372.9305174 19174.06752 92453035.1 1824331.747 7.799707279 140442257.1 952997.0193 7981771.517 308915.7334 3049758.282 15388640.09 21445458.81 110727.8748 425.5550343 49537.81302 54629777.15 226.2584118 110875.394 21413733.05 1117738.4 17859.20126 274494.5315 +673.9183351 28347274.1 4828779.295 2671961.758 25242.48939 76.40117168 24463.5543 18.56480858 3328090.019 351114.1519 7813.129193 1937379.754 0.00221410111 187239.2766 515002.6865 129872879.4 28200.16434 558590.2565 54863477.29 525067.2531 26031254 1297.184206 83672.91983 7.664407441e-10 13597.49833 18065.36509 13413282.32 50773705.1 501055.7824 20835763.37 7121698.397 518973.8095 26495.56895 447.6140424 74123787.93 17745.85497 10077.576 115.0660976 448.9462679 6203830.064 3222347.582 14394212.38 26658139.73 227439328.4 25884111.82 1420.034424 1139040.85 1897280.125 953417.7391 107247954.8 621.6406366 3153816.712 16389.78523 38802390.26 1002649.671 10836.03956 1.809043241 17826312.02 502448.6111 4648930.001 3959.933128 34982304.13 0.001024896982 16352428.15 44329854.08 143961756.7 11699245.51 1604442.653 4047176.87 7719161.545 2701977.21 4682307.843 88.51863743 2194703.343 7438497.366 26475703.07 61400.83132 3067429.302 349493.522 12257465.45 96017.29184 16169141 47.35992586 6789590.158 110332.8595 4478525.48 18162632.46 44202114.36 1734279.724 49844213.28 +286250.8823 97725.10202 104468.6489 6011739.814 793782.6572 11137189.52 532445.2398 36232737.6 31750362 164.7006805 15932299 1843332.448 484.4038981 2988.33104 8275.997803 21120480.65 3078.794768 43309966.88 226905.5934 790275.9414 0.3359867486 25050849.77 18358.86328 3195295.432 368117.775 71960701.78 29389149.38 55519.39586 16067752.12 15227.1902 42159233.74 233140.953 2405.718363 432.6941158 9331796.285 0.09660956704 568272.9071 1666310.376 126752.5618 0.008367774648 32406.7139 11446746.58 12.88429293 310010.3095 11285974.12 10629.45874 43558679.32 5023034.401 1464016.41 0.08657095675 26834106.78 20159677.87 180870.4415 8288898.506 28289365.33 641120.896 3048.779894 3510696.143 8181122.124 37598536.59 1523969.607 33452.0597 1060.046534 11124375.09 17.56366837 40991220.53 1141345.987 0.0009179291465 204935.5027 135601.216 34272040.15 11266390.67 5381.929435 28393185.73 10854.80513 13568645.11 14668780.02 37531.66973 2917367.243 286974.1787 53800.10806 6855.556343 7619807.925 7803509.439 3116920.375 5.621387661 1659092.189 7479288.676 49.53662885 2265507.664 +9518319.977 8088002.75 2600681.38 1104885.154 8885065.904 11917069.55 233.1798315 1984285.391 40408443.66 2232504.477 417658.2989 40752816.93 3940258.453 100157.1769 125477.1311 701463.4858 0.03307196138 0.003637063902 0.0001978031014 32142224.72 8403.539311 95.82331175 128625.4136 0.06210284713 4111523.5 2012453.114 27503393.65 222123.4361 354317.4913 44838897.08 11164.43232 12672221.17 2057925.255 9719733.422 2304.942228 5094976.951 652073.1941 226017.155 3.841416927 8362900.5 5196915.09 988.4408463 114492217.1 9845863.624 1959.468578 25668442.2 306820.9469 3218284.122 9534199.571 2656925.343 949452.8719 2825429.84 48009.85767 402.4628348 653547.4381 944.2638524 10081756.01 6494061.667 40482155.16 2.520819242e-06 34078.60178 51057.42527 30379811.05 106.6507538 142587.3027 14924.66973 324474.8787 4661.562736 127000.3812 21597845.24 91020361.31 134199.4814 1005741.934 0.008927791233 187065.3725 8134624.472 20086872.9 86.7561739 58173470.78 27983787.98 36681595.63 47763.51195 5090.732215 61.60091671 691457.1832 1139911.024 0.05133493408 50105490.52 4878594.339 28454384.57 +438737.2622 791401.3429 1203.409814 40729166.21 0.06295190636 21958.39442 21.60823441 2663375.954 1781.612206 2067.390998 58421360.32 437392.5699 21370619.04 178247.1181 96346.82925 152701.9911 378.2175009 1.100853058 148.1814566 16631.75196 3458621.026 4760315.706 22514723.97 4.463334821 2.098277825 899.2411188 2303081.826 11929.32625 22428642.85 1126642.278 105964339.3 92542446 1456473.73 682062.4736 345.9560676 24889.86785 38230735.94 0.006906512154 1008422.672 1773733.511 2394439.447 2700933.001 12456593.64 1605139.333 28733788.65 3002.114561 2138.231278 72495.65901 20834088.86 20014384 317653.3102 12411816.25 3564050.092 15122814.84 963.784727 717964836.5 15623803.76 5218349.727 27278.46559 64987953.26 41304.37509 2125.990927 1099143.304 4546604.427 96.84315791 6458734.919 4524898.159 20373.39279 433927.2223 8.919863345 2156.025163 19.07201356 201333976.9 28291925.51 35008.34781 119.5271275 24026037.12 69111.36519 10059479.43 8911149.825 197617.7467 15957.24663 5490.791505 20887519.53 10850.63578 4595568.481 314554.7437 1425.240316 34094.10054 5137746.73 +20612937.65 5822384.766 36009734.47 287216.3669 467015.2826 7132.597181 1029.918941 1018.753846 23090148.23 735972.4358 1132.826182 469187.3825 1526.465813 468395.1512 60697514.52 40.88450561 2317853.633 67070.57682 3548255.388 5076547.721 456.3040361 3709.587546 82388873.62 5753700.665 7788.167245 40798.5199 17842107.49 594102.4591 19374428.67 3980.997086 13168.97477 23322.73981 25054.64049 80221.43859 10192576.78 4.619018108 81740126.75 4873.642097 9744.23911 17214948.08 5364.389771 7737704.903 77597158.64 44631.46384 5986777.398 77133730.72 614.0131871 6402733.825 285973.0346 18.82029433 1509428.769 17780222 658537.7395 2830612.361 2011031.69 141170067 4148974.482 5184.464526 11306315.41 1269.084263 0.1366533894 207099.182 361.3434058 113199.723 9649.947272 2124763.554 148.907109 5407.202166 7738223.501 4638.157329 26970235.41 15398653.93 4755547.978 29458450.17 4042959.815 104045.0857 15012846.18 1246030.642 64235516.11 0.982059747 10763248.75 36638.98536 743.6385712 9948579.69 15752869 19001329.41 11925.17484 174621.9895 62499498.58 3897152.453 +75106.8038 5808234.314 24158597.42 334.1879593 338394.802 5208897.5 510695.579 29948040.94 3983.776505 16285216.2 15.04416035 110813.1804 118540.0573 12663178.42 1102220.731 207786.4339 1.828525104 4403269.174 11333189.27 2467575.083 7081536.851 48.88130131 60901.85313 1699782.268 34797.39862 88812016.82 1297224.613 4783.410502 11208752 10026745.18 33795986.57 85941065.72 850189.2002 10229069.48 1494709.696 18.65873733 5110009.14 541.0823366 22929009.55 5.242082408 143816.3803 12653.53494 52.78732569 111027309.4 9965698.026 416.5588465 29051.67393 13083776.46 1240308.381 1208180.938 7780019.398 14806840.46 556.7150088 6289.589388 2710.953239 26213788.18 744397.3172 280.8364322 15854718.34 204526.102 28804.05447 47.5437885 1353145.121 551.567912 9507.742222 43554999.4 167920.6085 17973263.94 14472155.56 10561755.54 45250799.05 1063.280983 10619641 4894930.737 7788805.826 5713313.675 455388.8151 51117.2033 46200071.04 645796.1206 6.119929165 13360780.56 3535.236062 23803.69603 708892.4476 35449.06807 256977.2287 961.6987963 330274.1038 3345822.885 +10067701.5 91676.04491 3760661.49 979796.386 7503493.05 213178.5792 2685432.588 418633.8991 10200541.65 285643.3515 8260641.639 46305575.73 22.69070951 39013894.22 6587609.829 68070.98539 5520.782715 7.027263592e-08 814500.5823 658575.1875 21133655.2 8122488.536 44.39357522 1.363855418 779946.436 7876311.346 1518004.783 40215480.27 9697415.577 7911675.79 27242877.19 3.649090286e-05 4597438.521 135849.0978 39565635.44 96462533.37 227.8988188 3272177.75 12292653.97 23.32390596 14698791.46 38913.79172 65982933.36 233.187882 15.51184689 7597.85474 132.0797178 3.298410337e-11 6950.762724 3230462.06 3652529.823 1099.161087 0.06454308349 156311.338 270.1351654 4622.452215 3859340.321 21290630.39 1041416.506 7164267.234 10942878.08 10592726.48 20223028.16 37813.44985 2973952.562 65.4579786 7947673.761 8040.432654 86.76283717 3229.897709 9706.626894 461987.2025 9843648.092 13676692.81 28388302.84 3886.921208 29038314.95 12383088.48 41852124.57 15780320.61 7299659.952 4713626.501 14615736 20236658.8 1.176793435 97962.50387 1365.299138 6781542.54 768.7212535 50284483.36 +18700988.02 19.46297977 406051.4672 525884.3569 519737.4604 0.0183062761 11.04315358 15607443.7 3536015.367 10647892.66 4831619.022 226960.1838 18107714.86 2017569.022 1169634.231 42578084.28 24095066 7361.708043 34072767.5 9435538.593 130819.0171 49.2535043 59681.72383 888234.0628 1325.086218 114469.0571 10268524.84 68092.70157 53611.95928 36030.14707 393500.6427 0.02538297825 0.01454730312 1756.36515 193131.213 35828838.27 9040220.442 1621240.343 59.26696529 1281.212296 4187380.355 716072.5431 58057.63193 1554049.473 7673269.837 31455.36139 1090232.701 806405.9295 1174.24539 19.87926804 4248451.783 11260338.1 784981.7323 22204.28515 0.2904978463 23349.68359 19547510.13 1149593.388 2094846.785 4.707131792e-05 1384797.976 7893665.052 154.6042939 8972.637939 8.930421825 6400448.475 12229180.63 6723429.494 45667712.02 110503.8971 7.406311884 0.0470817165 765680.5863 19026887.44 419323.9283 1738.379344 7557494.937 22637551.37 7.761560844e-05 8751.895968 0.5558802821 133533.8273 949542.2247 1166.341231 395679.5135 8.903532912 23111633.83 43323.01709 0.1548175387 122763.2908 +18258734.65 379.130934 471843.9908 2928983.696 8131242.802 365888.4573 4537277.904 6150291.515 51760.42621 220294.3504 2751.962277 1.589854917 565.9507631 1716861.28 355698.9044 848.0198821 1559.129102 0.0211887152 82943449.94 9837730.544 44244804.01 0.0001780699097 1156951.83 48582.1963 285956.3772 14142621.56 5828386.878 0.1817040575 65030213.04 844347.2485 1177.123171 35869715.71 54452575.01 42435008.77 90.00988183 106521023.7 928007.2897 0.06117610584 82411.83532 171590.4443 6361148.063 5155965.336 25345.47268 541427.3786 680273.4794 27411274.03 31297267.91 89354.07031 5.855820018 6273.803962 24171174.12 23487680.91 11510259.34 6427.628955 44451.60548 25345110.33 32909132.91 578600.6643 16908897.97 3947094.011 359673.48 13720474.7 14183.34382 13513879.67 208.090031 6.967151867 217422.059 66273886.55 14071338.51 21658516.82 37676.17992 4649193.57 2838549.392 264952.1189 137713.0407 12335.13226 35530437.41 118.9838892 10435098.47 2402618.161 8146855.8 44037.39476 1058.330019 7667.495006 2038859.084 57174652.66 51047.44049 16294.762 66570319.68 0.01227735745 +7824687.602 1665116.77 690.7837095 1539.251499 66519453.16 223.9578629 586839.1113 4928526.761 383.9935562 195.8754106 12325376.99 2001784.725 40863.38376 9.268009263 16721770.06 1453330.021 104.168495 92145171.03 469.14899 471.4476999 11453420.93 41613.21587 42559546.04 35729.40154 128153.5865 2977471.915 42659.60768 34144247.88 323308.0171 61.77379608 696.2827737 2.333081182 1625224.444 375128.809 85160904.12 15886.28484 2238119.2 53864021.36 284136.1868 51180507 34737901.02 20559864.25 282019.5707 5054826.504 2.751953581 15.95416835 35126845.43 0.0001549374595 0.8322309852 933886.6422 206.2408386 0.8736919041 5118917.953 26434.79689 15511586.26 22848.75101 4661.463087 3379746.416 87984.7519 15504.68197 973.3083102 22681156.5 1420620.756 353919.1893 101645.155 233795.1755 71177171.8 5041.834145 899477.8755 34.11904717 49312107.06 56125.51319 3780995.314 23909962.47 186990992.8 13544.31803 21250025.01 713877.3179 1039800.752 262.8294095 15.50032342 7363223.924 47375434.65 18896088.49 25276882.33 35588330.84 0.01475598906 0.01231738837 10672327.53 21692734.67 +# Errors [PSD_cut/PSD_cut.dat] I_err: +22921519.84 41775390 4416429.438 53212107.37 496.2405971 9951833.097 46454.79333 138581.3541 5542676.107 4399802.599 10193368.34 24075727.02 765730.4343 3.099536356 151321.7678 22528378.43 169976.099 2322.732271 44023.52831 51774.08452 40.56029768 125.3678082 4890943.079 12831118.49 7127211.854 443236.0497 1461.158434 10181.90971 203.3547476 1256799.433 38368949.61 4262.820599 39282.90062 18533233.35 12043.67167 91696.88729 182280.5802 12787910.15 1420434.433 0.2713740371 4793658.589 1982301.322 33232744.16 24385991.4 25013398.52 211482.6195 14208360.79 41025594.68 5499553.848 238841.6271 45101026.34 15551266.23 216642.4471 441793.9433 18983677.52 7768584.209 100615.3951 0.0003571319273 109122.9646 3.913067586e-05 10814.86958 17783644.68 77441.71277 105533.1338 3.412711472 24165382.2 5831527.157 54359303.54 0.0002059765084 1.500210656 5.964174189 27884044.44 36960419.64 1968392.912 29870140.59 1133333.456 0.769546595 13420537.39 3278507.563 28765.37879 53500895.72 4886004.587 461825.486 1035.957846 0.1642385527 19531417.61 11921888.09 1385372.123 1032510.869 262983.7767 +2365804.348 7804.793637 86002.17682 11986028.95 1813163.832 30324380.33 2176019.043 4362706.098 17084681.2 108164.8999 51009708.39 14576031.53 4556853.67 44199516.46 0.3700862625 582507.7686 2616283.411 2317.895932 362742.2371 40805379.97 42142369.74 0.2492140252 10935.98679 14334067.89 0.3865052108 10646748.18 518.910877 1461980.459 8266888.631 1961257.738 10360.76757 4658307.489 21337649.34 5455.658472 6595258.361 62036968.29 23587508.73 75290154.65 918658.1737 1060844.899 1083279.488 113304.1164 184656452.2 10983520.24 31444.95896 9640572.037 25452.34975 19256233.92 11475.43549 23561.80002 28.8162305 40691.16497 193.7378469 3169831.325 18698763.24 8415.918112 6583754.653 26.24787172 15901022.2 815745.1115 22647140.03 18345327.71 1281.179054 170222.0653 8162166.123 15874038.4 141323.5223 201171.0396 3601717.486 78051.03684 0.002203558415 7674770.73 2278917.463 49524091.55 17848269.92 9100071.422 3379313.279 9019127.55 308180.8138 6128975.624 12482.14473 62629.12842 8332731.779 114156.5161 73805.72804 209067.9634 1.213120914e-08 48159476.48 3710222.003 645.2168417 +196541712.3 56119513.01 16788945.88 1468.530038 451755.0369 14795.39823 22222243.03 259448461.6 0.00522363785 43371.70805 22436708.8 220372271.7 20955.95863 1496404.708 12044.11725 25183107.48 2.96392492 17626299.95 2140856.365 49908.86371 11970096.77 412.0304518 48.7151971 1576.105617 45878320.31 5513613.036 405.2253326 2981779.5 15161.42856 50709.25809 5.892546835e-06 1400.091616 550967.8092 1170382.836 12723995.72 2957907.139 3643713.795 1947753.713 4620580.346 4955629.772 28308.99834 25072029.87 40457082.7 588.8419704 8437643.476 738222.1855 7294.573661 8328662.341 17625999.14 451906.0007 202447.7527 2284661.97 13843608.08 1463664.064 26702533.78 647563.2453 22.59908733 196.0602301 387363.6176 13184468.81 4.16100091e-07 144132.1207 3358603.875 1285.428652 0.3247758479 15032785.55 26320808.37 37253.45078 174.5747661 1116176.669 691149.7197 21.96778346 12804.31498 8925258.054 4260593.962 73390.70179 1788.093554 177534.8528 555015.6065 71290797.68 50954889.23 162018.1434 2577.962679 64460.23924 5361810.009 0.2258457421 8035797.038 1270933.438 85149.12804 1181.286376 +2381555.463 10034152.46 24385021.73 654.6994739 1.931267526 71574021.2 3316639.301 7.793088755 2650778.82 6.127767312 14189567.91 5930627.515 1013876.309 852972.8035 41917.23567 4918380.075 288990.8371 175081.2392 2148807.011 4.830746793e-05 7963.422818 218780.7676 21850725.17 8168555.735 8111018.887 2988786.645 3246185.091 239006.6862 2661940.675 27750.1735 6372.157045 17023867.79 11178826.67 18052.93807 13799.98763 87312.27627 13191882.22 10275.36828 8749628.906 40682376.61 88.4309376 14444.92791 372053.3024 15472695.94 28546546.23 6820257.75 3212997.036 500050.3525 9122928.612 15988381.95 81882.42533 10909777.57 4475185.263 40.55050478 374434.3686 16806.64071 61960.49116 5532.978855 32.71922113 3584677.531 19599.53326 61275121.61 1.735507997 145.4669813 652494.0672 32260304.66 37640.73127 2816286.966 16836.33301 1.186884353 50024543.2 14.74200532 31068.15718 1161.174727 13949510.89 9696532.938 205013.2944 12568379.78 62950.03822 9246425.839 735.8540064 1901527.81 24.34502833 5710468.416 8830.823785 31672.10273 43291017.33 479060.0863 424911.2892 364.9611166 +159.9520763 59246.87456 3001543.855 4984855.785 1407141.739 1892169.137 1275622.457 8187726.795 228850.5568 70515.73401 28367.14 5571092.974 7008835.088 2.150028424 56053.15469 3.022594333 323.6949201 881756.5958 84264488.27 1082.471317 53.85557243 16.94952751 17829851.7 5575961.485 55936.31406 749.8396683 299374.9687 1500505.333 47981483.64 18040409.89 35485527.66 2071271.126 37116.37915 3.385963419e-07 7719111.741 353576.7287 4360936.811 13664170.43 87.20536471 8654.791108 19057778.04 3621212.948 6856.293526 4161335.905 32080385.9 94197998.01 1989501.253 0.2082040184 1915686.033 2.000998467 35539375.37 433543.0651 6146181.784 338798.5248 3750.775535 44751.51031 2604534.45 1643306.322 9036517.072 24519953.07 2100384.503 15626125.19 110.1254628 880.3096742 58.15310009 0.1303331998 7689.991887 386318.4909 12762.12078 1427330.99 18522160.43 4265.581707 143861.0199 3735881.87 48247.47503 3843136.757 10.42818326 7162.970138 70438633.37 2665782.73 13063790.81 912902.4742 14.57790595 14273.58392 7991495.91 1117909.891 16351688.25 658406.0187 14345438.01 11504992.77 +10.11520521 16221.90495 210277535.3 3003538.461 17242139.06 3748907.206 44864146.94 73099116.7 17557.51032 2311791.746 43.35370421 3569116.013 0.009308390641 20845.72274 1754891.521 33.48378148 81983317.14 122820.7889 9995710.285 1874.576299 10009214.55 11298.47919 5599738.105 50954.09628 10343948.65 6872825.117 1526996.289 11555489.62 0.2296629493 0.09129430248 0.2123683225 289103.1363 107890.7492 28604.34409 14820641.98 1544.161264 245436.2714 148044.4204 574563.6652 1960776.06 24712.6074 9230484.455 78.69167821 136586.3666 6451356.233 30546959.15 1604924.441 0.001208074877 1214.047741 4009605.239 14617261.92 102405.6738 4992650.356 1761227.229 29624771.6 9524412.675 1290.064829 48057584.75 11648297.19 177.1588979 20237406.18 0.105725866 9714227.407 518890.1471 12958372.43 5813955.851 4014376.232 3.34076439 2659059.037 6551647.421 79158.47166 10744004.29 146938.4763 37193.50062 100618.0193 29514394.26 7.18349444e-05 40639876.96 0.002224987253 2671573.276 15902.77943 7343709.355 606799.3338 60.28541505 701637.8475 0.0002026598923 3728.576894 47767498.12 11106688.76 2304377.108 +113596.824 22287681.68 1.61562131 703.9468677 658884.5479 65897.8257 237.3324409 11047707.16 6258553.224 149882378.3 15666263.88 97.48652453 7133492.737 173.366062 4606184.808 92042.78815 613.7850247 0.1340139807 12413.38345 1186.423337 19363.4001 23326237.11 65894995.75 13131708.07 16093457.07 2105.554646 314.7137005 42719.62436 5601694.092 1171891.186 238501.7705 7584283.217 901006.9769 13272038.38 3134715.96 101.5067973 31987856.19 8615959.285 1138049.24 13608.21104 8455.087949 4373.108644 24096.22886 7.804444692e-08 14474125.2 206592.2369 11225209.46 25024439.74 63103.51616 12.96919679 0.005639634372 60754647.51 28532253.51 25452282.88 0.7133213886 651311.0965 4426843.34 13322744.63 418302.9337 9307122.552 41991964.83 5667.918065 156.1708077 66602.60219 45119.96059 68817.27815 292220.8907 1679.91763 644421.9018 12965.29569 0.03240747221 44527.92642 18912458.23 227536.8047 17127306.28 22.04979643 112147.5319 35003.60427 515501.0873 17714.99144 2737842.752 31158.12307 3.247161762 2332082.652 0.9483857802 2473.136183 26717188.12 37829146.06 6.752352189 106192.8807 +15501.1457 16141875.48 22.56417389 390487.6825 51.96147393 151.122754 0.1171982492 24821163.83 373358.7888 282536.0526 318.7711201 41842515.11 10048572.06 7475.345984 2935948.319 14190.16712 910425.4445 0.2527635293 9279594.461 340050.8024 67723646.37 6651805.781 585585.1133 0.00190551923 294503.3007 9508534.493 18118909.44 797.9746709 25173611.47 2042.746721 1281524.4 2741273.049 10.00559044 122236423.1 1986805.33 10944601.48 35.76650136 380719.9349 7282226.014 4105098.237 971742.0468 240119.5029 0.3826767271 5631085.471 2361610.914 10130665.25 24649271.95 20302.98651 19515.18628 1683.704171 59529793.03 2874604.651 74372.99306 26678979.2 5105379.322 6860904.664 3.339701399 990826.587 3976141.138 7511050.934 81.71698656 591889.7769 0.0007680206245 265031.2588 0.0003893104509 18504.12072 254815.9805 907.8354603 24406306.54 6447.200187 46042514.78 1247264.532 122126609.4 7614348.989 264370.4686 16275209.2 5934318.603 9868279.309 2428242.87 19457.8364 1557835.013 47454921.28 2577818.344 329096.0247 4763640.843 20460529.19 434674.6794 23449976.32 6.725122952e-14 8533246.562 +297079.9819 282.8869554 472066.5425 11331460.61 744439.2183 5.660204876 7090450.735 3398535.395 9975788.833 54194.1889 426.4822534 5.81882399e-06 60874.82922 192196.4795 88899381.92 847.5754411 4088586.398 759.3481376 90349819.06 1.304955661e-06 23560407.64 381111.3199 39058601.16 169485.0969 210372.9938 412310.7138 112865898.8 105.2056397 11605828.16 138.0934922 436232.5902 26360031.04 2251328.969 3506132.213 72585.94213 1830.33464 473726.8052 6402963.317 10721686.59 1109984.311 85856.73989 1800.725545 461190.1595 7794768.402 27351.18982 30958.53241 9986.865542 32119589.36 22.16481567 1738796.712 970782.9582 12000907.58 1.253077334 13568298.6 1998441.503 41.05477244 29009.06195 9.908903588 74831395.59 250763.4082 20306.23629 3557756.862 2142010.634 3.074205107e-07 94810.67654 44418253.66 936153.8437 8593124.201 6076.812015 237930.0501 2642206.501 249.1031536 90089.75254 0.00791799512 5464.190744 27218.29911 547.6461358 9584859.595 15138184.03 17286126.39 339865654.3 13832.27981 74915.96217 22345269.71 738477.6796 266.760395 296906.3463 12192293.89 21536777.44 6817.164971 +21640282.94 1493353.213 10556911.37 1907547.792 1913524.362 19793.4002 18331615.66 0.9501033844 13529638.97 0.4907782723 44252739.45 1687.839898 2153950.92 36728428.8 11297.90104 2293233.327 27762160.77 39558.46973 18896478.51 625771.2431 243878.1503 12570563.48 175.7761154 0.5291864696 9224801.393 1766249.377 9956986.238 4.277190873e-05 1927.16979 4420478.31 1590.026168 15083518.29 9.380882851 1.225837765 112.5884417 133292.099 7817283.055 248.9413154 15874478.99 794253.5721 18504.4547 213228.3902 45726148.22 45859908.27 0.005799141951 28.46723757 2118353.063 393.0942615 5275201.274 641285.3546 6621569.869 96121363.52 18682276.29 0.05314757675 71167945.32 3.520064297e-05 2312911.227 6164545.963 24315585.51 1559195.785 1192765.053 5.118170975e-06 34363.71606 1190059.295 949.9645503 11651746.38 31.0536532 24.83080851 19228507.2 15465.23547 80823393.99 18732.51524 0.002401410912 424.6193747 528088.1129 16766.95853 2346285.284 1.512015034 4140741.061 1105.450626 75143.32123 170908.1833 1016362.721 69021.15515 7634417.072 365042.2384 753874.5914 8975795.264 39620815.06 263.4177399 +2279.87925 4113126.181 209.8823992 27252059.3 181421.7768 110.0932536 15846685.44 8369811.288 47152.56812 5934748.171 13049.13847 11874.13016 21474832.27 3243348.714 159140.9646 9125796.701 108.6425028 0.02002242711 9325911.916 3950.402478 1432658.43 2382882.095 13207945.22 27781560.64 12802676.98 43091114.37 223780.1286 34627555.88 28840891.79 47919335.66 13706.14689 3531.372778 1918550.619 761.4774785 48360117.36 337793.6468 6555387.132 3627943.665 3398.790841 72970731.93 2243862.451 14077632.67 74.23897431 21294.90451 0.0002078362627 196086.8897 81129.62079 7864764.197 12228148.18 22339727.1 0.0003965949127 2082301.456 2793.553857 96515.00464 2125121.065 2880492.877 391.214468 38169.54176 6476091.936 27906099.87 1316300.982 3850816.06 385.5498565 12389759.62 28471059.14 4334659.607 6389614.901 21181473.33 56948.08958 2163831.457 2063.247562 19.90122541 202114.1474 18485592.35 7593505.591 9527370.299 13127913.43 2683.705367 2.916556755e-12 5314279.675 20734001.61 2290008.57 0.001547819504 21275376.16 29133.68514 3936.969292 41938.27238 1071995.461 1835523.076 15253215.12 +5878489.339 0.00384110299 1345570.656 1.50960152 3962351.99 6901138.038 30193751.24 7112140.793 4897071.499 8162007.121 1441017.853 122419.0498 185131.5104 122503.5121 244.714411 24565360.26 2237397.397 10272926.5 38744803.69 425865.8079 0.06584733677 1.497319818 2869.517417 640.8571623 13940.1215 53200784.73 1415.142016 23822561 5066.964078 701931.5878 2769732.531 27256412.22 168371.0737 31473778.07 1731864.805 1547178.404 10544224.11 51963.79184 1269484.083 84148115.37 78.41471051 0.00575011355 1344607.708 6488862.453 12125024.14 35637243.41 64477433.97 2018906.936 10469197.03 1089733.686 73770.43098 5666953.668 6901.14261 281.1768798 828849.1263 227.2936113 502369.7897 62649.34675 32102.30625 1086898.456 62.24012886 41088862.25 2091514.051 140621856.5 1116070.723 9335319.527 19793987.18 4227110.207 54328879.24 9.088435465 23738639.73 10979280.78 620727.4052 5501286.164 99460.67831 22817.98987 1797596.574 81160.67666 21172155 2403.590693 20946.32873 12757783.5 530186.7636 0.6343756059 4385487.402 7920250.779 380216.1038 537735.9227 1432312 11829925.43 +1.331363152 33265.53817 4018721.857 122379.2915 0.02882217774 6935654.396 37394219.24 40191339.07 101489474.1 1003632.818 404352.4803 1662141.95 2376.511494 0.001254470053 38.70959823 5083566.493 3572.063603 11848749.14 225.5807077 378.1743695 807.703336 122696.5032 62.94198627 53112.43685 27139735.15 2965708.234 21560.44335 300.2784947 563235.3849 508061.9198 26996.36394 43061045.16 6061706.844 912.9895088 0.008018008563 842644.6484 5646331.731 9.022193782 0.0004438434164 105120.3614 9437887.336 5503456.586 27988301.56 1483006.467 768853.8156 43.84309199 4926109.331 34000053.24 1091073.684 1217.80371 57164973.56 154215615.7 8.24345218 0.7234957562 1643.04877 602958.0785 252.3865551 24030547.34 43064159.22 3967.966767 60048.94699 56.86283997 2.848408881 63394879.08 3202.381668 373.4031834 34553.07086 7.838478783e-07 1299.896128 32899197.86 0.5723492229 29095952.39 820645.9302 774638.9884 0.0460201496 1117479.639 5925580.767 0.003692923926 43.37519252 671396.815 1566.760299 17782.8151 340536.2674 87655.6266 700887.4748 12600.77029 258806.9302 70470393.14 98379.15764 29082079.12 +3.013796815e-05 3.371494865 11173313.81 9441629.833 61235526.56 10111440.2 11215270.54 5394.312094 27133.1378 5551052.816 5037932.623 183879.3197 16633.75734 105.4274952 13609097.84 13.44950546 568.7456853 9793769.184 2742926.231 6466102.593 4234459.027 14621157.87 8181969.173 4671581.805 275215.649 701577.9067 411977.0216 54689415.52 1204.971127 39069.72915 12491550.36 51644.41205 79833561.88 95564488.48 70771336.97 4161220.187 1346.912768 42901644.73 29683.49978 1835861.326 438399.5265 10920789.94 324637.0585 24781.05036 336.6005795 60207.09679 27694.6354 22.97197891 3299596.592 33213096.21 337129.4955 0.1726277274 152880.3234 2465338.104 77909.6785 531370.3244 119782.7963 2788396.554 9797285.987 2016036.729 553810.7133 3.677815285 1014491.982 8650575.728 0.03482022858 370705.8838 69060.04046 52.62268864 1006423.696 7657058.666 3679057.688 10434767.04 3620.807266 61234300.88 2895.473207 7487076.242 59542919.47 4.471976583e-10 3.460379022e-07 11497411.73 56615.91358 0.0004708894314 50533402.6 6414524.25 42218393.53 9455.627808 2214882.323 346106.7062 2165315.799 9424.306142 +23777.50426 11987065.18 15373.07304 1.372989698 10714316.07 3446.712082 42026553.85 156.2584064 997.2850624 2863.077031 16405982.27 179843.1258 6502888.881 24417.4098 18747526.9 37.22390527 33878105.89 3206761.624 8244505.877 14650.98087 750.1128246 298843.807 2316303.358 4699382.147 19622699.34 32.33108283 274138.1827 42391.35786 2683567.592 0.02365115084 119.5240544 50070969.25 48873806.56 16695837.56 1080386.647 7079459.581 3120191.945 4.017816427e-06 0.125817007 1416494.185 1156117.516 1914705.296 438562.3282 118725.5893 1956716.452 0.1484299293 12690.37818 3372039.169 4694668.891 315117.2987 0.0008230835774 29446.95041 15518177.28 5792.857027 390257.7669 25854273.46 9.028137089 958981.4671 21531453.46 31.68662632 5421524.701 1238740.047 1115.166254 34348295.79 3959185.295 849421.6741 53563.50221 2944875.752 822.3781696 22239.91342 124601.0045 1640706.158 26219245.38 19493258.92 322398.7186 13181519.54 134240438.2 1.069383009 53745.97278 9318.113591 13284015.6 387.1443331 42212.37409 2718361.508 4191654.348 24097415.57 14659067.16 324544.4256 2993147.73 724613.9601 +397.052925 16541663.03 431.087009 27059993.62 345.4639365 3507796.667 59836.77777 647854.4734 1.693401781e-06 428039.7575 4269694.707 342134.8225 520629.5147 56487.87639 997446.3378 1744242.309 4012392.386 8718991.196 364397.3181 3142911.597 33272114.77 309448.773 2157994.455 3951913.827 3525692.236 591704.3775 27.14694549 624539.8286 20516791.28 9150595.191 80670.6956 104176.3143 9092.511683 6914695.454 7.39999206 44990474.92 19706511.44 1.440883823 46.02423556 954105.5624 260583.3692 2751838.067 159014.0317 6376684.22 27146171.1 820823.2037 15546804.11 2137143.271 69820596.43 3191049.098 283.7223414 320635.4865 2.180088286e-05 104244470.8 6939691.098 1.311949957 316117.4022 3394641.893 75.34165686 3441375.32 388133.1165 1140616.159 678.9680375 2644158.928 18128.49591 19502123.71 6236.259432 2662.319899 1063.254649 2405.572349 10420282.03 11498236.99 3.946032408 33019671.55 58174.06994 2238.292755 9900122.168 157547281.1 198586.5706 3009.010459 46.2724904 270683.3237 107796.4132 16115243.28 197899.4614 820921.7176 31179.61069 4141687.759 1.816656057e-06 4351462.921 +7787.457589 17571.25421 266.43038 20.72161933 7316762.478 27748182.7 917668.2715 1373341.793 24770734.72 45076656.26 611137.4961 16800521.16 6375872.732 12748999.14 320402.2374 2586.170146 468426.2749 3692861.732 286.895011 374155.7646 1.018309162 2472336.584 4515454.645 4237.049554 0.09978708362 78944.5251 16445547.91 4877297.687 15342812.46 1510.425072 14148184.49 5084.164418 24762.12577 17094041.11 273222.4727 178857.0692 335.8213434 22657.15538 54603.20654 71132032.99 426.7500129 3524.761054 9606211.415 7018737.537 2494686.139 0.08490820756 7130238.266 2110.517035 28591.32783 44093929.48 4681259.527 8128952.489 7768.838166 10812.29021 1.053817485 696884.9201 11003087.26 30775240.91 10521586.43 53770477.42 129647.395 2959908.096 1808623.99 16198.22791 41.41074224 370890.5549 30193941.88 3118438.977 4697789.458 5444247.85 12147381.5 13720.19256 1294248.604 0.003592077864 6911309.051 205675.431 1346.413756 1.86162276e-11 32431547.53 850475.4138 3545387.942 8728847.913 71034.69931 15264590.7 5085355.72 0.000462114471 5057517.654 9429139.259 4841897.345 1816469.406 +1884531.195 21729840.75 4349045.83 429.0112617 10181.21053 748.9394984 25729.70804 45570023.08 130747124.1 58825884.4 4646029.274 45989692.06 4099068.708 108038.9529 7405729.27 12421.12925 55565.54418 4825271.14 4967482.501 286.0568668 4025682.089 24023620.03 11834861.87 400408.9679 123.3094892 39077987.43 14513376.43 3097006.973 835166.8869 776991.8284 18271804.46 142.0479417 135750539 28120.83682 8002.201337 9717577.857 66.42070187 7044497.019 13235101.75 55.59470735 439.8778876 141949.9935 24747283.24 304933.3982 637964.1454 160100.9117 1205939.742 135032.1504 176605.7893 1487050.207 2441625.817 33822.42648 28259645.74 0.6398318162 31692589.04 4321.931387 123878.8593 18998.3146 17973.42158 4485.559118 0.01012771393 209624.1535 748868.494 886344.2432 150255.8025 8199.018259 0.01359425051 421.3350473 286.1577127 5.78807795 6467424.423 7083804.505 14.65229144 32024.78459 6075.612339 69304400.48 24750.45005 1181179.11 37242.45325 202963.9146 207455.4373 51789.66098 1962369.964 563275.41 464131.2302 459768.8165 4833844.023 5.940754465 910.0665826 750888.677 +5958445.215 885514.641 65529127.28 3437.858901 708110.8532 0.0002163586119 2156531.437 1856231.917 101616.302 587475.5733 35592.43772 19.99179373 217391.2984 2001.77098 65.25030524 30052376.02 9101.998465 1.572014388 862846.7029 3195202.036 13513153.42 551831.9302 3.128479322 52262707.47 0.007492063411 237.3421904 148.5545772 623852.9228 24734689.87 9399858.232 42459.95276 2588.275619 15572499.73 47649.39295 547370.293 30339.98815 12758222.58 34384998.91 1161707.304 23485282.95 14066731.24 36451.45761 18049365.65 5474833.917 12767083.01 2830.312505 34085.30042 0.4215139154 4916799.534 0.3710485272 30133225.96 11076651.51 15629122.03 427207.6151 133.0199446 4900785.171 26633.40139 1417608.085 97494.9509 738924.4684 20674566.7 0.1054382248 468589.6046 617007.0388 2731393.875 1.11219777e-05 18425.72021 159.2318319 11500806.9 55841419.99 1379060.234 62608.64104 12578620.07 33.74619178 5341088.005 1.818981091 3294.286599 3908.963075 60375.99504 40665966.83 39876622 56502.85439 28935738.05 9877450.776 737.5407188 357381.0745 6515495.027 16790756.84 1395502.179 105513681.3 +1852168.216 12169263.31 17303978.07 103.2790653 0.9110682937 20381092.08 57405.29702 1114.000739 351.5417732 9629903.759 4038.654966 167218.4458 54587717.93 6436994.445 2360.794552 5462566.262 711034.9348 78231318.29 15715.64362 4388.796511 0.04432644572 318.2384822 61074.48822 274713.2976 56.79696052 25328748.93 30795020.22 36720.34564 117048011.2 1715048.113 736.9371886 51709223.82 2188356.045 5797.092457 273917.4068 13828733.61 87150.20027 1828529.361 2214801.415 4859066.193 2182243.803 1857235.349 0.01841952617 2010.525729 2.428140537e-06 549482.9578 67495.45257 7435352.945 937.1795391 12274626.16 10138708.91 1504758.908 30915467.75 27393.12062 47305551.43 3.521805662e-05 330550.836 74246.73962 2684960.68 967068.2223 407027.044 8496605.679 2849570.965 9.616942326 2245126.219 497752.3406 2.06216463e-05 151591.3543 5777921.424 12575459.93 72002.56495 22510342.48 184338.411 1472316.041 2.627244188 1031712.52 20.7235126 1391969.952 42869363.3 109786.1721 3266589.012 4276.472295 18713677.29 14621.1739 0.006210020081 1746.214043 38731100.05 1729603.354 146977.7239 7287.144446 +85511588.22 13.07620863 9890851.317 33468.3615 1225.793191 32381374.39 37013.01353 10458153.18 19467885.69 74414.30748 10643748.71 2313503.362 6231226.425 672748.2331 16436269 1.615019243e-07 25503619.96 1705202.924 100943809.4 62648.83494 0.2487361685 4304937.744 10414701.64 21858.6898 1575244.884 769494.046 5014.599508 2634314.669 87161.01094 2926883.386 12679537.43 2923814.576 7874.476797 147.4144782 944687.8445 48450.67418 10726140.91 1881056.326 2234.891111 15547.93752 33736.5106 30499170.52 2837.616046 14270764.5 1020275.256 4031337.957 121561.4044 2966531.614 5759015.305 17.53596526 11240.81287 620.632342 734.9832203 48311.93568 1084352.956 35207.14011 28604075.37 117.4847181 168645.5981 12517609.7 15432570.39 1.077224941e-08 7139729.929 3.514069782 546477.1383 352278.8302 0.4336741017 85345.21786 0.5204056817 9459964.135 6893.873999 2.348189198 136313.2309 34772.71586 5241030.956 31537.5807 280.3202151 18938354.01 40287674.85 25382807.68 456179.5476 188498.7393 219498.4406 174514428.7 1.317372245e-10 630729.581 11051516.52 5149766.244 758760.2919 7998.343045 +4396577.229 0.1602317414 106304.8408 785762.2682 13.62977745 2027.007522 534540.7464 264072.3764 13947255.65 1377.236223 76758222.73 232.1387727 97822907.57 2.435782859 343520.2766 9506000.895 5.940045856 13944603.69 17083953.96 62952486.19 28458162.28 106.4782266 7717.044378 768625.5713 50833.43172 24110205.92 28686189.31 1354828.443 22178471.6 13277992.5 16.63394262 4467113.998 191341.1328 9876258.537 8978899.061 10658311.62 1789740.433 245176.4228 1162628.774 8695187.168 31933959.76 166700.5369 127.9603996 22206.46712 28350209.14 174481.2327 245546.1764 14361.2229 10917044.15 65146.89176 769677.1291 16.74243568 6821845.816 6704774.758 69012485.87 137.4642508 12151056.98 28603121.58 637326.3826 119945.3309 18714512.61 8376697.678 6617.354199 67067.59916 26786514.24 6579378.751 235.8374302 2946095.199 5945329.685 4757720.629 39940070.41 57748914.61 25932031.57 3085788.639 37185800.87 64.8136824 4599.834253 116970.887 3545922.029 54.17052941 74931043.51 33936100.94 33138493.04 5936952.934 252487.5344 31728362.2 4742159.553 5885.043441 54995.65442 912.2333033 +221438.741 1525.493671 21375897.37 60455.9226 214919.9121 26848.89158 6338.111898 22950843.19 6108292.861 1301661.571 1015862.29 22121065.31 10157.37396 12423114.95 468209.5464 690637.0526 736919.7299 5837386.243 44863.14604 0.9903741358 419134.5366 2.812960647 6.053668357 10873988.03 97089.57131 1.084679955 34024172.48 8851252.912 8.933730027 874366.6291 25346535.32 4433617.981 641.3796192 4416248.258 0.03382643483 39713378.62 13.68765299 131457.3489 846428.9264 2487.804997 87712997.76 33873469.43 2432839.329 1456624.186 26508272.54 493957.1603 10044.42201 13200875.03 46183808.99 4284765.914 9453025.434 50.39043237 0.690763955 283418.1911 118688201.7 18.58781893 35841127.24 1196835.282 1815497.587 2.240496257 19247774.07 77685.99177 0.004974582091 8455667.651 5485.349341 1028413.837 81844497.99 348764.1375 11021755.99 132556.0914 86425107.4 20163602.73 4300051.099 584.5090949 37994752.76 3178484.073 210570.4318 45795098.72 694693.827 2089821.69 5657072.937 868891.5606 26637.15605 49648.28121 718512.4955 6221462.955 18138.12437 531033.658 4677372.337 7872907.988 +351.2596097 114084.3822 3269392.591 157718.1999 15885605.32 104089.6926 4055204.518 2.220457523e-06 3767511.008 44931695.4 1553481.24 4318938.828 1148022.186 75982923.14 958731.362 41293401.32 31761280.85 4605122.532 822009.441 11907663.9 6728075.698 1587913.842 2.131668231 0.9747243939 16250051.53 2707298.742 94175307.32 28.34020183 4.945487514 1145801.711 3277080.706 8.428085788 45.32034738 420681.3339 8947474.045 5359835.028 57.84564844 6489789.598 2374306.201 28296.89316 9816626.55 5072666.586 36.90344268 0.6152027269 652.3303083 152677.3956 960143.5891 0.009539286444 14944837.54 5.2053142 60788.79515 17074.27387 194635.7197 121760.0038 4966450.262 31490496.74 1.149666747 32791.39667 30276739.04 9288628.418 74.95738037 547594.351 113489.995 883535.1242 425975.0575 53240639.56 8728638.231 9030.937914 1593029.89 5841872.271 6058963.154 19761070.78 2725.053262 5434188.971 2156.882465 613.9395016 5041322.961 5365.927009 798.8247804 1229836.677 636.7006113 2991387.483 35823839.07 27752180.12 736.1522692 1105261.991 1308250.454 264.6597664 21762772.87 467.2745621 +6.284641329 0.003285844546 25877372.26 3.525980663 28.29683177 858454.87 5549121.885 248.2212976 2.447314168 0.1839670272 29992088.12 14206096.65 281159.9169 9067.786168 508.0113125 17689157.34 5613786.654 0.03609133598 667644.5323 5080441.361 9703203.148 50654360.41 883322.5151 2407.129578 1101.960848 82504614.19 110372.7025 4930562.997 33.33869681 65.13838244 376.7332387 2804.136698 85768048.78 21287918.61 54444.39151 4401785.693 78718273.69 3084038.033 0.512019025 60081311.73 5416547.378 1932052.5 7034896.266 10.51549362 58.69555435 2184055.798 46538699.83 34294453.25 1612.157632 20559214.28 10531.73322 8304980.92 0.05221563839 17849.0085 895351.2159 7598586.197 5841731.545 6362.45827 309745.3127 18911251.97 12871214.07 1245954.832 534.1051445 24673.14935 2732.467813 1315261.104 437626.3439 11.47111029 11463114.09 7270.475515 59133863.29 3904578.556 14881953.46 1614849.244 1405565.454 7525005.216 67167296.62 0.000521424621 10559.082 27892.01887 1204.276911 124.3017919 407676.8957 33671533.95 9144533.62 1820.280344 5258219.953 1143.338152 6353323.084 1663628.945 +0.001958784661 25548796.39 1895201.546 13337160.36 10471504.72 923174.3439 3671467.627 10392640.28 4.048879549e-06 422692.2452 25308598.75 243426.946 11294562.17 1498105.069 9333.09668 55.45369731 3004.546313 47438102.37 10950118.45 9857718.181 10477768.13 23341.64976 124.7196145 564.9563461 17.08182671 23.38876821 3.013721553e-05 4179905.506 81.64905121 4374425.007 20522.84561 1077900.453 48969.28962 266631.7879 19370959.23 594.7946973 28266.30859 898097.0717 606706.4943 2949.973463 58595.83677 19328.36256 2233.663549 4358664.462 279705.0089 18387288.87 64.85092196 81933332.86 692.6821665 30313632.46 2808028.788 60041059.81 2759293.511 12638180.92 27594436.26 3.283325597 7055466.016 3.831922136 6450.349659 11141094.13 739.5154065 6012.750141 88809.09899 5859239.999 27254775.43 201321693.3 213045.7655 6065444.498 12249.30947 43715.48899 125422.8792 288099.2593 441111.9686 1502968.695 19235272.5 9323877.634 3216460.19 508586.2889 198538.6453 5708748.421 3327525.417 17417509.31 5.368157164 132110.9897 6453.439212 22049032.23 26608262.58 442525.2533 2.117840972 0.0004191893425 +8293604.431 15915.90764 118572.0608 587620.6609 1087969.058 0.1952292305 444860.2419 75965.26652 12.32541187 31339068.64 55.2144134 16289337.5 1168.767924 15853544.98 30027419.18 7434689.041 0.07485063047 123960811.4 3.159659901 5101565.049 12.02204185 1357566.12 1018.988647 142790.852 474418.9427 4522965.855 31564203.59 12213.67834 19915022.34 100485.5455 41691226.36 2651386.034 5495.700445 3911.015034 709.6343776 6253.253068 19363020.73 10080.10998 139542.4562 626197.9274 18417034.08 829366.2274 1.485775644 11302.66809 1057938.789 14630797.09 1124140.823 12.63390438 39568.8356 0.007934553512 38790073.55 53278.6507 476806.0471 1833.670584 38036484.89 0.02862476896 13237825.05 14500578.73 98770.95904 182.0965841 21782677.55 30900880.81 5291444.471 660.9615018 46450806.46 869.6946712 522271.6073 51.05409603 41.49824881 12442192.49 35886119.47 181095.6402 825006.8041 0.1914306347 8544156.727 10140161.54 486361.0537 40393350.35 60568.8978 3962738.042 0.4640658913 15070397.43 3341225.748 601787.2187 27287029.65 1396669.329 420038.2121 2011804.563 5613251.473 4433951.8 +19151225.78 1798432.037 17994804.15 749668.6027 5451820.456 91073.16489 10.80718334 589.6826819 5835.661412 8151755.75 19482.55443 789322.4171 185275.3851 38795345.98 16194845.18 48585045.72 4846682.413 4633573.342 13499848.31 53916981.68 30470444.75 8171474.749 20397.03025 11357369.35 49199557.82 23352346.76 2465302.953 5375324.678 42150770.09 5150655.715 130501.4784 8167703.467 1188208.473 17.05776705 20064016.15 2138302.985 6509639.147 27.92828527 4492663.743 132402.622 18461888.9 25909.22883 319259.2726 14424887.19 62622.95963 26751607.45 12508.71134 5767764.211 14469789.78 74958.90229 23.01645231 294193.7036 72.03172888 705025.2564 458.3832218 11585721.98 5122452.81 6684636.398 59342781.79 49464454.14 1328758.909 135011.0041 426.5536785 62.06331822 4430842.173 69993.86448 27510.49362 10.59257387 35067027.45 4383.85701 27634004.51 39417643.91 460.0876049 247340.531 19889878.99 14019.79439 7041.409168 22529938.44 506910.4283 5039.789845 18152950.54 9073339.435 20625919.22 1613074.619 7899472.809 820145.9353 11783790.47 60154.9821 170014.6704 3826559.234 +1.495588658e-05 10076614.4 2157.538801 650376.6697 1456.426169 738.4263075 458998.9287 89415487.19 8321717.002 0.02326410804 3.60844274 2179547.248 2750.802848 21438988.56 45471993.07 11081797.02 1591.624491 1067525.551 3454073.726 9934938.495 2778.432139 41785.87472 1456252.503 32385553.01 15305835.94 80368495.31 65522687.69 13179.18463 2248646.749 5531636.195 9320488.915 17052201.12 739596.0157 313481.1 70441.66817 24646.4576 20.81539954 12583730.29 732685.1609 9397406.722 30229242.57 375025.4233 0.04586355267 74732136.38 10793463.86 13135.04695 2349171.443 143428.3901 0.0507902017 116402813.5 0.3641096864 615.4736772 33.09365557 120594.3691 29.05658909 133097626.8 63750.08197 8848.131795 28655338.45 4002277.431 5929.763801 7.96831256e-07 21720050.18 17736491.35 21064279.97 8905.770782 31279526.38 27086921.92 740103.5482 8.667134306e-06 62282587.75 11865.34723 519.8459595 970937.936 1458988.178 1496.701617 24893964.76 120672.0178 2326.039509 29470980.29 1.254700836 211144.4879 1989634.65 1229774.653 4600828.601 13773.84761 476715.5477 19803689.5 643261.4831 164245.0241 +378870.3767 7208093.9 2549.190553 18.33203042 2.638631169e-05 8.196987017e-05 1198027.187 649574.4823 125007.9952 83.54211737 7030443.011 6062159.91 28868439.69 10348278.9 190.1606596 64696083.57 296984.4634 3404689.046 74826710.02 1117.647793 13865098.94 24040583.63 35610317.3 18033482.96 1214196.773 92319890.76 14.57176205 646987.5884 33187.34479 18531490.79 6.15210725e-05 1514779.851 4600.181631 37468.01878 48828208.54 6378855.326 296.0550139 1012833.625 36.28365038 1607.319773 48165105.4 388.4651574 5316724.339 13263808.57 8074.745255 8.305839889 4505551.063 7844381.615 64097165.43 797818.7256 67424679.04 13985.97096 33895.14492 19807.76122 26793876.9 1152171.831 346149.3905 1532.272926 23260.47724 47.08166303 14638279.11 2194757.25 17335791.27 38960.73515 4.150199454 13016194.79 2313144.476 65787674.14 5982.468211 47057.96964 1189.964136 4382750.414 62.39796908 202454.7742 2370.071337 7943538.772 309.5384245 20839107.44 2562387.145 1225173.922 0.03855884006 19462.24412 2403581.603 102070.2142 4.575068934 10875002.31 17.67712943 213.8808549 369.0259668 6711429.423 +506618.8053 42512730.29 157853171.8 241.4986952 1261.851931 5627936.158 158818735.4 9601.176357 23020906.69 403703.9424 1.031525713 17561766.5 9873817.14 4589808.739 15322620.02 11165204.58 2022307.057 43.0205183 4413562.966 8.638534392 104323.8919 8533.579443 8134038.293 2349782.543 252250.8342 1226048.279 896.9207202 76825559.46 2697.353052 25598.33893 38697103.91 0.002316838377 29637150.98 188716.3916 20873724.28 95275.32271 1205788.695 8905.808134 30789396.88 39693.5398 7716913.921 162743.1709 22607738.17 11186424.66 1.681662233 3416.717286 67563.08655 19122402.4 4824.229009 29302290.11 28443059.41 764.8556501 3.810967925 14615416.93 3213.293208 6145162.915 1620555.389 13751342.92 7581661.97 104431.3603 76719.25549 11761070.84 1074804.619 127320697.7 30622335.55 140929.0399 1027289.518 23582244.8 24818460.13 899149.5845 35451694.55 1216.861358 166540.4357 759228.472 21731855.17 3291.507778 0.04896552653 17753357.3 55.82013057 31424164.86 88411.15669 24545.4753 138303.1845 2360464.46 16857178.27 4753719.388 17318071.95 15903.58733 50205479.35 43502.06517 +36002.54054 4023523.197 1394.449317 10829699.16 39665.0703 59414.74614 29235852.07 9158429.793 291069.2346 14651.43798 739909.6079 2226770.403 9476678.2 183.6639086 36996162.26 2947690.608 64715.22477 5395.776154 4321.533317 1934964.133 59555815.95 26481.21435 612404.7223 2056.590412 28197597.15 192044.3773 3831780.534 132.5059825 15.66699431 59569.55352 188407.6486 6176989.491 6806.381962 10005.13784 6608007.805 6881521.433 0.06898250337 1026965.314 68383029.18 34322.27897 8948175.909 1046648.29 1395622.548 12.96294582 3492538.597 13422822.17 355987.6554 40884.00679 47741242.91 10179591.35 22937.33626 782.8904044 6363989.132 605084.5196 560726.6367 6638509.403 11986.38216 4.099677232e-06 25446136.68 9279944.462 328316.9039 529289.9871 0.03310272948 19.54339329 476057.7627 13930.48225 225185.2208 8426286.819 32003273.58 24773.16843 1103406.835 80512.31085 301333.5659 12638361.43 54163229.59 368.1221641 14427.34735 1449634.244 12916.76405 48763012.6 381.7991217 237768.9409 1189470.477 215413.8652 17268369.81 634454.4609 52831747.72 2932872.867 381841.7383 309.7821154 +5159000.053 479851.6375 10561882.52 213.4924566 6355983.86 29416078.55 4538.436363 1809668.928 4961188.639 1917296.505 8173.968456 14479643.91 5474914.477 25201453.11 38068448.55 5955431.236 269374.1208 55908992.38 9573.201906 386.5128562 3249502.112 77682.34705 5984278.032 218.1283472 2185893.062 634763.4646 0.002171668732 9425833.897 3556950.12 8331435.097 207.340711 411054.3238 188459.5315 0.1153931767 1161255.904 554221.9319 62595796.43 120.6142704 136081.6358 10625709.23 10274757.01 2802908.744 297809.2038 3417.709463 31568664.53 1198507.394 13414.61491 27.41970156 587691.8907 29607.51364 2489206.774 291.9797881 2119.640492 157953.4222 15941687.47 164127.9898 44820481.41 10605135.43 13961.59316 382735.887 7445914.926 1148615.334 7.570559312 146224.1624 1075266.578 798755.7086 566.4642427 7260164.246 16.82341577 562361.0541 1214.773916 326163.6739 15753.77215 4387.870289 0.9300514895 4148050.315 28489248.66 31420584.95 11705504.38 19946.33435 43.05809998 4485.548005 1414820.244 25023493.12 10080098.03 413.6799305 8684.462305 220332.4846 90335450.16 2386360.77 +6120165.679 22088.78516 29923.63893 45068421.15 0.1961991083 5772862.893 2.303360868 49601000.88 7005139.051 27095784.49 4582421.81 607969.2418 5185183.842 377.7476075 18.29565 8590.779921 1812268.323 27834149.11 10672889.49 16443637.96 14821.51358 1672314.262 279767.4593 9521764.672 385178.2944 6620478.522 11054209.19 1.125983971 5739450.646 22759250.14 6479570.317 23116269.34 375121.4377 788302.751 27814468.66 155481.8006 28.00883223 6072.44371 40766407.69 12730.84688 2.509426647 831.0092729 3666867.494 9580591.718 17479462.86 327772.0275 11807092.86 22.24211106 13354063.61 2745.967454 18343793.87 314.2721254 265953.5773 3.597746784e-08 808.1976628 31499676.71 0.04695357 4056783.584 394575.8236 1374787.046 15488352.73 4116700.551 106277.8508 20826.81914 25563.59551 2369.773693 54320933.25 23191.2676 1366.915594 69351850.78 68601876.4 45242.3586 9657.198348 3138.311921 4435815.28 332.0372384 15839164.26 2026423.249 7527409.143 25074953.18 5817821.236 3065570.669 18366709.73 4533300.999 23350272.13 10092590.85 61082.20173 901995.8298 165099.0393 36403747.38 +3.159102616 823312.1097 23314945.35 186785.4909 2450788.26 39.77102649 8486638.101 5.339465466 5782839.606 9302894.167 10221499.65 36121867.59 11008399.69 4087951.718 57799468.54 140429.8935 564.1301457 20374028.65 10.14308493 233213.5236 51663774.89 470998.4183 1216959.344 11598184.05 6101793.078 618618.643 844.5122248 30320861.99 16197.95907 262928.2478 8480272.017 5.815969952e-05 18459471.38 24110.91331 10055491.56 42234134.52 0.02288675993 18847.47185 7665576.953 1213.300021 5159.799442 228699.8413 0.4675736294 0.7113984578 3458725.727 20244264.53 2897.735749 38173834.77 45117445.07 425014.4932 1768.846489 44218204.09 202886.2731 193100.7846 14550713.48 1417.434953 125024392.1 53242295.46 3675517.216 71719587.91 11492956.03 37327778.28 726138.0768 1002336.17 104174.7015 4810.782728 21470304.78 5185.835862 2287933.133 11461207.33 95519.0481 36.35771034 2730.612549 10513.14601 12669758.93 1183450.808 1477927.609 334222.395 156671.6117 424.5778723 1.001580901e-20 3295505.98 1423.881958 1874262.126 299.6930804 8749.871409 42402.45663 2056931.5 0.09866275004 852652.7644 +81111.12861 0.5739787655 37236413.42 2757716.347 73.51296169 9934.722408 11673066.54 3125989.405 26086495.82 7.376632618 19786.24845 3863410.295 223.9504223 3283940.398 4527313.022 13653966.7 872129.4748 16.06380884 2571.170873 43793022.27 70627741.98 0.004098454137 6524.618794 108565.2411 1280852.269 22350.73629 17788745.97 73851.8013 0.0007744686265 9276705.513 618.3667253 0.4678763229 0.5721063192 13224279.97 18242396.38 1454.661823 388.5244914 1939.121852 41034519.87 1459285.96 6593421.332 194613.1367 650.9731298 32284432.65 385471.9613 202.61658 38.00397896 216677.9921 6119.819431 12.00470701 3275.484616 1364852.228 333254.904 847037.6836 1099980.226 48.11740225 684546.1281 635836.8519 10686718.91 1805046.65 4185594.501 670.10653 1496625.79 44.10273345 40104864.82 14532.01503 6646574.028 1437.358108 86339.53147 4950799.928 22977.18535 11357.07413 21626506.32 15964167.36 7658602.25 7038.802749 50046761.9 24440808.29 793140.0742 2026.433841 20486.6573 292.9534946 0.08678943116 20031764.92 0.007734633514 7749780.582 113.7610776 31852453.97 15.04324764 1842537.613 +5.474097684e-07 11235773.4 4513722.213 38516577.9 5410115.697 89525430.6 0.3811581882 1285360.204 3528569.602 9075725.908 1326855.658 191.3464235 279079.4461 29557454.6 15437811.07 3770.172979 55766.5499 35737647.91 78812.58457 4641496.227 3436064.444 14011.89114 1149.967367 412529.2253 4.206430065 454808.894 83041.21594 77.51315223 232680.5321 28544.20897 830973.6801 4161305.113 1561876.073 3.231521116 38249601.68 9684640.536 6776178.672 16066228.94 32969119.54 0.2198197829 7162.906815 3821335.16 239472.9299 14852468.55 847063.3252 60045491.16 72716.46146 1094623.782 12207546.18 0.06658496822 3.617874463e-05 15729.50704 92472.13522 68635.98709 20761774.69 35046890.06 5.226660366 77129992.09 5.422738257 844290.761 36315552.53 7225262.977 2887611.277 145.6265481 18966533.37 50165244.2 623396.0493 38025763.25 2696180.915 1334.497033 173.3823555 55.76419282 2.857480964 18.89864741 861936.5232 19376140.93 68.04422559 9276.610734 19.90155255 3242173.357 38.31548577 1780605.193 14621754.94 67639220.56 178102.9363 16920460.19 24216882.65 151871.0835 2035977.836 9168.332029 +25468704.22 5712117.7 17893319.91 441451.998 28.50310691 269619.5315 20533.28027 1143970.445 550.6737734 12359010.81 2717625.189 792234.8884 157678.9606 49062512.38 54845812.91 54056.48497 63456172.54 10296.66163 29.93742886 41597742.96 10220.11945 43047559.15 1779210.248 17.75263654 1.669409881 12121388.02 2144612.613 3825.976324 2573.775867 728098.8962 13456201.41 1.040526264 657627.0817 39109819.95 3104432.751 18553.60823 17015878.82 3249294.869 16287046.6 635050.2978 3372.515826 10387545.03 45992062.51 252140.0293 1174.223691 2176962.267 8132511.898 20649.85616 18516862.56 74875548.02 50802232.75 3134877.865 8209245.344 5889.513311 1997.557123 986010.8115 7674966.739 11459770.11 10484328.32 34027732.17 28234731.41 25181.67884 579619.3195 9445425.876 935916.0333 15303597.75 12006961.18 16885120.78 24463.2521 239242.8564 11853283.05 3196789.285 417.6476727 35692.07859 69056.69579 15042.99177 40371958.87 627618.075 246865.4139 1470920.36 104609.6254 5031084.881 64943242.65 981702.4723 2572727.525 272142.414 13005752.5 2396600.91 1196710.763 65135908.22 +3281483.562 7125.495325 732277.6382 32339696.96 0.390613264 192663.0494 10495579.7 43232252.01 0.2514738079 3157977.819 916966.9472 0.002083916401 0.2504024928 34325756.94 79747.80761 6394796.074 11.9283514 2474.709879 2416441.718 9712042.884 42831.24376 707.0589162 11413335.62 168935.241 2437.151795 1005054.717 65490.59253 27453946.62 517.0533501 983244.0652 4265815.308 15696.44348 40722432.55 3066900.355 0.482003155 1937.666427 792.7822542 1531.116207 25418.17575 598.2002356 44403761.69 400.8391374 68962.44287 1435486.787 1480.236138 96223232.14 265884.9564 67375205.72 2.952839488 34999311.62 50507.03134 52.23743853 7008265.253 5140745.981 633.0471438 7354.873086 757326.2181 4424778.089 801487.2 61626.24586 3240125.247 3866737.093 1721598.622 2947192.973 1016292.015 599689.396 16137013.74 9453.026471 0.05031979641 5833364.228 6019207.603 10086076.63 28632.34436 8936247.13 38472852.01 15570649.3 38270664.05 9850487.163 17303168.09 122964.2134 480888.2127 838178.4934 47773732.78 958079.3631 463168.2281 38432444.7 54115855.27 0.002123974112 15296204.56 1928.064178 +22375585.99 1876.463473 66.08932606 23147571.04 376.1504991 155261.5248 1007131.043 598905.547 11652.66068 12987257.48 704750.3448 726.4006013 4323.445956 606.7745765 3968967.247 252.6320806 5775867.533 6364846.114 8551368.678 3.334195804 11593487.51 16586313.33 168044.8157 66555333.61 13857162.45 1113991.483 2772199.921 2909989.329 0.8364938494 14185729.17 820768.8953 513.3285656 5667877.893 589244.0574 433134.9899 15.73144322 2821390.365 4769755.027 376172.587 8960601.856 2437749.248 635676.9339 222369.3161 3165916.649 69264.91794 7912443.749 22.06713868 51.50334661 12486912.22 2831917.005 1193857.542 3624528.824 228553.2613 61737094.21 156.370101 17887790.58 564115.3728 4.362680878 77567.78439 5767972.842 5630504.587 4.686120612e-05 765.9014336 664.163381 258136.6222 463197.2294 13094.7489 7803299.247 11517650.14 60145859.85 50938.00501 16561.94652 2837883.968 10006978.91 6330.824674 38881738.84 5.297909739 35593897.8 13911166.35 3.716035853e-06 8181863.308 11123.91492 39641723.16 0.009376397972 54902407.96 10517902.99 57.55768986 10.35588285 196159.7729 3445.985094 +23272.76504 1133.613819 11.16394892 1981502.465 0.001837045263 0.0080121565 4.040068433 84777.73795 0.2236974916 50954136.57 1207133.394 24901367.1 23547.94913 16462309.4 43723678.62 788983.0932 74385076.39 9017214.649 0.06446782468 1240590.096 3.336432231 4653005.005 67996289.02 3018.003795 3.638199501 1371371.099 7.515453287 1561222.355 22731.95088 2.894535035 4697307.523 45142699.25 100744287.9 16953585.5 1.317850951 1143507.517 291215.4446 9657700.981 99084350.82 1.942461337 9900.298885 239.5046251 1269.13222 6176811.37 2490329.633 4001.915411 10.05983225 9373377.184 2.963835627e-05 1399596.819 967572.7216 10293017.41 3054686.963 7546867.291 427882.3777 9299808.534 0.01933892891 5109435.299 8744051.851 1234904.803 3117906.256 21500.48623 37300417.51 4323095.129 2546979.715 2651501.196 2.789023141e-08 1930713.721 1275944.243 538311.46 34429738.64 87537926.65 26976371.4 6404304.404 16738788.59 4176088.787 2568936.169 60669160.88 195450275 2616056.241 977028.0296 306858.4836 9104488.021 591098.0804 3.365878873e-07 0.01627738386 0.01052266833 18059.48206 2528.30937 251.1211494 +61359121.88 1278605.775 5200826.45 445.616919 3808108.517 16180292.39 2121207.701 9144.601431 893620.7051 15345.25704 9521421.042 257579.9382 133.8095358 2900800.613 16904.48548 6380.760758 158325.8106 101569.7478 30416456.95 1107000.745 6714326.285 39873.32302 53.78679058 193726.6086 9783446.354 1135017.585 31628880.74 1540671.717 27591653.07 11372209.04 29075942.42 0.6291164817 47405.15221 2196099.522 88269.92879 8745.132808 346738528.7 13201066.1 650925.7983 54023831.34 365326.2862 88.63869763 54748428.22 499163.1504 889.6431609 33046456 356670.6966 343524.0705 33801023.78 3393913.877 8279104.185 32249026.18 47298549.51 3562040.788 2620016.021 12192291.09 1129.354437 489.8042145 10909.11009 473827.6788 30323.28039 257448.3036 32750222.8 112984.0316 111149.4899 20475.17867 24346.08377 104704.7609 18774676.12 43074469.92 3403309.819 29272131.06 20.32441554 70267899.3 347.5651262 84884.9606 5487615.521 1506856.578 215692.4112 530528.3359 9820710.418 104775223.1 76107601.62 5628830.078 9509138.305 5618093.682 1593890.348 9917582.19 500.937486 2655284.071 +0.02042869302 1774752.034 23605241.64 2417.616284 164912061.2 11328710.2 2834.669393 10663143.47 144276466.7 27684747.9 4147829.679 9864946.625 6344742.133 6013983.783 5602906.981 14767656.98 1586465.928 33.81624361 24.45355405 3571244.877 33251.31948 0.04712053491 15.77607234 29847425.9 571801.3361 5678.772174 1318526.172 4415444.092 10.68813396 227659.5027 16035522.16 92824.49832 26.76295893 20573610.24 15827881.05 1870925.525 698.2639772 0.4248722519 8719.156045 5120.92628 29686210.61 3148442.296 1243.184114 27167814.77 53614279.04 2487.343155 411.4448743 3423647.449 40424.39086 12681530.13 4975.945573 546658.5308 3695.703919 0.3441428122 14376224.87 7989177.041 28500178.39 17444263.14 967.7529688 1702930.453 32513900.15 1.391825211 1613684.562 2715.208491 16566129.97 3319820.947 2013292.22 46167079.15 1996.416712 78.21533647 11644803.41 8075772.952 2569774.533 1032500.414 7409977.792 2371446.695 563636.6103 49.22234262 83035.20681 11897955.42 289673.6286 0.002443578919 884265.3886 1979054.964 564.8622173 585817.3741 39991258.22 160050.5614 4813549.238 22850383.76 +41912.67262 1556.989847 158236.9313 48131.53195 9439457.866 0.06394192965 44626634.64 10165216.06 14377087.45 431886.747 3691734.44 387092.4589 24637201.65 108626.8273 11155572.28 21819.9628 4390109.891 120525.9209 10164275.4 4322250.071 2807797.595 12979577.43 1210147.383 26805819.42 792964.3596 0.4946043264 17491483.01 3425037.119 3465546.817 1830.277238 55.29627601 7313.115027 5.796347952e-08 38561.10687 221281.8834 23128984.64 5793414.786 6632626.474 552451.4423 1702784.549 3596926.952 764.6292469 11587573.83 62.28623172 666131.5364 128415.4107 2818.421484 279.4837686 907932.6214 107040651.9 11.53975599 5157373.805 879069.9016 7968410.378 46.98720442 131.1882577 1382499.295 32313.79768 22320440.68 41028.42448 21874837.4 574.1771206 115.7864218 45719295.44 3083546.173 9795.419745 0.06529009586 882979.6232 3219.895048 5896239.247 0.009163770491 2683948.346 3164050.535 27277126.69 45370261.52 2515293.458 27192806.83 497357.1695 40100584.36 1196875.983 36945931.24 30869148.6 21.70813739 25182266.41 15207551.26 1.493399072 0.4412047837 33585692.18 359198.8317 753325.8608 +0.0001485288842 7850.990875 18860200.24 18582310.42 34636739.93 12681326.21 485994.8841 4540.033531 154722.5694 0.6850117959 85905880 3264.645122 5602400.246 4364128.094 9094.631635 41524.45689 2.179379344 1004889.834 927301.9822 26287764.15 3580044.144 155933.8495 997317.0045 1493049.141 7708616.99 58309657.31 62534.29379 1809743.047 656318.5569 129517.6986 23.01656055 4549769.685 2973810.448 672747.1647 50159612.51 179.1043041 697580.2134 9447268.672 578.2013841 11742009.6 19357768.17 6423913.242 798001.7273 12782.1134 15381.32673 253543.8653 49061.43121 340.7764645 6230017.582 3.425750635e-07 2.191677241e-08 10543366.8 0.02028759205 5348558.146 32007.88779 23743025.6 26182933.69 849.6613594 33099905.81 917514.2985 42354822.42 5448.81385 1014.874138 12860234.26 25066228.4 1179.325394 770.9684615 79556.08382 7780088.908 393758.3809 18807811.41 4583.785114 16518418.86 20363976.52 4392.988876 4.98645675 24623819.39 15978.98544 17237141.59 3316504.747 6899713.811 13461191.01 20663.53834 5287981.534 512440.011 439.1219301 13306474.93 18546.03711 845400.4251 16957901.82 +2267469.853 458.947452 80731.91793 573650.6593 730196.2997 701.4264829 7884.712474 116960.3427 8740321.346 521.5931356 1722549.2 3461583.937 12549729.43 31137.88143 39729.7422 974.0113036 11.35922586 452.5665069 700072.9122 10525178.37 58349610.8 0.2510836049 11467390.48 639608.3111 1414318.632 93249.12333 1939778.083 2272.723395 278922.2439 20830.88622 7755132.549 36330630.78 2044076.926 81971.14398 1792278.236 27473025.72 7567.075722 36755311.9 9340345.382 631110.445 31426.38374 12830767.69 4496.669493 1419430.78 65041841.25 32768152.86 113.9725217 9087308.592 828.0768523 3156573.471 134018.3586 159826.7687 753187.7719 44644.38911 5.528797498e-09 34615104.84 395.9861574 0.002692786877 13898406.19 74927375.18 399.8147376 91417.14313 55815831.54 0.3672037277 404183.1148 35944986.99 3357368.898 55503.39327 5081962.757 1783785.677 37.27807764 9928020.703 954327.143 15209.66099 1974.703823 0.0003033422673 4465819.407 1913888.712 16230114.11 5405049.874 13547434.44 1464449.917 5700168.494 312026.6108 4123924.225 2565777.326 20630307.73 34875272.11 21688699 54308.57788 +22.55432754 13789.34961 13.81531541 29171450.48 2114.273686 13308.77334 201865553.1 1221.404644 10146.67399 19316853.04 70.62614099 49455.29653 65.44547911 5645243.499 2236.199404 20347133.24 0.0307226079 16218.99833 672.9548687 19570.02188 77.02789893 8444.967481 8099869.949 5471.055609 96632.34923 2613153.198 30568678.65 631645.1869 53.10458137 4448224.908 3214917.333 16288077.39 1597651.422 3271942.922 106303.6074 35047.76545 106150180.3 6025.664041 24393764.09 12145712.28 246503.8479 1208.85729 17399215.98 1181652.068 14653413.58 14238.53416 334775.6321 33123295.94 50433168.54 5246367.997 13833.17496 38385257.22 3085839.99 8619.619004 2222.306938 7962051.874 4.166503832e-06 133708545.1 18101921.41 20614085.17 305639.8645 5.065814942 108490.6776 1309.598944 0.0007140982277 768742.5805 7783158.448 29781984.97 6320.47328 0.3680729378 6309937.293 10409298.67 3351707.566 11549662.76 58692.32433 1358.721988 17486901.99 1336418.991 1514814.794 3174272.122 9194071.985 17014.13272 3767721.456 115226244.6 7303408.75 79.38876917 302019.2501 4322341.059 68.79960102 14516942.48 +40.3769779 42.89011559 4409853.638 70864.33448 146.5959699 0.4060021001 55333827.51 0.1892499064 246696.7424 2821065.779 19789736.64 16049467.99 149.9861547 65352373.78 6986482.739 3534336.428 3330570.346 263138.8394 79324.40269 36032055.7 37268273.55 965318.1909 6736196.963 0.8888125509 125623.0886 0.001053329748 2079925.611 338101.2796 555.5473971 2701554.608 103247.6645 3.236459151 7424187.024 3535681.782 1215802.457 72349120.77 5903339.934 581334.2891 4272024.362 47402975.16 151.211853 22201735.67 1842642.675 16.52518834 2.087907603 15889116.65 2074343.901 19793540.8 8479.215268 3225480.506 15831601.15 1621217.612 6858519.389 0.2163065447 2257495.363 311545.1754 44326330.84 1523152.918 0.005103130213 23657364.25 285.4263793 34748.42096 28050.38088 78.70862418 9635398.618 258.4806674 7691288.985 31528236.86 14.91399705 11.5717723 797339.713 72297940.49 1625433.743 6408538.952 917988.5091 43490.18475 524306.4216 4398347.723 23.92036231 390588.3883 16644080.14 12591.03807 3.02714061e-05 17.60416561 6405311.021 541915.1705 10946.10911 8530897.598 108426698.9 4305.245843 +22114557.58 14848463.59 7950984.454 19123.21954 3176002.522 52564.13447 13174670.67 6.892733346 38573.55806 1459.043844 17086936.21 9541488.182 78.27760285 7431007.276 1976849.237 1124779.599 62045994.41 0.06013097058 139478.3295 242532.3101 15433.74038 49417593.47 12321.89426 89.03125011 325417.3169 5281.197643 33940034.62 39769668.97 1420759.841 1597393.679 81021.42392 1357825.019 221481.5057 218.331761 5296.566737 7604327.917 27642.55586 0.0009443046721 128335.3545 2170942.791 21.74614655 1251.876227 157483.7105 1071957.88 3288626.199 37227340.31 3.369771915 1899306.046 13006.00326 948405.222 983024.3331 23252329.89 35187.99717 4008746.123 891.5665611 6111496.307 0.7773441785 238.0697039 9042717.712 47063369.52 80930733.79 67559092.13 52.03887536 53053460.4 10985.64164 21091951.97 5383.338468 1260021.251 12363329.47 51198.57368 17871.93244 11275753.62 45224682.6 7959.966414 1653872.308 2.461413338 2357959.037 257.4388079 4352.167495 391982.6902 35694058.92 1.672792496 12834683.37 31842.713 5668746.899 17.31381747 279241.855 7016580.408 17139.04103 9165133.07 +55530507.48 42809392.77 746852.2248 92029.1038 3300551.88 44731.51677 1576245.475 18.05916021 66563185.58 4809735.646 23944.31126 41139528.94 2540659.568 49716553.54 0.4110611766 5447.157329 8.173419294e-05 13366832.32 237849.6112 1296957.048 114662.7308 30963867.74 0.0006746790448 7937853.722 3269573.439 128.2646331 54794548.27 12488.89722 231586.4716 15.05601333 0.7118797321 26060.67895 195696.5411 178566.592 5801579.778 888926.27 19694784.96 44139.70038 17768.99265 258453.5822 676244.3357 704632.0067 40103375.37 379919.2469 12078362.56 0.03166714537 89490.2351 26.58430192 68399316.3 203290.0873 6236570.158 6653.192639 48075.99098 1169591.335 1626463.682 239532.5753 1808124.147 169250.1445 611.398156 60171888.84 39910611.42 0.01430061732 8159771.019 66818405.33 413106.8684 81.7239525 695352.2361 4173.104062 4046254.104 208113.1005 58129.92442 105294.2712 2151.577497 271952.1801 0.0347099155 10432420.49 360375473 29114.35073 20609.63461 0.0006859616268 14002839.86 4.008659146e-08 4472.031134 34326.08939 70072.72819 30568742.76 8156.206485 17979193.36 79518263.54 40.41797537 +6488.363077 0.2446274364 11491612.86 0.4156596651 16624241.88 1.672286093e-05 7531452.759 3805618.924 4186.754484 0.08871524611 12585079.77 2.453026037e-13 5210045.461 0.00244507078 0.02952767632 40485041.34 331299.2677 48358457.92 15522922.37 18440624.05 23608852.71 0.0149055253 55.8741644 13288860.5 25195839.36 15568.37617 30860.69902 0.1617719367 50324.15365 0.3795355329 194958.9676 23588787.17 6005745.27 48.78519031 30591398.31 89030817.13 541.8644023 2526.196163 29995508.59 33267453.53 2532988.501 4268.027203 14408979.76 44182.4618 7690100.565 24098165.64 210115.2288 148535.7288 78.96664449 14815094.83 3.121603642 27062.13911 55708381.43 48858511.38 93054.2016 2984504.15 50835894.65 2157064.243 156330.9329 41648724.46 818928.9367 213.7842639 29853.20257 12.18003681 55256.40837 5000610.027 406.0352145 13038449.27 369022.3524 15675923.63 2087.487303 14119425.56 71230743.96 306.5521288 2976972.727 4871971.567 0.01971116438 6249384.422 21653.90379 983236.3931 5.622932793 5397440.367 0.00300111857 3782212.808 83789.25806 290270.825 23228570.46 768739.3588 275708.424 333574.3417 +3399565.527 115.6154497 122021.533 2302680.662 1832148.323 0.001808119654 0.1015781895 958337.4278 853094.6725 3748331.793 23701.8625 2971135.259 417.8090428 71860.9142 74396677.35 18264469.24 16596335.71 225501.1485 37259.69825 930372.6087 36140530.05 86485.67901 0.03219619509 1653301.942 59096.83295 8126858.933 37.50812434 15879941.74 234233.894 71795.05039 27023603.81 3046.024229 7.230262769e-06 15627821.24 5837342.795 15952165.7 10690.60201 1544106.242 24363373.56 7511208.096 50972580.75 7981335.955 312932.1362 49368857.93 6900135.854 19288.04813 10616634.16 16.05961888 193206.9074 3203104.255 11196638.38 1387899.132 127792957.6 2777085.881 816475.2895 15112466.24 41187252.28 5617697.659 4741391.279 21034745.13 41184.48686 397416.5 24323506.63 6999.991351 2020756.677 14965781.84 8233285.631 63592.70484 65498.6813 4311922.125 280053.4158 804001.576 22149961.51 4112240.485 22935849.16 333988.4403 10241179.59 1783563.058 1472818.036 203785.7562 92884.41205 20080624.52 3.771083568e-08 14591214.26 2679161.981 10337983.66 868755.8405 12290.26242 5499.658254 39.35563181 +666457.8793 10764647.19 1.53184922 34806328.05 76177039.12 69479245 2282599.674 32610442.29 238476.4802 7096646.413 5227.403246 1738195.321 4072.722399 566447.7278 16517.5514 33676586.59 15525434.73 24364547.7 1737473.479 30135185.65 7245715.353 174790.0077 9671746.036 15573222.24 6081818.285 19149.83566 521.2418301 40968.17007 13290911.61 7308399.574 275898.6713 11.43942711 234.1396745 1462062.37 60719815.31 5699180.613 131264862.6 5273337.169 31916488.53 46236900.36 267216.0631 81806.26085 5574348.315 36317365.59 10470067.78 157877.2446 8338.972228 697.5496378 7596145.844 128828.1598 3812239.477 5700952.436 715095.2936 65465079.23 0.09850414733 1493426.802 8218171.187 3393708.26 306345.2799 943643.0547 295382.7869 106954.7283 2.818341276 30617188.16 3207.750045 226573.0894 50343.54916 284773.7612 41375499.92 2536.872828 47906230.18 9002280.603 63660651.89 13094188.69 1314291.781 12216688.77 444.648539 56508213.56 228667.6843 571120.9953 423199.6327 2.637372384 837592.2787 28.4469401 146777.3439 2710170.366 15549916.22 24958057.37 50115444.53 7.177777571 +0.0002341038267 26834014.89 7304668.19 1903508.059 24807438.77 0.4282081295 230.0461432 5862.532747 134198.9629 2413183.448 0.2310071888 33952814.99 21177493.72 434955.9121 99728479.68 1.010666857 6486511.236 272.4050613 4974715.561 24719874.11 806.0345075 10636450.64 6462.195839 207056.9447 19932.11422 54.77899338 2720395.492 147598.2137 841.5122634 2.137710031e-05 6588736.766 9113.493544 72.28864686 6596392.125 4888182.585 0.0002159593851 315467.7065 22849178.46 35964053.79 345607.8639 102928.8506 26867.05416 438953.2732 25266.15072 644308.9026 2639.623723 11092.79438 52861828.48 1092403.164 0.01538158464 7434330.728 62158.82618 2218806.035 43.47084982 41768.86496 17380840.15 26171.93242 27806470.25 23356969.08 18320500.62 59588163.86 16047546.39 25287437.71 2232502.853 2.328610265e-08 5494982.117 4345991.85 73227652.57 15644.17807 7052629.354 5432262.568 11916130.24 49753381.81 145414.4779 5297802.483 11688528.13 9763.776396 62.36122944 3210600.189 13879719.87 3303.718673 23444541.91 2501.024265 1.882791766 193806080.7 6002862.673 5534.498467 300928.0876 3750.184939 5656648.859 +147419.9325 1273346.1 1758202.168 5312924.16 44566848.79 68272.76562 312641.0254 19300557.98 241029.8435 3431039.203 1936786.342 2554078.407 0.04026676714 53409.72349 0.05894363186 13363.96425 236237.8287 485080.875 466469.2792 42082.32406 37707.30854 13105989.18 63278.22007 11642472.06 1176986.55 7341.176738 2.256308003 3532.77444 12638.87409 9488114.169 927275.6206 1905515.451 9596.890613 11.24557039 360096.192 114192.4551 62.17122322 395794.0312 39316551.88 879453.9522 72225.50783 1126201.708 17128603.17 2584209.869 30971197.8 22550116.41 12258.48049 109952.6736 70303420.81 2970649.055 12718.02696 10131928.62 111378.0297 30881394.17 29794648.71 285732424.8 2986124.993 270.3641403 1172757.696 768.1068859 10335915.19 199627.2652 83178974.24 16902053.57 19660971.37 17199257.77 0.03658936663 120550008.2 76461.07328 38073600.02 54640218.17 3707863.699 9594497.219 42637.00704 2.861528123e-05 36674074.1 66396.59098 26282632.09 91222.7896 461.739418 8311.719206 4539832.179 1261.621034 69906.3082 0.00421666247 19710483.84 0.2990379567 19295585.47 1735777.154 47621632.21 +7891518.004 17743306.68 33187.71559 345.7261069 108560.8288 55238.98235 7.982666086e-06 38608836.09 18946865.88 25575.48032 58959.80653 10.9948451 11329289.89 165757.8036 5711257.163 706088.0382 12814491.44 570.9171532 22.65732828 107382.4481 57056.27366 15046042.17 26385625.55 78420276.94 1877427.216 60560437.77 5173340.255 139625.6662 12251524.84 7405825.548 2518636.527 1085559.989 30856.9824 4511927.753 418725.6211 157200.9229 35.4531621 360031.4836 14469584.84 575.1938193 8203669.951 3348325.097 9576231.448 2690179.012 18648.32457 66652.44089 253482.9283 6450916.93 1785531.413 97143657.39 108.9815891 2970895.257 31110422.11 689.1588139 31905728.21 21429.12599 316716.3833 1.956626146e-05 800214.0049 1251.629887 117318.2959 115.0368637 3008.229683 290849.0776 241495.8022 21962681.92 10629080.69 9.054562585 642914.5064 138486.7109 51691982.96 269.1210172 12937988.64 36260.90361 112378.1271 1277288.624 7677263.806 1570625.063 5728369.612 2.414211614 0.4857939655 2.456335557e-13 11690995.15 3738516.375 21391492.92 473537.652 37138.42339 52596.79247 116770476.1 1338218.675 +647617.4389 79078.11047 339.4863653 6215111.81 69801512.88 47490949.02 3282032.644 54.64938155 0.003313632365 51420.71481 15779.55681 46787881.64 63164.8501 2310985.863 30590824.33 0.09087984435 138321289.9 18460240.69 295752.5845 24290.12323 4337.421214 5849079.905 3231268.604 63668.89684 49198942.02 2.283006369 691522.4148 61613446.62 223049.5425 73317639.96 39922292.28 833950.1988 6047154.691 263201.6067 18927567.32 3454401.74 0.001195990584 315369.1617 4159323.169 15159.26871 1678391.051 88245.98073 0.005273679281 10038367.59 81244.90714 6892833.661 26444200.56 1.422672411e-08 40766.6739 45453.46582 3279320.501 4376021.753 1.84942648 2121262.84 33334518.64 26256602.06 3235879.319 6240236.761 1.974698359 10502350.94 1789.357084 498199.4496 1150.035452 18352509.7 13271544.76 22911955.98 197778.4858 41605833.49 2649604.213 8122671.626 17684591.18 531.5230305 0.01561896397 88824.76189 859.990072 4082.374981 1315757.748 1626920.418 33.31082815 1209634.691 0.4974812747 27.40937612 40363687.38 587184.4449 3872714.912 1603072.499 6592975.537 13176045.38 32976.37664 85309.71465 +1213204.362 6071462.514 3708189.563 4937036.954 11923767.46 7.989119578 247301.7908 3641052.338 38336347.15 143633.5066 1245749.37 16608099.73 46.90865564 87.38836605 3532.680715 0.07685074621 220665544.9 119885.4037 269601.4017 27424.81685 58.86281449 1.560430466 838616.3604 65092762.87 9200158.557 0.05639342894 61.73221305 2337781.539 0.03269038836 62000.30353 33170114.68 0.6291965305 12.39464645 44502169.58 6524626.979 5569.154049 317702.4941 17460844.78 2847976.481 425172.4405 15034097.98 32688774.62 4589228.745 15973.02144 269.4536391 17593103.95 4416403.423 7306.833935 415476.3507 556282.0991 1214234.209 31838.13421 48098078.24 25437.42543 17256.12639 84407151.94 5663819.008 2402002.773 4198171.575 7515442.986 3534529.662 43229.32203 0.03395663727 146.2653395 267096.5793 359540.5036 10877997.68 1275.090577 1641557.247 2987183.397 6568.905752 194763.0102 14542914.86 22335807.23 204534.466 36515517.6 1302094.039 36973611.83 7060777.335 45344862.1 418486.5298 115126.4352 171184.9764 24118286.38 2482758.12 70167.40108 253405.0142 11201766.5 1897062.708 15776.87732 +16829810.32 1.812947495e-07 19091505.35 28506297.25 619.2214594 129700882.9 49092.43224 5867056.966 4459.89125 220.8691442 14263389.19 625046.733 58307533.66 26416836.95 6283502.727 54851.57208 1867944.082 18143.18214 1316651.329 9.213443591e-08 888411.3439 14115193.38 32803.29004 328778.0001 0.02665859583 3065.816816 48250.56014 0.0566238365 0.2643650063 5984357.896 2930912.135 1278877.51 715.9260107 2629344.396 61950.65851 2723979.676 30043467.62 5566269.178 27.8127196 289.9051999 22442345.98 172599.1339 46245216.51 8845.061325 42116.19023 8764.192504 32223.68636 44468.76885 6535120.529 172660.69 82.84584539 405251.8893 886114.8336 5418692.384 20387.24652 3321021.17 31.27856342 2352849.011 5816723.202 28763729.43 45514.94364 244.9868977 14650009.98 34802346.79 2104161.548 1261639.094 9692.8394 16726360.87 31203898.62 5525330.178 2047.463563 31268101.13 23967609.02 61071277.08 13925.72769 22.05779263 1815600.205 144754468.2 33.04581925 20539830.15 11.60113319 76369.01066 1305131.546 1043054.171 20434600.28 5008501.512 2197047.324 0.02685039394 25023543.92 4060.17431 +298637.1928 24579.14239 10956.52146 38.75328677 2921691.536 162995.6715 20177862.56 24298.20235 3993.109854 21853012.77 44315788.09 22165670.71 293246.8846 50204.57907 660205.6911 154623.4454 18070.44499 37762289.1 0.05166631014 27493.82337 136449.0004 0.001553046636 231272.6025 13763271.01 615351.784 1725124.929 0.004321443859 406170.2638 25216.12468 1849.89181 14768319.64 805392.556 35243098.02 2626799.94 19532024.17 17512.21454 75833631.59 1259313.605 5890644.964 2952710.717 29367781.87 7.163000845e-05 70586.29508 7068382.065 27949.02107 8431.655137 48887408.15 25.53518989 1143464.609 0.0004014406871 3.714166086 20928644.18 23293299.96 19.77782003 2583514.033 27355738.17 74934919.03 71943478.4 241931.1718 24248946.3 2613410.678 45.96413096 35.8750043 26602619.31 1031449.512 3496202.973 553344.7338 1849207.668 974.6446708 47189528.28 33345890.05 30816035.47 4.459199646e-13 675872.6149 952994.6032 3151309.735 4162712.378 82468.60376 1355338.985 536578.4595 82.68799931 9002140.584 7487969.088 13500378.44 29194839.5 78991936.87 3408125.042 3276.172219 0.0006157217396 1447136.176 +50522125.2 35465813.8 22705562.67 0.02374634021 3605342.959 16050760.74 23892855.04 17165156.87 785639.2455 8514899.451 9674801.668 1153557.945 4173141.192 2261807.471 2716.505727 656911.2541 1925.646706 4043331.038 5618055.789 5438573.149 3585828.523 2548560.09 25669.78252 28360.90332 10915236.76 156.8940201 299.3379344 3063483.867 5426923.12 9.95168343 17116156.25 39516141.74 20911102.75 5470481.686 389249.7235 90029.14095 73222906.59 598.2559404 98949647.08 990556.1657 9145599.486 61035.58754 7627.859443 273358.363 19982065.94 23255360.27 61054.18584 7883270.937 2401334.918 4157271.223 27522705.18 2085.71154 5660687.545 4856134.594 45937407.83 3399032.536 2617610.255 41665381.4 1457695.115 11670424.32 5953517.472 968.6422422 7646.072561 7158038.062 10112.39031 13017363.21 921972.2357 3134.66707 5104814.837 27457435.81 0.314813082 51639.5668 26344.35935 140.7378347 277706.9992 43.63212188 3252526.594 6460750.039 177702.2813 2271279.899 3948134.12 89965.15555 976293.5881 5409.096257 0.0001667085734 4518609.961 24090278.94 6925700.027 1.916096179e-05 1668.742726 +8086888.034 8730977.816 38167387.73 44673.18619 109895.9675 230.3203031 8315071.227 33418.6472 0.297557383 19702935.07 30.8115326 8702512.33 77164.94289 2851738.651 315572.8205 9951232.246 47.6252177 23734974.71 2046451.315 83387.33745 4392085.734 3069462.945 2653800.822 1786.129761 5.528109203e-13 3282114.845 3694.32974 9076391.624 0.002855370549 67389308.41 167289.5542 3268082.498 48705.94212 4058.610584 10.02095577 1897443.796 5105362.108 141877.8299 15475183.8 935967.8447 2849.426865 1731.320219 27242.93461 891478.8761 7183659.062 5749.730356 0.0005015197375 3276928.086 502606.8102 53493.85932 407442.1306 11128181.47 1564776.381 14886246.09 74367.43803 20335.59154 10697768.99 8920367.869 23469626.14 56089.51345 6711388.435 63694.11615 26226792.03 5471175.768 61610072.27 11083416.3 17621217.32 0.0006108041649 26631851.43 62787.3821 2.106125514 1054.736632 26.87357559 102603.5779 34072617.88 65239.18061 17449502.69 31175.18676 4706951.76 3379.916347 3492.91726 58199.71484 35779362.53 1.503391099e-08 24013687.63 6237341.648 0.06450619981 1424223.496 108433.7392 17228841.39 +35472.39263 166.3918542 8391429.051 6.801603096 2500833.743 967142.3879 3800919.529 61486.32147 801232.1237 171.9796669 17.49949293 4855516.223 690.7880695 38087883.75 1131680.381 1102.489195 12907615.97 45344550.96 60631265.54 66064.28635 361156.9333 3.626704213e-05 0.2253227679 0.005283457418 305744.762 12089889.19 16129362.08 2.646404395 169878.0012 20122960.05 355600.494 2682398.515 155362.1454 121066.6379 45446.82484 2902191.004 2.088539633 85.04545234 10935518.85 16162.11898 28192.6255 8105657.965 50475751.04 31499.49164 0.1954927744 267759.8066 22690270.91 387050.9627 36679068.99 65198.76568 34149883.09 157.0863715 208914.5464 16684311.79 6316.90821 209.1321028 3472391.654 1310977.851 3631873.355 3407.310985 78954.68062 27668053.57 17941323.59 8.066737483e-10 449992.7328 2747.780008 447.9569863 36710288.06 135057727.4 78469127.07 582828.4101 1767276.661 5292162.236 55110583.56 12146798.53 58041.92805 41343195.71 51085808.58 74561.90058 234736.2382 13317601.79 0.03389240081 18261759.12 0.005226939367 3698.761019 830.6683583 3399288.209 644336.3604 1498.514284 130563.6931 +54938293.56 7717227.786 700424.3234 16048923.49 233153713.7 10338.82389 639708.4546 13028.28033 1811.024674 3302.459389 416544.4542 27550.88171 55979524.82 786.7709816 23156.93378 2987198.602 91985.98901 9003.422942 26014.04909 3943056.823 58587310.05 807816.8632 32321741.37 260495.5126 40639178.27 28765763.98 75644.54674 194170.8641 5254126.751 86394.53154 198.5193056 7990443.895 10338981.17 426.9814525 18768066.2 10276.51149 2690373.262 6327242.012 32026694.59 1195264.246 5094484.895 16.64864843 3660.166875 67547.47309 6344.41963 890557.9504 0.2205054797 19650709.97 1781.220492 2117973.461 29895054.3 8404430.168 10821440.63 36925.35895 124662.516 14808444.11 3614978.401 3964022.937 4155127.699 3672769.314 22754546.28 16766336.12 57.31936101 22977701.6 1433694.561 30413078.36 63.11881971 263320.2744 8426406.86 25699836.67 4601.969801 20399.78759 26817500.34 55845468.47 191.7893448 29772031.33 25655537.3 12712516.97 0.9145652594 91063.4108 2877407.861 11241748.05 22.44437162 28305662 105935.4697 89.06127873 404.6020544 27764150.19 1578150.607 3134833.037 +4152184.246 3357.019598 8744447.933 57851679.52 15338227.57 71553.64082 13603.72981 255629.3969 0.000120562424 56.5259284 5714811.96 1.091919116e-06 3412203.085 2115.699446 75515.76425 310626.8576 22492269.01 1000556.452 11002396.8 7902701.864 107.6464109 4233.074488 197.6088429 6234280.972 35853.3537 456.2456201 6483240.082 367.6365798 64863.23163 591.8896471 32170889.07 3925748.337 4036090.375 155403.324 5.194153928 632.3263959 42894020.66 65713844.7 866320.3959 46508131.15 6733867.81 29923461.89 36904.62108 29958245.71 2521129.925 10830.43538 88391594.54 19770.96484 30840287.16 3.477957518 17708155.16 241585.4517 261506.0184 689553.0033 3255898.033 10.00127515 5424.480607 4676974.497 966461.0463 20962.88421 90109.57679 27753209.77 33151978.4 1976.384372 0.3645962851 549861.9468 3036.944935 127387.3028 30260665.82 341049.6543 0.0006220298278 3277.958876 10310354.87 1343251.323 12941911.65 347580.7954 89324.05912 2762.654021 1.00140876 26416.94575 64372794.11 115.5972876 248369.1525 9081862.734 37216549.12 12000555.5 25004.03376 1447963.096 2192.445116 26685175.5 +8099392.652 205989.6622 1269257.696 55481030 3033546.054 4808.062985 719224.4838 0.2742436231 7829832.194 198630.3098 558280.3014 24874491.88 214001.2616 16494878.78 0.09212033052 20218152.19 19112.65705 68685.26336 7441645.491 5231279.735 976.5052531 51068.60236 149450.1925 3570981.173 2074567.72 6987322.424 2772170.312 19102260.34 171.250576 10283657.55 57597061.96 1186236.619 979173.1468 0.2455437853 58634.39209 106899062.6 58763.9031 7567999.653 3581.75031 115635.7656 8907442.104 1.309902351 4931620.326 1556648.095 3962.342037 45101009.73 13149988.81 18.54893028 1797000.852 121169.4916 10607949.95 160446.6127 7.141716687 3212.127848 5512.822422 1885203.822 1580972.625 260460.6931 1962.042979 10747.15012 2186488.511 7788270.71 1775899.773 7515054.697 168.9856943 2731085.746 5622718.906 354.4601949 4462643.125 1600797.468 49315.33897 2522605.265 24575214.12 6561270.968 1204590.63 1498521.491 13747350.68 11110.60291 75053.5398 20050592.24 3902095.923 146763.9399 42720495.11 2841159.37 9.142127477 1586023.252 20326808.27 5535.350049 62358101.37 33026229.54 +285288.6898 801223.756 5866631.084 17519328.1 12939220.66 19607.12271 9083378.703 105219.8301 8563.947195 0.0005942416418 8823766.93 523.698415 53087255.86 4176453.339 383921.4277 5977380.557 2715.439151 15.43788148 222403.9963 6903224.862 35424.52513 2596.805855 637489.808 153.2467665 26479963.73 2357597.224 285.3620285 1369795.231 303.9546147 636475.4781 4776442.482 5751.688713 1614659.901 20311498.07 476746.9144 15683450.08 1.301427176 47161759.16 0.08591377216 6547128.963 1581177.274 31510.48824 2434788.057 0.02358286713 13323.8299 355841.7894 391.4258631 188552.0296 0.1070694299 152095.1888 171092.352 3134460.624 1432020.72 75289336.05 7.40809061e-08 579.5971028 62784386.43 505446.8499 39996272.17 1008921.092 4688389.515 8213770.684 181675.203 62.62792095 697.7399232 10235916.95 1752.714404 439183.8793 8380511.812 190.085789 1896271.674 63793.90163 23142507.51 4216068.216 643991.6976 7705.676746 1.006259892 1768635.061 19239388.57 2139330.83 2.753527265 548055.8021 0.155407379 84839.34289 4612327.274 6633799.835 38381.17716 3951692.051 43273198.54 410.4364249 +318.5691184 22728580.96 17891732.42 43939.54602 40831584.9 4696810.583 80843.96321 3242.341776 31396.58753 737464.9784 2813216.02 16530262.51 71017.14757 232730.5712 3224638.598 618.6988922 2094795.844 157.5798268 18652137.49 9050861.155 19964.12449 2703.016968 83950.23167 8222168.075 193418180.4 8019.080492 29100.06898 25.53645013 7674267.662 2894186.118 69.0748396 10977.3874 73773880.26 4466406.372 265444.2392 3493467.69 277047555.1 68751.77036 91.49905734 8238.021546 3455143.113 8722893.205 17727807.08 176871.0765 77629.97915 3668810.504 3863626.89 23426.50368 36556.61252 8861406.994 26981038.92 21833.597 1.031927218 25025263.46 1058039.117 822788.3037 400.137479 3359.831845 22542812.39 6560.625005 60339957.95 28263674.83 13267354.82 1041846.994 144197.1436 17901.42238 4.122091234 462966.4144 8063.585468 231053.7288 383.3147623 51738538.63 50916398.03 25820975.93 3132545.106 576.482466 26047974.86 0.04586637831 42759474.45 417.0161283 9557635.931 8018192.337 12.59133176 769980.4999 13399532.59 4011630.138 15357812.85 42255283.46 0.00434909324 3869887.238 +2176029.481 1305295.575 3307000.584 1773458.187 16093362.68 48324065.06 56615.44568 81367.6557 87.31171571 17558.04971 2643867.559 6867.06995 2761450.374 47.11164 3456.90283 337425.9372 11495.8652 95456.52015 29632303.32 26036810.72 252780.9031 86117981.18 968203.6722 139827.5361 6646.353559 1929629.924 137889.2154 60685.61659 2669638.643 1592242.419 55894965.46 76.76222769 7954.955757 0.8079242969 5057342.918 8625300.311 74712.54272 43906906.25 46104413.03 2427682.656 1293815.466 64840073.1 3530651.368 12300826.81 5.660862881 320923.293 38788.57169 3348.869712 7772614.364 45.48774798 29863988.07 9747.515192 13962.76338 12545526.01 30804.09084 21408780.04 4.624491746 146359128.6 57483484.83 5150.795417 9.423182433e-11 335524.3747 1.175727141 8.596393213 2453203.822 88019.22603 0.08263492892 3933159.146 7090899.633 19903176.53 32122853.66 10418298.01 13305.23193 2328.328261 34326974.11 1290193.757 23691342.99 18339292.17 9.653321447 1606942.44 81.37057331 22597601.86 867110.7672 35975715.09 580131.425 9748203.957 3.495708474e-09 250142.1079 878437.0248 7789875.258 +4766857.554 45963690.87 5124670.29 47738.90967 1569633.418 9790408.867 1.061346866e-05 14975147.96 11584195.26 0.004482341353 243.8857035 1861837.894 60481.87108 0.0224172476 894873.5365 14602705.93 369799.6969 2294847.275 639789.8661 37948764.2 127.8014966 193230.0291 26552930.33 389171.2019 109406559.3 31666115.72 2025010.983 384.0969819 267783.1561 38910864.18 47884914.49 43034752.45 32346977.66 434176.0415 4177961.587 3808845.126 0.4394860618 8963061.081 298.3872902 0.0595725419 1106180.466 16284905.79 974388.0875 839959.7908 48903052.04 0.525578249 2302.13293 1682485.53 1512088.918 5605222.032 48459.76806 1272004.934 25079.68067 49415652.85 10759628.53 2797031.239 254271.6614 171569.4036 12327774.47 61582749.39 8890915.761 36913862.81 58350.7939 382.3011532 28538717.97 13720779.15 31995180.97 0.09572347674 2929115.088 3156689.92 2060.754638 19482.9036 145284.3871 51025499.31 2.921642857 8667321.145 341.6131172 25041337.34 2061924.56 49780144.17 38395391.15 18970783.33 600211.7496 9279557.868 5642159.51 95679977.11 8010816.492 12604091.99 19003034.85 16096.24243 +4.588949726e-09 495336.8742 3.542478979 92.71933537 19814184.61 1044709.368 50371.30894 3788871.758 9974.919499 27327.19753 181.0487662 2107238.774 27238447.81 569785.2682 14556.73313 54317891.02 16943694.09 3919785.731 3090.233178 4321997.902 25971865.05 0.2217283845 60191.96003 2009.430142 16311293.39 159323.4094 1428381.238 1044224.678 1695842.124 604204.4513 163760.2068 5423264.64 35000927.1 726286.655 37321.39888 3295.678029 0.01389743034 93720.95928 8439085.553 543994.3195 44257322.03 13375.93972 319898.1031 20103.01907 19604371.95 568.3143111 28071.52214 65572.66953 100146.4779 4371002.187 89908895.42 1906.045668 121.225758 75982.41628 2392871.711 141391.048 5103161.128 13846735.03 13518465.4 557028.5233 8494.766319 4352099.823 88.66935471 56658.89931 3925714.653 0.1161282188 50635335.97 22381.39601 27692717.81 1093448.839 108262.9196 0.0001185652027 0.00855782505 0.000471327264 771934.282 150.8615838 567860.1375 65657267.26 17236.16214 0.03971748281 17.42745124 82203.02959 129.1612299 142.4778817 28308908.87 242470.0344 231.6390875 21811.95438 20645670.69 3386430.549 +235024.8897 4439141.787 61128086.35 813432.2387 52.49376878 17374.37487 341826.8693 2218700.984 1253463.603 8616196.445 2205084.267 3864389.578 298037.984 29.65518245 1.556479028 332647.3774 2661.92156 828511.2084 5260709.911 1350182.851 22719.34577 5894589.305 15283605.45 26032761.58 14226.1182 4692.937075 15.28626093 6482.002521 37089403.58 39641.21737 5.632466831 5010573.896 52132460.74 95393.44164 0.03513264634 5082543.272 1127.352709 0.8949216813 66578.11875 10166.70662 0.1119098374 2765.641239 703448.3675 16.44991947 24580.47356 0.03912026739 273.2621514 861839.3323 4558.916858 972795.534 11136017.05 846841.7034 188665.5744 421.3884285 2252.886486 5397982.682 22464363.17 32351771.47 416965.5915 17969742.71 827244.3863 226692.0834 46383.12393 27000508.52 255.595659 134384.1029 1016906.176 12873669.02 5923259.816 843.0713051 0.1206353262 16338860.69 1473884.011 162447.8135 5.815005698 3.021502947e-12 32975118.15 52600488.36 5286.380399 33791.96351 37443405.61 41.87147213 8709.724667 26814482.28 84690679.17 2753908.836 4554877.581 6027.398364 192349.6169 10633.95359 +3866668.178 4.640319496 21619.1193 42976409.73 18709323.85 5328275.504 9442.516945 38482010.65 484044.0219 10199029.14 38376403.04 11209.10906 9871686.304 224033.0597 789927.5877 8884098.929 2.029780218e-07 2501.498314 13950.24445 1701.786408 5707371.464 2720285.202 9559162.229 33614389.28 215.0279143 1565312.646 3337437.204 65918056.88 97945905.57 28632915.31 118680.1 1554424.942 8950.925467 28434404.47 7900395.536 701.2612516 57.39205921 436.2296273 0.0007019061608 1481971.628 9.913707138e-07 411141.1246 5204276.598 221825.7033 127167.4632 2591.744706 1170265.609 541.0462233 3504719.084 12905929.77 8138893.534 6219.639957 7463.794909 0.06128417374 160612.7434 23538482.35 30533362.17 0.5188252728 41614.49833 17616185.55 50787772.64 5351533.098 8102953.578 23632940.99 7535989.896 2982.558911 39797891.9 16143.31114 1.082023607 1283266.883 68920180.35 0.02112245811 0.1146283523 11346578.69 24603990.66 0.3079149246 4160169.777 2390269.243 68.67703387 2155468.667 57574.23293 6902.943529 378812.4062 8705500.446 3699355.958 98.81334703 41551653.22 5208003.957 94353.68802 12565211.66 +11154.83399 34197121.44 4.781239991e-05 542304.2167 58819.65335 9.559918935e-06 0.007245956843 43170555.65 59871033.14 81180428.9 80478624.32 0.1069193196 305209.7325 26.81201017 30056052.88 5479457.244 2142751.202 21832722.79 6781982.671 9839.756365 5934.878503 0.005299833999 33708.54684 8.234040221 17682145.77 8981295.428 4329.327715 24059384.63 8803881.284 7756491.809 65707.03971 13570.36409 145079764.9 63625037.28 529.7705936 3525254.266 359516.7271 20229.82412 66.06662042 25125.75668 53007.18895 30865847.33 54689642.25 11.08033781 1973405.79 411.7111383 0.002216005758 5247096.494 55558723.51 3.767278551e-07 26632.76679 9.326912744 0.01345481972 313848.7378 0.1939245806 2058098.42 4511899.817 192260.9435 1728923.395 24957150.88 11934574.51 375743.1733 33638.79496 3780.563391 4.486591211e-17 6227.093417 89677.01101 4894649.013 326.998309 1276.207085 14.41293593 6421400.826 21362286.39 134787.0615 1824.276105 16894.09718 2720.088724 40913956.4 4057897.749 60.63928965 54454359.44 0.005464904695 9237282.834 93090259.48 3568.869403 60180.40314 7923.464281 1398.139253 692.1727403 0.001052713939 +107.0016353 3594900.496 89205282.44 9683235.439 8018226.9 463109.914 2630039.631 3670479.985 199866964.1 18298486.03 231818.1703 23086008.12 9288066.747 12491786.76 3577.103742 327.1972392 4654312.235 0.1516932223 1646788.376 8802070.284 289740.6928 45.3050148 17266.4953 1793.99731 40185023.73 443.3181864 1622265.829 20236311.82 2077867.056 277673.6267 1344.837182 5217744.832 276610.6898 57444944.32 1.823042642 8462.782403 24547.24054 8799393.659 1099093.652 2503.232115 14103881.39 24459.9532 112.6841413 2727820.152 418.1467578 2391970.303 2921.515858 2779851.673 605702.2868 5036.095209 859.1191524 126579.0978 1617041.295 110.6493871 1304462.499 3875274.966 12699311.28 5062122.69 6.953624747 43047200.44 23930280.46 1.994725466e-05 3467526.827 73844461.92 532.6591959 289388.4828 11156712.63 878.3869496 16144826.21 22893328.4 13627891.74 4289132.969 12034.69856 676450.3479 1880759.959 4654698.853 1945702.933 261.3476262 15791567.23 268230.6793 10509338.96 1409909.021 549328.786 1385722.023 1323365.36 1340434.464 2405515.717 3400010.444 929201.2044 0.07161683144 +9697524.111 79.07484732 5985379.429 3001787.075 485484.3463 39713344.22 153.9911923 37.66780503 52626.55476 18970536.16 79267.79654 53287568.98 1285539.906 95413.09301 11.27930959 113635.0063 33391901.2 96998.50537 17493316.22 17530513.8 462531.3309 6407807.607 4457272.188 26902672.81 10.52323535 30241.01373 452.8908518 8663229.917 764164.9182 5.5903139 29740144.94 789176.8093 6803826.089 12.43637056 5336641.578 16063422.4 1830404.615 307347.4676 369363.0891 505.0564624 676040.1726 1553803.26 65302.32504 20323740.63 25566.83428 640600.1225 14171327.04 1173309.42 32125.22927 244912.2964 23614.78216 2167665.251 34506.21975 37518.36802 413.2588897 756355.4407 2935697.92 2698.963553 22340572.59 0.0001262997375 2455.807815 34.69373802 61934.80139 3552572.812 8767975.3 7314.14407 4664.661686 60683.57959 51886994.41 695194.0674 5689369.688 8.12467451 4194408.927 2565112.263 792433.4847 1294369.745 5539.583643 2011040.941 3328425.363 2094411.714 521071.4298 8.704929935 287977.8047 8292491.985 72288.07625 18581568.76 12522818.52 20230.10723 156639.6023 25687503.9 +65380365.75 1752472.033 474884.4581 5297.236615 130675.7644 580991.0224 11981155.28 37964.90062 7907879.227 411.7083973 5320278.57 5776559.895 339083.1843 2561690.553 230473.1522 53392.23592 543409.7539 2.110964925 18.10835235 4631876.689 113696.7816 3209734.724 19896617.69 97616.34205 44580378.62 2318369.67 8384219.843 743450.518 8238.342874 43855.68641 264135.7462 2827685.949 349923.882 235279.1873 227.5727326 0.002551207383 25.48778108 149885.0593 30525298.32 0.1283186298 3321018.1 8160116.374 14794848.48 60.96167104 48568.62229 1129508.606 35410789.6 42241.36749 8823877.378 12488119.46 365971.9495 973240.0641 5.698109326e-05 4.673648005 198167.2846 108713.0472 68659658.46 16560.58595 0.3688483262 32749825.12 13.94422258 4373429.111 4107.266037 175203216.9 55982.33593 111396.3904 93173.94866 2.522619352 17069807.66 7923.859121 10423419.04 3482215.451 101501.1991 750384.7973 366050.1993 16910975.36 31032788.94 28.81139076 857280.8794 15844078.88 730.0590177 2252352.153 4945109.881 3.697096821 5714.891441 38070.61268 27381292.68 157207.9257 1699.054229 3314580.789 +317823.1427 2055629.952 0.02663016026 399.6156232 67444102.59 122968.5939 183.4602385 2484.953466 14917.34338 99.261397 0.0160353882 3713151.078 1.629195894 26481386.05 5839.266766 11248011.72 14650800.47 383830.5836 698.9373757 258607.832 248027.5245 2.615786147e-05 7318.887264 138978317.4 260929.2348 59814015.01 16869942.69 61474.35996 133297.001 26921465.39 2981650.287 5417344.404 1679636.714 3385848.527 19233.98891 139183643.9 1739406.4 4175348.601 2519759.218 5.564759098 4675736.922 1643178.815 73735575.62 446.1407335 0.0004867801614 14837674.09 16135700.25 44526.25138 954.7834499 24598722.01 266.3052282 14412728.94 26540846.93 1427384.195 578575.6815 2206274.955 25839322.16 30438.53594 9218.611591 4074.367673 0.3805127969 339005.9475 477.9908897 8168561.095 41709985.9 38030.28522 51894.19783 3487162.243 11680.74755 41737030.24 150.326301 49093525.2 1636.72145 34522694.23 135179263.8 1111129.546 6.673136709 301849.5859 22256795.71 11921321.84 2457011.981 156189.6535 4879.546293 4560253.785 3629.263629 18765559.23 111950.2501 14192800.41 363385.5741 953250.9798 +8336.111186 4153426.87 1798086.733 110960844.7 585.8640799 114796.1038 779705.4006 14468893.55 10557451.23 2633.192106 586223.7462 1054642.126 2719046.849 40577920.33 459186.3963 10026310.53 1193.119841 22106.13902 2137022.752 17901037.39 61844.38475 533.3115742 34368205.53 17880210.74 291.8106408 5595826.576 13146918.67 102162.5557 7.368981836 87109.28768 826814.902 5822.37952 86401972.86 42.53983954 27487161.57 454759.3297 958390.0012 55239.51099 11756964.54 36.43592364 25774621.34 4488829.586 12775582.25 6114819.356 11399878.1 2566.843694 0.01178615974 723762.566 29547319.71 118.9478149 7537151.243 38659.86796 468863.9 122340.4215 113.6907143 2.912157619 3558253.662 51787728.63 0.0003925737536 4515774.33 24483651.43 47707489 769924.4784 3726648.268 1272958.125 43978153.8 2767.2317 24227689.14 2409658.529 74.68707438 23791587.29 2816279.022 2746295.959 26083.6871 25952.46807 2568239.732 15427.47785 1.759856758 0.01928464523 6472.661221 2670685.197 812183.8519 13387929.09 4784121.25 59185.63345 5664648.381 2679045.154 977325.8193 14024075.32 5760.971491 +41315.04021 30.85868783 1938516.208 1.231287986e-05 3942062.594 0.2312817989 95215.7122 185.0168103 19821318.25 10042376.35 22858.07184 33025.70552 24442.05703 42608.96889 509829.7573 10365681.52 2.950737056e-14 874351.4256 2057806.109 319910.3242 176929.8999 0.1200658286 782090.5441 2709777.417 6062867.715 2.007084439e-05 32700046.47 603883.9864 31292524.13 78.06690471 226804.8202 891765.0153 143400.4142 17457708.84 55762469.77 56.86481695 834685.0139 436119.3336 93.36899615 2289291.184 108348199.4 18959468.12 22351109.75 253626.6004 15156204.76 237244874.1 66756509.9 12256320.02 274505.8028 8988214.906 15232078.92 38315767.23 1395766.989 51880368.69 1.514274898 12470638.38 512894.8279 3892617.157 35181.93396 1633055.511 5582432.045 111244.9128 8.798302938 65865.06573 400729.7683 14062653.08 30458733.53 65048574.24 372.2124825 18683.83741 88825352.75 1919194.035 8.424610858 144738935.8 747724.3015 6506563.522 325623.5573 3260326.799 12751262.64 16522132.82 114245.785 316.1001161 45144.38657 56213414.66 198.3955577 116847.5452 20388377.49 1069727.979 19290.14198 269524.2715 +778.1738642 25992972.33 4132948.4 2802122.085 18538.95568 74.85511007 25643.28457 19.56560816 3463975.155 343183.2503 6933.997556 1463168.768 0.001627381476 191293.8113 463819.5631 130803001 29321.74682 542512.2244 57830199.61 561294.8558 27439351 1336.074176 54361.8521 8.078953339e-10 11021.11045 18802.28316 13146837.93 52521292.16 518447.9747 21018467.6 7114016.489 535894.5245 26652.96349 483.4710345 65518865.84 12077.13866 10884.45134 128.6474483 472.2618809 6479498.485 2691540.465 13144710.68 27414851.7 232635362.1 27034970.05 1401.903369 1194589.271 2012369.463 921186.1078 100447535.9 636.7893394 3160886.007 17276.35048 33864117.65 1049668.548 11362.87399 1.545807683 18154716.32 486385.5026 4969915.221 4233.346558 33557603.96 0.001074921018 17138907.86 45537379.49 79481626.53 11482927.03 1189755.269 4148984.04 8029186.028 2058768.053 4873095.604 53.63632268 2283830.936 6823068.734 16869940.4 54554.23074 3182035.025 339372.7414 12996927.22 100286.4421 17285538.82 35.1607128 6980034.68 116239.9929 4625376.868 18886183.93 42795696.81 1538342.994 51391621.33 +301367.3263 103653.123 92585.09468 6238186.799 806055.4268 11739033.53 474726.3174 26899253.88 30240449.8 175.5943629 16794117.73 1384650.821 508.0467733 2081.958357 7591.50164 21895509.1 2492.522252 44726628.85 181874.3897 784041.8512 0.2970992459 25701537.21 19472.51508 3415913.757 380440.563 73558267.65 30976540.54 46685.3295 15804257.28 15695.72758 32212329.02 249024.4036 2510.270866 457.6165722 9712794.057 0.09223770802 454695.6087 1729145.839 108728.6496 0.009355423576 25705.33742 11444677.52 13.58040433 237900.8438 11834802.92 10944.2169 35927453.99 5268125.693 1528141.768 0.06557484836 28675103.88 19209579.63 170691.5402 8613745.104 29547266.5 581916.547 3197.587214 3700404.805 8579756.736 27241015.21 1596710.476 35083.27562 972.8821832 8738490.63 17.70616559 36705823.9 1210580.11 0.0009914699637 207028.6158 110172.4706 32559179.29 9898812.869 4910.430645 28742650.59 11595.47771 14219114.46 15183628.77 37088.32612 2981703.729 261097.2007 57238.64186 7010.240477 6572928.893 7328913.412 3269050.623 5.661134577 1813931.944 7883803.077 52.95688365 2270478.746 +7628371.011 6163004.184 2758342.854 1171904.818 7698318.888 12084518.18 247.3245036 1706201.523 33564089.75 2383372.637 315810.1452 42760698.73 3552831.318 104244.9244 131167.1016 725957.6308 0.03295029601 0.003779041642 0.0002166824308 32833866.05 8983.473395 83.1879886 131735.5945 0.06503082875 2606179.841 1476296.523 21994053.44 220233.5975 378781.0677 47119156.23 8300.010273 13064371.66 2158370.211 10645638.08 2444.760323 3682380.861 680386.7658 224489.1138 4.025941726 8815271.142 5156686.696 1040.891738 85830531.52 10148527.31 1964.66321 26455580.87 296949.5498 3349695.403 7112548.667 2638639.004 987905.2067 2118255.841 47311.69279 418.9018473 480904.6 835.0929832 10493424.34 6721822.686 42135096.79 2.554057637e-06 35332.16775 52965.08205 23772963.12 115.1868974 148256.4375 14514.87123 343235.6114 3129.041278 83637.78759 22651914.53 66414377.38 121018.9 1033632.231 0.008116153452 202051.6325 7872549.666 20740748.35 84.6247913 60671506.89 23033563.72 31648858.35 49817.59929 5313.217957 53.55696072 677441.2023 1177894.694 0.0538139324 51335892.65 5129768.588 21061295.73 +304553.2667 834208.7624 1262.099375 30479570.21 0.07038105733 23474.23621 23.10017425 2793315.108 1796.431445 2311.358805 60089962.53 416399.5268 22413235.58 192528.2401 104059.4989 156756.9061 376.0756154 1.182696888 114.1237375 17964.34529 2765052.429 5017813.118 23364514.28 4.767074649 2.18278368 735.9117121 2251445.401 12623.6608 18574473.17 1159639.875 79196438.02 96657400.86 1024898.179 592882.5774 306.1296005 17604.55202 40275260.89 0.007324832733 678849.1714 1813936.741 2478449.398 2452377.222 11262350.22 1667920.22 29106585.72 3148.643994 1898.941265 75698.24201 19686101.84 20716855.63 290600.7403 8979091.894 2733419.373 15583499.07 944.9437843 665892755.6 11592190.01 4748008.394 21817.22148 67955241.29 44156.23423 1516.341734 1126580.642 4748381.755 91.82407125 6725411.55 4661404.889 20897.29096 406231.5981 9.180417696 1760.707855 20.38599929 181019058.2 29612188.23 34786.56082 126.3133506 25055840.54 74646.78608 10467549.49 9306274.224 181911.8684 16735.8857 4545.441751 18471450.34 11333.11838 3968191.838 320724.8745 1260.990044 26837.269 5093150.971 +20464724.37 5893681.2 37170875.86 293100.4766 374298.0475 7625.067108 1056.514673 1089.093671 24116373.84 774973.0192 1132.475322 335148.7204 1619.035457 487461.4606 58099209.7 42.06396465 1682749.127 71688.82971 3177407.868 5218427.562 396.2683531 3087.798461 64629149.07 5922208.909 8168.124125 42866.51149 18425108.82 616137.0247 12417419.35 4103.21648 14224.11611 24491.11735 25879.38163 74143.21745 10643906.04 3.53763319 83921652.44 5169.278056 7772.577261 17867667.36 4169.195416 7138405.502 77657802.48 42909.81976 6349882.04 80809975.75 640.9886329 6719931.381 297863.5794 19.06320581 1490625.492 18858773.32 686562.3839 2924604.536 2011768.245 137419543.5 3889505.611 5464.894324 10637659.9 1316.488523 0.1426224951 189552.7875 378.9796853 126033.1069 7379.753848 2233262.016 159.1883906 4265.233682 8272508.891 4864.501024 27789142.64 11481188.95 4682563.07 23213746.96 4240290.899 108371.2906 15152843.18 1288838.594 67710179.08 0.858661976 10075953.36 37711.38866 773.9856944 10253005.86 16840525.33 19504424.82 12314.29416 181028.6248 64356180.31 4043601.349 +76156.59187 6066319.695 24349893.89 251.4456231 361759.1011 5362082.236 545948.9498 30315461.83 3536.590465 12890173.08 15.36456993 118342.5225 95453.49079 13271305.81 858918.9271 190209.3388 1.909771506 4582000.265 8681766.442 2582388.065 7140945.622 51.05469803 64288.9497 981224.2474 35495.70593 94940764.86 1232358.074 3894.043545 11648142.61 10378327.92 34023391.67 91154263.68 881547.0331 10646059.79 1530106.45 19.5530356 4162299.807 548.6096068 20578116.36 5.368705472 152536.5466 13666.29298 36.53542046 115182030.2 10452112.24 436.8710354 22023.39046 11251849.01 1315543 1281469.064 7260619.774 15349925.77 540.5002472 5351.065655 1987.328578 26977023.73 772185.3144 179.0237111 10366028.26 218614.3583 24631.38271 33.51228828 1446572.85 573.6287101 7056.319887 43648605.42 173807.5488 19016225.69 9137992.044 11133065.15 47260357.93 837.6619412 8080027.607 5133756.368 7029497.001 5526595.27 325349.085 45596.59901 49002559.08 672165.8525 6.344870179 14011527.12 2660.581554 24964.10065 726289.6191 33961.29532 270876.6886 997.4884593 286092.1196 3461084.051 +9340299.679 96389.18932 3447260.548 1038939.029 7142797.618 225457.8464 2816459.282 432322.0082 10436116.57 296404.3154 6855425.21 42739820.13 19.30061075 41703510.43 6875325.201 72770.90064 5766.269484 7.208911289e-08 842834.0318 704046.49 22064253.57 8259983.68 36.2689639 1.437506883 794421.2491 7927016.128 1392401.524 42522144.73 10842039.53 8235108.522 28311430.42 3.870444729e-05 4801867.905 128022.8161 30274849.48 80443654.33 236.5015743 3534355.919 9774545.581 25.19269775 15253520.59 27382.12937 65940635.04 197.3653953 16.99202174 4196.963248 136.5707018 3.790991339e-11 7194.722921 3350989.262 2934514.201 902.1588681 0.06899945841 151124.0483 195.6305379 3444.184729 3687314.699 16917064.63 834774.758 7332565.796 8316787.457 8814282.761 21619088.4 36189.66066 3054419.453 68.99873384 4842665.473 8305.936369 92.00218366 3361.784117 10178.6252 498979.2392 9114116.712 12909886.7 19312004.44 4107.162555 30331972.44 12847047.29 39604148.75 15797818.01 7573359.992 5091298.516 15502329.06 14827988.54 0.6936361397 101159.9262 998.5219166 5017271.319 797.9940331 50972570.74 +20199375.67 20.21484304 422624.7918 544221.4343 555622.521 0.02005344815 8.53756049 12603238.34 3726873.531 9293606.716 4314018.219 219369.9003 19357735.7 2156870.622 1192209.749 36534361.92 25271118.42 7639.563135 31381819.94 6726878.534 126535.8209 51.32911203 61633.37736 666582.9711 1374.093302 122693.7315 9712572.196 69019.23356 55242.44781 37788.73436 387742.0869 0.0278056517 0.009859365377 1576.17882 211564.4543 38680168.24 9481462.721 1682801.571 53.32183356 1275.575362 4071254.039 754803.8878 43437.51987 1599036.627 8043685.953 30393.86105 1048495.128 832820.3121 1237.755213 20.95056894 4437168.563 7233755.662 683221.2724 22477.1175 0.3046664749 24489.35476 20188498.52 1228859.385 2153651.753 4.007341002e-05 1480394.964 8145947.473 178.5216613 8810.344549 8.278320548 5308381.435 11911404.37 4782651.355 47510199.15 119357.6871 7.555966104 0.04993770136 799683.5596 19520302.18 435152.2496 1815.677214 7842782.163 22549848.96 8.138463174e-05 6911.661356 0.5760477621 122562.6052 987997.2502 918.0105504 413436.3568 7.944209022 24139312.33 44205.21316 0.1353084613 90518.95401 +17171107.98 405.2571822 461383.5346 2883369.799 7579070.955 376492.9661 4696512.796 4557499.44 47295.14001 235504.0308 2698.01091 1.717237501 600.248203 1809224.709 368659.8514 881.71591 1128.842838 0.02201417812 55493814.23 10232327.14 33211037.62 0.0001563659729 964092.9553 51175.54122 295281.9599 14332194.17 5991763.226 0.1581533587 66425010.83 806492.3702 956.3152818 28344092.1 33586021.66 34026880.76 66.1179096 85548013.14 961191.361 0.04554502812 85527.30252 173535.2946 4749764.594 5349684.908 19250.70687 562685.7377 710480.5698 28516174.76 32943920.91 96513.42667 6.171639606 4964.166081 19043275.7 18303865.92 11974961.35 4856.695054 45234.19033 25515336.49 31728856.92 602014.8741 16463757.2 4062472.427 281260.5083 15030011.35 15043.70782 13491265.88 218.246241 7.525376972 213219.6575 53464693.87 12218467.52 20406094.71 28687.12731 4854830.068 2854989.055 279273.5896 146947.0834 12995.69737 37049808.85 123.6303266 7415955.207 2214688.007 6147426.826 32347.37229 1087.728681 7968.511588 2037030.081 57754096.96 50187.78422 13357.29435 61081810.4 0.008319973975 +8247897.332 1746389.18 728.1304679 1589.121014 50663381.71 230.0198371 592601.8371 5016664.854 404.7647205 206.7302766 12091418.53 1197716.794 42351.62534 9.907918578 17352900.6 1488569.716 105.4931512 54539509.95 489.961349 487.9838652 8582304.877 41810.83846 25876516.84 31137.0685 135927.4045 3005249.567 44105.02644 26502808.08 336122.866 66.03896583 738.3740873 2.457630486 1704176.021 274635.2531 49648550.56 16983.14575 2104153.29 55971180.77 303446.1229 32393042.76 36281765.46 21881922.41 294973.241 5328254.972 2.823009151 11.18824262 37064698.23 0.0001465107946 0.8827142597 835518.0545 139.4878761 0.7388635711 5312078.139 27606.958 12585891.04 24627.0533 3591.880911 3510419.734 90830.9737 15456.30561 1040.50773 23786167.32 1483787.743 373061.9124 105481.6906 188500.1242 75011673.84 4799.948247 961517.3645 26.5374072 50661661.31 54474.17854 3933851.238 23936944.49 198333880.4 14143.52941 20332205.74 753092.5736 1082547.276 274.1817373 16.43975455 7590422.721 41805632.77 19864833.85 19534917.64 36837310.98 0.01103771444 0.00959671321 11000064.73 20752358.15 +# Events [PSD_cut/PSD_cut.dat] N: +13 16 13 11 11 15 11 9 12 7 20 6 11 9 11 15 15 6 16 6 5 11 10 14 16 6 8 17 6 12 12 13 6 11 10 12 9 17 9 12 13 13 17 11 8 6 6 16 4 9 8 14 7 16 11 9 14 10 13 7 16 8 17 15 6 8 14 5 10 11 8 9 13 13 14 12 5 11 20 9 15 14 10 6 7 8 11 16 7 11 +10 8 15 12 12 17 12 10 8 9 12 12 12 11 8 6 6 8 5 8 8 14 12 13 8 10 8 7 13 11 13 11 11 9 12 16 9 13 12 7 8 6 10 14 12 6 10 8 8 18 10 11 15 13 11 12 6 10 9 10 18 7 6 16 9 12 15 11 14 10 6 7 15 13 13 16 18 14 15 11 14 8 16 11 10 9 7 9 13 4 +15 8 9 14 13 10 8 12 13 11 12 12 11 9 17 10 7 14 11 6 12 3 7 6 11 7 8 14 6 11 7 13 14 17 12 12 11 7 13 9 8 12 14 4 14 6 11 6 11 6 18 12 13 18 21 15 13 12 11 7 5 13 9 3 7 10 7 10 11 9 11 5 11 8 7 13 14 10 12 10 12 11 15 8 10 4 18 16 9 9 +8 10 14 13 6 9 11 15 16 6 10 10 10 14 10 12 9 17 9 7 13 7 8 11 8 16 14 11 15 10 8 9 7 6 13 9 17 13 12 12 7 16 11 13 14 11 16 17 11 12 19 5 8 10 15 6 7 15 8 11 12 9 5 7 16 17 14 9 6 7 13 16 14 3 9 10 12 9 11 11 7 13 14 10 10 7 12 15 10 10 +13 9 16 11 15 9 9 7 12 16 12 12 9 9 11 8 9 11 12 10 12 10 10 13 12 5 13 14 9 10 16 17 6 8 10 13 9 8 6 16 10 11 12 12 12 14 10 9 14 4 15 9 12 8 9 8 11 15 8 10 11 15 6 11 12 7 13 11 8 17 9 15 17 13 7 15 9 7 10 12 10 16 15 8 13 10 16 9 14 6 +11 12 19 11 13 14 11 14 11 8 10 14 10 10 11 10 16 14 7 18 11 8 16 14 13 13 9 11 10 7 11 15 7 9 3 14 14 12 13 11 7 11 10 8 10 12 12 7 5 15 13 13 11 14 16 5 16 9 10 13 18 4 13 14 11 13 12 9 15 16 15 11 10 12 8 10 10 10 6 10 13 12 12 8 11 7 14 12 11 10 +12 9 11 10 11 10 11 13 8 11 11 12 10 19 15 7 7 6 12 10 11 11 13 15 15 15 14 8 16 12 10 20 10 13 7 9 5 11 10 12 11 12 11 4 12 19 12 10 10 9 10 17 18 16 9 10 9 11 16 8 18 5 9 10 12 7 13 9 19 16 9 15 11 14 5 8 16 4 13 10 12 14 10 13 8 15 11 17 16 11 +6 11 11 10 7 11 8 13 13 16 13 8 10 15 12 10 5 7 10 10 8 12 9 7 13 12 16 8 6 8 11 12 4 10 14 12 11 13 13 14 11 9 10 11 14 12 17 10 8 11 18 13 13 15 14 14 7 17 15 8 13 13 6 7 11 8 14 11 11 12 14 11 11 9 11 10 13 8 11 16 14 9 12 12 12 10 6 18 3 16 +7 12 10 12 7 12 11 11 7 14 9 10 8 10 20 9 12 15 14 5 9 14 10 10 12 10 18 6 7 11 10 14 14 12 9 11 10 16 5 18 9 8 13 13 8 8 13 10 5 11 8 12 9 12 5 11 13 10 7 11 8 11 17 3 13 12 12 5 10 14 9 7 17 5 10 11 5 14 7 24 11 9 11 12 15 7 10 12 8 10 +10 12 15 8 8 8 9 4 16 14 9 14 10 18 8 12 16 7 13 15 13 17 9 7 14 13 13 8 18 9 10 7 7 3 5 15 7 9 11 12 8 13 19 15 5 9 9 12 15 15 23 10 13 6 8 6 14 9 11 13 13 3 9 12 13 6 13 13 16 9 11 10 11 9 12 17 12 14 14 10 6 8 9 11 15 12 11 8 15 7 +10 12 17 10 17 13 13 17 9 18 16 9 12 17 12 8 7 12 9 6 7 11 14 20 19 9 8 10 10 8 9 16 11 10 12 13 12 12 2 6 12 9 6 9 6 13 8 11 7 11 10 8 11 14 8 6 8 9 11 11 12 13 9 14 11 12 13 13 11 11 9 5 12 10 12 12 16 13 3 16 12 11 5 14 11 6 6 9 7 17 +16 6 13 8 13 16 12 11 10 10 10 21 9 16 6 10 10 14 10 11 7 8 9 11 9 14 13 14 11 9 9 10 13 14 11 9 13 10 10 10 9 4 8 10 11 11 12 17 9 10 12 7 10 9 11 9 7 8 11 18 7 9 11 9 11 13 16 14 16 11 8 11 10 20 8 4 9 11 9 7 11 19 6 4 11 13 11 15 18 15 +9 12 11 10 9 12 8 16 9 14 9 13 9 10 7 11 9 13 10 6 12 17 12 13 9 10 10 9 17 10 13 18 10 6 9 14 13 5 6 10 11 18 6 11 16 10 11 9 11 14 16 14 11 4 6 16 17 9 6 6 12 6 9 9 10 9 14 4 6 8 10 16 10 7 10 16 15 10 12 10 9 12 11 7 8 8 12 17 8 13 +8 2 11 9 17 16 9 8 6 5 8 6 7 9 8 10 10 7 11 18 9 10 9 11 15 12 6 12 7 9 16 19 12 11 9 9 21 18 12 11 11 11 12 9 7 14 13 10 17 14 11 5 13 15 6 14 11 11 12 9 10 7 11 18 6 11 15 8 17 16 13 11 10 10 7 11 12 7 6 14 10 8 10 11 11 12 12 13 13 9 +11 13 13 8 9 13 15 8 13 8 12 11 13 11 14 7 7 13 13 13 9 7 5 11 15 14 16 11 8 7 9 13 9 10 5 14 10 5 12 9 10 18 10 14 10 8 17 12 10 11 7 9 13 10 11 13 9 10 8 6 12 7 5 3 17 9 14 19 8 9 12 14 18 12 7 10 10 8 9 11 11 8 5 13 15 13 8 10 8 13 +11 13 9 9 16 12 15 11 7 16 11 9 12 13 18 9 8 10 9 13 12 12 12 10 15 9 10 16 14 16 6 16 8 8 8 7 9 10 17 13 12 16 14 12 12 7 10 6 10 11 14 12 6 17 9 7 11 14 4 12 10 9 10 12 9 15 10 9 6 13 12 7 8 7 13 6 12 16 13 8 10 13 7 15 10 7 11 11 7 5 +8 9 11 9 16 14 5 10 15 12 12 11 12 14 12 14 9 16 10 12 11 15 9 10 9 9 7 8 11 9 10 8 15 14 18 14 5 10 9 15 14 12 11 14 14 9 10 12 11 8 14 12 16 10 10 12 10 12 4 7 8 7 13 10 8 11 10 10 10 12 19 10 10 10 18 10 8 7 20 12 9 8 9 8 16 9 20 16 14 12 +14 10 6 9 12 10 11 13 18 9 12 13 13 18 11 10 10 10 14 8 11 10 6 7 8 10 16 16 9 9 13 10 13 10 7 13 7 15 8 11 10 8 11 13 12 11 13 9 9 17 8 8 9 9 14 6 11 17 5 28 5 17 9 12 14 12 3 9 9 14 14 11 8 11 10 15 9 11 12 13 9 9 12 11 7 10 19 12 12 12 +12 10 13 8 5 7 23 12 14 14 15 10 11 11 12 11 12 6 7 11 16 19 6 13 9 4 5 14 11 9 12 14 12 15 12 8 11 6 11 7 10 9 13 11 12 16 8 14 7 10 10 10 14 6 10 7 7 4 12 11 10 11 10 15 8 9 14 10 11 14 9 15 13 7 16 7 10 12 7 17 19 9 11 9 8 8 5 12 11 8 +14 4 9 11 9 11 10 7 12 14 7 11 11 11 10 15 14 16 13 9 9 8 6 13 12 10 13 6 12 9 9 17 12 19 10 9 13 12 16 14 11 10 6 6 15 15 12 9 12 7 15 12 13 10 14 7 7 10 15 8 8 13 14 9 14 13 6 10 13 12 6 5 12 9 10 8 8 11 17 10 12 9 5 8 11 8 9 15 9 9 +9 12 16 10 15 21 12 16 9 14 9 13 8 4 10 8 7 13 15 14 6 21 14 9 20 10 5 8 11 15 12 10 8 10 5 15 13 16 14 17 11 14 11 6 7 10 9 15 10 10 12 5 12 12 16 4 6 5 15 12 16 7 8 7 11 11 9 6 8 15 11 7 16 15 11 12 10 12 16 12 12 10 5 14 5 11 10 12 12 7 +13 8 13 9 11 5 11 15 4 2 5 11 9 6 17 11 7 10 13 10 11 13 11 16 9 12 12 5 13 9 7 9 12 7 7 11 13 10 9 10 8 8 6 11 11 11 11 14 8 17 15 11 8 7 15 14 13 10 13 13 17 5 11 18 14 10 9 15 12 14 16 10 10 11 10 8 12 9 10 8 13 12 8 17 9 12 9 8 11 16 +23 7 18 12 15 11 9 7 14 7 8 9 8 11 10 13 12 14 7 10 11 12 6 9 9 7 13 12 6 14 10 10 9 15 7 10 15 9 11 6 9 15 18 12 16 9 12 11 9 12 13 7 6 11 16 15 6 7 13 15 13 10 7 15 10 17 12 5 12 6 10 13 11 6 11 15 10 10 11 11 10 15 9 12 11 12 13 4 17 19 +15 10 10 15 11 9 14 7 12 10 12 10 11 18 12 15 8 14 10 9 11 14 6 11 12 10 14 7 7 8 12 8 11 8 12 11 10 9 11 9 5 11 7 4 4 11 11 12 15 7 12 9 7 8 12 24 11 8 12 9 5 12 17 14 10 13 11 10 11 10 8 8 9 8 13 7 11 9 9 11 10 7 13 11 11 16 6 10 16 12 +8 11 15 6 16 8 4 12 8 9 10 14 17 12 7 14 8 10 12 15 10 12 8 16 11 10 11 12 6 6 16 8 10 10 9 10 16 15 7 10 16 9 19 6 8 11 11 7 13 7 13 15 6 7 9 14 7 14 20 17 8 13 6 8 11 7 13 6 9 7 9 15 12 15 12 14 14 8 12 8 11 8 11 13 16 8 9 15 11 10 +11 11 17 14 10 8 8 14 7 4 8 14 16 11 12 11 9 17 9 13 12 9 6 12 10 9 9 13 9 14 13 8 8 14 17 4 8 14 10 11 13 9 11 9 7 9 8 12 8 11 10 16 5 15 8 7 12 12 4 9 14 8 10 10 11 9 15 11 14 6 14 11 15 10 15 11 12 10 9 10 14 13 9 13 8 9 10 14 10 11 +11 12 14 17 14 13 13 11 12 10 9 6 7 13 8 17 13 9 7 14 10 12 8 6 15 10 10 9 12 11 18 7 13 11 11 10 10 13 12 13 19 8 9 13 10 10 15 4 12 8 11 11 13 9 11 7 14 11 14 11 14 13 14 13 11 6 9 16 8 8 15 11 8 3 15 7 10 16 13 6 7 9 7 9 15 13 11 11 9 7 +12 13 12 11 14 11 7 12 10 13 9 7 12 10 10 14 11 9 18 9 11 12 13 12 15 12 11 18 15 13 8 20 10 4 10 13 10 6 8 9 16 7 8 7 18 9 8 11 11 11 6 13 12 15 4 10 12 21 10 14 16 15 14 9 17 12 12 15 13 11 8 14 14 13 9 13 12 8 9 10 11 14 12 9 9 13 15 11 7 12 +3 12 9 12 19 10 15 13 17 12 10 9 4 15 15 9 13 12 6 7 12 9 9 9 7 12 21 9 12 8 8 12 10 10 12 9 9 16 8 11 12 9 8 14 14 5 15 8 6 14 9 6 10 14 14 10 14 14 10 10 10 6 15 10 13 9 13 15 9 8 15 12 10 6 17 10 16 11 14 11 8 11 6 9 9 11 11 11 10 10 +11 12 8 5 16 11 10 9 15 6 11 7 7 9 10 16 13 11 13 6 11 15 19 12 12 16 9 12 11 10 7 16 6 15 11 12 10 11 13 11 6 10 18 11 8 15 8 12 13 15 11 9 13 8 12 12 11 13 8 7 12 13 10 9 10 11 9 14 15 6 13 6 15 6 10 12 8 18 15 10 5 9 8 4 7 12 13 10 15 10 +9 13 11 11 10 13 10 12 10 9 7 9 13 13 13 10 10 5 10 12 13 8 9 15 10 9 13 10 10 17 9 2 13 8 16 11 12 13 19 15 13 7 12 8 5 11 9 19 10 12 9 11 11 17 12 20 8 7 12 14 8 11 15 13 7 11 9 13 13 10 6 15 11 12 14 7 7 14 8 14 10 9 16 9 15 9 10 10 11 15 +9 13 8 10 13 9 8 11 15 12 7 15 16 16 14 14 9 8 11 14 13 10 15 12 11 13 19 9 13 8 15 15 10 13 14 12 12 14 15 9 12 10 11 9 11 10 12 11 4 11 10 6 14 9 11 9 10 7 11 7 9 10 7 9 7 15 6 10 13 10 16 12 9 12 16 8 6 10 10 11 13 17 10 12 16 13 13 13 10 9 +11 9 12 3 12 7 12 10 22 15 7 17 17 12 5 15 6 9 9 10 11 11 14 10 9 19 8 10 11 17 7 10 5 8 14 12 12 8 9 19 8 6 13 10 14 8 9 10 10 10 9 11 15 6 7 19 13 12 11 11 10 10 10 9 9 10 11 10 8 11 12 10 8 12 8 14 13 11 13 7 6 9 13 15 9 9 9 9 11 10 +9 12 11 11 9 6 7 12 12 15 18 11 15 8 12 12 9 14 9 13 9 17 10 15 11 6 19 11 9 15 8 13 7 12 15 13 15 15 8 7 8 9 9 9 12 10 8 9 16 9 14 8 17 4 5 9 12 9 8 7 9 10 18 10 14 7 8 11 15 12 10 13 8 8 6 9 8 21 18 10 9 9 8 14 14 13 8 13 10 14 +14 12 9 10 13 7 11 9 14 11 9 10 14 12 9 8 9 11 8 13 10 13 14 11 12 8 5 12 10 8 10 6 13 10 9 13 8 4 11 12 10 10 9 3 8 14 8 12 10 16 12 14 20 12 10 11 8 11 15 10 12 11 7 10 15 13 15 10 10 12 10 9 10 12 12 13 11 20 11 15 1 13 12 8 16 8 10 14 9 9 +10 13 6 8 12 7 11 12 17 6 6 15 8 13 11 12 6 9 11 14 19 7 8 8 11 5 12 10 4 14 9 9 8 12 12 11 7 13 11 18 11 15 6 13 12 15 11 12 7 11 16 11 7 18 9 7 13 16 12 10 12 12 10 9 9 9 14 10 11 10 12 10 12 17 17 16 12 14 9 8 11 10 9 13 8 6 11 12 9 10 +6 9 6 10 18 11 8 12 12 13 13 7 11 11 14 10 8 14 14 6 13 6 9 14 13 8 13 12 15 11 12 11 11 10 5 5 8 15 8 16 15 5 11 7 20 7 14 10 12 6 14 9 10 11 10 7 9 12 13 17 10 10 11 16 10 16 12 10 6 14 10 9 9 10 15 13 15 11 6 9 9 13 16 10 11 12 18 3 13 15 +10 5 11 15 5 12 11 11 6 11 14 18 13 13 6 12 12 11 7 17 8 7 7 13 9 19 8 11 7 5 7 12 18 13 10 11 11 11 11 17 8 8 21 7 8 11 14 10 16 9 10 8 9 10 16 12 13 16 12 14 18 11 18 16 15 14 12 12 9 8 12 12 10 13 11 7 8 14 11 9 13 11 14 18 9 9 11 15 9 12 +12 11 9 9 14 14 12 10 6 13 13 13 8 8 8 12 8 9 9 10 8 9 10 15 10 12 9 17 11 8 11 9 10 21 7 9 12 7 7 15 8 13 7 15 15 12 5 12 4 12 13 8 13 9 5 13 11 16 13 7 9 12 8 9 16 14 17 12 14 13 13 6 8 8 19 11 19 12 18 9 6 9 8 17 11 8 9 8 12 5 +9 8 10 11 9 9 15 18 12 16 11 12 11 14 12 9 20 12 9 11 9 9 8 17 10 9 16 12 9 9 7 9 14 8 12 14 11 8 9 11 17 12 12 14 15 14 7 8 9 13 12 7 10 9 9 17 17 13 14 12 7 12 11 8 11 12 5 11 10 13 16 8 7 7 10 8 4 11 13 13 10 23 12 8 12 9 11 16 16 9 +11 10 16 8 5 9 6 9 8 7 9 14 14 16 10 12 11 15 7 6 6 10 15 4 10 17 10 9 13 12 14 12 10 13 6 10 8 16 15 8 11 13 13 11 12 11 10 6 7 17 8 10 12 11 9 10 6 15 12 16 8 7 13 10 19 18 5 9 8 9 9 11 12 13 12 8 7 7 9 11 7 14 11 11 10 6 6 10 14 10 +7 13 14 13 11 9 7 8 14 7 10 16 8 15 7 8 13 7 19 11 11 13 7 8 7 14 14 8 12 7 10 11 10 7 16 14 11 13 6 9 10 13 13 8 10 8 9 15 13 7 8 11 15 11 15 12 5 4 7 10 12 12 16 11 7 8 11 13 19 17 7 13 3 15 17 20 13 10 21 12 6 11 13 15 16 11 13 10 8 10 +5 8 8 14 11 10 8 4 11 10 11 16 11 15 8 11 15 12 11 11 10 4 9 17 12 8 13 7 14 14 8 12 13 15 11 19 10 12 18 13 20 15 15 13 13 10 12 23 12 15 16 9 14 13 9 14 7 8 10 11 10 11 5 11 9 14 15 11 9 6 16 12 11 13 6 15 11 12 10 11 8 8 15 6 11 15 6 18 13 16 +7 9 9 7 12 7 20 12 12 11 10 9 6 13 18 10 9 13 12 9 12 18 5 10 11 10 18 8 9 8 12 8 10 13 12 15 15 11 11 14 8 7 16 15 10 12 9 13 11 14 8 16 9 8 10 11 7 13 8 9 14 12 13 11 15 10 11 17 13 10 8 9 17 8 16 11 17 10 13 10 13 13 10 8 17 13 12 13 11 9 +8 14 14 13 14 7 12 12 16 7 12 14 12 10 12 8 9 16 13 9 17 14 5 10 12 15 6 8 10 18 6 13 14 11 13 14 9 5 12 13 11 13 8 6 15 10 7 11 18 5 6 9 9 13 12 9 9 11 8 9 10 8 13 15 17 4 6 8 7 11 10 10 7 20 8 7 11 9 14 16 19 13 15 11 9 14 19 12 7 10 +13 9 16 9 7 13 14 11 11 10 9 11 14 12 17 11 6 11 10 8 10 12 15 8 19 11 8 10 7 10 13 11 16 17 7 13 8 6 15 13 13 16 10 15 11 10 7 7 7 8 10 11 9 8 7 13 8 10 16 11 5 12 9 7 9 7 16 20 13 12 7 7 8 10 14 7 12 13 11 3 16 14 12 13 11 19 12 7 15 10 +16 12 5 12 8 14 12 13 8 8 9 13 10 16 10 13 10 10 11 6 13 8 8 8 13 13 15 16 9 14 10 11 8 9 16 11 7 18 8 10 5 13 12 19 11 8 12 11 12 14 5 12 15 15 7 16 8 17 12 16 10 9 12 12 10 16 14 13 8 11 13 10 12 8 7 15 12 14 11 5 8 9 8 15 11 9 13 11 5 7 +13 9 8 10 13 8 14 10 13 7 11 16 9 14 9 13 6 15 11 13 20 4 7 10 11 3 10 12 12 16 11 6 14 13 13 14 14 15 4 17 13 14 7 12 11 11 12 11 11 10 11 12 13 9 10 8 14 10 3 12 6 15 9 14 8 10 11 8 6 10 9 11 13 9 7 7 20 15 9 4 12 8 6 10 14 15 15 11 11 11 +7 16 14 13 13 8 11 12 8 10 9 7 10 9 11 13 9 8 14 10 15 12 19 11 13 9 11 11 15 8 16 11 13 8 15 8 8 10 12 11 8 8 14 9 9 13 3 7 13 11 6 11 13 10 6 9 7 8 11 18 10 11 9 6 14 10 16 10 16 15 10 14 15 12 13 12 9 7 10 10 12 7 12 15 9 8 6 11 11 9 +6 6 4 7 12 9 6 13 7 19 14 9 13 15 8 14 8 11 10 9 6 11 13 13 10 10 10 11 10 7 12 13 8 10 7 9 12 6 13 16 9 13 11 8 11 7 12 15 9 16 11 8 11 11 9 8 12 17 4 10 7 9 9 15 12 9 15 11 9 10 9 10 5 12 9 14 11 9 8 8 11 6 11 11 7 9 15 10 12 13 +10 13 14 12 7 9 7 9 3 15 7 4 10 8 12 11 10 14 13 9 12 7 9 8 13 10 8 11 15 7 16 17 18 13 12 6 15 9 18 14 7 10 18 17 15 14 9 8 10 7 12 6 9 10 11 7 19 9 7 15 11 11 8 10 13 11 12 11 12 13 11 11 11 6 14 12 5 7 9 8 5 15 8 10 10 10 11 10 10 13 +15 5 12 15 8 5 12 11 13 10 14 10 9 13 10 8 9 9 9 15 15 9 7 11 8 15 11 11 14 10 17 12 6 9 16 7 7 5 13 11 11 12 16 7 8 14 14 8 7 15 14 13 15 10 13 12 5 16 10 14 10 14 17 8 10 9 20 12 11 7 7 9 14 11 15 8 14 9 9 12 18 15 4 9 16 7 12 8 14 10 +10 10 12 15 11 12 15 14 13 8 14 7 8 3 15 13 13 15 11 8 14 12 7 9 18 14 5 10 14 12 7 9 6 9 12 12 11 13 10 11 14 11 10 13 10 14 15 10 13 12 14 8 10 20 10 13 9 11 9 19 12 12 10 8 8 12 16 17 11 14 16 15 14 14 10 12 16 9 11 10 8 6 9 10 11 7 13 15 14 11 +9 9 16 15 14 11 16 13 12 6 8 13 10 12 12 6 15 12 12 12 10 13 9 9 14 13 18 14 10 10 8 10 7 8 14 8 10 12 17 7 14 12 9 10 8 11 9 8 17 7 18 16 9 7 11 11 4 12 12 14 14 8 16 11 8 9 12 19 14 13 15 9 11 16 15 17 8 10 17 15 8 10 6 5 13 9 8 10 9 12 +14 7 14 9 14 13 12 10 12 6 11 13 10 17 6 11 10 14 13 11 13 12 16 13 10 9 13 6 12 6 10 10 12 8 17 11 8 16 12 15 8 6 11 11 14 15 8 11 10 10 6 8 17 12 14 11 12 15 9 12 13 8 18 11 16 11 6 13 11 13 10 12 9 9 8 16 18 15 12 12 12 14 13 13 14 10 9 17 8 8 +13 12 12 8 13 10 7 15 13 15 10 8 12 3 8 15 11 10 9 6 17 11 13 16 10 11 12 14 11 12 14 15 10 9 10 10 6 8 10 14 21 15 10 9 13 15 5 10 17 9 15 9 11 9 9 9 11 12 12 8 7 6 9 11 8 12 9 9 12 12 15 9 17 14 8 12 13 13 13 12 7 5 12 12 15 16 5 8 15 10 +10 11 9 11 14 12 17 11 10 13 10 13 8 11 20 9 10 6 7 7 10 11 6 11 11 13 8 11 16 13 14 9 13 15 18 10 11 8 17 8 11 10 8 12 16 9 16 9 17 12 15 9 7 15 9 8 9 11 15 12 12 8 5 11 12 11 9 8 15 15 6 10 11 14 7 8 19 13 11 15 8 6 8 10 10 13 11 7 11 11 +17 12 9 13 11 8 13 12 20 12 10 12 9 8 7 9 12 13 11 12 13 13 11 5 10 9 17 4 11 12 11 11 9 10 8 6 15 17 12 11 5 10 6 14 4 10 18 3 10 8 12 7 7 10 12 12 13 9 12 14 12 14 8 16 12 11 10 12 10 8 11 16 15 7 10 15 11 13 12 17 8 15 8 15 12 11 8 13 9 12 +11 4 7 15 15 16 10 12 10 12 12 12 11 13 14 10 14 6 17 7 12 16 14 11 7 5 13 4 11 10 20 6 12 13 7 10 12 16 11 15 10 15 14 12 15 8 11 10 7 14 5 12 15 8 7 10 8 7 12 7 9 11 10 15 18 21 13 13 17 15 12 9 9 10 13 6 8 13 11 11 11 13 8 11 16 11 10 7 15 7 +13 21 16 8 14 9 8 20 8 19 9 11 16 9 12 12 11 8 5 10 13 8 10 13 10 11 10 10 12 14 14 9 15 12 11 10 13 10 20 12 9 7 5 7 9 6 7 8 8 4 7 11 18 5 7 8 8 13 16 13 10 9 15 13 14 14 13 8 10 9 12 9 9 9 18 12 16 11 12 10 13 14 10 12 14 11 11 12 8 14 +14 13 11 14 13 10 12 12 22 10 11 13 10 17 13 9 8 18 20 9 14 8 10 14 10 8 11 11 11 6 13 15 12 21 12 10 17 14 11 10 9 10 8 9 7 13 12 17 9 9 10 9 8 7 19 6 15 12 16 11 11 11 6 10 12 6 13 7 16 14 10 15 9 15 13 12 13 10 9 11 13 14 6 16 8 10 15 11 3 9 +10 12 12 8 13 11 14 9 8 9 9 12 12 10 7 19 10 11 5 13 8 15 11 10 6 10 15 17 8 12 15 11 13 12 13 10 12 15 10 9 9 15 4 10 8 13 6 5 13 10 15 11 9 12 14 12 10 11 6 11 16 3 20 12 12 7 15 10 14 8 5 12 6 10 2 13 10 11 11 12 8 7 15 3 11 16 8 12 19 9 +13 7 9 6 10 11 17 9 14 5 9 14 9 8 11 9 11 17 10 16 10 3 6 13 13 15 17 11 9 11 14 14 13 7 10 10 5 14 10 11 10 13 14 7 7 16 9 7 7 10 12 5 11 11 10 11 10 12 17 10 16 10 12 5 18 8 6 12 9 6 7 10 16 12 13 10 14 3 11 11 15 10 14 16 12 12 15 18 9 12 +7 11 18 11 10 9 10 13 8 15 16 16 12 10 10 10 15 6 5 15 12 9 8 13 17 16 12 11 18 16 15 13 9 9 15 9 17 9 10 20 12 9 16 13 11 19 7 7 12 10 10 10 18 7 14 8 15 8 9 12 15 17 10 11 7 20 10 13 7 13 11 8 12 12 11 12 8 7 7 9 14 11 14 9 9 5 6 18 9 9 +14 8 17 9 15 14 10 7 8 8 12 7 14 13 8 9 10 13 10 8 10 8 8 13 6 8 14 10 9 7 15 16 10 7 11 12 14 14 10 14 14 12 13 11 13 3 8 10 11 11 18 16 9 12 11 12 6 11 9 14 10 13 9 5 4 7 11 13 9 9 9 9 11 10 14 21 9 8 15 9 10 15 12 8 7 10 10 9 6 11 +16 8 13 9 7 15 10 7 14 14 8 15 16 15 6 13 9 15 15 7 11 11 16 11 16 13 9 5 9 12 11 12 11 13 15 19 10 8 14 13 8 3 15 9 10 16 17 8 11 11 17 8 7 8 11 8 7 15 6 9 18 16 9 7 7 14 14 13 11 10 10 13 7 7 11 9 17 8 8 11 11 17 16 16 12 8 6 11 11 13 +10 13 10 12 8 17 11 16 12 7 14 7 18 15 10 13 11 9 14 8 13 9 7 13 11 12 8 12 13 16 13 6 13 15 9 23 14 15 7 9 10 11 12 6 14 5 13 15 9 7 8 12 10 8 6 11 11 10 5 13 11 10 15 10 10 10 6 12 10 12 16 10 12 9 9 10 7 13 12 12 6 11 11 9 8 15 14 15 10 12 +9 17 17 12 9 9 12 10 8 9 11 18 7 15 14 11 10 14 9 11 11 9 5 10 12 8 8 14 14 12 9 12 11 13 13 12 22 9 7 13 12 11 9 17 12 8 15 7 16 13 15 12 9 13 17 10 14 14 17 13 13 11 16 7 14 13 10 10 10 9 14 11 15 14 12 7 12 4 11 9 16 9 12 8 15 15 10 16 7 9 +14 10 14 7 16 10 6 15 11 7 8 14 18 15 17 16 18 7 8 13 9 14 15 12 10 10 14 13 8 12 5 14 10 7 7 16 14 14 11 8 8 13 16 10 7 8 8 9 15 13 17 12 13 8 14 13 6 9 17 7 8 9 9 7 12 15 9 8 14 17 15 17 8 11 6 7 16 12 14 13 4 8 12 8 6 10 4 6 5 10 +4 14 9 13 17 10 9 13 8 3 14 15 9 6 12 11 10 16 18 8 10 10 14 9 10 12 13 20 17 11 7 9 13 10 14 7 8 12 8 13 10 16 14 11 17 8 9 11 8 11 7 7 9 13 10 9 8 14 8 11 15 17 8 9 12 14 12 8 12 15 10 6 5 13 12 11 10 15 14 12 10 11 13 11 8 14 12 12 16 10 +7 11 12 7 9 5 10 7 9 9 11 11 10 13 11 9 13 12 7 10 11 9 15 9 12 14 6 9 19 14 17 10 11 13 10 10 10 6 18 12 9 10 6 9 12 14 12 17 12 10 17 8 8 10 10 15 14 12 7 15 19 10 11 12 11 9 9 10 10 15 17 5 8 10 5 9 9 12 12 5 9 13 5 12 7 7 11 8 12 11 +9 14 12 10 8 12 9 18 14 4 12 13 16 11 4 14 5 12 15 12 6 10 12 19 10 12 10 12 11 10 12 5 9 16 4 11 8 7 10 5 8 10 13 14 10 4 11 14 7 13 14 10 7 12 16 12 16 17 11 6 9 14 5 13 5 6 13 13 13 11 13 12 10 14 10 5 11 13 10 12 11 11 10 7 9 13 11 10 14 7 +13 9 8 9 6 19 11 11 6 10 11 12 7 16 12 7 3 10 16 10 12 15 14 15 13 8 10 13 16 16 14 13 7 12 11 12 4 7 13 8 7 14 17 10 13 8 9 6 13 16 11 11 13 10 8 8 13 9 10 10 14 8 16 17 8 7 11 9 11 10 9 6 9 10 13 12 12 11 17 13 10 13 9 15 8 8 12 11 13 16 +8 9 9 13 11 6 9 16 10 13 15 13 7 11 10 10 12 11 20 8 9 11 10 10 15 22 13 8 18 11 12 15 14 18 12 12 10 9 9 13 11 8 13 7 19 11 6 8 3 7 11 7 10 20 7 9 9 8 9 13 12 11 13 13 2 5 15 9 8 8 10 11 6 9 12 11 8 10 8 11 11 6 15 11 16 5 11 5 12 3 +11 14 8 6 15 17 12 11 8 20 10 11 8 19 16 6 6 8 16 15 15 7 11 9 20 8 14 14 13 12 13 10 10 20 9 10 14 14 14 10 14 12 18 9 13 14 11 16 15 11 11 14 15 14 12 14 14 11 12 9 9 12 10 13 10 14 10 11 13 8 17 16 10 14 19 12 15 8 17 12 15 12 12 10 8 12 7 15 13 7 +8 16 8 8 10 10 13 9 13 14 9 10 9 14 11 5 11 12 11 14 12 9 10 17 9 15 8 15 19 6 7 13 15 12 12 12 12 10 8 7 12 11 12 9 11 15 11 7 11 13 14 11 11 10 8 8 8 14 13 11 14 7 21 12 14 16 10 12 18 9 13 9 11 14 13 12 16 6 8 8 12 7 10 14 12 7 9 9 10 15 +10 15 9 9 15 9 14 11 11 6 14 7 9 18 8 12 14 12 6 9 12 13 9 9 13 13 10 10 8 15 17 14 8 11 9 8 7 10 12 10 14 8 11 7 8 6 10 10 13 15 7 16 13 9 11 9 19 14 7 12 12 5 10 14 6 13 12 9 15 9 16 24 7 11 8 6 7 12 15 21 5 16 20 9 12 7 7 10 11 15 +11 12 10 8 11 12 10 13 15 11 8 11 6 10 10 11 10 10 6 14 7 8 8 10 11 12 17 12 13 13 7 14 14 13 14 11 13 11 9 13 11 11 19 12 11 15 14 11 5 13 11 14 15 9 15 16 10 10 14 8 6 8 7 13 13 9 14 17 16 8 8 14 14 13 9 9 11 8 19 9 13 13 10 11 8 10 7 12 9 14 +9 12 12 16 6 13 10 17 14 7 13 15 6 16 13 10 8 13 12 11 11 8 15 15 8 6 12 7 13 14 16 12 12 13 11 9 10 11 16 11 11 18 15 12 13 5 12 16 7 8 9 6 16 14 11 8 17 14 10 15 12 18 15 6 13 9 8 10 11 12 14 11 9 4 12 7 10 10 9 11 7 13 14 10 16 7 8 15 10 9 +14 10 10 5 11 6 8 7 17 12 11 7 9 14 14 11 4 12 11 14 9 5 11 12 8 8 15 10 9 11 10 9 13 15 8 9 15 13 11 10 16 9 7 8 6 7 8 12 11 9 13 10 15 11 12 15 15 13 11 10 10 9 8 11 16 6 11 15 11 11 12 9 6 16 8 18 9 7 15 15 14 11 7 17 12 9 15 12 6 17 +3 7 18 10 14 6 9 9 12 15 14 11 11 16 11 12 12 13 9 7 9 11 15 9 13 12 17 14 9 12 12 15 11 6 16 9 6 4 7 11 7 11 16 17 11 10 10 8 10 10 20 9 9 13 8 10 12 8 13 7 7 11 10 10 18 14 14 11 13 12 19 12 11 12 11 26 13 13 15 8 11 7 9 15 9 15 12 17 10 15 +9 8 12 13 11 9 9 12 5 7 9 10 10 17 7 12 6 15 13 11 8 19 8 7 14 19 9 10 11 16 14 7 11 8 12 8 14 13 18 4 10 8 9 11 10 9 17 10 11 9 7 12 14 8 11 13 10 9 10 14 10 10 9 10 9 9 8 6 13 9 11 11 8 12 7 10 14 10 18 14 7 11 15 10 10 9 5 9 7 7 +11 9 8 8 11 7 8 13 7 7 12 9 14 12 8 12 7 9 5 18 7 9 13 10 10 12 13 9 7 9 9 11 10 5 8 18 11 15 10 9 13 6 11 16 10 16 14 12 9 10 12 22 9 11 11 17 12 14 12 6 12 13 15 6 12 12 7 12 10 10 16 13 17 12 6 16 15 6 11 9 15 10 9 9 11 12 8 14 9 15 +16 9 10 7 4 7 7 10 13 4 16 9 10 6 6 12 15 6 9 6 15 9 13 6 12 11 15 8 19 10 11 11 13 12 14 15 9 8 14 16 14 13 13 11 9 10 14 10 20 14 10 9 10 9 11 11 11 10 16 10 7 9 11 11 7 11 12 19 8 8 8 7 9 10 14 7 11 6 12 11 17 10 8 10 11 16 14 10 10 12 +8 12 14 14 9 7 19 7 11 9 11 15 8 11 19 13 13 7 17 16 7 9 13 10 10 9 15 12 22 6 6 8 14 12 11 8 14 8 6 12 6 12 15 7 8 10 11 9 11 8 17 8 11 14 20 10 12 9 11 9 11 15 10 4 10 9 7 17 7 10 14 17 9 9 10 11 10 14 9 8 8 15 12 11 7 17 15 13 14 13 +9 9 14 13 7 13 7 9 15 12 14 7 6 10 13 12 11 12 12 10 13 11 6 17 11 7 14 9 12 14 19 8 11 12 19 10 12 11 6 13 8 6 12 13 10 10 12 11 8 8 10 9 13 7 15 16 13 7 17 7 9 10 7 12 8 12 14 8 13 9 11 17 12 10 11 8 16 13 8 12 7 10 9 10 11 12 9 13 10 14 +8 9 12 8 12 8 10 12 12 13 11 11 11 7 10 7 11 12 14 7 11 19 16 9 10 11 15 8 4 11 12 8 11 17 12 16 13 6 24 6 13 12 8 9 5 11 12 3 14 13 12 10 7 12 11 12 14 8 11 12 14 12 7 10 8 9 14 14 8 12 10 6 11 11 15 7 10 13 10 14 12 6 8 16 8 15 11 13 11 12 +6 11 12 14 7 5 8 15 9 16 15 15 7 7 20 22 10 13 9 6 9 10 15 14 13 6 13 10 16 10 14 5 8 10 5 6 10 12 11 13 8 9 15 17 10 13 10 15 9 9 11 12 18 14 10 10 15 7 17 13 7 10 3 12 11 20 16 15 12 6 11 8 11 13 12 10 13 20 7 14 12 13 12 16 8 11 11 9 11 12 +11 7 10 14 10 17 14 15 11 7 16 6 8 9 10 12 16 12 18 12 12 8 11 9 15 11 17 10 11 12 11 9 8 15 14 11 9 8 12 15 7 13 9 11 11 12 9 6 9 11 15 14 12 10 12 15 19 11 13 15 13 5 8 9 10 6 14 13 10 12 9 11 8 9 7 9 11 11 10 14 7 11 13 12 15 15 11 13 12 13 +9 10 9 14 10 6 15 16 9 8 10 13 13 7 13 10 12 12 11 14 13 16 9 11 8 13 13 11 12 7 7 7 10 12 16 7 12 12 7 10 11 6 10 9 14 8 8 11 8 9 13 8 13 11 14 6 15 9 14 11 7 10 11 9 13 12 9 11 7 9 12 8 9 15 8 7 15 8 9 11 8 11 12 9 13 14 7 14 16 12 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/image.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/image.dat new file mode 100644 index 0000000000..64cac0a86b --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/image.dat @@ -0,0 +1,963 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_2d(300, 300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: sample_PSD +# position: 49.4198 0 -35.0741 +# title: Intensity Position Position Monitor (Square) per bin +# Ncount: 10622832 +# filename: image.dat +# statistics: X0=-0.00175213; dX=0.0706673; Y0=0.00192524; dY=0.080599; +# signal: Min=0; Max=3.7743e+08; Mean=33912.1; +# values: 3.05209e+09 4.42982e+08 2319 +# xvar: x +# yvar: y +# xlabel: x [m] +# ylabel: y [m] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.15 0.15 -0.15 0.15 +# variables: I I_err N +# Data [sample_PSD/image.dat] I: +0 0 0 0.008182332724 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.388851637e-21 0 0 0 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.816260113e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106.6344508 2.538529552e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.654408318e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.905930144e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 3.698285571e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.460462915e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88977.31414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.818068146e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.065062758e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18915.61156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.989532267e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44.7918693 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.629904579e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.906108499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.153734492e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19891.63396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.14679696e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14122741.65 0 0 0 0 0 0 0 0 0 0 0 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.181800599e-09 0 0 0 0 0 0 0 0 0 0 0 1.198406543e-27 0 0 3.696196465 0 0 0 0 0 0 4.550175764e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.427282771e-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 1.035064216e-27 0 0 0 0 0 0 0 0 0 2939104.557 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.921245068e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3871113161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33445917.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.534372561e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.381227214e-09 0 945.3035745 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.875945726e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008694365177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.526397324e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.477712708e-16 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01101538459 0 0 0 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.383050337e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.267159227e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1486.952764 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.638986848e-17 0 0 0 0 0 0 0 7041942.76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.48958924e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 16826348.95 0 0 0 0 0 0 0 0 0 0 0 0 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.154264547e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 353694.2632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15.48530107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.548156216e-08 0 0 0 0 0 5593.425139 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.263500756e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.241946228e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.377463665e-22 +9.252745561e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004997202123 0 0 0 0 0 0 0 0 0 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.86853437e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 761644.3927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.408667423e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.665977288e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.127066128e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 4.265603403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1064531166 0 0 0 0 0.5003511305 0 0 0 0 0 0 0 0 4741738.488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.269354712e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08463305178 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.487319515e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.04643207e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.436843744e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004389253556 0 0 0 0 0 0 0 0 0 7841409.309 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.511986263e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 693.2388792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.987492713e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.22182776e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.170747182e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.523332528e-32 0 0 0 0 0 0 0 0 0 0 9447973.546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 400120.5918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.015547502e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 176428.1379 0 0 0 0 0 0 0 0 2802786.072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001394348908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26912841.7 0 53.30596537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.353205513e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008767160079 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.598825901e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21458464.74 0 0 0 0 0 0 0 0 0 0 0 0 0 1552549.313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.927633687e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1161224.115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001603160935 0 0 0 0 0 0 0 0 0 0 0 0 1.758826072e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12998332.25 4.37872777e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.25816201e-13 0 0 0 0 0 0 8.760658167e-29 0 0 0 0 0 0 0 3.644849324e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11067457.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.648675086e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001285794989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.841770613e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.263492461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001945358563 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.354896183e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 2.986504273e-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 672.9562809 0 0 0.001936418996 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1516039.12 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 650775.9231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.251659651e-11 0 2.671484818e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.471217888e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04751640638 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.666494913e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.009521262e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.095313068e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.841617927e-09 0 0 0 0 3.05982796e-17 0 0 0 0 0 1.971710449e-14 0 0 0 0 0 0 0 0 0 0 0 6.010680106e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.306498903e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.687098203e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005108824003 0 0 5.033872337e-06 0 0 0 0 0 1.186008647e-24 0 0 0.7291865019 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.75192701e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002040595806 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.452312472e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.372624534e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 2.666365308e-29 5.158280687e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.528929233e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.157919932e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 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.138440632e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.133705496e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.190386761e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.210902234e-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 0 0 0 0 0 0 0 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.072185196e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6183375.437 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.137297502e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.844199947e-15 0 0 0 0 0 946937.0106 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001833706195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 313393.1391 0 0 0 0 0 0 0 0 0 1.843033259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7296.301732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 733543.9558 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.940171176e-05 0 0 0 0 0 1.144818024e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.859743913e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11511443.94 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 5.580302798e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.92790364e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.123636953e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.763465146e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.873113041e-36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11696.31778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.80619748e-26 0 0 0 0 7.899310721e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 257.871128 1067.315254 0 0 0 0 0 0 0 0 0 8.8589397e-31 0 0 0 367394.8768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.448209977e-18 0 0 +0 0 0 0 0 0 0 0 0 0 0 28.23577674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.280300554e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 532844.9818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 697.4754335 0 0 0 0 0 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.514898851e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.384155232e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12557699.44 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11543775.66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.994005617 0 0 0 0 0.01877861099 0 0 0 0 0 0 6.874647576e-22 0 0 0.03674226571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.245769983e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00762020354 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002063234792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1475.876475 0 0 0 0 0 0 0 0 5.985755414e-23 0 0 0 0 0 0 0 0 0 0 0.3593432182 0 0 0 0 0 0 0 0 0 0 0 0 0 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.00941912e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5550552.436 0 0 0 0 0 0 0 0 0 0 0.0004998996013 0 0 0 0 0 0 5006.62717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6234373623 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 472002.0379 0 0 1.436232718e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.348671835e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.218973106e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.639261538e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.867447102e-11 0 0 0 0 0 0 0 0 0 0 3.530446444e-37 0 0 0 0 0 0 0 0 0 0 0 4.489476856e-16 0 0 3.323313935e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2469529.949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28665.07396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 939.8829962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3801168.187 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 273.0702076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.0066379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001931951349 0 0 0 0 0 30150989.79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.509297134e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.328684223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 750122.536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.230363499e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.652939323e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.006125125e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6661245.223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.581909748e-14 0 5.994775267e-21 0 5.13996433e-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.003045611316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01019734361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.974755561e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182.3155473 0 0 0 0 5.299118908e-17 0 0 0 0 0 0 0 0 0 0 0 0 2.903524104e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.85332277 0 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.973562703e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006322056032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005485581762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 93.58762245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.150447141e-07 5.242923885e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.926241739e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14.3200989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9375671565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.297723179e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.968084652e-07 0 0 0 0 0 0 1.997627873e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.662093859e-14 0 0 0 0 0 0.07207792537 0 0 0 0 0 1.758518052e-29 0 0 0 0 2.052839996e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.844938586e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.096818433e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.502935514e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.928173954e-14 0 0 8.757705059e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.179783704e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24891267.64 0 0 0 0 0 0 0 0 0 0 1431247.269 0 0 0 0 0 0 0 0 2.57232448e-12 0 0 0 0 0 0 0 0 0 0 0 25317.03505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1030937.043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.369383092e-05 0 0 0 0 0 0 0 0 0 4.79865904e-15 0 1291610.143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17675502.04 0 0 0 0 0 0 0 0 0 0 0 0 6991328.514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.662229081e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 283.1885283 0 0 0 0 0 0 0 0 0 1.246644347e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2090570247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01716460513 0 0 0 0 0 0 0 0 0 0 0 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.202725e-22 0 0 0 0 0 0 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.195307398e-21 0 0 0 0 0 0 0 0 17.68118811 0 0 0 0 0 0 0 0 2.103593007e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009244114716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.813184187e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002440352831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.310427423e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.87531116e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2708185.934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.921684162e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.761019933e-16 0 0 0 0 0 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.03108232e-05 0 0 0 0 0 0 0 0.003421911432 0 0 8.303373845e-13 0 0 0 0 0 0 0 0 0.0467456217 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.67246445e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.188070324e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8992649.145 0 0 0 0 0 0 0 0 0 0 1.830550049e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16874976.95 0 0 0 0 0 0 0 0 0 0 0 3.708486007e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.591181363e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01381728622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2310.654711 0 0 0 0 0 0 0 0 0 0 0 6302.808571 5.68759564e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.543852381e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.491601675e-07 0 0 6.84263636e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.096920711e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8844631.441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3615.05687 0 0 0 0 0 0 0 0 0 0 0 0 1.122418159e-09 0 0 0 0 0 0 1.979491992e-24 0 0 0 0 0 0 0 0 0 0 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.837748616e-30 0 0 0 0 0 0 0 0 0 0 0 6.315439395e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.411813031e-08 0 0 0 0 0 0 0 0 0 0 0 0 6.450777104e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37754296.77 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.125733076e-12 0 0 0 0 0 0 0 0 0 7772.723233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 888.7372372 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.011677745e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.128490836e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.100324994e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.558470387e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.106215549e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58489.90561 0 0 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.965151992e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1040.246601 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.648200915e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.259763623e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62.62176716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.525449732e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.559584242e-06 0 0 0 0 0 1.538547981e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005134813616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.636431498e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00481257887 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 151.1808535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01400621565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57828.78869 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.948688162 0 6.847642484e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6.347545405e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.21201982 0 0 0 1.628853977e-06 0 0 0 0 0 0 4.978297702e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.459436695e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.736315153e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.320598005e-05 0 0 0 0 0 0 0 0 0 0 4.650859513e-12 1.73908397e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.687530575e-08 0 0 0 0 0 0 0 0 0 0 0 0 78449.59963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224579.6072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7794626.497 0 0 0 0 0.531920727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 309.919944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8029646.798 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.1129179 0 0 0 0 0 0 0 0 0 0 0 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.165728929e-17 0 0 0 0 0 0 0 0 0 0 2.846064303e-12 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.700483233e-15 0 0 0 0 0 0 0 0 0 0 0 0 0.001116494343 0 0 0 0 0 0 0 0 0 4.566025402 0 0 0 0 0 0 0 0.008463438164 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20.76850399 0 0 0 4415055.728 0 0 0 0 0 0 0 0 0 0.4719361514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5598.389176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.886879527 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.325880207e-08 0 0 2492791.415 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.083582706e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14760060.39 0 0 0 0 0.4384151021 0 0 0 1.132717233e-10 0 0 0 0 5.771934914e-09 0 0 0 0 0 9.521421711e-07 0 0 0 0 0 0 0 8.998967618e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.408913283 4.021601807e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5588.309748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.043791197e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 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.470592574e-18 0 0 0 0 0 0 0.01118977068 0 0 0 0 0 0 0 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.735284933e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04856158236 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.157616207e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.575695256e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7013286.236 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42871.80437 0 0 0 0 0 0 0 0 0 0 0 0 4556.525041 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.484249771 0 0 0 0 0 0 0 1.754263759e-19 0 0 0 1.669581907e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.746563443e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.013393034e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20692761.19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.475387314e-06 0 0 0 0.01056225197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 4.710901494e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 6.752370974e-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 5.626124627 0 0 0 0 0 0 0 0 0 0 0 0 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.140197708e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.940499149e-18 0 0 0 4994702.144 0 0 0 0 0 0 0 0 0 0 1.170488561e-26 0 3362963.473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02630288976 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60.06545545 0 0 0 0 0 0 2.100405075e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 183.8680945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11147370.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002022465182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.68897259e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.583092905e-24 0 0 0 0 0 2.782195318e-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 5.089863795e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.092218515e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001234801515 0 0.000256429688 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004476342547 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12223987.52 0 2.215983252e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 585587.2708 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.251467271e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002188659298 0 0 0 0 0 0 0 0 0 0 0 0 3.373660275e-16 0 0 0 0 0 0 0 0 5.593963255e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01923487405 0 0 0 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.023293332e-16 0 9076.925206 0 0 0 2485235.143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100.3055399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.199017417e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.24227045e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001011735268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.484654637e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.324644245e-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 2.236242026e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.511241913 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2692.482669 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.243097806e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17483.10387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.629462438e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.881111298e-13 0 0 0 0 0 6085045.065 0 0 0 0 0 0 0 0 0 51937747.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.824895491e-05 0 0 0 0 5.185681947e-21 0 0 0 0 0 0 0 0 0 1.579335278e-08 0 0 0 0 0 1.461967665e-10 0 0 0 0 0.003463904337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.353818976e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.446923535e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.594431705e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.761219115e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.073665529e-08 0 0 0 0 0 0 35108754.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.488794912e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.581579442e-11 0 0 0 0 0 3.989069863e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73761.52435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 803.4783854 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2741.887369 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.670114751e-14 0 0 0 0 0 0 0 0 0 0 0 2.997284316e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.550143709e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.636489101e-14 0 0 0 0 0 0 0 0.2424349672 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00220713961 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11829523.44 0 0 0 0 0 0 0 0 0 5.187343889e-08 0 0 0 5.529029836e-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 1.473796826e-20 0 0 0 2.064651621e-11 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.437502956e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43879.65283 0 0 0 0 0 0 0 0 0 0 2.162558274e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.531143602e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.886009204e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08422221488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11301724.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01135885402 0 0 0 0 0 0 0 0 0 0 138.155695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.149961158e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5645684.683 0 0 0 2.285476211e-08 0 0 0 0 0 0 145.3741886 0 0 0 0 0 0 0 0 0 5089300.303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001097666236 0 0 0 0.04301810815 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.247190983e-24 0 0 1057901.108 0 0 0 3882245.219 0 0 0 0 0 3.333738354e-34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.293569107e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.349140864e-14 0 0 0 0 0 0 0 2.43122762e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 334.9682861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79.51924726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008542266316 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.209212842e-10 0 0 0 0 0 0 0 0 1522183.294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 467669.7145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3315046.857 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 662261.8797 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.773866965e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.297214227e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181.3410214 0 0 0 0 0 0 0 0 4.015695281e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 309760.1075 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.80982721e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.256920744e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 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.899770191e-07 0 0 0 0 0 2.718970605e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.106766422e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01182596966 0 0 0 0 0 0 0 0 0 0 0 1.14362773e-14 0 0 0 0 0 0 0 0 0 0 0 5.948307435e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.157140942e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.717115668e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 176961.3964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4206087148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.052129885e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4476.884129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.783643121e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.361696209e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.633373692e-08 0 0 0 0 12120015.76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13197188.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9238857.171 0 0 0 0 0 1.010783859e-18 0 0 0 0 0 0 0 0 1874057.029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16481.70682 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.45935269e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.949033744e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7905006.505 0 0 0 0 0 0 0 0 0 0 1.759625776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.600699604e-08 0 0 0 0 0 0 0 0 0 0 0 6.775965332e-31 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.970770458e-12 0 0 0 0 3.509719901e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18.54816816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4726324.214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04360799914 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.927256943e-07 0 0 0.000843381104 0 0 0 0 0 0 0 0 0 0 0.02360551234 0 353451.1765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19076.68425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.747984674e-09 0 0 0 2.95772658e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.065410562e-06 4.096540695e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 434.1453402 0 0 0 0 0 0 0 0 0 0 0 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.655357312e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 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.789046413e-17 0 0 0 0 0 875.4262261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1652365836 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.914938855e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 532074.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.740136858e-09 0 0 0 0 0 0 3.050534455e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 1.254769887e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1540187564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.842570304e-10 0 0 0 0 5.164640985e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001323906776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.898976591e-06 0 0 0 0 0 0 0.0002153604138 0 0 0 0 0 0 0 0 0 0 0.0005925596575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18736577.04 0 0 0 0 0.01040044689 0 0 0 0 0 0 0 0 0 0 0 0 7823.755805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.010503539e-10 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01810071616 0 0 1.114100641e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 280.2028511 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9638241.149 0 0 0 0 1.853758069e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5637130.075 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5479.60276 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9964.930134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 801438.2869 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.037808358 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.054411377e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.19208817e-18 0 0 0 0 0 0 0 0 1.067019694e-11 0 0 5.459184376 0 0 0 0 0 0 0 0 0 5.228123874e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.276510686e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.200261752e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1.099129558e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4066.320853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.137277342e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1256768.238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3387137.339 0 0 0 0 0 0 0 0 0 0 0 0 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.539751255e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.677669642e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.24671736e-07 0 0 0 1.133077569e-06 0 0 0 0 0 0 1.820431976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.950227704e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5046313255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666793.8611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.59184021e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.573013662e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14107126.61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.701904865 0 0 0 0 0 0 0 0 0 0 0 8.461363002e-17 0 0 0 0 0 0 0 0 0 0 0 0 477371.107 0 0 0 0 0 0 0 0 0.0004434076329 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5812375.895 0 1.6354149e-08 0 0 0 0 4966486.903 0 0 0 0 0 0 0 0 0 0 0 0 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.320725322e-10 0 0 0 0 0 7582.991589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2636839.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01904096782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.274347341e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.497500426e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2030747.967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32413134.06 0 0 0 0 0.007209397851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.974494034e-16 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01422161616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43374.71392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1154810.405 0 1.383976476e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2843726.483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5730345.253 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14066255.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.622634115e-25 0 0 0 0 0 0 0 0 0 0 13857.19681 0 0 0 0 0 0 0 0 1480324.897 0 4730.194363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.486340137e-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 1.362831109e-16 0 0 0 0 0 0 0 15430069.9 0 7.057604433e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.774599692e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.884571612 0 0 0 0 0 0 0 0 0 1.449399503e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.704418633e-18 0 0 269.7658365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01427038294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13322115.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.857075189e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001464163468 0 0 0 0 0 0 0 0 0 0 0 0 0 1.760873954e-07 0 4.874594421e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10085590.9 0 0 0 0 0 0 0 0 0 3.996415482e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113765.421 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05801860574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.951258495e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.862084078e-06 0 0 0 28.85022715 0 0 0 0 0 0 0 0 0 0 0 0 0 1.078857544e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.768117957e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2380.529158 0 0 0 0 0 0.0001364732111 0 0 3.87111531e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.729283166e-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 1.082479222e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.253446753 0 0 0 0 0 0 0 589.5401545 0 66172.58195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11281234.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25656329.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14180156.68 0 0 0 1.44637183e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.933542272e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.554605615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.021860145e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 6.067321834e-13 0 0 0 0 7682681.955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.810117089e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.558333667e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.626830127e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.006761005e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.021076891e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.979645306e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.60238966e-14 1.550184132e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 735.2980884 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.602952225e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.281481136e-16 0 0 0 0 0 0 0 0 0 0 0 0 35817.64625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06569920127 0 0 0 0 0 0 0 1.171233459e-08 0 3532258.437 0 0 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.890225211e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3800244649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9639917.184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.047938603e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.134969542e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12054553.61 0 0 0 0 0 0 0 0 0 0 0 0 0 10623665.95 0 0 0 0 0 0 0 0 0 0 2632180.987 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004696963982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 240.1897259 0.003773270136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4122477.713 0 0 0 0 8082.037027 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.606221255e-06 0 0 5.34640781e-24 25181.38507 0 0 0 0 0 0 0 0 0 0 0 6.96716577e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.436292168e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.051771961e-16 0 0 59.16944176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.157699271e-11 0 0 0 0 0 0 0 0 +0 0 0 0 5018.101985 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9131264174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29.87868279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.512949275e-09 0 0 0 0 0 0 0 0 0 0 0 5.71114119e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.01801494e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.043042467e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1147.724858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.948611567e-11 0 0 0 0 0 0 0 0 0 0 8.266328671e-20 0 1.85744584e-13 0 0 0 0 0 111544.5295 0 0 2231509.384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.335042303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001759549505 0 0 0 0 0 7.531245967e-16 0 0 0 0 0 843025.3884 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26410422.5 0 0 0 0 0 0 0 0 0 0 0 0 1.859594707e-08 0 0.01030110902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.69567899 0 0 0 0 0 0 0 0 0 0 0 0 3674457.518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.335455179e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.559824444e-17 0 0 0 0 0 0 0 0 0 2.403131978e-11 0 0 17228709.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000418898407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.101917684e-08 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 866.4223651 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001327762838 0 0 0 0 0 0 0 0 0 0 0 1.207779514e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.708015508e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7031.253411 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0321767946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.374787268e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.053453893e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002778238833 0 0 3.712037701e-11 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.085097692e-20 0 0 0 0 0 0 0 0 0 0 0 0 1.610564347e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14688056.34 0 0 0 0 0 0 0 0 0 0 57.72523175 0 0 0 0 0.0003437589913 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.866338907e-14 0 0 0 4.007591867e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.41109683e-08 0 0 0 0 0.0177196707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 230.2579566 0 0 0 0 0 1899913.439 0 0 671.5499255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28963.99411 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04274034977 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1288742.501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8233.183147 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12958294.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006320596439 0 1.921008913e-12 0 0 0 0 0 0 0 0 0 0 0 7.358387148e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1134.1152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 21.38298333 0 0 0 0 0 11850.79726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02938839951 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37907.58396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 888.7662365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1072033.61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.441590802e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.699293664e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2517.659323 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.85973437e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4921393729 0 0 0 0 0 0 0 0 0 2.728637521e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.579008865e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08297719222 4.064630743e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10483.77778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.669208459e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38454.7214 0 0 0 0 0 0 0 8.336588675e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.0007448913216 0 0 0 0 1.400199723e-19 0 0 0 0 0 0 0 1.196886277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002733013469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6476135.704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.072245961e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.335630775e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.526044941e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.355377425e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.420125714e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00192652228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.008461811 0 0 0 0 0 0 0 4.610121721e-12 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001921964126 3.868527879e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.916409026e-06 0 0 0 0 0 0 0.3674228968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 595276.3729 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.43604775e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57.57619231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8827.221159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.457476284 0 0 0 0 0 0 0 0 0 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.901524962e-11 0 0 0 0 0 0 2.301577423e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.357181925e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.183777321e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65.65020015 0 0 0 0 69.33677877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.050604801e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 59.92991891 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.673457134e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 566.0200417 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48.71400489 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.596915696e-16 0 0 0 0 0 0 3.699343314e-18 0 0 0 0 0 0 0 0 0 5.18334193e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.391132297e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2649023.608 0 0 0 0 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.978168084e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.401786319e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.0328111e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 311662.0204 0 0 0 0 0 0 0 0 0 0 0 2.084600238e-18 0 0 0 6.838857937e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05728079539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.622964844e-12 4.491026111e-14 0 1.642575457e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.777435983e-10 0 0 2.827784051e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 4.926948145e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004020490128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8592.609032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35.95468652 0 2.275017176e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005080697573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.018925064e-11 0 2.589565071e-09 0 0 0 0 0 0 0 0 0 0 0 1.210223217e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.457291704e-12 0 3276.472947 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1173526.212 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 148.8188875 0 0 0 7.455646121e-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 1.238772773e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.941120497e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2873743.115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.413602432e-12 0 3.654889449e-07 0 0 0 0 0 0 0 959.2934834 0 0 0 0 2.231710413e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009354255277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.399052494e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 342556.4449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.306883504e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008864759562 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24497.95362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19864.43462 0.01333828121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7457637583 0 0 0 0 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.667151206e-23 0 0 0 11815151.47 0 0 0 0 0 0 1.130073441e-10 0 0 0 0 0 0 8.209497545e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.408413698e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4257094669 0 0 1.082736471e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16743.4844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.134582994e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.477163086 0 0 0 0 0 0 0 0 0 0 0 0.002069235633 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.286627306e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1.024259416e-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 7.633659295e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.128620187e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 8.536781544e-11 0 0 0 0 0 0 0 0 0 0 0 6736598.153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.42017388e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6203818.869 0 0 0 0 0 0 0 0 0 0 0 0 0 42.71119678 0 0 0 0 0 0 0 0 0 0 0 2.049532293e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.441604487e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001192860896 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004917277432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37072252.6 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.869790725e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23924.06417 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.426939852e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.233809908e-09 2.4053602e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.288657427e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62414.1674 0 0 0 0 0 0 0 0 1.303468884e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.093703264e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.674928369e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41815.95133 0 0 0 0 0 0 2319.123382 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.883850129e-12 0 344506.3592 0 0 0 0 0 0 0 0 0 2656433.327 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 740.6039861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1019.197662 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2346187809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.620949657e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.847368669e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6674057.318 0 0 0 0 0 0 0 0 0 1.777209499e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.331966353e-25 0 0 0 0 0 0 0 0 0 0 0 2.64592813e-16 0 0 0 0 0 2.86682588e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.185336896e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159.2530393 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7590.271557 163.4487696 0 0 0 0 0 0 0 0.01575956608 0 0 0 0 0 0 0 3.148311546e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.701562875e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4253.163146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.250626892e-07 0 0 0 0 23831566.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35977416.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1900876214 0 0 0 0 0 0 0 0 0 0 0 1.695924063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1975912.095 0 0 0 0 0 0 0 1.805697226e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 438.9447871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5354831468 0 0 0 0 1.161017385e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.625294842e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01366968956 0 0 0 0 0 0 0 0 8.971177882e-08 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73.31050848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.751543533e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1984939.924 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.245851569e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.234080523e-16 3230950.881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 82218.76193 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 268.5068734 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.043057264e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004093097871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02261700097 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.974019737e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.881443608e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005361218496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32469.18429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.692100908e-17 0 0 0 0 0 0 0 0 0 0 0 0 252.1914814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4931754.771 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3151284.824 0 0 +0 0 0 0 0 0 0 0 0 0.009440701064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.0447981 0 0 0 0 0 0 0 0 0 0 0 0 3.537732353e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.602328638e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.089812751e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.08136541e-09 0 0 0 0 0.4262686308 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.177346736e-09 0 0 0 0 0 0 149157.5281 0 0 0 0 0 5.653866579e-06 3.500864946e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15115554.04 0 0 0 0 0 0 0 0 3.023674822e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.349853979e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.5896342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98.67136548 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4539913.763 0 0 0 0 0 1.127377085e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.365309286 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3913320303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.296232855e-08 0 0 0 0 0 0 3.451527091e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6892170.633 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.615996572e-10 0 0 0 0 0 0 1.700971275e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.10925121 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07756231944 0 0 0 8.446252046e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.993634269e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 503756.0992 5.688558946e-11 0 0 0 0 0 0 0 0 0.1673941265 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.432256875e-06 0 0 0 0 0 0 0 0 0 0.9890676437 0 0 0 0 0 0 0 0 0 0 0.04074307359 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08624214316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.078676705e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19438940.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004049162051 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.357116156e-05 0 0 0 0 0 0 0 132046.0794 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.553476956e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14.26013513 0 0 0 0 0 0 0 0 0 0 0 0 0.05460288376 0 0 0 0 0 0 0 0 0 0 0 0 66.34340204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.556621344e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.264868026e-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 4.647720224e-08 0 0 0 0 0 0 0 0 0 0 17466.40529 0 0 0 0 0 0 0 0 1.560607326e-08 0 0 0 0.06492448935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.359967955e-06 0 0 0 0 0 0 0 10.56745639 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.918048897e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.90336446e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.594544479e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3323278.606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.669948149e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22.86542085 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17267252.26 0 0 0 +0 0 1.40612552e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.228955741 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001228009957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 221.1831422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009446472544 0 0 0 3950644.397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57814.62794 0 0 0 0 0 0 0 0 0 0 0 0 0 1.829838236e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.040825502e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.684594165e-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 2.12316682e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13795.84304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.29367588e-07 0 0 0 0 0 0 11.61973998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.979840587e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.475913183e-07 0 0 0 0 0 0 6.56057357e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01129929622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.054087471e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.867137415e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 772.3676494 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1055263.418 0 0 0 0 0 0 0 0 0 24.41849709 0.4961676927 0 0 0 0.04163266199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4162340323 0 0 0 0 0 0 0 0 0 0.01445479876 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.220259661e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8716596.168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1631118.357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71982.55155 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0260193391 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04744715476 0 0 0 0 0 0 0 0 0 0 0 0 1.150965919e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5295532353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1386.113626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2953412.389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0.2762570539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.197605569e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.126337188e-18 0 0 0 0 0 0 0 0 0 0 6045.664363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 684912.9849 0 0 0 0 0 0 0 1.357674988e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1984684091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.668621728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004337417059 0 0 0 0 0 0 0 0 3.597256292e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3871982231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.95850542e-11 0 0 0 0 0.1199436558 0 0 0 0 28.73822671 0 0 0 0 0 0 0 0 0 0 0 0 3.943610625e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.16266248e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 2.046007101e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.611038005e-13 0 0.8533515785 0 0 0 0 0 0 1.009745805e-13 0 0 0 0 0 0 9912200.574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.483577557e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.081808022e-13 0 0 0 0 0 0 1.421699232e-10 0 0 0 0 0 0 2.365049732e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001090489075 0 0 0 0 0 0 0 0 0.001320924333 0 0 0.5168927413 0 0 0 0 0 0 0 0 0 72889.0957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.053173915e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34159.67896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0006892454643 14353234.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6657118324 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27392419.29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51.88873099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83742.67595 1.450493967e-13 0 0 0 0 0 0 6.273514114 2.670860726e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.008697562e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2759.218499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 409012.4322 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.227126735e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.77127569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006539764228 0 0 0 0 0 0 0 0 0 0 1.075179271e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 3.845723386 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1748388.066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.391917996e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.284269115e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.065106817e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4985907.175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 814629.3628 0 0 0 0 0 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.011289881e-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.0009479335672 0 0 9734825.296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.199677375 0 0 0 0 0 0 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.068449512e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4729.146699 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004044582525 0 0 0 0 0 0 0 0 0 0 0 1.984685474e-10 0 0 0 0 0 0 0 0 0 0 0 0 24.84575504 0 0 1.751533226e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.855032635e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.415231928e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1862586858 0 0 0 0 0 0 0 +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.829064214e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06135612267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.619390643e-10 0 0 0 0 0 0 0 0 0 1.947571894e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41.02963757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.533630824e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 87251.69163 0 0 0 0 0 0 0 0 0 0 0 0 0 2839011.735 0 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.527888979e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009758282946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01028926804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.243811713e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.370342601e-08 0 0 0 0 1.410672224e-23 0 0 0 0 0 0 1.113485548e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.362327959 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.197976509 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.864053008e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1346559.204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15274.35028 0 7734957.267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.094788029e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02915460431 0 0 0 0 0 0 0 229942.8578 0 0 0 0 0 158.0372978 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004737169041 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181365.7386 0 0 0 0 0 0 0 0 0 0 1989998.449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.694706232e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.297038911e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.645505489e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.674199708e-10 0 0 0.00113334728 0 0 0 0 0 0 0 0 0 0 0.00191216817 0 0 0 0 0 0 0 0 0 0 0 4396056.168 0 0 0 0 0 0 7.620607745e-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.000513228453 0 0 0 0 0 0 1.939974613e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.597207481e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72602.32803 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.990629954e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.740637197 0 0 0 0 0 3.464814221e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.304652613e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1294929.616 0 0 0 0 0 0 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.651180617e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.507291743e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.117041862e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3598296347 0 0 0 0 0 0 5328221.523 0 0 0 0 0 0 0 0 61018.71278 0 0 0 0 0 0 0 0 0.03615364999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004287757867 5.824202374e-08 0 0 0 0 0 0 0 0 0 0 0 0 41546.30844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6204.629844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06380973414 0 0 0 0 0 1.55130802e-20 0 0 0 0 0 0 0 0 0 0 6713321.832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25142.96923 0 0 0 0 0 0 0 0 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.292543806e-23 0 0 0 0 0 0.003860518946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2820.704695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.277732326e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 1.582076544e-14 0 0 0 0 0 2.027334058e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1405721126 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001017234954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.464010144e-20 0 0 1.847069844e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 236358.4113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001046870168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 255.1696034 0 0 1068.666407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.83863697e-12 0 9.762987834e-14 0 24548757.81 0 0 0 0 0 0 0 0 0 0 4.614458128e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.099890504e-12 0 0 0 0 0 0 0 0 0 4.232772233 0 0 0 0 160.2847851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16103.09229 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5433.681139 0 0 0 0 0 0 0 0 0 9.665093875e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.705694323e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3635304.217 0 0 0 0 2.247134431e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.758359899e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34628.62411 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1135638.791 0 0 0 0 0 17620748.46 0 0 0 0 0 0 0 0 0 0 0 5708450.379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.589213837e-05 0 4.348478914e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 217043.1847 0 0 0 0 0 0.0008278988631 0 0 0 2.437450474e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 4.71910335e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91385.66852 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.308034457e-28 0 0 0 0 0 0 0.009394118811 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10701957.07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.916955712e-08 0 0 0 0 0 0 0 2.253087905e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.027171344e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4117.805397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.095903906e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.666469649e-21 0 0 0 0 0 0 0 0 0 0 0 0 1.317347705e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00474246383 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.705421302e-05 0 0 0 0 0 0 431.8576979 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 4517.018411 0 0 0 0 0 0 0 0 0 0 3.697271843e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.997823262e-13 0 950.6006427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 406.0079902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 280213.64 0 0 0 0 0 0.9972849999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9691.288906 0 0 0 0 8.966727619e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.614405912e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.004079583904 0 0 0 0 0 0 0 0 0 0.004013726375 0 0 0 0 0 28883.60556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.93309207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26803788.13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3972159332 0 0 0 0 0 0 0 0 0 0 0 0 0 0 185.315785 0 0 0 0 0 0 0 0 3.36136666e-19 0 0 0 7.284050313e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.316021393e-14 0 0 0 0 1140.781093 0 0 6.973799702e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.688339118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1822399.404 2.86295734e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.249456686e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.291407741e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.203299365e-12 0 0 0 0 0 0 0 0 0 +5691.984953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.249946232e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70840.49797 0.08046757156 0 0 0 7604838.302 0 0 0 0 15522596.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4575.910012 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001883645805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.83253582e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18628832.45 0 1.388794113e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.140274313e-19 0 0 4074304.403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004567944117 0 0 0.0001208064634 0 0 0 0 0 0 0 0 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.239833504e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13473146.05 0 0 0 0 0 0 0 2.322671366e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.592890716e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16487000.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02263399164 0 0 0 0 0 0 0 341159.6361 0 0 0 0 0 0 0 0 0 0 0 6121427.474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4254592153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.72608935e-17 0 0 0 0 0 0 0 0 0 1.763691413e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.742382952e-16 0 0 0 0 0 0 0 0 1.861366015e-06 0 0 0 0 0 0 0 0 0 0 1.034602098e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.505489735e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.120124011e-16 0 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.115715413e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 174238.0088 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.705634155e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2649464.196 0 0 0 0 0 0 0 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.467097269e-19 0 0 0 1.72598139e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.911676634e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.530040198e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91707.57439 0 0 0 0 0 0 0 0 0 0 0 8.211044156e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30333175.21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.698200974e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 248492.036 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 3091426.934 0 0 0 0 0 0 0 0 0 0 0 0 0 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.501298043e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.011462169e-09 0 0 0 0 0 0 1795136.226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.51300719e-19 0 0 0 0 0 0 0 0 0 1.766712316e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1160697301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.45930798e-13 0 0 0 0 0 0 0 0 0 0 0 0 374817.6774 0 5818259.02 0 0 0 0 0 3.216728874e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.912717125e-13 0 0 0 32780643.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22978666.74 0 0 0 0 0 0 0 0 0 0 0 0 0 184954.8678 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0001260333822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.242614021e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.021253562e-05 0 0 0 0 0 0 0 0 0 0 1.603109899e-13 0 6214540.147 0 126133.4734 0 0.006202717166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144.0037119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.61215261e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.822963025e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24.08823645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 162500.2701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.364167709e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.753012395e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27955.23178 0 0 0 0 0 0 0 1930616.493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 547.1680666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8091071.704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82037.76431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003761231245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18520196.38 0 0 0 0 0 0 0 0 0 0 264.3690971 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4549.315545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000153026021 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56.73790606 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001285293798 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08556831536 0 0 0 0 0 0 0 5.06423217e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.749995182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30522.81503 0 6.674328885 0 0 2.463015254e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003820801781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.666802184e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003178398379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.215920949e-26 0 0 0 0 0 0 0 0 0 0 0 1.155033694e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5420578.397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.045709476e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001103841104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.2952092896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1651623.829 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 423124.5759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1423470.484 0 0 0 0 0 0 0 6.972687927e-16 0 0 0 0 0 0 21473.54969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.520335648e-23 0 0 0 0 0 0 0 0 0 0 1344.913154 0 0 0 0 0 0 0 0 0 0 0.00208272897 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.862167023e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1034630723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3431.153267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007495653797 0 0 0 0 0 0 0 0 0 0 0 0 0 222.9407245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.873304801e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.497809866e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.142633207e-19 0 0 0 0 0 0 0 0 0 0 0 0 6.824900838 0 0 0 0 0 0 0 0 0 1.398616911e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04494150694 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04686495792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.600861586e-19 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.750465219e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5489852103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2991171166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20326.91358 0 0.006733691542 0 0 0 0 0 0 0 0 0 0 0 0 0 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.964652681e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.189197007e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5923.550117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4673439329 0 0 0 0 0 0 0 0 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.088811505e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.37964047 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.740038711e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.594002085e-05 0 0 0 0 0 0 0 0 1.339553501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.604344286e-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 1.802715246e-08 7341189.989 0 0 0 0 0 0 0 0 0 0 0 14.88742649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5796952.701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.176280032e-21 0 0 602516.5468 0 3.493917929e-21 4785.755746 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3834.517403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03256762366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1362670.879 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.35029848e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.401142988e-22 0 0 0 0 0 6.936702987e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.29782781e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001784095378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005171194566 0 0 0 0 0 0 6.241405136 0 0 19315573.66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001338906396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.547371674e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.145846871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.950283704e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.965150487e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.526181531e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.159979141e-06 0 0 0 0 0 0 0 0 0 0 8.302253918e-07 0 0 0 0 0 0 0 0 0 0.002145515967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28022677.55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 702.5103015 0 0 0 0 0 0 0.005201803705 0 0 0 0 0 0 0 0 0 0 0 0 0 1.153491777e-35 0 0 0 0 0 0 0 0 51.27635141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.920149214e-05 0 0 0 0 0 0 0 0 0 0 0 9.296423653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005826877601 0 0 0 0 0 0 0 0 0 0 0 0 0 6428800.446 0 0 0 0 0 0 37738.60711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7229.033628 0 0 3.057615444e-10 25425645.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.051916601e-13 0 0 0 0 0 0 0 0 0 0 0 0 1.223819229 0 0 1.388914728e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.259189412e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4424023.749 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6979.859876 0 0 0 0 0 0 0 0 0 3.303580881e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05103856426 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 844.4054032 0 9.220336027e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.680948352e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.110447717e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002053799481 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.175486065e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.538146646e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.456767404e-17 0 0 5.205462751e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.20366152e-05 0 3.222571423e-17 0 0 0 0 0 0 0 0 0 3.917904014e-13 0 0 0 0 8755082.346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1166801.826 0 0 0 0 0 0 0 0 49785.30826 0 0 0 0 2.489910651e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1180321.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6295221.697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.116005067e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 287635.7944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002274394425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.141402772e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 664304.2967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.054861106e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350627.5242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 116116.1168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007037957279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1670.702767 0 0 0 0 0 5.323759877e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 295010.9677 16103259.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5206.244907 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 574.6200647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23110485.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.173492936e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13738.67707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008161768488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.533987276e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1593600.275 0 0 0 0 0 0 0 0 0 1.895257172e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4903600.693 0 0 0 0 0.01416130381 0 0 0 0 2.724724346e-11 0 0 0 0 2.724714987e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5953898.219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.807857284e-10 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.034132216e-05 0 0 0 0 2.154077639e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.307385176e-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 7.794337797e-19 0 0 0 0 0 0 0 0 0 0 0 0 31.42148858 0 0 0 0 0 0 0 0 0 0 0 0 0.001063058212 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2988.898736 0 0.0001022700194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.699139254e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.89988102e-13 0 0 0 0 0 4.928927286e-12 0 0 0 0 0 0 0 0 0 0 0 1.368114312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 354.7194228 0 0 0 0 0 0 0 629039.9667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.107168353e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 7.756824324e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 5943118.436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.718456311e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 754724.2033 0 0 0 0 0 0 7821.360065 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 390.1868788 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.762191273e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.690922391e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.693608326e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.504630508e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01668318117 0 0 0 0 0 0 0 0 0 0 0 0 1.78177575e-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 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.149429881e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.843491933e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8053130.277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.042054037e-14 0 0 0 0 0 0 0 0 0 1782600.782 0 0 0 0 0 0 0 0 0 1.286817577e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 530634.0723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.533091675e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.845659075e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.000963299e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 670555.6457 0 0 0 0 2.667850198e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.726845052e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.065780716e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.556913473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.812440449e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.599535188e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19633.9257 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4411808.037 0 0 0 0 0 0 0 1.976575386e-14 0 0 0 0 0 0.0009342210106 0 0 0 0 0 0 0 0 5.643586242e-16 0 0 1.921277633e-24 0 0 0 0 0 0 7.378231212e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 3.163072684e-05 0 0 0 0 0 0 0 0 0 7.597611234e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.20156854 0 0 0 0 0 0 0 1.52248302e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.795588352e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.640767143e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.177933606e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.959221665e-14 0 0 0 0 0 7.347666701e-10 0 0 0 0 0 2.509857988e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.088749149e-14 0 0 0 0 0 0 0 5.088543347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8263339932 0 0 0 0 0 8637197.131 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.102072888e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 855377.1697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.077183791e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56263.01772 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.361355888e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15503684.73 0 0 0 0 0 0 0 0 0 0 0 3560242.854 0 0 0 0 0 0 4.166441e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.7534006e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01155578226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1733.285777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.61989975e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.157443936e-33 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3287.746655 0 0 0 0 0 0 0 0 0 1.023924534e-05 0 0 0 0 0 0 0 1.065703854e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.95308622e-11 0 3.392688218e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29.06083696 0 1.836997271e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 589.795177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66116.78546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 311794.7368 0 0 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.149910085e-05 0 0 0 0 0 0 0 0 0 0 0 3.613324942e-09 0 0 0 0 1.045745227e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.448532997e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.747457493e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.463155061e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.010903979e-06 8.339861345e-20 0 0 0 0 0 0 21.44442634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.879464047e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3.928014813 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47.42980991 0 0 4.232677442e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.313545771e-13 0 0 0 0 0 372.285958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 540.2309787 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5641973057 0 0 0 0 0 0 0 0 0 0 639033.488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 142126.1077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.111709084e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002189959785 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.248471644 0 0 0 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.537485666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.374721226e-10 0 0 0 0 0 0 0 0 0 6.863498795e-05 0 0 0 0 0 0 0 0 0 0 1.585431694e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5998578.483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 286.7734683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 3854.194578 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.005749958e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 512.5887007 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.358805551e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.200794402e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004625161472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.037207418e-06 0 0 0 0 1912727.647 57.92109497 56737.90261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.288550808 0 0 0 2.692681545e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2042679.269 35708886.53 0 0 0 0 0 0 214.8649615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 377430399.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1292.306083 0 0 0 0 0 0 0 0 0 0 0 0 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.534568408e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29841.8573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.936113668e-11 +0 0 0 0 0 1.274382047e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.394477403 0 0 0 0 0 0 2.769502675e-14 0 0 2200530.089 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104703.9718 0 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.028035437e-17 0 0 60814.18356 0 0 0 0 15673.73449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.536865007e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.0003842758967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.9311624253 0 0 0 0 0 0 0 0 0 2.072676652e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.528667903e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.574063363e-16 0 0.03486774384 0 1.716622931e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.794092487e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.656651635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.214630689e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.237825071e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02368602116 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.167537714e-13 0 2.068820556e-05 0 0 0 0 0 0 0 0 0 0 0 0 4.57641354e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25.20769777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 300362.5145 0 0 0 0 0 0 3.218325356e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.169930107e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.840797415e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20097.71996 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.038428694e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.1396818e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4692075.622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.177446779e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007972358589 0 0 0 0 0 0 0 0 0 0 0 0 0 1.08734101e-08 0 0 0 0 0 0 0.0009189031287 2.611554496e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.503920489e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1712.061181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.705684484e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1661419.258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.508836321e-09 0 0 0 0 0 344.1974574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008309353634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.871859153e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.469601703e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.622864349e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.83002671e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 21673.91387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29.67364792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.854469687e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07856547888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12581002.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01190026354 0 0 0 0 0 0.0002600616148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.749324974e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 450.7682364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.456467612e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.46337094e-20 0 0 322.182704 0 0 0 0 0 0 0 0 0 0 0 3.296960974e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.727422837e-07 0 0 0 0 0 0 0 0 0 0 0 0.8081304674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02883712939 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17177611.74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004525053757 0 0 0 0 4.873997538e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002519669501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1353.68113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.225231528e-09 4.944398708e-10 0 190.138046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100.320728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.405671079 0 0 0 0 0 0 0 0 0.2799046234 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.062973435e-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 4.720728611e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53239.19482 0 0 0 0 0 0 0 2.860844272e-10 8.392665779e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2858334261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.67759878e-14 0 0 0 0 0 0 0 0 0 0 0 1457331.754 0 0 0 0 0 0 0.8412706555 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2185.556125 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.569847074e-09 0 0 0 0.0008159617049 0 0 0 0 0 0 0 0 7.016415528e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 605.3376637 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.814599588e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000260773575 0 0 0 0 0 0 0 2289357.773 0 0 0 0 0 2.673283367 0 0 0 0 0 0 4409851.346 0 0 0 0 0 1.811121882e-10 0 27057.39946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.818766904e-07 0 0 0 0 0 0 0 0 0 0 7.198050745e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.890844896e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.499674686e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.215181249e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.403631913e-09 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1895835.795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 534.9490189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2251245.938 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007945310577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.269165808e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2911.190854 4.79350854e-08 0 0 0 0 0 0 0 20517.23426 0 0 0 0 0 0 0 1.360154715e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222422.6625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.847328772e-06 0 0 0 0 0 0 0 2.00949937e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.116431172e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.697891409e-17 0 4.205568449e-13 0 0 0 0 0 0 2852991.255 0 0 0 0 0 0 0 0 0 3.162522406e-21 0 0 0 0 0 0 0 0 0 0 2.016932972e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.856981101e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2345795.425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.72808918e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009025402675 0 0 0 0 0 0 0 0 6.259532298e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.667578943e-07 0 1.487744704e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.040279549e-06 0 0 0 0 0.0269347573 0 0 0 0 0 0 0 0 0 0 0 0 0.004295498006 0 0 0 0 0 7.704024956e-24 0 0 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.133636585e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 2.011799229e-07 0 0 0 0 0 0 0 0 1.031512265e-10 0 0 0 0 0 0 0 0 0 0 0 299612.8912 1.302586405e-13 0 0 0 0 0 0 0 0 1768385.731 0 0 0 0.0002151564046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.263353338e-06 0 0 0 0 0 0 2.23844669e-14 0 0 0 0 0 0 0 0 0 0 1.031938127e-11 0 0 0 0.003694493427 0 0 0 0 0 0 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.170370701e-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 0 0 0 0 0 0 0 0 0 5.39898841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 811576.3412 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15409522.89 0 0 0 3392.182795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.714633192e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.009266412e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.033745902e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6345553.314 0 0 0 0 0 0 0 0 0 0 9.553751598e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 150394.004 0 0 0 0 0 0 0 0 0 0 0 1.091792597e-13 0 0 9.547665952e-06 0 4.5473134e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 5.377624696e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.593912442e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.844111018e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 102.1419259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.912226413e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.062929855e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 6744849.909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.649914978e-14 0 0 0 0 0 0 0 1.264651944e-06 0 0 0 0 0 0 0 0 0 3.057237086e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4270055122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0326974022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6384957841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8269.376196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.093495913e-45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.410114623e-15 0 0 0 0 0 0 0 2.317094064e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.42022622e-06 0 13858513.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28991.64826 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 541998.0382 0 0 0 0 1.600372202e-13 0 0 0 0 0 0 0 0 0 0 0 0 86.93635705 0 0 0 0 0 0 0 0 0 0 7.290362441e-09 0 0 0 0 0 0 0 0 30966.14351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 814804.5347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 360.1679302 0 0 0 0 0 0 0 0 0 0 0 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.582681729e-14 0 0 0 0 0 0 0 0 0 0 0 0 6.708880965e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88.46576381 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.775089374e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5295.337541 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.009884966e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.735016456e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25301.2556 0 1989.423372 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.832739799e-17 0 8.936219069 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.259505185e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.684918775e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.405668535e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16952216.6 0 0 0 0 0 0 0 1.717143497e-10 0 0 0 0 0 0 8.623415601e-15 0 0 0 0 0 0 0 0 0 0 1.878222519e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.05537646e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1574514903 0 0 0 0 0 0 0 0 88205.69506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01057823037 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25779275.74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.070808037e-06 0 0 0 0 1.735938921e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.21837052e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.517082593e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 9.247429944e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.225730441e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3633986.339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.907993326e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006162561297 0 0 0 0 0 0 0 0 0 0 5.973831705e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.344597257e-21 0 0 0 0 0 0 0 0 5984883.267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.935216971e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006326622702 0 0 0 0 0 0 6.027035776e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.111708942e-07 0 0 0 0 0 0.5117955956 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 111.5155743 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.830832981e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.826717688e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.408102379e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13086.15447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1708974247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5744266173 0 0 0 0 0 0 0 0 0 0 0 3690608.963 0 0 0 0 0 1.144877516e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.252458828e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.87286814e-06 0 1.562343158e-17 0 0 0 0 0 2.092151695e-08 2.500905904e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2332653029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71833.09315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2065686.428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182.0251269 0 2.258715883e-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1540.25201 0 0 0 0 0.001827022792 0 0 0 0 0 0 0 0 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.216085361e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.449260221e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7649554.448 0 0.007291105165 0 0 0 0 0 0 0 0 9.809954056e-16 0 0 0 0 0 0 0 0 0 0 0 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.643848563e-06 0 0 0 0 0.04989454223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.014531213e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 161.6503821 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.03178377e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.080434937e-06 0 0 0 0 0 0 256549.9619 0 0 0 0 0 0 0 0 0 0 0 0 0 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.018745415e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02578690251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.321008471e-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 3.182810647e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01954292781 0 0 0 0 0 0 0 0 0 6.13174982e-12 0 0 9.115797583e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9749695.731 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.175719636 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14071111.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4588.590421 0 0 0 0 0.006910945539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.796587359e-06 0 0 0 0 0 0 0 0 6341977.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.932663331e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1037844.268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.194759852e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77.65558358 0 0 0 0 0 0 0 0 0 0 0 1293110.632 1.942058187e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2606224.06 0 0 0 0 0 0 0 0 3.525762624e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.4299869e-08 0 0 0 0 0 +0 0 0 0 0 0 1.51842669e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1188209076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4100.346673 0 0 0 0 0 0 0 0 2.251981527e-12 0 0 0 0 2714664.995 0 0 0 0 0 0 0 0 0 0 0 34019887.98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42033314.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.933737239e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1.082394001e-30 0 3268.488339 0 1055588.937 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2229642621 0 0 0 0 0 0 0 3.786759445e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82.36285817 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 197971.8275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.141641701e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.190824223 0 0 0 2.966706833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.181289636e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3025018749 0 0 0 2.265664341e-11 0 0 0 0 0 0 5.827892378e-07 0 0 0 0 0 0 0 0 0 0 0 2.498290948e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.755457282e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.115473521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6993045521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.35826372e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43.42805908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8960.92452 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4483.400848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.508502604e-08 0 0 0 0 0 0 0 0 0 0 0 3.998356106e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.595629503e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.997535257e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15755097.76 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.908965169e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6426.666164 0 0 0 0 0 0 0 1.271880483 0 0 0 0 0 0 0 0 0 0 9.136871613e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.092989779e-11 0 0 0 0 0 4.326691418e-08 0 0 0 0 0 0 0 0 0 0 0 0.2086822812 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.042128035e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0.9868195837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0413607713 0 0 0 0 0 0 0 0 0 0 0 0 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.144954074e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 126.383985 0 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.867699887e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.732721209e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2131614.509 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01530240349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.810878697e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3857232.368 0 0 0 0 0 0 0 0 0 0 0 0 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.195998901e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45466.27709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.026657559e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11800511.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 3.212379719e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1237016415 0 4304365.868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003990171675 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13760318.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.649583179e-12 0 0 0 0 0 0 0 28.14015101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.525971832e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66.86823606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002406655557 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23346.24933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2209462191 0 0 0 0 0 0 1.498027674e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002308898221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.418931183 0 0 0 0 6.925545228e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36689936.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.583443472e-31 0 0 0 0 0 902072.0927 0 0.2294134464 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.468163135e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.056152231e-17 0 0 0 0 0 0 0 0 0 0 0.001354466772 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06183034699 0 0 0 0 53.82296599 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02348743447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.856759868e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.346283116e-12 0 0 0 0 0 4.758017304e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.531803199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13966.64314 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.779647831e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.271413781e-09 0 0 0 0 0 0 0 0 0 0.04817642745 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.960884104e-32 0 1.661980449e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.082244606e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2897.984738 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.345733819 0 0 0 0 0 0 0 0 0 0 0 0 8.743080961e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.830223966e-07 0 0 0 0 0 1.000296474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.8205736e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.562012843e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.424673986e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 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.899760635e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 684.8197708 0 0 0 0 0 0 0 0 1.657846749e-11 0 0 0 0 0 0 0 0 0 7010.189931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.281693444e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.246293721e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003295881063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.253624221e-09 0 3.215266856e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.467776397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29031924.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002081963167 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.864708189e-10 0 0 0 0 0 0 0 2.103671517e-16 0 0 0 0 2152793.001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001807624504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16757062.66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 132547.6768 0 0 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.824985892e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.720933561e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10239.18877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003378245196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.087163957e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159.6552387 0 0 3.069377081e-12 9.868279491e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.122988695e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 123.0431843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.288771407e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.884202448e-10 0 0 0 0 354727.7389 0 6.254841349e-10 0 0 0 0 0 0 0 0 0 3.869881278e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.143488291e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.294855944e-23 0 2731234.612 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5563591083 0 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.803621412e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.858899182e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.13462136e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 101981.827 0 0 0 0 0 0 0 15304913.08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.633911981e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.673913311e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10233.39538 0 0 0 0 0 0 0 0 0 0 0 0 0 5.046753078e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.856382059e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002466151227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.835273726e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8023167.893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00648327956 0 0 0 0 0 0 0 0 0 0 0 2.772172799e-07 0 0 0 0 0 0 0 0 0 0 0 0 1536.071753 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.993229878e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.933429402e-09 0 0 0 0 0 0 0 0 0 0 0 0 3565.269818 1.735086127e-16 0 0 0 0 0 0 0 0 0 0 0 0 2.954404148e-24 0 0 0 0 0 2.142314264e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1763236.416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.47373703e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 737298.1905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.323862354e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1162317.615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 153618.0976 0 0 0 0 0 0 0 0 0 0 1.576536707e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.421040767e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.582069442e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.067901867e-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 0 0 0 0 0 0 0 0 0 56548.0786 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.280080626e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1310752343 0 0 5.146214757e-19 0 0 0 0 0 0 2.004503038e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.392117543e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02318948288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5533273.649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61.83077229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.842302153e-26 0 0 0 0 0 0 0 0 0 +0 0 0 0 4.247043097e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170.5073276 0 0 0 0 0 0 0 0 0 0 0 0 7.359147709e-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 3.183062719e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2148095.401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.281609609e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09773323127 0 0 0 0 0 0 0 0 5.524428571e-17 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.035911258e-43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13768904.85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2158033.846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.854179589e-30 0 0 0 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.944890366e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.091942193e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.900873648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77.6748717 0 0 0 0 0 0 0 0 0.02118529844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.694790619e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.207627706e-17 0 8963.493909 0 0 0 0 2.054673225e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.814840215e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75925058.75 0 1.667635858e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.720698467e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.685884685e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.046021851 0 0 0 0 0 0 0 0 0 0 0 6734.706303 1.332299583e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 125.2783254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1701054.113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.68395407e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04639716542 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3429299833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75720.84475 0 0 0 0 0 0 4.561555665e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.591384616e-22 0 0 0 0 0 0 0 +0 0 0 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.641299353e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04296206497 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.792402358e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.445220782e-07 0 0 889.4099791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.527830257e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.046337094e-29 0 0 0 0 0 4.096653359 0 0 0 0 0 0 0 0 0 0.004559869857 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14296.85043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.383470939e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.981062939e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11823.80607 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00848242119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.365651312e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002148628271 0 0 0 0 0.9000642364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.189488168e-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.516045748e-05 0 0 0.0001951328318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.334657652e-14 0 0 0 0 0 0 0 0 0 0 0 0 9.234299744 0 0 0 0 0 0 0 0 0 0 0 0 0 117.4503772 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10475.00513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1863234.127 0 0 0 146.866376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.844977422e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.991951228e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42.83220314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.469429201e-06 0 0 0 0 0 0 0 0 0.002628549042 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.048999353e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.804219022e-05 0 0 6.335427606e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.198417215e-25 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24505.87227 0 0 0 0.03946646117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9758.99238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32840477.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61.85687129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5133517.987 0 0 0 5.08601328e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.75937474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 269.1921436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.363251328e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.090652967e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 4.386092961e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.149612081e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.89097029e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.783249005e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 202820.3134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 680749.4242 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.326192764e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006871445703 0 0.02525316227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.945447603e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.104541667e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.209843588e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.611079465e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2770004166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.425929529e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.074642788e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.656140434e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.818087 0 0 0 0 0 9.242804541e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.222067973e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.120598917e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.644080261e-13 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.093983095e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28172.74703 0 0 0 6.214497589e-10 0 0 0 0 2.429451012e-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 2.066831389e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5151269174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.476151399e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.018188349e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006843083625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003292573962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.492786667e-12 0 0 0 0 0 0 0 0 0 0 0 0 425674.6941 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.893059426e-23 1.725126344e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 979189.8414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005932387015 0 0 0 0 0 0 9.403485507e-28 0 0 0 0 0 0 0 0 0 6.607373865e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000146597978 0 0 0 0 0 0 0 0 1.091366672e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.587982167e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1808533.599 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9852386112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04490597345 0 0 0 0 4.80013967e-10 0 0 0 0 3021074.838 0 0 3.607704655e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.029435245e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.039593419e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001673251924 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.350385959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56984.78901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20235847.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4829.29127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.90823624e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20798352.42 0 0 0 0 0 0 0 0 1.325923305e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10361.74774 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.137824145e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6765067851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.691851667e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.657755809e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.441694028e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04477176052 0 0 0 0 0 0 0 0 0 0 0 0 0.008668240076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2469471437 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.404406654 0 0 0 0 1.839157735 3.256130956e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04262449016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.854455479e-10 0 0 0 0 0 0 9.278624614e-11 0 0 0 0 0 0 0 0 0.05179800966 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.455374064e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.284437649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.147291044e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.794344816e-11 0 0 2.464055025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.609412977e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79412.08951 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11126.4128 0 4.836314856e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.945200405e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.497419073e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43930.54653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000585258509 0 0 0 0 0 0 0 0 0 4.022538453e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.808665832e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.851974919e-12 0 0 0 0 0 0 0 0 0 0 3.000057042e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8839331.47 0 0 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.470435292e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007752403794 0 0 0 0 0 0 0 0 0.5327901302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18.8678158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17134354.92 0 0 0 0 0 0 0 0 0 0 0 0 0 1.973328337e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.030667939e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.90113235e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.571499207e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 3.145254568e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.258412125e-33 0 0 0 1.489944637e-08 0 0 0 0 0 0 0 0 0 0 0 0 1.40763863e-13 0 0 0 0 0 0 0 0 0 0 0 27223986.39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.648725544e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.443670626e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22.53345968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.703846601e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.014256356e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.92046748e-25 0 0 0 0 0 0 0 0 0 3.008355591e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.367224764e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00583810855 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009993840889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [sample_PSD/image.dat] I_err: +0 0 0 0.008182332724 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.388851637e-21 0 0 0 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.816260113e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106.6344508 2.538529552e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.654408318e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.905930144e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 3.698285571e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.460462915e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88977.31414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.818068146e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.065062758e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18915.61156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.989532267e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44.7918693 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.629904579e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.906108499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.153734492e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19891.63396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.14679696e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14122741.65 0 0 0 0 0 0 0 0 0 0 0 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.181800599e-09 0 0 0 0 0 0 0 0 0 0 0 1.198406543e-27 0 0 3.696196465 0 0 0 0 0 0 4.550175764e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.427282771e-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 1.035064216e-27 0 0 0 0 0 0 0 0 0 3599653.233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.921245068e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3871113161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33445917.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.534372561e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.381227214e-09 0 945.3035745 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.875945726e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008694365177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.526397324e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.477712708e-16 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01101538459 0 0 0 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.383050337e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.267159227e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1486.952764 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.638986848e-17 0 0 0 0 0 0 0 7041942.76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.48958924e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 16826348.95 0 0 0 0 0 0 0 0 0 0 0 0 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.154264547e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 353694.2632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15.48530107 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.548156216e-08 0 0 0 0 0 5593.425139 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.263500756e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.241946228e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.377463665e-22 +9.252745561e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004997202123 0 0 0 0 0 0 0 0 0 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.86853437e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 761644.3927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.408667423e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.665977288e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.127066128e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 4.265603403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1064531166 0 0 0 0 0.5003511305 0 0 0 0 0 0 0 0 4741738.488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.269354712e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08463305178 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.487319515e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.04643207e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.436843744e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004389253556 0 0 0 0 0 0 0 0 0 7841409.309 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.511986263e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 693.2388792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.987492713e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.22182776e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.170747182e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.523332528e-32 0 0 0 0 0 0 0 0 0 0 9447973.546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 400120.5918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.468531438e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 176428.1379 0 0 0 0 0 0 0 0 2802786.072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001394348908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26912841.7 0 53.30596537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.353205513e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008767160079 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.598825901e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21458464.74 0 0 0 0 0 0 0 0 0 0 0 0 0 1552549.313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.927633687e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1161224.115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001603160935 0 0 0 0 0 0 0 0 0 0 0 0 1.758826072e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12998332.25 4.37872777e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.25816201e-13 0 0 0 0 0 0 8.760658167e-29 0 0 0 0 0 0 0 3.644849324e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11067457.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.648675086e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001285794989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.841770613e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.263492461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001945358563 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.354896183e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 2.986504273e-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 672.9562809 0 0 0.001936418996 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1516039.12 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 650775.9231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.251659651e-11 0 2.671484818e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.471217888e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04751640638 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.666494913e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.009521262e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.095313068e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.841617927e-09 0 0 0 0 3.05982796e-17 0 0 0 0 0 1.971710449e-14 0 0 0 0 0 0 0 0 0 0 0 6.010680106e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.306498903e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.687098203e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005108824003 0 0 5.033872337e-06 0 0 0 0 0 1.186008647e-24 0 0 0.7291865019 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.75192701e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002040595806 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.452312472e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.372624534e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 2.666365308e-29 5.158280687e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.528929233e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.157919932e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 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.138440632e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.133705496e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.190386761e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.210902234e-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 0 0 0 0 0 0 0 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.31315332e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6183375.437 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.137297502e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.844199947e-15 0 0 0 0 0 946937.0106 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001833706195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 313393.1391 0 0 0 0 0 0 0 0 0 1.843033259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7296.301732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 733543.9558 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.940171176e-05 0 0 0 0 0 1.144818024e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.859743913e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11511443.94 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 5.580302798e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.92790364e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.123636953e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.763465146e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.873113041e-36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11696.31778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.80619748e-26 0 0 0 0 7.899310721e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 257.871128 1067.315254 0 0 0 0 0 0 0 0 0 8.8589397e-31 0 0 0 367394.8768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.448209977e-18 0 0 +0 0 0 0 0 0 0 0 0 0 0 28.23577674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.280300554e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 532844.9818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 697.4754335 0 0 0 0 0 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.514898851e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.384155232e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12557699.44 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11543775.66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.994005617 0 0 0 0 0.01877861099 0 0 0 0 0 0 6.874647576e-22 0 0 0.03674226571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.245769983e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00762020354 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002063234792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1475.876475 0 0 0 0 0 0 0 0 5.985755414e-23 0 0 0 0 0 0 0 0 0 0 0.3593432182 0 0 0 0 0 0 0 0 0 0 0 0 0 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.00941912e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5550552.436 0 0 0 0 0 0 0 0 0 0 0.0004998996013 0 0 0 0 0 0 5006.62717 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6234373623 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 472002.0379 0 0 1.436232718e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.348671835e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.218973106e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.639261538e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.867447102e-11 0 0 0 0 0 0 0 0 0 0 3.530446444e-37 0 0 0 0 0 0 0 0 0 0 0 4.489476856e-16 0 0 3.323313935e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2469529.949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28665.07396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 939.8829962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3801168.187 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 273.0702076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.0066379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001931951349 0 0 0 0 0 30150989.79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.509297134e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.328684223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 750122.536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.230363499e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.652939323e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.006125125e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6661245.223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.581909748e-14 0 5.994775267e-21 0 5.13996433e-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.003045611316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01019734361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.974755561e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182.3155473 0 0 0 0 5.299118908e-17 0 0 0 0 0 0 0 0 0 0 0 0 2.903524104e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.85332277 0 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.973562703e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006322056032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005485581762 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 93.58762245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.150447141e-07 5.242923885e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.926241739e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14.3200989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9375671565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.297723179e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.968084652e-07 0 0 0 0 0 0 1.997627873e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.662093859e-14 0 0 0 0 0 0.07207792537 0 0 0 0 0 1.758518052e-29 0 0 0 0 2.052839996e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.844938586e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.096818433e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.502935514e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.928173954e-14 0 0 8.757705059e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.179783704e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24891267.64 0 0 0 0 0 0 0 0 0 0 1431247.269 0 0 0 0 0 0 0 0 2.57232448e-12 0 0 0 0 0 0 0 0 0 0 0 25317.03505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1030937.043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.369383092e-05 0 0 0 0 0 0 0 0 0 4.79865904e-15 0 1291610.143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17675502.04 0 0 0 0 0 0 0 0 0 0 0 0 6991328.514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.662229081e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 283.1885283 0 0 0 0 0 0 0 0 0 1.246644347e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2090570247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01716460513 0 0 0 0 0 0 0 0 0 0 0 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.202725e-22 0 0 0 0 0 0 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.195307398e-21 0 0 0 0 0 0 0 0 17.68118811 0 0 0 0 0 0 0 0 2.57633703e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009244114716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.813184187e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002440352831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.310427423e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.87531116e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2708185.934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.921684162e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.761019933e-16 0 0 0 0 0 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.03108232e-05 0 0 0 0 0 0 0 0.003421911432 0 0 8.303373845e-13 0 0 0 0 0 0 0 0 0.0467456217 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.67246445e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.188070324e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8992649.145 0 0 0 0 0 0 0 0 0 0 1.830550049e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16874976.95 0 0 0 0 0 0 0 0 0 0 0 3.708486007e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.591181363e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01381728622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2310.654711 0 0 0 0 0 0 0 0 0 0 0 6302.808571 5.68759564e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.543852381e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.491601675e-07 0 0 6.84263636e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.096920711e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8844631.441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3615.05687 0 0 0 0 0 0 0 0 0 0 0 0 1.122418159e-09 0 0 0 0 0 0 1.979491992e-24 0 0 0 0 0 0 0 0 0 0 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.837748616e-30 0 0 0 0 0 0 0 0 0 0 0 6.315439395e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.411813031e-08 0 0 0 0 0 0 0 0 0 0 0 0 6.450777104e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37754296.77 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.125733076e-12 0 0 0 0 0 0 0 0 0 7772.723233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 888.7372372 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.011677745e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.128490836e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.100324994e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.558470387e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.106215549e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58489.90561 0 0 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.965151992e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1040.246601 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.648200915e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.259763623e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62.62176716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.525449732e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.559584242e-06 0 0 0 0 0 1.538547981e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005134813616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.636431498e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00481257887 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 151.1808535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01400621565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57828.78869 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.948688162 0 6.847642484e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6.347545405e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.21201982 0 0 0 1.628853977e-06 0 0 0 0 0 0 4.978297702e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.459436695e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.736315153e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.320598005e-05 0 0 0 0 0 0 0 0 0 0 4.650859513e-12 1.73908397e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.687530575e-08 0 0 0 0 0 0 0 0 0 0 0 0 78449.59963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224579.6072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7794626.497 0 0 0 0 0.531920727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 309.919944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8029646.798 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.1129179 0 0 0 0 0 0 0 0 0 0 0 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.165728929e-17 0 0 0 0 0 0 0 0 0 0 2.846064303e-12 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.700483233e-15 0 0 0 0 0 0 0 0 0 0 0 0 0.001116494343 0 0 0 0 0 0 0 0 0 4.566025402 0 0 0 0 0 0 0 0.01036555248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20.76850399 0 0 0 4415055.728 0 0 0 0 0 0 0 0 0 0.4719361514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5598.389176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.886879527 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.325880207e-08 0 0 2492791.415 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.083582706e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18077308.26 0 0 0 0 0.4384151021 0 0 0 1.132717233e-10 0 0 0 0 5.771934914e-09 0 0 0 0 0 9.521421711e-07 0 0 0 0 0 0 0 8.998967618e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.408913283 4.021601807e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5588.309748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.043791197e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 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.470592574e-18 0 0 0 0 0 0 0.01118977068 0 0 0 0 0 0 0 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.735284933e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04856158236 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.157616207e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.575695256e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7013286.236 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42871.80437 0 0 0 0 0 0 0 0 0 0 0 0 4556.525041 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.484249771 0 0 0 0 0 0 0 1.754263759e-19 0 0 0 1.669581907e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.746563443e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.013393034e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20692761.19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.475387314e-06 0 0 0 0.01056225197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 4.710901494e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 6.752370974e-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 5.626124627 0 0 0 0 0 0 0 0 0 0 0 0 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.140197708e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.940499149e-18 0 0 0 4994702.144 0 0 0 0 0 0 0 0 0 0 1.170488561e-26 0 3362963.473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02630288976 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73.56484786 0 0 0 0 0 0 2.100405075e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 183.8680945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11147370.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002022465182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.68897259e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.583092905e-24 0 0 0 0 0 2.782195318e-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 5.089863795e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.092218515e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001234801515 0 0.000256429688 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004476342547 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12223987.52 0 2.215983252e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 585587.2708 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.251467271e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002188659298 0 0 0 0 0 0 0 0 0 0 0 0 3.373660275e-16 0 0 0 0 0 0 0 0 5.593963255e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01923487405 0 0 0 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.023293332e-16 0 11116.91759 0 0 0 2485235.143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100.3055399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.199017417e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.24227045e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001011735268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.484654637e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.324644245e-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 2.236242026e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.511241913 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2692.482669 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.243097806e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17483.10387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.629462438e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.881111298e-13 0 0 0 0 0 6085045.065 0 0 0 0 0 0 0 0 0 51937747.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.824895491e-05 0 0 0 0 5.185681947e-21 0 0 0 0 0 0 0 0 0 1.579335278e-08 0 0 0 0 0 1.461967665e-10 0 0 0 0 0.003463904337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.353818976e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.446923535e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.594431705e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.761219115e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.073665529e-08 0 0 0 0 0 0 35108754.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.488794912e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.581579442e-11 0 0 0 0 0 3.989069863e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73761.52435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 803.4783854 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2741.887369 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.670114751e-14 0 0 0 0 0 0 0 0 0 0 0 2.997284316e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.550143709e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.636489101e-14 0 0 0 0 0 0 0 0.2424349672 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002703182917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11829523.44 0 0 0 0 0 0 0 0 0 5.187343889e-08 0 0 0 5.529029836e-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 1.473796826e-20 0 0 0 2.064651621e-11 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.437502956e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43879.65283 0 0 0 0 0 0 0 0 0 0 2.162558274e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.531143602e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.886009204e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08422221488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11301724.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01135885402 0 0 0 0 0 0 0 0 0 0 138.155695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.149961158e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5645684.683 0 0 0 2.285476211e-08 0 0 0 0 0 0 145.3741886 0 0 0 0 0 0 0 0 0 5089300.303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001097666236 0 0 0 0.04301810815 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.247190983e-24 0 0 1057901.108 0 0 0 3882245.219 0 0 0 0 0 3.333738354e-34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.293569107e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.349140864e-14 0 0 0 0 0 0 0 2.43122762e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 334.9682861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79.51924726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008542266316 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.209212842e-10 0 0 0 0 0 0 0 0 1522183.294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 467669.7145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3315046.857 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 662261.8797 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.773866965e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.297214227e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181.3410214 0 0 0 0 0 0 0 0 4.015695281e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 309760.1075 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.80982721e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.256920744e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 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.899770191e-07 0 0 0 0 0 2.718970605e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.106766422e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01182596966 0 0 0 0 0 0 0 0 0 0 0 1.14362773e-14 0 0 0 0 0 0 0 0 0 0 0 5.948307435e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.157140942e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.717115668e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 176961.3964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4206087148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.052129885e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4476.884129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.783643121e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.361696209e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.633373692e-08 0 0 0 0 12120015.76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13197188.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9238857.171 0 0 0 0 0 1.010783859e-18 0 0 0 0 0 0 0 0 1874057.029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16481.70682 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 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.45935269e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.949033744e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7905006.505 0 0 0 0 0 0 0 0 0 0 1.759625776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.600699604e-08 0 0 0 0 0 0 0 0 0 0 0 6.775965332e-31 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.970770458e-12 0 0 0 0 3.509719901e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18.54816816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4726324.214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04360799914 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.927256943e-07 0 0 0.000843381104 0 0 0 0 0 0 0 0 0 0 0.02360551234 0 353451.1765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19076.68425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.747984674e-09 0 0 0 2.95772658e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.065410562e-06 4.096540695e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 434.1453402 0 0 0 0 0 0 0 0 0 0 0 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.655357312e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 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.789046413e-17 0 0 0 0 0 875.4262261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1652365836 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.914938855e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 532074.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.740136858e-09 0 0 0 0 0 0 3.050534455e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 1.254769887e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1540187564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.842570304e-10 0 0 0 0 5.164640985e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001323906776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.898976591e-06 0 0 0 0 0 0 0.0002153604138 0 0 0 0 0 0 0 0 0 0 0.0005925596575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18736577.04 0 0 0 0 0.01040044689 0 0 0 0 0 0 0 0 0 0 0 0 7823.755805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.010503539e-10 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01810071616 0 0 1.114100641e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 280.2028511 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9638241.149 0 0 0 0 1.853758069e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5637130.075 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5479.60276 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12203.73537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 801438.2869 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.037808358 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.054411377e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.19208817e-18 0 0 0 0 0 0 0 0 1.067019694e-11 0 0 5.459184376 0 0 0 0 0 0 0 0 0 5.228123874e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.276510686e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.200261752e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1.099129558e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4066.320853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.137277342e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1256768.238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3387137.339 0 0 0 0 0 0 0 0 0 0 0 0 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.539751255e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.677669642e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.24671736e-07 0 0 0 1.133077569e-06 0 0 0 0 0 0 1.820431976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.950227704e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5046313255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 666793.8611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.59184021e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.573013662e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14107126.61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.701904865 0 0 0 0 0 0 0 0 0 0 0 8.461363002e-17 0 0 0 0 0 0 0 0 0 0 0 0 477371.107 0 0 0 0 0 0 0 0 0.0004434076329 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5812375.895 0 1.6354149e-08 0 0 0 0 4966486.903 0 0 0 0 0 0 0 0 0 0 0 0 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.320725322e-10 0 0 0 0 0 7582.991589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2636839.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01904096782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.274347341e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.497500426e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2030747.967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32413134.06 0 0 0 0 0.007209397851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.974494034e-16 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01422161616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43374.71392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1154810.405 0 1.383976476e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2843726.483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5730345.253 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14066255.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.622634115e-25 0 0 0 0 0 0 0 0 0 0 13857.19681 0 0 0 0 0 0 0 0 1480324.897 0 4730.194363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.486340137e-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 1.362831109e-16 0 0 0 0 0 0 0 15430069.9 0 7.057604433e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.774599692e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.884571612 0 0 0 0 0 0 0 0 0 1.449399503e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.704418633e-18 0 0 269.7658365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01427038294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13322115.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.857075189e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001464163468 0 0 0 0 0 0 0 0 0 0 0 0 0 1.760873954e-07 0 4.874594421e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10085590.9 0 0 0 0 0 0 0 0 0 3.996415482e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113765.421 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05801860574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.951258495e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.862084078e-06 0 0 0 28.85022715 0 0 0 0 0 0 0 0 0 0 0 0 0 1.078857544e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.768117957e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2380.529158 0 0 0 0 0 0.0001364732111 0 0 3.87111531e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.729283166e-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 1.082479222e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.253446753 0 0 0 0 0 0 0 589.5401545 0 66172.58195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13816634.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25656329.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14180156.68 0 0 0 1.44637183e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.933542272e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.554605615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.021860145e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 6.067321834e-13 0 0 0 0 7682681.955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.810117089e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.558333667e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.626830127e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.006761005e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.021076891e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.979645306e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.60238966e-14 1.550184132e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 900.5525445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.602952225e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.281481136e-16 0 0 0 0 0 0 0 0 0 0 0 0 35817.64625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06569920127 0 0 0 0 0 0 0 1.171233459e-08 0 3532258.437 0 0 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.890225211e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3800244649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9639917.184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.047938603e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.134969542e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12054553.61 0 0 0 0 0 0 0 0 0 0 0 0 0 10623665.95 0 0 0 0 0 0 0 0 0 0 2632180.987 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004696963982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 240.1897259 0.003773270136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4122477.713 0 0 0 0 8082.037027 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.606221255e-06 0 0 5.34640781e-24 25181.38507 0 0 0 0 0 0 0 0 0 0 0 6.96716577e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.436292168e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.051771961e-16 0 0 59.16944176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.157699271e-11 0 0 0 0 0 0 0 0 +0 0 0 0 5018.101985 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9131264174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29.87868279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.512949275e-09 0 0 0 0 0 0 0 0 0 0 0 5.71114119e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.01801494e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.043042467e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1147.724858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.948611567e-11 0 0 0 0 0 0 0 0 0 0 8.266328671e-20 0 1.85744584e-13 0 0 0 0 0 111544.5295 0 0 2231509.384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.335042303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001759549505 0 0 0 0 0 7.531245967e-16 0 0 0 0 0 843025.3884 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26410422.5 0 0 0 0 0 0 0 0 0 0 0 0 1.859594707e-08 0 0.01030110902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.69567899 0 0 0 0 0 0 0 0 0 0 0 0 3674457.518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.335455179e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.559824444e-17 0 0 0 0 0 0 0 0 0 2.403131978e-11 0 0 17228709.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000418898407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.101917684e-08 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 866.4223651 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001327762838 0 0 0 0 0 0 0 0 0 0 0 1.207779514e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.708015508e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7031.253411 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0321767946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.374787268e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.053453893e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002778238833 0 0 3.712037701e-11 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.085097692e-20 0 0 0 0 0 0 0 0 0 0 0 0 1.610564347e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14688056.34 0 0 0 0 0 0 0 0 0 0 57.72523175 0 0 0 0 0.0003437589913 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.866338907e-14 0 0 0 4.007591867e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.41109683e-08 0 0 0 0 0.0177196707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 282.0072515 0 0 0 0 0 1899913.439 0 0 671.5499255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28963.99411 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04274034977 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1288742.501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8233.183147 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12958294.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006320596439 0 1.921008913e-12 0 0 0 0 0 0 0 0 0 0 0 7.358387148e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1134.1152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 21.38298333 0 0 0 0 0 11850.79726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02938839951 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37907.58396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 888.7662365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1072033.61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.441590802e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.699293664e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2517.659323 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.85973437e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4921393729 0 0 0 0 0 0 0 0 0 2.728637521e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.579008865e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08297719222 4.398413513e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10483.77778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.669208459e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38454.7214 0 0 0 0 0 0 0 8.336588675e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.0007448913216 0 0 0 0 1.400199723e-19 0 0 0 0 0 0 0 1.196886277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002733013469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6476135.704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.072245961e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.335630775e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.526044941e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.355377425e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.420125714e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00192652228 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.008461811 0 0 0 0 0 0 0 4.610121721e-12 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001921964126 3.868527879e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.916409026e-06 0 0 0 0 0 0 0.3674228968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 595276.3729 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.43604775e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57.57619231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8827.221159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.457476284 0 0 0 0 0 0 0 0 0 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.901524962e-11 0 0 0 0 0 0 2.301577423e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.357181925e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.183777321e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65.65020015 0 0 0 0 69.33677877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.050604801e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 59.92991891 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.673457134e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 566.0200417 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48.71400489 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.596915696e-16 0 0 0 0 0 0 3.699343314e-18 0 0 0 0 0 0 0 0 0 5.18334193e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.391132297e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2649023.608 0 0 0 0 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.978168084e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.401786319e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.0328111e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 311662.0204 0 0 0 0 0 0 0 0 0 0 0 2.084600238e-18 0 0 0 6.838857937e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05728079539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.622964844e-12 4.491026111e-14 0 1.642575457e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.777435983e-10 0 0 2.827784051e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 4.926948145e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004020490128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8592.609032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35.95468652 0 2.275017176e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005080697573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.018925064e-11 0 2.589565071e-09 0 0 0 0 0 0 0 0 0 0 0 1.210223217e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.457291704e-12 0 3276.472947 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1173526.212 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 148.8188875 0 0 0 7.455646121e-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 1.238772773e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.941120497e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3519602.142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.413602432e-12 0 3.654889449e-07 0 0 0 0 0 0 0 959.2934834 0 0 0 0 2.231710413e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009354255277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.399052494e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 342556.4449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.306883504e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008864759562 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24497.95362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19864.43462 0.01333828121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.7457637583 0 0 0 0 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.667151206e-23 0 0 0 11815151.47 0 0 0 0 0 0 1.130073441e-10 0 0 0 0 0 0 8.209497545e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.408413698e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4257094669 0 0 1.082736471e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16743.4844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.134582994e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.477163086 0 0 0 0 0 0 0 0 0 0 0 0.002069235633 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.286627306e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1.024259416e-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 7.633659295e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.128620187e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 8.536781544e-11 0 0 0 0 0 0 0 0 0 0 0 6736598.153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.42017388e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6203818.869 0 0 0 0 0 0 0 0 0 0 0 0 0 42.71119678 0 0 0 0 0 0 0 0 0 0 0 2.049532293e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.441604487e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001192860896 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004917277432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37072252.6 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.869790725e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23924.06417 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.426939852e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.233809908e-09 2.4053602e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.288657427e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62414.1674 0 0 0 0 0 0 0 0 1.303468884e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.093703264e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.674928369e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41815.95133 0 0 0 0 0 0 2319.123382 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.883850129e-12 0 344506.3592 0 0 0 0 0 0 0 0 0 2656433.327 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 740.6039861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1019.197662 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2346187809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.620949657e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.847368669e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8174014.838 0 0 0 0 0 0 0 0 0 1.777209499e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.331966353e-25 0 0 0 0 0 0 0 0 0 0 0 2.64592813e-16 0 0 0 0 0 2.86682588e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.185336896e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159.2530393 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7590.271557 163.4487696 0 0 0 0 0 0 0 0.01575956608 0 0 0 0 0 0 0 3.148311546e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.701562875e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4253.163146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.250626892e-07 0 0 0 0 23831566.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35977416.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1900876214 0 0 0 0 0 0 0 0 0 0 0 1.695924063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1975912.095 0 0 0 0 0 0 0 1.805697226e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 438.9447871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5354831468 0 0 0 0 1.161017385e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.625294842e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01366968956 0 0 0 0 0 0 0 0 8.971177882e-08 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73.31050848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.751543533e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1984939.924 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.245851569e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.234080523e-16 3230950.881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 82218.76193 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 268.5068734 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.043057264e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004093097871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02261700097 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.974019737e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.881443608e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005361218496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32469.18429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.692100908e-17 0 0 0 0 0 0 0 0 0 0 0 0 252.1914814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4931754.771 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3151284.824 0 0 +0 0 0 0 0 0 0 0 0 0.009440701064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.0447981 0 0 0 0 0 0 0 0 0 0 0 0 3.537732353e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.602328638e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.089812751e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.08136541e-09 0 0 0 0 0.4262686308 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.177346736e-09 0 0 0 0 0 0 149157.5281 0 0 0 0 0 5.653866579e-06 3.500864946e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15115554.04 0 0 0 0 0 0 0 0 3.023674822e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.349853979e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.5896342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 98.67136548 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4539913.763 0 0 0 0 0 1.127377085e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.365309286 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3913320303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.296232855e-08 0 0 0 0 0 0 3.451527091e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6892170.633 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.615996572e-10 0 0 0 0 0 0 1.700971275e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.10925121 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07756231944 0 0 0 8.446252046e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.993634269e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 503756.0992 5.688558946e-11 0 0 0 0 0 0 0 0 0.1673941265 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.432256875e-06 0 0 0 0 0 0 0 0 0 0.9890676437 0 0 0 0 0 0 0 0 0 0 0.04074307359 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08624214316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.078676705e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19438940.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004049162051 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.603957412e-05 0 0 0 0 0 0 0 132046.0794 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.553476956e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14.26013513 0 0 0 0 0 0 0 0 0 0 0 0 0.05460288376 0 0 0 0 0 0 0 0 0 0 0 0 66.34340204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.556621344e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.264868026e-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 4.647720224e-08 0 0 0 0 0 0 0 0 0 0 17466.40529 0 0 0 0 0 0 0 0 1.560607326e-08 0 0 0 0.06492448935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.359967955e-06 0 0 0 0 0 0 0 10.56745639 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.918048897e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.90336446e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.594544479e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3323278.606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.669948149e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22.86542085 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17267252.26 0 0 0 +0 0 1.40612552e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.228955741 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001228009957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 221.1831422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009446472544 0 0 0 3950644.397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57814.62794 0 0 0 0 0 0 0 0 0 0 0 0 0 1.829838236e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.040825502e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.684594165e-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 2.12316682e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13795.84304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.29367588e-07 0 0 0 0 0 0 11.61973998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.979840587e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.475913183e-07 0 0 0 0 0 0 6.56057357e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01129929622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.054087471e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.867137415e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 772.3676494 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1055263.418 0 0 0 0 0 0 0 0 0 24.41849709 0.4961676927 0 0 0 0.04163266199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4162340323 0 0 0 0 0 0 0 0 0 0.01445479876 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.220259661e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8716596.168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1631118.357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71982.55155 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0260193391 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04744715476 0 0 0 0 0 0 0 0 0 0 0 0 1.150965919e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5295532353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1386.113626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2953412.389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0.2762570539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.197605569e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.126337188e-18 0 0 0 0 0 0 0 0 0 0 6045.664363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 684912.9849 0 0 0 0 0 0 0 1.357674988e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1984684091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.668621728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004337417059 0 0 0 0 0 0 0 0 3.597256292e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3871982231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.95850542e-11 0 0 0 0 0.1199436558 0 0 0 0 28.73822671 0 0 0 0 0 0 0 0 0 0 0 0 3.943610625e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.16266248e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 2.046007101e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.611038005e-13 0 0.8533515785 0 0 0 0 0 0 1.009745805e-13 0 0 0 0 0 0 9912200.574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.483577557e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.081808022e-13 0 0 0 0 0 0 1.421699232e-10 0 0 0 0 0 0 2.365049732e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001090489075 0 0 0 0 0 0 0 0 0.001320924333 0 0 0.5168927413 0 0 0 0 0 0 0 0 0 72889.0957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.053173915e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34159.67896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0006892454643 14353234.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6657118324 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27392419.29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51.88873099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 83742.67595 1.450493967e-13 0 0 0 0 0 0 6.273514114 2.670860726e-32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.008697562e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2759.218499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 409012.4322 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.227126735e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.77127569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008009542699 0 0 0 0 0 0 0 0 0 0 1.075179271e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 3.845723386 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1748388.066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.391917996e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.284269115e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.065106817e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4985907.175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 814629.3628 0 0 0 0 0 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.011289881e-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.0009479335672 0 0 9734825.296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.199677375 0 0 0 0 0 0 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.068449512e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4729.146699 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004044582525 0 0 0 0 0 0 0 0 0 0 0 1.984685474e-10 0 0 0 0 0 0 0 0 0 0 0 0 24.84575504 0 0 1.751533226e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.855032635e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.415231928e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1862586858 0 0 0 0 0 0 0 +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.829064214e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06135612267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.619390643e-10 0 0 0 0 0 0 0 0 0 1.947571894e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41.02963757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.533630824e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 87251.69163 0 0 0 0 0 0 0 0 0 0 0 0 0 2839011.735 0 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.527888979e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001195140699 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01028926804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.243811713e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.370342601e-08 0 0 0 0 1.410672224e-23 0 0 0 0 0 0 1.113485548e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.362327959 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.197976509 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.864053008e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1346559.204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15274.35028 0 7734957.267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.069672663e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02915460431 0 0 0 0 0 0 0 229942.8578 0 0 0 0 0 158.0372978 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004737169041 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 181365.7386 0 0 0 0 0 0 0 0 0 0 1989998.449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.694706232e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.297038911e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.645505489e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.674199708e-10 0 0 0.00113334728 0 0 0 0 0 0 0 0 0 0 0.00191216817 0 0 0 0 0 0 0 0 0 0 0 4396056.168 0 0 0 0 0 0 7.620607745e-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.000513228453 0 0 0 0 0 0 1.939974613e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.597207481e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72602.32803 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.990629954e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.740637197 0 0 0 0 0 3.464814221e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.304652613e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1294929.616 0 0 0 0 0 0 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.651180617e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.507291743e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.117041862e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3598296347 0 0 0 0 0 0 5328221.523 0 0 0 0 0 0 0 0 74732.35553 0 0 0 0 0 0 0 0 0.03615364999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004287757867 5.824202374e-08 0 0 0 0 0 0 0 0 0 0 0 0 41546.30844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6204.629844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06380973414 0 0 0 0 0 1.55130802e-20 0 0 0 0 0 0 0 0 0 0 6713321.832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25142.96923 0 0 0 0 0 0 0 0 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.292543806e-23 0 0 0 0 0 0.003860518946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2820.704695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.277732326e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 1.582076544e-14 0 0 0 0 0 2.027334058e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1405721126 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001017234954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.464010144e-20 0 0 1.847069844e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 236358.4113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001046870168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 255.1696034 0 0 1068.666407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.83863697e-12 0 9.762987834e-14 0 24548757.81 0 0 0 0 0 0 0 0 0 0 4.614458128e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.099890504e-12 0 0 0 0 0 0 0 0 0 4.232772233 0 0 0 0 160.2847851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16103.09229 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5433.681139 0 0 0 0 0 0 0 0 0 9.665093875e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.705694323e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3635304.217 0 0 0 0 2.247134431e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.758359899e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34628.62411 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1135638.791 0 0 0 0 0 17620748.46 0 0 0 0 0 0 0 0 0 0 0 5708450.379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.589213837e-05 0 4.348478914e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 217043.1847 0 0 0 0 0 0.0008278988631 0 0 0 2.437450474e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 4.71910335e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 111924.1288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.308034457e-28 0 0 0 0 0 0 0.009394118811 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10701957.07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.916955712e-08 0 0 0 0 0 0 0 2.253087905e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.027171344e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4117.805397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.095903906e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.666469649e-21 0 0 0 0 0 0 0 0 0 0 0 0 1.317347705e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00474246383 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.705421302e-05 0 0 0 0 0 0 431.8576979 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 4517.018411 0 0 0 0 0 0 0 0 0 0 3.697271843e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.997823262e-13 0 950.6006427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 406.0079902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 280213.64 0 0 0 0 0 0.9972849999 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9691.288906 0 0 0 0 8.966727619e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.614405912e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0.004079583904 0 0 0 0 0 0 0 0 0 0.004013726375 0 0 0 0 0 28883.60556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.93309207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26803788.13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3972159332 0 0 0 0 0 0 0 0 0 0 0 0 0 0 185.315785 0 0 0 0 0 0 0 0 3.36136666e-19 0 0 0 7.284050313e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.316021393e-14 0 0 0 0 1140.781093 0 0 6.973799702e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.688339118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1822399.404 2.86295734e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.249456686e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.291407741e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.203299365e-12 0 0 0 0 0 0 0 0 0 +5691.984953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.249946232e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70840.49797 0.08046757156 0 0 0 7604838.302 0 0 0 0 15522596.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4575.910012 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001883645805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.83253582e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18628832.45 0 1.388794113e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.140274313e-19 0 0 4074304.403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004567944117 0 0 0.0001208064634 0 0 0 0 0 0 0 0 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.239833504e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13473146.05 0 0 0 0 0 0 0 2.322671366e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.592890716e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16487000.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02263399164 0 0 0 0 0 0 0 341159.6361 0 0 0 0 0 0 0 0 0 0 0 6121427.474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4254592153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.72608935e-17 0 0 0 0 0 0 0 0 0 1.763691413e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.742382952e-16 0 0 0 0 0 0 0 0 1.861366015e-06 0 0 0 0 0 0 0 0 0 0 1.034602098e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.505489735e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.120124011e-16 0 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.115715413e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 174238.0088 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.705634155e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2649464.196 0 0 0 0 0 0 0 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.467097269e-19 0 0 0 1.72598139e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.911676634e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.530040198e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91707.57439 0 0 0 0 0 0 0 0 0 0 0 8.211044156e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30333175.21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.065075248e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 248492.036 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 3091426.934 0 0 0 0 0 0 0 0 0 0 0 0 0 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.501298043e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.011462169e-09 0 0 0 0 0 0 1795136.226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.51300719e-19 0 0 0 0 0 0 0 0 0 1.766712316e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1160697301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.45930798e-13 0 0 0 0 0 0 0 0 0 0 0 0 374817.6774 0 5818259.02 0 0 0 0 0 3.216728874e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.912717125e-13 0 0 0 32780643.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22978666.74 0 0 0 0 0 0 0 0 0 0 0 0 0 184954.8678 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0001260333822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.242614021e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.021253562e-05 0 0 0 0 0 0 0 0 0 0 1.603109899e-13 0 6214540.147 0 126133.4734 0 0.006202717166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 144.0037119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.61215261e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.822963025e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24.08823645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 162500.2701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.364167709e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.753012395e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27955.23178 0 0 0 0 0 0 0 1930616.493 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 547.1680666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8091071.704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82037.76431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003761231245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18520196.38 0 0 0 0 0 0 0 0 0 0 264.3690971 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4549.315545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001574275021 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56.73790606 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001285293798 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08556831536 0 0 0 0 0 0 0 5.06423217e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.749995182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30522.81503 0 6.674328885 0 0 2.463015254e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003820801781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.666802184e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003178398379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.215920949e-26 0 0 0 0 0 0 0 0 0 0 0 1.155033694e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6638825.591 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.045709476e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001103841104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0.2952092896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1651623.829 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 423124.5759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1423470.484 0 0 0 0 0 0 0 6.972687927e-16 0 0 0 0 0 0 21473.54969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.520335648e-23 0 0 0 0 0 0 0 0 0 0 1344.913154 0 0 0 0 0 0 0 0 0 0 0.00208272897 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.862167023e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1034630723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3431.153267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007495653797 0 0 0 0 0 0 0 0 0 0 0 0 0 222.9407245 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.873304801e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.497809866e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.142633207e-19 0 0 0 0 0 0 0 0 0 0 0 0 6.824900838 0 0 0 0 0 0 0 0 0 1.398616911e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04494150694 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04686495792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.600861586e-19 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.750465219e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5489852103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2991171166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20326.91358 0 0.006733691542 0 0 0 0 0 0 0 0 0 0 0 0 0 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.964652681e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.189197007e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5923.550117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4673439329 0 0 0 0 0 0 0 0 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.088811505e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.37964047 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.740038711e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.594002085e-05 0 0 0 0 0 0 0 0 1.339553501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.604344286e-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 1.802715246e-08 7341189.989 0 0 0 0 0 0 0 0 0 0 0 14.88742649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5796952.701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.176280032e-21 0 0 602516.5468 0 3.493917929e-21 4785.755746 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3834.517403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03256762366 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1362670.879 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.35029848e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.401142988e-22 0 0 0 0 0 6.936702987e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.29782781e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001784095378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005171194566 0 0 0 0 0 0 6.241405136 0 0 19315573.66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001338906396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.547371674e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.145846871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.950283704e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.965150487e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.526181531e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.159979141e-06 0 0 0 0 0 0 0 0 0 0 8.302253918e-07 0 0 0 0 0 0 0 0 0 0.002145515967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28022677.55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 702.5103015 0 0 0 0 0 0 0.005201803705 0 0 0 0 0 0 0 0 0 0 0 0 0 1.153491777e-35 0 0 0 0 0 0 0 0 51.27635141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.920149214e-05 0 0 0 0 0 0 0 0 0 0 0 9.296423653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005826877601 0 0 0 0 0 0 0 0 0 0 0 0 0 6428800.446 0 0 0 0 0 0 37738.60711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7229.033628 0 0 3.057615444e-10 25425645.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.051916601e-13 0 0 0 0 0 0 0 0 0 0 0 0 1.223819229 0 0 1.388914728e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.259189412e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4424023.749 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6979.859876 0 0 0 0 0 0 0 0 0 3.303580881e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05103856426 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 844.4054032 0 9.220336027e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.680948352e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.110447717e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002053799481 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.175486065e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.538146646e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.456767404e-17 0 0 5.205462751e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.238634284e-05 0 3.222571423e-17 0 0 0 0 0 0 0 0 0 3.917904014e-13 0 0 0 0 8755082.346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1428968.916 0 0 0 0 0 0 0 0 49785.30826 0 0 0 0 2.489910651e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1180321.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6295221.697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.116005067e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 287635.7944 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002274394425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.141402772e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 664304.2967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.054861106e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350627.5242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 116116.1168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007037957279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1670.702767 0 0 0 0 0 5.323759877e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 295010.9677 16103259.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5206.244907 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 574.6200647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23110485.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.173492936e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13738.67707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008161768488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.533987276e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1593600.275 0 0 0 0 0 0 0 0 0 1.895257172e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4903600.693 0 0 0 0 0.01416130381 0 0 0 0 2.724724346e-11 0 0 0 0 2.724714987e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5953898.219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.807857284e-10 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.034132216e-05 0 0 0 0 2.154077639e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.307385176e-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 7.794337797e-19 0 0 0 0 0 0 0 0 0 0 0 0 31.42148858 0 0 0 0 0 0 0 0 0 0 0 0 0.001063058212 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2988.898736 0 0.0001022700194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.699139254e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.89988102e-13 0 0 0 0 0 4.928927286e-12 0 0 0 0 0 0 0 0 0 0 0 1.368114312e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 354.7194228 0 0 0 0 0 0 0 629039.9667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.107168353e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 7.756824324e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 5943118.436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.718456311e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 754724.2033 0 0 0 0 0 0 7821.360065 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 390.1868788 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.762191273e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.690922391e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.693608326e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.504630508e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01668318117 0 0 0 0 0 0 0 0 0 0 0 0 1.78177575e-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 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.149429881e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.843491933e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8053130.277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.042054037e-14 0 0 0 0 0 0 0 0 0 1782600.782 0 0 0 0 0 0 0 0 0 1.286817577e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 530634.0723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.533091675e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.845659075e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.000963299e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 670555.6457 0 0 0 0 2.667850198e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.726845052e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.065780716e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.556913473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.812440449e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.599535188e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19633.9257 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4411808.037 0 0 0 0 0 0 0 1.976575386e-14 0 0 0 0 0 0.0009342210106 0 0 0 0 0 0 0 0 5.643586242e-16 0 0 1.921277633e-24 0 0 0 0 0 0 7.378231212e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 3.163072684e-05 0 0 0 0 0 0 0 0 0 7.597611234e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.20156854 0 0 0 0 0 0 0 1.52248302e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.795588352e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.640767143e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.177933606e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.959221665e-14 0 0 0 0 0 7.347666701e-10 0 0 0 0 0 2.509857988e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.088749149e-14 0 0 0 0 0 0 0 5.088543347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8263339932 0 0 0 0 0 8637197.131 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.102072888e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 855377.1697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.077183791e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56263.01772 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.361355888e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15503684.73 0 0 0 0 0 0 0 0 0 0 0 3560242.854 0 0 0 0 0 0 4.166441e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.7534006e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01155578226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1733.285777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.61989975e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.157443936e-33 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3287.746655 0 0 0 0 0 0 0 0 0 1.023924534e-05 0 0 0 0 0 0 0 1.065703854e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.95308622e-11 0 3.392688218e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29.06083696 0 1.836997271e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 589.795177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66116.78546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 311794.7368 0 0 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.149910085e-05 0 0 0 0 0 0 0 0 0 0 0 3.613324942e-09 0 0 0 0 1.045745227e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.448532997e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.747457493e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.463155061e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.010903979e-06 8.339861345e-20 0 0 0 0 0 0 21.44442634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.879464047e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3.928014813 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47.42980991 0 0 4.232677442e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.313545771e-13 0 0 0 0 0 372.285958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 540.2309787 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5641973057 0 0 0 0 0 0 0 0 0 0 639033.488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 142126.1077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.111709084e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002189959785 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.248471644 0 0 0 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.537485666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.374721226e-10 0 0 0 0 0 0 0 0 0 6.863498795e-05 0 0 0 0 0 0 0 0 0 0 1.585431694e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5998578.483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 286.7734683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 3854.194578 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.005749958e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 512.5887007 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.358805551e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.200794402e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004625161472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.037207418e-06 0 0 0 0 1912727.647 57.92109497 56737.90261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.288550808 0 0 0 2.692681545e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2042679.269 35708886.53 0 0 0 0 0 0 214.8649615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 377430399.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1292.306083 0 0 0 0 0 0 0 0 0 0 0 0 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.534568408e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29841.8573 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.936113668e-11 +0 0 0 0 0 1.274382047e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.394477403 0 0 0 0 0 0 2.769502675e-14 0 0 2200530.089 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 104703.9718 0 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.028035437e-17 0 0 60814.18356 0 0 0 0 19191.29197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.536865007e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.0003842758967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0.9311624253 0 0 0 0 0 0 0 0 0 2.072676652e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.528667903e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.574063363e-16 0 0.03486774384 0 1.716622931e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.794092487e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.656651635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.214630689e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.237825071e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02368602116 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.167537714e-13 0 2.068820556e-05 0 0 0 0 0 0 0 0 0 0 0 0 4.57641354e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25.20769777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 300362.5145 0 0 0 0 0 0 3.218325356e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.169930107e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.840797415e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20097.71996 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.038428694e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.1396818e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4692075.622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.177446779e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007972358589 0 0 0 0 0 0 0 0 0 0 0 0 0 1.08734101e-08 0 0 0 0 0 0 0.0009189031287 2.611554496e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.503920489e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1712.061181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.705684484e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1661419.258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.508836321e-09 0 0 0 0 0 344.1974574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008309353634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.871859153e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.469601703e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.622864349e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.83002671e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 21673.91387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29.67364792 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.854469687e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07856547888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12581002.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0118783768 0 0 0 0 0 0.0002600616148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.749324974e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 450.7682364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.456467612e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.46337094e-20 0 0 322.182704 0 0 0 0 0 0 0 0 0 0 0 3.296960974e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.727422837e-07 0 0 0 0 0 0 0 0 0 0 0 0.8081304674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02883712939 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17177611.74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004525053757 0 0 0 0 4.873997538e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002519669501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1353.68113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.225231528e-09 4.944398708e-10 0 190.138046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100.320728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.405671079 0 0 0 0 0 0 0 0 0.2799046234 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.062973435e-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 4.720728611e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53239.19482 0 0 0 0 0 0 0 3.442712205e-10 8.392665779e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2858334261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.67759878e-14 0 0 0 0 0 0 0 0 0 0 0 1457331.754 0 0 0 0 0 0 0.8412706555 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2185.556125 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.569847074e-09 0 0 0 0.0008159617049 0 0 0 0 0 0 0 0 7.016415528e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 605.3376637 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.814599588e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000260773575 0 0 0 0 0 0 0 2289357.773 0 0 0 0 0 2.673283367 0 0 0 0 0 0 4409851.346 0 0 0 0 0 1.811121882e-10 0 27057.39946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.818766904e-07 0 0 0 0 0 0 0 0 0 0 7.198050745e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.890844896e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.499674686e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.215181249e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.403631913e-09 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1895835.795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 534.9490189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2251245.938 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007945310577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.269165808e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2911.190854 4.79350854e-08 0 0 0 0 0 0 0 20517.23426 0 0 0 0 0 0 0 1.360154715e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 222422.6625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.847328772e-06 0 0 0 0 0 0 0 2.00949937e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.116431172e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.697891409e-17 0 4.205568449e-13 0 0 0 0 0 0 2852991.255 0 0 0 0 0 0 0 0 0 3.162522406e-21 0 0 0 0 0 0 0 0 0 0 2.016932972e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.856981101e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2345795.425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.72808918e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009025402675 0 0 0 0 0 0 0 0 6.259532298e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.667578943e-07 0 1.487744704e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.040279549e-06 0 0 0 0 0.0269347573 0 0 0 0 0 0 0 0 0 0 0 0 0.004295498006 0 0 0 0 0 7.704024956e-24 0 0 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.133636585e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 2.011799229e-07 0 0 0 0 0 0 0 0 1.031512265e-10 0 0 0 0 0 0 0 0 0 0 0 299612.8912 1.302586405e-13 0 0 0 0 0 0 0 0 1768385.731 0 0 0 0.0002151564046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.263353338e-06 0 0 0 0 0 0 2.23844669e-14 0 0 0 0 0 0 0 0 0 0 1.031938127e-11 0 0 0 0.003694493427 0 0 0 0 0 0 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.170370701e-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 0 0 0 0 0 0 0 0 0 5.39898841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 811576.3412 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15409522.89 0 0 0 3392.182795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.714633192e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.009266412e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.033745902e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6345553.314 0 0 0 0 0 0 0 0 0 0 9.553751598e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 150394.004 0 0 0 0 0 0 0 0 0 0 0 1.091792597e-13 0 0 9.547665952e-06 0 4.5473134e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 5.377624696e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.593912442e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.844111018e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 102.1419259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.912226413e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.062929855e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 6744849.909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.649914978e-14 0 0 0 0 0 0 0 1.264651944e-06 0 0 0 0 0 0 0 0 0 3.057237086e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4270055122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0326974022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6384957841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8269.376196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.093495913e-45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.410114623e-15 0 0 0 0 0 0 0 2.317094064e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.42022622e-06 0 13858513.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28991.64826 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 541998.0382 0 0 0 0 1.600372202e-13 0 0 0 0 0 0 0 0 0 0 0 0 86.93635705 0 0 0 0 0 0 0 0 0 0 7.290362441e-09 0 0 0 0 0 0 0 0 30966.14351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 814804.5347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 360.1679302 0 0 0 0 0 0 0 0 0 0 0 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.582681729e-14 0 0 0 0 0 0 0 0 0 0 0 0 6.708880965e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88.46576381 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.775089374e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6485.437495 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.009884966e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.735016456e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25301.2556 0 1989.423372 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.832739799e-17 0 8.936219069 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.259505185e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.684918775e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.405668535e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16952216.6 0 0 0 0 0 0 0 1.717143497e-10 0 0 0 0 0 0 8.623415601e-15 0 0 0 0 0 0 0 0 0 0 1.878222519e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.05537646e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1574514903 0 0 0 0 0 0 0 0 88205.69506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01057823037 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25779275.74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.070808037e-06 0 0 0 0 1.735938921e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.21837052e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.517082593e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 9.247429944e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.225730441e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3633986.339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.907993326e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006162561297 0 0 0 0 0 0 0 0 0 0 5.973831705e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.344597257e-21 0 0 0 0 0 0 0 0 5984883.267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.935216971e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006326622702 0 0 0 0 0 0 6.027035776e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.111708942e-07 0 0 0 0 0 0.5117955956 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 111.5155743 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.830832981e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.826717688e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.408102379e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13086.15447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1708974247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5744266173 0 0 0 0 0 0 0 0 0 0 0 3690608.963 0 0 0 0 0 1.144877516e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.252458828e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.87286814e-06 0 1.562343158e-17 0 0 0 0 0 2.092151695e-08 2.500905904e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2332653029 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71833.09315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2065686.428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182.0251269 0 2.258715883e-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1540.25201 0 0 0 0 0.001827022792 0 0 0 0 0 0 0 0 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.216085361e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.449260221e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7649554.448 0 0.007291105165 0 0 0 0 0 0 0 0 9.809954056e-16 0 0 0 0 0 0 0 0 0 0 0 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.643848563e-06 0 0 0 0 0.04989454223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.014531213e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 161.6503821 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.03178377e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.54800202e-06 0 0 0 0 0 0 256549.9619 0 0 0 0 0 0 0 0 0 0 0 0 0 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.018745415e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02578690251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.321008471e-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 3.182810647e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02393510061 0 0 0 0 0 0 0 0 0 6.13174982e-12 0 0 9.115797583e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9749695.731 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.175719636 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14071111.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4588.590421 0 0 0 0 0.006910945539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.323269343e-06 0 0 0 0 0 0 0 0 6341977.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.932663331e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1037844.268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.194759852e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77.65558358 0 0 0 0 0 0 0 0 0 0 0 1583730.591 1.942058187e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2606224.06 0 0 0 0 0 0 0 0 3.525762624e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.4299869e-08 0 0 0 0 0 +0 0 0 0 0 0 1.51842669e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1188209076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4100.346673 0 0 0 0 0 0 0 0 2.251981527e-12 0 0 0 0 2714664.995 0 0 0 0 0 0 0 0 0 0 0 34019887.98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42033314.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.933737239e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1.082394001e-30 0 3268.488339 0 1055588.937 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2229642621 0 0 0 0 0 0 0 3.786759445e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72.26368716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 197971.8275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.141641701e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.190824223 0 0 0 2.966706833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.181289636e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3025018749 0 0 0 2.265664341e-11 0 0 0 0 0 0 5.827892378e-07 0 0 0 0 0 0 0 0 0 0 0 2.498290948e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.755457282e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.115473521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6993045521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.35826372e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43.42805908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8960.92452 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4483.400848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.508502604e-08 0 0 0 0 0 0 0 0 0 0 0 3.998356106e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.595629503e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.997535257e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15755097.76 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.908965169e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6426.666164 0 0 0 0 0 0 0 1.271880483 0 0 0 0 0 0 0 0 0 0 9.136871613e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.092989779e-11 0 0 0 0 0 4.326691418e-08 0 0 0 0 0 0 0 0 0 0 0 0.2086822812 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.042128035e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0.9868195837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0413607713 0 0 0 0 0 0 0 0 0 0 0 0 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.144954074e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 126.383985 0 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.867699887e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.732721209e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2131614.509 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01530240349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.810878697e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3857232.368 0 0 0 0 0 0 0 0 0 0 0 0 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.195998901e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45466.27709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.026657559e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11800511.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 3.212379719e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1237016415 0 4304365.868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003990171675 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13760318.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.649583179e-12 0 0 0 0 0 0 0 28.14015101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.525971832e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66.86823606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002406655557 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23346.24933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2209462191 0 0 0 0 0 0 1.498027674e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002308898221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.418931183 0 0 0 0 6.925545228e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36689936.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.583443472e-31 0 0 0 0 0 902072.0927 0 0.2294134464 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.468163135e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.056152231e-17 0 0 0 0 0 0 0 0 0 0 0.001354466772 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06183034699 0 0 0 0 53.82296599 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02348743447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.856759868e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.346283116e-12 0 0 0 0 0 4.758017304e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.531803199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13966.64314 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.779647831e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.271413781e-09 0 0 0 0 0 0 0 0 0 0.04817642745 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.960884104e-32 0 1.661980449e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.082244606e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2897.984738 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.345733819 0 0 0 0 0 0 0 0 0 0 0 0 8.743080961e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.830223966e-07 0 0 0 0 0 1.000296474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.8205736e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.562012843e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.424673986e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 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.899760635e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 838.5222972 0 0 0 0 0 0 0 0 1.657846749e-11 0 0 0 0 0 0 0 0 0 7010.189931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.281693444e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.246293721e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003295881063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.253624221e-09 0 3.215266856e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.467776397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29031924.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002081963167 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.864708189e-10 0 0 0 0 0 0 0 2.103671517e-16 0 0 0 0 2152793.001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001807624504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16757062.66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 132547.6768 0 0 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.824985892e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.720933561e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10239.18877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003378245196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.087163957e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159.6552387 0 0 3.069377081e-12 9.868279491e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.122988695e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 123.0431843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.288771407e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.884202448e-10 0 0 0 0 354727.7389 0 6.254841349e-10 0 0 0 0 0 0 0 0 0 3.869881278e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.143488291e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.294855944e-23 0 2731234.612 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5563591083 0 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.803621412e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.858899182e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.13462136e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 101981.827 0 0 0 0 0 0 0 15304913.08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.633911981e-30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.673913311e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10233.39538 0 0 0 0 0 0 0 0 0 0 0 0 0 5.046753078e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.856382059e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002466151227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.835273726e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9826333.73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00648327956 0 0 0 0 0 0 0 0 0 0 0 2.772172799e-07 0 0 0 0 0 0 0 0 0 0 0 0 1536.071753 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.993229878e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.933429402e-09 0 0 0 0 0 0 0 0 0 0 0 0 3565.269818 1.735086127e-16 0 0 0 0 0 0 0 0 0 0 0 0 2.954404148e-24 0 0 0 0 0 2.142314264e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1763236.416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.47373703e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 737298.1905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.323862354e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1162317.615 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 188142.258 0 0 0 0 0 0 0 0 0 0 1.576536707e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.421040767e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.582069442e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 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.067901867e-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 0 0 0 0 0 0 0 0 0 56548.0786 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.280080626e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1310752343 0 0 5.146214757e-19 0 0 0 0 0 0 2.004503038e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.392117543e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02318948288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5533273.649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61.83077229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.842302153e-26 0 0 0 0 0 0 0 0 0 +0 0 0 0 4.247043097e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170.5073276 0 0 0 0 0 0 0 0 0 0 0 0 7.359147709e-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 3.183062719e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2148095.401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.281609609e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.09773323127 0 0 0 0 0 0 0 0 5.524428571e-17 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.035911258e-43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13768904.85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2158033.846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.854179589e-30 0 0 0 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.944890366e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.091942193e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.900873648 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77.6748717 0 0 0 0 0 0 0 0 0.02118529844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.694790619e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.207627706e-17 0 8963.493909 0 0 0 0 2.054673225e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.814840215e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75925058.75 0 1.667635858e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.720698467e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.685884685e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.046021851 0 0 0 0 0 0 0 0 0 0 0 6734.706303 1.332299583e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 125.2783254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1701054.113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.68395407e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04639716542 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3429299833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75720.84475 0 0 0 0 0 0 4.561555665e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.591384616e-22 0 0 0 0 0 0 0 +0 0 0 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.641299353e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04296206497 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.792402358e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.445220782e-07 0 0 889.4099791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.527830257e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.046337094e-29 0 0 0 0 0 4.096653359 0 0 0 0 0 0 0 0 0 0.004559869857 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14296.85043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.383470939e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.981062939e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11823.80607 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00848242119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.365651312e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002148628271 0 0 0 0 0.9000642364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.189488168e-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.516045748e-05 0 0 0.0001951328318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.334657652e-14 0 0 0 0 0 0 0 0 0 0 0 0 9.234299744 0 0 0 0 0 0 0 0 0 0 0 0 0 117.4503772 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10475.00513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1863234.127 0 0 0 146.866376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.844977422e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.991951228e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42.83220314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.469429201e-06 0 0 0 0 0 0 0 0 0.002628549042 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.048999353e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.804219022e-05 0 0 6.335427606e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.198417215e-25 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24505.87227 0 0 0 0.03946646117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9758.99238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32840477.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61.85687129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5133517.987 0 0 0 5.08601328e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17.75937474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 269.1921436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.363251328e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.090652967e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 4.386092961e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.149612081e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.89097029e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.783249005e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 202820.3134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 680749.4242 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.326192764e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006871445703 0 0.02525316227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.945447603e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.104541667e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.209843588e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.611079465e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2770004166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.425929529e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.074642788e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.656140434e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.818087 0 0 0 0 0 9.242804541e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.222067973e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.120598917e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.644080261e-13 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.093983095e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28172.74703 0 0 0 6.214497589e-10 0 0 0 0 2.429451012e-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 2.066831389e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5151269174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.476151399e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.018188349e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006843083625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003292573962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.492786667e-12 0 0 0 0 0 0 0 0 0 0 0 0 425674.6941 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.893059426e-23 1.725126344e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 979189.8414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0005932387015 0 0 0 0 0 0 9.403485507e-28 0 0 0 0 0 0 0 0 0 6.607373865e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000146597978 0 0 0 0 0 0 0 0 1.091366672e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.587982167e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1808533.599 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9852386112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04490597345 0 0 0 0 4.80013967e-10 0 0 0 0 3021074.838 0 0 3.607704655e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.029435245e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.039593419e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001673251924 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.350385959e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56984.78901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20235847.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4829.29127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.90823624e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20798352.42 0 0 0 0 0 0 0 0 1.325923305e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10361.74774 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.137824145e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6765067851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.691851667e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.657755809e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.441694028e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04477176052 0 0 0 0 0 0 0 0 0 0 0 0 0.008668240076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2469471437 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.404406654 0 0 0 0 1.839157735 3.256130956e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04262449016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.854455479e-10 0 0 0 0 0 0 9.278624614e-11 0 0 0 0 0 0 0 0 0.05179800966 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.455374064e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.284437649 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.147291044e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.794344816e-11 0 0 2.464055025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.609412977e-33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79412.08951 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11126.4128 0 4.836314856e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.945200405e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.497419073e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43930.54653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000585258509 0 0 0 0 0 0 0 0 0 4.022538453e-28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.808665832e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.851974919e-12 0 0 0 0 0 0 0 0 0 0 3.000057042e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8839331.47 0 0 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.800525765e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007752403794 0 0 0 0 0 0 0 0 0.5327901302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18.8678158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17134354.92 0 0 0 0 0 0 0 0 0 0 0 0 0 1.973328337e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.030667939e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.90113235e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.571499207e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 3.145254568e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.258412125e-33 0 0 0 1.489944637e-08 0 0 0 0 0 0 0 0 0 0 0 0 1.40763863e-13 0 0 0 0 0 0 0 0 0 0 0 27223986.39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.648725544e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.443670626e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22.53345968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.703846601e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.014256356e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.92046748e-25 0 0 0 0 0 0 0 0 0 3.008355591e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.367224764e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00583810855 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009993840889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [sample_PSD/image.dat] N: +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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 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 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 1 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 1 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 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 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 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 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 1 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 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 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 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 1 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 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 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 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 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 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 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 1 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 1 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 1 0 0 0 0 1 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 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 1 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 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 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 1 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 1 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 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 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 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 1 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 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 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 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 1 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 1 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 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 1 0 0 0 0 0 0 1 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 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 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 1 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 1 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 1 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 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 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 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 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 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 1 0 0 0 0 1 0 0 0 0 0 1 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 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 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 1 0 0 1 0 0 0 0 0 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 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 2 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 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 1 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 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 1 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 1 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 1 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 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 1 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 1 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 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 1 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 1 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 1 1 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 1 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 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 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 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 1 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 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 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 1 0 0 0 0 1 0 0 0 0 0 0 1 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 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 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 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 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 1 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 1 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 1 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 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 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 1 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 1 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 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 1 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 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 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 1 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 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 1 1 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 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 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 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 1 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 1 0 0 0 0 0 1 0 0 0 0 0 1 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 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 1 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 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 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 1 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 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 1 0 0 0 0 0 0 0 1 0 0 1 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 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 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 1 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 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 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 1 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 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 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 1 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 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 1 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 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 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 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 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 2 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 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 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 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 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 1 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 1 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 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 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 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 1 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 +1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 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 1 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 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 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 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 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 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 1 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 1 0 0 0 0 0 1 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 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 0 0 1 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 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 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 1 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 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 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 +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 1 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 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 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 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 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 1 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 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 1 0 0 0 1 0 0 0 0 0 0 1 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 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 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 1 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 1 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 1 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 1 0 0 0 0 0 0 0 0 1 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 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 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 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 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 1 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 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 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 1 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 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 1 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 1 0 0 0 0 1 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 1 0 0 0 0 0 1 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 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 1 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 1 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 1 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 1 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 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 1 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 1 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 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 1 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 1 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 1 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 1 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 1 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 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 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 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 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 1 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 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 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 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 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 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 1 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 1 0 0 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 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 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 1 0 0 0 1 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 1 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 1 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 1 0 0 0 0 0 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 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 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 1 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 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 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 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 0 0 1 1 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 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 1 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 1 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 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 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 1 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 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 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 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 0 0 0 0 0 0 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 1 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 1 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 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 2 0 0 0 0 0 1 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 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 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 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 1 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 1 0 1 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 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 1 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 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 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 1 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 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 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 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 1 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 1 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 1 2 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 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 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 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 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 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 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 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 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 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 1 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 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 0 0 0 1 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 1 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 1 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 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 1 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 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 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 1 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 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 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 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 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 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 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 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 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 1 0 1 0 0 0 0 0 0 0 1 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 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 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 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 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 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 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 1 1 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 1 0 0 0 1 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 1 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 1 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 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 1 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 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 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 1 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 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 1 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 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 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 1 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 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 1 1 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 1 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 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 1 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 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 1 0 1 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 1 1 0 0 0 0 0 0 0 1 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 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 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 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 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 1 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 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 1 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 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 1 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 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 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 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 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 1 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 1 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 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 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 1 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 1 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 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 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 1 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 1 0 0 0 0 0 0 1 0 0 0 0 0 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 1 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 1 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 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 1 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 1 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 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 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 1 1 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 2 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 1 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 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 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 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 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 1 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 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 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 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 1 0 0 0 1 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 1 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 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 1 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 1 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 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 1 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 1 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 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 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 1 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 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 1 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 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 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 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 1 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 1 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 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 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 1 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 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 1 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 1 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 1 0 1 0 0 0 0 0 0 1 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 1 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 1 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 1 0 0 0 0 0 0 0 0 1 0 0 1 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 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 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 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 1 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 1 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 0 0 0 1 1 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 1 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 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 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 2 0 0 0 0 0 0 0 0 0 0 1 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 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 1 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 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 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 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 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 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 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 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 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 1 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 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 1 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 1 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 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 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 1 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 1 0 0 0 0 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 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 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 1 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 1 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 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 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 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 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 1 1 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 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 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 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 1 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 1 0 1 0 1 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 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 1 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 1 0 0 0 0 0 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 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 1 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 1 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 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 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 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 1 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 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 1 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 1 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 1 0 1 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 1 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 1 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 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 1 0 0 0 0 1 0 0 1 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 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 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 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 1 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 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 1 1 0 0 0 1 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 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 0 0 0 0 0 0 0 1 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 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 1 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 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 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 1 0 0 0 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 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 1 0 1 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 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 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 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 1 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 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 1 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 1 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 1 0 1 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 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 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 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 1 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 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 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 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 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 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 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 1 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 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 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 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 1 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 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 1 1 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 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 1 0 0 1 0 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 1 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 1 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 1 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 1 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 1 0 0 0 0 0 0 1 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 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 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 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 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 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 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 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 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 1 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 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 1 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 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 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 1 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 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 +1 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 1 0 0 0 0 1 0 0 0 0 1 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 1 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 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 1 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 1 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 1 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 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 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 1 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 1 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 1 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 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 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 1 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 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 1 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 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 1 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 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 1 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 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 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 1 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 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 1 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 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 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 1 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 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 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 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 1 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 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 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 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 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 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 1 0 0 0 0 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 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 1 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 +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 1 0 0 0 0 0 0 1 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 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 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 1 0 1 0 1 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 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 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 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 1 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 1 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 1 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 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 1 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 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 1 0 0 1 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 1 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 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 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 1 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 1 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 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 1 0 0 0 0 0 0 0 2 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 1 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 1 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 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 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 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 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 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 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 1 1 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 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 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 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 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 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 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 1 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 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 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 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 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 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 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 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 1 0 0 0 0 0 0 0 1 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 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 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 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 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 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 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 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 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 1 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 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 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 1 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 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 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 1 0 0 0 0 0 1 1 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 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 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 1 0 0 0 0 1 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 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 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 2 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 1 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 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 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 2 0 0 0 0 0 0 0 0 0 1 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 1 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 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 1 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 2 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 2 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 1 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 1 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 1 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 1 0 0 0 0 1 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 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 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 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 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 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 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 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 1 0 0 0 1 0 0 0 0 0 0 1 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 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 1 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 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 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 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 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 1 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 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 1 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 1 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 1 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 1 0 0 0 0 0 1 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 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 1 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 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 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 1 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 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 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 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 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 1 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 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 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 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 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 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 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 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 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 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 1 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 1 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 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 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 1 0 0 0 0 0 1 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 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 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 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 2 0 0 0 0 0 0 0 0 1 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 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 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 1 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 1 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 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 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 1 0 0 0 0 0 0 0 1 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 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 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 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 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 1 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 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 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 1 0 0 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 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 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 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 1 0 0 0 0 1 0 1 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 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 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 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 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 1 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 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 1 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 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 1 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 2 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 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 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 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 1 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 1 0 0 1 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 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 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 1 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 1 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 1 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 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 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 1 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 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 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 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 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 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 1 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 1 1 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 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 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 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 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 1 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 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 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 1 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 1 0 0 1 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 1 0 0 0 0 0 1 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 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 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 1 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 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 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 1 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 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 1 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 1 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 1 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 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 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 1 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 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 1 +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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 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 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 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 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 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 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 1 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 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 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 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 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 1 0 0 0 1 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 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 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 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 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 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 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 1 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 1 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 1 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 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 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 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 1 0 0 0 0 1 0 0 0 0 1 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 1 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 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 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 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 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 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 1 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 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 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 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 1 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 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 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 1 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 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 1 0 0 0 0 1 1 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 1 0 0 0 0 0 0 1 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 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 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 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 1 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 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 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 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 +1 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 1 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 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 1 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 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 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 1 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 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 1 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 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 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 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 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 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 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 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 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 1 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 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 1 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 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 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/mccode.sim b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/mccode.sim new file mode 100644 index 0000000000..8645efabea --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/mccode.sim @@ -0,0 +1,268 @@ +mcstas simulation description file for ODIN_MCPL_baseline. +Date: Sun Mar 1 17:29:21 2026 +Program: 3.99.99, git + +begin instrument: ODIN_MCPL_baseline + File: Filterscan/1/mccode + Source: ODIN_MCPL_baseline.instr + Parameters: l_min(double) l_max(double) n_pulses(int) wfm_delta(double) bp_frequency(double) WFM1_phase_offset(double) jitter_wfmc_1(double) WFM2_phase_offset(double) jitter_wfmc_2(double) fo1_phase_offset(double) jitter_fo_chopper_1(double) bp1_phase_offset(double) jitter_bp1(double) fo2_phase_offset(double) jitter_fo_chopper_2(double) bp2_phase_offset(double) jitter_bp2(double) t0_phase_offset(double) jit_t0_sec(double) fo3_phase_offset(double) jitter_fo_chopper_3(double) fo4_phase_offset(double) jitter_fo_chopper_4(double) fo5_phase_offset(double) jitter_fo_chopper_5(double) choppers(int) repeat(int) v_smear(double) pos_smear(double) dir_smear(double) filter(int) + Trace_enabled: yes + Default_main: yes + Embedded_runtime: yes +end instrument + +begin simulation: Filterscan/1 + Format: McCode with text headers + URL: http://www.mccode.org + Creator: 3.99.99, git + Instrument: ODIN_MCPL_baseline.instr + Ncount: 1000000 + Trace: no + Gravitation: no + Seed: 1000 + Directory: Filterscan/1 + Nodes: 12 + Param: l_min=1 + Param: l_max=11 + Param: n_pulses=1 + Param: wfm_delta=0.3 + Param: bp_frequency=7 + Param: WFM1_phase_offset=0 + Param: jitter_wfmc_1=0 + Param: WFM2_phase_offset=0 + Param: jitter_wfmc_2=0 + Param: fo1_phase_offset=0 + Param: jitter_fo_chopper_1=0 + Param: bp1_phase_offset=0 + Param: jitter_bp1=0 + Param: fo2_phase_offset=0 + Param: jitter_fo_chopper_2=0 + Param: bp2_phase_offset=0 + Param: jitter_bp2=0 + Param: t0_phase_offset=0 + Param: jit_t0_sec=0 + Param: fo3_phase_offset=0 + Param: jitter_fo_chopper_3=0 + Param: fo4_phase_offset=0 + Param: jitter_fo_chopper_4=0 + Param: fo5_phase_offset=0 + Param: jitter_fo_chopper_5=0 + Param: choppers=2 + Param: repeat=1 + Param: v_smear=0.1 + Param: pos_smear=0.01 + Param: dir_smear=0.01 + Param: filter=1 +end simulation + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: Sphere1 + position: 0 0 0 + title: 4PI PSD monitor + Ncount: 10622832 + filename: nonrotated.dat + statistics: X0=-89.7425; dX=1.98692; Y0=54.6204; dY=1.18399; + signal: Min=0; Max=4.98015e+12; Mean=1.33741e+09; + values: 1.0833e+13 3.27214e+11 1.06228e+07 + xvar: Lo + yvar: La + xlabel: Longitude [deg] + ylabel: Latitude [deg] + zvar: I + zlabel: Signal per bin + xylimits: -180 180 -90 90 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: Sphere0 + position: 0.0585 0 -0.0925 + title: 4PI PSD monitor + Ncount: 10622832 + filename: rotated.dat + statistics: X0=0.0171366; dX=1.99993; Y0=1.08058; dY=1.24824; + signal: Min=0; Max=1.66765e+12; Mean=6.75406e+08; + values: 5.47079e+12 2.38132e+11 5.3096e+06 + xvar: Lo + yvar: La + xlabel: Longitude [deg] + ylabel: Latitude [deg] + zvar: I + zlabel: Signal per bin + xylimits: -180 180 -90 90 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: PSD_cut + position: 1.69078 0 -1.24822 + title: PSD monitor + Ncount: 10622832 + filename: PSD_cut.dat + statistics: X0=-0.000143389; dX=0.287533; Y0=0.00811166; dY=0.288024; + signal: Min=1.00158e-20; Max=7.17965e+08; Mean=1.05054e+07; + values: 8.50941e+10 2.19134e+09 89282 + xvar: X + yvar: Y + xlabel: X position [cm] + ylabel: Y position [cm] + zvar: I + zlabel: Signal per bin + xylimits: -0.5 0.5 -0.5 0.5 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: PSD_Backtrace + position: 0.123791 0 -0.138729 + title: PSD monitor + Ncount: 10622832 + filename: PSD_Backtrace.dat + statistics: X0=-0.85466; dX=5.98354; Y0=-0.00730711; dY=1.14411; + signal: Min=0; Max=1.63527e+11; Mean=1.33741e+09; + values: 1.0833e+13 3.27214e+11 1.06228e+07 + xvar: X + yvar: Y + xlabel: X position [cm] + ylabel: Y position [cm] + zvar: I + zlabel: Signal per bin + xylimits: -15 15 -15 15 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_2d(300, 300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: sample_PSD + position: 49.4198 0 -35.0741 + title: Intensity Position Position Monitor (Square) per bin + Ncount: 10622832 + filename: image.dat + statistics: X0=-0.00175213; dX=0.0706673; Y0=0.00192524; dY=0.080599; + signal: Min=0; Max=3.7743e+08; Mean=33912.1; + values: 3.05209e+09 4.42982e+08 2319 + xvar: x + yvar: y + xlabel: x [m] + ylabel: y [m] + zvar: I + zlabel: Signal per bin + xylimits: -0.15 0.15 -0.15 0.15 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: profile_x + position: 49.4198 0 -35.0741 + title: x [m] monitor + Ncount: 10622832 + filename: profile_x.dat + statistics: X0=-0.00175213; dX=0.0706673; + signal: Min=0; Max=3.7811e+08; Mean=1.01736e+07; + values: 3.05209e+09 4.42982e+08 2319 + xvar: x + yvar: (I,I_err) + xlabel: x [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: x I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: profile_y + position: 49.4198 0 -35.0741 + title: y [m] monitor + Ncount: 10622832 + filename: profile_y.dat + statistics: X0=0.00192524; dX=0.080599; + signal: Min=5.97068e-17; Max=4.17183e+08; Mean=1.01736e+07; + values: 3.05209e+09 4.42982e+08 2319 + xvar: y + yvar: (I,I_err) + xlabel: y [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: y I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: wavelength + position: 49.4198 0 -35.0741 + title: Wavelength [Angs] monitor + Ncount: 10622832 + filename: wavelength.dat + statistics: X0=3.58862; dX=1.18951; + signal: Min=0; Max=4.2112e+08; Mean=1.01736e+07; + values: 3.05209e+09 4.42982e+08 2319 + xvar: L + yvar: (I,I_err) + xlabel: Wavelength [Angs] + ylabel: Intensity [n/s/bin] + xlimits: 0.5 10 + variables: L I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: tof + position: 49.4198 0 -35.0741 + title: TOF [s] monitor + Ncount: 10622832 + filename: time.dat + statistics: X0=0.0567228; dX=0.0180949; + signal: Min=0; Max=4.21383e+08; Mean=1.01736e+07; + values: 3.05209e+09 4.42982e+08 2319 + xvar: t + yvar: (I,I_err) + xlabel: TOF [s] + ylabel: Intensity [n/s/bin] + xlimits: 0 0.15 + variables: t I I_err N +end data + +begin data + Date: Sun Mar 1 17:29:24 2026 (1772382564) + type: array_2d(300, 300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) + component: wavelength_tof + position: 49.4198 0 -35.0741 + title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin + Ncount: 10622832 + filename: wavelength_tof.dat + statistics: X0=0.0567228; dX=0.0180949; Y0=3.58862; dY=1.18951; + signal: Min=0; Max=4.21096e+08; Mean=33912.1; + values: 3.05209e+09 4.42982e+08 2319 + xvar: TO + yvar: Wa + xlabel: TOF [s] + ylabel: Wavelength [Angs] + zvar: I + zlabel: Signal per bin + xylimits: 0 0.15 0.5 10 + variables: I I_err N +end data diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/nonrotated.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/nonrotated.dat new file mode 100644 index 0000000000..81fb797e28 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/nonrotated.dat @@ -0,0 +1,333 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: Sphere1 +# position: 0 0 0 +# title: 4PI PSD monitor +# Ncount: 10622832 +# filename: nonrotated.dat +# statistics: X0=-89.7425; dX=1.98692; Y0=54.6204; dY=1.18399; +# signal: Min=0; Max=4.98015e+12; Mean=1.33741e+09; +# values: 1.0833e+13 3.27214e+11 1.06228e+07 +# xvar: Lo +# yvar: La +# xlabel: Longitude [deg] +# ylabel: Latitude [deg] +# zvar: I +# zlabel: Signal per bin +# xylimits: -180 180 -90 90 +# variables: I I_err N +# Data [Sphere1/nonrotated.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.269401142e+11 2.345872644e+12 5.48787682e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.732928254e+11 4.98015357e+12 9.926760898e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.099563871e+11 7.891349604e+11 1.661825702e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [Sphere1/nonrotated.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.057042213e+11 2.548106316e+11 1.74762766e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6357012699 1.642255923e+10 7353572046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2330314997 6806718972 3099005499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [Sphere1/nonrotated.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 137061 1672274 197836 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 760050 5381119 1175707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140838 943826 214121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/profile_x.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/profile_x.dat new file mode 100644 index 0000000000..8e902ee469 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/profile_x.dat @@ -0,0 +1,358 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: profile_x +# position: 49.4198 0 -35.0741 +# title: x [m] monitor +# Ncount: 10622832 +# filename: profile_x.dat +# statistics: X0=-0.00175213; dX=0.0706673; +# signal: Min=0; Max=3.7811e+08; Mean=1.01736e+07; +# values: 3.05209e+09 4.42982e+08 2319 +# xvar: x +# yvar: (I,I_err) +# xlabel: x [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: x I I_err N +-0.1495 1599292.26 1745452.951 5 +-0.1485 17235361.38 18419113.81 5 +-0.1475 1362671.174 1471852.762 6 +-0.1465 1162321.551 1242569.71 7 +-0.1455 9842256.211 7783686.366 9 +-0.1445 0.0008152788464 0.0007909713347 3 +-0.1435 16014654.6 15555764.54 6 +-0.1425 5943120.64 6510359.958 5 +-0.1415 82218.76193 100697.007 2 +-0.1405 1634446.785 1743668.239 7 +-0.1395 20222.01024 14043.09831 6 +-0.1385 1055720.301 1140162.316 6 +-0.1375 255.1696034 312.5176631 2 +-0.1365 662262.1559 725471.5283 5 +-0.1355 0 0 0 +-0.1345 2220.795672 1693.227851 3 +-0.1335 2825451.745 2900242.632 5 +-0.1325 0.004013726558 0.004396816942 5 +-0.1315 2935851.343 2236702.95 11 +-0.1305 19179.39723 20391.69277 7 +-0.1295 107804.7105 76614.97366 8 +-0.1285 3801168.691 4006783.074 9 +-0.1275 2742.866509 3165.91758 3 +-0.1265 17364685.93 15175960.71 7 +-0.1255 8.730001224 6.204161281 11 +-0.1245 9148399.451 7413245.861 6 +-0.1235 8091089.364 8528738.199 9 +-0.1225 2131614.509 2302406.817 6 +-0.1215 0.6389877858 0.7138235274 4 +-0.1205 8106422.147 8332528.644 7 +-0.1195 284.7188933 290.0488979 6 +-0.1185 4168.481589 4345.608598 7 +-0.1175 3.459353361e-05 3.867673836e-05 4 +-0.1165 83577524.67 84747114.59 4 +-0.1155 34629.16228 36729.19334 8 +-0.1145 13473146.72 14403398.96 7 +-0.1135 24850.06972 27375.43606 4 +-0.1125 47.42981018 51.95675356 5 +-0.1115 20527083.71 17957122.95 10 +-0.1105 71982.59636 77750.04052 6 +-0.1095 0.03950879983 0.04412171453 4 +-0.1085 0.01427391979 0.01641426783 3 +-0.1075 20517.23429 21933.84604 7 +-0.1065 78509.14375 57266.34987 11 +-0.1055 0.0002406655558 0.0002778966468 3 +-0.1045 0.01101598242 0.01231552983 4 +-0.1035 350627.5242 429429.2621 2 +-0.1025 14769479.97 13205040.65 7 +-0.1015 9856.085133 9696.470376 6 +-0.1005 13010667.69 8474378.329 8 +-0.0995 32169802.4 29397700.43 8 +-0.0985 1475.876544 1616.741672 5 +-0.0975 20235847.04 21857212.91 6 +-0.0965 1.443240009e-10 1.732603406e-10 2 +-0.0955 156140.9864 168187.1091 5 +-0.0945 29664733.14 28423015.05 12 +-0.0935 14186200.3 15079583.32 7 +-0.0925 14233520.36 10720121.29 6 +-0.0915 0.04490597345 0.05185295172 3 +-0.0905 68126176 56117562.96 11 +-0.0895 0.5036690602 0.4373307263 7 +-0.0885 7959596.167 7980938.796 10 +-0.0875 2595837.468 1387837.531 8 +-0.0865 185259.4756 183790.7023 13 +-0.0855 1573307.367 1227269.535 8 +-0.0845 6699239.211 7078531.461 8 +-0.0835 45396958.11 33480314.69 10 +-0.0825 13197188.11 16163188.45 2 +-0.0815 4672698.694 3610172.737 9 +-0.0805 12017.36795 9090.427748 8 +-0.0795 111544.5295 128800.5283 3 +-0.0785 20813702.51 15433532.71 11 +-0.0775 11976.75788 9145.826731 7 +-0.0765 14311211.59 12893195.92 9 +-0.0755 4741738.489 5029373.16 8 +-0.0745 12807583.01 12946958.04 17 +-0.0735 40873183.2 31499196.37 7 +-0.0725 6.459042998 6.772641817 10 +-0.0715 11067458.16 11954220.26 6 +-0.0705 0.3003451266 0.3343343791 4 +-0.0695 12962929.45 13413085.63 14 +-0.0685 0.9892025203 1.142057483 3 +-0.0675 5331395.787 5545766.287 12 +-0.0665 2.262858135 2.433731372 6 +-0.0655 945.3036382 983.9031547 12 +-0.0645 36966738.21 27631796.76 10 +-0.0635 1497634.955 1405151.032 13 +-0.0625 16680532.08 12483935.95 12 +-0.0615 15955.90275 12629.98676 11 +-0.0605 3987681.49 3810445.111 11 +-0.0595 3532340.854 3746524.453 8 +-0.0585 104115.9024 70091.77487 15 +-0.0575 72215777.11 51380371.04 16 +-0.0565 489297.1578 456379.018 7 +-0.0555 4457273.017 4678846.228 8 +-0.0545 8053520.464 8609149.717 7 +-0.0535 280243.52 302664.4031 6 +-0.0525 4852131.249 3922749.934 13 +-0.0515 2632326.691 2718504.166 15 +-0.0505 59005511.74 32599791.83 15 +-0.0495 0.08498202965 0.06061695012 8 +-0.0485 8151869.928 7037782.708 14 +-0.0475 30968.81692 32230.56463 12 +-0.0465 9719897.192 8323919.094 11 +-0.0455 319821.6922 334958.6189 7 +-0.0445 0.0002109958712 0.0002039128382 6 +-0.0435 6596992.54 5095464.324 10 +-0.0425 1136213.426 1186131.183 11 +-0.0415 22044152.51 17878877.13 13 +-0.0405 0.808130558 0.844064744 11 +-0.0395 4.090676192 3.879059793 11 +-0.0385 11828947.37 12454089.9 9 +-0.0375 54.39946028 53.57904002 11 +-0.0365 17624182.65 18480760.86 10 +-0.0355 9638254.582 10222898.29 8 +-0.0345 11484140.86 11707640.17 13 +-0.0335 72899.56152 77310.38496 8 +-0.0325 9494065.714 9083883.5 14 +-0.0315 14701143.73 15203519.28 14 +-0.0305 58298.69693 45102.52348 9 +-0.0295 2233111.181 2298345.32 11 +-0.0285 8840534.88 9149571.011 14 +-0.0275 32841595.57 34616888.21 9 +-0.0265 11306829.65 7698848.062 12 +-0.0255 34681352.86 24047716.81 12 +-0.0245 46837940.85 37787474.18 14 +-0.0235 0.0236512266 0.02419853614 7 +-0.0225 25841873.66 25502790.65 13 +-0.0215 22430457.79 18402340.09 13 +-0.0205 22251343.6 12025197.17 20 +-0.0195 8.915851973 5.444134654 6 +-0.0185 0.001017923492 0.0007542771236 8 +-0.0175 15081397.32 12122718.98 5 +-0.0165 5.657766832 5.962619784 9 +-0.0155 341194.3654 364714.2197 7 +-0.0145 1952.851367 1774.784974 9 +-0.0135 1161674.885 1224031.846 9 +-0.0125 23118258.65 24238401.11 10 +-0.0115 8069129.016 8456670.202 9 +-0.0105 337039.2155 327681.1063 10 +-0.0095 2.86273839 2.529584714 10 +-0.0085 68487241.4 44075292.4 19 +-0.0075 814805.001 845562.6236 13 +-0.0065 104710.4972 109814.383 10 +-0.0055 345177.9543 361314.8893 10 +-0.0045 3386318.473 3512382.15 11 +-0.0035 42816371.07 38798451.92 11 +-0.0025 15970354.65 12865645.77 11 +-0.0015 378109990.5 387771323.5 18 +-0.0005 2870739.918 3025787.175 8 +0.0005 28391.90245 30185.22491 6 +0.0015 3953465.102 4267097.693 6 +0.0025 3505126.705 3452739.208 13 +0.0035 2325966.756 2430621.848 6 +0.0045 20336100.58 18645868.58 11 +0.0055 8954965.561 7100481.743 13 +0.0065 378754.2547 317002.005 14 +0.0075 58136977.2 46419200.7 15 +0.0085 18936368.46 11204308.49 12 +0.0095 10572059.81 8323079.977 10 +0.0105 629478.9122 667190.4115 8 +0.0115 4477.228989 4748.446897 8 +0.0125 19319654.95 15533920.52 10 +0.0135 8357479.435 5205206.057 11 +0.0145 6183396.037 6458324.833 11 +0.0155 21540488.99 22763729.85 5 +0.0165 16778538.94 15255659.21 17 +0.0175 8590965.031 7439230.638 9 +0.0185 38561300.91 32375961.03 9 +0.0195 0.9739784348 0.7993517719 10 +0.0205 3311705.675 2869872.242 11 +0.0215 117.8887923 128.641326 5 +0.0225 2889504.876 2436397.74 13 +0.0235 12224005.22 12767538.41 11 +0.0245 602675.9236 644113.7551 7 +0.0255 163799.3256 120946.5006 7 +0.0265 425944.8252 448697.056 9 +0.0275 12959316.01 9726291.851 10 +0.0285 26390572.36 21498093.99 6 +0.0295 1168172.33 1223695.73 10 +0.0305 473332.5241 346884.5382 8 +0.0315 20909858.2 21945539.79 8 +0.0325 23167327.11 14809729.35 12 +0.0335 50310813.26 32351383.62 13 +0.0345 0.02319017561 0.02592657842 4 +0.0355 52367878.32 35377089.32 11 +0.0365 5408104.624 5258568.633 7 +0.0375 13768905.08 14604128.98 8 +0.0385 60262.09516 52878.08033 12 +0.0395 20796610.77 19586795.85 10 +0.0405 6506062.1 6714456.392 11 +0.0415 10909217.65 10231151.85 11 +0.0425 150356.7416 155782.605 11 +0.0435 326670.3074 315229.8148 10 +0.0445 7001788.03 5032489.844 13 +0.0455 19900.57339 21485.14658 6 +0.0465 768767.2271 716951.1171 12 +0.0475 12793788.71 10785953.54 10 +0.0485 1874057.063 2095259.452 4 +0.0495 14244780.08 14435299.89 10 +0.0505 4613172.18 3234409.001 7 +0.0515 142289.5617 153508.7989 6 +0.0525 24891340.9 26106180.96 10 +0.0535 2623763.438 2097893.869 6 +0.0545 412664.8226 390701.9113 12 +0.0555 6020833.777 6291154.312 10 +0.0565 10234976.92 7527042.704 15 +0.0575 67184.10093 73850.85888 4 +0.0585 9940288.345 10162339.63 9 +0.0595 5814089.323 6070813.851 11 +0.0605 2.994005618 3.347400042 4 +0.0615 43147170.13 32912152.58 5 +0.0625 2939126.003 3142034.458 7 +0.0635 1553069.012 1531290.212 7 +0.0645 1804406.667 1327998.267 8 +0.0655 3.427691895 3.933622376 3 +0.0665 8364108.54 6221086.52 13 +0.0675 42908401.1 33030226.64 10 +0.0685 0.04279385363 0.04681730188 5 +0.0695 7013351.953 7497516.894 7 +0.0705 37139502.6 38431349.22 5 +0.0715 31359960.23 19427044.07 10 +0.0725 11362800.61 9669095.657 6 +0.0735 15115554.04 17453938.39 3 +0.0745 4799.583826 5055.788206 7 +0.0755 1457478.657 1574093.676 6 +0.0765 35986379.63 38461277.23 7 +0.0775 286.8056451 351.2112004 2 +0.0785 14043195.14 10666777.47 6 +0.0795 19449301.97 21293822.19 5 +0.0805 17136665.63 19156619.12 4 +0.0815 25783396.24 27173688.64 9 +0.0825 24542.25565 25822.56732 9 +0.0835 13738.68291 16826.3719 2 +0.0845 25317.03526 27065.04891 7 +0.0855 1.892302882e-10 1.965401039e-10 5 +0.0865 39126458.06 35959087.18 5 +0.0875 2430.342743 2038.206382 4 +0.0885 34928921.03 37622321.58 3 +0.0895 16952217.54 18953154.28 4 +0.0905 84.69619314 71.44943092 2 +0.0915 0.007210062607 0.007897469349 5 +0.0925 13004635.06 15008273.25 3 +0.0935 1027.55999 1089.418552 7 +0.0945 3772165.479 3966577.158 6 +0.0955 6693246.074 6921076.253 7 +0.0965 4.56937983e-12 3.607413922e-12 4 +0.0975 18736577.04 20237816.22 6 +0.0985 531978.9855 612531.2654 3 +0.0995 1180343.193 1261816.31 7 +0.1005 334.9682985 361.8071004 6 +0.1015 2.948708668 3.230125107 5 +0.1025 0.01043689083 0.01123271067 6 +0.1035 0.1911025658 0.1985339552 11 +0.1045 5.328704379 5.957648575 4 +0.1055 57.5761948 64.37213976 4 +0.1065 0.003695414731 0.004047072788 5 +0.1075 13926618.59 14133710.74 8 +0.1085 4219293.019 4344892.402 9 +0.1095 7582.993672 8190.56697 6 +0.1105 218109.8057 219143.164 6 +0.1115 26804523.42 29362045.21 5 +0.1125 1.531813842 1.654536228 6 +0.1135 8082.094308 9332.324239 3 +0.1145 20069765.19 15997237.4 7 +0.1155 3865218.189 4123385.469 7 +0.1165 5588.309748 6844.253703 2 +0.1175 547.1680699 631.8152607 3 +0.1185 16.5896342 19.15605954 3 +0.1195 0.004049205014 0.004527097597 4 +0.1205 7.10438337e-10 6.897437887e-10 3 +0.1215 2265.075378 2513.836494 3 +0.1225 3040664.089 3296949.138 4 +0.1235 248559.4004 265647.6699 7 +0.1245 8749821.359 9547069.301 5 +0.1255 6295221.698 7269095.883 3 +0.1265 24961291.44 24406813.71 8 +0.1275 758949.7572 838062.4026 4 +0.1285 14148283.58 13260357.3 3 +0.1295 6.042925669e-06 6.976733426e-06 3 +0.1305 0.00481257887 0.005557087412 3 +0.1315 32610.09793 32703.46074 5 +0.1325 0.09819921578 0.1044719808 7 +0.1335 11301724.96 12635712.64 4 +0.1345 5474792.766 4216262.155 6 +0.1355 0.3873273162 0.4182179169 6 +0.1365 2852978.379 3109381.626 5 +0.1375 0.008638475813 0.009543976534 4 +0.1385 16103.09229 18003.8045 4 +0.1395 15755099.27 18192419.65 3 +0.1405 185053.5682 196172.628 8 +0.1415 56273.58518 61632.56667 5 +0.1425 0.1862586882 0.2082435413 4 +0.1435 1547928.753 1620301.776 7 +0.1445 946937.0106 1093428.676 3 +0.1455 38555823.53 42160325.07 4 +0.1465 19075842.59 18697191.25 6 +0.1475 3151284.824 3859519.926 2 +0.1485 1.101917684e-08 1.101917684e-08 1 +0.1495 13238448.86 14009791.91 4 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/profile_y.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/profile_y.dat new file mode 100644 index 0000000000..fd7e81f725 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/profile_y.dat @@ -0,0 +1,358 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: profile_y +# position: 49.4198 0 -35.0741 +# title: y [m] monitor +# Ncount: 10622832 +# filename: profile_y.dat +# statistics: X0=0.00192524; dX=0.080599; +# signal: Min=5.97068e-17; Max=4.17183e+08; Mean=1.01736e+07; +# values: 3.05209e+09 4.42982e+08 2319 +# xvar: y +# yvar: (I,I_err) +# xlabel: y [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: y I I_err N +-0.1495 106.6426331 116.8118151 5 +-0.1485 88977.31414 97469.76412 5 +-0.1475 18915.61156 21841.86685 3 +-0.1465 19938.33195 21264.06503 7 +-0.1455 17061849.9 15167672.5 9 +-0.1445 33445917.99 37393672.64 4 +-0.1435 945.3122689 1021.04429 6 +-0.1425 7043429.724 7528120.521 7 +-0.1415 17185652.12 17735712.75 9 +-0.1405 761648.6588 807845.8006 8 +-0.1395 4741739.18 5121662.912 6 +-0.1385 7842102.549 8317058.906 8 +-0.1375 9848094.138 10201780.67 6 +-0.1365 29892109.22 28860775.52 7 +-0.1355 37170570.42 26082102.55 12 +-0.1345 11067457.41 12373793.55 4 +-0.1335 1516715.344 1620699.091 7 +-0.1325 650775.9706 702918.3336 6 +-0.1315 1.129740125e-07 1.18242185e-07 6 +-0.1305 0.7345044194 0.7685788659 9 +-0.1295 3.138441381e-06 3.355134148e-06 7 +-0.1285 7130312.448 6619143.261 8 +-0.1275 12565679.18 12149090.7 9 +-0.1265 380416.3811 381377.8766 13 +-0.1255 13091270.13 13424946.47 7 +-0.1245 11543778.7 12645572.51 5 +-0.1235 0.007826527019 0.008772458009 3 +-0.1225 6029037.96 5837422.616 10 +-0.1215 2498195.023 2602910.791 9 +-0.1205 34703503.8 31982473.62 9 +-0.1195 6661245.226 7065317.503 8 +-0.1185 182.3257449 199.7162105 5 +-0.1175 131.4478158 108.9746302 5 +-0.1165 15.25766632 15.47169151 6 +-0.1155 0.07208662521 0.07597669029 9 +-0.1145 26347831.94 26621412.41 7 +-0.1135 2322547.185 1786597.831 4 +-0.1125 24666830.55 20989147.56 3 +-0.1115 283.3975853 326.967859 3 +-0.1105 17.69927713 18.90159121 7 +-0.1095 2708185.937 2925175.134 6 +-0.1085 0.05017784398 0.0505203729 6 +-0.1075 25876239.57 19970445.75 10 +-0.1065 8844631.441 9688808.306 5 +-0.1055 37757911.83 40044418.22 8 +-0.1045 8661.46047 8905.287058 3 +-0.1035 59530.15221 62030.21094 8 +-0.1025 62.62709478 66.00906844 9 +-0.1015 57982.93224 63341.44426 5 +-0.1005 303045.4189 247061.0957 12 +-0.0995 15824600.86 11838116.48 7 +-0.0985 4415081.544 4682873.332 8 +-0.0975 17264044.24 15448606.04 15 +-0.0965 7060715.11 7277875.455 13 +-0.0955 20692761.2 22667784.16 5 +-0.0945 8357671.27 6310189.875 9 +-0.0935 11147614.05 11917034.49 7 +-0.0925 12809574.8 12829130.54 10 +-0.0915 2494412.393 2586665.203 12 +-0.0905 1.512253648 1.655436762 5 +-0.0895 20175.58659 19577.79321 4 +-0.0885 58022792.77 55041967.03 9 +-0.0875 35108754.62 38459713.74 5 +-0.0865 74565.0028 80769.81542 5 +-0.0855 11832265.57 12276060.02 13 +-0.0845 11345604.7 12081165.95 7 +-0.0835 138.167054 159.5268164 3 +-0.0825 15675691.23 8824562.309 16 +-0.0815 5304899.866 3960878.681 4 +-0.0805 972203.3283 775324.6057 7 +-0.0795 0.01182615964 0.01254333182 8 +-0.0785 181438.7011 189140.508 7 +-0.0775 36446599.77 21133468.11 7 +-0.0765 7905008.265 8538382.843 6 +-0.0755 5079794.007 4991248.21 9 +-0.0745 19510.82959 20389.44485 7 +-0.0735 875.5914918 978.7439746 4 +-0.0725 532074.594 568811.499 7 +-0.0715 18744400.8 19873011.03 8 +-0.0705 16092534.26 11677407.63 10 +-0.0695 11.49699913 8.565211756 8 +-0.0685 4647971.898 3865552.655 6 +-0.0675 2.32506466 2.025377225 6 +-0.0665 666793.8611 769947.2304 3 +-0.0655 28007791.85 16851543.25 11 +-0.0645 34443882.05 34673869.54 7 +-0.0635 4041911.616 3310733.825 5 +-0.0625 21295512.79 16258810.99 6 +-0.0615 28752458.25 21203936.34 11 +-0.0605 10199356.38 10630323.58 9 +-0.0595 2409.379601 2509.102191 9 +-0.0585 51184485.58 32764802 9 +-0.0575 7682686.51 8415956.21 5 +-0.0565 735.2980889 775.0722276 9 +-0.0555 13207993.71 10693962.33 11 +-0.0545 29441200.49 17519109.6 8 +-0.0535 25240.55452 26707.96976 8 +-0.0525 5048.893794 5363.985915 7 +-0.0515 33272111.08 27615885.87 15 +-0.0505 17228709.88 18609133.55 6 +-0.0495 7897.710864 7421.101586 10 +-0.0485 14688114.06 15702191.43 7 +-0.0475 1929779.301 2014893.755 8 +-0.0465 14256404.61 13892523.79 7 +-0.0455 1122702.17 1136983.27 8 +-0.0445 13002.01228 11332.75262 9 +-0.0435 6514591.626 6868452.845 8 +-0.0425 1.072245961e-06 1.238122988e-06 3 +-0.0415 9.010388333 9.868187777 5 +-0.0405 604161.5379 631305.7524 8 +-0.0395 141.4444875 100.5506805 8 +-0.0385 674.6639655 604.0163507 8 +-0.0375 2960685.685 2823876.941 8 +-0.0365 8592.609434 9113.838165 8 +-0.0355 1176987.459 1221424.382 12 +-0.0345 2874702.418 3029178.747 9 +-0.0335 367054.3994 382142.2238 4 +-0.0325 11851760.58 12340234.18 11 +-0.0315 2.479240612 2.769398637 4 +-0.0305 12940459.73 9525424.55 11 +-0.0295 37158590.83 38720016.1 11 +-0.0285 3046834.797 2805598.801 10 +-0.0275 6681970.307 6925950.515 13 +-0.0265 59813237.98 45689417.81 7 +-0.0255 1976351.589 2095763.915 8 +-0.0245 5215964.115 4043261.068 6 +-0.0235 82487.29551 88798.59886 6 +-0.0225 8115760.975 6196337.9 7 +-0.0215 15264844.31 15580911.58 16 +-0.0205 4539916.52 4903667.231 6 +-0.0195 7395950.086 7242527.602 10 +-0.0185 19438941.35 20781101.2 7 +-0.0175 132126.7376 140054.6777 8 +-0.0165 17477.03767 18672.13929 7 +-0.0155 20590553.73 18725419.43 7 +-0.0145 4008685.448 4143299.563 10 +-0.0135 13807.47408 14632.51062 8 +-0.0125 9772657.341 9161531.941 11 +-0.0115 4657900.014 3553569.591 8 +-0.0105 690958.9256 739632.7975 6 +-0.0095 7.254722105 7.293369283 5 +-0.0085 9912230.286 10396003.35 10 +-0.0075 107049.293 84097.2217 10 +-0.0065 41832214.42 32188432.7 11 +-0.0055 2157407.122 1871965.39 11 +-0.0045 15535361.83 11759879.69 5 +-0.0035 4756.382434 4959.751219 10 +-0.0025 2926304.518 3011179.092 8 +-0.0015 14.5715696 10.86381569 10 +-0.0005 9326891.746 8258309.28 9 +0.0005 2171364.192 2281157.008 3 +0.0015 4468658.499 4575655.893 12 +0.0025 1294934.357 1373480.189 8 +0.0035 12150313.47 8889559.556 12 +0.0045 27963.67779 27587.28389 5 +0.0055 236358.5539 250695.9507 8 +0.0065 24566349.26 25746773.6 10 +0.0075 3640737.899 3982032.675 5 +0.0085 24716509.44 19388029.12 10 +0.0095 10797460.55 11223705.16 10 +0.0105 431.8624774 466.459479 6 +0.0115 295779.5532 293939.188 10 +0.0125 26832682.67 29360776.93 5 +0.0135 1823734.587 1891185.371 13 +0.0145 45911679.86 26451869.09 15 +0.0155 36422733.48 23181439.38 8 +0.0165 174238.4343 182742.3609 10 +0.0175 33322839.02 31671268.52 12 +0.0185 67023904.89 41782993.21 15 +0.0195 6340817.631 6550385.871 9 +0.0205 2121643.251 2051935.468 8 +0.0215 26698176.28 21204450.06 9 +0.0225 30531.32543 32173.76071 9 +0.0235 5420578.398 5794842.057 7 +0.0245 3521037.649 2319081.674 9 +0.0255 3654.20495 3756.392346 5 +0.0265 6.916710177 7.237677115 8 +0.0275 26251.31859 22360.78656 8 +0.0285 19.18662385 18.60046376 7 +0.0295 13749294.43 9773567.75 10 +0.0305 20678250.78 20393088.02 9 +0.0315 9.145981016 10.56069494 3 +0.0325 5.970678619e-17 6.887167472e-17 3 +0.0335 34489979.7 29796970.1 13 +0.0345 29864724.22 26754835.1 13 +0.0355 0.0002264847933 0.0002292607305 4 +0.0365 17447212.71 11248221.45 14 +0.0375 951940.0913 780854.4609 5 +0.0385 16871891.25 16971362.43 9 +0.0395 23124799.18 24961740.42 6 +0.0405 12451099.2 8253928.855 8 +0.0415 3020.32141 3169.85198 8 +0.0425 629394.6862 667191.7732 8 +0.0435 6706054.203 6250642.416 11 +0.0445 10366365.13 8782875.106 7 +0.0455 670556.2026 711231.657 8 +0.0465 4431465.166 4556450.236 15 +0.0475 9548843.234 9027401.477 12 +0.0485 19065660.88 16721869.38 9 +0.0495 70023.38814 69730.26368 9 +0.0505 311816.1812 325658.7956 11 +0.0515 782124.0347 688213.9829 9 +0.0525 5998870.042 6323053.075 9 +0.0535 4366.783741 4183.951356 6 +0.0545 417182841.9 392220678.4 14 +0.0555 2381722.373 2300303.105 11 +0.0565 6.622681806 6.030345748 9 +0.0575 300387.746 315022.5967 10 +0.0585 20097.71996 24614.57945 2 +0.0595 4693787.692 4945859.744 9 +0.0605 2.705684484e-13 2.705684484e-13 1 +0.0615 1683467.051 1735251.572 11 +0.0625 12581452.91 13344160.21 8 +0.0635 17177934.76 18363632.19 7 +0.0645 1646.826185 1434.323235 10 +0.0655 1512757.632 1522667.584 11 +0.0665 6726874.53 5171670.632 11 +0.0675 7.673915231e-06 7.768613055e-06 6 +0.0685 4147616.69 3157172.974 5 +0.0695 3098842.343 2960853.947 14 +0.0705 2345795.425 2533748.646 6 +0.0715 2067998.658 1847593.155 16 +0.0725 16224496.82 16478165.07 7 +0.0735 6495947.318 6688697.505 9 +0.0745 102.1419261 117.9433368 3 +0.0755 6744850.369 7285270.538 6 +0.0765 13895775.19 14698580.48 8 +0.0775 1388304.286 1021629.125 10 +0.0785 5295.337543 6114.529109 3 +0.0795 27299.61523 27351.25965 6 +0.0805 16952216.6 18122681.85 7 +0.0815 25867481.6 27557401.76 7 +0.0825 1.21837052e-08 1.492193045e-08 2 +0.0835 9618869.612 7286016.597 11 +0.0845 112.02737 124.641363 4 +0.0855 13086.32539 14630.75274 4 +0.0865 3762442.863 3870715.516 10 +0.0875 2067408.707 2231143.825 6 +0.0885 7906266.117 7964517.487 12 +0.0895 9749697.952 10225567.13 10 +0.0905 21455522.14 16286758.98 8 +0.0915 3899412.348 3066306.162 8 +0.0925 78771968.26 56916663.61 8 +0.0935 1256916.996 1116406.779 12 +0.0945 45.54533962 45.77103852 9 +0.0955 15768542.09 16842611.9 7 +0.0965 6428.146733 6816.484048 8 +0.0975 127.4121672 136.4827313 6 +0.0985 5988846.892 4786143.752 4 +0.0995 29910662 19444624.16 9 +0.1005 95.00838707 79.15442285 4 +0.1015 23346.47076 25574.52467 5 +0.1025 37592010.62 39214955.74 7 +0.1035 53.8861508 60.17123526 4 +0.1045 13968.19848 15085.65086 6 +0.1055 2898.032969 3098.074927 7 +0.1065 3.346030486 2.705611581 7 +0.1075 7695.009702 7586.837825 6 +0.1085 29031929.14 31358062.49 6 +0.1095 2152793.003 2358266.576 5 +0.1105 16899849.53 17911435.16 7 +0.1115 282.698423 214.6889795 6 +0.1125 3085962.907 2898515.542 9 +0.1135 15406894.91 17104190.09 4 +0.1145 10233.39544 11210.12298 5 +0.1155 8024703.974 8509828.931 8 +0.1165 2504099.877 2005520.254 9 +0.1175 1315935.713 1261655.204 6 +0.1185 5589883.713 5779124.903 11 +0.1195 2148266.006 2278396.371 8 +0.1205 15926938.7 15782328.1 3 +0.1215 9044.090842 9361.714329 11 +0.1225 77632974.89 80029619.82 9 +0.1235 75721.23407 81787.84803 6 +0.1245 15190.40458 15014.19754 10 +0.1255 11823.81455 13219.41643 4 +0.1265 0.9022128647 1.006145114 4 +0.1275 1873982.684 1976108.478 8 +0.1285 42.83491308 45.14907075 9 +0.1295 38008609.34 34969877.96 9 +0.1305 883569.7377 750129.5059 8 +0.1315 0.03212460798 0.02876200198 4 +0.1325 6.209875494e-06 7.170505129e-06 3 +0.1335 4.095090083 4.086276679 7 +0.1345 7.644080261e-13 9.362048096e-13 2 +0.1355 28173.26223 30117.92197 7 +0.1365 425674.7012 455065.3894 7 +0.1375 2787723.441 2166808.942 8 +0.1385 3078060.658 3168489.979 10 +0.1395 41049390.5 30891825.85 6 +0.1405 0.6765067851 0.7563575794 4 +0.1415 0.3003871443 0.2767020382 4 +0.1425 6.622428997 5.011578874 9 +0.1435 2.464066498 2.754896413 4 +0.1445 90538.50232 88827.55389 4 +0.1455 43930.54712 48123.50257 5 +0.1465 25973705.8 20137680.7 10 +0.1475 1.864679236e-05 1.787472676e-05 3 +0.1485 27224008.93 28875397.7 8 +0.1495 0.006837492669 0.006310007951 7 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/rotated.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/rotated.dat new file mode 100644 index 0000000000..1648e42262 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/rotated.dat @@ -0,0 +1,333 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: Sphere0 +# position: 0.0585 0 -0.0925 +# title: 4PI PSD monitor +# Ncount: 10622832 +# filename: rotated.dat +# statistics: X0=0.0171366; dX=1.99993; Y0=1.08058; dY=1.24824; +# signal: Min=0; Max=1.66765e+12; Mean=6.75406e+08; +# values: 5.47079e+12 2.38132e+11 5.3096e+06 +# xvar: Lo +# yvar: La +# xlabel: Longitude [deg] +# ylabel: Latitude [deg] +# zvar: I +# zlabel: Signal per bin +# xylimits: -180 180 -90 90 +# variables: I I_err N +# Data [Sphere0/rotated.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.534682712e+11 5.062779996e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.663238659e+12 1.667646255e+12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.952492593e+11 5.849072721e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [Sphere0/rotated.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4898159328 1.356264765e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9612829359 1.614705453e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5651944453 1.099603179e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [Sphere0/rotated.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 506126 338927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1836728 1473368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 705386 449068 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/time.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/time.dat new file mode 100644 index 0000000000..c8b181c66e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/time.dat @@ -0,0 +1,358 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: tof +# position: 49.4198 0 -35.0741 +# title: TOF [s] monitor +# Ncount: 10622832 +# filename: time.dat +# statistics: X0=0.0567228; dX=0.0180949; +# signal: Min=0; Max=4.21383e+08; Mean=1.01736e+07; +# values: 3.05209e+09 4.42982e+08 2319 +# xvar: t +# yvar: (I,I_err) +# xlabel: TOF [s] +# ylabel: Intensity [n/s/bin] +# xlimits: 0 0.15 +# variables: t I I_err N +0.00025 0 0 0 +0.00075 0 0 0 +0.00125 0 0 0 +0.00175 0 0 0 +0.00225 0 0 0 +0.00275 0 0 0 +0.00325 0 0 0 +0.00375 0 0 0 +0.00425 0 0 0 +0.00475 0 0 0 +0.00525 0 0 0 +0.00575 0 0 0 +0.00625 0 0 0 +0.00675 0 0 0 +0.00725 0 0 0 +0.00775 0 0 0 +0.00825 0 0 0 +0.00875 0 0 0 +0.00925 0 0 0 +0.00975 0 0 0 +0.01025 0 0 0 +0.01075 0 0 0 +0.01125 0 0 0 +0.01175 0 0 0 +0.01225 0 0 0 +0.01275 0 0 0 +0.01325 0 0 0 +0.01375 0 0 0 +0.01425 0 0 0 +0.01475 0 0 0 +0.01525 0 0 0 +0.01575 0 0 0 +0.01625 0 0 0 +0.01675 0 0 0 +0.01725 0 0 0 +0.01775 0 0 0 +0.01825 2.251916488e-06 2.431848777e-06 6 +0.01875 1.856588131 1.347242421 14 +0.01925 11191508.16 9157080.529 21 +0.01975 303974.3126 299326.298 35 +0.02025 5952886.108 3832904.466 45 +0.02075 15876913.35 11345846.05 41 +0.02125 14180979.16 7943426.837 54 +0.02175 25277287.27 13656560.82 58 +0.02225 18539137.55 16689806.98 59 +0.02275 2902031.46 1816419.013 56 +0.02325 11407778.43 9890605.769 55 +0.02375 11029830.52 6943960.007 62 +0.02425 1091789.279 1048235.188 53 +0.02475 1600365.865 1198261.571 56 +0.02525 46380506.45 31422776.54 55 +0.02575 11033712.01 5032076.551 60 +0.02625 14880841.05 6785782.962 61 +0.02675 381203.7568 222164.4393 43 +0.02725 2647792.61 2498735.312 50 +0.02775 3758130.217 2096127.106 60 +0.02825 14575056.28 12326577.1 49 +0.02875 1960202.299 1264335.152 58 +0.02925 4398044.311 2454985.967 47 +0.02975 11229645.66 8026263.646 38 +0.03025 38907921.45 31834787.52 35 +0.03075 817681.6745 819995.7115 48 +0.03125 39606499.02 22487987.38 50 +0.03175 3885336.954 2549222.693 28 +0.03225 21270298.47 19701382.87 40 +0.03275 84626.10664 60684.21971 29 +0.03325 9247114.646 6593135.436 35 +0.03375 14171808.11 14265409.42 36 +0.03425 489463.2821 415739.611 25 +0.03475 19712317.13 15332305.1 27 +0.03525 39472166.71 24152937.51 30 +0.03575 26506023.82 15387271.81 22 +0.03625 401546.0171 361867.6522 18 +0.03675 25592175.57 18513179.86 20 +0.03725 14106469.65 14424456.37 12 +0.03775 7906.964437 6382.893383 8 +0.03825 35.95468652 44.03531791 2 +0.03875 0 0 0 +0.03925 184954.8678 184954.8678 1 +0.03975 311794.7368 311794.7368 1 +0.04025 2.669948183e-08 2.985092776e-08 4 +0.04075 0.6657124592 0.7292507462 5 +0.04125 15410258.64 16094715.36 11 +0.04175 69483688.65 46598830.97 15 +0.04225 70952012.41 47191112.5 12 +0.04275 26067680.52 19501570.85 24 +0.04325 35174364.79 26792842.44 22 +0.04375 9493908.659 6532582.875 22 +0.04425 39413841.15 22314913.2 16 +0.04475 24175225.48 15989695.32 26 +0.04525 97751188.4 49130756.37 18 +0.04575 6736694.74 6957528.21 15 +0.04625 41371253.4 23290912.01 23 +0.04675 48322113.39 30009014.5 13 +0.04725 19341033.12 11525458.61 12 +0.04775 32361674.3 20346503.71 14 +0.04825 18984271.48 17921187.08 12 +0.04875 51056944.26 24267196.7 15 +0.04925 7303658.592 4582405.509 13 +0.04975 41595166.72 23321503.82 11 +0.05025 36578001.03 25850482.58 14 +0.05075 5812084.521 3864626.723 12 +0.05125 44685301.1 22884085.5 18 +0.05175 37434353.63 22344937.37 9 +0.05225 64016439.08 44111918.14 13 +0.05275 6032433.144 3819392.532 10 +0.05325 41033685.36 34827258.21 11 +0.05375 35779401.12 23165429.79 6 +0.05425 4122537.643 4515945.337 5 +0.05475 32595385.41 30784941.21 9 +0.05525 28255590.55 26773541.97 4 +0.05575 19692436.68 19875784.85 8 +0.05625 22956406.38 15877656.78 8 +0.05675 57027077.13 55266799.6 8 +0.05725 44453640.56 40493138.02 7 +0.05775 23766789.13 22877385.89 5 +0.05825 5730489.256 6406710.028 4 +0.05875 4415055.728 4936182.366 4 +0.05925 6479930.704 7094078.617 5 +0.05975 37844747.28 42219941.18 3 +0.06025 0 0 0 +0.06075 0 0 0 +0.06125 0 0 0 +0.06175 18108252.15 14672254.22 6 +0.06225 844.4054032 1034.181187 2 +0.06275 3757808.855 3604329.257 4 +0.06325 18231960.62 14026745.89 5 +0.06375 48680854.67 37327209.72 8 +0.06425 421383230.2 399103643.2 9 +0.06475 84807987.74 80716380.38 8 +0.06525 4833684.922 3298309.297 6 +0.06575 28164255.33 19644816.95 6 +0.06625 11402125.78 11852501.51 10 +0.06675 36163816.32 35550743.02 6 +0.06725 2699731.067 2851861.605 5 +0.06775 2.254749344 1.955490239 4 +0.06825 114566.7694 85701.44977 7 +0.06875 258999.1607 212455.4707 4 +0.06925 2.350385785 1.474731431 5 +0.06975 3387137.339 3387137.339 1 +0.07025 1782600.782 2183231.166 2 +0.07075 14870327.05 13952696.69 3 +0.07125 6661426.564 7691717.274 3 +0.07175 22812859.32 23937483.37 4 +0.07225 4304365.868 5271750.021 2 +0.07275 2919.429165 3343.299568 3 +0.07325 68135828.96 40429136.94 10 +0.07375 26378576.62 16866933.81 7 +0.07425 111544.5321 120481.8619 6 +0.07475 46669193.84 35625019.26 10 +0.07525 50514310.79 40243523.04 3 +0.07575 1.716638762e-19 2.102418668e-19 2 +0.07625 15503684.73 15503684.73 1 +0.07675 46243182.21 31174731.75 4 +0.07725 9.296423653 9.296423653 1 +0.07775 1.582079845e-14 1.937366419e-14 2 +0.07825 30333175.21 30333175.21 1 +0.07875 29227774.23 22705832.26 2 +0.07925 0.0007448913216 0.0007448913216 1 +0.07975 6214540.147 6214540.147 1 +0.08025 6204.629844 6204.629844 1 +0.08075 0 0 0 +0.08125 0 0 0 +0.08175 5796952.701 5796952.701 1 +0.08225 0 0 0 +0.08275 2.068820556e-05 2.068820556e-05 1 +0.08325 0 0 0 +0.08375 0 0 0 +0.08425 0.002778238833 0.002778238833 1 +0.08475 51865817.28 42682453.84 3 +0.08525 0 0 0 +0.08575 26808666.09 29967183.03 4 +0.08625 18915.61156 18915.61156 1 +0.08675 25817511.11 20085495.81 3 +0.08725 0 0 0 +0.08775 19831374.34 16808037.4 3 +0.08825 9447973.546 10909580.14 3 +0.08875 0 0 0 +0.08925 20692761.19 25343353.14 2 +0.08975 0 0 0 +0.09025 14414.3008 17462.57196 2 +0.09075 5420578.397 6259144.793 3 +0.09125 6428800.446 7873640.376 2 +0.09175 18634889.22 18786275.81 4 +0.09225 38484.60008 44399.38808 3 +0.09275 11147370.11 11147370.11 1 +0.09325 51969854.45 30303735.03 7 +0.09375 7625714.589 7694641.649 4 +0.09425 7683829.68 9408856.86 2 +0.09475 0 0 0 +0.09525 9600975.863 10551701.16 2 +0.09575 0 0 0 +0.09625 1.449260221e-10 1.774974023e-10 2 +0.09675 1.297038911e-21 1.297038911e-21 1 +0.09725 0.3429299833 0.3429299833 1 +0.09775 0.02348743447 0.02348743447 1 +0.09825 0 0 0 +0.09875 14180156.68 14180156.68 1 +0.09925 0 0 0 +0.09975 0 0 0 +0.10025 0 0 0 +0.10075 4.096540695e-23 4.096540695e-23 1 +0.10125 0 0 0 +0.10175 3.537732353e-20 3.537732353e-20 1 +0.10225 35817.64625 35817.64625 1 +0.10275 0 0 0 +0.10325 0 0 0 +0.10375 0 0 0 +0.10425 1068.666407 1068.666407 1 +0.10475 43.42805908 43.42805908 1 +0.10525 0 0 0 +0.10575 16103.09229 16103.09229 1 +0.10625 0 0 0 +0.10675 0 0 0 +0.10725 32469.18429 32469.18429 1 +0.10775 0 0 0 +0.10825 0 0 0 +0.10875 8082.037027 8082.037027 1 +0.10925 0 0 0 +0.10975 0.008309353634 0.008309353634 1 +0.11025 159.2530393 159.2530393 1 +0.11075 5105720.998 4356653.422 3 +0.11125 0 0 0 +0.11175 7.684918775e-21 7.684918775e-21 1 +0.11225 0 0 0 +0.11275 2.881443608e-18 2.881443608e-18 1 +0.11325 0 0 0 +0.11375 0 0 0 +0.11425 0 0 0 +0.11475 0 0 0 +0.11525 0 0 0 +0.11575 149.3665619 146.2689954 2 +0.11625 0 0 0 +0.11675 0 0 0 +0.11725 0 0 0 +0.11775 0 0 0 +0.11825 0 0 0 +0.11875 0 0 0 +0.11925 0 0 0 +0.11975 0 0 0 +0.12025 5.140274313e-19 5.140274313e-19 1 +0.12075 0 0 0 +0.12125 0 0 0 +0.12175 2649464.196 2649464.196 1 +0.12225 0 0 0 +0.12275 0 0 0 +0.12325 6.273514114 6.273514114 1 +0.12375 0 0 0 +0.12425 0 0 0 +0.12475 0 0 0 +0.12525 273.0702076 273.0702076 1 +0.12575 1.023924534e-05 1.023924534e-05 1 +0.12625 0 0 0 +0.12675 0 0 0 +0.12725 0 0 0 +0.12775 0 0 0 +0.12825 0 0 0 +0.12875 0 0 0 +0.12925 0.0001951328318 0.0001951328318 1 +0.12975 367394.8768 367394.8768 1 +0.13025 0 0 0 +0.13075 0 0 0 +0.13125 0 0 0 +0.13175 0 0 0 +0.13225 0 0 0 +0.13275 3.932063975 4.809165206 2 +0.13325 0 0 0 +0.13375 0 0 0 +0.13425 0 0 0 +0.13475 0 0 0 +0.13525 3.640767143e-05 3.640767143e-05 1 +0.13575 0 0 0 +0.13625 0 0 0 +0.13675 0 0 0 +0.13725 0 0 0 +0.13775 0 0 0 +0.13825 0 0 0 +0.13875 0 0 0 +0.13925 0 0 0 +0.13975 0 0 0 +0.14025 0 0 0 +0.14075 0 0 0 +0.14125 0 0 0 +0.14175 0 0 0 +0.14225 0 0 0 +0.14275 0 0 0 +0.14325 0 0 0 +0.14375 0 0 0 +0.14425 0 0 0 +0.14475 0 0 0 +0.14525 0 0 0 +0.14575 0 0 0 +0.14625 0 0 0 +0.14675 0 0 0 +0.14725 0 0 0 +0.14775 0 0 0 +0.14825 0 0 0 +0.14875 0 0 0 +0.14925 0 0 0 +0.14975 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/wavelength.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/wavelength.dat new file mode 100644 index 0000000000..a2f5462ce2 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/wavelength.dat @@ -0,0 +1,358 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: wavelength +# position: 49.4198 0 -35.0741 +# title: Wavelength [Angs] monitor +# Ncount: 10622832 +# filename: wavelength.dat +# statistics: X0=3.58862; dX=1.18951; +# signal: Min=0; Max=4.2112e+08; Mean=1.01736e+07; +# values: 3.05209e+09 4.42982e+08 2319 +# xvar: L +# yvar: (I,I_err) +# xlabel: Wavelength [Angs] +# ylabel: Intensity [n/s/bin] +# xlimits: 0.5 10 +# variables: L I I_err N +0.5158333333 0 0 0 +0.5475 0 0 0 +0.5791666667 0 0 0 +0.6108333333 0 0 0 +0.6425 0 0 0 +0.6741666667 0 0 0 +0.7058333333 0 0 0 +0.7375 0 0 0 +0.7691666667 0 0 0 +0.8008333333 0 0 0 +0.8325 0 0 0 +0.8641666667 0 0 0 +0.8958333333 0 0 0 +0.9275 0 0 0 +0.9591666667 0 0 0 +0.9908333333 2.251467271e-06 2.59977047e-06 3 +1.0225 4.717088324e-10 4.57701843e-10 7 +1.054166667 5925.406705 6117.807842 15 +1.085833333 11185584.61 9148151.027 22 +1.1175 303974.3163 299714.3319 32 +1.149166667 5952886.104 3837739.472 40 +1.180833333 5546811.14 5619068.238 32 +1.2125 23860242.05 12662902.04 40 +1.244166667 16726394.64 12575714.1 55 +1.275833333 9541242.658 5388796.904 58 +1.3075 18574444.51 16763495.06 39 +1.339166667 12276909.51 10011164.09 47 +1.370833333 987522.7912 770861.9803 48 +1.4025 10679315.74 6959401.999 50 +1.434166667 1054427.604 648403.0907 53 +1.465833333 2582165.669 1593112.426 45 +1.4975 1365087.674 1182257.985 50 +1.529166667 47517784.95 31484501.46 48 +1.560833333 8607982.399 4748841.82 48 +1.5925 14880841.05 6788236.437 58 +1.624166667 289581.6129 211435.3725 30 +1.655833333 2561161.836 2496639.754 47 +1.6875 2332086.151 1498195.079 52 +1.719166667 3352859.065 2307394.13 41 +1.750833333 12837935.1 12210953.76 45 +1.7825 1948761.403 1266945.936 46 +1.814166667 4398044.296 2456550.249 44 +1.845833333 5025679.942 5008474.602 32 +1.8775 14960328.01 10874322.48 36 +1.909166667 30152256.17 30684675.42 28 +1.940833333 17470188.54 12074690.42 46 +1.9725 24690311.51 19092193.26 40 +2.004166667 2148365.398 2194295.776 23 +2.035833333 21270254.51 19707480.13 39 +2.0675 84502.2273 61097.31697 20 +2.099166667 2902044 2922976.676 29 +2.130833333 6352898.27 5924140.263 32 +2.1625 14564247.36 14355047.59 25 +2.194166667 15161042 15067281.14 24 +2.225833333 4640594.597 3057063.28 21 +2.2575 39489577.37 24204902.02 26 +2.289166667 26480791.8 15400013.85 21 +2.320833333 358486.7483 363905.3529 13 +2.3525 12644663.26 12907707.55 19 +2.384166667 26856907 19658991.56 13 +2.415833333 559753.2147 397352.5226 12 +2.4475 7904.079866 6324.624292 10 +2.479166667 36.62039898 38.13103261 8 +2.510833333 57442901.24 47240362.2 8 +2.5425 13977899.99 10364097.66 12 +2.574166667 84609573.1 48771283.38 16 +2.605833333 270509.3973 204306.4836 17 +2.6375 31796290.25 20702004.17 13 +2.669166667 29179683.58 26150802.96 20 +2.700833333 14137087.05 8106824.791 20 +2.7325 34766765.08 21815385.34 16 +2.764166667 2882360.003 2727398.065 19 +2.795833333 91003591.24 42898224.07 18 +2.8275 28040462.64 29390246.77 10 +2.859166667 44409062.64 24038287 20 +2.890833333 38839851.21 26920345.64 19 +2.9225 13181147.68 13658221.32 9 +2.954166667 19341027.49 11576965 10 +2.985833333 26721807.97 19576268.41 13 +3.0175 22791779.57 18942527.05 9 +3.049166667 7837619.733 5033186.965 12 +3.080833333 46752742.51 23981103.67 13 +3.1125 5602730.862 4266191.078 11 +3.144166667 41595040.34 23416022.05 9 +3.175833333 36516982.09 25966643.53 12 +3.2075 5873103.463 3848503.275 14 +3.239166667 21597128.46 15971089.36 10 +3.270833333 27500005.09 17541540.78 11 +3.3025 91710318.49 48997631.18 10 +3.334166667 5325322.896 4346328.761 10 +3.365833333 12157179.49 7397137.261 11 +3.3975 34912257.88 34806724.79 8 +3.429166667 13857882.17 15886446.12 3 +3.460833333 21921578.88 18182037.71 7 +3.4925 33154409.31 31935068.46 5 +3.524166667 3563453.809 3845403.46 6 +3.555833333 28255590.76 25815224.44 7 +3.5875 28087085.97 20901398.45 7 +3.619166667 14561756.87 14863318.82 6 +3.650833333 5089329.43 5440690.229 7 +3.6825 96391388.23 68280766.92 6 +3.714166667 2963887.417 3301255.352 4 +3.745833333 20803045.74 22783239.89 5 +3.7775 10145400.98 7822744.721 4 +3.809166667 0.0001192861371 0.0001460950071 2 +3.840833333 12030483.14 8975364.878 8 +3.8725 50403291.4 41177135.04 7 +3.904166667 1.830550049e-08 1.830550049e-08 1 +3.935833333 3757834.063 3504346.508 6 +3.9675 44646985.09 39662287.58 3 +3.999166667 22528935 13011186.83 9 +4.030833333 421120100.2 401435453 8 +4.0625 84675440.05 82077581.67 6 +4.094166667 4285483.185 3221243.129 7 +4.125833333 26001278.28 19652195.93 5 +4.1575 2843826.803 3115141.707 5 +4.189166667 11393122.03 12204653.47 6 +4.220833333 32849441.14 35974533.02 5 +4.2525 6023009.674 4466787.103 7 +4.284166667 0.5563591293 0.6813979561 2 +4.315833333 56739.601 63434.777 4 +4.3475 234790.2632 196536.1575 8 +4.379166667 82039.26134 94728.83454 3 +4.410833333 3387138.192 3911129.186 3 +4.4425 1.933542272e-27 1.933542272e-27 1 +4.474166667 1782600.782 2183231.166 2 +4.505833333 12120015.76 12120015.76 1 +4.5375 2750492.637 3151054.013 3 +4.569166667 29466269.17 24559717.83 4 +4.600833333 7835.375545 9577.370457 2 +4.6325 4304365.868 4970253.585 3 +4.664166667 2897.984738 2897.984738 1 +4.695833333 64820786.44 40453107.78 9 +4.7275 29668459.2 17042474 9 +4.759166667 136725.9172 126004.8184 4 +4.790833333 6.865896395e-12 5.239162088e-12 5 +4.8225 46669193.84 36140722.02 7 +4.854166667 50514310.79 40243523.04 3 +4.885833333 1.716638762e-19 2.102418668e-19 2 +4.9175 22844874.72 18098908 2 +4.949166667 38901992.22 29336516.44 2 +4.980833333 9.249946232e-26 9.249946232e-26 1 +5.0125 9.296423653 9.296423653 1 +5.044166667 1.582079845e-14 1.937366419e-14 2 +5.075833333 30333175.21 30333175.21 1 +5.1075 29227774.23 22705832.26 2 +5.139166667 0.0007448913216 0.0007448913216 1 +5.170833333 12011492.85 8503667.415 2 +5.2025 6204.629865 7599.088572 2 +5.234166667 0 0 0 +5.265833333 0 0 0 +5.2975 0 0 0 +5.329166667 0 0 0 +5.360833333 0.002778238833 0.002778238833 1 +5.3925 51865817.28 42682453.84 3 +5.424166667 0 0 0 +5.455833333 4877.965586 5733.818709 2 +5.4875 26803788.13 32827802.04 2 +5.519166667 18915.61156 18915.61156 1 +5.550833333 25817511.11 20085495.81 3 +5.5825 182.3155473 182.3155473 1 +5.614166667 29279165.57 18414000.27 3 +5.645833333 1.921277633e-24 1.921277633e-24 1 +5.6775 7.141402772e-16 7.141402772e-16 1 +5.709166667 20692761.19 25343353.14 2 +5.740833333 0 0 0 +5.7725 0 0 0 +5.804166667 14414.3008 15976.14774 4 +5.835833333 5420578.397 5420578.397 1 +5.8675 6428800.446 7873640.376 2 +5.899166667 1808540.273 2088313.757 3 +5.930833333 16826378.83 19429389.88 3 +5.9625 38454.7214 38454.7214 1 +5.994166667 47138675.55 29434127.35 5 +6.025833333 22870719.65 16244792.54 5 +6.0575 733543.9558 898404.1978 2 +6.089166667 7683829.68 9408856.86 2 +6.120833333 0 0 0 +6.1525 8839331.47 8839331.47 1 +6.184166667 761644.3927 761644.3927 1 +6.215833333 1.449260221e-10 1.449260221e-10 1 +6.2475 6.830904378e-24 6.830904378e-24 1 +6.279166667 0.3429299833 0.4200017383 2 +6.310833333 0 0 0 +6.3425 0.02348743447 0.02348743447 1 +6.374166667 0 0 0 +6.405833333 14180156.68 17367074.18 2 +6.4375 0 0 0 +6.469166667 3.537732353e-20 3.537732353e-20 1 +6.500833333 0 0 0 +6.5325 35817.64625 35817.64625 1 +6.564166667 0 0 0 +6.595833333 0 0 0 +6.6275 0 0 0 +6.659166667 0 0 0 +6.690833333 1112.094467 1292.087738 2 +6.7225 0 0 0 +6.754166667 0 0 0 +6.785833333 16103.09229 16103.09229 1 +6.8175 0 0 0 +6.849166667 0 0 0 +6.880833333 32469.18429 32469.18429 1 +6.9125 0 0 0 +6.944166667 0 0 0 +6.975833333 8082.037027 8082.037027 1 +7.0075 0 0 0 +7.039166667 0.008309353634 0.008309353634 1 +7.070833333 0 0 0 +7.1025 0 0 0 +7.134166667 5105864.039 4356625.486 3 +7.165833333 0 0 0 +7.1975 16.21201982 19.85558814 2 +7.229166667 0 0 0 +7.260833333 0 0 0 +7.2925 2.881443608e-18 2.881443608e-18 1 +7.324166667 0 0 0 +7.355833333 0 0 0 +7.3875 0 0 0 +7.419166667 0 0 0 +7.450833333 0 0 0 +7.4825 0 0 0 +7.514166667 125.2783254 125.2783254 1 +7.545833333 24.08823645 24.08823645 1 +7.5775 0 0 0 +7.609166667 0 0 0 +7.640833333 0 0 0 +7.6725 0 0 0 +7.704166667 5.140274313e-19 5.140274313e-19 1 +7.735833333 0 0 0 +7.7675 0 0 0 +7.799166667 2649464.196 2649464.196 1 +7.830833333 0 0 0 +7.8625 0 0 0 +7.894166667 0 0 0 +7.925833333 0 0 0 +7.9575 6.273514114 6.273514114 1 +7.989166667 0 0 0 +8.020833333 0 0 0 +8.0525 273.0702076 273.0702076 1 +8.084166667 0 0 0 +8.115833333 1.023924534e-05 1.023924534e-05 1 +8.1475 0 0 0 +8.179166667 0 0 0 +8.210833333 0 0 0 +8.2425 0 0 0 +8.274166667 0 0 0 +8.305833333 0 0 0 +8.3375 0 0 0 +8.369166667 0.0001951328318 0.0001951328318 1 +8.400833333 367394.8768 367394.8768 1 +8.4325 0 0 0 +8.464166667 0 0 0 +8.495833333 0 0 0 +8.5275 0 0 0 +8.559166667 0 0 0 +8.590833333 0 0 0 +8.6225 0 0 0 +8.654166667 3.932063975 4.809165206 2 +8.685833333 0 0 0 +8.7175 0 0 0 +8.749166667 0 0 0 +8.780833333 3.640767143e-05 3.640767143e-05 1 +8.8125 0 0 0 +8.844166667 0 0 0 +8.875833333 0 0 0 +8.9075 0 0 0 +8.939166667 0 0 0 +8.970833333 0 0 0 +9.0025 0 0 0 +9.034166667 0 0 0 +9.065833333 0 0 0 +9.0975 0 0 0 +9.129166667 0 0 0 +9.160833333 0 0 0 +9.1925 0 0 0 +9.224166667 0 0 0 +9.255833333 0 0 0 +9.2875 0 0 0 +9.319166667 0 0 0 +9.350833333 0 0 0 +9.3825 0 0 0 +9.414166667 0 0 0 +9.445833333 0 0 0 +9.4775 0 0 0 +9.509166667 0 0 0 +9.540833333 0 0 0 +9.5725 0 0 0 +9.604166667 0 0 0 +9.635833333 0 0 0 +9.6675 0 0 0 +9.699166667 0 0 0 +9.730833333 0 0 0 +9.7625 0 0 0 +9.794166667 0 0 0 +9.825833333 0 0 0 +9.8575 0 0 0 +9.889166667 0 0 0 +9.920833333 0 0 0 +9.9525 0 0 0 +9.984166667 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/wavelength_tof.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/wavelength_tof.dat new file mode 100644 index 0000000000..39eb5150cc --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/1/wavelength_tof.dat @@ -0,0 +1,963 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_baseline.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Param: filter=1 +# Date: Sun Mar 1 17:29:24 2026 (1772382564) +# type: array_2d(300, 300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_baseline.instr) +# component: wavelength_tof +# position: 49.4198 0 -35.0741 +# title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin +# Ncount: 10622832 +# filename: wavelength_tof.dat +# statistics: X0=0.0567228; dX=0.0180949; Y0=3.58862; dY=1.18951; +# signal: Min=0; Max=4.21096e+08; Mean=33912.1; +# values: 3.05209e+09 4.42982e+08 2319 +# xvar: TO +# yvar: Wa +# xlabel: TOF [s] +# ylabel: Wavelength [Angs] +# zvar: I +# zlabel: Signal per bin +# xylimits: 0 0.15 0.5 10 +# variables: I I_err N +# Data [wavelength_tof/wavelength_tof.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.251467271e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.492167516e-10 2.249208081e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 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.856588131 5923.550117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11185584.61 0.0003178398495 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 303974.3123 0.004047753148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.859743913e-06 5952886.104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.306166657e-07 5546811.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10330102.21 13530139.84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 650839.316 16075555.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9201731.943 339510.7147 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18199626.83 374817.6795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2527213.78 9749695.731 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0008162227672 987522.7904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 670559.9113 10008755.83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1021074.69 33352.9135 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1058436.365 1523729.304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76636.56115 1288451.112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45092055.34 2425729.609 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8607982.399 4.244240167e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006483279946 14880841.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.666365308e-29 289581.6129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91622.1439 2469539.692 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 178252.918 2153833.233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1604296.984 1748562.081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12826494.2 11440.89642 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000418898407 1948761.402 3.148311546e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.611079465e-13 4398044.296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01467766984 5025679.927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6203965.735 8756362.273 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30151559.18 696.9902911 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 816984.6842 16653203.86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22953295.16 1737016.348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2148320.606 44.79190808 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21270251.42 3.082863358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.253446753 84499.97386 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 123.0499211 2901920.95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6345193.697 7704.573087 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14164103.54 400143.8231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 89319.45901 15071722.54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4640594.597 1.469601703e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39472110.96 17466.40529 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55.74426493 26480736.06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7821.360579 350665.3877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50880.62942 12593782.63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12998392.94 13858514.06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 247955.5934 2.884571612 0 0 0 311794.7368 3.373660275e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7904.079866 0 0 0 0 2.66994815e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35.95468652 0 0 0 0 0.6657124592 1.581579442e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15409586.41 42033314.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 672.2264323 13977227.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184954.8678 0 0 0 0 13473146.06 70951472.18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 540.2309787 269969.1664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25797711.36 5998578.892 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29175785.9 3897.679136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.655939255e-06 9440225.671 4696861.378 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49785.30826 34716979.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2882360.003 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21292865.48 69710725.76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28040462.64 0.001322284305 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6736694.738 37672367.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3698885.501 35140965.71 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13181147.68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19341027.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.626130669 26721802.34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5639871.962 17151907.61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1832363.868 6005255.865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45051688.4 1701054.114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5602604.478 126.383989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41595040.34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36516982.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61018.94219 5812084.521 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21597128.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23088172.64 4411832.456 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33022521.17 58687797.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5325249.586 73.31050848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3392.182795 6032359.833 6121427.474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34912257.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004917277432 13857882.17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21921518.95 59.92991892 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4122477.713 29031931.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3563453.809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28255590.55 0.2090994122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18890998.18 9196087.794 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 801438.2869 13760318.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5089329.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51937747.7 44453640.54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02318949922 2963887.394 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20802901.74 144.0037119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5730345.253 4415055.728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001192861371 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6479930.704 0 0 0 0 5550552.436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37844747.28 0 0 0 12557699.71 844.4054032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.830550049e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3757808.855 25.20769777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10627097.11 34019887.98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7604838.302 14636460.82 287635.8806 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24505.87227 421095594.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84675440.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 132547.687 4152935.498 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 680749.4242 25320528.85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2843726.483 100.3209362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11393061.96 60.06544893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8963.493909 32840477.64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3323278.606 2699731.067 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5563591293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.698390215 56737.90261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57828.86676 176961.3964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82037.76431 1.497034207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8533515786 3387137.339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.933542272e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1782600.782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12120015.76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2750311.296 181.3410214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6661245.223 22805023.95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7835.375545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4304365.868 8.648200915e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2897.984738 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21.44442634 64820764.99 3.246429352e-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 3315063.97 26353395.23 1.251031056e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25181.38507 111544.5321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.838645072e-12 3.027251322e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46669193.84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50514310.79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.716638762e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15503684.73 7341189.989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38901992.22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.249946232e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.296423653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.582079845e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30333175.21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29227774.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007448913216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6214540.147 0 0 0 5796952.701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6204.629844 0 0 0 0 2.068820556e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002778238833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51865817.28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4877.965586 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26803788.13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18915.61156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25817511.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182.3155473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19831192.03 9447973.546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.921277633e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.141402772e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20692761.19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14414.3008 3.018925115e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5420578.397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6428800.446 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1808540.273 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16826348.95 29.87868279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38454.7214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11147370.11 35991305.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15978549.01 6892170.633 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 733543.9558 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7683829.68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8839331.47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 761644.3927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.449260221e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.830904378e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.297038911e-21 0.3429299833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02348743447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14180156.68 0 0 0 4.096540695e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.537732353e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35817.64625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1068.666407 43.42805908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16103.09229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32469.18429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8082.037027 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008309353634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159.2530393 5105704.786 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.21201982 0 7.684918775e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.881443608e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 125.2783254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.08823645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.140274313e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2649464.196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.273514114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 273.0702076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.023924534e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001951328318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 367394.8768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.932063975 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.640767143e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [wavelength_tof/wavelength_tof.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.59977047e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.917864073e-10 2.353505085e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 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.36158893 6488.924039 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9217629.732 0.0003433062618 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 300359.6316 0.004521745763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.859743913e-06 3838847.908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.10517002e-07 5624739.345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10181512.42 7971741.409 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 663663.7257 12648633.42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5429430.971 180464.5805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16830617.16 393112.0965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1780852.867 11257978.91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009995896651 771193.8554 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 724282.7457 6935565.614 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 657836.5718 31496.09267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1066418.076 1207558.432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 61280.22447 1196362.759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31564654.27 1733297.106 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4752783.164 4.731432786e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007940363234 6790005.262 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.666365308e-29 211545.1885 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72916.43275 2506667.813 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 156055.6142 1496875.118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1493011.834 1802196.472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12264380 8806.090805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000418898407 1267518.94 3.148311546e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.611079465e-13 2457116.872 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01108496653 5016298.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6539397.339 8915737.724 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31979944.43 558.1041152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 825946.2118 12229780.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19104984.31 1362452.664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2201142.214 51.72119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19727778.63 3.55978398 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.253446753 61165.48587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 131.5385471 2938411.224 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6051155.25 7787.793207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14479007.42 424391.5853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81065.64698 15775744.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3060031.009 1.469601703e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24220282.55 17466.40529 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57.21318378 15462703.29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8744.546353 369593.3656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36732.03404 13194934.25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13632765.23 16002432.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 234625.3001 2.884571612 0 0 0 311794.7368 3.373660275e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6422.016614 0 0 0 0 3.082990565e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44.03531791 0 0 0 0 0.7292507462 1.581579442e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16473471.49 42033314.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 775.3418026 10468250.54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184954.8678 0 0 0 0 14759092.02 47446299.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 661.6451205 204977.6001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20051494.65 6706614.597 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26300312.69 3001.847243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.923698343e-06 6578389.482 5744644.435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60974.30097 21884854.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2727398.065 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16394354.75 40400093.08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29957109.36 0.00152507654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7011672.961 23575309.68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3811613.271 28282863.93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13658221.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11576965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.890564816 19679492.48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6508802.133 18506686.48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1968138.226 4815659.93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24089789.26 1901836.316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4297665.103 154.7881358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23416022.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25966643.53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74732.26188 3864626.723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15971089.36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17177701.27 5094313.592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22217935.87 46012717.16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4387255.412 89.78666928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3392.182795 3843257.85 7497186.905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34806724.79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004917277432 16827384.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18730814.13 69.20110962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5048983.436 33523178.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3845403.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26773541.97 0.2413921458 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20937320.9 6717029.841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 801438.2869 15073673.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5440690.229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51937747.7 41333041.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02840119356 3612920.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24015212.67 176.3678076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7018210.959 5407316.86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001460950071 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7094078.617 0 0 0 0 6409225.886 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42219941.18 0 0 0 14500382.26 844.4054032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.830550049e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3604329.257 30.87299856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13009880.23 34019887.98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7604838.302 10557268.8 352280.4288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24505.87227 404374308.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82077581.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 162337.0833 3271357.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 680749.4242 19848617.38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3482839.425 115.8403685 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12376466.72 60.06544893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10977.99319 37920917.22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4070168.428 2851861.605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.6813979561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.07606945 69489.45523 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63348.26052 204337.4197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82037.76431 1.159613728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.045137969 3387137.339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.933542272e-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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2183231.166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12120015.76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3337350.257 181.3410214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8158325.924 25778349.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9577.370457 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5271750.021 8.648200915e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2897.984738 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21.44442634 40712908.44 3.246429352e-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 3827883.921 16965827.42 1.251031056e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25181.38507 128800.5279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.701347635e-12 3.483811056e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36140722.02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40243523.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.102418668e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15503684.73 7341189.989 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29336516.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.249946232e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.296423653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.937366419e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30333175.21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22705832.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007448913216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6214540.147 0 0 0 5796952.701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6204.629844 0 0 0 0 2.068820556e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002778238833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42682453.84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5733.818709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32827802.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18915.61156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20085495.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182.3155473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16353543.53 9447973.546 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.921277633e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.141402772e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25343353.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17462.57196 3.697412968e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5420578.397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7873640.376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2088313.757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16826348.95 36.59376351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38454.7214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11147370.11 27730890.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15305252.97 8441150.635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 898404.1978 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9408856.86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8839331.47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 761644.3927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.449260221e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.830904378e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.297038911e-21 0.3429299833 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02348743447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14180156.68 0 0 0 4.096540695e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.537732353e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35817.64625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1068.666407 43.42805908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16103.09229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32469.18429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8082.037027 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008309353634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 159.2530393 4250423.85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.21201982 0 7.684918775e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.881443608e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 125.2783254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.08823645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.140274313e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2649464.196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.273514114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 273.0702076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.023924534e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001951328318 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 367394.8768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.809165206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.640767143e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [wavelength_tof/wavelength_tof.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 44 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 1 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 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 25 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 4 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 1 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 5 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 7 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 3 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 9 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 16 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 3 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 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 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 1 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 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 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 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 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 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 1 7 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 3 5 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 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 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 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 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/ODIN_MCPL_baseline.c b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/ODIN_MCPL_baseline.c new file mode 100644 index 0000000000..449f459302 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/ODIN_MCPL_baseline.c @@ -0,0 +1,36869 @@ +/* Automatically generated file. Do not edit. + * Format: ANSI C source code + * Creator: McStas + * Instrument: ODIN_MCPL_baseline.instr (ODIN_MCPL_baseline) + * Date: Sun Mar 1 17:28:38 2026 + * File: ./ODIN_MCPL_baseline.c + * CFLAGS= @MCPLFLAGS@ + */ + +#ifndef WIN32 +# ifndef OPENACC +# define _GNU_SOURCE +# endif +# define _POSIX_C_SOURCE 200809L +#endif +/* In case of cl.exe on Windows, supppress warnings about #pragma acc */ +#ifdef _MSC_EXTENSIONS +#pragma warning(disable: 4068) +#endif + +#define MCCODE_STRING " 3.99.99, git" +#define FLAVOR "mcstas" +#define FLAVOR_UPPER "MCSTAS" + +#define MC_USE_DEFAULT_MAIN +#define MC_TRACE_ENABLED + +#include +#include + +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#define MCCODE_BASE_TYPES + +/* available random number generators */ +#define _RNG_ALG_MT 1 +#define _RNG_ALG_KISS 2 +/* selection of random number generator */ +#ifndef RNG_ALG +# define RNG_ALG _RNG_ALG_KISS +#endif +#if RNG_ALG == _RNG_ALG_MT // MT +#define randstate_t uint32_t +#elif RNG_ALG == _RNG_ALG_KISS // KISS +#define randstate_t uint64_t +#endif + +#ifndef MC_NUSERVAR +#define MC_NUSERVAR 10 +#endif + +/* Particle JUMP control logic */ +struct particle_logic_struct { +int dummy; +}; + +struct _struct_particle { + double x,y,z; /* position [m] */ + double vx,vy,vz; /* velocity [m/s] */ + double sx,sy,sz; /* spin [0-1] */ + int mcgravitation; /* gravity-state */ + void *mcMagnet; /* precession-state */ + int allow_backprop; /* allow backprop */ + /* Generic Temporaries: */ + /* May be used internally by components e.g. for special */ + /* return-values from functions used in trace, thusreturned via */ + /* particle struct. (Example: Wolter Conics from McStas, silicon slabs.) */ + double _mctmp_a; /* temp a */ + double _mctmp_b; /* temp b */ + double _mctmp_c; /* temp c */ + randstate_t randstate[7]; + double t, p; /* time, event weight */ + #ifdef TOF_TRAIN + int N_trains; /* initialised like e.g. ncount, seed from cmdline */ + double *t_offset; + double *p_trains; + int *alive_trains; + double p_last_time_manipulation; + #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains) + #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains) + #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains) + int Ntof_init; /* 0/1 - set to 1 once "times are filled in" */ + #endif /* TOF_TRAIN */ + long long _uid; /* Unique event ID */ + long _index; /* component index where to send this event */ + long _absorbed; /* flag set to TRUE when this event is to be removed/ignored */ + long _scattered; /* flag set to TRUE when this event has interacted with the last component instance */ + long _restore; /* set to true if neutron event must be restored */ + long flag_nocoordschange; /* set to true if particle is jumping */ + struct particle_logic_struct _logic; +}; +typedef struct _struct_particle _class_particle; + +_class_particle _particle_global_randnbuse_var; +_class_particle* _particle = &_particle_global_randnbuse_var; + +#pragma acc routine +_class_particle mcgenstate(void); +#pragma acc routine +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF); +#pragma acc routine +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p); + +extern int mcgravitation; /* flag to enable gravitation */ +#pragma acc declare create ( mcgravitation ) + +extern int NTOF; /* TOF_train suppport */ +#pragma acc declare create ( NTOF ) + +_class_particle mcgenstate(void) { + _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0, NTOF); + return(particle); +} +/*Generated user variable handlers:*/ + +#pragma acc routine +double particle_getvar(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +double particle_getvar(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + double rval=0; + if(!str_comp("x",name)){rval=p->x;s=0;} + if(!str_comp("y",name)){rval=p->y;s=0;} + if(!str_comp("z",name)){rval=p->z;s=0;} + if(!str_comp("vx",name)){rval=p->vx;s=0;} + if(!str_comp("vy",name)){rval=p->vy;s=0;} + if(!str_comp("vz",name)){rval=p->vz;s=0;} + if(!str_comp("sx",name)){rval=p->sx;s=0;} + if(!str_comp("sy",name)){rval=p->sy;s=0;} + if(!str_comp("sz",name)){rval=p->sz;s=0;} + if(!str_comp("t",name)){rval=p->t;s=0;} + if(!str_comp("p",name)){rval=p->p;s=0;} + if(!str_comp("_mctmp_a",name)){rval=p->_mctmp_a;s=0;} + if(!str_comp("_mctmp_b",name)){rval=p->_mctmp_b;s=0;} + if(!str_comp("_mctmp_c",name)){rval=p->_mctmp_c;s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void* particle_getvar_void(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +void* particle_getvar_void(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + void* rval=0; + if(!str_comp("x",name)) {rval=(void*)&(p->x); s=0;} + if(!str_comp("y",name)) {rval=(void*)&(p->y); s=0;} + if(!str_comp("z",name)) {rval=(void*)&(p->z); s=0;} + if(!str_comp("vx",name)){rval=(void*)&(p->vx);s=0;} + if(!str_comp("vy",name)){rval=(void*)&(p->vy);s=0;} + if(!str_comp("vz",name)){rval=(void*)&(p->vz);s=0;} + if(!str_comp("sx",name)){rval=(void*)&(p->sx);s=0;} + if(!str_comp("sy",name)){rval=(void*)&(p->sy);s=0;} + if(!str_comp("sz",name)){rval=(void*)&(p->sz);s=0;} + if(!str_comp("t",name)) {rval=(void*)&(p->t); s=0;} + if(!str_comp("p",name)) {rval=(void*)&(p->p); s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +int particle_setvar_void(_class_particle *, char *, void*); + +int particle_setvar_void(_class_particle *p, char *name, void* value){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + if(!str_comp("x",name)) {memcpy(&(p->x), value, sizeof(double)); rval=0;} + if(!str_comp("y",name)) {memcpy(&(p->y), value, sizeof(double)); rval=0;} + if(!str_comp("z",name)) {memcpy(&(p->z), value, sizeof(double)); rval=0;} + if(!str_comp("vx",name)){memcpy(&(p->vx), value, sizeof(double)); rval=0;} + if(!str_comp("vy",name)){memcpy(&(p->vy), value, sizeof(double)); rval=0;} + if(!str_comp("vz",name)){memcpy(&(p->vz), value, sizeof(double)); rval=0;} + if(!str_comp("sx",name)){memcpy(&(p->sx), value, sizeof(double)); rval=0;} + if(!str_comp("sy",name)){memcpy(&(p->sy), value, sizeof(double)); rval=0;} + if(!str_comp("sz",name)){memcpy(&(p->sz), value, sizeof(double)); rval=0;} + if(!str_comp("p",name)) {memcpy(&(p->p), value, sizeof(double)); rval=0;} + if(!str_comp("t",name)) {memcpy(&(p->t), value, sizeof(double)); rval=0;} + return rval; +} + +#pragma acc routine +int particle_setvar_void_array(_class_particle *, char *, void*, int); + +int particle_setvar_void_array(_class_particle *p, char *name, void* value, int elements){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + return rval; +} + +#pragma acc routine +void particle_restore(_class_particle *p, _class_particle *p0); + +void particle_restore(_class_particle *p, _class_particle *p0) { + p->x = p0->x; p->y = p0->y; p->z = p0->z; + p->vx = p0->vx; p->vy = p0->vy; p->vz = p0->vz; + p->sx = p0->sx; p->sy = p0->sy; p->sz = p0->sz; + p->t = p0->t; p->p = p0->p; + p->_absorbed=0; p->_restore=0; +} + +#pragma acc routine +double particle_getuservar_byid(_class_particle *p, int id, int *suc){ + int s=1; + double rval=0; + switch(id){ + } + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void particle_uservar_init(_class_particle *p){ +} + +#define MC_EMBEDDED_RUNTIME +/* embedding file "mccode-r.h" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: mcstas 3.99.99 +* Version: $Revision$ +* +* Runtime system header for McStas/McXtrace. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int numipar; +* metadata_table_t metadata_table[]; +* int num_metadata; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM mcAbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas/McXtrace version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCCODE_R_H +#define MCCODE_R_H "$Revision$" + +#include +#include +#include +#include +#include +#include +#include +#ifndef _MSC_EXTENSIONS +#include +#endif +#include +#include +#include +#ifdef OPENACC +#include +#ifndef GCCOFFLOAD +#include +#else +#include +#endif +#pragma acc routine +int noprintf(); +#pragma acc routine +size_t str_len(const char *s); +#else +#include +#endif + +/* In case of gcc / clang, ensure to use + the built-in isnan/isinf functions */ +#if defined(__GNUC__) || defined(__clang__) +# ifdef isnan +# undef isnan +# endif +# ifdef isinf +# undef isinf +# endif +# define isnan(x) __builtin_isnan(x) +# define isinf(x) __builtin_isinf(x) +#endif + +#ifdef _MSC_EXTENSIONS +#ifndef _TIMES_H +#define _TIMES_H + +#if defined(WIN32) || defined(_WIN32) +#include +#include +#include + +int gettimeofday(struct timeval* t,void* timezone); + +#define __need_clock_t +#include + + +/* Structure describing CPU time used by a process and its children. */ +struct tms + { + clock_t tms_utime; /* User CPU time. */ + clock_t tms_stime; /* System CPU time. */ + + clock_t tms_cutime; /* User CPU time of dead children. */ + clock_t tms_cstime; /* System CPU time of dead children. */ + }; + +/* Store the CPU time used by this process and all its + dead children (and their dead children) in BUFFER. + Return the elapsed real time, or (clock_t) -1 for errors. + All times are in CLK_TCKths of a second. */ +clock_t times (struct tms *__buffer); + +typedef long long suseconds_t ; + + + +int gettimeofday(struct timeval* t,void* timezone) +{ struct _timeb timebuffer; + _ftime( &timebuffer ); + t->tv_sec=timebuffer.time; + t->tv_usec=1000*timebuffer.millitm; + return 0; +} + +clock_t times (struct tms *__buffer) { + + __buffer->tms_utime = clock(); + __buffer->tms_stime = 0; + __buffer->tms_cstime = 0; + __buffer->tms_cutime = 0; + return __buffer->tms_utime; +} + + +#endif +#endif +#endif + +/* If the runtime is embedded in the simulation program, some definitions can + be made static. */ + +#ifdef MC_EMBEDDED_RUNTIME +# define mcstatic +#else +# define mcstatic +#endif + +#ifdef __dest_os +# if (__dest_os == __mac_os) +# define MAC +# endif +#endif + +#ifdef __FreeBSD__ +# define NEED_STAT_H +#endif + +#if defined(__APPLE__) && defined(__GNUC__) +# define NEED_STAT_H +#endif + +#if defined(WIN32) || defined(_WIN32) +# define NEED_STAT_H +# define NEED_TYPES_H +#endif + +#ifdef NEED_STAT_H +# include +#endif + +#ifdef NEED_TYPES_H +# include +#endif + +#ifndef MC_PATHSEP_C +#if defined(WIN32) || defined(_WIN32) +# define MC_PATHSEP_C '\\' +# define MC_PATHSEP_S "\\" +# else /* !WIN32 */ +# define MC_PATHSEP_C '/' +# define MC_PATHSEP_S "/" +# endif /* !WIN32 */ +#endif /* MC_PATHSEP_C */ + +#if defined(WIN32) || defined(_WIN32) +#if defined _MSC_VER +#include +#elif defined __GNUC__ +#include +#include +#include +#endif +#define mkdir(a,b) mkdir(a) +#define getpid() _getpid() +#endif + +/* the version string is replaced when building distribution with mkdist */ +#ifndef MCCODE_STRING +# define MCCODE_STRING " 3.99.99, git" +#endif + +#ifndef MCCODE_DATE +# define MCCODE_DATE "git" +#endif + +#ifndef MCCODE_VERSION +# define MCCODE_VERSION "3.99.99" +#endif + +#ifndef __MCCODE_VERSION__ +#define __MCCODE_VERSION__ 399099L +#endif + +#ifndef MCCODE_NAME +# define MCCODE_NAME "mcstas" +#endif + +#ifndef MCCODE_PARTICLE +# define MCCODE_PARTICLE "neutron" +#endif + +#ifndef MCCODE_PARTICLE_CODE +# define MCCODE_PARTICLE_CODE 2112 +#endif + +#ifndef MCCODE_LIBENV +# define MCCODE_LIBENV "MCSTAS" +#endif + +#ifndef FLAVOR_UPPER +# define FLAVOR_UPPER MCCODE_NAME +#endif + +#ifdef MC_PORTABLE +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef MAC +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#if (USE_MPI == 0) +# undef USE_MPI +#endif + +#ifdef USE_MPI /* default is to disable signals with MPI, as MPICH uses them to communicate */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef OPENACC /* default is to disable signals with PGI/OpenACC */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifndef OPENACC +# ifndef USE_OFF /* default is to enable OFF when not using PGI/OpenACC */ +# define USE_OFF +# endif +# ifndef CPUFUNNEL /* allow to enable FUNNEL-mode on CPU */ +# ifdef FUNNEL /* by default disable FUNNEL-mode when not using PGI/OpenACC */ +# undef FUNNEL +# endif +# endif +#endif + +#if (NOSIGNALS == 0) +# undef NOSIGNALS +#endif + +/** Header information for metadata-r.c ----------------------------------------------------------------------------- */ +struct metadata_table_struct { /* stores metadata strings from components */ + char * source; // component name which provided the metadata + char * name; // the name of the metadata + char * type; // the MIME type of the metadata (free form, valid identifier) + char * value; // the metadata string contents +}; +typedef struct metadata_table_struct metadata_table_t; +char * metadata_table_key_component(char* key); +char * metadata_table_key_literal(char * key); +int metadata_table_defined(int, metadata_table_t *, char *); +char * metadata_table_name(int, metadata_table_t *, char *); +char * metadata_table_type(int, metadata_table_t *, char *); +char * metadata_table_literal(int, metadata_table_t *, char *); +void metadata_table_print_all_keys(int no, metadata_table_t * tab); +int metadata_table_print_all_components(int no, metadata_table_t * tab); +int metadata_table_print_component_keys(int no, metadata_table_t * tab, char * key); +/* -------------------------------------------------------------------------- Header information for metadata-r.c --- */ + +/* Note: the enum instr_formal_types definition MUST be kept + synchronized with the one in mccode.h and with the + instr_formal_type_names array in cogen.c. */ +enum instr_formal_types + { + instr_type_int, + instr_type_string, instr_type_char, + instr_type_vector, instr_type_double + }; +struct mcinputtable_struct { /* defines instrument parameters */ + char *name; /* name of parameter */ + void *par; /* pointer to instrument parameter (variable) */ + enum instr_formal_types type; + char *val; /* default value */ + char *unit; /* expected unit for parameter; informational only */ +}; + + +#ifndef MCCODE_BASE_TYPES +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#endif + +/* the following variables are defined in the McStas generated C code + but should be defined externally in case of independent library usage */ +#ifndef DANSE +extern struct mcinputtable_struct mcinputtable[]; /* list of instrument parameters */ +extern int numipar; /* number of instrument parameters */ +extern metadata_table_t metadata_table[]; /* list of component-defined string metadata */ +extern int num_metadata; /* number of component-defined string metadata */ +extern char instrument_name[], instrument_source[]; /* instrument name and filename */ +extern char *instrument_exe; /* executable path = argv[0] or NULL */ +extern char instrument_code[]; /* contains the initial 'instr' file */ + +#ifndef MC_ANCIENT_COMPATIBILITY +extern int traceenabled, defaultmain; +#endif +#endif + + +/* Useful macros ============================================================ */ + + +/* SECTION: Dynamic Arrays */ +typedef int* IArray1d; +IArray1d create_iarr1d(int n); +void destroy_iarr1d(IArray1d a); + +typedef int** IArray2d; +IArray2d create_iarr2d(int nx, int ny); +void destroy_iarr2d(IArray2d a); + +typedef int*** IArray3d; +IArray3d create_iarr3d(int nx, int ny, int nz); +void destroy_iarr3d(IArray3d a); + +typedef double* DArray1d; +DArray1d create_darr1d(int n); +void destroy_darr1d(DArray1d a); + +typedef double** DArray2d; +DArray2d create_darr2d(int nx, int ny); +void destroy_darr2d(DArray2d a); + +typedef double*** DArray3d; +DArray3d create_darr3d(int nx, int ny, int nz); +void destroy_darr3d(DArray3d a); + + +/* MPI stuff */ +#ifdef USE_MPI +#include "mpi.h" + +#ifdef OMPI_MPI_H /* openmpi does not use signals: we may install our sighandler */ +#ifndef OPENACC /* ... but only if we are not also running on GPU */ +#undef NOSIGNALS +#endif +#endif + +/* + * MPI_MASTER(i): + * execution of i only on master node + */ +#define MPI_MASTER(statement) { \ + if(mpi_node_rank == mpi_node_root)\ + { statement; } \ +} + +#ifndef MPI_REDUCE_BLOCKSIZE +#define MPI_REDUCE_BLOCKSIZE 100000 +#endif + +int mc_MPI_Sum(double* buf, long count); +int mc_MPI_Send(void *sbuf, long count, MPI_Datatype dtype, int dest); +int mc_MPI_Recv(void *rbuf, long count, MPI_Datatype dtype, int source); + +/* MPI_Finalize exits gracefully and should be preferred to MPI_Abort */ +#define exit(code) do { \ + MPI_Finalize(); \ + exit(code); \ + } while(0) + +#else /* !USE_MPI */ +#define MPI_MASTER(instr) instr +#endif /* USE_MPI */ + + +#ifdef USE_MPI +static int mpi_node_count; +#endif + +#ifdef USE_THREADS /* user want threads */ +#error Threading (USE_THREADS) support has been removed for very poor efficiency. Use MPI/SSH grid instead. +#endif + + +void mcset_ncount(unsigned long long count); /* wrapper to get mcncount */ +#pragma acc routine +unsigned long long int mcget_ncount(void); /* wrapper to set mcncount */ +unsigned long long mcget_run_num(void); /* wrapper to get mcrun_num=0:mcncount-1 */ + +/* Following part is only embedded when not redundant with mccode.h ========= */ + +#ifndef MCCODE_H + +#ifndef NOSIGNALS +#include +char *mcsig_message; +#define SIG_MESSAGE(msg) mcsig_message=(char *)(msg); +#else +#define SIG_MESSAGE(...) +#endif /* !NOSIGNALS */ + + +/* Useful macros and constants ============================================== */ + + +#ifndef FLT_MAX +#define FLT_MAX 3.40282347E+38F /* max decimal value of a "float" */ +#endif + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef SQR +#define SQR(x) ( (x) * (x) ) +#endif +#ifndef SIGN +#define SIGN(x) (((x)>0.0)?(1):(-1)) +#endif + + +# ifndef M_E +# define M_E 2.71828182845904523536 // e +# endif +# ifndef M_LOG2E +# define M_LOG2E 1.44269504088896340736 // log2(e) +# endif +# ifndef M_LOG10E +# define M_LOG10E 0.434294481903251827651 // log10(e) +# endif +# ifndef M_LN2 +# define M_LN2 0.693147180559945309417 // ln(2) +# endif +# ifndef M_LN10 +# define M_LN10 2.30258509299404568402 // ln(10) +# endif +# ifndef M_PI +# define M_PI 3.14159265358979323846 // pi +# endif +# ifndef PI +# define PI M_PI // pi - also used in some places +# endif +# ifndef M_PI_2 +# define M_PI_2 1.57079632679489661923 // pi/2 +# endif +# ifndef M_PI_4 +# define M_PI_4 0.785398163397448309616 // pi/4 +# endif +# ifndef M_1_PI +# define M_1_PI 0.318309886183790671538 // 1/pi +# endif +# ifndef M_2_PI +# define M_2_PI 0.636619772367581343076 // 2/pi +# endif +# ifndef M_2_SQRTPI +# define M_2_SQRTPI 1.12837916709551257390 // 2/sqrt(pi) +# endif +# ifndef M_SQRT2 +# define M_SQRT2 1.41421356237309504880 // sqrt(2) +# endif +# ifndef M_SQRT1_2 +# define M_SQRT1_2 0.707106781186547524401 // 1/sqrt(2) +# endif + +#define RAD2MIN ((180*60)/PI) +#define MIN2RAD (PI/(180*60)) +#define DEG2RAD (PI/180) +#define RAD2DEG (180/PI) +#define FWHM2RMS 0.424660900144 /* Convert between full-width-half-max and */ +#define RMS2FWHM 2.35482004503 /* root-mean-square (standard deviation) */ +#define HBAR 1.05457168e-34 /* [Js] h bar Planck constant CODATA 2002 */ +#define MNEUTRON 1.67492728e-27 /* [kg] mass of neutron CODATA 2002 */ +#define GRAVITY 9.81 /* [m/s^2] gravitational acceleration */ +#define NA 6.02214179e23 /* [#atoms/g .mole] Avogadro's number*/ + + +#define UNSET nan("0x6E6F74736574") +int nans_match(double, double); +int is_unset(double); +int is_valid(double); +int is_set(double); +int all_unset(int n, ...); +int all_set(int n, ...); +int any_unset(int n, ...); +int any_set(int n, ...); + + +/* wrapper to get absolute and relative position of comp */ +/* mccomp_posa and mccomp_posr are defined in McStas generated C code */ +#define POS_A_COMP_INDEX(index) (instrument->_position_absolute[index]) +#define POS_R_COMP_INDEX(index) (instrument->_position_relative[index]) + +/* setting parameters based COMP_GETPAR (returned as pointer) */ +/* compname must be given as a string, type and par are symbols. */ +#define COMP_GETPAR3(type, compname, par) \ + &( ((_class_ ## type ##_parameters *) _getvar_parameters(compname))->par ) +/* the body of this function depends on component instances, and is cogen'd */ +void* _getvar_parameters(char* compname); + +int _getcomp_index(char* compname); + +/* Note: The two-stage approach to COMP_GETPAR is NOT redundant; without it, +* after #define C sample, COMP_GETPAR(C,x) would refer to component C, not to +* component sample. Such are the joys of ANSI C. + +* Anyway the usage of COMP_GETPAR requires that we use sometimes bare names... +* NOTE: This can ONLY be used in instrument descriptions, not components. +*/ +#define COMP_GETPAR2(comp, par) (_ ## comp ## _var._parameters.par) +#define COMP_GETPAR(comp, par) COMP_GETPAR2(comp,par) + +#define INSTRUMENT_GETPAR(par) (_instrument_var._parameters.par) + +/* Current component name, index, position and orientation */ +/* These macros work because, using class-based functions, "comp" is usually +* the local variable of the active/current component. */ +#define INDEX_CURRENT_COMP (_comp->_index) +#define NAME_CURRENT_COMP (_comp->_name) +#define TYPE_CURRENT_COMP (_comp->_type) +#define POS_A_CURRENT_COMP (_comp->_position_absolute) +#define POS_R_CURRENT_COMP (_comp->_position_relative) +#define ROT_A_CURRENT_COMP (_comp->_rotation_absolute) +#define ROT_R_CURRENT_COMP (_comp->_rotation_relative) + +#define NAME_INSTRUMENT (instrument->_name) + + +/* MCDISPLAY/trace and debugging message sent to stdout */ +#ifdef MC_TRACE_ENABLED +#define DEBUG +#endif + +#ifdef DEBUG +#define DEBUG_INSTR() if(!mcdotrace); else { printf("INSTRUMENT:\n"); printf("Instrument '%s' (%s)\n", instrument_name, instrument_source); } +#define DEBUG_COMPONENT(name,c,t) if(!mcdotrace); else {\ + printf("COMPONENT: \"%s\"\n" \ + "POS: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + name, c.x, c.y, c.z, t[0][0], t[0][1], t[0][2], \ + t[1][0], t[1][1], t[1][2], t[2][0], t[2][1], t[2][2]); \ + printf("Component %30s AT (%g,%g,%g)\n", name, c.x, c.y, c.z); } +#define DEBUG_INSTR_END() if(!mcdotrace); else printf("INSTRUMENT END:\n"); +#define DEBUG_ENTER() if(!mcdotrace); else printf("ENTER:\n"); +#define DEBUG_COMP(c) if(!mcdotrace); else printf("COMP: \"%s\"\n", c); +#define DEBUG_LEAVE() if(!mcdotrace); else printf("LEAVE:\n"); +#define DEBUG_ABSORB() if(!mcdotrace); else printf("ABSORB:\n"); +#else +#define DEBUG_INSTR() +#define DEBUG_COMPONENT(name,c,t) +#define DEBUG_INSTR_END() +#define DEBUG_ENTER() +#define DEBUG_COMP(c) +#define DEBUG_LEAVE() +#define DEBUG_ABSORB() +#endif + +// mcDEBUG_STATE and mcDEBUG_SCATTER are defined by mcstas-r.h and mcxtrace-r.h + + + +#ifdef TEST +#define test_printf printf +#else +#define test_printf while(0) printf +#endif + +/* send MCDISPLAY message to stdout to show gemoetry */ +void mcdis_magnify(char *what); +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2); +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n); +void mcdis_multiline(int count, ...); +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height); +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz); +void mcdis_circle(char *plane, double x, double y, double z, double r); +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz); +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz); +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz); +void mcdis_sphere(double x, double y, double z, double r); + + +/* random number generation. ================================================ */ + +#if RNG_ALG == _RNG_ALG_MT // MT (currently not functional for GPU) +# define MC_RAND_MAX ((uint32_t)0xffffffffUL) +# define RANDSTATE_LEN 1 +# define srandom(seed) mt_srandom_empty() +# define random() mt_random() +# define _random() mt_random() +#elif RNG_ALG == _RNG_ALG_KISS // KISS +# ifndef UINT64_MAX +# define UINT64_MAX ((uint64_t)0xffffffffffffffffULL) +# endif +# define MC_RAND_MAX UINT64_MAX +# define RANDSTATE_LEN 7 +# define srandom(seed) kiss_srandom(_particle->randstate, seed) +# define random() kiss_random(_particle->randstate) +# define _random() kiss_random(state) +#endif + +#pragma acc routine +double _randnorm2(randstate_t* state); + +// Component writer interface +#define randnorm() _randnorm2(_particle->randstate) // NOTE: can't use _randnorm on GPU +#define rand01() _rand01(_particle->randstate) +#define randpm1() _randpm1(_particle->randstate) +#define rand0max(p1) _rand0max(p1, _particle->randstate) +#define randminmax(p1, p2) _randminmax(p1, p2, _particle->randstate) +#define randtriangle() _randtriangle(_particle->randstate) + +// Mersenne Twister rng +uint32_t mt_random(void); +void mt_srandom (uint32_t x); +void mt_srandom_empty(); + +// KISS rng +#pragma acc routine +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed); +#pragma acc routine +uint64_t kiss_random(uint64_t state[7]); + +// Scrambler / hash function +#pragma acc routine seq +randstate_t _hash(randstate_t x); + +// internal RNG (transforms) interface +#pragma acc routine +double _rand01(randstate_t* state); +#pragma acc routine +double _randpm1(randstate_t* state); +#pragma acc routine +double _rand0max(double max, randstate_t* state); +#pragma acc routine +double _randminmax(double min, double max, randstate_t* state); +#pragma acc routine +double _randtriangle(randstate_t* state); + + +#ifdef USE_OPENCL +#include "opencl-lib.h" +#include "opencl-lib.c" +#endif + +#ifndef DANSE +int init(void); +int raytrace(_class_particle*); +int save(FILE *); +int finally(void); +int display(void); +#endif + + +/* GPU related algorithms =================================================== */ + +/* +* Divide-and-conquer strategy for parallel sort absorbed last. +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier); +#endif +long sort_absorb_last_serial(_class_particle* particles, long len); + + +/* simple vector algebra ==================================================== */ + + +#define vec_prod(x, y, z, x1, y1, z1, x2, y2, z2) \ + vec_prod_func(&x, &y, &z, x1, y1, z1, x2, y2, z2) +#pragma acc routine seq +mcstatic void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic double scalar_prod( + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic void norm_func(double *x, double *y, double *z); +#define NORM(x,y,z) norm_func(&x, &y, &z) + +#pragma acc routine seq +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z); + +/** + * Rotate the vector vx,vy,vz psi radians around the vector ax,ay,az + * and put the result in x,y,z. + */ +#define rotate(x, y, z, vx, vy, vz, phi, ax, ay, az) \ + do { \ + double mcrt_tmpx = (ax), mcrt_tmpy = (ay), mcrt_tmpz = (az); \ + double mcrt_vp, mcrt_vpx, mcrt_vpy, mcrt_vpz; \ + double mcrt_vnx, mcrt_vny, mcrt_vnz, mcrt_vn1x, mcrt_vn1y, mcrt_vn1z; \ + double mcrt_bx, mcrt_by, mcrt_bz; \ + double mcrt_cos, mcrt_sin; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vp = scalar_prod((vx), (vy), (vz), mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vpx = mcrt_vp*mcrt_tmpx; \ + mcrt_vpy = mcrt_vp*mcrt_tmpy; \ + mcrt_vpz = mcrt_vp*mcrt_tmpz; \ + mcrt_vnx = (vx) - mcrt_vpx; \ + mcrt_vny = (vy) - mcrt_vpy; \ + mcrt_vnz = (vz) - mcrt_vpz; \ + vec_prod(mcrt_bx, mcrt_by, mcrt_bz, \ + mcrt_tmpx, mcrt_tmpy, mcrt_tmpz, mcrt_vnx, mcrt_vny, mcrt_vnz); \ + mcrt_cos = cos((phi)); mcrt_sin = sin((phi)); \ + mcrt_vn1x = mcrt_vnx*mcrt_cos + mcrt_bx*mcrt_sin; \ + mcrt_vn1y = mcrt_vny*mcrt_cos + mcrt_by*mcrt_sin; \ + mcrt_vn1z = mcrt_vnz*mcrt_cos + mcrt_bz*mcrt_sin; \ + (x) = mcrt_vpx + mcrt_vn1x; \ + (y) = mcrt_vpy + mcrt_vn1y; \ + (z) = mcrt_vpz + mcrt_vn1z; \ + } while(0) + +/** + * Mirror (xyz) in the plane given by the point (rx,ry,rz) and normal (nx,ny,nz) + * + * TODO: This define is seemingly never used... + */ +#define mirror(x,y,z,rx,ry,rz,nx,ny,nz) \ + do { \ + double mcrt_tmpx= (nx), mcrt_tmpy = (ny), mcrt_tmpz = (nz); \ + double mcrt_tmpt; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_tmpt=scalar_prod((rx),(ry),(rz),mcrt_tmpx,mcrt_tmpy,mcrt_tmpz); \ + (x) = rx -2 * mcrt_tmpt*mcrt_rmpx; \ + (y) = ry -2 * mcrt_tmpt*mcrt_rmpy; \ + (z) = rz -2 * mcrt_tmpt*mcrt_rmpz; \ + } while (0) + +#pragma acc routine +Coords coords_set(MCNUM x, MCNUM y, MCNUM z); +#pragma acc routine +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z); +#pragma acc routine +Coords coords_add(Coords a, Coords b); +#pragma acc routine +Coords coords_sub(Coords a, Coords b); +#pragma acc routine +Coords coords_neg(Coords a); +#pragma acc routine +Coords coords_scale(Coords b, double scale); +#pragma acc routine +double coords_sp(Coords a, Coords b); +#pragma acc routine +Coords coords_xp(Coords b, Coords c); +#pragma acc routine +double coords_len(Coords a); +#pragma acc routine seq +void coords_print(Coords a); +#pragma acc routine seq +mcstatic void coords_norm(Coords* c); + +#pragma acc routine seq +void rot_set_rotation(Rotation t, double phx, double phy, double phz); +#pragma acc routine seq +int rot_test_identity(Rotation t); +#pragma acc routine seq +void rot_mul(Rotation t1, Rotation t2, Rotation t3); +#pragma acc routine seq +void rot_copy(Rotation dest, Rotation src); +#pragma acc routine seq +void rot_transpose(Rotation src, Rotation dst); +#pragma acc routine seq +Coords rot_apply(Rotation t, Coords a); + +#pragma acc routine seq +void mccoordschange(Coords a, Rotation t, _class_particle *particle); +#pragma acc routine seq +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz); + +double mcestimate_error(double N, double p1, double p2); +void mcreadparams(void); + +/* this is now in mcstas-r.h and mcxtrace-r.h as the number of state parameters +is no longer equal */ + +_class_particle mcgenstate(void); + +// trajectory/shape intersection routines +#pragma acc routine seq +int inside_rectangle(double, double, double, double); +#pragma acc routine seq +int box_intersect(double *dt_in, double *dt_out, double x, double y, double z, + double vx, double vy, double vz, double dx, double dy, double dz); +#pragma acc routine seq +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h); +#pragma acc routine seq +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r); +// second order equation roots +#pragma acc routine seq +int solve_2nd_order(double *t1, double *t2, + double A, double B, double C); + +// random vector generation to shape +// defines silently introducing _particle as the last argument +#define randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius) \ + _randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius, _particle) +#define randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A) \ + _randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, _particle) +#define randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order) \ + _randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order, _particle) +// defines forwarding to "inner" functions +#define randvec_target_sphere randvec_target_circle +#define randvec_target_rect(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9) \ + randvec_target_rect_real(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,0,0,0,1) +// headers for randvec +#pragma acc routine seq +void _randvec_target_circle(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double radius, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_angular(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double height, + double width, Rotation A, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, double height, double width, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle); + + +// this is the main() +int mccode_main(int argc, char *argv[]); + + +#endif /* !MCCODE_H */ + +#ifndef MCCODE_R_IO_H +#define MCCODE_R_IO_H "$Revision$" + +#if (USE_NEXUS == 0) +#undef USE_NEXUS +#endif + +#ifndef CHAR_BUF_LENGTH +#define CHAR_BUF_LENGTH 1024 +#endif + + +/* I/O section part ========================================================= */ + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + + +/* main DETECTOR structure which stores most information to write to data files */ +struct mcdetector_struct { + char filename[CHAR_BUF_LENGTH]; /* file name of monitor */ + double Position[3]; /* position of detector component*/ + char position[CHAR_BUF_LENGTH]; /* position of detector component (string)*/ + Rotation Rotation; /* position of detector component*/ + char options[CHAR_BUF_LENGTH]; /* Monitor_nD style list-mode'options' (string)*/ + char component[CHAR_BUF_LENGTH]; /* component instance name */ + char nexuscomp[CHAR_BUF_LENGTH]; /* component naming in NeXus/HDF case */ + char instrument[CHAR_BUF_LENGTH]; /* instrument name */ + char type[CHAR_BUF_LENGTH]; /* data type, e.g. 0d, 1d, 2d, 3d */ + char user[CHAR_BUF_LENGTH]; /* user name, e.g. HOME */ + char date[CHAR_BUF_LENGTH]; /* date of simulation end/write time */ + char title[CHAR_BUF_LENGTH]; /* title of detector */ + char xlabel[CHAR_BUF_LENGTH]; /* X axis label */ + char ylabel[CHAR_BUF_LENGTH]; /* Y axis label */ + char zlabel[CHAR_BUF_LENGTH]; /* Z axis label */ + char xvar[CHAR_BUF_LENGTH]; /* X variable name */ + char yvar[CHAR_BUF_LENGTH]; /* Y variable name */ + char zvar[CHAR_BUF_LENGTH]; /* Z variable name */ + char ncount[CHAR_BUF_LENGTH]; /* number of events initially generated */ + char limits[CHAR_BUF_LENGTH]; /* X Y Z limits, e.g. [xmin xmax ymin ymax zmin zmax] */ + char variables[CHAR_BUF_LENGTH]; /* variables written into data block */ + char statistics[CHAR_BUF_LENGTH]; /* center, mean and half width along axis */ + char signal[CHAR_BUF_LENGTH]; /* min max and mean of signal (data block) */ + char values[CHAR_BUF_LENGTH]; /* integrated values e.g. [I I_err N] */ + double xmin,xmax; /* min max of axes */ + double ymin,ymax; + double zmin,zmax; + double intensity; /* integrated values for data block */ + double error; + double events; + double min; /* statistics for data block */ + double max; + double mean; + double centerX; /* statistics for axes */ + double halfwidthX; + double centerY; + double halfwidthY; + int rank; /* dimensionaly of monitor, e.g. 0 1 2 3 */ + char istransposed; /* flag to transpose matrix for some formats */ + + long m,n,p; /* dimensions of data block and along axes */ + long date_l; /* same as date, but in sec since 1970 */ + + double *p0, *p1, *p2; /* pointers to saved data, NULL when freed */ + char format[CHAR_BUF_LENGTH]; /* format for file generation */ +}; + +typedef struct mcdetector_struct MCDETECTOR; + +static char *dirname = NULL; /* name of output directory */ +static char *siminfo_name = "mccode"; /* default output sim file name */ +char *mcformat = NULL; /* NULL (default) or a specific format */ + +/* file I/O definitions and function prototypes */ + +#ifndef MC_EMBEDDED_RUNTIME /* the mcstatic variables (from mccode-r.c) */ +extern FILE * siminfo_file; /* handle to the output siminfo file */ +extern int mcgravitation; /* flag to enable gravitation */ +extern int mcdotrace; /* flag to print MCDISPLAY messages */ +#else +mcstatic FILE *siminfo_file = NULL; +#endif + +/* I/O function prototypes ================================================== */ + +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle); + +/* output functions */ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, long n, + double *p0, double *p1, double *p2, char *f, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, long m, + long n, double *p0, double *p1, double *p2, char *f, + char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rot,char* options, int index); + +/* wrappers to output functions, that automatically set NAME and POSITION */ +#define DETECTOR_OUT(p0,p1,p2) mcdetector_out_0D(NAME_CURRENT_COMP,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_0D(t,p0,p1,p2) mcdetector_out_0D(t,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f) \ + mcdetector_out_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f) \ + mcdetector_out_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) + +#ifdef USE_NEXUS +#include "napi.h" +NXhandle nxhandle; +#endif + +#endif /* ndef MCCODE_R_IO_H */ + +#endif /* MCCODE_R_H */ +/* End of file "mccode-r.h". */ + +/* embedding file "mcstas-r.h" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system header for McStas. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int mcnumipar; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM instrument.counter_AbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#define MCSTAS_R_H "$Revision$" + +/* Following part is only embedded when not redundent with mcstas.h */ + +#ifndef MCCODE_H + +#define AA2MS 629.622368 /* Convert k[1/AA] to v[m/s] */ +#define MS2AA 1.58825361e-3 /* Convert v[m/s] to k[1/AA] */ +#define K2V AA2MS +#define V2K MS2AA +#define Q2V AA2MS +#define V2Q MS2AA +#define SE2V 437.393377 /* Convert sqrt(E)[meV] to v[m/s] */ +#define VS2E 5.22703725e-6 /* Convert (v[m/s])**2 to E[meV] */ + +#define SCATTER0 do {DEBUG_SCATTER(); SCATTERED++;} while(0) +#define SCATTER SCATTER0 + +#define JUMPTOCOMP(comp) mcneutron->_index = INDEX_COMP(comp); + +#define MAGNET_ON \ + do { \ + mcMagnet = 1; \ + } while(0) + +#define MAGNET_OFF \ + do { \ + mcMagnet = 0; \ + } while(0) + +#define ALLOW_BACKPROP \ + do { \ + allow_backprop = 1; \ + } while(0) + +#define DISALLOW_BACKPROP \ + do { \ + allow_backprop = 0; \ + } while(0) + +#define PROP_MAGNET(dt) \ + do { \ + } while (0) + /* change coordinates from local system to magnet system */ +/* Rotation rotLM, rotTemp; \ + Coords posLM = coords_sub(POS_A_CURRENT_COMP, mcMagnetPos); \ + rot_transpose(ROT_A_CURRENT_COMP, rotTemp); \ + rot_mul(rotTemp, mcMagnetRot, rotLM); \ + mcMagnetPrecession(x, y, z, t, vx, vy, vz, \ + &sx, &sy, &sz, dt, posLM, rotLM); \ + } while(0) +*/ + +#define mcPROP_DT(dt) \ + do { \ + if (mcMagnet && dt > 0) PROP_MAGNET(dt);\ + x += vx*(dt); \ + y += vy*(dt); \ + z += vz*(dt); \ + t += (dt); \ + if (isnan(p) || isinf(p)) { ABSORB; }\ + } while(0) + +/* ADD: E. Farhi, Aug 6th, 2001 PROP_GRAV_DT propagation with acceleration */ +#define PROP_GRAV_DT(dt, Ax, Ay, Az) \ + do { \ + if(dt < 0 && allow_backprop == 0) { ABSORB; }\ + if (mcMagnet) /*printf("Spin precession gravity\n")*/; \ + x += vx*(dt) + (Ax)*(dt)*(dt)/2; \ + y += vy*(dt) + (Ay)*(dt)*(dt)/2; \ + z += vz*(dt) + (Az)*(dt)*(dt)/2; \ + vx += (Ax)*(dt); \ + vy += (Ay)*(dt); \ + vz += (Az)*(dt); \ + t += (dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_DT(dt) \ + do { \ + if(dt < 0 && allow_backprop == 0) { RESTORE=1; ABSORB; }; \ + if (mcgravitation) { Coords mcLocG; double mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + PROP_GRAV_DT(dt, mc_gx, mc_gy, mc_gz); } \ + else mcPROP_DT(dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_Z0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gz/2, -vz, -z); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); z=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Z0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_Z0 \ + do { \ + double mc_dt; \ + if(vz == 0) { ABSORB; }; \ + mc_dt = -z/vz; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + z = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_X0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gx/2, -vx, -x); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); x=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_X0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_X0 \ + do { \ + double mc_dt; \ + if(vx == 0) { ABSORB; }; \ + mc_dt = -x/vx; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + x = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_Y0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gy/2, -vy, -y); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); y=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Y0; \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define mcPROP_Y0 \ + do { \ + double mc_dt; \ + if(vy == 0) { ABSORB; }; \ + mc_dt = -y/vy; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + y = 0; \ + DISALLOW_BACKPROP; \ + } while(0) + + +#ifdef DEBUG + +#define DEBUG_STATE() if(!mcdotrace); else \ + printf("STATE: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); +#define DEBUG_SCATTER() if(!mcdotrace); else \ + printf("SCATTER: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); + +#else + +#define DEBUG_STATE() +#define DEBUG_SCATTER() + +#endif + +#endif /* !MCCODE_H */ + +#endif /* MCSTAS_R_H */ +/* End of file "mcstas-r.h". */ + +/* embedding file "mccode-r.c" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y/McXtrace X.Y +* Version: $Revision$ +* +* Runtime system for McStas and McXtrace. +* Embedded within instrument in runtime mode. +* Contains SECTIONS: +* MPI handling (sum, send, recv) +* format definitions +* I/O +* mcdisplay support +* random numbers +* coordinates handling +* vectors math (solve 2nd order, normals, randvec...) +* parameter handling +* signal and main handlers +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + + +/** Include header files to avoid implicit declarations (not allowed on LLVM) */ +#include +#include + +// UNIX specific headers (non-Windows) +#if defined(__unix__) || defined(__APPLE__) +#include +#include +#endif + + +#ifndef DANSE +#ifdef MC_ANCIENT_COMPATIBILITY +int traceenabled = 0; +int defaultmain = 0; +#endif +/* else defined directly in the McCode generated C code */ + +static long mcseed = 0; /* seed for random generator */ +#pragma acc declare create ( mcseed ) +static long mcstartdate = 0; /* start simulation time */ +static int mcdisable_output_files = 0; /* --no-output-files */ +mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ +mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ + /* When -DTOF_TRAIN is defined, the default NTOF + becomes 10, defined below in the + mcparseoptions function body.*/ +mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ +mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ +mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ +#pragma acc declare create ( mcdotrace ) +int mcallowbackprop = 0; /* flag to enable negative/backprop */ + +/* OpenACC-related segmentation parameters: */ +int vecsize = 128; +int numgangs = 7813; +long gpu_innerloop = 2147483647; + +/* Monitor_nD list/buffer-size default */ +/* Starting value may be defined using -DND_BUFFER=N */ +/* Can further be controlled dynamically using --bufsiz input */ +long MONND_BUFSIZ = 10000000; +#ifdef ND_BUFFER +MONND_BUFSIZ = ND_BUFFER; +#endif + + +/* Number of particle histories to simulate. */ +#ifdef NEUTRONICS +mcstatic unsigned long long int mcncount = 1; +mcstatic unsigned long long int mcrun_num = 0; +#else +#ifdef MCDEFAULT_NCOUNT +mcstatic unsigned long long int mcncount = MCDEFAULT_NCOUNT; +#else +mcstatic unsigned long long int mcncount = 1000000; +#endif +#pragma acc declare create ( mcncount ) +mcstatic unsigned long long int mcrun_num = 0; +#pragma acc declare create ( mcrun_num ) +#endif /* NEUTRONICS */ + +#else +#include "mcstas-globals.h" +#endif /* !DANSE */ + +#ifndef NX_COMPRESSION +#define NX_COMPRESSION NX_COMP_NONE +#endif + +/* String nullification on GPU and other replacements */ +#ifdef OPENACC +int noprintf() { + return 0; +} + +int str_comp(char *str1, char *str2) { + while (*str1 && *str1 == *str2) { + str1++; + str2++; + } + return (*str1 - *str2); +} + +size_t str_len(const char *s) +{ + size_t len = 0; + if(s != NULL) + { + while(*s != '\0') + { + ++len; + ++s; + } + } + return len; +} + +#endif + +/* SECTION: Predefine (component) parameters ================================= */ + +int nans_match(double a, double b){ + return (*(uint64_t*)&a == *(uint64_t*)&b); +} +int is_unset(double x){ + return nans_match(x, UNSET); +} +int is_set(double x){ + return !nans_match(x, UNSET); +} +int is_valid(double x){ + return !isnan(x)||is_unset(x); +} +int all_unset(int n, ...){ + va_list ptr; + va_start(ptr, n); + int ret=1; + for (int i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Allreduce((double*)(sbuf+offset), (double*)(rbuf+offset), + length, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + for (i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Send((void*)((char*)sbuf+offset*dsize), length, dtype, dest, tag++, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Send */ + +/******************************************************************************* +* mc_MPI_Recv: Receives arrays from MPI nodes by blocks to avoid buffer limit +* the buffer must have been allocated previously. +*******************************************************************************/ +int mc_MPI_Recv(void *sbuf, + long count, MPI_Datatype dtype, + int source) +{ + int dsize; + long offset=0; + int tag=1; + int length=MPI_REDUCE_BLOCKSIZE; /* defined in mccode-r.h */ + + if (!sbuf || count <= 0) return(MPI_SUCCESS); /* nothing to recv */ + MPI_Type_size(dtype, &dsize); + + while (offset < count) { + if (offset+length > count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Recv((void*)((char*)sbuf+offset*dsize), length, dtype, source, tag++, + MPI_COMM_WORLD, MPI_STATUS_IGNORE) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Recv */ + +#endif /* USE_MPI */ + +/* SECTION: parameters handling ============================================= */ + +/* Instrument input parameter type handling. */ +/******************************************************************************* +* mcparm_double: extract double value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_double(char *s, void *vptr) +{ + char *p; + double *v = (double *)vptr; + + if (!s) { *v = 0; return(1); } + *v = strtod(s, &p); + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_double: display parameter type double +*******************************************************************************/ +static char * +mcparminfo_double(char *parmname) +{ + return "double"; +} + +/******************************************************************************* +* mcparmerror_double: display error message when failed extract double +*******************************************************************************/ +static void +mcparmerror_double(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for floating point parameter %s (mcparmerror_double)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_double: convert double to string +*******************************************************************************/ +static void +mcparmprinter_double(char *f, void *vptr) +{ + double *v = (double *)vptr; + sprintf(f, "%g", *v); +} + +/******************************************************************************* +* mcparm_int: extract int value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_int(char *s, void *vptr) +{ + char *p; + int *v = (int *)vptr; + long x; + + if (!s) { *v = 0; return(1); } + *v = 0; + x = strtol(s, &p, 10); + if(x < INT_MIN || x > INT_MAX) + return 0; /* Under/overflow */ + *v = x; + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_int: display parameter type int +*******************************************************************************/ +static char * +mcparminfo_int(char *parmname) +{ + return "int"; +} + +/******************************************************************************* +* mcparmerror_int: display error message when failed extract int +*******************************************************************************/ +static void +mcparmerror_int(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for integer parameter %s (mcparmerror_int)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_int: convert int to string +*******************************************************************************/ +static void +mcparmprinter_int(char *f, void *vptr) +{ + int *v = (int *)vptr; + sprintf(f, "%d", *v); +} + +/******************************************************************************* +* mcparm_string: extract char* value from 's' into 'vptr' (copy) +*******************************************************************************/ +static int +mcparm_string(char *s, void *vptr) +{ + char **v = (char **)vptr; + if (!s) { *v = NULL; return(1); } + *v = (char *)malloc(strlen(s) + 1); + if(*v == NULL) + { + exit(-fprintf(stderr, "Error: Out of memory %li (mcparm_string).\n", (long)strlen(s) + 1)); + } + strcpy(*v, s); + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_string: display parameter type string +*******************************************************************************/ +static char * +mcparminfo_string(char *parmname) +{ + return "string"; +} + +/******************************************************************************* +* mcparmerror_string: display error message when failed extract string +*******************************************************************************/ +static void +mcparmerror_string(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for string parameter %s (mcparmerror_string)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_string: convert string to string (including esc chars) +*******************************************************************************/ +static void +mcparmprinter_string(char *f, void *vptr) +{ + char **v = (char **)vptr; + char *p; + + if (!*v) { *f='\0'; return; } + strcpy(f, ""); + for(p = *v; *p != '\0'; p++) + { + switch(*p) + { + case '\n': + strcat(f, "\\n"); + break; + case '\r': + strcat(f, "\\r"); + break; + case '"': + strcat(f, "\\\""); + break; + case '\\': + strcat(f, "\\\\"); + break; + default: + strncat(f, p, 1); + } + } + /* strcat(f, "\""); */ +} /* mcparmprinter_string */ + +/* now we may define the parameter structure, using previous functions */ +static struct + { + int (*getparm)(char *, void *); + char * (*parminfo)(char *); + void (*error)(char *, char *); + void (*printer)(char *, void *); +} mcinputtypes[] = { + { + mcparm_int, mcparminfo_int, mcparmerror_int, + mcparmprinter_int + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + } +}; + +/******************************************************************************* +* mcestimate_error: compute sigma from N,p,p2 in Gaussian large numbers approx +*******************************************************************************/ +double mcestimate_error(double N, double p1, double p2) +{ + double pmean, n1; + if(N <= 1) + return p1; + pmean = p1 / N; + n1 = N - 1; + /* Note: underflow may cause p2 to become zero; the fabs() below guards + against this. */ + return sqrt((N/n1)*fabs(p2 - pmean*pmean)); +} + +double (*mcestimate_error_p) + (double V2, double psum, double p2sum)=mcestimate_error; + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + +#ifndef MCCODE_R_IO_C +#define MCCODE_R_IO_C "$Revision$" + +/* SECTION: file i/o handling ================================================ */ + +#ifndef HAVE_STRCASESTR +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle) +{ + int nlen = strlen(needle); + int hlen = strlen(haystack) - nlen + 1; + int i; + + for (i = 0; i < hlen; i++) { + int j; + for (j = 0; j < nlen; j++) { + unsigned char c1 = haystack[i+j]; + unsigned char c2 = needle[j]; + if (toupper(c1) != toupper(c2)) + goto next; + } + return (char *) haystack + i; + next: + ; + } + return NULL; +} + + +#endif +#ifndef HAVE_STRCASECMP +int strcasecmp( const char *s1, const char *s2 ) +{ + int c1, c2; + do { + c1 = tolower( (unsigned char) *s1++ ); + c2 = tolower( (unsigned char) *s2++ ); + } while (c1 == c2 && c1 != 0); + return c2 > c1 ? -1 : c1 > c2; +} +#endif + +#ifndef STRACPY +/* this is a replacement to strncpy, but ensures that the copy ends with NULL */ +/* http://stracpy.blogspot.fr/2011/04/stracpy-strncpy-replacement.html */ +#define STRACPY +char *stracpy(char *destination, const char *source, size_t amount) +{ + if (!destination || !source || !amount) return(NULL); + while(amount--) + if((*destination++ = *source++) == '\0') break; + *destination = '\0'; + return destination; +} +#endif + +/******************************************************************************* +* mcfull_file: allocates a full file name=dirname+file. Catenate extension if missing. +*******************************************************************************/ +char *mcfull_file(char *name, char *ext) +{ + int dirlen=0; + char *mem =NULL; + + dirlen = dirname ? strlen(dirname) : 0; + mem = (char*)malloc(dirlen + strlen(name) + CHAR_BUF_LENGTH); + if(!mem) { + exit(-fprintf(stderr, "Error: Out of memory %li (mcfull_file)\n", (long)(dirlen + strlen(name) + 256))); + } + strcpy(mem, ""); + + /* prepend directory name to path if name does not contain a path */ + if (dirlen > 0 && !strchr(name, MC_PATHSEP_C)) { + strcat(mem, dirname); + strcat(mem, MC_PATHSEP_S); + } /* dirlen */ + + strcat(mem, name); + if (!strchr(name, '.') && ext && strlen(ext)) + { /* add extension if not in file name already */ + strcat(mem, "."); + strcat(mem, ext); + } + return(mem); +} /* mcfull_file */ + +/******************************************************************************* +* mcnew_file: opens a new file within dirname if non NULL +* the file is opened in "a" (append, create if does not exist) +* the extension 'ext' is added if the file name does not include one. +* the last argument is set to 0 if file did not exist, else to 1. +*******************************************************************************/ +FILE *mcnew_file(char *name, char *ext, int *exists) +{ + char *mem; + FILE *file=NULL; + + if (!name || strlen(name) == 0 || mcdisable_output_files) return(NULL); + + mem = mcfull_file(name, ext); /* create dirname/name.ext */ + + /* check for existence */ + file = fopen(mem, "r"); /* for reading -> fails if does not exist */ + if (file) { + fclose(file); + *exists=1; + } else + *exists=0; + + /* open the file for writing/appending */ +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + /* NXhandle nxhandle is defined in the .h with USE_NEXUS */ + NXaccess mode = (*exists ? NXACC_CREATE5 | NXACC_RDWR : NXACC_CREATE5); + + if (NXopen(mem, mode, &nxhandle) != NX_OK) + file = NULL; + else + file = (FILE*)&nxhandle; /* to make it non NULL */ + } else +#endif + file = fopen(mem, "a+"); + + if(!file) + fprintf(stderr, "Warning: could not open output file '%s' for %s (mcnew_file)\n", + mem, *exists ? "append" : "create"); + free(mem); + + return file; +} /* mcnew_file */ + +/******************************************************************************* +* mcdetector_statistics: compute detector statistics, error bars, [x I I_err N] 1D +* RETURN: updated detector structure +* Used by: detector_import +*******************************************************************************/ +MCDETECTOR mcdetector_statistics( + MCDETECTOR detector) +{ + + if (!detector.p1 || !detector.m) + return(detector); + + /* compute statistics and update MCDETECTOR structure ===================== */ + double sum_z = 0, min_z = 0, max_z = 0; + double fmon_x =0, smon_x = 0, fmon_y =0, smon_y=0, mean_z=0; + double Nsum=0, P2sum=0; + + double sum_xz = 0, sum_yz = 0, sum_x = 0, sum_y = 0, sum_x2z = 0, sum_y2z = 0; + int i,j; + char hasnan=0, hasinf=0; + char israw = ((char*)strcasestr(detector.format,"raw") != NULL); + double *this_p1=NULL; /* new 1D McCode array [x I E N]. Freed after writing data */ + + /* if McCode/PGPLOT and rank==1 we create a new m*4 data block=[x I E N] */ + if (detector.rank == 1 && strcasestr(detector.format,"McCode")) { + this_p1 = (double *)calloc(detector.m*detector.n*detector.p*4, sizeof(double)); + if (!this_p1) + exit(-fprintf(stderr, "Error: Out of memory creating %zi 1D " MCCODE_STRING " data set for file '%s' (detector_import)\n", + detector.m*detector.n*detector.p*4*sizeof(double*), detector.filename)); + } + + max_z = min_z = detector.p1[0]; + + /* compute sum and moments (not for lists) */ + if (!strcasestr(detector.format,"list") && detector.m) + for(j = 0; j < detector.n*detector.p; j++) + { + for(i = 0; i < detector.m; i++) + { + double x,y,z; + double N, E; + long index= !detector.istransposed ? i*detector.n*detector.p + j : i+j*detector.m; + char hasnaninf=0; + + if (detector.m) + x = detector.xmin + (i + 0.5)/detector.m*(detector.xmax - detector.xmin); + else x = 0; + if (detector.n && detector.p) + y = detector.ymin + (j + 0.5)/detector.n/detector.p*(detector.ymax - detector.ymin); + else y = 0; + z = detector.p1[index]; + N = detector.p0 ? detector.p0[index] : 1; + E = detector.p2 ? detector.p2[index] : 0; + if (detector.p2 && !israw) + detector.p2[index] = (*mcestimate_error_p)(detector.p0[index],detector.p1[index],detector.p2[index]); /* set sigma */ + + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + /* fill-in 1D McCode array [x I E N] */ + this_p1[index*4] = x; + this_p1[index*4+1] = z; + this_p1[index*4+2] = detector.p2 ? detector.p2[index] : 0; + this_p1[index*4+3] = N; + } + + if (isnan(z) || isnan(E) || isnan(N)) hasnaninf=hasnan=1; + if (isinf(z) || isinf(E) || isinf(N)) hasnaninf=hasinf=1; + + /* compute stats integrals */ + if (!hasnaninf) { + sum_xz += x*z; + sum_yz += y*z; + sum_x += x; + sum_y += y; + sum_z += z; + sum_x2z += x*x*z; + sum_y2z += y*y*z; + if (z > max_z) max_z = z; + if (z < min_z) min_z = z; + + Nsum += N; + P2sum += E; + } + + } + } /* for j */ + + /* compute 1st and 2nd moments. For lists, sum_z=0 so this is skipped. */ + if (sum_z && detector.n*detector.m*detector.p) + { + fmon_x = sum_xz/sum_z; + fmon_y = sum_yz/sum_z; + smon_x = sum_x2z/sum_z-fmon_x*fmon_x; smon_x = smon_x > 0 ? sqrt(smon_x) : 0; + smon_y = sum_y2z/sum_z-fmon_y*fmon_y; smon_y = smon_y > 0 ? sqrt(smon_y) : 0; + mean_z = sum_z/detector.n/detector.m/detector.p; + } + /* store statistics into detector */ + detector.intensity = sum_z; + detector.error = Nsum ? (*mcestimate_error_p)(Nsum, sum_z, P2sum) : 0; + detector.events = Nsum; + detector.min = min_z; + detector.max = max_z; + detector.mean = mean_z; + detector.centerX = fmon_x; + detector.halfwidthX= smon_x; + detector.centerY = fmon_y; + detector.halfwidthY= smon_y; + + /* if McCode/PGPLOT and rank==1 replace p1 with new m*4 1D McCode and clear others */ + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + + detector.p1 = this_p1; + detector.n = detector.m; detector.m = 4; + detector.p0 = detector.p2 = NULL; + detector.istransposed = 1; + } + + if (detector.n*detector.m*detector.p > 1) + snprintf(detector.signal, CHAR_BUF_LENGTH, + "Min=%g; Max=%g; Mean=%g;", detector.min, detector.max, detector.mean); + else + strcpy(detector.signal, "None"); + snprintf(detector.values, CHAR_BUF_LENGTH, + "%g %g %g", detector.intensity, detector.error, detector.events); + + switch (detector.rank) { + case 1: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g;", + detector.centerX, detector.halfwidthX); break; + case 2: + case 3: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g; Y0=%g; dY=%g;", + detector.centerX, detector.halfwidthX, detector.centerY, detector.halfwidthY); + break; + default: strcpy(detector.statistics, "None"); + } + + if (hasnan) + printf("WARNING: Nan detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + if (hasinf) + printf("WARNING: Inf detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + + return(detector); + +} /* mcdetector_statistics */ + +/******************************************************************************* +* detector_import: build detector structure, merge non-lists from MPI +* compute basic stat, write "Detector:" line +* RETURN: detector structure. Invalid data if detector.p1 == NULL +* Invalid detector sets m=0 and filename="" +* Simulation data sets m=0 and filename=siminfo_name +* This function is equivalent to the old 'mcdetector_out', returning a structure +*******************************************************************************/ +MCDETECTOR detector_import( + char *format, + char *component, char *title, + long m, long n, long p, + char *xlabel, char *ylabel, char *zlabel, + char *xvar, char *yvar, char *zvar, + double x1, double x2, double y1, double y2, double z1, double z2, + char *filename, + double *p0, double *p1, double *p2, + Coords position, Rotation rotation, int index) +{ + time_t t; /* for detector.date */ + long date_l; /* date as a long number */ + char istransposed=0; + char c[CHAR_BUF_LENGTH]; /* temp var for signal label */ + + MCDETECTOR detector; + + /* build MCDETECTOR structure ============================================= */ + /* make sure we do not have NULL for char fields */ + + /* these also apply to simfile */ + strncpy (detector.filename, filename ? filename : "", CHAR_BUF_LENGTH); + strncpy (detector.format, format ? format : "McCode" , CHAR_BUF_LENGTH); + /* add extension if missing */ + if (strlen(detector.filename) && !strchr(detector.filename, '.')) + { /* add extension if not in file name already */ + strcat(detector.filename, ".dat"); + } + strncpy (detector.component, component ? component : MCCODE_STRING " component", CHAR_BUF_LENGTH); + #ifdef USE_NEXUS + char pref[5]; + if (index-1 < 10) { + sprintf(pref,"000"); + } else if (index-1 < 100) { + sprintf(pref,"00"); + } else if (index-1 < 1000) { + sprintf(pref,"0"); + } else if (index-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(detector.nexuscomp,"%s%d_%s",pref,index-1,detector.component); + #endif + + snprintf(detector.instrument, CHAR_BUF_LENGTH, "%s (%s)", instrument_name, instrument_source); + snprintf(detector.user, CHAR_BUF_LENGTH, "%s on %s", + getenv("USER") ? getenv("USER") : MCCODE_NAME, + getenv("HOST") ? getenv("HOST") : "localhost"); + time(&t); /* get current write time */ + date_l = (long)t; /* same but as a long */ + snprintf(detector.date, CHAR_BUF_LENGTH, "%s", ctime(&t)); + if (strlen(detector.date)) detector.date[strlen(detector.date)-1] = '\0'; /* remove last \n in date */ + detector.date_l = date_l; + + if (!mcget_run_num() || mcget_run_num() >= mcget_ncount()) + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%llu", mcget_ncount() +#ifdef USE_MPI +*mpi_node_count +#endif + ); + else + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%g/%g", (double)mcget_run_num(), (double)mcget_ncount()); + + detector.p0 = p0; + detector.p1 = p1; + detector.p2 = p2; + + /* handle transposition (not for NeXus) */ + if (!strcasestr(detector.format, "NeXus")) { + if (m<0 || n<0 || p<0) istransposed = !istransposed; + if (strcasestr(detector.format, "transpose")) istransposed = !istransposed; + if (istransposed) { /* do the swap once for all */ + long i=m; m=n; n=i; + } + } + + m=labs(m); n=labs(n); p=labs(p); /* make sure dimensions are positive */ + detector.istransposed = istransposed; + + /* determine detector rank (dimensionality) */ + if (!m || !n || !p || !p1) detector.rank = 4; /* invalid: exit with m=0 filename="" */ + else if (m*n*p == 1) detector.rank = 0; /* 0D */ + else if (n == 1 || m == 1) detector.rank = 1; /* 1D */ + else if (p == 1) detector.rank = 2; /* 2D */ + else detector.rank = 3; /* 3D */ + + /* from rank, set type */ + switch (detector.rank) { + case 0: strcpy(detector.type, "array_0d"); m=n=p=1; break; + case 1: snprintf(detector.type, CHAR_BUF_LENGTH, "array_1d(%ld)", m*n*p); m *= n*p; n=p=1; break; + case 2: snprintf(detector.type, CHAR_BUF_LENGTH, "array_2d(%ld, %ld)", m, n*p); n *= p; p=1; break; + case 3: snprintf(detector.type, CHAR_BUF_LENGTH, "array_3d(%ld, %ld, %ld)", m, n, p); break; + default: m=0; strcpy(detector.type, ""); strcpy(detector.filename, "");/* invalid */ + } + + detector.m = m; + detector.n = n; + detector.p = p; + + /* these only apply to detector files ===================================== */ + + detector.Position[0]=position.x; + detector.Position[1]=position.y; + detector.Position[2]=position.z; + rot_copy(detector.Rotation,rotation); + snprintf(detector.position, CHAR_BUF_LENGTH, "%g %g %g", position.x, position.y, position.z); + /* may also store actual detector orientation in the future */ + + strncpy(detector.title, title && strlen(title) ? title : component, CHAR_BUF_LENGTH); + strncpy(detector.xlabel, xlabel && strlen(xlabel) ? xlabel : "X", CHAR_BUF_LENGTH); /* axis labels */ + strncpy(detector.ylabel, ylabel && strlen(ylabel) ? ylabel : "Y", CHAR_BUF_LENGTH); + strncpy(detector.zlabel, zlabel && strlen(zlabel) ? zlabel : "Z", CHAR_BUF_LENGTH); + strncpy(detector.xvar, xvar && strlen(xvar) ? xvar : "x", CHAR_BUF_LENGTH); /* axis variables */ + strncpy(detector.yvar, yvar && strlen(yvar) ? yvar : detector.xvar, CHAR_BUF_LENGTH); + strncpy(detector.zvar, zvar && strlen(zvar) ? zvar : detector.yvar, CHAR_BUF_LENGTH); + + /* set "variables" as e.g. "I I_err N" */ + strcpy(c, "I "); + if (strlen(detector.zvar)) strncpy(c, detector.zvar,32); + else if (strlen(detector.yvar)) strncpy(c, detector.yvar,32); + else if (strlen(detector.xvar)) strncpy(c, detector.xvar,32); + + if (detector.rank == 1) + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s %s_err N", detector.xvar, c, c); + else + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s_err N", c, c); + + /* limits */ + detector.xmin = x1; + detector.xmax = x2; + detector.ymin = y1; + detector.ymax = y2; + detector.zmin = z1; + detector.zmax = z2; + if (abs(detector.rank) == 1) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g", x1, x2); + else if (detector.rank == 2) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g", x1, x2, y1, y2); + else + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g %g %g", x1, x2, y1, y2, z1, z2); + + /* if MPI and nodes_nb > 1: reduce data sets when using MPI =============== */ +#ifdef USE_MPI + if (!strcasestr(detector.format,"list") && mpi_node_count > 1 && m) { + /* we save additive data: reduce everything into mpi_node_root */ + if (p0) mc_MPI_Sum(p0, m*n*p); + if (p1) mc_MPI_Sum(p1, m*n*p); + if (p2) mc_MPI_Sum(p2, m*n*p); + if (!p0) { /* additive signal must be then divided by the number of nodes */ + int i; + for (i=0; i CHAR_BUF_LENGTH) break; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(Parameters) + strlen(ThisParam) + 1 >= CHAR_BUF_LENGTH) break; + strcat(Parameters, ThisParam); + } + + /* output data ============================================================ */ + if (f != stdout) + fprintf(f, "%sFile: %s%c%s\n", pre, dirname, MC_PATHSEP_C, siminfo_name); + else + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + + fprintf(f, "%sSource: %s\n", pre, instrument_source); + fprintf(f, "%sParameters: %s\n", pre, Parameters); + + fprintf(f, "%sTrace_enabled: %s\n", pre, traceenabled ? "yes" : "no"); + fprintf(f, "%sDefault_main: %s\n", pre, defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "yes"); +#else + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "no"); +#endif + + fflush(f); +} /* mcinfo_out */ + +/******************************************************************************* +* mcruninfo_out: output simulation tags/info (both in SIM and data files) +* Used in: siminfo_init (ascii case), mcdetector_out_xD_ascii +*******************************************************************************/ +static void mcruninfo_out(char *pre, FILE *f) +{ + int i; + char Parameters[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + fprintf(f, "%sFormat: %s%s\n", pre, + mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME, + mcformat && strcasestr(mcformat,"McCode") ? " with text headers" : ""); + fprintf(f, "%sURL: %s\n", pre, "http://www.mccode.org"); + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + fprintf(f, "%sInstrument: %s\n", pre, instrument_source); + fprintf(f, "%sNcount: %llu\n", pre, mcget_ncount()); + fprintf(f, "%sTrace: %s\n", pre, mcdotrace ? "yes" : "no"); + fprintf(f, "%sGravitation: %s\n", pre, mcgravitation ? "yes" : "no"); + #ifdef TOF_TRAIN + fprintf(f, "%sTOF_TRAIN: %d\n", pre, NTOF); + #endif + snprintf(Parameters, CHAR_BUF_LENGTH, "%ld", mcseed); + fprintf(f, "%sSeed: %s\n", pre, Parameters); + fprintf(f, "%sDirectory: %s\n", pre, dirname ? dirname : "."); +#ifdef USE_MPI + if (mpi_node_count > 1) + fprintf(f, "%sNodes: %i\n", pre, mpi_node_count); +#endif + + // TODO Consider replacing this by a a call to `mcparameterinfo_out(pre+"Param: ", f)` + /* output parameter string ================================================ */ + for(i = 0; i < numipar; i++) { + if (mcinputtable[i].par){ + /* Parameters with a default value */ + if(mcinputtable[i].val && strlen(mcinputtable[i].val)){ + (*mcinputtypes[mcinputtable[i].type].printer)(Parameters, mcinputtable[i].par); + fprintf(f, "%sParam: %s=%s\n", pre, mcinputtable[i].name, Parameters); + /* ... and those without */ + }else{ + fprintf(f, "%sParam: %s=NULL\n", pre, mcinputtable[i].name); + } + } + } + fflush(f); +} /* mcruninfo_out */ + +/******************************************************************************* + * @brief Print parameter information to the specified file + * @param pre any beginning-of-line padding + * @param f the output file + */ +static void mcparameterinfo_out(char * pre, FILE *f){ + if (!f || mcdisable_output_files) return; + + unsigned int nchar = 4; + for (int i=0; i < numipar; ++i){ + if (mcinputtable[i].par && mcinputtable[i].val && strlen(mcinputtable[i].val) > nchar) + nchar = strlen(mcinputtable[i].val); + } + char * buffer = calloc(nchar+1, sizeof(char)); + + if (!buffer) { + exit(1); + } + + for (int i=0; i < numipar; ++i) { + if (mcinputtable[i].par) { + char * name = mcinputtable[i].name; + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + mcinputtypes[mcinputtable[i].type].printer(buffer, mcinputtable[i].par); + } else { + strcpy(buffer, "NULL"); + } + if (strlen(mcinputtable[i].unit)){ + //fprintf(f, "%s%s %s (\"%s\") = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + fprintf(f, "%s%s %s/\"%s\" = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + } else { + fprintf(f, "%s%s %s = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, buffer); + } + } + } + + free(buffer); +} + +/******************************************************************************* +* siminfo_out: wrapper to fprintf(siminfo_file) +*******************************************************************************/ +void siminfo_out(char *format, ...) +{ + va_list ap; + + if(siminfo_file && !mcdisable_output_files) + { + va_start(ap, format); + vfprintf(siminfo_file, format, ap); + va_end(ap); + } +} /* siminfo_out */ + + +/******************************************************************************* +* mcdatainfo_out: output detector header +* mcdatainfo_out(prefix, file_handle, detector) writes info to data file +*******************************************************************************/ +static void +mcdatainfo_out(char *pre, FILE *f, MCDETECTOR detector) +{ + if (!f || !detector.m || mcdisable_output_files) return; + + /* output data ============================================================ */ + fprintf(f, "%sDate: %s (%li)\n", pre, detector.date, detector.date_l); + fprintf(f, "%stype: %s\n", pre, detector.type); + fprintf(f, "%sSource: %s\n", pre, detector.instrument); + fprintf(f, "%scomponent: %s\n", pre, detector.component); + fprintf(f, "%sposition: %s\n", pre, detector.position); + + fprintf(f, "%stitle: %s\n", pre, detector.title); + fprintf(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "%sNcount: %s\n" : + "%sratio: %s\n", pre, detector.ncount); + + if (strlen(detector.filename)) { + fprintf(f, "%sfilename: %s\n", pre, detector.filename); + } + + fprintf(f, "%sstatistics: %s\n", pre, detector.statistics); + fprintf(f, "%ssignal: %s\n", pre, detector.signal); + fprintf(f, "%svalues: %s\n", pre, detector.values); + + if (detector.rank >= 1) + { + fprintf(f, "%sxvar: %s\n", pre, detector.xvar); + fprintf(f, "%syvar: %s\n", pre, detector.yvar); + fprintf(f, "%sxlabel: %s\n", pre, detector.xlabel); + fprintf(f, "%sylabel: %s\n", pre, detector.ylabel); + if (detector.rank > 1) { + fprintf(f, "%szvar: %s\n", pre, detector.zvar); + fprintf(f, "%szlabel: %s\n", pre, detector.zlabel); + } + } + + fprintf(f, + abs(detector.rank)==1 ? + "%sxlimits: %s\n" : + "%sxylimits: %s\n", pre, detector.limits); + fprintf(f, "%svariables: %s\n", pre, + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + fflush(f); + +} /* mcdatainfo_out */ + +/* mcdetector_out_array_ascii: output a single array to a file + * m: columns + * n: rows + * p: array + * f: file handle (already opened) + */ +static void mcdetector_out_array_ascii(long m, long n, double *p, FILE *f, char istransposed) +{ + if(f) + { + int i,j; + for(j = 0; j < n; j++) + { + for(i = 0; i < m; i++) + { + fprintf(f, "%.10g ", p[!istransposed ? i*n + j : j*m+i]); + } + fprintf(f,"\n"); + } + } +} /* mcdetector_out_array_ascii */ + +/******************************************************************************* +* mcdetector_out_0D_ascii: called by mcdetector_out_0D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + /* Write data set information to simulation description file. */ + MPI_MASTER( + siminfo_out("\nbegin data\n"); // detector.component + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.component, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* write I I_err N */ + fprintf(outfile, "%g %g %g\n", + detector.intensity, detector.error, detector.events); + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); +} /* mcdetector_out_0D_ascii */ + +/******************************************************************************* +* mcdetector_out_1D_ascii: called by mcdetector_out_1D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* output the 1D array columns */ + mcdetector_out_array_ascii(detector.m, detector.n, detector.p1, outfile, detector.istransposed); + + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); + +} /* mcdetector_out_1D_ascii */ + +/******************************************************************************* +* mcdetector_out_2D_ascii: called by mcdetector_out_2D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write header only if file has just been created (not appending) */ + if (!exists) { + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + } + /* Add # Data entry for any write to the file (e.g. via -USR2, see GitHub issue #2174 ) */ + fprintf(outfile, "# Data [%s/%s] %s:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p1, + outfile, detector.istransposed); + if (detector.p2) { + fprintf(outfile, "# Errors [%s/%s] %s_err:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p2, + outfile, detector.istransposed); + } + if (detector.p0) { + fprintf(outfile, "# Events [%s/%s] N:\n", detector.component, detector.filename); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p0, + outfile, detector.istransposed); + } + fclose(outfile); + + if (!exists) { + if (strcasestr(detector.format, "list")) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } + } /* if outfile */ + ); /* MPI_MASTER */ +#ifdef USE_MPI + if (strcasestr(detector.format, "list") && mpi_node_count > 1) { + int node_i=0; + /* loop along MPI nodes to write sequentially */ + for(node_i=0; node_i strlen(original)) n = strlen(original); + else original += strlen(original)-n; + strncpy(valid, original, n); + + for (i=0; i < n; i++) + { + if ( (valid[i] > 122) + || (valid[i] < 32) + || (strchr("!\"#$%&'()*+,-.:;<=>?@[\\]^`/ \n\r\t", valid[i]) != NULL) ) + { + if (i) valid[i] = '_'; else valid[i] = 'm'; + } + } + valid[i] = '\0'; + + return(valid); +} /* strcpy_valid */ + +/* end ascii output section ================================================= */ + + + + + + + +#ifdef USE_NEXUS + +/* ========================================================================== */ + +/* NeXus output */ + +/* ========================================================================== */ + +#define nxprintf(...) nxstr('d', __VA_ARGS__) +#define nxprintattr(...) nxstr('a', __VA_ARGS__) + +/******************************************************************************* +* nxstr: output a tag=value data set (char) in NeXus/current group +* when 'format' is larger that 1024 chars it is used as value for the 'tag' +* else the value is assembled with format and following arguments. +* type='d' -> data set +* 'a' -> attribute for current data set +*******************************************************************************/ +static int nxstr(char type, NXhandle *f, char *tag, char *format, ...) +{ + va_list ap; + char value[CHAR_BUF_LENGTH]; + int i; + int ret=NX_OK; + + if (!tag || !format || !strlen(tag) || !strlen(format)) return(NX_OK); + + /* assemble the value string */ + if (strlen(format) < CHAR_BUF_LENGTH) { + va_start(ap, format); + ret = vsnprintf(value, CHAR_BUF_LENGTH, format, ap); + va_end(ap); + + i = strlen(value); + } else { + i = strlen(format); + } + + if (type == 'd') { + /* open/put/close data set */ + if (NXmakedata (f, tag, NX_CHAR, 1, &i) != NX_OK) return(NX_ERROR); + NXopendata (f, tag); + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputdata (f, value); + else + ret = NXputdata (f, format); + NXclosedata(f); + } else { + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputattr (f, tag, value, strlen(value), NX_CHAR); + else + ret = NXputattr (f, tag, format, strlen(format), NX_CHAR); + } + + return(ret); + +} /* nxstr */ + +/******************************************************************************* +* mcinfo_readfile: read a full file into a string buffer which is allocated +* Think to free the buffer after use. +* Used in: mcinfo_out_nexus (nexus) +*******************************************************************************/ +char *mcinfo_readfile(char *filename) +{ + FILE *f = fopen(filename, "rb"); + if (!f) return(NULL); + fseek(f, 0, SEEK_END); + long fsize = ftell(f); + rewind(f); + char *string = malloc(fsize + 1); + if (string) { + int n = fread(string, fsize, 1, f); + fclose(f); + + string[fsize] = 0; + } + return(string); +} + +/******************************************************************************* +* mcinfo_out: output instrument/simulation groups in NeXus file +* Used in: siminfo_init (nexus) +*******************************************************************************/ +static void mcinfo_out_nexus(NXhandle f) +{ + FILE *fid; /* for intrument source code/C/IDF */ + char *buffer=NULL; + time_t t =time(NULL); /* for date */ + char entry0[CHAR_BUF_LENGTH]; + int count=0; + char name[CHAR_BUF_LENGTH]; + char class[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + /* write NeXus NXroot attributes */ + /* automatically added: file_name, HDF5_Version, file_time, NeXus_version */ + nxprintattr(f, "creator", "%s generated with " MCCODE_STRING, instrument_name); + + /* count the number of existing NXentry and create the next one */ + NXgetgroupinfo(f, &count, name, class); + sprintf(entry0, "entry%i", count+1); + + /* create the main NXentry (mandatory in NeXus) */ + if (NXmakegroup(f, entry0, "NXentry") == NX_OK) + if (NXopengroup(f, entry0, "NXentry") == NX_OK) { + nxprintf(nxhandle, "program_name", MCCODE_STRING); + nxprintf(f, "start_time", ctime(&t)); + nxprintf(f, "title", "%s%s%s simulation generated by instrument %s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name, + instrument_name); + nxprintattr(f, "program_name", MCCODE_STRING); + nxprintattr(f, "instrument", instrument_name); + nxprintattr(f, "simulation", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + /* write NeXus instrument group */ + if (NXmakegroup(f, "instrument", "NXinstrument") == NX_OK) + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + int i; + char *string=NULL; + + /* write NeXus parameters(types) data =================================== */ + string = (char*)malloc(CHAR_BUF_LENGTH); + if (string) { + strcpy(string, ""); + for(i = 0; i < numipar; i++) + { + char ThisParam[CHAR_BUF_LENGTH]; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(string) + strlen(ThisParam) < CHAR_BUF_LENGTH) + strcat(string, ThisParam); + } + nxprintattr(f, "Parameters", string); + free(string); + } + + nxprintattr(f, "name", instrument_name); + nxprintf (f, "name", instrument_name); + nxprintattr(f, "Source", instrument_source); + + nxprintattr(f, "Trace_enabled", traceenabled ? "yes" : "no"); + nxprintattr(f, "Default_main", defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + nxprintattr(f, "Embedded_runtime", "yes"); +#else + nxprintattr(f, "Embedded_runtime", "no"); +#endif + + /* add instrument source code when available */ + buffer = mcinfo_readfile(instrument_source); + if (buffer && strlen(buffer)) { + long length=strlen(buffer); + nxprintf (f, "description", buffer); + NXopendata(f,"description"); + nxprintattr(f, "file_name", instrument_source); + nxprintattr(f, "file_size", "%li", length); + nxprintattr(f, "MCCODE_STRING", MCCODE_STRING); + NXclosedata(f); + nxprintf (f,"instrument_source", "%s " MCCODE_NAME " " MCCODE_PARTICLE " Monte Carlo simulation", instrument_name); + free(buffer); + } else + nxprintf (f, "description", "File %s not found (instrument description %s is missing)", + instrument_source, instrument_name); + + if (mcnexus_embed_idf) { + /* add Mantid/IDF.xml when available */ + char *IDFfile=NULL; + IDFfile = (char*)malloc(CHAR_BUF_LENGTH); + sprintf(IDFfile,"%s%s",instrument_source,".xml"); + buffer = mcinfo_readfile(IDFfile); + if (buffer && strlen(buffer)) { + NXmakegroup (nxhandle, "instrument_xml", "NXnote"); + NXopengroup (nxhandle, "instrument_xml", "NXnote"); + nxprintf(f, "data", buffer); + nxprintf(f, "description", "IDF.xml file found with instrument %s", instrument_source); + nxprintf(f, "type", "text/xml"); + NXclosegroup(f); /* instrument_xml */ + free(buffer); + } + free(IDFfile); + } + + /* Add "components" entry */ + if (NXmakegroup(f, "components", "NXdata") == NX_OK) { + NXopengroup(f, "components", "NXdata"); + nxprintattr(f, "description", "Component list for instrument %s", instrument_name); + NXclosegroup(f); /* components */ + } else { + printf("Failed to create NeXus component hierarchy\n"); + } + NXclosegroup(f); /* instrument */ + } /* NXinstrument */ + + /* write NeXus simulation group */ + if (NXmakegroup(f, "simulation", "NXnote") == NX_OK) + if (NXopengroup(f, "simulation", "NXnote") == NX_OK) { + + nxprintattr(f, "name", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + nxprintf (f, "name", "%s", siminfo_name); + nxprintattr(f, "Format", mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME); + nxprintattr(f, "URL", "http://www.mccode.org"); + nxprintattr(f, "program", MCCODE_STRING); + nxprintattr(f, "Instrument",instrument_source); + nxprintattr(f, "Trace", mcdotrace ? "yes" : "no"); + nxprintattr(f, "Gravitation",mcgravitation ? "yes" : "no"); + nxprintattr(f, "Seed", "%li", mcseed); + nxprintattr(f, "Directory", dirname); + #ifdef USE_MPI + if (mpi_node_count > 1) + nxprintf(f, "Nodes", "%i", mpi_node_count); + #endif + + /* output parameter string ================================================ */ + if (NXmakegroup(f, "Param", "NXparameters") == NX_OK) { + NXopengroup(f,"Param", "NXparameters"); + int i; + char string[CHAR_BUF_LENGTH]; + for(i = 0; i < numipar; i++) { + if (mcget_run_num() || (mcinputtable[i].val && strlen(mcinputtable[i].val))) { + if (mcinputtable[i].par == NULL) + strncpy(string, (mcinputtable[i].val ? mcinputtable[i].val : ""), CHAR_BUF_LENGTH); + else + (*mcinputtypes[mcinputtable[i].type].printer)(string, mcinputtable[i].par); + + nxprintf(f, mcinputtable[i].name, "%s", string); + nxprintattr(f, mcinputtable[i].name, string); + } + } + NXclosegroup(f); /* Param */ + } /* NXparameters */ + NXclosegroup(f); /* simulation */ + } /* NXsimulation */ + + /* create a group to hold all links for all monitors */ + NXmakegroup(f, "data", "NXdetector"); + + /* leave the NXentry opened (closed at exit) */ + } /* NXentry */ +} /* mcinfo_out_nexus */ + +/******************************************************************************* +* mccomp_placement_type_nexus: +* Places +* - absolute (3x1) position +* - absolute (3x3) rotation +* - type / class of component instance into attributes under +* entry/instrument/compname +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_placement_type_nexus(NXhandle nxhandle, char* component, Coords position, Rotation rotation, char* comptype) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, component, "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + int64_t pdims[3]; pdims[0]=3; pdims[1]=0; pdims[2]=0; + if (NXcompmakedata64(nxhandle, "Position", NX_FLOAT64, 1, pdims, NX_COMPRESSION, pdims) == NX_OK) { + if (NXopendata(nxhandle, "Position") == NX_OK) { + double pos[3]; coords_get(position, &pos[0], &pos[1], &pos[2]); + if (NXputdata (nxhandle, pos) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Position field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Position field for component %s\n",component); + } + } + int64_t rdims[3]; rdims[0]=3; rdims[1]=3; rdims[2]=0; + if (NXcompmakedata64(nxhandle, "Rotation", NX_FLOAT64, 2, rdims, NX_COMPRESSION, rdims) == NX_OK) { + if (NXopendata(nxhandle, "Rotation") == NX_OK) { + if (NXputdata (nxhandle, rotation) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Rotation field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Rotation field for component %s\n",component); + } + } + nxprintf(nxhandle, "Component_type", comptype); + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + } else { + printf("FAILED to create comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } + #endif +} /* mccomp_placement_nexus */ + +/******************************************************************************* +* mccomp_param_nexus: +* Output parameter/value pair for component instance into +* the attribute +* entry/instrument/compname/parameter +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_param_nexus(NXhandle nxhandle, char* component, char* parameter, char* defval, char* value, char* type) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(nxhandle, "parameters", "NXdata"); + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + if (NXopengroup(nxhandle, "parameters", "NXdata") == NX_OK) { + NXmakegroup(nxhandle, parameter, "NXnote"); + if (NXopengroup(nxhandle, parameter, "NXnote") == NX_OK) { + nxprintattr(nxhandle, "type", type); + nxprintattr(nxhandle, "default", defval); + nxprintattr(nxhandle, "value", value); + NXclosegroup(nxhandle); // parameter + } else { + printf("FAILED to open parameters %s data group \n",parameter); + } + NXclosegroup(nxhandle); // "parameters" + } else { + printf("FAILED to open comp/parameters data group \n"); + } + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } +#endif +} /* mccomp_param_nexus */ + +/******************************************************************************* +* mcdatainfo_out_nexus: output detector header +* mcdatainfo_out_nexus(detector) create group and write info to NeXus data file +* open data:NXdetector then filename:NXdata and write headers/attributes +* requires: NXentry to be opened +*******************************************************************************/ +static void +mcdatainfo_out_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + if (!f || !detector.m || mcdisable_output_files) return; + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(f, detector.nexuscomp, "NXdata"); + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + NXmakegroup(f, "output", "NXdetector"); + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + if (NXmakegroup(f, data_name, "NXdata") == NX_OK) { + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + /* output metadata (as attributes) ======================================== */ + nxprintattr(f, "Date", detector.date); + nxprintattr(f, "type", detector.type); + nxprintattr(f, "Source", detector.instrument); + nxprintattr(f, "component", detector.component); + nxprintattr(f, "position", detector.position); + + nxprintattr(f, "title", detector.title); + nxprintattr(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "Ncount" : + "ratio", detector.ncount); + + if (strlen(detector.filename)) { + nxprintattr(f, "filename", detector.filename); + } + + nxprintattr(f, "statistics", detector.statistics); + nxprintattr(f, "signal", detector.signal); + nxprintattr(f, "values", detector.values); + + if (detector.rank >= 1) + { + nxprintattr(f, "xvar", detector.xvar); + nxprintattr(f, "yvar", detector.yvar); + nxprintattr(f, "xlabel", detector.xlabel); + nxprintattr(f, "ylabel", detector.ylabel); + if (detector.rank > 1) { + nxprintattr(f, "zvar", detector.zvar); + nxprintattr(f, "zlabel", detector.zlabel); + } + } + + nxprintattr(f, abs(detector.rank)==1 ? + "xlimits" : + "xylimits", detector.limits); + nxprintattr(f, "variables", + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + NXclosegroup(f); // data_name + } + } + } + NXclosegroup(f); // output + NXclosegroup(f); // detector.nexuscomp + } + NXclosegroup(f); // components + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + NXclosegroup(f); // instrument + } /* NXdetector (instrument) */ +} /* mcdatainfo_out_nexus */ + +/******************************************************************************* +* mcdetector_out_axis_nexus: write detector axis into current NXdata +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_axis_nexus(NXhandle f, char *label, char *var, int rank, long length, double min, double max) +{ + if (!f || length <= 1 || mcdisable_output_files || max == min) return(NX_OK); + else { + double *axis; + axis=malloc(sizeof(double)*length); + if (!axis ) { + printf("Fatal memory error allocating NeXus axis of length %li, exiting!\n", length); + return(NX_ERROR); + } + char *valid; + valid=malloc(sizeof(char)*CHAR_BUF_LENGTH); + if (!valid ) { + printf("Fatal memory error allocating label axis of length %li, exiting!\n", CHAR_BUF_LENGTH); + free(axis); + return(NX_ERROR); + } + int dim=(int)length; + int i; + int nprimary=1; + /* create an axis from [min:max] */ + for(i = 0; i < length; i++) + axis[i] = min+(max-min)*(i+0.5)/length; + /* create the data set */ + strcpy_valid(valid, label); + NXcompmakedata(f, valid, NX_FLOAT64, 1, &dim, NX_COMPRESSION, &dim); + /* open it */ + if (NXopendata(f, valid) != NX_OK) { + fprintf(stderr, "Warning: could not open axis rank %i '%s' (NeXus)\n", + rank, valid); + free(axis); + free(valid); + return(NX_ERROR); + } + /* put the axis and its attributes */ + NXputdata (f, axis); + nxprintattr(f, "long_name", label); + nxprintattr(f, "short_name", var); + NXputattr (f, "axis", &rank, 1, NX_INT32); + nxprintattr(f, "units", var); + NXputattr (f, "primary", &nprimary, 1, NX_INT32); + NXclosedata(f); + free(axis); + free(valid); + return(NX_OK); + } +} /* mcdetector_out_axis_nexus */ + +/******************************************************************************* +* mcdetector_out_array_nexus: write detector array into current NXdata (1D,2D) +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_array_nexus(NXhandle f, char *part, double *data, MCDETECTOR detector) +{ + + int64_t dims[3]={detector.m,detector.n,detector.p}; /* number of elements to write */ + int64_t fulldims[3]={detector.m,detector.n,detector.p}; + int signal=1; + int exists=0; + int64_t current_dims[3]={0,0,0}; + int ret=NX_OK; + + if (!f || !data || !detector.m || mcdisable_output_files) return(NX_OK); + + /* when this is a list, we set 1st dimension to NX_UNLIMITED for creation */ + if (strcasestr(detector.format, "list")) fulldims[0] = NX_UNLIMITED; + + /* create the data set in NXdata group */ + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + ret = NXcompmakedata64(f, part, NX_FLOAT64, detector.rank, fulldims, NX_COMPRESSION, dims); + if (ret != NX_OK) { + /* failed: data set already exists */ + int datatype=0; + int rank=0; + exists=1; + /* inquire current size of data set (nb of events stored) */ + NXopendata(f, part); + NXgetinfo64(f, &rank, current_dims, &datatype); + NXclosedata(f); + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + + /* open the data set */ + if (NXopendata(f, part) == NX_ERROR) { + fprintf(stderr, "Warning: could not open DataSet %s '%s' (NeXus)\n", + part, detector.title); + return(NX_ERROR); + } + if (strcasestr(detector.format, "list")) { + current_dims[1] = current_dims[2] = 0; /* set starting location for writing slab */ + NXputslab64(f, data, current_dims, dims); + if (!exists) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + else + printf("Append: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } else { + NXputdata (f, data); + } + + if (strstr(part,"data") || strstr(part, "events")) { + NXputattr(f, "signal", &signal, 1, NX_INT32); + nxprintattr(f, "short_name", strlen(detector.filename) ? + detector.filename : detector.component); + } + nxprintattr(f, "long_name", "%s '%s'", part, detector.title); + NXclosedata(f); + + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +/******************************************************************************* +* mcdetector_out_data_nexus: write detector axes+data into current NXdata +* The data:NXdetector is opened, then filename:NXdata +* requires: NXentry to be opened +*******************************************************************************/ +int mcdetector_out_data_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + + if (!f || !detector.m || mcdisable_output_files) return(NX_OK); + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + NXlink pLink; + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + + /* the NXdata group has been created in mcdatainfo_out_nexus */ + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + + MPI_MASTER( + nxprintattr(f, "options", + strlen(detector.options) ? detector.options : "None"); + ); + /* write axes, for histogram data sets, not for lists */ + if (!strcasestr(detector.format, "list")) { + mcdetector_out_axis_nexus(f, detector.xlabel, detector.xvar, + 1, detector.m, detector.xmin, detector.xmax); + mcdetector_out_axis_nexus(f, detector.ylabel, detector.yvar, + 2, detector.n, detector.ymin, detector.ymax); + mcdetector_out_axis_nexus(f, detector.zlabel, detector.zvar, + 3, detector.p, detector.zmin, detector.zmax); + } else { + MPI_MASTER( + nxprintattr(f, "dataset columns", + strlen(detector.ylabel) ? detector.ylabel : "None"); + ); + } + + /* write the actual data (appended if already exists) */ + if (!strcasestr(detector.format, "list") && !strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus(f, "data", detector.p1, detector); + mcdetector_out_array_nexus(f, "errors", detector.p2, detector); + mcdetector_out_array_nexus(f, "ncount", detector.p0, detector); + } else if (strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus( f, "pixels", detector.p1, detector); + } else { + mcdetector_out_array_nexus( f, "events", detector.p1, detector); + } + NXclosegroup(f); + NXopengroup(f, data_name, "NXdata"); + NXgetgroupID(nxhandle, &pLink); + NXclosegroup(f); + } /* NXdata data_name*/ + NXclosegroup(f); + } /* NXdetector output */ + NXclosegroup(f); + } /* NXdata detector.nexuscomp */ + NXclosegroup(f); + } /* NXdata components */ + NXclosegroup(f); + } /* NXdata instrument */ + + if (!strcasestr(detector.format, "pixels")) { + if (NXopengroup(f, "data", "NXdetector") == NX_OK) { + NXmakelink(nxhandle, &pLink); + NXclosegroup(f); + } + } + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +#ifdef USE_MPI +/******************************************************************************* +* mcdetector_out_list_slaves: slaves send their list data to master which writes +* requires: NXentry to be opened +* WARNING: this method has a flaw: it requires all nodes to flush the lists +* the same number of times. In case one node is just below the buffer size +* when finishing (e.g. monitor_nd), it may not trigger save but others may. +* Then the number of recv/send is not constant along nodes, and simulation stalls. +*******************************************************************************/ +MCDETECTOR mcdetector_out_list_slaves(MCDETECTOR detector) +{ + int node_i=0; + MPI_MASTER( + printf("\n** MPI master gathering slave node list data ** \n"); + ); + + if (mpi_node_rank != mpi_node_root) { + /* MPI slave: slaves send their data to master: 2 MPI_Send calls */ + /* m, n, p must be sent first, since all slaves do not have the same number of events */ + int mnp[3]={detector.m,detector.n,detector.p}; + + if (mc_MPI_Send(mnp, 3, MPI_INT, mpi_node_root)!= MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send mnp list error (mcdetector_out_list_slaves)\n", mpi_node_rank); + if (!detector.p1 + || mc_MPI_Send(detector.p1, mnp[0]*mnp[1]*mnp[2], MPI_DOUBLE, mpi_node_root) != MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send p1 list error: mnp=%i (mcdetector_out_list_slaves)\n", mpi_node_rank, abs(mnp[0]*mnp[1]*mnp[2])); + /* slaves are done: sent mnp and p1 */ + } /* end slaves */ + + /* MPI master: receive data from slaves sequentially: 2 MPI_Recv calls */ + + if (mpi_node_rank == mpi_node_root) { + for(node_i=0; node_i 1) { + mcdetector_out_list_slaves(detector); + } +#endif /* USE_MPI */ + + return(detector); +} /* mcdetector_out_2D_nexus */ + +MCDETECTOR mcdetector_out_3D_nexus(MCDETECTOR detector) +{ + printf("Received detector from %s\n",detector.component); + MPI_MASTER( + mcdatainfo_out_nexus(nxhandle, detector); + mcdetector_out_data_nexus(nxhandle, detector); + ); + return(detector); +} /* mcdetector_out_3D_nexus */ + + +#endif /* USE_NEXUS*/ + + + + + + + + +/* ========================================================================== */ + +/* Main input functions */ +/* DETECTOR_OUT_xD function calls -> ascii or NeXus */ + +/* ========================================================================== */ + +/******************************************************************************* +* siminfo_init: open SIM and write header +*******************************************************************************/ +FILE *siminfo_init(FILE *f) +{ + int exists=0; + + /* check format */ + if (!mcformat || !strlen(mcformat) + || !strcasecmp(mcformat, "MCSTAS") || !strcasecmp(mcformat, "MCXTRACE") + || !strcasecmp(mcformat, "PGPLOT") || !strcasecmp(mcformat, "GNUPLOT") || !strcasecmp(mcformat, "MCCODE") + || !strcasecmp(mcformat, "MATLAB")) { + mcformat="McCode"; +#ifdef USE_NEXUS + } else if (strcasestr(mcformat, "NeXus")) { + /* Do nothing */ +#endif + } else { + fprintf(stderr, + "Warning: You have requested the output format %s which is unsupported by this binary. Resetting to standard %s format.\n",mcformat ,"McCode"); + mcformat="McCode"; + } + + /* open the SIM file if not defined yet */ + if (siminfo_file || mcdisable_output_files) + return (siminfo_file); + +#ifdef USE_NEXUS + /* only master writes NeXus header: calls NXopen(nxhandle) */ + if (mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + siminfo_file = mcnew_file(siminfo_name, "h5", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + mcinfo_out_nexus(nxhandle); + ); + return(siminfo_file); /* points to nxhandle */ + } +#endif + + /* write main description file (only MASTER) */ + MPI_MASTER( + + siminfo_file = mcnew_file(siminfo_name, "sim", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + { + /* write SIM header */ + time_t t=time(NULL); + siminfo_out("%s simulation description file for %s.\n", + MCCODE_NAME, instrument_name); + siminfo_out("Date: %s", ctime(&t)); /* includes \n */ + siminfo_out("Program: %s\n\n", MCCODE_STRING); + + siminfo_out("begin instrument: %s\n", instrument_name); + mcinfo_out( " ", siminfo_file); + siminfo_out("end instrument\n"); + + siminfo_out("\nbegin simulation: %s\n", dirname); + mcruninfo_out(" ", siminfo_file); + siminfo_out("end simulation\n"); + + } + ); /* MPI_MASTER */ + return (siminfo_file); + +} /* siminfo_init */ + +/******************************************************************************* +* siminfo_close: close SIM +*******************************************************************************/ +void siminfo_close() +{ +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(siminfo_file && !mcdisable_output_files) { +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + time_t t=time(NULL); + nxprintf(nxhandle, "end_time", ctime(&t)); + nxprintf(nxhandle, "duration", "%li", (long)t-mcstartdate); + NXclosegroup(nxhandle); /* NXentry */ + NXclose(&nxhandle); + } else { +#endif + fclose(siminfo_file); +#ifdef USE_NEXUS + } +#endif +#ifdef USE_MPI + } +#endif + siminfo_file = NULL; + } +} /* siminfo_close */ + +/******************************************************************************* +* mcdetector_out_0D: wrapper for 0D (single value). +* Output single detector/monitor data (p0, p1, p2). +* Title is t, component name is c. +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI reduce) */ + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " data"), + 1, 1, 1, + "I", "", "", + "I", "", "", + 0, 0, 0, 0, 0, 0, c, + &p0, &p1, &p2, posa, rota, index); /* write Detector: line */ + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_0D_nexus(detector)); + else +#endif + return(mcdetector_out_0D_ascii(detector)); + +} /* mcdetector_out_0D */ + + + +/******************************************************************************* +* mcdetector_out_1D: wrapper for 1D. +* Output 1d detector data (p0, p1, p2) for n bins linearly +* distributed across the range x1..x2 (x1 is lower limit of first +* bin, x2 is upper limit of last bin). Title is t, axis labels are xl +* and yl. File name is f, component name is c. +* +* t: title +* xl: x-label +* yl: y-label +* xvar: measured variable length +* x1: x axus min +* x2: x axis max +* n: 1d data vector lenght +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, + long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + // detector_import calls mcdetector_statistics, which will return different + // MCDETECTOR versions for 1-D data based on the value of mcformat. + // + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + xl, yl, (n > 1 ? "Signal per bin" : " Signal"), + xvar, "(I,I_err)", "I", + x1, x2, 0, 0, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + detector = mcdetector_out_1D_nexus(detector); + else +#endif + detector = mcdetector_out_1D_ascii(detector); + if (detector.p1 != p1 && detector.p1) { + // mcdetector_statistics allocated memory but it hasn't been freed. + free(detector.p1); + // plus undo the other damage done there: + detector.p0 = p0; // was set to NULL + detector.p1 = p1; // was set to this_p1 + detector.p2 = p2; // was set to NULL + detector.m = detector.n; // (e.g., labs(n)) + detector.n = 1; // not (n x n) + detector.istransposed = n < 0 ? 1 : 0; + } + return detector; + +} /* mcdetector_out_1D */ + +/******************************************************************************* +* mcdetector_out_2D: wrapper for 2D. +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D */ + +/******************************************************************************* +* mcdetector_out_2D_list: List mode 2D including forwarding "options" from +* Monitor_nD +* +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_list(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + MPI_MASTER( + if (strlen(options)) { + strcpy(detector.options,options); + } else { + strcpy(detector.options,"None"); + } + ); + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D_list */ + +/******************************************************************************* +* mcdetector_out_list: wrapper for list output (calls out_2D with mcformat+"list"). +* m=number of events, n=size of each event +*******************************************************************************/ +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char format_new[CHAR_BUF_LENGTH]; + char *format_org; + MCDETECTOR detector; + + format_org = mcformat; + strcpy(format_new, mcformat); + strcat(format_new, " list"); + mcformat = format_new; + detector = mcdetector_out_2D_list(t, xl, yl, + 1,labs(m),1,labs(n), + m,n, + NULL, p1, NULL, f, + c, posa,rota,options, index); + + mcformat = format_org; + return(detector); +} + +/******************************************************************************* + * mcuse_dir: set data/sim storage directory and create it, + * or exit with error if exists + ******************************************************************************/ +static void +mcuse_dir(char *dir) +{ + if (!dir || !strlen(dir)) return; +#ifdef MC_PORTABLE + fprintf(stderr, "Error: " + "Directory output cannot be used with portable simulation (mcuse_dir)\n"); + exit(1); +#else /* !MC_PORTABLE */ + /* handle file://directory URL type */ + if (strncmp(dir, "file://", strlen("file://"))) + dirname = dir; + else + dirname = dir+strlen("file://"); + + +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(mkdir(dirname, 0777)) { +#ifndef DANSE + fprintf(stderr, "Error: unable to create directory '%s' (mcuse_dir)\n", dir); + fprintf(stderr, "(Maybe the directory already exists?)\n"); +#endif +#ifdef USE_MPI + MPI_Abort(MPI_COMM_WORLD, -1); +#endif + exit(-1); + } +#ifdef USE_MPI + } +#endif + + /* remove trailing PATHSEP (if any) */ + while (strlen(dirname) && dirname[strlen(dirname) - 1] == MC_PATHSEP_C) + dirname[strlen(dirname) - 1]='\0'; +#endif /* !MC_PORTABLE */ +} /* mcuse_dir */ + +/******************************************************************************* +* mcinfo: display instrument simulation info to stdout and exit +*******************************************************************************/ +static void +mcinfo(void) +{ + fprintf(stdout, "begin instrument: %s\n", instrument_name); + mcinfo_out(" ", stdout); + fprintf(stdout, "end instrument\n"); + fprintf(stdout, "begin simulation: %s\n", dirname ? dirname : "."); + mcruninfo_out(" ", stdout); + fprintf(stdout, "end simulation\n"); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcinfo */ + +/******************************************************************************* +* mcparameterinfo: display instrument parameter info to stdout and exit +*******************************************************************************/ +static void +mcparameterinfo(void) +{ + mcparameterinfo_out(" ", stdout); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcparameterinfo */ + + + +#endif /* ndef MCCODE_R_IO_C */ + +/* end of the I/O section =================================================== */ + + + + + + + +/******************************************************************************* +* mcset_ncount: set total number of rays to generate +*******************************************************************************/ +void mcset_ncount(unsigned long long int count) +{ + mcncount = count; +} + +/* mcget_ncount: get total number of rays to generate */ +unsigned long long int mcget_ncount(void) +{ + return mcncount; +} + +/* mcget_run_num: get curent number of rays */ +/* Within the TRACE scope we are now using _particle->uid directly */ +unsigned long long int mcget_run_num() // shuld be (_class_particle* _particle) somehow +{ + /* This function only remains for the few cases outside TRACE where we need to know + the number of simulated particles */ + return mcrun_num; +} + +/* mcsetn_arg: get ncount from a string argument */ +static void +mcsetn_arg(char *arg) +{ + mcset_ncount((long long int) strtod(arg, NULL)); +} + +/* mcsetseed: set the random generator seed from a string argument */ +static void +mcsetseed(char *arg) +{ + mcseed = atol(arg); + if(!mcseed) { + // srandom(mcseed); + //} else { + fprintf(stderr, "Error: seed must not be zero (mcsetseed)\n"); + exit(1); + } +} + +/* Following part is only embedded when not redundent with mccode-r.h ========= */ + +#ifndef MCCODE_H + +/* SECTION: MCDISPLAY support. =============================================== */ + +/******************************************************************************* +* Just output MCDISPLAY keywords to be caught by an external plotter client. +*******************************************************************************/ + +void mcdis_magnify(char *what){ + // Do nothing here, better use interactive zoom from the tools +} + +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: multiline(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} + +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n){ + int i; + const double dx = (x2-x1)/(2*n+1); + const double dy = (y2-y1)/(2*n+1); + const double dz = (z2-z1)/(2*n+1); + + for(i = 0; i < n+1; i++) + mcdis_line(x1 + 2*i*dx, y1 + 2*i*dy, z1 + 2*i*dz, + x1 + (2*i+1)*dx, y1 + (2*i+1)*dy, z1 + (2*i+1)*dz); +} + +void mcdis_multiline(int count, ...){ + va_list ap; + double x,y,z; + + printf("MCDISPLAY: multiline(%d", count); + va_start(ap, count); + while(count--) + { + x = va_arg(ap, double); + y = va_arg(ap, double); + z = va_arg(ap, double); + printf(",%g,%g,%g", x, y, z); + } + va_end(ap); + printf(")\n"); +} + +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height){ + /* draws a rectangle in the plane */ + /* x is ALWAYS width and y is ALWAYS height */ + if (strcmp("xy", plane)==0) { + mcdis_multiline(5, + x - width/2, y - height/2, z, + x + width/2, y - height/2, z, + x + width/2, y + height/2, z, + x - width/2, y + height/2, z, + x - width/2, y - height/2, z); + } else if (strcmp("xz", plane)==0) { + mcdis_multiline(5, + x - width/2, y, z - height/2, + x + width/2, y, z - height/2, + x + width/2, y, z + height/2, + x - width/2, y, z + height/2, + x - width/2, y, z - height/2); + } else if (strcmp("yz", plane)==0) { + mcdis_multiline(5, + x, y - height/2, z - width/2, + x, y - height/2, z + width/2, + x, y + height/2, z + width/2, + x, y + height/2, z - width/2, + x, y - height/2, z - width/2); + } else { + + fprintf(stderr, "Error: Definition of plane %s unknown\n", plane); + exit(1); + } +} + +void mcdis_circle(char *plane, double x, double y, double z, double r){ + printf("MCDISPLAY: circle('%s',%g,%g,%g,%g)\n", plane, x, y, z, r); +} + +void mcdis_new_circle(double x, double y, double z, double r, double nx, double ny, double nz){ + printf("MCDISPLAY: new_circle(%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, r, nx, ny, nz); +} + + +/* Draws a circle with center (x,y,z), radius (r), and in the plane + * with normal (nx,ny,nz)*/ +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz){ + int i; + if(nx==0 && ny && nz==0){ + for (i=0;i<24; i++){ + mcdis_line(x+r*sin(i*2*PI/24),y,z+r*cos(i*2*PI/24), + x+r*sin((i+1)*2*PI/24),y,z+r*cos((i+1)*2*PI/24)); + } + }else{ + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + /*draw circle*/ + for (i=0;i<24; i++){ + double ux,uy,uz; + double wx,wy,wz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + rotate(wx,wy,wz, mx,my,mz, (i+1)*2*PI/24, nx,ny,nz); + mcdis_line(x+ux*r,y+uy*r,z+uz*r, + x+wx*r,y+wy*r,z+wz*r); + } + } +} + + +/* OLD IMPLEMENTATION + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_legacy_box(double x, double y, double z, + double width, double height, double length){ + + mcdis_rectangle("xy", x, y, z-length/2, width, height); + mcdis_rectangle("xy", x, y, z+length/2, width, height); + mcdis_line(x-width/2, y-height/2, z-length/2, + x-width/2, y-height/2, z+length/2); + mcdis_line(x-width/2, y+height/2, z-length/2, + x-width/2, y+height/2, z+length/2); + mcdis_line(x+width/2, y-height/2, z-length/2, + x+width/2, y-height/2, z+length/2); + mcdis_line(x+width/2, y+height/2, z-length/2, + x+width/2, y+height/2, z+length/2); +} + +/* NEW 3D IMPLEMENTATION OF BOX SUPPORTS HOLLOW ALSO + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: box(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, width, height, length, thickness, nx, ny, nz); + } else { + mcdis_legacy_box(x, y, z, width, height, length); + if (thickness) + mcdis_legacy_box(x, y, z, width-thickness, height-thickness, length); + } +} + + +/* OLD IMPLEMENTATION +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz. */ +void mcdis_legacy_cylinder( double x, double y, double z, + double r, double height, int N, double nx, double ny, double nz){ + int i; + /*no lines make little sense - so trigger the default*/ + if(N<=0) N=5; + + NORM(nx,ny,nz); + double h_2=height/2.0; + mcdis_Circle(x+nx*h_2,y+ny*h_2,z+nz*h_2,r,nx,ny,nz); + mcdis_Circle(x-nx*h_2,y-ny*h_2,z-nz*h_2,r,nx,ny,nz); + + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + if(nx==0 && ny && nz==0){ + mx=my=0;mz=1; + }else{ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + } + /*draw circle*/ + for (i=0; i<24; i++){ + double ux,uy,uz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + mcdis_line(x+nx*h_2+ux*r, y+ny*h_2+uy*r, z+nz*h_2+uz*r, + x-nx*h_2+ux*r, y-ny*h_2+uy*r, z-nz*h_2+uz*r); + } +} + +/* NEW 3D IMPLEMENTATION ALSO SUPPORTING HOLLOW +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz.*/ +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cylinder(%g, %g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, thickness, nx, ny, nz); + } else { + mcdis_legacy_cylinder(x, y, z, + r, height, 12, nx, ny, nz); + } +} + +/* Draws a cone with center at (x,y,z) with extent (r,height). + * The cone axis is along the vector nx,ny,nz.*/ +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cone(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, nx, ny, nz); + } else { + mcdis_Circle(x, y, z, r, nx, ny, nz); + mcdis_Circle(x+0.25*height*nx, y+0.25*height*ny, z+0.25*height*nz, 0.75*r, nx, ny, nz); + mcdis_Circle(x+0.5*height*nx, y+0.5*height*ny, z+0.5*height*nz, 0.5*r, nx, ny, nz); + mcdis_Circle(x+0.75*height*nx, y+0.75*height*ny, z+0.75*height*nz, 0.25*r, nx, ny, nz); + mcdis_line(x, y, z, x+height*nx, y+height*ny, z+height*nz); + } +} + +/* Draws a disc with center at (x,y,z) with extent (r). + * The disc axis is along the vector nx,ny,nz.*/ +void mcdis_disc( double x, double y, double z, + double r, double nx, double ny, double nz){ + printf("MCDISPLAY: disc(%g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, nx, ny, nz); +} + +/* Draws a annulus with center at (x,y,z) with extent (outer_radius) and remove inner_radius. + * The annulus axis is along the vector nx,ny,nz.*/ +void mcdis_annulus( double x, double y, double z, + double outer_radius, double inner_radius, double nx, double ny, double nz){ + printf("MCDISPLAY: annulus(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, outer_radius, inner_radius, nx, ny, nz); +} + +/* draws a sphere with center at (x,y,z) with extent (r)*/ +void mcdis_sphere(double x, double y, double z, double r){ + if (mcdotrace==2) { + printf("MCDISPLAY: sphere(%g,%g,%g,%g)\n", x, y, z, r); + } else { + double nx,ny,nz; + int i; + int N=12; + + nx=0;ny=0;nz=1; + mcdis_Circle(x,y,z,r,nx,ny,nz); + for (i=1;i 3) { + /* Split in triangles - as many as polygon rank */ + faceSize=count; + vtxSize=count+1; + } else { + faceSize=1; + vtxSize=count; + } + + for (int i = 0; i < faceSize;) { + int num_indices = 3; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + if (count==3) { // Single, basic triangle + ptr += sprintf(ptr, "[%g, %g, %g], [%g, %g, %g], [%g, %g, %g]", x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2]); + } else { + for (int i = 0; i < vtxSize-1; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", x[i], y[i], z[i]); + if (i < vtxSize - 2) { + ptr += sprintf(ptr, ", "); + } else { + ptr += sprintf(ptr, ", [%g, %g, %g]", x0, y0, z0); + } + } + } + ptr += sprintf(ptr, "], \"faces\": ["); + if (count==3) { // Single, basic triangle, 1 face... + ptr += sprintf(ptr, "{ \"face\": ["); + ptr += sprintf(ptr, "0, 1, 2"); + ptr += sprintf(ptr, "]}"); + } else { + for (int i = 0; i < faceSize; i++) { + int num = 3; + ptr += sprintf(ptr, "{ \"face\": ["); + if (i < faceSize - 1) { + ptr += sprintf(ptr, "%d, %d, %d",i,i+1,count); + } else { + ptr += sprintf(ptr, "%d, %d, %d",i,count,0); + } + ptr += sprintf(ptr, "]}"); + if (i < faceSize-1) { + ptr += sprintf(ptr, ", "); + } + } + } + ptr += sprintf(ptr, "]}"); + mcdis_polyhedron(json_string); + + free(json_string); + } + free(x);free(y);free(z); +} +/* END NEW POLYGON IMPLEMENTATION*/ + +/* +void mcdis_polygon(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: polygon(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} +*/ + +/* SECTION: coordinates handling ============================================ */ + +/******************************************************************************* +* Since we use a lot of geometric calculations using Cartesian coordinates, +* we collect some useful routines here. However, it is also permissible to +* work directly on the underlying struct coords whenever that is most +* convenient (that is, the type Coords is not abstract). +* +* Coordinates are also used to store rotation angles around x/y/z axis. +* +* Since coordinates are used much like a basic type (such as double), the +* structure itself is passed and returned, rather than a pointer. +* +* At compile-time, the values of the coordinates may be unknown (for example +* a motor position). Hence coordinates are general expressions and not simple +* numbers. For this we used the type Coords_exp which has three CExp +* fields. For runtime (or calculations possible at compile time), we use +* Coords which contains three double fields. +*******************************************************************************/ + +/* coords_set: Assign coordinates. */ +Coords coords_set(MCNUM x, MCNUM y, MCNUM z) +{ + Coords a; + + a.x = x; + a.y = y; + a.z = z; + return a; +} + +/* coords_get: get coordinates. Required when 'x','y','z' are #defined as ray pars */ +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z) +{ + *x = a.x; + *y = a.y; + *z = a.z; + return a; +} + +/* coords_add: Add two coordinates. */ +Coords coords_add(Coords a, Coords b) +{ + Coords c; + + c.x = a.x + b.x; + c.y = a.y + b.y; + c.z = a.z + b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_sub: Subtract two coordinates. */ +Coords coords_sub(Coords a, Coords b) +{ + Coords c; + + c.x = a.x - b.x; + c.y = a.y - b.y; + c.z = a.z - b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_neg: Negate coordinates. */ +Coords coords_neg(Coords a) +{ + Coords b; + + b.x = -a.x; + b.y = -a.y; + b.z = -a.z; + return b; +} + +/* coords_scale: Scale a vector. */ +Coords coords_scale(Coords b, double scale) { + Coords a; + + a.x = b.x*scale; + a.y = b.y*scale; + a.z = b.z*scale; + return a; +} + +/* coords_sp: Scalar product: a . b */ +double coords_sp(Coords a, Coords b) { + double value; + + value = a.x*b.x + a.y*b.y + a.z*b.z; + return value; +} + +/* coords_xp: Cross product: a = b x c. */ +Coords coords_xp(Coords b, Coords c) { + Coords a; + + a.x = b.y*c.z - c.y*b.z; + a.y = b.z*c.x - c.z*b.x; + a.z = b.x*c.y - c.x*b.y; + return a; +} + +/* coords_len: Gives length of coords set. */ +double coords_len(Coords a) { + return sqrt(a.x*a.x + a.y*a.y + a.z*a.z); +} + +/* coords_mirror: Mirror a in plane (through the origin) defined by normal n*/ +Coords coords_mirror(Coords a, Coords n) { + double t = scalar_prod(n.x, n.y, n.z, n.x, n.y, n.z); + Coords b; + if (t!=1) { + t = sqrt(t); + n.x /= t; + n.y /= t; + n.z /= t; + } + t=scalar_prod(a.x, a.y, a.z, n.x, n.y, n.z); + b.x = a.x-2*t*n.x; + b.y = a.y-2*t*n.y; + b.z = a.z-2*t*n.z; + return b; +} + +/* coords_print: Print out vector values. */ +void coords_print(Coords a) { + #ifndef OPENACC + fprintf(stdout, "(%f, %f, %f)\n", a.x, a.y, a.z); + #endif + return; +} + +mcstatic void coords_norm(Coords* c) { + double temp = coords_sp(*c,*c); + + // Skip if we will end dividing by zero + if (temp == 0) return; + + temp = sqrt(temp); + + c->x /= temp; + c->y /= temp; + c->z /= temp; +} + +/* coords_test_zero: check if zero vector*/ +int coords_test_zero(Coords a){ + return ( a.x==0 && a.y==0 && a.z==0 ); +} + +/******************************************************************************* +* The Rotation type implements a rotation transformation of a coordinate +* system in the form of a double[3][3] matrix. +* +* Contrary to the Coords type in coords.c, rotations are passed by +* reference. Functions that yield new rotations do so by writing to an +* explicit result parameter; rotations are not returned from functions. The +* reason for this is that arrays cannot by returned from functions (though +* structures can; thus an alternative would have been to wrap the +* double[3][3] array up in a struct). Such are the ways of C programming. +* +* A rotation represents the tranformation of the coordinates of a vector when +* changing between coordinate systems that are rotated with respect to each +* other. For example, suppose that coordinate system Q is rotated 45 degrees +* around the Z axis with respect to coordinate system P. Let T be the +* rotation transformation representing a 45 degree rotation around Z. Then to +* get the coordinates of a vector r in system Q, apply T to the coordinates +* of r in P. If r=(1,0,0) in P, it will be (sqrt(1/2),-sqrt(1/2),0) in +* Q. Thus we should be careful when interpreting the sign of rotation angles: +* they represent the rotation of the coordinate systems, not of the +* coordinates (which has opposite sign). +*******************************************************************************/ + +/******************************************************************************* +* rot_set_rotation: Get transformation for rotation first phx around x axis, +* then phy around y, then phz around z. +*******************************************************************************/ +void rot_set_rotation(Rotation t, double phx, double phy, double phz) +{ + if ((phx == 0) && (phy == 0) && (phz == 0)) { + t[0][0] = 1.0; + t[0][1] = 0.0; + t[0][2] = 0.0; + t[1][0] = 0.0; + t[1][1] = 1.0; + t[1][2] = 0.0; + t[2][0] = 0.0; + t[2][1] = 0.0; + t[2][2] = 1.0; + } else { + double cx = cos(phx); + double sx = sin(phx); + double cy = cos(phy); + double sy = sin(phy); + double cz = cos(phz); + double sz = sin(phz); + + t[0][0] = cy*cz; + t[0][1] = sx*sy*cz + cx*sz; + t[0][2] = sx*sz - cx*sy*cz; + t[1][0] = -cy*sz; + t[1][1] = cx*cz - sx*sy*sz; + t[1][2] = sx*cz + cx*sy*sz; + t[2][0] = sy; + t[2][1] = -sx*cy; + t[2][2] = cx*cy; + } +} + +/******************************************************************************* +* rot_test_identity: Test if rotation is identity +*******************************************************************************/ +int rot_test_identity(Rotation t) +{ + return (t[0][0] + t[1][1] + t[2][2] == 3); +} + +/******************************************************************************* +* rot_mul: Matrix multiplication of transformations (this corresponds to +* combining transformations). After rot_mul(T1, T2, T3), doing T3 is +* equal to doing first T2, then T1. +* Note that T3 must not alias (use the same array as) T1 or T2. +*******************************************************************************/ +void rot_mul(Rotation t1, Rotation t2, Rotation t3) +{ + if (rot_test_identity(t1)) { + rot_copy(t3, t2); + } else if (rot_test_identity(t2)) { + rot_copy(t3, t1); + } else { + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + t3[i][j] = t1[i][0]*t2[0][j] + t1[i][1]*t2[1][j] + t1[i][2]*t2[2][j]; + } +} + +/******************************************************************************* +* rot_copy: Copy a rotation transformation (arrays cannot be assigned in C). +*******************************************************************************/ +void rot_copy(Rotation dest, Rotation src) +{ + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + dest[i][j] = src[i][j]; +} + +/******************************************************************************* +* rot_transpose: Matrix transposition, which is inversion for Rotation matrices +*******************************************************************************/ +void rot_transpose(Rotation src, Rotation dst) +{ + dst[0][0] = src[0][0]; + dst[0][1] = src[1][0]; + dst[0][2] = src[2][0]; + dst[1][0] = src[0][1]; + dst[1][1] = src[1][1]; + dst[1][2] = src[2][1]; + dst[2][0] = src[0][2]; + dst[2][1] = src[1][2]; + dst[2][2] = src[2][2]; +} + +/******************************************************************************* +* rot_apply: returns t*a +*******************************************************************************/ +Coords rot_apply(Rotation t, Coords a) +{ + Coords b; + if (rot_test_identity(t)) { + return a; + } else { + b.x = t[0][0]*a.x + t[0][1]*a.y + t[0][2]*a.z; + b.y = t[1][0]*a.x + t[1][1]*a.y + t[1][2]*a.z; + b.z = t[2][0]*a.x + t[2][1]*a.y + t[2][2]*a.z; + return b; + } +} + +/** + * Pretty-printing of rotation matrices. + */ +void rot_print(Rotation rot) { + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[0][0], rot[0][1], rot[0][2]); + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[1][0], rot[1][1], rot[1][2]); + printf("[ %4.2f %4.2f %4.2f ]\n\n", + rot[2][0], rot[2][1], rot[2][2]); +} + +/** + * Vector product: used by vec_prod (mccode-r.h). Use coords_xp for Coords. + */ +void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, + double x2, double y2, double z2) { + *x = (y1)*(z2) - (y2)*(z1); + *y = (z1)*(x2) - (z2)*(x1); + *z = (x1)*(y2) - (x2)*(y1); +} + +/** + * Scalar product: use coords_sp for Coords. + */ +double scalar_prod( + double x1, double y1, double z1, + double x2, double y2, double z2) { + return ((x1 * x2) + (y1 * y2) + (z1 * z2)); +} + +mcstatic void norm_func(double *x, double *y, double *z) { + double temp = (*x * *x) + (*y * *y) + (*z * *z); + if (temp != 0) { + temp = sqrt(temp); + *x /= temp; + *y /= temp; + *z /= temp; + } +} + + +/* SECTION: GPU algorithms ================================================== */ + + +/* +* Divide-and-conquer strategy for parallelizing this task: Sort absorbed +* particles last. +* +* particles: the particle array, required to checking _absorbed +* pbuffer: same-size particle buffer array required for parallel sort +* len: sorting area-of-interest size (e.g. from previous calls) +* buffer_len: total array size +* flag_split: if set, multiply live particles into absorbed slots, up to buffer_len +* multiplier: output arg, becomes the SPLIT multiplier if flag_split is set +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier) { + #define SAL_THREADS 1024 // num parallel sections + if (len_absorbed)); + + // return (no SPLIT) + if (flag_split != 1) + return accumlen; + + // SPLIT - repeat the non-absorbed block N-1 times, where len % accumlen = N + R + int mult = buffer_len / accumlen; // TODO: possibly use a new arg, bufferlen, rather than len + + // not enough space for full-block split, return + if (mult <= 1) + return accumlen; + + // copy non-absorbed block + #pragma acc parallel loop present(particles[0:buffer_len]) + for (long tidx = 0; tidx < accumlen; tidx++) { // tidx: thread index + randstate_t randstate[7]; + _class_particle sourcebuffer; + _class_particle targetbuffer; + // assign reduced weight to all particles + particles[tidx].p=particles[tidx].p/mult; + #pragma acc loop seq + for (long bidx = 1; bidx < mult; bidx++) { // bidx: block index + // preserve absorbed particle (for randstate) + sourcebuffer = particles[bidx*accumlen + tidx]; + // buffer full particle struct + targetbuffer = particles[tidx]; + // reassign previous randstate + targetbuffer.randstate[0] = sourcebuffer.randstate[0]; + targetbuffer.randstate[1] = sourcebuffer.randstate[1]; + targetbuffer.randstate[2] = sourcebuffer.randstate[2]; + targetbuffer.randstate[3] = sourcebuffer.randstate[3]; + targetbuffer.randstate[4] = sourcebuffer.randstate[4]; + targetbuffer.randstate[5] = sourcebuffer.randstate[5]; + targetbuffer.randstate[6] = sourcebuffer.randstate[6]; + // apply + particles[bidx*accumlen + tidx] = targetbuffer; + } + } + + // set out split multiplier value + *multiplier = mult; + + // return expanded array size + return accumlen * mult; +} + +#endif + +/* +* Fallback serial version of the one above. +*/ +long sort_absorb_last_serial(_class_particle* particles, long len) { + long i = 0; + long j = len - 1; + _class_particle pbuffer; + + // bubble + while (i < j) { + while (!particles[i]._absorbed && ix; + b.y = particle->y; + b.z = particle->z; + c = rot_apply(t, b); + b = coords_add(c, a); + particle->x = b.x; + particle->y = b.y; + particle->z = b.z; + +#if MCCODE_PARTICLE_CODE == 2112 + if (particle->vz != 0.0 || particle->vx != 0.0 || particle->vy != 0.0) + mccoordschange_polarisation(t, &(particle->vx), &(particle->vy), &(particle->vz)); + + if (particle->sz != 0.0 || particle->sx != 0.0 || particle->sy != 0.0) + mccoordschange_polarisation(t, &(particle->sx), &(particle->sy), &(particle->sz)); +#elif MCCODE_PARTICLE_CODE == 22 + if (particle->kz != 0.0 || particle->kx != 0.0 || particle->ky != 0.0) + mccoordschange_polarisation(t, &(particle->kx), &(particle->ky), &(particle->kz)); + + if (particle->Ez != 0.0 || particle->Ex != 0.0 || particle->Ey != 0.0) + mccoordschange_polarisation(t, &(particle->Ex), &(particle->Ey), &(particle->Ez)); +#endif +} + +/******************************************************************************* +* mccoordschange_polarisation: applies rotation to vector (sx sy sz) +*******************************************************************************/ +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *sx; + b.y = *sy; + b.z = *sz; + c = rot_apply(t, b); + *sx = c.x; + *sy = c.y; + *sz = c.z; +} + +/* SECTION: vector math ==================================================== */ + +/* normal_vec_func: Compute normal vector to (x,y,z). */ +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z) +{ + double ax = fabs(x); + double ay = fabs(y); + double az = fabs(z); + double l; + if(x == 0 && y == 0 && z == 0) + { + *nx = 0; + *ny = 0; + *nz = 0; + return; + } + if(ax < ay) + { + if(ax < az) + { /* Use X axis */ + l = sqrt(z*z + y*y); + *nx = 0; + *ny = z/l; + *nz = -y/l; + return; + } + } + else + { + if(ay < az) + { /* Use Y axis */ + l = sqrt(z*z + x*x); + *nx = z/l; + *ny = 0; + *nz = -x/l; + return; + } + } + /* Use Z axis */ + l = sqrt(y*y + x*x); + *nx = y/l; + *ny = -x/l; + *nz = 0; +} /* normal_vec */ + +/******************************************************************************* + * solve_2nd_order: second order equation solve: A*t^2 + B*t + C = 0 + * solve_2nd_order(&t1, NULL, A,B,C) + * returns 0 if no solution was found, or set 't1' to the smallest positive + * solution. + * solve_2nd_order(&t1, &t2, A,B,C) + * same as with &t2=NULL, but also returns the second solution. + * EXAMPLE usage for intersection of a trajectory with a plane in gravitation + * field (gx,gy,gz): + * The neutron starts at point r=(x,y,z) with velocityv=(vx vy vz). The plane + * has a normal vector n=(nx,ny,nz) and contains the point W=(wx,wy,wz). + * The problem consists in solving the 2nd order equation: + * 1/2.n.g.t^2 + n.v.t + n.(r-W) = 0 + * so that A = 0.5 n.g; B = n.v; C = n.(r-W); + * Without acceleration, t=-n.(r-W)/n.v + ******************************************************************************/ +int solve_2nd_order_old(double *t1, double *t2, + double A, double B, double C) +{ + int ret=0; + + if (!t1) return 0; + *t1 = 0; + if (t2) *t2=0; + + if (fabs(A) < 1E-10) /* approximate to linear equation: A ~ 0 */ + { + if (B) { *t1 = -C/B; ret=1; if (t2) *t2=*t1; } + /* else no intersection: A=B=0 ret=0 */ + } + else + { + double D; + D = B*B - 4*A*C; + if (D >= 0) /* Delta > 0: two solutions */ + { + double sD, dt1, dt2; + sD = sqrt(D); + dt1 = (-B + sD)/2/A; + dt2 = (-B - sD)/2/A; + /* we identify very small values with zero */ + if (fabs(dt1) < 1e-10) dt1=0.0; + if (fabs(dt2) < 1e-10) dt2=0.0; + + /* now we choose the smallest positive solution */ + if (dt1<=0.0 && dt2>0.0) ret=2; /* dt2 positive */ + else if (dt2<=0.0 && dt1>0.0) ret=1; /* dt1 positive */ + else if (dt1> 0.0 && dt2>0.0) + { if (dt1 < dt2) ret=1; else ret=2; } /* all positive: min(dt1,dt2) */ + /* else two solutions are negative. ret=-1 */ + if (ret==1) { *t1 = dt1; if (t2) *t2=dt2; } + else { *t1 = dt2; if (t2) *t2=dt1; } + ret=2; /* found 2 solutions and t1 is the positive one */ + } /* else Delta <0: no intersection. ret=0 */ + } + return(ret); +} /* solve_2nd_order */ + +int solve_2nd_order(double *t0, double *t1, double A, double B, double C){ + int retval=0; + double sign=copysign(1.0,B); + double dt0,dt1; + + dt0=0; + dt1=0; + if(t1){ *t1=0;} + + /*protect against rounding errors by locally equating DBL_EPSILON with 0*/ + if (fabs(A)=0){ + dt0=(-B - sign*sqrt(B*B-4*A*C))/(2*A); + dt1=C/(A*dt0); + retval=2; + }else{ + /*no real roots*/ + retval=0; + } + } + /*sort the solutions*/ + if (retval==1){ + /*put both solutions in t0 and t1*/ + *t0=dt0; + if(t1) *t1=dt1; + }else{ + /*we have two solutions*/ + /*swap if both are positive and t1 smaller than t0 or t1 the only positive*/ + int swap=0; + if(dt1>0 && ( dt1) + * + * If height or width is zero, choose random direction in full 4PI, no target. + * + * Traditionally, this routine had the name randvec_target_rect - this is now a + * a define (see mcstas-r.h) pointing here. If you use the old rouine, you are NOT + * taking the local emmission coordinate into account. +*******************************************************************************/ +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, + double width, double height, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle) +{ + double dx, dy, dist, dist_p, nx, ny, nz, mx, my, mz, n_norm, m_norm; + double cos_theta; + Coords tmp; + Rotation Ainverse; + + rot_transpose(A, Ainverse); + + if(height == 0.0 || width == 0.0) + { + randvec_target_circle(xo, yo, zo, solid_angle, + xi, yi, zi, 0); + return; + } + else + { + /* Now choose point uniformly on rectangle within width x height */ + dx = width*randpm1()/2.0; + dy = height*randpm1()/2.0; + + /* Determine distance to target plane*/ + dist = sqrt(xi*xi + yi*yi + zi*zi); + /* Go to global coordinate system */ + + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(Ainverse, tmp); + coords_get(tmp, &xi, &yi, &zi); + + /* Determine vector normal to trajectory axis (z) and gravity [0 1 0] */ + vec_prod(nx, ny, nz, xi, yi, zi, 0, 1, 0); + + /* This now defines the x-axis, normalize: */ + n_norm=sqrt(nx*nx + ny*ny + nz*nz); + nx = nx/n_norm; + ny = ny/n_norm; + nz = nz/n_norm; + + /* Now, determine our y-axis (vertical in many cases...) */ + vec_prod(mx, my, mz, xi, yi, zi, nx, ny, nz); + m_norm=sqrt(mx*mx + my*my + mz*mz); + mx = mx/m_norm; + my = my/m_norm; + mz = mz/m_norm; + + /* Our output, random vector can now be defined by linear combination: */ + + *xo = xi + dx * nx + dy * mx; + *yo = yi + dx * ny + dy * my; + *zo = zi + dx * nz + dy * mz; + + /* Go back to local coordinate system */ + tmp = coords_set(*xo, *yo, *zo); + tmp = rot_apply(A, tmp); + coords_get(tmp, &*xo, &*yo, &*zo); + + /* Go back to local coordinate system */ + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(A, tmp); + coords_get(tmp, &xi, &yi, &zi); + + if (solid_angle) { + /* Calculate vector from local point to remote random point */ + lx = *xo - lx; + ly = *yo - ly; + lz = *zo - lz; + dist_p = sqrt(lx*lx + ly*ly + lz*lz); + + /* Adjust the 'solid angle' */ + /* 1/r^2 to the chosen point times cos(\theta) between the normal */ + /* vector of the target rectangle and direction vector of the chosen point. */ + cos_theta = (xi * lx + yi * ly + zi * lz) / (dist * dist_p); + *solid_angle = width * height / (dist_p * dist_p); + int counter; + for (counter = 0; counter < order; counter++) { + *solid_angle = *solid_angle * cos_theta; + } + } + } +} +/* randvec_target_rect_real */ + + +/* SECTION: random numbers ================================================== + + How to add a new RNG: + + - Use an rng with a manegable state vector, e.g. of lengt 4 or 7. The state + will sit on the particle struct as a "randstate_t state[RANDSTATE_LEN]" + - If the rng has a long state (as MT), set an empty "srandom" and initialize + it explicitly using the appropriate define (RNG_ALG) + - Add a seed and a random function (the transforms will be reused) + - Write the proper defines in mccode-r.h, e.g. randstate_t and RANDSTATE_LEN, + srandom and random. + - Compile using -DRNG_ALG= + +============================================================================= */ + + +/* "Mersenne Twister", by Makoto Matsumoto and Takuji Nishimura. */ +/* See http://www.math.keio.ac.jp/~matumoto/emt.html for original source. */ +/* + A C-program for MT19937, with initialization improved 2002/1/26. + Coded by Takuji Nishimura and Makoto Matsumoto. + + Before using, initialize the state by using mt_srandom(seed) + or init_by_array(init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Any feedback is very welcome. + http://www.math.keio.ac.jp/matumoto/emt.html + email: matumoto@math.keio.ac.jp +*/ +#include +#include // for uint32_t +#include // for size_t + +/* Period parameters */ +#define N 624 +#define M 397 +#define MATRIX_A 0x9908b0dfU /* constant vector a */ +#define UPPER_MASK 0x80000000U /* most significant w-r bits */ +#define LOWER_MASK 0x7fffffffU /* least significant r bits */ + +static uint32_t mt[N]; /* the array for the state vector */ +static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ + +// Required for compatibility with common RNG interface (e.g., kiss/mt polymorphism) +void mt_srandom_empty(void) {} + +// Initializes mt[N] with a seed +void mt_srandom(uint32_t seed) { + mt[0] = seed; + for (mti = 1; mti < N; mti++) { + mt[mti] = 1812433253U * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti; + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array mt[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + mt[mti] &= 0xffffffffU; + /* for >32 bit machines */ + } +} +/* Initialize by an array with array-length. + Init_key is the array for initializing keys. + key_length is its length. */ +void init_by_array(uint32_t init_key[], size_t key_length) { + size_t i = 1, j = 0, k; + mt_srandom(19650218U); + k = (N > key_length ? N : key_length); + for (; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525U)) + + init_key[j] + (uint32_t)j; + mt[i] &= 0xffffffffU; + i++; j++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + if (j >= key_length) j = 0; + } + for (k = N - 1; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941U)) + - (uint32_t)i; + mt[i] &= 0xffffffffU; + i++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + } + mt[0] = 0x80000000U; /* MSB is 1; ensuring non-zero initial array */ +} + +// Generates a random number on [0, 0xffffffff]-interval +uint32_t mt_random(void) { + uint32_t y; + static const uint32_t mag01[2] = { 0x0U, MATRIX_A }; + /* mag01[x] = x * MATRIX_A for x=0,1 */ + + if (mti >= N) { /* generate N words at one time */ + int kk; + + if (mti == N + 1) /* if mt_srandom() has not been called, */ + mt_srandom(5489U); /* a default initial seed is used */ + + for (kk = 0; kk < N - M; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + for (; kk < N - 1; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); + mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1U]; + + mti = 0; + } + + y = mt[mti++]; + + /* Tempering */ + y ^= (y >> 11); + y ^= (y << 7) & 0x9d2c5680U; + y ^= (y << 15) & 0xefc60000U; + y ^= (y >> 18); + + return y; +} +#undef N +#undef M +#undef MATRIX_A +#undef UPPER_MASK +#undef LOWER_MASK +/* End of "Mersenne Twister". */ + + +/* +KISS + + From: http://www.helsbreth.org/random/rng_kiss.html + Scott Nelson 1999 + + Based on Marsaglia's KISS or (KISS+SWB) + + KISS - Keep it Simple Stupid PRNG + + the idea is to use simple, fast, individually promising + generators to get a composite that will be fast, easy to code + have a very long period and pass all the tests put to it. + The three components of KISS are + x(n)=a*x(n-1)+1 mod 2^32 + y(n)=y(n-1)(I+L^13)(I+R^17)(I+L^5), + z(n)=2*z(n-1)+z(n-2) +carry mod 2^32 + The y's are a shift register sequence on 32bit binary vectors + period 2^32-1; + The z's are a simple multiply-with-carry sequence with period + 2^63+2^32-1. The period of KISS is thus + 2^32*(2^32-1)*(2^63+2^32-1) > 2^127 + + In 2025 adapted for consistent 64-bit behavior across platforms. +*/ + +/* the KISS state is stored as a vector of 7 uint64_t */ +/* 0 1 2 3 4 5 6 */ +/* [ x, y, z, w, carry, k, m ] */ + +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed) { + if (seed == 0) seed = 1ull; + state[0] = seed | 1ull; // x + state[1] = seed | 2ull; // y + state[2] = seed | 4ull; // z + state[3] = seed | 8ull; // w + state[4] = 0ull; // carry + state[5] = 0ull; // k + state[6] = 0ull; // m + return state; +} + +uint64_t kiss_random(uint64_t state[7]) { + // Linear congruential generator + state[0] = state[0] * 69069ull + 1ull; + + // Xorshift + state[1] ^= state[1] << 13ull; + state[1] ^= state[1] >> 17ull; + state[1] ^= state[1] << 5ull; + + // Multiply-with-carry + state[5] = (state[2] >> 2ull) + (state[3] >> 3ull) + (state[4] >> 2ull); + state[6] = state[3] + state[3] + state[2] + state[4]; + state[2] = state[3]; + state[3] = state[6]; + state[4] = state[5] >> 62ull; // Top bit of carry (adjusted for 64-bit) + + return state[0] + state[1] + state[3]; +} +/* end of "KISS" rng */ + + +/* FAST KISS in another implementation (Hundt) */ + +////////////////////////////////////////////////////////////////////////////// +// fast keep it simple stupid generator +////////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// Thomas Mueller hash for initialization of rngs +// http://stackoverflow.com/questions/664014/ +// what-integer-hash-function-are-good-that-accepts-an-integer-hash-key +////////////////////////////////////////////////////////////////////////////// +randstate_t _hash(randstate_t x) { + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x); + return x; +} + + +// SECTION: random number transforms ========================================== + + + +// generate a random number from normal law +double _randnorm(randstate_t* state) +{ + static double v1, v2, s; /* removing static breaks comparison with McStas <= 2.5 */ + static int phase = 0; + double X, u1, u2; + + if(phase == 0) + { + do + { + u1 = _rand01(state); + u2 = _rand01(state); + v1 = 2*u1 - 1; + v2 = 2*u2 - 1; + s = v1*v1 + v2*v2; + } while(s >= 1 || s == 0); + + X = v1*sqrt(-2*log(s)/s); + } + else + { + X = v2*sqrt(-2*log(s)/s); + } + + phase = 1 - phase; + return X; +} +// another one +double _randnorm2(randstate_t* state) { + double x, y, r; + do { + x = 2.0 * _rand01(state) - 1.0; + y = 2.0 * _rand01(state) - 1.0; + r = x*x + y*y; + } while (r == 0.0 || r >= 1.0); + return x * sqrt((-2.0 * log(r)) / r); +} + +// Generate a random number from -1 to 1 with triangle distribution +double _randtriangle(randstate_t* state) { + double randnum = _rand01(state); + if (randnum>0.5) return(1-sqrt(2*(randnum-0.5))); + else return(sqrt(2*randnum)-1); +} +double _rand01(randstate_t* state) { + double randnum; + randnum = (double) _random(); + // TODO: can we mult instead of div? + randnum /= (double) MC_RAND_MAX + 1; + return randnum; +} +// Return a random number between 1 and -1 +double _randpm1(randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / 2; + randnum -= 1; + return randnum; +} +// Return a random number between 0 and max. +double _rand0max(double max, randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / max; + return randnum; +} +// Return a random number between min and max. +double _randminmax(double min, double max, randstate_t* state) { + return _rand0max(max - min, state) + max; +} + + +/* SECTION: main and signal handlers ======================================== */ + +/******************************************************************************* +* mchelp: displays instrument executable help with possible options +*******************************************************************************/ +static void +mchelp(char *pgmname) +{ + int i; + + fprintf(stderr, "%s (%s) instrument simulation, generated with " MCCODE_STRING " (" MCCODE_DATE ")\n", instrument_name, instrument_source); + fprintf(stderr, "Usage: %s [options] [parm=value ...]\n", pgmname); + fprintf(stderr, +"Options are:\n" +" -s SEED --seed=SEED Set random seed (must be != 0)\n" +" -n COUNT --ncount=COUNT Set number of particles to simulate.\n" +" -d DIR --dir=DIR Put all data files in directory DIR.\n" +" -t --trace Enable trace of " MCCODE_PARTICLE "s through instrument.\n" +" (Use -t=2 or --trace=2 for modernised mcdisplay rendering)\n" +" -g --gravitation Enable gravitation for all trajectories.\n" +" --no-output-files Do not write any data files.\n" +" -h --help Show this help message.\n" +" -i --info Detailed instrument information.\n" +" --list-parameters Print the instrument parameters to standard out\n" +" -y --yes Assume default values for all parameters with a default\n" +" --meta-list Print names of components which defined metadata\n" +" --meta-defined COMP[:NAME] Print component defined metadata names, or (0,1) if NAME provided\n" +" --meta-type COMP:NAME Print metadata format type specified in definition\n" +" --meta-data COMP:NAME Print the metadata text\n" +" --source Show the instrument code which was compiled.\n" +#ifdef OPENACC +"\n" +" --vecsize OpenACC vector-size (default: 128)\n" +" --numgangs Number of OpenACC gangs (default: 7813)\n" +" --gpu_innerloop Maximum rays to process pr. OpenACC \n" +" kernel run (default: 2147483647)\n" +"\n" +#endif +#ifdef TOF_TRAIN +" --tof-trains=K Number of TOF \"sub-particles\" (default 10)\n" +#endif +"\n" +" --bufsiz Monitor_nD list/buffer-size (default: 1000000)\n" +" --format=FORMAT Output data files using FORMAT=" + FLAVOR_UPPER +#ifdef USE_NEXUS + " NEXUS\n" +" --IDF Embed an xml-formatted IDF instrument definition\n" +" in the NeXus file (if existent in .)\n\n" +#else +"\n\n" +#endif +); +#ifdef USE_MPI + fprintf(stderr, + "This instrument has been compiled with MPI support.\n Use 'mpirun %s [options] [parm=value ...]'.\n", pgmname); +#endif +#ifdef OPENACC + fprintf(stderr, + "This instrument has been compiled with NVIDIA GPU support through OpenACC.\n Running on systems without such devices will lead to segfaults.\nFurter, fprintf, sprintf and printf have been removed from any component TRACE.\n"); +#endif + + if(numipar > 0) + { + fprintf(stderr, "Instrument parameters are:\n"); + for(i = 0; i < numipar; i++) + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + fprintf(stderr, " %-16s(%s) [default='%s']\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name), + mcinputtable[i].val); + else + fprintf(stderr, " %-16s(%s)\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name)); + } + +#ifndef NOSIGNALS + fprintf(stderr, "Known signals are: " +#ifdef SIGUSR1 + "USR1 (status) " +#endif +#ifdef SIGUSR2 + "USR2 (save) " +#endif +#ifdef SIGBREAK + "BREAK (save) " +#endif +#ifdef SIGTERM + "TERM (save and exit)" +#endif + "\n"); +#endif /* !NOSIGNALS */ +} /* mchelp */ + + +/* mcshowhelp: show help and exit with 0 */ +static void +mcshowhelp(char *pgmname) +{ + mchelp(pgmname); + exit(0); +} + +/* mcusage: display usage when error in input arguments and exit with 1 */ +static void +mcusage(char *pgmname) +{ + fprintf(stderr, "Error: incorrect command line arguments\n"); + mchelp(pgmname); + exit(1); +} + +/* mcenabletrace: enable trace/mcdisplay or error if requires recompile */ +static void +mcenabletrace(int mode) +{ + if(traceenabled) { + mcdotrace = mode; + #pragma acc update device ( mcdotrace ) + } else { + if (mode>0) { + fprintf(stderr, + "Error: trace not enabled (mcenabletrace)\n" + "Please re-run the " MCCODE_NAME " compiler " + "with the --trace option, or rerun the\n" + "C compiler with the MC_TRACE_ENABLED macro defined.\n"); + exit(1); + } + } +} + +/******************************************************************************* +* mcreadparams: request parameters from the prompt (or use default) +*******************************************************************************/ +void +mcreadparams(void) +{ + int i,j,status; + static char buf[CHAR_BUF_LENGTH]; + char *p; + int len; + + MPI_MASTER(printf("Instrument parameters for %s (%s)\n", + instrument_name, instrument_source)); + + for(i = 0; mcinputtable[i].name != 0; i++) + { + do + { + MPI_MASTER( + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + printf("Set value of instrument parameter %s (%s) [default='%s']:\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name), mcinputtable[i].val); + else + printf("Set value of instrument parameter %s (%s):\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + fflush(stdout); + ); +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) + { + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } + } + else + p = buf; + MPI_Bcast(buf, CHAR_BUF_LENGTH, MPI_CHAR, mpi_node_root, MPI_COMM_WORLD); +#else /* !USE_MPI */ + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } +#endif /* USE_MPI */ + len = strlen(buf); + if (!len || (len == 1 && (buf[0] == '\n' || buf[0] == '\r'))) + { + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + strncpy(buf, mcinputtable[i].val, CHAR_BUF_LENGTH); /* use default value */ + len = strlen(buf); + } + } + for(j = 0; j < 2; j++) + { + if(len > 0 && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) + { + len--; + buf[len] = '\0'; + } + } + + status = (*mcinputtypes[mcinputtable[i].type].getparm) + (buf, mcinputtable[i].par); + if(!status) + { + (*mcinputtypes[mcinputtable[i].type].error)(mcinputtable[i].name, buf); + if (!mcinputtable[i].val || strlen(mcinputtable[i].val)) { + fprintf(stderr, " Change %s default value in instrument definition.\n", mcinputtable[i].name); + exit(1); + } + } + } while(!status); + } +} /* mcreadparams */ + +/******************************************************************************* +* mcparseoptions: parse command line arguments (options, parameters) +*******************************************************************************/ +void +mcparseoptions(int argc, char *argv[]) +{ + int i, j; + char *p; + int paramset = 0, *paramsetarray; + char *usedir=NULL; + + #ifdef TOF_TRAIN + NTOF=100; /* Default to 100 TOF "sub-particles" in a TOF_TRAIN */ + #endif + + /* Add one to numipar to avoid allocating zero size memory block. */ + paramsetarray = (int*)malloc((numipar + 1)*sizeof(*paramsetarray)); + if(paramsetarray == NULL) + { + fprintf(stderr, "Error: insufficient memory (mcparseoptions)\n"); + exit(1); + } + for(j = 0; j < numipar; j++) + { + paramsetarray[j] = 0; + if (mcinputtable[j].val != NULL && strlen(mcinputtable[j].val)) + { + int status; + char buf[CHAR_BUF_LENGTH]; + strncpy(buf, mcinputtable[j].val, CHAR_BUF_LENGTH); + status = (*mcinputtypes[mcinputtable[j].type].getparm) + (buf, mcinputtable[j].par); + if(!status) fprintf(stderr, "Invalid '%s' default value %s in instrument definition (mcparseoptions)\n", mcinputtable[j].name, buf); + else paramsetarray[j] = 1; + } else { + (*mcinputtypes[mcinputtable[j].type].getparm) + (NULL, mcinputtable[j].par); + paramsetarray[j] = 0; + } + } + for(i = 1; i < argc; i++) + { + if(!strcmp("-s", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("-s", argv[i], 2)) + mcsetseed(&argv[i][2]); + else if(!strcmp("--seed", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("--seed=", argv[i], 7)) + mcsetseed(&argv[i][7]); + else if(!strcmp("-n", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("-n", argv[i], 2)) + mcsetn_arg(&argv[i][2]); + else if(!strcmp("--ncount", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("--ncount=", argv[i], 9)) + mcsetn_arg(&argv[i][9]); + else if(!strcmp("-d", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; /* will create directory after parsing all arguments (end of this function) */ + else if(!strncmp("-d", argv[i], 2)) + usedir=&argv[i][2]; + else if(!strcmp("--dir", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; + else if(!strncmp("--dir=", argv[i], 6)) + usedir=&argv[i][6]; + else if(!strcmp("-h", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("--help", argv[i]) || !strcmp("--version", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("-i", argv[i])) { + mcformat=FLAVOR_UPPER; + mcinfo(); + } + else if(!strcmp("--info", argv[i])) + mcinfo(); + else if (!strcmp("--list-parameters", argv[i])) + mcparameterinfo(); + else if (!strcmp("--meta-list", argv[i]) && ((i+1) >= argc || argv[i+1][0] == '-')){ + //printf("Components with metadata defined:\n"); + exit(metadata_table_print_all_components(num_metadata, metadata_table) == 0); + } + else if (!strcmp("--meta-defined", argv[i]) && (i+1) < argc){ + exit(metadata_table_print_component_keys(num_metadata, metadata_table, argv[i+1]) == 0); + } + else if (!strcmp("--meta-type", argv[i]) && (i+1) < argc){ + char * literal_type = metadata_table_type(num_metadata, metadata_table, argv[i+1]); + if (literal_type == NULL) exit(1); + printf("%s\n", literal_type); + exit(0); + } + else if (!strcmp("--meta-data", argv[i]) && (i+1) < argc){ + char * literal = metadata_table_literal(num_metadata, metadata_table, argv[i+1]); + if (literal == NULL) exit(1); + printf("%s\n", literal); + exit(0); + } + else if(!strncmp("--trace=", argv[i], 8)) { + mcenabletrace(atoi(&argv[i][8])); + } else if(!strncmp("-t=", argv[i], 3) || !strcmp("--verbose", argv[i])) { + mcenabletrace(atoi(&argv[i][3])); + } else if(!strcmp("-t", argv[i])) + mcenabletrace(1); + else if(!strcmp("--trace", argv[i]) || !strcmp("--verbose", argv[i])) + mcenabletrace(1); + else if(!strcmp("--gravitation", argv[i])) + mcgravitation = 1; + else if(!strcmp("-g", argv[i])) + mcgravitation = 1; + else if(!strcmp("--yes", argv[i])) + mcusedefaults = 1; + else if(!strcmp("-y", argv[i])) + mcusedefaults = 1; + else if(!strncmp("--format=", argv[i], 9)) { + mcformat=&argv[i][9]; + } + else if(!strcmp("--format", argv[i]) && (i + 1) < argc) { + mcformat=argv[++i]; + } +#ifdef TOF_TRAIN + else if(!strncmp("--tof-trains=", argv[i], 13)) { + NTOF=atoi(&argv[i][13]); + } +#endif +#ifdef USE_NEXUS + else if(!strcmp("--IDF", argv[i])) { + mcnexus_embed_idf = 1; + } +#endif + else if(!strncmp("--vecsize=", argv[i], 10)) { + vecsize=atoi(&argv[i][10]); + } + else if(!strcmp("--vecsize", argv[i]) && (i + 1) < argc) { + vecsize=atoi(argv[++i]); + } + else if(!strncmp("--bufsiz=", argv[i], 9)) { + MONND_BUFSIZ=atoi(&argv[i][9]); + } + else if(!strcmp("--bufsiz", argv[i]) && (i + 1) < argc) { + MONND_BUFSIZ=atoi(argv[++i]); + } + else if(!strncmp("--numgangs=", argv[i], 11)) { + numgangs=atoi(&argv[i][11]); + } + else if(!strcmp("--numgangs", argv[i]) && (i + 1) < argc) { + numgangs=atoi(argv[++i]); + } + else if(!strncmp("--gpu_innerloop=", argv[i], 16)) { + gpu_innerloop=(long)strtod(&argv[i][16], NULL); + } + else if(!strcmp("--gpu_innerloop", argv[i]) && (i + 1) < argc) { + gpu_innerloop=(long)strtod(argv[++i], NULL); + } + + else if(!strcmp("--no-output-files", argv[i])) + mcdisable_output_files = 1; + else if(!strcmp("--source", argv[i])) { + printf("/* Source code %s from %s: */\n" + "/******************************************************************************/\n" + "%s\n" + "/******************************************************************************/\n" + "/* End of source code %s from %s */\n", + instrument_name, instrument_source, instrument_code, + instrument_name, instrument_source); + exit(1); + } + else if(argv[i][0] != '-' && (p = strchr(argv[i], '=')) != NULL) + { + *p++ = '\0'; + + for(j = 0; j < numipar; j++) + if(!strcmp(mcinputtable[j].name, argv[i])) + { + int status; + status = (*mcinputtypes[mcinputtable[j].type].getparm)(p, + mcinputtable[j].par); + if(!status || !strlen(p)) + { + (*mcinputtypes[mcinputtable[j].type].error) + (mcinputtable[j].name, p); + exit(1); + } + paramsetarray[j] = 1; + paramset = 1; + break; + } + if(j == numipar) + { /* Unrecognized parameter name */ + fprintf(stderr, "Error: unrecognized parameter %s (mcparseoptions)\n", argv[i]); + exit(1); + } + } + else if(argv[i][0] == '-') { + fprintf(stderr, "Error: unrecognized option argument %s (mcparseoptions). Ignored.\n", argv[i++]); + } + else { + fprintf(stderr, "Error: unrecognized argument %s (mcparseoptions). Aborting.\n", argv[i]); + mcusage(argv[0]); + } + } + if (mcusedefaults) { + MPI_MASTER( + printf("Using all default parameter values\n"); + ); + for(j = 0; j < numipar; j++) { + int status; + if(mcinputtable[j].val && strlen(mcinputtable[j].val)){ + status = (*mcinputtypes[mcinputtable[j].type].getparm)(mcinputtable[j].val, + mcinputtable[j].par); + paramsetarray[j] = 1; + paramset = 1; + } + } + } + if(!paramset) + mcreadparams(); /* Prompt for parameters if not specified. */ + else + { + for(j = 0; j < numipar; j++) + if(!paramsetarray[j]) + { + fprintf(stderr, "Error: Instrument parameter %s left unset (mcparseoptions)\n", + mcinputtable[j].name); + exit(1); + } + } + free(paramsetarray); +#ifdef USE_MPI + if (mcdotrace) mpi_node_count=1; /* disable threading when in trace mode */ +#endif + if (usedir && strlen(usedir) && !mcdisable_output_files) mcuse_dir(usedir); +} /* mcparseoptions */ + +#ifndef NOSIGNALS +/******************************************************************************* +* sighandler: signal handler that makes simulation stop, and save results +*******************************************************************************/ +void sighandler(int sig) +{ + /* MOD: E. Farhi, Sep 20th 2001: give more info */ + time_t t1, t0; +#define SIG_SAVE 0 +#define SIG_TERM 1 +#define SIG_STAT 2 +#define SIG_ABRT 3 + + printf("\n# " MCCODE_STRING ": [pid %i] Signal %i detected", getpid(), sig); +#ifdef USE_MPI + printf(" [proc %i]", mpi_node_rank); +#endif +#if defined(SIGUSR1) && defined(SIGUSR2) && defined(SIGKILL) + if (!strcmp(mcsig_message, "sighandler") && (sig != SIGUSR1) && (sig != SIGUSR2)) + { + printf("\n# Fatal : unrecoverable loop ! Suicide (naughty boy).\n"); + kill(0, SIGKILL); /* kill myself if error occurs within sighandler: loops */ + } +#endif + switch (sig) { +#ifdef SIGINT + case SIGINT : printf(" SIGINT (interrupt from terminal, Ctrl-C)"); sig = SIG_TERM; break; +#endif +#ifdef SIGILL + case SIGILL : printf(" SIGILL (Illegal instruction)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGFPE + case SIGFPE : printf(" SIGFPE (Math Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGSEGV + case SIGSEGV : printf(" SIGSEGV (Mem Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGTERM + case SIGTERM : printf(" SIGTERM (Termination)"); sig = SIG_TERM; break; +#endif +#ifdef SIGABRT + case SIGABRT : printf(" SIGABRT (Abort)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGQUIT + case SIGQUIT : printf(" SIGQUIT (Quit from terminal)"); sig = SIG_TERM; break; +#endif +#ifdef SIGTRAP + case SIGTRAP : printf(" SIGTRAP (Trace trap)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGPIPE + case SIGPIPE : printf(" SIGPIPE (Broken pipe)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGUSR1 + case SIGUSR1 : printf(" SIGUSR1 (Display info)"); sig = SIG_STAT; break; +#endif +#ifdef SIGUSR2 + case SIGUSR2 : printf(" SIGUSR2 (Save simulation)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGHUP + case SIGHUP : printf(" SIGHUP (Hangup/update)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGBUS + case SIGBUS : printf(" SIGBUS (Bus error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGURG + case SIGURG : printf(" SIGURG (Urgent socket condition)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGBREAK + case SIGBREAK: printf(" SIGBREAK (Break signal, Ctrl-Break)"); sig = SIG_SAVE; break; +#endif + default : printf(" (look at signal list for signification)"); sig = SIG_ABRT; break; + } + printf("\n"); + printf("# Simulation: %s (%s) \n", instrument_name, instrument_source); + printf("# Breakpoint: %s ", mcsig_message); + if (strstr(mcsig_message, "Save") && (sig == SIG_SAVE)) + sig = SIG_STAT; + SIG_MESSAGE("sighandler"); + if (mcget_ncount() == 0) + printf("(0 %%)\n" ); + else + { + printf("%.2f %% (%10.1f/%10.1f)\n", 100.0*mcget_run_num()/mcget_ncount(), 1.0*mcget_run_num(), 1.0*mcget_ncount()); + } + t0 = (time_t)mcstartdate; + t1 = time(NULL); + printf("# Date: %s", ctime(&t1)); + printf("# Started: %s", ctime(&t0)); + + if (sig == SIG_STAT) + { + printf("# " MCCODE_STRING ": Resuming simulation (continue)\n"); + fflush(stdout); + return; + } + else + if (sig == SIG_SAVE) + { + printf("# " MCCODE_STRING ": Saving data and resume simulation (continue)\n"); + save(NULL); + fflush(stdout); + return; + } + else + if (sig == SIG_TERM) + { + printf("# " MCCODE_STRING ": Finishing simulation (save results and exit)\n"); + finally(); + exit(0); + } + else + { + fflush(stdout); + perror("# Last I/O Error"); + printf("# " MCCODE_STRING ": Simulation stop (abort).\n"); +// This portion of the signal handling only works on UNIX +#if defined(__unix__) || defined(__APPLE__) + signal(sig, SIG_DFL); /* force to use default sighandler now */ + kill(getpid(), sig); /* and trigger it with the current signal */ +#endif + exit(-1); + } +#undef SIG_SAVE +#undef SIG_TERM +#undef SIG_STAT +#undef SIG_ABRT + +} /* sighandler */ +#endif /* !NOSIGNALS */ + +#ifdef NEUTRONICS +/*Main neutronics function steers the McStas calls, initializes parameters etc */ +/* Only called in case NEUTRONICS = TRUE */ +void neutronics_main_(float *inx, float *iny, float *inz, float *invx, float *invy, float *invz, float *intime, float *insx, float *insy, float *insz, float *inw, float *outx, float *outy, float *outz, float *outvx, float *outvy, float *outvz, float *outtime, float *outsx, float *outsy, float *outsz, float *outwgt) +{ + + extern double mcnx, mcny, mcnz, mcnvx, mcnvy, mcnvz; + extern double mcnt, mcnsx, mcnsy, mcnsz, mcnp; + + /* External code governs iteration - McStas is iterated once per call to neutronics_main. I.e. below counter must be initiancated for each call to neutronics_main*/ + mcrun_num=0; + + time_t t; + t = (time_t)mcstartdate; + mcstartdate = t; /* set start date before parsing options and creating sim file */ + init(); + + /* *** parse options *** */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat=getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + + /* Set neutron state based on input from neutronics code */ + mcsetstate(*inx,*iny,*inz,*invx,*invy,*invz,*intime,*insx,*insy,*insz,*inw); + + /* main neutron event loop - runs only one iteration */ + + //mcstas_raytrace(&mcncount); /* prior to McStas 1.12 */ + + mcallowbackprop = 1; //avoid absorbtion from negative dt + int argc=1; + char *argv[0]; + int dummy = mccode_main(argc, argv); + + *outx = mcnx; + *outy = mcny; + *outz = mcnz; + *outvx = mcnvx; + *outvy = mcnvy; + *outvz = mcnvz; + *outtime = mcnt; + *outsx = mcnsx; + *outsy = mcnsy; + *outsz = mcnsz; + *outwgt = mcnp; + + return; +} /* neutronics_main */ + +#endif /*NEUTRONICS*/ + +#endif /* !MCCODE_H */ +/* End of file "mccode-r.c". */ +/* End of file "mccode-r.c". */ + +/* embedding file "mcstas-r.c" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system for McStas. +* Embedded within instrument in runtime mode. +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#include "mcstas-r.h" +#endif +#ifdef DANSE +#include "mcstas-globals.h" +#endif + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + +/*the magnet stack*/ +#ifdef MC_POL_COMPAT +void (*mcMagnetPrecession) (double, double, double, double, double, double, + double, double*, double*, double*, double, Coords, Rotation)=NULL; +Coords mcMagnetPos; +Rotation mcMagnetRot; +double* mcMagnetData = NULL; +/* mcMagneticField(x, y, z, t, Bx, By, Bz) */ +int (*mcMagneticField) (double, double, double, double, + double*, double*, double*, void *) = NULL; +#endif + +#ifndef MCSTAS_H + +/******************************************************************************* +* mcsetstate: transfer parameters into global McStas variables +*******************************************************************************/ +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF) +{ + _class_particle mcneutron; + + mcneutron.x = x; + mcneutron.y = y; + mcneutron.z = z; + mcneutron.vx = vx; + mcneutron.vy = vy; + mcneutron.vz = vz; + mcneutron.t = t; + mcneutron.sx = sx; + mcneutron.sy = sy; + mcneutron.sz = sz; + mcneutron.p = p; + mcneutron.mcgravitation = mcgravitation; + mcneutron.mcMagnet = mcMagnet; + mcneutron.allow_backprop = mcallowbackprop; + mcneutron._uid = 0; + mcneutron._index = 1; + mcneutron._absorbed = 0; + mcneutron._restore = 0; + mcneutron._scattered = 0; + mcneutron.flag_nocoordschange = 0; + + /* init tmp-vars - FIXME are they used? */ + mcneutron._mctmp_a = mcneutron._mctmp_b = mcneutron._mctmp_c = 0; + // what about mcneutron._logic ? + mcneutron._logic.dummy=1; + // init uservars via cogen'd-function + + #ifdef TOF_TRAIN + mcneutron.N_trains=NTOF; + mcneutron.t_offset=malloc(NTOF*sizeof(double)); + mcneutron.p_trains=malloc(NTOF*sizeof(double)); + mcneutron.alive_trains=malloc(NTOF*sizeof(int)); + #endif + + particle_uservar_init(&mcneutron); + + return(mcneutron); +} /* mcsetstate */ + +/******************************************************************************* +* mcgetstate: get neutron parameters from particle structure +*******************************************************************************/ +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p) +{ + *x = mcneutron.x; + *y = mcneutron.y; + *z = mcneutron.z; + *vx = mcneutron.vx; + *vy = mcneutron.vy; + *vz = mcneutron.vz; + *t = mcneutron.t; + *sx = mcneutron.sx; + *sy = mcneutron.sy; + *sz = mcneutron.sz; + *p = mcneutron.p; + + return(mcneutron); +} /* mcgetstate */ + + +/******************************************************************************* +* mcgenstate: set default neutron parameters +*******************************************************************************/ +// Moved to generated code +/* #pragma acc routine seq */ +/* _class_particle mcgenstate(void) */ +/* { */ +/* return(mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, mcMagnet, mcallowbackprop)); */ +/* } */ + +/******************************************************************************* +* mccoordschanges: old style rotation routine rot -> (x y z) ,(vx vy vz),(sx,sy,sz) +*******************************************************************************/ +void +mccoordschanges(Coords a, Rotation t, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *x; + b.y = *y; + b.z = *z; + c = rot_apply(t, b); + b = coords_add(c, a); + *x = b.x; + *y = b.y; + *z = b.z; + + if ( (vz && vy && vx) && (*vz != 0.0 || *vx != 0.0 || *vy != 0.0) ) + mccoordschange_polarisation(t, vx, vy, vz); + + if ( (sz && sy && sx) && (*sz != 0.0 || *sx != 0.0 || *sy != 0.0) ) + mccoordschange_polarisation(t, sx, sy, sz); + +} + +/* intersection routines ==================================================== */ + +/******************************************************************************* +* inside_rectangle: Check if (x,y) is inside rectangle (xwidth, yheight) +* return 0 if outside and 1 if inside +*******************************************************************************/ +int inside_rectangle(double x, double y, double xwidth, double yheight) +{ + if (x>-xwidth/2 && x-yheight/2 && y -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[0] = tt; + else + t[0] = 0; + + tt = (dx/2 - x)/vx; + y_in = y + tt*vy; + z_in = z + tt*vz; + if( y_in > -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[1] = tt; + else + t[1] = 0; + } + else + t[0] = t[1] = 0; + + if(vy != 0) + { + tt = -(dy/2 + y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[2] = tt; + else + t[2] = 0; + + tt = (dy/2 - y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[3] = tt; + else + t[3] = 0; + } + else + t[2] = t[3] = 0; + + if(vz != 0) + { + tt = -(dz/2 + z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[4] = tt; + else + t[4] = 0; + + tt = (dz/2 - z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[5] = tt; + else + t[5] = 0; + } + else + t[4] = t[5] = 0; + + /* The intersection is evaluated and *dt_in and *dt_out are assigned */ + + a = b = s = 0; + count = 0; + + for( i = 0; i < 6; i = i + 1 ) + if( t[i] == 0 ) + s = s+1; + else if( count == 0 ) + { + a = t[i]; + count = 1; + } + else + { + b = t[i]; + count = 2; + } + + if ( a == 0 && b == 0 ) + return 0; + else if( a < b ) + { + *dt_in = a; + *dt_out = b; + return 1; + } + else + { + *dt_in = b; + *dt_out = a; + return 1; + } + +} /* box_intersect */ + +/******************************************************************************* + * cylinder_intersect: compute intersection with a cylinder + * returns 0 when no intersection is found + * or 2/4/8/16 bits depending on intersection, + * and resulting times t0 and t1 + * Written by: EM,NB,ABA 4.2.98 + *******************************************************************************/ +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h) +{ + double D, t_in, t_out, y_in, y_out; + int ret=1; + + D = (2*vx*x + 2*vz*z)*(2*vx*x + 2*vz*z) + - 4*(vx*vx + vz*vz)*(x*x + z*z - r*r); + + if (D>=0) + { + if (vz*vz + vx*vx) { + t_in = (-(2*vz*z + 2*vx*x) - sqrt(D))/(2*(vz*vz + vx*vx)); + t_out = (-(2*vz*z + 2*vx*x) + sqrt(D))/(2*(vz*vz + vx*vx)); + } else if (vy) { /* trajectory parallel to cylinder axis */ + t_in = (-h/2-y)/vy; + t_out = (h/2-y)/vy; + if (t_in>t_out){ + double tmp=t_in; + t_in=t_out;t_out=tmp; + } + } else return 0; + y_in = vy*t_in + y; + y_out =vy*t_out + y; + + if ( (y_in > h/2 && y_out > h/2) || (y_in < -h/2 && y_out < -h/2) ) + return 0; + else + { + if (y_in > h/2) + { t_in = ((h/2)-y)/vy; ret += 2; } + else if (y_in < -h/2) + { t_in = ((-h/2)-y)/vy; ret += 4; } + if (y_out > h/2) + { t_out = ((h/2)-y)/vy; ret += 8; } + else if (y_out < -h/2) + { t_out = ((-h/2)-y)/vy; ret += 16; } + } + *t0 = t_in; + *t1 = t_out; + return ret; + } + else + { + *t0 = *t1 = 0; + return 0; + } +} /* cylinder_intersect */ + + +/******************************************************************************* + * sphere_intersect: Calculate intersection between a line and a sphere. + * returns 0 when no intersection is found + * or 1 in case of intersection with resulting times t0 and t1 + *******************************************************************************/ +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r) +{ + double A, B, C, D, v; + + v = sqrt(vx*vx + vy*vy + vz*vz); + A = v*v; + B = 2*(x*vx + y*vy + z*vz); + C = x*x + y*y + z*z - r*r; + D = B*B - 4*A*C; + if(D < 0) + return 0; + D = sqrt(D); + *t0 = (-B - D) / (2*A); + *t1 = (-B + D) / (2*A); + return 1; +} /* sphere_intersect */ + +/******************************************************************************* + * plane_intersect: Calculate intersection between a plane and a line. + * returns 0 when no intersection is found (i.e. line is parallel to the plane) + * returns 1 or -1 when intersection time is positive and negative respectively + *******************************************************************************/ +int plane_intersect(double *t, double x, double y, double z, + double vx, double vy, double vz, double nx, double ny, double nz, double wx, double wy, double wz) +{ + double s; + if (fabs(s=scalar_prod(nx,ny,nz,vx,vy,vz)) + #include + + typedef struct { + // Prefixed names to avoid the _particle accessor macros + double _x, _y, _z; + double _vx, _vy, _vz; + double _sx, _sy, _sz; + // insert [int, void*, int, double, double, double, unsigned long] + // here in order to have matching memory layout with + // _struct_particle, e.g., _class_particle + double _t, _p; + } mcpl_input_once_particle_t; + + void + mcpl_input_once_translator (const int use_polarisation, double weight_scale, const mcpl_particle_t* input, mcpl_input_once_particle_t* output) { + // position in mm -> m + output->_x = input->position[0] / 100; + output->_y = input->position[1] / 100; + output->_z = input->position[2] / 100; + // ekin in MeV -> meV; then to velocity + double nrm = sqrt (input->ekin * 1e9 / VS2E); + output->_vx = input->direction[0] * nrm; + output->_vy = input->direction[1] * nrm; + output->_vz = input->direction[2] * nrm; + // polarization is a direction, and we might ignore it + output->_sx = (use_polarisation) ? input->polarisation[0] : 0; + output->_sy = (use_polarisation) ? input->polarisation[1] : 0; + output->_sz = (use_polarisation) ? input->polarisation[2] : 0; + // time in msec -> sec + output->_t = input->time * 1e-3; + // probability, unitless + output->_p = input->weight * weight_scale; + } + + int + mcplinputonce_file_exist (char* fn) { + struct stat buffer; + return (stat (fn, &buffer) == 0); + } + +/* Shared user declarations for all components types 'ESS_butterfly'. */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.h +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#define ESS_BUTTERFLY_LIB_H 0.1 + +#ifndef ESS_SOURCE_DURATION +#define ESS_SOURCE_DURATION 2.857e-3 +#endif + +#ifndef ESS_SOURCE_FREQUENCY +#define ESS_SOURCE_FREQUENCY 14 +#endif + +#ifndef ESS_SOURCE_POWER +#define ESS_SOURCE_POWER 5 +#endif + +/* Struct for extra source parameters - for future geometrical adjustments */ +struct ess_struct { + double X; + double Y; + double Z; + double height_t; + double height_c; + double Width_c; + double Width_t; + double Mwidth_c; + double Mwidth_t; + double tmultiplier; + double Radius_c; + double beamportangle; + int Uniform; + double extractionangle; + int Wasleft; +}; +typedef struct ess_struct ess_moderator_struct; + +typedef void (*functype)(double* t , double* p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, ess_moderator_struct extras); + +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta); +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta); + +/* List of brilliance definitions */ +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y); +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y); +/* List of pulse-shape definitions */ +double ESS_2015_Schoenfeldt_cold_timedist(double t, double lambda, double height, double pulselength); +double ESS_2015_Schoenfeldt_thermal_timedist(double t, double lambda, double height, double pulselength); + +/* List of moderator-geometry-weighting definitions */ +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height); +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width); +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height); +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width); + +double ESS_2015_Schoenfeldt_cold_y0(double y0); +double ESS_2015_Schoenfeldt_cold_x0(double x0, double theta, double width); +double ESS_2015_Schoenfeldt_thermal_y0(double y0); +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width); +double ESS_2015_Schoenfeldt_cold_Y(double x0,double height); +double ESS_2015_Schoenfeldt_thermal_Y(double y0,double height); +double ESS_2015_Schoenfeldt_cold_Theta120(double x0,double height); +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft); + +/* end of ESS_butterfly-lib.h */ +#endif + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.c +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#error McStas : please import this library with %include "ESS_butterfly-lib" +#endif + +#ifdef OPENACC +#define exit(...) noprintf() +#endif + +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ + if(lambda<=0)return 0; + double par0=8.44e13/25.; + double par1=2.5; + double par2=2.2; + + double par3=-13.-.5*(theta-5); + double par4=2.53; + double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); + + double par6; + if(theta==5)par6=5.73745e+015/25.; + else if(theta==15)par6=5.88284e+015/25.; + else if(theta==25)par6=6.09573e+015/25.; + else if(theta==35)par6=6.29116e+015/25.; + else if(theta==45)par6=6.03436e+015/25.; + else if(theta==55)par6=6.02045e+015/25.; + double par7=0.788956+0.00854184*(theta-5.)/10.; + double par8=0.0461868-0.0016464*(theta-5.)/10.; + double par9=0.325; + + double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); + double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); + return para_part+SD_part; + +} +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ + if(lambda<=0)return 0; + double i=(theta-5.)/10.; + double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; + double par2=6.24806e+012-8.84602e+010*i; + double par3=-0.31107+0.0221138*i; + double aOlsqr=949./(325*lambda*lambda); + return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); + +} + + +/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ + + double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); + if(y0 < -height/2. || y0 > height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(time +#include +#include + +#ifndef _MSC_EXTENSIONS +#include +#else +# include +# define strcasecmp _stricmp +# define strncasecmp _strnicmp +#endif + + typedef struct struct_table + { + char filename[1024]; + long filesize; + char *header; /* text header, e.g. comments */ + double *data; /* vector { x[0], y[0], ... x[n-1], y[n-1]... } */ + double min_x; /* min value of first column */ + double max_x; /* max value of first column */ + double step_x; /* minimal step value of first column */ + long rows; /* number of rows in matrix block */ + long columns; /* number of columns in matrix block */ + + long begin; /* start fseek index of block */ + long end; /* stop fseek index of block */ + long block_number; /* block index. 0 is catenation of all */ + long array_length; /* number of elements in the t_Table array */ + char monotonic; /* true when 1st column/vector data is monotonic */ + char constantstep; /* true when 1st column/vector data has constant step */ + char method[32]; /* interpolation method: nearest, linear */ + char quiet; /*output level for messages to the console 0: print all messages, 1:only print some/including errors, 2: never print anything.*/ + } t_Table; + +/*maximum number of rows to rebin a table = 1M*/ +enum { mcread_table_rebin_maxsize = 1000000 }; + +typedef struct t_Read_table_file_item { + int ref_count; + t_Table *table_ref; +} t_Read_table_file_item; + +typedef enum enum_Read_table_file_actions {STORE,FIND,GC} t_Read_table_file_actions; + +/* read_table-lib function prototypes */ +/* ========================================================================= */ + +/* 'public' functions */ +long Table_Read (t_Table *Table, char *File, long block_number); +long Table_Read_Offset (t_Table *Table, char *File, long block_number, + long *offset, long max_lines); +long Table_Read_Offset_Binary(t_Table *Table, char *File, char *Type, + long *Offset, long Rows, long Columns); +long Table_Rebin(t_Table *Table); /* rebin table with regular 1st column and interpolate all columns 2:end */ +long Table_Info (t_Table Table); +#pragma acc routine +double Table_Index(t_Table Table, long i, long j); /* get indexed value */ +#pragma acc routine +double Table_Value(t_Table Table, double X, long j); /* search X in 1st column and return interpolated value in j-column */ +t_Table *Table_Read_Array(char *File, long *blocks); +void Table_Free_Array(t_Table *Table); +long Table_Info_Array(t_Table *Table); +int Table_SetElement(t_Table *Table, long i, long j, double value); +long Table_Init(t_Table *Table, long rows, long columns); /* create a Table */ +#pragma acc routine +double Table_Value2d(t_Table Table, double X, double Y); /* same as Table_Index with non-integer indices and 2d interpolation */ +MCDETECTOR Table_Write(t_Table Table, char*file, char*xl, char*yl, + double x1, double x2, double y1, double y2); /* write Table to disk */ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier); +t_Table *Table_File_List_find(char *name, int block, int offset); +int Table_File_List_gc(t_Table *tab); +void *Table_File_List_store(t_Table *tab); + +#define Table_ParseHeader(header, ...) \ + Table_ParseHeader_backend(header,__VA_ARGS__,NULL); + +char **Table_ParseHeader_backend(char *header, ...); +FILE *Open_File(char *name, const char *Mode, char *path); + + +/* private functions */ +void Table_Free(t_Table *Table); +long Table_Read_Handle(t_Table *Table, FILE *fid, long block_number, long max_lines, char *name); +static void Table_Stat(t_Table *Table); +#pragma acc routine +double Table_Interp1d(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp1d_nearest(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp2d(double x, double y, double x1, double y1, double x2, double y2, +double z11, double z12, double z21, double z22); + + +#endif + +/* end of read_table-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/read_table-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Release: McStas CVS_090504 +* Version: $Revision$ +* +* This file is to be imported by components that may read data from table files +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "read_table-lib" +* +*******************************************************************************/ + +#ifndef READ_TABLE_LIB_H +#include "read_table-lib.h" +#endif + +#ifndef READ_TABLE_LIB_C +#define READ_TABLE_LIB_C "$Revision$" + + +/******************************************************************************* + * void *Table_File_List_Handler(action, item, item_modifier) + * ACTION: handle file entries in the read_table-lib file list. If a file is read - it is supposed to be + * stored in a list such that we can avoid reading the same file many times. + * input action: FIND, STORE, GC. check if file exists in the list, store an item in the list, or check if it can be garbage collected. + * input item: depends on the action. + * FIND) item is a filename, and item_modifier is the block number + * STORE) item is the Table to store - item_modifier is ignored + * GC) item is the Table to check. If it has a ref_count >1 then this is simply decremented. + * return depends on the action + * FIND) return a reference to a table+ref_count item if found - NULL otherwise. I.e. NULL means the file has not been read before and must be read again. + * STORE) return NULL always + * GC) return NULL if no garbage collection is needed, return an adress to the t_Table which should be garbage collected. 0x1 is returned if + * the item is not found in the list +*******************************************************************************/ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier){ + + /* logic here is Read_Table should include a call to FIND. If found the return value should just be used as + * if the table had been read from disk. If not found then read the table and STORE. + * Table_Free should include a call to GC. If this returns non-NULL then we should proceed with freeing the memory + * associated with the table item - otherwise only decrement the reference counter since there are more references + * that may need it.*/ + + static t_Read_table_file_item read_table_file_list[1024]; + static int read_table_file_count=0; + + t_Read_table_file_item *tr; + switch(action){ + case FIND: + /*interpret data item as a filename, if it is found return a pointer to the table and increment refcount. + * if not found return the item itself*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + int i=*((int*) item_modifier); + int j=*( ((int*) item_modifier)+1); + if ( !strcmp(tr->table_ref->filename,(char *) item) && + tr->table_ref->block_number==i && tr->table_ref->begin==j ){ + tr->ref_count++; + return (void *) tr; + } + tr++; + } + return NULL; + case STORE: + /*find an available slot and store references to table there*/ + tr=&(read_table_file_list[read_table_file_count++]); + tr->table_ref = ((t_Table *) item); + tr->ref_count++; + return NULL; + case GC: + /* Should this item be garbage collected (freed) - if so scratch the entry and return the address of the item - + * else decrement ref_count and return NULL. + * A non-NULL return expects the item to actually be freed afterwards.*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + if ( tr->table_ref->data ==((t_Table *)item)->data && + tr->table_ref->block_number == ((t_Table *)item)->block_number){ + /*matching item found*/ + if (tr->ref_count>1){ + /*the item is found and no garbage collection needed*/ + tr->ref_count--; + return NULL; + }else{ + /* The item is found and the reference counter is 1. + * This means we should garbage collect. Move remaining list items up one slot, + * and return the table for garbage collection by caller*/ + while (tr->table_ref!=NULL){ + *tr=*(tr+1); + tr++; + } + read_table_file_count--; + return (t_Table *) item; + } + } + tr++; + } + /* item not found, and so should be garbage collected. This could be the case if freeing a + * Table that has been constructed from code - not read from file. Return 0x1 to flag it for + * collection.*/ + return (void *) 0x1 ; + } + /* If we arrive here, nothing worked, return NULL */ + return NULL; +} + +/* Access functions to the handler*/ + +/******************************************** + * t_Table *Table_File_List_find(char *name, int block, int offset) + * input name: filename to search for in the file list + * input block: data block in the file as each file may contain more than 1 data block. + * return a ref. to a table if it is found (you may use this pointer and skip reading the file), NULL otherwise (i.e. go ahead and read the file) +*********************************************/ +t_Table *Table_File_List_find(char *name, int block, int offset){ + int vars[2]={block,offset}; + t_Read_table_file_item *item = Table_File_List_Handler(FIND,name, vars); + if (item == NULL){ + return NULL; + }else{ + return item->table_ref; + } +} +/******************************************** + * int Table_File_List_gc(t_Table *tab) + * input tab: the table to check for references. + * return 0: no garbage collection needed + * 1: Table's data and header (at least) should be freed. +*********************************************/ +int Table_File_List_gc(t_Table *tab){ + void *rval=Table_File_List_Handler(GC,tab,0); + if (rval==NULL) return 0; + else return 1; +} + + +/***************************************************************************** + * void *Table_File_List_store(t_Table *tab) + * input tab: pointer to table to store. + * return None. +*******************************************************************************/ +void *Table_File_List_store(t_Table *tab){ + return Table_File_List_Handler(STORE,tab,0); +} + + +/******************************************************************************* +* FILE *Open_File(char *name, char *Mode, char *path) +* ACTION: search for a file and open it. Optionally return the opened path. +* input name: file name from which table should be extracted +* mode: "r", "w", "a" or any valid fopen mode +* path: NULL or a pointer to at least 1024 allocated chars +* return initialized file handle or NULL in case of error +*******************************************************************************/ + + FILE *Open_File(char *File, const char *Mode, char *Path) + { + char path[1024]; + FILE *hfile = NULL; + + if (!File || File[0]=='\0') return(NULL); + if (!strcmp(File,"NULL") || !strcmp(File,"0")) return(NULL); + + /* search in current or full path */ + strncpy(path, File, 1024); + hfile = fopen(path, Mode); + if(!hfile) + { + char dir[1024]; + + if (!hfile && instrument_source[0] != '\0' && strlen(instrument_source)) /* search in instrument source location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_source, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_source; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_source, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile && instrument_exe[0] != '\0' && strlen(instrument_exe)) /* search in PWD instrument executable location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_exe, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_exe; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_exe, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile) /* search in HOME or . */ + { + strcpy(dir, getenv("HOME") ? getenv("HOME") : "."); + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MCSTAS/data */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "data", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MVCSTAS/contrib */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "contrib", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if(!hfile) + { + // fprintf(stderr, "Warning: Could not open input file '%s' (Open_File)\n", File); + return (NULL); + } + } + if (Path) strncpy(Path, path, 1024); + return(hfile); + } /* end Open_File */ + +/******************************************************************************* +* long Read_Table(t_Table *Table, char *name, int block_number) +* ACTION: read a single Table from a text file +* input Table: pointer to a t_Table structure +* name: file name from which table should be extracted +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* File is opened, read and closed +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebinned with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read(t_Table *Table, char *File, long block_number) + { /* reads all or a single data block from 'file' and returns a Table structure */ + return(Table_Read_Offset(Table, File, block_number, NULL, 0)); + } /* end Table_Read */ + +/******************************************************************************* +* long Table_Read_Offset(t_Table *Table, char *name, int block_number, long *offset +* long max_rows) +* ACTION: read a single Table from a text file, starting at offset +* Same as Table_Read(..) except: +* input offset: pointer to an offset (*offset should be 0 at start) +* max_rows: max number of data rows to read from file (0 means all) +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset(t_Table *Table, char *File, + long block_number, long *offset, + long max_rows) + { /* reads all/a data block in 'file' and returns a Table structure */ + FILE *hfile; + long nelements=0; + long begin=0; + long filesize=0; + char name[1024]; + char path[1024]; + struct stat stfile; + + /*Need to be able to store the pointer*/ + if (!Table) return(-1); + + /*TK: Valgrind flags it as usage of uninitialised variable: */ + Table->quiet = 0; + + //if (offset && *offset) snprintf(name, 1024, "%s@%li", File, *offset); + //else + strncpy(name, File, 1024); + if(offset && *offset){ + begin=*offset; + } + /* Check if the table has already been read from file. + * If so just reuse the table, if not (this is flagged by returning NULL + * set up a new table and read the data into it */ + t_Table *tab_p= Table_File_List_find(name,block_number,begin); + if ( tab_p!=NULL ){ + /*table was found in the Table_File_List*/ + *Table=*tab_p; + MPI_MASTER( + if(Table->quiet<1) + printf("Reusing input file '%s' (Table_Read_Offset)\n", name); + ); + return Table->rows*Table->columns; + } + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read_Offset)\n", path); + ); + } + + /* read file state */ + stat(path,&stfile); filesize = stfile.st_size; + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + + Table_Init(Table, 0, 0); + + /* read file content and set the Table */ + nelements = Table_Read_Handle(Table, hfile, block_number, max_rows, name); + Table->begin = begin; + Table->end = ftell(hfile); + Table->filesize = (filesize>0 ? filesize : 0); + Table_Stat(Table); + + Table_File_List_store(Table); + + if (offset) *offset=Table->end; + fclose(hfile); + return(nelements); + + } /* end Table_Read_Offset */ + +/******************************************************************************* +* long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, +* long *offset, long rows, long columns) +* ACTION: read a single Table from a binary file, starting at offset +* Same as Table_Read_Offset(..) except that it handles binary files. +* input type: may be "float"/NULL or "double" +* offset: pointer to an offset (*offset should be 0 at start) +* rows : number of rows (0 means read all) +* columns: number of columns +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, + long *offset, long rows, long columns) + { /* reads all/a data block in binary 'file' and returns a Table structure */ + long nelements, sizeofelement; + long filesize; + FILE *hfile; + char path[1024]; + struct stat stfile; + double *data = NULL; + double *datatmp = NULL; + long i; + long begin; + + if (!Table) return(-1); + + Table_Init(Table, 0, 0); + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read, Binary)\n", path); + ); + } + + /* read file state */ + stat(File,&stfile); + filesize = stfile.st_size; + Table->filesize=filesize; + + /* read file content */ + if (type && !strcmp(type,"double")) sizeofelement = sizeof(double); + else sizeofelement = sizeof(float); + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + if (rows && filesize > sizeofelement*columns*rows) + nelements = columns*rows; + else nelements = (long)(filesize/sizeofelement); + if (!nelements || filesize <= *offset) return(0); + data = (double*)malloc(nelements*sizeofelement); + if (!data) { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: allocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } + nelements = fread(data, sizeofelement, nelements, hfile); + + if (!data || !nelements) + { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: reading %ld elements from %s file '%s' (Table_Read_Offset_Binary)\n", nelements, type, File); + exit(-1); + } + Table->begin = begin; + Table->end = ftell(hfile); + if (offset) *offset=Table->end; + fclose(hfile); + + datatmp = (double*)realloc(data, (double)nelements*sizeofelement); + if (!datatmp) { + free(data); + fprintf(stderr,"Error: reallocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } else { + data = datatmp; + } + /* copy file data into Table */ + if (type && !strcmp(type,"double")) Table->data = data; + else { + float *s; + double *dataf; + s = (float*)data; + dataf = (double*)malloc(sizeof(double)*nelements); + if (!dataf) { + fprintf(stderr, "Could not allocate data block of size %ld\n", nelements); + exit(-1); + } + for (i=0; idata = dataf; + } + strncpy(Table->filename, File, 1024); + Table->rows = nelements/columns; + Table->columns = columns; + Table->array_length = 1; + Table->block_number = 1; + + Table_Stat(Table); + + return(nelements); + } /* end Table_Read_Offset_Binary */ + +/******************************************************************************* +* long Table_Read_Handle(t_Table *Table, FILE *fid, int block_number, long max_rows, char *name) +* ACTION: read a single Table from a text file handle (private) +* input Table:pointer to a t_Table structure +* fid: pointer to FILE handle +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* max_rows: if non 0, only reads that number of lines +* return initialized single Table t_Table structure containing data, header, ... +* modified Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebined with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read_Handle(t_Table *Table, FILE *hfile, + long block_number, long max_rows, char *name) + { /* reads all/a data block from 'file' handle and returns a Table structure */ + double *Data = NULL; + double *Datatmp = NULL; + char *Header = NULL; + char *Headertmp = NULL; + long malloc_size = CHAR_BUF_LENGTH; + long malloc_size_h = 4096; + long Rows = 0, Columns = 0; + long count_in_array = 0; + long count_in_header = 0; + long count_invalid = 0; + long block_Current_index = 0; + char flag_End_row_loop = 0; + + if (!Table) return(-1); + Table_Init(Table, 0, 0); + if (name && name[0]!='\0') strncpy(Table->filename, name, 1024); + + if(!hfile) { + fprintf(stderr, "Error: File handle is NULL (Table_Read_Handle).\n"); + return (-1); + } + Header = (char*) calloc(malloc_size_h, sizeof(char)); + Data = (double*)calloc(malloc_size, sizeof(double)); + if ((Header == NULL) || (Data == NULL)) { + fprintf(stderr, "Error: Could not allocate Table and Header (Table_Read_Handle).\n"); + return (-1); + } + + int flag_In_array = 0; + do { /* while (!flag_End_row_loop) */ + char *line=malloc(1024*CHAR_BUF_LENGTH*sizeof(char)); + long back_pos=0; /* ftell start of line */ + + if (!line) { + fprintf(stderr,"Could not allocate line buffer\n"); + exit(-1); + } + back_pos = ftell(hfile); + if (fgets(line, 1024*CHAR_BUF_LENGTH, hfile) != NULL) { /* analyse line */ + /* first skip blank and tabulation characters */ + int i = strspn(line, " \t"); + + /* handle comments: stored in header */ + if (NULL != strchr("#%;/", line[i])) + { /* line is a comment */ + count_in_header += strlen(line); + if (count_in_header >= malloc_size_h) { + /* if succeed and in array : add (and realloc if necessary) */ + malloc_size_h = count_in_header+4096; + char *Headertmp = (char*)realloc(Header, malloc_size_h*sizeof(char)); + if(!Headertmp) { + free(Header); + fprintf(stderr, "Error: Could not reallocate Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + strncat(Header, line, 4096); + flag_In_array=0; + /* exit line and file if passed desired block */ + if (block_number > 0 && block_number == block_Current_index) { + flag_End_row_loop = 1; + } + + /* Continue with next line */ + continue; + } + if (strstr(line, "***")) + { + count_invalid++; + /* Continue with next line */ + continue; + } + + /* get the number of columns splitting line with strtok */ + char *lexeme; + char flag_End_Line = 0; + long block_Num_Columns = 0; + const char seps[] = " ,;\t\n\r"; + + lexeme = strtok(line, seps); + while (!flag_End_Line) { + if ((lexeme != NULL) && (lexeme[0] != '\0')) { + /* reading line: the token is not empty */ + double X; + int count=1; + /* test if we have 'NaN','Inf' */ + if (!strncasecmp(lexeme,"NaN",3)) + X = 0; + else if (!strncasecmp(lexeme,"Inf",3) || !strncasecmp(lexeme,"+Inf",4)) + X = FLT_MAX; + else if (!strncasecmp(lexeme,"-Inf",4)) + X = -FLT_MAX; + else + count = sscanf(lexeme,"%lg",&X); + if (count == 1) { + /* reading line: the token is a number in the line */ + if (!flag_In_array) { + /* reading num: not already in a block: starts a new data block */ + block_Current_index++; + flag_In_array = 1; + block_Num_Columns= 0; + if (block_number > 0) { + /* initialise a new data block */ + Rows = 0; + count_in_array = 0; + } /* else append */ + } + /* reading num: all blocks or selected block */ + if (flag_In_array && (block_number == 0 || + block_number == block_Current_index)) { + /* starting block: already the desired number of rows ? */ + if (block_Num_Columns == 0 && + max_rows > 0 && Rows >= max_rows) { + flag_End_Line = 1; + flag_End_row_loop = 1; + flag_In_array = 0; + /* reposition to begining of line (ignore line) */ + fseek(hfile, back_pos, SEEK_SET); + } else { /* store into data array */ + if (count_in_array >= malloc_size) { + /* realloc data buffer if necessary */ + malloc_size = count_in_array*1.5; + Datatmp = (double*) realloc(Data, malloc_size*sizeof(double)); + if (Datatmp == NULL) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Handle).\n", + malloc_size*sizeof(double)); + free(Data); + return (-1); + } else { + Data=Datatmp; + } + } + if (0 == block_Num_Columns) Rows++; + Data[count_in_array] = X; + count_in_array++; + block_Num_Columns++; + } + } /* reading num: end if flag_In_array */ + } /* end reading num: end if sscanf lexeme -> numerical */ + else { + /* reading line: the token is not numerical in that line. end block */ + if (block_Current_index == block_number) { + flag_End_Line = 1; + flag_End_row_loop = 1; + } else { + flag_In_array = 0; + flag_End_Line = 1; + } + } + } + else { + /* no more tokens in line */ + flag_End_Line = 1; + if (block_Num_Columns > 0) Columns = block_Num_Columns; + } + + // parse next token + lexeme = strtok(NULL, seps); + + } /* while (!flag_End_Line) */ + } /* end: if fgets */ + else flag_End_row_loop = 1; /* else fgets : end of file */ + free(line); + } while (!flag_End_row_loop); /* end while flag_End_row_loop */ + + Table->block_number = block_number; + Table->array_length = 1; + + // shrink header to actual size (plus terminating 0-byte) + if (count_in_header) { + Headertmp = (char*)realloc(Header, count_in_header*sizeof(char) + 1); + if(!Headertmp) { + fprintf(stderr, "Error: Could not shrink Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + Table->header = Header; + + if (count_in_array*Rows*Columns == 0) + { + Table->rows = 0; + Table->columns = 0; + free(Data); + return (0); + } + if (Rows * Columns != count_in_array) + { + fprintf(stderr, "Warning: Read_Table :%s %s Data has %li values that should be %li x %li\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_in_array, Rows, Columns); + Columns = count_in_array; Rows = 1; + } + if (count_invalid) + { + fprintf(stderr,"Warning: Read_Table :%s %s Data has %li invalid lines (*****). Ignored.\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_invalid); + } + Datatmp = (double*)realloc(Data, count_in_array*sizeof(double)); + if(!Datatmp) { + fprintf(stderr, "Error: Could reallocate Data block to %li doubles (Table_Read_Handle).\n", count_in_array); + free(Data); + return (-1); + } else { + Data = Datatmp; + } + Table->data = Data; + Table->rows = Rows; + Table->columns = Columns; + + return (count_in_array); + + } /* end Table_Read_Handle */ + +/******************************************************************************* +* long Table_Rebin(t_Table *Table) +* ACTION: rebin a single Table, sorting 1st column in ascending order +* input Table: single table containing data. +* The data block is reallocated in this process +* return updated Table with increasing, evenly spaced first column (index 0) +* number of data elements (-1: error, 0:empty data) +*******************************************************************************/ + long Table_Rebin(t_Table *Table) + { + double new_step=0; + long i; + /* performs linear interpolation on X axis (0-th column) */ + + if (!Table) return(-1); + if (!Table->data + || Table->rows*Table->columns == 0 || !Table->step_x) + return(0); + Table_Stat(Table); /* recompute statitstics and minimal step */ + new_step = Table->step_x; /* minimal step in 1st column */ + + if (!(Table->constantstep)) /* not already evenly spaced */ + { + long Length_Table; + double *New_Table; + + Length_Table = ceil(fabs(Table->max_x - Table->min_x)/new_step)+1; + /*return early if the rebinned table will become too large*/ + if (Length_Table > mcread_table_rebin_maxsize){ + fprintf(stderr,"WARNING: (Table_Rebin): Rebinning table from %s would exceed 1M rows. Skipping.\n", Table->filename); + return(Table->rows*Table->columns); + } + New_Table = (double*)malloc(Length_Table*Table->columns*sizeof(double)); + if (!New_Table) { + fprintf(stderr,"Could not allocate New_Table of size %ld x %ld\n", Length_Table, Table->columns); + exit(-1); + } + for (i=0; i < Length_Table; i++) + { + long j; + double X; + X = Table->min_x + i*new_step; + New_Table[i*Table->columns] = X; + for (j=1; j < Table->columns; j++) + New_Table[i*Table->columns+j] + = Table_Value(*Table, X, j); + } /* end for i */ + + Table->rows = Length_Table; + Table->step_x = new_step; + Table->max_x = Table->min_x + (Length_Table-1)*new_step; + /*max might not be the same anymore + * Use Length_Table -1 since the first and laset rows are the limits of the defined interval.*/ + free(Table->data); + Table->data = New_Table; + Table->constantstep=1; + } /* end else (!constantstep) */ + return (Table->rows*Table->columns); + } /* end Table_Rebin */ + +/******************************************************************************* +* double Table_Index(t_Table Table, long i, long j) +* ACTION: read an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* return Value = data[i][j] +* Returns Value from the i-th row, j-th column of Table +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +double Table_Index(t_Table Table, long i, long j) +{ + long AbsIndex; + + if (Table.rows == 1 || Table.columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table.columns*Table.rows - 1); + i = 0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table.rows - 1); + j = MIN(MAX(0, j), Table.columns - 1); + } + + /* handle vectors specifically */ + AbsIndex = i*(Table.columns)+j; + + if (Table.data != NULL) + return (Table.data[AbsIndex]); + else + return 0; +} /* end Table_Index */ + +/******************************************************************************* +* void Table_SetElement(t_Table *Table, long i, long j, double value) +* ACTION: set an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* value = data[i][j] +* Returns 0 in case of error +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ +int Table_SetElement(t_Table *Table, long i, long j, + double value) +{ + long AbsIndex; + + if (Table->rows == 1 || Table->columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table->columns*Table->rows - 1); i=0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table->rows - 1); + j = MIN(MAX(0, j), Table->columns - 1); + } + + AbsIndex = i*(Table->columns)+j; + if (Table->data != NULL) { + Table->data[AbsIndex] = value; + return 1; + } + + return 0; +} /* end Table_SetElement */ + +/******************************************************************************* +* double Table_Value(t_Table Table, double X, long j) +* ACTION: read column [j] of a single Table at row which 1st column is X +* input Table: table containing data. +* X : data value in the first column (index 0) +* j : index of column from which is extracted the Value (0:Columns-1) +* return Value = data[index for X][j] with linear interpolation +* Returns Value from the j-th column of Table corresponding to the +* X value for the 1st column (index 0) +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value(t_Table Table, double X, long j) +{ + long Index = -1; + double X1=0, Y1=0, X2=0, Y2=0; + double ret=0; + + if (X > Table.max_x) return Table_Index(Table,Table.rows-1 ,j); + if (X < Table.min_x) return Table_Index(Table,0 ,j); + + // Use constant-time lookup when possible + if(Table.constantstep) { + Index = (long)floor( + (X - Table.min_x) / (Table.max_x - Table.min_x) * (Table.rows-1)); + X1 = Table_Index(Table,Index-1,0); + X2 = Table_Index(Table,Index ,0); + } + // Use binary search on large, monotonic tables + else if(Table.monotonic && Table.rows > 100) { + long left = Table.min_x; + long right = Table.max_x; + + while (!((X1 <= X) && (X < X2)) && (right - left > 1)) { + Index = (left + right) / 2; + + X1 = Table_Index(Table, Index-1, 0); + X2 = Table_Index(Table, Index, 0); + + if (X < X1) { + right = Index; + } else { + left = Index; + } + } + } + + // Fall back to linear search, if no-one else has set X1, X2 correctly + if (!((X1 <= X) && (X < X2))) { + /* look for index surrounding X in the table -> Index */ + for (Index=1; Index <= Table.rows-1; Index++) { + X1 = Table_Index(Table, Index-1,0); + X2 = Table_Index(Table, Index ,0); + if ((X1 <= X) && (X < X2)) break; + } /* end for Index */ + } + + Y1 = Table_Index(Table,Index-1, j); + Y2 = Table_Index(Table,Index , j); + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) { + ret = Table_Interp1d(X, X1,Y1, X2,Y2); + } + else if (!strcmp(Table.method,"nearest")) { + ret = Table_Interp1d_nearest(X, X1,Y1, X2,Y2); + } + +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + + return ret; +} /* end Table_Value */ + +/******************************************************************************* +* double Table_Value2d(t_Table Table, double X, double Y) +* ACTION: read element [X,Y] of a matrix Table +* input Table: table containing data. +* X : row index, may be non integer +* Y : column index, may be non integer +* return Value = data[index X][index Y] with bi-linear interpolation +* Returns Value for the indices [X,Y] +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value2d(t_Table Table, double X, double Y) + { + long x1,x2,y1,y2; + double z11,z12,z21,z22; + double ret=0; + + x1 = (long)floor(X); + y1 = (long)floor(Y); + + if (x1 > Table.rows-1 || x1 < 0) { + x2 = x1; + } else { + x2 = x1 + 1; + } + + if (y1 > Table.columns-1 || y1 < 0) { + y2 = y1; + } else { + y2 = y1 + 1; + } + + z11 = Table_Index(Table, x1, y1); + + if (y2 != y1) z12=Table_Index(Table, x1, y2); else z12 = z11; + if (x2 != x1) z21=Table_Index(Table, x2, y1); else z21 = z11; + if (y2 != y1) z22=Table_Index(Table, x2, y2); else z22 = z21; + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) + ret = Table_Interp2d(X,Y, x1,y1,x2,y2, z11,z12,z21,z22); +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + else { + if (fabs(X-x1) < fabs(X-x2)) { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z11; else ret = z12; + } else { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z21; else ret = z22; + } + } + return ret; + } /* end Table_Value2d */ + + +/******************************************************************************* +* void Table_Free(t_Table *Table) +* ACTION: free a single Table. First Call Table_File_list_gc. If this returns +* non-zero it means there are more refernces to the table, and so the table +* should not bee freed. +* return: empty Table +*******************************************************************************/ + void Table_Free(t_Table *Table) + { + if( !Table_File_List_gc(Table) ){ + return; + } + if (!Table) return; + if (Table->data != NULL) free(Table->data); + if (Table->header != NULL) free(Table->header); + Table->data = NULL; + Table->header = NULL; + } /* end Table_Free */ + +/****************************************************************************** +* void Table_Info(t_Table Table) +* ACTION: print informations about a single Table +*******************************************************************************/ + long Table_Info(t_Table Table) + { + char buffer[256]; + long ret=0; + + if (!Table.block_number) strcpy(buffer, "catenated"); + else sprintf(buffer, "block %li", Table.block_number); + printf("Table from file '%s' (%s)", + Table.filename[0] != '\0' ? Table.filename : "", buffer); + if ((Table.data != NULL) && (Table.rows*Table.columns)) + { + printf(" is %li x %li ", Table.rows, Table.columns); + if (Table.rows*Table.columns > 1) + printf("(x=%g:%g)", Table.min_x, Table.max_x); + else printf("(x=%g) ", Table.min_x); + ret = Table.rows*Table.columns; + if (Table.monotonic) printf(", monotonic"); + if (Table.constantstep) printf(", constant step"); + printf(". interpolation: %s\n", Table.method); + } + else printf(" is empty.\n"); + + if (Table.header && strlen(Table.header)) { + char *header; + int i; + header = malloc(80); + if (!header) return(ret); + for (i=0; i<80; header[i++]=0); + strncpy(header, Table.header, 75); + if (strlen(Table.header) > 75) { + strcat( header, " ..."); + } + for (i=0; iheader = NULL; + Table->filename[0]= '\0'; + Table->filesize= 0; + Table->min_x = 0; + Table->max_x = 0; + Table->step_x = 0; + Table->block_number = 0; + Table->array_length = 0; + Table->monotonic = 0; + Table->constantstep = 0; + Table->begin = 0; + Table->end = 0; + strcpy(Table->method,"linear"); + + if (rows*columns >= 1) { + data = (double*)malloc(rows*columns*sizeof(double)); + if (data) for (i=0; i < rows*columns; data[i++]=0); + else { + if(Table->quiet<2) + fprintf(stderr,"Error: allocating %ld double elements." + "Too big (Table_Init).\n", rows*columns); + rows = columns = 0; + } + } + Table->rows = (rows >= 1 ? rows : 0); + Table->columns = (columns >= 1 ? columns : 0); + Table->data = data; + return(Table->rows*Table->columns); +} /* end Table_Init */ + +/****************************************************************************** +* long Table_Write(t_Table Table, char *file, x1,x2, y1,y2) +* ACTION: write a Table to disk (ascii). +* when x1=x2=0 or y1=y2=0, the table default limits are used. +* return: 0=all is fine, non-0: error +*******************************************************************************/ +MCDETECTOR Table_Write(t_Table Table, char *file, char *xl, char *yl, + double x1, double x2, double y1, double y2) +{ + MCDETECTOR detector; + + if ((Table.data == NULL) && (Table.rows*Table.columns)) { + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + return(detector); /* Table is empty - nothing to do */ + } + if (!x1 && !x2) { + x1 = Table.min_x; + x2 = Table.max_x; + } + if (!y1 && !y2) { + y1 = 1; + y2 = Table.columns; + } + + /* transfer content of the Table into a 2D detector */ + Coords coords = { 0, 0, 0}; + Rotation rot; + rot_set_rotation(rot, 0, 0, 0); + + if (Table.rows == 1 || Table.columns == 1) { + detector = mcdetector_out_1D(Table.filename, + xl ? xl : "", yl ? yl : "", + "x", x1, x2, + Table.rows * Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } else { + detector = mcdetector_out_2D(Table.filename, + xl ? xl : "", yl ? yl : "", + x1, x2, y1, y2, + Table.rows, Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } + return(detector); +} + +/****************************************************************************** +* void Table_Stat(t_Table *Table) +* ACTION: computes min/max/mean step of 1st column for a single table (private) +* return: updated Table +*******************************************************************************/ + static void Table_Stat(t_Table *Table) + { + long i; + double max_x, min_x; + double row=1; + char monotonic=1; + char constantstep=1; + double step=0; + long n; + + if (!Table) return; + if (!Table->rows || !Table->columns) return; + if (Table->rows == 1) row=0; // single row + max_x = -FLT_MAX; + min_x = FLT_MAX; + n = (row ? Table->rows : Table->columns); + /* get min and max of first column/vector */ + for (i=0; i < n; i++) + { + double X; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + if (X < min_x) min_x = X; + if (X > max_x) max_x = X; + } /* for */ + + /* test for monotonicity and constant step if the table is an XY or single vector */ + if (n > 1) { + /* mean step */ + step = (max_x - min_x)/(n-1); + /* now test if table is monotonic on first column, and get minimal step size */ + for (i=0; i < n-1; i++) { + double X, diff;; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if (diff && fabs(diff) < fabs(step)) step = diff; + /* change sign ? */ + if ((max_x - min_x)*diff < 0 && monotonic) + monotonic = 0; + } /* end for */ + + /* now test if steps are constant within READ_TABLE_STEPTOL */ + if(!step){ + /*means there's a disconitnuity -> not constantstep*/ + constantstep=0; + }else if (monotonic) { + for (i=0; i < n-1; i++) { + double X, diff; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if ( fabs(step)*(1+READ_TABLE_STEPTOL) < fabs(diff) || + fabs(diff) < fabs(step)*(1-READ_TABLE_STEPTOL) ) + { constantstep = 0; break; } + } + } + + } + Table->step_x= step; + Table->max_x = max_x; + Table->min_x = min_x; + Table->monotonic = monotonic; + Table->constantstep = constantstep; + } /* end Table_Stat */ + +/****************************************************************************** +* t_Table *Table_Read_Array(char *File, long *blocks) +* ACTION: read as many data blocks as available, iteratively from file +* return: initialized t_Table array, last element is an empty Table. +* the number of extracted blocks in non NULL pointer *blocks +*******************************************************************************/ + t_Table *Table_Read_Array(char *File, long *blocks) + { + t_Table *Table_Array = NULL; + t_Table *Table_Arraytmp = NULL; + long offset=0; + long block_number=0; + long allocated=256; + long nelements=1; + + /* first allocate an initial empty t_Table array */ + Table_Array = (t_Table *)malloc(allocated*sizeof(t_Table)); + if (!Table_Array) { + fprintf(stderr, "Error: Can not allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + *blocks = 0; + return (NULL); + } + + while (nelements > 0) + { + t_Table Table; + + /* if ok, set t_Table block number else exit loop */ + block_number++; + Table.block_number = block_number; + + /* access file at offset and get following block. Block number is from the set offset + * hence the hardcoded 1 - i.e. the next block counted from offset.*/ + nelements = Table_Read_Offset(&Table, File, 1, &offset,0); + /*if the block is empty - don't store it*/ + if (nelements>0){ + /* if t_Table array is not long enough, expand and realocate */ + if (block_number >= allocated-1) { + allocated += 256; + Table_Arraytmp = (t_Table *)realloc(Table_Array, + allocated*sizeof(t_Table)); + if (!Table_Arraytmp) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + free(Table_Array); + *blocks = 0; + return (NULL); + } else { + Table_Array = Table_Arraytmp; + } + } + /* store it into t_Table array */ + //snprintf(Table.filename, 1024, "%s#%li", File, block_number-1); + Table_Array[block_number-1] = Table; + } + /* continues until we find an empty block */ + } + /* send back number of extracted blocks */ + if (blocks) *blocks = block_number-1; + + /* now store total number of elements in Table array */ + for (offset=0; offset < block_number; + Table_Array[offset++].array_length = block_number-1); + + return(Table_Array); + } /* end Table_Read_Array */ +/******************************************************************************* +* void Table_Free_Array(t_Table *Table) +* ACTION: free a Table array +*******************************************************************************/ + void Table_Free_Array(t_Table *Table) + { + long index; + if (!Table) return; + for (index=0;index < Table[0].array_length; index++){ + Table_Free(&Table[index]); + } + free(Table); + } /* end Table_Free_Array */ + +/****************************************************************************** +* long Table_Info_Array(t_Table *Table) +* ACTION: print informations about a Table array +* return: number of elements in the Table array +*******************************************************************************/ + long Table_Info_Array(t_Table *Table) + { + long index=0; + + if (!Table) return(-1); + while (index < Table[index].array_length + && (Table[index].data || Table[index].header) + && (Table[index].rows*Table[index].columns) ) { + Table_Info(Table[index]); + index++; + } + printf("This Table array contains %li elements\n", index); + return(index); + } /* end Table_Info_Array */ + +/****************************************************************************** +* char **Table_ParseHeader(char *header, symbol1, symbol2, ..., NULL) +* ACTION: search for char* symbols in header and return their value or NULL +* the search is not case sensitive. +* Last argument MUST be NULL +* return: array of char* with line following each symbol, or NULL if not found +*******************************************************************************/ +#ifndef MyNL_ARGMAX +#define MyNL_ARGMAX 50 +#endif + +char **Table_ParseHeader_backend(char *header, ...){ + va_list ap; + char exit_flag=0; + int counter =0; + char **ret =NULL; + if (!header || header[0]=='\0') return(NULL); + + ret = (char**)calloc(MyNL_ARGMAX, sizeof(char*)); + if (!ret) { + printf("Table_ParseHeader: Cannot allocate %i values array for Parser (Table_ParseHeader).\n", + MyNL_ARGMAX); + return(NULL); + } + for (counter=0; counter < MyNL_ARGMAX; ret[counter++] = NULL); + counter=0; + + va_start(ap, header); + while(!exit_flag && counter < MyNL_ARGMAX-1) + { + char *arg_char=NULL; + char *pos =NULL; + /* get variable argument value as a char */ + arg_char = va_arg(ap, char *); + if (!arg_char || arg_char[0]=='\0'){ + exit_flag = 1; break; + } + /* search for the symbol in the header */ + pos = (char*)strcasestr(header, arg_char); + if (pos) { + char *eol_pos; + eol_pos = strchr(pos+strlen(arg_char), '\n'); + if (!eol_pos) + eol_pos = strchr(pos+strlen(arg_char), '\r'); + if (!eol_pos) + eol_pos = pos+strlen(pos)-1; + ret[counter] = (char*)malloc(eol_pos - pos); + if (!ret[counter]) { + printf("Table_ParseHeader: Cannot allocate value[%i] array for Parser searching for %s (Table_ParseHeader).\n", + counter, arg_char); + exit_flag = 1; break; + } + strncpy(ret[counter], pos+strlen(arg_char), eol_pos - pos - strlen(arg_char)); + ret[counter][eol_pos - pos - strlen(arg_char)]='\0'; + } + counter++; + } + va_end(ap); + return(ret); +} /* Table_ParseHeader */ + +/****************************************************************************** +* double Table_Interp1d(x, x1, y1, x2, y2) +* ACTION: interpolates linearly at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d(double x, + double x1, double y1, + double x2, double y2) +{ + double slope; + if (x2 == x1) return (y1+y2)/2; + if (y1 == y2) return y1; + slope = (y2 - y1)/(x2 - x1); + return y1+slope*(x - x1); +} /* Table_Interp1d */ + +/****************************************************************************** +* double Table_Interp1d_nearest(x, x1, y1, x2, y2) +* ACTION: table lookup with nearest method at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d_nearest(double x, + double x1, double y1, + double x2, double y2) +{ + if (fabs(x-x1) < fabs(x-x2)) return (y1); + else return(y2); +} /* Table_Interp1d_nearest */ + +/****************************************************************************** +* double Table_Interp2d(x,y, x1,y1, x2,y2, z11,z12,z21,z22) +* ACTION: interpolates bi-linearly at (x,y) between z1=f(x1,y1) and z2=f(x2,y2) +* return: z=f(x,y) value +* x,y | x1 x2 +* ---------------- +* y1 | z11 z21 +* y2 | z12 z22 +*******************************************************************************/ +double Table_Interp2d(double x, double y, + double x1, double y1, + double x2, double y2, + double z11, double z12, double z21, double z22) +{ + double ratio_x, ratio_y; + if (x2 == x1) return Table_Interp1d(y, y1,z11, y2,z12); + if (y1 == y2) return Table_Interp1d(x, x1,z11, x2,z21); + + ratio_y = (y - y1)/(y2 - y1); + ratio_x = (x - x1)/(x2 - x1); + return (1-ratio_x)*(1-ratio_y)*z11 + ratio_x*(1-ratio_y)*z21 + + ratio_x*ratio_y*z22 + (1-ratio_x)*ratio_y*z12; +} /* Table_Interp2d */ + +/* end of read_table-lib.c */ +#endif // READ_TABLE_LIB_C + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff.h +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Release: +* Version: +* +* Object File Format intersection header for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format: +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#define INTEROFF_LIB_H "$Revision$" + +#ifndef OFF_EPSILON +#define OFF_EPSILON 1e-13 +#endif + +#ifndef OFF_INTERSECT_MAX +#ifdef OPENACC +#define OFF_INTERSECT_MAX 100 +#else +#define OFF_INTERSECT_MAX 1024 +#endif +#endif + +//#include + +#define N_VERTEX_DISPLAYED 200000 + +typedef struct intersection { + MCNUM time; //time of the intersection + Coords v; //intersection point + Coords normal; //normal vector of the surface intersected + short in_out; //1 if the ray enters the volume, -1 otherwise + short edge; //1 if the intersection is on the boundary of the polygon, and error is possible + unsigned long index; // index of the face +} intersection; + +typedef struct polygon { + MCNUM* p; //vertices of the polygon in adjacent order, this way : x1 | y1 | z1 | x2 | y2 | z2 ... + int npol; //number of vertices + #pragma acc shape(p[0:npol]) init_needed(npol) + Coords normal; + double D; +} polygon; + +typedef struct off_struct { + long vtxSize; + long polySize; + long faceSize; + Coords* vtxArray; + #pragma acc shape(vtxArray[0:vtxSize]) init_needed(vtxSize) + Coords* normalArray; + #pragma acc shape(vtxArray[0:faceSize]) init_needed(faceSize) + unsigned long* faceArray; + #pragma acc shape(vtxArray[0:faceSize][0:polySize]) init_needed(faceSize,polySize) + double* DArray; + #pragma acc shape(vtxArray[0:polySize]) init_needed(polySize) + char *filename; + int mantidflag; + long mantidoffset; + intersection intersects[OFF_INTERSECT_MAX]; // After a call to off_intersect_all contains the list of intersections. + int nextintersect; // 'Next' intersection (first t>0) solution after call to off_intersect_all + int numintersect; // Number of intersections after call to off_intersect_all +} off_struct; + +/******************************************************************************* +* long off_init( char *offfile, double xwidth, double yheight, double zdepth, off_struct* data) +* ACTION: read an OFF file, optionally center object and rescale, initialize OFF data structure +* INPUT: 'offfile' OFF file to read +* 'xwidth,yheight,zdepth' if given as non-zero, apply bounding box. +* Specifying only one of these will also use the same ratio on all axes +* 'notcenter' center the object to the (0,0,0) position in local frame when set to zero +* RETURN: number of polyhedra and 'data' OFF structure +*******************************************************************************/ +long off_init( char *offfile, double xwidth, double yheight, double zdepth, + int notcenter, off_struct* data); + +/******************************************************************************* +* int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +* data is the full OFF structure, including a list intersection type +*******************************************************************************/ +#pragma acc routine +int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ); + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ); + +/***************************************************************************** +* int off_intersectx(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ); + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED points from the object +*******************************************************************************/ +void off_display(off_struct); + +/******************************************************************************* +void p_to_quadratic(double eq[], Coords acc, + Coords pos, Coords vel, + double* teq) +* ACTION: define the quadratic for the intersection of a parabola with a plane +* INPUT: 'eq' plane equation +* 'acc' acceleration vector +* 'vel' velocity of the particle +* 'pos' position of the particle +* equation of plane A * x + B * y + C * z - D = 0 +* eq[0] = (C*az)/2+(B*ay)/2+(A*ax)/2 +* eq[1] = C*vz+B*vy+A*vx +* eq[2] = C*z0+B*y0+A*x0-D +* RETURN: equation of parabola: teq(0) * t^2 + teq(1) * t + teq(2) +*******************************************************************************/ +void p_to_quadratic(Coords norm, MCNUM d, Coords acc, Coords pos, Coords vel, + double* teq); + +/******************************************************************************* +int quadraticSolve(double eq[], double* x1, double* x2); +* ACTION: solves the quadratic for the roots x1 and x2 +* eq[0] * t^2 + eq[1] * t + eq[2] = 0 +* INPUT: 'eq' the coefficients of the parabola +* RETURN: roots x1 and x2 and the number of solutions +*******************************************************************************/ +int quadraticSolve(double* eq, double* x1, double* x2); + +#endif + +/* end of interoff-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff-lib.c +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Origin: ILL +* Release: $Revision$ +* Version: McStas X.Y +* +* Object File Format intersection library for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format (it supports comments): +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#include "interoff-lib.h" +#endif + +#ifndef INTEROFF_LIB_C +#define INTEROFF_LIB_C "$Revision$" + +#ifdef OPENACC // If on GPU map fprintf to printf +#define fprintf(stderr,...) printf(__VA_ARGS__) +#endif + +#pragma acc routine +double off_F(double x, double y,double z,double A,double B,double C,double D) { + return ( A*x + B*y + C*z + D ); +} + +#pragma acc routine +char off_sign(double a) { + if (a<0) return(-1); + else if (a==0) return(0); + else return(1); +} + +// off_normal ****************************************************************** +//gives the normal vector of p +#pragma acc routine +void off_normal(Coords* n, polygon p) +{ + //using Newell method + int i=0,j=0; + n->x=0;n->y=0;n->z=0; + for (i = 0, j = p.npol-1; i < p.npol; j = i++) + { + MCNUM x1=p.p[3*i], + y1=p.p[3*i+1], + z1=p.p[3*i+2]; + MCNUM x2=p.p[3*j], + y2=p.p[3*j+1], + z2=p.p[3*j+2]; + // n is the cross product of v1*v2 + n->x += (y1 - y2) * (z1 + z2); + n->y += (z1 - z2) * (x1 + x2); + n->z += (x1 - x2) * (y1 + y2); + } +} /* off_normal */ + +// off_pnpoly ****************************************************************** +//based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html +//return 0 if the vertex is out +// 1 if it is in +// -1 if on the boundary +#pragma acc routine +int off_pnpoly(polygon p, Coords v) +{ + int i=0, c = 0; + MCNUM minx=FLT_MAX,maxx=-FLT_MAX,miny=FLT_MAX,maxy=-FLT_MAX,minz=FLT_MAX,maxz=-FLT_MAX; + MCNUM areax=0,areay=0,areaz=0; + + int pol2dx=0,pol2dy=1; //2d restriction of the poly + MCNUM x=v.x,y=v.y; + + /*areax: projected area with x-scratched = |v1_yz x v2_yz|, where v1=(x1-x0,0,z1-z0) & v2=(x2-x0,0,z2-z0).*/ + /* In principle, if polygon is triangle area should be scaled by 1/2, but this is irrelevant for finding the maximum area.*/ + /* Similarly for y and z scratched.*/ + areax=coords_len(coords_xp( + coords_set(0,p.p[3*1+1]-p.p[0+1],p.p[3*1+2]-p.p[0+2]), + coords_set(0,p.p[3*2+1]-p.p[0+1],p.p[3*2+2]-p.p[0+2]))); + areay=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],0,p.p[3*1+2]-p.p[0+2]), + coords_set(p.p[3*2+0]-p.p[0+0],0,p.p[3*2+2]-p.p[0+2]))); + areaz=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],p.p[3*1+1]-p.p[0+1],0), + coords_set(p.p[3*2+0]-p.p[0+0],p.p[3*2+1]-p.p[0+1],0))); + + if(areaztime = inter->edge = inter->in_out=0; + inter->v = inter->normal = coords_set(0,0,1); + + if (fabs(ndir) < OFF_EPSILON) // ray is parallel to polygon plane + { + if (nw0 == 0) // ray lies in polygon plane (infinite number of solution) + return 0; + else return 0; // ray disjoint from plane (no solution) + } + + // get intersect point of ray with polygon plane + inter->time = nw0 / ndir; //parametric value the point on line (a,b) + + inter->v = coords_set(a.x + inter->time * dir.x,// intersect point of ray and plane + a.y + inter->time * dir.y, + a.z + inter->time * dir.z); + + int res=off_pnpoly(p,inter->v); + + inter->edge=(res==-1); + if (ndir<0) + inter->in_out=1; //the negative dot product means we enter the surface + else + inter->in_out=-1; + + inter->normal=p.normal; + + return res; //true if the intersection point lies inside the poly +} /* off_intersectPoly */ + + +// off_getBlocksIndex ********************************************************** +/*reads the indexes at the beginning of the off file as this : +line 1 OFF +line 2 nbVertex nbFaces nbEdges +*/ +FILE *off_getBlocksIndex(char* filename, long* vtxSize, long* polySize ) +{ + FILE* f = Open_File(filename,"r", NULL); /* from read_table-lib: FILE *Open_File(char *name, char *Mode, char *path) */ + if (!f) return (f); + + char line[CHAR_BUF_LENGTH]; + char *ret=0; + *vtxSize = *polySize = 0; + + /* **************** start to read the file header */ + /* OFF file: + 'OFF' or '3' + */ + + ret=fgets(line,CHAR_BUF_LENGTH , f);// line 1 = "OFF" + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read 1st line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (strlen(line)>5) + { + fprintf(stderr,"Error: First line in %s is too long (=%lu). Possibly the line is not terminated by '\\n'.\n" + " The first line is required to be exactly 'OFF', '3' or 'ply'.\n", + filename,(long unsigned)strlen(line)); + fclose(f); + return(NULL); + } + + if (strncmp(line,"OFF",3) && strncmp(line,"3",1) && strncmp(line,"ply",1)) + { + fprintf(stderr, "Error: %s is probably not an OFF, NOFF or PLY file (interoff/off_getBlocksIndex).\n" + " Requires first line to be 'OFF', '3' or 'ply'.\n",filename); + fclose(f); + return(NULL); + } + + if (!strncmp(line,"OFF",3) || !strncmp(line,"3",1)) { + do /* OFF file: skip # comments which may be there */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + } while (line[0]=='#'); + //line = nblines of vertex,faces and edges arrays + sscanf(line,"%lu %lu",vtxSize,polySize); + } else { + do /* PLY file: read all lines until find 'end_header' + and locate 'element faces' and 'element vertex' */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (!strncmp(line,"element face",12)) + sscanf(line,"element face %lu",polySize); + else if (!strncmp(line,"element vertex",14)) + sscanf(line,"element vertex %lu",vtxSize); + else if (!strncmp(line,"format binary",13)) + exit(fprintf(stderr, + "Error: Can not read binary PLY file %s, only 'format ascii' (interoff/off_getBlocksIndex)\n%s\n", + filename, line)); + } while (strncmp(line,"end_header",10)); + } + + /* The FILE is left opened ready to read 'vtxSize' vertices (vtxSize *3 numbers) + and then polySize polygons (rows) */ + + return(f); +} /* off_getBlocksIndex */ + +// off_init_planes ************************************************************* +//gives the equations of 2 perpandicular planes of [ab] +#pragma acc routine +void off_init_planes(Coords a, Coords b, + MCNUM* A1, MCNUM* C1, MCNUM* D1, MCNUM *A2, MCNUM* B2, MCNUM* C2, MCNUM* D2) +{ + //direction vector of [a b] + Coords dir={b.x-a.x, b.y-a.y, b.z-a.z}; + + //the plane parallel to the 'y' is computed with the normal vector of the projection of [ab] on plane 'xz' + *A1= dir.z; + *C1=-dir.x; + if(*A1!=0 || *C1!=0) + *D1=-(a.x)*(*A1)-(a.z)*(*C1); + else + { + //the plane does not support the vector, take the one parallel to 'z'' + *A1=1; + //B1=dir.x=0 + *D1=-(a.x); + } + //the plane parallel to the 'x' is computed with the normal vector of the projection of [ab] on plane 'yz' + *B2= dir.z; + *C2=-dir.y; + *A2= 0; + if (*B2==0 && *C2==0) + { + //the plane does not support the vector, take the one parallel to 'z' + *B2=1; + //B1=dir.x=0 + *D2=-(a.y); + } + else { + if (dir.z==0) + { + //the planes are the same, take the one parallel to 'z' + *A2= dir.y; + *B2=-dir.x; + *D2=-(a.x)*(*A2)-(a.y)*(*B2); + } + else + *D2=-(a.y)**B2-(a.z)**C2; + } +} /* off_init_planes */ + +// off_clip_3D_mod ************************************************************* +#pragma acc routine +int off_clip_3D_mod(intersection* t, Coords a, Coords b, + Coords* vtxArray, unsigned long vtxSize, unsigned long* faceArray, + unsigned long faceSize, Coords* normalArray) +{ + MCNUM A1=0, C1=0, D1=0, A2=0, B2=0, C2=0, D2=0; //perpendicular plane equations to [a,b] + off_init_planes(a, b, &A1, &C1, &D1, &A2, &B2, &C2, &D2); + + int t_size=0; + MCNUM popol[3*4]; /*3 dimensions and max 4 vertices to form a polygon*/ + unsigned long i=0,indPoly=0; + + //exploring the polygons : + i=indPoly=0; + while (iOFF_INTERSECT_MAX) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", OFF_INTERSECT_MAX); + return (t_size); + } +#endif + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k t[0].time) { + t[0]=x; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (x.time < t[3].time) { + t[3]=x; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } /* if (jCHAR_BUF_LENGTH) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", CHAR_BUF_LENGTH); + return (t_size); + } + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k= 1) { + double time = 1.0e36; + if (x1 < time && x1 > 0.0) { + time = x1; + } + if (nsol == 2 && x2 < time && x2 > 0.0) { + time = x2; + } + if (time != 1.0e36) { + intersection inters; + double t2 = time * time * 0.5; + double tx = pos.x + time * vel.x; + if (acc.x != 0.0) { + tx = tx + t2 * acc.x; + } + double ty = pos.y + time * vel.y; + if (acc.y != 0.0) { + ty = ty + t2 * acc.y; + } + double tz = pos.z + time * vel.z; + if (acc.z != 0.0) { + tz = tz + t2 * acc.z; + } + inters.v = coords_set(tx, ty, tz); + Coords tvel = coords_set(vel.x + time * acc.x, + vel.y + time * acc.y, + vel.z + time * acc.z); + inters.time = time; + inters.normal = pol.normal; + inters.index = indPoly; + int res=off_pnpoly(pol,inters.v); + if (res != 0) { + inters.edge=(res==-1); + MCNUM ndir = scalar_prod(pol.normal.x,pol.normal.y,pol.normal.z,tvel.x,tvel.y,tvel.z); + if (ndir<0) { + inters.in_out=1; //the negative dot product means we enter the surface + } else { + inters.in_out=-1; + } +#ifdef OFF_LEGACY + t[t_size++]=inters; +#else + /* Check against our 4 existing times, starting from [-FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX] */ + /* Case 1, negative time? */ + if (t_size < 4) t_size++; + if (inters.time < 0) { + if (inters.time > t[0].time) { + t[0]=inters; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (inters.time < t[3].time) { + t[3]=inters; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } + } + i += pol.npol; + indPoly++; + } /* while itime - pb->time); +} /* off_compare */ + +// off_cleanDouble ************************************************************* +//given an array of intersections throw those which appear several times +//returns 1 if there is a possibility of error +#pragma acc routine +int off_cleanDouble(intersection* t, int* t_size) +{ + int i=1; + intersection prev=t[0]; + while (i<*t_size) + { + int j=i; + //for each intersection with the same time + while (j<*t_size && fabs(prev.time-t[j].time)maxx) maxx=vtxArray[i].x; + if (vtxArray[i].ymaxy) maxy=vtxArray[i].y; + if (vtxArray[i].zmaxz) maxz=vtxArray[i].z; + i++; // inquire next vertex + } + + // resizing and repositioning params + double centerx=0, centery=0, centerz=0; + if (!notcenter) { + centerx=(minx+maxx)*0.5; + centery=(miny+maxy)*0.5; + centerz=(minz+maxz)*0.5; + } + + double rangex=-minx+maxx, + rangey=-miny+maxy, + rangez=-minz+maxz; + + double ratiox=1,ratioy=1,ratioz=1; + + if (xwidth && rangex) + { + ratiox=xwidth/rangex; + ratioy=ratiox; + ratioz=ratiox; + } + + if (yheight && rangey) + { + ratioy=yheight/rangey; + if(!xwidth) ratiox=ratioy; + ratioz=ratioy; + } + + if (zdepth && rangez) + { + ratioz=zdepth/rangez; + if(!xwidth) ratiox=ratioz; + if(!yheight) ratioy=ratioz; + } + + rangex *= ratiox; + rangey *= ratioy; + rangez *= ratioz; + + //center and resize the object + for (i=0; i polySize*10) { + fprintf(stderr, "Error: %li exceeded allocated polygon array[%li] in file %s (interoff/off_init)\n", + faceSize, polySize*10, offfile); + } + faceArray[faceSize++] = nbVertex; // length of the polygon/face + // then read the vertex ID's + for (j=0; jvtxArray = vtxArray; + data->normalArray= normalArray; + data->DArray = DArray; + data->faceArray = faceArray; + data->vtxSize = vtxSize; + data->polySize = polySize; + data->faceSize = faceSize; + data->filename = offfile; + #ifdef OPENACC + acc_attach((void *)&vtxArray); + acc_attach((void *)&normalArray); + acc_attach((void *)&faceArray); + #endif + + return(polySize); +} /* off_init */ + +#pragma acc routine +int Min_int(int x, int y) { + return (xintersects, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray ); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(data->intersects, A, B, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray ); + } + #ifndef OPENACC + qsort(data->intersects, t_size, sizeof(intersection), off_compare); + #else + #ifdef USE_OFF + gpusort(data->intersects, t_size); + #endif + #endif + off_cleanDouble(data->intersects, &t_size); + off_cleanInOut(data->intersects, &t_size); + + /*find intersections "closest" to 0 (favouring positive ones)*/ + if(t_size>0){ + int i=0; + if(t_size>1) { + for (i=1; i < t_size-1; i++){ + if (data->intersects[i-1].time > 0 && data->intersects[i].time > 0) + break; + } + + data->nextintersect=i-1; + data->numintersect=t_size; + + if (t0) *t0 = data->intersects[i-1].time; + if (n0) *n0 = data->intersects[i-1].normal; + if (t3) *t3 = data->intersects[i].time; + if (n3) *n3 = data->intersects[i].normal; + } else { + if (t0) *t0 = data->intersects[0].time; + if (n0) *n0 = data->intersects[0].normal; + } + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(data->intersects[data->nextintersect]).index; + return t_size; + } +#else + intersection intersect4[4]; + intersect4[0].time=-FLT_MAX; + intersect4[1].time=FLT_MAX; + intersect4[2].time=FLT_MAX; + intersect4[3].time=FLT_MAX; + if(mcgravitation) { + Coords pos={ x, y, z}; + Coords vel={vx, vy, vz}; + Coords acc={ax, ay, az}; + t_size=off_clip_3D_mod_grav(intersect4, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(intersect4, A, B, + data->vtxArray, data->vtxSize, data->faceArray, data->faceSize, data->normalArray ); + } + if(t_size>0){ + int i=0; + if (intersect4[0].time == -FLT_MAX) i=1; + data->numintersect=t_size; + if (t0) *t0 = intersect4[i].time; + if (n0) *n0 = intersect4[i].normal; + if (t3) *t3 = intersect4[i+1].time; + if (n3) *n3 = intersect4[i+1].normal; + + if (intersect4[1].time == FLT_MAX) + { + if (t3) *t3 = 0.0; + } + + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(int)intersect4[i].index; + return t_size; + } +#endif + return 0; +} /* off_intersect */ + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +{ + return off_intersect_all(t0, t3, n0, n3, x, y, z, vx, vy, vz, ax, ay, az, &data ); +} /* off_intersect */ + +/***************************************************************************** +* int off_x_intersect(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +{ + /*This function simply reformats and calls off_intersect (as for neutrons) + *by normalizing the wavevector - this will yield the intersection lengths + *in m*/ + double jx,jy,jz,invk; + int n; + invk=1/sqrt(scalar_prod(kx,ky,kz,kx,ky,kz)); + jx=kx*invk;jy=ky*invk;jz=kz*invk; + n=off_intersect(l0,l3,n0,n3,x,y,z,jx,jy,jz,0.0,0.0,0.0,data); + return n; +} + + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED polygons from the object +*******************************************************************************/ +void off_display(off_struct data) +{ + if(mcdotrace==2){ + // Estimate size of the JSON string + const int VERTEX_OVERHEAD = 30; + const int FACE_OVERHEAD_BASE = 20; + const int FACE_INDEX_OVERHEAD = 15; + int estimated_size = 256; // Base size + estimated_size += data.vtxSize * VERTEX_OVERHEAD; + + for (int i = 0; i < data.faceSize;) { + int num_indices = data.faceArray[i]; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + for (int i = 0; i < data.vtxSize; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", data.vtxArray[i].x, data.vtxArray[i].y, data.vtxArray[i].z); + if (i < data.vtxSize - 1) { + ptr += sprintf(ptr, ", "); + } + } + + ptr += sprintf(ptr, "], \"faces\": ["); + + for (int i = 0; i < data.faceSize;) { + int num = data.faceArray[i]; + ptr += sprintf(ptr, "{ \"face\": ["); + for (int j = 1; j <= num; j++) { + ptr += sprintf(ptr, "%lu", data.faceArray[i + j]); + if (j < num) { + ptr += sprintf(ptr, ", "); + } + } + ptr += sprintf(ptr, "]}"); + i += num + 1; + if(i 1 || drawthis) { + mcdis_line(x1,y1,z1,x2,y2,z2); + } + x1 = x2; y1 = y2; z1 = z2; + } + if (ratio > 1 || drawthis) { + mcdis_line(x1,y1,z1,x0,y0,z0); + } + if (data.mantidflag) { + printf("MANTID_PIXEL: %s\n", pixelinfo); + pixel++; + } + i += nbVertex; + } + } +} /* off_display */ + +/* end of interoff-lib.c */ +#endif // INTEROFF_LIB_C + + +/* Shared user declarations for all components types 'bi_spec_ellipse'. */ + + +/* Shared user declarations for all components types 'Guide_four_side'. */ + + + void + TEST_INPUT (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s should \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + fprintf (stderr, " (for negative values use the global guide position !) \n"); + exit (-1); + }; + + void + TEST_INPUT_1 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s must \n", compname, name); + fprintf (stderr, " be -1 (transperent) or \n"); + fprintf (stderr, " be 0 (absorbing) or \n"); + fprintf (stderr, " be > 0 (reflecting) \n"); + exit (-1); + }; + + void + TEST_INPUT_2 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s can \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + exit (-1); + }; + + void + TEST_INPUT_3 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %sr must \n", compname, name); + fprintf (stderr, " be positive\n"); + exit (-1); + }; + + void + TEST_INPUT_4 (char name[20], char name1[20], double inputname, double inputname1, char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) \n", compname); + fprintf (stderr, " %s have to be bigger or equal %s \n", name, name1); + printf (" %s = %f \n", name, inputname); + printf (" %s = %f \n", name1, inputname1); + fprintf (stderr, " check curve parameter and wallthicknesses! \n"); + exit (-1); + }; + + /* function to calculate the needed parameters for an elliptic wall*/ + + void + ELLIPSE (double w1, double length, double lin, double lout, double wallthick, double* a, double* b, double* a2, double* b2, double* z0, double* w2, double* awt, + double* a2wt, double* bwt, double* b2wt, double* w2wt, double* w1wt) { + double DIV1, lb, u1, u2, u1wt, u2wt, dx, dz; + lb = lin + length + lout; /* lenght between the two focal points of the wall */ + *z0 = (lin - length - lout) / 2.0; + u1 = sqrt ((lin * lin) + (w1 * w1)); /* length between entrance focal point and starting point of the wall (INNER side)*/ + u2 = sqrt ((w1 * w1) + ((length + lout) * (length + lout))); /* length between exit focal point and end point of the wall (INNER side) */ + *a = (u1 + u2) / 2.0; /* long half axis a of the ellipse (INNER side)*/ + *a2 = *a * (*a); /* square of the long axis a (INNER side)*/ + *b = sqrt (*a2 - (lb * (lb) / 4.0)); /* short half axis b of the ellipse (INNER side)*/ + *b2 = *b * (*b); /* square of short half axis b of the ellipse (INNER side)*/ + DIV1 = sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2))); /* help variable to calculated the exit width (INNER side)*/ + *w2 = *b * (DIV1); /* exit width (INNER side)*/ + if (length < (lb) / 2 - lout) { /* if the maximum opening of the guide is smaller than the small half axis b, the OUTER side is defined by: */ + dx = wallthick * sin (atan (*a2 * w1 / (*b2 * (*z0)))); + dz = wallthick * cos (atan (*a2 * w1 / (*b2 * (*z0)))); + u1wt = sqrt (((lin + dz) * (lin + dz)) + ((w1 + dx) * (w1 + dx))); /* length between entrance focal point and starting point of the wall (OUTER side)*/ + u2wt = sqrt (((w1 + dx) * (w1 + dx)) + + ((length + lout - dz) * (length + lout - dz))); /* length between exit focal point and end point of the wall (OUTER side) */ + *awt = (u1wt + u2wt) / 2.0; /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *awt * (*awt); /* square of the long axis a (OUTER side)*/ + *bwt = sqrt (*a2wt - (lb * lb / 4.0)); /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout - length) * (lb / 2.0 - lout - length) / (*a2wt))); /* entrance width for OUTER side */ + } else { /* if the maximum opening of the guide is the small half axis b the OUTER wall is defined by:*/ + *bwt = *b + wallthick; /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of the long axis a (OUTER side)*/ + *awt = sqrt (*b2wt + (lb * lb / 4.0)); /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *b2wt + (lb * lb / 4.0); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lin) * (lb / 2.0 - lin) / (*a2wt))); /* entrance width for OUTER side */ + } + } + + /* function to calculate the needed parameters for a parabolical focusing wall*/ + + void + PARABEL_FOCUS (double w1, double length, double lout, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = (length + lout) * (length + lout); /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (lout + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = length + lout + *p2para / 4.0; /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = 1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (w1 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (w1 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (length + lout - dz) * (length + lout - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((w1 + dx) * (w1 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *pbwt = length + lout + *p2parawt / 4.0; /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = 1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + *w2wt = sqrt (*p2parawt * (lout + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lout + length + *p2parawt / 4.0)); /* entrance width (OUTER side) */ + } + + /* function to calculate the needed parameters for a parabolical defocusing wall*/ + + void + PARABEL_DEFOCUS (double w1, double length, double lin, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = lin * lin; /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (length + lin + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = -(lin + *p2para / 4.0); /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = -1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (-*w2 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (-*w2 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (lin + length - dz) * (lin + length - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((*w2 + dx) * (*w2 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lin + *p2parawt / 4.0)); /* entrance width for right focusing parabolic wall (OUTER side) */ + *w2wt = sqrt (*p2parawt * (lin + length + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *pbwt = -(lin + *p2parawt / 4.0); /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = -1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + } + + /* function to calculate the needed parameters for a linear wall*/ + + void + LINEAR (double w1, double w2, double length, double wallthick, double* w1wt, double* w2wt) { + *w1wt = w1 + wallthick / (cos (atan ((w1 - w2) / length))); /* entrance width (OUTER side) */ + *w2wt = w2 + wallthick / (cos (atan ((w1 - w2) / length))); /* exit width (OUTER side) */ + } + + /* function to calculate the intersection time with a linear wall at an negative axis*/ + + void + TIME_LINEAR (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (-w2 + w1) / length; + *t2 = (anstieg * zin - w1 - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (INNER side)*/ + *t2wt = (anstieg * zin - w1wt - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (OUTER side)*/ + if (*t2 < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (*t2wt < 1e-15) /* see comments above*/ + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with a linear wall at an positive axis*/ + + void + TIME_LINEAR_1 (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (w2 - w1) / length; + *t2 = (anstieg * zin + w1 - xin) / (vxin1 - anstieg * vzin1); + *t2wt = (anstieg * zin + w1wt - xin) / (vxin1 - anstieg * vzin1); + if (*t2 < 1e-15) + *t2 = t1in + 2.0; + if (*t2wt < 1e-15) + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with an elliptical wall at a negative axis*/ + + void + TIME_ELLIPSE (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + /* solving the elliptic equation in respect to z and the straight neutron trajectoty, only two z values possible! */ + + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); /* p parameter of quadratic equation for calulation the z component of the intersection point with + respect to the neutron trajectory (INNER side)*/ + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); /* q parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (INNER side)*/ + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; /* if the neutron never touch the ellipse the time is set to be bigger than the time (t1) needed to pass the component */ + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); /* first solution for z (INNER side)*/ + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); /* second solution for z (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* interaction time for first z value (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* interactime time for second z value (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) /* for the right wall x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); /* p parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (OUTER side)*/ + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); /* q parameter of quadratic equation for calulation the z component of the + intersection point with respect to the neutron trajectory (OUTER side)*/ + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; /* if the neutron never touch the ellipse the time is set bigger than need to pass the component */ + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); /* first solution for z (OUTER side) */ + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); /* second solution for z (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* interaction time for first z value (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* interactime time for second z value (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER side)*/ + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with an elliptical wall at a positive axis*/ + + void + TIME_ELLIPSE_1 (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; + n = -m * zin + xin; + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + } + + /* function to calculate the intersection time with a parabolical wall at an negative axis*/ + + void + TIME_PARABEL (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); /* p parameter of quadratic equation (INNER side) */ + q = n * n / (m * m) - pb / (pa * m * m); /* q parameter of quadratic equation (INNER side) */ + if (q > 0 + && q > (p * p + / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) the time is set to t1+2.0 */ + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { /* only neutron with a negativ x-component can hit the RIGHT wall (INNER side)*/ + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; /* the time solution for neutron with a positive x component is set to a time long behind the exit of the guide */ + /* (means will not scatter with the right wall)*/ + } + } else { /* if vx is not zero and x is a real variable*/ + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); /* first z-solution for intersection (INNER side)*/ + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); /* second z-solution for intersection (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* first time solution (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* second time solution (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) { /* the x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; + } /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); /* p parameter of quadratic equation (OUTER side)*/ + qwt = n * n / (m * m) - pbwt / (pawt * m * m); /* q parameter of quadratic equation (OUTER side)*/ + if (qwt > 0 && qwt > (pwt * pwt / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) and the + time is set to t1+2.0 */ + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; /* only neutron with a negativ x-component can hit the RIGHT wall (OUTER wall)*/ + } else { + *t2w1wt = t1in + 2.0; + } + } else { /* if vx is not zero */ + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); /* first z-solution for intersection (OUTER side)*/ + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); /* second z-solution for intersection (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* first time solution (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* second time solution (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER wall)*/ + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with a parabolical wall at an positive axis*/ + + void + TIME_PARABEL_1 (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; + n = -m * zin + xin; + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); + q = n * n / (m * m) - pb / (pa * m * m); + if (q > 0 && q > (p * p / 4)) { + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; + } + } else { + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); + qwt = n * n / (m * m) - pbwt / (pawt * m * m); + if (qwt > 0 && qwt > (pwt * pwt / 4)) { + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; + } else { + *t2w1wt = t1in + 2.0; + } + } else { + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + }; + + /* test if the left or right scattered neutron in the upper and lower limits defined by TOP und BOTTOM walls */ + + void + TEST_UP_DOWN (double t, double vzin, double zin, double vyin, double yin, double length, double linhdin, double louthdin, double linhuin, double louthuin, + double h2din, double h1din, double h2uin, double h1uin, double bhdin, double z0hdin, double a2hdin, double bhuin, double z0huin, double a2huin, + double pbhdin, double pahdin, double pbhuin, double pahuin, double* ylimitd, double* ylimitu, double* ytest) { + if (linhdin == 0 && louthdin == 0) { + *ylimitd + = (-h2din + h1din) / length * (vzin * t + zin) - h1din; /* calculation of the lower y-limit given by a linear bottom wall and the interaction time*/ + } else { + if (linhdin != 0 && louthdin != 0) { + *ylimitd = -bhdin + * sqrt (1 + - ((z0hdin + (vzin * t + zin)) * (z0hdin + (vzin * t + zin))) + / a2hdin); /* calculation of the lower y-limit given by a elliptic bottom wall and the interaction time*/ + } else { + *ylimitd = -sqrt (((vzin * t + zin) - pbhdin) / -pahdin); /* calculation of the lower y-limit given by a parabolic bottom wall and the interaction time*/ + } + } + if (linhuin == 0 && louthuin == 0) { + *ylimitu = (h2uin - h1uin) / length * (vzin * t + zin) + h1uin; /* calculation of the upper y-limit given by a linear top wall and the interaction time*/ + } else { + if (linhuin != 0 && louthuin != 0) { + *ylimitu = bhuin + * sqrt (1 + - ((z0huin + (vzin * t + zin)) * (z0huin + (vzin * t + zin))) + / a2huin); /* calculation of the upper y-limit given by a elliptic top wall and the interaction time*/ + } else { + *ylimitu = sqrt (((vzin * t + zin) - pbhuin) / -pahuin); /* calculation of the upper y-limit given by a parabolic top wall and the interaction time*/ + } + } + *ytest = vyin * t + yin; /* calculation of the y coordinate of the neutron at the interaction time */ + }; + + /* test if the up or down scattered neutron in the right and left limits defined by RIGHT und LEFT walls */ + + void + TEST_LEFT_RIGHT (double t, double vzin, double zin, double vxin, double xin, double length, double linwrin, double loutwrin, double linwlin, double loutwlin, + double w2rin, double w1rin, double w2lin, double w1lin, double bwrin, double z0wrin, double a2wrin, double bwlin, double z0wlin, double a2wlin, + double pbwrin, double pawrin, double pbwlin, double pawlin, double* xlimitr, double* xlimitl, double* xtest) { + if (linwrin == 0 && loutwrin == 0) { + *xlimitr = (-w2rin + w1rin) / length * (vzin * t + zin) - w1rin; + } else { + if (linwrin != 0 && loutwrin != 0) { + *xlimitr = -bwrin * sqrt (1 - ((z0wrin + (vzin * t + zin)) * (z0wrin + (vzin * t + zin))) / a2wrin); + } else { + *xlimitr = -sqrt (((vzin * t + zin) - pbwrin) / -pawrin); + } + } + if (linwlin == 0 && loutwlin == 0) { + *xlimitl = (w2lin - w1lin) / length * (vzin * t + zin) + w1lin; + } else { + if (linwlin != 0 && loutwlin != 0) { + *xlimitl = bwlin * sqrt (1 - ((z0wlin + (vzin * t + zin)) * (z0wlin + (vzin * t + zin))) / a2wlin); + } else { + *xlimitl = sqrt (((vzin * t + zin) - pbwlin) / -pawlin); + } + } + *xtest = vxin * t + xin; + }; + +/* Shared user declarations for all components types 'Slit'. */ + void + slit_print_if (int condition, char* level, char* message, char* component) { + if (condition) + fprintf (stderr, "Slit: %s: %s: %s\n", component, level, message); + } + void + slit_error_if (int condition, char* message, char* component) { + slit_print_if (condition, "Error", message, component); + if (condition) + exit (-1); + } + void + slit_warning_if (int condition, char* message, char* component) { + slit_print_if (condition, "Warning", message, component); + } + +/* Shared user declarations for all components types 'Graphite_Diffuser'. */ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} + +/* Shared user declarations for all components types 'Monitor_nD'. */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.h +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H + +#define MONITOR_ND_LIB_H "$Revision$" +#define MONnD_COORD_NMAX 30 /* max number of variables to record */ + + typedef struct MonitornD_Defines + { + int COORD_NONE ; + int COORD_X ; + int COORD_Y ; + int COORD_Z ; + int COORD_RADIUS; + int COORD_VX ; + int COORD_VY ; + int COORD_VZ ; + int COORD_V ; + int COORD_T ; + int COORD_P ; + int COORD_SX ; + int COORD_SY ; + int COORD_SZ ; + int COORD_KX ; + int COORD_KY ; + int COORD_KZ ; + int COORD_K ; + int COORD_ENERGY; + int COORD_LAMBDA; + int COORD_KXY ; + int COORD_KYZ ; + int COORD_KXZ ; + int COORD_VXY ; + int COORD_VYZ ; + int COORD_VXZ ; + int COORD_HDIV ; + int COORD_VDIV ; + int COORD_ANGLE ; + int COORD_NCOUNT; + int COORD_THETA ; + int COORD_PHI ; + int COORD_USER1 ; + int COORD_USER2 ; + int COORD_USER3 ; + int COORD_USERDOUBLE0 ; + int COORD_USERDOUBLE1 ; + int COORD_USERDOUBLE2 ; + int COORD_USERDOUBLE3 ; + int COORD_USERDOUBLE4 ; + int COORD_USERDOUBLE5 ; + int COORD_USERDOUBLE6 ; + int COORD_USERDOUBLE7 ; + int COORD_USERDOUBLE8 ; + int COORD_USERDOUBLE9 ; + int COORD_USERDOUBLE10 ; + int COORD_USERDOUBLE11 ; + int COORD_USERDOUBLE12 ; + int COORD_USERDOUBLE13 ; + int COORD_USERDOUBLE14 ; + int COORD_USERDOUBLE15 ; + int COORD_XY ; + int COORD_XZ ; + int COORD_YZ ; + int COORD_PIXELID; + + /* token modifiers */ + int COORD_VAR ; /* next token should be a variable or normal option */ + int COORD_MIN ; /* next token is a min value */ + int COORD_MAX ; /* next token is a max value */ + int COORD_DIM ; /* next token is a bin value */ + int COORD_FIL ; /* next token is a filename */ + int COORD_EVNT ; /* next token is a buffer size value */ + int COORD_3HE ; /* next token is a 3He pressure value */ + int COORD_LOG ; /* next variable will be in log scale */ + int COORD_ABS ; /* next variable will be in abs scale */ + int COORD_SIGNAL; /* next variable will be the signal var */ + int COORD_AUTO ; /* set auto limits */ + + char TOKEN_DEL[32]; /* token separators */ + + char SHAPE_SQUARE; /* shape of the monitor */ + char SHAPE_DISK ; + char SHAPE_SPHERE; + char SHAPE_CYLIND; + char SHAPE_BANANA; /* cylinder without top/bottom, on restricted angular area */ + char SHAPE_BOX ; + char SHAPE_PREVIOUS; + char SHAPE_OFF; + + } MonitornD_Defines_type; + + typedef struct MonitornD_Variables + { + double area; + double Sphere_Radius ; + double Cylinder_Height ; + char Flag_With_Borders ; /* 2 means xy borders too */ + char Flag_List ; /* 1 store 1 buffer, 2 is list all, 3 list all+append */ + char Flag_Multiple ; /* 1 when n1D, 0 for 2D */ + char Flag_Verbose ; + int Flag_Shape ; + char Flag_Auto_Limits ; /* get limits from first Buffer */ + char Flag_Absorb ; /* monitor is also a slit */ + char Flag_per_cm2 ; /* flux is per cm2 */ + char Flag_log ; /* log10 of the flux */ + char Flag_parallel ; /* set neutron state back after detection (parallel components) */ + char Flag_Binary_List ; + char Flag_capture ; /* lambda monitor with lambda/lambda(2200m/s = 1.7985 Angs) weightening */ + int Flag_signal ; /* 0:monitor p, else monitor a mean value */ + int Flag_mantid ; /* 0:normal monitor, else do mantid-event specifics */ + int Flag_OFF ; /* Flag to indicate external geometry from OFF file */ + long long OFF_polyidx; /* When intersection is done externally by off_intersect, this gives the + polygon number, i.e. pixel index */ + unsigned long Coord_Number ; /* total number of variables to monitor, plus intensity (0) */ + unsigned long Coord_NumberNoPixel; /* same but without counting PixelID */ + unsigned long Buffer_Block ; /* Buffer size for list or auto limits */ + long long Neutron_Counter ; /* event counter, simulation total counts is mcget_ncount() */ + unsigned long Buffer_Counter ; /* index in Buffer size (for realloc) */ + unsigned long Buffer_Size ; + int Coord_Type[MONnD_COORD_NMAX]; /* type of variable */ + char Coord_Label[MONnD_COORD_NMAX][30]; /* label of variable */ + char Coord_Var[MONnD_COORD_NMAX][30]; /* short id of variable */ + long Coord_Bin[MONnD_COORD_NMAX]; /* bins of variable array */ + long Coord_BinProd[MONnD_COORD_NMAX]; /* product of bins of variable array */ + double Coord_Min[MONnD_COORD_NMAX]; + double Coord_Max[MONnD_COORD_NMAX]; + char Monitor_Label[MONnD_COORD_NMAX*30];/* Label for monitor */ + char Mon_File[128]; /* output file name */ + + /* these don't seem to be used anymore as they are superseded by _particle + double cx, cy, cz; + double cvx, cvy, cvz; + double ckx, cky, ckz; + double csx, csy, csz; + double cEx, cEy, cEz; + double cs1, cs2, ct, cphi, cp; */ + + double He3_pressure; + char Flag_UsePreMonitor ; /* use a previously stored neutron parameter set */ + char UserName1[128]; + char UserName2[128]; + char UserName3[128]; + char UserVariable1[128]; + char UserVariable2[128]; + char UserVariable3[128]; + double UserDoubles[16]; + char option[CHAR_BUF_LENGTH]; + + long long int Nsum; + double psum, p2sum; + double **Mon2D_N; + double **Mon2D_p; + double **Mon2D_p2; + double *Mon2D_Buffer; + unsigned long PixelID; + + double mxmin,mxmax,mymin,mymax,mzmin,mzmax; + double mean_dx, mean_dy, min_x, min_y, max_x, max_y, mean_p; + + char compcurname[128]; + Coords compcurpos; + Rotation compcurrot; + int compcurindex; + } MonitornD_Variables_type; + +/* monitor_nd-lib function prototypes */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *, MonitornD_Variables_type *, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, int); +#pragma acc routine +int Monitor_nD_Trace(MonitornD_Defines_type *, MonitornD_Variables_type *, _class_particle* _particle); +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_Finally(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_McDisplay(MonitornD_Defines_type *, MonitornD_Variables_type *); + +#endif + +/* end of monitor_nd-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H +#error McStas : please import this library with %include "monitor_nd-lib" +#endif + +/* ========================================================================= */ +/* Monitor_nD_Init: this routine is used to parse options */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars, + MCNUM xwidth, + MCNUM yheight, + MCNUM zdepth, + MCNUM xmin, + MCNUM xmax, + MCNUM ymin, + MCNUM ymax, + MCNUM zmin, + MCNUM zmax, + int offflag) + { + long carg = 1; + char *option_copy, *token; + char Flag_New_token = 1; + char Flag_End = 1; + char Flag_All = 0; + char Flag_No = 0; + char Flag_abs = 0; + int Flag_auto = 0; /* -1: all, 1: the current variable */ + int Set_Vars_Coord_Type; + char Set_Vars_Coord_Label[64]; + char Set_Vars_Coord_Var[64]; + char Short_Label[MONnD_COORD_NMAX][64]; + int Set_Coord_Mode; + long i=0, j=0; + double lmin, lmax, XY=0; + long t; + int N_spatial_dims=0; + + t = (long)time(NULL); + +/* initialize DEFS */ +/* Variables to monitor */ + DEFS->COORD_NONE =0; + DEFS->COORD_X =1; + DEFS->COORD_Y =2; + DEFS->COORD_Z =3; + DEFS->COORD_RADIUS =19; + DEFS->COORD_VX =4; + DEFS->COORD_VY =5; + DEFS->COORD_VZ =6; + DEFS->COORD_V =16; + DEFS->COORD_T =7; + DEFS->COORD_P =8; + DEFS->COORD_SX =9; + DEFS->COORD_SY =10; + DEFS->COORD_SZ =11; + DEFS->COORD_KX =12; + DEFS->COORD_KY =13; + DEFS->COORD_KZ =14; + DEFS->COORD_K =15; + DEFS->COORD_ENERGY =17; + DEFS->COORD_LAMBDA =18; + DEFS->COORD_HDIV =20; + DEFS->COORD_VDIV =21; + DEFS->COORD_ANGLE =22; + DEFS->COORD_NCOUNT =23; + DEFS->COORD_THETA =24; + DEFS->COORD_PHI =25; + DEFS->COORD_USER1 =26; + DEFS->COORD_USER2 =27; + DEFS->COORD_USER3 =28; + DEFS->COORD_USERDOUBLE0=39; + DEFS->COORD_USERDOUBLE1=40; + DEFS->COORD_USERDOUBLE2=41; + DEFS->COORD_USERDOUBLE3=42; + DEFS->COORD_USERDOUBLE4=43; + DEFS->COORD_USERDOUBLE5=44; + DEFS->COORD_USERDOUBLE6=45; + DEFS->COORD_USERDOUBLE7=46; + DEFS->COORD_USERDOUBLE8=47; + DEFS->COORD_USERDOUBLE9=48; + DEFS->COORD_USERDOUBLE10=49; + DEFS->COORD_USERDOUBLE11=50; + DEFS->COORD_USERDOUBLE12=51; + DEFS->COORD_USERDOUBLE13=52; + DEFS->COORD_USERDOUBLE14=53; + DEFS->COORD_USERDOUBLE15=54; + DEFS->COORD_XY =37; + DEFS->COORD_YZ =31; + DEFS->COORD_XZ =32; + DEFS->COORD_VXY =30; + DEFS->COORD_VYZ =34; + DEFS->COORD_VXZ =36; + DEFS->COORD_KXY =29; + DEFS->COORD_KYZ =33; + DEFS->COORD_KXZ =35; + DEFS->COORD_PIXELID=38; + +/* token modifiers */ + DEFS->COORD_VAR =0; /* next token should be a variable or normal option */ + DEFS->COORD_MIN =1; /* next token is a min value */ + DEFS->COORD_MAX =2; /* next token is a max value */ + DEFS->COORD_DIM =3; /* next token is a bin value */ + DEFS->COORD_FIL =4; /* next token is a filename */ + DEFS->COORD_EVNT =5; /* next token is a buffer size value */ + DEFS->COORD_3HE =6; /* next token is a 3He pressure value */ + DEFS->COORD_LOG =64; /* next variable will be in log scale */ + DEFS->COORD_ABS =128; /* next variable will be in abs scale */ + DEFS->COORD_SIGNAL =256; /* next variable will be the signal var */ + DEFS->COORD_AUTO =512; /* set auto limits */ + + strcpy(DEFS->TOKEN_DEL, " =,;[](){}:"); /* token separators */ + + DEFS->SHAPE_SQUARE =0; /* shape of the monitor */ + DEFS->SHAPE_DISK =1; + DEFS->SHAPE_SPHERE =2; + DEFS->SHAPE_CYLIND =3; + DEFS->SHAPE_BANANA =4; + DEFS->SHAPE_BOX =5; + DEFS->SHAPE_PREVIOUS=6; + DEFS->SHAPE_OFF=7; + + Vars->Sphere_Radius = 0; + Vars->Cylinder_Height = 0; + Vars->Flag_With_Borders = 0; /* 2 means xy borders too */ + Vars->Flag_List = 0; /* 1=store 1 buffer, 2=list all, 3=re-use buffer */ + Vars->Flag_Multiple = 0; /* 1 when n1D, 0 for 2D */ + Vars->Flag_Verbose = 0; + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + Vars->Flag_Auto_Limits = 0; /* get limits from first Buffer */ + Vars->Flag_Absorb = 0; /* monitor is also a slit */ + Vars->Flag_per_cm2 = 0; /* flux is per cm2 */ + Vars->Flag_log = 0; /* log10 of the flux */ + Vars->Flag_parallel = 0; /* set neutron state back after detection (parallel components) */ + Vars->Flag_Binary_List = 0; /* save list as a binary file (smaller) */ + Vars->Coord_Number = 0; /* total number of variables to monitor, plus intensity (0) */ + Vars->Coord_NumberNoPixel=0; /* same but without counting PixelID */ + + Vars->Buffer_Block = MONND_BUFSIZ; /* Buffer size for list or auto limits */ + Vars->Neutron_Counter = 0; /* event counter, simulation total counts is mcget_ncount() */ + Vars->Buffer_Counter = 0; /* index in Buffer size (for realloc) */ + Vars->Buffer_Size = 0; + Vars->He3_pressure = 0; + Vars->Flag_capture = 0; + Vars->Flag_signal = DEFS->COORD_P; + Vars->Flag_mantid = 0; + Vars->Flag_OFF = offflag; + Vars->OFF_polyidx = -1; + Vars->mean_dx=Vars->mean_dy=0; + Vars->min_x = Vars->max_x =0; + Vars->min_y = Vars->max_y =0; + + Set_Vars_Coord_Type = DEFS->COORD_NONE; + Set_Coord_Mode = DEFS->COORD_VAR; + + /* handle size parameters */ + /* normal use is with xwidth, yheight, zdepth */ + /* if xmin,xmax,ymin,ymax,zmin,zmax are non 0, use them */ + if (fabs(xmin-xmax) == 0) + { Vars->mxmin = -fabs(xwidth)/2; Vars->mxmax = fabs(xwidth)/2; } + else + { if (xmin < xmax) {Vars->mxmin = xmin; Vars->mxmax = xmax;} + else {Vars->mxmin = xmax; Vars->mxmax = xmin;} + } + if (fabs(ymin-ymax) == 0) + { Vars->mymin = -fabs(yheight)/2; Vars->mymax = fabs(yheight)/2; } + else + { if (ymin < ymax) {Vars->mymin = ymin; Vars->mymax = ymax;} + else {Vars->mymin = ymax; Vars->mymax = ymin;} + } + if (fabs(zmin-zmax) == 0) + { Vars->mzmin = -fabs(zdepth)/2; Vars->mzmax = fabs(zdepth)/2; } + else + { if (zmin < zmax) {Vars->mzmin = zmin; Vars->mzmax = zmax; } + else {Vars->mzmin = zmax; Vars->mzmax = zmin; } + } + + if (fabs(Vars->mzmax-Vars->mzmin) == 0) + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + else + Vars->Flag_Shape = DEFS->SHAPE_BOX; + + if (Vars->Flag_OFF) { + N_spatial_dims++; + Vars->Flag_Shape = DEFS->SHAPE_OFF; + } + + /* parse option string */ + + option_copy = (char*)malloc(strlen(Vars->option)+1); + if (option_copy == NULL) + { + fprintf(stderr,"Monitor_nD: %s cannot allocate 'options' copy (%li). Fatal.\n", Vars->compcurname, (long)strlen(Vars->option)); + exit(-1); + } + + if (strlen(Vars->option)) + { + Flag_End = 0; + strcpy(option_copy, Vars->option); + } + + if (strstr(Vars->option, "cm2") || strstr(Vars->option, "cm^2")) Vars->Flag_per_cm2 = 1; + + if (strstr(Vars->option, "binary") || strstr(Vars->option, "float")) + Vars->Flag_Binary_List = 1; + if (strstr(Vars->option, "double")) + Vars->Flag_Binary_List = 2; + + strcpy(Vars->Coord_Label[0],"Intensity"); + strncpy(Vars->Coord_Var[0],"p",30); + Vars->Coord_Type[0] = DEFS->COORD_P; + Vars->Coord_Bin[0] = 1; + Vars->Coord_Min[0] = 0; + Vars->Coord_Max[0] = FLT_MAX; + + /* default file name is comp_name+dateID */ + sprintf(Vars->Mon_File, "%s_%li", Vars->compcurname, t); + + carg = 1; + while((Flag_End == 0) && (carg < 128)) + { + if (Flag_New_token) /* retain previous token or get a new one */ + { + if (carg == 1) token=(char *)strtok(option_copy,DEFS->TOKEN_DEL); + else token=(char *)strtok(NULL,DEFS->TOKEN_DEL); + if (token == NULL) Flag_End=1; + } + Flag_New_token = 1; + if ((token != NULL) && (strlen(token) != 0)) + { + char iskeyword=0; /* left at 0 when variables are processed, 1 for modifiers */ + int old_Mode; + /* change token to lower case */ + for (i=0; iCOORD_MAX) /* max=%i */ + { + if (!Flag_All) + Vars->Coord_Max[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Max[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_MIN) /* min=%i */ + { + if (!Flag_All) + Vars->Coord_Min[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Min[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_MAX; + } + if (Set_Coord_Mode == DEFS->COORD_DIM) /* bins=%i */ + { + if (!Flag_All) + Vars->Coord_Bin[Vars->Coord_Number] = atoi(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Bin[i++] = atoi(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_FIL) /* file=%s */ + { + if (!Flag_No) strncpy(Vars->Mon_File,token,128); + else { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1;} + Set_Coord_Mode = DEFS->COORD_VAR; + } + if (Set_Coord_Mode == DEFS->COORD_EVNT) /* list=%i */ + { + if (!strcmp(token, "all") || Flag_All) Vars->Flag_List = 2; + else { i = (long)ceil(atof(token)); if (i) Vars->Buffer_Block = i; + Vars->Flag_List = 1; } + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_3HE) /* pressure=%g */ + { + Vars->He3_pressure = atof(token); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + + /* now look for general option keywords */ + if (!strcmp(token, "borders")) {Vars->Flag_With_Borders = 1; iskeyword=1; } + if (!strcmp(token, "verbose")) {Vars->Flag_Verbose = 1; iskeyword=1; } + if (!strcmp(token, "log")) {Vars->Flag_log = 1; iskeyword=1; } + if (!strcmp(token, "abs")) {Flag_abs = 1; iskeyword=1; } + if (!strcmp(token, "multiple")) {Vars->Flag_Multiple = 1; iskeyword=1; } + if (!strcmp(token, "list") || !strcmp(token, "events")) { + Vars->Flag_List = 1; Set_Coord_Mode = DEFS->COORD_EVNT; } + if (!strcmp(token, "limits") || !strcmp(token, "min")) + Set_Coord_Mode = DEFS->COORD_MIN; + if (!strcmp(token, "slit") || !strcmp(token, "absorb")) { + Vars->Flag_Absorb = 1; iskeyword=1; } + if (!strcmp(token, "max")) Set_Coord_Mode = DEFS->COORD_MAX; + if (!strcmp(token, "bins") || !strcmp(token, "dim")) Set_Coord_Mode = DEFS->COORD_DIM; + if (!strcmp(token, "file") || !strcmp(token, "filename")) { + Set_Coord_Mode = DEFS->COORD_FIL; + if (Flag_No) { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1; } + } + if (!strcmp(token, "inactivate")) { + Flag_End = 1; Vars->Coord_Number = 0; iskeyword=1; } + if (!strcmp(token, "all")) { Flag_All = 1; iskeyword=1; } + if (!strcmp(token, "sphere")) { Vars->Flag_Shape = DEFS->SHAPE_SPHERE; iskeyword=1; } + if (!strcmp(token, "cylinder")) { Vars->Flag_Shape = DEFS->SHAPE_CYLIND; iskeyword=1; } + if (!strcmp(token, "banana")) { Vars->Flag_Shape = DEFS->SHAPE_BANANA; iskeyword=1; } + if (!strcmp(token, "square")) { Vars->Flag_Shape = DEFS->SHAPE_SQUARE; iskeyword=1; } + if (!strcmp(token, "disk")) { Vars->Flag_Shape = DEFS->SHAPE_DISK; iskeyword=1; } + if (!strcmp(token, "box")) { Vars->Flag_Shape = DEFS->SHAPE_BOX; iskeyword=1; } + if (!strcmp(token, "previous")) { Vars->Flag_Shape = DEFS->SHAPE_PREVIOUS; iskeyword=1; } + if (!strcmp(token, "parallel")){ Vars->Flag_parallel = 1; iskeyword=1; } + if (!strcmp(token, "capture")) { Vars->Flag_capture = 1; iskeyword=1; } + if (!strcmp(token, "auto")) { + #ifndef OPENACC + if (Flag_auto != -1) { + Vars->Flag_Auto_Limits = 1; + if (Flag_All) Flag_auto = -1; + else Flag_auto = 1; + iskeyword=1; Flag_All=0; + } + #endif + } + if (!strcmp(token, "premonitor")) { + Vars->Flag_UsePreMonitor = 1; iskeyword=1; } + if (!strcmp(token, "3He_pressure") || !strcmp(token, "pressure")) { + Vars->He3_pressure = 3; iskeyword=1; } + if (!strcmp(token, "no") || !strcmp(token, "not")) { Flag_No = 1; iskeyword=1; } + if (!strcmp(token, "signal")) Set_Coord_Mode = DEFS->COORD_SIGNAL; + if (!strcmp(token, "mantid")) { Vars->Flag_mantid = 1; iskeyword=1; } + + /* Mode has changed: this was a keyword or value ? */ + if (Set_Coord_Mode != old_Mode) iskeyword=1; + + /* now look for variable names to monitor */ + Set_Vars_Coord_Type = DEFS->COORD_NONE; lmin = 0; lmax = 0; + + if (!strcmp(token, "x")) + { Set_Vars_Coord_Type = DEFS->COORD_X; strcpy(Set_Vars_Coord_Label,"x [m]"); strcpy(Set_Vars_Coord_Var,"x"); + lmin = Vars->mxmin; lmax = Vars->mxmax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mxmin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mxmax; + N_spatial_dims++;} + if (!strcmp(token, "y")) + { Set_Vars_Coord_Type = DEFS->COORD_Y; strcpy(Set_Vars_Coord_Label,"y [m]"); strcpy(Set_Vars_Coord_Var,"y"); + lmin = Vars->mymin; lmax = Vars->mymax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mymin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mymax; + N_spatial_dims++;} + if (!strcmp(token, "z")) + { Set_Vars_Coord_Type = DEFS->COORD_Z; strcpy(Set_Vars_Coord_Label,"z [m]"); strcpy(Set_Vars_Coord_Var,"z"); lmin = Vars->mzmin; lmax = Vars->mzmax; + N_spatial_dims++;} + if (!strcmp(token, "k") || !strcmp(token, "wavevector")) + { Set_Vars_Coord_Type = DEFS->COORD_K; strcpy(Set_Vars_Coord_Label,"|k| [Angs-1]"); strcpy(Set_Vars_Coord_Var,"k"); lmin = 0; lmax = 10; } + if (!strcmp(token, "v")) + { Set_Vars_Coord_Type = DEFS->COORD_V; strcpy(Set_Vars_Coord_Label,"Velocity [m/s]"); strcpy(Set_Vars_Coord_Var,"v"); lmin = 0; lmax = 10000; } + if (!strcmp(token, "t") || !strcmp(token, "time") || !strcmp(token, "tof")) + { Set_Vars_Coord_Type = DEFS->COORD_T; strcpy(Set_Vars_Coord_Label,"TOF [s]"); strcpy(Set_Vars_Coord_Var,"t"); lmin = 0; lmax = 1.0; } + if ((!strcmp(token, "p") || !strcmp(token, "i") || !strcmp(token, "intensity") || !strcmp(token, "flux"))) + { Set_Vars_Coord_Type = DEFS->COORD_P; + strcpy(Set_Vars_Coord_Label,"Intensity"); + strncat(Set_Vars_Coord_Label, " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Set_Vars_Coord_Label, "/cm2", 30); + if (XY > 1 && Vars->Coord_Number) + strncat(Set_Vars_Coord_Label, "/bin", 30); + strncat(Set_Vars_Coord_Label, "]", 30); + strcpy(Set_Vars_Coord_Var,"I"); + lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + } + + if (!strcmp(token, "vx")) + { Set_Vars_Coord_Type = DEFS->COORD_VX; strcpy(Set_Vars_Coord_Label,"vx [m/s]"); strcpy(Set_Vars_Coord_Var,"vx"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vy")) + { Set_Vars_Coord_Type = DEFS->COORD_VY; strcpy(Set_Vars_Coord_Label,"vy [m/s]"); strcpy(Set_Vars_Coord_Var,"vy"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vz")) + { Set_Vars_Coord_Type = DEFS->COORD_VZ; strcpy(Set_Vars_Coord_Label,"vz [m/s]"); strcpy(Set_Vars_Coord_Var,"vz"); lmin = -10000; lmax = 10000; } + if (!strcmp(token, "kx")) + { Set_Vars_Coord_Type = DEFS->COORD_KX; strcpy(Set_Vars_Coord_Label,"kx [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "ky")) + { Set_Vars_Coord_Type = DEFS->COORD_KY; strcpy(Set_Vars_Coord_Label,"ky [Angs-1]"); strcpy(Set_Vars_Coord_Var,"ky"); lmin = -1; lmax = 1; } + if (!strcmp(token, "kz")) + { Set_Vars_Coord_Type = DEFS->COORD_KZ; strcpy(Set_Vars_Coord_Label,"kz [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kz"); lmin = -10; lmax = 10; } + if (!strcmp(token, "sx")) + { Set_Vars_Coord_Type = DEFS->COORD_SX; strcpy(Set_Vars_Coord_Label,"sx [1]"); strcpy(Set_Vars_Coord_Var,"sx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sy")) + { Set_Vars_Coord_Type = DEFS->COORD_SY; strcpy(Set_Vars_Coord_Label,"sy [1]"); strcpy(Set_Vars_Coord_Var,"sy"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sz")) + { Set_Vars_Coord_Type = DEFS->COORD_SZ; strcpy(Set_Vars_Coord_Label,"sz [1]"); strcpy(Set_Vars_Coord_Var,"sz"); lmin = -1; lmax = 1; } + + if (!strcmp(token, "energy") || !strcmp(token, "omega") || !strcmp(token, "e")) + { Set_Vars_Coord_Type = DEFS->COORD_ENERGY; strcpy(Set_Vars_Coord_Label,"Energy [meV]"); strcpy(Set_Vars_Coord_Var,"E"); lmin = 0; lmax = 100; } + if (!strcmp(token, "lambda") || !strcmp(token, "wavelength") || !strcmp(token, "l")) + { Set_Vars_Coord_Type = DEFS->COORD_LAMBDA; strcpy(Set_Vars_Coord_Label,"Wavelength [Angs]"); strcpy(Set_Vars_Coord_Var,"L"); lmin = 0; lmax = 100; } + if (!strcmp(token, "radius") || !strcmp(token, "r")) + { Set_Vars_Coord_Type = DEFS->COORD_RADIUS; strcpy(Set_Vars_Coord_Label,"Radius [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; } + if (!strcmp(token, "xy")) + { Set_Vars_Coord_Type = DEFS->COORD_XY; strcpy(Set_Vars_Coord_Label,"Radius (xy) [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "yz")) + { Set_Vars_Coord_Type = DEFS->COORD_YZ; strcpy(Set_Vars_Coord_Label,"Radius (yz) [m]"); strcpy(Set_Vars_Coord_Var,"yz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "xz")) + { Set_Vars_Coord_Type = DEFS->COORD_XZ; strcpy(Set_Vars_Coord_Label,"Radius (xz) [m]"); strcpy(Set_Vars_Coord_Var,"xz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "vxy")) + { Set_Vars_Coord_Type = DEFS->COORD_VXY; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xy) [m]"); strcpy(Set_Vars_Coord_Var,"Vxy"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxy")) + { Set_Vars_Coord_Type = DEFS->COORD_KXY; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xy) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxy"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vyz")) + { Set_Vars_Coord_Type = DEFS->COORD_VYZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (yz) [m]"); strcpy(Set_Vars_Coord_Var,"Vyz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kyz")) + { Set_Vars_Coord_Type = DEFS->COORD_KYZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (yz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kyz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vxz")) + { Set_Vars_Coord_Type = DEFS->COORD_VXZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xz) [m]"); strcpy(Set_Vars_Coord_Var,"Vxz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxz")) + { Set_Vars_Coord_Type = DEFS->COORD_KXZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "angle") || !strcmp(token, "a")) + { Set_Vars_Coord_Type = DEFS->COORD_ANGLE; strcpy(Set_Vars_Coord_Label,"Angle [deg]"); strcpy(Set_Vars_Coord_Var,"A"); lmin = -50; lmax = 50; N_spatial_dims++;} + if (!strcmp(token, "hdiv")|| !strcmp(token, "divergence") || !strcmp(token, "xdiv") || !strcmp(token, "hd") || !strcmp(token, "dx")) + { Set_Vars_Coord_Type = DEFS->COORD_HDIV; strcpy(Set_Vars_Coord_Label,"Hor. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"hd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "vdiv") || !strcmp(token, "ydiv") || !strcmp(token, "vd") || !strcmp(token, "dy")) + { Set_Vars_Coord_Type = DEFS->COORD_VDIV; strcpy(Set_Vars_Coord_Label,"Vert. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"vd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "theta") || !strcmp(token, "longitude") || !strcmp(token, "th")) + { Set_Vars_Coord_Type = DEFS->COORD_THETA; strcpy(Set_Vars_Coord_Label,"Longitude [deg]"); strcpy(Set_Vars_Coord_Var,"th"); lmin = -180; lmax = 180; N_spatial_dims++;} + if (!strcmp(token, "phi") || !strcmp(token, "latitude") || !strcmp(token, "ph")) + { Set_Vars_Coord_Type = DEFS->COORD_PHI; strcpy(Set_Vars_Coord_Label,"Latitude [deg]"); strcpy(Set_Vars_Coord_Var,"ph"); lmin = -90; lmax = 90; N_spatial_dims++;} + if (!strcmp(token, "ncounts") || !strcmp(token, "n") || !strcmp(token, "neutron")) + { Set_Vars_Coord_Type = DEFS->COORD_NCOUNT; strcpy(Set_Vars_Coord_Label,"Neutron ID [1]"); strcpy(Set_Vars_Coord_Var,"n"); lmin = 0; lmax = mcget_ncount(); if (Flag_auto>0) Flag_auto=0; } + if (!strcmp(token, "id") || !strcmp(token, "pixel")) + { Set_Vars_Coord_Type = DEFS->COORD_PIXELID; + strcpy(Set_Vars_Coord_Label,"Pixel ID [1]"); + strcpy(Set_Vars_Coord_Var,"id"); lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + Vars->Flag_List = 1; } + if (!strcmp(token, "user") || !strcmp(token, "user1") || !strcmp(token, "u1")) + { Set_Vars_Coord_Type = DEFS->COORD_USER1; strncpy(Set_Vars_Coord_Label,Vars->UserName1,30); strcpy(Set_Vars_Coord_Var,"U1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user2") || !strcmp(token, "u2")) + { Set_Vars_Coord_Type = DEFS->COORD_USER2; strncpy(Set_Vars_Coord_Label,Vars->UserName2,30); strcpy(Set_Vars_Coord_Var,"U2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user3") || !strcmp(token, "u3")) + { Set_Vars_Coord_Type = DEFS->COORD_USER3; strncpy(Set_Vars_Coord_Label,Vars->UserName3,30); strcpy(Set_Vars_Coord_Var,"U3"); lmin = -1e10; lmax = 1e10; } + + if (!strcmp(token, "userdouble0") || !strcmp(token, "ud0")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE0; strcpy(Set_Vars_Coord_Label,"ud0 [1]"); strcpy(Set_Vars_Coord_Var,"ud0"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble1") || !strcmp(token, "ud1")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE1; strcpy(Set_Vars_Coord_Label,"ud1 [1]"); strcpy(Set_Vars_Coord_Var,"ud1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble2") || !strcmp(token, "ud2")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE2; strcpy(Set_Vars_Coord_Label,"ud2 [1]"); strcpy(Set_Vars_Coord_Var,"ud2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble3") || !strcmp(token, "ud3")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE3; strcpy(Set_Vars_Coord_Label,"ud3 [1]"); strcpy(Set_Vars_Coord_Var,"ud3"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble4") || !strcmp(token, "ud4")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE4; strcpy(Set_Vars_Coord_Label,"ud4 [1]"); strcpy(Set_Vars_Coord_Var,"ud4"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble5") || !strcmp(token, "ud5")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE5; strcpy(Set_Vars_Coord_Label,"ud5 [1]"); strcpy(Set_Vars_Coord_Var,"ud5"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble6") || !strcmp(token, "ud6")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE6; strcpy(Set_Vars_Coord_Label,"ud6 [1]"); strcpy(Set_Vars_Coord_Var,"ud6"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble7") || !strcmp(token, "ud7")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE7; strcpy(Set_Vars_Coord_Label,"ud7 [1]"); strcpy(Set_Vars_Coord_Var,"ud7"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble8") || !strcmp(token, "ud8")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE8; strcpy(Set_Vars_Coord_Label,"ud8 [1]"); strcpy(Set_Vars_Coord_Var,"ud8"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble9") || !strcmp(token, "ud9")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE9; strcpy(Set_Vars_Coord_Label,"ud9 [1]"); strcpy(Set_Vars_Coord_Var,"ud9"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble10") || !strcmp(token, "ud10")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE10; strcpy(Set_Vars_Coord_Label,"ud10 [1]"); strcpy(Set_Vars_Coord_Var,"ud10"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble11") || !strcmp(token, "ud11")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE11; strcpy(Set_Vars_Coord_Label,"ud11 [1]"); strcpy(Set_Vars_Coord_Var,"ud11"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble12") || !strcmp(token, "ud12")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE12; strcpy(Set_Vars_Coord_Label,"ud12 [1]"); strcpy(Set_Vars_Coord_Var,"ud12"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble13") || !strcmp(token, "ud13")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE13; strcpy(Set_Vars_Coord_Label,"ud13 [1]"); strcpy(Set_Vars_Coord_Var,"ud13"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble14") || !strcmp(token, "ud14")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE14; strcpy(Set_Vars_Coord_Label,"ud14 [1]"); strcpy(Set_Vars_Coord_Var,"ud14"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble15") || !strcmp(token, "ud15")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE15; strcpy(Set_Vars_Coord_Label,"ud15 [1]"); strcpy(Set_Vars_Coord_Var,"ud15"); lmin = -1e10; lmax = 1e10; } + + /* now stores variable keywords detected, if any */ + if (Set_Vars_Coord_Type != DEFS->COORD_NONE) + { + int Coord_Number = Vars->Coord_Number; + if (Vars->Flag_log) { Set_Vars_Coord_Type |= DEFS->COORD_LOG; Vars->Flag_log = 0; } + if (Flag_abs) { Set_Vars_Coord_Type |= DEFS->COORD_ABS; Flag_abs = 0; } + if (Flag_auto != 0) { Set_Vars_Coord_Type |= DEFS->COORD_AUTO; + if (Flag_auto > 0) Flag_auto = 0; } + if (Set_Coord_Mode == DEFS->COORD_SIGNAL) + { + Coord_Number = 0; + Vars->Flag_signal = Set_Vars_Coord_Type; + } + else + { + if (Coord_Number < MONnD_COORD_NMAX) + { Coord_Number++; + Vars->Coord_Number = Coord_Number; + if (Set_Vars_Coord_Type != DEFS->COORD_PIXELID) + Vars->Coord_NumberNoPixel++; + } + else if (Vars->Flag_Verbose) printf("Monitor_nD: %s reached max number of variables (%i).\n", Vars->compcurname, MONnD_COORD_NMAX); + } + Vars->Coord_Type[Coord_Number] = Set_Vars_Coord_Type; + strncpy(Vars->Coord_Label[Coord_Number], Set_Vars_Coord_Label,30); + strncpy(Vars->Coord_Var[Coord_Number], Set_Vars_Coord_Var,30); + if (lmin > lmax) { XY = lmin; lmin=lmax; lmax = XY; } + Vars->Coord_Min[Coord_Number] = lmin; + Vars->Coord_Max[Coord_Number] = lmax; + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT || Set_Vars_Coord_Type == DEFS->COORD_PIXELID || Set_Vars_Coord_Type == DEFS->COORD_SIGNAL) + Vars->Coord_Bin[Coord_Number] = 1; + else + Vars->Coord_Bin[Coord_Number] = 20; + Set_Coord_Mode = DEFS->COORD_VAR; + Flag_All = 0; + Flag_No = 0; + } else { + /* no variable name could be read from options */ + if (!iskeyword) { + if (strcmp(token, "cm2") && strcmp(token, "incoming") + && strcmp(token, "outgoing") && strcmp(token, "cm2") + && strcmp(token, "cm^2") && strcmp(token, "float") + && strcmp(token, "double") && strcmp(token, "binary") + && strcmp(token, "steradian") && Vars->Flag_Verbose) + printf("Monitor_nD: %s: unknown '%s' keyword in 'options'. Ignoring.\n", Vars->compcurname, token); + } + } + carg++; + } /* end if token */ + } /* end while carg */ + free(option_copy); + if (carg == 128) printf("Monitor_nD: %s reached max number of tokens (%i). Skipping.\n", Vars->compcurname, 128); + + if ((Vars->Flag_Shape == DEFS->SHAPE_BOX) && (fabs(Vars->mzmax - Vars->mzmin) == 0)) Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + + if (Vars->Flag_log == 1) Vars->Coord_Type[0] |= DEFS->COORD_LOG; + if (Vars->Coord_Number == 0) + { Vars->Flag_Auto_Limits=0; Vars->Flag_Multiple=0; Vars->Flag_List=0; } + + /* now setting Monitor Name from variable labels */ + strcpy(Vars->Monitor_Label,""); + XY = 1; /* will contain total bin number */ + for (i = 0; i <= Vars->Coord_Number; i++) + { + if (Flag_auto != 0) Vars->Coord_Type[i] |= DEFS->COORD_AUTO; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if ((Set_Vars_Coord_Type == DEFS->COORD_X) + || (Set_Vars_Coord_Type == DEFS->COORD_Y) + || (Set_Vars_Coord_Type == DEFS->COORD_Z)) + strcpy(Short_Label[i],"Position"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_THETA) + || (Set_Vars_Coord_Type == DEFS->COORD_PHI) + || (Set_Vars_Coord_Type == DEFS->COORD_ANGLE)) + strcpy(Short_Label[i],"Angle"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_XY) + || (Set_Vars_Coord_Type == DEFS->COORD_XZ) + || (Set_Vars_Coord_Type == DEFS->COORD_YZ) + || (Set_Vars_Coord_Type == DEFS->COORD_RADIUS)) + strcpy(Short_Label[i],"Radius"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_VX) + || (Set_Vars_Coord_Type == DEFS->COORD_VY) + || (Set_Vars_Coord_Type == DEFS->COORD_VZ) + || (Set_Vars_Coord_Type == DEFS->COORD_V) + || (Set_Vars_Coord_Type == DEFS->COORD_VXY) + || (Set_Vars_Coord_Type == DEFS->COORD_VYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_VXZ)) + strcpy(Short_Label[i],"Velocity"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_KX) + || (Set_Vars_Coord_Type == DEFS->COORD_KY) + || (Set_Vars_Coord_Type == DEFS->COORD_KZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXY) + || (Set_Vars_Coord_Type == DEFS->COORD_KYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXZ) + || (Set_Vars_Coord_Type == DEFS->COORD_K)) + strcpy(Short_Label[i],"Wavevector"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_SX) + || (Set_Vars_Coord_Type == DEFS->COORD_SY) + || (Set_Vars_Coord_Type == DEFS->COORD_SZ)) + strcpy(Short_Label[i],"Spin"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_HDIV) + || (Set_Vars_Coord_Type == DEFS->COORD_VDIV)) + strcpy(Short_Label[i],"Divergence"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) + strcpy(Short_Label[i],"Energy"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) + strcpy(Short_Label[i],"Wavelength"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) + strcpy(Short_Label[i],"Neutron_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) + strcpy(Short_Label[i],"Pixel_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) + strcpy(Short_Label[i],"Time_Of_Flight"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) + strcpy(Short_Label[i],"Intensity"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) + strncpy(Short_Label[i],Vars->UserName1,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) + strncpy(Short_Label[i],Vars->UserName2,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) + strncpy(Short_Label[i],Vars->UserName3,30); + else + strcpy(Short_Label[i],"Unknown"); + + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) + { strcat(Vars->Coord_Label[i]," (abs)"); } + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) + { strcat(Vars->Coord_Label[i]," (log)"); } + + strcat(Vars->Monitor_Label, " "); + strcat(Vars->Monitor_Label, Short_Label[i]); + XY *= Vars->Coord_Bin[i]; + + } /* end for Short_Label */ + + if ((Vars->Coord_Type[0] & (DEFS->COORD_LOG-1)) == DEFS->COORD_P) { + strncat(Vars->Coord_Label[0], " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Vars->Coord_Label[0], "/cm2", 30); + + if (XY > 1 && Vars->Coord_Number) + strncat(Vars->Coord_Label[0], "/bin", 30); + strncat(Vars->Coord_Label[0], "]", 30); + } + + /* update label 'signal per bin' if more than 1 bin */ + if (XY > 1 && Vars->Coord_Number) { + if (Vars->Flag_capture) + printf("Monitor_nD: %s: Using capture flux weightening on %ld bins.\n" + "WARNING Use binned data with caution, and prefer monitor integral value (I,Ierr).\n", Vars->compcurname, (long)XY); + } + + strcat(Vars->Monitor_Label, " Monitor"); + if (Vars->Flag_Shape == DEFS->SHAPE_SQUARE) strcat(Vars->Monitor_Label, " (Square)"); + if (Vars->Flag_Shape == DEFS->SHAPE_DISK) strcat(Vars->Monitor_Label, " (Disk)"); + if (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) strcat(Vars->Monitor_Label, " (Sphere)"); + if (Vars->Flag_Shape == DEFS->SHAPE_CYLIND) strcat(Vars->Monitor_Label, " (Cylinder)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BANANA) strcat(Vars->Monitor_Label, " (Banana)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BOX) strcat(Vars->Monitor_Label, " (Box)"); + if (Vars->Flag_Shape == DEFS->SHAPE_PREVIOUS) strcat(Vars->Monitor_Label, " (on PREVIOUS)"); + if (Vars->Flag_Shape == DEFS->SHAPE_OFF) strcat(Vars->Monitor_Label, " (OFF geometry)"); + if ((Vars->Flag_Shape == DEFS->SHAPE_CYLIND) || (Vars->Flag_Shape == DEFS->SHAPE_BANANA) || (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) || (Vars->Flag_Shape == DEFS->SHAPE_BOX)) + { + if (strstr(Vars->option, "incoming")) + { + Vars->Flag_Shape = abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [in]"); + } + else /* if strstr(Vars->option, "outgoing")) */ + { + Vars->Flag_Shape = -abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [out]"); + } + } + if (Vars->Flag_UsePreMonitor == 1) + { + strcat(Vars->Monitor_Label, " at "); + strncat(Vars->Monitor_Label, Vars->UserName1,30); + } + if (Vars->Flag_log == 1) strcat(Vars->Monitor_Label, " [log] "); + + /* now allocate memory to store variables in TRACE */ + + /* Vars->Coord_Number 0 : intensity or signal + * Vars->Coord_Number 1:n : detector variables */ + + if ((Vars->Coord_NumberNoPixel != 2) && !Vars->Flag_Multiple && !Vars->Flag_List) + { Vars->Flag_Multiple = 1; /* default is n1D */ + if (Vars->Coord_Number != Vars->Coord_NumberNoPixel) Vars->Flag_List = 1; } + + /* list and auto limits case : Vars->Flag_List or Vars->Flag_Auto_Limits + * -> Buffer to flush and suppress after Vars->Flag_Auto_Limits + */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + Vars->Mon2D_Buffer = (double *)malloc((Vars->Coord_Number+1)*Vars->Buffer_Block*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot allocate Vars->Mon2D_Buffer (%zi). No list and auto limits.\n", Vars->compcurname, Vars->Buffer_Block*(Vars->Coord_Number+1)*sizeof(double)); Vars->Flag_List = 0; Vars->Flag_Auto_Limits = 0; } + else + { + for (i=0; i < (Vars->Coord_Number+1)*Vars->Buffer_Block; Vars->Mon2D_Buffer[i++] = (double)0); + } + Vars->Buffer_Size = Vars->Buffer_Block; + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_NumberNoPixel) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, (Vars->Coord_Number)*sizeof(double *)); exit(-1); } + for (i= 1; i <= Vars->Coord_Number; i++) + { + Vars->Mon2D_N[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p2[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[i], i, (Vars->Coord_Bin[i])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[i]; j++ ) + { Vars->Mon2D_N[i-1][j] = (double)0; Vars->Mon2D_p[i-1][j] = (double)0; Vars->Mon2D_p2[i-1][j] = (double)0; } + } + } + } + else /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], (Vars->Coord_Bin[1])*sizeof(double *)); exit(-1); } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + Vars->Mon2D_N[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p2[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], i, (Vars->Coord_Bin[2])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[2]; j++ ) + { Vars->Mon2D_N[i][j] = (double)0; Vars->Mon2D_p[i][j] = (double)0; Vars->Mon2D_p2[i][j] = (double)0; } + } + } + } + else { + Vars->Mon2D_N = Vars->Mon2D_p = Vars->Mon2D_p2 = NULL; + } + /* no Mon2D allocated for + * (Vars->Coord_Number != 2) && !Vars->Flag_Multiple && Vars->Flag_List */ + + Vars->psum = 0; + Vars->p2sum = 0; + Vars->Nsum = 0; + + Vars->area = fabs(Vars->mxmax - Vars->mxmin)*fabs(Vars->mymax - Vars->mymin)*1E4; /* in cm**2 for square and box shapes */ + Vars->Sphere_Radius = fabs(Vars->mxmax - Vars->mxmin)/2; + if ((abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + { + Vars->area = PI*Vars->Sphere_Radius*Vars->Sphere_Radius*1E4; /* disk shapes */ + } + + + if (Vars->area == 0 && abs(Vars->Flag_Shape) != DEFS->SHAPE_PREVIOUS ) { + if (abs(Vars->Flag_Shape) != DEFS->SHAPE_OFF) { + Vars->Coord_Number = 0; + } + } + if (Vars->Coord_Number == 0 && Vars->Flag_Verbose) + printf("Monitor_nD: %s is inactivated (0D)\n", Vars->compcurname); + Vars->Cylinder_Height = fabs(Vars->mymax - Vars->mymin); + + if (Vars->Flag_Verbose) + { + printf("Monitor_nD: %s is a %s.\n", Vars->compcurname, Vars->Monitor_Label); + printf("Monitor_nD: version %s with options=%s\n", MONITOR_ND_LIB_H, Vars->option); + } + + /* compute the product of bin dimensions for PixelID */ + Vars->Coord_BinProd[0]=1; + + for (i = 1; i <= Vars->Coord_Number; i++) { + Vars->Coord_BinProd[i]=Vars->Coord_Bin[i]*Vars->Coord_BinProd[i-1]; + } + + #ifdef USE_NEXUS + + #ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { + #endif + if(nxhandle) { + + /* This section of code writes detector shape information to + entryN/instrument/components/'name'/geometry in the NeXus file */ + + char nexuscomp[CHAR_BUF_LENGTH]; + char pref[5]; + if (Vars->compcurindex-1 < 10) { + sprintf(pref,"000"); + } else if (Vars->compcurindex-1 < 100) { + sprintf(pref,"00"); + } else if (Vars->compcurindex-1 < 1000) { + sprintf(pref,"0"); + } else if (Vars->compcurindex-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,Vars->compcurname); + + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, nexuscomp, "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + char tmp[CHAR_BUF_LENGTH]; + sprintf(tmp,"%g",Vars->Sphere_Radius); + nxprintattr(nxhandle, "radius", tmp); + + sprintf(tmp,"%g",Vars->Cylinder_Height); + nxprintattr(nxhandle, "height", tmp); + + sprintf(tmp,"%g",Vars->mxmin); + nxprintattr(nxhandle, "xmin", tmp); + sprintf(tmp,"%g",Vars->mxmax); + nxprintattr(nxhandle, "xmax", tmp); + + sprintf(tmp,"%g",Vars->mymin); + nxprintattr(nxhandle, "ymin", tmp); + sprintf(tmp,"%g",Vars->mymax); + nxprintattr(nxhandle, "ymax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%i",Vars->Flag_Shape); + nxprintattr(nxhandle, "Shape identifier", tmp); + sprintf(tmp,"%s",Vars->Monitor_Label); + nxprintattr(nxhandle, "Shape string", tmp); + sprintf(tmp,"%s",Vars->option); + nxprintattr(nxhandle, "Option string", tmp); + + NXclosegroup(nxhandle); // Geometry + } else { + printf("Failed to open component NeXus component Geometry group\n"); + } + } else { + printf("Failed to create component NeXus component Geometry group\n"); + } + NXclosegroup(nxhandle); // component + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } + + /* Below code communicates geometry-oriented "BINS" for the detector. */ + char metadata[CHAR_BUF_LENGTH]; + char metadatatmp[CHAR_BUF_LENGTH]; + // Vars for 1D, >3D, OFF + long numbins; + long minbins = 0; + long maxbins = 0; + char binlabel[CHAR_BUF_LENGTH]; + char binvar[CHAR_BUF_LENGTH]; + sprintf(binlabel,"none"); + sprintf(binvar,"none"); + + // Find index of pixel column + int id_index; + for (id_index=0;id_index<30;id_index++) { + if (strcmp(Vars->Coord_Var[id_index], "id") == 0) break; + } + if (id_index == 30) id_index = Vars->Coord_Number-1; // Revert to earlier behavior is id not found + long pix=Vars->Coord_Min[id_index]; + + MCDETECTOR detector; + + /* Init - perhaps better with an init-function in mccode-r? */ + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + + sprintf(detector.filename,"BINS"); + sprintf(detector.component,"%s",Vars->compcurname); + sprintf(detector.nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,detector.component); + sprintf(detector.format,"pixels"); + + if(!Vars->Flag_OFF) { + + sprintf(metadata,"id=%ld + %ld pixels: ",(long)Vars->Coord_Min[id_index],(long)Vars->Coord_BinProd[Vars->Coord_Number]); + for (i=1; iCoord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + } + sprintf(metadatatmp,"%s %s (%ld bins)",metadata,Vars->Coord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + numbins = Vars->Coord_BinProd[Vars->Coord_Number]; + if (N_spatial_dims==1) { + minbins=Vars->Coord_Min[1]; + maxbins=Vars->Coord_Max[1]; + sprintf(binlabel,"%s",Vars->Coord_Label[1]); + sprintf(binvar,"%s",Vars->Coord_Var[1]); + } else if (N_spatial_dims>3) { + minbins=1; + maxbins=Vars->Coord_BinProd[Vars->Coord_Number]; + sprintf(binlabel,"More than 3 dimensions"); + sprintf(binvar,"wrapped_variables_4plus_dims"); + N_spatial_dims=1; + } + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } else { + numbins = Vars->Flag_OFF; + minbins=1; + maxbins=Vars->Flag_OFF; + sprintf(binlabel,"OFF pixel index"); + sprintf(binvar,"OFF"); + N_spatial_dims=1; + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } + + long k,l,m; + if (N_spatial_dims==1) { // 1D case or ND + detector.m=numbins; + detector.n=1; + detector.p=1; + detector.rank=1; + detector.p0=(double *)calloc(numbins, sizeof(double)); + detector.p1=(double *)calloc(numbins, sizeof(double)); + detector.p2=(double *)calloc(numbins, sizeof(double)); + if (Vars->Flag_Verbose) printf("1D case %ld \n",Vars->Coord_Bin[1]); + for (k=0; kFlag_Verbose) printf("Assigning pixel no [%ld] = %ld\n",k,pix); + detector.p1[k]=pix; + pix++; + } + mcdetector_out_1D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==2) { // 2D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=1; + detector.rank=2; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("2D case %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld] = %ld\n",l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]+l]=pix; + pix++; + } + } + mcdetector_out_2D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==3) { // 3D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=Vars->Coord_Bin[3];; + detector.rank=3; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + sprintf(detector.zlabel,"%s",Vars->Coord_Label[3]); + sprintf(detector.zvar,"%s",Vars->Coord_Var[3]); + detector.zmin=Vars->Coord_Min[3]; + detector.zmax=Vars->Coord_Max[3]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("3D case %ld x %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2],Vars->Coord_Bin[3]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + for (m=0; mCoord_Bin[3]; m++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld,%ld] = %ld\n",m,l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]*Vars->Coord_Bin[3] + l*Vars->Coord_Bin[3] + m]=pix; + pix++; + } + } + } + mcdetector_out_3D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } + } // nxhandle available + #ifdef USE_MPI + } // Master only + #endif + + #endif // USE_NEXUS + } /* end Monitor_nD_Init */ + +/* ========================================================================= */ +/* Monitor_nD_Trace: this routine is used to monitor one propagating neutron */ +/* return values: 0=neutron was absorbed, -1=neutron was outside bounds, 1=neutron was measured*/ +/* ========================================================================= */ + +int Monitor_nD_Trace(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars, _class_particle* _particle) +{ + + double XY=0, pp=0; + long i =0, j =0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char While_End =0; + long While_Buffer=0; + char Set_Vars_Coord_Type = DEFS->COORD_NONE; + + /* the logic below depends mainly on: + Flag_List: 1=store 1 buffer, 2=list all, 3=re-use buffer + Flag_Auto_Limits: 0 (no auto limits/list), 1 (store events into Buffer), 2 (re-emit store events) + */ + + /* Vars->Flag_Auto_Limits=1: buffer full, we read the Buffer, and determine min and max bounds */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 1) && (Vars->Coord_Number > 0)) + { + /* auto limits case : get limits in Buffer for each variable */ + /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + for (i = 1; i <= Vars->Coord_Number; i++) + { + if (Vars->Coord_Type[i] & DEFS->COORD_AUTO) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step (read Buffer and generate new events to store in histograms) */ + } /* end if Flag_Auto_Limits == 1 */ + +#ifndef OPENACC + /* manage realloc for 'list all' if Buffer size exceeded: flush Buffer to file */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List >= 2)) + { + if (Vars->Buffer_Size >= 1000000 || Vars->Flag_List == 3) + { /* save current (possibly append) and re-use Buffer */ + + Monitor_nD_Save(DEFS, Vars); + Vars->Flag_List = 3; + Vars->Buffer_Block = Vars->Buffer_Size; + Vars->Buffer_Counter = 0; + Vars->Neutron_Counter = 0; + } + else + { + Vars->Mon2D_Buffer = (double *)realloc(Vars->Mon2D_Buffer, (Vars->Coord_Number+1)*(2*Vars->Buffer_Block)*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot reallocate Vars->Mon2D_Buffer[%li] (%zi). Skipping.\n", Vars->compcurname, i, (long int)(2*Vars->Buffer_Block)*sizeof(double)); Vars->Flag_List = 1; } + else { + Vars->Buffer_Block = 2*Vars->Buffer_Block; + Vars->Buffer_Size = Vars->Buffer_Block; + } + } + } /* end if Buffer realloc */ +#endif + + char outsidebounds=0; + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) or passing neutron */ + if ((Vars->Flag_Auto_Limits == 2) && (Vars->Coord_Number > 0)) + { /* Vars->Flag_Auto_Limits == 2: read back from Buffer (Buffer is filled or auto limits have been computed) */ + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loop (While_Buffer) */ + /* auto limits case : scan Buffer within limits and store in Mon2D */ + Coord[0] = pp = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) continue; + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + if (Vars->Coord_NumberNoPixel < Vars->Coord_Number) /* there is a Pixel variable */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char flag_outside=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!flag_outside) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + if (!Vars->Flag_List) /* free Buffer not needed anymore (no list to output) */ + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, p2) */ + free(Vars->Mon2D_Buffer); Vars->Mon2D_Buffer = NULL; + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + } /* if Vars->Flag_Auto_Limits == 2 */ + + if (Vars->Flag_Auto_Limits != 2 || !Vars->Coord_Number) /* Vars->Flag_Auto_Limits == 0 (no auto limits/list) or 1 (store events into Buffer) */ + { + /* automatically compute area and steradian solid angle when in AUTO mode */ + /* compute the steradian solid angle incoming on the monitor */ + double v; + double tmp; + v=sqrt(_particle->vx*_particle->vx + _particle->vy*_particle->vy + _particle->vz*_particle->vz); + tmp=_particle->x; + if (Vars->min_x > _particle->x){ + #pragma acc atomic write + Vars->min_x = tmp; + } + if (Vars->max_x < _particle->x){ + #pragma acc atomic write + Vars->max_x = tmp; + } + tmp=_particle->y; + if (Vars->min_y > _particle->y){ + #pragma acc atomic write + Vars->min_y = tmp; + } + if (Vars->max_y < _particle->y){ + tmp=_particle->y; + #pragma acc atomic write + Vars->max_y = tmp; + } + + #pragma acc atomic + Vars->mean_p = Vars->mean_p + _particle->p; + if (v) { + tmp=_particle->p*fabs(_particle->vx/v); + #pragma acc atomic + Vars->mean_dx = Vars->mean_dx + tmp; //_particle->p*fabs(_particle->vx/v); + tmp=_particle->p*fabs(_particle->vy/v); + #pragma acc atomic + Vars->mean_dy = Vars->mean_dy + tmp; //_particle->p*fabs(_particle->vy/v); + } + + for (i = 0; i <= Vars->Coord_Number; i++) + { /* handle current neutron : last while */ + XY = 0; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + /* get values for variables to monitor */ + if (Set_Vars_Coord_Type == DEFS->COORD_X) XY = _particle->x; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Y) XY = _particle->y; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Z) XY = _particle->z; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VX) XY = _particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VY) XY = _particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VZ) XY = _particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KX) XY = V2K*_particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KY) XY = V2K*_particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KZ) XY = V2K*_particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SX) XY = _particle->sx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SY) XY = _particle->sy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SZ) XY = _particle->sz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) XY = _particle->t; + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) XY = _particle->p; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE0) XY = Vars->UserDoubles[0]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE1) XY = Vars->UserDoubles[1]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE2) XY = Vars->UserDoubles[2]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE3) XY = Vars->UserDoubles[3]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE4) XY = Vars->UserDoubles[4]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE5) XY = Vars->UserDoubles[5]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE6) XY = Vars->UserDoubles[6]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE7) XY = Vars->UserDoubles[7]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE8) XY = Vars->UserDoubles[8]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE9) XY = Vars->UserDoubles[9]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE10) XY = Vars->UserDoubles[10]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE11) XY = Vars->UserDoubles[11]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE12) XY = Vars->UserDoubles[12]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE13) XY = Vars->UserDoubles[13]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE14) XY = Vars->UserDoubles[14]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE15) XY = Vars->UserDoubles[15]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV) XY = RAD2DEG*atan2(_particle->vx,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VDIV) XY = RAD2DEG*atan2(_particle->vy,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_V) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XY) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y)*(_particle->x > 0 ? 1 : -1); + else + if (Set_Vars_Coord_Type == DEFS->COORD_YZ) XY = sqrt(_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XZ) + XY = sqrt(_particle->x*_particle->x+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXY) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXZ) XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VYZ) XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_K) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXY) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXZ) { XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KYZ) { XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) { XY = _particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz; XY *= VS2E; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; if (XY != 0) XY = 2*PI/XY; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) XY = _particle->_uid; + else + if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + if (_particle->vz != 0) + XY = RAD2DEG*atan2(XY,_particle->vz)*(_particle->x > 0 ? 1 : -1); + else XY = 0; + } + else + if (Set_Vars_Coord_Type == DEFS->COORD_THETA) { if (_particle->z != 0) XY = RAD2DEG*atan2(_particle->x,_particle->z); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PHI) { double rr=sqrt(_particle->x*_particle->x+ _particle->y*_particle->y + _particle->z*_particle->z); if (rr != 0) XY = RAD2DEG*asin(_particle->y/rr); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) {int fail; XY = particle_getvar(_particle,Vars->UserVariable1,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) {int fail; XY = particle_getvar(_particle,Vars->UserVariable2,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) {int fail; XY = particle_getvar(_particle,Vars->UserVariable3,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID && !Vars->Flag_Auto_Limits) { + /* compute the PixelID from previous coordinates + the PixelID is the product of Coord_Index[i] in the detector geometry + pixelID = sum( Coord_Index[j]*prod(Vars->Coord_Bin[1:(j-1)]) ) + + this does not apply when we store events in the buffer as Coord_Index + is not set. Then the pixelID will be re-computed during SAVE. + */ + char flag_outside=0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] <= 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; XY=0; break; + } + XY += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (Vars->Flag_mantid && Vars->Flag_OFF && Vars->OFF_polyidx >=0) XY=Vars->OFF_polyidx; + if (!flag_outside) XY += Vars->Coord_Min[i]; + } + + /* handle 'abs' and 'log' keywords */ + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) XY=fabs(XY); + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) /* compute log of variable if requested */ + { if (XY > 0) XY = log(XY)/log(10); + else XY = -100; } + + Coord[i] = XY; Coord_Index[i] = 0; + if (i == 0) { pp = XY; Coord_Index[i] = 0; } + else { + /* check bounds for variables which have no automatic limits */ + if ((!Vars->Flag_Auto_Limits || !(Vars->Coord_Type[i] & DEFS->COORD_AUTO)) && Vars->Coord_Bin[i]>1) + { /* compute index in histograms for each variable to monitor */ + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + } + //if (0 > Coord_Index[i] || Coord_Index[i] >= Vars->Coord_Bin[i]) + // outsidebounds=1; + } /* else will get Index later from Buffer when Flag_Auto_Limits == 2 */ + } + + } /* end for i */ + While_End = 1; + }/* end else if Vars->Flag_Auto_Limits == 2 */ + + /* ====================================================================== */ + /* store n1d/2d neutron from Buffer (Auto_Limits == 2) or current neutron in while */ + if (Vars->Flag_Auto_Limits != 1) /* not when storing auto limits Buffer */ + { + /* apply per cm2 */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ( Vars->Coord_NumberNoPixel == 2 && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i][j] = Vars->Mon2D_N[i][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i][j] = Vars->Mon2D_p[i][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i][j] = Vars->Mon2D_p2[i][j] + p2; + } + } else { + outsidebounds=1; + } + } else { + /* 1D and n1D case : Vars->Flag_Multiple */ + /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + + for (i= 1; i <= Vars->Coord_Number; i++) { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i-1][j] = Vars->Mon2D_N[i-1][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i-1][j] = Vars->Mon2D_p[i-1][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i-1][j] = Vars->Mon2D_p2[i-1][j] + p2; + } + } + } else { + outsidebounds=1; + break; + } + } + } + } /* end (Vars->Flag_Auto_Limits != 1) */ + + if (Vars->Flag_Auto_Limits != 2 && !outsidebounds) /* not when reading auto limits Buffer */ + { /* now store Coord into Buffer (no index needed) if necessary (list or auto limits) */ + if ((Vars->Buffer_Counter < Vars->Buffer_Block) && ((Vars->Flag_List) || (Vars->Flag_Auto_Limits == 1))) + { + for (i = 0; i <= Vars->Coord_Number; i++) + { + // This is is where the list is appended. How to make this "atomic"? + #pragma acc atomic write + Vars->Mon2D_Buffer[i + Vars->Buffer_Counter*(Vars->Coord_Number+1)] = Coord[i]; + } + #pragma acc atomic update + Vars->Buffer_Counter = Vars->Buffer_Counter + 1; + if (Vars->Flag_Verbose && (Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List == 1)) + printf("Monitor_nD: %s %li neutrons stored in List.\n", Vars->compcurname, Vars->Buffer_Counter); + } + } /* end (Vars->Flag_Auto_Limits != 2) */ + + } /* end while */ + #pragma acc atomic + Vars->Nsum = Vars->Nsum + 1; + #pragma acc atomic + Vars->psum = Vars->psum + pp; + #pragma acc atomic + Vars->p2sum = Vars->p2sum + pp*pp; + + /*determine return value: 1:neutron was in bounds and measured, -1: outside bounds, 0: outside bounds, should be absorbed.*/ + if(outsidebounds){ + if(Vars->Flag_Absorb){ + return 0; + }else{ + return -1; + } + } else { + /* For the OPENACC list buffer an atomic capture/update of the + updated Neutron_counter - updated below under list mode + Only need to be updated when inside bounds. */ + #pragma acc atomic update + Vars->Neutron_Counter++; + } + return 1; +} /* end Monitor_nD_Trace */ + +/* ========================================================================= */ +/* Monitor_nD_Save: this routine is used to save data files */ +/* ========================================================================= */ + +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars) + { + char *fname; + long i,j; + double *p0m = NULL; + double *p1m = NULL; + double *p2m = NULL; + char Coord_X_Label[CHAR_BUF_LENGTH]; + double min1d, max1d; + double min2d, max2d; + char While_End = 0; + long While_Buffer = 0; + double XY=0, pp=0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char label[CHAR_BUF_LENGTH]; + + MCDETECTOR detector; + strcpy(detector.options,Vars->option); + if (Vars->Flag_Verbose && Vars->Flag_per_cm2) { + printf("Monitor_nD: %s: active flat detector area is %g [cm^2], total area is %g [cm^2]\n", + Vars->compcurname, (Vars->max_x-Vars->min_x) + *(Vars->max_y-Vars->min_y)*1E4, Vars->area); + printf("Monitor_nD: %s: beam solid angle is %g [st] (%g x %g [deg^2])\n", + Vars->compcurname, + 2*fabs(2*atan2(Vars->mean_dx,Vars->mean_p) + *sin(2*atan2(Vars->mean_dy,Vars->mean_p)/2)), + atan2(Vars->mean_dx,Vars->mean_p)*RAD2DEG, + atan2(Vars->mean_dy,Vars->mean_p)*RAD2DEG); + } + + /* check Buffer flush when end of simulation reached */ + if ((Vars->Buffer_Counter <= Vars->Buffer_Block) && Vars->Flag_Auto_Limits && Vars->Mon2D_Buffer && Vars->Buffer_Counter) + { + /* Get Auto Limits */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + + for (i = 1; i <= Vars->Coord_Number; i++) + { + if ((Vars->Coord_Type[i] & DEFS->COORD_AUTO) && Vars->Coord_Bin[i] > 1) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g in %li bins\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i], Vars->Coord_Bin[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step */ + Vars->Buffer_Block = Vars->Buffer_Counter; + + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) */ + /* simulation ended before Buffer was filled. Limits have to be computed, and stored events must be sent into histograms */ + + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loops (While_Buffer) */ + Coord[0] = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + /* auto limits case : scan Buffer within limits and store in Mon2D */ + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) Coord_Index[i] = 0; + else { + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char outsidebounds=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + outsidebounds=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!outsidebounds) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + While_End = 1; + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + + /* store n1d/2d section from Buffer */ + + pp = Coord[0]; + /* apply per cm2 or per st */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if (!Vars->Flag_Multiple && Vars->Coord_NumberNoPixel == 2) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + Vars->Mon2D_N[i][j]++; + Vars->Mon2D_p[i][j] += pp; + Vars->Mon2D_p2[i][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) pp=0; + } + else + /* 1D and n1D case : Vars->Flag_Multiple */ + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + for (i= 1; i <= Vars->Coord_Number; i++) + { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) + { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + Vars->Mon2D_N[i-1][j]++; + Vars->Mon2D_p[i-1][j] += pp; + Vars->Mon2D_p2[i-1][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) { + pp=0; break; + } + } + } /* end store 2D/1D */ + + } /* end while */ + } /* end Force Get Limits */ + + /* write output files (sent to file as p[i*n + j] vectors) */ + if (Vars->Coord_Number == 0) + { + double Nsum; + double psum, p2sum; + Nsum = Vars->Nsum; + psum = Vars->psum; + p2sum= Vars->p2sum; + if (Vars->Flag_signal != DEFS->COORD_P && Nsum > 0) + { psum /=Nsum; p2sum /= Nsum*Nsum; } + /* DETECTOR_OUT_0D(Vars->Monitor_Label, Vars->Nsum, Vars->psum, Vars->p2sum); */ + detector = mcdetector_out_0D(Vars->Monitor_Label, Nsum, psum, p2sum, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + else + if (strlen(Vars->Mon_File) > 0) + { + fname = (char*)malloc(strlen(Vars->Mon_File)+10*Vars->Coord_Number); + if (Vars->Flag_List && Vars->Mon2D_Buffer) /* List: DETECTOR_OUT_2D */ + { + + if (Vars->Flag_List >= 2) Vars->Buffer_Size = Vars->Neutron_Counter; + if (Vars->Buffer_Size >= Vars->Neutron_Counter) + Vars->Buffer_Size = Vars->Neutron_Counter; + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) strcat(fname, "_list"); + + strcpy(Coord_X_Label,""); + for (i= 0; i <= Vars->Coord_Number; i++) + { + strcat(Coord_X_Label, Vars->Coord_Var[i]); + strcat(Coord_X_Label, " "); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i]); } + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s List (%lix%li).\n", Vars->compcurname, fname,(long int)Vars->Neutron_Counter,Vars->Coord_Number); + + /* handle the type of list output */ + strcpy(label, Vars->Monitor_Label); + + detector = mcdetector_out_list( + label, "List of neutron events", Coord_X_Label, + -Vars->Buffer_Size, Vars->Coord_Number+1, + Vars->Mon2D_Buffer, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot, Vars->option,Vars->compcurindex); + } + if (Vars->Flag_Multiple) /* n1D: DETECTOR_OUT_1D */ + { + for (i= 0; i < Vars->Coord_Number; i++) + { + + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i+1]); } + sprintf(Coord_X_Label, "%s monitor", Vars->Coord_Label[i+1]); + strcpy(label, Coord_X_Label); + if (Vars->Coord_Bin[i+1] > 0) { /* 1D monitor */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 1D (%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[i+1]); + min1d = Vars->Coord_Min[i+1]; + max1d = Vars->Coord_Max[i+1]; + if (min1d == max1d) max1d = min1d+1e-6; + p1m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + if (p2m == NULL) /* use Raw Buffer line output */ + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for output. Using raw data.\n", Vars->compcurname); + if (p1m != NULL) free(p1m); + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],Vars->Mon2D_p[i],Vars->Mon2D_p2[i], + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } /* if (p2m == NULL) */ + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (j=0; j < Vars->Coord_Bin[i+1]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j] > 0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } /* if */ + + for (j=0; j < Vars->Coord_Bin[i+1]; j++) + { + p1m[j] = Vars->Mon2D_p[i][j]; + p2m[j] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && Vars->Mon2D_N[i][j] > 0) + { /* normalize mean signal to the number of events */ + p1m[j] /= Vars->Mon2D_N[i][j]; + p2m[j] /= Vars->Mon2D_N[i][j]*Vars->Mon2D_N[i][j]; + } + if (Vars->Flag_log != 0) + { + if ((p1m[j] > 0) && (p2m[j] > 0)) + { + p2m[j] /= p1m[j]*p1m[j]; + p1m[j] = log(p1m[j])/log(10); + } + else + { + p1m[j] = XY; + p2m[j] = 0; + } + } + } /* for */ + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + + } /* else */ + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p1m != NULL) free(p1m); p1m=NULL; + if (p2m != NULL) free(p2m); p2m=NULL; + */ + } else { /* 0d monitor */ + detector = mcdetector_out_0D(label, Vars->Mon2D_p[i][0], Vars->Mon2D_p2[i][0], Vars->Mon2D_N[i][0], Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + + } /* for */ + } /* if 1D */ + else + if (Vars->Coord_NumberNoPixel == 2) /* 2D: DETECTOR_OUT_2D */ + { + strcpy(fname,Vars->Mon_File); + + p0m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p1m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + if (p2m == NULL) + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for 2D array (%zi). Skipping.\n", Vars->compcurname, 3*Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + */ + } + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (i= 0; i < Vars->Coord_Bin[1]; i++) + for (j= 0; j < Vars->Coord_Bin[2]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j]>0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + for (j= 0; j < Vars->Coord_Bin[2]; j++) + { + long index; + index = j + i*Vars->Coord_Bin[2]; + p0m[index] = Vars->Mon2D_N[i][j]; + p1m[index] = Vars->Mon2D_p[i][j]; + p2m[index] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && p0m[index] > 0) + { + p1m[index] /= p0m[index]; + p2m[index] /= p0m[index]*p0m[index]; + } + + if (Vars->Flag_log != 0) + { + if ((p1m[index] > 0) && (p2m[index] > 0)) + { + p2m[index] /= (p1m[index]*p1m[index]); + p1m[index] = log(p1m[index])/log(10); + + } + else + { + p1m[index] = XY; + p2m[index] = 0; + } + } + } + } + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[1]); + strcat(fname, "_"); strcat(fname, Vars->Coord_Var[2]); } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 2D (%lix%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[1], Vars->Coord_Bin[2]); + + min1d = Vars->Coord_Min[1]; + max1d = Vars->Coord_Max[1]; + if (min1d == max1d) max1d = min1d+1e-6; + min2d = Vars->Coord_Min[2]; + max2d = Vars->Coord_Max[2]; + if (min2d == max2d) max2d = min2d+1e-6; + strcpy(label, Vars->Monitor_Label); + if (Vars->Coord_Bin[1]*Vars->Coord_Bin[2] > 1 + && Vars->Flag_signal == DEFS->COORD_P) + strcat(label, " per bin"); + if (Vars->Flag_List) { + detector = mcdetector_out_2D_list( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->option,Vars->compcurindex); + } else { + detector = mcdetector_out_2D( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + if (p2m != NULL) free(p2m); + */ + } + } + free(fname); + } + return(detector); + } /* end Monitor_nD_Save */ + +/* ========================================================================= */ +/* Monitor_nD_Finally: this routine is used to free memory */ +/* ========================================================================= */ + +void Monitor_nD_Finally(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + int i; + + /* Now Free memory Mon2D.. */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Mon2D_Buffer != NULL) free(Vars->Mon2D_Buffer); + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_Number) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + for (i= 0; i < Vars->Coord_Number; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + } /* end Monitor_nD_Finally */ + +/* ========================================================================= */ +/* Monitor_nD_McDisplay: this routine is used to display component */ +/* ========================================================================= */ + +void Monitor_nD_McDisplay(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + double radius, h; + double xmin; + double xmax; + double ymin; + double ymax; + double zmin; + double zmax; + int i; + double hdiv_min=-180, hdiv_max=180, vdiv_min=-90, vdiv_max=90; + char restricted = 0; + + radius = Vars->Sphere_Radius; + h = Vars->Cylinder_Height; + xmin = Vars->mxmin; + xmax = Vars->mxmax; + ymin = Vars->mymin; + ymax = Vars->mymax; + zmin = Vars->mzmin; + zmax = Vars->mzmax; + + /* determine if there are angular limits set at start (no auto) in coord_types + * cylinder/banana: look for hdiv + * sphere: look for angle, radius (->atan2(val,radius)), hdiv, vdiv + * this activates a 'restricted' flag, to draw a region as blades on cylinder/sphere + */ + for (i= 0; i <= Vars->Coord_Number; i++) + { + int Set_Vars_Coord_Type; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV || Set_Vars_Coord_Type == DEFS->COORD_THETA) + { hdiv_min = Vars->Coord_Min[i]; hdiv_max = Vars->Coord_Max[i]; restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_VDIV || Set_Vars_Coord_Type == DEFS->COORD_PHI) + { vdiv_min = Vars->Coord_Min[i]; vdiv_max = Vars->Coord_Max[i];restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { hdiv_min = vdiv_min = Vars->Coord_Min[i]; + hdiv_max = vdiv_max = Vars->Coord_Max[i]; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + { double angle; + angle = RAD2DEG*atan2(Vars->Coord_Max[i], radius); + hdiv_min = vdiv_min = angle; + hdiv_max = vdiv_max = angle; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_Y && abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE) + { + vdiv_min = atan2(ymin,radius)*RAD2DEG; + vdiv_max = atan2(ymax,radius)*RAD2DEG; + restricted = 1; + } + } + /* full sphere */ + if ((!restricted && (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + || abs(Vars->Flag_Shape) == DEFS->SHAPE_PREVIOUS) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + mcdis_circle("xz",0,0,0,radius); + mcdis_circle("yz",0,0,0,radius); + } + /* banana/cylinder/sphere portion */ + else + if (restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE))) + { + int NH=24, NV=24; + int ih, iv; + double width, height; + int issphere; + issphere = (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE); + width = (hdiv_max-hdiv_min)/NH; + if (!issphere) { + NV=1; /* cylinder has vertical axis */ + } + height= (vdiv_max-vdiv_min)/NV; + + /* check width and height of elements (sphere) to make sure the nb + of plates remains limited */ + if (width < 10 && NH > 1) { width = 10; NH=(hdiv_max-hdiv_min)/width; width=(hdiv_max-hdiv_min)/NH; } + if (height < 10 && NV > 1) { height = 10; NV=(vdiv_max-vdiv_min)/height; height= (vdiv_max-vdiv_min)/NV; } + + mcdis_magnify("xyz"); + for(ih = 0; ih < NH; ih++) + for(iv = 0; iv < NV; iv++) + { + double theta0, phi0, theta1, phi1; /* angles in spherical coordinates */ + double x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3; /* vertices at plate edges */ + phi0 = (hdiv_min+ width*ih-90)*DEG2RAD; /* in xz plane */ + phi1 = (hdiv_min+ width*(ih+1)-90)*DEG2RAD; + if (issphere) + { + theta0= (vdiv_min+height* iv + 90) *DEG2RAD; /* in vertical plane */ + theta1= (vdiv_min+height*(iv+1) + 90)*DEG2RAD; + + y0 = -radius*cos(theta0); /* z with Z vertical */ + y1 = -radius*cos(theta1); + if (y0 < ymin) y0=ymin; + if (y0 > ymax) y0=ymax; + if (y1 < ymin) y1=ymin; + if (y1 > ymax) y1=ymax; + } else { + y0 = ymin; + y1 = ymax; + theta0=theta1=90*DEG2RAD; + } + + x0 = radius*sin(theta0)*cos(phi0); /* x with Z vertical */ + z0 =-radius*sin(theta0)*sin(phi0); /* y with Z vertical */ + x1 = radius*sin(theta1)*cos(phi0); + z1 =-radius*sin(theta1)*sin(phi0); + x2 = radius*sin(theta1)*cos(phi1); + z2 =-radius*sin(theta1)*sin(phi1); + x3 = radius*sin(theta0)*cos(phi1); + z3 =-radius*sin(theta0)*sin(phi1); + y2 = y1; y3 = y0; + + mcdis_multiline(5, + x0,y0,z0, + x1,y1,z1, + x2,y2,z2, + x3,y3,z3, + x0,y0,z0); + } + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dt, dy; + dt = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_BANANA_DET: %g, %g, %g, %g, %g, %li, %li, %llu\n", radius, + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* disk (circle) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + } + /* rectangle (square) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_SQUARE) + { + mcdis_magnify("xy"); + mcdis_multiline(5, (double)xmin, (double)ymin, 0.0, + (double)xmax, (double)ymin, 0.0, + (double)xmax, (double)ymax, 0.0, + (double)xmin, (double)ymax, 0.0, + (double)xmin, (double)ymin, 0.0); + + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dx, dy; + dx = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_RECTANGULAR_DET: %g, %g, %g, %g, %li, %li, %llu\n", + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* full cylinder/banana */ + else + if (!restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA))) + { + mcdis_magnify("xyz"); + mcdis_circle("xz", 0, h/2.0, 0, radius); + mcdis_circle("xz", 0, -h/2.0, 0, radius); + mcdis_line(-radius, -h/2.0, 0, -radius, +h/2.0, 0); + mcdis_line(+radius, -h/2.0, 0, +radius, +h/2.0, 0); + mcdis_line(0, -h/2.0, -radius, 0, +h/2.0, -radius); + mcdis_line(0, -h/2.0, +radius, 0, +h/2.0, +radius); + } + else + /* box */ + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_BOX) + { + mcdis_magnify("xyz"); + mcdis_multiline(5, xmin, ymin, zmin, + xmax, ymin, zmin, + xmax, ymax, zmin, + xmin, ymax, zmin, + xmin, ymin, zmin); + mcdis_multiline(5, xmin, ymin, zmax, + xmax, ymin, zmax, + xmax, ymax, zmax, + xmin, ymax, zmax, + xmin, ymin, zmax); + mcdis_line(xmin, ymin, zmin, xmin, ymin, zmax); + mcdis_line(xmax, ymin, zmin, xmax, ymin, zmax); + mcdis_line(xmin, ymax, zmin, xmin, ymax, zmax); + mcdis_line(xmax, ymax, zmin, xmax, ymax, zmax); + } + } /* end Monitor_nD_McDisplay */ + +/* end of monitor_nd-lib.c */ + + + + + + +/* ************************************************************************** */ +/* End of SHARE user declarations for all components */ +/* ************************************************************************** */ + + +/* ********************** component definition declarations. **************** */ + +/* component Origin=Progress_bar() [1] DECLARE */ +/* Parameter definition for component type 'Progress_bar' */ +struct _struct_Progress_bar_parameters { + /* Component type 'Progress_bar' setting parameters */ + char profile[16384]; + MCNUM percent; + MCNUM flag_save; + MCNUM minutes; + /* Component type 'Progress_bar' private parameters */ + double IntermediateCnts; + time_t StartTime; + time_t EndTime; + time_t CurrentTime; + char infostring[64]; +}; /* _struct_Progress_bar_parameters */ +typedef struct _struct_Progress_bar_parameters _class_Progress_bar_parameters; + +/* Parameters for component type 'Progress_bar' */ +struct _struct_Progress_bar { + char _name[256]; /* e.g. Origin */ + char _type[256]; /* Progress_bar */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Progress_bar_parameters _parameters; +}; +typedef struct _struct_Progress_bar _class_Progress_bar; +_class_Progress_bar _Origin_var; +#pragma acc declare create ( _Origin_var ) + +/* component vinROT2=Arm() [2] DECLARE */ +/* Parameter definition for component type 'Arm' */ +struct _struct_Arm_parameters { + char Arm_has_no_parameters; +}; /* _struct_Arm_parameters */ +typedef struct _struct_Arm_parameters _class_Arm_parameters; + +/* Parameters for component type 'Arm' */ +struct _struct_Arm { + char _name[256]; /* e.g. vinROT2 */ + char _type[256]; /* Arm */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Arm_parameters _parameters; +}; +typedef struct _struct_Arm _class_Arm; +_class_Arm _vinROT2_var; +#pragma acc declare create ( _vinROT2_var ) + +_class_Arm _vinROT1_var; +#pragma acc declare create ( _vinROT1_var ) + +/* component vin=MCPL_input_once() [4] DECLARE */ +/* Parameter definition for component type 'MCPL_input_once' */ +struct _struct_MCPL_input_once_parameters { + /* Component type 'MCPL_input_once' setting parameters */ + char filename[16384]; + MCNUM polarisationuse; + MCNUM Emin; + MCNUM Emax; + MCNUM v_smear; + MCNUM pos_smear; + MCNUM dir_smear; + int always_smear; + int preload; + int verbose; + /* Component type 'MCPL_input_once' private parameters */ + mcpl_file_t inputfile; + uint64_t nparticles; + uint64_t read_neutrons; + uint64_t used_neutrons; + uint64_t emitted_neutrons; + uint64_t current_index; + uint64_t maximum_index; + uint64_t first_particle; + int times_replayed; + mcpl_input_once_particle_t* particles; + double weight_scale; + char* resolved_filename; +}; /* _struct_MCPL_input_once_parameters */ +typedef struct _struct_MCPL_input_once_parameters _class_MCPL_input_once_parameters; + +/* Parameters for component type 'MCPL_input_once' */ +struct _struct_MCPL_input_once { + char _name[256]; /* e.g. vin */ + char _type[256]; /* MCPL_input_once */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_MCPL_input_once_parameters _parameters; +}; +typedef struct _struct_MCPL_input_once _class_MCPL_input_once; +_class_MCPL_input_once _vin_var; +#pragma acc declare create ( _vin_var ) + +/* component Sphere1=PSD_monitor_4PI() [5] DECLARE */ +/* Parameter definition for component type 'PSD_monitor_4PI' */ +struct _struct_PSD_monitor_4PI_parameters { + /* Component type 'PSD_monitor_4PI' setting parameters */ + int nx; + int ny; + char filename[16384]; + int nowritefile; + MCNUM radius; + int restore_neutron; + /* Component type 'PSD_monitor_4PI' private parameters */ + DArray2d PSD_N; + DArray2d PSD_p; + DArray2d PSD_p2; +}; /* _struct_PSD_monitor_4PI_parameters */ +typedef struct _struct_PSD_monitor_4PI_parameters _class_PSD_monitor_4PI_parameters; + +/* Parameters for component type 'PSD_monitor_4PI' */ +struct _struct_PSD_monitor_4PI { + char _name[256]; /* e.g. Sphere1 */ + char _type[256]; /* PSD_monitor_4PI */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_PSD_monitor_4PI_parameters _parameters; +}; +typedef struct _struct_PSD_monitor_4PI _class_PSD_monitor_4PI; +_class_PSD_monitor_4PI _Sphere1_var; +#pragma acc declare create ( _Sphere1_var ) + +/* component Source=ESS_butterfly() [6] DECLARE */ +/* Parameter definition for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly_parameters { + /* Component type 'ESS_butterfly' setting parameters */ + char sector[16384]; + int beamline; + MCNUM yheight; + MCNUM cold_frac; + int target_index; + MCNUM dist; + MCNUM focus_xw; + MCNUM focus_yh; + MCNUM c_performance; + MCNUM t_performance; + MCNUM Lmin; + MCNUM Lmax; + MCNUM tmax_multiplier; + int n_pulses; + MCNUM acc_power; + MCNUM tfocus_dist; + MCNUM tfocus_time; + MCNUM tfocus_width; + /* Component type 'ESS_butterfly' private parameters */ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double * Beamlines; + double wfrac_cold; + double wfrac_thermal; + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + double cos_thermal; + double cos_cold; + double orientation_angle; + double cx; + double cz; + int jmax; + double dxC; + double dxT; +}; /* _struct_ESS_butterfly_parameters */ +typedef struct _struct_ESS_butterfly_parameters _class_ESS_butterfly_parameters; + +/* Parameters for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly { + char _name[256]; /* e.g. Source */ + char _type[256]; /* ESS_butterfly */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_ESS_butterfly_parameters _parameters; +}; +typedef struct _struct_ESS_butterfly _class_ESS_butterfly; +_class_ESS_butterfly _Source_var; +#pragma acc declare create ( _Source_var ) + +_class_Arm _optical_axis_var; +#pragma acc declare create ( _optical_axis_var ) + +_class_PSD_monitor_4PI _Sphere0_var; +#pragma acc declare create ( _Sphere0_var ) + +/* component Focus_cut=Shape() [9] DECLARE */ +/* Parameter definition for component type 'Shape' */ +struct _struct_Shape_parameters { + /* Component type 'Shape' setting parameters */ + char geometry[16384]; + MCNUM radius; + MCNUM xwidth; + MCNUM yheight; + MCNUM zdepth; + MCNUM thickness; + MCNUM nx; + MCNUM ny; + MCNUM nz; + int center; + /* Component type 'Shape' private parameters */ + off_struct offdata; +}; /* _struct_Shape_parameters */ +typedef struct _struct_Shape_parameters _class_Shape_parameters; + +/* Parameters for component type 'Shape' */ +struct _struct_Shape { + char _name[256]; /* e.g. Focus_cut */ + char _type[256]; /* Shape */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Shape_parameters _parameters; +}; +typedef struct _struct_Shape _class_Shape; +_class_Shape _Focus_cut_var; +#pragma acc declare create ( _Focus_cut_var ) + +/* component PSD_cut=PSD_monitor() [10] DECLARE */ +/* Parameter definition for component type 'PSD_monitor' */ +struct _struct_PSD_monitor_parameters { + /* Component type 'PSD_monitor' setting parameters */ + int nx; + int ny; + char filename[16384]; + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM xwidth; + MCNUM yheight; + int restore_neutron; + int nowritefile; + /* Component type 'PSD_monitor' private parameters */ + DArray2d PSD_N; + DArray2d PSD_p; + DArray2d PSD_p2; +}; /* _struct_PSD_monitor_parameters */ +typedef struct _struct_PSD_monitor_parameters _class_PSD_monitor_parameters; + +/* Parameters for component type 'PSD_monitor' */ +struct _struct_PSD_monitor { + char _name[256]; /* e.g. PSD_cut */ + char _type[256]; /* PSD_monitor */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_PSD_monitor_parameters _parameters; +}; +typedef struct _struct_PSD_monitor _class_PSD_monitor; +_class_PSD_monitor _PSD_cut_var; +#pragma acc declare create ( _PSD_cut_var ) + +_class_Shape _BackTrace_var; +#pragma acc declare create ( _BackTrace_var ) + +_class_PSD_monitor _PSD_Backtrace_var; +#pragma acc declare create ( _PSD_Backtrace_var ) + +_class_Arm _Start_of_bi_var; +#pragma acc declare create ( _Start_of_bi_var ) + +/* component bi=bi_spec_ellipse() [14] DECLARE */ +/* Parameter definition for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse_parameters { + /* Component type 'bi_spec_ellipse' setting parameters */ + MCNUM xheight; + MCNUM ywidth; + MCNUM zlength; + MCNUM n_mirror; + MCNUM tilt; + MCNUM n_pieces; + MCNUM angular_offset; + MCNUM m; + MCNUM R0_m; + MCNUM Qc_m; + MCNUM alpha_mirror_m; + MCNUM W_m; + MCNUM transmit; + MCNUM d_focus_1_x; + MCNUM d_focus_2_x; + MCNUM d_focus_1_y; + MCNUM d_focus_2_y; + MCNUM ell_l; + MCNUM ell_h; + MCNUM ell_w; + MCNUM ell_m; + MCNUM R0; + MCNUM Qc; + MCNUM alpha_mirror; + MCNUM W; + MCNUM cut; + MCNUM substrate; + char reflect_mirror[16384]; + char reflect[16384]; + /* Component type 'bi_spec_ellipse' private parameters */ + t_Table pTable; +}; /* _struct_bi_spec_ellipse_parameters */ +typedef struct _struct_bi_spec_ellipse_parameters _class_bi_spec_ellipse_parameters; + +/* Parameters for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse { + char _name[256]; /* e.g. bi */ + char _type[256]; /* bi_spec_ellipse */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_bi_spec_ellipse_parameters _parameters; +}; +typedef struct _struct_bi_spec_ellipse _class_bi_spec_ellipse; +_class_bi_spec_ellipse _bi_var; +#pragma acc declare create ( _bi_var ) + +_class_Arm _End_of_bi_var; +#pragma acc declare create ( _End_of_bi_var ) + +/* component NBOA_drawing_1_end=Guide_four_side() [16] DECLARE */ +/* Parameter definition for component type 'Guide_four_side' */ +struct _struct_Guide_four_side_parameters { + /* Component type 'Guide_four_side' setting parameters */ + char RIreflect[16384]; + char LIreflect[16384]; + char UIreflect[16384]; + char DIreflect[16384]; + char ROreflect[16384]; + char LOreflect[16384]; + char UOreflect[16384]; + char DOreflect[16384]; + MCNUM w1l; + MCNUM w2l; + MCNUM linwl; + MCNUM loutwl; + MCNUM w1r; + MCNUM w2r; + MCNUM linwr; + MCNUM loutwr; + MCNUM h1u; + MCNUM h2u; + MCNUM linhu; + MCNUM louthu; + MCNUM h1d; + MCNUM h2d; + MCNUM linhd; + MCNUM louthd; + MCNUM l; + MCNUM R0; + MCNUM Qcxl; + MCNUM Qcxr; + MCNUM Qcyu; + MCNUM Qcyd; + MCNUM alphaxl; + MCNUM alphaxr; + MCNUM alphayu; + MCNUM alphayd; + MCNUM Wxr; + MCNUM Wxl; + MCNUM Wyu; + MCNUM Wyd; + MCNUM mxr; + MCNUM mxl; + MCNUM myu; + MCNUM myd; + MCNUM QcxrOW; + MCNUM QcxlOW; + MCNUM QcyuOW; + MCNUM QcydOW; + MCNUM alphaxlOW; + MCNUM alphaxrOW; + MCNUM alphayuOW; + MCNUM alphaydOW; + MCNUM WxrOW; + MCNUM WxlOW; + MCNUM WyuOW; + MCNUM WydOW; + MCNUM mxrOW; + MCNUM mxlOW; + MCNUM myuOW; + MCNUM mydOW; + MCNUM rwallthick; + MCNUM lwallthick; + MCNUM uwallthick; + MCNUM dwallthick; + /* Component type 'Guide_four_side' private parameters */ + double w1rwt; + double w1lwt; + double h1uwt; + double h1dwt; + double w2rwt; + double w2lwt; + double h2uwt; + double h2dwt; + double pawr; + double pawl; + double pbwr; + double pbwl; + double pahu; + double pahd; + double pbhu; + double pbhd; + double awl; + double bwl; + double awr; + double bwr; + double ahu; + double bhu; + double ahd; + double bhd; + double awlwt; + double bwlwt; + double awrwt; + double bwrwt; + double ahuwt; + double bhuwt; + double ahdwt; + double bhdwt; + double pawrwt; + double pawlwt; + double pbwrwt; + double pbwlwt; + double pahuwt; + double pahdwt; + double pbhuwt; + double pbhdwt; + double a2wlwt; + double b2wlwt; + double a2wrwt; + double b2wrwt; + double a2huwt; + double b2huwt; + double a2hdwt; + double b2hdwt; + double a2wl; + double b2wl; + double a2wr; + double b2wr; + double a2hu; + double b2hu; + double a2hd; + double b2hd; + double mru1; + double mru2; + double nru1; + double nru2; + double mrd1; + double mrd2; + double nrd1; + double nrd2; + double mlu1; + double mlu2; + double nlu1; + double nlu2; + double mld1; + double mld2; + double nld1; + double nld2; + double z0wr; + double z0wl; + double z0hu; + double z0hd; + double p2parawr; + double p2parawl; + double p2parahu; + double p2parahd; + double p2parawrwt; + double p2parawlwt; + double p2parahuwt; + double p2parahdwt; + t_Table riTable; + t_Table liTable; + t_Table uiTable; + t_Table diTable; + t_Table roTable; + t_Table loTable; + t_Table uoTable; + t_Table doTable; +}; /* _struct_Guide_four_side_parameters */ +typedef struct _struct_Guide_four_side_parameters _class_Guide_four_side_parameters; + +/* Parameters for component type 'Guide_four_side' */ +struct _struct_Guide_four_side { + char _name[256]; /* e.g. NBOA_drawing_1_end */ + char _type[256]; /* Guide_four_side */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Guide_four_side_parameters _parameters; +}; +typedef struct _struct_Guide_four_side _class_Guide_four_side; +_class_Guide_four_side _NBOA_drawing_1_end_var; +#pragma acc declare create ( _NBOA_drawing_1_end_var ) + +_class_Guide_four_side _g1a2_var; +#pragma acc declare create ( _g1a2_var ) + +_class_Guide_four_side _g1a3_var; +#pragma acc declare create ( _g1a3_var ) + +_class_Guide_four_side _g1b1_var; +#pragma acc declare create ( _g1b1_var ) + +_class_Guide_four_side _g1c1_var; +#pragma acc declare create ( _g1c1_var ) + +_class_Arm _wfm_position_var; +#pragma acc declare create ( _wfm_position_var ) + +_class_Arm _wfm_1_position_var; +#pragma acc declare create ( _wfm_1_position_var ) + +/* component wfmc_1=MultiDiskChopper() [23] DECLARE */ +/* Parameter definition for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper_parameters { + /* Component type 'MultiDiskChopper' setting parameters */ + char slit_center[16384]; + char slit_width[16384]; + MCNUM nslits; + MCNUM delta_y; + MCNUM nu; + MCNUM nrev; + MCNUM ratio; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM phase; + MCNUM radius; + MCNUM equal; + MCNUM abs_out; + MCNUM verbose; + /* Component type 'MultiDiskChopper' private parameters */ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +}; /* _struct_MultiDiskChopper_parameters */ +typedef struct _struct_MultiDiskChopper_parameters _class_MultiDiskChopper_parameters; + +/* Parameters for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper { + char _name[256]; /* e.g. wfmc_1 */ + char _type[256]; /* MultiDiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_MultiDiskChopper_parameters _parameters; +}; +typedef struct _struct_MultiDiskChopper _class_MultiDiskChopper; +_class_MultiDiskChopper _wfmc_1_var; +#pragma acc declare create ( _wfmc_1_var ) + +/* component pinhole_1=Slit() [24] DECLARE */ +/* Parameter definition for component type 'Slit' */ +struct _struct_Slit_parameters { + /* Component type 'Slit' setting parameters */ + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM radius; + MCNUM xwidth; + MCNUM yheight; + /* Component type 'Slit' private parameters */ + char isradial; +}; /* _struct_Slit_parameters */ +typedef struct _struct_Slit_parameters _class_Slit_parameters; + +/* Parameters for component type 'Slit' */ +struct _struct_Slit { + char _name[256]; /* e.g. pinhole_1 */ + char _type[256]; /* Slit */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Slit_parameters _parameters; +}; +typedef struct _struct_Slit _class_Slit; +_class_Slit _pinhole_1_var; +#pragma acc declare create ( _pinhole_1_var ) + +_class_Arm _wfm_2_position_var; +#pragma acc declare create ( _wfm_2_position_var ) + +_class_MultiDiskChopper _wfmc_2_var; +#pragma acc declare create ( _wfmc_2_var ) + +_class_Guide_four_side _g2a1_var; +#pragma acc declare create ( _g2a1_var ) + +_class_Arm _monitor_1_position_var; +#pragma acc declare create ( _monitor_1_position_var ) + +_class_Guide_four_side _g2a2_var; +#pragma acc declare create ( _g2a2_var ) + +_class_Arm _fo1_position_var; +#pragma acc declare create ( _fo1_position_var ) + +_class_MultiDiskChopper _fo_chopper_1_var; +#pragma acc declare create ( _fo_chopper_1_var ) + +_class_Arm _bp1_position_var; +#pragma acc declare create ( _bp1_position_var ) + +/* component bp1_chopper=DiskChopper() [33] DECLARE */ +/* Parameter definition for component type 'DiskChopper' */ +struct _struct_DiskChopper_parameters { + /* Component type 'DiskChopper' setting parameters */ + MCNUM theta_0; + MCNUM radius; + MCNUM yheight; + MCNUM nu; + MCNUM nslit; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM n_pulse; + MCNUM abs_out; + MCNUM phase; + MCNUM xwidth; + MCNUM verbose; + /* Component type 'DiskChopper' private parameters */ + double Tg; + double To; + double delta_y; + double height; + double omega; +}; /* _struct_DiskChopper_parameters */ +typedef struct _struct_DiskChopper_parameters _class_DiskChopper_parameters; + +/* Parameters for component type 'DiskChopper' */ +struct _struct_DiskChopper { + char _name[256]; /* e.g. bp1_chopper */ + char _type[256]; /* DiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_DiskChopper_parameters _parameters; +}; +typedef struct _struct_DiskChopper _class_DiskChopper; +_class_DiskChopper _bp1_chopper_var; +#pragma acc declare create ( _bp1_chopper_var ) + +_class_Guide_four_side _g2b1_var; +#pragma acc declare create ( _g2b1_var ) + +_class_Guide_four_side _g2b2_var; +#pragma acc declare create ( _g2b2_var ) + +_class_Guide_four_side _g2b3_var; +#pragma acc declare create ( _g2b3_var ) + +_class_Guide_four_side _g2b4_var; +#pragma acc declare create ( _g2b4_var ) + +_class_Arm _fo2_position_var; +#pragma acc declare create ( _fo2_position_var ) + +_class_MultiDiskChopper _fo_chopper_2_var; +#pragma acc declare create ( _fo_chopper_2_var ) + +_class_Arm _bp2_position_var; +#pragma acc declare create ( _bp2_position_var ) + +_class_DiskChopper _bp_chopper2_var; +#pragma acc declare create ( _bp_chopper2_var ) + +_class_Guide_four_side _g2c1_var; +#pragma acc declare create ( _g2c1_var ) + +_class_Arm _t0_start_position_var; +#pragma acc declare create ( _t0_start_position_var ) + +_class_DiskChopper _t0_chopper_alpha_var; +#pragma acc declare create ( _t0_chopper_alpha_var ) + +_class_Arm _t0_end_position_var; +#pragma acc declare create ( _t0_end_position_var ) + +_class_DiskChopper _t0_chopper_beta_var; +#pragma acc declare create ( _t0_chopper_beta_var ) + +_class_Guide_four_side _g3a1_var; +#pragma acc declare create ( _g3a1_var ) + +_class_Guide_four_side _g3a2_var; +#pragma acc declare create ( _g3a2_var ) + +_class_Arm _fo3_position_var; +#pragma acc declare create ( _fo3_position_var ) + +_class_MultiDiskChopper _fo_chopper_3_var; +#pragma acc declare create ( _fo_chopper_3_var ) + +_class_Guide_four_side _g3b1_var; +#pragma acc declare create ( _g3b1_var ) + +_class_Guide_four_side _g4a1_var; +#pragma acc declare create ( _g4a1_var ) + +_class_Arm _monitor_2_position_var; +#pragma acc declare create ( _monitor_2_position_var ) + +_class_Guide_four_side _g4a2_var; +#pragma acc declare create ( _g4a2_var ) + +_class_Guide_four_side _g4a3_var; +#pragma acc declare create ( _g4a3_var ) + +_class_Arm _fo4_position_var; +#pragma acc declare create ( _fo4_position_var ) + +_class_MultiDiskChopper _fo_chopper_4_var; +#pragma acc declare create ( _fo_chopper_4_var ) + +_class_Guide_four_side _g4b1_var; +#pragma acc declare create ( _g4b1_var ) + +_class_Guide_four_side _g4b2_var; +#pragma acc declare create ( _g4b2_var ) + +_class_Guide_four_side _g4b3_var; +#pragma acc declare create ( _g4b3_var ) + +_class_Guide_four_side _g4b4_var; +#pragma acc declare create ( _g4b4_var ) + +_class_Guide_four_side _g4b5_var; +#pragma acc declare create ( _g4b5_var ) + +_class_Guide_four_side _g4b6_var; +#pragma acc declare create ( _g4b6_var ) + +_class_Guide_four_side _g5a1_var; +#pragma acc declare create ( _g5a1_var ) + +_class_Arm _fo5_position_var; +#pragma acc declare create ( _fo5_position_var ) + +_class_MultiDiskChopper _fo_chopper_5_var; +#pragma acc declare create ( _fo_chopper_5_var ) + +_class_Guide_four_side _g5b1_var; +#pragma acc declare create ( _g5b1_var ) + +_class_Guide_four_side _g5b2_var; +#pragma acc declare create ( _g5b2_var ) + +_class_Guide_four_side _g5b3_var; +#pragma acc declare create ( _g5b3_var ) + +_class_Guide_four_side _g5b4_var; +#pragma acc declare create ( _g5b4_var ) + +_class_Guide_four_side _g5b5_var; +#pragma acc declare create ( _g5b5_var ) + +_class_Guide_four_side _g5b6_var; +#pragma acc declare create ( _g5b6_var ) + +_class_Guide_four_side _g6a1_var; +#pragma acc declare create ( _g6a1_var ) + +_class_Guide_four_side _g6a2_var; +#pragma acc declare create ( _g6a2_var ) + +_class_Guide_four_side _g6a3_var; +#pragma acc declare create ( _g6a3_var ) + +_class_Arm _guide_end_var; +#pragma acc declare create ( _guide_end_var ) + +_class_Arm _monitor_3_position_var; +#pragma acc declare create ( _monitor_3_position_var ) + +_class_Arm _start_backend_var; +#pragma acc declare create ( _start_backend_var ) + +_class_Arm _optical_axis_backend_var; +#pragma acc declare create ( _optical_axis_backend_var ) + +_class_Slit _pinhole_2_var; +#pragma acc declare create ( _pinhole_2_var ) + +/* component graph=Graphite_Diffuser() [81] DECLARE */ +/* Parameter definition for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser_parameters { + /* Component type 'Graphite_Diffuser' setting parameters */ + MCNUM xwidth; + MCNUM ywidth; + MCNUM thick; + MCNUM abs; +}; /* _struct_Graphite_Diffuser_parameters */ +typedef struct _struct_Graphite_Diffuser_parameters _class_Graphite_Diffuser_parameters; + +/* Parameters for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser { + char _name[256]; /* e.g. graph */ + char _type[256]; /* Graphite_Diffuser */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Graphite_Diffuser_parameters _parameters; +}; +typedef struct _struct_Graphite_Diffuser _class_Graphite_Diffuser; +_class_Graphite_Diffuser _graph_var; +#pragma acc declare create ( _graph_var ) + +_class_Arm _sample_monitor_arm_var; +#pragma acc declare create ( _sample_monitor_arm_var ) + +/* component sample_PSD=Monitor_nD() [83] DECLARE */ +/* Parameter definition for component type 'Monitor_nD' */ +struct _struct_Monitor_nD_parameters { + /* Component type 'Monitor_nD' setting parameters */ + char user1[16384]; + char user2[16384]; + char user3[16384]; + MCNUM xwidth; + MCNUM yheight; + MCNUM zdepth; + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM zmin; + MCNUM zmax; + int bins; + MCNUM min; + MCNUM max; + int restore_neutron; + MCNUM radius; + char options[16384]; + char filename[16384]; + char geometry[16384]; + int nowritefile; + char username1[16384]; + char username2[16384]; + char username3[16384]; + /* Component type 'Monitor_nD' private parameters */ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +}; /* _struct_Monitor_nD_parameters */ +typedef struct _struct_Monitor_nD_parameters _class_Monitor_nD_parameters; + +/* Parameters for component type 'Monitor_nD' */ +struct _struct_Monitor_nD { + char _name[256]; /* e.g. sample_PSD */ + char _type[256]; /* Monitor_nD */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Monitor_nD_parameters _parameters; +}; +typedef struct _struct_Monitor_nD _class_Monitor_nD; +_class_Monitor_nD _sample_PSD_var; +#pragma acc declare create ( _sample_PSD_var ) + +_class_Monitor_nD _profile_x_var; +#pragma acc declare create ( _profile_x_var ) + +_class_Monitor_nD _profile_y_var; +#pragma acc declare create ( _profile_y_var ) + +_class_Monitor_nD _wavelength_var; +#pragma acc declare create ( _wavelength_var ) + +_class_Monitor_nD _tof_var; +#pragma acc declare create ( _tof_var ) + +_class_Monitor_nD _wavelength_tof_var; +#pragma acc declare create ( _wavelength_tof_var ) + +_class_Arm _sample_position_var; +#pragma acc declare create ( _sample_position_var ) + +int mcNUMCOMP = 89; + +/* User declarations from instrument definition. Can define functions. */ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap +char sector[]="S"; +int beamline=2; + double calcAlpha(double length, double radius) { + // calculate angle of arm after curved guide + return RAD2DEG * length/radius; + } + + double calcX(double length, double radius) { + // calculate position and angle of arm after curved guide + double alpha = DEG2RAD * calcAlpha(length, radius); + return radius*(1.0-cos(alpha)); + } + + double calcZ(double length, double radius) { + // calculate position and angle of arm after curved guide + double alpha = DEG2RAD * calcAlpha(length, radius); + return radius*sin(alpha); + } + + double XW, YH; + char options1[256],options2[256],options3[256],options4[256]; + char srcdef[128]; + double WidthC=0.072,WidthT=0.108; + double lambdamin, lambdamax; + double TCollmin; + double TCollmax; + #pragma acc declare create(TCollmin,TCollmax) + double EminTh=20, EmaxTh=100, EminC=0, EmaxC=20; + #pragma acc declare create(EminTh,EmaxTh,EminC,EmaxC) + /* 10 beamlines in sector N and E - plus one location added for drawing */ + double iBeamlinesN[] = { 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double iBeamlinesE[] = {-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + /* 11 beamlines in sector S and W - plus one location added for drawing */ + double iBeamlinesW[] = { 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double iBeamlinesS[] = {-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double* iBeamlines; + double ANGLE; + double DeltaX,DeltaZ; + char MCPLfile[128]; + +#undef compcurname +#undef compcurtype +#undef compcurindex +/* end of instrument 'ODIN_MCPL_baseline' and components DECLARE */ + +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' and components INITIALISE +***************************************************************************** */ + +double index_getdistance(int first_index, int second_index) +/* Calculate the distance two components from their indexes*/ +{ + return coords_len(coords_sub(POS_A_COMP_INDEX(first_index), POS_A_COMP_INDEX(second_index))); +} + +double getdistance(char* first_component, char* second_component) +/* Calculate the distance between two named components */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + return index_getdistance(first_index, second_index); +} + +double checked_setpos_getdistance(int current_index, char* first_component, char* second_component) +/* Calculate the distance between two named components at *_setpos() time, with component index checking */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + if (first_index >= current_index || second_index >= current_index) { + printf("setpos_getdistance can only be used with the names of components before the current one!\n"); + return 0; + } + return index_getdistance(first_index, second_index); +} +#define setpos_getdistance(first, second) checked_setpos_getdistance(current_setpos_index, first, second) + +/* component Origin=Progress_bar() SETTING, POSITION/ROTATION */ +int _Origin_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Origin_setpos] component Origin=Progress_bar() SETTING [Progress_bar:0]"); + stracpy(_Origin_var._name, "Origin", 16384); + stracpy(_Origin_var._type, "Progress_bar", 16384); + _Origin_var._index=1; + int current_setpos_index = 1; + if("NULL" && strlen("NULL")) + stracpy(_Origin_var._parameters.profile, "NULL" ? "NULL" : "", 16384); + else + _Origin_var._parameters.profile[0]='\0'; + _Origin_var._parameters.percent = 10; + _Origin_var._parameters.flag_save = 0; + _Origin_var._parameters.minutes = 0; + + + /* component Origin=Progress_bar() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(_Origin_var._rotation_absolute, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_copy(_Origin_var._rotation_relative, _Origin_var._rotation_absolute); + _Origin_var._rotation_is_identity = rot_test_identity(_Origin_var._rotation_relative); + _Origin_var._position_absolute = coords_set( + 0, 0, 0); + tc1 = coords_neg(_Origin_var._position_absolute); + _Origin_var._position_relative = rot_apply(_Origin_var._rotation_absolute, tc1); + } /* Origin=Progress_bar() AT ROTATED */ + DEBUG_COMPONENT("Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute); + instrument->_position_absolute[1] = _Origin_var._position_absolute; + instrument->_position_relative[1] = _Origin_var._position_relative; + _Origin_var._position_relative_is_zero = coords_test_zero(_Origin_var._position_relative); + instrument->counter_N[1] = instrument->counter_P[1] = instrument->counter_P2[1] = 0; + instrument->counter_AbsorbProp[1]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0000_Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute, "Progress_bar"); + mccomp_param_nexus(nxhandle,"0000_Origin", "profile", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0000_Origin", "percent", "10", "10","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "flag_save", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "minutes", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Origin_setpos */ + +/* component vinROT2=Arm() SETTING, POSITION/ROTATION */ +int _vinROT2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_vinROT2_setpos] component vinROT2=Arm() SETTING [Arm:0]"); + stracpy(_vinROT2_var._name, "vinROT2", 16384); + stracpy(_vinROT2_var._type, "Arm", 16384); + _vinROT2_var._index=2; + int current_setpos_index = 2; + /* component vinROT2=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (-90)*DEG2RAD, (0)*DEG2RAD); + rot_mul(tr1, _Origin_var._rotation_absolute, _vinROT2_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_vinROT2_var._rotation_absolute, tr1, _vinROT2_var._rotation_relative); + _vinROT2_var._rotation_is_identity = rot_test_identity(_vinROT2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Origin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _vinROT2_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _vinROT2_var._position_absolute); + _vinROT2_var._position_relative = rot_apply(_vinROT2_var._rotation_absolute, tc1); + } /* vinROT2=Arm() AT ROTATED */ + DEBUG_COMPONENT("vinROT2", _vinROT2_var._position_absolute, _vinROT2_var._rotation_absolute); + instrument->_position_absolute[2] = _vinROT2_var._position_absolute; + instrument->_position_relative[2] = _vinROT2_var._position_relative; + _vinROT2_var._position_relative_is_zero = coords_test_zero(_vinROT2_var._position_relative); + instrument->counter_N[2] = instrument->counter_P[2] = instrument->counter_P2[2] = 0; + instrument->counter_AbsorbProp[2]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0001_vinROT2", _vinROT2_var._position_absolute, _vinROT2_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _vinROT2_setpos */ + +/* component vinROT1=Arm() SETTING, POSITION/ROTATION */ +int _vinROT1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_vinROT1_setpos] component vinROT1=Arm() SETTING [Arm:0]"); + stracpy(_vinROT1_var._name, "vinROT1", 16384); + stracpy(_vinROT1_var._type, "Arm", 16384); + _vinROT1_var._index=3; + int current_setpos_index = 3; + /* component vinROT1=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (-90)*DEG2RAD, (0)*DEG2RAD, (0)*DEG2RAD); + rot_mul(tr1, _vinROT2_var._rotation_absolute, _vinROT1_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_vinROT1_var._rotation_absolute, tr1, _vinROT1_var._rotation_relative); + _vinROT1_var._rotation_is_identity = rot_test_identity(_vinROT1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_vinROT2_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _vinROT1_var._position_absolute = coords_add(_vinROT2_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _vinROT1_var._position_absolute); + _vinROT1_var._position_relative = rot_apply(_vinROT1_var._rotation_absolute, tc1); + } /* vinROT1=Arm() AT ROTATED */ + DEBUG_COMPONENT("vinROT1", _vinROT1_var._position_absolute, _vinROT1_var._rotation_absolute); + instrument->_position_absolute[3] = _vinROT1_var._position_absolute; + instrument->_position_relative[3] = _vinROT1_var._position_relative; + _vinROT1_var._position_relative_is_zero = coords_test_zero(_vinROT1_var._position_relative); + instrument->counter_N[3] = instrument->counter_P[3] = instrument->counter_P2[3] = 0; + instrument->counter_AbsorbProp[3]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0002_vinROT1", _vinROT1_var._position_absolute, _vinROT1_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _vinROT1_setpos */ + +/* component vin=MCPL_input_once() SETTING, POSITION/ROTATION */ +int _vin_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_vin_setpos] component vin=MCPL_input_once() SETTING [MCPL_input_once:0]"); + stracpy(_vin_var._name, "vin", 16384); + stracpy(_vin_var._type, "MCPL_input_once", 16384); + _vin_var._index=4; + int current_setpos_index = 4; + if(MCPLfile && strlen(MCPLfile)) + stracpy(_vin_var._parameters.filename, MCPLfile ? MCPLfile : "", 16384); + else + _vin_var._parameters.filename[0]='\0'; + _vin_var._parameters.polarisationuse = 1; + _vin_var._parameters.Emin = 0; + _vin_var._parameters.Emax = FLT_MAX; + _vin_var._parameters.v_smear = _instrument_var._parameters.v_smear; + _vin_var._parameters.pos_smear = _instrument_var._parameters.pos_smear; + _vin_var._parameters.dir_smear = _instrument_var._parameters.dir_smear; + _vin_var._parameters.always_smear = 0; + _vin_var._parameters.preload = 0; + _vin_var._parameters.verbose = 1; + + + /* component vin=MCPL_input_once() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _vinROT1_var._rotation_absolute, _vin_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_vin_var._rotation_absolute, tr1, _vin_var._rotation_relative); + _vin_var._rotation_is_identity = rot_test_identity(_vin_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_vinROT1_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _vin_var._position_absolute = coords_add(_vinROT1_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _vin_var._position_absolute); + _vin_var._position_relative = rot_apply(_vin_var._rotation_absolute, tc1); + } /* vin=MCPL_input_once() AT ROTATED */ + DEBUG_COMPONENT("vin", _vin_var._position_absolute, _vin_var._rotation_absolute); + instrument->_position_absolute[4] = _vin_var._position_absolute; + instrument->_position_relative[4] = _vin_var._position_relative; + _vin_var._position_relative_is_zero = coords_test_zero(_vin_var._position_relative); + instrument->counter_N[4] = instrument->counter_P[4] = instrument->counter_P2[4] = 0; + instrument->counter_AbsorbProp[4]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0003_vin", _vin_var._position_absolute, _vin_var._rotation_absolute, "MCPL_input_once"); + mccomp_param_nexus(nxhandle,"0003_vin", "filename", 0, MCPLfile, "char*"); + mccomp_param_nexus(nxhandle,"0003_vin", "polarisationuse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "Emin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "Emax", "FLT_MAX", "FLT_MAX","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "v_smear", "0", "_instrument_var._parameters.v_smear","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "pos_smear", "0", "_instrument_var._parameters.pos_smear","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "dir_smear", "0", "_instrument_var._parameters.dir_smear","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "always_smear", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0003_vin", "preload", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0003_vin", "verbose", "0", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _vin_setpos */ + +/* component Sphere1=PSD_monitor_4PI() SETTING, POSITION/ROTATION */ +int _Sphere1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Sphere1_setpos] component Sphere1=PSD_monitor_4PI() SETTING [PSD_monitor_4PI:0]"); + stracpy(_Sphere1_var._name, "Sphere1", 16384); + stracpy(_Sphere1_var._type, "PSD_monitor_4PI", 16384); + _Sphere1_var._index=5; + int current_setpos_index = 5; + _Sphere1_var._parameters.nx = 90; + _Sphere1_var._parameters.ny = 90; + if("nonrotated" && strlen("nonrotated")) + stracpy(_Sphere1_var._parameters.filename, "nonrotated" ? "nonrotated" : "", 16384); + else + _Sphere1_var._parameters.filename[0]='\0'; + _Sphere1_var._parameters.nowritefile = 0; + _Sphere1_var._parameters.radius = 2.4; + _Sphere1_var._parameters.restore_neutron = 1; + + + /* component Sphere1=PSD_monitor_4PI() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _vin_var._rotation_absolute, _Sphere1_var._rotation_absolute); + rot_transpose(_vin_var._rotation_absolute, tr1); + rot_mul(_Sphere1_var._rotation_absolute, tr1, _Sphere1_var._rotation_relative); + _Sphere1_var._rotation_is_identity = rot_test_identity(_Sphere1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_vin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Sphere1_var._position_absolute = coords_add(_vin_var._position_absolute, tc2); + tc1 = coords_sub(_vin_var._position_absolute, _Sphere1_var._position_absolute); + _Sphere1_var._position_relative = rot_apply(_Sphere1_var._rotation_absolute, tc1); + } /* Sphere1=PSD_monitor_4PI() AT ROTATED */ + DEBUG_COMPONENT("Sphere1", _Sphere1_var._position_absolute, _Sphere1_var._rotation_absolute); + instrument->_position_absolute[5] = _Sphere1_var._position_absolute; + instrument->_position_relative[5] = _Sphere1_var._position_relative; + _Sphere1_var._position_relative_is_zero = coords_test_zero(_Sphere1_var._position_relative); + instrument->counter_N[5] = instrument->counter_P[5] = instrument->counter_P2[5] = 0; + instrument->counter_AbsorbProp[5]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0004_Sphere1", _Sphere1_var._position_absolute, _Sphere1_var._rotation_absolute, "PSD_monitor_4PI"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "nx", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "ny", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "filename", 0, "nonrotated", "char*"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "radius", "1", "2.4","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "restore_neutron", "0", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Sphere1_setpos */ + +/* component Source=ESS_butterfly() SETTING, POSITION/ROTATION */ +int _Source_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Source_setpos] component Source=ESS_butterfly() SETTING [ESS_butterfly:0]"); + stracpy(_Source_var._name, "Source", 16384); + stracpy(_Source_var._type, "ESS_butterfly", 16384); + _Source_var._index=6; + int current_setpos_index = 6; + if("S" && strlen("S")) + stracpy(_Source_var._parameters.sector, "S" ? "S" : "", 16384); + else + _Source_var._parameters.sector[0]='\0'; + _Source_var._parameters.beamline = 2; + _Source_var._parameters.yheight = 0.03; + _Source_var._parameters.cold_frac = 0.5; + _Source_var._parameters.target_index = 1; + _Source_var._parameters.dist = 0; + _Source_var._parameters.focus_xw = 0.0576862; + _Source_var._parameters.focus_yh = 0.0464308; + _Source_var._parameters.c_performance = 1; + _Source_var._parameters.t_performance = 1; + _Source_var._parameters.Lmin = _instrument_var._parameters.l_min; + _Source_var._parameters.Lmax = _instrument_var._parameters.l_max; + _Source_var._parameters.tmax_multiplier = 3; + _Source_var._parameters.n_pulses = _instrument_var._parameters.n_pulses; + _Source_var._parameters.acc_power = 2.0; + _Source_var._parameters.tfocus_dist = 0; + _Source_var._parameters.tfocus_time = 0; + _Source_var._parameters.tfocus_width = 0; + + + /* component Source=ESS_butterfly() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(_Source_var._rotation_absolute, + (0)*DEG2RAD, (ANGLE)*DEG2RAD, (0)*DEG2RAD); + rot_transpose(_Sphere1_var._rotation_absolute, tr1); + rot_mul(_Source_var._rotation_absolute, tr1, _Source_var._rotation_relative); + _Source_var._rotation_is_identity = rot_test_identity(_Source_var._rotation_relative); + _Source_var._position_absolute = coords_set( + DeltaX, 0, DeltaZ); + tc1 = coords_sub(_Sphere1_var._position_absolute, _Source_var._position_absolute); + _Source_var._position_relative = rot_apply(_Source_var._rotation_absolute, tc1); + } /* Source=ESS_butterfly() AT ROTATED */ + DEBUG_COMPONENT("Source", _Source_var._position_absolute, _Source_var._rotation_absolute); + instrument->_position_absolute[6] = _Source_var._position_absolute; + instrument->_position_relative[6] = _Source_var._position_relative; + _Source_var._position_relative_is_zero = coords_test_zero(_Source_var._position_relative); + instrument->counter_N[6] = instrument->counter_P[6] = instrument->counter_P2[6] = 0; + instrument->counter_AbsorbProp[6]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0005_Source", _Source_var._position_absolute, _Source_var._rotation_absolute, "ESS_butterfly"); + mccomp_param_nexus(nxhandle,"0005_Source", "sector", "N", "S", "char*"); + mccomp_param_nexus(nxhandle,"0005_Source", "beamline", "1", "2","int"); + mccomp_param_nexus(nxhandle,"0005_Source", "yheight", "0.03", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "cold_frac", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "target_index", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0005_Source", "dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "focus_xw", "0", "0.0576862","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "focus_yh", "0", "0.0464308","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "c_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "t_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "Lmin", "NONE", "_instrument_var._parameters.l_min","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "Lmax", "NONE", "_instrument_var._parameters.l_max","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "tmax_multiplier", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "n_pulses", "1", "_instrument_var._parameters.n_pulses","int"); + mccomp_param_nexus(nxhandle,"0005_Source", "acc_power", "5", "2.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "tfocus_dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "tfocus_time", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "tfocus_width", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Source_setpos */ + +/* component optical_axis=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_setpos] component optical_axis=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_var._name, "optical_axis", 16384); + stracpy(_optical_axis_var._type, "Arm", 16384); + _optical_axis_var._index=7; + int current_setpos_index = 7; + /* component optical_axis=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Source_var._rotation_absolute, _optical_axis_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_optical_axis_var._rotation_absolute, tr1, _optical_axis_var._rotation_relative); + _optical_axis_var._rotation_is_identity = rot_test_identity(_optical_axis_var._rotation_relative); + tc1 = coords_set( + 0.026, 0, 0); + rot_transpose(_Source_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_var._position_absolute = coords_add(_Source_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _optical_axis_var._position_absolute); + _optical_axis_var._position_relative = rot_apply(_optical_axis_var._rotation_absolute, tc1); + } /* optical_axis=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute); + instrument->_position_absolute[7] = _optical_axis_var._position_absolute; + instrument->_position_relative[7] = _optical_axis_var._position_relative; + _optical_axis_var._position_relative_is_zero = coords_test_zero(_optical_axis_var._position_relative); + instrument->counter_N[7] = instrument->counter_P[7] = instrument->counter_P2[7] = 0; + instrument->counter_AbsorbProp[7]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0006_optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_setpos */ + +/* component Sphere0=PSD_monitor_4PI() SETTING, POSITION/ROTATION */ +int _Sphere0_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Sphere0_setpos] component Sphere0=PSD_monitor_4PI() SETTING [PSD_monitor_4PI:0]"); + stracpy(_Sphere0_var._name, "Sphere0", 16384); + stracpy(_Sphere0_var._type, "PSD_monitor_4PI", 16384); + _Sphere0_var._index=8; + int current_setpos_index = 8; + _Sphere0_var._parameters.nx = 90; + _Sphere0_var._parameters.ny = 90; + if("rotated" && strlen("rotated")) + stracpy(_Sphere0_var._parameters.filename, "rotated" ? "rotated" : "", 16384); + else + _Sphere0_var._parameters.filename[0]='\0'; + _Sphere0_var._parameters.nowritefile = 0; + _Sphere0_var._parameters.radius = 2.2; + _Sphere0_var._parameters.restore_neutron = 1; + + + /* component Sphere0=PSD_monitor_4PI() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Source_var._rotation_absolute, _Sphere0_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_Sphere0_var._rotation_absolute, tr1, _Sphere0_var._rotation_relative); + _Sphere0_var._rotation_is_identity = rot_test_identity(_Sphere0_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Source_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Sphere0_var._position_absolute = coords_add(_Source_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _Sphere0_var._position_absolute); + _Sphere0_var._position_relative = rot_apply(_Sphere0_var._rotation_absolute, tc1); + } /* Sphere0=PSD_monitor_4PI() AT ROTATED */ + DEBUG_COMPONENT("Sphere0", _Sphere0_var._position_absolute, _Sphere0_var._rotation_absolute); + instrument->_position_absolute[8] = _Sphere0_var._position_absolute; + instrument->_position_relative[8] = _Sphere0_var._position_relative; + _Sphere0_var._position_relative_is_zero = coords_test_zero(_Sphere0_var._position_relative); + instrument->counter_N[8] = instrument->counter_P[8] = instrument->counter_P2[8] = 0; + instrument->counter_AbsorbProp[8]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0007_Sphere0", _Sphere0_var._position_absolute, _Sphere0_var._rotation_absolute, "PSD_monitor_4PI"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "nx", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "ny", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "filename", 0, "rotated", "char*"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "radius", "1", "2.2","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "restore_neutron", "0", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Sphere0_setpos */ + +/* component Focus_cut=Shape() SETTING, POSITION/ROTATION */ +int _Focus_cut_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Focus_cut_setpos] component Focus_cut=Shape() SETTING [Shape:0]"); + stracpy(_Focus_cut_var._name, "Focus_cut", 16384); + stracpy(_Focus_cut_var._type, "Shape", 16384); + _Focus_cut_var._index=9; + int current_setpos_index = 9; + _Focus_cut_var._parameters.geometry[0]='\0'; + _Focus_cut_var._parameters.radius = 0; + _Focus_cut_var._parameters.xwidth = 0.01; + _Focus_cut_var._parameters.yheight = 0.01; + _Focus_cut_var._parameters.zdepth = 0; + _Focus_cut_var._parameters.thickness = 0; + _Focus_cut_var._parameters.nx = 0; + _Focus_cut_var._parameters.ny = 1; + _Focus_cut_var._parameters.nz = 0; + _Focus_cut_var._parameters.center = 1; + + + /* component Focus_cut=Shape() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Source_var._rotation_absolute, _Focus_cut_var._rotation_absolute); + rot_transpose(_Sphere0_var._rotation_absolute, tr1); + rot_mul(_Focus_cut_var._rotation_absolute, tr1, _Focus_cut_var._rotation_relative); + _Focus_cut_var._rotation_is_identity = rot_test_identity(_Focus_cut_var._rotation_relative); + tc1 = coords_set( + 0, 0, 2); + rot_transpose(_Source_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Focus_cut_var._position_absolute = coords_add(_Source_var._position_absolute, tc2); + tc1 = coords_sub(_Sphere0_var._position_absolute, _Focus_cut_var._position_absolute); + _Focus_cut_var._position_relative = rot_apply(_Focus_cut_var._rotation_absolute, tc1); + } /* Focus_cut=Shape() AT ROTATED */ + DEBUG_COMPONENT("Focus_cut", _Focus_cut_var._position_absolute, _Focus_cut_var._rotation_absolute); + instrument->_position_absolute[9] = _Focus_cut_var._position_absolute; + instrument->_position_relative[9] = _Focus_cut_var._position_relative; + _Focus_cut_var._position_relative_is_zero = coords_test_zero(_Focus_cut_var._position_relative); + instrument->counter_N[9] = instrument->counter_P[9] = instrument->counter_P2[9] = 0; + instrument->counter_AbsorbProp[9]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0008_Focus_cut", _Focus_cut_var._position_absolute, _Focus_cut_var._rotation_absolute, "Shape"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "geometry", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "xwidth", "0", "0.01","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "yheight", "0", "0.01","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "thickness", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "nx", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "ny", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "nz", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "center", "1", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Focus_cut_setpos */ + +/* component PSD_cut=PSD_monitor() SETTING, POSITION/ROTATION */ +int _PSD_cut_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_PSD_cut_setpos] component PSD_cut=PSD_monitor() SETTING [PSD_monitor:0]"); + stracpy(_PSD_cut_var._name, "PSD_cut", 16384); + stracpy(_PSD_cut_var._type, "PSD_monitor", 16384); + _PSD_cut_var._index=10; + int current_setpos_index = 10; + _PSD_cut_var._parameters.nx = 90; + _PSD_cut_var._parameters.ny = 90; + _PSD_cut_var._parameters.filename[0]='\0'; + _PSD_cut_var._parameters.xmin = -0.05; + _PSD_cut_var._parameters.xmax = 0.05; + _PSD_cut_var._parameters.ymin = -0.05; + _PSD_cut_var._parameters.ymax = 0.05; + _PSD_cut_var._parameters.xwidth = 0.01; + _PSD_cut_var._parameters.yheight = 0.01; + _PSD_cut_var._parameters.restore_neutron = 1; + _PSD_cut_var._parameters.nowritefile = 0; + + + /* component PSD_cut=PSD_monitor() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Focus_cut_var._rotation_absolute, _PSD_cut_var._rotation_absolute); + rot_transpose(_Focus_cut_var._rotation_absolute, tr1); + rot_mul(_PSD_cut_var._rotation_absolute, tr1, _PSD_cut_var._rotation_relative); + _PSD_cut_var._rotation_is_identity = rot_test_identity(_PSD_cut_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Focus_cut_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _PSD_cut_var._position_absolute = coords_add(_Focus_cut_var._position_absolute, tc2); + tc1 = coords_sub(_Focus_cut_var._position_absolute, _PSD_cut_var._position_absolute); + _PSD_cut_var._position_relative = rot_apply(_PSD_cut_var._rotation_absolute, tc1); + } /* PSD_cut=PSD_monitor() AT ROTATED */ + DEBUG_COMPONENT("PSD_cut", _PSD_cut_var._position_absolute, _PSD_cut_var._rotation_absolute); + instrument->_position_absolute[10] = _PSD_cut_var._position_absolute; + instrument->_position_relative[10] = _PSD_cut_var._position_relative; + _PSD_cut_var._position_relative_is_zero = coords_test_zero(_PSD_cut_var._position_relative); + instrument->counter_N[10] = instrument->counter_P[10] = instrument->counter_P2[10] = 0; + instrument->counter_AbsorbProp[10]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0009_PSD_cut", _PSD_cut_var._position_absolute, _PSD_cut_var._rotation_absolute, "PSD_monitor"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "nx", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "ny", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "filename", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "xmin", "-0.05", "-0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "xmax", "0.05", "0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "ymin", "-0.05", "-0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "ymax", "0.05", "0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "xwidth", "0", "0.01","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "yheight", "0", "0.01","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "restore_neutron", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "nowritefile", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _PSD_cut_setpos */ + +/* component BackTrace=Shape() SETTING, POSITION/ROTATION */ +int _BackTrace_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_BackTrace_setpos] component BackTrace=Shape() SETTING [Shape:0]"); + stracpy(_BackTrace_var._name, "BackTrace", 16384); + stracpy(_BackTrace_var._type, "Shape", 16384); + _BackTrace_var._index=11; + int current_setpos_index = 11; + _BackTrace_var._parameters.geometry[0]='\0'; + _BackTrace_var._parameters.radius = 0; + _BackTrace_var._parameters.xwidth = 0.3; + _BackTrace_var._parameters.yheight = 0.3; + _BackTrace_var._parameters.zdepth = 0; + _BackTrace_var._parameters.thickness = 0; + _BackTrace_var._parameters.nx = 0; + _BackTrace_var._parameters.ny = 1; + _BackTrace_var._parameters.nz = 0; + _BackTrace_var._parameters.center = 1; + + + /* component BackTrace=Shape() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Source_var._rotation_absolute, _BackTrace_var._rotation_absolute); + rot_transpose(_PSD_cut_var._rotation_absolute, tr1); + rot_mul(_BackTrace_var._rotation_absolute, tr1, _BackTrace_var._rotation_relative); + _BackTrace_var._rotation_is_identity = rot_test_identity(_BackTrace_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.08); + rot_transpose(_Source_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _BackTrace_var._position_absolute = coords_add(_Source_var._position_absolute, tc2); + tc1 = coords_sub(_PSD_cut_var._position_absolute, _BackTrace_var._position_absolute); + _BackTrace_var._position_relative = rot_apply(_BackTrace_var._rotation_absolute, tc1); + } /* BackTrace=Shape() AT ROTATED */ + DEBUG_COMPONENT("BackTrace", _BackTrace_var._position_absolute, _BackTrace_var._rotation_absolute); + instrument->_position_absolute[11] = _BackTrace_var._position_absolute; + instrument->_position_relative[11] = _BackTrace_var._position_relative; + _BackTrace_var._position_relative_is_zero = coords_test_zero(_BackTrace_var._position_relative); + instrument->counter_N[11] = instrument->counter_P[11] = instrument->counter_P2[11] = 0; + instrument->counter_AbsorbProp[11]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0010_BackTrace", _BackTrace_var._position_absolute, _BackTrace_var._rotation_absolute, "Shape"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "geometry", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "thickness", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "nx", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "ny", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "nz", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "center", "1", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _BackTrace_setpos */ + +/* component PSD_Backtrace=PSD_monitor() SETTING, POSITION/ROTATION */ +int _PSD_Backtrace_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_PSD_Backtrace_setpos] component PSD_Backtrace=PSD_monitor() SETTING [PSD_monitor:0]"); + stracpy(_PSD_Backtrace_var._name, "PSD_Backtrace", 16384); + stracpy(_PSD_Backtrace_var._type, "PSD_monitor", 16384); + _PSD_Backtrace_var._index=12; + int current_setpos_index = 12; + _PSD_Backtrace_var._parameters.nx = 90; + _PSD_Backtrace_var._parameters.ny = 90; + _PSD_Backtrace_var._parameters.filename[0]='\0'; + _PSD_Backtrace_var._parameters.xmin = -0.05; + _PSD_Backtrace_var._parameters.xmax = 0.05; + _PSD_Backtrace_var._parameters.ymin = -0.05; + _PSD_Backtrace_var._parameters.ymax = 0.05; + _PSD_Backtrace_var._parameters.xwidth = 0.3; + _PSD_Backtrace_var._parameters.yheight = 0.3; + _PSD_Backtrace_var._parameters.restore_neutron = 0; + _PSD_Backtrace_var._parameters.nowritefile = 0; + + + /* component PSD_Backtrace=PSD_monitor() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _BackTrace_var._rotation_absolute, _PSD_Backtrace_var._rotation_absolute); + rot_transpose(_BackTrace_var._rotation_absolute, tr1); + rot_mul(_PSD_Backtrace_var._rotation_absolute, tr1, _PSD_Backtrace_var._rotation_relative); + _PSD_Backtrace_var._rotation_is_identity = rot_test_identity(_PSD_Backtrace_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_BackTrace_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _PSD_Backtrace_var._position_absolute = coords_add(_BackTrace_var._position_absolute, tc2); + tc1 = coords_sub(_BackTrace_var._position_absolute, _PSD_Backtrace_var._position_absolute); + _PSD_Backtrace_var._position_relative = rot_apply(_PSD_Backtrace_var._rotation_absolute, tc1); + } /* PSD_Backtrace=PSD_monitor() AT ROTATED */ + DEBUG_COMPONENT("PSD_Backtrace", _PSD_Backtrace_var._position_absolute, _PSD_Backtrace_var._rotation_absolute); + instrument->_position_absolute[12] = _PSD_Backtrace_var._position_absolute; + instrument->_position_relative[12] = _PSD_Backtrace_var._position_relative; + _PSD_Backtrace_var._position_relative_is_zero = coords_test_zero(_PSD_Backtrace_var._position_relative); + instrument->counter_N[12] = instrument->counter_P[12] = instrument->counter_P2[12] = 0; + instrument->counter_AbsorbProp[12]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0011_PSD_Backtrace", _PSD_Backtrace_var._position_absolute, _PSD_Backtrace_var._rotation_absolute, "PSD_monitor"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "nx", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "ny", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "filename", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "xmin", "-0.05", "-0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "xmax", "0.05", "0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "ymin", "-0.05", "-0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "ymax", "0.05", "0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "nowritefile", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _PSD_Backtrace_setpos */ + +/* component Start_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _Start_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Start_of_bi_setpos] component Start_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_Start_of_bi_var._name, "Start_of_bi", 16384); + stracpy(_Start_of_bi_var._type, "Arm", 16384); + _Start_of_bi_var._index=13; + int current_setpos_index = 13; + /* component Start_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _Start_of_bi_var._rotation_absolute); + rot_transpose(_PSD_Backtrace_var._rotation_absolute, tr1); + rot_mul(_Start_of_bi_var._rotation_absolute, tr1, _Start_of_bi_var._rotation_relative); + _Start_of_bi_var._rotation_is_identity = rot_test_identity(_Start_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 2.0306); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Start_of_bi_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_PSD_Backtrace_var._position_absolute, _Start_of_bi_var._position_absolute); + _Start_of_bi_var._position_relative = rot_apply(_Start_of_bi_var._rotation_absolute, tc1); + } /* Start_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute); + instrument->_position_absolute[13] = _Start_of_bi_var._position_absolute; + instrument->_position_relative[13] = _Start_of_bi_var._position_relative; + _Start_of_bi_var._position_relative_is_zero = coords_test_zero(_Start_of_bi_var._position_relative); + instrument->counter_N[13] = instrument->counter_P[13] = instrument->counter_P2[13] = 0; + instrument->counter_AbsorbProp[13]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0012_Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Start_of_bi_setpos */ + +/* component bi=bi_spec_ellipse() SETTING, POSITION/ROTATION */ +int _bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bi_setpos] component bi=bi_spec_ellipse() SETTING [bi_spec_ellipse:0]"); + stracpy(_bi_var._name, "bi", 16384); + stracpy(_bi_var._type, "bi_spec_ellipse", 16384); + _bi_var._index=14; + int current_setpos_index = 14; + _bi_var._parameters.xheight = 0.044795; + _bi_var._parameters.ywidth = 0.033273; + _bi_var._parameters.zlength = 0.3; + _bi_var._parameters.n_mirror = 0; + _bi_var._parameters.tilt = 0.7355449343006287; + _bi_var._parameters.n_pieces = 1; + _bi_var._parameters.angular_offset = 0.0274924630093546; + _bi_var._parameters.m = 4; + _bi_var._parameters.R0_m = 0.99; + _bi_var._parameters.Qc_m = 0.0217; + _bi_var._parameters.alpha_mirror_m = 2.5; + _bi_var._parameters.W_m = 0.015; + _bi_var._parameters.transmit = 1; + _bi_var._parameters.d_focus_1_x = 3.443249331959489; + _bi_var._parameters.d_focus_2_x = 4.946749331959489; + _bi_var._parameters.d_focus_1_y = 1.9037386467676676; + _bi_var._parameters.d_focus_2_y = 33.78623864676767; + _bi_var._parameters.ell_l = 0.31; + _bi_var._parameters.ell_h = 0.04381396598275876; + _bi_var._parameters.ell_w = 0.03326371014826339; + _bi_var._parameters.ell_m = 4; + _bi_var._parameters.R0 = 0.99; + _bi_var._parameters.Qc = 0.0217; + _bi_var._parameters.alpha_mirror = 2.5; + _bi_var._parameters.W = 0.0015; + _bi_var._parameters.cut = 3; + _bi_var._parameters.substrate = 0; + _bi_var._parameters.reflect_mirror[0]='\0'; + _bi_var._parameters.reflect[0]='\0'; + + + /* component bi=bi_spec_ellipse() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _Start_of_bi_var._rotation_absolute, _bi_var._rotation_absolute); + rot_transpose(_PSD_Backtrace_var._rotation_absolute, tr1); + rot_mul(_bi_var._rotation_absolute, tr1, _bi_var._rotation_relative); + _bi_var._rotation_is_identity = rot_test_identity(_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Start_of_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bi_var._position_absolute = coords_add(_Start_of_bi_var._position_absolute, tc2); + tc1 = coords_sub(_PSD_Backtrace_var._position_absolute, _bi_var._position_absolute); + _bi_var._position_relative = rot_apply(_bi_var._rotation_absolute, tc1); + } /* bi=bi_spec_ellipse() AT ROTATED */ + DEBUG_COMPONENT("bi", _bi_var._position_absolute, _bi_var._rotation_absolute); + instrument->_position_absolute[14] = _bi_var._position_absolute; + instrument->_position_relative[14] = _bi_var._position_relative; + _bi_var._position_relative_is_zero = coords_test_zero(_bi_var._position_relative); + instrument->counter_N[14] = instrument->counter_P[14] = instrument->counter_P2[14] = 0; + instrument->counter_AbsorbProp[14]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0013_bi", _bi_var._position_absolute, _bi_var._rotation_absolute, "bi_spec_ellipse"); + mccomp_param_nexus(nxhandle,"0013_bi", "xheight", "NONE", "0.044795","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ywidth", "NONE", "0.033273","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "zlength", "NONE", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "n_mirror", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "tilt", "0.5", "0.7355449343006287","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "n_pieces", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "angular_offset", "0", "0.0274924630093546","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "R0_m", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "Qc_m", "0.021", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "alpha_mirror_m", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "W_m", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "transmit", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "d_focus_1_x", "2.5", "3.443249331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "d_focus_2_x", "5", "4.946749331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "d_focus_1_y", "2.5", "1.9037386467676676","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "d_focus_2_y", "5", "33.78623864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ell_l", "3", "0.31","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ell_h", "0", "0.04381396598275876","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ell_w", "0", "0.03326371014826339","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ell_m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "Qc", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "alpha_mirror", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "W", "0.003", "0.0015","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "cut", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "substrate", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "reflect_mirror", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0013_bi", "reflect", 0, 0, "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bi_setpos */ + +/* component End_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _End_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_End_of_bi_setpos] component End_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_End_of_bi_var._name, "End_of_bi", 16384); + stracpy(_End_of_bi_var._type, "Arm", 16384); + _End_of_bi_var._index=15; + int current_setpos_index = 15; + /* component End_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (-180)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _End_of_bi_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_End_of_bi_var._rotation_absolute, tr1, _End_of_bi_var._rotation_relative); + _End_of_bi_var._rotation_is_identity = rot_test_identity(_End_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _End_of_bi_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _End_of_bi_var._position_absolute); + _End_of_bi_var._position_relative = rot_apply(_End_of_bi_var._rotation_absolute, tc1); + } /* End_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute); + instrument->_position_absolute[15] = _End_of_bi_var._position_absolute; + instrument->_position_relative[15] = _End_of_bi_var._position_relative; + _End_of_bi_var._position_relative_is_zero = coords_test_zero(_End_of_bi_var._position_relative); + instrument->counter_N[15] = instrument->counter_P[15] = instrument->counter_P2[15] = 0; + instrument->counter_AbsorbProp[15]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0014_End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _End_of_bi_setpos */ + +/* component NBOA_drawing_1_end=Guide_four_side() SETTING, POSITION/ROTATION */ +int _NBOA_drawing_1_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_NBOA_drawing_1_end_setpos] component NBOA_drawing_1_end=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_NBOA_drawing_1_end_var._name, "NBOA_drawing_1_end", 16384); + stracpy(_NBOA_drawing_1_end_var._type, "Guide_four_side", 16384); + _NBOA_drawing_1_end_var._index=16; + int current_setpos_index = 16; + _NBOA_drawing_1_end_var._parameters.RIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.ROreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.w1l = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2l = 0.002; + _NBOA_drawing_1_end_var._parameters.linwl = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwl = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.w1r = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2r = 0.002; + _NBOA_drawing_1_end_var._parameters.linwr = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwr = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.h1u = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2u = 0.002; + _NBOA_drawing_1_end_var._parameters.linhu = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthu = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.h1d = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2d = 0.002; + _NBOA_drawing_1_end_var._parameters.linhd = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthd = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.l = 0.5488999999999999; + _NBOA_drawing_1_end_var._parameters.R0 = 0.99; + _NBOA_drawing_1_end_var._parameters.Qcxl = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcxr = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcyu = 0.023; + _NBOA_drawing_1_end_var._parameters.Qcyd = 0.023; + _NBOA_drawing_1_end_var._parameters.alphaxl = 2.5; + _NBOA_drawing_1_end_var._parameters.alphaxr = 2.5; + _NBOA_drawing_1_end_var._parameters.alphayu = 1.8; + _NBOA_drawing_1_end_var._parameters.alphayd = 1.8; + _NBOA_drawing_1_end_var._parameters.Wxr = 0.015; + _NBOA_drawing_1_end_var._parameters.Wxl = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyu = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyd = 0.015; + _NBOA_drawing_1_end_var._parameters.mxr = 4; + _NBOA_drawing_1_end_var._parameters.mxl = 4; + _NBOA_drawing_1_end_var._parameters.myu = 2; + _NBOA_drawing_1_end_var._parameters.myd = 2; + _NBOA_drawing_1_end_var._parameters.QcxrOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcxlOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcyuOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcydOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.alphaxlOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaxrOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphayuOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaydOW = 6.07; + _NBOA_drawing_1_end_var._parameters.WxrOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WxlOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WyuOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WydOW = 0.003; + _NBOA_drawing_1_end_var._parameters.mxrOW = 0; + _NBOA_drawing_1_end_var._parameters.mxlOW = 0; + _NBOA_drawing_1_end_var._parameters.myuOW = 0; + _NBOA_drawing_1_end_var._parameters.mydOW = 0; + _NBOA_drawing_1_end_var._parameters.rwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.lwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.uwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.dwallthick = 0.001; + + + /* component NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_NBOA_drawing_1_end_var._rotation_absolute, tr1, _NBOA_drawing_1_end_var._rotation_relative); + _NBOA_drawing_1_end_var._rotation_is_identity = rot_test_identity(_NBOA_drawing_1_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31000099999999997); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _NBOA_drawing_1_end_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _NBOA_drawing_1_end_var._position_absolute); + _NBOA_drawing_1_end_var._position_relative = rot_apply(_NBOA_drawing_1_end_var._rotation_absolute, tc1); + } /* NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + instrument->_position_absolute[16] = _NBOA_drawing_1_end_var._position_absolute; + instrument->_position_relative[16] = _NBOA_drawing_1_end_var._position_relative; + _NBOA_drawing_1_end_var._position_relative_is_zero = coords_test_zero(_NBOA_drawing_1_end_var._position_relative); + instrument->counter_N[16] = instrument->counter_P[16] = instrument->counter_P2[16] = 0; + instrument->counter_AbsorbProp[16]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0015_NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "w1l", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "linwl", "0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "loutwl", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "w1r", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "linwr", "0.0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "loutwr", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "h1u", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "linhu", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "louthu", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "h1d", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "linhd", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "louthd", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "l", "0", "0.5488999999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _NBOA_drawing_1_end_setpos */ + +/* component g1a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a2_setpos] component g1a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a2_var._name, "g1a2", 16384); + stracpy(_g1a2_var._type, "Guide_four_side", 16384); + _g1a2_var._index=17; + int current_setpos_index = 17; + _g1a2_var._parameters.RIreflect[0]='\0'; + _g1a2_var._parameters.LIreflect[0]='\0'; + _g1a2_var._parameters.UIreflect[0]='\0'; + _g1a2_var._parameters.DIreflect[0]='\0'; + _g1a2_var._parameters.ROreflect[0]='\0'; + _g1a2_var._parameters.LOreflect[0]='\0'; + _g1a2_var._parameters.UOreflect[0]='\0'; + _g1a2_var._parameters.DOreflect[0]='\0'; + _g1a2_var._parameters.w1l = 0.022397711974319966; + _g1a2_var._parameters.w2l = 0.002; + _g1a2_var._parameters.linwl = 4.303349331959489; + _g1a2_var._parameters.loutwl = 3.3968493319594883; + _g1a2_var._parameters.w1r = 0.022397711974319966; + _g1a2_var._parameters.w2r = 0.002; + _g1a2_var._parameters.linwr = 4.303349331959489; + _g1a2_var._parameters.loutwr = 3.3968493319594883; + _g1a2_var._parameters.h1u = 0.019790525295492974; + _g1a2_var._parameters.h2u = 0.002; + _g1a2_var._parameters.linhu = 2.763788626121542; + _g1a2_var._parameters.louthu = 32.236388626121546; + _g1a2_var._parameters.h1d = 0.019790525295492974; + _g1a2_var._parameters.h2d = 0.002; + _g1a2_var._parameters.linhd = 2.763788626121542; + _g1a2_var._parameters.louthd = 32.236388626121546; + _g1a2_var._parameters.l = 0.9998; + _g1a2_var._parameters.R0 = 0.99; + _g1a2_var._parameters.Qcxl = 0.0217; + _g1a2_var._parameters.Qcxr = 0.0217; + _g1a2_var._parameters.Qcyu = 0.0217; + _g1a2_var._parameters.Qcyd = 0.0217; + _g1a2_var._parameters.alphaxl = 2.5; + _g1a2_var._parameters.alphaxr = 2.5; + _g1a2_var._parameters.alphayu = 2.5; + _g1a2_var._parameters.alphayd = 2.5; + _g1a2_var._parameters.Wxr = 0.015; + _g1a2_var._parameters.Wxl = 0.015; + _g1a2_var._parameters.Wyu = 0.015; + _g1a2_var._parameters.Wyd = 0.015; + _g1a2_var._parameters.mxr = 4; + _g1a2_var._parameters.mxl = 4; + _g1a2_var._parameters.myu = 4; + _g1a2_var._parameters.myd = 4; + _g1a2_var._parameters.QcxrOW = 0.0217; + _g1a2_var._parameters.QcxlOW = 0.0217; + _g1a2_var._parameters.QcyuOW = 0.0217; + _g1a2_var._parameters.QcydOW = 0.0217; + _g1a2_var._parameters.alphaxlOW = 6.07; + _g1a2_var._parameters.alphaxrOW = 6.07; + _g1a2_var._parameters.alphayuOW = 6.07; + _g1a2_var._parameters.alphaydOW = 6.07; + _g1a2_var._parameters.WxrOW = 0.003; + _g1a2_var._parameters.WxlOW = 0.003; + _g1a2_var._parameters.WyuOW = 0.003; + _g1a2_var._parameters.WydOW = 0.003; + _g1a2_var._parameters.mxrOW = 0; + _g1a2_var._parameters.mxlOW = 0; + _g1a2_var._parameters.myuOW = 0; + _g1a2_var._parameters.mydOW = 0; + _g1a2_var._parameters.rwallthick = 0.001; + _g1a2_var._parameters.lwallthick = 0.001; + _g1a2_var._parameters.uwallthick = 0.001; + _g1a2_var._parameters.dwallthick = 0.001; + + + /* component g1a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _NBOA_drawing_1_end_var._rotation_absolute, _g1a2_var._rotation_absolute); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + rot_mul(_g1a2_var._rotation_absolute, tr1, _g1a2_var._rotation_relative); + _g1a2_var._rotation_is_identity = rot_test_identity(_g1a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.548901); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a2_var._position_absolute = coords_add(_NBOA_drawing_1_end_var._position_absolute, tc2); + tc1 = coords_sub(_NBOA_drawing_1_end_var._position_absolute, _g1a2_var._position_absolute); + _g1a2_var._position_relative = rot_apply(_g1a2_var._rotation_absolute, tc1); + } /* g1a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute); + instrument->_position_absolute[17] = _g1a2_var._position_absolute; + instrument->_position_relative[17] = _g1a2_var._position_relative; + _g1a2_var._position_relative_is_zero = coords_test_zero(_g1a2_var._position_relative); + instrument->counter_N[17] = instrument->counter_P[17] = instrument->counter_P2[17] = 0; + instrument->counter_AbsorbProp[17]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0016_g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "w1l", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "linwl", "0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "loutwl", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "w1r", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "linwr", "0.0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "loutwr", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "h1u", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "linhu", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "louthu", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "h1d", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "linhd", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "louthd", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "l", "0", "0.9998","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a2_setpos */ + +/* component g1a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a3_setpos] component g1a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a3_var._name, "g1a3", 16384); + stracpy(_g1a3_var._type, "Guide_four_side", 16384); + _g1a3_var._index=18; + int current_setpos_index = 18; + _g1a3_var._parameters.RIreflect[0]='\0'; + _g1a3_var._parameters.LIreflect[0]='\0'; + _g1a3_var._parameters.UIreflect[0]='\0'; + _g1a3_var._parameters.DIreflect[0]='\0'; + _g1a3_var._parameters.ROreflect[0]='\0'; + _g1a3_var._parameters.LOreflect[0]='\0'; + _g1a3_var._parameters.UOreflect[0]='\0'; + _g1a3_var._parameters.DOreflect[0]='\0'; + _g1a3_var._parameters.w1l = 0.021853309009560024; + _g1a3_var._parameters.w2l = 0.002; + _g1a3_var._parameters.linwl = 5.3043493319594885; + _g1a3_var._parameters.loutwl = 1.8968293319594889; + _g1a3_var._parameters.w1r = 0.021853309009560024; + _g1a3_var._parameters.w2r = 0.002; + _g1a3_var._parameters.linwr = 5.3043493319594885; + _g1a3_var._parameters.loutwr = 1.8968293319594889; + _g1a3_var._parameters.h1u = 0.02274764602619812; + _g1a3_var._parameters.h2u = 0.002; + _g1a3_var._parameters.linhu = 3.7648386261215414; + _g1a3_var._parameters.louthu = 30.73631862612154; + _g1a3_var._parameters.h1d = 0.02274764602619812; + _g1a3_var._parameters.h2d = 0.002; + _g1a3_var._parameters.linhd = 3.7648386261215414; + _g1a3_var._parameters.louthd = 30.73631862612154; + _g1a3_var._parameters.l = 1.49882; + _g1a3_var._parameters.R0 = 0.99; + _g1a3_var._parameters.Qcxl = 0.0217; + _g1a3_var._parameters.Qcxr = 0.0217; + _g1a3_var._parameters.Qcyu = 0.0217; + _g1a3_var._parameters.Qcyd = 0.0217; + _g1a3_var._parameters.alphaxl = 2.5; + _g1a3_var._parameters.alphaxr = 2.5; + _g1a3_var._parameters.alphayu = 2.5; + _g1a3_var._parameters.alphayd = 2.5; + _g1a3_var._parameters.Wxr = 0.015; + _g1a3_var._parameters.Wxl = 0.015; + _g1a3_var._parameters.Wyu = 0.015; + _g1a3_var._parameters.Wyd = 0.015; + _g1a3_var._parameters.mxr = 4; + _g1a3_var._parameters.mxl = 4; + _g1a3_var._parameters.myu = 4; + _g1a3_var._parameters.myd = 4; + _g1a3_var._parameters.QcxrOW = 0.0217; + _g1a3_var._parameters.QcxlOW = 0.0217; + _g1a3_var._parameters.QcyuOW = 0.0217; + _g1a3_var._parameters.QcydOW = 0.0217; + _g1a3_var._parameters.alphaxlOW = 6.07; + _g1a3_var._parameters.alphaxrOW = 6.07; + _g1a3_var._parameters.alphayuOW = 6.07; + _g1a3_var._parameters.alphaydOW = 6.07; + _g1a3_var._parameters.WxrOW = 0.003; + _g1a3_var._parameters.WxlOW = 0.003; + _g1a3_var._parameters.WyuOW = 0.003; + _g1a3_var._parameters.WydOW = 0.003; + _g1a3_var._parameters.mxrOW = 0; + _g1a3_var._parameters.mxlOW = 0; + _g1a3_var._parameters.myuOW = 0; + _g1a3_var._parameters.mydOW = 0; + _g1a3_var._parameters.rwallthick = 0.001; + _g1a3_var._parameters.lwallthick = 0.001; + _g1a3_var._parameters.uwallthick = 0.001; + _g1a3_var._parameters.dwallthick = 0.001; + + + /* component g1a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _g1a2_var._rotation_absolute, _g1a3_var._rotation_absolute); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + rot_mul(_g1a3_var._rotation_absolute, tr1, _g1a3_var._rotation_relative); + _g1a3_var._rotation_is_identity = rot_test_identity(_g1a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.999801); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a3_var._position_absolute = coords_add(_g1a2_var._position_absolute, tc2); + tc1 = coords_sub(_g1a2_var._position_absolute, _g1a3_var._position_absolute); + _g1a3_var._position_relative = rot_apply(_g1a3_var._rotation_absolute, tc1); + } /* g1a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute); + instrument->_position_absolute[18] = _g1a3_var._position_absolute; + instrument->_position_relative[18] = _g1a3_var._position_relative; + _g1a3_var._position_relative_is_zero = coords_test_zero(_g1a3_var._position_relative); + instrument->counter_N[18] = instrument->counter_P[18] = instrument->counter_P2[18] = 0; + instrument->counter_AbsorbProp[18]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0017_g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "w1l", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "linwl", "0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "loutwl", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "w1r", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "linwr", "0.0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "loutwr", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "h1u", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "linhu", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "louthu", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "h1d", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "linhd", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "louthd", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "l", "0", "1.49882","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a3_setpos */ + +/* component g1b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1b1_setpos] component g1b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1b1_var._name, "g1b1", 16384); + stracpy(_g1b1_var._type, "Guide_four_side", 16384); + _g1b1_var._index=19; + int current_setpos_index = 19; + _g1b1_var._parameters.RIreflect[0]='\0'; + _g1b1_var._parameters.LIreflect[0]='\0'; + _g1b1_var._parameters.UIreflect[0]='\0'; + _g1b1_var._parameters.DIreflect[0]='\0'; + _g1b1_var._parameters.ROreflect[0]='\0'; + _g1b1_var._parameters.LOreflect[0]='\0'; + _g1b1_var._parameters.UOreflect[0]='\0'; + _g1b1_var._parameters.DOreflect[0]='\0'; + _g1b1_var._parameters.w1l = 0.017955; + _g1b1_var._parameters.w2l = 0.002; + _g1b1_var._parameters.linwl = 6.82655; + _g1b1_var._parameters.loutwl = 1.3934509999999998; + _g1b1_var._parameters.w1r = 0.017955; + _g1b1_var._parameters.w2r = 0.002; + _g1b1_var._parameters.linwr = 6.82655; + _g1b1_var._parameters.loutwr = 1.3934509999999998; + _g1b1_var._parameters.h1u = 0.026565; + _g1b1_var._parameters.h2u = 0.002; + _g1b1_var._parameters.linhu = 5.2842144; + _g1b1_var._parameters.louthu = 30.232929999999996; + _g1b1_var._parameters.h1d = 0.026565; + _g1b1_var._parameters.h2d = 0.002; + _g1b1_var._parameters.linhd = 5.2842144; + _g1b1_var._parameters.louthd = 30.232929999999996; + _g1b1_var._parameters.l = 0.48300000000000054; + _g1b1_var._parameters.R0 = 0.99; + _g1b1_var._parameters.Qcxl = 0.0217; + _g1b1_var._parameters.Qcxr = 0.0217; + _g1b1_var._parameters.Qcyu = 0.0221; + _g1b1_var._parameters.Qcyd = 0.0221; + _g1b1_var._parameters.alphaxl = 2.5; + _g1b1_var._parameters.alphaxr = 2.5; + _g1b1_var._parameters.alphayu = 1.75; + _g1b1_var._parameters.alphayd = 1.75; + _g1b1_var._parameters.Wxr = 0.015; + _g1b1_var._parameters.Wxl = 0.015; + _g1b1_var._parameters.Wyu = 0.015; + _g1b1_var._parameters.Wyd = 0.015; + _g1b1_var._parameters.mxr = 4; + _g1b1_var._parameters.mxl = 4; + _g1b1_var._parameters.myu = 2.5; + _g1b1_var._parameters.myd = 2.5; + _g1b1_var._parameters.QcxrOW = 0.0217; + _g1b1_var._parameters.QcxlOW = 0.0217; + _g1b1_var._parameters.QcyuOW = 0.0217; + _g1b1_var._parameters.QcydOW = 0.0217; + _g1b1_var._parameters.alphaxlOW = 6.07; + _g1b1_var._parameters.alphaxrOW = 6.07; + _g1b1_var._parameters.alphayuOW = 6.07; + _g1b1_var._parameters.alphaydOW = 6.07; + _g1b1_var._parameters.WxrOW = 0.003; + _g1b1_var._parameters.WxlOW = 0.003; + _g1b1_var._parameters.WyuOW = 0.003; + _g1b1_var._parameters.WydOW = 0.003; + _g1b1_var._parameters.mxrOW = 0; + _g1b1_var._parameters.mxlOW = 0; + _g1b1_var._parameters.myuOW = 0; + _g1b1_var._parameters.mydOW = 0; + _g1b1_var._parameters.rwallthick = 0.001; + _g1b1_var._parameters.lwallthick = 0.001; + _g1b1_var._parameters.uwallthick = 0.001; + _g1b1_var._parameters.dwallthick = 0.001; + + + /* component g1b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1b1_var._rotation_absolute); + rot_transpose(_g1a3_var._rotation_absolute, tr1); + rot_mul(_g1b1_var._rotation_absolute, tr1, _g1b1_var._rotation_relative); + _g1b1_var._rotation_is_identity = rot_test_identity(_g1b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.4109); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1a3_var._position_absolute, _g1b1_var._position_absolute); + _g1b1_var._position_relative = rot_apply(_g1b1_var._rotation_absolute, tc1); + } /* g1b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute); + instrument->_position_absolute[19] = _g1b1_var._position_absolute; + instrument->_position_relative[19] = _g1b1_var._position_relative; + _g1b1_var._position_relative_is_zero = coords_test_zero(_g1b1_var._position_relative); + instrument->counter_N[19] = instrument->counter_P[19] = instrument->counter_P2[19] = 0; + instrument->counter_AbsorbProp[19]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0018_g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "w1l", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "linwl", "0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "loutwl", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "w1r", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "linwr", "0.0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "loutwr", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "h1u", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "linhu", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "louthu", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "h1d", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "linhd", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "louthd", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "l", "0", "0.48300000000000054","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1b1_setpos */ + +/* component g1c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1c1_setpos] component g1c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1c1_var._name, "g1c1", 16384); + stracpy(_g1c1_var._type, "Guide_four_side", 16384); + _g1c1_var._index=20; + int current_setpos_index = 20; + _g1c1_var._parameters.RIreflect[0]='\0'; + _g1c1_var._parameters.LIreflect[0]='\0'; + _g1c1_var._parameters.UIreflect[0]='\0'; + _g1c1_var._parameters.DIreflect[0]='\0'; + _g1c1_var._parameters.ROreflect[0]='\0'; + _g1c1_var._parameters.LOreflect[0]='\0'; + _g1c1_var._parameters.UOreflect[0]='\0'; + _g1c1_var._parameters.DOreflect[0]='\0'; + _g1c1_var._parameters.w1l = 0.015725; + _g1c1_var._parameters.w2l = 0.002; + _g1c1_var._parameters.linwl = 7.323650000000001; + _g1c1_var._parameters.loutwl = 0.5472510000000002; + _g1c1_var._parameters.w1r = 0.015725; + _g1c1_var._parameters.w2r = 0.002; + _g1c1_var._parameters.linwr = 7.323650000000001; + _g1c1_var._parameters.loutwr = 0.5472510000000002; + _g1c1_var._parameters.h1u = 0.02753; + _g1c1_var._parameters.h2u = 0.002; + _g1c1_var._parameters.linhu = 5.7813144; + _g1c1_var._parameters.louthu = 29.38673; + _g1c1_var._parameters.h1d = 0.02753; + _g1c1_var._parameters.h2d = 0.002; + _g1c1_var._parameters.linhd = 5.7813144; + _g1c1_var._parameters.louthd = 29.38673; + _g1c1_var._parameters.l = 0.8320999999999996; + _g1c1_var._parameters.R0 = 0.99; + _g1c1_var._parameters.Qcxl = 0.0217; + _g1c1_var._parameters.Qcxr = 0.0217; + _g1c1_var._parameters.Qcyu = 0.0221; + _g1c1_var._parameters.Qcyd = 0.0221; + _g1c1_var._parameters.alphaxl = 2.5; + _g1c1_var._parameters.alphaxr = 2.5; + _g1c1_var._parameters.alphayu = 1.75; + _g1c1_var._parameters.alphayd = 1.75; + _g1c1_var._parameters.Wxr = 0.015; + _g1c1_var._parameters.Wxl = 0.015; + _g1c1_var._parameters.Wyu = 0.015; + _g1c1_var._parameters.Wyd = 0.015; + _g1c1_var._parameters.mxr = 4; + _g1c1_var._parameters.mxl = 4; + _g1c1_var._parameters.myu = 2.5; + _g1c1_var._parameters.myd = 2.5; + _g1c1_var._parameters.QcxrOW = 0.0217; + _g1c1_var._parameters.QcxlOW = 0.0217; + _g1c1_var._parameters.QcyuOW = 0.0217; + _g1c1_var._parameters.QcydOW = 0.0217; + _g1c1_var._parameters.alphaxlOW = 6.07; + _g1c1_var._parameters.alphaxrOW = 6.07; + _g1c1_var._parameters.alphayuOW = 6.07; + _g1c1_var._parameters.alphaydOW = 6.07; + _g1c1_var._parameters.WxrOW = 0.003; + _g1c1_var._parameters.WxlOW = 0.003; + _g1c1_var._parameters.WyuOW = 0.003; + _g1c1_var._parameters.WydOW = 0.003; + _g1c1_var._parameters.mxrOW = 0; + _g1c1_var._parameters.mxlOW = 0; + _g1c1_var._parameters.myuOW = 0; + _g1c1_var._parameters.mydOW = 0; + _g1c1_var._parameters.rwallthick = 0.001; + _g1c1_var._parameters.lwallthick = 0.001; + _g1c1_var._parameters.uwallthick = 0.001; + _g1c1_var._parameters.dwallthick = 0.001; + + + /* component g1c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1c1_var._rotation_absolute); + rot_transpose(_g1b1_var._rotation_absolute, tr1); + rot_mul(_g1c1_var._rotation_absolute, tr1, _g1c1_var._rotation_relative); + _g1c1_var._rotation_is_identity = rot_test_identity(_g1c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.908); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1b1_var._position_absolute, _g1c1_var._position_absolute); + _g1c1_var._position_relative = rot_apply(_g1c1_var._rotation_absolute, tc1); + } /* g1c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute); + instrument->_position_absolute[20] = _g1c1_var._position_absolute; + instrument->_position_relative[20] = _g1c1_var._position_relative; + _g1c1_var._position_relative_is_zero = coords_test_zero(_g1c1_var._position_relative); + instrument->counter_N[20] = instrument->counter_P[20] = instrument->counter_P2[20] = 0; + instrument->counter_AbsorbProp[20]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0019_g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "w1l", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "linwl", "0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "loutwl", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "w1r", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "linwr", "0.0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "loutwr", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "h1u", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "linhu", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "louthu", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "h1d", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "linhd", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "louthd", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "l", "0", "0.8320999999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1c1_setpos */ + +/* component wfm_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_position_setpos] component wfm_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_position_var._name, "wfm_position", 16384); + stracpy(_wfm_position_var._type, "Arm", 16384); + _wfm_position_var._index=21; + int current_setpos_index = 21; + /* component wfm_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _wfm_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_position_var._rotation_absolute, tr1, _wfm_position_var._rotation_relative); + _wfm_position_var._rotation_is_identity = rot_test_identity(_wfm_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_position_var._position_absolute); + _wfm_position_var._position_relative = rot_apply(_wfm_position_var._rotation_absolute, tc1); + } /* wfm_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute); + instrument->_position_absolute[21] = _wfm_position_var._position_absolute; + instrument->_position_relative[21] = _wfm_position_var._position_relative; + _wfm_position_var._position_relative_is_zero = coords_test_zero(_wfm_position_var._position_relative); + instrument->counter_N[21] = instrument->counter_P[21] = instrument->counter_P2[21] = 0; + instrument->counter_AbsorbProp[21]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0020_wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_position_setpos */ + +/* component wfm_1_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_1_position_setpos] component wfm_1_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_1_position_var._name, "wfm_1_position", 16384); + stracpy(_wfm_1_position_var._type, "Arm", 16384); + _wfm_1_position_var._index=22; + int current_setpos_index = 22; + /* component wfm_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_1_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_1_position_var._rotation_absolute, tr1, _wfm_1_position_var._rotation_relative); + _wfm_1_position_var._rotation_is_identity = rot_test_identity(_wfm_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, -0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_1_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_1_position_var._position_absolute); + _wfm_1_position_var._position_relative = rot_apply(_wfm_1_position_var._rotation_absolute, tc1); + } /* wfm_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute); + instrument->_position_absolute[22] = _wfm_1_position_var._position_absolute; + instrument->_position_relative[22] = _wfm_1_position_var._position_relative; + _wfm_1_position_var._position_relative_is_zero = coords_test_zero(_wfm_1_position_var._position_relative); + instrument->counter_N[22] = instrument->counter_P[22] = instrument->counter_P2[22] = 0; + instrument->counter_AbsorbProp[22]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0021_wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_1_position_setpos */ + +/* component wfmc_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_1_setpos] component wfmc_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_1_var._name, "wfmc_1", 16384); + stracpy(_wfmc_1_var._type, "MultiDiskChopper", 16384); + _wfmc_1_var._index=23; + int current_setpos_index = 23; + if("5.62;-44.68;-91.85;-136.08;-177.55;143.56" && strlen("5.62;-44.68;-91.85;-136.08;-177.55;143.56")) + stracpy(_wfmc_1_var._parameters.slit_center, "5.62;-44.68;-91.85;-136.08;-177.55;143.56" ? "5.62;-44.68;-91.85;-136.08;-177.55;143.56" : "", 16384); + else + _wfmc_1_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_1_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_1_var._parameters.slit_width[0]='\0'; + _wfmc_1_var._parameters.nslits = 6; + _wfmc_1_var._parameters.delta_y = -0.31499999999999995; + _wfmc_1_var._parameters.nu = -56.0; + _wfmc_1_var._parameters.nrev = 0; + _wfmc_1_var._parameters.ratio = 1; + _wfmc_1_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_1; + _wfmc_1_var._parameters.delay = 0; + _wfmc_1_var._parameters.isfirst = 0; + _wfmc_1_var._parameters.phase = WFM1_phase; + _wfmc_1_var._parameters.radius = 0.35; + _wfmc_1_var._parameters.equal = 0; + _wfmc_1_var._parameters.abs_out = 0; + _wfmc_1_var._parameters.verbose = 0; + + + /* component wfmc_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_1_position_var._rotation_absolute, _wfmc_1_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfmc_1_var._rotation_absolute, tr1, _wfmc_1_var._rotation_relative); + _wfmc_1_var._rotation_is_identity = rot_test_identity(_wfmc_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_1_var._position_absolute = coords_add(_wfm_1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfmc_1_var._position_absolute); + _wfmc_1_var._position_relative = rot_apply(_wfmc_1_var._rotation_absolute, tc1); + } /* wfmc_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute); + instrument->_position_absolute[23] = _wfmc_1_var._position_absolute; + instrument->_position_relative[23] = _wfmc_1_var._position_relative; + _wfmc_1_var._position_relative_is_zero = coords_test_zero(_wfmc_1_var._position_relative); + instrument->counter_N[23] = instrument->counter_P[23] = instrument->counter_P2[23] = 0; + instrument->counter_AbsorbProp[23]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0022_wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "slit_center", "0 180", "5.62;-44.68;-91.85;-136.08;-177.55;143.56", "char*"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "phase", "0", "WFM1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_1_setpos */ + +/* component pinhole_1=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_1_setpos] component pinhole_1=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_1_var._name, "pinhole_1", 16384); + stracpy(_pinhole_1_var._type, "Slit", 16384); + _pinhole_1_var._index=24; + int current_setpos_index = 24; + _pinhole_1_var._parameters.xmin = UNSET; + _pinhole_1_var._parameters.xmax = UNSET; + _pinhole_1_var._parameters.ymin = UNSET; + _pinhole_1_var._parameters.ymax = UNSET; + _pinhole_1_var._parameters.radius = UNSET; + _pinhole_1_var._parameters.xwidth = 0.015; + _pinhole_1_var._parameters.yheight = 0.06; + + + /* component pinhole_1=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _pinhole_1_var._rotation_absolute); + rot_transpose(_wfmc_1_var._rotation_absolute, tr1); + rot_mul(_pinhole_1_var._rotation_absolute, tr1, _pinhole_1_var._rotation_relative); + _pinhole_1_var._rotation_is_identity = rot_test_identity(_pinhole_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_1_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_1_var._position_absolute, _pinhole_1_var._position_absolute); + _pinhole_1_var._position_relative = rot_apply(_pinhole_1_var._rotation_absolute, tc1); + } /* pinhole_1=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute); + instrument->_position_absolute[24] = _pinhole_1_var._position_absolute; + instrument->_position_relative[24] = _pinhole_1_var._position_relative; + _pinhole_1_var._position_relative_is_zero = coords_test_zero(_pinhole_1_var._position_relative); + instrument->counter_N[24] = instrument->counter_P[24] = instrument->counter_P2[24] = 0; + instrument->counter_AbsorbProp[24]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0023_pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "xwidth", "UNSET", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "yheight", "UNSET", "0.06","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_1_setpos */ + +/* component wfm_2_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_2_position_setpos] component wfm_2_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_2_position_var._name, "wfm_2_position", 16384); + stracpy(_wfm_2_position_var._type, "Arm", 16384); + _wfm_2_position_var._index=25; + int current_setpos_index = 25; + /* component wfm_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_2_position_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfm_2_position_var._rotation_absolute, tr1, _wfm_2_position_var._rotation_relative); + _wfm_2_position_var._rotation_is_identity = rot_test_identity(_wfm_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_2_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfm_2_position_var._position_absolute); + _wfm_2_position_var._position_relative = rot_apply(_wfm_2_position_var._rotation_absolute, tc1); + } /* wfm_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute); + instrument->_position_absolute[25] = _wfm_2_position_var._position_absolute; + instrument->_position_relative[25] = _wfm_2_position_var._position_relative; + _wfm_2_position_var._position_relative_is_zero = coords_test_zero(_wfm_2_position_var._position_relative); + instrument->counter_N[25] = instrument->counter_P[25] = instrument->counter_P2[25] = 0; + instrument->counter_AbsorbProp[25]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0024_wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_2_position_setpos */ + +/* component wfmc_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_2_setpos] component wfmc_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_2_var._name, "wfmc_2", 16384); + stracpy(_wfmc_2_var._type, "MultiDiskChopper", 16384); + _wfmc_2_var._index=26; + int current_setpos_index = 26; + if("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" && strlen("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028")) + stracpy(_wfmc_2_var._parameters.slit_center, "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" ? "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" : "", 16384); + else + _wfmc_2_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_2_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_2_var._parameters.slit_width[0]='\0'; + _wfmc_2_var._parameters.nslits = 6; + _wfmc_2_var._parameters.delta_y = -0.31499999999999995; + _wfmc_2_var._parameters.nu = -56.0; + _wfmc_2_var._parameters.nrev = 0; + _wfmc_2_var._parameters.ratio = 1; + _wfmc_2_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_2; + _wfmc_2_var._parameters.delay = 0; + _wfmc_2_var._parameters.isfirst = 0; + _wfmc_2_var._parameters.phase = WFM2_phase; + _wfmc_2_var._parameters.radius = 0.35; + _wfmc_2_var._parameters.equal = 0; + _wfmc_2_var._parameters.abs_out = 0; + _wfmc_2_var._parameters.verbose = 0; + + + /* component wfmc_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_2_position_var._rotation_absolute, _wfmc_2_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfmc_2_var._rotation_absolute, tr1, _wfmc_2_var._rotation_relative); + _wfmc_2_var._rotation_is_identity = rot_test_identity(_wfmc_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_2_var._position_absolute = coords_add(_wfm_2_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfmc_2_var._position_absolute); + _wfmc_2_var._position_relative = rot_apply(_wfmc_2_var._rotation_absolute, tc1); + } /* wfmc_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute); + instrument->_position_absolute[26] = _wfmc_2_var._position_absolute; + instrument->_position_relative[26] = _wfmc_2_var._position_relative; + _wfmc_2_var._position_relative_is_zero = coords_test_zero(_wfmc_2_var._position_relative); + instrument->counter_N[26] = instrument->counter_P[26] = instrument->counter_P2[26] = 0; + instrument->counter_AbsorbProp[26]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0025_wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "slit_center", "0 180", "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", "char*"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "phase", "0", "WFM2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_2_setpos */ + +/* component g2a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a1_setpos] component g2a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a1_var._name, "g2a1", 16384); + stracpy(_g2a1_var._type, "Guide_four_side", 16384); + _g2a1_var._index=27; + int current_setpos_index = 27; + _g2a1_var._parameters.RIreflect[0]='\0'; + _g2a1_var._parameters.LIreflect[0]='\0'; + _g2a1_var._parameters.UIreflect[0]='\0'; + _g2a1_var._parameters.DIreflect[0]='\0'; + _g2a1_var._parameters.ROreflect[0]='\0'; + _g2a1_var._parameters.LOreflect[0]='\0'; + _g2a1_var._parameters.UOreflect[0]='\0'; + _g2a1_var._parameters.DOreflect[0]='\0'; + _g2a1_var._parameters.w1l = 0.01121; + _g2a1_var._parameters.w2l = 0.002; + _g2a1_var._parameters.linwl = 0.25980000000000025; + _g2a1_var._parameters.loutwl = 12.040199999999999; + _g2a1_var._parameters.w1r = 0.01121; + _g2a1_var._parameters.w2r = 0.002; + _g2a1_var._parameters.linwr = 0.25980000000000025; + _g2a1_var._parameters.loutwr = 12.040199999999999; + _g2a1_var._parameters.h1u = 0.029825; + _g2a1_var._parameters.h2u = 0.002; + _g2a1_var._parameters.linhu = 7.2598; + _g2a1_var._parameters.louthu = 28.0402; + _g2a1_var._parameters.h1d = 0.029825; + _g2a1_var._parameters.h2d = 0.002; + _g2a1_var._parameters.linhd = 7.2598; + _g2a1_var._parameters.louthd = 28.0402; + _g2a1_var._parameters.l = 0.7000000000000002; + _g2a1_var._parameters.R0 = 0.99; + _g2a1_var._parameters.Qcxl = 0.023; + _g2a1_var._parameters.Qcxr = 0.023; + _g2a1_var._parameters.Qcyu = 0.0221; + _g2a1_var._parameters.Qcyd = 0.0221; + _g2a1_var._parameters.alphaxl = 1.8; + _g2a1_var._parameters.alphaxr = 1.8; + _g2a1_var._parameters.alphayu = 1.75; + _g2a1_var._parameters.alphayd = 1.75; + _g2a1_var._parameters.Wxr = 0.015; + _g2a1_var._parameters.Wxl = 0.015; + _g2a1_var._parameters.Wyu = 0.015; + _g2a1_var._parameters.Wyd = 0.015; + _g2a1_var._parameters.mxr = 2; + _g2a1_var._parameters.mxl = 2; + _g2a1_var._parameters.myu = 3; + _g2a1_var._parameters.myd = 3; + _g2a1_var._parameters.QcxrOW = 0.0217; + _g2a1_var._parameters.QcxlOW = 0.0217; + _g2a1_var._parameters.QcyuOW = 0.0217; + _g2a1_var._parameters.QcydOW = 0.0217; + _g2a1_var._parameters.alphaxlOW = 6.07; + _g2a1_var._parameters.alphaxrOW = 6.07; + _g2a1_var._parameters.alphayuOW = 6.07; + _g2a1_var._parameters.alphaydOW = 6.07; + _g2a1_var._parameters.WxrOW = 0.003; + _g2a1_var._parameters.WxlOW = 0.003; + _g2a1_var._parameters.WyuOW = 0.003; + _g2a1_var._parameters.WydOW = 0.003; + _g2a1_var._parameters.mxrOW = 0; + _g2a1_var._parameters.mxlOW = 0; + _g2a1_var._parameters.myuOW = 0; + _g2a1_var._parameters.mydOW = 0; + _g2a1_var._parameters.rwallthick = 0.001; + _g2a1_var._parameters.lwallthick = 0.001; + _g2a1_var._parameters.uwallthick = 0.001; + _g2a1_var._parameters.dwallthick = 0.001; + + + /* component g2a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a1_var._rotation_absolute); + rot_transpose(_wfmc_2_var._rotation_absolute, tr1); + rot_mul(_g2a1_var._rotation_absolute, tr1, _g2a1_var._rotation_relative); + _g2a1_var._rotation_is_identity = rot_test_identity(_g2a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.247800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_2_var._position_absolute, _g2a1_var._position_absolute); + _g2a1_var._position_relative = rot_apply(_g2a1_var._rotation_absolute, tc1); + } /* g2a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute); + instrument->_position_absolute[27] = _g2a1_var._position_absolute; + instrument->_position_relative[27] = _g2a1_var._position_relative; + _g2a1_var._position_relative_is_zero = coords_test_zero(_g2a1_var._position_relative); + instrument->counter_N[27] = instrument->counter_P[27] = instrument->counter_P2[27] = 0; + instrument->counter_AbsorbProp[27]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0026_g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "w1l", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "linwl", "0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "loutwl", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "w1r", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "linwr", "0.0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "loutwr", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "h1u", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "linhu", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "louthu", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "h1d", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "linhd", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "louthd", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "l", "0", "0.7000000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a1_setpos */ + +/* component monitor_1_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_1_position_setpos] component monitor_1_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_1_position_var._name, "monitor_1_position", 16384); + stracpy(_monitor_1_position_var._type, "Arm", 16384); + _monitor_1_position_var._index=28; + int current_setpos_index = 28; + /* component monitor_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_1_position_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_monitor_1_position_var._rotation_absolute, tr1, _monitor_1_position_var._rotation_relative); + _monitor_1_position_var._rotation_is_identity = rot_test_identity(_monitor_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.96); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _monitor_1_position_var._position_absolute); + _monitor_1_position_var._position_relative = rot_apply(_monitor_1_position_var._rotation_absolute, tc1); + } /* monitor_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute); + instrument->_position_absolute[28] = _monitor_1_position_var._position_absolute; + instrument->_position_relative[28] = _monitor_1_position_var._position_relative; + _monitor_1_position_var._position_relative_is_zero = coords_test_zero(_monitor_1_position_var._position_relative); + instrument->counter_N[28] = instrument->counter_P[28] = instrument->counter_P2[28] = 0; + instrument->counter_AbsorbProp[28]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0027_monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_1_position_setpos */ + +/* component g2a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a2_setpos] component g2a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a2_var._name, "g2a2", 16384); + stracpy(_g2a2_var._type, "Guide_four_side", 16384); + _g2a2_var._index=29; + int current_setpos_index = 29; + _g2a2_var._parameters.RIreflect[0]='\0'; + _g2a2_var._parameters.LIreflect[0]='\0'; + _g2a2_var._parameters.UIreflect[0]='\0'; + _g2a2_var._parameters.DIreflect[0]='\0'; + _g2a2_var._parameters.ROreflect[0]='\0'; + _g2a2_var._parameters.LOreflect[0]='\0'; + _g2a2_var._parameters.UOreflect[0]='\0'; + _g2a2_var._parameters.DOreflect[0]='\0'; + _g2a2_var._parameters.w1l = 0.0212; + _g2a2_var._parameters.w2l = 0.002; + _g2a2_var._parameters.linwl = 0.9858000000000002; + _g2a2_var._parameters.loutwl = 11.6045; + _g2a2_var._parameters.w1r = 0.0212; + _g2a2_var._parameters.w2r = 0.002; + _g2a2_var._parameters.linwr = 0.9858000000000002; + _g2a2_var._parameters.loutwr = 11.6045; + _g2a2_var._parameters.h1u = 0.03088; + _g2a2_var._parameters.h2u = 0.002; + _g2a2_var._parameters.linhu = 7.9858; + _g2a2_var._parameters.louthu = 27.6045; + _g2a2_var._parameters.h1d = 0.03088; + _g2a2_var._parameters.h2d = 0.002; + _g2a2_var._parameters.linhd = 7.9858; + _g2a2_var._parameters.louthd = 27.6045; + _g2a2_var._parameters.l = 0.40969999999999995; + _g2a2_var._parameters.R0 = 0.99; + _g2a2_var._parameters.Qcxl = 0.0221; + _g2a2_var._parameters.Qcxr = 0.0221; + _g2a2_var._parameters.Qcyu = 0.0221; + _g2a2_var._parameters.Qcyd = 0.0221; + _g2a2_var._parameters.alphaxl = 1.75; + _g2a2_var._parameters.alphaxr = 1.75; + _g2a2_var._parameters.alphayu = 1.75; + _g2a2_var._parameters.alphayd = 1.75; + _g2a2_var._parameters.Wxr = 0.015; + _g2a2_var._parameters.Wxl = 0.015; + _g2a2_var._parameters.Wyu = 0.015; + _g2a2_var._parameters.Wyd = 0.015; + _g2a2_var._parameters.mxr = 3; + _g2a2_var._parameters.mxl = 3; + _g2a2_var._parameters.myu = 3; + _g2a2_var._parameters.myd = 3; + _g2a2_var._parameters.QcxrOW = 0.0217; + _g2a2_var._parameters.QcxlOW = 0.0217; + _g2a2_var._parameters.QcyuOW = 0.0217; + _g2a2_var._parameters.QcydOW = 0.0217; + _g2a2_var._parameters.alphaxlOW = 6.07; + _g2a2_var._parameters.alphaxrOW = 6.07; + _g2a2_var._parameters.alphayuOW = 6.07; + _g2a2_var._parameters.alphaydOW = 6.07; + _g2a2_var._parameters.WxrOW = 0.003; + _g2a2_var._parameters.WxlOW = 0.003; + _g2a2_var._parameters.WyuOW = 0.003; + _g2a2_var._parameters.WydOW = 0.003; + _g2a2_var._parameters.mxrOW = 0; + _g2a2_var._parameters.mxlOW = 0; + _g2a2_var._parameters.myuOW = 0; + _g2a2_var._parameters.mydOW = 0; + _g2a2_var._parameters.rwallthick = 0.001; + _g2a2_var._parameters.lwallthick = 0.001; + _g2a2_var._parameters.uwallthick = 0.001; + _g2a2_var._parameters.dwallthick = 0.001; + + + /* component g2a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a2_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_g2a2_var._rotation_absolute, tr1, _g2a2_var._rotation_relative); + _g2a2_var._rotation_is_identity = rot_test_identity(_g2a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.973800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _g2a2_var._position_absolute); + _g2a2_var._position_relative = rot_apply(_g2a2_var._rotation_absolute, tc1); + } /* g2a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute); + instrument->_position_absolute[29] = _g2a2_var._position_absolute; + instrument->_position_relative[29] = _g2a2_var._position_relative; + _g2a2_var._position_relative_is_zero = coords_test_zero(_g2a2_var._position_relative); + instrument->counter_N[29] = instrument->counter_P[29] = instrument->counter_P2[29] = 0; + instrument->counter_AbsorbProp[29]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0028_g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "w1l", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "linwl", "0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "loutwl", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "w1r", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "linwr", "0.0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "loutwr", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "h1u", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "linhu", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "louthu", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "h1d", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "linhd", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "louthd", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "l", "0", "0.40969999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a2_setpos */ + +/* component fo1_position=Arm() SETTING, POSITION/ROTATION */ +int _fo1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo1_position_setpos] component fo1_position=Arm() SETTING [Arm:0]"); + stracpy(_fo1_position_var._name, "fo1_position", 16384); + stracpy(_fo1_position_var._type, "Arm", 16384); + _fo1_position_var._index=30; + int current_setpos_index = 30; + /* component fo1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo1_position_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo1_position_var._rotation_absolute, tr1, _fo1_position_var._rotation_relative); + _fo1_position_var._rotation_is_identity = rot_test_identity(_fo1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.392); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo1_position_var._position_absolute); + _fo1_position_var._position_relative = rot_apply(_fo1_position_var._rotation_absolute, tc1); + } /* fo1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute); + instrument->_position_absolute[30] = _fo1_position_var._position_absolute; + instrument->_position_relative[30] = _fo1_position_var._position_relative; + _fo1_position_var._position_relative_is_zero = coords_test_zero(_fo1_position_var._position_relative); + instrument->counter_N[30] = instrument->counter_P[30] = instrument->counter_P2[30] = 0; + instrument->counter_AbsorbProp[30]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0029_fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo1_position_setpos */ + +/* component fo_chopper_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_1_setpos] component fo_chopper_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_1_var._name, "fo_chopper_1", 16384); + stracpy(_fo_chopper_1_var._type, "MultiDiskChopper", 16384); + _fo_chopper_1_var._index=31; + int current_setpos_index = 31; + if("-146.745;166.555;122.775;81.715;43.215;5.525" && strlen("-146.745;166.555;122.775;81.715;43.215;5.525")) + stracpy(_fo_chopper_1_var._parameters.slit_center, "-146.745;166.555;122.775;81.715;43.215;5.525" ? "-146.745;166.555;122.775;81.715;43.215;5.525" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_center[0]='\0'; + if("11.06;13.06;14.94;16.71;18.36;16.72" && strlen("11.06;13.06;14.94;16.71;18.36;16.72")) + stracpy(_fo_chopper_1_var._parameters.slit_width, "11.06;13.06;14.94;16.71;18.36;16.72" ? "11.06;13.06;14.94;16.71;18.36;16.72" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_width[0]='\0'; + _fo_chopper_1_var._parameters.nslits = 6; + _fo_chopper_1_var._parameters.delta_y = -0.4625; + _fo_chopper_1_var._parameters.nu = -42.0; + _fo_chopper_1_var._parameters.nrev = 0; + _fo_chopper_1_var._parameters.ratio = 1; + _fo_chopper_1_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_1; + _fo_chopper_1_var._parameters.delay = 0; + _fo_chopper_1_var._parameters.isfirst = 0; + _fo_chopper_1_var._parameters.phase = fo1_phase; + _fo_chopper_1_var._parameters.radius = 0.5; + _fo_chopper_1_var._parameters.equal = 0; + _fo_chopper_1_var._parameters.abs_out = 0; + _fo_chopper_1_var._parameters.verbose = 0; + + + /* component fo_chopper_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo1_position_var._rotation_absolute, _fo_chopper_1_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_1_var._rotation_absolute, tr1, _fo_chopper_1_var._rotation_relative); + _fo_chopper_1_var._rotation_is_identity = rot_test_identity(_fo_chopper_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_1_var._position_absolute = coords_add(_fo1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo_chopper_1_var._position_absolute); + _fo_chopper_1_var._position_relative = rot_apply(_fo_chopper_1_var._rotation_absolute, tc1); + } /* fo_chopper_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute); + instrument->_position_absolute[31] = _fo_chopper_1_var._position_absolute; + instrument->_position_relative[31] = _fo_chopper_1_var._position_relative; + _fo_chopper_1_var._position_relative_is_zero = coords_test_zero(_fo_chopper_1_var._position_relative); + instrument->counter_N[31] = instrument->counter_P[31] = instrument->counter_P2[31] = 0; + instrument->counter_AbsorbProp[31]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0030_fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "slit_center", "0 180", "-146.745;166.555;122.775;81.715;43.215;5.525", "char*"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "slit_width", "10 20", "11.06;13.06;14.94;16.71;18.36;16.72", "char*"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "delta_y", "-0.3", "-0.4625","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "phase", "0", "fo1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_1_setpos */ + +/* component bp1_position=Arm() SETTING, POSITION/ROTATION */ +int _bp1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_position_setpos] component bp1_position=Arm() SETTING [Arm:0]"); + stracpy(_bp1_position_var._name, "bp1_position", 16384); + stracpy(_bp1_position_var._type, "Arm", 16384); + _bp1_position_var._index=32; + int current_setpos_index = 32; + /* component bp1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp1_position_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_position_var._rotation_absolute, tr1, _bp1_position_var._rotation_relative); + _bp1_position_var._rotation_is_identity = rot_test_identity(_bp1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.442); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_position_var._position_absolute); + _bp1_position_var._position_relative = rot_apply(_bp1_position_var._rotation_absolute, tc1); + } /* bp1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute); + instrument->_position_absolute[32] = _bp1_position_var._position_absolute; + instrument->_position_relative[32] = _bp1_position_var._position_relative; + _bp1_position_var._position_relative_is_zero = coords_test_zero(_bp1_position_var._position_relative); + instrument->counter_N[32] = instrument->counter_P[32] = instrument->counter_P2[32] = 0; + instrument->counter_AbsorbProp[32]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0031_bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_position_setpos */ + +/* component bp1_chopper=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp1_chopper_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_chopper_setpos] component bp1_chopper=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp1_chopper_var._name, "bp1_chopper", 16384); + stracpy(_bp1_chopper_var._type, "DiskChopper", 16384); + _bp1_chopper_var._index=33; + int current_setpos_index = 33; + _bp1_chopper_var._parameters.theta_0 = 46.71; + _bp1_chopper_var._parameters.radius = 0.5; + _bp1_chopper_var._parameters.yheight = 0.075; + _bp1_chopper_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp1_chopper_var._parameters.nslit = 1; + _bp1_chopper_var._parameters.jitter = _instrument_var._parameters.jitter_bp1; + _bp1_chopper_var._parameters.delay = 0; + _bp1_chopper_var._parameters.isfirst = 0; + _bp1_chopper_var._parameters.n_pulse = 1; + _bp1_chopper_var._parameters.abs_out = 1; + _bp1_chopper_var._parameters.phase = bp1_phase + ( 42.20500000000003 ); + _bp1_chopper_var._parameters.xwidth = 0; + _bp1_chopper_var._parameters.verbose = 0; + + + /* component bp1_chopper=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp1_position_var._rotation_absolute, _bp1_chopper_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_chopper_var._rotation_absolute, tr1, _bp1_chopper_var._rotation_relative); + _bp1_chopper_var._rotation_is_identity = rot_test_identity(_bp1_chopper_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_chopper_var._position_absolute = coords_add(_bp1_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_chopper_var._position_absolute); + _bp1_chopper_var._position_relative = rot_apply(_bp1_chopper_var._rotation_absolute, tc1); + } /* bp1_chopper=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute); + instrument->_position_absolute[33] = _bp1_chopper_var._position_absolute; + instrument->_position_relative[33] = _bp1_chopper_var._position_relative; + _bp1_chopper_var._position_relative_is_zero = coords_test_zero(_bp1_chopper_var._position_relative); + instrument->counter_N[33] = instrument->counter_P[33] = instrument->counter_P2[33] = 0; + instrument->counter_AbsorbProp[33]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0032_bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "theta_0", "0", "46.71","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "jitter", "0", "_instrument_var._parameters.jitter_bp1","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "phase", "0", "bp1_phase + ( 42.20500000000003 )","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_chopper_setpos */ + +/* component g2b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b1_setpos] component g2b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b1_var._name, "g2b1", 16384); + stracpy(_g2b1_var._type, "Guide_four_side", 16384); + _g2b1_var._index=34; + int current_setpos_index = 34; + _g2b1_var._parameters.RIreflect[0]='\0'; + _g2b1_var._parameters.LIreflect[0]='\0'; + _g2b1_var._parameters.UIreflect[0]='\0'; + _g2b1_var._parameters.DIreflect[0]='\0'; + _g2b1_var._parameters.ROreflect[0]='\0'; + _g2b1_var._parameters.LOreflect[0]='\0'; + _g2b1_var._parameters.UOreflect[0]='\0'; + _g2b1_var._parameters.DOreflect[0]='\0'; + _g2b1_var._parameters.w1l = 0.02521; + _g2b1_var._parameters.w2l = 0.002; + _g2b1_var._parameters.linwl = 1.4502500000000005; + _g2b1_var._parameters.loutwl = 11.14005; + _g2b1_var._parameters.w1r = 0.02521; + _g2b1_var._parameters.w2r = 0.002; + _g2b1_var._parameters.linwr = 1.4502500000000005; + _g2b1_var._parameters.loutwr = 11.14005; + _g2b1_var._parameters.h1u = 0.031505; + _g2b1_var._parameters.h2u = 0.002; + _g2b1_var._parameters.linhu = 8.45025; + _g2b1_var._parameters.louthu = 27.140050000000002; + _g2b1_var._parameters.h1d = 0.031505; + _g2b1_var._parameters.h2d = 0.002; + _g2b1_var._parameters.linhd = 8.45025; + _g2b1_var._parameters.louthd = 27.140050000000002; + _g2b1_var._parameters.l = 0.40969999999999906; + _g2b1_var._parameters.R0 = 0.99; + _g2b1_var._parameters.Qcxl = 0.0217; + _g2b1_var._parameters.Qcxr = 0.0217; + _g2b1_var._parameters.Qcyu = 0.023; + _g2b1_var._parameters.Qcyd = 0.023; + _g2b1_var._parameters.alphaxl = 2.5; + _g2b1_var._parameters.alphaxr = 2.5; + _g2b1_var._parameters.alphayu = 1.8; + _g2b1_var._parameters.alphayd = 1.8; + _g2b1_var._parameters.Wxr = 0.015; + _g2b1_var._parameters.Wxl = 0.015; + _g2b1_var._parameters.Wyu = 0.015; + _g2b1_var._parameters.Wyd = 0.015; + _g2b1_var._parameters.mxr = 4; + _g2b1_var._parameters.mxl = 4; + _g2b1_var._parameters.myu = 2; + _g2b1_var._parameters.myd = 2; + _g2b1_var._parameters.QcxrOW = 0.0217; + _g2b1_var._parameters.QcxlOW = 0.0217; + _g2b1_var._parameters.QcyuOW = 0.0217; + _g2b1_var._parameters.QcydOW = 0.0217; + _g2b1_var._parameters.alphaxlOW = 6.07; + _g2b1_var._parameters.alphaxrOW = 6.07; + _g2b1_var._parameters.alphayuOW = 6.07; + _g2b1_var._parameters.alphaydOW = 6.07; + _g2b1_var._parameters.WxrOW = 0.003; + _g2b1_var._parameters.WxlOW = 0.003; + _g2b1_var._parameters.WyuOW = 0.003; + _g2b1_var._parameters.WydOW = 0.003; + _g2b1_var._parameters.mxrOW = 0; + _g2b1_var._parameters.mxlOW = 0; + _g2b1_var._parameters.myuOW = 0; + _g2b1_var._parameters.mydOW = 0; + _g2b1_var._parameters.rwallthick = 0.001; + _g2b1_var._parameters.lwallthick = 0.001; + _g2b1_var._parameters.uwallthick = 0.001; + _g2b1_var._parameters.dwallthick = 0.001; + + + /* component g2b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b1_var._rotation_absolute); + rot_transpose(_bp1_chopper_var._rotation_absolute, tr1); + rot_mul(_g2b1_var._rotation_absolute, tr1, _g2b1_var._rotation_relative); + _g2b1_var._rotation_is_identity = rot_test_identity(_g2b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.446250000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp1_chopper_var._position_absolute, _g2b1_var._position_absolute); + _g2b1_var._position_relative = rot_apply(_g2b1_var._rotation_absolute, tc1); + } /* g2b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute); + instrument->_position_absolute[34] = _g2b1_var._position_absolute; + instrument->_position_relative[34] = _g2b1_var._position_relative; + _g2b1_var._position_relative_is_zero = coords_test_zero(_g2b1_var._position_relative); + instrument->counter_N[34] = instrument->counter_P[34] = instrument->counter_P2[34] = 0; + instrument->counter_AbsorbProp[34]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0033_g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "w1l", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "linwl", "0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "loutwl", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "w1r", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "linwr", "0.0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "loutwr", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "h1u", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "linhu", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "louthu", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "h1d", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "linhd", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "louthd", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b1_setpos */ + +/* component g2b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b2_setpos] component g2b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b2_var._name, "g2b2", 16384); + stracpy(_g2b2_var._type, "Guide_four_side", 16384); + _g2b2_var._index=35; + int current_setpos_index = 35; + _g2b2_var._parameters.RIreflect[0]='\0'; + _g2b2_var._parameters.LIreflect[0]='\0'; + _g2b2_var._parameters.UIreflect[0]='\0'; + _g2b2_var._parameters.DIreflect[0]='\0'; + _g2b2_var._parameters.ROreflect[0]='\0'; + _g2b2_var._parameters.LOreflect[0]='\0'; + _g2b2_var._parameters.UOreflect[0]='\0'; + _g2b2_var._parameters.DOreflect[0]='\0'; + _g2b2_var._parameters.w1l = 0.02811; + _g2b2_var._parameters.w2l = 0.002; + _g2b2_var._parameters.linwl = 1.8707999999999991; + _g2b2_var._parameters.loutwl = 9.67745; + _g2b2_var._parameters.w1r = 0.02811; + _g2b2_var._parameters.w2r = 0.002; + _g2b2_var._parameters.linwr = 1.8707999999999991; + _g2b2_var._parameters.loutwr = 9.67745; + _g2b2_var._parameters.h1u = 0.03203; + _g2b2_var._parameters.h2u = 0.002; + _g2b2_var._parameters.linhu = 8.8708; + _g2b2_var._parameters.louthu = 25.67745; + _g2b2_var._parameters.h1d = 0.03203; + _g2b2_var._parameters.h2d = 0.002; + _g2b2_var._parameters.linhd = 8.8708; + _g2b2_var._parameters.louthd = 25.67745; + _g2b2_var._parameters.l = 1.4517500000000005; + _g2b2_var._parameters.R0 = 0.99; + _g2b2_var._parameters.Qcxl = 0.0217; + _g2b2_var._parameters.Qcxr = 0.0217; + _g2b2_var._parameters.Qcyu = 0.023; + _g2b2_var._parameters.Qcyd = 0.023; + _g2b2_var._parameters.alphaxl = 2.5; + _g2b2_var._parameters.alphaxr = 2.5; + _g2b2_var._parameters.alphayu = 1.8; + _g2b2_var._parameters.alphayd = 1.8; + _g2b2_var._parameters.Wxr = 0.015; + _g2b2_var._parameters.Wxl = 0.015; + _g2b2_var._parameters.Wyu = 0.015; + _g2b2_var._parameters.Wyd = 0.015; + _g2b2_var._parameters.mxr = 4; + _g2b2_var._parameters.mxl = 4; + _g2b2_var._parameters.myu = 2; + _g2b2_var._parameters.myd = 2; + _g2b2_var._parameters.QcxrOW = 0.0217; + _g2b2_var._parameters.QcxlOW = 0.0217; + _g2b2_var._parameters.QcyuOW = 0.0217; + _g2b2_var._parameters.QcydOW = 0.0217; + _g2b2_var._parameters.alphaxlOW = 6.07; + _g2b2_var._parameters.alphaxrOW = 6.07; + _g2b2_var._parameters.alphayuOW = 6.07; + _g2b2_var._parameters.alphaydOW = 6.07; + _g2b2_var._parameters.WxrOW = 0.003; + _g2b2_var._parameters.WxlOW = 0.003; + _g2b2_var._parameters.WyuOW = 0.003; + _g2b2_var._parameters.WydOW = 0.003; + _g2b2_var._parameters.mxrOW = 0; + _g2b2_var._parameters.mxlOW = 0; + _g2b2_var._parameters.myuOW = 0; + _g2b2_var._parameters.mydOW = 0; + _g2b2_var._parameters.rwallthick = 0.001; + _g2b2_var._parameters.lwallthick = 0.001; + _g2b2_var._parameters.uwallthick = 0.001; + _g2b2_var._parameters.dwallthick = 0.001; + + + /* component g2b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b2_var._rotation_absolute); + rot_transpose(_g2b1_var._rotation_absolute, tr1); + rot_mul(_g2b2_var._rotation_absolute, tr1, _g2b2_var._rotation_relative); + _g2b2_var._rotation_is_identity = rot_test_identity(_g2b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.8668); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b1_var._position_absolute, _g2b2_var._position_absolute); + _g2b2_var._position_relative = rot_apply(_g2b2_var._rotation_absolute, tc1); + } /* g2b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute); + instrument->_position_absolute[35] = _g2b2_var._position_absolute; + instrument->_position_relative[35] = _g2b2_var._position_relative; + _g2b2_var._position_relative_is_zero = coords_test_zero(_g2b2_var._position_relative); + instrument->counter_N[35] = instrument->counter_P[35] = instrument->counter_P2[35] = 0; + instrument->counter_AbsorbProp[35]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0034_g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "w1l", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "linwl", "0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "loutwl", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "w1r", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "linwr", "0.0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "loutwr", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "h1u", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "linhu", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "louthu", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "h1d", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "linhd", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "louthd", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b2_setpos */ + +/* component g2b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b3_setpos] component g2b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b3_var._name, "g2b3", 16384); + stracpy(_g2b3_var._type, "Guide_four_side", 16384); + _g2b3_var._index=36; + int current_setpos_index = 36; + _g2b3_var._parameters.RIreflect[0]='\0'; + _g2b3_var._parameters.LIreflect[0]='\0'; + _g2b3_var._parameters.UIreflect[0]='\0'; + _g2b3_var._parameters.DIreflect[0]='\0'; + _g2b3_var._parameters.ROreflect[0]='\0'; + _g2b3_var._parameters.LOreflect[0]='\0'; + _g2b3_var._parameters.UOreflect[0]='\0'; + _g2b3_var._parameters.DOreflect[0]='\0'; + _g2b3_var._parameters.w1l = 0.03493; + _g2b3_var._parameters.w2l = 0.002; + _g2b3_var._parameters.linwl = 3.3230500000000003; + _g2b3_var._parameters.loutwl = 8.2252; + _g2b3_var._parameters.w1r = 0.03493; + _g2b3_var._parameters.w2r = 0.002; + _g2b3_var._parameters.linwr = 3.3230500000000003; + _g2b3_var._parameters.loutwr = 8.2252; + _g2b3_var._parameters.h1u = 0.033615; + _g2b3_var._parameters.h2u = 0.002; + _g2b3_var._parameters.linhu = 10.32305; + _g2b3_var._parameters.louthu = 24.2252; + _g2b3_var._parameters.h1d = 0.033615; + _g2b3_var._parameters.h2d = 0.002; + _g2b3_var._parameters.linhd = 10.32305; + _g2b3_var._parameters.louthd = 24.2252; + _g2b3_var._parameters.l = 1.4517500000000005; + _g2b3_var._parameters.R0 = 0.99; + _g2b3_var._parameters.Qcxl = 0.0217; + _g2b3_var._parameters.Qcxr = 0.0217; + _g2b3_var._parameters.Qcyu = 0.023; + _g2b3_var._parameters.Qcyd = 0.023; + _g2b3_var._parameters.alphaxl = 2.5; + _g2b3_var._parameters.alphaxr = 2.5; + _g2b3_var._parameters.alphayu = 1.8; + _g2b3_var._parameters.alphayd = 1.8; + _g2b3_var._parameters.Wxr = 0.015; + _g2b3_var._parameters.Wxl = 0.015; + _g2b3_var._parameters.Wyu = 0.015; + _g2b3_var._parameters.Wyd = 0.015; + _g2b3_var._parameters.mxr = 4; + _g2b3_var._parameters.mxl = 4; + _g2b3_var._parameters.myu = 2; + _g2b3_var._parameters.myd = 2; + _g2b3_var._parameters.QcxrOW = 0.0217; + _g2b3_var._parameters.QcxlOW = 0.0217; + _g2b3_var._parameters.QcyuOW = 0.0217; + _g2b3_var._parameters.QcydOW = 0.0217; + _g2b3_var._parameters.alphaxlOW = 6.07; + _g2b3_var._parameters.alphaxrOW = 6.07; + _g2b3_var._parameters.alphayuOW = 6.07; + _g2b3_var._parameters.alphaydOW = 6.07; + _g2b3_var._parameters.WxrOW = 0.003; + _g2b3_var._parameters.WxlOW = 0.003; + _g2b3_var._parameters.WyuOW = 0.003; + _g2b3_var._parameters.WydOW = 0.003; + _g2b3_var._parameters.mxrOW = 0; + _g2b3_var._parameters.mxlOW = 0; + _g2b3_var._parameters.myuOW = 0; + _g2b3_var._parameters.mydOW = 0; + _g2b3_var._parameters.rwallthick = 0.001; + _g2b3_var._parameters.lwallthick = 0.001; + _g2b3_var._parameters.uwallthick = 0.001; + _g2b3_var._parameters.dwallthick = 0.001; + + + /* component g2b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b3_var._rotation_absolute); + rot_transpose(_g2b2_var._rotation_absolute, tr1); + rot_mul(_g2b3_var._rotation_absolute, tr1, _g2b3_var._rotation_relative); + _g2b3_var._rotation_is_identity = rot_test_identity(_g2b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 10.31905); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b2_var._position_absolute, _g2b3_var._position_absolute); + _g2b3_var._position_relative = rot_apply(_g2b3_var._rotation_absolute, tc1); + } /* g2b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute); + instrument->_position_absolute[36] = _g2b3_var._position_absolute; + instrument->_position_relative[36] = _g2b3_var._position_relative; + _g2b3_var._position_relative_is_zero = coords_test_zero(_g2b3_var._position_relative); + instrument->counter_N[36] = instrument->counter_P[36] = instrument->counter_P2[36] = 0; + instrument->counter_AbsorbProp[36]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0035_g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "w1l", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "linwl", "0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "loutwl", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "w1r", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "linwr", "0.0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "loutwr", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "h1u", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "linhu", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "louthu", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "h1d", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "linhd", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "louthd", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b3_setpos */ + +/* component g2b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b4_setpos] component g2b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b4_var._name, "g2b4", 16384); + stracpy(_g2b4_var._type, "Guide_four_side", 16384); + _g2b4_var._index=37; + int current_setpos_index = 37; + _g2b4_var._parameters.RIreflect[0]='\0'; + _g2b4_var._parameters.LIreflect[0]='\0'; + _g2b4_var._parameters.UIreflect[0]='\0'; + _g2b4_var._parameters.DIreflect[0]='\0'; + _g2b4_var._parameters.ROreflect[0]='\0'; + _g2b4_var._parameters.LOreflect[0]='\0'; + _g2b4_var._parameters.UOreflect[0]='\0'; + _g2b4_var._parameters.DOreflect[0]='\0'; + _g2b4_var._parameters.w1l = 0.03862; + _g2b4_var._parameters.w2l = 0.002; + _g2b4_var._parameters.linwl = 4.7858; + _g2b4_var._parameters.loutwl = 7.804500000000001; + _g2b4_var._parameters.w1r = 0.03862; + _g2b4_var._parameters.w2r = 0.002; + _g2b4_var._parameters.linwr = 4.7858; + _g2b4_var._parameters.loutwr = 7.804500000000001; + _g2b4_var._parameters.h1u = 0.03488; + _g2b4_var._parameters.h2u = 0.002; + _g2b4_var._parameters.linhu = 11.7858; + _g2b4_var._parameters.louthu = 23.8045; + _g2b4_var._parameters.h1d = 0.03488; + _g2b4_var._parameters.h2d = 0.002; + _g2b4_var._parameters.linhd = 11.7858; + _g2b4_var._parameters.louthd = 23.8045; + _g2b4_var._parameters.l = 0.40969999999999906; + _g2b4_var._parameters.R0 = 0.99; + _g2b4_var._parameters.Qcxl = 0.0217; + _g2b4_var._parameters.Qcxr = 0.0217; + _g2b4_var._parameters.Qcyu = 0.023; + _g2b4_var._parameters.Qcyd = 0.023; + _g2b4_var._parameters.alphaxl = 2.5; + _g2b4_var._parameters.alphaxr = 2.5; + _g2b4_var._parameters.alphayu = 1.8; + _g2b4_var._parameters.alphayd = 1.8; + _g2b4_var._parameters.Wxr = 0.015; + _g2b4_var._parameters.Wxl = 0.015; + _g2b4_var._parameters.Wyu = 0.015; + _g2b4_var._parameters.Wyd = 0.015; + _g2b4_var._parameters.mxr = 4; + _g2b4_var._parameters.mxl = 4; + _g2b4_var._parameters.myu = 2; + _g2b4_var._parameters.myd = 2; + _g2b4_var._parameters.QcxrOW = 0.0217; + _g2b4_var._parameters.QcxlOW = 0.0217; + _g2b4_var._parameters.QcyuOW = 0.0217; + _g2b4_var._parameters.QcydOW = 0.0217; + _g2b4_var._parameters.alphaxlOW = 6.07; + _g2b4_var._parameters.alphaxrOW = 6.07; + _g2b4_var._parameters.alphayuOW = 6.07; + _g2b4_var._parameters.alphaydOW = 6.07; + _g2b4_var._parameters.WxrOW = 0.003; + _g2b4_var._parameters.WxlOW = 0.003; + _g2b4_var._parameters.WyuOW = 0.003; + _g2b4_var._parameters.WydOW = 0.003; + _g2b4_var._parameters.mxrOW = 0; + _g2b4_var._parameters.mxlOW = 0; + _g2b4_var._parameters.myuOW = 0; + _g2b4_var._parameters.mydOW = 0; + _g2b4_var._parameters.rwallthick = 0.001; + _g2b4_var._parameters.lwallthick = 0.001; + _g2b4_var._parameters.uwallthick = 0.001; + _g2b4_var._parameters.dwallthick = 0.001; + + + /* component g2b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b4_var._rotation_absolute); + rot_transpose(_g2b3_var._rotation_absolute, tr1); + rot_mul(_g2b4_var._rotation_absolute, tr1, _g2b4_var._rotation_relative); + _g2b4_var._rotation_is_identity = rot_test_identity(_g2b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 11.7818); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b3_var._position_absolute, _g2b4_var._position_absolute); + _g2b4_var._position_relative = rot_apply(_g2b4_var._rotation_absolute, tc1); + } /* g2b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute); + instrument->_position_absolute[37] = _g2b4_var._position_absolute; + instrument->_position_relative[37] = _g2b4_var._position_relative; + _g2b4_var._position_relative_is_zero = coords_test_zero(_g2b4_var._position_relative); + instrument->counter_N[37] = instrument->counter_P[37] = instrument->counter_P2[37] = 0; + instrument->counter_AbsorbProp[37]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0036_g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "w1l", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "linwl", "0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "loutwl", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "w1r", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "linwr", "0.0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "loutwr", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "linhu", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "louthu", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "linhd", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "louthd", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b4_setpos */ + +/* component fo2_position=Arm() SETTING, POSITION/ROTATION */ +int _fo2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo2_position_setpos] component fo2_position=Arm() SETTING [Arm:0]"); + stracpy(_fo2_position_var._name, "fo2_position", 16384); + stracpy(_fo2_position_var._type, "Arm", 16384); + _fo2_position_var._index=38; + int current_setpos_index = 38; + /* component fo2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo2_position_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo2_position_var._rotation_absolute, tr1, _fo2_position_var._rotation_relative); + _fo2_position_var._rotation_is_identity = rot_test_identity(_fo2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.2); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo2_position_var._position_absolute); + _fo2_position_var._position_relative = rot_apply(_fo2_position_var._rotation_absolute, tc1); + } /* fo2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute); + instrument->_position_absolute[38] = _fo2_position_var._position_absolute; + instrument->_position_relative[38] = _fo2_position_var._position_relative; + _fo2_position_var._position_relative_is_zero = coords_test_zero(_fo2_position_var._position_relative); + instrument->counter_N[38] = instrument->counter_P[38] = instrument->counter_P2[38] = 0; + instrument->counter_AbsorbProp[38]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0037_fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo2_position_setpos */ + +/* component fo_chopper_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_2_setpos] component fo_chopper_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_2_var._name, "fo_chopper_2", 16384); + stracpy(_fo_chopper_2_var._type, "MultiDiskChopper", 16384); + _fo_chopper_2_var._index=39; + int current_setpos_index = 39; + if("-127.07;165.08;101.46;41.97;-13.98;-67.15" && strlen("-127.07;165.08;101.46;41.97;-13.98;-67.15")) + stracpy(_fo_chopper_2_var._parameters.slit_center, "-127.07;165.08;101.46;41.97;-13.98;-67.15" ? "-127.07;165.08;101.46;41.97;-13.98;-67.15" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_center[0]='\0'; + if("32.9;33.54;34.15;34.37;34.89;34.31" && strlen("32.9;33.54;34.15;34.37;34.89;34.31")) + stracpy(_fo_chopper_2_var._parameters.slit_width, "32.9;33.54;34.15;34.37;34.89;34.31" ? "32.9;33.54;34.15;34.37;34.89;34.31" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_width[0]='\0'; + _fo_chopper_2_var._parameters.nslits = 6; + _fo_chopper_2_var._parameters.delta_y = -0.46; + _fo_chopper_2_var._parameters.nu = -42.0; + _fo_chopper_2_var._parameters.nrev = 0; + _fo_chopper_2_var._parameters.ratio = 1; + _fo_chopper_2_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_2; + _fo_chopper_2_var._parameters.delay = 0; + _fo_chopper_2_var._parameters.isfirst = 0; + _fo_chopper_2_var._parameters.phase = fo2_phase; + _fo_chopper_2_var._parameters.radius = 0.5; + _fo_chopper_2_var._parameters.equal = 0; + _fo_chopper_2_var._parameters.abs_out = 0; + _fo_chopper_2_var._parameters.verbose = 0; + + + /* component fo_chopper_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo2_position_var._rotation_absolute, _fo_chopper_2_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_2_var._rotation_absolute, tr1, _fo_chopper_2_var._rotation_relative); + _fo_chopper_2_var._rotation_is_identity = rot_test_identity(_fo_chopper_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_2_var._position_absolute = coords_add(_fo2_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo_chopper_2_var._position_absolute); + _fo_chopper_2_var._position_relative = rot_apply(_fo_chopper_2_var._rotation_absolute, tc1); + } /* fo_chopper_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute); + instrument->_position_absolute[39] = _fo_chopper_2_var._position_absolute; + instrument->_position_relative[39] = _fo_chopper_2_var._position_relative; + _fo_chopper_2_var._position_relative_is_zero = coords_test_zero(_fo_chopper_2_var._position_relative); + instrument->counter_N[39] = instrument->counter_P[39] = instrument->counter_P2[39] = 0; + instrument->counter_AbsorbProp[39]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0038_fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "slit_center", "0 180", "-127.07;165.08;101.46;41.97;-13.98;-67.15", "char*"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "slit_width", "10 20", "32.9;33.54;34.15;34.37;34.89;34.31", "char*"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "delta_y", "-0.3", "-0.46","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "phase", "0", "fo2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_2_setpos */ + +/* component bp2_position=Arm() SETTING, POSITION/ROTATION */ +int _bp2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp2_position_setpos] component bp2_position=Arm() SETTING [Arm:0]"); + stracpy(_bp2_position_var._name, "bp2_position", 16384); + stracpy(_bp2_position_var._type, "Arm", 16384); + _bp2_position_var._index=40; + int current_setpos_index = 40; + /* component bp2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp2_position_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp2_position_var._rotation_absolute, tr1, _bp2_position_var._rotation_relative); + _bp2_position_var._rotation_is_identity = rot_test_identity(_bp2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp2_position_var._position_absolute); + _bp2_position_var._position_relative = rot_apply(_bp2_position_var._rotation_absolute, tc1); + } /* bp2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute); + instrument->_position_absolute[40] = _bp2_position_var._position_absolute; + instrument->_position_relative[40] = _bp2_position_var._position_relative; + _bp2_position_var._position_relative_is_zero = coords_test_zero(_bp2_position_var._position_relative); + instrument->counter_N[40] = instrument->counter_P[40] = instrument->counter_P2[40] = 0; + instrument->counter_AbsorbProp[40]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0039_bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp2_position_setpos */ + +/* component bp_chopper2=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp_chopper2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp_chopper2_setpos] component bp_chopper2=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp_chopper2_var._name, "bp_chopper2", 16384); + stracpy(_bp_chopper2_var._type, "DiskChopper", 16384); + _bp_chopper2_var._index=41; + int current_setpos_index = 41; + _bp_chopper2_var._parameters.theta_0 = 67.49; + _bp_chopper2_var._parameters.radius = 0.5; + _bp_chopper2_var._parameters.yheight = 0.08; + _bp_chopper2_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp_chopper2_var._parameters.nslit = 1; + _bp_chopper2_var._parameters.jitter = _instrument_var._parameters.jitter_bp2; + _bp_chopper2_var._parameters.delay = 0; + _bp_chopper2_var._parameters.isfirst = 0; + _bp_chopper2_var._parameters.n_pulse = 1; + _bp_chopper2_var._parameters.abs_out = 1; + _bp_chopper2_var._parameters.phase = bp2_phase -141.795; + _bp_chopper2_var._parameters.xwidth = 0; + _bp_chopper2_var._parameters.verbose = 0; + + + /* component bp_chopper2=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp2_position_var._rotation_absolute, _bp_chopper2_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp_chopper2_var._rotation_absolute, tr1, _bp_chopper2_var._rotation_relative); + _bp_chopper2_var._rotation_is_identity = rot_test_identity(_bp_chopper2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp_chopper2_var._position_absolute = coords_add(_bp2_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp_chopper2_var._position_absolute); + _bp_chopper2_var._position_relative = rot_apply(_bp_chopper2_var._rotation_absolute, tc1); + } /* bp_chopper2=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute); + instrument->_position_absolute[41] = _bp_chopper2_var._position_absolute; + instrument->_position_relative[41] = _bp_chopper2_var._position_relative; + _bp_chopper2_var._position_relative_is_zero = coords_test_zero(_bp_chopper2_var._position_relative); + instrument->counter_N[41] = instrument->counter_P[41] = instrument->counter_P2[41] = 0; + instrument->counter_AbsorbProp[41]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0040_bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "theta_0", "0", "67.49","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "yheight", "NONE", "0.08","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "jitter", "0", "_instrument_var._parameters.jitter_bp2","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "phase", "0", "bp2_phase -141.795","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp_chopper2_setpos */ + +/* component g2c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2c1_setpos] component g2c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2c1_var._name, "g2c1", 16384); + stracpy(_g2c1_var._type, "Guide_four_side", 16384); + _g2c1_var._index=42; + int current_setpos_index = 42; + _g2c1_var._parameters.RIreflect[0]='\0'; + _g2c1_var._parameters.LIreflect[0]='\0'; + _g2c1_var._parameters.UIreflect[0]='\0'; + _g2c1_var._parameters.DIreflect[0]='\0'; + _g2c1_var._parameters.ROreflect[0]='\0'; + _g2c1_var._parameters.LOreflect[0]='\0'; + _g2c1_var._parameters.UOreflect[0]='\0'; + _g2c1_var._parameters.DOreflect[0]='\0'; + _g2c1_var._parameters.w1l = 0.03929; + _g2c1_var._parameters.w2l = 0.002; + _g2c1_var._parameters.linwl = 5.250249999999999; + _g2c1_var._parameters.loutwl = 6.536899999999999; + _g2c1_var._parameters.w1r = 0.03929; + _g2c1_var._parameters.w2r = 0.002; + _g2c1_var._parameters.linwr = 5.250249999999999; + _g2c1_var._parameters.loutwr = 6.536899999999999; + _g2c1_var._parameters.h1u = 0.03488; + _g2c1_var._parameters.h2u = 0.002; + _g2c1_var._parameters.linhu = 12.25025; + _g2c1_var._parameters.louthu = 22.5369; + _g2c1_var._parameters.h1d = 0.03488; + _g2c1_var._parameters.h2d = 0.002; + _g2c1_var._parameters.linhd = 12.25025; + _g2c1_var._parameters.louthd = 22.5369; + _g2c1_var._parameters.l = 1.2128500000000013; + _g2c1_var._parameters.R0 = 0.99; + _g2c1_var._parameters.Qcxl = 0.0217; + _g2c1_var._parameters.Qcxr = 0.0217; + _g2c1_var._parameters.Qcyu = 0.023; + _g2c1_var._parameters.Qcyd = 0.023; + _g2c1_var._parameters.alphaxl = 2.5; + _g2c1_var._parameters.alphaxr = 2.5; + _g2c1_var._parameters.alphayu = 1.8; + _g2c1_var._parameters.alphayd = 1.8; + _g2c1_var._parameters.Wxr = 0.015; + _g2c1_var._parameters.Wxl = 0.015; + _g2c1_var._parameters.Wyu = 0.015; + _g2c1_var._parameters.Wyd = 0.015; + _g2c1_var._parameters.mxr = 3.5; + _g2c1_var._parameters.mxl = 3.5; + _g2c1_var._parameters.myu = 2; + _g2c1_var._parameters.myd = 2; + _g2c1_var._parameters.QcxrOW = 0.0217; + _g2c1_var._parameters.QcxlOW = 0.0217; + _g2c1_var._parameters.QcyuOW = 0.0217; + _g2c1_var._parameters.QcydOW = 0.0217; + _g2c1_var._parameters.alphaxlOW = 6.07; + _g2c1_var._parameters.alphaxrOW = 6.07; + _g2c1_var._parameters.alphayuOW = 6.07; + _g2c1_var._parameters.alphaydOW = 6.07; + _g2c1_var._parameters.WxrOW = 0.003; + _g2c1_var._parameters.WxlOW = 0.003; + _g2c1_var._parameters.WyuOW = 0.003; + _g2c1_var._parameters.WydOW = 0.003; + _g2c1_var._parameters.mxrOW = 0; + _g2c1_var._parameters.mxlOW = 0; + _g2c1_var._parameters.myuOW = 0; + _g2c1_var._parameters.mydOW = 0; + _g2c1_var._parameters.rwallthick = 0.001; + _g2c1_var._parameters.lwallthick = 0.001; + _g2c1_var._parameters.uwallthick = 0.001; + _g2c1_var._parameters.dwallthick = 0.001; + + + /* component g2c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2c1_var._rotation_absolute); + rot_transpose(_bp_chopper2_var._rotation_absolute, tr1); + rot_mul(_g2c1_var._rotation_absolute, tr1, _g2c1_var._rotation_relative); + _g2c1_var._rotation_is_identity = rot_test_identity(_g2c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.254249999999999); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp_chopper2_var._position_absolute, _g2c1_var._position_absolute); + _g2c1_var._position_relative = rot_apply(_g2c1_var._rotation_absolute, tc1); + } /* g2c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute); + instrument->_position_absolute[42] = _g2c1_var._position_absolute; + instrument->_position_relative[42] = _g2c1_var._position_relative; + _g2c1_var._position_relative_is_zero = coords_test_zero(_g2c1_var._position_relative); + instrument->counter_N[42] = instrument->counter_P[42] = instrument->counter_P2[42] = 0; + instrument->counter_AbsorbProp[42]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0041_g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "w1l", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "linwl", "0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "loutwl", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "w1r", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "linwr", "0.0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "loutwr", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "linhu", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "louthu", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "linhd", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "louthd", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "l", "0", "1.2128500000000013","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2c1_setpos */ + +/* component t0_start_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_start_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_start_position_setpos] component t0_start_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_start_position_var._name, "t0_start_position", 16384); + stracpy(_t0_start_position_var._type, "Arm", 16384); + _t0_start_position_var._index=43; + int current_setpos_index = 43; + /* component t0_start_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_start_position_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_start_position_var._rotation_absolute, tr1, _t0_start_position_var._rotation_relative); + _t0_start_position_var._rotation_is_identity = rot_test_identity(_t0_start_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.503); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_start_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_start_position_var._position_absolute); + _t0_start_position_var._position_relative = rot_apply(_t0_start_position_var._rotation_absolute, tc1); + } /* t0_start_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute); + instrument->_position_absolute[43] = _t0_start_position_var._position_absolute; + instrument->_position_relative[43] = _t0_start_position_var._position_relative; + _t0_start_position_var._position_relative_is_zero = coords_test_zero(_t0_start_position_var._position_relative); + instrument->counter_N[43] = instrument->counter_P[43] = instrument->counter_P2[43] = 0; + instrument->counter_AbsorbProp[43]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0042_t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_start_position_setpos */ + +/* component t0_chopper_alpha=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_alpha_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_alpha_setpos] component t0_chopper_alpha=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_alpha_var._name, "t0_chopper_alpha", 16384); + stracpy(_t0_chopper_alpha_var._type, "DiskChopper", 16384); + _t0_chopper_alpha_var._index=44; + int current_setpos_index = 44; + _t0_chopper_alpha_var._parameters.theta_0 = 294.74; + _t0_chopper_alpha_var._parameters.radius = 0.32; + _t0_chopper_alpha_var._parameters.yheight = 0.075; + _t0_chopper_alpha_var._parameters.nu = 28.0; + _t0_chopper_alpha_var._parameters.nslit = 1; + _t0_chopper_alpha_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_alpha_var._parameters.delay = 0; + _t0_chopper_alpha_var._parameters.isfirst = 0; + _t0_chopper_alpha_var._parameters.n_pulse = 1; + _t0_chopper_alpha_var._parameters.abs_out = 1; + _t0_chopper_alpha_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_alpha_var._parameters.xwidth = 0; + _t0_chopper_alpha_var._parameters.verbose = 0; + + + /* component t0_chopper_alpha=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_start_position_var._rotation_absolute, _t0_chopper_alpha_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_alpha_var._rotation_absolute, tr1, _t0_chopper_alpha_var._rotation_relative); + _t0_chopper_alpha_var._rotation_is_identity = rot_test_identity(_t0_chopper_alpha_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_start_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_alpha_var._position_absolute = coords_add(_t0_start_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_chopper_alpha_var._position_absolute); + _t0_chopper_alpha_var._position_relative = rot_apply(_t0_chopper_alpha_var._rotation_absolute, tc1); + } /* t0_chopper_alpha=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute); + instrument->_position_absolute[44] = _t0_chopper_alpha_var._position_absolute; + instrument->_position_relative[44] = _t0_chopper_alpha_var._position_relative; + _t0_chopper_alpha_var._position_relative_is_zero = coords_test_zero(_t0_chopper_alpha_var._position_relative); + instrument->counter_N[44] = instrument->counter_P[44] = instrument->counter_P2[44] = 0; + instrument->counter_AbsorbProp[44]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0043_t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_alpha_setpos */ + +/* component t0_end_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_end_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_end_position_setpos] component t0_end_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_end_position_var._name, "t0_end_position", 16384); + stracpy(_t0_end_position_var._type, "Arm", 16384); + _t0_end_position_var._index=45; + int current_setpos_index = 45; + /* component t0_end_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_end_position_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_end_position_var._rotation_absolute, tr1, _t0_end_position_var._rotation_relative); + _t0_end_position_var._rotation_is_identity = rot_test_identity(_t0_end_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.703); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_end_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_end_position_var._position_absolute); + _t0_end_position_var._position_relative = rot_apply(_t0_end_position_var._rotation_absolute, tc1); + } /* t0_end_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute); + instrument->_position_absolute[45] = _t0_end_position_var._position_absolute; + instrument->_position_relative[45] = _t0_end_position_var._position_relative; + _t0_end_position_var._position_relative_is_zero = coords_test_zero(_t0_end_position_var._position_relative); + instrument->counter_N[45] = instrument->counter_P[45] = instrument->counter_P2[45] = 0; + instrument->counter_AbsorbProp[45]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0044_t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_end_position_setpos */ + +/* component t0_chopper_beta=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_beta_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_beta_setpos] component t0_chopper_beta=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_beta_var._name, "t0_chopper_beta", 16384); + stracpy(_t0_chopper_beta_var._type, "DiskChopper", 16384); + _t0_chopper_beta_var._index=46; + int current_setpos_index = 46; + _t0_chopper_beta_var._parameters.theta_0 = 294.74; + _t0_chopper_beta_var._parameters.radius = 0.32; + _t0_chopper_beta_var._parameters.yheight = 0.075; + _t0_chopper_beta_var._parameters.nu = 28.0; + _t0_chopper_beta_var._parameters.nslit = 1; + _t0_chopper_beta_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_beta_var._parameters.delay = 0; + _t0_chopper_beta_var._parameters.isfirst = 0; + _t0_chopper_beta_var._parameters.n_pulse = 1; + _t0_chopper_beta_var._parameters.abs_out = 1; + _t0_chopper_beta_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_beta_var._parameters.xwidth = 0; + _t0_chopper_beta_var._parameters.verbose = 0; + + + /* component t0_chopper_beta=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_end_position_var._rotation_absolute, _t0_chopper_beta_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_beta_var._rotation_absolute, tr1, _t0_chopper_beta_var._rotation_relative); + _t0_chopper_beta_var._rotation_is_identity = rot_test_identity(_t0_chopper_beta_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_end_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_beta_var._position_absolute = coords_add(_t0_end_position_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_chopper_beta_var._position_absolute); + _t0_chopper_beta_var._position_relative = rot_apply(_t0_chopper_beta_var._rotation_absolute, tc1); + } /* t0_chopper_beta=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute); + instrument->_position_absolute[46] = _t0_chopper_beta_var._position_absolute; + instrument->_position_relative[46] = _t0_chopper_beta_var._position_relative; + _t0_chopper_beta_var._position_relative_is_zero = coords_test_zero(_t0_chopper_beta_var._position_relative); + instrument->counter_N[46] = instrument->counter_P[46] = instrument->counter_P2[46] = 0; + instrument->counter_AbsorbProp[46]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0045_t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_beta_setpos */ + +/* component g3a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a1_setpos] component g3a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a1_var._name, "g3a1", 16384); + stracpy(_g3a1_var._type, "Guide_four_side", 16384); + _g3a1_var._index=47; + int current_setpos_index = 47; + _g3a1_var._parameters.RIreflect[0]='\0'; + _g3a1_var._parameters.LIreflect[0]='\0'; + _g3a1_var._parameters.UIreflect[0]='\0'; + _g3a1_var._parameters.DIreflect[0]='\0'; + _g3a1_var._parameters.ROreflect[0]='\0'; + _g3a1_var._parameters.LOreflect[0]='\0'; + _g3a1_var._parameters.UOreflect[0]='\0'; + _g3a1_var._parameters.DOreflect[0]='\0'; + _g3a1_var._parameters.w1l = 0.04004; + _g3a1_var._parameters.w2l = 0.04004; + _g3a1_var._parameters.linwl = 0; + _g3a1_var._parameters.loutwl = 0; + _g3a1_var._parameters.w1r = 0.04004; + _g3a1_var._parameters.w2r = 0.04004; + _g3a1_var._parameters.linwr = 0.0; + _g3a1_var._parameters.loutwr = 0; + _g3a1_var._parameters.h1u = 0.03611; + _g3a1_var._parameters.h2u = 0.002; + _g3a1_var._parameters.linhu = 13.7559; + _g3a1_var._parameters.louthu = 20.2631; + _g3a1_var._parameters.h1d = 0.03611; + _g3a1_var._parameters.h2d = 0.002; + _g3a1_var._parameters.linhd = 13.7559; + _g3a1_var._parameters.louthd = 20.2631; + _g3a1_var._parameters.l = 1.981; + _g3a1_var._parameters.R0 = 0.99; + _g3a1_var._parameters.Qcxl = 0.0217; + _g3a1_var._parameters.Qcxr = 0.0217; + _g3a1_var._parameters.Qcyu = 0.023; + _g3a1_var._parameters.Qcyd = 0.023; + _g3a1_var._parameters.alphaxl = 2.5; + _g3a1_var._parameters.alphaxr = 2.5; + _g3a1_var._parameters.alphayu = 1.8; + _g3a1_var._parameters.alphayd = 1.8; + _g3a1_var._parameters.Wxr = 0.015; + _g3a1_var._parameters.Wxl = 0.015; + _g3a1_var._parameters.Wyu = 0.015; + _g3a1_var._parameters.Wyd = 0.015; + _g3a1_var._parameters.mxr = 3.5; + _g3a1_var._parameters.mxl = 3.5; + _g3a1_var._parameters.myu = 2; + _g3a1_var._parameters.myd = 2; + _g3a1_var._parameters.QcxrOW = 0.0217; + _g3a1_var._parameters.QcxlOW = 0.0217; + _g3a1_var._parameters.QcyuOW = 0.0217; + _g3a1_var._parameters.QcydOW = 0.0217; + _g3a1_var._parameters.alphaxlOW = 6.07; + _g3a1_var._parameters.alphaxrOW = 6.07; + _g3a1_var._parameters.alphayuOW = 6.07; + _g3a1_var._parameters.alphaydOW = 6.07; + _g3a1_var._parameters.WxrOW = 0.003; + _g3a1_var._parameters.WxlOW = 0.003; + _g3a1_var._parameters.WyuOW = 0.003; + _g3a1_var._parameters.WydOW = 0.003; + _g3a1_var._parameters.mxrOW = 0; + _g3a1_var._parameters.mxlOW = 0; + _g3a1_var._parameters.myuOW = 0; + _g3a1_var._parameters.mydOW = 0; + _g3a1_var._parameters.rwallthick = 0.001; + _g3a1_var._parameters.lwallthick = 0.001; + _g3a1_var._parameters.uwallthick = 0.001; + _g3a1_var._parameters.dwallthick = 0.001; + + + /* component g3a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a1_var._rotation_absolute); + rot_transpose(_t0_chopper_beta_var._rotation_absolute, tr1); + rot_mul(_g3a1_var._rotation_absolute, tr1, _g3a1_var._rotation_relative); + _g3a1_var._rotation_is_identity = rot_test_identity(_g3a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.7379); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_beta_var._position_absolute, _g3a1_var._position_absolute); + _g3a1_var._position_relative = rot_apply(_g3a1_var._rotation_absolute, tc1); + } /* g3a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute); + instrument->_position_absolute[47] = _g3a1_var._position_absolute; + instrument->_position_relative[47] = _g3a1_var._position_relative; + _g3a1_var._position_relative_is_zero = coords_test_zero(_g3a1_var._position_relative); + instrument->counter_N[47] = instrument->counter_P[47] = instrument->counter_P2[47] = 0; + instrument->counter_AbsorbProp[47]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0046_g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "h1u", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "linhu", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "louthu", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "h1d", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "linhd", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "louthd", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "l", "0", "1.981","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a1_setpos */ + +/* component g3a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a2_setpos] component g3a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a2_var._name, "g3a2", 16384); + stracpy(_g3a2_var._type, "Guide_four_side", 16384); + _g3a2_var._index=48; + int current_setpos_index = 48; + _g3a2_var._parameters.RIreflect[0]='\0'; + _g3a2_var._parameters.LIreflect[0]='\0'; + _g3a2_var._parameters.UIreflect[0]='\0'; + _g3a2_var._parameters.DIreflect[0]='\0'; + _g3a2_var._parameters.ROreflect[0]='\0'; + _g3a2_var._parameters.LOreflect[0]='\0'; + _g3a2_var._parameters.UOreflect[0]='\0'; + _g3a2_var._parameters.DOreflect[0]='\0'; + _g3a2_var._parameters.w1l = 0.04004; + _g3a2_var._parameters.w2l = 0.04004; + _g3a2_var._parameters.linwl = 0; + _g3a2_var._parameters.loutwl = 0; + _g3a2_var._parameters.w1r = 0.04004; + _g3a2_var._parameters.w2r = 0.04004; + _g3a2_var._parameters.linwr = 0.0; + _g3a2_var._parameters.loutwr = 0; + _g3a2_var._parameters.h1u = 0.03687; + _g3a2_var._parameters.h2u = 0.002; + _g3a2_var._parameters.linhu = 15.7409; + _g3a2_var._parameters.louthu = 19.0055; + _g3a2_var._parameters.h1d = 0.03687; + _g3a2_var._parameters.h2d = 0.002; + _g3a2_var._parameters.linhd = 15.7409; + _g3a2_var._parameters.louthd = 19.0055; + _g3a2_var._parameters.l = 1.2535999999999987; + _g3a2_var._parameters.R0 = 0.99; + _g3a2_var._parameters.Qcxl = 0.0221; + _g3a2_var._parameters.Qcxr = 0.0221; + _g3a2_var._parameters.Qcyu = 0.023; + _g3a2_var._parameters.Qcyd = 0.023; + _g3a2_var._parameters.alphaxl = 1.75; + _g3a2_var._parameters.alphaxr = 1.75; + _g3a2_var._parameters.alphayu = 1.8; + _g3a2_var._parameters.alphayd = 1.8; + _g3a2_var._parameters.Wxr = 0.015; + _g3a2_var._parameters.Wxl = 0.015; + _g3a2_var._parameters.Wyu = 0.015; + _g3a2_var._parameters.Wyd = 0.015; + _g3a2_var._parameters.mxr = 3; + _g3a2_var._parameters.mxl = 3; + _g3a2_var._parameters.myu = 2; + _g3a2_var._parameters.myd = 2; + _g3a2_var._parameters.QcxrOW = 0.0217; + _g3a2_var._parameters.QcxlOW = 0.0217; + _g3a2_var._parameters.QcyuOW = 0.0217; + _g3a2_var._parameters.QcydOW = 0.0217; + _g3a2_var._parameters.alphaxlOW = 6.07; + _g3a2_var._parameters.alphaxrOW = 6.07; + _g3a2_var._parameters.alphayuOW = 6.07; + _g3a2_var._parameters.alphaydOW = 6.07; + _g3a2_var._parameters.WxrOW = 0.003; + _g3a2_var._parameters.WxlOW = 0.003; + _g3a2_var._parameters.WyuOW = 0.003; + _g3a2_var._parameters.WydOW = 0.003; + _g3a2_var._parameters.mxrOW = 0; + _g3a2_var._parameters.mxlOW = 0; + _g3a2_var._parameters.myuOW = 0; + _g3a2_var._parameters.mydOW = 0; + _g3a2_var._parameters.rwallthick = 0.001; + _g3a2_var._parameters.lwallthick = 0.001; + _g3a2_var._parameters.uwallthick = 0.001; + _g3a2_var._parameters.dwallthick = 0.001; + + + /* component g3a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a2_var._rotation_absolute); + rot_transpose(_g3a1_var._rotation_absolute, tr1); + rot_mul(_g3a2_var._rotation_absolute, tr1, _g3a2_var._rotation_relative); + _g3a2_var._rotation_is_identity = rot_test_identity(_g3a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 15.7229); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a1_var._position_absolute, _g3a2_var._position_absolute); + _g3a2_var._position_relative = rot_apply(_g3a2_var._rotation_absolute, tc1); + } /* g3a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute); + instrument->_position_absolute[48] = _g3a2_var._position_absolute; + instrument->_position_relative[48] = _g3a2_var._position_relative; + _g3a2_var._position_relative_is_zero = coords_test_zero(_g3a2_var._position_relative); + instrument->counter_N[48] = instrument->counter_P[48] = instrument->counter_P2[48] = 0; + instrument->counter_AbsorbProp[48]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0047_g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "h1u", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "linhu", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "louthu", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "h1d", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "linhd", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "louthd", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "l", "0", "1.2535999999999987","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a2_setpos */ + +/* component fo3_position=Arm() SETTING, POSITION/ROTATION */ +int _fo3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo3_position_setpos] component fo3_position=Arm() SETTING [Arm:0]"); + stracpy(_fo3_position_var._name, "fo3_position", 16384); + stracpy(_fo3_position_var._type, "Arm", 16384); + _fo3_position_var._index=49; + int current_setpos_index = 49; + /* component fo3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo3_position_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo3_position_var._rotation_absolute, tr1, _fo3_position_var._rotation_relative); + _fo3_position_var._rotation_is_identity = rot_test_identity(_fo3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9865); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo3_position_var._position_absolute); + _fo3_position_var._position_relative = rot_apply(_fo3_position_var._rotation_absolute, tc1); + } /* fo3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute); + instrument->_position_absolute[49] = _fo3_position_var._position_absolute; + instrument->_position_relative[49] = _fo3_position_var._position_relative; + _fo3_position_var._position_relative_is_zero = coords_test_zero(_fo3_position_var._position_relative); + instrument->counter_N[49] = instrument->counter_P[49] = instrument->counter_P2[49] = 0; + instrument->counter_AbsorbProp[49]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0048_fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo3_position_setpos */ + +/* component fo_chopper_3=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_3_setpos] component fo_chopper_3=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_3_var._name, "fo_chopper_3", 16384); + stracpy(_fo_chopper_3_var._type, "MultiDiskChopper", 16384); + _fo_chopper_3_var._index=50; + int current_setpos_index = 50; + if("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" && strlen("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08")) + stracpy(_fo_chopper_3_var._parameters.slit_center, "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" ? "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_center[0]='\0'; + if("40.32;39.61;38.94;38.31;37.72;36.06" && strlen("40.32;39.61;38.94;38.31;37.72;36.06")) + stracpy(_fo_chopper_3_var._parameters.slit_width, "40.32;39.61;38.94;38.31;37.72;36.06" ? "40.32;39.61;38.94;38.31;37.72;36.06" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_width[0]='\0'; + _fo_chopper_3_var._parameters.nslits = 6; + _fo_chopper_3_var._parameters.delta_y = -0.5575; + _fo_chopper_3_var._parameters.nu = -28.0; + _fo_chopper_3_var._parameters.nrev = 0; + _fo_chopper_3_var._parameters.ratio = 1; + _fo_chopper_3_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_3; + _fo_chopper_3_var._parameters.delay = 0; + _fo_chopper_3_var._parameters.isfirst = 0; + _fo_chopper_3_var._parameters.phase = fo3_phase; + _fo_chopper_3_var._parameters.radius = 0.6; + _fo_chopper_3_var._parameters.equal = 0; + _fo_chopper_3_var._parameters.abs_out = 0; + _fo_chopper_3_var._parameters.verbose = 0; + + + /* component fo_chopper_3=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo3_position_var._rotation_absolute, _fo_chopper_3_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_3_var._rotation_absolute, tr1, _fo_chopper_3_var._rotation_relative); + _fo_chopper_3_var._rotation_is_identity = rot_test_identity(_fo_chopper_3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo3_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_3_var._position_absolute = coords_add(_fo3_position_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo_chopper_3_var._position_absolute); + _fo_chopper_3_var._position_relative = rot_apply(_fo_chopper_3_var._rotation_absolute, tc1); + } /* fo_chopper_3=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute); + instrument->_position_absolute[50] = _fo_chopper_3_var._position_absolute; + instrument->_position_relative[50] = _fo_chopper_3_var._position_relative; + _fo_chopper_3_var._position_relative_is_zero = coords_test_zero(_fo_chopper_3_var._position_relative); + instrument->counter_N[50] = instrument->counter_P[50] = instrument->counter_P2[50] = 0; + instrument->counter_AbsorbProp[50]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0049_fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "slit_center", "0 180", "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", "char*"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "slit_width", "10 20", "40.32;39.61;38.94;38.31;37.72;36.06", "char*"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "delta_y", "-0.3", "-0.5575","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "nu", "0", "-28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_3","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "phase", "0", "fo3_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "radius", "0.375", "0.6","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_3_setpos */ + +/* component g3b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3b1_setpos] component g3b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3b1_var._name, "g3b1", 16384); + stracpy(_g3b1_var._type, "Guide_four_side", 16384); + _g3b1_var._index=51; + int current_setpos_index = 51; + _g3b1_var._parameters.RIreflect[0]='\0'; + _g3b1_var._parameters.LIreflect[0]='\0'; + _g3b1_var._parameters.UIreflect[0]='\0'; + _g3b1_var._parameters.DIreflect[0]='\0'; + _g3b1_var._parameters.ROreflect[0]='\0'; + _g3b1_var._parameters.LOreflect[0]='\0'; + _g3b1_var._parameters.UOreflect[0]='\0'; + _g3b1_var._parameters.DOreflect[0]='\0'; + _g3b1_var._parameters.w1l = 0.04004; + _g3b1_var._parameters.w2l = 0.04004; + _g3b1_var._parameters.linwl = 0; + _g3b1_var._parameters.loutwl = 0; + _g3b1_var._parameters.w1r = 0.04004; + _g3b1_var._parameters.w2r = 0.04004; + _g3b1_var._parameters.linwr = 0.0; + _g3b1_var._parameters.loutwr = 0; + _g3b1_var._parameters.h1u = 0.03711; + _g3b1_var._parameters.h2u = 0.002; + _g3b1_var._parameters.linhu = 17.0055; + _g3b1_var._parameters.louthu = 18.038; + _g3b1_var._parameters.h1d = 0.03711; + _g3b1_var._parameters.h2d = 0.002; + _g3b1_var._parameters.linhd = 17.0055; + _g3b1_var._parameters.louthd = 18.038; + _g3b1_var._parameters.l = 0.9564999999999984; + _g3b1_var._parameters.R0 = 0.99; + _g3b1_var._parameters.Qcxl = 0.0221; + _g3b1_var._parameters.Qcxr = 0.0221; + _g3b1_var._parameters.Qcyu = 0.023; + _g3b1_var._parameters.Qcyd = 0.023; + _g3b1_var._parameters.alphaxl = 1.75; + _g3b1_var._parameters.alphaxr = 1.75; + _g3b1_var._parameters.alphayu = 1.8; + _g3b1_var._parameters.alphayd = 1.8; + _g3b1_var._parameters.Wxr = 0.015; + _g3b1_var._parameters.Wxl = 0.015; + _g3b1_var._parameters.Wyu = 0.015; + _g3b1_var._parameters.Wyd = 0.015; + _g3b1_var._parameters.mxr = 2.5; + _g3b1_var._parameters.mxl = 2.5; + _g3b1_var._parameters.myu = 2; + _g3b1_var._parameters.myd = 2; + _g3b1_var._parameters.QcxrOW = 0.0217; + _g3b1_var._parameters.QcxlOW = 0.0217; + _g3b1_var._parameters.QcyuOW = 0.0217; + _g3b1_var._parameters.QcydOW = 0.0217; + _g3b1_var._parameters.alphaxlOW = 6.07; + _g3b1_var._parameters.alphaxrOW = 6.07; + _g3b1_var._parameters.alphayuOW = 6.07; + _g3b1_var._parameters.alphaydOW = 6.07; + _g3b1_var._parameters.WxrOW = 0.003; + _g3b1_var._parameters.WxlOW = 0.003; + _g3b1_var._parameters.WyuOW = 0.003; + _g3b1_var._parameters.WydOW = 0.003; + _g3b1_var._parameters.mxrOW = 0; + _g3b1_var._parameters.mxlOW = 0; + _g3b1_var._parameters.myuOW = 0; + _g3b1_var._parameters.mydOW = 0; + _g3b1_var._parameters.rwallthick = 0.001; + _g3b1_var._parameters.lwallthick = 0.001; + _g3b1_var._parameters.uwallthick = 0.001; + _g3b1_var._parameters.dwallthick = 0.001; + + + /* component g3b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3b1_var._rotation_absolute); + rot_transpose(_fo_chopper_3_var._rotation_absolute, tr1); + rot_mul(_g3b1_var._rotation_absolute, tr1, _g3b1_var._rotation_relative); + _g3b1_var._rotation_is_identity = rot_test_identity(_g3b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9965); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_3_var._position_absolute, _g3b1_var._position_absolute); + _g3b1_var._position_relative = rot_apply(_g3b1_var._rotation_absolute, tc1); + } /* g3b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute); + instrument->_position_absolute[51] = _g3b1_var._position_absolute; + instrument->_position_relative[51] = _g3b1_var._position_relative; + _g3b1_var._position_relative_is_zero = coords_test_zero(_g3b1_var._position_relative); + instrument->counter_N[51] = instrument->counter_P[51] = instrument->counter_P2[51] = 0; + instrument->counter_AbsorbProp[51]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0050_g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "h1u", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "linhu", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "louthu", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "h1d", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "linhd", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "louthd", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "l", "0", "0.9564999999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3b1_setpos */ + +/* component g4a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a1_setpos] component g4a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a1_var._name, "g4a1", 16384); + stracpy(_g4a1_var._type, "Guide_four_side", 16384); + _g4a1_var._index=52; + int current_setpos_index = 52; + _g4a1_var._parameters.RIreflect[0]='\0'; + _g4a1_var._parameters.LIreflect[0]='\0'; + _g4a1_var._parameters.UIreflect[0]='\0'; + _g4a1_var._parameters.DIreflect[0]='\0'; + _g4a1_var._parameters.ROreflect[0]='\0'; + _g4a1_var._parameters.LOreflect[0]='\0'; + _g4a1_var._parameters.UOreflect[0]='\0'; + _g4a1_var._parameters.DOreflect[0]='\0'; + _g4a1_var._parameters.w1l = 0.04004; + _g4a1_var._parameters.w2l = 0.04004; + _g4a1_var._parameters.linwl = 0; + _g4a1_var._parameters.loutwl = 0; + _g4a1_var._parameters.w1r = 0.04004; + _g4a1_var._parameters.w2r = 0.04004; + _g4a1_var._parameters.linwr = 0.0; + _g4a1_var._parameters.loutwr = 0; + _g4a1_var._parameters.h1u = 0.037165; + _g4a1_var._parameters.h2u = 0.037165; + _g4a1_var._parameters.linhu = 0.0; + _g4a1_var._parameters.louthu = 0; + _g4a1_var._parameters.h1d = 0.037165; + _g4a1_var._parameters.h2d = 0.037165; + _g4a1_var._parameters.linhd = 0.0; + _g4a1_var._parameters.louthd = 0; + _g4a1_var._parameters.l = 1.2600000000000016; + _g4a1_var._parameters.R0 = 0.99; + _g4a1_var._parameters.Qcxl = 0.0221; + _g4a1_var._parameters.Qcxr = 0.0221; + _g4a1_var._parameters.Qcyu = 0.023; + _g4a1_var._parameters.Qcyd = 0.023; + _g4a1_var._parameters.alphaxl = 1.75; + _g4a1_var._parameters.alphaxr = 1.75; + _g4a1_var._parameters.alphayu = 1.8; + _g4a1_var._parameters.alphayd = 1.8; + _g4a1_var._parameters.Wxr = 0.015; + _g4a1_var._parameters.Wxl = 0.015; + _g4a1_var._parameters.Wyu = 0.015; + _g4a1_var._parameters.Wyd = 0.015; + _g4a1_var._parameters.mxr = 3; + _g4a1_var._parameters.mxl = 3; + _g4a1_var._parameters.myu = 2; + _g4a1_var._parameters.myd = 2; + _g4a1_var._parameters.QcxrOW = 0.0217; + _g4a1_var._parameters.QcxlOW = 0.0217; + _g4a1_var._parameters.QcyuOW = 0.0217; + _g4a1_var._parameters.QcydOW = 0.0217; + _g4a1_var._parameters.alphaxlOW = 6.07; + _g4a1_var._parameters.alphaxrOW = 6.07; + _g4a1_var._parameters.alphayuOW = 6.07; + _g4a1_var._parameters.alphaydOW = 6.07; + _g4a1_var._parameters.WxrOW = 0.003; + _g4a1_var._parameters.WxlOW = 0.003; + _g4a1_var._parameters.WyuOW = 0.003; + _g4a1_var._parameters.WydOW = 0.003; + _g4a1_var._parameters.mxrOW = 0; + _g4a1_var._parameters.mxlOW = 0; + _g4a1_var._parameters.myuOW = 0; + _g4a1_var._parameters.mydOW = 0; + _g4a1_var._parameters.rwallthick = 0.001; + _g4a1_var._parameters.lwallthick = 0.001; + _g4a1_var._parameters.uwallthick = 0.001; + _g4a1_var._parameters.dwallthick = 0.001; + + + /* component g4a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a1_var._rotation_absolute); + rot_transpose(_g3b1_var._rotation_absolute, tr1); + rot_mul(_g4a1_var._rotation_absolute, tr1, _g4a1_var._rotation_relative); + _g4a1_var._rotation_is_identity = rot_test_identity(_g4a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 17.964); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3b1_var._position_absolute, _g4a1_var._position_absolute); + _g4a1_var._position_relative = rot_apply(_g4a1_var._rotation_absolute, tc1); + } /* g4a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute); + instrument->_position_absolute[52] = _g4a1_var._position_absolute; + instrument->_position_relative[52] = _g4a1_var._position_relative; + _g4a1_var._position_relative_is_zero = coords_test_zero(_g4a1_var._position_relative); + instrument->counter_N[52] = instrument->counter_P[52] = instrument->counter_P2[52] = 0; + instrument->counter_AbsorbProp[52]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0051_g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "l", "0", "1.2600000000000016","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a1_setpos */ + +/* component monitor_2_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_2_position_setpos] component monitor_2_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_2_position_var._name, "monitor_2_position", 16384); + stracpy(_monitor_2_position_var._type, "Arm", 16384); + _monitor_2_position_var._index=53; + int current_setpos_index = 53; + /* component monitor_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_2_position_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_monitor_2_position_var._rotation_absolute, tr1, _monitor_2_position_var._rotation_relative); + _monitor_2_position_var._rotation_is_identity = rot_test_identity(_monitor_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.245); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _monitor_2_position_var._position_absolute); + _monitor_2_position_var._position_relative = rot_apply(_monitor_2_position_var._rotation_absolute, tc1); + } /* monitor_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute); + instrument->_position_absolute[53] = _monitor_2_position_var._position_absolute; + instrument->_position_relative[53] = _monitor_2_position_var._position_relative; + _monitor_2_position_var._position_relative_is_zero = coords_test_zero(_monitor_2_position_var._position_relative); + instrument->counter_N[53] = instrument->counter_P[53] = instrument->counter_P2[53] = 0; + instrument->counter_AbsorbProp[53]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0052_monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_2_position_setpos */ + +/* component g4a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a2_setpos] component g4a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a2_var._name, "g4a2", 16384); + stracpy(_g4a2_var._type, "Guide_four_side", 16384); + _g4a2_var._index=54; + int current_setpos_index = 54; + _g4a2_var._parameters.RIreflect[0]='\0'; + _g4a2_var._parameters.LIreflect[0]='\0'; + _g4a2_var._parameters.UIreflect[0]='\0'; + _g4a2_var._parameters.DIreflect[0]='\0'; + _g4a2_var._parameters.ROreflect[0]='\0'; + _g4a2_var._parameters.LOreflect[0]='\0'; + _g4a2_var._parameters.UOreflect[0]='\0'; + _g4a2_var._parameters.DOreflect[0]='\0'; + _g4a2_var._parameters.w1l = 0.04004; + _g4a2_var._parameters.w2l = 0.04004; + _g4a2_var._parameters.linwl = 0; + _g4a2_var._parameters.loutwl = 0; + _g4a2_var._parameters.w1r = 0.04004; + _g4a2_var._parameters.w2r = 0.04004; + _g4a2_var._parameters.linwr = 0.0; + _g4a2_var._parameters.loutwr = 0; + _g4a2_var._parameters.h1u = 0.037165; + _g4a2_var._parameters.h2u = 0.037165; + _g4a2_var._parameters.linhu = 0.0; + _g4a2_var._parameters.louthu = 0; + _g4a2_var._parameters.h1d = 0.037165; + _g4a2_var._parameters.h2d = 0.037165; + _g4a2_var._parameters.linhd = 0.0; + _g4a2_var._parameters.louthd = 0; + _g4a2_var._parameters.l = 1.9997499999999988; + _g4a2_var._parameters.R0 = 0.99; + _g4a2_var._parameters.Qcxl = 0.0221; + _g4a2_var._parameters.Qcxr = 0.0221; + _g4a2_var._parameters.Qcyu = 0.023; + _g4a2_var._parameters.Qcyd = 0.023; + _g4a2_var._parameters.alphaxl = 1.75; + _g4a2_var._parameters.alphaxr = 1.75; + _g4a2_var._parameters.alphayu = 1.8; + _g4a2_var._parameters.alphayd = 1.8; + _g4a2_var._parameters.Wxr = 0.015; + _g4a2_var._parameters.Wxl = 0.015; + _g4a2_var._parameters.Wyu = 0.015; + _g4a2_var._parameters.Wyd = 0.015; + _g4a2_var._parameters.mxr = 2.5; + _g4a2_var._parameters.mxl = 2.5; + _g4a2_var._parameters.myu = 2; + _g4a2_var._parameters.myd = 2; + _g4a2_var._parameters.QcxrOW = 0.0217; + _g4a2_var._parameters.QcxlOW = 0.0217; + _g4a2_var._parameters.QcyuOW = 0.0217; + _g4a2_var._parameters.QcydOW = 0.0217; + _g4a2_var._parameters.alphaxlOW = 6.07; + _g4a2_var._parameters.alphaxrOW = 6.07; + _g4a2_var._parameters.alphayuOW = 6.07; + _g4a2_var._parameters.alphaydOW = 6.07; + _g4a2_var._parameters.WxrOW = 0.003; + _g4a2_var._parameters.WxlOW = 0.003; + _g4a2_var._parameters.WyuOW = 0.003; + _g4a2_var._parameters.WydOW = 0.003; + _g4a2_var._parameters.mxrOW = 0; + _g4a2_var._parameters.mxlOW = 0; + _g4a2_var._parameters.myuOW = 0; + _g4a2_var._parameters.mydOW = 0; + _g4a2_var._parameters.rwallthick = 0.001; + _g4a2_var._parameters.lwallthick = 0.001; + _g4a2_var._parameters.uwallthick = 0.001; + _g4a2_var._parameters.dwallthick = 0.001; + + + /* component g4a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a2_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_g4a2_var._rotation_absolute, tr1, _g4a2_var._rotation_relative); + _g4a2_var._rotation_is_identity = rot_test_identity(_g4a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _g4a2_var._position_absolute); + _g4a2_var._position_relative = rot_apply(_g4a2_var._rotation_absolute, tc1); + } /* g4a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute); + instrument->_position_absolute[54] = _g4a2_var._position_absolute; + instrument->_position_relative[54] = _g4a2_var._position_relative; + _g4a2_var._position_relative_is_zero = coords_test_zero(_g4a2_var._position_relative); + instrument->counter_N[54] = instrument->counter_P[54] = instrument->counter_P2[54] = 0; + instrument->counter_AbsorbProp[54]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0053_g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a2_setpos */ + +/* component g4a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a3_setpos] component g4a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a3_var._name, "g4a3", 16384); + stracpy(_g4a3_var._type, "Guide_four_side", 16384); + _g4a3_var._index=55; + int current_setpos_index = 55; + _g4a3_var._parameters.RIreflect[0]='\0'; + _g4a3_var._parameters.LIreflect[0]='\0'; + _g4a3_var._parameters.UIreflect[0]='\0'; + _g4a3_var._parameters.DIreflect[0]='\0'; + _g4a3_var._parameters.ROreflect[0]='\0'; + _g4a3_var._parameters.LOreflect[0]='\0'; + _g4a3_var._parameters.UOreflect[0]='\0'; + _g4a3_var._parameters.DOreflect[0]='\0'; + _g4a3_var._parameters.w1l = 0.04004; + _g4a3_var._parameters.w2l = 0.04004; + _g4a3_var._parameters.linwl = 0; + _g4a3_var._parameters.loutwl = 0; + _g4a3_var._parameters.w1r = 0.04004; + _g4a3_var._parameters.w2r = 0.04004; + _g4a3_var._parameters.linwr = 0.0; + _g4a3_var._parameters.loutwr = 0; + _g4a3_var._parameters.h1u = 0.037165; + _g4a3_var._parameters.h2u = 0.037165; + _g4a3_var._parameters.linhu = 0.0; + _g4a3_var._parameters.louthu = 0; + _g4a3_var._parameters.h1d = 0.037165; + _g4a3_var._parameters.h2d = 0.037165; + _g4a3_var._parameters.linhd = 0.0; + _g4a3_var._parameters.louthd = 0; + _g4a3_var._parameters.l = 2.4252499999999984; + _g4a3_var._parameters.R0 = 0.99; + _g4a3_var._parameters.Qcxl = 0.0221; + _g4a3_var._parameters.Qcxr = 0.0221; + _g4a3_var._parameters.Qcyu = 0.023; + _g4a3_var._parameters.Qcyd = 0.023; + _g4a3_var._parameters.alphaxl = 1.75; + _g4a3_var._parameters.alphaxr = 1.75; + _g4a3_var._parameters.alphayu = 1.8; + _g4a3_var._parameters.alphayd = 1.8; + _g4a3_var._parameters.Wxr = 0.015; + _g4a3_var._parameters.Wxl = 0.015; + _g4a3_var._parameters.Wyu = 0.015; + _g4a3_var._parameters.Wyd = 0.015; + _g4a3_var._parameters.mxr = 2.5; + _g4a3_var._parameters.mxl = 2.5; + _g4a3_var._parameters.myu = 2; + _g4a3_var._parameters.myd = 2; + _g4a3_var._parameters.QcxrOW = 0.0217; + _g4a3_var._parameters.QcxlOW = 0.0217; + _g4a3_var._parameters.QcyuOW = 0.0217; + _g4a3_var._parameters.QcydOW = 0.0217; + _g4a3_var._parameters.alphaxlOW = 6.07; + _g4a3_var._parameters.alphaxrOW = 6.07; + _g4a3_var._parameters.alphayuOW = 6.07; + _g4a3_var._parameters.alphaydOW = 6.07; + _g4a3_var._parameters.WxrOW = 0.003; + _g4a3_var._parameters.WxlOW = 0.003; + _g4a3_var._parameters.WyuOW = 0.003; + _g4a3_var._parameters.WydOW = 0.003; + _g4a3_var._parameters.mxrOW = 0; + _g4a3_var._parameters.mxlOW = 0; + _g4a3_var._parameters.myuOW = 0; + _g4a3_var._parameters.mydOW = 0; + _g4a3_var._parameters.rwallthick = 0.001; + _g4a3_var._parameters.lwallthick = 0.001; + _g4a3_var._parameters.uwallthick = 0.001; + _g4a3_var._parameters.dwallthick = 0.001; + + + /* component g4a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a3_var._rotation_absolute); + rot_transpose(_g4a2_var._rotation_absolute, tr1); + rot_mul(_g4a3_var._rotation_absolute, tr1, _g4a3_var._rotation_relative); + _g4a3_var._rotation_is_identity = rot_test_identity(_g4a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 21.25025); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a2_var._position_absolute, _g4a3_var._position_absolute); + _g4a3_var._position_relative = rot_apply(_g4a3_var._rotation_absolute, tc1); + } /* g4a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute); + instrument->_position_absolute[55] = _g4a3_var._position_absolute; + instrument->_position_relative[55] = _g4a3_var._position_relative; + _g4a3_var._position_relative_is_zero = coords_test_zero(_g4a3_var._position_relative); + instrument->counter_N[55] = instrument->counter_P[55] = instrument->counter_P2[55] = 0; + instrument->counter_AbsorbProp[55]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0054_g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "l", "0", "2.4252499999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a3_setpos */ + +/* component fo4_position=Arm() SETTING, POSITION/ROTATION */ +int _fo4_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo4_position_setpos] component fo4_position=Arm() SETTING [Arm:0]"); + stracpy(_fo4_position_var._name, "fo4_position", 16384); + stracpy(_fo4_position_var._type, "Arm", 16384); + _fo4_position_var._index=56; + int current_setpos_index = 56; + /* component fo4_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo4_position_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo4_position_var._rotation_absolute, tr1, _fo4_position_var._rotation_relative); + _fo4_position_var._rotation_is_identity = rot_test_identity(_fo4_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6855); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo4_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo4_position_var._position_absolute); + _fo4_position_var._position_relative = rot_apply(_fo4_position_var._rotation_absolute, tc1); + } /* fo4_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute); + instrument->_position_absolute[56] = _fo4_position_var._position_absolute; + instrument->_position_relative[56] = _fo4_position_var._position_relative; + _fo4_position_var._position_relative_is_zero = coords_test_zero(_fo4_position_var._position_relative); + instrument->counter_N[56] = instrument->counter_P[56] = instrument->counter_P2[56] = 0; + instrument->counter_AbsorbProp[56]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0055_fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo4_position_setpos */ + +/* component fo_chopper_4=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_4_setpos] component fo_chopper_4=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_4_var._name, "fo_chopper_4", 16384); + stracpy(_fo_chopper_4_var._type, "MultiDiskChopper", 16384); + _fo_chopper_4_var._index=57; + int current_setpos_index = 57; + if("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" && strlen("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998")) + stracpy(_fo_chopper_4_var._parameters.slit_center, "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" ? "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_center[0]='\0'; + if("32.98;31.82;30.74;29.27;28.77;26.76" && strlen("32.98;31.82;30.74;29.27;28.77;26.76")) + stracpy(_fo_chopper_4_var._parameters.slit_width, "32.98;31.82;30.74;29.27;28.77;26.76" ? "32.98;31.82;30.74;29.27;28.77;26.76" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_width[0]='\0'; + _fo_chopper_4_var._parameters.nslits = 6; + _fo_chopper_4_var._parameters.delta_y = -0.7075; + _fo_chopper_4_var._parameters.nu = -14.0; + _fo_chopper_4_var._parameters.nrev = 0; + _fo_chopper_4_var._parameters.ratio = 1; + _fo_chopper_4_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_4; + _fo_chopper_4_var._parameters.delay = 0; + _fo_chopper_4_var._parameters.isfirst = 0; + _fo_chopper_4_var._parameters.phase = fo4_phase; + _fo_chopper_4_var._parameters.radius = 0.75; + _fo_chopper_4_var._parameters.equal = 0; + _fo_chopper_4_var._parameters.abs_out = 0; + _fo_chopper_4_var._parameters.verbose = 0; + + + /* component fo_chopper_4=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo4_position_var._rotation_absolute, _fo_chopper_4_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_4_var._rotation_absolute, tr1, _fo_chopper_4_var._rotation_relative); + _fo_chopper_4_var._rotation_is_identity = rot_test_identity(_fo_chopper_4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo4_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_4_var._position_absolute = coords_add(_fo4_position_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo_chopper_4_var._position_absolute); + _fo_chopper_4_var._position_relative = rot_apply(_fo_chopper_4_var._rotation_absolute, tc1); + } /* fo_chopper_4=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute); + instrument->_position_absolute[57] = _fo_chopper_4_var._position_absolute; + instrument->_position_relative[57] = _fo_chopper_4_var._position_relative; + _fo_chopper_4_var._position_relative_is_zero = coords_test_zero(_fo_chopper_4_var._position_relative); + instrument->counter_N[57] = instrument->counter_P[57] = instrument->counter_P2[57] = 0; + instrument->counter_AbsorbProp[57]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0056_fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "slit_center", "0 180", "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "slit_width", "10 20", "32.98;31.82;30.74;29.27;28.77;26.76", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_4","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "phase", "0", "fo4_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_4_setpos */ + +/* component g4b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b1_setpos] component g4b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b1_var._name, "g4b1", 16384); + stracpy(_g4b1_var._type, "Guide_four_side", 16384); + _g4b1_var._index=58; + int current_setpos_index = 58; + _g4b1_var._parameters.RIreflect[0]='\0'; + _g4b1_var._parameters.LIreflect[0]='\0'; + _g4b1_var._parameters.UIreflect[0]='\0'; + _g4b1_var._parameters.DIreflect[0]='\0'; + _g4b1_var._parameters.ROreflect[0]='\0'; + _g4b1_var._parameters.LOreflect[0]='\0'; + _g4b1_var._parameters.UOreflect[0]='\0'; + _g4b1_var._parameters.DOreflect[0]='\0'; + _g4b1_var._parameters.w1l = 0.04004; + _g4b1_var._parameters.w2l = 0.04004; + _g4b1_var._parameters.linwl = 0; + _g4b1_var._parameters.loutwl = 0; + _g4b1_var._parameters.w1r = 0.04004; + _g4b1_var._parameters.w2r = 0.04004; + _g4b1_var._parameters.linwr = 0.0; + _g4b1_var._parameters.loutwr = 0; + _g4b1_var._parameters.h1u = 0.037165; + _g4b1_var._parameters.h2u = 0.037165; + _g4b1_var._parameters.linhu = 0.0; + _g4b1_var._parameters.louthu = 0; + _g4b1_var._parameters.h1d = 0.037165; + _g4b1_var._parameters.h2d = 0.037165; + _g4b1_var._parameters.linhd = 0.0; + _g4b1_var._parameters.louthd = 0; + _g4b1_var._parameters.l = 0.5565999999999995; + _g4b1_var._parameters.R0 = 0.99; + _g4b1_var._parameters.Qcxl = 0.0221; + _g4b1_var._parameters.Qcxr = 0.0221; + _g4b1_var._parameters.Qcyu = 0.023; + _g4b1_var._parameters.Qcyd = 0.023; + _g4b1_var._parameters.alphaxl = 1.75; + _g4b1_var._parameters.alphaxr = 1.75; + _g4b1_var._parameters.alphayu = 1.8; + _g4b1_var._parameters.alphayd = 1.8; + _g4b1_var._parameters.Wxr = 0.015; + _g4b1_var._parameters.Wxl = 0.015; + _g4b1_var._parameters.Wyu = 0.015; + _g4b1_var._parameters.Wyd = 0.015; + _g4b1_var._parameters.mxr = 2.5; + _g4b1_var._parameters.mxl = 2.5; + _g4b1_var._parameters.myu = 2; + _g4b1_var._parameters.myd = 2; + _g4b1_var._parameters.QcxrOW = 0.0217; + _g4b1_var._parameters.QcxlOW = 0.0217; + _g4b1_var._parameters.QcyuOW = 0.0217; + _g4b1_var._parameters.QcydOW = 0.0217; + _g4b1_var._parameters.alphaxlOW = 6.07; + _g4b1_var._parameters.alphaxrOW = 6.07; + _g4b1_var._parameters.alphayuOW = 6.07; + _g4b1_var._parameters.alphaydOW = 6.07; + _g4b1_var._parameters.WxrOW = 0.003; + _g4b1_var._parameters.WxlOW = 0.003; + _g4b1_var._parameters.WyuOW = 0.003; + _g4b1_var._parameters.WydOW = 0.003; + _g4b1_var._parameters.mxrOW = 0; + _g4b1_var._parameters.mxlOW = 0; + _g4b1_var._parameters.myuOW = 0; + _g4b1_var._parameters.mydOW = 0; + _g4b1_var._parameters.rwallthick = 0.001; + _g4b1_var._parameters.lwallthick = 0.001; + _g4b1_var._parameters.uwallthick = 0.001; + _g4b1_var._parameters.dwallthick = 0.001; + + + /* component g4b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b1_var._rotation_absolute); + rot_transpose(_fo_chopper_4_var._rotation_absolute, tr1); + rot_mul(_g4b1_var._rotation_absolute, tr1, _g4b1_var._rotation_relative); + _g4b1_var._rotation_is_identity = rot_test_identity(_g4b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6955); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_4_var._position_absolute, _g4b1_var._position_absolute); + _g4b1_var._position_relative = rot_apply(_g4b1_var._rotation_absolute, tc1); + } /* g4b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute); + instrument->_position_absolute[58] = _g4b1_var._position_absolute; + instrument->_position_relative[58] = _g4b1_var._position_relative; + _g4b1_var._position_relative_is_zero = coords_test_zero(_g4b1_var._position_relative); + instrument->counter_N[58] = instrument->counter_P[58] = instrument->counter_P2[58] = 0; + instrument->counter_AbsorbProp[58]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0057_g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "l", "0", "0.5565999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b1_setpos */ + +/* component g4b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b2_setpos] component g4b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b2_var._name, "g4b2", 16384); + stracpy(_g4b2_var._type, "Guide_four_side", 16384); + _g4b2_var._index=59; + int current_setpos_index = 59; + _g4b2_var._parameters.RIreflect[0]='\0'; + _g4b2_var._parameters.LIreflect[0]='\0'; + _g4b2_var._parameters.UIreflect[0]='\0'; + _g4b2_var._parameters.DIreflect[0]='\0'; + _g4b2_var._parameters.ROreflect[0]='\0'; + _g4b2_var._parameters.LOreflect[0]='\0'; + _g4b2_var._parameters.UOreflect[0]='\0'; + _g4b2_var._parameters.DOreflect[0]='\0'; + _g4b2_var._parameters.w1l = 0.04004; + _g4b2_var._parameters.w2l = 0.04004; + _g4b2_var._parameters.linwl = 0; + _g4b2_var._parameters.loutwl = 0; + _g4b2_var._parameters.w1r = 0.04004; + _g4b2_var._parameters.w2r = 0.04004; + _g4b2_var._parameters.linwr = 0.0; + _g4b2_var._parameters.loutwr = 0; + _g4b2_var._parameters.h1u = 0.037165; + _g4b2_var._parameters.h2u = 0.037165; + _g4b2_var._parameters.linhu = 0.0; + _g4b2_var._parameters.louthu = 0; + _g4b2_var._parameters.h1d = 0.037165; + _g4b2_var._parameters.h2d = 0.037165; + _g4b2_var._parameters.linhd = 0.0; + _g4b2_var._parameters.louthd = 0; + _g4b2_var._parameters.l = 1.7800000000000011; + _g4b2_var._parameters.R0 = 0.99; + _g4b2_var._parameters.Qcxl = 0.0221; + _g4b2_var._parameters.Qcxr = 0.0221; + _g4b2_var._parameters.Qcyu = 0.023; + _g4b2_var._parameters.Qcyd = 0.023; + _g4b2_var._parameters.alphaxl = 1.75; + _g4b2_var._parameters.alphaxr = 1.75; + _g4b2_var._parameters.alphayu = 1.8; + _g4b2_var._parameters.alphayd = 1.8; + _g4b2_var._parameters.Wxr = 0.015; + _g4b2_var._parameters.Wxl = 0.015; + _g4b2_var._parameters.Wyu = 0.015; + _g4b2_var._parameters.Wyd = 0.015; + _g4b2_var._parameters.mxr = 3.0; + _g4b2_var._parameters.mxl = 3.0; + _g4b2_var._parameters.myu = 2; + _g4b2_var._parameters.myd = 2; + _g4b2_var._parameters.QcxrOW = 0.0217; + _g4b2_var._parameters.QcxlOW = 0.0217; + _g4b2_var._parameters.QcyuOW = 0.0217; + _g4b2_var._parameters.QcydOW = 0.0217; + _g4b2_var._parameters.alphaxlOW = 6.07; + _g4b2_var._parameters.alphaxrOW = 6.07; + _g4b2_var._parameters.alphayuOW = 6.07; + _g4b2_var._parameters.alphaydOW = 6.07; + _g4b2_var._parameters.WxrOW = 0.003; + _g4b2_var._parameters.WxlOW = 0.003; + _g4b2_var._parameters.WyuOW = 0.003; + _g4b2_var._parameters.WydOW = 0.003; + _g4b2_var._parameters.mxrOW = 0; + _g4b2_var._parameters.mxlOW = 0; + _g4b2_var._parameters.myuOW = 0; + _g4b2_var._parameters.mydOW = 0; + _g4b2_var._parameters.rwallthick = 0.001; + _g4b2_var._parameters.lwallthick = 0.001; + _g4b2_var._parameters.uwallthick = 0.001; + _g4b2_var._parameters.dwallthick = 0.001; + + + /* component g4b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b2_var._rotation_absolute); + rot_transpose(_g4b1_var._rotation_absolute, tr1); + rot_mul(_g4b2_var._rotation_absolute, tr1, _g4b2_var._rotation_relative); + _g4b2_var._rotation_is_identity = rot_test_identity(_g4b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 24.2561); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b1_var._position_absolute, _g4b2_var._position_absolute); + _g4b2_var._position_relative = rot_apply(_g4b2_var._rotation_absolute, tc1); + } /* g4b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute); + instrument->_position_absolute[59] = _g4b2_var._position_absolute; + instrument->_position_relative[59] = _g4b2_var._position_relative; + _g4b2_var._position_relative_is_zero = coords_test_zero(_g4b2_var._position_relative); + instrument->counter_N[59] = instrument->counter_P[59] = instrument->counter_P2[59] = 0; + instrument->counter_AbsorbProp[59]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0058_g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "l", "0", "1.7800000000000011","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b2_setpos */ + +/* component g4b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b3_setpos] component g4b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b3_var._name, "g4b3", 16384); + stracpy(_g4b3_var._type, "Guide_four_side", 16384); + _g4b3_var._index=60; + int current_setpos_index = 60; + _g4b3_var._parameters.RIreflect[0]='\0'; + _g4b3_var._parameters.LIreflect[0]='\0'; + _g4b3_var._parameters.UIreflect[0]='\0'; + _g4b3_var._parameters.DIreflect[0]='\0'; + _g4b3_var._parameters.ROreflect[0]='\0'; + _g4b3_var._parameters.LOreflect[0]='\0'; + _g4b3_var._parameters.UOreflect[0]='\0'; + _g4b3_var._parameters.DOreflect[0]='\0'; + _g4b3_var._parameters.w1l = 0.04004; + _g4b3_var._parameters.w2l = 0.04004; + _g4b3_var._parameters.linwl = 0; + _g4b3_var._parameters.loutwl = 0; + _g4b3_var._parameters.w1r = 0.04004; + _g4b3_var._parameters.w2r = 0.04004; + _g4b3_var._parameters.linwr = 0.0; + _g4b3_var._parameters.loutwr = 0; + _g4b3_var._parameters.h1u = 0.037165; + _g4b3_var._parameters.h2u = 0.037165; + _g4b3_var._parameters.linhu = 0.0; + _g4b3_var._parameters.louthu = 0; + _g4b3_var._parameters.h1d = 0.037165; + _g4b3_var._parameters.h2d = 0.037165; + _g4b3_var._parameters.linhd = 0.0; + _g4b3_var._parameters.louthd = 0; + _g4b3_var._parameters.l = 2.1380000000000017; + _g4b3_var._parameters.R0 = 0.99; + _g4b3_var._parameters.Qcxl = 0.0217; + _g4b3_var._parameters.Qcxr = 0.0217; + _g4b3_var._parameters.Qcyu = 0.023; + _g4b3_var._parameters.Qcyd = 0.023; + _g4b3_var._parameters.alphaxl = 2.5; + _g4b3_var._parameters.alphaxr = 2.5; + _g4b3_var._parameters.alphayu = 1.8; + _g4b3_var._parameters.alphayd = 1.8; + _g4b3_var._parameters.Wxr = 0.015; + _g4b3_var._parameters.Wxl = 0.015; + _g4b3_var._parameters.Wyu = 0.015; + _g4b3_var._parameters.Wyd = 0.015; + _g4b3_var._parameters.mxr = 3.5; + _g4b3_var._parameters.mxl = 3.5; + _g4b3_var._parameters.myu = 2; + _g4b3_var._parameters.myd = 2; + _g4b3_var._parameters.QcxrOW = 0.0217; + _g4b3_var._parameters.QcxlOW = 0.0217; + _g4b3_var._parameters.QcyuOW = 0.0217; + _g4b3_var._parameters.QcydOW = 0.0217; + _g4b3_var._parameters.alphaxlOW = 6.07; + _g4b3_var._parameters.alphaxrOW = 6.07; + _g4b3_var._parameters.alphayuOW = 6.07; + _g4b3_var._parameters.alphaydOW = 6.07; + _g4b3_var._parameters.WxrOW = 0.003; + _g4b3_var._parameters.WxlOW = 0.003; + _g4b3_var._parameters.WyuOW = 0.003; + _g4b3_var._parameters.WydOW = 0.003; + _g4b3_var._parameters.mxrOW = 0; + _g4b3_var._parameters.mxlOW = 0; + _g4b3_var._parameters.myuOW = 0; + _g4b3_var._parameters.mydOW = 0; + _g4b3_var._parameters.rwallthick = 0.001; + _g4b3_var._parameters.lwallthick = 0.001; + _g4b3_var._parameters.uwallthick = 0.001; + _g4b3_var._parameters.dwallthick = 0.001; + + + /* component g4b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b3_var._rotation_absolute); + rot_transpose(_g4b2_var._rotation_absolute, tr1); + rot_mul(_g4b3_var._rotation_absolute, tr1, _g4b3_var._rotation_relative); + _g4b3_var._rotation_is_identity = rot_test_identity(_g4b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 26.0366); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b2_var._position_absolute, _g4b3_var._position_absolute); + _g4b3_var._position_relative = rot_apply(_g4b3_var._rotation_absolute, tc1); + } /* g4b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute); + instrument->_position_absolute[60] = _g4b3_var._position_absolute; + instrument->_position_relative[60] = _g4b3_var._position_relative; + _g4b3_var._position_relative_is_zero = coords_test_zero(_g4b3_var._position_relative); + instrument->counter_N[60] = instrument->counter_P[60] = instrument->counter_P2[60] = 0; + instrument->counter_AbsorbProp[60]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0059_g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "l", "0", "2.1380000000000017","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b3_setpos */ + +/* component g4b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b4_setpos] component g4b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b4_var._name, "g4b4", 16384); + stracpy(_g4b4_var._type, "Guide_four_side", 16384); + _g4b4_var._index=61; + int current_setpos_index = 61; + _g4b4_var._parameters.RIreflect[0]='\0'; + _g4b4_var._parameters.LIreflect[0]='\0'; + _g4b4_var._parameters.UIreflect[0]='\0'; + _g4b4_var._parameters.DIreflect[0]='\0'; + _g4b4_var._parameters.ROreflect[0]='\0'; + _g4b4_var._parameters.LOreflect[0]='\0'; + _g4b4_var._parameters.UOreflect[0]='\0'; + _g4b4_var._parameters.DOreflect[0]='\0'; + _g4b4_var._parameters.w1l = 0.04004; + _g4b4_var._parameters.w2l = 0.04004; + _g4b4_var._parameters.linwl = 0; + _g4b4_var._parameters.loutwl = 0; + _g4b4_var._parameters.w1r = 0.04004; + _g4b4_var._parameters.w2r = 0.04004; + _g4b4_var._parameters.linwr = 0.0; + _g4b4_var._parameters.loutwr = 0; + _g4b4_var._parameters.h1u = 0.037165; + _g4b4_var._parameters.h2u = 0.037165; + _g4b4_var._parameters.linhu = 0.0; + _g4b4_var._parameters.louthu = 0; + _g4b4_var._parameters.h1d = 0.037165; + _g4b4_var._parameters.h2d = 0.037165; + _g4b4_var._parameters.linhd = 0.0; + _g4b4_var._parameters.louthd = 0; + _g4b4_var._parameters.l = 1.9997499999999988; + _g4b4_var._parameters.R0 = 0.99; + _g4b4_var._parameters.Qcxl = 0.0217; + _g4b4_var._parameters.Qcxr = 0.0217; + _g4b4_var._parameters.Qcyu = 0.023; + _g4b4_var._parameters.Qcyd = 0.023; + _g4b4_var._parameters.alphaxl = 2.5; + _g4b4_var._parameters.alphaxr = 2.5; + _g4b4_var._parameters.alphayu = 1.8; + _g4b4_var._parameters.alphayd = 1.8; + _g4b4_var._parameters.Wxr = 0.015; + _g4b4_var._parameters.Wxl = 0.015; + _g4b4_var._parameters.Wyu = 0.015; + _g4b4_var._parameters.Wyd = 0.015; + _g4b4_var._parameters.mxr = 3.5; + _g4b4_var._parameters.mxl = 3.5; + _g4b4_var._parameters.myu = 2; + _g4b4_var._parameters.myd = 2; + _g4b4_var._parameters.QcxrOW = 0.0217; + _g4b4_var._parameters.QcxlOW = 0.0217; + _g4b4_var._parameters.QcyuOW = 0.0217; + _g4b4_var._parameters.QcydOW = 0.0217; + _g4b4_var._parameters.alphaxlOW = 6.07; + _g4b4_var._parameters.alphaxrOW = 6.07; + _g4b4_var._parameters.alphayuOW = 6.07; + _g4b4_var._parameters.alphaydOW = 6.07; + _g4b4_var._parameters.WxrOW = 0.003; + _g4b4_var._parameters.WxlOW = 0.003; + _g4b4_var._parameters.WyuOW = 0.003; + _g4b4_var._parameters.WydOW = 0.003; + _g4b4_var._parameters.mxrOW = 0; + _g4b4_var._parameters.mxlOW = 0; + _g4b4_var._parameters.myuOW = 0; + _g4b4_var._parameters.mydOW = 0; + _g4b4_var._parameters.rwallthick = 0.001; + _g4b4_var._parameters.lwallthick = 0.001; + _g4b4_var._parameters.uwallthick = 0.001; + _g4b4_var._parameters.dwallthick = 0.001; + + + /* component g4b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b4_var._rotation_absolute); + rot_transpose(_g4b3_var._rotation_absolute, tr1); + rot_mul(_g4b4_var._rotation_absolute, tr1, _g4b4_var._rotation_relative); + _g4b4_var._rotation_is_identity = rot_test_identity(_g4b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 28.1786); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b3_var._position_absolute, _g4b4_var._position_absolute); + _g4b4_var._position_relative = rot_apply(_g4b4_var._rotation_absolute, tc1); + } /* g4b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute); + instrument->_position_absolute[61] = _g4b4_var._position_absolute; + instrument->_position_relative[61] = _g4b4_var._position_relative; + _g4b4_var._position_relative_is_zero = coords_test_zero(_g4b4_var._position_relative); + instrument->counter_N[61] = instrument->counter_P[61] = instrument->counter_P2[61] = 0; + instrument->counter_AbsorbProp[61]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0060_g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b4_setpos */ + +/* component g4b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b5_setpos] component g4b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b5_var._name, "g4b5", 16384); + stracpy(_g4b5_var._type, "Guide_four_side", 16384); + _g4b5_var._index=62; + int current_setpos_index = 62; + _g4b5_var._parameters.RIreflect[0]='\0'; + _g4b5_var._parameters.LIreflect[0]='\0'; + _g4b5_var._parameters.UIreflect[0]='\0'; + _g4b5_var._parameters.DIreflect[0]='\0'; + _g4b5_var._parameters.ROreflect[0]='\0'; + _g4b5_var._parameters.LOreflect[0]='\0'; + _g4b5_var._parameters.UOreflect[0]='\0'; + _g4b5_var._parameters.DOreflect[0]='\0'; + _g4b5_var._parameters.w1l = 0.04004; + _g4b5_var._parameters.w2l = 0.04004; + _g4b5_var._parameters.linwl = 0; + _g4b5_var._parameters.loutwl = 0; + _g4b5_var._parameters.w1r = 0.04004; + _g4b5_var._parameters.w2r = 0.04004; + _g4b5_var._parameters.linwr = 0.0; + _g4b5_var._parameters.loutwr = 0; + _g4b5_var._parameters.h1u = 0.037165; + _g4b5_var._parameters.h2u = 0.037165; + _g4b5_var._parameters.linhu = 0.0; + _g4b5_var._parameters.louthu = 0; + _g4b5_var._parameters.h1d = 0.037165; + _g4b5_var._parameters.h2d = 0.037165; + _g4b5_var._parameters.linhd = 0.0; + _g4b5_var._parameters.louthd = 0; + _g4b5_var._parameters.l = 1.4049499999999995; + _g4b5_var._parameters.R0 = 0.99; + _g4b5_var._parameters.Qcxl = 0.0221; + _g4b5_var._parameters.Qcxr = 0.0221; + _g4b5_var._parameters.Qcyu = 0.023; + _g4b5_var._parameters.Qcyd = 0.023; + _g4b5_var._parameters.alphaxl = 1.75; + _g4b5_var._parameters.alphaxr = 1.75; + _g4b5_var._parameters.alphayu = 1.8; + _g4b5_var._parameters.alphayd = 1.8; + _g4b5_var._parameters.Wxr = 0.015; + _g4b5_var._parameters.Wxl = 0.015; + _g4b5_var._parameters.Wyu = 0.015; + _g4b5_var._parameters.Wyd = 0.015; + _g4b5_var._parameters.mxr = 3; + _g4b5_var._parameters.mxl = 3; + _g4b5_var._parameters.myu = 2; + _g4b5_var._parameters.myd = 2; + _g4b5_var._parameters.QcxrOW = 0.0217; + _g4b5_var._parameters.QcxlOW = 0.0217; + _g4b5_var._parameters.QcyuOW = 0.0217; + _g4b5_var._parameters.QcydOW = 0.0217; + _g4b5_var._parameters.alphaxlOW = 6.07; + _g4b5_var._parameters.alphaxrOW = 6.07; + _g4b5_var._parameters.alphayuOW = 6.07; + _g4b5_var._parameters.alphaydOW = 6.07; + _g4b5_var._parameters.WxrOW = 0.003; + _g4b5_var._parameters.WxlOW = 0.003; + _g4b5_var._parameters.WyuOW = 0.003; + _g4b5_var._parameters.WydOW = 0.003; + _g4b5_var._parameters.mxrOW = 0; + _g4b5_var._parameters.mxlOW = 0; + _g4b5_var._parameters.myuOW = 0; + _g4b5_var._parameters.mydOW = 0; + _g4b5_var._parameters.rwallthick = 0.001; + _g4b5_var._parameters.lwallthick = 0.001; + _g4b5_var._parameters.uwallthick = 0.001; + _g4b5_var._parameters.dwallthick = 0.001; + + + /* component g4b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b5_var._rotation_absolute); + rot_transpose(_g4b4_var._rotation_absolute, tr1); + rot_mul(_g4b5_var._rotation_absolute, tr1, _g4b5_var._rotation_relative); + _g4b5_var._rotation_is_identity = rot_test_identity(_g4b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 30.17885); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b4_var._position_absolute, _g4b5_var._position_absolute); + _g4b5_var._position_relative = rot_apply(_g4b5_var._rotation_absolute, tc1); + } /* g4b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute); + instrument->_position_absolute[62] = _g4b5_var._position_absolute; + instrument->_position_relative[62] = _g4b5_var._position_relative; + _g4b5_var._position_relative_is_zero = coords_test_zero(_g4b5_var._position_relative); + instrument->counter_N[62] = instrument->counter_P[62] = instrument->counter_P2[62] = 0; + instrument->counter_AbsorbProp[62]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0061_g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "l", "0", "1.4049499999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b5_setpos */ + +/* component g4b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b6_setpos] component g4b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b6_var._name, "g4b6", 16384); + stracpy(_g4b6_var._type, "Guide_four_side", 16384); + _g4b6_var._index=63; + int current_setpos_index = 63; + _g4b6_var._parameters.RIreflect[0]='\0'; + _g4b6_var._parameters.LIreflect[0]='\0'; + _g4b6_var._parameters.UIreflect[0]='\0'; + _g4b6_var._parameters.DIreflect[0]='\0'; + _g4b6_var._parameters.ROreflect[0]='\0'; + _g4b6_var._parameters.LOreflect[0]='\0'; + _g4b6_var._parameters.UOreflect[0]='\0'; + _g4b6_var._parameters.DOreflect[0]='\0'; + _g4b6_var._parameters.w1l = 0.04004; + _g4b6_var._parameters.w2l = 0.04004; + _g4b6_var._parameters.linwl = 0; + _g4b6_var._parameters.loutwl = 0; + _g4b6_var._parameters.w1r = 0.04004; + _g4b6_var._parameters.w2r = 0.04004; + _g4b6_var._parameters.linwr = 0.0; + _g4b6_var._parameters.loutwr = 0; + _g4b6_var._parameters.h1u = 0.037165; + _g4b6_var._parameters.h2u = 0.037165; + _g4b6_var._parameters.linhu = 0.0; + _g4b6_var._parameters.louthu = 0; + _g4b6_var._parameters.h1d = 0.037165; + _g4b6_var._parameters.h2d = 0.037165; + _g4b6_var._parameters.linhd = 0.0; + _g4b6_var._parameters.louthd = 0; + _g4b6_var._parameters.l = 0.4106999999999985; + _g4b6_var._parameters.R0 = 0.99; + _g4b6_var._parameters.Qcxl = 0.0221; + _g4b6_var._parameters.Qcxr = 0.0221; + _g4b6_var._parameters.Qcyu = 0.023; + _g4b6_var._parameters.Qcyd = 0.023; + _g4b6_var._parameters.alphaxl = 1.75; + _g4b6_var._parameters.alphaxr = 1.75; + _g4b6_var._parameters.alphayu = 1.8; + _g4b6_var._parameters.alphayd = 1.8; + _g4b6_var._parameters.Wxr = 0.015; + _g4b6_var._parameters.Wxl = 0.015; + _g4b6_var._parameters.Wyu = 0.015; + _g4b6_var._parameters.Wyd = 0.015; + _g4b6_var._parameters.mxr = 3; + _g4b6_var._parameters.mxl = 3; + _g4b6_var._parameters.myu = 2; + _g4b6_var._parameters.myd = 2; + _g4b6_var._parameters.QcxrOW = 0.0217; + _g4b6_var._parameters.QcxlOW = 0.0217; + _g4b6_var._parameters.QcyuOW = 0.0217; + _g4b6_var._parameters.QcydOW = 0.0217; + _g4b6_var._parameters.alphaxlOW = 6.07; + _g4b6_var._parameters.alphaxrOW = 6.07; + _g4b6_var._parameters.alphayuOW = 6.07; + _g4b6_var._parameters.alphaydOW = 6.07; + _g4b6_var._parameters.WxrOW = 0.003; + _g4b6_var._parameters.WxlOW = 0.003; + _g4b6_var._parameters.WyuOW = 0.003; + _g4b6_var._parameters.WydOW = 0.003; + _g4b6_var._parameters.mxrOW = 0; + _g4b6_var._parameters.mxlOW = 0; + _g4b6_var._parameters.myuOW = 0; + _g4b6_var._parameters.mydOW = 0; + _g4b6_var._parameters.rwallthick = 0.001; + _g4b6_var._parameters.lwallthick = 0.001; + _g4b6_var._parameters.uwallthick = 0.001; + _g4b6_var._parameters.dwallthick = 0.001; + + + /* component g4b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b6_var._rotation_absolute); + rot_transpose(_g4b5_var._rotation_absolute, tr1); + rot_mul(_g4b6_var._rotation_absolute, tr1, _g4b6_var._rotation_relative); + _g4b6_var._rotation_is_identity = rot_test_identity(_g4b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 31.5893); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b5_var._position_absolute, _g4b6_var._position_absolute); + _g4b6_var._position_relative = rot_apply(_g4b6_var._rotation_absolute, tc1); + } /* g4b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute); + instrument->_position_absolute[63] = _g4b6_var._position_absolute; + instrument->_position_relative[63] = _g4b6_var._position_relative; + _g4b6_var._position_relative_is_zero = coords_test_zero(_g4b6_var._position_relative); + instrument->counter_N[63] = instrument->counter_P[63] = instrument->counter_P2[63] = 0; + instrument->counter_AbsorbProp[63]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0062_g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "l", "0", "0.4106999999999985","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b6_setpos */ + +/* component g5a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5a1_setpos] component g5a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5a1_var._name, "g5a1", 16384); + stracpy(_g5a1_var._type, "Guide_four_side", 16384); + _g5a1_var._index=64; + int current_setpos_index = 64; + _g5a1_var._parameters.RIreflect[0]='\0'; + _g5a1_var._parameters.LIreflect[0]='\0'; + _g5a1_var._parameters.UIreflect[0]='\0'; + _g5a1_var._parameters.DIreflect[0]='\0'; + _g5a1_var._parameters.ROreflect[0]='\0'; + _g5a1_var._parameters.LOreflect[0]='\0'; + _g5a1_var._parameters.UOreflect[0]='\0'; + _g5a1_var._parameters.DOreflect[0]='\0'; + _g5a1_var._parameters.w1l = 0.04004; + _g5a1_var._parameters.w2l = 0.04004; + _g5a1_var._parameters.linwl = 0; + _g5a1_var._parameters.loutwl = 0; + _g5a1_var._parameters.w1r = 0.04004; + _g5a1_var._parameters.w2r = 0.04004; + _g5a1_var._parameters.linwr = 0.0; + _g5a1_var._parameters.loutwr = 0; + _g5a1_var._parameters.h1u = 0.037165; + _g5a1_var._parameters.h2u = 0.002; + _g5a1_var._parameters.linhu = 18.0; + _g5a1_var._parameters.louthu = 17.005499999999998; + _g5a1_var._parameters.h1d = 0.037165; + _g5a1_var._parameters.h2d = 0.002; + _g5a1_var._parameters.linhd = 18.0; + _g5a1_var._parameters.louthd = 17.005499999999998; + _g5a1_var._parameters.l = 0.9945000000000022; + _g5a1_var._parameters.R0 = 0.99; + _g5a1_var._parameters.Qcxl = 0.023; + _g5a1_var._parameters.Qcxr = 0.023; + _g5a1_var._parameters.Qcyu = 0.023; + _g5a1_var._parameters.Qcyd = 0.023; + _g5a1_var._parameters.alphaxl = 1.8; + _g5a1_var._parameters.alphaxr = 1.8; + _g5a1_var._parameters.alphayu = 1.8; + _g5a1_var._parameters.alphayd = 1.8; + _g5a1_var._parameters.Wxr = 0.015; + _g5a1_var._parameters.Wxl = 0.015; + _g5a1_var._parameters.Wyu = 0.015; + _g5a1_var._parameters.Wyd = 0.015; + _g5a1_var._parameters.mxr = 2; + _g5a1_var._parameters.mxl = 2; + _g5a1_var._parameters.myu = 2; + _g5a1_var._parameters.myd = 2; + _g5a1_var._parameters.QcxrOW = 0.0217; + _g5a1_var._parameters.QcxlOW = 0.0217; + _g5a1_var._parameters.QcyuOW = 0.0217; + _g5a1_var._parameters.QcydOW = 0.0217; + _g5a1_var._parameters.alphaxlOW = 6.07; + _g5a1_var._parameters.alphaxrOW = 6.07; + _g5a1_var._parameters.alphayuOW = 6.07; + _g5a1_var._parameters.alphaydOW = 6.07; + _g5a1_var._parameters.WxrOW = 0.003; + _g5a1_var._parameters.WxlOW = 0.003; + _g5a1_var._parameters.WyuOW = 0.003; + _g5a1_var._parameters.WydOW = 0.003; + _g5a1_var._parameters.mxrOW = 0; + _g5a1_var._parameters.mxlOW = 0; + _g5a1_var._parameters.myuOW = 0; + _g5a1_var._parameters.mydOW = 0; + _g5a1_var._parameters.rwallthick = 0.001; + _g5a1_var._parameters.lwallthick = 0.001; + _g5a1_var._parameters.uwallthick = 0.001; + _g5a1_var._parameters.dwallthick = 0.001; + + + /* component g5a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5a1_var._rotation_absolute); + rot_transpose(_g4b6_var._rotation_absolute, tr1); + rot_mul(_g5a1_var._rotation_absolute, tr1, _g5a1_var._rotation_relative); + _g5a1_var._rotation_is_identity = rot_test_identity(_g5a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 32.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b6_var._position_absolute, _g5a1_var._position_absolute); + _g5a1_var._position_relative = rot_apply(_g5a1_var._rotation_absolute, tc1); + } /* g5a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute); + instrument->_position_absolute[64] = _g5a1_var._position_absolute; + instrument->_position_relative[64] = _g5a1_var._position_relative; + _g5a1_var._position_relative_is_zero = coords_test_zero(_g5a1_var._position_relative); + instrument->counter_N[64] = instrument->counter_P[64] = instrument->counter_P2[64] = 0; + instrument->counter_AbsorbProp[64]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0063_g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "linhu", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "louthu", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "linhd", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "louthd", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "l", "0", "0.9945000000000022","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5a1_setpos */ + +/* component fo5_position=Arm() SETTING, POSITION/ROTATION */ +int _fo5_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo5_position_setpos] component fo5_position=Arm() SETTING [Arm:0]"); + stracpy(_fo5_position_var._name, "fo5_position", 16384); + stracpy(_fo5_position_var._type, "Arm", 16384); + _fo5_position_var._index=65; + int current_setpos_index = 65; + /* component fo5_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo5_position_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo5_position_var._rotation_absolute, tr1, _fo5_position_var._rotation_relative); + _fo5_position_var._rotation_is_identity = rot_test_identity(_fo5_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.005); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo5_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo5_position_var._position_absolute); + _fo5_position_var._position_relative = rot_apply(_fo5_position_var._rotation_absolute, tc1); + } /* fo5_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute); + instrument->_position_absolute[65] = _fo5_position_var._position_absolute; + instrument->_position_relative[65] = _fo5_position_var._position_relative; + _fo5_position_var._position_relative_is_zero = coords_test_zero(_fo5_position_var._position_relative); + instrument->counter_N[65] = instrument->counter_P[65] = instrument->counter_P2[65] = 0; + instrument->counter_AbsorbProp[65]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0064_fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo5_position_setpos */ + +/* component fo_chopper_5=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_5_setpos] component fo_chopper_5=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_5_var._name, "fo_chopper_5", 16384); + stracpy(_fo_chopper_5_var._type, "MultiDiskChopper", 16384); + _fo_chopper_5_var._index=66; + int current_setpos_index = 66; + if("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" && strlen("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002")) + stracpy(_fo_chopper_5_var._parameters.slit_center, "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" ? "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_center[0]='\0'; + if("50.81;48.55;45.49;41.32;37.45;37.74" && strlen("50.81;48.55;45.49;41.32;37.45;37.74")) + stracpy(_fo_chopper_5_var._parameters.slit_width, "50.81;48.55;45.49;41.32;37.45;37.74" ? "50.81;48.55;45.49;41.32;37.45;37.74" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_width[0]='\0'; + _fo_chopper_5_var._parameters.nslits = 6; + _fo_chopper_5_var._parameters.delta_y = -0.7075; + _fo_chopper_5_var._parameters.nu = -14.0; + _fo_chopper_5_var._parameters.nrev = 0; + _fo_chopper_5_var._parameters.ratio = 1; + _fo_chopper_5_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_5; + _fo_chopper_5_var._parameters.delay = 0; + _fo_chopper_5_var._parameters.isfirst = 0; + _fo_chopper_5_var._parameters.phase = fo5_phase; + _fo_chopper_5_var._parameters.radius = 0.75; + _fo_chopper_5_var._parameters.equal = 0; + _fo_chopper_5_var._parameters.abs_out = 0; + _fo_chopper_5_var._parameters.verbose = 0; + + + /* component fo_chopper_5=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo5_position_var._rotation_absolute, _fo_chopper_5_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_5_var._rotation_absolute, tr1, _fo_chopper_5_var._rotation_relative); + _fo_chopper_5_var._rotation_is_identity = rot_test_identity(_fo_chopper_5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo5_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_5_var._position_absolute = coords_add(_fo5_position_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo_chopper_5_var._position_absolute); + _fo_chopper_5_var._position_relative = rot_apply(_fo_chopper_5_var._rotation_absolute, tc1); + } /* fo_chopper_5=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute); + instrument->_position_absolute[66] = _fo_chopper_5_var._position_absolute; + instrument->_position_relative[66] = _fo_chopper_5_var._position_relative; + _fo_chopper_5_var._position_relative_is_zero = coords_test_zero(_fo_chopper_5_var._position_relative); + instrument->counter_N[66] = instrument->counter_P[66] = instrument->counter_P2[66] = 0; + instrument->counter_AbsorbProp[66]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0065_fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "slit_center", "0 180", "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", "char*"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "slit_width", "10 20", "50.81;48.55;45.49;41.32;37.45;37.74", "char*"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "phase", "0", "fo5_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_5_setpos */ + +/* component g5b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b1_setpos] component g5b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b1_var._name, "g5b1", 16384); + stracpy(_g5b1_var._type, "Guide_four_side", 16384); + _g5b1_var._index=67; + int current_setpos_index = 67; + _g5b1_var._parameters.RIreflect[0]='\0'; + _g5b1_var._parameters.LIreflect[0]='\0'; + _g5b1_var._parameters.UIreflect[0]='\0'; + _g5b1_var._parameters.DIreflect[0]='\0'; + _g5b1_var._parameters.ROreflect[0]='\0'; + _g5b1_var._parameters.LOreflect[0]='\0'; + _g5b1_var._parameters.UOreflect[0]='\0'; + _g5b1_var._parameters.DOreflect[0]='\0'; + _g5b1_var._parameters.w1l = 0.04004; + _g5b1_var._parameters.w2l = 0.04004; + _g5b1_var._parameters.linwl = 0; + _g5b1_var._parameters.loutwl = 0; + _g5b1_var._parameters.w1r = 0.04004; + _g5b1_var._parameters.w2r = 0.04004; + _g5b1_var._parameters.linwr = 0.0; + _g5b1_var._parameters.loutwr = 0; + _g5b1_var._parameters.h1u = 0.037105; + _g5b1_var._parameters.h2u = 0.002; + _g5b1_var._parameters.linhu = 19.005499999999998; + _g5b1_var._parameters.louthu = 14.994750000000003; + _g5b1_var._parameters.h1d = 0.037105; + _g5b1_var._parameters.h2d = 0.002; + _g5b1_var._parameters.linhd = 19.005499999999998; + _g5b1_var._parameters.louthd = 14.994750000000003; + _g5b1_var._parameters.l = 1.9997499999999988; + _g5b1_var._parameters.R0 = 0.99; + _g5b1_var._parameters.Qcxl = 0.023; + _g5b1_var._parameters.Qcxr = 0.023; + _g5b1_var._parameters.Qcyu = 0.023; + _g5b1_var._parameters.Qcyd = 0.023; + _g5b1_var._parameters.alphaxl = 1.8; + _g5b1_var._parameters.alphaxr = 1.8; + _g5b1_var._parameters.alphayu = 1.8; + _g5b1_var._parameters.alphayd = 1.8; + _g5b1_var._parameters.Wxr = 0.015; + _g5b1_var._parameters.Wxl = 0.015; + _g5b1_var._parameters.Wyu = 0.015; + _g5b1_var._parameters.Wyd = 0.015; + _g5b1_var._parameters.mxr = 2; + _g5b1_var._parameters.mxl = 2; + _g5b1_var._parameters.myu = 2; + _g5b1_var._parameters.myd = 2; + _g5b1_var._parameters.QcxrOW = 0.0217; + _g5b1_var._parameters.QcxlOW = 0.0217; + _g5b1_var._parameters.QcyuOW = 0.0217; + _g5b1_var._parameters.QcydOW = 0.0217; + _g5b1_var._parameters.alphaxlOW = 6.07; + _g5b1_var._parameters.alphaxrOW = 6.07; + _g5b1_var._parameters.alphayuOW = 6.07; + _g5b1_var._parameters.alphaydOW = 6.07; + _g5b1_var._parameters.WxrOW = 0.003; + _g5b1_var._parameters.WxlOW = 0.003; + _g5b1_var._parameters.WyuOW = 0.003; + _g5b1_var._parameters.WydOW = 0.003; + _g5b1_var._parameters.mxrOW = 0; + _g5b1_var._parameters.mxlOW = 0; + _g5b1_var._parameters.myuOW = 0; + _g5b1_var._parameters.mydOW = 0; + _g5b1_var._parameters.rwallthick = 0.001; + _g5b1_var._parameters.lwallthick = 0.001; + _g5b1_var._parameters.uwallthick = 0.001; + _g5b1_var._parameters.dwallthick = 0.001; + + + /* component g5b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b1_var._rotation_absolute); + rot_transpose(_fo_chopper_5_var._rotation_absolute, tr1); + rot_mul(_g5b1_var._rotation_absolute, tr1, _g5b1_var._rotation_relative); + _g5b1_var._rotation_is_identity = rot_test_identity(_g5b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.015499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_5_var._position_absolute, _g5b1_var._position_absolute); + _g5b1_var._position_relative = rot_apply(_g5b1_var._rotation_absolute, tc1); + } /* g5b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute); + instrument->_position_absolute[67] = _g5b1_var._position_absolute; + instrument->_position_relative[67] = _g5b1_var._position_relative; + _g5b1_var._position_relative_is_zero = coords_test_zero(_g5b1_var._position_relative); + instrument->counter_N[67] = instrument->counter_P[67] = instrument->counter_P2[67] = 0; + instrument->counter_AbsorbProp[67]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0066_g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "h1u", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "linhu", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "louthu", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "h1d", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "linhd", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "louthd", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b1_setpos */ + +/* component g5b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b2_setpos] component g5b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b2_var._name, "g5b2", 16384); + stracpy(_g5b2_var._type, "Guide_four_side", 16384); + _g5b2_var._index=68; + int current_setpos_index = 68; + _g5b2_var._parameters.RIreflect[0]='\0'; + _g5b2_var._parameters.LIreflect[0]='\0'; + _g5b2_var._parameters.UIreflect[0]='\0'; + _g5b2_var._parameters.DIreflect[0]='\0'; + _g5b2_var._parameters.ROreflect[0]='\0'; + _g5b2_var._parameters.LOreflect[0]='\0'; + _g5b2_var._parameters.UOreflect[0]='\0'; + _g5b2_var._parameters.DOreflect[0]='\0'; + _g5b2_var._parameters.w1l = 0.04004; + _g5b2_var._parameters.w2l = 0.04004; + _g5b2_var._parameters.linwl = 0; + _g5b2_var._parameters.loutwl = 0; + _g5b2_var._parameters.w1r = 0.04004; + _g5b2_var._parameters.w2r = 0.04004; + _g5b2_var._parameters.linwr = 0.0; + _g5b2_var._parameters.loutwr = 0; + _g5b2_var._parameters.h1u = 0.036645; + _g5b2_var._parameters.h2u = 0.002; + _g5b2_var._parameters.linhu = 21.00575; + _g5b2_var._parameters.louthu = 12.994950000000003; + _g5b2_var._parameters.h1d = 0.036645; + _g5b2_var._parameters.h2d = 0.002; + _g5b2_var._parameters.linhd = 21.00575; + _g5b2_var._parameters.louthd = 12.994950000000003; + _g5b2_var._parameters.l = 1.999299999999998; + _g5b2_var._parameters.R0 = 0.99; + _g5b2_var._parameters.Qcxl = 0.0221; + _g5b2_var._parameters.Qcxr = 0.0221; + _g5b2_var._parameters.Qcyu = 0.023; + _g5b2_var._parameters.Qcyd = 0.023; + _g5b2_var._parameters.alphaxl = 1.75; + _g5b2_var._parameters.alphaxr = 1.75; + _g5b2_var._parameters.alphayu = 1.8; + _g5b2_var._parameters.alphayd = 1.8; + _g5b2_var._parameters.Wxr = 0.015; + _g5b2_var._parameters.Wxl = 0.015; + _g5b2_var._parameters.Wyu = 0.015; + _g5b2_var._parameters.Wyd = 0.015; + _g5b2_var._parameters.mxr = 2.5; + _g5b2_var._parameters.mxl = 2.5; + _g5b2_var._parameters.myu = 2; + _g5b2_var._parameters.myd = 2; + _g5b2_var._parameters.QcxrOW = 0.0217; + _g5b2_var._parameters.QcxlOW = 0.0217; + _g5b2_var._parameters.QcyuOW = 0.0217; + _g5b2_var._parameters.QcydOW = 0.0217; + _g5b2_var._parameters.alphaxlOW = 6.07; + _g5b2_var._parameters.alphaxrOW = 6.07; + _g5b2_var._parameters.alphayuOW = 6.07; + _g5b2_var._parameters.alphaydOW = 6.07; + _g5b2_var._parameters.WxrOW = 0.003; + _g5b2_var._parameters.WxlOW = 0.003; + _g5b2_var._parameters.WyuOW = 0.003; + _g5b2_var._parameters.WydOW = 0.003; + _g5b2_var._parameters.mxrOW = 0; + _g5b2_var._parameters.mxlOW = 0; + _g5b2_var._parameters.myuOW = 0; + _g5b2_var._parameters.mydOW = 0; + _g5b2_var._parameters.rwallthick = 0.001; + _g5b2_var._parameters.lwallthick = 0.001; + _g5b2_var._parameters.uwallthick = 0.001; + _g5b2_var._parameters.dwallthick = 0.001; + + + /* component g5b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b2_var._rotation_absolute); + rot_transpose(_g5b1_var._rotation_absolute, tr1); + rot_mul(_g5b2_var._rotation_absolute, tr1, _g5b2_var._rotation_relative); + _g5b2_var._rotation_is_identity = rot_test_identity(_g5b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 35.01575); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b1_var._position_absolute, _g5b2_var._position_absolute); + _g5b2_var._position_relative = rot_apply(_g5b2_var._rotation_absolute, tc1); + } /* g5b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute); + instrument->_position_absolute[68] = _g5b2_var._position_absolute; + instrument->_position_relative[68] = _g5b2_var._position_relative; + _g5b2_var._position_relative_is_zero = coords_test_zero(_g5b2_var._position_relative); + instrument->counter_N[68] = instrument->counter_P[68] = instrument->counter_P2[68] = 0; + instrument->counter_AbsorbProp[68]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0067_g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "h1u", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "linhu", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "louthu", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "h1d", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "linhd", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "louthd", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "l", "0", "1.999299999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b2_setpos */ + +/* component g5b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b3_setpos] component g5b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b3_var._name, "g5b3", 16384); + stracpy(_g5b3_var._type, "Guide_four_side", 16384); + _g5b3_var._index=69; + int current_setpos_index = 69; + _g5b3_var._parameters.RIreflect[0]='\0'; + _g5b3_var._parameters.LIreflect[0]='\0'; + _g5b3_var._parameters.UIreflect[0]='\0'; + _g5b3_var._parameters.DIreflect[0]='\0'; + _g5b3_var._parameters.ROreflect[0]='\0'; + _g5b3_var._parameters.LOreflect[0]='\0'; + _g5b3_var._parameters.UOreflect[0]='\0'; + _g5b3_var._parameters.DOreflect[0]='\0'; + _g5b3_var._parameters.w1l = 0.04004; + _g5b3_var._parameters.w2l = 0.04004; + _g5b3_var._parameters.linwl = 0; + _g5b3_var._parameters.loutwl = 0; + _g5b3_var._parameters.w1r = 0.04004; + _g5b3_var._parameters.w2r = 0.04004; + _g5b3_var._parameters.linwr = 0.0; + _g5b3_var._parameters.loutwr = 0; + _g5b3_var._parameters.h1u = 0.035695; + _g5b3_var._parameters.h2u = 0.002; + _g5b3_var._parameters.linhu = 23.009500000000003; + _g5b3_var._parameters.louthu = 10.990749999999998; + _g5b3_var._parameters.h1d = 0.035695; + _g5b3_var._parameters.h2d = 0.002; + _g5b3_var._parameters.linhd = 23.009500000000003; + _g5b3_var._parameters.louthd = 10.990749999999998; + _g5b3_var._parameters.l = 1.9997499999999988; + _g5b3_var._parameters.R0 = 0.99; + _g5b3_var._parameters.Qcxl = 0.0221; + _g5b3_var._parameters.Qcxr = 0.0221; + _g5b3_var._parameters.Qcyu = 0.023; + _g5b3_var._parameters.Qcyd = 0.023; + _g5b3_var._parameters.alphaxl = 1.75; + _g5b3_var._parameters.alphaxr = 1.75; + _g5b3_var._parameters.alphayu = 1.8; + _g5b3_var._parameters.alphayd = 1.8; + _g5b3_var._parameters.Wxr = 0.015; + _g5b3_var._parameters.Wxl = 0.015; + _g5b3_var._parameters.Wyu = 0.015; + _g5b3_var._parameters.Wyd = 0.015; + _g5b3_var._parameters.mxr = 2.5; + _g5b3_var._parameters.mxl = 2.5; + _g5b3_var._parameters.myu = 2; + _g5b3_var._parameters.myd = 2; + _g5b3_var._parameters.QcxrOW = 0.0217; + _g5b3_var._parameters.QcxlOW = 0.0217; + _g5b3_var._parameters.QcyuOW = 0.0217; + _g5b3_var._parameters.QcydOW = 0.0217; + _g5b3_var._parameters.alphaxlOW = 6.07; + _g5b3_var._parameters.alphaxrOW = 6.07; + _g5b3_var._parameters.alphayuOW = 6.07; + _g5b3_var._parameters.alphaydOW = 6.07; + _g5b3_var._parameters.WxrOW = 0.003; + _g5b3_var._parameters.WxlOW = 0.003; + _g5b3_var._parameters.WyuOW = 0.003; + _g5b3_var._parameters.WydOW = 0.003; + _g5b3_var._parameters.mxrOW = 0; + _g5b3_var._parameters.mxlOW = 0; + _g5b3_var._parameters.myuOW = 0; + _g5b3_var._parameters.mydOW = 0; + _g5b3_var._parameters.rwallthick = 0.001; + _g5b3_var._parameters.lwallthick = 0.001; + _g5b3_var._parameters.uwallthick = 0.001; + _g5b3_var._parameters.dwallthick = 0.001; + + + /* component g5b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b3_var._rotation_absolute); + rot_transpose(_g5b2_var._rotation_absolute, tr1); + rot_mul(_g5b3_var._rotation_absolute, tr1, _g5b3_var._rotation_relative); + _g5b3_var._rotation_is_identity = rot_test_identity(_g5b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 37.0195); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b2_var._position_absolute, _g5b3_var._position_absolute); + _g5b3_var._position_relative = rot_apply(_g5b3_var._rotation_absolute, tc1); + } /* g5b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute); + instrument->_position_absolute[69] = _g5b3_var._position_absolute; + instrument->_position_relative[69] = _g5b3_var._position_relative; + _g5b3_var._position_relative_is_zero = coords_test_zero(_g5b3_var._position_relative); + instrument->counter_N[69] = instrument->counter_P[69] = instrument->counter_P2[69] = 0; + instrument->counter_AbsorbProp[69]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0068_g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "h1u", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "linhu", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "louthu", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "h1d", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "linhd", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "louthd", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b3_setpos */ + +/* component g5b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b4_setpos] component g5b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b4_var._name, "g5b4", 16384); + stracpy(_g5b4_var._type, "Guide_four_side", 16384); + _g5b4_var._index=70; + int current_setpos_index = 70; + _g5b4_var._parameters.RIreflect[0]='\0'; + _g5b4_var._parameters.LIreflect[0]='\0'; + _g5b4_var._parameters.UIreflect[0]='\0'; + _g5b4_var._parameters.DIreflect[0]='\0'; + _g5b4_var._parameters.ROreflect[0]='\0'; + _g5b4_var._parameters.LOreflect[0]='\0'; + _g5b4_var._parameters.UOreflect[0]='\0'; + _g5b4_var._parameters.DOreflect[0]='\0'; + _g5b4_var._parameters.w1l = 0.04004; + _g5b4_var._parameters.w2l = 0.04004; + _g5b4_var._parameters.linwl = 0; + _g5b4_var._parameters.loutwl = 0; + _g5b4_var._parameters.w1r = 0.04004; + _g5b4_var._parameters.w2r = 0.04004; + _g5b4_var._parameters.linwr = 0.0; + _g5b4_var._parameters.loutwr = 0; + _g5b4_var._parameters.h1u = 0.03423; + _g5b4_var._parameters.h2u = 0.002; + _g5b4_var._parameters.linhu = 25.009749999999997; + _g5b4_var._parameters.louthu = 8.990499999999997; + _g5b4_var._parameters.h1d = 0.03423; + _g5b4_var._parameters.h2d = 0.002; + _g5b4_var._parameters.linhd = 25.009749999999997; + _g5b4_var._parameters.louthd = 8.990499999999997; + _g5b4_var._parameters.l = 1.999750000000006; + _g5b4_var._parameters.R0 = 0.99; + _g5b4_var._parameters.Qcxl = 0.0221; + _g5b4_var._parameters.Qcxr = 0.0221; + _g5b4_var._parameters.Qcyu = 0.023; + _g5b4_var._parameters.Qcyd = 0.023; + _g5b4_var._parameters.alphaxl = 1.75; + _g5b4_var._parameters.alphaxr = 1.75; + _g5b4_var._parameters.alphayu = 1.8; + _g5b4_var._parameters.alphayd = 1.8; + _g5b4_var._parameters.Wxr = 0.015; + _g5b4_var._parameters.Wxl = 0.015; + _g5b4_var._parameters.Wyu = 0.015; + _g5b4_var._parameters.Wyd = 0.015; + _g5b4_var._parameters.mxr = 3.0; + _g5b4_var._parameters.mxl = 3.0; + _g5b4_var._parameters.myu = 2; + _g5b4_var._parameters.myd = 2; + _g5b4_var._parameters.QcxrOW = 0.0217; + _g5b4_var._parameters.QcxlOW = 0.0217; + _g5b4_var._parameters.QcyuOW = 0.0217; + _g5b4_var._parameters.QcydOW = 0.0217; + _g5b4_var._parameters.alphaxlOW = 6.07; + _g5b4_var._parameters.alphaxrOW = 6.07; + _g5b4_var._parameters.alphayuOW = 6.07; + _g5b4_var._parameters.alphaydOW = 6.07; + _g5b4_var._parameters.WxrOW = 0.003; + _g5b4_var._parameters.WxlOW = 0.003; + _g5b4_var._parameters.WyuOW = 0.003; + _g5b4_var._parameters.WydOW = 0.003; + _g5b4_var._parameters.mxrOW = 0; + _g5b4_var._parameters.mxlOW = 0; + _g5b4_var._parameters.myuOW = 0; + _g5b4_var._parameters.mydOW = 0; + _g5b4_var._parameters.rwallthick = 0.001; + _g5b4_var._parameters.lwallthick = 0.001; + _g5b4_var._parameters.uwallthick = 0.001; + _g5b4_var._parameters.dwallthick = 0.001; + + + /* component g5b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b4_var._rotation_absolute); + rot_transpose(_g5b3_var._rotation_absolute, tr1); + rot_mul(_g5b4_var._rotation_absolute, tr1, _g5b4_var._rotation_relative); + _g5b4_var._rotation_is_identity = rot_test_identity(_g5b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 39.019749999999995); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b3_var._position_absolute, _g5b4_var._position_absolute); + _g5b4_var._position_relative = rot_apply(_g5b4_var._rotation_absolute, tc1); + } /* g5b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute); + instrument->_position_absolute[70] = _g5b4_var._position_absolute; + instrument->_position_relative[70] = _g5b4_var._position_relative; + _g5b4_var._position_relative_is_zero = coords_test_zero(_g5b4_var._position_relative); + instrument->counter_N[70] = instrument->counter_P[70] = instrument->counter_P2[70] = 0; + instrument->counter_AbsorbProp[70]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0069_g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "h1u", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "linhu", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "louthu", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "h1d", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "linhd", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "louthd", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "l", "0", "1.999750000000006","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b4_setpos */ + +/* component g5b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b5_setpos] component g5b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b5_var._name, "g5b5", 16384); + stracpy(_g5b5_var._type, "Guide_four_side", 16384); + _g5b5_var._index=71; + int current_setpos_index = 71; + _g5b5_var._parameters.RIreflect[0]='\0'; + _g5b5_var._parameters.LIreflect[0]='\0'; + _g5b5_var._parameters.UIreflect[0]='\0'; + _g5b5_var._parameters.DIreflect[0]='\0'; + _g5b5_var._parameters.ROreflect[0]='\0'; + _g5b5_var._parameters.LOreflect[0]='\0'; + _g5b5_var._parameters.UOreflect[0]='\0'; + _g5b5_var._parameters.DOreflect[0]='\0'; + _g5b5_var._parameters.w1l = 0.04004; + _g5b5_var._parameters.w2l = 0.04004; + _g5b5_var._parameters.linwl = 0; + _g5b5_var._parameters.loutwl = 0; + _g5b5_var._parameters.w1r = 0.04004; + _g5b5_var._parameters.w2r = 0.04004; + _g5b5_var._parameters.linwr = 0.0; + _g5b5_var._parameters.loutwr = 0; + _g5b5_var._parameters.h1u = 0.03217; + _g5b5_var._parameters.h2u = 0.002; + _g5b5_var._parameters.linhu = 27.0135; + _g5b5_var._parameters.louthu = 6.986750000000001; + _g5b5_var._parameters.h1d = 0.03217; + _g5b5_var._parameters.h2d = 0.002; + _g5b5_var._parameters.linhd = 27.0135; + _g5b5_var._parameters.louthd = 6.986750000000001; + _g5b5_var._parameters.l = 1.9997499999999988; + _g5b5_var._parameters.R0 = 0.99; + _g5b5_var._parameters.Qcxl = 0.0221; + _g5b5_var._parameters.Qcxr = 0.0221; + _g5b5_var._parameters.Qcyu = 0.0221; + _g5b5_var._parameters.Qcyd = 0.0221; + _g5b5_var._parameters.alphaxl = 1.75; + _g5b5_var._parameters.alphaxr = 1.75; + _g5b5_var._parameters.alphayu = 1.75; + _g5b5_var._parameters.alphayd = 1.75; + _g5b5_var._parameters.Wxr = 0.015; + _g5b5_var._parameters.Wxl = 0.015; + _g5b5_var._parameters.Wyu = 0.015; + _g5b5_var._parameters.Wyd = 0.015; + _g5b5_var._parameters.mxr = 3.0; + _g5b5_var._parameters.mxl = 3.0; + _g5b5_var._parameters.myu = 2.5; + _g5b5_var._parameters.myd = 2.5; + _g5b5_var._parameters.QcxrOW = 0.0217; + _g5b5_var._parameters.QcxlOW = 0.0217; + _g5b5_var._parameters.QcyuOW = 0.0217; + _g5b5_var._parameters.QcydOW = 0.0217; + _g5b5_var._parameters.alphaxlOW = 6.07; + _g5b5_var._parameters.alphaxrOW = 6.07; + _g5b5_var._parameters.alphayuOW = 6.07; + _g5b5_var._parameters.alphaydOW = 6.07; + _g5b5_var._parameters.WxrOW = 0.003; + _g5b5_var._parameters.WxlOW = 0.003; + _g5b5_var._parameters.WyuOW = 0.003; + _g5b5_var._parameters.WydOW = 0.003; + _g5b5_var._parameters.mxrOW = 0; + _g5b5_var._parameters.mxlOW = 0; + _g5b5_var._parameters.myuOW = 0; + _g5b5_var._parameters.mydOW = 0; + _g5b5_var._parameters.rwallthick = 0.001; + _g5b5_var._parameters.lwallthick = 0.001; + _g5b5_var._parameters.uwallthick = 0.001; + _g5b5_var._parameters.dwallthick = 0.001; + + + /* component g5b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b5_var._rotation_absolute); + rot_transpose(_g5b4_var._rotation_absolute, tr1); + rot_mul(_g5b5_var._rotation_absolute, tr1, _g5b5_var._rotation_relative); + _g5b5_var._rotation_is_identity = rot_test_identity(_g5b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 41.0235); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b4_var._position_absolute, _g5b5_var._position_absolute); + _g5b5_var._position_relative = rot_apply(_g5b5_var._rotation_absolute, tc1); + } /* g5b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute); + instrument->_position_absolute[71] = _g5b5_var._position_absolute; + instrument->_position_relative[71] = _g5b5_var._position_relative; + _g5b5_var._position_relative_is_zero = coords_test_zero(_g5b5_var._position_relative); + instrument->counter_N[71] = instrument->counter_P[71] = instrument->counter_P2[71] = 0; + instrument->counter_AbsorbProp[71]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0070_g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "h1u", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "linhu", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "louthu", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "h1d", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "linhd", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "louthd", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b5_setpos */ + +/* component g5b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b6_setpos] component g5b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b6_var._name, "g5b6", 16384); + stracpy(_g5b6_var._type, "Guide_four_side", 16384); + _g5b6_var._index=72; + int current_setpos_index = 72; + _g5b6_var._parameters.RIreflect[0]='\0'; + _g5b6_var._parameters.LIreflect[0]='\0'; + _g5b6_var._parameters.UIreflect[0]='\0'; + _g5b6_var._parameters.DIreflect[0]='\0'; + _g5b6_var._parameters.ROreflect[0]='\0'; + _g5b6_var._parameters.LOreflect[0]='\0'; + _g5b6_var._parameters.UOreflect[0]='\0'; + _g5b6_var._parameters.DOreflect[0]='\0'; + _g5b6_var._parameters.w1l = 0.04004; + _g5b6_var._parameters.w2l = 0.04004; + _g5b6_var._parameters.linwl = 0; + _g5b6_var._parameters.loutwl = 0; + _g5b6_var._parameters.w1r = 0.04004; + _g5b6_var._parameters.w2r = 0.04004; + _g5b6_var._parameters.linwr = 0.0; + _g5b6_var._parameters.loutwr = 0; + _g5b6_var._parameters.h1u = 0.029395; + _g5b6_var._parameters.h2u = 0.002; + _g5b6_var._parameters.linhu = 29.01375; + _g5b6_var._parameters.louthu = 6.5; + _g5b6_var._parameters.h1d = 0.029395; + _g5b6_var._parameters.h2d = 0.002; + _g5b6_var._parameters.linhd = 29.01375; + _g5b6_var._parameters.louthd = 6.5; + _g5b6_var._parameters.l = 0.4862499999999983; + _g5b6_var._parameters.R0 = 0.99; + _g5b6_var._parameters.Qcxl = 0.0221; + _g5b6_var._parameters.Qcxr = 0.0221; + _g5b6_var._parameters.Qcyu = 0.0221; + _g5b6_var._parameters.Qcyd = 0.0221; + _g5b6_var._parameters.alphaxl = 1.75; + _g5b6_var._parameters.alphaxr = 1.75; + _g5b6_var._parameters.alphayu = 1.75; + _g5b6_var._parameters.alphayd = 1.75; + _g5b6_var._parameters.Wxr = 0.015; + _g5b6_var._parameters.Wxl = 0.015; + _g5b6_var._parameters.Wyu = 0.015; + _g5b6_var._parameters.Wyd = 0.015; + _g5b6_var._parameters.mxr = 3.0; + _g5b6_var._parameters.mxl = 3.0; + _g5b6_var._parameters.myu = 2.5; + _g5b6_var._parameters.myd = 2.5; + _g5b6_var._parameters.QcxrOW = 0.0217; + _g5b6_var._parameters.QcxlOW = 0.0217; + _g5b6_var._parameters.QcyuOW = 0.0217; + _g5b6_var._parameters.QcydOW = 0.0217; + _g5b6_var._parameters.alphaxlOW = 6.07; + _g5b6_var._parameters.alphaxrOW = 6.07; + _g5b6_var._parameters.alphayuOW = 6.07; + _g5b6_var._parameters.alphaydOW = 6.07; + _g5b6_var._parameters.WxrOW = 0.003; + _g5b6_var._parameters.WxlOW = 0.003; + _g5b6_var._parameters.WyuOW = 0.003; + _g5b6_var._parameters.WydOW = 0.003; + _g5b6_var._parameters.mxrOW = 0; + _g5b6_var._parameters.mxlOW = 0; + _g5b6_var._parameters.myuOW = 0; + _g5b6_var._parameters.mydOW = 0; + _g5b6_var._parameters.rwallthick = 0.001; + _g5b6_var._parameters.lwallthick = 0.001; + _g5b6_var._parameters.uwallthick = 0.001; + _g5b6_var._parameters.dwallthick = 0.001; + + + /* component g5b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b6_var._rotation_absolute); + rot_transpose(_g5b5_var._rotation_absolute, tr1); + rot_mul(_g5b6_var._rotation_absolute, tr1, _g5b6_var._rotation_relative); + _g5b6_var._rotation_is_identity = rot_test_identity(_g5b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.02375); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b5_var._position_absolute, _g5b6_var._position_absolute); + _g5b6_var._position_relative = rot_apply(_g5b6_var._rotation_absolute, tc1); + } /* g5b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute); + instrument->_position_absolute[72] = _g5b6_var._position_absolute; + instrument->_position_relative[72] = _g5b6_var._position_relative; + _g5b6_var._position_relative_is_zero = coords_test_zero(_g5b6_var._position_relative); + instrument->counter_N[72] = instrument->counter_P[72] = instrument->counter_P2[72] = 0; + instrument->counter_AbsorbProp[72]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0071_g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "h1u", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "linhu", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "louthu", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "h1d", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "linhd", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "louthd", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "l", "0", "0.4862499999999983","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b6_setpos */ + +/* component g6a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a1_setpos] component g6a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a1_var._name, "g6a1", 16384); + stracpy(_g6a1_var._type, "Guide_four_side", 16384); + _g6a1_var._index=73; + int current_setpos_index = 73; + _g6a1_var._parameters.RIreflect[0]='\0'; + _g6a1_var._parameters.LIreflect[0]='\0'; + _g6a1_var._parameters.UIreflect[0]='\0'; + _g6a1_var._parameters.DIreflect[0]='\0'; + _g6a1_var._parameters.ROreflect[0]='\0'; + _g6a1_var._parameters.LOreflect[0]='\0'; + _g6a1_var._parameters.UOreflect[0]='\0'; + _g6a1_var._parameters.DOreflect[0]='\0'; + _g6a1_var._parameters.w1l = 0.04004; + _g6a1_var._parameters.w2l = 0.002; + _g6a1_var._parameters.linwl = 6.5; + _g6a1_var._parameters.loutwl = 4.9864999999999995; + _g6a1_var._parameters.w1r = 0.04004; + _g6a1_var._parameters.w2r = 0.002; + _g6a1_var._parameters.linwr = 6.5; + _g6a1_var._parameters.loutwr = 4.9864999999999995; + _g6a1_var._parameters.h1u = 0.02859; + _g6a1_var._parameters.h2u = 0.002; + _g6a1_var._parameters.linhu = 29.5; + _g6a1_var._parameters.louthu = 4.9864999999999995; + _g6a1_var._parameters.h1d = 0.02859; + _g6a1_var._parameters.h2d = 0.002; + _g6a1_var._parameters.linhd = 29.5; + _g6a1_var._parameters.louthd = 4.9864999999999995; + _g6a1_var._parameters.l = 1.5135000000000005; + _g6a1_var._parameters.R0 = 0.99; + _g6a1_var._parameters.Qcxl = 0.0217; + _g6a1_var._parameters.Qcxr = 0.0217; + _g6a1_var._parameters.Qcyu = 0.0221; + _g6a1_var._parameters.Qcyd = 0.0221; + _g6a1_var._parameters.alphaxl = 2.5; + _g6a1_var._parameters.alphaxr = 2.5; + _g6a1_var._parameters.alphayu = 1.75; + _g6a1_var._parameters.alphayd = 1.75; + _g6a1_var._parameters.Wxr = 0.015; + _g6a1_var._parameters.Wxl = 0.015; + _g6a1_var._parameters.Wyu = 0.015; + _g6a1_var._parameters.Wyd = 0.015; + _g6a1_var._parameters.mxr = 3.5; + _g6a1_var._parameters.mxl = 3.5; + _g6a1_var._parameters.myu = 2.5; + _g6a1_var._parameters.myd = 2.5; + _g6a1_var._parameters.QcxrOW = 0.0217; + _g6a1_var._parameters.QcxlOW = 0.0217; + _g6a1_var._parameters.QcyuOW = 0.0217; + _g6a1_var._parameters.QcydOW = 0.0217; + _g6a1_var._parameters.alphaxlOW = 6.07; + _g6a1_var._parameters.alphaxrOW = 6.07; + _g6a1_var._parameters.alphayuOW = 6.07; + _g6a1_var._parameters.alphaydOW = 6.07; + _g6a1_var._parameters.WxrOW = 0.003; + _g6a1_var._parameters.WxlOW = 0.003; + _g6a1_var._parameters.WyuOW = 0.003; + _g6a1_var._parameters.WydOW = 0.003; + _g6a1_var._parameters.mxrOW = 0; + _g6a1_var._parameters.mxlOW = 0; + _g6a1_var._parameters.myuOW = 0; + _g6a1_var._parameters.mydOW = 0; + _g6a1_var._parameters.rwallthick = 0.001; + _g6a1_var._parameters.lwallthick = 0.001; + _g6a1_var._parameters.uwallthick = 0.001; + _g6a1_var._parameters.dwallthick = 0.001; + + + /* component g6a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a1_var._rotation_absolute); + rot_transpose(_g5b6_var._rotation_absolute, tr1); + rot_mul(_g6a1_var._rotation_absolute, tr1, _g6a1_var._rotation_relative); + _g6a1_var._rotation_is_identity = rot_test_identity(_g6a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.51); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b6_var._position_absolute, _g6a1_var._position_absolute); + _g6a1_var._position_relative = rot_apply(_g6a1_var._rotation_absolute, tc1); + } /* g6a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute); + instrument->_position_absolute[73] = _g6a1_var._position_absolute; + instrument->_position_relative[73] = _g6a1_var._position_relative; + _g6a1_var._position_relative_is_zero = coords_test_zero(_g6a1_var._position_relative); + instrument->counter_N[73] = instrument->counter_P[73] = instrument->counter_P2[73] = 0; + instrument->counter_AbsorbProp[73]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0072_g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "linwl", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "loutwl", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "linwr", "0.0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "loutwr", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "h1u", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "linhu", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "louthu", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "h1d", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "linhd", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "louthd", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "l", "0", "1.5135000000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a1_setpos */ + +/* component g6a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a2_setpos] component g6a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a2_var._name, "g6a2", 16384); + stracpy(_g6a2_var._type, "Guide_four_side", 16384); + _g6a2_var._index=74; + int current_setpos_index = 74; + _g6a2_var._parameters.RIreflect[0]='\0'; + _g6a2_var._parameters.LIreflect[0]='\0'; + _g6a2_var._parameters.UIreflect[0]='\0'; + _g6a2_var._parameters.DIreflect[0]='\0'; + _g6a2_var._parameters.ROreflect[0]='\0'; + _g6a2_var._parameters.LOreflect[0]='\0'; + _g6a2_var._parameters.UOreflect[0]='\0'; + _g6a2_var._parameters.DOreflect[0]='\0'; + _g6a2_var._parameters.w1l = 0.038935; + _g6a2_var._parameters.w2l = 0.002; + _g6a2_var._parameters.linwl = 8.017499999999998; + _g6a2_var._parameters.loutwl = 2.982750000000003; + _g6a2_var._parameters.w1r = 0.038935; + _g6a2_var._parameters.w2r = 0.002; + _g6a2_var._parameters.linwr = 8.017499999999998; + _g6a2_var._parameters.loutwr = 2.982750000000003; + _g6a2_var._parameters.h1u = 0.02567; + _g6a2_var._parameters.h2u = 0.002; + _g6a2_var._parameters.linhu = 31.0175; + _g6a2_var._parameters.louthu = 2.982750000000003; + _g6a2_var._parameters.h1d = 0.02567; + _g6a2_var._parameters.h2d = 0.002; + _g6a2_var._parameters.linhd = 31.0175; + _g6a2_var._parameters.louthd = 2.982750000000003; + _g6a2_var._parameters.l = 1.9997499999999988; + _g6a2_var._parameters.R0 = 0.99; + _g6a2_var._parameters.Qcxl = 0.0217; + _g6a2_var._parameters.Qcxr = 0.0217; + _g6a2_var._parameters.Qcyu = 0.0221; + _g6a2_var._parameters.Qcyd = 0.0221; + _g6a2_var._parameters.alphaxl = 2.5; + _g6a2_var._parameters.alphaxr = 2.5; + _g6a2_var._parameters.alphayu = 1.75; + _g6a2_var._parameters.alphayd = 1.75; + _g6a2_var._parameters.Wxr = 0.015; + _g6a2_var._parameters.Wxl = 0.015; + _g6a2_var._parameters.Wyu = 0.015; + _g6a2_var._parameters.Wyd = 0.015; + _g6a2_var._parameters.mxr = 4; + _g6a2_var._parameters.mxl = 4; + _g6a2_var._parameters.myu = 3; + _g6a2_var._parameters.myd = 3; + _g6a2_var._parameters.QcxrOW = 0.0217; + _g6a2_var._parameters.QcxlOW = 0.0217; + _g6a2_var._parameters.QcyuOW = 0.0217; + _g6a2_var._parameters.QcydOW = 0.0217; + _g6a2_var._parameters.alphaxlOW = 6.07; + _g6a2_var._parameters.alphaxrOW = 6.07; + _g6a2_var._parameters.alphayuOW = 6.07; + _g6a2_var._parameters.alphaydOW = 6.07; + _g6a2_var._parameters.WxrOW = 0.003; + _g6a2_var._parameters.WxlOW = 0.003; + _g6a2_var._parameters.WyuOW = 0.003; + _g6a2_var._parameters.WydOW = 0.003; + _g6a2_var._parameters.mxrOW = 0; + _g6a2_var._parameters.mxlOW = 0; + _g6a2_var._parameters.myuOW = 0; + _g6a2_var._parameters.mydOW = 0; + _g6a2_var._parameters.rwallthick = 0.001; + _g6a2_var._parameters.lwallthick = 0.001; + _g6a2_var._parameters.uwallthick = 0.001; + _g6a2_var._parameters.dwallthick = 0.001; + + + /* component g6a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a2_var._rotation_absolute); + rot_transpose(_g6a1_var._rotation_absolute, tr1); + rot_mul(_g6a2_var._rotation_absolute, tr1, _g6a2_var._rotation_relative); + _g6a2_var._rotation_is_identity = rot_test_identity(_g6a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 45.027499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a1_var._position_absolute, _g6a2_var._position_absolute); + _g6a2_var._position_relative = rot_apply(_g6a2_var._rotation_absolute, tc1); + } /* g6a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute); + instrument->_position_absolute[74] = _g6a2_var._position_absolute; + instrument->_position_relative[74] = _g6a2_var._position_relative; + _g6a2_var._position_relative_is_zero = coords_test_zero(_g6a2_var._position_relative); + instrument->counter_N[74] = instrument->counter_P[74] = instrument->counter_P2[74] = 0; + instrument->counter_AbsorbProp[74]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0073_g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "w1l", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "linwl", "0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "loutwl", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "w1r", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "linwr", "0.0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "loutwr", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "h1u", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "linhu", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "louthu", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "h1d", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "linhd", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "louthd", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a2_setpos */ + +/* component g6a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a3_setpos] component g6a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a3_var._name, "g6a3", 16384); + stracpy(_g6a3_var._type, "Guide_four_side", 16384); + _g6a3_var._index=75; + int current_setpos_index = 75; + _g6a3_var._parameters.RIreflect[0]='\0'; + _g6a3_var._parameters.LIreflect[0]='\0'; + _g6a3_var._parameters.UIreflect[0]='\0'; + _g6a3_var._parameters.DIreflect[0]='\0'; + _g6a3_var._parameters.ROreflect[0]='\0'; + _g6a3_var._parameters.LOreflect[0]='\0'; + _g6a3_var._parameters.UOreflect[0]='\0'; + _g6a3_var._parameters.DOreflect[0]='\0'; + _g6a3_var._parameters.w1l = 0.03367; + _g6a3_var._parameters.w2l = 0.002; + _g6a3_var._parameters.linwl = 10.01775; + _g6a3_var._parameters.loutwl = 1.0; + _g6a3_var._parameters.w1r = 0.03367; + _g6a3_var._parameters.w2r = 0.002; + _g6a3_var._parameters.linwr = 10.01775; + _g6a3_var._parameters.loutwr = 1.0; + _g6a3_var._parameters.h1u = 0.02049; + _g6a3_var._parameters.h2u = 0.002; + _g6a3_var._parameters.linhu = 33.01775; + _g6a3_var._parameters.louthu = 1.0; + _g6a3_var._parameters.h1d = 0.02049; + _g6a3_var._parameters.h2d = 0.002; + _g6a3_var._parameters.linhd = 33.01775; + _g6a3_var._parameters.louthd = 1.0; + _g6a3_var._parameters.l = 1.9822500000000005; + _g6a3_var._parameters.R0 = 0.99; + _g6a3_var._parameters.Qcxl = 0.0217; + _g6a3_var._parameters.Qcxr = 0.0217; + _g6a3_var._parameters.Qcyu = 0.0217; + _g6a3_var._parameters.Qcyd = 0.0217; + _g6a3_var._parameters.alphaxl = 2.5; + _g6a3_var._parameters.alphaxr = 2.5; + _g6a3_var._parameters.alphayu = 2.5; + _g6a3_var._parameters.alphayd = 2.5; + _g6a3_var._parameters.Wxr = 0.015; + _g6a3_var._parameters.Wxl = 0.015; + _g6a3_var._parameters.Wyu = 0.015; + _g6a3_var._parameters.Wyd = 0.015; + _g6a3_var._parameters.mxr = 4; + _g6a3_var._parameters.mxl = 4; + _g6a3_var._parameters.myu = 4; + _g6a3_var._parameters.myd = 4; + _g6a3_var._parameters.QcxrOW = 0.0217; + _g6a3_var._parameters.QcxlOW = 0.0217; + _g6a3_var._parameters.QcyuOW = 0.0217; + _g6a3_var._parameters.QcydOW = 0.0217; + _g6a3_var._parameters.alphaxlOW = 6.07; + _g6a3_var._parameters.alphaxrOW = 6.07; + _g6a3_var._parameters.alphayuOW = 6.07; + _g6a3_var._parameters.alphaydOW = 6.07; + _g6a3_var._parameters.WxrOW = 0.003; + _g6a3_var._parameters.WxlOW = 0.003; + _g6a3_var._parameters.WyuOW = 0.003; + _g6a3_var._parameters.WydOW = 0.003; + _g6a3_var._parameters.mxrOW = 0; + _g6a3_var._parameters.mxlOW = 0; + _g6a3_var._parameters.myuOW = 0; + _g6a3_var._parameters.mydOW = 0; + _g6a3_var._parameters.rwallthick = 0.001; + _g6a3_var._parameters.lwallthick = 0.001; + _g6a3_var._parameters.uwallthick = 0.001; + _g6a3_var._parameters.dwallthick = 0.001; + + + /* component g6a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a3_var._rotation_absolute); + rot_transpose(_g6a2_var._rotation_absolute, tr1); + rot_mul(_g6a3_var._rotation_absolute, tr1, _g6a3_var._rotation_relative); + _g6a3_var._rotation_is_identity = rot_test_identity(_g6a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 47.02775); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a2_var._position_absolute, _g6a3_var._position_absolute); + _g6a3_var._position_relative = rot_apply(_g6a3_var._rotation_absolute, tc1); + } /* g6a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute); + instrument->_position_absolute[75] = _g6a3_var._position_absolute; + instrument->_position_relative[75] = _g6a3_var._position_relative; + _g6a3_var._position_relative_is_zero = coords_test_zero(_g6a3_var._position_relative); + instrument->counter_N[75] = instrument->counter_P[75] = instrument->counter_P2[75] = 0; + instrument->counter_AbsorbProp[75]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0074_g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "w1l", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "linwl", "0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "loutwl", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "w1r", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "linwr", "0.0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "loutwr", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "h1u", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "linhu", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "louthu", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "h1d", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "linhd", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "louthd", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "l", "0", "1.9822500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a3_setpos */ + +/* component guide_end=Arm() SETTING, POSITION/ROTATION */ +int _guide_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_guide_end_setpos] component guide_end=Arm() SETTING [Arm:0]"); + stracpy(_guide_end_var._name, "guide_end", 16384); + stracpy(_guide_end_var._type, "Arm", 16384); + _guide_end_var._index=76; + int current_setpos_index = 76; + /* component guide_end=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _guide_end_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_guide_end_var._rotation_absolute, tr1, _guide_end_var._rotation_relative); + _guide_end_var._rotation_is_identity = rot_test_identity(_guide_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _guide_end_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _guide_end_var._position_absolute); + _guide_end_var._position_relative = rot_apply(_guide_end_var._rotation_absolute, tc1); + } /* guide_end=Arm() AT ROTATED */ + DEBUG_COMPONENT("guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute); + instrument->_position_absolute[76] = _guide_end_var._position_absolute; + instrument->_position_relative[76] = _guide_end_var._position_relative; + _guide_end_var._position_relative_is_zero = coords_test_zero(_guide_end_var._position_relative); + instrument->counter_N[76] = instrument->counter_P[76] = instrument->counter_P2[76] = 0; + instrument->counter_AbsorbProp[76]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0075_guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _guide_end_setpos */ + +/* component monitor_3_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_3_position_setpos] component monitor_3_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_3_position_var._name, "monitor_3_position", 16384); + stracpy(_monitor_3_position_var._type, "Arm", 16384); + _monitor_3_position_var._index=77; + int current_setpos_index = 77; + /* component monitor_3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_3_position_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_monitor_3_position_var._rotation_absolute, tr1, _monitor_3_position_var._rotation_relative); + _monitor_3_position_var._rotation_is_identity = rot_test_identity(_monitor_3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _monitor_3_position_var._position_absolute); + _monitor_3_position_var._position_relative = rot_apply(_monitor_3_position_var._rotation_absolute, tc1); + } /* monitor_3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute); + instrument->_position_absolute[77] = _monitor_3_position_var._position_absolute; + instrument->_position_relative[77] = _monitor_3_position_var._position_relative; + _monitor_3_position_var._position_relative_is_zero = coords_test_zero(_monitor_3_position_var._position_relative); + instrument->counter_N[77] = instrument->counter_P[77] = instrument->counter_P2[77] = 0; + instrument->counter_AbsorbProp[77]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0076_monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_3_position_setpos */ + +/* component start_backend=Arm() SETTING, POSITION/ROTATION */ +int _start_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_start_backend_setpos] component start_backend=Arm() SETTING [Arm:0]"); + stracpy(_start_backend_var._name, "start_backend", 16384); + stracpy(_start_backend_var._type, "Arm", 16384); + _start_backend_var._index=78; + int current_setpos_index = 78; + /* component start_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _start_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_start_backend_var._rotation_absolute, tr1, _start_backend_var._rotation_relative); + _start_backend_var._rotation_is_identity = rot_test_identity(_start_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _start_backend_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _start_backend_var._position_absolute); + _start_backend_var._position_relative = rot_apply(_start_backend_var._rotation_absolute, tc1); + } /* start_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute); + instrument->_position_absolute[78] = _start_backend_var._position_absolute; + instrument->_position_relative[78] = _start_backend_var._position_relative; + _start_backend_var._position_relative_is_zero = coords_test_zero(_start_backend_var._position_relative); + instrument->counter_N[78] = instrument->counter_P[78] = instrument->counter_P2[78] = 0; + instrument->counter_AbsorbProp[78]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0077_start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _start_backend_setpos */ + +/* component optical_axis_backend=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_backend_setpos] component optical_axis_backend=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_backend_var._name, "optical_axis_backend", 16384); + stracpy(_optical_axis_backend_var._type, "Arm", 16384); + _optical_axis_backend_var._index=79; + int current_setpos_index = 79; + /* component optical_axis_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _start_backend_var._rotation_absolute, _optical_axis_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_optical_axis_backend_var._rotation_absolute, tr1, _optical_axis_backend_var._rotation_relative); + _optical_axis_backend_var._rotation_is_identity = rot_test_identity(_optical_axis_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_start_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_backend_var._position_absolute = coords_add(_start_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _optical_axis_backend_var._position_absolute); + _optical_axis_backend_var._position_relative = rot_apply(_optical_axis_backend_var._rotation_absolute, tc1); + } /* optical_axis_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute); + instrument->_position_absolute[79] = _optical_axis_backend_var._position_absolute; + instrument->_position_relative[79] = _optical_axis_backend_var._position_relative; + _optical_axis_backend_var._position_relative_is_zero = coords_test_zero(_optical_axis_backend_var._position_relative); + instrument->counter_N[79] = instrument->counter_P[79] = instrument->counter_P2[79] = 0; + instrument->counter_AbsorbProp[79]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0078_optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_backend_setpos */ + +/* component pinhole_2=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_2_setpos] component pinhole_2=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_2_var._name, "pinhole_2", 16384); + stracpy(_pinhole_2_var._type, "Slit", 16384); + _pinhole_2_var._index=80; + int current_setpos_index = 80; + _pinhole_2_var._parameters.xmin = UNSET; + _pinhole_2_var._parameters.xmax = UNSET; + _pinhole_2_var._parameters.ymin = UNSET; + _pinhole_2_var._parameters.ymax = UNSET; + _pinhole_2_var._parameters.radius = UNSET; + _pinhole_2_var._parameters.xwidth = 0.03; + _pinhole_2_var._parameters.yheight = 0.03; + + + /* component pinhole_2=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _pinhole_2_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_pinhole_2_var._rotation_absolute, tr1, _pinhole_2_var._rotation_relative); + _pinhole_2_var._rotation_is_identity = rot_test_identity(_pinhole_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_2_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _pinhole_2_var._position_absolute); + _pinhole_2_var._position_relative = rot_apply(_pinhole_2_var._rotation_absolute, tc1); + } /* pinhole_2=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute); + instrument->_position_absolute[80] = _pinhole_2_var._position_absolute; + instrument->_position_relative[80] = _pinhole_2_var._position_relative; + _pinhole_2_var._position_relative_is_zero = coords_test_zero(_pinhole_2_var._position_relative); + instrument->counter_N[80] = instrument->counter_P[80] = instrument->counter_P2[80] = 0; + instrument->counter_AbsorbProp[80]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0079_pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "xwidth", "UNSET", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "yheight", "UNSET", "0.03","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_2_setpos */ + +/* component graph=Graphite_Diffuser() SETTING, POSITION/ROTATION */ +int _graph_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_graph_setpos] component graph=Graphite_Diffuser() SETTING [Graphite_Diffuser:0]"); + stracpy(_graph_var._name, "graph", 16384); + stracpy(_graph_var._type, "Graphite_Diffuser", 16384); + _graph_var._index=81; + int current_setpos_index = 81; + _graph_var._parameters.xwidth = 0.1; + _graph_var._parameters.ywidth = 0.1; + _graph_var._parameters.thick = 0.2; + _graph_var._parameters.abs = 1; + + /* component graph=Graphite_Diffuser() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _graph_var._rotation_absolute); + rot_transpose(_pinhole_2_var._rotation_absolute, tr1); + rot_mul(_graph_var._rotation_absolute, tr1, _graph_var._rotation_relative); + _graph_var._rotation_is_identity = rot_test_identity(_graph_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50.001); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _graph_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_2_var._position_absolute, _graph_var._position_absolute); + _graph_var._position_relative = rot_apply(_graph_var._rotation_absolute, tc1); + } /* graph=Graphite_Diffuser() AT ROTATED */ + DEBUG_COMPONENT("graph", _graph_var._position_absolute, _graph_var._rotation_absolute); + instrument->_position_absolute[81] = _graph_var._position_absolute; + instrument->_position_relative[81] = _graph_var._position_relative; + _graph_var._position_relative_is_zero = coords_test_zero(_graph_var._position_relative); + instrument->counter_N[81] = instrument->counter_P[81] = instrument->counter_P2[81] = 0; + instrument->counter_AbsorbProp[81]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0080_graph", _graph_var._position_absolute, _graph_var._rotation_absolute, "Graphite_Diffuser"); + mccomp_param_nexus(nxhandle,"0080_graph", "xwidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0080_graph", "ywidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0080_graph", "thick", "0.01", "0.2","MCNUM"); + mccomp_param_nexus(nxhandle,"0080_graph", "abs", "1", "1","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _graph_setpos */ + +/* component sample_monitor_arm=Arm() SETTING, POSITION/ROTATION */ +int _sample_monitor_arm_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_monitor_arm_setpos] component sample_monitor_arm=Arm() SETTING [Arm:0]"); + stracpy(_sample_monitor_arm_var._name, "sample_monitor_arm", 16384); + stracpy(_sample_monitor_arm_var._type, "Arm", 16384); + _sample_monitor_arm_var._index=82; + int current_setpos_index = 82; + /* component sample_monitor_arm=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_monitor_arm_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_monitor_arm_var._rotation_absolute, tr1, _sample_monitor_arm_var._rotation_relative); + _sample_monitor_arm_var._rotation_is_identity = rot_test_identity(_sample_monitor_arm_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_monitor_arm_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_monitor_arm_var._position_absolute); + _sample_monitor_arm_var._position_relative = rot_apply(_sample_monitor_arm_var._rotation_absolute, tc1); + } /* sample_monitor_arm=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute); + instrument->_position_absolute[82] = _sample_monitor_arm_var._position_absolute; + instrument->_position_relative[82] = _sample_monitor_arm_var._position_relative; + _sample_monitor_arm_var._position_relative_is_zero = coords_test_zero(_sample_monitor_arm_var._position_relative); + instrument->counter_N[82] = instrument->counter_P[82] = instrument->counter_P2[82] = 0; + instrument->counter_AbsorbProp[82]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0081_sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_monitor_arm_setpos */ + +/* component sample_PSD=Monitor_nD() SETTING, POSITION/ROTATION */ +int _sample_PSD_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_PSD_setpos] component sample_PSD=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_sample_PSD_var._name, "sample_PSD", 16384); + stracpy(_sample_PSD_var._type, "Monitor_nD", 16384); + _sample_PSD_var._index=83; + int current_setpos_index = 83; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user1, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user2, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user3, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user3[0]='\0'; + _sample_PSD_var._parameters.xwidth = 0.3; + _sample_PSD_var._parameters.yheight = 0.3; + _sample_PSD_var._parameters.zdepth = 0; + _sample_PSD_var._parameters.xmin = 0; + _sample_PSD_var._parameters.xmax = 0; + _sample_PSD_var._parameters.ymin = 0; + _sample_PSD_var._parameters.ymax = 0; + _sample_PSD_var._parameters.zmin = 0; + _sample_PSD_var._parameters.zmax = 0; + _sample_PSD_var._parameters.bins = 0; + _sample_PSD_var._parameters.min = -1e40; + _sample_PSD_var._parameters.max = 1e40; + _sample_PSD_var._parameters.restore_neutron = 0; + _sample_PSD_var._parameters.radius = 0; + if("x bins 300 y bins 300" && strlen("x bins 300 y bins 300")) + stracpy(_sample_PSD_var._parameters.options, "x bins 300 y bins 300" ? "x bins 300 y bins 300" : "", 16384); + else + _sample_PSD_var._parameters.options[0]='\0'; + if("image.dat" && strlen("image.dat")) + stracpy(_sample_PSD_var._parameters.filename, "image.dat" ? "image.dat" : "", 16384); + else + _sample_PSD_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.geometry[0]='\0'; + _sample_PSD_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username3[0]='\0'; + + + /* component sample_PSD=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _sample_PSD_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_PSD_var._rotation_absolute, tr1, _sample_PSD_var._rotation_relative); + _sample_PSD_var._rotation_is_identity = rot_test_identity(_sample_PSD_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_PSD_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_PSD_var._position_absolute); + _sample_PSD_var._position_relative = rot_apply(_sample_PSD_var._rotation_absolute, tc1); + } /* sample_PSD=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute); + instrument->_position_absolute[83] = _sample_PSD_var._position_absolute; + instrument->_position_relative[83] = _sample_PSD_var._position_relative; + _sample_PSD_var._position_relative_is_zero = coords_test_zero(_sample_PSD_var._position_relative); + instrument->counter_N[83] = instrument->counter_P[83] = instrument->counter_P2[83] = 0; + instrument->counter_AbsorbProp[83]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0082_sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "options", "NULL", "x bins 300 y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "filename", "NULL", "image.dat", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_PSD_setpos */ + +/* component profile_x=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_x_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_x_setpos] component profile_x=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_x_var._name, "profile_x", 16384); + stracpy(_profile_x_var._type, "Monitor_nD", 16384); + _profile_x_var._index=84; + int current_setpos_index = 84; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user3[0]='\0'; + _profile_x_var._parameters.xwidth = 0.3; + _profile_x_var._parameters.yheight = 0.3; + _profile_x_var._parameters.zdepth = 0; + _profile_x_var._parameters.xmin = 0; + _profile_x_var._parameters.xmax = 0; + _profile_x_var._parameters.ymin = 0; + _profile_x_var._parameters.ymax = 0; + _profile_x_var._parameters.zmin = 0; + _profile_x_var._parameters.zmax = 0; + _profile_x_var._parameters.bins = 0; + _profile_x_var._parameters.min = -1e40; + _profile_x_var._parameters.max = 1e40; + _profile_x_var._parameters.restore_neutron = 0; + _profile_x_var._parameters.radius = 0; + if("x bins 300" && strlen("x bins 300")) + stracpy(_profile_x_var._parameters.options, "x bins 300" ? "x bins 300" : "", 16384); + else + _profile_x_var._parameters.options[0]='\0'; + if("profile_x.dat" && strlen("profile_x.dat")) + stracpy(_profile_x_var._parameters.filename, "profile_x.dat" ? "profile_x.dat" : "", 16384); + else + _profile_x_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.geometry[0]='\0'; + _profile_x_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username3[0]='\0'; + + + /* component profile_x=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_x_var._rotation_absolute); + rot_transpose(_sample_PSD_var._rotation_absolute, tr1); + rot_mul(_profile_x_var._rotation_absolute, tr1, _profile_x_var._rotation_relative); + _profile_x_var._rotation_is_identity = rot_test_identity(_profile_x_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_x_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_sample_PSD_var._position_absolute, _profile_x_var._position_absolute); + _profile_x_var._position_relative = rot_apply(_profile_x_var._rotation_absolute, tc1); + } /* profile_x=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute); + instrument->_position_absolute[84] = _profile_x_var._position_absolute; + instrument->_position_relative[84] = _profile_x_var._position_relative; + _profile_x_var._position_relative_is_zero = coords_test_zero(_profile_x_var._position_relative); + instrument->counter_N[84] = instrument->counter_P[84] = instrument->counter_P2[84] = 0; + instrument->counter_AbsorbProp[84]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0083_profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "options", "NULL", "x bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "filename", "NULL", "profile_x.dat", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_x_setpos */ + +/* component profile_y=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_y_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_y_setpos] component profile_y=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_y_var._name, "profile_y", 16384); + stracpy(_profile_y_var._type, "Monitor_nD", 16384); + _profile_y_var._index=85; + int current_setpos_index = 85; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user3[0]='\0'; + _profile_y_var._parameters.xwidth = 0.3; + _profile_y_var._parameters.yheight = 0.3; + _profile_y_var._parameters.zdepth = 0; + _profile_y_var._parameters.xmin = 0; + _profile_y_var._parameters.xmax = 0; + _profile_y_var._parameters.ymin = 0; + _profile_y_var._parameters.ymax = 0; + _profile_y_var._parameters.zmin = 0; + _profile_y_var._parameters.zmax = 0; + _profile_y_var._parameters.bins = 0; + _profile_y_var._parameters.min = -1e40; + _profile_y_var._parameters.max = 1e40; + _profile_y_var._parameters.restore_neutron = 0; + _profile_y_var._parameters.radius = 0; + if("y bins 300" && strlen("y bins 300")) + stracpy(_profile_y_var._parameters.options, "y bins 300" ? "y bins 300" : "", 16384); + else + _profile_y_var._parameters.options[0]='\0'; + if("profile_y.dat" && strlen("profile_y.dat")) + stracpy(_profile_y_var._parameters.filename, "profile_y.dat" ? "profile_y.dat" : "", 16384); + else + _profile_y_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.geometry[0]='\0'; + _profile_y_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username3[0]='\0'; + + + /* component profile_y=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_y_var._rotation_absolute); + rot_transpose(_profile_x_var._rotation_absolute, tr1); + rot_mul(_profile_y_var._rotation_absolute, tr1, _profile_y_var._rotation_relative); + _profile_y_var._rotation_is_identity = rot_test_identity(_profile_y_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_y_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_x_var._position_absolute, _profile_y_var._position_absolute); + _profile_y_var._position_relative = rot_apply(_profile_y_var._rotation_absolute, tc1); + } /* profile_y=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute); + instrument->_position_absolute[85] = _profile_y_var._position_absolute; + instrument->_position_relative[85] = _profile_y_var._position_relative; + _profile_y_var._position_relative_is_zero = coords_test_zero(_profile_y_var._position_relative); + instrument->counter_N[85] = instrument->counter_P[85] = instrument->counter_P2[85] = 0; + instrument->counter_AbsorbProp[85]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0084_profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "options", "NULL", "y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "filename", "NULL", "profile_y.dat", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_y_setpos */ + +/* component wavelength=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_setpos] component wavelength=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_var._name, "wavelength", 16384); + stracpy(_wavelength_var._type, "Monitor_nD", 16384); + _wavelength_var._index=86; + int current_setpos_index = 86; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user3[0]='\0'; + _wavelength_var._parameters.xwidth = 0.3; + _wavelength_var._parameters.yheight = 0.3; + _wavelength_var._parameters.zdepth = 0; + _wavelength_var._parameters.xmin = 0; + _wavelength_var._parameters.xmax = 0; + _wavelength_var._parameters.ymin = 0; + _wavelength_var._parameters.ymax = 0; + _wavelength_var._parameters.zmin = 0; + _wavelength_var._parameters.zmax = 0; + _wavelength_var._parameters.bins = 0; + _wavelength_var._parameters.min = -1e40; + _wavelength_var._parameters.max = 1e40; + _wavelength_var._parameters.restore_neutron = 0; + _wavelength_var._parameters.radius = 0; + if("L bins 300 limits [0.5 10]" && strlen("L bins 300 limits [0.5 10]")) + stracpy(_wavelength_var._parameters.options, "L bins 300 limits [0.5 10]" ? "L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_var._parameters.options[0]='\0'; + if("wavelength.dat" && strlen("wavelength.dat")) + stracpy(_wavelength_var._parameters.filename, "wavelength.dat" ? "wavelength.dat" : "", 16384); + else + _wavelength_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.geometry[0]='\0'; + _wavelength_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username3[0]='\0'; + + + /* component wavelength=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_var._rotation_absolute); + rot_transpose(_profile_y_var._rotation_absolute, tr1); + rot_mul(_wavelength_var._rotation_absolute, tr1, _wavelength_var._rotation_relative); + _wavelength_var._rotation_is_identity = rot_test_identity(_wavelength_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_y_var._position_absolute, _wavelength_var._position_absolute); + _wavelength_var._position_relative = rot_apply(_wavelength_var._rotation_absolute, tc1); + } /* wavelength=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute); + instrument->_position_absolute[86] = _wavelength_var._position_absolute; + instrument->_position_relative[86] = _wavelength_var._position_relative; + _wavelength_var._position_relative_is_zero = coords_test_zero(_wavelength_var._position_relative); + instrument->counter_N[86] = instrument->counter_P[86] = instrument->counter_P2[86] = 0; + instrument->counter_AbsorbProp[86]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0085_wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "options", "NULL", "L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "filename", "NULL", "wavelength.dat", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_setpos */ + +/* component tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_tof_setpos] component tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_tof_var._name, "tof", 16384); + stracpy(_tof_var._type, "Monitor_nD", 16384); + _tof_var._index=87; + int current_setpos_index = 87; + if("" && strlen("")) + stracpy(_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _tof_var._parameters.user3[0]='\0'; + _tof_var._parameters.xwidth = 0.3; + _tof_var._parameters.yheight = 0.3; + _tof_var._parameters.zdepth = 0; + _tof_var._parameters.xmin = 0; + _tof_var._parameters.xmax = 0; + _tof_var._parameters.ymin = 0; + _tof_var._parameters.ymax = 0; + _tof_var._parameters.zmin = 0; + _tof_var._parameters.zmax = 0; + _tof_var._parameters.bins = 0; + _tof_var._parameters.min = -1e40; + _tof_var._parameters.max = 1e40; + _tof_var._parameters.restore_neutron = 0; + _tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15]" && strlen("t bins 300 limits [0, 0.15]")) + stracpy(_tof_var._parameters.options, "t bins 300 limits [0, 0.15]" ? "t bins 300 limits [0, 0.15]" : "", 16384); + else + _tof_var._parameters.options[0]='\0'; + if("time.dat" && strlen("time.dat")) + stracpy(_tof_var._parameters.filename, "time.dat" ? "time.dat" : "", 16384); + else + _tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.geometry[0]='\0'; + _tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username3[0]='\0'; + + + /* component tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _tof_var._rotation_absolute); + rot_transpose(_wavelength_var._rotation_absolute, tr1); + rot_mul(_tof_var._rotation_absolute, tr1, _tof_var._rotation_relative); + _tof_var._rotation_is_identity = rot_test_identity(_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_var._position_absolute, _tof_var._position_absolute); + _tof_var._position_relative = rot_apply(_tof_var._rotation_absolute, tc1); + } /* tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("tof", _tof_var._position_absolute, _tof_var._rotation_absolute); + instrument->_position_absolute[87] = _tof_var._position_absolute; + instrument->_position_relative[87] = _tof_var._position_relative; + _tof_var._position_relative_is_zero = coords_test_zero(_tof_var._position_relative); + instrument->counter_N[87] = instrument->counter_P[87] = instrument->counter_P2[87] = 0; + instrument->counter_AbsorbProp[87]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0086_tof", _tof_var._position_absolute, _tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0086_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0086_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0086_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "options", "NULL", "t bins 300 limits [0, 0.15]", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "filename", "NULL", "time.dat", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0086_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _tof_setpos */ + +/* component wavelength_tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_tof_setpos] component wavelength_tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_tof_var._name, "wavelength_tof", 16384); + stracpy(_wavelength_tof_var._type, "Monitor_nD", 16384); + _wavelength_tof_var._index=88; + int current_setpos_index = 88; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user3[0]='\0'; + _wavelength_tof_var._parameters.xwidth = 0.3; + _wavelength_tof_var._parameters.yheight = 0.3; + _wavelength_tof_var._parameters.zdepth = 0; + _wavelength_tof_var._parameters.xmin = 0; + _wavelength_tof_var._parameters.xmax = 0; + _wavelength_tof_var._parameters.ymin = 0; + _wavelength_tof_var._parameters.ymax = 0; + _wavelength_tof_var._parameters.zmin = 0; + _wavelength_tof_var._parameters.zmax = 0; + _wavelength_tof_var._parameters.bins = 0; + _wavelength_tof_var._parameters.min = -1e40; + _wavelength_tof_var._parameters.max = 1e40; + _wavelength_tof_var._parameters.restore_neutron = 0; + _wavelength_tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" && strlen("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]")) + stracpy(_wavelength_tof_var._parameters.options, "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" ? "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_tof_var._parameters.options[0]='\0'; + if("wavelength_tof.dat" && strlen("wavelength_tof.dat")) + stracpy(_wavelength_tof_var._parameters.filename, "wavelength_tof.dat" ? "wavelength_tof.dat" : "", 16384); + else + _wavelength_tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.geometry[0]='\0'; + _wavelength_tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username3[0]='\0'; + + + /* component wavelength_tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_tof_var._rotation_absolute); + rot_transpose(_tof_var._rotation_absolute, tr1); + rot_mul(_wavelength_tof_var._rotation_absolute, tr1, _wavelength_tof_var._rotation_relative); + _wavelength_tof_var._rotation_is_identity = rot_test_identity(_wavelength_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_tof_var._position_absolute, _wavelength_tof_var._position_absolute); + _wavelength_tof_var._position_relative = rot_apply(_wavelength_tof_var._rotation_absolute, tc1); + } /* wavelength_tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute); + instrument->_position_absolute[88] = _wavelength_tof_var._position_absolute; + instrument->_position_relative[88] = _wavelength_tof_var._position_relative; + _wavelength_tof_var._position_relative_is_zero = coords_test_zero(_wavelength_tof_var._position_relative); + instrument->counter_N[88] = instrument->counter_P[88] = instrument->counter_P2[88] = 0; + instrument->counter_AbsorbProp[88]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0087_wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "options", "NULL", "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "filename", "NULL", "wavelength_tof.dat", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "username3", "NULL", "NULL", "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_tof_setpos */ + +/* component sample_position=Arm() SETTING, POSITION/ROTATION */ +int _sample_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_position_setpos] component sample_position=Arm() SETTING [Arm:0]"); + stracpy(_sample_position_var._name, "sample_position", 16384); + stracpy(_sample_position_var._type, "Arm", 16384); + _sample_position_var._index=89; + int current_setpos_index = 89; + /* component sample_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_position_var._rotation_absolute); + rot_transpose(_wavelength_tof_var._rotation_absolute, tr1); + rot_mul(_sample_position_var._rotation_absolute, tr1, _sample_position_var._rotation_relative); + _sample_position_var._rotation_is_identity = rot_test_identity(_sample_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_position_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_tof_var._position_absolute, _sample_position_var._position_absolute); + _sample_position_var._position_relative = rot_apply(_sample_position_var._rotation_absolute, tc1); + } /* sample_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute); + instrument->_position_absolute[89] = _sample_position_var._position_absolute; + instrument->_position_relative[89] = _sample_position_var._position_relative; + _sample_position_var._position_relative_is_zero = coords_test_zero(_sample_position_var._position_relative); + instrument->counter_N[89] = instrument->counter_P[89] = instrument->counter_P2[89] = 0; + instrument->counter_AbsorbProp[89]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0088_sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_position_setpos */ + +_class_Progress_bar *class_Progress_bar_init(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_init] component Origin=Progress_bar() INITIALISE [Progress_bar:0]"); + + IntermediateCnts = 0; + StartTime = 0; + EndTime = 0; + CurrentTime = 0; + + fprintf (stdout, "[%s] Initialize\n", instrument_name); + if (percent * mcget_ncount () / 100 < 1e5) { + percent = 1e5 * 100.0 / mcget_ncount (); + } + #ifdef OPENACC + time (&StartTime); + #endif + + #ifdef USE_MPI + sprintf (infostring, "(%i MPI processes) ", mpi_node_count); + #else + sprintf (infostring, "(single process) "); + #endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_init */ + +_class_MCPL_input_once *class_MCPL_input_once_init(_class_MCPL_input_once *_comp +) { + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_init] component vin=MCPL_input_once() INITIALISE [MCPL_input_once:0]"); + + { + if (!filename || !filename[0]) { + fprintf (stderr, "ERROR(%s): Requires filename parameter.\n", NAME_CURRENT_COMP); + exit (-1); + } + char* fn_mcpl = mcpl_name_helper (filename, 'M'); + char* fn_mcplgz = mcpl_name_helper (filename, 'G'); + if (mcplinputonce_file_exist (fn_mcpl)) { + if (mcplinputonce_file_exist (fn_mcplgz)) { + fprintf (stderr, + "ERROR(%s): Can not resolve input file unambiguously" + " since both %s and %s exist.\n", + NAME_CURRENT_COMP, fn_mcpl, fn_mcplgz); + exit (-1); + } + resolved_filename = fn_mcpl; + free (fn_mcplgz); + } else { + resolved_filename = fn_mcplgz; + free (fn_mcpl); + } + } + + uint64_t particles_per_node; + uint64_t last_particle; + if (Emax < Emin) { + fprintf (stderr, "Error(%s): Nonsensical energy interval: E=[%g,%g]. Aborting.\n", NAME_CURRENT_COMP, Emin, Emax); + exit (-1); + } + inputfile = mcpl_open_file (resolved_filename); + double mcpl_ray_count = mcpl_hdr_stat_sum (inputfile, "initial_ray_count"); + if (mcpl_ray_count == -2.0) { + // legacy format without ray count: + weight_scale = 1.0; + } else if (!(mcpl_ray_count > 0.0)) { + fprintf (stderr, + "ERROR: Input MCPL file has invalid initial_ray_count" + " (%g). Unable to determine weight scale.\n", + mcpl_ray_count); + exit (1); + } else { + weight_scale = 1.0 / mcpl_ray_count; + } + if (!(nparticles = mcpl_hdr_nparticles (inputfile))) { + fprintf (stderr, "Error(%s): MCPL-file reports no present particles. Aborting.\n", NAME_CURRENT_COMP); + exit (-1); + } else { + MPI_MASTER (printf ("Message(%s): MCPL file (%s) produced with %s.\n", NAME_CURRENT_COMP, resolved_filename, mcpl_hdr_srcname (inputfile)); + printf ("Message(%s): MCPL file (%s) contains %lu particles.\n", NAME_CURRENT_COMP, resolved_filename, (long unsigned)nparticles);); + } + first_particle = 0; + last_particle = nparticles; + #if defined (USE_MPI) + // divy up the available particles between nodes + particles_per_node = last_particle / mpi_node_count; + // ensuring at least 1 particle per node (e.g., protecting against division by negative node count) + if (particles_per_node < 1) + particles_per_node = 1; + // each node has first index given by how many particles each should do + first_particle = particles_per_node * mpi_node_rank; + // the last worker keeps 'nparticles' as its last particle index, to ensure the full range is covered + if (mpi_node_rank != mpi_node_count - 1) + last_particle = first_particle + particles_per_node; + #endif + read_neutrons = 0; + used_neutrons = 0; + #ifdef OPENACC + preload = 1; + printf ("OpenACC, preload implicit:\n"); + #endif + // Move this node's pointer into the file to its first particle: + // in preparation for pre-loading or first pass through TRACE + mcpl_seek (inputfile, first_particle); + // Index will track how many particles this component has accessed + current_index = 0; + // Which we want to check against how large it can grow, to know if we've exhausted the available particles + maximum_index = last_particle - first_particle; + particles = NULL; + if (preload) { + printf ("Preload requested, loading MCPLfile particles (%lu, %lu) in INITIALIZE\n", (long unsigned)first_particle, (long unsigned)last_particle); + particles = (mcpl_input_once_particle_t*)calloc (last_particle - first_particle, sizeof (mcpl_input_once_particle_t)); + for (uint64_t loop = first_particle; loop < last_particle; loop++) { + const mcpl_particle_t* particle; + particle = mcpl_read (inputfile); + if (particle && particle->pdgcode == 2112) { + if (particle->ekin > Emin * 1e-9 && particle->ekin < Emax * 1e-9) { + mcpl_input_once_translator (polarisationuse, weight_scale, particle, particles + used_neutrons++); + } + read_neutrons++; + } + } + // keep track of how many particles are available to us in the `particles` array + maximum_index = used_neutrons; + printf ("Done reading MCPL file (%lu, %lu), found %lu neutrons (and kept %lu)\n", (long unsigned)first_particle, (long unsigned)last_particle, + (long unsigned)read_neutrons, (long unsigned)used_neutrons); + mcpl_close_file (inputfile); + } + // keep track of how many times we had to replay the same MCPL input + times_replayed = 0; + // and the total number of neutrons emitted by this component + emitted_neutrons = 0; + // Determine the total number of read (or to be read) neutrons + uint64_t total_index = maximum_index; + #if defined (USE_MPI) + // add up the read neutrons (or to be read neutrons) from each node + MPI_Reduce (&maximum_index, &total_index, 1, MPI_UINT64_T, MPI_SUM, 0, MPI_COMM_WORLD); + // tell all nodes the value, so they can set ncount for themselves + MPI_Bcast (&total_index, 1, MPI_UINT64_T, 0, MPI_COMM_WORLD); + #endif + mcset_ncount (total_index); // will be divided by mpi_node_count before starting the raytrace + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return(_comp); +} /* class_MCPL_input_once_init */ + +_class_PSD_monitor_4PI *class_PSD_monitor_4PI_init(_class_PSD_monitor_4PI *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_init] component Sphere1=PSD_monitor_4PI() INITIALISE [PSD_monitor_4PI:0]"); + + PSD_N = create_darr2d (nx, ny); + PSD_p = create_darr2d (nx, ny); + PSD_p2 = create_darr2d (nx, ny); + + // Use instance name for monitor output if no input was given + if (!strcmp (filename, "\0")) + sprintf (filename, "%s", NAME_CURRENT_COMP); + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_4PI_init */ + +_class_ESS_butterfly *class_ESS_butterfly_init(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_init] component Source=ESS_butterfly() INITIALISE [ESS_butterfly:0]"); + + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_init */ + +_class_Shape *class_Shape_init(_class_Shape *_comp +) { + #define geometry (_comp->_parameters.geometry) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define thickness (_comp->_parameters.thickness) + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define nz (_comp->_parameters.nz) + #define center (_comp->_parameters.center) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_Focus_cut_init] component Focus_cut=Shape() INITIALISE [Shape:0]"); + + if (geometry && strlen (geometry) && strcmp (geometry, "NULL") && strcmp (geometry, "0")) { + if (off_init (geometry, xwidth, yheight, zdepth, !center, &offdata)) { + thickness = 0; + } + } + #undef geometry + #undef radius + #undef xwidth + #undef yheight + #undef zdepth + #undef thickness + #undef nx + #undef ny + #undef nz + #undef center + #undef offdata + return(_comp); +} /* class_Shape_init */ + +_class_PSD_monitor *class_PSD_monitor_init(_class_PSD_monitor *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_init] component PSD_cut=PSD_monitor() INITIALISE [PSD_monitor:0]"); + + if (xwidth > 0) { + xmax = xwidth / 2; + xmin = -xmax; + } + if (yheight > 0) { + ymax = yheight / 2; + ymin = -ymax; + } + + if ((xmin >= xmax) || (ymin >= ymax)) { + printf ("PSD_monitor: %s: Null detection area !\n" + "ERROR (xwidth,yheight,xmin,xmax,ymin,ymax). Exiting", + NAME_CURRENT_COMP); + exit (0); + } + + PSD_N = create_darr2d (nx, ny); + PSD_p = create_darr2d (nx, ny); + PSD_p2 = create_darr2d (nx, ny); + + // Use instance name for monitor output if no input was given + if (!strcmp (filename, "\0")) + sprintf (filename, "%s", NAME_CURRENT_COMP); + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_init */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_init(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_init] component bi=bi_spec_ellipse() INITIALISE [bi_spec_ellipse:0]"); + + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return(_comp); +} /* class_bi_spec_ellipse_init */ + +_class_Guide_four_side *class_Guide_four_side_init(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_init] component NBOA_drawing_1_end=Guide_four_side() INITIALISE [Guide_four_side:0]"); + + + int i; + + if (RIreflect && strlen (RIreflect)) { + if (Table_Read (&riTable, RIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, RIreflect)); + } + + if (LIreflect && strlen (LIreflect)) { + if (Table_Read (&liTable, LIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LIreflect)); + } + + if (UIreflect && strlen (UIreflect)) { + if (Table_Read (&uiTable, UIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UIreflect)); + } + + if (DIreflect && strlen (DIreflect)) { + if (Table_Read (&diTable, DIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DIreflect)); + } + + if (ROreflect && strlen (ROreflect)) { + if (Table_Read (&roTable, ROreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, ROreflect)); + } + + if (LOreflect && strlen (LOreflect)) { + if (Table_Read (&loTable, LOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LOreflect)); + } + + if (UOreflect && strlen (UOreflect)) { + if (Table_Read (&uoTable, UOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UOreflect)); + } + + if (DOreflect && strlen (DOreflect)) { + if (Table_Read (&doTable, DOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DOreflect)); + } + + if (w1r < 0) + TEST_INPUT ("w1r", NAME_CURRENT_COMP); + + if (w1l < 0) + TEST_INPUT ("w1l", NAME_CURRENT_COMP); + + if (h1u < 0) + TEST_INPUT ("h1u", NAME_CURRENT_COMP); + + if (h1d < 0) + TEST_INPUT ("h1d", NAME_CURRENT_COMP); + + if (w2r < 0) + TEST_INPUT ("w2r", NAME_CURRENT_COMP); + + if (w2l < 0) + TEST_INPUT ("w2l", NAME_CURRENT_COMP); + + if (h2u < 0) + TEST_INPUT ("h2u", NAME_CURRENT_COMP); + + if (h2d < 0) + TEST_INPUT ("h2d", NAME_CURRENT_COMP); + + if (mxrOW != -1 && mxrOW < 0) + TEST_INPUT_1 ("mxrOW", NAME_CURRENT_COMP); + + if (mxlOW != -1 && mxlOW < 0) + TEST_INPUT_1 ("mxlOW", NAME_CURRENT_COMP); + + if (myuOW != -1 && myuOW < 0) + TEST_INPUT_1 ("myuOW", NAME_CURRENT_COMP); + + if (mydOW != -1 && mydOW < 0) + TEST_INPUT_1 ("mydOW", NAME_CURRENT_COMP); + + if (mxr < 0 && mxr != -1) + TEST_INPUT_1 ("mxr", NAME_CURRENT_COMP); + + if (mxl < 0 && mxl != -1) + TEST_INPUT_1 ("mxl", NAME_CURRENT_COMP); + + if (myu < 0 && myu != -1) + TEST_INPUT_1 ("myu", NAME_CURRENT_COMP); + + if (myd < 0 && myd != -1) + TEST_INPUT_1 ("myd", NAME_CURRENT_COMP); + + if (Qcxl < 0) + TEST_INPUT_2 ("Qcxl", NAME_CURRENT_COMP); + + if (Qcxr < 0) + TEST_INPUT_2 ("Qcxr", NAME_CURRENT_COMP); + + if (Qcyu < 0) + TEST_INPUT_2 ("Qcyu", NAME_CURRENT_COMP); + + if (Qcyd < 0) + TEST_INPUT_2 ("Qcyd", NAME_CURRENT_COMP); + + if (alphaxl < 0) + TEST_INPUT_2 ("alphaxl", NAME_CURRENT_COMP); + + if (alphaxr < 0) + TEST_INPUT_2 ("alphaxr", NAME_CURRENT_COMP); + + if (alphayu < 0) + TEST_INPUT_2 ("alphayu", NAME_CURRENT_COMP); + + if (alphayd < 0) + TEST_INPUT_2 ("alphayd", NAME_CURRENT_COMP); + + if (QcxlOW < 0) + TEST_INPUT_2 ("QcxlOW", NAME_CURRENT_COMP); + + if (QcxrOW < 0) + TEST_INPUT_2 ("QcxrOW", NAME_CURRENT_COMP); + + if (QcyuOW < 0) + TEST_INPUT_2 ("QcyuOW", NAME_CURRENT_COMP); + + if (QcydOW < 0) + TEST_INPUT_2 ("QcydOW", NAME_CURRENT_COMP); + + if (alphaxlOW < 0) + TEST_INPUT_2 ("alphaxlOW", NAME_CURRENT_COMP); + + if (alphaxrOW < 0) + TEST_INPUT_2 ("alphaxrOW", NAME_CURRENT_COMP); + + if (alphayuOW < 0) + TEST_INPUT_2 ("alphayuOW", NAME_CURRENT_COMP); + + if (alphaydOW < 0) + TEST_INPUT_2 ("alphaydOW", NAME_CURRENT_COMP); + + if (rwallthick < 0) + TEST_INPUT_2 ("rwallthick", NAME_CURRENT_COMP); + + if (lwallthick < 0) + TEST_INPUT_2 ("lwallthick", NAME_CURRENT_COMP); + + if (uwallthick < 0) + TEST_INPUT_2 ("uwallthick", NAME_CURRENT_COMP); + + if (dwallthick < 0) + TEST_INPUT_2 ("dwallthick", NAME_CURRENT_COMP); + + if (Wxr <= 0) + TEST_INPUT_3 ("Wxr", NAME_CURRENT_COMP); + + if (Wxl <= 0) + TEST_INPUT_3 ("Wxl", NAME_CURRENT_COMP); + + if (Wyu <= 0) + TEST_INPUT_3 ("Wyu", NAME_CURRENT_COMP); + + if (Wyd <= 0) + TEST_INPUT_3 ("Wyd", NAME_CURRENT_COMP); + + if (WxrOW <= 0) + TEST_INPUT_3 ("WxrOW", NAME_CURRENT_COMP); + + if (WxlOW <= 0) + TEST_INPUT_3 ("WxlOW", NAME_CURRENT_COMP); + + if (WyuOW <= 0) + TEST_INPUT_3 ("WyuOW", NAME_CURRENT_COMP); + + if (WydOW <= 0) + TEST_INPUT_3 ("WydOW", NAME_CURRENT_COMP); + + if (l <= 0) { + fprintf (stderr, "Component: %s (Guide_four_side) real guide length \n", NAME_CURRENT_COMP); + fprintf (stderr, " is <= ZERO ! \n"); + exit (-1); + } + + if (mcgravitation) + fprintf (stderr, + "WARNING: Guide_four_side: %s: " + "This component produces wrong results with gravitation !\n" + "Use Guide_gravity.\n", + NAME_CURRENT_COMP); + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + if (loutwr != 0 && linwr != 0) /* elliptic right side wall */ + { + ELLIPSE (w1r, l, linwr, loutwr, rwallthick, &awr, &bwr, &a2wr, &b2wr, &z0wr, &w2r, &awrwt, &a2wrwt, &bwrwt, &b2wrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr != 0) /* parabolic focusing right side wall */ + { + PARABEL_FOCUS (w1r, l, loutwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr != 0 && loutwr == 0) /* parabolic defocusing right side wall */ + { + PARABEL_DEFOCUS (w1r, l, linwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr == 0) /* straight right side wall */ + { + LINEAR (w1r, w2r, l, rwallthick, &w1rwt, &w2rwt); + } + + /* Calculation of curve-parameters for the left side wall - positive x-axis - analog to right side*/ + + if ((linwl != 0) && (loutwl != 0)) /* elleptic left side wall */ + { + ELLIPSE (w1l, l, linwl, loutwl, lwallthick, &awl, &bwl, &a2wl, &b2wl, &z0wl, &w2l, &awlwt, &a2wlwt, &bwlwt, &b2wlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl != 0) /* parabolic focusing left side wall */ + { + PARABEL_FOCUS (w1l, l, loutwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl != 0 && loutwl == 0) /* parabolic defocusing left side wall */ + { + PARABEL_DEFOCUS (w1l, l, linwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl == 0) /* straight left side wall */ + { + LINEAR (w1l, w2l, l, lwallthick, &w1lwt, &w2lwt); + } + + /* Calculation of curve-parameters for the top wall - positive y-axis - analog right wall*/ + + if (linhu != 0 && louthu != 0) /* elliptic top wall */ + { + ELLIPSE (h1u, l, linhu, louthu, uwallthick, &ahu, &bhu, &a2hu, &b2hu, &z0hu, &h2u, &ahuwt, &a2huwt, &bhuwt, &b2huwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu != 0) /* parabolic focusing top wall */ + { + PARABEL_FOCUS (h1u, l, louthu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu != 0 && louthu == 0) /* parabolic defocusing top wall */ + { + PARABEL_DEFOCUS (h1u, l, linhu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu == 0) { + LINEAR (h1u, h2u, l, uwallthick, &h1uwt, &h2uwt); + } + + /* Calculation of curve-parameters for the bottom wall - negative y-axis - analog right wall */ + + if (linhd != 0 && louthd != 0) /* elliptic bottom wall */ + { + ELLIPSE (h1d, l, linhd, louthd, dwallthick, &ahd, &bhd, &a2hd, &b2hd, &z0hd, &h2d, &ahdwt, &a2hdwt, &bhdwt, &b2hdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd != 0) /* parabolic focusing bottom wall */ + { + PARABEL_FOCUS (h1d, l, louthd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd != 0 && louthd == 0) /* parabolic defocusing bottom wall */ + { + PARABEL_DEFOCUS (h1d, l, linhd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd == 0) { + LINEAR (h1d, h2d, l, dwallthick, &h1dwt, &h2dwt); + } + + mru1 = (h1uwt - h1u) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right upper corner*/ + nru1 = h1u - mru1 * (-w1r); + + mrd1 = (-h1dwt + h1d) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right lower corner*/ + nrd1 = -h1d - mrd1 * (-w1r); + + mlu1 = (h1uwt - h1u) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left upper corner*/ + nlu1 = h1u - mlu1 * w1l; + + mld1 = (-h1dwt + h1d) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left lower corner*/ + nld1 = -h1d - mld1 * w1l; + + mru2 = (h2u - h2uwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right upper corner*/ + nru2 = h2u - mru2 * (-w2r); + + mrd2 = (-h2d + h2dwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right lower corner*/ + nrd2 = -h2d - mrd2 * (-w2r); + + mlu2 = (h2u - h2uwt) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left upper corner*/ + nlu2 = h2u - mlu2 * w2l; + + mld2 = (h2dwt - h2d) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left lower corner*/ + nld2 = -h2d - mld2 * w2l; + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_init */ + +_class_MultiDiskChopper *class_MultiDiskChopper_init(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_init] component wfmc_1=MultiDiskChopper() INITIALISE [MultiDiskChopper:0]"); + + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_init */ + +_class_Slit *class_Slit_init(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_init] component pinhole_1=Slit() INITIALISE [Slit:0]"); + + if (is_unset (radius)) { + isradial = 0; + if (all_set (3, xwidth, xmin, xmax)) { + slit_error_if (xwidth != xmax - xmin, "specifying xwidth, xmin and xmax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (xwidth) && any_unset (2, xmin, xmax), "specify either xwidth or xmin & xmax", NAME_CURRENT_COMP); + } + if (all_set (3, yheight, ymin, ymax)) { + slit_error_if (yheight != ymax - ymin, "specifying yheight, ymin and ymax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (yheight) && any_unset (2, ymin, ymax), "specify either yheight or ymin & ymax", NAME_CURRENT_COMP); + } + if (is_unset (xmin)) { // xmax also unset but xwidth *is* set + xmax = xwidth / 2; + xmin = -xmax; + } + if (is_unset (ymin)) { // ymax also unset but yheight *is* set + ymax = yheight / 2; + ymin = -ymax; + } + slit_warning_if (xmin == xmax || ymin == ymax, "Running with CLOSED rectangular slit - is this intentional?", NAME_CURRENT_COMP); + } else { + isradial = 1; + slit_error_if (any_set (6, xwidth, xmin, xmax, yheight, ymin, ymax), "specify radius OR width and height parameters", NAME_CURRENT_COMP); + slit_warning_if (radius == 0., "Running with CLOSED radial slit - is this intentional?", NAME_CURRENT_COMP); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_init */ + +_class_DiskChopper *class_DiskChopper_init(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_init] component bp1_chopper=DiskChopper() INITIALISE [DiskChopper:0]"); + + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_init */ + +_class_Monitor_nD *class_Monitor_nD_init(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_init] component sample_PSD=Monitor_nD() INITIALISE [Monitor_nD:0]"); + + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_init */ + + + +int init(void) { /* called by mccode_main for ODIN_MCPL_baseline:INITIALISE */ + DEBUG_INSTR(); + // Initialise rng + srandom(_hash(mcseed-1)); + + /* code_main/parseoptions/readparams sets instrument parameters value */ + stracpy(instrument->_name, "ODIN_MCPL_baseline", 256); + + /* Instrument 'ODIN_MCPL_baseline' INITIALISE */ + SIG_MESSAGE("[ODIN_MCPL_baseline] INITIALISE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) + #define repeat (instrument->_parameters.repeat) + #define v_smear (instrument->_parameters.v_smear) + #define pos_smear (instrument->_parameters.pos_smear) + #define dir_smear (instrument->_parameters.dir_smear) + #define filter (instrument->_parameters.filter) +{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + TCollmin=0; + TCollmax=0.06; + iBeamlines=iBeamlinesS; + DeltaX=0.0585; DeltaZ=-0.0925; + + ANGLE=iBeamlines[beamline-1]-90; + if (filter==0) + sprintf(MCPLfile,"%s%i.mcpl.gz",sector,beamline); + else + sprintf(MCPLfile,"%s%i_filtered.mcpl.gz",sector,beamline); + printf("MCPLfile is %s\n",MCPLfile); + +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + #undef repeat + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef filter + _Origin_setpos(); /* type Progress_bar */ + _vinROT2_setpos(); /* type Arm */ + _vinROT1_setpos(); /* type Arm */ + _vin_setpos(); /* type MCPL_input_once */ + _Sphere1_setpos(); /* type PSD_monitor_4PI */ + _Source_setpos(); /* type ESS_butterfly */ + _optical_axis_setpos(); /* type Arm */ + _Sphere0_setpos(); /* type PSD_monitor_4PI */ + _Focus_cut_setpos(); /* type Shape */ + _PSD_cut_setpos(); /* type PSD_monitor */ + _BackTrace_setpos(); /* type Shape */ + _PSD_Backtrace_setpos(); /* type PSD_monitor */ + _Start_of_bi_setpos(); /* type Arm */ + _bi_setpos(); /* type bi_spec_ellipse */ + _End_of_bi_setpos(); /* type Arm */ + _NBOA_drawing_1_end_setpos(); /* type Guide_four_side */ + _g1a2_setpos(); /* type Guide_four_side */ + _g1a3_setpos(); /* type Guide_four_side */ + _g1b1_setpos(); /* type Guide_four_side */ + _g1c1_setpos(); /* type Guide_four_side */ + _wfm_position_setpos(); /* type Arm */ + _wfm_1_position_setpos(); /* type Arm */ + _wfmc_1_setpos(); /* type MultiDiskChopper */ + _pinhole_1_setpos(); /* type Slit */ + _wfm_2_position_setpos(); /* type Arm */ + _wfmc_2_setpos(); /* type MultiDiskChopper */ + _g2a1_setpos(); /* type Guide_four_side */ + _monitor_1_position_setpos(); /* type Arm */ + _g2a2_setpos(); /* type Guide_four_side */ + _fo1_position_setpos(); /* type Arm */ + _fo_chopper_1_setpos(); /* type MultiDiskChopper */ + _bp1_position_setpos(); /* type Arm */ + _bp1_chopper_setpos(); /* type DiskChopper */ + _g2b1_setpos(); /* type Guide_four_side */ + _g2b2_setpos(); /* type Guide_four_side */ + _g2b3_setpos(); /* type Guide_four_side */ + _g2b4_setpos(); /* type Guide_four_side */ + _fo2_position_setpos(); /* type Arm */ + _fo_chopper_2_setpos(); /* type MultiDiskChopper */ + _bp2_position_setpos(); /* type Arm */ + _bp_chopper2_setpos(); /* type DiskChopper */ + _g2c1_setpos(); /* type Guide_four_side */ + _t0_start_position_setpos(); /* type Arm */ + _t0_chopper_alpha_setpos(); /* type DiskChopper */ + _t0_end_position_setpos(); /* type Arm */ + _t0_chopper_beta_setpos(); /* type DiskChopper */ + _g3a1_setpos(); /* type Guide_four_side */ + _g3a2_setpos(); /* type Guide_four_side */ + _fo3_position_setpos(); /* type Arm */ + _fo_chopper_3_setpos(); /* type MultiDiskChopper */ + _g3b1_setpos(); /* type Guide_four_side */ + _g4a1_setpos(); /* type Guide_four_side */ + _monitor_2_position_setpos(); /* type Arm */ + _g4a2_setpos(); /* type Guide_four_side */ + _g4a3_setpos(); /* type Guide_four_side */ + _fo4_position_setpos(); /* type Arm */ + _fo_chopper_4_setpos(); /* type MultiDiskChopper */ + _g4b1_setpos(); /* type Guide_four_side */ + _g4b2_setpos(); /* type Guide_four_side */ + _g4b3_setpos(); /* type Guide_four_side */ + _g4b4_setpos(); /* type Guide_four_side */ + _g4b5_setpos(); /* type Guide_four_side */ + _g4b6_setpos(); /* type Guide_four_side */ + _g5a1_setpos(); /* type Guide_four_side */ + _fo5_position_setpos(); /* type Arm */ + _fo_chopper_5_setpos(); /* type MultiDiskChopper */ + _g5b1_setpos(); /* type Guide_four_side */ + _g5b2_setpos(); /* type Guide_four_side */ + _g5b3_setpos(); /* type Guide_four_side */ + _g5b4_setpos(); /* type Guide_four_side */ + _g5b5_setpos(); /* type Guide_four_side */ + _g5b6_setpos(); /* type Guide_four_side */ + _g6a1_setpos(); /* type Guide_four_side */ + _g6a2_setpos(); /* type Guide_four_side */ + _g6a3_setpos(); /* type Guide_four_side */ + _guide_end_setpos(); /* type Arm */ + _monitor_3_position_setpos(); /* type Arm */ + _start_backend_setpos(); /* type Arm */ + _optical_axis_backend_setpos(); /* type Arm */ + _pinhole_2_setpos(); /* type Slit */ + _graph_setpos(); /* type Graphite_Diffuser */ + _sample_monitor_arm_setpos(); /* type Arm */ + _sample_PSD_setpos(); /* type Monitor_nD */ + _profile_x_setpos(); /* type Monitor_nD */ + _profile_y_setpos(); /* type Monitor_nD */ + _wavelength_setpos(); /* type Monitor_nD */ + _tof_setpos(); /* type Monitor_nD */ + _wavelength_tof_setpos(); /* type Monitor_nD */ + _sample_position_setpos(); /* type Arm */ + + /* call iteratively all components INITIALISE */ + class_Progress_bar_init(&_Origin_var); + + + + class_MCPL_input_once_init(&_vin_var); + + class_PSD_monitor_4PI_init(&_Sphere1_var); + + class_ESS_butterfly_init(&_Source_var); + + + class_PSD_monitor_4PI_init(&_Sphere0_var); + + class_Shape_init(&_Focus_cut_var); + + class_PSD_monitor_init(&_PSD_cut_var); + + class_Shape_init(&_BackTrace_var); + + class_PSD_monitor_init(&_PSD_Backtrace_var); + + + class_bi_spec_ellipse_init(&_bi_var); + + + class_Guide_four_side_init(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_init(&_g1a2_var); + + class_Guide_four_side_init(&_g1a3_var); + + class_Guide_four_side_init(&_g1b1_var); + + class_Guide_four_side_init(&_g1c1_var); + + + + class_MultiDiskChopper_init(&_wfmc_1_var); + + class_Slit_init(&_pinhole_1_var); + + + class_MultiDiskChopper_init(&_wfmc_2_var); + + class_Guide_four_side_init(&_g2a1_var); + + + class_Guide_four_side_init(&_g2a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_1_var); + + + class_DiskChopper_init(&_bp1_chopper_var); + + class_Guide_four_side_init(&_g2b1_var); + + class_Guide_four_side_init(&_g2b2_var); + + class_Guide_four_side_init(&_g2b3_var); + + class_Guide_four_side_init(&_g2b4_var); + + + class_MultiDiskChopper_init(&_fo_chopper_2_var); + + + class_DiskChopper_init(&_bp_chopper2_var); + + class_Guide_four_side_init(&_g2c1_var); + + + class_DiskChopper_init(&_t0_chopper_alpha_var); + + + class_DiskChopper_init(&_t0_chopper_beta_var); + + class_Guide_four_side_init(&_g3a1_var); + + class_Guide_four_side_init(&_g3a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_3_var); + + class_Guide_four_side_init(&_g3b1_var); + + class_Guide_four_side_init(&_g4a1_var); + + + class_Guide_four_side_init(&_g4a2_var); + + class_Guide_four_side_init(&_g4a3_var); + + + class_MultiDiskChopper_init(&_fo_chopper_4_var); + + class_Guide_four_side_init(&_g4b1_var); + + class_Guide_four_side_init(&_g4b2_var); + + class_Guide_four_side_init(&_g4b3_var); + + class_Guide_four_side_init(&_g4b4_var); + + class_Guide_four_side_init(&_g4b5_var); + + class_Guide_four_side_init(&_g4b6_var); + + class_Guide_four_side_init(&_g5a1_var); + + + class_MultiDiskChopper_init(&_fo_chopper_5_var); + + class_Guide_four_side_init(&_g5b1_var); + + class_Guide_four_side_init(&_g5b2_var); + + class_Guide_four_side_init(&_g5b3_var); + + class_Guide_four_side_init(&_g5b4_var); + + class_Guide_four_side_init(&_g5b5_var); + + class_Guide_four_side_init(&_g5b6_var); + + class_Guide_four_side_init(&_g6a1_var); + + class_Guide_four_side_init(&_g6a2_var); + + class_Guide_four_side_init(&_g6a3_var); + + + + + + class_Slit_init(&_pinhole_2_var); + + + + class_Monitor_nD_init(&_sample_PSD_var); + + class_Monitor_nD_init(&_profile_x_var); + + class_Monitor_nD_init(&_profile_y_var); + + class_Monitor_nD_init(&_wavelength_var); + + class_Monitor_nD_init(&_tof_var); + + class_Monitor_nD_init(&_wavelength_tof_var); + + + if (mcdotrace) display(); + DEBUG_INSTR_END(); + +#ifdef OPENACC +#include +#pragma acc update device(_Origin_var) +#pragma acc update device(_vinROT2_var) +#pragma acc update device(_vinROT1_var) +#pragma acc update device(_vin_var) +#pragma acc update device(_Sphere1_var) +#pragma acc update device(_Source_var) +#pragma acc update device(_optical_axis_var) +#pragma acc update device(_Sphere0_var) +#pragma acc update device(_Focus_cut_var) +#pragma acc update device(_PSD_cut_var) +#pragma acc update device(_BackTrace_var) +#pragma acc update device(_PSD_Backtrace_var) +#pragma acc update device(_Start_of_bi_var) +#pragma acc update device(_bi_var) +#pragma acc update device(_End_of_bi_var) +#pragma acc update device(_NBOA_drawing_1_end_var) +#pragma acc update device(_g1a2_var) +#pragma acc update device(_g1a3_var) +#pragma acc update device(_g1b1_var) +#pragma acc update device(_g1c1_var) +#pragma acc update device(_wfm_position_var) +#pragma acc update device(_wfm_1_position_var) +#pragma acc update device(_wfmc_1_var) +#pragma acc update device(_pinhole_1_var) +#pragma acc update device(_wfm_2_position_var) +#pragma acc update device(_wfmc_2_var) +#pragma acc update device(_g2a1_var) +#pragma acc update device(_monitor_1_position_var) +#pragma acc update device(_g2a2_var) +#pragma acc update device(_fo1_position_var) +#pragma acc update device(_fo_chopper_1_var) +#pragma acc update device(_bp1_position_var) +#pragma acc update device(_bp1_chopper_var) +#pragma acc update device(_g2b1_var) +#pragma acc update device(_g2b2_var) +#pragma acc update device(_g2b3_var) +#pragma acc update device(_g2b4_var) +#pragma acc update device(_fo2_position_var) +#pragma acc update device(_fo_chopper_2_var) +#pragma acc update device(_bp2_position_var) +#pragma acc update device(_bp_chopper2_var) +#pragma acc update device(_g2c1_var) +#pragma acc update device(_t0_start_position_var) +#pragma acc update device(_t0_chopper_alpha_var) +#pragma acc update device(_t0_end_position_var) +#pragma acc update device(_t0_chopper_beta_var) +#pragma acc update device(_g3a1_var) +#pragma acc update device(_g3a2_var) +#pragma acc update device(_fo3_position_var) +#pragma acc update device(_fo_chopper_3_var) +#pragma acc update device(_g3b1_var) +#pragma acc update device(_g4a1_var) +#pragma acc update device(_monitor_2_position_var) +#pragma acc update device(_g4a2_var) +#pragma acc update device(_g4a3_var) +#pragma acc update device(_fo4_position_var) +#pragma acc update device(_fo_chopper_4_var) +#pragma acc update device(_g4b1_var) +#pragma acc update device(_g4b2_var) +#pragma acc update device(_g4b3_var) +#pragma acc update device(_g4b4_var) +#pragma acc update device(_g4b5_var) +#pragma acc update device(_g4b6_var) +#pragma acc update device(_g5a1_var) +#pragma acc update device(_fo5_position_var) +#pragma acc update device(_fo_chopper_5_var) +#pragma acc update device(_g5b1_var) +#pragma acc update device(_g5b2_var) +#pragma acc update device(_g5b3_var) +#pragma acc update device(_g5b4_var) +#pragma acc update device(_g5b5_var) +#pragma acc update device(_g5b6_var) +#pragma acc update device(_g6a1_var) +#pragma acc update device(_g6a2_var) +#pragma acc update device(_g6a3_var) +#pragma acc update device(_guide_end_var) +#pragma acc update device(_monitor_3_position_var) +#pragma acc update device(_start_backend_var) +#pragma acc update device(_optical_axis_backend_var) +#pragma acc update device(_pinhole_2_var) +#pragma acc update device(_graph_var) +#pragma acc update device(_sample_monitor_arm_var) +#pragma acc update device(_sample_PSD_var) +#pragma acc update device(_profile_x_var) +#pragma acc update device(_profile_y_var) +#pragma acc update device(_wavelength_var) +#pragma acc update device(_tof_var) +#pragma acc update device(_wavelength_tof_var) +#pragma acc update device(_sample_position_var) +#pragma acc update device(_instrument_var) +#endif + + return(0); +} /* init */ + +/******************************************************************************* +* components TRACE +*******************************************************************************/ + +#define x (_particle->x) +#define y (_particle->y) +#define z (_particle->z) +#define vx (_particle->vx) +#define vy (_particle->vy) +#define vz (_particle->vz) +#define t (_particle->t) +#define sx (_particle->sx) +#define sy (_particle->sy) +#define sz (_particle->sz) +#define p (_particle->p) +#define mcgravitation (_particle->mcgravitation) +#define mcMagnet (_particle->mcMagnet) +#define allow_backprop (_particle->allow_backprop) +#define _mctmp_a (_particle->_mctmp_a) +#define _mctmp_b (_particle->_mctmp_b) +#define _mctmp_c (_particle->_mctmp_c) +/* if on GPU, globally nullify sprintf,fprintf,printfs */ +/* (Similar defines are available in each comp trace but */ +/* those are not enough to handle external libs etc. ) */ +#ifdef OPENACC +#define fprintf(stderr,...) printf(__VA_ARGS__) +#define sprintf(string,...) printf(__VA_ARGS__) +#define exit(...) noprintf() +#define strcmp(a,b) str_comp(a,b) +#define strlen(a) str_len(a) +#endif +#define SCATTERED (_particle->_scattered) +#define RESTORE (_particle->_restore) +#define RESTORE_NEUTRON(_index, ...) _particle->_restore = _index; +#define ABSORB0 do { DEBUG_STATE(); DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; return; } while(0) +#define ABSORBED (_particle->_absorbed) +#define mcget_run_num() _particle->_uid +#define ABSORB ABSORB0 +#pragma acc routine +void class_Progress_bar_trace(_class_Progress_bar *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_trace] component Origin=Progress_bar() TRACE [Progress_bar:0]"); + + #ifndef OPENACC + double ncount; + ncount = mcget_run_num (); + if (!StartTime) { + time (&StartTime); /* compute starting time */ + IntermediateCnts = 1e3; + } + time_t NowTime; + time (&NowTime); + /* compute initial estimate of computation duration */ + if (!EndTime && ncount >= IntermediateCnts) { + CurrentTime = NowTime; + if (difftime (NowTime, StartTime) > 10 && ncount) { /* wait 10 sec before writing ETA */ + EndTime = StartTime + (time_t)(difftime (NowTime, StartTime) * (double)mcget_ncount () / ncount); + IntermediateCnts = 0; + MPI_MASTER (fprintf (stdout, "\nTrace ETA "); fprintf (stdout, "%s", infostring); + if (difftime (EndTime, StartTime) < 60.0) fprintf (stdout, "%g [s] ", difftime (EndTime, StartTime)); + else if (difftime (EndTime, StartTime) > 3600.0) fprintf (stdout, "%g [h] ", difftime (EndTime, StartTime) / 3600.0); + else fprintf (stdout, "%g [min] ", difftime (EndTime, StartTime) / 60.0); fprintf (stdout, "\n");); + } else + IntermediateCnts += 1e3; + fflush (stdout); + } + + /* display percentage when percent or minutes have reached step */ + if (EndTime && mcget_ncount () && ((minutes && difftime (NowTime, CurrentTime) > minutes * 60) || (percent && !minutes && ncount >= IntermediateCnts))) { + MPI_MASTER (fprintf (stdout, "%llu %%\n", (unsigned long long)(ncount * 100.0 / mcget_ncount ())); fflush (stdout);); + CurrentTime = NowTime; + + IntermediateCnts = ncount + percent * mcget_ncount () / 100; + /* check that next intermediate ncount check is a multiple of the desired percentage */ + IntermediateCnts = floor (IntermediateCnts * 100 / percent / mcget_ncount ()) * percent * mcget_ncount () / 100; + /* raise flag to indicate that we did something */ + SCATTER; + if (flag_save) + save (NULL); + } + #endif +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return; +} /* class_Progress_bar_trace */ + +#pragma acc routine +void class_MCPL_input_once_trace(_class_MCPL_input_once *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_trace] component vin=MCPL_input_once() TRACE [MCPL_input_once:0]"); + + mcpl_input_once_particle_t* ptr = NULL; + + if (current_index >= maximum_index) { + // go back to the start of this worker's particles, rather than accessing out-of-range data + #pragma acc atomic write + current_index = 0; + #ifndef OPENACC + if (!preload) { + // mcpl_seek is not available under openACC, and not used anyway + mcpl_seek (inputfile, first_particle); + } + #endif + times_replayed++; + } + #ifndef OPENACC + // preload can only ever be false if OPENACC is not define (in which case it is the likely code path) + if (!preload) { + ptr = (mcpl_input_once_particle_t*)calloc (1, sizeof (mcpl_input_once_particle_t)); + const mcpl_particle_t* particle; // = (mcpl_particle_t *) calloc(sizeof(mcpl_particle_t),1); + particle = mcpl_read (inputfile); + current_index++; // track how many particles have been accessed, to ensure we don't exceed our slice of the file + if (!particle || particle->pdgcode != 2112) { + ABSORB; + } + // keep track of how many neutrons have been read; but only on the first replay + if (!times_replayed) + read_neutrons++; + if (particle->ekin < Emin * 1e-9 || particle->ekin > Emax * 1e-9) { + ABSORB; + } + mcpl_input_once_translator (polarisationuse, weight_scale, particle, ptr); + // And how many of the read neutrons actually get used + if (!times_replayed) + used_neutrons++; + } else { + #endif + ptr = particles + (_particle->_uid % maximum_index); + #ifdef OPENACC + #pragma acc atomic + current_index++; // track how many particles have been accessed, to ensure we don't exceed our slice of the file + #else + } + #endif + // copy from the component particle struct to the particle ray struct: + if (ptr == NULL) { + fprintf (stderr, "ERROR (%s): component particle struct pointer not set! Crash before out-of-bounds memory access.\n", NAME_CURRENT_COMP); + exit (-1); + } + #pragma acc atomic + emitted_neutrons++; + // this could be done via memcpy if we ensure equal memory layout with the ray's struct + x = ptr->_x; + y = ptr->_y; + z = ptr->_z; + vx = ptr->_vx; + vy = ptr->_vy; + vz = ptr->_vz; + sx = ptr->_sx; + sy = ptr->_sy; + sz = ptr->_sz; + t = ptr->_t; + p = ptr->_p; + + // done with the mcpl_input_once_particle_t pointer -- free it if not pointing into the particles list + if (!preload && ptr != NULL) + free (ptr); + + if (always_smear || times_replayed) { + // fuzz the input + if (pos_smear) { + double tmpx, tmpy, tmpz; + randvec_target_circle (&tmpx, &tmpy, &tmpz, NULL, 0, 0, 1, 0); + NORM (tmpx, tmpy, tmpz); + x += tmpx * pos_smear * rand01 (); + y += tmpy * pos_smear * rand01 (); + z += tmpz * pos_smear * rand01 (); + } + if (v_smear) { + double fraction; + fraction = 1.0 + v_smear * randpm1 (); + vx *= fraction; + vy *= fraction; + vz *= fraction; + } + if (dir_smear) { + double vv, dx, dy, dz; + vv = sqrt (vx * vx + vy * vy + vz * vz); + dx = vx / vv; + dy = vy / vv; + dz = vz / vv; + randvec_target_circle (&dx, &dy, &dz, NULL, dx, dy, dz, sin (dir_smear * DEG2RAD)); + NORM (dx, dy, dz); + vx = dx * vv; + vy = dy * vv; + vz = dz * vv; + } + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + +if (_comp->_index == 4) { // EXTEND 'vin' + SCATTER; + if (!INSTRUMENT_GETPAR(filter)) { + p*=1.56e16; + p/=1e5; + z=z-0.137; + } +} + + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return; +} /* class_MCPL_input_once_trace */ + +#pragma acc routine +void class_PSD_monitor_4PI_trace(_class_PSD_monitor_4PI *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_trace] component Sphere1=PSD_monitor_4PI() TRACE [PSD_monitor_4PI:0]"); + + double t0, t1, phi, theta; + int i, j; + + if (sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, radius) && t1 > 0) { + if (t0 < 0) + t0 = t1; + /* t0 is now time of intersection with the sphere. */ + mcPROP_DT (t0); + phi = atan2 (x, z); + i = floor (nx * (phi / (2 * PI) + 0.5)); + if (i >= nx) + i = nx - 1; /* Special case for phi = PI. */ + else if (i < 0) + i = 0; + theta = asin (y / radius); + j = floor (ny * (theta + PI / 2) / PI + 0.5); + if (j >= ny) + j = ny - 1; /* Special case for y = radius. */ + else if (j < 0) + j = 0; + + double p2 = p * p; + #pragma acc atomic + PSD_N[i][j] = PSD_N[i][j] + 1; + + #pragma acc atomic + PSD_p[i][j] = PSD_p[i][j] + p; + + #pragma acc atomic + PSD_p2[i][j] = PSD_p2[i][j] + p2; + + SCATTER; + } + if (restore_neutron) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + +if (_comp->_index == 8) { // EXTEND 'Sphere0' + ALLOW_BACKPROP; +} + + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return; +} /* class_PSD_monitor_4PI_trace */ + +#pragma acc routine +void class_ESS_butterfly_trace(_class_ESS_butterfly *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_trace] component Source=ESS_butterfly() TRACE [ESS_butterfly:0]"); + + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + /* Are we using time focusing? */ + if (tfocus_width>0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return; +} /* class_ESS_butterfly_trace */ + +#pragma acc routine +void class_Shape_trace(_class_Shape *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define geometry (_comp->_parameters.geometry) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define thickness (_comp->_parameters.thickness) + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define nz (_comp->_parameters.nz) + #define center (_comp->_parameters.center) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_Focus_cut_trace] component Focus_cut=Shape() TRACE [Shape:0]"); + + /* component Shape does nothing */ +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + +if (_comp->_index == 9) { // EXTEND 'Focus_cut' + double xtmp,ytmp,ztmp,vxtmp,vytmp,vztmp; + xtmp=x;ytmp=y;ztmp=z; + vxtmp=vx;vytmp=vy;vztmp=vz; + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + + if (fabs(x)>0.06 || fabs(y)>0.06) { + ABSORB; + } else { + x=xtmp;y=ytmp;z=ztmp; + vx=vxtmp;vy=vytmp;vz=vztmp; + } +} +if (_comp->_index == 11) { // EXTEND 'BackTrace' + /* Propagate back to a small rectangle in front of moderators */ + + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + if (!INSTRUMENT_GETPAR(filter)) { + /* Remove neutrons that are not from around the moderators */ + if (fabs(x)>0.12 || fabs(y)>0.03) { + ABSORB; + } + double myL = (2*PI/V2K)/sqrt(vx*vx + vy*vy + vz*vz); + if ( myL < INSTRUMENT_GETPAR(l_min) || myL > INSTRUMENT_GETPAR(l_max) ) { + ABSORB; + } + } + t+=rand01()*ESS_SOURCE_DURATION; + if (t>3*ESS_SOURCE_DURATION) { + ABSORB; + } +} + + #undef geometry + #undef radius + #undef xwidth + #undef yheight + #undef zdepth + #undef thickness + #undef nx + #undef ny + #undef nz + #undef center + #undef offdata + return; +} /* class_Shape_trace */ + +#pragma acc routine +void class_PSD_monitor_trace(_class_PSD_monitor *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_trace] component PSD_cut=PSD_monitor() TRACE [PSD_monitor:0]"); + + PROP_Z0; + if (x > xmin && x < xmax && y > ymin && y < ymax) { + int i = floor ((x - xmin) * nx / (xmax - xmin)); + int j = floor ((y - ymin) * ny / (ymax - ymin)); + + double p2 = p * p; + #pragma acc atomic + PSD_N[i][j] = PSD_N[i][j] + 1; + + #pragma acc atomic + PSD_p[i][j] = PSD_p[i][j] + p; + + #pragma acc atomic + PSD_p2[i][j] = PSD_p2[i][j] + p2; + + SCATTER; + } + if (restore_neutron) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + +if (_comp->_index == 12) { // EXTEND 'PSD_Backtrace' + ALLOW_BACKPROP; +} + + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return; +} /* class_PSD_monitor_trace */ + +#pragma acc routine +void class_bi_spec_ellipse_trace(_class_bi_spec_ellipse *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_trace] component bi=bi_spec_ellipse() TRACE [bi_spec_ellipse:0]"); + + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return; +} /* class_bi_spec_ellipse_trace */ + +#pragma acc routine +void class_Guide_four_side_trace(_class_Guide_four_side *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_trace] component NBOA_drawing_1_end=Guide_four_side() TRACE [Guide_four_side:0]"); + + + int i; + + PROP_Z0; /* Propagate neutron to guide entrance. */ + /* time variables (INNER walls)*/ + double t1; + double t2w1r; + double t2w1l; + double t2h1u; + double t2h1d; + /* time variables (OUTER walls)*/ + double t2w1rwt; + double t2w1lwt; + double t2h1uwt; + double t2h1dwt; + + /* zcomponent of the intersection point of the neutron trajectory and the ellipse (INNER walls)*/ + double m; + double n; + /* component and length of the surfaces normal vector at the intersection point */ + double nz; + double nx; + double ny; + double n2; + /* prefactor to calculate the velocity vector after the interaction */ + double pf; + /* velocity vector components before the interaction*/ + double vxin; + double vyin; + double vzin; + /* q-vector for the interaction */ + double q; + /* limit variables to determine the interaction position given by the time relative to the guide walls*/ + double xlimitr; + double xlimitrwt; + double xlimitl; + double xlimitlwt; + double ylimitd; + double ylimitdwt; + double ylimitu; + double ylimituwt; + /* interaction position of the neutron given by the interaction time; crosscheck with limit variables*/ + double xtest; + double ytest; + + if (x <= -w1r && x >= -w1rwt && y <= mru1 * x + nru1 && y >= mrd1 * x + nrd1 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT entrance wall and the wall is not transparent*/ + ABSORB; + if (x >= w1l && x <= w1lwt && y <= mlu1 * x + nlu1 && y >= mld1 * x + nld1 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT entrance wall and the wall is not transparent*/ + ABSORB; + if (y <= -h1d && y >= -h1dwt && x <= (y - nld1) / mld1 && x >= (y - nrd1) / mrd1 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM entrance wall and the wall is not transparent*/ + ABSORB; + if (y >= h1u && y <= h1uwt && x <= (y - nlu1) / mlu1 && x >= (y - nru1) / mru1 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP entrance wall and the wall is not transparent*/ + ABSORB; + + do { /* start the propagation loop inside the guide */ + t1 = (l - z) / vz; /* needed time to pass the guide (or rest of the guide without any interaction)*/ + + if (loutwr == 0 && linwr == 0) { + TIME_LINEAR (t1, w1r, w2r, l, x, z, vx, vz, w1rwt, &t2w1r, &t2w1rwt); + } + + if (loutwr != 0 && linwr != 0) { + TIME_ELLIPSE (vx, vz, x, z, a2wr, b2wr, z0wr, t1, a2wrwt, b2wrwt, &t2w1r, &t2w1rwt); + } + + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) { + TIME_PARABEL (vx, vz, x, z, pawr, pbwr, t1, pawrwt, pbwrwt, &t2w1r, &t2w1rwt); + } + + if (loutwl == 0 && linwl == 0) { + TIME_LINEAR_1 (t1, w1l, w2l, l, x, z, vx, vz, w1lwt, &t2w1l, &t2w1lwt); + } + + if (loutwl != 0 && linwl != 0) { + TIME_ELLIPSE_1 (vx, vz, x, z, a2wl, b2wl, z0wl, t1, a2wlwt, b2wlwt, &t2w1l, &t2w1lwt); + } + + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) { + TIME_PARABEL_1 (vx, vz, x, z, pawl, pbwl, t1, pawlwt, pbwlwt, &t2w1l, &t2w1lwt); + } + + if (louthu == 0 && linhu == 0) { + TIME_LINEAR_1 (t1, h1u, h2u, l, y, z, vy, vz, h1uwt, &t2h1u, &t2h1uwt); + } + + if (louthu != 0 && linhu != 0) { + TIME_ELLIPSE_1 (vy, vz, y, z, a2hu, b2hu, z0hu, t1, a2huwt, b2huwt, &t2h1u, &t2h1uwt); + } + + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) { + TIME_PARABEL_1 (vy, vz, y, z, pahu, pbhu, t1, pahuwt, pbhuwt, &t2h1u, &t2h1uwt); + } + + if (louthd == 0 && linhd == 0) { + TIME_LINEAR (t1, h1d, h2d, l, y, z, vy, vz, h1dwt, &t2h1d, &t2h1dwt); + } + + if (louthd != 0 && linhd != 0) { + TIME_ELLIPSE (vy, vz, y, z, a2hd, b2hd, z0hd, t1, a2hdwt, b2hdwt, &t2h1d, &t2h1dwt); + } + + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) { + TIME_PARABEL (vy, vz, y, z, pahd, pbhd, t1, pahdwt, pbhdwt, &t2h1d, &t2h1dwt); + } + + /* TEST OF THE INNER INTERSECTION - TIMES */ + /* possible interactions outside the guide have to be eliminated*/ + + if (t2w1r < t1 + 2.0) { /* test of RIGHT INNER wall interaction time*/ + TEST_UP_DOWN (t2w1r, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1r = t1 + 2.0; + } + } + + if (t2w1l < t1 + 2.0) { /* test of LEFT INNER wall interaction time - analog to right wall*/ + TEST_UP_DOWN (t2w1l, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1l = t1 + 2.0; + } + } + + if (t2h1u < t1 + 2.0) { /* test of TOP INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1u, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1u = t1 + 2.0; + } + } + + if (t2h1d < t1 + 2.0) { /* test of BOTTOM INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1d, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1d = t1 + 2.0; + } + } + + /* TEST OF THE OUTER INTERSECTION - TIMES */ + + if (t2w1rwt < t1 + 2.0) { /* test of RIGHT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1rwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1rwt = t1 + 2.0; + } + } + + if (t2w1lwt < t1 + 2.0) { /* test of LEFT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1lwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1lwt = t1 + 2.0; + } + } + + if (t2h1uwt < t1 + 2.0) { /* test of TOP OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1uwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1uwt = t1 + 2.0; + } + } + + if (t2h1dwt < t1 + 2.0) { /* test of BOTTOM OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1dwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1dwt = t1 + 2.0; + } + } + + /* which wall is hit first? which geometry? */ + + if (t1 < t2w1r && t1 < t2w1l && t1 < t2h1u && t1 < t2h1d && t1 < t2w1rwt && t1 < t2w1lwt && t1 < t2h1uwt && t1 < t2h1dwt) { + i = 1; + } + + /* neutron interacts with the INNER elliptic right wall and this wall is NOT transparent*/ + + if (t2w1r > 0 && t2w1r < t1 && t2w1r < t2w1l && t2w1r < t2h1u && t2w1r < t2h1d && t2w1r < t2w1rwt && t2w1r < t2w1lwt && t2w1r < t2h1uwt && t2w1r < t2h1dwt) { + if (mxr == 0) + i = 18; + else { + if (mxr == -1) + i = 14; + else { + if ((linwr != 0) && (loutwr != 0)) + i = 2; /* the neutron will be reflected*/ + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 3; + else { + if (loutwr == 0 && linwr == 0) + i = 4; + } + } + } + } + } + + /* neutron interacts with the elliptic left INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1l > 0 && t2w1l < t1 && t2w1l < t2w1r && t2w1l < t2h1u && t2w1l < t2h1d && t2w1l < t2w1rwt && t2w1l < t2w1lwt && t2w1l < t2h1uwt && t2w1l < t2h1dwt) { + if (mxl == 0) + i = 19; + else { + if (mxl == -1) + i = 15; + else { + if ((linwl != 0) && (loutwl != 0)) + i = 5; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 6; + else { + if (loutwl == 0 && linwl == 0) + i = 7; + } + } + } + } + } + + /* neutron interacts with the elliptic top INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1u > 0 && t2h1u < t1 && t2h1u < t2w1r && t2h1u < t2w1l && t2h1u < t2h1d && t2h1u < t2w1rwt && t2h1u < t2w1lwt && t2h1u < t2h1uwt && t2h1u < t2h1dwt) { + if (myu == 0) + i = 20; + else { + if (myu == -1) + i = 16; + else { + if (louthu != 0 && linhu != 0) + i = 8; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 9; + else { + if (louthu == 0 && linhu == 0) + i = 10; + } + } + } + } + } + + /* neutron interacts with the elliptic down INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1d > 0 && t2h1d < t1 && t2h1d < t2w1r && t2h1d < t2w1l && t2h1d < t2h1u && t2h1d < t2w1rwt && t2h1d < t2w1lwt && t2h1d < t2h1uwt && t2h1d < t2h1dwt) { + if (myd == 0) + i = 21; + else { + if (myd == -1) + i = 17; + else { + if (louthd != 0 && linhd != 0) + i = 11; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 12; + else { + if (louthd == 0 && linhd == 0) + i = 13; + } + } + } + } + } + + /* EVERTHING AGAIN FOR THE OUTER WALLS */ + + /* neutron interacts with the elliptic right OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1rwt > 0 && t2w1rwt < t1 && t2w1rwt < t2w1r && t2w1rwt < t2w1l && t2w1rwt < t2h1u && t2w1rwt < t2h1d && t2w1rwt < t2w1lwt && t2w1rwt < t2h1uwt + && t2w1rwt < t2h1dwt) { + if (mxrOW == 0) + i = 34; + else { + if (mxrOW == -1) + i = 38; + else { + if (linwr != 0 && loutwr != 0) + i = 22; + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 23; + else { + if (loutwr == 0 && linwr == 0) + i = 24; + } + } + } + } + } + + /* neutron interacts with the elliptic left OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1lwt > 0 && t2w1lwt < t1 && t2w1lwt < t2w1r && t2w1lwt < t2w1l && t2w1lwt < t2h1u && t2w1lwt < t2h1d && t2w1lwt < t2w1rwt && t2w1lwt < t2h1uwt + && t2w1lwt < t2h1dwt) { + if (mxlOW == 0) + i = 35; + else { + if (mxlOW == -1) + i = 39; + else { + if (linwl != 0 && loutwl != 0) + i = 25; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 26; + else { + if (loutwl == 0 && linwl == 0) + i = 27; + } + } + } + } + } + + /* neutron interacts with the elliptic top OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1uwt > 0 && t2h1uwt < t1 && t2h1uwt < t2w1r && t2h1uwt < t2w1l && t2h1uwt < t2h1u && t2h1uwt < t2h1d && t2h1uwt < t2w1rwt && t2h1uwt < t2w1lwt + && t2h1uwt < t2h1dwt) { + if (myuOW == 0) + i = 36; + else { + if (myuOW == -1) + i = 40; + else { + if (louthu != 0 && linhu != 0) + i = 28; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 29; + else { + if (louthu == 0 && linhu == 0) + i = 30; + } + } + } + } + } + + /* neutron interacts with the elliptic down OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1dwt > 0 && t2h1dwt < t1 && t2h1dwt < t2w1r && t2h1dwt < t2w1l && t2h1dwt < t2h1u && t2h1dwt < t2h1d && t2h1dwt < t2w1rwt && t2h1dwt < t2w1lwt + && t2h1dwt < t2h1uwt) { + if (mydOW == 0) + i = 37; + else { + if (mydOW == -1) + i = 41; + else { + if (louthd != 0 && linhd != 0) + i = 31; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 32; + else { + if (louthd == 0 && linhd == 0) + i = 33; + } + } + } + } + } + + switch (i) { /* the principal for the calculation is in every case the same: 1.) one needs the surface normal vector at the intersection point. 2.) + calculation of the velocity vector after the interaction by */ + /* vector subrtation (the basic idea and explanations can be found in the 'Mcstas component manual' in the section 'straight guide') */ + + case 1: /* no interaction, propagation to the end of the guide */ + PROP_DT (t1); + break; + + case 2: + PROP_DT (t2w1r); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = -x; /* surface normal vector components at the intersection point */ + nz = -x * x / ((a2wr / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 3: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawr; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 4: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = w2r - w1r; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 5: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -x * x / ((a2wl / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + SCATTER; + break; + + case 6: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawl; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 7: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = w2l - w1l; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 8: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hu / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 9: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahu; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 10: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = h2u - h1u; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 11: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hd / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 12: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahd; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 13: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = h2d - h1d; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 14: /* transperent walls - no interaction */ + PROP_DT (t2w1r); + break; + + case 15: + PROP_DT (t2w1l); + break; + + case 16: + PROP_DT (t2h1u); + break; + + case 17: + PROP_DT (t2h1d); + break; + + case 18: /* absorbing walls - neutrons are absorbed at interaction point*/ + PROP_DT (t2w1r); + ABSORB; + break; + + case 19: + PROP_DT (t2w1l); + ABSORB; + break; + + case 20: + PROP_DT (t2h1u); + ABSORB; + break; + + case 21: + PROP_DT (t2h1d); + ABSORB; + break; + + /* OUTER WALLS - analog to inner walls, but sign of surface normal vector is changed */ + + case 22: + PROP_DT (t2w1rwt); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = x; /* surface normal vector components at the intersection point */ + nz = x * x / ((a2wrwt / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 23: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawrwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 24: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = -(w2r - w1r); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 25: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = x * x / ((a2wlwt / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 26: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawlwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 27: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = -(w2l - w1l); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 28: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2huwt / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 29: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahuwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 30: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = -(h2u - h1u); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 31: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2hdwt / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 32: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahdwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 33: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = -(h2d - h1d); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 34: + PROP_DT (t2w1rwt); + ABSORB; + break; + + case 35: + PROP_DT (t2w1lwt); + ABSORB; + break; + + case 36: + PROP_DT (t2h1uwt); + ABSORB; + break; + + case 37: + PROP_DT (t2h1dwt); + ABSORB; + break; + + case 38: + PROP_DT (t2w1rwt); + break; + + case 39: + PROP_DT (t2w1lwt); + break; + + case 40: + PROP_DT (t2h1uwt); + break; + + case 41: + PROP_DT (t2h1dwt); + break; + } + + if (((i == 2) || (i == 3) || (i == 4))) { /* calculating the the probability that the neutron is reflected at the RIGHT INNER wall*/ + if (RIreflect && strlen (RIreflect)) { + p = Table_Value (riTable, q, 1); + } else { + if (mxr > 0 && q > Qcxr) { + double arg = (q - mxr * Qcxr) / Wxr; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxr * (q - Qcxr)); + } else + ABSORB; + } + } + } + + if (((i == 22) || (i == 23) || (i == 24))) { /* calculating the the probability that the neutron is reflected at the RIGHT OUTER wall*/ + if (ROreflect && strlen (ROreflect)) { + p = Table_Value (roTable, q, 1); + } else { + if (mxrOW > 0 && q > QcxrOW) { + double arg = (q - mxrOW * QcxrOW) / WxrOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxrOW * (q - QcxrOW)); + } else + ABSORB; + } + } + } + + if (((i == 5) || (i == 6) || (i == 7))) { /* calculating the the probability that the neutron is reflected at the LEFT INNER wall*/ + if (LIreflect && strlen (LIreflect)) { + p = Table_Value (liTable, q, 1); + } else { + if (mxl > 0 && q > Qcxl) { + double arg = (q - mxl * Qcxl) / Wxl; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxl * (q - Qcxl)); + } else + ABSORB; + } + } + } + + if (((i == 25) || (i == 26) || (i == 27))) { /* calculating the the probability that the neutron is reflected at the LEFT OUTER wall*/ + if (LOreflect && strlen (LOreflect)) { + p = Table_Value (loTable, q, 1); + } else { + if (mxlOW > 0 && q > QcxlOW) { + double arg = (q - mxlOW * QcxlOW) / WxlOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxlOW * (q - QcxlOW)); + } else + ABSORB; + } + } + } + + if (((i == 8) || (i == 9) || (i == 10))) { /* calculating the the probability that the neutron is reflected at the TOP INNER wall*/ + if (UIreflect && strlen (UIreflect)) { + p = Table_Value (uiTable, q, 1); + } else { + if (myu > 0 && q > Qcyu) { + double arg = (q - myu * Qcyu) / Wyu; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayu * (q - Qcyu)); + } else + ABSORB; + } + } + } + + if (((i == 28) || (i == 29) || (i == 30))) { /* calculating the the probability that the neutron is reflected at the TOP OUTER wall*/ + if (UOreflect && strlen (UOreflect)) { + p = Table_Value (uoTable, q, 1); + } else { + if (myuOW > 0 && q > QcyuOW) { + double arg = (q - myuOW * QcyuOW) / WyuOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayuOW * (q - QcyuOW)); + } else + ABSORB; + } + } + } + + if (((i == 11) || (i == 12) || (i == 13))) { /* calculating the the probability that the neutron is reflected at the BOTTOM INNER wall*/ + if (DIreflect && strlen (DIreflect)) { + p = Table_Value (diTable, q, 1); + } else { + if (myd > 0 && q > Qcyd) { + double arg = (q - myd * Qcyd) / Wyd; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayd * (q - Qcyd)); + } else + ABSORB; + } + } + } + + if (((i == 31) || (i == 32) || (i == 33))) { /* calculating the the probability that the neutron is reflected at the BOTTOM OUTER wall*/ + if (DOreflect && strlen (DOreflect)) { + p = Table_Value (doTable, q, 1); + } else { + if (mydOW > 0 && q > QcydOW) { + double arg = (q - mydOW * QcydOW) / WydOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaydOW * (q - QcydOW)); + } else + ABSORB; + } + } + } + + p *= R0; + SCATTER; + + } while (z < l); /* repeat the interaction loop untill the neutron pass the end of guide */ + + if (x <= -w2r && x >= -w2rwt && y <= mru2 * x + nru2 && y >= mrd2 * x + nrd2 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT exit wall and the wall is not transparent*/ + ABSORB; + if (x >= w2l && x <= w2lwt && y <= mlu2 * x + nlu2 && y >= mld2 * x + nld2 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT exit wall and the wall is not transparent*/ + ABSORB; + if (y <= -h2d && y >= -h2dwt && x <= (y - nld2) / mld2 && x >= (y - nrd2) / mrd2 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM exit wall and the wall is not transparent*/ + ABSORB; + if (y >= h2u && y <= h2uwt && x <= (y - nlu2) / mlu2 && x >= (y - nru2) / mru2 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP exit wall and the wall is not transparent*/ + ABSORB; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return; +} /* class_Guide_four_side_trace */ + +#pragma acc routine +void class_MultiDiskChopper_trace(_class_MultiDiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_trace] component wfmc_1=MultiDiskChopper() TRACE [MultiDiskChopper:0]"); + + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + while (islit < nslits && !SCATTERED) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + SCATTER; + + islit++; + } + if (!SCATTERED) + ABSORB; + } + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return; +} /* class_MultiDiskChopper_trace */ + +#pragma acc routine +void class_Slit_trace(_class_Slit *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_trace] component pinhole_1=Slit() TRACE [Slit:0]"); + + PROP_Z0; + if (!isradial ? (x < xmin || x > xmax || y < ymin || y > ymax) : (x * x + y * y > radius * radius)) + ABSORB; + else + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return; +} /* class_Slit_trace */ + +#pragma acc routine +void class_DiskChopper_trace(_class_DiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_trace] component bp1_chopper=DiskChopper() TRACE [DiskChopper:0]"); + + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + toff = fabs (t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + ABSORB; + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return; +} /* class_DiskChopper_trace */ + +#pragma acc routine +void class_Graphite_Diffuser_trace(_class_Graphite_Diffuser *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_trace] component graph=Graphite_Diffuser() TRACE [Graphite_Diffuser:0]"); + + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || y_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return; +} /* class_Graphite_Diffuser_trace */ + +#pragma acc routine +void class_Monitor_nD_trace(_class_Monitor_nD *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_trace] component sample_PSD=Monitor_nD() TRACE [Monitor_nD:0]"); + + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return; +} /* class_Monitor_nD_trace */ + +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' TRACE +***************************************************************************** */ + +#ifndef FUNNEL +#pragma acc routine +int raytrace(_class_particle* _particle) { /* single event propagation, called by mccode_main for ODIN_MCPL_baseline:TRACE */ + + /* init variables and counters for TRACE */ + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++;} while(0) + #define ABSORB ABSORB0 + DEBUG_ENTER(); + DEBUG_STATE(); + _particle->flag_nocoordschange=0; /* Init */ + _class_particle _particle_save=*_particle; + /* the main iteration loop for one incoming event */ + while (!ABSORBED) { /* iterate event until absorbed */ + /* send particle event to component instance, one after the other */ + /* begin component Origin=Progress_bar() [1] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Origin_var._rotation_is_identity) { + if(!_Origin_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 1) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Origin_var._name); + DEBUG_STATE(); + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Origin [1] */ + /* begin component vinROT2=Arm() [2] */ + if (!ABSORBED && _particle->_index == 2) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component vinROT2 [2] */ + /* begin component vinROT1=Arm() [3] */ + if (!ABSORBED && _particle->_index == 3) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component vinROT1 [3] */ + /* begin component vin=MCPL_input_once() [4] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_vin_var._rotation_is_identity) { + if(!_vin_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _vin_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_vin_var._position_relative, _vin_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 4) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_vin_var._name); + DEBUG_STATE(); + class_MCPL_input_once_trace(&_vin_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component vin [4] */ + /* begin component Sphere1=PSD_monitor_4PI() [5] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Sphere1_var._rotation_is_identity) { + if(!_Sphere1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Sphere1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Sphere1_var._position_relative, _Sphere1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 5) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Sphere1_var._name); + DEBUG_STATE(); + class_PSD_monitor_4PI_trace(&_Sphere1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Sphere1 [5] */ + /* begin component Source=ESS_butterfly() [6] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Source_var._rotation_is_identity) { + if(!_Source_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 6) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Source_var._name); + DEBUG_STATE(); + if ((( 0 == 1 ))) // conditional WHEN execution + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Source [6] */ + /* begin component optical_axis=Arm() [7] */ + if (!ABSORBED && _particle->_index == 7) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis [7] */ + /* begin component Sphere0=PSD_monitor_4PI() [8] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Sphere0_var._rotation_is_identity) { + if(!_Sphere0_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Sphere0_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Sphere0_var._position_relative, _Sphere0_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 8) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Sphere0_var._name); + DEBUG_STATE(); + class_PSD_monitor_4PI_trace(&_Sphere0_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Sphere0 [8] */ + /* begin component Focus_cut=Shape() [9] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Focus_cut_var._rotation_is_identity) { + if(!_Focus_cut_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Focus_cut_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Focus_cut_var._position_relative, _Focus_cut_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 9) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Focus_cut_var._name); + DEBUG_STATE(); + if ((( ! _instrument_var._parameters.filter ))) // conditional WHEN execution + class_Shape_trace(&_Focus_cut_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Focus_cut [9] */ + /* begin component PSD_cut=PSD_monitor() [10] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_PSD_cut_var._rotation_is_identity) { + if(!_PSD_cut_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _PSD_cut_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_PSD_cut_var._position_relative, _PSD_cut_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 10) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_PSD_cut_var._name); + DEBUG_STATE(); + class_PSD_monitor_trace(&_PSD_cut_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component PSD_cut [10] */ + /* begin component BackTrace=Shape() [11] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_BackTrace_var._rotation_is_identity) { + if(!_BackTrace_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _BackTrace_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_BackTrace_var._position_relative, _BackTrace_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 11) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_BackTrace_var._name); + DEBUG_STATE(); + class_Shape_trace(&_BackTrace_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component BackTrace [11] */ + /* begin component PSD_Backtrace=PSD_monitor() [12] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_PSD_Backtrace_var._rotation_is_identity) { + if(!_PSD_Backtrace_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _PSD_Backtrace_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_PSD_Backtrace_var._position_relative, _PSD_Backtrace_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 12) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_PSD_Backtrace_var._name); + DEBUG_STATE(); + class_PSD_monitor_trace(&_PSD_Backtrace_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component PSD_Backtrace [12] */ + /* begin component Start_of_bi=Arm() [13] */ + if (!ABSORBED && _particle->_index == 13) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component Start_of_bi [13] */ + /* begin component bi=bi_spec_ellipse() [14] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bi_var._rotation_is_identity) { + if(!_bi_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 14) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bi_var._name); + DEBUG_STATE(); + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bi [14] */ + /* begin component End_of_bi=Arm() [15] */ + if (!ABSORBED && _particle->_index == 15) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component End_of_bi [15] */ + /* begin component NBOA_drawing_1_end=Guide_four_side() [16] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_NBOA_drawing_1_end_var._rotation_is_identity) { + if(!_NBOA_drawing_1_end_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 16) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_NBOA_drawing_1_end_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component NBOA_drawing_1_end [16] */ + /* begin component g1a2=Guide_four_side() [17] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a2_var._rotation_is_identity) { + if(!_g1a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 17) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a2 [17] */ + /* begin component g1a3=Guide_four_side() [18] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a3_var._rotation_is_identity) { + if(!_g1a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 18) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a3 [18] */ + /* begin component g1b1=Guide_four_side() [19] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1b1_var._rotation_is_identity) { + if(!_g1b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 19) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1b1 [19] */ + /* begin component g1c1=Guide_four_side() [20] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1c1_var._rotation_is_identity) { + if(!_g1c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 20) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1c1 [20] */ + /* begin component wfm_position=Arm() [21] */ + if (!ABSORBED && _particle->_index == 21) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_position [21] */ + /* begin component wfm_1_position=Arm() [22] */ + if (!ABSORBED && _particle->_index == 22) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_1_position [22] */ + /* begin component wfmc_1=MultiDiskChopper() [23] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_1_var._rotation_is_identity) { + if(!_wfmc_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 23) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_1 [23] */ + /* begin component pinhole_1=Slit() [24] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_1_var._rotation_is_identity) { + if(!_pinhole_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 24) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_1_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_1 [24] */ + /* begin component wfm_2_position=Arm() [25] */ + if (!ABSORBED && _particle->_index == 25) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_2_position [25] */ + /* begin component wfmc_2=MultiDiskChopper() [26] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_2_var._rotation_is_identity) { + if(!_wfmc_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 26) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_2 [26] */ + /* begin component g2a1=Guide_four_side() [27] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a1_var._rotation_is_identity) { + if(!_g2a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 27) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a1 [27] */ + /* begin component monitor_1_position=Arm() [28] */ + if (!ABSORBED && _particle->_index == 28) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_1_position [28] */ + /* begin component g2a2=Guide_four_side() [29] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a2_var._rotation_is_identity) { + if(!_g2a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 29) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a2 [29] */ + /* begin component fo1_position=Arm() [30] */ + if (!ABSORBED && _particle->_index == 30) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo1_position [30] */ + /* begin component fo_chopper_1=MultiDiskChopper() [31] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_1_var._rotation_is_identity) { + if(!_fo_chopper_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 31) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_1 [31] */ + /* begin component bp1_position=Arm() [32] */ + if (!ABSORBED && _particle->_index == 32) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp1_position [32] */ + /* begin component bp1_chopper=DiskChopper() [33] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp1_chopper_var._rotation_is_identity) { + if(!_bp1_chopper_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 33) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp1_chopper_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp1_chopper [33] */ + /* begin component g2b1=Guide_four_side() [34] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b1_var._rotation_is_identity) { + if(!_g2b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 34) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b1 [34] */ + /* begin component g2b2=Guide_four_side() [35] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b2_var._rotation_is_identity) { + if(!_g2b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 35) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b2 [35] */ + /* begin component g2b3=Guide_four_side() [36] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b3_var._rotation_is_identity) { + if(!_g2b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 36) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b3 [36] */ + /* begin component g2b4=Guide_four_side() [37] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b4_var._rotation_is_identity) { + if(!_g2b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 37) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b4 [37] */ + /* begin component fo2_position=Arm() [38] */ + if (!ABSORBED && _particle->_index == 38) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo2_position [38] */ + /* begin component fo_chopper_2=MultiDiskChopper() [39] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_2_var._rotation_is_identity) { + if(!_fo_chopper_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 39) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_2 [39] */ + /* begin component bp2_position=Arm() [40] */ + if (!ABSORBED && _particle->_index == 40) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp2_position [40] */ + /* begin component bp_chopper2=DiskChopper() [41] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp_chopper2_var._rotation_is_identity) { + if(!_bp_chopper2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 41) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp_chopper2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp_chopper2 [41] */ + /* begin component g2c1=Guide_four_side() [42] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2c1_var._rotation_is_identity) { + if(!_g2c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 42) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2c1 [42] */ + /* begin component t0_start_position=Arm() [43] */ + if (!ABSORBED && _particle->_index == 43) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_start_position [43] */ + /* begin component t0_chopper_alpha=DiskChopper() [44] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_alpha_var._rotation_is_identity) { + if(!_t0_chopper_alpha_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 44) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_alpha_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_alpha [44] */ + /* begin component t0_end_position=Arm() [45] */ + if (!ABSORBED && _particle->_index == 45) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_end_position [45] */ + /* begin component t0_chopper_beta=DiskChopper() [46] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_beta_var._rotation_is_identity) { + if(!_t0_chopper_beta_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 46) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_beta_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_beta [46] */ + /* begin component g3a1=Guide_four_side() [47] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a1_var._rotation_is_identity) { + if(!_g3a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 47) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a1 [47] */ + /* begin component g3a2=Guide_four_side() [48] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a2_var._rotation_is_identity) { + if(!_g3a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 48) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a2 [48] */ + /* begin component fo3_position=Arm() [49] */ + if (!ABSORBED && _particle->_index == 49) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo3_position [49] */ + /* begin component fo_chopper_3=MultiDiskChopper() [50] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_3_var._rotation_is_identity) { + if(!_fo_chopper_3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 50) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_3_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_3 [50] */ + /* begin component g3b1=Guide_four_side() [51] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3b1_var._rotation_is_identity) { + if(!_g3b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 51) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3b1 [51] */ + /* begin component g4a1=Guide_four_side() [52] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a1_var._rotation_is_identity) { + if(!_g4a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 52) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a1 [52] */ + /* begin component monitor_2_position=Arm() [53] */ + if (!ABSORBED && _particle->_index == 53) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_2_position [53] */ + /* begin component g4a2=Guide_four_side() [54] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a2_var._rotation_is_identity) { + if(!_g4a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 54) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a2 [54] */ + /* begin component g4a3=Guide_four_side() [55] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a3_var._rotation_is_identity) { + if(!_g4a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 55) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a3 [55] */ + /* begin component fo4_position=Arm() [56] */ + if (!ABSORBED && _particle->_index == 56) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo4_position [56] */ + /* begin component fo_chopper_4=MultiDiskChopper() [57] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_4_var._rotation_is_identity) { + if(!_fo_chopper_4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 57) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_4_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_4 [57] */ + /* begin component g4b1=Guide_four_side() [58] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b1_var._rotation_is_identity) { + if(!_g4b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 58) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b1 [58] */ + /* begin component g4b2=Guide_four_side() [59] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b2_var._rotation_is_identity) { + if(!_g4b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 59) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b2 [59] */ + /* begin component g4b3=Guide_four_side() [60] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b3_var._rotation_is_identity) { + if(!_g4b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 60) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b3 [60] */ + /* begin component g4b4=Guide_four_side() [61] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b4_var._rotation_is_identity) { + if(!_g4b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 61) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b4 [61] */ + /* begin component g4b5=Guide_four_side() [62] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b5_var._rotation_is_identity) { + if(!_g4b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 62) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b5 [62] */ + /* begin component g4b6=Guide_four_side() [63] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b6_var._rotation_is_identity) { + if(!_g4b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 63) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b6 [63] */ + /* begin component g5a1=Guide_four_side() [64] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5a1_var._rotation_is_identity) { + if(!_g5a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 64) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5a1 [64] */ + /* begin component fo5_position=Arm() [65] */ + if (!ABSORBED && _particle->_index == 65) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo5_position [65] */ + /* begin component fo_chopper_5=MultiDiskChopper() [66] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_5_var._rotation_is_identity) { + if(!_fo_chopper_5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 66) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_5_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_5 [66] */ + /* begin component g5b1=Guide_four_side() [67] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b1_var._rotation_is_identity) { + if(!_g5b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 67) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b1 [67] */ + /* begin component g5b2=Guide_four_side() [68] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b2_var._rotation_is_identity) { + if(!_g5b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 68) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b2 [68] */ + /* begin component g5b3=Guide_four_side() [69] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b3_var._rotation_is_identity) { + if(!_g5b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 69) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b3 [69] */ + /* begin component g5b4=Guide_four_side() [70] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b4_var._rotation_is_identity) { + if(!_g5b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 70) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b4 [70] */ + /* begin component g5b5=Guide_four_side() [71] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b5_var._rotation_is_identity) { + if(!_g5b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 71) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b5 [71] */ + /* begin component g5b6=Guide_four_side() [72] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b6_var._rotation_is_identity) { + if(!_g5b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 72) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b6 [72] */ + /* begin component g6a1=Guide_four_side() [73] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a1_var._rotation_is_identity) { + if(!_g6a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 73) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a1 [73] */ + /* begin component g6a2=Guide_four_side() [74] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a2_var._rotation_is_identity) { + if(!_g6a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 74) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a2 [74] */ + /* begin component g6a3=Guide_four_side() [75] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a3_var._rotation_is_identity) { + if(!_g6a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 75) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a3 [75] */ + /* begin component guide_end=Arm() [76] */ + if (!ABSORBED && _particle->_index == 76) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component guide_end [76] */ + /* begin component monitor_3_position=Arm() [77] */ + if (!ABSORBED && _particle->_index == 77) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_3_position [77] */ + /* begin component start_backend=Arm() [78] */ + if (!ABSORBED && _particle->_index == 78) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component start_backend [78] */ + /* begin component optical_axis_backend=Arm() [79] */ + if (!ABSORBED && _particle->_index == 79) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis_backend [79] */ + /* begin component pinhole_2=Slit() [80] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_2_var._rotation_is_identity) { + if(!_pinhole_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 80) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_2_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_2 [80] */ + /* begin component graph=Graphite_Diffuser() [81] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_graph_var._rotation_is_identity) { + if(!_graph_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 81) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_graph_var._name); + DEBUG_STATE(); + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component graph [81] */ + /* begin component sample_monitor_arm=Arm() [82] */ + if (!ABSORBED && _particle->_index == 82) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_monitor_arm [82] */ + /* begin component sample_PSD=Monitor_nD() [83] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_sample_PSD_var._rotation_is_identity) { + if(!_sample_PSD_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 83) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_sample_PSD_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component sample_PSD [83] */ + /* begin component profile_x=Monitor_nD() [84] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_x_var._rotation_is_identity) { + if(!_profile_x_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 84) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_x_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_x [84] */ + /* begin component profile_y=Monitor_nD() [85] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_y_var._rotation_is_identity) { + if(!_profile_y_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 85) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_y_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_y [85] */ + /* begin component wavelength=Monitor_nD() [86] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_var._rotation_is_identity) { + if(!_wavelength_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 86) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength [86] */ + /* begin component tof=Monitor_nD() [87] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_tof_var._rotation_is_identity) { + if(!_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 87) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component tof [87] */ + /* begin component wavelength_tof=Monitor_nD() [88] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_tof_var._rotation_is_identity) { + if(!_wavelength_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 88) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength_tof [88] */ + /* begin component sample_position=Arm() [89] */ + if (!ABSORBED && _particle->_index == 89) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_position [89] */ + if (_particle->_index > 89) + ABSORBED++; /* absorbed when passed all components */ + } /* while !ABSORBED */ + + DEBUG_LEAVE() + particle_restore(_particle, &_particle_save); + DEBUG_STATE() + // If TOF_TRAIN we need to nuke internal arrays! + #ifdef TOF_TRAIN + if (_particle->t_offset) free(_particle->t_offset); + if (_particle->p_trains) free(_particle->p_trains); + if (_particle->alive_trains) free(_particle->alive_trains); + #endif + + return(_particle->_index); +} /* raytrace */ + +/* loop to generate events and call raytrace() propagate them */ +void raytrace_all(unsigned long long ncount, unsigned long seed) { + + /* CPU-loop */ + unsigned long long loops; + loops = ceil((double)ncount/gpu_innerloop); + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #ifdef OPENACC + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around GPU kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + #endif + + /* if on GPU, re-nullify printf */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #pragma acc parallel loop num_gangs(numgangs) vector_length(vecsize) + for (unsigned long pidx=0 ; pidx < gpu_innerloop ; pidx++) { + _class_particle particleN = mcgenstate(); // initial particle + _class_particle* _particle = &particleN; + particleN._uid = pidx; + #ifdef USE_MPI + particleN._uid += mpi_node_rank * ncount; + #endif + + srandom(_hash((pidx+1)*(seed+1))); + + raytrace(_particle); + } /* inner for */ + seed = seed+gpu_innerloop; + } /* CPU for */ + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + MPI_MASTER( + printf("*** TRACE end *** \n"); + ); +} /* raytrace_all */ + +#endif //no-FUNNEL + +#ifdef FUNNEL +// Alternative raytrace algorithm which iterates all particles through +// one component at the time, can remove absorbs from the next loop and +// switch between cpu/gpu. +void raytrace_all_funnel(unsigned long long ncount, unsigned long seed) { + + // set up outer (CPU) loop / particle batches + unsigned long long loops; + + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + #ifdef OPENACC + loops = ceil((double)ncount/gpu_innerloop); + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + // create particles struct and pointer arrays (same memory used by all batches) + _class_particle* particles = malloc(gpu_innerloop*sizeof(_class_particle)); + _class_particle* pbuffer = malloc(gpu_innerloop*sizeof(_class_particle)); + long livebatchsize = gpu_innerloop; + + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; } while(0) + #define ABSORB ABSORB0 + // outer loop / particle batches + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + + // init particles + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + // generate particle state, set loop index and seed + particles[pidx] = mcgenstate(); + _class_particle* _particle = particles + pidx; + _particle->_uid = pidx; + #ifdef USE_MPI + _particle->_uid += mpi_node_rank * ncount; + #endif + srandom(_hash((pidx+1)*(seed+1))); // _particle->state usage built into srandom macro + } + + // iterate components + + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + _class_particle* _particle = &particles[pidx]; + _class_particle _particle_save; + + // Origin + if (!ABSORBED && _particle->_index == 1) { +#ifndef MULTICORE + if (_Origin_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // vinROT2 + if (!ABSORBED && _particle->_index == 2) { + _particle->_index++; + } + + // vinROT1 + if (!ABSORBED && _particle->_index == 3) { + _particle->_index++; + } + + // vin + if (!ABSORBED && _particle->_index == 4) { +#ifndef MULTICORE + if (_vin_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _vin_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_vin_var._position_relative, _vin_var._rotation_relative, _particle); + _particle_save = *_particle; + class_MCPL_input_once_trace(&_vin_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Sphere1 + if (!ABSORBED && _particle->_index == 5) { +#ifndef MULTICORE + if (_Sphere1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Sphere1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Sphere1_var._position_relative, _Sphere1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_PSD_monitor_4PI_trace(&_Sphere1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Source + if (!ABSORBED && _particle->_index == 6) { +#ifndef MULTICORE + if (_Source_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( 0 == 1 ))) // conditional WHEN + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // optical_axis + if (!ABSORBED && _particle->_index == 7) { + _particle->_index++; + } + + // Sphere0 + if (!ABSORBED && _particle->_index == 8) { +#ifndef MULTICORE + if (_Sphere0_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Sphere0_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Sphere0_var._position_relative, _Sphere0_var._rotation_relative, _particle); + _particle_save = *_particle; + class_PSD_monitor_4PI_trace(&_Sphere0_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Focus_cut + if (!ABSORBED && _particle->_index == 9) { +#ifndef MULTICORE + if (_Focus_cut_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Focus_cut_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Focus_cut_var._position_relative, _Focus_cut_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( ! _instrument_var._parameters.filter ))) // conditional WHEN + class_Shape_trace(&_Focus_cut_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // PSD_cut + if (!ABSORBED && _particle->_index == 10) { +#ifndef MULTICORE + if (_PSD_cut_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _PSD_cut_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_PSD_cut_var._position_relative, _PSD_cut_var._rotation_relative, _particle); + _particle_save = *_particle; + class_PSD_monitor_trace(&_PSD_cut_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // BackTrace + if (!ABSORBED && _particle->_index == 11) { +#ifndef MULTICORE + if (_BackTrace_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _BackTrace_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_BackTrace_var._position_relative, _BackTrace_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Shape_trace(&_BackTrace_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // PSD_Backtrace + if (!ABSORBED && _particle->_index == 12) { +#ifndef MULTICORE + if (_PSD_Backtrace_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _PSD_Backtrace_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_PSD_Backtrace_var._position_relative, _PSD_Backtrace_var._rotation_relative, _particle); + _particle_save = *_particle; + class_PSD_monitor_trace(&_PSD_Backtrace_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Start_of_bi + if (!ABSORBED && _particle->_index == 13) { + _particle->_index++; + } + + // bi + if (!ABSORBED && _particle->_index == 14) { +#ifndef MULTICORE + if (_bi_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + _particle_save = *_particle; + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // End_of_bi + if (!ABSORBED && _particle->_index == 15) { + _particle->_index++; + } + + // NBOA_drawing_1_end + if (!ABSORBED && _particle->_index == 16) { +#ifndef MULTICORE + if (_NBOA_drawing_1_end_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a2 + if (!ABSORBED && _particle->_index == 17) { +#ifndef MULTICORE + if (_g1a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a3 + if (!ABSORBED && _particle->_index == 18) { +#ifndef MULTICORE + if (_g1a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1b1 + if (!ABSORBED && _particle->_index == 19) { +#ifndef MULTICORE + if (_g1b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1c1 + if (!ABSORBED && _particle->_index == 20) { +#ifndef MULTICORE + if (_g1c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_position + if (!ABSORBED && _particle->_index == 21) { + _particle->_index++; + } + + // wfm_1_position + if (!ABSORBED && _particle->_index == 22) { + _particle->_index++; + } + + // wfmc_1 + if (!ABSORBED && _particle->_index == 23) { +#ifndef MULTICORE + if (_wfmc_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // pinhole_1 + if (!ABSORBED && _particle->_index == 24) { +#ifndef MULTICORE + if (_pinhole_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_2_position + if (!ABSORBED && _particle->_index == 25) { + _particle->_index++; + } + + // wfmc_2 + if (!ABSORBED && _particle->_index == 26) { +#ifndef MULTICORE + if (_wfmc_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2a1 + if (!ABSORBED && _particle->_index == 27) { +#ifndef MULTICORE + if (_g2a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_1_position + if (!ABSORBED && _particle->_index == 28) { + _particle->_index++; + } + + // g2a2 + if (!ABSORBED && _particle->_index == 29) { +#ifndef MULTICORE + if (_g2a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo1_position + if (!ABSORBED && _particle->_index == 30) { + _particle->_index++; + } + + // fo_chopper_1 + if (!ABSORBED && _particle->_index == 31) { +#ifndef MULTICORE + if (_fo_chopper_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp1_position + if (!ABSORBED && _particle->_index == 32) { + _particle->_index++; + } + + // bp1_chopper + if (!ABSORBED && _particle->_index == 33) { +#ifndef MULTICORE + if (_bp1_chopper_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b1 + if (!ABSORBED && _particle->_index == 34) { +#ifndef MULTICORE + if (_g2b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b2 + if (!ABSORBED && _particle->_index == 35) { +#ifndef MULTICORE + if (_g2b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b3 + if (!ABSORBED && _particle->_index == 36) { +#ifndef MULTICORE + if (_g2b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b4 + if (!ABSORBED && _particle->_index == 37) { +#ifndef MULTICORE + if (_g2b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo2_position + if (!ABSORBED && _particle->_index == 38) { + _particle->_index++; + } + + // fo_chopper_2 + if (!ABSORBED && _particle->_index == 39) { +#ifndef MULTICORE + if (_fo_chopper_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp2_position + if (!ABSORBED && _particle->_index == 40) { + _particle->_index++; + } + + // bp_chopper2 + if (!ABSORBED && _particle->_index == 41) { +#ifndef MULTICORE + if (_bp_chopper2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2c1 + if (!ABSORBED && _particle->_index == 42) { +#ifndef MULTICORE + if (_g2c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_start_position + if (!ABSORBED && _particle->_index == 43) { + _particle->_index++; + } + + // t0_chopper_alpha + if (!ABSORBED && _particle->_index == 44) { +#ifndef MULTICORE + if (_t0_chopper_alpha_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_end_position + if (!ABSORBED && _particle->_index == 45) { + _particle->_index++; + } + + // t0_chopper_beta + if (!ABSORBED && _particle->_index == 46) { +#ifndef MULTICORE + if (_t0_chopper_beta_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a1 + if (!ABSORBED && _particle->_index == 47) { +#ifndef MULTICORE + if (_g3a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a2 + if (!ABSORBED && _particle->_index == 48) { +#ifndef MULTICORE + if (_g3a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo3_position + if (!ABSORBED && _particle->_index == 49) { + _particle->_index++; + } + + // fo_chopper_3 + if (!ABSORBED && _particle->_index == 50) { +#ifndef MULTICORE + if (_fo_chopper_3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3b1 + if (!ABSORBED && _particle->_index == 51) { +#ifndef MULTICORE + if (_g3b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a1 + if (!ABSORBED && _particle->_index == 52) { +#ifndef MULTICORE + if (_g4a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_2_position + if (!ABSORBED && _particle->_index == 53) { + _particle->_index++; + } + + // g4a2 + if (!ABSORBED && _particle->_index == 54) { +#ifndef MULTICORE + if (_g4a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a3 + if (!ABSORBED && _particle->_index == 55) { +#ifndef MULTICORE + if (_g4a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo4_position + if (!ABSORBED && _particle->_index == 56) { + _particle->_index++; + } + + // fo_chopper_4 + if (!ABSORBED && _particle->_index == 57) { +#ifndef MULTICORE + if (_fo_chopper_4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b1 + if (!ABSORBED && _particle->_index == 58) { +#ifndef MULTICORE + if (_g4b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b2 + if (!ABSORBED && _particle->_index == 59) { +#ifndef MULTICORE + if (_g4b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b3 + if (!ABSORBED && _particle->_index == 60) { +#ifndef MULTICORE + if (_g4b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b4 + if (!ABSORBED && _particle->_index == 61) { +#ifndef MULTICORE + if (_g4b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b5 + if (!ABSORBED && _particle->_index == 62) { +#ifndef MULTICORE + if (_g4b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b6 + if (!ABSORBED && _particle->_index == 63) { +#ifndef MULTICORE + if (_g4b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5a1 + if (!ABSORBED && _particle->_index == 64) { +#ifndef MULTICORE + if (_g5a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo5_position + if (!ABSORBED && _particle->_index == 65) { + _particle->_index++; + } + + // fo_chopper_5 + if (!ABSORBED && _particle->_index == 66) { +#ifndef MULTICORE + if (_fo_chopper_5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b1 + if (!ABSORBED && _particle->_index == 67) { +#ifndef MULTICORE + if (_g5b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b2 + if (!ABSORBED && _particle->_index == 68) { +#ifndef MULTICORE + if (_g5b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b3 + if (!ABSORBED && _particle->_index == 69) { +#ifndef MULTICORE + if (_g5b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b4 + if (!ABSORBED && _particle->_index == 70) { +#ifndef MULTICORE + if (_g5b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b5 + if (!ABSORBED && _particle->_index == 71) { +#ifndef MULTICORE + if (_g5b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b6 + if (!ABSORBED && _particle->_index == 72) { +#ifndef MULTICORE + if (_g5b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a1 + if (!ABSORBED && _particle->_index == 73) { +#ifndef MULTICORE + if (_g6a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a2 + if (!ABSORBED && _particle->_index == 74) { +#ifndef MULTICORE + if (_g6a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a3 + if (!ABSORBED && _particle->_index == 75) { +#ifndef MULTICORE + if (_g6a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // guide_end + if (!ABSORBED && _particle->_index == 76) { + _particle->_index++; + } + + // monitor_3_position + if (!ABSORBED && _particle->_index == 77) { + _particle->_index++; + } + + // start_backend + if (!ABSORBED && _particle->_index == 78) { + _particle->_index++; + } + + // optical_axis_backend + if (!ABSORBED && _particle->_index == 79) { + _particle->_index++; + } + + // pinhole_2 + if (!ABSORBED && _particle->_index == 80) { +#ifndef MULTICORE + if (_pinhole_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // graph + if (!ABSORBED && _particle->_index == 81) { +#ifndef MULTICORE + if (_graph_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_monitor_arm + if (!ABSORBED && _particle->_index == 82) { + _particle->_index++; + } + + // sample_PSD + if (!ABSORBED && _particle->_index == 83) { +#ifndef MULTICORE + if (_sample_PSD_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_x + if (!ABSORBED && _particle->_index == 84) { +#ifndef MULTICORE + if (_profile_x_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_y + if (!ABSORBED && _particle->_index == 85) { +#ifndef MULTICORE + if (_profile_y_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength + if (!ABSORBED && _particle->_index == 86) { +#ifndef MULTICORE + if (_wavelength_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // tof + if (!ABSORBED && _particle->_index == 87) { +#ifndef MULTICORE + if (_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength_tof + if (!ABSORBED && _particle->_index == 88) { +#ifndef MULTICORE + if (_wavelength_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_position + if (!ABSORBED && _particle->_index == 89) { + _particle->_index++; + } + + } + + // jump to next viable seed + seed = seed + gpu_innerloop; + } // outer loop / particle batches + + free(particles); + free(pbuffer); + + printf("\n"); +} /* raytrace_all_funnel */ +#endif // FUNNEL + +#undef x +#undef y +#undef z +#undef vx +#undef vy +#undef vz +#undef t +#undef sx +#undef sy +#undef sz +#undef p +#undef mcgravitation +#undef mcMagnet +#undef allow_backprop +#undef _mctmp_a +#undef _mctmp_b +#undef _mctmp_c +#ifdef OPENACC +#undef strlen +#undef strcmp +#undef exit +#undef printf +#undef sprintf +#undef fprintf +#endif +#undef SCATTERED +#undef RESTORE +#undef RESTORE_NEUTRON +#undef STORE_NEUTRON +#undef ABSORBED +#undef ABSORB +#undef ABSORB0 +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' and components SAVE +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_save(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_save] component Origin=Progress_bar() SAVE [Progress_bar:0]"); + + MPI_MASTER (fprintf (stdout, "\nSave [%s]\n", instrument_name);); + if (profile && strlen (profile) && strcmp (profile, "NULL") && strcmp (profile, "0")) { + char filename[256]; + if (!strlen (profile) || !strcmp (profile, "NULL") || !strcmp (profile, "0")) + strcpy (filename, instrument_name); + else + strcpy (filename, profile); + DETECTOR_OUT_1D ("Intensity profiler", "Component index [1]", "Intensity", "prof", 1, mcNUMCOMP, mcNUMCOMP - 1, &(instrument->counter_N[1]), + &(instrument->counter_P[1]), &(instrument->counter_P2[1]), filename); + } + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_save */ + +_class_MCPL_input_once *class_MCPL_input_once_save(_class_MCPL_input_once *_comp +) { + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_save] component vin=MCPL_input_once() SAVE [MCPL_input_once:0]"); + + #ifndef OPENACC + if (!preload) + mcpl_close_file (inputfile); + #endif + if (particles != NULL) + free (particles); + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return(_comp); +} /* class_MCPL_input_once_save */ + +_class_PSD_monitor_4PI *class_PSD_monitor_4PI_save(_class_PSD_monitor_4PI *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_save] component Sphere1=PSD_monitor_4PI() SAVE [PSD_monitor_4PI:0]"); + + if (!nowritefile) { + DETECTOR_OUT_2D ("4PI PSD monitor", "Longitude [deg]", "Latitude [deg]", -180, 180, -90, 90, nx, ny, &PSD_N[0][0], &PSD_p[0][0], &PSD_p2[0][0], filename); + } + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_4PI_save */ + +_class_PSD_monitor *class_PSD_monitor_save(_class_PSD_monitor *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_save] component PSD_cut=PSD_monitor() SAVE [PSD_monitor:0]"); + + if (!nowritefile) { + DETECTOR_OUT_2D ("PSD monitor", "X position [cm]", "Y position [cm]", xmin * 100.0, xmax * 100.0, ymin * 100.0, ymax * 100.0, nx, ny, &PSD_N[0][0], + &PSD_p[0][0], &PSD_p2[0][0], filename); + } + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_save */ + +_class_Monitor_nD *class_Monitor_nD_save(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_save] component sample_PSD=Monitor_nD() SAVE [Monitor_nD:0]"); + + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_save */ + + + +int save(FILE *handle) { /* called by mccode_main for ODIN_MCPL_baseline:SAVE */ + if (!handle) siminfo_init(NULL); + + /* Instrument 'ODIN_MCPL_baseline' SAVE */ + SIG_MESSAGE("[ODIN_MCPL_baseline] SAVE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) + #define repeat (instrument->_parameters.repeat) + #define v_smear (instrument->_parameters.v_smear) + #define pos_smear (instrument->_parameters.pos_smear) + #define dir_smear (instrument->_parameters.dir_smear) + #define filter (instrument->_parameters.filter) +{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + #undef repeat + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef filter + /* call iteratively all components SAVE */ + class_Progress_bar_save(&_Origin_var); + + + + class_MCPL_input_once_save(&_vin_var); + + class_PSD_monitor_4PI_save(&_Sphere1_var); + + + + class_PSD_monitor_4PI_save(&_Sphere0_var); + + + class_PSD_monitor_save(&_PSD_cut_var); + + + class_PSD_monitor_save(&_PSD_Backtrace_var); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + class_Monitor_nD_save(&_sample_PSD_var); + + class_Monitor_nD_save(&_profile_x_var); + + class_Monitor_nD_save(&_profile_y_var); + + class_Monitor_nD_save(&_wavelength_var); + + class_Monitor_nD_save(&_tof_var); + + class_Monitor_nD_save(&_wavelength_tof_var); + + + if (!handle) siminfo_close(); + + return(0); +} /* save */ + +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' and components FINALLY +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_finally(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_finally] component Origin=Progress_bar() FINALLY [Progress_bar:0]"); + + time_t NowTime; + time (&NowTime); + fprintf (stdout, "\nFinally [%s: %s]. Time: ", instrument_name, dirname ? dirname : "."); + if (difftime (NowTime, StartTime) < 60.0) + fprintf (stdout, "%g [s] ", difftime (NowTime, StartTime)); + else if (difftime (NowTime, StartTime) > 3600.0) + fprintf (stdout, "%g [h] ", difftime (NowTime, StartTime) / 3600.0); + else + fprintf (stdout, "%g [min] ", difftime (NowTime, StartTime) / 60.0); + fprintf (stdout, "\n"); + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_finally */ + +_class_MCPL_input_once *class_MCPL_input_once_finally(_class_MCPL_input_once *_comp +) { + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_finally] component vin=MCPL_input_once() FINALLY [MCPL_input_once:0]"); + + if (times_replayed && v_smear == 0 && pos_smear == 0 && dir_smear == 0) { + printf ("Warning (%s): Forced to replay particle list %d time(s) without smearing\n", NAME_CURRENT_COMP, times_replayed); + } + char mpi_nodes_message[256]; + mpi_nodes_message[0] = '\0'; + uint64_t requested_neutrons = (uint64_t)mcget_ncount (); + + #if defined (USE_MPI) + uint64_t accumulated[4], distributed[4]; + distributed[0] = used_neutrons; + distributed[1] = read_neutrons; + distributed[2] = emitted_neutrons; + distributed[3] = requested_neutrons; + MPI_Reduce (&distributed, &accumulated, 4, MPI_UINT64_T, MPI_SUM, 0, MPI_COMM_WORLD); + if (mpi_node_rank == 0) { + used_neutrons = accumulated[0]; + read_neutrons = accumulated[1]; + emitted_neutrons = accumulated[2]; + requested_neutrons = accumulated[3]; + sprintf (mpi_nodes_message, "he %d MPI node copies of t", mpi_node_count); + #endif + if (used_neutrons != read_neutrons) { + fprintf (stdout, "Message(%s): You have used %llu of %llu neutrons available in the MCPL file.\n", NAME_CURRENT_COMP, used_neutrons, read_neutrons); + } + if (requested_neutrons != used_neutrons) { + char bad_particle_message[512]; + bad_particle_message[0] = '\0'; + if (used_neutrons != nparticles) { + sprintf (bad_particle_message, " (of which %llu are neutrons within the requested energy interval)", used_neutrons); + } + fprintf (stderr, + "Warning (%s): You requested %llu neutrons from a file which contains %llu particles in general%s." + " T%shis component emitted %llu neutrons in total. Please examine the recorded intensities carefully.\n", + NAME_CURRENT_COMP, requested_neutrons, nparticles, bad_particle_message, mpi_nodes_message, emitted_neutrons); + } + #if defined (USE_MPI) + } + #endif + free (resolved_filename); + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return(_comp); +} /* class_MCPL_input_once_finally */ + +_class_PSD_monitor_4PI *class_PSD_monitor_4PI_finally(_class_PSD_monitor_4PI *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_finally] component Sphere1=PSD_monitor_4PI() FINALLY [PSD_monitor_4PI:0]"); + + destroy_darr2d (PSD_N); + destroy_darr2d (PSD_p); + destroy_darr2d (PSD_p2); + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_4PI_finally */ + +_class_PSD_monitor *class_PSD_monitor_finally(_class_PSD_monitor *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_finally] component PSD_cut=PSD_monitor() FINALLY [PSD_monitor:0]"); + + destroy_darr2d(PSD_N); + destroy_darr2d(PSD_p); + destroy_darr2d(PSD_p2); + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_finally */ + +_class_Guide_four_side *class_Guide_four_side_finally(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_finally] component NBOA_drawing_1_end=Guide_four_side() FINALLY [Guide_four_side:0]"); + + + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_finally */ + +_class_MultiDiskChopper *class_MultiDiskChopper_finally(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_finally] component wfmc_1=MultiDiskChopper() FINALLY [MultiDiskChopper:0]"); + + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_finally */ + +_class_Monitor_nD *class_Monitor_nD_finally(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_finally] component sample_PSD=Monitor_nD() FINALLY [Monitor_nD:0]"); + + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_finally */ + + + +int finally(void) { /* called by mccode_main for ODIN_MCPL_baseline:FINALLY */ +#pragma acc update host(_Origin_var) +#pragma acc update host(_vinROT2_var) +#pragma acc update host(_vinROT1_var) +#pragma acc update host(_vin_var) +#pragma acc update host(_Sphere1_var) +#pragma acc update host(_Source_var) +#pragma acc update host(_optical_axis_var) +#pragma acc update host(_Sphere0_var) +#pragma acc update host(_Focus_cut_var) +#pragma acc update host(_PSD_cut_var) +#pragma acc update host(_BackTrace_var) +#pragma acc update host(_PSD_Backtrace_var) +#pragma acc update host(_Start_of_bi_var) +#pragma acc update host(_bi_var) +#pragma acc update host(_End_of_bi_var) +#pragma acc update host(_NBOA_drawing_1_end_var) +#pragma acc update host(_g1a2_var) +#pragma acc update host(_g1a3_var) +#pragma acc update host(_g1b1_var) +#pragma acc update host(_g1c1_var) +#pragma acc update host(_wfm_position_var) +#pragma acc update host(_wfm_1_position_var) +#pragma acc update host(_wfmc_1_var) +#pragma acc update host(_pinhole_1_var) +#pragma acc update host(_wfm_2_position_var) +#pragma acc update host(_wfmc_2_var) +#pragma acc update host(_g2a1_var) +#pragma acc update host(_monitor_1_position_var) +#pragma acc update host(_g2a2_var) +#pragma acc update host(_fo1_position_var) +#pragma acc update host(_fo_chopper_1_var) +#pragma acc update host(_bp1_position_var) +#pragma acc update host(_bp1_chopper_var) +#pragma acc update host(_g2b1_var) +#pragma acc update host(_g2b2_var) +#pragma acc update host(_g2b3_var) +#pragma acc update host(_g2b4_var) +#pragma acc update host(_fo2_position_var) +#pragma acc update host(_fo_chopper_2_var) +#pragma acc update host(_bp2_position_var) +#pragma acc update host(_bp_chopper2_var) +#pragma acc update host(_g2c1_var) +#pragma acc update host(_t0_start_position_var) +#pragma acc update host(_t0_chopper_alpha_var) +#pragma acc update host(_t0_end_position_var) +#pragma acc update host(_t0_chopper_beta_var) +#pragma acc update host(_g3a1_var) +#pragma acc update host(_g3a2_var) +#pragma acc update host(_fo3_position_var) +#pragma acc update host(_fo_chopper_3_var) +#pragma acc update host(_g3b1_var) +#pragma acc update host(_g4a1_var) +#pragma acc update host(_monitor_2_position_var) +#pragma acc update host(_g4a2_var) +#pragma acc update host(_g4a3_var) +#pragma acc update host(_fo4_position_var) +#pragma acc update host(_fo_chopper_4_var) +#pragma acc update host(_g4b1_var) +#pragma acc update host(_g4b2_var) +#pragma acc update host(_g4b3_var) +#pragma acc update host(_g4b4_var) +#pragma acc update host(_g4b5_var) +#pragma acc update host(_g4b6_var) +#pragma acc update host(_g5a1_var) +#pragma acc update host(_fo5_position_var) +#pragma acc update host(_fo_chopper_5_var) +#pragma acc update host(_g5b1_var) +#pragma acc update host(_g5b2_var) +#pragma acc update host(_g5b3_var) +#pragma acc update host(_g5b4_var) +#pragma acc update host(_g5b5_var) +#pragma acc update host(_g5b6_var) +#pragma acc update host(_g6a1_var) +#pragma acc update host(_g6a2_var) +#pragma acc update host(_g6a3_var) +#pragma acc update host(_guide_end_var) +#pragma acc update host(_monitor_3_position_var) +#pragma acc update host(_start_backend_var) +#pragma acc update host(_optical_axis_backend_var) +#pragma acc update host(_pinhole_2_var) +#pragma acc update host(_graph_var) +#pragma acc update host(_sample_monitor_arm_var) +#pragma acc update host(_sample_PSD_var) +#pragma acc update host(_profile_x_var) +#pragma acc update host(_profile_y_var) +#pragma acc update host(_wavelength_var) +#pragma acc update host(_tof_var) +#pragma acc update host(_wavelength_tof_var) +#pragma acc update host(_sample_position_var) +#pragma acc update host(_instrument_var) + + siminfo_init(NULL); + save(siminfo_file); /* save data when simulation ends */ + + /* Instrument 'ODIN_MCPL_baseline' FINALLY */ + SIG_MESSAGE("[ODIN_MCPL_baseline] FINALLY [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) + #define repeat (instrument->_parameters.repeat) + #define v_smear (instrument->_parameters.v_smear) + #define pos_smear (instrument->_parameters.pos_smear) + #define dir_smear (instrument->_parameters.dir_smear) + #define filter (instrument->_parameters.filter) +{ +// Start of finally for generated ODIN +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + #undef repeat + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef filter + /* call iteratively all components FINALLY */ + class_Progress_bar_finally(&_Origin_var); + + + + class_MCPL_input_once_finally(&_vin_var); + + class_PSD_monitor_4PI_finally(&_Sphere1_var); + + + + class_PSD_monitor_4PI_finally(&_Sphere0_var); + + + class_PSD_monitor_finally(&_PSD_cut_var); + + + class_PSD_monitor_finally(&_PSD_Backtrace_var); + + + + + class_Guide_four_side_finally(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_finally(&_g1a2_var); + + class_Guide_four_side_finally(&_g1a3_var); + + class_Guide_four_side_finally(&_g1b1_var); + + class_Guide_four_side_finally(&_g1c1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_2_var); + + class_Guide_four_side_finally(&_g2a1_var); + + + class_Guide_four_side_finally(&_g2a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_1_var); + + + + class_Guide_four_side_finally(&_g2b1_var); + + class_Guide_four_side_finally(&_g2b2_var); + + class_Guide_four_side_finally(&_g2b3_var); + + class_Guide_four_side_finally(&_g2b4_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_2_var); + + + + class_Guide_four_side_finally(&_g2c1_var); + + + + + + class_Guide_four_side_finally(&_g3a1_var); + + class_Guide_four_side_finally(&_g3a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_3_var); + + class_Guide_four_side_finally(&_g3b1_var); + + class_Guide_four_side_finally(&_g4a1_var); + + + class_Guide_four_side_finally(&_g4a2_var); + + class_Guide_four_side_finally(&_g4a3_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_4_var); + + class_Guide_four_side_finally(&_g4b1_var); + + class_Guide_four_side_finally(&_g4b2_var); + + class_Guide_four_side_finally(&_g4b3_var); + + class_Guide_four_side_finally(&_g4b4_var); + + class_Guide_four_side_finally(&_g4b5_var); + + class_Guide_four_side_finally(&_g4b6_var); + + class_Guide_four_side_finally(&_g5a1_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_5_var); + + class_Guide_four_side_finally(&_g5b1_var); + + class_Guide_four_side_finally(&_g5b2_var); + + class_Guide_four_side_finally(&_g5b3_var); + + class_Guide_four_side_finally(&_g5b4_var); + + class_Guide_four_side_finally(&_g5b5_var); + + class_Guide_four_side_finally(&_g5b6_var); + + class_Guide_four_side_finally(&_g6a1_var); + + class_Guide_four_side_finally(&_g6a2_var); + + class_Guide_four_side_finally(&_g6a3_var); + + + + + + + + + class_Monitor_nD_finally(&_sample_PSD_var); + + class_Monitor_nD_finally(&_profile_x_var); + + class_Monitor_nD_finally(&_profile_y_var); + + class_Monitor_nD_finally(&_wavelength_var); + + class_Monitor_nD_finally(&_tof_var); + + class_Monitor_nD_finally(&_wavelength_tof_var); + + + siminfo_close(); + + return(0); +} /* finally */ + +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' and components DISPLAY +***************************************************************************** */ + + #define magnify mcdis_magnify + #define line mcdis_line + #define dashed_line mcdis_dashed_line + #define multiline mcdis_multiline + #define rectangle mcdis_rectangle + #define box mcdis_box + #define circle mcdis_circle + #define cylinder mcdis_cylinder + #define sphere mcdis_sphere + #define cone mcdis_cone + #define polygon mcdis_polygon + #define polyhedron mcdis_polyhedron +_class_Progress_bar *class_Progress_bar_display(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_display] component Origin=Progress_bar() DISPLAY [Progress_bar:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_display */ + +_class_Arm *class_Arm_display(_class_Arm *_comp +) { + SIG_MESSAGE("[_vinROT2_display] component vinROT2=Arm() DISPLAY [Arm:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + /* A bit ugly; hard-coded dimensions. */ + + line (0, 0, 0, 0.2, 0, 0); + line (0, 0, 0, 0, 0.2, 0); + line (0, 0, 0, 0, 0, 0.2); + + cone (0.2, 0, 0, 0.01, 0.02, 1, 0, 0); + cone (0, 0.2, 0, 0.01, 0.02, 0, 1, 0); + cone (0, 0, 0.2, 0.01, 0.02, 0, 0, 1); + return(_comp); +} /* class_Arm_display */ + +_class_MCPL_input_once *class_MCPL_input_once_display(_class_MCPL_input_once *_comp +) { + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_display] component vin=MCPL_input_once() DISPLAY [MCPL_input_once:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + multiline (5, 0.2, 0.2, 0.0, -0.2, 0.2, 0.0, -0.2, -0.2, 0.0, 0.2, -0.2, 0.0, 0.2, 0.2, 0.0); + /*M*/ + multiline (5, -0.085, -0.085, 0.0, -0.085, 0.085, 0.0, -0.045, -0.085, 0.0, -0.005, 0.085, 0.0, -0.005, -0.085, 0.0); + /*I*/ + line (0.045, -0.085, 0, 0.045, 0.085, 0); + line (0.005, 0.085, 0, 0.085, 0.085, 0); + line (0.005, -0.085, 0, 0.085, -0.085, 0); + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return(_comp); +} /* class_MCPL_input_once_display */ + +_class_PSD_monitor_4PI *class_PSD_monitor_4PI_display(_class_PSD_monitor_4PI *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_display] component Sphere1=PSD_monitor_4PI() DISPLAY [PSD_monitor_4PI:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + circle ("xy", 0, 0, 0, radius); + circle ("xz", 0, 0, 0, radius); + circle ("yz", 0, 0, 0, radius); + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_4PI_display */ + +_class_ESS_butterfly *class_ESS_butterfly_display(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_display] component Source=ESS_butterfly() DISPLAY [ESS_butterfly:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_display */ + +_class_Shape *class_Shape_display(_class_Shape *_comp +) { + #define geometry (_comp->_parameters.geometry) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define thickness (_comp->_parameters.thickness) + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define nz (_comp->_parameters.nz) + #define center (_comp->_parameters.center) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_Focus_cut_display] component Focus_cut=Shape() DISPLAY [Shape:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + if (geometry && strlen (geometry) && strcmp (geometry, "NULL") && strcmp (geometry, "0")) { /* OFF file */ + off_display (offdata); + } else if (radius > 0 && yheight) { /* cylinder along y*/ + cylinder (0, 0, 0, radius, yheight, thickness, nx, ny, nz); + } else if (xwidth && yheight) { /* box/rectangle */ + box (0, 0, 0, xwidth, yheight, zdepth, thickness, nx, ny, nz); + } else if (radius > 0 && !yheight) { /* sphere */ + sphere (0, 0, 0, radius); + } + #undef geometry + #undef radius + #undef xwidth + #undef yheight + #undef zdepth + #undef thickness + #undef nx + #undef ny + #undef nz + #undef center + #undef offdata + return(_comp); +} /* class_Shape_display */ + +_class_PSD_monitor *class_PSD_monitor_display(_class_PSD_monitor *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_display] component PSD_cut=PSD_monitor() DISPLAY [PSD_monitor:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + multiline (5, (double)xmin, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, + (double)ymin, 0.0); + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_display */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_display(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_display] component bi=bi_spec_ellipse() DISPLAY [bi_spec_ellipse:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_display] component NBOA_drawing_1_end=Guide_four_side() DISPLAY [Guide_four_side:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int i, imax; + double x1, y1, Z, x2, y2, Z1, Z0wr, Z0wl, Z0hu, Z0hd, xwt, ywt, x1wt, y1wt; + double mr, ml, mu, md, nr1, nl1, nu1, nd1, nr2, nl2, nu2, nd2; + double lbwl, lbwr, lbhu, lbhd; /* length between focal points , needed for elliptic case */ + + double x11, y11, x21, y21, Z11, Z0wr1, Z0wl1, Z0hu1, Z0hd1, xwt1, ywt1, x1wt1, y1wt1; + double mr1, ml1, mu1, md1, nr11, nl11, nu11, nd11, nr21, nl21, nu21, nd21; + double lbwl1, lbwr1, lbhu1, lbhd1; + + double x12, y12, x22, y22, Z12, Z0wr2, Z0wl2, Z0hu2, Z0hd2, xwt2, ywt2, x1wt2, y1wt2; + double mr2, ml2, mu2, md2, nr12, nl12, nu12, nd12, nr22, nl22, nu22, nd22; + double lbwl2, lbwr2, lbhu2, lbhd2; + + magnify ("xy"); + + imax = 100; /* maximum points for every line in Z direction*/ + + lbwr = linwr + l + loutwr; + lbwl = linwl + l + loutwl; + lbhu = linhu + l + louthu; + lbhd = linhd + l + louthd; + + if (linwr == 0 && loutwr == 0) { + mr = (-w2r + w1r) / l; + nr1 = -w1r; + nr2 = -(w1rwt); + } + + if (linwl == 0 && loutwl == 0) { + ml = (w2l - w1l) / l; + nl1 = w1l; + nl2 = (w1lwt); + } + + if (linhu == 0 && louthu == 0) { + mu = (h2u - h1u) / l; + nu1 = h1u; + nu2 = (h1uwt); + } + + if (linhd == 0 && louthd == 0) { + md = (-h2d + h1d) / l; + nd1 = -h1d; + nd2 = -(h1dwt); + } + + Z0wr = (linwr - l - loutwr) / 2.0; + Z0wl = (linwl - l - loutwl) / 2.0; + Z0hu = lbhu / 2.0 - l - louthu; + Z0hd = lbhd / 2.0 - l - louthd; + + if (myd != -1) + line (w1l, -h1d, 0.0, -w1r, -h1d, 0.0); /* entrance window given by the INNER walls*/ + if (myu != -1) + line (w1l, h1u, 0.0, -w1r, h1u, 0.0); + if (mxl != -1) + line (w1l, -h1d, 0.0, w1l, h1u, 0.0); + if (mxr != -1) + line (-w1r, h1u, 0.0, -w1r, -h1d, 0.0); + + if (myd != -1) + line (w2l, -h2d, l, -w2r, -h2d, l); /* exit window given by the INNER walls*/ + if (myu != -1) + line (w2l, h2u, l, -w2r, h2u, l); + if (mxl != -1) + line (w2l, -h2d, l, w2l, h2u, l); + if (mxr != -1) + line (-w2r, -h2d, l, -w2r, h2u, l); + + if (mydOW != -1) + line ((w1lwt), -(h1dwt), 0.0, -(w1rwt), -(h1dwt), 0.0); /* entrance window given by the OUTER walls */ + if (myuOW != -1) + line ((w1lwt), (h1uwt), 0.0, -(w1rwt), (h1uwt), 0.0); + if (mxlOW != -1) + line ((w1lwt), -(h1dwt), 0.0, (w1lwt), (h1uwt), 0.0); + if (mxrOW != -1) + line (-(w1rwt), (h1uwt), 0.0, -(w1rwt), -(h1dwt), 0.0); + + if (mydOW != -1) + line ((w2lwt), -(h2dwt), l, -(w2rwt), -(h2dwt), l); /* exit windows given by the OUTER walls*/ + if (myuOW != -1) + line ((w2lwt), (h2uwt), l, -(w2rwt), (h2uwt), l); + if (mxlOW != -1) + line ((w2lwt), -(h2dwt), l, (w2lwt), (h2uwt), l); + if (mxrOW != -1) + line (-(w2rwt), -(h2dwt), l, -(w2rwt), (h2uwt), l); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, -h1d, 0.0, (w1lwt), -(h1dwt), 0.0); /* corner connection lines for the entrance windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, h1u, 0.0, (w1lwt), (h1uwt), 0.0); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, -h1d, 0.0, -(w1rwt), -(h1dwt), 0.0); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, h1u, 0.0, -(w1rwt), (h1uwt), 0.0); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, -h2d, l, (w2lwt), -(h2dwt), l); /* corner connection lines for the exit windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, h2u, l, (w2lwt), (h2uwt), l); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, -h2d, l, -(w2rwt), -(h2dwt), l); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, h2u, l, -(w2rwt), (h2uwt), l); + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxl != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxr != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxr != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxl != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } /* END INNER LINES*/ + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxlOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxrOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxrOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxlOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_display */ + +_class_MultiDiskChopper *class_MultiDiskChopper_display(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_display] component wfmc_1=MultiDiskChopper() DISPLAY [MultiDiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_display */ + +_class_Slit *class_Slit_display(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_display] component pinhole_1=Slit() DISPLAY [Slit:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + if (is_unset (radius)) { + double xw, yh; + xw = (xmax - xmin) / 2.0; + yh = (ymax - ymin) / 2.0; + multiline (3, xmin - xw, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, ymax + yh, 0.0); + multiline (3, xmax + xw, (double)ymax, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmax, ymax + yh, 0.0); + multiline (3, xmin - xw, (double)ymin, 0.0, (double)xmin, (double)ymin, 0.0, (double)xmin, ymin - yh, 0.0); + multiline (3, xmax + xw, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, ymin - yh, 0.0); + } else { + circle ("xy", 0, 0, 0, radius); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_display */ + +_class_DiskChopper *class_DiskChopper_display(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_display] component bp1_chopper=DiskChopper() DISPLAY [DiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_display */ + +_class_Graphite_Diffuser *class_Graphite_Diffuser_display(_class_Graphite_Diffuser *_comp +) { + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_display] component graph=Graphite_Diffuser() DISPLAY [Graphite_Diffuser:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + magnify("xy"); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)-ywidth/2, 0.0); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)-ywidth/2, (double)thick); + line(-xwidth/2, -ywidth/2, 0.0, -xwidth/2, -ywidth/2, thick); + line(xwidth/2, -ywidth/2, 0.0, xwidth/2, -ywidth/2, thick); + line(-xwidth/2, ywidth/2, 0.0, -xwidth/2, ywidth/2, thick); + line(xwidth/2, ywidth/2, 0.0, xwidth/2, ywidth/2, thick); + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return(_comp); +} /* class_Graphite_Diffuser_display */ + +_class_Monitor_nD *class_Monitor_nD_display(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_display] component sample_PSD=Monitor_nD() DISPLAY [Monitor_nD:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_display */ + + + #undef magnify + #undef line + #undef dashed_line + #undef multiline + #undef rectangle + #undef box + #undef circle + #undef cylinder + #undef sphere + +int display(void) { /* called by mccode_main for ODIN_MCPL_baseline:DISPLAY */ + printf("MCDISPLAY: start\n"); + + /* call iteratively all components DISPLAY */ + class_Progress_bar_display(&_Origin_var); + + class_Arm_display(&_vinROT2_var); + + class_Arm_display(&_vinROT1_var); + + class_MCPL_input_once_display(&_vin_var); + + class_PSD_monitor_4PI_display(&_Sphere1_var); + + class_ESS_butterfly_display(&_Source_var); + + class_Arm_display(&_optical_axis_var); + + class_PSD_monitor_4PI_display(&_Sphere0_var); + + class_Shape_display(&_Focus_cut_var); + + class_PSD_monitor_display(&_PSD_cut_var); + + class_Shape_display(&_BackTrace_var); + + class_PSD_monitor_display(&_PSD_Backtrace_var); + + class_Arm_display(&_Start_of_bi_var); + + class_bi_spec_ellipse_display(&_bi_var); + + class_Arm_display(&_End_of_bi_var); + + class_Guide_four_side_display(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_display(&_g1a2_var); + + class_Guide_four_side_display(&_g1a3_var); + + class_Guide_four_side_display(&_g1b1_var); + + class_Guide_four_side_display(&_g1c1_var); + + class_Arm_display(&_wfm_position_var); + + class_Arm_display(&_wfm_1_position_var); + + class_MultiDiskChopper_display(&_wfmc_1_var); + + class_Slit_display(&_pinhole_1_var); + + class_Arm_display(&_wfm_2_position_var); + + class_MultiDiskChopper_display(&_wfmc_2_var); + + class_Guide_four_side_display(&_g2a1_var); + + class_Arm_display(&_monitor_1_position_var); + + class_Guide_four_side_display(&_g2a2_var); + + class_Arm_display(&_fo1_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_1_var); + + class_Arm_display(&_bp1_position_var); + + class_DiskChopper_display(&_bp1_chopper_var); + + class_Guide_four_side_display(&_g2b1_var); + + class_Guide_four_side_display(&_g2b2_var); + + class_Guide_four_side_display(&_g2b3_var); + + class_Guide_four_side_display(&_g2b4_var); + + class_Arm_display(&_fo2_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_2_var); + + class_Arm_display(&_bp2_position_var); + + class_DiskChopper_display(&_bp_chopper2_var); + + class_Guide_four_side_display(&_g2c1_var); + + class_Arm_display(&_t0_start_position_var); + + class_DiskChopper_display(&_t0_chopper_alpha_var); + + class_Arm_display(&_t0_end_position_var); + + class_DiskChopper_display(&_t0_chopper_beta_var); + + class_Guide_four_side_display(&_g3a1_var); + + class_Guide_four_side_display(&_g3a2_var); + + class_Arm_display(&_fo3_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_3_var); + + class_Guide_four_side_display(&_g3b1_var); + + class_Guide_four_side_display(&_g4a1_var); + + class_Arm_display(&_monitor_2_position_var); + + class_Guide_four_side_display(&_g4a2_var); + + class_Guide_four_side_display(&_g4a3_var); + + class_Arm_display(&_fo4_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_4_var); + + class_Guide_four_side_display(&_g4b1_var); + + class_Guide_four_side_display(&_g4b2_var); + + class_Guide_four_side_display(&_g4b3_var); + + class_Guide_four_side_display(&_g4b4_var); + + class_Guide_four_side_display(&_g4b5_var); + + class_Guide_four_side_display(&_g4b6_var); + + class_Guide_four_side_display(&_g5a1_var); + + class_Arm_display(&_fo5_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_5_var); + + class_Guide_four_side_display(&_g5b1_var); + + class_Guide_four_side_display(&_g5b2_var); + + class_Guide_four_side_display(&_g5b3_var); + + class_Guide_four_side_display(&_g5b4_var); + + class_Guide_four_side_display(&_g5b5_var); + + class_Guide_four_side_display(&_g5b6_var); + + class_Guide_four_side_display(&_g6a1_var); + + class_Guide_four_side_display(&_g6a2_var); + + class_Guide_four_side_display(&_g6a3_var); + + class_Arm_display(&_guide_end_var); + + class_Arm_display(&_monitor_3_position_var); + + class_Arm_display(&_start_backend_var); + + class_Arm_display(&_optical_axis_backend_var); + + class_Slit_display(&_pinhole_2_var); + + class_Graphite_Diffuser_display(&_graph_var); + + class_Arm_display(&_sample_monitor_arm_var); + + class_Monitor_nD_display(&_sample_PSD_var); + + class_Monitor_nD_display(&_profile_x_var); + + class_Monitor_nD_display(&_profile_y_var); + + class_Monitor_nD_display(&_wavelength_var); + + class_Monitor_nD_display(&_tof_var); + + class_Monitor_nD_display(&_wavelength_tof_var); + + class_Arm_display(&_sample_position_var); + + printf("MCDISPLAY: end\n"); + + return(0); +} /* display */ + +void* _getvar_parameters(char* compname) +/* enables settings parameters based use of the GETPAR macro */ +{ + #ifdef OPENACC + #define strcmp(a,b) str_comp(a,b) + #endif + if (!strcmp(compname, "Origin")) return (void *) &(_Origin_var._parameters); + if (!strcmp(compname, "vinROT2")) return (void *) &(_vinROT2_var._parameters); + if (!strcmp(compname, "vinROT1")) return (void *) &(_vinROT1_var._parameters); + if (!strcmp(compname, "vin")) return (void *) &(_vin_var._parameters); + if (!strcmp(compname, "Sphere1")) return (void *) &(_Sphere1_var._parameters); + if (!strcmp(compname, "Source")) return (void *) &(_Source_var._parameters); + if (!strcmp(compname, "optical_axis")) return (void *) &(_optical_axis_var._parameters); + if (!strcmp(compname, "Sphere0")) return (void *) &(_Sphere0_var._parameters); + if (!strcmp(compname, "Focus_cut")) return (void *) &(_Focus_cut_var._parameters); + if (!strcmp(compname, "PSD_cut")) return (void *) &(_PSD_cut_var._parameters); + if (!strcmp(compname, "BackTrace")) return (void *) &(_BackTrace_var._parameters); + if (!strcmp(compname, "PSD_Backtrace")) return (void *) &(_PSD_Backtrace_var._parameters); + if (!strcmp(compname, "Start_of_bi")) return (void *) &(_Start_of_bi_var._parameters); + if (!strcmp(compname, "bi")) return (void *) &(_bi_var._parameters); + if (!strcmp(compname, "End_of_bi")) return (void *) &(_End_of_bi_var._parameters); + if (!strcmp(compname, "NBOA_drawing_1_end")) return (void *) &(_NBOA_drawing_1_end_var._parameters); + if (!strcmp(compname, "g1a2")) return (void *) &(_g1a2_var._parameters); + if (!strcmp(compname, "g1a3")) return (void *) &(_g1a3_var._parameters); + if (!strcmp(compname, "g1b1")) return (void *) &(_g1b1_var._parameters); + if (!strcmp(compname, "g1c1")) return (void *) &(_g1c1_var._parameters); + if (!strcmp(compname, "wfm_position")) return (void *) &(_wfm_position_var._parameters); + if (!strcmp(compname, "wfm_1_position")) return (void *) &(_wfm_1_position_var._parameters); + if (!strcmp(compname, "wfmc_1")) return (void *) &(_wfmc_1_var._parameters); + if (!strcmp(compname, "pinhole_1")) return (void *) &(_pinhole_1_var._parameters); + if (!strcmp(compname, "wfm_2_position")) return (void *) &(_wfm_2_position_var._parameters); + if (!strcmp(compname, "wfmc_2")) return (void *) &(_wfmc_2_var._parameters); + if (!strcmp(compname, "g2a1")) return (void *) &(_g2a1_var._parameters); + if (!strcmp(compname, "monitor_1_position")) return (void *) &(_monitor_1_position_var._parameters); + if (!strcmp(compname, "g2a2")) return (void *) &(_g2a2_var._parameters); + if (!strcmp(compname, "fo1_position")) return (void *) &(_fo1_position_var._parameters); + if (!strcmp(compname, "fo_chopper_1")) return (void *) &(_fo_chopper_1_var._parameters); + if (!strcmp(compname, "bp1_position")) return (void *) &(_bp1_position_var._parameters); + if (!strcmp(compname, "bp1_chopper")) return (void *) &(_bp1_chopper_var._parameters); + if (!strcmp(compname, "g2b1")) return (void *) &(_g2b1_var._parameters); + if (!strcmp(compname, "g2b2")) return (void *) &(_g2b2_var._parameters); + if (!strcmp(compname, "g2b3")) return (void *) &(_g2b3_var._parameters); + if (!strcmp(compname, "g2b4")) return (void *) &(_g2b4_var._parameters); + if (!strcmp(compname, "fo2_position")) return (void *) &(_fo2_position_var._parameters); + if (!strcmp(compname, "fo_chopper_2")) return (void *) &(_fo_chopper_2_var._parameters); + if (!strcmp(compname, "bp2_position")) return (void *) &(_bp2_position_var._parameters); + if (!strcmp(compname, "bp_chopper2")) return (void *) &(_bp_chopper2_var._parameters); + if (!strcmp(compname, "g2c1")) return (void *) &(_g2c1_var._parameters); + if (!strcmp(compname, "t0_start_position")) return (void *) &(_t0_start_position_var._parameters); + if (!strcmp(compname, "t0_chopper_alpha")) return (void *) &(_t0_chopper_alpha_var._parameters); + if (!strcmp(compname, "t0_end_position")) return (void *) &(_t0_end_position_var._parameters); + if (!strcmp(compname, "t0_chopper_beta")) return (void *) &(_t0_chopper_beta_var._parameters); + if (!strcmp(compname, "g3a1")) return (void *) &(_g3a1_var._parameters); + if (!strcmp(compname, "g3a2")) return (void *) &(_g3a2_var._parameters); + if (!strcmp(compname, "fo3_position")) return (void *) &(_fo3_position_var._parameters); + if (!strcmp(compname, "fo_chopper_3")) return (void *) &(_fo_chopper_3_var._parameters); + if (!strcmp(compname, "g3b1")) return (void *) &(_g3b1_var._parameters); + if (!strcmp(compname, "g4a1")) return (void *) &(_g4a1_var._parameters); + if (!strcmp(compname, "monitor_2_position")) return (void *) &(_monitor_2_position_var._parameters); + if (!strcmp(compname, "g4a2")) return (void *) &(_g4a2_var._parameters); + if (!strcmp(compname, "g4a3")) return (void *) &(_g4a3_var._parameters); + if (!strcmp(compname, "fo4_position")) return (void *) &(_fo4_position_var._parameters); + if (!strcmp(compname, "fo_chopper_4")) return (void *) &(_fo_chopper_4_var._parameters); + if (!strcmp(compname, "g4b1")) return (void *) &(_g4b1_var._parameters); + if (!strcmp(compname, "g4b2")) return (void *) &(_g4b2_var._parameters); + if (!strcmp(compname, "g4b3")) return (void *) &(_g4b3_var._parameters); + if (!strcmp(compname, "g4b4")) return (void *) &(_g4b4_var._parameters); + if (!strcmp(compname, "g4b5")) return (void *) &(_g4b5_var._parameters); + if (!strcmp(compname, "g4b6")) return (void *) &(_g4b6_var._parameters); + if (!strcmp(compname, "g5a1")) return (void *) &(_g5a1_var._parameters); + if (!strcmp(compname, "fo5_position")) return (void *) &(_fo5_position_var._parameters); + if (!strcmp(compname, "fo_chopper_5")) return (void *) &(_fo_chopper_5_var._parameters); + if (!strcmp(compname, "g5b1")) return (void *) &(_g5b1_var._parameters); + if (!strcmp(compname, "g5b2")) return (void *) &(_g5b2_var._parameters); + if (!strcmp(compname, "g5b3")) return (void *) &(_g5b3_var._parameters); + if (!strcmp(compname, "g5b4")) return (void *) &(_g5b4_var._parameters); + if (!strcmp(compname, "g5b5")) return (void *) &(_g5b5_var._parameters); + if (!strcmp(compname, "g5b6")) return (void *) &(_g5b6_var._parameters); + if (!strcmp(compname, "g6a1")) return (void *) &(_g6a1_var._parameters); + if (!strcmp(compname, "g6a2")) return (void *) &(_g6a2_var._parameters); + if (!strcmp(compname, "g6a3")) return (void *) &(_g6a3_var._parameters); + if (!strcmp(compname, "guide_end")) return (void *) &(_guide_end_var._parameters); + if (!strcmp(compname, "monitor_3_position")) return (void *) &(_monitor_3_position_var._parameters); + if (!strcmp(compname, "start_backend")) return (void *) &(_start_backend_var._parameters); + if (!strcmp(compname, "optical_axis_backend")) return (void *) &(_optical_axis_backend_var._parameters); + if (!strcmp(compname, "pinhole_2")) return (void *) &(_pinhole_2_var._parameters); + if (!strcmp(compname, "graph")) return (void *) &(_graph_var._parameters); + if (!strcmp(compname, "sample_monitor_arm")) return (void *) &(_sample_monitor_arm_var._parameters); + if (!strcmp(compname, "sample_PSD")) return (void *) &(_sample_PSD_var._parameters); + if (!strcmp(compname, "profile_x")) return (void *) &(_profile_x_var._parameters); + if (!strcmp(compname, "profile_y")) return (void *) &(_profile_y_var._parameters); + if (!strcmp(compname, "wavelength")) return (void *) &(_wavelength_var._parameters); + if (!strcmp(compname, "tof")) return (void *) &(_tof_var._parameters); + if (!strcmp(compname, "wavelength_tof")) return (void *) &(_wavelength_tof_var._parameters); + if (!strcmp(compname, "sample_position")) return (void *) &(_sample_position_var._parameters); + return 0; +} + +void* _get_particle_var(char *token, _class_particle *p) +/* enables setpars based use of GET_PARTICLE_DVAR macro and similar */ +{ + return 0; +} + +int _getcomp_index(char* compname) +/* Enables retrieving the component position & rotation when the index is not known. + * Component indexing into MACROS, e.g., POS_A_COMP_INDEX, are 1-based! */ +{ + if (!strcmp(compname, "Origin")) return 1; + if (!strcmp(compname, "vinROT2")) return 2; + if (!strcmp(compname, "vinROT1")) return 3; + if (!strcmp(compname, "vin")) return 4; + if (!strcmp(compname, "Sphere1")) return 5; + if (!strcmp(compname, "Source")) return 6; + if (!strcmp(compname, "optical_axis")) return 7; + if (!strcmp(compname, "Sphere0")) return 8; + if (!strcmp(compname, "Focus_cut")) return 9; + if (!strcmp(compname, "PSD_cut")) return 10; + if (!strcmp(compname, "BackTrace")) return 11; + if (!strcmp(compname, "PSD_Backtrace")) return 12; + if (!strcmp(compname, "Start_of_bi")) return 13; + if (!strcmp(compname, "bi")) return 14; + if (!strcmp(compname, "End_of_bi")) return 15; + if (!strcmp(compname, "NBOA_drawing_1_end")) return 16; + if (!strcmp(compname, "g1a2")) return 17; + if (!strcmp(compname, "g1a3")) return 18; + if (!strcmp(compname, "g1b1")) return 19; + if (!strcmp(compname, "g1c1")) return 20; + if (!strcmp(compname, "wfm_position")) return 21; + if (!strcmp(compname, "wfm_1_position")) return 22; + if (!strcmp(compname, "wfmc_1")) return 23; + if (!strcmp(compname, "pinhole_1")) return 24; + if (!strcmp(compname, "wfm_2_position")) return 25; + if (!strcmp(compname, "wfmc_2")) return 26; + if (!strcmp(compname, "g2a1")) return 27; + if (!strcmp(compname, "monitor_1_position")) return 28; + if (!strcmp(compname, "g2a2")) return 29; + if (!strcmp(compname, "fo1_position")) return 30; + if (!strcmp(compname, "fo_chopper_1")) return 31; + if (!strcmp(compname, "bp1_position")) return 32; + if (!strcmp(compname, "bp1_chopper")) return 33; + if (!strcmp(compname, "g2b1")) return 34; + if (!strcmp(compname, "g2b2")) return 35; + if (!strcmp(compname, "g2b3")) return 36; + if (!strcmp(compname, "g2b4")) return 37; + if (!strcmp(compname, "fo2_position")) return 38; + if (!strcmp(compname, "fo_chopper_2")) return 39; + if (!strcmp(compname, "bp2_position")) return 40; + if (!strcmp(compname, "bp_chopper2")) return 41; + if (!strcmp(compname, "g2c1")) return 42; + if (!strcmp(compname, "t0_start_position")) return 43; + if (!strcmp(compname, "t0_chopper_alpha")) return 44; + if (!strcmp(compname, "t0_end_position")) return 45; + if (!strcmp(compname, "t0_chopper_beta")) return 46; + if (!strcmp(compname, "g3a1")) return 47; + if (!strcmp(compname, "g3a2")) return 48; + if (!strcmp(compname, "fo3_position")) return 49; + if (!strcmp(compname, "fo_chopper_3")) return 50; + if (!strcmp(compname, "g3b1")) return 51; + if (!strcmp(compname, "g4a1")) return 52; + if (!strcmp(compname, "monitor_2_position")) return 53; + if (!strcmp(compname, "g4a2")) return 54; + if (!strcmp(compname, "g4a3")) return 55; + if (!strcmp(compname, "fo4_position")) return 56; + if (!strcmp(compname, "fo_chopper_4")) return 57; + if (!strcmp(compname, "g4b1")) return 58; + if (!strcmp(compname, "g4b2")) return 59; + if (!strcmp(compname, "g4b3")) return 60; + if (!strcmp(compname, "g4b4")) return 61; + if (!strcmp(compname, "g4b5")) return 62; + if (!strcmp(compname, "g4b6")) return 63; + if (!strcmp(compname, "g5a1")) return 64; + if (!strcmp(compname, "fo5_position")) return 65; + if (!strcmp(compname, "fo_chopper_5")) return 66; + if (!strcmp(compname, "g5b1")) return 67; + if (!strcmp(compname, "g5b2")) return 68; + if (!strcmp(compname, "g5b3")) return 69; + if (!strcmp(compname, "g5b4")) return 70; + if (!strcmp(compname, "g5b5")) return 71; + if (!strcmp(compname, "g5b6")) return 72; + if (!strcmp(compname, "g6a1")) return 73; + if (!strcmp(compname, "g6a2")) return 74; + if (!strcmp(compname, "g6a3")) return 75; + if (!strcmp(compname, "guide_end")) return 76; + if (!strcmp(compname, "monitor_3_position")) return 77; + if (!strcmp(compname, "start_backend")) return 78; + if (!strcmp(compname, "optical_axis_backend")) return 79; + if (!strcmp(compname, "pinhole_2")) return 80; + if (!strcmp(compname, "graph")) return 81; + if (!strcmp(compname, "sample_monitor_arm")) return 82; + if (!strcmp(compname, "sample_PSD")) return 83; + if (!strcmp(compname, "profile_x")) return 84; + if (!strcmp(compname, "profile_y")) return 85; + if (!strcmp(compname, "wavelength")) return 86; + if (!strcmp(compname, "tof")) return 87; + if (!strcmp(compname, "wavelength_tof")) return 88; + if (!strcmp(compname, "sample_position")) return 89; + return -1; +} + +/* embedding file "metadata-r.c" */ + +/** --- Contents of metadata-r.c ---------------------------------------------------------------------------------- */ +// Created by Gregory Tucker, Data Management Software Centre, European Spallation Source ERIC on 07/07/23. +#ifndef MCCODE_NAME +#include "metadata-r.h" +#endif + +char * metadata_table_key_component(char* key){ + if (strlen(key) == 0) return NULL; + char sep[2] = ":\0"; // matches any number of repeated colons + // look for the separator in the provided key; strtok is allowed to modify the string, so copy it + char * tok = malloc((strlen(key) + 1) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) -- but we need to move the pointer + char * comp = malloc((1 + strlen(pch)) * sizeof(char)); + if (!comp) { + fprintf(stderr,"Error allocating comp\n"); + exit(-1); + } + strcpy(comp, pch); + if (tok) free(tok); + return comp; +} +char * metadata_table_key_literal(char * key){ + if (strlen(key) == 0) return NULL; + char sep[3] = ":\0"; + char * tok = malloc((strlen(key) + 1 ) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) + if (pch) pch = strtok(NULL, sep); // either NULL or the literal name + char * name = NULL; + if (pch) { + name = malloc((1 + strlen(pch)) * sizeof(char)); + if (!name) { + fprintf(stderr,"Error allocating name\n"); + exit(-1); + } + strcpy(name, pch); + } + if (tok) free(tok); + return name; +} +int metadata_table_defined(int no, metadata_table_t * tab, char * key){ + if (strlen(key) == 0){ + /* This is 0 instead of `no` independent of any wildcard-matching logic + * because a caller _already_ knows `no` and can verify + * that `key` is not "" at call-time. So returning `no` is useless. + */ + return 0; + } + char * comp = metadata_table_key_component(key); + char * name = metadata_table_key_literal(key); + // look through the table for the matching component and literal names + int number = 0; + for (int i=0; i 1) { + MPI_MASTER( + printf("Simulation '%s' (%s): running on %i nodes (master is '%s', MPI version %i.%i).\n", + instrument_name, instrument_source, mpi_node_count, mpi_node_name, MPI_VERSION, MPI_SUBVERSION); + ); + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per noe */ + } +#endif /* USE_MPI */ + +#ifdef OPENACC +#ifdef USE_MPI + int num_devices = acc_get_num_devices(acc_device_nvidia); + if(num_devices>0){ + int my_device = mpi_node_rank % num_devices; + acc_set_device_num( my_device, acc_device_nvidia ); + printf("Have found %d GPU devices on rank %d. Will use device %d.\n", num_devices, mpi_node_rank, my_device); + }else{ + printf("There was an issue probing acc_get_num_devices, fallback to host\n"); + acc_set_device_type( acc_device_host ); + } +#endif +#endif + + /* *** parse options ******************************************************* */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat = getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + instrument_exe = argv[0]; /* store the executable path */ + /* read simulation parameters and options */ + mcparseoptions(argc, argv); /* sets output dir and format */ + + +#ifdef USE_MPI + if (mpi_node_count > 1) { + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per node */ + } +#endif + + +/* *** install sig handler, but only once !! after parameters parsing ******* */ +#ifndef NOSIGNALS +#ifdef SIGQUIT + if (signal( SIGQUIT ,sighandler) == SIG_IGN) + signal( SIGQUIT,SIG_IGN); /* quit (ASCII FS) */ +#endif +#ifdef SIGABRT + if (signal( SIGABRT ,sighandler) == SIG_IGN) + signal( SIGABRT,SIG_IGN); /* used by abort, replace SIGIOT in the future */ +#endif +#ifdef SIGTERM + if (signal( SIGTERM ,sighandler) == SIG_IGN) + signal( SIGTERM,SIG_IGN); /* software termination signal from kill */ +#endif +#ifdef SIGUSR1 + if (signal( SIGUSR1 ,sighandler) == SIG_IGN) + signal( SIGUSR1,SIG_IGN); /* display simulation status */ +#endif +#ifdef SIGUSR2 + if (signal( SIGUSR2 ,sighandler) == SIG_IGN) + signal( SIGUSR2,SIG_IGN); +#endif +#ifdef SIGHUP + if (signal( SIGHUP ,sighandler) == SIG_IGN) + signal( SIGHUP,SIG_IGN); +#endif +#ifdef SIGILL + if (signal( SIGILL ,sighandler) == SIG_IGN) + signal( SIGILL,SIG_IGN); /* illegal instruction (not reset when caught) */ +#endif +#ifdef SIGFPE + if (signal( SIGFPE ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* floating point exception */ +#endif +#ifdef SIGBUS + if (signal( SIGBUS ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* bus error */ +#endif +#ifdef SIGSEGV + if (signal( SIGSEGV ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* segmentation violation */ +#endif +#endif /* !NOSIGNALS */ + + + // init executed by master/host + siminfo_init(NULL); /* open SIM */ + SIG_MESSAGE("[" __FILE__ "] main INITIALISE"); + init(); + + +#ifndef NOSIGNALS +#ifdef SIGINT + if (signal( SIGINT ,sighandler) == SIG_IGN) + signal( SIGINT,SIG_IGN); /* interrupt (rubout) only after INIT */ +#endif +#endif /* !NOSIGNALS */ + +/* ================ main particle generation/propagation loop ================ */ +#ifdef USE_MPI + /* sliced Ncount on each MPI node */ + mcncount = mpi_node_count > 1 ? + floor(mcncount / mpi_node_count) : + mcncount; /* number of rays per node */ +#endif + +// MT specific init, note that per-ray init is empty +#if RNG_ALG == 2 + mt_srandom(mcseed); +#endif + + +// main raytrace work loop +#ifndef FUNNEL + // legacy version + raytrace_all(mcncount, mcseed); +#else + MPI_MASTER( + // "funneled" version in which propagation is more parallelizable + printf("\nNOTE: CPU COMPONENT grammar activated:\n 1) \"FUNNEL\" raytrace algorithm enabled.\n 2) Any SPLIT's are dynamically allocated based on available buffer size. \n"); + ); + raytrace_all_funnel(mcncount, mcseed); +#endif + + +#ifdef USE_MPI + /* merge run_num from MPI nodes */ + if (mpi_node_count > 1) { + double mcrun_num_double = (double)mcrun_num; + mc_MPI_Sum(&mcrun_num_double, 1); + mcrun_num = (unsigned long long)mcrun_num_double; + } +#endif + + + // save/finally executed by master node/thread/host + finally(); + + +#ifdef USE_MPI + MPI_Finalize(); +#endif /* USE_MPI */ + + + return 0; +} /* mccode_main */ +/* End of file "mccode_main.c". */ + +/* end of generated C code ./ODIN_MCPL_baseline.c */ diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/mccode.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/mccode.dat new file mode 100644 index 0000000000..0984e6f5c0 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/mccode.dat @@ -0,0 +1,16 @@ +# Instrument-source: 'ODIN_MCPL_baseline.instr' +# Date: Sun Mar 01 17 29 2026 +# Ncount: 1000000 +# Numpoints: 2 +# Param: filter = 0 +# type: multiarray_1d(2) +# title: Scan of filter +# xlabel: 'filter' +# ylabel: 'Intensity' +# xvars: filter +# yvars: (Sphere1_I,Sphere1_ERR) (Sphere0_I,Sphere0_ERR) (PSD_cut_I,PSD_cut_ERR) (PSD_Backtrace_I,PSD_Backtrace_ERR) (sample_PSD_I,sample_PSD_ERR) (profile_x_I,profile_x_ERR) (profile_y_I,profile_y_ERR) (wavelength_I,wavelength_ERR) (tof_I,tof_ERR) (wavelength_tof_I,wavelength_tof_ERR) +# xlimits: 0 1 +# filename: mccode.dat +# variables: filter Sphere1_I Sphere1_ERR Sphere0_I Sphere0_ERR PSD_cut_I PSD_cut_ERR PSD_Backtrace_I PSD_Backtrace_ERR sample_PSD_I sample_PSD_ERR profile_x_I profile_x_ERR profile_y_I profile_y_ERR wavelength_I wavelength_ERR tof_I tof_ERR wavelength_tof_I wavelength_tof_ERR +0 1846120000000000.0 14568900000000.0 1846120000000000.0 14568900000000.0 271826000000.0 26657100000.0 10833000000000.0 327214000000.0 2662390000.0 263647000.0 2662390000.0 263647000.0 2662390000.0 263647000.0 2662390000.0 263647000.0 2662390000.0 263647000.0 2662390000.0 263647000.0 +1 10833000000000.0 327214000000.0 5470790000000.0 238132000000.0 85094100000.0 2191340000.0 10833000000000.0 327214000000.0 3052090000.0 442982000.0 3052090000.0 442982000.0 3052090000.0 442982000.0 3052090000.0 442982000.0 3052090000.0 442982000.0 3052090000.0 442982000.0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/mccode.sim b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/mccode.sim new file mode 100644 index 0000000000..9d9d1a4e81 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_baseline/Filterscan/mccode.sim @@ -0,0 +1,27 @@ +begin instrument: + Creator: mcstas 3.99.99 + Source: ODIN_MCPL_baseline.instr + Parameters: filter + Trace_enabled: no + Default_main: yes + Embedded_runtime: yes +end instrument + +begin simulation +Date: Sun Mar 01 17 29 2026 +Ncount: 1000000 +Numpoints: 2 +Param: filter = 0, filter = 1 +end simulation + +begin data +type: multiarray_1d(2) +title: Scan of filter +xvars: filter +yvars: (Sphere1_I,Sphere1_ERR (Sphere0_I,Sphere0_ERR (PSD_cut_I,PSD_cut_ERR (PSD_Backtrace_I,PSD_Backtrace_ERR (sample_PSD_I,sample_PSD_ERR (profile_x_I,profile_x_ERR (profile_y_I,profile_y_ERR (wavelength_I,wavelength_ERR (tof_I,tof_ERR (wavelength_tof_I,wavelength_tof_ERR +xlabel: 'filter' +ylabel: 'Intensity' +xlimits: 0 1 +filename: mccode.dat +variables: filterSphere1_I Sphere1_ERR Sphere0_I Sphere0_ERR PSD_cut_I PSD_cut_ERR PSD_Backtrace_I PSD_Backtrace_ERR sample_PSD_I sample_PSD_ERR profile_x_I profile_x_ERR profile_y_I profile_y_ERR wavelength_I wavelength_ERR tof_I tof_ERR wavelength_tof_I wavelength_tof_ERR +end data From 3ff6d88c098f0c136f8dd9e2443850542687acf3 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 17:45:22 +0100 Subject: [PATCH 35/75] Add TOFtrain version of MCPL instr --- .../ODIN_MCPL_TOF_train4/DiskChopper.comp | 230 + .../ODIN_MCPL_TOF_train4/ESS_butterfly-lib.c | 402 + .../ODIN_MCPL_TOF_train4/ESS_butterfly-lib.h | 97 + .../ODIN_MCPL_TOF_train4/ESS_butterfly.comp | 628 + .../Filterscan/0/PSD_Backtrace.dat | 335 + .../Filterscan/0/PSD_cut.dat | 335 + .../Filterscan/0/image.dat | 965 + .../Filterscan/0/mccode.sim | 270 + .../Filterscan/0/nonrotated.dat | 335 + .../Filterscan/0/profile_x.dat | 360 + .../Filterscan/0/profile_y.dat | 360 + .../Filterscan/0/rotated.dat | 335 + .../Filterscan/0/time.dat | 360 + .../Filterscan/0/wavelength.dat | 360 + .../Filterscan/0/wavelength_tof.dat | 965 + .../Filterscan/1/PSD_Backtrace.dat | 335 + .../Filterscan/1/PSD_cut.dat | 335 + .../Filterscan/1/image.dat | 965 + .../Filterscan/1/mccode.sim | 270 + .../Filterscan/1/nonrotated.dat | 335 + .../Filterscan/1/profile_x.dat | 360 + .../Filterscan/1/profile_y.dat | 360 + .../Filterscan/1/rotated.dat | 335 + .../Filterscan/1/time.dat | 360 + .../Filterscan/1/wavelength.dat | 360 + .../Filterscan/1/wavelength_tof.dat | 965 + .../Filterscan/ODIN_MCPL_TOF_train4.c | 37177 ++++++++++++++++ .../Filterscan/mccode.dat | 16 + .../Filterscan/mccode.sim | 27 + .../Graphite_Diffuser.comp | 115 + .../ODIN_MCPL_TOF_train4/Monitor_nD.comp | 681 + .../MultiDiskChopper.comp | 361 + .../ODIN_MCPL_TOF_train4.instr | 1192 + .../ODIN_MCPL_TOF_train4/bi_spec_ellipse.comp | 794 + 34 files changed, 51680 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly-lib.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly-lib.h create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/PSD_Backtrace.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/PSD_cut.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/image.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/mccode.sim create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/nonrotated.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/profile_x.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/profile_y.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/rotated.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/time.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/wavelength.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/wavelength_tof.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/PSD_Backtrace.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/PSD_cut.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/image.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/mccode.sim create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/nonrotated.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/profile_x.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/profile_y.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/rotated.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/time.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/wavelength.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/wavelength_tof.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/ODIN_MCPL_TOF_train4.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/mccode.dat create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/mccode.sim create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Graphite_Diffuser.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp new file mode 100644 index 0000000000..12de0104fb --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp @@ -0,0 +1,230 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: DiskChopper +* +* %I +* Written by: Peter Willendrup +* Date: March 9 2006 +* Origin: Risoe +* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disc chopper with nslit identical slits, which are symmetrically distributed +* on the disc. At time t=0, the centre of the first slit opening will be situated at the +* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. +* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z +* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see +* related bug on GitHub) +* +* For more complicated gemometries, see component manual example of DiskChopper GROUPing. +* +* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. +* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the +* chopper timing and phasing (thus conserving your simulated statistics). +* +* The isfirst parameter is ONLY relevant for use in continuous source settings. +* +* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper +* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) +* +* NOTA BENE wrt. GROUPing and isfirst: +* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need +* to set up +* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening +* that spans the full angular extent of the openings of the subsequent GROUP +* 2) Add your DiskChopper GROUP setting isfirst=0 +* +* %P +* INPUT PARAMETERS: +* +* theta_0: [deg] Angular width of the slits. +* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. +* radius: [m] Radius of the disc +* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) +* nslit: [1] Number of slits, regularly arranged around the disk +* +* Optional parameters: +* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) +* n_pulse: [1] Number of pulses (Only if isfirst) +* jitter: [s] Jitter in the time phase +* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? +* delay: [s] Time 'delay' +* phase: [deg] Angular 'delay' (overrides delay) +* xwidth: [m] Horizontal slit width opening at beam center +* verbose: [1] Set to 1 to display Disk chopper configuration +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT DiskChopper + + + +SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +DECLARE +%{ + double Tg; + double To; + double delta_y; + double height; + double omega; +%} + +INITIALIZE +%{ + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } +%} + +TRACE +%{ + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + double this_train_t; + int all_dead = 1; + + for (train_index=0; train_indexp_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + _particle->p_trains[train_index] = 0; // T_ABSORB + else { + // T_TRANSMIT + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + + } + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + + } + SCATTER; +%} + +MCDISPLAY +%{ + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly-lib.c new file mode 100644 index 0000000000..e100c9f9a4 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly-lib.c @@ -0,0 +1,402 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.c +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#error McStas : please import this library with %include "ESS_butterfly-lib" +#endif + +#ifdef OPENACC +#define exit(...) noprintf() +#endif + +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ + if(lambda<=0)return 0; + double par0=8.44e13/25.; + double par1=2.5; + double par2=2.2; + + double par3=-13.-.5*(theta-5); + double par4=2.53; + double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); + + double par6; + if(theta==5)par6=5.73745e+015/25.; + else if(theta==15)par6=5.88284e+015/25.; + else if(theta==25)par6=6.09573e+015/25.; + else if(theta==35)par6=6.29116e+015/25.; + else if(theta==45)par6=6.03436e+015/25.; + else if(theta==55)par6=6.02045e+015/25.; + double par7=0.788956+0.00854184*(theta-5.)/10.; + double par8=0.0461868-0.0016464*(theta-5.)/10.; + double par9=0.325; + + double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); + double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); + return para_part+SD_part; + +} +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ + if(lambda<=0)return 0; + double i=(theta-5.)/10.; + double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; + double par2=6.24806e+012-8.84602e+010*i; + double par3=-0.31107+0.0221138*i; + double aOlsqr=949./(325*lambda*lambda); + return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); + +} + + +/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ + + double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); + if(y0 < -height/2. || y0 > height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} /* end of ESS_2015_Schoenfeldt_cold */ + + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(timeGeometry +* The geometry corresponds correctly to the latest release of the butterfly moderator, +* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. +* A set of official release documents are available with this component, see the benchmarking +* website mentioned below. +* +* Brilliances, geometry adapted from earlier BF2 design +* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, +* are released as an updated component library for McStas 2.3, as well as a stand alone archive for +* use with earlier versions of McStas. +* +* The following features are worth highlighting: +*
    +*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. +* As a result, the spatial variation of the brightness across the moderator face should be considered to +* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to +* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness +* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. +*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. +* To accommodate the influence of the changed geometry, this scaling factor has been applied independently +* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the +* spectrally-integrated 6cm width data shown in [1],Figure 3. +*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance +* have been implemented. For now, we recommend to keep these at their default value of 1.0. +*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This +* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, +* which has been derived from current MCNP butterfly 1 model. +*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, +* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. +* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree +* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees +* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- +* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. +*
+* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be +* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. +* +*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance +* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation +* across sectors and potentially also performance losses due to engineering reality. +* +* Engineering reality +* An ad-hoc method for future implementation of "engineering reality" is included, use the +* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. +* +* References: +*

    +*
  1. Release document "Update to ESS Moderators, latest version" +*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" +*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures +*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. +*
  5. Source code for ESS_butterfly.comp at GitHub. +*
+* %P +* Input parameters: +* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" +* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector +* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m +* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator +* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 +* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 +* Lmin: [AA] Minimum wavelength simulated +* Lmax: [AA] Maximum wavelength simulated +* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. +* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index +* focus_xw: [m] Width of focusing rectangle +* focus_yh: [m] Height of focusing rectangle +* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. +* acc_power: [MW] Accelerator power in MW +* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. +* tfocus_dist: [m] Position of time focusing window along z axis +* tfocus_time: [s] Time position of time focusing window +* tfocus_width: [s] Time width of time focusing window +* +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT ESS_butterfly + +SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, + int target_index=0, dist=0, focus_xw=0, focus_yh=0, + c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, + acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) + +DEPENDENCY " -DTOF_TRAIN " + +SHARE %{ + %include "ESS_butterfly-lib" + %include "ESS_butterfly-geometry.c" + + int nearest_angle(double angle) { + int AngleList[] = {5, 15, 25, 35, 45, 55}; + double diff = 180; + int jmin=0; + int j; + for (j=0; j<6; j++) { + if (fabs(AngleList[j]-angle) < diff) { + diff = fabs(AngleList[j]-angle); + jmin = j; + } + } + return AngleList[jmin]; + } + double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; + double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; + double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; + double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; + double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; + double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; + double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; + double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; + double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; + double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; + double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; + double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; + double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; +%} + +DECLARE +%{ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double *Beamlines; + double wfrac_cold; + double wfrac_thermal; + /* 'Corner' parametrization, i.e. where are the limits of the moderators */ + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + /* - plus rotated versions of the same... */ + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + + double cos_thermal; + double cos_cold; + + double orientation_angle; + /* Centering-parameters, which sector are we in? */ + double cx; + double cz; + int jmax; + double dxC; + double dxT; +%} + +INITIALIZE +%{ + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; +%} + +TRACE +%{ + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + + if (total_N_sent == 0) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } else { + long tmp = ceil(target_tsplit*total_N_sent/total_arrived); + #pragma acc atomic + adaptive_N = tmp; + if (adaptive_N > _particle->N_trains) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } + } + + for (train_index=0; train_index0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=_particle->p_last_time_manipulation; + + SCATTER; +%} + +MCDISPLAY +%{ + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/PSD_Backtrace.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/PSD_Backtrace.dat new file mode 100644 index 0000000000..d7732e7f09 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/PSD_Backtrace.dat @@ -0,0 +1,335 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: PSD_Backtrace +# position: 0.123791 0 -0.138729 +# title: PSD monitor +# Ncount: 153447624 +# filename: PSD_Backtrace.dat +# statistics: X0=-1.20769; dX=7.30221; Y0=-0.00204656; dY=1.77858; +# signal: Min=0; Max=7.77503e+11; Mean=4.54119e+10; +# values: 3.67836e+14 1.9659e+12 1.06228e+07 +# xvar: X +# yvar: Y +# xlabel: X position [cm] +# ylabel: Y position [cm] +# zvar: I +# zlabel: Signal per bin +# xylimits: -15 15 -15 15 +# variables: I I_err N +# Data [PSD_Backtrace/PSD_Backtrace.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 2.635448993e+11 2.671322682e+11 4.117205658e+11 2.565800475e+11 2.675520545e+11 3.38743417e+11 4.53504218e+11 3.347430969e+11 2.831465971e+11 3.402689126e+11 3.831996032e+11 3.8665927e+11 2.649604385e+11 3.30737411e+11 2.564354247e+11 3.121991944e+11 2.554119523e+11 3.364144483e+11 2.434577173e+11 3.522363655e+11 3.569501063e+11 2.389827379e+11 2.912722619e+11 2.214340889e+11 2.383760851e+11 2.238774544e+11 2.219237533e+11 2.785914793e+11 2.811115058e+11 2.126504535e+11 1.994475257e+11 3.036821186e+11 2.77259713e+11 1.987301239e+11 1.999549607e+11 2.900745029e+11 1.772541533e+11 1.721930428e+11 1.791822222e+11 1.659511822e+11 1.637451553e+11 1.528188848e+11 1.522809354e+11 1.588435965e+11 1.524328838e+11 1.389083523e+11 1.543901338e+11 1.520815564e+11 1.40404454e+11 1.506007373e+11 1.431804143e+11 1.402272443e+11 1.429676236e+11 1.455586715e+11 1.567478057e+11 1.421042332e+11 1.509022642e+11 1.573355559e+11 1.466539928e+11 1.498236183e+11 1.45921974e+11 1.450968345e+11 1.435795057e+11 1.421685176e+11 1.499469511e+11 1.480449966e+11 1.460142892e+11 1.377209649e+11 1.409724724e+11 1.314998155e+11 1.228499947e+11 1.907257419e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.971540048e+11 4.047558517e+11 4.794466867e+11 4.123397072e+11 4.278652072e+11 4.688685683e+11 4.953428757e+11 4.151154958e+11 4.816518274e+11 4.162327913e+11 4.019565924e+11 4.043170445e+11 3.755980776e+11 4.494637207e+11 4.171570923e+11 5.375415697e+11 3.549846704e+11 4.754536129e+11 5.282409153e+11 5.616416544e+11 3.417040433e+11 4.185608659e+11 5.054042986e+11 3.820889671e+11 3.891202324e+11 5.602496472e+11 3.429414121e+11 6.552372346e+11 4.442669923e+11 2.94871275e+11 3.149383166e+11 3.637596213e+11 3.75200033e+11 2.770526602e+11 2.59006858e+11 2.508208561e+11 3.359845292e+11 2.386263203e+11 2.800949247e+11 2.232178844e+11 2.293265807e+11 2.171520617e+11 2.231612086e+11 3.212790067e+11 2.153324969e+11 2.081380643e+11 1.945947393e+11 2.048826272e+11 2.020868698e+11 2.122550077e+11 2.084441836e+11 2.030540229e+11 2.045040644e+11 2.09764481e+11 2.001753818e+11 2.015492896e+11 2.750090412e+11 2.190812111e+11 2.15750539e+11 2.167653193e+11 2.049104636e+11 2.102877495e+11 2.127256138e+11 2.104242397e+11 2.124203269e+11 2.062171535e+11 2.044821708e+11 1.985520163e+11 2.030760686e+11 1.954022967e+11 1.697904226e+11 1.97053965e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.776447308e+11 5.927245754e+11 4.916165875e+11 6.888015782e+11 6.461694827e+11 5.195564125e+11 6.600031657e+11 5.165910223e+11 5.932965751e+11 6.602172681e+11 5.03986465e+11 5.055377866e+11 4.783858678e+11 4.956715535e+11 4.936799718e+11 4.636433186e+11 4.628340858e+11 4.304354816e+11 5.262063282e+11 4.200646145e+11 6.197954257e+11 3.790196431e+11 3.808415571e+11 4.506361369e+11 5.895908334e+11 4.727544142e+11 3.633237908e+11 3.733116942e+11 4.229955278e+11 3.43988683e+11 4.280896778e+11 4.24399367e+11 3.87182238e+11 3.582566697e+11 3.475400293e+11 3.744726514e+11 3.564113843e+11 7.159440032e+11 4.168513116e+11 3.12261587e+11 3.222502609e+11 3.147233598e+11 3.080135427e+11 3.04448026e+11 2.961552375e+11 2.977064113e+11 3.023497038e+11 2.984347429e+11 2.989932499e+11 2.953464897e+11 2.984427701e+11 3.006790096e+11 2.966851643e+11 2.986268242e+11 3.089698913e+11 3.005507522e+11 3.137876773e+11 3.194545992e+11 3.233932474e+11 3.174174832e+11 3.229021005e+11 4.167693181e+11 4.130883278e+11 5.180258113e+11 3.206644513e+11 3.582921787e+11 3.757515913e+11 3.099724784e+11 2.903517745e+11 2.807990303e+11 3.558494712e+11 3.720862939e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.412029707e+11 5.724875674e+11 4.719787277e+11 6.462259321e+11 5.032912871e+11 5.711240391e+11 5.616484091e+11 4.809571975e+11 5.449000367e+11 4.878628595e+11 4.670720087e+11 4.50941622e+11 5.157130877e+11 4.625828093e+11 3.892307292e+11 3.568765345e+11 2.949228022e+11 2.671524034e+11 3.187563072e+11 2.324992344e+11 2.257868118e+11 2.26865685e+11 2.157621864e+11 2.122056447e+11 2.14652537e+11 2.155726917e+11 2.764508037e+11 1.991528005e+11 2.07013849e+11 2.051355872e+11 1.994542297e+11 2.172484458e+11 2.437781459e+11 2.926484464e+11 3.112501717e+11 3.470836385e+11 3.466380132e+11 3.607218983e+11 3.320742641e+11 3.692257764e+11 3.564169286e+11 3.025080419e+11 3.003521505e+11 2.848349675e+11 4.114164808e+11 2.822074852e+11 2.876115505e+11 2.91578688e+11 4.003652162e+11 4.140999299e+11 2.978880542e+11 4.123384787e+11 3.050711985e+11 2.994104086e+11 3.024684216e+11 3.061478998e+11 3.120794469e+11 3.223890564e+11 3.751064088e+11 3.294491089e+11 4.839628535e+11 4.857572635e+11 3.350013772e+11 4.296404687e+11 3.439035074e+11 3.434944561e+11 5.337357575e+11 3.39437386e+11 3.296551093e+11 3.034504775e+11 2.988852809e+11 2.938847706e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.112471347e+11 6.585240498e+11 5.060405911e+11 5.886863509e+11 4.514672519e+11 4.541131229e+11 5.203468597e+11 4.299103285e+11 4.349975421e+11 5.063450351e+11 5.278439402e+11 4.82387608e+11 4.137701247e+11 3.575941822e+11 3.306843936e+11 4.10122474e+11 2.827024218e+11 1.776253769e+11 1.48465145e+11 1.412961257e+11 1.5331663e+11 1.418668655e+11 2.092606465e+11 1.42866535e+11 1.45025622e+11 1.448782318e+11 2.213378087e+11 1.36964351e+11 1.440414245e+11 1.310821592e+11 1.320244784e+11 1.40998934e+11 1.829443545e+11 2.274470774e+11 2.538871986e+11 2.835435619e+11 2.979199767e+11 2.934211075e+11 2.882853769e+11 2.544964711e+11 2.349011893e+11 3.204423711e+11 2.480816499e+11 1.969229822e+11 4.714200826e+11 2.973006598e+11 3.077135619e+11 1.975410756e+11 2.028871897e+11 3.167407359e+11 2.102119175e+11 3.452439179e+11 3.263946967e+11 2.151586081e+11 2.203654362e+11 2.339999133e+11 2.276746392e+11 2.378180506e+11 2.476829753e+11 2.51632181e+11 3.094619923e+11 2.584073052e+11 2.66804778e+11 2.73210408e+11 2.636019616e+11 2.66829433e+11 2.768753071e+11 2.734801457e+11 3.349498376e+11 2.51004743e+11 2.420224911e+11 2.343976198e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.582407876e+11 3.816046165e+11 3.906189159e+11 3.94337794e+11 4.037132087e+11 4.096672879e+11 4.075610187e+11 3.987328733e+11 3.984539452e+11 4.836842025e+11 4.891658303e+11 4.164187352e+11 3.821804643e+11 4.002455187e+11 3.194347346e+11 2.789972561e+11 2.126917062e+11 1.641554886e+11 1.415857855e+11 1.863903151e+11 1.531574318e+11 1.442750622e+11 2.560093118e+11 1.412847373e+11 1.367647759e+11 1.38865362e+11 1.381439426e+11 1.386944161e+11 1.304358499e+11 1.289411197e+11 1.275954519e+11 1.302144297e+11 1.652625533e+11 2.078106305e+11 2.374200926e+11 2.802704678e+11 2.856730736e+11 3.002962481e+11 3.326994731e+11 2.494334298e+11 2.087005171e+11 1.956746277e+11 1.915007741e+11 1.924491374e+11 2.854876462e+11 2.565628873e+11 3.631311062e+11 3.221405185e+11 1.86503451e+11 3.979517944e+11 2.055506133e+11 2.070347042e+11 2.028016906e+11 2.09918832e+11 2.017727997e+11 2.127313153e+11 3.012922564e+11 2.916369242e+11 2.160698667e+11 2.262671455e+11 2.297102971e+11 2.344060189e+11 2.413512708e+11 2.351364485e+11 2.342954488e+11 2.375810216e+11 2.324318974e+11 2.296653145e+11 2.248871539e+11 2.044375978e+11 1.94356713e+11 1.811628097e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.308708928e+11 3.513696892e+11 4.124357039e+11 3.471874031e+11 3.753858391e+11 3.701058385e+11 3.694291669e+11 4.380291143e+11 3.590941615e+11 3.636744337e+11 3.852620396e+11 3.806969326e+11 4.623263837e+11 3.044107595e+11 3.939308212e+11 3.514250293e+11 1.776201586e+11 1.331703966e+11 1.163645972e+11 2.230395786e+11 1.158416193e+11 1.289152851e+11 1.229005302e+11 1.176147548e+11 3.954089437e+11 1.224940689e+11 1.315704142e+11 1.894767581e+11 1.142442833e+11 1.092025102e+11 1.047243516e+11 1.062004126e+11 1.366053604e+11 1.801526268e+11 2.374188841e+11 2.67875453e+11 2.826638384e+11 2.884167435e+11 3.364477345e+11 2.991458604e+11 2.238707591e+11 1.956899609e+11 3.06287923e+11 2.972017551e+11 1.842235566e+11 2.884254288e+11 1.746690683e+11 1.657956865e+11 1.750807118e+11 1.878652589e+11 2.031586195e+11 2.011313404e+11 1.959634816e+11 2.003215234e+11 1.972636745e+11 2.147545047e+11 2.232679499e+11 2.292664588e+11 2.340757716e+11 2.285288213e+11 5.241267354e+11 2.337271166e+11 2.312075773e+11 2.375054527e+11 2.382548895e+11 2.242075889e+11 2.357970755e+11 2.208085421e+11 2.208460803e+11 1.980978915e+11 1.86120107e+11 1.691818448e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.177371135e+11 3.253659097e+11 4.438821985e+11 3.252000003e+11 3.48242698e+11 3.470682489e+11 3.442420969e+11 3.449080935e+11 3.485561212e+11 3.606757114e+11 3.670563698e+11 4.225289859e+11 3.189757571e+11 2.805500917e+11 2.53840304e+11 3.291458127e+11 1.626683437e+11 1.642532206e+11 9.510739324e+10 9.584537372e+10 9.684139532e+10 9.805183936e+10 2.203667747e+11 9.980604428e+10 1.023820382e+11 1.558695978e+11 9.479437537e+10 1.48150909e+11 1.003730499e+11 8.731469477e+10 1.57089288e+11 9.746969405e+10 1.298641244e+11 1.69590614e+11 2.118203173e+11 2.672135786e+11 2.746809946e+11 2.833731898e+11 2.808636052e+11 2.447220084e+11 2.135771152e+11 1.860657038e+11 4.107047901e+11 1.663464514e+11 1.784505863e+11 1.699719647e+11 1.642386025e+11 1.679099924e+11 1.67250089e+11 2.839174166e+11 1.86106541e+11 1.896105142e+11 2.836571256e+11 1.918689005e+11 3.055958781e+11 1.93986858e+11 2.105682512e+11 2.047221005e+11 2.215944155e+11 2.915988921e+11 3.457819139e+11 2.332265501e+11 2.417769044e+11 2.326281693e+11 2.323382672e+11 2.456431808e+11 2.325325781e+11 2.235723456e+11 2.247416031e+11 2.042386958e+11 1.862740985e+11 1.691460496e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.151247648e+11 3.14663569e+11 3.342295775e+11 3.276044951e+11 4.320099756e+11 3.388998652e+11 4.339894017e+11 3.526600815e+11 3.401644954e+11 3.829429598e+11 4.542698049e+11 3.46231463e+11 3.064380416e+11 3.913857761e+11 3.003845984e+11 3.605100084e+11 1.615421291e+11 2.523164781e+11 8.622319078e+10 2.039722491e+11 9.000477805e+10 1.050570979e+11 9.786452021e+10 9.891579217e+10 9.400322804e+10 9.852517956e+10 9.196075014e+10 9.874846484e+10 9.214346177e+10 8.425399252e+10 8.653791692e+10 9.358516282e+10 1.191913623e+11 3.270846112e+11 3.717478194e+11 2.696063231e+11 2.747788433e+11 2.892284379e+11 2.538829196e+11 2.522300214e+11 2.081232833e+11 1.696014999e+11 2.940362669e+11 5.179224485e+11 2.813820903e+11 1.760650652e+11 1.609976665e+11 1.630546316e+11 1.584853065e+11 1.749320838e+11 1.708393018e+11 1.859728463e+11 1.880361649e+11 1.835816614e+11 1.840464848e+11 2.801624212e+11 2.115638974e+11 2.093624765e+11 2.181926365e+11 2.96141156e+11 3.047016777e+11 2.287217829e+11 3.389053125e+11 2.335378214e+11 3.499230543e+11 2.28067002e+11 2.31861259e+11 2.227609839e+11 3.143987235e+11 1.964673588e+11 1.846907637e+11 1.714185696e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.036869312e+11 3.156581091e+11 3.181599669e+11 3.183796531e+11 3.312160888e+11 3.407519624e+11 3.468238103e+11 3.506910507e+11 3.322322772e+11 3.344444131e+11 3.688835675e+11 3.331416515e+11 3.028875648e+11 2.636041587e+11 4.967967434e+11 2.177757643e+11 2.296187161e+11 1.094725798e+11 8.586174782e+10 9.005821666e+10 9.491085225e+10 9.618370493e+10 9.721284856e+10 8.939772432e+10 9.659849881e+10 1.544322338e+11 9.333210486e+10 9.459865862e+10 9.05268445e+10 8.453935788e+10 7.814756527e+10 8.8646226e+10 1.281183769e+11 1.795139535e+11 2.178937279e+11 2.678567269e+11 2.721591575e+11 2.763295443e+11 2.761042326e+11 2.498732127e+11 2.113027131e+11 1.813953709e+11 1.674499239e+11 1.680056989e+11 3.542891723e+11 2.898307371e+11 1.659627702e+11 1.691403381e+11 1.652151029e+11 1.744569887e+11 1.711711973e+11 1.801243213e+11 1.823102432e+11 1.804440375e+11 1.871004625e+11 2.026110016e+11 2.097213126e+11 2.08789815e+11 2.104727351e+11 2.974017195e+11 3.290210571e+11 3.429901067e+11 2.375746431e+11 3.175212605e+11 3.285195224e+11 2.3792716e+11 3.333198375e+11 2.098374465e+11 2.075200545e+11 1.95162738e+11 1.893024391e+11 1.722466912e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.318181578e+11 3.202189255e+11 3.210146439e+11 3.35730189e+11 5.498933546e+11 3.339322388e+11 3.276068036e+11 3.355955269e+11 3.354464723e+11 3.559926048e+11 3.64769917e+11 3.491168637e+11 3.005809398e+11 2.734280517e+11 2.486482736e+11 2.185187422e+11 2.412818468e+11 1.169097164e+11 9.165848479e+10 9.464503563e+10 1.017590491e+11 1.003335537e+11 9.805497367e+10 9.723752842e+10 9.123534431e+10 1.713327219e+11 9.74163553e+10 9.762564636e+10 9.482332691e+10 9.141293961e+10 8.628045916e+10 2.103734531e+11 1.22585485e+11 1.696373773e+11 2.269339507e+11 2.682428763e+11 2.761683184e+11 2.746452011e+11 2.715182039e+11 2.453947631e+11 2.063254102e+11 1.800696527e+11 1.778459429e+11 4.085357013e+11 1.697407444e+11 1.672294898e+11 2.420203304e+11 1.57965889e+11 1.590503539e+11 1.699515915e+11 2.310887695e+11 1.861036555e+11 1.796301768e+11 2.679512055e+11 1.798214406e+11 2.451501606e+11 2.027712704e+11 1.995457554e+11 2.15256063e+11 3.236486213e+11 2.179253831e+11 2.265545707e+11 2.426347519e+11 3.40976796e+11 3.341122858e+11 3.297280128e+11 2.269383616e+11 3.331687128e+11 2.124317097e+11 2.020353393e+11 1.836980655e+11 1.722054973e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.80361187e+11 5.187075235e+11 3.390850817e+11 3.636708351e+11 5.557497706e+11 3.65048153e+11 3.613746966e+11 3.515483502e+11 3.419441829e+11 3.572140575e+11 4.632892867e+11 3.761807899e+11 3.147013213e+11 2.8579471e+11 2.60226422e+11 2.299363801e+11 1.718800708e+11 1.397557647e+11 1.049917251e+11 1.059872779e+11 1.108412524e+11 1.166479471e+11 1.114140402e+11 1.128010573e+11 1.085909788e+11 2.527586697e+11 1.143042493e+11 1.108988013e+11 1.09102259e+11 1.066392002e+11 9.863168431e+10 1.082891907e+11 1.323371989e+11 1.788380308e+11 2.397461877e+11 2.908764316e+11 2.958198076e+11 2.897290145e+11 2.869398229e+11 2.418015336e+11 2.103369064e+11 3.107879318e+11 3.004863101e+11 1.91630348e+11 1.84523666e+11 2.871715999e+11 2.472647329e+11 2.262245922e+11 2.176278564e+11 1.810104455e+11 2.98026616e+11 2.146714253e+11 2.093280189e+11 1.935621197e+11 2.393996445e+11 2.13834613e+11 2.110309289e+11 2.041141699e+11 2.267669899e+11 2.249322083e+11 2.224730654e+11 2.288901611e+11 5.417076639e+11 4.528620285e+11 2.330650005e+11 2.369785376e+11 2.224431822e+11 2.241966127e+11 2.174943167e+11 2.047223698e+11 1.932799905e+11 1.824268629e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6.590080503e+11 4.964806653e+11 5.392581507e+11 5.876600872e+11 3.692790906e+11 7.28190913e+11 3.935180441e+11 3.850463503e+11 4.830622086e+11 5.881064484e+11 6.42919177e+11 4.097219413e+11 3.527400327e+11 3.329211512e+11 4.381394302e+11 3.433432681e+11 2.01641301e+11 1.696772863e+11 1.400349583e+11 1.821066839e+11 1.417012141e+11 1.400123508e+11 2.263172045e+11 1.475297421e+11 3.517856935e+11 1.362789306e+11 1.857437197e+11 1.32001686e+11 1.280447919e+11 1.838946821e+11 2.028140946e+11 2.111578774e+11 2.320676665e+11 1.992129255e+11 2.476325952e+11 4.007137236e+11 2.752281284e+11 3.006839467e+11 2.813532637e+11 2.692641797e+11 2.313313285e+11 2.016338767e+11 1.955301619e+11 1.967672517e+11 1.883246212e+11 1.82392814e+11 1.780997256e+11 2.656035831e+11 2.312491456e+11 3.527689134e+11 2.076886571e+11 2.096563171e+11 2.082338154e+11 1.933158152e+11 3.424733138e+11 4.348631843e+11 2.181614397e+11 2.230146673e+11 2.317931554e+11 2.303313498e+11 4.134099677e+11 2.432272034e+11 2.283966782e+11 2.332045571e+11 3.433718739e+11 2.333225912e+11 2.271660186e+11 2.325189344e+11 2.03525078e+11 2.012437234e+11 2.749034958e+11 1.81553332e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.947810508e+11 4.008013987e+11 6.086705082e+11 6.437268123e+11 4.294067192e+11 5.449702215e+11 7.775032386e+11 4.318971464e+11 6.640680542e+11 6.153482374e+11 4.43211371e+11 6.904886162e+11 5.683112534e+11 3.490925556e+11 3.241387673e+11 3.652550142e+11 2.979767586e+11 3.300599445e+11 1.461902432e+11 1.340206197e+11 1.413227034e+11 3.168869473e+11 1.367833775e+11 1.384503631e+11 1.399216901e+11 1.358934588e+11 1.322803717e+11 1.216615685e+11 1.359875611e+11 1.224708092e+11 1.347804973e+11 1.470314798e+11 1.775451299e+11 2.295192247e+11 3.333530797e+11 3.767726143e+11 2.961410416e+11 3.644995735e+11 3.544757463e+11 4.420704054e+11 2.175420478e+11 3.17189429e+11 3.136129946e+11 1.974942675e+11 1.919293804e+11 2.561612413e+11 1.799766207e+11 1.771883341e+11 1.855667332e+11 1.926526091e+11 2.027775484e+11 2.036203523e+11 3.185749455e+11 1.946240671e+11 3.04399992e+11 2.102380505e+11 2.128067962e+11 3.013337722e+11 2.192602566e+11 5.116534272e+11 3.145449044e+11 2.462975229e+11 2.459262384e+11 3.542846136e+11 2.413780687e+11 3.613748732e+11 2.571329081e+11 2.621092643e+11 3.272051401e+11 3.125664888e+11 3.106631132e+11 3.268056687e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.50073976e+11 4.59614273e+11 5.436591185e+11 6.916990022e+11 5.638357655e+11 4.82889762e+11 4.738783964e+11 5.342243035e+11 6.079972935e+11 6.563095748e+11 5.919646254e+11 4.715733731e+11 6.283653014e+11 4.641053039e+11 5.008852069e+11 3.938396611e+11 3.751191429e+11 2.299819645e+11 2.012957713e+11 1.94129205e+11 1.886301227e+11 1.780780893e+11 1.795047157e+11 1.719305359e+11 1.696535757e+11 1.723406507e+11 2.450620706e+11 1.672658284e+11 2.449453529e+11 1.635497752e+11 1.710571984e+11 1.837785271e+11 2.110109426e+11 2.64291204e+11 4.472959503e+11 3.868543325e+11 3.278888213e+11 3.352886989e+11 3.891672751e+11 2.951440082e+11 2.775774255e+11 3.423977088e+11 3.456527514e+11 2.749827659e+11 2.721383561e+11 3.894151746e+11 2.579279149e+11 5.870493113e+11 2.581583937e+11 3.526682404e+11 2.689994019e+11 3.906275601e+11 2.632013882e+11 3.833465578e+11 2.871427416e+11 2.766014429e+11 2.85368213e+11 3.912215665e+11 3.987246868e+11 3.08640617e+11 4.009995024e+11 3.135747466e+11 4.424624747e+11 3.20746808e+11 3.151763154e+11 3.755079612e+11 3.097426976e+11 4.350575822e+11 3.312163898e+11 3.148115689e+11 2.96202434e+11 3.011799848e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.276879946e+11 5.605074775e+11 5.651549612e+11 4.482667468e+11 5.02003403e+11 5.895804225e+11 6.497101244e+11 4.541366207e+11 5.035328078e+11 4.485939656e+11 4.406379328e+11 5.171363931e+11 6.490966498e+11 4.163409544e+11 4.935180656e+11 3.983442306e+11 3.827229263e+11 5.765378817e+11 3.669721877e+11 3.60765081e+11 3.367367448e+11 3.223621379e+11 4.078058061e+11 3.203722664e+11 4.328160892e+11 3.127782362e+11 2.964939575e+11 2.889491667e+11 2.866629284e+11 4.453101348e+11 2.991309769e+11 2.971893295e+11 2.903015911e+11 2.914572207e+11 3.022986479e+11 4.496565455e+11 3.928434973e+11 3.113304602e+11 3.028286231e+11 2.898542871e+11 2.846594405e+11 2.916435581e+11 2.889956683e+11 2.809729766e+11 3.975551195e+11 2.714336641e+11 2.756322864e+11 2.708771061e+11 2.519427246e+11 2.646773676e+11 3.74716795e+11 2.779113796e+11 2.593379091e+11 2.851948681e+11 2.848953531e+11 2.913111103e+11 2.7924123e+11 2.754506458e+11 2.925053995e+11 3.862651558e+11 2.935667494e+11 2.995395967e+11 2.897148859e+11 2.760744109e+11 3.982402044e+11 3.321797788e+11 3.922483409e+11 3.47228606e+11 3.371674216e+11 2.834715023e+11 2.825011069e+11 5.981675727e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 5.723624637e+11 7.185586611e+11 3.977168109e+11 5.003197754e+11 3.864331163e+11 4.971094042e+11 4.762552273e+11 4.833231629e+11 4.994661579e+11 3.769036146e+11 3.612472438e+11 5.634266607e+11 3.503981119e+11 3.441228801e+11 3.439254799e+11 3.430939911e+11 3.32098277e+11 4.383462354e+11 3.291609714e+11 3.180830411e+11 4.753791522e+11 3.923249907e+11 6.15135487e+11 4.42978613e+11 3.573121009e+11 3.579033649e+11 2.962834821e+11 2.733679972e+11 3.484408317e+11 2.792170969e+11 3.541780272e+11 3.792845893e+11 2.573291267e+11 3.560099383e+11 2.51994798e+11 3.120221727e+11 2.478718827e+11 2.402611391e+11 2.429048379e+11 2.268144799e+11 2.331311762e+11 2.28463238e+11 2.216512031e+11 2.125762517e+11 2.0727515e+11 2.07302916e+11 1.896802632e+11 2.036848285e+11 1.935137004e+11 1.955912629e+11 2.067665812e+11 1.965077219e+11 2.065233311e+11 1.981856702e+11 2.08574378e+11 2.177716183e+11 2.095085161e+11 2.08604558e+11 2.187130463e+11 2.188888568e+11 2.682685385e+11 1.996523258e+11 2.072449151e+11 2.183822153e+11 2.07073792e+11 2.050652964e+11 2.07392258e+11 2.084666229e+11 2.526647232e+11 2.506728485e+11 1.952365264e+11 3.001500083e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.817882069e+11 3.178262533e+11 5.184919022e+11 3.176071757e+11 3.646946922e+11 2.99629822e+11 3.035680928e+11 2.996953293e+11 2.861652041e+11 3.564763902e+11 2.788945998e+11 2.851311171e+11 2.774063294e+11 2.536147835e+11 2.755726217e+11 3.413912196e+11 2.702951329e+11 2.600243626e+11 3.317339333e+11 6.727876883e+11 3.589937383e+11 2.405488479e+11 4.115786243e+11 3.283425923e+11 3.231931505e+11 2.453658469e+11 2.389602555e+11 2.299429397e+11 2.22191143e+11 2.656248461e+11 2.138237821e+11 2.180073556e+11 3.190014499e+11 1.997090297e+11 2.674325603e+11 1.94377182e+11 1.872092344e+11 1.92241476e+11 2.624651492e+11 1.846655243e+11 1.791784279e+11 1.799396871e+11 2.813877926e+11 1.810589947e+11 1.565086834e+11 1.640376973e+11 1.612295114e+11 1.60976915e+11 1.584967656e+11 1.619054236e+11 1.610996126e+11 1.556332626e+11 1.606191486e+11 1.613973858e+11 1.617464768e+11 1.69272052e+11 1.605151126e+11 1.598858339e+11 1.682703802e+11 1.658442061e+11 1.695320834e+11 2.164359306e+11 1.632941223e+11 2.192379826e+11 2.15650404e+11 1.496624997e+11 1.53356664e+11 1.580392339e+11 1.511376515e+11 1.487456971e+11 1.389244092e+11 1.455571787e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [PSD_Backtrace/PSD_Backtrace.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6125041176 6274684126 1.062517684e+11 6036684787 6165035515 7.214640131e+10 1.28029101e+11 7.214753375e+10 6595138101 5.886094887e+10 1.05938873e+11 1.102566208e+11 6273422386 7.209179971e+10 6564971009 5.879192882e+10 6180787846 7.210729511e+10 5869131812 1.103368186e+11 1.103387982e+11 6010231252 5.869563695e+10 5704485297 5883906172 5687202596 5595616300 5.867653162e+10 7.206137632e+10 5650375352 5206682110 1.102915696e+11 7.823951797e+10 5193094981 5525652246 1.059039961e+11 5156258235 4874968982 5066197982 4738875934 4913852779 4687375033 4783220318 4759019152 4603589641 4289258393 5208840245 4818790031 4189623222 4786528647 4529064327 4673397225 4398519991 4555229558 4742465896 4481427130 4650358857 5025426736 4646729170 4596795396 4768563465 4536939590 4563919841 4608563671 4631236436 4833860359 4587276497 4243063986 4407879731 4269574143 4028439246 5.86360014e+10 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7625384772 7604461131 7.22822339e+10 7844976416 8021689146 5.898649396e+10 7.843416229e+10 8105433390 7.842260411e+10 7973998069 7615048672 7700476194 7312040449 7.223674706e+10 5.890618005e+10 1.014612331e+11 7214019031 8.29250618e+10 1.249158281e+11 1.559551559e+11 7115327927 7.217618564e+10 1.248785035e+11 5.878216915e+10 5.880555033e+10 1.747639477e+11 7560126670 1.770611203e+11 1.018096785e+11 6489283039 7298228516 7.210583395e+10 7.832810859e+10 6308260941 5935812542 5758245853 7.829015637e+10 5772564370 5.872311167e+10 5615530273 5698766940 5473032451 5599580019 1.103032707e+11 5425676894 5397009346 5266036764 5404251093 5253340352 5524673328 5495861003 5432226911 5340961793 5607111782 5220393768 5352874802 5.873479972e+10 5913643508 5871926075 5657632389 5304009570 5509053207 5454885304 5449523697 5618121940 5436340007 5401584520 5280326182 5376393447 5378305304 4742452656 5552432685 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8216250115 1.10481558e+11 8126495498 1.211393512e+11 1.105347913e+11 8763981876 9.783154003e+10 8414244152 7.850016058e+10 1.106632276e+11 8693466383 8622444635 8062385530 8369221076 8486998605 8146943563 8237849068 7643445742 1.104348067e+11 7784666026 1.559918492e+11 7191757954 7280256889 5.893097006e+10 1.343593572e+11 1.059766468e+11 7068117794 7404374448 7.862156194e+10 6969464133 7.834302832e+10 7.223955296e+10 5.874417954e+10 7060643753 6779805806 7421876010 6986228316 1.870524816e+11 7.839805219e+10 6590607740 6742570057 6646365538 6507256666 6556059579 6350453213 6439894840 6967157223 6539476744 7030512259 6468843321 6532900857 6414153836 6518315337 6576434913 6594221024 6313558964 6554366274 6753839427 6938300103 6916969833 6919845721 7.543817852e+10 1.059477039e+11 1.496928642e+11 6655090038 4.767992142e+10 7.83915641e+10 6572353736 6353033392 6049816592 5.889499777e+10 7.839182871e+10 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8048645944 1.104801305e+11 8179030411 1.10651886e+11 8611834186 7.847816055e+10 7.845956366e+10 8800439953 7.844986188e+10 8554758881 8198026096 8328431089 7.843938689e+10 5.896346341e+10 7456377055 7068088258 6340664926 6131908532 7.855521062e+10 5863304094 5738748429 5786872144 5508149039 5323782696 5478810707 5588674280 7.819746507e+10 5094003082 5493577186 5377492892 5357201989 5556845947 5820943743 6341112747 6308809249 6750108630 6619454159 6992841822 6747648613 4.766846471e+10 4.765778351e+10 6356796332 6669039622 6599343799 1.167536695e+11 6286005303 6394524035 6312362645 1.110996726e+11 1.167476592e+11 6714657218 1.167327937e+11 6951830561 6285844210 6331951526 6376282564 6650778947 6731258530 5.883561011e+10 6871899745 1.10714505e+11 1.014515531e+11 6798002527 1.059540507e+11 7236121540 7133159379 1.203611362e+11 6811737892 6724019524 6408514097 6731010719 6375208624 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7867773434 1.353819293e+11 7.840244928e+10 1.106176212e+11 8060202415 8110808338 7.84201228e+10 8152751354 7954671086 5.903342307e+10 7.842538319e+10 5.890933524e+10 8229455364 7226064946 6755508954 9.168431416e+10 4.757039054e+10 4967938952 4572018649 4517678908 4748163467 4334662607 7.195546134e+10 4300462405 4301881334 4590877582 7.81771484e+10 4260926163 4855910861 4156662842 4265656388 4351969492 4994717278 5536710954 5735252417 6170321850 6529647969 6305662883 6183861328 5873078706 5885520091 1.167013705e+11 4.75041325e+10 5462392471 1.64392405e+11 1.058619867e+11 1.110411424e+11 5249787842 5385115001 1.110464489e+11 5378391275 1.167034069e+11 1.05938606e+11 5467642678 5368194296 5725025497 5581203534 5654708674 5817106854 6014367026 5.873601684e+10 5938312562 6178687997 6252398335 6249775143 5997362048 6312883396 6108400909 7.835863362e+10 5985404710 5774020065 5652598885 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7194876373 7395285097 7298480405 7417707677 7874027696 7738731574 7589947116 7622395616 7596067196 7.83921291e+10 7.231916875e+10 7775268266 7568651770 4.77545832e+10 6688241718 6367739437 5467332893 4780790428 4596173439 4.742601536e+10 4985046721 4471918267 1.16658357e+11 4427394739 4238741378 4398973690 4325760191 4299380547 4108907819 4115968828 4224715036 4135310318 4707886009 5347358259 5580399816 6212711716 6084593753 6450698518 5.871471761e+10 5875402697 5325436993 5234850584 5480857667 5679042871 1.058447602e+11 7.006524183e+10 1.311847845e+11 1.391493505e+11 5103321492 1.49711763e+11 5356222835 5458754916 5290570002 5420324358 5207922435 5300693402 7.833805301e+10 7.832108478e+10 5378890896 5567281215 5548184667 5715604787 5781502092 5609932226 5699895049 5736643760 5710117107 5663270316 5847889689 5276123423 5054133831 4997250492 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6947145144 7441715814 7.831894536e+10 6914887618 7373596656 7648592848 7163546716 7.836338166e+10 7253641550 7430684372 7310278365 7361063899 9.29668914e+10 6587389497 1.059968379e+11 1.103236866e+11 4827518393 4238967043 3898936044 1.101441017e+11 3826186962 4338147943 4084034598 3912895733 1.965668142e+11 4012891107 4786069381 7.814855277e+10 3919075846 3877041423 3859532060 3779321163 4280909100 4797470915 5728021769 5935284388 6168736695 6721437510 5.874768497e+10 5.866177222e+10 5606117797 5116405719 1.16685463e+11 1.167032324e+11 5434430526 1.058630389e+11 5013708455 4702702499 4858995923 5390409105 5792346164 5356743562 5031449302 5194989980 5253229358 5308255142 5599797851 5690522606 5641068183 5381639082 1.689086944e+11 5647593088 5564301777 5818179827 5832853502 5498245972 5892241301 5524601849 5548989686 5094895580 5001358601 4679929833 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6939746473 6950960901 1.059939427e+11 6715855368 7290945698 7207291593 7067968152 7076128427 7383244235 7365585693 7324985354 7.220132945e+10 6937988364 6682413938 6538748099 1.058987902e+11 4643858528 4.733087475e+10 3649398025 3692266463 3769417296 3473256283 1.166360518e+11 3746046922 3718733802 5.857841237e+10 3650426465 5.094401736e+10 3793878124 3301656333 7.81614211e+10 3833942698 4265821039 4743833789 5306382937 6121137161 6111858241 6382166728 6391320287 5800565301 5388580031 5187541270 1.649454308e+11 4851975186 5099275302 4655620278 4599235527 4803794951 4832139822 1.059177696e+11 5108344195 5022935015 1.059134537e+11 5172640706 1.058766572e+11 5002032011 5266785357 5148010861 5537621853 7.831586131e+10 1.059681577e+11 5569875228 5811656530 5711089657 5593121918 5832312867 5789306792 5489040490 5591779787 5341111543 4933476395 4703367039 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6986073010 6776839405 7406987730 7281581644 1.059624543e+11 7038751937 7.838274448e+10 7261722181 7266046862 8109416214 7.839000796e+10 7362262771 6992124389 1.103568068e+11 4.762299359e+10 1.159848828e+11 4749573282 1.015702321e+11 3418521707 1.101340644e+11 3403016376 3854220708 3660856719 3724747696 3564392308 3804132641 3437002095 3633037225 3458717997 3338014118 3668926593 3603387367 4164621743 1.104960333e+11 1.105244693e+11 6214848646 6446365841 6541362754 5821885913 6078428714 5398308063 4839766745 1.166905106e+11 1.959247814e+11 1.166685456e+11 4962372730 4673695430 4555146552 4653643822 4895893572 4725601538 5189099252 5035291650 4797966444 4832853324 7.850378412e+10 5448329597 5353249375 5380562846 7.83355656e+10 7.833768353e+10 5386593232 1.059535244e+11 5594956230 1.167152767e+11 5567594795 5737614955 5562236117 1.11036759e+11 5209397817 4937881516 4761950365 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6632679793 6940151361 6835307933 6563936829 6810720221 7135378094 7227100029 7415066664 7025733469 7276908070 7669997321 7007486428 7192810011 6263027246 1.774424161e+11 5452369576 7.81583979e+10 3808220447 3393939153 3529582443 3618384280 3578122973 3687441011 3322686902 3633629248 5.857936131e+10 4135995037 3581839223 3466582353 3395447660 3230926598 3472145715 4210537851 5245326527 5352165224 6326181399 6219086273 6353135234 6189996628 5798326320 5249194772 4899005526 4651988163 4719546533 1.360034359e+11 1.166814877e+11 4643135436 4860637336 5133643491 4846570052 4698981968 4992556564 4896271759 5004242775 4949236682 5238936486 5473531084 5278917924 5312102340 7.833229798e+10 1.059482514e+11 1.167023875e+11 5791841679 7.833756752e+10 1.059456362e+11 5798290807 1.059578491e+11 5254786971 5265313707 5057862454 4918719944 4747968758 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7174442091 6988845791 7027217454 6987861703 1.496969803e+11 6898991942 6730383241 6990505310 7131595765 7595279724 7078865629 7352520441 6506113344 6076656989 5936817180 5539855475 7.815126877e+10 3866026533 3470593639 3598114927 3762640238 3761739768 4173112402 3586547328 3521568552 7.814171372e+10 3764838621 3654955363 3548936691 3667844637 3682615120 1.166527821e+11 4214150672 5098992634 5706092038 6262426873 6266272375 6150291917 6375327637 5803167487 5401035367 5063278003 5451494405 1.649393786e+11 4655528737 4725104649 7.004987357e+10 4629195339 4647493757 4779765672 5.104303625e+10 5002041397 4810220622 7.830110693e+10 4939051884 4.000921536e+10 4985500885 4883222618 5267199364 1.059444282e+11 5438594640 5452402164 5835543903 1.059629776e+11 1.059468977e+11 1.059541918e+11 5569576692 1.110580084e+11 5521051905 5071293478 4999137880 5145087559 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1.105541849e+11 1.404491343e+11 7500418735 7341554669 1.496933007e+11 7563093128 7387144555 7438207827 7255411428 7117844370 7.87144992e+10 8180939534 6562808042 6782600841 5946469920 5519044513 4872258795 4428712006 3747277648 3784332685 3776787988 4039396332 3868463750 3894174533 3750895972 9.760707333e+10 4073385807 3762347409 3709755290 3781914168 3571676037 3877100776 4126927268 4878844980 6078297477 6414324228 6527129601 7047195056 6600371732 5636582403 5347617416 1.166942268e+11 1.166852702e+11 5319618980 5162486278 1.166746982e+11 7.004095656e+10 5.105594985e+10 5.102378078e+10 4899613833 1.059244258e+11 5587153741 5342530361 5095545963 4.001188024e+10 5675776472 5355079612 5067585108 5466308183 5407413731 5730067920 5625408472 1.759350378e+11 1.575275049e+11 5606560721 5808850217 5407612429 5683511180 5407438942 5712947979 5114998644 4947818970 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1.562068795e+11 9.776393476e+10 1.105925904e+11 1.575520803e+11 7175685346 1.959949073e+11 8054575484 7503576489 1.104201642e+11 1.406634723e+11 1.43385942e+11 8014477743 7009782459 6951974990 1.391368827e+11 7.855363798e+10 5363498894 5361121167 4320590849 4.740890918e+10 4339004090 4409095690 7.816684745e+10 4755424266 1.495704368e+11 4176619257 4.738649968e+10 4208019662 4024027826 5.860210528e+10 7.815781649e+10 7.814910648e+10 7.815683595e+10 5188582635 5840790912 1.059756406e+11 6124814820 6649047440 6307589794 6184208335 5810408748 5451083336 5167174444 5175152309 5111246157 5058578105 4842655189 7.006461962e+10 5.104992665e+10 1.174255582e+11 5315954356 5400013921 5481879194 5446878866 9.773983618e+10 1.595456213e+11 5497442867 5460946469 5773756986 5692605262 1.31595598e+11 5940674370 5490271959 5594229420 1.167073476e+11 5560449383 5531412873 5993315560 5053611716 5162082580 7.829769856e+10 5405456712 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8176656497 7491149441 1.404978618e+11 1.605745865e+11 7950589241 1.060350003e+11 2.020543144e+11 8863069742 1.482197555e+11 1.202467281e+11 7900690729 1.18868658e+11 1.122544539e+11 7019999960 6783112758 7.839699554e+10 7.853788182e+10 1.104670269e+11 4915158562 4181278444 4352113991 1.304760189e+11 4183702996 4294633347 4390625466 4475532349 4742874912 3871568428 4385426327 4076726783 4720550007 4465159406 4976267644 6178328189 7.826610552e+10 7.828326557e+10 6627275905 7.826961619e+10 7.826796414e+10 1.403988966e+11 5617258694 1.166970242e+11 1.167122373e+11 5706084914 5672375738 7.827598727e+10 4925041294 4808112676 5023947031 5202212253 5241878041 5225511145 1.166933704e+11 5069713350 1.059327755e+11 5713331125 5277609825 7.83499579e+10 5364918964 1.531126058e+11 7.836645041e+10 5772900566 5659296415 1.167122118e+11 5765779703 1.167252947e+11 5954918967 6397866401 7.835039176e+10 7.834523009e+10 7.833432371e+10 1.059206814e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8765538042 8462964854 7.852489394e+10 1.353804616e+11 7.850431151e+10 8358558910 8617864114 7.878330615e+10 1.110802596e+11 1.207106725e+11 1.110592471e+11 4.779049671e+10 1.481827145e+11 7.868911319e+10 1.109918981e+11 7.861865005e+10 1.167231914e+11 5820056593 5679664610 5306685556 5157169617 4855015038 5083611888 4780293439 5326040947 4994251763 7.827695028e+10 4846844532 7.817764146e+10 4633645062 4925726192 4959628098 5268998332 6644607112 1.105400652e+11 7.829026331e+10 6619833750 6872463675 7.840781554e+10 6259549734 6061148726 7.826117662e+10 7.835615729e+10 6299429837 6317140894 9.775111673e+10 5930914493 1.574246882e+11 6220046937 7.839369753e+10 6219369674 1.167349607e+11 6322162675 7.769994116e+10 6370035008 6152777595 6298869468 1.059947007e+11 1.059964255e+11 6392726677 6.707198624e+10 6415892352 9.152016673e+10 6786778104 6712144806 5.883422682e+10 6424936809 1.111225769e+11 7457525470 6734759286 6718402308 6469663405 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7954639424 1.060803221e+11 1.104764261e+11 8015319920 4.787351852e+10 1.168691971e+11 1.354234713e+11 8380490975 4.794842108e+10 8162157047 8016975394 7.875791644e+10 1.357163795e+11 7725396339 7.843571136e+10 7464282641 7519461868 1.497016486e+11 7518384857 7313028285 6960896927 7220982438 7.833141e+10 6732246683 1.167593261e+11 6792476390 6405786599 6337387875 6552181116 1.013501698e+11 6977646642 7007003086 6382110815 6251249384 6381190595 1.105283709e+11 7.83031268e+10 6611360604 6482343214 6253232859 6318460917 6442484775 6336341526 6239483896 1.167528239e+11 6141695440 6536782395 6153664344 5996412552 6015910125 1.059376385e+11 6373478324 5871807111 6386975444 6296330017 6528107367 6328865175 6036866709 6515207488 1.059905864e+11 6322356871 6371528660 7230588666 6137949219 1.111154315e+11 5.87746979e+10 8.291709843e+10 5.880507733e+10 5.881222189e+10 6338183363 6190539091 1.863028921e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1.318302079e+11 1.833272028e+11 7710988896 1.104189029e+11 7267684158 1.104142282e+11 7.842036895e+10 7.224638395e+10 1.10434294e+11 7466671671 7182943691 1.353873977e+11 7051934176 6870936491 7213340723 7134425574 6804169158 1.059655151e+11 7045404382 6748982474 1.106477317e+11 7.837576432e+10 1.562202019e+11 9.768094336e+10 5.875324232e+10 5.876629724e+10 6378631911 6049724920 5.880775149e+10 6245560634 7.838653917e+10 1.103529413e+11 6109226434 1.103236801e+11 6176980493 7.20383806e+10 5959773480 5925890612 5978606406 5712380556 5938776456 5878640904 5561548595 5516638502 5604044413 5525301472 5130301837 5295534955 5209581597 5189902726 5432214527 5236072661 5471824665 5116364674 5397361910 5847881707 5393369002 5362663373 5471269724 5625600147 5.871339057e+10 4983538128 5304939579 5759926910 5267921328 5341458955 5618273304 5458732674 5.868944271e+10 5.869938306e+10 5204886508 1.102990697e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7.829959138e+10 6690398344 1.496990618e+11 6736616534 5.886124092e+10 6617540788 7029066437 6571761213 6396297792 5.883724711e+10 6284061676 6503039014 6570791421 5908272023 6431683216 7.827068649e+10 6381472521 5916737875 7.826598609e+10 1.904599476e+11 1.059186099e+11 5668499773 1.105176395e+11 7.826526083e+10 7.824795181e+10 6022679510 5835746358 5750127320 5569101090 4.750355274e+10 5551114138 5644436832 1.10302729e+11 5079105921 7.818118115e+10 5102033525 5295130923 5249265275 7.205740769e+10 5089341407 5043894846 5235387710 1.058772332e+11 5518368834 4728705242 4855245763 4857637670 4881074588 4840537386 4945753126 4901062569 4738024635 4855720634 4807744899 4721942116 5176225663 4712549095 4836136983 4814189170 4828809138 5036347855 5.864383511e+10 4769628974 5.866176288e+10 5.865306112e+10 4484675984 4637365163 4763022166 4465939952 4641043234 4283775629 4343604879 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [PSD_Backtrace/PSD_Backtrace.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6854 6716 6662 6646 6719 6522 6553 6501 6509 6519 6414 6434 6317 6293 6271 6176 6202 6343 6029 6212 6142 6187 6063 5838 6169 5877 5931 6068 5860 6007 5851 5924 6074 6162 6127 5974 5928 6043 6097 5921 5860 5672 5712 5700 5577 5424 5506 5459 5490 5391 5321 5143 5183 5014 5195 4962 4972 4833 4791 4803 4608 4592 4419 4490 4534 4348 4166 4119 4187 4082 3967 3894 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11310 11623 11508 11342 11317 10944 11072 10877 10578 10665 10252 10025 9484 9234 8871 8820 8915 8903 8830 8963 8855 8912 8987 8807 8871 8914 9130 8918 8882 8868 9113 8858 8947 8833 8617 8675 8756 8372 8032 7839 8179 8083 8101 7950 7845 7905 7619 7640 7611 7503 7614 7239 7110 7092 6973 6788 6924 6796 6687 6605 6513 6390 6477 6316 6206 6129 6060 5852 5988 5733 5385 5433 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 13372 13594 13845 14196 14196 14180 14445 14157 14034 13911 13805 14045 13727 13613 13382 12842 12446 12244 11831 11944 11794 11539 11436 11681 11523 11593 11836 11706 11678 11563 11895 11801 11986 12511 12606 13021 12716 12334 11999 11575 11660 11559 11314 11352 11077 11250 11182 11013 10716 10681 10715 10670 10516 10368 10141 10302 10145 10023 10107 9767 9599 9726 9684 9484 9357 9150 9128 9157 8872 8761 8439 8417 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 12240 12726 13106 13397 13279 13235 13323 13133 12990 13245 13361 13224 12751 12443 11524 10671 9314 8210 7570 7418 7186 7306 7227 7122 7298 7280 7288 7378 7459 7517 7524 8052 9015 10527 11980 13187 13696 13972 13632 13325 12921 12679 12537 12187 12196 12159 11989 11942 11825 11746 12058 11787 11764 11442 11327 11365 11238 11151 10782 10971 10647 10525 10550 10399 10198 10306 9970 10021 9735 9259 8947 8777 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 10786 11145 11542 11534 11681 11884 11806 11577 11519 12020 12392 12450 11852 10557 10091 8554 7021 5348 4490 4291 4530 4485 4435 4487 4649 4480 4602 4713 4651 4634 4721 5285 6547 8330 9966 11417 12109 12761 12428 11728 10773 10041 10081 10068 9639 9544 9366 9312 9332 9404 9622 9678 9655 9195 9140 9234 9070 9206 8977 8960 8903 8902 8616 8594 8486 8376 8432 8274 7834 7802 7422 7073 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9322 9760 10082 10077 10110 10218 10304 10045 10154 10503 11204 11778 10874 10220 9407 7853 6055 4424 3548 3661 3777 3846 3741 3789 3799 3906 3836 3875 3958 3858 3775 4206 5360 7217 9049 10693 11999 12634 12482 11927 10618 10114 9980 9746 9424 9431 9165 9080 8955 9109 9269 9460 9179 9028 8829 8975 8928 8781 8560 8474 8289 8264 7986 7876 7470 7487 7261 6972 6743 6368 5884 5795 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8168 8256 8756 8822 8961 8951 9050 8705 8999 9586 10300 10419 9637 8653 7981 6810 5039 3378 2756 2736 2863 3042 2956 2970 2930 3013 3127 2982 2862 2772 2733 3053 4192 6389 8470 10489 11704 12575 12697 11798 11086 10347 10123 9917 9801 9352 9292 9076 8938 9100 9265 9346 9257 8955 8936 9084 8833 8925 8820 8618 8472 8328 8043 7816 7530 7245 7029 6916 6614 6263 5936 5536 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7580 7966 7992 8074 8409 8385 8318 8253 8313 8950 9661 9602 8794 7887 7172 6034 4211 2778 1991 2021 2199 2242 2291 2245 2281 2228 2145 2203 2231 2009 1864 2361 3623 5529 7925 10174 11557 12087 12388 11677 11009 10080 9954 9591 9542 9335 9108 8835 8568 8814 8975 9107 8902 8809 8631 8666 8743 8442 8583 8406 8335 8260 8024 7686 7657 7390 7125 6819 6678 6176 5919 5459 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7615 7600 7868 7855 7823 8322 8372 8341 8207 9170 9397 9518 8657 7956 7142 5778 4176 2600 1868 2011 2046 2190 2118 2100 2115 2112 2053 2096 2045 1956 1800 2259 3461 5648 7928 10012 11383 12288 12264 11926 10894 9882 9609 9545 9444 9400 8813 8842 8431 8537 8617 8835 8784 8843 8399 8771 8709 8696 8496 8235 8232 7964 7887 7679 7273 7095 7088 6763 6343 6033 5867 5303 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7458 7663 7838 7899 8130 8257 8391 8064 8117 8751 9413 9316 8581 7683 7151 5933 4001 2593 1891 1893 2112 2134 2085 2140 2091 2148 2044 2066 2025 1849 1741 2228 3587 5731 8044 10325 11464 12166 12355 11739 10962 9878 9562 9524 9399 9244 8933 8840 8532 8485 8621 8596 8665 8309 8550 8620 8607 8520 8489 8331 8146 8252 7835 7764 7345 7204 6973 6653 6440 6038 5833 5416 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7819 7731 7721 8132 8076 8198 8235 8133 7964 8936 9609 9658 8535 7823 7046 5982 4131 2708 1924 1999 2170 2205 2190 2159 2122 2128 2130 2161 2054 1841 1864 2245 3552 5712 7923 10135 11459 12225 12410 11875 10832 10072 9725 9710 9474 9121 9081 8671 8492 8503 8812 8986 8695 8766 8246 8767 8723 8499 8564 8415 8328 8064 7957 7665 7491 7128 6891 6815 6401 6234 5745 5428 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8022 7904 8306 8664 8535 8662 8611 8497 8523 9159 9901 10117 9206 8363 7653 6474 4674 3273 2523 2447 2651 2734 2774 2769 2728 2802 2644 2830 2689 2569 2431 2923 4152 6143 8329 10544 11735 12387 12656 12014 11063 10394 10007 10027 9611 9560 9239 8860 8877 8739 9041 9314 9354 8758 8932 8899 8766 8515 8836 8538 8267 8165 8084 7747 7508 7328 7086 6866 6596 6327 6072 5584 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9059 9345 9667 9480 9633 9964 9956 9827 9622 10302 11000 11457 10669 9793 9089 7723 5704 4399 3724 3565 3713 3737 3840 3757 3822 3787 3902 3755 3796 3606 3571 4087 5272 7035 9074 11062 11675 12674 12551 12144 11042 10192 10185 10076 9767 9307 9013 8965 8808 9047 9282 9511 9303 8914 8850 8940 8889 8864 8718 8469 8373 8262 8058 7783 7564 7286 7139 7042 6735 6393 6048 5551 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 10471 10798 11082 11031 11248 11436 11164 10958 11208 11699 12454 12353 11700 10678 9830 8447 6488 5097 4313 4152 4206 4180 4261 4271 4441 4420 4456 4437 4401 4427 4544 5179 6125 8007 9694 11174 11873 12053 12111 11372 10239 9722 9627 9379 9164 9034 8868 8514 8479 8608 8927 8977 8676 8487 8494 8465 8442 8573 8328 8359 8285 8357 8190 7955 7855 7859 7907 7718 7629 7358 6962 6647 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11916 12433 12391 12625 12725 12903 12656 12613 12602 12836 12776 13170 12013 11513 10727 9496 8098 7111 6301 6180 5968 5934 5967 6058 5893 6032 6090 6259 6218 6339 6354 6958 8011 9508 10674 11602 12420 13066 12726 12332 11685 11514 11471 11499 11153 10954 10828 10794 10690 10663 10835 10829 10521 10570 10599 10375 10605 10346 10304 10455 10275 10323 10053 9747 9767 9708 9687 9736 9430 9250 8755 8574 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 12135 12405 12541 12493 12587 12643 12558 12329 12497 12474 12209 12295 11752 11796 11608 11364 10913 10674 10278 10416 10016 10067 10166 10102 10267 10084 9949 10121 10046 10002 10251 10291 10669 10699 10944 10880 11054 10947 10669 10554 10487 10444 10369 10343 10227 9888 10150 9956 9728 9646 9614 9842 9363 9710 9501 9366 9173 9247 9211 9166 9037 9074 8932 8640 8795 8407 8410 8348 8210 8017 8136 7866 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11342 11701 11588 11646 11439 11446 11194 11198 10987 10722 10517 10449 9524 9064 9045 8993 9023 8865 9009 9059 8859 8911 8872 8924 8901 9018 8954 8889 8986 8879 8883 8899 8854 8659 8631 8408 8319 8095 8239 8005 7929 7898 8080 7886 7822 7728 7521 7695 7366 7405 7432 7452 7324 7149 7114 7008 7080 6914 6991 6785 6699 6587 6538 6543 6329 6190 6248 6048 5962 5758 5820 5771 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8601 8777 8476 8395 8135 7895 7944 7889 7502 7650 7277 7115 6688 6613 6611 6565 6651 6778 6621 6601 6530 6689 6576 6497 6701 6769 6609 6581 6543 6671 6737 6688 6671 6589 6586 6536 6253 6345 6461 6406 6440 6265 6246 6318 5950 6082 6083 6020 5975 5816 5836 5879 5732 5622 5542 5382 5436 5370 5325 5306 5354 5141 5132 5037 4874 4765 4761 4805 4755 4535 4452 4523 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/PSD_cut.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/PSD_cut.dat new file mode 100644 index 0000000000..daa08fe383 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/PSD_cut.dat @@ -0,0 +1,335 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: PSD_cut +# position: 1.69078 0 -1.24822 +# title: PSD monitor +# Ncount: 153447624 +# filename: PSD_cut.dat +# statistics: X0=0.03847; dX=0.288102; Y0=0.00841529; dY=0.277816; +# signal: Min=0.442238; Max=2.55939e+10; Mean=3.35587e+07; +# values: 2.71826e+11 2.66571e+10 690731 +# xvar: X +# yvar: Y +# xlabel: X position [cm] +# ylabel: Y position [cm] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.5 0.5 -0.5 0.5 +# variables: I I_err N +# Data [PSD_cut/PSD_cut.dat] I: +22207982.55 143947413.2 4340272.014 57010841.42 2509.066877 57389145.87 2785248.478 139517.8881 11252069.01 8831497.277 12004648.02 27106496.7 853587.1534 2840774.069 4688030.896 30310747.42 174427.4881 18157531.53 190534.1887 6433653.705 559080.8792 2871202.177 42531925.96 26703674.33 53802740.3 6021240.12 8143.790053 19955162.93 53447908.79 10305509.94 72584583.95 8212487.335 101683032.7 29367051.02 4434445.84 343709.7259 26206633.52 24668050.53 1366453.236 4671.867596 4619954.65 1959800.041 34950503.03 57072657.33 23935228.11 47165070.99 14268443.01 52905414.36 4921337.834 3863151.934 43608450.97 15643236.6 52464616.64 86240755.57 18339248.83 7437314.444 975046.4033 669428.1617 793908.5816 1155985.524 119779595.6 17484917.18 12631597.88 132441.2471 542268.9594 74368139.3 5972234.421 50394974.12 0.4422375846 47729565.22 53887382.84 26453402.23 38018282.8 2001185.634 28868948.58 1390650.726 46042414.54 18243879.22 4164159.886 70381.94595 63609213.34 65023654.37 441301.1029 24650030.62 26486586.19 32739708.65 39739541.65 1779612.574 1023460.925 6996001.561 +14773819.59 123310.2564 86065.09911 16057126.52 24036210.11 32482750.39 2986433.011 38092614.17 22131384.87 76622947.87 155752035.5 14430552.53 11530896.38 126248700 1800037.304 539341.8001 18566436.22 96977.42582 12924712.36 45850690.4 48882610.32 13435034.78 13715.88424 16162160.12 5945343.287 12056239.6 991.7651319 1367570.72 17453536.23 16800291.79 51909.14154 5093976.936 26336411.09 3674694.107 6545703.106 111624544 23054053.42 74959793.53 1127832.4 139279254.5 53154495.03 160118570.4 228362117.8 15373716.36 72517.04094 10991229.46 32219039.69 21434709.86 70485111.2 10272833.17 17840032.47 1476459.262 9904 6206812.045 17911098.12 23374.17747 14211855.18 9028.363782 16421140.71 778202.7901 35283360.28 17182957.36 1866046.412 944666.2632 9510445.762 20828578.77 11301638.4 272154.9063 4426833.2 29562740.33 14202.97733 7185699.813 40917152.09 130343231 18079939.97 24615346.04 65735488.89 8906168.805 298621.8973 58888392.8 45000049.05 13487040.79 9780705.685 35875753.47 86804.38406 222507.2696 18175889.41 65304964.48 4913734.489 21203790.29 +191994280.8 61490691.69 16245942.5 12736.85917 439246.4564 7200251.858 21237662.73 250802030.2 28196539.46 283281.4019 23314770.22 400301958.4 2029493.106 33649360.47 21372202.97 32506859.79 7879276.719 24980323.91 7012159.182 1243527.862 11522476.15 18411661.53 14471817.68 1456342.277 66428515.98 8564475.258 243546.3894 10547876.94 6008148.442 10095046.51 2487688.711 2957.070612 2268464.909 1216723.391 18740945.23 2859060.519 3575943.987 129470503.1 35618896.33 2478739256 10760384.71 24207298.69 44902650.59 661.0436176 14297105.61 5861031.052 1220168.83 8030950.056 17413635.94 48322783.15 8606067.409 2473403.538 132247067.3 122872602.9 29995227.77 31398801.48 3261.331281 111922107.8 64097888.08 12336134.83 37074.0858 7347382.662 3402196.1 15938498.91 3806.318463 68523930.99 26415741.01 667015772.1 2737264.889 1543715.006 2389339066 946.8842617 42243.87892 95852169.13 6054963.448 829367.0997 74080423.42 52327648.98 90178188.05 89978861.09 49021171.51 155875.0631 36547675.46 1162777.509 12654441.6 129216.745 8330873.036 3542853.028 94829.97654 18271.71816 +3115338.699 9685682.534 305291180.2 28623.68421 82681127.07 102180585.8 7423188.128 64492636.64 2769563.401 7461614.061 33438217.41 6014755.403 1404432.082 24282935.28 3752674.562 5090003.658 55121385.95 279283.9751 2043564.562 7148324.826 76314618.14 616964.733 29154553.73 12779599.56 8552526.12 230342497.7 4816801.881 232658.112 27954959.64 896855.7664 30368.91068 16295164.23 10476940.45 53824807.18 27222.08076 417954.1296 16203155.84 11089188.1 8761638.524 53722479.84 38865554.57 3711038.177 6147122.848 18294386.85 27901998.96 6536031.923 35789129.55 522070.301 10869809.38 46892930.8 249749.7582 20837182 5819314.394 107148403 1797078.427 180214.3458 1193461.555 6172.292409 10527847.85 148682965 23472.20925 77024352.75 136865.5645 71471.72587 711460.0047 76906227.74 139969.0165 7226509.335 4929812.925 72635782.05 48290716.29 37152112.21 27025213.34 1391.809193 15580957.63 9636981.892 1314020.104 36734049.51 149848.5973 9621921.987 2468073.155 2663092.214 143544.1512 7407029.778 14435.5545 33018.56775 44917161.7 11576279.43 9592441.958 4951958.192 +3957706.189 297323.7648 4792672.62 6979799.609 2946503.082 20483934.29 24973964.96 22557016.64 15605956.93 570166.0833 44596.31913 31233010.38 6659649.422 74293656.45 13819517.43 2155551.69 500.9736089 16843241.7 201173635.3 2585031.94 25378145.89 3441266.362 23562021.94 53824315.67 8410780.74 1218.853243 4368205.685 2143805.734 502690.0532 66439866.42 37173305.22 3318524.216 9251740.862 14050452.28 7375630.225 40183479.95 4437104.259 16360465.96 6673078.811 91126.00502 60808748.4 3468518.697 10865.07173 7093904.17 30826420.5 198786974.3 5359144.234 103268.6539 1855286.049 10399.89969 71499523.68 4354496.531 6191193.28 3162758.804 3796331.977 14809103.21 4121134.213 2131357.683 588388038.6 47042141.37 2332043.584 17513685.38 530514.8481 340837.4798 2928175.5 5653178.323 11745.92104 591586.9099 198706.2465 1720178.603 23456567.09 3105164.305 185764.0884 17226714.86 14074426.99 30555245.59 2270555.93 5134190.954 94043076.3 2578706.899 13583523.78 145000077.2 1106.576671 133792284.7 7829241.181 1489040.467 58399030.94 656376.8277 17566342.25 120364602.3 +642938.4445 3247406.401 238766978.3 6189000.991 16633587.64 3627979.105 43334815.77 73438649.04 28639.41462 2180690.914 4305673.932 7643050.741 409634837.8 587270.0977 1705640.549 519227.2816 79849288.52 20309716.06 10464855.31 25489526.82 10406326.96 6459186.184 6779978.358 106283.1891 11514604.04 18930591.55 1544819.53 11112740.1 263159.1043 9113.568324 36303.36573 291925.395 197582930.7 14031757.33 62808145.89 1163515.7 274402.7047 29102829.68 657089.4637 9205573.993 12428934.28 11913600.93 777.2273472 3610510.533 6181469.963 29920903.94 49598928.45 2678833.706 848164.2285 3893987.782 15833058.58 46127684.29 16445921.74 2706219.359 46024910.46 8788104.387 13478407.51 45624124.74 42798005.74 368.7660542 40929826.96 781161.7431 12876768.32 773971.8087 54962670.62 5610756.896 58502850.42 11158039.43 2866429.426 7844425.473 670812.1962 11371608.32 12526794.54 123383.3362 407813.9278 28499174.41 718719.5086 81294994.52 3379887.076 2552351.95 80521.27082 28314356.43 4077053.708 2722.75285 6442019.438 25209.95595 22600.55755 102338332.8 11609631.39 2219931.231 +303780495.5 26886214.68 331115.4535 34043332.02 645296.5903 88764.47644 48279758.61 65011865.54 9597376.142 143502374.1 84080731.58 74207323.94 6812720.077 30493123.63 7283728.697 231669728.3 195887.7369 26126320.74 82343247.55 6895.59994 4483575.454 22400590.02 88358601.15 13873630.9 17034856.13 1246021.26 14763472.81 6715670.162 6978285.343 5025442.915 449364.8225 22632089.87 1091249.676 15208017.76 3254839.383 1092.723253 29201198.3 27139172.32 1476625.21 775463.5034 1517382.727 6523514.241 44552632.43 18240540.17 14488716.13 38458447.05 59170390.8 27887023.31 85698.5844 984.1274665 24101812.62 103882428.8 29235787.06 25152227.78 18937.55967 13251681.46 5527196.089 14218415.38 580603.6513 84898358.19 79994158.79 12295.61403 1536441.407 88453968.56 402063.5985 8439701.416 297357.3159 151709.6568 814496.2625 16895.19879 1184.997448 53557.72998 27936743.57 39672069.37 17930495.93 14421.73117 4125363.077 3351059.965 501818.3105 7043150.193 36097235.7 5305370.885 1843089.548 92149254.94 516.5737734 4125.145514 112953870.9 57519302.6 1795984.581 148176.2856 +65660.66883 18611624.01 72376806.67 373626.7678 506467.2606 10282.48733 8932.703696 41547515.58 528232.5549 302258.4758 2659993.793 47821774.37 10459679.53 669979.8726 3751383.489 1782646.869 7032749.677 34.54947398 51683197.98 24513112 109222528.7 18163032.52 4390694.336 12112617.44 4570713.625 30212933.94 22515258.33 863099.5703 25169557.92 948489.3965 4717619.656 3189549.609 57356440.6 116634976.5 2593899.594 10591254.8 6888860.343 1580502.432 16486769.63 17481124.09 1094754.283 1250032.34 28090.86273 6949647.881 2297322.653 10375809.09 31351039.3 10028140.48 160165.1193 8160.309128 76854216.68 12905724.39 71882.23053 62418726.42 8053408.142 22990331.45 11353650.55 1134347.811 20209040.69 7141229.314 580.0215382 4318600.401 138744.8469 285399.2052 28225812.49 19412.71195 12882259.82 238889.8657 27382174.38 3814205.488 44667088.2 1301743.509 158662593.9 7846891.212 256977.5895 16103928.07 6127834.872 9874259.548 15326319.82 19620.59878 2237323.559 45898483.47 2522426.784 41223602.73 5010162.511 46862489.62 402560.8212 41826679.95 165228.3509 8295907.636 +564122.8999 2127845.454 464985.1641 11423775.09 5840046.148 273956.4558 6891080.153 3395344.478 10214878.41 17601039.58 20102.73393 3527291.257 1889647.382 71026789.82 97117110.32 51047036.06 5573727.159 978678.9367 194551578.4 351529.2833 24092879.39 65179360.62 37422493.92 573282.4073 311774.1869 6174693.199 154275629.8 26770122.94 11553744.63 851175.4268 423316.1165 116876304.3 2197100.079 6975562.27 758572.0459 12221881.7 25081504.15 15953430.64 18406577.47 1529785.662 345385.8454 67867161.49 30986660.79 12218688.6 12475707.61 4718039.829 3665380.402 38673410.83 13769461.5 3823515.584 1111003.232 104582119.2 17667545.43 15020174.24 1832207.91 1372511.527 13233972.34 2564479.591 73162031.42 271734.4441 199376.404 19579330.31 40639486.52 2150559.775 217555.3217 164892416.8 40700568.94 8207749.843 480522.0867 1447165.83 32219689.4 370.6140938 3884155.936 35696674.47 42732.64575 114211042.2 10605.59965 17624929.01 14626039.05 26103539.36 332411787.2 32260745.01 7170812.764 25590401.42 741137.6845 3917.69194 851386.7502 12053621.61 28793464.01 8160522.217 +25039438.86 1591547.078 115053306 46969461.73 2725816.52 1047420.219 17600529.27 5758321.935 13424481.23 34621.27642 90949146.7 714150.8754 14940142.6 35807036.77 23164030.92 2229628.878 49152181.64 271918.1372 18723552.8 876187.5723 11223583.52 13876461.74 139987687.7 82729822.54 62866589.37 2282236.437 24907259.34 24564.16712 3538.802222 21474305.83 557534.3131 14118712.47 163068.8789 359015.7876 1058.102903 8417627.023 8635790.063 500162.2693 15582831.71 990717.5137 259586.4135 251814.9631 44837463.23 52647777.37 297778.234 132360.4644 2213629.751 64475296.73 186113296.2 626431.0468 8735427.975 91781458.53 110349740.4 27587586.16 67114426.06 18888758.27 52890629.83 5936321.629 108440950.5 1540763.225 2331853.741 2236640.506 2999983.728 1205162.108 2384794.049 33990882.09 12712866.99 47953659.9 19829729.37 5540347.179 86832903.13 32660520.35 16263058.49 6709278.594 538205.2623 2351985.138 2774287.037 4.668877757 5160662.772 4813.990229 38002995.93 2885512.269 58380274.02 234020.8654 8668100.071 434360.7562 153407178.6 20759815.9 52779980.56 263462935.8 +19757.41687 4150544.149 2212926.029 28324464.14 193945.691 230599.205 22440963.29 57022305.9 116316.775 44632373.51 6337301.456 26979138.83 22724917.79 87381813.61 11507122.9 10817377.36 86433.66384 2365.062313 9102450.358 96411944.8 1346761.487 4382267.161 12988013.14 27837042.14 13342017.24 93873291.59 1558179.039 148129438.8 38585287.22 45191327.54 4743825.309 6348642.663 12332635.85 9834430.945 88141519.13 328126.1604 6473382.932 5516139.52 3963.12404 74979840.52 52040268.52 13366821.31 20760.67184 21594198.51 36050113.62 5059905.917 76504.03745 41135175.11 11463741.31 35762969.44 392570.5192 6961920.93 138061678.1 220176.0828 2765739.78 13650962.74 53693480.81 6990894.379 7374086.032 74148334.27 3454076.655 70163454.77 500315.5466 14151395.57 63818790.96 5899208.107 6987598.47 22242275.51 76017.17195 2462887.772 3146188.389 118364859.2 37356913.82 47643155.27 10398667.85 35969239.99 12891223.51 9137896.43 3341449.369 5579784.533 41273674.62 287984528.1 23674533.48 50325275.61 129340.125 510462470.4 11817713.1 1450052.641 12939269 15264401.67 +26432362.47 50.43102275 1316188.769 927.9152229 55207487.55 13207540.71 29077891.42 7339926.965 5007140.324 7888363.217 49066773.7 142479.3504 793253.7557 785284.134 117485402.1 210895934.8 11221107.52 14889716.7 36947007.91 501261.062 2161.655766 154367093.3 23340.32995 1231.279726 1444339.091 72257711.24 4037.302226 24558655.54 12580855.6 668916.5328 18450902.87 26023904.14 448930.1574 56869335.45 1863050.273 1781246.177 10815446.91 50464.64749 2655980.798 80448319.11 164648.2648 38400.15241 2260765.988 11307162.92 23108506.56 34526247.37 66291437.2 3379065.084 15969803.16 10648007.49 358993588.8 5384472.375 75217.43089 36637083.32 3874771.472 18238425.63 477946.7533 162077.2473 4162740.917 6381837.324 313571.9478 56629630.4 3046186.886 163691575.7 1118140.663 9012271.002 25818816.77 5192264.956 53161431.39 28676890.55 23551947.98 12157824.63 644252.2152 6024401.388 110192.7187 11411905.8 2064821.207 825083.4456 20818078.82 12083.20388 3304807.252 18420777 2621928.921 1692149.884 61729509.57 7658676.128 34201828.79 687414.5143 2114430.602 45091024.76 +1297.683459 60312803.79 12285546.41 128558.1713 22747790.96 6774163.068 37675150.44 55308695.31 109986995.5 9566006.154 478558.5938 1706759.056 202180.715 8283435.155 1310080.37 5158013.688 3524.915426 11418238.21 216.0413519 9717.792542 45755434.61 2019061.658 2937130.808 14788979.68 26277570.7 116524833.2 334004.8972 12542374.4 827090.0686 514050.0084 30688711.71 66040192.48 6364404.329 6319881.326 21499070.45 1732019.796 7228916.011 6527218.824 126948.3706 101139.8753 9801936.839 7014320.817 25925477.4 1420061.313 1010212.185 375411.1368 6738677.246 68821725.26 16025575.83 33948511.3 150708267.3 150163169 23507417.01 128.1758338 1559.822019 111310774 45130875.48 22894014.99 54008394.28 401217.7221 14987582.07 672172.6923 21234031.87 63311321.53 25109319.8 2426214.472 36594.44182 71347313.54 20821740.37 31031338.58 101.5096423 28245218.01 1564674.382 12060384.74 1975020.999 3786628.279 8803188.887 5943.853835 7924.054981 641062.9243 31150620.01 42680512.26 328241.7978 216955.6237 58241618.6 218750.855 249166.7246 72895366.3 120072.6332 37072240.5 +123230.9319 4448076.514 31847340.12 9198271.941 63993000.2 14433642.42 64742315.94 498882.6551 57030768.48 5259308.968 4958377.484 385884.128 52487683.22 227841.5813 68403242.61 415753268.4 266458.0785 9255670.787 4590081.012 6568662.778 4836068.479 18936367.94 7776079.143 33443756.72 6019556.799 687757.6662 387996.6447 52947075.66 1625.537176 13988422.14 15269366.72 80710.45568 78955798.92 94911272.49 75072247.27 261950194.9 11744237.84 70835482.88 130933.6264 1784737.646 14991889 10911219.19 21189390.55 27014487.14 14901783.64 24570641.01 4062330.816 5933.91563 3382658.869 42841388.38 520910.6013 23510237.44 6289375.56 5853505.759 4992300.727 523176.1783 932031.3877 12324018.94 13750174.66 8946460.013 548710.6489 6578090.531 2392297.355 10121901.91 477.5099927 4020196.084 2138537.409 918.4223944 1083510.104 7488048.276 6025393.044 13616603.06 12809848.37 143733277.2 1494356.381 8975612.518 96539083.15 582587.9242 7421.629353 11791607.05 67128854.03 183230075.5 48245557.18 35318593.38 113131857.3 41985341.53 2161188.771 427889.1785 5898743.588 1379076.62 +430002.4549 11561631.88 12796209.92 25975702.09 10289139.92 23334210.35 46075676.68 47436.12014 5052.587082 8771504.173 27753986.9 257963780.1 23840497.33 14935671.11 21123454.51 162376.477 62665651.3 9765766.034 7973890.451 56790567.95 169603.3907 106752225.5 2114487.753 96200945.51 26621390.3 51269409.47 414470253.3 27678202.1 2532955.324 35374030.47 76593163.01 52882471.83 91283303.29 15983256.54 36344436.3 6841429.66 4014119.496 33259814.62 100888413.8 1515256.701 28586544.19 8737450.682 70129169.96 224499.2825 2295241.795 751.2940803 950485.6122 24499821.52 20534949.55 2809499.727 22745581.66 29004.02614 40626277.59 2731612.455 85145092.09 48960076.67 20765.13669 940423.4198 70532985.13 561454.7439 5427930.867 1507066.853 5466.601718 36039321.87 5290673.034 5655375.677 197774.5624 29683780.43 55930953.88 479381.4747 267121.6109 2540232.04 28739149.57 25097048.92 1383512.72 14551744.57 136615801.8 13668.24512 6714992.771 1672009.335 74445228.75 2943.386242 3362423.678 93433202.91 9697182.917 27508182.53 23916848.09 8696287.539 45729499.28 712674.488 +86705445.89 20187862.15 58251907.94 25674376.59 69548553.97 3456314.462 442790.6617 1853135.94 43383613.19 22404294.98 4098368.011 324851.5975 43276495.2 1757141.245 1316659.055 2347151.362 3879315.805 36385238.91 1218501.693 10714423.72 31972551.27 342511.0556 2398451.874 4466774.656 45127416.78 13488076.29 11854.1495 611860.4835 22991212.65 23935198.8 77348.80082 4839308.55 3194523.146 21238921.3 7164562.724 54051762.58 25651149.21 28134.04808 142260.7967 1847203.833 259868.4273 3920974.298 275109.0184 12507895.82 62036481.18 11580508.47 19668496.19 3724854.336 70895284.97 37511050.4 14229301.87 4227787.932 34076395.14 126285043.4 22240172.63 442421.1479 430190.9925 104685376.9 47837456.97 76088366.69 1497636.002 8961054.077 2925389.937 3759959.898 17293.37503 54150391.87 9445428.784 20703035.21 10623.73388 86963.20592 14216993.69 22507784.74 14401505.32 74484789.4 73829.18805 1330436.021 18413395.73 157584584 267429.0959 3600.955095 2973514.243 20967456.74 23206313.84 15607850.33 7344197.645 80825340.23 233836859.5 6489378.438 35278.58514 116236822.3 +1081995.643 21242.93556 947861.0002 38803461.12 9283595.936 44109512.22 839094.0784 3919498.193 92470475.94 67371290.53 36421436.41 25794454.31 8920764.918 16754309.39 2655410.434 5530175.328 466592.0306 3608142.454 72189217.9 10004925.19 40192074.74 3343762.381 6288147.566 112908180.6 13357400.9 1861146.914 70028630.28 4968417.179 15353571.26 27833494.62 24265855.9 8965.015078 28416.82009 17800810.97 4915980.435 8241739.901 4279.136261 59882.16225 274832.5382 82320532.39 2602538.077 7626947.718 37768435.87 68991959.91 110300637.7 165308.0158 6814569.358 5176314.68 53010793.09 56398171.39 4908590.194 157707762.4 99600264.03 12249.62884 89002263.24 1041416.573 29878414.88 55131406.26 9622409.033 53252163.91 229690.7577 2797538.263 7024511.112 5488230.417 46276002.83 20120867.07 40113610.01 7930450.573 4585941.325 12332022.29 12491505.88 2027243.515 595944618.7 6239761.334 10754347.49 879406.6553 32864229.56 9267544.986 123941204.6 1076779.566 3683277.832 18311280.9 1750885.466 14732738.21 55687196.4 115961732.3 6880799.188 61347926.46 7700858.693 1842397.5 +1827015.44 22924444.55 27608626.99 3049021.574 1168096.968 1272.508101 56557.11468 50928893.37 140357802.3 56585484.52 6112685.352 46155950.36 3950553.93 3489758.875 7090561.66 4961536.642 1358266.264 32832548.65 5528680.443 325095.0768 58153553.07 38477102.43 46404698.71 45352446.77 8281122.094 52168001.52 21220877.79 16965485.59 900114.4794 4964645.71 84679810.58 2721387.048 184200317.8 5804682.287 27327067.56 13308116.66 5271.230117 20952217.75 14032313.66 25540357.29 479123.8388 148264095.2 34465287.55 381807.2231 7940993.42 1695634.428 19998965.75 2487498.281 1356835.941 1768532.749 8494320.019 31898.40035 27546695.14 1117757.695 31274434.33 28306020.67 17932276.02 273126.84 23594332.16 9676302.281 44654.19317 2086553.844 4850751.708 229302991.9 240234.0319 52526034.77 1947033.168 3099331.431 62992259.68 6535135.522 10076242.13 13792639.83 20042078.77 2079205.402 21050.82933 96943103.48 29778892.91 1518681 20599202.12 8480726.211 40603555.16 134218.1808 1888322.119 555921.4394 9393319.985 3640939.912 45515880.66 5039792.442 1854003.882 741325.5531 +5746728.937 13858145.79 63152096.64 21065046.73 1084787.672 97681.28333 13141833.85 51735508.06 133329.0452 2030787.867 4396593.937 35948934.25 208888.407 233314.3631 48407273.07 28861532.35 59825420.55 401806.2478 1229086.774 3091723.884 139834533.7 4990636.599 844.0667876 58245185.67 3779927.801 336652.0013 14397356.25 607334.4071 45845561.35 18472223.67 278601.994 43401230.82 14968822.86 50896277.57 10918278.48 47912.01328 17695778.89 31834739.42 33702051.57 37843092.99 18802434.15 14969976.68 22757074.27 7087169.123 25355302.53 39939.39082 713044.2856 5752.128971 9815908.842 419410.9518 29251273.45 11318897.7 17634454.13 27868163.17 19620240.64 4964365.219 19254372.06 3468783.467 1396294.244 734746.0943 21238446.04 1098614.252 566929.5631 648506.6592 34033545.51 5719306.009 358211.6872 305474.723 11118185.26 64994975.09 4160003.762 98456.40102 12123325.28 1946485.241 8907970.756 53503543.38 8639.100878 593196.287 16719043.12 42913632.24 53812035.84 499046.9237 27856637.72 9822952.995 6434133.583 1979155.171 5961568.711 22753741.97 2875733.896 106055108.8 +178484694.3 10886360.8 16526306.2 591638.5037 4854685.615 25889046.59 46255458.08 17724591.09 10998985.82 9343698.049 40081441.95 186245.5899 55252980.46 6176933.073 144153230.4 6069733.605 930459.6399 76041421.7 18320628.13 31031.80997 355196.1988 153445.5198 106455.1571 3443790.272 178696366.9 27365809.91 30589189.03 37573.73817 150331864.2 8626159.494 14113100.17 157315551.4 2108992.568 587922.2316 264119.3482 99874428.34 94247.9078 4538919.999 3370402.875 13964874.97 2089925.154 3326105.712 99795.13506 5950.421774 41532.9172 26960540.02 24958801.72 7606677.131 30328.31039 15501977.56 12166853.03 1830873.677 38877133.87 24995300.13 50356090.19 7192210.289 1846967.588 878586.7813 172554907.3 1183350.079 27323613.66 8190845.355 2845058.989 52360988.89 2795717.78 6065171.9 465713.8236 14332328.02 7169370.994 13990476.68 143836533.8 23634257.33 177153.6971 1410285.883 706522.5265 975575.3502 2848092.354 1514885.695 56732393.48 126710.0694 5554971.121 5279.501431 19705146.97 94171.14424 967317.8261 9128.68646 43518433.86 1687346.057 584801.2227 10808874.07 +81607633.22 59741.98928 13700974.15 62309.80291 1532652.09 43850172.2 1652125.563 38959174.02 18472310.62 17179256.7 10098099.76 2897372.224 7506059.858 5919056.556 22765433.29 36601.94284 36463118.51 52370926.76 99404139.33 93611488.91 359600.8318 5553632.262 22764761.71 54679068.55 2390069.96 12202997.08 700007652.5 65518427.06 30276764.93 2925426.164 59910199 2809862.635 198388.6423 848052.1805 18062633.69 28705864.3 12920778.41 1914917.108 60736.09292 35422199.13 79118626.39 40061222.62 536903.9471 37149114.33 954542.3645 11690778.79 1710542.543 72544914.32 8698716.886 166243.886 53183.83532 539194.4565 14968626.12 67258900.77 1094284.143 35452355.5 31331688.31 10268489.49 325056.402 54314785.59 16627288.37 31905.28566 24769473.68 2784.007934 22769661.51 19582414.66 9782.453951 2337556.495 9528226.697 16620428.73 8461.045224 295411.0261 180174.1351 38000851.01 6158158.706 30676.12587 672885.8927 18638203.37 112545114.7 43692166.65 69428033.24 244138.1509 797350.1427 171199767.2 50943252.5 1327027.862 14891028.1 131999512.8 729055.8428 162496.1685 +41727203.15 53106.6533 127970.591 1312988.506 4604114.023 91209.71761 666922.8043 1445645.519 15219282.02 3642799.325 77496021.52 443499.6518 151628648.6 1087382.582 403889.3859 28589236.63 11958.47237 13365820.57 17378447.23 61504815.81 155405564.6 16813.12745 9770.770711 4265964.661 60489.69313 25035769.98 43504284.2 11387750.77 38495964.44 34903559.63 47432771.14 25457002.19 108042866.4 9307960.179 8472955.381 14635750.54 1915468.478 630234.8147 1252638.962 20367776.92 161935327.7 161421.7612 30344.95567 39997.5246 37599159.98 172489.8655 14569640.46 15997849.92 10354817.94 103022.0367 1216091.851 166909.3242 6497350.066 27807726.3 78198501.89 23138.77174 13498940.26 27525576.62 3200145.961 223720.902 28378981.49 34779772.96 175028.6926 68852278.85 35685507.84 6374766.155 17575106.78 4061154.988 20431812.58 4757465.487 39496816.75 65007162.47 26342189.23 151593629.7 48525161.71 10675.33423 9675.413204 116595.5293 161747123.8 16688.47717 88747862.74 46229559 73696109.64 5799890.051 577797.281 32659253.52 76007343.35 381926.3372 86610.36995 4863880.464 +19221715.43 456265.3818 21599057.69 33906557.91 3432808.592 15864182.82 68034.6862 202236939.9 23348206.74 7157854.292 1607361.25 24204723.19 24637668.7 16901799.75 803774.8554 851868.1792 16328703.39 7748538.284 47304.61715 5746529.791 7598748.79 905.2301464 1277.789763 130432478.3 19344689.38 28336.95817 34533811.95 86814966.78 26.15499581 999875.252 24741894.22 4957939.915 957.287513 6176716.387 7658397.775 115783726 19406932.66 126613563.2 1457310.564 220295.9042 142619638.3 98926039.14 41797116.76 56804168.29 29557270.85 24012695.52 288097632.6 49022576.54 45675163.93 5810561.198 112047795.4 1310388.824 6069250.953 60924539.47 116288947.7 920366.314 38035523.05 13683539.87 2721156.152 942600.7227 56364269.37 77900791.41 120.4890965 58804608.73 275249.4989 1084265.377 82142667.03 494399.6347 19409736.61 207519.4682 82549861.37 31705431.38 4619179.233 72233.2807 52490553.66 14674959.49 302172.2204 65542242.03 1123395.119 111764969.2 13167044.67 56480970.51 62954531.33 49427.79387 1952241.245 8382304.717 8379154.517 14696475.67 252278589.7 7864606.553 +4470.375008 1642016.928 54650458.22 904372.2095 15299033.99 204796.7541 8422013.098 1016502.661 3619715.773 46560876.35 1494843.579 38593600.22 20907800.48 75565710.53 929983.923 40116080.45 68212203.18 4969589.394 113313077.6 16921193.64 70723601.79 2570864.254 8219124.389 22124.78196 27529452.88 6919336.077 159628300.4 46085.961 12907424.88 1097239.98 14723413.86 1654651.548 9328752.157 4389204.65 9519038.156 5307522.134 261898.227 6156869.38 3053350.324 2039158.162 8962867.022 4897363.574 10321329.51 83396038.58 88793592.2 178365.7836 10615713.74 4987827.069 18141042.6 753383.9993 85854499.42 117620.6993 2211694.194 117667.9757 23730962.48 48409029.19 14370965.78 563483.918 39421486.11 9007972.133 214471.2018 1605577.803 639712.0865 947245.7361 116462668.2 51304252.37 8575406.337 798903.8846 1722652.954 21605559.04 53473019.45 49256898.64 67964969.87 5235387.994 2814.273019 1239.098573 93110757.15 260240853.7 9614694.915 22640345.26 7631.936392 3649565.951 52803226.03 27032058.94 6878768.895 1080877.237 13133760.13 61005758.88 23082455.07 648084.2083 +75590.67855 267889.8994 52344601.51 1284490.113 14073738.81 2350140.31 66006660.11 7111815.897 7745514.875 2487980.34 28608036.02 39176602.08 933176.7846 15000113.87 1970.885024 30846649.31 7201953.83 35848.15957 1069371.208 44212655.01 10284954.52 68515967.3 180983179 3976.911605 2226818.256 79738597.43 18906306.65 4752360.238 50695974.25 2415413.637 5321.993142 815961.1303 143621476.8 25065982.4 199143549.7 205555108.5 81698868.51 3071414.08 7051834.84 69401026.29 5274829.245 2006072.811 12731415.14 5211667.452 194.7316551 1056755987 59266117.79 32082404.03 36310505.73 86414016.1 434128.8225 17914284.35 4714051.074 17097.57688 4488842.116 8634005.14 7970501.346 2983895.558 23061087.87 81954811.45 14896702.25 1664326.939 33806819.39 632224.1382 12560169.58 89280580.15 464762.372 37487038.33 22296928.51 192382.5833 156633788.7 4282590.57 55832842.94 40242929.6 2018581.858 7275472.565 77813394.74 55945.80527 68300398.67 1021208.546 42540839.25 35265.21529 535918.6742 47759551.59 9526761.188 13637931.32 5501020.828 3270519.534 62127900.94 195230590.3 +4407548.083 49391986.21 5073707.837 38783264.45 9984231.337 2472665.999 3462337.355 11249757.01 67326.81633 1406328.799 27034471.36 814599.6648 171354086.9 7767835.029 71944.10482 205.2204523 64788.94857 46532185.37 11303989.32 26457475.49 16778011.43 9004105.269 23035.68624 3793080.824 5407715.835 62174.7678 29484339.14 10737456.11 19433420.57 8953147.385 28650651.09 25363996.41 324671.6046 1764416.512 27513425.68 8314.545996 115778338.1 958581.1177 10528711.45 26784572.47 7720837.78 963627.6319 11948.67697 6017988.328 311830.1426 22145362.5 2803127.402 83830622.6 40980783.34 42259296.64 2736545.035 58249649.64 13572789.51 15063368.61 26026568.18 247.2965516 7637958.547 10472164.02 50130.01621 14683497.2 26650920.1 9408.027 194307080.2 6636409.312 43438889.11 191064406.7 2333445.717 5820502.262 4928252.161 53269.15817 3572728.025 1432089.422 656507.3285 2095663.146 41332768.06 15019333.88 3090918.92 16470471.96 275838.262 6566708.424 43795924.2 16804640.69 47541166.83 790005.9777 30622335.49 35183603 42183129.78 768901.9579 7813668.276 13921491.93 +135404979.5 6604128.597 2724579.319 4920868.272 1055325.623 23237656.23 821967.6504 229951433.6 3716944.517 29898036.22 64498.21 15254667.96 91886890.72 16660465.38 28792663.85 7226396.739 10672868.83 130159649.9 30023440.48 5044487.775 24181795.39 1308141.268 5814724.96 15478102.87 2512208.724 11092948.08 36339289.27 5947759.104 21982838.57 443810.2887 45755030.24 7910551.418 86099482.36 112353.1496 3429.147341 76627553.25 18550013.95 730220.7078 135021.0132 15624940.73 68241824.72 32446894.78 759623.348 136763.9695 58649442.02 13955059.57 411884908.5 268.7489324 34305573.27 13896548.05 53704849.07 102411.7179 29963561.54 2144.890384 51856237.51 2136.098666 18228404.37 23228922.25 182210.3317 903525.8968 21055353.42 33871715.85 7930628.171 59848981.06 63303584.36 2787.003204 6833595.884 3501.838111 21119423.27 11834753.79 77130883.61 204141.5951 2757902.443 952810.661 8705174.665 17455086.26 720001.9877 51654839.73 59981.60558 4849598.497 26947062.01 21346798.12 3342697.656 632241.4354 59492684.57 109072737.8 569583.6406 4422964.667 6454077.85 26038159.11 +36830095.72 119383388.4 17297831.37 1567012.423 41927753.78 5110218.603 549431012.5 6839572.57 8866.115675 14212765.55 104452.7266 809706.1232 19121769.15 37496585.1 100812381.7 53249872.48 8422491.666 38826692.95 19271321.87 72617708.55 32082242.92 135975384.7 1999820.761 12516532.2 51810727.94 22614389.29 24004598.83 31140574.85 104029656.1 145637661.5 168726.876 182873591.3 39582266.07 834203.0341 19176492.16 2061702.273 6526988.167 7365.294382 12847623.92 206180.7755 18613953.86 802697.1427 819931.1367 22889622.86 116722.5937 34124687.65 109969.4476 10997789.84 39761260.66 73045.13274 52534014.84 392472.1546 24072233.33 2963633.746 201128.7431 15734606.69 4939628.632 6639695.883 56602111.51 81247625.14 108334095.9 84490668.93 4562287.704 157388.4143 24577776.27 51728513.35 8991857.765 84766.0194 35595424.97 797127.4137 32774149.93 71402916.37 36737534.38 22935932.48 64901018.36 5838843.326 21520634.24 51293910.81 2959455.473 81674286.97 22708902.05 17409911.28 84087972.62 1560254.327 9030001.192 956567.3191 11492159.72 98594.95461 783519.6354 62608613.04 +66084.26055 14235098.02 257652.67 154723518.1 209371317.6 24213636.81 49127431.65 87074640.34 13718667.81 65793729.4 51.52710284 2086178.534 38158884.15 22108804.29 49667210.81 13497485.08 3115296.973 32510950.95 3220251.542 9306248.954 64666427.23 120476737.4 1425190.556 30925645.23 16134440.85 77247150.99 99240822.25 121853232 7194151.865 77178094.4 17543013.46 16411577.61 2527444.585 42565357.45 2352678.995 1293038.472 9157096.195 237790026.2 86285480 104273465.7 31720813.64 12578506.54 8580.62037 89242857.52 12088776.14 16832708.59 8327200.757 200014.6377 460.9427745 112484019.7 80862246.15 234327.2396 84831.98288 14565645.07 3799322.441 131861659.5 135899.0745 690955.7878 249797669.1 14396529.79 18297903.4 221791.7746 22003040.91 16935249.67 26219694.21 23795.55653 30202803.24 102647189.5 11973282.21 1072.998785 126312929.5 27986223.45 3677.223511 920213.5362 74919724.36 59030416.31 52289507.43 168577.1111 1153375.825 95515820.27 52114278.12 42716174.17 27029794.06 209225502.2 10124191.16 13326.90058 8170052.512 31584674.5 70053451.81 232153.8155 +363531.0449 8494997.329 454275.3798 1459.057494 462075.477 14769583.34 1930371.259 695447.8714 21886484.67 77.55571017 12428343.45 9389639.506 28106943.22 12409393.48 16429.3353 62986058.11 170413028.4 3531501.49 72155482.68 1969977.478 57568244.15 119335424.7 34745458.32 17613237.84 3299297.092 100846394.5 16821.49983 989349.317 313384.2142 17670442.79 14234.19617 1945734.22 94371532.05 59645157.52 73759751.33 200495493.4 9705828.429 1193800.197 11457.84198 117329.6611 49081019.91 431.7116255 41680086.05 14386958.95 7221616.024 226257.2099 5987915.587 9794294.851 157300179.9 59277546.38 67860401 37939.91805 35520.29537 36688.77066 43162177.56 155620329 548299.7863 25484757.51 31429.9824 6650750.405 47772598.67 2258713.165 16575348.13 2156772.801 1156032.632 84449944.26 19095066.57 69803514.57 9992.418937 35671256.62 4169.38246 4111629.397 257.603663 189673.8341 3837.122321 15937365.52 5600.480536 22217723.8 26400966.9 1168175.378 91181.70429 2412685.375 31998338.02 93589.07056 17332.22355 16098459.38 82741661.73 1480067.864 290874.7176 15025597.33 +9931553.106 40966328.37 211629581.1 458883.1523 79489191.5 7209978.457 152548726.1 21675.11379 67976479.91 2939552.531 122734.16 32400892.48 11614437.91 9260664.869 19762984.91 26820585.78 19355298.32 7845730.403 4445453.445 1618046.48 1143024.275 8643.956164 15092792.07 2372228.957 585612.4906 4474842.8 99189.25252 100301848.4 23927112.12 275492874.4 52528055.57 18141443.67 36719637.66 819363.5446 28358509.02 142322.3526 2041511.544 2113377.915 37204514.81 50342.28138 65392024.7 575252.8434 57396347.42 11232789.22 1289317.327 25724.59392 142489.9459 32019045.12 844023.1828 38038024.7 38372712.95 52631485.59 54783.47504 23972377.29 10535721.91 51798812.51 1616745.351 15918872.04 7718864.033 1364672.735 4131740.093 11278224.2 1830184.517 168019244 28672444.75 137347.9139 45206938.07 26227424.61 37341153.08 944286.7232 62476692.1 3111.689077 9752107.017 1778499.5 21355165.91 758901.7308 426522.9711 54670319.61 24237.01242 43153224.06 99581.71316 109513747.2 172413.1469 4551847.448 16331129.83 14721507.13 65146012.9 5331082.092 48490196.21 13106685.64 +106220198.4 14762248.27 1769.894906 63348217.16 458373.8532 51186427.2 163787888.3 15092658.67 1631826.389 44858.92412 1101615.996 2191576.07 9791945.596 4211103.474 72932287.56 31551215.83 103180.3759 257044.4247 1007822.298 15145024.73 58033677.8 25320.3265 636478.8154 10333461.63 79293128.3 818867.0186 4376705.754 2140980.07 93388675.5 46671274.22 66812269.19 6107821.082 7886.822976 38326.12904 8640466.862 15909733.36 35264650.31 1024620.773 240070614.6 53397.70005 35967819.9 999540.337 2062760.003 2163774.097 4698046.359 174202976.8 44061190.3 73311.72441 60081371.62 14703932.97 45654.48907 416279.735 6159381.182 98237051.25 850980.2478 6332366.991 1119574.92 88.8860517 24588188.87 12468378.83 6495640.926 68027385.47 1535180.071 26841591.32 2840152.091 83036557.29 208769.8445 43483544.63 42462812.17 45233425.03 1549197.542 16383173.7 288453.5054 12776596.83 53901950.9 20020870.99 87453.84172 3043251.406 33367893.35 46962821.83 2213293.998 11783344.8 1400161.871 3092145.028 20727324.94 829180.6237 66975928.82 30398879.22 10492001.3 4855507.83 +17391921.59 3033046.987 24793887.87 93389103.54 200276916.8 27520809.15 910865.827 1728322.453 4881134.874 1886030.723 8668573.815 121328167.5 9518849.548 24898345.58 34874099.75 31137453.89 40293629.52 89571474.41 326063.9715 13536334.43 3121913.084 130983.1777 6576045.656 55626946.63 35352237.39 34346298.82 9479.126637 85222086.91 295962044.5 13665766.65 3416140.029 15309211.48 2583788.43 9238559.599 14052413.33 11887690.28 60834941.41 24418175.05 184867.6023 72535544.22 9918553.779 8388399.237 3177113.887 710241.7103 57880232.8 27050057.28 123520394.8 2273954.433 6555258.864 24739662.81 95357670.44 90886.64407 1290701.005 40034711.71 15714491.41 2189790.969 43826703.8 10573888.27 1207237.439 10091356.7 23936427.58 97942527.86 11134.45505 24676552.73 2403921.668 1269542.247 31541714.93 16324645.82 24930.39497 638857.9674 27536771.91 393308.4534 496949.5908 2494829.094 866082.5971 4352664.374 27923941.9 32240208.03 14629685.24 55241642.84 119403.4322 9110834.767 1608347.906 32747607.57 9615109.433 6387743.895 8252.285284 273334.352 88781311.32 2281491.103 +5829320.296 1290245.133 3664760.163 49465007.16 1447578.647 5749922.615 9180231.299 54965462.91 7596436.968 36077461.03 9796512.809 690544.6353 236346263.6 687817.492 813798.9472 10965.44101 1720270.884 27033204.42 10865798.67 29471516.54 162227.6572 1630413.269 551760.4398 9219992.972 433226.4652 9627115.386 48521007.78 290071.0947 6261835.525 22037212.24 6124554.808 25523041.83 6205290.125 13266696.63 156007286.6 156629.7531 188962.6465 453684035.9 61862855.71 816366.2808 150414.7987 32186607.84 127084006.7 9484233.642 26077133.42 652447.506 11292858.9 3105588.262 18017430.11 12713597.48 17796001.28 683897.5189 17717241.87 1589569.231 8623.722819 196857685.4 3061285.367 46180146.41 1570807.705 2746944.096 16893489.79 7484408.712 7273377.38 3477016.593 200720.7823 502060.1074 84527398.33 53783847.82 354796.5235 240493732.2 77365864.19 72776384.61 26800096.87 817385.0303 4108310.683 4981222.731 15390713.63 2242931.433 8509770.106 39535832.3 8475075.536 2909396.864 92072844.37 5225275.911 65834231.89 13668395.18 2262584.078 3575042.387 172444.7759 62056021.55 +3317641.633 1201185.463 23234962.68 6985948.01 3086937.785 5380716.858 8273600.012 5931995.734 5599497.467 12169592.94 14741444.77 36429087.32 18998777.65 3943971.781 83609489.62 157424.4231 29358.22445 19618527.49 50255463.98 324476.7494 49430097.92 6921283.698 1328265.642 47361943.12 8347354.309 10410683.8 384473.7878 29320427.99 58693.12306 36042959.37 25546201.56 497613.6659 114802407.5 25198.77892 10360173.74 41144423.58 42311.9001 31413153.14 19548530.32 213918.8804 5088713.398 2296370.792 1022152.665 190036.357 17020720.69 435818288 1490895.297 36709841 43620288.41 750652.6408 5223951.453 43982272.12 278229.1922 4163302.505 19953723.77 38685900.99 167550281.8 69243695.3 8559413.575 75290903.45 11159993.09 91003830.72 716143.2589 3610644.961 172739.1831 981591.9787 26255829.1 11318.70669 154254977.1 11210577.32 124235.674 634.302373 6104.416878 4211671.191 90380128.92 69383789.76 1995057.707 332219950 267932.7441 817270.399 27609.37825 7583954.45 65811.60633 3871800.601 18853.7464 186589.1867 6978457.437 108391270.6 917.4668432 16442183.48 +19213050.2 5567334.313 45454838.95 40790064.24 610136.7377 18910.8415 20972298.26 3261875.11 79676357.35 15569.26821 18539.2189 4489871.931 31482.85782 4106601.728 8565274.099 105137267.4 863008.4793 18920603.56 199459.9613 50019502 68851560.21 147.8924894 7426.808228 8631077.384 1914229535 43437007.48 17612792.36 2947814.446 1194313.881 28091801.41 4527.626974 8233730.593 44324.2286 12714137.59 28514658.88 205416.5498 7424498.467 9969430.476 85520600.94 137069329.5 161233470.7 19292873.7 112471.6612 33342768.14 657472.5396 215225.2516 476582.6319 17360655.43 24085.92162 29935.91459 922359.8023 1341559.037 318556.7137 937844.9992 1244034.996 5527035.815 23029765.05 1264214.385 13611900.47 1882438.392 8315725.276 4700.467321 2359874.446 158.4889286 38209907.34 18300294.44 6861364.875 208601.5641 151034236.8 4723469.733 55674.25665 21034.77521 34964751.33 15599802.05 7483015.167 2248874.259 48103338.82 26757409.1 97450360.25 87757761.11 27377761.3 13629829.1 198.2428505 22588770.09 41002771.46 8299589.044 2736158.625 39253420.53 47170040.95 2426738.314 +11688545.7 13053479.8 7938019.825 49820997.61 12434130.05 102561511.9 37008172.69 1336683.794 28670497.98 9779643.756 1663029.957 1368009.423 162702699.6 28600264.75 45155048.45 564202.1133 18424902.35 34611552.53 27685407.83 4298349.43 4157731.412 18737.2663 50027.85528 728266.901 45112175.35 84445845.43 117702.4854 59224774.37 1204961.257 6509914.549 830897.9603 8514868.904 1500674.247 131359.9303 34917577.66 12154418 6484579.891 33392011.96 31092005.25 17886310.31 15253248.89 3503815.165 646326.6533 13941743.3 1561274.258 56218819.22 553876.5731 23407883.31 11872369.32 5633.116988 2083.690646 37017688.47 219668.3217 80725.83999 20114856.24 36023020.59 393.7186159 103364937.7 47687.339 4457393.679 38657520.52 55113284.32 3308413.399 305.5553958 19604316.71 53912887.79 5106127.71 36256334.97 11824549.18 15556307.01 623867.463 66259208.67 317815.3851 60628013.84 7026817.775 18678872.19 1998179.132 34093.93531 5892870.447 4321016.851 104.0208862 2934833.003 22817251.08 101172546 87064843.2 16409125.3 40582723.83 254653084.7 89150230.47 38727306.65 +66996939.97 7651491.925 25164717.71 22068361.39 771665.0074 267805.6875 1064288.315 1563124.736 510.6678261 14659043.4 2725198.102 8095780.106 54368942.54 87432774.49 50824164.91 550478.1502 104807313.1 149073.4889 38725.69286 40980497 69059664.84 44777840.95 86543227.08 35672788.59 386243.3243 181958320.4 2037711.6 40227.03271 8261906.535 12488048.52 18020936.89 42812938.45 1250430.214 95061747.62 2963733.781 198885.6332 23663982.19 3115097.753 281706289.2 621858.1828 130047654.5 18254782.72 46193256.87 40482834.74 59127849.45 3795738.525 52483669.64 539664.1947 24414350.18 110551949.6 106302780.7 5709975.735 11250981.26 6068.47007 33250585.05 120730169.7 12169006.45 56193436.65 10229722.02 33954642.14 53587951.51 48567881.22 565913.4817 16552358.61 1110462.478 15758989.91 16462677.96 20781694.8 12030979.8 10290028.92 11389729.67 3146401.224 417571.4092 259909298.7 70667.04846 727827.4686 38064663.66 6122541.914 83271282.97 29365272.88 5485332.477 52982126.48 64171964.55 7864685.368 2479485.108 260953.0221 330391812.4 2325009.995 2690331.744 90533617.71 +3155199.788 69105.01815 22872850.93 30860717.65 8424.745447 275564.1614 39579674.14 45202203.75 819088.7191 4470112.674 2422912.102 33007569 657.6713484 39492113.17 339840.3738 36266232.05 21738944.69 6166239.307 6499169.505 30964052.88 414083.2342 1117491.13 13548823.06 13473291.8 765832.2123 18829785.74 4411059.192 33291425.58 13224609.64 2368908.749 4091477.734 342247.4972 61707444.59 3218530.73 64449.73951 20184.20106 6818332.703 4310727.071 68217.2506 27250451.07 86416896.34 22526972.45 116668.8698 15334226.71 12845299.87 115883736.3 1354100.304 64993970.31 6480595.054 34011118.79 3176413.439 687233.6706 96789691.47 5327135.075 1381.486832 13805610.13 970636.1179 4880642.087 12920449.29 104441826.1 3132591.071 22461174.81 1751972.314 2830288.537 1017099.145 1925985.72 31538315.93 604359.4001 10443122.69 13059487.74 9696791.725 17774489.18 123478.4925 11779057.86 46029186.34 15426468.07 54956477.23 198119245.8 17512872.33 26582195.56 644153.516 824971.3182 135909753.7 1119835.145 648219.117 36240596.73 61649724.94 11583445.5 16745320.27 285000.843 +21361992.92 243749.6702 544323.0362 27605915.43 633124.466 483676.8281 7879538.51 21386414.48 7677968.159 16907531.44 13301452.78 7456411.869 2610365.622 84207.52766 4110449.495 79477292.07 8273222.777 6123071.847 154991925.4 2492118.459 104145252.7 25946098.6 1571143.217 82343924.25 13711005.32 13372455.95 6961851.076 35978424.18 19416593.94 25956270.89 2846743.246 2235.68561 23148033.83 5967103.548 33935508.96 4698921.67 31736098.95 51044250.87 15359513.78 8587625.54 4730209.012 809263.4622 14382018.56 3860883.007 7606138.949 8693339.146 2195.230223 779239.226 11847425.46 4313848.791 1699821.052 6758740.899 701393.4147 94937601.48 5242.663171 73965203 4254135.339 851.6486527 176728.8023 83523630.74 5269872.046 38428180.31 817.2777433 51959740.45 2907220.667 11011644.76 78643634.46 10689782.3 11965848.07 114650335.4 756344.9909 15754.07991 183841663.9 105974492.2 34643.89758 44841405.69 10893461.01 35713517.5 31140497.44 116448.5524 8042626.934 15179.46176 92565052.18 56283142.06 62541430.68 10670429.41 1636.34182 1202780.938 210101.4131 6859941.311 +277888.2182 1499.817833 16275.91612 1925593.28 1095.163445 3242752.863 144220968 8767934.552 2213337.273 65542659.09 1175996.376 108672530.2 51841.15284 82432912.66 46464837.35 791661.2415 147143897.7 11202531.92 90663.98676 4719251.609 3977319.02 6049344.19 83950365.42 6450.586662 10171.04325 673315780.5 31992295.58 4839214.514 5897012.625 2669368.863 337294462.5 54427172.51 103429775.9 16779263.74 40976518.72 5836874.478 23028848.48 14962815.88 117011866.6 348732.64 177944.2999 498833.5055 1342.137805 8789289.873 5060605.391 34195.64247 7051930.231 8678213.538 11189981.71 2966388.368 1513519.39 72764972.58 29259938.75 7316530.012 498727.6852 9821676.238 547439.0565 5299672.955 8581424.639 2120318.582 4082563.644 9527570.703 54402044.03 22278547.52 3191468.059 4581749.147 2600.531984 39705407.63 15591340.08 712553.7773 35880078.36 84722324.27 26051390.82 6812212.258 21384609.92 4014344.657 7797858.979 62948679.41 218098726.7 2510104.429 916986.4955 51481817.56 14739517.71 837258.7969 9649547.704 44484494.11 60423729.36 58504.83384 70424660.44 1664295.243 +93604174.47 1324416.285 6338420.986 652417.1065 55861303.89 30252807.53 3543352.351 1079828.377 80350031.1 53514.14188 79727715.51 69936303.05 142022584.6 13428898.14 75578107.31 10143927.31 191832.7666 95434.94035 35539248.81 7462141.285 6429267.824 42253.96434 14088.53229 800849.268 9511001.117 10034228.94 31926678.73 1453673.951 26629817.36 11660624.53 27771960.06 4175790.799 25516838.73 27560540.07 2707799.73 37544779.2 347423996.6 16569337.77 1161403.873 51746023.53 89755484.8 43041768.53 82205316.46 15374351.42 1446.250101 31159608.71 342542.5375 731651.7976 36526700.3 3462941.642 9517110.924 130833268.7 45979723.35 10572072.72 2577579.661 48420825.42 1269.330453 78796381.6 29242.22553 2037935.86 10653735.67 3303331.768 124009234.7 167928.6754 168910128.4 380362.2076 10768562.31 38205527.85 21251454.25 70369946.16 30665171.54 28211206.24 6053214.912 78071843.03 45523746.28 109834.4412 31364103.33 62393497.52 20388643.91 712482.3944 49663799.13 125635658.5 73406687.21 71823789.1 15770335.92 5412322.211 2134774.803 22273112.73 41960.62876 2905572.031 +1243348.048 1687178.593 30680653.37 9462019.927 224401577.8 11263699.14 4428580.587 10205515.79 150732910.5 26545633.31 4092742.493 10076267.56 29740760.66 9237815.261 9935497.247 14408630.27 2651974.909 61460749.79 56420469.28 27480546.18 21831048.14 373819.7795 20305316.14 68312693.79 781463.7872 27747.03309 98856414.95 8092750.418 44007.08729 24601102.05 15125100.53 10515423.89 3592975.37 20177071.86 15563505.78 1825778.81 10000346.82 29962984.2 6406929.54 30683.22213 47685113.29 3766572.388 2595013.818 29871574.61 61488620.97 128166.0475 154776.5256 5577775.301 15629370.77 12431769.61 851816.8215 528437.5508 3361267.51 19066265.71 13676739.75 36136649.88 28153008.99 18649870.14 56229865.52 1883895.059 33779125.36 12813.54278 35488545.51 3322.968435 20366998.35 5620335.837 12362724.36 61993354.82 4066103.719 304933.8572 75100506.15 17952556.41 3055025.659 12361233.45 9120713.918 2355199.223 17137579.65 63451.73474 2211299.008 41056289.83 396584.5952 3332020.323 11849265.73 71639835.06 13078718.23 567688.8798 37310897.12 24221648.55 5013492.949 35470538.75 +17492525.46 2379141.108 496425.6841 5436387.732 11695462.77 159.8526698 59644695.57 26650562.35 16072879.14 5151046.302 3757269.466 367236.3011 195619387.1 269590.7162 10912992.46 11109719.28 24746591.88 6701842.329 10827515.16 9027975.011 46138407.96 12886033.24 2761420.381 28067200.71 158531697.3 10899592.7 54868403.45 17071775.95 3297799.611 21912.32197 54752.14054 51339.67314 3136914.533 43362.68656 44528286.72 31286130.18 22991995.39 104877497.9 12234471.03 1657673.761 4532901.775 8683969.412 19624163.55 1444744.641 4159866.53 21946205.83 5615315.622 2279.082035 906733.3532 104879743.7 144013.2911 88650437.47 859857.2462 7601921.532 937.8538373 1399.345 1297968.989 156776485.8 38022824.72 294633.2 30452955.51 26004.59642 3742179.015 44089302.96 2985827.981 1654277.965 769704.8753 38078173 7886898.538 30363711.53 4523139.517 5905137.829 5544475.671 28040621.84 55726035.38 9221943.223 30956054.11 633736.1409 108351530.9 1574980.616 35630527.18 50815647.75 15324630.95 25392361.9 21447296.73 78727.8454 53002033.82 32434625.04 1654981.331 1500255.559 +5059611.631 143139.1314 24898375.67 27899998.08 34905635.96 17906978.55 502915.0168 121393194.3 363899.4452 56967857.08 120010894.3 26085773.88 9379862.883 5669970.139 267529.0373 2486205.906 57421343.25 999416.2991 5984694.206 94472900.64 5627698.372 7692858.974 5825733.413 1446495.167 28522427.12 63254311.36 62060.67603 2379772.417 58528490.27 8170309.672 181794.5791 4388835.448 8871812.136 4756124.511 49878104.04 1732638.386 3291908.58 8633776.763 7724266.094 96337430.49 19790960.87 19874894.71 863799.3069 12271.07741 6437591.662 1200229.458 11980380.83 227154.3935 10484306.8 71600.51815 3592.064893 87673375.26 20066261.15 24550382.81 2088208.317 22641230.23 104710354.3 310439453.4 32294873.01 31282895.31 41861435.07 66558547.27 51566265.97 16979228.23 54632972.79 1800.633116 686228.2004 3955868.552 8468719.549 466465.1551 24175048.73 4748694.734 22556262.52 31653773.56 30053.43607 76578.21615 99095963.24 2002976.121 23625360.29 3353635.15 7921673.307 15491837.07 1994742.513 5066174.587 494928.2861 4393874.85 41247038.47 20397.94875 1364221.127 16998587.46 +4033562.87 2670458.979 81726.16923 5530231.764 4162373.681 927.2870375 3485537.891 140306.2239 8383866.545 72721.35175 24393731.19 17048419.17 13522713.8 15577177.64 5658187.136 1593296.12 87467.84584 34648257.69 11010396.24 19732688.93 167372474.9 236.5423113 15211845.98 603035.7148 2408657.705 8470410.385 7839710.676 9131.007117 279460.0268 32186.38618 9779968.978 35462393.3 8032219.93 435784.974 1692452.077 28593582.17 33051654.98 34172724.16 54786166.59 869694.9073 14378002.33 15241881.2 253783.7367 1478884.383 67196510.99 47612107.54 23244693.01 17316739.95 190102.2465 5811556.073 208323212.6 290762.2178 877363.5747 56188.47089 33890436.03 37686631.46 14083.29882 1082186.048 15777224.66 72462717.6 898.326202 108533.4265 118077454.5 557631.643 388966.1639 63731139.02 95432360.64 347781.1086 12331893.98 1740626.773 3207028.286 109954474.5 5171484.689 60660953.06 3421274.391 3443028.63 7273836.278 7547012.639 15632841.89 30553274.28 14481813.32 1625117.045 14309436.72 171020368.3 5390334.976 3372498.208 21020627.66 32626306.32 21805773.73 1015467.753 +23818.86625 4167854.426 34691804.56 28073115.64 3343878.438 39772.33884 199879312.4 14262865.04 381100.8255 22333066.99 35967700.8 84855231.65 42380461.03 5490367.751 71483.13024 21860776.37 36.74834532 10012218.89 6854846.007 26789063.22 77262335.74 16328964.84 10980587.19 91147934.44 4692173.94 4433065.672 81471108.19 1286725.287 4246203.357 13232282.03 4169655.649 46433831.86 272422552.8 4335313.355 125858.5636 3360965.456 99457985.79 8756.812442 23034104.58 13215311.54 275926.9617 573411.5602 19545188.44 389172436.6 14405183.69 24319376.03 330251.49 31726882.75 86594638.78 7666057.629 6198162.165 37070856.65 3040402.771 3665530.574 70691.98344 11164886.38 14962207.7 135714475.4 17888897.58 22062628.2 298105.6345 3587973.499 41308517.63 13506.95277 8303342.647 1185063.666 98888803.67 118825697.4 114689577 1831347.664 48596472.8 35680885.98 19833895.04 85828981.92 247394782 748114.1099 58285974.72 2085846.149 2445464.284 22036469.05 17561991.78 300842.3947 22731318 197293571.8 12052627.33 7024.49396 78547563.36 4263480.447 5339.123212 23955021.39 +3851101.23 22706.66928 6223858.718 69655.64212 108071.6777 378988.7493 122238835.9 25624.85396 1114274.227 33412957.3 26784430.83 19479236.76 144568.078 114727710.7 9289812.779 4232605.759 25214289.02 12045658.18 47596726.27 248115304.1 86107591.19 16666682.13 6950955.214 38152.16106 514636.5847 16942388.89 1983695.838 1614423.031 1400.139472 2649704.68 9504050.961 18838213.42 7182496.124 5950586.771 1667661.03 70712223 5711794.356 768187.2464 3853328.61 71044596.49 67283200.08 21544482.75 1899762.003 7231934.397 150927.1051 23797652.78 2760057.829 19674163.34 12870.56788 3476446.274 15586010.24 10173720.24 7865615.991 4144456.502 29795141.49 328880.2705 43702372.44 6884498.354 273379.6667 54718186.95 2237.008007 12538086.8 156415.3597 49387.70421 9261161.661 49871.47542 9278539.421 2838336584 245766.8461 501299.8025 23928918.69 70631506.03 2101319.242 6755884.336 114292514.2 214944997.3 2137233.755 50811606.5 24442706.51 3147807.096 65272796.74 424918.037 4181729.577 3681080.247 28166609.8 5657050.743 10759.10632 8391004.141 130966034.2 16457.40168 +20720461.52 25875436.59 12375563.77 19647.49762 4369675.164 6238677.127 21003451.32 18910562.8 11699394.59 1546.965075 16210182.64 9415880.884 293883.432 101588821 2006837.283 27099220.73 61094143.75 1108044.236 690693.6413 7798199.218 2421111.25 89758759.73 18494.56127 275898.7218 514108.3999 60867.80976 44362711.6 140510205.3 4676147.246 1552587.027 7680496.199 18357318.84 17155739.83 53306.1843 251891.4865 7173952.564 31728.7352 51196971.85 16444763.42 2149041.859 774048625.4 12340.77116 193813539.5 1021024.696 3174636.507 35892361.6 215865.6216 25468300.76 141832.7875 60609370.11 914417.2934 24272856.18 114167056.3 89293122.23 146146898.2 5815460.003 2655555.904 240667382.9 19893318.7 45828951.9 77988018.77 64697821.8 37943.47196 49119281.41 2252096.984 22359536.1 5377.83839 18371091.08 13845825.7 2617995.541 26316.67778 44974671.14 88212107.64 19592.29294 19109447.37 45869.65257 4101454.294 20671284.98 11346.27153 13552696.22 34560118.79 320094779.7 15017516.28 66848.37369 17120088.48 2969.292901 11300227.91 6763610.312 202090793.1 11928612.51 +100747138.7 51244692.82 18209730.26 100235.4782 4176204.911 29819296.62 5789133.185 7077.841287 71684069.01 101244315.5 25867.40295 69910129.01 3476366.432 50362385.6 4720.35337 332461.9247 37367605.49 15844306.76 951780.06 45080466.77 22191810.25 60413543.14 14780163.67 37122744.9 4403183.421 7901828.708 82460210.52 84948.4937 276618.8699 332890.5832 112307.7624 81177744.79 268464.8286 293595.1952 5780935.677 4881944.755 22811790.81 162072.9921 504549.5096 307709.2901 656019.3309 1801621.439 51194885.97 39813544.73 11955070.33 15197110.83 51186067.1 119.2516314 72999245.89 3614306.084 15227854.36 37329863.28 24348011.96 1542479.715 15054752.61 6063820.346 306922876 316606.6845 9279776.783 66312071.85 37383016.21 15.68281701 29388651.74 112545839.8 113126783.8 121914074.4 707263.8974 2977706.321 3845361.833 178402725.3 64139.40462 1790892.501 6713.73176 49425922.89 25778.52706 10193835.21 348428802.7 37522.56595 5241199.921 37617.90275 14125712.63 118939377.8 5359372.569 122032605.6 354862.3765 52379598.72 105854601 17615878.7 95073826.49 75253074.69 +12032735.03 349992.2452 11946338.17 69940.13655 30419160.74 43667400.05 339417973.9 99488531.62 18587.50291 15002995.66 14853984.65 1587.031137 5057233.022 322743.9117 1913337.851 43311140.17 515930.7813 52577544.23 16738449.85 92447566.74 22786056.52 142.3607727 143538.1729 65912391.18 28808198.85 20783.45511 37641.58728 41842196.62 66667.48736 1692394.243 58648109.88 54997120.33 5858936.271 7122248.535 122258602.1 118068436.3 3820.401564 1414548.074 29201227.91 34380780.96 8069293.007 8915023.382 71242245.04 1092259.817 7712833.616 23287110.92 201759.2395 72932383.81 246270.4537 17990335.8 30163695.28 2781290.432 53197665.54 51279589.04 247639.8382 2791798.283 52664545.15 2054190.152 155893.3717 41205301.34 1805836.59 63629136.77 81370536.47 26748.8862 222712955.3 4798923.825 596163.6691 19804011.5 517504.8253 16953017.39 4912440.627 65384324.97 70380275.42 3943357.979 2977596.298 6198128.644 5221850.747 8808707.025 26790190.81 974166.0631 27404507.83 5764744.421 2113718.409 6524711.565 80281.12824 12291557.43 22386959.6 4880636.875 266081.7755 10232609.71 +7819629.35 2315990.868 56309633.82 3359298.952 1738628.552 7763859.103 184694.793 1193974.371 835522.3329 8293956.444 226461.0236 7910598.752 7494.079031 3078855.881 93870108.74 18263663.46 19964015.17 7042940.759 728012.135 14036241.98 39709476.97 159841.1683 11586.32188 8734720.908 57101.77783 7876878.127 2152279095 20114171 36757390.03 5457847.735 26679905.84 4251.528731 2524358.41 15107927.28 44365047.12 15668471.86 5050336.797 18358694.71 43323754.08 13495470.38 73067636.39 10955077.79 852448.099 59642723.94 7709544.14 4511745.42 26542285.7 9585847.226 349197.9462 12081209.26 10883706.88 2396429.345 177518670.2 2678529.269 42179646.7 14887961.79 37932853.62 5992552.432 6288332.275 30614716.82 198374939.3 619615.0607 64103611.49 7279.16293 36564075.41 16658627.11 9137632.251 6354011.271 11361147.86 81864273.11 55502547.31 26002923.21 24735496.05 11982394.17 100749278.8 402304.7383 26002435.88 9887640.226 1471030.544 297205.8288 55710640.34 23757608.43 3345771.624 13854684.9 2907901.377 61905080.22 10293139.83 77927698.55 28020650.09 8107495.864 +736468.9673 10278528.59 2315143.462 35159412.13 87731854.36 79689378.77 77407274.16 48689828 500403.0505 97996429.89 6573.972188 2194632.898 2401876.874 38750903.21 722817.495 35389078.48 19100669.69 23604293.15 2528246.504 29857886.28 8577220.642 169146.1814 16506751.67 19434742.06 10701899.81 971630.6978 5777999.372 153788.3632 52506704.45 7415693.191 5118988.901 17244565.99 28301.82175 1387816.764 82832100.01 62315871.68 232638502 45433067.99 31160092.05 44318001.38 69627829.64 18689269.89 7445208.267 209013657 28509556.49 5877397.218 10158.84535 78892298.53 23559264.98 16579081.34 10934451.78 13263118.83 100961011.7 64882048.94 18234.68789 2248780.95 9657174.284 25890669.03 1434124.953 21355135.34 2131461.076 52363880.52 25231.65623 29475503.39 1127704.119 2616094.271 69109.71518 503499.3747 45472067.21 63713851.7 46476457 53135144.1 85861121.2 12650780.55 3890006.324 11877533.74 34118393.84 53616410.82 124215663.9 616651.5747 50742247.51 95092321.31 1589707.15 14910588.86 165050.8904 3208773.227 15140360.73 29190971.08 48663078.86 174773264.4 +64694.82194 25497384.33 335294322.1 79244161.98 35905317.86 541052.7147 346888.5343 1437855.641 207702.2161 2234891.349 7182704.061 33037419.17 20201910.19 2405057.982 95836617.44 372069.1831 76383564.27 6427.193468 4816371.068 29654910.84 119603.3303 10495837.35 1029778.647 196676.6315 638689.7664 2790692.895 27112012.55 527424.444 5789215.733 2294630.421 129062286.4 1133775.23 2520200.153 45836690.71 9578507.561 3001239.947 364500.7565 25432736.19 42091708.28 323295.5647 64045599.9 33486.60525 487940.1999 88131505.51 754822.0365 10338179.61 15650.81382 65035855.31 1523098.452 4106615.534 10636078.65 75344.05654 2130383.105 807502.1948 64973.42903 16641374.46 3170081.295 48504376.97 31719885.41 21025085.89 57923488.18 43026268.45 83775831.62 76641231.39 56103172.31 9958396.77 6477250.354 71410756.05 6099419.743 9412334.875 6760654.007 11477460.52 62339788.19 899349.6324 2.559393653e+10 17365761.57 290808.2144 16942893.99 5085142.091 35790005.25 153226160.7 23304556.46 119725898.3 1995.264867 195264713.7 7140176.327 1717247.159 7377611.995 4793.310546 5456260.991 +145908.6172 1195060.612 17075223.85 5094382.302 159415566.2 65820.00484 12829238.48 18493045.28 233811.4512 8005097.692 2188550.658 2991419.107 31376297.45 903848.1949 55322.78521 108544.9099 418103.2405 725893.3838 126739157.5 54762059.08 70380.44214 30852717.74 61894.88504 11651718.8 1990204.486 8781.200625 100805.04 510699.3667 94339.13147 8981695.829 2860119.743 1818790.385 1611246.95 49153014.01 49560883.99 79181752.85 31999752.79 22027815.36 38775412.88 55256528.36 6571372.267 1209933.058 16403179.51 2477994.996 33715629.83 24684189.58 61160.70027 217697.4746 94653432.94 6873390.924 628863.6304 11090316.04 109485.0699 29676281.63 29342430.08 274087312.8 12346135.98 14735337.35 53258096.14 4871336.462 10055343.28 265867.7095 88551006.55 20939319.66 19910924.62 134553833.4 1432.68713 130235630.4 133951.0377 36793204.25 52199970.85 3672417.564 9102233.517 6010881.173 16764.45194 50740814.42 818127.818 25452849.08 18262585.88 140139.4067 72631.47364 24264016.11 5340717.601 39944662.26 2638786.429 31809299.85 178.9862837 28989854.38 8324842.274 45938331.52 +15989176.9 17939154.28 310202.4302 24352.33743 3809001.422 5859171.981 2401.336167 84452416.04 18260903.89 32181355.3 3039554.076 84228.7285 11061725.92 5266389.084 8057657.217 1894462.81 65009366.39 18052271.51 50881710.14 55732989.66 16943159.97 19228199.68 26108135.06 111028746.3 16956080.82 59085255.26 27837743.24 136450.7457 23000682.29 12391854.31 3211552.61 10981839.82 65215654.74 27310756.81 4131826.956 3404184.007 2548541.391 25107590.75 70118917.07 37200811.87 16836560.8 41554383.16 22573337.71 2552779.325 6816488.98 166206207.4 6100453.868 6161805.399 1804678.145 145665994.4 7244171.037 5936980.629 187444414.1 119855.8712 40318195.82 11905722.77 465210.6204 46258614.95 53225920.18 21350814.26 559101.4543 55516.34654 8555.34588 2592039.738 64335008.43 46876938.26 13171585.47 222919.9166 28780028.48 3007487.305 50065738.74 8318708.168 84908192.55 16996700.28 522684.9017 1354499.174 10275498.62 29127130.95 5618597.856 1532695.634 1929.346883 9844176.491 120279724.5 3591923.991 62425678.07 36155018.88 10039282.84 239508.6465 134825922.4 27134297.11 +234502372.7 219692.1776 85530649.87 6064382.246 78456361.41 139905731.9 19560091.52 29402.13016 23491.57205 993912.5965 87545893.41 48769624.37 385300.0031 5255107.452 225793320.1 23.73440744 253847426.8 18614259.03 486100.132 87356.05735 70324683.38 61678404.62 3617520.945 42040057.03 50182701.81 1312267.315 721216.1525 58998878.1 223582.5169 73648450.45 55453184.17 793247.0239 6793791.618 255800.6653 18494233.29 51595122.34 24632638.76 947635.6866 5122729.058 20543.68555 1998519.092 1320160.847 2326597.93 38880485.39 933672.8328 72785573.2 26798742.44 629050.0537 10063760.91 1849851.702 9390024.089 7927062.897 18707902.21 2099761.793 32523003.34 27347437.07 3585413.785 8622002.837 178659.7152 34316454.13 2296.625051 1296331.09 13006221.84 24490347.33 12751801.95 122814433.7 3721981.011 59458815.85 17501151.04 8150913.949 19128583.76 24580320.54 2370109.244 91183.61653 19780.14213 647615.8047 22083466.21 47854160.17 27293790.68 1503327.087 60814947.69 21310207.4 61320089.25 9757363.998 54879148.2 3005004.448 6312303.089 40352367.07 32211.30337 2100116.981 +1616106.435 5836045.016 7014886.998 6279177.681 42300227.97 181.0246931 8238177.227 66944174.64 151530275.8 141773.8664 31748644.82 23071351.85 925.1797214 50083170.18 21186350.66 2444543.066 225708008.9 23301227.32 6758195.926 488304.0027 422223419.2 7028017.994 990763.2166 59426033.14 88298816.06 298881.1999 200427.8594 2213529.381 847.8809657 105291769.6 31854691.67 97107.74893 14666608.09 42908339.48 166521574.8 3093587.097 427967.1659 67629496.64 4109911.631 801411.1208 13817893.62 48169575.32 23450652.34 4641952.866 15832794.84 22285644.2 4918947.969 6353.673079 5977892.11 40031938.69 13222258.74 43139.3956 53158695.07 2237573.878 738672.1726 83804362.57 41091203.7 12267371.75 48353372.01 7289674.873 45639927.27 7161821.479 9926006.891 8129106.899 4836265.898 3409207.895 13755224.51 130829.858 72474746.65 19520947.05 32094960.51 5200798.952 17339538.55 24380606.13 17556041.76 36701144.02 8192864.398 35653549.85 8680020.794 73494124.32 5786000.712 11373459.59 48942534.42 24657817.72 2887447.838 2720240.487 2585551.181 11286809.31 151663519.6 277589.4996 +16852548.67 107936171.8 17867027.91 27603480.25 384175.2411 126126372.8 1183888.276 6313568.633 1053043.511 22348.73727 49387575.46 77464031.83 55929801.21 42255114.18 23864102.62 79634.64365 2869876.085 117100402.4 53136477.64 21976423.35 1650011.515 14289346.74 52692866.92 1817360.392 29006091.41 172317.6889 105439.5531 31407.82878 220.4486782 5708626.799 39352715.32 1341171.262 392012.4284 3163792.344 8517767.243 2784429.74 28945770.2 131374398.7 1694949.485 1197.326273 45356036.11 801938.0361 49535104.11 544824.6596 620641.929 181910.125 20084488.68 58506.1854 6152157.684 79775583.65 180790316.5 449770.2991 910264.8284 36916844.99 29400.48754 4853556.267 24108302.35 2454973.714 6324601.956 95372642.67 93252420.97 122671.8708 21339648.8 35767265.26 159168865.8 1260136.089 1069528.366 20009605.34 36629789.25 5352933.472 12758.22414 38593608.87 23966195.95 72271562.9 34504447.22 3050.46388 10047100.31 139580637.6 6420.238767 28166299.93 430.437344 66309850.41 1365000.465 35060968.52 20149410.03 17768884.11 2467494.227 4906017.633 29227624.74 35885399.4 +288286.4297 29226198.11 31762823.28 4528395.987 7300396.44 306995.0279 73286084.2 673182.8688 980465.8548 22662576.89 42955694.97 21224919.63 8523580.268 61036.35174 701549.3229 103583170 30407.62148 57400543.76 6346787.871 82004558.6 131525.5013 24027848.46 267666.3844 47092026.77 28264885.56 2845057.405 14605.60191 11694275.96 42561.96333 14278425.87 20141373.49 984786.3416 35464431.58 40997130.03 20307103.97 19097967.19 100716578.7 43212127.08 5824821.378 5355291.258 29323324.53 10.88314617 1152670.169 74714921.7 31365131.4 168621.8088 46036850.27 39454284.66 1791061.835 64474366.68 1558692.044 30334286.12 47460311.46 316844.4621 34982420.35 32054040.19 70649866.87 101453607.8 330894.9242 24086821.28 3890823.49 8148912.997 178000.0926 37075689.99 105765189 5225996.486 1438153.002 25990020.6 6187.927112 44783100.97 52391996.82 40431970.86 73325.68127 1174131.027 935288.2576 4523445.025 4193331.096 89347.47249 48461765.32 582708.6835 86.05907075 161384693.7 7783869.08 29806738.77 41691582.01 87950787.27 4961059.475 235058049.4 69927.95981 1693460.949 +103891516.7 112454279.6 93097507.6 154337844.5 3784498.668 15615830.92 23013356.85 16494620.22 26212763.58 12524170.3 9307049.808 7477822.327 25942567.41 16174745.31 2658.881549 44686965.18 61924.35055 6624030.523 24544042.96 20993660.68 3506617 7532183.016 5756265.65 1526740.932 10408019.88 853.6016572 1950568.363 7649116.617 41080837.75 58106234.7 22216944.07 105708661.1 21239447.51 6561605.81 1073461.184 115309.5496 154835996.9 5999167.016 95682294.2 960320.5052 51854941.56 1403900.716 11126.99055 50891567.65 111355018.9 37464118.6 63323.65556 9573668.373 5597669.011 38062245.61 44375712.67 15014167.59 6208927.703 7534902.245 67847275.5 12393528.52 4107778.394 40089405.07 3161349.295 11388834.98 35792121.83 59913371.23 10023.85594 9341495.823 9726.833606 12382244.93 2052076.079 13203454.51 4963635.009 56974307.96 3.363732075 56857820.04 8176124.848 1606999.673 344925.365 48.08802161 3730696.999 29970535.53 168672.8754 4950835.942 3829384.94 2501459.098 46648653.89 4902261.785 293159.8711 29137317.84 30117711.38 16110012.44 19162.11556 67610.05008 +7825539.262 8395707.242 61406605.22 5852449.096 106118.5752 41572174.33 9012363.42 1155275.496 203883.4414 33564930.95 37663233.8 27893942.46 14814061.26 7147705.945 367739.4626 10158861.08 2427275.949 33008414.21 2730485.289 90830.74016 183567905.5 11391888.11 10050933.84 88769728.72 6466535.514 18437489.2 9570644.579 11040188.99 2078947.781 90953981.22 166304.7213 24731854.69 45578111.14 1966472.359 2716.016156 1987916.679 9025812.829 150181.3392 24477021.63 1106445.158 19178.64281 240993.8916 1592268.16 850842.2171 7674061.17 9054218.277 1668797.746 23258785.12 519228.1197 121053.4219 559241.1409 32214654.58 3345947.021 29092250.99 522057.6899 40269.97762 14029060.43 12345202.71 24135638.87 23766946.96 9729446.581 5538915.893 26127369.46 7606864.042 83589328.35 15268713.21 17659927.53 297167.3036 29271665.23 39582356.42 215869.8914 7426.310336 7512300.424 8230310.347 28454569.26 36642882.86 20428212.94 27253296.18 4536065.462 28168.68183 20197.63124 9910497.367 106989447.2 7785.473889 240111361.3 9741158.259 263952706.4 9996744.638 501843814 18074280.92 +3136070.787 24129720.5 8042675.603 9172.170752 10038928.54 46729622.08 6371590.141 68264.98952 13125192.15 14843.89579 38391116.57 4834370.843 280143.2895 45610815.4 113938269.1 16633.3097 19367611.75 50049088.91 68862036.62 114439.0426 376590.7507 5161597.515 37414326.69 5021900.499 406520.5286 14544000.17 113464851.3 715022.9978 167395.4373 19651682.86 20537945.14 2745924.733 18937365.5 24775968.07 848805.0692 101102166.1 341.181063 63458961.99 10467825.5 3213787.633 31332.15365 45504755.61 49306994.49 69713.83115 1975341.147 339492.4466 56055988.07 363070.7639 49880091.33 227457.4364 33589904.43 4181895.88 241201.1035 47825225.29 1222835.12 25786798.59 4377104.93 6209314.538 3639324.155 35275.21818 82651.78801 29349789.24 26752536.06 4619101.341 602990.0301 46491527.47 240641.5028 39938954.71 158537499.5 82010678.05 988433.7859 50727313.04 60394411.36 52948680.44 60537018.8 1751046.549 43930072.74 53580111.69 20143393.42 252618.8019 24139020.94 8091252.581 18278256.56 163.8218093 41043.73576 19784186.13 4974012.778 76636147.6 135215009 61064999.8 +52776000 36530157.73 48266828.84 15528028.86 222480393.7 2846038.403 10877681.92 184573.5119 48572907.9 48713407.87 1018774.381 102313947.7 85492810.82 823.7047863 55485152.4 18894705.21 1304634.123 9754.73553 55370206.92 4314894.837 111478696.5 3093561.521 30490069.34 7145739.381 39498879.6 37095193.6 190999.7538 263100.3238 7883359.484 2704082.003 919652.889 7706387.687 22737742.95 25025191.47 18956866.29 2387925.897 4112358.18 62617077.29 48471464.35 2529632.141 7882880.535 19010.30676 41427.35626 79502.68528 6657.848633 2342643.95 7072.974271 53405563.38 1058212.391 2256895.317 50714330.49 24576281.11 54991328.67 57451368.21 5691645.029 16883207.45 4786404.719 3766437.6 35933430.08 3539460.66 34670496.33 20235707.52 274.3167107 22124063.06 8086712.715 109736930.5 349.4517352 405662.9103 8702802.04 38079625.91 8762096.073 1839116.058 27419743.47 65624256.47 3165.088896 31313711.02 42024626.71 12021337.85 23718251.15 233098055.7 21139575.47 10845821.66 67.79931943 37294080.54 23280829.07 10192774.19 2824728.808 41989809.88 1990266.366 8397627.974 +6274990.333 35527963.36 17166186.28 54903785.43 22719532.39 7012919.266 4559477.696 23035074.23 692213.8528 61677.37579 18631701.8 36742440.93 15986425.5 623015.259 71358.05192 25454726.19 21968184.08 1152124.241 111766783.9 29819033.31 9663992.638 7278.78323 156003.1002 10920145.49 91483418.05 1247383.645 7577441.683 348911.8983 76469.88364 32809882.66 31241663.35 50310909.75 3848781.528 4315253.178 99745381.68 52781475.71 67493322.01 63876862 29523778.23 154976064.7 14166115.91 48866104.57 75875902.7 30125418.46 3020418.17 103448.3412 116369916.6 157546311 42035793.58 2141.810623 23000811.16 512144.8657 16134847.9 4146209.135 3121223.44 5411922.576 17180.18984 123406954.8 151063054.9 293854.5546 88561.52255 26762218.92 31612967.84 3523.321502 15776314.68 599619.7067 1053563.907 1787607.323 28957910.33 6543870.601 84661.57669 3149.815359 18073442.45 72406129.88 31755185.14 25727762.85 112108.6173 1874525.7 25402.05751 38085.62596 87935655.27 3636522.949 35533251.76 8604615.43 47441013.13 11471299.65 10366088.33 1455411.643 4083524.231 183232008.6 +15780015.96 111569152.5 1465115.623 67984482.24 10480302.48 698027.7733 826407.901 4223729.389 90974425.54 27123075.36 5086695.615 37596558.02 63102664.36 46957403.05 2723195.247 24216918.45 19980802.33 133334783.8 8172111.906 6465477.164 340597.9407 70611.44241 146764.5933 45320773.37 2562048.617 7599132.937 29261581.85 17484593.52 94338975.93 24801564.66 84668671.02 98729205.06 2894666 22849269.15 1500215.24 129481242.5 445307.0385 8320998.316 580436.328 25756814.81 14292404.91 568297.6949 7540313.996 66385174.58 491942.1912 318680867.6 19114107.18 132.2384642 12925170.37 1868708.513 21006963.53 162213.0943 2029203.914 1488125.121 6909.224368 19535856.91 4058057.796 35955089.52 7271.686514 6847011.53 3064141.957 7745983.104 5870549.862 31453283.55 138208.075 15114946.84 8352864.311 16355055.27 18582962.38 80816331.73 151703383.6 2604437.167 23137675.31 13207927.01 2806839.221 3909453.111 13555618.77 19739.53022 106492.8687 19450873.32 4118804.048 1996178.943 59945001.04 2914246.323 64047706.96 3644401.115 18841723.83 6992.439484 59710254.02 34759252.36 +789490.889 7457717.69 7087765.629 35396256.7 12571891.72 27825.47913 9474392.894 1745426.719 11598341.94 86439.00044 55559649.96 20537.66893 75072475.38 61765527.93 2951336.074 8287655.11 2748675.31 292.0817514 780113.4024 6532118.125 5469336.388 820759.8636 1873158.029 15148307.07 36019027.54 9787264.806 104472.8984 1514192.199 372.43257 108541485.2 6231351.194 48188.42227 1572612.075 27292079.37 635555.9601 23849500.98 6714295.546 61034820.23 143843005.7 28150031.38 2615673.35 7514110.775 3314957.606 902939.5335 22424.05915 31767900.07 421.1843343 61335600.1 8654076.742 212690.5948 10810889.25 3152935.333 153943484.6 86128693.12 67744457.13 1083.690332 74749649.91 536295.3468 44412883.08 1106568.448 10402335.82 19234916.68 12716972.04 23723498.3 269980.2949 9923820.836 16412140 671895.2653 8109852.386 7700507.443 2748282.409 906699.6811 24720786.02 5612942.21 1329562.553 1644186.239 21905087.04 14479114.23 20749536.85 9416607.335 44317218.08 4123104.795 207037.1618 21202942.38 4348611.288 10948359.72 31231935.97 4308760.445 41265194.14 14482414.88 +9281188.17 76629812.03 17517131.43 756878.9401 71228425.57 5010642.297 83118.42117 89810.66603 521412.9433 2843633.483 15506814.08 19668905.96 21891274.55 226864.362 35353724.68 2558452.854 11544111.07 156809643.2 63249734.51 20064134.09 15509753.3 110148.2865 86471.15565 45750042.09 186516890.4 7037778.919 4695713.108 2061.645936 47036344.94 3036767.106 3098141.429 27496372.29 104489846.5 4345834.263 440014.1473 6203085.746 277856091 1117497.634 17516370.96 24512402.9 5588604.878 16551233.63 56541676.69 4825046.865 76964.293 3986820.26 17774293.96 2304160.713 35934.84251 12485446.55 27314003.95 2183795.609 8816728.511 38130827.26 6180259.511 72357058.1 600954.0372 2126454.921 41147704.88 159636.7224 60509381.53 38591175.77 136736118.8 9752936.748 429683.3128 65102.25149 174930.1342 31452895.71 100397.0333 765536.07 187196.8285 56023746.94 62103892.56 73128004.58 12969132.29 93202831.26 25971293.25 23768380.35 68973102.85 11716865.48 18228930.6 16800994.86 1257161.407 1834557.359 32080780.6 6478408.651 43724111.48 48926613.88 102440593.4 77416339.54 +39797696.52 19909634.7 5884372.524 1678565.505 17758315.26 46132873.17 1922406.431 862766.6538 6873030.025 254351.0554 2981584.394 27585652.45 4744968.272 154138803.4 182996723 328217.274 12190.09884 96954.67627 29750122.3 34754773.47 71852257.54 90061702.45 989307.7649 388819.4501 5687397.06 3462813.348 226644.0388 1129180.522 3175638.105 2167220.442 51038846.33 20020.46865 2315995.551 89009559.56 4736574.954 8628605.895 7106320.691 114319845.2 193376945 10184058.76 1666172.639 104041887.7 71867178.86 12932303.01 15228.12357 39158164.78 664506.794 30435999.28 49189443.88 163374823 37382484.19 25464.39283 19549.49685 14847616.66 2058389.001 29167344.79 5124448.112 160650680.1 57518954.06 31818256.12 54150636.16 64274041.34 5934235.116 8422012.475 38748581.84 749030.5487 5265568.614 5451170.199 6850660.384 20245274.26 38631562.14 19322112.8 1177422.173 8086.388812 40215361.86 46438398.93 33079948.59 17627018.89 10031.93764 9269353.038 738385.4982 69674729.7 46130232.52 40089007.2 7926105.74 9623865.751 41933790.01 263035.1319 51119575.68 10054914.93 +6229243.316 49228852.63 58997827.26 49240.78305 25152516.57 25705311.29 790133.0917 160060733.6 11312022.63 15891580.62 2169552.789 1815926.842 62079.76856 34031060.79 11057240.03 14239674.26 6828307.038 4240036.59 2153075.894 41546637.87 119262.6145 1575165.204 29676974.71 27318132.33 104374733 39283237.2 2473989.303 584802.3264 1018119.304 39187078.92 111000559.1 49222755.9 80954665.75 5871011.723 11411964.5 13427587.1 2914.964362 9114161.519 15179417.95 4551078.875 1391760.928 28100024.92 378060492.5 1153719.167 148714318.4 335632.6691 9371.470033 1612439.137 20117959.25 20584770.93 216952643.1 1621841.559 26061.99456 51539780.62 10277132 2937975.259 72978158.66 337587.6651 258220549.6 59586828.13 24435624.52 99173825.46 75539.1511 25337102.16 30658933.64 18714684.76 31393002.34 2222646.946 11838076.46 71274865.27 10010597.54 226167.6098 13697971.71 89051160.23 215163.2888 8307274.847 6181719.904 24582392.77 9169255.058 210799991.8 191344376.9 18551194.39 6541477.351 9014210.708 21745837.61 172048886.1 34523507.39 14186067.89 20129049.8 49304383.52 +52965985.78 618739.6421 242373.2942 552.7757843 18849131.64 121016864.1 68091.28788 3605408.492 49752949.33 26555.94983 39734395.88 2197050.069 80442697.47 4755213.007 99052.6613 51541774.02 83596885.1 15640635.83 138015.3933 8377684.895 25088728.73 38295.28611 293531.8299 33994.61052 21070676.63 7725357.424 1694530.041 1034210.581 1747698.425 588288.8221 13724270.91 5192587.961 40203283.03 1902626.828 10104202.26 2120206.819 53259025.55 28241560.7 52833980.33 2937355.439 43962557.81 14767.00221 301553.3136 19729.86026 23749445.55 4386953.175 38849219.32 598832.2098 2375868.98 8030560.952 239245288 58779153.17 3567113.244 262156825.6 3198731.036 1653699.824 5525168.258 19407657.08 12740108.83 551653.3464 19007185.1 4376469.286 1967500.243 320983.7752 70089880.15 65199306.33 60093380.05 91807598.54 32978230.71 7390850.917 185589.5107 4928.518745 73499.48015 14284948.13 744704.3794 17249115.48 674087.8016 67096331.45 19071.58706 90835.43999 387.8016635 14119345.35 10583530.94 13644610.67 26688345.04 1944274.93 10493.90365 2270738.889 22011089.99 13027567.04 +263139.1783 4418137.271 181511744.1 148403654 7232263.24 1175281.175 41167209.05 6181669.895 15833530.65 7817162.405 75390903.04 4154426.19 82130819.54 32611.1433 16925.28166 29718949.58 2557804.037 51081502.17 6781685.538 14488961.73 3513107 5644683.461 15490455.1 31023308.89 499586.4794 52055642.54 99295.28477 12267.04536 53637432.59 1677395.766 3409808.5 4576663.046 55440935.3 35068552.02 11070570.51 5650687.325 44861389.42 38658.37828 83999.79104 365914.2092 3306688.191 95691032.98 910405.308 65911.74357 1122217.495 28393302.64 8373.558315 5687524.622 1198536.041 1703643.154 16692064.28 812671.4287 176569.556 1610754.951 55516947.88 8001642.592 24555621.8 82566296.12 716265.3579 16673940.64 20814907.76 24777522.48 91187.47383 32851579.2 11576.40662 2147973.558 1249259.651 46619592.7 8006764.093 46101446.59 74.04540037 17092971.45 57113950.39 9858186.153 17496406.34 1184095.249 31571393.66 78121697.8 61267.44745 34648.69175 49368556.81 46364397.95 8380.357939 25832636.44 126615569.9 2763828.68 5667170.81 1899512.028 486833.4016 3895083.779 +3969906.893 2615.003409 37848998.6 47419835.01 24955199.02 8095111.59 247735139 69126162.69 453708.1086 10588119.94 119299484.9 73684.45933 9510259.128 2441766.466 8973911.926 8315360.818 57886104.36 47577580.34 1049150.646 20453.67245 7245873.99 3536152.413 39167137.97 68460873.26 9982.03767 1485800.686 3191658.379 69122997.21 101771413 29967410.39 409549.0003 3950233.243 10114.30525 59079422.56 7696236.391 409445.8199 58596400.77 6881.262207 1635.850454 4624084.234 349268.7008 9821542.989 5974847.376 2228789.003 14598078.31 23117827.75 32039624.54 2479504.473 25137172.14 30182294.73 11188191.96 15055446.74 3820895.618 10662222.02 151974.9575 22256968.16 114227813.6 68964540.31 42637.82586 17599182 87165820.62 7415781.663 46109597.08 28759541.66 7620944.238 8786.965723 116461799.9 5139256.419 31945740.61 1283515.205 65383518.3 71721.23353 117274.1812 12286570 25185996.8 47187667.9 5917243.948 5667168.841 15851.54355 2783016.345 17526738.29 426291.3088 2672945.019 62776331.46 71312898.66 670187.9651 39998682.64 5011667.482 186188.1711 48107088.23 +21662525.35 32563855.16 14195263.29 11305346.97 58746664.83 27869529.77 840512.5453 84033899.38 60150357.09 91542723.24 102039262.9 43059.71359 45314482.32 202657767.7 28658071.34 7364461.549 5625726.662 25035757.77 10679546.87 86554.74369 11411.97784 130851485.6 24750155.7 57989.71702 60958860.57 9770192.202 100404674 25255808.18 8944831.985 9841844.19 207447.9916 102093.8839 140387383.5 63166885.08 254352.0241 3395959.686 38225662.79 74183.58463 668471.7862 2457690.987 51918.11277 90348882.98 55323515.07 4440.38463 3033084.328 13567.45424 2.187896937 50959826.19 50452420.61 1873538.179 35141882.77 49314172.8 183362407.4 2168875.971 1083151.233 1952495.784 4570114.441 9996144.853 1710544.759 31342767.17 110360715 663404.2685 2522343.618 17427.96212 45477882.08 24897.86187 100501.2388 4706214.518 28038.15566 4621675.746 176423.5557 6174507.108 19780126.86 276202.7476 211985.6903 323440.5026 21762140.11 41619308.92 8645405.707 47067588.21 72442511.85 7068.448489 29525805.88 89159301.12 668613.7388 55481.3929 34145.30762 90297284.2 22753466.24 12767876.12 +188635.4372 4433747.709 84105441.64 8997084.751 8893936.992 21298181.02 117203511.3 6143299.001 202191491.4 23427230.2 12847894.29 24537690.32 8762621.187 16891393.99 337930.6329 2893306.335 11265544.27 26299876.02 1744996.913 12047606.48 288089.7846 25667662.88 699247.0924 366018.8654 303315797.4 5083434.968 1569146.115 22521632.73 2194740.006 268902.462 372476.9776 5017868.729 948470.4775 56066559.51 78593271.34 8802.951354 125960019.6 8744279.57 4200741.082 68802387.54 14413544.81 5772133.032 3975.229034 3128169.556 112594572.5 60181956.67 65208750.02 5377526.562 638188.387 18001798.26 363915.9218 310433.5698 6182118.845 62766224.49 58445258.12 3750979.025 22295876.48 71829708.38 51848691.73 41171491.05 24603686.25 663.7885574 3316094.631 73201671.23 817.5749801 20754266.03 10639937.24 574397.7151 25682907.93 21813517.98 14287036.44 84373401.61 116686806.1 653515.6996 13672742.16 86739681.97 2131138.923 104167285.4 15503180.83 9046219.144 14586253.06 6736682.777 96435732.8 8011089.789 29143459.97 2538385.94 4114294.279 5961028.694 964486.083 171777.5664 +20933994.73 65621789.03 7435518.455 2834683.075 2356645.383 38251928.25 16444358.49 1036569724 73078.56365 27991768.73 4973314.732 51598699.5 3626491.444 30387507.48 598178.8957 160084.8962 74098158.99 64935428.53 16940180.09 18276266.11 586282.183 16364667.09 10972478.75 86283691.66 143508.6081 56364.40647 31686358.86 58808397.3 29036386.18 53533.11412 27838131.47 764180.5125 10385855 2461093.847 5226953.54 18696987.24 30984158.39 2799896.218 350491.4056 194420.2378 18607592.03 46385043.78 283017.3904 19310218.85 60215294.56 699254.8527 14338078.9 1563454.916 151215.4798 243198.1407 532796020.4 2075520.005 176474.3954 11747075.5 1570132.484 715365.8636 3696587.878 2198676.956 48438203.25 3930719.132 7200544.253 679376.6304 29167723.76 22056715.83 9640488.308 2157953.197 14843.89719 86271676.26 72178238.1 739164.2726 21558805.31 230346.564 7271217.616 2584375.397 14803120.5 9077358.615 104395522 7607027.508 177542235.5 211482391.4 721948.5086 654358.7493 275047.3585 8011849.834 1140718.1 121581330.2 174554356.7 19743.62712 161155.8146 27249048.4 +98701064.63 42967304.47 453618.3653 70510575.13 156310.6071 37244052.47 11737797.6 36437.11164 7571230.903 1202534.908 51489757.1 5705934.796 437483.4308 3956509.517 7493128.832 676507.3065 687423.6018 841238.2619 317664.5216 30282066.9 37942006.62 3422117.131 26464975.76 130092.9186 48446072.3 3692419.863 11409538.24 1991175.399 59909.65503 77981.3635 2444839.997 3330914.669 346702.2985 243100.9655 7638136.183 24494814.48 5880.951175 264220.7506 29351862.59 16997205.69 35442969.77 23525706.63 19822296.23 94180.65952 465346.4115 5576164.453 185950766.7 66585.0151 31526414.16 31393741.41 410757.2324 1201275.398 2989916.679 10329.40201 941379.9755 19146595.12 89272045.79 216971.8129 3329233.49 65303081.16 11156118.78 23121861.77 15922264.63 178616751.5 532870.2951 22904737.41 3599130.014 20449.37624 83693854.22 634568.0434 15036915.04 1624108111 16299020.65 6453819.569 9812613.599 25186576.11 29238396.75 46057581.12 18146634.55 32945671.29 74939.70915 22877324.13 18937007.26 922422.2781 479209.5511 8844261.519 307761917.6 157316.8808 88789540.58 7952515.797 +531734.4368 28862930.37 31913527.39 487.2538489 76778998.11 850998.9715 6247.32353 1279096.256 9631133.615 17986007.13 1053158.079 3556268.664 28592439.11 25411295.03 48542.06091 18658579.07 14657840.09 465303.3165 3086442.889 11823929.42 785716.7977 19862952.93 189874.9512 144246446.4 41356846.34 70063967.62 36927521.54 70241985.75 25037540.36 46216833.15 14325784.93 5621403.637 1686801.447 7234378.604 39570790.85 133699414.4 32705630.55 5490464.913 6253679.335 60237287.55 4564010.731 2551782.115 88727473.02 2311138.15 1738164.28 33392184.07 23930491.58 54593.91225 2464.366063 95478654.83 1344.802604 15314558.55 26765777.72 31490419 673683.5168 2175905.882 28188796.55 37970.40131 1379673.438 3802159.826 2218275.965 520383.5533 57765489.54 40420957.76 43705766.16 985558.6999 66595627.37 3749177.539 3695830.267 39409095.21 6942.223004 48231966.28 3518.096606 33296636.36 149340417 1071509.067 1841.339685 2609882.189 64147682.57 11310064.21 2604195.904 5554746.47 22208573.47 12217491.57 51864732.24 59519291.27 8774243.824 14593483.1 1102561.744 6049214.893 +18256.63575 45904053.78 1727822.778 107683561.4 80305321.84 15982711.7 62972094.17 41496292.25 11284100.31 1135644.372 2646184.802 21501129.01 19363151.46 47619502.75 2566359.684 9566432.572 2569135.789 21787.03978 2756500.564 20073905.03 106175.3154 4476.388399 33713570.73 48079388.59 3422.440393 8307030.899 17755451.2 174994.9925 5502450.86 4757368.437 5035647.268 455277.7694 83140744.05 134366.1167 26462657.77 8489239.847 1061076.351 1363182.743 110667206 186548.5919 47393868.3 6378617.603 16156756.82 52683974.08 19706942.13 25815.58375 63904691.75 721645.2855 36836975.95 3941479.036 35695700.75 479403.3775 103379966.5 127162.2574 1767.092076 33267777.58 6001004.986 59352112.24 56725.81599 4372816.264 24029388.43 53423263.56 758758.8995 19353831.78 1233457.103 311608432.6 6207763.697 23273096.4 5494227.704 21633239.72 24090402.2 38612906.23 32536232.67 262960764.1 46221.82902 4479103.852 42968654.44 73212.89406 32263.32991 7351820.911 2845948.535 840636.318 70358817.69 6549227.874 75316.43659 6304185.796 2776564.692 1262100.915 13531699.88 89116933.63 +5909747.763 1205.856835 1861181.817 158980129 5184233.588 12919422.53 46993489.09 16811515.34 19649751.81 9777526.036 4744208.022 35292924.61 6958370.594 824080.2605 531325.2141 11573626.37 883510.4476 2877585.303 13230069.31 49395724.96 52685366.16 58438057.5 4529086.806 4610141.524 5753765.094 11473152.89 104319587.1 2838761.881 95307759.13 81388820.74 404990.7875 1580737.229 148620102.7 17183954.07 97247396.12 64242.11754 1431688.922 2005445.586 150.2883957 2182848.166 225721991.7 133962014.2 56012650.29 497156.5249 74099610.44 222285975.5 149497828.7 17397578.12 457912.2197 8756154.062 18874105.74 58288428.49 2717043.742 123144137.7 508731.5687 12080625.67 988988.5213 3751278.506 12619327.52 3946603.523 5824302.337 406751.2559 155416.1148 1018067.607 25991798.83 14551361.68 128245773.7 63191016.58 114472762.2 1276504.948 93662734.89 2073215.234 39987865.68 156330935.7 6522028.122 99670953.48 347229659.2 14931312.44 15946619.57 22720840.5 30515240.57 1167202.578 68131.93549 54633858.64 56901160.14 90488354.75 44129016.02 1136495.177 479169.5896 277870.0712 +36919554.25 28347280.29 5191159.924 2768563.084 27633.16544 17077645.36 25124.26066 106529.478 3347620.681 1114164.027 3609760.829 14562618.57 42730.01806 189000.9648 11121355.7 129895927.9 227398.2853 71885584.42 87638183.39 1423722.508 37813642.93 3404093.133 5028995.091 860197.997 2367576.865 94671.35333 48125062.78 50785159.57 82996355.69 21282674.29 7122678.023 628561.6703 131393.45 247123.8468 74123798.44 34981464.42 16132.82021 126.5378229 59136.77581 6204263.887 18976985.18 74143894.35 117925984.5 230377035 25884265.14 5864.575853 22944668.69 129556620.4 4370264.274 114117509.9 1424624.35 5923254.703 82790.26974 72119246.5 1970997.938 408538.2601 15605308.85 21573499.36 516945.4107 4938374.137 26217154.04 154307271.5 2900059.605 16375015.07 65998128.9 143966586.7 13206056.54 34136588.33 4051445.296 7719187.037 2985801.278 16438476.46 1478106.529 2207545.178 24926953.88 26529790.66 17344196.37 8495540.535 381842.149 14776722.68 101485.4699 17200735.84 554.8736521 20750361.07 7069308.434 407436651.9 19277960.87 47085338.56 3091458.923 65991981.86 +290078.7681 138848.5156 105099.5195 6362527.796 806639.4432 12211227.85 187629914.4 36233907.99 46024632.63 16364626.82 15936734.18 1856861.733 191020.4694 12776211.67 8305.968046 21141925.07 656282.19 43311019.36 15937423.46 22418934.94 9417.01459 25253047.11 34214141.6 3197934.848 1392263.667 72906565.18 30255487.34 5278281.269 16645510.49 8822956.518 133627962.5 9261765.456 8652.369394 27933079.57 11576173.26 9477475.168 825953.8506 2002176.056 12674972.52 19632138.47 64866.56036 11571047.01 35940578.28 1296678.057 41881606.02 28315827.3 74214690.59 5134392.861 1896541.129 185040.672 26842041.84 20673397.93 879478.1236 303106620 28289832.59 1611202.041 1091358.828 3511898.926 8182599.694 38024601.92 1599502.632 3527052.554 22001150.49 11124668.85 42283.03378 40993606.87 3889340.441 10919809.33 248650.2404 136708.1309 86168201.98 11493726.83 700464.889 28399089.55 12261480.65 28921546.46 14703447.85 88429.74995 18332286.75 813698.3235 105527.218 62379862.41 214858260.2 11036749.55 3128066.219 8923.576866 35337877.02 7483374.292 393283.4146 2385425.948 +31920704.14 8289251.762 48393272.15 1105064.158 9705736.097 12023396.72 25317497.02 2297675.163 40913148.94 2332438.499 632495.9019 51942138.12 3949463.355 75964807.63 9958943.489 3995829.623 495.5687962 114163.5478 8253465.242 168378224.2 3097542.128 23200215.98 490446.0168 9896909.758 7901878.026 2647938.373 27697534.05 581861.8346 356174.3143 51020934.44 16303448.25 13043242.82 2073943.064 10702200.62 186465865.9 5764956.485 691565.4433 235316.1884 100.9196273 8362952.427 5363658.607 551612.9541 114538238.8 9864339.157 542468.8673 25845494.37 500728.803 25572816.35 14751895.93 2730019.754 949525.3948 2825807.012 54354.02352 193879683.7 4488376.885 1656815.187 50789398.5 16130605.57 41062397.3 225404727.2 28817422.08 51270.05306 30863876 745431.4819 426141.1094 2754644.637 8140955.531 5707.784784 513925.5488 25803459.67 97139897.77 181634.0712 1064112.421 29751759.5 187657.9454 10752827.17 33625362.58 615409.5711 58207920.16 38952518.1 89508026.4 10200851.08 730133.3472 75929.52569 2438163.537 191715037 144195.6736 50118688.18 7961393.201 30158286.7 +1875284.909 792175.9997 5693463.966 52522276.72 7643.781498 1126466.681 16161246.94 2667402.836 85263.0558 13918263.3 58869631.64 946279.5514 40740829.54 88582744.95 8237585.748 308612.7895 66838883.83 93260139.6 146556.2679 17435.07823 3538602.459 4929635.339 24526688.19 32132.76361 8798789.598 526496.6207 2541161.957 31257764.23 25296374.66 10146076.18 149428626 92554324.98 1707502.485 683395.8921 227563506.9 195996.9417 64860576.56 267163.6653 1011116.911 2742817.226 2835153.183 2701115.511 86538825.94 1914725.884 684471699.2 146471858.1 67225713.61 22833166.49 29530468 27007248.82 4482487.358 12963979.26 3564874.13 25979832.25 23652587.75 718087231.5 15980380.42 5220739.475 432772.1311 65010383.99 71227.35676 2243967.264 1128116.657 4547967.353 259887.998 6528043.661 4525622.797 182767.1369 465502.9282 11946458.77 74129.11174 12555.09979 277451549.2 31056277.87 131198.308 13013733.04 29560667 117012.9691 20596235.61 8962305.157 102222825.2 429193.6346 29354952.71 21726434.43 1370480.218 4855793.589 314957.282 62654298.83 1754287.38 5164259.618 +83831442.81 65886733.52 109654539.1 345903.4995 69836563.14 13442372.49 16660330.61 70261.51108 29425403.11 750201.4041 1144.70637 4472208.424 4629177.059 470653.3748 97446250.96 234.8271002 2317944.003 15519043.11 16331080.25 5324070.344 33891.89989 51148.0508 82424707.69 5774081.267 15184.23967 20941643.38 17968842.33 594283.7195 19436360.96 463950.6967 85110.44249 155679494.8 65381017.2 114258.0221 24812041.58 8645355.876 107618340.6 44887338.06 325294.4384 157685244.6 39859200.44 7986290.902 77603931.32 44659.19518 115717602.5 77402537.82 28151410.6 6552139.696 18930337.93 108972.0887 5354214.813 69582633.12 42094229.17 14649282.82 5205708.226 202148196.3 41039790.4 643419.6287 243597876 3492127.957 103721852.3 1301009.18 85363394.55 1239693.479 171894884.3 56870109.01 151539.2885 5429.456799 7754999.373 31830.90111 34694130.64 15509407.37 10717308.93 33056644.47 4044216.966 107472.0745 88734573.69 13207146.7 64266698.46 18004057.38 10937834.8 47370.03384 25243039.66 10036549.09 15824103.03 34685428.18 18072.02911 174970.5987 62509454.51 4421909.25 +94834.18022 6055985.535 25052444.67 3900.718891 200503998.6 33600274.79 513930.1737 34680192.19 4129287.801 29514143.37 31627947.2 2355057.267 19247786.83 12713300.07 1103750.732 554543.7535 29960757.1 6500206.701 11427020.56 2467589.64 76481468.73 1830.979764 3143504.122 9459022.259 20238608.16 89170110.82 1969240.19 7047854.02 181065011.3 11210847.69 35608677.04 91028070.98 76635943.43 33233469.77 2316717.941 36949.36261 5143415.839 1087.112247 23084288.23 4742334.641 4244202.386 52496166.47 76514.19205 126427367.3 10030270.62 42673.52678 1805183.135 30482539.35 60425538.59 164670014.2 7822966.127 14835008.81 678831.4917 1215828.669 13577.36444 33693996.37 323625001.1 488736.23 1254654728 53514532.11 704510.5757 107489.482 1358437.135 421650.9895 9509.129701 43571119.62 165991123.6 22462660.93 103947005.9 59110738.87 60922443.55 9616828.796 11042093.86 7809924.435 37494047.54 6581106.836 2385670.49 110973.0118 50239637.7 670717.259 45731684.16 13385189.31 6996.914595 1202614.598 1794545.854 641107.7252 257404.2041 335644454.3 13895070.04 8969501.334 +10084657.9 2346559.614 3788141.372 2424849.932 7738995.286 226253.2169 2751230.56 11476040.01 14183991.85 1720645.715 14937832.13 49528053.34 2819.308889 39161370.2 7336816.216 14934933.85 108518382.3 189511873.1 814749.565 7167276.573 21386427.64 8311128.706 38874852.92 105613.1163 11491049.72 123072059.8 19030555.64 96096241.65 9747450.83 24345019.86 32049474.68 225617866.3 14804451.35 5353342.193 42689113.97 111668351.4 38861554.94 19769361.84 19373495.61 402543.9075 14698812.58 110421363.5 143419373 447326.4405 222843.4821 55548.26793 338594.5994 336672.7932 28711307.4 3640040.714 3708054.892 1103.172602 79.42403316 334098.357 217820.2402 2076188.058 4586735.601 21291958.22 1043866.618 7309362.4 41652368.31 18040525.15 20238017.66 50284978.93 5997124.019 720007.2808 37366567.72 8111810.457 579613.4717 4861.381506 10012.2816 462004.9028 9883150.599 13836955.41 105064368.3 302483.2973 29199078.4 78767882.12 41852123.95 94334762.26 164850386.5 6186749.32 57810026.08 20248205.73 41145750.11 126187864.3 2640554.582 12214903.01 1651023.645 52441020 +18789766.64 1056549.524 406092.4912 3179645.68 10147034.07 2795611.312 216112.1715 92639470.04 36503702.19 124808262.2 4903619.568 27471267.71 18133917.35 2992600.298 2894538.543 50617807.92 24096393.97 1017194.808 34075690.37 10157585.87 8812120.438 4250553.737 9057918.594 888346.8873 25237.14561 305135.3491 10269368.28 235022.8711 161649.5306 2591886.163 55304616.97 21925744.92 33797126.07 1289818.585 1630917.516 39102331.54 9135415.228 16696103.72 18708.79221 2584720.472 4196874.522 1537312.025 1028192.677 1639910.416 13191914.7 458420.2478 14137821.47 59895362.04 15982.38645 6369258.758 39983005.06 11299979.15 207281294.7 40076.57748 12128276.59 57427316.29 22288232.18 1171297.293 153838896.3 593891.7669 1390321.611 8056483.453 19220114.64 64893647.84 11895024.56 6418291.713 20967269.02 9084119.36 96616628.99 5038006.59 3830706.052 132249.7671 43404680.87 19029797.84 614282.1689 70820.70149 7703080.976 22666284.54 3209.054722 1416069.945 67821347.29 459304.4824 1902523.653 14722964.87 13665003.5 78305.40822 31156772.04 11066644.2 293166.3811 22892908.8 +21337456.86 68889555.97 483425.19 7198378.795 10515120.85 407240.0565 4537281.759 6267037.185 63286.57594 642399.6686 10587.47298 81872352.26 50869159.25 1721022.183 537939.7792 75168.24966 85148.14154 2548708.072 97106994.98 15074579.56 44244993.14 622724.781 3189987.654 57962.57438 392335.8938 27605436.96 25122023.42 4176973.706 68825372.63 36307581.47 883991.8154 82711473.88 75113010.16 42528123.91 247392.8961 106851289.2 27627955.89 27663.36869 24353760.04 4346347.708 15583897.15 5212177.315 40993371.51 541464.1444 7308884.903 27537017.82 31912630.54 13630549.92 3874.320311 4766248.524 24220252.99 23487808.24 24555395.52 285904.1763 55268.75502 25577500.14 32957111.4 4118318.525 16916476.71 9132920.164 4420604.95 15434544.13 20383.81429 47851304.02 25064.03874 1054889.123 217478.0136 107452512.8 15517062.77 21663173.67 3405287.751 4649338.163 116755570.6 11685635.83 524443.6807 323245.5395 37112247.51 12129620.77 51663489.78 6530889.069 9386305.874 10491057.49 14368837.58 979241.2339 5431180.268 60094255.56 513165.466 7604654.855 66583979.9 1534243.24 +8007416.778 2266988.765 2053051.871 405781.2589 66519508.33 11350469.25 1776648.99 5612937.231 12939049.35 36185181.56 12349664.88 3496223.117 56444.41519 36377.72121 33652518.58 3226812.856 33803267.02 92217576.64 229522086.1 271229.3682 21433570.77 75394637.92 54025448.78 118415710.8 24248949.38 3027263.519 194287.6681 35365075.6 323617.2389 152168.1185 36935.81256 24671536.53 31270272.64 611773.4247 85161867.82 1113993.255 56223751.49 64444317.43 20481806.47 87252840.33 34866587.01 36162003.8 282232.4981 31994353.06 268437119.1 83767602.82 35126996.42 5689055.852 35674080.81 3577132.371 353.5052014 52838235.75 37302743.12 591888.5419 15511604.66 4510919.357 1884479.207 3409373.905 911361.7455 253269.5284 617446.4694 84293016.61 15192359.7 19285798.62 9185226.791 63246449.75 71659663.99 533188.1283 917722.5707 55928575.41 49319462.1 7446589.33 3789322.293 24149042 186991614.4 127604.6384 21250152.08 849348.043 1561601.626 104668.1207 20858093.56 7383736.955 47839918.1 18898825.21 25318706.21 138716181.5 10055564.12 28184735.53 10976936.16 21861132.81 +# Errors [PSD_cut/PSD_cut.dat] I_err: +22217618.81 109583595.9 4278145.951 51312630.47 1713.6304 47718948.57 2755418.779 132233.2574 7991167.31 6295164.498 10043622.43 22722210.8 739218.8783 2852079.835 4530310.065 21976625.41 165805.4357 17971716.62 132299.1208 6430869.794 494871.1452 2652552.203 34425741.11 15324155.99 32805445.3 5627706.506 6237.008609 20064857.74 39622224.27 7937858.456 47387878.18 8252122.034 101546325.9 21320488.74 2992061.291 271832.0698 26066732.91 14027090.62 1356490.772 4608.188779 4648801.675 1923340.317 32459199.23 39358206.01 23732706.98 47184631.91 13263492.52 40553226.95 4949221.392 3607809.016 42773495.42 15116205.52 50741955.69 83806089.92 18313291.7 7413908.737 595081.9754 651824.0066 693412.3637 1156872.759 117893116.7 16887460.92 8285574.842 102924.2846 470349.8913 47205075.14 5671524.13 50013896.87 0.3062592164 45515318.14 48365224.22 26587749.68 35853893.12 1908538.762 29012077.69 1115966.037 44717612.2 13980112.21 3347920.219 51129.95152 52159305.34 60871956.09 443762.6946 19483736.8 26628814.64 20333173.73 28866701.72 1384453.287 972746.7087 6789844.29 +11579699.91 100716.1217 83697.72336 11622908.16 19462945.34 29621851.92 2109589.511 34359009.06 16750471.07 59541505.28 96707269.09 14091513.79 8388995.505 94002990.87 1673134.446 542461.4191 15456697.49 94773.73736 12599664.06 38814347.21 40100075.18 12401195.54 10653.34327 13904708.24 5966994.031 10357243.32 547.1525673 1377154.454 10305385.04 15124962.08 28150.70826 4496273.879 20982089.09 3400257.222 6373719.688 79524839.64 22530230.45 72963062.52 901730.5009 138893561.7 39651409.85 156814992.4 182046508.4 10696188.29 42419.72499 9214781.004 32319849.39 18529838.82 70393971.13 10146037.06 16576974.12 1028656.899 9664.998604 3871999.186 18010295.27 17255.88308 10228169.5 9044.681333 15176900.93 782400.0463 22220089.43 17249646.15 1821089.175 786028.4564 7907778.93 15387864.6 11182876.6 194691.9348 3506869.539 29494288.1 13646.51195 7222865.75 37764142.76 91342423.8 17302017.76 15729537.63 49148037.34 8755410.939 300145.8424 50235604.56 44944215.89 9962577.101 8305274.903 33633961.26 71716.17046 200937.2413 18014642.35 49941414.66 3727365.848 21314132.45 +191435541.7 53889317.62 16047992.74 8860.073693 437783.7864 6690477.442 21082111.76 250687005.9 22337721.18 190437.3228 21690082.94 279305430.9 2020988.211 32411376.29 20398166.79 24896373.36 7911447.299 17303980.17 5232243.553 1194468.486 11573997.23 18508532.36 13963647.54 1462853.377 44552900.66 6140107.771 178684.9639 6993956.546 4746801.879 10082458.06 2501887.303 1665.253153 1820167.823 1145685.845 12603642.22 2858405.367 3511552.779 128289724.2 28417872.09 2484707276 9613764.419 24242589.62 39436105.57 546.62387 8242031.745 4331382.512 1024240.47 7763207.59 16971122.6 48222224.49 8367292.173 2214638.773 111692159.6 121450091.2 26237659 30548211.79 2605.371215 112522179.2 57896973.68 12399129.64 32298.17129 7245080.743 3209665.339 16040516.62 2708.351405 54978195.03 24827383.34 663255263.5 2277314.855 1072522.11 2380900392 898.5530708 29024.88304 88388294.82 4346250.704 732892.0146 49625670.67 50993799 86844240.83 71765601.11 49224572.4 156042.1723 35549118.02 981174.0445 7750015.125 130015.8434 7864868.037 2619514.308 82031.27892 13457.14337 +2276874.54 9626525.991 273645580.3 24807.35746 59518152.86 68914226.47 5297001.107 64926919.52 2586349.116 7031527.58 24025742.89 5704572.829 998377.0909 23517683.34 3714506.075 4767996.958 55160757.51 171608.3717 2050982.532 7194166.028 54551014.13 460651.2746 21391337.26 8536318.751 7723081.782 171805932.9 3193168.474 230237.2463 18687001.36 619519.7696 25005.53302 16254850.04 10519178.34 47426086.65 16412.21611 273580.9773 12893372.25 11096426.71 8455369.787 39406490.19 38844347.81 3682021.901 4241760.463 15010371.33 27737822.26 6570586.928 32991306.53 488749.4153 8805668.658 32789861.3 146868.9002 12247689.2 4528395.494 107405518.6 1398402.367 152029.9981 1143105.134 5417.252525 10380514.95 88539198.28 19010.31318 58867629.16 128754.7204 70932.15311 636682.3353 37447603.53 109873.1793 4218587.294 4948403.21 73075076.02 48445342.32 30999070.86 19410070.35 1064.236595 13396808.15 9305626.634 814506.29 27684291.81 85310.81588 8909175.346 1781274.964 1865157.163 115278.4054 5727097.008 10401.8799 30002.71411 41869786.22 11168049.24 7068532.141 4957981.443 +3661376.477 216648.3292 3116340.364 4896949.405 1966428.711 18880324.3 21401895.91 16787036.73 15459553.95 505449.232 29741.9805 20112544.98 6692210.801 74474975.56 13826798.5 1714910.457 332.5776539 12335285.29 128542189.7 2510617.456 23751783.41 3462166.044 17182797.16 48907628.51 7981632.754 783.3942357 3698856.02 1465812.424 349000.6195 48978431.18 34663089.1 2028148.861 6370788.854 10113679 7405890.054 39978776.06 4166656.661 13347793.76 6636878.101 79483.66452 46523888.14 3486476.494 7000.178104 4408258.259 30992596.11 129431917.1 3308312.585 92430.53643 1861472.252 10234.77818 41893871.44 3977823.35 5937784.121 2481132.061 3820823.84 10120014.68 2524037.638 1669083.354 581999030.8 32156554.89 2030184.676 15275045.39 533698.8413 298693.7142 2476538.19 5553526.814 8395.306684 419987.5704 185452.5773 1417416.935 18590365.01 2520599.316 140720.0145 12117114.76 14121942.98 26074511.81 2283828.004 2883269.209 67892780.58 2575511.193 12540579.45 144803249.1 857.2277626 133880411.7 7741537.284 1109631.953 42825869.33 628876.2367 13965176.36 109514651.6 +601677.7797 2758578.222 207722103 4411265.352 16719775.23 3642339.433 43213666.48 71076700.74 17622.37852 2194060.518 3951304.518 4061819.426 410587384.3 393441.5798 1690299.031 510608.6517 79932561.02 18590268.25 9472445.443 25524034.62 9645879.108 4600360.529 5471291.976 56494.58167 10038440.57 14057669.12 1458876.935 11127329.24 264798.4409 9018.974166 30363.61667 281902.2603 192475023.5 13837322.02 49937217.08 667456.5539 240797.7891 28887220.34 565576.7879 7605543.26 12463579.96 9108571.641 511.3887204 3006831.049 6182161.034 29549090.69 44738160 1943864.511 808689.4168 3902250.794 14266467.18 46298122.96 12621439.21 1716102.119 29093555.62 8747928.366 8314907.791 45902642.35 30042793.61 195.0158723 22586595.33 780807.3194 9439042.329 526371.6522 41396731.26 5637422.149 55113854.67 8479359.943 2602480.768 6493314.633 575546.4198 10396718.24 12301228.19 75901.41657 298737.6894 28339548.54 716572.4073 49299287.94 3369073.164 2560937.23 63334.10888 22364337.65 3181435.735 2632.401748 5752059.373 22966.25428 15205.44155 73044959.26 10738217.16 2211473.111 +276854873 21863181.32 306756.453 34230131.36 634608.8342 63579.93102 41157221.91 49251384.27 6051815.054 144442464.1 65849666.24 68807545.06 6842970.345 30653628.64 4945434.227 203626964.3 194881.8722 26267558.96 81896948.14 3968.732314 3952789.98 22472806.83 64057955.26 12790385.3 15696808.79 1198726.226 13515634.64 5521043.448 5482270.379 2558664.493 311016.2419 14920382.54 866158.3667 12976846.27 2955707.451 782.8390075 29368125.57 15161501.34 1158546.645 586677.3267 1407675.953 4980824.346 31679370.23 18232944.08 13990056.35 38399664.08 45049663.81 24181619.71 60850.93677 967.0994925 17854640.42 61850039.14 27912493.41 24835580.63 19053.72132 12683130.46 4241781.271 12882592.34 409283.9914 76986326.2 53215501.08 8612.686253 1528852.572 88902206.5 224079.7021 5826441.183 283376.1358 115597.9458 632594.1757 12754.90347 787.7754881 44014.36577 20302392.2 39508356.3 15836081.96 14488.29688 3861717.647 3304576.859 499324.5549 6879638.047 23922303.32 5229006.631 1854547.162 81929883.7 511.0823817 2480.41848 86355259.39 38526199.18 1802998.534 102725.3839 +53524.38064 15565144.6 72688100.83 374727.2135 452906.003 9029.610735 8930.441592 24312215.82 397996.1492 275695.0012 2675225.526 39839920.29 9669310.822 521386.9404 2975105.316 1762491.576 5834401.681 27.14612347 39936487.66 23973362.03 78745419.54 10496785.84 2478884.346 12169076.23 3738388.564 23020312.45 17700906.72 626811.1815 23513910.87 838785.9797 3168589.739 2688031.326 57624544.7 117187344.7 1935041.952 10571695.3 6907466.359 1175899.348 8756006.566 13560012.53 940574.0226 736529.5574 27581.01564 5650395.305 2293192.196 9799166.616 24116126.9 9781528.497 143787.3832 4485.986876 58295339.72 7971451.617 72234.42426 44505050.6 5788844.565 12909627.89 11073726.68 968907.3587 16646711.42 7124778.775 356.253867 3128146.06 138156.0563 250380.4737 23223451.36 17641.48993 9074563.32 206292.4297 23540678.6 3825594.166 44773296.15 1202967.762 118271745.8 7293492.159 254695.8631 15624611.12 5756947.047 9375816.783 13121630.35 18985.97722 1521535.893 45264139.87 2488235.804 39927199.61 4617647.667 33785461.75 405035.3691 23045834.68 141634.9584 8322886.958 +398682.3329 1674047.089 453389.481 10961412.86 4704414.908 223187.2973 6829137.614 3274890.18 9427699.303 16825772.15 16096.31991 2826446.08 1844290.763 59056806.98 87315816.61 51384031.78 3965087.96 981795.9474 112363426.9 344082.2999 22528983.99 62544913.55 37446742.47 350698.54 222186.628 5357220.752 110631401.9 21690568.69 10931879.2 842955.2186 418873.8568 88099130.26 2186042.405 4954357.831 697718.4199 12293793.03 24579905.88 10921352.48 13122680.19 1116433.261 240321.2308 46052292.63 25944334.51 7864478.8 8973575.479 4700959.406 3673899.103 30896112.67 13869211.88 2237363.623 934880.9778 92943981.04 12794325.28 13124276.31 1838095.63 1306592.18 9310958.672 2557284.394 70521293.26 243749.2198 181664.355 13461072.99 27490811.44 2160874.125 115469.5236 96279926.78 32795205.27 7910942.064 384396.1342 1244486.059 28849773.25 256.0023026 3406004.225 35193827.91 37628.59138 114759568.5 8462.758459 11234645.18 14268695.01 17048525.93 327043608.1 32484255.61 7129892.306 21963472.9 719503.3243 3677.015757 508956.3011 11779000.21 21936650.12 8203611.298 +21074969.98 1448515.625 105446229.2 45268274.3 2038003.361 859748.3348 17485683.37 5717340.642 13197232.94 33308.5368 61678004.02 518368.4555 13014757.89 35925540.04 16527882.2 2214725.084 33812891.78 226452.7087 18318837.48 610955.6936 11008624.28 12307497.78 87969741.73 83245200.53 38831850.16 1748112.266 17615346.66 24465.16189 1979.269755 13837828.99 553433.2457 14199497.94 144753.2518 361874.3442 837.3178196 7727485.842 7428007.539 502942.8605 15287347.71 769369.3062 239151.7198 211203.8092 44802946.74 44663231.42 271449.8259 127616.7016 2023904.785 64854674.25 163130941.4 623938.2553 6520218.555 92274750.35 93419930.37 27628776.09 67526529.66 17689496.21 50763426.07 5886692.764 63663909.33 1510783.24 1636091.837 2119582.442 2954410.97 1151603.922 1932460.192 18430097.89 12140536.05 48134016.43 18749223.25 5544737.787 78201725.89 32643430.59 15668124.34 5858774.813 511115.1356 1736396.149 2326924.494 2.115556848 4145258.834 3853.611042 35273580.16 2532387.74 57460427.02 154431.9456 7445733.296 360804.2096 153416720.7 15011023.09 38661640.76 259225076.7 +17347.92757 3978310.022 2206699.69 26141725.05 177325.7086 170014.6492 16643174.16 48751136.54 66751.79464 39416549.73 3331135.819 21635031.62 20792070.79 83869355.28 8369018.288 8696349.253 70250.89352 2027.232992 8908116.981 96926615.53 1348594.073 2980258.965 12839715.22 27276603.11 12548444.78 64371278.74 1369240.706 88003122.89 27824346.12 45408894.93 4619750.836 6374900.086 8122503.026 6154054.612 48677459.97 327024.771 6334383.968 3986495.764 2996.869376 68288595.48 43654806.25 13426828.48 20328.41628 18362665.73 36256705.51 4858660.429 76972.34322 29917717.91 11509268.34 21671965.99 371144.1533 4107697.75 138734672.9 152163.5201 2028091.641 11170603.2 54018741.24 7007223.418 6330873.494 54004356.8 2484649.922 66874671.84 487532.0499 12063122.94 45623588.24 4206130.806 6216559.824 20626943.66 55525.55254 2094184.814 3146590.187 116718235.3 28937572.54 25680552.38 7358958.045 19891374.72 12804011.04 6369269.904 3360574.31 5188599.675 27337697.29 287456717.4 21243624.59 36298068.96 93576.75834 478843906.8 11840277.21 1031445.676 11415577.23 14904371.58 +21551990.59 47.43612728 1305148.47 925.545898 49923351.19 7681336.854 29210052.83 6863642.573 4700291.829 7834251.121 47741646.96 120402.9282 450161.1715 643157.9517 96523615.09 189872998 8480824.53 10591768.31 37171939.93 421087.3096 1263.82567 120265565.7 19824.69538 664.7812101 1162695.191 53476702.47 2493.667055 23196634.87 12608902.1 670308.5256 13536308.29 26160819 299646.3754 40210164.83 1675931.115 1490325.073 10223730.12 49847.52196 1470535.937 80657860.65 165127.6001 33102.88402 1618269.947 8082042.813 13041016.33 34352031.86 62368242.17 2408481.851 11650032.51 9121225.402 266911468.2 5325863.753 45215.93484 36843684.89 2995456.768 18250992.28 472847.8753 113022.867 4152920.31 5266140.282 284104.5546 39480720.86 2265016.623 134542148.6 1074728.085 9056328.932 19784478.86 4114871.913 53014171.94 24979579.07 22541290.02 10585450.41 597596.9499 5398558.835 95757.47362 11375554.68 1735235.356 692883.2823 20223910.17 10128.04621 3149589.586 12521106.19 2112756.379 1698360.479 57554170.98 7671947.166 33920985.32 524384.0489 1405360.793 35561045.97 +636.668815 33521726.49 6887337.5 117603.7514 14273684.27 6704939.196 35552933.74 42491022.26 97097918.2 8420163.435 387595.1701 1612352.079 156731.1386 8273901.011 1317307.488 4901080.688 3410.605583 11478963.67 216.4449608 9420.854831 45999007.04 1634410.065 2950913.147 14818393.2 25900368.19 95945314.01 310025.9625 12620721.88 610631.8236 487622.3643 30847945.27 42210755.87 5840494.956 5989513.361 21579997.66 1038056.742 5755369.122 6565446.036 114619.7393 100861.8563 9094925.823 5629287.904 26082061.47 1428943.319 750994.9848 376910.3062 4762510.146 43626503.72 14826956.5 29155210.57 110711648.4 149909161.3 17351376.44 125.7378462 1531.745915 111137707.8 33475030.05 22941382.14 40591063.64 311404.9919 14847528.11 601371.4971 18568880.69 60521969.02 22036421.96 1987368.498 33599.8505 71799856.4 20750838.4 31267014.29 71.10738766 28376969.26 892241.2483 11418909.59 1911709.989 2925926.188 5806522.518 3232.171651 5462.631925 643738.2337 21705108.35 41442123.63 327755.9577 151156.2431 38612795.29 206079.3826 250147.351 68961028.21 93883.5395 28221796.27 +96610.45438 3491544.302 20782091.05 9008451.8 59844816.43 9884446.595 55090068.29 365853.0441 56498021.84 5103780.69 4782548.411 243503.7773 52757071.63 228443.5671 54890080.49 417273005.6 266464.375 9225676.419 2944125.778 6326251.152 4089868.418 14087944.54 7805586.413 29417931.55 5590662.547 678554.4594 383607.704 52801059.18 1238.540751 14039701.04 12215641.23 50706.54782 77128481.16 92093782.43 67679374.74 259583464.9 11800349.4 42117909.41 59672.9861 1768677.884 8661306.481 10513031.72 20995768.01 27161236.73 14945750.54 24482322.07 4054875.437 5248.574265 3228450.5 32356051.73 380056.8802 23606585.33 5472307.342 4019859.079 4581629.576 516354.091 593849.7181 6503784.646 9684265.721 7165729.38 531155.3499 6631359.866 1729515.255 8468034.449 397.1262603 2625680.115 1544222.747 586.1621281 985849.5282 7467205.617 4345308.373 10689068.37 12758708.31 83563801.69 1500258.435 7220784.787 69837252.58 584331.1008 6965.190173 11192840.1 66643052.23 184498066.8 48493888.51 21579657.44 67663090.05 42160885.94 2139264.669 345350.5033 3483739.986 1343648.04 +280875.5854 11618049.65 12780150.08 25837005.61 10230567.42 23456538.59 41140089.04 45389.22004 2341.828416 6458477.24 16779405.69 162399941.7 14959399.37 14929578.65 18369342.89 150262.522 39288984.39 6368723.433 7999650.294 56889799.14 167136.8157 107073574.3 2129535.971 83935641.79 19146917.24 28991259.35 411266952.5 27785340.88 2548360.438 35561903.37 57760709.78 48644534.97 57923125.13 16019918.46 35085645.43 6879999.47 3005214.806 33042172.32 101367638.6 1362489.992 27593854.66 4867975.918 69931793.41 139631.3921 1892876.826 715.5268656 941642.2947 21495783.64 15762446.65 2453304.64 22883522.65 28125.86912 28451909.58 2740447.749 85173032.76 32696717.62 16973.76608 920170.6731 53015772.13 472328.324 5240685.869 1174270.55 3345.907018 30538967.16 4085983.105 4082101.531 142573.2102 15942403.4 50991310.68 374382.4053 187377.2212 1692482.754 25814935.86 19876821.39 1125528.246 12728259.82 128858561.6 9670.336194 6500968.075 1174614.9 49649098.08 2205.17719 2916768.823 90343715.5 5874497.272 23730132.48 14107951.62 7182289.309 43209240.22 702456.6808 +87100038.82 16381887.07 42858044.04 25874302.59 44839848 3391124.683 385350.5959 1362385.68 43401737.4 20866006.84 4115168.781 326651.6134 42221791.62 1669001.055 977376.5664 1790907.098 3809290.747 29045642.89 920999.3719 7137453.244 32173720.24 301086.5212 2087689.903 3848431 41910400.59 12947682.52 11000.9956 609024.0802 19960075.08 16560011.25 75183.20186 4540766.885 3197959.558 12064522.71 6250970.575 42638229.09 19709803.34 28256.44415 102916.5132 1230810.536 252105.9885 2693327.678 155680.2036 7951379.398 41263140.87 7759110.95 15671960.94 2655536.166 67014417 30432795.77 14306832.54 2753972.738 34314333.41 101897570.1 12262411.97 445217.515 328511.9841 71719738.47 35447250.51 58577876.26 1170599.307 6084406.087 2940759.748 2828535.166 17327.02152 31942191.94 9397822.426 14620028.8 8387.451762 84942.61141 10388730.71 14122388.96 14433379.01 45041978.41 58403.12606 1011598.367 11540302.14 153574127.9 193077.868 2917.232915 2876584.694 16785275.29 18582691.49 15679835.57 6989530.374 67493429.13 234523172.7 4054942.991 27788.53878 84740620.77 +728361.8658 17226.10595 947665.0858 37943668.96 7380772.44 32074463.94 842609.1614 2934676.621 72835654.85 49648568.16 22190760.96 18687823.25 6495338.133 12420780.05 2253242.7 5436048.491 447398.1818 3604475.997 55173266.67 8981138.723 38955659.4 2495082.725 4542989.838 108453974.4 10836125.37 1471437.414 51741347.41 4630001.008 14782929.36 20429049.02 15513176.66 6199.807225 24277.42992 16622512.29 4672400.741 7015265.224 3646.442555 35278.46656 229621.2296 69323165.97 1743803.405 6091570.252 29254570.41 58414991.59 107470069.6 164097.5503 6833750.206 3272051.372 48377532.2 42139047.86 4555626.509 126105723.9 94522015.89 10463.95266 85522390.23 760114.6071 20725039.45 34064699.17 9470593.578 50657401.51 133491.762 2788589.826 5429838.454 4638109.531 42375238.52 19640149.38 30925674.84 4378204.003 4504673.992 7882330.244 11908674.25 1584415.743 594850170.1 5800512.685 6989864.811 710676.922 26710433.16 5902385.743 98012890.32 853235.3836 3397063.224 12899925.08 1266218.805 14480610.69 49017632.41 92792333.2 4979728.279 51917721.69 5344279.46 1754843.875 +1831336.688 20895799.79 24101411.36 3063064.892 1153998.804 756.5844191 31716.42273 44690999.37 128029423.7 56087731.25 4501189.24 44557171.02 3971845.5 2500522.63 7136339.696 3288363.39 1286406.399 28121034.74 4877670.716 168790.6465 47559032.9 23924142.71 37111796.62 45281503.1 8261304.814 38281634.53 15835621.3 9067575.969 804527.6861 3912819.668 48937628.28 2645108.174 131980300 5764970.745 27408821.24 10227219.39 5255.459973 12630694.47 12598132.74 25598337.52 467409.8028 148840824 23995761.61 296104.7902 7340546.117 1363396.133 11286195.73 2375602.866 1173816.149 1453930.703 5791030.664 32118.45432 26979423.89 1074093.008 30794713.3 28313084.32 17834905.94 162655.6422 23615983.06 9065700.87 40183.29884 1285264.028 4199901.225 152403248.4 146813.231 52776962.36 1481422.984 2839894.687 63189210.29 6169773.508 7254555.566 9674438.512 20026577.1 1536375.365 10706.18472 68158051.75 28997916.22 1200062.928 19774906.21 5962158.618 29510548.78 83431.57314 1895947.948 542650.8044 7369660.633 2321089.806 36617749.66 4607584.759 1499281.134 725514.1933 +5761301.689 12533851.35 63495287.19 21106214.49 749403.5368 95794.71541 9990970.992 49945449.26 99029.08805 1544597.186 3721688.309 26651133.47 209229.5717 157986.7067 47362194.77 28938047.74 58347375.86 269980.2243 916508.3279 3076056.403 120962526.5 4504958.827 654.3387925 51100972.46 3783663.271 337587.6723 10999664.43 605872.0494 29643561.58 12683737.15 192860.6384 43466525.75 15061003.02 36419170.46 7698405.097 34571.38995 12357110.66 32054633.12 32812127.25 27199427.31 13555750.11 8752003.822 18074493.67 5314001.855 16062086.79 30937.88766 581420.7558 5371.904654 6969359.187 303749.2767 28899683.91 10644572.86 15215491.99 27568045.31 19444392.33 4622681.936 13706224.85 2088282.903 1313306.588 711478.8088 19884733.14 1043933.657 451388.3741 601402.1034 31016949.71 5508913.44 338630.4159 221787.0197 11070617.73 55382688.37 2373814.228 66483.2441 12182754.9 1954604.467 6389929.016 50386950.23 5705.227225 503578.0454 16647453.83 39753472.61 39099505.82 394121.4802 27885878.43 9437264.955 6410400.299 1411143.203 5986821.356 16298624.13 1465156.588 100182472.1 +177328041.3 10964260.61 16511428.49 572083.4212 3994081.362 19890253.57 31588778.51 17790256.84 6280512.164 9353923.191 36780638.05 161146.1276 52662808.24 6197553.639 103256579.3 5325637.142 708180.0349 76336057 17819176.42 23364.32434 309941.0569 91726.03289 73141.71978 2275434.168 174734612.7 24336324.72 29868505.85 34341.07109 113392749.9 7217846.181 13324598.32 104385542 2115288.277 582686.0406 262767.2194 83937829.29 85022.80289 2998089.524 2165175.157 9369012.2 2103798.558 2310404.71 100490.2766 4197.065696 41637.26151 20716738.07 25015318.73 7113572.758 28264.42682 11653110.79 9877609.483 1463101.475 30024437.43 25120526.93 46005487.81 7222361.783 1537709.738 765303.1673 129962744.7 952752.2975 24705954.27 8241239.614 2766721.892 39327873.98 2227138.139 4974752.463 466388.0145 9568931.511 5759689.024 12176257.06 144443917.3 20797761.15 178332.563 1406320.153 706694.2263 979571.8588 2604235.35 1351249.931 41945904.04 105497.66 3883020.933 4221.352929 17380834.4 59196.99702 972987.8606 6521.439024 37167076.87 1685016.082 330513.7151 10736337.46 +81617898.23 59309.2713 9670537.519 39244.44935 1086319.484 31845221.92 1251979.653 22160613.04 18573498.5 12236791.75 10162903.8 2246297.089 6007157.108 3577982.773 15837621.95 36615.57825 27113965.95 39197379.52 98331458.53 93799484.41 354250.5115 4229542.937 13239960.87 54357124.82 1658418.452 10259186.85 704108341 63317920.32 29820953.92 2849777.939 32859569.28 2801997.597 154502.4825 637746.4014 14910522.03 23407762.44 10411418.86 1834610.818 36801.48707 35045756.42 69850651.77 31469170.09 535835.9189 19493519.02 962572.5984 8262963.454 1605871.709 51589247.38 6385550.733 117908.0867 37594.8842 540817.2839 8200344.381 67529908.86 1058772.746 31573872.54 26824629.26 10338425.05 196022.9483 34743793.1 15130702.76 28924.37384 19062958.41 2145.519499 19763219.06 19264610.04 7360.007771 2012301.526 9582401.502 11687268.69 6659.821148 264907.0707 134051.2203 29647497.35 5175080.249 30487.96709 514705.6641 18305689.71 77089090.88 24727676.04 69271147.05 185423.9465 599859.9321 169576116 51305694.04 941271.6983 10649877.34 126901959.9 733592.7088 148941.7112 +23056153.45 47225.66677 103261.3205 874008.3455 4620176.988 88249.60503 524689.9718 782070.3205 12760424.98 3655731.07 70831935.31 419541.7768 104852410 1069481.245 335513.8749 21614157.69 7106.974248 13387842.69 16574394.76 60395308.16 131833537.6 11431.92669 7458.823669 3594177.836 48679.44052 23329497.68 27941417.99 10282238.59 26858433.09 25738903.73 37470450.8 17771887.43 108229141.5 9303559.22 8445326.279 11092349.01 1736273.149 447576.9993 1114477.388 12593752.99 135379979.4 158154.507 24616.48101 26178.61199 29105660.91 168271.4964 14288871.65 16023038.93 10350447.11 68398.75354 793217.0341 138225.8425 6475087.152 21701603.9 67264311.43 22245.15546 11864080.3 27422196.34 2671558.244 154327.9524 18328523.72 24028278.66 154007.0298 69184270.19 26103193.73 6309096.654 16400096.5 2875772.92 15689321.47 4623015.385 39000800.98 56233576.02 24926620.15 147644460.5 35839779.82 10182.99659 5660.739293 111614.061 159215805.7 12533.7829 74437787.86 32981605.65 45893125.7 5797184.178 341712.2341 30704612.54 72073880.56 376638.2199 58148.84788 3461019.179 +18814952.48 324136.1219 20913987.4 31094698.6 3237296.685 15915528.42 44085.32101 132008268.2 18234103.04 6072091.745 1061531.639 21358604.21 17158546.66 12027981.14 555718.9494 690206.3768 14663868.08 5693413.938 42436.25653 5535765.124 7125570.09 884.0194837 1224.478715 103573860.4 19065294.71 25584.94716 32997402.07 79177967.94 14.79404946 856946.0246 24331266.37 4255584.677 662.6249831 4311836.28 6728369.861 66985455.97 19516423.08 127127420.4 1037486.373 168449.427 94364647.11 74196260.55 37825423.57 55501552.76 25864620.73 15906223.28 289856672.5 38333851.98 44128158.21 4336792.148 103325514.8 1317114.088 3551775.276 60983965.28 115815543.2 920112.6977 33706255.27 12670830.33 2004368.288 678572.3016 33896701.12 78235064.64 97.91381286 51247925.39 270779.7931 1006148.137 79102664.12 361434.2501 12113064.31 139302.3215 82998269.46 22366451.29 4146536.719 66424.51429 36969498.17 11996046.84 224265.9212 47711928.77 680147.4305 78955544.77 6234118.92 42494626.16 63270434.28 47969.64639 1410024.113 6036696.489 8399016.897 9471542.376 247026879.1 7715484.005 +4003.286322 1301801.306 50783113.2 603142.7398 15313823.82 132509.7262 4761863.387 1011770.4 3642544.896 43104811.07 1500806.477 29095325.98 17646320.24 74357334.14 927361.2562 40201465.8 47893635.54 4504269.029 82264629.5 11450195.85 61878141.13 1859291.73 6614777.071 22171.25714 19617111.1 4185554.67 97757534.57 46241.05889 9661461.06 1086747.916 11778754.85 1657710.616 9170945.188 3878861.104 8683562.342 5164637.972 186506.17 6187771.335 2350899.228 1445241.661 9021659.159 4881505.555 10202778 66358274.58 89327352.24 147771.4045 9793633.419 5007570.791 14571960.94 749265.185 80132475.22 77438.46623 1946171.423 115549.5854 14360456.06 33199633.87 14449836.84 379083.7461 29357599.38 8868924.624 159428.7482 1081484.107 299323.4514 858733.6599 116754026.9 51627651.94 8410248.223 792419.9907 1543199.87 16748864.9 46585225.56 26894186.74 66298922.01 5155571.655 2096.2614 740.1453074 88931381 261898579.3 7732288.73 20584818.63 4805.708754 2911890.646 38141612.89 26740017.25 6548241.099 1078575.042 11749180.81 54805546.37 21246096.91 535220.3735 +73220.44275 206952.5569 36165625.34 1086933.444 12917984.54 1741582.067 61720184.22 6541311.619 7803898.93 2444103.365 28756539.95 28436403.9 605704.6189 15023751.61 1540.168673 20790591.64 5363297.29 33178.91313 729155.56 36242743.94 9318112.125 49126114.86 170387672.9 2570.769674 1718296.005 79053618.35 18380762.98 4766028.013 50980953.33 2097325.018 3010.892106 817507.7071 83082595.75 20972160.67 100253708.2 151490091.5 77028042.69 3001204.624 6984701.59 58155750.34 5281915.056 1848257.14 6939887.159 4057912.13 146.0790734 1061466074 44964791.93 32227741.28 34355322.7 69329918.88 392804.0622 10365621.48 4745197.463 16805.70791 3415659.768 7439314.774 5565599.244 2833334.287 22827468.14 50794160.81 12425443.37 1210118.097 32227873.03 612010.6889 12623079.32 68707916.85 424801.5773 36531628.16 14086956.53 117906.1389 106997365.2 3834283.472 34609541.2 31115117.98 1367265.63 7307612.643 65345658.17 53819.99975 68725087.55 922503.1902 37804399.49 24120.455 393986.6783 36050728.99 8924429.113 13674799.79 5042524.356 3199778.222 54792438.09 167098550.9 +4430640.169 35103809.71 2797200.87 28883716.96 10038896.68 1622707.417 3482795.936 10106174.38 62191.78342 949662.9353 24168672.15 470397.9822 128470317.8 5279503.499 63221.22355 136.6557229 60566.6381 46376503.57 10460494.33 16185265.57 12035216.29 6877352.509 20068.5403 3072332.388 2602009.893 40657.77233 29549092.51 6510222.453 19551412.4 5763476.097 28804909.05 23813518.91 268350.0734 1496414.684 18964182.5 5995.262696 68707045.31 872774.3826 9980642.189 26947138.16 7702628.733 938741.4863 7520.761608 4528399.73 265407.0508 17620464.8 2818099.559 79391657.78 41221233.7 29318382.99 2695048.582 58567554.22 8364238.265 12319064.64 26176384.18 216.2831004 6823580.872 10071966.8 44335.1026 11314866.63 26583821.08 6220.030862 195348675.8 5635916.576 31379119.95 192151578.8 2019017.746 5837093.081 3346405.154 42666.67814 3228868.388 833044.2206 443839.3727 1491555.807 24086011.59 10844687.4 3108839.008 15999234.4 208579.0224 5490654.787 31888456.09 16879070.73 47907492.44 488244.9249 30795334.72 22601276.94 28409185.91 436369.6881 7592558.2 14006619.82 +128516914.1 6153229.656 2626192.548 4168759.056 1056430.259 23346527.74 561817.0787 231236237.7 2310167.432 30071708.61 48115.6375 15186228.02 92549168.95 15369937.44 28490347.21 7268614.276 10722611.85 118432419.7 30206388.66 4955712.531 23845962.12 1311459.68 5725525.576 14095841.98 1812485.693 6223843.983 30346004.64 5971267.796 19409088.02 262443.7247 41112200.1 5548673.29 61281986.48 75266.85926 2427.776345 61427470.7 18553237.43 717733.2955 135011.6648 14526551.41 53642493.1 28355296.65 757762.3169 120481.2443 46787753.33 14041393.57 357844524.7 195.8007896 33798686.23 11839874.04 37559857.82 60685.02272 29450532.85 1773.486438 39553488.12 1761.670804 12890206.11 14070281.77 115519.74 862966.0218 21167493.74 30226480.16 5196756.585 57880513.17 44906527.86 2059.744156 6285308.67 2622.998513 21135625.72 11804120.38 55032948.24 175677.8473 2134154.935 650816.69 8320569.162 11540585.31 477671.0131 40673660.53 58739.26534 3726456.596 23226589.99 14919038.01 3152857.62 575593.1792 34310693.07 108181675.8 405894.8074 3000012.854 5375211.389 14598825.39 +22290558.56 118376192.2 17392746.38 1114153.498 37048692.9 3618351.749 552987177.9 4397771.69 6327.890165 8980365.105 87946.45584 744599.2833 18368980.54 37228329.25 83736808.19 47337913.37 6011824.15 29611021.27 13226138.17 55837204.81 29389504.93 101850801.2 1457196.943 11049350.35 47878362.72 22590472.78 19594858.57 23333256.36 73079459.07 134659688.2 127024.8144 158970618.9 34684791.86 742931.0141 19244276.05 2073205.82 6244892.138 4683.699163 9633953.296 128392.7306 18015489.71 767552.9035 603805.0593 14147279.53 64434.18744 25664712.28 90295.13352 6860112.773 29540034.8 72277.61559 52861805.57 286132.7816 24220294.66 2226448.036 177789.6551 11171521.77 4950482.331 6570670.842 56962156.64 56400554.58 99720674.1 66504449.68 3776707.896 158240.1809 20201189.51 29310840.01 9022150.167 64033.72671 34002543.44 751589.796 26329483.85 43560901.5 36931467.85 22824793.02 49807713.43 4800650.56 21637523.54 27277912.02 2429176.846 81373135.8 17521400.42 10588644.67 67502147.71 1540970.969 7558011.739 804428.736 11482851.02 60184.94024 641094.1152 59254612.5 +63318.21378 9770121.894 250131.0927 110187865.3 139029659 24334656.32 38743690.87 86600996.09 8460936.715 58534769.12 30.3535506 2081225.877 38033375.24 20911972.92 44523566.01 10967577.57 2778265.796 30150443.53 3221704.934 9349216.563 64959891.83 117761811.9 1388369.511 30890846.31 14440431.92 77696754.63 68162733.13 117338028.4 4942578.808 68733359.75 10481560.7 16473187.56 1941352.962 29610304.22 2213700.469 1274651.626 9189754.076 171267229.4 54580213.31 81198934.73 29248871.47 10146494.96 5064.485249 74466110.74 10511526.12 16899565.51 6029042.463 138376.9637 302.6825315 113183791.2 59312742.49 234724.3383 75936.64806 12262850.61 3819878.216 127741108.5 73348.62711 614928.9915 221914960.4 11051094.61 13258447.16 126161.4736 21172842.09 17009127.92 20458994.64 17290.40002 30329524.05 77300930.72 11349148.84 963.9347969 72232509.25 27685673.68 2012.756611 904161.6693 67273113.34 59268405.81 32804338.14 116855.741 767710.6884 65043755.76 52438866.62 37814380.16 22313991.82 167629320.3 6481233.93 13263.65913 7530220.205 19229840.54 68764065.36 158574.3277 +365188.3667 7135506.72 348552.9967 1266.16466 443027.3749 14475629.27 1272392.406 621232.751 13484447.21 77.9200983 6848002.544 5808568.978 27232624.37 10094554.99 11884.39777 63124431.1 169288053.5 3281099.201 72590676.11 1979628.518 43447349.92 93252232.17 34894843.56 17421841.43 1786357.134 90105209.29 12036.13041 632840.6902 270925.1856 17772719.68 13183.38726 1539892.344 91703883.99 32406540.94 47424845.42 167369967.1 8708141.576 994818.5648 11068.43712 116171.5344 45102139.8 374.3573259 25185446.22 12886844.03 4769734.954 136087.4019 4323442.412 7604336.727 87804626.7 42766196.03 64962124.84 23090.57068 32852.60395 24841.45914 29841083.77 109926320.8 347112.7812 25629263.19 22809.74747 5626747.705 36711153.81 2131954.424 16641906.98 1876727.685 1121091.005 51851794.4 16210620.75 64159972.3 6519.953296 24971526.92 2361.476154 4083535.64 204.2799523 188456.9142 2682.54785 9255802.434 5140.272557 20408264.39 23775245.25 1175258.826 91584.49207 2408795.756 19307983.42 92067.47904 12023.14498 10561111.59 65062376.14 1478952.466 206342.4362 8932663.353 +9518476.228 41209418.84 152504211.2 394969.8915 65402148.5 5469777.665 152510601.2 14322.33151 48766258.43 2602302.146 60691.48045 22766261.79 9586005.621 4939289.432 14936973.45 15134184.5 15904130.65 7343232.159 4238150.727 1278132.243 1010998.896 8096.901199 10639125.13 2291121.882 352953.0667 3138861.469 71494.12431 74059655.78 24022326.67 277086087.8 39373768.72 18198186 29441215.72 522693.9612 20402841.85 92294.17165 1173843.905 2086915.622 30616884.87 39079.38143 57168533.36 444369.1934 41748947.65 10625473.09 1293535.216 18913.4132 87510.72788 18877593.59 648516.0282 29161858.12 27325968.93 51438211.91 49871.33014 14341251.96 10580656.78 44076838.23 1538938.356 13104594.46 7344987.507 1255566.053 2995196.338 11323465.16 1075739.083 127735501.8 28851395.71 135731.3909 43921836.69 22870835.83 26302352.66 862865.4312 37477233.58 1925.337622 8190041.78 1139486.524 21109319.06 755685.6583 230967.2239 34467001.19 23918.20422 30606079.53 85843.47983 75490559 135728.7101 2675337.636 16410359.56 10491160.12 38083919.32 3776231.859 48367350.73 12088289.94 +106709985.6 11338388 1384.655758 39439660.72 420252.5564 51380861.4 138974674.1 10535118.63 1033289.828 29296.45215 804089.2334 2170169.952 9245305.702 3135415.486 37420935.63 28957411.37 73234.21956 231356.6487 833686.0523 13465382.79 57750744.78 25431.71809 597926.288 7341873.402 56980928.09 579834.2319 3759557.216 2142970.732 73676649.58 32725608.06 67000486.03 6021650.274 6648.048702 30432.86855 6431554.205 9701507.198 28735671.23 997915.7024 186628380 36146.58073 28753501.6 1004586.467 1359882.38 2176914.503 3375045.664 162038865.9 43654557.23 46325.00352 45252309.11 9860614.12 26069.19355 324545.8175 6182695.922 96225453.65 610109.5996 6334438.306 1053176.344 57.50185516 24510134.68 8830103.205 6218821.648 67864163.83 1304558.248 19975261.33 2341453.264 70951311.5 209740.898 31152541.45 32594633.66 44326217.31 1078259.685 16303296.56 287604.1278 12218873.94 52835664.83 19577731.26 60594.47189 2079789.218 33544991.21 46932765.63 1580977.213 10854990.75 1144665.944 1951145.096 17259802.05 616443.3442 51299161.34 24711209.99 8258879.758 3454793.237 +12174782.26 2566254.107 15286503.18 93767546.16 194629721.5 27714990.21 903215.1773 1735245.395 4878768.636 1866618.363 7603665.008 108752631.7 5456534.048 24348516.8 34970941.97 25323152.41 40190569.05 61884823.3 311175.5112 13628326.89 3129694.142 93688.63759 5823574.831 55920861.49 32572104.46 33022484.22 9217.941038 76964566.82 290008837.1 9859331.57 2852291.518 12655238.98 2425806.844 6987144.501 12987456.41 11374958.19 60553911.46 24380199.96 137517.8118 62071339.74 9748352.417 6382457.547 2006104.76 660984.0079 34487032.15 26001581.11 124281499.2 2084871.535 5999604.14 17993936.55 59890590.6 87136.66681 1113550.741 40142571.48 15027031.83 1415157.395 43422957.28 10250716.16 1197975.331 6927821.714 18093759.3 97374152.59 11136.43123 24681345.39 1636277.894 830689.4854 31785078.57 11733728.43 17813.08333 542172.4719 26964187.28 316420.73 344805.0667 2506356.66 809161.9329 4029267.42 27635133.6 30302327.61 11787350.58 40920013.51 103921.3206 7345560.329 1382438.02 24405164.95 9621746.78 6419846.884 8288.893518 219100.103 86966321.1 2289905.687 +5845223.552 811442.4846 3639729.407 43489258.56 1121275.78 5385578.315 6816482.618 48236496.65 6775202.348 26418162.53 6867238.66 586346.0783 215861531.4 595020.3573 810397.7003 8354.036412 1730846.597 27052123.42 10218668.09 17420171.77 134685.211 1633835.775 376182.0143 9267804.699 371364.2016 6943489.768 39350236.55 290943.7768 5518908.358 22162837.47 6138025.569 22511527.79 5890821.861 9135482.1 126733330.7 150849.7865 185658.7924 455885979.7 45321188.09 807616.6107 136417.8452 32378873.16 122763186.2 9156700.81 17000367.76 455582.615 11188484.84 2469830.992 13041818.09 7689068.948 17819082.37 672946.9489 15665359.45 1102574.591 7870.777467 127867823.8 2952358.508 42770485.8 1221087.808 1765345.118 14810714.26 4910313.438 7119934.999 2304578.323 120613.9275 446958.1229 57077567.28 53341342.01 340435.2859 173742079.5 66817295.06 73086560.3 18544014.18 814530.4386 4130613.634 5009869.301 15019201.98 1995351.085 7374382.175 24355233.22 5835369.121 2923221.37 77276448.15 4445270.276 34568544.35 10427474.11 2181878.691 2853177.573 158438.2912 44211222.03 +3189699.66 826949.7846 22294476.23 4788348.129 2388924.687 5410637.285 8173687.526 5901382.189 5625970.765 9001342.542 10839266.95 34690894.41 10752049.19 3951199.163 58619299.73 134244.3291 24912.75863 19630165.47 50137283.17 226617.3135 49574422.79 4377647.614 1182484.845 34809995.82 5915783.456 9872178.534 372631.6473 29285546.03 46074.36749 35967422.7 18654963.05 489758.9354 97120136.11 23225.41041 9610235.46 40947772.92 42082.07304 31628816.04 12529866.85 214196.9017 5113198.867 1579544.307 807461.8824 189931.5994 10486462.54 392985248.3 1249671.8 36879656.94 43323793.25 426206.7819 5251299.7 42991588.45 199597.4891 3910151.708 15231257.87 27217823.3 119558267.9 51453881.17 6148954.756 68994805.21 11110836.44 65217660.8 684049.9983 2689837.72 123753.7907 976385.3619 21328399.22 8053.973649 108603738.4 11087887.64 95530.24661 474.1195366 3013.009515 4184471.204 73464803.48 66718011.95 1453483.915 322911566.9 177046.452 759966.5803 13894.48689 5423654.018 63011.22654 2720462.444 18511.9136 118724.3327 5928485.512 103483386.6 553.4370247 13275239.68 +14185798.03 5587886.609 35989423.42 38184026.95 596477.8961 12181.8149 14879149.59 3031696.305 60084540.87 15332.97985 18423.99688 3771757.417 21623.76173 3263734.613 6034053.72 76373381.31 814768.1899 16268032.11 190241.3206 42600719.81 69229469.58 105.063931 6259.718127 6610575.247 1923043744 43680771.58 17200444.3 2888137.14 1200534.296 15692401.29 3683.444379 8267396.755 38161.50497 12775877.35 17741226.39 177401.2718 5272435.927 8769883.237 49570298.64 135572250.5 117263934.6 19181048.72 111254.4963 31331988.12 456993.1872 198511.3234 470729.4988 15188837.86 19306.66195 30104.14924 903947.0919 1314959.862 313837.5908 829091.5229 1059301 4654876.684 22258138.96 896199.9685 10732272.57 1733333.757 5444060.938 4131.205172 1446152.185 93.09423408 38318296.12 13837559.34 6462982.417 206414.7732 149310818.5 4747483.745 36150.83991 14970.97342 24766243.31 15595101.7 7491131.203 2251244.634 48372300.61 23759106.69 96773954.09 79472428.01 24787617.99 9727265.349 197.2355068 19419999.68 40021356.86 7273940.045 1961370.055 30952895.8 46975963.1 1774020.121 +8135550.303 10986853.26 5640320.523 37082728.74 7562142.454 87821063.92 35159265.04 1243255.531 24973835.64 8804240.823 1300709.495 1376083.32 131824310.6 28463757.72 31446684.93 545978.1651 17659009.22 34709061.37 21273723.04 4323634.965 3333816.497 13252.12087 49164.49671 473619.9532 41079944.22 78367702.55 82336.87351 54150402.17 996761.625 5434915.183 803722.8491 6047005.142 1503490.368 130595.6518 35165476.78 9370236.128 6424319.645 20188999.38 31253906.41 17873359.03 15342445.56 3517946.162 440485.6657 13974870.13 887182.0026 56551516.43 360073.9383 16764091.06 11793211.26 4692.449814 1914.245095 27256701.9 139459.3453 66722.12458 19910732.02 33115139.03 264.8226856 74875601.9 47943.28423 3680287.199 35060227.54 48383591.27 2784390.313 163.4634566 18205854.18 48952240.07 4520904.702 36440653.35 9661763.442 14981322.86 512034.1801 66676039.59 293455.345 43371227.09 6158679.128 18778319.59 1770015.383 21132.36879 3976783.833 3111672.656 60.26639498 2034001.28 14961824.46 74729854.51 68257127.18 16376307.73 25100575.77 191636388.7 86419962.67 38897997.87 +49160063.02 5609262.272 17310434.54 21503720.78 771185.6554 260592.4664 1045273.205 1106249.193 513.5603736 11940174.77 2640827.195 5594748.237 39191506.27 61140664.04 51065058.71 317853.4451 71097466.26 136411.4213 38728.03641 40656653.45 67162196.07 40634179.09 80505704.57 30477392.5 339091.073 129651451.8 2034147.164 25633.24673 8259973.171 11802591.04 12810442.71 43043959.95 754538.5455 56789772.51 2979370.33 175777.0307 16500896.02 3128401.971 267163649.7 620749.8395 130175260.1 11988784.27 45187125.99 40427338.45 46879853.66 2446784.468 45189209.61 520475.703 18085337.15 72001245.68 64660234.94 3218334.807 7878040.06 5651.871123 33445621.01 120602383.3 8172915.43 39199626.22 10118880.72 33103515.87 34920027.28 30537461.23 567158.1068 10973295.86 932582.5829 14899975.21 11647209.83 16357906.1 12047947.15 9449623.401 11459221.49 3089398.186 323459.96 249083021.8 66614.7471 705458.6553 38286307.18 5340789.05 83477788.67 24078910.73 4800440.039 28467358.87 63092105.02 7004910.502 2456872.131 259660.774 319804720.5 2334624.877 1916628.174 67415611.04 +3173438.091 49482.04652 22302952.36 30843445.43 6595.448373 205742.928 27581740.43 41521716.56 824833.1578 3359798.948 1711681.836 32829613.91 610.8889107 33325491.25 213095.7972 30913501.65 21711897.39 6202862.437 4775976.308 23678846.2 351965.9508 1122211.997 11180780.32 12996863.67 760680.1698 18022914.85 4365081.832 26854618.84 12625612.75 1528715.554 4109036.541 328177.4666 43513407.56 3011832.764 52938.33845 14981.90929 6854591.177 2853212.213 48027.72984 21359689.47 56648757.12 21748234.16 66654.51552 14025624.35 12907154.13 93155949.72 1134012.528 65121281.63 6526740.439 33797381.29 2908178.195 691456.3583 75421097.21 4914232.044 818.9421544 12951310.65 754524.121 4320215.323 9666684.558 75472910.88 3092432.064 19228713.42 1638723.002 2812354.748 990471.3285 1257589.472 18486336.33 596696.9057 10505361.6 7977306.906 6913275.715 12603098.63 91381.1869 9042195.231 37732257.88 14988599.69 37605184.06 164133859.9 16934069.63 25492167.86 462043.6778 799938.6569 99433510.99 954429.5096 483924.7392 36468989.92 52594731.86 8615783.585 14944811.46 285005.5136 +21364607.09 243360.8808 539365.2051 22313527.69 633153.7909 369197.1657 6477172.824 20928051.1 7685635.569 13177695.76 10121791.48 5996341.099 1945498.047 74583.11872 3843802.326 67063660.41 5675983.579 6151442.666 144680578.6 1943477.616 94348828.72 16029407.06 1394157.153 65094411.06 13295700.52 11399788.93 5077746.988 33226369.68 17171231.59 18461681.92 2199004.243 1612.947635 18544443.37 4420038.166 33702864.17 4727003.787 27787802.82 34353065.34 14478949.74 8631921.481 2537064.394 615798.3689 14229736.64 3161553.745 7583279.406 7740098.306 1853.44767 764449.5495 11920868.62 2870611.506 1184635.067 3735279.168 364366.8579 69315633.06 5126.541741 59562597.04 2495396.779 777.7923147 116341.1447 77425201.09 5300087.32 38647151.45 742.9630328 46602945.97 2640588.469 9795194.16 78673498.69 7544812.374 11057041.1 74080708.67 690959.6188 15705.78344 181114400.5 93573918.88 27768.67346 37022024.25 8580220.456 34267317.97 16686825.6 103698.3764 7847616.286 10955.96724 64852079.95 45267519.92 53158563.92 10066728.6 1482.68346 983060.3332 191504.1088 4639457.598 +160514.8716 1093.777521 15111.51665 1881381.09 1093.4583 3065080.802 127216119.6 8730963.061 1744650.451 51162392.34 1151419.326 78885635.8 29743.12537 64748335.76 42160685.69 762543.4476 83506620.42 8921280.564 53867.40412 3692244.682 3929494.358 4689195.231 66378613.89 3805.320102 9128.64522 671398427 32203150.18 3358022.399 5908891.585 2552701.856 334514582.1 43703522.36 96792889.15 16431394.62 40678087.88 4356177.502 21809308.94 9467144.548 96620265.4 224650.6213 167554.3681 501113.1007 1231.069656 6609753.684 2925688.194 24700.44471 4853785.248 8738960.347 9776689.638 2002392.501 930436.2861 63451935.08 17290347.66 7276779.238 411724.7749 8940813.664 520634.7778 4981629.11 8454601.885 1408325.214 2977152.827 9437210.192 36430786.95 17996676.11 2497960.954 3181008.771 1525.748579 38156514.15 9951009.093 518397.2742 33019637.64 84269485.95 26070533.46 6221882.256 16230901.17 3961630.072 5791199.951 57195113.38 188629437.6 2517842.801 920226.7158 36471960.47 10460702.37 582922.8889 6473381.944 32633498.79 58667624.44 37942.53588 51155606.86 1611844.754 +62717570.79 1239233.713 5062418.751 630007.3068 52682863.87 16432621.21 2540300.5 881424.5713 65940851.16 34478.49952 46038100.41 69662421.19 142744720.3 10179342.93 47653860.98 10186348.91 156662.8353 95591.81433 29886097.87 6138359.843 6469036.719 38723.39558 14052.95003 647998.269 9203186.897 8425458.204 30732701.36 1459951.631 26665507.06 10748549.3 27878620.67 2985847.512 18126455.36 22374106.62 2363426.887 34464734.87 333986979.6 12812776.85 703988.9079 51593612.77 89735815.03 39009002.5 60495269.82 13797591.11 899.8716499 31341408.2 340848.5542 437234.6524 32803891.43 3200792.147 7885581.437 92816288.17 46075288.87 6117430.009 2550987.601 38526445.24 1049.724502 46362557.72 21494.30539 1650450.292 7485464.11 3048110.721 91689869.01 120579.1079 169772790.9 285226.6206 10750644.31 31312065.48 18629177.06 46396687.6 27776564.84 28370856.63 6083438.19 68422974.14 45501643.17 63748.88487 24543285.83 54909550.15 19930178.3 516347.575 35632695.25 101249627.8 73769285.28 66946506.18 10870892.5 5413802.247 1550655.645 13130953.93 31645.2364 2555353.37 +1042008.855 1684986.15 23444158.56 9359997.789 159386320.7 10864302.78 2971360.357 9611774.525 139135499.2 26563137.74 3993820.615 9634301.001 24525318.55 5920166.498 5882025.586 14217721.17 1866010.986 61852697.15 55708195.37 23973783.1 21879407.12 376799.3034 20427239.17 36347699.87 581260.0408 17279.71392 97319366.26 5529948.283 41860.16761 22618987.78 15213822.2 10485018.62 3611281.044 20029769.99 15253932.37 1832562.711 10062553.64 18440919.59 6363519.506 26237.5184 31265935.03 3069728.724 2603874.134 26371934.29 52576283.82 126371.9352 153901.4085 3477057.246 15674858.35 12355986.2 821111.0562 520988.4412 3365180.814 19183817.92 13712597.88 26377850.74 26857356.76 16680602.52 37904837.22 1658343.035 31203681.44 12895.95767 33746742.61 2690.400391 16466977.77 4013852.884 10287174.51 44623543.48 3989639.882 304853.4551 64485277.35 12881190.67 2529648.74 11086029.93 7273190.853 2308661.331 16683131.69 45188.28132 1932729.414 26634048.43 277235.2364 3187410.55 5773391.526 70235293.23 12787448.51 570840.5162 37256877.01 24193049.33 4667168.389 23688578.95 +12215388.48 1964607.476 363950.0514 2500348.012 9136888.234 129.6305216 45009433.62 18303856.05 14070523.86 4696827.888 3546452.954 369097.0965 175658176.3 159297.281 10922579.35 8495904.145 20608914.37 6599318.015 9824930.522 5528405.271 43794716.59 12700463.68 2003550.991 25727202.18 157641653.5 10091311.92 32389229.82 13739820.45 3309108.434 17257.09165 42872.77264 44839.50801 2807970.855 37778.29349 34792140.57 22578467.77 17245430.41 97860857.5 11654621.82 1653611.329 3497222.437 8729174.461 11368286.99 1450952.847 3519292.932 17088282.78 5649917.747 1438.234545 875318.2849 103972988.6 105739.8327 83605672.77 839181.006 7560607.019 830.8799463 816.6381066 1301481.258 157476841.5 26829092.55 157923.9338 21317978.47 23183.49516 3337932.03 44001912.87 3002740.541 954156.3786 752859.9664 35649891.69 7883592.71 23274867.46 3407925.309 3757477.199 3892511.099 25918255.08 44342934.58 7173037.527 26605775.92 498733.9155 67808994.61 1153477.378 35810938.71 30576917.5 11942711.19 23900431.45 16215739.63 52538.43218 53141884.18 32563402.95 1347748.975 866906.8853 +5088835.474 134900.798 18657917.18 20570718.96 33687349.61 12939996.07 470198.8968 121074622.4 235975.7096 57351459.77 86243911.84 19382377.61 5751524.381 4208243.474 256205.7939 2094933.229 56721496.94 981640.3396 3477875.075 66078681.71 3525097.347 5013859.272 5010847.327 1433204.492 20164909.06 57081814.53 58356.38184 1729988.689 58106321.33 6265938.199 181192.9359 4409686.966 6593916.597 3618196.879 48640750.29 1736144.792 2159441.573 8696915.713 7763799.91 81246503.39 18685743.04 9622086.549 763461.0574 11922.25055 5057858.977 950969.502 11743664.23 217794.0593 6697767.957 71860.10458 2169.077916 61928076.75 19112718.23 11288264.32 1847889.644 22653298.61 80694209.15 302290882 31386292.45 30434829.92 40632108.9 65532683.99 51482655.93 12540514.01 28079073.1 1259.495302 680313.1773 3904016.042 7344610.115 387499.3937 19101940.89 3719238.947 17119100.76 20014299.9 20457.73348 76916.97318 70246248.4 1985368.309 17608267.49 3236235.304 6763793.034 13053763.98 1776152.419 5090004.656 488849.8192 4386979.568 24623206.9 18105.67785 900872.1125 16283293.57 +2415822.054 2672937.936 78819.84173 4836242.65 3267521.88 690.436053 3496578.323 113059.0197 8410501.111 72548.35066 22542775.11 14225904.03 12187133.15 15616245.74 5553708.83 1601892.026 71481.24543 25813886.34 7331145.712 14031156.54 93640715.55 233.5687794 11198684.51 606694.3305 1390067.314 8364306.276 4864227.82 6972.685207 262955.0292 21011.09284 7805163.485 35002184.54 4787929.378 365032.4615 1689611.956 26710322.73 32335963.34 34235957.26 42845409.69 665160.0126 14410039.62 12523487.71 209617.7429 1383079.889 62659713.33 31653580.97 23385566.72 10123863.01 140124.2486 4096156.128 175511135.9 184853.6035 721143.3879 43232.43982 34105779.78 33599068.62 8620.532834 1062800.985 13571281.35 72097672.34 509.6505007 89377.28272 84432261.07 475392.8204 385778.6045 40624085.25 90968125.97 218405.3375 7753945.062 1724882.011 3225260.945 101635783.6 4065238.149 61008678.31 3432352.518 3459961.007 4952039.833 4989775.929 15635520.74 23419060.58 13278467.04 1435604.972 7805068.087 152551839.8 4210948.301 2518168.341 19943005.02 32833981.79 21131724.69 948107.4092 +21907.64104 4178936.92 29799195.63 28193556.32 3361824.516 25982.53278 195347744.9 14314289.18 367586.3461 18405795.34 33283946.79 85280758.09 42636395.33 5509224.905 49652.35974 19727127.61 26.96099122 9786988.399 5759630.953 18881654.97 62098759.5 15651987.97 7738760.692 75359918.02 3330064.348 2908461.065 44888318.98 872061.0293 2996794.238 8905561.549 3116690.618 25479345.83 270671318.4 3157767.497 103808.8004 3346631.396 99915778.55 6216.216589 23164738.65 11705594.92 230241.4681 469368.8931 16825615.77 381005854.5 14118241.98 24430228.89 323944.2356 31913339 54895305.88 5163236.618 4650602.565 37077648.9 3003108.765 3669676.141 67974.60752 7781948.697 14989124.44 130660576.8 17489205.1 20100509.26 293195.8529 2811520.333 41362035.11 9820.575553 8342839.013 864398.9954 89352052.7 94811194.73 113007320 1309199.164 40004763.8 24026782.11 17013073.92 75102889.05 248983333.8 749052.3858 43724249.12 1303412.653 1765045.778 19150741.44 10774408.82 202044.0996 19619196.93 138376262.8 8637071.63 3988.858304 66402660.71 4162547.637 5264.032399 17135406.51 +3871067.223 22039.54738 4220996.95 68055.85905 105402.5793 329032.8099 62576536.64 22038.0167 913921.4828 27332757.58 19141642.23 15661632.68 143156.7625 71465262.35 6706213.618 3498665.372 20154046.16 10665070.69 42256540.05 202740066.9 56148701.08 15365970.37 6355128.512 31807.48092 401200.6028 16463002.16 1994627.811 1219798.031 773.0574853 2636401.968 9102272.393 18541729.25 7213587.424 3601500.74 1180650.64 70296261.37 5734441.184 567806.3908 3844087.716 47000521.61 67659216.09 21576682.65 1739235.157 6984065.112 150052.4738 17554884.8 2146817.41 19059008.67 8502.872649 3098668.616 15260368.66 5894823.484 6660149.107 3494235.726 27799521.27 297213.2977 43083407.7 5004734.065 257168.6166 39408612.08 1994.95716 12574628.85 122287.8357 33836.86112 9142486.188 48446.89837 7419224.918 2819035673 246934.7037 356271.996 23303278.95 69568943.01 1579591.256 6124477.158 113700510.6 163061015.8 1691021.556 44293685.07 17439892.3 2802256.578 42890746.99 371325.9971 3686726.425 1940777.193 17401244.18 4950884.886 10655.94415 8214429.124 104715790 12769.63926 +20817482.4 18294052.21 8030436.928 18556.65485 3089388.548 5648519.317 13230482.54 18988846.78 11709304.74 1401.127986 16327132.79 8986317.945 273480.5925 94600957.54 1906483.17 25981435.89 59285419.82 990191.7548 435927.2577 6727464.687 1656446.905 48170854.76 12629.10571 275747.542 338936.8002 37222.08509 34795663.06 92569616.23 3430762.542 1515549.854 7102768.793 13472363.87 15596365.11 44787.04789 199152.6287 7215284.262 26419.85253 35897605.88 11959710.89 2092307.659 778421412.5 10428.32082 186856402.6 1023292.167 3138856.93 36071911.69 217157.1906 17152287.81 130477.6081 59085493.42 914884.6804 22479775.82 101971190.8 74326323.64 147102926.6 5834644.386 2670079.984 242045912.4 13663891.48 46070644.29 77600470.49 65045281.43 37959.19093 49444327.77 1945961.666 20352021.11 5257.506492 17295935.64 12063474.13 1989262.938 18133.84723 22870118.92 58796325.9 13011.86323 17470107.35 41521.77165 2906883.14 19817727.74 8151.367641 13085327.73 34528822.39 317320099.4 12444516.79 44368.27953 11504552.9 2933.344112 7860931.646 6762855.912 203214968.6 8793981.717 +71663494.74 40196685.15 12812227.08 86828.97992 3204674.817 20156927.8 4587106.954 6484.048436 63417256.02 58269159.16 23269.68182 48876033.49 2588198.053 48411509.4 4516.327018 322040.1394 37506960.54 12892072.14 434821.3585 44116356.57 21284903.15 42812367.99 14594581.71 27514677.8 3167908.203 5011072.815 52927883.63 54557.96586 222824.6083 325004.1847 109019.0713 79552482.49 200500.0375 172882.4558 5475473.415 3719812.193 19049706.9 95883.05397 454218.6622 252633.9575 645333.7426 1215533.702 38774409.28 38895699.29 11644152.54 15300977.98 50255228.07 61.32377047 65505046.29 2849674.867 6878930.136 37406760.7 24433290.77 1133458.128 10920269.78 4835552.98 296118924.4 167635.7237 7857005.991 57993328.03 37558204.3 8.909584769 23078314.78 78023828.78 113469315.5 122819214.7 677622.3702 2958524.662 3860946.391 145740415.8 56113.03576 1694238.749 5142.486608 38569749.81 22057.30542 10158907.66 347428691 29133.18566 5237558.982 27236.44627 13490436.54 97928029.01 5347208.638 122719099.2 272355.7112 37457907.68 106420203.6 17249741.19 77069736.29 58643970.19 +10230956.74 352077.2852 11197336.77 69998.37547 21616744.97 32191633.15 330323562 94539568.82 15384.78584 13653288.54 12252137.72 1111.431112 4989358.805 236659.1157 1894349.003 39025236.01 362898.9871 47320886.1 15145924.87 58881153.79 22837578.48 103.5180397 125636.6255 39706687.85 24523519.67 15969.59993 29883.92513 35832529.47 49161.71418 1616228.933 57677730.46 39525039.81 5876276.704 7160357.933 97347732.29 90316285.01 2999.605764 1401641.867 29352030.98 32357211.99 4653788.067 7241084.761 53705081.38 873463.645 7496068.206 23412948.14 200643.4402 73219214.15 218218.3737 14395977.19 24406843.54 1927424.57 53134097.24 46944741.15 146186.2276 2810297.91 49854770.52 2057773.796 147431.2209 40526899.28 1291253.598 49479074.27 78908243.42 25604.27957 224008250.3 4814256.538 494139.9717 12628762.76 358058.2512 15288237.71 3890284.035 44396041.88 68567059.74 3235257.406 2894169.928 4720990.601 5257319.891 5962997.289 21592197.99 933452.3118 22467045.03 5269623.46 2101520.905 4200819.259 80364.34117 11309068.19 22388639.81 3100989.145 264584.9472 9975790.284 +4693101.258 1849781.076 56568486.1 2500624.813 1738283.287 7815071.531 168290.6425 926179.9209 826486.1233 4754039.663 195115.4686 5851618.11 6848.69639 3023548.799 71943193.85 17335730.55 15900825.62 5499633.061 684677.3641 13123248.56 35228980.84 109900.6592 11403.06763 5801678.269 56110.40589 7913410.428 2164108142 15343114.87 35456729.45 5418419.084 26393675.81 2966.301072 1801731.311 14930042.8 28144890.59 15032380.17 4062712.275 13086237.87 23885594.17 8659204.219 52463936.63 7737262.925 528459.6799 47776710.57 6656146.76 4439444.302 18018983.13 6329417.84 228414.475 9153447.363 10871580.46 1706259.902 124720373.3 2664245.626 41631541.76 14597099.68 37863202.47 5487332.314 4807998.437 20543892.91 199387827.8 399847.5206 46722849.27 6649.678682 31064502.83 14313725.17 8084750.736 6324136.1 11337381.88 77558112.39 55591864.62 16481113.89 21566312.83 7853812.459 67107019.79 319270.1997 14807463.8 7518143.165 1407135.525 197755.3919 54619103.53 19552142.55 2386363.353 13920078.46 2625154.794 53438681.01 7840617.863 77701223.24 28180771.95 7487730.099 +641706.2145 10318808.66 2331264.846 33917155.94 74783176.15 67189620.46 74369104.04 31809138.58 300267.2717 89424631.06 5087.451928 1712123.011 2376204.409 38492059.41 706239.8981 32682111.52 15068344.73 23718792.34 1681907.295 28580486.09 7173535.12 168885.7566 11782266.3 14927826.56 7643069.591 926896.0505 5288950.325 121615.3331 31911972.05 7068065.751 3496664.103 17146357.19 24734.85924 1396012.139 58858103.42 57458777.4 157962265.1 40735701.06 30643393.24 44498553.03 58834769.45 18485773.85 5636895.668 171435000.5 17195114.64 5703390.859 8232.559928 74136506.13 17783772.28 16519860.07 8173285.857 6830336.096 83122421.18 64242058.49 18338.1649 1453946.051 7957791.175 21857114.68 1132674.481 16477957.1 1301273.95 45234393.1 25344.76984 29060001.41 764557.0455 1710209.063 50511.87293 279720.5606 40096999.77 64102233.53 46772846.34 45363615.3 66280056.95 12737735.63 2648372.016 11802920.57 34095217.02 53979405.57 124723118.4 550312.0764 50588412.91 95288345.61 962967.7892 11879372.77 143016.8456 2585652.506 15062791.43 24323461.72 48660674.8 131238328.9 +63998.37819 25617970.1 242539674.9 72563360.87 24191367.61 491643.3801 348776.2973 1436784.714 140493.5799 2246415.827 7226036.834 32920399.78 20297943.99 1727883.951 96335351.49 292007.5107 66810360.32 6176.340537 4809172.149 23918760.72 73629.45854 10308229.9 997406.875 197544.438 414378.893 2773638.177 24652375.22 338510.3658 5814385.614 1815259.532 123750388.3 1111364.62 2503782.063 39114135.41 5577629.622 3019633.732 305026.0538 22098826.06 35840092.4 325763.9373 64224268.46 26224.07046 421791.5732 88549978.57 628664.3683 10029444.32 10659.04844 50657509.98 1069717.153 2527016.817 7983689.944 60647.85684 2118823.87 812227.1071 44798.41235 16745881.79 2277750.099 33211228.77 22654883.23 17809115.5 57907017.41 30230031.13 54374690.78 54009793.96 50877547.72 6122912.087 4278620.389 71712649.24 5978447.002 6868589.195 5453593.55 11387533.04 49917475.85 590611.7772 2.573487451e+10 11594616.28 282272.3471 16309981.34 3230389.654 26232958.18 152047825.4 22520175.12 119165436 1832.733952 187787303.7 5743601.741 1274417.885 7128599.304 3596.032504 5475895.789 +143292.4028 1197996.16 14488040.11 5067103.104 120912177.6 66209.69589 11725445.44 18524733.5 232713.2888 5800861.62 1881585.484 2527985.519 31358333.29 724865.91 50349.38052 96029.04944 252234.6561 473368.2395 121856635.8 54963534.11 49704.93689 15823112.8 61678.63773 11281686.22 1395672.207 7049.476057 72038.63175 509650.3896 76099.93281 8859362.322 2177638.061 1826906.423 1283066.526 49370254.44 34629730.76 61127923.52 27985648.69 21754683.9 38028600.01 54693092.03 5474338.44 1063078.547 16500308.81 2487319.623 30099985.91 21960652.89 42003.68669 139328.9514 67713828.86 4942488.887 599150.9747 9631319.478 108863.6461 29834284.17 28942858.12 275234758.3 8100585.712 14793986.41 44869169.55 4834692.117 10018584.2 204303.9061 81417876.29 16400971.33 19190904.59 119958268.8 1120.600677 117315678.9 95664.5551 36869954.76 52355697.08 3586997.587 9162619.794 5895164.991 14380.02483 37845101.75 548375.5201 25584522.22 15673123.28 135139.6975 63272.43118 18928892.22 4285054.212 39294767.89 2639381.431 20648841.45 112.6485075 18909247.76 5434413.177 45209517.72 +9836573.378 17164543.34 272434.117 20406.61514 3418275.6 5665390.849 2408.281713 54637132.73 18352504.11 32317110.25 2438799.601 61770.82072 10949515.82 4317921.516 5467215.516 1095896.678 54057418.91 18139037.71 51214041.11 43838271.41 16708138.72 14546581.39 25610772.59 76870119.82 12982708.88 58366397.35 18727239.75 135612.1516 14517096.06 7968836.191 2492087.952 9429152.75 65353812.41 23443490.9 3692777.351 3212435.021 2563602.018 16994445.04 58342019.07 32289243.07 11950499.1 35778778.59 11991549.43 2570832.998 6841149.239 136116308.2 5808276.654 6186790.011 1745183.138 102981242.5 7162440.021 3532243.793 151959834.9 115517.3989 32107480.32 11857213.61 345472.1186 45892388.03 52177737.8 21380701.88 431439.6042 50787.08235 4860.358392 2145131.661 64387776.37 29347986.57 10201954.26 137027.5084 27994612.37 1962319.172 50337394.22 8366623.102 73694724.06 17055820.13 432620.5526 1237738.234 7456833.468 26949181.55 5549410.55 1319303.904 1543.920966 7453168.133 78412442.21 3609945.808 44868331.42 35514707.28 8993104.842 155148.4506 113893390.8 22580966.41 +235338403.4 110573.8849 60733934.09 5984448.191 68793180.9 61763457.52 14443151.46 26704.3581 23424.02516 898109.6373 85626864.53 45449841.39 307480.5345 2807381.948 156753260.4 23.11406174 176107041.9 17267904.76 320638.6277 56789.78544 62936375.81 55753021.32 3044921.563 30290146.06 47450185.39 921407.4336 657406.7948 59344681.46 217818.8534 71082526.19 38877621.74 795538.8865 5865784.065 256226.2264 18523766.34 48365596.6 18391363.06 638210.8466 4103457.647 14492.46094 1620989.996 1247356.289 1535387.065 30782258.21 548667.0935 45599304.92 25801543.19 607968.3877 10068695.06 1486503.283 5084474.648 5584282.333 15752486.71 2064490.42 31847856.28 25025099.88 3117952.36 6428696.068 175255.0955 26305481.53 1763.293496 950020.8036 12992782.64 18935192.73 12829355.94 99226996.83 2370430.914 44414545.73 14651569.24 7908615.808 16542006.02 23319062.74 2384404.421 86523.04948 12373.35483 644581.5629 20804236.43 45976746.88 26635158.36 1178421.626 57140569.5 20594846.82 38746591.44 8828923.567 51597722.31 2127281.862 6349315.973 30790687.9 31751.67782 2023604.055 +1263318.944 5868307.529 3861530.723 4792879.396 32877520.92 131.7674808 8046763.38 63023829.12 113716886 138887.9094 25587448.2 17509536.06 674.6942154 36608622.24 18255793.81 2432980.365 213195810 23317721.36 6467361.549 447624.2392 413585728 7037107.434 809531.6469 59826902.86 79871479.08 274731.8938 199585.3034 2105455.688 794.6047768 100567580.5 31951812.07 82540.6027 10709373.6 42676577.08 120031908.9 3107488.868 329157.8495 52984118.64 2927511.786 570349.4553 13807769.5 35592776.88 17758780.39 3598906.587 12680981.36 16953518.58 4362134.982 6381.322409 5609637.702 31401881.9 11901800.34 30276.8302 45411043.88 2223156.798 504488.9328 81631027.67 34107382.71 9386675.894 34822388.63 7305377.526 30212773.91 7146985.959 8672030.534 6476334.895 4616196.49 3084309.125 10955967.28 113112.2463 68116870.82 17014405.65 32009602.28 3688229.758 14532532.95 21267918.9 17334326.45 35596807.03 5560288.722 35842650.22 6842183.954 44456718.56 5431644.506 11321524.25 37788488.36 23484771.51 2403277.789 1686308.201 1719459 10854439.57 150204184.1 197181.42 +16219300.35 108580809.3 17975572.77 27755733.92 316532.9688 126566774.6 807852.2909 5678715.141 1053488.565 21753.41999 27497941.8 54666898.05 56206364.93 30401060.37 18488947 59305.64348 1821574.017 89557554.03 52115692.99 22149579.38 1137617.144 13767954.34 43292020.77 1323757.298 17714317.86 169902.9197 68023.44612 31444.28164 184.2911014 5744308.665 36304924.43 1197723.677 370427.7195 2551383.313 8511700.43 2620577.424 29045226.76 89749596.04 1632118.532 736.4007706 30793753.7 592589.8622 45193423.42 380520.6814 579960.5695 152863.4517 20176632.71 42902.6591 6159943.031 78671908.61 181789599.8 394060.5992 862902.6848 27803769.59 19477.06983 3267383.291 23411067.67 2227738.963 5623923.782 70255505.31 88184173.36 120152.0828 14140340.73 33897331.19 156638059.1 1238633.503 646413.2253 16443231.56 30539065.76 5383217.351 6967.822998 29961100.21 22885814.5 58743902.5 34270911.42 2307.986021 8334110.092 140191959 3836.492274 19872033.73 419.9989602 45731873.02 1241736.278 28588209.2 19949063.04 8839238.072 2112032.587 4498194.161 24411520.25 35076367.17 +289300.8501 29274253.26 31585291.04 3212744.551 5218691.01 169453.3612 56911975.55 602110.4698 962511.4756 21447816.36 42278986.16 21357618.74 8172661.192 48817.68554 641868.3028 104007257.7 21484.96169 42019502.41 5959171.639 75231267.03 132206.0239 24200829.97 222302.3564 36349856.65 27194243.66 1999687.336 12480.22821 11126588.93 28288.804 9529715.723 14554079.71 771316.098 34329984.02 28415196.06 18835064.69 13305490.49 73737780.48 24985339.17 5775392.963 3396067.279 28019969.55 6.981348009 731041.1421 51759283 31503319.16 158406.5909 46056199.98 39671358.32 1121533.951 64991337.61 1159182.624 22337205.64 25698034.68 196614.9288 32614464.56 26596550.05 71084093.08 69967309.87 236448.5907 23492911.85 2552000.791 8089809.552 103417.4275 26639861.27 99582099.38 3537484.634 768645.7329 18073610.18 5081.139757 45036869.39 36979897.99 29563772.06 40109.95152 748306.391 932315.5919 3081232.093 4063547.42 79812.30453 47323195.46 517345.6404 80.25941271 152149279.7 7188902.459 20347296.1 28793577.47 76386184 3490512.946 174638701.6 46787.37463 1436043.114 +56115942.35 65342789.86 52776828.66 93565312.74 3503569.811 15385968.29 23063582.83 16604342.1 21498898.93 8765593.633 9328024.598 6403108.066 20888585.86 13748438.23 2633.7855 42261601.96 56532.98254 4047082.64 15763657.66 16507505.38 3487398.781 5233302.305 3332308.723 1429845.121 10479293.48 537.3080206 1244304.861 5586186.67 33993590.01 51702612.19 16622983.85 75195582.62 20235486.94 5380059.308 612112.0084 86888.61923 88323666 5440671.582 95331527.33 950651.4117 44007330.86 1054737.164 7586.092027 48024395.72 92939838.81 27116388.96 59073.41723 7706215.353 3987324.316 34376175.68 32101545.42 10522094.11 5425036.058 5317893.592 45116373.97 9683578.072 2638137.772 40265990.2 2259102.849 11230483.12 26947627.22 59863888.48 7220.896336 7253551.615 9786.859618 12125126.63 1434177.769 9490062.304 4975710.848 40583395.21 1.920066826 57120707.05 8158412.179 1323585.69 274284.0183 42.48640509 3155751.725 24111885.58 169595.709 3026603.303 3826129.633 2216265.754 32192892.72 4844736.447 247022.2485 18194846.63 24213674.03 10831350.43 17608.07713 65032.12922 +7765438.692 8440082.238 40960107.94 5831769.304 106550.1451 41826757.45 8138243.462 1033256.732 204917.4388 19097245.3 24652575.59 20344498.94 14792198.99 4956841.731 305928.2832 9747764.926 1807918.366 22955564.71 1918248.129 81064.57943 169396928.9 8472664.725 7002945.24 67208587.82 4445000 11519026.78 9547958.99 8892717.032 1737837.443 65563247.62 162927.2662 20707716.59 45722896.24 1972839.415 2654.030258 1829994.621 5332649.385 138239.4322 17532255.76 896064.0153 16370.86216 169771.0305 1576290.323 855295.6281 6827960.086 9094016.985 1225152.53 19966513.11 487285.7314 66545.45853 397649.9583 23238009.49 1691347.054 18647526.53 436040.0138 20807.3305 10309191.99 8674340.036 21951591.18 17199152.26 6920242.7 5505320.018 25730918.22 5640523.042 59769847.76 10924701.24 17149383.8 291354.6736 26115897.44 39155416.24 173829.4426 4984.262326 7554414.268 8179336.966 28011440.08 36728153.33 16889309.27 26062375.23 4533870.51 25235.83169 14503.33784 9757555.663 55823899.5 6693.598471 209642596.7 6864584.061 265286907.7 8623192.177 504104860.4 16468846.1 +3109766.765 24254408.61 8009612.573 9001.479275 7026234.521 36544670.51 4217826.389 59307.10679 9060893.527 14329.92218 38630137.06 4717878.472 248745.3602 36345043.73 80864754.58 10213.96929 13701694.82 44678479.72 58261930.41 73665.52521 347381.6584 5142775.498 27323172.31 3569031.519 302874.2832 11789220.26 91148107.07 650550.5906 162250.2837 19380841.08 20185132.61 2606611.757 18822990.43 24593631.25 680777.9251 57943528.41 283.2602181 63834329.32 10486666.98 2391670.565 27094.05407 28909799.73 49056205.36 47331.45945 1902525.638 261493.2487 40820611.99 364594.1229 37769462.25 156749.7802 33010263.27 4206310.411 204867.2239 28765632.8 1130222.262 25819693.86 3343664.748 5018808.997 3548045.278 31967.7871 77251.56923 26700223.19 17472246.88 3632407.025 468976.1381 46711402.23 241813.6047 35724963.27 129375503.7 73441537.79 699256.6432 34285775.39 53761072.17 53266549.59 50428777.28 1691654.103 40188508.31 45512896.77 14963340.07 226243.7369 16202428.97 7405723.771 17746293.11 114.6343793 37176.73162 19893265.2 3632679.704 76142806.93 135607273.4 59174080.52 +51736220.05 30195817.6 47692427.03 15456145.12 223743166 2846985.745 5890511.27 121794.9901 48908310.68 48586262.91 676832.8725 79135295.09 54357141.73 755.2130781 53162840.65 16246047.45 1003474.027 8432.457245 39476274.02 3843919.86 59433244.54 1736886.928 30665492 6526874.35 39687315.14 29101909.17 124569.0492 187692.0876 5184448.53 2341999.42 866019.9937 7742922.428 15103247.05 23938092.89 18291539.63 1684778.475 2634037.559 54849293.99 31177473.23 1660722.742 4976991.649 12222.68298 32487.05525 65582.43522 6122.23392 1720117.643 6498.39131 35033537.37 673909.4675 2042579.935 31937454.38 18507129.49 44409811.78 57790834.95 4652550.998 14160761.36 3707007.276 3758109.575 29033206.82 3551834.989 23596896.83 16397096.22 205.495051 22131934.72 4202972.252 79220388.53 221.9955084 293217.2265 7955137.953 26511361.01 8153028.542 1828578.995 25965097.96 55251519.56 2498.284272 28894270.21 25619873.32 11975604.92 23841296.72 234396498.8 18043608.61 10842227.89 42.56833194 27154415.69 18308567.85 9753458.654 2017699.216 27244347.99 1514285.924 6221161.356 +4300762.972 35810094.02 8588000.721 55212553.93 15324999.15 4533801.448 4573961.552 16187125.57 660126.9988 53073.20105 11700399.26 32831231.79 12812362.48 566517.7447 71619.54007 25328366.01 21573124.12 971323.7739 102136927.2 23400402.82 6887572.614 4947.695858 153621.2949 6569524.896 77347849.79 740852.318 6381675.711 247804.7382 63546.42788 32963067.46 31313072.27 45795103.89 3873495.936 3511251.013 100038196.7 52768204.74 45956878.07 63839287.43 28916127.44 73506766.41 10105694.11 29994863.06 75888520.24 28874420.93 2445713.561 78525.82972 89605665.39 157075278.6 29868482.25 1510.138313 17350331.3 324130.6339 14717618.24 3108571.378 3134017.898 5363655.066 13070.30578 106814072.6 146460328.2 234767.1631 86464.08503 26908303.69 31637026.03 2033.985097 14291521.87 522151.403 981804.3265 1672772.396 28862759.36 4079852.452 85065.98634 3129.773572 10069261.26 44431860.83 15042985.44 25275018.96 86296.87248 1871225.096 18967.87335 26720.74582 62001973.92 3501119.628 35089460.2 8608621.726 35357043 11510194.14 10388136.4 1382287.774 4100533.006 153198013.6 +9106330.538 111926593.2 1239369.04 53471812.57 8161728.435 499486.1277 696342.2319 4237867.649 55837330.36 27023811.28 4622555.293 24361996.66 59099136.42 33453514.72 2742434.953 19908758.48 14950142.17 101821863.4 7286253.813 5143026.527 341216.5295 49418.46744 145789.1519 42189027.22 2029875.109 6772658.621 17726553.24 17549766.43 94197081.79 17722273.06 55731813.92 81785825.16 2098373.417 22874861.37 1413136.896 106331311.9 367682.7363 7266763.334 434169.6661 25086445.03 10317295.37 496223.4667 5527500.553 65297457.31 488206.9686 256210313.4 12879005.39 84.68036091 10705898.49 1556995.994 12508016.49 152456.9082 1583447.385 1493789.226 5379.671751 15560728.1 2971043.03 35436601.81 4214.451374 6511817.989 2145430.567 7594515.57 4501541.503 18496936.59 96371.82922 12740771.75 6043168.51 15348149.85 9932274.31 67994653.24 112039549.7 2449271.519 23120070.41 9413094.714 2025376.438 2879678.943 13441896.79 12064.84346 71862.65685 19304262.01 3776847.538 1744346.645 45493505.77 2774092.247 49427861.46 1848562.651 18937709.89 5411.442703 60070797.08 32048141.41 +438218.2811 6401772.954 5671027.52 24333898.33 12268831.42 19272.02934 8758271.487 1641335.868 8808888.561 59828.17827 31648871.46 19509.00525 55507034.47 58074371.71 2569858.174 6043670.193 1951222.432 189.592023 484175.6837 6541252.108 5464760.183 774220.411 1418461.696 8830388.014 25594080.47 7891742.94 103935.0999 1336568.882 303.8556651 108345024.4 4751109.625 40854.59202 1565120.432 20355749.16 470855.561 15491555.96 5775390.186 46371620.38 144544615.7 20207544.45 1880760.12 7527915.86 2536284.829 678158.753 14876.28722 31421466.34 379.9816837 60461987.1 7083173.448 157242.3586 10709225.64 3031898.624 112934312.2 71684859.45 59438962.88 687.6527647 61772245.52 487643.4001 37612152.57 978364.804 5812215.468 11672656.77 10590872.36 22241155.34 212756.0856 9809318.706 16073511.36 433460.5233 8036608.706 6712254.761 1960542.59 839320.1871 22493788.8 4326831.564 945524.8438 1646428.727 20771667.55 12310007.43 18669124.62 4924386.821 34679710.93 3559052.566 187565.4791 15026375.74 4375979.764 6480943.651 26771993.61 3865622.474 41541013.22 10813185.88 +8281132.529 56201261.67 17490040.27 584329.8366 46514143.09 4491501.146 78181.10063 75452.29621 374602.2985 1703506.875 12257937.94 16193395.65 21955464.59 226634.4479 29707965.51 1853176.21 7112333.301 157672967.4 37468307.6 12921893.28 15572125.75 88473.72454 77609.54978 35229892.51 186860664.6 5634476.286 4687507.072 1601.457762 40401080.06 2796150.402 3086888.887 20592305.84 73566860.1 4329072.238 288330.7453 3759906.441 272534580.3 1060946.162 16970679.72 24635456.18 3512860.313 11608869.8 39778684.26 4554524.912 75113.92689 3499168.933 14132672.7 2287989.715 35670.01163 8614199.411 26279066.3 2142710.282 8734260.089 24367166.2 4962139.853 59989646.29 550894.0531 1932900.054 27653666.08 103720.0329 58540083.97 27327409.46 96855038.37 8888130.937 307658.658 41091.29555 175806.4002 22801580.77 67986.85994 519481.1096 135984.3232 49914316.28 49712353.42 54577053.04 7633140.492 85907822.25 25198629.73 22410808.39 49798104.71 11729992.25 12861897.84 10085016.98 919123.8466 1323857.763 16205875.11 4696757.129 32117137.62 41275726.57 103047515.3 74022315.53 +37365981.09 18806673.14 3993664.085 1668583.861 15838416.62 46377760.03 1879307.761 616213.6985 6042257.28 173782.9348 2515912.272 27734215.97 2806069.237 154836872.6 183512085.9 329319.652 11250.99869 90013.70598 28165490.12 25333644.58 72061859.45 83797621.15 943537.5086 213385.4541 5696693.223 2464357.347 163238.2689 720547.832 2542403.215 1554599.211 51298914.59 18472.79761 2199333.507 89231818.63 4760949.619 8409990.877 6918816.733 83945253.61 108545141.6 7062477.782 1287725.919 70027362.03 68590866.37 11859157.64 11094.04151 38425088.42 631523.654 24168458.48 42073189.04 163437894.2 29242052.86 18639.47626 14009.00775 11989773.57 1453180.53 22264321.96 5155609.773 140001557.1 56208708.53 32014153.92 49164914.18 60758199.57 4930101.435 7738714.295 25699469.63 624039.6105 3069025.926 3764636.29 6897221.375 19451500.01 31315537.89 13030971.47 797418.4707 3776.359557 32277640.78 45553936.71 23149136.34 17721967.07 9304.987602 7206819.386 726248.9833 51007109.05 38737844.51 34342443.34 4789437.138 9347932.709 41291640.96 234277.858 47396002.6 7665606.539 +4424011.192 44673340.14 45028438.04 46317.96917 23780884.15 18918270.06 546672.0432 146997952.1 10988040.85 15775770.67 1423870.566 1813448.161 57848.40082 34258454.04 9268374.91 14061332.07 6471675.25 2248945.578 1319908.857 36139919.24 118240.0396 1407259.209 25841229.87 23536663.16 105047312.2 31150603.94 1982869.933 509327.2529 798297.343 37491556.41 69300518.93 41432413.13 54488277.62 5446478.539 7641969.123 9218159.046 2658.240128 8668478.391 14413827.59 4134211.254 1068627.439 18250289.31 379458355 812108.8203 94565220.56 315450.1657 7342.09077 1619984.335 13572093.62 15875336.06 217553095.1 1249658.315 24036.89511 47908655.98 10321354.39 2685311.068 72910944.02 230500.5882 181627161.1 59385757.85 13085162.81 58138697.91 57524.21691 25487048.3 27605303.45 13361028.83 30907584.65 1902934.267 9479567.18 66583656.04 9869255.913 103156.2098 13627830.31 52956161.31 210444.5091 8352054.34 6210793.899 24382076.72 7388861.811 167955865.7 140256299.8 18291861.71 5743572.392 8949708.637 17361046.61 107096716.7 27738956.79 12193097.74 18574638.45 49339314.06 +53225054.64 478063.7304 207523.0251 258.7739655 18890323.78 101544345.4 48652.63466 3565732.686 43529033.06 26085.88907 39994774.92 2032266.109 52858459.96 4183760.358 81744.38302 51806779.47 65110313.85 9249069.458 109675.1758 5343470.824 25028072.67 38208.86871 233698.4903 26514.62775 15962399.81 6900672.119 1357516.771 996569.1966 1664359.287 586740.7841 13577515.27 5202041.136 33771352.82 912432.8849 10120222.06 1265272.891 53602900.15 28143615.94 42536356.65 1891492.882 42241301.18 12858.38558 297863.0085 19179.39522 18986362.76 4270292.993 39021177.63 507576.2033 2254553.643 4650954.057 168761105.1 58730473.13 3236032.188 187541508.1 2308585.453 1294758.744 4971850.082 13968210.6 12719081.15 542547.7536 17633912.24 4188325.335 1890473.549 219604.9577 65897235.26 62758655.86 48455329.71 83128254.7 26748044.79 5910664.758 111030.2336 4884.425588 73866.54067 10192987.03 709898.3751 16718648.01 544309.4012 63503100.53 16819.08874 91524.83065 264.6327481 10287779.62 10543871.8 13709565.12 26668049.27 1735624.932 8545.973903 2044968.659 19964510.08 7948545.113 +226924.205 4314792.299 117776174.4 108390219.5 6226587.362 1165378.524 41061979.43 4026127.592 13009074.16 7762148.75 73301119.19 3770407.15 80108808.7 32492.98016 12230.69396 29573149.23 1824991.375 50560685.56 5391517.871 12500129.9 3512793.439 5659213.817 14792001.49 25616718.54 454723.3337 52356292.07 97826.17048 7622.850121 39980329.54 1644278.648 3340037.486 4605661.82 50129937.55 30362940.14 11132968.19 4899983.666 44594408.37 35390.82715 67039.74246 229739.7604 2031679.399 64756655.19 718016.3309 34343.91297 1103377.31 22794940.33 4824.865182 4937344.448 906569.679 1069515.903 11579474.18 811896.5167 177609.7856 1120837.648 54789313.64 5261846.909 21929658.77 44789179.45 500510.2033 16745865.72 20006870.58 24656392.15 62636.82579 26857211.54 10869.0844 1668323.37 986346.4404 25520517.96 5756167.677 46169994.22 62.28896822 15800527 42841327 8111555.978 17351748.27 1191647.566 31746183.01 57705279.51 56690.99447 32691.85459 36196195.21 46392934.44 8353.830629 25238568.14 93275219.22 2670130.823 4399257.198 1127271.834 333535.4038 3151927.446 +3749565.574 2581.787053 36934123.31 41272013.98 17688412.83 5503457.761 230440987.6 46183942.1 451026.8626 9808278.714 90849249.04 64053.52225 9294206.205 2084843.265 7715288.796 8356953.348 58277727.3 33880702.42 996749.8726 17141.14486 5525974.053 2655000.535 31400254.52 48308645.7 8211.97063 1484582.667 3198860.765 64017680.55 95725391.39 27986639.13 289932.0123 2530157.696 8537.510525 33723546.92 7614453.155 408711.792 57572322.19 6380.097976 1283.754775 2740509.285 298899.585 7915459.887 5086502.51 2014160.773 14549373.51 23255549.2 30971192.69 2389001.545 16092335.35 17741522.7 7872136.905 15132376.34 3799316.916 10728549.26 152477.9944 22293917.28 89819148 69053833.63 39969.56995 16896792.78 62495106.79 5119263.931 33234441.09 23496362.4 7163804.182 5063.965807 75403758.16 4992226.533 32123384.9 1231968.631 65762463.31 42382.38044 114239.2964 10926449.08 23858160.8 46311118.24 4038391.857 4053637.598 15625.02822 2110577.939 17548383.56 403825.9058 2191041.717 53197026.3 36065496.56 516067.6042 40176696.58 5011716.709 116559.9692 32534914.6 +21741662.73 32620192.96 14281368.08 10742282.93 49840532.89 26347098.98 833056.4176 53728868.58 57572126.22 79019746.09 78526569.44 24465.71016 44495600.29 168076527.5 28845241.63 5280526.376 3369902.194 21091230.35 6776145.105 77966.20457 5932.012059 129798616 24780903.65 29867.18998 45726046.16 8863088.788 100420788 22943566.23 8618207.686 7634475.337 158127.921 78848.61951 141118221.3 62303697.74 249495.7177 3412525.128 38069057.05 39064.32324 663620.9625 2391182.55 51081.05657 68120942.67 53072904.91 4405.949595 1940386.375 13174.11816 1.422796685 44279970.69 48456322 1176492.898 34409321.1 46986496.61 182394184.9 1418668.148 745024.7678 1962952.735 4318170.036 9795745.936 1650424.237 24209552.34 100200884.4 422082.0809 2415647.086 13048.85205 37780292.1 15002.95672 87432.69215 4664889.758 27633.06035 4150411.707 177411.1329 6192627.637 19936554.33 171555.7732 211020.7765 213123.9672 17954593.28 39287030.85 4726062.274 43978154.44 52650570.55 6627.851377 18866653.53 89669093.18 596851.9099 55297.66093 17592.17147 90887483.11 22587953.78 12705640.22 +188906.6836 3499066.447 84768433.15 9023773.324 7810143.375 20979177.31 114178017.6 3752690.066 189603296.4 17991515.71 12521387.8 22353059.17 8824002.058 12257799.19 335079.5054 2067958.089 8214541.182 26466823.11 1611712.924 8582806.368 282320.5362 25832060.56 677714.3164 366067.8951 236186116.9 3651236.152 1575758.922 19901076.71 2016329.37 268355.7241 369033.6022 5008586.669 676484.3653 56337373.08 66394822.74 8134.44636 92104287.2 8543267.975 2951682.528 68147162.44 13721649.71 3745110.989 3793.711893 2610685.268 79663630.58 58273151.31 51109450.3 3826785.646 590096.3378 11768222.39 262481.4656 164814.975 3622610.004 50018010.58 55456347.88 3763354.398 15689941.68 64712334.56 42657291.56 41050034.61 22916142.25 353.3915539 3328805.055 71554085.57 537.5750447 20602384.63 10701403.04 546129.9289 15710716.05 21706422.99 13321306.97 79547005.82 113246654 657017.2436 11539297.67 75782211.41 1900866.078 104797924.6 15427663.4 8430794.849 10266260.81 5475571.089 91649074.04 6860408.072 26504148.69 1727327.856 2508319.225 4003413.954 902664.8916 127991.1979 +12237076.49 65478141.67 5705395.596 2850848.381 1717931.57 38106171.33 16390466.58 1041673161 55149.61567 18489789.38 4826438.416 51138253.9 2497457.104 29607819.99 563430.3667 118834.5312 48375640.33 65222119.85 16850071.74 17063958.29 452920.9836 7674305.346 6950841.987 57090952.19 144452.5052 32291.55729 31878652.47 45362625.51 27631721.57 51302.69718 27999439.94 764692.0493 6883450.715 2453658.704 5153910.86 15528315.31 21673716.98 2381243.819 350213.938 192503.3837 16104285.11 44927611.36 207727.772 19412437.62 50314309.54 623972.2587 13655073.31 1152911.946 102930.189 237527.6728 536295313 2087140.092 113399.4277 11778457.84 1569412.046 717095.2906 2801558.228 1493219.867 33925009.35 3880781.99 5844504.85 677565.6515 29251546.4 19055243.43 8522287.069 2161772.049 9985.202359 86509799.14 50897507.45 665153.8094 14915095.5 231254.1937 4474859.145 2492236.289 13835502.34 5682932.512 101525231.7 4432787.206 173954765.3 207130593.3 544955.6447 657656.7326 276270.3902 8058296.033 919496.1833 71435719.22 136353008.3 19317.72532 150495.3359 25089420.96 +63177552.85 28484109.72 453420.5619 59434211.14 129525.4953 29230816.04 11630040.55 36564.38423 7617810.663 1208050.92 41556747.94 5443162.197 328578.5393 2862620.175 5234046.515 624682.5768 529131.6927 628264.6454 313700.1674 19771177.81 31492415.39 3114021.896 19104659.55 93717.82139 43352398.66 2568255.328 8203758.201 1242627.36 52934.05993 50212.13294 1648634.675 2753249.375 331864.8571 226838.3692 7339106.733 24440707.68 4239.404556 182769.6017 29497776.84 17114506.17 32498174.46 15631500.84 15265498.39 94593.51657 408898.2294 4664617.418 154845504.7 41013.75644 24657945.66 22384377.2 347655.6337 950824.9071 2885685.648 8125.644291 770898.1147 11806063.57 67373754.38 127155.4098 2935511.433 46423003.39 9950332.822 19379737.75 15729428.09 170630230.7 476869.8432 22909799.97 2980055.803 15752.96816 55307584.85 612298.3488 10248441.14 1628816681 15753743.66 5755171.147 6252118.798 17324010.97 29245144.17 43822281.64 17328354.36 22727287.73 51643.56052 19972808.83 14975299.46 805196.2505 457325.4374 7913348.547 231451843.3 151043.5281 82061284.57 4292298.748 +379437.1373 26985943.03 23216039.14 381.6516502 65557818.07 745737.7183 5807.262113 1265282.011 7014404.255 18109519.27 1015939.128 3573163.562 28782421.69 25401578.54 43618.77297 13080737.11 14061621.88 369724.4994 3103112.691 8173231.674 602707.3786 19998126.11 173731.227 133369020.2 39305518.67 57939454.7 23836148.99 59039878.95 25037908.43 28128685.83 10740564.78 5270576.56 1631768.649 3549010.848 39470129.75 134005494.5 29826272.22 4038200.632 4570096.121 54029060.42 4501722.494 1796772.733 72648078.08 2249631.763 1642649.93 23935970.23 17761295.84 44006.23656 1594.108944 65991962.34 1018.355706 14062822.39 25868960.83 28637227.83 563913.6486 2150887.243 24963021.12 29828.76042 1090141.042 3161160.647 1594590.851 339234.3843 57088765.87 33606430.04 40528933.72 673722.5132 40189351.67 3411249.673 3697535.881 39630706.29 5884.477205 47689614.78 2286.058622 33488103.53 129396875.7 1060809.444 1250.364384 2324528.538 40888972.26 11378311.14 2381910.272 5438835.653 20567866.45 7477165.78 37688563.47 43094917.66 7020426.961 13728960.77 749690.8148 4626494.738 +10196.55541 40713930.56 1737678.314 108353832 51474848.21 13406135.47 62376126.42 26894489.65 10315558.99 1121659.655 2148757.542 19587389.57 15262855.69 40386399.75 2114960.155 9627753.293 2016902.077 21427.72956 2072257.704 17436363.95 61581.87665 3918.220814 33433677.43 25090420.28 3120.131471 5320824.34 12761017.09 118543.8876 5461000.58 4677865.785 4266589.047 450321.2176 83536670.4 129469.4748 26490713.44 8068522.507 921970.1631 1289948.227 100166063.4 169795.5923 31341068.99 4402878.038 12453320.29 33970803.9 11113492.74 13062.3454 64231927.79 706292.8733 29289987.08 3963796.729 21771816.4 280900.4015 103394749.9 118937.9945 1330.227377 33515116.03 3524844.03 50954455.22 39574.4277 4394860.428 23672233.61 46946270.94 749484.808 11926442.69 1233394.77 270032448.3 5760977.938 23229664.76 3956052.758 18591629.47 23136519.76 25570939.24 27505086.38 257082315.8 32816.26127 3042482.498 43180913.11 73555.22599 24258.96066 7390649.892 2535961.565 788048.8704 52260047.87 4918963.713 59153.574 5373690.358 2553539.877 953490.5247 13447089.43 59483450.42 +5891491.467 1178.970304 1858778.037 160029664.9 3812838.795 12812157.74 47270600.13 12401369.4 19373229.28 9701589.854 4469047.614 30895563.63 6974359.152 765199.5002 496108.5746 9989314.581 851130.3162 1613565.041 11140161.63 49075581.92 52713344.19 58640225.54 3846795.963 3255689.785 5751419.629 11103491.15 63112797.19 2315286.675 67610909.36 78167594.85 254656.4503 881442.4265 103975852 16993292.68 57682328.08 55900.70693 998677.2271 1548166.158 90.61047345 2195555.776 159913145.9 115521948.4 39989903.97 349396.0003 62092281.7 223325935.1 105022359 12105124.26 323776.9529 8578301.642 14825986.1 37197123.34 1930722.776 68415590.78 364207.2825 12143840.9 679816.1644 3777343.068 9567243.742 2699332.912 5361977.149 279572.121 151084.2415 931142.327 25143151.88 13182894.52 86884615.61 63362191.58 101855191.9 1261000.173 85944694.1 1847856.458 30224428.3 141966429.1 4737585.346 75245383.54 343128502.1 12273259.16 12433421.45 16164617.77 30564006.11 846492.7107 46490.87981 54862581.23 56243228.22 76454756.76 30241056.1 1034663.974 365429.1571 263369.935 +37164108.19 24545705.84 4066703.757 2691604.821 18143.2072 17082376.57 24518.85731 107054.9629 3346146.534 837596.5771 3480103.997 9090131.896 35010.40778 186720.7956 10571107.65 126333937.6 195881.4345 71692740.28 59428357.58 1040558.453 28716694.3 2533222.403 4968753.667 615902.4794 1751195.26 72764.17288 37181346.89 51052806.47 63431266.98 20320333.07 6875657.49 527193.548 81266.43215 247988.5165 63992272.83 34177110.39 11103.55218 116.2398546 54957.66562 6235875.66 15084846.55 37445723.43 90288495.35 227413942.2 26051549.34 3315.169538 20024992.3 128418261.3 3516023.206 96707395.98 1269187.823 4100431.017 49099.80362 46926191 1392184.916 378541.7029 14909638.53 17615049.45 471536.9386 4678543.219 26353880.48 96446733.98 2910633.803 16432979.35 49583043.73 77749786.94 11266873.94 21499586.56 4021526.848 7759471.115 2031366.609 9893805.24 1486339.337 2206150.979 18786841.99 16652770.96 17388846.39 4865721.089 331988.9424 12516098.03 96671.83923 16309401.3 408.8362773 15498080.08 6831580.341 392353578.2 18289971.29 41872153.66 1991823.379 52572413.97 +287541.8952 106712.1168 89590.75921 6055209.852 776591.6793 11248478.5 182648723.4 26096206.17 31450509.4 16406757.61 16045696.98 1334225.818 183723.1128 8270670.695 7169.775295 21164988.62 539419.0179 43531357.72 15794111.29 21753743.09 6642.420471 25188597.68 32699038.11 3213196.265 875971.2333 72086981.66 29545904.42 3634244.682 15232866.95 8856361.208 87873896.67 9077563.077 6033.598206 19664868.27 9659603.53 6318507.741 508813.1991 1707867.735 12617039.25 19352434.48 35406.78688 10863156.56 36171422.02 999150.5248 32334016.9 28469982.61 41384702.54 5059382.046 1534907.795 136115.0215 26999218.56 18591373.63 721991.8195 262657870.1 28463443.37 1116015.691 1087708.25 3532117.874 8226312.88 26549074.88 1532832.249 3511031.266 19076223.01 8419367.909 41435.8401 35111221.03 2994630.831 10484245.03 204326.5112 105510.9861 60586641.93 9555821.342 696928.2258 27799165.96 12233962.14 17668045.05 14746633.94 49977.74032 13958872.97 452722.3004 73189.20156 54968528.42 203408196.6 7734652.358 3136597.477 8314.65955 25404069.66 7529599.188 393020.2763 2142374.501 +17113767.71 5917771.18 45948691.09 1112746.542 7464063.649 11379934.74 25473923.82 1680434.701 31824699.97 2244292.032 336294.0529 42317943.89 3453314.95 76348131.57 9046932.41 2927489.579 429.9639338 85388.18674 8314733.707 140154385.6 3110207.498 18639543.13 366804.5263 9879455.75 4098568.982 1558593.348 21353180.39 326774.4402 356612.6831 45322240.08 13309681.23 12590211.12 2068049.428 9806413.548 142348201.1 3671804.957 655927.7546 218834.0345 97.33474042 8416337.904 5005990.45 314609.0158 82985327.65 9903959.503 543118.3416 25806585.64 319758.3448 22010508.5 8557830.489 2533496.452 954240.037 2085299.594 45643.53516 195084829.7 2899500.209 1664994.357 42214384.69 11638293.63 40676712.58 197134384.9 19320690.58 51378.01845 23174570.96 743134.3571 313309.7751 2734703.63 7858033.832 3206.176309 386789.0351 22146376.23 65258500.06 126575.6081 1010909.221 20857277.62 188358.8733 8119464.818 23801542.2 444726.6749 58370549.71 23978959.65 61364048.06 10177632.88 723651.3737 53997.01272 1416105.018 136050688 141834.0133 49840285.75 5792049.816 20613707.16 +1375172.42 797464.493 5019450.706 31044990.57 7689.958057 1091982.383 16258680.5 2678079.102 82768.89333 11199901.82 58600456.17 647876.0737 27604817.07 88850327.26 8192765.264 190117.607 67155034.42 93836959.95 84442.09331 16730.92747 2695927.685 4796135.9 22727402.17 23214.09937 8787296.908 463278.5079 2200084.078 28248292.07 18424756.66 8594766.37 87053681.28 93055123.46 1027944.013 573849.3122 189752086.9 171734.1582 46766202.27 260474.5563 661665.4 2022557.005 2448316.073 2377432.831 75356447.4 1636456.944 655296519.2 123176347 67612605.43 22911994.8 21210295.45 21281687.26 4188501.96 8645835.541 2633084.71 17395041.64 23786905.76 642025726.2 11210966 4560079.098 405047.5921 65091265.61 50727.13395 2254180.086 1085374.173 4572896.644 190289.5307 6476516.681 4504517.194 164806.179 387685.6285 10942913.51 69869.72625 12522.57822 189104108 28527073.16 84264.19795 12395068.66 24699992.3 74803.54401 12641867.25 8963039.706 102654177.7 406211.7161 29489264.36 17774513.53 1369196.069 3878503.752 311649.0816 43836447.95 1640435.837 4923822.877 +66451878.89 37274762.29 82305858.13 288601.0014 69746944.53 12855071.05 11956922.02 69417.26458 23612208.25 740231.7179 1091.706815 3695653.453 3478492.821 469786.5014 67886262.69 147.2742064 1636068.338 11969630.09 13060674.78 5095097.904 30734.17429 36040.06952 62728333.2 5681616.027 9450.444571 17005667.65 17939093.57 595188.52 12228111.02 463454.5568 63233.08397 103975130.1 63000483.37 78883.17375 17939205.29 8672713.034 84765434.41 45165073.76 317942.7953 138089924.5 39837863.63 6901619.312 75628472.21 40459.99361 107000771.5 77507813.07 25170985.75 6425522.721 16340999.71 107264.4684 4066488.904 38310533.36 26465754.99 12069190.47 3764947.873 145503185.4 37172724.08 634248.7255 218127683.7 2695445.343 104309174.2 1106439.557 84549040.79 843169.0938 122358665.2 53658532.62 140697.3592 4171.961415 7796636.622 19596.895 28131005.87 11238262.14 7476709.723 22559173.9 4066952.709 104390.5645 75537510.64 11629635.87 64626005.97 18073462.44 9577024.481 37861.80905 24714673.45 9874843.866 15846510.66 22112702.42 13236.24241 175289.4315 62501989.51 3951202.994 +74454.49114 5796588.15 23677677.11 2300.715502 165343695.3 29024334.63 513764.7591 29318465.05 4142550.125 18247560.09 29428897.6 2225291.507 14811729.18 12729822.49 834624.1622 323088.3117 29166227.28 4855185.475 8403062.936 2476537.589 66824156.02 1674.908466 2902290.729 7704354.662 20307428.62 89441364.39 1285850.85 7004668.078 171115414.4 10146827.31 33383674.16 86606741.5 55625590.14 23058863.56 1712049.87 36088.54172 4030711.204 751.0920273 19282252.18 4282275.084 4257680.568 42357150.5 74058.96478 112714447.9 10027982.14 41945.38407 1786358.04 19212698.74 53714898.56 164315496.8 6969786.113 14653793.05 676753.9448 1215859.655 11089.38022 26761240.74 295552429.5 393728.2339 1221887590 53645296.54 680784.0292 71151.03051 1362645.775 372515.5795 6747.978714 42165414.31 153597931 18323890.75 87669421.68 44416351.13 47008799.02 9021478.584 7844218.811 5463187.034 29010473.14 5305201.815 1842047.723 69290.71785 46633300.67 649953.6089 46044060.13 13426130.25 4284.56584 1186148.048 1161555.264 356459.7763 258519.7311 299694618.7 13639832.6 4964421.685 +8872015.512 2156439.123 3332764.952 1565757.484 6906453.437 213867.7438 2699063.739 11125595.59 10846788.21 1415268.641 8605255.83 41340614.94 2771.177008 39239142.4 6634339.983 11293050.41 90859703.74 157776825.1 819088.6704 5521729.36 21257526.29 8092172.25 39058392.07 106190.3463 10797056.96 99961236.53 17551129.85 68913529.81 9771787.129 18314577.32 27556956.71 226638072.5 11256074.61 5241296.879 29452292.68 79560703.08 30654356.79 16921483.12 11980135.92 309641.6631 14778329.54 110129492.2 99757549.46 393346.452 222135.3006 34354.44439 243628.0063 264302.2082 28830377.49 3265531.788 2841140.083 867.9813484 34.28573369 217942.3828 144527.5408 1594174.735 3619738.025 16155075.04 805947.2235 7082112.09 31963038.63 10508128.31 20336106.29 32056815.77 4193896.136 691999.4628 29875427.43 7575311.526 579630.9063 3594.884246 9776.865712 464808.5199 8787685.696 12448140.05 78288377.27 183714.8403 29095696.4 67354486.23 38068618.71 78789270.22 156537761.5 4963770.349 44919880.6 14498282.16 41405227.56 123110983.9 2653648.985 6362620.103 1648867.523 49306565.62 +18810764.02 876398.4977 408154.1337 2289987.115 9601809.424 2507773.91 217455.1068 78460198.16 24941491.84 112191408.3 4203072.042 27363182.24 18223215.09 2228563.501 2080110.318 36816575.18 24239783 1015286.498 30018139.31 6403089.801 8729270.18 4254550.828 9047519.163 649589.9479 24013.11331 179639.0821 9419703.088 178431.4894 120748.8217 2483393.901 52600049.54 19001840.2 33995317.2 1295880.857 1002080.184 36086504.16 9087590.901 15270028.53 15181.95091 2469307.927 3868618.665 1024776.739 975250.1776 1565677 8675424.265 395104.8757 12894205.14 59440860.44 10986.94542 5291845.49 35197984.79 7022773.835 148370109.9 27848.64953 11972204.33 45232519.48 19831510.43 1157334.727 142601407 568378.2261 1392914.64 7817928.202 19110559.96 64479348.51 10743758.46 5210654.413 14231390.35 5211655.359 68598667.43 4488910.655 3849367.216 131287.1708 42882672.81 18915716.59 463400.1601 66870.13664 7605312.36 22117717.08 2926.079938 1378507.459 49787788.52 304855.1155 1278303.151 14788622.74 11537554.19 78527.22821 24582092.73 7853282.961 293787.4278 22840887.61 +16837520.46 69194759.39 443122.3601 4987814.575 7546777.553 369796.0207 4561591.255 4446867.822 46298.18845 478374.0032 5878.146905 58734368.75 32042365.77 1725307.56 389917.2595 60537.08272 82569.79953 2554740.599 55081469.69 11102991.24 32204955.08 435619.5267 2243855.642 49464.14584 298061.1547 16342132.09 20251153.34 4202964.392 64075543.62 35603182.77 639717.5643 54369381.11 38412748.72 33158142.81 244009.6315 82596874.38 26686988.98 15327.87663 21536382.92 4112626.07 9974660.741 5185472.832 33489688.6 541839.9715 6707669.128 27564350.2 31452207.35 13390668.45 3821.771756 4773804.857 18568442.01 17826992.59 17466225.14 262624.3507 44752.18696 24846910.4 31079329.03 2638504.242 15976519.18 6520621.261 2939717.272 13899539.78 15535.43586 35790791.11 17527.50117 1055409.819 207398.8115 65958079.64 11828911.13 19745556.43 2668146.712 4674489.936 85431909.43 9435508.566 362664.694 304858.0502 35734840.71 12212560.08 41634219.89 4282582.803 5956658.136 10488015.9 13701907.59 659968.7901 3457619.256 56297073.11 365035.0025 7534451.663 59143315.74 1188734.018 +7870103.482 1724328.94 2067730.299 333521.7535 48790753.88 7506225.144 1325779.413 4950302.917 13034862.41 36385353.49 11607848.55 1647296.696 43698.13435 25920.602 21292331.45 2210569.522 33628488.91 53095714.67 231084026.4 252041.984 12807069.45 54316656.79 27516580.36 118384990 24278222.29 2912803.853 144713.4952 25616602.95 324634.2421 141870.9489 35964.41186 24026732.55 29700977.54 343849.6518 48627413.3 838257.751 54082369.72 54898897.35 18973919.39 47913990.11 34925619.25 25658359.44 282984.3963 19710321.85 191806069.7 77111901.98 35139255.63 5714979.231 35870134.36 2759114.046 198.9007726 53157024.74 31600354.6 569485.8618 12249474.48 4500343.168 1538260.769 3350011.815 532815.5604 154827.9341 604882.9673 65149270.27 13912560.51 19056115.61 8820793.676 62392327.96 71571644.46 488715.2533 905311.1494 46205932.32 48993574.79 7327924.132 3754477.922 23323891.24 188217161.6 65467.66902 19807744.62 725572.4503 1158665.226 100313.924 20156544.17 7312812.998 40430717.63 18957901.81 18976159.49 107841807.5 10105660.47 26832305.38 10737032.56 20059099.63 +# Events [PSD_cut/PSD_cut.dat] N: +85 90 97 81 86 92 82 99 90 71 83 91 73 86 66 91 75 72 99 68 91 81 81 94 95 76 90 80 89 84 90 85 100 96 91 83 84 103 77 81 78 74 105 105 79 97 82 85 81 88 90 84 87 86 66 84 90 97 87 94 87 76 93 86 87 87 78 64 84 93 97 98 79 85 93 106 80 78 122 77 86 74 64 76 82 92 86 104 83 78 +99 103 100 82 86 104 90 96 92 73 91 82 70 102 92 85 68 83 76 79 93 92 73 89 73 74 72 71 72 86 97 72 89 91 88 86 77 91 88 79 94 94 88 101 92 82 71 86 69 93 71 85 78 84 83 82 63 89 100 84 87 96 87 98 69 83 83 81 79 91 86 82 105 96 91 100 97 106 85 80 92 98 83 91 89 84 74 90 85 83 +84 92 68 80 89 71 81 88 99 83 89 82 79 84 93 87 77 88 74 86 78 92 84 81 99 70 76 100 82 86 83 91 79 87 76 86 79 85 67 96 98 78 81 75 84 80 91 84 94 70 94 94 92 81 93 80 77 89 93 93 80 93 81 77 75 67 87 95 87 79 96 81 76 77 98 92 75 84 88 88 91 84 94 83 75 77 93 95 86 89 +72 82 85 82 80 69 94 74 92 87 73 73 81 88 81 79 87 97 82 77 101 83 85 96 76 97 78 82 76 88 85 78 84 79 87 73 106 77 90 97 98 100 88 94 87 80 95 91 84 83 91 76 103 96 86 74 78 92 75 88 79 83 90 90 94 107 98 78 70 82 100 106 101 70 80 82 82 85 90 88 90 84 95 72 80 75 82 84 79 80 +69 83 105 70 67 72 83 88 85 84 103 101 77 87 84 90 80 79 88 80 93 82 80 94 85 78 74 88 81 89 79 107 89 95 80 86 80 73 72 85 88 89 84 98 90 72 94 86 86 60 77 85 95 73 66 82 97 106 70 81 74 96 79 90 73 78 84 75 66 85 71 89 97 86 75 101 78 79 81 90 85 93 93 82 96 87 78 80 81 79 +66 87 88 84 79 88 83 88 92 75 81 99 87 93 84 84 100 87 70 90 88 78 82 67 81 85 80 87 80 75 98 80 86 78 85 96 80 79 89 86 90 90 75 82 99 75 79 84 81 97 95 85 78 103 91 82 99 73 81 92 109 69 86 104 85 80 79 93 89 90 94 95 83 83 73 71 85 74 67 93 93 93 96 91 79 85 83 96 85 77 +86 81 82 88 87 71 85 85 67 76 90 95 82 87 89 84 84 92 93 88 98 80 82 93 100 94 89 86 102 87 69 93 95 76 84 84 87 76 92 89 95 91 91 69 87 93 88 89 79 88 92 90 113 87 80 85 89 83 81 94 83 83 81 83 93 81 83 77 82 92 93 94 82 89 89 74 95 74 97 82 87 82 79 78 87 82 76 95 77 87 +59 94 90 77 87 77 85 92 95 92 85 78 99 92 92 65 84 79 75 86 64 88 74 82 88 83 87 72 75 80 80 101 75 91 82 93 82 107 85 96 72 93 77 72 98 79 90 86 62 97 101 100 63 97 87 91 80 90 82 82 84 86 89 79 93 91 91 73 84 82 76 83 76 83 81 76 81 85 87 96 62 96 110 99 87 85 77 80 74 93 +69 84 71 88 93 78 85 82 80 94 84 88 58 91 83 75 84 105 81 84 71 105 91 88 86 95 95 74 85 83 72 96 99 90 64 81 98 92 79 94 100 87 90 72 75 83 78 84 66 83 64 91 69 88 66 75 91 91 73 75 101 98 105 87 87 93 90 73 78 86 78 75 87 82 90 90 69 70 70 91 101 67 75 81 89 63 85 93 88 81 +84 73 87 82 66 78 94 86 96 94 85 65 91 101 81 97 91 86 85 83 85 83 79 80 73 81 81 87 84 82 101 78 83 61 84 86 87 77 90 85 73 78 95 100 83 95 84 82 89 103 97 73 82 84 78 83 96 77 89 94 81 69 98 84 85 71 86 106 103 92 70 100 99 87 89 82 84 92 87 76 77 77 88 83 89 83 76 78 85 72 +67 89 75 97 92 78 93 123 91 100 95 95 71 98 76 78 91 92 76 76 79 108 81 83 92 86 77 91 70 98 87 90 80 84 83 108 93 91 73 93 97 93 78 85 87 91 79 82 81 84 88 96 99 89 90 101 79 63 85 88 88 102 73 73 93 76 88 76 78 77 73 63 80 86 96 96 94 112 86 82 92 86 66 79 70 68 72 71 82 93 +84 68 77 83 84 88 72 75 84 76 101 86 74 93 87 94 74 89 80 74 75 92 87 93 78 87 81 79 77 76 89 75 88 80 92 69 88 83 87 94 87 78 88 76 82 74 79 97 90 82 91 109 96 73 95 99 82 75 99 95 83 81 88 92 93 74 86 82 86 88 86 88 79 95 79 77 79 85 79 81 74 93 86 73 76 96 79 91 81 86 +95 83 91 73 96 82 82 91 75 83 71 80 91 88 80 77 82 93 79 74 78 81 85 76 86 96 79 78 86 91 79 104 92 89 67 86 76 74 83 79 86 97 76 78 95 75 89 86 89 79 99 81 85 73 75 106 87 79 76 82 80 81 101 88 89 75 89 77 73 62 78 94 80 79 76 99 101 97 83 89 92 79 95 75 79 75 83 74 70 102 +90 73 87 91 93 92 82 83 92 77 79 79 91 71 97 80 83 73 88 106 78 78 89 85 100 77 94 103 82 77 72 95 93 80 76 71 85 85 75 81 103 101 87 79 77 93 93 76 93 77 77 77 80 91 77 87 87 88 102 86 90 59 84 106 75 92 77 78 84 96 67 84 93 73 74 99 82 78 74 86 88 72 77 80 86 92 96 89 93 91 +89 86 103 82 77 86 99 78 84 91 89 80 79 99 91 87 66 85 72 82 79 83 70 96 88 104 95 91 69 93 68 75 84 79 76 84 81 74 105 79 98 86 85 88 87 80 88 86 96 100 82 81 84 72 82 94 79 81 71 83 94 78 76 84 93 72 79 98 77 87 86 94 90 90 90 64 82 75 82 95 84 66 78 75 83 82 86 88 87 84 +105 96 83 63 90 82 87 89 98 102 75 78 93 88 91 74 74 95 95 96 77 91 86 91 104 91 80 97 81 71 80 85 102 77 89 76 70 89 89 94 74 91 75 71 86 80 90 65 83 73 91 76 71 102 84 78 100 96 83 84 76 100 80 78 67 84 95 101 80 93 95 95 84 88 89 81 91 107 80 75 84 73 78 102 88 77 83 82 73 76 +100 89 74 95 95 89 86 86 80 84 80 86 88 82 101 104 89 82 85 95 92 95 91 83 79 91 70 87 83 100 83 87 93 81 87 83 64 87 83 89 83 99 81 93 88 80 96 89 76 68 100 71 98 92 72 81 95 89 80 80 84 70 86 79 72 93 80 94 92 85 88 94 101 79 103 89 77 89 92 83 91 84 77 85 71 75 91 103 90 97 +85 87 65 90 92 92 92 86 87 101 92 101 90 86 77 95 77 89 102 83 72 84 87 73 74 80 79 102 75 100 78 90 82 88 95 68 56 88 76 78 80 83 62 101 80 90 98 88 85 96 71 69 83 105 88 76 86 90 78 102 79 94 85 81 70 99 77 83 70 96 78 94 95 88 94 86 83 81 84 86 90 89 89 83 97 91 87 82 87 92 +78 81 90 86 62 94 96 94 77 103 98 90 95 84 92 87 89 85 70 91 96 86 69 84 92 71 79 95 82 75 82 79 75 72 82 81 69 72 74 59 84 83 88 90 97 95 88 80 94 86 87 91 78 80 81 77 102 75 73 92 82 84 86 79 90 79 88 73 93 85 96 90 98 88 76 78 88 85 80 89 105 80 76 80 72 92 76 85 88 83 +92 68 87 78 96 94 88 88 95 92 80 98 80 89 74 80 97 86 71 90 92 84 78 83 74 79 79 73 92 75 79 89 82 87 83 88 83 77 101 98 72 71 69 77 83 96 88 92 75 75 99 85 86 82 81 83 85 87 94 104 99 76 103 83 78 87 73 95 88 75 80 76 72 74 81 71 87 67 93 90 75 76 82 76 85 86 102 81 89 83 +82 88 85 72 75 97 81 99 88 93 77 89 71 79 99 74 85 82 83 82 86 104 88 90 95 90 85 81 87 92 108 98 68 81 93 86 88 103 78 95 88 87 78 80 58 98 65 92 81 91 92 86 93 84 88 80 75 73 87 85 108 71 71 75 82 78 75 76 83 96 78 82 79 91 87 81 88 84 100 84 83 79 77 87 68 96 86 81 79 76 +96 75 77 103 83 79 88 97 70 83 77 101 83 82 119 94 79 72 92 83 80 92 77 95 84 76 79 90 82 94 83 80 78 71 91 90 82 98 89 70 91 82 77 84 92 73 94 106 89 83 88 93 75 78 86 96 69 92 86 88 93 83 92 84 77 88 77 85 85 96 77 79 83 77 76 79 79 95 75 92 97 61 87 105 92 88 84 99 80 91 +98 83 98 93 74 92 83 89 83 75 87 81 96 70 87 70 83 91 68 84 90 71 85 83 80 64 99 96 90 83 75 104 91 86 90 80 88 83 84 65 95 92 94 80 97 83 81 79 75 79 96 95 87 81 86 105 78 85 74 99 88 88 70 94 81 106 89 77 71 71 69 105 81 73 87 90 88 87 90 91 89 94 89 92 93 83 88 81 114 94 +82 88 69 88 73 76 88 76 79 94 90 85 80 95 74 91 82 87 94 107 95 86 71 90 92 82 98 80 75 84 90 77 87 87 92 81 80 99 83 80 74 98 75 72 66 75 90 86 86 84 91 81 80 78 95 89 68 76 78 80 99 65 95 92 83 79 80 77 76 98 84 83 90 84 83 102 83 78 86 87 71 82 83 80 86 85 91 87 84 97 +85 89 93 80 91 79 64 83 66 86 89 79 91 86 80 82 74 88 86 83 82 82 79 95 79 102 83 82 88 87 83 80 95 80 105 98 80 102 75 94 97 91 100 89 66 76 83 108 89 88 91 90 75 82 96 87 71 90 95 89 74 95 77 84 84 88 74 80 95 88 95 70 86 86 85 96 84 78 78 65 82 79 85 103 90 108 73 107 87 77 +88 70 91 95 91 89 81 84 58 77 79 77 108 91 100 75 82 84 95 93 76 78 85 83 88 82 57 81 82 98 82 71 73 99 91 58 88 93 89 79 80 93 78 90 65 78 91 76 84 89 78 91 72 89 81 63 88 95 87 92 84 82 85 85 89 82 91 97 91 77 96 86 88 83 98 85 83 74 70 76 83 88 59 86 85 80 91 93 93 81 +76 73 94 96 98 103 81 84 93 78 81 72 69 90 80 83 105 87 81 95 78 91 81 79 88 82 82 79 78 77 95 82 82 70 91 82 101 87 71 83 99 77 88 85 91 76 90 90 81 76 77 91 94 86 92 80 93 81 84 84 85 81 95 96 89 83 67 86 94 80 84 97 64 81 99 65 88 99 81 84 76 79 74 73 85 95 95 90 74 90 +94 78 83 87 89 86 77 83 93 86 92 87 95 79 90 80 95 95 103 73 96 92 88 95 107 73 85 113 102 90 82 99 77 86 84 81 88 75 84 78 98 87 73 84 106 77 79 83 90 71 79 84 81 93 75 80 85 83 74 88 88 84 97 82 99 94 76 82 84 86 81 102 88 88 78 90 81 82 92 83 95 78 72 74 84 91 78 91 72 83 +86 95 75 82 103 90 88 99 93 83 76 77 69 87 84 91 104 78 67 83 85 87 104 93 85 80 101 70 85 80 81 91 96 74 99 88 85 93 93 81 87 82 84 86 82 83 88 87 82 77 82 73 70 90 80 85 83 74 91 71 87 86 86 86 83 76 80 100 100 89 81 94 100 90 92 82 90 72 83 75 77 79 72 82 86 87 93 71 95 83 +74 84 76 93 98 75 84 77 95 67 64 72 64 85 76 87 81 97 74 71 91 90 93 92 87 90 75 89 81 85 94 96 76 85 84 79 82 87 74 95 78 80 68 83 78 86 74 76 85 95 84 78 94 82 82 83 69 86 79 84 88 86 73 84 86 77 88 87 77 77 85 82 89 92 90 93 83 85 92 82 82 78 86 61 85 81 97 74 94 81 +84 84 97 94 79 78 70 85 67 74 91 63 82 104 89 88 97 83 89 103 77 90 87 73 103 93 83 74 78 84 79 75 81 78 87 83 82 89 99 96 96 80 70 75 87 104 71 97 73 96 77 79 80 75 84 113 75 88 75 85 84 89 82 78 69 86 86 91 86 90 78 95 83 80 93 85 82 94 89 89 91 94 94 76 92 77 80 94 81 78 +80 89 91 92 91 89 86 83 115 88 66 77 93 97 85 74 76 80 83 100 80 69 76 87 76 79 81 96 85 94 89 74 90 84 92 90 86 88 105 88 92 75 84 82 93 89 102 83 81 75 95 71 89 97 89 86 75 78 83 73 101 98 96 100 97 71 83 83 77 68 99 101 83 90 92 82 81 86 86 95 93 79 74 93 100 85 90 71 92 80 +82 97 85 92 83 69 87 88 91 92 83 82 99 94 79 90 80 78 67 73 84 89 78 92 79 88 87 75 84 96 85 93 84 87 69 82 73 75 88 109 82 72 84 78 94 67 79 93 74 86 85 95 92 78 75 77 94 86 77 102 89 92 84 84 85 89 62 78 87 94 85 85 96 77 88 99 76 96 87 80 81 94 111 91 81 89 82 87 94 78 +74 76 79 75 64 95 92 84 87 99 93 102 90 81 83 98 74 83 76 96 83 94 75 95 90 74 105 81 81 87 105 75 82 78 84 83 66 102 71 76 66 83 95 74 93 81 99 83 102 85 91 75 90 91 80 82 94 78 73 91 81 97 81 84 95 82 83 85 89 81 85 75 88 95 86 84 94 66 86 89 85 97 70 84 86 88 93 81 93 91 +81 82 68 87 98 79 86 95 71 94 84 75 90 83 73 92 75 79 84 95 78 84 98 73 89 77 73 95 80 92 93 83 88 81 87 82 82 66 100 71 82 96 80 74 82 79 89 90 71 87 88 80 73 76 83 82 78 84 94 78 81 110 86 97 89 74 76 79 90 73 82 95 84 90 78 87 98 107 74 95 73 81 77 83 91 101 90 82 86 69 +85 92 86 72 86 74 96 87 90 87 87 82 100 85 91 81 70 90 93 84 88 68 74 98 95 78 83 89 72 94 87 85 74 90 75 89 70 88 84 73 95 92 83 74 86 93 105 95 81 74 100 82 76 96 76 77 94 102 99 82 77 81 102 90 70 89 81 79 87 87 91 79 90 96 77 75 83 96 89 72 103 96 83 100 91 92 92 78 91 94 +68 81 81 89 93 84 86 81 84 83 87 82 99 87 103 86 79 94 82 81 96 72 77 91 79 74 78 92 101 88 79 80 92 76 70 82 91 92 91 100 77 59 87 85 105 73 67 81 91 73 84 69 82 94 88 95 92 89 83 94 86 81 93 99 86 92 97 98 79 84 81 79 81 75 89 87 88 76 73 85 77 77 88 68 73 68 88 91 81 103 +92 88 96 87 76 86 85 86 68 77 97 91 74 88 88 98 87 91 72 88 80 74 72 88 77 86 83 86 82 79 70 91 89 89 76 77 83 89 98 86 67 94 90 71 85 86 87 91 97 97 93 91 97 86 84 73 92 90 111 73 108 87 94 96 108 75 81 81 63 89 80 88 86 93 92 91 85 84 77 92 92 71 91 96 77 87 91 82 71 89 +76 83 71 94 72 83 75 79 71 83 81 62 75 88 81 86 86 78 80 85 81 84 91 83 91 66 80 89 77 94 82 75 79 100 96 103 83 86 75 109 91 103 71 90 97 87 76 83 68 99 86 80 88 77 91 94 97 85 86 79 84 80 77 86 112 89 83 91 80 81 77 73 92 76 92 96 102 102 93 74 78 94 80 91 98 77 95 90 69 78 +78 86 82 109 79 88 78 80 91 89 90 85 82 94 67 84 89 84 71 96 84 81 77 93 89 86 81 89 90 95 90 83 101 78 88 79 84 73 98 81 89 87 87 92 84 84 82 72 79 102 80 78 96 91 76 78 93 82 91 78 79 87 73 93 74 89 92 88 84 92 95 86 85 72 71 82 78 99 88 90 88 95 89 74 78 77 97 98 86 77 +100 66 80 75 78 98 76 82 70 72 95 91 75 92 101 94 82 94 83 65 80 89 91 66 68 89 75 92 79 88 88 88 83 92 99 76 83 76 91 86 94 82 91 89 86 81 92 71 109 89 77 86 93 71 84 87 87 75 80 90 87 94 84 82 93 84 92 78 91 82 82 92 85 93 78 83 74 87 91 95 73 87 80 92 92 84 63 80 95 91 +92 93 82 90 74 69 65 81 80 72 78 90 92 104 75 93 86 82 87 70 79 107 89 80 100 77 90 98 85 83 89 83 86 101 81 101 88 96 101 76 95 72 98 93 66 84 69 85 78 71 85 99 82 90 91 84 87 92 89 70 88 90 98 91 87 91 83 91 95 95 79 86 84 100 82 90 86 74 83 77 91 71 85 91 87 77 72 82 66 79 +82 72 86 81 94 94 93 77 77 79 91 77 98 86 73 92 104 78 94 85 93 62 83 95 99 79 75 94 92 106 79 89 87 92 78 101 79 89 99 79 80 85 91 91 88 80 89 100 91 80 96 111 98 77 92 84 76 82 90 98 88 73 72 91 86 90 94 89 91 78 90 86 85 79 66 93 87 80 86 94 72 97 88 86 73 78 80 87 90 91 +76 81 84 81 96 108 91 91 85 102 93 98 64 91 84 76 81 80 94 73 80 95 76 88 99 86 101 69 77 86 90 69 73 80 90 92 96 81 85 96 74 90 88 90 80 84 75 72 77 93 99 88 86 79 80 88 78 91 79 93 82 81 89 96 87 77 97 92 80 71 68 83 101 82 79 90 98 79 70 79 85 89 96 87 85 95 77 81 90 75 +86 100 86 92 86 77 90 91 98 74 70 91 85 72 82 93 83 75 81 83 92 85 89 75 82 98 83 75 99 84 73 86 76 79 81 93 77 59 81 95 74 102 83 72 107 88 77 92 89 90 79 76 94 94 95 88 97 94 92 84 88 77 98 95 95 75 81 79 89 79 81 96 73 97 79 81 80 74 98 88 95 97 72 93 92 78 90 86 84 86 +88 101 89 72 82 80 89 79 99 78 95 71 109 102 110 80 87 97 78 88 94 86 74 82 88 89 108 78 78 89 93 81 95 79 64 87 85 82 95 104 104 97 98 83 90 74 76 66 79 88 76 82 80 78 78 80 85 87 86 100 82 68 83 91 84 83 100 112 83 78 85 87 98 83 92 93 84 85 81 88 79 96 100 75 92 85 87 77 82 76 +79 76 81 84 79 101 71 87 75 74 90 85 82 84 76 92 76 100 86 68 92 77 93 88 95 100 93 82 76 87 85 96 75 86 88 86 80 91 69 87 80 97 96 84 81 82 71 79 95 78 70 93 99 99 74 92 71 93 92 106 85 88 70 87 101 75 94 100 86 80 81 82 91 93 75 87 92 90 82 77 90 76 79 95 92 95 78 89 71 96 +82 89 86 73 85 75 103 92 73 101 80 111 71 91 81 69 84 77 81 97 98 69 76 86 82 78 86 84 75 85 70 84 87 71 104 88 91 72 83 101 89 84 77 98 83 75 93 96 94 80 76 84 105 72 99 99 85 94 77 102 79 83 92 86 79 78 96 97 89 76 95 102 81 84 81 94 99 118 94 74 81 75 90 84 71 75 93 90 79 82 +79 98 80 86 77 70 89 83 88 98 69 90 92 101 78 76 72 88 90 86 96 86 90 90 86 79 85 72 86 84 98 86 93 96 106 78 80 78 107 82 88 72 91 80 83 90 82 79 90 81 95 86 77 85 76 79 86 85 103 87 89 89 95 75 86 83 78 90 97 94 99 108 87 80 75 81 96 91 81 79 73 82 95 84 89 76 75 75 87 82 +85 84 92 88 77 92 85 83 69 103 94 91 97 91 78 101 87 96 81 82 96 80 71 83 86 83 87 91 79 69 85 76 82 88 73 102 98 78 96 76 88 96 74 84 77 71 97 94 80 92 103 74 90 97 89 90 85 91 81 82 83 77 93 92 76 66 89 83 86 77 88 90 90 72 69 63 72 89 77 86 86 90 80 81 75 84 92 84 72 87 +90 82 80 91 74 87 94 89 91 90 69 87 117 78 86 86 73 86 89 78 73 65 84 89 100 82 70 88 85 85 86 99 95 78 78 86 90 86 93 91 85 83 99 92 77 88 76 85 89 85 61 78 93 90 91 75 83 90 73 102 86 73 70 69 80 90 88 91 95 96 84 88 97 86 84 82 73 69 100 81 75 86 74 87 84 87 75 105 77 77 +89 91 73 87 79 75 82 86 94 80 86 76 79 80 77 89 83 76 70 95 83 87 79 86 74 88 88 81 99 91 101 70 62 72 76 78 85 69 91 86 83 100 82 98 81 76 98 95 99 83 99 75 92 81 89 99 71 98 84 86 94 77 96 82 87 84 85 87 85 86 68 91 71 97 91 96 100 87 82 89 92 110 76 89 98 82 89 88 84 77 +87 93 71 80 100 112 89 85 82 76 88 88 83 71 85 76 93 92 87 94 90 88 94 83 105 77 68 90 87 82 81 100 84 77 91 75 85 85 74 96 109 81 83 85 81 88 94 93 94 99 90 82 83 91 71 81 83 92 74 97 89 92 82 76 87 112 86 102 72 81 78 98 86 72 83 90 93 72 85 92 87 81 73 72 84 89 96 90 99 85 +90 79 92 82 79 87 81 88 103 91 69 81 95 105 92 74 86 83 81 96 87 89 84 88 82 83 91 80 84 81 78 84 73 98 85 78 94 91 104 65 86 76 81 82 84 70 84 82 86 109 98 107 76 68 93 79 99 96 81 96 85 87 94 87 87 85 87 105 88 84 86 69 101 101 87 89 76 92 87 81 83 76 110 100 95 98 67 89 86 66 +83 87 93 95 101 78 100 75 102 77 103 89 89 97 66 87 77 75 82 79 83 90 106 93 81 80 98 73 74 60 83 90 91 91 86 94 88 86 76 94 93 71 81 94 94 96 90 86 95 75 80 87 87 90 92 82 82 88 93 88 85 71 93 77 94 81 79 82 78 101 101 74 75 88 72 78 101 93 84 88 92 83 84 95 77 98 79 82 94 73 +72 88 94 84 80 98 85 92 96 94 98 80 85 83 83 96 83 100 76 79 97 75 70 91 76 77 76 94 94 82 80 100 81 79 87 87 83 86 81 87 92 85 71 68 77 98 78 85 89 87 76 79 73 77 73 92 83 84 98 83 92 76 81 79 94 93 74 95 78 84 87 86 103 85 77 94 95 87 95 81 71 83 85 99 97 95 88 81 80 70 +80 82 95 89 73 91 101 89 91 85 73 79 82 85 121 77 70 66 89 87 84 86 96 79 95 96 92 83 81 85 102 90 89 92 91 85 76 70 98 83 76 68 87 92 92 88 97 88 94 94 91 88 84 100 74 91 91 106 108 89 86 73 81 86 81 95 92 76 93 92 85 91 82 74 88 79 84 83 85 107 77 76 83 88 89 79 85 74 90 95 +91 83 101 94 73 86 90 84 97 80 105 94 99 74 84 66 97 78 74 87 80 93 81 73 96 71 91 88 90 82 82 74 92 87 84 77 83 94 97 76 82 110 91 91 83 72 99 59 86 84 98 84 94 87 84 78 95 84 92 81 82 90 85 93 77 91 93 90 87 72 99 79 82 87 95 75 73 83 77 85 81 93 90 92 86 83 92 94 87 80 +80 82 76 89 90 85 100 76 73 86 93 81 73 88 98 87 89 86 97 63 101 95 85 74 86 77 90 79 81 74 110 64 96 93 81 77 80 87 88 77 78 102 79 83 97 80 81 67 65 88 90 89 94 71 85 86 73 87 97 75 69 82 90 88 101 104 69 102 79 80 92 86 84 82 83 87 90 99 97 80 78 108 89 82 80 112 79 86 76 70 +94 82 91 81 69 73 65 93 83 88 92 78 96 72 79 85 65 72 86 94 91 69 85 86 78 83 80 91 87 82 85 89 91 80 95 91 77 76 108 89 98 81 83 80 94 76 71 80 100 62 81 81 95 72 70 90 81 87 91 97 84 83 86 98 87 106 92 76 90 83 84 88 86 85 98 75 90 76 96 76 73 87 83 106 82 84 87 88 82 93 +86 86 87 96 95 96 106 73 85 68 71 98 109 81 82 82 96 95 101 71 75 83 93 84 72 81 98 71 90 73 91 78 73 82 89 83 78 96 80 78 99 88 81 86 82 90 84 101 89 77 77 83 85 79 84 83 84 85 93 101 85 86 80 77 68 87 87 77 106 69 78 86 100 91 90 91 88 96 83 84 88 87 87 88 92 83 95 107 73 80 +71 81 89 87 81 79 88 77 69 101 100 89 99 89 77 103 94 90 84 83 70 96 74 83 78 84 90 94 97 106 87 76 87 88 98 71 100 85 90 85 86 85 91 80 84 99 75 62 96 83 86 91 69 82 88 88 79 98 74 96 100 80 97 89 78 83 100 81 79 111 82 91 88 85 74 87 67 73 83 83 86 75 77 73 83 90 86 83 82 80 +86 86 82 84 88 89 84 88 99 86 80 89 76 78 94 87 98 106 86 88 84 77 89 83 81 84 80 76 79 86 99 91 100 69 92 104 85 82 87 91 85 93 84 79 79 94 83 71 74 94 84 69 71 88 102 96 80 84 97 88 70 81 83 74 105 93 71 92 75 89 78 85 79 83 77 81 88 74 68 89 76 90 91 88 83 80 88 88 83 91 +78 88 86 85 77 97 90 96 71 89 82 86 91 85 81 90 72 73 65 80 89 72 79 94 102 107 99 90 88 97 86 89 99 82 87 86 100 94 74 94 80 81 92 81 94 86 88 86 91 88 72 81 98 76 92 87 79 90 83 76 86 92 77 83 72 96 83 92 81 90 94 81 87 94 94 77 74 71 96 80 86 68 81 88 82 71 83 82 79 82 +78 62 92 83 83 59 82 80 72 86 86 70 70 85 84 75 86 82 82 83 75 81 82 85 86 78 73 89 85 81 95 94 76 99 84 87 93 90 69 84 81 94 80 92 97 76 87 76 69 89 91 97 86 94 93 81 71 79 92 93 81 81 85 76 85 92 85 95 93 88 88 78 105 90 100 101 100 72 92 67 98 93 84 93 71 84 93 89 69 89 +87 83 107 74 94 84 89 90 94 76 70 82 92 81 70 90 90 91 103 75 97 79 91 75 67 99 82 79 97 100 96 82 83 92 94 90 84 75 91 93 88 75 88 83 80 100 87 76 96 89 79 75 74 70 89 90 75 107 85 90 76 99 80 85 80 91 91 98 88 91 106 87 87 76 93 82 82 79 85 91 83 86 93 80 89 87 79 76 81 77 +85 87 80 95 94 77 94 83 81 73 94 75 83 80 80 83 85 76 103 99 84 81 73 86 93 97 80 82 82 79 100 81 85 73 84 90 89 88 93 80 80 71 95 85 89 71 85 87 73 83 86 77 81 78 107 85 85 83 72 91 100 100 81 92 86 100 84 83 88 85 89 89 91 88 68 85 83 87 89 84 71 85 74 81 79 103 86 92 73 78 +82 78 85 79 96 77 93 80 94 81 86 87 73 87 99 80 69 90 84 71 77 81 69 87 90 93 87 88 85 101 83 70 88 86 92 83 89 77 79 92 98 87 92 83 74 86 82 78 87 96 98 94 97 86 86 91 79 93 101 79 76 86 88 78 105 89 82 70 88 94 97 85 71 83 100 90 80 76 92 91 101 74 93 84 85 84 94 82 84 82 +82 93 98 89 92 76 104 84 80 92 78 88 87 101 95 83 95 75 70 83 79 92 97 83 90 76 75 78 94 91 93 92 93 88 78 101 80 87 84 85 90 82 87 82 71 86 85 98 78 79 77 80 83 92 76 87 70 87 82 79 95 101 80 80 75 78 87 79 73 91 88 85 72 91 68 73 97 86 89 86 71 83 95 87 89 92 100 85 75 80 +66 91 80 87 82 87 83 94 88 78 91 84 72 74 96 88 76 99 101 88 84 84 91 86 71 101 86 102 93 84 82 83 99 82 84 90 78 80 90 87 77 107 80 89 88 85 71 88 86 86 70 79 82 89 82 77 68 93 81 70 79 88 91 83 84 91 94 71 94 75 84 92 67 88 94 77 83 90 89 86 88 72 87 69 90 82 88 88 87 96 +74 96 90 87 101 71 84 83 101 82 76 76 81 82 89 93 90 90 90 75 77 81 100 101 92 95 78 90 85 97 91 83 83 89 91 88 77 87 92 86 93 76 88 95 83 78 95 84 85 89 85 77 84 86 70 99 108 97 86 87 94 63 91 81 88 89 93 74 92 73 91 78 71 76 83 85 72 105 83 65 92 91 84 74 72 70 84 77 87 88 +84 85 82 70 79 85 82 102 96 70 88 83 83 88 76 79 77 78 81 90 81 72 79 82 80 84 86 68 84 85 81 72 74 102 74 89 101 90 95 70 82 89 101 103 87 75 79 89 71 76 92 91 78 90 89 94 87 100 90 76 102 78 82 89 73 93 105 83 88 104 95 87 96 87 86 73 90 99 81 90 82 104 85 83 75 84 83 73 80 68 +84 81 89 81 78 90 85 94 78 94 80 93 81 101 75 89 72 104 79 81 96 86 85 86 106 84 95 87 93 108 86 86 85 99 76 77 72 67 78 89 92 97 99 91 95 78 86 74 68 100 83 88 75 79 72 109 84 77 74 90 78 82 91 90 85 69 75 83 75 78 86 88 87 74 84 81 79 87 79 87 79 90 82 87 88 76 78 98 99 92 +103 91 81 90 102 87 95 90 70 77 80 95 79 89 76 85 83 90 84 75 75 95 104 80 99 97 92 90 89 82 93 100 73 83 82 66 80 78 85 86 78 86 84 65 94 90 74 84 76 93 95 92 90 98 79 93 73 78 88 107 76 84 68 90 81 74 80 110 84 91 84 69 62 88 94 98 89 78 73 89 82 77 76 82 96 77 71 76 95 69 +83 84 63 76 96 81 87 67 99 95 85 76 65 90 91 97 80 76 78 102 80 77 77 93 116 79 92 75 87 85 99 74 98 101 73 73 90 109 94 101 83 101 87 81 92 81 98 76 86 91 108 99 93 84 91 96 93 96 71 98 78 83 73 92 83 81 83 95 105 89 106 103 83 93 91 78 87 82 95 78 75 97 78 81 97 71 88 83 92 83 +74 95 90 68 70 79 101 93 92 90 83 78 79 88 91 65 85 81 83 89 91 84 98 103 72 117 80 73 81 91 77 90 96 103 99 108 91 98 88 80 75 71 83 73 83 92 83 88 91 81 74 88 79 86 88 89 81 71 75 99 93 77 97 90 93 86 69 83 84 90 92 83 86 91 79 93 93 77 86 89 90 83 81 85 77 95 92 81 77 89 +81 86 78 98 91 64 106 84 81 85 103 82 83 100 92 98 82 76 68 79 80 81 80 82 93 80 82 95 81 71 88 75 90 92 91 75 84 84 86 67 87 89 84 81 95 76 95 62 92 97 86 85 102 72 72 83 87 78 90 85 80 74 83 74 90 72 90 68 93 83 94 91 85 83 78 83 67 85 80 98 81 88 91 75 83 89 86 69 83 98 +84 88 95 71 105 107 94 81 92 72 83 98 75 83 75 84 85 71 84 82 95 71 95 89 90 76 107 92 90 78 83 87 95 96 82 89 100 76 75 78 91 96 87 81 90 99 90 95 83 91 92 88 83 75 88 103 95 82 72 69 87 75 72 91 86 91 97 80 99 70 73 92 79 75 73 80 78 96 110 82 92 72 79 79 80 83 86 81 77 90 +89 86 85 76 76 97 92 96 86 79 78 81 84 104 87 70 84 86 76 92 86 65 107 99 85 85 73 76 94 79 106 82 79 87 76 83 95 88 98 91 78 92 102 91 94 85 93 86 86 86 88 67 79 89 90 67 77 103 79 97 80 84 94 67 91 85 70 90 84 88 88 77 84 91 95 81 90 89 79 76 88 99 84 83 89 86 82 84 90 85 +107 80 89 72 75 70 63 77 88 92 84 85 76 96 88 98 87 90 96 101 82 93 86 92 81 75 95 88 73 89 84 97 83 95 78 87 93 92 80 85 97 87 78 76 75 79 74 79 77 88 100 86 85 101 85 87 88 71 76 76 77 97 96 93 89 84 82 83 78 88 78 88 63 102 87 99 80 63 103 89 95 91 96 117 80 83 105 83 78 95 +75 85 80 70 75 74 65 78 92 76 86 89 97 82 88 99 91 92 65 75 91 73 79 77 88 97 85 81 86 86 88 84 90 77 82 99 65 89 74 96 77 95 104 86 77 78 88 77 92 84 107 76 93 87 82 93 95 101 96 90 75 89 100 89 96 79 78 80 86 85 86 83 82 92 79 103 81 100 93 79 90 75 80 110 87 103 82 89 81 97 +88 76 85 79 84 78 72 77 71 88 70 85 84 92 83 82 78 96 94 94 86 91 86 89 104 93 96 85 90 86 98 78 94 80 77 87 79 101 91 75 85 87 73 75 101 85 109 70 74 79 76 79 83 73 81 98 91 81 89 81 85 100 85 75 87 84 72 94 99 95 87 79 74 77 83 85 94 94 102 82 74 87 87 80 79 76 84 74 72 85 +93 83 100 70 81 90 80 94 72 84 102 88 94 71 82 97 78 80 66 97 73 81 64 78 85 93 91 95 77 91 90 80 102 77 93 88 83 87 78 78 75 72 83 84 81 91 94 95 84 80 93 87 82 78 87 90 75 82 106 94 85 75 98 95 103 100 89 87 91 76 77 82 92 95 72 89 85 79 103 95 91 90 77 78 83 99 79 102 91 94 +93 65 84 80 81 76 80 90 89 94 96 83 84 92 79 91 105 77 94 91 98 71 91 77 81 101 115 87 109 73 74 90 89 84 76 86 94 96 91 73 85 97 76 80 81 76 85 75 88 91 59 76 83 90 87 84 89 88 82 109 71 88 86 85 74 87 87 71 75 86 90 71 84 68 90 87 104 72 86 84 80 90 87 79 71 92 87 93 98 85 +94 85 99 91 77 82 94 81 97 75 77 86 79 76 90 79 84 79 101 94 86 82 99 83 84 76 90 92 93 66 83 84 107 81 74 65 82 79 65 90 77 102 88 89 89 84 78 65 70 86 92 85 91 81 94 80 80 86 100 83 88 105 81 77 94 93 87 94 66 83 71 88 85 75 84 88 82 87 82 81 85 94 70 86 84 98 74 103 95 100 +75 80 88 79 83 84 83 77 115 79 89 87 72 83 81 96 95 88 112 86 91 87 94 79 95 70 85 87 91 98 97 83 88 84 92 75 87 80 85 76 73 80 87 74 80 75 87 91 88 90 91 82 86 92 82 90 111 74 77 78 72 89 71 89 80 96 71 96 88 78 69 75 77 95 98 87 79 77 84 85 69 100 75 82 75 87 83 91 87 106 +98 83 95 80 92 90 104 83 81 82 93 82 97 85 91 93 81 78 84 94 80 103 97 82 87 76 94 100 65 103 93 85 89 100 71 89 82 81 89 91 92 88 80 82 67 83 80 89 83 95 96 84 85 80 78 101 76 73 90 98 72 90 89 79 91 89 98 80 83 79 72 81 84 81 92 79 83 95 71 83 85 92 64 83 79 81 87 77 100 86 +85 87 96 90 73 82 76 79 97 93 93 90 78 85 106 102 83 85 78 81 82 90 90 77 82 80 85 81 94 75 93 68 85 82 83 84 96 67 96 106 78 80 88 83 98 85 78 85 96 80 91 102 97 84 90 76 92 75 96 83 85 79 88 96 106 96 90 97 99 79 92 77 82 90 95 92 80 100 78 85 85 93 86 101 80 82 89 75 72 94 +82 84 80 83 93 76 93 91 91 80 101 80 85 96 86 89 97 103 99 94 81 84 93 79 87 83 102 76 85 101 81 88 84 100 102 89 90 79 85 90 75 85 87 87 74 82 81 96 76 91 91 80 79 99 74 89 104 79 75 105 85 83 93 71 88 79 76 81 92 78 88 88 86 87 74 94 78 69 89 77 87 81 90 79 82 84 83 86 73 84 +90 93 65 88 89 76 80 69 67 86 81 88 81 73 99 88 97 81 73 100 87 96 89 91 76 89 92 87 95 71 79 73 79 96 90 82 93 89 87 91 92 68 81 93 79 70 91 76 83 90 96 82 103 82 85 80 91 87 99 89 74 94 86 78 87 99 87 92 77 72 77 79 85 81 76 85 86 78 86 72 104 81 96 84 87 99 99 98 87 92 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/image.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/image.dat new file mode 100644 index 0000000000..418b9c06c2 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/image.dat @@ -0,0 +1,965 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_2d(300, 300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: sample_PSD +# position: 49.4198 0 -35.0741 +# title: Intensity Position Position Monitor (Square) per bin +# Ncount: 153447624 +# filename: image.dat +# statistics: X0=-0.0038853; dX=0.0781448; Y0=-0.00105397; dY=0.077434; +# signal: Min=0; Max=3.54871e+07; Mean=26770.3; +# values: 2.40932e+09 8.17576e+07 44025 +# xvar: x +# yvar: y +# xlabel: x [m] +# ylabel: y [m] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.15 0.15 -0.15 0.15 +# variables: I I_err N +# Data [sample_PSD/image.dat] I: +1.565535285e-18 0 0 0 0 0 0 3.791491336 0 0.08368250542 4.204052439e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.91435525e-14 0 0 0 0 504431.8672 0 0 0 0 6.58532291e-06 2.931419333e-19 5.297827049e-14 0 0 0 6.100115615e-18 0 0 78439.43808 0 0 0 0 0.1669824172 4.972827548e-17 4.667741963e-12 2.429400055e-18 8.204844896e-10 0 1.924694936 0 0 0 0 0 2.478235353e-20 0 0 0 0 0 0 0.9445025125 0 0 3.564911741 0 6.956426696e-05 0 0 0 1.56618133e-08 0 0 0 0 0 0 0 7.331616879 0 0 10067.46775 0 0 1.895058252e-17 3.435214208e-33 0 2.013260826e-09 0 608861.3107 0 7.982426053e-18 0 0 0 0 0 2.497507137e-26 0 4176.700935 0 0 0 42.20366967 0 0 0 0 0 3.666696309e-15 0 0 4733394.25 0 0 1.91568395e-24 1.283362825e-21 1.314521275e-06 9.863405954e-08 0 1.028458604e-05 1.604627993e-15 0 0 283468.3672 0 0 0 521924.9693 0 0 0 0 0 0 5.089920663e-28 1943321.724 3.238757475e-13 0 0 1.076780551e-40 5.762668072e-08 0 2.996556438e-05 0 5.417840859e-24 1.696899291e-05 0 0 0 0 0 0 0 1.805248768e-22 0 2.836436961e-21 2.648985032e-28 0 0 0 0 0 0 1.082622945e-36 0 3.330252731e-23 0 0 0 0 0 0 0 2.102062321e-16 0 0 1.858365833e-11 0 0 0 0.0001183000596 0 0 0 0 0 1.061958997e-09 0 0 0.00827136669 0 0 0 2.838243829e-07 0 0 0 5.986906435e-06 0 0 0 0.05586574949 1.401609836e-06 0 0 0 0 15.49941841 0.9706342942 0 1.327685045e-21 70.78285306 0 2.860747335e-09 0 0 0 0 398710.2708 0 3.959346457e-09 6.290586513e-22 0 0 0 0 0 4.348776513e-21 0 0 0.06951254705 0 0 0 0 5.261764202e-16 0 0 0 0 0 0 0 0 0 1.729540144e-39 0 0 9327.628122 0 0 0 0 0 0 0 0 0 9.701263863e-10 0 0 0 0 7.31506467e-43 0 3.549106688e-14 0 2.679017551e-37 0 0 4.908557028e-10 0 0 2.521247901e-16 4.380370022e-28 0 8.077033494e-18 0 0 0 0 0 0 0 0 0 0.00111406478 2.238510771e-38 0 127537.8261 0 0 +0 0 0 0 197497.518 0 0 0 0 1.885967788e-10 5.197426731e-16 3.203323779e-15 0 6.457526344e-07 0 0 0 0 0 0 1.66886121e-05 0 1.534755228e-13 0 0 0.2648901961 1.744402906e-18 0 0 0 0 0 0 0 6.975306442e-08 0 0 2.734559989e-05 0 0 0 2.10591956e-11 0 0 0 1.991438156e-21 0 1.320288448e-11 4.598416145e-17 4.61174685e-10 0 0 0 0 0 0 4.51907946e-12 1.179212616e-12 0 0.0004072910275 0 0 0 0 0 0 0 1.178888323e-11 0 0 0 0 0 0 5.110343716e-13 1.285959871e-07 0 0 0 0 0 0 0 0 0 1.296289794e-14 855.0910103 2.639221636e-09 0 0 0 0 2.084039421e-05 0 3.412334626e-31 0 2.979727358e-13 0 0 0 0 0 0 0.7321413644 0 0 0 172936.2286 1.037386324e-12 0 0 0 7.80335168e-28 0 0 0 0 0 1.443495066e-19 3.514844773e-40 1.714221399e-15 0 9.422026477 0 2.075897632e-27 1.148285238e-31 0 0 0.3028124437 0 0 1.511003344e-29 0.00133665839 0 0 0 0.0002042966829 0 0 0 1.929051045e-21 143.6740074 0 0 0 7.106389791e-29 0 0 1.884118923e-20 2.057387578e-11 6.522110893e-10 0 0 3.063797759e-20 1.54486835e-12 0 7.863677377e-14 3.20354481e-18 1.56936761e-12 681.6735215 6641.369934 0 0.00304333062 0 621.3502736 0 0 0 0 0.006678802079 1.501233992e-10 0 0 6.454575681e-06 2.151527743e-19 3.195432167e-06 0 3.255326366e-14 0 1.812991985e-10 4.390160639e-15 2.067527021e-24 0 0 0 0 0 0 0.466815659 8.476732685e-05 1.14684126e-13 0 0 0 0 0 0 0 0 0.0001337676207 1.781163109e-27 6.305694447e-13 1.434471763e-14 0 0 0 0 0 0 7.591572271e-14 0 0 0 0 0 0 0 0 0.07093854693 0 0 0 0 0 6380.669245 0 1.858456137e-17 0 0 0 3.163860869 0 0 0 0 0 0 0 4.35961884e-22 0 0 1.098167826e-21 0 0 0 7.155090832e-43 0 0 0 0 0 0 0 0 0 0 8.931850787e-06 0 0 0 6.362758285e-12 0 0 0 0 0.00237604739 0 0 0 0 9.866113862e-11 0 0 0 0 0 0 0 1.926826235e-18 0 0 0 0 0 0.0009365971421 0 0 0 0 0 0 0 0 4.30950162 0 0 0.03914058276 5062.367376 0 0 +0.2328833976 4.03670501e-19 0 7.225159016e-07 0 0 0 0 0 1.634657681e-23 0 0 1.094406525e-30 0 0 0 0 0 0 6.964471486e-13 0 0 0 0 2.759289026e-10 0 0 0 0 0 0 0 0 0 0 767.7246058 0 0 0 0 0 0 3.069293371e-22 0 0 0 4.302050212e-09 0 0 0 0 0 0 0 3.773840137e-26 0 2.334277822e-05 0 0 0 0 0 0 0 100.272968 3.463945148e-13 0 0 0 0 0 2.526104306e-11 0.05129799086 0 3.025502042e-06 67412.47622 0 0 0 1.853863777e-05 0 0 1.697908865e-25 0 0 0 4.329659938e-41 1.758025135e-11 0 0 4.379561145e-29 0 0 0 229.8564528 9.783676247e-27 0 0 0 0 0 0 0 35887.87605 423173.5734 0 0 1.390887871e-11 0 0.0001288008874 0 0.0004171819339 0 3.280364394e-12 0 0.01272493997 0 5.524936994e-18 0 0 0 0 0 6.851957642e-22 2.026649504e-13 0 0 7.188217343e-27 0 0 2.211961221e-20 7.136867474e-27 3.786611647 27.82696103 0 5.124998448e-15 91.09886245 0 0 0 0 0 0 1.072963333e-12 0 7.846705663e-23 15.88737704 3.095525961e-17 0.0707202533 0 0 1.556096207e-29 3.505097647e-27 0 0 0 3.385862726e-11 0 0 3.394837881e-20 0 0 0 0 0.3210717273 0 0 0.5146276003 0.0101300421 0 0 0 2.066586312e-16 4.223175817e-13 0 9.251686529e-18 0 0 0 31.1672068 0 0 0 0 0 8.579139944e-08 0.0001295255803 7.68554873e-13 0 10560.54186 0 2.315512604e-13 0 0 2.99424877e-21 0 0 1.493458542e-15 0 2.463865721e-09 0 0 0.008999879621 0 0 0 1.046062606 0 0 0 0 0 2.592246117e-07 0 0 0 0 0 0 0 0 0 0 5.232077744e-19 0 0 0 0 0.7748960748 2.260290083e-12 0 0 0 0 4.107164446e-15 0 0 0 5.602457673e-12 0 0 0 0 0 1.883014054e-20 0 0 0 0 0 0 0 0 0 2.648723728e-13 0 0 7.181154399e-14 0 0 0 2.463730055e-28 0 0 0 5.083008768e-26 0 1.117142135e-19 0 0 0 0 0 0 0 0 1.036297524e-10 0 0 0 0 188.4347498 0 0 0 0 1.635343162e-40 0 0 0 0 0 0 0 5.54778118e-08 0 0 0 0 0 +0 0 0 3.238423175e-09 0 0 0 2.015344391e-08 0 2.829365723e-25 1.454905581e-17 0 0 0 0 0 3.183516455e-11 0 0 0 1.056420552e-17 0 0 0 3.850487694e-13 0 0 0 0 0 3.880054398e-18 0 0 0 5.989477142e-26 0 0 0 0 0 0 0 0 0 1.885732991 0 0 0 0 0 2.808168006e-24 1.41039071e-24 0 0 1.494528604e-24 5.230305824e-11 0 0 0.6404897035 0 0 2.217747571e-06 6.623747607 0.0001329304089 0 8.005752461e-24 0 0 0 0 0 2167808.652 0 0 0 2.884241808e-25 0 0 0 370.327177 0 0 5.298487907e-17 0 0 0 4.545678748e-11 2.226718414e-06 0 4.35001547e-14 0 0 0 1.272087216e-21 1.699098041e-20 0 4.86289218e-27 0 0 2.814802003e-25 0 0 0 3.1861522e-18 0 0 0 0 0 0 1.057400741e-26 0 0.04012865348 0 0 0 0 8.070763122e-09 0 8.99204792e-28 0 0 0 0 0 0 0 0 4.309287585e-06 0 0 0 0 5.957462372e-20 0 0 14.55359073 0 14.37186647 0 0 0 0 0.001825958539 0 0.0004951166907 0 0 5.527766261e-07 0 0 0 0 0 0 1.94908523e-30 0.002712686878 0.1086152856 0 9.247803749e-09 0 0 3.464086435e-15 0 1.791326501e-07 2.766899315e-31 1.538013752e-05 0.1234087483 1.98325637e-08 0 0 0 3.53545242e-16 0 0 0 0 0.0001396557303 0 9.102605565e-15 32619.38684 7.943342194e-15 0 0 2.484398008e-05 0 0 0 0 0 0 0 0 183357.2305 0 8.961720637e-11 0 0 0 0 0 0 0 0 0 3.568566508e-24 0 0 0 2.529353414e-08 0 0 1.873212498e-10 0 0 0 0 2.446862223e-05 0 0 0 0 0 0 0 1.358048403e-15 0 3.232223146e-26 0 0 0 0 0 0 0 0 0 0 0 0 7.751488333e-12 0 0 4.799560643e-18 0 1.803285728e-26 0 1.878396752e-14 3.966378809e-13 2.656037378e-05 0.0003298645744 0 0 0 4.650948542e-17 0 0 0 2.372685711e-09 0 0 4.736628531e-11 0 0 1.967375045e-22 0 0 0 0 0.5597233465 0 0 0 0 5.60786338e-27 0 0 0 0 0 0 0 0 0 0 0 7.8418519e-20 0 0 0 1.687038037e-24 0 0 0 0 0 0 0 1.896617336e-41 1.06543423e-13 +0 0.007270736183 0 0 35.76014599 4691284.945 0 1593.536471 0 0 0 0 0 0 0 0 0 6.944875742e-27 0 6.486814183e-18 0 2.336089456e-15 3.901884655e-34 0 0 0 8.910978572e-30 275591.8264 0 0 0 0 323.3167241 0 0 2.956792046e-10 0 440.3903637 0 0 0 0 0 0 0 0 0 0 0 0 1.281341742e-11 0 0 0 0 0.001066933404 0 0 0 8.071993432e-26 0 0 0 1.082565301e-25 0 3.801833246e-12 0 0 1.338067246e-27 0 0 0 0 0 0 0 0.001789355193 0 2.197835846e-08 2.589568105e-21 0.001157642557 0 0 0 0 0 375545.7896 366.9808471 0.06602170249 0 2.028644089e-18 1.361236404e-28 7.711541029e-07 0 0 0 0 0 0 9.34820079e-14 0 0 1390.165282 0.1892159246 8.40634339e-13 9.662701168e-13 0.2143764433 3.818957125e-08 0 4.804896083e-20 0 0 0 0 0 4.419939936e-14 0 0 0 15932.82387 3.190381025e-26 0 0 0 1.197643011e-17 0 0 0 0 5.467805141e-08 0 5.625806833e-30 0 0 0 2273125.506 4.2350755e-05 0 0 0 0 6.468297099e-13 8.82260425e-24 0 0 0 0 0 0 0.0003159226339 1.048731647e-06 3.904036878e-32 0 1.794456878e-06 1.46202171e-05 6.599262741 1.303697589e-10 6.988827339e-19 0 0 3.117721487e-13 0 0 170.1102944 0 0 0 1.824256578e-11 0 2.237678903e-27 2.613183974e-16 77.68564642 0 0 1.601249844e-09 0 0 0 0 0.6328119641 0 0 16.00159914 0 0 4.111345289e-28 0 0 2430.043041 0 0.3717632118 0 1.631606006e-23 0 0 0 0 0 2.498955763e-15 0 0 0 0 1.040455587e-22 0 0 0 0 5.877915291e-10 0 0 0 6.425637532e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 9.360236337e-21 0 0 2.220938636e-06 0 0 0 0 0 0 0 0 0 4.603538894e-13 1.761116631e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 4.310209565e-08 0 0 0 0.004918888266 6.515385311e-27 0 0 0 0 0 0 0.4710522573 0 0 0 3.121863639e-12 0 0 0 0 0 772780.6605 0 0 7.824738346e-11 0 0 0 4.215638956e-06 0 0 0 0 0 3.936491617e-15 0 0 0 0 0 0 0 0 4.978226228e-27 0 +6.580082234e-25 0 0 0 0 4.019177554e-13 3.050435077e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 1.7321956e-24 0 0.04128365588 3.020154418e-13 0 0 0 0 0 0 0 0.0003692876983 0 0 0 0 0 0 0 0 0 0 0 0 0 438520.2086 0 4.162165234e-19 0 0 3369997.045 0 0 0 0 0 0 0 1.417496874e-05 0 0 0 0 0 0 0 0.145376677 0 0 8.498741394e-06 1.470596199e-15 8.301765565e-13 1.137189798e-10 0 6.544850528e-14 0 3.001108651e-12 0 0 0 0 0 0 17.54193327 3.189725068e-11 0 0 0 0 0 0 0 0 4.969676669e-43 0 0 0 0 26.55375903 0 0 164898.5538 0 1.780126597e-13 0.001590604645 0 0 0 0 1.942547416e-19 0 1.812205122e-15 8.041073592e-07 0 2.653006872e-10 0 1.755866e-27 0 2.11527439e-05 1.342402128e-15 0 1.300803826e-14 0 0 5.037292262e-13 0 1.196249969e-18 0 0 0 0 0 0 0 0 4.946152333e-30 4.489609913e-06 0 0 0.002658995166 2.837508654e-18 1.512826091e-06 0 1.873534725e-06 7.918436042e-13 0 0 13.64335046 0 0 0 6.061812067e-21 0.0006020565606 0 2.988776692e-11 0.03354128488 0 0 0 0 0 0 0 0 0 0 0 0 1.967902894e-10 0 3.373013797 0 0 0 5.054274269e-25 0 7.948071273e-11 0 0 0 2.645471918e-24 6.048217511e-22 0 0 38.22021598 3.62653384e-26 0 1.10756545e-20 0 0 1.248749568e-11 0.0004618493064 0 0 0.004488234511 0 5.232585122 3.600525347e-18 2.028733282e-28 1.751272033e-21 9.727480453e-15 0 4430.69616 0.1412635413 0 0 0 3.989864504e-14 4.876661666e-09 0 0 0 508.2005042 0 0 0 0 0 0 0 0 1.040935338e-06 0 0 0 0 0 0 0 0 0 6.193789635e-15 0 0 0 0 0 0 3.488909944e-32 0 0 0 0 0 0 0 4.654554418e-16 0 0.3026058066 0.01450016775 0 0 0 0 0 0 0.0006749045169 0 0 0 8.789357181e-08 0 0 2.481800082e-06 0 35.25311814 0 0 0 0 0 5.742723019e-16 0 0 0 0 0 0 4.550705816e-25 0 0 0 9.805814696e-23 0 0 0 0 5.649893344e-17 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1.67311456e-07 0 0 0 0 0 0 31.85473309 0 0 0 0 6.216124361e-26 0 2.568296781 0 0 0 0 0 0 0 0.5259977385 2.328363508e-06 0 0 0 0 0 0 0 0 0 0 2.468742798e-11 0 0 0 0 0 0 0 0 5.446018827e-10 0 0 0 0 0 1.634675086e-08 4.533963619e-19 0 1351261.656 0 0 0 0 1.31394616e-10 0 0 0 0 0 5.884288823e-12 0 0 0 0 0.001889898076 0 0 0 6.185749879e-13 1404.893795 0 0 0 0 534164.4646 1.610173744e-07 0 0 0 0 3.400043069e-26 6.820966246e-07 0 1.379807532e-06 0 0 0 0.006144796126 0 0 0 0 0 0 371071.3548 0 0 0 0 0 0 2.204455153e-05 0 0 1.268767156e-19 0.0003511068732 0 0.0001724492635 0 0 8.503094016e-09 0 9.47403171e-26 1.578549873e-21 7.910911955e-14 0 9.274231033e-21 8.070066559e-13 0 0 0 0 1.966222427e-12 9.406814963e-09 0 0 0 1.87633292e-11 0 5.857233482e-12 1.282175973e-15 2.667436551e-31 1.115496535e-23 0 0 2.663288737e-35 0 0 0 0 0 0 0 3.377459034e-20 4.556670862e-05 8.221841949e-15 3.485048492e-16 0 0 0 0 2.58091616e-26 1.163623232e-15 3.047310652e-08 0 7.097941072e-07 0.08436367942 0.009827034047 378.8115872 0.004930596315 0 0 0 0 0 0 0 0 0 3.574976079e-25 7.397699097e-13 0 0 0 0 898238.2354 2.213543101e-07 20.52646654 0 60112.30355 0.001176489271 0 0.006259945865 4.293555691e-18 1.186057481e-13 1.703415804e-29 1.454169879e-09 0.003893996645 0 0 0 0 807.5607674 0 0 0 0 0 0 3.777477031e-09 0 4.848101931e-10 122.89873 0 0 0 0 4.954827119 1.039760026e-24 0 0 0.001429259038 2.037378098e-12 6.859001931e-14 3288076.923 0 0 5.342744956e-10 8.632450974e-09 1.499594275e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 397.0898011 0 0.01034386714 98572.8094 0 0.04084726721 0 11.17788284 0.01088369558 0 0 0 0 0 3.889121982e-21 0 0 1.100758629e-05 0 0 0 0 347423.3096 0.03005723998 0 0 0 0 0 0 0 0 0 1.135050261e-26 0 0 2.048616998e-11 0 0 0 9.417882151e-15 0 0 0 9.870319852e-15 0 0 0 0 0 7.909427522e-07 0 0 0 0 +0 0 0 0 0 0.5859895277 0 27.82311999 0 0 0 0 0 2.067262837e-23 0 0 4.120411589e-09 0 0 0 0 0 0 0 0 0 0 0 0 0.0001457302813 0 0 0 0 0 0 0 0 60792.41721 9.823436064e-12 0 0 0 0 0 0 0 1.460830173e-33 6.218355549e-20 0 1.558627417e-15 35602.55735 0 1.471964417e-24 0 0 0 0 0 0 74.93461517 0 1.042513342e-13 0 0 0 0 0 0 3.202498131e-16 0 0 0 0 0 2.802296855e-13 0 0 0 0 7.503651765e-31 0 0 0.05919040786 0 430.3519675 1.379241808e-14 0 0 356169.5972 0 0 0 24.29443676 1.796981899e-22 0 4.26804371e-09 0 0 36.28610326 0 0 0 2.214248373e-22 0 0 1.677646033e-08 1.152315873e-07 0 0 2.499703214e-27 0 1.861831917e-13 1.336160763e-09 0 3.97884247e-33 0.08643469362 0 0 1.215970752e-22 0 4.352170781e-11 0.006658597406 5.529764739e-23 7.032736445e-17 2.260856518e-20 34.84184781 0 0 0 0 2.342749601e-14 0 0 0 0 0 0 0.0008545453397 1.54656775e-08 0 0 2.205322301e-09 1.309357869e-10 0 0 0 0 0.3057105789 4.851627247e-09 0 0 0.3149158196 0 0 0 0 0 0 0 0 0.6896982229 0 0 0.0003927609237 2.365809315e-09 0 5.026887365e-23 0.0008541302086 4.713230696e-07 0 0 0 422.8729708 0 2.17017839e-29 0 0 7.66823513e-09 0 0 0.004475168192 0 0 155.5821223 0 0 0 0 0 2.408686454e-05 0 0 3.649584164e-30 0 0 0 0 0 823864.2613 2.521298168e-06 0 0 0 0 9.496314317e-10 0 0 2.241519738e-15 8.883868648e-29 0 0 0 0.007560030935 0 0 0 0 0 0 0 263920.7745 0 8.235810061e-16 6.140905061e-11 0 0 0 0 0 0.0005470553303 0 6.106679418e-06 0 2.709920207e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 6.406652277e-11 0 0 0.02151579721 0 0 0 4.710596065 0 0.3222088895 0 0 0 0 5.700942698e-07 945.5701508 2.766891871e-11 0 0 0 0 0 0 0 1.621237305e-21 0 0 0 1050.947105 0 0 3.708970009e-25 0 21.34044609 13.14857982 0 0 0 0 0 4.351240573e-17 0 1845417.246 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.197027744e-34 0 0 0 0 0 0 0 0 7.466563894 0 0 0 0 5.249771809 0 7.938880734e-16 0 0 0 4.553615774e-23 0 0 0.03605428971 0 0 0 0 0 0 0 223539.0629 0 7.603041869e-10 5.585239551e-27 0 0 0 0.1795625072 0 0 0 0 0 0 13.9011261 2.294806038e-25 0 2.699209802e-11 0 8.774681022e-09 2.982337947e-28 0 0 0 2.086818481e-07 0 0 0 0 6.264170382e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.179662759e-06 0 6.686692902e-09 0 0 0 1.052726689e-13 1.577086464 0 0 355.1440617 0 0 5.803220554e-38 0 0 0 0 0 0 0 0 6.442750406e-15 1.055954805e-16 0 2.848163047e-31 0 0 0 1.416642238e-20 9.142921699e-14 0 0 0.1129431063 0 0 0.0001465308038 0 0 7.217477583e-09 0 1.037280853e-18 0 0 0 0 7.133392214e-19 0 0 4.308178692e-09 0 719.974129 0 104469.8816 1.513019158e-21 0 0.003459930874 3.334528859e-05 0 0 4967.210001 0 0 0 0 0 0 0 0 0 0 6.952375115e-06 0 7.660665778e-16 0 0 0 0 0 9.612937199e-11 0 0 0 1.444750496e-10 0.01194138137 0 0 0 0 0 0.0001082118668 0 9.311564479e-40 0 2.368495886e-08 0 7.338209283e-15 3.766303716e-20 0 4.949351433e-11 796240.7291 5.035432753e-06 1.289651867e-11 0 0 0 0 4.27150141e-17 0 0 0 0 0 0.001900669406 0 0 1.489608757e-05 0 2.451841992e-11 5.91756746e-10 0 0 0 2.040861404e-06 0 0 0.03298946769 1.376510161e-05 0 387.2822806 1.295630861e-21 0 0 0 0 0 0 8.13701224e-05 0 0 0 0 0 1165.714001 0 0 1064869.998 0 0.003907907566 1.502131852e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9943.774823 0 0 0 4.946103084e-21 0 0 0 1.785123335e-21 0 9.864639859e-09 0 0 0 0 0 0 0 247.2217518 0 0 0 0 0 0 0 0 0.01030627908 0 0 0 0 1.258256714e-30 2.918804359e-29 0 0 0 0 0 0 4.884274467e-18 0 0 0 +0 0 0 0 0 4844.09691 0 3.689962511e-30 0 0 1891546.008 1.121396928e-13 0 0.0001106429819 0 4.740715434e-24 0 0 0 0 0 0 6.764832881e-06 0 0 2.59718922e-12 0 0.00037575265 0 232669.476 3.595349459e-06 0 0 0 0 0.2154852428 0 0 0 0 3.275617001 0 0 0 1.67814688e-11 0 2.700049105e-36 0 0 3.135393945e-05 0 0 0 0 0 0 0 0 7.625246357e-10 0 0 0.01470395858 0 0 12.14657769 0 0 0 2919.274791 0 0 2.726837955e-23 0 0 1.450029443e-12 0 3.472823606e-27 1849363.922 0 0 2.057259586e-08 0 0 0 3.75219309e-20 0 0 0 0 0 0 1.558589682e-14 0 0.03451220784 0 0 3.993397991e-06 8.525477596e-16 81761.24966 0 1.399508436e-24 0 0 0 0 0 0 0 0 0 0 0 0 9.48011141e-24 0 3.109959275e-29 0 9.72875704e-18 0 0.007380577266 0 1.848309358e-07 263.3206277 0 1.03594337e-08 0 0 0 153.0635565 0.3322754784 0 0 0 0 0 0 0 0 0 1.430440949e-16 0 0 0 0 0 3.969250482e-17 0 2.082166645e-15 4.803627753e-15 2.183701525e-20 1.976536604 0.00383631958 0 0 3.899720221e-19 0 0 0 1.778408889e-23 0 0 0 0 0 0 0 1.33161068e-12 8.601584789e-08 0 0 0 1.692199203e-08 744465.9368 2.361745295e-18 0 0 0 0.05711877025 1.480150091e-10 1558.618102 8284.040383 0 1.132093373e-29 2.286214992e-05 0 0 0 0 1.660075819e-26 0 0 0 1.041527899e-15 0.01819049125 0 0 2.453688375e-18 0 0 0 0 0 0 0 0.005328540773 0 2.801343411e-15 0 0 0 0 0 0 0 0 0 0 5.90113887e-14 0 0 0 73.24460969 0 2.769105563e-20 0 0 0 0 2.003784046e-07 0 0 1.472051406e-14 0 0 0.005413420105 0 0 0 0 9.215765013e-25 0 1.09104261e-07 0 0 0 0 0 0 0.0113365907 0 1830.698676 0 0 0 0 0 0 0 2.849421834e-07 0 8.264875285e-25 0 9.232136954e-17 537.8310993 0 0 0 0 28807.53845 0 0 0 0 0.0001941058317 0.0006157352103 0 0 3.978342694e-12 0 0 0 0 0 0 1.058108608e-21 2.399788952e-16 0 0 2.800130429e-33 0 0 0 0 0 0 0 7.429474294 0 0 0 +0 408.9265558 0 0 2647.869424 0 0 0 0 0 0 3.836597235e-12 0 0 0 0 0 0 2.042579308e-09 2.917054148e-08 0 0 0 0 0 0.01208961833 0 0 0 0 0 8.114311345e-10 0 3.645703857e-07 0 5.518435878e-14 0 1.681672049e-08 0 0 0.0001933041229 0 0 0 4.083499612e-22 0 116998.3321 0 6.620352413e-21 7.635648153e-12 0 1.318865949e-14 0 0 0 0 2.971395405e-11 0 13685.23032 0 0 84.34429578 0 0 0 1.009283802e-26 2.915079121e-12 0 0 0 0 0 3.554701999e-13 0 0 0 2.388057153e-14 1.407486925e-11 0 0 1.700880859e-19 0 0 0 8.949361404e-10 0 1087421.447 0.05591425219 0 8.411489034e-10 5.619022723e-17 0 0 0 2.948386102e-25 0 0 0 0 0.000717835789 28.69384662 0 0 2.09400823e-10 0 6.543998148e-26 0 0.1280880432 0 0 4314.26635 0 0 0 1.200987156e-11 0 0 0 0 0 546.0990428 0 0.2125370343 1.636124973e-17 0 0 5.775293697e-20 0 0 0 3071525.729 1.555633425e-19 0 0 0 7.908113844e-09 0 0.03496757486 0 0 172175.9141 0 2.957006196e-22 0 0 0 4.20407474e-21 5.255632249 3.387852957 0 13724.33018 0.0007014744612 2.752095788e-26 0 0 0 0 0 0 0 4.482314182e-26 2.904487382e-26 7.649435783e-09 0 0 0 79039.39117 2.71781802e-29 5.109251183 0 0 2.885071268e-06 0 0 0 0 1.151275721e-06 0 1.347839666e-21 5.219035088e-25 5.465283187e-06 2.073918561e-17 3.334540588e-15 2.251971771e-17 2.556295998e-08 0 0.03364002922 1.244179415e-08 2.442569406e-26 0 6.14722127e-06 1.29428471e-12 0 652.5488167 3.152036125e-20 0 0 0.83738926 0 0 0 0.002965626312 3.038365799e-12 2.111194623e-18 0 0 0 0 0 6.19375464e-24 0 1.695431051e-26 0 0 0 0 0 5.020377489e-13 0 0 0 0 1.961906735e-12 0 0 0 0 0 0 0 0 0 0 0 0 2.612815679e-19 0.0002642721179 28.19808885 0 0 0 0 0 0 2.108704709e-25 0 0 0 0 0 0 0.0001528277389 0 1.189592902e-07 0 1.248433349e-21 3.676216403e-16 0 3.025401014e-22 0 0 0 40.14351905 0 0 0 0 0 0 0 0 0 0 0 0 4.659175332e-23 0 0 0.009675782027 0.01450847706 106744.7903 7.741393846e-17 3.070178683e-15 0 0 0 1.951847898e-21 0 1.807853347e-06 0 0 0 0 1.26637097e-30 0 0 332093.0716 0 0 0 +0 0 0 3.418504842e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5351354.181 0 0 1.837615162e-12 0 0 0 0 0 31.59133539 0 0 0 0.003510152632 3.412316907e-17 0 0 0 0 0 0.01246674788 184.1990882 0 0 0 0 0 1980111.393 0 8.944244733e-10 0 0 0 6.858373705e-21 6.543782671e-16 6.292143565e-15 0 0 7.516538158e-21 0 0 0 0 0 0 2.522892895e-09 0 0 0 0.001027537261 0.000507077048 1.667261137e-15 0 0 1.223080645e-08 5.375869479e-10 0 0.003206927139 42.00123193 5.008388252e-11 0 0 7.690132793e-29 5.112838261e-06 0 7.869075776e-13 0 2.824538073e-17 0 0 0 0 3.423961987e-14 0 0 0 0.7588560448 1.884776286e-26 2.957033177e-14 2.891549356e-12 5.865677376e-09 0 0 6.832972085e-14 5.632668125e-08 0 23073.55807 0 0 0 3.113220788e-10 0 0 1.143746357e-09 0 0 1.899373392e-15 0 0.0008948661516 18110.97906 0 0.05238080057 0 0 5.729288013e-09 0 6.249373193e-14 0 1.60334291e-12 0 0 0 1.140423962e-22 0 0.0001403165772 3.514162089e-20 0 8.008678781e-07 0 64.05902294 0.008591888512 0 0 0 1.843580171e-05 0 8.288945177e-28 1.379735816e-07 0 0 5.369998375e-12 8.244602306e-28 0 0 0 0 0.01778648135 0.0007295039683 1.550609819e-10 0 0 0 2.580264821e-08 8541.815379 2.226258626e-22 6.656268312e-23 4.274767891e-28 2.858466724e-06 0 0 0 3704.601516 6.436217345e-16 0.3357141323 0 0 0 0 0 0 0 0.9261091415 0 0 5.535275863e-10 1.648362873e-07 2.335158357e-26 1.008635105e-12 0 0 0 0 0 0 0 1.788591351e-09 4672245.341 1.215080582e-34 0 5.919590809e-10 1.12166913e-19 0 37534.00077 0 0.4988869 0 0 0 5.058750068 0 0.000150310073 0 0 0 5.316065595e-11 0 1.363546431e-29 0 0.0006807720072 0 0 0 0 274.0774898 1.677912842e-15 3.990554241e-32 0 0 0 6.00266681e-05 0.002052064045 0 0 0 0 229.7876799 8.729809532e-23 0 0 1.51636575e-09 1.714298144e-15 0 1394.371892 8.146593412e-16 5.238363059e-11 0 0.2483370188 0 0 0 1.211653878e-09 4.822720739e-29 4.01440793e-19 1793050.713 0 7.473861553e-15 0 0 0 6.562527356e-05 0 0 0 0 2.194871985e-05 0 101.955389 0 8.419359031e-19 0 0 3.092092847e-05 0 0 0 2.721201806e-09 0 0 0 0 0 0 0 0 6.815127626e-28 0 4.029811904e-27 0 211532.3652 0 0 3.285466295e-06 1.7847589e-13 1.022452092e-08 0 0 0 0 0 0 +180798.8748 1.691532726e-15 1.386491778e-06 0 0 0 0 0 0 0 78.85105 4.419496756e-07 0 0.001586237403 0 0 1.737278283 0 0 0 0 1645652.951 0 0 0 0.5267628089 1.860084897e-21 0 0 0 0 0 2.866624861e-05 2.542579012e-28 0 0 0 0 0 0 0 0 0 0 0 6.597416204e-10 0 3.375032419e-05 0 0 0 0 0 0 0 0 0 0 0.0003155196018 6.782182268e-22 2.942123949e-21 1.1435976e-08 77.50279458 0 1.483235703e-33 0 0 0.09900703486 1.4662167e-24 0 0 0 0 0 5.661464427e-29 0 0 0 0 0 168523.6402 9.150343644e-17 0.001064532373 410463.2417 0 7.005378493e-18 0 0 0 0 9.018326341e-14 2.034237953e-18 0 0 0 0 0 0 0 0 0 0 0 594.5781057 5.601759492e-05 0 0.03087873262 1.450338633e-10 0 0 7.627146175e-08 0 0 2.204316469e-11 1.650561162e-27 171156.9325 0 1.58778514 0 1.706291791e-20 0 0 0 0.01314506346 0 0 0 0 0.06730137022 1.474766026e-24 5.151384952e-14 5.363998009e-27 0 0.2599394579 0 0 0 0 0 8.071244917e-10 0 1.738241285e-25 0.4793080986 0 0 0 0 0 0 1.144154493e-23 1.040883568e-19 2.737793282e-27 1.289173967e-18 0 2.953683509e-13 2.822112025e-43 0 0 0 1.824383499e-24 0 0 0 3.642757388e-08 0 0 1.479846799e-23 0 0 2.137641629e-05 0 0 0 4384421.216 5.519229064e-25 0 0 0 7.579861076e-12 0 97129.66135 0 8511.199289 0 0 0 2.666435462e-12 0 0 0 0 0 3.946748598e-09 0 5.863032862e-06 0 0 0 0 1.76614298e-08 0.000239144136 0 0 0 0 0 0 5.494817086 0 0.0005652125163 6.192581148e-13 0.0004863399527 0.0607440017 0 0 0 1.417650679e-05 0 0 0 403994.1129 0 0 7.441288166e-09 0 2.334478403e-07 2.92307988e-05 0 0 0 0 0 5.114490638e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.541313277e-15 0 0 0 0 0 1.614329441e-38 0 2.002888473 0 0 0 0 0 0 0 0 0 3.081081429e-14 0 0 5.130391788e-18 0.02675724697 0 0 0 1.25003304e-05 0 0.0001042705607 0 0 0 0 0 0 0 7.343855545e-14 0 0 0 0 4.560576564e-38 0 0 4.008013997e-08 0 0 0 0 0 0 +5.895123135e-14 0 0 0 0 1.85812432e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.825630241e-14 2.911850256e-13 0 0 0 0 28.233301 0 0 0 2.843811413e-05 0 0 0 0 2.146258755e-13 0 0 0 0 0 6.749806595 1.325934703e-20 0 0 0 0 0 0 0.001474499174 0 0 4.367692695e-11 0 0 0.8149167705 0 0 85830.32686 0 0 1.377913011e-21 0 0.000358988089 0.0003822961398 0 0 0 0 160093.1312 0.000187895546 0 0 0 0 0 0 0 0 3.111530463e-21 8.302792844e-23 0 0 1.455027528e-12 151767.2924 0 1.16573249e-05 3.224847168e-17 0 27.33832964 9.940895566e-16 0 0 0 54.63304082 0 0 9.044206756e-08 0 0 4.091717045e-21 2.366418976e-10 2836636.537 0 0 53.32081707 0 1.166200445e-16 2.560887433e-15 0 0 0 0.03067911285 0 0 0 0 3.267338384e-25 0 0 0 5900.720355 0 1.8356526e-06 0 8.783936366e-15 0 0 0 0.007099123788 6.833294015e-25 0 5.168231426e-06 0 0 0 0 0 0 1.3554805e-06 6.741398208e-11 50.64096622 0 0 6358.968841 0 0 2.319658851e-10 1.109105488e-07 0 1.092525386e-05 0 0 0 1.279964945e-13 6.459500745e-11 0 6.710548802e-10 0 0 3.501589748e-27 0 0 0 87.60789769 0 0 0 0 2.929465858e-15 0 1.104133313e-15 0 0 0 0 0 0 25939.75556 3.607053909e-30 2.228165996e-26 0 7.740842511e-28 0 0 0 0 1.069102488e-09 4.184852185e-06 33409.05641 0 1.824583312e-18 4.311903777 0.006834411285 0 0 0 0 0 3.267894383e-26 0 0 0 0 0.005489698184 0 0 0 0 0 2.904068919e-10 0.07003161072 0 0 0 0 0 0 0 0 0 0 0 0 6.447846426e-11 1.681610896e-13 0 4.618427847e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.478713071e-21 0 0 0 0 737993.4318 0 0 0 0 0 0 0 0 4.028836873e-17 0 0 0 0 0 0 0 6.431669693e-24 0 0 0 0 0 0 378078.3449 0 0 0 9.689797263e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2613.29921 3.899286734e-31 0 0 0 +0 0 0 0.07586305109 0 1.084436688e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.877785367e-07 0 8.040673579e-11 3.678730552e-10 0 0 0 0 2.529709716e-20 1.42157031e-26 0 0 0 0 0 565494.3221 0 0 1.954738776e-25 1951.65562 0 1.883634843e-19 0 0 0 0 0 4.916050372e-29 4.708307418e-21 0 0 0.0468911166 0 0 0 433.0422529 0 0 0 0 0 0 8.251852768e-29 691.0371842 0 0 0 0 0 0 4.477995661e-11 4.332295371e-30 0 1.547152698e-16 3.314858383e-11 0 0 0 0 0 0 0.03245239805 0 0 0 0 0 3.542052249e-06 0 0 1.055149851 0 4.741197021e-28 0 5.574766995e-20 0 0 3.484335262e-14 0 0 0 0 0 6.353697425e-08 1676.432188 0 0 0 1.388848297 7.359502328e-12 0 0 0.02296536459 0 1822405.079 0 0.1096812612 0 0 0 0 1.965396725e-05 0 3.506138538e-19 1.656925735e-26 0 2.828096605e-30 3.991441772e-13 3.035370572e-16 0 0 0 2.306784908e-14 3.910054269e-26 0 0 1.307971435e-17 0 0 0 0 20537.20519 0 0 0 0 0 1.032812924e-10 0 0 0 0 0 0 7.801664785e-13 0 1909382.799 0 0 1.770434283e-09 0 0 1.360044975e-18 0.02828065077 0 3.653343317 0 1.502256063 5.900847338 1910.174252 0 0 0 0 0 3.019254775e-09 2.111434949e-05 0 0 0 0 0 1.383410224e-20 0 1.340294166e-28 3.275934924e-08 0.0923249116 0 0 507779.3493 0 4.180527113 4.289990228e-22 0 0 0 0 0.004501967185 0 0 0.00151384439 0 0 0 0 0 0 0 2.407444043e-14 3449199.74 16.65013345 0 0 1.985928129e-18 0 14.37646165 0 0 0 0 0 0 3.953283539 0 121130.8937 0 0 0 0 167179.5616 0.08521537124 0 0 1.787256486 0 0 3.079784979e-23 0 0 3.358035071e-28 0 0 0 4.918813257e-13 0 1.209595769e-22 0 0 0 0 9.545635181e-22 0 0 0 0 0 0 0 0 3.701238257e-20 0.01070990524 0 5.464996746e-11 0 0 0 0 0 0 0 0 3.860142781 0 1.794197954e-09 0 2.740373383e-27 3.309873861e-18 0 0 0 0 0 0.1304309386 0 0 369.7601813 0 0 0 1.819548861e-09 0 0 0 0 0 +0 0 0 0 0 0.0004796473781 42.6702751 4.20557123e-19 0 0 1.349340143e-05 0 0.0006194958202 0 0 0.0001337024897 0 0 0 0.001198417484 0 0 0 0 0 0 6032.686435 0 260141.1258 0 9.013067493e-24 0 0 4.16871415e-17 0 0 0 0 0 0 0.5646935653 2.055415482e-06 0 0 0 4.548759752e-10 0 0 1.625685103e-10 9.550764385e-16 2.374099116e-08 0 0 1.115514701e-05 0 604853.7386 0 0 0 0 0 0 0 0 0 0 0 0.02197936337 8.930371784e-26 2.059994083e-06 0 0 118627.3536 8.195236169e-09 6.780436086e-13 0 0 1.134613676e-22 0 0 0 0 0 0 10.74772993 0 0 1.20199129e-09 1.195468388e-30 0 0 0 2.630669841e-24 0 0 7.73653667e-11 9.01021569e-09 0.04973664224 0 0 5.363925757e-17 0 0.8446766528 0 0 138.9576032 0 0 55813.09552 0 0 151.1323948 0 5.811688786e-05 0 0 0 0 0 0.1936290856 1.435097888e-11 7.425566175e-10 1.70881387e-06 0 156.8953237 25064.79529 0 0 0 0.001161186041 0 0 45.335613 3.021712995e-14 0 0 0 4.472195636e-05 0 501853.9415 0 0.0002083163733 4.269683858e-06 5.393660708e-06 0 1.605133446e-32 0 0 0 28.67286006 2.463675e-12 0 0 0 0 11.59371743 0 0 0 0.1748068583 0 0 3.896802616e-12 0 0 0 3.867926121e-10 5.66664386e-07 0 0 0 0 0 1818.877078 67540.05286 0.5373123836 1803395.79 0 0 0.002048355329 3.365841499e-14 1448.806536 0 0 0 0.4573360517 0 2.996126872e-09 0 103955.461 9.551907985e-15 291.120844 0 2.524749132e-10 0 0 1.727506509e-10 0 0 115.4590827 0 0 13.18399779 2.64433975e-06 0 0 0 0 3.124014869e-07 0 0 23.64846616 2.575082762e-09 35.47028751 0 0 0 0 0.0005978612479 3.450404296e-10 0 0 0.001114268659 2.955822188e-05 0 0 0 0 0 0 0.01758158167 0 0 0 0 0 2.301263925e-08 0 0 0 1.63530382e-10 4.190305292e-20 0 0 0 0 0 0 0 4.01823345 0 0 250544.808 0 5.187026278e-15 0 0 0 0 0.000385004712 3.253931289e-05 4.577686994e-21 0.004927063042 0 0 2.924427125e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 1.993326716e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 4.138180153e-26 0 0 0 0 1.121834387e-12 2.18042909e-19 +0 0 0 0 1.563613422e-07 0 1.081924258e-09 0 0 4.120438089e-07 0 0 0 0 0 0 0 0 2.457337256e-07 0 0 0 0 0 2.755808832e-18 0 0 0 0 7.19152663e-15 0 5.084239698e-20 0 0 0 0 0 5.363327367e-09 1.94506334e-22 0 0 0 0 0 6.090310554e-30 5.238039413e-09 0 0 8.03139484e-25 0 0 0 0 0 0 0 0 85.09031178 0 0 1.709174657e-05 0 0 0 3.395254158e-27 4385.015026 0 0 0 8.068087455e-14 3.619597491 0 0 0 1.808146744e-05 0 0 0 0 0 0 0 0 0.08143867606 5.584285561e-08 0 2107696.254 0 0.02336617379 0 0 6.402533822e-16 0 0 1.114879106e-12 58488.43832 0 0 0 0 1.63357044e-07 0 0 2.722413109e-10 1602718.864 0 0.1296276947 2.674923224e-05 1.848442211e-28 0 0 0 0 0 0 0 3.971057212e-10 0 0 0 0 0 6.429484748e-11 0 0 0 0.01052185956 0 0 0 1.800477335e-16 0 0 107.3310917 0 0 0 0 0 1682524.511 0 0 6.36865286e-09 0 1.71611365e-14 2.846684676e-20 9.465870631e-21 6.611470415e-16 3.680555908 0.002317257893 0 2.572577278e-07 1.465622138e-16 2.601237645e-25 2.388837263e-09 0 0 7.593403556e-07 1954545.573 0 0 2.582479445e-25 0 0 0 0 1.600199623e-15 0 0 0 0 2.466829802e-10 0 4.973443291 0 0 0.007609367961 0 5.178817824e-05 2.842695649e-13 0 4.084198215e-13 0 0 5.800085382e-15 0 0 0 7.483857121e-13 0 0 0.1812660717 0 0 0 0 7523.85027 4.860734226e-21 0 13777.98827 1.280438047e-20 0 5.563478931e-37 0 0 0 7.602464265e-05 0 46817.75543 0 981073.0984 0 0.2161949484 0 0 1.06624897e-30 0 0 0 0 0 0 7.903899224e-11 0 0 0 0 0.05584378146 0.2872154782 488358.1367 0 0 0 0 0 0 0 6.1732266e-15 0 0 5.201586008e-08 0 0 4.780998769 0 0 0 0 0 0 0 0 2.181330406e-12 0 140129.1774 0 5.150535236e-20 0 0 0 0 0 0 0 3.919233828e-21 0 0 0 0 1.250832979e-11 6.948562397e-07 70066.02581 0 0 2.371472083e-06 0.1397912823 0 0 0 0 0 0 0 0 0 5.88688856e-05 0 5.974849218e-16 0 0 7.565742828e-12 0 0 0 0 0 0 0 1.603341233e-10 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.482934382e-07 0 0 0 0.03639240825 0 0 9.071913424e-25 0 0 6.861342463e-10 0 0 0 0 0 0 0 5.489577203e-05 0 0 22601.45055 0 0 0 1.824275977e-19 6.297312953e-13 0 51090.14416 0.426695127 63843.06561 0 0 1.141929815e-14 0 0 0 0 0 0 0 0 4247563.411 0 0 0 0 0 50.15227805 0 4.224783006e-12 2.246932403e-09 0 0 0 0 0 0.2140559327 0 0 0 0 0 0 0 0 2.638261352e-11 0.2213326695 0 1.808553593e-13 0 1382.403637 0 7803.623177 1.13988557e-13 0 4.884454285e-11 0 0 0 6.901208523e-13 7.483824591e-22 0.0003848588168 3.626858452e-17 0 0 0 0 0 2.2568729 0 1.614311447e-10 0 22.50872487 0 0 27732.07466 0 5.933530393e-14 2.106050258e-08 0 0 0 0 0 0 0 0 0.1972493679 1.522623688e-06 0 0 7.266336033e-14 0 0 3.822753514e-28 5.443620492e-12 1.223687306e-14 0 0 0 2.558325346e-19 42167.33359 0 0 0 0 0 0 9.446169535e-05 0 0 0 0 0 0 0 5.49409585e-16 0.4510697707 0 0 7.969196369e-13 7.459481503e-16 0 3.145752966e-26 0 0 0 0 1.291340718 3.44456951e-06 0 0 0 2.195124383e-12 0 0 0 0 0 0 1.016836472e-06 8820.680561 0 0 0 0 0 0 3.668942756e-08 8.693364232 0 0 0.03983628638 0 4.294107206e-17 0 0 0 0 0 0 152.0343167 1.753856213e-18 0.1232022489 0 0 0 9.037260178e-10 1910544.442 3.592551051e-23 1642079.336 0 0 0 0 0 0 0 0 4.805781339e-13 1.038313956e-20 6.598079645e-16 0 0 0 0 0 0 0.02295569711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.082416041e-27 0 280332.1713 1.897040536e-06 0 8.335270784e-06 2.112665542e-10 0 2.815331108e-11 1.998119501e-05 0 0 13.58864384 0 0 7.862366197e-08 2.176567722e-13 0 3.031035239e-07 7.845760016e-08 0 0 0 5.408953173e-10 0 3.27144955e-05 0 0 1.044667491e-35 0.0004266740018 0 0 1.46170616e-12 0 0 0 0 0 0 0 0 0 5.426593481 0 8.051240899e-16 0 0 0 9.856212366 0 0 +2.191785023e-12 0 0 8.756004421e-15 9.224744606e-07 0 0 0 0.009810890411 0 2.083633242e-09 0 0 0 0 0 0 0.01193777763 0.007239863636 0 0 1.533029799e-16 0 0 0 0 0 0 3.511228379e-07 0 0 5.909980676e-05 0 0 0 1.203228884e-16 0 0 0 8.265065601e-05 0 0 0 0 0 1.572658978e-14 0 8.539050267e-19 0 0 0 5.641069708e-15 9.350606261e-28 0 0 0 0 0 1.335009206e-23 0 0 0 4.145121811e-16 1.02201439e-06 0 5.31754391e-31 8.313334916e-12 0 0 0 0 0 0 0 0 569.5528213 0 0 0 0 0 2.216180747e-07 7.246400086e-09 0 0 0 1.173009513e-05 0 0 0.6896994571 5.968640347e-11 0 0 0 0 0 0 0 3.37089219e-10 1.117198034e-13 0 1.302959844e-22 0 0 0 0 723.1104025 0 0 0 0 4.884444466e-16 1.546250022e-21 0 3.278992382e-21 1.392664166e-20 1.324975299e-13 2.886142132e-17 1.069060736e-17 18.84040251 0 3.110855526e-27 0 8.963711369e-17 0.001072046554 0 0 0 0 5.323648028e-07 4.314230022 0.02918613226 0 3.061334007e-08 8.560844191e-31 0.7237697437 3.988467912e-15 9.741264274e-26 0 3.022168924e-19 0 0 0 4.277332591e-12 1.040285967e-09 0 0 0 2.320535633e-08 8.405431497e-07 0 6.974522527e-27 2.456879529e-08 0 7.936773914e-07 0 3.381095543e-11 0 0 0 0 1.770156143e-07 1.739326888e-07 0 0 0 1.961427579e-26 0.001216007322 53369.12115 0 0 2.274392021e-24 0 121.8803875 1.596339052 0 0.03108211568 0 5.057019609e-19 3.036190011e-18 0 0 47864.41385 0 0 1.452601002e-27 0 0 0 44.07824339 0 0 0 0 0 0 0 8.495888749e-15 0 0 0 1.570046085e-06 0 6351.538247 0 0 0 6.61647615e-28 1.982239054e-06 0 0 0 0 0 10.36422465 0 0 0 0 0 1.466842819e-06 0 3.999494262e-29 0 0 0 2077.641974 0 488135.3446 0 0 0 0 0 0 0 0 0 0 0 0 0 5.150243866 7.075458974e-12 2.058593144 2.421075603e-24 0 1.752536329e-24 0 0.001580030761 0 0 0 0 0 0 0 0 0 1.914635641e-12 0 240.8705951 0 0.005520548392 0 0 0 0 0 3.890074424e-08 1.525166193e-18 0 0 2.458480014e-13 0 1.227403842e-29 0.0004413674843 0 1.750985211e-28 9.591283865e-18 0 0 102.7656536 0 1.28594839e-06 1.350396402e-08 0 2.742587571 0 0.001204462731 1.303530701e-17 0 1845913.534 0 0 0 0 0 0 0 +0 4.135776026e-06 0 0 0 0 0 0 0 0 0 2376.085022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.214083985e-17 0 0 0 0 0 0 0 0.0007870964389 0 0 0 0 0 0 0 2.250799171e-14 0 0 0 4.276672416e-11 0 1.768324209e-18 0 0 0 37931.17907 1.361778089 7.666030347e-22 0 0 8.934444024e-20 282657.0499 38837.86897 1358.914632 0 0 642944.9581 0 1.230046017e-24 0 4.969628683e-05 0 0 0 0 0 39869.01644 4.626925052 0 0 0 0.7184473495 0 0 0.06809382894 4.141319324e-13 1.499397076e-26 6.32538853e-10 0 0 0 3.416416878e-15 0 0 3.918708028e-22 0.04507704258 1.001632318 0 0 0 1.219407301e-06 1.1802342e-12 5.964832723e-05 0 0 2.128654842e-20 0 3.43740935e-15 0.0003964681345 1.035117547e-06 0 0 0 0 0 0 0 0 0.003388000944 1.628787917e-23 0.0008643075508 0 0 1.383353116e-19 0 0 0 6.198628493e-12 0 0 1.133323695e-10 0 59.97408296 224905.8274 2.619347195e-09 0 4.986989703e-20 0 0 0 0 2.248006254e-19 0 0 0 21.53207029 0 9.913427273e-16 5.396579535e-09 0 0 0 0 0 0 0 0 0 0 0 0 7.06814585e-11 0 2.473466267e-09 1.985957593e-12 8.59310153e-20 2.779172696e-10 0 0 0 0 3.975062575e-11 0 0 0 0 9165.436621 0 0 5.379010625 0.4705035117 0 1.058759731e-08 0 9.969116798e-15 0 0 0 0.007418414514 2.46394669e-13 4.932996765e-10 0 0 0 6.595382328e-19 4.059284181e-05 0 0 0 0 0 0 0 0 0 0 0.0004944069906 0.001569934873 1.389255179e-26 0 0 0 0 4.703220479e-19 0 0 3.290603334e-29 0 0 4.757763201e-16 0 0 0 1.049311622e-05 0 0 0 2.203559854e-11 0 0 0 0.09998019037 0.0103648855 15647.36041 0 0 0 2.919248555e-15 1.023823471e-10 0 0 0 0 0.000433403518 1.772077601e-08 0 0 0 2.124231909e-10 0 0 0 0 0 0 0 0 0 5.668975161e-11 0 0 0 0 0 0.002671860526 0 1.593116068e-07 0 0 0 3.227480817e-13 0 0 0 751813.0633 0 0 0 1.751481108e-15 0 15795.06025 0 1.41423361e-25 0 0 0 0 0 0 0 0 0 1.822624923e-18 2.352189503e-21 0 0 0 0 0 4.963913153e-09 7.207425934e-14 0 0 +0 0 0 5378.531223 0 0 0 0 0 3.129822913e-09 0 0 0 0 0 0 0 0 1.743504922e-31 4.246761166e-09 0 0 0 0 0 0 3.899541132e-27 3.954190338 0 0 0 18319.91589 0 0 0 1.498337055e-06 0 0 0 0 0 6.847858283e-06 2.349906452e-07 0 1.054897804e-12 7.991702743e-29 0 0 0 1.192868633e-09 0 0 1.476920503e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003102540929 0.02064201985 0 1.431358301e-18 0 0 0 0.007889453309 0 0 0 0 0 1.307828348e-08 0 0 0 4.286742135e-30 787613.1716 47046.94897 1.085243613e-16 0 819.2133892 0 0 0 0 0 0 0 0 0 0 0 4.453466243e-05 0 1.193966768e-09 0 0 0 359820.3825 0 0 0 8.046824994e-29 8.063160633e-20 0 0 0.5016459006 2.996298137e-08 0 280376.8736 0 0 0 5.293358332e-14 2.542739705e-09 3.85686574e-10 4.576861686e-24 0 0 0 0.5142056782 8.236375845e-13 1.249698785e-27 0 0 0 8.811985132e-11 2.083065624e-29 3.815779822 7.962550947e-22 1.565235706e-26 3.82256842e-07 0 0 0 0 0 0 0 3.355833012 0 3.9725299e-06 1.771097669e-14 0 3.790184784e-14 0 0 0 1.653740316e-26 2.954425443e-13 0 0 0 5.459497687e-17 2.506693118e-12 0 0 0 0.4610362811 0 3.378708695e-13 2.550430166e-05 0 0 2871.576816 1.265739029e-06 1.348689505e-09 0 6.611649023e-11 0 0 6.414283776e-14 4.113874008e-16 5.264207032e-25 0 0.003136971294 0 0 5.341286042e-12 3.47365994 0 1.493946043e-14 0 124.534727 0 0 0 6.189751518e-28 0 0 0 3.750854378e-05 29.28152128 4.740151538e-26 3.251979229e-22 1.298847784e-05 0 0 0 0 0 0 0 0.4853100045 0 0 8.28972959e-11 289.3019869 0 0 0 0 0 0.7849052798 0 2271.095559 0 0 0 0 0 0 0 0 0 0 0 2.753147584e-20 0 1.05520381e-09 1.169586866e-13 0 244.9190288 0 0 0.6523979919 0 0 0.001835477808 0 0.03826423385 0.3732537383 0 0 0 3.804112466e-05 4.520436187e-07 0 7.69583927e-05 0 0 0 0 1.432936665e-11 0 0 0 0.01335890421 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.976292517e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 1.612964323e-11 0 0 0 1.205040064e-08 0 0 0 2.615653146e-06 0 0 2.881619538e-41 0 6246.948003 0 44.15278812 0 0 0 1.083925938e-11 0 1.04056876e-08 0 0 0 0 0 4.101999791e-21 0 0 0 0 0 0 3.988346399e-08 0.1160716991 0 0 4.588347362e-16 0 4.99900948e-19 3.475358134e-14 0 0 2.329901828e-21 0 0 500.3517839 0 0 1.730174709e-18 0 0.003368400525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.25726325e-18 2.73397054e-24 0 0 0 0 7.964306614e-20 0 1.455219328e-22 0 0 0 0 0 0 6.470876142e-08 0 0 4.49307433 7.462717576e-15 19392.24691 0.0003363928863 0 0 0 0 0 0 0 0 2227154.726 0 1.946456167e-16 1.185084144e-14 0 0 0 0 0 0 539167.165 0 0 1.818180145e-06 0 0 0 5.895253375e-09 0.5656615083 7.962873734e-14 0 1.304514117e-18 10.55172892 0 0.0002420390408 4.243376935e-11 7.614526805e-07 0 0 3.587391767e-11 0 0 4.381913001e-30 0 0 0 0 2.219964372e-07 3.421906675e-07 0 6.973495539 72516.39044 0 0.6395062747 0 3.585841981 0 0 8.302466229e-06 0 0 0 0 0 2.379976667e-13 0 0 3.876586915e-26 5.009287461e-12 0 3.742661172 0 3.552144131 0 0 2.363817477e-10 2666.669086 0 0 0 7.507363618e-20 0 0 0 0 0 1.845879798e-13 4.997204521 1.190091494e-21 1.420221233e-08 0.9264354045 0 0 2.063487166e-05 1334.121098 154.0588525 0 0.0007742279739 0 1.941357956e-26 5.758501212e-12 0 4.230597494e-14 6.828660653e-08 0.8571013526 0.005118552348 5343.594656 0 1.323199295e-20 0 0 0.02746382799 5.975832419e-11 0 0 0 0 4.528275631e-21 0 0 143168.3924 0 0 0.2568010387 0 1.586190271e-15 0 0 0 0 0 0 0.000123272544 0 0 0 1.318601214e-08 0 0 0 0 0 0 3.801265e-17 0 0 4.773750073e-28 0 0 1.006359367e-17 0 0 0 0 0 0 0 18.68132562 0 0 0 0 0 0 0 1.84405809e-10 0 0 0 4.274222323e-11 0 1.000701016e-17 0 8.012393504e-20 0 0 0 0 897.6413034 0 1.197487719e-19 0 0 4164.222011 0 1.288898969e-23 1.436346364e-14 5.095175679e-26 5.640124449 0 0 0 0 0 8.484923624e-15 0 0 242669.9667 0 0 0 6.069402711e-11 4.645523337e-07 0 289.7547247 0 0 0 +0 0 0 1.125210382e-27 0 7.622574585e-14 0 1.515440445e-07 0 0 0 5.603440827e-26 3.242996479e-08 0 0 0 6.032689491e-26 0 2.231797821e-08 0 0 0 2.797876614e-12 0 0 0 0 0 113001.1747 2.487264298e-10 0.03063254729 0 0 0 0.1619265294 0 120397.8909 0 0 0 0 0 0 0 0 1.644021467e-20 7.255434125 0 0 3.166319698e-09 2.136139397e-10 0 0 0 0 0 0 0.0104924035 0 2.685651182e-08 0 0 2.052180519e-15 0 0 0 0 0 0 0 0 0 0 1.345301196e-11 8.795520793e-09 0 0 22.97791806 0 0 0 0 0 6.878151254e-14 0 0 0 0 0.06152331341 8.904535585e-20 0 0 0 186739.7163 0 0 0 1.248106771e-31 0 0 0 0 0.0001356252322 0 0 0 0.0002643404043 3.819581561e-22 0 48502.12116 0 0 0 5.012232729e-25 0 2.833721077e-21 2014.388878 0 0 0 163137.8665 0 0.2927556621 0 0 0 0 7.337081743e-24 429.2322601 114028.0191 26.4425451 6.288273109e-16 0.06447697016 0 0 3.040103534e-05 0 7.809746418e-14 0 1.367345229e-26 0 0 0 112963.3726 0 98.28686611 4.66840967e-16 1.803701165e-17 0 5.032935597e-08 0.0001099883566 0 257955.5967 0 2.260107479e-20 2.75767196e-17 2.160464208e-06 5590.5168 0 0 467.6918164 0 0 0 0.7066130489 0 1.602645281e-08 0.007048379532 5.839449185e-16 0 6.940858751e-10 0 0 0 0.4922408371 2.188265658e-14 0.0001825624829 1.971128342e-12 2.613968217e-15 0 7.240737525e-07 0 0 0 0 0 0 6.547446563e-08 13644.06778 0 1.376994651e-29 1.500136515e-17 0 0 6.585167555e-26 0.002306583244 32864.7196 1324678.002 0.0339952205 5.000741086e-11 0 0 4.876848686e-06 0.6431399294 0 0 992023.4198 0 0 0 9.039590087e-14 0 0 0.02365547558 0 0 0 0 0.00832035225 0 0 0 0 0.1551558372 0 0 0 1.388005985e-29 0 0 0 2.357459646e-12 1054.289263 0 4.61935567e-11 0 0 1.370438803e-09 0 0 181.9555381 1.673743685e-13 0 0 0 0 0 0 0 2.596391919e-10 0 0 1.51831579e-12 0 0 0 3.641633822e-31 7.917877196e-10 0 0 0 0 0 0 0.9660477526 0 4.952197414e-07 0 0 0 0 0 0 2.212617746e-30 0 0 6.925407464e-08 0 0 0 61.79718836 0 0 0 0 0 0 0 0 3.062967107e-15 1.436615704e-12 0.01046389033 0 0 8.908112298e-08 0 0 0 0 0 +0 0 0.0001766696288 0 0 0 0 0 0 0 0 0 0 0 7.544933004e-38 0 0 0 2.708396121e-27 0 0 9.581295307e-08 0 0 0 0 0 0 0 0 0 1.278559037e-13 1.110500869e-12 0 0 0 0 0 0 0 0 0 0 1822.371456 1.239812225e-13 0.001606649579 1.254696584e-13 0 0 0 0 0 1.206068659e-11 0 0 0 9.677856792e-22 0 3.204332538e-13 0 8588.426136 5.118771461e-28 0 0.01629570775 0 8.956774241e-25 0 0 0 5.501249851e-27 0 748.3875051 0 0 0 0 0 0 1.474861788e-11 0 5.689479035 5.588157031e-08 0 0 0 0 0 3.994088622e-23 0 0 0 0 8.267637091e-24 8.716961214e-12 53.27055142 0 3.382131337e-15 0 5.244156015e-13 1.173412881e-07 0 1.068654262e-12 0 0 0 0 1.17513191e-21 0 3.05369615e-15 0 0 0 0 2.548018367e-10 0 0 0 0.001657169454 6542.538969 0 0 8.246938031e-11 0 0 0 0 0 2321139.416 0 0 5.958915349e-25 0 0.02369768453 0 0 1.303590306e-14 0 2.297193878e-24 0.005525432381 2.54802878e-20 3.575312349e-20 0 0 2641.295943 0 1.241874464e-11 2.005530452e-14 5.325018162e-07 1.253608465e-17 4.065745345e-13 5.732465558e-26 0 0 0 6.919710315e-20 0 0 0 0 0 15.77655869 0 0 1.8570162e-09 0 0 0 0 1304859.074 4.031119138e-14 0 2.897005657e-10 0 0 2383.427935 0 3.163102822e-24 0 0 6.988770294e-08 1.80552364e-17 2.852009869e-09 0 0.003565173836 0.0008908177132 1701.690174 0 1.075413313e-11 4.572072713e-29 0 2.625191871e-05 0 3.099932783e-22 0 0 4.30670819e-06 8.214269987e-12 0 0 0 36.10742926 0 0 0 0 0 0 61.94462911 4.728616909e-24 1.536185326e-14 0 0 0 0 0 3.605739704e-13 3.60120424e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 8.486297e-23 4.048830036e-06 7209.917306 0 0 3.340603315e-26 0 33193.51028 0 0 0 6.595204939e-14 0 0 0 0 1.850906263e-07 0 0 7.310931589e-13 0 0 2.330377968e-13 0 0 0 2.157755673e-10 0 0 0 2.862720448e-20 61841.83751 0 0 0 0 0 0 0 0 0 4.071818824e-09 0 0 0 0 0 0 223430.5876 0 8.963864858e-11 0 1.486709657e-16 0 2.204862382e-34 0 0 3.356721464e-08 5.137465674e-24 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 5.309893243e-07 0 0 0 0 0 0 0 9.042908335e-20 1.926843302e-19 0 0 0 0 0 0 0 0 0 0 20806.24547 0 0 0 0 4.3306922e-09 3.581198578e-12 0 0 0 0 414116.5477 0 0 0 0 4.655595508e-16 0 0 0 0 88.27805281 0 0 0 0 0 0 0 0 0 0 1.499851571e-14 0 0 0 0 0 0 0.009689458798 0 0 7.664833036e-05 0 0 0 0 0 1.035649803e-06 0 0 1.918990513e-13 1.412508059e-18 1.59375652e-25 0 0 0 0 5.657452702e-18 0 0 0 0 6.800548978e-07 99.41159778 1639329.048 0 4.407892232e-07 0 0 0 1.065994926e-19 26834.09052 0 0 0.001888002923 0 0 0 0 0 0 5.618383034e-05 0 0 0 0 0 0 0 0 0 1560160.335 0 31.16350065 0 0 0 0 0 0 3.867593567e-05 0 0 0.0007118013898 0 59758.69534 0 1.880779665e-16 3.520782715e-07 0 1.32573876e-43 0 0 5.130508983e-09 0 0 0 3.836761073e-10 0 0 0 0 0 7.605666424e-05 0.2260923558 0 0 0.005116806731 0 1.29255963e-05 1.22839775e-19 0 0 0 0 1.07156275e-25 2.901309188e-07 0 0 0 0 0 0 0 0 0 0 0 0 1.715919721e-11 594554.2407 0 8.739393238e-22 0 0 0 9.054633839e-14 0 0 0 1.56606863e-05 0 36559.04787 0 0 0 0 5.916653828e-10 0 7.309116532e-13 0 0 6.642932287e-06 4.353453214e-09 0 0 0 9.794972346e-10 9.454753282e-28 0 0 0 0 0 0 1.294300109e-07 0 0 0 0 0 0 0 0 128028.2699 27859.8918 14.59789367 0 0 0 24334.41512 0 0 0 0 6.945767792e-16 0 0 0.3312974915 0 0 0 0 0 0 0 0 0 0 0 0 0.0001255338904 0 0 0 0 0 0 0 0.001222756688 4.959735721e-12 14.26873677 0.02684367241 27.21660036 4.117641356e-06 1.024197797e-08 0 0 0 0 0 6737.376936 0 0 2.352746371e-06 2.197901528 0.1875275388 0 2.591190417e-09 0 0 0 2.16883397e-27 0 0 0 0 48.70718529 0 1.416686685e-07 0 5.462877699e-15 0 0 0 0 2.546339127e-13 0 0 0 0 0 1.531624511e-06 0 0 0 +0 0 9.50425162e-19 1.689517394e-31 0.0001193334626 170.6348915 0 0 0 0 0 159.6818747 0 0 1.193604074e-32 32504.55575 0 7.294449416 211741.8725 0 0 0 0 9.722879036e-21 0 0 0 3.110069089e-22 17.09177569 0 0.0004561395368 0 0 0 0 0 0 0 0 0 1.202640294e-07 0 0 0 0 0 0 0 1.21379685e-16 0 4.566427192e-12 0 0 0 0 4.279075887e-09 0 2.685316824e-11 0 0 0 0 1.127655617e-17 0 0 0 0 0 16.48885688 1935.307145 0 0 0 1.234891976e-06 0 0 0 260920.2988 40938.68724 0.002656448834 0.1501513101 0 1.94777509e-08 0 0 0 0 1.657729552e-26 0 2.821422257e-06 76680.36163 5.669566658e-06 615.1724308 0 0 0 1.058199451e-11 0.0003579613589 0.0002373369157 0 6.705890422e-19 1.414777569e-21 1.973267014e-11 0 0 2.848286528e-07 0 0 0 1.486976151e-08 4.045335636e-17 4.35407677e-08 1.91403935 0 0 9.988561429e-09 0.5892680054 0 6.037956851e-07 0 0 0 0 0 0 0 0 3.671137212e-24 0 0 0 0 0 0 0 0 0 0 0.002704137203 0 0 0.1239753705 0 0 0 11.71982938 0 1.90187657e-11 0 0 0 2.297248039e-12 1.086693418e-14 26.4032975 0 2.193416485e-28 5.343875661e-21 2.030666837e-19 2142899.326 3.886961097e-07 0 9.790839314e-14 0 0 0 0 0 0 0 0 1.421583975e-11 0 0 0 0 1.204169174e-11 0.0002534659068 2.078817737e-11 0.0002524945307 0 1.056775244e-05 2371.400962 0 0 0 0 13.6373062 0.0008988194804 0 0.005740294198 0 0 0 0 0 1.483731068e-06 0 0.0004457140274 1.130499323e-09 0 0.01467680529 0 1.329240867e-07 0 0 0 5.801903145e-15 0 0 3.103811781 0 0 2.08293402e-07 0 2.134280781e-10 0 1.845730311 0 0 5.699611622e-12 0 0 0 0 0 0 0 0 0 0 1.416691039e-15 0 552891.9631 0 9.617812106e-23 2329.314301 0 1.293412435e-25 2.973951348e-23 177.8628498 0 3555.939642 1.092181991e-13 0 4.238592465e-27 1.399851252e-06 0 0 0 1.850367927e-06 0 604.2662179 0 0 0 0 100.9589413 0 0 9951.041351 0 0 0.0002920852864 2.073225175e-07 0 0 0 0 0.03299685846 723726.8316 0 2.304413024e-22 2.609676616e-27 0 0 0 0 0 2032.432619 0 0 0 0 0 0 0 0 1.73264236e-10 0 0 0 0 2.276549581e-29 0 0 0 0 0 0 6.094018594e-15 +0 3.130255503e-18 0 0 0 0 0 0 0 0 0 0 0 0 1.08796147e-11 0 0 0 0 0 1.159523374e-08 0 1.891746833e-13 1.073731101e-22 0 9.790612373e-07 0 0 0.004928548153 0 0 0 0 2.19197356e-20 0 0 1.185179154e-14 0 143360.3578 0 1.849571477e-28 0 9.456439391e-10 0.5358883365 0 0 2.05346165 0 0 9.257134838e-06 5.779956939e-06 0 0 0 0 0 0 8.567293904e-21 0 6.804657268e-05 2.004008537e-08 0 1768455.522 31141.28496 7.643868596e-37 0 0 0 5.753646353 0.5812187693 0 37340.14552 0 0 0 0 0 0 0 0 0 7.278346239e-18 3.169975596e-19 1.243491526e-13 0 0 9.276683872e-10 4.451765967e-13 295.8250278 0 0 0 0 0 733.7879995 0 3.456093422e-26 0 2.35501013e-25 0 1.272988537e-12 0 1.629844701e-29 3.691361386e-11 0 0 5.277157771e-15 0.0004544143395 1.468935624e-26 1.608010353e-18 0 0 0 0 4.099706116e-30 0 3.926254602e-09 4.433454405e-08 3911.065646 0 4.915719286 0 1.801587644e-23 0.01430846707 1.273084893e-12 11562.06337 1.331504983e-08 0 0 0 1.935554237e-20 5.1803539e-21 0 1.988332175 5.850802884e-19 1.564320312e-14 0 0.007729084055 0.008782952049 0.0004397085824 2307731.774 0 0 1.358622518e-18 0 0 1.619313808e-13 0 0 0 182.1893651 2.511663753e-34 0.1658120736 9.426981617e-22 2.596257848e-20 0 4.616693747e-12 0 0 0 0 0 0 1.38247297e-20 0 2.507761444e-10 6.415600063e-10 34230.0362 0 0 0 0 0.0001814316482 2.637344106e-21 36.79295838 285.5884541 0 0 0 0 6.661107862e-08 1.196323701e-24 8.282209005e-15 0 0 261134.8116 4.531495193e-32 0 0 0 73.73065037 0.1798486689 0.05539806777 0 0 0 1.459333715e-16 0 0.0005852557818 0 0 0 0 0 0 0 0 0 0 0 6.066003009e-09 0 0 1.519119622e-13 3.375026674e-15 7.943797882e-19 1.92177915e-07 0 0 0 0.003461241835 7.704207578e-09 0 0 18987.74395 0 0 0 9.525363351e-16 0 0 0.8484983973 8.847343736e-07 0 0 0 0 0 0 6.425273092e-21 5.805438901e-12 965.1192517 0 0 0 0.2979016669 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.824880344e-14 0 0 0 0 0 8.377554623e-19 0 0 0 0.01005567231 9.8050127e-05 0 0 1.143787024e-05 1.275948687e-07 0 1.21190741e-20 8.068085008e-26 0 0 0 0 0 0 0 1.287441687e-21 0 0 9.089773764e-21 0 0 0 0 0 0.0002610373228 +0 0 0 0 0 0 0 0 0 0 0.001886796482 0 0 0 0 4.542446691e-13 9.922467359e-18 0 0 0 0.000106001039 0 4.014235776e-20 0 0 1.514597657e-24 0 0 0 0 3.982632571e-26 8.346004281e-08 0 0 0 0 0 0 3.001254949e-41 1.367953119e-16 0 0 6.567523385e-26 0 7.141612649e-10 1569.25248 0 0 0 4.395376257e-07 0 5.038899316e-19 0 1.993543929e-25 0 11.55701434 0 0 0 0 2.728604014e-11 0 9.37968575e-06 0 0 275.9738591 1.203347907e-19 0 8.502589299e-09 3.629444834e-22 6.718286862e-19 6.498261981e-07 0.0001416466886 0 0.07505699116 0 6.930495053e-29 0 0 0 0 0 2.645712587e-14 2.527301096e-10 0 244.5575108 0 1.083898309e-23 0 3035.988905 7.871421935e-17 0 0.007051036859 0 0 0 1.082737575e-09 70372.18012 1.499634734e-18 0 0 2.924824418 4.10346421e-14 0 0 0 2.761479516e-27 9.050197957e-07 149203.0752 2.474575708e-09 0 0 1.458327508e-11 0.001120498388 0 0 0 0 0 9.938719888e-20 5.611330401e-10 0 0 0 2.627589313e-10 9.23986838e-11 0.25764604 0 0.0001178004346 0 0 0 0 0 0 9.866674086e-16 61.12682231 0 0 0 26.29240546 0 0 0 0 0 3.237229006e-29 2.549284667e-05 0 0 0 0 0 9.981379925e-05 5.09591128e-41 1.347780825e-27 0 4.098034942 2.06524292e-05 2.728468419e-06 373926.218 0 0 0 0 0 1.152827913e-06 7.546125128e-13 0 0 1484889.508 8.380376938e-28 0 0 8.936942154e-34 0 1.430425052e-13 0 0 0 6.440144081e-12 8.396867799e-16 0 2.765325626e-11 6.527917827e-28 5.565362571e-10 4965.843858 0 3.439286522e-05 293.3886771 0 2.189299277e-33 3.518085697e-23 23670.5017 0.0005802212268 0 0 5.026191986e-06 4.853339819e-18 0 0 0 1.149459664e-08 0 322399.164 0 1.575342787 0 0 0 0 0.00758480714 7.980979969e-27 7.839992514e-11 4.761167522e-10 0 0 0 0 0 3.10153046e-30 0 0 0 0 0 2.333319885e-16 0 2.527763149e-12 0 0.002773955815 0 2.507177775e-21 0 0 0 0 0 0.05467718449 0 3.864759643e-08 1.400574761e-24 0 0.07965564491 0 0 0 0 0 0 5.78073093e-15 0 7.394464055e-18 2.07614355e-11 0 0 0 0 0 9.443269412e-08 1.99701884e-21 0 0 3.925419969e-19 0 0 0 0 0 0 3.666928452e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 5.906428257e-06 0 0 0 0 0 0 0 2.505446517e-09 0 0 9.247773423e-20 0 0 0 0 +0 0 0 0.001873086016 0 1.901369603e-05 0 0.01486889008 1.567189981e-26 0 0 0 10.11736547 0 0 0 0 0 0 0 812671.5733 0 3.576743235e-29 0 0 0 0 0 0 0 1.936852286e-22 2.932654324e-25 0 0 0 0 980.9776505 0 5.435496231e-13 0 0 0 2.684696598e-10 0 4.021721687e-10 0 0 0 1319.743746 5.545573869e-11 2.119867744e-20 0 0 7.082910503e-15 0 0 0 0 1.323757615e-29 7.477610751e-19 1.844990826e-27 0 0 0 0 0 0 0 722.6702527 0 0 0 8.27465814e-11 0 0 0 3.862306074e-22 0 0 2.850433531 0 2.347840885e-10 0 0 9.866570254e-15 0 4.779293379e-10 0 0 1.131270663e-10 4.409331296e-28 0 0 0 0 40.74784022 0 0 0.006990273328 0.0001821771688 0 1.921229106e-07 0.004279490743 1.86273625e-09 1.699518987e-14 0 1.124000543e-11 0 0.05003642808 163.432874 0 5.703947e-05 0 1.080319353e-15 310140.3879 0 0 0 9.388111509e-15 0 0 301240.6275 2.960265728e-29 1.375419759e-09 1.161182238e-12 0.4072558627 0.0003603451648 0 0 0 1.010070564e-28 8.880869219e-15 2.587345992 7.481726135e-17 2.166956379e-08 0 0 0 0 0 0 0 1.271328582e-11 0 6.133547379e-05 0 3.48775678e-13 0 0 0 0 0 0 0 1.003633246e-05 8.016145543e-12 0 0 1.950966627e-36 1.09226866e-16 0 0 0 0 0.01369442971 0 0 2.235647673e-28 0 0.001504935837 1.323630756e-25 0 0.001049487993 0 0 5.477268016e-08 0 2.610368615e-07 0 0 0 1.688706746e-14 0 0 5.085670145e-05 0 0 0 0 0 0 0 1.350758963e-18 0 0 0 6.67839307e-17 0.3620277665 1706.068502 80.34143959 0 1.278622857e-30 8.853617205e-11 0 0 0 0 0 1.611588852e-23 0 0 34.88316338 0 0 74723.74889 2.363172614e-10 0 9.425726661e-09 0 0 0 0 0 271706.5948 0 68530.75905 5.32823472e-11 0 1.020808498e-16 0 0 0 0 1.564147475e-23 1.583363549e-05 0 0.002980855759 0 0 0 3.297185055e-18 0 1.138684632e-05 0 0 4.498696889e-17 0 0 0 0 0 7.386061397e-11 0 1.565477755e-18 3.005464943e-20 0 0 0 938568.7563 0 2.639544483e-13 0 0 0 0 0 0 1501714.247 0 0 0 0 0 0 0 0 0 0 2.77160682e-16 0 0 0 1.779970493 0 0 0 1.56279866e-12 0 0 0 0 2.650239492e-08 0 0 0 0 4042328.468 0 0 0 +0 0 0 0 0 19.98921462 0 2.841033953e-05 0 0 0 0 7.414761959e-22 0 0 0 0 0 0 0 0 0 2.293946926e-14 0 0 0 0 0 0 0 1.726528574e-11 0 1.634517184e-06 0 0.004599493255 17.02425187 0 87.89207433 0 0 0 7.597884944e-08 0 8.499899455e-17 0 0 0 194.8826765 0 56711.39687 4000.263435 0 0 1.10626391e-19 0 0 0 0 0 7064.554325 0 9.126961723 0 0 337245.083 4.310244366e-27 0 0 0 0 0 0 0 0 0 0 3.33182233e-09 0 0 2111419.071 0 0 0 0 8.807437393e-24 0 0 0.001950886412 1.269863693e-13 6.803420046e-15 0 0 623373.2104 0 0 9.48777009e-17 0 0 17150.86026 0.004031180426 0 0 9379.837082 1.232696122e-11 0 6.390293287e-12 0 2.240240502e-09 2.014825109e-17 3.944659276e-07 4.46159403e-10 0 7.191046248e-16 0 1.64724995e-18 0 0 0 451124.2145 1.036096652e-18 0 0 4.95223725e-15 0 8.513498689e-14 9.966075882e-27 0 0 5.19053535e-25 1.405397392e-17 11.88941808 0 3.235418468e-34 0 0 0 0 0 0 282.6332477 0.004147355271 6.984121902e-28 0 0 7.719808869e-11 0.003427020932 0 0 0 0.0004490822441 0 0 0 7.526005854e-12 0 0 0 1.890335675e-09 0 0 0 3068.575701 0 0 0 0 0.007225550064 0 0 59727.48136 0 4.441736302e-09 144.8295185 0.0009742734888 9.82052251e-05 0 9.37390093e-05 0 0 1.081544284e-07 0 0 9.356931433e-28 3.957830862e-08 0 0 0 0 1.474652187e-14 0 0.0005364295174 0 0 1.405450602e-21 8.444476752e-10 1282.237024 0 3.127009151e-13 8.560279712e-07 0.002961305124 0 3.367447643e-25 0 1.196598686e-05 0 0 0.01003924001 0 0 6.528754408e-16 0 0 0 0 0.01165181226 0 1.567103571e-22 0.0009347813468 1.342028657e-05 0 5.738074966e-24 0 0 0 0 0 6.598644091e-05 2.697740658e-23 0 2.317800771e-12 6.710902741e-07 4.673381408e-16 0 0 1.443448662e-17 1.168962091e-10 1.639127772e-06 2.832978914e-11 0 0 8.967869136e-24 0 0 0 0 2.315094292 0 0 0.001097483663 0 0 0 3.897161972e-10 19019.11319 0 3.139003688e-18 0 0 7.054605829e-10 0 0 0 0 0 0.0003395970974 0 0 0 0 0 0 0 7.580854768e-25 4.39317909e-13 0 0 66869.50798 4.088517834e-23 4.99396488e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.521621641e-14 0 0 3414.951616 7.404926955e-15 0 0 +0 0 0 0 0.7878609381 0 0 0 0 0 0 0 0 0 0 0 2.716263487e-17 0 0.000311257498 0 0 0 1768.788379 0 0 161.9561234 0 0 0 0 0 0 4.709099815e-19 0 0 5.236329746e-07 0 0 85863.75684 0 2.754126748e-25 0 0 0 0 0 0 17745.77348 0 34036.4919 0 0 5743.241966 0 0 7.038353494e-29 0 0 0 780.1033311 1.128343002e-16 37804.98845 1.430705857 0 0 0 5.575559064e-09 10.69300676 2.986166382e-14 0 7.640349126e-10 0.6225483812 0 443437.4379 258607.114 0 0 0 0.0005460758477 0 0 0.003530468278 1.166361558e-17 0 0 0 2.656301622e-15 0 576702.3391 5.726275296e-18 0.0005483609742 0 2.532924906e-19 0 0.001702345587 0 0 0.0001139300097 1.0887991e-22 2.13658988e-07 0 0 0 0 7.86728134e-14 1.229429176e-20 22159.13066 0 27.56502078 1.710076099e-12 3.250412789e-05 6.682210422e-05 0 0 3.382077527e-08 0 0 0 0 3162427.52 0 6.609883687e-15 0 0.0002099563667 7501.390264 3.893144265e-28 2698.445159 2965.668162 1.07760718e-08 40.02771511 0 0 3.720645058e-24 0 1.57127716e-05 6.427085673e-15 0 12043.14438 1.703649068e-11 0 0 0 0 1.901433133e-07 0 3.033063958 0 0 4.150122828e-15 2.150368187e-18 5.225273489e-20 0 4.053503688e-14 382950.0765 0.002402880555 0 0 0 0 7.04543922e-13 2.620734998e-17 0 0 0 0.0002239834648 0.008968284767 12494.7206 0 0 4011.542591 0 1382.808312 79.64574339 0 0 0 1.521620505e-40 8.0386947e-09 0 0 6.183641459e-09 0 0 0 0 0 2.333388736e-11 0 1327.330447 0 0 5.626926574e-19 0 0 7.820248217e-10 0 0 25.87839752 0 22384.25415 0 0 8.174151988e-12 3.087740509e-27 0.002676670922 493607.2259 6.324334224e-22 3.801461169e-10 1.421888518e-10 0.2881194683 0 40.7786595 0 0 0 0 0 11404.67039 2.651303476e-24 2.691729283 0 0 0 0 0 0 0 0 9.109244221e-10 2.980957647 0 1.059139508e-06 0 0 2.300583528 0 1.523806274e-08 2.30821289e-14 0 0 0 0 0 553994.0759 0 0 0 4.487698802e-13 0.0112221157 0 2.379127109e-07 0 0.05339296908 0 0 5.288346861e-11 2.34075115e-11 1.43682494e-17 0 0 0 59622.16263 0 3.557722888e-16 1536365.004 13680375.38 1.830816156e-06 0 0 0 1.72064512e-27 0 1.455491407e-24 0 0 0 0 0 0 0 0 7.501406656e-35 0 0 0 6.384577957e-17 1.535038337e-22 0 0 3.263010616e-07 0 0 8.07055339e-09 0 0 0 0 0 1.975427538e-10 0 +0 0 0.002773117808 0 0 0 0 0 0.008659216243 0 0 0 0 0 0 0 0 0 0 0 4.261391308e-18 0 0 0 0 3.434745465 0 0 11.84633527 0 0 4.87269234e-12 13976.46622 0 0.0002732934312 53186.76988 0 122232.4545 0 1.607079495e-17 0 0 9.229549592e-38 0 0 0 0 8239.412602 0 0 0 0 0 0 7.936084768 5.41997748 64479.05824 0 5.420184409e-13 0.1518736214 0 4.868607074e-13 7.861360967e-16 0 0 9.857140532e-10 0 0 19403.16903 0 0 0 0.0099577738 0 0 0 1.357895301e-10 0 0 0 1.565978389e-16 0 0.0004356358791 279787.4 0 4.712155729e-11 2.483085987e-06 134.1728391 2.075439843e-05 0 0 3.655169154e-28 0.337959496 1.476074309 0 0 0 0 0 0 0 0 0 4.446848555e-08 0 0 1.798626165e-07 0 0 0 2.193532717e-31 0 1.290394679e-11 0 0 0 109720.3235 0.5530799282 0 0 1.545122669e-32 0 0 0 13693.50459 0 0.06883277978 0 0 0 0 0 12.03013595 0 0 4.941503914e-09 3.667214902e-05 0 0 0 0 0 0 297294.8819 0 0 2.855499366e-26 6.193627116e-20 0 0 0.8387332866 2.438988495e-08 0 8.321894751e-12 0 0 9.047560263e-17 0 5.781153322e-33 1.544097742e-13 0 1.985146121e-21 2.289790258e-20 0 1.666455206e-17 0.009479506081 0 0 2.794633469e-20 0 2501313.548 2552000.463 0 1.787179523e-22 0 1.486869284e-17 0 0 0 0 0 0 0 2.515200187e-09 0 0 2248.915502 1.068798299e-12 3.264425462e-05 6.091806991e-13 0 1.436496587e-09 2360.459464 0 2.423178163e-15 0 0 48519.20408 19338.56554 0 0 0 0 0 0 4.520497868e-26 1.158849287e-22 0 4.491617658e-17 0 3.499517855e-31 120270.9753 1.650083591 1.961939802e-16 0 4.347347902e-24 0 0 0 0 0 0 0 0 3.079913137e-15 0 6.495917818e-05 0 0 0 0 0 2.298735026e-08 0.9366342853 0 0 2.275261003e-09 0 0 5.069259303e-25 0 1.459598942e-14 0 5.373502797e-05 0 0 0 7.344970966e-12 0 1.545198773e-10 89.27277545 5.782709988e-12 0 0 0 2.080875149e-09 0 0 0 0 0.000329693691 19851.51109 0 0 0 1.462680099e-07 0 0 0 2.907598789e-12 0 2.513204757e-11 0 9.469258998e-16 0 0 6443.327406 0 0 0 0 0 0 0 0 0 0 0 0 2.633678742e-24 0 0 0 0 0.001861178952 0 9.496484037e-16 0 0 0 +0 0 0 0 0 2.190050217e-06 0 0 0.3083710455 0 0 0.009796203593 0 0 0 0 1.58647403e-24 0 0 0 0 8.466552261e-08 0 0 0 0 4.139042345e-12 0 0 14.55621291 7.49016123e-05 0 0 0 0.002395339981 15.65673709 0 0 0 0 0 0 0 0 0 0 0 0.2204474217 0 4720614.519 0 0 0 0 0.0003113938511 0 0 0.2349772548 0 1.591564994e-13 0.0003783533993 0.01692315041 0 0 0 0 0 0 0 0 0 0.09492004772 0 9.63485185e-11 0 0 0 1.496218029e-21 0 3.865721423e-14 0 5.275807223e-08 0 0 1.985513071 0 0.01897318839 929.4922776 0 0 1.508781599 1.934079982e-09 0 3.812140043e-12 823772.3964 0 0 0 0 0 0.0009759604772 0 7.784432551e-20 0 0 0 1.758186751e-11 13.16037579 0 0 0 4.970825906e-13 0 2.003054938e-21 0.004372270748 7.108822848e-05 0 0 0 0 0 4.520882977e-17 0.0003232845506 0.4664196266 1.863494501e-05 1.434977958 2.643798165e-15 0 7.41186102e-09 0.0009327612161 0.2314234691 0.0006470074161 7.394787292e-17 8.634541192e-13 6.607430842e-07 0 0.0379036528 0 0 0.02800144149 0.2685485804 0 0 1.340053544 2.2446768e-17 0 2.392992396e-18 0 4.22807199e-05 0 0 0 0 2.115926586e-10 0 0 0 9.706520535e-19 1.64424715e-07 3.447802576e-12 2.410850662e-15 0 0 104.3719417 0 0.05775041469 0 0 7.139772713 0 4.130252199e-06 1.027684165e-05 0 0 1.3167073e-14 0 0 0 0 0 0 1629.037888 0 2.573745531e-09 0 3.079863263e-26 0 4881104.12 0 0 0 0 0 1.224109209e-28 2334584.253 9.352728654e-07 0 0 0 0 4.322172535e-27 0.5799349983 0 0 0 3.75514506e-07 0 5.150578194e-19 3.732519857e-10 0 0 0 0 0 0 2.113396773e-08 0 0 0 85534.5251 3413.253347 0 0 0 1.075860037e-10 0 3.910008413e-35 0.0002260963803 0 0 0 0 0 0 0 0.0005533228378 2124.731252 0 0 0 0 1.345185665e-22 6.991911183e-17 0 0 0 1.070819462e-12 0 0 0 0 0 0 0 0 0 0 3.343885719e-07 0 0 1.475392363e-22 0 0 0 0 1.382011533 2.015605588e-10 0 0 0 0 0 4.492533954e-19 0 0 0 0 9.180324848e-26 0.0002619827306 0 7.09586953e-19 0 0 0 0 0 0.006192370249 0 2.176148428e-18 0 0 7.98695971e-28 0 0 0 0 0 0 1.806012625 0 +0 0 0 7.841239328e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0.757931435 0 0 0 10217.72131 0 0 0 0 4.029710975e-34 0 0 0 0 322.9250828 0 0 0 0 0 0 3.59390889e-12 0 355.773711 1.293541648e-08 0 0 0 0 0 0 0 2.174103836 0 0 7.080011142e-17 0 1.328513707e-32 2.627103732e-20 0 0 0.01291288672 0 0 0 0 0 0 0 0 0 0 788.6119655 0 0 0 0 0 0 0 0.0003485527634 0 2.798794752e-10 0 4.613490837e-19 4.017358738e-10 7889.87418 0 0.269373387 0 1.525604346e-07 0 0 0 86.27432249 1.186878492e-14 0 0 0 0.0002274718464 0 0.005001310908 0 0 1.742906043e-13 2.780253517e-11 0 1.366740713e-12 162849.4938 0 0 1.829901885e-19 0 0 0 329.0652079 465.1060187 5.174084736e-13 0 0 5.958147879e-13 8.454902912e-05 1.087463339e-30 2.342546129e-15 40.20058464 0 2381.502664 0 0 0 0 1899.704529 2.282031464e-18 0 0 0 577.677859 0 0 0 0 0 0.0967250095 0 0 3.197472751e-11 159221.2523 0 9.246095259e-06 0 8.112442598e-11 0 2329049.531 0 0 0 0 0 0 0 233.2469372 0 12.41252827 4.548321027e-10 1.769178633e-14 1.186146874e-11 0 0.2395401349 9.844082723e-16 1.433284731e-09 0 0 0.002365325302 0 0 5.118398661e-13 0 0 0 0 0 5.291339069e-17 4.699603978e-15 0 8.217738975e-34 0 3.288046633e-19 0 0 0.01454224609 3.72760048e-05 0 3.799604926e-15 0 0 0.0001127242159 0 4469.090656 0 0.002186047939 0 2.651105583e-06 0 2.489889862e-16 26.88086612 0 9.888893237e-18 0 988.6147824 0 0 0.02865979659 0 0 0 0 0 0 1.101158378 0 4.344881658e-09 287955.2861 2497.865736 1.525388639e-14 4.154047328e-08 1.351151041e-13 0 0 2.585146061e-13 8.052898425e-11 0 0 0 0 0 0 0 0 0 0 0 5.756344675e-24 0 0 0 0 1.085533518e-22 0 0 0 1.369385703e-20 0 1.171897871e-15 5.177367796e-24 0 0 1202.970197 0 1.918516497e-20 0 0 0 0 0 0 0.0002995950892 0 0 1.903314624e-08 3.133768479e-14 0 0 0 0 2.183056275e-27 0 0 0 0 1867142.858 4.670551217e-05 0 0 1.707699587 0 0.0892882355 7291.6249 0 0 0 0 1.162963449e-05 0 0 0 0 1.003437369e-15 0 0 0 0 4.8958431e-16 0 +0 0 0 0 0 3.008593504e-18 0 0 0 0 0.0004050183226 0 0 0 0 1.393467936e-25 0 0 0 0 0 0 510723.4508 0 0 0 0 5.186289596e-14 0 0 0 594.3958745 0 0 146229.6291 0 0 0 9.45086341 0 0.0004792412904 0 0.1562415702 2.141646613e-16 0 0 0 0 0 0 0 0 1.407449933e-07 0 0 0 0 0 0 0 0.002994710787 0.0002243582508 2.033941819e-17 0 0 0 20370.42303 0 622.6856868 0 3.230218431e-23 0 0 0 3.146043105e-06 2.606085634 0 0 0 0 1.602715036e-11 0 8.818176779e-05 0 149960.7397 1056.311403 0 89474.36419 7.51074576e-13 0 106.3509966 5.811210952e-05 0.004602960381 0.06316388802 1.284869345e-07 0 0 0 2.888861547e-17 2.671732016e-06 0 0.00181644444 0 0 0 0 11.56017228 0.0005920710857 0 0 0 6.093814372e-24 4.019787496e-24 0 1.725744169e-15 0 0 9.347888376e-14 0.007707813951 0 3.263952364e-22 0.001383540962 0 2.258897881e-15 0 0 0 0 0 0 6.458832748e-11 0 1.157002327e-19 0 7.224509993e-32 0.001126428818 0 40926.79545 0 4.068221961e-16 0 7.576966394e-32 0 0 0 3685.296895 0 0 0 8.13106538e-15 1.408806381e-12 0 0 0 3.698602218e-06 1.485772573e-16 0 6.061396052e-09 0 279658.1057 0 6.875950699e-16 2.882564774e-15 1.757315868e-21 0 0 0 1.261447483e-05 0.0006441082109 0 0 0 70667.0324 0 0 9.769639668 2.314653297e-15 0 4.480736695e-19 0 0.07541491123 0 0 0.4343809982 0 0 0 0.05494735247 0 0 0 9.875858909e-25 0 0 1.633523358e-25 9.801542921e-08 0 0 1.564816561e-08 2.805382604e-14 1341.229648 820.0152341 3.783032122e-10 68448.39989 1.042921979e-06 0 0 9.169299404e-19 2.945394869e-21 0 0 0 0.6714354111 0 0 4.703160186 0 0 0 0 0 0 0 3.137048345 71143.88613 0 1.26886626e-12 0 0.0008415077401 0.0002014796493 0 0 0 0 0 2541.41666 143.3012057 0 0 3.401182539e-05 0.001659754733 0 0 0 0 0 0.07785152879 0 1.403522237e-11 0 0 0 0 0 0 2.358232337e-05 3930.889518 0 0 0 3.191712594e-13 0 0 0 0 3.239664237e-11 0 0 0 0 0 1147362.165 3.578630305e-16 0 0 0 16684.79587 0 0 0 0 0 0.01025117872 0 0 7.007800579e-22 0 0 0 3.416043642e-10 0 0 0 0 0 0 3.608364165e-12 0 0 1.790855082e-11 +0 0 5.098486372e-06 0 0 0 0.0009432660838 0 0 4.141317377e-21 2.799391897e-13 1.534960876e-07 0 5.204516974e-10 0 0 0.01596111505 0 8.055047782e-24 0 0 5.852858507e-25 0 0 0 0 0 0 0 0 0 1.151077504e-08 0 0 0 0 4.854525054e-24 0 0 0 0 0 3.380008373 0 0 0 0 0 0 0 0 0 2.446988013e-09 0 0 0 0 9.341122179e-32 0 0 5.849329286e-13 0 0 0 0.1088500314 4.287513553e-14 0 1.653995746e-19 0 0 0 0 7.214939683e-10 0 0 0 0 0 0 1.84633167 0 0.032044578 1.197570148e-06 1.624207163e-05 0 0 0 0 5924.170844 0 8.369191502e-12 0 0 0.00250984902 0 0.0003159717846 1.690570838e-05 0 0 3.664942127e-11 3.836916023 0 2.852663591e-10 0 0 1.143955879 0 13.4013093 5.226405767e-05 0 0 0 0 0 7.039903706e-07 2.130087713e-07 35.4543296 5.368244211e-19 0.8392382129 5.425131059e-10 1.820933847e-05 0 1.369794116e-12 9.363897649e-10 0 0 0 0 0 7.594193188e-10 1.555735213e-23 0.003877185069 0 0 0 4.529874023e-21 0 1.341849344e-27 1.396980347 0 0 916.7911543 0.002382080342 82.73874845 0 1.320149602e-20 0 0 0 0 8.175864987 1.001942313e-14 0.003829268456 0.0118311936 0 2.410065033e-15 0 8.858181165e-18 0 0 0 0 3.821914089e-05 0 0 4.526191832e-10 1269033.107 8.385351028e-11 0 1.373834265e-06 3.969051478 1.933429587e-09 0 0 0 0 0 0 3.665104166e-14 0 3.244325505e-07 0 0 585219.0009 0 0 0 1.837535795e-07 0 0 0 0 0 0 0 0 0 2.742647243e-08 1848.75325 1.426883952e-11 0 3.992352216e-19 7.766228103e-10 8.463168698e-16 0 75.79526345 34015.14536 0 0 917.872791 0 0 0 0 0 425607.9954 27.49671856 0.465164456 0 0 0 0 0 0 0 0 4.516643582e-07 0 7.84677019e-13 1.054857296e-17 0 0 0 0 0 0 252722.0247 0 0 0.0005900292 0 0 0 0 0 0 1.480887196e-05 0 0 0 0 0 0 0 6.656831012e-09 2.485990161e-20 0 2.477749705e-06 2.735727807e-06 0 0 1.274716554 3.207572737e-09 0 0 3.047757938e-08 0 1.098799195e-17 4.326170664e-22 0 0 0 0 0 0 0 0 0 2.660304653e-15 0 0 0 0 0 0 0 4.467167819e-22 0 0 0 1.001394009e-07 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 1.105640883e-10 985702.0376 0 0 2.175726154e-12 0 0 0 0 0 15.65758321 0 0 0 0 4.705175368e-10 5.633372615e-18 0 0 0 1.142047154e-11 0 5.361255358e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.690450151e-28 0 0 0.0001625249886 0 0 0 0 0 0 0 9.217702956e-11 0 0 0 0 2.115923828e-12 0 26954.67422 0 0 0 0 0 0 119084.2849 0 562935.9374 0 0 1.502494364e-08 0 2242.536398 0 0 0 0 0 0 0 520.080501 4.134948814e-09 0 70294.74344 1.15840386e-10 1.796033453e-05 4.262345399e-20 0 0 6.990527027e-23 0 0 0 0 2.756179622e-24 0 4.090748286e-29 0 1.322075427e-05 2.443102119e-22 0 3.332099254e-17 0.001667181697 0 0 14.52766882 0 0 0 1.731874434 0 0 4.989281529e-25 8.769269287e-07 0 9.87023549e-21 0 0 733600.2558 0 205.1220791 6.668889878e-08 3.468574653e-13 3.012567907e-23 121245.3042 0.05663728273 3.222079179e-28 59255.26171 0 0 0 0 0 0 0 0 0 0 9.438227366e-13 1.974765937e-23 0 0 0 0 0 0 8.72852823e-07 0 0 0 0 2.619304614e-10 3.666992125e-10 9.917004409e-14 0 0 0 0 4727.432366 0 0 0 0 0 0.004547741585 0 3.747877881e-11 0 0 8.221534097e-05 0.1123113381 0 2.431359781e-16 0 0 0 0 0 257014.6977 0 0 0 2.351401381e-12 0 0.001918719388 2.029530276e-11 0 0 0 0 0 0 0 0 0 12544.70186 5.713800213e-12 3.044590052e-06 0 0 1.412164349e-16 0 0 0.9048814314 0 0 0 0 0 0.2993868311 2.931349878e-05 0 0 0 74834.10618 0 0.1191425272 0 0 0 0 5.731770885 0 7.807167694e-16 0.1083362625 0 0 1.376758607e-16 53.14763374 0 0 0 4.794229128e-11 0.00126076143 0 0.9861168409 0 20.40414425 0 0 9.069560502e-14 0 0 0 2.321291069e-08 0 0.0001549136361 0 0 0 0 1087.207683 0 0 0 0 9685.265448 0 0 0 0.0001618772509 0.005637508758 0 0 1.919482484e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.618590656e-12 0 1.608648362e-17 0 0 0 0 4.117849488e-23 +0 0 0 0 0 0 0 0 0 24612.69235 0 1.26789873e-07 0 0 0 9.134244724e-28 0 0.00712414691 0 0 0 0 0 0 0 0 0 1.522273263e-13 0 0 0 3.368301087e-14 0 0 3.176189708e-05 3.430437248e-05 2.41706121e-10 0 5.269933975e-07 0 0 1.233289249e-06 0 0 0 0 0 0 22.07502614 0 0 5.583785357e-06 86.56548886 0 0 0 96.89200126 1.815823945e-06 6.912820509e-11 0.09238371651 0 0 0 0.0003511360331 0 0 4.695872585e-10 0 0.001748777693 0 0 0 1.313205113e-07 0 0 0 0 0 0 0 0 0.1074703935 3416047.722 1.915763089e-29 9.004716561e-12 0 0 0 0 2099.653098 5.567924259e-23 3.398188377e-31 0 0.063284602 2.566129029e-25 0 0 0 4.461997247e-17 0.0007723957485 6.497874984e-16 0 1.089565227e-07 9.679303174e-22 3.34480476e-17 0 0 7.638943828e-05 0 3.284991032e-11 1.982949192e-09 0 160.3268491 249.3096048 1.779654687e-13 0 0 2338.125701 0.0003416800547 6.941452955e-11 0 0 1.391526726e-16 4.352352408e-17 0 2.309503451e-10 4.016849619e-14 6.795149073e-18 2.168515599e-05 3.827615241e-16 0 0 9.116139113e-17 0 0 0 0 0 8.279851267e-15 9.594920676e-07 20.27569007 0 0 16.09340463 5.244817115e-28 0 2.646293292e-34 0 671623.5876 0.02206295515 0 4.0486533e-20 1.262550808 1.923294867e-13 0.01778886939 0 5.950485835e-31 0 0 0 1.026547473e-15 6.804794549e-07 5.845073025e-17 2.127080344 0 59.53865529 0 1.228687619 0 0 0 0 1.279116744e-28 2.21795051e-06 0 4.827175753e-28 2.303188407e-08 0 1.232840761e-18 0 3.485675481e-25 0 0.0002265669119 3.931607082e-17 0 0 2.400456913e-13 0 0 0 0 0 0.202593206 0.03586914407 0 0 0 2.575428312e-12 1.096612501e-14 1.415763089e-21 0 0 0 96.52750057 1042.687679 3.6215218e-08 2.056101463e-06 0 0.000209420221 0 0 1.808435131e-11 0 0 0 0 0 6.801782139e-18 0 1.055868103e-25 1.24200668 28.07925634 0 1.081339906 100471.4219 0 0 0 2.11315115e-24 0 0 0 4.884805355e-10 0 0 293228.5545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.222145211e-07 13842.27088 0 0 0 0 0 0 0 0 0 7.484865209e-28 0 1.697838798e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.710244064e-16 0 0 0 0 0 0 2.364152699e-29 171.5118258 0 3.293336417e-14 0 0 0 0 0 0 0 +0 0 0 4.70682716e-11 0 0 0 0 0 196386.2966 169.0831013 0 0.05511887242 0 0 0 0 1613590.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.679592309e-14 1.91843491e-09 0 4.90107863e-25 521761.456 0 0 0 0 0 0.0001298164949 0 2.941297132e-28 0 0 0 0 0 0 24070.20295 0 0.003365325533 0 1.038568624e-10 0 0 0 0 173689.386 0 76376.30064 0 0 0 0 0 0 8.156977683e-26 3.802545554e-13 4724.642826 2.836500341e-43 0 0.009706655978 0 0.04270011835 2.954271275e-14 22.02787786 16.14251975 0 0 9.760154864e-16 0 0 0 0.0001395001198 0 0 6.841473212e-07 0 0 0.05219033912 0.002243865919 0 0 0 0 0 0 4.01800373e-12 0 0 1.749397986 6.979412646e-09 0 0 1.454965317 1005259.724 0 0 1.647754065e-14 8.500418847e-08 2.054433739e-07 1.371066103e-08 0 0 1.905851804e-06 0 0 0 0 0 0 2.474896199 0 0.07446599353 0 0 0 0 5.291255732e-10 0 0 0.001137352215 0 5.533620575e-14 0 3362151.942 0 127.5351684 2.096214436e-06 0 0 0 7.103722147e-09 3.522932883e-09 0 8.489160955e-20 1.090599669e-23 0 7.777331431e-17 0 0 0 0 0.0005934387343 4.969821015e-18 2.294669652e-35 0 2.4860093e-13 1.298454632e-09 0 19647.14542 9536.244999 544.7404294 4.70620651e-26 225486.886 0 0 0 0 0 0 0.004208296053 0 0 0 0.0003127727476 0 7.122968412e-20 0 0 0 0 176.4358827 2.386720486e-09 0 2.170140474e-12 0 9.92911655e-07 1.674478728e-10 1538.434305 6.469746326e-06 0 0 0 1.250257067e-07 2.024269278e-11 0.001193362719 0 9.86226922e-14 0 0 0 1.170896872e-06 5.699730561e-07 12.08634021 1.038969204e-15 0 0.1853002504 0 0 1.231705929e-09 12.18515525 0 0 0 0 6.569012537e-25 0 0 0 0 0.0001101837749 0 0 0 5.581197931e-29 0 0.001418543977 0 1471339.294 0 0 0 0 0 0 0 0 0 0 0 2.615018467e-12 0 3.675265528e-10 0.0004826535691 0 0 0 4.045155342e-11 2.093834229 0 7986.287394 0 0 0 0 8.900371421e-19 1.225903863e-11 0 0 0 2.660325305e-19 3.211508755e-06 0 0 0 0 0 0 0 0 0 0 0 0 5.086317449 0 0 0 0 2.33847191e-16 0 0 0 0 0 3.108014976e-06 0 0 1.376096132e-15 0 0 +0 0 0 0 0.009113879899 0 5.462085294e-10 0 0 0 5.294237047e-10 0.152097263 0 0 0 1.339345582e-06 0 0.0001522292031 188.2770645 0 0 0 0 0 0 0 0 9.205428237e-09 0 0 0 0 0 0.002604543439 0 0 0 0 6.206429178e-16 7.047359413e-06 0 0 0 3.094143916e-15 7.661445771e-16 0 1831624.527 0 0 0 7.098012637e-16 0 0 0.0004002073106 2.441787557e-17 8.175263862e-14 0 0 9.776826809e-08 0 0 0 0 0.0009717115891 0 0 0 16.06497167 0 0 0.2110936431 0 347.9282849 0 5.335919947 0 0.05432789962 0 0 0 0 0 0 0 0.001829585947 0 4.656037094e-05 0 0 0 6.295484839 0 5.439195646e-15 0 2839.929097 2.074762788e-09 0 0 7.182518332e-23 7.818188919e-08 1.003639965e-30 0 0 0 0.03802497298 0 0 4.37131029e-28 0 1.55682255e-07 3.228439437e-12 0 0 0 0.4817171842 0 9.098754818e-18 497.0098877 4.021882103e-10 1.927319075e-06 0 0 2.965462708e-09 0 0 5.294810879e-07 4.429533989e-08 0.01573231333 0 0 1013743.892 0.0006510249459 0 0 0 0.001516930732 6.975163119e-09 3.694044718e-12 0 0 0 0 1.208702685e-06 0 716326.2867 0 0 0 1.239961542e-31 0 0.05057428339 1.573766867e-30 0 0 11840.69947 2.110700101e-16 0.00993004423 0 0 0 26.59564691 0 0 1.626740964e-07 0 16.63032947 0 0 0 0 1.655928346 0 0.0001254842705 6.008097127e-34 9.687918423e-06 0 0 3781.878025 0 0 0 2.396124474e-15 0 258691.2823 0 0 32189.05123 0 1.396748439e-17 5.969811306e-10 1.069150987e-05 0 5.978719798e-20 0 0 0 0 3.66249462e-14 2.83175021e-15 2.387200939e-11 0 8.448643929e-07 0 0 0 0 0 0 0 0 0 0 3.316599338e-09 0 1.318951216e-27 0.006399533138 0 0 0 0 0 0 0 0 0 1239.602659 0 1.131855149e-22 0 0 0 0 0 3.872157628e-12 0 0 0 0 0 0 0 0 0 0.0002148573993 0 0 0 0 0 0 0 2.881262987e-05 4.130095433e-30 5.612445591 0 8.847742378e-19 0 8271.00419 0 0 0 0 4.12252852e-08 0 5.120914015e-06 1.000182053 0 4133693.294 0 0 0 2.451070612e-12 0 0 0.0001556258966 0 0 0 4.303136858e-07 0 0 3.436949622e-10 0 0 0 0 0.0001446399629 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 2.888800241e-14 0 0 0 0.0001066928769 0 0 3.04461969e-09 0 6.129493703 0 0 238.0926675 0 4.167547499e-23 0 0 8.498547453e-23 0 0 2.609799827e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4716.747547 1863178.803 8.707844946e-08 0 0 0 0 0 0 0 0 0 0 9.663844182e-05 0 0 0 0 0 0.001347822837 0 0 0 0 5.491836597e-14 0 0 0 0 9.290342079e-28 0 0 0.00440663664 0 0 0 0 124436.5378 0 0 0 103.2660737 0 0.001428875385 0.01086006131 0.00298047485 0 4.038936258 0 0 1.044375759e-08 0 0.000476187188 0 16077.85826 9.906919307e-21 0 2.126863998e-15 0 1720744.495 2.628068898e-27 9.387449539e-19 0 5.37569626e-28 8.91692698e-12 0 0.006110209278 1681.089546 3.388002297e-11 0 0 0 0 7.727640518e-05 19766.02908 0 0 8.706532633e-28 9.00487076e-11 2.777033693e-21 0 0 6.325468937e-08 0 1.537110295e-23 0 4.981879128e-10 0 0 0 9.836772483e-09 2.26871586e-10 0 0 5.001480295e-16 0 0 0 0 0 0 0 1.331361834e-05 1093428.986 292563.6632 0 1.547518811e-21 6.194536841e-07 0 359.2044505 0 19.18727608 0 0.002901204661 1.336871023e-06 0 0 1.114084869e-11 0 5.042743062e-15 1.879781032e-20 90.04718836 0 0 2.125483291e-15 0 0 0 0 0 0 1.870437074e-13 0 2.184686729e-07 0 0 0 0 0 0 0 4.895334063e-11 765549.7047 0 3.397002117e-12 0 4.223531585e-12 0 0 0 0 0 0 6.414276656e-21 5.991625764e-16 0.0007967446007 6.55605775e-11 0 60.18348016 9.293646257e-13 0.0006684556561 0 2.82381543e-24 0 0 7.203723824e-05 0 0 5.371536112e-32 0 0 3.22745898e-13 0 3710155.926 0 0 0.0002913740388 0 0 0 0 0 0 0 0 0 55.40087603 10.82262861 0 0 0 462705.5545 0 0 0 0.008363811343 1.3425639e-12 4.019274734e-13 0 0 0 6.406680812e-10 0 0 0 2.802259699e-17 0 0 0 2.088015614e-35 0 0 0 0 0 0 0 0 0 0 2.126053383e-14 0 1.166208158e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.489408147e-10 0 0 0 0 7.919407182e-07 0 0 0 0 2.647207843e-05 0 0 0 0 0 1149897.2 0 0 0 0 0 +0 1.354435974e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.2001499e-21 2.922254486e-10 1.92180887e-09 0 21084.91955 3155.84199 2.49731884e-27 2.448111107e-18 0 0 0 0 0 0 1.567929387e-33 7.657909373e-28 0 0.0327733112 0 0 0 0 6.564041522e-16 4.575559713e-22 0.02659794579 6.233092555e-05 0 0 1.61848227e-05 0 0 0 0 8.981860427e-10 4.225472674e-23 0 0 0 0 0 0 5.188156142e-15 0.01652927002 0.03804078496 0 0 0 0 0 0 3.857486544e-13 2.308928567 5.141622012e-09 4.053405748e-24 0 210.8934404 0.0003838960312 1.639768518e-07 60.07300273 0 0 0 0.02935598938 0 0 0 0 0 5319.53654 210.4524827 0 1.374981916e-17 0 8.22317361e-18 9.173242055e-08 0 2.712860139e-22 8.520601867 0 0 16.84784724 1.943607094e-19 3.234055049e-25 0 2.530390136e-14 0 0 3.806553071e-11 3.765213798e-26 4.357343719e-15 0 152136.4661 2.92463485e-05 0 0 3.137614537e-10 0 0 0 0 0 2.735360485e-07 52.69444151 0 0 1.540051531e-16 0 0 0 1.081441818e-16 61845.75542 0 0 0 0 2616.348056 0 0.0002145723959 1454.361189 40487.93074 0 0 5.822729989e-15 0 0 0 2.834471268e-15 0 0.0001504924163 1.149503677e-13 0 22779.48281 0.001307581689 1769.614981 4.674534389e-32 0.0001718342396 0 0 0 16.25338748 0.004020534758 0 0 0 0 0 0.1890037935 0.02412995367 1.866560547e-06 1.356382458e-05 2.110539992e-05 0 0 0 0 2.438930605e-08 0 0 0 0 0 0 0 0 0 0 5.326466607e-09 0 0 0 285168.3408 0 0.001619556201 0 0 0 3.737755356e-26 0 0 0 0 3.569157178e-06 3.763239854e-10 0 0 0 0 0 0 0 0 0.007987914024 1.17759484e-18 0 0 3148056.132 0 6.318580695e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 1.578558217e-07 0 0 25999.6568 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.029711192e-08 6.498884373e-07 0 0 0 0 0 1.71950228e-31 0 0 0 0.1808238118 0 0.0001880296705 0 1.456819811e-09 0 0 0 0 0 0 0 5.846297792e-23 0 5.62925497e-06 0 0 0 1.703043668e-13 0 0 0 0 0 0 5.911597117e-09 0 2.953127177e-24 0 0 0.009731933703 0 0 5.48062816e-29 26386.39564 0 0 0 0 0 0 +0 0 0 0 0 5.222362298e-12 0 0 0 0 0.04146164836 2.180311064e-38 40377.57189 0 0 0 3.655341746e-15 0 0 0 0.007218326743 0 0 0 128.1505447 0 0 0 0 1054.284073 0 5.420999661e-10 0.0001829371262 0.002210437197 0 2.296555886e-07 0 0 0 0 1.043341562e-06 0 0 0.002843035824 0 4.730021821e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 131.1494359 0 0 4.674451874e-08 0 126190.7851 4.044467243e-10 0 0 0 0 2.0876623e-07 4.055938753e-26 0 0 0 108414.4138 0 0 1.939210405e-07 3.538373273e-13 0 1.638070134e-08 0 3.433348986e-06 1.523392869e-11 0.001697897119 0.1638512598 0 0 0 0 119.9480832 0 1.36541046e-30 1.675471876e-17 0 0.0002973295145 0 6.866252995e-05 0 0 0 0 2.331602085e-11 17.07910693 0.001834552058 0 1.296264067e-26 0 9.088825174e-08 0 0 0 0 2.6753631 0 0 0 0 0 0 0 8.796961931e-08 2.369817472 7.834484454e-12 0 0 84.18526805 0 15.40093252 0 0 0 0 0 0 0 0 2.162908551e-06 0 2.986364873e-21 0 0 2.317165991e-29 19187.51198 1.390471175e-23 4.753458128e-13 0 4.445946111e-21 0 7.34770651e-06 0 1.997003051e-11 0 0 1.115695137e-09 0 0 1082691.858 0.01485712987 0 0 0 2.568797016 4401378.238 2.41442508e-20 0 1.403681992e-12 0 0 5.530926298e-14 0 5.979155634e-08 0 0 0 0 9.366445199e-10 0 0 0.1244612568 0 3139.694089 0 6.213017014e-10 258.7713255 0 9.84392242e-06 6.892352618e-16 0 0 0 0 32.1078623 0 0 0.05321107404 0 0 0 0 0.02426878307 0.002337147497 0 0.5383284737 0 1.469125576e-15 0 0.028470218 4.176456155e-07 3.89282216e-10 0 0 6558.24453 0 0 1.050765573e-05 7.783488511e-17 0.006233349317 1.443384325e-27 0 0 0 0 0 4.647224934e-12 3.411934975 0 6.085448563e-13 0 0 0 0 695492.1667 0 0.001595162061 2.191462235e-07 3.305912688e-25 0 0 0.005122012131 0 0 0 0 0 0 1.873883307e-27 0 0 0 0 0 0 0 0 0 0 1.089704437e-07 0 0 0 0 0 0 0 0 0 108838.4581 1.565368877e-13 0 0 1.681067496e-16 2.730616254e-27 0 0 0 0 0 0 0 0 0.4471280372 0 6.450611674e-27 0 0 0 0 0 0 0 0 1.211732179e-21 0 4.705866338e-16 0 3.448378414e-10 0 0 +0 3.932517961e-13 0 0 0 0 0 0 2.001077707e-14 0 21.09541068 4253631.512 1.522389404e-15 0 175.1923158 0 0 1.169683924e-12 0 0 0 0 9.894532093e-07 0 0 7.803458925e-12 0.001758095653 541352.0695 0 0 0 1.195585277e-19 0 0 2.856079124e-16 0 0 1.503374014e-07 0 0 0 0 0 0 0 0 5.814604974e-05 0 2.247336203e-08 0 0 5.172666058e-16 0 0 0 0 0 4.909908397e-06 2.815898717e-16 0 0 36.47780605 3.727705571e-20 0 0 0 0 0 0 0.006342889886 0 1.490571519e-13 0 0 0 1057.64421 0 2.530308668e-10 0 0 0 0 369.3068628 4.289320002e-14 3.042646119e-06 0 5.32634971e-09 0 208.5663164 0 4.12434353e-09 1.500125388 643459.0705 0 5.274397208e-17 2.040529039e-19 3.602547314e-27 0 0 6.519643435e-25 0.5107101321 1.349310798e-17 0 0 1.045801889e-17 2.297735441e-23 0 5.309992494 8.005017509e-06 0 0 3.882897163e-18 383.8443279 5.647211498 573538.1899 6.40612384e-06 0 0 1615177.08 0 0 7.64464078e-06 0 0.0002375174905 0.0002923242419 0 1074858.599 0 0 1.648358591e-15 0 6.350209555e-05 0 2.349408769e-10 0 6.387553894e-19 2178.958949 0.1816385194 6.516097415e-11 98.55715581 1.065603397e-09 0 224801.2165 0 5.501325627e-07 0.0001009184845 86.17573176 0 0 69.04219058 1.709972356e-30 0 7.528083241e-22 0 387.3154831 3.53229838e-31 5732.799226 1.331335583e-06 7.187932372e-09 0 0 0 288982.1921 0 0 0 0 122183.0262 0 1.00898482e-12 0 9.848415739e-28 0 5017.712787 0 7.155680118e-06 0 7.884021696e-25 4.357452596e-13 8.148771167e-05 0 2.668315939e-15 3.830842179e-06 2.079316873e-07 0 1.969200472e-07 0 0 0 0 0 2.270846111e-11 0 0 0 0 0 0 38103.2341 0 4.157119724e-11 0 0 0 1.152499939e-07 0 1.098083807e-11 1.89627318e-12 0 0.009049998402 0 2.041022154e-18 0 0 12591.62598 4.622710743e-05 2.569743326e-17 0 0.8020819553 0 0 7.468814761e-11 6.493765731e-10 0.1239031343 7.676562996e-21 0.04135725451 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.038007516e-27 0 1150197.534 0 0 3.566823079e-15 0 0 5.575371257e-10 0 0 0 5627.937815 0 0 0 1.269021598e-11 0 0 0 0 7.893892616e-10 6908.820203 0 0 0 0 115732.9416 0 0 0 1.10934856e-07 0 0 0 0 0 0 4.771300719 0 0 0 0 0 0 0 0 20.64770199 0 0 4.491146274e-17 0 2.31953312e-06 0 0 0 0.00635974206 0 +2.611287702e-12 0 0 0 0 1.240364584e-07 8.119074564e-13 0 0 0 0 0 0 0 7310.726256 1.103134865e-11 18.53337863 0 3.478405341e-22 0 0.0008335828369 0 0 0.02508200877 0 0 0 0 0 1.278296475e-26 0 0 0 2.091723031e-10 0 0 489.9325117 3.580957868e-25 6.818542333e-08 0.02096292221 3.775082067 1.338921839e-12 0.003544352959 0 0 0 1.502006085e-11 1.408574354e-14 9.515645713e-16 0 0 0 0 0 0 0 6.264037257 266741.8383 13.2426548 0 0 0 79.91966315 2.803004018e-09 0 0 0 0 0 0 144829.312 8.075857772e-23 0 1.467032682e-11 0.0008410089496 5996143.381 0 0 0.008539546581 0 0 1.866373526e-26 264778.3504 0 0.04283707631 0.7015822866 1.054365457e-16 0 0 227.3779822 0 0 7.76905493e-11 0 1.485220551e-05 8397.081846 0 0 2.57309427 0 118096.1428 0 0 0 2.678504111e-12 3.315842256e-20 0 0 0 0 0.06416054315 0.0002713327743 0 1.175783416e-24 0 0 0 2.813628005 0 0.001524476089 6.804584397e-11 1.970551238e-22 0 0 0 9.679543096e-16 1.106265696e-09 0 0 0 3.278514752e-14 9.980234826 0 0 2.727142301e-08 0 0 9.066450719e-13 0 1.654483814e-15 0 0 8.846799005 0 3.83063467e-08 1.482203892e-08 2.082223586e-07 3.179486332e-16 0 4.04873971e-33 0 4.146843459e-05 0 0.3548626337 1.506207295e-10 1.035366999e-08 0 218383.0462 0 0 8.014738594e-05 0.0005169185966 0 0 0 0.03175017349 0 3.541658206e-07 0 137213.7514 0 0 0 0 6.915848691e-33 3.091523878e-16 0 0 0 0 0 0 0 0 4.064723476e-29 1.407739514e-09 4.257651147e-07 3.773821785e-06 0.0005283588286 0 0 0 9.276867759e-18 4.456656789e-06 0.000673511844 0 0 0 0 0 0 0 2483.033499 0 0 0 0 0 0.02026888721 0 0 0 147.3172616 0 0 0 184.7549584 0 1.18245456e-09 0 0 0 0 0 0 0.0001028587651 8.321370414e-13 1069389.542 0 1.013491316e-10 0 2.718561963e-12 0 0 118474.0914 94.89118526 0 0 0 0 1.583052633e-24 4.159537595e-10 0 0 0 0 0 0 0 8.160402403e-13 0 0 0 0 0 0 0 741.5358519 0 0 8.247561058e-27 0 0 4.649704809e-07 0 0 1.113788318e-18 2.635568761e-08 0 9.723439767 0 2.943050776 8.950720444e-17 1.904741027e-08 0.08512596558 0 0 0 1.914546891e-11 6.909264726e-19 42975.79093 0 0 3.480085285e-10 12497.39943 0 0 0 0 0 0 0 5.691948712e-14 0 0 0 0 1.45534678e-24 0 0 +0.07317260857 0 7.132778959 0 0 0 1.586996952e-10 3.430366505e-10 0 0 0 0 0 0 0 0 2.118828718e-23 1.265952966e-21 3.997789048e-10 5.640381341e-08 0 2.517048709e-09 0 567547.0295 0 0 0 0 17.32310091 0 0 0 0 6.011762694e-14 4.886559503e-22 1.209900888e-13 0 0 0 0 0 0 510.0561357 0 0 0 0 0 0 0 0 3.074415107e-12 0 0 0 0 123114.2957 754500.6835 0 3.033573309e-16 0 0 0 0 1.129532002e-29 0 0 0 3.44376892 0 8.444648412e-11 9.362758475e-14 1.889733525e-23 1.961305374e-32 2.715465819e-20 3.36201761e-08 0 0.7452756826 2.402742176e-25 0 0 49.93220285 0 0 0 1.498334972 9.123572853e-27 418.2418763 7.859171651e-12 6.751598328e-17 73819.22692 1.939530661e-05 0 0 1.932189926e-18 70.97545106 6.724466902e-11 21.54627753 0.009370482818 6.660192508e-05 0 0.1081281454 1.470345414e-09 17.68697981 0 0 0 0 0 3.52434563e-36 0 0 7.12421883e-06 0 0 0 2.892742791e-31 0 2.420207299e-05 0 0 0 2.251433115e-08 0.02740519462 1.98846254e-05 0 0 15.2117128 0 0 0 7.839766677e-16 0 1.810155918e-26 0.793526446 0 234098.4975 0 0 0 0 6.36543544e-10 1.109383397e-07 7.920434721e-08 0.4111412453 0 0 1.097489689e-08 0.003953297692 2.248915458 0 0 3.907271384e-12 4.446827478e-36 0 1.721618657e-10 0 9.293501719e-07 1.170053527e-08 0 0 0 0 0 1.026953692e-09 0 0 29674.34269 0 0 0 0 2.089222435e-05 7.827142554e-17 0 0 0 8261.740851 0 0 0 0 0 0 0.0008091564839 0 1.983096538e-07 0 2.220913029e-19 4.829618181e-08 0 0 0 7.153178083 0 0 3.193480493e-24 0 1.733414564e-07 0.06101999031 0 0 0 317441.4678 207701.4222 0 0 0 0 7.651925001e-42 0 0 0 4.162617257e-19 856.929442 0 5.431002825e-23 0 50.80387579 4.09019181 0 1.452002254e-06 3.231403588e-16 0 0 0 0 0 0 8.556010302e-05 0 0 0 0 0 0 1902626.499 0 0 0 0 0 1.071202252e-27 0 65228.47685 0 0 7.05894428e-20 291257.9549 0 0 0 0 0 1.302572002e-07 8.617922441e-13 5.386934717e-08 3.551332113e-14 5.302360728e-18 0 0 0.006308388681 5.513016067e-41 0 2.096605748e-12 0 0 0 0 0 0 0 4.1771468e-10 0 0 4.294544962e-17 0 0 2.828292429e-07 0 0 0 0 0 0 0 0 4.298440135e-24 0 0 0 0 796110.774 103980.5034 2.692823922e-20 0 40833.22952 2.727525909e-13 2.408006273e-11 0 +0 5595874.74 0.5107712954 0.0009123846366 0.3543453159 0 0 0 0 0 0.02046238889 0 0 0 0 0 1.97146552e-09 0 0 0 0 4.399786321 0 0 209199.9095 0 0 0 0 2.656048489e-06 3936.410877 3.591282592e-06 0 0 0 0 0 0 0 0.1983372666 0 0.06307701868 0.5034059365 0 0 5.545995136e-20 0 8.031425989e-08 9.796318984 0 0 0.03973163481 0.01020788864 0 4.330950636e-12 0 30.82506486 0 0 0 0 0 2.013299333e-24 7.625138569e-33 0 5.598893017e-16 0.05739621851 0 0 0 0 10.83791945 7795953.597 1.101568442e-13 0 0 0 2.908600102e-16 0 0 0 0 0 0 0 0.006793580331 0 0.002289722146 0 1.70305866e-09 0 0 0 0 4.014360764e-17 2.136307219e-07 0 0 0 0 1.379937974e-10 3.879874444e-10 0.006947545411 0 0 0 0 0 0 0 3.109618775e-07 3.814560143e-16 0 0 0 0 0 1829.748191 0 0 1.1214545e-12 4.136594575e-13 0 0 6.50880342e-09 2.631453323e-16 1.193034576e-05 6.249917241e-15 2962139.575 0 2.997533114e-16 8.534571552e-07 0 0 0 0 3.467979872e-07 0 0 0 1.051209071e-18 0 3.758086406e-32 0 0 0 6.106552661e-06 11.53757971 0 0 1.302931075e-07 2.616198059e-30 0 1.677039454e-10 0 0 8.778506019e-06 0 0 0 2.862975657e-09 0 0 0 1.269276553e-24 8.522457428e-19 0 0 0 0 0.238190642 0 6.941125954e-08 0.004266123295 217134.5088 0 3.682567009e-18 1.167098127e-24 128423.8225 0.001366889914 0 2.316860045e-10 0 12.00943643 0 678.4588908 1.035250701e-12 0 0 1.877928962e-07 0 0 0 1.763861416e-23 0 34236.02144 0 1.345651974e-07 0 2.362245027 0 0 0 719.7294651 0 314.3631035 5.518412179e-13 0 0 0 0 1.963166856e-06 0 896419.1917 5.580014938e-11 0 0 0 0 0 98132.95654 151.6075061 0 0 0 0 1.992201603e-16 0 0 2.8125978e-13 0 2583.339323 1.343663359e-08 4.663226299e-13 0 0 0 0 0 0.0001861378391 0 1.01588149e-13 3.322238862e-11 0 0 0 0 0.0002716914805 3.899772261e-11 0 0 1.024557336e-10 0 2961353.83 2723.494482 0 3.970895944e-06 0 25204.77863 6.904257966e-09 0 0 5.30035358e-10 4.368621103e-10 0 4.239823716e-18 6.889312786e-16 0 0 3.160789814e-19 0 5.274654862e-05 30.21663882 1084720.035 7.889411564e-06 0 0 0 0 0 0 0 0.0001613083738 1.531702777e-12 0 5.312285146 0 0 0 0 6.395747e-31 1.89488311e-05 53233.2515 0 0 0 0 4.131243612e-15 0 905.4431057 +0 0 0.001971505031 0 0 0 0 1.763999762e-18 0 0 0 0 0 0 0 1.832250086e-12 0 0 0 0 0 0 0 0 0 0 0 0 8.475934668e-21 0 0 0 0.02591022104 0 0 4.294487018e-06 0 0 0 0 9.051066847e-13 0.8671170317 1.704944434e-14 0 0 0 0 9.256078316e-05 1537.349253 0 0 1.112102244e-26 0 0 2.167789205e-09 3.962161045e-18 0 3.182405666e-11 0 2.912526824e-12 0 1.281810327 0 4.124613529 0 0 0 0 2.111696297e-06 0 534117.1612 4.918368886e-14 0 0 4.483221525e-14 0.0001594429005 0 0 1.2103015 0 0 400.073611 0 0 0 0 0 1.178821622e-11 0 2.286090823 0 6.767436788e-26 0 0 8.356233477e-31 1189383.457 0 0.6434641794 0 0.03144430474 0 0 0 217.1909314 0 0 0 6.088937594e-25 0 1.269550618e-09 0 0 0.1042452248 0 0 1.106600405e-12 0 0 0 0 0 0 0 8.841400173e-09 1.014939692e-20 224.6683338 2.332636931e-09 0 0 651912.8042 0.0001754733334 0 2.816192146e-15 0 723898.098 0 0.006531118936 0 1.477245283e-06 4.404317647e-05 1.031663999e-11 0 0 0 4.608417076e-15 0 5.269446544e-13 7.213544488e-09 6.805567527e-13 0 0.004682109555 0 0 0 0 0 8.205896353e-10 0 110.2944722 2.507132466e-13 0 0.0006933353011 1.207858824e-21 0.01444800165 0 0 0.0450473328 2.944218021e-15 0 0 1.078150022e-08 0 0 12409.47337 2.236379695e-06 3.805017614e-20 2.208490801e-08 1.283034814e-22 0 0 0 1.900405899e-15 0.001962029032 0 0 0 0 0 1.464030207e-08 0 1.125083288 0 0 0 2.956526524e-17 1.114459426e-15 0 0 0 0 1.377690883e-24 3.157217109e-11 9.281757944e-20 4.634164864e-34 6.573135329e-24 0 1.000225603e-11 1.72823486 7.375962528e-14 5.841949063e-21 2.040988136e-23 17.85984532 0 0 0 1.033718599e-06 2.06337096e-28 0 9.800964061e-16 4.025693351e-23 0 710503.008 0 0 6.098601843e-12 0 0 9489.955492 0 0 0 0 0 0 8.778885668 2.056735148e-18 0 0 0 0 0 6.67767832e-15 9.35676004e-15 5691478.204 0 0 0 4279.665397 0 0 0 1.690450119e-07 0.8307410544 40.98348409 0.0003116851358 0.000705318541 0 0 0 7.590668218e-05 86090.50866 0 8277.394725 0 0 0.0001657505901 0 0 0 0 0 0.004830749305 60.23735471 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.145856732e-08 0 0 0 0 1.039219025e-24 0 0.3061015108 +0 0 0 6.889621263e-17 0.01645824764 0 0 0 0 0 0 0 0 0 0 2.579354593e-24 0 0 5.795431515e-13 0 0.0002087833905 0 3.061225501 0 0 0 2.709816877e-11 0 0 1.615443414e-05 0.0001657219376 0 0 0 0 0 0 94346.2663 0 0 156.2189525 0 0 0.003121486576 0 4.112827785e-29 0 0 0 0 0 0 0 4.05603392e-05 0 9.39976954e-15 1.476163597e-08 0 50463.4642 0 0 0 0 0 1.289085643 0 127098.0925 0 0 3.821354455e-09 0 3.060825972e-11 0 1.765554428e-05 6.863051379e-17 0 2.517147441e-15 0 8.596030191e-26 3881.750392 0 0 3.276764856e-13 0 174484.5131 0 0 0 8.617685775e-10 1.326457549e-16 0 0 0 0 0 0.003616078124 6.199575549e-10 0 0 4.224275931e-06 0 3.601651281e-07 1.531821316e-05 2.599197947e-15 0 0 5.44927584e-10 687.934054 1.126059502e-12 0 13307.25698 4.821239237e-21 0 0 9.632754157e-26 0 4.46005318e-09 0 9.711545573 0 0 0 0 0 0 0 3.539964471e-15 2165.384176 0 8.733981484e-11 4.515486567e-07 0.0004276886752 0 949.0030359 5.092100858e-12 79.56521127 0 0 3.357660769e-06 0 4.270020854e-37 0 3.696619738e-09 0 0 1.04058932e-14 0 57677.34542 23.65147225 8275.634889 0 0 3.652878354e-07 0.009033299256 8.46751398e-06 2.129739272e-15 0 0 0 0 0 0.00166748503 0 3.723887528e-11 2.770278685e-31 0.01221360126 0 0.001778658489 0 0 0 1.322609917e-05 0 5.54431691e-05 2.650907536e-10 0 1.011205223e-28 5.573205145e-19 0.0001354166656 1.309050432e-19 0 0 1.538112754e-06 2.63452239e-22 0 3.284881973e-06 2.897727954e-09 0 0 0 7.31590011e-05 5.054999229e-13 0 0 0 0 0.0001475684819 2.344545186e-13 0.000199644763 0 2.77413425e-10 1.344532324e-15 0 0 0.05620569474 0 0 0 0.0434572411 0 0 0 0 2.30087933e-15 0 0 0 1.288130397e-28 0.0004524848033 0 10413.06525 137.4843615 0 3.491788219e-18 249186.776 0 757361.8575 0 0 0 0 5.636467626e-28 0 0 0 0 0 0 3.392803671e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03847517968 0 0 4.181636641e-11 0 8.551625128e-12 5.982530665e-26 0 0 0.0001337413288 0 0 0 0 0 415499.2082 0 0 4.511161084e-08 0 0 1.478354984e-07 0 0 1.475318853e-06 0 0 0 0 0 0 0 0 5971.047307 0 0 0 0 0 1.676614968e-10 0 0 0 0 3.664829322e-07 0 0.0001562399038 +0 0 7.28813962e-17 4.774954289e-13 0 0 0 0 0 0 0 0.006638422427 0 0 0 5.83135923e-07 0 0 0 0 0 0 0 6.509782292e-19 0 0 4.628366214e-14 0 0 0 0 0 0 0 1.143439232e-11 0 0 0 575062.4999 0 0 0 0 0 0 0 6.83511989e-24 5.861794098e-09 0 6082.973836 0.0001824186376 0 0 0 49.19617198 0 0 0 0 2.796829877e-12 450914.0845 0.001581946044 2.807549839 1.571525307e-16 0 0 3047.3608 28990.02003 9.11767786e-14 0 0 0 0 0 0 0.01019049302 2.611343387e-09 6.618744304e-14 9.476669796e-07 0 0 4.807001223e-38 0 0 0 0 4.485013623e-07 4.433369875 0 0 0.03033557191 6.806758252e-07 0 0.000218023462 1.382233494e-10 0 4.926800584e-05 0 1.116942074e-20 0.01219998965 0 0 0 0 0 53417.7098 0 0 0 4.062845037e-12 1.926345009e-16 0 0 0 1.381510778e-11 0 262173.679 0 0 0 0 5.911691767e-24 0 1677225.859 8.220651931e-35 1021.352585 0 0 33995.68543 0 0 0 1.9977167e-20 1.52159249e-06 0 0 5.053910346e-15 3.266472039e-09 0 1.819151295e-28 0 5.495713365e-11 2.904589527e-10 9.022091182e-11 4.732243718e-07 2.631225469e-12 0 0 821.2188925 1.476287595e-29 0 1.811690796e-20 9.026961101e-20 0 0 8.343448596e-10 0 0 2152.465518 78794.28309 0 0.004361673616 1.119913269e-08 0 1.155106763e-23 0 498705.2527 0 0 1.348892112e-14 0 0 0 1.579270305e-15 4.547397094e-10 0 0 2.171142269e-10 0 0 0 46770.82707 0 0 0 0 8.79870728e-06 0 0 0.1781507172 0 0.3636073783 8.188011063 0 0 0 7.230457096e-08 0 0 0 0 0 0.0008307339286 0 291413.3524 0 0 0 0 0.00311511942 1.850793199e-26 0 5926.304392 0 0 0 0 0 1086.515098 0 0 5.034329798e-08 1.462665542e-09 0 0 0 0 5.125285007e-11 6.894328962 0 0 5.308775068e-06 0 669866.7919 0 0 1.601377024e-12 535881.1273 0 4.625793625e-10 0 0 0 2.587030381e-07 0 4.746711553e-09 2.6112812e-13 0 0 0 0 0 0 0 3.219865274e-13 9631.711522 0 0 3.984601191e-13 0 2.725916332e-08 0 0 207400.7701 0 28.76147287 1.702145878e-15 0 0.00753599075 0 2.953364048e-12 0 7.497247034e-08 1.080093642e-05 3.503896139e-14 0 0 0 0 3323144.638 0.1498651265 0 0 0 0 0 0 0 0 26.45289826 0 0 447.0654151 0 0 0 0 0 0 0 +0 0 0.1059702151 0 0 0 0.0003803864825 5.070016583e-05 0 0 2318954.237 0 0 0 0 0 0 0 0 4.450937462e-18 0 0 0 0 0 0 0 0 0 0 68543.67538 0 0 0 0 0 1948.06875 0 0 0 0 0.00175854746 1.758590337e-16 2.168724705e-16 0 0 0 0 0 0.0004032906407 0 0 0 0 0 7.532316879e-06 202715.8983 0 0 0 5.76901488e-11 0 0 0 0 0 0 0 971.0655506 1.56313674 0 0 51704.06756 0 0 5.879638599e-15 0 0 0 2.475428283 0 0 0 3.268532058e-22 0 106.3974769 0 483046.4798 0.004961370607 5.671116954e-29 9.698977851e-25 4.86807282e-06 4.007453226e-14 0 0 0 0 68.69463045 0 0 0 1.524864844e-07 5.545230424e-13 0 1.186440056e-15 0 6.023539455e-14 1.921161152e-08 0 312.3040755 0 0 0 4.888319518e-14 2.820123024e-08 104136.7497 1946.906896 0.000273912649 4.005298417e-10 0 223.5419926 0 0 0 119102.9034 0 0 0 0.3080187379 0 0 0 36202.32044 0 4.212045667e-12 0 1.401923429 0 466.7512482 12831.63135 0.0006310461428 0.002559816915 1.426881408e-08 0 6.947877499 0 0 0 0 0 0 0 2.772769071e-07 535623.6935 0 1.899626897e-15 42963.18634 187796.957 0 0 0 12298.7087 0 0 0 0 0 0 0.3385208901 0 0 0 0 1.470933428e-26 0 0 1.218424825e-06 0 0 9.193914766e-28 0 0 429.015952 0 2.341123893e-10 2.400845185e-12 0 0 0 0 154254.4022 0 0 26642.24925 0 0.0155109566 0.0001966396069 0 0 0.006264768208 0.1237378431 0 42777.85446 0 2.696819489e-11 0 2.456414352e-17 1450600.085 66.75229272 0 0.005282411136 3.36989336e-32 0 0 0 7.470022068e-10 169100.6588 0 6.363737989e-23 0 0 0 2.100498751e-15 0 0 0 0 0 0 4.328165393e-19 0 0 0 7.429567696e-21 3.939916989e-12 0 5.410764868e-14 0 0 0 0 0 0 0.01701642318 3.44678388e-15 0 0 0 1.190168987e-25 0 0.028487268 0 0 0 0 0 0 0 0 0 3.128345015e-12 0 0 0 0 0.6606378299 0 0 0 0.002642852974 0 0 3.581575806e-12 2.09576922e-23 1.892276061e-05 2.882018924e-21 7.524846268e-08 0 0 0 7.070391203e-08 0 3.660572051e-08 0 9.651300792 0 0 0 0 0 0.2030432745 3.278492913e-24 9.471699225e-09 0 0 0 1.783938444e-09 0 0 1.122821936e-09 +0 0 0 0 0 0 110171.196 0 0 0 4.026576165e-33 0 1.894464293 0 0 0 0 0 3.547965403e-11 0 0 0 1.003603829e-24 0 0 0 0 338574.4542 0 0 0 0 5.316250072e-17 0 3.386089544e-06 1.338695213e-17 0 3.211379354e-29 0 0 0 0 0 0 0 2.301864651e-14 0 0 0 0 0 0 0 0 0 3.637384696e-13 0.0001250738708 0 0 0 0 0 4.111963532e-12 0 0 0 8.636264328e-07 1.64216746e-05 2.387720983e-17 0 3.384947588e-16 10.68997706 0 0 0 0 0 0 0 41.92242176 12.78768983 4.747875625e-10 0 0 1.353361641e-23 0 2.90714646e-13 1.140430739e-11 0 0 5.946117249e-12 0.1464035014 0 0.001017200247 0.6233922679 0 3.442542582e-14 0 2.010049299e-07 5.684152344e-22 4.79199161e-15 0 0 985485.2915 0 256.0272849 0.0001276006797 0 0 0 0 2.032360578e-07 362.9314452 0.2501394434 0 0 0 0 0 13.30084629 3314.379032 0 0 78.82913593 0 0 0.1716524313 0 5.111848266e-40 1.483394395e-06 0 0 0 0 0 0 0 0 1.446180159e-13 0 0 0 0 2.226520598 0 0 0 0 9.63770957e-10 64.40251493 0.6518567952 9.85316696e-15 9.960550088e-07 0 2.858624174e-11 0 0 1.558707832e-10 0 0 0 0 0 0.002039004878 0 0 1152828.801 0 0 0 0 6.567884538e-17 0 0 0 4.422709213 3.320564347e-10 0 0.0007288181692 0 0 2.579295055e-06 0 3.375427421e-23 0 0 63332.36442 3.012023989e-22 0 2.536409441e-07 1.177388534e-06 0 2.468850685e-18 2.835316757e-11 0 38.14525752 0 9.880610167e-11 33.2412191 1.155335498e-14 0 0 0 0 7.051730043e-11 20.22090651 0 0 0 0 1.797387387e-09 138.0146385 0 0 0 1.845321953e-08 2.334090731e-09 262829.8092 0 0 0.0005375358736 28704.96481 1.77600943e-17 3.891122855e-13 0 2.939827096e-13 0 0 0 0.1587944493 3.345883969 0 0 0 0 0.003800722834 0 0 0 0 0 0 0 2.088794199e-14 5914.604983 0 1303793.885 0 0 0 0 0 0 24712.95843 4.96229415e-09 0 0 0 0 0 0 0 2.884007081e-12 0 0 0 0 0 0 0 3.327386301e-05 0 0 0 0 0 0 0 1.964984443e-22 0 0 0.360043616 0 9.551753704e-12 0 1.116147619e-27 0 0 0 0 0 0 0 0 0 9.436969171e-06 0 0 0 0 +0.0304036166 0 0 0 1610.460216 0 0 0 0 0 0 2.836485892e-07 3.410991786e-14 0 0 0 0 0 0 92709.11901 0.002018119453 0 0 0 0 0 0 7.069940479e-11 0 7.024508523e-11 0 9.819848375e-10 0 3.39669716e-18 0 6.175737965e-05 0 0 2.069201433e-14 0 9.79873535e-12 0 0 0 2.229666409e-07 4.107040799e-06 0 0 0 0 0 1.024450894e-14 0 0 0 0 0 0 3.724396014e-07 0 0 0 0 1.18118882e-12 866538.8331 7.435412148e-23 5.978935978e-17 0 0 3.361738167e-09 0 3.072160584e-08 0 0.5922783141 0.004922206789 226392.3521 0 3.846473782e-06 0 0 5.290865022e-08 0 0 0 7.693230474e-10 0 0 2.554781131e-14 4.580131327e-23 1.741026441e-07 0 0 9.334517783 0 0 0 1.084658735e-14 0.001453561245 0.001178052674 0 0 7.413611114e-28 4.085490051e-06 6.33713871e-22 2.280902017e-26 2.8038365e-21 2.603814025 0 0 17.74121371 2.6990674e-08 4.534599942e-06 0 0 0 193112.8066 0 0 0 0 0 0 0 6.425547909e-05 0 2.174907921e-24 7.122441985e-20 0 0.01713498383 0 0 0 0 0 0 0 0 795788.1945 0 0 40248.69355 0 23.74713705 2445663.631 0 914745.0885 1.63900534e-28 2.161210369e-32 23464.52165 1.870065654e-15 1.31594702e-19 0 0 1.902168345e-25 7.274653678e-15 0 4.80741736e-07 0.0008226576446 1199748.527 0 5.871205597e-07 0 3559.078719 0 0 3.528458499e-08 0 0 4.677935477e-33 0 0 1.030185966e-27 0 4.647798146e-09 6.697407166e-10 3839.35341 3160.262459 0 0 0 6527.664714 0 0 0 0 0 0 0 0 0 17416.6654 0 14963.54945 5.88053993e-26 940.5816371 0 0 5720338.875 0 58620.80344 0 0 21059.84627 0.1331870396 1.31123845e-20 0 0 0 4.537018895e-28 0 0.04259393077 0 4548.85793 0.0004179967906 0 2.508140344e-24 0 0 0 0.0005002409761 3.704614425e-12 0 2.639155346e-09 5416.606406 0 0 1.463084057e-13 0 9.173697348e-09 0 0 37918.77471 0 0 0 7.338164752 0 0 0 0 0 2.2016085e-11 0 0 2.642546959e-06 0 0 719975.8567 0 5.034162035e-10 0 0 5.053441448 8.903464449e-13 0 0 0 0 0 0 0 24.39836283 0 0 1.224107935 1.926315978e-19 0 3.091273873e-18 0 3.0607608e-18 0 1.072394753e-05 0.007213559785 0 0 0 265.5048146 1.098868528e-15 0 0 0 0 0 0 0.0001389300826 0 0.0005111506836 0 9.605047427e-13 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 30844.28901 0 0 0 0 0 2.078692161e-20 0 3.655460206e-07 1145686.131 0 11581.50482 0 2.043943918e-06 3.652025798e-14 0 0 2.801571623e-22 0 0 0 0.0003319076358 0 0 0 6.26297339e-36 0 4.244389142e-25 0 3.463663898e-05 1.520248326e-06 2.454010878e-07 2.238491744e-09 0 9.721434289e-16 0 0 1.2250598e-26 0 6502.442262 0 0 105405.4231 31.34111238 4.201222455e-25 0 0 0 1.727353593e-08 5.787837785e-07 0.1424789615 1.604812673e-13 0 7.072425921e-05 3581.976672 0 0 0 9140.052157 0 0 0 7.587310008e-24 1.320067794e-09 0 1.552920891e-09 0 1.327286413e-10 0 4.380563485e-07 526649.5681 0 0 3.364569373e-08 0 0 0 0 5.11123373e-18 0 5.1909687e-05 0 0 0 0 0 15331.09033 0 0 1.173545118e-11 7.131265442e-25 1280.501595 0 0 0 0 0 0 0 0 0 1.162991256e-11 0 407.4201311 0 8.428081688e-26 0.01413981782 0.05878587415 0 0.0008743779019 0 67623.07571 0 0 1.097517977e-13 3.27835593e-10 0 0 0 8.090302368e-06 0 0 2.190811537e-05 0 0 0.0003614126187 0 0 3.269590803e-05 0 0 0 0 0 1.331729775e-10 0 2.385345509e-17 0 191384.3811 410.1918982 4.313087465e-06 0 6.038092382e-29 0 5.722618911e-18 3.092676846e-08 0 1.267186119e-13 557.0475147 1.17387296e-07 243.0838902 2.882876778 0 0 2.909854912e-09 6.580547259e-15 6.238100379e-11 327096.8179 0 0 0 9.837408216e-20 0 107.0228439 2.310357821e-16 1.928195254e-07 0 7.576438373e-06 8.766641243e-05 5.207550834e-18 0 820.6548573 7.429750051e-14 2.490588267e-26 3.775479991e-08 0 0.05259017489 3.932969941e-12 0 0.0002695483216 1740666.881 764896.1758 0 4.109891798e-07 0 0 8.745101512e-25 0 0.00880020327 4.550519062e-08 0 0.0002983245428 0 4.271730847e-06 8.058679959e-05 0 0 0 0 0 0.0002576635886 0 0 0 2.574104368e-19 0 0 0 0 0 0 2652419.193 0 0 0 0 115953.0915 0 0 0 0 0 7.71539316e-24 0 0 0 0 1.097275812e-16 0 0 0 0 0 0 0 0 187660.2277 0 2.032918086 0 0 0.007869618612 0 42336.26186 0 0 0 0 0 0 0 0 0 4.614758884 0 0 1.843603886e-17 0 0 0 0 6830.582036 5.720147133e-18 0 0 0 0 3.278268819e-08 151.9813101 0 0 0 0 0 0 3.720588264e-14 0 0 0 0 0 0 0 0 0 0 2.487980318e-05 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 5812.786123 0 0 0 1313.147262 6.025895298e-14 0 0 0 2.984145944e-05 0 0 7.574586286e-15 0 5.1281082e-13 4.124685982e-11 2.27732779e-25 0 0 0 0 0 4.695971996e-07 2.33284709e-26 0 7.281953464e-14 5.481154794e-23 0 0 0 1.214622356e-17 0 4.736016183e-12 0 1.58239063e-09 0 7.545851015e-13 0.0005347900718 186.1291117 0 0.0001723024589 0 0 0 0.03566969797 0 0 2.774184422e-15 4.803032631e-13 0 0 0 0 0 0 0 0 0 0 502936.3999 0 0 7.762018715e-20 0 0 0 0 0 0 0 0 1.174248007e-28 0 0 0 0 2.196864324e-05 0 0 0 0 7.241108748e-10 0 5.914024526e-14 2179374.208 0 299.0328174 5.986552106e-10 49.5335653 1.87244306e-06 0 1.192083266e-19 0 5.341059636e-08 0 2.313625006e-24 383492.1509 2.589074883e-15 0.0001311320672 0.002429867892 5.785601802e-05 0 0 1.556345707e-19 0 3.20395456e-08 1.128896709e-11 1.499426244e-12 0 8.966476979e-30 0 5.397198558e-17 6.648031855e-15 0 0 8.220202591e-14 0 2.564718495e-14 0 4.148541868 0.1100456604 0 132.71988 3.828038235e-16 0 0 6.43964019e-09 0 0 0 0 0 0 2.621481516e-25 0 5.331548202e-18 33816.70208 7.597249213e-11 2.451962631e-09 0.0003945999831 4.721733513e-07 0 0 1.199187634e-05 0 4.066263004e-12 4.921649345 0 0 0 71895.95931 5.437304547e-23 2332496.827 0 598.6913764 0 1.093887584e-16 0 0 0 4147.943985 0 0 0 0 3.225118923e-13 0 5.919348037e-29 0 0 2.253501726e-25 0 0 0 0.08007632511 0 0 2100.632075 0 7.011795203e-08 2.018301321e-08 3530.353287 0 2.204830471e-26 0 0 0 0 0.3605577461 0 0 0 0 0 0 6.932632846e-08 0 1124.75678 0 0 0 0 3.884044125e-06 1.898493591e-09 0 0 0 5.597904749e-14 0 0 0 0 0 0 0 0 0 154071.2431 1.26053834e-10 0 0 0 2.419637006e-14 0 0 0 3.119313023e-07 0 0 0 0 0 0 0 0 3.615131516 0.0007895269015 0 0 0 0 55.69742665 0.008228644479 0 0 3.645805275e-13 0 0 0 0 0 0 1.32449187e-05 0 0 8.368248001e-19 0 0 0 0 0 0 0 0 0 0 5.899014652e-16 0 3.518346717e-22 0 8.209115688e-15 1.042391886e-28 0 0 0 0 0 0.0001509353348 0 0 5.926294712e-21 0 0 0 1.322611906e-09 0 0 0 2.097509568e-10 0 +0 608886.7407 0 0 0 0 1.151444648e-12 0 0 0 0 1.290305884e-12 0 0 3.851643837e-09 0 0 4.148768391e-10 0.007140239331 0 2.405682359e-07 3.437406439e-12 0 0 0 0 0 1056.684575 0 689.0205215 0 0 3.096842061e-05 6.936515003e-09 0 0 0 0 0 0 0 5.793957508e-06 0 830.3387826 0 0 0 0 0 0 0 0 2.495706371 1.699032982e-14 0 6.321131145e-09 0 42080.5889 0 0 0 0 2.425054901e-09 0 0 0 0 0 0 9.080004028e-18 5.837494295e-12 2.00936308e-14 0 6.583388188e-21 0 0 0 0 1944964.632 0 5.676960742e-05 0 0 1.187476194e-18 0 0 171955.7227 132506.6644 6.17524675e-09 0.2135262276 0 0.0009854057111 0 1.338510887e-05 0 0 171435.3979 0 6.107146928e-16 0 0 23386.86921 0 1.29759142e-12 0 4.348563186 4.038361909e-26 9.33179529e-07 6276.836124 4.007341931e-11 0 4.956404066e-10 0 0 0 3.570761309e-09 0 0 0 0 6.079904492e-05 1.379635664e-07 0 0 0 2343.52958 2.367264025e-15 2.91778893e-07 8.693539705e-06 0 6.833040858e-11 0 3.456332681e-18 6.587344394e-09 0 0.002565354341 3.964594638e-05 0 0.01653377396 2.001136693e-13 0 4.12732833e-07 0 3155.218983 8.917796219e-06 4210.09545 0 0 0 0 0 0 122706.5831 1.979637103e-13 0 42.60190519 0 0 0 3.170948263e-29 0 2.124703058e-17 0 0 2.836210093e-14 1.132884371 0 0.03668150711 1.046756709e-10 0.4009362454 4.642099106e-06 0 6.448952786e-08 11995.73296 0 0 0 20707.96929 0 6.711706588e-22 0 0 17.30143507 640213.9111 0 0 4.93670961e-21 583.6911479 4.118308721e-06 0.0001104880095 0 0 1.746288509e-14 0.003157715682 6188.266604 0 0.0007366504597 0 3.544632676e-10 1.357234712e-17 13343.37327 0 0 0 0 2.341746987e-06 3.924442204e-16 1.217327005 1.716558471e-07 0 3788.26672 0 6.056227911e-20 406.8479113 0 0 0 0.0002049415198 0.02248045438 0 0 0.01695727609 0 8.979629867e-12 0 0 0 0 0.8970701191 0 0 0 0 0 0 0 0.009858431911 0 0 0 0 0 8.927264014e-08 11592.57918 51982.53408 4.749423876e-07 0 0 0 0.05564704802 0 0 0 903171.0429 2.007704832e-12 0 0 0 8.206188618e-23 1.831779214e-17 1529.340286 0.003631205372 0 0 0 1.447790325e-12 0 4619.202442 0 3.320781846e-12 1.863758609e-07 0 1.246142167 0 0.6413030201 0 0 0 3.281023475e-17 0 0 0 0 0 0 3.546371167 0 8.019849518e-14 0 0 0 0 0 1.969938403e-13 0 0 0 0 0 0 +0 0 0 0 0 3.457029936e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2140527719 0 0 0 0 0 1.22469388e-12 0 0 0 0 0 5.617981091e-14 0 0 6.931047242e-10 0 0 0 0 0.3913622729 0 0 0 0 0 3.253240735e-09 0 0 0 4.617299145e-15 1.760057258e-09 0 3.096968514e-09 0 0 3.893467461e-15 1.395207494e-17 0 0 3.83316666e-13 0 0 0 0 0 0 7195.536799 2.116764452e-05 0 0 0 56.6342259 0 0 0 1.105378572e-05 0.1474814002 0 3.103671584e-16 0 0 9.810537737e-11 0 0 1.151787361e-09 34.31351319 0.7032679176 0 16021.22059 7.261787979e-05 0 39345.29889 0 0 254.9729041 0 0 8.218284091e-18 1.685317671e-16 0 0 0 480211.0832 8.37877775e-15 3.689875472e-08 0 0 122992.0087 0 0.2461666769 0 3.29638354e-05 0 1.463441565e-13 1.621598711e-20 0 8.29291502e-09 0 0 3.146257813e-20 1.992992463e-08 0.009738814849 2.25721593e-06 191.4272775 50359.43617 0 0 0 0 108.1325492 0 0.01342355722 0 0 0 0 0.0002384176488 3.155084538e-18 1.650492895 0 0 0 0 1.200936532 8.269091332e-08 1.039026556e-10 0 0 338.4236189 3.520912189e-10 0 0 0 0 0 4.010356707e-06 0.06909822536 0 0 3.635924284e-23 1.962910394 528.7012477 20.59697185 0 0 0 86.0088196 554137.8289 0 2.511484578e-08 1.578027859e-14 1.649962818e-24 1.262793951e-08 0.003953314005 0 0 0 2.415921778e-17 0 2.700604441e-05 0 0 1.867126494e-11 0 8.000692916e-08 0 0 0.0207992269 0 27911.56722 1292.395926 0.004660419842 0 0 0 0 0 0 3.515460619e-28 1.84034792e-14 5.32607453e-15 0 0.2542519117 3.743680473e-14 0 0 0 2.508310078e-12 0 0.0006985088642 0 0 1.889608415e-07 0 0 0 308443.1991 0 0.0001452310493 1.06061821e-06 0 152.897018 0 1.386399097e-20 0 6694.011015 0 0 2.09900686e-10 0 0 0 2.607318622e-28 0 0 0 0 0 354.3270437 4.976049663e-11 0 3.128807576e-10 0 0 0 0 0 1.396635553e-13 0 0.001283393617 5.090112508 0 0 0.03607473804 313.8142427 1001.976748 0 0 0.6452457952 0 0 0 0 8273.74098 0 0 2.786606951e-05 1.498561967e-10 0 0 0 7.175354277e-10 0 0 0 0 0 0 0 0 3.427075751e-06 0 0 0 1.915576489e-05 0 4.016182379e-10 5057.045443 0 0 7.55463705e-11 0 2.549138014e-08 0 0 0 0 0 0 +0 0 0 0 0 0 0 3.692105754e-09 4.516900453e-09 0 0 0 286.4706056 0 0 0 0 0 1108.352014 0 1.07615134e-06 0 2.561105964e-08 334.1726179 6.041911585e-05 0 0 0 0 0 0 0 2.315002261e-21 0 0 0 1.088514077e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 158136.4831 0 7.279650757e-08 0 0 6.08975603e-11 7.448127454e-14 0 0 0 1.858690668e-05 0 0 0 0 0 4.851242637e-20 0 0 0 16.75839179 0 0 21830.35105 0 0 45156.00848 2.913803514e-11 6.578957737e-16 0 0 1.863583374e-05 0 1372810.509 0.09103662189 0.03142788366 0 3.977211774e-06 0 0 0.1120807414 5.742121999e-29 0 2.439147735e-09 2.931110896e-24 21918.2525 0 0 0 4.725114929e-13 0.003303824325 0 4.628688404e-14 0 0 2.145432735e-07 9.510988193e-14 0 7.582840289e-11 1.074503149e-14 0 0 0 0.4289162944 0 21771.29434 0 5.799922457e-10 0 0 0.8149353482 1.288130044e-08 37.82341871 0 0 0 0.1197505857 86.91755491 2.979142549e-08 0 1.133832184e-10 0 0 0 0 3.811224633e-16 3.58349188e-06 0 0 5.623198523e-08 0 3.331645898e-05 0 12128065.81 78376.2373 1.741952705e-05 0 896.6398195 0 0.001447905523 5.089902164e-24 0 0 9.169562638e-14 0 8.3438158e-11 8651.029906 2.18379638e-11 3.209234863e-26 0 1.110604237e-05 0 0 2.37699958e-11 79.3532221 1.812854738e-07 0 0 0.01005377805 0 0 9.712756465 4.182324939e-07 0 4.749742572e-16 0 0 663.9497491 60407.85212 0 4.136956006e-16 1.243629097e-27 0 0 8023.934806 0 2724.13161 9.820468118e-13 17964.94931 0 0 0 5.249586624e-05 0 0 4.022464065e-31 1.083386562 0 16167.37041 3.596169243e-11 0 0 3.0569719e-08 0 1.96743114 3.066904392e-07 0 0 0 0 0 0 0 0 0 2.472589112e-22 0 0 0 0 9.678872536e-05 0 1.96626966e-20 0 0 7993.962483 0 0 0 0 0 8.634334724e-13 0 1.865370239e-10 0 760169.1307 0 0 0 2.058298957e-08 0 0 0 281.7593298 0 0 0 0 128000.155 0 2.456575969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.451523126e-14 0 0 7.885954e-17 0 0 0 0 0 0 0 0 4.44272535e-09 0 0 0 3.984853805e-18 9.22285552e-08 0 0 0 4.205818921e-13 0 0 +0 6513.654605 0 72202.55504 0 0 0 0 0 0 0 0 1.065749825e-09 0 1.562893615e-10 0 0 0.01917869312 0 2.470721079e-11 0 0 0 0 0.006376597169 0 0 0 0 0 0 133295.6799 0 1.235697886e-10 8.316069341e-24 5.848313411e-11 0 0 0 0 0 0.00463166231 0 0 0 0 2.424818255e-07 1.712863732e-15 0 0 311.1652313 3.442322341e-08 0.0001903029687 4.720614595e-07 0 0 0 0 0 0 0 0 6.295979431e-07 2.233028474e-05 7.701227431e-17 0 0 0 0 0 0 0 0 0.0004036790353 2.724569208e-08 0 1.337350144e-13 0 9.081246867e-18 0 0.001605760782 8.211966542e-16 0.009313469849 0 0 0 0 0 0 0 0 2.288961299e-15 1.852706852e-12 326.1428457 0 1.234006376 1.503756471e-16 0 0 7.413576616e-08 0 0 75.44086614 0 0.03590275869 0 1663255.314 194.7605023 9.975367613e-12 1.492249196e-14 0 9.337767323e-10 0 0 1096.693062 0.0006023284789 36640.84629 4.519302925e-08 30630.28319 0 1.446946828e-07 2.697257549e-10 0 2.968272606e-14 4.522608909e-07 0 0 0 9.159190503e-18 0.0007379026591 0 0 0 0.06463481834 0 0 0 0 0 0.4875341884 0 0 471.4693763 0 229592.8046 9014.882933 0.0001800140305 2.197899374e-06 2.688551449e-14 7.404795867e-11 0 2693657.356 0 0.01800111821 0 6.967613737e-16 0 0 0 0 2.183218836e-13 1.65965566e-05 0 1553.390372 0 8.654129478e-13 0 5.38234879e-06 3.021371935e-08 0 0.006017495619 0 7.329142565e-20 1.021146811e-07 2.157511007e-08 297674.1831 0 0.001378045228 0 0 9.123979254e-05 0 0 0 0 0 0 4.421082907e-13 0 0 440231.7823 0 0 0 2.965372429e-23 0 1790.733313 4.810290142 0 1.660590535e-06 2.499768079e-10 0 8.778531643e-13 7.554959657e-07 0 29933.81675 0 0 0 0 0 0 8.670380315e-05 0 0 0 2.844988009e-06 2.153336036e-07 0 0 7.406327944 0 1.607708027e-06 0 1256.389637 1.545080974e-34 0 0 235.2466958 4.801779905e-07 727656.2586 0 7979.636054 0 0.09940326015 0 0 0 0 2.592402041e-13 0 0 0 0 4.856887382e-07 0 0 608.449997 5.245559634 2.900591561e-13 0 2.16676377e-07 0 12.82651565 1677.841716 0 0 0 0 0 0 0 0.002928574312 0 0 0 0 0 0 0 0.0004887936856 0 0 0 0 0 0 0 0 0 0 0 39.23670968 965.2187155 0 1.084620256e-18 0 0 8.870274932e-06 3.378977507e-25 0 0 0.14165196 4.488405071e-07 0.006405405701 17468.52039 0 0 0 0 +0 91067.05017 1.880806826e-30 0 0 1.532287248e-05 0 0 0 0 6.241821985e-20 0 0 0 0 0 0 0 0 0 5.121347051e-11 0 0 0 4.754843505e-05 0 0 0 0 0 0 8.137470446e-12 0 0.4334040827 0.0001176842167 0 0 0 0 0 5.525271808e-08 0 0 0 0 0 2.798292821e-11 0.01160636659 0 0 0 0 6.190118017 0 46.23530904 0 1.066532017e-07 0 1.67694375e-06 0 5.591072489e-14 0 5.058432956e-05 0 0 3.150716377e-24 1.232898469e-05 3609.281017 0 813.3541222 8.425988472e-06 0 0 1.299401374e-18 6.083242466e-19 1.987390853e-19 67.2826648 0 0 0 0 2.674655802e-05 1.87172595e-11 0 0 2.471272422e-14 807.5453353 1.94392248e-09 6.433277908e-07 23.68358351 5.689764733e-12 0.04268786847 0 0 1.799462814e-24 1.708806954e-05 1.530260587e-13 0 0 1.911693795e-08 171287.9072 0 0 0 0 0 2716.031161 0.8714793484 0 5.794756664e-14 0 0 0 0.05391178131 42874.34331 0 0 2.277750246e-12 2.0833312e-09 0 1.063415227e-16 289.0000835 15894.42169 0 0.004969574124 0.1838746457 4.783942353e-06 1.39863652e-05 0.0009002456201 2.374948402e-14 360.649387 2.77371627e-12 0 8.064237262e-07 0 1.379097383e-08 1.467184215e-14 5.411756549e-12 0 0 8.839754779e-11 802969.7828 0.01594297005 1.809489376e-10 2.007608631 0 85.61336177 0 0 0 5.446239924e-09 1.492473923e-17 10408.21633 0 4.788997269e-10 0 2.031098598e-14 4.037874966e-19 0 0.007101989085 9.252553012e-20 0 0.2210603068 0 0 1.30530824e-16 0 0.0003761910314 12946.96731 0.001380552022 0.331712729 562657.7334 0 3.238079112e-15 342929.2539 81.06181066 5.711520736e-18 0 1.543700562e-08 0 0 0.003807013204 0 0 4.324234216e-07 0 96447.50874 0 0 0 1.148383446e-22 0 0 5.173590993e-18 0 1.447795132e-15 1.377334063e-12 0 6.917827041e-25 4.720194604e-11 0.1953649206 0 0.4226425944 160842.5004 0 1.178835296e-06 0 0 0.01190890369 0 482009.2297 0 4.406971063e-09 0 0 276.7478764 4.02186112e-05 0 0.1599493234 2.392615544e-08 0.003738045937 0 0 1.687430321e-05 0.0012973921 0 0.0008030390299 11827.63445 0 3.460232765e-35 0 0 0 2.38503786 2.517697468 0 0 0 0 0.0002384369193 0 0 0 1.682541259e-10 0 0 0 0 0 0 0 0 0 0 0.0001180556506 0 0 0 0 9487.167007 0 9.74497178e-17 0.000280531168 0 0 0 0.008220001654 0 5.510291939e-13 0 4.339382507e-05 0 1.086359537e-07 0 0.0005658067125 0 1.670070253e-14 4.318649291e-06 68.59174078 0 0 0 0 0.000918248885 1.240898191e-12 0 0.119442666 0 5.721781652e-05 0 0 307.2092589 0 0 0 0 1.593334052e-10 0 0.006225609119 0 +1.147922892 0 0.0007133803691 2.962928151e-11 0 0 0 0 0 3.781125197e-16 0 0 0 0 0 0 0 0 2.710049214 0 0 0.004837686144 8.287436494e-09 0 2.730072908e-17 3.83441395e-07 1.568623358e-17 0 0 0 0 0 0 0 0 1230960.213 0 0 0 7.787808168e-12 6.512968196e-16 0 0 9.255221026e-24 0 0 108766.8137 0 0 0 0.0001353583066 0 0 0 0 1.915024797e-10 0.0001609184272 0 7.446210031e-06 0 0 0 0 1.571120978e-10 0 0 0 0.004531793371 0 0 0 1.335387453e-05 0 0 0 0 159.1264513 0 0.1072892388 0 4.476039235e-33 174.6672349 9.472224327e-15 0 0 2.279029798e-24 0 0 1.122408794e-26 0 0 7.017382858e-06 0 8.558368479e-10 1.721147619e-07 2.604833585 713670.9416 0 0 0 7.306263502e-09 10.27070125 0 0 3.462310201e-22 3.814059068e-06 2.027195601e-12 0 0.02824796149 60.56742557 29.69988486 151.4747128 0 1.847495434e-27 0 0 4.606283791e-26 0 0.1344038116 0 0 3.593941844e-05 0 0 1482.115952 0.0003206682144 0 9.202693006e-14 0 874.417709 0 0 4.269598859e-05 0 0 0 0 0.000715777232 0 0 0 0 0 0 2.075636273e-24 0 0 0 0.000440641566 0 0 0 0.0001925989131 52981.58039 4.423563852e-20 8.097883184e-07 0 603.6031778 3.463193333 8204.886806 6.52820679e-09 24.65664436 3778664.059 0.0005050929351 0 0 280.7274403 0 0 0 0 0 0 0 7.637394213e-06 0 0 0 61853.88058 7.665149516e-31 0 0 4.219960522e-26 0.0009069258271 1.494893371e-05 0 0 0 0 0 48568.53456 0 9.415658252e-06 0 0 0 0 1.087963681e-15 0 0 5.673694252e-08 0 0.4232933536 0.01059816993 0 2.363501453e-14 0 0 0.03615573428 0 0 0 6.596648708e-05 0 0 2440.7564 0 0 32760.58914 1.923482126e-15 0 1.27485633e-10 2.515963888e-11 0 0 0.1535180988 0 0 0 0 7.211012547e-20 3.171198444e-08 8.497492287e-05 0.0003889357825 0 11.64757148 0 150.2656459 0 0 0 0 5.404891119e-13 0 796.0566031 0 0 0 0 0 1.467322321e-10 0 0.0006460418254 0 0.07484455298 0 0 0 57.44615809 0 0 0 0 0 0 0 0 0 0 0.01876013039 0 0 0 0 0 0 0 1049.130613 0.0474934561 0 8.243086975e-15 0 0 1463.006087 0 91613.04182 4.15452206e-12 1.135167541e-17 0 1.028321681e-20 0 0 0 1.144821913e-08 0 0 0 0 0 0 +7.567411046e-13 0 1.198338424e-13 0 1.904870103e-06 0 11.81072378 0 0 1.188467901e-13 0 0 0 0 0 173202.0397 0 0 0.003152504062 0 0 0 0 0 0 3.276197237e-06 4.913197451e-25 0 0 3.410559603e-22 0 287755.0515 0 0 0 740.9238527 5.900636119e-19 0 0 0 0 0.000301093579 0 0.001376131012 0 6.41415039e-17 0 0 1.404931502e-21 101.181147 0 0 0 0 0 12057.56149 0 0 0 1.419774972e-12 0.003743284963 0 0 0 0 0 0 0 87255.70619 0 3.421793124e-06 0 0 0 0 0 122.0967436 0 0 0 0 6.755420146e-06 2.218422777e-07 302.5764512 0 0 0 0 0 0.6346118408 0 6.173504769e-17 8.652981169e-05 1.550213567e-05 23846.44404 0 34449.16365 270544.5947 0 0 0.0392817404 0 6.541215241e-07 6.440664573 2751.374099 3.197089619e-10 115.8703214 0 6.315957908e-06 0 0 0 4013811.626 0 0 0 3.894582644e-19 0 0 0 0 0.1250961838 0 1.980922705e-05 1.453165952e-14 5.704938631e-15 0 14937.04507 0 0.003405621227 0 0 10.93734045 647026.9966 0 1.125315058e-11 0 0 0 0 0 0.0122749139 1.484005487e-08 1.21239662 5.051657758e-10 0 8.964834425e-16 0 44761.02448 0 2.334921796e-13 0.3649307599 1.265175812e-17 4.13085117e-11 0 0 0 4.25917417e-08 0 0.000304962234 0 4.812012247e-07 21933.67077 1.227806875e-08 4.314989808e-05 0 4.964072132e-13 0 0 0.0004010229284 0 0 2.768510419e-13 438.0584574 0.1327192311 0.012207315 3.363591923e-12 0 0 0 2.587145524e-13 0.09893551498 0 279.1451677 1.710309042e-15 0 7.74493818e-13 9.720790108e-11 0 6.464421783 0 0 9.050418094e-21 0 0 0 0.0143133373 0 0 0 0.04156969394 5.038774589e-14 9.752499572e-11 0 0 0 0 0 0 2480.006157 0 9.68401979e-17 0 0 0 0 0 81.18136556 0 3.857476393e-12 0.26131304 0 5933.379141 0 0 0 0 0 2.805784968e-21 2.4982295e-09 0 0 0 0 0 7.631726833e-25 0 0 0 0 2.799395289e-07 0 4.843489108e-08 0.1295130405 0 6.278729344e-15 0 0 0 0 0 322587.4175 0 0 0 4.68645225e-06 0 142.8301564 381083.9663 6.544512631e-16 3.065453921e-26 0 3.37181737e-05 0 0 14.22239652 608511.6642 0 0 0 0 0 0 0 1.23213391e-05 0 0 0 0 2.058679054e-14 0 2.772867315e-16 0 2383050.509 0 5.065884622e-19 0 0 0 0 0 9.70894749e-14 9.546139086e-16 5.425313952e-28 0 0 0 0 0 2.651920388e-06 +0 0 0 0 0 3.71168029e-06 0 0 0 0 0 0 0 9.870502971e-11 0 2.48645638e-13 0 0.1292605877 0 2.480778082e-14 0 47609.27666 0 0 0 0 0 0 5.141242247e-08 7.923103649e-26 0 0 0 0 0 26522.46904 0 0 3846.09587 4.210873404e-20 0 5.960632447e-07 0.3766265269 0.1223235576 5.226719293e-15 0 0 0 147063.1001 0 0 0 0 0 3.528751575e-11 0 1.598952942 0 0 0 3.055760127e-08 0 0 649756.8595 0 6.085484957 0 0 0 0 0 0.2372146708 0 0 0 6.99386015e-22 0 0 0 0 1317224.156 0 0 0.0001269785893 0.04707733016 0 0.1810463995 0 8052.078628 1875415.481 0 0 0 6.573697345e-08 0 1.531949527e-10 0 0 0 81003.34914 0 1.676997437e-07 0 0 6.174884566e-07 0 6.195851471e-17 3.880609404e-05 0.6649456423 0 0 28049.44965 16068.45893 0 0 0.0002822703749 0.001328810179 0 8.067012008e-14 0 1.169048781e-13 2.811883507e-22 4.266687955e-12 1.467481431e-29 2.569373342e-11 9.991844483e-08 0 0 0 0 0 0.0003820833639 1.54910299e-30 2.528055916e-24 9.910554559e-11 0 1.629528254e-05 4.102070774e-14 0 0.7241272127 0 1.422158564e-17 0 0 0 0 7.363791917 0 0 3.001948183e-13 0 2.233792697e-06 4.938057352e-07 0 2.065029151e-28 0 0 0 0 8004.271715 0 1.512943673e-21 1.365517754e-13 9.002257561e-13 0 0 3.985378971e-27 14262.01782 0.0007207735032 1.782183728e-23 0 6.704477592e-10 27.19415209 9.807537988e-16 0.0003462843464 0 9.878412751e-05 5.486992414e-05 0 1.296606523e-26 3.159247933e-06 0.1980236728 0 5.698791202e-21 1.018471914e-12 27802.0896 0 0 0 0 143.7171359 1.475575342e-37 0.009400866163 3.894726311e-20 0 0.007904859043 0 4.909022419e-15 0 0 1348559.26 0 9.406628615e-33 0 1.568496701e-10 4.419477495e-14 1.636894653e-11 0 0 0 2.219624e-28 0 12714.28689 0 2.749189466e-14 0 0 0 0.1836839996 0 0 0 1017.85331 0 0 0 0 0 9.62184265e-09 0 0 0 4.335359083e-08 0 0 0 0 0 0 0.003683799021 0 0.6478283225 0 8.968805263e-07 1.076076989e-18 0.0005089542503 0 1.215020929e-09 0 0 0 3.672699551e-10 0 0 0 7.317519489e-15 0 0 0 2.538060894e-12 0 0 0 0.001400138461 0 0 0 0 0 5.502809156 3.331711492e-22 0 970634.3273 7.439273281e-18 0 0.2278923527 0 0 2.02959758e-10 0 1.899983784e-06 1042239.339 14810.4776 0 0 0 0 18.59547315 0 0 0 3.202392757e-35 0 2.893887189e-28 0 0 0 0 0 0 +0 2.834252541e-08 0 0 0 0 0 1.343443361e-11 0.0004161986191 0 0 111.7276451 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009141785325 0 2.81941438e-19 1927319.594 0 0.0002702675363 1.237366279e-09 61383.99955 0 0 0 2.382482114e-13 7.301747243e-15 0 5.116400774e-20 1.840141001e-30 1023.253195 0 0 0 0 5.55919505e-10 0 0 0.0005213219055 0.01545729277 0 1284.589558 1.152179577e-09 0 10177.80442 0 0 0 0 0 0 0 0 0.01528738298 0 0 4.314331576e-05 0 0 0 554319.5275 0 0 0 0 2333996.391 3.411554516e-11 1.188771479e-08 4.763209546e-13 0 0 3.507504005e-19 0 979.1393306 0 0 0 4.229322301e-12 0 776780.8286 0 0 0 0 9.166947555e-10 1.064899173e-06 0 129.8295817 426.6271318 0 0 0 192.9297634 0.003478000644 0 2.809630557e-07 6.801414193e-08 0 0 1.158103597e-08 94.05361504 1.584853706e-16 0 0.0008346548957 0 1.225250128e-19 0 228205.4265 0 0 0 0 0 0 0.005207247917 1573.52263 5.765056857e-16 0 5.114882189e-11 1103.185089 0 1.25680906 15.69336038 9.344390675e-26 3.303487678e-08 0 0 1.87570808e-08 0 0 0 174.5210321 0.5332222447 0 0 0 0 1574.518949 8.868000232e-07 0.03788538189 2.537045442e-10 0 8.837248198e-15 0 0 0 36.41866051 3.873115942e-27 2.517066626e-14 0 13160.18193 0 1.689780038 0 0.03924890828 0 1.85012362e-10 3.929071357 0 0 0 3.273422348e-13 1.88144143e-05 0 0.0001232377645 0 3.45808263e-25 0 0 0 0 30.39010098 0 0 0.3973448369 0 3.521953635e-07 0 87172.55941 9.775647352e-22 0 0 0 2834.272523 0 4.210920165e-10 0 1.94557243e-11 0 0 0 3.254257934e-11 1.582689168e-13 0.0004040968443 1218.635527 0 0 5.802788698e-10 0 3.824127162e-14 0 0 0 0 0 0 0 0 0 1.236934897e-21 8.643975762e-26 0 0.5989628252 0 0 0 0 0 0 0 0 0.6432530113 0 0 0 0 0 0 0 0.001657452921 0 0 0 0 0.0002646344842 0 0 0 5.899285302e-12 0 0 0 4.344885481e-12 6.516521214e-15 0 0.02085121789 0 0 144.0327202 0 0 0 0 0.09350339075 0 0 0 0 0 0 0 0 0 0 0 0 0 393581.1252 5.605678874e-17 2.827969472e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.422445022e-07 +0 0 0 0 8.359627916e-08 0 0 0 0 0 0 0 3.015896251e-16 0 0 0 1.222904465e-13 0 155802.7722 0 0 5.525236333e-16 0 7602.914916 0 0 1.137393821e-09 0 1.195793612e-12 0 4.538151001e-08 0 0 0 0 0 0 2.040258598e-08 0 0.001200115121 4.08697576e-08 6069.160593 2.571061864 0 1.533445853 90.61397807 0.002967906477 0 0 0 0 0 377802.067 0 0 6.674472969e-07 0 1.43222853e-12 0.00111467902 0.00252790638 0 3.841082871 0 0 8.787302443e-13 0 1.539053416e-12 0 0 0 0 4.799462013e-11 0 0 0 0 5.419773343e-07 0 0 4.003480966e-05 0 0 1301.243537 0 0 0 7.205066299e-09 1.380517099e-11 0 0 0 0 0 0 0.7771555446 0 9.802304962e-16 0 0 0 0 0 6.869459661e-09 12193189.29 0 6.383851618 52.46247914 0 0 3.718599127e-05 3020859.442 0 9.804233668e-07 0 1.245738482e-18 796.3190951 1.901381033e-16 0 2.854846419e-10 0 0 0 0 1560.204744 0 1.335376821e-06 871920.1272 2.219917009 0 0 0 3.812719715e-24 6.702239518e-05 0 1.061165175e-09 1.691120866e-19 0 181064.3392 0 7.033773914 1.357110509e-09 0 40052.18348 1.84635831e-10 1.610960427e-08 0 2.207582198e-06 0.04213275782 0 0 1.09507328e-10 3.244450691e-06 0 0 0 0 0 0 0 5.175606747e-11 6.132959396e-17 373.3353302 0 0 2.375369431e-09 2.848425078e-16 0 0 2535430.961 3768998.553 0 0 1.948398178e-14 0 0 0 0 0 0 0.05743027287 3249.690054 22636.31525 0 0 0 0 0.000868759853 2.368597503e-10 2.204708817e-05 0 0 0 0 0 0 0 7677.994644 0 0 0 1.160076532e-06 2.583971646e-14 9.441399172 0 0.1102964211 0 0 0 1434287.156 1.569733864e-05 2.56285815e-12 0 0 2.449857213e-12 1.315459154e-24 0.001010194253 1.6356171e-11 0 18663.71947 674759.0303 0 0 9.545952511e-07 4.121031974e-05 7.771040304e-15 0 0 0.0002302702911 23023.04205 0 0 0 0 0 1.728643426e-10 4.683283826e-15 0 1.154389193 0 0 2.302965893e-28 0 0 0.01581064848 6.936464898e-14 1.036353969e-25 0 0 0 5466.554558 0 0 1.499331722e-12 0.000111771689 46617.2558 0 1.38338893e-21 0 4425.287381 0 0 3.813747526e-11 0 4.259391605e-15 414.10386 5491.681881 0 0 0 0 876102.999 0 0 0 0 0.01857128899 0 479098.8368 0 0 1.026158228e-12 0 0 0 0 0 0 223729.0415 0 0 5.392387951 0 0 0 152.8665146 0 0 0 0 0 +0 1.86623374e-28 0 0 0 0 0 1.132001865e-08 0 0.2815910437 169806.3353 0 0 0 0.01123664063 0 0 0 1.571539636e-22 0 0 0 1318.454732 0 0 1.037835077e-05 0 0 0 0 0 0 0 0 0 0 0 1.807923243e-25 0 0 29411.17293 0 2.335009941e-06 0 0 0 0 15532.48821 1.547531551e-06 0 4.094896418e-13 1.121450649e-09 0 861111.4037 0 0 0 1.425101989e-07 3.083313484 0 0 0 0 1.073693278e-15 0 19.19749741 2.717656778e-10 0.06136660257 0 0 0 0 51.4006212 0 1.368889816e-09 0 8.578897249e-13 0 1.234292346e-06 6.81234691e-07 0 0 10479.87341 0 1.920891872e-13 0 0 9.348652356e-15 2.50973378 0 1.780960484e-14 0.0003240683804 0.05961969548 7.755481226e-05 0 0 817790.8527 0 974063.86 0 0 0 0 5.255909727e-07 0 0 0 0 0.0001778479735 0 0.0001111895288 4.392990669e-05 2.819952702e-15 86.47986676 0 0 0 0.662670849 0 0 0 0 0 0 0 8.648964034e-09 5.871819908e-21 0 93.11888961 0 0 0 0 0 0 0 119224.8666 0 53280.50259 6.258792796e-07 9.602357654e-09 0 9617.09476 0 0 1.696364935e-06 0 34.99033949 0 1.457649232e-05 0 0 6.540869137e-10 0 4.72394142e-11 0 1447131.185 0 0 5.535308939e-12 0 1.378325589e-16 1.870317895e-08 0 0.009597120145 0 2811.994173 0 27.00419499 0 0 38000.73473 0 0 5.502439678e-13 0 5.31108228e-13 11.64947741 0.3793781173 0 5.408756269e-13 2.377630814e-18 0 0 0 0 7.855089412e-15 5.706914839e-13 0 509151.4591 0 0 0 0 57954.25058 0 413.3225236 1.548745649e-08 0 84.17954749 1.079373715e-11 0.001481429237 0 69565.91118 0 0 3.60010789e-18 0.0004855374387 4.382313592e-09 1.316159078e-10 0 0 1154.768039 439463.5852 717.0401377 0 0 0 10544.3092 4.985683374e-10 0 1.912581721e-06 0 2.536294872e-15 0 0 0 4.23687419e-05 0 0 0 0 0 0 0 0 0 0 0.001024376558 3.026311485e-22 0 0 353.3184905 0 0 0 0 0 1.066679661e-13 0 0 6.037511805e-08 0 6.040572158e-14 179263.1939 0 0 0 17039.3083 6.674244437e-23 0.0004139129245 0 0 0.02352143598 0 0 0 0 0 0 0 0 0 0 0 0 2.280565642e-12 0 1.386923308e-05 0 0 0 0 0 0 0 0 3.859461265 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3.449656537e-05 0 0 0 3.434447326e-07 0 0 0 0 4.733793304e-14 0 0 0 0 0 0 114018.3473 1155921.979 0 0 0 0 0 0 3.779386215 2.478925621e-11 0.0002025304858 0 0 0 0.04567775914 0 1.266699936e-23 0 557.3069266 1.327374356e-06 0.0255633513 0 0 0 4.430178078e-05 0 0 0 0 0 0 0 0 7.41276023e-10 0 0 0 0 9.846394848e-05 0 1.346291473e-14 2.00296371e-07 0.008626674463 2.631108264e-15 34.9280451 0 0 0 9.652629845e-17 0 0 4.323554097e-11 7785.851925 1.016112639 121.9805426 1658517.083 0 0 0 0 0 5.683608933e-13 3.47709233e-10 0 3.56627315e-18 0.7507218295 0 0 0 1.028564327e-12 0 1.314704397e-23 0 14.44840072 0 157.3053198 0.002768101993 9.273611741e-08 0 0 4.463154366e-14 0 1.100579923e-11 0 347633.181 1.012459232e-28 1.297314052e-17 2.237153014e-10 0 6.488217562e-08 46.95070734 0 0 0 3.561438575e-12 0 0 0.001417249027 4263.104868 0 0 1.375851827e-05 0 0 1.534358221e-09 0 1.48835013e-13 0 0 0.001185557717 0.07135632323 5.885783462e-15 0 0 0.003406042863 8.762886768e-11 0.00433778379 6.559393123e-07 2.914456746 0 0 0.07329899087 8.166184724e-23 0 0 0.0014329189 1.302125457e-25 0 0 0 0 2.286458316e-09 2.414542938e-15 0.009587387885 2.301186286e-06 0 0.005680230783 0.030211708 3.76854806e-06 0 128.4751702 39.96725796 2.207346301e-09 666.4895089 0.000338141086 3.620138697e-40 0 126.1946165 0 0 0 0 0 1.269254619e-09 0 0.1675705045 5.489641291e-09 0.004185972962 0 4.693491008e-08 0 0 0.02440092062 0 0 0.1043861891 0.000260518624 0 1.385385288e-08 0 8.336831759 1.779894012e-09 0 0 0 0 5.739409975e-05 1055.863549 0 0.003910061353 0 0 0 0 1.782333377e-19 0 0.0001514813589 8.539624486e-15 1.51484212 0 0 0 751.0875711 9.637566762e-07 8.338401981 0.0001252581371 0 0 0 23832.42432 0 0 0 0 7.26674085e-14 0 1.033745068e-12 0 0 0 3.873586758e-09 4834.62145 0.0002749843271 0 0 0.00186426487 0 3.35742374e-07 0 3.518233895e-27 0 508869.0382 0 0 4.552944994e-10 0 0 3.159009676e-20 0 0 0 486021.2685 0 0 0 0.08873068795 0 0 0 0 0 0 0 0.0001706018143 0 0.003172711083 0 0 1.837273259 6.101641403e-25 0 0 6.535782149e-27 0 0 9.087454438e-12 0.0221719495 0 0 0 0 0 0 0 1.947117738e-11 0 0 0 8.230766208e-20 0 0 0 0 0 0 0 0 66.76627109 0 0 0 +0 0 14.08003019 0.00607044376 0 0 0 0 0 2.632415427e-07 0 0 0 14391.67563 0 461944.5617 0 0 0 0 6.306012347e-16 0 2.524332754e-13 0 0 0 0 0 0 3.401246703e-09 0 0 358612.151 0 0 3.279397e-10 0 0 1268415.449 0.005695857553 314690.1207 0 0.0009248190246 0 0.2058785883 0.0001440079528 0 0 4.86104965e-06 0 0 2.407753553e-13 0 0 0 0 0 0 0 1.946585755e-09 0 0 0 0 0 0.0003693588019 0 3.441054866e-11 0 0 0.005279006504 4.608866828e-18 1.962882347 0 0 0 0 1.724903176 0 5.385649886 0 0 3.649328027e-13 9.353907559 0 15.12019531 0 9.641437675e-11 0 0 0 0 11.57966161 336.4988711 0.001551765507 0 1.867704036e-12 2.207816526e-16 0.0001743515589 2610.383408 0 0 0 0 0 3584.042123 0 15423.86346 0 4.060314544e-12 0 8.238512506e-05 0 5.135604942e-14 6250.156414 0.04931524943 0 0 2.622202416e-07 1.547906206e-09 0 5.488660881e-11 0 2.791517225e-08 4.62576491e-30 30150.53194 0 3.048723433e-12 0 4.02549073e-08 0 1.184581913e-12 0 0 0.1690019072 0 1.589394078e-08 0 2.461189643e-10 4.434743994e-09 3.586581809e-07 0 0 23.3939243 0 0 0 0 8.230942023e-15 2.438222591e-11 0 0 317273.3779 0 2.560246333e-08 0 0 8.928159092e-24 0 0 4.882638116e-10 0.2506720048 21248.96901 7.127288059e-12 0 0 0 0.002012250226 0 1135.053627 0 0 0.0005469970752 1911.355865 0 0 0 5.694084931e-24 7.206219833e-23 0 5.602844996e-14 0 0 4.207202539e-22 0 0 0 0 0 0 8.03858194e-10 1.748141076e-15 7.977456385e-12 0 3.819306508e-16 0.007351845359 2324.009692 6.444586856e-10 0 0 8.129927215e-14 0 0 0 0 8.955544236e-14 0 0 424562.0975 0.002960297449 0 0 0 6.52852739e-14 0 0.06963453915 14566.55005 0 0 0.002777471294 0 3.269235059e-07 0 1.313108596e-10 0 884.4237769 151202.735 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.08097142e-07 0 0 0 3852.697407 0 0 0 2.632887186e-10 0 0 2.398151818e-06 0 3.304684951e-28 0 0 0 0.7023202493 0 0 1.21400827e-17 0 0.03237337948 673284.1054 0 3601.988127 7.872998453e-12 0 0 0 0 0 0 0 0 8.466137436e-05 0 1.174172838e-12 0 0 0 0 0 0 6.674586941e-07 0 0 5.153303811e-15 0 0 0 8.406824599e-25 0 2.824551093e-11 0 0 0 0 0 +2.778317928e-08 549752.1868 22.47684083 1.294965518e-08 1.386987977e-14 0 0 5844.352223 0 0 83723.24587 0 0 0 0 0 0 1.568683943e-11 1.557616153e-07 0 3.697527538e-09 0 39.85540569 0 0 8.574356713e-31 3.360496504e-12 107.0125968 5.623691395e-14 0 0 20999.71669 0 0 0 0 1.689608502e-16 0 0 0 8.016204328e-16 616.0296965 2.796870429e-35 0 8.455603224e-22 0 0 0.06472867444 0 0 0 4.022246201e-13 0 0 0 0 0 0 0 0 2.488506816e-14 0 2.406836499e-15 0 0 0 0 0 0 0 0 0.001223127887 1.132848973e-07 273900.9106 0 0.0200852619 0 0 0 1.14562927e-06 0 2.180165223e-22 0 3.838338995e-11 0 0 0 0.4242544596 7.09820625e-08 2.77597832e-21 0 0 3.5853961e-12 4.985768339e-14 0 0 2.564501043e-07 0 1.277076834e-19 337802.4198 0 0 0 6.009224116e-20 0.2811297324 0 0 0 2.818104607e-05 3.372795066e-17 0 0 12731.22902 3.723361806e-19 11.5673196 7.307342571e-11 0 2224.934032 0.003322821662 399041.1745 625047.0497 0 0 0 0 9.59426815e-23 0 0 5.262410196e-10 0 0 0 4.391940963e-32 0 1.498094371e-11 1.789101329e-18 0 0 116.5915515 1.039184324 2.564637317e-14 0 1.856551011e-12 0 0 2.359884736e-05 0 0 0 0 0 0 0 0.0004214395292 0 0 0 0 0 0 0 0 0 112.1691188 0 9.887523161e-06 0 0 0 1.498518634e-25 0.001409709596 0 0 434039.2969 0 0 990.6131363 80692.5203 1.483448895 0 0.2013636777 2.726666318e-12 3.732081867e-14 1.006700684e-05 4.70214734e-05 0 1.240496199e-18 7.756125572e-14 0 12.02606757 588.77324 6.76221724e-07 131.6236231 0 9527.641088 0 8.354441512e-15 0.0004270122365 1773.567815 6.556055238e-05 0 7.574332712e-05 0 7.408215753e-25 3.685932916e-12 0 0 0 3.531435454e-05 0 0 0 0 94386.07595 0 27.06443838 0 0 1.016727583e-07 0 3.50452577e-08 0 0 0 4.384019566 0.1508215323 0 0 3.463150861e-15 0 0 0.002579096385 1.361497843e-10 0 728.2715899 1.733571092e-12 0 0 84.77939322 0 0.001274472006 7.495451207e-10 0 0 1.155382414e-10 0 0 7.99287734e-09 0 0 0 3.344696853e-10 429279.0083 0 1.178351216e-25 0 0 0 1.599967252e-13 1.9103341e-12 0 8.79973107e-18 0 1.203043327e-25 0 0 0 0 0 0 6.194816601e-05 0 55265.1168 3.400271944e-31 0 0.5634319891 3.221340731e-11 8.208017909e-08 0 0 0 0 392.1269958 0 0.02140046953 0 0 1.233216138e-11 0 0 0 0 22.74407535 0 0.2353513479 0 0 0 0 2.370704909e-08 +0 0 1.567571269e-21 0 0 0 0 0 0 0 0 0 0 1.382919315e-16 0 0 0 1.276903969e-05 0 0 0 0 0 0 0 2401.103169 3.0929238e-14 0 0 0.007804863408 0 0 0 0 0 0 0 0 3.792139635e-08 2.219885421e-25 0 0 0 306488.1082 0 0.0004348546189 0 0 0 0 0 0 5.003954392e-14 6.387253704e-14 0 0 0 0 0 0 0.9469903348 0 0 1.138661943e-15 0 0 0 0 0 0 0 0 0 13.52019327 0 17.62702513 7.484820441e-06 1.296258534e-18 0 0 108.5103226 1092.976803 0 0 37.77833431 0 0 180418.0565 1.994013251 0 1.602774709e-11 0.000147282574 0 0 0 0 4.56231279e-08 0 0.0004528094919 2.46346681e-21 0 1.904963194e-13 0.02068954996 1.225502348e-07 0 1.539269505e-12 0 1.488048083e-14 73574.9895 0 0 5.997849972e-23 0.00144394275 0.09110439499 0.05722388381 944104.5652 0 0 0 1.506694056 0 9.116984062e-08 472305.1735 1273.549205 0.001365913371 0 9.001946183e-11 0 0 0 0.1347470349 0 1.310714597e-10 4.801680774e-09 0 0 2.413337602e-16 7.126197713 0 4.247484691e-05 1.29919422e-05 0 0 0 0 0 2.84355693e-08 0 0 0 0 3.235095992e-17 0 0 0 0 0 0 3.629512917e-17 0 0.0001352198432 13.05275365 0 0 0 0 9945.696731 0.0006897629769 0 0 131582.1179 0 23307.50839 9.023357851e-14 0 3.076722638e-20 0 0 0 0 0 893968.7579 0 0 0 0 1.969216451e-11 0 0 9.134060229e-05 0 0 0 0 0 0 0 0 13644.42521 2.557578507e-14 0 4.167491683e-12 0 0 0 1.071827901 0 0 0 0 0 0 4.909922778e-22 22427.72304 0 9.005705037e-11 4.211238498e-12 0 0 0 596064.1795 0.1002113877 1.372032079e-19 0 0.04231269396 1.108534057e-20 0 1.786255084e-08 0 0 0 0 0 0 0 0 449413.9182 0 0 0 0 0 2.418781826e-18 2.141331221 0 0 0 0 0 0 0 0 0 0 857828.8294 0 0 0 0 0 0 5.852522108e-14 0 0 0 0 0 0 0 0 0 1.0650546e-15 3.115417131e-10 4.500373697e-05 0 0 7189.321726 0 0 0 0 0.00128882881 0 8.771762547e-21 0 0 1.389864821e-18 0 0 0 1.657268029e-10 2.280851457e-05 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 2.069942933e-18 0 0 0 0 9.111222343e-15 7.151722376e-15 0 0.01408082369 0 0 6.913459491e-17 0 3.646278424e-12 1.373823e-05 6.367387423e-12 0 0 3.678129385e-07 5.704938467e-08 0 0 6.043013305e-24 5.703445904e-05 0 0 3.984594392e-13 162.0995203 1.800641953e-10 0 0 0 0 0 470893.4197 1.451196943e-05 0 0 7.956524727e-10 0 0 0 0 0 2.506610082e-14 0 0 2.028308914e-08 7.254961551e-07 0.8057369999 6.678068473e-05 0 0 0 0 0 10.95835148 2.790135635e-15 0 0 6.073930444e-18 0 0 0 0.6180332185 7.624778571e-12 464419.0904 1.480477147e-09 0 1.019857198e-05 28.3984554 0 0 751.0671179 0 2.635340353e-08 0 0 0 0 1.26015373e-19 0 5.775547235e-05 3.6061434e-13 6.106897362e-05 0 0.0006558017288 5.427344095e-10 0 0 0 0 0.03850709689 8.974582717e-06 4.403120783e-07 0 0 0 1.194850366e-06 0 0 3.227469359e-05 1.480958811e-07 0 0 14.9163125 1.896468946e-17 1.592912164e-22 0 0 7.309147748e-28 0 5.989181706 0 5.205113125e-11 0 0 0 1.364526218e-28 0 2.245924279e-21 5.48212599e-12 7.083573114e-12 1.458340013e-10 3.274981252e-14 0 0 0 0 1.145181891e-10 4.37916244e-18 0 2.266721278 0 0 0.1728578652 137.6386771 0 0 0 0 9.699636399e-05 6.503408976e-06 3544232.077 1.595101939e-07 0 0 0 0 0 0 0 188.5773227 0.04461235728 0 0 0 1.094798449e-07 0 4.180279753 0 4.778140818e-13 0 0 6.5725221e-07 5.625971148e-15 0 0 0 0 0 0.03086193902 1.331405081e-14 2.146059238e-07 0 1.225696304e-14 150.0057953 0 1.039143547e-23 2.16594951e-12 32.66957592 0 0 0 3.908570431e-10 0 0 0 1.679109445e-05 0 0 0 0 0 0 4.588871035e-21 583991.062 2.600994671e-22 0 1.805583735e-20 0 0.0001590721263 0 1.117730635e-05 0 0 863.8902072 0 0 0 254205.3028 2.450136719e-07 3.867003717e-05 0 0.0001201488613 14.93334691 34.79178226 0.2379927505 3.612196936e-29 0 36.66987934 6.591815958e-23 0.0007273478884 2.266949979e-06 0 0 0 6.83238904e-15 0 0 0 0 0 1269.147846 0 0 0 0 0 1572715.545 2737.057345 0 0.09315010582 0 0 1.841379455e-11 0 0 0.02353338255 8.679594848e-18 0 0 0 16771.46003 0 0 0 0.001829053493 0 0 0 0 0 0 0 0 5.002523282e-25 0 1.618416488e-18 0 0 0 5.230963439e-08 0 9523.103391 0 2.588091958e-09 0 0 0 0 0 0.005592881677 0 0 7.009048242e-22 0 7.375532897e-29 0 +0 0 0 1.753993081e-11 0 0 0 6.633527015e-18 1.064904931e-21 0 0 0 0 1.592663868e-14 0 0 0 0.0004339194267 2.777331033e-06 0 2.294521233e-09 7.248331492e-20 2.520879447e-16 7.68308396e-08 0.0008176573925 0 511.8676382 0 203.081251 0 1477.856686 0 0 0 0 0 1.916166382e-07 1.644804913e-05 1.254693854e-22 0 0 0 0 0 0 0 0 0 0 4.691533207e-06 2.0351572e-21 0 1.259866786e-11 0 4.88258948e-16 0 3.459366781e-09 784.497759 1201.291459 0 0 0 2.895342057e-14 2.415665264e-07 0.0001194125792 0 0 0 0 0 4.852815941e-10 0 0 0 0 0 1.288658999e-11 0 9.241661076e-12 0 3.930319557e-06 6.618942096e-08 0 0.001915543776 0 0 0 2.600356717e-14 0 1.707677828e-09 17.02867199 5.396154214e-09 0 0 1.164366532 1.165776041e-08 7.742905775e-09 1834129.665 0.0001653175683 1777.477897 0 166778.2705 1.332129947e-13 28722.25822 1.726036593e-21 0 1.121552376e-06 0.0004640800309 0 1.348043145e-10 1.118870974 0.159369481 0 2.310802711e-14 2.959581341e-09 0 1.643539612e-12 0 0.4210610099 0 0.008429527245 5.270564136e-07 0 1.433816057e-17 0 0.007878814652 0.0002202924004 0 0 0 0 0 0.0009308135529 0 0.2409501342 1.408961716e-06 1.808292555e-09 0 249427.8565 0 2.545273113e-14 0 137249.7968 0 0.009016028652 1.705356964e-09 0 33.93470282 1.451926841e-12 5.498960868e-19 0 5.026935829e-10 2.077978062e-05 0.05529327737 0 0 0 0 0 5.78474067e-05 0.05678670098 0 7.435455529e-18 0 2649.38577 110103.4279 1.400849983e-13 6.700953238e-06 0 0 0 0 0.2212249159 1.097170695 0 8.140650876e-05 0 0 0 0 0 2.337316066e-28 1.308170647e-10 0 1583.259395 8.035743059e-07 30423.81857 0 0 1.509936936e-11 0 4.226054942e-09 0 0 0 0 0 0 1.365760039e-07 16.92714561 3.668552502e-05 0 8.141901775e-22 0 0 6.280115834e-10 83.63574209 0 0 5.965180453e-29 0 9.179212598e-15 79.01673038 0 0 0.1692537307 7.612804688e-10 0 1.731724905e-20 0 0 306556.8498 0 528940.2976 0 0 16.26367796 2.143202789e-15 5.068343346e-21 1.366419496e-06 0 0 1.626372227e-25 6.718962678e-13 2.585130197e-05 4.39045289e-07 0 0 0 2.889669119e-08 235.9278686 0 1.629363708e-19 0 2.241821098e-12 0 0 0 1.098680065e-12 0 0 0 0 0 0 9.583231373e-05 0 0 0 0 0 283027.5135 0 0 7.674317607e-06 0 0 0 353614.3188 1.778728782e-21 0 1.269931248e-19 0 0 1.327251967e-16 0 8.187191833e-12 6.305759314e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 28716.31043 8.846478076e-11 1.346156084e-06 0 7.128815257e-11 0 0 0 0 +0 0 1209.225655 0 0 0 0.005391545053 0 9.507986525e-09 0 355194.1721 0 0 7878.103319 8.352682167e-06 0 0.0003922937161 1.234035217e-10 0 0 0 0 0 5.267562857e-07 0 0 0 4.432720086e-07 0 0 0 0 1.771529949e-07 5522.532914 0 1.707607871e-17 1.023391408e-17 409623.8044 0 5.626913756e-14 0 0 3.965677497e-12 6.473483902e-14 0 8062.083717 0 0 0 118818.7887 0 1.072898532e-14 0.116513367 0 0 0 0 0 1.71157259e-06 0.04670310081 0 0 0 0 9.396190917e-34 0 0 3.851390525e-24 0.3257016636 0 0 0.1163509644 0 0 2.498066343e-23 1.86742593e-13 7.854209474e-08 0 745.2978255 0 0.0002797161424 0 0 0 0 4.593687446e-13 0 0 0 126857.3517 7686.007508 0 2.210753135e-14 0 0 4.057965402e-21 0 0 0 0 0 0 2.686134449e-21 1927378.089 0 0.7960003039 0 0 5.557609791e-09 0 4.797977273e-09 0 0 0 0 3.445757511e-08 0 0 7.758237863e-17 6.898559828e-10 7.571998789e-09 0 2.352785944e-20 0 0 1.477000386e-05 1.480540967e-07 0 0 668714.8578 0 0 4.715759934e-06 62.85358548 0 1.580411028e-08 5.061243929e-08 0 0 0 0.0004944642439 0 8.062841628e-10 0 4.169210552e-16 9.680827943e-11 60457.52571 0 0 28265.26947 0 5.686999304 0.0006863501386 0 0.0017752909 3784.514301 2.30103316e-09 0 0 3.545924188e-08 2.614184748e-07 2.306676008e-21 0 3367.740746 0 0 0 1.557557364e-08 0 1.916649524 0 0 0 0 0 0 0 1.962335147e-13 0.3191409813 0 5.997088015e-26 0 1.546260648e-06 0 0 0 0 0.006846467579 0 0 0 1.002760703e-08 0 3.14848344e-06 1.416474235 0 0.05612292106 7.637644897e-05 0 0 0.03996518076 8.72629581e-20 2.548721007e-09 1774.823224 1.728132593e-10 0 0.0001182454382 0 0.0006652320728 3.589861463e-13 0.00680558695 0 1.994542696e-21 0 3.341375835 7734.787857 0 0 185707.366 0 22906.9086 0 0 0 0 0 0 0 0 0 0 0 1161.680427 0 0 191785.8129 67312.57603 0 1.370691538e-11 0.1401277189 0 829662.0994 0 0.002260215009 0 0 0 7.366386542e-11 0 0 0 0 0 2.166725208e-12 0.02493734015 0 1.730438028e-12 14334.29801 2559.311532 0 0 0 0 0 0 0 0 0 8.678603276e-12 0 0 3.190221853 0 0 4.263912466e-27 0 0 0 0.0008122803631 0 4.960105192e-16 0 0 8.226050699e-13 0 0 0 5.67169914e-11 0 0 0 0 0 0 0 0 4.696996012e-11 0 0 0 +0 0 0 1.00262388 0 0 0 0 0 0 0 168144.0627 0 0 0 0 1.051860244e-05 0 0.00052271231 0 0 0 0 1.809942717e-06 0 0 0 8.937443813e-22 0 0 0 0 4690.171088 0 0 1.045410565e-05 0 0 0 0 0 0 0 0.06458684483 0 0 0 0 0 0 0 0 8.997938533e-17 3867.32441 0 0 0 0 0 0 0 0 1.366509771e-06 0 0 0.01409506104 0 0 1.846637764e-16 9.774871486e-18 0 0 0 1.816572067e-17 3.063874948e-07 39455.53168 0 1.674545684e-15 0 6.309965382e-05 0.2496040692 0 0 1.617429623e-11 1.358130301e-11 0 0 0 1.39128453e-13 0 51287.02949 0 0 0 0 0 0 0.0002232046352 0 28.30081746 2.670883675e-10 0 0.001370378755 0 0 0.004431496887 3.643299166e-05 725121.916 0 9.167808202e-13 1.399529944e-07 0 0 4.360112378e-19 0 73704.92248 0 0 0 1.196174415e-18 9.879655276e-20 9.798352364e-10 0 5.549086744 0 0.6183311008 5938.513961 0 0 0 0 15.54660733 0 1613724.712 9.223373107e-11 0 0 9.643607236e-07 0.002032845961 729.8297493 0 7.801992305e-08 0.001147065343 2.952617807e-05 2.053218348e-26 0 0 0 0 0 38272.15162 2.553471065e-14 0 1.976743489 7.091852114e-13 0 264317.0658 8.641500493e-14 2.788603803e-13 0 0 0.02144794247 0 0 0 0 32900.04185 0 1995722.668 0 1.533814335e-07 16.92342588 2.276873801e-05 0 0 0 6.22614587 0 1.898404199e-24 2.884597504e-13 2.285278053e-11 0 2.373164541 0 0 0 0 9.656772974e-10 0 0.0008573759304 0 0.001724728679 3.998178231e-11 0 0 0 0.0003401921488 0 0 0 0 4.327237025e-28 0 0 0 5.974679428e-30 0 4.290242924 0 4.449769275 0 0 0 0 0 6.986152827e-13 0 0 0.002727394934 0 0 0 1.422073478e-21 0 0 0 2.57465162e-21 0 0 0 0.4787669083 0 1.827513167e-26 0 0 0 0 0 7.24839e-13 0 0 5599.150617 0 0 0 0 0 0.8667379427 0 15639.27043 0 1565216.292 2488.609658 0 0 0 0 0 9.998263249e-28 0 0 0 0.0007850253923 0 0.1405025988 0 0 0 0 0 0 4.190260776e-19 0 0 0 0 0 0 0 0 0 0 4.35797828e-10 0 0 0 0 4.2019579e-09 0.09008849814 3.705026884e-18 5.647204924e-12 561148.7735 0 0 0 295684.4449 41686.46675 0 0 4.905423055e-29 +0 0 0 0 0 0.03321270389 0 0 0 0 0 0 0 248.9836633 0 0 0 0 8.661071024e-14 0 0 0 0 0 0 0 0 1024000.882 0 0 0 0 1.173428762e-05 0 0.1090620915 5.816186574e-12 0 0 0 3.510473419e-12 2.408082528e-11 0 0 1.958678321e-12 4.540794365e-12 4.500424991e-16 1.778562109e-08 26.95803021 110915.7404 0 0 0 6.756477621e-07 5.853784561e-12 5809.327975 0 0 579.3311892 1.50662049e-18 1.212634188e-10 0 0 0 1.174472115e-17 0 0 0 0 0 0 305388.9209 0 0 0 0 1.10788604e-10 0 0 0.000313103602 0 4666.997414 0 0 16931.19946 1.00108927e-17 9.887423985 6210.472063 0 481364.6616 0 1248.338345 0 7781.532092 4.532684079e-14 420.6129222 0 0 0 1.442248725e-14 13.25641485 0 227.2614384 5.062096335e-05 0 0 0 0 0 0 13.34552477 3.132389828e-10 0 0 6450.356492 0 0 1823892.291 0 65665.09757 0 9.060086914e-09 0.918082908 16839.32857 0.002300631667 0 12376.14706 2.812863701e-20 0 7.02419704e-09 0 1.009527985e-19 0 0 0 0.007236985627 0.1195819047 0 1.258782719e-06 0.1407928563 0.5423279392 0 6.160399317e-11 0 1.464157057e-07 0.009386263119 0 24.79853586 4.485582843e-07 1.037434325e-06 0 299.3851696 5.650827328e-06 4259.833477 0 0 0.0069590031 1523.309258 0 4.52746733e-21 326.3394423 0.7191943169 69.785934 0 0 0 0 5.700305058e-21 2.443132328e-12 0 0 0 0 2.684829014e-20 0.0002020677945 1.161503371e-09 7.607744129e-11 0 0 40422.50809 4.598187251e-07 26475.77484 6.986489875e-05 0 186.0407818 0 1.590017965e-06 0 0 8042.165148 4.817329699e-22 0 0 0 2.347279601e-14 0 0 0.0004107618778 0 0 2860.984108 1.307179574e-20 5.206670334e-08 0 0 0 0 0 0.0009979154913 1.116971847e-16 0 0 0 0 0 0 0 0.0006451241048 0 4.98203423e-06 0 0.001368953619 2.185700024e-18 0 0 7.348354071e-15 41243.94907 0 0 0 0 0 1047.188105 0 0 9.760947253e-12 0 0 1.356557548e-18 0 0 8.919691076e-05 0 0 6.115300095e-13 0 0 0.05365093311 0 0 1.769451307e-12 0 7.628574416 1.203021493e-17 3.145748911e-08 70816.11931 0.00101673466 0 0 0 0 0 72565.37028 0 0 0 0 0 0 0 0 0 0 0 96633.47906 0 0 0 0 0.01547675008 0 4.546146597e-14 0 1.018752814e-12 0 0 4317194.255 0 0 0 0 0 0 0 0 0 0 0 0 1.725331224e-16 7.161543349e-15 +0 1.950480549 0 0 0 0 0 14.95027235 0 0 0 0 0 0 0 0 0 0 0.04004013644 0 0 0 0 0 0 612175.5777 231.0968367 0 0 0.04454093891 4.252474742 7.831047135e-08 0 2.060230435e-13 0 0 0 0 6.436748665 0 0.0006969891553 0 0 0 0 0.008153299652 0 0 0 0 8.01702213e-06 0 0 0 288183.5535 0 0 0 0 1.128915502 5.872123166e-10 0.03331219584 9.860496376e-06 0 0 0 0 0 0 4.027415877e-06 23.63511623 0 0 0 0 0 951248.0106 0 0.2693871199 6141.300972 0 0 0 0 9.118657781e-22 4.882151245 0 0 0 0 0 0 1.153507675e-09 0 3.416060994e-26 0 7.132834876e-07 0 0 0.01483605107 0.4051243347 0 2.668331312e-05 0 0.01299719465 0 0 0 1.813719453e-06 0 0 0 0 5.479552046 0 0.002041410505 0 0 9.844131536e-08 0 0 6.176357164e-10 0 0 150.5200008 0 0 0 0 238.5768381 3.812993119e-16 0 0 0 2235.705994 0 0 0 29037.37079 2.958137031e-17 4.208361892e-17 0 0 0 0 0 0 3.198890168e-07 0 0 117.3766417 4676.161465 0 0 1.295273406e-12 0 0 2.403285818e-09 8.020048007e-16 574514.763 0 0 0 1.016851255e-07 0 2.908343643e-13 4.201116903e-07 0 2.316640851e-07 0 0 0 0 7.751662498e-06 0 444552.845 1297.266804 0 2.05377486e-11 0 3.294763236e-16 0.08637951272 32718.25276 54.05958875 0 2562.480402 0 0.0267706155 3.109004153e-13 0.002118429071 0 0 0 0 0 1.07105896e-06 0 1.316471256e-12 0 0 0 0 2.842275706e-14 3.764706396e-12 0 0.2055692192 0 3.291873748e-09 0 1319.324357 0 2.551370591e-05 7.343793842e-18 0 0.05336568366 0 0 1.749809992e-05 5.526325257e-08 1.530704527e-12 0 0 4.843559871e-08 1.131735716e-17 0 0 2.567474385e-08 0 0 3.882051961e-16 1.571834418e-10 0 0 0 2.779898349e-07 0 4.953584758e-14 0 0 0.000962639863 0 0 0 8.476307853e-23 1.632964059e-10 1.344329845e-17 0 0 0 0 0 0 0 0 0 3.269345725e-07 0 0 0 0 0 24842.32942 0 0 0 0 9.34291532e-05 0 0 0 9.490479783e-19 0 0 0.00608020921 0 3.823891187e-08 0 94.81426351 0 0 2.431089661e-08 0 44.81048594 0 0 0 0 0 0 0 0 0 0 0 7.762987893e-09 0 2.650303654e-17 0 0 2.614402746e-06 +0 0 0 2.82050987e-07 0 0 0 0 0 0 0 7.665381317e-07 0 0.001751176818 0 0 0 0 0 0 0 0 0 0 0 0 2.987444591e-07 0 8.797606963e-07 0 0 2.378344605e-08 0 1.481424653e-13 32319.95612 0 0 0 0 0 88.22980962 0.008226686644 1.851892655e-14 0 0 0.0009007934608 0 0 129.3757821 0 0 0 0 0 0 0 0 2404952.984 6033.050918 1.667718273e-07 7.915859689e-25 7.249812878e-15 0 0 0 0 0 0 0 8956.667888 9.888228989e-08 0.000439340755 4.912835607e-16 0 6.492715088e-09 18670.67471 0 0 1.116576746e-08 3.853531607e-06 0 59.27461604 218292.781 3.527306539e-05 0 0.0005611697966 0 0 0.03033780661 0 7.216338839e-09 7.254911893e-28 0.02915912914 2931606.285 4.35912126e-11 3195.663935 9.637873495e-07 4.275426016e-11 0 0 0 0 0 0.1606241243 0 3.473587036e-11 0.05459846382 0 0 0 0 1.304003003 0 0 0 0 0 0 0 0 0 7.36805042e-07 2.330741604e-06 0 0 0 2.329428584e-14 0 0 0 0 0 0 723.7702033 4191.283761 41935.21739 0 0.0001249018799 0 142775.5068 6.241009563e-12 0.00662814233 0 310276.1119 0 0 0 900395.9174 1.612196714e-16 1.610480743e-11 1.146550318e-07 0.1221846559 0.05380438206 8.333091515e-08 0 0 6.547952869e-06 3.180946866e-14 0 13.57014676 0 5.469762105e-21 240.5716986 0 1.993849767e-12 0 0.1527372237 0 0 1507547.228 0 38556.61973 2.107751502e-15 0 2.958674154e-06 0 7.356884049e-10 0 0.0001978212738 2.034920827e-10 0.08885238441 0 0 10.43010008 33059.24498 0 0 60.55534962 1.539857124e-08 0 4.400123527e-14 0 1.726962861e-15 0 90277.04199 0 0 0 0 0 0 1.791326812e-06 0 0 6.85640734e-10 8.83615841e-05 0 1.9266632e-05 181524.0348 0.002666018174 9.485349745e-07 0 1.242805878e-10 0 0.0009790823897 0 0 0 0 8.944867774e-16 0 0 740644.177 24204.62107 0 1.13923162e-09 0 5.751346087e-10 0 0 0 0 0.0005481619059 2.705772986e-07 0.004978870065 0 1.453260616e-13 0.0828432535 0 2.7129354e-11 1.537790317e-11 0 0 0.3815104632 0 0 0.001582407738 0 1.1006212e-11 0 0 1.021262087 0 0 0 0 0 0 7.329492924e-11 1.356339285e-20 0 0 0 2.87661509e-24 113.7143904 1278629.92 0 0 3.92115525e-29 0 0 1.314610131e-30 0 226.2119899 0 0 0 0 0 0 282.5869698 0 1.066102608e-12 0 0 0 0 3.437098628e-08 0 2.128734493e-19 0 0 0 2.55779767e-14 0 0 0.6721978059 3.924123131e-13 0 5.938729586e-08 +0 0 0 0 0 1.236886657 0.1234551304 0 0 0 0 0 0 0 0 0 0 0 0 2.01953208e-25 0 4.179161953e-14 0 0 0 3407.85583 1949.529749 0 0 0 0 0 3.764127278e-13 3.291998251e-06 0 0.01206828699 2.909792378e-13 0 8350797.818 2.494481572e-14 0 0 1.431042454e-29 0 47.48604841 1.818017699e-18 1.801450691e-12 0 9.164936261e-05 0 0 9.942185738e-09 0 0.0001490776833 0 8.566072494e-05 7.478965701e-09 0 14406.72262 0 6.132610773e-16 45.01182105 0 0 2.111182103e-27 0 0 0 0 3.485142303e-09 6.797161217e-11 1.028704262e-10 0 0 0 0 3.548879717e-05 0 0 389866.5915 13024.93699 4.573888577e-08 1.971898053e-08 56.36452291 0 0 1812954.143 0 0 3.356068298e-08 0 0 0 0 2.189037394e-06 3.991419596e-08 2.800474244e-06 0 0 0.05535741016 0.01745133809 6.762257729e-15 6.047688851e-09 3.379235397e-27 2.32404578e-06 1.130472193e-21 0 0 0 0 3.586773309e-07 12.85647801 2.189244679e-05 0 1.07008679e-09 0 6.984992325e-11 0 0 0 0 0 0 3.360456817e-27 0.2957673077 9.870109832e-27 2.342945382e-20 9206.485469 1.507922979e-24 0 0 2.33387653e-10 7.834362834e-05 0 6.052635636e-22 0 0 0 0 0.007624415106 0 0 0 0.004446028529 0.02740373283 9.420525597e-13 0 0 1.84489674e-15 1481.169122 0 0.6056834502 2.75669858e-07 0 0 147.8356908 1.061448771e-36 0 0 0.0001509316245 2.473571149e-09 0 32.70237507 0 0 0 4.887533567e-09 0 1.705556335e-11 0 3.030674298e-05 5.505793135e-05 0.002243402576 2.291731238e-05 1.337242186e-08 0 0 0 3.558408664e-12 0 2.058152552e-16 22.90735926 540659.4129 0 2.198485466e-07 0 0.0009329819902 3.464659778e-05 1.201459326e-13 0 0 0 0 0 0 1.129257919e-08 0 0 0 2.011487444 0 0 13.30346403 0 251263.1173 3140.551393 0 0 0 0 0 0 0 0 0 1374.494334 30723.83159 0 300675.8874 0 0 0.0001777837536 0 2.838208906e-05 533711.2991 4.365350412e-08 0 0 0 0 1.623013125e-13 2276.481183 108.9902909 0 0 0 0.004071184974 0 180.9989814 0 0 0 0 1.01843858 1.680171846e-08 0 482325.1269 28.56573619 0 0 0 0 21.21415938 0 158.2444277 2858.39653 0 0 0 0 0 2.47789229e-24 0 0 0 0 1.335813685e-23 0 0.007110588939 0 0 0 0 0 0 0 0 0 0 1.44132269e-12 0 7.976585967e-14 0 3.205192233e-09 0 2.194856586e-05 0 0 0 5098.066336 0 0.0002486174634 0 387250.3097 2.603216224e-12 0 1.095148898e-11 0 0 0 +8.712290667e-15 0 0 3580.225905 4.517739981 0.0003792562533 7.607467908e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.829359986e-19 0 0 0 0 0 3.808608913e-07 1.006958659e-06 0.5032598117 0 0 1.789152282e-15 0 0 0 0 0 0 0 0.002896240352 0 0 0 0 0 0 0 4.86574239e-11 0 0 0 0 0 0 0 0 1.234146737e-15 0 0 0 0 0 0 1.092133623e-14 0 0 5.454432962e-40 0 0 2902.006221 6.423726178e-06 0 134.2948232 1703187.243 0 6.332996623e-12 0 0 0 0.0001685412862 0 389.2118114 6.917172845e-05 0 0 0 457.244335 0 0 1183578.058 0 9.048343243e-09 0.0005538968611 1.545549755e-11 0.0003641944573 8.508024029e-05 0 0.01565095032 0 7.377901165e-23 1140301.92 0 0 0 0 0.1089264162 0 1.203829708e-07 0 0.0005494665632 0 0 0 7.850699029 0 0 0 0 0 6.185237672e-08 0 4.689821038e-07 227566.1613 0 1.056691952 0 0 0.02878221812 0 1.025788998e-11 5.737162486e-06 0 0 1.072103524e-06 0 2.60681231e-18 7.281902023e-20 0.5433999329 0 0 3407.175502 0 0 0 0 3.637216945e-17 707.3881239 0 0 1.119078832e-16 0.000638370023 280.8388673 0 2.623551801e-31 0 2328.655558 0 0 115.5468128 2.127778241 20520.08825 1324469.644 151756.0853 0 0 1.664658429e-09 0 9.269267218e-11 0 0 0 0 0.001531350318 0 1.727889183e-15 0.4549855141 0 0 3.963194275e-07 1.203795168e-06 0 0.6737349468 237.5888788 0 1.164112028e-08 0 0 0.4570628933 2.549725659e-05 1075652.506 0 5032.618793 0 2.794950302e-06 31.57264259 0 0 0 0 7311.70782 0 142031.0117 0 1.228745597e-10 0 0 7905.581302 1.20538073e-09 0 0 4.219091789e-09 1356.021772 0 59.27461366 2.570780653e-07 0 131.7515656 0 0 1142.988487 0 0 4.153930298e-21 0 0 0 0 0.0003819516905 0 0 5121.146548 0.09594596738 0 0 0 0 0 0 0 0 0 0 0 0 0 28330.03834 0 0 0 0 0 1.441612958e-06 0 0 4.665477035e-13 0.03798082167 0 0 0 0 0 0 0 6.006063596e-09 0.1599661845 0 0 0 0 4.827461633e-13 8.284904607e-05 0 0 0 0 0 0 0 0 0 0 0 4.321864285e-18 0.3037396376 0 0 0 0 1.146786266e-10 1.007423119e-09 4.832903753e-05 0 0 0 0 0 0 0 +0 3973.44295 0 0 0 4081.999579 0 0 4.966603559e-06 0 3.03750454e-10 0 0 0 14.94019591 0 0 0 0 0 0 0 0 0 1.422170981e-11 0 83247.38909 13253.79719 1.456607906e-05 0 0 0 0 0 0.001066991721 0 1566.708813 0 430.7803611 0 0 0 5.547666664 0 0 0.9608539322 0 0.005981149386 0.009223678833 0 0 25.47342265 3.883123867e-10 0 0 75200.08641 1.945707006e-09 0 0 0 0 1.658278398e-29 0 2.182515508e-14 0 0 0 0 0 0.03402713805 0 0 0.06567458332 0 4.323953405e-27 0 0 0 0 0 4.162712148e-07 0 15.46832434 6.309503311e-12 0 760067.1412 792072.4842 6.994062427e-09 0.02062999727 6.978758765e-05 5.664542485e-11 3.805083823e-05 3.053141375e-09 155162.1253 0 0 309.1611169 0 0 0 0.005699624565 0.1605667463 0.003649732793 0 0 0 0 9.682351422e-07 0 0.6222705821 0 0 3.363995688e-12 9.568574309e-11 0 5106136.004 1.500006112e-07 5.188434295e-14 0.1241772937 0 0 0 0 0 0 0 0 4.720147388 5.150220265e-15 0 49.11589627 0 0.03856759088 0 0 1363.293546 1.37855456e-05 57859.0067 0 0 0 1.728416164e-06 0 3.052876292e-12 0.02240997086 0 151.2392302 6.079464035e-14 44.50601205 0 0 0 0 0.004003773186 3.636618507e-06 0 2.137744313e-09 4.148832132e-12 0 158637.838 0 3.085353877e-09 0 0.001555308215 0 9.651681036e-10 1.132451416e-08 164174.8832 0 0 0 2.287001301e-12 17.27573483 5.092801296e-14 7.184522555e-17 7.031776633e-09 0 3.846145392e-33 0 4.887923764e-09 1.324766182e-12 0 0 0 0 0 92.50762653 8.186777157e-11 0.01763407058 0 0.0002268146 0 0 0 0 5.188108969e-10 6.132121513e-05 2.47391357e-06 0 1.192682594e-13 0 176328.5457 0 5215.226669 0 0 0.0001953293174 0 3.143626447e-13 0 640636.0146 37.83339672 0 8.513802651e-10 0 50506.45505 0.00423926013 0 1.537186982e-05 0 471054.2048 111.7107294 0 0 0 0 1.618264979e-11 1.173505471e-07 1327.230236 0 0.0001958849218 0 0 0 2507.275135 299094.5852 7.47793458e-11 0 0 0.0001481141628 1.311217047e-06 0 0 0 5.277360137e-25 0 0 0 0.01437480349 0 0 0 0 0 0 0 0 0 0 0 0 0 1.753411794e-10 0 0 0 0 0 0 0 0 0 0 0 0 7.907036582e-09 0 0 0 0 771.5690198 0 0 0 0 0 0 0 0.002168132554 0 0 0 0 5.223188125e-06 5.082060151e-28 0 0 43.61552588 0 0 +1674.28877 0 0 0 0 0 0 0 0 0 0 0.0001273726432 0 877.2158686 144039.4676 9.620202072e-06 0 0 0 0 0 0 0 0 98988.0923 0 0 0 0 5.754037493e-12 0 0 0 0 0 0 7.470029498e-11 0 0 0 0 0 0 0 0 0 1.036687474e-07 0 11.07145815 0 110772.9749 3138521.128 0 0 0 7.600075242e-25 0 0 0 1.801654375e-05 0 9.002426587e-24 0 0 2.577584182e-08 0 8.547440015e-12 0 0 0 0 5.254238875e-17 3.124946641e-25 2.128076297e-07 0 0.3555344735 0 0 7.362296652e-24 0 4.047940232e-16 9.402043457 9.390348286e-11 0 2.407892065e-11 1.950707132e-05 0 0 1567.033468 0 0 0 2.379790196e-10 0 1.526229907e-08 0 0 0.220221175 0 0 2.629242966e-09 0 1.238133738e-14 3.102801864e-05 115691.4603 0.001843930048 0.1277747339 0 0 0 0 4.156101361e-12 5.726727819e-12 0 0.3094147015 0 0 3490.924227 0 57402.31549 229.0548463 0 0 2.160139956e-06 6.951735484e-18 0 1.512680554e-07 2.295311926e-16 231731.059 6.043567375e-09 0 2.585118828e-06 1023933.951 444.6031203 0.2066873943 0 376640.0657 0 0 0 9.039531401e-26 0 1.090649854e-08 820954.5598 3.566832097e-17 0 5.810833311e-08 0 3.822243821e-10 6.805231962 0 0 9231.44471 1.612977576e-07 0 2.355031649 0 0 3.063474314e-09 0 0 0 2.403293169e-16 5.877196209e-12 0 0 26.66920361 275.2619926 1.599273588e-13 0 0 6.464720054e-20 0 0 0 0 0 0.3518059988 0 0 2.408531518e-10 695646.9967 6.211208205e-09 0 0 0 0 0 1342.500462 3.033553223e-11 0.01363277588 3.618806481 0 0.0003846841529 0 0 0 1.349521012e-14 6.594780629e-13 0 0 0 988.6128217 0 170.1708171 4.850459427e-18 0 0 2.469573881e-12 0 0 2.569696605e-15 0 0 0.06928864432 9.207612962e-13 0 1569.846633 1.17881482e-09 1.097855e-18 2.919429348e-17 0.5948503648 0 0 1.507161628e-08 0 15192.93419 272714.7166 467333.8997 0 0 0 1.337133705e-09 30904.15059 0 1.108832367e-22 0 1.95964393e-05 0 0 6.947604781e-12 0 118608.8739 0 0 4.342688221e-06 7016538.602 0 0 0 1.307318883e-17 0 0 6.770764594e-06 0 0 0 0 0 18.29189156 0.00656615204 0 0 3.12202526e-08 2.359203529e-10 4.214841033e-07 5152.670952 0 0 0 0 0 0 0 0 0 0 0 0 0 1.179370045e-06 5.102416596e-20 2.007272109 0 0 0 0 0 0 457526.6464 0 0 0 0 0 0 0 0 0 0 +4.380660025e-06 0 0 2.400347014 0 0 0 0 2.752067163e-15 0 0 0 9.18138022e-11 8.697618703e-10 0 0 0 0 0 0 283505.5362 0 0 1.738589366e-31 0 0 0 0 9619.432775 0 0 721011.6562 0 2.081171986e-10 6.232259799e-14 0 0 0 0 0 5.231450096e-05 0 0 0 0 0 0 2.607122823e-18 0 0 0 0 0 0 0 7.663708305e-07 0 0 0 1.649864885e-20 0 0 0 1.713823082e-13 0 0 2654556.416 0 0.0003275957704 0 3.1492999e-10 5.031903907e-17 0 0.6251264355 0 1.711691187e-25 0 6.366616767e-10 0 0.0007796628491 0 5.601866097e-06 1.047857393e-09 0 0 0 0.02506447758 0 0 0 1.152306768e-09 0 0 261.3362852 0 6.572099478 0 0 4.553522251 0.006312847643 0 4.945233557e-25 3248087.133 0 0 0.8078973031 3.36354386e-09 5.758168643e-14 0 0 0 0 0 600230.1303 0 0 27.13603097 0 0 96.05851481 0.001991462933 1.141721921e-15 0 2.267804858e-09 0 0 0 0 0 0.008033307188 0 5.857584769 5275.600806 0 0.03626929888 0 0 0 0 0 0 0 28500.10785 1.237033682e-25 0 3523.270156 0 0 0 0 2.584055198e-07 27.88173011 0 2.696501926e-11 3.591572768e-05 2.465056082e-10 142571.2857 0 0 0 0 0 0 7.722179805e-06 0 132.1328231 411003.9266 7.250426145e-07 0 0 5.713629133e-22 0 1751226.614 19012.37769 0 0 0 0 0 0.001712381291 0 0 0 0 1.303535376e-08 0 0 0 0 0 0 0 4.013866937e-21 85812.64869 0 0 0 0 3.756849007e-15 0 2333.364155 0.000418396731 0 0 356815.2883 0.009567726032 3.487542099e-29 4.95244309 24468.29711 5.081598013e-05 0 2.911180905e-11 0 1001.787621 237150.2521 0 0 265.6959833 0 0 0 1.19867317e-14 0 0 0 30168.62115 0 0 0 5.448184379e-07 0 0 3.484640032e-28 1.6860472e-18 1394.1799 0.0002415670729 398.2037842 0 0 1.279910425 0 0 3.990020925e-18 0 0 0 0 2.304905984e-19 0 0 0 0 0 0 0 0 0 0.004842521674 16442.17186 2.59122962e-12 302700.1696 0 0 0 0 41719.75375 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.764371682e-17 0 0 0 0 0 0 7.684130001e-10 0 3.892360685e-06 4.970739945e-07 5.834274327e-08 0 0 0 +0 0 0 0 0 0.04319983068 5.027411026e-14 0 0 0 0 0 0 0 2488.071885 0 0 0 5.906095078e-16 1.988819003e-17 0 0 0 0 1610.474791 0 8.706555279e-12 51374.33561 0 628775.8399 0 0.0008685580974 0 6.095295493e-06 0 0 0 0 0 0 0 0 0 0 0 3.106958924e-08 0.1627445628 1.549737257e-05 0 0 0 0 0 2.982097587e-19 0 0 1.33629632e-22 993.698257 1.045118417e-11 0.4433758615 0 0.000633491987 0.4890555838 1.213228379e-20 0.0001624820455 0 0 0 0.001077072175 0 4.202980734e-26 1.911915024e-05 0 0 2270.486266 0.2907683975 7.892205894e-06 0 0 0.0001790954495 0 9.19156734e-13 0 0 670.3782935 0 1.048696794e-09 8.247124811e-10 0 0 0 0 0 0 0 0 1.86600446e-23 4.526106873e-11 0 5.987538944e-06 0 1.808265673e-17 1.847592566e-22 221.0285711 0 36.21568623 1.149752821e-27 0 44.24968933 0.001154545355 0 1.436403751e-10 0 0.0257681018 0 0 27858.54214 0.02196258825 2.782317684e-12 0 0 0 1.71684467 5.636095221 0 0.000747663468 8.038478863e-17 0 0 0 0 0 0 1.121404663e-07 0 8.111389522e-08 0.1167005163 0 3.383342725e-20 0 0 35253.45515 234119.2656 0 0 0 0 0 0.02054773736 21832.70536 1.060949204e-14 41059.40617 2.987430369 0 0 0 0 0.0002209366386 1.075687147e-18 6.470029719e-15 3703.329404 6.657125447e-25 0 4.906233875e-26 935248.3263 4.809537038e-06 8.744016066e-14 0 0 0 1.727499147e-13 0 1.431086335e-12 6.313550924e-09 2.677216738e-10 0 4.204629088e-10 0 0 1.431555072e-14 904057.0486 2.39021302e-12 0 0 154.0906378 571.0889995 11744.42811 2.053154984e-06 0.1925279024 0 0 1.172546726e-11 0 0 1.061248687e-07 0 0 1.421933745e-13 8.890503058 314592.1897 0.00643785081 0 0 0.6815646988 34975.80419 0.0014920663 0 356150.3612 0 0 23391.26338 0 0 0 0 2.191237875 0 0 0 0 10.26980657 0 0 2.68595138e-13 0 0 0 9.887289293e-11 3.078529848e-06 3.871693661e-11 716559.9981 2.184327583e-09 0 1.250801302e-12 0 0 0 0 0 0 0 7390.653543 825.3192672 0 2.818962482e-08 4.998095942e-12 0 0 0 0.001308716102 0 0 0 0 0 30.00300694 0 0 0 0 0 6.798945588e-11 0.190212631 2.906627648e-11 0 0 0 1.587592057 0 3.22950543e-05 0 0 0 0 1.568227132e-13 2.973753183e-09 1.608391114e-25 9.648350424e-07 0 9.493555825e-11 0 0 1.048731281e-14 0 0 0 0 0 0 0 0 0 0 1453.850762 0 0 0 0 0 0 +38.39239165 0 0 1.817947984e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 9.278364584e-06 0 0 0 142912.5898 0 0 0 0 0 0 641765.0072 3.788320091e-05 8.559268918e-11 3.11121627e-34 0 0 0 0 729689.8811 0 1583.448728 0 0 0 0 0 83363.24421 0 0 0.418323775 62118.01162 0 0 0 1.731133767e-11 0.0005570467205 1.152333133e-06 0 0 4.125465177e-08 1.966233497e-08 1.164176922e-12 0 1.723820431e-09 0.006523264789 0 1390281.637 0 0 0 0 1.075414153e-25 46593.20162 0 0.4929931992 0 0 1.540320821e-12 0 0 0 2.262566935e-29 0 230712.3707 0 0 1053179.387 0 8.442855354e-20 0 7.299349589e-17 7.642940389e-05 0 3.577126442e-12 0 11.92165443 0 0 1.973815681e-06 0 0 0 0 0 3.141497914e-11 1.494528403e-22 0 0 3.408393366e-24 0 0 0 5663.014062 0 0 5.586823083e-06 180709.1351 3.726225922e-06 9.271517048e-14 0.4168898033 0 8.117036687e-17 0 671547.7491 0 0 0 258.2168173 0 0 0 1.735779428e-18 1.602906106e-07 0 0.0009459338096 0 0 0 0.1078822078 5.690450075e-12 1.823570401e-10 2.400733963 0 0.01550060114 7.000128709 0.0112982621 1.797248298e-18 0 0 7.804215737e-08 0 0 13815.34227 0 0 1.31805428e-16 0 0 5.681577122e-05 7.93572343e-24 9543.679653 0.003432732699 4.40509379e-09 0 0 0 1993573.95 0 0 0 4.464401368e-12 0 5.462300465e-08 5.641269879e-07 1.003863448e-10 0 0 0.1624617492 2.406946771e-11 0 0 3.668520406e-16 0 0 0 0 0 0 1.609584858e-08 0 0 0 0 0 1.144532656e-12 7.768947794e-15 4.674380027e-24 4.127679901e-19 38.30076479 0 0 1.726162602e-08 2536.042613 0.00170904135 0 0 0 0 0 0 0 67065.11936 0 3.896236991e-10 0 0 0 0 0 0 0.0002459219329 0 6.123139399e-21 2.366784023e-23 0 0.008247230878 0 0 0 0 0 0 0 0 62867.59907 0 0 0 0 0 0.012354836 0 0 0 58.99861336 0.02886345264 0 0 0 0 0 0 0 0 0 0 0 0 0 2.970661794 0 0 0 0 0 0 0 0 0.001076840747 0.003125645778 4.500545827e-17 0 0 0 0 0 0 0 331815.2539 0 4.406228759e-06 17833.11945 0 0 0 0 0 0 0 0.00564343399 0 0 6.404569683e-12 0 0 0 361363.3695 0.0001073936547 0 0 0 0 +3.684381684e-13 3766.228341 0 0 0 0 0 6.292819808e-16 0 7.733242416e-07 0 0 1.634202258e-13 0 0 0 0 0 1.905529291e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.665115148e-12 0 0 328472.113 1.169235318e-16 0 1.75026283e-09 3.290548102e-12 0 0 0 0 0 0 0 0 0 294676.0483 0 0 0.003223867362 0 3.881951164e-14 0 0.006903048881 0 2.526366399e-17 0 5.757381505e-10 0 0 0 1.699808282e-11 0 0 0 0 0 6.553729597e-12 746755.9578 2582.644447 995392.5533 0 157428.9102 3.838847502e-10 0 0 0 0 0 0 0 0.009089560165 336.9407186 6.053913716e-13 0 6.744069026e-05 2.466042201e-13 0 0.0002695640471 2.9694173e-14 159120.0875 1.263628553e-05 0 0 0.191917893 0 2.67503607e-13 9.472674532e-16 0 9.925002118e-19 0 2394.815468 1.549886296e-10 0 6.881460799e-29 1.704194315e-06 159658.0699 13362.12014 1.223329617e-11 1.929609966e-16 0 3.644709352e-06 3.804796954e-10 0 0 2.469310162e-15 0 3097.278058 0 7.216863329e-19 0 0 2308.166129 0 0 6.512649507e-07 3.437134936e-05 0 0 0 0 1.314055855e-05 1.320362829e-06 6.408682226e-10 67599.162 0.0006538150364 0 1.095355931e-06 2.210830195e-05 2.057322663e-17 0 5.996777012e-10 3.987147073e-14 0 4.070535584e-07 0 0 4.953554785e-18 4.724068445 0 0 0 0.0003762859289 1.152605318e-13 0 0 0 9.197294113e-17 0 3826.573078 0 0 0 0 8.543037486e-08 283.5524043 0 0 4.292370018e-12 0 0 0 0 1.404959299e-17 0 2.901728803e-13 0 0 6.008214819e-33 1.139724138e-09 0 2.131727858e-15 0 0 0 0 6.382062829e-11 1.273949219e-06 2.833571081e-06 0 0.002930498099 0 0 0 5.086748809e-09 6067.079783 0.06686977242 0 0 2.497173585e-07 5.250068434e-13 0 32.18645744 7.865843584e-09 92.03953646 0 4753.965515 4891.184741 1.764423137e-10 8.614558921e-05 0 0 4.32915612e-15 0 1.811389892e-07 0 0 0 0 0 0 2.756775325e-23 0 0 0 0 1.006553859e-07 0 0 1543.36785 0 7045.820822 0 0 0.003216649875 2.946240084e-24 1383617.042 0 0 6.304841635e-21 0 0 0 9.193128452e-17 0 0 0 0 0 0 0 0 0 0 0 0.09729049449 0 0 0 0 0 115414.7251 0 0 0 4.043505758e-14 0 0 1.282902928e-14 0 0 0 74.29500893 0 1.50647791e-15 313.4153332 0 5.71198983e-32 0 0 0 0.2662689228 342.2845307 0 0 0 0 5531.861778 7.604692477e-15 0 +0 0 0 0 0 0 0 0 5.503115391e-09 0 0 41451.66027 0 0 0 0 0 0 8.501606976 0 4.171333915e-05 6486.154656 0 0 62605.47366 0 0 0 0 0.003279293706 0 0 0 0 3.829664287e-08 0 0 3.043232787 0.005466633944 7.715230846e-13 0 1.451031192e-13 0 273069.9544 0 0 0 0 0 0 0 0 0 0 0 0 3.054818905e-14 0 1.199284824e-14 0 0 1.577219162e-12 0 0 125019.5842 0 0 0 0 0 0.0683468641 8.035706558e-07 458.9001543 0 0 0 0 2.726078616e-09 2.432397295e-12 0 0 0.7779924172 4020.938699 5.441579191 0.0003104087625 908569.4314 0 1.500389039e-08 0 0 3.014200196e-13 0 2329561.274 0 0 4.640230576e-08 0.5833410463 0 0 0.003069063432 0 0 0 0.0001303830842 5750.079699 0 0 126416.5722 0 0 6.055897832e-14 0 4.811857209e-09 2.151394641e-22 101041.9763 3436627.688 5.290859254e-05 0 0 98760.19628 1.067895647e-07 0.008845795587 0.2824629864 0 6.67083745e-11 0 0 39.51235477 0 0 0 0.0002039229392 0 0 7.302116749e-07 0 0 0 0.008188173573 0 2.779700967e-13 0 0.007392658224 194446.9329 1.868626538e-17 0 0 0 1287629.61 0.007726693414 2.714131171e-06 0.003196448093 4.685655606e-10 0.03278015452 1325709.6 0 0 0 0 98577.66548 0 0.001642972207 0 0 0 3.77854003e-05 0 0 0.0128867415 1.489873599e-33 0.0006448446284 532.1377049 0 1.045000712e-08 0 0 0 2.302424287 0 1.078004722e-08 1.463745123e-05 100.222036 0.0001009682582 9.043901462e-13 0 0 0.002918425616 0 0 1.710330645e-08 0 0 0 0 0 0 0 1.14545325e-21 1.190802005e-08 0 0 0.0001216836292 0 0 39279.07166 0.0006479044977 0 340791.0824 752.3882058 0 147613.5059 0 0 0 1.107466605e-15 0 4.95600668e-11 0.02844811558 248326.1095 0 0 6.033580998e-26 3.126921888e-07 0 0 17.81088148 0 0 0 0.001371805233 0 0 8.435341311e-13 0 0 0 5.431479582e-05 0 0 0 0 0.3447786158 13549.56361 0 0 0 0 0 1.924968162e-10 0 0 9.722542697e-09 8.443048305e-07 0 0 0 0 1128756.138 0 0 0 955.5338487 0.0001075175583 0 0 0 0 0 0 0 0 0 0 0 0 0 295865.3662 0 0 0 0.009085932193 0 0 0.006627232438 0 0 0 0 2.59804044e-16 33657.84945 2.196357178e-14 0 3.173892749e-09 0 0 0 2.219412495 0 0 0 +0 0.2809476423 0 0 0 0 0 0 9264.317238 1.185815929e-08 8.562424321 0 0 0 0 3.782465267e-08 0 0 0 4.074916353e-05 0 0 0.0008240876572 0 0 0 852155.1396 0 850.5053453 0 0 135991.7159 0 0 0 13606.2129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.542023534e-15 0.06666985123 0 0 9.317131924e-12 0 0 0 4.100282298e-06 56.39288722 320.7147755 0 8.850344027e-11 0 0 0 0 3.886536554e-17 6.819592999e-15 0 0 0 5.375719668e-06 0 385110.2635 0 0 0 6210.960377 294.154431 0 0 1.306083971e-07 0 1.486106692 1.083691621e-05 0 0 1213584.12 3.244254499e-15 3.655321531e-11 0 1.322253165e-15 0 0.006853863686 0 0 7.002170508e-18 0 1.02739007e-12 0 3.675305206e-05 0 0 2.577983326 0 0 0 0 0 0 836.6788032 2.799865277e-07 0 0 9.256733392e-07 2.859415488e-15 0 1.177770261e-09 2.32143483e-13 6.217561824e-13 0 3.02636097e-20 660.3658464 0 6.569985003e-08 0 0.0007615852652 0 3.216230003e-13 2.762455759e-08 0 1.011302159e-06 0 0 1.367058779e-10 8.772127589 0.08186533149 0 1.632881642e-16 0 0 0 3.032046154 1.145463911e-06 0 0 0 0 0 3.527638754e-14 0 0 7488.695737 0 0 858591.2422 0 0 2.072927186e-07 3.309496724e-12 9.843570609e-12 985231.7246 336005.2881 3.316939075e-18 3.515048884e-09 0 0.003406607818 0 0 2.188058015e-08 0 6.205650897e-10 6.271838887e-10 3.395286164e-05 4.58747962e-33 526935.3547 0.1394315345 0 0 0 0.2441435918 4.243968716e-11 1.847351065e-14 0.3269538394 3.766762621e-06 1.401488367e-25 0 0 0 38.31443928 0 2.656489317e-15 0 3.990095224e-05 6.317718351e-14 1.402766408e-08 0 0 0.2583682443 4.279000447e-15 2.485624323e-13 4.955157367e-14 0 426.2254574 2.07998286e-14 0 0 0 1.272535607e-12 1.111102519e-15 0 0 0 2.988466311e-13 0 0 0.1135303293 4.728264295e-05 2.540564488e-10 6.664148469e-06 14614.72285 0 0 0 0 1.046493908e-22 0 0 0.002481242648 0 8.247970477e-22 0 0 2.511571668e-10 3.474891087e-09 0 0 0 0 1214.810471 364.3287022 0 1.706660452e-15 0 0 0 0 0 0 0 0 0 0 0 0 0.05392388078 0 0 0 0 1.650239256e-08 0 0 3.002246071e-15 0 0 0 1066.734974 0 0 5.90116996e-08 0 1.187824202 0 0 3.0943929e-08 0.3088597984 0 3.027737839e-16 2.110330017e-09 8.068536338e-06 0 0 0 0 0 0 1.533510595e-13 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 4191.649631 0 0 0 0 0 0 0.08424207376 0 0 0 0 0 0 0 0 3.514958981 0 0 0 0 0 0 0 0 0 0 5.701140476e-13 2.006713119e-15 1.390474595e-14 1.984625126e-06 0.002556657438 0.001671686003 0 3.783800014e-07 0 0 0 0 0 0 5.726095763e-12 0 0 0 0 0 0 0 0 0 0 8.455997244e-11 0 0 1.303396145e-10 0 4.779199192e-06 0 4.294587243e-19 0 0 0 0 0.0001159194347 0 0 0 0 0 0 1.265831173e-12 340445.9433 7.884891362e-07 0 0 0 1.261145939e-13 0.3018904369 386853.7253 1.41632112 3.184293399e-14 0.0008071485994 0 2.663510758e-05 125336.1998 0 0.0006829496878 0 0 3.346076842e-09 2.193288577 329972.6754 0 0.02514114918 0.002988178423 0 9029.244998 0.008266931237 0 0 0 0 0 0 0 0.0001851192735 4640.702227 0 387699.0082 0 3657.55353 0 0.03166732281 0 1111537.185 0 0 1.701292476e-15 0 4.33241402e-13 0 0 0 1.183138354e-17 0 28.66831353 6.136715265e-06 0 0 0 14589.49781 1.433864481e-08 1.353753188e-10 0 0.09353147717 0 0 0 0 0 0 0 1637347.609 0 63922.50326 0 0.42082537 0 1.441442709e-11 317005.133 0 9.341942096e-17 3.086881411e-18 3.774687361e-09 0 0 0 0 5.217898757e-08 0 0 3.862600929e-13 1.290674011e-14 0 0 0 0 0 1.423022613e-07 10568.736 0 2.548881278e-26 0 0.003296930268 1.093769135e-11 0 0 0 0.03773149691 0 0 0 394.9810935 0.01156704201 110918.9477 0 0.0001434982281 1.941944255e-20 0 79343.33283 7.249494951e-08 0 0.001274296454 0 0 0.001057769536 4.732292764e-05 0 0.01162714027 7.963238371e-06 0.01062936213 1.15156261e-13 0 5929.33 0 10.98509117 392.7838676 0 0 0 0 0 0 0 0 0 125116.5695 0 0 6.93256083e-12 6.958787094e-08 1.212773133e-12 0 0 0 4.190503631e-15 0 0.01133332467 0 0.0002361995419 11.50846211 0 0.827527227 0 0 20.96497485 0.09685825346 0 1.017388855e-09 0 1.939073413e-06 0 0 0 8.858636531e-05 0 0 0 0 0 0 0 0.0007282239552 0 0 0 0 0 0 0 0 0 0 0 0.0001827374087 0 0.002773842663 0 4237.398401 0.740559093 0 0.02818684229 0 70979.05285 0 0 7.700329491e-07 0 0 0 0 0 3.585760262e-25 0 0 0 0 380.7510248 0 0 0 10.54615613 8.272020624e-15 +0 0 0 0 0 9.480646956e-09 0 1.807113624e-21 0 0 1.407941986e-05 0 0 0 0 0.06100386764 0 0 0 0 0 0 0.4385148659 0 0 0 0 0.0003947280209 0 0 0 2.842274189e-28 0 0 2.087838908e-07 0.2538128632 0 0 2.859155697e-14 0 2.84240586e-05 0 1.593807085 0 0 0 0 0 0 447559.4785 0 0 0 0 5.374339884e-09 0.0007499123334 0 1.273024132e-11 0 0 0.006159085591 6.285088169e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 6.668763934e-09 0 0 0 0 0 1.407168091e-07 0 0 0 0 0.002186284068 0 3489962.824 0 1.469300826e-05 4290.223843 0.002212894643 0 0.032393469 9.641482836e-10 0 0 0 5.483450377e-18 0 2.73810034e-06 0 2.282266923e-10 0 2.048609149e-07 0 0 1.645907361e-17 0.0001550315086 0 0.000208799607 0 9.328217754e-07 0.0007850612675 0 0 0 4.33805517e-11 0 0 6.816744709e-10 2.967891927 1.440423426e-12 4.405815119e-22 0 2.135148169e-14 3.86012561e-09 8.00356723e-11 0 0 5.428855447 2044901.61 0 0 0 0 4.202182197e-13 0 0 3.825614535 0 0 2014.60662 0 0 0 0.005891274318 0 0 0 5.339152409e-10 0.0001796302209 0 0 0 1.580223251e-08 8.74180032e-05 0 4.260878184e-41 0.981086579 2.951147941e-08 0 1768111.363 335.158211 0 27.5843533 0 0 0.0002275130328 0 1.295335399e-11 0 0 1.860167346e-08 0.6187203261 0 0 5.402816183e-05 0 0 0 0 2.56201061e-10 0.0001146528373 0 0 4.528044427e-07 0 112.809886 0 0.001466542847 7.069709364e-27 0 36135.16629 0 0 0 0 0 0 32024.49994 0 0 3.601054439e-10 0.2645062504 1056.478153 1.999478828e-16 0 3.75188764e-06 0 85073.05506 0.395626966 0 24681.38015 6837004.404 0 0 0.01804964498 0 0 127037.423 0 0.03840261356 2.330718334e-12 0 0 0 0 0 0 5.404984138e-12 0 0 0 0 0 3.126352956e-13 0 4.160155556e-15 0 0 0 0 3.467864354e-06 240762.8668 0 0 9.207063168e-06 0 0 0 0 0 0.000146807768 0 0 0 546.3459401 0 0 0 0 0 147.1960153 0 3.832392088e-20 0 2.957938444e-10 0 161.4667877 0 0 0 0 23.39575773 0 0 0 558017.0028 0 2.284721782e-18 0 0 3.069395595e-24 0 7.437430088e-08 0 0 0 770923.4206 0 0 0 0 0 0 0 0 2.104192342e-16 +0 0 0 2.912299311e-16 0 0 9.125186402e-12 0 0 0 780503.9913 6.384026523e-28 3.689675651e-08 0 0 0 7.156137994e-07 0 0 0.000564433066 0 121.190418 0 0 0 0 0.0001101535739 0 0 0.01230083121 2.478842187e-06 2061583.06 0 0 0 0 0 0 6.513885397e-25 0 0 0.0004749580804 4.868105292e-14 0 0 3.929174397e-07 0 0 0 0 7.140697352e-08 114710.3063 3.436294802e-19 0 0 5.864522909e-13 3.722255316e-08 0 0 0 159333.6395 0 0 0 1974803.616 0 1.286010766e-12 0 0 0 0 0 0 0 0 0 2.868429063e-10 0 0 5.586090761 0.008285521747 36849.21655 72.68115427 0 0 8.721641945e-12 0 2.318382736e-14 0 2.14080162e-13 0 0 0 4.266163861e-12 0 3.028568478 1.445564065 0 1.444274921e-06 0 1.761014121e-17 1.34360725e-09 3.406338859e-09 0 0 4.794369783e-13 0 0 6.596026426e-05 1.133780327e-12 0 1.514180031e-08 0 1.264916991e-15 0 546.612631 0 47.68161791 35423.01577 6.598322347e-11 0 0 26013.05656 0 3.769700757 9.039247596e-13 0 11570.6757 0 0 0 0 4.413123507e-08 0 0.4629873415 0 1.785957004e-11 1.115900781e-05 0 0 10971.56297 0 0.7660486802 0 0 0 0 0 0.001827400016 26697.71035 0 1.135854193e-14 0 8.179609451e-06 1.372302804e-15 0 0 1.634245208e-08 0 0 0 0 2.071914343e-08 0 1.120235027e-10 0 227.59553 0 4.956944115e-10 129.915115 7.773944139e-13 225.4995571 0 0 0 0 0 0 0.005525594706 7.483345951e-20 0 0.001533084691 0 2.536291727e-13 0 0 3.850124927 0 0.2986784444 7.85308064e-13 0 0 5.387601273e-14 0 0 0 4916.777111 0 3.834525158e-06 0 0 0 0 0 3.972233792e-06 0 0 0 1.599954118e-16 0 0 0 0 0.01228045017 6.753251546e-09 0 1.132199166e-09 0 0 0 0 3.513289035e-08 3.177496788e-05 0.01109859813 6.790058791e-05 0 5615.829084 0 4.470599303 0 0 0 0 0 1.896233739e-20 1.300389725e-29 0 79.90467372 0 0 0 0 0 0 0.03507923705 0 6.014779456e-17 0 0 8.827750782e-08 0 0 33.56863855 1.249308589e-07 0 0 0 0 0 0 2.713660148e-13 7332.28686 0 0 0 0 0 0 0 0 0 0 5.015851182e-11 3.112019117e-12 0 0 0 0 0.002751414688 0 0 0 0 2.882904386e-10 0 3.584779747e-10 0 0 0 0 0 0 13431.43301 0 431931.5512 0 3.985909433e-20 0 3.988656964e-13 0 +0 0 0 0 0 0 0 0 4.98898473e-11 0 2.006958305e-11 6.156249652 0 0 0 0 0 0 0 1.194012281e-16 0 0 5.315838478e-05 0 0 0 0 0 9.285574581e-08 0 5.434282079e-07 0 0 0 0 0 3.715549143e-06 0 0 0 0 0 0 0 0 0 2.898011527e-08 0 0.0002885034593 0 0 402967.2875 0 0 3.987074168e-14 0 0 0 0 4.049583986e-08 0 1.158216169e-05 1.638021022e-17 0 0 81107.94679 6.534996534e-07 0 0 0 3.129586061e-06 0 0 13391.3485 0 0 0 0 0 0 0 1.164002247e-06 0 0 1.774364604e-18 0 0 7.331394129e-05 0 0 0 0 0 11.24943234 0 0.993440823 0 77700.03718 0 3.801413459e-21 0.1007365339 0 0.5806675256 1240.559476 0 0 0 0.0003047930115 0 0 0 2.487914876e-11 3.657922152e-18 0.0004375076754 0 1.06068104e-12 0 0 0 1.560600013e-12 0 471806.2051 0 2.646332766e-14 0 6.391485329e-21 4.807261179e-14 0 0 0 0 587784.9587 5.131151905e-09 0 0 4.682882761e-14 151886.9391 1.883860071e-08 0 0 0.4000195669 6994.608915 1.831001049e-22 0 0.1527154755 0 6.152759019e-15 0 1.263624663e-29 0 0 2.061133e-15 2.610732693 0 4.550326842 0 0.001973924473 0 5.2021494e-08 891.9608596 2.196653406e-06 0 0 0 0.0002894615291 0 1.721816861e-07 7.567664848e-11 33182.11823 0 183.2774662 0 1893.130116 0.008975578453 0 2.208977917e-07 6.243491227e-06 0 1.987438377 0 0 9.154618374 0.05677063292 1.142715734e-05 0 7153.712603 9.785660557e-13 0 0 5.899980142e-07 0 8.265106121e-12 1.256799238e-20 0 0.0009413330757 0 0 1.106355442e-12 1.499877939e-10 0 1.826414532e-12 2.094589676e-05 0 0 759528.6946 0 0 0 0 0.0002637687942 0 0 3.300523656e-20 160208.8955 0 2.136341909e-07 0 0 0 0 0 0 0.6824038046 0 8.496124691e-24 0 0 34692.08577 0 0 0 7.43905312e-15 0 0 0 0 0 0 0 0 0 1.512139428 0 1.057445543e-05 260.7380067 0.01288855527 0 0.09807302878 0 0 0 0 1.216091294e-13 0 0.01906250101 0 0.03635172422 0 0 0 0 0 0 0 0 0 0 6.372297154e-09 0 0 2.55692909e-06 28.55005264 0 0 0 0.02784669194 4.54207126e-06 0 0 0 0 0.003300059906 0 0 0 0 20475.87055 0 0 0 910.5885502 5.721577509e-13 0 0 0 0 4.086364367e-11 0 0 0 +0 0 0 0 0.0004003114231 5.385288168e-12 0 0 0 0 5.706707532e-23 0 0 0 0 0 0 0 0 0 78.87281043 0 0 0 0 0 21.08365122 40.26661156 6.815846134e-12 0 0 0 3.570944907e-14 0 4.826043388e-05 5.249875664e-15 0 0 0 0 0 1.542302229e-18 0 0 0 0 0 1.874620165e-20 0 0 3.9401645e-15 2.464578411 0 0 0 0 0 7.118724723e-06 7.164375373e-18 0 0.008251005878 0.0002270633691 0 0 6.900410795e-10 0 0 0 0 124028.1732 630683.2921 0 0 0 0 2330.489825 0 0 1.276268134 0 0 0 0.004892729927 0 0 0 0 2.267827265e-06 4.274858115e-09 2.176638361e-08 0 0.004040297515 0.2269086602 1.549443173e-08 0 0 0.002625456284 6.751551436e-23 9.347704343e-08 5142.965156 8290.388608 0 1.744247307e-30 0 0 0 0 0.000167520813 0.05700867638 202.7666652 0 0 0 0 0 0 0 0 0 2.225828158e-17 2.200491001e-11 1.992408149e-16 2.840290632e-12 0 0.0003043932157 1.775789598e-28 0 0 0 0 0 0 8.920493915e-05 2.903986935e-10 2.079384289e-10 0 3.997826615e-11 10253.8276 0 1.786774703 6.614503507e-27 9.299562343e-12 0.2702298272 0 0 4.258458001 0 0 1.639044354e-05 3.580223605e-06 2.491703003e-16 8.195983173e-14 0 3.344475827e-13 0 8.192079715e-22 0.00167559305 0 3.159777624e-05 2.735987152e-05 53854.07128 4245719.873 0 0 603401.9212 337.9040465 0 8.206051588e-06 0 1.796174777e-17 0.0006916369737 0 1.227747104e-11 345506.2044 0 1440.590644 0 3.236591308e-06 0 0.003511917074 0.0001080663415 0 0 867441.6884 0 3.466615432e-11 2.503149113e-05 0 0 0 0 0 0 0 0 467097.4275 0 0 1.397130406e-07 0.02968388955 72.71693033 0 0 0 0 454092.741 0 0.01107874036 104253.3019 0 586627.2874 0 0.03462829704 0 0 1.646093234e-07 0.0001793966054 1.273364247e-08 0 0 0 0 0.5652805917 46778.48058 0 0 0 0 0 1.509162671e-06 2073627.104 0 0 0 0 0 26294.90997 934223.9727 0 81765.54689 0 0.005709246729 0 0 0 0 0 0.6653287641 268354.6222 0 0 0 0.001636404422 0 0 8.475190662e-08 0 1.252771378e-09 0 0 0 0 0 428008.019 0 0 860915.4582 0 0 6.468173308e-07 0 0 0 0 0 0 5.844545218e-22 0 0 1.52252149e-27 0 2.671655178e-06 0 0 0 0 1.38767584e-09 0.0004385148915 0 0 0 0 0 0 0 5.197428902e-08 0.0009162106583 0 0 0 +0 0 1.46078376e-06 0 0 0 261524.3394 0 0 9551.612849 0 255.9181392 0.08115971064 0 0 0 1.386356297e-20 0 0 0 0 3.119540251e-10 0 1.991468753e-10 0 239267.1537 0 0 0 0 0 830.2892928 0 0 0 2.42816719e-14 0 0 1338.163096 4.425947811e-08 0 2.234786685e-09 0.0007962822424 0.6862700191 2.047591454e-07 75.20068527 0 0.0005996253411 0.007071872103 0 0 2.466784959e-12 2.420226282e-14 0 0 5.093056769e-13 0 0 0 0 0 0 2.861678116e-09 0 0 0 3.692004042e-09 6.577017111e-06 0 139197.7713 3.951789648e-11 0 0 0 4.232003031e-11 1373839.201 0 0 0 0 0 0 0 6.604913119e-07 7.256733131e-08 0 0.0003556332382 0 0 2.385496027e-12 5.648500398e-15 0 0 0 8.040360836e-09 98.08793807 11755.98121 0 0.06669078159 45.27320728 0 0 0.016705349 0 0 2.691510875e-10 2.062491568e-16 0 300.4647821 0 3.999059433e-06 16095.23724 5.468862161e-11 0.02064897745 0 0.0007540830663 0 6.254308694e-12 0 0 1230.624976 0 5.051851909e-24 0 0 465498.7396 4.327900129e-20 0 1.351839929e-09 0 6.007117097 3.802721239e-11 0 0 1.23000236e-06 5.513478743e-10 1.350235916e-33 0 0 1.487225929e-07 3.592010503e-13 0 0 0 2169.609977 23.21267224 0.1639617285 0 0 0 1.106093563e-13 4064.289674 6.886543281e-08 0 4.767047654e-08 1.54396306e-10 0.09470371908 0.02569485466 0 94221.17979 402425.6576 0 4.483047438e-08 8.540919626e-13 8.39889746e-07 2.572519416e-13 0 12.58648793 0 0 0 0.0002228283376 0 0.3422006892 0 0 0.006716021985 0 0 324941.8529 2.208183681e-18 0 0 0 0 0 0 5.282422944e-11 0 0 2132.469491 0 9.719619325e-05 0 1.659882553e-05 0 0 0.9501809124 0 5808.717343 0.0007087866802 0 0 0 0 12718.07464 89.4115466 114432.1593 0 0 1.932969784e-18 129849.8151 0 201596.9557 6980.361197 2.280302821e-25 0 1.689205087e-17 0 0 0 1.001179206e-20 4.608854183e-12 0 0 0 6.729715388e-13 8.869365249e-22 3.774399951 16.26269863 0 0.02260266264 0 1.92239604e-13 0 0 0 0 18686.40909 3.808901075e-13 0 0 0 0.04643075336 0 0 0 0 0 0 0 0 0 0 0 2.05070904 8.317414744e-20 0 0 6993.950944 0 0 0 0 0 0 4.798714467e-06 0 0 1.955980402e-13 4808.050906 0 9.107166004e-05 6.870480341e-23 1.058525667e-13 189.6804863 0.0003572912261 0 0 0 15935.34815 0 0 4961.0844 0 1724.333299 24837.72329 0 1.795918692e-31 0 0 0 4.332960001e-13 0 0 0 0 0 0 0 +0.004329517764 0 0 4.679524576e-05 0 4737801.582 8.089111365e-15 0 0 0 0 0 0 0 0 0 8751.047013 0 0.001881926834 7.036206335e-19 0 0 0 0 0 0 0 0 3.658877091e-17 54.1496739 0 0 0 0 0 0 0 2.669430144 0 290700.2708 5.890583871e-09 0 0 0 6.831724675 34522.19868 1773.300054 0 0 2645877.188 1.155269229e-06 4.266176653e-06 0 5.819800755e-15 0 0 0 1.837330003e-23 0 0 6.755161596e-10 0 0 1.001288149e-14 0 0 0 0.4267226746 1.02423643e-14 1.112463316e-13 0 0 0 0 0 0 0 0 0 1688.341043 0 290371.1519 0 0 268830.8148 1.480098826e-14 0.001458414354 0 0 0 0 0 0 7.430365908e-05 0 0.04052038793 0 0 0 6.481449097e-18 0 0 519116.3195 1.09103293e-08 5.472684674e-09 9.630357846e-09 0 0.0001554672927 111.0237538 0 0 1.928208487e-14 0 0.3649276394 2.94818928e-20 0 0 2.177404114e-11 0 7.949541935 0 0 0 0 0 10173.62121 0.0003925803751 7264.254513 0 0.01028800268 0 0 0 0.00212093588 1036.696027 0.0004974388858 0 0 2.180464807e-10 0 3.411828011e-11 0 1.496366074e-05 0 1.748526318e-12 0 2.3742176e-10 0 0 2.176186075e-16 7276.105061 0 0 6.467296886e-12 0 0 0 0 1.029335768e-08 0 0 1.124017686e-11 0 0.0001179580398 0 0 0 0.004989213593 0 0 0.001336753623 5.456063064e-05 0 0 0 1.396689776e-16 703977.0126 0 0 0 0.4932011788 3.940964094e-24 0 0 0 0 1.049967242 29.23258877 0 4.751459187e-11 0 0 4.457759182e-10 0 0 0.06278995196 7.468298918 124708.8363 4.4867615e-12 0.06158238873 1.891375304e-08 9.283556882e-07 1.068508254e-12 0 0 0 1.727621443e-19 1.928487036e-20 0 583.3439021 0 0 0 0 0 1.74394741e-10 0 1.651962331e-06 0 0 0 3.699636816e-16 7.132225347 2.717991483e-06 0.007501531945 0 0 5.360286627e-12 0 2.744017187e-08 0 0 0 0 0 3891.904433 0 0 488.3620512 0 0 0 2.232829254e-07 0 2.077837805e-06 0 4.902941956e-06 1.470332152e-06 0.3189531442 0.8281841005 0 0.01468662077 0 353835.9042 0 0 0 3461.123195 1.252499974e-19 0 0 0 0 0 0 0 0 669497.0622 0 2.668433777e-05 0.002249119574 0 5373.890459 0.1229493747 489597.9331 0 0 0 0 234846.2389 8127.300106 0 0 0 0 3372.820189 0 0 0 0 0 0 0 9.015781202e-12 0 0 0 0 0 451310.3619 +0.000162535328 0 0 0 9.233481881e-20 0 0 9.277847801e-06 0.000299423742 0 1.045547378e-13 0 0 7.493702157e-08 0 98869.98438 741386.2498 0 0 9.824712396e-09 0 0 0 0 0 0 0 0 0 0.07850821813 0 2.64004837e-12 1.76266821e-07 9.054453089e-15 0 0 0 0 4.395423595e-14 7.894750048e-14 0 4.664015156e-16 2.242772824e-19 0 0 0 0 3414.689563 0 0 237348.4315 0 0 0 0 0 0 1.017181399e-11 0 5.12238046e-09 0 0 0 0 0 162862.1964 0 0 0 28.85940876 8.435866982e-05 822.4971906 0 2.172434424e-25 113.9667164 0 926.16254 0 0.7592992025 0 0 0 0 113.9776023 1.382939773e-25 0.01816667096 0 0 0 0 0 870144.5474 0 0 275311.7408 6.361612269e-08 2.010500172e-06 0 2.385815386e-11 0 605844.9951 4.463065581e-08 0 0 0 7.911666756e-15 0 830525.3212 0.001148969714 0 0 0 0 0 0 7132.635739 1.286405897e-27 0 0 1.27170168e-09 0 0 3.482126134e-05 0 4.14344487 0 1.354605001e-28 2.468747094e-19 0 1.00761775e-09 7.20473554e-23 0 0 0 0 20.79336669 0 0 8.99531751e-15 0 0 2.007792061e-08 73.55343716 2.983914469e-17 749285.7926 0.1184990733 46557.96748 9.195452533e-14 0 0 2.296936506e-17 0 2.470008324e-05 5.556118613e-07 0 6227.768481 0 4.739766486e-06 3.395353109e-13 5.936963223e-11 92027.80826 49.87862057 0 0 7.736742854e-16 0 0 3.804921145e-06 0 0 378453.808 0.001166784751 0 0 0.0004293361128 1555385.59 0 4.809184182e-15 0 0 458.4618079 0.003768632817 18475.50316 0 3.240929307e-13 0 0 0 6.030360951e-08 0 0 1.792859845e-06 0 0 0 0.06550130576 2.635285072e-12 0 0 0 0.0007458964749 3.355676043e-11 0 1.754539823e-08 6.886502817e-12 4.748556652e-10 0.0001585777477 0 5.51199608e-07 0 0 0 1.045072152e-12 0 0 0 671.1859661 0.04708328341 0 4.465196172 0.01108269552 0 3.57571023e-18 0 0 0 1.380625335e-14 7.206540262e-12 0 1.76703498e-08 0 131167.6885 1.703161533e-11 0 0 0 1.682266826e-09 0 0.5657868037 2.666579854e-10 0 1497.230499 0 0 0 0 0 0 5.194567928 466514.0285 0 0 0 0 2.367955939e-16 0 0 0 4.69059114e-06 0 1.986911049e-10 0 0.003826813946 0 0 0 2.409792985e-27 357.462807 0 4.443758764e-17 0 0 0 0 0 5.382900817e-07 2.617350714e-23 0 0 0 1734.610732 0 0 0 230.3793423 0 0 0 0 0 4.190819212e-12 0 0 0 0 9.847715518e-07 5.502651599e-18 0 3.408413279e-06 0 +72137.20614 0 0 0 1.648287967e-15 0 0 0 0 3.070653519 1.509237918e-07 0 0 0 848.7724065 0 0 0 10.92789282 0 8.531640824e-06 197.2359105 9.581221784e-10 0 0 0 0 0 0 1169.036393 1120679.909 0 0 0 0 0 116097.4946 0 0 274.6711805 0 0 0 0 0 0 7.316741336e-08 0 0 0 0 0 8.651376513e-25 256297.2241 2.468511743e-05 0 0 0 1.162546795e-07 0 0 0 3.108834486e-06 16734.12502 0.001003667772 0.04895889122 0 1.919662551e-12 0 321439.8246 40224.87673 2.692462827e-17 0.005660633004 0 30.04118282 1147659.95 0.01750676107 2672.047692 0 4007.029712 0 0 0 166044.3409 0 2.736785544e-14 332.410648 0 619.0393386 4521.027357 8.086707366 1.136740298e-13 0 1.9758582e-14 0 0 0.1972629629 2.007144965e-05 0 8.610299748e-14 1.636424063e-10 0 243897.8115 4.448441906e-27 6.795995786e-14 0 0 372095.0623 986722.7626 0 0 0 0 0 0 3.753832578e-18 1393.074064 0 0 0 0 0.2331935592 0 4.821180146e-10 4.149726329e-12 0 1.304084314e-06 14912.89473 2203888.491 0 3.903818475 0 2810.889224 0 0 4.08781734e-07 2.192893922e-10 0 0 0 0 0 0 0 0 0 0.0001607151747 0 0 0 1.069342221e-06 3392.53519 0 0 2.154958373e-15 1.52209087e-17 0 0 0 0 246137.7247 0 61.32569997 8.175107304e-05 0 198118.0277 221.6564619 0 0 1.366962531 0 8.327470946e-10 845710.4885 0.0002180341043 0 0 0 0.007748374186 422981.0243 0.0002898273929 0 0 1867.904788 5.197284169 0.001495244374 165.855334 2.032912306e-08 0 1.630287438e-05 1.167468974e-07 0 0 0 0 0 9.277536025e-18 2.184799219e-06 0 9.812182821e-23 0 0 0 0 0 0 0 519.984389 0 0 3.838038773e-13 0 1.18000613e-11 2.155115642e-08 7.873983455e-25 0.4675865794 0.0002164549748 3.877745649 0 0 2322.706588 0 0 0 0 6.09298902e-27 1.323263664e-14 1014.14866 0 0 5.247212819e-25 0 0 0 23.90388705 0 295.1690663 0 3.133224697e-11 4.049002582e-10 52.11693999 130525.2643 0 0 1.217830074 0 144757.1825 0 0.003848413199 0 0 0 6.005431543e-10 0 0 9.362942448e-23 0 4.94218928e-16 0 0.004594550425 0 0 0 0 0 0 0.003658608301 0.01373220038 3.457892795e-19 2.666122545e-05 0 6.073241546 0 0 0 0 0.0001965656741 0 2.259286176e-10 0 1.446227765e-16 0 0 0 0 0 0 742.297948 0 711.8965141 0 0 0 0 1826.718242 0 1.504907183 1.12910845e-10 0 149.7216926 8.192350008e-08 +0 0 0 0 0 0 0 0 0 0 0 0 0.0531073137 0 2.735058205e-14 0 0 9.721884342e-11 0 0 0 0 0 1.22249101e-05 0 0 0 0 0 0.01470750612 0 0 0 1.161744694e-08 0.7679497722 0 0 39.79647558 0 0 0 7.218266541e-08 2.445708641e-34 767600.0518 0 7286.1169 4.569204365e-10 0 8.650741683e-12 1.094153245e-22 2.465032032e-08 0 1.47431841 0 0 0 0 0 0 0 0 0 0 0.001779130052 0 1.940511892e-15 0 5.980159758e-13 9.194403059e-12 0 0 0.000821025677 0 827.7723885 0 0 0 1.801237542e-07 0 48.9559346 0 0.01015985349 5.07781399e-11 0 0 0 1.139345786e-06 0 2.539582434e-11 0 4.297473288e-13 3.501623751e-09 5.676887504e-10 0 9.708947952e-16 0 6.699906297e-15 0 2.749260902e-14 3.197144015e-11 4.552050479e-07 0 0 0 6.915609341e-13 569811.1335 0 5.975539326e-10 1.050688979e-19 0 0 0 2395761.001 42476.67967 1053.022621 0 0 0.000339457479 0.0001751690668 0 0 3.582730562e-11 2.946771395e-15 6.620320279e-10 1480783.713 4360202.1 0 6.932538762e-12 0 1.210195424e-06 4.819864534e-07 3365862.706 3.85161781e-15 0 0 5.217645627e-13 0.003231449619 0 0 1.259001147e-14 2.31068107e-08 0 0 1.811233329 0 0 3.708121023e-07 0.0001298242436 2.047705319e-06 58230.46616 1.008146825e-06 1.782378886e-08 3.309991378e-14 6.432789851e-22 1.312041353e-17 4.318710123e-06 0 2.215118295 0 1111550.55 0 4.921320111e-12 23931.57113 0 0.1045478922 909.0570468 0.0001453036679 37707.94717 0 0 0 1155924.87 0 3.260362328e-13 518.9518251 7.385430176e-08 9643.960243 0.0007590243921 0 12975.54876 0 1.49015172e-06 222520.8602 0 2.36621866e-31 8.063146246e-06 0 54.30480722 0 0 1630253.994 2042561.157 0 9.741625274e-07 0 25707.25244 0 0 0 0 20.41336263 0 8.518992283e-22 5.031197362 0 0 0 0 0 0 0 0 0 0 30.33110025 0 1885935.108 0 0 9.909081391e-16 0.0006093525842 0 3.381031683e-15 0 0 1.179374344e-11 2.345904008e-05 488.4689284 157748.3642 0 55.41357218 3184504.346 1.020184926e-07 0 0 0 0 0 0 0 1.807531636e-26 5.099127071e-22 0 0 0 5.561243268e-07 0.0001725789859 0 3.576693037 6.089005972e-06 789287.3249 6.080003382e-09 0.0001273259892 0 0 0.09612884902 0.0002280032016 0.2607724507 0 0 0.5964136625 9.308486296e-15 0 0 0 0 5.580844779e-09 0 0 0 3.008419381e-14 460512.2757 0 0 0.1167067584 0 0 174315.6552 0 0 0 8.613961335e-18 0 0 0 0 0 0 0 9.083093129e-10 0 0 0 0 0 0 0 0 0 166848.6152 +0 7.645300552e-29 0 0 0 0 0 0 7.924663247e-33 0 0 0 0 0 1.140818626e-09 1.332545034e-11 0 0 1592550.148 0 0 0 0 0 0 0.03319864704 20.79812483 0 0 0 0.0002800332062 0 0 0 0 0 4.429709648e-06 0 0 0 0 0 968470.172 0 0 4931.191787 0 0 0 0 0 0 123.3197495 0 0 0 0 0 4161.822877 0 234566.8716 2968.964754 8.477280641 0 0 0 0 4.325094828e-21 0 0 0 0 6.279445635e-05 0 2.106349712 0 0 9.894498546 0 2.559847809e-10 0 2.592143158e-08 0 0 0.003490032504 0.002847328972 0 0 0 5.777885279e-05 5754.395696 0 0 0 5.889013521e-09 0.008766262668 0 0 1.848806101e-05 0 0 0 3.557549553 2.492598399e-10 1.580609947e-08 9.411548094e-07 0 5.683008736e-09 0 0 752.9838117 0.0249885055 0 0 0 0 0.895415771 0 481.9857369 4.787863265e-11 0 19534.29368 0 2.796145947e-09 0 0 0 7.368290408e-16 0 244.8682725 2.023743834e-07 0 0 0 0 0.06398968444 0 0 3.982547545e-21 0 0 4.302113262e-07 1.238952255e-09 1.342555229e-14 422797.2315 0 135.4369814 0 1501742.932 0 0 0 321.9020179 3524703.258 0.0588049137 0.7373258654 0 0 3.722102353 1.51478814e-22 4.198067389e-19 0 0 0 0 0 3283.870556 0 0 1.569751511e-24 7.827388057 0 0.0103036148 0 8.634446196e-12 0.000144755381 0 1.076502082e-11 102612.6813 11956.5594 0 0 0 5.062918044e-13 4.133359383e-22 0 0 0 0 1078151.141 0 4.846119059e-14 0 19.08268246 0 7.878724665e-10 277602.3839 0 3.581777172e-16 0 0 7.1143098e-24 2.839625256e-09 0 1.037883456e-19 0 0 0 1.034841016e-09 0.0001025755635 0 0 3.355532907e-15 5.585512843e-11 2.695541987e-13 0 0 0 339028.913 0 0 5.759322617e-13 0 0 0 0 0 1.062280809e-10 25.30146998 0 0 0.003036217671 22227.83464 8.65500057e-09 0 0 0 50.44918322 0.02943303302 0 0 0 0 32.07447164 0.03630416231 13904.08756 1.352095261e-08 0 0 1.02905794e-08 1.482620304e-09 1.504206345e-08 0 8.079805947e-10 0 0 0 0 0 0 0 0 0 0 30749.21749 0 0 2.020066384e-13 0 0 0 0 0.0005650176755 0 0 0 0 0 0 1.435573633e-14 488.934936 6.557458729e-15 1.213623306e-13 0 0 0 0 0 0.008116242847 0 0 0 0 0 0 0 1.118517958e-05 1.503661356e-16 0 0 +0 0 1.035733241e-12 0 0 190325.7065 0 0 0 0 0 1.53964725e-15 0 1.015879073e-12 0 0 0 0 0 0 0 0 0 6.304147448e-21 20232.60859 0 1416882.526 0 0 0 0 3.658565965e-09 0 0.1754059608 2.241296675 0 0 0 0 9.449157802e-09 0 0 0 0 0 0 200963.7714 0.1643724261 0 0 0 6.938444452e-11 0 0 6.836144509e-20 0 0 0 0 1.695611382e-09 0.005984629867 0.002588550328 5.165221566e-07 0 0 0 1.236703777e-16 0 0 0 0 0.0005532265825 0 0 59.64322969 1.196270141e-23 0 0 0 1.043676801e-14 0 1427116.8 0 0 0 0 0 0 0 0 0 7.224935581e-05 0 1.462270182e-05 366.8864412 0.0003130050381 0 0 0 1023536.452 0 2.450382824e-13 0 0 0 1.718354561e-17 0 4.124958659e-14 6.871552958e-18 0 3.468038886e-11 0 15495.05899 0.0001475025245 68340.05973 0.0008945875242 0 8.498465996e-06 7.340582987e-12 0 0 0 0 0 1.489633777e-13 0 0.003546882951 0 0 1.879981031e-13 0.003746603233 0 0 0 8.699318514e-22 1.869823864e-10 0 0 7.452844111e-21 2.711287948e-07 0 799983.3079 0 0 0 0 0 0 4.531841079e-09 0 0.002009848274 4.057906125e-08 0 0 0 0 0 0 0 0 1.383640651e-06 0 0 453865.6678 8.490047763e-11 0 0 0 0 1.123561229e-16 0 0 0 6.941477099e-17 6.820952897e-13 30944.94824 119.3750195 4.32367876e-17 1326.469047 10298.78596 0 0 861567.5609 8.454472468e-14 5.196533826e-09 0.4711137622 2.403998509e-12 0 0 9.623012799e-13 1.964164376e-10 0 876.8638881 0 92862.0155 14.56539899 5288.909185 1.173287964 0 7.199930251e-11 0 0 0 0.1835167021 4.116589026e-20 0.002349534484 0.006184387143 0 0 0 9.135030464e-12 0 0 0 0 0 0 1.784020451e-11 18.954038 0 0 0 6.077223137e-16 7.373870913e-09 9.475991207e-08 506020.9021 13.30096418 0 0 0 0 0 1.767673737e-12 4.367424729e-16 0 0.9957693985 0 0 0 0 1.707147575e-18 281.5379778 0 3.721986349e-05 5.976771521e-09 0 0 0 0 0 0 5.130536362e-12 0 2236598.372 0 0 0 0.02716978566 0 0 0 943724.1977 1.423477448e-11 0 0 0 0.03446549167 0 0 0 0 0 0 0 46279.07446 0 23675.20275 2.695978364e-19 0 0 1.836115397e-18 0 0 0 1.505727851e-09 6.981566555e-06 1.26349544e-10 0 0 14.89059113 461626.6925 1.395515239e-11 0 0 0 0 8.360292959e-06 5.038030666e-08 0.005085858689 1245612.957 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.298844143e-06 0 0 0 0 0 101899.1578 0 0 6.058095967e-06 0 0 0 0 0 3.351079979e-11 0 0 40995.97201 0 4.665559285 31079.79653 0 0 0 0 0 1.746029291e-09 5459.905591 0 204319.9516 0 0 0 0 1.994164508e-13 0 0 2.258359179e-07 0 0 6.819735957 0 0 0 4.672875671e-16 0 0 3.644107318e-11 0 0 0 8.459455483e-06 0 0 0 0.003819714326 8.806448233e-12 0 0 6.688781419e-12 0 0 2.865507617 0 1618.873041 0 0 1.866263438e-11 0 0 0 0 0 0 0.003522845621 0 0 0.00544391809 3.182625762e-13 0 0 0.007802807115 0 4.533334794e-09 3052.838652 0 0.00997625595 0 20.0255767 4.702392479e-11 0 0 8.101461487e-10 0 0 0.001197647503 9.016729599e-06 0 3.378974953e-17 0.03153539168 0 3.557863224e-08 0 0 661839.3992 19869.58868 0 0 7.813134434e-09 0.000131562976 6.625305819e-12 0 2.333016847e-13 0 0 314.1738174 0 0 0 2.423230005e-09 22.0828354 0.2276056407 1.772460432e-21 0 0.3911679284 0 0 6.292833009 0 7.74675928e-09 0 0 0.0001668570535 791.1765256 6.151902839e-07 0 0 176.9373665 3.526677612e-12 313997.9014 291.4731897 1843201.558 0 0 0 0 0.0001754691513 0 0 0 0 0 5.101260667 0 0 61301.60374 0 8.300930673 0 5.623517582e-11 0 0 0 0 5.306796288e-07 0 404121.2974 0 6.196974609e-16 0 0 3.233490478e-09 5.473448113e-17 2.268485704e-05 0 0 0 9.288265145 794916.6964 0 0.04509154566 4.263604994e-09 0 0 7.03786327e-07 0 99.03546384 21.26956797 0 492.591932 514.4294546 0 0.002374293403 0 0 0 146.8527551 0 0 264513.9188 0 5.669613577e-08 0 0 0 0.00763890046 2.379393764 0.001692526443 0 0 238478.9573 107622.3804 0 0.006959311506 0 0.0002100506541 0 102829.3756 7.289473828e-08 7.304763356e-10 0 6.031408929e-17 0 6.627771382e-06 0 0 7.114177464e-22 0 0 0 0 0 0 0 147412.8402 0 0.01810235258 0 0 0 0 0 0 0 1368.498028 0 1557.229279 196567.4054 8.923041925e-13 0 0 0 771129.1399 77170.29751 1.124581098 0 7.926474771e-27 3041.164911 203.8634771 0 0 0 0 1.046401656e-12 0 6.610005456e-15 0 133724.6775 1.697411226e-10 0 0 0 0 0 0 0 0 0 0.03472531421 0 0 0 +0 0 0 0 0 0 101.0453206 0 7.365153206e-21 0 0 1.237561587 0 0 0 0 5.01836177e-09 0 0 0 1.52381301e-24 0 0 7.442256661e-16 0 0 0 0 0 6.10464302 0 12.3513421 2.374519719e-08 0 2.999112271e-11 0 0 0 1.79011389e-06 0 0 0 0 0 1.908988414e-06 0 0 0 0 2.6106119e-08 0 0 0 0.5827723533 0.08095175067 0 1.240951816e-13 0 8.865894836e-05 0 0 0 0 0 0 0 0.1416693756 0.07968590578 3.302542966e-09 0 0 0 0 0 0 0 0 3.064974075e-06 716429.6107 0 0 806915.8306 0 0 0 671095.5917 3.171047861e-13 1926330.272 5.135999613e-13 1.682388498e-05 0 0 475657.8353 6.981493045e-06 473464.0864 0 0 26.19917538 0 6.826367168e-07 113292.7754 0.1969130848 1.085075134e-29 4.958548008e-16 0.0001083306682 0.001000105898 0.001406273408 0 0 0 0 0 0.04165947866 0 983857.0291 6.429478199e-11 265684.5618 0 0 50.86265197 0 0 0 1.531382592e-12 2.594666634e-11 0 1.866645766e-08 0 7.60055089e-13 1425032.814 22.74177658 458.3415557 0 0 0 0 55.97593453 16.83673251 0 9284.648037 0 292835.9723 7.183136275e-09 3.97992959e-12 0.008495419463 492.1877174 0 0 0 3.092335048e-21 9.911568457e-13 0 1.361229327e-28 0 0 0 0 0 0 0.0669920765 0 1827650.046 0 291554.1905 3548.786781 0.000201899776 0 4.277259343e-22 0 0 0 0 6475.159555 130601.8892 0.0009019555566 15579.88867 0 0 0.7130068077 5.149117467e-11 0 0.04647881172 0 10885.12811 2604.468754 0 4.037148452e-12 20.4486086 0 89.14544976 0 1.337108319e-08 1.917935299e-07 0 0 3.899923372e-07 0.001056781345 4.31536022e-07 0 1.667158286e-33 0 0 0 3.17197422e-23 0 1077.984238 0 0 1.656964737e-06 0 4.599909056e-09 1979.218627 0 0 0 0.1530329145 7.759033805e-12 0 0 0 0 0 0 0 9.584982986e-18 0 1.183403204e-26 0 0 0 0 0 0 0 0 0 1.559528619e-10 1.351817918e-13 3.104176028e-09 0 0.01818795382 0 0 0 2.529050541e-17 0 1004347.053 0 0 0 0.001675731803 0 0 0 2.881158715e-13 0 0 0 0 0 0 2.064276119 207277.4828 288.4408027 0 0 0 0 0 0 0 0 0 0 0 0 3.401430018e-15 0 0 682938.9596 3.415690901 0 0 0 0 0 0 0 0 6.504180079e-14 14.36629286 0 0 0 0 1.976732469e-24 0 0 0 0 +0 0 0 0 0 9.592672541e-25 0 0 2.996681006e-25 0 0 0 0 0 1.411914781e-11 0 0 0 0 0 11.81763026 0 5.347224796e-34 2.035293834e-15 0 0 0 0 0 1457.511878 0 0 0.001516312388 0 0 0 0 2.024520946e-09 0 0 8.944281937e-05 0 0 0 0 0 0 0 0 2.185886184e-07 1.67403e-17 0 9.718207144e-05 73.09933668 0 0.0002483289608 0 0 0 0 0.01968307144 0 0 89.45746211 0 3.987803604e-07 2550.205459 0 1.686796251e-26 0 0 0 127920.4624 0.3898589436 7.41280269e-27 0 9.100612961e-12 0 0 0 163146.9608 81121.389 0 990973.7092 0 152879.3667 131.8563804 0 0 0 0 20538.43249 0 0 0 0 0 0 2.445620985e-09 0 0 9.442231418e-11 0 500025.2359 0 0 3.259472615e-06 4.289384836e-10 0.003934089777 1.337530076e-08 1.966074529e-13 9283.858394 0 0 9.510246366e-15 0 0 1.371258886e-12 2.50663881e-13 4.390686234e-05 0 120.5795787 3.656155646e-08 0 0 0 0 7.625829274e-15 0 17333.62507 0 0.4434815842 2.784855334e-19 3.73020374e-18 0.01855484429 0 1.05283624e-12 0 1.72187161e-13 0 0 0.06331499248 4.861928624e-19 6.203551464e-15 0 0.01138486949 0 0 1.187412162e-09 1.566275613e-11 0 3.189653465e-20 0 8.612841897e-28 0 2.571215176e-08 30.8648877 0 2.532572274e-15 0 0 0 2.322759415e-24 0 0 1511.693849 0 0 0.03724246513 0.04797478213 9.675467118e-07 5.156296742e-09 0.101660853 0 0 0 0 3.893646909e-13 0 0 4.571306869e-07 0.05486150413 0 1.361304809e-12 0.2043575819 0 0 19504.52385 0 0 0.006519372205 0 0 7.94279517e-17 0 5.132933598e-25 0 0 0.4621103269 0 0 0 0 0 0 5.715414994e-11 0.0009055953369 82.06112625 633.0213044 4.153976298e-09 0 0.5928769955 0 7.616244117e-12 0 0 0 0 138800.4638 17777.08238 0 481.1159486 0 3.656309097e-08 7.025505323e-10 0 0 0 0 0 0 4.777593888e-06 1.324633637e-15 0 0 6.043693616e-11 0 0 0 3.407175286e-14 0 6.967461062e-05 0 0 0 4.84553599e-08 0 1.664415453e-18 0 0 0 6.916568373e-08 9.928878884e-14 0 0.0001064039717 0 0 0 0 0 0 0 0.003722780995 0 0 0 0 0 0 0 0 8.059190064e-12 0 0 0 0 4.225957519 0 0 0 24.77830088 0.00226972472 0 3.40793089e-09 0 0 0 0 0 0 0 1.243881921e-06 0 0 0 0 1265065.511 2.624815628e-23 0 1.161706379e-16 +0 7.955512522e-09 2.962817811e-20 3.496584173e-29 0 0 0 0 0 0 1.341048598e-16 0 9.576785494e-11 0 0 0 0 0 0 1.447266702e-12 0 0 3.911713948e-14 0 0 0 0 0 0 0 0 1.524653154e-07 75.27434456 0 1.49310205e-14 0 8387.862002 0 0 3.670958856e-10 6.136825077e-08 0 0 0 0 3471.660234 0 0 0 0 0.1150509777 0.0007480083814 0 1554.390959 0 7.698346049e-16 1.504531959e-17 0 0 0 27.37973433 6386.481098 6.916329231 0 2.855266037e-08 0 3.96425001e-07 0 0.0005877865946 2.486956555e-17 0 3.192966398e-17 0 0 0 0.001256820963 0 0 2.451198179e-08 3.890580906e-05 317837.3577 0 3.434943139e-13 0.0006966739759 0 0 0 0.007436166208 6.728304851e-17 0 0 0 0 2.757925355e-08 1.016465911e-17 0 18959.95556 6.911850723e-06 1.165207545 0.4512175892 0 0 0 0 1.059427704e-05 1.271170621e-08 1.912399086e-11 0 0.003535294513 0 2890.212929 0 0 0 0 349.6159749 0 0 0 0 0 5.528260825e-09 1609.108379 0.2935197126 4.92811699e-11 167.1850301 0 3.778235463e-10 0.046552619 0 0 0 0 2.675639187e-11 0 0 5805012.886 0.003548823042 0 0 0 2.528647793e-05 0.03968538288 0 0.4667785009 6.908465945e-15 0 0 9.494220827e-09 7.000012923e-07 0 3.23627296e-21 0 0 0.1854263862 0 1.218555909e-08 0 0 0 0 0 0 0 0 0 1.64792469e-12 0 186727.3711 51174.31952 1.067874968e-12 5.16737726e-11 0 0.3871513086 0 436.4294917 0.002524129969 0 0 0 0 4.249772132 0 3.176161579 6.602737772e-13 0 0 0 3.152650924e-05 16978.41546 1.259484781e-19 3.347377254e-18 0.007343345768 0.03309399967 1.504720651e-09 0 1.964900468e-09 28629.81887 1.054176888e-10 1.031823823 0 8.549015189e-06 0 3.021440154e-15 0 4.496818618e-12 1191257.599 9.496946456e-05 0 0 632691.3027 0 584671.7259 0 0 0 0 0 0 647612.6467 0.00390984613 0 0 0 0 0 39991.84254 0 0 1.591903184e-07 0 0 0 0 0 0 51121.58153 0 0 0 1695.336357 0 2.730634233 0 0.002098286457 0 53.01233863 0.0002522212192 0 0 1.823457407e-06 0 0.06996000613 0 0 0 0.0001203065258 0 0 2.967869527e-21 0 0 0 55.44244899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.076989699e-18 0 6.020123651e-23 0 0 0 0 0 0 0 0 0 0 0 196331.0546 0 480.6720922 4.993280234e-13 0 0 0 1.610427064 +0 0 6.653390119e-13 0 0 2.575720092e-11 0 0 1286781.446 429710.9323 0.002681682905 0 0 0.01205848712 4047.445763 0 10072.13986 0 0 1.204893248e-08 0 0 53.58624958 0 0 0 0.0008119757425 18004.61153 0 0 0 6.624889966e-12 0 0 1.599946671 0 0 2.156165899e-09 0 0 0 0 0 0 0 1.03989708e-06 1.212180954e-12 0 4.705492848e-11 0 0 4899.84641 2.751511069e-08 1.173593906e-08 0 0 0 0 3.893277103e-10 0 5.099975203e-17 0 9.296911332e-19 0 0 0 1.629208066e-10 2977.833674 1.834492377e-14 227.1663607 0.002191011997 0 0 0 0 1.286589308e-33 1.403700082e-13 2.330024319e-12 5.752815711e-05 0 1096452.136 0 0 0 0 164.9641685 0 7.133506515e-14 2304750.242 0.0002253548723 0.0003250838231 2374.888746 2.99055091e-07 0.004357006414 0.000329352545 305037.8949 0 0 0 0 0.3001726427 0.04431726881 0 8.879537346e-08 0 247668.6408 0 0.307254338 0 1.217602629e-10 0 0 2.174575014e-06 2.964273219e-12 471.9809623 0 0 1.753750168e-22 0 6.121681176e-11 0 0 0 2.654691421e-20 0 0 221161.1488 0 59734.34082 0 7889.855035 0 0 0 1323986.248 1.700016816e-05 1.920385539e-15 205520.0016 0 0 5.172681163e-41 5.138103917e-08 0.0005890001828 0 102589.569 1.433572186e-09 0 0 1.488820575e-10 0 0 0 23.5336261 0 6.410484698e-22 45607.22619 1.190339484e-06 0.01534818569 0 0.01319497235 1.616819298e-16 0 340.096103 5.718217073e-22 0 0 0 0 0 0 0 0 320.8092211 0 4.91420465e-06 0 0 834378.7364 0 0 0.004693565024 6.456680111e-09 0 4.377288714e-16 0 0 7.090225941e-09 0.002826315302 0 730623.022 0 0.0007448090281 0 2.697584515e-07 8579.38841 3.942533731 8.35263416e-15 0 1153.069384 97.94417531 0.02069553242 9.50968057 2.588043537e-17 8.65983928e-12 0.2813616169 0 0 0 0.01086947889 9.910499925 11.00156484 9.782823615 0.0007279903565 7.363008472e-05 0 0.002153116296 0.1012588579 7.835884198e-05 0 0 5.308736732e-08 0 0 0.2048931978 2.889313669e-09 0 0 0 0 0 0 0 0 0 4340996.092 0 0 0 0 0 1.457472004e-06 0 3.432171106 0 4627.388161 12972.6931 0 7.53419054e-17 0 134045.3835 0 36.18290695 0 7.812041493e-07 0 0 0.005975601644 0 0 0 2.655136146e-05 0 285430.1995 0 0 3.332063616e-13 0 0 843.6534723 0 0 11.20553352 0 0 0 0 30097.17241 0 3.488658364e-08 22.73467388 0 0.04121480579 0 0 2.830327516e-10 0 1.337054514e-11 0 0 0 5.884227908e-06 0 0 0 0 0 0 0 0.0744769716 0 +0 827247.3202 0 0 6.430606034 7.21411751e-11 1251220.766 182457.7576 2.375077217e-06 0 2.340790258e-13 0 0 7.382128532e-09 0 0 0 1.580869569e-06 0 0 0 8662.151126 1.452470529e-05 0 0 4.157002266e-12 3.121558039e-13 9.866193355e-15 0 0 0 0 0 10.54664803 0 7.912678547e-26 0 0 0 0 8.203793028e-09 0 0 0 0 0 2.184092593e-23 0.0006984713024 3.057660874e-14 0 0 0 0 0 0 0 5.765963716e-09 0 0 0 0 0 0 0 6.632749211e-13 0 0.04218963529 3.581099778 0.0003820255068 0 0 14.75500852 0 0 6.471362663e-09 0 0 6.633949014e-10 0 4.481712024 0 63456.00316 0 0 0 1.884034289e-15 0.002618654536 0 1.011449895e-22 0 0 0 102068.1979 0 0 0 0 0.0001111127808 207478.8513 0 5.542721971 0 1.504564579 0 0 0 5.232768146 0 0.9894498255 7.093408981e-12 10.13531932 0 114.4075019 0 0 0 0 0 0.0001788078602 0 5.83497515e-16 0 120.4144413 0 5.624628261 0.0002052586534 90.80424253 0.02353910474 6.189175457e-08 0 12234.45696 1.364581021e-09 0 1.792004172e-15 0 275018.2081 2.477338615e-06 0 0 0.02804822249 0.004486267335 3.881319651e-09 0 0 0 8.973006177e-08 5.512412101e-13 7.517911874e-07 0 1.726177972e-06 1.371596823e-08 400846.6433 0 0 0 0 0 4.227465133e-10 34061.63207 0.004908390777 1.164973999e-09 10420.3639 0 0 0 0 7.021749936e-19 225.8525225 4.269005142e-08 2.287746282e-05 1.244030536e-08 0 0 0 0 0 1088.374976 2642463.574 1.655625159e-15 0 0.01667657163 0 0 7.33445387e-10 0 857.7367484 31662.85952 0 0 0 0.06447786565 0 101.3560905 4.267343955e-17 2.026908265e-07 0 8.336864443e-07 0 1.988191834e-09 1.228390894e-10 0 4.31459105e-09 0 85.63700818 0 0 368897.3203 0 0 0 0 0 0 6.636994485e-10 0 5.052281716e-07 0 122059.8052 0 0 0 0 0 1.009567402e-11 9766.936217 0 0 0 0 0 0 1.694269356e-08 1.042057524e-22 0 0 14250.92849 0 0 2086.776606 4.57078125e-11 0 0 0 1.378336074e-14 2.406237668e-23 149523.4912 0 1.614226977e-13 0 0 0 0.05422654447 0 0 1.02030121e-09 0 0 0 0 0 0 1.255827008e-17 376296.502 0 0 0 0 0 0 0 1.679071134e-13 7.827310118e-07 0 0 0.1433438738 3.78887632e-09 0 4.856523363e-06 0 0 7.278994807 0 0 0 0.05637503238 0 0 0 0 0 0 4.008883624e-08 4.37756164e-07 0 3.83543369e-05 320635.5396 0 5.607276746e-07 0 18968.91233 +0 0.000177985768 20.92897964 0 0 0 0.05554857456 0 0 2.658826455e-07 0 3264.516998 0 0 4.748736889e-21 0 0 0 0 0 0 0 0 0 0.0007125273507 0 3.776984526e-08 0 455.8090322 0 0 0 0 5.191934246 314762.6012 6.034020505e-10 36343.89936 0 0 17218.29145 0 0 0 0 3.357183436e-13 0 0 0 0 0 0 0 0 0 0 1.65605964 47.28259073 0.0004932761337 2.14582266e-05 0.6321893574 1.564346184e-06 28.32408648 0 0 0 0 0 0 0.001160872059 0.006641158446 723273.806 1.81024634e-06 0 0 0 0.006614496432 0 1.510029581e-21 1159.229677 0 0 4.304523028e-11 0 0 0 320128.396 0 6.156537252e-17 1.039961675e-16 14.46279482 1.530140915e-17 3.044771193e-08 6.317546152e-10 19029.48268 2.266796844e-05 0 0.0004966945545 37393.07703 0 0 0 6.868779604e-09 1833.999707 3.254608414e-07 3.347297868e-10 6.195166982e-19 4.350449469e-17 0 0 0 0 0 1.164676488e-19 1.056000387e-08 0 0 1.172314298e-10 0 3.519476948e-13 1.346984865e-06 5.010606095e-11 0 164.1086418 0 3.147070564e-12 18740.9502 0 0 2.493045745e-12 0 0 0 0 0 0 0 6.756247953e-28 0 370156.5627 0 7205.422422 0 0 5.854347825e-14 0 4.89922913e-08 3.510351084e-17 5.269104197e-09 37100.29635 0 7.313875447e-05 0 0.06979265493 1463932.652 0 8.640405096e-08 4.998893412e-12 7.477251369e-17 7.681832187e-13 0 5.693039292e-18 43079.87311 0.2472598452 0.0262497275 0 0 0.1053651916 0 7.603884522e-19 0 0 0 9.21898641e-10 1.857653086e-08 6.28067167e-11 0 0.05057349592 0 0 2.052754913 7.944250467e-07 0.00079677308 0 1.285257812e-05 0 8.019425473e-10 0 0.469787637 2.820100675e-11 4.512578098e-07 3.371061581e-14 0.0005661485679 7.369651815e-09 0 0 2.687043752e-19 0 0 26539.56403 0 3.967214661e-20 194354.9046 0.00665338929 0 0 0 0 17228.23663 193.9776092 0.4166404336 0 0 0 0 0 0 0 0 5.669920942e-12 0 0 0 0 0 0 0 0 11.30406692 333504.9639 0 0 0 1.605305559e-05 0 0 0 172239.0279 1646022.12 0 0 88977.32496 0 0 0 0 0 0 0 0 4.285920075e-10 0 0 0 0 0 0 0 0 3.050413437e-11 2875.658927 0 0.1786740895 0 0 0.001242602168 0 0 2.796133128e-19 0 6.811356691e-13 0 0 0 0 0 4.939630439e-26 8.593127709e-09 0 9.07496147e-12 0 0 0 0 0 0 0 0 0 0 2.598643057e-11 0 140016.4693 0 0 0.001180709249 0 0.704068612 0 0 2.213110648e-13 +0 1.663842767e-07 0 0 0 0 0 0 0 0 0 0 0 155731.7922 0.2465780482 0 0 0 0 0 0 0.006635837834 0 7.449963857e-20 0 178397.4169 0 0 0 0 0 0 0 398271.8692 0 0 0 0 0 0 0.07969060327 6.004597348e-06 0 0 0 0.1584719303 0 0 0 0 146.5308743 0 0 3.65978471e-06 0 6.143600909e-28 1946788.816 0 0 6332.23238 0 0 0.0008685311726 0.001144531463 0 0 0 0 838.6606729 3.989293135e-08 1.785516075e-14 0 47913.43625 0 3.604314792e-05 0.0003594638639 5.700000463 339.005662 61025.74922 0 7.173395428e-14 0 0 0 2.513586339e-05 0 73.44242336 2.56564231e-13 2.567884881e-08 0 2.736780814e-10 1.335123448e-17 0 0 1.394451167e-15 0 0 0 1.802926119e-13 0 331.8998749 0 0 17121.23799 3.343280628e-05 0 0 0.1695905579 3.320485858e-24 0 37.62719584 1.57011203e-07 8.138525268e-06 0.7781065149 0 0 99119.06771 0.0003180381351 0 0 0 1.160066128e-08 0 6726.522983 2.159809668e-24 4.423559182e-10 0 3.511123029e-10 0 1.908426272e-26 0 2.335720191e-11 2.222685845e-07 0 1.220236954e-06 2.449564242e-14 9.498814639e-08 0 0 0 0 0.1793654315 4.694797334e-11 9.736356165e-15 8.20600906e-14 1.191048285e-19 24046.97548 0 0 0 0.0003974564802 8.24376042e-11 455670.3217 0 22.97650339 4.252995653e-16 3.897863886 0 0 2.637626569e-05 5.486063956 3.874015789e-08 0.01635092944 8.901941293e-08 1.58381882e-05 0 0 0 0 1521.660854 0 4227.26653 0 0 0 4.172087068e-11 0 4.394609461e-37 0 5.963005663e-15 0 4.735065358e-28 6.683906493e-10 9.185553674e-08 0 1563750.03 0 0 2.412794121e-17 0 314327.2179 0 0 0 0 0 0.891850745 1856588.206 3.261048039e-12 0.7766787433 0 0.002726100004 364.1966746 151292.299 0 87.00711815 372159.5712 84160.39463 0 83944.04191 0 0 0 34642.09647 2.319769884e-09 0 0 0 0.4522275615 0 0.6546748458 0 0 0 0.0001477028625 7.337925339e-20 0 0 0 0 0 0 554490.1541 0 0.00294391853 0 0 0.5073487984 0 0 0 0 0 0 0 0 0 0 1.688162183e-20 0 0 0 0 1.260964791e-19 0 0 0 0 0 1.080886095e-07 0 20380.78656 0 1.844962655e-11 0.004618446378 0 0 0 0 0 0 0 0 546360.5028 0 0 0 0 0.1917808607 0.05010692466 99395.44332 0 0 0 0.0692587202 0 0 5.624880934e-16 0 0 0 3.263229673e-07 0 0 0 0 0 0 0.0003818383861 0 +0 3.655112244e-17 0 0.02447199303 0 0 0.0166557594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.541841022e-06 0 0 0 2.62252842e-10 0 3.579243897e-18 0.942713824 0 0 0 0 0 0 0 0 0 0 0 0 0 1.548458804e-18 0 0 5.017839793e-16 0 3.028546792e-09 0 7.864113994e-19 0 0 0 3.974047315e-15 8.352880548e-06 0 0 0 0 0 0 0 0 0.0006618713982 0 0 0 2.990648881e-11 0.0007510171243 2.489991741e-07 0 0 0 1.61171886e-05 5.833859464e-15 1.955020413e-06 0 0 0 0 1.746112353e-08 0 0 1.089756359e-12 0.0001466035617 3.821326503e-16 64380.69156 1.825192552e-09 0 2.292928736e-11 0 41691.56338 0 9.016771899e-05 0 0 0 730616.5992 1.075013233 0 1115149.852 0 3.966000032e-06 0.001764433197 2.881335687e-05 0 0 135.3821843 3.828492227e-23 3.253510378e-15 63583.40975 0 4.118551107e-21 0 0 0 2.015551203e-16 605231.0764 4.879885045e-14 262.2625549 0 8.662914581e-17 3.991826818e-18 0.0009275343533 1091643.374 0 0.003081046792 0 1.13545854e-10 7608.258023 0.0004832247982 0 0 0 0 0 8.173323994e-17 0 4842.923091 0 0 0.001819141879 0 0 0 9.078952927e-13 0 0 0.0007469542886 0 0.0002377023426 3.909291233e-05 1.01726989e-07 0.01582648974 4235978.559 0 40.0898202 0 0 0 0.00123486659 887.8087531 0 0 0 181097.9514 0.06451665018 4.828085063e-09 86.53797402 0.0005470841653 0 0 9.631771421e-07 4.47791515e-17 0 3.86420668 0 172246.4954 0 0 9.50117249 4.382695214e-07 1.14539943e-09 9.516876135e-05 2.893230466e-09 0 0 0.5608502516 0.001573802011 2.752001332e-09 0 0 0 8.251675036 1.315926098e-07 0.01855377557 9.964331975e-06 0 0.001142249035 0 0 0 0 5.285158439e-11 0 0.3577358813 1.3287312e-08 2.643674351e-05 0 0 1.148007688e-06 3.330156476e-06 8.418800439e-16 0 0 1.374055172e-10 0 0 1.685189338e-09 1.18523006e-10 0 0 21310.81619 3.899725314e-26 2.109595448e-07 0 1.116418103e-07 9.676610134e-14 0 0 2.161353113e-07 0 0 818031.8664 0 1287.076722 0 0 0 0 0 0.004578635956 0.04270683228 5.225127879e-16 0 0 0 0 0 0 0 0 0 0 0 0 621972.5572 0 0 0.1527074803 0 0 0 0 1321345.464 0 0 0 3.000240755e-07 2.518611019e-19 0 1.481001779e-10 0 4.071943343e-10 0 0 5.954715441e-22 3.798994428e-07 0 0 2.018205581e-19 0 0 2008.44807 2.527640486e-09 0 0 0 13.21265033 0 0 0 0 0 0.2752669265 0 1.547970689e-11 0 0 3.217854016e-07 +1.495979736e-05 0 0 0 0 1.173380276e-11 0 0 0 0 0 0 0 5.583162698e-09 0 0 0 0 0 0 0 0 0 0.2855303083 0 0 13586.65835 0 0 893.3977309 0 0 1.996692784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009227260181 0 0 0 9.398532046e-14 0 3.557357177e-08 0 0 0 0 16.39383143 0 0 0 0 0 72.09151185 0 1.890595494e-12 0 0 0 0 0 275.6228847 0 0.0003656632916 43978.26427 0 0 0 3.514536524e-12 2.982219986e-10 1.362250474 0 5.815329492e-12 17805.10189 0.2961191189 0 3.053366563e-13 32.73260249 0 0 0 2.76351797e-08 3.661141123e-08 0.0004124071337 0 0 0.0001148135493 0.0009959778899 0 0 0 0 0 0 0 210466.2709 0 0 0 0.528693915 0.276909362 0.0007643131733 1.196249492e-05 0 0 0.07789351423 0 0 0 0 0 0 2.334804715e-09 0 0 0 0.09372466557 0 1.018416651 107.3743603 0 359.0108474 62.68743733 2.081736505e-26 0 0 0 0 0 2.859183253e-07 4.014629881e-13 0 8.675759411e-16 2.587317299e-07 0 0 0 8.151503816e-05 134345.1925 2.556012941e-15 0 18.43281771 0 0 0 3.933973633e-05 4.157848083e-19 0 1.865664158e-14 1252.197813 0 1.784242915e-12 1.441489428e-06 0.0001629778975 0 14905.9198 0 0 0 0 0 9625.06758 0 0 1.221616842e-05 2.555620147e-16 0 0 0.03859919577 0 294.5045487 0 153723.9741 0 0 1.048650242 8.254630111e-10 0 9.515070792e-05 0 0 6.131887697e-24 9.745043198e-15 0 0 0 426.6376796 0 17.82560072 0 0 1383055.51 0 2.57308742e-14 0 23685.44172 13.73690645 0 0 1.722549236e-08 0 4.425344337e-20 0 248.2691393 0 8.365572952e-05 1.637869153e-12 0 0 0 3.196959412e-12 5.287353517e-13 0 0 0.000292224604 0 0 0 6.069926366e-07 0 0 0 976578.8772 0 0 0 0 0 0.004256413453 0 0 0 0 1.725782879 0 5.112722524e-13 0.2071641998 2.446972924e-18 0 0 0 0 3.669701543e-07 0 37093.85462 0 0 0 4.36261405e-06 0 0 847391.9616 0 0 0 0 0 0 0 39389.08105 0 3.991310275e-10 0 0 0 0 1.078721787e-16 0 0 389464.7876 0 0.1128716494 1.033391284e-10 0 0 0 0 0 0 0 0 0 0 0 8.737649465e-09 0 0 +0 0 0.4435514896 4.209253657e-14 0 0 27923.70514 0 0 0 0 0 0 11362.2228 0 0 2.608890261e-06 0 0 0.01285295784 0 20813.45053 54752.01897 1.017520873e-12 0 0 0 2.680966069e-06 0.009215532764 0 0 0 1.425490127e-10 0 0 1.849225919e-12 5.131018612e-07 0 0 0.04838974284 0 0 0 528.4847096 4.006416251e-09 0 0 0 0 221.6165006 5194.134667 0.0871221883 0.0001766219812 202557.7481 0 5.207665359e-11 1.353748445e-05 2.493516531e-12 0 0 110168.9251 0 0.09363656664 0 0.1368856569 0 3.365642977e-15 2006667.179 0 0 113167.5006 0 1.474824914e-06 1.36341691e-09 0 149864.2501 0.01317336313 0.001674562779 0 824013.8015 0.0007589673411 0 1.71497516e-27 908.9264013 0 9.478473266e-26 0 0 7.246354905 7.453128235e-22 0 0 0 3.118062059e-40 0 2.085744276e-13 0 2955.000807 0 2077.659648 0 4659.317459 3.999777345e-05 0 3.906891407e-14 0 0 0 0.0002071241732 0.673787169 0 0 0.002213790638 12.74769018 1.393319682 3.823227168e-20 0 2.245087333e-11 0 5.047448575e-09 5.862390455e-05 2083830.076 3.493569542e-07 0 0 0 0.0005874091689 0 1.184852685e-06 2.62811929e-23 5669.404982 1.49079836e-20 3.237594156e-06 10.7079561 24586.27945 3.177773654e-13 4.948301697e-07 0.3836575039 2.707063333e-09 0 2.896355141 0 0 12057.87228 3.866627536e-11 1.312762498 44.33160801 0 2.288435765e-14 0 7.800929492e-05 6.593308201e-08 4469.446883 0.2033906915 1.605588407e-06 0 60310.5462 0 1.679604135e-08 0 0 0 0 6428.338302 0.002011759859 4.512847817e-17 0 0 0 474.0963491 86693.64264 0 7.235312788e-17 0 3.409634972e-12 2219.337798 0 0 0 3.221857607e-13 0 0 744.5490253 159.6086303 0 2.571449793e-11 4.304201468e-22 0 0 6.259399084e-26 4.471662431e-15 1.968582579 0 1168998.633 31.91726602 0 2.654302288e-14 4.706706232e-09 62653.31339 2.245904882e-20 0.003410591376 1.523322075e-13 0 1.110404078e-22 0 0.0001324211782 1.995554618e-10 0 0 0.1820004246 0 0 9.146608732e-05 2.958419766e-07 2.595957213e-06 0 0 0 0 0 0 20.61278774 0 0 0 0 0 0 0 67.80491037 0 0 0 0 0.0711190836 0 0 0 415573.0465 0 1.064742702e-17 0 0.0478425907 0 6.889725214e-11 0 0 0 0 0.0006779560587 0 0 0 55292.36559 9.174095009e-14 0 0.06477741601 2.391153043 0 0 0.0009243640595 0 127900.1419 7.396706786e-05 28512.74576 0 3.053492965 0 0 0 0 0 0.01216528087 0 0 382622.3671 0 0 0 0 0 0 0 254011.2163 0 0 0 0 0 0 0 2.721831374e-07 0 0 0 0 3.139335204e-16 0 0 0 +0 0 0 2.023797018e-10 0 0 0 0 0 0 0 0 0 1.563026229e-16 0 1.206191211e-14 979582.0318 0 9.825500591 1.758556214e-07 0 0 0 726.816865 0 0 4.817489355e-21 0 4.745736428e-14 0 0 1.595355998e-12 0 0 0 8.397032408e-11 0 0 7.936399419e-07 0 0 0.4004183893 200.1174831 3.611246906e-14 7828.897892 0 322484.1838 5.148624222 0 0 0 0.0002729205815 0 0.003648216372 0 0 0 1.320163368e-11 0 0 0 5480.876741 0 0 2.929106482e-09 0 0 0 0 2.671405941e-15 0 3.147588046e-30 0 0 0.001755910476 0 0 0 0 0 0 0 766515.707 0 0 0 214.3685454 34382.14371 0 0 0 2.840283504e-09 1.541495637e-15 1.471547324e-05 0 3.291651806e-17 0.2367194163 1.467385291e-10 1.027086551e-13 0 6.964131132e-10 0 0 845.9977028 0 46.81774326 0 0 0 13222.54433 0 0 1.485070068e-16 12747.11938 4.083186282e-16 1.023130409e-14 2.728444283e-17 0 0 0 0.1949814171 1602928.283 0 0 0 1.090208277e-11 0 0.4018768581 3.955980442e-12 1.192206403e-23 0 0 0 5.395550462e-19 9.080823167e-15 4.670487582e-11 8.627747969e-05 2.348614972e-09 0.1713930737 0 6.221559124e-09 0.3779038317 0 10787.27656 0 123.5298685 2.809266469e-23 0 34.16074977 0 0 8.786838388e-10 8.609014113e-10 1.027318462e-13 1.975224155e-05 0 0 0 0.0001759583217 0 0.00554616405 0 0 3132.802864 3.972560028e-13 1.2201703e-11 0 0 0 2.17991611e-10 1.370675016e-17 115289.3226 3660806.147 1.933369288e-11 0 4.013183394e-11 1.781293722e-12 0 0 0 3.420458862e-08 4.159701405e-06 1.322756937e-10 8.125871166e-18 0 0 2.344394263e-07 0 0 0 1.577308125e-18 5.094386178e-05 0 38631.16749 0 1845051.742 3.675055844e-05 0 0 5.508916263e-25 0 480494.7543 6.037260865e-07 0 1678.312454 0 0 0.03121885065 3.350963584e-07 0.2190354606 0 0 0 0 6.377101669 6.127429221e-21 0.1677610977 0 14.84042053 0 7.393284665e-11 0 0.0001577091343 5.868978518e-06 0 0 0 0 0 0 0 12978.45287 0 0 0 5.687788988e-21 2.376107011e-05 0 0 0 7.539712932e-06 0 0 2.343222557e-12 4.05313877e-24 0 0 0 1.038502556e-06 7.522854292e-16 0 0 0 343396.5649 0 171379.6583 0 0 1.159646455e-26 1.081532045e-07 1.021969484e-10 3.531935588e-19 0 0 8.801501322e-27 0 4.339329162e-18 0 1.044304162e-12 0 0 0 0 0 4.057581521e-10 0 2.305993143e-06 4.397981129e-09 0 0 0 0 0 0 0 88531.6879 0 0 0 0 0 0 0 2970.868652 0 1.675418058e-09 5.469192322e-15 0 0 0 +0 0 0 0.08171927695 0 0 0 2694.438038 0 0 916.9923313 2.363378391e-17 0 0 0 0 0 16090.45442 0.2385301403 0 0 0 0 0 0 0 1.96702001e-06 0 0 0 23.6034949 0 0 0 0 0 7352.899352 0 0.002591851964 0 0 0 0 0 0 26622.2388 0 0 0 0 8.193112243e-07 9.037576055 0 0 784656.0361 0 0.1103727326 0 0 0 0 0 534595.2709 0 2.317243069e-08 66.79067042 0 0.01177443839 1.658866109e-19 0 0 0 1.258333979e-10 0 0 0 0 2594.171297 16325.83418 0 0 2.983635832e-17 0 0.0001548366571 3.286650238e-07 0.002130940087 1.054665625e-11 1.666121757e-11 0 2.193973091e-08 4.322962739e-09 1.925831783e-18 53.80563808 0 0 2863.491183 0 2.706794966e-07 2.122254146e-06 0 0 2.610325885e-14 509.2845046 0 0 0.002123206778 0 0 0 4.182731858e-07 52.86013039 0.009409538667 0.03903920287 0 0 0 6.042586868e-11 0 26.58790414 9.511875399e-16 1.921672674e-18 1168.320398 0 2.368956542e-14 1231.672138 0.0009305236792 0 1.708830156e-16 2.89660741e-16 1.682436305 3.874075927e-05 5.276359612e-14 15743.53909 0 0.0002956878144 1.742523503e-23 0 0 2.758980865e-05 4.689417685e-10 0 1.084285116e-13 8.659492633e-23 2.362246196e-08 0 1.202297667e-10 0 0 1.524204747e-05 2.522793481 0 1.961326603e-15 0 0 1.007983192e-07 3986.680221 0 0.0006416045718 0 8.487551735e-21 0 0 0 0 2.036883261e-15 34.79582084 0 0 73.73643276 2.521793138e-08 0.04064445993 0 0 0 1.913232887e-14 0.2413694997 2.245585266e-17 1.533894843e-14 1.03207519e-12 2.644913175e-32 0.7530211022 9.15555205e-07 8.79435537e-08 0.03916308734 0 0 1.062225785e-13 5.825179895 0 9.457591764e-05 0 0 0.0009307429686 1.808607045e-08 0 0 0 1.030194171 0 1719.765357 0 5.07672545e-11 0 0 1.25358393 321645.4488 0 0 0 0 0 0 8.960661668 7.228699805e-11 498.7398007 5036.633701 0 0 174.8137305 484579.5419 1.359669913e-08 0 0 0 0 0 0 0.7533410723 0 1.035264794e-12 0 0.008355596842 0 0 2.49106026e-06 0 0 0 0 0 0 0 8.953468394 0 0 0 0.01608787614 0.02013093074 0 1.272339952e-08 5.466810116e-08 0 0 0 0 0 0 0 0 0 0 0.004522890082 1.738831764e-28 0 85.71995927 0 0 0 0 0 0 0 0 0 0 0 0 0 4.350659677e-09 1.585795692e-09 0 0 0.0002162818847 0 0 1.763503865e-16 0.01906827336 0 0 0.0354651715 0 1915.181093 0 0 37.49778831 0 0 3.007971076e-18 0 0 +0 2.760944655e-22 0 15.89705747 0 0 0.0009493934708 0.1609091269 1.639016669e-07 0 1.831974864e-09 0 0 0 379.3811746 0 0 3.873532061e-12 2.517010762e-08 0 0 0 1.590689358 0 929838.9783 0.0479648847 0 0 0 0 0 3.356545005e-13 0.6993408576 0 3.000987743e-24 2.211154653e-08 0 0 0 455974.3298 0 0 1.696170837e-12 0 0.09196803564 1.636523463e-07 5.623913302e-41 0.560387391 0 0 8.828606833e-07 0 0 4.304104705e-13 0 6.033299186e-06 0 0 0 8.239452605e-15 1.3105251e-12 0 0 0 1.062864172e-09 5.396733945e-25 0 429032.0757 0 0 0 0 0 0 0 4.291257297e-26 2.005296766e-06 0 0 2.060260009e-13 7.745755879e-29 0 0 9.877414078e-31 2.669567651e-10 0 7.231478414e-07 0.01807040682 0 34.42818336 0 0 0 0 0 1.278227567e-06 3446.734832 293678.9637 5.17333501e-06 0 125462.0425 0 0 0 1.028918743e-05 1.019995255 0.005309814007 5.331239795e-05 0 0.1422897117 37.56620939 0 6.644849929e-19 0.05017902118 7.463447573e-12 1241328.167 0 0 0 0.0007067254569 1.156466757e-10 9.78518403e-05 0 1070554.148 0 1.178084273e-24 0 3791.477518 1.048570736e-07 0 4.176579427e-13 2.249000401e-20 0.5323284914 1.76545548e-17 105941.3763 0 0 0 6.76019542e-11 5.841758151e-19 0 226.5142164 0.002465373536 0 159613.6825 0 3.555397482e-24 0 0 0 1.258372972e-11 19353.64152 3.647060832e-12 9.994749464e-12 6.300800474e-18 0 0 0 0 4.468316422e-09 0.8286265174 0 0 1.14183648e-10 0 0 1.147650582e-08 1.10718307e-09 0 8068.143526 0 1.011146276e-14 0 0 0 18644.13955 2.000611913 0 0 3.691496319e-05 18.90993265 0 2.042975637 34190.63969 2.186911951e-32 0 0 0.01826500963 4.942899724e-16 103.2633899 0 22876.16036 0 1.146747204e-14 43760.63053 1.107259549e-19 0 0 0 2801262.052 3.589275003 0 0 0 0 2.559229094e-14 0.0003036507533 234517.55 0 0 3.43560333e-10 0 0 0 0 0 0 0.0292972357 0 0 0 0 0 0 0 2.714235263e-10 0 0 4684.354888 0 0 0 5855.692775 0 0 1.76654399e-17 0 0 0 0 0 0 0 0 1.319491745e-25 0 0 0 0 0.229229234 0 3183.128604 8.603477369e-13 0 0 0 0 0 0 0 0 1698502.225 0 0 0 1.925363629e-16 0 0.3970759545 979567.4027 0 0 0.2105771426 0 0 0.9199337701 0 0 4.32843107e-22 5.469360954e-16 0 0 0 2448127.811 0 0.2159525011 2.766512955e-12 0 0.007456658849 0 0 0 3.467921738e-14 0 5.831637029e-10 7.8838046e-16 0 0 0 0 1.103389859 +0 0 6.529738168e-07 0 1.356760105e-09 6.87473102e-18 0 0 0 5.194660702e-05 5.310987529e-08 0 0 0 48395.24179 235852.9988 0 0 0 6.791471391e-07 2.304740435e-11 0 0 0 31306.07178 0 1.720715615e-08 0 5.768992983e-10 0 0 0 3.11733632e-08 0 0 0 0 0 0 0 0 0 0 8.973461013e-16 1.530914498e-28 17544.98904 0 3.8803695e-17 0 0 0 6.312941753 0 0 0.001856740861 2.600477167e-09 7.280496023e-14 0 0 0 321841.3819 0 0 0 0 0 0 0 0 0 0 0 0 19380.90362 0 0 0 0.001776500117 0.001965584999 0 0 1.420857127e-07 7.630545808e-19 0 5.491373773e-10 0 0 0.06114184426 3447.443586 0 0 0 0 7.448923994e-05 1679965.053 221.1831256 2.093485325e-09 0 3.949371791e-25 1.319560157e-26 0 3.002199414e-10 0 0 2.954177036e-08 0 0 95454.47815 1.021740708 0 0 0 1.682770865e-15 0 0 0 6.744621817e-20 0 3.263920112e-09 0 0.7478373132 0 0 131152.8476 112256.3841 8.143989244e-06 1.526153622e-07 0 9204.692318 4.788331348e-07 4.417509785e-13 0.005759823909 0 9.532238838e-12 0 127.1275702 0 0.5342639308 6007.923258 147.3191699 0 0 0 0 0 1.228574065e-08 6.692771768e-12 0 0 0 0 0 0 0 0 87542.13976 0 4.238874356e-15 69195.97676 0 0 1.215074805e-23 0 8.875632887e-05 0 0 1.000566342e-12 0.004516186457 0 336573.1204 6.816521467e-11 0.0003576162715 5.864626064e-14 0 1.236091093e-12 0 0 1337053.691 0 0 7.291613878e-10 0 4833.318187 0 9.722844463e-18 0 2.893467485e-24 0 4.452166568e-15 5.750336854e-10 534034.1132 0 0.3117622769 4.579575e-10 0 9.712877252e-08 0 0 0 0 0 0 1.739817608e-06 0 5.029001399e-09 0 12620.56976 0 0 0 4.536210358e-08 0.2784551399 0 8.788030402e-05 0.000552444696 0 0 1.109031178e-05 0 0 0 0 0 84393.59224 7.860997721e-07 0 2.19639803e-21 0 0 7.654887915e-11 0 0 0 0 0 0 0 0.03055130212 0 0 0 0 0 0 0 0 0 2.560066879e-05 0 447571.167 0 0 172.0620759 0.0969985631 8.012390541e-09 0 0 0 0 0 2995091.261 0 0 0 0 0.008472887558 3.39718101e-16 0.007740157092 0 0 0 0 7.378373576e-12 0 0.04555151571 0.0142518707 0 0 0 0 0 0 0 0 1.203345632e-16 0 0 0 0 0 0 0 0 0 0 1.882246422e-12 0 0 0 0 +0 7.4772115e-12 0 0 0 3.831028177e-13 680417.2477 175283.1057 0.1183198194 0 0.1821319689 0 0 0 0 0 22.92299994 0 0 0 0 1.428625852e-06 7.003343622e-08 0 4.203977138e-10 0 11902.77802 0 0 1.295679752e-16 0 2.246376355e-07 1.758202524e-13 0 2.495476087e-28 0 102247.9247 0 0 0 0 0 0 0 6.299583081e-08 0 0.01600301103 4.852482509e-13 0 0 6.450372545 0 0 0 0.005850679502 0 0 0 0 0 39.19469199 0 0 0 0 39.02984246 0 0 2.436119676e-08 0 1.658753888e-09 0 0.002516877266 101054.289 393.5068934 6907.047195 0 0.00220319194 0 0 0 0 6.250824435e-09 0 246907.7635 0 0 0 0.0002779084726 0.2989678625 0 0 2.393869523e-23 0 0 5.428010014e-05 6.166542218e-15 1.432003207 2.315673227e-12 0 0 0 8953.827031 0 0 1546.433131 0 5.868886419e-05 0 0 0 0 6.599770736e-10 2.271628924e-10 0 0 0 1.08247271e-06 0 0 3.248622877e-09 3.033060792e-11 0 0.04085717831 0.5876048593 0 0 0.0007051514104 79.86817573 291721.1647 0 0 0 5.381638413e-17 74300.126 2.095309635e-06 0 1.035108444e-10 2.886118189e-05 1750242.755 0 0 0.007122877978 1.317355083e-13 0 0 2.143242683e-10 53091.42736 0 7.071377699e-10 1186.904088 0 0 0 0 0 0 1226.40651 0 0 0 0.3095049886 5.262629734e-07 4824322.208 0 0 4.908075558e-11 2.917398138e-12 0 3.681476819e-06 4.874194604e-23 463314.9768 0 0 1.378742156e-11 0 0 3900.124044 0 3.639220037e-06 0.1291606729 0 732.1662122 6.34733574e-07 442.6643772 0 0 1.203479874e-13 2.491630516e-06 0 0 1.754807397e-11 255965.1814 0 0.0001022851796 5.524271892e-05 0.009384531516 0 417829.6263 0.00912183748 0 4.481531165e-13 72706.76536 0 0 0 8.008100408e-28 0.001336174144 0 0 0 0 6.037893392e-09 0 0 0 0 0 0 0 3.682963751e-10 0 0 0 0 6.50183958e-10 0 0 0 3327883.524 2.854092085e-22 0 0 2.188714325e-10 1.752499106e-05 98250.93099 165026.7495 0 0 0 0 6.091120608e-09 0 0 0 417.9561423 0 0 0 648196.4306 1.633894733e-15 0 7.137171675e-12 0 5.79616861e-08 0 0 0 0 0 3.325335807e-11 0 0 0 0 0 0 0 0 0 0 9.183770187e-12 0 0 0 0 0 15533.55873 0 1087.941106 2.897362189e-12 0.0002102886517 6.283072879e-05 1.047215103e-14 0.0006138649715 0 0.2887025771 0 85733.34779 7.071249678e-15 3.03794246e-13 0 0 0 0 0 0 0 0 0 +0 9.426894978e-11 0 0 0 0 0 0.002677516069 1.825856825e-13 0 171796.6318 0 0 0.04551897133 0 489782.8928 1.042694509e-12 0 0.002322496879 1333591.295 0 0 5.208029695e-07 0 0 3.557361046e-08 1323.381537 0 0 0 0 10.68932364 0 9.625319924e-09 0 0.008493422577 0.443018182 0 0 0 6.375213398e-07 0 0 5556.862818 0 0.0003572132263 0.002405594849 115.611808 0 0.0003510870453 10529.27129 0 0 0 0 0.0001809338272 0 692898.0766 0 314340.9432 3.397334635e-22 0 0 0.02433532119 8.088512054e-11 5638.664245 1846653.709 0 0 0 18.73809609 0 0.0006516195677 0.969969657 0 6.217817022 0 0 0.006147547147 1.426023275e-20 2.863983315e-19 0 0 24269.14598 0 0 0 0 3.786815889e-10 0 2.439847715e-05 60350.74888 7.636667577e-07 0 0 0.05281713357 0 0 0 2.948660835e-28 0.003201678357 189.8626188 0.0001316610703 0.0239293168 32889.68328 6.35565892e-07 7.714504234e-14 8.92697224 0.8093372838 0 0.0001024842471 0 0 7.896648125e-07 0.00793559534 0 0 6.46251442e-06 0 1.674621066e-07 0.05603987093 0 1.569069981e-12 1.793908106e-10 0 6.125127421e-05 1.035158957e-10 0 7.126106284e-09 0 0 0 230677.2652 1.17231011e-07 0 0 1.570219259e-05 995375.0432 0 2.729005256e-12 0 0 1.558604935e-32 0.0004534490425 0 4.391873315e-09 0 0 6117476.583 2.116273379e-10 8.173223503e-09 0 0 0 0 7.426669582e-06 2.118253931e-06 2.294938758e-07 33.89452783 0 0 0 534189.369 0 2463.82851 0 0 1.283277224e-14 2.754755971e-15 0.002663621088 0 2.003290752e-15 0 0 114560.3553 0 0 3.351890168e-22 0 0 51224.87607 1.306129967e-13 0 0 0 10.40059957 2.308983359e-11 8647.82875 23817.97715 0 0 1.019497732e-12 0.05067045557 0.08153570777 0 0 0 0 4.340035059e-09 1.735312384e-14 0 0 0 0 42.91238913 0 0 0 0 0 7.676218533e-08 4.7625132e-11 0 0 236.8767003 0.05039454849 2.240541767e-28 0 0 0 0 18.33025915 1.26152738e-17 1.514165769 0 0 0 3.299700583e-17 0 0 0 1.275565282e-05 0 2.286993917e-05 2.131646856e-17 0 0 0 0 3268.449163 0.08551083563 0.008762745049 0 0 0 0 0.2390122625 0 2274.919237 8.661175185e-16 0 0 0 0 0 0 0 0 0 0 8.655560286e-15 0 0 1.24568462e-06 6.692034971e-13 0 0 0 0 0.06488914621 0 0 0 3.781155975e-08 0 0 20571.73062 168.498375 0 21633.27032 0 3.504468335e-11 5.144668899e-12 970987.7338 0 0 0 1.877176119e-25 3.73095904e-14 0 1.922716174e-07 0 154700.2617 0 51069.97128 0 0 0 0 0 +0 0 9.66917113e-15 0 4.469657383e-12 3.426686239e-19 507.6562234 0 0 0 0 1.780812496 6.958473178e-05 0 0 0 7.073682656e-05 0.001086304834 1.492469286e-19 0 0 0 0 0 2.875961918e-20 3.308768946e-19 5.150684899e-09 0 0 0 9.459695078e-09 0 59.78097565 6128.725632 0 1.150024966e-07 0 0 0 0 0 0 0 0.0005516406541 1579.452021 9.900366159e-09 5.009599813e-08 0 0 0 0 4.22883332e-13 5.800931678e-10 1.665649332e-14 0 0 0.002512031221 0 0 1.078820634e-07 7.636607611e-07 0 0 0 0 0 2.75032659e-12 0 0 0 0 0 4.461802402e-12 0 0.0005118939458 0 0 906683.5172 0.7885433464 0 3.164348849e-11 0 0 67.95412534 8.329014597e-10 0 0 0 1.191493184e-10 0 2.754192405e-29 0 5.484256712e-10 0 166368.6697 0 0 0 0 0 130173.3424 0 0 0 1.032728927e-24 1.144114946e-14 0 2.868307719e-13 0 0 0 0 0 60.53376339 62277.20447 0 4.883281959e-15 0.01991984714 0 0 2.142272436e-08 0 0 2.833446535e-14 0 0.0008637488098 6607.279731 0 0 1.177413767 1372168.043 3.427608308e-07 0 0.1161082671 2.002975501e-16 250015.5504 8.68374354e-14 1.282897695e-28 0.0003831477754 0.00633625504 0 1.543539552e-13 0.000102675542 5.187919297e-15 9.227190988e-12 0 0.0005142870786 0.0001190748154 4.001319265e-12 1.018582619e-14 0 0 0 0.003263581229 0 0 0 0 2.825939028e-08 51750.90803 2.285704459e-13 4.771379417e-17 558.2303727 1.239862925e-27 0 0 0 1423746.3 0 2.505045396 0 1040236.574 0.1103156996 3.322600593e-08 0.0005773523133 0 0.001443623863 0 725031.2262 7.684617931e-13 0 5.735024611e-14 0.001257000357 0 2.686444977e-24 0 1.865744896e-08 2.594010706e-06 0 8228.94309 0.0005774413197 1903937.464 275257.0222 0 1.227550666 0.0003976269701 0 0 0 0 0.001783395315 0 2.122407841e-07 0 0 0 1.874204137e-14 3.092721847e-08 0 0 0.1468444836 2.144774132e-28 0 1203899.421 18715.91845 0 0 0 0 0 0 1.721801241e-05 0 15690.48793 0 32710.78773 0 9.381422006e-10 0 0 0 1.881439093e-10 0 0 0 6.252861736e-09 0 88705.22242 0 0 0 0 5.234652204e-18 0 0 2.615333935e-09 0 1.468926584e-11 2.213467778e-08 0 7.910932264e-16 8.075091527e-05 0 2.691442423e-13 0 6.497829159e-19 0 0 8.631576341e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.168469525e-31 133479.9436 0 1.582893661e-08 4.307767267e-08 0 0 9.964297902e-09 0 0 0 0 0 0 14921.76889 0 0 0 1.556059035e-26 0 0 0 0 1.902476263e-19 0 0 +0 0 0 0 481.703224 6.803607711e-29 0 0 91357.95075 0 0 0 7.601380937 0 0 0 0 0 0 0.2302191822 0 0 0 0 0 0 0 93.05759535 26.22017949 5.90061648e-10 716.1874989 1.691623499e-15 46083.48519 1.954825164e-10 0 0.001950694027 0 5.958596187e-14 1.960831561e-14 0 6.450780194e-15 474.9522719 2.249349264e-10 0 2.300415256e-07 0 1.319675495e-05 2.56093736e-05 2.264182544e-06 0 0 0 0 0 0 795477.9243 19585.51222 1.196730165e-09 0 0 0 0 0.003427298706 0 0 614193.263 0 0 28787.29553 6.968137731e-11 0.8503078081 2.701833954e-06 0 0 0.0002422063517 4.425094306e-15 0 0 2.201233388e-11 0 0 6.859607986e-13 0 1.441822916e-20 0 0 371.2435418 0.2170835967 0.0004083412489 3.048165766e-10 1.206679274e-06 0 714.798575 0 438.6348862 0 0 0.002828715948 1.13265156e-17 1.656816218e-20 0 1.464500434e-12 0 431677.254 2.753650528e-05 0 0 0.1262625751 0 4.288029436e-05 0 11.89898518 4.092568916e-09 219.7754194 0 0 4.794947621e-09 0 0 9.626565916e-07 2.450962656e-14 7.128779601e-11 0 9550.93683 0 0.6722490351 1.341529452e-16 651.2981708 0 0 0.0002831026631 6.178986801e-15 0.01118077645 0 1.27442784e-11 87.95529749 3.206182573 1.698953621e-09 0.002704013663 0 0 0 0.2001607256 0 1.809997884 1.115445832e-05 0 0.01559591903 46.51252615 0 0 43170.82407 0.001263648777 1.160974643e-24 1269662.273 0.2665805323 0 2399.462783 0 0.003749141526 86864.4883 0.02560289746 0 9.496042842e-05 739647.9476 0 129015.1286 0.7483055547 0 0 0 0 0 0.0017604358 0 0.004914255952 0 0 4.463848837e-09 0.01033952371 0 0 0 3386032.588 3.152016398e-25 2.402109246e-20 0.0003830663271 0 0.006151639129 0.4121126651 0 2.03388892e-05 0 0 1396.716674 0 18.01375749 0 0 11475.20344 1.419452303e-19 242413.1648 1.546695221e-09 182.9012833 0 0 0 0 0 0.1486299541 0 3.175209939 0 446134.4517 0 2.634672777e-10 1.331992342e-05 13043.65666 0 954843.1198 0 0 0.04764854151 0 1219046.767 0 8.112619875e-06 0 0 0 0 134111.1611 0 0 89148.13326 0 5.943992604e-07 4.806786072e-05 0 6.95941552e-20 7.848105168e-12 7.867823284e-06 784.8750063 0 0 0 0 0 0 0 0 0 3.346231545e-07 4375.879995 0 1.162102384e-23 0 0 0 0 0 1.650754e-09 1.073521257e-09 0 0 0.6782523342 0 0 0 0 0 0 7.049820569e-05 0 0 0 0 4.360116207e-07 2.97589339e-16 0 6196.764728 9.426572809e-12 0 0 0 2640.76111 0 0 0.001623338515 0 0 0 0 0 0.002246985408 7.600686598 2.377048707e-16 0.0116375362 0 0 +4800558.987 0 0 0 0 1.615637358e-11 0 0 0 0 0 0 1.466089549 5616177.898 3.013615851e-07 0 2.925897589e-24 4.997188123e-11 0 1.086602198e-10 0 2.561086726e-20 2661.197952 0 0 0 10042.77089 2.605828951e-17 0 0 0 426.1255232 23.30305218 0.02787497799 2.786259786e-19 0 0 0 0 0 0 0 0 0 0 0 9.262679844 0 0.2992053769 0 0 0 0 0 115537.5368 0 4.174908413e-10 4.979821017e-07 0 56.98515925 0 0 1.901238911e-10 0 0 0 0 0 0 0 0 0 1.711327476e-13 0.01345667926 0 1.397385711e-06 14384.47018 1.273676691e-29 0 0 0 0 0 0 0 0 626.0615745 0 0 0 0 1067309.474 0.02975410382 2.743343124e-12 2.009792185e-10 3912.84015 0 1.60685438 0 0 0.004658609563 0.1140118691 0 0 1.213992699e-06 0 0 0 2.163411542e-05 8.640361321e-15 0 0.007972626018 2447.472507 6814.136404 6.30242773e-09 0 0 1.000828155e-11 4.538963486e-13 3.48219626e-16 6.666647768e-11 0 1.079977249e-16 0 0 1.495850207e-15 0 0 3.038614695e-09 3.623637034e-14 0 0 5769.685411 0 0 0 0 0 7.105018904e-23 9.395990878e-14 5.944921383e-11 9.066616092e-07 0 7.880510909e-05 1.06063343e-09 2.206952563e-18 42.97895536 8.161313256e-05 0 0 822.9116941 3.941447142e-06 4.281264129e-22 1.684430321 5.075094149e-13 899491.8031 0 0 0 0 3.378318282e-10 0 0 2713.59987 545.0340321 0 8.738896803e-15 5.611632281e-19 0 1.728880781e-05 1885.552577 2.385266343e-19 0 0 84.32187246 84347.17528 5.93366448e-18 0 0.3828550373 0 403.4321502 0 0 0 36460.47797 0 0 0 69098.60872 41.62371368 2.414093115e-09 0 0.00610141858 0 334.2288795 0 0.0037035729 6.762656522 5411.467058 121753.2452 2986886.755 0 125286.7063 0 0.001458775122 2.885775857e-09 0 137515.7425 0 0.0006589745955 1.567904892e-05 6.611962259e-06 0.0001013363076 0 0 0 0 0 0 1275.267789 4.447429472e-13 0 0 6.472763215 0.0003867659796 0.02947748751 24.73964923 0 0 0 0 0 1.750454628e-06 0 0 0 0.004804911578 0 0 0 893.9659266 6.846695555e-15 0.004645450969 0 4.505033778e-09 0 0 0 2.948898545e-17 0 7.668561212 8.588127586e-06 1.48284222e-17 2.925721518e-06 745160.6084 0 1.51824798e-10 0 0 0 0 4.438750582e-11 0 1.175094281 0 0 0 0 0 3.498759478e-13 1.768875138e-11 0 0 4.963403813e-24 0 0 1.251986363e-09 1.888226807e-17 0 0 0 6.103977636e-09 0 0 0 0 1.956675654e-09 1.066059955e-12 0 0 1107271.374 0 0 0 0 0 0 0 2.448092587e-17 0 +0.004499301867 0 0 0 0 0 3.824272591e-23 0 0 0 0 0 0 0.02245084176 0 0 0 2.914208019e-21 0 0 8.878701342e-12 0 0 676.4419936 0 0 0 0 0 0 1.478348033e-07 1.638251585e-12 0 0 0 106609.5147 0 1.402986211e-06 0 0 0 71751.57296 0 0 0 0 5.066134427e-08 0.0896116188 0 31773.81193 0.5503448692 6.305451401e-06 6.784797403e-20 0.005704582637 0 0 8.045402452e-14 0 9.337189346e-11 0 0 5.416072504e-09 155153.156 0 2.724463541e-09 0 8.281021841e-10 0 0 0 0 0 0 6246.832711 0 1.114125456e-10 0 0.004135851214 0 2.610901572e-10 0 8019.834633 1.227341348e-14 4.23535955e-05 0.001072314275 0 0 0 21927.88813 6.204364781e-08 2028428.203 0 0 0 3.493292353e-05 0 14551.80043 0.09523204683 5.32477386e-21 3.292160188e-13 0 0 0 0 0 24198.23814 3.351089785e-07 430563.7837 3.73687257 0 3.014998546e-14 2.145858231e-12 0 0.0007402432007 2.814552767e-05 0.0005611138182 1.509316288e-20 0 11952.23492 0 0.0005501180921 4.568887859e-29 1.919093425e-18 773334.2586 548799.4012 0 2.364832574e-11 0 2.891184081e-14 3.289308946e-18 0 0 2.690339611e-14 0 0 0 0 4.883521889e-16 1.293235214e-18 9.767520328e-12 9.525121359e-09 16.89287981 7.202604572e-16 8.185708726e-09 2493.255947 0 2389505.328 0 0 1.44484114e-10 0 3.607138284e-11 8.052498201e-09 1.96860703e-15 0 0 2.245718061e-07 0 0 0 95051.3427 0 1.354859225 2.443095486 0 0.02997658214 8.902011903 6.98149625e-20 4.973875927e-05 0 45.0500145 0 79804.32033 0 0 0 0 0 1.617061141e-10 21119.06382 0 4.740182846e-06 0 0 0 0 0.2356951289 0.0002511487528 0 0 0 0.003727920561 0 7.118083453e-09 0 0 0.3883282208 0 0 2.391503664e-15 0 0 8.650469795e-12 0 1.416037416e-05 0 9.22676093e-14 0 11650.13939 0 0 0 0 0.0002786517396 0 0 0 0 0 6.219153231e-10 0 0 0 0 0.0001451170945 1620.356288 4.884031252e-09 3.657863123e-06 0 0 0 1.808750403e-06 0 0 8.541776661e-14 0 0 0 0 0 0 5.590680846e-13 0.04542132145 0 0 0 0 8.738850686e-09 0 0 0 0 82.30970566 0 0.009275987607 0 0 1.509369408 40.14977506 0 0 0.003356582347 0 0 0 2.137358419e-12 0 2678668.151 6.941828968e-05 0 4.97182435e-20 4853.453469 0 0 0 0 0 0 0 6.747635529e-07 4.515526384e-09 7.54890158e-16 129323.1333 0 2.258863782e-13 0 51.96719325 0 0 9.839671275e-18 0 0 48833.55888 0 0 0 0.01711919275 0 0 0 +0 0 0 1.017013879e-29 18804.946 0 0 3.154037382e-10 0 0 8.978908053e-11 0 0 0 0 0 4.269561809e-17 6.554943021e-19 0 0 0 0 0 0 0 46240.90031 1.165816991e-20 0 1.954080355e-11 0 0 0.02798312297 3.284997636e-13 0 0 0 0 3.464991131 0 0 0 0 2.723161827e-31 0 0.02843667275 0 0 3.594534096e-27 0 0 0 0 1450165.402 3.432947528e-10 5.669222426e-26 0 0.02050765486 0 0 823.308718 0 0 1.54063619e-07 0 0 0 1.215022821e-05 0 0.00343823466 0 0 0.0001176673368 0 7.974803164e-09 269110.8297 0 6.091126731e-13 3.663534183e-07 7.347128889e-08 0 1870473.294 5.243485032e-10 3.154235166e-11 2.578732402e-06 2.77703123e-14 391.1827567 1.011505264e-13 208681.6284 3.022776114e-11 0 0 71083.32138 40.06590901 0 1.592008316e-20 0.01780006712 3.674386025e-16 0 1.456987404 0.01533662958 0 6.127589067e-06 0.08202772825 3.707259455e-17 0.6420027053 4.9175999e-25 0 169814.4856 0 5.158854953e-06 0 0.03457551271 2.178041328e-20 0 0 0 6.995906528e-09 0.08456162304 0 3.588948538e-08 2.380233532e-10 0 0 0 7.654648741e-07 0 0 0 0 0 3.48304181e-17 0 0 2.850297668e-08 0 3.285643095e-09 4.447541877e-10 0 0 1353.856135 0 2.9278182e-19 0 0 7.682271899e-08 0.01354968615 1.101642973e-07 0 0 0 0.001262989429 0 0 2.084232013e-05 4.117781029e-31 0 2.463138083e-11 0 0.1372448052 0.0001304029208 4.493558868e-25 5.228468629e-20 0 6.200050777e-05 4.664696177e-11 66.30833499 7.835697393e-14 2.029232143e-15 0.02957231338 0.0004248552598 1.312710653e-11 1.280332011e-18 9.527087868e-15 445.816514 1.00706137e-08 0 0 0 0 7.898800203e-06 0.0002297260795 9.16754471e-11 0.0008740106855 4.614455862e-13 1.635207332e-12 0 3.453553479 9.323065079e-08 6.29224356 0 0 0 0 9566.628997 0 0 1.865499841e-08 0.002998142043 0 5.547362148e-19 0 2.785147143e-07 1.191055175e-11 422507.5862 0 3707.42601 0 0 0 26796.42087 6.352275831e-06 0 0 0.3398037224 0 0 0 0 2.032761646e-07 0 0 0 0 0 0 0 1.980848719e-11 2.754194511e-06 0 0 0 0 2.479404685e-13 0 0 0 0 0.0008801730604 0 0 0 26197.87624 0 0 0 0 2.792934669e-09 0 0 0 0 0 0 0 5624.120385 0.6288611778 7.473507917e-25 5.820289026e-10 0 0.0004784269555 2.227817675e-12 0 0 0 0 0 38447.0509 1028304.572 0 0 0 1.174406385 0 0 0 0 0 0 4.60941099e-21 0 0 0 0 0 0 0 0 0 0 0 0 3.534870648e-11 4.504946727e-19 0 3.893385902e-06 0 0.02059183058 0 0 0 +5.569568172e-16 0 2.245946656e-17 0 0 0 0 0.004287966577 7.437741027e-34 0 0 0 0 853.8101906 0 0 7.048571546e-12 0.0436793928 0 0 3.379075649e-07 0 1018342.771 0 0.0001159562302 0 1.198929004 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1931163475 1.568288662e-05 0 1.35135938e-15 3.004640186e-05 2.913236176e-06 0 203658.1953 0 0 1.271863424e-07 0 4104.047238 0 0 108590.1881 0 4205.572997 0 3.351942775e-21 0 0 0 0 0 0.0006692256796 0 0 0 3.834233974e-27 0 1883.998468 0 0 1.223636455e-18 0 0 1487.134978 0.02095374297 0 848395.3168 457647.1489 7.742446521e-09 0 2.566041626e-22 0 0 7.363762468e-10 8009.051257 18601.55791 4.383407099e-07 141.0022393 427.7415503 447462.5635 0 0.1344960588 0 0 9.155373335e-13 0.03195403379 0 0 0.07794640511 0 2.683487952e-09 0 856383.0636 38.67201361 0.00983264763 1.669062981e-08 0.0007199384864 4.074620434e-05 0 0 0 9.067686057e-08 0 0 1.17314293e-07 5534.518166 2.147192559e-10 4363.832599 0 10848.17339 0 0 1.087047599e-05 0 0 0 0.001391302191 0 0.001922819447 1.898060056e-12 2.780445729e-15 0 0 1.747821648e-17 0 5.476681346e-15 4.668121288e-10 0 0 0 0 0 0 0.09686440319 0 271.879956 3.08877396e-25 0 0 2.275186743e-15 0 0 0.09645441776 1.210933071e-08 0 0.01013937744 0 1.138622585e-07 0 0 0 0 16.27319318 5.275526805e-07 0 93316.51736 0 484563.8655 155.8505736 1.155289487e-10 0 1.739791002e-13 0 0 5.81145923e-07 0 0 3.034277258e-11 0 0.002056982949 0 0 5.684157648e-05 0 0 0 0 4.086248417e-07 3.796818927e-10 0 790.9211487 0 6.500624633e-14 0 0 2.944232246e-09 0 1095.642794 1.462965881e-16 0 0 0 0 1.367482773e-17 0 0 5.017558859e-05 12.37899458 0 0 0.001655086109 1.029496095 135.0157233 6.808760105e-06 0 0 9.681787825e-05 4.899543443e-05 0.01767116176 0 1.144052696e-10 0 1.746273885e-09 0 0 2.832638509 4232837.475 2241.98692 6.280280979e-18 702.9092195 1.084517359e-09 1.169388389e-10 0 4.477314442e-13 0 0 0.007599095786 0 35158.9483 0 0 1.676253304e-07 0 212.4358147 0 0 3.82385734e-08 0 0 0 0 0 0 0 6.645512441e-12 0 0 7.85697259 2.358219504e-14 0 0 0 29177.7058 0 0 0 8.412915811e-08 0 0 7.404608575e-14 6.42377638e-06 0 0 0 0 3.337250377e-05 0.01692870951 357.4247696 7.62980732e-12 0 0 0 337523.6129 2.499520732 4.9461452e-14 0 0 0 0 0 0 97903.11637 +0 5.992735001e-13 0 0 0 1.024821501e-08 0 0 0 0 0 0 25681.91097 0 0 0 0 0 1.518700037e-12 0 0 0 0 0 1.209752244e-13 0 0 0 8.609954441e-08 0 0 48.1863162 0 7.668451986e-15 0 0 0 0 3.491604891e-05 5.94578498e-11 6.264606845e-06 0 0 4670.121982 0 0 0 31219.64295 0 0 0 0 0 1.123146727e-08 0 0 0 3.053438241e-15 0 6.514281161e-12 35.53866216 1.310977766e-07 1404.546663 0 0 0 0 0 7.636375106e-08 0 0 5.872885958e-09 1.182359454e-05 2.052661758e-08 0 1.515315063e-13 7.662332519e-28 0 0 0 0 0 0 0 5.093042969e-16 1.16587745e-09 429.5997461 0 9.517752641e-08 2063.775038 6.739951028e-13 11659.27871 0 0 9.496435389e-15 0 0 9.203879887e-08 476785.4861 0 0 0 800.5631594 0.3027329891 0.001753186394 1.28561547e-08 3.350308836e-05 0 1.975311526e-10 10764.63203 0 0 0 0 0 0 122.9062386 0 203.680824 0 195.1680051 0 0 0 507.3080423 0 3.821502862e-06 2.688278646e-11 0 0 0 219749.3955 0 1.078423717e-16 7.69439795e-07 5.854329209e-20 0 0 0 1.425467905e-24 0 0.01698984597 0 547920.315 0.0864382935 41.04596426 0 5.211583832e-11 0.004734337164 0 1.397615596e-11 0 0 4.117500781e-10 0 0 248.0076265 0 5.016422717e-05 0 0.4131802408 0 0 0 0 1.170589907e-14 0 0 885738.5918 2.372634888e-08 248572.1298 131350.3945 0 8.378376405e-10 1.409412418e-15 0 0 0.003896831484 5.736240236e-06 0 0 0.0464745598 0.0002990965365 1169.117243 0 5.765675844e-14 2.794129814e-06 1.703198868e-05 0 515.6670851 150004.7306 1.571865386e-15 0 0 133562.3985 0 3.203602542e-06 0 0.1344620848 0 1370.936029 0 5.488543059e-10 5.764135202e-12 266.7119031 0 0 0 0 16.08510314 0.0004309916653 0 0 0 0 0 0 0 0 0 0 1.925903742e-06 0 0 0 0 0 7.078939512e-10 0 0 0 0 0 0.07590414774 0 5.400168378 0 0 8.929777296e-09 0 0 0 0 0 0 0 1188.514321 0 0 0 1.844218559e-13 5.485163661e-15 0 0 50793.10412 5.065875371e-07 0 0 0.007649822072 0 0 0 0 0 0 0 0 6.66782407e-12 0.002031605385 0 0 0 0.001288158427 0.0008072768119 0 0 0.002360666585 0 0 0 0 0 6.671102584e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1.326438953e-05 0 853735.8461 5.515392359e-12 0 5357642.267 0 0 597465.9986 1.861445058e-05 0 0 0 0 160.7030254 0 0 0 0 0 0 0.2382817102 8.169310003e-11 0.3269805657 0 0.0004946504962 0 0 210294.2773 0 0 0 0 1.095931144e-08 0 10748.19747 4.840771557e-05 262829.5132 1.215775028e-33 0 0 0.0001407674924 0 1.122020308e-07 0 3284135.333 0 0 0 0 308.2418059 0 2.466178707e-09 0 0 0.0001141213127 0.0002283883842 0 0 0 0 0 0 20.74921621 0 0 35359.49467 154410.7244 0 1.182603238 0 0 0 63960.58386 80.11913909 3.663901338e-06 2.387722938e-11 0 0 0 2.241420415e-06 0.2098484171 12.80837796 5.699963471e-18 0 0 0 210433.2796 1.856409525e-05 0.1724603481 0 407161.4147 0 7.635699376e-18 0 0 0 0 159865.6977 461.7549483 0 2.159899947e-14 116251.9003 7.328484929e-11 1059867.654 0.182043424 0.04936809896 1.536975e-10 0 0 0 1.47535489e-10 136357.7463 0 0 0 2.964211865 2.187325892e-13 1.547168957e-18 0 0 8.131514038e-12 0 0 0.001183746988 13.57804009 0 0 13129.62285 7.807845629e-09 0 0 0 6761.902934 0 8.09759279e-08 0 21991.41646 0 96.12265802 4.295303806e-14 0.0003290196191 0 1.014300203e-14 665.100519 0.2625492096 0.0005409508823 0 1.689298006e-20 0.003512691892 0 0 3.479454148e-08 218136.0911 6.664986237e-28 0 4.071830938e-07 1.441391493e-10 0 0.0001157640209 1.131443699e-22 0 0.009613449299 0 5.362213434e-15 0 1.046526741e-20 978.1416676 2.289064114e-17 3.809699543e-07 0 0 2.209687649e-10 1.31436849e-09 1.859923251e-14 0 8.783384927e-08 0 8.530313081e-07 0 0 1.709257251e-11 0 0 0 0 1.238158402e-09 0 0.1391205782 0 0 0 0 0.0005550700303 0.2716600002 0 1.591789782e-14 9811.060529 6.804385817e-12 5.372326324e-05 0.01177456247 0 6.607272657 0.002915614021 0 0 0 0 0 0 0 0 0 0 0 5.903115435e-05 0 0.06509654904 0 0 0.03784132367 0 0 36733.34823 0 0 1.594714105e-11 2.528374626e-15 0 0 55.27332852 8.21500213e-31 1.581424207e-12 0.01160961255 0 0 7.798055603 1.579557501e-17 81807.9741 0 0 0 0 0 0 0 5.748445842e-12 0 0.5712588603 0 0 0 0 0 0 0 1.322127142e-12 0 3.688083351e-07 0 284998.4547 0 5.174677485e-10 5498023.637 0 0 0 1.963657736e-06 0 2.239997823e-09 0 0 0 0 0 0 0 0 0 0 68546.56048 8.768929705e-06 0 0 0 0 1.614132218e-27 5.51105518e-09 0 9.547978371e-13 0 0 0 0 14707.96282 0 +0 0 4.97615386e-07 0 0 0 4.286238286e-08 0 0 0 0 6.500030267e-11 0 2.059275865e-13 0 0 1.390507997e-12 0 1.184780309e-13 0 3.151821512 0 1.960250296e-08 0 0 1.508020028e-26 7.486113271e-15 0 0 0 0 0 0 0 0 0 0 0 601043.2331 0 3.507440635e-19 2.796510274e-13 0 0 5.270466957 0 0.3979592098 0 0 0 0 0 0 0 0 4.334734862e-10 0 1.35153443e-05 1.508172924e-29 0 0 548.7849508 4783.983999 1.64153812e-09 0 0 0 0 0 0 68939.43652 0 3.431609715e-09 79.96673428 155569.535 0 0 4.076220769e-07 0 0 0 0 15726.76493 0 0 0 0 168256.8873 0 0 0 2.402116535e-23 0 0 2.739006519 0 0.01523061694 0 10697.39316 2.102867793e-11 0 0 131787.7621 0 0 3.515845798e-06 8.349058464e-06 0 2.535107159 0 0 10.29955466 0 24456.71965 0 76.79041005 0 0 1.390040182 0 0.07347006166 8.508707708e-17 0.0002006421361 0 315.8655535 0 4.395324276e-11 0 0 312214.4724 0 8924.138527 0 6783.560842 0 3.046194639e-09 7.332753843e-08 0 0 5.144390194e-05 1.689113648e-14 0 0 0 0 0 0 0 0 29.12831327 0 1.002503837e-05 0 2.199727224 6.119179275e-05 9.950105078e-11 6.534682451e-12 0 5.805782434e-11 20.87268523 390.1837284 9.719644463e-09 1.440786221e-06 1.968206997e-05 3742.035771 1182098.297 0 13654.85444 0 0 5.820467254e-25 1560.888872 0 0 1.508677953e-05 2.246687723e-06 1944.218677 1.876539998e-17 0 0 0 0 0 1.506603449e-23 0 2.400686344e-05 0 3.382809711e-23 0.4540211898 0 0 0.004873876137 5.78794527e-11 1.856417619e-06 0 1.603885269e-08 169.7099985 8.14037045e-12 0.1185001701 0 7.655421102e-10 4.013391934e-11 103429.1806 0.01718277239 9982.753706 273828.2964 0 0 0 1.312691881e-07 3.364986579e-09 0 0 0 0 7.206125665e-22 0 1.144806397e-05 0 0 717667.5803 600.5401486 0 25850.14633 0 0 1.264616361e-17 0 0.0001287357722 0 0 3143.173079 364013.345 0 0 0 0 7.890544528e-07 1.497844625e-09 0 0 2.264600342e-05 0 115.7267667 7.001501418e-23 0 0 0 5.247535741e-21 1.289856938e-17 1.890038147e-23 0 0 0 0 0 1.340849038e-06 9.460423541 4.993571107e-17 0 370848.4985 2.726752532 0 0 0.006293701801 0 1.191089458e-14 0 0 44.38203205 0 0 0 1.014695184e-28 0 3.492277672e-10 0 0 0 3.64338229e-20 0.001475463252 0 0 4.330187368e-06 0 0 5.499795438e-07 0 0 0 0 7.14570149e-19 0 0 1.703556753e-10 0 0 0 2.20910338e-14 0 +812569.0019 1.039885669e-06 50785.39244 0 0 0 0 1.746280557e-09 0 0 3.254412391e-12 0 0 1.210151452e-09 0 0 6.3085062e-13 1.691552346e-14 0 0 0 1565775.256 0 1.808800821e-20 1.766519035e-08 0 1.500812233e-08 1.467027081e-17 2.481346971e-23 2.145379083e-15 0 2.212615217e-11 0 0 0 0 0 0 0 0 0 0 0 75.93928756 0 0 0 0 0 119619.4493 0 63.89432574 0 0 2.769175873e-16 1.039333954e-05 0 4.292139905e-13 0 0 72864.99323 0 0 3.484126032e-08 2.353404989e-15 0 0 0.03609200305 2198.050386 0 2.472766168e-18 4.161708443e-12 0 0 0 2.851715823e-10 3.352127211e-12 2.050491327e-21 0 0 1.294086848 0 78590.19929 0 0.1667183776 0 0 0 0 0 0 757.7520381 0 0 1.359975199e-17 0.0002224866593 84210.0474 0.08363858855 0 59235.95259 0 78559.94381 0 3.951240321e-05 0 0 7.369569713e-22 1.399288142e-26 0 8.846023922e-16 0 2.634459617e-17 78.14599684 0 3.163102182e-08 8.650958863e-24 1.088083634e-18 244254.9361 0 1.864293548e-06 2.015079738e-09 346796.4353 4.784602619e-25 0 3.157123599e-08 0 0 0 0 0 0 4.675629545e-08 0 0 0 7.879508929e-06 0.0002686880376 0 26.02016062 0 0 3.311841189e-13 2.300032896e-06 0 38.63350097 3.802194025e-10 0 4.243298813 3.982513231e-07 6.753061479e-20 0.0001135216971 0 0 3.509435982e-11 0 8.632867144e-20 0 9.618500715e-15 0 0 0 0 0 1331.050781 0 0.9424117815 0 1.087271338e-21 0.0002340112938 8860.599342 4.729010891e-14 2.93881224e-10 1.279439427e-07 0 0 1.786812303e-23 0.004541909748 4.186261522e-17 0 1.274605248e-07 0 0 7.741108965e-11 12571.47601 5.485858606e-18 0 0 138.7606115 0.001561294746 0.01072276183 0 6.960410408e-11 1.336365841e-08 0 0 0 790.5594113 0 1.99270806e-10 0 0 2.691034121e-14 7.988784284e-18 0 7.514479828e-23 2.688914194e-25 0 0 0 0 0 0 0 0.003884452246 0 5.883098849e-15 5.06292832e-09 0 0 0 0 0 0 3.621591897e-11 0 0 168663.3646 53.83631799 0.008201161556 0 461381.09 0.0001364886403 0 0 0.4375989406 0 0 0 0 0 9.046537512 9.918467983e-15 0 0 0 6.33591028e-10 0 0.3297077445 0 0 0.04050890885 0 1.472865144e-07 0 0 0 0 0 782.3718813 0 0 0 502131.5905 0 0 0 0 0 0 219.3055389 0 237670.8499 0 0 0 0 0 0 4600.100516 0 0 0 0 2.213170311e-12 0 62.57447783 0 9.620004993e-10 0 8.61053308e-08 0 0 5.551880419e-07 0 0 0.04033484438 4.573633762e-19 0 0 0 +2.260170191e-11 0.006783125338 1.212904988e-11 0 2.663338813e-15 0 6.927458906e-22 3.448381957e-08 1.743455701e-06 0 273126.6984 0 0 0 1.465103472 0 0 0 0 0 0 0 0 0 2.695352865e-16 521.0075464 1160.214478 0 0 0 0 5.047794237e-16 0 0 0 0 0 0 4.508562961e-09 2.415503025e-08 0 0 77841.86709 26.89580262 3.448705491e-12 9.564389054e-25 0 0 9.339118072e-13 0 0 1.92919043e-12 0 0 0 8.387037645e-16 0 0 0 1.316847869e-06 1.107403691e-13 1.755112855 2.14018279e-09 0.0006163113555 0 0 0 614635.674 0 4.863580305e-27 0 2.785907277e-14 0 0 0 0 4.492713012e-11 0 0 0 29.77477212 4.855025172e-08 0 262.0239913 0 90278.32833 2875261.516 0 9.679131379e-17 2.455716053e-13 1.333347664e-08 322541.8197 0 3.841917211e-08 0.0001564172738 1.760225144e-09 3.656781468e-05 9388.381405 0.02214919502 7.256622644e-07 0 0 5.888385581 0 304166.3512 3.025856982e-10 0 69726.28861 6365185.01 8660.803602 1.853373719e-10 0 0 2.870019735e-09 1.282477347e-11 0 2.816582515e-09 0 0 9.630729512e-08 3.558787547e-11 0 0 1.167691932e-15 4.162199539e-16 0.1461597639 2312.048953 7.624468176e-05 0 1331.480638 0 0 0 0.05157697022 2.386552559e-06 2.486743367e-07 7.645603917e-15 0.3442521804 9.019999467e-27 0 32005.72438 2.214991262e-13 3.805046446e-17 0 10.50826531 0 42.98039182 0 0 0 0 5.070206003e-18 0.0007926022778 48.037453 0 2.755875499e-11 0 392.2431465 0 318.0893711 0 0 2.447878567e-15 0 3579106.438 190.5532737 1.872075783e-11 0 148765.6026 29464.07568 0 0 1.73173167 0 75799.89692 25397.80667 0.08806234636 0 0 0.2131748164 0 133718.2468 1.332609723e-10 0 0.1011861732 0 5.98219133e-05 0 484553.9248 35.76706875 0 0 0.0001758909643 0 74.2616416 1.572339507 0.7338984087 6.64227086e-08 3.740861639e-07 0.01228765942 0 0 0 1.006629957e-07 1.367494683e-16 9.832980034e-17 2.232479407e-15 1.277672044e-06 0 0 2.907503697e-14 0 0.01793134555 3.176121318e-08 0 0 278.2221136 0 0 8.382066814e-20 769.6046802 0 0.4283968645 1.256131584e-08 8.686781569e-05 0.7254766215 4.533495418e-05 0 0 0 0 0 5210.912783 2.651655775e-15 0 0 1.708077671 15.25894334 0 0 1945.321565 0 0 10183.25409 6.722885516e-09 1223536.505 1.504248767e-15 0 0 0 12024.72059 0 0 3.190355509e-07 38744.70079 0 787.0374384 0 0 0 0 0 0 0 2.511251042e-07 1.069300927 0.628832754 0 0 49.44691538 0 0 4.165418348e-05 0 0 0 0 0 1347956.294 2.985113351e-27 3.261381613e-15 1.091123521e-05 0 0 1.226450932e-07 0 1.887082181e-16 8.209041049e-15 0 0 0 0 8.491347612e-18 0 0 0 0 198878.3354 0 0 +0 0 37.44933849 7.348702183e-10 50098.05225 2.151222708e-06 0 0 0 0 0.006215842662 0 0.01026233382 0 1.896278374e-19 0 3.459291764e-06 0 0 34.16045308 0 0 0 134958.787 2.889033279e-10 0 0 0 0.01967807045 0 207949.6846 0 139.0925179 0 0 0 0 49040.51296 5.53457018e-22 0 3.272257949e-13 0 0 0 0 0 0 0 1.557731607e-11 0 0 2.38772277e-09 0 0.0001109972843 0 0 0 468525.8644 0 0 3.674966974e-23 0 0 1.057343706e-06 0 1.038420409e-12 0 0 0 0 0 0 76125.86017 1.243250387e-24 1.872942542e-14 0.01303322079 0 1407453.942 0 0 2.130143998e-11 7.808047893e-06 4.449703444e-18 0 1.143416065 0 0 0.001360600609 1388097.525 0 0.006912351354 0 0 0 25869.80564 0 0 2839678.799 0 3.456581344e-15 1.258122925e-22 143513.7239 0 31789.85143 5.116363827e-13 0 5.632286334e-08 0 0 1.281707828e-13 3.256068906e-16 0.001920263426 0.002339513315 0.001728841383 3.53933653e-14 0 3.389930364e-10 0 0 0.0002792138284 51.32751972 9.853104615e-07 0.001682759352 2.240152167e-05 0.001065336885 0 0.0009889133384 3.142815474e-05 0 0 0 3.361123495e-08 1.0216341e-05 0 2.0094727e-10 7.295986561e-07 133.92619 7.556259552e-13 0 0 0 0 13773.47466 0 107.2209661 1.620329496e-06 1.273416549e-08 0 4.861321515e-11 1.645560922e-11 0.400965675 0.0003415559502 0 1.486528106e-06 2.161490131e-05 0.07907802849 1.616074988e-10 5.431990848e-20 0 0 5.47847229e-05 3.106375128e-20 4489.233604 0 0.0008681472404 0 0 0 0.1253985843 6.435123428e-09 0 0 3.029473325e-14 0 117749.2739 8.751227845e-16 11965.57737 738598.559 52023.50016 0 0 2.184552421e-08 0 0 128003.7606 0 0 0.001328312704 2.029869208e-11 30463.06699 0.0001250078633 275652.2006 3.505672087e-08 1428040.012 0 0 0 0 0 0 0 0 2.943187636e-18 0 566.5370804 0 0 0 0 0.0008856009767 0 0.001041761124 0 125.3882345 1.908097094e-24 4.937702542e-07 0 0 80.49749311 8.875818316e-15 0 186428.7789 0 0 7.254799431 1.262116761e-07 3014.291141 0 6.633218163e-16 0 0 0 0 9.898542817e-23 0 5700088.4 0 0 3.763025309e-06 0 0 2974.279941 0 0 0 16.35879562 0 0 0 4.24209591e-26 0.03981310876 0 0 3.097476257e-15 0 0.0004303500159 264857.6893 0 6.150378551e-08 0.2620218024 4.847616157e-12 0 0.02660590868 0 0 0 0 7196.643846 0 0 0 0.0007957452665 0 0 0 0 14.8304763 0 0 0 120096.6047 0 225.8745511 0 0 0 0 0 0 0 0 0 0 0 4.87663414e-12 1.078268841 0 8.785986931e-25 0 0 +0.003667927552 2.0152e-06 0.0002325698064 0 0 0 0 0 3.477524946e-14 218465.0938 0 0 0 24213.59433 2.301819192 0 1233.420873 0 0 4.060178993 0 0 195.8118792 0 0 2.607570223e-11 0 0 0 0 0 0 1515.606609 139716.1204 1.044159765e-12 0 5.685978968e-08 0 0 0 0 1.037391866e-08 0.002973791247 0 3.772666258e-26 0 0.3928465256 67405.23874 7.193297223e-11 1.151890527e-07 8.395515239e-05 2.393103412e-10 0 4.618964633 0.02936503881 8.729011515e-15 2.070308772e-16 0 2.407718361e-08 0 0 43.14867588 99767.38315 0 0 0 2.905643218e-09 0 0 0 0 0.01021453211 0 7.029258496e-13 0 0 0.0003033704143 0.0005426057284 0 0 0 2.439453787e-18 0.0004448359422 4.170741986e-27 0.0007400883713 9.945833409e-06 2.539538823e-17 0 4234230.319 0 13277.53275 7.412226839e-05 332918.7371 0 2.018744839e-08 0 0 0.002282135903 0 6.237360553e-21 3.62581202e-10 0 32354.64215 0 7213.810185 92785.18982 0 0 0 2.199511784e-05 0 0 0.4053372032 1470.535134 0.051925199 0 0 0 0.4972472776 0.06576470012 1.39981212e-06 0.09347444611 3.488971837e-24 0 9.795031013e-26 0.0736070711 0 0.5317121932 0 0.001102423037 0 7.133298105e-16 1.191150719e-06 0 0.0002671659491 0 0 8.504844877e-24 3.786697008e-10 1.466513551e-08 0.004276590265 3.551723783e-05 0 1.887417906e-15 11438.56922 1.084522521e-17 0 3.074840399e-17 0 0 20.63540257 9.220589225e-08 2.992301417e-27 2.667339943 0 0 0 0.006123066444 0 4.520555709e-09 1040.524699 1.476574223e-10 3.531616496e-17 1.205404258e-12 0 1.59035816e-10 0 0.6516857006 0.3894856735 4.127734391e-09 0 0 8.516237242 0 0 3.177677943 27293.09369 6.076287152e-08 1.236633486e-06 1.349822323e-05 0 6.366855609e-11 0.0001177847007 6.358053058e-16 0 0.003748649477 6.849244665e-07 0.05701692897 0.02657343111 3.761988878e-06 0 0 36983.69598 0 0 0 0 0.650866811 0 0.0003133274568 1681.675253 0 9156.212737 47247.69649 0 8.3752033e-09 0 59.66830783 0.5940659309 1.198824022e-05 17.92186254 0 0 2428498.712 7.672763304e-13 0 0 8.332345551e-06 7.693847098e-16 0 0 0 0.001612326199 0 0 0.01206681891 0 0 0 0 0.08550027369 0 0.0004468263122 0 0 0 0 0 712.0336308 0.005147192176 0 0 0.0001095612129 0 0 0 8.456764108e-12 0 4.778065446e-06 0 0 1.100164794e-14 0 0 9.573537708 0 322358.9303 0 0 0 0 0 0 0 0 0 1676266.138 0 7594.703804 0.8069813323 172539.97 0 0 0 0.06829949661 0 1.046872345e-12 0 0.0001922102503 0 24773.73433 0 0 0 0 0 0 0 1.506383142e-14 725.9970026 0 0 0 168417.8553 0 3317.227239 1.487639296e-38 1.43350887e-30 0 0 +8.181980905e-30 0 0 0 2.707322188e-17 0 0 0 0 0 0 0 4.101472613e-11 0 0 0 0 0 0 204186.6837 0 0.01159641793 1.846222526e-16 595.0913721 0 0 0 1.833205619e-05 0 2.1853062e-14 6.800779616e-08 0 0 33748.19143 6.249300679e-08 0 0 0 0 0.1553188579 78729.48183 4.445159106e-10 112.2272663 2.761346944e-11 0 0 0 92.44701817 0 1.548802455e-19 970285.1093 8.754682864e-07 0.003405702 1.685198205e-13 0 0.0005717683317 0 0 0 0 0 15655.22014 0 3.522360816e-23 0 0 0 0 2.099281232e-10 3.844131174e-17 0 0 0 0 0 0 0 1.053631364e-07 0 7.230486627e-15 0 0 0 0 2.064871786e-05 0 0 10.47103634 0 31.17957755 0 0.07266743455 0 0.007993651511 0 0 0.000111611704 0 1.717328981e-09 0.02060723465 9.433759389e-08 1.308096383e-11 4727.941651 0 1.728672506e-28 0 0 0 0 0 5.745817146e-11 0 0 3.745724733e-12 0 0 274152.0352 1137.228394 1.023782772e-07 94349.95864 9.892573602e-08 0 0 0.02229484919 9.269388032 8.203401837e-19 8.271966428e-08 0 0 106257.8581 0 2.145957094e-10 0 0 1.183498912e-20 0 0.0002023334039 6.337717272e-15 0 0.0001735860414 6382.414997 4590.118486 0 0 0 831352.3458 2.969639521e-12 0 0 0.0001894730607 0 4.599651067e-08 180.2494366 1.103471049e-13 0 0.0555979131 5.054184247e-05 1.694963827e-10 0 7.086251325e-25 1.805994181e-09 5.504737174e-14 0 1.69613023e-06 0 0 6.637115144e-14 0.002141298855 2322.019318 0 0 0 49862.0332 4.395577135e-05 0 1.17732635e-21 0 0 0 0 0.0009207585836 0 0.004097944259 56023.89072 0 4.7648304e-05 0 0 0.00198478314 0 0.0007393123351 0 0 4.528358657e-06 0 0 893.2236333 0 0 0 0.03264730979 0.2129268858 15.28736628 0 0 0 79.87307913 3.704355434e-12 0 1.16141919e-06 0 4.36435082e-18 0 0.02103104629 0 84302.65511 8.761703868e-05 0 0 216.1327409 0.001959877266 0.0008537832401 0 0 0.001664244641 0 2011.576791 0 0 1.065387295e-05 1.170852246e-07 1.188929769e-21 0 0 0 0 6.073443238e-05 0 0 639.8498953 0.005516738702 0.0001103164439 0 0 0 5.398941931e-10 0 146017.8271 0.1894479086 0 0 0 0 0 0 0 0.001248578941 0 0 2.578177707e-10 0 0 0 6.910463716e-22 0 0 0 0.001141556003 0 0.03023582637 0 3.665501456e-15 0 7.329309149e-06 0 0 0 0 9.25064295 0 6.097222034e-11 0 5.545469254e-27 0 0 0 0.002277190658 0 0 0 0 0 0 0 0 0 0 0.001736635725 0 0 +0 0 3.477976718e-07 9.312145638e-16 0 0 0 0 596.3451405 0 0.005301511445 36965.76341 0 0 0 0 0 1064008.058 0 0 4279.610762 0.05685064651 7.672223988e-07 1.067705184e-07 0 5.365369265e-11 0 0 0.0121320088 414.2448118 1.138264675e-09 0 0 1.958536421e-28 0 0 0.0003491516746 0 0 0 0 815199.6068 2.170555056e-10 0 0 5.185029438e-13 0 0 0 0 1.141909647e-11 0 0 0 0 0 0 0 1.474472007e-18 3.357763572e-10 0 8.508242687e-16 0 17.35974255 0 9.602464113 0 0 0.08101048059 503357.5078 260.7988589 0.007213941971 1508616.079 2.615817127e-23 0 0 0 2.787146516e-15 0 0 0.3069769666 0 0 0 9.885702396e-16 118656.8696 0.5635173534 0 3.323064809e-06 0 242307.4167 7.857243899e-15 1.492085186e-15 0 9729.308283 8.698820001e-10 0 0 0.0003588633113 0 9.557275653e-10 0 2.593124099e-07 3.318640656e-09 0 0.03495369238 3.152733448e-14 12422.3595 0 0 3.523651631e-16 0.001160931024 3.228198466e-11 3.417704659e-10 0 0 0 0 0 0 4.156405927e-06 202263.9334 0 0 146.4300426 0.001728363762 0 0.3312113317 0 0 0 895578.3074 0 0 0 0.0006526128687 2714.320469 8.033059612e-12 0 8.408462449e-15 0 0 2.726661504e-08 1.125605674e-17 1.273373916e-06 6.395249881e-09 0 0.0005907012876 0 0 2.412742994e-05 1.32796276e-16 0 141419.731 2.338041644 0 5.553949673e-06 0 0 0 0 2.219527306e-06 0 0 432212.4529 0 0.01798150701 0 173876.2231 0 312.8333631 0 359192.498 0 2.456079384e-17 0.0002840197962 2.777573032e-08 13169.84091 5.243516196e-20 3960.514593 7.311563257e-19 472125.1097 0.0005202597781 0 0 0 0 0 5.064093058e-11 2.018670786e-20 0 0.006100159154 1.546833512e-13 0 0.000321379239 6286.889027 1.492842101e-22 0 0 0 0 0 5.472927292e-25 3.068082479e-11 0 0 9.886212658e-17 0 1.310918386e-06 1397.77519 0 0 0 561835.9681 2.569882067e-08 0 0 0 0 0 209565.5613 4.902055212e-19 0 0 15.99530957 0 1161.548775 76.74174171 0.0004215461647 0 0 4452.823253 0 0 0 0 1596.730552 0 0 0.03207282782 1298952.114 0 1.599261112e-10 1.015094146e-12 3.69208941e-12 0 0 0 0 0 3.8097361e-17 8.013177851e-14 0 0 31284.55498 0 4.513958535e-15 0 0 0 8.652983328e-07 0.01093814339 1.286658044 0 0 0 0 1.059145453e-05 2.31329151e-11 0 4.278854066e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 5.344364755e-09 0 0 0 0 4.012202001e-20 0 0 0 0.01029547635 0 0 0 0 0 0 +0 0 0 0 17.17530189 0 0 0 0 6.037916199e-05 0 0 0 6.491945359e-10 25823.99641 0 0 0 0 0 0 0.6872615405 2.639291553 0.0005225961458 0 3.123184203e-17 0 0 0 3.474671691e-10 0 0 783.122561 14309.00894 0 3.938072257e-13 0 0 0 0 0 0.001445084824 0.0002948669331 9.904510611 0 0 0 7.659468239e-09 0 1.997228236 0 7.112138676e-05 5.127296667e-12 0 0 7.793605287 236734.8314 0 4.567459635e-13 0.0002828389338 0 7.863865787e-24 0 0 0 2.04828481e-10 0 0 45742.34584 134885.4776 0.0004022025506 0 2.947787701e-05 0.008649720447 0 0 0 2.762747398e-14 0 0 0 0 0 0 0 73.39441183 0 9313.289927 0 0 2.894336369e-07 0 0 4.573051424e-07 0 0 0 157.0596906 0 101981.5498 0 0 2.058691843e-06 0 0 10.34549806 5.065331309e-07 0 0 0 2.953436686e-12 2.177042364e-17 0.1370406122 16137.23813 0 0 0 0 659041.0743 0 1.27129711e-23 0.02030670667 71.55567462 0 0.02725113906 0.0006874492171 2565810.464 1.578789314e-05 0.004200564377 0 0 1.572271357e-14 0.03075328582 2059.170131 0 1.500783672e-12 0 671.6094212 29.38610783 0 119.3710271 2595872.759 8.584534789e-11 0 1.092566831e-06 394.7852995 355.206541 2.206122179e-09 6.230051727e-19 0 66642.52377 1250621.503 284948.1966 0 5335.320563 0 0.0006665113239 0 3.601020173 0 0 0 0 2.122020265e-16 0 0 0 0 0 0.001090750605 0.1793325816 0 0 0 1.296881525e-05 5.23470855e-12 0 1.520191115e-13 0.007764906372 3.715987679e-07 1.597170125e-06 11647.39707 0 1.200575911e-09 1.087899141e-07 5.364497471e-07 0 0 1.089872307e-08 0 8.060126168e-06 36.88356915 1.490674059e-06 0 1.871591547e-06 0 0 0 0 1.777337346 1.229328193e-27 0 0 0 0 0 21062.67583 0.0002500924842 0 0 0 0 21665.99655 0.007449920582 0 0 0 0 0.0006633755482 0 0 0 1.12243516e-10 2.903277811e-07 7.150936209e-12 5.552216188e-06 0 3.382778755e-13 0 1.498563211e-06 0 0 0.0003132119411 0 0 5.38432322e-14 0 0 0 0 0 0 0 0 0 2.412988009e-08 0 0 1278763.667 0 0 0 0 1.28054013e-05 1.766730521e-23 0 0.5873425061 7.449354324e-15 5.775623596e-17 0 0 0 0 0 0 1.047030661e-21 0 0 0 0 2.096955069e-12 0 0 0 1715.483338 0 1.689095744e-21 0 3.653909134e-06 0.0001832738611 0 0 0 0 0 8.955324884e-07 0 0 0 0 0.002149240849 0 5.192667791e-21 0 0 1361.555173 0 0 0 0 +0 631.5763638 0 3318.368326 0 0 0 0 0 1.553693588e-11 5.704812312 10.53460351 0 2145970.114 0 1305671.634 0 1.996255021e-11 0 0 0 0 0 0 1.947709848e-11 0 0.01496771168 2.51623714e-09 0 0 3.153141532e-30 0 0 0 0 0 1.646884458e-22 0 3.010644987e-06 0 0 3.321714319e-07 4.415127871e-12 6.769904931 7.692882088e-05 0 0 149863.0923 0 0 1881008.747 0 0 0 0 1.291129646e-14 2.123626173e-19 3.217571044e-15 0 0 0 0 0 0 0 3.396403115e-06 0 6.858856925 0 0 0 0 0 0 0 0 0 46.34189466 0 1397.671778 0 0 4.066608521e-19 0 1.893861523e-05 0 3.43233138e-06 1038972.583 0 67117.2529 0 0 0 1.440899178e-16 6.688229097e-11 6506.090329 0 4.27707236e-07 8.019250594e-24 0 0.2340620527 0 0 3.900818082e-20 4.230081088e-16 224677.4875 0 3.351674845e-14 45.6384132 9.285949065e-12 87221.36931 0 7.847035691e-06 0 0 6.821663083e-12 1.169417062e-17 0 0 0 0 222075.9326 4376.019346 10954.00834 3.441466119e-33 0.001085786958 0 0 1.689842876e-07 0 0 3.724104913e-09 0 2.183160862e-08 0 0 0 0 0 0 1.809061982e-09 3.008459758e-16 1.47404875e-20 0 5.048825566e-18 1.446024398e-12 1.322468323e-11 0 0 0 9.684777379e-18 0 0 0 0 0 0 0 3.014583946e-11 0 926.4878956 3792.807505 0 2.778986728e-13 0 0 0 9.87242549e-20 1.726471629e-08 496856.8849 0 0 0.004958034852 0 0 0.0001283818533 0 0 0 3.644980636e-18 0 0.0139313609 2.991479346e-07 0.1621317914 1828.892024 0 1.360829049e-09 0 1560.652923 18.04751448 0 0 0.0001642907488 1.985024774e-20 0 4229503.914 0.008585393977 8.253564417e-08 0.01124525331 0 0 0 1.912945289e-13 0 0 20.80663865 0 0 0 0 0.008359346531 379.1620126 0 0 0 0.4389694801 0 904.8059803 3.160578245e-24 2.874834347e-11 7.478296663e-26 32098.2787 0 34026.11602 0 3.04234059e-24 0 0 9.987842969e-17 0 5432.762241 0 0 0 1.422958748e-05 0 0 0 3.719504222e-09 0.007476649774 1.796636818e-11 0 7.159575176e-16 0 0 0 0 0 4.604224945e-05 0 0 0 0 0 3.83620116e-05 1.130025674e-09 0 0 0 0.08706496412 0 247.6613418 0.0002595652479 2.444301612e-07 6.663606092e-15 135.3496902 0 0 0 0 0 0 0 0 0 0 0 0 6.424431743e-06 0 0 2.159044827e-25 20579.65507 1597567.172 0 4.069605634e-05 0 2.010073993 0 58.64353384 0 0 0 0 2.706785612e-24 0.3036896237 0 0 0 0 +0 0 0 0 0 0 1395557.707 0 0 0.005789976377 0 0 1.225192295e-13 0 0 25.57360893 0 0 76595.69915 597718.9563 0 1.94893574e-08 0 0 0 0 3.291517158e-09 0 0 0 0 0 0 128.6803379 42.92134542 1.972098088e-05 0 0 0 7.131008597 1082094.759 0 0 0 0 0 0 0 0 0 0 0 0 1449.972445 0 0 0 0 1.212005319 0 7.555518116e-07 1.314984127e-11 0 2.684017265e-07 2.571327194 0 0 4.245610265e-15 0.2129261128 0 30685.37635 72.30570478 0 2.724253059e-07 7.736096353e-06 35.94052605 720683.7794 2972198.803 3.132070321e-07 313791.9165 0 0 0 2.953644754e-15 3327877.612 0.0004646439149 0 36347.0116 3.189911303e-08 0 6.373425052e-21 3.929819821e-08 1.367993543e-11 0 0 0 8362.179145 3.455133252e-05 5.203055314e-06 5.464980533e-16 8.912072133e-17 0 1.254107703e-07 0 51667.44764 5.558179146e-25 0 0.0006908347337 0 5800.697792 2.06082407e-06 1.135288763e-11 0 164503.5233 0 29.19082346 25.30546314 0 0 0 0 0 0 3549481.587 0 8.199794493e-05 0 0 2.864338618e-15 1.250930236e-09 1.474542238e-07 0 0 0 6.53892959e-06 0 42.18164379 1.126446462e-11 0 0 0 0 0 3.993642282e-16 0 0.00799432195 78.75161941 2715.893568 278.2622074 0 22.10535845 0 11.82638147 4.671748509 0 6.002261886e-16 1.18933613e-18 380.1953128 0 3.226501593e-10 136914.0422 0 1970958.697 2.807664054e-06 7.613271232e-10 0 0 0 0 1.055932928e-11 0 0.01546155364 0 0 4.947927192e-06 0 0 0 1.03528859e-05 0 5.361223139e-05 0 34884.90828 293316.4819 0.01830078924 0 7.667211054e-14 0 0 0 0 0 1.737653714e-11 0 0 0 0 3.136813593e-09 0.002275067139 0.002242917171 1.701966245e-15 0.4923816165 0 0 8.259101507e-10 0 0 0 0 0 0 0 7.281565868e-12 0 0 458.3864654 2.625520799 0 0 4785.647905 0 0 0 136.2195072 0 0 0 0 1.127891348e-12 0 0 0 7.095796601e-07 0 0 0 0 0 0 0.0001806850712 0 0 0 7896.32227 576210.4574 0 0 0 0 0 0 1.639202738e-11 1.227629307e-05 378.2842721 0 0 0 0 0 0 0 0 0 3.858779541e-26 6.907845456e-12 0 0 0 0 0 0 0 0 0.00077355591 0 206.2672314 0.0007969980735 874408.3676 7.008102304e-07 0 0 0 0 0 0 0.002955001562 0 0 0 0 0 0 0 0.0003527673807 0 0 3.152054766e-15 0 0.00123989224 0 +0 0 0 0 1.762630448e-11 0 5.81783557e-05 0 0 0 0.001246699382 0 6.408652752e-17 0 4.033341687e-12 3.755449451e-11 2.289572299e-17 0 0 0 0 0 0 6.111378043e-09 0 0 29.0180704 0 0 0 0 251555.4695 829.5468039 0 0 0 0 0 160.7896162 0 30.98858891 0 0 196.9787128 0 9.340227728e-05 0 0 0 3.184357866e-16 0 0 0 0 0 3.662915967e-07 0 0 0 0 0 2.468675593e-05 0 0 0 2.101458286e-09 0 0 83696.63443 0 2188.916689 0 1.391495955e-07 0 3.041235978e-07 3.443719221e-27 3.25809063e-08 3.113330436 504279.5336 0 0 0 403.5312251 0 1.349799717e-07 0 0 1.040522621e-09 0 670.9508478 3.564637986e-07 2.890180781e-22 1229528.76 4088005.235 0 28.48886445 10.124966 0.005171537208 0 3.875585883e-12 0 9.229642866e-09 1.900111011 0 0 0 3.72795827e-12 0 1.388037442e-05 0.1779115581 9.518382929e-15 2.548843235e-09 6.407395551e-10 0.002689177797 8.780761304e-06 0 3.509631875e-06 0 0 1036.77706 2.593251492e-12 0 6.461135315e-07 0 205680.2292 0 0 760392.049 7.253422348e-07 0 0 0.02234551085 1.829924121e-24 4.302759579e-11 3.42006677e-19 251230.9614 3.125042069e-15 3.264209988e-20 0 0 0 0 1.65615868e-26 5.252899022e-08 0 0 0 0 2.641769055e-05 2.194803956e-13 0.001008508637 0 1.109507603e-07 2.222038499e-13 31597.05651 0.002818331021 0 0 0.06890753536 0 0 0 1.881208927e-06 0 0 0 0 0 0 7.563075908e-10 0 0 0 0 0 0 0 0 0 1.533783104e-05 0 3.177661149 0 5.370870037e-24 0 28.61844976 1.163112732 3.414677186e-05 30.28161573 0 2.201532951e-09 0 0.0001576526792 0.006099229727 0 0.1081728813 4.02027754e-13 0 0 0 2.886408938e-10 3.386259003e-06 4456.573757 0 0 59448.97541 5.834333504e-05 6.031041195e-10 1005856.745 0.0004481011078 2.803453157e-05 0 5393.961523 2.912306097e-13 0 0 0 0 0 0 0 146.451525 0 0 0 0 0 0 3.206698087e-05 0 0 0.1459327019 0 0 0 0 58.54192395 0 1.312914467e-10 0 1.361491715e-05 0 5.335031358e-06 0 0 0 0 0 0 0 0 4.885055024e-21 0 2.597513456e-22 0 0 6.88843068e-11 0.007946350183 0 4.987866624e-07 7.509618728e-12 0 0 0 0 0 0 0 4370.400855 0 1.728113701 1.329141601e-24 0 0.1149828507 2.845469301e-27 1.459500314e-12 1.114648219e-07 7.172122623e-17 0 0 0 0 0 0 0 0 0 49.92200774 0 0.0001256051673 0 0 7.966963147e-10 0 0 41571.18313 0 0 0 0 +0 0 0.002342444911 0 0.08761116589 0 0.0006140167423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4069282416 0 0 0 4.540696346 0 0 0 177.1525691 0 2.883463412 0 980280.4836 0 0 0 0 0 2.726187999e-12 4.060967488e-29 9.041875143e-11 0 3.251496077e-10 1.700204844e-07 0 0 5.70514157e-07 2.282370197e-08 0 17.65930364 0 0 0 0 30420.95934 0 0.005051969129 0 0 0 1.60711023e-08 0.0004132140424 1.914698439e-12 0 0 0 6.337482147e-09 214847.9706 0 0 0 26771.47649 0 0 0 0 0 0 0 0.3530820282 0 0.1391378102 7603.648183 0 1.457089536e-10 1.288080379e-14 1.828073051e-10 0 1.715831653e-05 0 2.066786813e-11 1.587217002e-09 0 2.825887145e-11 1053874.217 163.7303031 6.066784603 0.0001091048085 5.88453007e-29 0.0002389740684 1.101502613e-33 6.456536937e-23 0 3.789210282e-06 0 4.495408662e-16 12472.29714 0 4.032690536e-19 2.728902926e-16 948309.174 5995.183527 0 0 2.062225693e-13 4.278660491e-08 6.586406175e-06 1.172451481e-07 0 0 350059.5966 0 0 7.399124032e-18 3.124135784 0 0 0.0001169505705 0 4.462252986e-17 0 408455.6505 0 0 29214.56951 0.0789059524 1.226443332e-14 0 0.3756045158 0.4935746066 5.693076761e-14 0 1.034194659 8.983113569e-06 278.048007 0 0 0 0 31.92649007 8927.480309 39747.67411 0 1327152.933 0 0.0001725583577 1.868236065e-05 0 0.001852786051 5.790933518e-05 0 74685.22669 0 0 0 353204.6498 0 1.400883759e-07 0 0 0 0 0 0 2.313115409e-14 246453.8141 5.161905276e-06 0 0 1.714010188e-17 0 0 9.388828761e-15 7.937860254e-07 0 6.710693928e-17 2.662102309e-09 0 0 0 1020.726263 0 0 0 817.7810449 3.655481187e-08 0 0 0 2.722213125e-06 0 0 0 0 65870.42961 5.282633521e-14 0.002028576424 1.968813311e-19 0 0 0 1712756.128 0 1.912068688e-16 1.926710987e-05 0 7.678942311e-09 0 8.588200981e-09 0 0 0 0 3.576896979e-08 0 0 1.752923592e-06 0 1.239899646e-15 6352.768939 2.203253002e-12 0 0 0 0 0.1757630286 1.174014195e-05 481098.1202 0 0 0 0 1.573948895e-08 2.726484923e-15 0 0 2.893544171e-16 0 66057.90692 5811.276074 0 0 5.375626677e-05 0 0.0006070764925 0 0 0 0 0 2.985905884e-11 0 0 0 0.0001464481721 0 2.323898398e-08 2811.902828 0 0 0 3.359367714e-09 0 0 0 0 0 0 0 0.01743601543 2.247387911e-20 0 47.60410925 0 0 0 0 0 0 0 1.616992581e-05 0 0 0 0 0.009434665226 0 3.549701915e-15 0.4001225419 +0 0 2.065188692e-11 0 0 0 0 3.19473802e-07 0 0 19977.81614 0 0 0 6435.37528 0 0.008751158246 0 0 0 0 0 0 0 0 1.149539671e-05 0 0 0 5.426527026 0 0 2.358474233e-06 24.02736809 0 1.479919536e-11 0 22624.46449 106.369801 0 0 0.07178097801 0 7.987132282e-10 2.027382953e-16 10922.64108 1.911938185 2.868941421e-14 0 0 0 0 0 0 0 5396936.968 0 3.056308064e-12 3.066999971e-14 0 6.387645019e-16 2.119345826e-14 0 0 0 30135.68552 0 0.0007555675574 305204.9989 0 0 0.009850959631 0 2.621445516e-13 0.8734206353 4.689649644e-08 0 0 0 0.001332877682 1.258560006e-11 0 0 0 7.681014146e-17 327065.6077 0 0 1.805877552e-14 0 9.153209122e-06 0 0 250109.1597 0 0 0 593979.013 0 1.484205934e-11 0 0 0 107724.7337 370.0990646 0.0001480763839 1.417140094e-05 0.01770864595 2.175187389e-09 5.734144347e-12 0.01304808197 0 2.68018886e-12 389651.7535 1.505198599e-12 0 160.1706787 0 1179692.703 0 1.928096141e-06 0 0 6.467699153e-13 0 1.393280246e-17 0 0 0 0 2.5119697 1.483689916e-13 0 2.438317586 0 0.3506714555 0 0.002658200209 0 0 0 18450.50928 1.401587548e-19 549.2148837 3.308448497e-09 0 8.169520916e-11 0 0.003162903657 1620.696879 1.408007446e-12 0 0 0 0 0 0 4.861740008 2618473.261 0 7.774183057e-21 0 1.566688951e-06 0 0 0 0 223962.7331 1.454721484e-12 3.103288709e-05 2.37926242e-16 42040.81676 0 0 0 0 0 0 194769.8605 2.753181029e-17 198651.1121 2.849053028e-06 0 0.0007349259975 0 8.753733513e-20 58032.43465 1272.89036 0 1.333092603e-19 7.372282501e-06 1224.132333 0.4199109352 233393.4679 3.579664259e-16 0 0 0 4.461574382e-13 0 0 9.693829768e-08 0 0 27.47511216 7.985052031e-23 0 0 0.01429042085 0 92132.44956 9.134376217e-13 983111.4278 0 0.0001555296476 80.43278252 0 0 22956.84413 0 0 856451.4399 1.116561157e-08 0 0 0 0.3726205 0 0 2133785.766 0 1.357356562e-15 0 190605.5886 0 0 0 1216430.898 1157.697948 0 0 1.357151919e-08 0 0 6.485712187e-15 0 0.6434336348 212.2367198 0 0 0 0 3.72913265e-11 0 0 1.611179657e-20 0 0 1.243645116e-12 0 4.27815867 0 0 95903.57096 0 0 0 1902.774399 4297.633771 176.2623993 0 0 3.365982575e-14 0 0 0 0 0 0 8.267643608e-12 0 0 0 0 0 0.001569363753 0 0 0 1.156331855e-13 0 2.968639125e-12 0 6.176579312e-06 0 0 5585561.639 0.8211778176 1.741993555e-15 0 +25881.50655 0.0001959389559 0 0 6711.338818 0 0 0 0 2.869844331e-08 7.755855493e-14 0 0 3.144179117e-06 7.118991638e-06 0 0 2.994439695e-08 0 0 0 9.524569891e-13 0 0 0 0 0 0 5.104143783e-15 0 0 0 3.955535457e-13 80681.31397 0.0001479379377 1.477584406 0 0 8.580968059e-22 0 0 0 0 1.318653693e-07 4.251332857e-11 0 0 0 0 0 0 0 0 0.000566843555 6.59269981e-05 4.770192994e-27 6.853834591e-25 0 0 0 1.79918811e-07 10906.27112 0 0 0 0 0 0 0 0 0 0.001213404809 2.103750018e-07 0 0 9857.855808 5.874737656e-14 0.0009626310794 0 202615.2663 2.766351255e-10 3.365091542e-11 0.0001587563553 0.001601239544 0 5.619477065e-05 0 1.220679974e-10 0.00014609767 7.316524236e-06 0.0575726846 4.766282167 2.31168311e-13 1165501.487 2.066372392e-05 3.092079076e-07 9.355116801e-05 2100.401469 0 0.004024878129 0 0 5.550495177 1.959697011e-08 1.052100046e-12 0 8.335024548e-06 102378.0198 0 0 0.0002502985154 0 10340.19539 0 23.7177632 0 0 0 20819.22342 3.694453779e-14 0 7.926416599e-05 0 0 664506.2068 0 115197.41 2.829628895e-10 1.532766514e-07 1.348946492e-06 0 84.46458996 0 1427.925906 2.168117957e-10 0 0 4.870229635e-31 1.548903447e-09 0 0.1386288749 1.378689287e-16 0.6369384913 17421.43878 0 0 626.2099942 8.521997498 55693.72874 0 0 0 0 0.002408596495 0 0 0 0 0 0 0 0.008456589562 0 1.016579756e-13 1785.047826 0 16371.59284 1.297435286e-06 0 0 2.700680686e-13 55142.25936 0 1004.76002 0 0 30.87753989 3.935973482e-12 0 1.661892656e-05 0.0001327010541 79402.32554 3.926743163e-09 2.15918881e-09 0 0 0 0 0 0 0 0 0 0 21639.88671 0 0 0 7.5484291e-12 0 0 1.830298274e-10 3.265911387e-14 119817.7607 1.807635712e-22 0 0 78027.24522 0 19.46448463 0 0 0 0 0 1.56457876e-06 0 0 0 3.50792084e-16 0 0 0 2.671142751e-07 1.657213821e-09 616921.9734 0 0 7.202476674e-15 0 2.992468852e-10 0 45194.31355 0 0 0 0 0 0 0 32661.58944 1.723278219e-12 618159.0729 0 3180.278592 0 0 0 0.0003250205702 0 0 0 0 1.225681672e-11 0 2406583.838 0 0 0 0 0 5.984028996e-06 219898.2719 0 0 0.1186930725 0 0 0 0 2.205219302e-15 0 2.707736629e-09 0 1.643203385e-09 0 0 6.999639947e-37 0 0 0 0 2903.965429 0 1.287397933e-14 1.053648153e-22 0.3775467346 0 0 0 0 9.382683953e-19 1.712370279e-21 0 0 0 7711.588042 0 1.164179126e-09 0 +0 0 0 0 0 0 0 0 0 1.240795213e-07 0 0 0 8.650156541e-06 0 0 0 0 0 0 1.866440292e-23 0 0 0.0002985181489 0 0 0 0 0 1.416901468e-09 0 0 1.40110743 0 0 0 1.422016962e-12 39078.16207 1.07503508e-10 0 7.484075809e-07 0 4.818018926e-12 0 0 5.003630324e-08 0 0 7.033648266e-08 0 0 4.799478937e-08 6.032939617e-11 0 92.11588605 0 5.566517966e-07 0 6.482211008e-20 0 0 0 0 0 0 3.785517505e-13 1.524251217e-08 0 8.994496398e-07 0 0 1.036325432e-11 0 0 155.6846449 0 26651.93365 0 0 0 0 2.964344783e-10 0 1213974.068 0 0 0 8.624306344e-10 0 9.106438175e-08 0 0 0 0 4.304951674e-22 0 0 6.051797267e-15 0 2.401571918e-12 0.002356953599 0 4.872091258e-12 0 0 6.86221538e-07 0 2.930030894e-05 227.9078211 0 348.116564 0 0 0 0 2.462231195e-07 2.657312259e-12 2.164950858e-13 0 3.076674295e-21 0 1.104794559e-07 0 0 106586.3992 0 4.133491584e-10 0.0002473065537 0 0.6048059128 0 107431.9843 4.015133659e-15 97.62616874 24.7501737 0 1.26845288e-09 0 4.030338623e-20 0.002334307913 1.343687577e-06 38649.75403 0 28106.35549 10927.47774 1.161986119e-11 0 0 0 0 0 0.09976876415 0.01754891286 5.752930748e-11 33487.74618 0 8.893180382e-05 0 1.540107929e-06 1.956239379e-15 0 5366.401713 1.741305239e-06 3.694395267e-18 0 0 0 0 0 5.229040387e-24 0 2134.102641 3.268845399e-07 1.134869993e-30 585357.4374 17.0668351 0.2118253374 1.46033081e-06 6.199645624e-17 0.03501661392 3.99642743e-06 2050701.611 0 0 0 8.348035495e-15 0 0.0004654681179 2574.677423 2.255200499e-09 0 0 0 0 3.395349688e-22 0 0 0 1.521433405e-23 0 108367.2922 0 0 0 0 0 3.973963271e-24 86560.80107 0 2.777476956e-08 0 544054.389 3.934968622 0.002390093258 0 6874.7382 5.821719899e-08 443.9409071 9.428843018e-15 0.02431129463 0 0 0 0 0.002905484696 0 0 0 16966.69816 0 0 0 9.946119278e-13 0 0.0006203162756 0 1.985411781e-08 2.930728476e-05 0 0 0 0.1628685535 0 0 2.867847919e-10 0 3.947953954e-12 1.805155677e-06 3.472447576e-05 2.05370672e-06 0 0.0001433166407 0 0 0 4.802522872e-16 0 0.0001050123378 9.6635334e-13 5.791852268e-14 1.990959602e-09 2469687.489 0 0 0 1.532223793e-09 3.039800642e-11 0.001337694103 0 0 0.01152029878 180678.7012 0 21162.01215 1.043075271e-05 0 0 6.416520941e-08 0 0 0 0 687.0736968 1.799257344e-05 1266413.547 0 0 0 0 3.232315551e-08 0 16472.45648 0 630811.6966 0 3122.801581 0 0 3.396575173e-10 0 +0 0 0.0542034686 0 0.125454701 0.2749157522 0.1920075877 0 0 2851.432323 0 0 2.539523008e-22 0 6.973922085e-16 0.5219378806 0 0 0 0 0 874.9648836 0 0 83737.81725 0.01237256278 0 0 3.459026423e-05 620885.8368 2.244846342e-07 0 0 1.246589427e-13 0 0 0 0 6.923604946e-28 2.726055242e-10 0 0 371.3568932 0 4.36871406e-16 1.988868607e-07 0.0001080901671 0 0 0 8.131381038e-12 0 0 0 0 8.28951764e-05 0 0 1.983226874 0 4.677985786e-10 2.308995353e-05 0 0 0 41033.75959 2.236507524e-06 0 0 17.32530657 4.290673785e-07 448049.0668 6.225299417e-05 0 0 0 1.680077562e-10 0 0 0 6.546727389e-15 0 0 0.004786782088 0 0 2.75565009e-07 0 0 4008.633861 3.97748363e-07 0 0 0 2.933803919e-10 0 0 11113.32208 83.09036568 1.276550166e-12 1.598603304e-09 1.629362991e-13 0 0 0 591602.7271 1.573005864e-05 4.047917311e-16 0 7.2869602e-17 3.570642808 3.821534643e-10 0 0 0 0 0 0 0 7.428886481e-08 1.379225713e-06 4.017464366e-06 0 0 0 0 0.000955711917 8.765062241e-07 0 0 8.904487328e-05 10428.20482 0 0 184290.2804 1.059338992e-14 0 1.306218236e-14 1382.691384 0.008669128554 0 0 5.687198914e-05 0 6.171834563e-13 0 0 0.001220131668 1.596929468e-13 0 2.995153876e-07 0 0 325234.7595 2323.752902 0 54486.43683 3.928430006e-15 0 0 0 0 0 0 0 0 0 0 1.066083413e-15 0 4.766380494e-08 0 0 0.01755554988 23698.02942 61058.17719 1.095107893e-10 0 0 8.289516495e-06 376.4022227 0 0 0 0 2.574250382e-07 138.5849764 0.01966995272 0 3.647615557e-10 1.136907492e-09 0.002398460841 7862.973266 1.067464223e-14 0 0 6.523683644e-10 0 0 0 502.7126843 0 0 0 0.001064085061 4.306445183e-05 0 5.064729742e-16 1.359826277e-29 0 0 0 0 0 164.5130626 0 554331.4157 0 0 5.341610551e-11 0 0 325669.2157 0 0 0 0 0 2.480080204e-17 0 0.4865531596 0 0 6.146237209e-05 3.394947276e-12 0 0 0.001032898793 0 4.992407652e-10 356.7279429 0 0 1.864477029e-10 7.64026778e-13 0 0 0 8.478804416e-23 0 47.97521424 0 8.962424083e-10 0 26616.20757 0 9.89030295e-06 0 0 0 0 0 0 1.638025826e-14 2111835.654 0 0 0 1813.167137 4.567775166e-14 371.7134874 0 2.283362984e-17 0 0 3.969562249e-08 7.978701584e-05 0 0 2.536582435e-17 0 0 0 0 5.283630812e-14 0 8863.223971 0 9.864883261e-14 0 0.003792330359 0 0 0 8.286774196e-13 0 0 0 0 0 +3.95243589e-13 0 0 0 0 0 0 0 0 3.428957768e-08 0 0 0.01521907147 0 0 6137.23873 1.515376122e-17 8.090262592e-10 0 0 0 0 0.008500278603 0 0 0 2.955507111e-11 0 0 0 0 0.0006821327955 0 3.128692911e-10 0 0.3445865717 3.209568865e-09 0 0 1.982829452e-15 0 609248.0472 0 0 19929.13744 0.01789064337 0 0 0 3.454692956e-07 0 0 0 0 0 0 0 0 0 0 0 6.260662767e-05 0 1.721861669e-23 0 2.380134302e-06 0 1.090084461e-12 0 2.317480186e-11 2202.541455 0 1.97170715e-11 4.118783702e-11 0 9.988354134 0 0 0 0 0 0 1193271.439 3.910803905e-16 0 3.80422983e-25 0 6.054618779e-09 0 2.533785492e-06 4903.338299 0 1.529600927e-06 7.893375631e-19 0 0.004173205068 0 0 1.119837892e-06 0 5.566900988e-21 360358.7205 0.07379486537 0 0 6.078458402e-16 0 2.352401323e-10 1.201069142e-16 6.62839988e-16 0 1.449112077e-14 4.016175816e-08 0 0 19956.91635 0 0 0 1.214285596e-12 0 0 0.2639982471 1565.190344 28715.95051 299805.1204 5000.702099 0 0 0 4.037059225e-11 1.022802762e-23 0.0001097077375 14.33313991 1.526055573e-10 1.149664452 0 0 0 1.743184595e-24 1736698.144 5.254625198e-13 1.510867833e-18 0 0 1.495740246e-14 7.044560349e-21 3.304280706e-15 1.504334909e-10 2.498056818e-11 1.015886356e-16 3.40902961e-09 0 5.869966069e-06 1.397103644e-17 0.7772893408 7.886488152e-09 0 0 0 211496.3597 0 1.657343446e-06 15588.27952 0 0 0 0 0 29335.43591 78.70117045 0 1.237034597e-18 4.281699832e-10 91662.81916 31190.49138 1.637658731e-08 0 7.677590922e-06 325.4697307 3.364633079e-23 0 0 0 0 65912.01567 3025.383648 4.833115079e-14 3.557819432e-15 7.239467284e-09 0 432402.151 0 0 0 0.0001492412413 1.490089769e-06 0 0 0.0001178061765 0 0.0004341199637 1.405317186e-06 4.012292323e-08 0 1.266189629e-08 0 0 0 0 2.001490945e-10 0 0.0004841997025 0 0 0.0005908775351 2.835123197e-08 0.6902336636 0 0 0 0 0 1.965686559e-14 0 0 1.418320667e-14 0.1289044309 0.4469236178 0 0 3215.25894 0 0 2.287146249e-06 0.1504104378 0 0 0 1.01874905e-25 0 0 0 0 2.544836282 0 1.375215627e-11 0 0 0 2.486988068e-06 0 0 277475.3849 0 0 0 1.808623171e-06 6662.307608 0 0 0 0 0 0 1.355656731e-27 0 2.124268752e-10 0 1.949336606e-06 0 0 0 0 1001.45039 0 0 773.4862781 0 0 0 0 0 0 0 0 0 5.642464027e-11 10375.94985 0 1.608754298e-23 0 0 0.1398102868 0 1.150038691 0 0 0 0 +1.168532995e-18 0 0 1349.870473 0 8.21891608e-13 0 0 0 0 0 0 0 0 0 0.007487276531 0 0 0 0 0.02329026941 0 1.101353397e-12 0 2291.606038 0.3978851367 0 62400.13742 0 0 0.005792614885 0 0 0 0 0 0 0 5.330278149e-11 0 0 0 1.449502779e-09 6.248907005e-08 2.917735414e-10 202.3919238 0 2.38561425e-06 0 0 0 1.808544869e-10 3.300653388e-09 0 0 0 166996.8025 68270.06376 0.004770679499 0 0 2.977496552e-08 1.534872978e-07 0 0 0 0 0.02858462748 0 0 5.140202607e-05 8.114075871e-17 61.76839572 0 0 0 0 1.057059793e-10 22.72976688 2.318187577e-07 0 0 0 0 403766.5032 0.0007467298764 2.548004037e-08 0 0 0 8.898482298e-11 0 6.672955825e-12 0 0 0 278709.6517 544511.1489 5.92358216e-11 0 0 0 0 0 2.798010646e-08 0 1702240.192 0 0 0 0 0 0 2.70782211e-08 0 0 0 3.826820141e-05 5.020457154 173792.8711 5698.006829 7.454977945e-10 0 76.09058158 0 2.203710497e-06 9.153127886e-08 18650.6857 0 4.322928351e-11 2.742490034e-07 3.942921429e-09 2953533.364 0 6833.100248 0.0001657058689 0 1.213623007e-09 0.004120529019 2455.538266 4.226247207e-05 1.492131795e-21 0 0 3.244863828e-05 0 0 0 0 0 0 0 5.947009699e-09 47799.7668 0 0 7.427335772e-12 6.04831082e-17 2.345402952e-10 0 0 2.383332601e-05 0 1.499905897e-17 0 0 2695753.467 1.378496624 8.525118237e-09 0 213.9250424 11182.89764 5.783946824e-24 0 1.65319489e-11 5.638977378e-16 0 3.109989325e-17 1.241412118e-18 8.540366744e-17 8881.090661 2.641322251e-09 0 1.0552085e-14 4.099526649e-09 0.02920934723 0 4.979855569e-06 0 0 0 0 0 0 0 0 0.03487252323 3.293689534e-14 0 0 317.9513114 0 0 1.040531549e-12 2.855279301e-12 0 0 2.661794178e-10 0 0 8.730575611e-09 7013.85095 0 0 0 0 0 0 2.883827985e-13 0 208.3417977 295375.051 1.027737274e-08 0.2829581983 0 0 0 1.996135545e-11 0 0 5.018630154e-10 4.721877971e-09 0 0 0 0 626718.3602 22.40717713 11766.36662 0 1246585.897 21245.58086 0 0 0 0 0 0 5846.047114 8.867753268e-06 0 0 0.1137415131 0 0 2.333927548e-10 0 1.552303483e-08 0 0 0 0 1.029208148e-10 0 0 0 0.07511600064 0 0 0 0 0.002324018718 0 0 8.666627867e-13 0 0 5.322974999e-05 0 0 163.5057019 0 0 1179.802818 0 0 0 18114.96501 0.005918696951 0 0 1.208374149 0 0 0 0 0 0 5.36637274e-11 0 +0 0 0 0 0 2.637993847e-14 1.279733697 0 0 0 1.370332252e-17 0 0 0 0 0 0.00256175327 12947.51785 151327.051 0 0 1.061071498e-06 9.418087583e-26 1.085624593e-10 0 0 0 1949.899999 31.62272018 5.640862517e-12 0 6.663552458e-09 0 0 0 0 0 0 7.241153475e-12 0 0 0 5.369445655e-06 0.06840792108 7.821354578e-12 0 0.8212904039 0 55.94761941 0 0 0 0 0 8.608900275e-15 0 0 1.74348728e-09 5.734493998e-07 0 4.192118274e-15 47445.21507 0 2.363615557e-12 0 0 0 4.971520197e-15 3.862323861e-20 12.46289743 0.2733955467 0 0 0.8256588814 3.643308474e-18 0 0 456354.3389 0 143.1039773 0.0002395005108 3.599512683e-10 147975.8602 0 21606.3042 0 0 108057.8932 0 0 0 0 6.467306586e-14 0 3.142580947e-06 0 2712567.719 0 16.46866791 1.981200641e-09 0 0 0 1.046642439e-09 0 284404.5638 0.1616734735 0 0.00109106821 0.1290332423 0.01482476297 0 8.410390841e-14 0.08577821772 5.400816314e-09 1.56883692e-06 0 1.117789063e-31 0 605750.5642 0 6250.662302 4.816154134e-08 0.007878153592 3.679579631e-06 0.0009678596877 5.94937633e-10 0 0 4.574057956e-21 0.0208547691 64278.70905 294335.3129 228.0206485 8.563852386e-13 0 0.3268868878 0 0.460701761 0.0002569245865 0.0001515443677 0 0 3.569182747e-12 7.091946745e-07 4.501399571e-05 7.091671357e-06 2.210440731 46200.0278 2.679999264e-08 0 1.197345782e-11 0.05855943012 0.0005236223898 3.30315535e-16 1.215399322e-14 0 0 0 0 0 5.820532427e-25 29944.90036 0.02703215644 7.635080638e-05 3.164607077e-06 0 1.990680569e-14 1.465266433e-16 2.023818141e-09 0 0 9.701701554e-05 0 0 3.746367965e-05 113437.1913 89952.0693 0 0.002143035551 0 0 0 8.931269634e-13 0 0.1419226821 0 0 4.118846529e-07 0 3363.296844 101866.9417 0 1.090566605e-06 4.085483786e-13 1.158579682e-10 0 0 5.41257566 0 0 1.232366316e-12 6201.922407 0 0 0 577.503771 146324.2409 0 0 0 8.395703619e-10 76.74473973 1.484869711 3.325672967e-21 0 3.961296761e-11 17712.47059 0 0 7.981310933 0 0.000196961011 0 0 4.206415914e-06 0 1.153875453e-20 0 0 0.0003998487698 0 5.263457126 3.960895185e-07 0 0 0 0 1.099180632e-17 0 1.330362836e-09 0 0.3674885076 0 0 0 0 4.432907835e-11 0 0 0 0 0 21297.26719 7.270201575e-08 1.758588562e-34 0 0 0 0 0 0 0 1.035364112e-10 0 0 0 0 0 0 0 47.21856049 0 0 0 0 0 1.856595195e-12 0 0 0 1220.152815 0 0 669554.7462 587.0241991 0 11063.56499 0 0 0 0 1.161860776 0 0 3.536535653e-20 0 0 1.843717798e-06 0 +3.582362303e-16 4152.413066 9.545292414 0.04726283198 0 0 0 0 10.1448319 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01101720967 347672.3636 0 0 1.729400143e-09 0 0 0 2792.06807 0 1.231872254e-17 2508.958632 1.621812935e-19 3.217810158e-05 6.630894912 0 0 1.195976226e-15 3.228972136e-11 0.0209427752 3.527215613e-11 0 1.833372802e-13 0 0 0 0 1.05009637e-08 0 0 2.697534137e-08 5.976752522e-10 5.451161143e-07 114849.5036 0 0 0 0 0 0 0 0 2.784445164e-05 0 0 0.0007009880858 2.49606769e-17 0 0.4623348098 0 0 0 77.42045658 9.683403828e-06 1.196818709e-05 0 4.446338271e-07 0 515.5451668 64.13587163 0 1.487691225e-14 1.3663443e-13 0 72.33144205 0 0 0 0.004402562408 7.007230308e-18 8.386430006e-08 0 2.00445635e-13 0 322.1721567 8.970710448e-17 0 0 0 0 0 16576.39365 0 0.007624232142 0.03145967798 1.79326006e-06 222106.3974 9.69621329e-13 285.4764854 1.421735649e-29 5.457806431e-19 0 15241.96728 0 2.042987889e-08 3.436401913e-09 0 2.242025166e-12 2120.713969 5.765606482e-16 1.786667895e-07 6.851371408e-10 4.320568105e-08 0 0 0 0 120840.2307 0 8.08850925e-10 2965100.105 129053.2052 0 0 0 4.694892099e-17 74095.6364 0 0 6.327826641 63345.98067 0 68632.59071 0 129.9318876 0.0002575029548 0.0001387741206 8808.587036 0 4.042943266e-09 0 0.0001177122717 0 246718.4699 0 1297.881586 0 1.740661504e-07 0 0 0 0 0 0 0 0 0 0 241461.5613 0 1.291796531e-11 0 1.322399635e-06 9.511376243 0 4.841719505e-06 0 0 8.897615918 0 0 0 0 3.409474269e-05 1616.751459 0 6.899564692e-08 5767.073204 1.411102174e-12 0 0 0 0.02826620386 0 0 0 1059.14485 0 0 0 0 0.00706710522 1066915.443 3.092492033e-07 8.152926502e-07 1.477100729 0 1.404362048e-05 0 8.406617792e-05 4.146996276 1.77953869e-06 0 2.527488184e-08 0 6.906807045e-17 0 0 0 0.725360833 2846.329372 0 0 2.775359586e-09 0 0 0 41.53343056 5.745288829e-11 0 0 0 0 0 1.401489085e-10 0 0 0 0 1.017430841 1.173071071e-11 0 0 0 0 0 0 0 0 0 71151.91764 0 0 1.037675459e-25 0 0 0 0 0 0 0 6.817675573e-14 0 0 0 3.299438022e-10 0 0 63716.54449 4.406059113e-06 0 0 0 1.290272256e-13 0 0 0.4458485031 0 0 0 0 1.099503093e-09 1237816.04 464821.2446 0 8.773176138e-06 0 0 0 0.1486572263 0 0 0 0 0 0 0 6.568035829e-31 +0 0 45.51384508 0 0 0 0 0 0 0 1.508394108e-15 0 1.090816686e-28 8.197464409e-06 0 0 0 3.869723709e-13 0 0 3.747884581e-14 4.289030841e-10 0 2.121737388e-23 0 0 0 2.444050022e-24 6577.852553 0 0.1294733094 36850.44711 4.690825139e-16 5.895818476e-14 0 0 0 0 0 1.39633024e-10 0 1.488709201e-15 4.572734889e-05 0 0 770.0130132 0 120131.2999 0 9.09651272e-16 4.779466892e-20 0 0 6.734275061e-16 0.0007774533852 0 0 0 9.063044474e-15 1.730704043e-11 0 5.835282819e-07 0 0 0 0 0 0 7.48309204e-06 4.244266177e-05 0 2.939798338e-12 0 0 0 0 0 1.955442247e-06 1183.827716 1.545799857e-10 0 0 319422.7862 3.021824609e-09 0 1.177118168e-14 0 1.36814172e-06 0.1880869149 5.898416276e-05 1.75800588e-05 0 0 0 0 3881072.785 5.326792389e-05 3.106702904 0 0 108.6313168 452813.3172 1.342802015e-09 0.0008941706219 1579.641879 2.335329458e-06 0 0 7.930960053e-27 0 1.790849338e-06 9.69834799e-11 0 2.274654616e-08 0 16580.29336 5.678029985e-18 0.1551880973 0 1833193.406 0 0.01212435452 5.343174653e-07 0 9.542386576 0 6.116625769e-07 1249.226426 4.984602399e-07 0 0 0 2.979180003e-15 114146.6814 3.231756157e-10 0 0 0 0 0.1106464845 75.47694406 0.0003602457972 0.02019017009 575.9220252 0.6584350079 4.943748201e-27 4230.490054 1681191.453 2.827156515e-14 8.105384529e-12 10858.03654 5.611908974e-26 0 1.859179061e-07 0 1.285821405e-18 0 0 0.001432892527 2.987529328e-12 0 4.939869823 6.778059335e-21 0 0 0 0 3.975980574e-18 0 0 0 2.259274038e-07 0 0 49874.47019 0 5.214997168e-08 1.314105489e-06 0 0.07076200408 0 0 0.006959012249 9.369269419e-12 8.796794746e-09 1303339.646 3.831208971e-09 2.736023794e-24 0 0 0 215070.6773 0.0007317502099 0 1.06643827e-07 0 0 0.3623194832 0 2.120265497e-06 0 8.26616e-14 0 0 0 0 0 0 1.21278628e-19 2.881844447e-15 0 4.677246525e-22 0 0 8.797084477e-06 8.027406546e-21 0 182.4187418 1.148240734e-07 0 1.153269891e-09 0 2.637634414e-08 0 2.121420744e-16 0 0 0 0 211.6649246 0 2.976171013e-08 1184.374201 0 0 0 2.100262352e-14 2.772147322e-06 0 4.977440124e-06 0 0 2939204.415 0 0 1.521199902e-13 0 0 0 0 0 0 0 0 5.174201839e-28 0 0 0 0 116593.7074 8.952120914e-10 0 0 0.000308750584 0 3.923857825e-12 0.000873489752 0 0 1.363134891 0 0 1.553796411e-10 0 0 0 0.1131421136 0 0 0 0 0 2.411740656e-07 0 0 3294.778846 0.2113480648 77.57289268 0 0 0 0.06494608232 0 0 0 0 0 290009.2213 0 0 +0.000577373966 227427.079 0.0005763445631 8.542397821e-06 5.081417242e-10 0 0 0 3.32577796e-22 3.340195339e-10 3.868174398e-10 3.519573089e-22 0 2.502318692e-30 836.6237158 0 0 0 9.091715337e-13 0 1458.478106 0.0001020459875 2.155066691e-22 0 0 0 0 1.734097215e-10 0 0 4431.970152 0 3.967605637e-10 0 0 0 3.077234713e-10 4.356278186 6.382625541e-07 0 0 0 0 0 11065.12943 1.206894235e-05 0 7.758938509e-05 5.758378247e-09 0 57.61239988 0 0 0 0 7.22325803e-08 2121741.81 1.316488476e-11 0 4.378360298e-19 0 9.556121414e-10 0 3631.691842 0 0 11606.36044 0 0 0 218349.8804 0 0 0 0.004801455412 0 0 0 0 0 0 30832.37157 1.213030439e-05 4.193932282e-06 0 9.256313768e-12 0 0 210.8275425 0 2.352373834e-12 442.2329599 0 9.4509985e-07 0.09257579353 34580.97934 5.170858882e-09 0 0 422.2778178 899004.6523 8.151292298e-05 483.1549306 2.457673561e-12 0 28.70417177 5.38466971e-07 0 0 3.719112306e-10 0 0.0006947898205 0 0 1837.32838 0 0 6.812912898e-13 1.520731273e-08 2.120310655e-07 0 5.808781863e-05 0 0 0 22.45194288 0 5.884090704e-09 0.0207999058 0 2812.189481 0 0 0 1.031273726e-20 0 3116.187505 0 0.0003416976639 0 0 0 0 0 0 0 49330.80373 2.741974795e-12 2.530471158e-10 0 5.643340104 85505.49894 0 287587.7889 0 0 0 1.126219673e-18 1.044621567e-05 0.000658638032 0 0 0 0 4.794542103e-09 3.621130898e-12 1.39485765e-09 2.001181513e-10 0.06480669553 8.785715961e-13 0 0 0.04980169779 0 2.180773762e-09 0.009740088214 7.24758087e-06 0 0 0 241.7125056 0 2.018192812e-10 2.94310612e-12 0.0004114777821 0 0 0.0001901282536 27282.82557 8.308736417e-09 0 0 4.36138398e-05 0 0 9.200139226e-15 0 0 0 0.03552343504 0 2836.542574 197344.4566 0 0 0 3.754194306e-11 0 0 0 6.979815146e-19 0 1.562147854 4.24904438e-05 8.013457337e-12 0 0 2.133451664e-14 0.0002724383339 0 4.890063022e-06 0 2.66456717e-10 1.167726427e-27 0 0 0 0.009314375441 0 2.544141929e-14 0.5085322773 0 3.725119311e-19 31464.03407 0 3278430.381 0 0 0 0 0 0 0 1.35312055e-09 0 0 0 0 0 18.07447919 1276908.973 0 58519.89992 0 0 44423.92231 0 0 0.0003123850865 0.0002940324272 0 4.680189685e-19 6.809431291e-06 2.37594567e-14 1780.279838 0 0 0 0 0 0 0 0 0 1.047527852e-07 0 0 0 0 0 0 0 0 2.739962545e-22 9.047330374e-05 0 0 26.48774055 0 410501.5718 0 0 3371.585129 0.4281301099 0 0 0 0 0.05813563216 0 +0 292.3161225 0.004094824329 0 2.632294088e-12 0 0 7.508420695e-05 0.002611339467 2599.519125 0 0 0 4.345671135e-23 0 0 0 2227836.465 0 0 8.07514576e-13 0 0 0.0004198039256 0 0.1292141298 27708.40184 0 0 0 0 67.56657428 0 6.898187594e-16 5.915739478e-14 23647.02077 6.178733291e-10 24.90928371 0 0 2.616231542e-05 0 0 0 0 0 0 7.956449773 0 5.934687448e-07 8.484530817e-08 0 33649.85606 0 0 5.621271815e-05 73981.53519 0 1.723630074e-10 0 0 3.969426612e-06 0 0 1.65444518e-10 6.764276692e-05 0.0001035644376 5.542345652e-07 0 5.520162976e-17 3306522.478 9.036037031e-12 5.636012205e-11 0 4.830507595e-05 0 7.545979111e-07 0 0 2.846259597e-06 1.283809125e-09 2.930642852e-17 0.000596728146 0 0 0 0 4.051208887e-10 0 0 0 2264.221158 0 0 46.07987412 21006.54299 0.0471510415 9.491825455e-24 0 0 0 0 1.368228149e-07 0 0 6.130811672e-15 367155.9163 0 0 5.584621351e-11 0 1.454318817e-05 0 0 0 0 0 0 0 0 0.3507620708 28.24852059 2.111493635e-07 9.750944966e-12 1763.756439 0 0 0 0 5.464411438e-12 0.01628510055 4.176434405e-13 0 0.0001911180915 0 6.926503585e-18 1.175993682 2674.296626 0 0 3.110441787e-23 0 739363.3193 0 0 0 3.340855992e-05 17.15046551 3581.27335 0 5.980522893e-35 360.9503233 0 0 1.851707834e-05 24344.17445 0 7.920972466e-13 804.8483322 0.002057086744 0 15.94134901 1.146698777e-05 3911.457254 0 0 0 1.167570692e-05 1.499276796e-06 334076.8549 0 0 0 0 0 7.952762357e-05 0 19987.52459 98843.02552 0 0 0 3.943203083e-12 0 7.989643712e-15 0 1.10562697 0 0 0 0.0003098560436 3.572149345e-10 5.798933078e-07 1303.8261 0.6512007864 3.127649427e-08 6077.395916 0 1.224967158 0.1310101881 1.635986002e-09 0 1.471743577e-06 0 0 0 0 0 6.220374149e-18 1.166011656 2.206689038e-10 0 1.232511923e-05 0 0 67867.47957 0 5.367327817e-07 0 3.429002057e-11 0 5.222014151e-11 874538.0887 0 2.191806789e-12 0 111679.0758 0 0 0 0 0 2.062790767e-09 0 0 0 0 0 0 8.069562362e-05 427859.3399 3.168459257e-14 0 0 0 0 0 0 0 0 0 0 3.000420344e-14 0 0 0 0 0 0 0 0 0 0 0 2413.170861 0.0002186258732 0 0 0 0 0.002714635044 0 5136.85986 0 0 6.482317237e-24 1.097760411e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.434916741e-07 0 0 0 0.1506360671 0 0 1.416516677e-12 +154.5745183 0 0 0 8.060771117e-16 0 2.578028301e-09 0 0 0 12.2251224 0 0 3.612873479e-22 0 0 0 0 0 3.409384719 0 0 0 0 9.604803958e-15 0 0.001744738034 0 0.0001658962042 0 0 1.144629219e-21 0.1091098101 0 27.02529725 0 0 61276.97111 0 1.511413853e-12 0.7544239739 0 57.53466737 63.11446153 0 1.022149901e-05 0.3142536807 0 0 197525.6057 0 0 0 3.477713917e-11 81.6532743 0 0 9.839031462e-10 0 0 2.704490027e-13 0 87.38004577 1.969203815 2206217.546 2.271839664e-12 0 67128.06298 6.344762299e-07 0 0 0.0001698419974 0.00703361531 7.299556363e-11 1.322666368e-14 0 0 2.496873315 0.05023792195 0 5321.439218 2.34176497e-09 0 0 0 0 3.047250104e-17 165232.1802 0 0 0 1.540243628 7.726704111e-06 3.17237826 0 1368412.485 0 7.525281585e-07 0 180966.6776 0 1.303506427e-16 0 2.251505097e-08 1.250646371e-11 1597.070315 0 61974.95147 0 0 1.920226754 9.064233338e-17 0 0 33.68300677 8.143447601e-17 6.865912665e-15 1.271237223e-20 0 143974.7513 0 0 0.004253213992 0 556742.1586 2.296484634e-10 0 1.269471414e-05 0 1.159515579e-21 0 8.615654026e-22 3.512026381e-22 1.66969599e-10 1.837274083e-11 25.39582396 0.0005450052325 0 95560.30091 3.135164645e-08 1.216789008e-08 0 0 128270.3482 0 0 9325.320759 0 0 2.298858372e-15 0 0 0 8.477434742 0 0 190142.9067 0 10.63658294 2236.284896 1.430153522e-15 0 12235.5801 0 0 2.326485158e-12 0.000109708477 0.003585050308 0 0 186733.6265 5.240895975 0 133.2585193 4.814350229e-05 0.003477530119 0 1.058045363e-10 0.0008510234042 9.91683371e-05 10321.31139 0 0 12938.00022 36848.2504 0 0 0 0 0.001371907678 0 0 2.19343493e-14 0.0007422049597 0 0 2.160134383e-08 0 0.7472482439 0 1.192704909e-11 1.887133298e-09 1648.835849 0 0 0 7.793290095e-10 0.1248249402 0 2.358039311e-13 0 0 0 6.287777113e-16 0 10790.11003 2.129969772e-13 0 4.708203653 0 0 0.2431997378 0.01032119095 0 0 0 0 0 1.669884884e-11 0 0 0 0.001251883871 0 1.541465468e-13 0 0 2.443804315e-09 0 12802.84415 0 835.0514022 0 0 0 548293.4411 0 0 0 0.4381181138 8.300202541e-08 125.0773133 0 0 0 330.6327046 0.4431172689 0 0 463698.5759 0 0 1.101918381e-07 0 0 5.666458756e-11 0 27708.07686 2254.226829 0 0 804.0196802 0 0 0 0 4.261256512e-05 0 1.943559098e-12 0 0 0 1.392119666e-25 2.998431497e-07 0 2.245867492e-05 0 56780.88215 0 0 1.308953125e-21 0 0 0 0 0 0 1.201894122e-09 0 14.06331226 +0 3.521444118e-11 0 0 1.913682315e-11 0.0007627551068 0.03886000764 0 0 0 0 0 17394.52775 0 0 0 1.940291572e-14 0 0 0 2.775517981e-14 5.285174895e-14 0 8.152527699e-26 0 0 159.7907005 0 0 3.738295005e-23 1.75918817e-08 0 0 0 0 0 0 0.09929580293 0 0 429044.837 0 0 0 0 0 0 9.71147262e-13 0 0 1.193934496e-09 1.148187623e-12 0 1.189582136e-14 0 2.012777558e-06 0 0 231.2630748 4.388044985e-06 0 0 0 0 0 0 2089.912114 0 0 0 1.059383146e-20 5.956646412e-09 0 0.08519346501 0.1720541871 2.170489565e-11 3.944543853e-10 334678.0731 0 0 0 1.868135617 0 3.21374686e-14 0 0 2.317603551e-25 0 0.002132377834 10.96923125 0 4.113362814e-21 1.343363743e-06 616265.4825 2173.67211 0 0 0 0.08192915291 0 3.467852549e-15 0 258831.8797 2.083299149e-08 1.082060264e-10 1.570001952e-05 237.648769 0 2.789248307e-13 0 0 0 8.422677796e-11 5.920595497e-15 0 10231.59939 0.001224125168 0 6.256752087e-14 0.002609693287 370984.3088 1486450.128 32995.84835 0.1456573314 0.02040845621 0 6.590556493e-08 0 0.3081762536 2.493905196e-21 0.000385859683 0 0 5.121591625e-10 1.56622886e-30 2.101309749 0 0 0 0 0 8.127729276e-16 0.0001534969573 1111.176849 36712.66642 0 0 0 705.1033326 0 3.457219335e-05 2.405516486e-07 0 2.849846861e-13 0 0 0 0.008955510663 8.011040535e-13 0 0 0 5.081297079e-06 0 5.951965286e-12 0 0 1.501115432e-10 0.5598965029 0.3665335182 0 4.793367412e-14 0 0 0 0 2.65192343 0 0 3.195625011e-09 2.906132877e-08 0 0.0001168799923 0 0.563477923 8.043559962e-07 0 0 0 9.427891747e-06 14.61192954 56956.83833 0 0 5.068104381e-09 46898.84032 43.15988162 7.30693806e-17 2.170449711e-17 3613.852683 0 0 0 0 0 7.454953616e-14 0 285.621047 1.657900925e-12 0 0 0 0 0 16.57480723 0 0 4.118402637e-11 2.753988643e-18 0 0 0 0 2.664419868e-29 0 4.387097759e-10 0.0009054881549 0.02563904824 0 4.148330736e-05 0 0.002674867676 0 8.940558587e-06 0 0.01801763581 0 0 0 1.857891621e-12 0 0 0 0 7.902733091e-27 0 0 0 1.102416126e-05 0 1.417284045e-18 0 0 33.03646076 0 0 0 0 0 0 0 0 1.524565408e-06 3.029103716e-14 0 0 0 0.08144084072 0 0 594.5719618 0 1.682044534e-08 0 0 44057.77722 9.529328207e-07 0 0 0 0 0 1.163841646e-16 1.164263258e-11 2848.048822 0 0 2.351779642e-14 1.417604598e-09 1.999177341e-08 0 0 0 0 0 0 0.002259579969 0 7.86085773e-14 0 +4.835441358 0 0 0 0 0 3.25384104e-05 3853.060325 0 0 0 1.253688065e-10 0 0 0 3.263043804e-06 0 1.276528451e-12 0 0 718335.2077 0 0 0 0 0 0 0 2.116919786e-10 0.009017696992 109.7547874 0 1021456.674 0 4.018805732e-09 16.28219117 0 0 0 0 702396.6609 0 5.430021848e-09 0 0.000352980602 562.7101977 0 0 0 0 0 8.49925471e-11 0 0.02082018739 0 7.368298305e-08 0 0 0 1916110.42 9.594174204e-11 0 0 7.036788616e-09 3.206865441 0 4.363753413e-06 1.409557296e-07 0.004446374119 3.762812164e-14 3328.125138 0 0 0 0 0 0 0 0 0 0 0 0 0 11225.89853 3462.290249 2.41689451e-18 0.0002057967191 0 0 0 0 1.091236054e-10 3.994616846e-06 901275.2521 2.888177028e-19 0 0 0 1.419876768e-07 49371.96467 4388.020666 0 3.125991912e-20 6.97419076e-05 0 13.88127057 0 8.301116811e-09 0 2528970.94 0 4.046031323e-17 0 8.347931805e-11 2.113051257e-06 4.710462798 0 0.000561718651 0 0 633485.8569 0 0 3.351924206e-12 3.203067084e-09 34.79116245 0 3.244557358e-07 0 7.083350502e-17 0 7.546238846e-19 2.33412831e-05 0 112857.0424 2.163318976e-05 4.447986079e-10 3994.386355 0.0001498070655 0.0001890230554 8.643391037e-19 2.124248417e-20 5.395213339e-23 0 10.8044177 26.06135245 0 1.496389506e-06 0 7.074630338e-13 1.474481009e-08 165.7259661 32251.06413 173.5230069 2.484848383e-10 1.218025454e-06 1.990641297e-08 0 0 0 1.677410206e-11 0 8.33707604e-07 0 0 0 1.998870113e-15 0 0.672564016 4.550235663 0 0 0 0 5.361287234e-08 0 7.175571055e-10 0 0 0 3.255496833e-09 0 2963.432881 269.5872978 0 0 0 0 2.159525607e-07 0 0.0005311052068 9.43519599e-06 95.67339006 0 5.368354133e-06 0 8475.738822 381861.2147 1.857861741e-09 0 129337.6 0 315757.1397 9.282768351e-05 0 0 0 1.818072431e-10 0 0 0 0 0 6.17420053e-13 0 1.029014718e-07 0 0 0 0 0 1.697506878e-06 0 3.056783215e-18 829463.5468 0 0 1775.446552 0 1364406.192 7.268454667e-14 0 2.552009717e-08 14941.9029 0 0 0 1.838793042 0 0 0 0 112.0320657 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002818130167 0 0 0 0 0 0 0 0 368788.238 0 0 0 0 8.186124775e-06 0 0 247740.2617 9.708195099e-08 0 0 0 0 0 0 0 3.055063945e-15 2.653338811e-09 0.06879406535 0.003778498233 0 0 0 0 0 1.224170075e-33 0 6.347249998e-09 2.091082591e-14 17191.23798 0 0 2.783723096e-17 +0 2.775537463e-11 0 0 0 0 3.060713691e-09 0 0 0 0 0 0 0 0 0.001319298193 1.577774211e-05 921685.7546 0 0 1.20603559e-21 0 0 39911.70058 0 0 436720.2063 0 65.04092706 304.2185355 0 0 0 0 13.73409302 4674.409291 0 0 0 0 0 0 3.20066647e-14 0 0 5.279099451e-08 0 1.527906515e-15 0 0 0 5.596303138e-07 0 0 0 0 0 0 6.795103885e-10 0 3.343468608e-19 0 0 0 0 0 0 0 0 1925071.752 1.52736413e-09 0 1.142811111e-08 40177.10622 0.004175557229 6.614551456 0 0 565410.3159 0 0 0 0 0.01149517895 8.714624361e-12 0 4.370329287e-08 0 0 785767.3606 0 0 0 1624.994031 2.388409121e-05 0.7693908954 0 1.342785778e-11 1.091800409e-07 0 1.63611154e-05 0 0 0 0 0 0 0.6821001575 0 0.1810219495 1.156914698e-15 2.063507646e-23 0 0 8.429128158e-11 0.0004433697981 8.969330094e-07 0 0 0 12939.39587 1.370646413e-05 0.003762687807 6.133208597e-06 0 365.3273687 0 15568.07507 1.983070145 0 0 1.33731101e-06 0 0 0 0 2.38705759e-15 106564.3622 2.537640461e-12 0 0.0116537525 0 0 768.529105 0 0 0.0001027366534 3.544317019e-26 0 1.60090252e-08 0 6.441445472e-16 1.119468246e-10 4.919432946e-11 3.266299435e-05 0 0.01593796232 1.1488697e-07 2.33981642e-14 0.07695438522 2.750273029e-23 39.40256587 0 0 0 62.23222157 0 0 0 0 5.551249056e-12 0 8.685609685e-08 13.32061099 0 0 2.051907163e-12 7.446860544e-15 0 2391.95084 3.519900675e-19 11998.52659 0 6632.433843 2.652829221e-12 0 0.5340220214 0 0 0 2.458552806e-14 0 0 0 0 0 0 0.0004184489503 0.9357013804 0 0 0 0 0 0 0 0 6.986978334e-14 0 0.05247216833 0 0 8448.464495 7.451731394e-13 5.964871831e-07 0 0 4.453997321e-10 0 0 0.07975024413 385.9142115 0.0001450109672 0 0.2112449314 0.0004899713381 0 0 0 0 0 0 0 0 1.015052741e-07 0 0 81366.88642 0 0 0 57.77585794 0 0 0 0 8.183014954e-30 0 0 55045.14974 0 0 5.032206631 4714.970003 0 0 4.062363689e-15 0 0 0 0 0 0.8941347126 7.692402978e-17 0 0 0 97.81700836 0 0 0 0 0 0 0 0 0 0 0 0 43.54109212 0.4106017678 0 0 1.203430701e-05 0 0 115936.9395 0 0 0 0 0 3.923785025e-19 5.464753215e-05 0 18215.53887 0 0 0 +0.0001047271038 0 0 0 4.881403397e-12 0 0 0 0 0 0 5.646334143 0 1.183163982e-07 1.449267576e-21 0 0 0 0 0 1.567129878e-06 2.570809424e-14 0 0 18878.77191 2077.726954 0 7.737637179e-06 4.558022532e-07 0 0 0.003377902263 0.06500303421 0 0 2.389779267e-16 0 0 0 0 0 0 0.3622790656 0 0 2.587777184e-10 7.493950784e-07 0 0 0.08254806079 0 0 0.06771555347 1.455186707e-14 0 0 4.373933107e-16 1.699511138e-13 0 0 0 3.750948291e-30 9.150869054e-10 0 2.149916362e-06 0 0 0 0 0 0 1.198760521e-06 2.387931621e-11 4.913272699e-05 0 493.4283299 0 347349.5088 4.435931526e-08 1219.377015 0.02458251697 0 0.000187730053 0 0 1.306958963e-05 4.457678632e-05 0 0 309885.0624 0 0 8.19823216e-05 0 0 0.2744720592 0 0 0 0 3.647162361e-20 0 0 0 3.085433217e-06 0 1.428779042e-24 0 0 0 0 0 0 7.002861525e-23 3.514919171e-10 3.820100514e-07 0 0 0 0 2672.816555 3678.759679 0.002659836967 0 0 1.433471276e-05 4.03134123e-11 7.593779045e-10 0 5.325480816e-10 0 1.032287014e-16 148845.8272 0 0.001010499458 2306.333027 153077.8942 0.000239240433 0.1056161069 2.060087882e-14 0 4.174782389e-08 0 24.51950846 2.02134664e-08 0 0 61405.12128 0 1.062404481e-14 0 4.014841602e-10 410461.0524 0 291559.2559 259.9492217 0 3.491434327e-11 0 0 0 6.417087562e-08 0.000187758932 0 0 3.391443011e-09 3.095684256 3.533214062e-23 13.1185266 0.01715169759 9.080658805e-06 0 2.008016948e-09 0 0 0 0.9366024461 0.1097173386 478.810057 1.37739654e-16 5.96759607e-09 0 1.575990667e-12 0 0 0 0.0004376242214 0 8.257520566e-13 0 1.739699923e-13 83854.73162 1.309783493e-12 21609.3918 0 1.791824429 1856.981574 0.003931566567 1.942003223e-12 0.007376088923 0 82.47167805 0 1793969.117 6.161249969e-06 0 0 209442.4401 5249.506808 4746317.127 8.581603222e-07 0 0 0 487028.5455 0 0 0 4.426482631e-06 0 2302.154008 24.72305115 0 1.841190698e-06 1264403.206 46.18529664 0 0 4.378442011e-11 0 0 0 0 0 0 0.5062721928 0.008000348213 0 0.2175703915 0 0 0 0 1512.002754 0 0 0 4.016610686e-20 68048.43679 6.243224377e-09 0 0 8.152280106e-31 0 0.0924182237 0 0 1061190.254 0 399405.8004 0.160816306 0 0 2.372689902e-07 0 5.716635866e-08 0 0 0 0 0 0 0 0 0 0 0 0.05711188348 0 5.322385877e-17 0 0 6.398109427e-10 4.120093346e-05 0 0 3.95162646e-05 0 0 0 0 0 0 1.110715844e-12 0.03646839241 47.39020813 0 0 0 0 +933.2466114 1.008199157e-13 2.024464169e-08 0 0 2.82938095e-12 0 0 0 0 2.07682888e-17 0 0 2.990787032e-07 1733887.117 0 0 0 0 0 7.738941068e-11 0 0 8.479557454e-05 0 0 0 0 0 0 99095.15151 11.51959178 9.767340089e-20 3.031316487e-07 0 0 0 2447.399407 2990.304811 0 0 0 0 1.128206143e-23 0 2653546.682 0 1597628.75 0.7539129373 0 0 0 5.132036551e-11 0 1.969719151e-06 0 0 0 0 29.03571335 8023.400616 0 1.393774494e-20 1417106.684 0 4.581903762e-14 0 0.003067795259 0 0 6.478925142e-11 2.465768635e-13 4.045550675e-19 0.0005695394807 0 0 5.974931787e-07 3.287772377e-11 65504.08456 0 2.242801379e-11 65.81858241 0 0 0 0 0 0 2.222663566e-09 101295.2212 3804331.887 0 3.566015218e-21 634.0516623 0 9.055508288 817.5200659 0 748452.8196 1.471792516e-11 0 73.60024042 0.001406371164 0 0 789.077412 0 0.427357746 0 0 0 0 691.0926787 0 0 0.0001011682659 1.2761113e-17 0 0 0 0 8.673098792e-06 0 0.6128455851 3.370941387e-27 4.163549929e-10 6822.729419 0.003146559147 0 0 0.05523487803 19535.12713 3.038030886e-07 0.004953277074 0 7.633799328 0 0.002220721578 1326.45751 3.841529228e-12 67625.97561 3.565508679e-05 0 0 0 10863.7188 0 0 1.255548042e-06 863.2504528 0 4.406560021e-10 0 237492.3852 0 1.07841708e-07 0 9.921157899e-11 0 0 0.0148393549 0 698710.8635 0 8.767125448e-18 9.98102037e-13 0.121867907 0 8.775705033e-08 0 0.03364874095 0 0 315990.8377 3.13754079e-16 4.796486451e-11 0 1.967530246e-06 0 0.003566078746 0.0007895915975 2.40231546e-17 0.6192640636 0 0 0 5.069960155e-28 1.779315168e-06 0 8.938699962 0 1.077582906e-05 0 1190.523189 0 0 0.04978039901 1.700941614 1.758501782e-12 0 0 131992.6407 0 1.330822409e-13 0 4.375886573e-14 0 5.053056743e-14 0 0 0 0 576.9084481 0 0 0 0 1683749.93 2.389597879e-20 0 0.001564322134 26035.93375 1.252548877e-07 0 1.800927097e-15 0 0 0 0 0.0008267481584 0 0 40.63914229 0 388346.2761 0 0 0 0 3.986041812e-22 0 0 1.008042908e-07 0 0 209.7503478 0 1.293186455e-17 0 1.243282889e-12 4403811.601 0 0.9284841793 0 0.4152876969 0 0 0 0 0 0 0 3740.493727 0 0 0 0 0 0.0005318673205 0 0 0 1.191888071e-13 0 0 5026.878914 0 1.652745022e-16 0 0 0 0 0 0 0 3.134882231 0 0.0002099535478 0.001215546276 0 3.139925988e-06 12.04086234 0 0 2.654600197e-22 2.890814546e-12 0 0 0 0 +0 0 0 0 0 0 0 0 6.9230486e-08 0 0 0 0.978858316 0 0 0 1.285008113e-15 1.393088144e-08 0 559424.1599 0 373742.1511 0 0 0 0 0 0 2.706173655e-06 9.580404703e-07 0 0 3.397683152e-11 0 0 0 4.074127788 0 0 0 0 0 0 0.004185464859 0 0 0 8.29147124e-27 0 22968.16337 0 15467.53692 5.517671965e-08 0 0 0 0 42607.57534 299.7949443 0 0 0 784508.7426 0 3.589806241e-11 6.757237538e-10 4.100966508e-13 592250.9894 0 0 0 0 0 0 46827.35325 0 1.488105267e-21 0 9.530435115e-26 0 0 14239.62103 0 0.0005614044893 0 196759.3923 5.175706228e-05 2.508433019e-10 0.005614334665 0 0 2.943555331e-27 5.044451334e-17 57927.97346 0 0 0 3.527652692e-12 0 0 0 1362381.863 0 59556.31441 0 2.619086388e-09 0 123241.0995 0 0 0 1.354998641e-09 0 0 0 37493.0769 0 0 0.01532972474 0 7.773790361e-31 1.651696132e-06 0 0 2.366600658e-05 0 0 3.429444791e-12 116777.1064 0 0.2716287692 0 0 0 5.449309227e-17 96320.03856 0 3.804828642e-08 0 0.007925566131 0 1.513243794 0 0 359.020526 0 0 0 0 0 0 2989671.315 0 1206567.301 0 1.093428667 0 3.811123626e-11 4.079314731e-09 256730.1872 3.638342704e-06 1311.127778 0 0 0 5.643172462e-13 3.996788877e-17 0 0 0 0 174941.4141 157.4860557 0 0 0 0.0003194967986 0 0 0 9.436730076e-07 3.66338032e-15 0 0 4.962287945e-11 35.73034245 70492.50896 1.151633653e-13 36497.61816 0 1.994728211e-10 0 0 0 0 1.993693614e-19 0 0 0.3251653906 0 1.312265896e-24 0 0.000141256352 0 0 0 0 6.421403168e-14 0 0 336.2656337 0 1.146017547e-10 0 0 0 0 0 7.205744549e-10 3.138014456e-09 6343.517348 0.0005372563917 0.0006711503543 1.942778102e-11 0 0 0 0 250523.2646 0 0 0 0 0 0 0 0 0 0.002882709387 0 0 0 0 0 2.46072671e-12 0 4.24669433e-05 3.012140136e-11 0 0 6.294900788e-24 0 0 0.000110711388 0 0 7.478169549e-10 0 457.5494331 66837.87345 0 0 0 0 0 0 0 45.83508048 0 0 0 0 0 0 0 0 0 0 0 0 0 0 533057.4914 0 2.228190377e-17 0 0 0 0 2.833826986e-13 3.867519774e-25 0 562001.9007 0 0 0.091729317 0 0 0 0 +8.378122085e-15 1.19464383e-13 0 0 8.42505218e-14 0 1.541373922e-06 0 0 0 0 0 0 0 0 0 0 3.884473912e-05 0 0 0 0 0 0 0 0 122.9381657 0 0 0 0 1.105133689e-06 7.202233862e-12 3.145537505e-09 0 1.835159895e-07 0 0 1.052778677e-06 0 0 0 5.722696422e-13 0 93.36984713 0 0 0 0 0 0 0 0 0.002270130701 5.465588978e-11 1.132645364 0 0 8.618567179e-11 0 0 8.97175045e-08 0 207107.7274 0 4.587812816e-10 0 1.055366284 0 0 0 0 2276.268263 3.130176306e-05 453161.413 0 0 549.9845446 393824.9892 0 0 0.0001094938295 0 0 7016.57784 0 184126.8462 0.003089438631 7.250367598e-11 0 0 0 0 4.886197863e-08 4.212306953e-26 0 0 5.52690252e-09 0 0.0001611156926 7.82556667e-06 0.007971978188 3.118071288e-07 0 17955.02888 5.220773621e-14 0 5.905741238e-11 0.003398985595 3.376740387e-13 106053.5324 3.759890536e-21 0 0 105.4304411 0 0 1.649773694e-06 0 0 8.400930172e-13 0 0.2007681507 0 0 0 0 0 0 27440.03637 2.082280825e-07 861.4110937 1.793643077e-11 0 0 566860.5483 0 2.82410343e-08 0.004567518339 0 0 0 0 0 2.083906067e-05 1.594351213e-11 3.991403115e-09 3.871853933e-16 0 0 0 0 541.5235476 410.1900485 0 1.318232407e-28 1.481480519e-07 0 0 0.07085649242 2.452231623e-12 2.066483823e-14 0.001612423307 0 0 0.01766734265 0 3.537843895e-05 0.06150811173 0 6.793623922e-07 0 201.9303433 0.005431555371 490.8006993 0 6.711831312e-20 0 4.254244157e-07 0 33.80316885 825.9429387 0 173.7631939 1.87692309e-16 0 0 0 0 4.045015117e-11 0 0 0 0 0.001263777632 0 0 5.66635585e-08 0 0.006716117009 2.416242898e-20 0 0 0 0.04023732747 0 4.157153557e-09 0 1.094951317e-07 31798.25346 169.9068719 0 1340.386735 0.01014805372 4.273131675 0 0 2.855156849e-05 4.137780977e-12 1.285504842 0 7.059845239e-05 0 0 0 2093.859736 0 0 0 0 0 0 0 0 5.325477442e-05 0 0 0 8310.832131 0.7715844792 0 0 0 0 0 0 0 0 0 0 1.407418e-27 0 0 0 0 0 0 204263.7047 4630.080557 0 0 0 0 0 0 0 4.74768744e-10 0 0 0 0 0 158317.3259 0 0 0.07265258582 0 306881.2004 0 0 0 0 18.82942297 0 5.084549397e-24 0 0 1.369946889e-10 0.0001086287426 0 0 0 4.757872813e-06 0 1.922443548e-14 0 0 0 0 0 +7.707041721e-15 2.253740236e-06 0 0 0 0 0 2.353434958 0 0 0 0 0 44.12877645 0 0 1.152076515e-22 0 0 0 0 0 0 0 0 8.475985078e-06 0 0 0 4.320442036e-09 0.0004751895048 0 0 2.064886084e-07 0 0 0 0 0 3.652268352 0 0 0 1.443055911e-13 577.9672415 0.1976286942 0 0 0 0 0 7.116264045e-20 1.978627507e-09 8.581780335e-06 6.673455302e-06 7.2943334e-22 0 0 0 5.764940745e-24 1.451210464e-19 5.670522734e-09 0.002821695037 0 8.173359832e-20 3.006756394 0 3.730089089 0 0 0 0 2.46423603e-26 0 0 0 161.0449549 0 0.8061831016 0 0 68253.66192 0 0 0 0 3556.009709 0 0 3.344044404e-18 0 0 0 6.877877236e-07 0 0 0 0.04263253477 0 0 0 0 2.860536249e-09 4020.084752 0 0 1.941933263e-16 2.535616048e-15 1.346103647e-13 9969648.239 0 46020.10522 5.195014687e-12 0 128.2230184 0 80682.01344 2.018702748e-07 0 0 0 225808.1902 0 1.166683162e-10 0.04105794279 0 0.002001171804 7.951978418e-12 2086.254636 0 4.114989282e-07 1.484957538e-07 0 0 0 3.751314933e-15 0 6.083473237e-06 75232.19079 62.3017365 0 0.0004526213953 5.133974561e-09 6.03368454e-05 0 0.9760743712 7.398553834e-12 1.817888751e-14 0 69223.39375 164.5156284 0 2.406721885e-19 2.212683054e-21 0 2.119980643e-10 1.431525445e-06 514564.6802 0 0.02069656208 0 3.021310886 3.456055005e-10 401044.8336 5.800641404e-21 0 0 1117.963137 0 7.50075738e-09 1.857006587 7.486260691e-05 0 1.520211246e-14 1.274784437e-09 0 0 0 1.509142524e-06 14971.48765 4.167800146e-05 2.729595934e-11 23592.54258 0 0 0 0 6.677291391e-09 0 0 0 4.077674075e-15 1.882337979e-05 112967.4388 8.291387953e-08 0 3.264195476 1.718497015e-24 16498.54721 0 6.062285774 0 0 13508.83267 16242.29813 0 3.678742927e-08 1.068327116e-16 6.222032039e-05 0.0002115199977 0 5.714794053e-05 0 3.334198719e-22 0 0 0 0 0 0 0 0 0 1.723918071e-14 0 0 0.00374989474 0 0 137758.9057 32944.43409 5.152594559e-12 1.641356297e-14 0 0 0 0 0 0 0 0 0 0 8.336866175e-13 0 1.33222141e-05 0 35.20350207 1.695904191e-12 0 0.03119301024 0.04278890281 6.839461873e-14 2.615109896e-08 6.533523851e-18 2.041483002e-11 0 8.59123951e-33 0.6749038531 2.597882868e-20 4817.825064 0 0 0 0 16291.29931 0 0 0 0 9.406788093e-13 0 0 0 0.00686260053 0 0 1.319025596e-08 897.750597 0.0001448610902 0 4.855622675e-06 0 3.268015785e-18 0 0 0 0 2.89565335e-08 0 0 0 0 1.187917238e-07 0 867588.8296 0 0 17.08293019 0 +0.003841022918 0 0 5.561093565e-27 0 0 1661376.938 0 1.147841745e-06 3.521064146e-35 1.3137557e-06 0 0 0 0 0 0 0 0 40333.56994 0 0 8.669676004e-24 0 0 0 0 0 0 0 0.1252668237 4.969648433e-24 2.542965343e-14 453438.9037 0 0 106405.1648 0.001474921748 0 0.001818392768 0 0 1.010308701e-10 0 0 0 0.04544116932 0 0 3.93475269e-05 0 0 1.109863297e-10 145.3091014 1.327683429e-05 27.44688381 0 0 0 0 788.9088815 0 8.26768376e-22 0 2.945697412e-05 4.323979251e-13 36020.69698 8207.497545 0 0 0 0 0 0 0 1.591878266e-11 9943.099078 0 0 0.1224966816 1.758139811e-13 2531.847563 0 0 1138.536124 0.001131118557 142339.2386 0 5.163800321e-15 0.001463613581 0 0 1.460872954e-07 0 2.349809716 0 7.735991934e-10 0 9.267709903 21.84926666 3.66325115e-07 0 0 0 3509.470239 1.14867572e-19 0 0.002042711088 0 1.335683979e-07 0 1.957703997e-05 0 0 0 90500.89895 0 80.74922923 0 4.987826675e-13 7.966123415e-11 5.193395895e-07 0 0 3.226234322e-07 19568.31641 0 4.1930008e-10 0 2.880722532e-10 2713.513318 1.924891548e-11 4.89558186e-09 0 0 2.274423543e-18 0 0 919.31771 0 8.129997672e-25 0 1.036406624e-05 7.768465387 0 1.275188852e-06 0.1116542547 0 0 0 8.633315057e-15 5995.52247 1.607805324 103148.2278 0 0 0 0.01076305713 2.709253896e-11 2.26536597e-11 2.254935623e-11 777.0498668 0 7.42853851 0.03638573028 549348.311 3770151.668 225.6698771 0 1680627.445 738.2422938 0 3.372085432e-12 1.577915258e-17 7.203973635e-11 3.207789969e-15 0 3.306621902e-16 0 0 2.372959316e-05 0 0 0 0 1107748.59 0 0 1384.9073 0 4.867810697e-06 0 26.24717384 5.806625471e-18 0 0 0.001671387854 0 0.0456043394 0 64755.84042 0 0.1841396576 0 0 780558.7806 0 0 0 0 3.754137974e-12 4.83273419e-05 0 5.952740011e-11 2.113990082e-10 0 0 0 0 2.256224432e-06 4.055675184 0 0 0 0 846915.9754 0 0 26302.33238 8.693606939e-27 0 0 0.08037069056 0 0 0 0 1.20668229e-08 0 0 4.979039844e-07 0 0 0 0 0 0 1067.067613 0 0 1.535492641e-13 0 112.7338819 1.245229069e-05 5.773163428 0 3.940260692e-11 0 0 0 0 321536.2509 0 0 0.0005796095955 7.031266004 0 0 21483.68217 0 0 0 2.558451352e-05 0 0 0 7.721629962e-11 0.4517302412 0 0 2.888314682e-09 0 0 0.03154574326 0 7.445506174e-11 0 2357433.177 0 0 0 5.684315202e-12 0 0 8.732086912e-08 0 1.05264319e-26 1.302936352e-09 0 0 +0 0 2.602421902e-16 0 0 0 0.115978753 0 0 0 0 4.07522286e-12 3.157785089e-05 0.0186930571 0 0 9.260076041e-25 5.420567663e-05 0 0 3.506645482e-07 0 1.987649653 4.544350707e-19 0 0 0 0 0 7.810727443e-13 0 327.6988942 3.53743515e-06 0 0.3920798309 0 0 0 0 0 0 9.028698168e-16 1.45305273e-14 0 0 0 0 2.552269362 0 0 0 0 0 38810.73924 0 0 20042.25096 0 1.168424319e-07 0 0 0 0 0 0 0 0 0 3.686927133e-15 1.055216622e-06 2.880116069e-17 0 2.612494976e-09 0 0.000257843803 20321.72255 0.002562124671 3.419862595e-12 0 0 0 0 7.183609325e-09 0 0 0 5.523007552e-05 0 0 4.260533305e-11 0 5.351046812e-08 9.488403846e-17 0 188.7298219 0 0 4.567021537e-13 2.825032229e-06 0 0 1.743875365e-16 0 2.083065163e-26 0.01960408835 0 0.008340559706 0 14965.82202 0 0 1.906606179e-08 0 0 0 0 1.688747767e-07 0 0 3.370141407e-10 1667343.84 577.4389088 0 0 760600.2525 0 2.31007211e-05 0 0 0 0 121247.2399 0 1.944335368e-07 0 0 4671.364233 0 0 1.402026966e-11 0 0 0 0 0 0 0 0 1.332495668e-05 3.936232816e-05 0 2.710117335e-17 0.0002677759955 3.578291336e-09 44.63132455 1.519831492e-07 0 2.976084467e-19 0.0003755114063 6.447987171e-12 0 0 0 0 133.2114452 247.1819593 0 0 0.01583581663 7.711038437e-13 0 12.44314528 7.355116197e-17 0.8818945112 3.439722904e-15 24568.26262 24.72199912 376899.818 1.967954444e-11 4.156778175e-10 12103.08603 0 0 138.3194234 0.0002595899016 1201.986663 0 2.286832818e-05 0 0 190.4361873 0 0 0 1.825881297e-13 4.548478532e-09 0 553180.775 2.261881774e-12 0 334653.585 0 0 0.0001230707547 0 72185.09569 0 0 3.834481189e-10 29.27892081 0 120.6787024 50.85539885 0 0 0 0 0 5.363655143e-05 0 0 326129.1076 3.578928468e-21 0 0 0 8.856170549e-05 0 0 0 0 0 0 0 0 0 0.03906721839 476215.3875 1.050713736e-07 0 52022.05902 0 4.131324806e-15 0 0 0 0 0 0 1.438198676e-17 4.050311802e-08 0 0 0 0 2.980633748e-16 0 7.621939621e-19 0.0002631093063 54172.53343 0 0 1.534719473e-08 190.2618188 1.946862355e-20 0 0 0 0 574625.1574 0 0.000898005059 0 0 0 0 0 0 0 6.718084618e-13 2005590.027 0 0 0 1.427307862e-13 0 4.975390866e-19 0 0 0 1.117106794e-13 0 0 44.42746549 0 0 0 0 0 0 +2.575616108e-23 0 0 511932.9489 0 0 0.0105670942 1.463387519e-09 0 0 0 0 0 0 0 0.1572571721 0 0 1.022901537e-08 5.129924173 0 0.5906720114 5.372621286e-09 1.740418149e-17 0 725296.2002 0 0.002954705941 0.3981538181 1.27105126e-16 195082.2203 0 1.692860267e-17 1025984.777 0 0 0 0 4.253431042e-10 0 35098.65581 0 0 0 0 3.886849401 0 0 133.5122261 5547.48285 464.9158381 3.414157534e-09 0 6.664798895e-15 7.320414035e-12 0 0.160715855 0 0 1.180042493e-10 0 0 1.740008867e-07 0 0 0.09747354156 0 0 0 0 7.427551477e-13 0 0 0 0 0.05098321995 0 0 0 0 1.022708849e-06 3.095160745e-10 0 1079.0316 5.180741473e-11 1.249692184 0.1222372029 326481.668 0 0.01139484118 0 0 128376.2405 347418.6215 0 1.361481669e-14 1211.327645 301.4297902 0.0001398827065 0 0 0 0 0 2.934036904e-11 0 3.086660305e-14 0 0 0 0 0 0 0 7.055711722e-13 6.319284687e-11 1045382.561 0 4.036563216e-12 0 0 0 0 151237.5198 2.944211818e-07 0 3.404840898e-11 259.6116769 0.00898828547 2.722923377e-09 0.003352197808 6.659016911e-07 0.7785926099 0 0 0 0 35.56110707 0 0 1415.199984 0 6.000109769e-09 0 1.209277675e-14 1.688861334e-15 0 7.644035791e-15 0 0 4.209533764e-11 0 5.08917134e-07 3.328661355e-10 0 0.0005987608198 0 0 0 2.812704874e-08 0 1.001256743e-14 103.6007015 0 0 0 0.01492873639 7.192764328e-08 0.006378782231 0 0 0 10689.37219 0 614177.5565 1.100671878e-08 0 0 0.2727934204 4.926439818e-10 0 0 0.03049838397 0 0 0 674882.2178 0 4.453361766e-07 0 0 0 9.472175861e-19 0.368086825 8.291226398e-20 0 0 0 0 9.901497611e-08 90.12211628 2.332130824e-11 0 6.4544426e-12 0 0 0 2.880358137e-08 0.01111607685 0 68598.42002 1.570335107e-12 0 0.001148310059 5082705.379 0.06591521683 2.04864831e-09 0 2.074801567e-06 699.283472 479515.8568 0 19667.88375 0.06729841756 5.952713941e-06 0 0 0 0 2.026185037e-08 0 0 0 0 0 0 0.3925931299 0 0.0007921115882 0 0 0.01772984213 0 1.954803782e-16 0 0.09246670784 0 2.368481713e-22 65414.91655 0 0 0 0 0 0 0 11.38346604 509455.8842 0 6.692382186e-14 0 0 0 0 0 0 147936.5462 0 0.009473932861 0 191.8729051 0 0 0.004763984235 0 0 0 0 0 749368.3451 6.874145275e-10 0 0 2.845348949e-14 0 0 0 10642.84992 0 0 0 0 0 0 0 4492.633774 0 0 2.284451168e-14 0 +0 0 0 0 0 0 0 0 0 7.652686501e-18 0 6.33652505e-17 0 0 0 0 0 0 0 0 29678.73283 3.923357407e-09 0 1.324826342e-06 0 2.618013704e-18 0 0 2.496707449 0 0 0 0 0 0 0 3.973734909e-13 0 0 5336.356467 7.599447422e-10 0 0 9.089724847e-07 0 0 0 0 0 0 0 7.074573035e-26 0 0 0 1.472502147e-13 0 0 0 0 0.006175932375 0 0 0 9700.58748 0 2.344553686e-08 0 1.598977094e-12 236.1750402 5.190244559e-16 0 0 4.52323365e-17 0 1047.2104 0.04781161715 2816.296135 0 0 0 0 1.008258886e-14 8.881104683e-34 2.648166956e-18 1107579.108 0 0 194723.5685 0 0 0 6.733742641 0 0 88.36846964 353.3279961 3.132705535e-08 1.133834536e-07 0 0 0 0 0 0 8.019341091e-09 7586.783805 0 0 3.283721142e-13 4.332082086e-13 0 0 690.2387907 1.662833261e-14 0 0 13.38769288 4.702355517e-12 0 0 1.433907211e-16 5.10605807 0 2.039122783e-05 0 2.863041473e-05 9.15231024e-08 5.958963331e-08 0 0.03145826889 0 1.343764771e-11 68.15795063 0 0 3.28851131e-06 0 0 0 83.68378509 1.163768509e-07 0 0 0 0 0 575378.3286 0 0 4731.132731 0.3766933608 0 2.203283559e-13 0.001058216135 0.01541841384 0 0 0 0.1783883697 9.690616841e-07 7.760135159e-16 0.0004144884589 187.0805194 6.38989324e-13 0 0 0.5856188616 0 0.002277594515 0 95399.75441 0 209.8900359 0 2.115225925e-19 7.265094873 0 4.812711137e-24 280397.7463 418941.4748 1485.572573 6889.239486 3.939378672e-12 0.006104122604 0 0 620204.4166 0 0 0.687192056 1.033953826e-11 0.0004347476926 0.0007783131724 0 0.05297504722 0.09927425663 0 0 7886.077759 1.04600239e-16 2.767593794e-15 0 0 0 0 44990.34456 7.117946819e-13 3.769327502e-18 0 6.385347053 215.5666445 0 2305360.478 0 0 0.006745067964 0 0 230547.9823 2.110202518e-08 18930.18514 4143.778751 0 0 1.210754712e-13 1.973100767e-05 5.74207265e-10 0 0 0 0 0.8781685953 1112755.52 2.327098913e-05 0 1.854675895e-09 0 492.5505199 0 0 0 0 1.46845655 0 0 0 1.311684626e-12 0 9.769080391e-09 4.550721417e-16 0 0 0 4.882053608e-09 3.692275338e-09 0 0 1.454744393e-26 0 0 0 4.571504001e-10 1.413715478e-32 1.141313015e-24 0 0 0 0 0 3.497275597e-09 0 6.789576942e-11 0 0 0 0 7.482215843e-14 0 1435258.907 122955.309 0 0 0 1.016145361e-07 0 0 2.428886215e-11 0 4.378178262e-17 0 5.442079957e-13 0 9.904319108e-08 0.141311265 0 0 0 0 0 +0 0 0 1.226376913e-15 0 0.6667470366 2.204059505e-12 0 398270.7661 0 1.025250697e-09 3.31315528e-08 0 0 0 0 55905.11473 0 0 5677.520388 0 274064.8833 0 1.126992708e-08 75.46465546 0 0 5.37285659e-12 1901577.425 1.427369929e-27 0 5.629186221e-05 0 0 0 0 0 0 0 40.00262451 5.270161549e-12 0 1.339504477e-15 2.572896835e-07 931.6024114 0 0 0 0 0 0 0 0 0 0 110296.7587 4.623133585e-12 0 0 1.073711567e-14 0 0 0 6.046071087e-06 0 0 8.666524738e-07 9.786633436e-12 0 0 4.569723107e-08 1.65316376e-05 2.557908007e-09 0.03631345878 3.894635464e-27 0 0 0 0.004279113947 0 1.954317559e-09 45.54899068 0 0 58611.20573 0 5.319528993e-17 63106.75419 7.361843351e-27 213.6526392 5.480148117e-13 0 1.073077068e-14 0 1.254291706e-10 0 0.1044477725 0 0 0 0 0 0 0 6103.519217 2.124838487e-17 6.971934934e-08 0 0 1.925158263e-17 0 6.236763158e-09 0 0 9.788542398e-05 0 0 0.003356632193 0 0 0 1.355366218e-19 0 5.267082852e-15 0 0 0 3198.288678 0 0.001643106232 0 0 0 0 0.02251360772 2.395001567e-05 451341.1098 0 6.224833859e-10 0 0 0 0 0 0.004216637922 8.171391673e-05 0 4.199662277e-05 0.1185103213 0 0 0 0 4.022702341e-20 0 1292696.742 0 7.841858422e-09 1.252097512e-06 0.6578275936 0 743.9824537 0 840495.2711 2.111923559e-21 0 0.001036038516 153139.597 37442.09648 0 0 0.0002009613214 0 5.860715199e-12 0 2.67070779e-33 1.72117998e-06 3376.841409 2.481761662e-11 0 0 0 0 0.0002491867695 0 8.438079414e-07 0.7094360358 0 0 0 0 1.338749866e-11 1.02368018e-13 0 1.047745875e-05 0.0261965173 1.911527698e-14 0 0 0 8.970920672e-05 0 0 0.7903757425 9.214876832e-22 5.180219322 0 0.003685544638 0 0 0 3.487509387e-13 0 0.0004111656904 0 0 0 7.84303702e-13 0.1190313788 0 0.006769803705 0 6.222578214e-12 5.36641676e-08 0 0 6.47800555e-29 0.9444894085 0 0 0 0 0 273277.6633 0 16560.22193 0 0 0.4015764279 0 0 0 505909.1343 0 0 0 0.0001137564973 26818.68556 0 0 0 7.920105906e-09 0 0 0.01656399516 0 0 6.338874776e-10 1.107059633e-22 950.3382003 0 0 0.003534630994 5.011113653e-13 0 98978.55242 5.661878407e-15 0 0 598597.6922 0 11200.18805 0 0 1.624278088 0 7.828389611 0 0 0 3.432873946e-13 0 0 0.001873830778 2.205850597e-09 0 0 6.96254962e-12 0 0 25936.33635 1.08798488e-15 10.67699057 0 0 0 0 0 9647.239782 0.04557439225 +1.402758481e-08 0 0 0 0 4.133258194e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.960300018e-05 1.015038506 0 4.62197433e-25 2.491960973e-09 0.0006099806335 0 8.708552326e-15 0 0 0.01090488964 0 0 0.05380808697 1.174393594e-09 0 1.686028443e-06 6.622726789e-10 0 0.04365372354 0 0 0 0 0 0 6.484710991e-07 0 5.942304462e-09 0 0 0 81262.79117 0 0 0 1.358715862 0 0 0 2.683654668e-16 0 2.073667445e-14 1.588216842e-06 5.057430106e-15 0 0 0 0 2775.160644 0.1283799969 0 0.004449384686 0 3.57362691e-07 1.98559935e-09 0 4.311505855e-18 0 3228.878305 3.086519849e-08 3.339931206e-19 0.08618722349 0 1.627137827 2.111208749e-07 0 7.099149314e-06 213299.1271 0 0 0.004302736985 1.546160744e-10 0 0 1.39451508e-11 6.092144149e-18 513868.2106 671772.1549 378067.6065 0 6.326296194e-14 2.482830581e-13 1.18045874e-05 0.08646787428 66.17044675 0 6.011588152e-21 0 1.841547937 0 1116.888478 3.648152475e-07 0 1.092926007e-13 6.826829482e-12 0 0 4.541831006e-14 6.629234779e-14 5.569726676e-10 5.150843211 0.007870895431 1.896165867e-12 5.423516943e-07 0.04022657419 4.43727169 0 0 0.1197005316 1532392.352 0.0008140084699 0 0 0 0 5.388510385e-06 2.445741076e-06 2.039379658e-09 392.3747804 1.315904787e-14 0 3.514002193e-17 0 101938.9568 1002.774121 0 1.511250423e-06 0 3134.943805 0 0 0.5199732561 64315.96109 0 0 0 1.774325298 5.498003895e-13 0 0 167436.9642 0 634499.8239 0.8338292546 0.0005298083551 6.177260375e-11 2.086658688e-14 21777.19257 8.10426467e-16 0 37808.52185 2.393958133e-07 0 0 3.875312017e-08 0 5.766270911e-08 396.4729411 1.953414599 6.587821668e-15 5.445244505e-06 0 0 2.758247241e-05 0 0 278.8131501 15177.29602 0 7.594987707e-12 0 5.038430504e-19 0 0 0 8.923503955e-14 0.00831636439 0 0 0 36.5825118 51724.31812 0.04411969648 0 6.839125339 2.844933997 0 0 0 0 0 0.09884244011 7.665858554e-22 0 0 0 1.53429649e-09 0 0 0 0 0 0 0 0 0 3155861.939 0 0 0 0 0 4.095120362e-16 0 6896.8797 0 1.667319962 2.854823416 0 1841886.165 192.0600153 2.105867733 0 0.01349458887 0 0 0 0 3.058704055e-09 0 0 0 0 0 0.006652362053 0 0 0 0 0 0 1.264614139e-12 1055.266381 0 2051187.211 0 0 8.496923218e-16 0 0 0 0 0 2.512624502e-10 2.209304822e-10 0 2.300075327 0 2.855574484e-13 0 0 0 0 28068.25405 0 0.4622791206 0 0 3.033340439e-06 0 0 6.203143702e-11 0 0 0 0 0 0 0 +0 0.004930106258 0.01940803169 0 0 1912596.381 0 0 7.919642945e-06 0 0.00100900926 0 0 2.000671797e-07 0 0 0 9.912564216 0 0 422514.2149 0 0 0 3.039405655e-12 0 0 6629.029167 289.9587638 466.8622496 0 0.0004221307676 0 2749.706777 0 18.33865856 0 0.003897125186 4.29221542e-29 2.528489804 0 0 0 0 3.782195364 0 1.372073531e-13 0.04284859799 0 2.487800842e-05 0 4.898775034e-16 0 2.311837297e-09 0 8.168880649e-13 0 211003.7449 3.431450921e-11 0 0 1012972.144 0 0 5.749345774e-12 0 0 4.908544186e-05 9.479498949e-14 0 0 0 0 2.562400555e-13 0 0 0 0 816.025497 0 0 0 110.4728666 938867.1515 0 0 0 0 0.005393884766 7.640157908e-14 0 1216.425216 0 0.0001131795015 0 0.0001466906887 7.214364019e-10 0.9275434756 0 0 0.0002912660979 0 0.0244485843 1.932483818e-06 0 1195579.315 2.349271682e-21 0 0 3.220808961 0 0 3.669376375e-14 0 0.1015768116 9.820274821 0 0 4.581568669e-08 5.718884462e-16 0 2.935353376e-16 3.870198487e-10 13.68509996 0 0 1.479318175e-24 194832.8615 0 0 0.05480434353 0 0 9.394910321e-10 0 0 2706.721775 4152.828736 0.000160982413 0 0 4.288928114e-20 0 0 30.60908979 1.173574634e-11 0 6.559713819e-05 0.0002921676734 0.01313235941 2.875374791e-11 0 3.490987352e-23 8.824222283e-08 0 0 0 0 8.077753455 528.1900485 0 0 5.606665581e-13 9.233909105e-07 2.025368713e-11 4.302865667e-15 2.777780731e-07 0 1.162373012e-09 4.335242925e-11 1.864130595e-05 3.123857533e-08 0.0002956658051 2.353537799e-10 8047.027143 4.480863579e-09 8.912868532e-12 0 9.672237837 0 5.628287923e-21 209795.8426 0 1149245.59 0 0 0 0 9.196886175e-11 0.06084971339 0 0.07631293582 2.090076271e-22 0.0415269966 6.061443123e-05 0 0 0 2.049880184e-12 0 2.273841375e-10 39.3974135 0.05405631766 0.5160850961 4.102320031e-07 0 1.579023682e-08 4396.609465 0 0 5.343399517e-06 0 0 0.000581933397 0 2.653150362e-15 2.427699799e-29 148770.15 0 0 0 1.889559279e-11 7.283794939 0 3.256458657e-10 0 0 0.5873671306 0 0 0 0 0 0 0 2.650442999e-19 0 0 1.195470036e-05 4.606671596e-08 0 2.300835722e-05 0 0 0 1314339.443 3.913368563e-05 0 0 0 0 1.066301165e-12 0 0 0 0 0 0 0 0 0.2924821148 0 0 0 0 0.0004175392816 0 5.047448997e-16 3.300710044 0 0 0 0 6.672951744e-09 0 0 0 0 0 0 255.1891727 0 0 0 0 7.335263311e-06 2.804300762e-05 0 0 0 0 0 0 0 0 6.27907993e-08 0 0.0978211285 0 0 +2.194815491e-17 0 0 0.00301156836 0 1845.444352 1.107786294e-16 0 1.21568936e-11 0 0 0 7.106465458 0 0 0 0.0001127608492 1.386249239e-12 0 0 8056.152301 0 0 0.01470492742 0 9.317569584e-05 0 1.405716584e-09 0 3.132158253e-07 0 0 0 0.001698538319 0 1.652273044e-09 5.689144697e-07 6.955762091e-09 37.16646448 0 0 0 49.07621342 0 0 0 6.484947576e-06 0 0 0 0 0 0 0 2.973009229e-11 0 0 2.975944754e-08 0 0 0 2050.100922 0 0 831.5489677 0 0 0 0 0 79.70214459 309713.5021 1.879116936e-10 445.5359194 0 0 0 0 0 2.172896447e-23 1477312.308 0 0 6.627636089e-15 5.311477765e-15 118597.3258 0 0.0002439792964 1.727374199e-05 0 0 0 0 99609.94458 0 0 0 0 0 0 0 0.004261086057 0 7.212197694e-05 0 8.192234312e-19 1.685013649e-08 0 0 2.913562663e-06 4.31668427e-07 0 0 111279.1445 9.447736871e-16 0 4.47111478e-21 10944.07539 0.1551939977 6674.741668 5.167932576e-10 0 0 0 0 9.336188648e-11 15482.45465 0.0002035221786 0 14.26430848 0 2.854639404e-11 0 86.77485261 177774.2422 1.305719463e-05 0 0 0 0 6.589683338e-09 0 0 9.96067074 0 2.049795229e-06 0 1.386899324e-20 2.687637656e-22 0 0 0 27602.09394 599390.2046 0 0 3.079050842e-32 2424756.129 3.622761 1.276669086e-08 1324.186411 2.651864693e-08 0 0 0 0.08209692781 5.296277163 0 0 0.0001811490984 3.58065516e-19 0 0 0 4.705944535e-17 44259.24567 9.040675489e-33 0 0.01121271167 0 189.7354635 0 0 5.671674379e-10 1.417482846e-06 0 0 0 8.612784163e-05 0 0 0.005458681227 0 381399.1966 0.07261615356 0 0 0.006011247038 0 0.02843900025 0.0002356844108 0.6122140314 0 2.452400239e-07 1.089731891e-05 4.947125248e-06 0 0 0 168.4890352 7.953733013e-12 0 0.02686328935 0 0.003255287259 0 0.5246454753 1.394517285e-08 0 0 0 336.811059 1.166137045e-13 0 9.988361633e-15 0.02616749837 1724.384191 0 0 120966.9813 0 0 24394.319 8.331379677e-11 5.777646895e-05 3.160142541e-07 0 0 0 104.7044606 0 0 0 0 1.115868685e-09 0 0.0001061295322 459665.2627 0 0 0 0.0002028255254 0 4.010691558 0 0 0.0107152595 2.3682461e-05 0 0 0 0 0 9460.742423 3.403203759e-11 0 2.005065192e-15 0 0 1.683122153e-13 6.002665101e-05 1.697862442e-14 3.921568099e-09 0 1.339550926e-14 0 0 0 119034.5388 0 301955.8153 0 0 8.901331973e-16 5.892121337e-16 0 0 532423.5209 0 0 0.06806426547 0.009483907404 0 0 4003.300558 0 0 0 0 0 +0 0 0 0 0 0 0 0 0.1161997892 6.579354256e-13 0 9.412462137e-16 0 0 0.0001505001063 0 0 0 0 0 0 1.110639986e-05 10646.03817 0 0 0 0 0 0 0 0 0 2.511996385e-09 0 8.325367766e-10 0 0 0 687252.7601 1.75964831e-05 0 9.384466922e-07 0 0 8.235858078e-14 0 0 0 0 0 0 0 0 0 2.127524041e-16 0 0.02383216216 0 0 0 0 1726545.13 8.276294851e-07 0 0 0 903263.287 9.663527737e-11 0 0 0 0 0 0 1.275723801e-21 1.780635042e-06 4458.21578 1267659.373 0 5.565180984e-16 0 1.292198364e-07 49.73772124 0 0 0 3.475978861e-07 9.773531657e-11 0.005254260519 0 0 0 1.811628253e-10 0.8512821563 2.411650695e-13 1.70930011e-15 0 0 0 3.859513512e-08 0 7.529653066e-15 1.26818439e-05 5.181912726e-12 0 6.547040043e-05 1.071111646e-17 0 0 0 0 0.2584637018 0 2.55601846e-07 0.0003632453051 0 5.19822758 3100.996347 27.95217233 0 0 3.568168215 0 0 0 0 0.002529080306 0.000437934584 0 0 2.512137796e-08 4.471832494e-07 0 0 0 1.778022709e-05 0 0 0 0 0 0 0 4.046458312e-13 0 2.116052711e-09 0 5.661116474e-08 0 1.458176567e-05 0 0 0 0 0 1876.966461 0 0 0 290.8567721 0 1.07206939e-08 0.003843098189 1944.502159 0.02825894384 7.201793043e-11 0 0 0 0 3.278082724e-06 322006.4446 0 0 9.326703376e-09 0.0003280911586 0 2.047664606e-13 0 0 1.330171812e-14 9.498940959e-06 11396.81642 0 0 0 0.001782378883 0 7.811503407 0 0 0 0 0 0 3.9994058e-14 66699.90221 1.33796229e-12 2.653500719e-07 5.548556566e-14 0 0 0.7714312493 1.329037892e-15 0 1166856.417 7.238188746e-14 135798.5251 0 331.2008321 0 582.7038663 0 0 0 0 4.438323805e-09 0 2.531068753e-08 0 3.23242746e-06 0 9.635593445e-12 2.256929074e-11 2.479793075e-11 821298.5465 1.432081801e-07 3.625483026e-10 0 0 0 0 0 0 0 0 0 0 302554.4045 0 0 146.5616732 0.05807827616 0 0 0.01651981317 0 0 0 0 1.425434977e-06 0 0 0 1.079561777e-08 0 2.680801644e-09 0 0 0 0 2.338530896e-13 0 0.01545285522 0 298402.1858 0 0 0 0 8.513158317 0 0 3.968737581e-09 1.478178184e-08 0 0.006967780613 2219773.005 0 0 0.003261924159 0 0 0 0 0 3.473589187e-09 0 121563.3967 0 0 0 0 1.242168751e-08 0 5.929060426e-07 3.7041066e-15 546.2457849 0.02088776466 1.975279504e-16 +0 0 0 6.158857753e-05 2.163575723e-08 0 0 0 7.232009412e-20 0 0 95.36187147 0 0 0 507.6086939 39.85257568 0 2.895193339e-07 0 0 0 4.538902491e-05 0 0 0 0 0 3.234229463e-07 0 0 1.615266053e-06 1.946015715e-19 35.08038265 0 0 1556.075148 139218.5786 0.0009425703046 5127.489776 0 0 702.3285444 0 5.339457517e-09 0 0 0 0 0 1512.498254 0 0 6.931953617e-20 4.232033258e-15 0.01853500695 0 0 1.002957482e-07 0 1.451747177e-12 1790227.087 0 0 3.785457878 0 0.2923386269 2.293463348e-05 0 0 0 2.666863041e-23 0 0 0 0 1.785215291e-12 0 0 4.982048703e-08 3.486860665e-09 0 2.514776505e-24 0.003824749831 8.15996905e-05 1.541498276e-06 0 0 6385.434747 9.321965324e-05 2.951249423e-10 0 0 0 0 0 0 0 6.849939837e-17 0 0 2.699554172e-16 0 2.252271454e-05 0.0001402087218 0 0 0 0 0 5.078316767e-05 177.6064995 7.033608246 3121.401901 1799561.948 0 0 171558.3584 0 2.669701528e-15 3.842768481e-05 0 1.678352873e-15 1.767425248e-22 19.56481837 3.821852423e-22 0 0 0 0 2.942671126e-12 2864521.18 2.457497295e-12 14656.40868 0 1.984332559e-07 0 0 0 0 6.050591859e-17 0 0 10.29557215 1.157693624e-24 8.552269019e-08 0.0001419797368 2.572107983e-16 0 0.004058645761 0 1.601912102e-23 0 0.02066688044 2.381141473e-07 0 0 6.209608437e-08 2.370588439e-21 0 41262.56712 0 5.548276787e-31 0 1.93636584e-10 1.360859267e-08 2.81976164e-12 0 11736.60264 3.823992656e-21 0 0 0 1.613644967 1.739079944e-16 0 2.225949207e-10 0 4.093124227e-13 0 1.151815402e-19 0.0005149032924 0 0 1.908397613e-18 1673.858765 0 0 0 0 0 0 0 8431.398793 0 0 0 0 0 29437.78286 0 0 0 0 0 12609.21525 0 2.253800404e-06 217.6925434 0 0 0 2178.572242 0 0 1.808054659e-21 0 0 1.287336037e-09 0 0 0 0 195.2193715 1.549802793e-12 0 0.0009838719797 0 3.816817628e-07 0 0 0 0 948377.5914 4.17031145e-16 0.001550396174 4.867829086e-12 0 1.519436644e-15 0 471810.3728 0 1636.90539 0 0 0 0 0 0 0 0 0.0001929644786 0 5.957980594e-11 0 5.064293765e-11 0.0006373385692 0.00491327993 0 0 0.0002441374765 0 0 0 0 0 0 0 0 0 0 0 7.429349222e-15 0 0 7787.152787 0 0 0 0 0 0 0.0001321547365 0 0.01379977428 0 0 0 0.002552068282 0 0 0 0 2.669254457e-08 0.005247574823 0 0 0 3.4237487e-23 0 +102825.3264 0 0 2.708260553e-05 0 0 0 2.080250479e-06 0 0 0 0 0 0 0 0 1.982221064e-06 0 0 3.566066622e-20 0 87.56326479 85.19185617 0 0 0 0 0 2.770161228 0 0 0 0 0 0 0 4.634513427e-07 0 0 0 2.109878382e-15 0 0 2.320645583e-10 6.493554708 0 0 0 0 0 0 0 5.474832376e-06 0.009808454047 0 0 0 103759.828 0.06620659075 0 0 2.364394662e-14 0 0 0 6.81999116e-16 0 77.75562515 0 2.910130456e-14 0 3.738414767 61064.16133 0 1.229557737e-21 0 0 0 0 1363.883421 2.937816091e-11 0 40519.06513 0 0 0 4.809417419e-21 0 1.248080599e-14 3.377190635e-17 4.404935997e-09 0 0.001469963461 0 0 9.706483283e-21 16.35029472 0 0 0 1.002920929e-10 0 7.829800932e-11 0 1.388919255e-07 0 1.165675471e-14 1.74412953e-15 0 2.847775984 0 3.866017039e-08 102.8724363 0 443.8203142 3.565346571e-06 5.059626471e-07 1.266011912e-28 0 88257.84736 4.099703361e-06 0 0 0 0 0 0 0 0 0 0.0008044512206 0 116.1551879 0 0 1.617954995e-16 0 0 0 2.282219854e-13 0 8.489364208e-06 0 3.095831961e-29 141310.6008 2.786417244e-11 3.455970094e-18 0 5.384022866e-09 2893.091216 0 0 5168.477813 0 483860.1699 0 0.01214365284 169.4563219 2.45591023e-11 0 0 1187069.86 0.3442278482 2.423535827e-06 0 12981.98953 8.690012251 1.84760136e-08 0 2.009860312e-29 0 3.74452886e-12 19.34582906 2.720030578e-14 2.415849344e-05 0 0 0 0.7059176151 0 2.580217277e-14 0 1.691625679 0 14.26736309 2.168259455e-10 0 1765.355449 0.2483611485 3052.003449 0 0 0 1.977442586e-07 6.323513422e-07 7.565414594e-06 375029.4669 0 0 8.529967235e-12 0 0.005786583091 0 7.585125463 6.032602331 0 1683539.495 1.584428646e-08 0 5.941338525e-06 2.582957667e-19 0 0 0.0003304508118 0 0 1.762001951e-05 0 0 0 1.65389757e-06 603269.8566 0 0 0 0 1.281922913e-10 49.95914269 0 0.003500151144 124905.6989 0 0 5.228758679e-13 1.607229333e-13 0 4.601896302e-16 0 3.687837792e-16 0 215998.1479 2.858234059e-17 0 0 0 0.000196743518 2.121649492e-05 1.034069895e-09 5129.133157 2.008776414e-11 0.0006714686685 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.478742167e-07 0 0.001578438626 0 1.004829576e-16 0 0.01629989811 60557.34685 0.0008544632568 0 0 0 0 1.177984079e-09 188108.2723 0 0.1795162098 0 0 85.2937163 0 0 0 2297.261744 0.0006460793424 0 0 0 0 0 0 1.954166946e-05 +0 0 0 0 0 0 0 1.978782109e-11 8.440084788e-13 2.101657546e-08 2.714197857e-10 0 0.0008673358449 0 6.701639812e-06 0 0 0 0 0 3.094116486e-08 0 0 0.009715397666 0 0.139876413 1.774158749e-05 0 5.883569771e-35 0 0 4.322460606e-15 0 976460.0074 0 0 0 4691.491604 0 0 0 0 0 0 0 4.613042891e-16 0 0 0 0 2.461403427e-17 0.4641432701 0.02866741527 484563.4794 0.002444138282 0 0 2.552364056e-12 0 0 0 0 0 0.5968078327 0 0 81.64541736 0 0.3163289724 0.0214559459 0 128580.5223 0 1.606782479e-06 31237.73165 0 1.334866766e-05 0 807.8375036 0.01947534744 72253.46777 1.0203851e-05 0 0 0 8.721106001e-14 4161059.697 2.143507183e-11 0.1718643824 0 0 1.76995285e-15 0.0006001048316 0 0 0 0.2442852929 0 1.233188434e-07 0 0 0 5755.335955 0 0 0 0 0 0 0 0 0 7.399474122e-14 3.579793519e-10 0 0 0 0 3.544071116e-10 0 4.111358829e-17 5.867624101e-10 1.581291808e-06 5.351040266e-15 575507.6806 0 0.01252550542 0 4.643076848e-11 0 0 0 1.343615813e-12 0 0 2.274103405e-10 1.713470362e-21 0 9.175622841e-12 0 0 0 1.119555631e-07 0 0 0 0.0005435425679 2.578236048e-10 1.847162281e-08 0 0 0 9.429838484e-13 0 3.249296801e-07 9.207024537e-12 2.839924577e-08 0 0 1451864.575 1.773696891e-05 0 9.767908504 3.307160855e-08 0 9.868941408e-13 0 4.021527392e-08 1.768379905e-07 25.91261712 1892.036363 0 13.74681799 2.067512668e-11 0 456943.3197 4.428801821e-10 0.1815718923 0 0 0 0 1.372027412 0 0 248758.7703 4.628814025e-05 0 0.01019962943 0 0 23042.98844 0 9.247893501e-12 3.292728161e-12 0 0 1.838083248e-05 0 152.9990376 0.07986378756 0 2.437520958e-09 0 0 2.412971571e-13 181.3134583 0 82294.62634 0 0 0 464405.7216 2.539847983e-05 0 0 0 916667.272 2213.528491 0 0 0 2.863964815e-16 0 0 0 0 0 0 1.572120642e-09 0 128232.5094 0 0 4.533570233e-10 0 0.1412501089 0 0 0.0002049381429 0 0 0 0 0 0 0 468.3209717 0 0 0 0 0 5.39264823e-21 0.1514366816 0 0 0 0 0 0 0 4.04177908e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.771625737e-12 0 0 8.474707868e-09 1387954.868 1.13599613e-05 0 2.886460326e-07 4.914135374e-11 0 0 0 0 5.972161399 0 2.512852565e-19 0 1.811133912e-14 1864.904113 +0 821.6934673 0 0 0 0 0 0 0 0 3515.828078 0 640311.9724 31.35295856 0 1.478104047e-19 0 0 70554.4511 0 0 8.424131633e-15 0 0 1.797409389e-11 0 0 0 0 0 0 0 0 1.269606377e-21 0 1.725754996e-08 0 0 0 4.588718802e-28 0 0 0 11.24414964 0 2.752854405e-13 0 1.201729167e-10 0 0.1054236979 0 19885.70733 0.1498617146 0 0 0 0 0 0 0 0 7.876659462e-06 0 0 0 0 0 5497.842487 0 0.002311760042 0.00115146928 5.101351908e-17 3.638925153e-12 162426.0399 2.391691845e-10 0 0 0.0002637243854 0 0.0001140520162 0 0 3.239858915e-06 124117.6548 1.391926123e-11 0 920.8678875 0 0 0.0005331375348 14094.86813 0 0.001983380917 5.272009371e-10 0 0 0 0 5.052909642e-07 111027.5939 0 9.741343022e-33 95900.5507 0 0 0 38455.19087 0 0 0 2.899962012e-10 1.0952855e-09 0 0.2462627166 0 0 8.74914322 0 110782.3915 0 8.854725736e-06 0 1.791436974e-12 298892.0095 3.048747547e-05 0.002323310833 2.493692366e-08 2.57990881e-07 6.11518289e-12 2.794542722e-17 5.966725837e-09 0 0.001957826026 0.006146681571 0.09112201318 0 0 0 0 4.42407463e-05 0 0 5.56414054e-08 0 0 1.578006999e-10 26753.44394 0 8624742.255 0 0 1.65547657e-12 0 0 0 0 0 1.221282191e-07 0 2.195780627e-15 0 0.0002737639022 0 1.996545828e-05 0.6356900825 0 0.3382065899 98283.93481 0 0 0.0005420632892 0 0 1.880864075e-11 1.958778208e-13 90.67337234 4.074970067e-14 0 4.21149077e-06 11652.31937 1.040831329e-12 0.0194960775 6.855212829e-05 3392.115791 347.0666743 978152.7819 915.849126 0 7.167276674e-06 0 0 0 5.086743987e-09 0 0 361.4118442 784.2396905 0 0 3.523251147e-22 0 15500.18927 4.448603175e-07 0 0 2.526220017e-13 1.321164705e-09 0 0 0 0 0 0 90988.20072 3.889778056e-10 11.27137972 0 0 0 0 8.385675456e-08 0 0 0 1.506702752e-10 1.763813871e-11 1.301494338e-14 321907.6504 0 8.310402144e-05 0 0 6.052901128e-11 0 0 490351.3106 0 0 0 1.774903903e-17 6.007648926e-12 0 0 0 1.563443911e-16 8.574070202e-11 0.2211706359 0 0 0 0 0 9.796641017e-15 1.345585972e-15 0 0 0 4216224.669 0 0 0 0 0 1.592696642e-07 0.01001948773 7.582861973e-07 1.822687816e-12 0 0 0 7.686426995e-15 353.200904 7.005910482e-08 0 0 0 0 7.35540487e-08 216295.0604 0 405.8858928 0 0 3.009667743e-12 32.88851231 0 838.334939 0 0 4.896439052e-13 1.97449831e-19 0 0.010190142 0 0 0 72827.7476 0 0 1.440071143e-15 +0 0 0 0 1.129465117e-18 0 0 0 0 1141488.789 0 5.071361125e-08 0 0 0 0 0 1.390024542e-07 0 0 8.247584457 0 1.222272562e-20 0 0 0 0 0 0.1461661495 5.679689577e-08 0 0 2.006098242e-14 2.688158193e-10 0 1.798574648 0 9.589419423e-10 0 0 0 0 1.271126606e-14 0 116.6790944 0 707655.0874 0 0 0 9.468027129e-06 0 4.03963663e-14 0.1814660139 4.450514837e-12 0 0 0 0 0 0 0 7.046148729e-16 0 3.014889146e-10 0 0 14.90798047 0 0 0 0 0.0008950548508 0 0 0 135977.6312 0.4025521459 1.08959708e-15 3.848031143e-18 0 2.755882804e-18 1.705447258e-06 0 799.555182 0 0 661730.5661 0 0.0005816426078 0 1661279.016 0 0 34.53778821 1.653783566e-08 0 0 4.378203657 1.742112294e-27 1.377574617e-07 0 0 0.01622148132 50821.12928 0 0.0004015483613 0 4.074054358e-06 0 0 0 0 0 0 1.743784992e-08 0 22311.01939 1.150769677e-27 7.3204728e-06 0 0 0 25.0090374 0 1.079301085e-10 1.230953924e-12 0 0 5.228130235e-15 4.746703395e-17 0 0.0001115820203 1.157919374e-16 373112.5623 0 534329.7795 0 0 0 0 60777.56072 0 53899.1638 0 3492.736782 0 0 0 7.5599532e-09 0 0 6.644753932e-05 295575.0355 7334.045363 1.197480725e-16 53.37579543 0 0 3.39509984e-12 0.0002113079934 0 0.0002602608324 0 5.819554546e-12 0 184438.5975 0 0 0 5.166234493e-08 831.259246 0 0 2.909637789e-21 0 1049789.935 0 0 0 0 420179.5881 1.020663356e-08 2.406685827e-07 0 1.113104215e-14 5.774362217e-13 0 0 0 0 0 0 0 0.0005440831223 5.987621829e-10 6.341407418e-15 0 0.004739743467 223.5568728 381707.9032 204.7872485 0.009552500654 0 0 0 0 4.256684529e-21 1.068422687e-10 0 61963.47259 0 0 4.414834051e-18 0 4.160533422e-06 0.08288292463 0 0 0.004448534085 0 171.4390203 1.151803431e-10 0 0 0 0 6.060348406e-06 0 0.001312251761 0 0 0 0.0005397688506 4.272384515e-05 0 527.7654531 2.139511694e-17 4436647.338 0 0 0.001159566509 0 0 0 0.004311817502 0 0 1356.834878 0 0 0 0 0 0 4.085980418e-29 182690.3274 0 0 8.309587432e-10 0 0 0 0 1.038596116e-21 5.033060081e-14 0 0 0 0 0.08967152844 0 579.9190706 8.975274352e-13 0.001033715325 1.0505028e-06 5.098887337e-27 1.48854949e-05 3.186913732 0 0 8082.443971 0 0 0 0 718.3107408 0 0 0 9.842497301e-14 0.01161432443 0 2.237880204e-17 0 0 0 0 0 718.8503974 +0 0.0003432296036 0 0.01685594482 0 0 0 0 0.0001470940126 4.317349948e-09 0 3.862637942e-17 2.053240924e-16 8.836381784e-10 0 0 1.648676007e-05 0 0.007020609651 1.436892926e-09 0 2.541739206e-14 2.835690572e-07 0 0 0 0 0 0 0 0 1.050542562e-14 0 0 0 0.001979125669 99789.27221 0 0 0 0 0 0 367.9245742 0 0 0 0 2.55481742e-07 0.009133839919 0 0 0.2169830429 0.05401483519 0 10882.72145 0 3.5260395e-14 7.665082642e-08 2371.392987 1.192524524e-10 0 3944.860036 1.737861472e-10 0 0 8.560608032 3269.925177 0 66033.8691 1.093233148e-15 0 0 0 0 1.226702112e-13 0 0 0.01243697345 0 1.541280421e-11 1.443036953e-14 4030.800601 0 17853.55788 0 3.269429017e-11 2.862071964e-07 0 0 0 9.017887268e-12 3.612967086e-18 0 0 2.776776533 0 0 0 1.772273933e-28 2.311978393e-11 17933.24821 0 75217.21236 0 31568.67546 2.745813697e-13 0 0 1.161494484e-06 0 3.320041911e-22 0 57.01055964 39.71591647 0.00175367567 0 3.422363337e-23 0 4.70712087e-17 0 0 0 0 0 3.296305694e-20 99621.41742 0 0 8.815785548e-05 159348.9015 0 2.198144229e-07 1.159821787e-08 0 0 3.861244559e-13 0 7.288055129e-06 2.46849298e-16 0 0 101475.5392 5.316684535e-16 0 0.004878507861 2.184945485e-17 0 1.06169565e-06 0 0 5.191356871e-06 2.715798648e-10 1.506569853e-12 0 0.0005302297077 2.793326156e-08 31177.69321 5.224805632e-10 0 0 0 4.04565627e-07 0 42755.05947 0 1.914714459e-09 4.621649677 0 1.693058703e-06 0 15879.2713 1.855597028e-22 3.586539122e-13 0 0 0.003107155173 0 0 14.28508942 0 2.921620357e-12 0 0 0 1.045733601e-15 2.123917638e-06 1.398061581e-19 0 0.2767060388 4.099093965e-05 467237.2107 1.78280185e-11 1.081964946e-29 3.334957467e-10 1.389307899e-10 0 5.638999543e-17 11912.17678 0 1922.5304 0 0.002616401432 1.405740864e-10 0 0 0 4.685601072e-17 45.11922098 0 2022792.731 0 3.564992688e-09 0.0228007107 0 45981.71476 0 3.372054295e-06 0 0.02020140868 189.7413055 212.741967 0 0 4379.019586 9.84197672e-10 0 9.368688017e-19 0 0 0.006524794547 0 0 0 0 3.508542099e-06 0 0 5.04333596e-09 7.981242255e-18 0 0 1707845.762 0 0 0 17744.04039 0 3.739302898e-09 0 1.560084535e-11 0 0 0 0 13162.08409 0.001426753782 0 4.474842874e-06 0 0 0 0.4547508273 0 0 0 0 0 0.009518445348 0 0 3230.081181 7.286048171 0 0 0 0 0 0 0 220838.2501 0 1.699889765 0 0 0 2.201203224e-07 0 139485.5873 0 0 0 0.03786588176 0 7.113120652e-13 0 0 1.666948276e-13 0 25383.39233 +2.275581565e-08 0 3.309144307 0 0 0.3794837944 0 559594.8782 0 8.734116874e-12 8.623497235 4.957721068e-19 9.53143525e-07 0 0 0 0.0003114795867 0 0 0 0 3.22923618 0 1.916425482e-10 0 0 0 4.575953326e-09 0 0.00132521643 0 0 0 0.0002392368554 0 3.285300773e-14 0 2.854612008e-11 0 1.247462975e-06 0 0 0 0 0 0 8.580989195e-12 0 0 3.398634457 0 4.616910907e-06 1.293871358e-08 0 0.0001860548495 0 0 0 0 0 0 0 0 0 9.794600679e-16 4235.180328 0 0 0 0 2.541644707e-18 0.1737936292 3300.724618 0 0 1.246418339e-10 26202.09286 1.660159578e-10 0 7.510620614e-17 0.0001800525261 7.023106633e-07 9.210054408e-13 0 27001.00667 0.8864402102 159522.3519 0 0 1.45662751e-11 61.57691866 0 0 1119.716003 2.479594407e-15 0 0 0 0 2.089490754e-13 0.1855297594 0 0 7111.456651 6.393419515e-17 42336.63993 0.005282961549 110587.6929 1.51031053e-07 1.481242555e-05 690190.145 0 0 1.640282091e-16 0 1.632633187e-07 0 0.001962591847 0 5.826630098e-22 0.001303587498 0.6533167122 3.386690778 0.006828915086 5.47826192e-15 26970.83826 4.585444747e-13 1828.197488 6714.024329 0 0 0 1.174809284e-11 0 22.28884615 1.144757656 4.989166021e-07 1.726952188e-10 0 0 0 7.274980451e-23 280.1904548 19872.47012 4288.39725 633861.5768 0 0 1.279905013e-14 0 1.837001415e-11 0 7.301640076e-19 0 0 0.004854762262 1032.754776 0 0 0 6.749466159e-32 8.078700829e-13 299049.4764 0 1.416819326e-17 8.464770327e-06 0 3668299.205 0 0 0 12744.8356 1468807.771 0 0 1.28198613e-07 0.01609837312 317278.9711 2.334801938e-21 552.4507907 0 0 6447.920227 2.330424089e-16 0 0 9.518639763e-07 0 0 0.0001216681492 0 0 8761.66354 3.293538851e-13 15588.37021 24.08996722 0.004593188116 0 0 8.030416846e-07 6.245486547e-20 1.297958218e-12 0 0 3.177953353e-15 1.733165125e-07 0 349.4385434 0 3.917594223e-09 1.05542058e-15 0 0 0 5.665566967 0 0 1.097171783e-07 0 0 0 0 2.667043525e-09 0 0 0 0 1.24606611e-06 0 0 0.129125856 4953722.376 0 0 2.49030112e-08 0 0 36.80910935 0 0 0 5.698433352e-17 5.883512201e-05 0 0 83.16009944 0 3.874370416e-13 1.095171248e-05 0 0 1.952765278e-17 0 6.877719443e-17 0 0 0 0.00430994612 0 0 0 0 0 0 3690.699091 1607449.74 0 0 0 0 0 0 0 0 0 1.739635116e-15 0 0 0.2541203407 0 0 0 0 0 0 0 2.113721332e-06 0 0 0 9.336596931e-21 0.0002396825765 0 0 0 0 0 0 0 0 +0 0 0 0 2.843956829e-06 5.314231089e-07 0 0 6.446295107e-08 0 2.38813364e-09 0.02008565237 0 0 0 0 0 7.849468337e-08 0 0 0 0.007594872158 0 4.335832903e-11 3.838445588e-16 0.09339002962 0 0 0 0 0 0 0 0 0.05748469656 0 2.236057038e-06 1.89203668e-07 0 0 0 0 0 1.187737011e-21 0.4201884637 0 3.364043467e-13 323574.143 1.311176167e-12 0 9.861839418e-10 0 0 0 0 0 5.414370384e-07 192143.5419 0 5.009663243e-14 0 0 1.319479713 0 0.0004360574798 0 2.025219404e-10 1068.957417 1.192363125e-24 0 0 0 0 0 0 2.018878676e-24 0 5407.897751 104948.5014 0 0.2005611254 0 0 0 7.01396127e-06 0 3.516961191e-13 7.346224211e-09 2.222686558e-08 4.211146385e-10 22233.78441 0 0 7021.100934 8.559459712e-16 0 0 0 0 5.200657514e-25 0.01195127361 0 0.0002172300786 0 7.316614838 4.420231221e-07 4.6906179e-13 6.565486834e-16 0 0 937.9165078 0 3.093953371e-13 1.39483532e-05 1.997178928e-12 0 4.599632065e-15 0 2989.78544 9.123393293e-21 0 0 0 0 1.337614301e-05 1.179502263e-05 0.01654177281 0 0 0 0.01061367342 0 0 1.878994617e-16 3.952192323e-08 0.001053098639 2019.041432 0.3148809854 0 0 5.139955406e-13 7.529487613e-14 1.488134548e-09 0 236989.9781 7.237366048e-17 0 1.126343225e-06 0 9.697635452e-13 0 0 0.0003296169303 10.76412477 0 0 0 0 0 0 2.675279265e-05 10.88083128 0 2.750529466e-13 5.73710577e-06 0 0 0 0 1.421578274e-12 4.067703814e-13 160673.6851 0 3.554253212e-14 0 1.525194671e-11 0 0.2303076195 1.923900123e-11 0.02442826458 2.787085741e-09 3.843558058 0 5612.113161 3606958.351 3.649161293e-16 0 9.912816641 0 1.657269302e-08 7.139641271e-12 0.001104488732 6.213011699e-23 0.01025624396 0 4278.607952 306688.5909 0 0 247763.158 18.50375872 0 1.962261998e-11 1.82889648e-11 1020776.317 58062.26574 4.872332212e-10 0 0.01894908174 2.811281773e-10 5.039053939e-11 2.765198353e-14 0.0449891106 0 0 0 0 177948.0076 0 0 0 2.841331259e-10 0.005587639383 0.0002035812674 8.238380703e-08 0 0.0001156260929 0 0 1.917282474e-06 0 0 5.247541389e-14 0 0 3.219485561e-11 1.367116971e-05 0 0 0 0 0 0 0 0 0 0 8.21287156 0 180870.1377 0 0 0.004484327135 0 0 0 0 0 0 0 0 383930.4374 0 8.949917208e-10 0 0 0 0 0 0 1.110077194 0 0 0 0 0 0 4.444224174e-09 1999.81005 0 0 0 0 0 1.509823141e-06 0 0.004657016783 0 401.0935714 0 0 0 0 1.664864772e-13 0 0 8613.001929 0 4.348789489e-20 0 +0 0 0.0002073770777 0 0 18387.80553 0 0 0 0 7.631264259e-09 0 0 0 0 0 0.01086633079 0 0 0 0 69511.43474 3.267856607e-12 2.574366705e-19 0 0 0 6.889836206e-05 0 1.919134488e-09 0 0 0 0 0 0 5.65261151e-12 0 4.656279805e-05 0 0 6.454723468e-28 0.2102978381 9.467715763e-21 0 7.882657366e-14 6.235988678e-07 0 0 0 0 0 0 4799.280446 0 168066.5832 0.000820952084 0 0 7.529221304e-18 0 0 0.02448672354 0 0 0 0 983934.2932 0 0 0.006459677274 0.0004385199226 20696.979 0 0 0 0 0 0 0 222.2846785 0.6017039005 4.031514721e-23 0 0 0 0 768707.5217 0 8.22470709e-21 1.085387224e-07 0 0 87.15870041 0 0.0005578794076 0.002966977878 8.938908606e-19 3.308333049e-09 59.35617785 2.938046744e-15 0 0 0.00407125911 0 0 0 0.0006580793803 2448.470719 0 1470213.877 0 6.684004676e-25 1.10474916e-13 0.0005724591015 0 2.394129698e-07 1.881902218e-23 0 0 0 1.431805843e-13 0 0 0 1.33956617e-16 0 0 0 0 4.351705279e-15 1.859164453e-09 0 2.099221006e-12 5.517318156e-15 0 2.947961443e-06 593652.6165 0 0 765529.7562 0.04500869269 157.2237451 1.070976157e-19 0 0 1.096809767e-07 9.053738694e-09 0 1.799745078e-06 0.009182089404 125.6685854 0 0.0006869795306 2.969561379e-18 0 0 146799.2094 30682.42935 1.450316806e-07 2.753906535e-10 0 0 466442.2773 0 0 0 6.222844102e-17 1395555.503 0 0 6.565114184e-16 0 0 2.556438323e-08 4.954202421e-17 0 0.0005779541415 0 0 0.005636245429 6.008392612e-07 7.000391913e-09 1197153.02 0 9.453093284 2.148213074e-12 4.698373305e-12 0 2.445815779e-05 0 0 0 0 0 0 3.240548071e-18 3.778318877 0 0 0 0 141.8983508 0 0 0 23.40820973 1595101.853 2.860741326e-13 0 0 0 3.791726804 0 0 0 8.904756142e-17 0 1.194977444e-08 1.011490316e-28 45658.37909 2115588.495 0 0.2697097597 0 0 0 0 0 0 1.770164311 6.86382531e-14 1.522766812e-18 0 0 0 393.113679 0 0 0 0 0 0 0 31.20073112 61284.67476 0 5.283129031e-05 0 2.39569697e-10 2.063965076e-05 1.931499605e-07 255.2538612 0 0 0 0 0 0 0 0 1.233967004e-05 0 0 0 0 0 0 8.318390774e-13 2.889315654e-07 0 6.703623326e-07 0 2.923858516e-18 0 8.030556993e-17 262611.3019 0 0 743284.644 0 2.210799195e-08 22.05224319 224.3244525 0 0 0 0 0 0 0 0 3.811917537e-06 0 0 1.750300245e-14 0 0 0 0 +0 0 1.107312353e-12 0 0 0 0 5120.916538 0 0 0 3.125281032 27756.02577 0 0 0 65567.40715 0 0 119770.262 0 0 0.7008839544 0.005206770055 0 0 1.225778463 0 9.901874291e-08 0 0 0 0 0 0 0 0 0.0002084020145 8.365478935 0 0.04034095512 2.790402036e-12 0 0 0 0 0 0 0 33.68490513 0 2.714578758 0 0 0.001249962297 0 0 0.09678617033 2.506425619e-10 0 1.355656007e-11 0 0 0 0 201.145975 6.057867253e-11 0 0 0 0 0 7.077067923e-07 0 0 0 0 0 30396.34711 6604.966892 0 0 0 1.384332589e-19 6.760310922 0 0 0 0 0 119.994718 2.868705601e-06 0 0 0 19.94770765 0 0 0 253.357441 2.821627661e-14 0 2.650318076e-11 5.47332472e-15 0.03359245094 3.749127868e-21 0 4.181676035e-07 51716.96196 0 2.040589939e-16 3.890686069e-10 0 5.909584827 0 8.698583619e-08 0 0 0 0 162732.2564 2.851449409e-28 1.439588033 0 187.4853154 0 0 0 0 1045493.316 0 0 0 458852.2323 6.420365682e-08 2.272938243e-05 0 3.54375741e-13 1.673619931e-14 1081.786175 0 0 0 79960.39716 4.790688312e-15 1.49726754e-05 0 22789.84758 0 0 0 1204.376761 0 0 318813.6984 0 0 0 0 0 7.599877828e-27 2.284399344e-08 1247098.496 0 1.615014515e-09 122.5944533 0.113738244 0 0 6.663020567e-15 9.926716394e-14 0.002620768717 729962.8198 0 8.962149069e-18 1.164967202e-06 0 0.0001281056365 0 2.337662214e-07 0.1438168238 6.434576795e-08 0 0 0 120.5618155 0 0 1.972802142e-18 0 10985.69093 3.183089136e-18 3076815.725 0 0 0 0 190098.4378 200434.1393 0 0 1.268566774 0 0 4.205207751e-14 0 0 0 0 0 0 0 0 2.252268612e-13 0 181405.2179 0 0 40.52954533 0 0 3.051614945e-16 121.6149802 1.228362604e-13 0 2311661.392 0.0006676336894 0 0 0 0 0 0 50.90948944 0 2567672.413 0 0 0 7.993531171e-23 1.401106257e-21 0 0 0 0 0 0.004005907256 0 0 0 0 0 7.508218314e-09 0 1.997697017e-33 0 1815523.431 0 0 0 0 0 2.871370599e-25 0 12731.64849 0.008396100718 0 0 0 0 0 9.974073298e-16 0 0 3.653815205e-11 0 1.26376373 25.60995983 0 0 6.06876372e-13 102.1720773 0 0 7.450015396e-09 411485.3524 0 0 0 0 0 0 0 0 0 0.004009228292 0 9.547158703e-19 0 0 +0 0 0 0 0 0 3.970874836e-14 0 0 7.654066216e-28 0 0.3762704661 0 0 4.349370855e-13 0 1.602308619e-11 8.462818942e-11 0 0 5458.891515 0 0 0 0 0 0 0 4.279445191e-09 0.01777851479 0 5.783687172e-13 0 0 3.064919383e-09 3.705104015e-07 0 0 323449.6339 0 1.80651367e-10 0 0 2.379337303e-06 0 0 0 0 0 0 0 0 0 0 0 227474.6393 0 0 0 0 0 0 0 47.540672 0 0 0 0.01498379371 1.330416501e-09 0 0 0 7.024750151e-10 686209.5556 0 0.006172722754 5.726045587e-13 0 4.555635666e-13 833098.1062 0 3042512.794 0 0 0 70.00075394 0.2953383364 0 117744.9143 0 0 585970.8979 0 1.930416364e-08 15.54444891 0 1633114.104 0 479810.0274 0 0 478701.7868 2.625222579e-10 0 7501.326997 0 0 0 0 9.887947062e-15 0 1.788373975e-13 11711.82259 0 0 0 0 1.053685582e-06 0 3.684095741e-16 2.621256036e-06 1.664071585 0 0 0.08582187821 38.73480988 2.881218067 0.0001508649434 0 9.999015321e-19 0 0 7.513039827e-09 5.494170478e-07 0 2.154282806e-15 0 0 0 0 0.3137077078 836922.3901 4114.377874 8.318230354e-11 102819.8014 1724969.729 0 0.1696290227 2.236227548e-23 0 7.738760064e-20 0 2.04974036e-09 0 0.01686275208 0 0 0 63323.15274 4.50273185e-06 1.530079308e-24 0 2.598813347e-18 39.44408262 0 1.638115561e-09 2.861094417e-08 6.783417337e-09 0 9.550043945e-11 0 0 176975.2088 29405.35182 0.0001792585378 0 0 0 0 10.72530016 11657.64753 3.125717819e-07 0 0 1.551095307e-11 62.94080466 0 0 0.004377443823 0 1.579880679e-27 0 0.02541578958 0 2.85370237e-11 0 12.00688472 3.852573202e-09 0.0003559039374 0 65987.67007 0 0 1253.356023 6.419052303e-08 0 1.288719554 0 0 0 0 0 0 0 0 0 0 0 6.325575573e-11 0 0 0 3.267395304e-15 0 0 3.591527252e-18 2.932825001e-09 0 6.89056087e-05 0.7422032206 0 4.293809549 0 1.326260486e-17 1.136734592e-16 0 0 0 329.0664383 0.00149034086 0 0 0 0 0 1.070339534e-06 0 1.978126355e-11 0 0 0 0.9726060113 0 0 51210.81913 0 0 0 1.127860712e-08 0 0 0 1.974680732e-12 0.0002351344541 3.154261782 7.382723726e-24 0 3.204677161 0 0 0.000106385343 1.90855473e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005991756373 0 0 493.0466194 0 0.1531424484 2.360857509e-18 0 0 0 0 0 5.776952082e-17 0 0 +0 0 0 0 0 0 0 0 0 6719.809234 0 0 0 0 9.205739932e-10 0 0 0 0 128.0010658 0 9.282332176e-09 0 0 0 2.596282605e-09 0.0480845966 0 0 1.591519352e-14 0 0 0 1.689892392e-08 0 0 663821.6442 267.3609329 0 0 0 0 0 1.544292841e-06 49865.87096 0 1.635907025e-11 48.34149743 0 0 0 0 0 0 0 2.449335107e-09 0 1.782979853e-15 0 0 0 0 0 0 0 0 0 0 2.148255105e-06 100904.6513 0 8.437414112e-12 4.13479938e-14 0 2.011702304e-07 0.02183766598 0 0.01275104215 1001457.004 0.8566882335 0 0 0 1.471636222e-05 0 47505.50192 0 7773.930195 4.664866461e-17 0 0.0724289103 0 8.267074944e-13 0.01888670718 0 0 0 1308.189741 5515.50874 8.002111091e-19 0 0.0001658582251 0 453568.1722 0 0 0 0 0 0 0 0 10828.32499 23.2026981 0 0 4.230389055e-15 1314.796087 0 2.373814149e-08 2231392.133 6548.45494 2.15947248e-08 0 0 2.295174367e-15 2.295939518e-06 0 8.348373252e-08 0 163513.4944 178069.1205 0.7776292224 5.100689597e-07 1.16949175e-05 8946.291853 0 2652.453099 0 7889.144924 966245.3236 0 7.941268281e-06 3.700146237e-05 0 7.320163791e-05 649.1621361 0 0 4.532794249e-10 0 0.00021860636 1.226105314e-05 0 5.383933353e-13 0 0 1.847042923e-16 0.006031073141 8993.260195 0.0001195874222 0.02740386603 0 1.748474391e-09 3.178453823e-18 40187.31414 0 0 8887.750982 675127.0466 0 0 1.013371676e-08 0 0.003461985743 0 3377.831707 0 1051.068105 2.426070977e-05 0 0 0.003477619967 477.8538857 10470.40061 4.154685472e-25 0 1985.388986 0 7.186114153e-06 0 0 48.19911757 0 1.150216525e-13 0 0 0.1556193872 0.0009042080151 2.91311591e-09 0 8.442798512e-12 1.35701968e-10 3.323970585e-07 0 0 0 0 3.279029195e-07 0 0 0 0 0 0 0.0005090214196 0 0 0 5.583640381e-18 0 848278.6216 0.0002504867131 3383.475465 1.856759049e-07 1.185111166 0 4.168928705e-10 0 0 0 0 1.410554298e-08 0 1.193071466e-07 2.460133735e-12 0.00125945022 6.259534446e-17 0 0 0 0 0 0.7844439526 0.03809703681 4.461992837e-07 1.1595872 0 0.291144315 0 435215.035 0 0 0 0 0 0 0 0 66358.76152 0 0 1.655338958 0 0.00642856945 0 3.894785467e-21 0 0 0 0 0 69.96441473 0 3.924009864e-20 0 0 0.01846268881 0 0 0 0 0 0.1617812529 0 0 0 0 0 0 0 0.006288800492 415.1822438 3.201444851e-05 35.41658131 0 0 0 2519.278002 0 +1.106177438e-11 6.583470418e-06 1.874214881e-16 0 0 0 0 2213041.922 0 0 23502.75182 0 6.643145583e-06 0 0 3.291080549e-21 0 0 0 2.022666411e-19 0 0 0 0 0 39.18565856 0 0 628775.557 0.002424312291 10.32451334 4201.428238 0 0.000679193628 0 0 0 1.471567795e-06 3.634777386e-13 9.21673855e-09 1.221667715e-15 6.603183156e-07 0 0 0.0002996424879 0 0.007520382632 205583.1196 0 1.278865388e-10 0 8.563753736e-05 0 0 0 1.334098324e-15 0 0 0.04876536379 0 0 0 32.67291682 1.432510852e-13 0 0 4.17597595 0 0 0 0 0 1.139670843e-18 1162.403692 1404182.414 4.179906634e-12 0 2.565510816e-06 0 0 0 2.668240745e-18 9.07792458e-09 0 200982.3935 6.74452453e-07 0 2827314.598 0.01507488856 0 4.470131149 0 0 3.086345499e-07 37.31017745 1.488512991e-11 0 0.5303825211 9.344134784e-15 0.0001412424911 0 0 314.2071161 0 0 8.712258815e-05 6.990947442e-10 434.840731 0.3417451089 2.297435779e-12 0 0 5.60157571e-05 0.00301931564 0 4.27876927e-13 0 1.482422937e-21 0 0.8323199572 0.2369901462 0 0 8.309204113e-12 1963444.941 0 0 0 0 4.021176589e-09 0 0 255775.4254 0 0 1.023641693e-19 0 142471.9495 0 0 0 738986.9126 0 0 2162.449159 2828530.99 4.779375839 0 0 5133.383892 0 0 0 3.291960293e-11 0 1458.374846 0 2350.543608 0 0 1147.032453 0 0 0 0 5.346135199e-08 641314.082 0.2838286633 1.975259912e-22 2.262600532e-17 0 0 1.375664141e-11 6.867156014e-10 4.299887003e-14 0.9843575836 0 129684.5207 0 0 6.727274828e-05 9.083783054e-13 1.612355731e-26 0 294.1901668 784086.7615 129.874283 0 6.635908047e-15 2.246436976e-05 0 0.2280182968 0 0 0.0007420992591 0 1.622741662e-07 0 0.01431620905 2.57090904e-09 0 7.170370736e-07 0 0.4412077357 0 0 0 0.8304907378 0 0 1.156397122e-07 0 1.196505438e-05 1.009664363e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006606417508 2.367007268e-11 2.316306539e-08 0 0 0 0 18028.44136 2767.285016 5518.388451 0 1.184784e-13 2.029291517e-11 0 9.273570997e-07 0.02418142554 0 0 0 0 0 0 3.455818784e-12 0 3.861454751 0 0 0 0 0 14.32834109 0 2.396283949e-09 0 0 5506.043434 0 2.192168661e-21 0 0 0 2622.04974 0 0 0 0 1.171631752e-29 1255.467745 0 0 0.775224916 2.29435657e-05 0 0 243.4230743 5.351393962 89080.22118 0 0 0 0 3.339521625e-05 0 0 0 0 0 0 0 0.01507171066 0 0 0 +2279936.643 7.813603515e-10 6.027349918e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.232228054e-24 0 0 0 0 0 4.558531977e-06 0 0 7.076526792e-14 4.077848525e-11 0 5.611991664e-13 0 0 0 1.647696231e-21 0 47.90865303 1.112699542e-05 0 15314.54605 0 293.3119064 6.222947956e-31 3.163277232e-18 8.586747413e-09 0 0 0 0 4750.523805 0 0 0 0 0 0 0 193637.8867 0 212124.8087 0 0 0 1.247240571e-12 0.1782351503 1845312.312 0 0 2.394677486e-06 6.313239752e-06 0 0 0 3.640114042e-08 0 0 438.429982 0 0 1.749028507e-24 1.699179806e-11 2.546970916e-06 1.287064877e-09 1.216752672e-07 1.223585322e-14 0 1.567500358e-10 0 128066.2723 18.65081604 0 9.783487801 0 0 0 0.1432499462 0 1848.529709 0.198935116 165158.6495 1.287819872e-06 2374.813728 0.0002775918451 0.00128538467 5.883076423e-05 0 263.7083476 0 0 0 0 3.923579021e-10 6.002433363e-10 0 0 136.7109028 0 0 0 111780.9487 0 2.192273004e-26 147513.6081 0 1.870986658e-05 0 637863.1473 1.326243335 1.182999076e-19 0 0 603.2159129 0 4.610050304e-21 2.805519501e-13 489954.0573 0.09292368668 0 0.0008952893894 0 29358.76846 3660.034552 0 0.01659815745 31810.74169 0 0.4684744551 8953.406028 1.699730537e-12 0 0 0 0 3.056635244e-21 1.115511417 1.615722567e-15 3.894290754e-09 0 0 61989.3391 0 3.853771784e-14 0 1.09416696e-05 0 0 0 6.181977229e-07 0 4.187150734e-19 0 0.001021680404 0 0 3657.680463 1.963119343e-08 0 0 10039.34865 0 0 0 4.547499628e-13 246.9045699 4.772761945 0 0 2248.281177 0 0 6642.981544 2.629533585e-07 0 0 3.937236404e-09 1.463010659e-09 1.041652524e-13 0 0.009180245504 0 0 0 0 1.407050106e-14 112.6487491 0 0 0 0 3.483328813e-05 0 46024.01765 0 58.62587712 0 5.773411464e-13 1.430301494e-12 0 0.0001184122522 0.02298288097 0 0 229.1042656 0 0 0 0 5.740146135e-11 0 110.4331033 262.3776948 1.094957763e-23 49.02837597 0.06376681319 7.552777983e-05 0 0 0.002598342904 0 0 0 0 0 0 21135.05938 50296.50715 0 0 0 651593.0259 0 24156.06195 0 0 0.3663973331 0 0 0 0.09794367466 0 0 1.207041167e-11 46.8785449 4.109890755e-16 1.445619038e-08 0 3.173905447e-10 3.360401765e-21 0 0 1177999.498 27.8362211 0 0.0002207981974 0 1.439543437e-05 0 5885599.793 0 0 0 2.697718463e-18 0 0 0 0.07833106853 0 0.1917258936 0 0.0001193286886 0 108.2370767 0 1.881426472e-15 2.762103053e-17 0 0 0 2.755198234e-07 0 6.699627925e-12 +19213.31856 3.616439436e-14 0 0 0 0 4.829029943e-22 0 0 0 0 0 7.16220713e-23 0 0 0 0 1.152803615e-12 0 8.103076543e-06 1.281825452e-12 8.619122905 0 3.512894301e-26 1.778033165e-12 0 0 0 0 8.000107883e-08 0 3.489714728e-20 8.575547824e-21 0 0 0.0004320039061 3.128788304e-08 0 0 0 0 0 0 16940.33829 0 0.5787362203 2732.128005 21.66811209 0 0 0.1708892574 0 0.0002221715672 2.264039278e-16 0 0 0 232647.1636 0 0 2.490703909e-10 0 0 0 28.84596155 29.18623702 0 0 1.066292744e-10 0 0 3.125828316 0 0 376048.0142 0 0 0.1086477464 0 0 1.420027026e-13 0 299127.6613 0.0004623342676 138634.0862 0.0002788376851 9.78536713 0.01717262305 0.0005185757319 0 1.25798074e-23 0 4.010757784e-06 0 5.483712659e-05 4.238534679e-09 0 0 0 0 0 0 2.856427224e-08 0 6.837694249e-10 0.0004912258448 1.048125649e-19 0 10963.61516 0 0 0 0 0 1.025685268e-22 0 0.001672486762 1.279792886e-07 1.547972252e-07 2.395338989e-15 1.287232773e-09 0 0 951.0110897 1.696341802e-18 9.597939475e-06 0 1.725956516e-06 5.635965077e-09 0 1.078025103e-15 5812.851656 0 0 0 30814.52277 1.458859782e-17 2.978320613e-07 0.0364448013 0 1.626541764e-13 3.354941094e-09 2.309360398e-11 0.0004965684386 0 0 0 589.8943696 8.50398933e-10 1.750079462e-10 0.001599634583 339.4794488 3.879491817e-10 0 0 0 6.845842383e-05 79.2968527 0 0 1538.667294 0.3931343773 1.384285983e-20 0 0.5228829641 0 0 0 0 0 0 0 0 3.511951166e-05 69.67659763 0 23.18453292 0 0 1.150691108e-08 2.400642893e-09 0 0.002817466201 111.92863 0 0 0 0 4.624443474e-28 0 3.084493786 5.958089258e-17 217.0907919 0 0 4.379884952e-24 0.6505966526 0 1179.13192 0 0 360230.9816 0 0 0 738.4238806 0 4.539545343e-05 0 2.321853816e-14 1.5802226e-10 0 0 0 0.002201247552 0 0 0 1.487498523e-09 0.2130107336 0 0 0 0 0 0 0 0 0 7.084132838e-14 0 0 0 0 0 0 4.391680512e-12 0 0.002945529277 0 0 0.02018844285 0 0 8.396797092e-07 4469.977393 0 0.002115561156 0 0 0 1.334408184e-10 0 0.01093354671 3.763646029e-08 2.19815075e-34 0 0 272820.0525 0 1065270.484 0 1.527221374e-14 0 0.3996555536 0 3.803101545e-05 0.0001266078419 1.017269672e-13 0 0 0 0 0 0 2.041112948e-05 10348.19695 0 0 7.400714974e-13 0 3.623770019e-06 0 0 0 0 241240.0743 1.037008211e-29 0.0009741375767 5.666641481e-18 0 0 0 0 0 5.862668121e-05 0 0 0 0 +0 1.17567848e-12 0 0 453.028859 0 0 0.01902605484 0 0.001540997898 0 1.035464264e-05 0 0 1.222174927e-28 0 0 0 0.1956274561 2.091042952e-05 0 2.402892061e-14 5.9624002e-15 0 2.718690575e-08 2.129598548e-25 0 23.0658395 0 0 0 6.873107954e-05 0 0 0 0 7.414883675e-25 0 3.952190795e-07 0 0 2.340845022e-09 0 0 0 8.989761457e-12 4.233526789e-05 0 0 0 0 0 4.072138513e-14 0 0 0 1129.068183 0 0 0 6.867205355e-11 7.173477737e-08 5.595831846e-37 0 0 176042.9175 0 0.0008432623974 0 0 0 0 0 0 0 0.02317180247 0 0 0.0002221561648 0 0 3.809283035e-11 6.575186374e-15 7.606336493e-09 2134.029413 0 150290.3454 0 1.784865586e-16 0.001421013863 6.03901869e-14 2.919261453e-06 0 0 1.300148364e-09 170099.0708 2274.328776 3.328449578e-17 181.0054753 0 0 0 0 0 0 1.222459742e-06 0 0 634281.4658 3.135157803e-08 0 0 0 1.049950182 1931.209602 0 0 1.041205787e-05 1.061160051e-05 9.289712745e-08 0.04429712971 2.814022272e-07 3.482268819e-18 0 7240.041083 73206.04035 859.4235421 0 3165343.907 0 6.990391172e-22 0 5649.69644 0 1783.387782 0 0 0 0 0 28704.56735 1.088695114e-10 9.128342114e-08 3.015627525e-07 0 0 0 0 1.341329817e-12 0.02892980625 1.485629097e-10 2.246282094e-10 0 1.373937664e-24 0 1.458235541e-11 2.509769292e-16 1.581697488e-14 0 2.782640567e-16 4.926414121e-05 0 0 0 3.063804025e-17 2.223285113e-06 5.378720461e-07 0 4.493577085e-14 243157.3105 0 0 2.133464402e-10 166.4546574 0 1.36928106e-13 0 0 52218.3168 0 0 0 4.205864151e-07 0 4.862614768e-06 0 0.0004264619978 1.593005844e-07 0.0002027354198 6.315932158e-25 7.244652883e-37 0 1762.423774 236570.7014 0 0 6.064665775e-11 0 1.154947806e-06 0 0.006425366253 6.750746766e-16 0.00034540217 0 4.106030848e-22 0 0 0 0 0 0 0.6260115806 0 4.259889476e-11 0 0 0 152921.7426 246521.1701 3.222856729e-07 8.075869558e-18 0 0 0 0 1087832.379 0 2.50874819e-05 0 0 0 0 0 0 1.354031614e-20 0 0 0 1.157145482e-07 0 0 0 3.282285895e-21 4.244928031e-25 0 0 0 0 0 0 16726.84439 0 2199.700737 0 0 1.577242061e-06 0 0 9.646609324e-24 0 0 0 0 0 0 0 0 8.001443223e-13 115.5512308 0.01428874132 6.311785661e-15 0 0 0 0 0 0.002658727647 0 0 0 0 2.216084093e-05 570.6847334 0 0 0 2.180944396e-06 0 1.343664429e-16 0 0 0 0 0 0 0 0 72897.38383 0 0 +0 0 0 2.199448355 0.01753541703 0 0 0 0 0 78095.22328 0 0 0 3.068188586e-16 0 0 641287.8541 0 0 0 2.835839792e-13 0 0 0 0 5.85623106e-21 0 0 0 0 0 0 0 5.550527331e-18 7.016949577e-13 0 0 0 0 0 0 0 0 0 0.01022411862 0 22.32596139 9.284469065e-08 0 9.88349399e-12 0 0.01921154331 0 0 0 0 0 0 0.003946623594 0 767763.988 0 0 0 0 0 0 4.424517089e-15 596441.3265 0 175896.2336 0 0 2790.110734 552.4556041 0 0 0 0 47.96086754 0 7.678418836e-11 812482.9142 875.7403229 0 0 0 0 2.785420805e-20 0 0 347027.269 1.869971138e-13 1.021907845e-08 0 0 6.146209976e-09 1.065019391e-13 0 0 6.569522857e-10 0 3.683395729e-09 0 1.521027702e-12 0 0.04144718 0.001460814917 1.753540681e-13 0 0 41349.04244 8.564302441e-13 4.386611229e-13 4.697484619e-12 0 0 2.071538205e-18 0 0 1.724093619e-17 0.0001237261177 0.1102190178 1.660247934e-12 1.091105384e-06 0 0 15021.58481 2.53249101e-16 1.946754201e-13 3.764237831e-06 8.46074382 4.688347852e-13 0 0 0 0 2.150146501e-12 3.396792031e-08 0 0.00368714087 1.656197829e-10 267047.5228 6.030852993e-29 1.848611751e-14 0 0.2030081519 0.06350464227 2.793438405e-07 0 0.0002063980889 0 0 0 0 3.650719972e-06 2.334009098e-17 23222.56151 3.936558988e-13 0 22.25419013 3.628570055e-05 0 0.000223712283 1.923714331e-07 0 46670.49051 3.944519479e-07 1.75828856e-19 8.041797515e-14 0 2.310146332e-06 0 140143.8167 0 0 2.300662082 172.9428022 8.967262597e-07 0 9.374245739e-19 0 0 0 0 8.281688636 0 0.09300550417 0 0.05667625706 0 1.65670096e-09 0 0 0.01227202807 0 1.114529217e-06 8.894786251e-07 0 2.391732535e-13 0 0 0.4486601665 0 4914.930526 29267.16255 0 0 91.49478812 1.824580587 0 0.4265339743 7.667803359e-11 1.297131299e-16 3.466483111e-10 1.240221792e-05 0 0 1.665614072e-07 0 7.884328057e-07 92.73267096 320.8340065 0 0 0.0006420643675 0.002051988449 2.597638648e-09 824877.3795 1.598994949e-05 1500.077209 2.120452151e-24 0 4.932161964e-30 0 0 0 0 4.659594715e-12 0 0 0 0 0 0 0 0 1.380035708e-26 0 0 0 0 0.005182893569 0 0 0.001265032602 242741.5224 0 16261.10358 0 0 5.387198779e-05 0.000109334697 0 2.454415852e-10 3.965233703e-12 0 0 5.96003632 5031750.957 0 4.679019317e-44 5605.023547 0 1.102565602e-22 0 0 0 0 2.859297433e-12 0 0.2717508227 0 1.599796631e-19 0.1432455566 0 0 0 0 0 186121.2814 0 0 0 5.452103429e-22 0 0 0 0 +0 0 0 0 4.082870469e-08 2.461904734 0 0 0 0 5.707199754e-05 0 0 0 0 6.018676131e-13 0 0 0 9.796956066e-07 0 2.756199925e-23 1.082674547e-11 0 0 0 1.160650204e-07 0 0.0003497223072 0 0.0001776875431 5.76668347e-13 0 0 0 0 2.881814803e-12 259118.9819 0 1.39962773e-14 0 543859.2976 0 0 0 7.187679169 0 0 0.01050739762 2850.014885 2.850231685e-08 0.1499615658 0 3.410340063 14.02880538 3.251755277e-11 0 0 0 9.814629072e-08 1.130777959e-13 0 0 0 0 3.470885928e-09 7.317882866e-14 0 0 0 0 1.141060831e-14 0 1.649034919e-09 0 0 0 487006.4213 0.002115415391 0 0 8.154645555e-13 0 0 0 0 2.886276658e-11 0 3.911771555e-15 5.559588413e-14 0 38.18068178 6.347862541e-13 0 0 2.292192435e-15 0 951.3319916 0.001234414147 4.550602144e-06 121512.7106 0.0006047390066 7.273701869e-16 593435.1159 0 0 0.01225606648 0.0005064557814 38.77686573 0 0 4.919982404e-15 5.835002125e-06 2.942435189e-28 5.743153915e-15 0 8.051232067e-17 1.042870089e-10 5.837522514e-08 0 121829.1328 6.827731628e-14 3.76058351e-06 0 0 0 0 0.005539388156 1.138296407e-20 5.008620256e-29 0 1.599044246e-12 0.0002005782839 0 1.424193184e-18 2.132365768e-11 3.022951771e-09 0.7955163615 1010538.874 0 0 0 0 0 1.703703174e-08 5.759911849e-13 0 0.0006078583574 0 20.65105081 0 1.03344435e-10 3.384085239e-26 0 1.412948151e-06 0 1869229.556 0 0 0 3.711368599e-12 2379122.838 0.0003653892003 0 0 0.008484393531 0.01122543855 0 0 2.085589484 7.769226128e-09 4.65029338e-05 0.0001607212301 0 7.852296047e-11 0 7331.073946 0 0.1901387529 1.230678267e-07 0 5.56499665e-10 432.9345893 5.103941872e-10 2802.205637 490638.4008 0 0 0 268555.1052 0 56205.83782 4192.972695 0.0002068121447 1768.440858 0 7.113862433e-22 2.258577842e-13 0 0 0 6.675285903e-13 1.973470686 3.75534533e-11 22558.9887 0 1.042314692e-06 4.243642245e-17 0 7.827685185 6.434400006e-09 0 8.345428951e-14 0 0 3.441389156e-14 0 0 0 9.3943779e-09 0 0 0 0 0 0 179381.5587 2.029654386e-12 0 0 0 0 0 0.9315168174 0 9.638021424e-12 0 0 0 0 0 0 7.986794313e-12 9.228882634e-18 0 0 0 0 0 1.807110194e-18 0 0 0 0 3.047012341e-10 0 0 9.41540827e-06 0 4.2759387e-09 0.6028844269 2.842284942e-14 0 2472.465061 0 0 0 0 0 0 0 0.02630366323 9.298355864e-08 0 0 0 25431.78236 0 0 0 0 0 0.005601966687 1539.952582 0 0 0 0 0 1.118670203e-22 0 0 8.77104543 0 0 0 6.933921849e-12 0 26513.42843 0 +8.783920263e-08 0 0 0 0 0 0 0 0 77.13715081 1.224364363e-15 0 0 8.600828788e-09 0 0 0 3.896884314e-11 6.470564287e-16 0 0 0 568406.3518 0.03559642381 0 0 0.002673153557 0 0 0 0 0 0 0 0 0 6.089085561e-13 0.0001227287336 0 0 1.819516809e-09 0 0 0.009872992489 0.05778020021 0 0 1.592970085e-06 0 0 4.819794843e-10 0 0 0 0 3.445985438e-17 9.656024461e-14 0 0.0001138164598 0 0 0.009921551191 6.329265699e-08 0 7.719456612e-16 0 0 8.279434533e-18 0 0 0.6015260011 0 4.701013884e-06 0 1.815050442e-06 0 3.538066931e-13 8.335107751e-10 0 8.89633562e-22 8.455739598e-06 0 0 0.006566491003 0 0 0 0 0.005668821102 0 1.955478873 0 0 0 4.096660526e-16 0 1.899827498e-09 0 0 0 2.794297598e-07 1.483087824e-38 0 14.99047446 3.25766046e-10 0.002822171075 4.301570695e-19 0 0 185.8677949 0 0 4.529246192e-09 0 711.1518372 8.508527491e-16 0 0.812772142 2672.482726 0 72.58301238 0 0 0 4.663568483e-16 0 0.006342947458 0.07883653245 0 0 3.126679474e-08 0 0 0 1.982492038e-09 0 0 1.59831887e-09 3.866498711e-11 0 25.70849166 0 2.120074874e-14 6.66927615e-14 190101.5625 2095.677027 9.244311557e-07 151.3484607 6.040165139e-11 7.983291674e-06 0 0 0 0 0 0 0.001307760049 0 1.256260149e-08 0 0 3.686463619e-13 4382.234057 0.0008244785474 0 0 158304.2068 0 0 0 6748.882531 2.824633061e-11 0 0 0 0 35747.05611 2.300344054e-23 25411.3593 13621.86255 107.6422907 0 6.477468116e-09 0 3.43238376e-20 6.30829411e-14 282858.7079 2.586885863e-17 0 2.841431304 3.777047259e-19 13484.41298 7.059325157e-10 4.223859577 0 0 3.451372635e-13 37585.6681 12.63216641 1.181350946e-09 4.383098081e-06 7594.731491 0.170852224 0 9.946405766e-18 5.450109059 0 0 3.582730527e-09 0 0 0 0 0 7.6363634e-11 1736.93343 1.589294268 0 437056.5942 0 136371.6136 8009.916819 54743.15842 2.375796275e-08 0 3.722290913e-18 0 0 0 0 2.073854844e-14 0 0 0 0 0 0 0 111885.9972 0 0 0 0 0 0 1.662362737e-30 0 0 0 0 0 0 1.597522223e-13 66740.00884 0 0 0 0 0 0 0 0 26795.65261 0 0 5.181816227e-12 0 0 0 0 0 0 6.384452292e-10 0.0005523712517 1.649835435e-30 0 0.1292399551 1.274888923e-13 0 76.84969898 0 0 0 3.274224868e-27 588244.1312 0.01309528673 71171.66553 0 0 6.502464648e-26 0 6.895833973e-27 0 0 7.386373848e-14 0 1.61279833e-07 0 0 106168.3778 +0 0 0 0 0 0 0 0 0 0 6.207375783e-10 4.188095361e-09 2.508977648e-05 0 0 0 0 0 4.60511996e-10 0 0 0 0 0 7.774205769e-31 0 0 0 0 0 1.246183683e-06 1.913367271e-08 162.6376697 3.391586735e-06 0 1.548455961e-06 0 0 1046797.204 0.0001415486912 38613.09411 0 1.204703188e-08 7.619903502e-09 1.984854887 0 9.558143081e-27 0 0 0 0 0 5.384327645e-21 8.661677968 0 673804.0135 6.63231293e-06 1.059901141e-05 14.04426151 0 6.627553684e-10 0 5.539120694e-23 5.339188013e-08 0 0 2.048664868e-12 0 0 0 0 0 0 0 12038.57518 0 0 1.135824334e-06 20.2736815 2.30332792e-28 6.490973759e-08 0.005050811456 0 0 0 0 2.819806965e-05 0 1.473575606e-13 52.77888726 0 1.628610237e-08 1.786044484e-10 0.0001253003125 0 0.0004314900959 2.849577252e-09 0 0 0 0.3814082663 1.267090012e-11 0 6.481535121e-18 0 0 0 4546.936235 0 9.736432435e-07 0 2.33235138e-07 5.16998374e-07 0 14.44789592 0 0.00102901387 3.997543584e-08 86060.96821 2.038826758e-07 0 0 0 0 0 0 11.11302419 1.475064181 0.0009709393305 1.375535659e-06 0.0001552969918 0 4.282301163 1.296644779e-06 0 2.594356473e-12 52.03117307 0.03004171777 0 1.406251698e-17 0 1.089866757e-08 0 11853.65344 0 1.118214481e-18 0 170.0809257 97499.95854 0.1117933504 0 0 0 105599.3768 0 0 69065.79948 364.0130021 6.105358908e-05 2.80196043e-17 0 0 0 2.082061209e-10 9472.90356 75796.75273 1.270434633e-11 1.743157951e-11 0 2.61163307e-12 0 0 0 0 3.857324759e-08 1.678878258e-14 0.000238396162 0 1.104598868e-11 4.442256508e-07 1.474327108e-09 0 0 43490.42683 0 5783.624737 782561.039 0 0.001218722879 0 0 0 3.598554297 1.085349888e-08 1.663919326e-13 0 4.171254001e-14 3.837624927e-06 0 698.6476872 6.590154634e-16 0 0 0 0 0 2628.082402 0 250.9306377 450.9283782 2302.430183 0 36.70423668 0 1.079312154e-11 0 0 1.025026098e-12 127349.299 0 0 0 0 0 0 0 0 115.3516709 0 0 0 5.530235494 0 0 9.871963696e-06 0 0 671.1874598 0 0 1.83072595e-15 153491.5013 0 0 0 0 0 0 0 0.001654185652 0 0 0 1.342379178e-11 0 0 0 0 0 0 0 0 0 0 5.209108418e-15 0 48.52170795 2687.292031 0 0 0 0 0 0 0 0 1.796363953 0 0 0 0 0 5.38098646 0 0 0 0 0 6.235800211e-17 0 0 0 0 0 5.165079742 0 8.840771221e-05 0 0 0 +2.508935225e-12 0 8.428323858e-30 0 0 2268175.094 0 0 0 0.0007480457297 0 0 11504.10587 0 0 7.090914388e-09 2.827903316e-09 1.153445767e-15 0 0 0 1.244450811e-06 5.847783916e-12 2.269754622e-13 2.550649615e-18 0 0 7.503760221 8.809358215e-45 1691162.115 0 0 0 0 0 0 3.017722955e-30 0 0 0 2.830715105e-23 0 8.173471532e-11 0 0 0 0 1.374897176e-11 0 3.278596245e-06 0.0002138769038 1.450071466e-06 0 0 2527.70782 122081.5402 0 0 0.248505639 4.062757104 0 0 0.1266965943 0 0 0 0 0 67715.04163 0 0 0 0 0 0 0.001140966299 0 0 2.756306197e-09 0 0 0 502844.9345 1.239766732e-09 4.761267921e-15 1.969340461e-13 6072.347654 0 1.979485003e-28 1.098644114e-10 2.400607658e-05 0.0003434794464 0 0 0 0 5.027695442e-10 4.568180041e-21 0 7974.403316 0 0 0.4349456806 0.2982211098 264.9793407 0 0 34111.87239 0 0 11583.3132 4.487580577e-09 2.231793994 0 4.185072897e-08 1.0428062e-21 0 12.41633668 1.040500797e-11 0 0 4.056847819e-07 0 4885.651893 0 0 0 0 0 0 0 0 79479.27174 9.480952521 0 3.224846485e-06 0 0 0 1.445551124e-05 0 430848.7431 0 106055.7626 6.537350928e-07 2676.459737 0 0 0 146338.2544 0 0.000362864366 0 135903.0583 1.786363864e-06 1754818.624 0 1.424536327e-25 0 4.359566982e-08 0 0 1.489356882e-08 0 9.593083851e-12 0 0.0007174972272 0 1.813546033e-09 0 8.057501572e-17 8.123969607e-09 6.794834908e-05 0 0 0 59.61200681 0 18.50033716 0 0 0 3256.447574 0 3.272233407e-09 0 596922.6726 1.514199927e-05 858384.7836 0 0 0 6.756116883e-09 0 0 0 0 1.035804555e-11 0 3.297129143e-08 0 13917.99312 0 9.392480815e-11 0 0 0 1.655916004e-10 0 0 0 0 1.459896122e-05 0.04587933447 1.166546177e-10 0.2883426285 4.775365365e-08 0 0 0 0 1116092.559 6.29348822e-06 603.8871789 0 0 0 0 1.851548856e-12 472455.5629 0 0 4.564353265e-06 0 0 0 3043.905129 3.447335414e-05 0 0 0 0 72.88510268 0 0 0 0 9.236776185e-10 0 8.148786192e-13 0 0 3199.056438 2.971027262e-13 0 0 0 10879.07801 0 0.0001349792481 0.01619852378 72924.84321 0 0 0 0 0 0.9269411405 0.0003629273196 534.5663287 0 0 1.39192612e-12 0 0.001160425209 0 3.310622525e-05 4.898188911e-07 0 0 0 0 0 3.818605492e-22 0 0 0 0 0 42.25981876 0 0 0 0 44.31500068 0 0 0 690.9744892 1.45537621e-18 +0 0 0 0 0 1.104385171e-16 2221.239982 0 0 0 0 8.810319617e-11 0.001113952904 0 0 0 0 6.173491333e-13 0 0 6.266067515e-14 0 0 0 0 1.643892998e-05 0.0003749454601 0 0 0 0 0 0 0 4.828093476e-20 0 17.66033153 0 0 120.0642655 0 0 2.677891931e-09 0 0 1007.930814 0 0 0 0 0 0 0 0 0 0 0.02800669077 0 0 0 0 3.605486832e-10 0 0 157088.2988 0 0 9727.241393 0 0 4.469473274e-08 0 5.484039027e-23 0 32154.58087 4.589265373e-06 1.197495861 0 5.159194785e-06 2.762312323e-13 2.454932533e-14 0 6.293759209e-13 0 9.843683043e-08 0 0 0 0 26.57978557 0 2.563404024e-23 0 0 0.3438861614 0 0.01285221169 0.0005751648581 0.009251517943 0 0 6.634863947e-09 0 12.96817757 1.338248755e-08 716.8142812 1.169234352e-12 0 0 0 0 0 4.279050301e-11 5.916876012e-12 0.1395374317 4.098883349e-18 2.177618661e-14 0.0195821912 208761.4092 0 0 0 4.406735188e-26 1.864500289e-06 1.402234918e-07 4.578414925e-05 0.3786605557 1.074336237e-09 0 0 0 6892.126403 0 1.982660174 2.392672202e-15 0.20930286 0 3.003027594e-05 1.823578903e-12 0 0 0.3212830464 1557.506677 0 0 26152.29058 7.126204182e-06 0 2.510729878e-16 1.611007001e-12 0 0 6638.235594 2.478940291e-07 6.872497454e-18 0 5.49169465e-05 0 0.00737480317 0.0001513127241 0 0.003455864105 0.6824352072 0 0 0.0001005272795 9.557624023e-29 0 2.002786735e-23 0 6.662975942 1.059526723e-06 0 246587.7471 2.551842893e-11 1.923306238e-10 0.01152267262 6.487115637e-08 2.426267982e-12 0 0 0 302970.5082 0 39110.30342 0 80.48655643 115318.3941 0 0 0 0 0 0 0.03635756498 0 0 18.97527169 0 0.0001780142472 76883.82749 0 244655.4517 0.0006117633696 0 3262.242979 0 0 1.623329083e-08 51.34659645 0 0 175453.1222 0 1.651518554e-09 0 1.3162848e-09 4.531457213e-06 0 0 1.310599898e-07 7054.119998 8.907874296e-14 0 0 222185.4819 0 0 0 9.312026706e-07 0 0 0 1.500999127e-09 0 0 0 0 0 1.802272335e-08 0 0 0 0 0 0 0 0 0 0 0 0.0001022662203 0 0 0 0 135540.4236 0 0 0 1.102775305e-11 0 0 0 0.00662879929 0 0 0 2.562026635e-12 0 0 0 0 9.422420822e-21 0 16247.47154 0 5.141497819e-29 0 0 0 8.408621208e-05 0 0 7.858898594e-09 0 0 1.498925285e-16 0 0 0.0008978031942 0 0 2.486380245 7561.73044 0 0 0 0 0 +0.0001513231957 0 0 0 3.436235161e-12 0 0 1.605589291e-05 7.071764334e-17 4.920443346e-12 0 0 0 2.708495425e-15 0 0 0 0 0 516.74156 0 430.9945359 0 0 0 0 0 6689.184294 0 0 30620.91887 1.155612292e-14 40305.13276 0 5.147775733e-15 0 0 0 1.990834692e-13 0.3556508008 0.1013642715 5.710459571e-15 0 0 0 0 0 1.719880149e-10 2948.196066 0 0 0.003194086247 0 0 0 0 0 0 0.2614550751 0 0 0.002509980559 9.844509186e-14 0 0 0 0 0 1.126687481e-12 2.001315904e-09 0 0 0 0 88553.56973 0.03587962366 149.6263349 0.002149045037 0.001812482764 0 3454158.88 0 2.121813897e-20 6.102451783e-05 0 2.470915686e-07 0 0 0.0009974596737 7.279506834 0 1.134647488e-19 0 8.246039598e-12 0.001163060322 0 0.1582962267 3.987070028e-18 0 0 1.956444991e-10 2.035310797e-31 1.756064462 0 20.10266351 31.77611742 0.06438308852 94.95270681 3.738611168e-13 0.005932736101 1588.158076 0 2016655.498 0 2.80883418e-06 0 0 1.471035301e-05 2.786167204 0 0.000211192327 0 0 0 0 0 0 3.79973878e-05 0 0 1.554852248e-08 0 2.469966819e-06 0 1545383.712 0 2.771637119e-10 2.815292025 0 0 6.981921007e-16 8.488986578e-30 0.008547288443 0.001224200259 0 2.714642336e-14 0.0001295633671 0 0 0 3.944025039e-14 1.774353172e-06 3.801474035e-09 6981.829272 4.049821824e-07 0 0 377650.5345 2.97866162e-07 4.604862347e-13 0 0 0 0.0004720410083 3.841354188 0 0 0 1.542984036e-06 6.893531309e-15 0 3.986797428e-14 0 2553495.51 0 2.126673273e-15 0 0 3047.158473 8.891942063e-11 0 0.03612668138 0 0 58928.27448 0 0 0 0 0 2.605266979e-05 819.1158439 0 2.366115763e-19 0 0 0 0.001418578827 0 0 0 0.0001265251273 8.346106653e-12 7.722403138e-08 115.2889691 2.352934658e-10 2.391648959e-11 0.0006118502995 0.002989571866 0 7.803546074e-22 0 3.078466636e-23 0 0 0 8.293981641e-28 2280340.209 0 0 0 0.0002508921817 3.797753634e-15 0 0 0.03278938322 85.02357911 0 0 0 0 2.00486965e-08 0 0 0 0 6.555393072 0 0 0 2.643492484e-34 0 0 0 36.73741971 0 0 59.99123894 1.407110436e-20 0 0 11932.00381 0 0.001064489595 0 0 9.631549082e-15 0 0 0 0 265604.4656 1.069638094e-05 0 0 1.030125127e-11 0 0 0 0.01418404594 0 0 0 116968.4599 153.6266076 0 0 4.297828576 0 0 1.186639014e-10 96118.42602 0 0 0 0 0 3.090095482e-27 5.679374737e-18 0 2.534588287e-20 0 0 8.838764469e-12 0 0 0 0 56924.29358 0 +9.131948097e-15 0 0 1278560.45 0 0 0 6.193107499e-09 0 0 0 0.3613248236 0 0 0.0001370359004 4.760187937e-15 365487.6515 0 0 1.037523711e-12 0.007773390184 0 640.8387229 0 0 0 0 0 2317956.493 0 0 0.01934177416 0 0 0 20851.04804 0 79064.3066 0 0 1.193864089e-05 4.713132392e-09 0 0 0 0 1.584466036 5.704349163 0 2.0006669e-11 0 0 3.828817162e-06 0 26.46269209 8.611625355e-06 0 0 0 0 0 0 0 63553.28092 0 0 0 41.55397052 0 1.352078289e-10 13.61729331 5.821125535e-05 0 17.17229847 0 2.693183768e-09 0 0 0.5947897284 4572.313995 0 0 2.891905403e-07 713.2802688 50.29770352 0 0 0 1.952930429e-06 0 35.9549121 4.694617105e-11 0 0 0.8052910306 5.938350676e-06 0 0 0 0 0.001569692686 0 0 0 0 189.7552627 318293.4733 3.5824778 1.004756728e-05 1.043656457e-10 0 0 0.007746733072 408.5804193 3.184807117e-16 0 0 0 0 0 0.0002061584319 1.480024987e-12 0.0002587958057 2.449294867e-16 4.503686096e-12 0 1.02097372e-06 0 0 0.01271483587 497.6864123 15131.25396 0 0 0 8.679813687e-12 0 0 322644.0251 1.426726915e-17 0 1.568348276e-08 0 0 0 0 0 470401.3708 6.516910487e-08 1.820954925e-12 2.458360198 0 0.006304722052 0.01060246616 0 0.0001729842238 0 0.4156646597 0 0 0 6.369620744e-06 0 0 1.28230428 4.157152195e-12 0 3159.931973 5745.593417 964550.7361 59.41719201 0.0003389651474 0 0 3.091160449e-09 0 0 0 0.001331979345 0 0 0 0 0 0 0 0 0.006125519325 0 5.470366663e-07 0 0 0 2.701753891e-14 0 22778.85779 0 4.229997198e-12 0 0 0 25617.10669 0 0 0 0.004279126606 0 2.50249835e-15 914088.5464 0 0 0 0 1.049324731e-17 0 0 15934.84631 0 0 0 0 2.144538171e-05 0.08062286897 0 1.691334393e-07 3.818440731e-08 2.724786706e-20 0 0 0 0 1262412.938 0 0 2358.952598 8.106994306e-06 0 0 2.220193097e-13 0 2.89403558e-14 0 1.456043775 0 0 0 0 3.467754858e-20 0 0 0.007487380216 0 0 0 0 0.7212347181 0 0 0 1.79870033e-23 0 0 0 0 0 0 0.02566407465 0 0 0 0 0.0008600688214 0 0 560.6121401 0 0 2.311526203e-11 0 0 0 180.7982108 0 87742.94824 1.036474244e-06 0 0 4.402693759e-11 0 0 1149.05422 3.949232897e-07 381843.7815 2.969555241e-13 0 3.435179423e-27 6.203299848e-20 0 0 6759.764528 +5.000523001e-06 0 0 0 0 0 0 0 0 0 1.974868894e-14 0 3.739809282e-19 0 0 69.2932439 0.0002353240077 1.198752081e-17 0 0 0.7658089161 0 3.316816597e-11 0 0 0 0 0 0 0 0 0 2.189137534e-09 0 0 4.401279955e-10 9.723990092e-09 0 0 0 0 3.61396745e-08 0 39.51490676 0 0 0 0 0 0 0 1.673912483e-15 0 208.6742991 8.978520657e-12 0 0 0.009067706183 54.597478 0 180470.9137 0.0008411885748 9.928188725e-21 0 0.065946389 1.245164894e-06 0 0 0 0 6.478440189e-14 0.004165543343 0 0 0 0 0 118658.6303 0 0 0 207234.3325 0 0 0.000236644913 0 0 2.087986074e-10 0 0 0 0.3132106974 24347.28503 0 0 206.345334 814.7444935 0.003863902123 0 89.38817662 0 0 0 0 0 83190.06733 0 0.0002012249923 0 6.83712942e-12 7.590670648e-07 0 0 0 0 0.291109908 4.015584234e-08 1.80299083 0 2.15162163e-28 903171.4292 12877.62427 0 0 6.973453677e-05 0.02698183225 1.03748829e-08 0 0 0 0 0 0 4.194485479e-07 0 0 0 3.341876938e-21 8.374911183e-08 0.1794507414 0 0 1.421454683e-08 0 29336.37359 0 3.780881758e-20 1.799264525e-09 22271.4664 0 68036.36204 0.02649910427 0.0001805569458 0 0.1877659329 0 3520.511405 0 0 0 0 1303.172558 0 4.63803252e-11 1.781131277e-19 1.277859086e-13 0 1.083285671e-13 0 0 7122.478865 0 2.744272397 0 161.4065804 0 0 0 6.397213188e-09 0 0 51112.83612 0 0 0 1.00341156e-15 0.0004502800561 1684255.667 0 0 0 0 0 0 0 0.6576908608 1540660.179 0 7.982310821e-07 0 0 0.1597707994 245.2392039 0.5500530474 0 1.992437604 6.520749032e-06 0 1.344075124e-15 0 0 0 0 0 0 0 17546.19246 0 407.4993446 0 0.0001680755004 3.002838083e-08 0 0 0 0 109385.265 0 0 7.235476171e-18 0 0 9.108018031 127264.2801 4748.501893 4.09393174e-14 12459.12351 25.62365909 0 0 6.2497585e-10 0 0 0 0 1.828848292e-09 3.36117654e-22 0 0 0 0 69107.50501 4.624751545e-10 6524.729124 0 0 0 0 0.3872362969 9.971497214e-12 0.0001537860875 0 0 0 25630.54102 0 0 0 143527.1029 0 0 0 0 0 0 5.355780216e-08 0 5.398187754e-19 0 0 0 0 0.002810219462 0 0 0 0 31.3895197 0 2.324755892e-08 0 0 7.101016325e-07 7.615511933e-20 0.513263911 0 7.018673883e-17 0.002312406389 0 0 +0 0 0 1.134765297e-12 0 1159.611854 0 0 0 0 0 0 8.463718738e-12 0 0 0 0 0 0 11.12877606 0 0 0 0 1.190665308e-16 5.980708406e-09 0 8.492113178e-10 0 0 0 0 0 0 1.816496717e-07 0 0 0 0 0 2.163371278e-13 5.973811071e-07 0 0 6.720065693 0 0 0 0 0 0 0 0 0 2.279008136e-13 218204.1601 3.996436207e-09 2.589171794e-17 0.0002629064823 0 0 2.298869484e-30 0 0 0 0 0 0 1.638147823 0.004400322991 0 0 1.200894027e-07 0 6.973591692e-06 0 0 0 4.321996236e-26 0 33428.46719 6.218577919e-07 3.015452011 9.426290399e-09 3.863186767e-27 0 0 1.753948296e-07 0 0 0 0 0 6.118933058e-31 1.049371591e-11 21.56020912 0 0 0.1222985569 0 123.2440292 52.93288119 6.172374067e-16 0 0 3.10595071e-06 0 0 0.0004665419713 5.52725014e-07 0 0 0 0 0 5243995.723 0 0 0 2.464754633e-32 0 0 0 5.436067104e-14 0 11207.65973 0.003733497508 0 0 0 1397144.668 1.416232772e-14 0 0 14.34966065 0 1.549816721e-18 0 7.882325337e-11 2.948358075e-10 0 0 0 0 0 50049.44768 1.074685768e-15 6.980871971e-09 4.245816703e-10 56.38791028 1.277278463e-07 0 14187.10424 1.182156348e-19 4.974566139e-14 2.51723543e-08 816.1706146 0 0 1.080410551e-08 0 0 0 0 0 0 0 0 0 0 9.848520933e-13 2.216596508e-11 2.879727801e-12 692475.4489 35.58537156 3.976773683e-06 0 0 6.920734236e-07 4206.882809 0 0 0 0 3.989560046e-09 0 0 357.6945392 9.006489614 0 423258.5939 0 20084.37629 8.613192823e-22 0 2.512466802e-09 1.159814813e-06 0.757206527 0 3.44267457e-15 43.71251041 0 1.484351861e-15 0 9.651009743e-07 0 0 0 0 0 4.848428261e-10 1.220124423e-06 1824.491899 9.492420389e-17 0 8025.523165 0 2.281954234e-12 0.0003897349694 0 0 0 0.0009609499607 0 0 0 0 0 0 0 1.195170935e-18 0 0 0 0 0 0 0 1939.573437 0 4.483067323e-15 2.407512743e-26 0.1447363143 0 0 3.940259208e-18 0 2.744047159e-18 3.507041286e-11 0 5.506553019e-14 0 0 0 0 0 0 0 0 1.230369063e-15 0 0 0 0.0002559774876 1.46280246e-07 0 1.292093116e-15 0 0 0.3591472728 12.52863496 0 1.297567999e-24 9.228830396 0 365.2562651 0 0 0 0 0 167.7984372 0 0 0 0 0 0 0 0 0 108362.0545 4.457753242e-07 2.073998304e-22 0 0 0 0 9.61698144e-09 0 +2.692572769e-17 0 0 0 0 0 5.439317609e-05 1.327309933e-08 0 0 9.43427567e-17 1.832800984e-11 0 0 6.935153462e-16 0 0 338.7921648 332.9191029 0 8.095136998e-05 0 9.791636436e-14 0 0 0 1495693.05 3027.774357 0 0 0 1.231487979e-15 0 1.726225902e-05 0 0 4.968500039e-13 0 0 0 313.0528746 0 397646.3585 0 365.0579701 0 0 2.806163768e-27 0 1.266442656e-19 0 0 0 0.2993890758 0 0 0 0 0 0 0 6.199194297e-13 4.383200715e-30 7387.127101 1014261.817 0 8.289283812e-08 0.0002742165042 6107.787653 6.475136713e-05 0 0 0 8.404372574e-07 0 0 0 8.369224873e-08 176670.4999 5.680988597e-12 0 4.940179525 249485.4049 17506.23061 2.917651427e-05 6.729188866e-12 0 0 4.482921424e-18 0 0.06242360978 0 0 17219.91808 0 0 6.903883834e-11 218890.2026 0 3.333198487e-08 0 0 3.377511305e-18 0 5986937.152 0 0 11.96115008 1375927.99 204276.5865 429.69709 0 0 0 0 0.0001463418588 12.3434324 0 0 0 0 0 0 0 9.857180997e-15 0 0 134538.6506 4.858658217e-17 0 0 2.097960737e-09 6.01467751e-15 7.167209576e-07 1.223461848 0 5537.452519 1.069065427 6.505087961e-09 0 98.90781989 0 0 0.0005879781638 6.670422758e-16 0 0 0 0 1.448357212e-09 0 0 3657.963618 0 0.0001060265417 0.5286384756 2205.047343 2.033634358e-22 0 0 682119.0888 0.0001242846978 1.539601465 0.002508678853 0.001529565254 706.1486272 0 2.680749401e-15 9.895873722e-07 0 4.72652787e-05 0.0002054232675 0 0 3.053869038e-05 127870.7654 3.503512634e-32 83.56071765 1.692249759e-30 0.05508736082 0 1809961.726 0 1.613698975e-25 1.20987685e-20 146768.193 0 1.693060589e-07 0 0 0 1.580813975 0 4.27641199e-14 1.415883807e-08 1.114591829e-28 0 0.004628643873 3.309528226e-13 0 19256.28707 0 0 1.176993767e-10 3.309762909e-15 0 0.0002174994778 0.0001970637637 0 0 0 0.03088675108 0.003349369268 0 0 7.701445772e-07 0 2525.941608 0 2.087472814e-05 2.707779136e-07 0 0 926383.5837 0 5.950771821e-19 0 0 0 356.1079183 8.665713058e-05 0 17518.52927 0 0 4.214921773e-07 0 0 0 0.03100601858 0 0 2.613872556e-14 0 15665.07128 1.124324496e-18 0 0 30384.12266 282.4859839 0 0 0 0 0 0 0.4844051292 0 0 4.23695551e-06 2800.114424 4.159411324e-14 0 4.130193203e-22 0.03071684132 0 3.136660312e-25 0 0 1.996629909e-07 2.497212959e-07 4.278624227e-13 0.2624939307 5.272401173e-11 0 0 0 0 0 0 0 0 0 3.057738375e-12 0 0 0 0 0 0 0 0 0 0 0 0.2935956431 0 7.99203414e-08 0 0 +0 0 3.313676777e-12 0 0 0 0.004356796173 8.285290016e-13 0 0 1.437803115e-24 0 0 0 0 0 0 0 1.3938897e-05 0 390.7247666 1.001506029e-25 0 0 0 0 0 20476.76442 4.691177473e-11 1.996304249e-12 0 3.249259732e-17 5.549681999 5.445267079e-18 0 0 0 0 8.830308535e-08 0 6.734486871e-08 1.219239368e-09 3.718122303 16047.98546 0 42026.44147 2550.765447 0 2490.403837 0 0 0.0009379011929 45079.6821 0.005333652439 0 0 0 0.1656552059 0.100038961 0 0 0 1686.875566 3.044941388e-11 0 0.001251259303 0.1319277095 0.001696345203 1592271.179 2445.90295 1.112113233e-08 0 0.001806215753 0 52.1742358 6.71727826e-13 0 0 7.29565074e-06 1.721151601e-06 0 0 5.773440263e-09 0 3.502470526e-13 5.500744563e-13 0 994.7016054 0 0.006010587211 0 0 0.4899892861 174156.2172 0 0 0.001548164251 2.466518621e-08 8.112639368e-10 0.9139800814 0 420599.6101 0 0 0 10037.43807 0 292.321115 6.868513856e-05 2.094974149e-12 4.178336221e-28 137050.3043 1.45689989e-06 5.847366249e-07 0 0.6431306559 2.194664793 0 10652.04487 0 3.879725237e-13 6.830296887e-08 0 0 0 8.516541353e-18 0 0 5939.134152 5.868112366e-08 0 204.0754125 0 2.67926539e-13 38.55853503 3.763573961e-06 0 0 2.892774875e-11 4.20969535 0 0 0 0 0 8.634085096 1.04344717e-14 0.0001625729016 0 56.53858108 0 2.635716333e-11 0 0 0 7.828675598e-13 0 7.97464625e-09 0 1.583633077 0 0 5.461066161e-16 0.0001597050284 3.835829198e-08 0 0 0 1.053352411e-07 250.7334594 1.855447551e-17 0 0 0 1.216235361e-07 0 6.326626022e-12 0 0 1444.143705 0 903774.2205 0 0 0 0 2.874628205e-09 3.967050185e-24 0.004148802395 0.004396444974 0 0 0 0 0 828.7460131 0 0 0 6.225578581e-07 2.323893615e-07 0 1.806459969e-06 0 0 0.0003063533082 7.322826131e-07 0 9.293139056e-16 1351265.256 0 0 0 4.388110918e-08 2.054661e-07 0 0 6.672437225e-05 0 1.983167582e-06 1.77659736 0 0 1.875640495e-08 828536.3458 0 0.0001305421132 3.419279552e-11 6.466159909e-12 0 4783232.455 0 0.02593109979 0 114951.5166 3.091425535e-05 0 1.56721207e-15 0 16476.60531 0 0 0 4.003068881e-11 0 6.057078948e-05 0 0 2.673656601e-05 0.2894240586 0 0 9.114322255 0 0 1968077.383 0 0 0 0 4.817668162e-05 0 2.252474462e-09 0 21228.1312 6.703401054e-09 0 697246.5848 0 0 526324.2763 0 0 0 0 0 3.896752221e-11 0 0 0 0 0 200.6080299 1.037267262e-11 0 0 0 0 0.000951943869 0 1.331593825e-23 0 504.7090496 0 2.391771293e-05 0 265.64543 0 0 0 +0 0 0 0 0 0 139498.9449 0 0 0 0 0 0 0 0 0 0 0 0 2.884023822e-14 0 0 0 0 0.2096016426 0 3.181944895e-12 5.750507619e-13 0 2.560653636 0 0 0 0 0 0 0 0 0 0 0 0 20.44365751 408614.7655 0 0 0 6.936667582e-11 0 0 4.799593083e-15 0 0 0 0 0 0 0 0 0 0 0.07280658235 1.137942795e-18 5.642261862e-24 0 0 3.524199812e-11 0 0 0 1.489066723e-08 0 0 1.017438114e-14 0 0.5494631785 1.41401501e-07 74323.70831 6.825611398e-10 0 1.844146532e-06 5.71120466e-09 2.174228804e-15 0 0.1049817132 0.0001319320868 0 0.1814974394 0 0.001905551941 0 8.212096093e-13 0 0 8.070530232e-10 13.83792811 6.461242407e-13 0 0 0 0 2.361637296 0 0 0 2.209914354e-05 2.551166871e-16 1.111537018e-09 0 56.21415557 1.737889623 0 0 0 1996.967269 0 0 4.475558595e-05 0 7.782812329e-19 0 2.283658029e-06 0 0.0002358827669 0.0001937537581 7.418118574e-15 3.465503e-09 1.045641257e-06 3.229678811 0 0 16.29847715 0 0 5.381139317e-10 0 0 0 4.023227666e-08 1.601700012e-20 3.135560163e-12 0 0 0 5.698590555e-08 0 2.18380879e-06 10390.2294 0 4.124217377e-05 3.627004235e-16 1.707504147e-19 1252.036797 0 0 0 0.09378892351 10357.52335 0 0 0 0 0 0 1.078753298e-09 0 315.7719521 1.932841988e-12 0.001080118533 0.0001925193475 0 1.130259662e-12 460.6188233 1.427635279e-09 6.952822907e-18 0 3.115755864e-08 0 3.294801968e-12 0.009818069504 8.984615419 1.732391105e-30 0 0 0 0.001847559754 141.0035722 9.703372984e-05 3.338312297e-09 0.09523110785 8.384485952e-18 0 2.010600166 0 0 0 4.686221465e-17 0 23.57248591 1.33660433e-05 6.59329874e-10 0 1.800268115e-05 0 573.1697056 0 7.46312062e-06 0 21257.20338 0.02668319613 0 0 0 7.578911316e-16 5.659273144e-09 0 0 3.052118076e-06 0 0 3.702229236e-30 9371.748297 0.001385070244 0.08836747882 11931.8296 8.619630426e-08 0 0 0 0 6.559514113 0 0 0 0 0 0 0 0 0 0 1.3646663e-08 0 0 0 1.106669717e-14 0 0 0.4380945519 0 6.503543467e-05 2.948963024e-34 0 0 501.9328834 2.289180214e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002718547336 8.547465778e-09 0 0 1.534751658e-25 0 0 0 0 0 0 490569.1137 4.170288441e-16 0 502412.7114 604.8488355 1.640410235e-10 2.719702784e-14 0.4892489032 0 0 0 9.870592272e-08 0 0 0 0 0 0.0003584567076 +0 0 0 0 8.227034161e-13 0 0 2.420946449e-11 0 0 0 0 0 0 0 8.923225299e-12 4.391463755e-09 0 0 0 2.749396817e-05 0 0 0 0 1.158252367e-23 9.238642014e-05 2.476402682e-11 0 7.268173436e-07 1488.950101 0 2.967389762e-08 0 0 0 457797.3014 9.287142612e-21 0 0 2.749884289e-06 0 412.548775 0 0 0 0 2.883026376 2.655231819e-16 0 0 0 0 0 0 0 4.197395818e-06 0 3.000972721e-10 1.51555113e-20 0 0 2.289509402e-11 2.844291737e-25 0 0 2.901404277e-06 0 0 0 0 0 2.833958577e-06 0 0 0 0 0 0 0 0 0.0002601971047 1259.654124 0.0007431805466 0 0 0 1.790257308e-06 1.246505133e-13 0 3.58242729e-06 1205.848486 1.007752378e-05 0 0 1367.367059 3.291077636e-05 1.415659155 0 1.019191684e-05 0 0 0 0 0 0 0 54008.87137 0 0 7658.40979 0 0 5.079315081 1.718569178e-09 1.438710971e-11 1.312561281e-13 1.115899344e-20 0 2032.761317 0.03002744135 0 0 4778.031142 4.213788693e-14 8.867361487e-05 0 112735.6749 0 0 8.883933549e-09 0 99363.05431 0 188157.8844 0 210.5781381 0 4.024022054e-16 1.536597321e-12 1.179476654e-13 1.638084201e-05 73265.62698 0 0 3.062980371e-07 98096.1311 0 0 1.443527107e-12 0 3.067835427e-06 0 0 2.510084418e-11 0 0.1236109576 1.220561703e-15 0 0 2.732556858e-13 0 0 1.378011669 0 0 36.88820247 0 4.021750653e-12 3.994996477e-09 1476778.489 0 8.490259357e-05 0.0006478440731 533.9476387 5.63491044e-12 0 4.171077292e-11 0 892166.6217 2.055696116e-10 0 745579.6279 6.534120814e-29 0 0 0 0.0604367047 0 5.031004083e-11 16534.01822 0 0 0 0 0 0 0 0 0 1.069498067e-17 0 1.081106115e-05 9.355020356e-08 0 105808.5823 9.439089147e-11 0 0 0.0002058971483 0 0.05820955125 0 0 6.617356631e-14 0 0 0 1243916.67 6.028703049 17.97067216 1.147343031e-05 299899.2168 0 0 0 0 0 0 0 670.1558256 0 405.280583 0 2261.062784 0 0 0 0 0 0 0 0 0.2669714268 2.208237745e-07 0 0 0 0 0 4.856872155e-10 0 2.561780613 0 0.6160745084 121437.1453 0 0 0 0 3.708838169e-24 2226350.877 22376.62419 0 0 1.871843056e-18 1368803.934 0 5.469393108e-17 0 0 0 0 1.951773851e-09 297.2122232 0 0 0 1.4458272e-08 0 5.799657129e-08 0 2.037351098e-14 192647.8104 0 3.523908541e-08 0 0 0 438549.0849 0.01176597828 0 0 0 0 4.48937599e-13 0 0 0 3.934132476e-10 +9.982917159 0 0 0 4.7228977e-13 0 8.918208224e-06 0 0 58.22695086 2.142400579e-12 0 0.0003735824373 0 0 0 0 0.008228808847 666.5048337 0 0 2.557049281e-17 0 0 0 0 0 0 0 0 0 8.320838805 1.243427147e-09 0.04872867199 0.005812104452 0 0 0 0 0 1.688036266e-14 0 0 0 0 0 0 0 0 0 3.325451804e-08 0.2454739442 0 0 0 54534.57702 74404.92241 8.524967232e-06 9923.440643 12788.6039 0 0 0 0.00939967242 1.133447127e-13 6.70183883 0 5763.347461 0 1.054229826e-05 0 3.328718245e-05 0 0 0 0 0 0 2.252794444e-09 0 0 0 0 1.779185257e-09 0.1528709033 59703.7665 6.983110448e-08 0 75065.47644 0 0 1919.292969 0 5.929698645e-06 416198.3671 0 9.206198607e-09 0 0 0 0 106670.3756 0 0 0 5.092871922e-06 584281.2981 0 0.1105727221 1.315609675e-10 0 34028.00032 16639.0681 0 0 0 0 0 8.216050257e-10 0 4.833926013 1.968681644e-14 2.343855891e-15 0 0 0.01370619821 2.112968785 0 0.4318618188 0 1.412380726e-17 0.3779896985 7.120849971e-10 0 0 0 0 1.300488031e-06 0 1.447735497e-23 0 0 0.4332537912 3.157318629e-09 0 2.389016725e-05 179386.3503 0 0 674900.9373 0 7.750630004e-14 0 0 0 0 0 0 0 0 1.977914447e-18 9.720443861e-11 0.1215665699 0 2.916849463e-13 0 1.909040775e-13 0 0 0 3.874770931e-08 931755.5326 0.007836109393 0 0 1.685111249e-14 11.56428184 3.491901948e-11 0 0 6.199356747e-15 0 22989.39362 0.01593590814 0 0 0 14160.75256 0 0.0003001289031 0 4.18525355e-05 0 1.24366908e-20 0 0 0.001223968627 6.752054103e-20 0 6.907124767e-13 1.121831438e-18 490495.5286 244020.7862 2.619458022e-07 4.806800704e-08 0 3.705548869e-11 0 0 0 8.554768107e-08 0 13.21120489 0 2.897514741e-09 0 4.158530005e-07 9.138261949e-05 0 0 0 0 591.2978998 0 0 2.053879676e-26 0.04462426294 0 0 0 5.867264208e-24 0 0 1.061859255e-15 0.02510158452 3.612753774e-05 0 0 2.356553926 1772665.255 0 5506.12683 0 0 0 0 0 0.01393138024 575833.4097 0 0 0 0 10325.04159 0 0 0 0 0 0 0 0 0 0 0 0 0.0441440331 5.272794297e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 147552.769 0 30.907541 0 7.286484271e-11 0 0 1.202566648 0 0 0 0 0 0 0 1.604315677e-06 9.152829426e-05 +0 0 3.857258016e-40 0 0 0 0 0 0 0 0 0 0 4694.824414 0 0 0 0 0 41712.39922 0 179.8054455 0 0 0 0 0 0 0 0 0 258.7772902 5.004275783e-06 0 1.709068512e-10 0 88340.02077 58.00891484 2.440799599e-08 0 0 0 0 4.714190495e-16 0 0 0 0 0 0 0 0.03293293042 0 0 0 0 0 0 0 0 0 0 213.2595538 0 0 29.4258729 0.0001554845108 0 0 5.70892487e-07 0.0002020726215 5.48640901e-18 0 0 0 0 0 0 2.653035491e-06 0 273.5070423 6.058796765e-11 4.44139017e-18 0 0 5.340761227e-10 0 0 0 0 79587.71832 2.75615499e-09 3.169502804e-28 0 0 74.19334881 0.01175111608 0 0.001270869665 0 0 0 0 0 0.1143147746 0 0 0 0 0 0 0 0 0 0 6.603925193e-08 0 0 0 0 0 1.663053157e-13 1.67356209e-10 0 2.12659354e-12 0 4.640965072e-10 0 2957.807624 0 0 0 0 3.615121518e-20 1.845021172e-11 0 0.003469101195 0 0 1.223175966e-07 0 0 1.121734241e-13 0 3.016333488e-21 1.265312399e-06 0 4372.620781 0 0 20126.16465 0.464868269 3.22335104e-08 0 0 0 8.441354363e-07 11499.05357 1.053306959e-08 0.0004757281256 1.393013245e-09 5.864955436e-16 0 0 0 0 0 4.678780767e-06 323.3252562 0 4.746027614e-09 39.46192423 0 3.043768317e-12 19805.04621 0 0.1808055305 0.0007640413433 8973.172707 4.804098932e-10 515040.4238 2.398951671e-06 0 0 0 5.36814739e-07 1570420.633 0.001329751637 0 0 26300.54528 2389.274666 0.2385096889 0 0 0 0 0 89698.22107 0 0 0 3.123987495e-11 4.900647052e-06 22.93488248 0 0 1.585777285 0 0 0 51967.16527 134767.6159 5.688067416e-08 0 0 4.144120717e-09 0 0 0 0 0 104718.1798 2.093806088e-06 0 0 0 0.0004331002005 0 0 0.0001578950931 6.450310462e-12 0 1.148334941e-17 0 0 11.77158497 0 0 0 0.03634367663 27925.87976 0 6.134356295e-17 0 0.0001528819075 8.856744801e-08 0 1.596722455 0 0 0 0 0 0 48.77681422 0 1.408336402e-12 0 1.120078655e-07 0 0 0 3.810977928e-08 0 619168.5282 6.269274672e-16 0 0 3.809435185e-07 3.029991359e-09 1.173028829e-14 0 0 9.321567003e-28 0 0 0 0 0 3.886041978e-10 0 0 0 2.39859789e-14 0 0.0001483957517 0 11.50281582 0 0 0 0 0 0 0 0 0 0.0003091885678 0 +4.373385244 3.982696088e-16 0 1.095497711e-09 499.4222467 0 0 0 0 8.121276919e-13 0 0 0 0 0 0 389.6804128 1.168610961e-16 0.0001793756541 0 9.240760596e-14 8.020917897e-07 0 0 0 0 0 0 0 8.631382437e-11 2881105.314 0 0 3.083964195e-05 18172.73784 0 0 186.9119457 1187618.973 0 9999.617308 0 0 0.02502214462 1.338120399e-15 0 0 1.664135629e-25 0 0 220158.5026 0 0 0 0 0 706155.9551 0 0 0 0 0 0 4.842626258e-12 0 0 0 0 0 0 0 0 0 0 0.3673656741 0 6.165298701e-25 5459.677324 0 0 0 0 0 0 1.268479932e-13 602.2598413 0 591.1841116 5.25798385e-06 0 7.908181785e-11 84291.70553 1.082904637e-07 14492.17597 1682.637084 0.7783924457 0 0 0 0 0.04287345611 0 0 0 3.387593322e-16 0 0.0002765635491 9.539269741e-05 0 213884.4177 0.000883015203 0 0 1.170629264 0 1.520538143e-05 0 0 0 218023.1254 1.104136589e-10 0 496592.3483 9874.776762 0 0 4.830254515e-07 0 0 30364.86204 286.9918891 0 250.9647061 0 0 1.425733968e-08 0 0 6.130330003e-12 1.180252795e-10 0 3.501249434 8811.430091 0.2527802172 1.328437042e-26 0 0 1795219.354 0 0 0 1.809910966e-11 159.0493237 6.762280419 0 0 1.976128116e-08 8.82494745e-15 824.3628272 0 499031.7475 0 0 0 0 6162897.962 719554.3435 15.91917001 0.1655017603 0 859010.2271 0 7.57560543e-12 0 2320900.075 0 1.016158828 1.302915282e-09 9.657746454e-14 2.296770578 0 11719.60547 0 5.287342223e-06 0 0 6.37973898e-06 0 0 1.823526134e-12 27.32988848 0 0 0 0 2058668.418 0 2.472721707e-09 7.081366651e-05 0 0 3.590217315e-35 0 0 33.31811463 0 0 4.542795206e-09 0 0.08134811454 0 0 1.120188839e-17 0 9.187030348e-06 0.01112162996 0 3.550773741e-08 2.074049851e-08 0.5900931566 0 0 0 1.54102956e-09 0 1.484330858e-06 0 0 0 0 0 4.063447689e-06 0 0 0.0440012143 282558.6946 0.003025471619 0 1281.954073 5.706575855e-15 5.161428291e-06 82187.59572 0 0 0 0 1.144496604e-11 0 0 0 0 0 65995.44937 0 0 0 0 0 4.115724688e-07 8.659404032e-33 1.09987114e-15 0 0 0.008158871166 0 0 0 0 0 0.02392346911 0 0.05319800562 1.176665157e-09 0 0 0 0 1.533406098e-15 0 0 0 9.131402598e-21 0 0 0 0 1.956739288e-07 1.524087055e-15 9.06306579e-10 8.507788214e-07 1.900542553 0 7.699520813e-19 48615.68924 0 0 0 1.362835275e-11 0 0 +0 1.194413245e-27 4.458457107e-11 0 0.8675136466 0 1.608160916e-05 0 2.963176886e-05 6.217383906 11.64007548 1883046.961 0 0 0 0 0 5307.657959 0 0 0 0 0 4827.607677 0 5858.256168 0 0 0 0 0 0 0 2.544514652e-18 0 0 0 0.1538753142 0 0 0 0 0 0 0 0 0 0 0 7.627696857e-17 0 2.200990213e-07 6.604469572e-06 0 0 0 306036.4815 0 0 0 2783.759825 0 0.1847122892 0 0 0 1539.453192 44381.8385 0 0 0 4.958326892 0 0 0 0 0.0001264190478 0 0 1.850504123e-06 2.040273221e-07 0 0 0 0 0 0 1.340707187e-20 0 123320.7911 0 1.145095274e-21 0 0 0 3.127696036e-25 0 6.954905211 3.662141514e-07 1209.608863 0 0.9082352308 1.161002974e-08 0 0 0 12743.08461 0 0 0.0002830883454 1.498641051e-18 1.198741546e-16 4268.211932 126.7045856 8.027197704e-14 0.0002489938315 4.74362736e-10 0 0 0 0.04797852865 0.4412900397 1.267096447e-06 0.002926273375 0 200866.1187 0 0 2.21256184e-11 1.009227387e-29 4.058239053e-13 0 482929.7844 0 0 0 0 0.001902028585 2.982484484e-13 0 0 0 0 69.89459265 2.039269374e-10 0 8.929826517e-08 0 3.666080873e-10 0 0 0 0 103321.4475 0 0 0 1.816744599e-08 1.089237236e-08 1.177070579e-05 0 0 0 0 0 0 0 0 566094.5992 0.0002260735374 7.994923445e-07 0 0.09631444475 0 5.39657608e-32 0 2.215604701e-11 0 0 0 0 0 7.212393475e-22 0 5.24798152e-08 0 0 2.17541092e-07 0 0 0 0 0 0 0 0 6.961140827e-08 0 0 8.515967337e-14 0 5.652528234e-13 0 0 5.388407084e-09 0 0 0.04314604714 0 0.004317104451 0 0 1.382546237e-09 0 0 0 3.928672955e-14 4.430540635e-13 7.848877147e-05 0 0 6.739961953e-05 0 0 14750.34639 0 0 7.558076344e-12 0 0 0 0 0 4.174590159e-11 1.060550627e-11 0 0 0 0 2.216271115e-08 7.790931801e-05 0 8.066900572e-13 0 41048.17592 1.632554334e-05 0 0 0 0.2611047008 0 75.25448513 0 0.2366426482 0 0 0 3.609304945e-14 0 6.952857748e-09 1.253272183e-12 0 0 0 0.05435091354 973844.1957 203837.5015 1.012691127 0 0 0 0 0 0 0 2.662587519e-15 11.74727442 0 0 0 0 0 0 39.35798142 0.001633657902 0.001120513764 0.0002081474063 0 0 0 1152.149302 2.058246482e-08 0 183928.6838 0 1.866130203e-25 0.0001794495972 0 0 0 +0.7096135917 4.567338336e-24 372214.6057 204.3866741 0 0 0 9.971503866e-20 0 0 0 0 1224469.178 0 0 0 0 0 0 0 0 0 0 2.986722937e-06 0 0 0 0 1.084845143e-05 0 2.209724137e-26 5.737787402e-15 0 0 20794.03171 0 0 4.227843332e-13 0 2.164897676e-08 0.5419963218 0 0 0 0 4.664201733e-05 0 0.1103219516 0 0 1.113684844e-22 0 0 0 3.467855646e-06 0 0 0 0.05597002339 9.313888129e-11 0.1061565337 0 1567.453852 0 0 0 0 0.01531291567 209970.2122 0 4.66834853e-19 0 0 0.002715239828 0 1.275622652e-05 696.021704 6.893657898e-06 0 0.01188797183 0 0 1622.504087 0 1.037790723 47450.74085 3.325379589e-08 0 23650.60137 0 0.7448912835 4.510972108e-08 2.335983691e-19 55.93376296 0 3.23292037e-06 9.027174365e-08 9.63225588e-08 0 5.840922241e-19 5.297508686e-09 0 8.24869013e-11 0.01459744259 1.269170178e-12 0 5.504896485e-14 0 653.4374901 1250.06711 0 0 0 0 1.052269623e-13 3.005730328e-13 0 0 239.0231073 6.671251321e-11 0 1.540876928e-11 0 0 0 0 0 0 0.0003923959959 0 0 0 0 9.680930518e-10 0 6.753111089e-19 0 0 0 0 0 0 5.87491417e-10 0 0 4654003.336 0 194.4144589 1.054303735e-13 0 1.430791092e-13 0 0 3.798806036e-14 0 6.136195925e-21 0.2025687478 0 0.5315840272 1.574696521e-09 0.191901418 2.235832034e-18 0 820.993583 256353.1395 0 1.353977352e-12 0.006285594083 0 0.0004004321494 0.5563094772 0 15.75807136 0 0 0 7.587080737e-06 0 2.957624355 17062.52481 0 0 1002.872356 6.545943287e-11 0 0 0.008092320633 8.091990716e-11 0 1.295307477e-16 0 0 0 0 0 0 9915.70667 1.497437596e-10 0 5.785740786e-11 1.467580376e-15 0 7.552652061e-07 6.014092314e-06 0 16699.28704 0 1070.146988 0 0 2.526066169e-05 0 0 0 2.517675796e-06 231287.6147 0 89130.02972 0 0 0 2293.952831 0 4.802255846e-08 0 0 0 15.1774471 0 0 15574.8281 0 1570648.545 0 0 0 0 0 0.5125764988 0 6.95392573e-07 0 1722.101932 0 0 0 5.835940574e-07 0 8.224396497e-14 0 0.0008752673948 0 0 4.133693099 0 0 0 629572.6133 0 0 0 0 2.41799521e-13 0 0 0 542430.2342 0 22.42110834 1.004195892e-08 0 0.06391588443 39483.30653 0 0 0 1.980648414e-08 0 0 0 0 0 0 0 37379.14081 0 0 0 0 1.810286315e-36 0 0 0 0 0 1.993676401e-09 2.907459069e-20 0 0 7.724089337e-10 +0 0 0 0 197699.2896 0 0 1.416406437e-08 0 0 0 0 0.0004046834362 0 0 0 0 2.088876512e-12 0 0 9128.24757 0.004815019167 0.0001029001149 0 2.002513033e-10 0 0 8.639698794e-14 9.294118292e-14 0 0 0 0 0 0 0 7884674.514 55124.75871 5985.717684 2.395121467e-09 0 0 381.070635 0 0 0 0 0 0 0 1.219617059e-10 0 0 0 4.556861512e-11 0 0.03049521906 0 1.039500623e-24 2.623560701e-10 0 223.3482143 0 7.04146966e-09 1.814515197e-08 0 8.26148674e-11 1.512158951 0 4.128849335e-13 2.142682596e-08 0 0 0.0001237064319 0 0 3.706512314e-08 164114.1471 32752.48519 0.02821428565 3103.650024 0 3.943226066e-25 3844.453494 0 0 0 7.079176545e-10 0 0 4.207589935e-12 4.621441711e-08 0 0.005931765793 0 491117.2361 0 3990.58669 0 0 5.001513306e-11 10206.40849 1821.626558 0 0.1052449703 4.417064999e-12 5.487633939e-07 249717.0533 0 2.385469989 545.6248565 1.339250514e-30 4.48118326e-15 0 255.5212513 0 0 0 0.0192636645 52480.03301 0 0 0 0 3873.160242 24.20740217 321356.4696 0 6956.106126 0 0 6.63777338e-17 0 5927.433895 0 0 1090.621304 37.35904367 0 0.2797121809 0 2479269.151 0 51.01886156 1826624.681 0 1760.454744 0 0 1.989853674e-11 0 0 0 0 0 0.0002699678709 0 0 0.0006412120605 0 0 6315.240571 226630.559 9.038220053e-07 4.748967069e-12 0.002076369696 0 0 0 6.159784242e-13 0 103423.9752 0 1.87395982e-05 5313.125465 0 6.862856894e-10 0 12.93496774 0 0 0 0 0 0 0.03482786096 7.53506598e-21 0 44.65590803 110.9982165 17321.68474 63.78489372 1.973599329e-05 1.185569995 0.0006660225965 0.01039731361 792525.6277 0 0 0 0.3773579177 0 0.03360650088 0.001535368209 1701.240168 1.875857329e-13 0 18.12136887 0 0 0 0 3.068875153e-08 202600.8519 0 0 0 378.6538688 3.455002159e-21 0 2.711092658e-15 1314534.056 0 0 0 0 76.87880555 2.962131039e-10 0 0 0 0 0 0 1.837871454e-11 0 0 0 0 0 0 0 5.52825443e-07 0 0 0 696.7743463 0 0 0 0 0 0 0 0 0 0.000402032718 1.167652631e-06 0 0 2.441252984e-08 0 0 0 8.715368679e-09 3.673749691e-30 0 88953.8347 2.972761498e-13 0.03655106875 0 14038.03039 0 0 0 0 0 0 0 0 0 2.425681073e-10 0 0 0 0 0.0002155050776 0 0 0 0 8.529827984 2.560601131e-05 0 0 0 0 0 0 0 +0 8.375477463e-10 0 0 0 1.264212697e-09 0 0 0 0 0 0 0 9.859296004e-08 104166.8573 0 19.21271484 115309.5514 0 0 1.872086697e-14 0 34.67648741 0 54.00272151 0 0 0 3627886.749 0 1.276384625e-08 0 0 0 0 0 0 112.7622937 2.486613994e-12 0 0 0 4.294342525e-09 37914.67136 5.16284308e-13 1.364801342e-11 0 0 2.89367359e-06 0 0 0 0 0 0 0 0 0 0 326401.6601 5.562409879e-27 6.59638056e-21 0 0 6.435463038e-17 1.924140279e-15 0 0 0 0 2.598587846e-13 0 0.05855513003 0 0 2.510209138e-07 5.328390546e-05 0 0 9.058382406e-06 0 0 1.13715933e-05 0 0 0.008043894254 0 297.6882233 0 0 2.039343786e-08 0 0 0 4.55393884 0 8.545881086e-05 2.633834784 7.214896866e-15 0 0 2600.276702 0 1.177988794e-06 30704.81043 22.75524578 0 5.120981965e-31 46696.6962 2.260795159e-10 0 0 3.205212619e-11 6.622266332 0 723.4723784 0 1.796275516e-13 0 0 2.858774049e-17 4.036541983e-10 0 5.585512626e-13 0.02577006917 20463.67676 207072.4343 0 4.075714582e-05 0 0 36551.41385 230618.6127 10.41874324 0 0 0 9.857213077e-11 0 0.002848985903 6.246217544e-30 1.607014642e-21 2.004406978e-05 0 0 1.453102868e-09 0.0006318552355 0 527411.3677 0 0.1355880677 0 0 0 0.006463591206 1.492278246e-08 6.340561429e-06 0.000238258935 3421414.625 3.816206047e-22 0 0 0 0 0 1.302537917e-23 518968.0939 0 0 0 470069.2082 353611.3857 0 0 3.186275183e-21 0 0.001647840818 2270.256571 0 0 277.1767748 2.996952378e-11 0 4.399358701e-07 0 0 0 0 84866.85603 1.039298507e-14 4.456820405e-17 0 0 0 635684.2338 0.002513172835 1.068090289e-05 1051.422886 0 1.322228134e-19 6.941717894 270083.968 0.06310424687 0 0 220110.521 2.78436853 1.193556267e-39 5.125066846e-16 4.062396887e-21 0 0.115774934 26955.79497 0 0 0 0 0 12155.49613 0 2.714704678e-18 0 0 1.315726373e-16 2.002941769 1.128893794e-08 0 0.00664566573 6926.651007 0 1.014966459e-08 0 1.909133298e-15 0 0 2.667444113e-07 0 0 0 0 0 0 1.125988914e-22 0 0 0 0 0 0 2.178126552e-06 0 0 5.701402905e-06 0.1558114124 0 0 0 8.955134661e-16 0 0 2.968891757e-13 0 0 0 0 0 7.741489965 0 0.8790251038 62043.19062 43370.99097 0.028243793 0 0 0 0.000363269829 0 0 0 0 0 0 0 0 0 0 2.040534518e-06 0 0 4.800884499e-09 0 451997.7406 0 0 0 0 6.914856486e-05 0 0 2.332209001e-06 +0 0 0 0 0 0 0 0 0 0 0.0002085032346 0 0 0 104904.2265 0 0 0 0 1.955182449e-13 8.555912247e-12 0 38.86750733 404709.1631 2.82453201e-08 223.2733712 0 0 0 0.001051805514 0 0 0 0 0 26028.28152 0 0 0 0 0 0 0 0 0 0.08614438684 0 0 0 0 0 0 0 0 0 3.030815812e-08 0 1.357391234e-10 0 0 184596.3242 2.155976491e-06 0 2.169258845e-12 2.511627669e-11 23391.42372 0 0 0.002092051806 0 9.107936484e-08 5.755731946e-14 0 0 820.2998741 3703.731961 5.724000073e-15 0 1.364782883e-10 0 0 3.882737935e-13 0 6289.559468 0 0 0 0 0 2.298894928 19945.52754 4.056607606e-06 4.202100254e-24 0 0 3.895485484e-08 0 0 7.290649962e-15 0 8327.850835 108046.9255 0 4.201061895e-06 9.668937269e-09 0.001676855441 0 0 0 4.486453319e-11 0 128.2222951 8.934809888e-06 11673.1906 0.0002343468189 2.620800026e-11 0 5.521546635e-13 32720.97514 2.410494586e-08 0.0002540939283 0 93879.41822 3.365632557e-05 0.006526271233 6.427450638e-11 0.005333077562 0.0001082865984 0.001009275703 9.67698183 0 1.271828355e-09 0 11.69230558 67383.4971 3.681405002e-09 0.0001270492431 0 0.06595274567 0 0 0 1.772175641e-05 1.8677721e-10 1.494230654e-14 2.897770188e-15 3.820947336e-14 0 9.601622928 0 0 0 0.0001171862682 3.050832933e-18 0 0 0 0 0.000357284498 0.1294623724 0 0 0.6548935502 8.254962375e-09 0 0 7.12834323e-05 0 0 5.182223615 1.042831591e-05 0 0 0 5866.443987 9.548297544e-11 0 0 606206.0287 0 0 1.78499519e-06 410587.9067 9.210037885e-07 0 3.048405158e-09 9.536349044e-12 3.445705603e-16 0 0 0 0 3.575750867e-19 0 3.932185937e-23 0 1.902341358e-11 103708.1398 0 1.677088651e-08 0 1.030545661e-05 0 4.458576549e-09 0 4.871515661e-09 0 0 13943.00752 608959.5984 1.446104226e-15 26.53310237 0 1.43992035e-15 0 0 0 0 2.859611288e-16 0 0 0 0.6370343552 0 0 0 0 0 0 5.91450564e-13 338.8568685 0 0 47198.69297 0 1.795500848e-10 0 0 0 1.847119125e-07 0 0 0 46837.26511 0 0 0 0.001290332008 1.107556491e-20 0 0 0 2.704749071e-09 4.846390978e-05 0 0.0401902335 0 0 0.0003882557659 1.120085433e-07 1.741991389e-05 0 0 0 0 0 4.740655109e-24 0 0 0 0 0 0 0 0 0 8.937969442e-05 2.726228218e-08 0.8364950983 0 9.133262839e-17 0 3.952195463e-28 0 0 0 3.522563307e-22 0 0.001937504309 3.121203224e-07 0 0 1659335.966 1.717999511e-09 284.8719809 52.7312225 0 0 2.168399521e-11 0 +0 7.825110095e-13 0 0 0 0 0 1.292921761e-22 9.379487031e-11 0 0 0 8.719378893e-09 0 9.145387077e-12 1.974060414e-06 0 0 0 2280666.435 0 0 0 0 5.919633934e-09 379.1513806 0 0 2.140350373e-19 0 0.0008028216725 0.0004263892756 0.001252086951 0 0 7.251586906e-11 0 4.594758818e-10 0 0 0 0 0 0 0 4.945881826e-06 3.847445695e-09 0 0 0 0 0 0 0 0 6.070126111e-17 5.685390707e-12 55.11996444 0 3.239293919e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.704818978e-19 0 1.323997703e-20 1.362965183e-11 0 0.1033601603 0.0002983911175 0 0 2.409262323e-13 0 927608.9107 340.5787934 0 0 539267.5363 0 0 0 1.388837949e-07 0 5539.35515 0 147.7754774 0 0 0 0 0 26.6295435 0 0 0 0 0 0.02991822026 0 0 1.29622025e-05 0 2.655665225e-09 126312.5496 0.001415754253 129.0129569 214.7192873 1.385242311e-17 1.204054831e-14 2.528007427e-21 9.321367664e-13 0 0 0 2.564531684e-06 5.838859571e-11 0 6.144730725e-11 0 0 0 3.871018891e-20 0 0 0 0 0 0 0 0 8.729393095 1.704805308 0.003118058174 0.0006663754818 0 3.358587699e-11 0 0 0 1.068139099e-06 3.028375465e-07 0 2.697265632e-10 12.46685689 0 0 0 1.436736125 130777.7163 4.643550877e-15 7.188634438e-25 1.448218917e-16 0 16.40706807 1.52043675e-11 358.2322347 2.878035235e-08 0 1375.032113 0 0 0 295086.2685 742454.5978 112213.2697 6.688028549e-12 0.006557065407 0 1.486308002e-12 12644.7863 0 1.036723076e-10 0 134.061505 1.048344735e-10 194.9877289 1.356980831e-06 0 0 221186.4317 1.478805585e-09 0 0.001760435794 0 6.177282061e-14 0 35355.58348 2.745834883e-08 3932.989726 1.793916307e-09 310426.1075 0 0 0 2.884719563 0 90467.59934 2785.950688 0 0 61.71788353 0 0 0 117309.864 0.1316304963 0 0.0001323329919 0 0 54772.61933 0 0 0 1906147.849 0.01838607642 0 0.0001722763999 0 0 2.333821802 1.621257882e-05 0 10.84045576 5.720590112e-20 0 37.17528832 0 0 33.65952549 1044.650306 0 0 7.242282355e-19 102.014849 0 0 0.07057732419 0 0 0 0 2.148993262e-10 0 0 0 0 9.912067082e-07 0 0.005166312918 0 1.896039482e-11 1.565893723e-09 4.007379862e-17 3.977645787e-06 0 0 2.228626658e-06 577.8731741 0 0 0 1.99929412e-16 0 0 1.279523778e-17 8.657261787e-09 0 0 0 0 0 0 1.712509954e-11 0 0 0 0 0 135447.084 0 0 3.44896762e-09 0 3.854491824e-08 0 +0.000616595639 0 0 0 37454.57821 0 0 0 0 1.20948423e-14 0 92728.05252 0 1.458985311e-08 4.534334385e-05 0 0 0.0004801134479 0 0 0 3.566987459e-09 18574.26918 0 0 8.435613848e-18 1202628.478 0 0 0 0 0 1.505249103e-05 0 0 0 0.6740774394 0 0 0 5.383267123e-10 0 8.465086937e-11 0 2.429707827e-07 0 0 0 0 911.6127633 0 0 0 0 0 0 404801.9835 1408.508814 0 42914.59061 0 0 4.243728665e-28 3.735860419e-09 0 0 0 142040.7609 0 0 9.665480007 0 0 0 0 0 7.082120015e-06 1.16947474e-13 1.023499126 0.003899205831 0 3.52593349e-13 13249.42054 0.003530837466 0 0 0 2.437311512e-24 0 9781.207515 0 0 9.985804804e-12 0 0 195006.3881 0 0 9.803803637e-14 5.58889349e-18 0 0.0004190271642 5.049867524e-11 1.627383793e-28 0 0 7.953261132e-11 0 0 0 0 6965.068571 0 0 5.005861479e-06 0 0.0002031479619 0 0 0.0002721434711 0 0 1.854201621 0 0 2627002.892 0 0 0 0 1.885297441e-16 0 37.24504182 0 0.000183957308 465419.1576 2.067943386e-09 0 3.520981137 0 24.2140705 0 0 1.418134701e-05 66.4836926 0 1.102303441 1.254473586e-16 0 0 0.0006610680216 1.462921174e-14 0.07203258984 2.73668843e-14 0 5.52748782e-10 11.43950419 0 0 4.186909055e-08 0 0 9818.69251 0 0 0 2.679255201e-12 9.311364448e-09 0 4.97993537e-05 50.28263624 0 0 8.528478804e-10 0 0.727539753 1.679618576e-13 1.981263714e-14 0.02833985186 0 7.840019165e-15 1.587309774e-16 5.661193007e-08 0 1.340716761e-05 0 0 0 0 7.941257579 0 1.725069105e-05 0.0002638244692 0 4.156059659e-20 0 0 4521.491734 6.721976209 0 0 0 0 0 0 0 1.624172688e-05 0.2177229469 2.97014478e-09 0 0 0 0 0 0 218800.7754 0.269965809 230.9177185 8.756612011e-11 2.162907069e-07 0 0 0 0 0.002241249189 0 0 0 0 0 2.195436721e-05 1.99229522e-13 0 7.253214893e-11 0 0 294215.1174 0 0 0 0 6.908094701e-07 0 0 0 0 0.0007339699355 0 0 0 0 0 0 0 1.452219769e-14 0 1.748357086e-05 9.0449843e-12 0 0.4853246651 295675.3706 0.1115212157 0 0 0 0 0 0 173822.5512 2.745890452e-11 0.2801026274 0 0.0003698293138 0 0 0 5.035378361e-21 0 0 0 0 1.471122462e-17 0 0 0 0 1.061060929e-17 0 0 0 0 34.90498163 110953.4443 0 0 0 0 6.809125901e-13 0 0 +0 0 0 0 0 1.663656544e-06 0 0 0 0 0 0.02710584607 0 0 0 10298.74589 0 0 0 0 0 0 3.886649373e-23 0 0.0190173883 0 121.101748 0 0 0 0 0 0 0 0 0.2561147714 0 2.958414532e-08 0 1.322937582e-11 0 0 0 0 0 0 1.16129423e-14 0 0 0 0 0 0 1.506599863e-15 0 0 0 0 1.587264154e-08 29.5893998 66163.77062 4.419960775e-10 1.227250437 7.447384198e-11 0 0.2968758756 0 0 7.690515207e-11 0 1.651292354e-06 0 0 2.443086799e-06 0 0 0 0.009416032763 0 0 1.388122683e-12 0 1.590389564e-05 2374.229641 0.2470004078 0 0 0 0 6.644116103e-09 0 0 4.953179925e-10 0 0.01069274212 1.054622634e-07 0.000203777904 0 0.02465206498 0 0 0 159.2376858 365713.2417 2.165706784e-12 0 0.0004148267159 0.000342478139 0 1.001595182e-08 1.947661685e-11 0 1.121705998e-08 0 0 0 3.025397993e-10 0 5.224844527e-07 5.418276366e-08 1.194063152e-28 0 0 2.703189334e-10 2.93707595e-24 14012.40403 14364.33409 0 0 0 15559.28344 4.86156681 7.309541388e-14 3.512909602e-05 0 1.364392073e-08 0 3.872282884e-14 748.2175768 0 8.512785835e-11 0 8.888948692 3.071182857e-12 0 2.338806126e-08 0 0 7.385881586e-13 0 0.04011155311 0 0 0 0 10.23188289 0 1023030.346 0 0 0 1.223098019e-12 262719.3182 1.785334941e-06 0 0 0 0 0.2285337838 0 0 1.7053215 267.4434433 1.056711679e-14 0 4.397927907e-11 0.02016408845 206730.4465 7.486333224e-08 0.6823549027 0 0 0 6027499.306 0 0 0 3.567058898e-11 0 0 0 1.353040616e-12 0.001010201075 2.320914495e-13 12.15784031 0.0007506418697 0 0 0 0 0 0 0 0 0 0 1399.809038 0 807.3432727 0 0 0.0001966162409 1.523144352e-10 15188.64974 0.001920092455 0 2.115904627e-08 0 0 0 0 61.96824957 0 0 0 0 6.518726787e-06 117.996824 2.175040427 8383.651603 0 179.7694835 0 85460.73224 0 4.724420707e-07 0 0 5.063779993e-06 0 0 0 497.4280592 0 654.5048193 0 0 0 0 1.010716805e-26 0.04959325133 0 38890.68502 0 0 0 39.33057964 0 2.026038313e-13 0 2.028942332e-08 293.0368709 6.254085584e-09 9.694361511e-08 0 4.408014607e-14 0 0.01999378232 1.12596786e-06 1.062412549e-15 0 0 0 0.1880153271 0 0 0.01194618501 0 5.858727428e-09 0 0 0 0 1.315616415e-05 477.2219187 0 0 0.0003952813321 0 0 977.5553426 0.4253861938 0 0 0 0 0 0 0 0 +9.446951962 0.0002911204119 3.532519835e-06 0 0 17368.66251 0 4.072219908e-25 6600.576507 1.878286945e-07 0 0 0 0 0 0 0 0 0 0 9.307753632e-08 0 0 1710608.375 0 1579556.629 0 0 0 2.997309488e-17 0 0 0 2.936212191e-17 0 1.48234549e-14 0 0 5.148408274e-10 0 0 0 0 0.133635027 4.216639181e-09 0 0 0 0 0 0 0 0.06128333694 0 0.2234365387 6.777304046 0 0 0.001147464539 0 0 0 0 1.173064725e-05 0 0 0 0 0 0 0 36892.98159 0.001150314409 0 0 1835635.646 5.697984574e-20 0.001764745494 8.745763165e-16 8.409242913e-11 0 0 0 0 0 0 881481.577 9.838611112e-08 35996.0928 2.520978195e-06 11.70956304 2011.421761 3.84193425e-20 1.653758352e-05 0 1.367222962e-07 29994.268 1.383572163e-06 1.164542809e-15 6.635670512e-11 2.369964505e-16 0 0.6329183324 1812.916694 0 0 0 0 1.74280059e-16 78.78190684 43404.25168 0 1.084341076 0 0 0 0 0 4.33736004e-15 0.0119800752 1.565670944e-05 0 62822.09485 0 2.25829003e-19 3.107830088e-12 2.88617028e-14 0 0 655408.9933 104.2887466 111960.789 0 72756.62015 0 0 0.643276171 0 0 3.679130907e-16 0.2552038001 674068.6684 0 0 3.080549211e-08 2.304509256e-15 0.08211614914 0.006691935338 1.032539428e-05 0.001424491634 0 0 3.613265048e-05 0 0 1.460128362e-11 0 94062.73612 87.39654155 6.3854701e-13 1.432582556e-12 6.615000761e-16 0 0.2142321623 0 2.579820496e-18 1.371903758e-19 4.73394776e-12 0 0.01287794203 0 0 2.878794542e-10 0.8700640532 9.339607349e-07 0 0 0 1.230860883 0 2.392505809e-07 8.698420284e-11 0 1.746525456e-22 0 0 0 55.49860311 0 1.010859826e-05 6.623256379e-13 1.467990592e-05 0 2.914792521e-19 0 0 231.774657 0.1171872709 2.67874839e-09 56016.20819 0 0 0 0 0 0 0 2.242002423 0 0 0 0 0 1.868205056e-12 216.3761248 0 559279.2159 0 0 0 85.82857348 0 1.199350859e-09 0 0 370120.9426 3.086857025e-08 3.949918453e-07 0 0 0 454.9623272 0 6.964038615e-12 7.110577446e-12 0 0.0001497498778 200078.8987 0 2.530809136e-10 0 0 0 0 0 0 0 0.497682074 0 0 0 0 9.254062198e-21 0 1.637607124e-14 0 0 0 7.005853327e-09 9.806513013e-15 4.107559743e-07 0 6.70289752e-16 4.088802351e-17 0 0 0 313764.1732 0 0 1815.488328 0 0 0 0 9.087429556 0 0 0 0 0 0 0 0 89149.5519 0.09937035508 0 0 1.264836816e-07 0 0 0 0 1882.076372 0 0 0 2.823576945e-05 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.858406274e-20 0.02163061465 6.856252654e-10 0.0004294475969 2.2380885e-07 0 0 0 2.752270578e-07 12258.30027 0 0 0 0 27965.80468 5290.309572 4431.525326 0 1046.186605 0 1.332518517e-05 0 0.5271569014 805.1352819 3.423989365e-17 0 0 0 0 9.128278024e-13 0 0.003597325103 0 0 2597.673649 15.22255361 0 0 8.980704207e-06 0 0 0 0 2002.724288 0 0 0.0009013525941 0 0 8.665700868e-07 0 0 0 1.274234231e-14 1.291816909e-23 2.351452288e-20 0 0 1.25642436e-14 2.972671772e-13 0 0 2.00889347e-16 0 5565.690138 0 1.55555359e-12 0 7.287009811e-09 0 0 3.21128123e-12 0 0 0 0 0 0 1.166798872e-14 0 0 0 0 8.963958945 2.962682067e-05 6941.279426 1.566796923e-12 0 318.8257268 0 0 2281973.633 5.44227111 1.0208217e-20 0 0 1.691259789 23006.03444 0 0 0 0 0 1.146732323e-10 6649.985402 0 0 0 0 1.954337029e-10 0 0 2.690658087e-12 1.569906854e-11 8.980266466e-10 0 0 0 0 0 0 0.1609108511 1.599154395e-09 0 0 0 0 341549.8473 4.548572398e-05 0 0 0 0 0 1.407963153e-16 4313.141091 184456.0356 0 1.402857674e-16 0.02339550468 0 0 0 0.01594307629 0 0 0.007869426625 0 6.732154741e-08 0 3.053273017e-09 0 641.6529002 0.01827724106 93.60398308 0 0 3.992630074e-10 15102.0014 8.248532836e-14 3.40286983e-07 1.112266998e-05 0 0 1006.120374 0 2.66881694e-13 0 0.0005561718409 1439687.721 0 0 0 7.771718575e-12 121.0022292 0 1.315295904e-12 1.656411474e-05 1.713653208 2.054781561e-10 0 0 0 0.1224576095 0.00321264204 5379.602028 0 3668.467771 4.053404757e-09 0 0 0 0 0 6.070350983e-14 0 0 3.652023928e-10 0 0 0.07487913672 2.764181224e-07 29.31956314 0 0.04559848114 0 0 1.215467446e-06 28494.72201 0 0 0 0 0 0 0 1.041576685e-05 0 0 0 0 0 0 0.02095570518 0.01033986854 0 0 0 0 0 0 0 0.01683567932 0 0 0 0 0 0 0 1.049426312e-20 0 501220.9339 0 0 1.130360896e-14 0 6.879073375e-07 1973.868958 838663.3704 0 0 0 5.931245595 0.07289375517 448.5356638 0 7.944126918e-12 0 4.581431343e-10 0 1.818363154e-11 3.077467853e-12 0 0 0 0 0 1.11624475e-17 7.446763507e-10 0 2.295590577e-24 1.678416615e-08 0 0 0 0 2.369509826e-06 0 8.0255179e-09 0 0 +0 0 0 0 0 0 0 0 0 585.3286735 1.008398773e-21 0 0 0 0 0 9200.794413 0 0 0 126054.9191 0 0 1.327047175e-12 0 0 0 0 0 0 0 0 0.00513239054 2.542012225e-09 0 0 0 0 0 0 0 3.978781151e-13 2.617248031e-13 0.01157035609 10918.97591 4.882930282e-09 9.397415936e-13 420166.0716 8937.732172 0 0 0 4.607655132e-08 0 0 0 7.709564146e-14 2.637447058e-06 0 2.979895574 7166.480059 1.553420969e-11 0 0 0 0 0 2003152.834 0 3995385.388 0.00011879671 0 0 0 690053.1103 0 0 617647.4121 0 0 0 0 1.858562347e-16 0 0 159528.506 0 1.608242896e-16 598485.034 9.204101038e-12 0 0 9.932027991e-06 0.02221783651 99.42428998 0 308.545544 3.590774232e-07 7.732026333e-12 3.362308613 0.001101164638 7.571463941e-09 1.79370341e-21 1.401940732e-10 6240.788313 0 0 9.40108443e-16 0 0.002000489828 0 31357.59464 0 0 0 1.883467391e-08 0.00379946134 0 0 0 2.798746774e-15 0 0 4506.424561 0 0.0003395653226 8.426363811 0.0007378282848 3589.766359 4.318996465e-11 0.0008275574391 5.561603253e-10 1430.686251 0 7.334268204e-05 0 3.518115397 167961.964 12.19068522 0 723768.2446 0.5718660435 0 0 0 0.0001929675111 0 153.606886 0 0 303.9712352 7798.1511 5.89622272e-07 0 1012.602933 0 0 0 0 1.155766042e-13 0 0.3959763796 2.750694986e-11 216681.5388 0 0.04132361341 6.050788458e-14 14.91344668 0 0 0 4.091570209e-11 0 0 0 0 6.124742371e-16 0 0.009900924616 0 0.6960384165 4.205341869e-12 4.831192238 0.3864649176 0 0 0 27195.98574 0 1486.871038 0 2627.67216 1886.286911 0 5.789363338e-08 0 0 0 0 0 0 5.401124714e-06 3480.459545 1.994634166e-05 4958.100205 0 5.628474656e-08 2.696745909e-07 0 0 0 0.0001301196019 0 0 1.535049143e-05 0 0 0.01810696243 417804.2204 0 2.011037861e-16 0.003764389438 213.6634799 0 0 0 8.843974293e-14 0 107358.1783 0 13486.02198 0 1.854979348e-23 0 0 0.767958097 0 0 0 0 5.247126242e-16 0.0001083969422 0 0 0 0 0 0 0 0 0 2.654087204e-17 4.71880624e-14 18019.74607 0 0 0 0 0 0 1.380068123e-06 0.05880642136 0 0 0.07452450915 1.906934287 0 0 0 0 0 9.989677824e-06 8.878587015e-05 5.55670858e-18 0 0 8.602303264e-12 0.002365997416 2.026723547 0 62.49933807 4.184685367e-05 0 0 0 2.707247695e-14 0 0 0 0.01499011249 0 0 0 0 0 0 0 0 0 0 +5.800102659e-08 0 0 0 0 0 0 0 0 0.2388798117 0 5.909919372e-18 0 0 0 0 0 0 0 0 0 1.425033973e-10 0 0 0.0007462421375 4.350735972e-17 1.18583843e-09 71.35834827 0 1.828090077e-09 0 0 1.019781651e-07 0 0 155392.0834 1.125844781e-09 9.645545829e-11 4.900625117e-06 8.215124589e-25 0 0 8.785121968e-20 0 0 0 0.0145922433 0 0 632929.7341 0 0 0 1.710103449e-16 0 0 1.156456369 0 0 1.718130171e-14 10.88916025 0 1.370924778e-15 1.86366707e-13 0 0 0 0 0 0 4.137147201e-16 0 7.277371205e-09 0 0 6.966218538e-12 0 0 8769.430358 2.014856309e-22 0 0 0 2.052403217 1.008949695e-06 0 0 0 0 0 36503.59722 0 2.413014653e-11 0 0 0 0 2.375568968e-08 4389.469493 0 337593.2801 1.142906765e-16 7.134809931e-12 0 0.0002443839583 1.876048604 0 0 1.654274429e-08 0 44.06558593 0 0 0 0.0003267882358 0.006506129294 0 0 2.59842356e-13 5.359554322e-08 2.044177036e-11 914.9363316 0 4.351110053 7.897453795 3.506236908 1.070674019e-16 4.397158739e-20 1.535028592e-10 392.1325242 0 0 2094.804913 7.722043719e-13 2.808543567e-19 0 3.203162308e-14 0 0 0 0 295050.9584 6.221040593e-08 0 3.538785605e-09 190.2999317 2.129753011e-10 0 0 0.03865317866 0 4.611253889e-23 1.087922526e-06 7.756095124e-12 0 0 0 0 885.2029206 0 0 0 329808.1564 0 557809.7331 1.068488056e-06 0.02360492572 0 28532.91946 0 0.1028292234 1.336382565e-08 0 0.1348592425 7969.143361 0 0 0 0 6.360180172e-08 0 3.01423088e-31 4.335678899e-06 3.927576958e-16 2632.944241 517059.6309 0 1.951085369e-06 0 0 0 0 0 5.917330574e-07 8.91241738e-07 0 1.429017039e-15 1.339568633e-11 0 2.54938694e-13 0.0001090189756 4.19491473e-13 0 6.517901325 0 0 5.208864645e-15 0 0.002656918574 0 0.01765516318 1.164641977e-05 7.296606439 1.627872936 0 0 2.251728187e-06 0 780040.5565 0 0.2197128375 1.822129792e-08 0 0.0009304876913 0 0 1209906.113 0 3326.952535 0 0 1.169947719e-17 0 1.93198104e-07 1770691.95 0 1.051395584e-11 0 7.436499921e-12 0.0001051872137 0 2.050449899e-05 10359.87508 0 220607.0329 0 0 0.0004305582426 0 0 2.012781939e-09 975470.0926 0 0.05980555466 230183.6919 1.921440223e-28 2.273583734e-14 0 0.1117951933 0 0 0 2.169043671e-12 0 1.639970001e-14 4.135363758e-22 0 1.256189515 0 0 0 0 0 0 0 3.802520488e-09 0 0 0 3.07817812e-06 4.753580826e-20 0.00606380405 0 0 0 0 0 18429.56589 1.095155923e-10 0 0 0 0 0 0 0 0 0 0 0 +0 7.41604738e-12 0 5.627223915e-07 0 0 0 0 0 0 0 0 3.78991239e-05 0 0 0 0 0 0 0 0 0 0 1449.756103 0 1648553.804 0 0 0 6.358008241e-28 1.948857308e-10 0.0008633816182 11.28989082 0 0 0 0 0 2083.089996 0 0 2.647840404e-16 0 1.141439103e-28 174.4450064 0 0 0 0 2.132059599e-22 0 0 3.039222814e-07 0 0 0 2.739103346e-09 0 0 0 760.5169188 0 0 0.001849974908 1.735238376e-11 0 0 6.355372506e-10 0 0 0 0 0 3064.408612 1.872733281e-17 2.364305131e-13 0.06806575153 0 0.0001652293387 0 0 1.906217841 525100.4462 4.353136476e-12 7.119931995e-10 0 20836.26496 0 0 0 0 6.77885379e-14 0 6.503548421e-10 0 0 1.820986612e-14 0 5.734710955e-05 0 0 143095.0445 0 0 29422.25994 0 4.336381033e-11 0 0 6.125096217e-16 0 0 1.59621789e-12 5.178039864e-08 1.702377389e-06 1.397921392e-10 2.898286224e-07 0 0 0 1.599904799e-18 0 0 2.682604404e-05 0 0 0 0 1.724267149e-10 5658.064381 0 0 2713.237854 0 0 0 0.1209131848 1.091717316e-23 0 0 3.928237314e-15 0 0 1.451856574e-24 0 4.718789042e-07 0.0001824756626 0.008176072343 1.815950039e-08 3.694054432e-11 0 0 3.042491421e-17 0.006271828894 0 0.06495624434 9349.827851 0 1430096.129 2.114363686e-18 0 0 2.712632609e-19 0 5.20436239e-09 0 0.1261877941 10.67742089 0 15266.74784 3.651338141e-17 9.961756243e-15 1.582995965e-06 0 0 7.667755227 277981.5209 173840.9261 0 9.046697925e-05 0 3.438077438e-08 0 108.6195699 464682.9568 14.97834857 0 0 0.001108311382 7.475179502e-22 139.3587312 0.001294033293 0.001204949236 9.767238112e-05 1.064612385e-05 544808.7712 0 0 0 0 1.219159689e-13 0 0 1.81358641 0 0 6.062278361e-21 0 0 0.01733360616 0.001050240748 0 0 0 0 0.0006059010586 911.8322055 0 0 0 0 0 0 2.238238495e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 2.858619283e-08 0 8.084641257 2.122323497e-13 2.037491614e-07 0 0 546439.4483 0 0 0 2.908942087e-23 0 0 0 0 11485.3779 0 0.0006902693593 0 0 0 1569063.701 0 3.16743486e-14 0 0 0 0 1430774.24 0 0 0 1.248626313e-12 0 0.007423786602 11.94925675 39.94505077 0 0 0 0 3.857885369e-29 0 2.369127944e-07 0 0 0 27.20417251 2.984566885e-10 0 20066.06657 2.320264728e-12 9.566386836e-11 0 0 0 24900.97421 0 0 1.154355541 0 0 +0.0003189666073 0 0 7.931159445e-12 0 0 2.64934941e-09 0 0 0 143610.0532 8.542344561e-27 0 0 0 0 1.435130264e-11 29571.53376 0 2.072420962e-14 600.3655178 0 0 0 0 0 0 0 1.037406281e-14 0 0 0 0 2.271989663e-15 0 0.0003793533848 7.702881965e-12 0 0 0 0 1.520645022e-17 0 2.293879303e-12 0 0 0 897956.7659 1.9882746e-08 0 7.783660842e-10 0 0 0 0 0 4.49672125e-29 0 0 1.005056932e-14 0 0 0 0 0 0 0 0 0 0 3.859686351e-11 1.593435758e-14 0.2122840542 0 6.690347566e-08 0 0.007300560844 512682.9545 1.304270284 0 5.300907898e-22 3.740111099e-07 0 0 0 0 0 2.243441522e-18 0 1.872913405 2.142049291e-09 2.650519342e-15 4.181798334e-12 0 47.32039059 0.0002440512224 0 0 0.08486757901 0 0 0.5012321321 0 0 8.315373461e-16 1.957454259e-10 0.05350723566 0 9.609611643e-13 1812219.546 0 0 0 1.005096329e-05 0.09306797446 0 0 0 0.00299342273 384.3563336 0 0 0 4.448457103e-10 0 0 49.70025029 0 5.19538453e-11 4.271095774e-13 0 0 5.176134511e-07 1.794508895e-12 5.485000171 2.266897948e-12 0 350492.0748 0 126323.6026 7.234563909e-16 0 0 0 42190.47656 0 0.2390098202 0 0 0 180728.3788 0 0 0 279621.6769 0 0 0.0001340695471 0 2.481838958e-05 0.008422488518 166.0505889 36.42572401 2.195301428e-14 0 0 1.382757619e-20 0 0 0.00127542484 11.98492244 0 0 0 0 4.366706659e-16 0 24062.73457 3.536758837e-10 0 7.824187109e-06 6.793316247e-07 0 6.095415006e-14 11201.43743 0 9.79316653e-19 0 154.0199886 0 0.0005178638959 0 1.30294907e-15 2.315226637e-08 0 0 139112.5378 0 0 0 0 2.893135677e-08 0 0 0.01498048329 40382.74238 0 428486.8755 0.02728397793 1.907868453e-26 0 0 0 0 58.89008842 0 149640.947 0 5.894933372e-11 6119.43357 430399.7205 1.580523381e-17 0 0 0 0 0 0 0 0.001683732508 0 377528.6351 0.001453445342 0 35.18251741 244.7955578 9.677260622e-07 0 0 0 1.305439958 73637.86834 0 0 0 0 8.774374535 0.001868616843 2.770671718e-17 2.292291879e-11 0 2.929731644e-14 0 0 2053.65762 817743.4301 0 201443.3449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.8529573e-12 3.087317499 0 0 2.977381595e-14 0 0 0 6.351721134e-14 0 1.698523889e-16 0 0 678.4812911 0 0 0 1.271168429e-12 0 5.368963078e-09 10710.91306 0 0 0 8.683244213e-05 0 0 0 +0 0 0 0 254.4885779 0 0 0 0 238.4376599 0 0 0 0 0 0 0.00977021609 2.927565544e-09 0.3326832981 0 4871.943666 9.957484683e-09 0 0.08396752603 0 0 1.607619738e-19 0 0 0 1.449489155e-12 0.003015234192 0 0 0.3337670588 0 0 6.211290496e-13 1.469175919e-19 0 5.439310197e-14 0 0.0007571542812 0 5.64459144e-36 0 0 1.580831377e-09 0 1.951909809e-14 0 21.76649781 0 0 0 0 0 4.877427439e-12 1.8821092e-07 0 0 1654.92789 0 1.347157319e-13 0 1460333.186 0 0 0 1.197596503e-13 0 1.215534824e-07 0 0 1.485079209e-21 0 33704.87389 1.570254768e-26 0 0.4938173824 0 0 1.275229822e-13 0 2.155343723e-12 4.281942434e-13 0 0.1868765846 0 205724.274 8.850172794e-08 4.483908944e-14 5.950768441e-28 2.367439872e-08 0.2701719703 1.004872601e-17 0 1233482.117 1.347302415e-25 5.600735403e-12 0 29425.61885 0 0 9.366205895e-34 0.005018315525 0 0 4.452945838e-16 235.5818383 0 0 348.8066308 0 16.43174977 2.652163877e-29 2.97616514e-14 0 2.072670419e-29 0 0 120.2230477 0 0 0 165.7007867 9.582629331e-06 0 477446.5221 3.896036693e-11 0 0 3.395846245e-16 0 0 0 0 0 6.243141814e-06 0.005328947836 1.222039738e-08 3.5329054e-15 9.965543822e-11 0 0 0 0 321027.3066 0 1.266802734e-11 6.268254018e-11 1.524741667e-09 0 0 0 5.192798035e-14 5496.757441 1.852861924e-11 0 1625120.395 5.199504125e-08 19048.68606 0 38095.78257 0.4744480198 5.667752484 768411.1687 0 718.5056312 106747.779 2.907464653e-14 183142.077 0 0 1.226884159e-08 0 0 0 0 0 0 2.310325147e-12 0 0 0 0 1.090864733e-05 1444248.488 3.689763559e-10 8.395732611e-10 0 0.09260356017 0.0001736290267 0 0 4.695863888e-10 0 3.265716118e-08 0 0 316564.4096 69.98827082 587364.0027 4.648666791e-12 1677031.562 4.54749239 336.1136304 0 0 4.516834948e-05 1.534419561e-08 1.079204501e-14 1.503586192e-22 0 0 2.170905934e-27 7791.292248 5.656775177e-11 3.574709083e-09 0.1408637209 1.473645373e-14 0.001984958064 0 0 0 0 0 1.19565174e-24 0 0 0 0 0 4.857224257e-19 0 0.4462044427 0 0 0 0 0 0 2.32933588e-14 0 0.02315517723 0 0 0 0 7.596866938 0 0 1.686624735e-11 0 0 5.058404285 4.053275578e-06 0 0 0 0.175072855 3.60399658e-11 0.01124336972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000209702619 0 0 0 0 0 0 0 0 0 1.669365361e-16 0 0.002696346476 5.884474716e-17 0 0 0 0 1.763353893e-17 0 7.753573601e-15 1.491971701e-14 0 +4.97663353e-08 8.020831935e-27 0.2972696615 2460.076501 165564.4258 0 0 0 380908.2534 0 0 0 0 8.098947904e-06 0 0 0 0 0 0 0 0 0 2991.273148 0 0 0 0 0.004130724117 0 0 0 0 2.628966156e-16 6.122142988e-18 1.065550479e-06 0 0.04328043379 0.3080520761 40001.49685 0 0 0 0 0 8.606682432e-16 7.78183244e-06 0 8.566662672e-18 0.0001201069475 1.031163432e-14 0 0 0 274562.0291 0.04170764312 6.398599108e-12 0 0 0.008130287431 3.484010198e-11 3.939950157e-05 0 10.92151543 0 0 0.007471080521 7.40052688e-13 0 158568.739 3791.932863 2.102151846e-07 32118.09195 0 0 1.710445105e-11 2.022551612e-13 2.758784548 0 0.001301015521 2.721416931e-06 45.46404321 3.414960117e-10 0 1.853100708e-07 0 0 0 0 8.160372769e-15 0 8447.013188 1529.739212 0 1.498695464e-05 0 0 207885.0426 0 8.017978471e-29 1.75521794e-15 2.565420089 1.162956936e-22 2.883517881e-15 0 2.584419903e-18 1.094391463e-19 1.883489226e-15 0 1.657282206e-13 2074.624684 0.0007200578908 0 0 0 0 0 44228.66811 0 0 1.106422068e-29 0.0001310591572 0 0 0 8.514083711e-13 0 0 0 1.336851126e-06 0.04055588239 8.596357212e-11 0 0.8953389872 454.2704556 4.883290434e-08 1.856953665e-08 0 4.902551216e-13 0 9.152999223e-10 0 0 3.43364852e-12 0 1.600517607e-12 13980.77059 0 0 2.558220325 0 0 1.698493008e-10 0 6.515794275e-11 6.417555453e-07 0 0 0 1.535767078e-09 0 0 0 149.2969611 7.096028879e-18 0 0 0 0 6.032552228e-11 8.792316304e-08 355.2850246 499670.5399 3.753738722e-15 2.409221813e-07 6526.90598 0 869969.4063 0 0 1.359129594e-14 0 0 2.780828072e-06 0 0 0 1.194089406e-06 1.247209707e-09 0 2.442087587e-15 0.001219528458 7.494309879e-05 0 0 4057.581662 0 0 0 0 3.201499111e-09 1591.136034 0.007985338462 0 0 53.12601257 0.0002257689946 0 0.0001313961594 0 0 0 1.087906721e-12 0 0 0 8.782265378e-06 0 7.696669374e-22 0 1.2009662e-19 7.981770326e-12 0 0 0 0 0 0 0 0 2.351237719e-10 0 0 1.51900777e-05 0 6.61494066 9.917367853e-18 0 0 0 0 0 0 0 8.074910954e-13 5.891530989e-15 0 0 0 0 0 0 0 2.291101402e-24 0 1.068784106e-06 710155.2442 0 0 5.003895729e-13 1.122642181e-06 0 5.069426844e-14 0 0 0 0 0 0 3.639779589e-16 1.930231122e-30 0 0 0 0 0.0004390721846 2.287429846e-22 0 7.996313007e-12 0 0 0 3.300260572e-07 8.956645722e-28 0 0 4.550580096e-14 0 0 0 0 0 3.331438205e-05 0 0.002663954771 0 0 0 0 0 +0 0 0 0 3.294709296e-12 0 0 0 9.028072476e-10 0 96.62414055 0.0006229228545 0 0 0 0 1005961.937 0 4.338781023e-11 0 3.989312009e-09 0 0 0 8.087278812e-11 9.967278219e-05 0 0 0 4175045.329 0.0009865670479 2.750760994e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77093.47293 2.395890577e-07 1.268252313e-09 0 0 0 0 4.776163775e-13 0 0 0.02063826986 2.22511466e-16 2.515642173 0 0 0.002358665117 0 5.227958367 0 0 0 782080.5229 1050001.125 0 0 0 0 0 0 0 0 0 0 537.1250261 1.472298157e-10 0 0 1.176893494e-10 0.8175571494 0 0.002414914082 0.007359557547 2.562939322e-14 2.223753718e-28 106740.389 0 2.283821125e-11 0 0 0 3.428144344e-06 0 0 4.798034941e-12 16.1390894 0 3.707428247 1.046950535e-18 0 0 0 0 0 0 4.460167787e-22 5.236620807e-06 1411.287263 65852.41162 0 0 0 3.144609807e-10 0 0.001615970623 4855.154979 0 0 1895.776979 0 1021.179487 0 0 0.09810785895 0.6572408234 0 0 1.065504194e-10 0 1.41555945e-05 0 0 0.07821411958 207755.379 0.0001357688317 1.576454088e-09 0 0 7.170503175e-08 0 2.59460246e-09 0.000818302063 0 0 0 1.105238869e-14 1.107875724e-05 2.287190723e-12 0 2.049334503 8.21882376e-07 8.049551344e-14 0 0 29279.641 4.45380023e-07 0 480.2292975 0 0.0009304469588 0 4.755384047e-11 0 0 65.28706404 0 5.080557077e-14 0 0 0 0 5.337944727e-14 2.875011763e-17 3.429960141e-13 34.75432737 2.155365207e-11 0 0 2.258729459e-05 0 1.419187305e-11 2.012753621 0 0.00173852794 0 5.573367652e-11 0 3.609563368e-12 25794.26605 0 5348.791563 2.547618915e-08 0 8829.987308 0 282.4546731 175005.5753 0 3.523706758e-10 0 0 0 0 0 0 0 0 0 3.420019272e-05 0 1.080878321e-11 0 0 0 0 0 0 0 17.00420784 0 0 0 0 0 0.0003765358942 2294.158364 0.01872951217 1.617327428e-05 0 0 0 0 0 390912.0417 0 0 0 0 0 1.639378601e-17 0 135708.1809 0 0 0 0 0 8.839882286e-16 4.872924456e-10 0 0 0 0 0 105.07048 0 0 0 0 0 0 0 0 0 0 0 583168.9238 0 0 0.03490076315 7424.975397 0 2924114.89 0 0 0 0.274415624 0 0 0.001208038617 0 0 2.808266321e-16 4.843692679e-07 5030.161837 0 0 0 3.318074465e-05 0 0 1.459037149e-14 0 +0 0 7.299055994e-18 278.7946008 0 0 0 154.1669588 0 135.5354067 0 0 0 0 72.48124765 1.101202535e-18 0 0 0 0 0 0.01215070736 6.758027866e-22 0 0 2.378248859e-19 0 3.459398605e-19 0 298647.75 0 2.02639927e-12 2.75278121e-05 3.377449074e-09 0 0 0 63.059488 3.045036919e-16 0 0 0 0 0 0 0 0.0003742837863 121.0063616 0 0 0 0 0 0 0 0 0 7.758217025e-18 0 0 0 0 7.037546277e-26 0 0 1064.248605 11433.66782 0 0 7.3159454e-19 0 0 7.391573633e-15 0 0.0008284562563 0 5.972974172e-17 5063.208021 863.4002136 8.519878004e-07 4.240440667e-05 0.0008844291463 0 0 9.01179672e-16 1.739777711e-06 5.154603127e-08 5.595136105e-28 0 8.77875885e-17 0.01576869166 2.490447565e-07 9.308651965e-11 0.0002938616804 0 97.25842316 113380.1798 0 6.814360765e-20 0 0 0 16252.3408 2.082055697e-11 1465.476599 0 0 1.081288869e-05 5.319940272e-13 4.491353669e-17 0 0 0 955.64956 0.01401610151 0 0 0 0 1.502899134e-15 0 0 0 0 0 0 0 0 6.212071661e-28 1.936374521 0.02597326565 63.26803654 0 4.54218109 0 5.828196093e-12 0 0 3.825701292 0 296719.4745 0 6.741881023e-12 0 0 0 0 2.193178117e-19 0 0 0 0 6.794617159e-24 1.430200375e-05 0 6.940561638e-13 0 0 0 0 0 0 8.790643754 0 4.628370052e-12 0 9.695427974e-06 2025454.439 0.269738207 0.6105300204 915.1992432 88830.38832 2.507585318 9059.534563 0 0.4295393638 3.308316523e-08 6.149304728e-12 0 0 0.005184503997 0 31.15311699 1.388641746e-13 0 3.46031166e-15 1.316882681e-12 11.91949146 1.445812891e-09 0 5.714609173e-25 1.281662261e-14 20.01120273 0 0.007525045305 2.331383955 0 1.429603854e-19 0 0 0 0 1.407249172e-05 0 0 5.382559651e-05 4001.190329 2010.674168 0 0 0 0 0 0.1699313594 0 0 0 0 0 4.438863401e-06 0 0 0 0 0 0 0 0 0 3.749631659e-27 34.55027235 0.002243492791 3.732593712e-11 0 0 0 264180.1213 618901.8028 0 0 0 1.093614296e-17 0 1.312488914e-11 0 0.1810225314 2.632750749e-06 0 0 0 0 0 0 0 0 0 0 0 0 11.89928855 0 0 0 112.0345961 0 0 0.004125860794 0 0 0 0 0 3.205050117e-07 1.07771901e-06 0 0 1.832418201e-11 0 0 0 1.257288575e-11 0.0002615659688 0 0 56581.22431 0 0 39.62096582 0 3241.721963 0 0 0 3.790609081e-14 2.002838296e-05 0 5.694178281e-14 0 0 0 +0 4.879818384e-20 0 0 0 0 0 120966.0506 10.36622884 50.59723052 0 0 47.69852986 5.061580076e-10 2919.092922 0 0 1.951761404e-19 0 2.897571758 0 0 3.220699236e-11 0 784.3295241 0 3.223011805e-20 0 1.385221163e-05 0 5.096028423e-16 5.915013068e-08 0 0 0 0 125078.8614 0 4.498631858 0 0 8.808887066e-18 0 0 5487.012877 0 1.484918037e-05 0 0 0 0 0 0.0001408855614 388088.4875 0 0 157.2085024 1.333378411e-21 0.04367654942 0 2.419269442e-12 0 5.66867358e-09 0 0 0 3.68625656e-06 0 4.826222671e-20 0 0 0 100297.6047 0 0 0 9.764226625e-13 2.093811836e-07 0 0 9.983483578e-05 1181441.924 0 1.980158163e-15 0 8.002028035e-13 0 6.984245425e-10 0 2.827257102e-12 8.018496444e-16 0 0 0 14969.82686 1.638334362e-05 0 5.411227324e-08 0.1788444851 2.244246012e-09 0 0 0.0007049916789 0 0 142.7971617 3.10477337e-05 0 74.68917743 0 33295.04585 332413.9242 0 0 0 1.999818318 0 0 0.008549556098 0.0003311901286 1.877868643e-27 0.0003335065574 8.63813396 0 0 0.0008472000117 0 0 0.0006507664549 1.905766542e-15 0 0 0 1.674648092e-15 0 245811.1206 0 1.069426427e-12 1273.753522 0 0.002228983863 4.26354411e-11 406772.2572 0 0.5655202006 6.931247585e-16 0 0 9.895492226e-14 0 0 0 21.62667559 0.001105009366 2.27960033e-09 0 9.072679605e-21 2115263.992 0 0 732.90731 0 1.455035146e-05 3.310969615e-22 0 1.480103289e-11 7.040923381e-13 5.628075787e-16 0 0 9.666818645e-18 0 294249.7727 0 0 0 0 2007.332085 3.017897399e-09 1.960871487e-08 0 3280.168518 0 1.197864314e-12 0 2.159034019e-18 0 1178018.172 0 7.34504998e-15 451.3164802 8.408076025e-12 0 0 0 0 0 0 0 0 5.035496949e-11 0 0 15820.99915 0 0.07576400163 0 0 4.769324849e-08 7.844115907e-10 2.192100357e-11 0 1.760257208e-14 3.181485025e-05 1.102427017e-12 0 0 0 0 1.682862966 2.840962215e-07 0 0 9.59218214e-05 0 19885.15033 0 47.98154596 0 0 0 3.065965718e-07 0 1.0226328e-05 0 0 0 0 0 29466.32514 0 3.739802428e-10 2505952.478 0 2.371369606e-26 0 0 0 0.0345259626 0 5.389629515e-12 0 0 21.993408 0.0004366932501 0 0 0 961.3007665 12194.11958 0 0 0 0 0 1305.043623 0 0 1.081535271e-08 0 0 0 8.428080565e-16 0 0 0 0 0 0 0 1.194021243e-10 0 0 0 0 0 0 0 7.424363637e-13 57242.80067 0 0 0 4042443.285 0 2.078211372e-12 0 0 18.48991612 0 +0 0 0.9641079877 0 0 1371463.771 157.9834089 0 6003.670445 0 1046431.937 0 0 155796.4705 0 0 0 2.002300193e-07 823.3544089 0 0 0 0 5.087950986e-05 0 0 0 4.107381811e-08 7.571248035e-16 0 0.0001192981391 0 0 3.735693481 0 0 8.584008093 76261.115 0 1933.545134 0 0 571101.0322 0 0 0.01243113202 1948.898989 0 4.704412769e-13 0 0 0.0002692761479 0 0 0 0 0 4.877006305e-13 8.197969458 0 0 0 0 0.01707242906 2.892245979e-09 6.636143218e-06 0 97041.2771 698108.824 0 0 0 0 0 2149.970762 0 0.0005259899701 0 3.458439453e-11 0 512.9505836 0 0 0 3.696683448e-08 4.483981128e-06 2.171570757e-15 0 0 8.459590296e-06 0 2.672958431e-05 3.146885612e-26 53120.77314 0 0 0.4974715725 0 0 1249.66665 285.0768469 3.794722452e-10 22.89255536 0 0 0 0 0.05330539441 0 0 538358.0607 0 44918.37994 0 0 8.256322312e-14 0 1.918344554 0 1211.191435 0 0 0 0 1.685258883e-23 2.292096484 0 0 0 0 5.899881144e-15 1.004198773e-07 0 0 193.6760443 0 0 133666.4942 1.434961342e-07 0 0.5245328033 0 1.132975105e-13 1.607400094e-17 3.617611979e-07 216053.7627 61.90628302 0.0003594163664 7.061809221e-07 0 0 0 0 0 0 0 0 0 0 0 2.115369388e-19 1.958554324e-25 0 0 0 0 0 9.537873917e-09 0.9665939015 0 3.425382847e-09 0 0 1.813060587 0 0 0 0 0.001990099497 0 0 0 3.921059523e-13 3.718383066e-21 326068.6847 0 0 6.013156391e-05 0 1.551074897e-12 2.104635867e-08 0 0 2327.984135 1089.703736 14.96893253 9.67108607e-12 5.826374121e-05 0 0.1072345113 2.854112715e-11 3.894058326e-08 0 0 1.034110688e-11 66756.39564 4.559180871e-07 73426.94622 0 0 5.151869044e-12 0 14.94042108 5.222253173e-14 0 0 0 0.009155061182 8.998705197e-18 2.352761818e-10 0.0001304288752 0 1917.452562 0 1.994485385e-06 0 1.253070938e-07 0 0 0 0 0 0 0 0 108727.1041 0 8414.363703 0 0 1024163.289 0 4.97171992e-07 0.8047164208 1.848739867e-07 0 352280.8308 0 0 0 1.110874422e-11 7.869956896 3.843843891e-08 0 0 6.010202118e-11 0 0.003675392021 0 0 0 2.59703187e-26 1.462086431e-07 0 2.23872632e-17 0 0 0 0 0 0 348.992998 0 0 0 0 0 0.4853665334 0 0 0 0 1.146748278e-28 0 0 0 0.001741060778 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 42825.55845 0 0 0 0 0 0.0010185485 5.998740833e-11 1.809073258e-16 4.467678328e-08 0 2299139.564 3.599348068e-10 49.29569504 0 6.229945533e-14 0 0 0 0 0 0 0 0 1247902.235 0 0 0 0 5.218586183e-13 0 4.171570854e-09 0 0 0 0 1.844209786e-21 0 5.740082165e-09 0 2.117514582e-05 0 1.287267129e-21 8.506457186e-11 0 1.767379569e-11 0 1.180391466e-10 0 0 0 0 0 0 2.364553713e-13 0 27739.06296 0 0 0 0 0 0.000149626899 0 0 0 198.9525924 0 0 6.146840998e-28 1.055149916e-16 464339.9645 1876.372403 542707.3557 0 3.748974579e-12 0.001408744211 0 3.815506186 3.679154158e-09 0 0 2.460480088e-08 1.043815167e-08 0 0 0.01293363208 3546119.41 0 0 0 67198.17616 1.284981281e-10 0 0 0 0 5.627965875e-20 1494177.385 0 4.483863448e-11 0 0 3.285675146e-16 0 4.190053135e-12 0 2.249039877e-12 0 57028.17522 110.0316363 2.925432499e-12 2.468633778e-20 0 0 733817.9889 0 0.05251644268 0 0 15468.81149 242.4214938 5.960714675e-13 0 0 0 3.637010298e-05 538210.5884 9.251843499e-16 0 0 1155.852159 0.0001760362209 0 0 0 0 1.277151042e-06 9.050991938e-07 2.758076611 0 3.891064585e-11 0 74.51014235 0 0 0 0 6698.679002 0 2079.182768 0 1.355272051e-11 0 1.119068653e-12 0 0 0 0 1.702748493 6.43408054e-11 0 1.057030611e-14 0 0 150425.9398 510.5519692 0 2.160823689e-10 0 101107.2743 0 0 0 6.406165368e-14 1.861965434e-17 39807.26638 655981.7608 0 0.0003215491272 431199.6518 0 0 4.002664979e-05 0 3.608454006e-14 4.903436966e-18 0 99.85394232 0 0 0 1250526.277 0 1842043.71 6.348867071e-11 416.5023514 0 0 0 0 0 0 0 0 0 0 0 0 0.9076867497 0 428624.3524 0.0002272400159 0 0 8.681990302e-21 0.03028641835 0 0 5.238879911e-11 0.9656681385 0 0 6.630105764e-05 0.0008135904095 0 0 0 0 0 0 0 0 1.759051944e-12 0 0 0 0 0 0 6.711330623e-11 0 0 1564.876439 0 0 0 0.000874564999 0 0 0 0 2.897102942e-08 0 0 395.7370516 5.790771982e-05 1.329331708 0 0 277.127265 0 4.406584429e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007794503153 0 0 4.048041401e-13 0 0 0 1.919516146e-08 2.362761443e-12 1.334621785e-12 0 0 0 3.701317326e-16 459.0392455 0.0001213302013 0 0 0 9.038799308e-17 0 1.127559997 +351130.659 0 0.02409563632 0 0 0 0 1.356403469e-09 0 0 0 0 0 2.083787474e-08 3.051593767e-17 0 4.941375325e-12 0 0 0 0 0 0 0.0242406712 0 0 0 1.939707895e-13 0 0.0004466589777 0 0 0 0 0 0 0 1.280947061e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 5.842653613e-11 5.990513154e-06 0 0 0 0 0 0 0 0 0 3.11785907e-07 1.735605455e-23 588.6730827 0 0 0 0 4027.215794 0 44397.66455 0 2400347.788 0 0 333.6264275 0 1506.480812 1227976.232 0 0 1721343.313 6.669406637e-10 0.02672872943 0 1.008983991e-16 0 3.539440835e-12 0 0 1.492996357e-12 0 0 0 0 1.165874878e-07 2.289595485e-08 0 0 0.3028813495 0 0 8.008564681e-16 0 4.79539916e-08 0 0 17.75702318 2.639952857e-21 0.01923933691 0 1.228844939 2.672768503e-11 0 3.836652291e-07 0 0 5.932064606e-11 1.624034847e-16 5.859224555e-13 0 0 39.97040344 8.1801486e-19 0 0 0 0 0 0 0 0 0 640084.9865 2.808517748e-07 1.188629962e-18 0 1.654252545e-07 0 1.554097408e-08 4.537613685e-13 1.505877957e-28 0.1929798136 0 553433.3597 0 94.48041871 3.410467256e-16 5.186210522e-11 5.965609081e-12 6.570541419e-11 2.875385452e-22 6.826240931e-12 498708.699 4.016943213e-11 2.575606002e-11 0.0004801636945 1.038696312e-09 2.020988724e-13 33.01963568 0 2.89558311e-07 0 0 1.418393369e-06 0 0 0 0 0 1.772176876e-11 0 0 0 0 0.0006150572555 0 0 0 1.021379069e-06 0 0 0 0 0 0 0 9970.148185 0 622.6656511 0 0 2.308801632e-09 0 0.01399161073 0 0 8.301802248e-35 0.1109393548 0 9.287578677e-10 0 0 0 5.645439238e-07 3.089482218e-12 0 1397.795357 0 0 0 1.735567887 0 0 0.01986526208 1.56573981e-20 2.271589014e-10 26441.0644 4.819965188e-07 0 0 0 0 0.0001280922763 490108.6856 0 6.978620649e-18 0 1.479572748e-16 7.72618932e-13 0 0 0 71135.73291 4.433224512e-05 15122.13824 2.290100675e-12 0 0 1456.718547 0 96075.25727 0 0 2.584691237 0 3.363698993e-16 0.1013995231 2.615080696e-14 0 0 0 0 1.478575374e-20 0.006680099985 0 0.01884136293 0 0 0 0 0 3100.644908 0.06220997804 0 217.887541 0 0 0 1.904349905e-09 0 0 3.059447209e-16 0 2.888067781e-20 0 0 0 2.345525507e-17 0 0 0 1.855988112e-09 0 0 0.00900749253 6.04639944e-17 0 0 0 2.313988489e-13 0 0 31850.38086 0 0 0 0.9484246764 0 +0 0 0.002662488085 0 0 0 0 0 0 478333.86 0 0.02851222843 0 9.536567438e-18 3.252018043e-11 0 2199702.01 0 0 0 0 0 0 0 0 1690262.345 0 0 0 19.45891075 0 0 2.379152429e-16 0 0 47757.15021 105773.598 34358.70288 0.0002224234458 0 0 3.054458212e-15 0 0 0 0 0 8.692396439e-15 0 0 0 0 0 2.27132695e-09 1.290675099 0 180308.8537 0 0 15946.67355 0 1.11540623e-09 0 0.0005290951243 0.0002263635786 0 0 0 0 0.0008834089591 0 0 0 0 0 0 0 0 0.0003637608505 0 0 0.03794264014 2.658842214e-15 3815.831461 3.425550189e-12 0 3.372683386e-13 0 0 0 8.768566247e-12 0 1.982036049e-07 4.87766172e-07 2.545186055e-07 0 0 3.083042216e-14 0 0 0 0 3.505455931e-21 16824.31634 0 0 0 0.5555584502 0 0 0 0 0 0 1.156846466e-06 0 8.483953693e-11 0 0 0 1.220108327e-05 4.523424067e-17 0 5.814617777e-07 1.683884266e-12 0 0 1891784.869 0 2065658.157 0 0 17295.86073 0 0.0001948989183 0 0 0 0 0 0 0.006815340736 0 0 0 1.013639009e-28 0 0 547.0478061 0 0 0 7.115543517e-07 41271.32156 5.637565032e-13 4.709799749e-08 0 3.352855778e-15 0 0 0.0002781951158 2.924060422e-11 7864.790968 0 0 0 0 8.929599906e-08 3.424349508e-16 2.161342831e-05 0 0.05827286136 0 0 0 0 0 5.360300134e-09 0 0 946195.0409 0.0001873658366 5.417848223e-20 5.916854799e-08 0 2.064039963e-25 869450.9837 700.2052807 0.05244243851 0 0 0.001463025645 24209.58391 264.3513463 0 0 1.207079334e-07 0 1.879888732e-06 0 0 0 3.115138699e-22 0 0 0 2.615102418e-11 1.39348904e-05 0 0 0 8.05290113e-16 0 0 0 1.031233535e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23994.62155 0 1.421483338e-11 0 0 0 6.404890456e-11 0 0 0 0.01146852136 3194560.087 222.1643399 0 0 0.1239656055 0.00765249008 0 15624.9107 3.942629692e-18 0 115900.09 0 3.0471696e-13 0 0 0 2.278862089e-11 0 0 1.213623356e-18 0 0 0 3.821071014e-17 0 0 0 0 0 0 0 61381.13451 0 479.0845887 0 0 0 0 0 0 0.227031815 0 0 0 1.667633914e-08 0 0.005691025292 0 0 0.0007723040236 0 0 0 0.01709312259 0 8.91336521e-14 0 0 108013.0359 +0 0 0 0 0 10329.24065 0 0 0 0 0 0 0 0 756462.3084 0 0 0 0 0.002460342835 5.528511965e-23 0 0 0 0.0795244279 0 0 0 0 0 0 1470.073266 1.41832501e-05 146169.7627 0 2.178088598e-12 0 0.001916331674 0 1944359.414 0 8112.102743 8.255043441e-13 1.062876231e-12 0.005463497305 98796.03783 0 3.401434819e-05 0 0 0.1106413402 0 0 0 0 0 0 0 1.69255345e-15 0 2.068618017e-13 0 0 0 0 0 0.0009062166303 6994.285514 0 0 0 0 2.263723102e-09 0 1.379175604 0 0 25172.09101 0 0 0 14204.51324 6138.186098 0 2.625689356e-09 0 0 0 0.002261266563 0 1.591138168e-10 5.956021394e-23 0 0 0 0 0 0 94887.29938 5.970797914e-12 0 0.01518282104 0 0 1.881499275e-10 3.178885609e-11 1.73863033e-07 2.551592973e-14 0 0 1.207257835e-06 0 0 2.423174402e-05 1.155117137e-07 0 4.209539492e-20 0 177987.9023 0 1.771856282e-20 0 0 4.13548657e-21 8.892256427e-05 0 0.01538076823 1.368595397e-08 2953508.29 0 4.497755079e-09 0 0 0 12.59816971 0 0 0 1.471003502e-09 0.002350231245 0.8039627503 0 1.756827841 3.561508567e-05 219.1938881 0 5.756762021e-11 0 551802.7738 0 1.128178242e-08 577.8167807 0 0 0 0 0 9.164575784e-17 0 0 4.327487632e-14 0 1243.654754 3.235123978e-07 7.273394853e-05 0.0006505518262 0 2.356396452e-12 19.67786434 0 5.974987052e-09 0 0.0004765167813 5.192967134e-05 0 0.02860145496 0 0 0 0 0.9355526163 0 0 6.665133504e-08 0 0 0 0 0 0 0 0 0 3.746768333e-15 0 0.002728233982 733140.663 0 0 0 3.598490122e-06 0.005127365795 0 0 0 0 826686.3216 0 4.535255131e-11 0 0 0 0 0 0 0 0 6.966345884e-08 0 0 801.8275751 1.40650731e-09 0 0 0 1.017934125e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.67201289e-06 0.001872417993 0 0 2.857879478e-22 0 0 0 0 0 0 0 0 0 0 0 0 1.031456667e-09 0 0 0 0 0 9.888529312e-10 0 3.368473006e-08 0 0 8695.641385 9.287895249e-06 0 2.852169398 13.32834269 1.834239696e-06 1.544294164e-05 0 0 4.6808737e-15 0 0 0 0 0 1.350082544e-13 0 0.0001345505903 0 0 0.0003753295717 0 9.025194368e-05 0 0 0.02500114617 0 0 0 0 0 0 +0 0 1.28517132e-12 0 0 0 0 0 0 0 0 0 0 312.8958497 0 0 0 0 0 0 0 0 2.849282223e-13 0 133.1226558 6.833010179e-07 0 0 8.473452225e-06 7.027989053e-06 0 0 0 0 0 0 0 3.408161755e-06 19.66951514 0 0 0 0 0 2.897430046e-06 0 0 0 0 0 1.185854257e-24 0 0 0.001978717311 0 0 0 6.227689457e-08 18438.28457 0 0 12662.95422 0.810814771 0 3.916427054e-16 0 9.186555756e-07 4.068130355e-06 1.1332428e-05 0 0 0 0 3.739712848e-10 0 2250114.053 0 0 7.019701759e-09 1.310581977e-09 7.13108798e-33 0 21.39217524 5.199105839e-05 0 0 0 4.521508661e-12 0.07383836934 2.074237222e-07 0 6.764173527e-08 0.1075768576 0 0 0 0 0 0 0 0 189.5215798 0 0.6091433651 0 158095.7596 0 0.01750899435 43.50117155 808573.8245 0 0 0 3.4497739e-14 94.2492739 476849.7241 2.398034906e-26 0 0 0 0 0 5.773289909e-06 43.33315426 3.041316742e-09 0 69.44080425 7.551452418e-06 0 0 0 0.0009317004285 0 0 15.9359865 0 0 0 64.86326312 0 1.136885897e-06 1.240259337e-08 1760.828571 0 6.151473903e-12 27041.83095 0 0 803.9520184 0 0.0002169018525 2.450428856e-13 32.07064987 3.597506714e-07 1751403.551 0 1.617697106e-20 0 0 0 112.0451356 8.667298404 0 0 0 0 1.082189206e-09 6.371078092e-13 0 9.363841091e-10 0 0 2.096777005e-31 2.35262506e-13 2.416675074e-12 5.137362007e-05 0 0 0 21.20981219 1.523181354e-28 3.104314277e-09 0 0 6.679994577e-07 0.0412366722 0 2430254.773 0 0 0.0005169110855 0 203.9146505 0 0 7.520414119e-08 1.356548705e-09 0 0 0 0.02056681543 0 0.04839904096 7.722076606e-21 3.674657324e-09 0 1.406047799 0 101411.0289 0 0 0 8.083590651e-23 0 0 0 735512.4763 0 0 0.000477619557 0 346.4043894 0 7.368863439e-06 0 0 0 0 0.0004095355421 0 0.0003837060623 0 0 0 2.097269711e-17 0 176928.0486 0 139021.8402 0 0.373127525 1.213228316e-06 0 6.633954262e-20 0 0 0 0 0 0 0 0 1.592665258e-09 0 0 0 0 0 4.005993014e-11 0 0 9.116960346e-09 587551.0047 0 0 0 0 0 0 1151.160621 0 0 0 0 0 0 245784.2682 0 5.255459668e-13 0 761496.7362 4.774135474e-06 0.01697328682 0 0 7.37225656e-22 0 0 0 0 0 0 0 0 0 0.6637871074 0 0 0 0 +0 2.912803323 0 0 0 0 0 3.010888427e-07 0 0 3.244170444 0 5.761352404e-07 0 7.860807446e-15 0 6.060339653e-13 0 0 0 0 0 0 0 4017701.197 1.657574136e-15 0 0 8.415242366e-12 0 0 0 0 0 1.293010395e-10 4.428015134e-06 0 0 0 0 0 1.920932226e-33 0 0 0 2.147254371e-12 0 0 0 0 0 0 7.51192906e-14 0 0 9.459320046e-08 0 0 0 0 0 3.565246966e-11 0 0 0 1.966073419e-05 3.343151056e-14 0 0 262478.9751 1.438060841e-10 0.6259575701 0 0 7.294881516e-22 0.0001346521392 0 0 0 0 0 1.616731944e-13 0 0 0 0 0 0.3802289677 0 0 0 0 0 5.270518594e-06 378002.4739 0 0 0 5.175132101e-25 0 7.230917743e-06 1.217132351e-09 4.376423597e-05 0 222.1395137 14.60542952 4.205963968e-10 0 0 2.178719793e-16 0 18561.01536 0 0 0 0.01521925936 1916366.096 0 106.7394661 2.361641642e-12 0 0 0.07190830502 0 1.056366689e-06 8413.38451 0 0 0 0 0 332483.578 0 0 2.494439438e-08 21798.68772 249.528671 0 0 3.803113688e-15 1809.367801 0 3.246148584 0 0 4.736303328e-18 3.103388087e-08 0 3.093467456e-05 0 0 9.198530465e-13 0.008130930988 3.724186495e-15 788.2258648 0 0 0 1.216352632e-05 6.132511823e-22 0 1.292167888e-08 2504.026527 0 0 0.2260184901 9.206533244e-12 0 7.600696084e-07 1.717487584e-09 1.226209229e-28 0 0 0.0001137937884 0 0 7.464842832e-15 0 3.322422932e-25 0 0 321.8266527 6.577738428e-12 2.624434922e-14 0 79231.40057 0 0 0 0 5.889377262e-12 0 19.98873225 4.00405612e-14 0 1.295787971e-19 0 0 1.513290571e-07 0.02163457249 0.005775209908 0 2875.613893 359.7694338 0 0 0 0 4.186221674e-12 0 0 5.830222554e-16 0 1.565415832e-13 0 0.002333452958 2.031192008e-07 0 0 0 0 7.563188321e-11 0 449.4239996 0 0 0.0006048824081 4.348113197 0 1269.582625 0 0 0 0 0 8.261099162e-21 0.05040881122 0 0 56024.645 0 0 0 0 0 453980.2284 0 3375.264821 1.844449995e-09 0 49666.85052 0 0 2.299249676e-05 0 192.5622842 0 0.0001088545866 0 0 1.974989521e-13 0 0 2.633280626e-06 5.052745227e-22 2.973329295e-13 2.740041713e-13 0 0 0 0 0 0 1.043168216e-23 955.4861365 0 4.437850658e-13 0 4668.712228 1.590273349e-08 0 0 0 42.46721517 4.947165376e-09 0 0 0 0 0 0 0 0 0.0159023626 0 0 0 3.697994197e-08 0 0 +105162.1325 0 0 0 0 0 0 0.0001486479301 7.648148958e-16 0 0.0006414917601 0 0 0 0 0 0 0 0 0.5093900946 0 2.119511014 0 0 24.93528516 0 0 1.368574627e-10 0 8.384004033e-14 4.867686481e-14 0 0 6.139831028e-10 0 0 0 0 0 2.443237334e-15 0 4.034233537e-05 0 0 0 0 67068.88038 5.229044962e-13 0 0 0.07792136983 0 851429.1862 2318.343643 5.68244774e-21 8.403216502e-23 2.915948742 0 9449.049832 2.756758982e-19 4508.120524 0 0 251372.6107 558052.9554 0 0 1.818831395e-13 0 1114998.628 0 2.7820528e-13 0 0 0 5.870071292e-14 0 0 2.864452958e-09 4.58284363e-10 0 3.065185515e-22 35730.82571 0.002615433839 0 3440.460154 5.224924755e-11 0.02961569294 3.401774933e-13 0 3.8307655e-06 1.561319696e-06 535205.4164 2.475252683e-09 0 0 0 0 1.034629202e-06 1.95399735e-05 7.736139329e-09 0 0 0 84.55030223 0 136.6722734 3498134.403 0 1.25479016e-05 4.737889495e-17 0 0 1.732951262e-12 0 0 3.827211471e-06 0 0 0 0 65687.38911 0 6.65128867e-12 0 5.749579814e-07 0 0 197885.5712 2.40188023e-07 5.58738421e-14 5.538149307e-12 0 4.561286596e-08 0 0 0 0 2.950060485e-06 1.895318554e-20 0 0 0 0.005463394106 8.161372721e-08 0 0 0 4592.051255 9.727183946e-11 1.485486023e-11 9.624792582e-21 0 0 1.473864461e-25 0 6.625036788e-10 8.155965684e-12 4.096682837e-05 0.0009868642312 0 4.655312136e-20 0.02513899348 25507.02239 151.5998599 0 0 0 1.950829736e-11 2.327333159e-10 0 0.01000959282 0 0 5.417548642e-09 0 7691.105472 0 2.528445742 1217011.746 0 0 0.003039428771 1.040469194e-23 0 0 0 0 1.463408587e-09 4.653994565e-08 5.546400782e-13 0 28.61451417 0 5.031456723e-15 6.86356067 1265276.729 4.721176883e-33 0.1648255311 0.6020886975 10.16537603 1.735284391e-06 0.004311893424 0.0007281289928 871.1398166 0 26.22437203 0 0 0 0 0 0 0 0 1.502555104e-12 0 0.001533773523 0 0 0 0 317727.8334 9130.001209 0 0 708855.4471 0 0 0 4517.317818 4178.621202 0 0.01421490537 0 2.527310593e-24 0 0 0 0 0 3.19533086e-07 0.02133356408 471757.0492 2.226010144e-15 3.312162327e-05 0 0 0 0 2.854511683e-22 2.405538527e-08 0 1.849748273e-12 7.861172966e-10 1.355905863e-12 0 0 6.284570867e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.197312599e-11 0 8.58531432e-13 0 0 3.070838112e-16 0 0 0 0 0 0 0.005295927855 0 0 1.9839083e-05 0 0 0 +0 0 4.45255286e-14 0 2276.057326 0 0 0 0 0 0 0.0008002940006 0 6.810360681e-05 0 2.70788989e-24 2.844860563e-05 0 0 0 8.69056474e-14 0 0 4.782118096e-10 0 1.199563619e-25 0 0 4.159329815e-07 0 9.081908579e-21 0.02839379836 0 7.418466358e-07 0 96626.58524 0 0 0 1.035815508e-11 0 0 0 0 0 0 0 0 0 0 0 1.46908754e-20 0 0 0 0 8.892220521e-09 0 0 0 0 0 0 0 0 0 0 0 58.01949597 0 2.589925914e-11 0 0 0 0 674055.3625 0 0 0 3.392100361e-14 1.399033439e-06 0 6.015874137e-09 0.03753581117 0 0 2.31059333e-10 0 0 8.556348539e-09 1.535240778e-06 0 0 1.15655749e-09 0 0 0 0 426390.4206 0 48.09671853 0 0 1.933270884e-05 6.516190283e-09 3.386791496e-10 6.493118064e-13 0.1155925301 2.878174318e-07 9.120341151e-21 2962359.366 46.7773707 0 3.367995532e-17 7.32378062e-07 0 0 1716461.079 0 6.211047636e-08 2.436293035 0 1059933.831 3.824469203 0 3.780378976e-15 5.561310996e-05 183319.3963 1267622.715 0 0 0 0 0.0004618648966 1.740888753 1.221943467e-06 0 0.0631715233 97172.15797 507.9753323 16017.76477 0.02276870599 9.006506262e-06 1.148660562e-09 5.902485118e-09 0.0001036041823 0 4.450695265e-06 3.010447987e-15 2.531783583e-14 0 5849.178488 3942.667606 1.935643137e-05 0 8.18168367e-06 0 2.623829159e-05 2110.698224 49.31750404 17.05186398 0 0 0 343.8135571 0 0.007430271278 548987.5213 0 0 0 0 0 127.2035296 0 0 0 7.107786141e-05 9.04692107e-13 0 0 0 3.072106342e-13 0 809.5631763 0 0 0 0 0 0.001973152763 5.622651918e-14 4.413679024e-05 0 0 0 1626470.093 12650.96674 0 0 8997.595708 2.60165883e-12 0 0 0 0 0 8.682282657e-08 0 0 12.0625735 0 0 0 9269.690805 0 0 0 0 0 3.293963385e-05 0.0003572145443 0 0.1143546724 0 0 0 1.332344212e-08 0 8.425896089e-15 0.02658540017 0 0 3.287551777e-05 0 0 1547.030565 4.380790169e-06 0 19.51754158 0 0 0 0 0 0 0 0 0 8019.439107 0.002113315154 0.0008459178523 0 2.411620024 0 0 0.0002215170577 0 0.0002224286576 130.7362797 0 0.0009344122121 0 0 0 0 0 0 116980.1319 5.415471775e-09 0 0 0 6.250883104e-05 0 0 0 0 2.957975802e-21 0 0 0 0 251173.0475 2.60879138e-14 0 0.009048852978 0 3.382809707e-11 0 0 0 0 2.325132524 3.309294349e-07 0 0 1.702427859e-08 0 0 +450345.5955 0 59.90827513 0 2.608436765e-09 0 0 0 0 0 1.363061997e-18 2.165892777e-08 3.731391496e-08 8.904769532e-16 0 0.0001169888537 4558.266052 17.9861476 79504.85003 0.005890778535 0 0 0 0 0 2.553241041e-08 0 0 0 0 0 0 0 0 0 0 0 1.150334713e-09 0 0 0 276651.3639 233010.8035 2.500589028e-20 0 0 0 7.670118469e-11 0 0.0001154324406 0 0 3.166292896e-23 0 0 0 6.637141839e-13 0 0 0 0 0 0 0.02750881807 2.216962252e-21 0 3.511324684e-14 1.940877569e-13 0 0 0.00323533016 0 0 0 0 0 0 2.586901784e-09 0 0 0 0 0 2.806923772e-09 0 1.77298671e-06 0.0001160092864 0 0 3393.201576 0 1597566.374 0.02002620663 9268.113109 868308.1899 0.0006391891501 6.159352213e-27 330650.5477 6.851876601e-09 0 0.0004628127894 0 0 0 0 0 1.424554845e-17 286909.329 0 14561.40673 0 6.924548341e-09 0.05310018237 1.574788038 0 0 0.001842204749 5.373923896e-40 0 0 0 0 9.579260881e-09 0 1.586289965e-18 0 0 0 0 0.01698581405 0.02916050895 4.67996387e-12 0 0 1.321363951e-06 0 3.346021323e-07 0.5480131268 0.8607258818 0.2769662794 0 0 1.350837921 7.993357509e-05 158518.3926 0 4.153605557e-11 0 0 1.313011361e-15 1.70029122 117.6673175 0 6.319070974e-07 0 0 4.563318874 0 1.153015606e-09 0 0 42.36970042 0 0 2.888540973 0 0 0 0 3.908106137e-10 3.067237784e-10 0 0 0 0 0 6.96952243e-19 0 0 3.054331943e-12 213052.5577 3.404394627 2.537949128e-08 1.256007911e-15 0 0 0 0 0 0.001098326583 0.004490407431 0 0 0 0 0 0 0 6.328113577e-13 1.7113392e-14 52077.28162 0 2.20835048e-06 172046.8367 86206.82248 0 0 0 0 0 0 0 0 0 0 2.248164118e-15 0 0 0 2.439661005e-07 0 0 0 0 0 0 0 1.858802291e-16 0 0 106578.2142 0.002754201149 0 0 0 0 3.43891407e-28 6.832500878e-11 0 0 221259.8233 0.0001522185812 0 0 6.450004495e-15 0 0 2.947070579e-12 0 0 0 0 0 0 0 35327.35939 0 0 8.68292631 0 0 75.65462546 0 0 0 0 0.0002374796953 0 1.13330762e-11 0 0 0 13.06916605 0 0 290922.2752 0 0 0 0 0 2.897385109e-07 0 0 0 0 0 0 0 0 0 0 0 0.09797089259 0 4.994184802e-07 0 0 0 9.5885473e-09 +0 687.3945724 2.511600591e-24 0 0 0 0.4988416565 1.188462867e-19 0 0 0.0001139191095 2621.42395 0 3.141925544e-19 0 0 0 0 6.961381712e-23 0 0 0 0 0 0 0 0 10021.74882 2.129941206e-13 0 0 0 0 0 0 4.812437187e-18 0 3.082253952e-12 0 0 1753.668054 0 2429506.467 2.754725476e-27 0 0 4.49555381e-15 0 0 2.457189621e-07 0 0 2.238775253e-06 0 0 0 0 8.931265433 0 0 0 0 0.7526558658 0.0001460364719 2.210951136e-32 7.332083784e-10 8.262933654e-06 0 0 57.73488347 0 0 0 286270.4136 0 0 1.634470224e-09 1.8695916e-10 0.0003156623546 0 0 0 2.664658521e-12 2799.143685 392264.3142 0 4.324359732e-17 1.527545308e-17 1.776580633e-06 4234.402679 33659.81509 2.878246018e-05 1.364559872e-08 0 938.3750938 5.219726745e-19 0 1.244629763e-12 3663361.255 0 70916.09081 1.49134018e-12 0 0 611.9976003 0.001486954891 1388200.48 1.401995866e-18 0 0 0.001675299701 0 0 5.255041614e-18 12524.7472 4162843.27 87.10976284 0 0 1.592093752e-09 197629.3418 8.489168727e-13 1.247648222e-05 0 0 5.06841044e-08 3.192176909e-10 0 0 0 8.99680297e-13 2.281869084e-06 0.00436109104 1.422334618e-07 0 1.028445135 5.75933359e-25 46243.94901 0 0 0 0 0 0 0 3.211809943e-12 0 0 0 3.234941944e-05 5.657431682e-13 0 0 0 0 9.642828581e-16 0 0 0 0 0 116634.486 0 0 0 9.054963499e-15 654.144351 0 0 0 0 0 0.0004689375745 0 0 0 1028879.926 0 1.075308421e-11 0 0 0.2975156375 9.981421608e-19 0 14.39647098 0 0.04975163436 162844.1466 1080176.778 0 2.119282471e-14 0 0.03972651687 42.91288619 7.363753062e-35 4.404340979e-06 0 0 6.078303836e-06 1.181148771e-07 0.1843694144 425599.2814 0 0 1703.067022 0 0.0001582465865 0.8042207081 1.760009059e-11 0 0 1.744137307e-08 1.473863775e-29 0 0 0 0.003830790388 1.088443402e-23 0 0 8.843736773e-09 0 0 0 5.224117538e-07 1.628452869e-14 0 0 0 4.43799962e-05 0 1389.781125 0 0 0 0 0 0 0 9.610824123e-11 5.690150318e-12 7.793209359e-17 4.025271444e-05 24.65392163 0 0 0 0 0 0 212.4563507 0 0 0 2.686599278e-11 44.39695468 0 0 0 0 0 0 0 0 0 0 0 411.0817356 0 0 0 0 0 0.008778055195 4.820008868e-13 0.9674499387 0 0 0 0 1.934541035 8.841808278e-06 0 0 0 6.666762922e-28 0 0 0 204.6896767 1.276087359e-24 0 12.80013613 0 437545.1186 0 0 0 0 0 +3.033654378e-05 2.700356293e-21 0 0 0 0.006475101978 383034.7019 0 0 0 0 2.433661251e-09 0 0 0 0 9.692302309e-05 0 0 0 0 0 0 0 0 0 5.260911371e-29 0.3500506101 0 4.985653363e-11 0 0 0 0 0 9436.155933 0 0 0 7.154650634e-11 0 30.33510642 9.879192934 0 0 0.145351848 4.275047909e-10 1.667120149e-07 0 0 0 0 2.116578304e-20 0 4.341129952e-07 3.103290917e-10 6.553165275e-06 1441416.62 0 1.843590045e-22 0 0 0 0 0 2.52978648e-06 0 7.987965489e-09 0 0 3262.400145 0 0 0 509374.4152 1.796317192e-07 74336.51776 6.937430931e-10 0 0 9.560368048e-10 0 0 0 8.073293108e-05 4.910332723e-07 3.681417082e-09 0 0 0 3.511410481e-19 107.7001515 21104.52643 7.112749848e-19 3.212881457e-10 1.687374691e-10 1.491576492e-10 0 169267.7626 2.089539343e-13 0 0 7.595536453e-08 6.731271023e-18 0 3.944205611e-21 2.968468022e-06 0 0.1185973345 3.702781837e-14 0 32071.71243 7.529415261e-13 0 0 1.729385647e-09 0.0004043533689 0 3.903073019e-05 3690.318862 0 0 0 0 1.05744569e-10 9.72565772e-16 0 0.0007705234965 0 0 0 7.136942975e-13 7.478026801e-11 2.65735342e-08 1.587109057e-09 0 268167.3546 0 0 3.869715606e-10 0 0 1.238657837e-07 0 3575.581181 0 0.4772799731 5.771801704e-15 0 3.367602065e-19 2.2747942e-22 23.07543542 6.880005691e-11 0 0 8.169005714e-21 0 3.992558889e-11 0 4.028953759e-06 0 0 0 0 0 3.424492996e-22 2.598365367e-09 0 935795.2641 1.131945317e-11 7.70689903e-10 0 0.9542732248 0 0 1.153017535e-17 0 0 0 0 0 2.324198134e-20 5.509555024e-12 5.710460223e-12 6.757090912e-11 5.483396037e-36 1.074605219e-24 0 0.188367217 0 40970.23813 1.416010821 0 0 1.618288734e-06 2.460309741e-10 2.229607989e-12 3.18398919 0 3.206207063 0 0.131449805 1.881103441 0 0 0 0 0 0 0.06786798111 215159.7117 135853.4272 542.897122 0 0 0 0 32617.15572 0 0.009849260265 0 0 0 0 0 0 3.043498251e-05 0 2.834363813e-08 0 0 0 44.34015901 0 9.776092851e-23 0 0.0001766712705 0 0 0 0 0 0 0 0 1.646445415e-25 0 3.534512547e-21 7.951319267e-23 0 0 0 1.801069871e-10 4.904825839e-07 0 0 0 0 0 0 2.515383074e-09 266.4354496 1.34353692e-31 0 1.171603254e-18 0 0 0 0 0 0 0 0 0 2.465095507e-09 0.02519870167 0 0 2.823900049e-13 0 0 3.038603637e-06 0 0 0 0 0 0 0 0 0.2243330446 4.702060742e-13 0 1021507.525 0 0 0 392.4076649 1.181305229e-19 0 +3.122948374e-10 0 0 0 0 0 0 0 0 0 0 237401.2577 0 0 44752.24353 0.0005912513697 0 18778.51069 3.383589087e-08 2.130857878e-10 2.454311927e-14 0 0 0 0 7.977408604e-14 0 0 0 0 257.6031846 0 0 0 0 0 0 0 0 0 0 0 0.1957429616 0 0.0001090936718 7.029347151e-09 5.201080353e-13 0 5.306202489e-19 1.776169966e-08 0.002739707991 0 0 4.584916083e-17 0 0 424.1398133 0.0009751685746 0.0002456104357 1.022542774e-09 1.58453559e-20 1.448142864e-09 0 0 0 0 2.456439589e-09 0 0 0 1.08152373e-13 1.128765924e-28 0 0.2741097111 0 0 0.0003756054943 1.136731562e-20 1.540084586e-06 0 0 1.283726071e-07 0 0 2.835107845e-10 1.434517157e-09 0.810138842 0 1393424.124 0 6.14090847e-13 0 0 0.002464389409 0 0 0 1471.396208 0.0002933923184 72.24905045 0 3.496597491e-26 0 0 298.7381868 22666.52184 0 2.867106063e-11 0 5.90444968e-22 3.64552454e-12 0.0006589898501 8.618031435 9.224257619e-09 224.8202453 0 1.725163445e-20 2.779679119e-11 4.236987477e-05 0 0.0018795831 3.289414609e-11 0 0 8.780066354e-06 0 0 0 8.21379821e-13 0 30332.50764 1.408728093e-15 9.645443994 212663.4442 12.10956187 1.345983706e-05 7.83465448e-11 12299.12744 0.006100721487 1.622704878e-10 0 2.141223542e-17 6.725403746e-07 0.01406592877 4.291382874e-09 0 0 3.24975802e-08 0 1.352230699e-11 6.549820358e-15 1.417237117e-14 7.177135548e-20 1.336733073e-07 2.589765846 5.564104272e-10 0 1.022406819e-05 0 0 4.00895574e-17 1.791320404e-09 0 0 0 0 0.01613812951 0 7.042848375e-22 0 0 0 0 0.0276004173 0.001212665964 1753575.263 0 0.0001176383564 8.691283714e-07 0 0 0 0.0002505549263 1.95085079e-14 8.953667153e-14 0 0.01387188819 3.641050867 279653.9148 1.58942762e-28 6.958023238e-08 0 0 0 2.015602875e-17 1.249891057e-09 0 0.002525915877 0 0 0 0 391894.4257 9789.865491 0 0 0 0 5.916648065e-10 1.506753043e-29 0.002452489666 0 0 4.4513104e-09 1.419616364e-09 0.006061546741 0 0 0 1.988877763e-27 0.3887786 0 0 184.2496385 0 0 0 0.01207041238 0 0 0 2.99701789e-05 0 0.0006699753003 0.0007574011708 763475.858 0.01583043297 0 0 16.08686976 0 0 2.528592451 0 0.07080425958 190772.104 0 0 6.30172128e-05 4.005925051e-11 0 2.114016773e-12 0 0 0.04022871453 0 1.147104826e-20 0 2.798191398 0 0 0 0 0 52399.38752 0.03247942152 0 0 0 0 0 0 9.5165436e-10 0 117.7062684 0 0 0 0 28.93614918 0 5.476809747e-12 0 2.707076287e-05 0 0 0.01205043877 0 0 0 0 0 0 0 0 0 0 0 3.156488876e-23 0 +0 0 5.626877461e-13 0 0 0 355.1133924 0 0 1.511353569e-08 6.048344212e-18 0 0 0 0 0 0 0 0 8.324350797e-05 0 0.005553372805 0 0 0 0 0 0 0 0 0 1.484609327e-13 0 0 1.536786641e-08 0 0 0 0 0 0.9126575947 0 0 0.06977619242 0 6.687041471e-07 2.055250605e-10 0 0 0 0 0 3.090164208e-10 0 0 0 0 184.4774063 46430.13662 0 0 0 0 0 5.113523212 0 0 0 1.842745855e-10 0 0 5.865590278e-08 0 0.0003367058047 0 0 12.39880377 0 2.409375944e-08 2.338092076e-11 2.635987413e-15 0 0 4.976098243e-15 0 0 0.01375267027 100.8407488 0 185404.4494 29232.77873 0 0 0 0 2201.807482 0.007067413366 0.0007249738295 0.006280674663 0 0 0 0.4853661224 0 0 1.433872239e-08 0 3.673555551e-07 30.01528435 0 0 1.530419176e-15 4.195653738e-07 0 0 1.445662539e-06 0.009744536936 0 0 0.000331155222 9.080992555e-19 0 268422.2777 0 5.136645453e-15 0 0.001821248296 4.369881983e-20 0 1.216836528e-14 0.06331883022 2.897230445e-19 398035.7634 0.3528483134 0 0 1.897899065e-13 6.954178673e-05 0 0 0.02885557518 7823.13187 0.003819759059 0 0 18354.42261 5.765915179 0 0 0 0 0 0 0 1.40595273e-08 0.0003366448811 7.22550436e-05 1715.513629 3.09278721e-10 0 1.203584136e-09 9.328935492e-19 0 113.9163389 1.258317512e-18 0.04478629591 0.04026257127 0 0 0 0 0 7.698269675e-08 0.01491117457 0 45.76628025 0.0001820761014 0 0 205232.7655 0 1.883172028e-06 0 0 0 0 0 6.886567054e-20 0 0 0 7.465857932e-11 0 0 0 0 5.773612601e-30 0 172162.9303 5.563594895e-05 0 3983.808494 0 6.214517496e-15 0 2318.409204 0 3.013272207e-12 0 0 0 2.519449373e-16 0.002869306292 0 0 0 0 0.0009332047141 2.057022758e-24 1626.946288 580851.8394 2.594216659e-13 1.19406917e-06 0 0 0.0009746834364 0 0 0 0 1.124199436e-05 1.426181883e-17 0 0 0 0 0 0 0 2.100787276e-06 0 0 8.490821564e-06 0 0 6.558994399e-20 0 0 0 55700.83416 0 6.290724831e-21 0 0 66276.34942 0 0 0.3164963458 0 0 8.44335675e-12 0 0 1.088830608e-06 463640.2124 2.271470394e-05 0 0 0 7.455202558e-09 0 0 0 0 199.6148172 0 0 0 3762045.452 0 0 0 0 0 0 0 0 0 0 3.474536241e-12 4.51387682e-08 8.321156296e-10 0 0 5.881983069e-09 0 0 1.902960039e-12 7.200283472e-06 0.000156230459 +0 0 2983981.976 3.260583057e-07 0 0 0 0 0 0 0 8402.09065 0 0 0 0 0 8.204172372e-13 1.548200681e-09 0 4.427825278e-20 5.743250943e-11 3.404262534e-18 4.644110849e-26 0 0 0 0 0 0.01220605961 0 0 0 0 0 8.303590518e-10 639260.974 2.275247234e-12 177950.4392 0 0 0 0.0002208429242 0 0.008886337882 9.062686779e-16 0 0 2.687648519e-13 0 2993859.574 0.0003630094719 0 0 0 4.874099652e-09 0 472102.0184 0 0.2094608326 0 0 5.784456126e-17 1.587179378 0 0 5.986857713e-08 33452.22636 0 36478.08284 0 0 6.19926078 0 0.005339561822 0 0 0 4.594675963e-07 0 4091.827783 0 1.02156322 0 0 2.773502512e-11 0 0 0 0 1.023327867e-11 0 0.9275041761 5.598326489e-11 9.785543803e-09 0 3.06976821e-09 366525.2135 593838.171 0 0 0 0 6.254088081e-09 22605.51548 26.08712194 0 0 3.447137289e-05 6160.568916 0 0 0 20.60911485 0 0.0733712322 0 7.304944439e-11 6.034917818e-14 6.507178726e-08 0 0 0 0 0 0 0 0.0009173337272 426443.6019 0 0 1.006667705e-09 0 0 0.00349257487 1104.911854 1268.182066 0 18724.60032 0 0.01628808003 0 0 5.748935015e-08 0.00484439495 0.3115289025 0 0 1.650207349e-07 1.14361572e-09 0.0001007761103 5.570610383e-30 2.637581117e-05 0.0002448548787 0 6.348859037e-10 0 4.526227004e-13 7189.462242 0 0.08857591649 1.972920469e-09 0 0 6.487447128e-11 0 55344.52597 0 0 0 3.507337314e-11 0 0.0001721655582 0 0 0 0 0 605365.1871 0 0 0 0 1.810066209e-27 1.104289429e-17 0 0 28341.54838 7.632019023e-10 0 0 6.85534848e-18 2.689618504e-08 0 0 0 3.993874639 6.36926167e-20 0 0 199.504554 0 0 0 7417.545518 0 1.078739854e-17 1.495479021e-12 0 0 0 0 0 3.551001399e-19 0 0 0 0 0 0 0 0 0 3.054729676e-09 0 0 0 0 0.001110046899 0 0 2.125761968e-08 0 0 0 0 517079.9416 0 0 419988.4018 0 0 0 2.194302332e-12 4.603696559e-11 0 0 0 0 9.841853653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 237501.4575 0 0 0 0 0 0 0 0 0 0 0 0 0 1.899920194e-08 477.3011895 0.0028489125 0 0 0 0 0 0 0.243156423 1.00873105e-20 0 0 0 0 0 6124.751408 +0 0 0 0 0 0 6241.367698 0 0 0 0 0.1561729722 0 0 1.17475469e-06 0 0 13193.31714 0 0 0 0 0 0 0 0.0195775843 0 0 6.774222946e-07 0 0 0.01591454582 0 0 0 0 0 0 3.519761135e-13 0 0 0 0 0 7840.403732 0 0 2.844832169e-15 9575.626636 0 425.0999725 1.074913847e-16 27259.87485 297.7938477 2.731984372 0 0 0 0 1.426209535e-11 0 0 1.28896057e-21 0 168279.1625 0 0 2.4566421e-10 0 0 0 0 7.375763148e-17 349.1423476 0 3.424316949e-08 0 3.655111399e-07 0 0.0001867783101 0 0.02504055672 43518.58882 0 349749.2717 1.31126113e-26 0 1.203203579 2060.676463 1.473926329e-05 0.002604760138 0 0 1.771323313e-26 1.280939605e-22 0 40697.78854 0 0 2.4056679e-11 0 0 0 3.823621005e-27 144.3651507 0.0002834974202 0 406.4809656 66824.78058 0 3.716774755 1.220846725e-23 6.884317521e-19 16431.20403 1.040031889e-16 0 6.091404601e-05 0 16948.91193 9.671110371e-14 0 3.80117008e-14 35.45480233 6.722009144e-06 4.419860681e-11 5.527739838 2.247203746e-09 6.31898142e-08 0 2.545134207e-11 0 1.317899545e-07 0 0 0 0 0 0.1379988334 0 9.579560011e-24 6.257620369e-10 0 7.465631154e-12 0 1.255035643e-20 7.539700771e-19 0 0.0202168212 0 3.424525154e-05 0 7.733811076e-13 0 0 4640.536948 0 0 0.0001258177626 0 1.813453613e-09 6.676211534e-05 4.428858153e-16 0 1.04978773e-23 0 4.013935158e-11 0 0.003143826554 0 0 0 9.007885085e-14 0.05071232128 0 1.555823104e-16 0.04047106939 0 0 1.997895668e-19 0 524089.0035 2.747790546e-07 4177.470481 0 134.9347316 0 0 0 2.762657953 0 0 0.003588008309 0 1.990314035e-14 0 88.97479158 0.4452658915 6.340076579e-14 0 0 0.01559549929 0.001465600345 0 0 0.04340491172 5.537161053e-07 9.449647018e-28 0 0 2.644027589e-08 0 0 51.3502642 0 8.55195046 0 0 15.8632924 6.458037352e-05 0 0 1.205666078e-11 3.901316939e-11 2.351059499e-29 6496.247865 0 4.535110627e-10 0 2.261546147e-16 7.186851347e-16 0 4.612641e-27 0 2.982942447e-06 5.563518226e-14 0 0 1.320431164e-07 0 0 0 0 0 0 0 0 11062.65498 0 0 0 0 0 4.364937866e-19 0 0 0 0 0 1.203161804e-05 1.377286932e-07 0 1.780077477e-29 39.17610158 0 0 1.759796536e-16 1.112785986e-11 0 0 0 9.703561806e-11 0 0 0 0 0 0 6.032538527e-13 0 0 0 0 1.011335298e-13 0 0 1.266388365e-11 1.498310753e-33 0 1.260380124e-13 0 0 0 0.06116284855 658.5474898 0 0 0 1.594884432e-12 0 0 +5.052242348e-17 0 0 0 0 0 2.195970947e-20 0.0001400581624 0 0 0 0 0 0 0 0 0 1.570292358e-15 0 0 1.398750183e-06 0 0 554842.5587 0 7.543513759e-14 1.646758018e-31 0 0 0 1.733768097e-12 0 5583.892524 0 0 6.174305818e-08 0 2.603885316e-27 0 9.080482551e-07 0 2.150643542e-09 0 0 0 0 0 0 0 0 0 0 0 463.1313215 0 3.421562282e-06 1.488148817e-08 0 0 0 0 1.869166138e-09 0 5.065635819e-06 1.380806075e-10 0 0 0.0007807595478 1.32457577e-08 4.43558091e-06 0 4970.666915 0 8.139361281e-08 0.0002434084004 0 0 0.008233463258 0 0.6369832179 0.0187857701 0 0.4250202454 0 0 0 0 4.039537799e-09 0 0 1.165272859e-09 36188.82606 3.088123087e-11 3.46356768e-05 0.0003221616489 0 0 0 0 0.0001075708702 0.000626387457 0 0 0 1.515648259e-28 0.0189681927 0 6.289132043e-18 0 0 0 0 9.461853225e-05 0.006505196119 0 61908.71021 5.587734773e-11 1.393567343e-09 0 0 0 0 2.953429499e-10 2252.202956 0 0 0 0 3.535427742e-05 0 0 0 0 730933.3504 0 161094.6483 0 1.173963463e-14 421.1864075 0 5.257822994e-07 0 0.0008868843235 0 1.794860487e-07 0 0 3.033159768e-19 0 1.036717312e-15 7.565908882e-16 0 0 0 9.930657397e-11 42597.35958 1.454694572e-11 0 0 0 0 0 0 0.00348501397 1397.548409 0 2.793231747e-17 0 2.56294364e-29 1.062457813e-07 0 0 0 0 0 0 0 0 445.8885088 0 0 0 0 0 2.800493135e-07 0 6.958808699e-13 7.210194725e-14 41943.39566 10.82764295 0 0 8.264214958e-16 0 0 3.691576542e-10 1344501.012 0 0 0 3.276771636e-12 0 7.078356167e-09 3.811409296e-13 0 0 0.2677057038 2.213039841e-15 874.0040776 0 0 0 0 7.681941734 0 0 0 0 8.715674663e-14 0 0 0 5.548254068e-19 35.17105651 0 0 0 5.097434237e-09 0 0 0 9.127368911e-14 1.754954924e-16 0 0 0.0001709836599 0 0 0 156.9519793 0 0 1.224236642e-05 8.696059858e-24 0 0 0 0 1.704192086e-26 0 0 0 58.11277048 315.1020609 0 1.831705522e-16 0 15.7514783 1.048397881e-12 0 0 0 0 1.55336809e-22 0 0 0 0 1.881976132e-08 8.37500654e-18 0 0 9.907049467e-07 0 0 0 0 0 0 0 17.52290341 0 0 0 679199.5774 0 18789.48436 0 0 0 0 0 0 0 0 0.09686365485 0 0 0 0 +0 0 0 0 0.03012373142 0 0 0 0 0 0 4.978810008e-15 0 4.071469547e-08 216093.7625 0 3.682284717e-07 0 0 0 9.173133563 0 0 0 7.109438162e-05 0 16405.93701 3.574001313e-11 33090.0388 0.1029306339 0 0 5.271386704e-08 0 0 0 3.849256306 0 0 0 0 0 0 0 352.3915425 70.39518257 1.866311744e-18 5650.223234 0 0 1.045365912e-14 0 0 3.049842902e-09 573.0580335 0 104.0693288 0 4427.190192 0 0.005680557978 12884.2357 0 0 8.331669995e-14 0 3.204465537e-28 0 2.974652086e-10 415414.1262 0 0 0 7.144806733e-14 3.866277129e-31 0 0 0 0 0 0 0 1.189636893e-09 0 2.602370668e-09 0 2.265099056e-19 0 4.240977906e-08 0 0 392534.9191 5.173385181e-20 0 0.3084382133 1.616704542e-07 0 0 0 0.3059855911 0.3867204049 0 8.297866777e-25 0.008149826312 0 1.177452891e-27 0 2.753434848e-13 0.6206964626 3.853505783e-09 0 0 0 0 0 0 2.279753059e-12 1.607546515 0 1.545763686e-13 0.06677406174 0 0 51.59416339 37.54297214 0 4.329811716e-09 0 0 0 0 3033.0442 0.3801106025 1.160363211e-09 0.01373652966 2.160206516e-17 0 4.127050258e-07 0 0 5.819544993e-14 0 1.447467825e-06 0 0 0 1385.681764 5.247808602e-19 0 0 0 5.374288333e-18 0 0 0 7.432337592e-11 0 0 0 5.323025424e-16 5.842619918e-06 1.406088087e-05 0 0 7.575551027e-11 2.308624547e-11 0 0 0 0 0 0 1.422204774e-07 0 0 0 0.0008539618712 3.531921737e-09 3.933883098e-11 1.43674101e-08 0 0 7.122554563e-15 0 0 0 3.247506702e-14 0 0 6.915650804e-17 6.655939691e-12 0 0.009635369329 7.719265544e-18 0 6.950200465e-12 0 29259.14479 1.143907637e-07 1.041295322e-17 7.520742174e-15 0 0 3.533709546e-18 1.031760201e-15 1.395860523e-05 3.071697489e-15 3.029781931e-08 0 0 6.337457238e-08 0 0.1354104639 0 0 0 0.011423496 0 6.401308076e-13 0.0001788958354 0 0 0 0 37.69703472 0 0.001263516419 1.373713501e-11 2299.379014 6.620948186e-05 0 0 0 0 0.0001446175398 2.668364614e-07 0 1.199925657e-21 0 0.008728058047 0 0 0 0 0 0 0 0 9.159881261e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.346484235e-19 43.4316532 0 0 1.273605256e-13 0 0 0 0 0 0 0 0 1.328496643e-20 0 0 0 0 0 0 0 0 0 0 3.931213861 0 0 0 5.366823411e-25 0 0 6.408484821e-06 0 0 0 0 0 +0 0 0 0 6.07657895e-15 0 0 0.009791266302 0 0 0 0 0 2.674585136e-10 0 0 0.0430425928 0 0 0 0 2740793.205 0 0 0 0 0 0 3.829864024e-09 2.475232213e-14 0 0 714891.0681 2.157525569e-08 0 1.557792487 0 0.0367547918 0 0 1.537625087e-10 1170.722702 0 0 0 0 0 0 0 1864178.91 0 28.37026883 0 0 0 50984.30717 0 0.0008355600275 1.619495792e-13 2.628993538e-11 0 1.959833296e-12 0 0 2.055534984e-07 0 0 0.004834208758 0 1.263914689e-17 0 0 8.744613379e-22 1.856545414e-15 3.192426769e-05 1012.370605 0 1.081524046e-09 1.842886719 0 0 0 8.565092362e-21 0 0 0.003947008246 2.999759041e-09 0 0 0.01742126999 8.289881839e-10 1.06533328e-13 0 0 2.083824888e-12 1378.498642 0 0 2.234518322e-11 5.053662798e-10 0 0 0 0 1.188396915e-08 0.06527814306 0 0.03779049246 13.93732509 117.1428202 259451.3202 0 0 0 6.528400265e-10 6.366038032e-15 7.806493858e-23 0 0 1.336132e-18 0 40.22959596 0 0.4245148398 1.725202957e-13 0 1.961866741 2.119333778e-28 349224.5579 8.002851265 0 2.405892618e-16 5.935474025e-05 0 0 2.421777816e-17 2.698481374e-16 73.04472395 6.942784579e-06 1.111437349e-10 0 3.240067981e-13 1.247918507e-15 1.218986127e-07 0 2.224260942e-09 0.540145821 0 0 0.0004782644675 9.768312999e-12 0 3.578263565e-14 0 0.0901567717 0 2.844167323 1.504123941e-08 0 0 0.0004561329504 0 9.227378707e-20 202.7058158 0 0 628.1122686 0 0 7.968753977e-11 21132.67667 0 0 0 5.010104035 0 0 0 5.887256771e-27 0 0 0 0 2.241688451e-17 4.408384837e-09 0 37.35036709 0 0 16.05511401 5.037307388e-21 0.04064590213 0 5.496123675e-17 1.339120132e-11 1746.997983 0 0 6.296732601e-20 0 0 0 0 0 716584.9189 3.862549904 6.481525513e-10 1.173335475e-15 0 1.009027789e-05 1196.156952 0 25.7055651 0 5.444602786e-08 0 0 0 0.002107049727 0 0 0 0 0 6.795136379e-06 0 0 0 254346.6976 5.515805227e-13 0 2.82940628e-06 0 0 0 0 0 1.095537863e-11 0 0 0 0 3.235128782e-11 0 0 26391.54043 0 0 593068.0357 0 0 0 0 0 0 0.004533751843 170.1872974 0 123724.2857 0 8.38381659e-19 0 0 0 0 0 0 6.479282737e-08 57333.84743 5.361943397e-13 0 0 0 0 0 0.002269384882 0 0 0 0 0.03960171355 0 0 5.809542395e-05 8.313390679e-06 0 0 0 0 0 0 0 0 0 0 0 0 1359999.282 0 228518.5054 +0 0 0 0 0 0 5.555428341e-13 0 6.6536939 6.939160984e-13 0 0 0 0 9.896730499e-10 0 0 0 0 0 0 0 0 0 0.3850234065 0 0.962493166 0 0 1.883488928e-14 0 307677.3354 0 1.071429144e-16 0 0 0 0 0 0 0 0 0 0 0.0001365389596 683.3659423 0.3648938428 0 0 0 0 8.964005026e-07 3.66031566e-10 0 1.62755428e-13 0 0 1.685696414e-10 1.349334896e-11 0 4.576127403e-07 0 0 4.177770105e-18 0 0 2.724405884e-14 1208663.679 0.001341453892 89.80184647 0 0 0 1.953720787 0 0 0 2.681602297e-10 0 1.10963251 0.0004419991519 5.486566533e-08 0 0 0 0 0 0 5.596930434e-10 0 0 13934.46163 1.805427161e-05 8.711056194e-13 0 0 0 1.734513277e-09 0 0 0 0 7.311827285 7.805250279e-16 0 0 1.510069751 0 0.05532789996 0 9.685921546e-08 280524.7527 3.841905653e-08 0 0 0 1.171591843e-16 0 0 7.234935095e-05 0.003078330948 0 0 0 79002.52173 0.294524375 5.049935626e-19 0 0 0 3.397697759e-16 6.58971063e-25 0 1.991091794e-08 0 0 0 1.625066003e-46 0 0.2476075043 0 0 7.619958929e-09 0 4.580111396e-16 2.390819138e-33 0 0.01185365981 5.181913885e-22 0 0.01476310724 0 0 0 8.274934644e-18 0 2.111149001e-07 8.32244789e-07 0 1.485172656e-14 0 0 9.132140268e-08 0 0 8.376153757e-17 0 3.245002032e-14 3.921314845 1.530215917e-19 0.001272076366 0 0 0 0 0 0 0.0002570857908 0 9.28337311e-19 2.093190353e-11 1.532631558e-14 372578.4456 3.330304598e-15 0 0 0 0 3.214691267e-19 0 0.4220335551 0 0 0.1239578493 1.209994039e-11 0 0 0 7.040783531e-13 0 0 0.002587280484 0 2.693931542e-13 0 0 0 1.862276358e-08 3.702133105e-09 0 0.1049337219 0 0 0 6.529222614e-09 0 0 0 0 17.39306577 0.005167917803 0 0 0 0 0.7607119096 297.6929615 0 0 0 0 0 461527.7548 1.071473916e-13 0 0 0 0 0 0 2.014852292e-21 24.05919702 0 0 402730.6792 24.57447212 0 4.888393719e-13 0 74871.94442 0 0 0 0 0 1.489115588e-10 0 3.452206871e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 306.5275215 0 0 0 0 0 0 0.07914947378 0.1469147604 239663.7533 0 0 1.982163296e-08 0 0 3.271353698e-08 3.973543864e-21 0 0 0 32.35758269 0 0 0 3.127343854e-05 0 +0 0 1.000910602e-13 0 1.388330436e-10 0.6984970228 0 0 0 0 5.192020697e-06 0 0 0 1487483.742 0 0 0 0 2.923237002e-06 0 0 0 70200.28662 0 9.157276181e-10 0 0 0 0 0 0 0.0003575645492 1700.896879 3.426861892e-20 0 0 0 0 0 0.0004138219903 7756.438513 0 0 0 0 0 87.82619628 9.452083123e-28 9.391297886e-30 0 1.966066635e-07 0.0003557646433 0 0 0 0 0 40900.58841 0 0 0 0 0 0 0 0 0 136563.5864 0 0 3.615092147e-06 5.576812301e-05 2114.986145 0 0 5.519758905e-14 4.788994081e-09 0 0 438.4640341 3.884811597e-12 535.9027781 4.395069106e-15 0.001399045497 0 0 410.1318173 0 8.518874869e-11 3.260798346e-07 3.862362656e-14 75.56387066 0 0 0 3.243734438e-11 0.00112544551 0 86.10314316 6711.651953 0.4731540183 50.29778639 0 1.502146226e-27 0 23510.39845 0 0 0 1.921038637 2009978.238 0 0 0 0 0 1.238013003e-09 42425.44866 29513.23725 0.001589416914 0 0 6.376377689e-06 0 0.0002162359075 0 0 16133.13002 0 1.216709912e-07 0 34.98947273 1.826718785e-23 1.070695665e-27 1.837149079 582.1655862 8.839514724e-22 0.01490930406 0 0 0 0 1.662898254e-14 0.06049074312 7.236617172e-08 0 0.5485052256 3.497646649e-13 0 8.059365069e-07 0 0 0 9.302420127e-17 1.960545162 7.243222912 0.04310648643 0.001607370109 1.548499966e-18 1.887548074e-11 0 0.07824870289 1277.707557 0 0 0.000289408151 0 0 0 6.813779641e-19 1874.320935 0 5.812250811e-20 3.685187531e-08 0 1.586215264e-16 0.0006397197007 0 1.731952223e-05 0 0 3.773887775e-27 6.354880727e-32 9.631181551e-05 0 0 19.58376268 2.406150219e-05 1.451569766e-15 0 2.898185731e-14 7.315707768e-06 91.68706489 0 0 1.880727425e-18 0 2.136929342e-10 0 3.245869089e-17 0 0 0 0 0 0 0 0 0 9.518886785e-05 0 0 0 0.03355197654 0 0 0 0 0 1232952.518 0 288676.8584 0 0.02812769346 2.562686713e-14 0 53315.98365 0 0 0 6.035531112e-07 0 0 0 3.351310678e-06 0 0 1.630171675e-06 0 0 0 0 0 1.480302916e-27 0 0 6.970036406e-08 0.0001586583352 0 0 329629.1121 0 5.370306045e-13 0 0 0.6811038866 6.370218258e-17 0 0 0 0 0 1.876985251e-12 5.86607057e-06 0 0 0 0 0 0 1.762238999e-13 0 0 91898.20564 0 0 0 0 48872.87406 0 0 0 0 0 0 0 8.973071965e-31 0 0 92030.40164 3.280068947e-24 9.321488249e-14 0 0 0 0 0 8.439365563e-14 0 +0 0 0 2.336138562e-07 0 0 0 0 0 0 1.758828438e-11 0 0 0.1783578004 4.313284344e-09 0 123.4710376 0 0 0 0.6015472123 0 0 0 1.914472324e-25 0 0 199.5918716 0 1.484100698e-08 0 0 0 0 0 2.348373825e-11 0 11.92290289 0 0 0 0 0 0 1.505674176 0 1.491800682e-05 0 1.617677471 0 0.008456764487 0 0.0003216904127 0 0 0 17.6834603 0 0 0 0 0 0 0 6.456647183e-06 0 42060.27368 0 0 0 0 0 3.637576843e-09 0 0 0.0001980556454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.147828384e-05 8.717217416 0 4.128358988e-11 0.1558599066 3318.419716 270799.445 0 0 0 2.435919264e-11 545.4133569 0 0 0 60.98587266 297157.532 2260.271228 0 0 0.0002316309831 4.555495385e-14 0 0 0 0.08080704503 0 3.7186422e-21 3.28410853e-11 1.861101949e-05 4718.644139 0 0 0 1.332096158e-06 0 1.150980225e-05 0 2.849193841e-31 9.135057202e-08 0 6.727604798e-19 0.2377669383 0.01974624884 3.798210484e-16 779.7701639 7.274629341e-24 0.2603657646 0 0 0 0 0 0 0.01018803614 6.660874047e-14 0 1.748917836e-07 0 1.265085077e-13 4.803325307e-14 0 0 0 1.08603785e-09 0 0 0 0 2.207094087e-09 9764.609044 0.1481556327 0 0 2.74888794e-06 1.692103844e-14 1.884775523e-07 2.193854915e-05 2.165917872e-25 0 2.286436423e-21 4.560749586e-11 0 8.959081059e-08 0 0 1.83154146e-10 98776.46845 0 0 3.720333496e-29 5.319123308e-11 0 0 357151.7549 0 0 5.309981162e-21 0 6.509754967e-11 0 0 0 9785.756364 1.685481487e-09 2.746287889e-09 4.190806857e-09 3799350.711 0 1.254310279e-06 0 0 0 0 2851.904167 0 0 0 0 0 0 221.100005 0 0 0 0 0 0 1.688074848e-05 1079.40464 37684.00469 0 0 6.725647515e-08 0 433.3032491 0 0 0 0 3.686765188e-05 0 0 0 8.721983191e-13 0 2.760033633e-30 0 816078.3021 0 6.332186181e-09 1.85475805 0 0 0 6.205585579e-30 35041.17615 0 0 4.887585903e-18 2.607413135e-08 3.153792036e-14 38268.58457 0 0 1.664242654e-09 0 0 0 0 0 0 0 0 0 0 4.593535128e-07 0 0 0.0001994990407 0 0 0 0 0 0 0 0 3.261259727e-24 0 5.938111436e-27 1.211120256 0 0 215629.9799 0 3.8407689e-27 0 0 4.989656191e-08 0 0 9.644847568e-22 0.0003777783049 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 2.749428675e-07 2.162994723e-06 0 0 2.391967483e-09 0 0 0 9.822245162e-17 0 0.09933395783 0 0 0.0003182393641 0 0 0 0 0 29.01456997 0 0 0 0 0 0 0 0 0 1.356324482e-06 0 1.391791704e-07 0 0 0 0 0 0 0 1.215573464e-23 1.49273877e-10 0 3.629292337e-06 0 1491.106543 0 0 0 0 4.659603829e-07 2.892931832e-15 0 0 0 0 0 0 0.0007860114602 0 0 0 0 0 0 0 3.239767639e-10 0 7.644161349e-15 3469827.813 0 6.852237319e-10 6.815727252e-11 0 0.4469118491 0 2.523683618e-10 0 0 0 87802.05176 165.2303421 0 0 0 2.296268433e-11 0 431.0672591 6.893973161 1.2905468e-09 0 5.946951654 1.29628331e-16 0 0 0 0 0 0.003025189242 0 6.921633462 9.769645972e-09 0 7.11232725e-18 27849.2783 5.044908239e-07 6.243054094e-19 8.328699131e-28 0 0 0.004729953349 0 0 1.299878937e-19 0 0 1.756303155e-10 9.028854307e-10 0 0 0 0 27.01016018 0 3.762907329 0 0 0 6.778991114e-14 0 0 0 0.004856311029 0 1.398890877e-12 0 0 0 1.257569597 0 1.063763496e-06 1.99666916e-14 2.13375683e-10 4.347824968 3664.063251 189.5514118 0 467820.5094 0 0 0 0 0 1.103922016e-14 0 0 167574.1663 5.314133491e-07 0 59908.20136 4.492154386e-05 0 0 1.264200247e-11 0.0006217389127 0 1.222061935e-05 4.450707759e-29 0.005156305495 289263.8025 5.693607305e-07 0 83.00244606 35708.14172 0 0 0 2.856393554e-18 0 2.674749856e-23 0 0 0 0.004793385761 11.2588802 4.308328473e-12 0 0 1.009776158 5.602152772e-12 320316.2248 0 0 0 7.24423361e-07 0 0 0 0 0 51.33572523 0 0 0 7.939339206e-11 0 0 0 0 9.022496843e-11 6.235159975e-13 0 0 0 0 6.757498695e-12 0 0 0.001846764188 0 447394.233 0 0 3.70793477e-12 0 0 2.813761463e-06 0 0.007517451851 7.089365593e-11 0 0 6.620174535e-29 1.4371955e-06 3.737643173e-09 2.882718613e-12 0 1.830493338e-05 0 0 1.614089342e-13 0 0 0.004959152061 4.547872258e-13 0 0.8968780064 351079.2462 0.0003126616762 0.0001756430421 1.464472825 0 4.865241696e-05 0 0 3.157628538e-09 0 0 0 0 0 0 0 0.002512372067 0 0 0 0 0 25.37162402 0 0 0 0 0 4.389170956e-08 0 0.02320086381 0 0 0 0 0 0 0 0 0 6.788137822 0 0 0 +0 0 0 0 0 0 0 0 0 648.861999 2.824984709e-08 0 0.0004485437369 0 0 1.937563037e-43 0 0 1.297295962e-23 0 1.772844724e-08 0 0 4.714509702e-09 0 0 1.101501503e-21 0 0 0.0001647150981 5.132047346e-17 4.883569513e-10 0 0 0 4.317584835e-19 0 1.062156811e-05 0 0 0 0 0.0001765506988 3.363677858e-16 0 0 0 1.565317611e-14 0 0 0 0 0.0005460262284 0 7.097001181e-05 0 1.023240082e-05 0 5.967304763e-06 0 0 0 0 0 9.466088731e-14 0.0003751609917 0 1.003611885e-06 0 0 0.0001810436156 0 5.806175387 0 0 0 0 0 0 0 4.186633055e-10 9.87235387e-28 0 376.0993316 1351549.922 269759.1439 0 1.255353675e-12 0 1.706204059e-08 0 0 0 8.125828007e-08 3.637013067e-36 5.215911501e-07 0 0 35.4226558 0 0.02904686229 0 1.050561494e-09 0 3.41642207e-16 1.637846458e-07 64.02387322 0.0002447742406 1773044.374 9.610360403e-10 589889.4044 0 0.0001860846563 0 0 3733772.257 1.645131743e-22 0 0 0 2.89313966e-11 503592.9498 0 0 1.861509891e-06 0.1351784998 37913.56976 0 0.01354813033 4.624785603e-12 0 7.71924152e-10 0 141570.3765 0 1.568830643e-14 0.495719942 0 4.268809288e-15 0.527712565 0 6307.612784 0 0.0008925611925 5.951549265e-14 173362.652 4.785474044e-05 1.632382194e-08 5.177687459e-18 0 0 0 4.34902866e-12 0 0 0.0005349070844 8.063694687e-32 6.465539236e-09 0 1.105765605e-10 0 0 0 3.693094227e-15 0 3.795995092e-11 1.605527218e-14 6.388806636e-09 0 0 0 1.1595524e-12 0 0 0 0 3.235197298e-17 0 0 6.082803923e-06 0.0009199358284 1.194661592e-08 1.107055419e-06 0 0 0.05454297896 6.651199834e-16 10.10760943 54.71777161 0 3.164175258 1.259818251e-05 0 0 0 6.322295173 4.102304799e-06 0 0 0 0 0 0 0 3.580396233e-18 1.209719138e-13 0 0 1.064050499e-15 0 0 1.6544594e-09 5.295324444e-13 27124.69167 0 5.168359351e-13 0 0 0 0 0 2.812012757e-40 5.347784566e-12 0 0 0 0 0.1779548469 0 0 0 0 0 5.281941038e-07 0 0 0 0 1.199628138e-07 0 0 0 0 0 0 0 0 8.214112129e-11 8.77445273e-07 0 1.905740718e-17 0 1.298049263e-17 0.0275553982 0.0001558200805 15633.87233 0 0 0 0 0 11.21954161 0 4.298367663e-10 1.092325116e-13 4.736983228e-12 0 0 0 0 0 0 0 0 0 2.007247423e-07 0 0.00452918291 0 0 0 0 0 0 0 0 0 0 0 2.950111798e-19 5.537219358e-09 0 0 0 9.401040967e-13 2.348228966e-15 0 0 0 1.385718768e-07 +0 0 119315.1298 0 0 0 0 0 0 0 0 1.128309383e-10 0 3.39088947e-31 1.067963165e-09 1.101723781e-15 0 0.1468239579 0.01105205 0 0 0 0 0 0 2.048320922e-19 1.255394709e-12 0 0 0.0001672499808 0 0.05428558293 0 0 0 0 0 0 0 3.118067086 9.434971807e-12 0 0 0 0 0 0 15938.00196 0 0 0 5.228233006e-14 0 0 0 0 0 13.03636833 7.993399377e-06 0 406944.1051 0 0 0 0 1.636706168e-07 0.04290479363 0 0 0 7.725202029e-05 0 7.794345756e-05 0 1.979026792e-08 0 0 0 0.0001745847427 2031.14732 0 0 0 0 0 6557.376284 0 3.563583412e-20 0 0 12678.6809 0 8.487904498e-06 1.9245124e-07 0 40.82643554 122346.7997 0 8.153807726e-07 0 0 0 0 0 0 0 0 24538.61424 0 0.02315909409 0 0 0 0 0 1.541153494e-06 5.326371436 1.502545896e-11 3.868147704e-13 0 0 22926.67121 2.984701677e-06 0 2.274823961e-09 782.5835407 1.201999132e-15 0 0 1.463115075e-19 1.994678558e-15 0 8.416505304e-13 0 0 0 9.209352177e-13 0 3.143120376e-05 0 0 762569.6983 9.942192867e-07 6.340689221e-13 0 7.581168749e-19 0 1.835569434e-08 2.636780332e-12 0 6.300768883e-16 0 24.31788942 0 0 0 1.509182962e-11 0 0 1.493887204e-15 0 0 1.330682662e-17 0 0.0006079380364 1.018286302e-26 1.592314568e-05 0 0 9.548769234e-23 0 3.081043997e-13 3.093052266e-19 0 0 0 0 2.619320218e-22 0 6.765129848e-12 0 0 0.4819900714 6.388277331e-09 0 0 0 1.17668922e-12 2.84135175e-05 0 0 0.07825952024 0 0 0 0 6.364122305e-11 23363.32087 0 0.7810456416 2.418616906e-18 1.270034558e-15 0 0 1.703738515e-10 0 0.9158292127 0 0 0 0 103.5680101 0 0 2513.286306 0 956673.6587 0 1.97777276e-28 5951560.354 0 0 0 0.0004274089206 4.057254232e-12 1.119408035e-08 0 4.176205776e-21 0 0 0 0 2.716022839 0 0 1.294740427e-22 0 0 0 0 0 0 0 0 0 3.237212575e-05 0 0 1980960.589 0 0 0 0 6.346026093e-11 0 0 0 0 0 0 3.163354509e-08 1033.44078 7.862026809e-05 9.088512962 0 0 1215.176064 0 5.702231874e-12 0 0 0 0 151.401181 1107038.002 0 0 8.171648856e-17 0 0 0 2.525501229e-13 3.11751211e-09 3.567881197e-05 0 0 0 0 0 0 0.1576759473 0 0 0 4.249044611e-11 0 0 0 0 327578.7661 +0 0 0 3.16416743e-13 0 0 0 5542894.254 2.042260841e-09 0 0 0 0.002324377355 1.043230883e-05 0 0 0 5.372576802e-07 0 0 0 26955.25812 0 0 0 0 0 0 5.729608595e-07 0 0 0 1.064819731e-06 0 7.798174996e-08 1.417413933e-06 1.044592874e-14 4.529725031e-35 6.753529643e-13 0 0 0 0 3.822583261e-10 0 0 0 0 3.433757631e-14 0 0 0 0 0 3.443867319e-05 0 0 2395.029733 1.252528672e-12 2.481981686e-10 0 0 0 0 3.647615644e-24 6.446931663e-09 0 0.001498014274 0 0 7.729162318e-10 0 0 0 0 4.840845167e-28 0 0 2.614560333e-07 0 0 0 4093.103209 8.351190435e-13 3.541101348e-07 9.577361559e-10 1.008809111e-05 6.065360803e-13 5.554211443e-11 0 0 5.514166302e-30 8.171777494e-20 0 0 0.007436970006 0 0 0 0 308604.2585 0.0004745668454 0 0 8.669339726e-12 0 6.775502603e-09 0 0 0.002476567126 6.094585622e-31 7.56161595e-06 0 1.744816346e-07 0 0 2.799164565e-09 0 6.408715211e-19 1.061051404e-21 414.7625394 0.0009539025512 0 158.7758345 4.253524648e-11 32615.64661 0 1785579.202 15.96582612 0 326131.1469 7.693600218e-08 0 0.0002641398187 0 0 0 0 0 8.390206399e-06 1201711.556 1.003015776e-08 0 0 0 23.00646403 0 0.0002250778598 2.385957411 5.079674926e-10 0 0.008614516481 2981.577142 0 2.50177968e-05 3.563158996e-13 0 1.296207242e-12 576.623993 0 4.432911283e-25 0 4.933768131e-14 0 0 821.246328 878.4138033 205.0167804 1331592.405 0 7.084476817e-23 268121.4937 0 0.0002223402903 0.04747735716 0 11.52413161 0 0 60.43586199 0 0.04582127083 0 1.752000818e-16 45170.70592 0 0 0 5.854604965e-06 0 0 0 0 0.0002112825471 0 0 0 0 0.05007466323 0 134697.9676 0 0 0 0 23358.73652 0 514852.8175 3.701720806e-08 0 0 0 0 0 0 1.789861622e-12 0 329928.4138 0 0 0 0 0 95.97098649 0 200.8652199 0 2035678.366 0 0 0 0 1.848889492e-06 1.322834271e-10 1.51535249 0 0 0 1.431480842e-09 0 0 0 0 0 0 0 0 0 0 9.414346016e-05 0 0 0 0 0 0 0 3.089176639e-20 0.4462443381 0 43681.25475 0 0 0 0 0 0 0 0 0 0 0 111552.3813 0 0 0 544471.19 0 0 0 2357564.643 0 0 11086.70835 1.831469521e-22 0 0 0 0 0 4.566476401e-09 0 0 0 0 99.84990475 3.259253536e-05 1.428493977e-27 0 0 +0 0 0 0 0 0 0 0 0 4.190369267e-06 0 0 9.308987568e-08 0 3.65558446e-19 33.44444854 0 0 0 0 0 4.604833439e-19 0 0 0 0 0 0 0 4.718834996e-10 0 2.787375797e-31 0 0 2.431557921e-07 0.0005507757388 0 0 0 5.722587323e-08 0 0 0 1.784831007e-11 0 0 5.53713208e-06 0 0 0 3.796136083e-06 3283.632131 8320.813583 1.623374707e-26 1.805150673e-29 0 0 0.04630531389 416635.5384 0 0 4.284381564e-20 0 0 0.1610075497 0 0 2.713146729e-25 0 0 4.813517193 99214.74652 0 168.4512675 0 0 0 5.558786779e-08 0 764116.7368 684763.1702 136683.3722 6.037692283e-17 0 0 0 0 0 0 3.466696248e-07 6.136974556e-05 1.330318294e-05 0 355780.4041 4.177332967e-23 0 3.752682766e-07 0 0.0001222594668 0 0.0001116084781 3.719112184e-10 0.0001460590575 5.523014068e-19 42326.18119 3.820969241e-07 0 1.283529088e-12 5.25213166e-09 9.195171904e-19 0 0 0 0 8.583796399e-09 5575.100727 0 8.116804818e-12 0 5.475470697e-16 0 0 5.961058464e-06 8.946821277e-28 935.52639 0 0 0 0 2.862447259e-06 0 0.002871880346 2.58439225 7.71452877e-22 0 0 0 0 0 0 0 79.35949464 0 1.963585469 0 2975948.626 0 230930.9563 1577529.978 3796200.719 3.686173147e-12 0.01172035263 1286.836998 0 7.785288042e-06 0 228.2282451 0.006260395271 0.03141900418 0 217785.7076 0 0 676513.2883 1.923246661e-06 0 1111056.093 0 0 0 0 0 1.05733575e-13 5.134694261 0 2839.987988 0 0 0 0 0 5.00231757e-10 0.0001109332438 9.148208099e-14 2.05220497e-20 0 0 0 1.080902757e-13 213.6497512 0 0 0 0 1.138935891e-16 0 2.188207357e-17 1.2843354e-15 1.165638496e-09 0 0 0.05324725586 6.976352593e-23 0 4.479180999e-17 0 0 3.166305305e-09 2.038447658e-05 105502.5511 0 3.952805181 1.098663194e-08 0 4.024531024e-05 0 0 0 0 4.254598737e-09 4.137017212e-14 0 2.842555383e-07 379.6742133 0 0 0 0 0 0 0 0 0 0 0.4197277364 0 6.847744546e-28 0 0 129.9614907 9.14491227e-05 0 0 2.861607315e-07 2.136519658e-05 0 0 0 0 0 0 0 0 0.007597044214 0 4.912314343e-37 0.4827823632 0 0 0 0 0 0 0 0 0 0 9.288470611e-09 0 0 0 0 0 1468.773246 1.021651923e-11 50.48508373 3.086929778e-19 0 77808.67407 0 0 2.591038233e-06 0 0 0 0 202525.7054 2.298616968e-10 0 0 0 0 0 0 0 0 0 0 2762.53328 0 +0 0 0 0 1.033928216e-27 1.403713928e-07 0 0 0 0 0 0 0 0 0 0.003726416113 0 4.520509103e-29 0.07300165058 0 0 0 7.724700064e-07 0 0 0 5057.813683 0 0 0 0.005036826556 0 0 188064.2355 0 0 7.107723064e-10 0 3.032357115e-19 0 0.4033843123 0 121111.5764 0 0 0 115611.5888 1.507371213e-23 0.05235717829 0 0 4.936197575e-13 0 0 0 0 14676.97315 0 0 0 0 0 0 0 0 0 0 0 0 14338.39977 0 0 0 0 2.301188022e-06 0 0 0 0 0 0 3.637182492e-17 3.988695701e-17 0 15.53543463 0 3.751602195e-06 1.733778748e-12 1.262683504e-09 0 10215.52448 0 0 0 0 0 0 0 3.639063409e-08 0 5.578318456e-10 671.9759128 894073.5638 1.356689305e-09 0 0 0 0 5.082784913e-28 0.004003823704 0.154874552 0 0 7.554614539e-14 0 3.643997577e-13 1.480808766e-05 1.649881884e-05 4.750028759e-08 55.43718145 0 1.205027722e-11 0 0 314337.6358 0.1239038218 0 0.006683124483 0 0 0 5.617328402e-05 0.0001508661352 0 0 7910471.972 0 0 0 9.151479992e-16 3332.374528 0 6.800037219e-12 0 5.671392939e-17 0 4.35137347e-07 0 0 0 1.869459698e-12 0 0 8.209890326e-18 0 2.527850086e-11 0 0.4444806178 0 0.0007964104465 0.001171382319 267225.4377 0 0 0 1.813087516e-08 0.009842471748 2.040654594e-13 0 0 4.729719433e-21 0 0 2.399220869e-12 8.762757837e-45 0 3.608391628e-17 0 9.250468954e-08 8.942525493e-14 4.826049844e-12 0 0 0 1.925710564e-14 0 0 6.620995832e-08 0 0 1735419.705 0 462884.1249 1.951160412e-07 19.52036318 4.019251284e-07 1.708556142e-05 0 0 0 8.325791277e-07 5.150864657e-12 0.001328626021 0 8.685466793e-06 324088.0545 0.03553617758 0.0003621611326 0 1.964962482e-05 6.399761078e-20 8012.808629 0 0.00127070607 6.023403872e-10 315246.5718 0 0 4.637290771e-10 0 143.1345583 8.05326918e-11 0 181920.0667 0 4.600423818 1.802607974e-12 0 0 525628.2088 0 0 0 0 4.375708877e-10 0 4.288175971e-06 5.657899855e-22 9.592968751e-14 0 0 0 0 0 6.409185457e-14 19.34981855 381393.6646 0 0 0 0.0004026906745 0 9.537705778e-18 3.524116029e-10 0 1.538070159e-18 0 0 0 0 0 0 0 0 1.964159797e-10 0 2.719033901e-09 0 0 0 7.627887684 314942.0577 7.557945865e-20 0 0 0 0 0 0 0 0 0 0 0 0 900177.1381 0 0 0 0 0 0 0 7.810175433e-09 0 0 0 0 0 351215.605 +0 0 0.0009098030778 1.201635997e-06 0 0 0 0 0 0 0 0 0 3.296904286e-24 0 0 0 0.08875380746 0 0 2.636332869 1.997140368e-08 0 0.0006332695015 0 0 207681.5881 0 0 7.867681932e-29 0 0 0 1.432603986e-28 9.429811961e-17 0 0 315405.3271 0 3.794401033e-33 3.117317811e-12 10.98863795 0 7.586649276e-13 0 250346.148 0 4.162258083e-12 7.662640092e-14 1.349559037e-16 1.845307985e-18 2.784713317e-13 1.03634727e-11 0 0 21034.32032 0.09962059117 1.348532876e-09 0 0 63134.56802 6.310821007e-17 0 0 0 2.579519515e-28 241.1289962 0 0 0 0 13912.20348 163170.7617 3.128483796e-05 2.809830406e-07 0 0 0 0 0 1.537593542 0 0 0 0 0 0 950.2226729 0 0 0 0 0 0 38465.2686 32.15923055 0 7.643026442e-19 0 3.366925007 0.0003519160844 6345.955598 0 0 2.145124139e-11 3.833858972e-13 0 0 0 0 6.079935483e-13 1291.339051 156.5947166 8143.062643 0 0.0899317095 0 0 0.3234704156 0 859.2170463 38.53015389 366514.7808 0 0 6.401597349e-15 0.05383858975 0 2.186650609e-18 0 0 0 0.1409956355 0 0 0 0 1.069355691e-18 5.218482209e-09 0 3.877744678e-17 0 8.426516539e-06 0 0 0 14.0326343 4.560266815e-14 0.0003522700759 0 1.532232973 0 0 0 0 0.2830412799 0 3488.094356 0 1.526907554e-15 0 0 0 0.106687197 0 0 0 1.81332315e-14 0 0.02387747608 0 2.17844655e-18 0 0 0 0 0 0 0 0 0 0.02067956767 0 0 0 0 2644.905381 2.801536324 0 0.08354948718 0 6.462792553e-05 0 0 0.7738855054 0 0.003780216944 5.921771991e-12 0 0 0 1.216030157e-15 0 39.68543917 2.627961726e-10 2.648876276e-05 1.069901065e-07 1.293326389e-05 4.396393279e-10 0 8.495993181e-14 0 3.229051238e-12 4.770850985e-17 0 0 1.037135007e-07 0.0005368933969 0 0 0 0 0 0 10440.53654 0 0 0.005835137535 0 0 0 9.209500139e-09 7.210981179 0 0 173375.75 0 0 0 1.606497113e-09 0 0 0 0 0 0 0 0 0.0002571248479 4.751477014e-16 0 0 0 0 8.05048572e-31 0 0 0 0 0 0 4.606787023e-18 0 0 0 0 6.581398698e-08 0 0 0.001757232508 0 8.771183925e-05 0 0 0 0 0 4.979470024e-08 9.060874462 0 0 0 0 0 3.679726957e-18 0 0 5.215487507e-09 3.120859799e-26 73708.6855 0 0.0001229805518 0 71114.38529 0 0 0 4.172344614e-08 0 0 +9.648341605e-12 0 0 0 0.000322361413 2.390199141e-14 2.34016441e-30 0.3305662186 0 0.0003059073507 0 0 0 0 2.542100658e-15 250.0667949 0 0 0 0 0 0 0.5452577357 1.455139465e-09 0 7.0969458e-11 19.08535864 2.927816153e-09 0 0 0 0 0 20638.39284 0 0 1.690691315e-10 0 0 0.2651935907 0 108.7864679 7.053758388 0 3.188004174e-11 9.41310832e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00690710664 0 0 0 0 0 0 0 88.70312687 0.0007815183615 0 0 0 3.317642964e-11 0 0 0 1.787751988e-11 0 0 6.514584299e-05 0 1.314157045e-07 396.1872762 37128.33609 0 0 0 0 0 2.233459524e-22 1.351367449e-20 0.03332000279 0 2.359215751e-08 0 0 0 0 0 1.692843131e-09 0 4.324520059e-17 0 2114506.943 0 0 0 5.117726085e-10 1.656768916e-18 0 0 0 0 0 2.554145705e-11 4.906985955e-12 1.220289526e-17 0.02597549915 0 0 925.913227 0 0 0 0 12125.45383 5817.388474 0 3.436968413e-12 1.928052202e-13 0 821830.6694 1.011794049e-09 367.7853868 0 0 0 42576.66908 0 7.595245227e-31 0 3.524136285 1.798363163e-15 3876.110499 1.627284337e-09 1.141573592e-10 257.06658 0 0 0 0 1.713207882e-19 1346.642481 0.1302925372 0.00796968093 0.8128378377 0 0 0 0 0 0 2.626710955e-09 335665.8842 0 0 2.975356792e-08 0 0 3.322364837e-07 0 1.470099956e-14 0 0.1636403204 0 0 2.98546311e-14 0 0 0 0 0 8.575378571e-19 0.003027187437 6.721716589e-12 0 0 0 526890.3921 134054.8547 0.5053651087 0 0 0 1.835320914e-09 5.354050097e-10 0 2.886583514e-19 9358.000619 0 0 3.219459375e-06 0 0 0 0 51.77218187 0 5.432853093e-17 0 0.08644022077 4.885185964e-18 0.0001019864984 1141.023715 0 0 0 0 1191447.465 20930.66377 0 0 0 0 0 591.7105233 1.713407938e-05 0 0 0 0 0 3.804094262 0 0 0 8.662621867e-07 1.538349471e-10 0 1.16302368e-13 0 208140.3565 0 0 0 0 0 0.1314232902 7.599190765e-15 0 8300.990647 0 0 0 0 1.891783007e-08 0 0 0 36683.20684 1.5543977 0 0 11028.158 3.250070604e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.064963135e-19 0 0 1.280466355e-25 0 0 0 0 0 0 0 0 1.115788328e-12 1.079512282e-12 +1.710058915e-14 0 0 0 0 1.004040462e-15 0 5457797.731 0 0 0 9.227969712e-17 21309.01689 0 0 0 0 0 0 0 0 0 1551.02296 0 0 0 0 1.518602016e-11 1.430719245e-09 7.892280977e-15 0 0 0 0 0 0 0.00011485121 0 0 0 0 0 0 4.927461011e-08 0 0 0 1.849179294e-16 0 0 0 1.196499118e-16 140.829905 0 0 4.112898536e-12 1.956337664e-11 1.233739317e-09 1.294011457e-28 0 2.326740242e-08 0 0 0 0 0 8.670502325e-09 0 0 0 2.534423257e-17 1.688829488e-08 0 0 0 3.929026186e-12 0 0 0 277264.8556 724222.4369 0 0 0 0 2695.511739 0 0 0 3035.94608 0 0.01131656051 0 0 0 1.169682997e-24 0 0 0 0 0 0 0.001410344474 0 0 0.005910417115 9.083055085e-18 6.151703323e-08 0 0.5499543954 0.0006858176453 3.235683999e-11 2.622482948e-14 0 0 3.298843912e-24 0 3.007538199e-24 9.282047093e-11 0 0 0 0 0 0 1.689397745e-14 2.867159447e-18 312761.4041 0 6.113049062e-07 6.185259724e-28 0 5.856934163e-23 13613.62057 0 517810.5173 1.018623734e-14 0 5.91863238e-07 7.240815512e-16 0 0 0 0 0 2196881.632 1.697078415e-08 1.111862488e-16 0 0 0 0 0 1.070632275 0 0 0 0 6.93506351e-11 0 0 0 0 1404640.058 0 0 0 4.691499249e-12 0 87.67522019 0 4.144518189e-17 0 2.456952011e-20 0 43.48592157 3.149749409e-11 1.697387327e-06 0 1.821613883e-07 0 0 73933.24074 0 2.369368432e-09 0.0003160216026 0.1130837094 0 0 4.167257006 1.499236288e-27 4.160071674 0 0 14478.53781 0 1.08395494e-05 16.8572599 5.572952195e-07 0 0 2.302181195e-05 0 0 6.277329799 374.0545958 0 0 0 31587.59762 0 0 0 9.107288436e-13 1.555305062e-14 0 0 0 7.8126322e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 403629.6846 1.423040114 0 0 0 960249.4759 0 15.03149154 0 8.673855009e-09 0 0 0.1931880897 0 0 0 0 0 0 5.190661235e-19 0 0 1.233009704e-29 0 0 0 2.482657691e-11 1.463843387e-06 0 0 0 7.336776908e-05 0 0 0 0 1.321963307e-18 0 0 0 0 0 0 0 1.891299644e-25 0 0 8.408031373e-25 0 2.675358675e-05 0 0 0 0 3.264963397e-11 0 0 0 0.0007939477642 9.192063318e-10 0 220.5618286 2.158813703e-07 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.870987573e-18 0 9.485113193e-20 1.549497764e-14 0 0 0 0 0 0 2.408931398e-15 9.214841082e-12 8.339556285e-10 0 0 0 0 922842.946 0 0 30629.15273 0 0 0 0 0 2.516606735e-09 0.1313434949 0 1.783837672e-14 0 0 0 0 0 0 0 0 1.06333687e-10 600801.0939 4.428000818e-05 0 0 0 5.28767488e-15 0 0 9.784496334e-22 1.039822584e-20 2.826290568 0 0 0 0 3872.245862 0 0 0 0 0 0 0 0 5808.435882 0 0 0 3.460281293e-06 0 0 1.662086793e-05 6.398084235e-05 2.810913557e-17 0 0 1.549510077e-17 9.949239411e-13 1942.320861 0 0 0 35487137.98 0 409434.118 0 1.462678188e-05 5.579221372 7.401495551 0 1.209040616e-06 9.015574231e-05 0 2.231260295e-05 0 0.3681445872 3.68401613e-14 1.745883647 9.519822882e-11 0 9.237502394e-05 2.684127314e-21 0 0 1.001090724e-06 1.06616998e-14 3.067863857e-13 3996.510504 72000.22098 6.40846205 0 2.299804888e-15 0 0 0.000633860797 0 3.361734252e-19 0 61658.08025 0 0 4.137002352e-13 0 7.840815362e-08 0 0.002894958564 0 0 0 0 0 0 0 26651.89991 0 1.569139464e-13 67365.74204 0 0.00335876706 0 0 0 1.166489054e-29 58.5429509 5.894308501e-11 0 0 0 1.028165868e-13 2.950141773e-07 0 0 1.833709765e-07 0 0.0001082235057 0 5.242619164e-05 0 0 0 2.44130574e-05 0 0 356737.1262 50383.97837 0 0 0 0 0 0 4.151422897e-21 0 0 0 0.1796838396 0 0 1.123488828e-09 0 0 3.992941411e-05 1.066843347e-10 0 0 0 0 0 0 2.04109125e-16 0.0008340198124 5806.269111 0 0 0 0 0 6.875557212e-15 0 1.537266451e-17 0 1.350343034e-20 0 0.01518166942 0 5.066018263e-13 6.863221747e-08 0 5.721581226 0 0 6.573023106e-12 0 0 25.52178979 0 0 507512.3986 0 12.30941431 8.081652846e-08 3.722849204e-08 0 0 4.35511952e-06 0 0 0 28.26895392 0 0 4.195296732e-10 0 0 0 0 0 0 0 1.286621188e-08 0 22.05486387 0 0 0 9.507717828e-12 1.367804184e-20 0.06888084361 0 7.231377447e-05 0 0 0 0 0 2.174709861e-11 0 0 0 0 0 0 0 0 0 2037.201265 0 0 0 2072250.023 0 0 0 0 0 51337.94928 0 0.02680816116 0 1.431099401e-07 0 +2.390702953e-11 5.213206462e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 386.6971743 0 0 0.006773681712 0 23.26811788 2.239254954e-08 0 2.918961106e-06 0 3.567709476e-05 0 0 0 0 0 2.401216843e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.851617697e-07 0 0 0 2.043961864e-11 0 0 0 0 3.230961557e-26 0 0 4.416426137e-15 30309.08688 0 0 0 0 0 0 6.851027392e-16 0 0 0 0 8.162099752e-23 0 0 0 0 0.0002896048111 0 0.0614592575 0 0 0 0 0 0 3.246792151e-06 0 0 0 0 0 0 376949.9478 0 0 0 0 0 0 9.394767696e-23 2.8357179e-13 3.436788885e-14 1.852660623e-15 0 0.0005383881441 0 0 1.153949309e-21 2.901700941 0 0 0 0 0 1.093524591e-18 1534067.527 0.03082279418 0.5716111524 0 205.1722971 0.0004394769455 71.38165657 0 0 0 3.513530841e-08 0 971153.5262 0 0 0 0 0 0.0001043003345 0 2.529302147e-11 0 0 0 0 0 0.0001201571973 0.02375202961 2.858268808e-14 1.112894509e-15 0.008199222065 0 0 1560255.989 4.646039578e-15 0 9591.477108 0 2.5331409e-13 0 0.06605602473 0 3.37500781e-07 0 8.609537154e-25 3.82318443e-16 0 0.01996720545 1.898225325e-07 43028.37217 0.1669821689 3.980180621e-39 0 3.954213991e-23 3.872149559e-18 4.236824728e-10 124343.9487 0 1831193.472 2.271604287e-10 1.761979774e-06 41.01071323 0 0 0 0 2.86330079e-08 0.002051872387 0 0.002098970768 1.288904727e-30 0.003483632146 0 0.0008556533663 0 0 0.3283787169 1.744548943e-06 3.40540441 0 2.077674088e-11 0 1.419580886e-16 11.49012938 0 0 0 0 2429.259849 1.042830368e-07 0 0 1.627891274e-08 0 9.429332948e-15 37260.28848 1250.335726 0 0 2.119512833e-16 0 0 3.040172773e-23 0 0 547160.1527 9129.155173 0 0 0 5.118760675e-14 5.616932204e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.180119542e-09 0 0 0 0 0 0 0 0.00794173997 4.777151997 15382.93412 0 0 0 0 1.145461857e-27 0 1.438013625e-24 0 2.438723128e-31 1.100618102e-18 0.0007082015481 0 2.064790875e-20 0 0 220.0268635 0 0 3.890437865e-20 0 0 1.285961105e-08 0 0 0 0 0.02750513979 0 0 0 0 0 0 2.078937395e-12 0 0 0 0 0 100.8125481 0 1.322700552e-28 1.936416709e-06 0 0 0 0 +0 0 0 0 2.092452648e-12 0 0 0 1782173.883 1.991860502e-10 0 6.302942859e-16 0 4.527838262e-19 3.136956744e-10 1.514685473e-06 731253.2271 0 6.030661538e-24 0 0 0 0 0 0 2.116941076e-15 0 0 5.590906656e-10 1.235231392e-24 0 0 0.0002566236342 0 0 0 0 0 0 1488591.358 0 0 0 0 0 0 0 4.12886159e-10 0 0 0 8.410042609e-14 7.722097981e-18 0 0 2.231817269e-06 1.753099644e-08 3.060591936e-17 0 0 0.001775898475 4688.925498 0 0 0 0 0.5273888323 2.723288886e-06 5.910916651e-14 2.718904105e-22 0 0 0 0 0 1.643859327e-22 0 0 0 678132.2945 0 0 2.634222899e-06 7.81131368e-18 3116.993422 3.982874918e-13 0 1.168545459e-11 0 0.003196195421 1147246.466 0 0 0 69.26841344 0 1333.813435 0.5972487054 0 0 0 0 0 0 0 0 0 0 11009.8813 0 0.0001466976306 0 0.005123043591 0 0 0 0 0 0 0 0 2.489927871e-08 0 119063.9574 2509.805977 0 0 0 2.397941171 0 9.353782541e-10 0 2.334234199 0 1.364662827e-16 0 0 0 0 275.2828568 1.420500936e-14 0 0 0 0 7186.629576 0 2.948736927e-14 2.895226241e-05 3.871548855 4.369482877 9.671730807e-14 18233.20778 2.443419218e-12 0 0 0 4.43195003e-15 0 65362.49628 1.470074634e-10 7.03299348e-10 4.018742495e-16 5.010975857e-11 0 2.898845283e-20 0 2631.057115 0 0 0.1029252567 0 2.727207697e-08 2.238103722e-06 0 0 0 0 2.353385963e-22 3.651876844 0 0 0.2968460232 0.04189227066 0.8288305282 0 4.515741742e-10 6.715990978e-15 0 0 0 1.084418689e-10 0 0 0 0 0 0 1.278606082e-07 4.590304634e-12 0 0.0003435567631 5.719040708e-14 0 0 0 0 38538.30719 0 0 1.241004749e-07 3.458136186e-06 3.622687756e-08 0.03889952827 0 0 0 0 0 1.315464041e-12 0 0 0 0 0 4.898292894e-14 0 0 0 0 2.757356121e-14 1842.367994 0 0 0 1.377935942e-05 0 0 0 1.143532697e-15 0 0 4.490982943e-24 0 7.66638068 0 0 0 0 0 0 0 0 0 0 0 0 2.999763564e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.701760671e-05 0 0 1.826490332e-07 0 1.08835408e-24 0 0 0 0 0 0 0 0 1.363155925e-08 9.937534738e-28 0 0 0 0 5.921218846e-08 0 0 0 0 1466.339664 0 +0 1.696831375e-22 0 0 0 0 0 262501.9057 0 0 0 0 0 0 0 0.003959509755 0 0 0 0 0 0 0 2.400007353e-05 5.515264095e-13 1.344913777e-17 0 0 0 5.38955277e-15 4893.14771 0 23.45224398 2.207638339e-32 2.606139808e-22 0 0 1.801125687e-27 0 0 0 0 9.376225468e-11 329524.9346 0 0 0 0 14460.2291 2.255167091e-23 0 48862.74526 0 0 0 0 0 0.0001517387943 0 0 0 0 0 0 0 0 0 0 5.395728881e-08 1.490838474e-18 0 0 0 0 0.06349266091 2.078217004 4161.571938 0 0 298.0822766 0 2.112872536e-10 0 2.259778343e-09 0 0 0 0 0 0 0 0 2.010772734e-20 0.1390662432 0.1896950082 0 9.117479842e-11 0 0 0.9320378457 38.15441741 35754.85835 9.067511294e-18 1.607758748e-12 0 723.3039991 1.71501277e-05 6.571020179e-08 9.342425567 0 0 0 0.0088995061 1.726813547e-09 1.242609091e-28 0 0 5.006559202e-22 0 4.706173351e-08 1.501843648e-08 4.359064512e-19 0 0 0.006569541473 4.751712286e-10 31.5815024 0 88777.2646 0 1.180948312 0 4.102060409e-24 2872.340919 0 3.59127235e-06 559.8030356 0 0 0 0 0 0.005305088948 1.1194261e-17 4.35413956e-06 0 0 0 0 0.1322072281 0 1.537390312e-11 1.819745871e-06 2.806102449e-14 0 0 0 0 7.062763281e-09 3.438161037e-06 1133.932144 2.073893042e-09 0 0 4.017061477e-17 0 2.735985311 9.929735455e-11 0 0 1.702249524e-07 0 7.158193181e-05 7.547343651e-13 0 6.731386432e-11 0 3.005982119e-06 0 0 0 0 2.398082806 0 0 0 0 0 0.01589096974 0.001376095939 4.482500623e-09 0 18158.41324 1.62100806e-17 0 357332.7764 0 243154.549 0 0 0 1327.737439 2.705201892e-27 362.0891771 0 4.945180972e-19 0 0 250.0523644 0 0 0 0 0 0 0 0 0 4.467971009e-08 0 0 1.828311721e-16 0 0 0 0 5.985953591e-36 7.422814593 1.436127277e-05 8027.61235 0 0.01740383694 0.3723805451 2.034407115e-17 0 19.56922908 0 0 0 0 0 0 1908699.172 0 2.260739553e-09 0.001442011179 0 0 0 0.3392185928 2.041937131e-14 0 0 0 6.198731392e-07 1.204595407e-06 0 0 4.935721534e-14 0 0 0 0 0 0 3349.667501 0 3.691405507e-10 1.81944887e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.161418993e-06 0 0 5.665986235e-14 0 483.2418168 0 0 0 2.421125426e-15 0 0 0 0 0 1843151.295 1.318290871e-14 +0 0 0 0 0 0 0 0 0 0 1.817730324e-16 1.282059273e-05 0 0 420.9303909 0.0001039958468 0 0 0 0 2.433445208e-12 0 0 0 0 3.689797091e-12 0 0 0 3.309378037e-05 0 0 0 0 0 0 0 0 0 0 0 0 9.700167869e-38 0 0 0 358233.9507 0 36777.12897 0 0 0 0 4.20323781e-19 1.812513172e-07 0 2.563171644e-06 0 7.215579962e-12 0 0 0 0 0.001170231248 1.734942817e-11 943.0417556 0 1.971691898e-05 0 2145.037794 0 1.940979346e-13 0 631.9598153 0 0 0 0 0 0 3.939320246e-08 0 0 2.358507373e-15 0 0 0 4.422314503e-10 0 2.651914717e-06 2.527313085e-10 123.8932846 0.1848164655 0 0 1429141.28 1.012123578e-06 2.627255585e-07 1.674532485e-05 2.000683715e-11 0 0.0001472546923 0 0 0 0 9.448361035e-25 3.102069134e-07 0 0 0 5.892637663e-06 0 0 0 0 0 0.01508716575 0 1.264660288e-15 0 0.3373530201 3.537673647e-06 930433.7072 0 0 0 1.201705498e-17 2.143932385e-14 442.3960184 0 2.840967133e-09 0 566.8148512 5.829258071e-05 0 1735.815532 0 0.06346259981 0 0 0 0.4880010395 7.86670371e-07 0 1.391507346e-22 0 0 5.806683481e-10 0 0 0 0 57.0913946 0 0 0 0 0 0 0 0 0 0 2.86505702e-19 0 0 1.96999042e-27 0 0 0 0 0 1.965158e-07 0 0 6.249267106e-05 0 0 0.2805616882 0 0 0 5.010820056e-08 4.665314758e-07 0 0 0 0.0001324343993 0 3355.606086 156.6967163 0 0 0.5703600053 1.770785584e-21 0 975.86617 0 0.0002006781246 0 0 2.433059091e-16 0 0 5.312226462e-12 0 2.591780989e-18 0 4.570483356e-07 1.730155303e-09 26.82453051 0 0 0 0.6813169412 0 0 0 0 0 0 0 3.933643645e-08 0 0 0 0 37.69950426 0 0 0 0 0 1.809265427e-11 0 1.445381148e-12 0 33.13156099 0 0 1.236461323e-08 0 0 4.164542901e-17 0.3914225998 0 0 0 0 153330.665 0 0 0 0 0 0 0 0 0 417738.862 0 3.244412963e-10 0 0 0 0 0 0 0 0 0 8.056483414e-05 0 0 0 0 0 0 0 0 0 0 0 0 2881.930298 2.106771408e-07 0 0 0 0 0 0 0 0 1.366591049e-14 0 0 0 0 +0 0 0.004389424553 0 0 63.53114373 0 0 9292.761332 1.437673428e-21 0 0 2.076331472e-14 0 127871.8252 0 0 0 0 0.001799548958 0 0 0 0 0 1.917408803e-13 0 2.780445349e-14 0 23.47716408 7.159378777e-09 2.401057341e-11 0 0 0 147.6834726 101162.2417 0 0 0.05316090983 1.010560465 0 0 0 0 0 0 0 0 8.395504272e-21 8.696152562e-17 0 0 0 0 2.591418661e-14 0 0 0 1.573850378e-15 0 0 1.37946802e-13 1.610286148e-05 0 0 0 0 0 0 0 24912.34539 0 5.548642505e-15 1.098823074 0 0 0 2.28576143e-24 5.662256121e-07 0 0 0 0.0009877043465 7398.697358 0.0004605893306 2.937687236e-11 0 1.526313562e-28 5.561612719e-05 0 132475.4447 0 0 0 0 0 866.8068047 8.168916509e-07 0.001606069106 152.7058128 0.0004270085066 5.581516568e-27 0.0005688442486 0.002674538147 0 1.646299604e-07 0 0 0 1.477635771e-11 0 2.465917503e-13 5.951757483e-20 0 0 0 0 0 1095798.531 2.183449195e-23 0 0 0.108708591 0 0 0.000619413675 0 1.556722276e-10 0 0 0 0 2.824946393e-05 0 3.855976587e-21 663446.9398 152.7436016 0 0 0 0 119983.5361 0 25.74884233 2.398294641e-12 0 0 1.590740389e-12 1.578195899e-07 0 0.0001699709973 9.709654298e-07 0 0 1.902314187e-05 0 0 8.346350991e-09 2803.306505 8.831313667e-11 1.191593006e-14 4.666015168e-15 0 19559.96922 2.654660959 2.705987027e-05 0 0 0 3.293782936e-10 0 6.644170669e-07 0 306.6169644 0 0 0 0 79273.78289 5303.929656 0 0 0 1.645484913e-13 0 0 0 7.119131178e-09 0 0 0 0 3.489805986e-18 3564.485951 0 853690.599 614118.7214 0 0 6.477116213 0 3.226386842e-12 0 0 2.481011116e-27 0 9.305708224e-06 0 0 0 0 0 0 0 7.35228258 36.94659225 0 0 0 0.0002617771232 0 5.92701923e-09 0 0 1.567871051e-18 0 0 0 0 0 0 0 0 0 8.570707552e-14 0 0 6.471946478e-12 5.356069178e-35 0 0 0 9.358376841e-05 52680.27406 0 0 0 0 0 0 2277.680529 0 0 37917.52297 0 2.069194925e-11 0 0.004208238313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.294815332e-27 0 0 0 168705.6681 1.326717077e-12 0 0 0 0 0 8.208221786e-12 0 0 0 0 0 9963.557246 0 0 1.551264394e-24 1.158386249e-13 0 0 0 4.539695932e-15 +0 3.273116967e-10 2.83919528e-08 0 528.3423667 0 0 3.105777081e-15 0 0 5.239179723e-19 0 0 0 0 3.720603596e-12 3.762358258e-28 0 3.310311194e-06 0 0 5.791567271e-05 0 0 0 1.35404295e-25 0 3.70256582e-16 0 0 0 0 0.003909181964 0.0003225624578 0 0 3.518420964e-08 3.750138992e-26 0 0 0 0 5.259374124e-10 0 0 3.970588506 0.0004914826616 0 1023603.221 7.187592654e-09 0 0 0 0 0 0 8.036713477e-24 0 0 0.3115300506 2.091174725e-05 1.29616284e-06 0 0 4.93377671e-15 0 0 0 2.046396884e-09 0 410.7709546 0.0001699812401 0 0 0 0 1.136549218e-09 6.751538929e-10 0 0 0.001682488524 0 1.19891384e-16 2.968859785e-12 0.0006675837119 0.002670016168 0 0 0 5.807389412e-11 2.200233181e-21 0 0 0 0 7.448137453e-12 95.30626687 0 0 0 0.001298262423 0 0 0 1510.220927 0 2.385947043e-08 0 2.373723813e-13 0.04564741905 0 0 97804.21609 0 232.9148815 0 0.002024324358 0 0 3.947090045e-11 0 3076833.922 105.1211984 0 1.571587498e-24 2.396573554e-25 0.000818467823 0 0 1.603200692e-28 0 0.3390770598 0 0 0 0 0 0 0 0 0.01353024449 8.41000931e-26 1.289607529e-12 2680.930871 0 186473.1447 61861.79867 0 0 0 3.004159339e-07 30.85481389 2.906046156e-13 924.4691955 0 2.868645287e-15 13631.35252 29.57141204 0 6.695350591e-05 0.01355177677 0 0 0 0 0 0.01510382977 0 0 11106.57984 1.65333485e-13 3.551646996e-10 2.842320464e-28 1.230117305e-12 0 0 552086.7453 0 4.209475435e-11 0 0.01735265161 0 1209.819731 0 3.546411588e-24 0.0003440651818 0 0.0003315548633 0 0 5.132649938e-22 0 0 0 0 0 1.198276681e-15 3.63230965e-05 0 0 0 0 3.698926306e-10 0 0 5.837372012e-24 3.201562565e-06 9.459192467e-20 643.8653372 0 0 0 0 0 4494.853568 0.04541396595 4.428632956e-15 0 1.414696616e-14 0 0 0 3.813041319e-18 0 0 0 915570.9896 0.0001054993802 0 0.1137668459 0 0 0 0 0.9422294702 0 0 8.830377798e-16 0 0 0 0 1.361020396e-15 0 0 0 0 1.533885819e-14 1.892985291 0 7.223310088e-13 0 0 5.909959413e-25 0 0 0 0 288.640913 0 0 1.164500204e-08 0 0 0.01466104001 0 0 0 2.737368834e-09 18.39988181 4.469227586e-09 10653.35899 0 6.831315093e-26 3.183177887 0 1.532354062e-14 0 0 0 0 0 0 6.030973349e-07 0 0 3.130984919e-13 0 0 0 0 0 0.0009816562871 0 0 0 0 183293.7773 0 0 +0 8.849904252e-05 0 0 1.656977928e-08 0 0 0 0 0 0 0 0 1.037763399e-12 0 0 0 0 0 0 1.983093961e-10 0 0 0 3.549331454e-14 0 0 0 0 0 0 1.925352466e-20 0 0 2.170926257e-06 0 0 1981315.031 8.48427043e-05 0 0 0 0 0 0 0 0 0 0 0 0 3.123210516e-09 0.06264496327 1.276258395e-24 0 1244.298853 1.307522231e-10 0 0.6033307743 0 0 1.358376033e-30 0 0 0 0 0 2.693118523e-08 0 3.490897668e-13 0 3.320865861e-12 0 0 0 0 0 0 0 0 0 0 44875.27358 0 0 4.48882779e-17 6.724518021e-11 6.847014927e-20 0 0 0 0 0 0 1.269543342e-16 0 47.44845294 351641.1393 0 5.897500938e-11 0 0 14.08298824 0 0 3985781.152 1.689635676e-05 22828.12824 0 0 0 0 0 0 227900.2734 0 0 7.701474827e-23 1.046781002e-27 0 8.70653062e-14 0 2.736608195e-08 41853.6663 5.705541505e-11 1.396154798e-21 0 5.277893122e-05 0 0 8.579562279e-15 4.322064282e-22 0 0.01283701584 2.925941963e-09 0 3.984117053e-05 0 1.430695528e-23 0 0 7.629821957e-13 0.03362092188 0 1.531977517e-18 0 3.341055111e-11 1.396734135e-17 0 0 0 0 2.945877888e-13 2.792221123e-10 2.198211439e-10 0 1.065804568e-12 0 8.898367959 2.287368991 0 0 0 0 8.844727709e-26 8.564433677e-29 0.0007568598914 2.83337656e-09 5.859099318 0 3.327772912e-12 0 0 4.853557721e-31 0.0127467294 0 0 4436.477668 0 539.9043146 0 0 1.278762962e-16 0 0 0.001108033272 2.557576738e-15 0 0 4.152510436e-06 1.173466324 6.159791643e-08 2.097612097e-11 20836.8174 1.773365669e-17 0.0003615051855 161570.187 0 0 5.2422891e-10 2.252287822e-10 0 0 1.041703701e-30 1.098297332e-22 0 811.1580282 0 0 0 0 0 2346.533137 339578.8643 0 0 0 0 0 0 0 0 7.302789522e-09 5.231052377e-13 2.87613484e-11 0.0003006902922 7.883341038e-13 0 0 0 0 53929.00183 1.442333766e-26 2.340806326e-08 0 0 0 204255.2029 2.232900683e-26 0 0 1778.561301 0 0 5.080768057e-06 0 0 0 0 0 0.5126217433 0 0 32368.57528 0 4.048398264e-07 0 6.368030472e-12 0 0 0 0 3.158731181e-28 0 0 1633.933202 0 0 0 2.113815742e-05 8.70584756e-09 0 0.0009915101314 0 0 1.280941107 0 0 0 0 0 0 0 0 0 0 0 6.80723053e-05 0 0 0 0 3.694158451e-07 0 2.816369825e-18 0 0 0 0 98733.75483 +0 0 0 3.074608902 0 9.547756309e-31 0 0 0 0 0 0 0 0 3518.368098 0 0 0.001126535886 0 0 0 0 0 0 2.563010959e-25 6.317105596e-09 0 4.455820703e-26 0 0 1.129979044e-09 0 0 0 820.751046 0.002034014194 0 2.886377706e-16 3.691025991e-14 0 0.0008617861149 3.033233499e-13 0 0 0.02064310323 0 0 0 0 0 0 0.02534353374 0 0 0.0002247107483 0 3.534575428e-05 0 0 2.344952514e-09 0 0 0 0 0 1.265586154e-13 0 3.880382698e-11 0 0 0 1.334556677 0.295299335 0 0 2.652535578e-18 3.970539962e-09 34.13108437 2.248588975e-09 356.4960178 0 0 828.8650095 2.78622982e-11 0 6.405104132e-06 8.137225304e-18 0 0 0 0 0 0 0 0 5.393911359e-06 0 0 0 0 0.0007976505935 0 0 0 0 0 34795.19648 5.05158046 0 0 0 5.163025242e-08 9.136972005e-08 9.080736482e-12 2.355660769e-05 0 0 934.7917692 0 0.8043991844 0.4946412176 5.740849734e-28 0 0 0 1.027339766e-20 0 0 1.368985968e-13 0 5.699413371e-10 1.463960542e-30 754.2184791 0 44.46163447 0 6.833011561e-10 0 7.035723328e-13 0 6.977907993e-09 0 448753.2357 2.426017334e-14 3.250888026e-10 3.280310281e-27 0 3.339758166e-23 5.704874249e-10 0 2.226174047e-09 4.214815113e-05 0 0 8.759685044e-10 0 2965.44787 0 0 6095.218377 0 3.738903203e-32 0 0 0 0 0.002826318223 0 0 0 1.407299796e-18 59163.81197 0 4.889551457e-31 0 3.475490855e-22 0 6.572190552 0 0 0 0 0 0.0002412783027 5.641767219e-07 0 410001.5618 4.398023474e-16 0 0 4.781309289e-12 0 1.04309308e-05 0 0 0 1.501737969e-16 0 2.02242817e-12 0 0 4.151280192e-14 1.532828777e-21 0 0 0 0 0 2.196649708e-28 0 0 0 3.950100192e-24 2.506355586e-06 0.0004736037959 1.203129369e-06 955.6300837 0 0 1.264819356e-09 2.083093333e-11 0 0.013356713 0 0 0 2.886098828e-10 2.59760485e-07 0 114417.1818 2.015196092e-14 86113.6553 0 0 0 0 0 0 0 0 0 0 1.029380491e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.724233766e-07 0 0 0 0 0 11560.7303 4.041205358e-05 0 0.0002287217284 0 0 0 0 4.332955061e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.723783017e-15 0 0 7.836281824e-13 0 1.048234393e-11 0 0 0 681301.178 0 0 0 277.0757069 0 0 2.864946552e-13 3.967496818e-29 9.671762558e-21 0 0 0 0 0 1.064185109 0 0 1.032366842 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.614064119e-37 6267.760422 0 2.560425934e-13 0 2.918017664e-13 0 0 3.46109724e-09 0 0 0 0 0 0 1441.164941 0 0 0 0 0 41847.23943 0 0 9019.238341 0 0 0 0 5.628030292 0 0 0 1.338115712e-06 108.2933481 0 0 0 0.0001278103958 0 0 0 0 8.546307651e-23 0 3.643632195e-05 0 117.1527342 0 4.785439102e-07 0 0 0 0 0.01373145699 2.296051774e-05 11961.92917 0 6.025854367e-09 1.370210634e-16 88.73688147 9.964895675e-12 5.060916564e-13 140.2820193 9.411115043e-21 61.48367878 0.001672816085 0.003400812962 0 1.981888387 0 3.18076198e-08 1.253343744e-09 0.000822655938 2.960053516e-09 0 0 2.703895725e-10 0.3813980104 8.72265425e-21 0 0.0002276137721 1.595995527e-13 0 388.0607399 0.08615596431 0 9.616664946e-28 0 0 0 0 11093.41912 6.191590722e-12 2.824717436e-23 5.384405115e-09 0.0003402080945 0 4.441911725e-07 0 4.304125157e-19 0 0 6.826593381e-06 0 3.912161535e-06 1984015.073 0 5.139338504e-06 631022.5084 0 5524.937862 0 0 0 0 2.196122259e-20 0 0 48654.13903 7.666922859e-25 2.712988888e-20 0 0 0 0 0 375775.0817 0 0 0 48.32946839 5785005.008 0 0.01174402561 6.346612058e-19 2.231038652e-17 0 0 5.549107738e-15 6.779287705e-21 0 9.41209034e-06 0 158290.4482 0 47.40914736 0 8.624090743e-13 1.760182004 48319.78841 4.468939635e-08 0 0 0 0 1.085305987e-08 48125.9439 0 3.315992592e-08 0 0 0 3.0368083e-26 0 0 0.0001699142808 0 83.70012727 0 0 0 0 7.552526342e-07 73.40048857 3.865056613e-11 0 0 142330.1956 0 0 0 1.943349904 0 0 0 0 0 0 1.930833901 0 0 0 0 0 0 0 0 0 0 2970426.101 2.097318727e-06 0 0 0 0 6.929317852e-17 0 0 0 0 0 0 0 0 0 0 0.000815945394 0 0 0 2.670842374e-11 7.234468045e-06 2.039358579e-07 9.469276765e-12 0 0.002371147232 0 0 0 0 2.540273019e-11 0 0 0 5.186988448e-12 5.530201178e-23 0 8650.966508 9835.990505 0 0 0 2.78506954e-23 2.137830051e-07 0 0 0 8.546102701e-12 0 1.559775346e-08 7.701495814e-13 0 0 +0 0 6.237005744e-05 0 0 0 0 2.121210273e-20 36454.50488 1.685184746e-15 2.07216441e-14 0 0 0 0 5.071471694e-05 0.0001293849173 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.397006882e-26 1.102552413e-14 0 0 0 0 0 0 0 0 0 0 0 369537.0982 0.009217674171 4.55555661e-26 3.920568166e-06 0 0 0 0 0 1.588782912e-21 0 0 2.566816344e-13 9.935649823e-13 0 5.67261422e-22 0 5.437707311e-20 0.1138680617 0 8.227488141e-33 7.22059236e-11 1.542888277e-21 0 2.34293523e-09 4.225354932e-13 0 0 0 2.468540789e-12 8.953840596e-09 0 0 9.904995585e-16 0 8.309762623e-24 0 0 1.983890957e-16 0 0.0006145944864 1.688616877e-37 0 0 0 361124.5054 0 4.753072857e-14 4.466381852e-19 0.04728872202 1.240943757e-07 0 5.5140544e-07 0 4.811993945e-09 1.695848487e-16 0 0 0 0.07342981336 1.464279565e-12 4.854218755e-10 1.626252394e-30 0 0 131.3281569 2237644.983 0 0 3.815498744e-22 0 0 0 0.1591543447 1.903605203e-12 0 1.081807886e-08 0.01383845848 0 0 2.707830626e-13 5.322590263e-06 0 0 1.188180511e-12 0 2.708602756e-18 0 0 0 40.18877745 0 0.2360291253 3.918600389e-08 0 0 0 2.654322132e-06 9.473592497e-07 0 0 0 0 0 45012.16085 0 3.183384333e-09 0 0 4.65060419e-18 0 7.089219086 0 2.724339125e-10 0 3.758314523e-05 0 3.873910909e-26 1.900756085e-18 0 0 3.086954628e-18 0.007329492247 0 0 1.013093594e-17 1.147168886e-13 0 1037.151583 81163.90143 709990.7473 3.525717712e-14 1.308960252e-06 4.511499718e-08 5215.2402 0 0 0 0 0 3.500863477e-10 0 13086.04609 0 1.275619136e-15 0 1.284968398e-10 0.004042808263 4.498688104e-13 25.92912727 0 0.3333525466 0 0 0 0 1.279091961e-17 3.096819378e-24 0 0 0 14205.15395 0 0 1.363184706e-09 0 0 3.961411126e-09 0 6.583244398e-06 0 0 0 0.006946349577 0 0.003213777643 0 0 0.0003077720641 0 0 0 0 0 7.774519415e-10 0 0 0 0 0 0 1.050697177e-10 0.02042620038 0 0 0 221486.1942 0 0 0 0 0 0 0 6.131916803e-08 3.262139754e-15 0 0 0.0007532896263 2.150814748e-09 0.1352329987 11.61088766 0 0 0 3.282628114e-06 0 0 0 91477.89215 0 0.002503476442 4.433011188e-08 0 0 0 0 0 0 0 0 0 0.002352551041 0 0 0 0 0 0 0 0 0 0 3.294025114e-12 0 0 0 0 0 0 2.04709559e-27 1.086199087e-07 2.595442147e-08 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 9.946057036e-27 0 0 0 9.315202072e-13 0 0 0 0 0 0.0107207238 0 0 4.460498742e-08 0 0 0 578180.5783 3.041073317e-16 0 8.607779317e-06 0 0 0 0 0 1.526507227e-09 0 0 0 0 0 0 5.981269099e-11 3.999644113e-15 0 0 0 0 5.857997638e-09 0 0 0 1.143309227e-10 0 0 0 233853.9161 0 0 0 0 0 0 0 576.4211318 0 0 4.392057961e-11 5.2559088e-14 0 0 0 0 0.1812882637 2.818435767e-24 0.0003526938035 0 3.104559991 0 2.606007034e-07 0 5.716420867e-10 2.080352245e-12 7.182108039e-05 0 3.236380706 0 0.0005557786135 1.20229151e-07 7.999122703e-24 9.17559761e-16 6.730558049e-11 0 1.198006878e-06 0 0 0 0 0 0 2.860703479e-11 6.444910581e-15 2948632.345 32331.42059 0.0004673583999 0 0 0 0 140.1386015 0 3.784529861e-11 1.094100706e-14 3704.005452 0 6.681745032e-05 0 0.001759917436 0.1087180709 0 0.01617245457 0 9.934505414 0 2.620888565e-19 0 0 0 1.031360363e-17 5.633404416e-06 1.13012961e-05 35.15152643 0 0.007185928933 0 0.06238969385 2.896717948e-15 0 0 0 0 1.828950944e-12 0.01245746492 0 0 0 11224.34951 1.130999712e-07 0 6.109773962e-06 0 0 1.789403418e-12 129.0667013 1.149386349e-13 0 0 3.208290738e-25 0 1.329329584e-07 0.002537553548 1.470868031e-19 0 2.867240663e-05 0 0 1.623422335e-08 0 0 0 0.07846561058 0 0 0 0 4.394494496e-13 0 0 0 0 0 1.169849757e-12 0 0 8.514804983e-09 0 2.486041103e-05 2.149196949e-11 4.46289187e-07 0 0 0.3051913453 0 0.007448505286 4.743842131e-14 0 0.004823993408 0 4.458326873e-21 0 0 0 0 16606.65961 0 10689.18613 2.191058213e-17 2.056527131e-13 3.245330841e-14 0 4.023912946e-06 155.3485526 1.959874164 0 0 0.002287806619 1.110132905e-09 640943.7674 0 1.752959269e-13 7.362044473e-06 0 0 9.384112618e-08 0 0 0 2.325177124e-05 0 0 0 1.974601761e-07 0 2.524683292e-05 0 0 2.461079178e-19 0 0 0 0 3.998283696e-11 0 3.771720731e-08 0 1.16473183e-18 0 0 2.344743455e-09 1.370565052e-08 0 0 0 0 2.072768114e-08 0 0.000126332941 0 8.59990017e-13 0 1.578565928e-10 1.977096291e-13 0 15.12520261 0 0 0 0 59499.02346 0 517901.5787 0 3.930630653e-05 0 0 1.290245208e-12 9.179197132e-25 0 0 0 0 0 0 0 0 1.357839994e-19 2.562730441e-14 0 0 0 84915.9599 0 0 0 0 0 +0 0 0 1478.117012 0 0 0 0 0 231.8580254 1255.198053 3.236107514e-14 0 0 7.005177873e-34 0 0 0 0 0 0 0 4.703969791e-10 0 16.06776199 0 0 0 0 0 4.015398092e-14 0 0.134738396 0 0 0 0 0 0 3.637458654e-14 2.819779825e-12 0 0 0 0 0 0 0 96.33615571 5.814464204e-18 0 0 0 0 0 0 0 0 0 7.165586794e-16 0 0 0 5.950164401e-25 3.115584486e-06 0 0 0 1.100161487e-12 0 0 2.450742394e-23 0 1.063823703e-05 0 0 0 82263.31779 0 0 8.524185004e-16 0 0 0 0.0004124294777 0 0 0 0.6544309307 0 0 2.867254243e-06 0 6.638505066e-15 3.199695797e-13 0 0 0 0 0 0 1.420218264e-22 0 0 0 6.467691365e-15 0 5.884209293e-06 0 0.06432603967 0 0 62006.96748 0.09422807743 0 3.627640432e-18 3.092548259e-09 0 1.849838612e-28 0 4322.193249 1.341759558e-07 1.798206192e-15 1.012790533e-05 7.215035751 0 8.994244921e-15 0 0 0 0 0 0.0003917094404 0.0001756487179 0.07821652532 0 6.370902208e-11 4.691006609e-11 2.67000404e-21 0 0 0 2.161664637e-08 0 0 0 2.884777e-05 719876.9334 0 0 0 0 0 0 0 0 0 0 1.089212615e-10 0 155561.1722 6.192472133e-10 0 3.410681618e-19 4630.006094 1463.430921 2.396533742e-32 0 0 0 0 427250.4336 4.522620424e-20 1.003424059e-06 0 0 0 0.03032185877 1.095087195e-14 7.047786244e-08 0 0 563753.0381 6.839073638e-05 0 19305.40041 5.319005665e-14 1.228052884e-13 1.442563845e-21 0 0.02032190638 0 0 0 2.182903349e-09 0 7.447797844 0 0 0 0 2.309651761e-13 0 0 1.298476709e-16 4.287813608e-18 3.520852118e-12 0 0 1.315272825e-06 0 0 0 0.0003382104432 1.838064342e-26 1740.141671 4.121687051e-10 0 0 365.1129094 0 0 0 4.662315686e-28 1101836.962 0 1.783872285e-13 0 1.007800903e-09 0 2.556318409e-28 0 4.33405758e-22 0 0 0 0 0 0 0 0 0 0 5.649555547e-25 0 0 1.136601123e-18 567181.6555 0 0 0 0 0 0 0 21189.01204 0 0 0 0 0 0 0 4.24609832e-15 0 0 0 0 6.544119526e-06 2.289053091e-18 0 3.885489562e-06 0 0 0 883726.3348 0.006655968727 0 0 0 0 0 0 0 0 0 0 0 1.609185925e-06 7.257003456e-05 0 5.183160968e-15 0 448.2171025 8466.934133 0 0.03979801477 0 1.270176352e-26 0 +0 0 0 0 0 3.803945462e-12 164977.5171 1.353014017e-18 0 0 0 0 0 0 0 0 0 0 0 0 207.4362914 0 0 0 2.444625785e-25 0 0 9.803244279e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.354689611e-37 0 0 863.9017325 0 0 0 0 0 0 0 0 0 0 0 0 1.883807285e-12 0 5.083799842e-12 0 0 0 3.457362806e-15 1338.573094 1.04397675 0 0 1559.305719 0 0 2.832371509 20.89057947 0 0 0 0 3088.262051 1.31034245e-05 7.0692371e-18 105779.0013 1.459336039e-05 0 1.524878067e-21 0 4.032402315e-17 0.001633233697 2.39840342e-18 0 0 7.725334623e-15 3.257840087e-15 0 2.588573479e-15 0 0 2.960231067e-17 0 0 0 0 1.152908214e-27 1.618257896e-05 164.3218462 1.196185879e-14 0 1.80269912e-14 3.024592281e-06 0 1.124693156e-11 0.02736214723 0 2.334916496e-23 0.0001637996404 1.656675216e-08 0 3.864499152e-26 0.0006324319484 0 0 0 0 0 0 94778.47165 284141.6043 8000.885552 0 0 778516.199 9.446486596e-07 5.022039964e-18 5.754871593e-19 0 1.733706035e-36 0 8.841930967e-12 1.383579402e-07 1.043201146e-13 7.877159506e-23 3.930746389 0 1.255691383e-28 147038.9042 0 1.877851615e-18 1.622885664e-06 0 0 0 9.290326802e-09 0 0 0 0 0 0 0.004367703329 3.947685737e-20 426880.8336 0 0 0 0 0 4.61470593e-23 0 2.228069178e-06 7.622397711e-13 0.1816208781 0 1.027647296e-24 0 23229.2976 9.190903884e-09 0 3.428686888e-20 0 4266602.725 0 0 0 151.1410204 0 0 1824160.498 0 0 0 0 9.054518289e-11 0 751.4279183 0.0003703101655 0 0.0005898001646 0.005614105878 80.57346228 2.542591706e-05 0.002950141713 2149.020487 0 0 0 0 0 1.016518033e-17 0 0 0 9.193340261e-12 2154316.205 3.736347662e-28 0 0 0 5.22204017e-16 8.981804425e-34 1.81821564e-06 0 0 3.100825885e-10 0.007397664266 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8297651305 0 45581.76503 1.045616641e-20 0 0 0 1.83426075e-14 0 1172.794288 0 0 0 0 0 1.32524283e-25 0 0 0 0 0 0 0 0 0 0 3.099271402e-33 0 0 0 0 0 1.451140169e-25 0 0 0 0 0 0 1.432177894e-20 1.035573031e-22 0 0.0001500654087 0 448199.532 0 3.946536587e-07 0 0 0 0 0.2851639098 0 0 0 360552.5106 0 0 1.063506797e-10 0 +9.40577021e-05 14.00761651 0 0 0 0 0 0 0 0.06806951801 0 0 0 0 3.717217884 0.004614806951 0 1.952250896e-12 0 0 0 0 0.002998455198 0 0 0 0 0 4.900942391e-08 0 878861.6142 0 0 0 7.511646997e-23 1.068915566e-17 0 0 0 27.93577771 0 0 2.966303593e-15 0 0 245.3036952 0 0 443.8129681 0 0 1.69765986e-10 5403.503031 3.40839658 0 8.762082e-12 0 0 0 2.569539589e-05 0 0 2.041472029e-31 0 0 0 7.386212406e-13 0 0 0 0 0 5.385130645e-10 0 0 0 7.008767916e-16 1.517862098e-27 4.193074936e-06 1.48969608e-28 0 0 0 3.040311526e-13 7.224865107e-34 0.1097991625 1.126997996e-09 0 143.0618933 1.178605669e-05 5.303008423e-06 0 9.876448455e-08 0 3.26534385e-06 6.9049612e-13 0 1.608655399e-05 0 0 0 7.350117721e-12 3.238404014e-23 0 0.0002585430852 0 0 4.213082905e-17 0 0 0 0 0 0 6.966879489e-09 1.024769917e-11 0 190.0198759 1.516736981e-06 0 0 2.556573616e-07 2.529107568e-10 0.08426857089 0 0 6.433955863e-49 0.0311032064 0 6.999293408e-06 0 4.572502264e-10 4.652903278e-05 0 0 0 0.6609476317 0 0 0 1.322443946e-13 0 0 0 0 7.113114054e-13 0 0 0 3.29365179e-10 0.002978857245 0 2.923694028e-28 1.68630835e-40 0 6.722945349e-10 3.05868705e-09 9.224991376e-07 0 0.01150656976 0 0 3.788371697 0 3.814230136e-07 0 280.8961034 3.191184076e-08 0 0 0 0 1.674093977e-09 0 0 5.566536549e-10 0 0 186.0463928 0 5.835257287e-15 0 6.614785649e-22 5.410943462e-11 2.804911845e-12 0 0 3.209634574e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 3.658101056e-09 0 186901.8297 0 0 0 35.88725065 0 0 0 0 1.998606027e-25 0 0 0 0 0.01251243058 0 0 0 8.93111019e-37 8.151663054e-10 0 0 0 0 0 0 20.95854213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.681171273e-22 3.241470906e-14 0 0 0 0 0 3.95124692e-12 0 0 0 0 0 0 0 0 0 0 0 0 3.087735563e-30 0 2.00809868e-06 1.334602834e-17 0 3.321674193e-14 0 0 1.519606747e-09 0 0 4.969550136e-06 0 2699.579408 0 0 0 0 4.195172447e-12 0 0 3.143513925 0 0 0.02933659084 0 0 9.094200795e-19 0 4.945587772e-15 0 0 0 +0 0 0 0 0 1.250096526e-22 0 0 7.655218733e-10 0 0 281695.2111 0 0 0 0 6.06277297e-08 7.706942665 0 0 0 0 0 2.136819626e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 2.138234079e-24 0 5.058579613e-14 0 0 8539.689738 0 0 0 3.536547896e-13 0 0 0 0 4.717514179e-06 0 1.011748802e-14 0 0 10923.94018 4.578613969e-08 0 0 2.131015501e-20 0 0 0 2.786917315e-18 0 0 0 0 1.816154703e-19 0 1.131429983 0 17.63090444 0 4.083136191e-07 1196077.088 2.038251811e-11 0 0 0 0 4.773820732e-30 7.702393697e-17 0 83.07415556 9.934430901e-17 0 0 1.104478762e-15 0 0 102932.737 0 0 0.01956022886 0 0 0 0 0 0.01110996021 1.342404431e-06 8.121102676e-24 0 4.274663086e-16 6.223973958e-13 0 451092.4006 159.0285795 0 0 0 613278.8104 0 1928393.81 162570.4126 0 0 0 997242.9394 692.4227409 0 10.89171035 0 0 0 0 0 0 0 0.007533687506 1.6295331e-20 1.602830724e-24 0 9.041903705e-11 0.7877868008 0 0 0 7.24965645e-13 0 7.346335975e-07 0 0 21965.6255 0 6.535820608e-33 1.426903006e-12 0 3.885549668e-07 0 4370.059859 0 0 3.775658938 0 0 0 2.027804054e-11 0 0 0 0.5799166293 0 0 7.898489408e-13 0 0 0 0 0 2.098743136e-29 2.575354247e-05 2.28961052e-10 0 0.03776517312 0.5094316494 0 0.007230155468 0 0 4.754838413e-19 0 0 0 971215.4705 3.020486458e-13 0 0 0 1.642411151e-13 0 0 0 0 0 0 9.678256468 1.650053636e-16 0 1.740910345e-07 9.674288913e-27 0 0 0.006593441751 8.959080238e-05 0 2.229896987e-10 387.8678964 2.515424222e-10 0 0 4.555765972e-06 7.675609153e-08 9.891921134e-27 0 1.263820496e-08 0 0 0 2.509483275e-27 256804.6215 5.967270047e-08 6.269283954 0 0 0 0 5.925972513e-12 0 1.715827937e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.65232577e-41 0.0001375690561 0 0 0 0 2292.708168 0 1.816495925e-06 1.056532443e-09 162984.7474 5.109686775e-06 4.966014496e-09 0 0 0 0 8.082368281 0 0 0 8.887314658e-09 0 54692.499 0 0 0 0 103796.4679 0 4402.629234 0 0 0 8041.004659 0 4.735073219e-11 2.065326996e-08 0 0 0 0 3.786814699e-16 0 3.498936568e-16 0 0 0 0 0 745.2037817 0 0 0 +0 0 3.968520801e-24 0 0 0 0 0 0 0 0 0 4.395933856e-11 490829.2908 6.927392889 0 0 0 0 0 0 3.369724588e-13 0 0 0 0 0 0 8.489910698e-09 0 1.005074423e-05 9.867388681e-13 4.05921754e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.780549231e-20 0 0 0 0 0 0 1.436085379e-05 3.075313104e-12 7.053512808e-07 0 199.2912808 0 0 0 0 1.44670156e-06 3.005121444 0 0 0 0 0 4.982010777e-15 1.086379919e-07 0.006774530526 1.057791499e-05 0 0 0 0 0 0 0 0.1621337397 0 0 20.04153155 0 222432.8408 8.701182705e-27 0.001052456581 0.5785899335 0.01293849915 0 0 0 0 4.016305273e-17 0.2403600829 7.968616595e-07 3.748942802e-06 0 1.628692904e-14 1.966967141e-05 1101743.592 5421882.862 0 1.782458888e-09 0.2792764884 0 0 0 954.211286 23.94693854 1.474980106e-19 0 0 0 39632.67951 0 2.132173017e-36 2.892059303e-10 1.457917292e-17 0 0.0007427324746 0 2.669737444e-09 0 3.376887222e-13 0 0 4.402270805e-15 0 2.821869073e-18 1.724414037e-08 0 0 4.463674278 0 2.547384663e-08 0 1038.751398 0 1.709059406e-26 3.738370117e-05 4.068395689e-08 0 0 0 4.956927223e-18 0 1.690939793e-16 1.586804734e-23 0 0 2.514858608e-12 0 2.304097495e-20 0 0 8170.349006 1.958015323e-10 0 0 1.177058127e-14 1.184666507e-09 241640.9635 0 1.135506765e-15 0 0.001080897405 0 0 1.914950631e-07 3.620178177e-13 0 0.002002981205 1.632787875e-06 0 0 0 0 559152.1909 0 0 1.376620467e-09 1.484066426e-09 1.046122976e-10 6.405234796e-10 0 0 4.992114884e-06 0 0 0.009852103897 0 0.0002086342247 0 0.06228583049 3.877222726e-06 0 1.535568366e-16 0 0 1.10618135e-22 3.915160424e-10 0 1.058334596e-08 0 0 0 0 6.098410043e-13 0 0 0 0 121908.6886 9.58982752e-11 0 0 0 5.132426312e-28 0 0.05512699571 4.809977799e-07 0 1.090719251e-05 2.059525019e-14 0 0 0.2581111074 0 0 0 0 0 1.635466937e-22 0 0 4.783257365e-25 5.107588493e-21 5.536770222e-10 0 0 0 7.377545772e-12 0 0 0 0 0 259444.0267 2.591287577e-16 0 0.1188968202 0 0 0 0 1.896517008e-20 0 0 0 0 0 0 0 0 0.1045815404 0 0 0 0 2.487228419e-18 0 0 0 0 0 0 0 705.4316982 0 0 0 1.655475562e-31 0 0 0 0 0 0 0 0 0.0393183274 4.466465278e-09 +0 0 0 0 0 0 7.145423027e-24 0 0 2524446.889 0 0 0 0 0 0 0 0 0 0 0 0 5.265839837e-10 0 0 3.116698389e-12 0 1.128452105e-30 0 1.041855453e-16 0 0 0 0 0 0 0 0 0 0 5.976395269 0 0 2.712222714e-14 8.8367847e-13 0 0 0 0 0 0 0 0 11499.24039 0.09929331389 0 0 0 1.658554904e-27 0 0 0 0 0 5.159921087e-14 0 0 8.230368064 0 77.62177033 0 0.0009491802739 0 0 0 0 0 0.0009590433478 0 0 5.824326089e-07 0 1.128935511e-14 0 0 3.897467375e-12 0 0 0 2424.980656 0 0 0 0 0 8.189101901e-08 0 0 0 3.948662962e-19 0 0 0 1.55218644e-11 0 0 0 0 4.91909622e-16 1.658430655e-20 1.887048709e-14 0 0 0 6.625232387e-10 0 0 0 5.206357142e-05 0 0 0 7643.141173 4.796015305 0 4.000403608 0.01946737459 0 62.64349804 472.6643863 0 2.409857391e-14 1.598875313 2.438310606 0 0 0 0 0 0 0 7.022104748e-12 0 1.012005598e-12 2.593933158e-30 0 0 0 0 0.08257839073 0.0003528777066 0 1.74066781e-09 1.703429985 1.866759235e-29 0 0 0 3.481510674e-28 0 0 0 1.536029486e-22 0.0001131004974 0 0 0 0 0 1.97196882e-16 9.833854607e-13 0.03469529253 0 0 0 0 4.756654782e-09 0 8.571199701e-06 0.001889027069 9.699129424e-23 0 2.918997058e-11 3.79884201e-06 0 0 0 0 0.01109198095 5707.249791 0 0 0 0 0 1.004599662e-09 1.496141414e-11 0 2.04996981e-09 1.117901809e-30 9334.817522 0 0 0 0 9.085743213e-07 0 1.387847984e-12 0 0 6.050331001e-05 0 8.888702869e-14 0 0 0 0 0 0 0 0 0 0 0 8.145530563e-05 5.053495619e-15 0 0 0 0 326947.0049 0 0 0 8.765311975e-14 0 0 0 0 0 0 0 1.394224126e-25 0 0.002833539565 0 0 0 0 0 0 0 0 0 0 0 0 1.273756349e-11 9002.869716 0 0 0 0 1.058467762e-12 0 4.706240303e-16 0 0 0 0 0 2.977320509e-11 0 0 8.36486531e-14 0 0 0 0 4.429432206e-11 53.53578791 0 0 0 0 0 2.654568025e-25 2.064504699e-14 0 0 0 0 0 0 0 0 3.130381492e-26 0 1.953545566e-16 0 +1.37520831e-07 0 0 0 3.510731267e-05 0 0 0 0 0 2.316757501e-07 0 0 0 0 0.2805021717 6646.272886 0 0 1.169238102e-15 4.881289697e-12 0 0 0 2.080191532e-09 6.44673835e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.814502673e-09 8.721067646e-11 0 0 0 0 0 0 7820.930752 0 0 0.001101970695 0 0 3013.962279 0 0 0 0 5.824003082e-14 0 0 3.063470098e-10 0 0 0 0 0 0 0 3.154827477e-12 0.02468203326 2.990181247e-18 0 0.01049369149 2.076818954e-12 51.27066204 8.963573412e-26 1.367979401e-14 0 0 0 0.09712093279 416449.1332 8.250372995e-07 4.721881586e-21 0 0 2.088466519e-14 0 11.89048579 0.3801089425 0 0 0 0 0 1.255033739e-05 0 0 0 0 0.1247583169 3.945785186e-20 0.00320168982 8.107627055e-15 0 0 3.91259148e-08 0.04198157032 9.195599338e-26 1.499102226e-10 1.319178874e-11 0 0 0 1.183722326e-17 7.105430989e-05 0 0 0 0 1.993903279e-10 28642.14536 0 7.482855424e-13 1.132657575e-15 6.430533549e-10 2277.692847 16.37541837 0.7002500371 1.871143088e-13 0 615.8791454 0 0 0 0 0 0.7598472769 0 0 19351.41876 0.7165297716 0 0 0 1947362.927 0 0 1.571947037e-10 2.996722104e-09 0 0 0.02898827021 4.40391377e-08 0 0 0 0 0 8.103262616e-21 2.300886796e-17 0 0 0 0 0 0 2.981438398e-24 0 0 7.02631969e-06 0 3.251436213e-21 0 0 1.258184326e-22 5.20453867e-16 0 5.479461003e-09 0.02309768201 0 0 0.00840594256 179.2586948 21856.7568 0 1.329555258e-23 0 6.592986895e-19 0 0 1.623571135e-26 0.3747021043 0 0 1.591513721e-08 0 0 0 0 3.817539826e-09 1.730326104e-17 0 0 0 1.147497326e-11 0 0 0 0 0 0 0 9.493684897e-10 0 0 2.229156777e-22 0 0 0 0 0 0.0002825002399 5.715098169e-06 9.51136941e-15 169185.2464 0 0 0 0 0 0 1.480845535e-22 0 0 0 0 0 14408.14145 3.688625544e-15 0 0 0 75822.74957 0 825060.7298 0 0 1.488615427e-12 0 0 0 0 0 0 0 0.002008312542 0 0 0 339920.4189 0 0 0 0 0 0 0 0 0 0 0 3.074186707e-27 0 6.951459616e-10 0.0594125105 0 0 0 0 3.178367938e-14 3.011482027e-17 0.0001007630987 2.898433874e-29 0 0 0 1.891173868e-09 0 +0 0 0 0 0 0 0 0 0.8160921363 60.25575283 0 0 0 0 0 0 0 0 0 0 0 376179.0884 0 0 0 0 0 0 0 0 0 136.9857562 0 8.645176152e-09 1.544921021e-07 0 0 0 0 0 0 4.937082039e-11 0 0 0 0 0 1.017788427e-18 0 1.950241695e-11 0.0002497157777 0 0 2.179767228e-16 2261.937155 0 0 0 0 1.740049758e-05 0 0.0009645506589 0 0 0 0 0 2.149398145 0 0 0 1.612591876e-06 0 10010.40162 0 9725.97661 8.233471579e-06 17357.31685 202988.5859 0 0 0.07673110483 12169.74088 0 3.490176617e-08 0 0 0 0 0 9.937381185e-09 127818.1316 0 2.79246897e-10 0 0 0 0 0 0 0 0 1.177638289e-25 0 1.609405847e-11 0 0 34874.24971 0 0 0.0003574531242 3.12844163e-24 0 0 1.148531452e-15 0 0 0 0 0 1.600132886e-08 0 0 1.516714727e-08 6.903127838e-18 0 0 0 95.7724673 0 0 3.954404975e-24 9.985808753e-07 0 0 0.002086757369 2.34587655e-09 0 0 0 1.012849216e-07 1.197393035e-29 0 2.736947608e-11 0 0 4.538370614e-21 0 0 1.145730371e-35 9.627876071e-17 0 7.789329465e-05 3.056557088e-17 0 4.172590353e-13 0 0 0 0 0 0 0 0 0 0 0 0 1.983103246e-16 0 0 0 0 8.336771111 0 0.0006266305181 0 0.06546440719 1.420906181 3.593190852e-16 3.026755312e-14 0 0.0004064635083 0.01686224659 61.45513185 0 0 0 0 0 0.0006633958601 1.06303171e-20 7.997946488e-16 0.001613043856 0 0 0 0 1.355566392e-30 0 0 0 0 0 1.040189204e-26 0 0 1.919814458e-22 0 0 1.514511022e-05 0 3.242285717e-08 0 92741.81614 0 0 0 4.622022729e-17 94.92684745 0 0 0 0 0 0 0 3.206916513e-07 0 0 0 0 0.0006722999615 0 0 0 8253.654679 0 0 0 0 0 0 0 0 582.136985 9.940126422e-21 0 2.992739184e-15 0 0 0 0 0 0 3.596834026e-05 0 0 1.051130123e-20 0 0 0 0 0 0 0 0 0 0.0001045494592 0 0 0 0 551.6651356 0 0 0 0 0 4.559333289e-08 0 175801.1258 0 0 0 0 0 0 3.834735999e-14 0 0 0 1496.781262 3.258858081e-11 0 0 0 2.653545998e-11 0 0 +0 0 0 0 0 0 0 0 0 0 0 29.06785465 0 5.395767211e-26 4.306864631e-14 0 0 0 0 0 0 0 0 0 1.162647643e-07 0 0 0 0 0 0 0 0 0 0 0 0 6.057607839e-11 0 0 0 0 1.483421177e-08 0 1.778038647e-06 0 0 2418.101795 0 0 0 0 6.081494135e-06 0 1.335165491e-28 0 0 0 2.286756131e-07 0 0 0 3860.814022 0 0 0 21009.61719 68.64383695 6.443328456e-12 5.327666506e-12 0 0 0 0.5005096728 200822.612 0 0 0 0 0 13.07267953 0 0 0.004884557111 0 0 0 0 0 0 0 0 161771.0456 8.710099754e-05 1.379581567 0.01140763923 0 81142.72605 2.682187594e-16 3.103088118e-08 0 813406.0028 0 9.441138916 0 0 3.881985241e-14 0 0 0 0 7.143648276e-15 0 0.0001330245521 0 109249.369 0 637168.9219 2300.098427 0 9.024512366e-16 0 0 0 0 7.483897027e-05 5.060121625 6.540791667e-23 549.3321543 0 24582.74698 0 0.0002032710137 8.807865995e-14 0 0 0 6.658992678e-06 7.329418613e-05 0 0 0 0 1.71327376e-16 0 4.513940841e-08 2.203229449e-06 0 0 10000.47107 785.142107 0 0 0 0 1.620517073e-10 0 0 0 0 0 1259638.711 0 220000.7469 0 0 0 0 3.200191943e-07 0 6.479675263e-05 0 0 0 509182.2045 0.1321260719 0 12274.50063 0 0 0 0 137764.9114 1606.163825 4.610299598e-13 91315.65466 0 0 4.960435248e-11 0 0 0 0.3249393479 0 2.634985355e-07 0 2.188371565e-07 38735.83763 0 3.527272506 161717.4963 0 2998.593675 1.176328701e-06 0 0 1.586865059e-19 0 4.502271961e-05 3.737999463e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.040466998e-05 0 0 0 2.007112427 0 1.546772268e-20 0 0 0 0 1.085565323e-09 2.309959281e-22 0 0.0002056186843 170128.2423 0 0 0 0 0 0 1.58412449e-15 0 9.229962425e-10 0 0 0 7.43775357e-15 0 0 0 0 0 0 0 0 0 0 0 0 1.022447472e-06 0 0 0 0 0 0 0 36862.07399 5.04371445e-13 0 0 2.203591755e-10 0 2.348102469e-26 8.830005314e-13 0 0 0 0 0 0 1.426764712e-15 0 0 0 0 0 0 0 0 0 0 0 3.218254839e-26 +0 0 0 0.005689959455 0 0 0 0 1.813837626e-12 0 0 0 0 0 0 139971.7118 0 0 769.7493665 0 8.074899123e-20 0 0 1.638279953e-22 0 1.764722925e-07 0 0 0 0 0 0 0 0 0 0 10091.28758 0 8.041226695e-09 0 0 279041.2435 0.02136505347 0.02579779862 0 0 0 0 0 0 0 8.148521218e-16 7.098858482 0.3721201699 0.0006594237886 129615.3121 0 152695.8278 212.4551262 0 1.14603765e-07 2409.430816 1281.012683 0 0 0 0 20.42326958 0 0 455273.9598 0 0 0 0 0 1.333217149 6.890940722e-19 0 0 0 0 0 0 0 4.233594859e-23 2.51562002e-18 0 0 0 0 0 0 0 0 0 0 5.21419244e-16 0 0 1.261762166e-18 5.031723536e-13 0 0 8.220763166e-08 0.005733036018 0 0 0 0 0 0 0 0 0 1.891138158e-22 7.243661952 0 2.441200071e-16 0 2.135863814e-29 5.171189857e-07 0 0 0 1.883010619e-29 0 2.925851622e-21 420.8955163 3.230351569e-18 0 4.977047776e-14 0 124320.7227 1.066522647e-08 120.0608789 3.453713354e-07 6.188536273 0 0 0.8480768503 0 0 0 3.22164496e-05 1.737053407e-11 2.021944673e-18 0 3.299759988e-20 0 5.808478671e-20 0.01184317441 0 0.004112999905 0 1.293665243e-07 7.165787023e-13 5.259418151e-09 2.823078305e-08 0 9.012660841 8.731651448e-09 0 1.248476234e-28 3.161679671e-06 0.0001017028002 0 0 0 1.211681491e-22 0 0.002672979702 0 0 1.243708164e-11 6.239481026e-19 0 0.1216747223 0 0 4.921988858e-17 1.276459574e-30 3.146755146e-13 6.65625116e-06 0 0 1.013907647e-10 0 0 406481.1832 0 3.624568565e-24 0 0 0 1.663369862e-05 0 1.077658357e-12 0 0 7.941118893e-15 1.996033061e-11 0 0 637959.7486 0 0 0 3.710043327e-17 16980.23444 8.454167283e-08 0 0 0.0004044440933 0 0 9.078927299e-11 32.06971346 0 0 0.1320451403 0 0 4.70186047e-12 0 0 0 0 1.685995402e-16 23.16646641 0 0 0 0 0.0001553131105 0 3.537302815e-27 9.204208816e-09 0 2.128281103e-19 0 0 0 2.776412547e-09 0 0 0 0 0 0 0 4.2644161e-10 0 9.689941869e-10 0 0 0 30.34233911 0 0 0 5.134575034e-13 4.032544117e-11 0 0 0 54716.97622 1.044222017e-07 0 0 0 0 0 1.328019822e-08 0 0 0 0 202219.2215 0 5.493874513e-26 0 0 0 0 0 0 670.7007057 0 0 0 0 0 0.6467025599 1.051537477e-11 0 0 0 0 0 +0 0 0 0 0 4.177673889e-22 2.889256257e-09 0 0 0 0 1.740639611e-06 0 0 285506.3726 3.906829875e-06 0 0 0 0 0 0 0 0 7.589091907e-10 0 0 0 0 0 0 1.012137897e-28 1.908669877e-07 9.094042433e-11 0 0 0 0 5.025325391e-14 0 0.030780196 1.002140353e-18 0 0 0 0 1.130919061e-17 0 0.5574237759 0 0 0 0 0 0 0 0 0 0 0.0003807831151 0 0 0.004481947784 204445.2986 0 0 7.089010063e-25 0 0 0 2.254068744e-12 0 0 5.752569132e-19 1.278954544e-11 0 0 0 0 5.221107008e-16 0 0 0 8159.529148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.31192827e-11 0 0 0 0 0.0006609937014 1.146788869e-13 29.4592002 1.095608495 0 6.813966169e-11 0 6.259978412e-17 6.466520238e-12 0 2.781531778e-23 0.371106206 497.5036916 0 2.764946709e-05 0 3.299593961e-19 0 6.072478161e-17 5.00055205e-20 0.001868699657 1.147279097e-09 0 0 0 0 8.612916308e-12 0 1.509687503e-15 0.05563248192 1.062746798e-08 0 0 16.3286227 0 0 0 2134.159604 0 5881.95794 0 1.263271706e-10 5.296141069e-10 0 2.382909785e-17 6.82795947e-29 8.798349979e-21 0.1945977887 0.001098761532 1.066610955 2.238303691e-06 324.4416165 3.407533913e-27 0 0 0 4.652546605e-07 1.406627417e-05 1.547146318 0 0 0 0 2667.916204 0 9.20133965e-27 3.425783644e-10 0 0 0 1035563.722 0 0 0 208160.8738 0 0 0 0 0 0 19029.55166 0 319998.5539 0.4482958553 0 0 0 0 0 0.009220753837 0 0 1.991173882e-16 0 0 0 0 0 82.52005971 0 0 0 0 2.3933651e-14 0 0 0 0 0 0 77.21718184 0 0 0 0 0 0 0 1.105144187e-20 3438700.112 0 0 0 0 0 0 1.031504012e-28 0 0 0 0 0 0.0001542243153 1.428327798e-20 0 0 5.242062193e-14 0 0 0 1.829884366e-05 5.625823847e-15 3.569491915e-07 1.228321329e-08 0 0 0 0 11.52634169 0 3.237541598e-25 0 0 1.361234041e-14 1.576617758e-07 11.41027665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.504558725e-13 0 427.4063461 0 6.198110405e-13 0 0 0 0 0 2.183031054e-05 0 0 0 0 0 0 0 0 0 +0 0 8.878208195e-07 0 0 0 6.655995481e-17 0 1.056822417e-08 0.00273585312 0 0 0 2.139242377e-10 0 0 0 8.419618317e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001161235908 2.225196717e-13 0 0 1.26278584e-05 0 0 0 1558.281255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006568238772 0 6.936645724e-09 0 0 0 0 0.3968169363 0 0 0 0 0 0 0 0 0 283187.1686 6.735665281e-05 3.90213944e-08 0 0 0 4.503441018e-13 7.387849435e-27 0 0 0 7.376964426e-19 4.497571203e-12 14.50752096 0 0 0 0 0 0 4.176768195e-16 19.34293874 0 0.001565724433 0 0 0 1.155536087e-29 0 0 0 2.532214704e-18 0 0 0 3.72067079e-05 1093724.872 6.071820435e-08 3.503798344e-12 0 0.009032173295 109253.553 5017785.519 0 0 0 123.8986728 319719.3927 2302.922447 3.50278177e-10 0 0 9.089420386e-21 2.073377339e-15 6.832150203e-17 1.0349643 0 0 2.532108283e-08 6.094265006e-07 0 0 9.179689769e-15 0 5.013617725e-12 8.228001528e-07 264341.2274 0 4.186687807e-26 0 0 0 100.6322048 38.0599318 0 0 0.2383140163 2.743677845e-14 0 0 0 1.024473294e-15 0 0 0 7814.382474 6.76276794e-19 0 1075.501184 0 0 8.016109058e-17 1.19399126e-39 0 0 4.270589897e-31 59008.84268 1.452917147e-11 15.02125268 0 0 0 0 0 10291.07172 2.660521095e-13 0 0 0 0 918286.7858 0 0 0 0.0007638533427 7.822545044e-28 0 1.289868115e-07 0 4.494577681e-10 6.721904151e-17 0 5.041768328e-15 0 0 2.250258395e-06 0 0 7447.375425 0 7.697644525e-09 0 0 2.182721632e-08 7.938501222e-21 4.998899521e-23 0 0 0 0 0 0 0 4.982566784e-22 0 0 0 0 1026.190884 7.038006788e-10 0 0 0 0 0 3.677799114 0 0 5.116804377e-08 0 4.332374915e-26 1.123704577e-27 0 8.074928947e-19 0 0 130.8017197 0 0 0 0 5.765475302e-12 0 0 0 1.371416601e-15 0 0 1.365957763e-07 0 0 9.295864656e-29 0 8.459875771e-19 0 0 7.002957985e-06 0 1.078126909e-17 0 4.009598997e-13 0 0 0 0 0 2.453844667e-27 0 5.198316934e-10 0 7.844428286e-19 4.564116119e-25 0 0 0 0 2795038.928 0 0 0 0 1.41556618e-13 4.135785648e-16 0 0 0 0 0 0 3.205761876e-15 0 +0 0 0 0 3.940987389e-12 0 0 2.139661532e-08 0 0 0 0 0 0 0 2.458155195e-09 0 6.702434781e-09 0 0 0 0 0 1.026260113e-41 0 0 0 0 0 0 0 0 0 0 2.035257641e-12 1.500371826e-20 0 0 0 0 0 0 0 0 2.482270349e-13 0 0 0 0 0 0 3.205164545e-05 0 0 0 0.002913131932 0 24.67582003 1.560942911e-07 0 0 5.566336442e-08 0 0 0 8.33044873e-12 2.667861418e-10 0 0 0 0 0 0 0 2937.999691 0 1788.811794 0 0.0001292667785 0.0304806336 682246.1744 0 0 1.582020499e-11 0.006891090619 0 1.748225453e-08 0 0 182765.9195 0 0.07641359804 0 3.124351009e-11 0.8506078426 0 0 15.76105405 74184.3317 1.291777227e-09 0 0 1.199335082e-05 0 274.3348053 3.284380583e-07 0 0 1.591416526e-14 0 3.213112783e-18 1.505177477e-13 3.352495591e-24 0 0 0 3.819521645e-07 1.534391648e-10 0 0 4361.972994 1.983872623e-08 4.252947483e-13 5.410644749e-30 1380088.162 0 0 0 0 0 0 3.544848137e-14 3.891236212e-16 3.694114866e-28 1.471952426e-05 1.578404692e-27 0 3.678841725e-21 205960.6688 7.077404485e-13 0.6381871321 0.002149875974 4.84399792e-12 0 1.864464714e-23 4021.971468 0.001035856834 0 0 0 3.119908147e-12 661814.5846 0 3.759439139e-05 0 4.133921075e-14 0.001316394685 0 0 116197.317 0 0 2.95390495e-14 0 0 2622192.173 0 0 0 0 7.382619229e-14 0 0 0 0 0 0 0 7.731951147e-08 0 0 3.319712058e-08 0.002855511437 15.45596308 0 2.671833183e-05 0 0.6710992283 0 1.204394211e-08 0 0.4897647742 1.987884559e-23 0 5248.035983 2.200006085e-19 0 0 0 0 0 4.054626989e-11 0 64684.91932 0 0 0 0 1.689610018e-06 0 0 0.0002705288404 0 0 4.13972416e-22 1.137181799e-16 7.738644498 0 0 0 0.0005140765709 0 0 4.546104127e-08 8.081030012e-13 0 0 0 0 82.34926005 5.849672108e-15 0 5.862925968e-07 0 0 6.391823427e-27 0 0 0 0 0 0 0 0 0 0 0 2.381634259e-05 0 0 5.693772296e-10 0 0 0 0 6915.799096 8.914996336e-18 0 0 0 0 0 0 0 2.653589508e-11 0 0 0 0 0 0 0 8.951482107e-19 0 0 0 1.25045934e-17 0 0.01293921213 0 1.233220929e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 5.927891323e-14 0 0 0 0 0 +0 0 0 0 1.133832868e-27 1.910296942e-22 0 0 0 0 0 0 0 0 0 0 11175.96833 0 0 9.171251354e-08 0 0 0 3441.698648 0 1.533727094e-10 0 0 0 0.2003397617 7.573952602 0 0 0 0 0 0 0 0 0 0 7.570439372e-12 0 0 3.393321945e-06 3.283801935e-18 1.942603525e-36 0 0 0 4.400798638e-14 0 0 0 5.897670376e-21 0 0.0008072565227 0.0001075183088 1.629036289e-10 0 0 1.344016583e-29 3.200689505e-23 0.004188590495 698441.5741 9.869701063e-33 0 0 9.677687271e-07 0 0 3.06518947e-09 3.454520301e-07 11190.19211 553.9788068 1.765650631e-15 0 0 0 6.225942659e-15 0 0 0 0 0 0 0 4.739297485e-06 0 5.179937092e-11 0 0 1.177309467e-16 7.803107518e-08 8.789225371e-11 0.003669871592 0 0 0 0 5.097974091e-05 0 3.12340492e-14 0 5.861588441e-13 0 0 5.389223529e-05 0 0 1.92946107e-05 0 30.5184197 0 0 0 0 0 7.433351789 6.120602319e-17 1.633456868e-20 1.668402975e-36 6.284617714e-15 1.190754131e-07 0 0 1.118466523e-05 1.082384424e-20 0 0 0.0002694977878 93351.89005 45092.68218 0 2.286478565e-13 1.951853103e-06 0 0 0 0 0 1.894137384e-08 0 0 1.549874595e-15 0 0 0 0 5.852140831e-14 0 0 400392.2435 0 0 0 0 0 0 0 0 0 0 9.900070252e-06 0 0 62072.11282 0 0 0 2.609679015e-07 6.08630381e-12 0 8.063564291e-14 0 0 3.295479416e-07 1.299019778e-09 0 0 0 1888.894689 0 0 3.448241505e-17 0 0 7.671884154e-14 0 0 0 292.0030519 0 0 3.250376712e-16 0 0 0 0 0 0 4.275372166e-11 2685.503245 0 0 0 2.298918649e-05 0 2.277178817e-06 1.378310081e-09 1.810175803e-16 0 0 0 0 4.051442847e-25 9.290252635e-14 0 2.822692066e-05 2.60337118 0 0 5.208833852e-08 0 0 0 0 1064202.397 0 0 0 0 0 6.404265608e-11 0 0 0 1186.699747 0 2.895451966e-38 0 0 0 0 5.886931867e-27 0 3.196398863e-11 0.01982537162 0 2.482517122e-05 0 0 2.097560806e-28 0 0 0 0 0 0 7.375075274e-15 0 0 0 0 1.043555742e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.69421047e-24 0 0 0 0 0 0 0 2.847816703e-22 0 0 0 0 0 0 1.317373025e-07 4.357794685e-09 +0 0 539.7262064 4.405623616e-09 0 0 0 0 0 0 0.008730065268 0 0 0 8.03851193e-19 0 1.521432874e-09 0 0 0 0 0 0 0 0 0 5.219217132e-08 0 436.6356282 0 0 0 0 0.7169664828 0 9.278858125e-10 1.243838128e-10 0 0 1.437384526e-12 0 0 1.321893155e-10 3466678.407 3.865362314e-11 0 0 0 2.868660549e-14 735679.7332 8402.948501 0.2909620828 2.907377187e-27 26849.2909 0 0 0 120.8742957 2.820791363e-07 0 0 0 218782.2134 0 3.631033069e-22 0 0 0 0 0 0 0 1.344545454e-10 0 3.466018331 2.282688965e-07 0 0 0 0 0 0 0 0 2.529215648e-09 0 0 1.974679454e-16 0 0 0 0 0 0 0 0 21633.07147 0 0 0.0005351730963 0 0 0 3.785924869e-07 0 0 0 0 0 0 5.800147291e-10 0 9.877038083e-14 0 0 0 0 0 0 0 4.453426908e-11 0.001134195404 0 0 0 0 0 5.510856201e-17 0 0.03415840826 0 0.002189543314 7.803286103e-18 0 0 0 6.650283413e-07 0 0 3806.298304 1.598095501e-10 0 0 0 0.0006173148804 0 0 0 1.383765506e-10 1.933618113e-15 0 0 0 1.023437763e-05 60.48250915 0 0 0 818.1164536 0 0 3.835691279 0 3.078459156e-09 1.876089417e-07 0 0 26.41547228 0 0 0 0 0 0 2.932095035e-25 0 7.614949841e-16 0 0 3.213969561e-14 2.027528579e-09 0.05100461934 0 7.70691374e-09 1.941332393e-20 0 0.005636620284 22516.05127 4.187834769e-08 2.739462585e-16 0 9.466064763e-11 0.01550764765 0 4.727562766e-11 0 0 0 0 0 0 1.027638929e-10 0 2.461380014e-13 593.2714016 5.574185345e-20 0.673564959 0 0 6.331583279e-06 0 0 0 0 0 0 0 0 0 157796.826 0 0 136465.8381 0 3.840789854 0 0 3558.571566 0 0 0 0 0 0 0 2.730764432e-14 0 1043.728639 0 207634.6302 0 0 5.729588835e-05 4.783772809e-21 0 0 1.194010223e-16 37397.94005 0 0 0 0 0 0 301.6918194 0 5.638029561e-25 0 0 7.961013052e-12 0 0 0 0 0 0 0 1.926766088e-13 0 8.623948712e-08 6.213537649e-20 0 0 3.275244106e-07 2.427133318e-07 0 0 0 4.971536555e-19 0 0 0 0 0.01232438559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.006504587619 0 0 0 4.576995172 0 0 0 0 0 0 1.986880487e-16 0 0 0 0 1.815472668e-07 0 0 0 0 0 0 7.742777528e-31 0 0 0 0 0 0 0 0 0 50872.51663 0 0 0 0 0 0 0 0 0 0 0 0 0 1.378319019 3.867021725e-15 1.762984385e-12 0 0 0 4.604723668e-11 3.198983422e-06 0 0 0 0 1.926018403e-05 0 0 0 0.001871760581 3.947682974e-29 0.008386407571 2.830370685e-05 0 0 0 0 0.003842886413 0 0.04306772686 3.07202323e-18 0 0 0 0 1.060608147e-12 0 0 0 0.004222627694 0 0 0 4.431558428e-09 0 9.855305779e-15 0 0 5.046898166e-29 8.442525987 3.053331037e-15 0 0 0.001168590875 0 1.870202612e-18 0 0 3.962420707e-12 0 0 0 0.01923776416 0 1.241740704e-33 3.685016168e-06 0 0 376620.054 0 99318.30156 0 0 0 0 3.661900781e-12 0 2.164044576e-09 3.431461365 2.366325895e-13 1.943081971e-26 0 0 0 0 0 0 268827.2105 0 7.340363935 0 0 2.65774999e-06 0 0 0 0 0 54847.86674 0 0 2567504.326 4.20193474e-13 0 8715.459771 0.03980568111 0 0 0 0 0 0 0 0.2406558424 0 6.756749755e-05 0 0 0 0 6.807951867e-16 0 2520988.315 0 0 0 0.0004010916622 6.263631635e-11 4.212858779e-08 0 0 796346.4181 1.497955562e-16 0 0 0 1.93291311e-19 0 0 0 1.560094556e-24 0 0 0 5.016140821e-19 1.937408596e-12 0 0 0 1.466441215e-34 2.989952374e-21 1.955419626e-11 0 0 6.194673443e-12 353898.4272 0 0 0.0004376061797 2.472011273e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 2.071645942e-17 0 0 9.046563709e-30 0 0 0 7747.938404 0 0 0 0 0 0.06820930444 0.2152325908 0 0 0 0 0 0 0 0 271721.2946 0 0 703480.9374 0 0 0 546478.7368 3.958464924 0 0 0 0 0 0 0 0 0 0 7.533216318e-07 1.265530605e-12 0 0 0 1.752265033e-28 0 0 0 0 0 0 0 0 2.050837183e-17 0 0 0 7.467389302e-27 0 11608.59289 0 0 0 0 0 0.004719887311 0 0 0 0 0 0 0 0 0 0 0 7.780248075e-13 5.607617237e-25 0 +6.877102865e-26 0 0 1.940924062e-27 0 0.003030792186 0 0 0 35.94098766 0 1.613519042e-06 0 1.214196507e-18 272542.8882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.192406585e-07 6.020082534e-13 0 0 3.511608704e-05 0 0 0 0 4.040072933e-13 0 0.0001406993233 0 160488.6693 0 0 0 32.98661355 0 0 0 0 5.160081547e-20 8.247758135e-11 0 2720.126423 0 0 1.972313874e-08 4.949838489e-14 1.505336603e-09 8.244070078e-09 0 0 1.266053288e-10 1.475133557e-08 0 9.38649197e-12 7.253768741e-14 2.317635593e-26 0 4.475615341e-06 2.335136733e-30 1.81308592e-06 0 0 860510.1205 0 0 3.425089889e-25 0 3.394756437e-08 0 0 3.976495438e-29 0 6.6899149e-05 0 2.066929553e-17 0 444747.4144 4.502396106e-18 1.969677007e-18 0 2.824489319e-12 0 0 2.769872533e-07 0.000223740625 0 0 2.183195757e-08 0.0009468059765 33959.39411 0 0 2.1666176e-10 7.50597247e-06 0 1.470005689e-05 0.0009125823103 9.353258839e-10 0 0 0 0 941984.2458 0 1.59495226e-19 0 280.8032044 193785.917 1003.235893 0.0001318258581 0 0 0 2.091961587e-28 0 0 1.230388474 0 0 2.118752646e-06 0 0 3.840197008 0 0 1.039275509e-12 0.0196566948 0 0 0 0 0 0.1682309714 0 0 1.665820528e-13 0 0 0 0 0 0.002695274835 1361195.74 0 939492.6992 0 0 1.361291864e-10 0 4.032950958e-08 5.005935648e-08 2.671303196e-28 8957.995009 0 1787.714968 0 1.091399928e-13 4.555049613e-09 0 0 2.316679893e-25 0 0 0 0 0.03231018179 15294.47035 0 0 0 0 3.134391682e-13 0 0 2.066716734e-08 1.838548549e-08 2.142465537e-16 0 0 0 0 0 0.01275764882 0 0 4.955018921e-14 0 0 2.868890494e-13 3.1852438e-08 0 0 0 0 0 59.24205097 0 3.10328763e-24 0 3.440680215e-43 6348.221997 0 0 0 0 0 0 0 0 0.0001492125508 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34596.99106 0 0 0 0 0 0 0 5.846071572e-10 0 0 0 0 0 0.008105016534 0 0 0 0 5.93987394e-05 1.876795258e-24 0 0 4.379311834e-21 0 0 0 0 0 0 0 0 1.024784207e-28 0 0 0 0 1.011431413 0 0 0 0 0 1.112119521e-07 2.060236534e-20 0 0.0004878597742 2.243268498e-05 0 0 0.03094749064 0 912.3119684 2.635938672e-14 0 0 0 2.579146507e-08 0 0 +0 0 0 0 4.443860408e-12 0 0 0.1723396542 0 0 0 0 96.63834902 0 0 0 0.0005785067605 0 0 0 0 0 5.236977442e-20 0 0 0 0 0 2.914070064e-18 0 0 0 0 0 0 0 2.822766905e-05 3.100989383e-12 0 4.405390709 0 0 0 0 0 0 0 0 0 1.957542278e-07 0 3.339897674e-21 0 0 0 0.001758235494 0 1.906352367e-07 6.609179544e-25 0.06253053685 0 2.784038403e-27 6.489995968e-09 1.180654639e-15 6.691007639e-05 0 0 0 1.452488637e-05 0 0 0 0 3.306962886 0 1.331631228 0 0 3.352776582e-20 0 0.6128740621 5.457953055e-16 0 0 0 1.807012783e-12 20.23471054 0 0 0 0 0 0 0 0 0 1.038510457e-06 0 0 1.128486326e-08 0 5.674052092e-15 2.39411646e-20 0 0 0 2.340662514e-15 8.563158334e-13 0 6.088595552e-38 5.779770517e-12 1.364505972e-09 3.834862547e-05 0 2.090980656e-20 0.9654184478 4.324671975e-14 0 1.895540155 1.268246403 3.117695638e-10 0.005429240374 1.754939928e-05 0 0 228389.0887 1.158171019e-11 0.08460011627 5.332250355e-28 0 0 5.160819531e-17 4.097505236e-08 2.068399282e-15 0 1.769306324e-08 0 0.004894051242 190744.6303 0 237485.4668 1.80460779 0 0.3460608421 0 0 0 2.873589955e-05 0 839945.5926 0 0 0 182.2315809 0 39.97523763 0 1193.293894 0 0 0 2.436701936e-21 0 0 0 0 0 0 9.822745799e-14 0 0 0 0 1.503403654e-16 0.0002742949553 0 0 0.001020365054 0 9.450039932e-07 0.2124255663 0 13958.32968 0 0 0.1725733607 0 0 86670.84479 0 0 2.957854989e-09 56623.32329 1.568576614e-17 1.440179927e-07 0 0 0 0 0 0 0 0.4516646321 7.962713225e-12 0 0 8.650571874e-11 0 1.122335766e-06 9.175953807e-15 0.04992278044 1.743116269e-28 0 2.031064595e-13 0 0 0 2.768184138e-09 7675.401944 0 2.073892629e-20 3.109662806e-12 0 0 0 0 0 0 4.12137829e-20 295.3589934 3.321202247e-26 0 0 0 0 4.969258186e-21 1.106425525e-26 0 1.061769517e-24 0 0 0 0 0 0 0 1.02067235e-24 0 0 4.81130137e-18 0 0 0 0 0 0 0 0 0 0 0.006135848643 0 0 0 0 0 0 0 0 540.4580772 0 0 5.545557785e-08 0 0 0 0 0 0 0 0 0 0 9.923487881e-14 0 1.771258867e-18 0 0 12.08693188 0 0 0 0 0 0 0 0 7.831013128e-05 0 0 +0 9.78976145e-30 0 0 0 0 0 0 0 0 0 315225.3237 0 0 0 0 0 0 0 19.13780032 260159.1364 0.001396588488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4068575565 0 2.185650207e-05 0 0 0 4.383664028e-05 9.278364289e-08 0 0 52608.06833 0 0 0 4.409973113e-28 0 0 0 2.494622855e-27 1243.934765 0 0 0 3.291096827e-23 0.0006296123608 0 0 0 682.3040269 0 0 0 0 1405336.977 0 0 0 0 0 0 0 0 0 2801.399047 0 0 0 0 0 0 7.754911858e-08 0 0 0 38.78288477 9.296257337e-11 0 0 0 0 0 0 0 0 7.82521826e-14 2.28517073e-15 0 4.120182453e-08 0 0 0 0 3240.215902 2.338231376e-06 2.294570814e-12 44579.78569 0 0 4.795638837e-08 0 0 0.0009163519548 0 0 0 0 22.21543716 0 1524.729138 0 0 0 0 0 0 0 1.340724623e-05 0 3.943453691e-10 0 0 0 0 0 7.102485373e-16 105.4051351 0 0 104528.4231 0 0 0 3.141641451e-18 0 0 0 182.4065922 0 0 0 0 196.9332737 0 0 0 1.10951565e-15 5.406316936e-07 1.286362876e-08 0 1.768725478e-06 18812.42706 0 0 0 0.0001362030612 0 1.828059176e-18 0 2.238030228e-23 163650.9195 0 0 0 0 0 1.305540457e-23 0.2457776787 0 59894.293 0 0 0 0 3297232.517 0 0 0 0 0 1.395165226e-12 4.088565834 0 0 0 1.73094803e-07 0 0 0 0 1.093101574e-09 3.403871401e-16 8.141510078e-05 6.440896161e-26 1.912555642e-27 7.509135645e-26 1.750321295e-10 1.171941271e-22 0 0 1.217761048e-18 0 7.880228472 0 0 0 1.220374794e-12 0 2.238654189e-29 0.004837776877 0 0 0 66.17558526 0 0 2.034816135e-22 0 2.429970676e-34 0 3.481074566e-09 0 0 0 0 0 1.020092992e-07 0 0 0 0.0230016994 4.397565533e-07 5.030995046e-10 0 0 0 0 0 0 0 8.055303684e-13 0 0 0 0 0 0 0 0 0 1.105687838e-22 0 5.165215718e-23 0 0 0 0 0 0 1.591158719e-08 0 0 0 0 0 0 0 0 0 0 0 0 8.719171558e-09 0 0 0 0 0 0 0 2.407082011e-20 0 0 +0 0 0 0 0 0 0 0 2.487367321e-14 1.337770337e-19 2.156834359e-23 0 3.67278413e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.438278756e-13 0 0 0 0 0 0 0 0 0.000352438977 0 6.05169058e-06 0 0 0 0 5.320455817e-10 0 4.163663519e-21 0.0004117945775 0 0 0 0 0 0 0 0 1.931469685e-06 0 6.529732302e-11 0 0.4942813063 2.26200416e-13 688330.1099 0 0 1.266201809e-07 0 4.1977996e-26 0.0003064002563 3.908620305e-06 0 0 0 0 0.0002310863227 0 2.566714611e-19 1.337631541e-07 0 226.3935317 0 2.318155443e-16 8.85589102e-12 0.001303968173 0 2.220950386 0 0 0 0 0 0 0 462.7206621 6.290853864e-12 0 0 0 0 0 0 0.00149811472 8.796810358e-09 0 0.0002290350249 0 5.751027527e-32 0 0 0 3.040060034e-07 0 0.01045697906 0 0 2.894402644e-17 1.720196331e-15 0 1.050779633e-25 6.78375764e-06 0 0.02842886089 1.494223584e-19 2.243246166e-29 0 0 0.0001685824572 2.782738799e-08 0 0 0 0 0 0 2.23581032e-25 0.3406764576 1.211057192e-31 0 0 6.074906269e-15 5.136612931e-12 2.296256378e-24 0 0 0 0 1.917387376e-22 2.505562971e-12 0 1778.466353 0 0 6.260736764e-19 0 0 0 0 0 0 8.522661926e-09 0 0 0 0 1.80576876e-10 4.465300416e-09 231.6106399 0 0 0 0 0 0 0 0 2016.267014 125.5590804 0 0 0 4.313057827e-16 0 0 0.001839852478 0 0 0.002057935607 2.394377595e-19 0 0 0 10708.41779 0 1.119765365e-07 0 0 0 5.264829466e-27 0 0 0 0 1.57865298 0 0 0 3.777745046e-28 4.476170333e-07 0 0 0 0 0 0 0 0 0 969490.3624 0 0 0 1.777448339e-13 1057824.986 0 0 0 0 4.683369715e-07 0 0 0 0 54477.83265 0 0 0 1.047673456e-19 0 347827.2223 1.490455567e-08 2.671461899e-22 0 114717.4365 2.570573088e-07 0 3.232021138e-12 0 0 0 3.259901427e-05 0.02554146052 8.52979573e-12 0.001039104032 0 0 0 1.804944563e-05 0 0 0 0 4.859635414e-13 0 0 0 0 0 0 0 0 0 0 0 1950549.729 3.961965823e-10 0 0 0 0 0.01036758548 0 0 0 0 0 0 0 0 2044.337878 251.0929653 0 0 635940.4158 0.2365054207 0 0 0 0 4.346954312 0 1.562493932e-05 +0 0 1.16298347e-16 2.614041057e-14 0 0 0 1.506088941e-10 0 0 170452.088 0 0 0 0 0 0 0 0 1.181798282e-13 0 0 0 0 0 0 0.0008946181259 3697.271538 0 0.1655801494 0 0 4.137713998e-25 0 6.207258054e-27 0 2.757954539e-14 0 4.281745498e-29 0 1.551929609 4.711782486e-06 6.733937291e-10 1.013198984e-13 0 0 0 0 0 0 4.092717248e-24 0 6.664925978e-06 0.001031474059 9.344026586e-06 0 0 1.176904346e-08 0 0 0 0 0 0 0.2467795864 2.193449051e-10 0 0 0 3.01064564e-18 0 0 3.376966487e-14 0.1232487223 0 0.6196501226 0 0 0 3.385102148e-20 0 7.63850413e-18 0 0 0 0 0 1.74431736e-22 3.662290409e-19 1.1350729e-09 0 0 0 0 0 2.410930908e-06 0 1.646216619e-14 0 0 144.5071866 1.105118761e-19 0 0.01032775827 0 324.6552688 0 1.274846131e-17 0 0 2.294603033e-17 0 0 0 0 0 6.331922213e-22 6.541635872e-29 0 0 5.727833804e-10 0 33853.86005 0 7.459270231e-34 0 0 0 8.273086722e-14 0 0 1.31038467e-06 0 0 3.016778214e-13 0 2.452673727e-25 0 1.487431449e-21 0 0 0 0 0 0 0 3.243519882e-15 1.699439348e-28 0 0.05347391558 7.849257129e-10 0 0 1.882251083e-27 0 0 1.43859319e-11 1.839204202e-05 0 0 5.618719195e-32 6.835165723e-34 296.4055514 0 0 0 0 7.080038359e-26 10.58184267 3.017879634e-12 5.904061768e-17 0 1498.954104 0 0 0 458.6269358 0 0 0 0 0 1.616544192e-10 865.0015451 5.985295297e-13 377.261124 5.322277613e-10 0 0 0 6.443630486e-07 0 0 0 2.36815989e-05 0 0 0 321.3289794 0 0 0 0 0.163971131 0 1.101072745e-13 0 0.0001389566607 19.11087904 8.64385119e-09 116.7426959 0 0.032515424 0 0 111588.7321 0 0 0 0 0 0 2.346632271e-19 0 0 0 0 0 0 2.736365025e-05 0 6.223376423e-22 0 7.811189875e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3026618.087 0 0 0 0 0 0 0 0 0 0 2.429816841e-20 0 0.01206159457 0 0 0 0 0.002249903522 1.115747084e-09 0 1.525292146 0 0 0 9.485916092e-21 0 0 0 97.00484325 0 0 0 0 0 3.074750245e-24 0 0 0 1.883361088e-09 399.4241613 0 0 0 0 0 8.182416581e-11 1.048960514e-13 +0 0 0 0 0 0 0 0 0 0 0 67623.08391 0 0 0 0 0 4.596278357e-23 8.51436415 5.108951907e-06 0 1.22992621e-09 0 0.0002165204161 4.66155807e-05 0 0 0 6.452523088e-29 629.4538781 0 0 0 0 1.501247933e-18 0 1.312700821 0 0 351364.2138 0 0 0 87.8835914 0 0 7.944080753e-23 0 0 1.382796658e-07 0 0 855229.5679 0 0 0 0 0 0 1.203817637e-15 0 6.174759199e-33 6.806855337 0 73.94819278 923719.4967 0 0 40194.81547 0 3.245101791e-08 0 0 0 0 0 0 0 6704.274562 0.001254036699 0 0 187.8326285 0 0 2.195482297e-15 0 0 0 0 0 1074.660917 0 0 0 0 361.1622668 6.637275035e-07 0 0 0 1.07195961e-29 0.0001651386657 0 2.719978184 0 0 0 1.281768586e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 2.443203478e-10 1.23623337e-07 0 0 3.363836773e-12 0 3.476473226e-08 0 1.198237562e-05 2.542768904 2.337137735e-15 0 0 0 223.0219759 0 0 0 0 1393529.171 7.079497821e-09 0 0 0 0.009128996916 0 0 6.404553352e-15 0 2.798110342e-21 0 1.399917124e-10 16461.25577 2193577.126 2.143069396e-23 6.577713944e-31 0 0 1351166.708 0 1.743201635 0 0 0 0 2.33661047e-18 0 0 0 0 3.150216829e-05 0 2.417475531e-05 0 3.294499908e-19 2.297533322e-21 6.185591004e-07 0 0 0 0 2.934009423 0 0 0 0 1.993243357e-09 0 3358464.026 0 0 2.947729006e-07 1.093895582e-18 0 0 0 7.811254459e-11 0 0 3.094275914e-11 0 178.6336671 0 0 0 0 0 0 0 0 0 1.613735257e-19 0 5.305442257e-14 0 0 0 0 0 0 0 0 1.486817187e-06 0 0 0 1.44283816e-06 0 0 0 0 0 0 0 0 7.854310099e-14 0 0 0 2587.714916 0 0 0 0 2.514605266e-09 132453.6734 238.4378328 0 0 0 0 0 0 7.560653594e-08 0 5.357346922 0 0 0 0 0 5.061735631e-10 0 0 0 0 0 0.0001944971782 0 0 0 0 0 1.26803697e-14 0 0 0 0 0 6.131318288e-15 0 0 0 2.161315853e-17 1.981499297e-06 2.555840834e-13 2.749840711e-07 0 0 0 0 7.506855201 0 0 1372896.237 0 0 0 +0 0 0 4.116966077e-25 0 0 6.196074173e-11 4.635313991e-22 0 9.746106387e-23 0 4.348073339e-24 0 0 0 0 0 0.00216810212 0 0 0 0 4.366471025e-10 16433.45055 0 0 0 0 0 1.769715375e-11 0 0 0 0 0 0 0 0 6.123630337e-14 0 0 0.09423374225 0 0 0 0 0 2.747508563e-07 0 0 6.873611223e-23 9.319434303e-23 0.8223250167 0.0008828696154 0 0 0 316087.9296 0 0 7.007819506e-07 0.0007680082634 0 0 10.50818622 0 0 0 1.91658656e-28 0 0 0 917.7260182 2.844426055e-27 0 0 8.296660097 0 5.377360668e-19 11990.40792 0 0 0 2.552989263e-05 0 0 0 4973.146299 0 0 0 1.268384887e-41 5.906364339 1.80083452e-20 1.100957391e-23 12.66003811 0 1.022427152e-07 0 0 0 9.192729916e-10 0 7.619418514e-23 0.02858696274 0 8.270334115e-17 0 0 0 0 1.192710264e-05 0.0001249879392 3.00431051e-28 0 2.447408409e-08 0 0 0 1.653102596e-23 0.01417341901 0 1.015101989e-10 0 1.141517187e-08 1.892183888e-07 0 0 7.383974808e-14 5949.785925 0.1027931147 0 0 0 0 10915.20429 0 6.274882984 0.003135531395 0 0 0 0 0 0 5.737208022e-16 0.0001345741736 1260.650333 3.026234042e-07 0 1.371224511e-22 0 0 0 0 0.2829265231 0 0.1839419796 0 0 0 0 0 0 0 3.167690108e-05 5.63087824e-13 0 0 1.0547905e-06 6.447790642e-25 8.353986905e-11 0 2.419048468e-11 0 0 0 0 6.481751934e-24 7.207126364e-27 0 3.70482826e-08 0 0 0 7.792621656e-05 0 1.135911026e-12 0 1475.430429 0 0 2.049700715e-09 532.6439234 0 0 1.008918969e-14 678663.2337 0 0 0 101630.8638 205.3373904 8.667591711e-24 7.289630738e-20 1.490207268e-06 3.134524595e-13 0.0008717165095 0 1964.85089 203.1111273 0 2.095051234e-07 0 0 2.042873246 0 0 0 0 0 0 0 3.073661935e-16 0 0 0 0 0 0 6.392272157 0 0 0 0 0 0 0 0 0 4.808099078e-22 4.325866695 0 1.651839227e-15 0 6.372747788e-06 0 1.082243372e-05 643866.4245 0 0 0 0 0 0 8.999525094e-15 2.356592158e-18 0.05264036147 0 0 0 0 0 0 0 0 0 0 0 0 0 212636.9703 0 0 52.06122861 0.005724149825 3.786908284 0 1.477426949e-16 0 0 0 0 0 0 0 0 0 472.7383926 0 0 0 0 4.336701918e-06 0 0 0 0 0 0 +0 2.634123573e-12 0 0 0 0 0 1.649372318e-22 0 37.17193552 4.927231879e-14 0 0 0 0 0 0 0 0 2.031601661e-18 0 0 0 0 0 0 0 0 0 0 0 0 9.626073435e-13 2.338145689e-11 0 3.297417054e-06 2.632621805e-11 2.776640661e-16 0 0 0 18053.59899 0 0 0 2.181707289e-20 0 0 0 2.05374771e-22 0 0 0 0 0 6.855688032e-07 0 0 0 2.289126561e-29 4.375326969e-12 0 0 0.000178472662 1.021295197 0 0 0 0 0 0 0 0 420865.7599 0 0 0 8.095474884e-08 0 0 0 0 0 0 0 0 0 0 21333.63527 1.376596651e-10 0 0 0 0 0 0 0 0 0 0.005254806217 8.556384986e-23 1.473904862e-06 0 2.483572484e-23 4.493786148e-14 2.676117946e-15 0 1.046284497e-37 0 0 0 0.0001808695666 0 6.765629373e-08 0.01611609069 0.02880112108 0 0 0 0 0 0 87182.10478 1701.172231 0 0 0 1.060167401e-08 1.02922644e-14 6.969740359e-11 7.879494938e-14 0 0 1.891915179e-23 0 1.961552349e-26 0 0 0 0 0 0 2187440.544 0 0 0 2.23593054e-20 0 0 0 0 0 2.464172611e-05 0 0 0 0 1.763930214 0 0.002025826585 0 0 4.657236672e-13 0.002407357102 0 0 3.086057623e-08 0 3.786417658e-06 0 4.819251369e-15 6.732096604e-37 0 0.0003268745254 57725.36759 0 1.177041428e-19 0 0 0.003322498063 4.150509985e-13 0 0 0.03456205329 0 8.154434608 4.068535201e-25 3.719060489e-23 0 0 8.075205447e-18 1.237670182e-34 0 0 20.34807853 0.000731778376 0 0 0 0 0 2.720021872e-11 0 0 0 3.353118178e-29 0 0 0 0 0 0 0 5.355118086e-13 0 2.326697493e-28 1.208209195e-27 0 0 0 10647.78045 0 0 0 0 0 0 0 0 6.684257184e-23 404189.963 0 0 0 0 0 0 4.427423112e-23 1.287557954e-27 0 0 0 0 0 0 0 0 0 5.62922991e-19 0 0 0 0 2.318713042e-09 2547473.945 0 185083.2642 4.047158002e-15 3.924547737e-27 2.717181592 0 0 0 0 0 0 0 8.930017916e-08 0 1.29763536e-16 0 0 3.145364235e-05 0 0 0 276069.1379 0 0 0 0 0 0 0 7.356706583e-37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 1916.978487 0 0 0 0 3.487045379e-15 0 0 0 0 0 0 147440.8087 0 3.623331822 0 0 183.1304765 0 5.230684862e-13 0 0 6.017282615e-09 0 1.941972916 5.125043783e-05 0 0 1.017704369e-13 0 0 0 0 0 0 4.185052408e-22 0 0 0 828.8533949 0 0 2.167999308e-29 4.313284095e-24 0.0001795709563 0 0 1.016291581e-12 0 0 3.217418294e-06 0 0.005291580255 0 0 0 6.495415117e-15 0 0 0 0 0 0 0 1.280469938e-12 1515375.904 0 0 0 8.173607737e-07 0 0 0 2578.27631 0 2.73792961e-07 0 7.942810479e-14 9.9294048e-25 0 0 0 0 0.006350861147 993.8751037 0 0 7.365180065e-08 3.740304124e-14 0 2.552046452e-06 0 0 0 0 0 2.345373497e-06 0 0 2.119621802e-17 0 0 0 0 0 0 2.838475136e-10 5.969659168e-15 7.740363671e-05 0 0 0 0 0 1.134272794e-21 1751.957969 0 0 3.004739562e-06 5.445720119e-11 0 0 0 0.1500224714 0 1660.766929 0 0 0 0 0 1.206186766e-08 0 0.09926640292 0.001009881815 0 4.059988857e-23 6.071674239e-09 0.5420242358 0.02736859427 0.0001541698621 0 0 0 0 0.0008292490961 0 0 0 64038.89599 0 0 93.93079156 0 0 2.682578444e-09 0 2.083318133e-09 0 0 0 0.0008459001337 0 0 1.648714216e-06 0 1.437351213e-11 0 0 0 0 0 6.941231273e-09 8.771745741e-05 0 0 0 0 0 0 1.719090469e-06 0.9687867975 0 0 1090252.121 2.0680217e-15 441.9643376 0 0 514.210398 6.571297229e-15 0 0 0 0.0005307014414 3.925097046e-13 0 0 0 15367.03158 181228.3523 0 0 0 0 0 0 3.481947705e-08 0 3.662153942e-09 0 0 0 0 0 0 0 0 17.89661577 6.310280273e-15 0 0 8.848877343e-05 8.54084444e-05 0 0 0 2.19058253e-26 827.51743 0 0 2.475609087e-16 0 0.001678071961 2536615.652 0 0 0 61.4868458 1.936958464e-11 0 0 0 0 13.00802477 0 0 0 0 6828.179448 1.06908044e-05 0 0 0 0 16.48780178 5.758930329e-10 47613.39594 0 0 0 0 325.6445123 0 0.1584047338 0 0 3.662074475e-07 92.9963095 5.696674023e-16 0 1.423152774e-07 0 0 0.673966798 373581.077 0 0 0 26.02633878 2.892180202e-24 0 0 0 8.033289266e-06 0 0 0 0 0 0 0 +3.17867129e-28 0 0 0 0 0 0 35935.69428 0 0 0 1.928466659e-18 0 0 1.862583252e-10 0 1.653112301e-26 1.172276467e-05 2.591959487e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03306053435 0 4.181007248e-14 0 0 1803348.823 0 0 0 0 0 4.14475036e-05 0 0.02791683399 0 9.689817742e-12 0 0 0 0 0 0 0 4.763329292e-09 0 0 0 0 6.450553833e-15 0 0 0 0 0 0 0 2085830.136 0 0 0 2.583846136e-12 0 0 0 1.445943236e-11 0 0 0 0 6036.027538 0 0 213.9995586 0 0 2.393306861e-14 1.022652847e-09 0 0 2.964744622e-19 0 0 0 987.8135171 0 6.052498453e-05 0 0 0.1839856265 1.063162289e-16 0 0 2.844000979e-06 0 0 0 0 8.111937676e-30 8.445807775e-13 0 9.006053285e-13 0 0 4.727419059e-06 0 0 2070467.042 4.359380175e-07 6.461962169e-18 2.031456841e-09 0 7.970446808e-12 2.722587303e-18 0.0005157793762 0 3.940935121e-35 0 1.361098715e-13 5.405800858 0 0 0 1.149877075e-12 7.404189447e-19 0 0 0 2.735992104e-13 0 0 0 0 8.985883321e-05 0 2.093527701e-12 0 0 1.804995136e-23 0 0 0 0.004493769433 0 0 69.45854243 0 0 37067.96891 0 35598.59961 0 1.011641919e-38 0 0 0 0 1.890508643e-10 0 0 0 0.003599778112 0.3877544755 2.384251767e-30 0 0 0 0 0 1.355124906e-23 0 88.07856733 46.42982879 0 0 0 1854234.646 0 0 0 0 0 267.5862056 9.212709476e-15 0 0 0 0 0 1.596549267e-10 0 0 0 293329.8647 3.188472257 2084695.662 0 1.642547532e-11 0 0 0 0 0 2.694758832e-21 0 0 0 0 0 0 8.181545364e-14 0 2497.28359 0.0001758406705 0 0 0 0 0 0 410.1517373 0 0 1.036076854e-16 0 0.0001717155079 5.736530865e-25 801580.8079 0 327866.1249 0 0 0 2.773035001e-07 0 0 0 0 0 0 1.415432216e-27 0 1366.355838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 485.6917793 0 0 0 2.551355895e-15 2.104064283e-16 0 0 1.887772923e-12 0 0 0 0 0 0 0.1149848521 0 0 0.0003776133911 0 0 0 0 0 0 0 +0 0 7.310876489e-13 0 0 0 0 0 0 0 1.621912492 0 0 0 0 0 0 1.135701388e-16 0 119508.3142 0 0 0 0 0 0 0 0 0 0 0 0 0 9.845621891e-08 0 0 0 0 1.053287338e-21 0 0 0 0 0 0 0 0 0 16162.88482 0 0 0 96487.58499 0 0 0 1.9214157e-30 1.368511341e-12 0 0 0 377055.3622 0 0.7611757963 8.712954649e-08 0 0 0 6.955456268e-11 0 0 143613.6265 0.003981212681 8.449831423e-05 82744.85581 0 0 0 7247.349727 0 0 0 1.795279136 0 0.005805569018 6.971965662e-15 208.4695937 0 0 0 0 0 0 0 0 0 0 3.452010742e-26 0 3.515270464e-05 2.517741893e-13 353074.8549 0 2.063512861e-08 1.369635834e-11 0 0 5.207776067e-30 6.29028202 1.560476654e-07 0.0003958823549 0 0 0 2.014247698e-25 5.457443584 0 24.85304205 0.0002262839197 0 2.622453915e-06 0 99227.84201 0 0 0 0.01017747095 0 0 0 3.378738655e-25 4.959005645e-27 0 4.032779503e-30 0 0.6157890983 7.753284168e-29 0 4.646799806e-12 1.25766177e-14 3.503189562e-07 0 0 3.443122943e-29 1190907.855 0 1.834660837e-24 0.1976650881 0 1.390625158e-08 0 5.756579534e-18 1.415513202e-14 10.00565626 0 0 17.60126205 0 13604.36606 0 0.1297713549 0 6.129576946e-23 1107.634531 0 0.0001077758128 4.854963977e-12 3.723682815e-08 0 0 1.274716857e-19 65715.5761 0.002475954876 0 24.084155 0 7.035034e-27 1.855564675e-06 1.087052864e-05 1.751388924e-26 0 2.84885815e-28 0 0 4.199447505e-11 0 9.701716974e-19 0 0 0 5.984378871e-21 0.005711138683 0 0 0 7.560981257e-26 0 2.327475606e-28 0 0 1.536053096e-05 0 0 0 1.017634086e-10 2.585353077e-10 0 0 757.7809561 4.438442884e-09 1.608499493 2.076590217 0 0 3.301414876e-07 0 4.009365367e-18 6.404733078e-08 0 0 0 1.349919409e-07 0 6.086132677e-10 0 0 0 0 2.621135612e-11 6.494326676 0 0 0 0 0 1.671084478e-17 350.9095879 0 0 0.03275711889 0 0 2.574288019e-05 0 0 0 0 0 0 0 2.075060393e-07 1.832453327e-11 9.401014389e-23 0 9.130406327e-21 0 2.619203773 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.754972208 1.143180864e-19 0 0 0 0 1576.235275 0 0 1.266366254 0 0 0.03633200007 0 0 0 0 0 0 465.7625291 0 0 1.628767567e-27 0.02833810184 0 0 0 0.000802212231 +0 0 0 0 0 6.180094484e-09 0 0 4.594774242e-09 0 32951.8629 0 0 0 0 0 7.953258648e-07 0 0 0 1.751154906e-21 0 0 9.041671897e-11 0 0 0 0 0 0 0 0 0.01290695243 0 0 0 0 0 0 0 0 4.027321387e-14 3.132929801 0 0 0 0 0 5.242485819e-18 0 0 0 23855.67955 42447.37049 0 0 0 0.003923199554 0 0 0 0 0 0 1100584.099 0 0 0 0 0 0 0 72.27489466 0 0 0 0 9.252859634e-21 0 0 6.283981386e-14 0 3.78874323e-12 0 2.095212945e-17 1.441391396e-19 0 0 1.579434142 2.915477598 0 6.000734325e-27 0 3.341052236e-08 0 0 8.399680701e-12 3.913456613e-18 0 286635.6544 0 0 0 0 0 0 0 0 9.230165313e-16 0 0 0 0 0 0 0 0 0 0.001191067675 1.046254622e-23 0 0 0 0 0 6.035666972e-08 0 5.777252615 0 0 0 4.709711977 0 3.398354448e-14 6.857850836 0 7.534933366e-16 0 0 4.732101342e-09 0 0 3.359346411e-05 0 0 3123956.109 0 0.01455437899 1.7897755e-05 0 0 0 0 0 0 0 0 0 0 0 7.556235752e-08 0 0 0 2.346212383e-11 0 5.234247867e-10 2.98431438e-06 0 9.346601038e-06 4.384663066e-22 1.371809019e-22 0 0 0 0 0 0 0 0 4.578639964e-36 0 4.88105866e-13 2.522098475e-19 0 3.271966267e-14 1.925937317e-12 2.233908155e-30 0 0 0 0 0 0 3.594751562e-23 0 0 0 0 3.361767874e-18 0 0 1.292559049e-15 0 0 1.157023711e-22 0 0 3.441239493e-27 5.656776757e-13 5.111234445 0 22.57167843 0 0 0 0 0 0 0 0 0 0 0 0 0 8804.030013 0 0 0 4.672426624e-25 0 0 52.50558053 0 1.895864207e-09 0 13838.14647 0 0 1.219935379e-13 0.8200894979 0 1.252680007e-08 0 0.2484715437 0 0 0 0 0 2.878248427e-07 0 0 0 0 0 9.123022933e-12 487.5776099 0 0 0 0 0 0 0 2.004430425e-20 0 0 2.365649705e-07 0 0 0 0 0 0 0 0 1.360044521e-27 0.0002053718077 9.630320865e-15 0 0 0.9803191667 23585.54514 3.327152864e-21 0 0 7.939274106e-19 0 3493570.528 0 456992.6965 0 0 0 0 0 0 0 +0 4.700669352e-12 0 0 0 2.857379421e-27 0 0 0 0 6.630298652e-32 0 5.064554486e-19 2.13604689e-16 0 1.379795755 0 0 0 0 0 0 0 0 0 0 297378.9807 0 0.114052069 0 3.092747989e-08 0 0 0 0 54826.00761 317.7997225 0 8.76875519e-08 0 0 0 0 0 0 0 0 5.922734922e-25 0 0 0 0 0 0 0 0 3472.408237 0 0 0 2.563353848e-16 0 494580.5009 1.241200113e-23 0 0 2.501125405e-30 0.1097740436 0 0 1490705.15 0 0 0 4.185179477e-07 0 1.036749881e-16 0 3.907864326e-18 3.453782257e-15 0.2218433945 0 0 0 0 7.552169791e-24 0 1.4740332e-05 6.381205748 0 0 0 1.239032549e-07 0 0 0 0 0 0 0 0 9.243260838e-29 0 0 1.192021743e-27 6.111881659e-12 5989.253575 0 0.2861903717 0 0 0 0 0.008555633216 0 0 0 0 0 0 0 0 1.923257581e-29 0 168195.1046 0 0 0 4.113880068e-11 171016.1296 3.703823752e-09 0 0 0 0 0 0 0 0 0 2.43536338e-13 0 0 0 3.197194449e-28 16124.88592 0 1.288380346e-17 0 1.258372437e-09 0 2475.137417 0 0 0 0.002131255575 1.228417543e-12 0 17604.46767 0 1.777315819e-26 9.476786996e-08 0 5.40509122e-26 1.124065068e-07 0 1.27693743e-06 0 4.492365664e-28 0 3.091494127e-08 6.445176807e-05 1.000841934e-18 0 0.3792851132 0 0 8.38465643e-12 0 0 0 0 0 0 94096.54398 0 0 0 0.006032931979 0 1.224097389e-46 0 0 0 0 0 5.959194547e-07 0 0 0 5.513916643e-30 7.082412714e-08 6.283024295e-12 0 0 0 4.312880761e-05 0 0 234418.2739 4.244207259e-17 4.500581758e-06 0 0 0 0 0 0 0 0 3.481023595 0 0 7.812832504 0 0 0.0001589038626 0 0 0 0 0 0 0 5.889317237e-18 0 1.072576282e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 1.13532663e-08 0 0 0 0 1.050612612e-15 0 0 564489.3703 0 0 0 0 7.926762838e-06 0 0 0 0.2528945615 0 0 0 9.826535658e-21 4.8649513e-08 0 0 5.236732682e-16 0 0 3.824898773e-19 0 0 0 0 0 4.548067869e-26 0 0 0 1.463734955e-20 1.462876063e-27 0 0 0 0 0 5.148276958 0 0 0 0 +0.00042303688 0 0 1.104596699e-18 0 0 0 1.387269021e-06 0 2.432366712e-19 0 0 0 0 0 0 0 0 0 5.480401618e-26 7.345973059e-11 2.938835098e-11 0 1.804431951e-15 0 0 0 0.3152792946 0 0 134.1109849 7.308961453e-19 0 0 0 0 4.552936898e-28 3.166852964e-16 0 0 0 0 1651.867761 0 1.932022463e-17 0 0 0 0 0 0 2.486519105e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 14.69496791 0 0 0 0 0 0 0 0 0 5.393272333e-28 0 0 0.0006807889412 0.002887137183 0 0 1.892473047e-09 0 0 0 0 501829.6136 1143.312722 3.161896124e-14 0.7946108889 394.3033275 0.2841068368 2.723243015e-19 0 0 0 1.073054971e-24 0 1191.50026 58.08153473 0 5688.672598 0 0 2.095262042e-13 0 0 0 2.499447245e-09 0 0 5.985606532 0 4095.003225 0 0.5541913412 0 0 0 0 0 1.846582166e-09 0 2.396341515e-15 0 0 0 0 1.8566295e-08 5717.591929 0 0 0 3.218702321e-19 0 0 0 206156.039 0 3139.741546 0 7.829074712e-15 0 1.294988727e-19 4407.744002 0 0 0.7387039739 1.033425837e-08 5.045233955e-05 3.466968835e-13 0 0 0 5.563493024e-32 7.358291789e-14 0.0003565358541 9.886981509e-14 0 151.2375832 2.755175479e-22 0 6.452040002e-39 1.04993492e-09 1.780065665e-14 0 0.0002452302114 0 0 0 0 0.01693337167 6.622025436e-06 0 0 0 0 1.270425924e-13 0 0 0 0 0 0.01018479849 0 0 0.0007629076153 0 0 0 0 0 0 0 0 0 14.64882624 0 0 0 0 6.911745453e-07 0 0 0 0.2377620662 0 0 6.365370123e-05 0 4.188226198e-28 4.175115463e-07 0 0 0.009754863217 0 0 0 0 0 0 2.001518021e-22 0 0 0 0 0 2.501419261e-14 0 0 0 43602.41961 0 0 0 0 0 3.898697473e-05 0 0 0 0 0 0 0 0 0 9.829636814e-05 0 0 0 0 0 0 3.473090016e-08 82.1868492 0 0 9.193728668e-11 8.779937372e-29 2.826981404e-05 0 0 0 0 22.49192255 0 4.96201304e-12 0 0 0 0 18.04797744 0 0 0 0 0 5.827210707e-27 0 0 0 0 2.658870819e-33 713.9561409 0 0 287650.9712 0 0 0 0 0 0 0.8590674013 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 18269.76182 3.958133848e-05 0 1.276516556e-10 0 0 0 0 0 0 0 0 0 0 0 5.20346591e-24 0 0 0 0 0.009651537307 0 0 0.01630752779 7.153447249e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.179321825e-08 0 0.0004074676905 1.513886761e-06 0 0 0 1.371403327 0 0 0 1.525467316e-13 0 6.342256849e-06 0 0 0 0 0.159114924 5.196865779e-05 0 2795.83124 0 0 0 0 9.260722006e-06 0 0 0 3.073823963e-15 0 0 2.176199325e-30 0 108.7806276 0 0 0 2.138745003e-22 0 1.44217068e-05 8.499713782e-30 0.005137415894 0 6.255022263e-27 0 4.337688842e-09 0.008033184383 0 0 3.90394655e-16 0 0 0 4.471144046e-11 0 0 0 0 0.003785768126 1.045675073e-10 4.103655079e-17 0 0 0 0 0 0 142.422721 0.008322288383 14240.70713 1.616822488 0 0 0 72736.92067 0 265.7754848 3.310994701e-05 0 1.052565715e-09 0 2.353250627e-20 0 9.437461429e-12 4.491805038e-14 3.97281935e-23 4.748579778e-10 1362.827136 0 0 0 0 0 9.489607489e-13 0 0 1.192867482e-16 0.07163590796 8133.391788 0 0 2.516217588e-12 0 2.28210482e-14 0 6.062417303e-40 8.556606372e-12 0.000966411165 0 3.304983394e-13 5132.411506 1.15722635e-19 0 0 0 0 0.03112700947 2.020497385e-12 0 9.376384949e-31 63.42639914 0 0 2.708465555e-09 0 0 0 0 1.149008959 0 6.306561553e-08 0 0 0 365.2887855 0 1.156594952e-08 9.939615447e-09 4.140939966e-14 0 3.574609285 1.102100461e-09 0 3.275875918e-09 0 1.142691093e-10 0.0002198503584 0 5.9238489e-14 0 69687.40748 0 0 1.26002937e-33 0 0 0 0 3.640309934e-06 4.158264436e-09 0 0 21.07862349 0 0 1.599430131e-16 3.97600459e-07 0 0 0 0 1.224309263e-12 0 0 0 10.96496672 0 0 0 0 0 0 0 0 7.293935409e-14 0 2.406478607e-27 0 0 0.3304934076 1.134439164e-22 0 0 0 0 0.03043915566 0 0 0 0 0 0 0 0 0 0 0 0 1.031894524e-16 0 0 0 0 8.401338818e-09 0 0 0 0 0 0 0 0 352.9761227 7.873469207e-09 0 0 0 4.560905708e-39 0 2833018.639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 7.469460064 0 0 0 0.002015189899 0 0 0 1.253416997e-08 0 0 2.620839917 0 0 0 7.076553646e-31 0 0 0 0 0 0 1016.626801 0 0 0 0 0 1.308889943e-31 0 1.307492943e-25 0 0 0 0 0 0 0.1657562254 7.996164712e-11 0 0 0 0 2.492484714e-09 1.31779293e-09 0 0 0 0 0 0 7.040040015e-20 0 0 1.386262315e-08 0 0 0 0 0 0 0 0.002134663468 5.807047473e-05 0 0 0 33687.79353 5.695404595e-12 0.2317329686 0 3576.462907 1.975429948e-27 0 235.5728573 1.407763657e-11 0 0 0 0 0 0 0 4.102332852e-29 23.59076913 2.784127994e-14 0 1.320548771e-28 0 0 0 0 0 0 0 0 8.935072968e-14 0.002113977483 0 0 6.13967646e-26 0 0.0007002573655 0.0184675517 0 0.07808409044 0.6104901471 2.560403953e-18 0 0 0 0 8.344897899e-21 0 0 0 3.215515895e-14 0 2.547623089e-07 0 0 0 0 0 0 1.412001018e-12 0 0.3259942525 0 0.0002131555054 0 675.7541754 2.499088513e-35 0 0 263776.5908 151.9979109 1.701107911e-30 0 6.452553079e-20 2.159754326e-10 4.001306896e-17 0 0.003649140273 0 727237.5928 0 0 2978625.98 0 1248.75035 0 0 123.9887045 0 0 0.4771657984 0 0 0 0 0 0 0 0 4.998585675e-16 0 4.279980848e-22 0 0 0 294.8935099 0 1.235474649e-14 0 2.817735966e-15 0 0 0 460.548579 0 0 1.70524624e-07 0 0 3.252990686e-19 0 0 8.781304923e-05 0 0 685.8909217 0 0 0 0 0 3.700979853e-13 0 0 0 0 0 0 0.09167060397 0 0 0 7.739785475e-13 4.54294989e-10 0 1.110526352e-08 0 0.1095128454 0 203.1505098 0 0 0 0 2.629611663e-16 0 0 0 0.703271219 0 0 0 3619.924899 0 0 0 0 0 3691.476314 0 1.647104726e-06 0 6.080738014e-23 0 0 0 0 1.416857053e-13 0 0 0 0 2.486461875e-11 1.315985376e-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.457336637e-11 0 4.48715297e-35 3.51542631e-25 0 17025.93823 47064.4215 0 4.613148716e-13 0 0 0 25.56815197 0 0 0 0 0 5.006593062 0 0 0 0 3.795142088e-08 0 0 0 0 0 0 0 0 0 1.696395116e-14 +0 0 0 0 0 258004.9217 0 0 2.365774697e-14 0 2.105961338e-13 0 0 0 0 627561.1702 0 0 0 0 3.277359176e-12 0 0 0 0 2.701317293e-16 0 1.356624153e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 1.013913943e-14 0 4.550332443e-06 2.264264952e-15 0 0 0 0 0 0 0 0 0 1.941081227e-30 0 0 0.0009963040721 5.038315369e-19 0 0 9.178875372e-10 24.34659078 0 0 0 0 0 3.934486118e-21 0 0 0 0.1680600448 1.74971107e-09 910.6643368 0 0 0.4324578102 0 0 2.362259278e-27 0 0 0.0001404259145 3.890913365e-18 0 0 0.01368195259 0 0 0 0 8.751302258e-19 0.001790875163 0 0.000211939303 37234.74231 5.473173265e-12 0 0 9.395084576e-05 1.220495866e-07 0 0 0 0 0 0 0 0 3.47163358e-08 1.340508596e-21 0 0 0 0 539042.621 0 0 7.700287433e-09 1.625757098e-09 0 0 0 0 0 0 1.159593491e-47 0 0 0.01945856524 0 0 0 7.982871693e-17 6.601861313e-09 0 2.02440459e-06 0 0 0 5.664389795e-19 349287.1128 363.8753931 0 0 0 0 0 0 0 1.37826854e-25 0 4.435834189 0 0 0 0 0 0 0 0 4.863726245e-05 0 0 0 0 0 0 0 0 0 0 0 0 7.879950376e-13 0 0 0 1.504749222e-26 0 0 0 0.01183742196 0 5254.01682 0 0 0 0 0 0.003276288942 0 1.421552798e-21 11.89774577 0 0 0.124091707 0 0 0.0002047859009 1.59335617e-21 0 0.3254416511 3.118271336e-09 0 1.841018127e-15 0 0 2.893838105e-22 3.341391128e-11 13.73294906 0 0 0 0 0 6.900683111e-07 0 0 0 0 0 0 0 0 0 0 0 0 20.00014102 0 2.118782598e-17 1.055829403e-45 0 0 0 0 0 0 0 0 0 0 0 0.7177211058 0 0 0 4.946403878e-11 3.596190144e-29 66.8360748 0 0 0 0 0 1.075260858e-11 6.961608965e-13 0 0 0 0 0 0 0 112233.362 0 0 1.147165012e-18 0 0 1.675631215e-10 0 0 260.2861473 1.234115797e-09 4.469509016e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.112963816e-12 0 0 1.812263445 0 0 0 +0 0 0 0 0 0 0.02582006581 0 0 0 0 2.544016699e-09 0 0 0.0007180854558 1.01024346e-17 0 0 3.957008655e-06 0 2.455111229e-23 1.252907728e-26 0 0 7109.127302 0 2.249866882e-21 0 0 0 0 4.73372409e-10 1656903.981 0 0 0 0 0 0 5.109423884e-08 1.540983116e-07 5028235.797 0 0 0 1.446019825e-18 0 0 0 4.508708656e-25 0 0 0 0 0 4122.085629 0 0 0 0 0.1015675417 0 0 0.0009901041491 0 0 4.22779975e-09 0 0 9.02796811e-13 0 0 0 0 0 0 0 3.782267436e-07 0 0 0.003934906087 0 5.391019772e-23 0 0 0 0 20.33063158 5.55873646e-38 1.530286736e-15 0 0 0 4.083524051e-13 0 837.1870325 0 1.017729688e-12 3.644768682e-25 0 10.85076065 2.398126043e-34 1.10671055e-07 0 1.43231125e-26 6.216983349e-10 0 0 0 2.874653943e-09 8.095484176e-17 0 0 0 6.962095847e-12 0 0 0 1.129577504e-25 0 22044.46598 2442.398952 6.271781608e-22 0 0 0 7.115574109e-13 0 3.925605531e-05 0 7.025661764e-08 0 0 0 0 0 0.0004824729615 0 5.380038826e-10 0 0 0 1.9159427e-18 0 0 0 8.902180382e-19 106.86802 0 0 0 0 0 0 0 26.29841749 0 5.874499612e-14 0 0 0 149.9138018 0 0 2.070907213e-16 5.075035769e-17 0 0 0 0 0 0 1.388613975 91718.314 32.58656398 1.086614484e-12 1.056075517e-05 0 0 0 0 1.598362362 3.648459899e-23 440614.0348 0 1.001258766e-12 164.0593411 0 0 0 1.760228673e-09 2.422500827e-15 0 0 1.232070478e-08 0 0 0 0 0 0 9.336229162e-16 0 0 0 1.200632503e-11 0 0.505447666 0 0 0 963.2351285 0 9.009458861e-11 0 0 0 0 7.804661343e-20 0 6.23795522e-21 0 0 0 0 0 0 0 0 0 2.109987051e-18 56651.56777 0 0 4.523033454e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 3.606057909e-05 0 0 0 0 0 5313.475681 0 0 0 0 0 0 0 0 0 0 0 0 0 1417.149659 0 0 0 669.3940534 0 0 0 0 0 1.491430382e-13 0 0 0 0 0 0 0 0 5.268102194e-06 0 0 0 0.009971184177 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 4.863323744e-16 0 0 0 1.438314109e-07 0 0 0 0 0.001918204941 0 0 6.020843894e-10 0 0 0 0 0 0 8.960894651e-19 0 0 0 0 0 8.452321441e-26 0 2.784334857e-12 0 0 0 0 0 8.804213303e-09 0 0 0 0 1.519109092e-16 0 0.003946334422 0 0 0 7.887374187e-23 0 2.644557427e-19 0 0 0 5.685543231e-10 0 0 0 0 0 0 0 0 0 0 4.84442314e-15 0 0 63009.47583 0 0 0 0 4.083946871e-30 0.0002641990129 1.745269333e-05 0 0 0 0.1116290035 0 0 5.960936038e-19 0 0 0 0 0 0 0 1.787180228e-13 0 0 0 0 1459878.551 0 0 7.693831693e-09 0 0 0 7.728334511e-16 0 5.768248898e-27 3.655440465e-09 2.218927581e-29 0 0 0 0.001065650442 0 0 0 0 0 0 0 0 0 126125.0606 1.977004436e-09 0 11.40828473 0 0 0 0 0 0 0 4.013792301e-11 0 0 0.006321586846 3.503343433e-06 0 0 1.876766221e-31 0 0 7.172370497e-11 0 0 3.453570637e-22 4.387645249e-10 0 3.648670695e-18 0 0 0 0 0 2.339807377e-10 3.980978805e-37 0 0 4.731269087e-08 0 0 0 8.477661076e-40 0 0 7.011697769e-21 0.03012214821 1455990 0 0 0.02578533014 3.245875534e-29 2.774475263e-21 0 1888817.813 0 0 1.778028786e-09 0 9.960522086e-31 0 1.699412808e-22 0 0 2.474274791 0 9351.418798 0 0 8.043922044e-28 3.153077395e-11 0 0 0.004334248139 0 341220.5012 0 0 0 0 234.7291513 0 0 0 0 3.161473241e-06 0 0 0 0 0 1.396589531e-06 0 0 0 0 0 0 0 0 0.0001237109445 0.07211118448 0 0 0 2.84271739e-11 16.01286837 6.877323886e-27 0 0 0 1.958843648e-09 0 0 0 6.315083648e-21 0 0 0 0 7.55511342e-12 0 0 5.086584862e-13 0 0 0 588063.5732 0 0 427.4649274 3.055232316e-16 5.064343238e-22 0 0 0 0 0 0 0 2.766033523e-06 0 0 0 1.339881879e-24 1.629574817e-16 15.84432243 0 0 0 0.0002989959219 0 0 0 0 0 2.017426771e-07 0 57.07048932 9.923593469e-18 787119.3042 752172.6155 7.266366875 0 0 0 0 0 0 0 0 0 0 0 0 3.12361893e-35 0 0 0.3050502695 +0 3.217950513e-13 0 0.0004531566465 0 0 8.928654955e-13 0 0 0 0 0 0 115.5217021 3.939946813e-10 0 0 0 0 5.622128706e-14 0 0 0.0002719892783 0 0.004865106649 0 9.589650216e-25 0 1.470609792e-05 1.665801775e-25 0 0 0 0 0 0 0.01051648551 0 0 3.036542983e-14 0 0 407895.2299 0 0 4.19775876e-05 5.462993607e-11 0 6.155848739e-06 1.680565884e-41 0 0.02204409176 0 2.61389786e-21 0 0 0 1248.191756 0 0 30.56818242 0 1.711331798e-12 0 0 0 0 0 0 0.05569554878 0 3.396637307e-08 7.80155851 0.02948685624 6.064964414e-18 0 0 0 0 2.825433421e-10 0.00059544503 2.891895306e-13 0 0 6.041578783e-24 0 0 0 3.017671191e-09 0 0 8.663544441e-07 0.0002980361978 0 2.658903875e-26 0 9.974754311e-17 0.09403674129 0 0.02264202991 0 0 0 0.0004790136101 0 0 0 8.661918287e-22 0.0003390551726 0 0.0004858621154 0 0.05323449675 0 4.74143547e-38 1.841728107e-05 0 2.391782713e-10 4.841266119e-11 0 6.37099427e-06 1.508177185e-14 0 0 0 0 0 1.13635469e-14 5.4431638e-16 0 2.02502441e-05 0 0 1.293682911e-33 0 9.298543195e-11 0 0.2812855945 6.335245371e-35 1.504608284e-17 0 0 0 9.880963773e-27 0 0 1.642340603e-10 614.575322 0 2.322462116e-22 0 0 0 7025.299073 10.19113057 0 0 3.720553009e-21 0 0 0 0 0 0 0 0 0 8.290883963e-10 1.359762387 0 1.615971497e-20 1.824767851e-07 0 0 0 0 0 7.059790988e-20 0 0 0 9.324177805e-21 0 4.361585459e-23 0.03017713248 0 0 0 0 4.656144755e-26 1.1999017e-10 0 1121488.838 0.01067263904 7.721154268e-05 0 0 144304.3507 0 2.452580506e-12 2.130174614e-12 0 0 3.768165199e-17 0 0 0 0 0 0.6887095157 0 0 0 0 1.003107657e-14 1.321810859e-06 0 0 0 0 1.426217907e-11 0 0 0 0 6.519829593e-10 0 0 0 0 0 18.28775301 0 3.597152926e-08 3.306812345e-32 0 3.586125712e-06 0 0 1751.58369 0 0 0 6.286339471e-21 0 0 0 7.694032125e-28 3.547585342e-06 0 8.212615582e-10 0 0 0 0 0 0 0 0 0 0 0 0 2.319588533e-24 0 563.5134182 0 0 4596.347188 0 512.2193446 0 0 0 0 3.428039709e-05 0 0 0 0 1.906374848e-07 0 0 0 0 0 0 0 0 0 0 0 1.604869786e-12 0 0 0 0 0 0 0 +0 0 0 0 0 9.598620925e-16 0 0 0 0 0 0 0 0 0 0 0 0 1.733677439e-09 0 0 0 5.82117898e-06 2.383791887 0 0 0 0 2.224686313e-11 0 0 917.5342753 0 0 0 0 0 0 0 0 4.230323673e-16 0 0 0 0 0 0 0 0 0 5.76655434e-14 0 0 0 0 0 0 0 0 0 0 0 0 3.672778912e-06 2280.457078 0 0 2.098222706e-07 0 0 0 0 3.00403994e-05 0.003636405442 2.208741129e-12 0 1.577077113e-29 0 0 1.258764767e-25 0 0 1.437467795e-32 0 0 0 1895.180347 0 0 0 2.759398389e-25 0 0 0 0 0 0.002468280623 0 0 0 0 0 435812.7215 0 2.285965704e-29 0 0.1097825631 4.988068923e-14 0 0 0 0 22.56609491 0 0 0 9.406966772e-14 1.287444794e-17 0 0 4.441066136e-23 0.0003058490567 0 0 0 1.788127124e-19 0 0 5.935646806e-17 0 0 6.154373231e-15 0.02616640249 0 6.170090676e-18 0 0 0 6.902567001 0 97065.74688 0 4.730699164e-09 2.437626957e-13 0 0 0 5.27668355e-27 0 2.153156672e-09 0 2255.950623 0 0 0 0 0 0 2.882235252e-21 6.351812589e-28 7.443634044e-15 2.792746339e-23 0 0.0001625111497 1.751841534e-37 363.171396 0 1.446230675e-26 0 1.724090285e-12 756.5264744 58122.0115 0 8.292788827e-17 0 0 0 387161.4919 0 0 5.43528168e-15 0 2.403861463e-08 2.427998509e-08 0 0 4.540792007e-11 0 0 0 0.03443781046 1.05926063e-25 1.747426935e-05 2.832303534e-23 0 8.741755562e-14 5.822508124 0 3.661575979e-06 0 348.8023796 0 0 0 0 5.824263667e-21 0.001380990098 0 0 0 0 1.405869395 0 0 1.369977237e-10 0 0 0 0 0 1.817912636e-30 0 1.156301521e-07 3.052612826e-15 2.505383949e-05 0 0.001052424601 799603.4676 0 5.66088025e-11 0 0 0 0 0 0 0 0 4.971632825e-22 1.610710648e-23 139289.2568 0 0 0 2.001474503e-06 0 0 0.000682769933 21.7925764 0 1.269777463e-16 0 0 0 0 7.70930683e-07 0 0 0 0 0 0 0 0 0 0.0008376891763 0 0 0 0 1333.082608 0 1.793503162e-35 0 2.55680132 0 0 0 0 0 2877.970869 0 1.43810439e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.329578136e-16 +0 5.491758883e-26 0 0 0 2.402388777e-05 0 0 0 0 3.393762787e-33 0 0 0 0 0 0 0 0 7.925126977e-19 0 0 0 0 4.492340624e-13 0 0 0 0 0 0.0004021945193 4.426600356e-07 0 0 0 55.35582868 0 1.088335181e-11 1.276266398e-21 0 0 0 0 0 5.394413904 0 0 0 0 345973.0156 0 0 0 390096.1296 0 0 0 1.40135465e-21 0 0 15.20291916 0 0 1.442954946e-08 0 0 0 0 0 0 1.269998141e-28 0 0 0 0 0 0 0 0 0 0 0 6.535213157e-16 0 5.484389192e-05 0 0 0 0 0 8.218618639e-27 4.511337355e-24 0 0 0 0.05922403081 0 0 0 0 8.340867689 19595.72421 0 0.05047203595 9.923401037e-07 0 6.088780734e-19 0 0 0 0.0001488791654 4.01180095e-17 0 0 0 0 0 0 0.001518947601 5.604584895e-12 0 0 0 0 0 0 0.5622973167 0 6.805815524e-11 0 0 0 0.06936591826 0 1.368743736e-31 0.0001996362945 5.26799193e-08 6.728191874e-15 0 0 3.752350254e-10 0.004703002995 0 0 377986.7507 0 0 5.878633157e-07 0 0 0 0 9.566372655e-07 6.577853427e-25 1.768359509e-35 1.978365578e-14 2.883642436e-11 0 239.1796143 0 7.883551036e-16 7.348776845e-16 2.325962281e-14 0 0 0 0 0 0 1.051660839e-05 2.180060966e-18 0 0.004309423848 0 8.953063539e-26 0 0 3.962901323e-21 0 525552.3639 0.0003089962034 6.836006124e-16 0 0.0001555699895 0 13.28233873 0 0 0 8.399393112e-08 4.143488808e-32 413.0672038 0 0 0 8.714942221e-25 0 8.003496032e-30 115.6651927 0 0.469834915 1.030764521e-14 0 0 0 5.534443388e-23 946415.0813 2.890912394e-07 0 0 4.204187636e-17 0 0 0 0.06020611592 0 0 0 1.771362349e-28 0.0008829108476 0 310.5454668 9.24338588e-25 0 0 3.908229555e-06 0 0 0 0 297.898545 0 0 0 0 0 3.413409421e-21 0 0 0 0 0 0.00722479475 0 0 0 0 22.06049667 0 0 0 0.008540627801 0 0 3.108788838e-23 0.006057875464 3.568541633e-22 1.185377188e-09 0 0 0 0 0 0 0 900474.216 0 1.639979694e-05 0 0 2.584459772e-11 0 1.689458875e-17 0 0 0 0 1.932682921e-11 0 0 8.940015027e-10 0 0 0 0 0 0 0 0 1.34043724e-18 0 0 0 0 0 0 7.728636767e-25 4.480125927 0 0.004724044994 +0 567.5202877 0 0 0 75.85665081 0 0 0 0 0 3.556022016e-32 0 0 0 1600.001 987.2297057 15.9436748 1.479030548 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.652934785e-07 0 0 0 0 3.89928241e-12 0 0 0 0 0 4.119451959e-08 0 0 0 3.80236877e-12 0 0 0 228337.8604 0 0 1967.113995 0 0 0 2.456623918e-12 0 0 0 0 6.013788673e-15 0 1.609010041e-07 0 0 0 0 3385.916787 0 0 0 0 5.420579602e-08 5.521743238e-21 0 19.40091858 0 1.489996272e-23 1.605541816e-06 4.844566556e-10 0.004583746099 0 0.006671464776 0 0 3.524263524e-10 0 0 0 0 0 0 1.738474289 0 0 0 0 5.156594379e-27 0.06094295268 0 0 0.008778113194 0 0 8495.932089 0 0 0.931557826 465477.3656 0 533095.6531 0 0 3.191911167e-27 1.706290453e-08 7.316941235e-24 3.764709145e-05 0 0 7.300593893e-05 0 0 0 1.166542635e-07 0 0 6.194208793e-23 7.735192637 4.179569395e-22 0 3.151347491e-08 0 0 0 1.907712661e-18 0 6.373070895e-08 0 0 0 0 0 0 0 0 0 0 220.0714144 0 1.199359755e-27 0 3.464862936e-09 0.003714489757 0 0 9.698825176e-17 1.568844291e-07 2.771791379e-05 2.431930651e-07 0.0002067168207 0.0007286704371 0 0 0 132974.8039 0 0 0 2.02520801e-21 1.716880385e-28 0 0 0 0 0 0 0 0 0 2.00409617e-23 0 0 0 0 9.515838102e-13 0 0.2186720353 109.1934205 0 3.269496077e-05 0 0 2.953968755e-26 9.517555817e-16 0 627.7155964 3.424470131e-11 0 0 0 0 0 0 0 92634.14847 3.129071737e-07 0 0 1.233423397e-06 224.8183814 0 0 0 0 0 0 1.573031751 6.409589163e-10 4.457950164e-17 0 1.716686476e-19 0 930405.1022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.662786825e-23 0 285.9952424 7.697832499e-12 0.06675642702 0 1.929827852e-08 1.787833617e-05 0 0 0 0 0 0 0 0 2.200619467e-06 0 4.342772165e-06 0 0 0 0 0 0 0 0 0 368.7910364 0 0 7037.179157 0 0 0 0 0 0 0 0 0 0 1.735824205e-33 0 0 0 0 0 0 0 0 0 0.0004976392257 +0 0 0 0 0 0 7.738062169e-10 8.966871156e-08 0 0 0 0 0 0 0 0 0 2.085387314e-16 4.097363029e-23 0 0.7614182996 0 0.5385054517 0 0 0 0.005972564496 0.000279700999 0 0 7.649625717e-10 0 1.081952083e-18 0 0 0 0 0 0 0.8089299225 0 0 4.88388478e-14 0 0 0 0 0 0 0 0 0 0 0 0 5.08650852e-16 0 3.680132698e-25 0 4.007325738e-16 0 0 0 0 0 0 1.822065277e-07 0 2.757683192e-09 0 3.962074537 0 0 0 0 1.549743063e-07 2.246344583e-05 0 0 0 0 0 0.0001177473466 0 0 0 0 0 0 0 1.151025375e-44 0 0 0 0 0 0 103522.4693 1.195253773e-13 0.05272189001 0.000436114984 0 0 0 0 0 0 0 62909.98171 1.693231396e-34 0 4.34789613e-42 0 0 0 1.845802043e-16 0 0 0 0 0 0 0 0 0 66.27105574 0 0 3.19744367e-09 1.157000152e-17 1.789837165e-11 1942.593855 0 1.521783784e-29 51.81669622 0.0006910161542 3.267326471e-12 0 254031.561 0 1.32335791e-07 3.632168798e-34 0 5.243377408e-10 0 0 1.718316318e-14 0.1609608266 9.873370142e-05 0 5.858314489e-05 0 0 4.48979604e-29 0 0 0 0 0 0 0 0 1479.098364 0 3.571526226e-25 0 0 1.672936606e-26 0 0 0 5.865007495e-20 1.74069217e-09 0 0 0 0 0 2.094348726e-29 0 0 0 0 0 0.04620754699 0 0 5.054394374e-16 8.503042267e-07 4.269392828e-41 0 7.890827689e-11 5.304715693e-24 0 0 0 0 0 0 0 5.81954222e-27 1.648306443e-14 0 0 166438.5876 3.304834661e-09 0 7.220300627e-06 0.0005209707802 0 0 26.33699095 1.850410046e-06 171077.0605 0 0 113.4237866 16.51339763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2935.994373 0 4.588956117 0 0 0 0 1.904416016e-16 0 8.223310535e-08 0 3.570112676e-18 20.34381324 0 0 0 0 3.585556438e-05 0 1.387208957e-09 3.140445337e-10 2.992784722e-24 2.657939355e-16 0 240885.9404 0 1.481839081e-17 0.1931683933 0 110300.6692 0 0 0 0 2.016569488e-24 37493.17416 0 0 0 0 0 0 0 0 0 0 1.101336487e-18 0 0 4.128606542e-25 2.634997575e-28 0 0 36.87141988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [sample_PSD/image.dat] I_err: +1.565535285e-18 0 0 0 0 0 0 3.791491336 0 0.08368250542 4.204052439e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.91435525e-14 0 0 0 0 504431.8672 0 0 0 0 6.58532291e-06 2.931419333e-19 5.297827049e-14 0 0 0 6.100115615e-18 0 0 78439.43808 0 0 0 0 0.1669824172 4.972827548e-17 4.667741963e-12 2.429400055e-18 8.204844896e-10 0 1.924694936 0 0 0 0 0 2.478235353e-20 0 0 0 0 0 0 0.9445025125 0 0 3.564911741 0 6.956426696e-05 0 0 0 1.887636057e-08 0 0 0 0 0 0 0 8.979360172 0 0 10067.46775 0 0 1.895058252e-17 3.435214208e-33 0 2.013260826e-09 0 608861.3107 0 7.982426053e-18 0 0 0 0 0 2.497507137e-26 0 4176.700935 0 0 0 42.20366967 0 0 0 0 0 3.666696309e-15 0 0 4733394.25 0 0 1.91568395e-24 1.283362825e-21 1.314521275e-06 9.863405954e-08 0 1.259592713e-05 1.604627993e-15 0 0 347176.4289 0 0 0 639224.9293 0 0 0 0 0 0 5.089920663e-28 1943321.724 3.238757475e-13 0 0 1.076780551e-40 5.762668072e-08 0 3.6675046e-05 0 5.417840859e-24 1.696899291e-05 0 0 0 0 0 0 0 2.210969171e-22 0 2.836436961e-21 2.648985032e-28 0 0 0 0 0 0 1.082622945e-36 0 3.330252731e-23 0 0 0 0 0 0 0 2.102062321e-16 0 0 1.858365833e-11 0 0 0 0.0001183000596 0 0 0 0 0 1.061958997e-09 0 0 0.00827136669 0 0 0 3.452223919e-07 0 0 0 5.986906435e-06 0 0 0 0.05586574949 1.401609836e-06 0 0 0 0 15.49941841 0.9706342942 0 1.327685045e-21 86.69093552 0 2.860747335e-09 0 0 0 0 398710.2708 0 3.959346457e-09 6.290586513e-22 0 0 0 0 0 4.348776513e-21 0 0 0.06951254705 0 0 0 0 5.261764202e-16 0 0 0 0 0 0 0 0 0 1.729540144e-39 0 0 9327.628122 0 0 0 0 0 0 0 0 0 9.701263863e-10 0 0 0 0 7.31506467e-43 0 3.549106688e-14 0 2.679017551e-37 0 0 4.908557028e-10 0 0 3.087885432e-16 4.380370022e-28 0 8.077033494e-18 0 0 0 0 0 0 0 0 0 0.00111406478 2.238510771e-38 0 127537.8261 0 0 +0 0 0 0 197497.518 0 0 0 0 2.309641137e-10 5.197426731e-16 3.203323779e-15 0 6.457526344e-07 0 0 0 0 0 0 1.66886121e-05 0 1.534755228e-13 0 0 0.2648901961 1.744402906e-18 0 0 0 0 0 0 0 6.975306442e-08 0 0 2.734559989e-05 0 0 0 2.10591956e-11 0 0 0 1.991438156e-21 0 1.320288448e-11 4.598416145e-17 4.61174685e-10 0 0 0 0 0 0 4.51907946e-12 1.179212616e-12 0 0.0004072910275 0 0 0 0 0 0 0 1.178888323e-11 0 0 0 0 0 0 5.110343716e-13 1.285959871e-07 0 0 0 0 0 0 0 0 0 1.296289794e-14 1047.268329 2.639221636e-09 0 0 0 0 2.552416593e-05 0 3.412334626e-31 0 2.979727358e-13 0 0 0 0 0 0 0.7321413644 0 0 0 211238.6502 1.037386324e-12 0 0 0 7.80335168e-28 0 0 0 0 0 1.443495066e-19 3.514844773e-40 1.714221399e-15 0 9.422026477 0 2.075897632e-27 1.148285238e-31 0 0 0.3385531006 0 0 1.511003344e-29 0.00133665839 0 0 0 0.0002359014897 0 0 0 1.929051045e-21 143.6740074 0 0 0 7.106389791e-29 0 0 1.884118923e-20 2.057387578e-11 7.987921867e-10 0 0 3.063797759e-20 1.89205713e-12 0 7.863677377e-14 3.20354481e-18 1.56936761e-12 681.6735215 6641.369934 0 0.00304333062 0 760.9955609 0 0 0 0 0.008168337593 1.501233992e-10 0 0 6.454575681e-06 2.151527743e-19 3.195432167e-06 0 3.255326366e-14 0 1.812991985e-10 5.368243717e-15 2.067527021e-24 0 0 0 0 0 0 0.466815659 8.476732685e-05 1.14684126e-13 0 0 0 0 0 0 0 0 0.0001337676207 1.781163109e-27 6.305694447e-13 1.434471763e-14 0 0 0 0 0 0 7.591572271e-14 0 0 0 0 0 0 0 0 0.08688162154 0 0 0 0 0 7814.691934 0 1.858456137e-17 0 0 0 3.163860869 0 0 0 0 0 0 0 4.35961884e-22 0 0 1.098167826e-21 0 0 0 7.155090832e-43 0 0 0 0 0 0 0 0 0 0 1.093923844e-05 0 0 0 6.362758285e-12 0 0 0 0 0.00237604739 0 0 0 0 1.208347235e-10 0 0 0 0 0 0 0 1.926826235e-18 0 0 0 0 0 0.0009365971421 0 0 0 0 0 0 0 0 4.30950162 0 0 0.04164864381 5062.367376 0 0 +0.2328833976 4.03670501e-19 0 7.225159016e-07 0 0 0 0 0 1.634657681e-23 0 0 1.340226951e-30 0 0 0 0 0 0 6.964471486e-13 0 0 0 0 2.759289026e-10 0 0 0 0 0 0 0 0 0 0 940.2667736 0 0 0 0 0 0 3.069293371e-22 0 0 0 4.302050212e-09 0 0 0 0 0 0 0 3.773840137e-26 0 2.858894791e-05 0 0 0 0 0 0 0 100.272968 3.463945148e-13 0 0 0 0 0 2.526104306e-11 0.05129799086 0 3.025502042e-06 67412.47622 0 0 0 1.853863777e-05 0 0 1.697908865e-25 0 0 0 4.329659938e-41 1.758025135e-11 0 0 4.379561145e-29 0 0 0 229.8564528 9.783676247e-27 0 0 0 0 0 0 0 43953.48916 423173.5734 0 0 1.390887871e-11 0 0.0001288008874 0 0.0004171819339 0 3.280364394e-12 0 0.01272493997 0 5.524936994e-18 0 0 0 0 0 6.851957642e-22 2.026649504e-13 0 0 7.188217343e-27 0 0 2.7090881e-20 7.136867474e-27 3.786611647 34.0809278 0 5.124998448e-15 91.09886245 0 0 0 0 0 0 1.072963333e-12 0 7.846705663e-23 19.45798355 3.095525961e-17 0.08661426735 0 0 1.556096207e-29 4.292850366e-27 0 0 0 3.385862726e-11 0 0 3.394837881e-20 0 0 0 0 0.3210717273 0 0 0.4069880297 0.0101300421 0 0 0 2.066586312e-16 5.172312923e-13 0 9.251686529e-18 0 0 0 31.1672068 0 0 0 0 0 8.579139944e-08 0.0001295255803 7.68554873e-13 0 10560.54186 0 2.315512604e-13 0 0 2.99424877e-21 0 0 1.493458542e-15 0 2.463865721e-09 0 0 0.008999879621 0 0 0 1.046062606 0 0 0 0 0 2.592246117e-07 0 0 0 0 0 0 0 0 0 0 5.232077744e-19 0 0 0 0 0.7748960748 2.260290083e-12 0 0 0 0 4.107164446e-15 0 0 0 5.602457673e-12 0 0 0 0 0 1.883014054e-20 0 0 0 0 0 0 0 0 0 2.648723728e-13 0 0 7.181154399e-14 0 0 0 2.463730055e-28 0 0 0 5.083008768e-26 0 1.117142135e-19 0 0 0 0 0 0 0 0 1.036297524e-10 0 0 0 0 217.9512526 0 0 0 0 1.635343162e-40 0 0 0 0 0 0 0 5.54778118e-08 0 0 0 0 0 +0 0 0 3.238423175e-09 0 0 0 2.434427607e-08 0 2.829365723e-25 1.454905581e-17 0 0 0 0 0 3.183516455e-11 0 0 0 1.056420552e-17 0 0 0 3.850487694e-13 0 0 0 0 0 3.880054398e-18 0 0 0 5.989477142e-26 0 0 0 0 0 0 0 0 0 1.885732991 0 0 0 0 0 2.808168006e-24 1.41039071e-24 0 0 1.494528604e-24 5.230305824e-11 0 0 0.7844364795 0 0 2.217747571e-06 6.623747607 0.0001329304089 0 8.005752461e-24 0 0 0 0 0 2167808.652 0 0 0 2.884241808e-25 0 0 0 370.327177 0 0 5.298487907e-17 0 0 0 4.545678748e-11 2.226718414e-06 0 4.35001547e-14 0 0 0 1.272087216e-21 1.699098041e-20 0 4.86289218e-27 0 0 2.814802003e-25 0 0 0 3.1861522e-18 0 0 0 0 0 0 1.057400741e-26 0 0.04012865348 0 0 0 0 8.070763122e-09 0 8.99204792e-28 0 0 0 0 0 0 0 0 5.277777863e-06 0 0 0 0 5.957462372e-20 0 0 14.55359073 0 14.37186647 0 0 0 0 0.001825958539 0 0.0004951166907 0 0 5.527766261e-07 0 0 0 0 0 0 1.94908523e-30 0.002712686878 0.1086152856 0 1.132620021e-08 0 0 4.242622093e-15 0 1.791326501e-07 2.766899315e-31 1.883674455e-05 0.1234087483 1.98325637e-08 0 0 0 3.53545242e-16 0 0 0 0 0.0001396557303 0 9.102605565e-15 39950.42674 7.943342194e-15 0 0 2.484398008e-05 0 0 0 0 0 0 0 0 224565.8277 0 8.961720637e-11 0 0 0 0 0 0 0 0 0 3.568566508e-24 0 0 0 2.529353414e-08 0 0 1.873212498e-10 0 0 0 0 2.446862223e-05 0 0 0 0 0 0 0 1.358048403e-15 0 3.232223146e-26 0 0 0 0 0 0 0 0 0 0 0 0 7.751488333e-12 0 0 4.799560643e-18 0 1.803285728e-26 0 1.878396752e-14 3.966378809e-13 3.25296387e-05 0.0003298645744 0 0 0 4.650948542e-17 0 0 0 2.372685711e-09 0 0 4.736628531e-11 0 0 1.967375045e-22 0 0 0 0 0.5597233465 0 0 0 0 5.60786338e-27 0 0 0 0 0 0 0 0 0 0 0 7.8418519e-20 0 0 0 1.687038037e-24 0 0 0 0 0 0 0 1.896617336e-41 1.06543423e-13 +0 0.007270736183 0 0 43.7970554 4691284.945 0 1951.67562 0 0 0 0 0 0 0 0 0 6.944875742e-27 0 6.486814183e-18 0 2.336089456e-15 3.901884655e-34 0 0 0 8.910978572e-30 275591.8264 0 0 0 0 323.3167241 0 0 2.956792046e-10 0 508.51899 0 0 0 0 0 0 0 0 0 0 0 0 1.281341742e-11 0 0 0 0 0.001066933404 0 0 0 9.573478351e-26 0 0 0 1.082565301e-25 0 3.801833246e-12 0 0 1.338067246e-27 0 0 0 0 0 0 0 0.002189337648 0 2.197835846e-08 2.589568105e-21 0.001157642557 0 0 0 0 0 375545.7896 366.9808471 0.06602170249 0 2.028644089e-18 1.361236404e-28 7.711541029e-07 0 0 0 0 0 0 9.34820079e-14 0 0 1390.165282 0.1892159246 8.40634339e-13 9.662701168e-13 0.23968015 3.818957125e-08 0 5.884771827e-20 0 0 0 0 0 4.419939936e-14 0 0 0 19513.64432 3.190381025e-26 0 0 0 1.197643011e-17 0 0 0 0 5.467805141e-08 0 5.625806833e-30 0 0 0 2783949.831 4.2350755e-05 0 0 0 0 6.468297099e-13 8.82260425e-24 0 0 0 0 0 0 0.0003159226339 1.284428707e-06 3.904036878e-32 0 1.794456878e-06 1.46202171e-05 6.599262741 1.596696936e-10 5.444125685e-19 0 0 3.117721487e-13 0 0 170.1102944 0 0 0 1.824256578e-11 0 2.237678903e-27 2.613183974e-16 77.68564642 0 0 1.601249844e-09 0 0 0 0 0.6328119641 0 0 16.00159914 0 0 4.111345289e-28 0 0 2976.16391 0 0.4292547713 0 1.631606006e-23 0 0 0 0 0 2.498955763e-15 0 0 0 0 1.040455587e-22 0 0 0 0 5.877915291e-10 0 0 0 6.425637532e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 9.360236337e-21 0 0 2.720083204e-06 0 0 0 0 0 0 0 0 0 5.638160651e-13 1.761116631e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 4.310209565e-08 0 0 0 0.004918888266 6.515385311e-27 0 0 0 0 0 0 0.4710522573 0 0 0 3.121863639e-12 0 0 0 0 0 946459.1507 0 0 7.824738346e-11 0 0 0 4.215638956e-06 0 0 0 0 0 3.936491617e-15 0 0 0 0 0 0 0 0 4.978226228e-27 0 +6.580082234e-25 0 0 0 0 4.019177554e-13 3.050435077e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 1.7321956e-24 0 0.04128365588 3.020154418e-13 0 0 0 0 0 0 0 0.0003692876983 0 0 0 0 0 0 0 0 0 0 0 0 0 537075.3764 0 4.162165234e-19 0 0 3369997.045 0 0 0 0 0 0 0 1.417496874e-05 0 0 0 0 0 0 0 0.1780493396 0 0 1.040878993e-05 1.470596199e-15 8.301765565e-13 1.137189798e-10 0 6.544850528e-14 0 3.001108651e-12 0 0 0 0 0 0 21.48439281 3.189725068e-11 0 0 0 0 0 0 0 0 4.969676669e-43 0 0 0 0 26.55375903 0 0 201958.6581 0 1.780126597e-13 0.001948084881 0 0 0 0 1.942547416e-19 0 1.812205122e-15 8.041073592e-07 0 2.653006872e-10 0 1.755866e-27 0 2.11527439e-05 1.644100119e-15 0 1.300803826e-14 0 0 5.037292262e-13 0 1.196249969e-18 0 0 0 0 0 0 0 0 4.946152333e-30 4.489609913e-06 0 0 0.002658995166 2.837508654e-18 1.852825997e-06 0 1.873534725e-06 7.918436042e-13 0 0 13.64335046 0 0 0 6.061812067e-21 0.0007373656807 0 2.988776692e-11 0.04107951663 0 0 0 0 0 0 0 0 0 0 0 0 2.405330134e-10 0 4.12966594 0 0 0 5.054274269e-25 0 7.948071273e-11 0 0 0 2.645471918e-24 6.048217511e-22 0 0 38.22021598 3.62653384e-26 0 1.10756545e-20 0 0 1.248749568e-11 0.0005656475694 0 0 0.004488234511 0 6.408581792 3.600525347e-18 2.028733282e-28 1.751272033e-21 9.727480453e-15 0 4430.69616 0.1412635413 0 0 0 3.989864504e-14 4.876661666e-09 0 0 0 508.2005042 0 0 0 0 0 0 0 0 1.040935338e-06 0 0 0 0 0 0 0 0 0 7.58581209e-15 0 0 0 0 0 0 3.488909944e-32 0 0 0 0 0 0 0 4.654554418e-16 0 0.3026058066 0.01775900609 0 0 0 0 0 0 0.0006749045169 0 0 0 8.789357181e-08 0 0 2.481800082e-06 0 35.25311814 0 0 0 0 0 5.742723019e-16 0 0 0 0 0 0 4.550705816e-25 0 0 0 9.805814696e-23 0 0 0 0 5.649893344e-17 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2.049138476e-07 0 0 0 0 0 0 31.85473309 0 0 0 0 6.216124361e-26 0 2.568296781 0 0 0 0 0 0 0 0.6441851575 2.328363508e-06 0 0 0 0 0 0 0 0 0 0 2.468742798e-11 0 0 0 0 0 0 0 0 6.586487124e-10 0 0 0 0 0 1.634675086e-08 4.533963619e-19 0 1351261.656 0 0 0 0 1.31394616e-10 0 0 0 0 0 5.884288823e-12 0 0 0 0 0.002314642976 0 0 0 6.185749879e-13 1720.636465 0 0 0 0 654213.7199 1.610173744e-07 0 0 0 0 3.400043069e-26 6.820966246e-07 0 1.379807532e-06 0 0 0 0.006144796126 0 0 0 0 0 0 371071.3548 0 0 0 0 0 0 2.204455153e-05 0 0 1.49836072e-19 0.0003511068732 0 0.0001724492635 0 0 8.503094016e-09 0 9.47403171e-26 1.578549873e-21 7.910911955e-14 0 1.135856689e-20 8.070066559e-13 0 0 0 0 1.966222427e-12 1.152094838e-08 0 0 0 1.87633292e-11 0 5.857233482e-12 1.282175973e-15 2.667436551e-31 1.176359269e-23 0 0 2.663288737e-35 0 0 0 0 0 0 0 3.377459034e-20 4.556670862e-05 8.221841949e-15 3.485048492e-16 0 0 0 0 2.58091616e-26 1.163623232e-15 3.047310652e-08 0 8.693166824e-07 0.08436367942 0.01203560955 437.4139436 0.004930596315 0 0 0 0 0 0 0 0 0 3.574976079e-25 7.397699097e-13 0 0 0 0 898238.2354 2.213543101e-07 20.52646654 0 60112.30355 0.001176489271 0 0.006259945865 4.293555691e-18 1.384735691e-13 1.703415804e-29 1.454169879e-09 0.003893996645 0 0 0 0 807.5607674 0 0 0 0 0 0 3.777477031e-09 0 4.848101931e-10 122.89873 0 0 0 0 6.068399103 1.039760026e-24 0 0 0.001429259038 2.037378098e-12 6.859001931e-14 3288076.923 0 0 6.543498852e-10 8.632450974e-09 1.499594275e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 486.3336974 0 0.01034386714 98572.8094 0 0.050027481 0 11.17788284 0.01088369558 0 0 0 0 0 3.889121982e-21 0 0 1.348148485e-05 0 0 0 0 347423.3096 0.03005723998 0 0 0 0 0 0 0 0 0 1.135050261e-26 0 0 2.048616998e-11 0 0 0 9.417882151e-15 0 0 0 9.870319852e-15 0 0 0 0 0 9.129920452e-07 0 0 0 0 +0 0 0 0 0 0.5859895277 0 27.82311999 0 0 0 0 0 2.067262837e-23 0 0 4.120411589e-09 0 0 0 0 0 0 0 0 0 0 0 0 0.0001457302813 0 0 0 0 0 0 0 0 69544.34661 9.823436064e-12 0 0 0 0 0 0 0 1.460830173e-33 6.218355549e-20 0 1.558627417e-15 43604.04952 0 1.471964417e-24 0 0 0 0 0 0 74.93461517 0 1.276812869e-13 0 0 0 0 0 0 3.202498131e-16 0 0 0 0 0 2.802296855e-13 0 0 0 0 7.503651765e-31 0 0 0.05919040786 0 430.3519675 1.68920245e-14 0 0 356169.5972 0 0 0 21.52739159 1.796981899e-22 0 4.26804371e-09 0 0 36.28610326 0 0 0 2.214248373e-22 0 0 1.677646033e-08 1.152315873e-07 0 0 2.99038929e-27 0 1.861831917e-13 1.336160763e-09 0 3.97884247e-33 0.08643469362 0 0 1.215970752e-22 0 5.328762092e-11 0.006658597406 5.529764739e-23 7.032736445e-17 2.260856518e-20 42.65689026 0 0 0 0 2.754916112e-14 0 0 0 0 0 0 0.001046600022 1.54656775e-08 0 0 2.205322301e-09 1.309357869e-10 0 0 0 0 0.3057105789 4.851627247e-09 0 0 0.3149158196 0 0 0 0 0 0 0 0 0.6896982229 0 0 0.0004810319269 2.365809315e-09 0 5.026887365e-23 0.0008541302086 4.713230696e-07 0 0 0 422.8729708 0 2.17017839e-29 0 0 7.66823513e-09 0 0 0.004475168192 0 0 155.5821223 0 0 0 0 0 2.781257514e-05 0 0 3.649584164e-30 0 0 0 0 0 948766.3025 3.087947e-06 0 0 0 0 9.496314317e-10 0 0 2.241519738e-15 8.883868648e-29 0 0 0 0.007560030935 0 0 0 0 0 0 0 263920.7745 0 8.235810061e-16 6.140905061e-11 0 0 0 0 0 0.0005470553303 0 7.051385234e-06 0 2.709920207e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 7.846514518e-11 0 0 0.02151579721 0 0 0 4.710596065 0 0.3222088895 0 0 0 0 5.700942698e-07 945.5701508 2.766891871e-11 0 0 0 0 0 0 0 1.621237305e-21 0 0 0 1050.947105 0 0 3.708970009e-25 0 26.1366019 13.14857982 0 0 0 0 0 4.351240573e-17 0 1845417.246 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.197027744e-34 0 0 0 0 0 0 0 0 7.466563894 0 0 0 0 6.429631099 0 7.938880734e-16 0 0 0 4.553615774e-23 0 0 0.03605428971 0 0 0 0 0 0 0 223539.0629 0 9.311786536e-10 5.585239551e-27 0 0 0 0.1795625072 0 0 0 0 0 0 13.9011261 2.294806038e-25 0 2.699209802e-11 0 1.074668877e-08 2.982337947e-28 0 0 0 2.555817362e-07 0 0 0 0 7.672010518e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.179662759e-06 0 6.686692902e-09 0 0 0 1.052726689e-13 1.577086464 0 0 355.1440617 0 0 5.803220554e-38 0 0 0 0 0 0 0 0 7.47188684e-15 1.055954805e-16 0 2.848163047e-31 0 0 0 1.416642238e-20 9.142921699e-14 0 0 0.1383264902 0 0 0.0001465308038 0 0 7.217477583e-09 0 1.037280853e-18 0 0 0 0 7.133392214e-19 0 0 4.308178692e-09 0 719.974129 0 116800.8784 1.513019158e-21 0 0.003459930874 3.334528859e-05 0 0 6083.564974 0 0 0 0 0 0 0 0 0 0 6.952375115e-06 0 9.377555387e-16 0 0 0 0 0 9.612937199e-11 0 0 0 1.769450759e-10 0.01194138137 0 0 0 0 0 0.0001325298203 0 9.311564479e-40 0 2.368495886e-08 0 7.338209283e-15 3.766303716e-20 0 4.949351433e-11 796240.7291 6.16712044e-06 1.289651867e-11 0 0 0 0 4.758043118e-17 0 0 0 0 0 0.001900669406 0 0 1.489608757e-05 0 2.451841992e-11 5.91756746e-10 0 0 0 2.040861404e-06 0 0 0.03298946769 1.376510161e-05 0 474.321987 1.295630861e-21 0 0 0 0 0 0 8.13701224e-05 0 0 0 0 0 1165.714001 0 0 1064869.998 0 0.003907907566 1.502131852e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9943.774823 0 0 0 4.946103084e-21 0 0 0 1.785123335e-21 0 9.864639859e-09 0 0 0 0 0 0 0 247.2217518 0 0 0 0 0 0 0 0 0.0126015761 0 0 0 0 1.258256714e-30 2.918804359e-29 0 0 0 0 0 0 4.884274467e-18 0 0 0 +0 0 0 0 0 4844.09691 0 3.689962511e-30 0 0 2316661.272 1.37341979e-13 0 0.0001106429819 0 4.740715434e-24 0 0 0 0 0 0 6.764832881e-06 0 0 2.59718922e-12 0 0.0004601621183 0 232669.476 3.595349459e-06 0 0 0 0 0.2154852428 0 0 0 0 3.275617001 0 0 0 1.67814688e-11 0 2.700049105e-36 0 0 3.135393945e-05 0 0 0 0 0 0 0 0 7.625246357e-10 0 0 0.01470395858 0 0 14.87645873 0 0 0 2919.274791 0 0 2.726837955e-23 0 0 1.450029443e-12 0 3.472823606e-27 2264998.837 0 0 2.057259586e-08 0 0 0 3.75219309e-20 0 0 0 0 0 0 1.558589682e-14 0 0.03451220784 0 0 4.886658592e-06 8.525477596e-16 81761.24966 0 1.399508436e-24 0 0 0 0 0 0 0 0 0 0 0 0 9.48011141e-24 0 2.93596904e-29 0 1.191524468e-17 0 0.009039324154 0 2.263707407e-07 294.4014117 0 1.03594337e-08 0 0 0 187.4638059 0.3322754784 0 0 0 0 0 0 0 0 0 1.430440949e-16 0 0 0 0 0 3.969250482e-17 0 2.082166645e-15 4.803627753e-15 2.183701525e-20 2.420753069 0.00383631958 0 0 3.899720221e-19 0 0 0 1.778408889e-23 0 0 0 0 0 0 0 1.630880119e-12 8.601584789e-08 0 0 0 2.058040331e-08 911780.838 2.361745295e-18 0 0 0 0.05711877025 1.812806225e-10 1558.618102 8284.040383 0 1.132093373e-29 2.591603107e-05 0 0 0 0 1.660075819e-26 0 0 0 1.041527899e-15 0.01819049125 0 0 2.453688375e-18 0 0 0 0 0 0 0 0.005328540773 0 2.801343411e-15 0 0 0 0 0 0 0 0 0 0 5.90113887e-14 0 0 0 89.62570434 0 2.769105563e-20 0 0 0 0 2.003784046e-07 0 0 1.472051406e-14 0 0 0.005413420105 0 0 0 0 9.215765013e-25 0 1.09104261e-07 0 0 0 0 0 0 0.0113365907 0 1830.698676 0 0 0 0 0 0 0 2.849421834e-07 0 8.264875285e-25 0 9.232136954e-17 537.8310993 0 0 0 0 28807.53845 0 0 0 0 0.0001941058317 0.000754118541 0 0 4.872454812e-12 0 0 0 0 0 0 1.058108608e-21 2.399788952e-16 0 0 2.800130429e-33 0 0 0 0 0 0 0 7.429474294 0 0 0 +0 408.9265558 0 0 2647.869424 0 0 0 0 0 0 3.836597235e-12 0 0 0 0 0 0 2.498227421e-09 2.917054148e-08 0 0 0 0 0 0.01480669805 0 0 0 0 0 8.114311345e-10 0 3.645703857e-07 0 5.518435878e-14 0 1.681672049e-08 0 0 0.0001933041229 0 0 0 4.083499612e-22 0 116998.3321 0 6.620352413e-21 7.635648153e-12 0 1.318865949e-14 0 0 0 0 2.971395405e-11 0 13685.23032 0 0 97.39239422 0 0 0 1.009283802e-26 2.673250091e-12 0 0 0 0 0 3.554701999e-13 0 0 0 2.388057153e-14 1.723812392e-11 0 0 1.700880859e-19 0 0 0 1.096068448e-09 0 1087421.447 0.05591425219 0 8.411489034e-10 5.619022723e-17 0 0 0 2.948386102e-25 0 0 0 0 0.000717835789 28.69384662 0 0 2.417903272e-10 0 6.543998148e-26 0 0.1280880432 0 0 4904.349324 0 0 0 1.200987156e-11 0 0 0 0 0 630.5808582 0 0.2125370343 1.636124973e-17 0 0 5.775293697e-20 0 0 0 3071525.729 1.555633425e-19 0 0 0 7.908113844e-09 0 0.04282635798 0 0 198811.6207 0 2.957006196e-22 0 0 0 4.20407474e-21 5.255632249 4.149255535 0 16147.961 0.0007014744612 2.752095788e-26 0 0 0 0 0 0 0 4.482314182e-26 2.904487382e-26 8.832807617e-09 0 0 0 79039.39117 2.71781802e-29 6.257529183 0 0 2.885071268e-06 0 0 0 0 1.151275721e-06 0 1.347839666e-21 6.390269322e-25 5.465283187e-06 2.073918561e-17 3.334540588e-15 2.758090876e-17 3.130810413e-08 0 0.04120045326 1.523716118e-08 2.442569406e-26 0 4.393051986e-06 1.29428471e-12 0 799.2058166 3.152036125e-20 0 0 1.025588202 0 0 0 0.002965626312 3.038365799e-12 2.111194623e-18 0 0 0 0 0 6.19375464e-24 0 1.695431051e-26 0 0 0 0 0 6.130183389e-13 0 0 0 0 1.961906735e-12 0 0 0 0 0 0 0 0 0 0 0 0 2.612815679e-19 0.0002642721179 28.19808885 0 0 0 0 0 0 2.108704709e-25 0 0 0 0 0 0 0.0001757973898 0 1.189592902e-07 0 1.248433349e-21 3.676216403e-16 0 3.025401014e-22 0 0 0 40.14351905 0 0 0 0 0 0 0 0 0 0 0 0 4.659175332e-23 0 0 0.009675782027 0.01450847706 106744.7903 7.741393846e-17 3.070178683e-15 0 0 0 1.951847898e-21 0 1.807853347e-06 0 0 0 0 1.26637097e-30 0 0 383468.0486 0 0 0 +0 0 0 3.418504842e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5351354.181 0 0 1.837615162e-12 0 0 0 0 0 31.59133539 0 0 0 0.004299041433 4.179217631e-17 0 0 0 0 0 0.0152329437 184.1990882 0 0 0 0 0 2425131.273 0 8.944244733e-10 0 0 0 6.858373705e-21 6.543782671e-16 6.292143565e-15 0 0 7.516538158e-21 0 0 0 0 0 0 2.522892895e-09 0 0 0 0.001027537261 0.000507077048 1.667261137e-15 0 0 1.223080645e-08 6.584068485e-10 0 0.003927667566 42.00123193 5.008388252e-11 0 0 7.690132793e-29 5.112838261e-06 0 7.869075776e-13 0 2.824538073e-17 0 0 0 0 3.423961987e-14 0 0 0 0.7588560448 1.884776286e-26 2.957033177e-14 2.891549356e-12 5.865677376e-09 0 0 6.832972085e-14 5.632668125e-08 0 23073.55807 0 0 0 3.812901194e-10 0 0 1.143746357e-09 0 0 2.324000788e-15 0 0.0008948661516 18110.97906 0 0.05238080057 0 0 5.729288013e-09 0 6.249373193e-14 0 1.60334291e-12 0 0 0 1.140423962e-22 0 0.0001403165772 3.514162089e-20 0 9.808588263e-07 0 64.05902294 0.01052287117 0 0 0 2.257774576e-05 0 8.288945177e-28 1.689824365e-07 0 0 5.369998375e-12 8.244602306e-28 0 0 0 0 0.02178390181 0.0007295039683 1.550609819e-10 0 0 0 2.580264821e-08 8541.815379 2.226258626e-22 6.656268312e-23 4.274767891e-28 2.858466724e-06 0 0 0 4537.191693 6.436217345e-16 0.4111641618 0 0 0 0 0 0 0 0.9261091415 0 0 5.535275863e-10 1.648362873e-07 2.335158357e-26 1.235320213e-12 0 0 0 0 0 0 0 1.788591351e-09 5722308.52 1.215080582e-34 0 5.919590809e-10 1.12166913e-19 0 37534.00077 0 0.4988869 0 0 0 5.058750068 0 0.0001684369904 0 0 0 5.316065595e-11 0 1.363546431e-29 0 0.0006807720072 0 0 0 0 316.4774251 1.677912842e-15 3.990554241e-32 0 0 0 6.00266681e-05 0.002052064045 0 0 0 0 229.7876799 8.729809532e-23 0 0 1.51636575e-09 2.099573307e-15 0 1394.371892 8.146593412e-16 5.238363059e-11 0 0.2483370188 0 0 0 1.211653878e-09 4.822720739e-29 4.01440793e-19 2196029.639 0 7.473861553e-15 0 0 0 6.562527356e-05 0 0 0 0 2.194871985e-05 0 124.8693398 0 8.419359031e-19 0 0 3.092092847e-05 0 0 0 2.721201806e-09 0 0 0 0 0 0 0 0 6.815127626e-28 0 4.029811904e-27 0 211532.3652 0 0 3.285466295e-06 1.7847589e-13 1.022452092e-08 0 0 0 0 0 0 +180798.8748 1.691532726e-15 1.386491778e-06 0 0 0 0 0 0 0 78.85105 4.419496756e-07 0 0.001586237403 0 0 2.127696341 0 0 0 0 1645652.951 0 0 0 0.6451447766 1.860084897e-21 0 0 0 0 0 2.866624861e-05 2.542579012e-28 0 0 0 0 0 0 0 0 0 0 0 6.597416204e-10 0 3.375032419e-05 0 0 0 0 0 0 0 0 0 0 0.0003155196018 6.782182268e-22 2.942123949e-21 1.1435976e-08 77.50279458 0 1.483235703e-33 0 0 0.09900703486 1.4662167e-24 0 0 0 0 0 5.661464427e-29 0 0 0 0 0 168523.6402 9.150343644e-17 0.001064532373 502712.5491 0 7.005378493e-18 0 0 0 0 9.018326341e-14 2.034237953e-18 0 0 0 0 0 0 0 0 0 0 0 594.5781057 5.601759492e-05 0 0.03087873262 1.776294803e-10 0 0 7.627146175e-08 0 0 2.204316469e-11 1.650561162e-27 171156.9325 0 1.58778514 0 1.706291791e-20 0 0 0 0.01609934906 0 0 0 0 0.06730137022 1.474766026e-24 5.151384952e-14 5.363998009e-27 0 0.2599394579 0 0 0 0 0 9.472463516e-10 0 1.738241285e-25 0.4793080986 0 0 0 0 0 0 1.144154493e-23 1.040883568e-19 2.737793282e-27 1.578908876e-18 0 2.953683509e-13 2.822112025e-43 0 0 0 1.824383499e-24 0 0 0 4.461448336e-08 0 0 1.479846799e-23 0 0 2.137641629e-05 0 0 0 4033509.526 6.695212658e-25 0 0 0 7.579861076e-12 0 97129.66135 0 6392.445685 0 0 0 2.666435462e-12 0 0 0 0 0 3.946748598e-09 0 5.863032862e-06 0 0 0 0 1.76614298e-08 0.000239144136 0 0 0 0 0 0 5.494817086 0 0.0005652125163 6.192581148e-13 0.0005956423629 0.0607440017 0 0 0 1.417650679e-05 0 0 0 403994.1129 0 0 7.441288166e-09 0 2.334478403e-07 3.375281911e-05 0 0 0 0 0 5.114490638e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.541313277e-15 0 0 0 0 0 1.614329441e-38 0 2.002888473 0 0 0 0 0 0 0 0 0 3.081081429e-14 0 0 5.130391788e-18 0.02675724697 0 0 0 1.25003304e-05 0 0.0001042705607 0 0 0 0 0 0 0 7.343855545e-14 0 0 0 0 4.560576564e-38 0 0 4.908794587e-08 0 0 0 0 0 0 +7.219691092e-14 0 0 0 0 1.85812432e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.825630241e-14 2.911850256e-13 0 0 0 0 34.5785906 0 0 0 3.482838431e-05 0 0 0 0 2.146258755e-13 0 0 0 0 0 6.749806595 1.325934703e-20 0 0 0 0 0 0 0.001474499174 0 0 4.367692695e-11 0 0 0.8149167705 0 0 105120.2526 0 0 1.377913011e-21 0 0.000358988089 0.0003822961398 0 0 0 0 160093.1312 0.000187895546 0 0 0 0 0 0 0 0 3.111530463e-21 8.302792844e-23 0 0 1.455027528e-12 151767.2924 0 1.16573249e-05 3.224847168e-17 0 27.33832964 9.940895566e-16 0 0 0 54.63304082 0 0 9.044206756e-08 0 0 4.091717045e-21 2.366418976e-10 2836636.537 0 0 65.30439724 0 1.166200445e-16 2.560887433e-15 0 0 0 0.03067911285 0 0 0 0 3.267338384e-25 0 0 0 5900.720355 0 1.8356526e-06 0 8.783936366e-15 0 0 0 0.007099123788 6.833294015e-25 0 5.168231426e-06 0 0 0 0 0 0 1.3554805e-06 6.741398208e-11 50.64096622 0 0 7788.114475 0 0 2.319658851e-10 1.109105488e-07 0 1.092525386e-05 0 0 0 1.279964945e-13 6.459500745e-11 0 6.710548802e-10 0 0 3.501589748e-27 0 0 0 87.60789769 0 0 0 0 2.929465858e-15 0 1.104133313e-15 0 0 0 0 0 0 25939.75556 3.607053909e-30 2.228165996e-26 0 7.740842511e-28 0 0 0 0 1.069102488e-09 5.124242784e-06 33409.05641 0 1.824583312e-18 4.311903777 0.006834411285 0 0 0 0 0 4.002336493e-26 0 0 0 0 0.006723479697 0 0 0 0 0 2.904068919e-10 0.08577085607 0 0 0 0 0 0 0 0 0 0 0 0 6.447846426e-11 1.681610896e-13 0 5.656370582e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.478713071e-21 0 0 0 0 737993.4318 0 0 0 0 0 0 0 0 4.028836873e-17 0 0 0 0 0 0 0 6.431669693e-24 0 0 0 0 0 0 463049.5139 0 0 0 9.689797263e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2613.29921 3.899286734e-31 0 0 0 +0 0 0 0.07586305109 0 1.141192272e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.20977663e-06 0 8.040673579e-11 3.678730552e-10 0 0 0 0 2.529709716e-20 1.42157031e-26 0 0 0 0 0 565494.3221 0 0 1.954738776e-25 1951.65562 0 1.883634843e-19 0 0 0 0 0 4.916050372e-29 4.708307418e-21 0 0 0.0468911166 0 0 0 433.0422529 0 0 0 0 0 0 8.251852768e-29 843.0881261 0 0 0 0 0 0 4.477995661e-11 4.332295371e-30 0 1.547152698e-16 3.314858383e-11 0 0 0 0 0 0 0.03245239805 0 0 0 0 0 3.542052249e-06 0 0 1.055149851 0 4.741197021e-28 0 5.574766995e-20 0 0 3.484335262e-14 0 0 0 0 0 6.353697425e-08 1676.432188 0 0 0 1.388848297 7.359502328e-12 0 0 0.02296536459 0 1822405.079 0 0.1343315621 0 0 0 0 2.269444654e-05 0 3.506138538e-19 1.656925735e-26 0 2.828096605e-30 4.888497727e-13 3.035370572e-16 0 0 0 2.306784908e-14 3.910054269e-26 0 0 1.307971435e-17 0 0 0 0 20537.20519 0 0 0 0 0 1.264927344e-10 0 0 0 0 0 0 7.801664785e-13 0 1909382.799 0 0 1.770434283e-09 0 0 1.360044975e-18 0.02828065077 0 3.653343317 0 1.839878786 5.900847338 2339.449527 0 0 0 0 0 3.697816801e-09 2.585969125e-05 0 0 0 0 0 1.69407772e-20 0 1.340294166e-28 3.275934924e-08 0.113074462 0 0 507779.3493 0 5.119920634 4.289990228e-22 0 0 0 0 0.004501967185 0 0 0.00151384439 0 0 0 0 0 0 0 2.407444043e-14 3449199.74 20.36098333 0 0 1.985928129e-18 0 14.37646165 0 0 0 0 0 0 3.953283539 0 121130.8937 0 0 0 0 167179.5616 0.08521537124 0 0 2.188933216 0 0 3.079784979e-23 0 0 3.358035071e-28 0 0 0 6.016422035e-13 0 1.209595769e-22 0 0 0 0 9.545635181e-22 0 0 0 0 0 0 0 0 3.701238257e-20 0.01070990524 0 5.464996746e-11 0 0 0 0 0 0 0 0 3.860142781 0 1.794197954e-09 0 2.740373383e-27 3.309873861e-18 0 0 0 0 0 0.1304309386 0 0 369.7601813 0 0 0 1.819548861e-09 0 0 0 0 0 +0 0 0 0 0 0.0004796473781 42.6702751 4.20557123e-19 0 0 1.349340143e-05 0 0.0006194958202 0 0 0.0001337024897 0 0 0 0.001198417484 0 0 0 0 0 0 6032.686435 0 260141.1258 0 9.013067493e-24 0 0 4.16871415e-17 0 0 0 0 0 0 0.5646935653 2.055415482e-06 0 0 0 4.548759752e-10 0 0 1.625685103e-10 9.550764385e-16 2.907545176e-08 0 0 1.115514701e-05 0 740791.5061 0 0 0 0 0 0 0 0 0 0 0 0.02197936337 8.930371784e-26 2.059994083e-06 0 0 118627.3536 8.195236169e-09 6.780436086e-13 0 0 1.134613676e-22 0 0 0 0 0 0 13.16322708 0 0 1.20199129e-09 1.195468388e-30 0 0 0 3.212058053e-24 0 0 7.73653667e-11 9.01021569e-09 0.04973664224 0 0 5.363925757e-17 0 0.9322939478 0 0 138.9576032 0 0 68356.8025 0 0 151.1323948 0 5.811688786e-05 0 0 0 0 0 0.1936290856 1.435097888e-11 7.425566175e-10 1.70881387e-06 0 192.0576169 25064.79529 0 0 0 0.001161186041 0 0 45.335613 3.021712995e-14 0 0 0 4.472195636e-05 0 501853.9415 0 0.0002083163733 4.269683858e-06 6.221021911e-06 0 1.605133446e-32 0 0 0 28.67286006 2.463675e-12 0 0 0 0 13.38727176 0 0 0 0.1748068583 0 0 3.896802616e-12 0 0 0 3.867926121e-10 5.66664386e-07 0 0 0 0 0 1818.877078 82719.33335 0.5373123836 1803395.79 0 0 0.002048355329 3.365841499e-14 1448.806536 0 0 0 0.4573360517 0 2.996126872e-09 0 103955.461 9.551907985e-15 291.120844 0 2.524749132e-10 0 0 1.727506509e-10 0 0 115.4590827 0 0 13.18399779 3.238641547e-06 0 0 0 0 3.124014869e-07 0 0 23.64846616 2.575082762e-09 35.47028751 0 0 0 0 0.0005978612479 3.450404296e-10 0 0 0.001364694682 2.955822188e-05 0 0 0 0 0 0 0.01758158167 0 0 0 0 0 2.301263925e-08 0 0 0 1.63530382e-10 4.190305292e-20 0 0 0 0 0 0 0 4.01823345 0 0 306851.2639 0 5.187026278e-15 0 0 0 0 0.000385004712 3.253931289e-05 4.577686994e-21 0.004927063042 0 0 2.924427125e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 1.64293152e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 4.138180153e-26 0 0 0 0 1.121834387e-12 2.18042909e-19 +0 0 0 0 1.563613422e-07 0 1.081924258e-09 0 0 4.120438089e-07 0 0 0 0 0 0 0 0 2.457337256e-07 0 0 0 0 0 2.755808832e-18 0 0 0 0 7.19152663e-15 0 5.084239698e-20 0 0 0 0 0 5.363327367e-09 1.94506334e-22 0 0 0 0 0 6.090310554e-30 5.238039413e-09 0 0 8.03139484e-25 0 0 0 0 0 0 0 0 85.09031178 0 0 1.709174657e-05 0 0 0 3.395254158e-27 4385.015026 0 0 0 8.068087455e-14 4.433083259 0 0 0 1.808146744e-05 0 0 0 0 0 0 0 0 0.09974160084 6.239773968e-08 0 2107696.254 0 0.02861760152 0 0 6.402533822e-16 0 0 1.365442467e-12 58488.43832 0 0 0 0 1.63357044e-07 0 0 2.722413109e-10 1602718.864 0 0.1296276947 3.2760985e-05 1.848442211e-28 0 0 0 0 0 0 0 4.86353082e-10 0 0 0 0 0 6.429484748e-11 0 0 0 0.01052185956 0 0 0 1.800477335e-16 0 0 120.8677932 0 0 0 0 0 1682524.511 0 0 7.799974928e-09 0 1.71611365e-14 2.846684676e-20 9.465870631e-21 6.611470415e-16 3.680555908 0.002317257893 0 3.150750477e-07 1.465622138e-16 2.601237645e-25 2.388837263e-09 0 0 7.593403556e-07 2393819.666 0 0 2.582479445e-25 0 0 0 0 1.600199623e-15 0 0 0 0 1.928168729e-10 0 6.091199164 0 0 0.007609367961 0 5.178817824e-05 2.842695649e-13 0 4.084198215e-13 0 0 5.800085382e-15 0 0 0 7.483857121e-13 0 0 0.1812660717 0 0 0 0 7523.85027 4.860734226e-21 0 16874.52047 1.280438047e-20 0 5.563478931e-37 0 0 0 7.602464265e-05 0 46817.75543 0 981073.0984 0 0.2161949484 0 0 1.06624897e-30 0 0 0 0 0 0 7.903899224e-11 0 0 0 0 0.05584378146 0.3517656762 488358.1367 0 0 0 0 0 0 0 6.1732266e-15 0 0 5.201586008e-08 0 0 4.780998769 0 0 0 0 0 0 0 0 2.181330406e-12 0 140129.1774 0 5.150535236e-20 0 0 0 0 0 0 0 3.919233828e-21 0 0 0 0 1.250832979e-11 6.948562397e-07 70066.02581 0 0 2.371472083e-06 0.1397912823 0 0 0 0 0 0 0 0 0 5.88688856e-05 0 5.974849218e-16 0 0 7.565742828e-12 0 0 0 0 0 0 0 1.603341233e-10 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.482934382e-07 0 0 0 0.03639240825 0 0 9.071913424e-25 0 0 6.861342463e-10 0 0 0 0 0 0 0 5.489577203e-05 0 0 22601.45055 0 0 0 1.824275977e-19 6.297312953e-13 0 51090.14416 0.426695127 63843.06561 0 0 1.141929815e-14 0 0 0 0 0 0 0 0 4247563.411 0 0 0 0 0 61.42374533 0 4.626305092e-12 2.751918937e-09 0 0 0 0 0 0.2140559327 0 0 0 0 0 0 0 0 2.638261352e-11 0.2213326695 0 1.808553593e-13 0 1693.091761 0 7803.623177 1.13988557e-13 0 4.884454285e-11 0 0 0 6.901208523e-13 7.483824591e-22 0.0004713538621 3.626858452e-17 0 0 0 0 0 2.2568729 0 1.614311447e-10 0 27.51346903 0 0 27732.07466 0 5.933530393e-14 2.106050258e-08 0 0 0 0 0 0 0 0 0.1972493679 1.522623688e-06 0 0 7.266336033e-14 0 0 3.822753514e-28 6.659903061e-12 1.223687306e-14 0 0 0 3.133295847e-19 42167.33359 0 0 0 0 0 0 0.0001090749705 0 0 0 0 0 0 0 5.49409585e-16 0.4510697707 0 0 7.969196369e-13 7.459481503e-16 0 3.145752966e-26 0 0 0 0 1.291340718 4.218718842e-06 0 0 0 2.195124383e-12 0 0 0 0 0 0 1.016836472e-06 8820.680561 0 0 0 0 0 0 3.668942756e-08 10.21987483 0 0 0.03983628638 0 4.294107206e-17 0 0 0 0 0 0 186.2032496 1.753856213e-18 0.1232022489 0 0 0 9.037260178e-10 1910544.442 3.592551051e-23 1642079.336 0 0 0 0 0 0 0 0 4.805781339e-13 1.038313956e-20 6.598079645e-16 0 0 0 0 0 0 0.02295569711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.082416041e-27 0 280332.1713 1.897040536e-06 0 1.020858001e-05 2.112665542e-10 0 2.815331108e-11 1.998119501e-05 0 0 13.58864384 0 0 7.862366197e-08 2.176567722e-13 0 3.031035239e-07 7.845760016e-08 0 0 0 5.408953173e-10 0 3.27144955e-05 0 0 1.044667491e-35 0.0004266740018 0 0 1.46170616e-12 0 0 0 0 0 0 0 0 0 5.426593481 0 8.051240899e-16 0 0 0 12.07134555 0 0 +2.191785023e-12 0 0 8.756004421e-15 9.224744606e-07 0 0 0 0.009810890411 0 2.083633242e-09 0 0 0 0 0 0 0.01462073193 0.007239863636 0 0 1.533029799e-16 0 0 0 0 0 0 3.511228379e-07 0 0 5.909980676e-05 0 0 0 1.203228884e-16 0 0 0 8.265065601e-05 0 0 0 0 0 1.926066652e-14 0 8.539050267e-19 0 0 0 5.641069708e-15 9.350606261e-28 0 0 0 0 0 1.335009206e-23 0 0 0 4.145121811e-16 1.02201439e-06 0 5.31754391e-31 8.313334916e-12 0 0 0 0 0 0 0 0 569.5528213 0 0 0 0 0 2.216180747e-07 7.246400086e-09 0 0 0 1.173009513e-05 0 0 0.8447058729 5.968640347e-11 0 0 0 0 0 0 0 3.37089219e-10 1.368282563e-13 0 1.302959844e-22 0 0 0 0 723.1104025 0 0 0 0 4.884444466e-16 1.546250022e-21 0 3.278992382e-21 1.392664166e-20 1.622756702e-13 3.534787774e-17 1.069060736e-17 18.84040251 0 3.110855526e-27 0 8.963711369e-17 0.001072046554 0 0 0 0 5.323648028e-07 4.314230022 0.02918613226 0 3.061334007e-08 8.560844191e-31 0.7237697437 4.88485562e-15 9.741264274e-26 0 3.022168924e-19 0 0 0 5.238641048e-12 1.274084903e-09 0 0 0 2.80067212e-08 8.405431497e-07 0 6.974522527e-27 2.456879529e-08 0 7.936773914e-07 0 3.381095543e-11 0 0 0 0 1.770156143e-07 1.739326888e-07 0 0 0 1.961427579e-26 0.001216007322 65363.55739 0 0 2.274392021e-24 0 121.8803875 1.843215465 0 0.03806766177 0 5.057019609e-19 3.036190011e-18 0 0 47864.41385 0 0 1.452601002e-27 0 0 0 44.07824339 0 0 0 0 0 0 0 8.495888749e-15 0 0 0 1.570046085e-06 0 7779.013893 0 0 0 6.61647615e-28 1.982239054e-06 0 0 0 0 0 10.36422465 0 0 0 0 0 1.466842819e-06 0 3.999494262e-29 0 0 0 2077.641974 0 587623.1197 0 0 0 0 0 0 0 0 0 0 0 0 0 5.150243866 7.075458974e-12 2.058593144 2.421075603e-24 0 1.752536329e-24 0 0.001580030761 0 0 0 0 0 0 0 0 0 1.914635641e-12 0 240.8705951 0 0.006761263327 0 0 0 0 0 3.890074424e-08 1.525166193e-18 0 0 2.458480014e-13 0 1.227403842e-29 0.0004413674843 0 1.750985211e-28 9.591283865e-18 0 0 102.7656536 0 1.28594839e-06 1.350396402e-08 0 3.358956634 0 0.001204462731 1.303530701e-17 0 1845913.534 0 0 0 0 0 0 0 +0 4.135776026e-06 0 0 0 0 0 0 0 0 0 2376.085022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.214083985e-17 0 0 0 0 0 0 0 0.0007870964389 0 0 0 0 0 0 0 2.756654741e-14 0 0 0 4.276672416e-11 0 1.768324209e-18 0 0 0 37931.17907 1.361778089 7.666030347e-22 0 0 8.934444024e-20 282657.0499 38837.86897 1662.574827 0 0 642944.9581 0 1.230046017e-24 0 4.969628683e-05 0 0 0 0 0 39869.01644 4.626925052 0 0 0 0.8799147066 0 0 0.06809382894 4.141319324e-13 1.499397076e-26 6.32538853e-10 0 0 0 3.416416878e-15 0 0 3.918708028e-22 0.04507704258 1.001632318 0 0 0 1.219407301e-06 1.1802342e-12 5.964832723e-05 0 0 2.383893565e-20 0 3.43740935e-15 0.0003964681345 1.035117547e-06 0 0 0 0 0 0 0 0 0.003388000944 1.628787917e-23 0.0008643075508 0 0 1.383353116e-19 0 0 0 7.591738349e-12 0 0 1.388032383e-10 0 59.97408296 246203.5078 3.208032043e-09 0 4.986989703e-20 0 0 0 0 2.248006254e-19 0 0 0 21.53207029 0 9.913427273e-16 5.396579535e-09 0 0 0 0 0 0 0 0 0 0 0 0 7.06814585e-11 0 2.473466267e-09 1.985957593e-12 8.59310153e-20 3.403721786e-10 0 0 0 0 3.975062575e-11 0 0 0 0 9165.436621 0 0 5.379010625 0.3608806275 0 1.058759731e-08 0 1.220962467e-14 0 0 0 0.007418414514 2.46394669e-13 4.932996765e-10 0 0 0 6.595382328e-19 4.059284181e-05 0 0 0 0 0 0 0 0 0 0 0.0004944069906 0.001922769684 1.389255179e-26 0 0 0 0 4.703220479e-19 0 0 3.290603334e-29 0 0 4.757763201e-16 0 0 0 1.049311622e-05 0 0 0 2.203559854e-11 0 0 0 0.09998019037 0.0103648855 15647.36041 0 0 0 2.919248555e-15 1.023823471e-10 0 0 0 0 0.000433403518 1.772077601e-08 0 0 0 2.124231909e-10 0 0 0 0 0 0 0 0 0 5.668975161e-11 0 0 0 0 0 0.003272347477 0 1.593116068e-07 0 0 0 3.227480817e-13 0 0 0 920779.1935 0 0 0 1.751481108e-15 0 15795.06025 0 1.41423361e-25 0 0 0 0 0 0 0 0 0 1.822624923e-18 2.352189503e-21 0 0 0 0 0 4.963913153e-09 7.207425934e-14 0 0 +0 0 0 5378.531223 0 0 0 0 0 3.129822913e-09 0 0 0 0 0 0 0 0 1.743504922e-31 5.201198958e-09 0 0 0 0 0 0 3.899541132e-27 4.565680724 0 0 0 18319.91589 0 0 0 1.498337055e-06 0 0 0 0 0 6.847858283e-06 2.349906452e-07 0 1.054897804e-12 9.787795935e-29 0 0 0 1.460959741e-09 0 0 1.476920503e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003102540929 0.02064201985 0 1.431358301e-18 0 0 0 0.009109955982 0 0 0 0 0 1.601744101e-08 0 0 0 5.250116187e-30 909457.3532 47046.94897 1.085243613e-16 0 1003.327397 0 0 0 0 0 0 0 0 0 0 0 4.453466243e-05 0 1.193966768e-09 0 0 0 359820.3825 0 0 0 8.046824994e-29 8.063160633e-20 0 0 0.5016459006 2.996298137e-08 0 343390.1377 0 0 0 5.293358332e-14 2.542739705e-09 3.85686574e-10 4.576861686e-24 0 0 0 0.5142056782 9.208547088e-13 1.249698785e-27 0 0 0 8.811985132e-11 2.083065624e-29 3.815779822 9.752093025e-22 1.565235706e-26 3.82256842e-07 0 0 0 0 0 0 0 4.05640824 0 4.865298563e-06 1.771097669e-14 0 3.790184784e-14 0 0 0 1.653740316e-26 2.954425443e-13 0 0 0 5.459497687e-17 2.506693118e-12 0 0 0 0.4610362811 0 3.378708695e-13 2.550430166e-05 0 0 2871.576816 1.265739029e-06 1.65180055e-09 0 6.611649023e-11 0 0 6.414283776e-14 4.113874008e-16 5.264207032e-25 0 0.003136971294 0 0 6.027871536e-12 4.253517749 0 1.493946043e-14 0 124.534727 0 0 0 6.189751518e-28 0 0 0 4.593839663e-05 29.28152128 4.740151538e-26 3.251979229e-22 1.298847784e-05 0 0 0 0 0 0 0 0.5935604771 0 0 8.28972959e-11 289.3019869 0 0 0 0 0 0.7849052798 0 2781.512639 0 0 0 0 0 0 0 0 0 0 0 2.753147584e-20 0 1.292355454e-09 1.169586866e-13 0 244.9190288 0 0 0.6523979919 0 0 0.002233866369 0 0.03826423385 0.3732537383 0 0 0 3.804112466e-05 5.536381036e-07 0 9.425439677e-05 0 0 0 0 1.432936665e-11 0 0 0 0.01636124942 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.976292517e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 1.612964323e-11 0 0 0 1.205040064e-08 0 0 0 2.615653146e-06 0 0 2.881619538e-41 0 7650.759049 0 44.15278812 0 0 0 1.083925938e-11 0 1.04056876e-08 0 0 0 0 0 4.101999791e-21 0 0 0 0 0 0 3.988346399e-08 0.1160716991 0 0 4.588347362e-16 0 4.99900948e-19 3.475358134e-14 0 0 2.329901828e-21 0 0 612.8032812 0 0 1.730174709e-18 0 0.003368400525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.25726325e-18 2.73397054e-24 0 0 0 0 7.964306614e-20 0 1.455219328e-22 0 0 0 0 0 0 6.470876142e-08 0 0 4.49307433 7.462717576e-15 19392.24691 0.0004119759504 0 0 0 0 0 0 0 0 2227154.726 0 1.946456167e-16 1.451425728e-14 0 0 0 0 0 0 539167.165 0 0 1.818180145e-06 0 0 0 5.895253375e-09 0.6913966633 7.962873734e-14 0 1.597696974e-18 10.55172892 0 0.0002420390408 4.243376935e-11 7.614526805e-07 0 0 3.587391767e-11 0 0 4.381913001e-30 0 0 0 0 2.219964372e-07 3.421906675e-07 0 8.540752897 72516.39044 0 0.6395062747 0 3.585841981 0 0 8.302466229e-06 0 0 0 0 0 2.379976667e-13 0 0 3.876586915e-26 6.135099127e-12 0 4.583805075 0 3.552144131 0 0 2.363817477e-10 2666.669086 0 0 0 7.507363618e-20 0 0 0 0 0 1.845879798e-13 4.997204521 1.190091494e-21 1.420221233e-08 0.9264354045 0 0 2.063487166e-05 1334.121098 188.6827895 0 0.0007742279739 0 1.941357956e-26 5.758501212e-12 0 4.230597494e-14 6.828660653e-08 0.8571013526 0.005118552348 5343.594656 0 1.323199295e-20 0 0 0.02746382799 5.975832419e-11 0 0 0 0 4.528275631e-21 0 0 143168.3924 0 0 0.2568010387 0 1.586190271e-15 0 0 0 0 0 0 0.000123272544 0 0 0 1.318601214e-08 0 0 0 0 0 0 3.801265e-17 0 0 4.773750073e-28 0 0 1.006359367e-17 0 0 0 0 0 0 0 18.68132562 0 0 0 0 0 0 0 1.84405809e-10 0 0 0 4.274222323e-11 0 1.000701016e-17 0 8.012393504e-20 0 0 0 0 897.6413034 0 1.466616942e-19 0 0 4164.222011 0 1.288898969e-23 1.436346364e-14 5.095175679e-26 5.640124449 0 0 0 0 0 8.484923624e-15 0 0 242669.9667 0 0 0 6.069402711e-11 4.645523337e-07 0 289.7547247 0 0 0 +0 0 0 1.125210382e-27 0 7.622574585e-14 0 1.515440445e-07 0 0 0 5.603440827e-26 3.242996479e-08 0 0 0 6.032689491e-26 0 2.733320531e-08 0 0 0 3.426685032e-12 0 0 0 0 0 113001.1747 2.487264298e-10 0.03063254729 0 0 0 0.1619265294 0 120397.8909 0 0 0 0 0 0 0 0 1.644021467e-20 7.255434125 0 0 3.166319698e-09 2.136139397e-10 0 0 0 0 0 0 0.0104924035 0 2.685651182e-08 0 0 2.052180519e-15 0 0 0 0 0 0 0 0 0 0 1.345301196e-11 8.795520793e-09 0 0 22.97791806 0 0 0 0 0 7.935455669e-14 0 0 0 0 0.06152331341 8.904535585e-20 0 0 0 186739.7163 0 0 0 1.248106771e-31 0 0 0 0 0.0001356252322 0 0 0 0.0002643404043 3.819581561e-22 0 56005.42541 0 0 0 5.012232729e-25 0 2.833721077e-21 2014.388878 0 0 0 163137.8665 0 0.2927556621 0 0 0 0 7.337081743e-24 525.7000092 114028.0191 26.4425451 6.288273109e-16 0.06447697016 0 0 3.723351212e-05 0 7.809746418e-14 0 1.367345229e-26 0 0 0 138351.3113 0 98.28686611 4.66840967e-16 1.803701165e-17 0 5.032935597e-08 0.0001099883566 0 257955.5967 0 2.260107479e-20 2.75767196e-17 2.160464208e-06 5590.5168 0 0 467.6918164 0 0 0 0.7066130489 0 1.602645281e-08 0.007048379532 5.839449185e-16 0 8.500781158e-10 0 0 0 0.4922408371 1.561254798e-14 0.0001825624829 1.971128342e-12 2.613968217e-15 0 7.240737525e-07 0 0 0 0 0 0 8.018951598e-08 13644.06778 0 1.376994651e-29 1.500136515e-17 0 0 6.585167555e-26 0.002824975999 40250.89678 1622392.59 0.04163547196 5.000741086e-11 0 0 4.876848686e-06 0.6431399294 0 0 992023.4198 0 0 0 1.076836062e-13 0 0 0.02365547558 0 0 0 0 0.00832035225 0 0 0 0 0.1551558372 0 0 0 1.388005985e-29 0 0 0 2.357459646e-12 1291.235367 0 4.61935567e-11 0 0 1.370438803e-09 0 0 222.8491085 1.673743685e-13 0 0 0 0 0 0 0 2.596391919e-10 0 0 1.51831579e-12 0 0 0 3.641633822e-31 7.917877196e-10 0 0 0 0 0 0 0.9660477526 0 6.065176732e-07 0 0 0 0 0 0 2.212617746e-30 0 0 6.925407464e-08 0 0 0 61.79718836 0 0 0 0 0 0 0 0 3.062967107e-15 1.436615704e-12 0.01046389033 0 0 8.908112298e-08 0 0 0 0 0 +0 0 0.0002163752219 0 0 0 0 0 0 0 0 0 0 0 7.544933004e-38 0 0 0 2.708396121e-27 0 0 1.122039502e-07 0 0 0 0 0 0 0 0 0 1.565908623e-13 1.110500869e-12 0 0 0 0 0 0 0 0 0 0 1822.371456 1.239812225e-13 0.001606649579 1.254696584e-13 0 0 0 0 0 1.206068659e-11 0 0 0 9.677856792e-22 0 3.204332538e-13 0 9917.060283 5.118771461e-28 0 0.01629570775 0 8.956774241e-25 0 0 0 5.501249851e-27 0 748.3875051 0 0 0 0 0 0 1.474861788e-11 0 5.689479035 5.588157031e-08 0 0 0 0 0 3.994088622e-23 0 0 0 0 8.267637091e-24 8.664200794e-12 53.27055142 0 3.382131337e-15 0 5.244156015e-13 1.376081408e-07 0 1.068654262e-12 0 0 0 0 1.17513191e-21 0 3.05369615e-15 0 0 0 0 2.548018367e-10 0 0 0 0.001657169454 6542.538969 0 0 1.010039506e-10 0 0 0 0 0 2321139.416 0 0 5.958915349e-25 0 0.02369768453 0 0 1.5911955e-14 0 2.297193878e-24 0.005525432381 2.54802878e-20 3.575312349e-20 0 0 3234.913627 0 1.241874464e-11 2.005530452e-14 5.325018162e-07 1.253608465e-17 4.979494824e-13 5.732465558e-26 0 0 0 8.47487972e-20 0 0 0 0 0 18.21719905 0 0 1.8570162e-09 0 0 0 0 1304859.074 4.031119138e-14 0 2.897005657e-10 0 0 2919.09114 0 3.163102822e-24 0 0 6.988770294e-08 1.80552364e-17 2.852009869e-09 0 0.003565173836 0.0008908177132 1964.94256 0 1.075413313e-11 4.572072713e-29 0 2.625191871e-05 0 3.099932783e-22 0 0 4.30670819e-06 8.214269987e-12 0 0 0 36.10742926 0 0 0 0 0 0 61.94462911 4.728616909e-24 1.183403626e-14 0 0 0 0 0 3.605739704e-13 3.60120424e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 8.486297e-23 4.048830036e-06 8830.309244 0 0 3.340603315e-26 0 33193.51028 0 0 0 6.595204939e-14 0 0 0 0 1.850906263e-07 0 0 7.310931589e-13 0 0 2.330377968e-13 0 0 0 2.157755673e-10 0 0 0 2.862720448e-20 61841.83751 0 0 0 0 0 0 0 0 0 4.071818824e-09 0 0 0 0 0 0 223430.5876 0 8.963864858e-11 0 1.486709657e-16 0 2.204862382e-34 0 0 3.356721464e-08 5.137465674e-24 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 5.309893243e-07 0 0 0 0 0 0 0 9.042908335e-20 1.926843302e-19 0 0 0 0 0 0 0 0 0 0 20806.24547 0 0 0 0 5.303962778e-09 3.581198578e-12 0 0 0 0 414116.5477 0 0 0 0 4.655595508e-16 0 0 0 0 88.27805281 0 0 0 0 0 0 0 0 0 0 1.499851571e-14 0 0 0 0 0 0 0.009689458798 0 0 7.664833036e-05 0 0 0 0 0 1.035649803e-06 0 0 1.918990513e-13 1.412508059e-18 1.59375652e-25 0 0 0 0 5.657452702e-18 0 0 0 0 6.800548978e-07 121.7538445 1639329.048 0 4.407892232e-07 0 0 0 1.065994926e-19 26834.09052 0 0 0.002180077992 0 0 0 0 0 0 5.618383034e-05 0 0 0 0 0 0 0 0 0 1560160.335 0 31.16350065 0 0 0 0 0 0 4.736815384e-05 0 0 0.0007118013898 0 73189.15563 0 2.303475249e-16 3.520782715e-07 0 1.32573876e-43 0 0 6.283564564e-09 0 0 0 3.836761073e-10 0 0 0 0 0 7.605666424e-05 0.2260923558 0 0 0.005116806731 0 1.583055778e-05 1.22839775e-19 0 0 0 0 1.07156275e-25 3.553363548e-07 0 0 0 0 0 0 0 0 0 0 0 0 1.715919721e-11 728177.257 0 8.739393238e-22 0 0 0 9.054633839e-14 0 0 0 1.56606863e-05 0 36559.04787 0 0 0 0 5.916653828e-10 0 7.309116532e-13 0 0 6.642932287e-06 5.331869497e-09 0 0 0 9.794972346e-10 9.454753282e-28 0 0 0 0 0 0 1.294300109e-07 0 0 0 0 0 0 0 0 156801.967 34121.2594 16.85619568 0 0 0 24334.41512 0 0 0 0 6.945767792e-16 0 0 0.3312974915 0 0 0 0 0 0 0 0 0 0 0 0 0.0001255338904 0 0 0 0 0 0 0 0.001222756688 6.072761644e-12 14.26873677 0.02684367241 33.33339171 4.117641356e-06 1.024197797e-08 0 0 0 0 0 6737.376936 0 0 2.352746371e-06 2.197901528 0.1875275388 0 2.591190417e-09 0 0 0 2.16883397e-27 0 0 0 0 48.70718529 0 1.416686685e-07 0 5.462877699e-15 0 0 0 0 2.546339127e-13 0 0 0 0 0 1.531624511e-06 0 0 0 +0 0 9.50425162e-19 1.689517394e-31 0.0001193334626 170.6348915 0 0 0 0 0 159.6818747 0 0 1.193604074e-32 32504.55575 0 7.294449416 211741.8725 0 0 0 0 9.722879036e-21 0 0 0 3.110069089e-22 17.09177569 0 0.0004561395368 0 0 0 0 0 0 0 0 0 1.202640294e-07 0 0 0 0 0 0 0 1.21379685e-16 0 4.566427192e-12 0 0 0 0 4.279075887e-09 0 2.685316824e-11 0 0 0 0 1.127655617e-17 0 0 0 0 0 16.48885688 1935.307145 0 0 0 1.234891976e-06 0 0 0 260920.2988 50139.44724 0.002656448834 0.1501513101 0 1.94777509e-08 0 0 0 0 1.657729552e-26 0 2.821422257e-06 93913.87964 5.669566658e-06 753.4292797 0 0 0 1.058199451e-11 0.0004384113384 0.0002373369157 0 6.705890422e-19 1.414777569e-21 1.973267014e-11 0 0 2.848286528e-07 0 0 0 1.486976151e-08 4.045335636e-17 4.35407677e-08 1.91403935 0 0 9.988561429e-09 0.7216206031 0 6.037956851e-07 0 0 0 0 0 0 0 0 3.671137212e-24 0 0 0 0 0 0 0 0 0 0 0.002704137203 0 0 0.1518381992 0 0 0 11.71982938 0 1.90187657e-11 0 0 0 2.297248039e-12 1.320966825e-14 26.4032975 0 2.193416485e-28 5.343875661e-21 2.030666837e-19 2624504.833 4.760535668e-07 0 9.790839314e-14 0 0 0 0 0 0 0 0 1.421583975e-11 0 0 0 0 1.204169174e-11 0.0002534659068 2.078817737e-11 0.0002524945307 0 1.29428006e-05 2904.361166 0 0 0 0 13.6373062 0.0008988194804 0 0.007030395879 0 0 0 0 0 1.483731068e-06 0 0.0004457140274 1.130499323e-09 0 0.01467680529 0 1.329240867e-07 0 0 0 5.801903145e-15 0 0 3.103811781 0 0 2.08293402e-07 0 2.134280781e-10 0 2.260548732 0 0 6.980521261e-12 0 0 0 0 0 0 0 0 0 0 1.416691039e-15 0 552891.9631 0 9.617812106e-23 2852.815744 0 1.584098511e-25 2.973951348e-23 177.8628498 0 3555.939642 1.092181991e-13 0 4.238592465e-27 1.399851252e-06 0 0 0 1.850367927e-06 0 604.2662179 0 0 0 0 100.9589413 0 0 9951.041351 0 0 0.0003577167071 2.073225175e-07 0 0 0 0 0.03299685846 723726.8316 0 2.304413024e-22 2.609676616e-27 0 0 0 0 0 2032.432619 0 0 0 0 0 0 0 0 1.73264236e-10 0 0 0 0 2.276549581e-29 0 0 0 0 0 0 6.094018594e-15 +0 3.130255503e-18 0 0 0 0 0 0 0 0 0 0 0 0 1.08796147e-11 0 0 0 0 0 1.159523374e-08 0 1.891746833e-13 1.073731101e-22 0 9.790612373e-07 0 0 0.004928548153 0 0 0 0 2.19197356e-20 0 0 1.185179154e-14 0 143360.3578 0 1.849571477e-28 0 9.456439391e-10 0.6563264918 0 0 2.447725907 0 0 9.257134838e-06 5.779956939e-06 0 0 0 0 0 0 8.567293904e-21 0 6.804657268e-05 2.004008537e-08 0 1768455.522 31141.28496 7.643868596e-37 0 0 0 7.046748862 0.5812187693 0 42903.17413 0 0 0 0 0 0 0 0 0 7.278346239e-18 3.169975596e-19 1.243491526e-13 0 0 9.276683872e-10 4.451765967e-13 295.8250278 0 0 0 0 0 733.7879995 0 3.456093422e-26 0 2.35501013e-25 0 1.272988537e-12 0 1.629844701e-29 3.691361386e-11 0 0 5.277157771e-15 0.0004544143395 1.468935624e-26 1.969398796e-18 0 0 0 0 4.099706116e-30 0 3.926254602e-09 4.433454405e-08 3911.065646 0 4.915719286 0 1.801587644e-23 0.01430846707 1.273084893e-12 11562.06337 1.339740928e-08 0 0 0 1.935554237e-20 5.1803539e-21 0 2.435199628 5.850802884e-19 1.564320312e-14 0 0.007729084055 0.01075687548 0.0004397085824 2307731.774 0 0 1.398683585e-18 0 0 1.619313808e-13 0 0 0 182.1893651 2.511663753e-34 0.1853835327 9.426981617e-22 2.596257848e-20 0 5.35845794e-12 0 0 0 0 0 0 1.38247297e-20 0 2.507761444e-10 6.415600063e-10 41923.00484 0 0 0 0 0.0001814316482 2.637344106e-21 35.39168246 285.5884541 0 0 0 0 6.661107862e-08 1.196323701e-24 8.282209005e-15 0 0 319823.5212 4.531495193e-32 0 0 0 90.30123591 0.1798486689 0.0678305847 0 0 0 1.459333715e-16 0 0.0004205238496 0 0 0 0 0 0 0 0 0 0 0 6.066003009e-09 0 0 1.526173094e-13 3.375026674e-15 7.943797882e-19 2.353425423e-07 0 0 0 0.003461241835 7.704207578e-09 0 0 18987.74395 0 0 0 9.525363351e-16 0 0 0.8484983973 8.847343736e-07 0 0 0 0 0 0 6.425273092e-21 5.805438901e-12 965.1192517 0 0 0 0.2979016669 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.824880344e-14 0 0 0 0 0 8.377554623e-19 0 0 0 0.01005567231 9.8050127e-05 0 0 1.143787024e-05 1.275948687e-07 0 1.21190741e-20 8.068085008e-26 0 0 0 0 0 0 0 1.287441687e-21 0 0 9.089773764e-21 0 0 0 0 0 0.0002610373228 +0 0 0 0 0 0 0 0 0 0 0.001886796482 0 0 0 0 4.542446691e-13 9.922467359e-18 0 0 0 0.000106001039 0 4.014235776e-20 0 0 1.514597657e-24 0 0 0 0 3.982632571e-26 6.40676186e-08 0 0 0 0 0 0 3.001254949e-41 1.367953119e-16 0 0 6.567523385e-26 0 8.746328095e-10 1569.25248 0 0 0 4.395376257e-07 0 5.038899316e-19 0 1.993543929e-25 0 14.15439404 0 0 0 0 2.728604014e-11 0 9.37968575e-06 0 0 275.9738591 1.203347907e-19 0 1.041350264e-08 3.629444834e-22 6.718286862e-19 6.498261981e-07 0.0001734810554 0 0.07505699116 0 6.930495053e-29 0 0 0 0 0 2.645712587e-14 2.527301096e-10 0 244.5575108 0 1.083898309e-23 0 3505.655515 7.871421935e-17 0 0.007051036859 0 0 0 1.082737575e-09 70372.18012 1.499634734e-18 0 0 2.924824418 4.10346421e-14 0 0 0 2.761479516e-27 9.050197957e-07 149203.0752 3.030723162e-09 0 0 1.458327508e-11 0.001293838244 0 0 0 0 0 9.938719888e-20 5.611330401e-10 0 0 0 2.627589313e-10 9.23986838e-11 0.25764604 0 0.0001360242253 0 0 0 0 0 0 9.866674086e-16 61.12682231 0 0 0 32.20148874 0 0 0 0 0 3.237229006e-29 2.549284667e-05 0 0 0 0 0 9.981379925e-05 5.09591128e-41 1.347780825e-27 0 4.098034942 2.529395674e-05 2.728468419e-06 373926.218 0 0 0 0 0 1.152827913e-06 7.546125128e-13 0 0 1484889.508 8.380376938e-28 0 0 8.936942154e-34 0 1.430425052e-13 0 0 0 6.440144081e-12 8.396867799e-16 0 2.765325626e-11 6.527917827e-28 5.565362571e-10 4965.843858 0 3.439286522e-05 359.3262776 0 2.189299277e-33 3.518085697e-23 28914.63352 0.0005802212268 0 0 6.155802858e-06 4.853339819e-18 0 0 0 1.407794829e-08 0 322399.164 0 1.575342787 0 0 0 0 0.00758480714 9.206644759e-27 7.839992514e-11 5.831215341e-10 0 0 0 0 0 3.10153046e-30 0 0 0 0 0 2.333319885e-16 0 2.527763149e-12 0 0.002773955815 0 2.507177775e-21 0 0 0 0 0 0.05467718449 0 3.864759643e-08 1.400574761e-24 0 0.09755731365 0 0 0 0 0 0 5.78073093e-15 0 7.394464055e-18 2.541181878e-11 0 0 0 0 0 9.443269412e-08 1.99701884e-21 0 0 3.925419969e-19 0 0 0 0 0 0 3.666928452e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 5.906428257e-06 0 0 0 0 0 0 0 2.505446517e-09 0 0 9.247773423e-20 0 0 0 0 +0 0 0 0.001873086016 0 2.32869267e-05 0 0.01486889008 1.567189981e-26 0 0 0 10.11736547 0 0 0 0 0 0 0 812671.5733 0 3.576743235e-29 0 0 0 0 0 0 0 1.936852286e-22 2.932654324e-25 0 0 0 0 980.9776505 0 5.435496231e-13 0 0 0 3.286650863e-10 0 4.021721687e-10 0 0 0 1319.743746 5.545573869e-11 2.119867744e-20 0 0 8.674607227e-15 0 0 0 0 1.323757615e-29 7.477610751e-19 1.844990826e-27 0 0 0 0 0 0 0 722.6702527 0 0 0 8.27465814e-11 0 0 0 3.862306074e-22 0 0 3.491053848 0 2.347840885e-10 0 0 9.866570254e-15 0 5.853365251e-10 0 0 1.131270663e-10 4.847902412e-28 0 0 0 0 40.74784022 0 0 0.008561301408 0.0001821771688 0 1.921229106e-07 0.004279490743 1.86273625e-09 1.699518987e-14 0 1.124000543e-11 0 0.06127863356 163.432874 0 6.985879735e-05 0 1.080319353e-15 310140.3879 0 0 0 9.388111509e-15 0 0 301240.6275 2.960265728e-29 1.684538296e-09 1.161182238e-12 0.4072558627 0.0004413308925 0 0 0 1.010070564e-28 8.880869219e-15 2.587345992 9.163205713e-17 2.166956379e-08 0 0 0 0 0 0 0 1.557052903e-11 0 6.133547379e-05 0 3.48775678e-13 0 0 0 0 0 0 0 1.003633246e-05 8.016145543e-12 0 0 1.950966627e-36 1.09226866e-16 0 0 0 0 0.01676624637 0 0 2.235647673e-28 0 0.001504935837 1.323630756e-25 0 0.001211844329 0 0 5.477268016e-08 0 2.610368615e-07 0 0 0 1.688706746e-14 0 0 5.085670145e-05 0 0 0 0 0 0 0 1.350758963e-18 0 0 0 6.67839307e-17 0.3620277665 1706.068502 80.34143959 0 1.278622857e-30 8.853617205e-11 0 0 0 0 0 1.611588852e-23 0 0 34.88316338 0 0 86283.55308 2.363172614e-10 0 9.425726661e-09 0 0 0 0 0 271706.5948 0 68530.75905 5.32823472e-11 0 1.020808498e-16 0 0 0 0 1.564147475e-23 1.583363549e-05 0 0.002980855759 0 0 0 3.297185055e-18 0 1.138684632e-05 0 0 4.498696889e-17 0 0 0 0 0 7.386061397e-11 0 1.565477755e-18 3.005464943e-20 0 0 0 938568.7563 0 2.639544483e-13 0 0 0 0 0 0 1839216.823 0 0 0 0 0 0 0 0 0 0 2.77160682e-16 0 0 0 1.779970493 0 0 0 1.914018432e-12 0 0 0 0 2.650239492e-08 0 0 0 0 4042328.468 0 0 0 +0 0 0 0 0 19.98921462 0 2.841033953e-05 0 0 0 0 7.414761959e-22 0 0 0 0 0 0 0 0 0 2.293946926e-14 0 0 0 0 0 0 0 1.726528574e-11 0 1.634517184e-06 0 0.004599493255 17.02425187 0 87.89207433 0 0 0 9.300452245e-08 0 8.499899455e-17 0 0 0 194.8826765 0 69452.10897 4899.302126 0 0 1.10626391e-19 0 0 0 0 0 7064.554325 0 9.126961723 0 0 337245.083 4.310244366e-27 0 0 0 0 0 0 0 0 0 0 4.080617038e-09 0 0 2585949.677 0 0 0 0 8.807437393e-24 0 0 0.001950886412 1.269863693e-13 6.803420046e-15 0 0 623373.2104 0 0 1.16199696e-16 0 0 17150.86026 0.004667793197 0 0 9379.837082 1.507007053e-11 0 6.390293287e-12 0 2.240240502e-09 2.014825109e-17 3.944659276e-07 4.46159403e-10 0 7.191046248e-16 0 1.64724995e-18 0 0 0 520913.3733 1.268954056e-18 0 0 5.828300056e-15 0 8.513498689e-14 9.966075882e-27 0 0 5.19053535e-25 1.405397392e-17 13.72870936 0 3.235418468e-34 0 0 0 0 0 0 282.6332477 0.004147355271 6.984121902e-28 0 0 9.45479632e-11 0.003427020932 0 0 0 0.0004490822441 0 0 0 7.526005854e-12 0 0 0 1.890335675e-09 0 0 0 3758.222352 0 0 0 0 0.008849455384 0 0 59727.48136 0 4.441736302e-09 144.8295185 0.001193236458 9.82052251e-05 0 9.37390093e-05 0 0 1.081544284e-07 0 0 9.356931433e-28 3.957830862e-08 0 0 0 0 1.474652187e-14 0 0.0005364295174 0 0 1.405450602e-21 1.033540997e-09 1282.237024 0 3.127009151e-13 8.560279712e-07 0.002961305124 0 3.959353347e-25 0 1.196598686e-05 0 0 0.01003924001 0 0 6.528754408e-16 0 0 0 0 0.01427049731 0 1.567103571e-22 0.00114486866 1.342028657e-05 0 5.738074966e-24 0 0 0 0 0 6.598644091e-05 2.697740658e-23 0 2.317800771e-12 6.710902741e-07 4.673381408e-16 0 0 1.443448662e-17 1.168962091e-10 1.639127772e-06 2.832978914e-11 0 0 8.967869136e-24 0 0 0 0 2.315094292 0 0 0.001097483663 0 0 0 3.897161972e-10 19019.11319 0 3.139003688e-18 0 0 7.054605829e-10 0 0 0 0 0 0.0003395970974 0 0 0 0 0 0 0 7.580854768e-25 4.39317909e-13 0 0 66869.50798 4.088517834e-23 4.99396488e-29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.521621641e-14 0 0 3414.951616 7.404926955e-15 0 0 +0 0 0 0 0.7878609381 0 0 0 0 0 0 0 0 0 0 0 2.716263487e-17 0 0.000311257498 0 0 0 1768.788379 0 0 161.9561234 0 0 0 0 0 0 4.709099815e-19 0 0 5.236329746e-07 0 0 105161.1958 0 2.754126748e-25 0 0 0 0 0 0 21733.98251 0 34036.4919 0 0 5743.241966 0 0 7.038353494e-29 0 0 0 780.1033311 1.128343002e-16 37804.98845 1.430705857 0 0 0 5.575559064e-09 10.69300676 2.986166382e-14 0 9.357478407e-10 0.6225483812 0 443437.4379 258607.114 0 0 0 0.0006688035939 0 0 0.004323760428 1.166361558e-17 0 0 0 2.656301622e-15 0 576702.3391 5.726275296e-18 0.0005483609742 0 2.532924906e-19 0 0.001702345587 0 0 0.0001139300097 1.0887991e-22 2.616777498e-07 0 0 0 0 7.86728134e-14 1.229429176e-20 22159.13066 0 27.56502078 1.710076099e-12 3.250412789e-05 7.715951972e-05 0 0 3.382077527e-08 0 0 0 0 3162427.52 0 6.609883687e-15 0 0.0002099563667 7938.455139 3.893144265e-28 2698.445159 2965.668162 1.07760718e-08 40.02771511 0 0 3.720645058e-24 0 1.57127716e-05 6.427085673e-15 0 12043.14438 1.703649068e-11 0 0 0 0 1.901433133e-07 0 3.033063958 0 0 4.150122828e-15 2.150368187e-18 5.225273489e-20 0 4.832038794e-14 382950.0765 0.002402880555 0 0 0 0 7.04543922e-13 2.620734998e-17 0 0 0 0.0002239834648 0.008968284767 12494.7206 0 0 4913.116215 0 1693.58445 79.64574339 0 0 0 1.521620505e-40 8.0386947e-09 0 0 6.183641459e-09 0 0 0 0 0 2.333388736e-11 0 1625.641158 0 0 5.626926574e-19 0 0 7.820248217e-10 0 0 25.87839752 0 27415.00047 0 0 8.174151988e-12 3.087740509e-27 0.002676670922 493607.2259 6.324334224e-22 3.801461169e-10 1.421888518e-10 0.2881194683 0 49.94345408 0 0 0 0 0 13162.50537 2.651303476e-24 2.691729283 0 0 0 0 0 0 0 0 9.109244221e-10 3.65091259 0 1.059139508e-06 0 0 2.300583528 0 1.865601446e-08 2.30821289e-14 0 0 0 0 0 678501.4033 0 0 0 4.487698802e-13 0.0112221157 0 2.74700625e-07 0 0.06165264205 0 0 5.288346861e-11 2.34075115e-11 1.43682494e-17 0 0 0 59622.16263 0 3.557722888e-16 1881655.159 13680375.38 1.830816156e-06 0 0 0 1.72064512e-27 0 1.455491407e-24 0 0 0 0 0 0 0 0 7.501406656e-35 0 0 0 6.384577957e-17 1.535038337e-22 0 0 3.996355517e-07 0 0 8.07055339e-09 0 0 0 0 0 1.975427538e-10 0 +0 0 0.002773117808 0 0 0 0 0 0.008659216243 0 0 0 0 0 0 0 0 0 0 0 4.261391308e-18 0 0 0 0 3.434745465 0 0 11.84633527 0 0 4.87269234e-12 13976.46622 0 0.000279213411 53186.76988 0 141141.8795 0 1.607079495e-17 0 0 9.229549592e-38 0 0 0 0 8239.412602 0 0 0 0 0 0 7.936084768 5.41997748 64479.05824 0 5.420184409e-13 0.1518736214 0 4.868607074e-13 7.861360967e-16 0 0 9.857140532e-10 0 0 19403.16903 0 0 0 0.0099577738 0 0 0 1.357895301e-10 0 0 0 1.917924e-16 0 0.0004356358791 279787.4 0 4.712155729e-11 2.483085987e-06 134.1728391 2.541884304e-05 0 0 3.655169154e-28 0.337959496 1.80781444 0 0 0 0 0 0 0 0 0 4.446848555e-08 0 0 1.798626165e-07 0 0 0 2.193532717e-31 0 1.290394679e-11 0 0 0 109720.3235 0.5530799282 0 0 1.545122669e-32 0 0 0 15811.89712 0 0.06883277978 0 0 0 0 0 14.73384731 0 0 4.941503914e-09 4.491402643e-05 0 0 0 0 0 0 297294.8819 0 0 2.855499366e-26 6.193627116e-20 0 0 0.8387332866 2.438988495e-08 0 8.321894751e-12 0 0 9.047560263e-17 0 5.781153322e-33 1.544097742e-13 0 1.985146121e-21 2.289790258e-20 0 2.040497736e-17 0.009479506081 0 0 2.794633469e-20 0 2501313.548 3125547.939 0 1.787179523e-22 0 1.486869284e-17 0 0 0 0 0 0 0 3.080478529e-09 0 0 2248.915502 1.068798299e-12 3.998088342e-05 7.348384147e-13 0 1.759341822e-09 2890.960553 0 2.423178163e-15 0 0 59423.64637 19338.56554 0 0 0 0 0 0 4.520497868e-26 1.158849287e-22 0 4.491617658e-17 0 3.499517855e-31 146985.046 1.847984644 1.961939802e-16 0 4.347347902e-24 0 0 0 0 0 0 0 0 3.693143108e-15 0 6.495917818e-05 0 0 0 0 0 2.298735026e-08 0.9366342853 0 0 2.786614244e-09 0 0 5.069259303e-25 0 1.459598942e-14 0 6.581169992e-05 0 0 0 8.481241929e-12 0 1.545198773e-10 89.27277545 5.782709988e-12 0 0 0 2.548541167e-09 0 0 0 0 0.000329693691 19851.51109 0 0 0 1.462680099e-07 0 0 0 2.907598789e-12 0 3.078034637e-11 0 9.469258998e-16 0 0 6443.327406 0 0 0 0 0 0 0 0 0 0 0 0 2.994892117e-24 0 0 0 0 0.001861178952 0 9.496484037e-16 0 0 0 +0 0 0 0 0 2.190050217e-06 0 0 0.3083710455 0 0 0.0117928335 0 0 0 0 1.58647403e-24 0 0 0 0 8.466552261e-08 0 0 0 0 4.139042345e-12 0 0 14.55621291 7.49016123e-05 0 0 0 0.002395339981 15.65673709 0 0 0 0 0 0 0 0 0 0 0 0.2204474217 0 5781548.422 0 0 0 0 0.0003113938511 0 0 0.2877871877 0 1.87998761e-13 0.0003783533993 0.01692315041 0 0 0 0 0 0 0 0 0 0.1095859036 0 9.63485185e-11 0 0 0 1.496218029e-21 0 3.865721423e-14 0 5.275807223e-08 0 0 1.985513071 0 0.01897318839 1138.3909 0 0 1.508781599 1.934079982e-09 0 3.812140043e-12 823772.3964 0 0 0 0 0 0.0009759604772 0 7.784432551e-20 0 0 0 2.153328838e-11 10.79178087 0 0 0 4.970825906e-13 0 2.003054938e-21 0.005354916175 7.108822848e-05 0 0 0 0 0 4.520882977e-17 0.0003232845506 0.4664196266 2.282305333e-05 1.434977958 3.0478908e-15 0 7.41186102e-09 0.0009327612161 0.266851824 0.0006470074161 9.05605422e-17 8.634541192e-13 6.607430842e-07 0 0.04642230437 0 0 0.02800144149 0.2685485804 0 0 1.340053544 2.2446768e-17 0 2.392992396e-18 0 4.22807199e-05 0 0 0 0 2.115926586e-10 0 0 0 9.706520535e-19 1.89861307e-07 3.447802576e-12 2.410850662e-15 0 0 104.3719417 0 0.06988984337 0 0 7.139772713 0 4.130252199e-06 1.027684165e-05 0 0 1.3167073e-14 0 0 0 0 0 0 1629.037888 0 2.573745531e-09 0 3.079863263e-26 0 4881104.12 0 0 0 0 0 1.224109209e-28 2334584.253 9.352728654e-07 0 0 0 0 4.322172535e-27 0.5799349983 0 0 0 4.599094654e-07 0 6.30814417e-19 3.732519857e-10 0 0 0 0 0 0 2.588371859e-08 0 0 0 98766.76219 4169.343239 0 0 0 1.075860037e-10 0 3.910008413e-35 0.0002260963803 0 0 0 0 0 0 0 0.0006776783819 2124.731252 0 0 0 0 1.345185665e-22 6.991911183e-17 0 0 0 1.070819462e-12 0 0 0 0 0 0 0 0 0 0 3.343885719e-07 0 0 1.475392363e-22 0 0 0 0 1.382011533 2.015605588e-10 0 0 0 0 0 5.502207649e-19 0 0 0 0 9.180324848e-26 0.0002619827306 0 7.09586953e-19 0 0 0 0 0 0.006192370249 0 2.176148428e-18 0 0 7.98695971e-28 0 0 0 0 0 0 2.2119047 0 +0 0 0 7.841239328e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0.757931435 0 0 0 10217.72131 0 0 0 0 4.029710975e-34 0 0 0 0 322.9250828 0 0 0 0 0 0 3.59390889e-12 0 355.773711 1.293541648e-08 0 0 0 0 0 0 0 2.174103836 0 0 7.080011142e-17 0 1.328513707e-32 2.627103732e-20 0 0 0.01291288672 0 0 0 0 0 0 0 0 0 0 965.8483894 0 0 0 0 0 0 0 0.0003485527634 0 2.798794752e-10 0 4.613490837e-19 4.017358738e-10 7889.87418 0 0.269373387 0 1.525604346e-07 0 0 0 99.62100663 1.186878492e-14 0 0 0 0.0002274718464 0 0.006125329885 0 0 1.742906043e-13 3.405101199e-11 0 1.366740713e-12 199447.1887 0 0 1.829901885e-19 0 0 0 329.0652079 465.1060187 4.092846338e-13 0 0 5.958147879e-13 8.454902912e-05 1.087463339e-30 2.869021305e-15 46.41708738 0 2381.502664 0 0 0 0 1899.704529 2.282031464e-18 0 0 0 577.677859 0 0 0 0 0 0.0967250095 0 0 3.197472751e-11 195005.4121 0 1.131860688e-05 0 8.112442598e-11 0 2852491.469 0 0 0 0 0 0 0 285.6679901 0 12.41252827 5.570532851e-10 2.1667924e-14 1.186146874e-11 0 0.2395401349 9.844082723e-16 1.433284731e-09 0 0 0.002896920028 0 0 5.118398661e-13 0 0 0 0 0 5.291339069e-17 4.699603978e-15 0 8.217738975e-34 0 3.288046633e-19 0 0 0.01454224609 3.839510331e-05 0 4.125662197e-15 0 0 0.0001127242159 0 4469.090656 0 0.002677351002 0 2.651105583e-06 0 2.489889862e-16 26.88086612 0 9.888893237e-18 0 988.6147824 0 0 0.02865979659 0 0 0 0 0 0 1.348638076 0 4.344881658e-09 287955.2861 2497.865736 1.525388639e-14 4.154047328e-08 1.351151041e-13 0 0 2.585146061e-13 8.052898425e-11 0 0 0 0 0 0 0 0 0 0 0 5.756344675e-24 0 0 0 0 1.085533518e-22 0 0 0 1.369385703e-20 0 1.171897871e-15 5.177367796e-24 0 0 1202.970197 0 1.918516497e-20 0 0 0 0 0 0 0.0002995950892 0 0 1.903314624e-08 3.133768479e-14 0 0 0 0 2.183056275e-27 0 0 0 0 1867142.858 4.670551217e-05 0 0 1.707699587 0 0.1093553085 7291.6249 0 0 0 0 1.162963449e-05 0 0 0 0 1.228954771e-15 0 0 0 0 4.8958431e-16 0 +0 0 0 0 0 3.008593504e-18 0 0 0 0 0.0004050183226 0 0 0 0 1.393467936e-25 0 0 0 0 0 0 510723.4508 0 0 0 0 5.186289596e-14 0 0 0 594.3958745 0 0 179093.9882 0 0 0 9.45086341 0 0.0005358080515 0 0.1913560618 2.141646613e-16 0 0 0 0 0 0 0 0 1.596349008e-07 0 0 0 0 0 0 0 0.002994710787 0.0002243582508 2.033941819e-17 0 0 0 24948.57113 0 622.6856868 0 3.230218431e-23 0 0 0 3.146043105e-06 2.606085634 0 0 0 0 1.602715036e-11 0 8.818176779e-05 0 149960.7397 1056.311403 0 89474.36419 7.51074576e-13 0 106.3509966 5.811210952e-05 0.004602960381 0.06316388802 1.284869345e-07 0 0 0 2.888861547e-17 2.671732016e-06 0 0.00181644444 0 0 0 0 11.56017228 0.0007251360258 0 0 0 6.093814372e-24 4.019787496e-24 0 1.725744169e-15 0 0 1.144877733e-13 0.007707813951 0 3.263952364e-22 0.001383540962 0 2.258897881e-15 0 0 0 0 0 0 6.458832748e-11 0 1.157002327e-19 0 7.224509993e-32 0.001379587915 0 40926.79545 0 4.068221961e-16 0 7.576966394e-32 0 0 0 3685.296895 0 0 0 8.13106538e-15 1.72542839e-12 0 0 0 3.698602218e-06 1.485772573e-16 0 7.423663728e-09 0 322841.415 0 6.875950699e-16 2.882564774e-15 1.757315868e-21 0 0 0 1.261447483e-05 0.0006441082109 0 0 0 86549.08551 0 0 9.769639668 2.314653297e-15 0 4.480736695e-19 0 0.07541491123 0 0 0.4343809982 0 0 0 0.05494735247 0 0 0 9.875858909e-25 0 0 1.633523358e-25 9.801542921e-08 0 0 1.564816561e-08 2.805382604e-14 1341.229648 1004.309452 3.783032122e-10 83831.82661 1.042921979e-06 0 0 9.169299404e-19 2.945394869e-21 0 0 0 0.6714354111 0 0 4.703160186 0 0 0 0 0 0 0 3.137048345 71143.88613 0 1.26886626e-12 0 0.0008415077401 0.0002467611671 0 0 0 0 0 2541.41666 175.507395 0 0 3.401182539e-05 0.001659754733 0 0 0 0 0 0.07785152879 0 1.403522237e-11 0 0 0 0 0 0 2.358232337e-05 3930.889518 0 0 0 3.191712594e-13 0 0 0 0 3.239664237e-11 0 0 0 0 0 1147362.165 3.578630305e-16 0 0 0 16684.79587 0 0 0 0 0 0.01025117872 0 0 7.007800579e-22 0 0 0 3.416043642e-10 0 0 0 0 0 0 3.608364165e-12 0 0 1.790855082e-11 +0 0 5.098486372e-06 0 0 0 0.0009432660838 0 0 4.141317377e-21 3.199641148e-13 1.534960876e-07 0 5.204516974e-10 0 0 0.01596111505 0 8.055047782e-24 0 0 5.852858507e-25 0 0 0 0 0 0 0 0 0 1.151077504e-08 0 0 0 0 4.854525054e-24 0 0 0 0 0 3.380008373 0 0 0 0 0 0 0 0 0 2.446988013e-09 0 0 0 0 9.341122179e-32 0 0 5.849329286e-13 0 0 0 0.1088500314 4.287513553e-14 0 2.025717988e-19 0 0 0 0 8.710483941e-10 0 0 0 0 0 0 1.84633167 0 0.03924238239 1.197570148e-06 1.989239392e-05 0 0 0 0 5924.170844 0 1.025012437e-11 0 0 0.00250984902 0 0.0003159717846 1.690570838e-05 0 0 3.664942127e-11 3.836916023 0 2.852663591e-10 0 0 1.32092643 0 13.4013093 6.400968879e-05 0 0 0 0 0 8.622085959e-07 2.130087713e-07 35.4543296 5.368244211e-19 0.8392382129 5.425131059e-10 1.820933847e-05 0 1.369794116e-12 9.363897649e-10 0 0 0 0 0 7.594193188e-10 1.555735213e-23 0.003877185069 0 0 0 3.435587059e-21 0 1.341849344e-27 1.710944515 0 0 916.7911543 0.002382080342 82.73874845 0 1.320149602e-20 0 0 0 0 8.175864987 1.001942313e-14 0.004689876903 0.0118311936 0 2.410065033e-15 0 8.858181165e-18 0 0 0 0 3.821914089e-05 0 0 4.526191832e-10 1465353.212 8.385351028e-11 0 1.373834265e-06 4.861075396 1.933429587e-09 0 0 0 0 0 0 3.665104166e-14 0 3.244325505e-07 0 0 716743.97 0 0 0 1.837535795e-07 0 0 0 0 0 0 0 0 0 3.166797486e-08 1848.75325 1.426883952e-11 0 3.992352216e-19 7.766228103e-10 8.463168698e-16 0 75.79526345 41659.87484 0 0 917.872791 0 0 0 0 0 425607.9954 27.49671856 0.465164456 0 0 0 0 0 0 0 0 5.531730136e-07 0 7.84677019e-13 1.054857296e-17 0 0 0 0 0 0 252722.0247 0 0 0.0006813029209 0 0 0 0 0 0 1.480887196e-05 0 0 0 0 0 0 0 6.656831012e-09 2.485990161e-20 0 2.477749705e-06 2.735727807e-06 0 0 1.274716554 3.207572737e-09 0 0 3.668677012e-08 0 1.098799195e-17 4.326170664e-22 0 0 0 0 0 0 0 0 0 2.660304653e-15 0 0 0 0 0 0 0 4.467167819e-22 0 0 0 1.001394009e-07 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 1.105640883e-10 985702.0376 0 0 2.175726154e-12 0 0 0 0 0 15.65758321 0 0 0 0 4.705175368e-10 5.633372615e-18 0 0 0 1.142047154e-11 0 5.361255358e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.690450151e-28 0 0 0.0001625249886 0 0 0 0 0 0 0 9.217702956e-11 0 0 0 0 2.115923828e-12 0 19061.17976 0 0 0 0 0 0 119084.2849 0 562935.9374 0 0 1.502494364e-08 0 2746.534952 0 0 0 0 0 0 0 520.080501 4.134948814e-09 0 70294.74344 1.15840386e-10 1.796033453e-05 4.262345399e-20 0 0 6.990527027e-23 0 0 0 0 2.756179622e-24 0 4.090748286e-29 0 1.322075427e-05 2.443102119e-22 0 3.332099254e-17 0.001667181697 0 0 14.52766882 0 0 0 1.999792409 0 0 4.989281529e-25 8.769269287e-07 0 9.87023549e-21 0 0 898473.1509 0 205.1220791 6.668889878e-08 3.468574653e-13 3.012567907e-23 148494.5645 0.06936506744 3.222079179e-28 72572.57789 0 0 0 0 0 0 0 0 0 0 9.438227366e-13 1.974765937e-23 0 0 0 0 0 0 8.975361043e-07 0 0 0 0 2.619304614e-10 3.666992125e-10 9.917004409e-14 0 0 0 0 4727.432366 0 0 0 0 0 0.004547741585 0 3.747877881e-11 0 0 9.493394403e-05 0.1123113381 0 2.431359781e-16 0 0 0 0 0 296775.0098 0 0 0 2.351401381e-12 0 0.00234994173 2.029530276e-11 0 0 0 0 0 0 0 0 0 15364.05926 5.713800213e-12 3.728846052e-06 0 0 1.412164349e-16 0 0 1.108248892 0 0 0 0 0 0.2993868311 2.931349878e-05 0 0 0 86410.96616 0 0.1459125443 0 0 0 0 5.731770885 0 7.807167694e-16 0.1083362625 0 0 1.376758607e-16 53.14763374 0 0 0 4.794229128e-11 0.00126076143 0 0.9861168409 0 20.40414425 0 0 9.069560502e-14 0 0 0 2.321291069e-08 0 0.0001549136361 0 0 0 0 1087.207683 0 0 0 0 9685.265448 0 0 0 0.0001618772509 0.005637508758 0 0 1.919482484e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.656575642e-12 0 1.608648362e-17 0 0 0 0 4.117849488e-23 +0 0 0 0 0 0 0 0 0 24612.69235 0 1.26789873e-07 0 0 0 9.134244724e-28 0 0.00712414691 0 0 0 0 0 0 0 0 0 1.522273263e-13 0 0 0 3.368301087e-14 0 0 3.176189708e-05 3.430437248e-05 2.41706121e-10 0 5.269933975e-07 0 0 1.233289249e-06 0 0 0 0 0 0 22.07502614 0 0 5.583785357e-06 86.56548886 0 0 0 96.89200126 2.096732732e-06 6.912820509e-11 0.113146483 0 0 0 0.0003511360331 0 0 4.695872585e-10 0 0.001748777693 0 0 0 1.313205113e-07 0 0 0 0 0 0 0 0 0.1074703935 3416047.722 1.915763089e-29 9.004716561e-12 0 0 0 0 2015.263512 5.567924259e-23 3.398188377e-31 0 0.063284602 2.566129029e-25 0 0 0 4.461997247e-17 0.0007723957485 6.497874984e-16 0 1.089565227e-07 9.679303174e-22 3.34480476e-17 0 0 9.355757276e-05 0 3.284991032e-11 1.982949192e-09 0 185.1294989 249.3096048 1.779654687e-13 0 0 2863.607461 0.0004181410765 6.941452955e-11 0 0 1.391526726e-16 4.352352408e-17 0 2.828552508e-10 4.016849619e-14 6.795149073e-18 2.168515599e-05 3.827615241e-16 0 0 9.116139113e-17 0 0 0 0 0 1.014070537e-14 1.091568556e-06 24.83254743 0 0 16.09340463 5.244817115e-28 0 2.646293292e-34 0 671623.5876 0.02702149116 0 4.0486533e-20 1.457864629 1.923294867e-13 0.01800118108 0 5.950485835e-31 0 0 0 1.026547473e-15 6.804794549e-07 5.845073025e-17 2.127080344 0 72.81579685 0 1.50482886 0 0 0 0 1.279116744e-28 2.71642351e-06 0 4.827175753e-28 2.303188407e-08 0 1.232840761e-18 0 3.485675481e-25 0 0.0002774866633 3.931607082e-17 0 0 2.400456913e-13 0 0 0 0 0 0.2479879646 0.03586914407 0 0 0 2.575428312e-12 1.096612501e-14 1.415763089e-21 0 0 0 96.52750057 1042.687679 3.6215218e-08 2.518199711e-06 0 0.000209420221 0 0 1.808435131e-11 0 0 0 0 0 6.801782139e-18 0 1.055868103e-25 1.24200668 28.07925634 0 1.081339906 100471.4219 0 0 0 2.11315115e-24 0 0 0 4.884805355e-10 0 0 293228.5545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.222145211e-07 16953.24681 0 0 0 0 0 0 0 0 0 7.484865209e-28 0 1.697838798e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.710244064e-16 0 0 0 0 0 0 2.364152699e-29 171.5118258 0 4.033496887e-14 0 0 0 0 0 0 0 +0 0 0 4.70682716e-11 0 0 0 0 0 196386.2966 207.0836611 0 0.06750655631 0 0 0 0 1613590.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.679592309e-14 1.91843491e-09 0 4.90107863e-25 639024.6658 0 0 0 0 0 0.0001298164949 0 2.941297132e-28 0 0 0 0 0 0 24070.20295 0 0.003885942395 0 1.038568624e-10 0 0 0 0 173689.386 0 76376.30064 0 0 0 0 0 0 8.156977683e-26 3.802545554e-13 4724.642826 2.836500341e-43 0 0.01188817713 0 0.04270011835 2.954271275e-14 22.02787786 16.14251975 0 0 9.760154864e-16 0 0 0 0.0001609878841 0 0 6.841473212e-07 0 0 0.05219033912 0.002243865919 0 0 0 0 0 0 4.01800373e-12 0 0 1.749397986 6.979412646e-09 0 0 1.78196131 1231116.342 0 0 1.647754065e-14 8.500418847e-08 2.054433739e-07 1.532065735e-08 0 0 1.905851804e-06 0 0 0 0 0 0 2.474896199 0 0.09120184367 0 0 0 0 5.291255732e-10 0 0 0.001137352215 0 6.777273385e-14 0 3362151.942 0 127.5351684 2.567201335e-06 0 0 0 8.628197547e-09 4.314432155e-09 0 8.489160955e-20 1.090599669e-23 0 7.777331431e-17 0 0 0 0 0.0005934387343 5.994253668e-18 2.294669652e-35 0 2.4860093e-13 1.298454632e-09 0 23587.07397 9536.244999 544.7404294 4.70620651e-26 225486.886 0 0 0 0 0 0 0.004208296053 0 0 0 0.0003127727476 0 7.122968412e-20 0 0 0 0 176.4358827 2.386720486e-09 0 2.170140474e-12 0 9.92911655e-07 2.050805606e-10 1538.434305 6.469746326e-06 0 0 0 1.250257067e-07 2.024269278e-11 0.00146156487 0 9.86226922e-14 0 0 0 1.170896872e-06 5.699730561e-07 14.80268318 1.038969204e-15 0 0.1853002504 0 0 1.231705929e-09 12.18515525 0 0 0 0 6.569012537e-25 0 0 0 0 0.0001101837749 0 0 0 5.581197931e-29 0 0.001737354428 0 1802015.254 0 0 0 0 0 0 0 0 0 0 0 2.615018467e-12 0 3.675265528e-10 0.0004826535691 0 0 0 4.045155342e-11 2.093834229 0 7986.287394 0 0 0 0 8.900371421e-19 1.225903863e-11 0 0 0 2.660325305e-19 3.211508755e-06 0 0 0 0 0 0 0 0 0 0 0 0 5.086317449 0 0 0 0 2.33847191e-16 0 0 0 0 0 3.108014976e-06 0 0 1.376096132e-15 0 0 +0 0 0 0 0.009113879899 0 5.462085294e-10 0 0 0 5.294237047e-10 0.152097263 0 0 0 1.640270362e-06 0 0.0001522292031 188.2770645 0 0 0 0 0 0 0 0 9.205428237e-09 0 0 0 0 0 0.003006983529 0 0 0 0 6.206429178e-16 7.047359413e-06 0 0 0 3.094143916e-15 9.38079955e-16 0 2243272.746 0 0 0 7.098012637e-16 0 0 0.0004445750409 2.441787557e-17 8.175263862e-14 0 0 9.776826809e-08 0 0 0 0 0.0009717115891 0 0 0 19.67549166 0 0 0.2110936431 0 347.9282849 0 6.535013504 0 0.05432789962 0 0 0 0 0 0 0 0.001829585947 0 4.656037094e-05 0 0 0 7.71036277 0 5.439195646e-15 0 3279.267658 2.541055084e-09 0 0 7.182518332e-23 9.027666954e-08 1.003639965e-30 0 0 0 0.03802497298 0 0 4.37131029e-28 0 1.897562246e-07 3.954011451e-12 0 0 0 0.4817171842 0 9.098754818e-18 497.0098877 4.021882103e-10 2.360238925e-06 0 0 2.965462708e-09 0 0 6.484701928e-07 5.425047693e-08 0.01573231333 0 0 1241577.632 0.000621365568 0 0 0 0.001516930732 6.975163119e-09 3.694044718e-12 0 0 0 0 1.480352415e-06 0 827141.441 0 0 0 1.239961542e-31 0 0.0619405942 1.573766867e-30 0 0 11840.69947 2.110700101e-16 0.00993004423 0 0 0 26.59564691 0 0 1.626740964e-07 0 18.5932736 0 0 0 0 1.655928346 0 0.0001254842705 6.008097127e-34 9.687918423e-06 0 0 4631.835715 0 0 0 2.396124474e-15 0 258691.2823 0 0 32189.05123 0 1.396748439e-17 5.969811306e-10 1.069150987e-05 0 5.978719798e-20 0 0 0 0 3.66249462e-14 2.83175021e-15 2.387200939e-11 0 8.448643929e-07 0 0 0 0 0 0 0 0 0 0 4.06198803e-09 0 1.318951216e-27 0.006399533138 0 0 0 0 0 0 0 0 0 1239.602659 0 1.386233789e-22 0 0 0 0 0 3.872157628e-12 0 0 0 0 0 0 0 0 0 0.0002631454899 0 0 0 0 0 0 0 2.881262987e-05 4.130095433e-30 6.480693946 0 8.847742378e-19 0 8271.00419 0 0 0 0 4.12252852e-08 0 5.120914015e-06 1.000182053 0 4133693.294 0 0 0 2.451070612e-12 0 0 0.0001906020187 0 0 0 4.303136858e-07 0 0 3.436949622e-10 0 0 0 0 0.0001446399629 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 2.888800241e-14 0 0 0 0.0001066928769 0 0 3.04461969e-09 0 6.652203332 0 0 238.0926675 0 4.167547499e-23 0 0 9.619430379e-23 0 0 2.609799827e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4716.747547 2281918.684 8.707844946e-08 0 0 0 0 0 0 0 0 0 0 0.000118357436 0 0 0 0 0 0.001347822837 0 0 0 0 5.491836597e-14 0 0 0 0 9.290342079e-28 0 0 0.00440663664 0 0 0 0 152403.0115 0 0 0 103.2660737 0 0.001428875385 0.01329462508 0.00298047485 0 4.946666468 0 0 1.279035799e-08 0 0.000476187188 0 19691.27444 9.906919307e-21 0 2.126863998e-15 0 1986944.595 2.628068898e-27 9.387449539e-19 0 5.37569626e-28 8.91692698e-12 0 0.006110209278 1681.089546 3.388002297e-11 0 0 0 0 7.727640518e-05 19766.02908 0 0 8.706532633e-28 9.00487076e-11 2.528417722e-21 0 0 6.325468937e-08 0 1.537110295e-23 0 4.981879128e-10 0 0 0 7.605105505e-09 2.778598082e-10 0 0 5.001480295e-16 0 0 0 0 0 0 0 1.331361834e-05 1093428.986 337823.4194 0 1.547518811e-21 6.194536841e-07 0 359.2044505 0 19.18727608 0 0.002901204661 1.336871023e-06 0 0 1.364469729e-11 0 5.042743062e-15 1.879781032e-20 103.9775369 0 0 2.60317476e-15 0 0 0 0 0 0 1.870437074e-13 0 2.184686729e-07 0 0 0 0 0 0 0 4.895334063e-11 765549.7047 0 3.397002117e-12 0 5.172746713e-12 0 0 0 0 0 0 6.414276656e-21 5.991625764e-16 0.0009758088632 6.55605775e-11 0 60.18348016 1.138234559e-12 0.0006684556561 0 2.82381543e-24 0 0 7.203723824e-05 0 0 5.371536112e-32 0 0 3.22745898e-13 0 3710155.926 0 0 0.0002913740388 0 0 0 0 0 0 0 0 0 55.40087603 10.82262861 0 0 0 566696.2548 0 0 0 0.008363811343 1.3425639e-12 4.019274734e-13 0 0 0 6.406680812e-10 0 0 0 2.802259699e-17 0 0 0 2.088015614e-35 0 0 0 0 0 0 0 0 0 0 2.126053383e-14 0 1.166208158e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.489408147e-10 0 0 0 0 9.59447488e-07 0 0 0 0 2.647207843e-05 0 0 0 0 0 1149897.2 0 0 0 0 0 +0 1.354435974e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.2001499e-21 2.922254486e-10 1.92180887e-09 0 21084.91955 3155.84199 2.49731884e-27 2.448111107e-18 0 0 0 0 0 0 1.567929387e-33 7.657909373e-28 0 0.0327733112 0 0 0 0 6.564041522e-16 4.575559713e-22 0.02659794579 6.233092555e-05 0 0 1.61848227e-05 0 0 0 0 1.100014768e-09 4.225472674e-23 0 0 0 0 0 0 5.188156142e-15 0.01652927002 0.03804078496 0 0 0 0 0 0 4.427261272e-13 2.666119452 6.297165648e-09 4.053405748e-24 0 210.8934404 0.0004699895637 1.639768518e-07 60.07300273 0 0 0 0.03595330618 0 0 0 0 0 5319.53654 210.4524827 0 1.374981916e-17 0 8.22317361e-18 9.173242055e-08 0 2.712860139e-22 8.520601867 0 0 16.84784724 1.943607094e-19 3.234055049e-25 0 3.099027163e-14 0 0 3.806553071e-11 3.765213798e-26 4.357343719e-15 0 152136.4661 2.92463485e-05 0 0 3.359817434e-10 0 0 0 0 0 2.735360485e-07 64.53724699 0 0 1.540051531e-16 0 0 0 1.081441818e-16 61845.75542 0 0 0 0 2616.348056 0 0.0002145723959 1781.221407 46751.43542 0 0 7.131358691e-15 0 0 0 2.834471268e-15 0 0.0001843063314 1.149503677e-13 0 22779.48281 0.001170163941 2043.375372 4.674534389e-32 0.0002103427165 0 0 0 16.25338748 0.004020534758 0 0 0 0 0 0.2182297118 0.02412995367 1.866560547e-06 1.356382458e-05 2.584873031e-05 0 0 0 0 2.438930605e-08 0 0 0 0 0 0 0 0 0 0 5.326466607e-09 0 0 0 329284.0367 0 0.001619556201 0 0 0 4.5777967e-26 0 0 0 0 4.371306949e-06 4.609008711e-10 0 0 0 0 0 0 0 0 0.007987914024 1.17759484e-18 0 0 3148056.132 0 6.318580695e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 1.578558217e-07 0 0 25999.6568 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.029711192e-08 6.498884373e-07 0 0 0 0 0 1.71950228e-31 0 0 0 0.1808238118 0 0.0001880296705 0 1.456819811e-09 0 0 0 0 0 0 0 5.846297792e-23 0 5.62925497e-06 0 0 0 1.703043668e-13 0 0 0 0 0 0 5.911597117e-09 0 2.953127177e-24 0 0 0.009731933703 0 0 5.48062816e-29 26386.39564 0 0 0 0 0 0 +0 0 0 0 0 5.222362298e-12 0 0 0 0 0.04146164836 2.180311064e-38 40377.57189 0 0 0 3.655341746e-15 0 0 0 0.007218326743 0 0 0 128.1505447 0 0 0 0 1054.284073 0 5.420999661e-10 0.000224051304 0.002210437197 0 2.296555886e-07 0 0 0 0 1.277827227e-06 0 0 0.002843035824 0 4.730021821e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 131.1494359 0 0 4.674451874e-08 0 126190.7851 4.953440514e-10 0 0 0 0 1.694597048e-07 4.055938753e-26 0 0 0 132779.9954 0 0 1.939210405e-07 3.538373273e-13 0 1.638070134e-08 0 4.204976562e-06 1.523392869e-11 0.002079489795 0.2006759095 0 0 0 0 138.5041163 0 1.36541046e-30 1.675471876e-17 0 0.0002973295145 0 8.409408142e-05 0 0 0 0 2.331602085e-11 20.91754862 0.001834552058 0 1.296264067e-26 0 9.088825174e-08 0 0 0 0 2.6753631 0 0 0 0 0 0 0 8.796961931e-08 2.902421795 7.834484454e-12 0 0 84.18526805 0 18.86178245 0 0 0 0 0 0 0 0 2.162908551e-06 0 2.986364873e-21 0 0 2.317165991e-29 23499.80689 1.390471175e-23 4.753458128e-13 0 4.445946111e-21 0 7.34770651e-06 0 1.997003051e-11 0 0 1.363325735e-09 0 0 1082691.858 0.01485712987 0 0 0 2.568797016 4401378.238 2.41442508e-20 0 1.403681992e-12 0 0 5.530926298e-14 0 5.979155634e-08 0 0 0 0 9.366445199e-10 0 0 0.1244612568 0 3139.694089 0 7.542371082e-10 258.7713255 0 9.84392242e-06 6.892352618e-16 0 0 0 0 32.1078623 0 0 0.06514212343 0 0 0 0 0.0297230676 0.002337147497 0 0.5383284737 0 1.469125576e-15 0 0.02016738441 4.176456155e-07 3.89282216e-10 0 0 6558.24453 0 0 1.050765573e-05 7.783488511e-17 0.006233349317 1.443384325e-27 0 0 0 0 0 5.688488826e-12 3.411934975 0 6.085448563e-13 0 0 0 0 695492.1667 0 0.001595162061 2.191462235e-07 3.305912688e-25 0 0 0.005122012131 0 0 0 0 0 0 1.873883307e-27 0 0 0 0 0 0 0 0 0 0 1.089704437e-07 0 0 0 0 0 0 0 0 0 108838.4581 1.565368877e-13 0 0 1.681067496e-16 2.730616254e-27 0 0 0 0 0 0 0 0 0.5162989853 0 6.450611674e-27 0 0 0 0 0 0 0 0 1.211732179e-21 0 4.705866338e-16 0 3.448378414e-10 0 0 +0 3.932517961e-13 0 0 0 0 0 0 2.001077707e-14 0 21.09541068 4253631.512 1.522389404e-15 0 175.1923158 0 0 1.169683924e-12 0 0 0 0 9.894532093e-07 0 0 7.803458925e-12 0.001758095653 541352.0695 0 0 0 1.195585277e-19 0 0 2.856079124e-16 0 0 1.503374014e-07 0 0 0 0 0 0 0 0 7.121407548e-05 0 2.247336203e-08 0 0 5.172666058e-16 0 0 0 0 0 4.909908397e-06 2.815898717e-16 0 0 36.47780605 3.727705571e-20 0 0 0 0 0 0 0.007768315624 0 1.490571519e-13 0 0 0 1057.64421 0 2.530308668e-10 0 0 0 0 369.3068628 4.289320002e-14 3.491804691e-06 0 5.32634971e-09 0 208.5663164 0 5.051268586e-09 1.500125388 643459.0705 0 5.274397208e-17 2.040529039e-19 3.602547314e-27 0 0 6.519643435e-25 0.6254896151 1.650676925e-17 0 0 1.045801889e-17 2.297735441e-23 0 5.309992494 8.005017509e-06 0 0 3.882897163e-18 383.8443279 5.647211498 573538.1899 6.40612384e-06 0 0 1961401.601 0 0 7.64464078e-06 0 0.0002375174905 0.0002923242419 0 1074858.599 0 0 1.648358591e-15 0 7.777386584e-05 0 2.349408769e-10 0 6.387553894e-19 2516.045072 0.2224149693 6.516097415e-11 120.7073711 1.305092296e-09 0 275324.1364 0 5.501325627e-07 0.0001009184845 105.5432855 0 0 83.91419112 1.709972356e-30 0 7.528083241e-22 0 387.3154831 3.53229838e-31 5732.799226 1.545536342e-06 7.187932372e-09 0 0 0 350190.5129 0 0 0 0 122183.0262 0 1.00898482e-12 0 9.848415739e-28 0 4317.680633 0 7.155680118e-06 0 7.884021696e-25 4.357452596e-13 8.148771167e-05 0 2.668315939e-15 4.691804307e-06 2.545603497e-07 0 1.969200472e-07 0 0 0 0 0 2.781207129e-11 0 0 0 0 0 0 38103.2341 0 4.799801992e-11 0 0 0 1.152499939e-07 0 1.098083807e-11 1.89627318e-12 0 0.009049998402 0 2.041022154e-18 0 0 15421.52935 4.622710743e-05 2.569743326e-17 0 0.8020819553 0 0 7.468814761e-11 6.493765731e-10 0.151741935 8.495837612e-21 0.05065208535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.038007516e-27 0 1408698.531 0 0 3.566823079e-15 0 0 5.575371257e-10 0 0 0 5627.937815 0 0 0 1.55422738e-11 0 0 0 0 7.893892616e-10 6908.820203 0 0 0 0 115732.9416 0 0 0 1.10934856e-07 0 0 0 0 0 0 5.843626085 0 0 0 0 0 0 0 0 20.64770199 0 0 4.491146274e-17 0 2.840836277e-06 0 0 0 0.00635974206 0 +2.611287702e-12 0 0 0 0 1.240364584e-07 8.119074564e-13 0 0 0 0 0 0 0 8916.006711 1.103134865e-11 22.69866043 0 3.478405341e-22 0 0.0008335828369 0 0 0.02508200877 0 0 0 0 0 1.278296475e-26 0 0 0 2.091723031e-10 0 0 489.9325117 3.580957868e-25 6.818542333e-08 0.02549645017 4.623512401 1.338921839e-12 0.003544352959 0 0 0 1.839574248e-11 1.408574354e-14 9.515645713e-16 0 0 0 0 0 0 0 6.264037257 326690.6985 13.2426548 0 0 0 97.88119753 2.803004018e-09 0 0 0 0 0 0 144829.312 8.075857772e-23 0 1.467032682e-11 0.0009624999539 5996143.381 0 0 0.008539546581 0 0 1.866373526e-26 264778.3504 0 0.05246448903 0.7015822866 1.054365457e-16 0 0 227.3779822 0 0 9.515110181e-11 0 1.812960734e-05 8397.081846 0 0 3.151384011 0 118096.1428 0 0 0 2.678504111e-12 3.315842256e-20 0 0 0 0 0.06416054315 0.0002713327743 0 1.175783416e-24 0 0 0 3.248881301 0 0.001524476089 4.996372817e-11 1.970551238e-22 0 0 0 9.679543096e-16 1.106265696e-09 0 0 0 3.278514752e-14 9.980234826 0 0 2.727142301e-08 0 0 1.110367803e-12 0 1.654483814e-15 0 0 8.846799005 0 4.423235916e-08 1.482203892e-08 2.082223586e-07 3.179486332e-16 0 4.04873971e-33 0 4.146843459e-05 0 0.3548626337 1.506207295e-10 1.035366999e-08 0 218383.0462 0 0 9.816009989e-05 0.0005169185966 0 0 0 0.03175017349 0 3.541658206e-07 0 137213.7514 0 0 0 0 6.915848691e-33 3.091523878e-16 0 0 0 0 0 0 0 0 4.064723476e-29 1.407739514e-09 4.257651147e-07 3.773821785e-06 0.0005283588286 0 0 0 9.276867759e-18 4.456656789e-06 0.0008248801715 0 0 0 0 0 0 0 3041.082544 0 0 0 0 0 0.02026888721 0 0 0 147.3172616 0 0 0 211.2998783 0 1.18245456e-09 0 0 0 0 0 0 0.0001259756199 8.321370414e-13 1309729.356 0 1.013491316e-10 0 2.718561963e-12 0 0 118474.0914 94.89118526 0 0 0 0 1.583052633e-24 4.159537595e-10 0 0 0 0 0 0 0 8.160402403e-13 0 0 0 0 0 0 0 741.5358519 0 0 8.247561058e-27 0 0 4.649704809e-07 0 0 1.113788318e-18 2.635568761e-08 0 9.723439767 0 2.943050776 8.950720444e-17 1.904741027e-08 0.1042575898 0 0 0 1.914546891e-11 6.909264726e-19 42975.79093 0 0 3.480085285e-10 12497.39943 0 0 0 0 0 0 0 5.691948712e-14 0 0 0 0 1.45534678e-24 0 0 +0.07317260857 0 7.132778959 0 0 0 1.586996952e-10 3.430366505e-10 0 0 0 0 0 0 0 0 2.118828718e-23 1.265952966e-21 3.997789048e-10 5.640381341e-08 0 2.517048709e-09 0 655292.8075 0 0 0 0 17.32310091 0 0 0 0 6.011762694e-14 4.886559503e-22 1.209900888e-13 0 0 0 0 0 0 624.6886363 0 0 0 0 0 0 0 0 3.074415107e-12 0 0 0 0 123114.2957 754500.6835 0 3.033573309e-16 0 0 0 0 1.129532002e-29 0 0 0 3.44376892 0 8.444648412e-11 9.362758475e-14 1.889733525e-23 1.961305374e-32 2.715465819e-20 3.36201761e-08 0 0.9127725697 2.890428971e-25 0 0 49.93220285 0 0 0 1.498334972 1.11610101e-26 512.239593 7.859171651e-12 6.751598328e-17 73819.22692 1.939530661e-05 0 0 1.932189926e-18 70.97545106 7.764745552e-11 21.54627753 0.01023815225 6.660192508e-05 0 0.1081281454 1.470345414e-09 17.68697981 0 0 0 0 0 3.52434563e-36 0 0 8.725151738e-06 0 0 0 2.892742791e-31 0 2.963018575e-05 0 0 0 2.251433115e-08 0.0316447928 2.240009874e-05 0 0 15.2117128 0 0 0 7.839766677e-16 0 1.810155918e-26 0.793526446 0 286710.9342 0 0 0 0 6.36543544e-10 1.109383397e-07 9.074855515e-08 0.4111412453 0 0 1.097489689e-08 0.004789131784 2.754347673 0 0 3.907271384e-12 4.446827478e-36 0 1.721618657e-10 0 9.293501719e-07 1.170053527e-08 0 0 0 0 0 1.026953692e-09 0 0 29674.34269 0 0 0 0 2.089222435e-05 7.827142554e-17 0 0 0 10114.84337 0 0 0 0 0 0 0.0009910102538 0 1.983096538e-07 0 2.220913029e-19 4.829618181e-08 0 0 0 7.153178083 0 0 3.193480493e-24 0 1.733414564e-07 0.07473392019 0 0 0 317441.4678 207701.4222 0 0 0 0 7.651925001e-42 0 0 0 4.162617257e-19 856.929442 0 5.431002825e-23 0 50.80387579 5.009438605 0 1.452002254e-06 3.231403588e-16 0 0 0 0 0 0 8.556010302e-05 0 0 0 0 0 0 1902626.499 0 0 0 0 0 1.071202252e-27 0 65228.47685 0 0 7.05894428e-20 291257.9549 0 0 0 0 0 1.302572002e-07 8.617922441e-13 5.386934717e-08 4.349475792e-14 5.302360728e-18 0 0 0.007726166683 5.513016067e-41 0 2.096605748e-12 0 0 0 0 0 0 0 4.1771468e-10 0 0 4.294544962e-17 0 0 2.828292429e-07 0 0 0 0 0 0 0 0 4.298440135e-24 0 0 0 0 796110.774 127349.5882 2.692823922e-20 0 40833.22952 2.727525909e-13 2.408006273e-11 0 +0 5595874.74 0.5107712954 0.0009123846366 0.3543453159 0 0 0 0 0 0.02046238889 0 0 0 0 0 1.97146552e-09 0 0 0 0 4.399786321 0 0 256216.5163 0 0 0 0 3.066304195e-06 3936.410877 3.591282592e-06 0 0 0 0 0 0 0 0.1983372666 0 0.06307701868 0.5034059365 0 0 5.545995136e-20 0 8.031425989e-08 11.99798956 0 0 0.04827336885 0.01250205834 0 4.330950636e-12 0 30.82506486 0 0 0 0 0 2.013299333e-24 7.625138569e-33 0 5.598893017e-16 0.05739621851 0 0 0 0 12.51455143 8945481.942 1.101568442e-13 0 0 0 2.908600102e-16 0 0 0 0 0 0 0 0.006793580331 0 0.002804325455 0 2.085812359e-09 0 0 0 0 4.014360764e-17 2.136307219e-07 0 0 0 0 1.690071956e-10 3.879874444e-10 0.006947545411 0 0 0 0 0 0 0 2.499748278e-07 3.814560143e-16 0 0 0 0 0 1829.748191 0 0 1.1214545e-12 4.136594575e-13 0 0 7.971623605e-09 2.631453323e-16 1.193034576e-05 7.654554087e-15 3627839.293 0 3.664301762e-16 8.534571552e-07 0 0 0 0 3.467979872e-07 0 0 0 1.051209071e-18 0 3.758086406e-32 0 0 0 6.106552661e-06 13.3224495 0 0 1.503039115e-07 2.616198059e-30 0 1.677039454e-10 0 0 8.778506019e-06 0 0 0 2.862975657e-09 0 0 0 1.269276553e-24 8.522457428e-19 0 0 0 0 0.2749773059 0 8.500737377e-08 0.004266123295 250725.3342 0 3.682567009e-18 1.167098127e-24 157286.418 0.001671464164 0 2.316860045e-10 0 12.00943643 0 678.4588908 1.035250701e-12 0 0 1.877928962e-07 0 0 0 1.763861416e-23 0 34236.02144 0 1.345651974e-07 0 2.362245027 0 0 0 719.7294651 0 314.3631035 5.518412179e-13 0 0 0 0 1.963166856e-06 0 896419.1917 5.580014938e-11 0 0 0 0 0 111726.3958 151.6075061 0 0 0 0 1.992201603e-16 0 0 2.8125978e-13 0 3163.931588 1.343663359e-08 4.663226299e-13 0 0 0 0 0 0.0001861378391 0 1.01588149e-13 4.06769999e-11 0 0 0 0 0.0002716914805 4.77622604e-11 0 0 1.024557336e-10 0 2961353.83 2723.494482 0 3.970895944e-06 0 25204.77863 6.904257966e-09 0 0 5.30035358e-10 4.368621103e-10 0 4.239823716e-18 6.889312786e-16 0 0 2.242708833e-19 0 6.460081857e-05 30.21663882 1084720.035 7.889411564e-06 0 0 0 0 0 0 0 0.0001734458783 1.531702777e-12 0 5.312285146 0 0 0 0 6.395747e-31 1.89488311e-05 53233.2515 0 0 0 0 4.131243612e-15 0 905.4431057 +0 0 0.001971505031 0 0 0 0 1.763999762e-18 0 0 0 0 0 0 0 1.832250086e-12 0 0 0 0 0 0 0 0 0 0 0 0 8.475934668e-21 0 0 0 0.03134603314 0 0 5.25965095e-06 0 0 0 0 9.051066847e-13 0.8671170317 1.704944434e-14 0 0 0 0 9.256078316e-05 1537.349253 0 0 1.112102244e-26 0 0 2.167789205e-09 3.962161045e-18 0 3.182405666e-11 0 2.912526824e-12 0 1.569890582 0 4.124613529 0 0 0 0 2.360933212e-06 0 654157.254 4.918368886e-14 0 0 4.483221525e-14 0.0001594429005 0 0 1.2103015 0 0 400.073611 0 0 0 0 0 1.178821622e-11 0 2.799877924 0 6.767436788e-26 0 0 8.356233477e-31 1456691.289 0 0.6434641794 0 0.03848068243 0 0 0 217.1909314 0 0 0 6.088937594e-25 0 1.554874274e-09 0 0 0.1042452248 0 0 1.106600405e-12 0 0 0 0 0 0 0 8.841400173e-09 1.014939692e-20 224.6683338 2.856839742e-09 0 0 798025.7136 0.0001754733334 0 2.816192146e-15 0 828062.0402 0 0.006531118936 0 1.477245283e-06 4.404317647e-05 1.263525191e-11 0 0 0 4.608417076e-15 0 5.269446544e-13 8.834750959e-09 6.805567527e-13 0 0.004682109555 0 0 0 0 0 8.205896353e-10 0 110.2944722 3.070491042e-13 0 0.0008485961335 1.207858824e-21 0.01668311528 0 0 0.0450473328 2.944218021e-15 0 0 1.32045871e-08 0 0 9440.836969 2.236379695e-06 3.805017614e-20 2.208490801e-08 1.283034814e-22 0 0 0 1.900405899e-15 0.002402984994 0 0 0 0 0 1.687044596e-08 0 1.125083288 0 0 0 2.956526524e-17 1.114459426e-15 0 0 0 0 1.377690883e-24 3.157217109e-11 9.281757944e-20 4.634164864e-34 6.573135329e-24 0 1.000225603e-11 1.995590199 7.375962528e-14 5.841949063e-21 2.040988136e-23 17.85984532 0 0 0 1.033718599e-06 2.06337096e-28 0 9.800964061e-16 4.025693351e-23 0 710503.008 0 0 6.098601843e-12 0 0 9489.955492 0 0 0 0 0 0 8.778885668 2.056735148e-18 0 0 0 0 0 6.67767832e-15 9.35676004e-15 5691478.204 0 0 0 5239.582976 0 0 0 1.690450119e-07 1.017445846 40.98348409 0.0003116851358 0.000705318541 0 0 0 7.590668218e-05 105438.909 0 8277.394725 0 0 0.0001657505901 0 0 0 0 0 0.004830749305 60.23735471 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.523076044e-08 0 0 0 0 1.039219025e-24 0 0.3748962554 +0 0 0 6.889621263e-17 0.01645824764 0 0 0 0 0 0 0 0 0 0 2.579354593e-24 0 0 5.795431515e-13 0 0.0002087833905 0 3.061225501 0 0 0 2.709816877e-11 0 0 1.615443414e-05 0.0001657219376 0 0 0 0 0 0 94346.2663 0 0 191.3283609 0 0 0.003121486576 0 4.112827785e-29 0 0 0 0 0 0 0 4.05603392e-05 0 9.39976954e-15 1.476163597e-08 0 50463.4642 0 0 0 0 0 1.289085643 0 127098.0925 0 0 3.821354455e-09 0 3.060825972e-11 0 1.765554428e-05 6.863051379e-17 0 3.082861402e-15 0 8.596030191e-26 4754.153885 0 0 3.276764856e-13 0 201477.3537 0 0 0 8.617685775e-10 1.326457549e-16 0 0 0 0 0 0.003616078124 6.199575549e-10 0 0 4.224275931e-06 0 4.154057812e-07 1.531821316e-05 2.599197947e-15 0 0 5.44927584e-10 687.934054 1.126059502e-12 0 10639.53721 4.821239237e-21 0 0 9.632754157e-26 0 4.46005318e-09 0 9.711545573 0 0 0 0 0 0 0 3.539964471e-15 2112.194151 0 8.733981484e-11 4.515486567e-07 0.0004276886752 0 1162.286601 5.092100858e-12 79.56521127 0 0 3.357660769e-06 0 4.270020854e-37 0 3.696619738e-09 0 0 1.04058932e-14 0 57677.34542 23.65147225 10135.54066 0 0 3.652878354e-07 0.009033299256 1.03705418e-05 2.129739272e-15 0 0 0 0 0 0.00166748503 0 3.723887528e-11 2.770278685e-31 0.01221360126 0 0.001778658489 0 0 0 1.619434667e-05 0 5.54431691e-05 2.650907536e-10 0 1.011205223e-28 5.573205145e-19 0.0001354166656 1.320196188e-19 0 0 1.538112754e-06 2.63452239e-22 0 4.023055294e-06 3.54897745e-09 0 0 0 8.960111139e-05 5.054999229e-13 0 0 0 0 0.0001807337413 2.344545186e-13 0.000199644763 0 2.77413425e-10 1.344532324e-15 0 0 0.05620569474 0 0 0 0.0434572411 0 0 0 0 2.30087933e-15 0 0 0 1.288130397e-28 0.0004524848033 0 12753.34551 168.3832667 0 3.491788219e-18 249186.776 0 757361.8575 0 0 0 0 5.636467626e-28 0 0 0 0 0 0 3.392803671e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03847517968 0 0 4.181636641e-11 0 8.551625128e-12 5.982530665e-26 0 0 0.0001337413288 0 0 0 0 0 415499.2082 0 0 4.511161084e-08 0 0 1.478354984e-07 0 0 1.670158417e-06 0 0 0 0 0 0 0 0 5971.047307 0 0 0 0 0 1.676614968e-10 0 0 0 0 3.664829322e-07 0 0.0001562399038 +0 0 7.28813962e-17 4.774954289e-13 0 0 0 0 0 0 0 0.006638422427 0 0 0 5.83135923e-07 0 0 0 0 0 0 0 6.509782292e-19 0 0 4.628366214e-14 0 0 0 0 0 0 0 1.143439232e-11 0 0 0 575062.4999 0 0 0 0 0 0 0 8.368658721e-24 5.861794098e-09 0 6082.973836 0.0001824186376 0 0 0 49.19617198 0 0 0 0 2.796829877e-12 450914.0845 0.001581946044 2.807549839 1.571525307e-16 0 0 3047.3608 28990.02003 9.11767786e-14 0 0 0 0 0 0 0.012480753 2.611343387e-09 6.618744304e-14 9.476669796e-07 0 0 4.807001223e-38 0 0 0 0 4.485013623e-07 4.336025863 0 0 0.03033557191 6.600212478e-07 0 0.000218023462 1.382233494e-10 0 4.926800584e-05 0 1.116942074e-20 0.01219998965 0 0 0 0 0 53417.7098 0 0 0 4.975948622e-12 1.926345009e-16 0 0 0 1.69199824e-11 0 321095.8687 0 0 0 0 5.911691767e-24 0 2054101.744 8.220651931e-35 1021.352585 0 0 41636.04138 0 0 0 1.9977167e-20 1.52159249e-06 0 0 5.053910346e-15 4.000594878e-09 0 1.819151295e-28 0 5.110517976e-11 2.904589527e-10 1.104975699e-10 4.732243718e-07 2.631225469e-12 0 0 821.2188925 1.476287595e-29 0 1.811690796e-20 9.765731547e-20 0 0 8.343448596e-10 0 0 2636.221105 96502.89399 0 0.004361673616 1.119913269e-08 0 1.414700628e-23 0 498705.2527 0 0 1.348892112e-14 0 0 0 1.579270305e-15 4.547397094e-10 0 0 2.659095359e-10 0 0 0 46770.82707 0 0 0 0 8.79870728e-06 0 0 0.218188922 0 0.4453262718 8.188011063 0 0 0 7.230457096e-08 0 0 0 0 0 0.0008307339286 0 356907.0088 0 0 0 0 0.00311511942 1.850793199e-26 0 5926.304392 0 0 0 0 0 1086.515098 0 0 6.129677512e-08 1.462665542e-09 0 0 0 0 5.125285007e-11 6.894328962 0 0 5.308775068e-06 0 669866.7919 0 0 1.601377024e-12 656317.6623 0 4.625793625e-10 0 0 0 3.168452192e-07 0 4.746711553e-09 2.6112812e-13 0 0 0 0 0 0 0 3.219865274e-13 9631.711522 0 0 3.984601191e-13 0 2.725916332e-08 0 0 253611.4001 0 35.22546636 1.702145878e-15 0 0.00753599075 0 2.953364048e-12 0 7.497247034e-08 1.080093642e-05 3.503896139e-14 0 0 0 0 3323144.638 0.1498651265 0 0 0 0 0 0 0 0 26.45289826 0 0 447.0654151 0 0 0 0 0 0 0 +0 0 0.1059702151 0 0 0 0.0003803864825 5.070016583e-05 0 0 2318954.237 0 0 0 0 0 0 0 0 4.450937462e-18 0 0 0 0 0 0 0 0 0 0 68543.67538 0 0 0 0 0 2385.688773 0 0 0 0 0.00215376969 1.758590337e-16 2.168724705e-16 0 0 0 0 0 0.0004939281438 0 0 0 0 0 7.532316879e-06 202715.8983 0 0 0 5.76901488e-11 0 0 0 0 0 0 0 1189.307553 1.56313674 0 0 51704.06756 0 0 5.879638599e-15 0 0 0 2.475428283 0 0 0 3.268532058e-22 0 106.3974769 0 483046.4798 0.004961370607 5.671116954e-29 9.698977851e-25 4.86807282e-06 4.007453226e-14 0 0 0 0 68.69463045 0 0 0 1.524864844e-07 5.545230424e-13 0 1.453086373e-15 0 6.023539455e-14 2.289037256e-08 0 312.3040755 0 0 0 4.888319518e-14 2.820123024e-08 104136.7497 1946.906896 0.000273912649 4.005298417e-10 0 223.5419926 0 0 0 119102.9034 0 0 0 0.3556694017 0 0 0 44338.6063 0 4.328285634e-12 0 1.401923429 0 466.7512482 14296.49026 0.0006310461428 0.003135122638 1.426881408e-08 0 8.509377334 0 0 0 0 0 0 0 3.087016205e-07 535623.6935 0 1.899626897e-15 42963.18634 230003.3599 0 0 0 12298.7087 0 0 0 0 0 0 0.3385208901 0 0 0 0 1.470933428e-26 0 0 1.218424825e-06 0 0 9.193914766e-28 0 0 429.015952 0 2.341123893e-10 2.400845185e-12 0 0 0 0 154254.4022 0 0 26642.24925 0 0.0155109566 0.0001966396069 0 0 0.006264768208 0.1515470913 0 42777.85446 0 2.696819489e-11 0 2.456414352e-17 1776615.015 66.75229272 0 0.005447523643 3.36989336e-32 0 0 0 7.470022068e-10 169100.6588 0 6.363737989e-23 0 0 0 2.100498751e-15 0 0 0 0 0 0 4.328165393e-19 0 0 0 7.429567696e-21 3.939916989e-12 0 6.247813106e-14 0 0 0 0 0 0 0.01701642318 3.44678388e-15 0 0 0 1.190168987e-25 0 0.028487268 0 0 0 0 0 0 0 0 0 3.128345015e-12 0 0 0 0 0.6606378299 0 0 0 0.002642852974 0 0 4.386516598e-12 2.09576922e-23 1.892276061e-05 2.882018924e-21 7.524846268e-08 0 0 0 7.070391203e-08 0 3.660572051e-08 0 9.651300792 0 0 0 0 0 0.2030432745 3.278492913e-24 9.471699225e-09 0 0 0 1.783938444e-09 0 0 1.122821936e-09 +0 0 0 0 0 0 110171.196 0 0 0 4.026576165e-33 0 1.894464293 0 0 0 0 0 3.547965403e-11 0 0 0 1.003603829e-24 0 0 0 0 338574.4542 0 0 0 0 5.316250072e-17 0 3.386089544e-06 1.338695213e-17 0 3.211379354e-29 0 0 0 0 0 0 0 2.301864651e-14 0 0 0 0 0 0 0 0 0 3.637384696e-13 0.0001531835818 0 0 0 0 0 4.111963532e-12 0 0 0 8.636264328e-07 1.64216746e-05 2.387720983e-17 0 3.384947588e-16 13.09249457 0 0 0 0 0 0 0 48.40778298 12.78768983 4.747875625e-10 0 0 1.353361641e-23 0 2.90714646e-13 1.140430739e-11 0 0 5.946117249e-12 0.1464035014 0 0.001017200247 0.7039677827 0 3.442542582e-14 0 2.010049299e-07 5.684152344e-22 5.868967148e-15 0 0 985485.2915 0 256.0272849 0.0001562782775 0 0 0 0 2.489123195e-07 362.9314452 0.2501394434 0 0 0 0 0 13.30084629 4059.268722 0 0 78.82913593 0 0 0.1716524313 0 5.111848266e-40 1.816779571e-06 0 0 0 0 0 0 0 0 1.446180159e-13 0 0 0 0 2.226520598 0 0 0 0 9.63770957e-10 78.87664986 0.6518567952 9.85316696e-15 9.960550088e-07 0 2.858624174e-11 0 0 1.558707832e-10 0 0 0 0 0 0.001991802325 0 0 1152828.801 0 0 0 0 6.567884538e-17 0 0 0 5.416500313 4.066844148e-10 0 0.0007288181692 0 0 2.579295055e-06 0 3.375427421e-23 0 0 63332.36442 3.012023989e-22 0 2.536409441e-07 1.177388534e-06 0 2.468850685e-18 2.835316757e-11 0 38.14525752 0 1.13723832e-10 33.2412191 1.155335498e-14 0 0 0 0 7.051730043e-11 20.22090651 0 0 0 0 1.797387387e-09 138.0146385 0 0 0 1.845321953e-08 2.334090731e-09 262829.8092 0 0 0.0005375358736 35156.25843 1.77600943e-17 3.891122855e-13 0 2.939827096e-13 0 0 0 0.1944826874 3.345883969 0 0 0 0 0.003800722834 0 0 0 0 0 0 0 2.088794199e-14 7243.881219 0 1303793.885 0 0 0 0 0 0 30267.0691 4.96229415e-09 0 0 0 0 0 0 0 2.884007081e-12 0 0 0 0 0 0 0 3.327386301e-05 0 0 0 0 0 0 0 1.964984443e-22 0 0 0.4157425572 0 9.551753704e-12 0 1.116147619e-27 0 0 0 0 0 0 0 0 0 9.436969171e-06 0 0 0 0 +0.0304036166 0 0 0 1610.460216 0 0 0 0 0 0 2.836485892e-07 3.410991786e-14 0 0 0 0 0 0 113545.018 0.002018119453 0 0 0 0 0 0 8.65887334e-11 0 7.024508523e-11 0 1.202680894e-09 0 3.39669716e-18 0 7.563689327e-05 0 0 2.069201433e-14 0 9.79873535e-12 0 0 0 2.229666409e-07 4.845821068e-06 0 0 0 0 0 1.024450894e-14 0 0 0 0 0 0 4.554205266e-07 0 0 0 0 1.446654949e-12 1061288.99 7.435412148e-23 5.978935978e-17 0 0 3.361738167e-09 0 3.072160584e-08 0 0.5922783141 0.005909436921 226392.3521 0 3.846473782e-06 0 0 5.290865022e-08 0 0 0 7.693230474e-10 0 0 2.554781131e-14 4.580131327e-23 1.741026441e-07 0 0 10.77816064 0 0 0 1.317270458e-14 0.001453561245 0.001178052674 0 0 7.413611114e-28 4.085490051e-06 6.33713871e-22 2.280902017e-26 2.8038365e-21 2.603814025 0 0 17.74121371 2.6990674e-08 5.036436804e-06 0 0 0 193112.8066 0 0 0 0 0 0 0 6.425547909e-05 0 2.174907921e-24 7.122441985e-20 0 0.01713498383 0 0 0 0 0 0 0 0 918897.0566 0 0 40248.69355 0 29.08418387 2445663.631 0 914745.0885 1.63900534e-28 2.161210369e-32 28734.72343 1.870065654e-15 1.31594702e-19 0 0 1.902168345e-25 5.71211697e-15 0 4.80741736e-07 0.0008226576446 1199748.527 0 7.190727294e-07 0 3559.078719 0 0 3.528458499e-08 0 0 4.677935477e-33 0 0 1.030185966e-27 0 4.647798146e-09 6.697407166e-10 4702.227357 3160.262459 0 0 0 7994.723881 0 0 0 0 0 0 0 0 0 21152.91341 0 14963.54945 5.88053993e-26 940.5816371 0 0 5720338.875 0 58620.80344 0 0 21059.84627 0.1331870396 1.31123845e-20 0 0 0 4.537018895e-28 0 0.04259393077 0 4548.85793 0.0004179967906 0 2.508140344e-24 0 0 0 0.0006126675699 3.704614425e-12 0 2.639155346e-09 5416.606406 0 0 1.463084057e-13 0 9.173697348e-09 0 0 46440.82486 0 0 0 8.374542504 0 0 0 0 0 2.2016085e-11 0 0 2.642546959e-06 0 0 881786.738 0 5.034162035e-10 0 0 5.053441448 8.903464449e-13 0 0 0 0 0 0 0 24.39836283 0 0 1.224107935 1.926315978e-19 0 3.091273873e-18 0 3.0607608e-18 0 1.072394753e-05 0.007213559785 0 0 0 316.8087406 1.098868528e-15 0 0 0 0 0 0 0.0001389300826 0 0.0005111506836 0 1.176373258e-12 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 30844.28901 0 0 0 0 0 2.541850078e-20 0 3.655460206e-07 1322924.392 0 14184.38863 0 2.043943918e-06 3.652025798e-14 0 0 2.801571623e-22 0 0 0 0.0003832539258 0 0 0 6.26297339e-36 0 4.244389142e-25 0 4.242104596e-05 1.520248326e-06 2.454010878e-07 2.238491744e-09 0 9.721434289e-16 0 0 1.2250598e-26 0 6502.442262 0 0 129094.7513 38.38486665 4.201222455e-25 0 0 0 1.727353593e-08 5.787837785e-07 0.1424789615 1.604812673e-13 0 7.072425921e-05 4004.770264 0 0 0 9140.052157 0 0 0 7.587310008e-24 1.320067794e-09 0 1.552920891e-09 0 1.327286413e-10 0 4.380563485e-07 645011.3576 0 0 4.120739084e-08 0 0 0 0 5.11123373e-18 0 5.1909687e-05 0 0 0 0 0 18776.67426 0 0 1.435852901e-11 7.131265442e-25 1478.594486 0 0 0 0 0 0 0 0 0 1.162991256e-11 0 407.4201311 0 8.428081688e-26 0.01413981782 0.05878587415 0 0.001070889851 0 67623.07571 0 0 1.097517977e-13 3.27835593e-10 0 0 0 8.090302368e-06 0 0 2.190811537e-05 0 0 0.0003614126187 0 0 3.269590803e-05 0 0 0 0 0 1.631011841e-10 0 2.385345509e-17 0 234397.0363 410.1918982 4.313087465e-06 0 6.038092382e-29 0 5.722618911e-18 3.092676846e-08 0 1.267186119e-13 682.2410868 1.17387296e-07 243.0838902 3.328859368 0 0 2.909854912e-09 6.580547259e-15 7.640081446e-11 327096.8179 0 0 0 9.837408216e-20 0 107.0228439 2.310357821e-16 1.928195254e-07 0 7.576438373e-06 8.766641243e-05 5.207550834e-18 0 820.6548573 7.429750051e-14 2.490588267e-26 3.775479991e-08 0 0.06440954322 3.932969941e-12 0 0.0002695483216 1740666.881 764896.1758 0 5.033561363e-07 0 0 8.745101512e-25 0 0.00880020327 4.550519062e-08 0 0.0002983245428 0 4.271730847e-06 7.851053441e-05 0 0 0 0 0 0.0003155712984 0 0 0 2.574104368e-19 0 0 0 0 0 0 2652419.193 0 0 0 0 142012.9542 0 0 0 0 0 7.71539316e-24 0 0 0 0 1.097275812e-16 0 0 0 0 0 0 0 0 229834.677 0 2.347411608 0 0 0.007869618612 0 42336.26186 0 0 0 0 0 0 0 0 0 5.651902276 0 0 1.843603886e-17 0 0 0 0 6830.582036 5.720147133e-18 0 0 0 0 3.278268819e-08 151.9813101 0 0 0 0 0 0 3.720588264e-14 0 0 0 0 0 0 0 0 0 0 2.487980318e-05 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 5812.786123 0 0 0 1516.29185 6.025895298e-14 0 0 0 2.984145944e-05 0 0 7.574586286e-15 0 5.1281082e-13 4.124685982e-11 2.27732779e-25 0 0 0 0 0 4.695971996e-07 2.33284709e-26 0 7.281953464e-14 5.481154794e-23 0 0 0 1.214622356e-17 0 4.736016183e-12 0 1.58239063e-09 0 7.545851015e-13 0.0005347900718 186.1291117 0 0.0001723024589 0 0 0 0.03566969797 0 0 2.6068343e-15 4.803032631e-13 0 0 0 0 0 0 0 0 0 0 615968.6732 0 0 7.762018715e-20 0 0 0 0 0 0 0 0 1.174248007e-28 0 0 0 0 2.196864324e-05 0 0 0 0 7.241108748e-10 0 5.914024526e-14 2179374.208 0 345.2933552 5.986552106e-10 49.5335653 1.87244306e-06 0 1.192083266e-19 0 5.341059636e-08 0 2.313625006e-24 383492.1509 2.589074883e-15 0.0001606033267 0.002429867892 5.785601802e-05 0 0 1.556345707e-19 0 3.20395456e-08 1.38259977e-11 1.499426244e-12 0 8.966476979e-30 0 5.397198558e-17 6.648031855e-15 0 0 8.220202591e-14 0 2.564718495e-14 0 4.790323529 0.1230342306 0 132.71988 3.828038235e-16 0 0 6.43964019e-09 0 0 0 0 0 0 2.621481516e-25 0 5.331548202e-18 33816.70208 9.290332034e-11 2.227276334e-09 0.0004556443489 5.782918241e-07 0 0 1.199187634e-05 0 4.066263004e-12 5.50256433 0 0 0 71895.95931 5.437304547e-23 2856713.526 0 733.2441928 0 1.093887584e-16 0 0 0 4147.943985 0 0 0 0 3.94994786e-13 0 5.919348037e-29 0 0 2.253501726e-25 0 0 0 0.08007632511 0 0 2100.632075 0 7.011795203e-08 2.018301321e-08 3530.353287 0 2.204830471e-26 0 0 0 0 0.3605577461 0 0 0 0 0 0 6.932632846e-08 0 1124.75678 0 0 0 0 4.756963122e-06 1.898493591e-09 0 0 0 5.597904749e-14 0 0 0 0 0 0 0 0 0 154071.2431 1.26053834e-10 0 0 0 2.419637006e-14 0 0 0 3.119313023e-07 0 0 0 0 0 0 0 0 4.427608379 0.0007895269015 0 0 0 0 55.69742665 0.01007799012 0 0 3.645805275e-13 0 0 0 0 0 0 1.32449187e-05 0 0 8.368248001e-19 0 0 0 0 0 0 0 0 0 0 5.899014652e-16 0 3.518346717e-22 0 8.209115688e-15 1.042391886e-28 0 0 0 0 0 0.0001509353348 0 0 5.926294712e-21 0 0 0 1.322611906e-09 0 0 0 2.097509568e-10 0 +0 608886.7407 0 0 0 0 1.409539216e-12 0 0 0 0 1.290305884e-12 0 0 3.892685867e-09 0 0 4.148768391e-10 0.007140239331 0 2.777137025e-07 3.437406439e-12 0 0 0 0 0 1056.684575 0 689.0205215 0 0 3.096842061e-05 6.936515003e-09 0 0 0 0 0 0 0 5.793957508e-06 0 830.3387826 0 0 0 0 0 0 0 0 2.495706371 1.699032982e-14 0 6.321131145e-09 0 51428.6523 0 0 0 0 2.425054901e-09 0 0 0 0 0 0 9.080004028e-18 5.837494295e-12 2.00936308e-14 0 6.583388188e-21 0 0 0 0 2382084.84 0 5.676960742e-05 0 0 1.187476194e-18 0 0 171955.7227 132506.6644 6.17524675e-09 0.2135262276 0 0.0009854057111 0 1.545578578e-05 0 0 197956.5462 0 6.107146928e-16 0 0 23386.86921 0 1.29759142e-12 0 5.32588046 4.038361909e-26 9.33179529e-07 6276.836124 4.007341931e-11 0 4.956404066e-10 0 0 0 3.570761309e-09 0 0 0 0 7.446260155e-05 1.689701704e-07 0 0 0 2870.225835 2.899294472e-15 3.573547028e-07 8.693539705e-06 0 6.833040858e-11 0 3.456332681e-18 6.587344394e-09 0 0.002565354341 3.964594638e-05 0 0.01653377396 2.001136693e-13 0 4.12732833e-07 0 3864.338267 8.917796219e-06 5156.292811 0 0 0 0 0 0 141689.3575 1.979637103e-13 0 42.60190519 0 0 0 3.170948263e-29 0 2.124703058e-17 0 0 2.836210093e-14 1.132884371 0 0.04444483738 1.046756709e-10 0.4009362454 5.360234259e-06 0 6.448952786e-08 11995.73296 0 0 0 20707.96929 0 6.711706588e-22 0 0 17.30143507 640213.9111 0 0 4.93670961e-21 583.6911479 4.118308721e-06 0.0001104880095 0 0 2.13777328e-14 0.003157715682 6188.266604 0 0.0007366504597 0 3.544632676e-10 1.357234712e-17 15402.70093 0 0 0 0 2.704016482e-06 3.924442204e-16 1.482962569 1.716558471e-07 0 3788.26672 0 6.056227911e-20 406.8479113 0 0 0 0.0002049415198 0.0275328065 0 0 0.01695727609 0 8.979629867e-12 0 0 0 0 0.8970701191 0 0 0 0 0 0 0 0.009858431911 0 0 0 0 0 8.927264014e-08 11592.57918 51982.53408 4.749423876e-07 0 0 0 0.05564704802 0 0 0 903171.0429 2.007704832e-12 0 0 0 8.206188618e-23 1.831779214e-17 1529.340286 0.004447300157 0 0 0 1.663788088e-12 0 4619.202442 0 3.320781846e-12 1.863758609e-07 0 1.246142167 0 0.6413030201 0 0 0 3.281023475e-17 0 0 0 0 0 0 3.546371167 0 8.019849518e-14 0 0 0 0 0 1.969938403e-13 0 0 0 0 0 0 +0 0 0 0 0 3.457029936e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2140527719 0 0 0 0 0 1.22469388e-12 0 0 0 0 0 5.617981091e-14 0 0 6.931047242e-10 0 0 0 0 0.3913622729 0 0 0 0 0 3.253240735e-09 0 0 0 4.617299145e-15 1.760057258e-09 0 3.096968514e-09 0 0 3.893467461e-15 1.395207494e-17 0 0 3.83316666e-13 0 0 0 0 0 0 7195.536799 2.116764452e-05 0 0 0 69.36217646 0 0 0 1.105378572e-05 0.1474814002 0 3.728183983e-16 0 0 1.201513742e-10 0 0 1.047113359e-09 33.94455683 0.8116626226 0 19621.90775 7.261787979e-05 0 45431.52588 0 0 254.9729041 0 0 8.218284091e-18 1.685317671e-16 0 0 0 554499.9963 8.37877775e-15 3.689875472e-08 0 0 150633.8319 0 0.2461666769 0 3.29638354e-05 0 1.463441565e-13 1.621598711e-20 0 8.29291502e-09 0 0 3.146257813e-20 1.992992463e-08 0.01192756354 2.25721593e-06 191.4272775 61677.46118 0 0 0 0 108.1325492 0 0.01342355722 0 0 0 0 0.0002384176488 3.155084538e-18 1.650492895 0 0 0 0 1.470840847 9.546267059e-08 1.039026556e-10 0 0 338.4236189 3.520912189e-10 0 0 0 0 0 4.630761049e-06 0.08462769713 0 0 3.635924284e-23 1.962910394 528.7012477 23.78333448 0 0 0 86.0088196 554137.8289 0 2.511484578e-08 1.578027859e-14 1.649962818e-24 1.262793951e-08 0.003953314005 0 0 0 2.415921778e-17 0 3.224672661e-05 0 0 2.286741552e-11 0 8.000692916e-08 0 0 0.0207992269 0 32229.50169 1582.855283 0.004660419842 0 0 0 0 0 0 3.515460619e-28 1.84034792e-14 5.32607453e-15 0 0.2542519117 3.743680473e-14 0 0 0 2.508310078e-12 0 0.0006985088642 0 0 2.314288202e-07 0 0 0 308443.1991 0 0.0001452310493 1.06061821e-06 0 152.897018 0 1.386399097e-20 0 8198.45566 0 0 2.570747885e-10 0 0 0 2.607318622e-28 0 0 0 0 0 354.3270437 4.976049663e-11 0 3.128807576e-10 0 0 0 0 0 1.396635553e-13 0 0.001283393617 5.090112508 0 0 0.03607473804 384.3423843 1001.976748 0 0 0.6452457952 0 0 0 0 8273.74098 0 0 3.412878935e-05 1.239110279e-10 0 0 0 7.175354277e-10 0 0 0 0 0 0 0 0 3.427075751e-06 0 0 0 1.915576489e-05 0 4.016182379e-10 6193.590471 0 0 7.55463705e-11 0 2.549138014e-08 0 0 0 0 0 0 +0 0 0 0 0 0 0 3.692105754e-09 4.516900453e-09 0 0 0 286.4706056 0 0 0 0 0 1108.352014 0 1.07615134e-06 0 2.561105964e-08 334.1726179 6.041911585e-05 0 0 0 0 0 0 0 2.315002261e-21 0 0 0 1.088514077e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193676.8466 0 7.279650757e-08 0 0 6.08975603e-11 7.448127454e-14 0 0 0 2.276390286e-05 0 0 0 0 0 4.851242637e-20 0 0 0 16.75839179 0 0 21830.35105 0 0 55303.70892 3.568665909e-11 6.578957737e-16 0 0 1.863583374e-05 0 1372810.509 0.09103662189 0.03142788366 0 3.977211774e-06 0 0 0.1120807414 5.742121999e-29 0 2.439147735e-09 2.931110896e-24 26844.26734 0 0 0 4.725114929e-13 0.003303824325 0 4.628688404e-14 0 0 2.145432735e-07 9.510988193e-14 0 7.582840289e-11 1.074503149e-14 0 0 0 0.4952698761 0 21771.29434 0 7.030103314e-10 0 0 0.9980878882 1.288130044e-08 46.32403808 0 0 0 0.1197505857 106.4518296 2.979142549e-08 0 1.133832184e-10 0 0 0 0 3.811224633e-16 3.58349188e-06 0 0 5.623198523e-08 0 3.331645898e-05 0 12128065.81 78376.2373 2.133447642e-05 0 896.6398195 0 0.001447905523 5.089902164e-24 0 0 9.169562638e-14 0 8.3438158e-11 8651.029906 2.674382343e-11 3.209234863e-26 0 1.282404705e-05 0 0 2.37699958e-11 91.62920828 1.812854738e-07 0 0 0.01005377805 0 0 11.21469656 4.182324939e-07 0 4.749742572e-16 0 0 813.1690501 60407.85212 0 4.136956006e-16 1.243629097e-27 0 0 8023.934806 0 3336.366218 9.820468118e-13 22002.47953 0 0 0 5.249586624e-05 0 0 4.022464065e-31 1.326872029 0 18668.47131 3.596169243e-11 0 0 3.0569719e-08 0 1.96743114 3.066904392e-07 0 0 0 0 0 0 0 0 0 2.472589112e-22 0 0 0 0 9.678872536e-05 0 1.96626966e-20 0 0 7993.962483 0 0 0 0 0 8.634334724e-13 0 1.865370239e-10 0 760169.1307 0 0 0 2.52089101e-08 0 0 0 281.7593298 0 0 0 0 128000.155 0 2.456575969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.451523126e-14 0 0 7.885954e-17 0 0 0 0 0 0 0 0 4.44272535e-09 0 0 0 3.984853805e-18 9.22285552e-08 0 0 0 4.205818921e-13 0 0 +0 7977.565071 0 72202.55504 0 0 0 0 0 0 0 0 1.065749825e-09 0 1.804674099e-10 0 0 0.01917869312 0 2.470721079e-11 0 0 0 0 0.006376597169 0 0 0 0 0 0 133295.6799 0 1.235697886e-10 8.316069341e-24 5.848313411e-11 0 0 0 0 0 0.00463166231 0 0 0 0 2.424818255e-07 1.712863732e-15 0 0 311.1652313 3.442322341e-08 0.0001903029687 4.720614595e-07 0 0 0 0 0 0 0 0 6.295979431e-07 2.233028474e-05 7.701227431e-17 0 0 0 0 0 0 0 0 0.0004036790353 2.724569208e-08 0 1.337350144e-13 0 9.081246867e-18 0 0.001605760782 6.734227783e-16 0.0107542498 0 0 0 0 0 0 0 0 2.288961299e-15 1.852706852e-12 252.3255756 0 1.245141471 1.503756471e-16 0 0 7.413576616e-08 0 0 87.11160864 0 0.03590275869 0 1663255.314 194.7605023 9.135214742e-12 1.492249196e-14 0 9.337767323e-10 0 0 1096.693062 0.0006023284789 36640.84629 5.251559143e-08 30630.28319 0 1.446946828e-07 2.697257549e-10 0 2.968272606e-14 4.522608909e-07 0 0 0 9.159190503e-18 0.0009037424973 0 0 0 0.06463481834 0 0 0 0 0 0.5971049968 0 0 471.4693763 0 281192.6099 9014.882933 0.0001800140305 2.691510949e-06 2.688551449e-14 7.404795867e-11 0 3298982.07 0 0.01800111821 0 6.967613737e-16 0 0 0 0 2.183218836e-13 1.615622531e-05 0 1553.390372 0 7.342925679e-13 0 6.21500007e-06 3.021371935e-08 0 0.006017495619 0 7.329142565e-20 1.021146811e-07 2.157511007e-08 297674.1831 0 0.001687753823 0 0 9.123979254e-05 0 0 0 0 0 0 4.421082907e-13 0 0 539171.6175 0 0 0 2.965372429e-23 0 1790.733313 4.810290142 0 1.917484783e-06 2.499768079e-10 0 1.075146155e-12 7.554959657e-07 0 29933.81675 0 0 0 0 0 0 0.000106190038 0 0 0 2.844988009e-06 2.153336036e-07 0 0 7.406327944 0 1.607708027e-06 0 1538.756765 1.545080974e-34 0 0 235.2466958 4.801779905e-07 891193.2708 0 7979.636054 0 0.1217436322 0 0 0 0 2.592402041e-13 0 0 0 0 4.856887382e-07 0 0 608.449997 4.476161592 2.900591561e-13 0 2.16676377e-07 0 12.82651565 1677.841716 0 0 0 0 0 0 0 0.002816519974 0 0 0 0 0 0 0 0.0004887936856 0 0 0 0 0 0 0 0 0 0 0 48.05495895 965.2187155 0 1.084620256e-18 0 0 8.870274932e-06 3.378977507e-25 0 0 0.1734875116 4.488405071e-07 0.006405405701 17468.52039 0 0 0 0 +0 91067.05017 1.880806826e-30 0 0 1.532287248e-05 0 0 0 0 6.241821985e-20 0 0 0 0 0 0 0 0 0 5.121347051e-11 0 0 0 4.754843505e-05 0 0 0 0 0 0 9.306325302e-12 0 0.4334040827 0.0001176842167 0 0 0 0 0 6.76704831e-08 0 0 0 0 0 2.798292821e-11 0.01160636659 0 0 0 0 7.581315294 0 46.23530904 0 1.306229617e-07 0 2.053828257e-06 0 5.591072489e-14 0 5.058432956e-05 0 0 3.150716377e-24 1.509986077e-05 3609.281017 0 996.1512898 8.425988472e-06 0 0 1.299401374e-18 6.083242466e-19 1.987390853e-19 67.2826648 0 0 0 0 2.674655802e-05 1.87172595e-11 0 0 2.471272422e-14 807.5453353 1.94392248e-09 5.046855989e-07 23.68358351 5.689764733e-12 0.04927577049 0 0 1.799462814e-24 2.092815484e-05 1.530260587e-13 0 0 1.911693795e-08 171287.9072 0 0 0 0 0 2716.031161 1.067339862 0 5.794756664e-14 0 0 0 0.06602817767 42874.34331 0 0 2.277750246e-12 2.551543108e-09 0 1.063415227e-16 353.9513701 15894.42169 0 0.004969574124 0.1838746457 4.783942353e-06 1.712509341e-05 0.001102571206 2.374948402e-14 360.649387 2.77371627e-12 0 8.064237262e-07 0 1.379097383e-08 1.467184215e-14 6.628021077e-12 0 0 1.082644431e-10 802969.7828 0.01594297005 1.809489376e-10 2.007608631 0 104.8545257 0 0 0 5.446239924e-09 1.492473923e-17 10408.21633 0 4.788997269e-10 0 2.031098598e-14 4.037874966e-19 0 0.008141279772 9.252553012e-20 0 0.270742477 0 0 1.598255726e-16 0 0.0003761910314 12946.96731 0.001690824008 0.331712729 689112.1733 0 3.238079112e-15 342929.2539 93.6020915 5.711520736e-18 0 1.543700562e-08 0 0 0.004147161466 0 0 4.324234216e-07 0 96447.50874 0 0 0 1.148383446e-22 0 0 5.173590993e-18 0 1.447795132e-15 1.377334063e-12 0 6.917827041e-25 4.720194604e-11 0.1953649206 0 0.4226425944 196991.0275 0 1.443772483e-06 0 0 0.01190890369 0 590338.1874 0 4.406971063e-09 0 0 276.7478764 4.925719688e-05 0 0.1541134158 2.392615544e-08 0.003389848421 0 0 1.937770943e-05 0.0012973921 0 0.0008030390299 11827.63445 0 3.460232765e-35 0 0 0 2.570309345 3.083537054 0 0 0 0 0.0002900903281 0 0 0 1.682541259e-10 0 0 0 0 0 0 0 0 0 0 0.0001180556506 0 0 0 0 9487.167007 0 9.74497178e-17 0.0003435763376 0 0 0 0.008220001654 0 5.510291939e-13 0 4.339382507e-05 0 1.086359537e-07 0 0.0005658067125 0 1.670070253e-14 4.318649291e-06 68.59174078 0 0 0 0 0.000918248885 1.240898191e-12 0 0.119442666 0 5.721781652e-05 0 0 307.2092589 0 0 0 0 1.593334052e-10 0 0.006225609119 0 +1.147922892 0 0.0007133803691 2.962928151e-11 0 0 0 0 0 3.083817287e-16 0 0 0 0 0 0 0 0 2.710049214 0 0 0.004837686144 8.287436494e-09 0 2.730072908e-17 3.83441395e-07 1.568623358e-17 0 0 0 0 0 0 0 0 1230960.213 0 0 0 7.787808168e-12 6.512968196e-16 0 0 9.255221026e-24 0 0 108766.8137 0 0 0 0.0001353583066 0 0 0 0 1.915024797e-10 0.0001609184272 0 7.446210031e-06 0 0 0 0 1.571120978e-10 0 0 0 0.005232863908 0 0 0 1.335387453e-05 0 0 0 0 159.1264513 0 0.1072892388 0 4.476039235e-33 174.6672349 9.472224327e-15 0 0 2.279029798e-24 0 0 1.122408794e-26 0 0 7.017382858e-06 0 1.048168823e-09 1.721147619e-07 3.190256572 713670.9416 0 0 0 7.306263502e-09 12.57898869 0 0 3.462310201e-22 3.814059068e-06 2.027195601e-12 0 0.02824796149 60.56742557 29.69988486 151.4747128 0 1.847495434e-27 0 0 4.606283791e-26 0 0.1646062812 0 0 3.593941844e-05 0 0 1482.115952 0.000392725399 0 9.202693006e-14 0 1070.938605 0 0 4.269598859e-05 0 0 0 0 0.000715777232 0 0 0 0 0 0 2.075636273e-24 0 0 0 0.0005396129303 0 0 0 0.0001925989131 60280.25345 4.423563852e-20 8.097883184e-07 0 603.6031778 3.463193333 8204.886806 7.995387786e-09 24.65664436 4627899.426 0.0005050929351 0 0 343.8194928 0 0 0 0 0 0 0 7.637394213e-06 0 0 0 71422.70066 7.665149516e-31 0 0 4.219960522e-26 0.0009069258271 1.830862989e-05 0 0 0 0 0 56049.46612 0 9.415658252e-06 0 0 0 0 1.087963681e-15 0 0 5.673694252e-08 0 0.4232933536 0.01059816993 0 2.363501453e-14 0 0 0.03485838241 0 0 0 6.596648708e-05 0 0 2440.7564 0 0 32760.58914 1.923482126e-15 0 1.27485633e-10 2.515963888e-11 0 0 0.1880107122 0 0 0 0 7.211012547e-20 3.171198444e-08 8.497492287e-05 0.0003889357825 0 14.26530343 0 150.2656459 0 0 0 0 5.404891119e-13 0 796.0566031 0 0 0 0 0 1.467322321e-10 0 0.0007906394348 0 0.07484455298 0 0 0 70.35688749 0 0 0 0 0 0 0 0 0 0 0.01876013039 0 0 0 0 0 0 0 1049.130613 0.0474934561 0 8.243086975e-15 0 0 1791.807326 0 91613.04182 4.15452206e-12 1.135167541e-17 0 1.028321681e-20 0 0 0 1.144821913e-08 0 0 0 0 0 0 +7.567411046e-13 0 1.198338424e-13 0 1.904870103e-06 0 11.81072378 0 0 1.188467901e-13 0 0 0 0 0 173202.0397 0 0 0.003152504062 0 0 0 0 0 0 3.276197237e-06 4.913197451e-25 0 0 3.410559603e-22 0 287755.0515 0 0 0 907.2592533 5.900636119e-19 0 0 0 0 0.000301093579 0 0.001376131012 0 6.41415039e-17 0 0 1.404931502e-21 101.181147 0 0 0 0 0 12057.56149 0 0 0 1.419774972e-12 0.003743284963 0 0 0 0 0 0 0 87255.70619 0 3.421793124e-06 0 0 0 0 0 149.5373605 0 0 0 0 6.755420146e-06 2.218422777e-07 349.3851911 0 0 0 0 0 0.5351829711 0 6.173504769e-17 8.652981169e-05 1.550213567e-05 23846.44404 0 34449.16365 331348.1048 0 0 0.0392817404 0 6.541215241e-07 6.440664573 3369.731317 3.197089619e-10 115.8703214 0 6.315957908e-06 0 0 0 4013811.626 0 0 0 3.894582644e-19 0 0 0 0 0.1250961838 0 2.426124924e-05 1.453165952e-14 5.704938631e-15 0 14937.04507 0 0.003405621227 0 0 13.39545163 792442.9957 0 1.125315058e-11 0 0 0 0 0 0.0122749139 1.162347253e-08 1.21239662 6.18699181e-10 0 8.964834425e-16 0 44761.02448 0 2.334921796e-13 0.3649307599 1.265175812e-17 4.13085117e-11 0 0 0 4.25917417e-08 0 0.000373500932 0 5.372402501e-07 26863.08574 1.227806875e-08 5.284761638e-05 0 4.964072132e-13 0 0 0.0004010229284 0 0 2.768510419e-13 438.0584574 0.1327192311 0.01495084644 3.363591923e-12 0 0 0 2.587145524e-13 0.08538702773 0 337.1663051 1.710309042e-15 0 7.74493818e-13 1.18532908e-10 0 7.917267425 0 0 9.050418094e-21 0 0 0 0.0143133373 0 0 0 0.04156969394 5.038774589e-14 9.752499572e-11 0 0 0 0 0 0 2863.657188 0 9.68401979e-17 0 0 0 0 0 81.18136556 0 3.857476393e-12 0.26131304 0 5933.379141 0 0 0 0 0 2.805784968e-21 2.4982295e-09 0 0 0 0 0 7.631726833e-25 0 0 0 0 2.799395289e-07 0 4.843489108e-08 0.1495487775 0 6.278729344e-15 0 0 0 0 0 322587.4175 0 0 0 4.68645225e-06 0 142.8301564 381083.9663 6.544512631e-16 3.065453921e-26 0 4.128772405e-05 0 0 17.41880718 745271.5399 0 0 0 0 0 0 0 1.23213391e-05 0 0 0 0 2.058679054e-14 0 2.772867315e-16 0 2846961.87 0 5.065884622e-19 0 0 0 0 0 9.70894749e-14 9.546139086e-16 5.425313952e-28 0 0 0 0 0 2.651920388e-06 +0 0 0 0 0 3.71168029e-06 0 0 0 0 0 0 0 9.870502971e-11 0 3.0452747e-13 0 0.1292605877 0 2.480778082e-14 0 47609.27666 0 0 0 0 0 0 5.141242247e-08 7.923103649e-26 0 0 0 0 0 30625.5016 0 0 3846.09587 4.210873404e-20 0 5.960632447e-07 0.4612714073 0.1223235576 5.226719293e-15 0 0 0 147063.1001 0 0 0 0 0 3.528751575e-11 0 1.598952942 0 0 0 3.055760127e-08 0 0 649756.8595 0 7.453166491 0 0 0 0 0 0.2372146708 0 0 0 6.99386015e-22 0 0 0 0 1317224.156 0 0 0.0001269785893 0.05765771593 0 0.2217356493 0 9861.742003 2296905.492 0 0 0 6.573697345e-08 0 1.857258653e-10 0 0 0 99208.43583 0 1.676997437e-07 0 0 6.174884566e-07 0 6.195851471e-17 3.880609404e-05 0.6649456423 0 0 28049.44965 16068.45893 0 0 0.0003240661398 0.001328810179 0 8.067012008e-14 0 1.388464409e-13 2.811883507e-22 4.266687955e-12 1.467481431e-29 3.146816617e-11 9.991844483e-08 0 0 0 0 0 0.0003820833639 1.54910299e-30 2.528055916e-24 1.195050105e-10 0 1.995161746e-05 4.102070774e-14 0 0.7241272127 0 1.741781407e-17 0 0 0 0 7.363791917 0 0 3.001948183e-13 0 2.233792697e-06 4.938057352e-07 0 2.065029151e-28 0 0 0 0 9803.190732 0 1.512943673e-21 1.672285567e-13 9.002257561e-13 0 0 3.985378971e-27 14262.01782 0.0007207735032 1.782183728e-23 0 6.704477592e-10 33.30589831 9.807537988e-16 0.0003462843464 0 9.878412751e-05 5.486992414e-05 0 1.296606523e-26 3.159247933e-06 0.1980236728 0 6.979565298e-21 1.018471914e-12 34050.46666 0 0 0 0 143.7171359 1.475575342e-37 0.009400866163 3.894726311e-20 0 0.009681435572 0 5.969546807e-15 0 0 1348559.26 0 9.406628615e-33 0 1.92100829e-10 4.419477495e-14 1.636894653e-11 0 0 0 2.219624e-28 0 15560.20702 0 2.749189466e-14 0 0 0 0.1836839996 0 0 0 1017.85331 0 0 0 0 0 9.62184265e-09 0 0 0 4.335359083e-08 0 0 0 0 0 0 0.003683799021 0 0.6478283225 0 8.968805263e-07 1.076076989e-18 0.0005089542503 0 1.215020929e-09 0 0 0 3.672699551e-10 0 0 0 7.317519489e-15 0 0 0 2.538060894e-12 0 0 0 0.001580674589 0 0 0 0 0 5.502809156 3.331711492e-22 0 1187382.956 7.439273281e-18 0 0.2791099902 0 0 2.02959758e-10 0 1.899983784e-06 1276477.285 18139.04715 0 0 0 0 18.59547315 0 0 0 3.202392757e-35 0 2.893887189e-28 0 0 0 0 0 0 +0 2.834252541e-08 0 0 0 0 0 1.343443361e-11 0.0004161986191 0 0 111.7276451 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0009141785325 0 2.81941438e-19 1927319.594 0 0.0002702675363 1.237366279e-09 75179.73864 0 0 0 2.382482114e-13 7.301747243e-15 0 5.116400774e-20 1.840141001e-30 1023.253195 0 0 0 0 5.55919505e-10 0 0 0.0005213219055 0.01545729277 0 1284.589558 1.152179577e-09 0 10177.80442 0 0 0 0 0 0 0 0 0.01528738298 0 0 4.314331576e-05 0 0 0 554319.5275 0 0 0 0 2670713.088 3.411554516e-11 1.45594177e-08 5.833716439e-13 0 0 3.507504005e-19 0 979.1393306 0 0 0 5.179840792e-12 0 719851.8352 0 0 0 0 9.166947555e-10 1.064899173e-06 0 129.8295817 426.6271318 0 0 0 236.2874341 0.003478000644 0 2.809630557e-07 6.801414193e-08 0 0 1.418378696e-08 94.05361504 1.584853706e-16 0 0.0008346548957 0 1.225250128e-19 0 223429.1966 0 0 0 0 0 0 0.005207247917 1573.52263 5.765056857e-16 0 5.114882189e-11 1103.185089 0 1.25680906 15.69336038 9.344390675e-26 4.045929591e-08 0 0 1.87570808e-08 0 0 0 213.743739 0.6530612095 0 0 0 0 1574.518949 1.02398275e-06 0.03788538189 3.107233394e-10 0 8.837248198e-15 0 0 0 36.41866051 3.873115942e-27 2.517066626e-14 0 13160.18193 0 1.689780038 0 0.03924890828 0 1.85012362e-10 3.929071357 0 0 0 3.273422348e-13 1.88144143e-05 0 0.0001232377645 0 3.45808263e-25 0 0 0 0 30.39010098 0 0 0.3973448369 0 3.521953635e-07 0 100658.2013 9.775647352e-22 0 0 0 3029.213593 0 4.210920165e-10 0 1.94557243e-11 0 0 0 3.254257934e-11 1.582689168e-13 0.0004040968443 1492.517611 0 0 6.223432325e-10 0 3.824127162e-14 0 0 0 0 0 0 0 0 0 1.236934897e-21 8.643975762e-26 0 0.5989628252 0 0 0 0 0 0 0 0 0.6432530113 0 0 0 0 0 0 0 0.001657452921 0 0 0 0 0.0003227804815 0 0 0 5.899285302e-12 0 0 0 4.344885481e-12 6.516521214e-15 0 0.02085121789 0 0 144.0327202 0 0 0 0 0.09350339075 0 0 0 0 0 0 0 0 0 0 0 0 0 393581.1252 5.605678874e-17 2.827969472e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.850233361e-07 +0 0 0 0 8.359627916e-08 0 0 0 0 0 0 0 3.015896251e-16 0 0 0 1.222904465e-13 0 155802.7722 0 0 5.525236333e-16 0 7602.914916 0 0 1.137393821e-09 0 1.460873385e-12 0 4.538151001e-08 0 0 0 0 0 0 2.040258598e-08 0 0.001469834839 4.08697576e-08 6069.160593 2.571061864 0 1.86625564 90.61397807 0.002967906477 0 0 0 0 0 377802.067 0 0 6.674472969e-07 0 1.43222853e-12 0.00111467902 0.00252790638 0 3.841082871 0 0 8.787302443e-13 0 1.884859996e-12 0 0 0 0 4.799462013e-11 0 0 0 0 5.419773343e-07 0 0 4.003480966e-05 0 0 1593.691348 0 0 0 7.205066299e-09 1.380517099e-11 0 0 0 0 0 0 0.9518172675 0 9.802304962e-16 0 0 0 0 0 6.869459661e-09 12193189.29 0 6.383851618 52.46247914 0 0 4.554278117e-05 3488188.023 0 1.200752378e-06 0 1.245738482e-18 975.2877277 1.901381033e-16 0 2.854846419e-10 0 0 0 0 1560.204744 0 1.335376821e-06 871920.1272 2.718831971 0 0 0 3.812719715e-24 6.702239518e-05 0 1.061165175e-09 1.691120866e-19 0 181064.3392 0 8.614574313 1.66211399e-09 0 40052.18348 1.84635831e-10 1.610960427e-08 0 2.207582198e-06 0.04213275782 0 0 1.09507328e-10 3.968561558e-06 0 0 0 0 0 0 0 5.175606747e-11 7.511310566e-17 373.3353302 0 0 2.375369431e-09 2.848425078e-16 0 0 2535430.961 4616061.648 0 0 2.386290164e-14 0 0 0 0 0 0 0.05743027287 3249.690054 22636.31525 0 0 0 0 0.000868759853 2.368597503e-10 2.700205817e-05 0 0 0 0 0 0 0 7677.994644 0 0 0 1.160076532e-06 2.8581709e-14 9.441399172 0 0.1102964211 0 0 0 1434287.156 1.569733864e-05 2.56285815e-12 0 0 2.449857213e-12 1.315459154e-24 0.001010194253 1.985390668e-11 0 18663.71947 779144.6156 0 0 9.545952511e-07 4.121031974e-05 7.771040304e-15 0 0 0.0002302702911 23023.04205 0 0 0 0 0 1.728643426e-10 4.683283826e-15 0 1.154389193 0 0 2.302965893e-28 0 0 0.01581064848 6.936464898e-14 1.036353969e-25 0 0 0 5466.554558 0 0 1.499331722e-12 0.0001368873422 57094.24495 0 1.38338893e-21 0 5179.183204 0 0 3.813747526e-11 0 4.259391605e-15 414.10386 5491.681881 0 0 0 0 1073002.655 0 0 0 0 0.01857128899 0 479098.8368 0 0 1.026158228e-12 0 0 0 0 0 0 274010.9962 0 0 6.604299404 0 0 0 187.2224798 0 0 0 0 0 +0 1.86623374e-28 0 0 0 0 0 1.132001865e-08 0 0.2815910437 169806.3353 0 0 0 0.01123664063 0 0 0 1.571539636e-22 0 0 0 1318.454732 0 0 1.271083188e-05 0 0 0 0 0 0 0 0 0 0 0 1.807923243e-25 0 0 36021.18321 0 2.335009941e-06 0 0 0 0 15532.48821 1.786921033e-06 0 4.094896418e-13 1.373483829e-09 0 861111.4037 0 0 0 1.425101989e-07 3.083313484 0 0 0 0 1.073693278e-15 0 19.19749741 2.717656778e-10 0.06136660257 0 0 0 0 62.95257866 0 1.676416537e-09 0 1.050696041e-12 0 1.234292346e-06 6.81234691e-07 0 0 12835.17121 0 1.920891872e-13 0 0 9.348652356e-15 2.50973378 0 1.780960484e-14 0.0003240683804 0.06884289445 7.755481226e-05 0 0 943970.332 0 974063.86 0 0 0 0 5.255909727e-07 0 0 0 0 0.0002178183934 0 0.0001111895288 4.392990669e-05 2.819952702e-15 86.47986676 0 0 0 0.662670849 0 0 0 0 0 0 0 8.648964034e-09 5.871819908e-21 0 93.11888961 0 0 0 0 0 0 0 119224.8666 0 53280.50259 6.258792796e-07 1.176043829e-08 0 11778.46194 0 0 1.696364935e-06 0 40.40336382 0 1.114069658e-05 0 0 7.485241097e-10 0 4.72394142e-11 0 1772366.498 0 0 6.684914835e-12 0 1.378325589e-16 1.870317895e-08 0 0.009597120145 0 3443.789839 0 27.00419499 0 0 46541.2041 0 0 5.502439678e-13 0 5.31108228e-13 11.64947741 0.3793781173 0 5.408756269e-13 2.377630814e-18 0 0 0 0 7.855089412e-15 5.706914839e-13 0 509151.4591 0 0 0 0 66919.80428 0 413.3225236 1.896807505e-08 0 84.17954749 1.321957418e-11 0.001481429237 0 69565.91118 0 0 3.60010789e-18 0.0004855374387 4.382313592e-09 1.316159078e-10 0 0 1154.768039 439463.5852 717.0401377 0 0 0 10544.3092 4.985683374e-10 0 1.912581721e-06 0 2.536294872e-15 0 0 0 4.23687419e-05 0 0 0 0 0 0 0 0 0 0 0.001024376558 3.026311485e-22 0 0 353.3184905 0 0 0 0 0 1.066679661e-13 0 0 6.037511805e-08 0 6.040572158e-14 179263.1939 0 0 0 17039.3083 6.674244437e-23 0.0004139129245 0 0 0.02880774831 0 0 0 0 0 0 0 0 0 0 0 0 2.280565642e-12 0 1.386923308e-05 0 0 0 0 0 0 0 0 4.541498757 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3.449656537e-05 0 0 0 3.434447326e-07 0 0 0 0 4.733793304e-14 0 0 0 0 0 0 139643.3862 1155921.979 0 0 0 0 0 0 4.628171251 2.478925621e-11 0.0002471539976 0 0 0 0.04567775914 0 1.266699936e-23 0 682.5588002 1.625694935e-06 0.02990737979 0 0 0 4.430178078e-05 0 0 0 0 0 0 0 0 7.41276023e-10 0 0 0 0 0.0001205932159 0 1.346291473e-14 2.00296371e-07 0.01056546847 3.009753688e-15 34.9280451 0 0 0 9.652629845e-17 0 0 4.323554097e-11 7785.851925 1.016112639 121.9805426 1658517.083 0 0 0 0 0 5.702242962e-13 3.47709233e-10 0 4.36777475e-18 0.7507218295 0 0 0 1.028564327e-12 0 1.314704397e-23 0 17.69560468 0 192.6587671 0.002381844493 9.273611741e-08 0 0 5.465861207e-14 0 1.100579923e-11 0 425761.9553 1.012459232e-28 1.297314052e-17 2.739938193e-10 0 6.488217562e-08 46.95070734 0 0 0 3.561438575e-12 0 0 0.001734586399 4922.609361 0 0 1.685067468e-05 0 0 1.534358221e-09 0 1.48835013e-13 0 0 0.001185557717 0.07135632323 5.885783462e-15 0 0 0.003406042863 8.762886768e-11 0.00433778379 6.559393123e-07 2.914456746 0 0 0.08462644948 8.166184724e-23 0 0 0.001754960074 1.302125457e-25 0 0 0 0 2.286458316e-09 2.414542938e-15 0.01174210414 2.301186286e-06 0 0.005680230783 0.030211708 3.76854806e-06 0 128.4751702 39.96725796 2.207346301e-09 816.2796079 0.000338141086 3.620138697e-40 0 126.1946165 0 0 0 0 0 1.414184773e-09 0 0.1675705045 6.723410017e-09 0.004185972962 0 4.693491008e-08 0 0 0.02440092062 0 0 0.1278464355 0.000260518624 0 1.385385288e-08 0 9.626499225 1.779894012e-09 0 0 0 0 5.739409975e-05 1055.863549 0 0.004788827588 0 0 0 0 1.782333377e-19 0 0.0001855260174 8.539624486e-15 1.853703382 0 0 0 911.0356325 9.637566762e-07 8.338401981 0.0001252581371 0 0 0 23832.42432 0 0 0 0 7.26674085e-14 0 1.033745068e-12 0 0 0 3.873586758e-09 4834.62145 0.0002749843271 0 0 0.0022832454 0 3.35742374e-07 0 3.518233895e-27 0 508869.0382 0 0 4.552944994e-10 0 0 3.159009676e-20 0 0 0 486021.2685 0 0 0 0.09157264251 0 0 0 0 0 0 0 0.0001575031482 0 0.003172711083 0 0 1.837273259 6.101641403e-25 0 0 6.535782149e-27 0 0 9.087454438e-12 0.02397100789 0 0 0 0 0 0 0 1.947117738e-11 0 0 0 8.230766208e-20 0 0 0 0 0 0 0 0 66.76627109 0 0 0 +0 0 14.08003019 0.00607044376 0 0 0 0 0 2.632415427e-07 0 0 0 14391.67563 0 565764.2328 0 0 0 0 6.306012347e-16 0 2.524332754e-13 0 0 0 0 0 0 3.401246703e-09 0 0 358612.151 0 0 3.279397e-10 0 0 1268415.449 0.005695857553 314690.1207 0 0.0009248190246 0 0.2058785883 0.0001440079528 0 0 4.86104965e-06 0 0 2.407753553e-13 0 0 0 0 0 0 0 1.946585755e-09 0 0 0 0 0 0.0003693588019 0 3.441054866e-11 0 0 0.005279006504 5.321745614e-18 2.404030087 0 0 0 0 1.724903176 0 6.218812822 0 0 3.649328027e-13 9.353907559 0 15.12019531 0 9.641437675e-11 0 0 0 0 11.57966161 412.1252666 0.001551765507 0 1.867704036e-12 2.207816526e-16 0.0002013238389 3197.053686 0 0 0 0 0 3584.042123 0 17809.94342 0 4.958466057e-12 0 8.238512506e-05 0 5.135604942e-14 6250.156414 0.04931524943 0 0 2.622202416e-07 1.547906206e-09 0 5.488660881e-11 0 2.791517225e-08 4.62576491e-30 36926.70936 0 3.048723433e-12 0 4.02549073e-08 0 1.184581913e-12 0 0 0.1887854291 0 1.589394078e-08 0 3.014329393e-10 5.034144572e-09 4.392647676e-07 0 0 23.3939243 0 0 0 0 8.230942023e-15 2.986184123e-11 0 0 317273.3779 0 2.560246333e-08 0 0 8.928159092e-24 0 0 5.979985985e-10 0.3070092523 21248.96901 8.729109425e-12 0 0 0 0.002464493144 0 1135.053627 0 0 0.00063107147 1911.355865 0 0 0 5.694084931e-24 7.206219833e-23 0 5.602844996e-14 0 0 4.207202539e-22 0 0 0 0 0 0 8.03858194e-10 1.748141076e-15 7.977456385e-12 0 3.819306508e-16 0.007351845359 2324.009692 6.444586856e-10 0 0 8.129927215e-14 0 0 0 0 8.955544236e-14 0 0 424562.0975 0.002960297449 0 0 0 6.52852739e-14 0 0.06963453915 14566.55005 0 0 0.002777471294 0 3.269235059e-07 0 1.313108596e-10 0 1083.193484 151202.735 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.08097142e-07 0 0 0 4307.446649 0 0 0 2.632887186e-10 0 0 2.93712414e-06 0 3.304684951e-28 0 0 0 0.7023202493 0 0 1.21400827e-17 0 0.03964895511 673284.1054 0 3601.988127 7.872998453e-12 0 0 0 0 0 0 0 0 8.466137436e-05 0 1.174172838e-12 0 0 0 0 0 0 6.674586941e-07 0 0 5.153303811e-15 0 0 0 8.406824599e-25 0 2.824551093e-11 0 0 0 0 0 +2.778317928e-08 549752.1868 22.47684083 1.294965518e-08 1.695078557e-14 0 0 7157.254538 0 0 83723.24587 0 0 0 0 0 0 1.568683943e-11 1.557616153e-07 0 3.697527538e-09 0 39.85540569 0 0 8.574356713e-31 3.360496504e-12 107.0125968 5.623691395e-14 0 0 20999.71669 0 0 0 0 1.689608502e-16 0 0 0 8.016204328e-16 616.0296965 2.796870429e-35 0 8.455603224e-22 0 0 0.06472867444 0 0 0 4.022246201e-13 0 0 0 0 0 0 0 0 3.04778596e-14 0 2.406836499e-15 0 0 0 0 0 0 0 0 0.001223127887 1.132848973e-07 335458.7324 0 0.0200852619 0 0 0 1.14562927e-06 0 2.180165223e-22 0 3.838338995e-11 0 0 0 0.4242544596 8.693491687e-08 2.77597832e-21 0 0 3.5853961e-12 5.845463745e-14 0 0 2.564501043e-07 0 1.563971014e-19 390060.636 0 0 0 6.009224116e-20 0.2811297324 0 0 0 3.441185195e-05 3.372795066e-17 0 0 12731.22902 3.723361806e-19 11.5673196 7.307342571e-11 0 2224.934032 0.003322821662 399041.1745 721742.1648 0 0 0 0 9.59426815e-23 0 0 6.445109898e-10 0 0 0 4.391940963e-32 0 1.498094371e-11 1.789101329e-18 0 0 116.5915515 1.039184324 2.564637317e-14 0 2.273801329e-12 0 0 2.89025656e-05 0 0 0 0 0 0 0 0.0004866364267 0 0 0 0 0 0 0 0 0 112.1691188 0 9.887523161e-06 0 0 0 1.498518634e-25 0.001409709596 0 0 434039.2969 0 0 990.6131363 80692.5203 1.483448895 0 0.2013636777 2.726666318e-12 3.732081867e-14 1.2329515e-05 4.70214734e-05 0 1.240496199e-18 7.756125572e-14 0 12.02606757 588.77324 6.76221724e-07 159.967535 0 9527.641088 0 8.354441512e-15 0.0004270122365 1773.567815 8.029493843e-05 0 7.574332712e-05 0 7.408215753e-25 3.685932916e-12 0 0 0 3.531435454e-05 0 0 0 0 115598.8625 0 27.06443838 0 0 1.016727583e-07 0 3.50452577e-08 0 0 0 3.704554562 0.1508215323 0 0 3.463150861e-15 0 0 0.002579096385 1.361497843e-10 0 891.9468948 1.733571092e-12 0 0 103.3999794 0 0.001274472006 7.495451207e-10 0 0 1.155382414e-10 0 0 7.99287734e-09 0 0 0 3.344696853e-10 429279.0083 0 1.178351216e-25 0 0 0 1.599967252e-13 1.9103341e-12 0 8.79973107e-18 0 1.203043327e-25 0 0 0 0 0 0 6.194816601e-05 0 55265.1168 3.400271944e-31 0 0.5634319891 3.221340731e-11 8.208017909e-08 0 0 0 0 392.1269958 0 0.02140046953 0 0 1.505049254e-11 0 0 0 0 26.26259597 0 0.2353513479 0 0 0 0 2.370704909e-08 +0 0 1.567571269e-21 0 0 0 0 0 0 0 0 0 0 1.382919315e-16 0 0 0 1.276903969e-05 0 0 0 0 0 0 0 2940.369227 3.0929238e-14 0 0 0.007804863408 0 0 0 0 0 0 0 0 4.64440357e-08 2.219885421e-25 0 0 0 306488.1082 0 0.0004348546189 0 0 0 0 0 0 5.003954392e-14 7.822756216e-14 0 0 0 0 0 0 0.9469903348 0 0 1.138661943e-15 0 0 0 0 0 0 0 0 0 13.52019327 0 17.62702513 7.484820441e-06 1.296258534e-18 0 0 108.5103226 1221.767306 0 0 46.26882119 0 0 180418.0565 2.302488175 0 1.602774709e-11 0.0001803835771 0 0 0 0 5.586207531e-08 0 0.0004528094919 2.46346681e-21 0 1.904963194e-13 0.02068954996 1.225502348e-07 0 1.539269505e-12 0 1.488048083e-14 84957.07999 0 0 5.997849972e-23 0.00144394275 0.09110439499 0.07008465822 1156287.224 0 0 0 1.45854273 0 1.116597946e-07 472305.1735 1470.567437 0.001365913371 0 9.001946183e-11 0 0 0 0.1347470349 0 1.310714597e-10 4.801680774e-09 0 0 2.413337602e-16 7.126197713 0 4.247484691e-05 1.29919422e-05 0 0 0 0 0 3.48258088e-08 0 0 0 0 3.9621672e-17 0 0 0 0 0 0 3.629512917e-17 0 0.0001656098094 13.05275365 0 0 0 0 9945.696731 0.0008447836684 0 0 131582.1179 0 23307.50839 1.105131125e-13 0 3.076722638e-20 0 0 0 0 0 1094881.413 0 0 0 0 2.411787244e-11 0 0 9.134060229e-05 0 0 0 0 0 0 0 0 16710.9398 2.557578507e-14 0 4.167491683e-12 0 0 0 1.309286307 0 0 0 0 0 0 4.909922778e-22 22427.72304 0 9.005705037e-11 4.211238498e-12 0 0 0 673912.5053 0.1002113877 1.372032079e-19 0 0.04231269396 1.108534057e-20 0 2.187163655e-08 0 0 0 0 0 0 0 0 449413.9182 0 0 0 0 0 2.418781826e-18 2.141331221 0 0 0 0 0 0 0 0 0 0 857828.8294 0 0 0 0 0 0 5.852522108e-14 0 0 0 0 0 0 0 0 0 1.0650546e-15 3.115417131e-10 4.500373697e-05 0 0 7189.321726 0 0 0 0 0.00128882881 0 8.771762547e-21 0 0 1.389864821e-18 0 0 0 1.657268029e-10 2.280851457e-05 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 2.069942933e-18 0 0 0 0 9.111222343e-15 7.151722376e-15 0 0.01408082369 0 0 6.913459491e-17 0 3.646278424e-12 1.373823e-05 6.367387423e-12 0 0 4.504770101e-07 5.704938467e-08 0 0 6.043013305e-24 5.703445904e-05 0 0 3.984594392e-13 162.0995203 1.800641953e-10 0 0 0 0 0 470893.4197 1.451196943e-05 0 0 7.956524727e-10 0 0 0 0 0 2.506610082e-14 0 0 2.028308914e-08 7.254961551e-07 0.8057369999 6.678068473e-05 0 0 0 0 0 10.95835148 2.790135635e-15 0 0 6.073930444e-18 0 0 0 0.6180332185 7.624778571e-12 568794.8991 1.480477147e-09 0 1.249064872e-05 28.3984554 0 0 751.0671179 0 2.635340353e-08 0 0 0 0 1.26015373e-19 0 5.775547235e-05 3.6061434e-13 6.106897362e-05 0 0.0008024143826 5.427344095e-10 0 0 0 0 0.03850709689 8.974582717e-06 5.392699595e-07 0 0 0 1.194850366e-06 0 0 3.227469359e-05 1.480958811e-07 0 0 14.9163125 1.896468946e-17 1.592912164e-22 0 0 7.309147748e-28 0 6.911692991 0 6.374935571e-11 0 0 0 1.364526218e-28 0 2.245924279e-21 5.48212599e-12 7.083573114e-12 1.458340013e-10 3.274981252e-14 0 0 0 0 1.145181891e-10 4.37916244e-18 0 2.266721278 0 0 0.1728578652 137.6386771 0 0 0 0 9.699636399e-05 7.509146798e-06 4340780.059 1.595101939e-07 0 0 0 0 0 0 0 188.5773227 0.04461235728 0 0 0 1.094798449e-07 0 5.118770173 0 4.778140818e-13 0 0 6.5725221e-07 6.890379307e-15 0 0 0 0 0 0.03086193902 1.331405081e-14 2.146059238e-07 0 1.225696304e-14 150.0057953 0 1.039143547e-23 2.16594951e-12 32.66957592 0 0 0 4.513228156e-10 0 0 0 1.679109445e-05 0 0 0 0 0 0 4.588871035e-21 583991.062 2.600994671e-22 0 1.805583735e-20 0 0.0001590721263 0 1.117730635e-05 0 0 997.5344874 0 0 0 254205.3028 3.000792381e-07 3.867003717e-05 0 0.0001201488613 14.93334691 34.79178226 0.2379927505 3.612196936e-29 0 43.9214112 6.591815958e-23 0.0007273478884 2.266949979e-06 0 0 0 6.83238904e-15 0 0 0 0 0 1554.382315 0 0 0 0 0 1572715.545 3352.196946 0 0.09315010582 0 0 1.841379455e-11 0 0 0.02353338255 8.679594848e-18 0 0 0 16771.46003 0 0 0 0.001829053493 0 0 0 0 0 0 0 0 5.002523282e-25 0 1.618416488e-18 0 0 0 5.230963439e-08 0 9523.103391 0 2.588091958e-09 0 0 0 0 0 0.005592881677 0 0 7.009048242e-22 0 7.375532897e-29 0 +0 0 0 1.753993081e-11 0 0 0 6.633527015e-18 1.064904931e-21 0 0 0 0 1.592663868e-14 0 0 0 0.0004339194267 2.777331033e-06 0 2.294521233e-09 7.248331492e-20 2.520879447e-16 7.68308396e-08 0.0008176573925 0 511.8676382 0 203.081251 0 1477.856686 0 0 0 0 0 1.916166382e-07 1.644804913e-05 1.254693854e-22 0 0 0 0 0 0 0 0 0 0 4.691533207e-06 2.0351572e-21 0 1.259866786e-11 0 4.467892742e-16 0 3.459366781e-09 784.497759 1201.291459 0 0 0 2.895342057e-14 2.415665264e-07 0.0001194125792 0 0 0 0 0 4.852815941e-10 0 0 0 0 0 1.288658999e-11 0 9.241661076e-12 0 4.81363872e-06 6.618942096e-08 0 0.001915543776 0 0 0 2.600356717e-14 0 1.429220814e-09 17.02867199 5.396154214e-09 0 0 1.164366532 1.165776041e-08 7.742905775e-09 2246340.901 0.0002024718439 1777.477897 0 204260.8315 1.332129947e-13 33165.60702 1.726036593e-21 0 1.121552376e-06 0.0004640800309 0 1.348043145e-10 1.118870974 0.159369481 0 2.310802711e-14 2.959581341e-09 0 1.643539612e-12 0 0.4210610099 0 0.008429527245 5.270564136e-07 0 1.433816057e-17 0 0.007878814652 0.0002202924004 0 0 0 0 0 0.0009308135529 0 0.2542904195 1.445364244e-06 1.808292555e-09 0 249427.8565 0 2.545273113e-14 0 137249.7968 0 0.009016028652 1.705356964e-09 0 41.56135324 1.451926841e-12 5.498960868e-19 0 5.026935829e-10 2.077978062e-05 0.06772015788 0 0 0 0 0 5.78474067e-05 0.05678670098 0 7.435455529e-18 0 3059.246988 134848.3301 1.400849983e-13 6.700953238e-06 0 0 0 0 0.2212249159 1.097170695 0 8.140650876e-05 0 0 0 0 0 2.337316066e-28 1.308170647e-10 0 1583.259395 8.035743059e-07 37261.41576 0 0 1.509936936e-11 0 4.226054942e-09 0 0 0 0 0 0 1.365760039e-07 16.92714561 3.668552502e-05 0 8.141901775e-22 0 0 6.280115834e-10 83.63574209 0 0 5.874428431e-29 0 9.179212598e-15 79.01673038 0 0 0.1692537307 7.612804688e-10 0 1.731724905e-20 0 0 306556.8498 0 528940.2976 0 0 16.26367796 2.143202789e-15 5.068343346e-21 1.366419496e-06 0 0 1.626372227e-25 8.229015073e-13 3.166124888e-05 4.39045289e-07 0 0 0 2.889669119e-08 288.9514382 0 1.629363708e-19 0 2.241821098e-12 0 0 0 1.098680065e-12 0 0 0 0 0 0 0.0001173701347 0 0 0 0 0 346636.4957 0 0 7.674317607e-06 0 0 0 433087.3234 1.778728782e-21 0 1.269931248e-19 0 0 1.327251967e-16 0 7.062709709e-12 6.305759314e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 35170.15393 8.846478076e-11 1.346156084e-06 0 7.128815257e-11 0 0 0 0 +0 0 1209.225655 0 0 0 0.005391545053 0 9.507986525e-09 0 435022.2406 0 0 7878.103319 1.022973204e-05 0 0.0003922937161 1.234035217e-10 0 0 0 0 0 5.267562857e-07 0 0 0 5.070742504e-07 0 0 0 0 1.771529949e-07 5522.532914 0 1.707607871e-17 1.023391408e-17 501669.5628 0 5.626913756e-14 0 0 3.965677497e-12 6.473483902e-14 0 8062.083717 0 0 0 145522.7021 0 1.314026666e-14 0.1426991487 0 0 0 0 0 1.71157259e-06 0.04670310081 0 0 0 0 9.396190917e-34 0 0 3.851390525e-24 0.3989014421 0 0 0.1163509644 0 0 2.498066343e-23 2.281151784e-13 7.854209474e-08 0 745.2978255 0 0.0002797161424 0 0 0 0 4.593687446e-13 0 0 0 126857.3517 7686.007508 0 2.705405148e-14 0 0 4.057965402e-21 0 0 0 0 0 0 2.686134449e-21 2360520.503 0 0.9185188504 0 0 6.806654089e-09 0 4.797977273e-09 0 0 0 0 3.445757511e-08 0 0 7.758237863e-17 6.898559828e-10 7.571998789e-09 0 2.84434047e-20 0 0 1.477000386e-05 1.480540967e-07 0 0 668714.8578 0 0 4.29660495e-06 76.97890767 0 1.580411028e-08 6.19873222e-08 0 0 0 0.0004944642439 0 8.062841628e-10 0 4.169210552e-16 1.185644285e-10 60457.52571 0 0 34617.74382 0 5.686999304 0.0006863501386 0 0.002174278425 4608.566598 2.30103316e-09 0 0 3.545924188e-08 2.614184748e-07 2.306676008e-21 0 4124.623206 0 0 0 1.557557364e-08 0 2.21315505 0 0 0 0 0 0 0 1.962335147e-13 0.3908194686 0 5.997088015e-26 0 1.546260648e-06 0 0 0 0 0.006846467579 0 0 0 1.002760703e-08 0 3.14848344e-06 1.416474235 0 0.05612292106 9.354166327e-05 0 0 0.04558341018 8.72629581e-20 2.548721007e-09 1774.823224 1.728132593e-10 0 0.0001182454382 0 0.0006652320728 4.396659743e-13 0.00680558695 0 1.994542696e-21 0 3.341375835 7734.787857 0 0 214436.3945 0 28055.11883 0 0 0 0 0 0 0 0 0 0 0 1161.680427 0 0 191785.8129 71899.66232 0 1.370691538e-11 0.1401277189 0 829662.0994 0 0.002260215009 0 0 0 7.366386542e-11 0 0 0 0 0 2.166725208e-12 0.02493734015 0 1.730438028e-12 14334.29801 2559.311532 0 0 0 0 0 0 0 0 0 8.678603276e-12 0 0 3.907207829 0 0 4.263912466e-27 0 0 0 0.0009948362089 0 4.960105192e-16 0 0 8.226050699e-13 0 0 0 5.67169914e-11 0 0 0 0 0 0 0 0 4.696996012e-11 0 0 0 +0 0 0 1.00262388 0 0 0 0 0 0 0 168144.0627 0 0 0 0 1.051860244e-05 0 0.00052271231 0 0 0 0 1.809942717e-06 0 0 0 8.937443813e-22 0 0 0 0 4690.171088 0 0 1.045410565e-05 0 0 0 0 0 0 0 0.06458684483 0 0 0 0 0 0 0 0 8.997938533e-17 3867.32441 0 0 0 0 0 0 0 0 1.366509771e-06 0 0 0.01409506104 0 0 1.846637764e-16 9.774871486e-18 0 0 0 1.816572067e-17 3.063874948e-07 39455.53168 0 1.674545684e-15 0 7.717538947e-05 0.3057008325 0 0 1.617429623e-11 1.358130301e-11 0 0 0 1.703846033e-13 0 51287.02949 0 0 0 0 0 0 0.0002232046352 0 34.66128104 2.670883675e-10 0 0.001065724003 0 0 0.004431496887 3.643299166e-05 725121.916 0 9.167808202e-13 1.399529944e-07 0 0 4.360112378e-19 0 73704.92248 0 0 0 1.196174415e-18 9.879655276e-20 9.798352364e-10 0 5.549086744 0 0.7139872386 7273.151515 0 0 0 0 15.54660733 0 1976401.065 9.223373107e-11 0 0 9.643607236e-07 0.002489717664 893.8500996 0 9.554494477e-08 0.001404862396 2.952617807e-05 2.053218348e-26 0 0 0 0 0 46873.43055 2.553471065e-14 0 1.976743489 7.091852114e-13 0 323607.0066 1.058363341e-13 2.788603803e-13 0 0 0.02144794247 0 0 0 0 32900.04185 0 2444251.103 0 1.533814335e-07 16.92342588 2.276873801e-05 0 0 0 6.22614587 0 1.898404199e-24 2.884597504e-13 2.285278053e-11 0 2.373164541 0 0 0 0 9.656772974e-10 0 0.0008573759304 0 0.001724728679 3.998178231e-11 0 0 0 0.0003401921488 0 0 0 0 4.327237025e-28 0 0 0 5.974679428e-30 0 4.290242924 0 5.449832099 0 0 0 0 0 8.066890098e-13 0 0 0.002727394934 0 0 0 1.422073478e-21 0 0 0 2.57465162e-21 0 0 0 0.4787669083 0 1.827513167e-26 0 0 0 0 0 7.24839e-13 0 0 5599.150617 0 0 0 0 0 0.8667379427 0 15639.27043 0 1196099.88 3047.903263 0 0 0 0 0 9.998263249e-28 0 0 0 0.0007850253923 0 0.1405025988 0 0 0 0 0 0 4.190260776e-19 0 0 0 0 0 0 0 0 0 0 4.35797828e-10 0 0 0 0 4.2019579e-09 0.09008849814 4.537712674e-18 5.647204924e-12 561148.7735 0 0 0 362138.0074 41686.46675 0 0 4.905423055e-29 +0 0 0 0 0 0.03321270389 0 0 0 0 0 0 0 248.9836633 0 0 0 0 8.661071024e-14 0 0 0 0 0 0 0 0 1253990.383 0 0 0 0 1.173428762e-05 0 0.1090620915 5.816186574e-12 0 0 0 3.510473419e-12 2.931171142e-11 0 0 2.398881139e-12 4.540794365e-12 4.500424991e-16 1.778562109e-08 22.8075485 135843.4842 0 0 0 6.756477621e-07 5.853784561e-12 5809.327975 0 0 709.5329028 1.50662049e-18 1.212634188e-10 0 0 0 1.174472115e-17 0 0 0 0 0 0 305388.9209 0 0 0 0 1.35497007e-10 0 0 0.0003834719616 0 5715.881148 0 0 20654.65146 1.225962983e-17 12.10862924 6210.472063 0 555832.0316 0 1528.895986 0 9530.391521 4.532684079e-14 515.1435184 0 0 0 1.442248725e-14 13.25641485 0 227.2614384 6.199776521e-05 0 0 0 0 0 0 13.34552477 3.132389828e-10 0 0 6450.356492 0 0 1823892.291 0 65665.09757 0 9.060086914e-09 1.060109987 18826.94169 0.002817686835 0 12376.14706 2.812863701e-20 0 7.02419704e-09 0 1.048981422e-19 0 0 0 0.007236985627 0.1464573244 0 1.447551932e-06 0.1407928563 0.6642133361 0 6.160399317e-11 0 1.793186945e-07 0.009386263119 0 24.79853586 4.485582843e-07 1.037434325e-06 0 299.3851696 5.650827328e-06 5217.209203 0 0 0.0069590031 1865.663478 0 4.52746733e-21 326.3394423 0.7191943169 69.785934 0 0 0 0 5.700305058e-21 2.443132328e-12 0 0 0 0 2.684829014e-20 0.0002304322358 1.161503371e-09 7.607744129e-11 0 0 45193.73796 4.598187251e-07 32426.06945 6.986489875e-05 0 144.4081555 0 1.590017965e-06 0 0 9849.60052 4.817329699e-22 0 0 0 2.347279601e-14 0 0 0.0004107618778 0 0 3303.578655 1.307179574e-20 5.206670334e-08 0 0 0 0 0 0.0007064540521 1.116971847e-16 0 0 0 0 0 0 0 0.0006565194946 0 4.98203423e-06 0 0.001368953619 2.185700024e-18 0 0 7.348354071e-15 41243.94907 0 0 0 0 0 1267.155282 0 0 1.195466972e-11 0 0 1.356557548e-18 0 0 8.919691076e-05 0 0 6.115300095e-13 0 0 0.05365093311 0 0 1.769451307e-12 0 7.628574416 1.203021493e-17 3.145748911e-08 81771.41109 0.00101673466 0 0 0 0 0 72565.37028 0 0 0 0 0 0 0 0 0 0 0 96633.47906 0 0 0 0 0.01895507016 0 4.546146597e-14 0 1.018752814e-12 0 0 4317194.255 0 0 0 0 0 0 0 0 0 0 0 0 1.725331224e-16 7.161543349e-15 +0 1.950480549 0 0 0 0 0 14.95027235 0 0 0 0 0 0 0 0 0 0 0.04004013644 0 0 0 0 0 0 612175.5777 283.0346655 0 0 0.04454093891 4.252474742 7.831047135e-08 0 2.060230435e-13 0 0 0 0 6.436748665 0 0.0006969891553 0 0 0 0 0.006841505443 0 0 0 0 8.01702213e-06 0 0 0 288183.5535 0 0 0 0 1.128915502 5.872123166e-10 0.03331219584 9.860496376e-06 0 0 0 0 0 0 4.027415877e-06 28.94684036 0 0 0 0 0 1165036.122 0 0.2693871199 7091.319256 0 0 0 0 9.118657781e-22 5.979389698 0 0 0 0 0 0 1.412752564e-09 0 3.416060994e-26 0 7.132834876e-07 0 0 0.0169464486 0.4961739512 0 2.668331312e-05 0 0.01299719465 0 0 0 2.221343327e-06 0 0 0 0 5.479552046 0 0.002495643159 0 0 9.844131536e-08 0 0 6.176357164e-10 0 0 150.5200008 0 0 0 0 292.1957589 4.66994345e-16 0 0 0 2235.705994 0 0 0 29037.37079 2.958137031e-17 4.208361892e-17 0 0 0 0 0 0 3.917824328e-07 0 0 117.3766417 5727.104772 0 0 1.295273406e-12 0 0 2.403285818e-09 8.020048007e-16 574514.763 0 0 0 1.245332639e-07 0 2.908343643e-13 4.201116903e-07 0 2.316640851e-07 0 0 0 0 7.751662498e-06 0 444552.845 1588.820861 0 2.05377486e-11 0 3.294763236e-16 0.08637951272 37779.77478 65.84875132 0 3138.383979 0 0.0267706155 3.109004153e-13 0.00259453514 0 0 0 0 0 1.07105896e-06 0 1.316471256e-12 0 0 0 0 2.842275706e-14 4.610804851e-12 0 0.2055692192 0 3.291873748e-09 0 1319.324357 0 2.551370591e-05 7.343793842e-18 0 0.06535934737 0 0 1.749809992e-05 5.526325257e-08 1.874722519e-12 0 0 4.843559871e-08 1.131735716e-17 0 0 2.567474385e-08 0 0 3.882051961e-16 1.571834418e-10 0 0 0 2.779898349e-07 0 4.953584758e-14 0 0 0.000962639863 0 0 0 8.476307853e-23 1.632964059e-10 1.344329845e-17 0 0 0 0 0 0 0 0 0 4.00411273e-07 0 0 0 0 0 24842.32942 0 0 0 0 9.34291532e-05 0 0 0 9.490479783e-19 0 0 0.007446704903 0 3.823891187e-08 0 116.123283 0 0 2.431089661e-08 0 36.88662574 0 0 0 0 0 0 0 0 0 0 0 7.762987893e-09 0 2.650303654e-17 0 0 2.614402746e-06 +0 0 0 2.82050987e-07 0 0 0 0 0 0 0 8.851219844e-07 0 0.001751176818 0 0 0 0 0 0 0 0 0 0 0 0 2.987444591e-07 0 8.797606963e-07 0 0 2.378344605e-08 0 1.481424653e-13 32319.95612 0 0 0 0 0 88.22980962 0.01007559194 1.851892655e-14 0 0 0.0009007934608 0 0 95.42812584 0 0 0 0 0 0 0 0 2404952.984 5243.870301 1.667718273e-07 7.915859689e-25 7.249812878e-15 0 0 0 0 0 0 0 8956.667888 9.888228989e-08 0.000439340755 4.912835607e-16 0 6.492715088e-09 22866.81309 0 0 1.116576746e-08 3.853531607e-06 0 59.27461604 267352.964 3.527306539e-05 0 0.0006872898303 0 0 0.03033780661 0 7.216338839e-09 7.254911893e-28 0.03571249231 2931606.285 4.35912126e-11 3195.663935 1.180393613e-06 4.275426016e-11 0 0 0 0 0 0.1606241243 0 3.473587036e-11 0.05459846382 0 0 0 0 1.304003003 0 0 0 0 0 0 0 0 0 9.023981962e-07 2.330741604e-06 0 0 0 2.329428584e-14 0 0 0 0 0 0 723.7702033 4191.283761 41935.21739 0 0.0001249018799 0 142775.5068 6.241009563e-12 0.00662814233 0 380009.0767 0 0 0 900395.9174 1.612196714e-16 1.610480743e-11 1.146550318e-07 0.1221846559 0.06589664098 8.333091515e-08 0 0 6.547952869e-06 3.89584836e-14 0 13.57014676 0 5.469762105e-21 240.5716986 0 1.993849767e-12 0 0.1763565954 0 0 1507547.228 0 38556.61973 2.107751502e-15 0 2.958674154e-06 0 7.356884049e-10 0 0.0001978212738 1.758578631e-10 0.08885238441 0 0 12.77421158 33059.24498 0 0 60.55534962 1.663473615e-08 0 4.400123527e-14 0 2.096572032e-15 0 90277.04199 0 0 0 0 0 0 1.791326812e-06 0 0 6.85640734e-10 0.0001019616453 0 1.9266632e-05 181524.0348 0.003265192085 9.485349745e-07 0 1.056419694e-10 0 0.0009790823897 0 0 0 0 8.944867774e-16 0 0 907100.1573 24204.62107 0 1.13923162e-09 0 5.751346087e-10 0 0 0 0 0.0006713584829 2.705772986e-07 0.006097830322 0 1.453260616e-13 0.0828432535 0 2.7129354e-11 1.537790317e-11 0 0 0.4405303371 0 0 0.001582407738 0 1.1006212e-11 0 0 1.021262087 0 0 0 0 0 0 7.329492924e-11 1.356339285e-20 0 0 0 2.87661509e-24 113.7143904 1278629.92 0 0 3.92115525e-29 0 0 1.314610131e-30 0 226.2119899 0 0 0 0 0 0 282.5869698 0 1.066102608e-12 0 0 0 0 3.437098628e-08 0 2.128734493e-19 0 0 0 2.55779767e-14 0 0 0.6721978059 3.924123131e-13 0 5.938729586e-08 +0 0 0 0 0 1.236886657 0.1234551304 0 0 0 0 0 0 0 0 0 0 0 0 2.01953208e-25 0 4.179161953e-14 0 0 0 3407.85583 2387.676558 0 0 0 0 0 3.764127278e-13 3.291998251e-06 0 0.01477828986 3.563753291e-13 0 8350797.818 2.494481572e-14 0 0 1.431042454e-29 0 58.15829319 1.818017699e-18 1.801450691e-12 0 9.164936261e-05 0 0 9.942185738e-09 0 0.000119462936 0 8.566072494e-05 7.478965701e-09 0 14406.72262 0 6.132610773e-16 45.01182105 0 0 2.111182103e-27 0 0 0 0 4.268410144e-09 5.734524109e-11 1.028704262e-10 0 0 0 0 3.548879717e-05 0 0 389866.5915 13024.93699 4.573888577e-08 1.971898053e-08 56.36452291 0 0 2093137.445 0 0 3.356068298e-08 0 0 0 0 2.661440534e-06 4.888470679e-08 3.429855069e-06 0 0 0.05535741016 0.01745133809 6.762257729e-15 6.047688851e-09 3.379235397e-27 2.32404578e-06 1.130472193e-21 0 0 0 0 3.586773309e-07 12.85647801 2.681061666e-05 0 1.304865302e-09 0 6.984992325e-11 0 0 0 0 0 0 3.360456817e-27 0.3622394932 9.870109832e-27 2.342945382e-20 9206.485469 1.507922979e-24 0 0 2.858399566e-10 7.834362834e-05 0 6.052635636e-22 0 0 0 0 0.009337963299 0 0 0 0.005445250639 0.0335625809 9.420525597e-13 0 0 1.84489674e-15 1481.169122 0 0.7417713647 2.75669858e-07 0 0 181.0608603 1.061448771e-36 0 0 0.0001848506033 2.473571149e-09 0 32.70237507 0 0 0 4.887533567e-09 0 1.287948767e-11 0 3.711799362e-05 6.743191902e-05 0.002243402576 2.806786048e-05 1.337242186e-08 0 0 0 3.558408664e-12 0 2.058152552e-16 22.90735926 662169.8431 0 2.198485466e-07 0 0.0009329819902 3.99064852e-05 1.201459326e-13 0 0 0 0 0 0 1.129257919e-08 0 0 0 2.011487444 0 0 13.30346403 0 251263.1173 3140.551393 0 0 0 0 0 0 0 0 0 1374.494334 36944.18774 0 365140.6917 0 0 0.0001777837536 0 2.838208906e-05 533711.2991 4.365350412e-08 0 0 0 0 1.623013125e-13 2276.481183 133.4852998 0 0 0 0.004071184974 0 180.9989814 0 0 0 0 1.236136075 1.680171846e-08 0 528239.5901 28.56573619 0 0 0 0 21.21415938 0 193.8090512 2858.39653 0 0 0 0 0 2.47789229e-24 0 0 0 0 1.335813685e-23 0 0.007110588939 0 0 0 0 0 0 0 0 0 0 1.44132269e-12 0 7.976585967e-14 0 3.205192233e-09 0 2.194856586e-05 0 0 0 6243.830599 0 0.0002486174634 0 387250.3097 2.603216224e-12 0 1.095148898e-11 0 0 0 +8.712290667e-15 0 0 3580.225905 4.517739981 0.0004644921512 7.607467908e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.829359986e-19 0 0 0 0 0 3.808608913e-07 1.006958659e-06 0.6163648734 0 0 2.191255028e-15 0 0 0 0 0 0 0 0.002896240352 0 0 0 0 0 0 0 4.86574239e-11 0 0 0 0 0 0 0 0 1.234146737e-15 0 0 0 0 0 0 1.092133623e-14 0 0 5.454432962e-40 0 0 3554.217236 6.423726178e-06 0 155.0703047 1966671.226 0 7.756305097e-12 0 0 0 0.0002057210848 0 389.2118114 6.917172845e-05 0 0 0 416.827564 0 0 1183578.058 0 9.048343243e-09 0.0005538968611 1.545549755e-11 0.0004460452938 0.0001042012999 0 0.01914924339 0 7.377901165e-23 1140301.92 0 0 0 0 0.1089264162 0 1.203829708e-07 0 0.0005494665632 0 0 0 9.569478713 0 0 0 0 0 7.14209727e-08 0 4.689821038e-07 227566.1613 0 1.170776278 0 0 0.02878221812 0 1.025788998e-11 5.737162486e-06 0 0 1.072103524e-06 0 2.60681231e-18 7.281902023e-20 0.5433999329 0 0 4172.919134 0 0 0 0 3.637216945e-17 866.3699768 0 0 1.119078832e-16 0.000638370023 280.8388673 0 2.623551801e-31 0 2328.655558 0 0 115.5468128 2.605985488 20520.08825 1622137.403 151756.0853 0 0 1.664658429e-09 0 9.269267218e-11 0 0 0 0 0.001531350318 0 1.727889183e-15 0.5572411748 0 0 3.963194275e-07 1.474313713e-06 0 0.6737349468 237.5888788 0 1.425740235e-08 0 0 0.4570628933 3.122763424e-05 1075652.506 0 5032.618793 0 2.794950302e-06 31.57264259 0 0 0 0 7311.70782 0 142031.0117 0 1.228745597e-10 0 0 7905.581302 1.20538073e-09 0 0 4.219091789e-09 1356.021772 0 59.27461366 2.570780653e-07 0 131.7515656 0 0 1142.988487 0 0 4.153930298e-21 0 0 0 0 0.0003819516905 0 0 5121.146548 0.09594596738 0 0 0 0 0 0 0 0 0 0 0 0 0 28330.03834 0 0 0 0 0 1.441612958e-06 0 0 4.665477035e-13 0.03798082167 0 0 0 0 0 0 0 4.869748536e-09 0.1599661845 0 0 0 0 4.827461633e-13 8.284904607e-05 0 0 0 0 0 0 0 0 0 0 0 5.293181118e-18 0.3720033934 0 0 0 0 1.146786266e-10 1.007423119e-09 5.580556566e-05 0 0 0 0 0 0 0 +0 3973.44295 0 0 0 4081.999579 0 0 4.966603559e-06 0 3.03750454e-10 0 0 0 14.94019591 0 0 0 0 0 0 0 0 0 1.422170981e-11 0 101956.8128 16231.74078 1.456607906e-05 0 0 0 0 0 0.001066991721 0 1566.708813 0 526.4242549 0 0 0 6.794476294 0 0 0.9608539322 0 0.005981149386 0.01129665335 0 0 25.47342265 3.883123867e-10 0 0 75200.08641 1.945707006e-09 0 0 0 0 1.658278398e-29 0 2.182515508e-14 0 0 0 0 0 0.03382574022 0 0 0.06567458332 0 4.323953405e-27 0 0 0 0 0 5.098260355e-07 0 18.94458653 6.309503311e-12 0 760067.1412 914606.5239 6.994062427e-09 0.02062999727 7.961751227e-05 5.664542485e-11 4.660256897e-05 3.053141375e-09 155162.1253 0 0 309.1611169 0 0 0 0.005699624565 0.196653299 0.003649732793 0 0 0 0 7.095702489e-07 0 0.6222705821 0 0 3.363995688e-12 9.568574309e-11 0 5106136.004 1.500006112e-07 5.188434295e-14 0.1241772937 0 0 0 0 0 0 0 0 5.780976305 5.150220265e-15 0 49.11589627 0 0.04723545911 0 0 1562.709735 1.688377628e-05 70862.52045 0 0 0 2.101922322e-06 0 3.052876292e-12 0.02744412645 0 174.6359969 6.079464035e-14 44.50601205 0 0 0 0 0.004003773186 4.349642895e-06 0 2.137744313e-09 4.148832132e-12 0 158637.838 0 3.085353877e-09 0 0.001555308215 0 9.651681036e-10 1.132451416e-08 189572.826 0 0 0 2.287001301e-12 21.15833552 5.092801296e-14 7.184522555e-17 7.031776633e-09 0 3.846145392e-33 0 4.887923764e-09 1.324766182e-12 0 0 0 0 0 92.50762653 8.186777157e-11 0.01763407058 0 0.0002268146 0 0 0 0 5.188108969e-10 6.132121513e-05 2.856526349e-06 0 1.460723984e-13 0 176328.5457 0 5215.226669 0 0 0.0001953293174 0 3.143626447e-13 0 640636.0146 46.3362586 0 8.513802651e-10 0 50506.45505 0.00423926013 0 1.537186982e-05 0 471054.2048 111.7107294 0 0 0 0 1.618264979e-11 1.173505471e-07 1625.518424 0 0.0001958849218 0 0 0 2507.275135 299094.5852 7.47793458e-11 0 0 0.0001810423665 1.311217047e-06 0 0 0 5.277360137e-25 0 0 0 0.01437480349 0 0 0 0 0 0 0 0 0 0 0 0 0 1.753411794e-10 0 0 0 0 0 0 0 0 0 0 0 0 7.907036582e-09 0 0 0 0 771.5690198 0 0 0 0 0 0 0 0.002168132554 0 0 0 0 5.223188125e-06 5.082060151e-28 0 0 43.61552588 0 0 +1674.28877 0 0 0 0 0 0 0 0 0 0 0.0001273726432 0 877.2158686 170092.9227 9.620202072e-06 0 0 0 0 0 0 0 0 98988.0923 0 0 0 0 5.754037493e-12 0 0 0 0 0 0 9.148880317e-11 0 0 0 0 0 0 0 0 0 1.036687474e-07 0 13.55971158 0 110772.9749 3138521.128 0 0 0 7.600075242e-25 0 0 0 1.801654375e-05 0 9.002426587e-24 0 0 2.577584182e-08 0 8.547440015e-12 0 0 0 0 5.254238875e-17 3.124946641e-25 2.128076297e-07 0 0.3555344735 0 0 7.362296652e-24 0 4.047940232e-16 9.402043457 9.390348286e-11 0 2.407892065e-11 1.950707132e-05 0 0 1567.033468 0 0 0 2.379790196e-10 0 1.858781582e-08 0 0 0.220221175 0 0 2.629242966e-09 0 1.238133738e-14 3.800140652e-05 115691.4603 0.001843930048 0.15649145 0 0 0 0 4.156101361e-12 5.726727819e-12 0 0.3094147015 0 0 3490.924227 0 57402.31549 280.5337483 0 0 2.160139956e-06 6.951735484e-18 0 1.512680554e-07 2.295311926e-16 231731.059 6.043567375e-09 0 2.585118828e-06 1023933.951 544.5253914 0.2531393261 0 461287.9888 0 0 0 9.039531401e-26 0 1.335767814e-08 1005449.41 3.566832097e-17 0 5.810833311e-08 0 3.822243821e-10 6.805231962 0 0 9231.44471 1.329448881e-07 0 2.355031649 0 0 3.063474314e-09 0 0 0 2.403293169e-16 5.877196209e-12 0 0 26.66920361 317.8451404 1.599273588e-13 0 0 6.464720054e-20 0 0 0 0 0 0.4308725928 0 0 2.408531518e-10 851990.0915 7.607145394e-09 0 0 0 0 0 1342.500462 3.71501036e-11 0.01669666668 3.618806481 0 0.0004711399434 0 0 0 1.349521012e-14 6.594780629e-13 0 0 0 988.6128217 0 170.1708171 4.850459427e-18 0 0 2.469573881e-12 0 0 2.569696605e-15 0 0 0.08486087874 1.127697675e-12 0 1569.846633 1.17881482e-09 1.097855e-18 2.919429348e-17 0.7285371577 0 0 1.507161628e-08 0 15192.93419 272714.7166 572364.7419 0 0 0 1.337133705e-09 30904.15059 0 1.108832367e-22 0 1.95964393e-05 0 0 6.947604781e-12 0 118608.8739 0 0 4.342688221e-06 7016538.602 0 0 0 1.307318883e-17 0 0 6.770764594e-06 0 0 0 0 0 18.29189156 0.00656615204 0 0 3.823684421e-08 2.359203529e-10 4.214841033e-07 5152.670952 0 0 0 0 0 0 0 0 0 0 0 0 0 1.179370045e-06 5.102416596e-20 2.007272109 0 0 0 0 0 0 560353.4137 0 0 0 0 0 0 0 0 0 0 +4.380660025e-06 0 0 2.400347014 0 0 0 0 2.752067163e-15 0 0 0 7.798763922e-11 8.697618703e-10 0 0 0 0 0 0 283505.5362 0 0 1.738589366e-31 0 0 0 0 9619.432775 0 0 721011.6562 0 2.081171986e-10 6.232259799e-14 0 0 0 0 0 5.231450096e-05 0 0 0 0 0 0 2.607122823e-18 0 0 0 0 0 0 0 9.384708261e-07 0 0 0 1.649864885e-20 0 0 0 1.713823082e-13 0 0 3251154.357 0 0.000401221239 0 3.1492999e-10 5.031903907e-17 0 0.7656203959 0 1.711691187e-25 0 6.366616767e-10 0 0.0009548880759 0 5.601866097e-06 1.283357861e-09 0 0 0 0.03069759037 0 0 0 1.152306768e-09 0 0 261.3362852 0 6.572099478 0 0 4.553522251 0.007287722256 0 4.945233557e-25 3248087.133 0 0 0.8848409125 4.119483092e-09 5.758168643e-14 0 0 0 0 0 735128.7737 0 0 27.13603097 0 0 96.05851481 0.002439027687 1.141721921e-15 0 2.618310878e-09 0 0 0 0 0 0.008033307188 0 7.174046904 6091.699835 0 0.03626929888 0 0 0 0 0 0 0 34905.36092 1.237033682e-25 0 3523.270156 0 0 0 0 2.584055198e-07 27.88173011 0 2.696501926e-11 3.591572768e-05 3.019061869e-10 142571.2857 0 0 0 0 0 0 9.457680271e-06 0 132.1328231 411003.9266 7.250426145e-07 0 0 5.713629133e-22 0 1751226.614 23285.31207 0 0 0 0 0 0.001712381291 0 0 0 0 1.596498267e-08 0 0 0 0 0 0 0 4.013866937e-21 85812.64869 0 0 0 0 3.756849007e-15 0 2333.364155 0.0005124292504 0 0 356815.2883 0.009567726032 3.487542099e-29 4.95244309 24468.29711 5.081598013e-05 0 2.392906476e-11 0 1120.031952 237150.2521 0 0 265.6959833 0 0 0 1.19867317e-14 0 0 0 36948.86362 0 0 0 6.386672538e-07 0 0 3.484640032e-28 1.6860472e-18 1394.1799 0.0002415670729 398.2037842 0 0 1.567563669 0 0 3.990020925e-18 0 0 0 0 2.304905984e-19 0 0 0 0 0 0 0 0 0 0.004842521674 16442.17186 2.59122962e-12 302700.1696 0 0 0 0 41719.75375 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.764371682e-17 0 0 0 0 0 0 7.684130001e-10 0 4.767148787e-06 4.970739945e-07 5.834274327e-08 0 0 0 +0 0 0 0 0 0.04319983068 5.027411026e-14 0 0 0 0 0 0 0 2488.071885 0 0 0 4.718308092e-16 1.988819003e-17 0 0 0 0 1610.474791 0 8.706555279e-12 51374.33561 0 628775.8399 0 0.0008685580974 0 6.095295493e-06 0 0 0 0 0 0 0 0 0 0 0 3.106958924e-08 0.1627445628 1.549737257e-05 0 0 0 0 0 2.982097587e-19 0 0 1.33629632e-22 993.698257 1.045118417e-11 0.4433758615 0 0.000633491987 0.4890555838 1.213228379e-20 0.0001624820455 0 0 0 0.001077072175 0 4.202980734e-26 2.341608116e-05 0 0 2270.486266 0.3561171036 7.892205894e-06 0 0 0.0001790954495 0 9.19156734e-13 0 0 670.3782935 0 1.048696794e-09 8.247124811e-10 0 0 0 0 0 0 0 0 1.86600446e-23 4.526106873e-11 0 5.987538944e-06 0 1.808265673e-17 1.847592566e-22 270.7036089 0 36.21568623 1.149752821e-27 0 44.24968933 0.001413950809 0 1.436403751e-10 0 0.03155935053 0 0 27680.25379 0.02689850015 2.782317684e-12 0 0 0 2.102696423 6.90275866 0 0.000915696998 8.038478863e-17 0 0 0 0 0 0 1.121404663e-07 0 8.111389522e-08 0.1427699128 0 3.383342725e-20 0 0 39414.56108 234119.2656 0 0 0 0 0 0.02054773736 21832.70536 1.137400404e-14 50287.29713 2.987430369 0 0 0 0 0.0002209366386 1.075687147e-18 6.470029719e-15 4535.633694 6.657125447e-25 0 4.906233875e-26 935248.3263 4.809537038e-06 8.744016066e-14 0 0 0 2.088615805e-13 0 1.717478619e-12 7.732489106e-09 3.27890747e-10 0 4.204629088e-10 0 0 1.431555072e-14 1043885.344 2.018739302e-12 0 0 154.0906378 571.0889995 11744.42811 2.053154984e-06 0.1925279024 0 0 1.436070585e-11 0 0 1.061248687e-07 0 0 1.421933745e-13 10.21586288 314592.1897 0.007884713391 0 0 0.6815646988 34975.80419 0.0014920663 0 356150.3612 0 0 23391.26338 0 0 0 0 2.191237875 0 0 0 0 10.26980657 0 0 2.68595138e-13 0 0 0 9.887289293e-11 3.641611658e-06 3.871693661e-11 716559.9981 2.184327583e-09 0 1.250801302e-12 0 0 0 0 0 0 0 7390.653543 825.3192672 0 2.818962482e-08 4.998095942e-12 0 0 0 0.001308716102 0 0 0 0 0 30.00300694 0 0 0 0 0 6.798945588e-11 0.2191254563 2.906627648e-11 0 0 0 1.587592057 0 3.955320212e-05 0 0 0 0 1.568227132e-13 2.973753183e-09 1.608391114e-25 9.648350424e-07 0 9.512515279e-11 0 0 1.048731281e-14 0 0 0 0 0 0 0 0 0 0 1780.596264 0 0 0 0 0 0 +38.39239165 0 0 1.817947984e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 9.278364584e-06 0 0 0 142912.5898 0 0 0 0 0 0 785998.4011 3.788320091e-05 8.559268918e-11 3.11121627e-34 0 0 0 0 842573.2682 0 1583.448728 0 0 0 0 0 83363.24421 0 0 0.418323775 76078.71615 0 0 0 1.731133767e-11 0.0005570467205 1.152333133e-06 0 0 4.125465177e-08 1.966233497e-08 1.164176922e-12 0 2.111240231e-09 0.007989335094 0 1390281.637 0 0 0 0 1.075414153e-25 46593.20162 0 0.4929931992 0 0 1.540320821e-12 0 0 0 2.262566935e-29 0 230712.3707 0 0 1053179.387 0 8.442855354e-20 0 7.299349589e-17 9.340456827e-05 0 3.577126442e-12 0 11.92165443 0 0 1.973815681e-06 0 0 0 0 0 3.141497914e-11 1.828489062e-22 0 0 3.408393366e-24 0 0 0 5663.014062 0 0 6.838865203e-06 180709.1351 4.563674903e-06 9.271517048e-14 0.4168898033 0 8.117036687e-17 0 671547.7491 0 0 0 258.2168173 0 0 0 1.735779428e-18 1.602906106e-07 0 0.0009459338096 0 0 0 0.1078822078 5.938122857e-12 1.823570401e-10 2.940286608 0 0.01607918325 7.000128709 0.0112982621 1.797248298e-18 0 0 7.804215737e-08 0 0 13815.34227 0 0 1.31805428e-16 0 0 5.681577122e-05 7.93572343e-24 11688.57271 0.003432732699 4.40509379e-09 0 0 0 1993573.95 0 0 0 4.464401368e-12 0 5.462300465e-08 6.512526952e-07 1.228800718e-10 0 0 0.1624617492 2.406946771e-11 0 0 3.668520406e-16 0 0 0 0 0 0 1.942509677e-08 0 0 0 0 0 1.377190893e-12 7.768947794e-15 4.674380027e-24 4.127679901e-19 38.30076479 0 0 1.726162602e-08 3106.005184 0.00170904135 0 0 0 0 0 0 0 67065.11936 0 4.491904806e-10 0 0 0 0 0 0 0.0002459219329 0 6.123139399e-21 2.366784023e-23 0 0.01010075203 0 0 0 0 0 0 0 0 62867.59907 0 0 0 0 0 0.01513152202 0 0 0 58.99861336 0.0322649827 0 0 0 0 0 0 0 0 0 0 0 0 0 2.970661794 0 0 0 0 0 0 0 0 0.001076840747 0.003125645778 4.500545827e-17 0 0 0 0 0 0 0 331815.2539 0 4.406228759e-06 21840.8061 0 0 0 0 0 0 0 0.00564343399 0 0 6.404569683e-12 0 0 0 417266.4773 0.0001073936547 0 0 0 0 +3.684381684e-13 3766.228341 0 0 0 0 0 6.292819808e-16 0 7.733242416e-07 0 0 1.155692295e-13 0 0 0 0 0 1.905529291e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.665115148e-12 0 0 328472.113 1.169235318e-16 0 1.75026283e-09 3.290548102e-12 0 0 0 0 0 0 0 0 0 360902.9787 0 0 0.003223867362 0 3.881951164e-14 0 0.008454473711 0 2.526366399e-17 0 7.050043941e-10 0 0 0 1.699808282e-11 0 0 0 0 0 6.553729597e-12 862279.5065 2582.644447 1219101.925 0 157428.9102 3.838847502e-10 0 0 0 0 0 0 0 0.009089560165 412.666417 6.053913716e-13 0 6.744069026e-05 3.020181291e-13 0 0.0002695640471 2.9694173e-14 194881.5111 1.263628553e-05 0 0 0.191917893 0 2.67503607e-13 9.472674532e-16 0 1.215559416e-18 0 2394.815468 1.549886296e-10 0 6.881460799e-29 1.899994924e-06 159658.0699 13362.12014 1.223329617e-11 1.929609966e-16 0 3.644709352e-06 3.804796954e-10 0 0 2.469310162e-15 0 3793.375417 0 7.216863329e-19 0 0 2826.914629 0 0 6.512649507e-07 3.437134936e-05 0 0 0 0 1.314055855e-05 1.617107604e-06 6.408682226e-10 67599.162 0.0006538150364 0 1.095355931e-06 2.210830195e-05 2.057322663e-17 0 5.996777012e-10 3.987147073e-14 0 4.972078979e-07 0 0 4.953554785e-18 5.7857786 0 0 0 0.0004608542615 1.152605318e-13 0 0 0 9.197294113e-17 0 4153.566948 0 0 0 0 1.015540736e-07 327.4181137 0 0 4.292370018e-12 0 0 0 0 1.648817541e-17 0 2.901728803e-13 0 0 6.008214819e-33 1.139724138e-09 0 2.131727858e-15 0 0 0 0 6.382062829e-11 1.273949219e-06 2.833571081e-06 0 0.002930498099 0 0 0 5.086748809e-09 6067.079783 0.08189840437 0 0 3.058400534e-07 5.250068434e-13 0 32.18645744 7.865843584e-09 112.7249396 0 4753.965515 4891.184741 1.764423137e-10 8.614558921e-05 0 0 4.32915612e-15 0 1.811389892e-07 0 0 0 0 0 0 2.756775325e-23 0 0 0 0 1.006553859e-07 0 0 1890.231859 0 7045.820822 0 0 0.003216649875 2.946240084e-24 1693538.761 0 0 6.304841635e-21 0 0 0 9.193128452e-17 0 0 0 0 0 0 0 0 0 0 0 0.09729049449 0 0 0 0 0 115414.7251 0 0 0 4.043505758e-14 0 0 1.282902928e-14 0 0 0 74.29500893 0 1.50647791e-15 313.4153332 0 5.71198983e-32 0 0 0 0.2662689228 342.2845307 0 0 0 0 6775.119342 7.604692477e-15 0 +0 0 0 0 0 0 0 0 5.503115391e-09 0 0 41451.66027 0 0 0 0 0 0 8.501606976 0 5.108795204e-05 6486.154656 0 0 62605.47366 0 0 0 0 0.003279293706 0 0 0 0 4.682633494e-08 0 0 3.043232787 0.006695231886 7.715230846e-13 0 1.451031192e-13 0 273069.9544 0 0 0 0 0 0 0 0 0 0 0 0 3.054818905e-14 0 1.199284824e-14 0 0 1.577219162e-12 0 0 125019.5842 0 0 0 0 0 0.0683468641 8.035706558e-07 562.0356103 0 0 0 0 2.726078616e-09 2.432397295e-12 0 0 0.7779924172 4020.938699 6.664546206 0.0003104087625 1049125.612 0 1.732400245e-08 0 0 3.014200196e-13 0 2329561.274 0 0 5.054045856e-08 0.5833410463 0 0 0.003069063432 0 0 0 0.0001303830842 5750.079699 0 0 126416.5722 0 0 6.055897832e-14 0 4.811857209e-09 2.151394641e-22 101041.9763 3880819.953 5.290859254e-05 0 0 120230.0621 1.307428831e-07 0.01070760382 0.3459450939 0 6.67083745e-11 0 0 48.39251413 0 0 0 0.0002279617689 0 0 7.302116749e-07 0 0 0 0.008188173573 0 2.779700967e-13 0 0.009054120246 181636.5841 1.868626538e-17 0 0 0 1577017.732 0.009463228132 2.714131171e-06 0.003857549407 5.73869578e-10 0.03278015452 1623656.034 0 0 0 0 98577.66548 0 0.001642972207 0 0 0 3.77854003e-05 0 0 0.0128867415 1.489873599e-33 0.0006448446284 532.1377049 0 1.045000712e-08 0 0 0 2.302424287 0 1.078004722e-08 1.792714332e-05 100.222036 0.0001009682582 9.043901462e-13 0 0 0.002918425616 0 0 2.094713768e-08 0 0 0 0 0 0 0 1.14545325e-21 1.373338405e-08 0 0 0.0001216836292 0 0 39279.07166 0.0007934548094 0 335668.4675 921.4835963 0 147613.5059 0 0 0 1.107466605e-15 0 4.95600668e-11 0.02844811558 248326.1095 0 0 6.033580998e-26 3.126921888e-07 0 0 17.81088148 0 0 0 0.001371805233 0 0 1.033112995e-12 0 0 0 5.431479582e-05 0 0 0 0 0.4178281153 13549.56361 0 0 0 0 0 1.924968162e-10 0 0 9.722542697e-09 8.443048305e-07 0 0 0 0 1128756.138 0 0 0 955.5338487 0.0001316815779 0 0 0 0 0 0 0 0 0 0 0 0 0 295865.3662 0 0 0 0.009085932193 0 0 0.006627232438 0 0 0 0 2.59804044e-16 33657.84945 2.196357178e-14 0 3.173892749e-09 0 0 0 2.219412495 0 0 0 +0 0.2809476423 0 0 0 0 0 0 9264.317238 1.185815929e-08 8.562424321 0 0 0 0 3.782465267e-08 0 0 0 4.074916353e-05 0 0 0.0008240876572 0 0 0 852155.1396 0 850.5053453 0 0 166555.1567 0 0 0 13606.2129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.542023534e-15 0.06666985123 0 0 9.317131924e-12 0 0 0 4.100282298e-06 56.39288722 320.7147755 0 8.850344027e-11 0 0 0 0 3.886536554e-17 6.819592999e-15 0 0 0 5.375719668e-06 0 471661.8201 0 0 0 6210.960377 360.2641308 0 0 1.560595123e-07 0 1.716008171 1.083691621e-05 0 0 1227131.234 3.244254499e-15 3.655321531e-11 0 1.322253165e-15 0 0.008394181178 0 0 7.002170508e-18 0 1.02739007e-12 0 4.243876441e-05 0 0 2.577983326 0 0 0 0 0 0 836.6788032 2.799865277e-07 0 0 9.256733392e-07 2.859415488e-15 0 1.430459289e-09 2.32143483e-13 7.614926956e-13 0 3.02636097e-20 660.3658464 0 7.586364417e-08 0 0.0008794029157 0 3.216230003e-13 2.762455759e-08 0 1.238585491e-06 0 0 1.652153774e-10 9.807536799 0.08186533149 0 1.999846132e-16 0 0 0 3.713482856 1.402132536e-06 0 0 0 0 0 3.527638754e-14 0 0 7488.695737 0 0 835805.7182 0 0 2.072927186e-07 3.309496724e-12 9.843570609e-12 1136582.769 336005.2881 3.316939075e-18 3.515048884e-09 0 0.004172225454 0 0 2.188058015e-08 0 6.205650897e-10 6.271838887e-10 3.395286164e-05 4.58747962e-33 526935.3547 0.1707393478 0 0 0 0.2441435918 4.306741042e-11 1.847351065e-14 0.400435038 3.766762621e-06 1.401488367e-25 0 0 0 38.31443928 0 2.656489317e-15 0 4.886848663e-05 6.317718351e-14 1.71762058e-08 0 0 0.3162280876 4.279000447e-15 2.485624323e-13 4.955157367e-14 0 426.2254574 2.07998286e-14 0 0 0 1.272535607e-12 1.111102519e-15 0 0 0 2.988466311e-13 0 0 0.1135303293 4.728264295e-05 2.540564488e-10 6.664148469e-06 14614.72285 0 0 0 0 1.046493908e-22 0 0 0.002481242648 0 8.05320427e-22 0 0 2.511571668e-10 3.474891087e-09 0 0 0 0 1487.832894 364.3287022 0 1.706660452e-15 0 0 0 0 0 0 0 0 0 0 0 0 0.06604299643 0 0 0 0 1.532692865e-08 0 0 3.676728782e-15 0 0 0 1066.734974 0 0 5.90116996e-08 0 1.187824202 0 0 3.0943929e-08 0.3088597984 0 3.70820639e-16 2.110330017e-09 8.068536338e-06 0 0 0 0 0 0 1.533510595e-13 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 4191.649631 0 0 0 0 0 0 0.08424207376 0 0 0 0 0 0 0 0 4.058725025 0 0 0 0 0 0 0 0 0 0 5.701140476e-13 2.006713119e-15 1.702976558e-14 1.984625126e-06 0.003131253085 0.002047211673 0 3.783800014e-07 0 0 0 0 0 0 5.726095763e-12 0 0 0 0 0 0 0 0 0 0 1.03177753e-10 0 0 1.303396145e-10 0 4.779199192e-06 0 4.294587243e-19 0 0 0 0 0.000141971385 0 0 0 0 0 0 1.265831173e-12 340445.9433 9.647310773e-07 0 0 0 1.261145939e-13 0.3018904369 446700.2049 1.718987489 3.184293399e-14 0.0008071485994 0 3.261322524e-05 88646.84855 0 0.0006829496878 0 0 3.346076842e-09 2.686218937 404132.3419 0 0.03079149352 0.003659756198 0 9029.244998 0.008266931237 0 0 0 0 0 0 0 0.0001851192735 4640.702227 0 387699.0082 0 4223.37903 0 0.03166732281 0 1111537.185 0 0 1.701292476e-15 0 4.33241402e-13 0 0 0 1.183138354e-17 0 28.66831353 7.515910547e-06 0 0 0 14589.49781 1.433864481e-08 1.353753188e-10 0 0.09353147717 0 0 0 0 0 0 0 1637347.609 0 63922.50326 0 0.42082537 0 1.441442709e-11 332490.7668 0 9.341942096e-17 3.086881411e-18 3.774687361e-09 0 0 0 0 5.217898757e-08 0 0 3.862600929e-13 1.290674011e-14 0 0 0 0 0 1.423022613e-07 10568.736 0 2.548881278e-26 0 0.004037898432 1.093769135e-11 0 0 0 0.03773149691 0 0 0 394.9810935 0.01416667538 128053.7825 0 0.0001434982281 1.941944255e-20 0 79343.33283 8.392827774e-08 0 0.001274296454 0 0 0.001057769536 4.732292764e-05 0 0.01162714027 9.752935288e-06 0.01062936213 1.15156261e-13 0 5929.33 0 13.45393407 481.0599649 0 0 0 0 0 0 0 0 0 153234.2248 0 0 6.93256083e-12 6.958787094e-08 1.212773133e-12 0 0 0 4.190503631e-15 0 0.01133332467 0 0.0002361995419 13.80069607 0 0.827527227 0 0 20.96497485 0.09685825346 0 1.017388855e-09 0 1.939073413e-06 0 0 0 8.858636531e-05 0 0 0 0 0 0 0 0.0007282239552 0 0 0 0 0 0 0 0 0 0 0 0.0002238062092 0 0.002773842663 0 4237.398401 0.740559093 0 0.02818684229 0 70979.05285 0 0 5.888204569e-07 0 0 0 0 0 3.585760262e-25 0 0 0 0 380.7510248 0 0 0 10.54615613 8.272020624e-15 +0 0 0 0 0 9.480646956e-09 0 1.807113624e-21 0 0 1.407941986e-05 0 0 0 0 0.07471417403 0 0 0 0 0 0 0.4385148659 0 0 0 0 0.0003947280209 0 0 0 2.842274189e-28 0 0 2.087838908e-07 0.2538128632 0 0 2.859155697e-14 0 2.84240586e-05 0 1.593807085 0 0 0 0 0 0 447559.4785 0 0 0 0 5.374339884e-09 0.0007499123334 0 1.559012547e-11 0 0 0.006159085591 6.285088169e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 6.668763934e-09 0 0 0 0 0 1.407168091e-07 0 0 0 0 0.002186284068 0 4274314.07 0 1.469300826e-05 4290.223843 0.002555230584 0 0.032393469 9.641482836e-10 0 0 0 5.483450377e-18 0 3.353474349e-06 0 2.282266923e-10 0 2.048609149e-07 0 0 1.645907361e-17 0.0001550315086 0 0.000208799607 0 9.328217754e-07 0.0007850612675 0 0 0 5.313010822e-11 0 0 6.816744709e-10 2.430195922 1.740034851e-12 4.405815119e-22 0 2.135148169e-14 3.86012561e-09 8.00356723e-11 0 0 6.648961803 2504482.759 0 0 0 0 4.202182197e-13 0 0 4.685401782 0 0 2014.60662 0 0 0 0.006800218232 0 0 0 5.339152409e-10 0.0001796302209 0 0 0 1.580223251e-08 0.0001070637356 0 4.260878184e-41 0.981086579 2.951147941e-08 0 2165485.263 335.158211 0 31.45193955 0 0 0.0002275130328 0 1.295335399e-11 0 0 1.860167346e-08 0.757774546 0 0 5.402816183e-05 0 0 0 0 2.56201061e-10 0.0001404173007 0 0 4.528044427e-07 0 138.1623113 0 0.001796140826 7.069709364e-27 0 44256.35959 0 0 0 0 0 0 39221.83914 0 0 3.601054439e-10 0.2645062504 1056.478153 1.999478828e-16 0 4.595104437e-06 0 85073.05506 0.395626966 0 24681.38015 6837004.404 0 0 0.01804964498 0 0 127037.423 0 0.04434256196 2.330718334e-12 0 0 0 0 0 0 5.404984138e-12 0 0 0 0 0 3.126352956e-13 0 4.160155556e-15 0 0 0 0 3.467864354e-06 240762.8668 0 0 9.207063168e-06 0 0 0 0 0 0.000146807768 0 0 0 546.3459401 0 0 0 0 0 147.1960153 0 3.832392088e-20 0 2.957938444e-10 0 161.4667877 0 0 0 0 23.39575773 0 0 0 558017.0028 0 2.284721782e-18 0 0 3.069395595e-24 0 7.437430088e-08 0 0 0 770923.4206 0 0 0 0 0 0 0 0 2.104192342e-16 +0 0 0 2.912299311e-16 0 0 9.125186402e-12 0 0 0 780503.9913 6.384026523e-28 4.514419146e-08 0 0 0 7.156137994e-07 0 0 0.0006517509698 0 121.190418 0 0 0 0 0.0001101535739 0 0 0.01230083121 2.478842187e-06 2524913.28 0 0 0 0 0 0 6.513885397e-25 0 0 0.0004749580804 4.868105292e-14 0 0 3.929174397e-07 0 0 0 0 7.140697352e-08 114710.3063 3.436294802e-19 0 0 5.864522909e-13 4.558813109e-08 0 0 0 159333.6395 0 0 0 1974803.616 0 1.286010766e-12 0 0 0 0 0 0 0 0 0 2.868429063e-10 0 0 5.586090761 0.008285521747 42549.81019 89.01587094 0 0 8.721641945e-12 0 2.318382736e-14 0 2.374441616e-13 0 0 0 4.266163861e-12 0 3.709223711 1.669193604 0 1.768820131e-06 0 1.761014121e-17 1.34360725e-09 3.406338859e-09 0 0 3.486945748e-13 0 0 6.596026426e-05 1.133780327e-12 0 1.514180031e-08 0 1.543796603e-15 0 631.1738962 0 57.21024235 43384.15688 7.963406611e-11 0 0 31859.11659 0 3.769700757 9.039247596e-13 0 11570.6757 0 0 0 0 4.413123507e-08 0 0.5670413512 0 1.785957004e-11 1.115900781e-05 0 0 12668.86961 0 0.7660486802 0 0 0 0 0 0.001827400016 26697.71035 0 1.135854193e-14 0 8.179609451e-06 1.372302804e-15 0 0 1.634245208e-08 0 0 0 0 2.536451365e-08 0 1.120235027e-10 0 227.59553 0 4.956944115e-10 150.0128986 9.521098214e-13 225.4995571 0 0 0 0 0 0 0.006767443777 7.483345951e-20 0 0.001533084691 0 2.536291727e-13 0 0 3.850124927 0 0.3658047255 7.85308064e-13 0 0 5.387601273e-14 0 0 0 4916.777111 0 3.834525158e-06 0 0 0 0 0 3.972233792e-06 0 0 0 1.599954118e-16 0 0 0 0 0.01044411687 6.753251546e-09 0 1.132199166e-09 0 0 0 0 3.513289035e-08 3.177496788e-05 0.01109859813 6.790058791e-05 0 5615.829084 0 5.42290863 0 0 0 0 0 1.896233739e-20 1.300389725e-29 0 79.90467372 0 0 0 0 0 0 0.04296310761 0 6.014779456e-17 0 0 8.827750782e-08 0 0 33.56863855 1.530084223e-07 0 0 0 0 0 0 3.323541349e-13 7332.28686 0 0 0 0 0 0 0 0 0 0 5.015851182e-11 3.112019117e-12 0 0 0 0 0.003369781029 0 0 0 0 2.882904386e-10 0 3.584779747e-10 0 0 0 0 0 0 13431.43301 0 431931.5512 0 3.985909433e-20 0 3.988656964e-13 0 +0 0 0 0 0 0 0 0 4.98898473e-11 0 2.006958305e-11 7.108624786 0 0 0 0 0 0 0 1.194012281e-16 0 0 3.821576713e-05 0 0 0 0 0 9.285574581e-08 0 5.434282079e-07 0 0 0 0 0 3.715549143e-06 0 0 0 0 0 0 0 0 0 2.898011527e-08 0 0.0003533431322 0 0 493532.1129 0 0 3.987074168e-14 0 0 0 0 4.049583986e-08 0 1.336134643e-05 1.638021022e-17 0 0 81107.94679 8.00370349e-07 0 0 0 3.79656692e-06 0 0 13391.3485 0 0 0 0 0 0 0 1.380458919e-06 0 0 1.774364604e-18 0 0 7.331394129e-05 0 0 0 0 0 11.24943234 0 0.993440823 0 95162.72204 0 3.801413459e-21 0.1007365339 0 0.5806675256 1519.368856 0 0 0 0.0003732936083 0 0 0 2.487914876e-11 3.657922152e-18 0.0005358352817 0 1.06068104e-12 0 0 0 1.560600013e-12 0 577842.23 0 2.646332766e-14 0 7.660808014e-21 5.883794119e-14 0 0 0 0 587784.9587 6.199776428e-09 0 0 4.682882761e-14 151886.9391 1.883860071e-08 0 0 0.4000195669 8566.611395 1.831001049e-22 0 0.1870374954 0 6.152759019e-15 0 1.263624663e-29 0 0 2.061133e-15 2.610732693 0 5.572989462 0 0.001973924473 0 5.2021494e-08 891.9608596 2.196653406e-06 0 0 0 0.0003545161736 0 1.721816861e-07 7.567664848e-11 38315.40978 0 183.2774662 0 1893.130116 0.008975578453 0 2.208977917e-07 7.646683859e-06 0 2.43410496 0 0 9.154618374 0.06555308039 1.142715734e-05 0 8077.482543 9.785660557e-13 0 0 5.899980142e-07 0 8.265106121e-12 1.256799238e-20 0 0.0009413330757 0 0 1.106355442e-12 1.499877939e-10 0 1.826414532e-12 2.565337963e-05 0 0 877026.9043 0 0 0 0 0.0002637687942 0 0 3.300523656e-20 160208.8955 0 2.136341909e-07 0 0 0 0 0 0 0.7387856266 0 8.496124691e-24 0 0 34692.08577 0 0 0 7.43905312e-15 0 0 0 0 0 0 0 0 0 1.512139428 0 1.295056101e-05 260.7380067 0.01288855527 0 0.09807302878 0 0 0 0 1.216091294e-13 0 0.01906250101 0 0.04451151087 0 0 0 0 0 0 0 0 0 0 6.372297154e-09 0 0 2.55692909e-06 28.55005264 0 0 0 0.02784669194 4.54207126e-06 0 0 0 0 0.003300059906 0 0 0 0 20475.87055 0 0 0 910.5885502 5.721577509e-13 0 0 0 0 4.086364367e-11 0 0 0 +0 0 0 0 0.0004003114231 5.385288168e-12 0 0 0 0 5.706707532e-23 0 0 0 0 0 0 0 0 0 78.87281043 0 0 0 0 0 21.08365122 40.26661156 6.815846134e-12 0 0 0 3.570944907e-14 0 4.826043388e-05 5.249875664e-15 0 0 0 0 0 1.542302229e-18 0 0 0 0 0 1.874620165e-20 0 0 3.9401645e-15 3.018479769 0 0 0 0 0 8.718620356e-06 7.164375373e-18 0 0.008251005878 0.0002270633691 0 0 6.900410795e-10 0 0 0 0 151857.2241 630683.2921 0 0 0 0 2330.489825 0 0 1.563102852 0 0 0 0.005992327061 0 0 0 0 2.777508914e-06 4.274858115e-09 2.176638361e-08 0 0.004040297515 0.2269086602 1.549443173e-08 0 0 0.002625456284 6.751551436e-23 9.347704343e-08 5750.00968 8290.388608 0 1.744247307e-30 0 0 0 0 0.0002044871193 0.06982108313 202.7666652 0 0 0 0 0 0 0 0 0 2.225828158e-17 2.200491001e-11 1.992408149e-16 2.840290632e-12 0 0.0003043932157 1.775789598e-28 0 0 0 0 0 0 8.920493915e-05 2.903986935e-10 2.528472569e-10 0 3.997826615e-11 12558.32277 0 2.059287602 6.614503507e-27 9.299562343e-12 0.2702298272 0 0 5.215524597 0 0 2.007411161e-05 3.334476147e-06 2.491703003e-16 8.195983173e-14 0 3.344475827e-13 0 8.192079715e-22 0.00167559305 0 3.159777624e-05 2.735987152e-05 53854.07128 5199923.64 0 0 739013.4084 337.9040465 0 8.206051588e-06 0 1.796174777e-17 0.0006916369737 0 1.503674758e-11 375088.0669 0 1440.590644 0 3.963998606e-06 0 0.003511917074 0.000132270162 0 0 867441.6884 0 3.466615432e-11 3.065719039e-05 0 0 0 0 0 0 0 0 467097.4275 0 0 1.707078533e-07 0.02968388955 72.71693033 0 0 0 0 454092.741 0 0.01356863003 104253.3019 0 586627.2874 0 0.03462829704 0 0 1.646093234e-07 0.0001793966054 1.273364247e-08 0 0 0 0 0.5652805917 46778.48058 0 0 0 0 0 1.509162671e-06 2073627.104 0 0 0 0 0 26294.90997 934223.9727 0 94414.72101 0 0.005709246729 0 0 0 0 0 0.6653287641 268354.6222 0 0 0 0.001636404422 0 0 8.475190662e-08 0 1.252771378e-09 0 0 0 0 0 428008.019 0 0 860915.4582 0 0 6.468173308e-07 0 0 0 0 0 0 5.844545218e-22 0 0 1.52252149e-27 0 2.671655178e-06 0 0 0 0 1.38767584e-09 0.0004385148915 0 0 0 0 0 0 0 5.197428902e-08 0.0009162106583 0 0 0 +0 0 1.788957373e-06 0 0 0 261524.3394 0 0 9551.612849 0 313.4097406 0.08821440335 0 0 0 1.386356297e-20 0 0 0 0 3.119540251e-10 0 1.991468753e-10 0 239267.1537 0 0 0 0 0 830.2892928 0 0 0 2.42816719e-14 0 0 1545.177001 4.425947811e-08 0 2.234786685e-09 0.0007962822424 0.6862700191 2.047591454e-07 86.83427155 0 0.0005996253411 0.007071872103 0 0 2.466784959e-12 2.420226282e-14 0 0 5.093056769e-13 0 0 0 0 0 0 2.861678116e-09 0 0 0 3.692004042e-09 6.577017111e-06 0 170481.7564 3.951789648e-11 0 0 0 4.232003031e-11 1373839.201 0 0 0 0 0 0 0 6.604913119e-07 7.256733131e-08 0 0.0003556332382 0 0 2.385496027e-12 5.648500398e-15 0 0 0 8.040360836e-09 98.08793807 11755.98121 0 0.06669078159 52.27699681 0 0 0.016705349 0 0 2.691510875e-10 2.062491568e-16 0 300.4647821 0 4.897827531e-06 16095.23724 5.468862161e-11 0.02064897745 0 0.0007540830663 0 6.254308694e-12 0 0 1507.201627 0 5.051851909e-24 0 0 570117.1939 4.327900129e-20 0 1.351839929e-09 0 6.007117097 3.802721239e-11 0 0 1.23000236e-06 6.752516963e-10 1.350235916e-33 0 0 1.487225929e-07 3.592010503e-13 0 0 0 2169.609977 23.21267224 0.2008112861 0 0 0 1.106093563e-13 4064.289674 6.053086644e-08 0 4.767047654e-08 1.54396306e-10 0.1159878942 0.03146964147 0 94221.17979 402425.6576 0 4.483047438e-08 8.540919626e-13 8.39889746e-07 2.572519416e-13 0 11.58778169 0 0 0 0.0002228283376 0 0.4191085391 0 0 0.006716021985 0 0 324941.8529 2.208183681e-18 0 0 0 0 0 0 6.454829858e-11 0 0 2132.469491 0 9.719619325e-05 0 1.659882553e-05 0 0 0.9501809124 0 5808.717343 0.0007087866802 0 0 0 0 12718.07464 89.4115466 114432.1593 0 0 1.932969784e-18 129849.8151 0 201596.9557 6980.361197 2.280302821e-25 0 1.689205087e-17 0 0 0 1.001179206e-20 4.608854183e-12 0 0 0 6.729715388e-13 8.869365249e-22 3.774399951 16.26269863 0 0.02260266264 0 1.92239604e-13 0 0 0 0 18686.40909 3.808901075e-13 0 0 0 0.05686582706 0 0 0 0 0 0 0 0 0 0 0 2.05070904 8.317414744e-20 0 0 6993.950944 0 0 0 0 0 0 4.798714467e-06 0 0 1.955980402e-13 5886.832381 0 0.0001014105389 6.870480341e-23 1.058525667e-13 189.6804863 0.0003572912261 0 0 0 15935.34815 0 0 4961.0844 0 2111.868365 24837.72329 0 1.795918692e-31 0 0 0 4.332960001e-13 0 0 0 0 0 0 0 +0.004329517764 0 0 4.679524576e-05 0 5802598.189 8.089111365e-15 0 0 0 0 0 0 0 0 0 8751.047013 0 0.001881926834 7.036206335e-19 0 0 0 0 0 0 0 0 3.658877091e-17 54.1496739 0 0 0 0 0 0 0 2.669430144 0 290700.2708 5.890583871e-09 0 0 0 6.831724675 34522.19868 2047.131032 0 0 2645877.188 1.155269229e-06 4.266176653e-06 0 5.819800755e-15 0 0 0 1.837330003e-23 0 0 8.273312966e-10 0 0 1.001288149e-14 0 0 0 0.4267226746 1.02423643e-14 1.112463316e-13 0 0 0 0 0 0 0 0 0 1688.341043 0 290371.1519 0 0 329249.1617 1.480098826e-14 0.001458414354 0 0 0 0 0 0 9.100302484e-05 0 0.04052038793 0 0 0 6.481449097e-18 0 0 519116.3195 1.09103293e-08 5.472684674e-09 1.13770533e-08 0 0.0001554672927 111.0237538 0 0 1.928208487e-14 0 0.3649276394 2.94818928e-20 0 0 2.177404114e-11 0 7.949541935 0 0 0 0 0 10033.18536 0.0003925803751 7264.254513 0 0.01028800268 0 0 0 0.00212093588 1036.696027 0.0006092357242 0 0 2.180464807e-10 0 3.411828011e-11 0 1.496366074e-05 0 1.748526318e-12 0 2.3742176e-10 0 0 2.176186075e-16 8134.406687 0 0 6.467296886e-12 0 0 0 0 1.029335768e-08 0 0 1.124017686e-11 0 0.0001179580398 0 0 0 0.004989213593 0 0 0.001336753623 5.456063064e-05 0 0 0 1.396689776e-16 703977.0126 0 0 0 0.6040454661 3.940964094e-24 0 0 0 0 1.049967242 35.80244187 0 4.751459187e-11 0 0 5.459617696e-10 0 0 0.06278995196 7.468298918 124708.8363 4.4867615e-12 0.06158238873 2.316452203e-08 9.283556882e-07 1.068508254e-12 0 0 0 2.115709543e-19 1.928487036e-20 0 583.3439021 0 0 0 0 0 1.490308342e-10 0 1.651962331e-06 0 0 0 3.699636816e-16 8.735156269 2.717991483e-06 0.007501531945 0 0 5.360286627e-12 0 2.744017187e-08 0 0 0 0 0 3891.904433 0 0 488.3620512 0 0 0 2.232829254e-07 0 2.077837805e-06 0 4.902941956e-06 1.470332152e-06 0.3906362276 1.01419675 0 0.01468662077 0 353835.9042 0 0 0 3461.123195 1.252499974e-19 0 0 0 0 0 0 0 0 819937.236 0 3.264629402e-05 0.002754596831 0 5373.890459 0.1229493747 489597.9331 0 0 0 0 234846.2389 8127.300106 0 0 0 0 3372.820189 0 0 0 0 0 0 0 9.015781202e-12 0 0 0 0 0 451310.3619 +0.000162535328 0 0 0 9.233481881e-20 0 0 9.277847801e-06 0.000299423742 0 1.045547378e-13 0 0 7.493702157e-08 0 98869.98438 741386.2498 0 0 9.824712396e-09 0 0 0 0 0 0 0 0 0 0.07850821813 0 2.64004837e-12 1.856727334e-07 9.054453089e-15 0 0 0 0 4.395423595e-14 7.894750048e-14 0 4.664015156e-16 2.242772824e-19 0 0 0 0 3414.689563 0 0 237348.4315 0 0 0 0 0 0 1.19522116e-11 0 5.12238046e-09 0 0 0 0 0 162862.1964 0 0 0 28.85940876 0.0001033178475 822.4971906 0 2.172434424e-25 113.9667164 0 926.16254 0 0.7592992025 0 0 0 0 113.9776023 1.382939773e-25 0.02224953518 0 0 0 0 0 1004756.376 0 0 275311.7408 6.361612269e-08 2.010500172e-06 0 2.385815386e-11 0 742005.5505 4.463065581e-08 0 0 0 7.911666756e-15 0 830525.3212 0.001401115089 0 0 0 0 0 0 8735.65904 1.286405897e-27 0 0 1.467529298e-09 0 0 3.482126134e-05 0 4.14344487 0 1.354605001e-28 2.468747094e-19 0 1.00761775e-09 7.20473554e-23 0 0 0 0 20.79336669 0 0 8.99531751e-15 0 0 2.007792061e-08 73.55343716 2.983914469e-17 749285.7926 0.1184990733 46557.96748 9.195452533e-14 0 0 2.296936506e-17 0 2.470008324e-05 5.652267514e-07 0 6227.768481 0 4.739766486e-06 3.395353109e-13 5.936963223e-11 92027.80826 49.87862057 0 0 7.736742854e-16 0 0 3.804921145e-06 0 0 463509.3604 0.001166784751 0 0 0.0004293361128 1904107.917 0 4.809184182e-15 0 0 529.3860932 0.004615613714 19067.7584 0 3.240929307e-13 0 0 0 7.385653647e-08 0 0 1.792859845e-06 0 0 0 0.06550130576 3.197053322e-12 0 0 0 0.0005847799391 3.355676043e-11 0 2.148863641e-08 7.409566802e-12 4.748556652e-10 0.0001942119281 0 6.750304135e-07 0 0 0 1.045072152e-12 0 0 0 822.0315698 0.04708328341 0 4.465196172 0.01108269552 0 3.57571023e-18 0 0 0 1.380625335e-14 7.206540262e-12 0 1.76703498e-08 0 131167.6885 1.703161533e-11 0 0 0 1.682266826e-09 0 0.6929441386 2.666579854e-10 0 1497.230499 0 0 0 0 0 0 5.194567928 466514.0285 0 0 0 0 2.367955939e-16 0 0 0 4.69059114e-06 0 1.986911049e-10 0 0.003826813946 0 0 0 2.409792985e-27 412.7619414 0 4.443758764e-17 0 0 0 0 0 6.592371589e-07 2.617350714e-23 0 0 0 1734.610732 0 0 0 230.3793423 0 0 0 0 0 4.190819212e-12 0 0 0 0 9.847715518e-07 5.502651599e-18 0 3.408413279e-06 0 +88349.46694 0 0 0 1.648287967e-15 0 0 0 0 3.070653519 1.509237918e-07 0 0 0 1039.529562 0 0 0 13.38385659 0 8.531640824e-06 197.2359105 9.581221784e-10 0 0 0 0 0 0 1431.771327 1120679.909 0 0 0 0 0 116097.4946 0 0 274.6711805 0 0 0 0 0 0 7.316741336e-08 0 0 0 0 0 8.651376513e-25 282205.7317 2.468511743e-05 0 0 0 1.162546795e-07 0 0 0 3.108834486e-06 20495.0338 0.001003667772 0.04895889122 0 1.919662551e-12 0 321439.8246 40224.87673 2.692462827e-17 0.005660633004 0 30.04118282 1147659.95 0.01750676107 2672.047692 0 4007.029712 0 0 0 166044.3409 0 2.736785544e-14 332.410648 0 619.0393386 5537.07873 8.086707366 1.136740298e-13 0 1.9758582e-14 0 0 0.2277796487 2.007144965e-05 0 8.610299748e-14 1.636424063e-10 0 243897.8115 4.448441906e-27 6.795995786e-14 0 0 372095.0623 986722.7626 0 0 0 0 0 0 3.753832578e-18 1393.074064 0 0 0 0 0.2856026157 0 5.904715577e-10 4.149726329e-12 0 1.597170575e-06 17219.92757 2699201.127 0 3.903818475 0 3430.548299 0 0 4.08781734e-07 2.38614762e-10 0 0 0 0 0 0 0 0 0 0.0001607151747 0 0 0 1.069342221e-06 4154.990075 0 0 2.154958373e-15 1.52209087e-17 0 0 0 0 246137.7247 0 61.32569997 8.175107304e-05 0 242644.0383 221.6564619 0 0 1.366962531 0 8.327470946e-10 945533.0706 0.0002180341043 0 0 0 0.007748374186 422981.0243 0.0002898273929 0 0 2287.706655 6.365347131 0.001495244374 191.4816682 2.34737486e-08 0 1.630287438e-05 1.167468974e-07 0 0 0 0 0 9.277536025e-18 2.184799219e-06 0 9.812182821e-23 0 0 0 0 0 0 0 636.8482137 0 0 3.838038773e-13 0 1.18000613e-11 2.155115642e-08 7.873983455e-25 0.4675865794 0.0002651021091 3.877745649 0 0 2844.722981 0 0 0 0 6.09298902e-27 1.323263664e-14 1242.07337 0 0 5.247212819e-25 0 0 0 29.27616307 0 350.5867314 0 3.133224697e-11 4.049002582e-10 52.11693999 130525.2643 0 0 1.491531118 0 176936.8295 0 0.003848413199 0 0 0 6.005431543e-10 0 0 9.362942448e-23 0 4.94218928e-16 0 0.005627072315 0 0 0 0 0 0 0.003658608301 0.01373220038 3.457892795e-19 3.263679397e-05 0 6.073241546 0 0 0 0 0.0001965656741 0 2.259286176e-10 0 1.446227765e-16 0 0 0 0 0 0 742.297948 0 711.8965141 0 0 0 0 1826.718242 0 1.504907183 1.12910845e-10 0 149.7216926 8.192350008e-08 +0 0 0 0 0 0 0 0 0 0 0 0 0.0531073137 0 2.735058205e-14 0 0 9.721884342e-11 0 0 0 0 0 1.22249101e-05 0 0 0 0 0 0.01470750612 0 0 0 1.161744694e-08 0.8861900264 0 0 48.73803228 0 0 0 7.218266541e-08 2.445708641e-34 940114.2267 0 7286.1169 4.569204365e-10 0 8.650741683e-12 1.094153245e-22 2.465032032e-08 0 1.47431841 0 0 0 0 0 0 0 0 0 0 0.001779130052 0 1.940511892e-15 0 5.980159758e-13 9.194403059e-12 0 0 0.001005546987 0 827.7723885 0 0 0 1.801237542e-07 0 59.95852977 0 0.01241548869 5.07781399e-11 0 0 0 1.139345786e-06 0 2.539582434e-11 0 4.297473288e-13 3.501623751e-09 6.952570365e-10 0 9.708947952e-16 0 6.699906297e-15 0 2.749260902e-14 3.197144015e-11 4.552050479e-07 0 0 0 6.915609341e-13 569811.1335 0 7.318511143e-10 1.050688979e-19 0 0 0 1880187.946 42476.67967 1289.684054 0 0 0.000339457479 0.0001751690668 0 0 4.387884654e-11 2.946771395e-15 6.620320279e-10 1480783.713 5340135.161 0 8.180193923e-12 0 1.210195424e-06 5.12107355e-07 4122323.086 3.85161781e-15 0 0 6.390284722e-13 0.003231449619 0 0 1.259001147e-14 2.31068107e-08 0 0 1.811233329 0 0 3.708121023e-07 0.0001285199505 2.047705319e-06 71317.4647 1.20689686e-06 1.782378886e-08 3.309991378e-14 6.432789851e-22 1.312041353e-17 4.318710123e-06 0 2.215118295 0 1111550.55 0 4.921320111e-12 23931.57113 0 0.1280444948 1113.362956 0.0001453036679 46182.6149 0 0 0 1266252.253 0 3.260362328e-13 599.2338473 7.385430176e-08 11811.3809 0.0009296112314 0 12975.54876 0 1.49015172e-06 222520.8602 0 2.36621866e-31 8.063146246e-06 0 54.30480722 0 0 1882455.162 2501616.3 0 9.741625274e-07 0 25707.25244 0 0 0 0 20.41336263 0 8.518992283e-22 5.031197362 0 0 0 0 0 0 0 0 0 0 30.33110025 0 2172059.401 0 0 9.909081391e-16 0.0006093525842 0 3.381031683e-15 0 0 9.028520504e-12 2.345904008e-05 488.4689284 182152.1211 0 55.41357218 3184504.346 1.020184926e-07 0 0 0 0 0 0 0 1.807531636e-26 5.099127071e-22 0 0 0 6.811104171e-07 0.0001725789859 0 4.380536453 7.457478836e-06 966675.6032 7.443976656e-09 0.0001273259892 0 0 0.09612884902 0.0002280032016 0.2607724507 0 0 0.7304545742 9.308486296e-15 0 0 0 0 5.580844779e-09 0 0 0 3.008419381e-14 460512.2757 0 0 0.1167067584 0 0 174315.6552 0 0 0 1.054990497e-17 0 0 0 0 0 0 0 9.083093129e-10 0 0 0 0 0 0 0 0 0 166848.6152 +0 7.645300552e-29 0 0 0 0 0 0 7.924663247e-33 0 0 0 0 0 1.140818626e-09 1.332545034e-11 0 0 1592550.148 0 0 0 0 0 0 0.03319864704 20.79812483 0 0 0 0.0002800332062 0 0 0 0 0 4.429709648e-06 0 0 0 0 0 1118293.029 0 0 4931.191787 0 0 0 0 0 0 151.0352308 0 0 0 0 0 5097.171224 0 234566.8716 2968.964754 10.38250597 0 0 0 0 4.325094828e-21 0 0 0 0 6.279445635e-05 0 2.106349712 0 0 12.11823635 0 2.559847809e-10 0 2.592143158e-08 0 0 0.003490032504 0.002847328972 0 0 0 5.777885279e-05 7047.666617 0 0 0 5.889013521e-09 0.01070239923 0 0 2.097919285e-05 0 0 0 4.35709057 2.878204713e-10 1.580609947e-08 1.152674523e-06 0 5.683008736e-09 0 0 922.2130616 0.0249885055 0 0 0 0 0.895415771 0 590.3095591 5.528073345e-11 0 23924.23593 0 2.796145947e-09 0 0 0 7.368290408e-16 0 273.7710514 2.023743834e-07 0 0 0 0 0.07837103657 0 0 3.982547545e-21 0 0 5.209890867e-07 1.51740042e-09 1.342555229e-14 517818.7409 0 135.4369814 0 1501742.932 0 0 0 321.9020179 4316862.018 0.0588049137 0.9028891761 0 0 4.183172445 1.51478814e-22 4.198067389e-19 0 0 0 0 0 3283.870556 0 0 1.569751511e-24 7.827388057 0 0.0103036148 0 8.634446196e-12 0.0001671491106 0 1.076502082e-11 125674.3545 14643.7348 0 0 0 5.062918044e-13 4.133359383e-22 0 0 0 0 1078151.141 0 4.846119059e-14 0 19.08268246 0 7.878724665e-10 277602.3839 0 3.581777172e-16 0 0 7.1143098e-24 2.76183237e-09 0 1.037883456e-19 0 0 0 1.267416227e-09 0.0001025755635 0 0 3.355532907e-15 5.585512843e-11 2.695541987e-13 0 0 0 414399.7255 0 0 5.759322617e-13 0 0 0 0 0 1.062280809e-10 30.98784558 0 0 0.003718592021 27223.42648 8.65500057e-09 0 0 0 50.44918322 0.02943303302 0 0 0 0 32.07447164 0.03630416231 13904.08756 1.352095261e-08 0 0 1.260254344e-08 1.482620304e-09 1.504206345e-08 0 8.079805947e-10 0 0 0 0 0 0 0 0 0 0 30749.21749 0 0 2.020066384e-13 0 0 0 0 0.0005650176755 0 0 0 0 0 0 1.435573633e-14 488.934936 6.557458729e-15 1.360235281e-13 0 0 0 0 0 0.0099403268 0 0 0 0 0 0 0 1.118517958e-05 1.503661356e-16 0 0 +0 0 1.035733241e-12 0 0 134143.4429 0 0 0 0 0 1.53964725e-15 0 1.015879073e-12 0 0 0 0 0 0 0 0 0 6.304147448e-21 24708.7421 0 1416882.526 0 0 0 0 3.658565965e-09 0 0.2091907462 2.745015872 0 0 0 0 9.449157802e-09 0 0 0 0 0 0 224684.3269 0.1643724261 0 0 0 6.938444452e-11 0 0 6.836144509e-20 0 0 0 0 1.695611382e-09 0.005984629867 0.003167593164 5.165221566e-07 0 0 0 1.236703777e-16 0 0 0 0 0.0005532265825 0 0 59.64322969 1.196270141e-23 0 0 0 1.043676801e-14 0 1427116.8 0 0 0 0 0 0 0 0 0 7.224935581e-05 0 1.79090789e-05 366.8864412 0.0003130050381 0 0 0 1023536.452 0 2.450382824e-13 0 0 0 1.274623846e-17 0 4.124958659e-14 6.871552958e-18 0 3.468038886e-11 0 17892.1528 0.0001475025245 68340.05973 0.0008945875242 0 8.498465996e-06 7.340582987e-12 0 0 0 0 0 1.489633777e-13 0 0.003546882951 0 0 2.302497127e-13 0.004566087793 0 0 0 8.699318514e-22 2.290051485e-10 0 0 7.452844111e-21 2.711287948e-07 0 799983.3079 0 0 0 0 0 0 4.531841079e-09 0 0.002009848274 4.057906125e-08 0 0 0 0 0 0 0 0 1.383640651e-06 0 0 453865.6678 8.490047763e-11 0 0 0 0 1.123561229e-16 0 0 0 6.941477099e-17 6.820952897e-13 30944.94824 119.3750195 4.32367876e-17 1531.673634 11895.02464 0 0 861567.5609 1.03545681e-13 5.196533826e-09 0.4711137622 2.943536102e-12 0 0 9.623012799e-13 1.964164376e-10 0 1073.933504 0 92862.0155 14.56539899 5288.909185 1.173287964 0 8.761537991e-11 0 0 0 0.1835167021 4.116589026e-20 0.002349534484 0.006184387143 0 0 0 9.135030464e-12 0 0 0 0 0 0 1.784020451e-11 18.954038 0 0 0 6.077223137e-16 7.373870913e-09 9.475991207e-08 619746.5047 14.87092979 0 0 0 0 0 1.767673737e-12 4.367424729e-16 0 0.9957693985 0 0 0 0 1.707147575e-18 281.5379778 0 3.721986349e-05 5.976771521e-09 0 0 0 0 0 0 6.154617595e-12 0 2739262.366 0 0 0 0.02716978566 0 0 0 943724.1977 1.423477448e-11 0 0 0 0.03446549167 0 0 0 0 0 0 0 46279.07446 0 23675.20275 2.695978364e-19 0 0 1.836115397e-18 0 0 0 1.505727851e-09 6.981566555e-06 1.491850779e-10 0 0 14.89059113 461626.6925 1.708972742e-11 0 0 0 0 8.360292959e-06 5.038030666e-08 0.005085858689 1518297.179 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.298844143e-06 0 0 0 0 0 101899.1578 0 0 6.058095967e-06 0 0 0 0 0 3.351079979e-11 0 0 40995.97201 0 5.714116867 38064.8214 0 0 0 0 0 1.746029291e-09 6686.99137 0 204319.9516 0 0 0 0 1.994164508e-13 0 0 2.726110304e-07 0 0 8.352436603 0 0 0 3.452346588e-16 0 0 4.426838454e-11 0 0 0 8.459455483e-06 0 0 0 0.003819714326 8.806448233e-12 0 0 6.688781419e-12 0 0 3.509513856 0 1618.873041 0 0 1.866263438e-11 0 0 0 0 0 0 0.003522845621 0 0 0.006667334104 3.182625762e-13 0 0 0.009556447996 0 5.2342594e-09 3525.114423 0 0.00997625595 0 24.52622236 4.702392479e-11 0 0 9.057185259e-10 0 0 0.001197647503 1.104319311e-05 0 3.378974953e-17 0.03153539168 0 2.578853213e-08 0 0 661839.3992 22943.42474 0 0 9.568909889e-09 0.000131562976 6.625305819e-12 0 2.333016847e-13 0 0 314.1738174 0 0 0 2.423230005e-09 22.0828354 0.2787588399 1.772460432e-21 0 0.4790809056 0 0 6.292833009 0 7.74675928e-09 0 0 0.0001668570535 968.9629593 6.151902839e-07 0 0 181.1202943 3.526677612e-12 384567.3194 336.5248422 1843201.558 0 0 0 0 0.0002149048887 0 0 0 0 0 4.627197615 0 0 61301.60374 0 9.280513139 0 5.623517582e-11 0 0 0 0 5.306796288e-07 0 404121.2974 0 6.196974609e-16 0 0 3.233490478e-09 5.473448113e-17 2.268485704e-05 0 0 0 9.288265145 917890.7372 0 0.05522563929 4.263604994e-09 0 0 8.572402727e-07 0 99.03546384 21.26956797 0 492.591932 514.4294546 0 0.002374293403 0 0 0 179.8571586 0 0 264513.9188 0 6.943830027e-08 0 0 0 0.00763890046 2.379393764 0.001692526443 0 0 238478.9573 131791.1738 0 0.006959311506 0 0.0002100506541 0 98131.66425 7.289473828e-08 7.304763356e-10 0 6.031408929e-17 0 6.627771382e-06 0 0 7.114177464e-22 0 0 0 0 0 0 0 147412.8402 0 0.01810235258 0 0 0 0 0 0 0 1676.060941 0 1793.719333 196567.4054 8.923041925e-13 0 0 0 862090.7789 77170.29751 1.124581098 0 7.926474771e-27 3041.164911 203.8634771 0 0 0 0 1.046401656e-12 0 6.610005456e-15 0 133724.6775 1.697411226e-10 0 0 0 0 0 0 0 0 0 0.04252965043 0 0 0 +0 0 0 0 0 0 101.0453206 0 7.365153206e-21 0 0 1.237561587 0 0 0 0 5.01836177e-09 0 0 0 1.52381301e-24 0 0 7.442256661e-16 0 0 0 0 0 6.10464302 0 12.3513421 2.374519719e-08 0 2.999112271e-11 0 0 0 1.79011389e-06 0 0 0 0 0 1.908988414e-06 0 0 0 0 2.6106119e-08 0 0 0 0.5827723533 0.09914493371 0 1.240951816e-13 0 8.865894836e-05 0 0 0 0 0 0 0 0.1735088412 0.09200885528 3.302542966e-09 0 0 0 0 0 0 0 0 3.753804966e-06 763220.337 0 0 931746.144 0 0 0 774914.4411 3.883724398e-13 2359263.121 5.135999613e-13 1.682388498e-05 0 0 577020.4215 6.981493045e-06 546709.0607 0 0 26.19917538 0 6.826367168e-07 135544.9067 0.1969130848 1.085075134e-29 4.958548008e-16 0.0001250894751 0.001077165476 0.001406273408 0 0 0 0 0 0.04165947866 0 1136027.434 7.874086305e-11 306786.1065 0 0 50.86265197 0 0 0 1.531382592e-12 2.594666634e-11 0 1.866645766e-08 0 8.568889493e-13 1425032.814 22.74177658 561.3514697 0 0 0 0 55.97593453 16.83673251 0 9284.648037 0 358649.3552 8.797509312e-09 3.97992959e-12 0.008495419463 550.2825969 0 0 0 3.092335048e-21 9.911568457e-13 0 1.361229327e-28 0 0 0 0 0 0 0.08204820212 0 1827650.046 0 325967.4945 4346.35841 0.0002327145387 0 4.277259343e-22 0 0 0 0 7930.418456 130601.8892 0.0009019555566 15579.88867 0 0 0.7130068077 5.149117467e-11 0 0.04647881172 0 10885.12811 2604.468754 0 4.037148452e-12 25.04432851 0 89.14544976 0 1.337108319e-08 1.917935299e-07 0 0 3.899923372e-07 0.001056781345 4.31536022e-07 0 1.667158286e-33 0 0 0 3.17197422e-23 0 1240.559977 0 0 1.656964737e-06 0 4.599909056e-09 1979.218627 0 0 0 0.18742529 7.759033805e-12 0 0 0 0 0 0 0 9.584982986e-18 0 1.183403204e-26 0 0 0 0 0 0 0 0 0 1.559528619e-10 1.351817918e-13 3.104176028e-09 0 0.01818795382 0 0 0 2.529050541e-17 0 1159720.082 0 0 0 0.002047201974 0 0 0 2.881158715e-13 0 0 0 0 0 0 2.064276119 207277.4828 353.2663938 0 0 0 0 0 0 0 0 0 0 0 0 3.401430018e-15 0 0 682938.9596 3.415690901 0 0 0 0 0 0 0 0 6.504180079e-14 17.5950435 0 0 0 0 1.976732469e-24 0 0 0 0 +0 0 0 0 0 9.592672541e-25 0 0 2.996681006e-25 0 0 0 0 0 1.714197859e-11 0 0 0 0 0 11.81763026 0 5.347224796e-34 2.035293834e-15 0 0 0 0 0 1457.511878 0 0 0.001516312388 0 0 0 0 2.213869309e-09 0 0 0.0001095446343 0 0 0 0 0 0 0 0 2.185886184e-07 1.67403e-17 0 9.718207144e-05 73.09933668 0 0.0003041378072 0 0 0 0 0.01968307144 0 0 89.45746211 0 4.202705885e-07 2550.205459 0 1.686796251e-26 0 0 0 156669.9302 0.4774777417 7.41280269e-27 0 9.100612961e-12 0 0 0 199813.4035 81121.389 0 990973.7092 0 140979.617 131.8563804 0 0 0 0 25154.33985 0 0 0 0 0 0 2.445620985e-09 0 0 9.442231418e-11 0 500025.2359 0 0 3.259472615e-06 4.289384836e-10 0.004542664696 1.337530076e-08 2.407936292e-13 11370.35795 0 0 9.510246366e-15 0 0 1.371258886e-12 2.50663881e-13 4.390686234e-05 0 120.5795787 3.656155646e-08 0 0 0 0 7.625829274e-15 0 17333.62507 0 0.4434815842 2.784855334e-19 3.73020374e-18 0.02260154078 0 1.05283624e-12 0 1.72187161e-13 0 0 0.07754471232 4.861928624e-19 6.203551464e-15 0 0.0131147141 0 0 1.446048558e-09 1.566275613e-11 0 3.189653465e-20 0 8.612841897e-28 0 2.966367541e-08 37.76475737 0 2.532572274e-15 0 0 0 2.322759415e-24 0 0 1851.439288 0 0 0.03724246513 0.05875686445 9.675467118e-07 6.315147989e-09 0.1245086073 0 0 0 0 3.893646909e-13 0 0 4.571306869e-07 0.05486150413 0 1.658793253e-12 0.2043575819 0 0 23888.06556 0 0 0.006519372205 0 0 7.94279517e-17 0 5.132933598e-25 0 0 0.4621103269 0 0 0 0 0 0 5.715414994e-11 0.0009055953369 100.5039435 633.0213044 4.153976298e-09 0 0.7261230596 0 7.616244117e-12 0 0 0 0 138800.4638 21772.39047 0 481.1159486 0 4.107562141e-08 7.025505323e-10 0 0 0 0 0 0 4.777593888e-06 1.324633637e-15 0 0 6.043693616e-11 0 0 0 4.169694327e-14 0 8.036384847e-05 0 0 0 4.84553599e-08 0 1.652651569e-18 0 0 0 6.916568373e-08 9.928878884e-14 0 0.0001064039717 0 0 0 0 0 0 0 0.003722780995 0 0 0 0 0 0 0 0 8.059190064e-12 0 0 0 0 5.175719799 0 0 0 30.34534062 0.00226972472 0 3.40793089e-09 0 0 0 0 0 0 0 1.243881921e-06 0 0 0 0 1265065.511 2.624815628e-23 0 1.161706379e-16 +0 7.955512522e-09 2.962817811e-20 3.496584173e-29 0 0 0 0 0 0 1.341048598e-16 0 9.576785494e-11 0 0 0 0 0 0 1.447266702e-12 0 0 3.911713948e-14 0 0 0 0 0 0 0 0 1.524653154e-07 75.27434456 0 1.828623947e-14 0 10272.99097 0 0 3.670958856e-10 7.515749302e-08 0 0 0 0 4251.898067 0 0 0 0 0.1043088252 0.0007480083814 0 1903.693373 0 7.698346049e-16 1.504531959e-17 0 0 0 27.37973433 6386.481098 6.916329231 0 2.855266037e-08 0 3.96425001e-07 0 0.0005877865946 2.486956555e-17 0 3.192966398e-17 0 0 0 0.001256820963 0 0 2.451198179e-08 3.890580906e-05 317837.3577 0 3.434943139e-13 0.0006966739759 0 0 0 0.009107406417 6.728304851e-17 0 0 0 0 2.757925355e-08 1.016465911e-17 0 18959.95556 6.911850723e-06 1.165207545 0.5210211741 0 0 0 0 1.059427704e-05 1.556859698e-08 1.912399086e-11 0 0.002727658993 0 2890.212929 0 0 0 0 349.6159749 0 0 0 0 0 6.055304309e-09 1609.108379 0.3594867626 4.92811699e-11 204.7587799 0 3.778235463e-10 0.046552619 0 0 0 0 3.204487257e-11 0 0 5805012.886 0.003548823042 0 0 0 2.075903019e-05 0.04860446859 0 0.5258095348 6.908465945e-15 0 0 9.494220827e-09 7.000012923e-07 0 3.23627296e-21 0 0 0.2141119452 0 1.218555909e-08 0 0 0 0 0 0 0 0 0 1.64792469e-12 0 228693.39 59091.01428 1.259762884e-12 6.328709467e-11 0 0.3871513086 0 436.4294917 0.002524129969 0 0 0 0 4.249772132 0 3.176161579 6.602737772e-13 0 0 0 3.152650924e-05 20794.19765 1.259484781e-19 3.347377254e-18 0.008993725069 0.03805836595 1.588256571e-09 0 1.964900468e-09 28629.81887 1.054176888e-10 1.031823823 0 8.549015189e-06 0 3.021440154e-15 0 4.496818618e-12 1191257.599 9.496946456e-05 0 0 632691.3027 0 584671.7259 0 0 0 0 0 0 647612.6467 0.00390984613 0 0 0 0 0 39991.84254 0 0 1.591903184e-07 0 0 0 0 0 0 51121.58153 0 0 0 1695.336357 0 2.730634233 0 0.002098286457 0 53.01233863 0.0002522212192 0 0 1.823457407e-06 0 0.06996000613 0 0 0 0.0001473309028 0 0 2.967869527e-21 0 0 0 55.44244899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.076989699e-18 0 6.020123651e-23 0 0 0 0 0 0 0 0 0 0 0 196331.0546 0 588.7006797 4.993280234e-13 0 0 0 1.610427064 +0 0 6.653390119e-13 0 0 2.575720092e-11 0 0 1286781.446 429710.9323 0.002681682905 0 0 0.01205848712 4884.412309 0 10072.13986 0 0 1.474116755e-08 0 0 53.58624958 0 0 0 0.0008119757425 18004.61153 0 0 0 6.624889966e-12 0 0 1.599946671 0 0 2.640752953e-09 0 0 0 0 0 0 0 1.03989708e-06 1.212180954e-12 0 4.705492848e-11 0 0 5657.830016 2.751511069e-08 1.173593906e-08 0 0 0 0 3.893277103e-10 0 5.099975203e-17 0 9.296911332e-19 0 0 0 1.629208066e-10 3647.08652 1.834492377e-14 227.1663607 0.002529962732 0 0 0 0 1.286589308e-33 1.403700082e-13 2.330024319e-12 5.752815711e-05 0 1096452.136 0 0 0 0 202.0390193 0 7.133506515e-14 2822731.001 0.0002253548723 0.0003250838231 2374.888746 2.99055091e-07 0.004357006414 0.000329352545 305037.8949 0 0 0 0 0.3001726427 0.05427722125 0 8.879537346e-08 0 303330.8976 0 0.3763081747 0 1.491252576e-10 0 0 2.174575014e-06 2.964273219e-12 578.0562629 0 0 1.753750168e-22 0 6.121681176e-11 0 0 0 2.654691421e-20 0 0 221161.1488 0 59734.34082 0 9663.059489 0 0 0 1323986.248 1.700016816e-05 1.920385539e-15 251709.568 0 0 5.172681163e-41 6.079720257e-08 0.0005890001828 0 102589.569 1.433572186e-09 0 0 1.488820575e-10 0 0 0 26.31139251 0 6.410484698e-22 45607.22619 1.190339484e-06 0.01534818569 0 0.01616047471 1.616819298e-16 0 340.096103 5.718217073e-22 0 0 0 0 0 0 0 0 392.8908248 0 5.672923722e-06 0 0 834378.7364 0 0 0.004693565024 7.439460773e-09 0 4.377288714e-16 0 0 7.090225941e-09 0.003461515171 0 894826.7992 0 0.0007448090281 0 2.697584515e-07 10507.56195 4.819628953 8.35263416e-15 0 1412.215814 97.94417531 0.02069553242 9.50968057 2.588043537e-17 8.65983928e-12 0.2813616169 0 0 0 0.01086947889 9.910499925 13.47410931 11.79340528 0.0007279903565 7.363008472e-05 0 0.002637018141 0.1012588579 9.101245403e-05 0 0 5.308736732e-08 0 0 0.2048931978 2.889313669e-09 0 0 0 0 0 0 0 0 0 4340996.092 0 0 0 0 0 1.771483298e-06 0 3.432171106 0 4627.388161 12972.6931 0 7.53419054e-17 0 134045.3835 0 36.18290695 0 7.812041493e-07 0 0 0.005975601644 0 0 0 2.655136146e-05 0 285430.1995 0 0 3.332063616e-13 0 0 843.6534723 0 0 13.72391966 0 0 0 0 30097.17241 0 3.488658364e-08 22.73467388 0 0.04121480579 0 0 2.830327516e-10 0 1.337054514e-11 0 0 0 5.884227908e-06 0 0 0 0 0 0 0 0.0744769716 0 +0 827247.3202 0 0 6.430606034 7.21411751e-11 1532426.202 223464.2028 2.375077217e-06 0 2.340790258e-13 0 0 7.382128532e-09 0 0 0 1.580869569e-06 0 0 0 8662.151126 1.778887387e-05 0 0 4.157002266e-12 3.121558039e-13 9.866193355e-15 0 0 0 0 0 12.91695308 0 7.912678547e-26 0 0 0 0 8.203793028e-09 0 0 0 0 0 2.184092593e-23 0.0006984713024 3.057660874e-14 0 0 0 0 0 0 0 5.765963716e-09 0 0 0 0 0 0 0 6.632749211e-13 0 0.04218963529 3.581099778 0.0004678837801 0 0 14.75500852 0 0 6.471362663e-09 0 0 6.633949014e-10 0 4.481712024 0 63456.00316 0 0 0 2.29844192e-15 0.003207183713 0 1.011449895e-22 0 0 0 102068.1979 0 0 0 0 0.0001111127808 207478.8513 0 5.542721971 0 1.504564579 0 0 0 5.232768146 0 0.9894498255 7.093408981e-12 10.13531932 0 114.4075019 0 0 0 0 0 0.0001788078602 0 7.146352425e-16 0 120.4144413 0 5.624628261 0.0002052586534 90.80424253 0.02561663155 6.189175457e-08 0 12234.45696 1.364581021e-09 0 1.792004172e-15 0 275018.2081 2.477338615e-06 0 0 0.02804822249 0.004486267335 3.881319651e-09 0 0 0 8.973006177e-08 5.512412101e-13 7.517911874e-07 0 1.726177972e-06 1.371596823e-08 462857.8348 0 0 0 0 0 4.227465133e-10 34061.63207 0.004908390777 1.164973999e-09 12762.28725 0 0 0 0 7.021749936e-19 225.8525225 4.269005142e-08 2.801905526e-05 1.436068456e-08 0 0 0 0 0 1332.928583 2642463.574 1.655625159e-15 0 0.01667657163 0 0 7.33445387e-10 0 857.7367484 37373.0567 0 0 0 0.06447786565 0 101.3560905 4.267343955e-17 2.026908265e-07 0 8.336864443e-07 0 1.988191834e-09 1.228390894e-10 0 4.31459105e-09 0 85.63700818 0 0 368897.3203 0 0 0 0 0 0 6.636994485e-10 0 5.052281716e-07 0 122059.8052 0 0 0 0 0 1.009567402e-11 9766.936217 0 0 0 0 0 0 1.694269356e-08 1.042057524e-22 0 0 14250.92849 0 0 2086.776606 5.593748443e-11 0 0 0 1.378336074e-14 2.406237668e-23 149523.4912 0 1.937811269e-13 0 0 0 0.05422654447 0 0 1.02030121e-09 0 0 0 0 0 0 1.255827008e-17 376296.502 0 0 0 0 0 0 0 1.679071134e-13 9.582560159e-07 0 0 0.1433438738 4.640406829e-09 0 4.856523363e-06 0 0 8.914911559 0 0 0 0.05637503238 0 0 0 0 0 0 4.008883624e-08 4.37756164e-07 0 4.428777346e-05 320635.5396 0 5.607276746e-07 0 18968.91233 +0 0.000177985768 20.92897964 0 0 0 0.05554857456 0 0 2.658826455e-07 0 3264.516998 0 0 4.748736889e-21 0 0 0 0 0 0 0 0 0 0.0007125273507 0 4.625541327e-08 0 558.2082358 0 0 0 0 5.191934246 314762.6012 6.034020505e-10 36343.89936 0 0 17218.29145 0 0 0 0 3.357183436e-13 0 0 0 0 0 0 0 0 0 0 1.65605964 53.85078714 0.0004932761337 2.14582266e-05 0.6321893574 1.803121994e-06 28.32408648 0 0 0 0 0 0 0.001160872059 0.006641158446 723273.806 1.81024634e-06 0 0 0 0.008101070581 0 1.510029581e-21 1159.229677 0 0 4.304523028e-11 0 0 0 320128.396 0 6.156537252e-17 1.039961675e-16 13.96207367 1.530140915e-17 3.044771193e-08 6.317546152e-10 23306.26132 2.776245895e-05 0 0.0004966945545 45796.97932 0 0 0 6.868779604e-09 2117.593293 3.254608414e-07 3.347297868e-10 6.195166982e-19 4.350449469e-17 0 0 0 0 0 1.164676488e-19 1.293329464e-08 0 0 1.430781206e-10 0 4.062710474e-13 1.346984865e-06 6.119669573e-11 0 189.496337 0 3.147070564e-12 18740.9502 0 0 2.493045745e-12 0 0 0 0 0 0 0 6.756247953e-28 0 453347.3517 0 7205.422422 0 0 5.854347825e-14 0 4.89922913e-08 3.510351084e-17 5.269104197e-09 37100.29635 0 8.957320825e-05 0 0.06979265493 1792944.008 0 1.05822911e-07 6.122369068e-12 7.477251369e-17 7.681832187e-13 0 5.693039292e-18 43079.87311 0.2855104475 0.0262497275 0 0 0.129045478 0 7.603884522e-19 0 0 0 9.21898641e-10 2.275141802e-08 6.28067167e-11 0 0.06193962976 0 0 2.052754913 7.944250467e-07 0.0009758437433 0 1.526179282e-05 0 8.019425473e-10 0 0.5753699991 3.445246626e-11 5.170237151e-07 3.371061581e-14 0.0006589003729 7.369651815e-09 0 0 2.687043752e-19 0 0 26539.56403 0 3.967214661e-20 238035.1726 0.00665338929 0 0 0 0 17228.23663 193.9776092 0.4166404336 0 0 0 0 0 0 0 0 6.943964209e-12 0 0 0 0 0 0 0 0 13.84392705 333504.9639 0 0 0 1.605305559e-05 0 0 0 172239.0279 1646022.12 0 0 88977.32496 0 0 0 0 0 0 0 0 5.249155106e-10 0 0 0 0 0 0 0 0 3.050413437e-11 2875.658927 0 0.1786740895 0 0 0.001242602168 0 0 2.796133128e-19 0 6.811356691e-13 0 0 0 0 0 4.939630439e-26 8.593127709e-09 0 9.07496147e-12 0 0 0 0 0 0 0 0 0 0 2.598643057e-11 0 140016.4693 0 0 0.001180709249 0 0.704068612 0 0 2.213110648e-13 +0 1.663842767e-07 0 0 0 0 0 0 0 0 0 0 0 155731.7922 0.2465780482 0 0 0 0 0 0 0.006635837834 0 7.449963857e-20 0 178397.4169 0 0 0 0 0 0 0 398271.8692 0 0 0 0 0 0 0.07969060327 6.004597348e-06 0 0 0 0.1584719303 0 0 0 0 146.5308743 0 0 3.65978471e-06 0 6.143600909e-28 2384319.618 0 0 7755.369131 0 0 0.0008685311726 0.001401759039 0 0 0 0 838.6606729 4.07021295e-08 1.785516075e-14 0 47913.43625 0 3.604314792e-05 0.0003594638639 6.981046333 339.005662 74740.97338 0 7.173395428e-14 0 0 0 2.513586339e-05 0 89.94823135 2.56564231e-13 2.567884881e-08 0 2.736780814e-10 1.335123448e-17 0 0 1.394451167e-15 0 0 0 1.802926119e-13 0 331.8998749 0 0 17121.23799 3.343280628e-05 0 0 0.1896079204 3.320485858e-24 0 37.62719584 1.922986442e-07 8.138525268e-06 0.8984800113 0 0 121395.5698 0.0003180381351 0 0 0 1.160066128e-08 0 6726.522983 2.159809668e-24 4.423559182e-10 0 3.511123029e-10 0 1.908426272e-26 0 2.335720191e-11 2.705418486e-07 0 1.358544608e-06 2.449564242e-14 1.09682793e-07 0 0 0 0 0.1793654315 4.694797334e-11 9.736356165e-15 8.20600906e-14 1.191048285e-19 21254.53821 0 0 0 0.0004867827858 9.114403636e-11 455670.3217 0 28.1314795 4.252995653e-16 3.897863886 0 0 2.637626569e-05 5.486063956 3.874015789e-08 0.01635092944 8.901941293e-08 1.936251909e-05 0 0 0 0 1863.646326 0 5177.323002 0 0 0 5.10974224e-11 0 4.394609461e-37 0 5.963005663e-15 0 4.735065358e-28 6.683906493e-10 9.185553674e-08 0 1915191.347 0 0 2.412794121e-17 0 384970.6481 0 0 0 0 0 0.891850745 1856588.206 3.944669431e-12 0.9248115761 0 0.002726100004 364.1966746 185294.4672 0 87.00711815 372159.5712 84160.39463 0 83944.04191 0 0 0 42427.71949 2.319769884e-09 0 0 0 0.4522275615 0 0.6546748458 0 0 0 0.0001477028625 7.337925339e-20 0 0 0 0 0 0 554490.1541 0 0.00294391853 0 0 0.5073487984 0 0 0 0 0 0 0 0 0 0 1.688162183e-20 0 0 0 0 1.260964791e-19 0 0 0 0 0 1.080886095e-07 0 20380.78656 0 1.844962655e-11 0.004618446378 0 0 0 0 0 0 0 0 546360.5028 0 0 0 0 0.1917808607 0.05010692466 121734.058 0 0 0 0.08482426237 0 0 5.624880934e-16 0 0 0 3.996623802e-07 0 0 0 0 0 0 0.0003818383861 0 +0 3.655112244e-17 0 0.02447199303 0 0 0.0203981713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.541841022e-06 0 0 0 3.211754239e-10 0 3.579243897e-18 0.942713824 0 0 0 0 0 0 0 0 0 0 0 0 0 1.548458804e-18 0 0 5.017839793e-16 0 3.028546792e-09 0 7.864113994e-19 0 0 0 3.974047315e-15 8.352880548e-06 0 0 0 0 0 0 0 0 0.0006618713982 0 0 0 2.990648881e-11 0.0007510171243 2.489991741e-07 0 0 0 1.61171886e-05 5.833859464e-15 2.256679703e-06 0 0 0 0 1.746112353e-08 0 0 1.089756359e-12 0.0001466035617 4.679279541e-16 70662.03637 1.825192552e-09 0 2.292928736e-11 0 48141.27068 0 9.016771899e-05 0 0 0 894805.6814 1.075013233 0 1115149.852 0 3.966000032e-06 0.002160980509 2.881335687e-05 0 0 135.3821843 3.828492227e-23 3.253510378e-15 77873.45388 0 4.118551107e-21 0 0 0 2.015551203e-16 605231.0764 4.879885045e-14 262.2625549 0 8.662914581e-17 3.991826818e-18 0.0009275343533 1091643.374 0 0.003081046792 0 1.390647024e-10 9318.174994 0.0005918270933 0 0 0 0 0 8.173323994e-17 0 4842.923091 0 0 0.001819141879 0 0 0 1.111940103e-12 0 0 0.0007469542886 0 0.0002377023426 3.909291233e-05 1.01726989e-07 0.01582648974 4235978.559 0 40.0898202 0 0 0 0.001512396304 1087.339217 0 0 0 209113.9019 0.07901631533 5.913171936e-09 86.53797402 0.0006700385257 0 0 9.631771421e-07 4.47791515e-17 0 4.732667313 0 210958.0116 0 0 9.50117249 5.367683486e-07 1.14539943e-09 9.516876135e-05 2.893230466e-09 0 0 0.5228605121 0.001573802011 2.752001332e-09 0 0 0 8.251675036 1.315926098e-07 0.01855377557 9.964331975e-06 0 0.001142249035 0 0 0 0 5.285158439e-11 0 0.3577358813 1.3287312e-08 3.237826599e-05 0 0 1.406014865e-06 4.078565072e-06 8.418800439e-16 0 0 1.374055172e-10 0 0 1.685189338e-09 1.18523006e-10 0 0 21310.81619 3.899725314e-26 2.109595448e-07 0 1.116418103e-07 1.185137863e-13 0 0 2.161353113e-07 0 0 818031.8664 0 1287.076722 0 0 0 0 0 0.005607660905 0.04270683228 5.225127879e-16 0 0 0 0 0 0 0 0 0 0 0 0 761755.9798 0 0 0.1527074803 0 0 0 0 1321345.464 0 0 0 3.000240755e-07 2.518611019e-19 0 1.481001779e-10 0 4.071943343e-10 0 0 5.954715441e-22 4.652795908e-07 0 0 2.018205581e-19 0 0 2008.44807 2.527640486e-09 0 0 0 13.21265033 0 0 0 0 0 0.2752669265 0 1.547970689e-11 0 0 3.217854016e-07 +1.832193509e-05 0 0 0 0 1.173380276e-11 0 0 0 0 0 0 0 5.583162698e-09 0 0 0 0 0 0 0 0 0 0.2855303083 0 0 16624.90063 0 0 893.3977309 0 0 1.996692784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009227260181 0 0 0 9.398532046e-14 0 3.557357177e-08 0 0 0 0 20.07826097 0 0 0 0 0 72.09151185 0 1.890595494e-12 0 0 0 0 0 275.6228847 0 0.0003656632916 43978.26427 0 0 0 3.514536524e-12 2.982219986e-10 1.572986213 0 5.815329492e-12 20273.27259 0.2961191189 0 3.053366563e-13 40.08908702 0 0 0 3.375398911e-08 3.661141123e-08 0.000505092939 0 0 0.0001148135493 0.001123842456 0 0 0 0 0 0 0 243020.1892 0 0 0 0.528693915 0.2892687002 0.0007643131733 1.196249492e-05 0 0 0.07789351423 0 0 0 0 0 0 2.334804715e-09 0 0 0 0.1147876442 0 1.24730057 107.3743603 0 359.0108474 76.77611737 2.081736505e-26 0 0 0 0 0 2.859183253e-07 4.014629881e-13 0 8.675759411e-16 2.719792327e-07 0 0 0 8.151503816e-05 164538.5854 2.556012941e-15 0 22.57549895 0 0 0 3.933973633e-05 4.157848083e-19 0 1.865664158e-14 1252.197813 0 1.784242915e-12 1.441489428e-06 0.0001992045803 0 14905.9198 0 0 0 0 0 9625.06758 0 0 1.221616842e-05 2.555620147e-16 0 0 0.04727416706 0 360.6929356 0 153723.9741 0 0 1.130953174 8.254630111e-10 0 9.515070792e-05 0 0 6.131887697e-24 9.745043198e-15 0 0 0 522.5215245 0 17.82560072 0 0 1383055.51 0 2.57308742e-14 0 23685.44172 13.73690645 0 0 2.059689623e-08 0 4.425344337e-20 0 248.2691393 0 8.365572952e-05 1.637869153e-12 0 0 0 3.196959412e-12 5.287353517e-13 0 0 0.000292224604 0 0 0 6.069926366e-07 0 0 0 1190144.251 0 0 0 0 0 0.004256413453 0 0 0 0 1.725782879 0 5.112722524e-13 0.2071641998 2.446972924e-18 0 0 0 0 3.669701543e-07 0 37093.85462 0 0 0 4.36261405e-06 0 0 847391.9616 0 0 0 0 0 0 0 39389.08105 0 3.991310275e-10 0 0 0 0 1.078721787e-16 0 0 476995.0012 0 0.1382389737 1.033391284e-10 0 0 0 0 0 0 0 0 0 0 0 8.737649465e-09 0 0 +0 0 0.4435514896 4.209253657e-14 0 0 34199.31595 0 0 0 0 0 0 13915.82411 0 0 2.608890261e-06 0 0 0.01285295784 0 25491.1668 54752.01897 1.246202494e-12 0 0 0 3.092539253e-06 0.009215532764 0 0 0 1.425490127e-10 0 0 1.849225919e-12 5.131018612e-07 0 0 0.04838974284 0 0 0 528.4847096 4.006416251e-09 0 0 0 0 221.6165006 5194.134667 0.1006000377 0.0001766219812 202557.7481 0 5.207665359e-11 1.353748445e-05 2.493516531e-12 0 0 110168.9251 0 0.1146809014 0 0.1676500062 0 3.365642977e-15 2457655.337 0 0 138601.316 0 1.474824914e-06 1.36341691e-09 0 183545.4717 0.01317336313 0.001674562779 0 824013.8015 0.0007589673411 0 1.71497516e-27 908.9264013 0 9.478473266e-26 0 0 8.401943854 7.453128235e-22 0 0 0 3.118062059e-40 0 2.085744276e-13 0 3619.122083 0 2399.060674 0 4659.317459 3.999777345e-05 0 3.906891407e-14 0 0 0 0.0002071241732 0.8251910177 0 0 0.002213790638 15.61262856 1.393319682 3.823227168e-20 0 2.746656439e-11 0 6.181836756e-09 5.862390455e-05 2083830.076 3.493569542e-07 0 0 0 0.0007194263668 0 1.184852685e-06 2.62811929e-23 5669.404982 1.49079836e-20 3.237594156e-06 10.7079561 30111.91966 3.177773654e-13 5.707242929e-07 0.3836575039 3.314273278e-09 0 3.547296105 0 0 12057.87228 3.866627536e-11 1.312762498 51.18973164 0 2.800112296e-14 0 7.800929492e-05 8.075120326e-08 3484.690575 0.2491017063 1.605588407e-06 0 73865.03215 0 1.679604135e-08 0 0 0 0 6428.338302 0.002011759859 4.512847817e-17 0 0 0 530.0558322 86693.64264 0 7.235312788e-17 0 3.409634972e-12 2718.116122 0 0 0 3.221857607e-13 0 0 859.7311604 184.2243846 0 2.571449793e-11 4.304201468e-22 0 0 6.259399084e-26 4.471662431e-15 1.968582579 0 1168998.633 39.0905011 0 2.654302288e-14 4.706706232e-09 62653.31339 2.245904882e-20 0.004177104297 1.523322075e-13 0 1.110404078e-22 0 0.0001324211782 2.444045248e-10 0 0 0.2229040866 0 0 9.146608732e-05 3.619466122e-07 2.595957213e-06 0 0 0 0 0 0 20.61278774 0 0 0 0 0 0 0 83.04371623 0 0 0 0 0.08710273289 0 0 0 477388.1281 0 1.157949164e-17 0 0.05859496759 0 6.889725214e-11 0 0 0 0 0.0006779560587 0 0 0 55292.36559 9.174095009e-14 0 0.06477741601 2.391153043 0 0 0.001067363617 0 147602.38 7.396706786e-05 28512.74576 0 3.736177817 0 0 0 0 0 0.01489936534 0 0 382622.3671 0 0 0 0 0 0 0 254011.2163 0 0 0 0 0 0 0 2.721831374e-07 0 0 0 0 3.139335204e-16 0 0 0 +0 0 0 2.023797018e-10 0 0 0 0 0 0 0 0 0 1.563026229e-16 0 1.206191211e-14 979582.0318 0 12.03373145 1.758556214e-07 0 0 0 726.816865 0 0 4.817489355e-21 0 4.745736428e-14 0 0 1.595355998e-12 0 0 0 8.397032408e-11 0 0 7.936399419e-07 0 0 0.4004183893 200.1174831 3.611246906e-14 7828.897892 0 322484.1838 5.148624222 0 0 0 0.0002729205815 0 0.004468134288 0 0 0 1.320163368e-11 0 0 0 5480.876741 0 0 2.929106482e-09 0 0 0 0 2.671405941e-15 0 3.147588046e-30 0 0 0.001755910476 0 0 0 0 0 0 0 938786.181 0 0 0 214.3685454 34382.14371 0 0 0 2.840283504e-09 1.541495637e-15 1.802270037e-05 0 3.291651806e-17 0.2899208785 1.750468103e-10 1.027086551e-13 0 5.989771709e-10 0 0 976.8740028 0 46.81774326 0 0 0 16191.01057 0 0 1.485070068e-16 12747.11938 4.083186282e-16 1.023130409e-14 2.728444283e-17 0 0 0 0.1949814171 1850902.15 0 0 0 1.090208277e-11 0 0.4901439055 3.955980442e-12 1.192206403e-23 0 0 0 5.395550462e-19 9.080823167e-15 5.720155713e-11 8.627747969e-05 2.876454142e-09 0.1713930737 0 6.221559124e-09 0.4628357797 0 10787.27656 0 151.2925729 2.809266469e-23 0 34.16074977 0 0 8.786838388e-10 8.609014113e-10 1.027318462e-13 1.975224155e-05 0 0 0 0.0001759583217 0 0.00554616405 0 0 3132.802864 3.972560028e-13 1.2201703e-11 0 0 0 2.667862841e-10 1.370675016e-17 128897.3813 3660806.147 1.933369288e-11 0 4.013183394e-11 1.694849838e-12 0 0 0 3.420458862e-08 4.159701405e-06 1.322756937e-10 8.125871166e-18 0 0 2.344394263e-07 0 0 0 1.577308125e-18 6.239323344e-05 0 47313.32426 0 1845051.742 4.501005797e-05 0 0 5.508916263e-25 0 588483.3477 6.037260865e-07 0 2055.503744 0 0 0.03121885065 3.350963584e-07 0.2190354606 0 0 0 0 6.377101669 6.127429221e-21 0.2054645441 0 14.84042053 0 7.393284665e-11 0 0.0001931534533 5.868978518e-06 0 0 0 0 0 0 0 15895.29359 0 0 0 5.687788988e-21 2.376107011e-05 0 0 0 7.539712932e-06 0 0 2.343222557e-12 4.05313877e-24 0 0 0 1.038502556e-06 7.522854292e-16 0 0 0 420566.0927 0 209896.3576 0 0 1.159646455e-26 1.081532045e-07 1.021969484e-10 3.531935588e-19 0 0 8.801501322e-27 0 4.339329162e-18 0 1.044304162e-12 0 0 0 0 0 4.057581521e-10 0 2.305993143e-06 5.386404828e-09 0 0 0 0 0 0 0 88531.6879 0 0 0 0 0 0 0 2970.868652 0 1.675418058e-09 5.469192322e-15 0 0 0 +0 0 0 0.08171927695 0 0 0 2694.438038 0 0 916.9923313 2.363378391e-17 0 0 0 0 0 16090.45442 0.2385301403 0 0 0 0 0 0 0 2.409074548e-06 0 0 0 23.6034949 0 0 0 0 0 7352.899352 0 0.002591851964 0 0 0 0 0 0 26622.2388 0 0 0 0 8.193112243e-07 9.037576055 0 0 784656.0361 0 0.1351784381 0 0 0 0 0 534595.2709 0 2.317243069e-08 66.79067042 0 0.01177443839 1.658866109e-19 0 0 0 1.258333979e-10 0 0 0 0 3177.197214 16325.83418 0 0 3.653256823e-17 0 0.0001548366571 3.286650238e-07 0.002130940087 1.054665625e-11 1.666121757e-11 0 2.193973091e-08 4.322962739e-09 1.925831783e-18 58.9409385 0 0 2863.491183 0 2.706794966e-07 2.122254146e-06 0 0 2.610325885e-14 623.743585 0 0 0.002600386612 0 0 0 4.182731858e-07 52.86013039 0.01152399598 0.04781254586 0 0 0 6.754133734e-11 0 32.56339924 7.486306523e-16 1.921672674e-18 1168.320398 0 2.368956542e-14 1508.484134 0.0009305236792 0 1.708830156e-16 2.89660741e-16 2.056823368 3.874075927e-05 5.276359612e-14 19281.81875 0 0.0003621361803 1.742523503e-23 0 0 3.379047183e-05 4.689417685e-10 0 1.084285116e-13 8.659492633e-23 2.362246196e-08 0 1.202297667e-10 0 0 1.524204747e-05 2.820564846 0 2.402124698e-15 0 0 1.234522245e-07 3986.680221 0 0.0006416045718 0 8.487551735e-21 0 0 0 0 2.349183723e-15 34.79582084 0 0 73.73643276 3.088553212e-08 0.04064445993 0 0 0 2.343207886e-14 0.2413694997 2.245585266e-17 1.533894843e-14 1.03207519e-12 2.644913175e-32 0.7530211022 9.15555205e-07 1.075237198e-07 0.04796479037 0 0 1.062225785e-13 5.825179895 0 0.0001158311517 0 0 0.001139887959 2.215082086e-08 0 0 0 1.261724815 0 2106.2738 0 6.217691437e-11 0 0 1.25358393 321645.4488 0 0 0 0 0 0 10.97452442 7.228699805e-11 610.8290003 5815.803637 0 0 174.8137305 484579.5419 1.665248752e-08 0 0 0 0 0 0 0.9226506147 0 1.035264794e-12 0 0.008355596842 0 0 2.49106026e-06 0 0 0 0 0 0 0 10.9657145 0 0 0 0.01608787614 0.02013093074 0 1.272339952e-08 5.466810116e-08 0 0 0 0 0 0 0 0 0 0 0.004522890082 1.738831764e-28 0 85.71995927 0 0 0 0 0 0 0 0 0 0 0 0 0 4.350659677e-09 1.585795692e-09 0 0 0.0002162818847 0 0 1.763503865e-16 0.01906827336 0 0 0.0354651715 0 1915.181093 0 0 37.49778831 0 0 3.007971076e-18 0 0 +0 2.760944655e-22 0 15.89705747 0 0 0.001162764784 0.1970392068 2.007377256e-07 0 1.831974864e-09 0 0 0 379.3811746 0 0 3.873532061e-12 2.517010762e-08 0 0 0 1.590689358 0 929838.9783 0.0479648847 0 0 0 0 0 3.356545005e-13 0.8551405001 0 3.000987743e-24 2.211154653e-08 0 0 0 455974.3298 0 0 1.955246621e-12 0 0.09196803564 1.861703294e-07 5.623913302e-41 0.560387391 0 0 1.081269432e-06 0 0 4.304104705e-13 0 6.033299186e-06 0 0 0 8.239452605e-15 1.3105251e-12 0 0 0 1.062864172e-09 5.396733945e-25 0 429032.0757 0 0 0 0 0 0 0 4.291257297e-26 2.005296766e-06 0 0 2.060260009e-13 7.745755879e-29 0 0 9.877414078e-31 2.669567651e-10 0 7.231478414e-07 0.01807040682 0 34.42818336 0 0 0 0 0 1.278227567e-06 3446.734832 279389.5519 5.17333501e-06 0 140270.7992 0 0 0 1.028918743e-05 1.249233957 0.006037873793 5.331239795e-05 0 0.1422897117 37.56620939 0 6.644849929e-19 0.05017902118 7.463447573e-12 1241328.167 0 0 0 0.0008655583758 1.156466757e-10 9.78518403e-05 0 1196903.816 0 1.178084273e-24 0 3791.477518 1.16221665e-07 0 4.176579427e-13 2.249000401e-20 0.5323284914 1.76545548e-17 125225.6009 0 0 0 6.76019542e-11 5.841758151e-19 0 277.4221244 0.002465373536 0 195485.996 0 3.555397482e-24 0 0 0 1.258372972e-11 19353.64152 4.466719049e-12 9.994749464e-12 6.300800474e-18 0 0 0 0 3.996814806e-09 0.8286265174 0 0 1.14183648e-10 0 0 1.147650582e-08 1.10718307e-09 0 9020.458688 0 1.238345797e-14 0 0 0 22834.3143 2.45023918 0 0 3.691496319e-05 23.1598409 0 2.042975637 34190.63969 2.186911951e-32 0 0 0.01826500963 3.50090682e-16 103.2633899 0 22876.16036 0 1.146747204e-14 53595.60781 1.107259549e-19 0 0 0 2801262.052 4.128232774 0 0 0 0 2.559229094e-14 0.0003036507533 234517.55 0 0 3.43560333e-10 0 0 0 0 0 0 0.0292972357 0 0 0 0 0 0 0 2.714235263e-10 0 0 4684.354888 0 0 0 6761.487411 0 0 1.76654399e-17 0 0 0 0 0 0 0 0 1.319491745e-25 0 0 0 0 0.229229234 0 3183.128604 8.603477369e-13 0 0 0 0 0 0 0 0 1698502.225 0 0 0 1.925363629e-16 0 0.4849835558 979567.4027 0 0 0.2105771426 0 0 1.062247885 0 0 4.32843107e-22 5.469360954e-16 0 0 0 2083039.552 0 0.2159525011 3.388272553e-12 0 0.007456658849 0 0 0 3.467921738e-14 0 5.831637029e-10 7.8838046e-16 0 0 0 0 1.29033109 +0 0 6.529738168e-07 0 1.661682705e-09 6.87473102e-18 0 0 0 5.194660702e-05 5.310987529e-08 0 0 0 48395.24179 242917.5628 0 0 0 6.791471391e-07 2.304740435e-11 0 0 0 31306.07178 0 1.720715615e-08 0 5.768992983e-10 0 0 0 3.11733632e-08 0 0 0 0 0 0 0 0 0 0 8.973461013e-16 1.530914498e-28 21488.13534 0 3.8803695e-17 0 0 0 7.731743035 0 0 0.001856740861 2.600477167e-09 7.280496023e-14 0 0 0 321841.3819 0 0 0 0 0 0 0 0 0 0 0 0 19380.90362 0 0 0 0.001942210937 0.001965584999 0 0 1.420857127e-07 7.630545808e-19 0 5.491373773e-10 0 0 0.07130478305 3980.764965 0 0 0 0 7.448923994e-05 1679965.053 221.1831256 2.093485325e-09 0 4.727456038e-25 1.319560157e-26 0 3.002199414e-10 0 0 3.235172688e-08 0 0 95454.47815 1.021740708 0 0 0 1.682770865e-15 0 0 0 6.744621817e-20 0 3.997469418e-09 0 0.8625197181 0 0 131152.8476 129472.8857 9.974308689e-06 1.869146861e-07 0 10628.66317 4.788331348e-07 4.417509785e-13 0.005759823909 0 9.532238838e-12 0 127.1275702 0 0.5342639308 6937.352221 170.1095247 0 0 0 0 0 1.228574065e-08 6.692771768e-12 0 0 0 0 0 0 0 0 107216.7867 0 5.179825128e-15 69195.97676 0 0 1.215074805e-23 0 8.875632887e-05 0 0 1.000566342e-12 0.004516186457 0 412216.2031 6.816521467e-11 0.0003576162715 5.864626064e-14 0 1.513886795e-12 0 0 1637549.65 0 0 8.930365376e-10 0 4833.318187 0 9.722844463e-18 0 2.893467485e-24 0 4.452166568e-15 7.041339858e-10 654055.5403 0 0.3117622769 4.579575e-10 0 1.188859319e-07 0 0 0 0 0 0 1.739817608e-06 0 6.159243672e-09 0 12620.56976 0 0 0 5.555700108e-08 0.2784551399 0 8.788030402e-05 0.000552444696 0 0 1.109031178e-05 0 0 0 0 0 84393.59224 7.860997721e-07 0 2.19639803e-21 0 0 7.654887915e-11 0 0 0 0 0 0 0 0.03055130212 0 0 0 0 0 0 0 0 0 2.560066879e-05 0 548160.4914 0 0 172.0620759 0.1187984927 9.813131279e-09 0 0 0 0 0 2995091.261 0 0 0 0 0.008472887558 3.39718101e-16 0.009450187245 0 0 0 0 7.378373576e-12 0 0.04555151571 0.0142518707 0 0 0 0 0 0 0 0 1.203345632e-16 0 0 0 0 0 0 0 0 0 0 1.882246422e-12 0 0 0 0 +0 9.155885119e-12 0 0 0 3.831028177e-13 833337.5339 175283.1057 0.1183198194 0 0.1821319689 0 0 0 0 0 22.92299994 0 0 0 0 1.428625852e-06 7.003343622e-08 0 4.203977138e-10 0 11902.77802 0 0 1.295679752e-16 0 2.246376355e-07 1.758202524e-13 0 2.495476087e-28 0 102247.9247 0 0 0 0 0 0 0 6.299583081e-08 0 0.01600301103 4.852482509e-13 0 0 7.883195725 0 0 0 0.005850679502 0 0 0 0 0 39.19469199 0 0 0 0 39.02984246 0 0 2.436119676e-08 0 1.658753888e-09 0 0.002516877266 101054.289 481.9455495 6907.047195 0 0.00220319194 0 0 0 0 6.250824435e-09 0 285104.5275 0 0 0 0.0002779084726 0.2989678625 0 0 2.393869523e-23 0 0 3.981291988e-05 6.166542218e-15 1.432003207 2.315673227e-12 0 0 0 10961.98822 0 0 1546.433131 0 5.868886419e-05 0 0 0 0 8.06384428e-10 2.271628924e-10 0 0 0 1.08247271e-06 0 0 3.248622877e-09 3.313229594e-11 0 0.05003961958 0.5876048593 0 0 0.0007051514104 97.81813862 357284.0002 0 0 0 5.381638413e-17 74300.126 2.095309635e-06 0 1.035108444e-10 2.381313104e-05 2021006.251 0 0 0.005054988528 1.424386921e-13 0 0 2.143242683e-10 65023.45328 0 8.646064311e-10 1186.904088 0 0 0 0 0 0 1415.468357 0 0 0 0.3790646475 5.262629734e-07 4725541.115 0 0 4.908075558e-11 2.917398138e-12 0 4.50886984e-06 4.874194604e-23 463314.9768 0 0 1.378742156e-11 0 0 3900.124044 0 4.452769201e-06 0.1291606729 0 845.4327194 6.34733574e-07 442.6643772 0 0 1.203479874e-13 2.491630516e-06 0 0 1.754807397e-11 295563.1328 0 0.0001022851796 5.524271892e-05 0.006639433474 0 417829.6263 0.01117127086 0 4.481531165e-13 72706.76536 0 0 0 8.008100408e-28 0.001336174144 0 0 0 0 6.037893392e-09 0 0 0 0 0 0 0 3.682963751e-10 0 0 0 0 6.50183958e-10 0 0 0 3327883.524 2.854092085e-22 0 0 2.188714325e-10 1.752499106e-05 98250.93099 165026.7495 0 0 0 0 6.091120608e-09 0 0 0 490.7652993 0 0 0 648196.4306 1.633894733e-15 0 7.137171675e-12 0 5.79616861e-08 0 0 0 0 0 3.325335807e-11 0 0 0 0 0 0 0 0 0 0 1.124777544e-11 0 0 0 0 0 15533.55873 0 1256.246181 2.897362189e-12 0.0002102886517 7.255067497e-05 1.047215103e-14 0.0007518279756 0 0.2887025771 0 105001.4779 7.071249678e-15 3.03794246e-13 0 0 0 0 0 0 0 0 0 +0 9.426894978e-11 0 0 0 0 0 0.003278893134 2.235842901e-13 0 171796.6318 0 0 0.05574912667 0 489782.8928 1.042694509e-12 0 0.002322496879 1631626.046 0 0 6.378507659e-07 0 0 3.557361046e-08 1323.381537 0 0 0 0 12.34296776 0 1.085195372e-08 0 0.008493422577 0.443018182 0 0 0 6.375213398e-07 0 0 6805.739238 0 0.0003572132263 0.002405594849 115.611808 0 0.0003510870453 12895.67101 0 0 0 0 0.0001809338272 0 848622.5089 0 314340.9432 3.397334635e-22 0 0 0.02980455982 8.088512054e-11 5638.664245 1846653.709 0 0 0 18.73809609 0 0.0007980677237 0.969969657 0 6.217817022 0 0 0.006147547147 1.426023275e-20 2.863983315e-19 0 0 24269.14598 0 0 0 0 3.786815889e-10 0 2.984964243e-05 60350.74888 9.35296945e-07 0 0 0.05281713357 0 0 0 2.948660835e-28 0.003201678357 232.5306024 0.0001612512206 0.0239293168 32889.68328 6.014713997e-07 7.714504234e-14 9.146600085 0.8093372838 0 0.0001024842471 0 0 7.896648125e-07 0.00793559534 0 0 7.914911623e-06 0 1.674621066e-07 0.06470295889 0 1.569069981e-12 2.191639105e-10 0 7.501718037e-05 1.035158957e-10 0 7.126106284e-09 0 0 0 266363.1623 1.17231011e-07 0 0 1.570219259e-05 995375.0432 0 2.729005256e-12 0 0 1.558604935e-32 0.0003240959566 0 5.062066418e-09 0 0 7492348.071 2.116273379e-10 8.173223503e-09 0 0 0 0 7.426669582e-06 2.118253931e-06 2.294938758e-07 33.89452783 0 0 0 534189.369 0 3017.553879 0 0 1.283277224e-14 2.754755971e-15 0.002663621088 0 2.003290752e-15 0 0 114560.3553 0 0 3.351890168e-22 0 0 58698.72991 1.306129967e-13 0 0 0 10.65151884 2.308983359e-11 6765.779199 29170.94527 0 0 1.019497732e-12 0.05067045557 0.09980578487 0 0 0 0 4.340035059e-09 1.735312384e-14 0 0 0 0 42.91238913 0 0 0 0 0 7.676218533e-08 4.7625132e-11 0 0 236.8767003 0.06172046481 2.240541767e-28 0 0 0 0 18.33025915 1.26152738e-17 1.514165769 0 0 0 3.299700583e-17 0 0 0 1.275565282e-05 0 2.800984063e-05 2.131646856e-17 0 0 0 0 3268.449163 0.08551083563 0.008762745049 0 0 0 0 0.2390122625 0 2274.919237 1.060772608e-15 0 0 0 0 0 0 0 0 0 0 8.655560286e-15 0 0 1.24568462e-06 6.692034971e-13 0 0 0 0 0.06377871598 0 0 0 3.781155975e-08 0 0 20571.73062 168.498375 0 21633.27032 0 3.504468335e-11 5.144668899e-12 970987.7338 0 0 0 1.877176119e-25 3.73095904e-14 0 1.922716174e-07 0 173876.2482 0 51069.97128 0 0 0 0 0 +0 0 9.66917113e-15 0 4.469657383e-12 3.426686239e-19 621.7397283 0 0 0 0 1.780812496 6.958473178e-05 0 0 0 8.663456555e-05 0.001086304834 1.492469286e-19 0 0 0 0 0 2.875961918e-20 3.308768946e-19 5.150684899e-09 0 0 0 9.459695078e-09 0 59.78097565 7390.931838 0 1.150024966e-07 0 0 0 0 0 0 0 0.000629032085 1579.452021 1.212542268e-08 6.135481679e-08 0 0 0 0 4.22883332e-13 5.800931678e-10 1.665649332e-14 0 0 0.002512031221 0 0 1.078820634e-07 7.636607611e-07 0 0 0 0 0 2.75032659e-12 0 0 0 0 0 4.461802402e-12 0 0.0005118939458 0 0 1110455.988 0.7885433464 0 3.875480675e-11 0 0 67.95412534 8.329014597e-10 0 0 0 1.191493184e-10 0 2.754192405e-29 0 5.484256712e-10 0 203650.6207 0 0 0 0 0 159429.1335 0 0 0 1.032728927e-24 1.144114946e-14 0 3.512468807e-13 0 0 0 0 0 60.53376339 58253.6091 0 4.883281959e-15 0.02439663249 0 0 2.623737179e-08 0 0 2.833446535e-14 0 0.0008637488098 6607.279731 0 0 1.177413767 1584443.176 3.427608308e-07 0 0.1340024099 2.122578981e-16 306205.2632 1.06350639e-13 1.282897695e-28 0.0003831477754 0.00633625504 0 1.543539552e-13 0.0001257513435 5.187919297e-15 9.227190988e-12 0 0.0005142870786 0.0001190748154 4.001319265e-12 1.018582619e-14 0 0 0 0.003263581229 0 0 0 0 3.461054332e-08 51750.90803 2.285704459e-13 5.843721803e-17 558.2303727 1.239862925e-27 0 0 0 1423746.3 0 2.892535435 0 1274024.409 0.1350908002 3.322600593e-08 0.0005773523133 0 0.001443623863 0 725031.2262 7.684617931e-13 0 5.735024611e-14 0.001539500427 0 2.686444977e-24 0 1.865744896e-08 2.594010706e-06 0 8228.94309 0.0005201033158 2140253.01 275257.0222 0 1.227550666 0.0003976269701 0 0 0 0 0.001783395315 0 2.122407841e-07 0 0 0 1.874204137e-14 3.092721847e-08 0 0 0.1468444836 2.144774132e-28 0 1203899.421 21611.28111 0 0 0 0 0 0 1.721801241e-05 0 18117.81486 0 40062.36951 0 9.381422006e-10 0 0 0 1.881439093e-10 0 0 0 6.252861736e-09 0 88705.22242 0 0 0 0 5.234652204e-18 0 0 2.615333935e-09 0 1.468926584e-11 2.213467778e-08 0 7.910932264e-16 9.889926933e-05 0 2.691442423e-13 0 6.497829159e-19 0 0 8.631576341e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.168469525e-31 133479.9436 0 1.938638255e-08 3.061543832e-08 0 0 9.964297902e-09 0 0 0 0 0 0 14921.76889 0 0 0 1.556059035e-26 0 0 0 0 1.902476263e-19 0 0 +0 0 0 0 481.703224 6.803607711e-29 0 0 91357.95075 0 0 0 7.601380937 0 0 0 0 0 0 0.2302191822 0 0 0 0 0 0 0 93.05759535 32.11303036 5.90061648e-10 877.0715428 1.691623499e-15 46083.48519 2.394162093e-10 0 0.001950694027 0 5.958596187e-14 1.960831561e-14 0 6.450780194e-15 474.9522719 2.249349264e-10 0 2.300415256e-07 0 1.523574694e-05 2.956445215e-05 2.264182544e-06 0 0 0 0 0 0 918537.4643 19585.51222 1.196730165e-09 0 0 0 0 0.003427298706 0 0 614193.263 0 0 28787.29553 6.920674456e-11 0.8503078081 2.701833954e-06 0 0 0.0002863149589 5.419611456e-15 0 0 2.201233388e-11 0 0 6.859607986e-13 0 1.441822916e-20 0 0 371.2435418 0.2170835967 0.0004083412489 3.048165766e-10 1.206679274e-06 0 875.4458889 0 438.6348862 0 0 0.00346423777 1.13265156e-17 1.656816218e-20 0 1.464500434e-12 0 431677.254 3.372519361e-05 0 0 0.1262625751 0 4.288029436e-05 0 13.73903755 4.092568916e-09 179.3702907 0 0 4.794947621e-09 0 0 1.179008723e-06 2.450962656e-14 7.128779601e-11 0 9550.93683 0 0.8233335057 1.341529452e-16 651.2981708 0 0 0.0003169731042 6.178986801e-15 0.01363396727 0 1.535501261e-11 107.7227873 3.206182573 1.698953621e-09 0.002704013663 0 0 0 0.2001607256 0 1.809997884 1.115445832e-05 0 0.01559591903 46.51252615 0 0 52873.24538 0.001547647359 1.160974643e-24 1269662.273 0.2665805323 0 2399.462783 0 0.003749141526 79143.5543 0.03135473311 0 9.496042842e-05 739647.9476 0 157804.2074 0.7483055547 0 0 0 0 0 0.0017604358 0 0.004914255952 0 0 4.463848837e-09 0.01193904672 0 0 0 3386032.588 3.152016398e-25 2.402109246e-20 0.0004691583773 0 0.007103281937 0.4121126651 0 2.490760097e-05 0 0 1396.716674 0 13.88953312 0 0 14054.19656 1.419452303e-19 242413.1648 1.546695221e-09 224.0074087 0 0 0 0 0 0.1486299541 0 3.175209939 0 446134.4517 0 2.634672777e-10 1.331992342e-05 13043.65666 0 954843.1198 0 0 0.04764854151 0 1219046.767 0 9.935889585e-06 0 0 0 0 164251.9427 0 0 109183.719 0 5.943992604e-07 5.88471207e-05 0 6.95941552e-20 9.599416585e-12 7.867823284e-06 961.1455848 0 0 0 0 0 0 0 0 0 4.098279696e-07 4375.879995 0 1.422384974e-23 0 0 0 0 0 1.650754e-09 1.073521257e-09 0 0 0.6782523342 0 0 0 0 0 0 7.049820569e-05 0 0 0 0 4.360116207e-07 2.97589339e-16 0 6196.764728 9.426572809e-12 0 0 0 2640.76111 0 0 0.001988175521 0 0 0 0 0 0.002246985408 7.600686598 2.377048707e-16 0.0116375362 0 0 +4800558.987 0 0 0 0 1.615637358e-11 0 0 0 0 0 0 1.466089549 6874333.406 3.013615851e-07 0 2.925897589e-24 4.997188123e-11 0 1.086602198e-10 0 2.561086726e-20 2661.197952 0 0 0 10042.77089 2.605828951e-17 0 0 0 426.1255232 23.30305218 0.03291819474 2.786259786e-19 0 0 0 0 0 0 0 0 0 0 0 9.262679844 0 0.3664502508 0 0 0 0 0 115537.5368 0 4.174908413e-10 4.979821017e-07 0 56.98515925 0 0 1.901238911e-10 0 0 0 0 0 0 0 0 0 1.711327476e-13 0.01345667926 0 1.397385711e-06 14384.47018 1.273676691e-29 0 0 0 0 0 0 0 0 766.7657025 0 0 0 0 1067309.474 0.02975410382 2.953127136e-12 2.009792185e-10 3912.84015 0 1.796291158 0 0 0.004658609563 0.1140118691 0 0 1.213992699e-06 0 0 0 2.163411542e-05 8.640361321e-15 0 0.007972626018 2447.472507 6814.136404 6.30242773e-09 0 0 1.000828155e-11 4.538963486e-13 3.48219626e-16 6.666647768e-11 0 1.322641166e-16 0 0 1.495850207e-15 0 0 3.038614695e-09 4.438030663e-14 0 0 5769.685411 0 0 0 0 0 7.105018904e-23 9.395990878e-14 5.944921383e-11 9.066616092e-07 0 7.880510909e-05 1.06063343e-09 2.206952563e-18 49.13805747 9.932021762e-05 0 0 1007.856877 3.941447142e-06 4.281264129e-22 1.684430321 5.075094149e-13 899491.8031 0 0 0 0 3.378318282e-10 0 0 3323.227963 545.0340321 0 8.738896803e-15 5.611632281e-19 0 1.728880781e-05 2309.320798 2.385266343e-19 0 0 84.32187246 103299.6075 5.93366448e-18 0 0.3828550373 0 494.1014569 0 0 0 42100.4699 0 0 0 69098.60872 41.62371368 2.526734996e-09 0 0.007472681114 0 409.3442422 0 0.0037035729 5.941593414 5411.467058 121753.2452 2986886.755 0 144668.6272 0 0.001786627349 2.371134167e-09 0 153708.1193 0 0.0007521730733 1.810460259e-05 6.611962259e-06 0.0001013363076 0 0 0 0 0 0 1275.267789 4.447429472e-13 0 0 4.749563314 0.0003867659796 0.02947748751 30.29975851 0 0 0 0 0 1.750454628e-06 0 0 0 0.004804911578 0 0 0 893.9659266 6.846695555e-15 0.004645450969 0 4.505033778e-09 0 0 0 2.948898545e-17 0 7.668561212 8.588127586e-06 1.48284222e-17 2.925721518e-06 745160.6084 0 1.51824798e-10 0 0 0 0 4.438750582e-11 0 1.356881995 0 0 0 0 0 3.498759478e-13 1.768875138e-11 0 0 4.963403813e-24 0 0 1.251986363e-09 1.888226807e-17 0 0 0 6.103977636e-09 0 0 0 0 1.956675654e-09 1.066059955e-12 0 0 1107271.374 0 0 0 0 0 0 0 2.448092587e-17 0 +0.005510484437 0 0 0 0 0 3.824272591e-23 0 0 0 0 0 0 0.02749655217 0 0 0 2.914208019e-21 0 0 8.878701342e-12 0 0 676.4419936 0 0 0 0 0 0 1.478348033e-07 1.638251585e-12 0 0 0 106609.5147 0 1.718300167e-06 0 0 0 71751.57296 0 0 0 0 5.066134427e-08 0.1088675484 0 31773.81193 0.5503448692 6.305451401e-06 5.802429269e-20 0.005704582637 0 0 8.045402452e-14 0 9.337189346e-11 0 0 5.416072504e-09 155153.156 0 2.724463541e-09 0 8.281021841e-10 0 0 0 0 0 0 6246.832711 0 1.114125456e-10 0 0.004135851214 0 2.610901572e-10 0 8019.834633 1.227341348e-14 4.23535955e-05 0.001072314275 0 0 0 26856.06853 6.204364781e-08 2484307.039 0 0 0 4.275098677e-05 0 9037.93658 0.09523204683 5.32477386e-21 3.292160188e-13 0 0 0 0 0 29636.66806 4.024172604e-07 527330.7859 4.576715515 0 3.014998546e-14 2.145858231e-12 0 0.0007804075061 2.814552767e-05 0.0005611138182 1.509316288e-20 0 11952.23492 0 0.00067375319 4.568887859e-29 1.919093425e-18 773334.2586 633615.9845 0 2.364832574e-11 0 3.361488847e-14 3.289308946e-18 0 0 3.294788884e-14 0 0 0 0 4.883521889e-16 1.293235214e-18 9.767520328e-12 9.525121359e-09 20.68946423 7.202604572e-16 8.185708726e-09 3053.602434 0 2926534.395 0 0 1.44484114e-10 0 3.607138284e-11 9.84186203e-09 1.96860703e-15 0 0 2.750431678e-07 0 0 0 109755.8182 0 1.659356888 2.992165846 0 0.02997658214 8.902011903 6.98149625e-20 4.973875927e-05 0 45.0500145 0 67505.48976 0 0 0 0 0 1.617061141e-10 21119.06382 0 5.805491715e-06 0 0 0 0 0.2356951289 0.0002511487528 0 0 0 0.003727920561 0 7.118083453e-09 0 0 0.4756029968 0 0 2.391503664e-15 0 0 8.650469795e-12 0 1.720603685e-05 0 9.22676093e-14 0 11650.13939 0 0 0 0 0.0003412772889 0 0 0 0 0 6.219153231e-10 0 0 0 0 0.0001451170945 1981.724959 4.884031252e-09 4.479949099e-06 0 0 0 1.808750403e-06 0 0 8.541776661e-14 0 0 0 0 0 0 5.590680846e-13 0.04542132145 0 0 0 0 8.738850686e-09 0 0 0 0 82.30970566 0 0.009275987607 0 0 1.509369408 49.17323109 0 0 0.003356582347 0 0 0 2.137358419e-12 0 2678668.151 6.941828968e-05 0 4.97182435e-20 4853.453469 0 0 0 0 0 0 0 6.747635529e-07 4.515526384e-09 7.54890158e-16 129323.1333 0 2.258863782e-13 0 51.96719325 0 0 9.839671275e-18 0 0 59808.65079 0 0 0 0.01711919275 0 0 0 +0 0 0 1.017013879e-29 18804.946 0 0 3.154037382e-10 0 0 8.978908053e-11 0 0 0 0 0 4.269561809e-17 7.990600684e-19 0 0 0 0 0 0 0 46240.90031 1.165816991e-20 0 1.954080355e-11 0 0 0.02798312297 3.284997636e-13 0 0 0 0 4.243730117 0 0 0 0 2.723161827e-31 0 0.02843667275 0 0 3.594534096e-27 0 0 0 0 1450165.402 3.432947528e-10 5.669222426e-26 0 0.02459630985 0 0 823.308718 0 0 1.784934016e-07 0 0 0 1.215022821e-05 0 0.00343823466 0 0 0.0001441124673 0 7.974803164e-09 269110.8297 0 7.311923299e-13 3.663534183e-07 7.347128889e-08 0 1870473.294 5.243485032e-10 3.154235166e-11 3.150123719e-06 2.77703123e-14 391.1827567 1.011505264e-13 208681.6284 3.022776114e-11 0 0 87058.9333 34.85881828 0 1.592008316e-20 0.02180054092 3.674386025e-16 0 1.78443785 0.01533662958 0 6.127589067e-06 0.08202772825 3.707259455e-17 0.6420027053 4.9175999e-25 0 169814.4856 0 5.158854953e-06 0 0.03457551271 2.178041328e-20 0 0 0 6.995906528e-09 0.08456162304 0 3.588948538e-08 2.380233532e-10 0 0 0 7.654648741e-07 0 0 0 0 0 4.265836714e-17 0 0 2.850297668e-08 0 4.024074529e-09 4.447541877e-10 0 0 1353.856135 0 2.9278182e-19 0 0 7.682271899e-08 0.01354968615 1.101642973e-07 0 0 0 0.001546839825 0 0 2.084232013e-05 4.117781029e-31 0 2.463138083e-11 0 0.1372448052 0.0001304029208 4.493558868e-25 5.228468629e-20 0 6.200050777e-05 5.713054831e-11 66.30833499 9.487854118e-14 2.029232143e-15 0.03621853914 0.0004248552598 1.312710653e-11 1.280332011e-18 9.527087868e-15 545.9567922 1.00706137e-08 0 0 0 0 7.898800203e-06 0.0002297260795 9.16754471e-11 0.0008740106855 4.614455862e-13 1.635207332e-12 0 3.453553479 9.323065079e-08 7.170846747 0 0 0 0 11716.6224 0 0 1.865499841e-08 0.002998142043 0 5.547362148e-19 0 2.643967636e-07 1.191055175e-11 517463.9993 0 3707.42601 0 0 0 26796.42087 6.352275831e-06 0 0 0.3398037224 0 0 0 0 2.032761646e-07 0 0 0 0 0 0 0 1.980848719e-11 2.754194511e-06 0 0 0 0 2.479404685e-13 0 0 0 0 0.0008801730604 0 0 0 26197.87624 0 0 0 0 2.792934669e-09 0 0 0 0 0 0 0 5624.120385 0.6288611778 7.473507917e-25 5.820289026e-10 0 0.0004784269555 2.227817675e-12 0 0 0 0 0 47051.05451 1028304.572 0 0 0 1.174406385 0 0 0 0 0 0 4.60941099e-21 0 0 0 0 0 0 0 0 0 0 0 0 3.534870648e-11 4.504946727e-19 0 3.893385902e-06 0 0.02377739786 0 0 0 +5.569568172e-16 0 2.245946656e-17 0 0 0 0 0.004287966577 7.437741027e-34 0 0 0 0 853.8101906 0 0 7.048571546e-12 0.05349611232 0 0 4.138505571e-07 0 1018342.771 0 0.0001159562302 0 1.468382148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2365182562 1.568288662e-05 0 1.35135938e-15 3.004640186e-05 2.913236176e-06 0 203658.1953 0 0 1.271863424e-07 0 4104.047238 0 0 125389.1486 0 5150.753959 0 3.351942775e-21 0 0 0 0 0 0.0006692256796 0 0 0 3.834233974e-27 0 1883.998468 0 0 1.223636455e-18 0 0 1821.360937 0.02566298922 0 1039067.813 466868.5938 7.742446521e-09 0 2.566041626e-22 0 0 7.363762468e-10 8009.051257 21479.20539 4.383407099e-07 157.6130458 427.7415503 447462.5635 0 0.1054923642 0 0 9.155373335e-13 0.03195403379 0 0 0.09546445985 0 2.683487952e-09 0 856383.0636 38.67201361 0.00983264763 1.669062981e-08 0.0007199384864 3.503647096e-05 0 0 0 1.044632765e-07 0 0 1.435880547e-07 6778.372739 2.147192559e-10 5038.919852 0 13286.22026 0 0 1.087047599e-05 0 0 0 0.001703990222 0 0.001922819447 1.898060056e-12 2.780445729e-15 0 0 1.747821648e-17 0 5.476681346e-15 4.668121288e-10 0 0 0 0 0 0 0.09686440319 0 279.7404664 3.08877396e-25 0 0 2.78652243e-15 0 0 0.09645441776 1.347861267e-08 0 0.01241815052 0 1.138622585e-07 0 0 0 0 16.27319318 5.275526805e-07 0 93316.51736 0 484563.8655 155.8505736 1.155289487e-10 0 1.739791002e-13 0 0 7.117554887e-07 0 0 3.034277258e-11 0 0.002497939691 0 0 6.563495419e-05 0 0 0 0 5.004369513e-07 3.796818927e-10 0 913.2770762 0 6.500624633e-14 0 0 2.944232246e-09 0 1095.642794 1.462965881e-16 0 0 0 0 1.367482773e-17 0 0 5.017558859e-05 12.37899458 0 0 0.001655086109 1.029496095 165.3598146 6.808760105e-06 0 0 9.681787825e-05 4.899543443e-05 0.01767116176 0 1.144052696e-10 0 2.138739984e-09 0 0 3.469259486 5184106.943 2241.98692 6.280280979e-18 860.8844617 1.084517359e-09 1.169388389e-10 0 4.477314442e-13 0 0 0.007599095786 0 43060.74162 0 0 1.676253304e-07 0 212.4358147 0 0 4.413340878e-08 0 0 0 0 0 0 0 6.645512441e-12 0 0 7.85697259 2.358219504e-14 0 0 0 29177.7058 0 0 0 8.412915811e-08 0 0 7.404608575e-14 6.42377638e-06 0 0 0 0 3.337250377e-05 0.01692870951 357.4247696 7.62980732e-12 0 0 0 390037.9791 2.499520732 4.9461452e-14 0 0 0 0 0 0 97903.11637 +0 5.992735001e-13 0 0 0 1.024821501e-08 0 0 0 0 0 0 25681.91097 0 0 0 0 0 1.518700037e-12 0 0 0 0 0 1.209752244e-13 0 0 0 8.609954441e-08 0 0 59.01594338 0 7.668451986e-15 0 0 0 0 3.491604891e-05 5.94578498e-11 6.264606845e-06 0 0 4670.121982 0 0 0 31219.64295 0 0 0 0 0 1.123146727e-08 0 0 0 3.053438241e-15 0 7.548166381e-12 43.52579381 1.605612962e-07 1720.211322 0 0 0 0 0 8.77444221e-08 0 0 5.872885958e-09 1.321918032e-05 2.513986957e-08 0 1.515315063e-13 7.662332519e-28 0 0 0 0 0 0 0 5.093042969e-16 1.045210279e-09 496.0590551 0 9.517752641e-08 2063.775038 6.739951028e-13 11659.27871 0 0 9.496435389e-15 0 0 9.203879887e-08 476785.4861 0 0 0 800.5631594 0.3027329891 0.002147206024 1.28561547e-08 3.350308836e-05 0 1.975311526e-10 10764.63203 0 0 0 0 0 0 150.2350256 0 246.2464836 0 195.1680051 0 0 0 585.7888673 0 4.680366031e-06 2.688278646e-11 0 0 0 219749.3955 0 1.320776395e-16 9.423674427e-07 5.854329209e-20 0 0 0 1.425467905e-24 0 0.02080822671 0 547920.315 0.1058648567 41.04596426 0 5.211583832e-11 0.004734337164 0 1.397615596e-11 0 0 4.117500781e-10 0 0 303.5259216 0 5.016422717e-05 0 0.4131802408 0 0 0 0 1.170589907e-14 0 0 885738.5918 2.372634888e-08 248572.1298 160870.722 0 7.669458296e-10 1.409412418e-15 0 0 0.004772624375 5.736240236e-06 0 0 0.05691945372 0.0002990965365 1305.748172 0 5.765675844e-14 3.123930019e-06 1.703198868e-05 0 631.5606179 173210.5432 1.571865386e-15 0 0 133562.3985 0 3.203602542e-06 0 0.1344620848 0 1673.182222 0 6.720720541e-10 5.764135202e-12 266.7119031 0 0 0 0 19.69426614 0.0004309916653 0 0 0 0 0 0 0 0 0 0 1.925903742e-06 0 0 0 0 0 7.078939512e-10 0 0 0 0 0 0.07590414774 0 5.400168378 0 0 8.929777296e-09 0 0 0 0 0 0 0 1188.514321 0 0 0 1.844218559e-13 5.485163661e-15 0 0 50793.10412 5.065875371e-07 0 0 0.007649822072 0 0 0 0 0 0 0 0 6.66782407e-12 0.0024877791 0 0 0 0.001577665427 0.0008072768119 0 0 0.002360666585 0 0 0 0 0 6.671102584e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1.326438953e-05 0 853735.8461 5.515392359e-12 0 6561744.848 0 0 731743.4176 1.861445058e-05 0 0 0 0 160.7030254 0 0 0 0 0 0 0.2382817102 8.169310003e-11 0.4004677696 0 0.0004946504962 0 0 210294.2773 0 0 0 0 1.095931144e-08 0 10748.19747 4.840771557e-05 321899.0983 1.215775028e-33 0 0 0.0001407674924 0 1.122020308e-07 0 4022227.906 0 0 0 0 377.5170515 0 2.466178707e-09 0 0 0.0001317740751 0.0002283883842 0 0 0 0 0 0 20.74921621 0 0 35359.49467 154410.7244 0 1.182603238 0 0 0 63960.58386 98.12549725 3.663901338e-06 2.924351423e-11 0 0 0 2.241420415e-06 0.2570101512 12.80837796 5.940477886e-18 0 0 0 257727.08 2.253802597e-05 0.1219689969 0 498668.8545 0 7.635699376e-18 0 0 0 0 159865.6977 461.7549483 0 2.159899947e-14 116251.9003 7.328484929e-11 1059867.654 0.182043424 0.06046332601 1.853644577e-10 0 0 0 1.47535489e-10 136357.7463 0 0 0 2.277626608 2.187325892e-13 1.547168957e-18 0 0 8.131514038e-12 0 0 0.001183746988 15.33242535 0 0 16080.42536 7.807845629e-09 0 0 0 8281.605939 0 8.09759279e-08 0 25393.50042 0 96.12265802 4.295303806e-14 0.0003290196191 0 1.014300203e-14 814.5784496 0.2625492096 0.0004531278966 0 1.689298006e-20 0.003512691892 0 0 3.479454148e-08 267161.0588 6.664986237e-28 0 4.94320315e-07 1.441391493e-10 0 0.0001157640209 1.131443699e-22 0 0.009613449299 0 5.977746431e-15 0 1.046526741e-20 978.1416676 2.289064114e-17 4.665909977e-07 0 0 2.209687649e-10 1.31436849e-09 1.859923251e-14 0 1.027744466e-07 0 8.530313081e-07 0 0 1.709257251e-11 0 0 0 0 1.238158402e-09 0 0.1703835461 0 0 0 0 0.0006798122226 0.331359361 0 1.591789782e-14 12016.04607 6.804385817e-12 5.372326324e-05 0.01177456247 0 6.607272657 0.003570883319 0 0 0 0 0 0 0 0 0 0 0 5.903115435e-05 0 0.06509654904 0 0 0.04634596708 0 0 44988.97805 0 0 1.780646267e-11 2.528374626e-15 0 0 67.69572563 8.21500213e-31 1.581424207e-12 0.01160961255 0 0 7.798055603 1.579557501e-17 81807.9741 0 0 0 0 0 0 0 5.748445842e-12 0 0.6487014751 0 0 0 0 0 0 0 1.322127142e-12 0 3.688083351e-07 0 284998.4547 0 4.604434208e-10 6654062.835 0 0 0 1.963657736e-06 0 2.239997823e-09 0 0 0 0 0 0 0 0 0 0 68546.56048 1.073970168e-05 0 0 0 0 1.614132218e-27 6.716476632e-09 0 1.167848126e-12 0 0 0 0 14707.96282 0 +0 0 4.97615386e-07 0 0 0 4.286238286e-08 0 0 0 0 6.500030267e-11 0 2.059275865e-13 0 0 1.390507997e-12 0 1.184780309e-13 0 3.151821512 0 1.960250296e-08 0 0 1.508020028e-26 7.486113271e-15 0 0 0 0 0 0 0 0 0 0 0 601043.2331 0 3.507440635e-19 2.796510274e-13 0 0 6.454977373 0 0.3979592098 0 0 0 0 0 0 0 0 4.334734862e-10 0 1.35153443e-05 1.508172924e-29 0 0 672.1215539 4783.983999 1.64153812e-09 0 0 0 0 0 0 68939.43652 0 3.431609715e-09 79.96673428 155569.535 0 0 4.992001923e-07 0 0 0 0 15726.76493 0 0 0 0 168256.8873 0 0 0 2.402116535e-23 0 0 3.354584187 0 0.01523061694 0 10697.39316 2.102867793e-11 0 0 131787.7621 0 0 3.515845798e-06 1.022514204e-05 0 2.535107159 0 0 12.61432674 0 24456.71965 0 76.79041005 0 0 1.702444584 0 0.08998208111 8.508707708e-17 0.0002006421361 0 364.4267299 0 4.395324276e-11 0 0 382383.0738 0 8924.138527 0 6783.560842 0 3.046194639e-09 7.332753843e-08 0 0 5.937632864e-05 1.689113648e-14 0 0 0 0 0 0 0 0 29.12831327 0 1.002503837e-05 0 2.199727224 7.494197868e-05 9.950105078e-11 6.534682451e-12 0 5.805782434e-11 25.56371418 390.1837284 9.719644463e-09 1.440786221e-06 1.968206997e-05 3742.035771 1447768.827 0 16723.71295 0 0 5.820467254e-25 1911.690641 0 0 1.847470542e-05 2.747960678e-06 2381.168786 1.876539998e-17 0 0 0 0 0 1.506603449e-23 0 2.400686344e-05 0 3.382809711e-23 0.5560601237 0 0 0.005522173167 5.78794527e-11 2.273637958e-06 0 1.603885269e-08 169.7099985 8.14037045e-12 0.1185001701 0 7.655421102e-10 3.603231567e-11 116947.892 0.01718277239 9982.753706 276998.6811 0 0 0 1.312691881e-07 3.364986579e-09 0 0 0 0 7.206125665e-22 0 1.402095758e-05 0 0 717667.5803 735.5084671 0 25850.14633 0 0 1.264616361e-17 0 0.0001576684767 0 0 3849.585109 364013.345 0 0 0 0 7.890544528e-07 1.497844625e-09 0 0 2.264600342e-05 0 115.7267667 7.001501418e-23 0 0 0 5.247535741e-21 1.289856938e-17 1.890038147e-23 0 0 0 0 0 1.340849038e-06 9.460423541 4.993571107e-17 0 454194.7966 2.726752532 0 0 0.006293701801 0 1.191089458e-14 0 0 44.38203205 0 0 0 1.014695184e-28 0 3.492277672e-10 0 0 0 3.64338229e-20 0.001475463252 0 0 4.330187368e-06 0 0 5.499795438e-07 0 0 0 0 7.14570149e-19 0 0 1.703556753e-10 0 0 0 2.20910338e-14 0 +995187.7927 8.529259957e-07 50785.39244 0 0 0 0 1.746280557e-09 0 0 3.254412391e-12 0 0 1.210151452e-09 0 0 6.3085062e-13 1.691552346e-14 0 0 0 1565775.256 0 1.808800821e-20 1.766519035e-08 0 1.500812233e-08 1.467027081e-17 2.481346971e-23 2.145379083e-15 0 2.212615217e-11 0 0 0 0 0 0 0 0 0 0 0 93.00622682 0 0 0 0 0 119619.4493 0 78.25424776 0 0 2.769175873e-16 1.039333954e-05 0 4.292139905e-13 0 0 89241.02665 0 0 3.484126032e-08 2.353404989e-15 0 0 0.03609200305 2692.050937 0 2.472766168e-18 5.097031069e-12 0 0 0 2.851715823e-10 3.352127211e-12 2.050491327e-21 0 0 1.294086848 0 78590.19929 0 0.1925098004 0 0 0 0 0 0 928.0529225 0 0 1.359975199e-17 0.0002224866593 94896.285 0.1023536943 0 68399.78635 0 96215.88828 0 3.951240321e-05 0 0 7.369569713e-22 1.399288142e-26 0 1.083303254e-15 0 2.634459617e-17 78.14599684 0 3.163102182e-08 8.650958863e-24 1.088083634e-18 273085.3205 0 2.283103001e-06 2.015079738e-09 346796.4353 4.784602619e-25 0 3.157123599e-08 0 0 0 0 0 0 5.162095681e-08 0 0 0 7.879508929e-06 0.0002686880376 0 26.02016062 0 0 3.311841189e-13 2.816951959e-06 0 44.61012437 4.656717632e-10 0 4.243298813 4.877560518e-07 6.753061479e-20 0.0001135216971 0 0 3.509435982e-11 0 8.632867144e-20 0 9.618500715e-15 0 0 0 0 0 1331.050781 0 1.154213996 0 1.087271338e-21 0.0002796497047 10851.9736 4.729010891e-14 2.93881224e-10 1.279439427e-07 0 0 1.786812303e-23 0.004541909748 4.186261522e-17 0 1.274605248e-07 0 0 7.741108965e-11 15396.85077 5.485858606e-18 0 0 169.9463473 0.001561294746 0.01312874589 0 6.960410408e-11 1.336365841e-08 0 0 0 968.2329299 0 2.440558715e-10 0 0 2.691034121e-14 7.988784284e-18 0 7.514479828e-23 2.688914194e-25 0 0 0 0 0 0 0 0.003884452246 0 5.883098849e-15 5.06292832e-09 0 0 0 0 0 0 3.621591897e-11 0 0 168663.3646 65.93575435 0.01004433056 0 562786.3828 0.0001364886403 0 0 0.4375989406 0 0 0 0 0 11.07970042 9.918467983e-15 0 0 0 6.33591028e-10 0 0.4038076066 0 0 0.04050890885 0 1.472865144e-07 0 0 0 0 0 645.806781 0 0 0 502131.5905 0 0 0 0 0 0 219.3055389 0 237670.8499 0 0 0 0 0 0 4600.100516 0 0 0 0 2.213170311e-12 0 62.57447783 0 9.620004993e-10 0 8.61053308e-08 0 0 6.799627335e-07 0 0 0.04033484438 4.573633762e-19 0 0 0 +2.260170191e-11 0.006783125338 1.212904988e-11 0 2.663338813e-15 0 6.927458906e-22 3.448381957e-08 1.743455701e-06 0 273126.6984 0 0 0 1.465103472 0 0 0 0 0 0 0 0 0 2.695352865e-16 521.0075464 1160.214478 0 0 0 0 5.047794237e-16 0 0 0 0 0 0 5.521839363e-09 2.415503025e-08 0 0 77841.86709 26.89580262 3.448705491e-12 9.564389054e-25 0 0 9.339118072e-13 0 0 1.92919043e-12 0 0 0 8.387037645e-16 0 0 0 1.316847869e-06 1.107403691e-13 1.755112855 2.14018279e-09 0.0007548241718 0 0 0 614635.674 0 4.863580305e-27 0 2.785907277e-14 0 0 0 0 4.492713012e-11 0 0 0 36.46649945 4.855025172e-08 0 320.9125395 0 102729.2297 2875261.516 0 9.679131379e-17 2.455716053e-13 1.633010708e-08 395031.4394 0 3.841917211e-08 0.0001339936424 1.760225144e-09 4.468772944e-05 9388.381405 0.02214919502 7.256622644e-07 0 0 7.211756473 0 304166.3512 3.025856982e-10 0 85350.03042 6365185.01 8660.803602 2.267842389e-10 0 0 3.514827309e-09 1.282477347e-11 0 3.449594984e-09 0 0 9.630729512e-08 3.558787547e-11 0 0 1.167691932e-15 4.162199539e-16 0.1790084212 2312.048953 7.624468176e-05 0 1537.450273 0 0 0 0.05955595528 2.922917994e-06 2.871443905e-07 7.645603917e-15 0.3442521804 9.019999467e-27 0 32005.72438 2.214991262e-13 3.805046446e-17 0 12.13389959 0 42.98039182 0 0 0 0 5.070206003e-18 0.0009707355718 48.037453 0 2.755875499e-11 0 480.3975228 0 318.0893711 0 0 2.447878567e-15 0 4383491.131 233.3362773 1.872075783e-11 0 148765.6026 36084.18426 0 0 1.902096603 0 87526.18135 31091.22442 0.1078535309 0 0 0.2131748164 0 163766.7765 1.332609723e-10 0 0.1011861732 0 7.326658142e-05 0 484553.9248 35.76706875 0 0 0.0001758909643 0 74.2616416 1.572339507 0.7338984087 6.64227086e-08 3.740861639e-07 0.01228765942 0 0 0 1.232863658e-07 1.367494683e-16 1.204289187e-16 2.232479407e-15 1.564822283e-06 0 0 2.907503697e-14 0 0.02193459866 3.176121318e-08 0 0 276.8276033 0 0 8.382066814e-20 769.6046802 0 0.4283968645 1.280850918e-08 8.686781569e-05 0.7254766215 5.552375262e-05 0 0 0 0 0 5210.912783 3.247566503e-15 0 0 1.377802419 15.25894334 0 0 1945.321565 0 0 10183.25409 6.722885516e-09 1223536.505 1.504248767e-15 0 0 0 12024.72059 0 0 3.190355509e-07 47452.37359 0 787.0374384 0 0 0 0 0 0 0 2.511251042e-07 1.309620827 0.7701596216 0 0 49.44691538 0 0 4.165418348e-05 0 0 0 0 0 1347956.294 2.985113351e-27 3.261381613e-15 1.091123521e-05 0 0 1.226450932e-07 0 1.887082181e-16 1.005398092e-14 0 0 0 0 8.491347612e-18 0 0 0 0 198878.3354 0 0 +0 0 37.44933849 7.348702183e-10 50098.05225 2.151222708e-06 0 0 0 0 0.006215842662 0 0.01026233382 0 1.896278374e-19 0 3.459291764e-06 0 0 34.16045308 0 0 0 155836.9841 2.889033279e-10 0 0 0 0.01967807045 0 207949.6846 0 139.0925179 0 0 0 0 49040.51296 5.53457018e-22 0 3.272257949e-13 0 0 0 0 0 0 0 1.557731607e-11 0 0 2.38772277e-09 0 0.0001359433547 0 0 0 573824.6496 0 0 3.674966974e-23 0 0 1.057343706e-06 0 1.038420409e-12 0 0 0 0 0 0 76125.86017 1.243250387e-24 1.872942542e-14 0.01303322079 0 1407453.942 0 0 2.130143998e-11 7.808047893e-06 4.449703444e-18 0 1.400189006 0 0 0.001360600609 1700065.325 0 0.008465866869 0 0 0 31683.91179 0 0 3477882.046 0 3.456581344e-15 1.258122925e-22 175767.6973 0 38934.4575 5.116363827e-13 0 5.632286334e-08 0 0 1.281707828e-13 3.256068906e-16 0.001920263426 0.002339513315 0.002117389617 3.53933653e-14 0 3.389930364e-10 0 0 0.0003224000971 62.863112 1.206753935e-06 0.001682759352 1.906108868e-05 0.001065336885 0 0.0009889133384 3.142815474e-05 0 0 0 3.361123495e-08 1.251241124e-05 0 2.0094727e-10 8.74662735e-07 164.0253786 7.556259552e-13 0 0 0 0 13773.47466 0 107.2209661 1.620329496e-06 1.273416549e-08 0 4.861321515e-11 1.645560922e-11 0.400965675 0.0003858853917 0 1.486528106e-06 2.161490131e-05 0.093740622 1.616074988e-10 5.431990848e-20 0 0 5.47847229e-05 3.106375128e-20 4489.233604 0 0.0008681472404 0 0 0 0.1253985843 6.435123428e-09 0 0 3.029473325e-14 0 144212.8193 8.751227845e-16 13816.65863 904594.797 60071.33711 0 0 2.184552421e-08 0 0 156771.9328 0 0 0.001626844172 2.029869208e-11 30463.06699 0.0001531027394 275652.2006 3.505672087e-08 1648955.426 0 0 0 0 0 0 0 0 2.943187636e-18 0 566.5370804 0 0 0 0 0.0008856009767 0 0.001041761124 0 125.3882345 1.908097094e-24 4.937702542e-07 0 0 80.49749311 8.875818316e-15 0 228327.6908 0 0 7.254799431 1.262116761e-07 3665.417198 0 6.633218163e-16 0 0 0 0 9.898542817e-23 0 4297718.778 0 0 3.763025309e-06 0 0 2974.279941 0 0 0 16.35879562 0 0 0 4.24209591e-26 0.03981310876 0 0 3.097476257e-15 0 0.0005270689667 264857.6893 0 6.150378551e-08 0.2620218024 4.847616157e-12 0 0.03249452457 0 0 0 0 7196.643846 0 0 0 0.0007957452665 0 0 0 0 14.8304763 0 0 0 120096.6047 0 225.8745511 0 0 0 0 0 0 0 0 0 0 0 4.87663414e-12 1.000075416 0 8.785986931e-25 0 0 +0.003667927552 2.0152e-06 0.0002325698064 0 0 0 0 0 3.477524946e-14 267564.0017 0 0 0 29655.47547 2.301819192 0 1233.420873 0 0 4.060178993 0 0 195.8118792 0 0 2.607570223e-11 0 0 0 0 0 0 1856.231422 139716.1204 1.044159765e-12 0 5.685978968e-08 0 0 0 0 1.037391866e-08 0.002973791247 0 3.772666258e-26 0 0.3928465256 67405.23874 7.193297223e-11 1.374545393e-07 8.395515239e-05 2.393103412e-10 0 4.618964633 0.02936503881 8.729011515e-15 2.070308772e-16 0 2.407718361e-08 0 0 43.14867588 99767.38315 0 0 0 2.905643218e-09 0 0 0 0 0.01021453211 0 7.029258496e-13 0 0 0.0003033704143 0.0005426057284 0 0 0 2.439453787e-18 0.0004448359422 4.170741986e-27 0.0007400883713 1.144945424e-05 2.539538823e-17 0 5185851.867 0 13277.53275 8.553931629e-05 384421.445 0 2.018744839e-08 0 0 0.002282135903 0 6.237360553e-21 3.62581202e-10 0 37359.86963 0 7213.810185 101026.7018 0 0 0 2.693838691e-05 0 0 0.4053372032 1470.535134 0.051925199 0 0 0 0.4972472776 0.06576470012 1.39981212e-06 0.09347444611 3.488971837e-24 0 9.795031013e-26 0.0901498827 0 0.5317121932 0 0.001102423037 0 7.133298105e-16 1.191150719e-06 0 0.0002671659491 0 0 8.504844877e-24 3.786697008e-10 1.466513551e-08 0.005237731994 3.551723783e-05 0 2.311601477e-15 13951.48599 1.321401722e-17 0 3.074840399e-17 0 0 20.63540257 9.220589225e-08 2.992301417e-27 2.667339943 0 0 0 0.006123066444 0 4.520555709e-09 1062.086116 1.476574223e-10 4.244466474e-17 1.205404258e-12 0 1.59035816e-10 0 0.7981487196 0.3894856735 5.055421488e-09 0 0 8.516237242 0 0 3.177677943 33427.07493 6.076287152e-08 1.236633486e-06 1.349822323e-05 0 6.366855609e-11 0.0001442562081 6.358053058e-16 0 0.004591139091 6.849244665e-07 0.05952543226 0.02657343111 3.761988878e-06 0 0 45295.59198 0 0 0 0 0.650866811 0 0.0003133274568 1941.83132 0 7574.997641 47247.69649 0 8.3752033e-09 0 59.66830783 0.5940659309 1.198824022e-05 21.94970915 0 0 2428498.712 7.672763304e-13 0 0 9.285144761e-06 7.693847098e-16 0 0 0 0.001612326199 0 0 0.01206681891 0 0 0 0 0.08550027369 0 0.0004468263122 0 0 0 0 0 872.0595325 0.005147192176 0 0 0.0001095612129 0 0 0 8.456764108e-12 0 4.778065446e-06 0 0 1.100164794e-14 0 0 11.72514107 0 322358.9303 0 0 0 0 0 0 0 0 0 1312380.578 0 7594.703804 0.8069813323 211317.4434 0 0 0 0.06829949661 0 1.046872345e-12 0 0.0001922102503 0 24773.73433 0 0 0 0 0 0 0 1.506383142e-14 725.9970026 0 0 0 168417.8553 0 3317.227239 1.487639296e-38 1.43350887e-30 0 0 +8.181980905e-30 0 0 0 2.707322188e-17 0 0 0 0 0 0 0 4.860728929e-11 0 0 0 0 0 0 250076.427 0 0.01159641793 1.846222526e-16 728.8351059 0 0 0 1.833205619e-05 0 1.84466141e-14 6.800779616e-08 0 0 33748.19143 6.249300679e-08 0 0 0 0 0.1793467668 78729.48183 4.445159106e-10 112.2272663 2.761346944e-11 0 0 0 113.2240084 0 1.548802455e-19 1188351.711 8.754682864e-07 0.003405702 1.685198205e-13 0 0.0007002703319 0 0 0 0 0 15655.22014 0 3.522360816e-23 0 0 0 0 2.099281232e-10 3.844131174e-17 0 0 0 0 0 0 0 1.053631364e-07 0 7.230486627e-15 0 0 0 0 2.52894113e-05 0 0 10.47103634 0 38.18702716 0 0.07200756506 0 0.009790183691 0 0 0.000136695862 0 1.717328981e-09 0.02060723465 9.433759389e-08 1.565918804e-11 5790.522289 0 1.728672506e-28 0 0 0 0 0 7.037153542e-11 0 0 3.745724733e-12 0 0 335766.2991 1313.157132 1.023782772e-07 105305.4796 9.892573602e-08 0 0 0.02229484919 9.269388032 8.203401837e-19 8.271966428e-08 0 0 122695.6334 0 2.145957094e-10 0 0 1.183498912e-20 0 0.0002475352094 6.337717272e-15 0 0.000212598614 6382.414997 4590.118486 0 0 0 831352.3458 3.637050774e-12 0 0 0.0001894730607 0 5.633398965e-08 199.7270371 1.103471049e-13 0 0.0555979131 6.190086236e-05 1.694963827e-10 0 7.086251325e-25 2.211882109e-09 5.978995619e-14 0 1.69613023e-06 0 0 6.637115144e-14 0.002622494272 2843.881251 0 0 0 52485.39596 4.395577135e-05 0 1.17732635e-21 0 0 0 0 0.0009207585836 0 0.004731798717 68614.97284 0 4.7648304e-05 0 0 0.00198478314 0 0.0009054689905 0 0 5.544032153e-06 0 0 893.2236333 0 0 0 0.03264730979 0.2607811113 15.28736628 0 0 0 79.87307913 3.704355434e-12 0 1.16141919e-06 0 4.36435082e-18 0 0.02103104629 0 84302.65511 0.0001030425367 0 0 264.707466 0.001959877266 0.0008537832401 0 0 0.002038274951 0 2011.576791 0 0 1.065387295e-05 1.170852246e-07 1.188929769e-21 0 0 0 0 7.438337538e-05 0 0 639.8498953 0.005516738702 0.0001103164439 0 0 0 5.398941931e-10 0 114453.0235 0.1894479086 0 0 0 0 0 0 0 0.001529190654 0 0 2.578177707e-10 0 0 0 6.910463716e-22 0 0 0 0.001141556003 0 0.03023582637 0 3.665501456e-15 0 7.329309149e-06 0 0 0 0 8.346133754 0 6.097222034e-11 0 5.545469254e-27 0 0 0 0.002277190658 0 0 0 0 0 0 0 0 0 0 0.001736635725 0 0 +0 0 3.477976718e-07 9.312145638e-16 0 0 0 0 596.3451405 0 0.005301511445 36965.76341 0 0 0 0 0 1303138.412 0 0 4279.610762 0.0696275369 7.672223988e-07 1.151263828e-07 0 6.555731671e-11 0 0 0.0121320088 414.2448118 1.394080446e-09 0 0 1.958536421e-28 0 0 0.0004276217216 0 0 0 0 815199.6068 2.170555056e-10 0 0 5.185029438e-13 0 0 0 0 1.141909647e-11 0 0 0 0 0 0 0 1.474472007e-18 3.357763572e-10 0 8.508242687e-16 0 21.26062657 0 9.602464113 0 0 0.08101048059 503357.5078 319.412065 0.007213941971 1729339.926 2.615817127e-23 0 0 0 2.787146516e-15 0 0 0.3069769666 0 0 0 9.885702396e-16 145324.3925 0.5635173534 0 3.323064809e-06 0 270907.921 7.857243899e-15 1.492085186e-15 0 11915.92042 8.698820001e-10 0 0 0.0003588633113 0 9.557275653e-10 0 3.175911672e-07 3.318640656e-09 0 0.03495369238 3.152733448e-14 12422.3595 0 0 3.523651631e-16 0.001364607966 3.228198466e-11 3.417704659e-10 0 0 0 0 0 0 4.79937571e-06 247721.7151 0 0 169.0828489 0.001728363762 0 0.4056493798 0 0 0 1034124.754 0 0 0 0.0006526128687 3324.350073 8.033059612e-12 0 8.408462449e-15 0 0 2.726661504e-08 1.125605674e-17 1.273373916e-06 6.395249881e-09 0 0.0007234583725 0 0 2.412742994e-05 1.32796276e-16 0 173203.09 2.696996418 0 5.553949673e-06 0 0 0 0 2.219527306e-06 0 0 477790.5935 0 0.02202274637 0 173876.2231 0 312.8333631 0 439919.1697 0 2.456079384e-17 0.0002840197962 2.777573032e-08 13169.84091 5.243516196e-20 4850.619936 7.311563257e-19 545163.1178 0.0005816681149 0 0 0 0 0 4.409108442e-11 2.018670786e-20 0 0.006100159154 1.546833512e-13 0 0.000321379239 6286.889027 1.492842101e-22 0 0 0 0 0 5.472927292e-25 3.742682206e-11 0 0 9.886212658e-17 0 1.599494239e-06 1613.527125 0 0 0 561835.9681 2.569882067e-08 0 0 0 0 0 209565.5613 4.902055212e-19 0 0 15.99530957 0 1161.548775 93.98905458 0.0004215461647 0 0 5140.215281 0 0 0 0 1596.730552 0 0 0.03207282782 1590884.94 0 1.599261112e-10 1.015094146e-12 3.69208941e-12 0 0 0 0 0 3.8097361e-17 8.013177851e-14 0 0 31284.55498 0 4.513958535e-15 0 0 0 8.652983328e-07 0.01093814339 1.286658044 0 0 0 0 1.059145453e-05 2.31329151e-11 0 4.278854066e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 5.344364755e-09 0 0 0 0 4.012202001e-20 0 0 0 0.01029547635 0 0 0 0 0 0 +0 0 0 0 21.03536178 0 0 0 0 6.037916199e-05 0 0 0 6.491945359e-10 25823.99641 0 0 0 0 0 0 0.6872615405 2.639291553 0.0005225961458 0 2.297839982e-17 0 0 0 3.474671691e-10 0 0 783.122561 14309.00894 0 3.938072257e-13 0 0 0 0 0 0.001445084824 0.0002948669331 9.904510611 0 0 0 7.659468239e-09 0 2.436790666 0 7.112138676e-05 5.127296667e-12 0 0 7.793605287 289939.7706 0 4.567459635e-13 0.0002828389338 0 7.863865787e-24 0 0 0 2.04828481e-10 0 0 55886.17758 155752.3336 0.000452725399 0 2.947787701e-05 0.008649720447 0 0 0 2.762747398e-14 0 0 0 0 0 0 0 84.7485563 0 9313.289927 0 0 3.544823618e-07 0 0 4.573051424e-07 0 0 0 157.0596906 0 101981.5498 0 0 2.058691843e-06 0 0 8.162540892 5.065331309e-07 0 0 0 2.953436686e-12 2.177042364e-17 0.1370406122 16137.23813 0 0 0 0 807157.1757 0 1.27129711e-23 0.02487053485 87.6374455 0 0.02725113906 0.0006874492171 2565810.464 1.578789314e-05 0.00514380449 0 0 1.572271357e-14 0.03075328582 2059.170131 0 1.500783672e-12 0 822.5501942 35.99048486 0 119.3710271 3163971.941 8.584534789e-11 0 1.092566831e-06 394.7852995 355.206541 2.206122179e-09 6.230051727e-19 0 66642.52377 1250621.503 284948.1966 0 5335.320563 0 0.0006665113239 0 3.601020173 0 0 0 0 2.122020265e-16 0 0 0 0 0 0.001090750605 0.1793325816 0 0 0 1.296881525e-05 5.23470855e-12 0 1.520191115e-13 0.009510029256 3.715987679e-07 1.597170125e-06 11647.39707 0 1.200575911e-09 1.087899141e-07 5.364497471e-07 0 0 1.334379208e-08 0 8.060126168e-06 36.88356915 1.825661208e-06 0 2.291948372e-06 0 0 0 0 1.777337346 1.229328193e-27 0 0 0 0 0 17281.26068 0.0002500924842 0 0 0 0 21665.99655 0.007394618413 0 0 0 0 0.0006633755482 0 0 0 1.374696705e-10 2.903277811e-07 7.150936209e-12 5.552216188e-06 0 3.382778755e-13 0 1.498563211e-06 0 0 0.0003132119411 0 0 5.38432322e-14 0 0 0 0 0 0 0 0 0 2.412988009e-08 0 0 1278763.667 0 0 0 0 1.28054013e-05 1.766730521e-23 0 0.5873425061 7.449354324e-15 5.775623596e-17 0 0 0 0 0 0 1.047030661e-21 0 0 0 0 2.096955069e-12 0 0 0 1715.483338 0 1.689095744e-21 0 4.475106472e-06 0.0001794594435 0 0 0 0 0 8.955324884e-07 0 0 0 0 0.002149240849 0 5.192667791e-21 0 0 1361.555173 0 0 0 0 +0 631.5763638 0 3318.368326 0 0 0 0 0 1.553693588e-11 5.704812312 10.53460351 0 2476756.196 0 1305671.634 0 1.996255021e-11 0 0 0 0 0 0 1.947709848e-11 0 0.01496771168 2.51623714e-09 0 0 3.153141532e-30 0 0 0 0 0 1.646884458e-22 0 3.010644987e-06 0 0 3.321714319e-07 4.415127871e-12 8.291406344 7.692882088e-05 0 0 183429.5101 0 0 1881008.747 0 0 0 0 1.291129646e-14 2.123626173e-19 3.217571044e-15 0 0 0 0 0 0 0 3.396403115e-06 0 6.858856925 0 0 0 0 0 0 0 0 0 56.75699782 0 1711.002925 0 0 4.066608521e-19 0 1.893861523e-05 0 3.934386023e-06 1038972.583 0 67117.2529 0 0 0 1.440899178e-16 8.191374286e-11 7967.591304 0 4.27707236e-07 8.019250594e-24 0 0.2866653402 0 0 3.900818082e-20 4.230081088e-16 275172.6005 0 3.351674845e-14 45.6384132 9.285949065e-12 87221.36931 0 7.847035691e-06 0 0 6.821663083e-12 1.169417062e-17 0 0 0 0 271986.3595 5359.507251 10954.00834 3.441466119e-33 0.001085786958 0 0 1.689842876e-07 0 0 4.064318098e-09 0 2.183160862e-08 0 0 0 0 0 0 1.894149898e-09 3.469730774e-16 1.805333225e-20 0 5.048825566e-18 1.446024398e-12 1.322468323e-11 0 0 0 9.684777379e-18 0 0 0 0 0 0 0 3.014583946e-11 0 926.4878956 4379.556867 0 2.778986728e-13 0 0 0 9.87242549e-20 1.726471629e-08 496856.8849 0 0 0.004958034852 0 0 0.0001519271504 0 0 0 3.644980636e-18 0 0.01706236008 2.991479346e-07 0.1985700799 2165.751801 0 1.360829049e-09 0 1560.652923 18.04751448 0 0 0.0001642907488 1.985024774e-20 0 3209952.472 0.01051428563 8.253564417e-08 0.01370093355 0 0 0 1.912945289e-13 0 0 20.80663865 0 0 0 0 0.01023806679 379.1620126 0 0 0 0.4389694801 0 904.8059803 3.160578245e-24 2.874834347e-11 7.478296663e-26 39312.20222 0 34026.11602 0 2.66096661e-24 0 0 9.987842969e-17 0 5432.762241 0 0 0 1.742760678e-05 0 0 0 4.55544372e-09 0.009156988465 1.796636818e-11 0 7.159575176e-16 0 0 0 0 0 4.604224945e-05 0 0 0 0 0 4.698331293e-05 1.130025674e-09 0 0 0 0.08706496412 0 247.6613418 0.0002595652479 2.993645843e-07 6.663606092e-15 135.3496902 0 0 0 0 0 0 0 0 0 0 0 0 6.424431743e-06 0 0 2.159044827e-25 25204.827 1597567.172 0 4.945453206e-05 0 2.010073993 0 58.64353384 0 0 0 0 2.706785612e-24 0.3036896237 0 0 0 0 +0 0 0 0 0 0 1395557.707 0 0 0.005789976377 0 0 1.225192295e-13 0 0 25.57360893 0 0 76595.69915 732053.2263 0 1.94893574e-08 0 0 0 0 3.291517158e-09 0 0 0 0 0 0 128.6803379 52.56769767 1.972098088e-05 0 0 0 7.131008597 1082094.759 0 0 0 0 0 0 0 0 0 0 0 0 1771.932099 0 0 0 0 1.212005319 0 7.555518116e-07 1.314984127e-11 0 2.684017265e-07 2.571327194 0 0 4.245610265e-15 0.2607734297 0 30685.37635 72.30570478 0 2.724253059e-07 9.47474433e-06 39.26602906 720683.7794 2972198.803 3.132070321e-07 313791.9165 0 0 0 2.953644754e-15 3327877.612 0.0005324801613 0 44366.8869 3.189911303e-08 0 6.373425052e-21 3.929819821e-08 1.367993543e-11 0 0 0 8362.179145 3.455133252e-05 5.203055314e-06 5.464980533e-16 8.912072133e-17 0 9.304348244e-08 0 59660.42961 5.558179146e-25 0 0.0006908347337 0 5800.697792 2.06082407e-06 1.135288763e-11 0 164503.5233 0 29.19082346 30.9927362 0 0 0 0 0 0 3549481.587 0 8.199794493e-05 0 0 2.864338618e-15 1.250930236e-09 1.204792281e-07 0 0 0 8.008520479e-06 0 48.70696622 1.379170165e-11 0 0 0 0 0 3.993642282e-16 0 0.00799432195 90.93453732 2715.893568 310.9818342 0 25.5250693 0 14.48121459 4.671748509 0 6.002261886e-16 1.456380683e-18 380.1953128 0 3.951641278e-10 136914.0422 0 1970958.697 2.807664054e-06 7.613271232e-10 0 0 0 0 1.055932928e-11 0 0.01893645853 0 0 4.947927192e-06 0 0 0 1.03528859e-05 0 5.361223139e-05 0 34884.90828 293316.4819 0.02241379776 0 7.667211054e-14 0 0 0 0 0 1.737653714e-11 0 0 0 0 3.136813593e-09 0.002275067139 0.002589897653 1.701966245e-15 0.4923816165 0 0 8.259101507e-10 0 0 0 0 0 0 0 7.281565868e-12 0 0 561.4064726 3.21559313 0 0 5861.197728 0 0 0 166.8341429 0 0 0 0 1.127891348e-12 0 0 0 7.095796601e-07 0 0 0 0 0 0 0.0001806850712 0 0 0 7896.32227 576210.4574 0 0 0 0 0 0 1.639202738e-11 1.227629307e-05 378.2842721 0 0 0 0 0 0 0 0 0 3.858779541e-26 6.907845456e-12 0 0 0 0 0 0 0 0 0.0009474078576 0 206.2672314 0.0007969980735 977589.9865 7.008102304e-07 0 0 0 0 0 0 0.002955001562 0 0 0 0 0 0 0 0.0003527673807 0 0 3.859489305e-15 0 0.00123989224 0 +0 0 0 0 1.762630448e-11 0 7.125364277e-05 0 0 0 0.001246699382 0 6.408652752e-17 0 4.033341687e-12 3.755449451e-11 2.289572299e-17 0 0 0 0 0 0 6.111378043e-09 0 0 29.0180704 0 0 0 0 251555.4695 829.5468039 0 0 0 0 0 160.7896162 0 30.98858891 0 0 241.2486068 0 9.340227728e-05 0 0 0 3.184357866e-16 0 0 0 0 0 4.486137293e-07 0 0 0 0 0 2.468675593e-05 0 0 0 2.101458286e-09 0 0 97011.49301 0 2680.864258 0 1.391495955e-07 0 3.041235978e-07 3.443719221e-27 3.25809063e-08 3.813035485 504279.5336 0 0 0 403.5312251 0 9.731481139e-08 0 0 1.108180084e-09 0 670.9508478 3.564637986e-07 2.890180781e-22 1229528.76 4720421.846 0 34.89104911 10.124966 0.005171537208 0 4.746603933e-12 0 9.229642866e-09 1.900111011 0 0 0 3.72795827e-12 0 1.602766852e-05 0.1779115581 9.518382929e-15 2.548843235e-09 6.407395551e-10 0.002689177797 1.05000037e-05 0 3.509631875e-06 0 0 1036.77706 2.593251492e-12 0 6.461135315e-07 0 205680.2292 0 0 865400.3269 7.253422348e-07 0 0 0.02736754979 1.829924121e-24 4.302759579e-11 3.42006677e-19 290096.5263 3.125042069e-15 3.264209988e-20 0 0 0 0 1.65615868e-26 5.252899022e-08 0 0 0 0 2.641769055e-05 2.194803956e-13 0.001008508637 0 1.358863746e-07 2.222038499e-13 36485.13198 0.00344954657 0 0 0.08439414782 0 0 0 1.881208927e-06 0 0 0 0 0 0 9.262588576e-10 0 0 0 0 0 0 0 0 0 1.533783104e-05 0 3.669238973 0 5.370870037e-24 0 28.61844976 1.424516293 3.414677186e-05 30.28161573 0 2.649512785e-09 0 0.0001576526792 0.006099229727 0 0.1321119725 4.02027754e-13 0 0 0 2.886408938e-10 3.386259003e-06 4456.573757 0 0 68645.76391 7.145329034e-05 6.031041195e-10 1005856.745 0.0004481011078 2.803453157e-05 0 6606.226712 2.912306097e-13 0 0 0 0 0 0 0 146.451525 0 0 0 0 0 0 3.206698087e-05 0 0 0.1459327019 0 0 0 0 58.54192395 0 1.607973892e-10 0 1.361491715e-05 0 5.335031358e-06 0 0 0 0 0 0 0 0 4.885055024e-21 0 2.597513456e-22 0 0 6.88843068e-11 0.007946350183 0 4.987866624e-07 7.509618728e-12 0 0 0 0 0 0 0 4370.400855 0 2.116498392 1.329141601e-24 0 0.1149828507 2.845469301e-27 1.459500314e-12 1.114648219e-07 7.172122623e-17 0 0 0 0 0 0 0 0 0 49.92200774 0 0.0001256051673 0 0 7.966963147e-10 0 0 41571.18313 0 0 0 0 +0 0 0.002868861599 0 0.08761116589 0 0.0006140167423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4069282416 0 0 0 5.561194121 0 0 0 177.1525691 0 2.883463412 0 980280.4836 0 0 0 0 0 2.726187999e-12 4.060967488e-29 1.107399021e-10 0 3.251496077e-10 1.700204844e-07 0 0 5.70514157e-07 2.635449012e-08 0 21.37858018 0 0 0 0 30420.95934 0 0.005051969129 0 0 0 1.264563388e-08 0.0004132140424 1.914698439e-12 0 0 0 7.761798756e-09 248085.0184 0 0 0 32006.20934 0 0 0 0 0 0 0 0.3530820282 0 0.1391378102 7603.648183 0 1.457089536e-10 1.288080379e-14 1.828073051e-10 0 2.101456017e-05 0 2.066786813e-11 1.587217002e-09 0 2.825887145e-11 1053874.217 200.5274222 7.429249236 0.0001091048085 5.88453007e-29 0.0002389740684 1.101502613e-33 6.456536937e-23 0 4.357775198e-06 0 4.495408662e-16 12472.29714 0 4.032690536e-19 2.728902926e-16 948309.174 5995.183527 0 0 2.062225693e-13 4.278660491e-08 6.586406175e-06 1.172451481e-07 0 0 428733.6956 0 0 7.399124032e-18 3.124135784 0 0 0.0001169505705 0 4.462252986e-17 0 408455.6505 0 0 29214.56951 0.09431723898 1.416023522e-14 0 0.3756045158 0.6045029654 5.693076761e-14 0 1.266624605 8.983113569e-06 340.5378706 0 0 0 0 31.92649007 10933.88572 48680.76002 0 1532464.207 0 0.0001725583577 2.083678253e-05 0 0.002269176343 5.790933518e-05 0 74685.22669 0 0 0 353204.6498 0 1.400883759e-07 0 0 0 0 0 0 2.313115409e-14 298979.5249 6.322017014e-06 0 0 1.714010188e-17 0 0 9.388828761e-15 7.937860254e-07 0 6.710693928e-17 2.662102309e-09 0 0 0 1020.726263 0 0 0 944.0740048 3.655481187e-08 0 0 0 2.722213125e-06 0 0 0 0 80610.55977 5.282633521e-14 0.002028576424 1.968813311e-19 0 0 0 2097689.284 0 1.912068688e-16 1.926710987e-05 0 7.678942311e-09 0 8.588200981e-09 0 0 0 0 4.363714494e-08 0 0 1.752923592e-06 0 1.239899646e-15 7780.521177 2.203253002e-12 0 0 0 0 0.2029536634 1.174014195e-05 481098.1202 0 0 0 0 1.573948895e-08 2.726484923e-15 0 0 2.893544171e-16 0 66057.90692 5811.276074 0 0 5.375626677e-05 0 0.0006070764925 0 0 0 0 0 2.985905884e-11 0 0 0 0.0001464481721 0 2.323898398e-08 2811.902828 0 0 0 3.359367714e-09 0 0 0 0 0 0 0 0.02095564057 2.062726769e-20 0 52.04066431 0 0 0 0 0 0 0 1.616992581e-05 0 0 0 0 0.009434665226 0 3.549701915e-15 0.4001225419 +0 0 2.505330752e-11 0 0 0 0 3.19473802e-07 0 0 19977.81614 0 0 0 6435.37528 0 0.008751158246 0 0 0 0 0 0 0 0 1.149539671e-05 0 0 0 5.426527026 0 0 2.358474233e-06 24.02736809 0 1.479919536e-11 0 27709.1467 106.369801 0 0 0.07178097801 0 7.987132282e-10 2.027382953e-16 10922.64108 1.911938185 2.868941421e-14 0 0 0 0 0 0 0 6098625.555 0 3.056308064e-12 3.066999971e-14 0 6.387645019e-16 2.119345826e-14 0 0 0 30135.68552 0 0.0007555675574 373798.2571 0 0 0.009850959631 0 2.621445516e-13 1.069717444 4.689649644e-08 0 0 0 0.001332877682 1.541406655e-11 0 0 0 7.681014146e-17 327065.6077 0 0 2.211739263e-14 0 1.121034591e-05 0 0 306319.9106 0 0 0 593979.013 0 1.484205934e-11 0 0 0 131935.3151 453.2769312 0.0001480763839 1.417140094e-05 0.0216885733 2.175187389e-09 5.734144347e-12 0.01304808197 0 2.68018886e-12 477223.2791 1.505198599e-12 0 160.1706787 0 1179692.703 0 1.928096141e-06 0 0 6.467699153e-13 0 1.393280246e-17 0 0 0 0 2.5119697 1.483689916e-13 0 2.438317586 0 0.3506714555 0 0.002658200209 0 0 0 18450.50928 1.401587548e-19 672.6481121 2.351128948e-09 0 8.169520916e-11 0 0.003162903657 1620.696879 1.724449696e-12 0 0 0 0 0 0 5.954391034 3206961.697 0 7.774183057e-21 0 1.91870818e-06 0 0 0 0 258609.8885 1.454721484e-12 3.800736902e-05 2.37926242e-16 42040.81676 0 0 0 0 0 0 224835.8461 3.194306749e-17 243296.9307 2.849053028e-06 0 0.0007349259975 0 8.753733513e-20 71074.92672 1558.965891 0 1.333092603e-19 9.00050727e-06 1499.249796 0.4199109352 285847.4529 3.579664259e-16 0 0 0 4.461574382e-13 0 0 9.693829768e-08 0 0 27.47511216 7.985052031e-23 0 0 0.01750154878 0 92132.44956 1.118728042e-12 983111.4278 0 0.0001555296476 80.43278252 0 0 22956.84413 0 0 1048934.506 1.116561157e-08 0 0 0 0.3726205 0 0 2613343.174 0 1.357356562e-15 0 190605.5886 0 0 0 1216430.898 1157.697948 0 0 1.357151919e-08 0 0 6.485712187e-15 0 0.7880420443 212.2367198 0 0 0 0 3.72913265e-11 0 0 1.611179657e-20 0 0 1.243645116e-12 0 4.27815867 0 0 95903.57096 0 0 0 1902.774399 4297.633771 176.2623993 0 0 3.365982575e-14 0 0 0 0 0 0 8.267643608e-12 0 0 0 0 0 0.001569363753 0 0 0 1.156331855e-13 0 2.968639125e-12 0 6.176579312e-06 0 0 5585561.639 0.8211778176 1.741993555e-15 0 +25881.50655 0.0001959389559 0 0 6711.338818 0 0 0 0 3.501460041e-08 7.755855493e-14 0 0 3.144179117e-06 7.118991638e-06 0 0 2.994439695e-08 0 0 0 9.524569891e-13 0 0 0 0 0 0 5.104143783e-15 0 0 0 3.955535457e-13 80681.31397 0.0001479379377 1.808417902 0 0 8.580968059e-22 0 0 0 0 1.318653693e-07 4.251332857e-11 0 0 0 0 0 0 0 0 0.000566843555 6.59269981e-05 4.770192994e-27 6.853834591e-25 0 0 0 1.79918811e-07 10906.27112 0 0 0 0 0 0 0 0 0 0.001213404809 2.103750018e-07 0 0 11382.87126 5.874737656e-14 0.001178977422 0 202615.2663 2.766351255e-10 3.294989284e-11 0.0001587563553 0.001222789016 0 5.619477065e-05 0 1.220679974e-10 0.00014609767 8.257475745e-06 0.07051185019 5.837479184 2.31168311e-13 1165501.487 2.066372392e-05 3.092079076e-07 9.355116801e-05 2100.401469 0 0.004024878129 0 0 5.550495177 2.390962533e-08 1.052100046e-12 0 1.020809895e-05 125386.9474 0 0 0.0002502985154 0 10340.19539 0 23.7177632 0 0 0 20819.22342 3.694453779e-14 0 9.707838078e-05 0 0 813850.5688 0 115197.41 2.829628895e-10 1.532766514e-07 1.652113424e-06 0 103.4475734 0 1427.925906 2.168117957e-10 0 0 4.870229635e-31 1.548903447e-09 0 0.1386288749 1.688541452e-16 0.7800871412 17421.43878 0 0 766.947433 10.43617418 62267.48169 0 0 0 0 0.002949760809 0 0 0 0 0 0 0 0.01035650583 0 1.016579756e-13 2186.22817 0 20051.02436 1.297435286e-06 0 0 2.700680686e-13 55142.25936 0 1004.76002 0 0 30.87753989 4.816022391e-12 0 1.661892656e-05 0.0001623999346 97247.59099 4.809258551e-09 2.15918881e-09 0 0 0 0 0 0 0 0 0 0 21639.88671 0 0 0 7.5484291e-12 0 0 1.830298274e-10 3.265911387e-14 146746.1878 1.807635712e-22 0 0 78027.24522 0 23.83902772 0 0 0 0 0 1.847777388e-06 0 0 0 3.50792084e-16 0 0 0 2.671142751e-07 1.657213821e-09 716343.8365 0 0 7.202476674e-15 0 2.992468852e-10 0 55351.50374 0 0 0 0 0 0 0 32661.58944 1.723278219e-12 618159.0729 0 3180.278592 0 0 0 0.0003980672646 0 0 0 0 1.225681672e-11 0 2406583.838 0 0 0 0 0 5.984028996e-06 219898.2719 0 0 0.1186930725 0 0 0 0 2.205219302e-15 0 2.707736629e-09 0 1.643203385e-09 0 0 6.999639947e-37 0 0 0 0 2903.965429 0 1.287397933e-14 1.053648153e-22 0.3775467346 0 0 0 0 9.382683953e-19 1.712370279e-21 0 0 0 7711.588042 0 1.164179126e-09 0 +0 0 0 0 0 0 0 0 0 1.240795213e-07 0 0 0 8.650156541e-06 0 0 0 0 0 0 1.866440292e-23 0 0 0.0002985181489 0 0 0 0 0 1.416901468e-09 0 0 1.715999139 0 0 0 1.422016962e-12 39078.16207 1.07503508e-10 0 9.166083122e-07 0 4.818018926e-12 0 0 5.003630324e-08 0 0 7.033648266e-08 0 0 5.8763463e-08 6.032939617e-11 0 92.11588605 0 5.566517966e-07 0 6.482211008e-20 0 0 0 0 0 0 3.785517505e-13 1.524251217e-08 0 8.994496398e-07 0 0 1.036325432e-11 0 0 155.6846449 0 26651.93365 0 0 0 0 2.964344783e-10 0 1213974.068 0 0 0 8.624306344e-10 0 9.106438175e-08 0 0 0 0 4.304951674e-22 0 0 6.051797267e-15 0 2.401571918e-12 0.002884405685 0 4.872091258e-12 0 0 6.86221538e-07 0 2.930030894e-05 263.1638984 0 348.116564 0 0 0 0 2.462231195e-07 3.254529561e-12 2.164950858e-13 0 3.076674295e-21 0 1.104794559e-07 0 0 130541.1369 0 4.133491584e-10 0.0003025728139 0 0.4699720913 0 107431.9843 4.015133659e-15 109.1493569 24.7501737 0 1.011108351e-09 0 4.030338623e-20 0.002858931643 1.343687577e-06 47336.08803 0 28106.35549 10927.47774 1.161986119e-11 0 0 0 0 0 0.1221910197 0.02149294102 5.752930748e-11 33487.74618 0 0.0001064466371 0 1.886232664e-06 1.956239379e-15 0 5366.401713 1.741305239e-06 4.524687518e-18 0 0 0 0 0 5.229040387e-24 0 2385.999289 4.003501638e-07 1.134869993e-30 585357.4374 20.90251876 0.2445948311 1.788532353e-06 6.199645624e-17 0.03501661392 3.99642743e-06 2010005.359 0 0 0 8.348035495e-15 0 0.0004654681179 3153.307846 2.255200499e-09 0 0 0 0 3.395349688e-22 0 0 0 1.521433405e-23 0 108367.2922 0 0 0 0 0 3.973963271e-24 86560.80107 0 2.777476956e-08 0 628219.4744 3.934968622 0.002462594911 0 6874.7382 5.821719899e-08 443.9409071 9.428843018e-15 0.02431129463 0 0 0 0 0.002905484696 0 0 0 16966.69816 0 0 0 9.946119278e-13 0 0.0006203162756 0 1.985411781e-08 2.930728476e-05 0 0 0 0.1628685535 0 0 2.867847919e-10 0 3.947953954e-12 1.805155677e-06 3.472447576e-05 2.05370672e-06 0 0.0001282611635 0 0 0 4.802522872e-16 0 0.0001050123378 9.6635334e-13 5.791852268e-14 1.990959602e-09 2469687.489 0 0 0 1.532223793e-09 2.150575139e-11 0.001337694103 0 0 0.01152029878 221285.3112 0 21162.01215 1.043075271e-05 0 0 7.858601115e-08 0 0 0 0 687.0736968 1.799257344e-05 1531181.104 0 0 0 0 3.232315551e-08 0 16472.45648 0 630811.6966 0 3122.801581 0 0 3.396575173e-10 0 +0 0 0.0542034686 0 0.125454701 0.2749157522 0.1920075877 0 0 3492.277113 0 0 2.539523008e-22 0 6.973922085e-16 0.6392407424 0 0 0 0 0 1071.608754 0 0 83737.81725 0.0151532328 0 0 2.471571878e-05 716746.4886 2.244846342e-07 0 0 1.246589427e-13 0 0 0 0 6.923604946e-28 2.726055242e-10 0 0 371.3568932 0 4.36871406e-16 1.988868607e-07 0.0001080901671 0 0 0 8.131381038e-12 0 0 0 0 0.0001012694507 0 0 1.983226874 0 4.677985786e-10 2.308995353e-05 0 0 0 50255.88629 2.738615696e-06 0 0 21.21908037 4.290673785e-07 448049.0668 7.624403534e-05 0 0 0 2.057557591e-10 0 0 0 6.546727389e-15 0 0 0.004786782088 0 0 3.374698282e-07 0 0 4008.633861 3.97748363e-07 0 0 0 3.582155055e-10 0 0 11113.32208 83.09036568 1.276550166e-12 1.255686986e-09 1.629362991e-13 0 0 0 659787.0262 1.573005864e-05 4.957665932e-16 0 7.2869602e-17 4.373126463 4.680404954e-10 0 0 0 0 0 0 0 7.428886481e-08 1.379225713e-06 4.920298981e-06 0 0 0 0 0.000955711917 8.765062241e-07 0 0 8.904487328e-05 10428.20482 0 0 222856.184 1.059338992e-14 0 1.306218236e-14 1382.691384 0.008669128554 0 0 6.965367636e-05 0 6.171834563e-13 0 0 0.001220131668 1.596929468e-13 0 3.668299286e-07 0 0 325234.7595 2846.004449 0 62915.51794 3.928430006e-15 0 0 0 0 0 0 0 0 0 0 1.066083413e-15 0 4.766380494e-08 0 0 0.01755554988 29024.04 61058.17719 1.095107893e-10 0 0 8.289516495e-06 460.9966919 0 0 0 0 2.574250382e-07 138.5849764 0.02270270915 0 3.647615557e-10 1.322290737e-09 0.002681520716 9630.134237 1.067464223e-14 0 0 7.532899326e-10 0 0 0 502.7126843 0 0 0 0.001291550609 3.093702589e-05 0 5.064729742e-16 1.359826277e-29 0 0 0 0 0 164.5130626 0 678914.5584 0 0 5.341610551e-11 0 0 398861.7017 0 0 0 0 0 2.480080204e-17 0 0.4865531596 0 0 4.773397793e-05 3.394947276e-12 0 0 0.001265037499 0 4.992407652e-10 356.7279429 0 0 1.864477029e-10 7.64026778e-13 0 0 0 8.478804416e-23 0 47.97521424 0 8.962424083e-10 0 26616.20757 0 9.89030295e-06 0 0 0 0 0 0 1.638025826e-14 2586459.886 0 0 0 1813.167137 4.567775166e-14 429.2177638 0 2.283362984e-17 0 0 3.969562249e-08 7.978701584e-05 0 0 2.536582435e-17 0 0 0 0 5.283630812e-14 0 10855.13617 0 9.864883261e-14 0 0.003792330359 0 0 0 9.771408336e-13 0 0 0 0 0 +3.95243589e-13 0 0 0 0 0 0 0 0 3.428957768e-08 0 0 0.01521907147 0 0 7516.551659 1.515376122e-17 8.090262592e-10 0 0 0 0 0.008500278603 0 0 0 2.955507111e-11 0 0 0 0 0.0006821327955 0 3.128692911e-10 0 0.4216231827 3.209568865e-09 0 0 1.982829452e-15 0 609248.0472 0 0 24408.10887 0.01789064337 0 0 0 3.454692956e-07 0 0 0 0 0 0 0 0 0 0 0 6.260662767e-05 0 1.721861669e-23 0 2.91505728e-06 0 1.043260649e-12 0 2.317480186e-11 2202.541455 0 1.97170715e-11 4.118783702e-11 0 9.988354134 0 0 0 0 0 0 1193271.439 4.696529307e-16 0 3.80422983e-25 0 6.054618779e-09 0 3.103240786e-06 4903.338299 0 1.529600927e-06 7.893375631e-19 0 0.004173205068 0 0 1.119837892e-06 0 5.566900988e-21 360358.7205 0.07379486537 0 0 6.078458402e-16 0 2.352401323e-10 1.201069142e-16 6.62839988e-16 0 1.774792576e-14 4.016175816e-08 0 0 19956.91635 0 0 0 1.487190056e-12 0 0 0.2639982471 1775.376138 35169.71311 299805.1204 6124.584249 0 0 0 4.037059225e-11 1.022802762e-23 0.0001097077375 14.33313991 1.526055573e-10 1.149664452 0 0 0 1.743184595e-24 1736698.144 5.254625198e-13 1.510867833e-18 0 0 1.831888326e-14 7.044560349e-21 3.304280706e-15 1.504334909e-10 2.498056818e-11 1.015886356e-16 3.40902961e-09 0 5.869966069e-06 1.397103644e-17 0.7772893408 5.586822154e-09 0 0 0 211496.3597 0 2.029822808e-06 15588.27952 0 0 0 0 0 29335.43591 78.70117045 0 1.237034597e-18 5.186101761e-10 91662.81916 31190.49138 1.637658731e-08 0 7.677590922e-06 325.4697307 3.364633079e-23 0 0 0 0 80725.23382 3703.20925 4.833115079e-14 3.457981886e-15 8.228519416e-09 0 514974.9448 0 0 0 0.0001492412413 1.490089769e-06 0 0 0.0001178061765 0 0.0004341199637 1.405317186e-06 4.012292323e-08 0 1.550759251e-08 0 0 0 0 2.001490945e-10 0 0.0004841997025 0 0 0.0005908775351 2.835123197e-08 0.6902336636 0 0 0 0 0 1.965686559e-14 0 0 1.418320667e-14 0.1289044309 0.4469236178 0 0 3937.871875 0 0 2.640969004e-06 0.1504104378 0 0 0 1.01874905e-25 0 0 0 0 3.116495286 0 1.375215627e-11 0 0 0 2.486988068e-06 0 0 277475.3849 0 0 0 1.808623171e-06 8159.627074 0 0 0 0 0 0 1.355656731e-27 0 2.124268752e-10 0 1.949336606e-06 0 0 0 0 1226.521172 0 0 947.3233523 0 0 0 0 0 0 0 0 0 5.642464027e-11 10375.94985 0 1.608754298e-23 0 0 0.1398102868 0 1.150038691 0 0 0 0 +1.168532995e-18 0 0 1349.870473 0 8.21891608e-13 0 0 0 0 0 0 0 0 0 0.007487276531 0 0 0 0 0.02852463681 0 1.101353397e-12 0 2291.606038 0.3978851367 0 62400.13742 0 0 0.005792614885 0 0 0 0 0 0 0 5.330278149e-11 0 0 0 1.449502779e-09 6.248907005e-08 2.917735414e-10 202.3919238 0 2.921768818e-06 0 0 0 1.808544869e-10 4.042456537e-09 0 0 0 166996.8025 68270.06376 0.004770679499 0 0 2.977496552e-08 1.534872978e-07 0 0 0 0 0.02858462748 0 0 5.140202607e-05 8.114075871e-17 61.76839572 0 0 0 0 1.057059793e-10 22.72976688 2.318187577e-07 0 0 0 0 403766.5032 0.0008622491925 2.548004037e-08 0 0 0 8.898482298e-11 0 6.672955825e-12 0 0 0 341348.2165 666887.2371 5.92358216e-11 0 0 0 0 0 2.798010646e-08 0 1702240.192 0 0 0 0 0 0 2.70782211e-08 0 0 0 3.826820141e-05 5.020457154 212851.9276 6978.601299 7.454977945e-10 0 85.03445589 0 2.203710497e-06 9.153127886e-08 22842.33165 0 4.322928351e-11 2.742490034e-07 4.828190921e-09 3617324.84 0 6617.188451 0.0002029468597 0 1.484172953e-09 0.004120529019 2455.538266 4.093207755e-05 1.492131795e-21 0 0 3.244863828e-05 0 0 0 0 0 0 0 5.947009699e-09 53441.76394 0 0 7.427335772e-12 6.04831082e-17 2.345402952e-10 0 0 2.383332601e-05 0 1.499905897e-17 0 0 3013943.977 1.378496624 8.525118237e-09 0 247.0188842 13021.0367 5.783946824e-24 0 2.024615246e-11 5.638977378e-16 0 3.109989325e-17 1.241412118e-18 8.540366744e-17 8881.090661 3.234945026e-09 0 1.0552085e-14 4.099526649e-09 0.033633132 0 5.432589609e-06 0 0 0 0 0 0 0 0 0.03487252323 3.293689534e-14 0 0 323.0081072 0 0 1.040531549e-12 2.855279301e-12 0 0 2.661794178e-10 0 0 8.730575611e-09 7013.85095 0 0 0 0 0 0 2.883827985e-13 0 231.950135 295375.051 1.027737274e-08 0.3465511969 0 0 0 1.996135545e-11 0 0 5.018630154e-10 4.721877971e-09 0 0 0 0 626718.3602 22.40717713 11766.36662 0 1246585.897 21245.58086 0 0 0 0 0 0 5846.047114 8.867753268e-06 0 0 0.1137415131 0 0 2.333927548e-10 0 1.552303483e-08 0 0 0 0 1.029208148e-10 0 0 0 0.07511600064 0 0 0 0 0.002324018718 0 0 8.666627867e-13 0 0 5.322974999e-05 0 0 163.5057019 0 0 1444.95745 0 0 0 18114.96501 0.005918696951 0 0 1.208374149 0 0 0 0 0 0 6.572435143e-11 0 +0 0 0 0 0 2.637993847e-14 1.279733697 0 0 0 1.370332252e-17 0 0 0 0 0 0.00256175327 12947.51785 151327.051 0 0 1.061071498e-06 9.418087583e-26 1.085624593e-10 0 0 0 1949.899999 36.51016874 5.640862517e-12 0 6.663552458e-09 0 0 0 0 0 0 7.241153475e-12 0 0 0 5.369445655e-06 0.06840792108 7.821354578e-12 0 0.8212904039 0 55.94761941 0 0 0 0 0 8.608900275e-15 0 0 1.74348728e-09 5.734493998e-07 0 4.192118274e-15 47445.21507 0 2.363615557e-12 0 0 0 4.971520197e-15 3.862323861e-20 15.26261108 0.2733955467 0 0 1.011221481 3.643308474e-18 0 0 456354.3389 0 175.2658622 0.0002395005108 3.599512683e-10 170867.8054 0 21606.3042 0 0 108057.8932 0 0 0 0 6.467306586e-14 0 3.142580947e-06 0 3322203.4 0 16.46866791 2.315560657e-09 0 0 0 1.28177258e-09 0 284404.5638 0.1616734735 0 0.00109106821 0.1290332423 0.01482476297 0 8.410390841e-14 0.1050063745 6.608113663e-09 1.56883692e-06 0 1.117789063e-31 0 605750.5642 0 6250.662302 4.816154134e-08 0.009648728024 3.679579631e-06 0.0009678596877 5.94937633e-10 0 0 4.574057956e-21 0.0208547691 64278.70905 349150.523 254.8332898 8.563852386e-13 0 0.4003525893 0 0.4608121292 0.0003146670695 0.0001515443677 0 0 3.569182747e-12 7.091946745e-07 5.513066037e-05 8.685265674e-06 2.210440731 46200.0278 2.679999264e-08 0 1.197345782e-11 0.07172036171 0.0005236223898 3.30315535e-16 1.215399322e-14 0 0 0 0 0 5.820532427e-25 29944.90036 0.03310749468 9.01407263e-05 3.164607077e-06 0 1.990680569e-14 1.465266433e-16 2.023818141e-09 0 0 0.0001187177534 0 0 4.324532125e-05 138931.6183 89952.0693 0 0.002143035551 0 0 0 8.931269634e-13 0 0.173819077 0 0 4.756032707e-07 0 3363.296844 101866.9417 0 1.090566605e-06 4.085483786e-13 1.158579682e-10 0 0 6.629024279 0 0 1.232366316e-12 6201.922407 0 0 0 577.503771 179209.8637 0 0 0 8.395703619e-10 76.74473973 1.484869711 3.325672967e-21 0 4.848135552e-11 17712.47059 0 0 7.981310933 0 0.000196961011 0 0 4.206415914e-06 0 1.153875453e-20 0 0 0.0003998487698 0 5.263457126 3.960895185e-07 0 0 0 0 1.099180632e-17 0 1.330362836e-09 0 0.4500796648 0 0 0 0 4.432907835e-11 0 0 0 0 0 21297.26719 7.270201575e-08 1.758588562e-34 0 0 0 0 0 0 0 1.035364112e-10 0 0 0 0 0 0 0 47.21856049 0 0 0 0 0 1.856595195e-12 0 0 0 1220.152815 0 0 669554.7462 587.0241991 0 8797.388966 0 0 0 0 1.161860776 0 0 3.536535653e-20 0 0 1.843717798e-06 0 +3.582362303e-16 4152.413066 9.545292414 0.04726283198 0 0 0 0 10.1448319 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0123176072 401457.4654 0 0 1.729400143e-09 0 0 0 3419.571049 0 1.231872254e-17 2508.958632 1.621812935e-19 3.217810158e-05 8.035779706 0 0 1.195976226e-15 3.228972136e-11 0.0209427752 3.527215613e-11 0 1.833372802e-13 0 0 0 0 1.05009637e-08 0 0 2.697534137e-08 5.976752522e-10 5.451161143e-07 140661.3405 0 0 0 0 0 0 0 0 2.784445164e-05 0 0 0.0007009880858 2.439031588e-17 0 0.4623348098 0 0 0 77.42045658 9.683403828e-06 1.196818709e-05 0 5.444971642e-07 0 515.5451668 78.55007985 0 1.487691225e-14 1.670980098e-13 0 72.33144205 0 0 0 0.004402562408 7.007230308e-18 8.386430006e-08 0 2.00445635e-13 0 394.5774091 8.970710448e-17 0 0 0 0 0 16576.39365 0 0.009301593292 0.03741791079 1.79326006e-06 222106.3974 9.69621329e-13 329.635965 1.421735649e-29 5.457806431e-19 0 15241.96728 0 2.042987889e-08 3.436401913e-09 0 2.242025166e-12 2069.612984 5.765606482e-16 2.188212341e-07 6.851371408e-10 5.003552455e-08 0 0 0 0 120840.2307 0 8.661255572e-10 3631491.146 158057.2512 0 0 0 4.694892099e-17 74095.6364 0 0 6.327826641 63345.98067 0 79250.08907 0 129.9318876 0.0003153622427 0.0001387741206 10171.2789 0 4.042943266e-09 0 0.0001177122717 0 246718.4699 0 1589.573816 0 2.098157078e-07 0 0 0 0 0 0 0 0 0 0 241461.5613 0 1.291796531e-11 0 1.322399635e-06 11.64900927 0 5.929861566e-06 0 0 10.89730811 0 0 0 0 3.409474269e-05 1980.108058 0 8.450206471e-08 5767.073204 1.411102174e-12 0 0 0 0.03461888821 0 0 0 1059.14485 0 0 0 0 0.00706710522 1306699.218 3.56660802e-07 9.98525492e-07 1.477100729 0 1.473693823e-05 0 0.0001029595883 4.146996276 2.164700295e-06 0 2.527488184e-08 0 6.906807045e-17 0 0 0 0.725360833 2846.329372 0 0 2.775359586e-09 0 0 0 41.53343056 5.745288829e-11 0 0 0 0 0 1.401489085e-10 0 0 0 0 1.174790659 1.173071071e-11 0 0 0 0 0 0 0 0 0 87142.94622 0 0 1.037675459e-25 0 0 0 0 0 0 0 6.817675573e-14 0 0 0 3.299438022e-10 0 0 76975.78029 4.406059113e-06 0 0 0 1.290272256e-13 0 0 0.4458485031 0 0 0 0 1.099503093e-09 1237816.04 464821.2446 0 8.773176138e-06 0 0 0 0.1486572263 0 0 0 0 0 0 0 6.568035829e-31 +0 0 45.51384508 0 0 0 0 0 0 0 1.508394108e-15 0 1.090816686e-28 8.197464409e-06 0 0 0 3.869723709e-13 0 0 3.747884581e-14 4.289030841e-10 0 2.121737388e-23 0 0 0 2.444050022e-24 8056.191176 0 0.1294733094 45132.39611 4.690825139e-16 5.895818476e-14 0 0 0 0 0 1.39633024e-10 0 1.488709201e-15 4.572734889e-05 0 0 770.0130132 0 120131.2999 0 9.09651272e-16 4.779466892e-20 0 0 6.734275061e-16 0.0007774533852 0 0 0 9.063044474e-15 1.730704043e-11 0 6.760729164e-07 0 0 0 0 0 0 7.48309204e-06 4.244266177e-05 0 2.939798338e-12 0 0 0 0 0 1.955442247e-06 1448.81611 1.545799857e-10 0 0 391211.4192 3.700964191e-09 0 1.177118168e-14 0 1.36814172e-06 0.2170030576 5.898416276e-05 1.75800588e-05 0 0 0 0 4753323.989 5.326792389e-05 3.106702904 0 0 78.4564143 554580.788 1.342802015e-09 0.0008941706219 1934.65829 2.860182774e-06 0 0 7.930960053e-27 0 2.19143302e-06 9.69834799e-11 0 2.274654616e-08 0 16580.29336 5.678029985e-18 0.1551880973 0 2245194.222 0 0.01212435452 5.343174653e-07 0 11.68689424 0 7.389013623e-07 1249.226426 4.984602399e-07 0 0 0 2.979180003e-15 114146.6814 3.958076779e-10 0 0 0 0 0.08617726707 75.47694406 0.0003602457972 0.02472780612 575.9220252 0.6584350079 4.943748201e-27 4884.942688 2059021.88 2.827156515e-14 9.927028131e-12 10858.03654 5.611908974e-26 0 1.846630779e-07 0 1.285821405e-18 0 0 0.001754927725 2.987529328e-12 0 3.602457216 6.778059335e-21 0 0 0 0 3.975980574e-18 0 0 0 2.259274038e-07 0 0 57590.07758 0 5.214997168e-08 1.314105489e-06 0 0.08170892421 0 0 0.008515351217 9.369269419e-12 8.796794746e-09 1303339.646 4.683876529e-09 2.736023794e-24 0 0 0 215070.6773 0.0007317502099 0 1.231416845e-07 0 0 0.3623194832 0 2.447913516e-06 0 8.26616e-14 0 0 0 0 0 0 1.21278628e-19 2.881844447e-15 0 4.677246525e-22 0 0 8.797084477e-06 8.027406546e-21 0 182.4187418 1.148240734e-07 0 1.153269891e-09 0 2.637634414e-08 0 2.121420744e-16 0 0 0 0 211.6649246 0 3.325047588e-08 1184.374201 0 0 0 2.100262352e-14 2.991349614e-06 0 4.977440124e-06 0 0 2939204.415 0 0 1.521199902e-13 0 0 0 0 0 0 0 0 5.174201839e-28 0 0 0 0 142797.5451 8.952120914e-10 0 0 0.000308750584 0 3.923857825e-12 0.001069802068 0 0 1.363134891 0 0 1.553796411e-10 0 0 0 0.1131421136 0 0 0 0 0 2.411740656e-07 0 0 3294.778846 0.2588459976 77.57289268 0 0 0 0.06494608232 0 0 0 0 0 290009.2213 0 0 +0.000577373966 277360.1812 0.0005763445631 8.542397821e-06 5.081417242e-10 0 0 0 3.32577796e-22 3.340195339e-10 3.868174398e-10 3.519573089e-22 0 2.502318692e-30 836.6237158 0 0 0 9.091715337e-13 0 1458.478106 0.0001020459875 2.155066691e-22 0 0 0 0 1.734097215e-10 0 0 5428.032713 0 3.967605637e-10 0 0 0 3.077234713e-10 4.356278186 6.382625541e-07 0 0 0 0 0 13551.96053 1.206894235e-05 0 8.027773295e-05 5.758378247e-09 0 70.56049128 0 0 0 0 7.22325803e-08 2121741.81 1.316488476e-11 0 4.378360298e-19 0 7.575669438e-10 0 3631.691842 0 0 12714.13085 0 0 0 218349.8804 0 0 0 0.004801455412 0 0 0 0 0 0 35602.15366 1.400455717e-05 4.193932282e-06 0 9.256313768e-12 0 0 210.8275425 0 2.517537976e-12 442.2329599 0 9.4509985e-07 0.08192392812 42352.87709 5.170858882e-09 0 0 517.1825917 1038081.156 8.151292298e-05 557.2941693 2.957603606e-12 0 28.70417177 5.38466971e-07 0 0 3.719112306e-10 0 0.0006947898205 0 0 1837.32838 0 0 6.812912898e-13 1.520731273e-08 2.120310655e-07 0 5.808781863e-05 0 0 0 27.4979019 0 5.884090704e-09 0.0207999058 0 2812.189481 0 0 0 1.031273726e-20 0 3116.187505 0 0.0003416976639 0 0 0 0 0 0 0 49330.80373 2.741974795e-12 2.530471158e-10 0 5.643340104 85505.49894 0 352221.6696 0 0 0 1.126219673e-18 1.107212247e-05 0.000658638032 0 0 0 0 4.794542103e-09 3.621130898e-12 1.39485765e-09 2.001181513e-10 0.06480669553 8.785715961e-13 0 0 0.06099437396 0 2.073394402e-09 0.009740088214 7.24758087e-06 0 0 0 295.0415744 0 2.043013473e-10 2.94310612e-12 0.0005033809015 0 0 0.0001901282536 27282.82557 1.017608011e-08 0 0 4.36138398e-05 0 0 9.200139226e-15 0 0 0 0.03552343504 0 2836.542574 241696.6111 0 0 0 3.754194306e-11 0 0 0 6.979815146e-19 0 1.913232573 5.203995312e-05 8.013457337e-12 0 0 2.133451664e-14 0.0002724383339 0 5.865076831e-06 0 2.66456717e-10 1.167726427e-27 0 0 0 0.009314375441 0 2.544141929e-14 0.5085322773 0 3.725119311e-19 31464.03407 0 3278430.381 0 0 0 0 0 0 0 1.35312055e-09 0 0 0 0 0 18.07447919 1276908.973 0 58519.89992 0 0 54407.97099 0 0 0.0003123850865 0.0002940324272 0 4.680189685e-19 6.809431291e-06 2.37594567e-14 2180.388601 0 0 0 0 0 0 0 0 0 1.282954364e-07 0 0 0 0 0 0 0 0 2.739962545e-22 9.047330374e-05 0 0 30.58540827 0 410501.5718 0 0 3371.585129 0.5243501563 0 0 0 0 0.05813563216 0 +0 292.3161225 0.005015115096 0 2.632294088e-12 0 0 7.508420695e-05 0.002611339467 2599.519125 0 0 0 4.345671135e-23 0 0 0 2321652.525 0 0 8.07514576e-13 0 0 0.0004198039256 0 0.1292141298 27708.40184 0 0 0 0 82.6533206 0 6.898187594e-16 5.915739478e-14 23647.02077 6.178733291e-10 30.50751747 0 0 2.616231542e-05 0 0 0 0 0 0 9.744621054 0 5.934687448e-07 8.484530817e-08 0 41212.48863 0 0 6.873478216e-05 73981.53519 0 1.723630074e-10 0 0 3.969426612e-06 0 0 1.65444518e-10 6.764276692e-05 0.0001035644376 5.542345652e-07 0 5.520162976e-17 3306522.478 9.036037031e-12 4.772624192e-11 0 5.916139403e-05 0 9.240721167e-07 0 0 2.846259597e-06 1.283809125e-09 2.930642852e-17 0.000596728146 0 0 0 0 4.956367264e-10 0 0 0 2264.221158 0 0 56.43608905 25727.65579 0.05774799623 9.491825455e-24 0 0 0 0 1.368228149e-07 0 0 7.046030148e-15 449672.3254 0 0 5.584621351e-11 0 1.778059173e-05 0 0 0 0 0 0 0 0 0.3507620708 28.24852059 2.111493635e-07 9.750944966e-12 1763.756439 0 0 0 0 5.464411438e-12 0.01994509337 4.176434405e-13 0 0.0001911180915 0 6.926503585e-18 1.175993682 2674.296626 0 0 3.110441787e-23 0 739363.3193 0 0 0 4.091696047e-05 17.15046551 3581.27335 0 5.980522893e-35 360.9503233 0 0 1.851707834e-05 24344.17445 0 7.920972466e-13 804.8483322 0.002375319171 0 19.52408205 9.008647167e-06 3911.457254 0 0 0 1.167570692e-05 1.499276796e-06 334076.8549 0 0 0 0 0 7.952762357e-05 0 24479.16377 98843.02552 0 0 0 3.943203083e-12 0 7.989643712e-15 0 1.10562697 0 0 0 0.0003098560436 3.572149345e-10 5.798933078e-07 1303.8261 0.6512007864 3.127649427e-08 6077.395916 0 1.500272146 0.1310101881 1.635986002e-09 0 1.471743577e-06 0 0 0 0 0 6.220374149e-18 1.166011656 2.206689038e-10 0 1.509499602e-05 0 0 67867.47957 0 5.367327817e-07 0 3.429002057e-11 0 3.978432824e-11 1071086.039 0 2.191806789e-12 0 111679.0758 0 0 0 0 0 2.526392407e-09 0 0 0 0 0 0 8.069562362e-05 427859.3399 3.168459257e-14 0 0 0 0 0 0 0 0 0 0 3.000420344e-14 0 0 0 0 0 0 0 0 0 0 0 2413.170861 0.0002186258732 0 0 0 0 0.002714635044 0 5136.85986 0 0 6.482317237e-24 1.097760411e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.434916741e-07 0 0 0 0.1506360671 0 0 1.416516677e-12 +154.5745183 0 0 0 8.060771117e-16 0 3.155203734e-09 0 0 0 12.2251224 0 0 3.612873479e-22 0 0 0 0 0 3.924240144 0 0 0 0 9.604803958e-15 0 0.002136858959 0 0.0001658962042 0 0 1.144629219e-21 0.1091098101 0 27.02529725 0 0 75048.65586 0 1.511413853e-12 0.7544239739 0 57.53466737 63.11446153 0 1.251872849e-05 0.3142536807 0 0 197525.6057 0 0 0 3.477713917e-11 100.0044289 0 0 9.839031462e-10 0 0 2.704490027e-13 0 100.8977856 1.969203815 2206217.546 2.271839664e-12 0 82214.75086 6.344762299e-07 0 0 0.0001698419974 0.00703361531 7.299556363e-11 1.322666368e-14 0 0 2.496873315 0.03621775095 0 5321.439218 2.34176497e-09 0 0 0 0 3.047250104e-17 165232.1802 0 0 0 1.886405484 9.463241225e-06 3.885353948 0 1518690.506 0 7.525281585e-07 0 180966.6776 0 1.303506427e-16 0 2.251505097e-08 1.250646371e-11 1956.003677 0 75903.50397 0 0 2.351787868 9.064233338e-17 0 0 33.68300677 8.143447601e-17 6.865912665e-15 1.271237223e-20 0 176332.3383 0 0 0.004253213992 0 556742.1586 2.296484634e-10 0 1.269471414e-05 0 1.159515579e-21 0 8.615654026e-22 3.512026381e-22 1.66969599e-10 1.837274083e-11 25.39582396 0.0005450052325 0 117036.9884 3.135164645e-08 1.489835068e-08 0 0 128270.3482 0 0 9325.320759 0 0 2.298858372e-15 0 0 0 8.477434742 0 0 219558.1168 0 10.63658294 2236.284896 1.430153522e-15 0 12235.5801 0 0 2.326485158e-12 0.0001343648946 0.003585050308 0 0 228701.0514 6.418760359 0 133.2585193 5.532553384e-05 0.004259004287 0 1.058045363e-10 0.0008510234042 0.0001214539481 10321.31139 0 0 14939.51582 45129.70569 0 0 0 0 0.001371907678 0 0 2.19343493e-14 0.0007422049597 0 0 2.160134383e-08 0 0.8282416325 0 1.192704909e-11 2.311256828e-09 1436.076818 0 0 0 7.793290095e-10 0.1248249402 0 2.358039311e-13 0 0 0 6.287777113e-16 0 10790.11003 2.129969772e-13 0 4.708203653 0 0 0.2431997378 0.01032119095 0 0 0 0 0 1.669884884e-11 0 0 0 0.001251883871 0 1.541465468e-13 0 0 2.443804315e-09 0 12802.84415 0 1022.724922 0 0 0 671519.58 0 0 0 0.4381181138 8.300202541e-08 125.0773133 0 0 0 330.6327046 0.4431172689 0 0 567893.4528 0 0 1.101918381e-07 0 0 5.666458756e-11 0 33935.32503 2254.226829 0 0 804.0196802 0 0 0 0 5.218946371e-05 0 1.943559098e-12 0 0 0 1.392119666e-25 2.998431497e-07 0 2.245867492e-05 0 56780.88215 0 0 1.308953125e-21 0 0 0 0 0 0 1.201894122e-09 0 14.06331226 +0 3.521444118e-11 0 0 1.913682315e-11 0.0007627551068 0.03886000764 0 0 0 0 0 17394.52775 0 0 0 1.940291572e-14 0 0 0 2.775517981e-14 5.285174895e-14 0 8.152527699e-26 0 0 159.7907005 0 0 3.738295005e-23 1.75918817e-08 0 0 0 0 0 0 0.09929580293 0 0 494385.9042 0 0 0 0 0 0 9.71147262e-13 0 0 1.193934496e-09 1.148187623e-12 0 1.189582136e-14 0 2.012777558e-06 0 0 283.2382648 4.388044985e-06 0 0 0 0 0 0 2413.189857 0 0 0 1.059383146e-20 5.956646412e-09 0 0.08519346501 0.1720541871 2.170489565e-11 4.831059531e-10 334678.0731 0 0 0 2.287989516 0 3.21374686e-14 0 0 2.317603551e-25 0 0.002132377834 13.41086373 0 4.113362814e-21 1.343363743e-06 506739.9987 2509.936205 0 0 0 0.1003423098 0 3.467852549e-15 0 258831.8797 2.083299149e-08 1.082060264e-10 1.922851806e-05 274.4131615 0 2.789248307e-13 0 0 0 8.422677796e-11 5.920595497e-15 0 10231.59939 0.001499241022 0 6.256752087e-14 0.002609693287 370984.3088 1486450.128 38100.23506 0.1783312439 0.01767340365 0 7.368331333e-08 0 0.3081762536 2.360590729e-21 0.000385859683 0 0 6.243740786e-10 1.56622886e-30 2.573568339 0 0 0 0 0 8.127729276e-16 0.0001879835486 1111.176849 44955.42481 0 0 0 814.1831859 0 3.457219335e-05 2.946143979e-07 0 2.849846861e-13 0 0 0 0.008955510663 7.071297704e-13 0 0 0 6.223292537e-06 0 5.951965286e-12 0 0 1.501115432e-10 0.5598965029 0.3665335182 0 4.793367412e-14 0 0 0 0 2.65192343 0 0 3.195625011e-09 2.906132877e-08 0 0.0001168799923 0 0.563477923 8.043559962e-07 0 0 0 1.14567732e-05 14.61192954 69757.57633 0 0 5.068104381e-09 57439.11415 43.15988162 7.30693806e-17 2.170449711e-17 3613.852683 0 0 0 0 0 7.454953616e-14 0 285.621047 1.446368629e-12 0 0 0 0 0 16.57480723 0 0 4.994839605e-11 2.753988643e-18 0 0 0 0 2.664419868e-29 0 4.387097759e-10 0.0009054881549 0.02563904824 0 4.148330736e-05 0 0.002674867676 0 1.094989033e-05 0 0.01801763581 0 0 0 1.857891621e-12 0 0 0 0 7.902733091e-27 0 0 0 1.102416126e-05 0 1.417284045e-18 0 0 31.74607802 0 0 0 0 0 0 0 0 1.524565408e-06 3.029103716e-14 0 0 0 0.08144084072 0 0 594.5719618 0 1.682044534e-08 0 0 44057.77722 9.529328207e-07 0 0 0 0 0 1.411221619e-16 1.164263258e-11 2848.048822 0 0 2.351779642e-14 1.417604598e-09 1.999177341e-08 0 0 0 0 0 0 0.002259579969 0 7.86085773e-14 0 +4.835441358 0 0 0 0 0 3.25384104e-05 3853.060325 0 0 0 1.253688065e-10 0 0 0 3.263043804e-06 0 1.276528451e-12 0 0 718335.2077 0 0 0 0 0 0 0 2.575270876e-10 0.006485312622 109.7547874 0 1251023.822 0 4.922011376e-09 16.28219117 0 0 0 0 702396.6609 0 6.650376884e-09 0 0.000352980602 562.7101977 0 0 0 0 0 8.49925471e-11 0 0.02082018739 0 9.02428528e-08 0 0 0 2334202.543 9.594174204e-11 0 0 8.618270768e-09 3.927592002 0 4.363753413e-06 1.409557296e-07 0.004446374119 3.762812164e-14 3328.125138 0 0 0 0 0 0 0 0 0 0 0 0 0 11225.89853 3462.290249 2.41689451e-18 0.000251873176 0 0 0 0 1.091236054e-10 3.994616846e-06 1040703.019 2.888177028e-19 0 0 0 1.419876768e-07 49371.96467 4388.020666 0 3.609584543e-20 6.97419076e-05 0 13.88127057 0 8.301116811e-09 0 3097344.181 0 4.046031323e-17 0 8.347931805e-11 2.113051257e-06 4.710462798 0 0.000561718651 0 0 775858.5544 0 0 2.987789015e-12 3.922939984e-09 42.60845321 0 3.244557358e-07 0 7.083350502e-17 0 7.546238846e-19 2.33412831e-05 0 112857.0424 2.649501791e-05 5.447614914e-10 4892.104202 0.0001498070655 0.0001890230554 8.643391037e-19 2.124248417e-20 5.395213339e-23 0 13.23265465 31.84290288 0 1.496389506e-06 0 7.074630338e-13 1.805859967e-08 165.7259661 32251.06413 173.5230069 2.484848383e-10 1.218025454e-06 1.990641297e-08 0 0 0 1.677410206e-11 0 8.33707604e-07 0 0 0 1.998870113e-15 0 0.7766100292 4.887050527 0 0 0 0 5.361287234e-08 0 7.175571055e-10 0 0 0 3.255496833e-09 0 3421.597074 269.5872978 0 0 0 0 2.159525607e-07 0 0.0006503049432 9.43519599e-06 95.67339006 0 5.368354133e-06 0 8475.738822 381861.2147 1.857861741e-09 0 158405.5622 0 315757.1397 0.0001037837087 0 0 0 1.818072431e-10 0 0 0 0 0 6.17420053e-13 0 1.256107526e-07 0 0 0 0 0 2.001150894e-06 0 3.056783215e-18 829463.5468 0 0 2174.469059 0 1364406.192 7.268454667e-14 0 2.552009717e-08 18300.01895 0 0 0 1.838793042 0 0 0 0 112.0320657 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002818130167 0 0 0 0 0 0 0 0 368788.238 0 0 0 0 8.186124775e-06 0 0 303418.6149 1.188849144e-07 0 0 0 0 0 0 0 3.055063945e-15 2.653338811e-09 0.06879406535 0.003778498233 0 0 0 0 0 1.224170075e-33 0 6.347249998e-09 2.091082591e-14 17191.23798 0 0 2.783723096e-17 +0 2.775537463e-11 0 0 0 0 3.060713691e-09 0 0 0 0 0 0 0 0 0.001319298193 1.577774211e-05 921685.7546 0 0 1.20603559e-21 0 0 39911.70058 0 0 436720.2063 0 65.04092706 304.2185355 0 0 0 0 13.73409302 4674.409291 0 0 0 0 0 0 3.20066647e-14 0 0 5.279099451e-08 0 1.527906515e-15 0 0 0 5.596303138e-07 0 0 0 0 0 0 6.795103885e-10 0 3.343468608e-19 0 0 0 0 0 0 0 0 1925071.752 1.801495899e-09 0 1.142811111e-08 40177.10622 0.004175557229 7.137796008 0 0 692483.3846 0 0 0 0 0.01149517895 8.714624361e-12 0 4.370329287e-08 0 0 785767.3606 0 0 0 1990.202792 2.388409121e-05 0.7693908954 0 1.342785778e-11 1.091800409e-07 0 1.988688363e-05 0 0 0 0 0 0 0.6821001575 0 0.1810219495 1.156914698e-15 2.063507646e-23 0 0 8.429128158e-11 0.0005426650767 8.969330094e-07 0 0 0 15847.45873 1.48694389e-05 0.003762687807 6.133208597e-06 0 447.4328212 0 17405.63067 1.983070145 0 0 1.33731101e-06 0 0 0 0 2.38705759e-15 106564.3622 2.930032748e-12 0 0.0116537525 0 0 941.2520798 0 0 0.0001027366534 3.544317019e-26 0 1.930553377e-08 0 6.441445472e-16 1.119468246e-10 4.919432946e-11 3.266299435e-05 0 0.01593796232 1.405574143e-07 2.33981642e-14 0.07695438522 2.750273029e-23 39.40256587 0 0 0 62.23222157 0 0 0 0 6.798863706e-12 0 8.685609685e-08 13.32061099 0 0 2.051907163e-12 7.446860544e-15 0 2391.95084 3.519900675e-19 14695.13391 0 7658.474929 3.24901499e-12 0 0.5340220214 0 0 0 2.458552806e-14 0 0 0 0 0 0 0.0004831832282 0.9357013804 0 0 0 0 0 0 0 0 8.557246472e-14 0 0.05247216833 0 0 8448.464495 7.451731394e-13 5.964871831e-07 0 0 4.453997321e-10 0 0 0.07975024413 385.9142115 0.0001450109672 0 0.243924636 0.0005618139866 0 0 0 0 0 0 0 0 1.015052741e-07 0 0 99092.17117 0 0 0 57.77585794 0 0 0 0 8.183014954e-30 0 0 55045.14974 0 0 5.032206631 4714.970003 0 0 4.062363689e-15 0 0 0 0 0 0.8941347126 7.692402978e-17 0 0 0 97.81700836 0 0 0 0 0 0 0 0 0 0 0 0 53.32672913 0.4106017678 0 0 1.203430701e-05 0 0 115936.9395 0 0 0 0 0 3.923785025e-19 5.464753215e-05 0 22309.3449 0 0 0 +0.0001047271038 0 0 0 4.881403397e-12 0 0 0 0 0 0 5.646334143 0 1.448870024e-07 1.449267576e-21 0 0 0 0 0 1.567129878e-06 3.148585657e-14 0 0 18878.77191 2077.726954 0 9.476631452e-06 4.558022532e-07 0 0 0.004137068443 0.06500303421 0 0 2.389779267e-16 0 0 0 0 0 0 0.441232894 0 0 2.587777184e-10 7.493950784e-07 0 0 0.08254806079 0 0 0.06771555347 1.455186707e-14 0 0 4.373933107e-16 1.699511138e-13 0 0 0 3.750948291e-30 1.120740638e-09 0 2.633093962e-06 0 0 0 0 0 0 1.467544533e-06 2.387931621e-11 4.913272699e-05 0 493.4283299 0 425414.5295 5.432884387e-08 1219.377015 0.02838544558 0 0.0002299214196 0 0 1.306958963e-05 5.459519043e-05 0 0 357824.4484 0 0 5.798874003e-05 0 0 0.3361582468 0 0 0 0 3.647162361e-20 0 0 0 3.085433217e-06 0 1.428779042e-24 0 0 0 0 0 0 7.002861525e-23 3.514919171e-10 3.820100514e-07 0 0 0 0 3086.302714 4505.54205 0.003065530965 0 0 1.433471276e-05 4.03134123e-11 7.593779045e-10 0 5.325480816e-10 0 1.032287014e-16 148845.8272 0 0.00123760402 2824.669547 153077.8942 0.000239240433 0.1056161069 2.060087882e-14 0 4.174782389e-08 0 24.51950846 2.47563393e-08 0 0 61405.12128 0 1.062404481e-14 0 4.917156661e-10 410461.0524 0 357085.7034 259.9492217 0 3.491434327e-11 0 0 0 6.417087562e-08 0.000187758932 0 0 3.575736007e-09 3.791397106 3.533214062e-23 13.1185266 0.01715169759 1.017638632e-05 0 2.008016948e-09 0 0 0 1.081426125 0.1343757464 586.4201616 1.37739654e-16 5.96759607e-09 0 1.575990667e-12 0 0 0 0.0004376242214 0 1.011334475e-12 0 1.739699923e-13 96827.10232 1.309783493e-12 26465.99178 0 2.194527651 1629.537214 0.003931566567 1.942003223e-12 0.008516977037 0 82.47167805 0 1793969.117 6.161249969e-06 0 0 256513.5544 6429.30654 4746317.127 1.040561824e-06 0 0 0 487028.5455 0 0 0 4.426482631e-06 0 2302.154008 24.72305115 0 1.841190698e-06 1264403.206 46.18529664 0 0 4.378442011e-11 0 0 0 0 0 0 0.6200542716 0.008000348213 0 0.2175703915 0 0 0 0 1512.002754 0 0 0 4.016610686e-20 68048.43679 6.243224377e-09 0 0 8.152280106e-31 0 0.0924182237 0 0 1216757.552 0 399405.8004 0.1969589401 0 0 2.372689902e-07 0 5.716635866e-08 0 0 0 0 0 0 0 0 0 0 0 0.06994413251 0 5.322385877e-17 0 0 6.398109427e-10 4.120093346e-05 0 0 3.95162646e-05 0 0 0 0 0 0 1.110715844e-12 0.03646839241 47.39020813 0 0 0 0 +1142.989001 1.008199157e-13 2.024464169e-08 0 0 2.82938095e-12 0 0 0 0 2.07682888e-17 0 0 2.990787032e-07 1733887.117 0 0 0 0 0 7.738941068e-11 0 0 8.479557454e-05 0 0 0 0 0 0 99095.15151 11.51959178 9.767340089e-20 3.031316487e-07 0 0 0 2447.399407 2990.304811 0 0 0 0 1.128206143e-23 0 3249917.69 0 1597628.75 0.7539129373 0 0 0 5.132036551e-11 0 1.969719151e-06 0 0 0 0 35.56134101 8023.400616 0 1.393774494e-20 1636333.749 0 4.581903762e-14 0 0.003067795259 0 0 6.478925142e-11 2.465768635e-13 4.045550675e-19 0.0005695394807 0 0 7.315999884e-07 3.287772377e-11 80225.79162 0 2.242801379e-11 65.81858241 0 0 0 0 0 0 2.222663566e-09 118812.9261 4659335.968 0 3.566015218e-21 634.0516623 0 10.12375745 920.1721864 0 748452.8196 1.69935461e-11 0 84.98623724 0.001364976002 0 0 966.4185135 0 0.5234042077 0 0 0 0 691.0926787 0 0 0.0001011682659 1.2761113e-17 0 0 0 0 8.673098792e-06 0 0.6128455851 3.370941387e-27 4.163549929e-10 6822.729419 0.003146559147 0 0 0.05523487803 19535.12713 3.038030886e-07 0.004953277074 0 7.633799328 0 0.002220721578 1624.572032 3.841529228e-12 67625.97561 3.565508679e-05 0 0 0 10863.7188 0 0 1.255548042e-06 863.2504528 0 4.406560021e-10 0 237492.3852 0 1.07841708e-07 0 9.921157899e-11 0 0 0.01817442381 0 855742.5465 0 8.767125448e-18 9.98102037e-13 0.121867907 0 8.775705033e-08 0 0.03364874095 0 0 364874.7905 3.13754079e-16 4.796486451e-11 0 1.967530246e-06 0 0.004367536654 0.0007895915975 2.40231546e-17 0.6192640636 0 0 0 5.069960155e-28 1.779315168e-06 0 10.32150596 0 1.319764138e-05 0 1374.697686 0 0 0.04978039901 1.700941614 1.758501782e-12 0 0 161657.3097 0 1.61111267e-13 0 4.375886573e-14 0 5.053056743e-14 0 0 0 0 414.809804 0 0 0 0 1683749.93 2.389597879e-20 0 0.001772887099 30063.70607 1.252548877e-07 0 1.800927097e-15 0 0 0 0 0.0008267481584 0 0 40.63914229 0 388346.2761 0 0 0 0 3.986041812e-22 0 0 1.008042908e-07 0 0 209.7503478 0 1.293186455e-17 0 1.243282889e-12 4403811.601 0 1.137156237 0 0.4152876969 0 0 0 0 0 0 0 3740.493727 0 0 0 0 0 0.0005318673205 0 0 0 1.191888071e-13 0 0 4000.721057 0 1.652745022e-16 0 0 0 0 0 0 0 3.134882231 0 0.0002099535478 0.0011479218 0 3.139925988e-06 12.04086234 0 0 2.654600197e-22 2.890814546e-12 0 0 0 0 +0 0 0 0 0 0 0 0 6.9230486e-08 0 0 0 1.198851702 0 0 0 1.285008113e-15 1.393088144e-08 0 645967.3786 0 373742.1511 0 0 0 0 0 0 2.706173655e-06 9.580404703e-07 0 0 3.397683152e-11 0 0 0 4.074127788 0 0 0 0 0 0 0.004185464859 0 0 0 8.29147124e-27 0 28124.29541 0 15467.53692 5.517671965e-08 0 0 0 0 42607.57534 299.7949443 0 0 0 784508.7426 0 3.589806241e-11 6.757237538e-10 4.100966508e-13 592250.9894 0 0 0 0 0 0 46827.35325 0 1.488105267e-21 0 9.530435115e-26 0 0 17439.90283 0 0.0005614044893 0 227198.1754 5.175706228e-05 2.508433019e-10 0.006875593766 0 0 2.943555331e-27 5.044451334e-17 70946.98841 0 0 0 3.527652692e-12 0 0 0 1573143.071 0 72941.29053 0 2.619086388e-09 0 123241.0995 0 0 0 1.354998641e-09 0 0 0 37493.0769 0 0 0.01532972474 0 7.773790361e-31 1.651696132e-06 0 0 2.732702831e-05 0 0 3.429444791e-12 116777.1064 0 0.3105085922 0 0 0 5.449309227e-17 96320.03856 0 4.650318085e-08 0 0.008394524957 0 1.513243794 0 0 359.020526 0 0 0 0 0 0 2989671.315 0 1206567.301 0 1.259044446 0 3.811123626e-11 4.079314731e-09 294291.4239 4.455749451e-06 1603.045121 0 0 0 5.643172462e-13 3.996788877e-17 0 0 0 0 174941.4141 157.4860557 0 0 0 0.0003194967986 0 0 0 9.436730076e-07 3.66338032e-15 0 0 4.962287945e-11 35.73034245 70492.50896 1.151633653e-13 36497.61816 0 1.994728211e-10 0 0 0 0 1.993693614e-19 0 0 0.3251653906 0 1.312265896e-24 0 0.000141256352 0 0 0 0 6.421403168e-14 0 0 411.839549 0 1.146017547e-10 0 0 0 0 0 8.54006373e-10 3.138014456e-09 4517.318121 0.0006288204748 0.0006711503543 1.942778102e-11 0 0 0 0 280068.4477 0 0 0 0 0 0 0 0 0 0.002882709387 0 0 0 0 0 2.46072671e-12 0 5.201117101e-05 3.012140136e-11 0 0 6.294900788e-24 0 0 0.000110711388 0 0 7.478169549e-10 0 457.5494331 77172.93195 0 0 0 0 0 0 0 45.83508048 0 0 0 0 0 0 0 0 0 0 0 0 0 0 533057.4914 0 2.228190377e-17 0 0 0 0 3.459830367e-13 3.867519774e-25 0 688308.9456 0 0 0.091729317 0 0 0 0 +8.378122085e-15 1.19464383e-13 0 0 8.42505218e-14 0 1.541373922e-06 0 0 0 0 0 0 0 0 0 0 3.884473912e-05 0 0 0 0 0 0 0 0 122.9381657 0 0 0 0 1.105133689e-06 7.202233862e-12 3.145537505e-09 0 1.835159895e-07 0 0 1.052778677e-06 0 0 0 5.722696422e-13 0 93.36984713 0 0 0 0 0 0 0 0 0.002780330932 5.465588978e-11 1.387200972 0 0 1.055554592e-10 0 0 1.098809883e-07 0 207107.7274 0 4.587812816e-10 0 1.292554444 0 0 0 0 2276.268263 3.83166043e-05 453161.413 0 0 549.9845446 393824.9892 0 0 0.0001217121991 0 0 8593.517695 0 184126.8462 0.003783771995 7.250367598e-11 0 0 0 0 4.886197863e-08 4.212306953e-26 0 0 5.52690252e-09 0 0.0001860299541 7.82556667e-06 0.00920524727 3.118071288e-07 0 20294.72521 6.243942294e-14 0 5.905741238e-11 0.003398985595 3.376740387e-13 129888.5199 3.759890536e-21 0 0 129.125392 0 0 1.649773694e-06 0 0 8.400930172e-13 0 0.2007681507 0 0 0 0 0 0 27440.03637 2.550066444e-07 861.4110937 1.793643077e-11 0 0 566860.5483 0 2.82410343e-08 0.004567518339 0 0 0 0 0 2.083906067e-05 1.594351213e-11 3.991403115e-09 3.871853933e-16 0 0 0 0 541.5235476 410.1900485 0 1.318232407e-28 1.481480519e-07 0 0 0.08510622805 2.452231623e-12 2.066483823e-14 0.001826302165 0 0 0.01766734265 0 4.332955488e-05 0.06150811173 0 8.320391779e-07 0 219.1533345 0.006652269573 490.8006993 0 6.711831312e-20 0 4.254244157e-07 0 36.68774475 825.9429387 0 192.6427223 1.87692309e-16 0 0 0 0 4.045015117e-11 0 0 0 0 0.001263777632 0 0 5.66635585e-08 0 0.008225529855 2.416242898e-20 0 0 0 0.04928046045 0 4.157153557e-09 0 1.094951317e-07 31798.25346 208.0140452 0 1340.386735 0.01014805372 4.273131675 0 0 2.855156849e-05 3.294298971e-12 1.285504842 0 8.64650915e-05 0 0 0 2093.859736 0 0 0 0 0 0 0 0 5.325477442e-05 0 0 0 8310.832131 0.7715844792 0 0 0 0 0 0 0 0 0 0 1.407418e-27 0 0 0 0 0 0 204263.7047 4630.080557 0 0 0 0 0 0 0 4.74768744e-10 0 0 0 0 0 167177.7155 0 0 0.07265258582 0 306881.2004 0 0 0 0 23.06123686 0 5.084549397e-24 0 0 1.369946889e-10 0.0001086287426 0 0 0 4.757872813e-06 0 1.922443548e-14 0 0 0 0 0 +7.707041721e-15 2.253740236e-06 0 0 0 0 0 2.353434958 0 0 0 0 0 54.04649019 0 0 1.152076515e-22 0 0 0 0 0 0 0 0 8.475985078e-06 0 0 0 4.320442036e-09 0.0004751895048 0 0 2.064886084e-07 0 0 0 0 0 3.652268352 0 0 0 1.443055911e-13 707.8624148 0.1976286942 0 0 0 0 0 7.116264045e-20 1.978627507e-09 8.581780335e-06 8.173279566e-06 7.2943334e-22 0 0 0 5.764940745e-24 1.451210464e-19 5.670522734e-09 0.002821695037 0 8.173359832e-20 3.006756394 0 3.961905217 0 0 0 0 2.46423603e-26 0 0 0 197.238982 0 0.9873686191 0 0 83593.32238 0 0 0 0 4085.816966 0 0 3.344044404e-18 0 0 0 6.877877236e-07 0 0 0 0.04263253477 0 0 0 0 2.860536249e-09 4020.084752 0 0 1.941933263e-16 2.535616048e-15 1.346103647e-13 9969648.239 0 53139.21572 5.195014687e-12 0 128.2230184 0 98814.88126 2.018702748e-07 0 0 0 225808.1902 0 1.166683162e-10 0.04105794279 0 0.002449996563 9.665978803e-12 2086.254636 0 4.114989282e-07 1.484957538e-07 0 0 0 3.751314933e-15 0 6.083473237e-06 75232.19079 62.3017365 0 0.0005543355345 5.133974561e-09 6.03368454e-05 0 0.9760743712 8.508041096e-12 1.817888751e-14 0 69223.39375 164.5156284 0 2.406721885e-19 2.212683054e-21 0 2.119980643e-10 1.753250453e-06 630207.8804 0 0.02069656208 0 3.700335013 3.456055005e-10 401044.8336 5.800641404e-21 0 0 1359.581058 0 8.919579284e-09 1.857006587 9.168586044e-05 0 1.520211246e-14 1.274784437e-09 0 0 0 1.509142524e-06 14971.48765 4.167800146e-05 2.729595934e-11 27967.27075 0 0 0 0 6.677291391e-09 0 0 0 4.077674075e-15 1.882337979e-05 112967.4388 1.015483487e-07 0 3.264195476 2.088381986e-24 16498.54721 0 6.062285774 0 0 16544.87353 19892.67134 0 3.678742927e-08 1.068327116e-16 6.222032039e-05 0.0002115199977 0 6.863217709e-05 0 3.334198719e-22 0 0 0 0 0 0 0 0 0 1.723918071e-14 0 0 0.004592664351 0 0 168719.5132 35523.94258 5.152594559e-12 1.641356297e-14 0 0 0 0 0 0 0 0 0 0 8.336866175e-13 0 1.33222141e-05 0 43.11530755 1.695904191e-12 0 0.03119301024 0.05238204654 6.839461873e-14 2.615109896e-08 6.533523851e-18 2.041483002e-11 0 8.59123951e-33 0.6749038531 2.597882868e-20 4817.825064 0 0 0 0 16291.29931 0 0 0 0 9.406788093e-13 0 0 0 0.00686260053 0 0 1.615469834e-08 897.750597 0.0001448610902 0 4.855622675e-06 0 3.268015785e-18 0 0 0 0 2.89565335e-08 0 0 0 0 1.187917238e-07 0 867588.8296 0 0 17.08293019 0 +0.004704273081 0 0 5.561093565e-27 0 0 1661376.938 0 1.147841745e-06 3.521064146e-35 1.3137557e-06 0 0 0 0 0 0 0 0 40333.56994 0 0 8.669676004e-24 0 0 0 0 0 0 0 0.1534198998 4.969648433e-24 2.542965343e-14 453438.9037 0 0 106405.1648 0.001474921748 0 0.001818392768 0 0 1.2373704e-10 0 0 0 0.04544116932 0 0 3.93475269e-05 0 0 1.109863297e-10 177.9641469 1.327683429e-05 27.44688381 0 0 0 0 788.9088815 0 8.26768376e-22 0 1.826317546e-05 4.323979251e-13 36020.69698 8207.497545 0 0 0 0 0 0 0 1.949644742e-11 9943.099078 0 0 0.1224966816 1.758139811e-13 2531.847563 0 0 1138.536124 0.001131118557 142339.2386 0 5.163800321e-15 0.001463613581 0 0 1.462604931e-07 0 2.349809716 0 7.735991934e-10 0 9.267709903 21.84926666 4.450647196e-07 0 0 0 3509.470239 1.14867572e-19 0 0.002501796006 0 1.335683979e-07 0 1.957703997e-05 0 0 0 110840.5118 0 98.89720436 0 4.987826675e-13 7.966123415e-11 5.193395895e-07 0 0 3.226234322e-07 23952.83978 0 4.1930008e-10 0 2.880722532e-10 2713.513318 2.222673006e-11 4.89558186e-09 0 0 2.274423543e-18 0 0 1125.442366 0 8.129997672e-25 0 1.269333698e-05 9.514386589 0 1.275188852e-06 0.1116542547 0 0 0 8.633315057e-15 7342.985397 1.969151325 103148.2278 0 0 0 0.01202005921 2.709253896e-11 2.26536597e-11 2.760559022e-11 951.1677393 0 7.42853851 0.03638573028 634332.7903 3770151.668 225.6698771 0 1680627.445 825.3763476 0 4.129944339e-12 1.577915258e-17 7.203973635e-11 3.207789969e-15 0 3.306621902e-16 0 0 2.906269752e-05 0 0 0 0 1107748.59 0 0 1384.9073 0 4.867810697e-06 0 32.14609154 5.806625471e-18 0 0 0.001671387854 0 0.0456043394 0 64755.84042 0 0.2125720174 0 0 955982.5504 0 0 0 0 3.754137974e-12 5.217243191e-05 0 7.290587776e-11 2.113990082e-10 0 0 0 0 2.763271223e-06 4.055675184 0 0 0 0 846915.9754 0 0 26302.33238 8.693606939e-27 0 0 0.08037069056 0 0 0 0 9.271180589e-09 0 0 4.979039844e-07 0 0 0 0 0 0 1067.067613 0 0 1.535492641e-13 0 112.7338819 1.245229069e-05 7.070650983 0 3.940260692e-11 0 0 0 0 321536.2509 0 0 0.0005796095955 7.031266004 0 0 24807.19024 0 0 0 2.558451352e-05 0 0 0 7.721629962e-11 0.4517302412 0 0 2.888314682e-09 0 0 0.03154574326 0 7.445506174e-11 0 2357433.177 0 0 0 5.684315202e-12 0 0 8.732086912e-08 0 1.05264319e-26 1.305108913e-09 0 0 +0 0 2.602421902e-16 0 0 0 0.1420443829 0 0 0 0 4.07522286e-12 3.157785089e-05 0.02289409892 0 0 9.260076041e-25 5.420567663e-05 0 0 4.29432282e-07 0 2.434363696 4.544350707e-19 0 0 0 0 0 7.810727443e-13 0 327.6988942 3.53743515e-06 0 0.3285690473 0 0 0 0 0 0 9.028698168e-16 1.45305273e-14 0 0 0 0 2.552269362 0 0 0 0 0 38810.73924 0 0 20042.25096 0 1.168424319e-07 0 0 0 0 0 0 0 0 0 3.686927133e-15 1.055216622e-06 2.880116069e-17 0 2.612494976e-09 0 0.000257843803 20321.72255 0.002562124671 3.419862595e-12 0 0 0 0 7.183609325e-09 0 0 0 5.523007552e-05 0 0 4.260533305e-11 0 5.351046812e-08 9.488403846e-17 0 188.7298219 0 0 4.567021537e-13 2.825032229e-06 0 0 1.743875365e-16 0 2.083065163e-26 0.02401000667 0 0.008340559706 0 14965.82202 0 0 1.906606179e-08 0 0 0 0 1.688747767e-07 0 0 3.370141407e-10 1872419.874 577.4389088 0 0 931508.2819 0 2.829248967e-05 0 0 0 0 148496.9353 0 1.944335368e-07 0 0 5721.229362 0 0 1.717120385e-11 0 0 0 0 0 0 0 0 1.629452054e-05 3.936232816e-05 0 2.710117335e-17 0.0002677759955 3.578291336e-09 44.63132455 1.519831492e-07 0 2.976084467e-19 0.0004599056406 7.802115685e-12 0 0 0 0 163.1500343 247.1819593 0 0 0.01939483521 7.711038437e-13 0 15.23967837 7.355116197e-17 1.08009578 3.968357574e-15 24568.26262 24.72199912 461606.1192 1.967954444e-11 4.156778175e-10 14823.19254 0 0 169.4060044 0.0002595899016 1203.334085 0 2.286832818e-05 0 0 233.2357438 0 0 0 1.825881297e-13 5.570678846e-09 0 553180.775 2.261881774e-12 0 409865.2619 0 0 0.0001230707547 0 72185.09569 0 0 3.834481189e-10 35.8592072 0 120.6787024 50.85539885 0 0 0 0 0 6.569108768e-05 0 0 399424.3659 4.383249486e-21 0 0 0 8.856170549e-05 0 0 0 0 0 0 0 0 0 0.04784732612 583242.3535 1.050713736e-07 0 52022.05902 0 4.131324806e-15 0 0 0 0 0 0 1.438198676e-17 4.050311802e-08 0 0 0 0 2.980633748e-16 0 7.621939621e-19 0.0002631093063 54172.53343 0 0 1.534719473e-08 190.2618188 1.946862355e-20 0 0 0 0 574625.1574 0 0.000898005059 0 0 0 0 0 0 0 6.718084618e-13 2005590.027 0 0 0 1.427307862e-13 0 4.975390866e-19 0 0 0 1.117106794e-13 0 0 44.42746549 0 0 0 0 0 0 +2.575616108e-23 0 0 511932.9489 0 0 0.01294199443 1.463387519e-09 0 0 0 0 0 0 0 0.1572571721 0 0 1.022901537e-08 5.129924173 0 0.5906720114 5.372621286e-09 1.740418149e-17 0 730781.5832 0 0.002954705941 0.3981538181 1.27105126e-16 153975.6335 0 1.692860267e-17 1025984.777 0 0 0 0 4.253431042e-10 0 35098.65581 0 0 0 0 4.488146817 0 0 133.5122261 5547.48285 464.9158381 3.414157534e-09 0 6.664798895e-15 7.320414035e-12 0 0.160715855 0 0 1.180042493e-10 0 0 1.740008867e-07 0 0 0.09747354156 0 0 0 0 7.427551477e-13 0 0 0 0 0.05098321995 0 0 0 0 1.022708849e-06 3.095160745e-10 0 1321.538418 5.180741473e-11 1.249692184 0.1222372029 326481.668 0 0.01315762924 0 0 128376.2405 347418.6215 0 1.361481669e-14 1211.327645 301.4297902 0.000171320534 0 0 0 0 0 2.934036904e-11 0 3.725644255e-14 0 0 0 0 0 0 0 7.055711722e-13 7.518184322e-11 1207103.806 0 4.036563216e-12 0 0 0 0 185227.3767 2.944211818e-07 0 3.404840898e-11 259.6116769 0.00898828547 2.722923377e-09 0.003352197808 7.688782065e-07 0.7785926099 0 0 0 0 41.06242947 0 0 1415.199984 0 6.000109769e-09 0 1.209277675e-14 1.688861334e-15 0 7.644035791e-15 0 0 4.209533764e-11 0 6.216476976e-07 3.328661355e-10 0 0.0005987608198 0 0 0 3.247825885e-08 0 1.001256743e-14 119.6277859 0 0 0 0.01492873639 7.066202508e-08 0.007812380823 0 0 0 10689.37219 0 614177.5565 1.029939999e-08 0 0 0.3341022906 4.926439818e-10 0 0 0.03049838397 0 0 0 674882.2178 0 5.454231966e-07 0 0 0 9.472175861e-19 0.4508115324 8.291226398e-20 0 0 0 0 9.901497611e-08 90.12211628 2.720448057e-11 0 6.4544426e-12 0 0 0 3.504821621e-08 0.01357555516 0 68598.42002 1.570335107e-12 0 0.001148310059 5788578.781 0.08072932377 2.509071511e-09 0 2.074801567e-06 856.4438104 479515.8568 0 19667.88375 0.06729841756 5.952713941e-06 0 0 0 0 2.026185037e-08 0 0 0 0 0 0 0.3925931299 0 0.0007921115882 0 0 0.01772984213 0 1.954803782e-16 0 0.09246670784 0 2.368481713e-22 80116.58355 0 0 0 0 0 0 0 13.94184165 509455.8842 0 6.692382186e-14 0 0 0 0 0 0 181184.5262 0 0.009473932861 0 191.8729051 0 0 0.004763984235 0 0 0 0 0 917785.0261 6.874145275e-10 0 0 2.845348949e-14 0 0 0 10642.84992 0 0 0 0 0 0 0 4492.633774 0 0 2.284451168e-14 0 +0 0 0 0 0 0 0 0 0 7.652686501e-18 0 6.33652505e-17 0 0 0 0 0 0 0 0 29678.73283 3.923357407e-09 0 1.622574268e-06 0 2.618013704e-18 0 0 2.496707449 0 0 0 0 0 0 0 3.973734909e-13 0 0 5336.356467 7.599447422e-10 0 0 9.089724847e-07 0 0 0 0 0 0 0 7.074573035e-26 0 0 0 1.472502147e-13 0 0 0 0 0.006175932375 0 0 0 9700.58748 0 2.574436474e-08 0 1.598977094e-12 236.1750402 5.190244559e-16 0 0 4.52323365e-17 0 1047.2104 0.04781161715 2816.296135 0 0 0 0 1.008258886e-14 8.881104683e-34 2.648166956e-18 1354203.635 0 0 194723.5685 0 0 0 6.733742641 0 0 88.36846964 432.7366511 3.836765038e-08 1.133834536e-07 0 0 0 0 0 0 8.019341091e-09 9291.874556 0 0 3.283721142e-13 4.332082086e-13 0 0 690.2387907 1.662833261e-14 0 0 13.38769288 5.759185803e-12 0 0 1.433907211e-16 5.895967866 0 2.497405171e-05 0 3.324033486e-05 9.15231024e-08 5.958963331e-08 0 0.03145826889 0 1.534885189e-11 68.15795063 0 0 2.577839872e-06 0 0 0 102.4881652 1.425319513e-07 0 0 0 0 0 704691.6571 0 0 4731.132731 0.2906386519 0 2.203283559e-13 0.001058216135 0.01888362328 0 0 0 0.1783883697 9.690616841e-07 7.760135159e-16 0.0004144884589 215.5269659 7.825723457e-13 0 0 0.7172336901 0 0.002277594515 0 104479.86 0 209.8900359 0 2.590534867e-19 7.265094873 0 4.812711137e-24 280397.7463 483751.2548 1819.427711 6163.270946 3.939378672e-12 0.006104122604 0 0 620204.4166 0 0 0.7925182646 1.033953826e-11 0.0005324550067 0.0007783131724 0 0.04431540048 0.09927425663 0 0 7886.077759 1.04600239e-16 2.767593794e-15 0 0 0 0 44990.34456 7.117946819e-13 3.769327502e-18 0 6.385347053 215.5666445 0 2305360.478 0 0 0.006745067964 0 0 230547.9823 2.58444447e-08 23184.64717 4143.778751 0 0 1.210754712e-13 1.973100767e-05 5.74207265e-10 0 0 0 0 1.075478954 1244098.492 2.327098913e-05 0 1.854675895e-09 0 603.2487231 0 0 0 0 1.46845655 0 0 0 1.311684626e-12 0 9.769080391e-09 4.550721417e-16 0 0 0 4.882053608e-09 3.134733419e-09 0 0 1.454744393e-26 0 0 0 4.571504001e-10 1.413715478e-32 1.141313015e-24 0 0 0 0 0 3.497275597e-09 0 6.789576942e-11 0 0 0 0 7.482215843e-14 0 1435258.907 122955.309 0 0 0 1.016145361e-07 0 0 2.428886215e-11 0 4.378178262e-17 0 5.442079957e-13 0 9.904319108e-08 0.141311265 0 0 0 0 0 +0 0 0 1.226376913e-15 0 0.8165950136 2.204059505e-12 0 398270.7661 0 1.025250697e-09 2.391745065e-08 0 0 0 0 55905.11473 0 0 6953.513269 0 290678.8558 0 1.35544511e-08 92.42494975 0 0 5.37285659e-12 1901577.425 1.427369929e-27 0 5.629186221e-05 0 0 0 0 0 0 0 40.00262451 5.270161549e-12 0 1.339504477e-15 2.572896835e-07 1140.975267 0 0 0 0 0 0 0 0 0 0 126871.9742 4.623133585e-12 0 0 1.073711567e-14 0 0 0 6.046071087e-06 0 0 8.666524738e-07 9.786633436e-12 0 0 4.569723107e-08 1.65316376e-05 2.557908007e-09 0.03631345878 3.894635464e-27 0 0 0 0.004279113947 0 1.954317559e-09 55.78589273 0 0 58611.20573 0 5.319528993e-17 63106.75419 7.361843351e-27 261.6699741 5.480148117e-13 0 1.073077068e-14 0 1.254291706e-10 0 0.1044477725 0 0 0 0 0 0 0 7047.73148 2.124838487e-17 6.971934934e-08 0 0 1.925158263e-17 0 6.236763158e-09 0 0 9.788542398e-05 0 0 0.003356632193 0 0 0 1.355366218e-19 0 5.267082852e-15 0 0 0 3198.288678 0 0.001643106232 0 0 0 0 0.02757342516 2.933265887e-05 451341.1098 0 6.224833859e-10 0 0 0 0 0 0.005164305669 8.171391673e-05 0 4.199662277e-05 0.1185103213 0 0 0 0 3.010875525e-20 0 1292696.742 0 7.841858422e-09 1.252097512e-06 0.8056709715 0 911.1886946 0 1029392.273 2.111923559e-21 0 0.001036038516 165041.8275 45856.43957 0 0 0.0002009613214 0 5.860715199e-12 0 2.67070779e-33 1.72117998e-06 3899.240593 3.039524867e-11 0 0 0 0 0.0002877265125 0 8.438079414e-07 0.8688781464 0 0 0 0 1.338749866e-11 1.02368018e-13 0 1.047745875e-05 0.03208405021 2.341133745e-14 0 0 0 8.970920672e-05 0 0 0.7903757425 9.214876832e-22 6.344380912 0 0.003685544638 0 0 0 3.487509387e-13 0 0.0004111656904 0 0 0 7.84303702e-13 0.1446367196 0 0.006769803705 0 6.222578214e-12 5.36641676e-08 0 0 6.47800555e-29 1.156758553 0 0 0 0 0 273277.6633 0 16560.22193 0 0 0.49182867 0 0 0 619609.4596 0 0 0 0.0001393226866 32846.0476 0 0 0 7.920105906e-09 0 0 0.01656399516 0 0 6.338874776e-10 1.107059633e-22 950.3382003 0 0 0.004329021182 5.011113653e-13 0 121223.4745 5.661878407e-15 0 0 598597.6922 0 11200.18805 0 0 1.989326258 0 9.587780027 0 0 0 3.432873946e-13 0 0 0.001873830778 2.701604206e-09 0 0 6.96254962e-12 0 0 25936.33635 1.08798488e-15 10.67699057 0 0 0 0 0 9647.239782 0.04557439225 +1.402758481e-08 0 0 0 0 5.058627077e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.960300018e-05 1.243163204 0 4.62197433e-25 2.491960973e-09 0.0006099806335 0 8.708552326e-15 0 0 0.01090488964 0 0 0.06213222696 1.174393594e-09 0 2.017144083e-06 6.622726789e-10 0 0.04365372354 0 0 0 0 0 0 6.484710991e-07 0 5.942304462e-09 0 0 0 99526.18673 0 0 0 1.358715862 0 0 0 2.683654668e-16 0 2.073667445e-14 1.833914842e-06 5.057430106e-15 0 0 0 0 2775.160644 0.1283799969 0 0.004449384686 0 3.57362691e-07 1.98559935e-09 0 4.311505855e-18 0 3228.878305 3.086519849e-08 3.339931206e-19 0.08618722349 0 1.992699539 2.111208749e-07 0 8.112242385e-06 213299.1271 0 0 0.005269755055 1.546160744e-10 0 0 1.39451508e-11 6.092144149e-18 629357.4555 822749.5014 463036.3622 0 6.326296194e-14 3.04083402e-13 8.778742058e-06 0.1058256353 81.04191529 0 6.011588152e-21 0 1.841547937 0 1367.871555 2.928645693e-07 0 1.092926007e-13 8.35991212e-12 0 0 4.541831006e-14 6.629234779e-14 5.569726676e-10 5.150843211 0.007870895431 1.896165867e-12 5.389328465e-07 0.04925821806 4.43727169 0 0 0.1197005316 1542373.066 0.0008140084699 0 0 0 0 6.599550459e-06 1.776317822e-06 2.039379658e-09 480.559 1.361833334e-14 0 3.514002193e-17 0 101938.9568 1002.774121 0 1.511250423e-06 0 3134.943805 0 0 0.5199732561 64315.96109 0 0 0 1.774325298 5.498003895e-13 0 0 167436.9642 0 777064.8435 0.9523667188 0.0005298083551 6.177260375e-11 2.086658688e-14 26671.50492 8.10426467e-16 0 37808.52185 2.393958133e-07 0 0 3.875312017e-08 0 5.766270911e-08 396.4729411 1.953414599 6.587821668e-15 5.445244505e-06 0 0 3.378142018e-05 0 0 278.8131501 18588.31539 0 7.594987707e-12 0 5.038430504e-19 0 0 0 8.923503955e-14 0.009600206857 0 0 0 36.5825118 51724.31812 0.04411969648 0 7.89714171 2.844933997 0 0 0 0 0 0.1210567716 7.665858554e-22 0 0 0 1.53429649e-09 0 0 0 0 0 0 0 0 0 3155861.939 0 0 0 0 0 4.095120362e-16 0 5038.739287 0 1.667319962 3.294440706 0 2255840.635 192.0600153 2.105867733 0 0.01349458887 0 0 0 0 3.736013996e-09 0 0 0 0 0 0.007681486044 0 0 0 0 0 0 1.264614139e-12 1055.266381 0 2051187.211 0 0 8.496923218e-16 0 0 0 0 0 2.512624502e-10 2.209304822e-10 0 2.300075327 0 2.855574484e-13 0 0 0 0 28068.25405 0 0.4622791206 0 0 3.033340439e-06 0 0 6.203143702e-11 0 0 0 0 0 0 0 +0 0.004930106258 0.01940803169 0 0 1912596.381 0 0 7.919642945e-06 0 0.00100900926 0 0 2.450308274e-07 0 0 0 9.912564216 0 0 516933.7032 0 0 0 3.039405655e-12 0 0 6629.029167 289.9587638 466.8622496 0 0.0005147248766 0 3367.688963 0 18.33865856 0 0.003897125186 4.29221542e-29 3.09675492 0 0 0 0 3.782195364 0 1.372073531e-13 0.0524785988 0 3.046897868e-05 0 4.898775034e-16 0 2.311837297e-09 0 8.168880649e-13 0 211003.7449 3.431450921e-11 0 0 1240630.288 0 0 5.749345774e-12 0 0 4.908544186e-05 9.479498949e-14 0 0 0 0 3.138286938e-13 0 0 0 0 999.4229712 0 0 0 110.4728666 938867.1515 0 0 0 0 0.005393884766 9.337255445e-14 0 1216.425216 0 0.0001386160135 0 0.000179644659 7.214364019e-10 1.126550924 0 0 0.0003567266596 0 0.02679518174 2.36679961e-06 0 1464279.626 2.349271682e-21 0 0 3.220808961 0 0 3.669376375e-14 0 0.1094207488 8.368576514 0 0 4.581568669e-08 5.718884462e-16 0 2.935353376e-16 3.870198487e-10 15.99773206 0 0 1.479318175e-24 194832.8615 0 0 0.05480434353 0 0 1.149624031e-09 0 0 3229.168769 4643.003668 0.0001971623847 0 0 4.288928114e-20 0 0 30.60908979 1.405243969e-11 0 7.84305136e-05 0.0002921676734 0.01588425442 2.875374791e-11 0 3.490987352e-23 8.824222283e-08 0 0 0 0 8.077753455 528.1900485 0 0 5.606665581e-13 9.233909105e-07 2.480559919e-11 4.302865667e-15 2.777780731e-07 0 1.009811427e-09 4.335242925e-11 1.864130595e-05 3.123857533e-08 0.000362114917 2.353537799e-10 8047.027143 4.480863579e-09 1.09099606e-11 0 11.75565433 0 5.628287923e-21 209795.8426 0 1407532.643 0 0 0 0 9.196886175e-11 0.06084971339 0 0.07631293582 2.531004002e-22 0.0415269966 6.061443123e-05 0 0 0 2.501905152e-12 0 2.273841375e-10 39.3974135 0.05405631766 0.5160850961 4.102320031e-07 0 1.579023682e-08 4396.609465 0 0 5.343399517e-06 0 0 0.000581933397 0 3.247901783e-15 2.427699799e-29 171784.9723 0 0 0 1.889559279e-11 8.920790496 0 3.256458657e-10 0 0 0.7193748808 0 0 0 0 0 0 0 2.650442999e-19 0 0 1.195470036e-05 5.641946671e-08 0 2.300835722e-05 0 0 0 1314339.443 3.913368563e-05 0 0 0 0 1.066301165e-12 0 0 0 0 0 0 0 0 0.2924821148 0 0 0 0 0.0004175392816 0 5.047448997e-16 3.300710044 0 0 0 0 6.672951744e-09 0 0 0 0 0 0 255.1891727 0 0 0 0 7.335263311e-06 2.804300762e-05 0 0 0 0 0 0 0 0 6.27907993e-08 0 0.0978211285 0 0 +2.194815491e-17 0 0 0.003477354639 0 1845.444352 1.107786294e-16 0 1.21568936e-11 0 0 0 8.658069699 0 0 0 0.0001127608492 1.386249239e-12 0 0 8056.152301 0 0 0.01470492742 0 9.317569584e-05 0 1.405716584e-09 0 3.132158253e-07 0 0 0 0.001698538319 0 1.652273044e-09 6.967376388e-07 8.497798169e-09 37.16646448 0 0 0 49.07621342 0 0 0 6.484947576e-06 0 0 0 0 0 0 0 2.973009229e-11 0 0 2.975944754e-08 0 0 0 2219.215511 0 0 1018.435334 0 0 0 0 0 79.70214459 269432.1007 1.879116936e-10 445.5359194 0 0 0 0 0 2.172896447e-23 1477312.308 0 0 6.627636089e-15 5.311477765e-15 118597.3258 0 0.0002439792964 1.727374199e-05 0 0 0 0 121996.7688 0 0 0 0 0 0 0 0.005218743289 0 7.212197694e-05 0 8.192234312e-19 1.685013649e-08 0 0 2.913562663e-06 4.31668427e-07 0 0 136288.5615 9.447736871e-16 0 4.47111478e-21 13403.70021 0.1551939977 6674.741668 4.142933067e-10 0 0 0 0 9.336188648e-11 18866.87772 0.0002035221786 0 10.55079458 0 2.854639404e-11 0 106.2770557 217727.7213 1.305719463e-05 0 0 0 0 8.070680872e-09 0 0 12.1992804 0 2.049795229e-06 0 1.386899324e-20 2.687637656e-22 0 0 0 27602.09394 734100.0791 0 0 3.079050842e-32 2424756.129 3.622761 1.563593915e-08 1621.790515 3.247857474e-08 0 0 0 0.09773578592 5.296277163 0 0 0.0002185696973 3.58065516e-19 0 0 0 4.705944535e-17 54206.28415 9.040675489e-33 0 0.01121271167 0 189.7354635 0 0 5.671674379e-10 1.73561128e-06 0 0 0 8.612784163e-05 0 0 0.006685491837 0 381399.1966 0.07261615356 0 0 0.006011247038 0 0.02843900025 0.0002698372095 0.6122140314 0 2.452400239e-07 1.089731891e-05 6.058966257e-06 0 0 0 206.3560817 7.953733013e-12 0 0.03290045601 0 0.003255287259 0 0.5246454753 1.394517285e-08 0 0 0 412.5076169 1.166137045e-13 0 9.988361633e-15 0.02616749837 1724.384191 0 0 140498.8444 0 0 28168.13329 8.331379677e-11 5.777646895e-05 3.160142541e-07 0 0 0 104.7044606 0 0 0 0 1.115868685e-09 0 0.0001061295322 459665.2627 0 0 0 0.0002028255254 0 4.010691558 0 0 0.01312343861 2.3682461e-05 0 0 0 0 0 11586.99576 3.403203759e-11 0 2.005065192e-15 0 0 1.683122153e-13 6.002665101e-05 1.697862442e-14 3.921568099e-09 0 1.339550926e-14 0 0 0 119034.5388 0 301955.8153 0 0 8.901331973e-16 5.892121337e-16 0 0 614789.6942 0 0 0.08306551489 0.009483907404 0 0 4003.300558 0 0 0 0 0 +0 0 0 0 0 0 0 0 0.1161997892 8.012532636e-13 0 9.412462137e-16 0 0 0.0001505001063 0 0 0 0 0 0 1.110639986e-05 13038.68065 0 0 0 0 0 0 0 0 0 2.511996385e-09 0 8.325367766e-10 0 0 0 687252.7601 1.75964831e-05 0 9.384466922e-07 0 0 8.235858078e-14 0 0 0 0 0 0 0 0 0 2.127524041e-16 0 0.02918831839 0 0 0 0 1726545.13 1.013634967e-06 0 0 0 903263.287 9.663527737e-11 0 0 0 0 0 0 1.275723801e-21 1.780635042e-06 4458.21578 1267659.373 0 5.565180984e-16 0 1.292198364e-07 49.73772124 0 0 0 3.475978861e-07 9.773531657e-11 0.006430505573 0 0 0 1.811628253e-10 1.042603455 2.411650695e-13 1.70930011e-15 0 0 0 3.859513512e-08 0 8.996501544e-15 1.26818439e-05 5.181912726e-12 0 7.893528345e-05 1.071111646e-17 0 0 0 0 0.3165520562 0 2.55601846e-07 0.0003632453051 0 6.366150298 3797.926172 27.95217233 0 0 4.113951839 0 0 0 0 0.002529080306 0.000437934584 0 0 3.076727882e-08 4.471832494e-07 0 0 0 2.177624194e-05 0 0 0 0 0 0 0 4.046458312e-13 0 2.591624703e-09 0 4.060146328e-08 0 1.458176567e-05 0 0 0 0 0 1876.966461 0 0 0 290.8567721 0 1.237146258e-08 0.003843098189 2381.519046 0.0277050701 8.820311452e-11 0 0 0 0 4.012864179e-06 394375.7416 0 0 9.326703376e-09 0.0003280911586 0 2.047664606e-13 0 0 1.330171812e-14 9.498940959e-06 11396.81642 0 0 0 0.001782378883 0 7.811503407 0 0 0 0 0 0 3.9994058e-14 81690.36287 1.33796229e-12 2.653500719e-07 5.548556566e-14 0 0 0.7714312493 1.329037892e-15 0 1358531.521 7.238188746e-14 135798.5251 0 331.2008321 0 582.7038663 0 0 0 0 4.197149057e-09 0 2.531068753e-08 0 3.23242746e-06 0 9.635593445e-12 2.256929074e-11 2.730319679e-11 821298.5465 1.432081801e-07 3.625483026e-10 0 0 0 0 0 0 0 0 0 0 370551.9552 0 0 146.5616732 0.05807827616 0 0 0.01651981317 0 0 0 0 1.425434977e-06 0 0 0 1.079561777e-08 0 2.680801644e-09 0 0 0 0 2.338530896e-13 0 0.01892580385 0 298402.1858 0 0 0 0 8.513158317 0 0 3.968737581e-09 1.478178184e-08 0 0.006967780613 2219773.005 0 0 0.003261924159 0 0 0 0 0 2.65488894e-09 0 121563.3967 0 0 0 0 1.242168751e-08 0 5.929060426e-07 3.7041066e-15 546.2457849 0.02088776466 1.975279504e-16 +0 0 0 6.158857753e-05 2.163575723e-08 0 0 0 7.232009412e-20 0 0 95.36187147 0 0 0 507.6086939 39.85257568 0 2.895193339e-07 0 0 0 4.538902491e-05 0 0 0 0 0 2.735398526e-07 0 0 1.615266053e-06 1.946015715e-19 35.08038265 0 0 1556.075148 146541.0277 0.0009425703046 5127.489776 0 0 702.3285444 0 5.339457517e-09 0 0 0 0 0 1512.498254 0 0 6.931953617e-20 4.232033258e-15 0.01853500695 0 0 8.130708173e-08 0 1.451747177e-12 2192561.547 0 0 3.785457878 0 0.2923386269 2.293463348e-05 0 0 0 2.666863041e-23 0 0 0 0 1.785215291e-12 0 0 4.982048703e-08 4.27050851e-09 0 2.514776505e-24 0.003824749831 8.15996905e-05 1.77996184e-06 0 0 7366.398546 0.0001141665246 2.951249423e-10 0 0 0 0 0 0 0 6.849939837e-17 0 0 2.699554172e-16 0 2.758457913e-05 0.0001402087218 0 0 0 0 0 5.078316767e-05 217.5226493 7.033608246 3822.92097 2204004.266 0 0 171558.3584 0 2.669701528e-15 3.842768481e-05 0 1.678352873e-15 1.767425248e-22 19.56481837 3.821852423e-22 0 0 0 0 3.397903858e-12 3508307.624 2.457497295e-12 14656.40868 0 2.430301125e-07 0 0 0 0 6.050591859e-17 0 0 10.29557215 1.157693624e-24 8.552269019e-08 0.0001738889544 2.572107983e-16 0 0.004058645761 0 1.601912102e-23 0 0.02066688044 2.914230627e-07 0 0 6.209608437e-08 2.370588439e-21 0 50536.11746 0 5.548276787e-31 0 1.93636584e-10 1.360859267e-08 3.453488077e-12 0 11736.60264 3.823992656e-21 0 0 0 1.613644967 1.739079944e-16 0 2.552150825e-10 0 4.093124227e-13 0 1.151815402e-19 0.0005895984932 0 0 1.908397613e-18 1673.858765 0 0 0 0 0 0 0 8431.398793 0 0 0 0 0 36053.77358 0 0 0 0 0 12609.21525 0 2.253800404e-06 266.601647 0 0 0 2178.572242 0 0 1.808054659e-21 0 0 1.576657976e-09 0 0 0 0 195.2193715 1.549802793e-12 0 0.0009838719797 0 3.816817628e-07 0 0 0 0 948377.5914 4.17031145e-16 0.001550396174 4.867829086e-12 0 1.519436644e-15 0 471810.3728 0 1636.90539 0 0 0 0 0 0 0 0 0.0001929644786 0 5.957980594e-11 0 5.064293765e-11 0.0006373385692 0.00491327993 0 0 0.0002441374765 0 0 0 0 0 0 0 0 0 0 0 7.429349222e-15 0 0 7787.152787 0 0 0 0 0 0 0.0001617736783 0 0.01379977428 0 0 0 0.002552068282 0 0 0 0 2.669254457e-08 0.005247574823 0 0 0 3.4237487e-23 0 +102825.3264 0 0 2.708260553e-05 0 0 0 2.080250479e-06 0 0 0 0 0 0 0 0 1.982221064e-06 0 0 3.566066622e-20 0 87.56326479 85.19185617 0 0 0 0 0 3.392740756 0 0 0 0 0 0 0 4.634513427e-07 0 0 0 2.109878382e-15 0 0 2.320645583e-10 7.952945737 0 0 0 0 0 0 0 5.474832376e-06 0.009808454047 0 0 0 103759.828 0.06620659075 0 0 2.364394662e-14 0 0 0 6.81999116e-16 0 95.23080312 0 2.910130456e-14 0 4.578604313 74788.01842 0 1.229557737e-21 0 0 0 0 1363.883421 2.937816091e-11 0 49625.51721 0 0 0 4.809417419e-21 0 1.528580313e-14 3.377190635e-17 4.404935997e-09 0 0.001469963461 0 0 9.706483283e-21 16.35029472 0 0 0 1.002920929e-10 0 7.829800932e-11 0 1.388919255e-07 0 1.165675471e-14 1.74412953e-15 0 2.847775984 0 3.866017039e-08 118.7868575 0 443.8203142 3.565346571e-06 5.059626471e-07 1.266011912e-28 0 88257.84736 4.099703361e-06 0 0 0 0 0 0 0 0 0 0.0008044512206 0 142.2604705 0 0 1.617954995e-16 0 0 0 2.795127337e-13 0 1.039707577e-05 0 3.095831961e-29 163171.4268 2.786417244e-11 3.455970094e-18 0 5.384022866e-09 3136.520155 0 0 5168.477813 0 592604.92 0 0.01214365284 169.4563219 2.992182827e-11 0 0 1187069.86 0.3442278482 2.968213074e-06 0 15899.62508 8.690012251 1.84760136e-08 0 2.009860312e-29 0 3.74452886e-12 23.69272849 2.720030578e-14 2.958799094e-05 0 0 0 0.8645689674 0 2.580217277e-14 0 1.691625679 0 14.26736309 2.168259455e-10 0 1765.355449 0.2483611485 3052.003449 0 0 0 1.977442586e-07 6.323513422e-07 9.265702672e-06 459314.7303 0 0 8.529967235e-12 0 0.005786583091 0 7.585125463 6.032602331 0 2061906.362 1.584428646e-08 0 5.941338525e-06 2.582957667e-19 0 0 0.0003304508118 0 0 1.762001951e-05 0 0 0 1.65389757e-06 603269.8566 0 0 0 0 1.281922913e-10 61.18720379 0 0.004286792162 152977.6141 0 0 5.228758679e-13 1.607229333e-13 0 4.601896302e-16 0 3.687837792e-16 0 264542.6239 2.060188716e-17 0 0 0 0.000196743518 2.121649492e-05 1.034069895e-09 5129.133157 2.008776414e-11 0.0007753416768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.478742167e-07 0 0.001933184611 0 1.004829576e-16 0 0.01629989811 60557.34685 0.0008544632568 0 0 0 0 1.177984079e-09 188108.2723 0 0.1795162098 0 0 104.4199646 0 0 0 2297.261744 0.0006460793424 0 0 0 0 0 0 1.954166946e-05 +0 0 0 0 0 0 0 1.978782109e-11 8.440084788e-13 2.101657546e-08 2.714197857e-10 0 0.0008673358449 0 6.701639812e-06 0 0 0 0 0 2.683263601e-08 0 0 0.009715397666 0 0.139876413 1.774158749e-05 0 5.883569771e-35 0 0 4.322460606e-15 0 1195914.386 0 0 0 4691.491604 0 0 0 0 0 0 0 5.64209576e-16 0 0 0 0 2.461403427e-17 0.5684570896 0.02866741527 484563.4794 0.002444138282 0 0 2.552364056e-12 0 0 0 0 0 0.7309373323 0 0 99.99480577 0 0.3163289724 0.0214559459 0 128580.5223 0 1.606782479e-06 31237.73165 0 1.334866766e-05 0 807.8375036 0.01947534744 72253.46777 1.0203851e-05 0 0 0 8.721106001e-14 3703080.554 2.624085692e-11 0.1718643824 0 0 1.76995285e-15 0.0006001048316 0 0 0 0.2442852929 0 1.233188434e-07 0 0 0 5755.335955 0 0 0 0 0 0 0 0 0 7.399474122e-14 3.579793519e-10 0 0 0 0 3.544071116e-10 0 4.111358829e-17 5.867624101e-10 1.581291808e-06 5.351040266e-15 704850.08 0 0.01534054852 0 4.643076848e-11 0 0 0 1.125105376e-12 0 0 2.785196483e-10 1.713470362e-21 0 6.893346839e-12 0 0 0 1.119555631e-07 0 0 0 0.0006657008163 3.157681377e-10 1.847162281e-08 0 0 0 9.429838484e-13 0 3.979559593e-07 9.207024537e-12 2.839924577e-08 0 0 1451864.575 1.773696891e-05 0 11.96319584 4.050428296e-08 0 9.868941408e-13 0 4.920859492e-08 1.768379905e-07 31.73634492 1892.036363 0 13.74681799 2.067512668e-11 0 527632.6973 4.428801821e-10 0.1815718923 0 0 0 0 1.372027412 0 0 248758.7703 5.447077924e-05 0 0.01019962943 0 0 23042.98844 0 9.247893501e-12 3.292728161e-12 0 0 1.838083248e-05 0 187.384782 0.09736280366 0 2.985341292e-09 0 0 2.412971571e-13 181.3134583 0 82294.62634 0 0 0 568774.7025 2.539847983e-05 0 0 0 967418.5714 2213.528491 0 0 0 2.863964815e-16 0 0 0 0 0 0 1.925446216e-09 0 145083.904 0 0 5.552466447e-10 0 0.1412501089 0 0 0.0002509969041 0 0 0 0 0 0 0 468.3209717 0 0 0 0 0 5.39264823e-21 0.1514366816 0 0 0 0 0 0 0 4.04177908e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.771625737e-12 0 0 8.474707868e-09 1387954.868 1.13599613e-05 0 2.886460326e-07 4.914135374e-11 0 0 0 0 5.972161399 0 2.512852565e-19 0 1.811133912e-14 1864.904113 +0 821.6934673 0 0 0 0 0 0 0 0 3515.828078 0 640311.9724 31.35295856 0 1.478104047e-19 0 0 70554.4511 0 0 8.424131633e-15 0 0 1.797409389e-11 0 0 0 0 0 0 0 0 1.269606377e-21 0 1.725754996e-08 0 0 0 4.588718802e-28 0 0 0 12.981562 0 2.752854405e-13 0 1.201729167e-10 0 0.1054236979 0 19885.70733 0.1498617146 0 0 0 0 0 0 0 0 9.646884343e-06 0 0 0 0 0 5497.842487 0 0.002311760042 0.00115146928 5.101351908e-17 3.638925153e-12 162426.0399 2.929212321e-10 0 0 0.0002637243854 0 0.0001140520162 0 0 3.966185434e-06 152012.4611 1.391926123e-11 0 1127.81668 0 0 0.0005331375348 14094.86813 0 0.001983380917 5.272009371e-10 0 0 0 0 5.052909642e-07 124132.6236 0 9.741343022e-33 95900.5507 0 0 0 38455.19087 0 0 0 2.899962012e-10 1.341438374e-09 0 0.2462627166 0 0 8.74914322 0 110782.3915 0 1.068888802e-05 0 1.791436974e-12 366066.4553 3.048747547e-05 0.002323310833 2.493692366e-08 2.57990881e-07 7.488933325e-12 2.794542722e-17 5.966725837e-09 0 0.001957826026 0.006146681571 0.1116012183 0 0 0 0 5.104397973e-05 0 0 6.320165041e-08 0 0 1.578006999e-10 26753.44394 0 8624742.255 0 0 2.022713696e-12 0 0 0 0 0 1.495223724e-07 0 2.195780627e-15 0 0.0002737639022 0 1.996545828e-05 0.6356900825 0 0.3382065899 98283.93481 0 0 0.0005420632892 0 0 1.880864075e-11 1.958778208e-13 111.0517477 4.074970067e-14 0 4.21149077e-06 11652.31937 1.040831329e-12 0.02387772093 6.855212829e-05 3392.115791 347.0666743 727958.438 1057.491811 0 8.778085349e-06 0 0 0 5.086743987e-09 0 0 361.4118442 960.4935386 0 0 3.523251147e-22 0 18983.77731 4.448603175e-07 0 0 2.526220017e-13 1.321164705e-09 0 0 0 0 0 0 111437.3322 3.889778056e-10 11.27137972 0 0 0 0 1.027028021e-07 0 0 0 1.506702752e-10 1.763813871e-11 1.301494338e-14 394253.3676 0 8.310402144e-05 0 0 6.052901128e-11 0 0 490351.3106 0 0 0 1.774903903e-17 6.007648926e-12 0 0 0 1.563443911e-16 8.574070202e-11 0.2211706359 0 0 0 0 0 9.796641017e-15 1.345585972e-15 0 0 0 5163799.54 0 0 0 0 0 1.592696642e-07 0.01001948773 7.582861973e-07 2.232302006e-12 0 0 0 7.686426995e-15 353.200904 7.005910482e-08 0 0 0 0 7.35540487e-08 249756.0226 0 405.8858928 0 0 3.009667743e-12 40.28003678 0 838.334939 0 0 5.946959116e-13 1.97449831e-19 0 0.01248032415 0 0 0 82571.78639 0 0 1.440071143e-15 +0 0 0 0 1.129465117e-18 0 0 0 0 1141488.789 0 6.21107845e-08 0 0 0 0 0 1.390024542e-07 0 0 10.10118677 0 1.222272562e-20 0 0 0 0 0 0.1461661495 6.956170681e-08 0 0 2.006098242e-14 2.688158193e-10 0 1.798574648 0 9.589419423e-10 0 0 0 0 1.55680579e-14 0 142.9021225 0 817129.7089 0 0 0 9.468027129e-06 0 4.03963663e-14 0.1814660139 4.450514837e-12 0 0 0 0 0 0 0 7.046148729e-16 0 3.014889146e-10 0 0 14.90798047 0 0 0 0 0.0008950548508 0 0 0 166537.9064 0.4025521459 1.08959708e-15 3.848031143e-18 0 2.755882804e-18 1.705447258e-06 0 799.555182 0 0 661730.5661 0 0.0005816426078 0 1661279.016 0 0 34.53778821 1.653783566e-08 0 0 5.354365908 1.742112294e-27 1.377574617e-07 0 0 0.01622148132 62242.91745 0 0.0004868279482 0 4.074054358e-06 0 0 0 0 0 0 2.135691726e-08 0 22311.01939 1.150769677e-27 7.3204728e-06 0 0 0 25.0090374 0 1.079301085e-10 1.230953924e-12 0 0 5.228130235e-15 4.746703395e-17 0 0.0001115820203 1.157919374e-16 435157.9819 0 534329.7795 0 0 0 0 74436.18879 0 65150.27789 0 4277.711461 0 0 0 8.729482024e-09 0 0 6.644753932e-05 362004.0088 7334.045363 1.197480725e-16 53.37579543 0 0 3.39509984e-12 0.0002113079934 0 0.0003187530221 0 5.819554546e-12 0 184438.5975 0 0 0 5.166234493e-08 831.259246 0 0 2.909637789e-21 0 1049789.935 0 0 0 0 514612.7956 1.13748325e-08 2.406685827e-07 0 1.091095694e-14 5.774362217e-13 0 0 0 0 0 0 0 0.0005440831223 5.987621829e-10 6.341407418e-15 0 0.005804976503 223.5568728 381707.9032 250.8115513 0.01169937618 0 0 0 0 4.256684529e-21 8.345889253e-11 0 75887.95816 0 0 4.414834051e-18 0 4.160533422e-06 0.1015104369 0 0 0.004448534085 0 197.9607235 1.151803431e-10 0 0 0 0 4.470011162e-06 0 0.001312251761 0 0 0 0.0006610791165 4.272384515e-05 0 527.7654531 2.139511694e-17 4436647.338 0 0 0.001159566509 0 0 0 0.004311817502 0 0 1356.834878 0 0 0 0 0 0 4.085980418e-29 182690.3274 0 0 8.309587432e-10 0 0 0 0 1.038596116e-21 5.033060081e-14 0 0 0 0 0.08967152844 0 579.9190706 8.975274352e-13 0.001033715325 1.0505028e-06 5.098887337e-27 1.48854949e-05 3.186913732 0 0 8082.443971 0 0 0 0 718.3107408 0 0 0 9.842497301e-14 0.01422458427 0 2.237880204e-17 0 0 0 0 0 718.8503974 +0 0.0003432296036 0 0.01685594482 0 0 0 0 0.0001470940126 4.317349948e-09 0 3.862637942e-17 2.053240924e-16 8.836381784e-10 0 0 1.648676007e-05 0 0.005155253906 1.436892926e-09 0 2.541739206e-14 2.835690572e-07 0 0 0 0 0 0 0 0 1.276975813e-14 0 0 0 0.002423923287 99789.27221 0 0 0 0 0 0 450.6137354 0 0 0 0 3.128984919e-07 0.01118659231 0 0 0.2169830429 0.05401483519 0 12566.28432 0 3.5260395e-14 7.665082642e-08 2371.392987 1.192524524e-10 0 3944.860036 2.128436802e-10 0 0 8.560608032 3269.925177 0 66033.8691 1.093233148e-15 0 0 0 0 1.226702112e-13 0 0 0.01243697345 0 1.541280421e-11 1.443036953e-14 4654.229342 0 20615.51285 0 3.269429017e-11 3.304835955e-07 0 0 0 1.099885026e-11 3.612967086e-18 0 0 2.776776533 0 0 0 1.772273933e-28 2.311978393e-11 20022.36492 0 75217.21236 0 31568.67546 2.745813697e-13 0 0 1.161494484e-06 0 3.320041911e-22 0 57.01055964 39.71591647 0.00175367567 0 3.422363337e-23 0 4.966789879e-17 0 0 0 0 0 3.296305694e-20 114495.0577 0 0 0.0001017946189 195161.7498 0 2.198144229e-07 1.159821787e-08 0 0 3.861244559e-13 0 7.288055129e-06 2.46849298e-16 0 0 78432.06696 5.316684535e-16 0 0.005633215654 2.184945485e-17 0 1.300306303e-06 0 0 5.191356871e-06 2.715798648e-10 1.506569853e-12 0 0.0005302297077 3.421111883e-08 38184.71985 5.224805632e-10 0 0 0 4.671520807e-07 0 42755.05947 0 2.34503671e-09 5.30347385 0 1.693058703e-06 0 18315.27053 1.855597028e-22 3.586539122e-13 0 0 0.003107155173 0 0 17.49559001 0 2.921620357e-12 0 0 0 1.280756858e-15 2.123917638e-06 1.398061581e-19 0 0.309358512 4.099093965e-05 572246.3775 1.78280185e-11 1.081964946e-29 3.334957467e-10 1.701547066e-10 0 5.638999543e-17 13950.01068 0 1922.5304 0 0.003204424236 1.405740864e-10 0 0 0 4.685601072e-17 55.25925504 0 2477405.023 0 3.775743911e-09 0.0228007107 0 56315.86923 0 3.893706884e-06 0 0.02474157167 232.3846908 212.741967 0 0 5363.181779 9.84197672e-10 0 9.368688017e-19 0 0 0.007991208659 0 0 0 0 3.508542099e-06 0 0 6.176799831e-09 7.981242255e-18 0 0 1707845.762 0 0 0 17744.04039 0 3.739302898e-09 0 1.910705533e-11 0 0 0 0 13162.08409 0.001426753782 0 4.474842874e-06 0 0 0 0.5569537434 0 0 0 0 0 0.009518445348 0 0 3230.081181 7.286048171 0 0 0 0 0 0 0 270470.5143 0 1.699889765 0 0 0 2.201203224e-07 0 170119.5237 0 0 0 0.03786588176 0 8.711758038e-13 0 0 1.666948276e-13 0 25383.39233 +2.275581565e-08 0 3.309144307 0 0 0.3794837944 0 559594.8782 0 8.734116874e-12 8.623497235 4.957721068e-19 9.53143525e-07 0 0 0 0.0003114795867 0 0 0 0 3.954990285 0 1.916425482e-10 0 0 0 5.604322008e-09 0 0.001623052026 0 0 0 0.0002392368554 0 3.285300773e-14 0 2.854612008e-11 0 1.247462975e-06 0 0 0 0 0 0 8.580989195e-12 0 0 3.918765584 0 4.616910907e-06 1.293871358e-08 0 0.0001860548495 0 0 0 0 0 0 0 0 0 9.794600679e-16 5187.015142 0 0 0 0 2.541644707e-18 0.1737936292 3300.724618 0 0 1.246418339e-10 26202.09286 1.660159578e-10 0 7.510620614e-17 0.0001800525261 7.023106633e-07 1.033100185e-12 0 27001.00667 0.8864402102 159522.3519 0 0 1.45662751e-11 75.34733554 0 0 1119.716003 2.479594407e-15 0 0 0 0 2.089490754e-13 0.1855297594 0 0 8709.657997 6.393419515e-17 51230.91146 0.005282961549 135441.7096 1.849738766e-07 1.094632098e-05 845306.8402 0 0 1.640282091e-16 0 1.999559062e-07 0 0.002403674299 0 5.826630098e-22 0.001303587498 0.6533167122 3.386690778 0.006828915086 6.709473074e-15 26970.83826 4.585444747e-13 2239.075497 7506.507398 0 0 0 1.174809284e-11 0 22.28884615 1.32185227 4.989166021e-07 1.726952188e-10 0 0 0 7.274980451e-23 293.0148634 22946.74108 5252.192538 776318.7154 0 0 1.279905013e-14 0 1.837001415e-11 0 7.301640076e-19 0 0 0.005605796585 1264.861115 0 0 0 6.749466159e-32 8.078700829e-13 299049.4764 0 1.416819326e-17 8.464770327e-06 0 3668299.205 0 0 0 12744.8356 1696028.439 0 0 1.569498448e-07 0.01653669705 388585.7926 2.334801938e-21 637.9152254 0 0 6597.197514 2.330424089e-16 0 0 9.518639763e-07 0 0 0.0001216681492 0 0 8761.66354 3.293538851e-13 19091.77363 24.08996722 0.004593188116 0 0 8.030416846e-07 6.245486547e-20 1.297958218e-12 0 0 3.177953353e-15 1.733165125e-07 0 349.4385434 0 3.917594223e-09 1.05542058e-15 0 0 0 6.938863612 0 0 1.343694335e-07 0 0 0 0 2.667043525e-09 0 0 0 0 1.24606611e-06 0 0 0.129125856 3525203.744 0 0 2.49030112e-08 0 0 45.08176789 0 0 0 5.698433352e-17 5.883512201e-05 0 0 83.16009944 0 3.874370416e-13 1.095171248e-05 0 0 1.952765278e-17 0 6.877719443e-17 0 0 0 0.00430994612 0 0 0 0 0 0 3690.699091 1968715.826 0 0 0 0 0 0 0 0 0 1.739635116e-15 0 0 0.2541203407 0 0 0 0 0 0 0 2.113721332e-06 0 0 0 9.336596931e-21 0.0002396825765 0 0 0 0 0 0 0 0 +0 0 0 0 2.399132302e-06 5.314231089e-07 0 0 6.446295107e-08 0 2.38813364e-09 0.02008565237 0 0 0 0 0 7.849468337e-08 0 0 0 0.007594872158 0 5.310289109e-11 3.838445588e-16 0.09339002962 0 0 0 0 0 0 0 0 0.07040201367 0 2.236057038e-06 1.89203668e-07 0 0 0 0 0 1.187737011e-21 0.4201884637 0 3.364043467e-13 396295.7721 1.311176167e-12 0 9.861839418e-10 0 0 0 0 0 6.631222293e-07 235306.0984 0 5.009663243e-14 0 0 1.319479713 0 0.0004360574798 0 2.025219404e-10 1068.957417 1.192363125e-24 0 0 0 0 0 0 2.018878676e-24 0 6623.295036 104948.5014 0 0.2456362097 0 0 0 7.01396127e-06 0 3.516961191e-13 7.346224211e-09 2.222686558e-08 4.211146385e-10 27163.99759 0 0 8107.269028 8.559459712e-16 0 0 0 0 5.200657514e-25 0.01195127361 0 0.0002172300786 0 8.960961452 5.413655518e-07 4.6906179e-13 6.565486834e-16 0 0 937.9165078 0 3.093953371e-13 1.39483532e-05 1.997178928e-12 0 4.599632065e-15 0 3452.306857 9.123393293e-21 0 0 0 0 1.638236256e-05 1.361971871e-05 0.01908383261 0 0 0 0.01061367342 0 0 1.878994617e-16 4.558315576e-08 0.001289777108 2331.388229 0.3148809854 0 0 5.139955406e-13 7.529487613e-14 1.82258398e-09 0 264962.8505 7.237366048e-17 0 1.126343225e-06 0 9.697635452e-13 0 0 0.0003296169303 12.42934067 0 0 0 0 0 0 2.732882252e-05 12.56410123 0 2.750529466e-13 5.73710577e-06 0 0 0 0 1.421578274e-12 4.067703814e-13 160673.6851 0 3.554253212e-14 0 1.525194671e-11 0 0.2246182586 1.923900123e-11 0.02442826458 3.413397977e-09 4.379977221 0 6873.406812 3606958.351 3.649161293e-16 0 9.912816641 0 1.657269302e-08 7.139641271e-12 0.001352707891 6.213011699e-23 0.01256128219 0 4278.607952 306688.5909 0 0 303446.6571 18.50375872 0 1.962261998e-11 1.82889648e-11 1020776.317 58062.26574 4.872332212e-10 0 0.01894908174 2.811281773e-10 6.171073754e-11 2.765198353e-14 0.0449891106 0 0 0 0 152166.2953 0 0 0 2.841331259e-10 0.005587639383 0.0002035812674 8.238380703e-08 0 0.0001416124643 0 0 2.348181509e-06 0 0 5.247541389e-14 0 0 3.219485561e-11 1.367116971e-05 0 0 0 0 0 0 0 0 0 0 8.21287156 0 180870.1377 0 0 0.004484327135 0 0 0 0 0 0 0 0 383930.4374 0 6.868035467e-10 0 0 0 0 0 0 1.110077194 0 0 0 0 0 0 4.444224174e-09 1999.81005 0 0 0 0 0 1.509823141e-06 0 0.004657016783 0 401.0935714 0 0 0 0 1.664864772e-13 0 0 8613.001929 0 4.348789489e-20 0 +0 0 0.0002073770777 0 0 18387.80553 0 0 0 0 7.631264259e-09 0 0 0 0 0 0.0133084829 0 0 0 0 85133.72888 3.267856607e-12 2.574366705e-19 0 0 0 6.889836206e-05 0 2.350450121e-09 0 0 0 0 0 0 5.877914883e-12 0 4.656279805e-05 0 0 6.454723468e-28 0.2102978381 9.467715763e-21 0 7.882657366e-14 6.235988678e-07 0 0 0 0 0 0 4799.280446 0 205838.6859 0.000820952084 0 0 7.529221304e-18 0 0 0.02448672354 0 0 0 0 983934.2932 0 0 0.007911456604 0.0005370750263 20696.979 0 0 0 0 0 0 0 222.2846785 0.6017039005 4.031514721e-23 0 0 0 0 941470.5948 0 8.22470709e-21 1.085387224e-07 0 0 87.15870041 0 0.0005578794076 0.002966977878 8.938908606e-19 3.308333049e-09 59.35617785 2.938046744e-15 0 0 0.004551800635 0 0 0 0.0008059793459 2448.470719 0 1800405.931 0 6.684004676e-25 1.353034337e-13 0.0007011163486 0 2.394129698e-07 1.881902218e-23 0 0 0 1.431805843e-13 0 0 0 1.33956617e-16 0 0 0 0 4.984951351e-15 2.276977844e-09 0 2.099221006e-12 5.517318156e-15 0 2.947961443e-06 593652.6165 0 0 937578.6428 0.04500869269 157.2237451 1.070976157e-19 0 0 1.343312137e-07 9.053738694e-09 0 1.799745078e-06 0.009182089404 125.6685854 0 0.0008413746569 2.969561379e-18 0 0 146799.2094 30682.42935 1.450316806e-07 2.753906535e-10 0 0 466442.2773 0 0 0 5.988502827e-17 1395555.503 0 0 6.565114184e-16 0 0 2.556438323e-08 4.954202421e-17 0 0.0005779541415 0 0 0.005636245429 6.008392612e-07 7.000391913e-09 1197153.02 0 9.453093284 2.148213074e-12 4.698373305e-12 0 2.445815779e-05 0 0 0 0 0 0 3.240548071e-18 4.362823925 0 0 0 0 141.8983508 0 0 0 23.40820973 1953592.416 2.860741326e-13 0 0 0 4.643897957 0 0 0 8.904756142e-17 0 1.194977444e-08 1.011490316e-28 45658.37909 2115588.495 0 0.3303254934 0 0 0 0 0 0 1.770164311 6.86382531e-14 1.522766812e-18 0 0 0 393.113679 0 0 0 0 0 0 0 38.21293542 61284.67476 0 5.283129031e-05 0 2.39569697e-10 2.063965076e-05 1.931499605e-07 294.4730287 0 0 0 0 0 0 0 0 1.233967004e-05 0 0 0 0 0 0 8.318390774e-13 2.889315654e-07 0 6.703623326e-07 0 2.923858516e-18 0 8.030556993e-17 262611.3019 0 0 743284.644 0 2.210799195e-08 22.05224319 274.7401814 0 0 0 0 0 0 0 0 4.668611695e-06 0 0 1.750300245e-14 0 0 0 0 +0 0 1.107312353e-12 0 0 0 0 5120.916538 0 0 0 3.827671916 27756.02577 0 0 0 65567.40715 0 0 146688.0142 0 0 0.7008839544 0.005206770055 0 0 1.225778463 0 9.901874291e-08 0 0 0 0 0 0 0 0 0.0002084020145 8.365478935 0 0.04034095512 2.790402036e-12 0 0 0 0 0 0 0 33.68490513 0 3.134525552 0 0 0.001249962297 0 0 0.1185383615 2.506425619e-10 0 1.355656007e-11 0 0 0 0 201.145975 6.057867253e-11 0 0 0 0 0 6.562631485e-07 0 0 0 0 0 33945.2456 8089.399325 0 0 0 1.384332589e-19 8.279656131 0 0 0 0 0 146.9629154 3.513431493e-06 0 0 0 19.94770765 0 0 0 253.357441 2.821627661e-14 0 2.650318076e-11 5.47332472e-15 0.04106545661 3.749127868e-21 0 4.181676035e-07 51716.96196 0 2.040589939e-16 3.890686069e-10 0 6.476330415 0 8.698583619e-08 0 0 0 0 162732.2564 2.851449409e-28 1.439588033 0 229.6175343 0 0 0 0 1045493.316 0 0 0 458852.2323 7.86059047e-08 2.783769456e-05 0 3.54375741e-13 1.673619931e-14 1249.138891 0 0 0 97931.08537 4.790688312e-15 1.833770638e-05 0 22789.84758 0 0 0 1204.376761 0 0 318813.6984 0 0 0 0 0 7.599877828e-27 2.284399344e-08 1527377.487 0 1.615014515e-09 122.5944533 0.113738244 0 0 8.160500267e-15 9.926716394e-14 0.003209773018 842888.461 0 8.962149069e-18 1.426787606e-06 0 0.0001281056365 0 2.863039808e-07 0.1438168238 6.434576795e-08 0 0 0 120.5618155 0 0 1.972802142e-18 0 10985.69093 3.896688639e-18 3076815.725 0 0 0 0 190098.4378 200434.1393 0 0 1.268566774 0 0 4.205207751e-14 0 0 0 0 0 0 0 0 2.252268612e-13 0 181405.2179 0 0 49.63756402 0 0 2.465008597e-16 121.6149802 1.228362604e-13 0 2311661.392 0.0006676336894 0 0 0 0 0 0 50.90948944 0 2964892.661 0 0 0 7.993531171e-23 1.401106257e-21 0 0 0 0 0 0.004005907256 0 0 0 0 0 7.508218314e-09 0 1.997697017e-33 0 1815523.431 0 0 0 0 0 2.871370599e-25 0 15593.0212 0.01028308129 0 0 0 0 0 9.974073298e-16 0 0 4.474755431e-11 0 1.536366604 25.60995983 0 0 6.06876372e-13 102.1720773 0 0 7.450015396e-09 411485.3524 0 0 0 0 0 0 0 0 0 0.004009228292 0 9.547158703e-19 0 0 +0 0 0 0 0 0 2.983891965e-14 0 0 7.654066216e-28 0 0.3762704661 0 0 4.349370855e-13 0 1.602308619e-11 1.036479409e-10 0 0 5458.891515 0 0 0 0 0 0 0 4.279445191e-09 0.01777851479 0 5.783687172e-13 0 0 3.064919383e-09 3.705104015e-07 0 0 396143.2803 0 1.80651367e-10 0 0 2.379337303e-06 0 0 0 0 0 0 0 0 0 0 0 227474.6393 0 0 0 0 0 0 0 58.21072437 0 0 0 0.01835132449 1.330416501e-09 0 0 0 7.024750151e-10 686209.5556 0 0.007560010536 5.726045587e-13 0 4.555635666e-13 1020332.633 0 3042512.794 0 0 0 70.00075394 0.2953383364 0 144207.4799 0 0 655133.5793 0 1.930416364e-08 19.03798408 0 1633114.104 0 479810.0274 0 0 478701.7868 2.625222579e-10 0 7501.326997 0 0 0 0 9.887947062e-15 0 1.788373975e-13 11711.82259 0 0 0 0 1.053685582e-06 0 3.684095741e-16 2.621256036e-06 1.921504356 0 0 0.1051099052 44.71836077 2.881218067 0.0001508649434 0 1.224624267e-18 0 0 7.513039827e-09 6.728891389e-07 0 2.154282806e-15 0 0 0 0 0.3137077078 836922.3901 4750.8743 8.318230354e-11 102819.8014 2112647.829 0 0.1696290227 2.236227548e-23 0 7.738760064e-20 0 2.04974036e-09 0 0.01686275208 0 0 0 77554.70656 5.034207219e-06 1.530079308e-24 0 2.598813347e-18 48.3089379 0 1.638115561e-09 2.861094417e-08 6.783417337e-09 0 1.081068461e-10 0 0 176975.2088 36013.94856 0.0002195454818 0 0 0 0 13.13575637 11657.64753 2.210634575e-07 0 0 1.551095307e-11 77.0864277 0 0 0.005361251872 0 1.579880679e-27 0 0.02541578958 0 2.85370237e-11 0 12.00688472 4.673358964e-09 0.0003559039374 0 80818.06049 0 0 1253.356023 6.419052303e-08 0 1.288719554 0 0 0 0 0 0 0 0 0 0 0 6.325575573e-11 0 0 0 3.267395304e-15 0 0 3.591527252e-18 2.932825001e-09 0 6.89056087e-05 0.7422032206 0 5.24805793 0 1.326260486e-17 1.136734592e-16 0 0 0 329.0664383 0.001825000437 0 0 0 0 0 1.070339534e-06 0 1.978126355e-11 0 0 0 0.9726060113 0 0 51210.81913 0 0 0 1.127860712e-08 0 0 0 1.974680732e-12 0.0002351344541 3.154261782 7.382723726e-24 0 3.204677161 0 0 0.0001302949032 1.90855473e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005991756373 0 0 493.0466194 0 0.1531424484 2.360857509e-18 0 0 0 0 0 5.776952082e-17 0 0 +0 0 0 0 0 0 0 0 0 6719.809234 0 0 0 0 1.12746797e-09 0 0 0 0 147.8025993 0 9.282332176e-09 0 0 0 3.179783667e-09 0.05889136308 0 0 1.591519352e-14 0 0 0 1.689892392e-08 0 0 813012.1543 267.3609329 0 0 0 0 0 1.891310502e-06 49865.87096 0 1.635907025e-11 59.20595212 0 0 0 0 0 0 0 2.449335107e-09 0 1.782979853e-15 0 0 0 0 0 0 0 0 0 0 2.148255105e-06 100904.6513 0 8.437414112e-12 4.13479938e-14 0 2.011702304e-07 0.02183766598 0 0.01553100522 825071.9668 0.8566882335 0 0 0 1.802179114e-05 0 58182.11984 0 8691.512001 4.664866461e-17 0 0.0724289103 0 8.267074944e-13 0.0218083327 0 0 0 1308.189741 3909.972344 8.002111091e-19 0 0.0001658582251 0 506823.6313 0 0 0 0 0 0 0 0 10828.32499 23.2026981 0 0 4.230389055e-15 1610.289763 0 2.373814149e-08 2231392.133 7561.504412 2.15947248e-08 0 0 2.295174367e-15 2.81194015e-06 0 1.022462733e-07 0 182619.9317 178069.1205 0.7776292224 5.100689597e-07 1.16949175e-05 10329.96084 0 2652.453099 0 9662.189786 966245.3236 0 7.941268281e-06 4.531735127e-05 0 7.320163791e-05 649.1621361 0 0 5.551352331e-10 0 0.00021860636 1.226105314e-05 0 5.383933353e-13 0 0 1.847042923e-16 0.007386525898 8993.260195 0.000133702422 0.03356274437 0 1.748474391e-09 3.178453823e-18 49152.91296 0 0 8887.750982 675127.0466 0 0 1.013371676e-08 0 0.003461985743 0 3377.831707 0 1287.290271 2.426070977e-05 0 0 0.004259189739 477.8538857 10470.40061 4.154685472e-25 0 2431.594979 0 7.186114153e-06 0 0 48.19911757 0 1.150216525e-13 0 0 0.1556193872 0.0009042080151 2.91311591e-09 0 1.033985713e-11 1.566951084e-10 3.323970585e-07 0 0 0 0 3.279029195e-07 0 0 0 0 0 0 0.0005090214196 0 0 0 5.583640381e-18 0 1038924.891 0.0002504867131 3383.475465 2.2740561e-07 1.185111166 0 4.168928705e-10 0 0 0 0 1.410554298e-08 0 1.193071466e-07 2.460133735e-12 0.00125945022 6.259534446e-17 0 0 0 0 0 0.7844439526 0.04665914968 5.463865142e-07 1.420198476 0 0.291144315 0 435215.035 0 0 0 0 0 0 0 0 66358.76152 0 0 1.655338958 0 0.00642856945 0 3.894785467e-21 0 0 0 0 0 85.68855812 0 3.924009864e-20 0 0 0.02070918485 0 0 0 0 0 0.1617812529 0 0 0 0 0 0 0 0.006288800492 415.1822438 3.201444851e-05 35.41658131 0 0 0 2519.278002 0 +1.106177438e-11 8.057335858e-06 1.874214881e-16 0 0 0 0 2213041.922 0 0 23502.75182 0 6.643145583e-06 0 0 3.291080549e-21 0 0 0 2.022666411e-19 0 0 0 0 0 47.99243436 0 0 628775.557 0.002424312291 12.6436258 5110.409356 0 0.000679193628 0 0 0 1.792796547e-06 3.634777386e-13 9.21673855e-09 1.221667715e-15 8.087214702e-07 0 0 0.0003669856004 0 0.009210550059 205583.1196 0 1.566283166e-10 0 8.563753736e-05 0 0 0 1.334098324e-15 0 0 0.04876536379 0 0 0 32.67291682 1.373828562e-13 0 0 4.17597595 0 0 0 0 0 1.139670843e-18 1162.403692 1404182.414 4.179906634e-12 0 2.565510816e-06 0 0 0 2.668240745e-18 1.111814157e-08 0 246152.1556 6.74452453e-07 0 2827314.598 0.01740698193 0 4.470131149 0 0 3.086345499e-07 45.69540007 1.488512991e-11 0 0.6495832724 1.144150537e-14 0.0001412424911 0 0 314.2071161 0 0 8.712258815e-05 8.562127026e-10 532.5689552 0.3946132255 2.297435779e-12 0 0 5.60157571e-05 0.00301931564 0 5.240399656e-13 0 1.482422937e-21 0 0.8323199572 0.2369901462 0 0 8.309204113e-12 2404719.122 0 0 0 0 4.021176589e-09 0 0 255775.4254 0 0 1.023641693e-19 0 142471.9495 0 0 0 849609.3732 0 0 2489.747275 3464228.824 4.779375839 0 0 5133.383892 0 0 0 3.291960293e-11 0 1786.13331 0 2627.887362 0 0 1404.821996 0 0 0 0 5.346135199e-08 641314.082 0.2838286633 1.975259912e-22 2.262600532e-17 0 0 1.444873232e-11 6.867156014e-10 4.299887003e-14 1.205586902 0 146530.3023 0 0 6.727274828e-05 9.083783054e-13 1.612355731e-26 0 294.1901668 784086.7615 159.0553949 0 6.635908047e-15 2.246436976e-05 0 0.2280182968 0 0 0.0007420992591 0 1.622741662e-07 0 0.01431620905 2.968550763e-09 0 7.170370736e-07 0 0.5094594468 0 0 0 1.01713927 0 0 1.156397122e-07 0 1.196505438e-05 1.009664363e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006606417508 2.367007268e-11 2.316306539e-08 0 0 0 0 22080.15144 2767.285016 5518.388451 0 1.184784e-13 2.029291517e-11 0 9.273570997e-07 0.02961607691 0 0 0 0 0 0 3.455818784e-12 0 3.861454751 0 0 0 0 0 14.32834109 0 2.396283949e-09 0 0 6699.98569 0 2.192168661e-21 0 0 0 2622.04974 0 0 0 0 1.171631752e-29 1255.467745 0 0 0.9494527394 2.29435657e-05 0 0 243.4230743 5.351393962 102860.9745 0 0 0 0 3.339521625e-05 0 0 0 0 0 0 0 0.01507171066 0 0 0 +2792340.698 7.813603515e-10 6.027349918e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.232228054e-24 0 0 0 0 0 4.558531977e-06 0 0 8.666939895e-14 4.077848525e-11 0 5.611991664e-13 0 0 0 1.647696231e-21 0 47.90865303 1.112699542e-05 0 17683.71457 0 359.1621858 6.222947956e-31 3.163277232e-18 8.586747413e-09 0 0 0 0 4750.523805 0 0 0 0 0 0 0 193637.8867 0 212124.8087 0 0 0 1.247240571e-12 0.2182925863 1652239.98 0 0 2.394677486e-06 6.313239752e-06 0 0 0 3.640114042e-08 0 0 506.2553293 0 0 1.749028507e-24 1.699179806e-11 3.119389567e-06 1.287064877e-09 1.490211388e-07 1.223585322e-14 0 1.567500358e-10 0 128066.2723 18.65081604 0 11.98225508 0 0 0 0.165410724 0 1848.529709 0.2436008407 165158.6495 1.287819872e-06 2742.198241 0.0003399791628 0.001574268282 7.205267673e-05 0 263.7083476 0 0 0 0 3.923579021e-10 6.002433363e-10 0 0 136.7109028 0 0 0 111780.9487 0 2.192273004e-26 180666.5349 0 2.291481314e-05 0 736540.1059 1.326243335 1.044368667e-19 0 0 603.2159129 0 4.610050304e-21 2.805519501e-13 489954.0573 0.107299031 0 0.001096501088 0 29358.76846 4482.608547 0 0.01659815745 38960.04274 0 0.4684744551 8953.406028 1.699730537e-12 0 0 0 0 3.056635244e-21 1.366210686 1.615722567e-15 3.894290754e-09 0 0 61989.3391 0 4.719887228e-14 0 1.09416696e-05 0 0 0 6.181977229e-07 0 4.187150734e-19 0 0.001021680404 0 0 4479.725388 1.963119343e-08 0 0 12295.64077 0 0 0 4.547499628e-13 285.1008325 5.845415714 0 0 2248.281177 0 0 6642.981544 2.629533585e-07 0 0 4.82196833e-09 1.791814801e-09 1.041652524e-13 0 0.01060043442 0 0 0 0 1.407050106e-14 125.9446809 0 0 0 0 3.483328813e-05 0 46024.01765 0 58.62587712 0 5.773411464e-13 1.430301494e-12 0 0.0001450247986 0.02298288097 0 0 229.1042656 0 0 0 0 7.03021454e-11 0 110.4331033 321.3457361 1.094957763e-23 49.02837597 0.06376681319 7.552777983e-05 0 0 0.003137344398 0 0 0 0 0 0 21135.05938 58077.40384 0 0 0 651593.0259 0 24156.06195 0 0 0.3663973331 0 0 0 0.09794367466 0 0 1.478317479e-11 46.8785449 4.109890755e-16 1.445619038e-08 0 3.173905447e-10 3.360401765e-21 0 0 1442748.844 27.8362211 0 0.0002704210949 0 1.439543437e-05 0 5885599.793 0 0 0 2.697718463e-18 0 0 0 0.07833106853 0 0.1917258936 0 0.0001193286886 0 108.2370767 0 1.881426472e-15 3.380090963e-17 0 0 0 2.755198234e-07 0 6.699627925e-12 +23531.41337 3.616439436e-14 0 0 0 0 4.829029943e-22 0 0 0 0 0 7.16220713e-23 0 0 0 0 1.152803615e-12 0 8.103076543e-06 1.281825452e-12 8.619122905 0 3.512894301e-26 1.778033165e-12 0 0 0 0 9.7980911e-08 0 3.489714728e-20 8.575547824e-21 0 0 0.000498835143 3.128788304e-08 0 0 0 0 0 0 16940.33829 0 0.5787362203 2732.128005 21.66811209 0 0 0.1708892574 0 0.0002221715672 2.264039278e-16 0 0 0 232647.1636 0 0 2.490703909e-10 0 0 0 28.84596155 35.74475348 0 0 1.066292744e-10 0 0 3.125828316 0 0 376048.0142 0 0 0.1086477464 0 0 1.420027026e-13 0 299127.6613 0.0005262502627 169791.3797 0.0002788376851 11.98457821 0.01717262305 0.0006351229681 0 1.25798074e-23 0 4.010757784e-06 0 5.483712659e-05 4.238534679e-09 0 0 0 0 0 0 2.856427224e-08 0 8.372881097e-10 0.0004912258448 1.048125649e-19 0 12659.69233 0 0 0 0 0 1.025685268e-22 0 0.001672486762 1.279792886e-07 1.237953448e-07 2.395338989e-15 1.287232773e-09 0 0 951.0110897 1.696341802e-18 9.597939475e-06 0 2.113856391e-06 5.635965077e-09 0 1.078025103e-15 5812.851656 0 0 0 30814.52277 1.458859782e-17 2.978320613e-07 0.0364448013 0 1.626541764e-13 3.926908805e-09 2.309360398e-11 0.0005551219195 0 0 0 722.4701039 8.50398933e-10 1.750079462e-10 0.001847068369 339.4794488 3.879491817e-10 0 0 0 6.845842383e-05 97.11841367 0 0 1538.667294 0.3931343773 1.384285983e-20 0 0.5228829641 0 0 0 0 0 0 0 0 4.301243689e-05 69.67659763 0 23.18453292 0 0 1.150691108e-08 2.400642893e-09 0 0.002817466201 111.92863 0 0 0 0 4.624443474e-28 0 3.084493786 5.958089258e-17 217.0907919 0 0 4.379884952e-24 0.6505966526 0 1444.135772 0 0 360230.9816 0 0 0 852.6103826 0 4.691812444e-05 0 2.321853816e-14 1.5802226e-10 0 0 0 0.002522936446 0 0 0 1.487498523e-09 0.2608819796 0 0 0 0 0 0 0 0 0 7.084132838e-14 0 0 0 0 0 0 4.391680512e-12 0 0.002945529277 0 0 0.02018844285 0 0 8.396797092e-07 5161.485298 0 0.002591022674 0 0 0 1.334408184e-10 0 0.01093354671 3.763646029e-08 2.19815075e-34 0 0 272820.0525 0 1280613.202 0 1.527221374e-14 0 0.3996555536 0 3.803101545e-05 0.0001266078419 1.017269672e-13 0 0 0 0 0 0 2.041112948e-05 12673.90115 0 0 7.400714974e-13 0 3.623770019e-06 0 0 0 0 241240.0743 1.037008211e-29 0.001173863569 5.666641481e-18 0 0 0 0 0 5.862668121e-05 0 0 0 0 +0 1.17567848e-12 0 0 535.3593693 0 0 0.01902605484 0 0.001540997898 0 1.035464264e-05 0 0 1.222174927e-28 0 0 0 0.1956274561 2.091042952e-05 0 2.402892061e-14 5.9624002e-15 0 3.294750238e-08 2.129598548e-25 0 28.20693389 0 0 0 6.873107954e-05 0 0 0 0 7.414883675e-25 0 3.952190795e-07 0 0 2.340845022e-09 0 0 0 8.989761457e-12 4.233526789e-05 0 0 0 0 0 4.072138513e-14 0 0 0 1382.820467 0 0 0 6.867205355e-11 7.173477737e-08 5.595831846e-37 0 0 176042.9175 0 0.0008432623974 0 0 0 0 0 0 0 0.02317180247 0 0 0.0002221561648 0 0 3.809283035e-11 6.575186374e-15 7.606336493e-09 2613.641579 0 150290.3454 0 1.784865586e-16 0.00174037733 6.03901869e-14 3.263829247e-06 0 0 1.300148364e-09 170099.0708 2785.472499 3.328449578e-17 181.0054753 0 0 0 0 0 0 1.222459742e-06 0 0 560024.8325 3.135157803e-08 0 0 0 1.049950182 1931.209602 0 0 1.041205787e-05 1.061160051e-05 9.289712745e-08 0.05425268243 2.814022272e-07 3.482268819e-18 0 7931.066614 85523.21541 1052.574575 0 3876738.716 0 6.990391172e-22 0 6919.436739 0 2182.785819 0 0 0 0 0 28704.56735 1.33322509e-10 9.128342114e-08 3.015627525e-07 0 0 0 0 1.300236186e-12 0.02892980625 1.819516616e-10 2.3674118e-10 0 1.373937664e-24 0 1.458235541e-11 2.509769292e-16 1.581697488e-14 0 3.280442344e-16 4.926414121e-05 0 0 0 3.063804025e-17 2.567214551e-06 5.378720461e-07 0 4.493577085e-14 297804.888 0 0 2.133464402e-10 166.4546574 0 1.36928106e-13 0 0 54663.9448 0 0 0 4.205864151e-07 0 5.955461228e-06 0 0.0004264619978 1.851835137e-07 0.0002027354198 6.315932158e-25 7.244652883e-37 0 2158.519479 289738.531 0 0 6.064665775e-11 0 1.154947806e-06 0 0.006425366253 6.750746766e-16 0.00034540217 0 5.003541931e-22 0 0 0 0 0 0 0.7667044599 0 4.259889476e-11 0 0 0 176578.8185 301925.5388 3.222856729e-07 8.075869558e-18 0 0 0 0 1087832.379 0 3.072576281e-05 0 0 0 0 0 0 1.354031614e-20 0 0 0 1.157145482e-07 0 0 0 3.282285895e-21 4.244928031e-25 0 0 0 0 0 0 19314.48387 0 2694.071038 0 0 1.577242061e-06 0 0 9.646609324e-24 0 0 0 0 0 0 0 0 8.001443223e-13 115.5512308 0.01428874132 6.311785661e-15 0 0 0 0 0 0.002658727647 0 0 0 0 2.216084093e-05 570.6847334 0 0 0 2.180944396e-06 0 1.343664429e-16 0 0 0 0 0 0 0 0 72897.38383 0 0 +0 0 0 2.199448355 0.01753541703 0 0 0 0 0 95646.72407 0 0 0 3.068188586e-16 0 0 641287.8541 0 0 0 2.835839792e-13 0 0 0 0 5.85623106e-21 0 0 0 0 0 0 0 5.550527331e-18 7.016949577e-13 0 0 0 0 0 0 0 0 0 0.01180561814 0 22.32596139 9.284469065e-08 0 9.88349399e-12 0 0.01921154331 0 0 0 0 0 0 0.003946623594 0 940315.0068 0 0 0 0 0 0 4.424517089e-15 730488.4557 0 215428.01 0 0 2790.110734 552.4556041 0 0 0 0 47.96086754 0 9.388746087e-11 812482.9142 875.7403229 0 0 0 0 2.785420805e-20 0 0 425019.8679 1.869971138e-13 1.251576392e-08 0 0 6.777370604e-09 1.065019391e-13 0 0 6.569522857e-10 0 3.683395729e-09 0 1.521027702e-12 0 0.04144718 0.001460814917 1.753540681e-13 0 0 50641.95288 9.889195801e-13 4.386611229e-13 4.697484619e-12 0 0 2.071538205e-18 0 0 1.724093619e-17 0.0001383300049 0.1102190178 1.660247934e-12 1.091105384e-06 0 0 15021.58481 2.53249101e-16 1.946754201e-13 3.764237831e-06 10.33268378 5.641532972e-13 0 0 0 0 2.150146501e-12 3.396792031e-08 0 0.004515806775 1.656197829e-10 308359.8827 6.030852993e-29 1.848611751e-14 0 0.2030081519 0.06911930826 2.793438405e-07 0 0.0002063980889 0 0 0 0 4.471196763e-06 2.334009098e-17 24733.19167 4.821280432e-13 0 22.25419013 3.628570055e-05 0 0.000223712283 1.923714331e-07 0 52179.19467 4.554732296e-07 1.75828856e-19 8.041797515e-14 0 2.310146332e-06 0 140143.8167 0 0 2.300662082 199.6971468 8.967262597e-07 0 9.374245739e-19 0 0 0 0 10.14295504 0 0.1139080142 0 0.05667625706 0 1.65670096e-09 0 0 0.01304572468 0 1.364895739e-06 8.894786251e-07 0 2.391732535e-13 0 0 0.4486601665 0 5675.269397 33422.51993 0 0 112.0577724 2.234645717 0 0.4265339743 9.389889194e-11 1.297131299e-16 4.245557413e-10 1.518955279e-05 0 0 1.665614072e-07 0 7.884328057e-07 113.5738632 392.939804 0 0 0.0007413920632 0.002378645077 2.597638648e-09 1010264.33 1.598994949e-05 1500.077209 2.120452151e-24 0 4.932161964e-30 0 0 0 0 4.659594715e-12 0 0 0 0 0 0 0 0 1.380035708e-26 0 0 0 0 0.005182893569 0 0 0.001265032602 242741.5224 0 19915.70322 0 0 6.597858989e-05 0.000109334697 0 2.454415852e-10 3.965233703e-12 0 0 7.29950677 5031750.957 0 4.679019317e-44 5605.023547 0 1.102565602e-22 0 0 0 0 2.859297433e-12 0 0.2717508227 0 1.599796631e-19 0.1754392608 0 0 0 0 0 186121.2814 0 0 0 5.452103429e-22 0 0 0 0 +0 0 0 0 3.063569249e-08 2.461904734 0 0 0 0 5.707199754e-05 0 0 0 0 6.018676131e-13 0 0 0 9.796956066e-07 0 2.756199925e-23 1.082674547e-11 0 0 0 1.160650204e-07 0 0.0003497223072 0 0.0001776875431 5.76668347e-13 0 0 0 0 2.881814803e-12 259118.9819 0 1.714163322e-14 0 666080.9425 0 0 0 8.803073199 0 0 0.009718432584 2850.014885 3.490604107e-08 0.1499615658 0 3.410340063 14.02880538 3.251755277e-11 0 0 0 9.814629072e-08 1.130777959e-13 0 0 0 0 3.470885928e-09 7.317882866e-14 0 0 0 0 1.141060831e-14 0 1.649034919e-09 0 0 0 487006.4213 0.00259084415 0 0 8.154645555e-13 0 0 0 0 3.495893435e-11 0 3.911771555e-15 5.559588413e-14 0 46.76159248 6.347862541e-13 0 0 2.292192435e-15 0 1098.503484 0.001234414147 4.550602144e-06 130145.7238 0.0006047390066 7.273701869e-16 593435.1159 0 0 0.01501055456 0.0005064557814 38.77686573 0 0 6.022163992e-15 6.64621307e-06 2.942435189e-28 5.743153915e-15 0 8.051232067e-17 1.042870089e-10 5.837522514e-08 0 149209.6056 6.827731628e-14 4.598235941e-06 0 0 0 0 0.005539388156 1.138296407e-20 5.008620256e-29 0 1.599044246e-12 0.0002456572193 0 1.424193184e-18 2.132365768e-11 3.022951771e-09 0.7955163615 1010538.874 0 0 0 0 0 1.703703174e-08 7.054048577e-13 0 0.0007444714058 0 25.28491765 0 1.03344435e-10 3.384085239e-26 0 1.723383162e-06 0 2289329.313 0 0 0 3.711368599e-12 2913818.495 0.0003653892003 0 0 0.008552206549 0.01374829829 0 0 2.085589484 7.769226128e-09 5.39333066e-05 0.000182217057 0 7.852296047e-11 0 8453.773732 0 0.2326846203 1.230678267e-07 0 6.815510523e-10 530.2344178 5.103941872e-10 2802.205637 600906.1198 0 0 0 268555.1052 0 68837.8116 4192.972695 0.0002068121447 1768.440858 0 7.113862433e-22 2.258577842e-13 0 0 0 6.675285903e-13 2.41681354 3.75534533e-11 27629.00571 0 1.276569551e-06 4.243642245e-17 0 7.827685185 7.351370053e-09 0 8.345428951e-14 0 0 3.441389156e-14 0 0 0 9.3943779e-09 0 0 0 0 0 0 179381.5587 2.029654386e-12 0 0 0 0 0 0.9315168174 0 9.638021424e-12 0 0 0 0 0 0 7.986794313e-12 9.228882634e-18 0 0 0 0 0 1.807110194e-18 0 0 0 0 3.047012341e-10 0 0 1.153147299e-05 0 4.2759387e-09 0.6028844269 2.842284942e-14 0 3028.138903 0 0 0 0 0 0 0 0.02630366323 1.118479199e-07 0 0 0 25431.78236 0 0 0 0 0 0.005601966687 1886.049028 0 0 0 0 0 1.118670203e-22 0 0 8.77104543 0 0 0 6.933921849e-12 0 26513.42843 0 +8.783920263e-08 0 0 0 0 0 0 0 0 77.13715081 1.224364363e-15 0 0 8.600828788e-09 0 0 0 3.896884314e-11 6.470564287e-16 0 0 0 568406.3518 0.03559642381 0 0 0.002673153557 0 0 0 0 0 0 0 0 0 7.439793205e-13 9.859722617e-05 0 0 2.20697006e-09 0 0 0.009872992489 0.05778020021 0 0 1.592970085e-06 0 0 5.565315991e-10 0 0 0 0 3.445985438e-17 9.656024461e-14 0 0.000139396124 0 0 0.009921551191 6.329265699e-08 0 7.719456612e-16 0 0 8.279434533e-18 0 0 0.736715118 0 4.701013884e-06 0 1.815050442e-06 0 3.538066931e-13 8.335107751e-10 0 8.89633562e-22 8.455739598e-06 0 0 0.006566491003 0 0 0 0 0.005668821102 0 2.39496272 0 0 0 4.096660526e-16 0 2.326803983e-09 0 0 0 2.794297598e-07 1.483087824e-38 0 14.99047446 3.25766046e-10 0.003456439534 4.301570695e-19 0 0 227.6406286 0 0 4.529246192e-09 0 711.1518372 8.508527491e-16 0 0.9954385125 2782.130665 0 72.58301238 0 0 0 4.663568483e-16 0 0.006342947458 0.07883653245 0 0 3.126679474e-08 0 0 0 1.982492038e-09 0 0 1.59831887e-09 3.866498711e-11 0 25.70849166 0 2.120074874e-14 6.66927615e-14 190101.5625 2095.677027 9.244311557e-07 151.3484607 6.040165139e-11 9.777495534e-06 0 0 0 0 0 0 0.001332638051 0 1.450604269e-08 0 0 3.686463619e-13 4382.234057 0.001009775872 0 0 182793.9529 0 0 0 6748.882531 3.450626788e-11 0 0 0 0 43781.02364 2.300344054e-23 25411.3593 15729.17202 107.6422907 0 7.933245854e-09 0 3.43238376e-20 6.30829411e-14 282858.7079 2.586885863e-17 0 3.480028417 3.777047259e-19 13484.41298 7.059325157e-10 4.722418556 0 0 3.451372635e-13 37585.6681 12.63216641 1.181350946e-09 4.383098081e-06 7594.731491 0.170852224 0 9.946405766e-18 5.450109059 0 0 3.582730527e-09 0 0 0 0 0 7.6363634e-11 1736.93343 1.94586861 0 535282.8222 0 163226.6052 8009.916819 54743.15842 2.909711421e-08 0 3.722290913e-18 0 0 0 0 2.073854844e-14 0 0 0 0 0 0 0 111885.9972 0 0 0 0 0 0 1.662362737e-30 0 0 0 0 0 0 1.597522223e-13 81739.48355 0 0 0 0 0 0 0 0 26795.65261 0 0 5.181816227e-12 0 0 0 0 0 0 6.384452292e-10 0.0005523712517 1.649835435e-30 0 0.1292399551 1.561413103e-13 0 76.84969898 0 0 0 3.274224868e-27 549207.0944 0.01603838526 71171.66553 0 0 6.502464648e-26 0 6.895833973e-27 0 0 7.386373848e-14 0 1.61279833e-07 0 0 130029.1762 +0 0 0 0 0 0 0 0 0 0 6.207375783e-10 4.188095361e-09 2.508977648e-05 0 0 0 0 0 4.60511996e-10 0 0 0 0 0 7.774205769e-31 0 0 0 0 0 1.246183683e-06 1.913367271e-08 162.6376697 3.391586735e-06 0 1.548455961e-06 0 0 1208737.295 0.0001415486912 47289.61093 0 1.204703188e-08 7.619903502e-09 1.984854887 0 9.558143081e-27 0 0 0 0 0 5.384327645e-21 8.661677968 0 673804.0135 6.63231293e-06 1.059901141e-05 17.20063725 0 6.627553684e-10 0 5.539120694e-23 5.339188013e-08 0 0 2.048664868e-12 0 0 0 0 0 0 0 12038.57518 0 0 1.39109495e-06 23.40999118 2.30332792e-28 7.88915594e-08 0.006185955275 0 0 0 0 2.819806965e-05 0 1.473575606e-13 60.94380929 0 1.628610237e-08 1.786044484e-10 0.0001253003125 0 0.0005284652707 2.849577252e-09 0 0 0 0.3814082663 1.267090012e-11 0 6.481535121e-18 0 0 0 5568.836113 0 1.10652334e-06 0 2.33235138e-07 5.16998374e-07 0 14.44789592 0 0.00102901387 3.997543584e-08 105391.0928 2.496998113e-07 0 0 0 0 0 0 12.16548474 1.475064181 0.0009709393305 1.375535659e-06 0.0001552969918 0 5.244723207 1.296644779e-06 0 2.594356473e-12 52.03117307 0.03535670946 0 1.406251698e-17 0 1.089866757e-08 0 14517.26825 0 1.118214481e-18 0 170.0809257 112583.2546 0.136917175 0 0 0 121935.287 0 0 69065.79948 364.0130021 6.105358908e-05 2.80196043e-17 0 0 0 2.524275007e-10 10588.81211 87522.52556 1.555958301e-11 1.743157951e-11 0 2.61163307e-12 0 0 0 0 3.857324759e-08 1.678878258e-14 0.0002919704161 0 1.104598868e-11 5.383215932e-07 1.474327108e-09 0 0 43490.42683 0 7083.464735 782561.039 0 0.001218722879 0 0 0 3.598554297 1.085349888e-08 2.004773844e-13 0 4.171254001e-14 3.837624927e-06 0 698.6476872 6.590154634e-16 0 0 0 0 0 2628.082402 0 250.9306377 450.9283782 2302.430183 0 36.70423668 0 1.079312154e-11 0 0 1.025026098e-12 155970.342 0 0 0 0 0 0 0 0 115.3516709 0 0 0 6.385765903 0 0 9.871963696e-06 0 0 671.1874598 0 0 1.83072595e-15 153491.5013 0 0 0 0 0 0 0 0.001654185652 0 0 0 1.342379178e-11 0 0 0 0 0 0 0 0 0 0 6.379828819e-15 0 48.52170795 2687.292031 0 0 0 0 0 0 0 0 1.796363953 0 0 0 0 0 5.38098646 0 0 0 0 0 6.235800211e-17 0 0 0 0 0 5.165079742 0 8.840771221e-05 0 0 0 +2.508935225e-12 0 8.428323858e-30 0 0 2268175.094 0 0 0 0.0007480457297 0 0 11504.10587 0 0 7.090914388e-09 2.827903316e-09 1.153445767e-15 0 0 0 1.244450811e-06 5.847783916e-12 2.269754622e-13 2.550649615e-18 0 0 7.503760221 8.809358215e-45 1691162.115 0 0 0 0 0 0 3.017722955e-30 0 0 0 2.830715105e-23 0 8.173471532e-11 0 0 0 0 1.374897176e-11 0 3.278596245e-06 0.0002138769038 1.450071466e-06 0 0 2527.70782 122081.5402 0 0 0.248505639 4.062757104 0 0 0.1266965943 0 0 0 0 0 67715.04163 0 0 0 0 0 0 0.001397392623 0 0 2.756306197e-09 0 0 0 615856.6495 1.296972628e-09 4.761267921e-15 1.969340461e-13 6782.737267 0 1.979485003e-28 1.098644114e-10 2.400607658e-05 0.0004206746904 0 0 0 0 5.66442536e-10 4.568180041e-21 0 9766.609335 0 0 0.4349456806 0.3652447748 264.9793407 0 0 41778.34077 0 0 13422.37934 5.494664321e-09 2.733378248 0 4.185072897e-08 1.0428062e-21 0 12.41633668 1.040500797e-11 0 0 4.056847819e-07 0 5983.677099 0 0 0 0 0 0 0 0 79479.27174 9.480952521 0 3.949614192e-06 0 0 0 1.769690653e-05 0 481703.5383 0 106055.7626 6.537350928e-07 2992.372759 0 0 0 146338.2544 0 0.000362864366 0 135903.0583 1.786363864e-06 2149205.11 0 1.424536327e-25 0 5.339354571e-08 0 0 1.489356882e-08 0 1.174908025e-11 0 0.0007174972272 0 1.813546033e-09 0 8.057501572e-17 8.123969607e-09 6.794834908e-05 0 0 0 59.61200681 0 18.50033716 0 0 0 3988.317465 0 4.007651083e-09 0 731077.9715 1.854508587e-05 858384.7836 0 0 0 8.274407159e-09 0 0 0 0 1.035804555e-11 0 3.297129143e-08 0 13917.99312 0 9.392480815e-11 0 0 0 1.655916004e-10 0 0 0 0 1.459896122e-05 0.05619047369 1.166546177e-10 0.3527903102 4.775365365e-08 0 0 0 0 1116092.559 7.707917421e-06 603.8871789 0 0 0 0 1.851548856e-12 472455.5629 0 0 4.564353265e-06 0 0 0 3043.905129 4.222106368e-05 0 0 0 0 72.88510268 0 0 0 0 9.236776185e-10 0 8.148786192e-13 0 0 3918.027966 2.971027262e-13 0 0 0 13324.04731 0 0.0001349792481 0.01619852378 84206.35571 0 0 0 0 0 0.9269411405 0.0003629273196 654.7073695 0 0 1.39192612e-12 0 0.001160425209 0 4.054667958e-05 4.898188911e-07 0 0 0 0 0 3.818605492e-22 0 0 0 0 0 42.25981876 0 0 0 0 44.31500068 0 0 0 690.9744892 1.45537621e-18 +0 0 0 0 0 1.104385171e-16 2221.239982 0 0 0 0 8.810319617e-11 0.001113952904 0 0 0 0 6.173491333e-13 0 0 6.266067515e-14 0 0 0 0 2.013349518e-05 0.0003749454601 0 0 0 0 0 0 0 4.828093476e-20 0 21.62940047 0 0 120.0642655 0 0 2.677891931e-09 0 0 1007.930814 0 0 0 0 0 0 0 0 0 0 0.02800669077 0 0 0 0 3.605486832e-10 0 0 157088.2988 0 0 11913.38901 0 0 5.471363347e-08 0 5.484039027e-23 0 39381.15802 4.589265373e-06 1.197495861 0 5.159194785e-06 2.762312323e-13 2.454932533e-14 0 7.70824931e-13 0 9.843683043e-08 0 0 0 0 26.57978557 0 2.563404024e-23 0 0 0.2921805039 0 0.01285221169 0.0005751648581 0.008879262905 0 0 6.634863947e-09 0 14.8654207 1.338248755e-08 877.9145872 1.169234352e-12 0 0 0 0 0 4.279050301e-11 5.916876012e-12 0.1395374317 4.098883349e-18 2.177618661e-14 0.02342335894 255679.4652 0 0 0 4.406735188e-26 1.864500289e-06 1.402234918e-07 4.578414925e-05 0.437239449 1.074336237e-09 0 0 0 8441.096465 0 1.982660174 2.392672202e-15 0.2563426017 0 3.677942645e-05 1.823578903e-12 0 0 0.3212830464 1907.548314 0 0 26152.29058 7.126204182e-06 0 2.510729878e-16 1.9730688e-12 0 0 6638.235594 2.478940291e-07 6.872497454e-18 0 5.49169465e-05 0 0.00737480317 0.0001853194599 0 0.003455864105 0.8358090195 0 0 0.0001005272795 9.557624023e-29 0 2.002786735e-23 0 6.662975942 1.059526723e-06 0 302007.0786 2.551842893e-11 1.923306238e-10 0.0141123342 6.487115637e-08 2.426267982e-12 0 0 0 302970.5082 0 39110.30342 0 80.48655643 139101.4526 0 0 0 0 0 0 0.03635756498 0 0 18.97527169 0 0.0001780142472 93751.741 0 244655.4517 0.0006117633696 0 3766.903766 0 0 1.617093201e-08 51.34659645 0 0 214885.3116 0 1.651518554e-09 0 1.585238618e-09 4.531457213e-06 0 0 1.310599898e-07 7054.119998 8.907874296e-14 0 0 222185.4819 0 0 0 9.312026706e-07 0 0 0 1.500999127e-09 0 0 0 0 0 1.802272335e-08 0 0 0 0 0 0 0 0 0 0 0 0.0001022662203 0 0 0 0 135540.4236 0 0 0 1.350618399e-11 0 0 0 0.008118587933 0 0 0 2.562026635e-12 0 0 0 0 9.422420822e-21 0 19899.007 0 5.141497819e-29 0 0 0 8.408621208e-05 0 0 7.858898594e-09 0 0 1.498925285e-16 0 0 0.0008978031942 0 0 2.486380245 9254.439489 0 0 0 0 0 +0.0001747329733 0 0 0 3.436235161e-12 0 0 1.966427283e-05 7.071764334e-17 4.920443346e-12 0 0 0 2.708495425e-15 0 0 0 0 0 516.74156 0 430.9945359 0 0 0 0 0 6689.184294 0 0 37502.80748 1.155612292e-14 40305.13276 0 5.147775733e-15 0 0 0 2.43826365e-13 0.3556508008 0.1013642715 5.710459571e-15 0 0 0 0 0 1.719880149e-10 3404.203898 0 0 0.003194086247 0 0 0 0 0 0 0.2614550751 0 0 0.002509980559 9.844509186e-14 0 0 0 0 0 1.324294464e-12 2.45110139e-09 0 0 0 0 108455.5304 0.03587962366 183.2540862 0.002632031887 0.001812482764 0 3454158.88 0 2.121813897e-20 6.102451783e-05 0 2.470915686e-07 0 0 0.0009974596737 7.279506834 0 1.134647488e-19 0 8.246039598e-12 0.001163060322 0 0.1582962267 3.987070028e-18 0 0 2.396145968e-10 2.035310797e-31 2.150730943 0 24.62063404 31.77611742 0.06438308852 109.6419411 4.315591187e-13 0.005932736101 1559.011222 0 2469888.474 0 2.80883418e-06 0 0 1.471035301e-05 3.217150386 0 0.000211192327 0 0 0 0 0 0 3.79973878e-05 0 0 1.554852248e-08 0 2.469966819e-06 0 1892700.775 0 2.771637119e-10 2.815292025 0 0 6.981921007e-16 8.488986578e-30 0.009556130905 0.001224200259 0 2.714642336e-14 0.0001586820681 0 0 0 3.944025039e-14 1.774353172e-06 3.801474035e-09 8061.922019 4.049821824e-07 0 0 462525.5553 2.97866162e-07 4.604862347e-13 0 0 0 0.0005678210627 2.934939975 0 0 0 1.542984036e-06 6.893531309e-15 0 3.986797428e-14 0 2553495.51 0 2.126673273e-15 0 0 3731.965542 1.089030391e-10 0 0.04424596775 0 0 58928.27448 0 0 0 0 0 2.605266979e-05 819.1158439 0 2.366115763e-19 0 0 0 0.001418578827 0 0 0 9.665980076e-05 8.346106653e-12 9.457973639e-08 141.1995734 2.352934658e-10 2.391648959e-11 0.0006118502995 0.002989571866 0 7.803546074e-22 0 3.078466636e-23 0 0 0 8.293981641e-28 2792834.977 0 0 0 0.0002508921817 3.797753634e-15 0 0 0.03278938322 85.02357911 0 0 0 0 2.455453822e-08 0 0 0 0 6.555393072 0 0 0 2.643492484e-34 0 0 0 36.73741971 0 0 59.99123894 1.407110436e-20 0 0 11932.00381 0 0.001064489595 0 0 7.353305794e-15 0 0 0 0 265604.4656 1.069638094e-05 0 0 1.030125127e-11 0 0 0 0.01418404594 0 0 0 116968.4599 188.1533998 0 0 4.962458019 0 0 1.186639014e-10 96118.42602 0 0 0 0 0 3.090095482e-27 5.679374737e-18 0 2.534588287e-20 0 0 8.838764469e-12 0 0 0 0 56924.29358 0 +9.131948097e-15 0 0 1278560.45 0 0 0 6.193107499e-09 0 0 0 0.3613248236 0 0 0.0001370359004 4.760187937e-15 365487.6515 0 0 1.037523711e-12 0.005561296843 0 640.8387229 0 0 0 0 0 2317956.493 0 0 0.01934177416 0 0 0 24076.27276 0 96833.60402 0 0 1.193864089e-05 4.713132392e-09 0 0 0 0 1.825468247 6.734533772 0 2.0006669e-11 0 0 3.828817162e-06 0 26.46269209 8.611625355e-06 0 0 0 0 0 0 0 77836.55487 0 0 0 47.97686017 0 1.655873077e-10 16.67771015 5.821125535e-05 0 21.02646647 0 2.693183768e-09 0 0 0.5947897284 4572.313995 0 0 2.891905403e-07 873.527476 61.60185443 0 0 0 1.520747617e-06 0 35.9549121 4.694617105e-11 0 0 0.8052910306 7.272886928e-06 0 0 0 0 0.001569692686 0 0 0 0 189.7552627 318293.4733 4.376258194 1.004756728e-05 1.043656457e-10 0 0 0.006595018397 500.406773 3.184807117e-16 0 0 0 0 0 0.0002061584319 1.627821261e-12 0.0002587958057 2.449294867e-16 4.503686096e-12 0 1.02097372e-06 0 0 0.01271483587 497.6864123 17472.06705 0 0 0 8.679813687e-12 0 0 322644.0251 1.426726915e-17 0 1.90713677e-08 0 0 0 0 0 576120.8469 6.516910487e-08 1.820954925e-12 3.010864044 0 0.007721675999 0.01060246616 0 0.0001729842238 0 0.5090049032 0 0 0 6.369620744e-06 0 0 1.28230428 4.157152195e-12 0 3870.110477 6418.726382 964550.7361 66.43044018 0.0003389651474 0 0 3.091160449e-09 0 0 0 0.001527500204 0 0 0 0 0 0 0 0 0.006125519325 0 6.278362731e-07 0 0 0 2.701753891e-14 0 27895.19652 0 4.229997198e-12 0 0 0 25617.10669 0 0 0 0.004279126606 0 2.50249835e-15 914088.5464 0 0 0 0 1.049324731e-17 0 0 19516.1213 0 0 0 0 2.144538171e-05 0.08062286897 0 1.691334393e-07 3.818440731e-08 2.724786706e-20 0 0 0 0 1120927.194 0 0 2889.115015 9.928999425e-06 0 0 2.220193097e-13 0 2.89403558e-14 0 1.681293935 0 0 0 0 3.467754858e-20 0 0 0.007777633146 0 0 0 0 0.8328101173 0 0 0 1.79870033e-23 0 0 0 0 0 0 0.02566407465 0 0 0 0 0.0008600688214 0 0 560.6121401 0 0 2.311526203e-11 0 0 0 180.7982108 0 87742.94824 1.036474244e-06 0 0 4.402693759e-11 0 0 1407.298263 3.949232897e-07 381843.7815 2.969555241e-13 0 3.435179423e-27 6.203299848e-20 0 0 8276.976017 +5.000523001e-06 0 0 0 0 0 0 0 0 0 1.974868894e-14 0 3.739809282e-19 0 0 69.2932439 0.0002353240077 1.198752081e-17 0 0 0.7658089161 0 3.316816597e-11 0 0 0 0 0 0 0 0 0 2.189137534e-09 0 0 4.401279955e-10 9.723990092e-09 0 0 0 0 3.61396745e-08 0 39.51490676 0 0 0 0 0 0 0 1.673912483e-15 0 208.6742991 8.978520657e-12 0 0 0.01110562664 66.86798116 0 180470.9137 0.001030241393 9.928188725e-21 0 0.065946389 1.245164894e-06 0 0 0 0 6.478440189e-14 0.004165543343 0 0 0 0 0 133247.6745 0 0 0 207234.3325 0 0 0.000236644913 0 0 2.087986074e-10 0 0 0 0.3132106974 24347.28503 0 0 206.345334 940.7859038 0.004309466875 0 89.38817662 0 0 0 0 0 77062.52487 0 0.0002436665306 0 6.83712942e-12 7.590670648e-07 0 0 0 0 0.291109908 4.918066196e-08 1.80299083 0 2.15162163e-28 1106084.605 12877.62427 0 0 8.540687503e-05 0.02698183225 1.03748829e-08 0 0 0 0 0 0 4.194485479e-07 0 0 0 3.341876938e-21 8.374911183e-08 0.2057212445 0 0 1.421454683e-08 0 33128.41806 0 3.780881758e-20 2.193531644e-09 22271.4664 0 83327.18504 0.02649910427 0.0002211325472 0 0.1877659329 0 4311.728287 0 0 0 0 1504.774003 0 4.63803252e-11 1.781131277e-19 1.277859086e-13 0 1.326744537e-13 0 0 7023.521601 0 2.744272397 0 161.4065804 0 0 0 7.834954043e-09 0 0 62530.0404 0 0 0 1.00341156e-15 0.0004502800561 1944810.925 0 0 0 0 0 0 0 0.8055035087 1886915.652 0 9.7762942e-07 0 0 0.1597707994 245.2392039 0.5500530474 0 2.439996595 7.98485817e-06 0 1.344075124e-15 0 0 0 0 0 0 0 21489.28772 0 407.4993446 0 0.0001680755004 3.002838083e-08 0 0 0 0 133968.8943 0 0 7.235476171e-18 0 0 9.108018031 155866.2744 5815.70334 4.09393174e-14 15259.24761 25.62365909 0 0 6.2497585e-10 0 0 0 0 1.828848292e-09 3.36117654e-22 0 0 0 0 69107.50501 4.624751545e-10 6524.729124 0 0 0 0 0.3872362969 1.221254007e-11 0.0001537860875 0 0 0 25630.54102 0 0 0 143527.1029 0 0 0 0 0 0 5.355780216e-08 0 5.398187754e-19 0 0 0 0 0.003441801874 0 0 0 0 31.3895197 0 2.324755892e-08 0 0 7.101016325e-07 7.615511933e-20 0.513263911 0 7.018673883e-17 0.002312406389 0 0 +0 0 0 1.134765297e-12 0 1159.611854 0 0 0 0 0 0 8.463718738e-12 0 0 0 0 0 0 11.12877606 0 0 0 0 1.190665308e-16 6.638033444e-09 0 1.040067193e-09 0 0 0 0 0 0 1.816496717e-07 0 0 0 0 0 2.163371278e-13 5.973811071e-07 0 0 6.720065693 0 0 0 0 0 0 0 0 0 2.791203517e-13 218204.1601 3.996436207e-09 2.589171794e-17 0.0002928850797 0 0 2.298869484e-30 0 0 0 0 0 0 1.638147823 0.004400322991 0 0 1.200894027e-07 0 6.973591692e-06 0 0 0 4.321996236e-26 0 33428.46719 6.218577919e-07 3.015452011 1.119403294e-08 3.863186767e-27 0 0 1.753948296e-07 0 0 0 0 0 6.118933058e-31 1.049371591e-11 21.56020912 0 0 0.1412085784 0 123.2440292 52.93288119 6.172374067e-16 0 0 3.803997203e-06 0 0 0.0004665419713 5.52725014e-07 0 0 0 0 0 6422556.867 0 0 0 2.464754633e-32 0 0 0 5.436067104e-14 0 11207.65973 0.003733497508 0 0 0 1711145.767 1.416232772e-14 0 0 17.57454577 0 1.549816721e-18 0 9.653837277e-11 3.610986419e-10 0 0 0 0 0 61297.80436 8.262213123e-16 6.980871971e-09 5.200026046e-10 69.06080392 1.277278463e-07 0 17375.58312 1.182156348e-19 4.974566139e-14 2.51723543e-08 999.6007745 0 0 1.32021645e-08 0 0 0 0 0 0 0 0 0 0 9.848520933e-13 2.216596508e-11 2.879727801e-12 692475.4489 41.0904477 3.976773683e-06 0 0 8.476133608e-07 5152.358145 0 0 0 0 3.989560046e-09 0 0 357.6945392 10.39979841 0 423258.5939 0 24598.23686 8.613192823e-22 0 2.512466802e-09 1.159814813e-06 0.757206527 0 3.44267457e-15 43.71251041 0 1.484351861e-15 0 9.651009743e-07 0 0 0 0 0 4.848428261e-10 1.220124423e-06 1824.491899 9.492420389e-17 0 8025.523165 0 2.281954234e-12 0.0003897349694 0 0 0 0.0009609499607 0 0 0 0 0 0 0 1.195170935e-18 0 0 0 0 0 0 0 1939.573437 0 4.483067323e-15 2.407512743e-26 0.1772650586 0 0 3.940259208e-18 0 2.744047159e-18 2.826960225e-11 0 5.506553019e-14 0 0 0 0 0 0 0 0 1.230369063e-15 0 0 0 0.0002559774876 1.46280246e-07 0 1.292093116e-15 0 0 0.3591472728 12.52863496 0 1.297567999e-24 9.228830396 0 365.2562651 0 0 0 0 0 167.7984372 0 0 0 0 0 0 0 0 0 108362.0545 4.457753242e-07 2.073998304e-22 0 0 0 0 9.61698144e-09 0 +2.692572769e-17 0 0 0 0 0 5.439317609e-05 1.625615611e-08 0 0 9.43427567e-17 1.832800984e-11 0 0 6.935153462e-16 0 0 338.7921648 332.9191029 0 9.914477522e-05 0 9.791636436e-14 0 0 0 1495693.05 3027.774357 0 0 0 1.231487979e-15 0 1.726225902e-05 0 0 4.968500039e-13 0 0 0 313.0528746 0 397646.3585 0 365.0579701 0 0 2.806163768e-27 0 1.266442656e-19 0 0 0 0.3666752343 0 0 0 0 0 0 0 6.199194297e-13 4.383200715e-30 7387.127101 1242211.959 0 8.289283812e-08 0.0002742165042 6107.787653 6.475136713e-05 0 0 0 8.404372574e-07 0 0 0 8.369224873e-08 176670.4999 6.559821304e-12 0 6.050459529 286921.6911 21430.62952 2.917651427e-05 6.729188866e-12 0 0 4.482921424e-18 0 0.06242360978 0 0 17219.91808 0 0 6.903883834e-11 262707.5093 0 3.333198487e-08 0 0 4.136142999e-18 0 5986937.152 0 0 14.64935721 1496720.957 228388.1668 429.69709 0 0 0 0 0.0001463418588 12.3434324 0 0 0 0 0 0 0 9.857180997e-15 0 0 164775.5223 4.858658217e-17 0 0 2.569466652e-09 6.01467751e-15 7.167209576e-07 1.223461848 0 6488.476614 1.309332399 7.94599952e-09 0 98.90781989 0 0 0.0007201232393 6.670422758e-16 0 0 0 0 1.722793743e-09 0 0 4219.682403 0 0.0001060265417 0.5286384756 2205.047343 2.033634358e-22 0 0 682119.0888 0.0001242846978 1.539601465 0.003072428639 0.001529565254 814.5499957 0 2.680749401e-15 9.895873722e-07 0 5.7887903e-05 0.0002054232675 0 0 3.740210294e-05 142963.2927 3.503512634e-32 83.56071765 1.692249759e-30 0.05508736082 0 2216741.342 0 1.613698975e-25 1.20987685e-20 146768.193 0 1.693060589e-07 0 0 0 1.936092524 0 4.27641199e-14 1.415883807e-08 1.114591829e-28 0 0.004628643873 3.309528226e-13 0 23584.03884 0 0 1.441517079e-10 3.309762909e-15 0 0.0002174994778 0.0002413522197 0 0 0 0.03088675108 0.003349369268 0 0 9.432306212e-07 0 2525.941608 0 2.087472814e-05 3.312674506e-07 0 0 1069316.537 0 5.950771821e-19 0 0 0 356.1079183 8.665713058e-05 0 17518.52927 0 0 5.162203825e-07 0 0 0 0.03100601858 0 0 2.613872556e-14 0 19185.71571 1.124324496e-18 0 0 30384.12266 282.4859839 0 0 0 0 0 0 0.4844051292 0 0 5.189189529e-06 2800.114424 4.159411324e-14 0 4.130193203e-22 0.03546875321 0 3.136660312e-25 0 0 1.996629909e-07 2.497212959e-07 4.278624227e-13 0.2624939307 5.272401173e-11 0 0 0 0 0 0 0 0 0 3.057738375e-12 0 0 0 0 0 0 0 0 0 0 0 0.2935956431 0 7.99203414e-08 0 0 +0 0 3.313676777e-12 0 0 0 0.004356796173 8.285290016e-13 0 0 1.437803115e-24 0 0 0 0 0 0 0 1.3938897e-05 0 390.7247666 1.001506029e-25 0 0 0 0 0 20476.76442 4.691177473e-11 1.996304249e-12 0 3.249259732e-17 5.549681999 5.445267079e-18 0 0 0 0 8.830308535e-08 0 8.248028256e-08 1.219239368e-09 4.293317825 16047.98546 0 42026.44147 2550.765447 0 2490.403837 0 0 0.0009379011929 45079.6821 0.005333652439 0 0 0 0.1656552059 0.100038961 0 0 0 1686.875566 3.044941388e-11 0 0.001532473415 0.161577784 0.001696345203 1592271.179 2445.90295 1.112113233e-08 0 0.001806215753 0 52.1742358 6.71727826e-13 0 0 7.29565074e-06 1.721151601e-06 0 0 5.773440263e-09 0 3.502470526e-13 5.500744563e-13 0 1148.582298 0 0.007360650709 0 0 0.4899892861 174156.2172 0 0 0.001548164251 2.466518621e-08 8.112639368e-10 0.9139800814 0 515127.2154 0 0 0 12293.30079 0 292.321115 6.868513856e-05 2.094974149e-12 4.178336221e-28 137050.3043 1.45689989e-06 5.847366249e-07 0 0.7844835438 2.68790427 0 10652.04487 0 3.879725237e-13 6.830296887e-08 0 0 0 8.516541353e-18 0 0 7273.924093 5.868112366e-08 0 204.0754125 0 2.67926539e-13 38.55853503 3.763573961e-06 0 0 3.542911191e-11 4.20969535 0 0 0 0 0 8.634085096 1.04344717e-14 0.0001625729016 0 56.53858108 0 2.635716333e-11 0 0 0 7.828675598e-13 0 7.97464625e-09 0 1.93954649 0 0 5.461066161e-16 0.0001955979144 4.697912136e-08 0 0 0 1.053352411e-07 307.0828857 1.855447551e-17 0 0 0 1.489578021e-07 0 6.326626022e-12 0 0 1444.143705 0 903774.2205 0 0 0 0 2.874628205e-09 3.967050185e-24 0.004148802395 0.004396444974 0 0 0 0 0 926.56052 0 0 0 6.225578581e-07 2.323893615e-07 0 1.806459969e-06 0 0 0.0003752046403 7.322826131e-07 0 9.293139056e-16 1245618.341 0 0 0 4.388110918e-08 1.455989705e-07 0 0 6.672437225e-05 0 1.983167582e-06 1.77659736 0 0 2.296781203e-08 828536.3458 0 0.0001305421132 3.419279552e-11 6.466159909e-12 0 5523201.09 0 0.02593109979 0 131586.3922 3.091425535e-05 0 1.56721207e-15 0 20179.63786 0 0 0 4.003068881e-11 0 6.057078948e-05 0 0 2.673656601e-05 0.3540640711 0 0 9.114322255 0 0 2410392.681 0 0 0 0 5.892937957e-05 0 2.252474462e-09 0 21228.1312 7.985288647e-09 0 697246.5848 0 0 644612.9581 0 0 0 0 0 3.896752221e-11 0 0 0 0 0 200.6080299 1.037267262e-11 0 0 0 0 0.000951943869 0 1.331593825e-23 0 504.7090496 0 2.391771293e-05 0 325.347878 0 0 0 +0 0 0 0 0 0 139498.9449 0 0 0 0 0 0 0 0 0 0 0 0 2.884023822e-14 0 0 0 0 0.2559335034 0 3.181944895e-12 4.479084049e-13 0 2.560653636 0 0 0 0 0 0 0 0 0 0 0 0 20.44365751 500448.8384 0 0 0 6.936667582e-11 0 0 4.799593083e-15 0 0 0 0 0 0 0 0 0 0 0.08916948805 1.137942795e-18 5.642261862e-24 0 0 3.524199812e-11 0 0 0 1.489066723e-08 0 0 1.017438114e-14 0 0.5494631785 1.41401501e-07 74323.70831 6.825611398e-10 0 1.844146532e-06 5.71120466e-09 2.174228804e-15 0 0.1202846277 0.0001135222603 0 0.1814974394 0 0.001905551941 0 8.212096093e-13 0 0 8.070530232e-10 16.94793133 6.461242407e-13 0 0 0 0 2.361637296 0 0 0 2.209914354e-05 2.551166871e-16 1.111537018e-09 0 56.21415557 1.737889623 0 0 0 2305.89918 0 0 4.475558595e-05 0 7.782812329e-19 0 2.283658029e-06 0 0.0002358827669 0.0001937537581 7.418118574e-15 3.465503e-09 1.045641257e-06 3.729311452 0 0 19.9614763 0 0 6.590381686e-10 0 0 0 4.023227666e-08 1.601700012e-20 3.387846799e-12 0 0 0 5.698590555e-08 0 2.18380879e-06 10390.2294 0 4.124217377e-05 3.627004235e-16 1.707504147e-19 1252.036797 0 0 0 0.1144982065 10357.52335 0 0 0 0 0 0 1.078753298e-09 0 315.7719521 2.36598547e-12 0.001080118533 0.0002351556602 0 1.130259662e-12 460.6188233 1.427635279e-09 6.952822907e-18 0 3.597764392e-08 0 3.294801968e-12 0.009818069504 11.00386166 1.732391105e-30 0 0 0 0.001997600314 141.0035722 9.703372984e-05 3.338312297e-09 0.1079365999 8.384485952e-18 0 2.010600166 0 0 0 4.686221465e-17 0 23.57248591 1.33660433e-05 6.59329874e-10 0 1.800268115e-05 0 701.9865362 0 7.46312062e-06 0 21257.20338 0.02668319613 0 0 0 7.578911316e-16 5.659273144e-09 0 0 3.504482799e-06 0 0 3.702229236e-30 11478.00066 0.001599297642 0.08836747882 11931.8296 8.619630426e-08 0 0 0 0 6.559514113 0 0 0 0 0 0 0 0 0 0 1.3646663e-08 0 0 0 1.106669717e-14 0 0 0.4380945519 0 6.503543467e-05 2.948963024e-34 0 0 501.9328834 2.289180214e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0002718547336 8.547465778e-09 0 0 1.534751658e-25 0 0 0 0 0 0 490569.1137 4.170288441e-16 0 615327.3916 604.8488355 1.640410235e-10 2.719702784e-14 0.4892489032 0 0 0 9.870592272e-08 0 0 0 0 0 0.0004390177811 +0 0 0 0 6.371247898e-13 0 0 2.420946449e-11 0 0 0 0 0 0 0 8.923225299e-12 4.391463755e-09 0 0 0 2.749396817e-05 0 0 0 0 1.158252367e-23 9.238642014e-05 2.476402682e-11 0 7.268173436e-07 1488.950101 0 2.967389762e-08 0 0 0 528618.7904 9.287142612e-21 0 0 2.749884289e-06 0 412.548775 0 0 0 0 2.883026376 2.655231819e-16 0 0 0 0 0 0 0 4.197395818e-06 0 3.000972721e-10 1.51555113e-20 0 0 2.289509402e-11 2.844291737e-25 0 0 2.901404277e-06 0 0 0 0 0 2.833958577e-06 0 0 0 0 0 0 0 0 0.0002601971047 1542.752606 0.0007431805466 0 0 0 1.790257308e-06 1.246505133e-13 0 3.58242729e-06 1476.856742 1.007752378e-05 0 0 1367.367059 3.291077636e-05 1.415659155 0 1.248249757e-05 0 0 0 0 0 0 0 54008.87137 0 0 7658.40979 0 0 6.220817259 1.718569178e-09 1.438710971e-11 1.312561281e-13 1.115899344e-20 0 1703.562809 0.03002744135 0 0 4883.866926 4.213788693e-14 8.867361487e-05 0 112735.6749 0 0 8.883933549e-09 0 99363.05431 0 230445.4039 0 210.5781381 0 4.024022054e-16 1.536597321e-12 1.179476654e-13 1.899362234e-05 89731.70084 0 0 3.7513695e-07 98096.1311 0 0 1.443527107e-12 0 3.542430278e-06 0 0 2.510084418e-11 0 0.1236109576 1.220561703e-15 0 0 3.346608849e-13 0 0 1.378011669 0 0 42.33967742 0 4.021750653e-12 3.994996477e-09 1808676.88 0 8.490259357e-05 0.0006478440731 653.717435 5.63491044e-12 0 4.171077292e-11 0 892166.6217 2.055696116e-10 0 860920.5963 6.534120814e-29 0 0 0 0.0604367047 0 5.031004083e-11 16534.01822 0 0 0 0 0 0 0 0 0 1.069498067e-17 0 1.081106115e-05 1.14575132e-07 0 105808.5823 9.439089147e-11 0 0 0.0002058971483 0 0.05820955125 0 0 6.617356631e-14 0 0 0 1243916.67 6.028703049 22.00948856 1.147343031e-05 363866.3183 0 0 0 0 0 0 0 820.7699104 0 405.280583 0 2769.225048 0 0 0 0 0 0 0 0 0.2669714268 2.208237745e-07 0 0 0 0 0 4.856872155e-10 0 2.561780613 0 0.6160745084 148729.5209 0 0 0 0 3.708838169e-24 2226350.877 22376.62419 0 0 1.871843056e-18 1368803.934 0 5.469393108e-17 0 0 0 0 1.951773851e-09 297.2122232 0 0 0 1.4458272e-08 0 5.799657129e-08 0 2.037351098e-14 235944.4177 0 3.523908541e-08 0 0 0 506392.8527 0.01441032155 0 0 0 0 4.48937599e-13 0 0 0 3.934132476e-10 +9.982917159 0 0 0 4.7228977e-13 0 8.918208224e-06 0 0 58.22695086 2.142400579e-12 0 0.0003735824373 0 0 0 0 0.008228808847 666.5048337 0 0 2.557049281e-17 0 0 0 0 0 0 0 0 0 8.320838805 1.243427147e-09 0.05968019112 0.005812104452 0 0 0 0 0 1.688036266e-14 0 0 0 0 0 0 0 0 0 3.717680357e-08 0.2454739442 0 0 0 54534.57702 74404.92241 8.524967232e-06 9923.440643 12788.6039 0 0 0 0.00939967242 1.133447127e-13 6.70183883 0 5202.285224 0 1.054229826e-05 0 4.076830599e-05 0 0 0 0 0 0 2.252794444e-09 0 0 0 0 1.779185257e-09 0.1872278449 59703.7665 6.983110448e-08 0 91936.05729 0 0 1689.085915 0 7.262367991e-06 509736.8153 0 1.127524453e-08 0 0 0 0 130643.9954 0 0 0 5.092871922e-06 715595.0654 0 0.1354233735 1.315609675e-10 0 41675.61489 16639.0681 0 0 0 0 0 8.216050257e-10 0 5.920326093 1.968681644e-14 2.343855891e-15 0 0 0.009693590167 2.112968785 0 0.4318618188 0 1.412380726e-17 0.3779896985 8.721213892e-10 0 0 0 0 1.592134722e-06 0 1.661976544e-23 0 0 0.5306253587 3.157318629e-09 0 2.389016725e-05 219702.5076 0 0 674900.9373 0 7.750630004e-14 0 0 0 0 0 0 0 0 1.977914447e-18 9.720443861e-11 0.1215665699 0 3.572380405e-13 0 1.909040775e-13 0 0 0 3.874770931e-08 1075898.612 0.009593509565 0 0 1.685111249e-14 11.56428184 3.491901948e-11 0 0 6.199356747e-15 0 22989.39362 0.01593590814 0 0 0 14160.75256 0 0.0003001289031 0 5.12586782e-05 0 1.24366908e-20 0 0 0.001223968627 6.752054103e-20 0 6.907124767e-13 1.121831438e-18 600697.7129 244020.7862 3.024241645e-07 4.806800704e-08 0 3.705548869e-11 0 0 0 8.554768107e-08 0 16.18034481 0 2.897514741e-09 0 5.093080177e-07 0.0001119203946 0 0 0 0 591.2978998 0 0 2.053879676e-26 0.04462426294 0 0 0 5.867264208e-24 0 0 1.300506677e-15 0.0307430369 4.424701656e-05 0 0 2.356553926 2046897.524 0 5506.12683 0 0 0 0 0 0.01706238609 705156.7788 0 0 0 0 10325.04159 0 0 0 0 0 0 0 0 0 0 0 0 0.05096424697 5.272794297e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 147552.769 0 30.907541 0 7.286484271e-11 0 0 1.202566648 0 0 0 0 0 0 0 1.604315677e-06 9.152829426e-05 +0 0 3.857258016e-40 0 0 0 0 0 0 0 0 0 0 4694.824414 0 0 0 0 0 41712.39922 0 134.7003892 0 0 0 0 0 0 0 0 0 316.936159 5.004275783e-06 0 1.709068512e-10 0 88340.02077 58.00891484 2.440799599e-08 0 0 0 0 4.714190495e-16 0 0 0 0 0 0 0 0.03802767243 0 0 0 0 0 0 0 0 0 0 246.2509216 0 0 29.4258729 0.0001795380483 0 0 5.70892487e-07 0.0002020726215 5.48640901e-18 0 0 0 0 0 0 3.025115527e-06 0 273.5070423 6.058796765e-11 4.44139017e-18 0 0 6.509861665e-10 0 0 0 0 97474.64983 2.75615499e-09 3.169502804e-28 0 0 74.19334881 0.01175111608 0 0.001556491104 0 0 0 0 0 0.1143147746 0 0 0 0 0 0 0 0 0 0 8.088123489e-08 0 0 0 0 0 1.663053157e-13 1.67356209e-10 0 2.12659354e-12 0 5.683863378e-10 0 3396.725668 0 0 0 0 3.615121518e-20 1.845021172e-11 0 0.003469101195 0 0 1.493349293e-07 0 0 1.121734241e-13 0 3.016333488e-21 1.549684871e-06 0 5355.302013 0 0 20126.16465 0.464868269 3.22335104e-08 0 0 0 8.441354363e-07 11499.05357 1.053306959e-08 0.0004757281256 1.706085828e-09 5.864955436e-16 0 0 0 0 0 5.730310284e-06 323.3252562 0 4.746027614e-09 44.96944501 0 3.043768317e-12 19805.04621 0 0.1808055305 0.0007640413433 8973.172707 4.804098932e-10 515040.4238 2.938103245e-06 0 0 0 5.36814739e-07 1923364.617 0.001329751637 0 0 32211.45794 2389.274666 0.2385096889 0 0 0 0 0 109857.4362 0 0 0 3.123987495e-11 4.900647052e-06 28.08937969 0 0 1.585777285 0 0 0 60003.04932 134767.6159 5.688067416e-08 0 0 5.075489789e-09 0 0 0 0 0 97326.08332 2.093806088e-06 0 0 0 0.0004331002005 0 0 0.0001933812056 4.756947099e-12 0 1.148334941e-17 0 0 14.41718832 0 0 0 0.03634367663 34202.07802 0 6.134356295e-17 0 0.0001528819075 8.856744801e-08 0 1.955577638 0 0 0 0 0 0 48.77681422 0 1.408336402e-12 0 1.120078655e-07 0 0 0 3.810977928e-08 0 619168.5282 6.269274672e-16 0 0 3.809435185e-07 3.029991359e-09 1.173028829e-14 0 0 9.321567003e-28 0 0 0 0 0 3.886041978e-10 0 0 0 2.39859789e-14 0 0.0001483957517 0 11.50281582 0 0 0 0 0 0 0 0 0 0.0003786771128 0 +4.373385244 3.982696088e-16 0 1.095497711e-09 499.4222467 0 0 0 0 8.121276919e-13 0 0 0 0 0 0 477.2366133 1.168610961e-16 0.0001793756541 0 9.240760596e-14 9.823556309e-07 0 0 0 0 0 0 0 1.057124137e-10 3528618.956 0 0 3.083964195e-05 18172.73784 0 0 228.917733 1454530.246 0 9999.617308 0 0 0.03064574329 1.338120399e-15 0 0 1.664135629e-25 0 0 220158.5026 0 0 0 0 0 864860.8844 0 0 0 0 0 0 5.903228238e-12 0 0 0 0 0 0 0 0 0 0 0.3673656741 0 6.165298701e-25 5459.677324 0 0 0 0 0 0 1.268479932e-13 737.6146519 0 591.1841116 6.071330136e-06 0 7.908181785e-11 103235.834 1.082904637e-07 14492.17597 2060.801139 0.8988101761 0 0 0 0 0.05249973783 0 0 0 3.387593322e-16 0 0.0002765635491 8.922977043e-05 0 213884.4177 0.001072312778 0 0 1.170629264 0 1.520538143e-05 0 0 0 218023.1254 1.268636243e-10 0 608198.9317 12094.08219 0 0 5.915829361e-07 0 0 30364.86204 286.9918891 0 250.9647061 0 0 1.746157761e-08 0 0 6.130330003e-12 1.445508557e-10 0 3.501249434 10738.8148 0.2527802172 1.328437042e-26 0 0 2198400.448 0 0 0 1.809910966e-11 159.0493237 8.281892647 0 0 2.420252776e-08 8.82494745e-15 951.8921912 0 499031.7475 0 0 0 0 6162897.962 830869.7819 19.49690083 0.2026974321 0 1052068.37 0 7.57560543e-12 0 2320900.075 0 1.016158828 1.302915282e-09 9.657746454e-14 2.296770578 0 13532.63474 0 5.287342223e-06 0 0 6.37973898e-06 0 0 1.823526134e-12 27.32988848 0 0 0 0 2058668.418 0 2.472721707e-09 7.081366651e-05 0 0 3.590217315e-35 0 0 33.31811463 0 0 4.542795206e-09 0 0.08134811454 0 0 1.120188839e-17 0 9.187030348e-06 0.01112162996 0 3.550773741e-08 2.074049851e-08 0.5900931566 0 0 0 1.54102956e-09 0 1.484330858e-06 0 0 0 0 0 4.063447689e-06 0 0 0.0440012143 282558.6946 0.003025471619 0 1281.954073 5.706575855e-15 5.161428291e-06 82187.59572 0 0 0 0 1.144496604e-11 0 0 0 0 0 65995.44937 0 0 0 0 0 4.115724688e-07 8.659404032e-33 1.09987114e-15 0 0 0.008158871166 0 0 0 0 0 0.0293001461 0 0.05319800562 1.176665157e-09 0 0 0 0 1.533406098e-15 0 0 0 9.131402598e-21 0 0 0 0 1.956739288e-07 1.524087055e-15 9.06306579e-10 8.507788214e-07 1.900542553 0 9.379354893e-19 59328.67165 0 0 0 1.362835275e-11 0 0 +0 1.194413245e-27 5.460472473e-11 0 0.8675136466 0 1.608160916e-05 0 3.629135691e-05 6.217383906 11.64007548 1883046.961 0 0 0 0 0 5307.657959 0 0 0 0 0 5912.587743 0 5858.256168 0 0 0 0 0 0 0 2.544514652e-18 0 0 0 0.1538753142 0 0 0 0 0 0 0 0 0 0 0 7.627696857e-17 0 2.200990213e-07 6.604469572e-06 0 0 0 374816.6111 0 0 0 2783.759825 0 0.1847122892 0 0 0 1539.453192 44381.8385 0 0 0 5.803895024 0 0 0 0 0.0001543566668 0 0 1.850504123e-06 2.040273221e-07 0 0 0 0 0 0 1.340707187e-20 0 151036.5064 0 1.145095274e-21 0 0 0 3.127696036e-25 0 8.517984488 4.114683769e-07 1481.462251 0 0.9082352308 1.161002974e-08 0 0 0 12743.08461 0 0 0.0002830883454 1.498641051e-18 1.198741546e-16 4268.211932 126.7045856 8.896753479e-14 0.0002489938315 5.300450821e-10 0 0 0 0.04797852865 0.5404677129 1.267096447e-06 0.002926273375 0 200866.1187 0 0 2.21256184e-11 1.009227387e-29 4.058239053e-13 0 539931.9131 0 0 0 0 0.001902028585 2.982484484e-13 0 0 0 0 69.89459265 2.039269374e-10 0 8.929826517e-08 0 3.666080873e-10 0 0 0 0 103321.4475 0 0 0 1.779845656e-08 1.089237236e-08 1.177070579e-05 0 0 0 0 0 0 0 0 409259.5924 0.0002260735374 7.994923445e-07 0 0.1179606223 0 5.39657608e-32 0 2.215604701e-11 0 0 0 0 0 7.212393475e-22 0 5.24798152e-08 0 0 2.17541092e-07 0 0 0 0 0 0 0 0 6.961140827e-08 0 0 7.80644721e-14 0 5.652528234e-13 0 0 5.388407084e-09 0 0 0.04314604714 0 0.004968176454 0 0 1.382546237e-09 0 0 0 3.928672955e-14 5.42628192e-13 7.848877147e-05 0 0 6.739961953e-05 0 0 14750.34639 0 0 7.558076344e-12 0 0 0 0 0 4.174590159e-11 1.060550627e-11 0 0 0 0 2.216271115e-08 7.790931801e-05 0 8.066900572e-13 0 41048.17592 1.632554334e-05 0 0 0 0.3197866432 0 75.25448513 0 0.2898268697 0 0 0 3.609304945e-14 0 6.952857748e-09 1.253272183e-12 0 0 0 0.0665653991 973844.1957 203837.5015 1.012691127 0 0 0 0 0 0 0 2.662587519e-15 11.74727442 0 0 0 0 0 0 39.35798142 0.001633657902 0.001120513764 0.0002081474063 0 0 0 1152.149302 2.058246482e-08 0 183928.6838 0 1.866130203e-25 0.0001794495972 0 0 0 +0.7096135917 5.584635152e-24 455867.9294 204.3866741 0 0 0 9.971503866e-20 0 0 0 0 1224469.178 0 0 0 0 0 0 0 0 0 0 2.986722937e-06 0 0 0 0 1.084845143e-05 0 2.209724137e-26 5.737787402e-15 0 0 25467.38369 0 0 4.227843332e-13 0 2.164897676e-08 0.5419963218 0 0 0 0 4.664201733e-05 0 0.1103219516 0 0 1.113684844e-22 0 0 0 3.467855646e-06 0 0 0 0.05597002339 9.313888129e-11 0.1061565337 0 1919.731066 0 0 0 0 0.01875441494 209970.2122 0 4.66834853e-19 0 0 0.003325476054 0 1.275622652e-05 696.021704 8.442972156e-06 0 0.01455973253 0 0 1622.504087 0 1.037790723 47450.74085 4.072741597e-08 0 28965.95274 0 0.7448912835 5.208821891e-08 2.335983691e-19 64.5867462 0 3.855633746e-06 9.027174365e-08 9.63225588e-08 0 5.840922241e-19 5.297508686e-09 0 8.24869013e-11 0.01787814295 1.269170178e-12 0 5.504896485e-14 0 653.4374901 1250.06711 0 0 0 0 1.052269623e-13 3.005730328e-13 0 0 239.0231073 8.170580828e-11 0 1.887181115e-11 0 0 0 0 0 0 0.0003923959959 0 0 0 0 1.185666813e-09 0 6.753111089e-19 0 0 0 0 0 0 5.695278779e-10 0 0 5373980.157 0 224.4890919 1.054303735e-13 0 1.430791092e-13 0 0 3.798806036e-14 0 6.136195925e-21 0.2025687478 0 0.6510421034 1.574696521e-09 0.191901418 2.235832034e-18 0 1005.503468 246312.4892 0 1.353977352e-12 0.006285594083 0 0.0004004321494 0.6423564771 0 19.29961708 0 0 0 9.292207374e-06 0 3.622335216 17062.52481 0 0 1002.872356 6.545943287e-11 0 0 0.009909896409 8.091990716e-11 0 1.295307477e-16 0 0 0 0 0 0 12142.52181 1.497437596e-10 0 5.785740786e-11 1.467580376e-15 0 7.552652061e-07 6.014092314e-06 0 16699.28704 0 1070.146988 0 0 2.526066169e-05 0 0 0 2.517675796e-06 231287.6147 0 65309.16949 0 0 0 2293.952831 0 4.802255846e-08 0 0 0 18.58850049 0 0 15574.8281 0 1813612.64 0 0 0 0 0 0.5125764988 0 6.95392573e-07 0 1722.101932 0 0 0 5.835940574e-07 0 8.224396497e-14 0 0.0008752673948 0 0 4.133693099 0 0 0 629572.6133 0 0 0 0 2.41799521e-13 0 0 0 434439.6506 0 22.42110834 1.004195892e-08 0 0.07380370616 39483.30653 0 0 0 1.980648414e-08 0 0 0 0 0 0 0 45779.91101 0 0 0 0 1.810286315e-36 0 0 0 0 0 1.993676401e-09 2.907459069e-20 0 0 7.724089337e-10 +0 0 0 0 197699.2896 0 0 1.416406437e-08 0 0 0 0 0.0004046834362 0 0 0 0 2.088876512e-12 0 0 11179.7744 0.004815019167 0.0001029001149 0 2.452567567e-10 0 0 1.058142675e-13 9.294118292e-14 0 0 0 0 0 0 0 7884674.514 67513.76551 5985.717684 2.395121467e-09 0 0 381.070635 0 0 0 0 0 0 0 1.219617059e-10 0 0 0 4.556861512e-11 0 0.03049521906 0 1.039500623e-24 2.623560701e-10 0 223.3482143 0 7.04146966e-09 1.814515197e-08 0 8.26148674e-11 1.512158951 0 4.128849335e-13 2.62423952e-08 0 0 0.0001237064319 0 0 3.706512314e-08 189502.694 37802.72275 0.02821428565 3801.179449 0 3.943226066e-25 4708.4747 0 0 0 7.079176545e-10 0 0 4.207589935e-12 4.621441711e-08 0 0.005931765793 0 566899.7939 0 4887.446398 0 0 6.125574872e-11 10206.40849 1821.626558 0 0.1052449703 4.417064999e-12 5.487633939e-07 249717.0533 0 2.92159213 668.2460888 1.339250514e-30 4.48118326e-15 0 255.5212513 0 0 0 0.01608395264 64274.65128 0 0 0 0 3873.160242 24.20740217 321356.4696 0 7620.032475 0 0 6.63777338e-17 0 7259.594264 0 0 1090.621304 37.35904367 0 0.3420237667 0 3036472.177 0 51.01886156 1593919.696 0 1760.454744 0 0 2.224700393e-11 0 0 0 0 0 0.0003306399706 0 0 0.0007853211826 0 0 6315.240571 226630.559 9.038220053e-07 4.748967069e-12 0.002076369696 0 0 0 6.159784242e-13 0 103423.9752 0 1.87395982e-05 5313.125465 0 6.862856894e-10 0 12.93496774 0 0 0 0 0 0 0.04021229079 7.53506598e-21 0 54.69209434 110.9982165 19183.63476 78.12022146 1.973599329e-05 1.452020771 0.0006660225965 0.00844213649 792525.6277 0 0 0 0.4621671743 0 0.03360650088 0.001535368209 2083.328868 1.875857329e-13 0 22.19310795 0 0 0 0 3.068875153e-08 202600.8519 0 0 0 378.6538688 3.455002159e-21 0 2.711092658e-15 1609968.843 0 0 0 0 76.87880555 2.962131039e-10 0 0 0 0 0 0 1.837871454e-11 0 0 0 0 0 0 0 5.52825443e-07 0 0 0 696.7743463 0 0 0 0 0 0 0 0 0 0.000402032718 1.167652631e-06 0 0 2.441252984e-08 0 0 0 8.715368679e-09 3.673749691e-30 0 108864.5639 2.972761498e-13 0.03655106875 0 14038.03039 0 0 0 0 0 0 0 0 0 2.425681073e-10 0 0 0 0 0.0002155050776 0 0 0 0 8.529827984 3.136082986e-05 0 0 0 0 0 0 0 +0 8.375477463e-10 0 0 0 1.264212697e-09 0 0 0 0 0 0 0 9.859296004e-08 127577.8242 0 19.21271484 141224.7817 0 0 1.872086697e-14 0 34.67648741 0 66.13955621 0 0 0 3627886.749 0 1.276384625e-08 0 0 0 0 0 0 138.1050409 2.486613994e-12 0 0 0 4.294342525e-09 37914.67136 5.16284308e-13 1.671533444e-11 0 0 2.89367359e-06 0 0 0 0 0 0 0 0 0 0 390158.3226 5.562409879e-27 6.59638056e-21 0 0 6.435463038e-17 1.924140279e-15 0 0 0 0 2.598587846e-13 0 0.05855513003 0 0 2.510209138e-07 5.328390546e-05 0 0 9.058382406e-06 0 0 1.13715933e-05 0 0 0.007791273767 0 364.5921247 0 0 2.039343786e-08 0 0 0 5.577413239 0 8.545881086e-05 3.225775644 7.214896866e-15 0 0 2600.276702 0 1.177988794e-06 37605.5591 22.75524578 0 5.120981965e-31 46696.6962 2.366466179e-10 0 0 3.5974157e-11 6.622266332 0 723.4723784 0 1.796275516e-13 0 0 2.580425987e-17 4.036541983e-10 0 5.585512626e-13 0.03156175986 20463.67676 253610.9019 0 4.70622982e-05 0 0 40865.69773 252827.3292 10.41874324 0 0 0 9.857213077e-11 0 0.003489280874 6.246217544e-30 1.607014642e-21 2.454887167e-05 0 0 1.779672227e-09 0.0007738613933 0 527411.3677 0 0.1355880677 0 0 0 0.006463591206 1.492278246e-08 7.765570091e-06 0.000238258935 3421414.625 3.816206047e-22 0 0 0 0 0 1.302537917e-23 617231.5206 0 0 0 575714.852 353611.3857 0 0 3.186275183e-21 0 0.001647840818 2621.451525 0 0 277.1767748 2.996952378e-11 0 4.399358701e-07 0 0 0 0 84866.85603 1.039298507e-14 5.458467934e-17 0 0 0 778436.8997 0.002513172835 1.068090289e-05 1051.422886 0 1.322228134e-19 6.941717894 270083.968 0.0772865893 0 0 220110.521 2.78436853 1.193556267e-39 5.125066846e-16 4.062396887e-21 0 0.1417947567 26955.79497 0 0 0 0 0 14887.38155 0 2.714704678e-18 0 0 1.315726373e-16 2.45308232 1.128893794e-08 0 0.00664566573 6926.651007 0 1.243045256e-08 0 2.338198657e-15 0 0 2.667444113e-07 0 0 0 0 0 0 1.125988914e-22 0 0 0 0 0 0 2.667649323e-06 0 0 5.701402905e-06 0.1558114124 0 0 0 8.955134661e-16 0 0 2.968891757e-13 0 0 0 0 0 7.741489965 0 0.8790251038 62043.19062 43370.99097 0.03459144057 0 0 0 0.000363269829 0 0 0 0 0 0 0 0 0 0 2.040534518e-06 0 0 4.800884499e-09 0 553581.9147 0 0 0 0 6.914856486e-05 0 0 2.332209001e-06 +0 0 0 0 0 0 0 0 0 0 0.0002553632642 0 0 0 104904.2265 0 0 0 0 1.955182449e-13 1.04784539e-11 0 47.60278004 495665.472 3.459330698e-08 273.4507566 0 0 0 0.001288193408 0 0 0 0 0 26028.28152 0 0 0 0 0 0 0 0 0 0.08614438684 0 0 0 0 0 0 0 0 0 3.030815812e-08 0 1.357391234e-10 0 0 226083.4014 2.155976491e-06 0 2.169258845e-12 2.511627669e-11 22841.78802 0 0 0.002415693252 0 1.071085734e-07 6.822693052e-14 0 0 1004.657859 4536.075984 5.724000073e-15 0 1.364782883e-10 0 0 3.882737935e-13 0 7703.105702 0 0 0 0 0 2.298894928 19945.52754 4.056607606e-06 4.202100254e-24 0 0 3.895485484e-08 0 0 7.290649962e-15 0 8327.850835 132329.9178 0 4.201061895e-06 9.668937269e-09 0.002053222628 0 0 0 4.486453319e-11 0 128.2222951 8.934809888e-06 13051.02385 0.0002343468189 2.620800026e-11 0 5.521546635e-13 32720.97514 2.410494586e-08 0.0002540939283 0 114973.1103 3.365632557e-05 0.006526271233 6.427450638e-11 0.005333077562 0.0001082865984 0.0008260186888 9.67698183 0 1.271828355e-09 0 14.3200913 67383.4971 3.681405002e-09 0.0001555233352 0 0.06595274567 0 0 0 1.772175641e-05 1.8677721e-10 1.494230654e-14 2.897770188e-15 3.820947336e-14 0 9.601622928 0 0 0 0.0001435198994 3.651977498e-18 0 0 0 0 0.000357284498 0.1294623724 0 0 0.6548935502 6.315842312e-09 0 0 7.12834323e-05 0 0 6.346850074 1.042831591e-05 0 0 0 6250.252668 9.548297544e-11 0 0 742447.7247 0 0 1.78499519e-06 410587.9067 9.210037885e-07 0 3.048405158e-09 9.536349044e-12 3.445705603e-16 0 0 0 0 3.575750867e-19 0 3.932185937e-23 0 2.329882815e-11 103708.1398 0 1.677088651e-08 0 1.262155514e-05 0 5.460618763e-09 0 4.871515661e-09 0 0 13943.00752 745820.1451 1.446104226e-15 26.53310237 0 1.43992035e-15 0 0 0 0 2.859611288e-16 0 0 0 0.5543171261 0 0 0 0 0 0 7.243760426e-13 415.0132119 0 0 47198.69297 0 1.795500848e-10 0 0 0 2.261997173e-07 0 0 0 57363.70023 0 0 0 0.001290332008 1.107556491e-20 0 0 0 2.704749071e-09 4.846390978e-05 0 0.04922278236 0 0 0.0003882557659 1.120085433e-07 1.741991389e-05 0 0 0 0 0 4.740655109e-24 0 0 0 0 0 0 0 0 0 7.150291513e-05 2.726228218e-08 0.8364950983 0 9.133262839e-17 0 3.952195463e-28 0 0 0 3.522563307e-22 0 0.002237237263 3.121203224e-07 0 0 2032263.214 1.717999511e-09 284.8719809 52.7312225 0 0 2.168399521e-11 0 +0 7.825110095e-13 0 0 0 0 0 1.292921761e-22 9.310063332e-11 0 0 0 8.719378893e-09 0 9.145387077e-12 1.974060414e-06 0 0 0 2280666.435 0 0 0 0 5.919633934e-09 444.2409953 0 0 2.140350373e-19 0 0.0008028216725 0.0004263892756 0.001252086951 0 0 7.251586906e-11 0 4.594758818e-10 0 0 0 0 0 0 0 6.057438221e-06 3.847445695e-09 0 0 0 0 0 0 0 0 6.070126111e-17 5.685390707e-12 55.11996444 0 3.239293919e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.704818978e-19 0 1.323997703e-20 1.362965183e-11 0 0.1033601603 0.0002983911175 0 0 2.95073166e-13 0 927608.9107 417.1221305 0 0 539267.5363 0 0 0 1.54928803e-07 0 5539.35515 0 147.7754774 0 0 0 0 0 32.61439683 0 0 0 0 0 0.02991822026 0 0 1.29622025e-05 0 3.252320742e-09 126312.5496 0.001415754253 129.0129569 262.976346 1.385242311e-17 1.204054831e-14 2.528007427e-21 9.321367664e-13 0 0 0 2.564531684e-06 5.838859571e-11 0 6.144730725e-11 0 0 0 3.871018891e-20 0 0 0 0 0 0 0 0 8.729393095 2.087951503 0.003118058174 0.0006663754818 0 3.878163022e-11 0 0 0 1.068139099e-06 3.028375465e-07 0 2.697265632e-10 15.26871766 0 0 0 1.436736125 130777.7163 4.643550877e-15 7.188634438e-25 1.448218917e-16 0 16.40706807 1.52043675e-11 438.723342 2.878035235e-08 0 1684.062141 0 0 0 295086.2685 576914.5665 137432.6266 6.688028549e-12 0.006557065407 0 1.820348102e-12 15486.63717 0 1.269700287e-10 0 164.1911407 1.048344735e-10 238.810221 1.356980831e-06 0 0 247285.7738 1.478805585e-09 0 0.001292950159 0 6.177282061e-14 0 42076.64771 2.745834883e-08 3932.989726 2.197089787e-09 380192.7831 0 0 0 2.884719563 0 104448.0043 3412.077554 0 0 61.71788353 0 0 0 135443.347 0.1316304963 0 0.0001323329919 0 0 41944.2727 0 0 0 2334544.801 0.01838607642 0 0.0001722763999 0 0 2.333821802 1.621257882e-05 0 10.84045576 5.720590112e-20 0 45.53024371 0 0 33.65952549 1044.650306 0 0 7.242282355e-19 102.014849 0 0 0.0864391884 0 0 0 0 2.148993262e-10 0 0 0 0 9.912067082e-07 0 0.005166312918 0 1.896039482e-11 1.565893723e-09 4.007379862e-17 3.977645787e-06 0 0 2.228626658e-06 707.7472063 0 0 0 1.99929412e-16 0 0 1.279523778e-17 8.657261787e-09 0 0 0 0 0 0 1.712509954e-11 0 0 0 0 0 165888.1215 0 0 4.224015218e-09 0 3.854491824e-08 0 +0.000616595639 0 0 0 45872.29483 0 0 0 0 1.481306335e-14 0 92728.05252 0 1.458985311e-08 4.534334385e-05 0 0 0.0004801134479 0 0 0 3.566987459e-09 18574.26918 0 0 8.435613848e-18 1388669.98 0 0 0 0 0 1.505249103e-05 0 0 0 0.6740774394 0 0 0 5.383267123e-10 0 8.465086937e-11 0 2.429707827e-07 0 0 0 0 911.6127633 0 0 0 0 0 0 404801.9835 1725.063869 0 50384.63534 0 0 4.243728665e-28 3.735860419e-09 0 0 0 142040.7609 0 0 11.83774705 0 0 0 0 0 8.673694537e-06 1.16947474e-13 1.023499126 0.003899205831 0 3.52593349e-13 13249.42054 0.003530837466 0 0 0 2.437311512e-24 0 9781.207515 0 0 9.985804804e-12 0 0 195006.3881 0 0 9.803803637e-14 5.58889349e-18 0 0.0004190271642 5.049867524e-11 1.627383793e-28 0 0 7.953261132e-11 0 0 0 0 8042.568429 0 0 5.005861479e-06 0 0.0002031479619 0 0 0.0002721434711 0 0 2.270923892 0 0 3217408.319 0 0 0 0 1.885297441e-16 0 37.24504182 0 0.000183957308 570019.7263 2.067943386e-09 0 3.520981137 0 24.2140705 0 0 1.736853182e-05 66.4836926 0 1.102303441 1.254473586e-16 0 0 0.0008094925404 1.462921174e-14 0.07203258984 2.73668843e-14 0 5.52748782e-10 14.00872292 0 0 4.186909055e-08 0 0 9818.69251 0 0 0 2.679255201e-12 9.311364448e-09 0 6.098976153e-05 50.28263624 0 0 8.528478804e-10 0 0.727539753 1.679618576e-13 1.981263714e-14 0.02833985186 0 7.840019165e-15 1.587309774e-16 5.661193007e-08 0 1.340716761e-05 0 0 0 0 7.941257579 0 2.112768072e-05 0.0002459401761 0 4.156059659e-20 0 0 5537.673812 6.721976209 0 0 0 0 0 0 0 1.98919717e-05 0.2177229469 2.97014478e-09 0 0 0 0 0 0 218800.7754 0.269965809 282.8152915 8.756612011e-11 2.162907069e-07 0 0 0 0 0.002241249189 0 0 0 0 0 2.195436721e-05 1.99229522e-13 0 8.883328373e-11 0 0 294215.1174 0 0 0 0 6.908094701e-07 0 0 0 0 0.0008989215555 0 0 0 0 0 0 0 1.452219769e-14 0 1.748357086e-05 9.0449843e-12 0 0.5933315983 362126.8937 0.1115212157 0 0 0 0 0 0 212888.2781 3.363012804e-11 0.2801026274 0 0.0004529465482 0 0 0 5.035378361e-21 0 0 0 0 1.471122462e-17 0 0 0 0 1.280007382e-17 0 0 0 0 42.74969724 135881.6394 0 0 0 0 6.809125901e-13 0 0 +0 0 0 0 0 1.663656544e-06 0 0 0 0 0 0.02710584607 0 0 0 10298.74589 0 0 0 0 0 0 3.886649373e-23 0 0.0190173883 0 148.3187448 0 0 0 0 0 0 0 0 0.2561147714 0 2.958414532e-08 0 1.322937582e-11 0 0 0 0 0 0 1.16129423e-14 0 0 0 0 0 0 1.506599863e-15 0 0 0 0 1.587264154e-08 29.5893998 81033.73874 4.419960775e-10 1.227250437 7.447384198e-11 0 0.2968758756 0 0 7.690515207e-11 0 1.651292354e-06 0 0 2.443086799e-06 0 0 0 0.01150255154 0 0 1.388122683e-12 0 1.590389564e-05 2374.229641 0.2470004078 0 0 0 0 6.644116103e-09 0 0 4.953179925e-10 0 0.01069274212 1.054622634e-07 0.000203777904 0 0.03018262096 0 0 0 159.2376858 447905.4171 2.165706784e-12 0 0.0005080568929 0.0004194483443 0 1.226696659e-08 1.947661685e-11 0 1.121705998e-08 0 0 0 2.306500703e-10 0 5.224844527e-07 5.418276366e-08 1.194063152e-28 0 0 3.310717081e-10 2.93707595e-24 14012.40403 14364.33409 0 0 0 19056.15259 5.954179018 7.309541388e-14 3.512909602e-05 0 1.364392073e-08 0 3.872282884e-14 748.2175768 0 8.512785835e-11 0 10.8866943 3.071182857e-12 0 2.338806126e-08 0 0 7.385881586e-13 0 0.04912641894 0 0 0 0 12.53144609 0 1181293.691 0 0 0 1.223098019e-12 321764.1376 1.785334941e-06 0 0 0 0 0.2285337838 0 0 1.7053215 327.5499856 1.294201442e-14 0 4.397927907e-11 0.02016408845 253192.0541 7.486333224e-08 0.6823549027 0 0 0 6027499.306 0 0 0 3.567058898e-11 0 0 0 1.353040616e-12 0.001010201075 2.320914495e-13 12.15784031 0.0009179667342 0 0 0 0 0 0 0 0 0 0 1399.809038 0 932.2368918 0 0 0.0002408047327 1.523144352e-10 15188.64974 0.002217112111 0 2.115904627e-08 0 0 0 0 75.89529578 0 0 0 0 6.518726787e-06 117.996824 2.663869607 8383.651603 0 220.171753 0 85460.73224 0 4.724420707e-07 0 0 6.200567013e-06 0 0 0 497.4280592 0 654.5048193 0 0 0 0 1.010716805e-26 0.04959325133 0 38890.68502 0 0 0 45.41503792 0 2.026038313e-13 0 2.028942332e-08 293.0368709 6.254085584e-09 1.187311661e-07 0 3.486676677e-14 0 0.01999378232 1.161615386e-06 1.062412549e-15 0 0 0 0.1880153271 0 0 0.01194618501 0 5.858727428e-09 0 0 0 0 1.315616415e-05 584.4750975 0 0 0.0003952813321 0 0 977.5553426 0.4253861938 0 0 0 0 0 0 0 0 +9.446951962 0.0002911204119 3.532519835e-06 0 0 17368.66251 0 4.072219908e-25 6600.576507 2.30042178e-07 0 0 0 0 0 0 0 0 0 0 9.307753632e-08 0 0 1710608.375 0 1579556.629 0 0 0 2.997309488e-17 0 0 0 2.936212191e-17 0 1.48234549e-14 0 0 5.148408274e-10 0 0 0 0 0.163668814 4.216639181e-09 0 0 0 0 0 0 0 0.07505645262 0 0.2234365387 6.777304046 0 0 0.001147464539 0 0 0 0 1.173064725e-05 0 0 0 0 0 0 0 36892.98159 0.001150314409 0 0 2052303.005 5.697984574e-20 0.001764745494 8.745763165e-16 8.409242913e-11 0 0 0 0 0 0 1017847.252 9.838611112e-08 35996.0928 2.520978195e-06 11.70956304 2463.478487 3.84193425e-20 1.870224078e-05 0 1.367222962e-07 29994.268 1.383572163e-06 1.164542809e-15 8.115515816e-11 2.369964505e-16 0 0.7308310815 1812.916694 0 0 0 0 1.74280059e-16 90.96951024 52538.32899 0 1.084341076 0 0 0 0 0 4.33736004e-15 0.0119800752 1.565670944e-05 0 68016.37898 0 2.25829003e-19 3.107830088e-12 2.88617028e-14 0 0 802708.8026 104.2887466 137123.4021 0 72756.62015 0 0 0.7878491913 0 0 3.679130907e-16 0.2552038001 825561.9643 0 0 3.772886844e-08 2.304509256e-15 0.08211614914 0.004879679012 1.264597369e-05 0.001424491634 0 0 3.613265048e-05 0 0 1.460128362e-11 0 108614.2787 82.51900928 6.3854701e-13 1.432582556e-12 6.615000761e-16 0 0.2473160333 0 2.579820496e-18 1.371903758e-19 4.73394776e-12 0 0.01287794203 0 0 2.878794542e-10 0.8700640532 9.339607349e-07 0 0 0 1.230860883 0 2.392505809e-07 8.698420284e-11 0 1.746525456e-22 0 0 0 55.49860311 0 1.010859826e-05 6.623256379e-13 1.797913948e-05 0 2.914792521e-19 0 0 283.8648224 0.1435244132 2.67874839e-09 68605.56362 0 0 0 0 0 0 0 2.242002423 0 0 0 0 0 1.868205056e-12 265.0055488 0 559279.2159 0 0 0 85.82857348 0 1.199350859e-09 0 0 370120.9426 3.086857025e-08 4.680284068e-07 0 0 0 514.2532158 0 6.964038615e-12 7.110577446e-12 0 0.000180044179 222699.4856 0 2.530809136e-10 0 0 0 0 0 0 0 0.497682074 0 0 0 0 9.254062198e-21 0 1.637607124e-14 0 0 0 7.005853327e-09 9.806513013e-15 4.107559743e-07 0 6.70289752e-16 4.088802351e-17 0 0 0 362303.6598 0 0 1815.488328 0 0 0 0 9.087429556 0 0 0 0 0 0 0 0 89149.5519 0.09937035508 0 0 1.264836816e-07 0 0 0 0 1882.076372 0 0 0 2.823576945e-05 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.858406274e-20 0.02163061465 6.856252654e-10 0.0004294475969 2.728183252e-07 0 0 0 2.752270578e-07 12258.30027 0 0 0 0 27965.80468 5290.309572 4431.525326 0 1281.311643 0 1.332518517e-05 0 0.4096975574 986.0853072 3.423989365e-17 0 0 0 0 9.711916319e-13 0 0.003597325103 0 0 2597.673649 15.22255361 0 0 8.980704207e-06 0 0 0 0 2002.724288 0 0 0.0009013525941 0 0 8.665700868e-07 0 0 0 1.274234231e-14 1.291816909e-23 2.351452288e-20 0 0 1.25642436e-14 3.640764491e-13 0 0 2.458733463e-16 0 6426.590631 0 1.55555359e-12 0 7.287009811e-09 0 0 3.933000034e-12 0 0 0 0 0 0 1.166798872e-14 0 0 0 0 8.963958945 3.625314172e-05 8501.296377 1.566796923e-12 0 390.1043487 0 0 2281973.633 5.44227111 1.0208217e-20 0 0 2.071361753 23006.03444 0 0 0 0 0 1.146732323e-10 8144.535516 0 0 0 0 2.2566648e-10 0 0 2.690658087e-12 1.922735368e-11 6.613269787e-10 0 0 0 0 0 0 0.1970747396 1.855192903e-09 0 0 0 0 341549.8473 4.548572398e-05 0 0 0 0 0 1.407963153e-16 5282.497431 184456.0356 0 1.402857674e-16 0.02865352437 0 0 0 0.01952608446 0 0 0.007869426625 0 6.732154741e-08 0 3.053273017e-09 0 641.6529002 0.01827724106 104.6523188 0 0 3.992630074e-10 15102.0014 8.248532836e-14 3.40286983e-07 1.362235675e-05 0 0 1006.120374 0 2.66881694e-13 0 0.0005561718409 1439687.721 0 0 0 7.771718575e-12 121.0022292 0 1.315295904e-12 2.02781025e-05 2.096172597 2.054781561e-10 0 0 0 0.1224576095 0.00321264204 6588.639533 0 3668.467771 4.964386688e-09 0 0 0 0 0 6.070350983e-14 0 0 4.404124309e-10 0 0 0.05511502546 2.764181224e-07 35.90898459 0 0.04559848114 0 0 1.215467446e-06 32841.18756 0 0 0 0 0 0 0 1.041576685e-05 0 0 0 0 0 0 0.02095570518 0.01033986854 0 0 0 0 0 0 0 0.01229527995 0 0 0 0 0 0 0 1.049426312e-20 0 613867.7682 0 0 1.130360896e-14 0 8.424416184e-07 1973.868958 838663.3704 0 0 0 5.931245595 0.08927625278 448.5356638 0 7.944126918e-12 0 4.581431343e-10 0 1.818363154e-11 3.077467853e-12 0 0 0 0 0 1.11624475e-17 7.446763507e-10 0 2.295590577e-24 1.678416615e-08 0 0 0 0 2.369509826e-06 0 8.0255179e-09 0 0 +0 0 0 0 0 0 0 0 0 716.8782909 1.008398773e-21 0 0 0 0 0 9200.794413 0 0 0 154385.1157 0 0 1.327047175e-12 0 0 0 0 0 0 0 0 0.00513239054 2.444535976e-09 0 0 0 0 0 0 0 3.978781151e-13 2.617248031e-13 0.01157035609 10918.97591 4.882930282e-09 9.397415936e-13 514596.2414 8937.732172 0 0 0 4.607655132e-08 0 0 0 7.709564146e-14 2.637447058e-06 0 2.979895574 8777.109696 1.553420969e-11 0 0 0 0 0 2003152.834 0 3995385.388 0.00011879671 0 0 0 690053.1103 0 0 617704.9312 0 0 0 0 1.858562347e-16 0 0 195381.7196 0 1.608242896e-16 428854.2878 9.204101038e-12 0 0 9.932027991e-06 0.02721116401 99.42428998 0 308.545544 3.590774232e-07 7.732026333e-12 3.362308613 0.001101164638 7.571463941e-09 1.79370341e-21 1.401940732e-10 7206.241553 0 0 9.40108443e-16 0 0.002000489828 0 38405.05322 0 0 0 1.883467391e-08 0.004650942631 0 0 0 2.798746774e-15 0 0 4506.424561 0 0.0003395653226 8.426363811 0.0007378282848 3589.766359 4.318996465e-11 0.001013546729 5.561603253e-10 1430.686251 0 7.334268204e-05 0 4.30879379 195806.1385 14.9304792 0 723768.2446 0.5718660435 0 0 0 0.0001929675111 0 153.606886 0 0 372.2872113 7798.1511 5.89622272e-07 0 1012.602933 0 0 0 0 1.155766042e-13 0 0.4849700401 2.750694986e-11 250202.2895 0 0.04132361341 6.050788458e-14 14.91344668 0 0 0 4.091570209e-11 0 0 0 0 6.124742371e-16 0 0.009900924616 0 0.6960384165 4.205341869e-12 4.831192238 0.3864649176 0 0 0 33308.14406 0 1821.024697 0 3217.840381 1886.286911 0 7.089957126e-08 0 0 0 0 0 0 5.401124714e-06 3480.459545 1.994634166e-05 3508.430035 0 6.893445469e-08 2.696745909e-07 0 0 0 0.0001301196019 0 0 1.535049143e-05 0 0 0.01810696243 511703.5762 0 2.011037861e-16 0.004346742511 213.6634799 0 0 0 8.843974293e-14 0 107358.1783 0 15572.16067 0 1.854979348e-23 0 0 0.767958097 0 0 0 0 4.243901678e-16 0.0001083969422 0 0 0 0 0 0 0 0 0 2.654087204e-17 4.71880624e-14 22069.59158 0 0 0 0 0 0 1.380068123e-06 0.05880642136 0 0 0.07452450915 1.906934287 0 0 0 0 0 1.213725138e-05 8.878587015e-05 5.55670858e-18 0 0 8.602303264e-12 0.002365997416 2.338759012 0 62.49933807 4.184685367e-05 0 0 0 2.707247695e-14 0 0 0 0.01499011249 0 0 0 0 0 0 0 0 0 0 +5.800102659e-08 0 0 0 0 0 0 0 0 0.2388798117 0 5.909919372e-18 0 0 0 0 0 0 0 0 0 1.425033973e-10 0 0 0.0007462421375 4.350735972e-17 1.18583843e-09 71.35834827 0 1.828090077e-09 0 0 1.019781651e-07 0 0 155392.0834 1.125844781e-09 9.645545829e-11 4.900625117e-06 8.215124589e-25 0 0 8.785121968e-20 0 0 0 0.0145922433 0 0 632929.7341 0 0 0 1.710103449e-16 0 0 1.416364007 0 0 1.718130171e-14 10.88916025 0 1.370924778e-15 1.86366707e-13 0 0 0 0 0 0 5.059832763e-16 0 7.277371205e-09 0 0 6.966218538e-12 0 0 8769.430358 2.014856309e-22 0 0 0 2.052403217 1.008949695e-06 0 0 0 0 0 36503.59722 0 2.413014653e-11 0 0 0 0 2.375568968e-08 4389.469493 0 413465.6384 1.142906765e-16 7.134809931e-12 0 0.0002443839583 1.876048604 0 0 1.654274429e-08 0 44.06558593 0 0 0 0.0004002322085 0.00783980844 0 0 2.59842356e-13 3.835112977e-08 2.044177036e-11 1056.465201 0 4.351110053 9.672366032 4.048653645 1.070674019e-16 4.397158739e-20 1.535028592e-10 392.1325242 0 0 2094.804913 7.722043719e-13 2.808543567e-19 0 3.203162308e-14 0 0 0 0 233106.0277 7.619182661e-08 0 4.334109519e-09 213.9407632 2.129753011e-10 0 0 0.04734025991 0 4.611253889e-23 1.332427534e-06 7.756095124e-12 0 0 0 0 545.0182822 0 0 0 329808.1564 0 557809.7331 1.308562059e-06 0.02891001171 0 34945.54677 0 0.1028292234 1.522536083e-08 0 0.1651680508 9182.639502 0 0 0 0 7.767740124e-08 0 3.01423088e-31 4.335678899e-06 3.927576958e-16 3224.67522 517059.6309 0 1.951085369e-06 0 0 0 0 0 5.917330574e-07 8.91241738e-07 0 1.429017039e-15 1.339568633e-11 0 2.54938694e-13 0.0001335204312 4.19491473e-13 0 6.517901325 0 0 5.208864645e-15 0 0.003254035851 0 0.01765516318 1.426380132e-05 8.929969459 1.993729029 0 0 2.251728187e-06 0 955350.6685 0 0.2197128375 1.822129792e-08 0 0.0009304876913 0 0 1481826.307 0 2716.817736 0 0 1.169947719e-17 0 1.93198104e-07 2168645.885 0 1.051395584e-11 0 7.436499921e-12 0.0001051872137 0 2.511263384e-05 10359.87508 0 270187.3321 0 0 0.0004305582426 0 0 2.012781939e-09 975470.0926 0 0.07324654635 230183.6919 1.921440223e-28 2.273583734e-14 0 0.1117951933 0 0 0 2.169043671e-12 0 1.639970001e-14 4.135363758e-22 0 1.256189515 0 0 0 0 0 0 0 3.802520488e-09 0 0 0 3.07817812e-06 4.753580826e-20 0.00606380405 0 0 0 0 0 18429.56589 1.095155923e-10 0 0 0 0 0 0 0 0 0 0 0 +0 7.41604738e-12 0 5.627223915e-07 0 0 0 0 0 0 0 0 3.78991239e-05 0 0 0 0 0 0 0 0 0 0 1449.756103 0 1648553.804 0 0 0 6.358008241e-28 2.383522162e-10 0.0008633816182 11.28989082 0 0 0 0 0 2083.089996 0 0 2.647840404e-16 0 1.141439103e-28 213.6506256 0 0 0 0 2.132059599e-22 0 0 3.039222814e-07 0 0 0 2.739103346e-09 0 0 0 760.5169188 0 0 0.00226573651 1.735238376e-11 0 0 6.355372506e-10 0 0 0 0 0 2604.314686 1.872733281e-17 2.364305131e-13 0.06655903445 0 0.0001652293387 0 0 1.466790032 643114.0784 4.353136476e-12 7.119931995e-10 0 20836.26496 0 0 0 0 6.77885379e-14 0 6.503548421e-10 0 0 1.820986612e-14 0 5.734710955e-05 0 0 175254.9219 0 0 29422.25994 0 4.336381033e-11 0 0 6.125096217e-16 0 0 1.59621789e-12 5.178039864e-08 1.702377389e-06 1.397921392e-10 3.071697676e-07 0 0 0 1.599904799e-18 0 0 3.285505985e-05 0 0 0 0 1.724267149e-10 5658.064381 0 0 3323.024147 0 0 0 0.1209131848 1.091717316e-23 0 0 3.928237314e-15 0 0 1.451856574e-24 0 4.718789042e-07 0.0002234861319 0.008176072343 1.815950039e-08 3.694054432e-11 0 0 3.042491421e-17 0.007681390272 0 0.06495624434 11451.15371 0 1430096.129 2.114363686e-18 0 0 2.712632609e-19 0 5.20436239e-09 0 0.1261877941 13.07711647 0 14759.6604 4.466001679e-17 9.961756243e-15 1.582995965e-06 0 0 7.667755227 320976.144 173840.9261 0 9.046697925e-05 0 4.210767709e-08 0 108.6195699 569118.0681 14.97834857 0 0 0.0008681497902 7.475179502e-22 139.3587312 0.001584860639 0.001204949236 0.0001196237479 1.303878559e-05 667249.7592 0 0 0 0 1.219159689e-13 0 0 1.81358641 0 0 6.062278361e-21 0 0 0.02122924525 0.001050240748 0 0 0 0 0.0006059010586 911.8322055 0 0 0 0 0 0 2.238238495e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 2.858619283e-08 0 8.084641257 2.122323497e-13 2.490497113e-07 0 0 610905.6213 0 0 0 2.908942087e-23 0 0 0 0 14066.65768 0 0.0006902693593 0 0 0 1569063.701 0 3.16743486e-14 0 0 0 0 1746026.767 0 0 0 1.248626313e-12 0 0.009091468453 11.94925675 48.92249606 0 0 0 0 3.857885369e-29 0 2.369127944e-07 0 0 0 32.65128384 2.984566885e-10 0 20066.06657 2.320264728e-12 9.566386836e-11 0 0 0 24900.97421 0 0 1.154355541 0 0 +0.0003189666073 0 0 7.931159445e-12 0 0 3.244771663e-09 0 0 0 143610.0532 8.542344561e-27 0 0 0 0 1.435130264e-11 29571.53376 0 2.072420962e-14 600.3655178 0 0 0 0 0 0 0 1.037406281e-14 0 0 0 0 2.271989663e-15 0 0.0003793533848 7.702881965e-12 0 0 0 0 1.856995298e-17 0 2.648673753e-12 0 0 0 897956.7659 1.9882746e-08 0 7.783660842e-10 0 0 0 0 0 4.49672125e-29 0 0 1.005056932e-14 0 0 0 0 0 0 0 0 0 0 3.859686351e-11 1.593435758e-14 0.2599938066 0 6.690347566e-08 0 0.007300560844 512682.9545 1.597398341 0 5.300907898e-22 3.740111099e-07 0 0 0 0 0 2.243441522e-18 0 2.162654112 2.142049291e-09 2.650519342e-15 4.181798334e-12 0 54.63442095 0.0002440512224 0 0 0.09799663917 0 0 0.5787730128 0 0 8.315373461e-16 1.957454259e-10 0.05350723566 0 1.176663846e-12 1812219.546 0 0 0 1.230986342e-05 0.1139522591 0 0 0 0.00299342273 384.3563336 0 0 0 5.135903966e-10 0 0 49.70025029 0 5.19538453e-11 4.271095774e-13 0 0 4.401790964e-07 1.794508895e-12 6.717722737 2.266897948e-12 0 404713.3875 0 126323.6026 7.234563909e-16 0 0 0 51672.56977 0 0.2390098202 0 0 0 180728.3788 0 0 0 279621.6769 0 0 0.0001340695471 0 2.481838958e-05 0.008422488518 203.3696072 44.61221637 2.195301428e-14 0 0 1.382757619e-20 0 0 0.00127542484 11.98492244 0 0 0 0 4.366706659e-16 0 29470.70469 3.536758837e-10 0 7.824187109e-06 6.793316247e-07 0 6.095415006e-14 11201.43743 0 9.79316653e-19 0 188.6351912 0 0.0005178638959 0 1.30294907e-15 2.315226637e-08 0 0 139112.5378 0 0 0 0 2.893135677e-08 0 0 0.01498048329 40382.74238 0 394505.4236 0.03149635411 1.907868453e-26 0 0 0 0 58.89008842 0 149640.947 0 5.894933372e-11 6119.43357 430399.7205 1.580523381e-17 0 0 0 0 0 0 0 0.001683732508 0 377528.6351 0.001453445342 0 35.18251741 244.7955578 9.677260622e-07 0 0 0 1.126847455 90187.60159 0 0 0 0 8.774374535 0.001868616843 2.770671718e-17 2.292291879e-11 0 2.929731644e-14 0 0 2053.65762 817743.4301 0 201443.3449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.392292913e-12 3.087317499 0 0 3.645277422e-14 0 0 0 6.351721134e-14 0 1.698523889e-16 0 0 678.4812911 0 0 0 1.271168429e-12 0 5.368963078e-09 10710.91306 0 0 0 8.683244213e-05 0 0 0 +0 0 0 0 311.6835807 0 0 0 0 292.0253011 0 0 0 0 0 0 0.01196591775 2.927565544e-09 0.3326832981 0 4871.943666 1.21953783e-08 0 0.08396752603 0 0 1.968901978e-19 0 0 0 1.449489155e-12 0.003015234192 0 0 0.4086312091 0 0 6.211290496e-13 1.469175919e-19 0 5.439310197e-14 0 0.0007571542812 0 5.64459144e-36 0 0 1.580831377e-09 0 2.390591529e-14 0 21.76649781 0 0 0 0 0 4.877427439e-12 1.335053239e-07 0 0 1654.92789 0 1.347157319e-13 0 1460333.186 0 0 0 1.197596503e-13 0 1.215534824e-07 0 0 1.485079209e-21 0 33704.87389 1.570254768e-26 0 0.6036519434 0 0 1.275229822e-13 0 2.155343723e-12 4.281942434e-13 0 0.1868765846 0 251959.6631 7.296386606e-08 4.483908944e-14 5.950768441e-28 2.367439872e-08 0.2701719703 1.004872601e-17 0 1510700.897 1.347302415e-25 5.600735403e-12 0 33974.57435 0 0 9.366205895e-34 0.005018315525 0 0 4.452945838e-16 288.5276483 0 0 427.1991316 0 16.43174977 2.652163877e-29 2.97616514e-14 0 2.072670419e-29 0 0 120.2230477 0 0 0 165.7007867 9.582629331e-06 0 477446.5221 4.771650958e-11 0 0 3.395846245e-16 0 0 0 0 0 7.208954848e-06 0.006526601532 1.222039738e-08 3.5329054e-15 9.965543822e-11 0 0 0 0 321027.3066 0 1.266802734e-11 7.676979097e-11 1.524741667e-09 0 0 0 5.192798035e-14 6730.880283 1.852861924e-11 0 1876527.396 5.199504125e-08 19048.68606 0 38095.78257 0.5302612139 5.667752484 768411.1687 0 829.6539089 106747.779 2.907464653e-14 183142.077 0 0 1.373776764e-08 0 0 0 0 0 0 2.310325147e-12 0 0 0 0 1.090864733e-05 1768835.928 3.689763559e-10 8.395732611e-10 0 0.09260356017 0.0001736290267 0 0 4.695863888e-10 0 3.265716118e-08 0 0 387710.6372 79.81317267 587364.0027 4.648666791e-12 2052996.347 5.569517982 336.1136304 0 0 4.516834948e-05 1.534419561e-08 1.079204501e-14 1.503586192e-22 0 0 2.170905934e-27 7791.292248 6.924811891e-11 3.574709083e-09 0.1408637209 1.804839612e-14 0.001984958064 0 0 0 0 0 1.19565174e-24 0 0 0 0 0 4.857224257e-19 0 0.4462044427 0 0 0 0 0 0 2.32933588e-14 0 0.02315517723 0 0 0 0 9.304223821 0 0 2.065436314e-11 0 0 5.058404285 4.053275578e-06 0 0 0 0.2144131849 3.60399658e-11 0.01124336972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000209702619 0 0 0 0 0 0 0 0 0 1.669365361e-16 0 0.002696346476 5.884474716e-17 0 0 0 0 1.763353893e-17 0 7.753573601e-15 1.827284689e-14 0 +5.74650135e-08 8.020831935e-27 0.2972696615 2460.076501 202774.1814 0 0 0 380908.2534 0 0 0 0 8.098947904e-06 0 0 0 0 0 0 0 0 0 2991.273148 0 0 0 0 0.00505908294 0 0 0 0 2.628966156e-16 6.122142988e-18 1.065550479e-06 0 0.04328043379 0.3080520761 40001.49685 0 0 0 0 0 8.606682432e-16 9.488940882e-06 0 8.566662672e-18 0.0001201069475 1.031163432e-14 0 0 0 274562.0291 0.04170764312 6.398599108e-12 0 0 0.008130287431 3.484010198e-11 3.939950157e-05 0 10.92151543 0 0 0.007471080521 7.40052688e-13 0 158568.739 3791.932863 2.102151846e-07 32118.09195 0 0 1.710445105e-11 2.022551612e-13 2.758784548 0 0.001301015521 2.721416931e-06 45.46404321 3.414960117e-10 0 1.853100708e-07 0 0 0 0 8.160372769e-15 0 10345.43608 1873.540255 0 1.498695464e-05 0 0 207885.0426 0 8.017978471e-29 1.75521794e-15 2.565420089 1.162956936e-22 2.883517881e-15 0 2.584419903e-18 1.094391463e-19 1.883489226e-15 0 1.657282206e-13 2074.624684 0.0007200578908 0 0 0 0 0 44228.66811 0 0 1.106422068e-29 0.0001310591572 0 0 0 8.514083711e-13 0 0 0 1.336851126e-06 0.04055588239 8.596357212e-11 0 1.096561833 454.2704556 4.883290434e-08 1.856953665e-08 0 6.004374306e-13 0 8.409702353e-10 0 0 3.43364852e-12 0 1.600517607e-12 17122.87707 0 0 3.133167223 0 0 1.907640102e-10 0 7.472330346e-11 6.417555453e-07 0 0 0 1.535767078e-09 0 0 0 149.2969611 7.096028879e-18 0 0 0 0 6.032552228e-11 1.07683443e-07 355.2850246 611968.9311 3.753738722e-15 2.409221813e-07 7993.794625 0 869969.4063 0 0 1.664587e-14 0 0 2.780828072e-06 0 0 0 1.194089406e-06 1.247209707e-09 0 2.442087587e-15 0.001219528458 9.178598203e-05 0 0 4969.502331 0 0 0 0 3.201499111e-09 1591.136034 0.009767033243 0 0 61.34463531 0.0002257689946 0 0.0001313961594 0 0 0 1.33240815e-12 0 0 0 8.782265378e-06 0 7.696669374e-22 0 1.2009662e-19 7.981770326e-12 0 0 0 0 0 0 0 0 2.351237719e-10 0 0 1.51900777e-05 0 6.61494066 9.917367853e-18 0 0 0 0 0 0 0 8.074910954e-13 7.138829912e-15 0 0 0 0 0 0 0 2.291101402e-24 0 1.068784106e-06 710155.2442 0 0 5.003895729e-13 1.374949526e-06 0 6.115426873e-14 0 0 0 0 0 0 3.639779589e-16 1.930231122e-30 0 0 0 0 0.0005363160607 2.287429846e-22 0 7.996313007e-12 0 0 0 3.125110252e-07 8.956645722e-28 0 0 4.550580096e-14 0 0 0 0 0 3.331438205e-05 0 0.002663954771 0 0 0 0 0 +0 0 0 0 3.294709296e-12 0 0 0 9.028072476e-10 0 96.62414055 0.0006229228545 0 0 0 0 1232042.965 0 4.338781023e-11 0 3.989312009e-09 0 0 0 8.087278812e-11 0.0001220465594 0 0 0 4175045.329 0.0009865670479 2.750760994e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 94148.81588 2.934354685e-07 1.268252313e-09 0 0 0 0 4.776163775e-13 0 0 0.02063826986 2.22511466e-16 2.515642173 0 0 0.00288876192 0 6.402913581 0 0 0 782080.5229 1050001.125 0 0 0 0 0 0 0 0 0 0 537.1250261 1.472298157e-10 0 0 1.176893494e-10 1.001298925 0 0.002915806877 0.007359557547 2.562939322e-14 2.223753718e-28 130729.744 0 2.283821125e-11 0 0 0 2.874053193e-06 0 0 4.798034941e-12 16.1390894 0 4.499119568 1.046950535e-18 0 0 0 0 0 0 4.460167787e-22 5.236620807e-06 1411.287263 65852.41162 0 0 0 3.361305589e-10 0 0.001615970623 5428.228271 0 0 1895.776979 0 1021.179487 0 0 0.09810785895 0.8015115851 0 0 1.065504194e-10 0 1.41555945e-05 0 0 0.07821411958 207755.379 0.0001357688317 1.576454088e-09 0 0 8.781121986e-08 0 2.59460246e-09 0.000818302063 0 0 0 9.825014991e-15 1.107875724e-05 2.287190723e-12 0 2.049334503 8.21882376e-07 8.049551344e-14 0 0 29279.641 5.357469086e-07 0 480.2292975 0 0.0009304469588 0 5.824132223e-11 0 0 79.95999686 0 5.080557077e-14 0 0 0 0 5.337944727e-14 2.875011763e-17 3.429960141e-13 34.75432737 2.155365207e-11 0 0 2.258729459e-05 0 1.738142368e-11 2.012753621 0 0.00173852794 0 5.573367652e-11 0 3.609563368e-12 25794.26605 0 6176.252496 2.547618915e-08 0 10195.9911 0 282.4546731 214337.1808 0 3.523706758e-10 0 0 0 0 0 0 0 0 0 3.420019272e-05 0 1.080878321e-11 0 0 0 0 0 0 0 17.00420784 0 0 0 0 0 0.0003765358942 2649.062194 0.02293887398 1.980799763e-05 0 0 0 0 0 390912.0417 0 0 0 0 0 1.639378601e-17 0 135708.1809 0 0 0 0 0 8.839882286e-16 4.872924456e-10 0 0 0 0 0 128.6841735 0 0 0 0 0 0 0 0 0 0 0 583168.9238 0 0 0.03490076315 9093.700537 0 2924114.89 0 0 0 0.274415624 0 0 0.001479539087 0 0 2.808266321e-16 5.932287767e-07 6160.664912 0 0 0 3.318074465e-05 0 0 1.459037149e-14 0 +0 0 7.299055994e-18 341.4522575 0 0 0 154.1669588 0 165.9962942 0 0 0 0 72.48124765 1.101202535e-18 0 0 0 0 0 0.01215070736 6.758027866e-22 0 0 2.378248859e-19 0 3.459398605e-19 0 298647.75 0 2.02639927e-12 2.75278121e-05 4.136513432e-09 0 0 0 63.059488 3.045036919e-16 0 0 0 0 0 0 0 0.0003742837863 121.0063616 0 0 0 0 0 0 0 0 0 7.758217025e-18 0 0 0 0 7.037546277e-26 0 0 1064.248605 11433.66782 0 0 7.3159454e-19 0 0 7.391573633e-15 0 0.0009262421785 0 5.972974172e-17 5063.208021 863.4002136 9.837892528e-07 4.240440667e-05 0.0008844291463 0 0 9.01179672e-16 1.739777711e-06 5.154603127e-08 5.595136105e-28 0 8.77875885e-17 0.01576869166 2.490447565e-07 9.308651965e-11 0.0002938616804 0 97.25842316 113380.1798 0 6.814360765e-20 0 0 0 16252.3408 2.082055697e-11 1794.834949 0 0 1.324302957e-05 5.319940272e-13 4.491353669e-17 0 0 0 955.64956 0.01401610151 0 0 0 0 1.502899134e-15 0 0 0 0 0 0 0 0 6.212071661e-28 1.936374521 0.02597326565 77.48720316 0 5.078406126 0 5.828196093e-12 0 0 3.825701292 0 363379.9315 0 8.257084207e-12 0 0 0 0 2.193178117e-19 0 0 0 0 6.794617159e-24 1.430200375e-05 0 6.940561638e-13 0 0 0 0 0 0 8.790643754 0 4.628370052e-12 0 9.695427974e-06 2480664.937 0.269738207 0.7477435113 915.1992432 88830.38832 2.507585318 11095.55975 0 0.4295393638 3.176550229e-08 6.149304728e-12 0 0 0.005184503997 0 38.15462026 1.388641746e-13 0 3.46031166e-15 1.316882681e-12 11.91949146 1.445812891e-09 0 5.714609173e-25 1.423287152e-14 20.01120273 0 0.009216260644 2.331383955 0 1.429603854e-19 0 0 0 0 1.407249172e-05 0 0 5.382559651e-05 4001.190329 2010.674168 0 0 0 0 0 0.1699313594 0 0 0 0 0 4.438863401e-06 0 0 0 0 0 0 0 0 0 3.749631659e-27 42.31526887 0.002586744851 3.732593712e-11 0 0 0 264180.1213 618901.8028 0 0 0 1.093614296e-17 0 1.607463749e-11 0 0.1810225314 2.632750749e-06 0 0 0 0 0 0 0 0 0 0 0 0 14.52237271 0 0 0 112.0345961 0 0 0.004125860794 0 0 0 0 0 3.925365782e-07 1.319930831e-06 0 0 1.832418201e-11 0 0 0 1.257288575e-11 0.0002615659688 0 0 56581.22431 0 0 39.62096582 0 3241.721963 0 0 0 3.790609081e-14 2.451915865e-05 0 6.973782306e-14 0 0 0 +0 4.879818384e-20 0 0 0 0 0 120966.0506 10.36622884 58.41661592 0 0 47.69852986 5.061580076e-10 2919.092922 0 0 2.389473565e-19 0 3.54878615 0 0 3.220699236e-11 0 784.3295241 0 3.223011805e-20 0 1.696542515e-05 0 5.096028423e-16 5.915013068e-08 0 0 0 0 153189.694 0 4.498631858 0 0 8.808887066e-18 0 0 5487.012877 0 1.484918037e-05 0 0 0 0 0 0.0001008024398 475309.3587 0 0 157.2085024 1.333378411e-21 0.04367654942 0 2.419269442e-12 0 5.66867358e-09 0 0 0 3.68625656e-06 0 4.826222671e-20 0 0 0 100297.6047 0 0 0 9.764226625e-13 2.093811836e-07 0 0 0.0001222722031 1446964.799 0 2.425188555e-15 0 8.002028035e-13 0 6.984245425e-10 0 2.827257102e-12 8.018496444e-16 0 0 0 14969.82686 1.891785532e-05 0 5.411227324e-08 0.2190388659 2.244246012e-09 0 0 0.0007049916789 0 0 142.7971617 3.10477337e-05 0 74.68917743 0 33295.04585 332413.9242 0 0 0 1.999818318 0 0 0.01047102498 0.0004056234114 1.877868643e-27 0.0003335065574 8.63813396 0 0 0.001037603854 0 0 0.0006507664549 1.905766542e-15 0 0 0 2.051016662e-15 0 245811.1206 0 1.069426427e-12 1273.753522 0 0.002228983863 4.26354411e-11 406772.2572 0 0.5655202006 6.931247585e-16 0 0 9.895492226e-14 0 0 0 22.77040025 0.001105009366 2.27960033e-09 0 9.072679605e-21 2442496.462 0 0 732.90731 0 1.455035146e-05 3.310969615e-22 0 1.480103289e-11 7.040923381e-13 5.628075787e-16 0 0 9.666818645e-18 0 360380.9 0 0 0 0 2458.469676 3.69615434e-09 1.960871487e-08 0 4017.369543 0 1.197864314e-12 0 2.159034019e-18 0 1442771.715 0 7.34504998e-15 451.3164802 8.5709894e-12 0 0 0 0 0 0 0 0 5.035496949e-11 0 0 17824.44104 0 0.07576400163 0 0 4.769324849e-08 9.607040701e-10 2.192100357e-11 0 1.760257208e-14 3.181485025e-05 1.102427017e-12 0 0 0 0 2.061077708 2.840962215e-07 0 0 9.59218214e-05 0 19885.15033 0 47.98154596 0 0 0 3.065965718e-07 0 1.0226328e-05 0 0 0 0 0 29466.32514 0 3.739802428e-10 2505952.478 0 2.371369606e-26 0 0 0 0.0345259626 0 5.389629515e-12 0 0 21.993408 0.0004366932501 0 0 0 961.3007665 14934.68542 0 0 0 0 0 1598.338626 0 0 1.081535271e-08 0 0 0 8.428080565e-16 0 0 0 0 0 0 0 1.194021243e-10 0 0 0 0 0 0 0 7.424363637e-13 57242.80067 0 0 0 4950961.681 0 2.078211372e-12 0 0 18.48991612 0 +0 0 1.180786313 0 0 1371463.771 157.9834089 0 6003.670445 0 1046431.937 0 0 155796.4705 0 0 0 2.002300193e-07 823.3544089 0 0 0 0 6.231441876e-05 0 0 0 4.107381811e-08 7.571248035e-16 0 0.0001192981391 0 0 3.735693481 0 0 8.584008093 76261.115 0 1933.545134 0 0 571101.0322 0 0 0.01243113202 1948.898989 0 4.704412769e-13 0 0 0.0002692761479 0 0 0 0 0 4.877006305e-13 10.04042087 0 0 0 0 0.01707242906 3.542263313e-09 6.636143218e-06 0 118850.2109 698108.824 0 0 0 0 0 2149.970762 0 0.0005259899701 0 3.458439453e-11 0 628.2335398 0 0 0 4.527403397e-08 4.483981128e-06 2.171570757e-15 0 0 9.768293469e-06 0 2.672958431e-05 3.146885612e-26 65059.38434 0 0 0.4974715725 0 0 1530.522821 285.0768469 3.794722452e-10 26.43404559 0 0 0 0 0.06528550818 0 0 538358.0607 0 44918.37994 0 0 8.256322312e-14 0 2.349479014 0 1211.191435 0 0 0 0 1.685258883e-23 2.292096484 0 0 0 0 5.899881144e-15 1.004198773e-07 0 0 237.203742 0 0 150038.8796 1.757461544e-07 0 0.5245328033 0 1.132975105e-13 1.785448298e-17 4.430651102e-07 264610.7378 61.90628302 0.0003594163664 7.061809221e-07 0 0 0 0 0 0 0 0 0 0 0 2.115369388e-19 1.958554324e-25 0 0 0 0 0 9.537873917e-09 1.183830924 0 3.425382847e-09 0 0 2.220536655 0 0 0 0 0.001990099497 0 0 0 3.921059523e-13 3.718383066e-21 326068.6847 0 0 6.013156391e-05 0 1.551074897e-12 1.91104727e-08 0 0 2338.199426 1089.703736 18.33311851 9.67108607e-12 5.826374121e-05 0 0.1072345113 2.854112715e-11 3.894058326e-08 0 0 1.034110688e-11 81759.55319 5.581790043e-07 73426.94622 0 0 5.151869044e-12 0 14.97544746 5.222253173e-14 0 0 0 0.009155061182 8.998705197e-18 2.87948444e-10 0.0001304288752 0 1917.452562 0 1.994485385e-06 0 1.253070938e-07 0 0 0 0 0 0 0 0 108727.1041 0 10305.4445 0 0 1254328.057 0 4.97171992e-07 0.9855619319 1.848739867e-07 0 352280.8308 0 0 0 1.110874422e-11 7.869956896 3.843843891e-08 0 0 6.010202118e-11 0 0.003675392021 0 0 0 2.59703187e-26 1.462086431e-07 0 2.23872632e-17 0 0 0 0 0 0 348.992998 0 0 0 0 0 0.4853665334 0 0 0 0 1.146748278e-28 0 0 0 0.001741060778 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 42825.55845 0 0 0 0 0 0.0010185485 5.998740833e-11 1.809073258e-16 4.467678328e-08 0 2299139.564 3.599348068e-10 47.76222275 0 6.229945533e-14 0 0 0 0 0 0 0 0 1528361.862 0 0 0 0 5.218586183e-13 0 5.078500102e-09 0 0 0 0 1.844209786e-21 0 7.030135507e-09 0 2.067023355e-05 0 1.287267129e-21 8.506457186e-11 0 1.767379569e-11 0 1.180391466e-10 0 0 0 0 0 0 2.364553713e-13 0 27739.06296 0 0 0 0 0 0.000149626899 0 0 0 198.9525924 0 0 6.146840998e-28 1.055149916e-16 568697.99 1876.372403 542707.3557 0 3.748974579e-12 0.001724885531 0 3.815506186 3.679154158e-09 0 0 2.460480088e-08 1.043815167e-08 0 0 0.01293363208 3546119.41 0 0 0 82300.62152 1.284981281e-10 0 0 0 0 5.627965875e-20 1829986.09 0 4.483863448e-11 0 0 3.285675146e-16 0 4.190053135e-12 0 2.249039877e-12 0 65850.46459 134.7606823 2.925432499e-12 2.468633778e-20 0 0 847340.0269 0 0.05251644268 0 0 15468.81149 242.4214938 5.960714675e-13 0 0 0 4.066272427e-05 538210.5884 9.251843499e-16 0 0 1415.624003 0.0001760362209 0 0 0 0 1.564184188e-06 9.050991938e-07 3.359755719 0 3.891064585e-11 0 74.51014235 0 0 0 0 8204.172752 0 2546.468432 0 1.65262013e-11 0 1.119068653e-12 0 0 0 0 2.085410647 6.43408054e-11 0 1.294592819e-14 0 0 168181.3123 510.5519692 0 2.160823689e-10 0 101107.2743 0 0 0 6.406165368e-14 1.861965434e-17 48753.71668 655981.7608 0 0.0003215491272 431199.6518 0 0 4.002664979e-05 0 3.608454006e-14 4.903436966e-18 0 111.6400064 0 0 0 1531575.644 0 2127008.864 6.348867071e-11 510.0914372 0 0 0 0 0 0 0 0 0 0 0 0 0.9076867497 0 428624.3524 0.0002272400159 0 0 8.681990302e-21 0.03709313555 0 0 5.238879911e-11 0.9656681385 0 0 6.630105764e-05 0.0009837708236 0 0 0 0 0 0 0 0 1.759051944e-12 0 0 0 0 0 0 8.209414402e-11 0 0 1916.573226 0 0 0 0.000874564999 0 0 0 0 2.897102942e-08 0 0 395.7370516 5.790771982e-05 1.329331708 0 0 339.4101965 0 4.406584429e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.007794503153 0 0 4.048041401e-13 0 0 0 2.350792021e-08 2.362761443e-12 1.334621785e-12 0 0 0 3.701317326e-16 459.0392455 0.0001213302013 0 0 0 9.038799308e-17 0 1.127559997 +351130.659 0 0.02409563632 0 0 0 0 1.356403469e-09 0 0 0 0 0 2.083787474e-08 3.051593767e-17 0 4.941375325e-12 0 0 0 0 0 0 0.0242406712 0 0 0 2.375647296e-13 0 0.0004466589777 0 0 0 0 0 0 0 1.280947061e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 5.842653613e-11 5.990513154e-06 0 0 0 0 0 0 0 0 0 3.11785907e-07 1.735605455e-23 720.9743389 0 0 0 0 4027.215794 0 44397.66455 0 2939813.625 0 0 333.6264275 0 1739.534204 1417944.816 0 0 1721343.313 6.669406637e-10 0.02672872943 0 1.008983991e-16 0 4.334907817e-12 0 0 1.492996357e-12 0 0 0 0 1.165874878e-07 2.289595485e-08 0 0 0.3709523794 0 0 8.008564681e-16 0 4.79539916e-08 0 0 21.74782307 2.639952857e-21 0.01923933691 0 1.505021536 2.672768503e-11 0 3.836652291e-07 0 0 5.932064606e-11 1.624034847e-16 5.859224555e-13 0 0 39.97040344 1.001792363e-18 0 0 0 0 0 0 0 0 0 739106.4785 3.242996956e-07 1.188629962e-18 0 1.654252545e-07 0 1.90337283e-08 4.537613685e-13 1.505877957e-28 0.1929798136 0 677814.669 0 94.48041871 3.410467256e-16 6.349138241e-11 5.965609081e-12 6.570541419e-11 3.52159012e-22 6.826240931e-12 498708.699 3.865947086e-11 2.575606002e-11 0.0004801636945 1.038696312e-09 2.475195572e-13 40.44062943 0 2.89558311e-07 0 0 1.637819575e-06 0 0 0 0 0 1.772176876e-11 0 0 0 0 0.0006150572555 0 0 0 1.021379069e-06 0 0 0 0 0 0 0 12210.87799 0 622.6656511 0 0 2.308801632e-09 0 0.01713605607 0 0 8.301802248e-35 0.1109393548 0 1.137491435e-09 0 0 0 5.645439238e-07 3.089482218e-12 0 1397.795357 0 0 0 1.735567887 0 0 0.01986526208 1.56573981e-20 2.271589014e-10 26441.0644 5.887458158e-07 0 0 0 0 0.0001280922763 490108.6856 0 6.978620649e-18 0 1.479572748e-16 7.72618932e-13 0 0 0 71135.73291 4.433224512e-05 15122.13824 2.290100675e-12 0 0 1456.718547 0 96075.25727 0 0 2.584691237 0 3.363698993e-16 0.1013995231 2.615080696e-14 0 0 0 0 1.810781315e-20 0.006680099985 0 0.01884136293 0 0 0 0 0 3100.644908 0.07619135155 0 180.9882705 0 0 0 1.904349905e-09 0 0 3.059447209e-16 0 2.888067781e-20 0 0 0 2.345525507e-17 0 0 0 1.855988112e-09 0 0 0.00900749253 6.04639944e-17 0 0 0 2.313988489e-13 0 0 31850.38086 0 0 0 0.9484246764 0 +0 0 0.002662488085 0 0 0 0 0 0 585836.8553 0 0.02851222843 0 9.536567438e-18 3.252018043e-11 0 2199702.01 0 0 0 0 0 0 0 0 1690262.345 0 0 0 23.83219895 0 0 2.913840282e-16 0 0 47757.15021 105773.598 41840.40791 0.0002486344763 0 0 3.054458212e-15 0 0 0 0 0 8.692396439e-15 0 0 0 0 0 2.64910827e-09 1.575364358 0 180308.8537 0 0 15946.67355 0 1.11540623e-09 0 0.0005290951243 0.0002772376102 0 0 0 0 0.0008834089591 0 0 0 0 0 0 0 0 0.0003637608505 0 0 0.03794264014 2.658842214e-15 3815.831461 3.425550189e-12 0 3.372683386e-13 0 0 0 1.069011765e-11 0 1.982036049e-07 5.448777982e-07 2.545186055e-07 0 0 3.083042216e-14 0 0 0 0 3.505455931e-21 16824.31634 0 0 0 0.4712802561 0 0 0 0 0 0 1.156846466e-06 0 8.483953693e-11 0 0 0 1.083168807e-05 4.523424067e-17 0 5.814617777e-07 1.683884266e-12 0 0 1891784.869 0 2399643.147 0 0 17295.86073 0 0.0001948989183 0 0 0 0 0 0 0.006815340736 0 0 0 1.013639009e-28 0 0 669.9848218 0 0 0 7.742482965e-07 50546.83941 5.637565032e-13 4.709799749e-08 0 3.352855778e-15 0 0 0.0002781951158 3.581227466e-11 7864.790968 0 0 0 0 8.929599906e-08 3.424349508e-16 2.161342831e-05 0 0.05827286136 0 0 0 0 0 6.561063421e-09 0 0 1021158.093 0.0002294753474 5.417848223e-20 5.916854799e-08 0 2.064039963e-25 1064855.528 857.5728265 0.0642286076 0 0 0.001463025645 29650.56373 264.3513463 0 0 1.207079334e-07 0 1.879888732e-06 0 0 0 3.115138699e-22 0 0 0 2.615102418e-11 1.39348904e-05 0 0 0 8.05290113e-16 0 0 0 1.186097765e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23994.62155 0 1.421483338e-11 0 0 0 6.404890456e-11 0 0 0 0.01404601271 3194560.087 272.0851432 0 0 0.1239656055 0.00765249008 0 15624.9107 3.942629692e-18 0 141948.0407 0 3.0471696e-13 0 0 0 2.278862089e-11 0 0 1.213623356e-18 0 0 0 3.821071014e-17 0 0 0 0 0 0 0 61381.13451 0 586.7506194 0 0 0 0 0 0 0.227031815 0 0 0 1.667633914e-08 0 0.005691025292 0 0 0.000945875392 0 0 0 0.01709312259 0 8.91336521e-14 0 0 108013.0359 +0 0 0 0 0 10329.24065 0 0 0 0 0 0 0 0 756462.3084 0 0 0 0 0.002460342835 5.528511965e-23 0 0 0 0.0795244279 0 0 0 0 0 0 1800.464693 1.737086282e-05 146169.7627 0 2.666893417e-12 0 0.001916331674 0 2381178.161 0 8112.102743 8.255043441e-13 1.062876231e-12 0.005463497305 98796.03783 0 3.401434819e-05 0 0 0.1106413402 0 0 0 0 0 0 0 1.69255345e-15 0 2.068618017e-13 0 0 0 0 0 0.0009062166303 8491.76377 0 0 0 0 2.772483259e-09 0 1.379175604 0 0 30829.38937 0 0 0 16401.95908 6138.186098 0 2.625689356e-09 0 0 0 0.002261266563 0 1.591138168e-10 5.956021394e-23 0 0 0 0 0 0 116212.5569 5.970797914e-12 0 0.01518282104 0 0 1.881499275e-10 3.178885609e-11 2.12937839e-07 2.551592973e-14 0 0 1.207257835e-06 0 0 2.913690175e-05 1.155117137e-07 0 4.209539492e-20 0 177987.9023 0 1.771856282e-20 0 0 4.13548657e-21 8.892256427e-05 0 0.01538076823 1.368595397e-08 2953508.29 0 4.497755079e-09 0 0 0 12.59816971 0 0 0 1.471003502e-09 0.002350231245 0.8039627503 0 2.151572947 3.561508567e-05 219.1938881 0 5.756762021e-11 0 675817.6069 0 1.128178242e-08 667.2053477 0 0 0 0 0 9.164575784e-17 0 0 4.327487632e-14 0 1243.654754 3.235123978e-07 7.273394853e-05 0.0007967600127 0 2.356396452e-12 24.10036343 0 5.974987052e-09 0 0.0005836034469 6.360059864e-05 0 0.02860145496 0 0 0 0 1.145813269 0 0 8.163088074e-08 0 0 0 0 0 0 0 0 0 3.746768333e-15 0 0.002728233982 897910.267 0 0 0 3.598490122e-06 0.005127365795 0 0 0 0 826686.3216 0 4.535255131e-11 0 0 0 0 0 0 0 0 6.966345884e-08 0 0 801.8275751 1.40650731e-09 0 0 0 1.246709599e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.67201289e-06 0.001872417993 0 0 2.857879478e-22 0 0 0 0 0 0 0 0 0 0 0 0 1.031456667e-09 0 0 0 0 0 9.888529312e-10 0 4.125520038e-08 0 0 8695.641385 9.287895249e-06 0 2.852169398 16.32379962 1.834239696e-06 1.544294164e-05 0 0 4.6808737e-15 0 0 0 0 0 1.350082544e-13 0 0.0001647901454 0 0 0.0003753295717 0 9.025194368e-05 0 0 0.02500114617 0 0 0 0 0 0 +0 0 1.28517132e-12 0 0 0 0 0 0 0 0 0 0 312.8958497 0 0 0 0 0 0 0 0 2.849282223e-13 0 133.1226558 6.833010179e-07 0 0 8.473452225e-06 7.027989053e-06 0 0 0 0 0 0 0 3.859194591e-06 19.66951514 0 0 0 0 0 2.897430046e-06 0 0 0 0 0 1.185854257e-24 0 0 0.001978717311 0 0 0 6.227689457e-08 18438.28457 0 0 15508.88621 0.9930412325 0 3.916427054e-16 0 9.186555756e-07 4.068130355e-06 1.1332428e-05 0 0 0 0 3.739712848e-10 0 2250114.053 0 0 8.105239354e-09 1.310581977e-09 7.13108798e-33 0 21.39217524 5.199105839e-05 0 0 0 4.521508661e-12 0.09043136467 2.074237222e-07 0 8.277041303e-08 0.1075768576 0 0 0 0 0 0 0 0 189.5215798 0 0.6091433651 0 193626.9708 0 0.01750899435 43.50117155 808573.8245 0 0 0 3.4497739e-14 115.4313143 476849.7241 2.398034906e-26 0 0 0 0 0 5.773289909e-06 53.07205259 3.724837082e-09 0 85.04726839 7.551452418e-06 0 0 0 0.001141095321 0 0 15.9359865 0 0 0 79.44094739 0 1.136885897e-06 1.240259337e-08 1760.828571 0 6.151473903e-12 27041.83095 0 0 984.6361108 0 0.0002656494315 2.450428856e-13 32.07064987 4.406027898e-07 2144945.869 0 1.617697106e-20 0 0 0 137.2251219 10.61522526 0 0 0 0 1.082189206e-09 6.371078092e-13 0 9.363841091e-10 0 0 2.096777005e-31 2.35262506e-13 2.416675074e-12 6.29195777e-05 0 0 0 21.20981219 1.523181354e-28 3.104314277e-09 0 0 8.180781602e-07 0.0412366722 0 2806216.495 0 0 0.0005169110855 0 203.9146505 0 0 7.520414119e-08 1.66141362e-09 0 0 0 0.02056681543 0 0.04839904096 7.722076606e-21 3.674657324e-09 0 1.722049831 0 101411.0289 0 0 0 8.083590651e-23 0 0 0 735512.4763 0 0 0.000477619557 0 346.4043894 0 7.368863439e-06 0 0 0 0 0.0004095355421 0 0.0003837060623 0 0 0 2.097269711e-17 0 176928.0486 0 139021.8402 0 0.456986021 1.213228316e-06 0 6.633954262e-20 0 0 0 0 0 0 0 0 1.592665258e-09 0 0 0 0 0 4.005993014e-11 0 0 9.116960346e-09 587551.0047 0 0 0 0 0 0 1151.160621 0 0 0 0 0 0 245784.2682 0 5.255459668e-13 0 761496.7362 4.774135474e-06 0.01697328682 0 0 7.37225656e-22 0 0 0 0 0 0 0 0 0 0.6637871074 0 0 0 0 +0 2.912803323 0 0 0 0 0 3.010888427e-07 0 0 3.244170444 0 7.056186809e-07 0 7.860807446e-15 0 7.422369909e-13 0 0 0 0 0 0 0 4920658.936 1.657574136e-15 0 0 8.415242366e-12 0 0 0 0 0 1.293010395e-10 4.428015134e-06 0 0 0 0 0 1.920932226e-33 0 0 0 2.147254371e-12 0 0 0 0 0 0 7.51192906e-14 0 0 9.459320046e-08 0 0 0 0 0 3.565246966e-11 0 0 0 1.966073419e-05 3.343151056e-14 0 0 262478.9751 1.438060841e-10 0.6259575701 0 0 7.294881516e-22 0.0001649145169 0 0 0 0 0 1.616731944e-13 0 0 0 0 0 0.4656834696 0 0 0 0 0 5.270518594e-06 378002.4739 0 0 0 5.175132101e-25 0 7.230917743e-06 1.217132351e-09 4.376423597e-05 0 222.1395137 14.60542952 4.205963968e-10 0 0 2.178719793e-16 0 18561.01536 0 0 0 0.01521925936 2347059.548 0 106.7394661 2.361641642e-12 0 0 0.08545038055 0 1.056366689e-06 8413.38451 0 0 0 0 0 332483.578 0 0 3.054232994e-08 21798.68772 301.4390191 0 0 3.803113688e-15 2089.277974 0 3.246148584 0 0 4.736303328e-18 3.103388087e-08 0 2.630051486e-05 0 0 1.126585301e-12 0.009388790389 3.724186495e-15 788.2258648 0 0 0 1.216352632e-05 6.132511823e-22 0 1.292167888e-08 3066.793585 0 0 0.2768149866 9.206533244e-12 0 9.308913548e-07 1.717487584e-09 1.226209229e-28 0 0 0.0001137937884 0 0 7.464842832e-15 0 3.322422932e-25 0 0 321.8266527 6.577738428e-12 2.624434922e-14 0 97038.2515 0 0 0 0 5.889377262e-12 0 19.98873225 4.00405612e-14 0 1.295787971e-19 0 0 1.513290571e-07 0.02163457249 0.005775209908 0 2875.613893 359.7694338 0 0 0 0 4.186221674e-12 0 0 5.830222554e-16 0 1.118380191e-13 0 0.002333452958 2.031192008e-07 0 0 0 0 9.262976108e-11 0 550.4297386 0 0 0.0006048824081 4.348113197 0 1554.914808 0 0 0 0 0 8.261099162e-21 0.05040881122 0 0 68615.89664 0 0 0 0 0 453980.2284 0 4133.838279 1.844449995e-09 0 60829.22045 0 0 2.299249676e-05 0 192.5622842 0 0.0001088545866 0 0 1.974989521e-13 0 0 2.633280626e-06 5.052745227e-22 2.973329295e-13 2.740041713e-13 0 0 0 0 0 0 1.043168216e-23 955.4861365 0 4.437850658e-13 0 4668.712228 1.947679128e-08 0 0 0 42.46721517 4.947165376e-09 0 0 0 0 0 0 0 0 0.0159023626 0 0 0 3.697994197e-08 0 0 +105162.1325 0 0 0 0 0 0 0.0001486479301 7.648148958e-16 0 0.0006414917601 0 0 0 0 0 0 0 0 0.5093900946 0 2.119511014 0 0 24.93528516 0 0 1.368574627e-10 0 8.384004033e-14 4.867686481e-14 0 0 6.139831028e-10 0 0 0 0 0 2.443237334e-15 0 4.034233537e-05 0 0 0 0 67068.88038 5.229044962e-13 0 0 0.07792136983 0 851429.1862 2318.343643 5.68244774e-21 8.403216502e-23 2.915948742 0 9449.049832 2.756758982e-19 4508.120524 0 0 251372.6107 558052.9554 0 0 1.818831395e-13 0 1114998.628 0 2.7820528e-13 0 0 0 5.870071292e-14 0 0 2.864452958e-09 4.58284363e-10 0 3.065185515e-22 43761.09625 0.003018544984 0 3972.701192 6.399195732e-11 0.03627166376 4.166306403e-13 0 3.8307655e-06 1.561319696e-06 655490.0889 2.475252683e-09 0 0 0 0 1.034629202e-06 1.95399735e-05 7.736139329e-09 0 0 0 97.63027951 0 151.0564117 3498134.403 0 1.25479016e-05 4.737889495e-17 0 0 1.732951262e-12 0 0 3.827211471e-06 0 0 0 0 80450.29292 0 5.188986189e-12 0 5.749579814e-07 0 0 236244.8023 2.40188023e-07 5.58738421e-14 5.538149307e-12 0 5.586412311e-08 0 0 0 0 2.950060485e-06 1.895318554e-20 0 0 0 0.005463394106 8.161372721e-08 0 0 0 5623.907344 9.727183946e-11 1.485486023e-11 9.624792582e-21 0 0 1.473864461e-25 0 8.113577445e-10 8.155965684e-12 4.096682837e-05 0.001208656906 0 4.655312136e-20 0.02513899348 25507.02239 185.6711509 0 0 0 1.950829736e-11 2.327333159e-10 0 0.01000959282 0 0 5.417548642e-09 0 7691.105472 0 2.919538196 1401115.281 0 0 0.003039428771 1.040469194e-23 0 0 0 0 1.463408587e-09 5.699955837e-08 6.201451812e-13 0 28.61451417 0 5.031456723e-15 8.406110729 1534826.425 4.721176883e-33 0.1648255311 0.6020886975 12.00466025 1.735284391e-06 0.004311893424 0.0007281289928 871.1398166 0 32.11816515 0 0 0 0 0 0 0 0 1.502555104e-12 0 0.001533773523 0 0 0 0 317727.8334 9130.001209 0 0 708855.4471 0 0 0 4517.317818 4178.621202 0 0.01740963245 0 2.527310593e-24 0 0 0 0 0 3.19533086e-07 0.02612736891 471757.0492 2.226010144e-15 3.312162327e-05 0 0 0 0 2.854511683e-22 2.405538527e-08 0 1.849748273e-12 7.861172966e-10 1.355905863e-12 0 0 7.694569584e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.197312599e-11 0 8.58531432e-13 0 0 3.070838112e-16 0 0 0 0 0 0 0.005295927855 0 0 1.9839083e-05 0 0 0 +0 0 4.45255286e-14 0 2276.057326 0 0 0 0 0 0 0.0008002940006 0 6.810360681e-05 0 2.70788989e-24 2.844860563e-05 0 0 0 8.69056474e-14 0 0 4.782118096e-10 0 1.199563619e-25 0 0 5.094117859e-07 0 9.081908579e-21 0.02839379836 0 7.418466358e-07 0 118342.9147 0 0 0 1.035815508e-11 0 0 0 0 0 0 0 0 0 0 0 1.46908754e-20 0 0 0 0 1.089070146e-08 0 0 0 0 0 0 0 0 0 0 0 58.01949597 0 2.589925914e-11 0 0 0 0 825545.8482 0 0 0 3.392100361e-14 1.399033439e-06 0 6.015874137e-09 0.03753581117 0 0 2.31059333e-10 0 0 8.556348539e-09 1.535240778e-06 0 0 1.15655749e-09 0 0 0 0 522219.4809 0 58.90620935 0 0 1.933270884e-05 6.516190283e-09 2.946276468e-10 6.493118064e-13 0.1155925301 3.510873255e-07 9.120341151e-21 2962359.366 46.7773707 0 3.705643936e-17 7.32378062e-07 0 0 1716461.079 0 6.211047636e-08 2.436293035 0 1059933.831 3.824469203 0 3.780378976e-15 6.811187121e-05 211679.0056 1267622.715 0 0 0 0 0.0005656666621 2.132143899 1.409024202e-06 0 0.07736899918 97172.15797 507.9753323 19460.30092 0.02276870599 9.006506262e-06 1.406425482e-09 7.22903662e-09 0.0001268886909 0 5.450966161e-06 3.010447987e-15 2.531783583e-14 0 6754.049548 4828.761802 1.935643137e-05 0 8.18168367e-06 0 2.623829159e-05 2110.698224 49.31750404 20.8841827 0 0 0 343.8135571 0 0.007430271278 672369.6511 0 0 0 0 0 127.2035296 0 0 0 7.455935451e-05 9.04692107e-13 0 0 0 3.072106342e-13 0 809.5631763 0 0 0 0 0 0.002416094746 5.661214712e-14 5.405630749e-05 0 0 0 1626470.093 12650.96674 0 0 11019.75916 2.60165883e-12 0 0 0 0 0 8.682282657e-08 0 0 14.77357503 0 0 0 9269.690805 0 0 0 0 0 3.293963385e-05 0.0004374966681 0 0.1143546724 0 0 0 1.63178174e-08 0 8.425896089e-15 0.02658540017 0 0 3.287551777e-05 0 0 1894.717751 4.380790169e-06 0 19.51754158 0 0 0 0 0 0 0 0 0 8019.439107 0.002588271897 0.0008459178523 0 2.411620024 0 0 0.0002215170577 0 0.0002224286576 130.7362797 0 0.0009344122121 0 0 0 0 0 0 116980.1319 5.415471775e-09 0 0 0 7.655736928e-05 0 0 0 0 2.957975802e-21 0 0 0 0 251173.0475 2.60879138e-14 0 0.0110825362 0 3.382809707e-11 0 0 0 0 2.325132524 3.309294349e-07 0 0 1.702427859e-08 0 0 +551558.4585 0 59.90827513 0 2.608436765e-09 0 0 0 0 0 1.363061997e-18 2.165892777e-08 3.731391496e-08 8.904769532e-16 0 0.0001169888537 4558.266052 17.9861476 79504.85003 0.007214700583 0 0 0 0 0 2.435382182e-08 0 0 0 0 0 0 0 0 0 0 0 1.150334713e-09 0 0 0 338820.4293 233010.8035 2.500589028e-20 0 0 0 7.670118469e-11 0 0.0001154324406 0 0 3.166292896e-23 0 0 0 6.637141839e-13 0 0 0 0 0 0 0.02750881807 2.216962252e-21 0 3.511324684e-14 1.940877569e-13 0 0 0.00323533016 0 0 0 0 0 0 3.168230407e-09 0 0 0 0 0 2.806923772e-09 0 1.77298671e-06 0.0001160092864 0 0 4155.806228 0 1597566.374 0.02002620663 9268.113109 868308.1899 0.0006391891501 6.159352213e-27 363564.6389 6.851876601e-09 0 0.0004628127894 0 0 0 0 0 1.424554845e-17 286909.329 0 17834.00821 0 8.480799179e-09 0.05310018237 1.574788038 0 0 0.001842204749 5.373923896e-40 0 0 0 0 1.106077923e-08 0 1.586289965e-18 0 0 0 0 0.02080327132 0.02916050895 4.67996387e-12 0 0 1.321363951e-06 0 3.346021323e-07 0.5480131268 0.8607258818 0.2769662794 0 0 1.559813273 7.993357509e-05 158518.3926 0 4.153605557e-11 0 0 1.608099891e-15 2.06417883 144.1124307 0 7.73863156e-07 0 0 4.563318874 0 1.153015606e-09 0 0 51.89207329 0 0 2.888540973 0 0 0 0 4.512691821e-10 3.067237784e-10 0 0 0 0 0 6.96952243e-19 0 0 3.054331943e-12 243489.1371 3.806207263 2.537949128e-08 1.256007911e-15 0 0 0 0 0 0.001345169847 0.004490407431 0 0 0 0 0 0 0 6.328113577e-13 1.7113392e-14 52077.28162 0 2.20835048e-06 210713.4808 105555.3053 0 0 0 0 0 0 0 0 0 0 2.248164118e-15 0 0 0 2.439661005e-07 0 0 0 0 0 0 0 1.858802291e-16 0 0 106578.2142 0.002754201149 0 0 0 0 3.43891407e-28 6.832500878e-11 0 0 221259.8233 0.000178251711 0 0 6.450004495e-15 0 0 2.947070579e-12 0 0 0 0 0 0 0 35327.35939 0 0 8.68292631 0 0 75.65462546 0 0 0 0 0.0002908520388 0 1.13330762e-11 0 0 0 13.06916605 0 0 290922.2752 0 0 0 0 0 2.897385109e-07 0 0 0 0 0 0 0 0 0 0 0 0.09797089259 0 4.994184802e-07 0 0 0 9.5885473e-09 +0 687.3945724 2.511600591e-24 0 0 0 0.4988416565 1.188462867e-19 0 0 0.0001139191095 2621.42395 0 3.812035374e-19 0 0 0 0 6.961381712e-23 0 0 0 0 0 0 0 0 10021.74882 2.129941206e-13 0 0 0 0 0 0 4.812437187e-18 0 3.082253952e-12 0 0 1753.668054 0 2975525.585 2.754725476e-27 0 0 5.505713729e-15 0 0 2.457189621e-07 0 0 2.238775253e-06 0 0 0 0 8.931265433 0 0 0 0 0.7526558658 0.0001788573482 2.210951136e-32 7.332083784e-10 1.011998562e-05 0 0 57.73488347 0 0 0 350608.2209 0 0 1.634470224e-09 1.8695916e-10 0.0003866058499 0 0 0 2.664658521e-12 3232.17269 392264.3142 0 4.324359732e-17 1.527545308e-17 2.175857998e-06 4234.402679 41224.68591 2.878246018e-05 1.364559872e-08 0 1083.542226 5.219726745e-19 0 1.244629763e-12 4486657.844 0 86854.11852 1.49134018e-12 0 0 611.9976003 0.001821140377 1696239.405 1.401995866e-18 0 0 0.001675299701 0 0 5.255041614e-18 12524.7472 5098420.946 106.6872343 0 0 1.592093752e-09 197629.3418 8.489168727e-13 1.247648222e-05 0 0 4.450347119e-08 3.909602298e-10 0 0 0 8.99680297e-13 2.7733768e-06 0.00436109104 1.422334618e-07 0 1.028445135 5.75933359e-25 53397.91282 0 0 0 0 0 0 0 3.211809943e-12 0 0 0 3.234941944e-05 5.657431682e-13 0 0 0 0 9.642828581e-16 0 0 0 0 0 142832.7309 0 0 0 9.054963499e-15 654.144351 0 0 0 0 0 0.0005414797386 0 0 0 1028879.926 0 1.075308421e-11 0 0 0.2975156375 9.981421608e-19 0 14.39647098 0 0.04975163436 162844.1466 1080176.778 0 2.119282471e-14 0 0.0486127461 49.55153278 7.363753062e-35 4.404340979e-06 0 0 6.078303836e-06 1.181148771e-07 0.1986002542 425599.2814 0 0 1703.067022 0 0.0001582465865 0.8042207081 1.760009059e-11 0 0 1.744137307e-08 1.473863775e-29 0 0 0 0.003830790388 1.088443402e-23 0 0 8.843736773e-09 0 0 0 5.224117538e-07 1.628452869e-14 0 0 0 5.435416435e-05 0 1389.781125 0 0 0 0 0 0 0 9.610824123e-11 5.690150318e-12 9.544640995e-17 4.025271444e-05 24.65392163 0 0 0 0 0 0 212.4563507 0 0 0 2.686599278e-11 44.39695468 0 0 0 0 0 0 0 0 0 0 0 411.0817356 0 0 0 0 0 0.008778055195 5.903281141e-13 1.184506735 0 0 0 0 1.934541035 8.841808278e-06 0 0 0 6.666762922e-28 0 0 0 204.6896767 1.276087359e-24 0 15.67690107 0 437545.1186 0 0 0 0 0 +3.033654378e-05 2.700356293e-21 0 0 0 0.006475101978 328611.623 0 0 0 0 2.433661251e-09 0 0 0 0 9.692302309e-05 0 0 0 0 0 0 0 0 0 5.260911371e-29 0.3500506101 0 4.985653363e-11 0 0 0 0 0 10895.93351 0 0 0 7.154650634e-11 0 30.33510642 9.879192934 0 0 0.145351848 4.863113138e-10 1.667120149e-07 0 0 0 0 2.116578304e-20 0 4.341129952e-07 3.103290917e-10 6.553165275e-06 1441416.62 0 1.843590045e-22 0 0 0 0 0 2.52978648e-06 0 7.987965489e-09 0 0 3958.771616 0 0 0 623853.7026 1.796317192e-07 85695.21158 6.937430931e-10 0 0 9.560368048e-10 0 0 0 8.073293108e-05 4.910332723e-07 3.681417082e-09 0 0 0 3.511410481e-19 107.7001515 24369.40803 7.112749848e-19 3.212881457e-10 2.066603499e-10 1.491576492e-10 0 169267.7626 2.089539343e-13 0 0 7.595536453e-08 6.731271023e-18 0 3.944205611e-21 3.635615986e-06 0 0.1185973345 3.702781837e-14 0 32071.71243 7.529415261e-13 0 0 1.676632037e-09 0.0004043533689 0 3.903073019e-05 3690.318862 0 0 0 0 1.295086935e-10 9.72565772e-16 0 0.0007705234965 0 0 0 7.136942975e-13 7.478026801e-11 2.65735342e-08 1.328074537e-09 0 268167.3546 0 0 3.869715606e-10 0 0 1.238657837e-07 0 3575.581181 0 0.4772799731 5.771801704e-15 0 3.367602065e-19 2.2747942e-22 23.07543542 6.880005691e-11 0 0 8.169005714e-21 0 3.992558889e-11 0 4.028953759e-06 0 0 0 0 0 3.424492996e-22 1.863827253e-09 0 1146110.45 1.131945317e-11 7.70689903e-10 0 1.05339028 0 0 1.153017535e-17 0 0 0 0 0 2.324198134e-20 5.509555024e-12 5.710460223e-12 8.265977194e-11 5.483396037e-36 1.074605219e-24 0 0.2307017829 0 50178.08903 1.734251991 0 0 1.618288734e-06 2.460309741e-10 2.229607989e-12 3.18398919 0 3.926781377 0 0.131449805 1.881103441 0 0 0 0 0 0 0.06786798111 215159.7117 135853.4272 664.9104658 0 0 0 0 32617.15572 0 0.009849260265 0 0 0 0 0 0 3.043498251e-05 0 2.834363813e-08 0 0 0 54.30483923 0 9.776092851e-23 0 0.0002163772325 0 0 0 0 0 0 0 0 1.646445415e-25 0 3.534512547e-21 7.951319267e-23 0 0 0 1.801069871e-10 4.904825839e-07 0 0 0 0 0 0 2.515383074e-09 266.4354496 1.34353692e-31 0 1.171603254e-18 0 0 0 0 0 0 0 0 0 2.465095507e-09 0.02519870167 0 0 2.823900049e-13 0 0 3.038603637e-06 0 0 0 0 0 0 0 0 0.2747507459 4.702060742e-13 0 1251086.102 0 0 0 392.4076649 1.181305229e-19 0 +3.122948374e-10 0 0 0 0 0 0 0 0 0 0 290755.9728 0 0 44752.24353 0.0005912513697 0 18778.51069 3.383589087e-08 2.130857878e-10 2.454311927e-14 0 0 0 0 7.977408604e-14 0 0 0 0 315.4981792 0 0 0 0 0 0 0 0 0 0 0 0.2397236339 0 0.0001331762691 7.029347151e-09 5.201080353e-13 0 5.306202489e-19 1.776169966e-08 0.003355422106 0 0 4.584916083e-17 0 0 519.4630611 0.0009751685746 0.0002456104357 1.022542774e-09 1.58453559e-20 1.448142864e-09 0 0 0 0 3.008511789e-09 0 0 0 1.08152373e-13 1.128765924e-28 0 0.31651415 0 0 0.0003756054943 9.617441977e-21 1.778300164e-06 0 0 1.572236922e-07 0 0 3.472283793e-10 1.434517157e-09 0.810138842 0 1706589.05 0 6.14090847e-13 0 0 0.00284562955 0 0 0 1645.065996 0.0002933923184 72.24905045 0 3.496597491e-26 0 0 298.7381868 27760.70638 0 3.511473447e-11 0 5.90444968e-22 3.64552454e-12 0.0006589898501 8.618031435 9.224257619e-09 224.8202453 0 1.725163445e-20 3.397282317e-11 5.189228679e-05 0 0.002302009758 3.289414609e-11 0 0 1.075330418e-05 0 0 0 8.21379821e-13 0 30332.50764 1.408728093e-15 9.645443994 260415.9554 14.83112379 1.345983706e-05 7.83465448e-11 15063.29326 0.007471827338 1.622704878e-10 0 2.141223542e-17 6.725403746e-07 0.01722717412 4.291382874e-09 0 0 2.80791683e-08 0 1.352230699e-11 6.549820358e-15 1.417237117e-14 7.177135548e-20 9.668018144e-08 3.171719771 5.564104272e-10 0 1.022406819e-05 0 0 4.00895574e-17 1.289536001e-09 0 0 0 0 0.01974623556 0 7.042848375e-22 0 0 0 0 0.03187021672 0.001212665964 1753575.263 0 0.0001176383564 1.003579069e-06 0 0 0 0.0002505549263 1.95085079e-14 8.953667153e-14 0 0.01698942601 4.459357952 342504.1613 1.58942762e-28 8.520979934e-08 0 0 0 2.015602875e-17 1.249891057e-09 0 0.002525915877 0 0 0 0 391894.4257 9789.865491 0 0 0 0 5.916648065e-10 1.506753043e-29 0.00300367414 0 0 4.4513104e-09 1.738503145e-09 0.006061546741 0 0 0 1.988877763e-27 0.3887786 0 0 212.7531568 0 0 0 0.01207041238 0 0 0 2.99701789e-05 0 0.0006699753003 0.0009276231992 763475.858 0.01583043297 0 0 19.70229144 0 0 2.528592451 0 0.07080425958 233647.156 0 0 6.30172128e-05 4.005925051e-11 0 2.114016773e-12 0 0 0.04022871453 0 1.147104826e-20 0 2.798191398 0 0 0 0 0 52399.38752 0.03247942152 0 0 0 0 0 0 9.5165436e-10 0 117.7062684 0 0 0 0 35.42160873 0 5.476809747e-12 0 2.707076287e-05 0 0 0.01475871296 0 0 0 0 0 0 0 0 0 0 0 3.156488876e-23 0 +0 0 5.207534645e-13 0 0 0 355.1133924 0 0 1.511353569e-08 6.048344212e-18 0 0 0 0 0 0 0 0 8.324350797e-05 0 0.005553372805 0 0 0 0 0 0 0 0 0 1.484609327e-13 0 0 1.536786641e-08 0 0 0 0 0 0.9126575947 0 0 0.08545803087 0 6.687041471e-07 2.055250605e-10 0 0 0 0 0 3.090164208e-10 0 0 0 0 225.9377572 46430.13662 0 0 0 0 0 5.113523212 0 0 0 1.842745855e-10 0 0 5.865590278e-08 0 0.0003367058047 0 0 14.31681953 0 2.409375944e-08 2.338092076e-11 2.635987413e-15 0 0 4.976098243e-15 0 0 0.01683635518 100.8407488 0 214086.6174 33755.10534 0 0 0 0 2542.038974 0.007067413366 0.0007249738295 0.006280674663 0 0 0 0.5604521401 0 0 1.75594645e-08 0 3.54049439e-07 30.01528435 0 0 1.794286314e-15 5.138605398e-07 0 0 1.445662539e-06 0.011249026 0 0 0.000331155222 9.080992555e-19 0 268422.2777 0 5.136645453e-15 0 0.001821248296 4.369881983e-20 0 1.216836528e-14 0.07754941257 2.897230445e-19 398035.7634 0.3528483134 0 0 1.897899065e-13 6.954178673e-05 0 0 0.02885557518 9033.374582 0.003819759059 0 0 22479.48496 6.657905362 0 0 0 0 0 0 0 1.40595273e-08 0.0003366448811 7.22550436e-05 2101.066518 3.787872782e-10 0 1.203584136e-09 9.328935492e-19 0 113.9163389 1.258317512e-18 0.04478629591 0.04571193882 0 0 0 0 0 7.698269675e-08 0.01491117457 0 52.77384967 0.0001820761014 0 0 205232.7655 0 2.306405283e-06 0 0 0 0 0 6.886567054e-20 0 0 0 7.465857932e-11 0 0 0 0 5.773612601e-30 0 172162.9303 5.563594895e-05 0 3983.808494 0 6.214517496e-15 0 2318.409204 0 3.013272207e-12 0 0 0 2.519449373e-16 0.002869306292 0 0 0 0 0.0009332047141 2.057022758e-24 1626.946288 711395.3114 2.594216659e-13 1.19406917e-06 0 0 0.0009746834364 0 0 0 0 1.124199436e-05 1.426181883e-17 0 0 0 0 0 0 0 2.100787276e-06 0 0 1.039909016e-05 0 0 6.558994399e-20 0 0 0 55700.83416 0 6.290724831e-21 0 0 66276.34942 0 0 0.3164963458 0 0 8.44335675e-12 0 0 1.088830608e-06 463640.2124 2.271470394e-05 0 0 0 7.455202558e-09 0 0 0 0 199.6148172 0 0 0 3762045.452 0 0 0 0 0 0 0 0 0 0 3.474536241e-12 4.51387682e-08 5.957907729e-10 0 0 5.881983069e-09 0 0 1.902960039e-12 7.200283472e-06 0.0001307314278 +0 0 2983981.976 3.260583057e-07 0 0 0 0 0 0 0 8402.09065 0 0 0 0 0 8.204172372e-13 1.548200681e-09 0 4.427825278e-20 5.743250943e-11 3.404262534e-18 4.644110849e-26 0 0 0 0 0 0.01220605961 0 0 0 0 0 8.303590518e-10 738154.9908 2.275247234e-12 177950.4392 0 0 0 0.0002208429242 0 0.008886337882 9.062686779e-16 0 0 3.159289656e-13 0 3666714.159 0.0003630094719 0 0 0 4.874099652e-09 0 472102.0184 0 0.2094608326 0 0 5.784456126e-17 1.832716883 0 0 5.986857713e-08 33452.22636 0 36478.08284 0 0 7.592512847 0 0.005339561822 0 0 0 4.594675963e-07 0 5011.444914 0 1.02156322 0 0 2.773502512e-11 0 0 0 0 1.023327867e-11 0 0.9275041761 5.598326489e-11 9.785543803e-09 0 3.06976821e-09 260384.7947 727300.2543 0 0 0 0 6.254088081e-09 25273.73228 26.08712194 0 0 3.447137289e-05 7545.125185 0 0 0 20.60911485 0 0.08986104035 0 7.304944439e-11 6.034917818e-14 6.507178726e-08 0 0 0 0 0 0 0 0.000859863042 415148.4846 0 0 1.161760184e-09 0 0 0.00427751316 1104.911854 1321.598001 0 18724.60032 0 0.01994874248 0 0 5.748935015e-08 0.00484439495 0.3115289025 0 0 1.650207349e-07 1.400632886e-09 0.0001007761103 5.570610383e-30 2.637581117e-05 0.0002448548787 0 6.348859037e-10 0 4.526227004e-13 8805.257009 0 0.08857591649 1.972920469e-09 0 0 6.487447128e-11 0 55344.52597 0 0 0 3.507337314e-11 0 0.0002108578493 0 0 0 0 0 605365.1871 0 0 0 0 1.810066209e-27 1.104289429e-17 0 0 28341.54838 7.632019023e-10 0 0 6.85534848e-18 2.689618504e-08 0 0 0 3.993874639 6.36926167e-20 0 0 199.504554 0 0 0 9084.600832 0 1.078739854e-17 1.495479021e-12 0 0 0 0 0 3.551001399e-19 0 0 0 0 0 0 0 0 0 3.054729676e-09 0 0 0 0 0.001110046899 0 0 2.125761968e-08 0 0 0 0 517079.9416 0 0 514378.6411 0 0 0 2.194302332e-12 4.603696559e-11 0 0 0 0 9.841853653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 290878.692 0 0 0 0 0 0 0 0 0 0 0 0 0 1.899920194e-08 477.3011895 0.0028489125 0 0 0 0 0 0 0.243156423 1.00873105e-20 0 0 0 0 0 6124.751408 +0 0 0 0 0 0 6241.367698 0 0 0 0 0.1561729722 0 0 1.17475469e-06 0 0 13193.31714 0 0 0 0 0 0 0 0.0195775843 0 0 6.774222946e-07 0 0 0.01591454582 0 0 0 0 0 0 3.519761135e-13 0 0 0 0 0 7840.403732 0 0 3.484177895e-15 9575.626636 0 425.0999725 1.316495175e-16 27259.87485 297.7938477 2.731984372 0 0 0 0 1.74605253e-11 0 0 1.28896057e-21 0 168279.1625 0 0 2.4566421e-10 0 0 0 0 7.375763148e-17 349.1423476 0 3.424316949e-08 0 3.655111399e-07 0 0.0001867783101 0 0.03066829342 50250.93791 0 428353.6253 1.31126113e-26 0 1.47361739 2523.8027 1.805183712e-05 0.002604760138 0 0 1.771323313e-26 1.280939605e-22 0 49824.61001 0 0 2.4056679e-11 0 0 0 3.823621005e-27 176.8104779 0.0002834974202 0 406.4809656 66824.78058 0 4.552100819 1.220846725e-23 6.884317521e-19 16431.20403 1.040031889e-16 0 4.357250641e-05 0 16948.91193 9.671110371e-14 0 3.80117008e-14 35.45480233 7.750231347e-06 5.413166632e-11 5.527739838 2.694210059e-09 6.31898142e-08 0 2.545134207e-11 0 1.317899545e-07 0 0 0 0 0 0.1379988334 0 9.579560011e-24 6.257620369e-10 0 7.465631154e-12 0 1.255035643e-20 7.539700771e-19 0 0.02476044809 0 3.424525154e-05 0 7.733811076e-13 0 0 4640.536948 0 0 0.0001362648488 0 1.813453613e-09 6.676211534e-05 4.428858153e-16 0 1.04978773e-23 0 4.916046499e-11 0 0.002562408962 0 0 0 9.007885085e-14 0.05071232128 0 1.555823104e-16 0.04956673454 0 0 2.446904165e-19 0 524089.0035 2.747790546e-07 4177.470481 0 165.2606205 0 0 0 2.762657953 0 0 0.003588008309 0 1.990314035e-14 0 108.8793036 0.4452658915 7.763435226e-14 0 0 0.01559549929 0.001465600345 0 0 0.04340491172 5.537161053e-07 9.449647018e-28 0 0 2.644027589e-08 0 0 51.3502642 0 10.40379851 0 0 15.8632924 6.458037352e-05 0 0 1.476633345e-11 3.901316939e-11 2.351059499e-29 6496.247865 0 4.535110627e-10 0 2.261546147e-16 7.186851347e-16 0 4.612641e-27 0 2.982942447e-06 5.563518226e-14 0 0 1.616907589e-07 0 0 0 0 0 0 0 0 13548.86936 0 0 0 0 0 4.364937866e-19 0 0 0 0 0 1.203161804e-05 1.686825106e-07 0 1.780077477e-29 39.17610158 0 0 1.759796536e-16 1.112785986e-11 0 0 0 9.703561806e-11 0 0 0 0 0 0 6.032538527e-13 0 0 0 0 1.011335298e-13 0 0 1.266388365e-11 1.498310753e-33 0 1.260380124e-13 0 0 0 0.07490888508 658.5474898 0 0 0 1.953321308e-12 0 0 +5.052242348e-17 0 0 0 0 0 2.195970947e-20 0.0001400581624 0 0 0 0 0 0 0 0 0 1.570292358e-15 0 0 1.398750183e-06 0 0 554842.5587 0 7.543513759e-14 1.646758018e-31 0 0 0 1.733768097e-12 0 5583.892524 0 0 6.174305818e-08 0 2.603885316e-27 0 1.112127443e-06 0 2.150643542e-09 0 0 0 0 0 0 0 0 0 0 0 463.1313215 0 3.421562282e-06 1.488148817e-08 0 0 0 0 1.869166138e-09 0 5.065635819e-06 1.380806075e-10 0 0 0.0007807595478 1.32457577e-08 5.432454971e-06 0 6087.797588 0 8.139361281e-08 0.0002434084004 0 0 0.008233463258 0 0.6369832179 0.0187857701 0 0.4250202454 0 0 0 0 4.039537799e-09 0 0 1.165272859e-09 44322.07912 3.088123087e-11 4.241986753e-05 0.0003221616489 0 0 0 0 0.0001075708702 0.0007671648254 0 0 0 1.515648259e-28 0.02323119672 0 7.702170113e-18 0 0 0 0 0.000109236328 0.006505196119 0 61908.71021 6.828781428e-11 1.672356819e-09 0 0 0 0 2.094908679e-10 2252.202956 0 0 0 0 3.535427742e-05 0 0 0 0 730933.3504 0 186015.8752 0 1.173963463e-14 515.8455947 0 6.339794076e-07 0 0.0008868843235 0 1.794860487e-07 0 0 3.033159768e-19 0 1.036717312e-15 7.565908882e-16 0 0 0 1.216252172e-10 52170.89767 1.454694572e-11 0 0 0 0 0 0 0.004268252987 1397.548409 0 2.793231747e-17 0 2.56294364e-29 1.062457813e-07 0 0 0 0 0 0 0 0 445.8885088 0 0 0 0 0 2.800493135e-07 0 6.958808699e-13 7.210194725e-14 41943.39566 13.26110017 0 0 8.264214958e-16 0 0 4.521239437e-10 1549064.775 0 0 0 3.276771636e-12 0 7.078356167e-09 3.811409296e-13 0 0 0.2677057038 2.213039841e-15 874.0040776 0 0 0 0 9.408418739 0 0 0 0 8.715674663e-14 0 0 0 5.548254068e-19 35.17105651 0 0 0 5.097434237e-09 0 0 0 9.127368911e-14 2.144171832e-16 0 0 0.0001709836599 0 0 0 156.9519793 0 0 1.224236642e-05 8.696059858e-24 0 0 0 0 1.704192086e-26 0 0 0 58.11277048 363.8485194 0 1.831705522e-16 0 15.7514783 1.048397881e-12 0 0 0 0 1.55336809e-22 0 0 0 0 1.881976132e-08 8.37500654e-18 0 0 9.907049467e-07 0 0 0 0 0 0 0 17.52290341 0 0 0 679199.5774 0 18789.48436 0 0 0 0 0 0 0 0 0.09686365485 0 0 0 0 +0 0 0 0 0.03012373142 0 0 0 0 0 0 6.097771911e-15 0 4.071469547e-08 216093.7625 0 4.509859322e-07 0 0 0 9.173133563 0 0 0 7.109438162e-05 0 18943.93131 3.574001313e-11 40526.85532 0.1029306339 0 0 5.271386704e-08 0 0 0 3.849256306 0 0 0 0 0 0 0 352.3915425 86.21613882 1.866311744e-18 5650.223234 0 0 1.045365912e-14 0 0 3.735279453e-09 573.0580335 0 104.0693288 0 4427.190192 0 0.00695723425 14998.39292 0 0 1.014730945e-13 0 3.204465537e-28 0 2.974652086e-10 415414.1262 0 0 0 7.144806733e-14 3.866277129e-31 0 0 0 0 0 0 0 1.189636893e-09 0 2.602370668e-09 0 2.265099056e-19 0 4.240977906e-08 0 0 480755.129 5.173385181e-20 0 0.3589541136 1.616704542e-07 0 0 0 0.3747542833 0.3867204049 0 8.297866777e-25 0.009981457979 0 1.177452891e-27 0 2.753434848e-13 0.7601941352 3.853505783e-09 0 0 0 0 0 0 2.279753059e-12 1.607546515 0 1.545763686e-13 0.08177625352 0 0 51.59416339 45.60104627 0 4.329811716e-09 0 0 0 0 3033.0442 0.3801106025 1.160363211e-09 0.01373652966 2.160206516e-17 0 4.127050258e-07 0 0 5.819544993e-14 0 1.447467825e-06 0 0 0 1697.106634 6.427226671e-19 0 0 0 5.374288333e-18 0 0 0 8.58001507e-11 0 0 0 5.323025424e-16 5.842619918e-06 1.406088087e-05 0 0 7.575551027e-11 2.827476057e-11 0 0 0 0 0 0 1.422204774e-07 0 0 0 0.0008539618712 3.531921737e-09 3.933883098e-11 1.43674101e-08 0 0 7.122554563e-15 0 0 0 3.743262617e-14 0 0 6.915650804e-17 8.143708197e-12 0 0.009635369329 7.719265544e-18 0 6.950200465e-12 0 29259.14479 1.400995011e-07 1.041295322e-17 7.520742174e-15 0 0 4.327892644e-18 1.031760201e-15 1.395860523e-05 3.071697489e-15 3.029781931e-08 0 0 6.337457238e-08 0 0.1658432712 0 0 0 0.01399086814 0 6.401308076e-13 0.0001788958354 0 0 0 0 37.69703472 0 0.001547485254 1.373713501e-11 2299.379014 6.620948186e-05 0 0 0 0 0.0001446175398 2.668364614e-07 0 1.199925657e-21 0 0.008728058047 0 0 0 0 0 0 0 0 9.159881261e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.346484235e-19 43.4316532 0 0 1.273605256e-13 0 0 0 0 0 0 0 0 1.609047491e-20 0 0 0 0 0 0 0 0 0 0 3.931213861 0 0 0 5.366823411e-25 0 0 6.408484821e-06 0 0 0 0 0 +0 0 0 0 6.07657895e-15 0 0 0.01199180319 0 0 0 0 0 2.674585136e-10 0 0 0.0430425928 0 0 0 0 2740793.205 0 0 0 0 0 0 3.051918175e-09 2.475232213e-14 0 0 714891.0681 2.157525569e-08 0 1.557792487 0 0.0367547918 0 0 1.756899648e-10 1170.722702 0 0 0 0 0 0 0 1864178.91 0 28.37026883 0 0 0 50984.30717 0 0.0008355600275 1.619495792e-13 2.628993538e-11 0 1.959833296e-12 0 0 2.055534984e-07 0 0 0.004834208758 0 1.263914689e-17 0 0 8.744613379e-22 1.856545414e-15 3.192426769e-05 1012.370605 0 1.081524046e-09 1.842886719 0 0 0 8.565092362e-21 0 0 0.003947008246 2.999759041e-09 0 0 0.01742126999 8.289881839e-10 1.06533328e-13 0 0 2.083824888e-12 1688.309142 0 0 2.736514979e-11 5.053662798e-10 0 0 0 0 1.188396915e-08 0.06527814306 0 0.03779049246 13.93732509 130.9696545 259451.3202 0 0 0 7.995624743e-10 6.366038032e-15 7.806493858e-23 0 0 1.336132e-18 0 49.27099133 0 0.4245148398 1.725202957e-13 0 1.961866741 2.119333778e-28 349224.5579 8.002851265 0 2.405892618e-16 5.935474025e-05 0 0 2.421777816e-17 2.698481374e-16 73.04472395 8.485577299e-06 1.361227193e-10 0 3.240067981e-13 1.528381792e-15 1.218986127e-07 0 2.224260942e-09 0.540145821 0 0 0.0004782644675 9.768312999e-12 0 4.382459949e-14 0 0.0901567717 0 2.844167323 1.687379473e-08 0 0 0.0004561329504 0 9.227378707e-20 202.7058158 0 0 628.1122686 0 0 7.968753977e-11 25882.13736 0 0 0 6.136099222 0 0 0 5.887256771e-27 0 0 0 0 2.241688451e-17 4.408384837e-09 0 45.74467053 0 0 16.05511401 5.037307388e-21 0.04064590213 0 4.742653369e-17 1.339120132e-11 1899.474327 0 0 6.296732601e-20 0 0 0 0 0 877633.7044 4.730638186 6.880872895e-10 1.173335475e-15 0 1.235801609e-05 1464.987092 0 25.7055651 0 5.444602786e-08 0 0 0 0.002107049727 0 0 0 0 0 6.795136379e-06 0 0 0 254346.6976 5.515805227e-13 0 2.82940628e-06 0 0 0 0 0 1.095537863e-11 0 0 0 0 3.235128782e-11 0 0 26391.54043 0 0 652544.0708 0 0 0 0 0 0 0.005533455514 170.1872974 0 123724.2857 0 8.38381659e-19 0 0 0 0 0 0 7.935467708e-08 57333.84743 5.361943397e-13 0 0 0 0 0 0.002269384882 0 0 0 0 0.03960171355 0 0 5.809542395e-05 1.015250451e-05 0 0 0 0 0 0 0 0 0 0 0 0 1665652.146 0 228518.5054 +0 0 0 0 0 0 5.555428341e-13 0 8.149029751 6.939160984e-13 0 0 0 0 9.896730499e-10 0 0 0 0 0 0 0 0 0 0.3850234065 0 0.962493166 0 0 1.883488928e-14 0 307677.3354 0 1.071429144e-16 0 0 0 0 0 0 0 0 0 0 0.0001365389596 810.5878022 0.3648938428 0 0 0 0 8.964005026e-07 3.66031566e-10 0 1.915008977e-13 0 0 1.685696414e-10 1.558029057e-11 0 4.576127403e-07 0 0 5.116702509e-18 0 0 2.724405884e-14 1208663.679 0.001341453892 109.9807933 0 0 0 1.953720787 0 0 0 2.681602297e-10 0 1.10963251 0.0004419991519 5.486566533e-08 0 0 0 0 0 0 5.596930434e-10 0 0 15564.16555 1.805427161e-05 1.066458696e-12 0 0 0 1.734513277e-09 0 0 0 0 7.311827285 7.805250279e-16 0 0 1.510069751 0 0.05532789996 0 9.685921546e-08 343571.2522 3.841905653e-08 0 0 0 1.171591843e-16 0 0 7.234935095e-05 0.002358237894 0 0 0 79002.52173 0.294524375 5.049935626e-19 0 0 0 3.397697759e-16 6.58971063e-25 0 1.991091794e-08 0 0 0 1.625066003e-46 0 0.3032560112 0 0 7.619958929e-09 0 4.580111396e-16 2.390819138e-33 0 0.01185365981 5.181913885e-22 0 0.01476310724 0 0 0 8.274934644e-18 0 2.111149001e-07 8.32244789e-07 0 1.485172656e-14 0 0 1.054488604e-07 0 0 8.376153757e-17 0 3.245002032e-14 3.921314845 1.530215917e-19 0.001272076366 0 0 0 0 0 0 0.0002570857908 0 9.28337311e-19 2.093190353e-11 1.532631558e-14 372578.4456 4.078773476e-15 0 0 0 0 3.124155903e-19 0 0.4220335551 0 0 0.1239578493 1.209994039e-11 0 0 0 7.040783531e-13 0 0 0.00316847879 0 2.693931542e-13 0 0 0 1.862276358e-08 4.534167375e-09 0 0.1049337219 0 0 0 6.529222614e-09 0 0 0 0 17.39306577 0.005167917803 0 0 0 0 0.7607119096 364.5979278 0 0 0 0 0 461527.7548 1.071473916e-13 0 0 0 0 0 0 2.014852292e-21 24.05919702 0 0 402730.6792 24.57447212 0 4.888393719e-13 0 74871.94442 0 0 0 0 0 1.489115588e-10 0 3.452206871e-19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 306.5275215 0 0 0 0 0 0 0.07914947378 0.1469147604 293526.9527 0 0 1.982163296e-08 0 0 4.006568632e-08 3.973543864e-21 0 0 0 37.56583076 0 0 0 3.127343854e-05 0 +0 0 1.000910602e-13 0 1.388330436e-10 0.6984970228 0 0 0 0 6.35890072e-06 0 0 0 1821788.084 0 0 0 0 2.923237002e-06 0 0 0 70200.28662 0 9.157276181e-10 0 0 0 0 0 0 0.0003575645492 1700.896879 3.426861892e-20 0 0 0 0 0 0.0005068263603 7756.438513 0 0 0 0 0 87.82619628 9.452083123e-28 9.391297886e-30 0 1.966066635e-07 0.0003557646433 0 0 0 0 0 40900.58841 0 0 0 0 0 0 0 0 0 136563.5864 0 0 3.615092147e-06 5.576812301e-05 2114.986145 0 0 5.519758905e-14 4.788994081e-09 0 0 438.4640341 4.75790308e-12 656.3441791 4.395069106e-15 0.001399045497 0 0 410.1318173 0 1.042818695e-10 3.993417307e-07 3.862362656e-14 92.53412017 0 0 0 3.243734438e-11 0.001299551283 0 86.10314316 6327.629352 0.4731540183 61.60195593 0 1.502146226e-27 0 23510.39845 0 0 0 1.921038637 2461710.538 0 0 0 0 0 1.38370933e-09 42425.44866 36146.18596 0.001946630214 0 0 6.376377689e-06 0 0.0002648338188 0 0 16133.13002 0 1.490153084e-07 0 34.98947273 1.826718785e-23 1.070695665e-27 1.837149079 582.1655862 8.839514724e-22 0.01490930406 0 0 0 0 1.662898254e-14 0.06049074312 8.860567734e-08 0 0.5485052256 3.63568258e-13 0 8.059365069e-07 0 0 0 9.302420127e-17 1.960545162 8.717248655 0.04310648643 0.001968618297 1.548499966e-18 1.887548074e-11 0 0.07824870289 1564.865778 0 0 0.000289408151 0 0 0 6.813779641e-19 1874.320935 0 5.812250811e-20 3.685187531e-08 0 1.586215264e-16 0.0006397197007 0 1.731952223e-05 0 0 3.773887775e-27 6.354880727e-32 9.631181551e-05 0 0 23.98511291 2.406150219e-05 1.451569766e-15 0 2.898185731e-14 7.315707768e-06 91.68706489 0 0 1.880727425e-18 0 2.136929342e-10 0 3.245869089e-17 0 0 0 0 0 0 0 0 0 9.518886785e-05 0 0 0 0.03355197654 0 0 0 0 0 1232952.518 0 288676.8584 0 0.02812769346 2.562686713e-14 0 53315.98365 0 0 0 6.035531112e-07 0 0 0 3.351310678e-06 0 0 1.630171675e-06 0 0 0 0 0 1.480302916e-27 0 0 6.970036406e-08 0.0001943159824 0 0 329629.1121 0 5.370306045e-13 0 0 0.6811038866 6.370218258e-17 0 0 0 0 0 1.876985251e-12 5.86607057e-06 0 0 0 0 0 0 1.762238999e-13 0 0 91898.20564 0 0 0 0 59856.80186 0 0 0 0 0 0 0 8.973071965e-31 0 0 92030.40164 3.280068947e-24 9.321488249e-14 0 0 0 0 0 8.439365563e-14 0 +0 0 0 2.336138562e-07 0 0 0 0 0 0 1.758828438e-11 0 0 0.1745464428 4.313284344e-09 0 123.4710376 0 0 0 0.6015472123 0 0 0 1.914472324e-25 0 0 199.5918716 0 1.484100698e-08 0 0 0 0 0 2.348373825e-11 0 11.92290289 0 0 0 0 0 0 1.505674176 0 1.491800682e-05 0 1.617677471 0 0.008456764487 0 0.0003216904127 0 0 0 16.93262326 0 0 0 0 0 0 0 6.456647183e-06 0 51513.10448 0 0 0 0 0 4.455103583e-09 0 0 0.0002286326441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.630541798e-05 9.969402546 0 4.128358988e-11 0.1558599066 3318.419716 270799.445 0 0 0 2.435919264e-11 545.4133569 0 0 0 60.98587266 297157.532 2260.271228 0 0 0.0002316309831 5.57931961e-14 0 0 0 0.08080704503 0 3.7186422e-21 3.28410853e-11 2.279375059e-05 5779.13521 0 0 0 1.332096158e-06 0 1.150980225e-05 0 2.849193841e-31 9.135057202e-08 0 6.727604798e-19 0.2741950441 0.01974624884 3.798210484e-16 900.401028 7.274629341e-24 0.2603657646 0 0 0 0 0 0 0.0124777187 6.660874047e-14 0 2.122848997e-07 0 1.265085077e-13 4.803325307e-14 0 0 0 1.330119287e-09 0 0 0 0 2.207094087e-09 11959.15485 0.1481556327 0 0 3.366686407e-06 1.692103844e-14 1.884775523e-07 2.193854915e-05 2.165917872e-25 0 2.286436423e-21 4.560749586e-11 0 8.959081059e-08 0 0 1.83154146e-10 120975.9732 0 0 3.720333496e-29 6.189039803e-11 0 0 437419.7801 0 0 5.309981162e-21 0 7.972788491e-11 0 0 0 9785.756364 1.685481487e-09 2.746287889e-09 4.190806857e-09 4653235.298 0 1.254310279e-06 0 0 0 0 3492.855003 0 0 0 0 0 0 270.7910972 0 0 0 0 0 0 1.688074848e-05 1079.40464 46148.71475 0 0 6.725647515e-08 0 433.3032491 0 0 0 0 3.686765188e-05 0 0 0 8.721983191e-13 0 2.760033633e-30 0 922164.3388 0 6.332186181e-09 2.271605409 0 0 0 6.205585579e-30 35041.17615 0 0 4.887585903e-18 3.193415865e-08 3.860789891e-14 38138.93747 0 0 1.664242654e-09 0 0 0 0 0 0 0 0 0 0 5.625908508e-07 0 0 0.0001994990407 0 0 0 0 0 0 0 0 3.261259727e-24 0 5.938111436e-27 1.211120256 0 0 215629.9799 0 3.8407689e-27 0 0 4.989656191e-08 0 0 9.644847568e-22 0.0003777783049 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 2.749428675e-07 2.162994723e-06 0 0 2.391967483e-09 0 0 0 9.822245162e-17 0 0.09933395783 0 0 0.0003182393641 0 0 0 0 0 29.01456997 0 0 0 0 0 0 0 0 0 1.356324482e-06 0 1.391791704e-07 0 0 0 0 0 0 0 1.215573464e-23 1.532617606e-10 0 4.444944853e-06 0 1491.106543 0 0 0 0 4.659603829e-07 2.892931832e-15 0 0 0 0 0 0 0.0007860114602 0 0 0 0 0 0 0 3.239767639e-10 0 7.644161349e-15 4249653.819 0 8.266639701e-10 6.815727252e-11 0 0.5129909608 0 2.523683618e-10 0 0 0 101385.0252 202.3650141 0 0 0 2.296268433e-11 0 431.0672591 5.341090627 1.580254891e-09 0 5.946951654 1.29628331e-16 0 0 0 0 0 0.003025189242 0 6.921633462 9.769645972e-09 0 7.11232725e-18 34108.26077 5.044908239e-07 7.646148484e-19 8.328699131e-28 0 0 0.004729953349 0 0 1.299878937e-19 0 0 1.756303155e-10 9.028854307e-10 0 0 0 0 33.08055516 0 4.344884804 0 0 0 6.778991114e-14 0 0 0 0.005604321979 0 1.713040025e-12 0 0 0 1.540201914 0 1.063763496e-06 1.99666916e-14 2.13375683e-10 4.85696794 4487.542675 189.5514118 0 467820.5094 0 0 0 0 0 1.103922016e-14 0 0 167574.1663 5.314133491e-07 0 69176.02392 4.492154386e-05 0 0 1.264200247e-11 0.000761471534 0 1.222061935e-05 4.450707759e-29 0.005156305495 354274.3585 6.973216346e-07 0 101.6568201 43733.36344 0 0 0 2.856393554e-18 0 2.674749856e-23 0 0 0 0.004793385761 11.2588802 4.308328473e-12 0 0 1.236718165 5.602152772e-12 368713.9689 0 0 0 7.24423361e-07 0 0 0 0 0 51.33572523 0 0 0 7.939339206e-11 0 0 0 0 9.022496843e-11 6.235159975e-13 0 0 0 0 8.252191552e-12 0 0 0.001846764188 0 447394.233 0 0 3.70793477e-12 0 0 2.813761463e-06 0 0.007517451851 7.089365593e-11 0 0 6.620174535e-29 1.4371955e-06 3.737643173e-09 2.882718613e-12 0 2.241887327e-05 0 0 1.614089342e-13 0 0 0.004959152061 4.547872258e-13 0 0.8968780064 351079.2462 0.0003126616762 0.0001756430421 1.791859793 0 4.865241696e-05 0 0 3.157628538e-09 0 0 0 0 0 0 0 0.003066036739 0 0 0 0 0 31.0737639 0 0 0 0 0 4.389170956e-08 0 0.02320086381 0 0 0 0 0 0 0 0 0 6.788137822 0 0 0 +0 0 0 0 0 0 0 0 0 648.861999 2.824984709e-08 0 0.0004485437369 0 0 1.937563037e-43 0 0 1.297295962e-23 0 1.772844724e-08 0 0 4.714509702e-09 0 0 1.101501503e-21 0 0 0.0001647150981 5.132047346e-17 4.883569513e-10 0 0 0 5.287939875e-19 0 1.300871106e-05 0 0 0 0 0.0001765506988 3.363677858e-16 0 0 0 1.565317611e-14 0 0 0 0 0.0006687428229 0 7.097001181e-05 0 1.023240082e-05 0 5.967304763e-06 0 0 0 0 0 9.466088731e-14 0.0004594765005 0 1.003611885e-06 0 0 0.0001810436156 0 5.806175387 0 0 0 0 0 0 0 4.186633055e-10 9.87235387e-28 0 460.6257275 1351549.922 301599.8916 0 1.255353675e-12 0 1.320865662e-08 0 0 0 9.952066071e-08 3.637013067e-36 5.215911501e-07 0 0 43.383711 0 0.02904686229 0 8.915838558e-10 0 3.41642207e-16 1.637846458e-07 64.02387322 0.0002447742406 2171527.004 9.610360403e-10 710217.1425 0 0.0001860846563 0 0 4572918.422 1.645131743e-22 0 0 0 2.89313966e-11 503592.9498 0 0 2.27905177e-06 0.1351784998 37913.56976 0 0.01659297142 5.664182286e-12 0 7.71924152e-10 0 141570.3765 0 1.568830643e-14 0.495719942 0 4.268809288e-15 0.527712565 0 7283.403877 0 0.0008925611925 5.951549265e-14 173362.652 4.785474044e-05 1.999236293e-08 5.177687459e-18 0 0 0 4.34902866e-12 0 0 0.0005349070844 8.063694687e-32 6.465539236e-09 0 1.105765605e-10 0 0 0 3.693094227e-15 0 4.649125521e-11 1.605527218e-14 7.818923627e-09 0 0 0 1.338935763e-12 0 0 0 0 3.235197298e-17 0 0 7.449719426e-06 0.001126686688 1.194661592e-08 1.354311827e-06 0 0 0.06680123375 6.651199834e-16 10.10760943 67.01531015 0 3.875304066 1.259818251e-05 0 0 0 6.322295173 3.212844158e-06 0 0 0 0 0 0 0 4.080066351e-18 1.209719138e-13 0 0 1.064050499e-15 0 0 1.6544594e-09 3.851729252e-13 27124.69167 0 5.168359351e-13 0 0 0 0 0 2.812012757e-40 5.347784566e-12 0 0 0 0 0.1779548469 0 0 0 0 0 5.281941038e-07 0 0 0 0 1.199628138e-07 0 0 0 0 0 0 0 0 8.214112129e-11 8.77445273e-07 0 1.905740718e-17 0 1.298049263e-17 0.0275553982 0.0001756432974 15633.87233 0 0 0 0 0 11.21954161 0 4.298367663e-10 1.092325116e-13 4.736983228e-12 0 0 0 0 0 0 0 0 0 2.007247423e-07 0 0.00452918291 0 0 0 0 0 0 0 0 0 0 0 2.950111798e-19 5.537219358e-09 0 0 0 9.401040967e-13 2.348228966e-15 0 0 0 1.385718768e-07 +0 0 119315.1298 0 0 0 0 0 0 0 0 1.128309383e-10 0 3.39088947e-31 1.067963165e-09 1.101723781e-15 0 0.1798218742 0.01105205 0 0 0 0 0 0 2.048320922e-19 1.255394709e-12 0 0 0.0001672499808 0 0.05428558293 0 0 0 0 0 0 0 3.818836477 9.434971807e-12 0 0 0 0 0 0 15938.00196 0 0 0 5.228233006e-14 0 0 0 0 0 13.03636833 7.993399377e-06 0 406944.1051 0 0 0 0 1.636706168e-07 0.04290479363 0 0 0 7.725202029e-05 0 8.449943422e-05 0 1.706962471e-08 0 0 0 0.0001745847427 2487.637263 0 0 0 0 0 8031.112974 0 3.563583412e-20 0 0 15528.11666 0 8.487904498e-06 1.9245124e-07 0 40.82643554 122346.7997 0 8.153807726e-07 0 0 0 0 0 0 0 0 24538.61424 0 0.02315909409 0 0 0 0 0 1.885784956e-06 6.52344609 1.837924719e-11 3.023688907e-13 0 0 26473.43959 2.984701677e-06 0 2.274823961e-09 782.5835407 1.201999132e-15 0 0 1.463115075e-19 1.994678558e-15 0 8.416505304e-13 0 0 0 9.209352177e-13 0 3.847906984e-05 0 0 933953.327 9.942192867e-07 7.765726487e-13 0 7.581168749e-19 0 1.835569434e-08 2.636780332e-12 0 6.300768883e-16 0 24.31788942 0 0 0 1.509182962e-11 0 0 1.493887204e-15 0 0 1.330682662e-17 0 0.0006079380364 1.018286302e-26 1.592314568e-05 0 0 9.548769234e-23 0 3.081043997e-13 3.093052266e-19 0 0 0 0 2.619320218e-22 0 6.765129848e-12 0 0 0.5399767152 6.388277331e-09 0 0 0 1.17668922e-12 3.477945652e-05 0 0 0.09584793565 0 0 0 0 6.364122305e-11 28614.10741 0 0.7810456416 2.418616906e-18 1.270034558e-15 0 0 1.703738515e-10 0 0.9158292127 0 0 0 0 103.5680101 0 0 2901.689887 0 956673.6587 0 1.97777276e-28 5951560.354 0 0 0 0.0004274089206 4.057254232e-12 1.119408035e-08 0 4.176205776e-21 0 0 0 0 2.716022839 0 0 1.294740427e-22 0 0 0 0 0 0 0 0 0 3.237212575e-05 0 0 1980960.589 0 0 0 0 6.346026093e-11 0 0 0 0 0 0 3.163354509e-08 1033.44078 7.862026809e-05 9.088512962 0 0 1215.176064 0 5.702231874e-12 0 0 0 0 151.401181 1107038.002 0 0 8.171648856e-17 0 0 0 2.525501229e-13 3.11751211e-09 3.567881197e-05 0 0 0 0 0 0 0.1576759473 0 0 0 5.203995595e-11 0 0 0 0 401200.4138 +0 0 0 3.16416743e-13 0 0 0 6788631.268 2.042260841e-09 0 0 0 0.002324377355 1.043230883e-05 0 0 0 5.372576802e-07 0 0 0 26955.25812 0 0 0 0 0 0 5.729608595e-07 0 0 0 1.064819731e-06 0 7.798174996e-08 1.417413933e-06 1.044592874e-14 4.529725031e-35 6.753529643e-13 0 0 0 0 3.822583261e-10 0 0 0 0 3.433757631e-14 0 0 0 0 0 3.443867319e-05 0 0 2765.410051 1.484970648e-12 2.481981686e-10 0 0 0 0 3.647615644e-24 6.446931663e-09 0 0.001834685299 0 0 7.729162318e-10 0 0 0 0 4.840845167e-28 0 0 2.614560333e-07 0 0 0 5013.007163 8.351190435e-13 3.541101348e-07 1.054966297e-09 1.008809111e-05 7.428492358e-13 6.413412117e-11 0 0 5.514166302e-30 8.171777494e-20 0 0 0.007436970006 0 0 0 0 308604.2585 0.0004745668454 0 0 8.669339726e-12 0 6.775502603e-09 0 0 0.002476567126 6.094585622e-31 7.56161595e-06 0 1.744816346e-07 0 0 2.799164565e-09 0 6.408715211e-19 1.061051404e-21 478.9265272 0.001101467322 0 158.7758345 4.253524648e-11 25789.2182 0 1785579.202 15.96582612 0 326131.1469 7.693600218e-08 0 0.0002641398187 0 0 0 0 0 1.014902102e-05 1201711.556 1.003015776e-08 0 0 0 26.56552848 0 0.0002250778598 2.922189102 6.220802038e-10 0 0.008614516481 3442.828713 0 3.062279056e-05 3.563158996e-13 0 1.296207242e-12 706.2172781 0 4.432911283e-25 0 6.042607214e-14 0 0 821.246328 1014.297094 205.0167804 1624362.591 0 7.084476817e-23 328373.1071 0 0.0002223402903 0.04747735716 0 11.52413161 0 0 60.43586199 0 0.04582127083 0 1.752000818e-16 55322.59041 0 0 0 5.854604965e-06 0 0 0 0 0.0002112825471 0 0 0 0 0.05007466323 0 134697.9676 0 0 0 0 28608.49262 0 514852.8175 3.701720806e-08 0 0 0 0 0 0 1.789861622e-12 0 404078.1327 0 0 0 0 0 95.97098649 0 200.8652199 0 2035678.366 0 0 0 0 1.848889492e-06 1.322834271e-10 1.51535249 0 0 0 1.431480842e-09 0 0 0 0 0 0 0 0 0 0 9.414346016e-05 0 0 0 0 0 0 0 3.089176639e-20 0.5465130542 0 43681.25475 0 0 0 0 0 0 0 0 0 0 0 111552.3813 0 0 0 544471.19 0 0 0 2887411.248 0 0 11086.70835 1.831469521e-22 0 0 0 0 0 4.566476401e-09 0 0 0 0 99.84990475 3.259253536e-05 1.428493977e-27 0 0 +0 0 0 0 0 0 0 0 0 4.945561212e-06 0 0 9.308987568e-08 0 3.65558446e-19 33.44444854 0 0 0 0 0 4.604833439e-19 0 0 0 0 0 0 0 4.718834996e-10 0 2.787375797e-31 0 0 2.978038093e-07 0.0005507757388 0 0 0 5.722587323e-08 0 0 0 1.784831007e-11 0 0 5.53713208e-06 0 0 0 3.796136083e-06 3283.632131 10190.87376 1.623374707e-26 1.805150673e-29 0 0 0.04630531389 416635.5384 0 0 4.284381564e-20 0 0 0.1610075497 0 0 2.713146729e-25 0 0 4.813517193 121512.752 0 168.4512675 0 0 0 5.558786779e-08 0 764116.7368 838660.1809 167352.5629 6.037692283e-17 0 0 0 0 0 0 3.466696248e-07 7.499068462e-05 1.330318294e-05 0 435740.2253 4.177332967e-23 0 2.915413016e-07 0 0.0001222594668 0 0.0001116084781 3.719112184e-10 0.0001768170362 5.523014068e-19 51838.76963 3.820969241e-07 0 1.283529088e-12 6.432521315e-09 9.195171904e-19 0 0 0 0 8.583796399e-09 5575.100727 0 8.116804818e-12 0 5.475470697e-16 0 0 7.288583031e-06 8.946821277e-28 1145.781148 0 0 0 0 2.862447259e-06 0 0.002871880346 2.58439225 7.71452877e-22 0 0 0 0 0 0 0 79.35949464 0 1.963585469 0 2975948.626 0 282831.5044 1932071.75 3796200.719 3.686173147e-12 0.01172035263 1576.047014 0 8.98967585e-06 0 228.2282451 0.006260395271 0.03847466437 0 217785.7076 0 0 676513.2883 1.923246661e-06 0 1111056.093 0 0 0 0 0 1.05733575e-13 5.134694261 0 2839.987988 0 0 0 0 0 6.126251036e-10 0.0001280946764 1.120414797e-13 2.05220497e-20 0 0 0 1.080902757e-13 213.6497512 0 0 0 0 1.138935891e-16 0 2.188207357e-17 1.2843354e-15 1.165638496e-09 0 0 0.05324725586 6.976352593e-23 0 5.485853956e-17 0 0 3.166305305e-09 2.038447658e-05 129015.4736 0 4.841177874 1.098663194e-08 0 4.024531024e-05 0 0 0 0 4.254598737e-09 4.137017212e-14 0 2.842555383e-07 465.0039896 0 0 0 0 0 0 0 0 0 0 0.4197277364 0 6.847744546e-28 0 0 129.9614907 9.14491227e-05 0 0 2.861607315e-07 2.136519658e-05 0 0 0 0 0 0 0 0 0.007597044214 0 4.912314343e-37 0.4827823632 0 0 0 0 0 0 0 0 0 0 9.288470611e-09 0 0 0 0 0 1798.72944 1.021651923e-11 50.48508373 3.086929778e-19 0 77808.67407 0 0 2.591038233e-06 0 0 0 0 202525.7054 2.298616968e-10 0 0 0 0 0 0 0 0 0 0 3383.398466 0 +0 0 0 0 1.033928216e-27 1.417994085e-07 0 0 0 0 0 0 0 0 0 0.003726416113 0 4.520509103e-29 0.07300165058 0 0 0 7.724700064e-07 0 0 0 6194.530545 0 0 0 0.005036826556 0 0 188064.2355 0 0 7.107723064e-10 0 3.032357115e-19 0 0.4033843123 0 121111.5764 0 0 0 115611.5888 1.507371213e-23 0.05235717829 0 0 6.045582664e-13 0 0 0 0 14676.97315 0 0 0 0 0 0 0 0 0 0 0 0 14338.39977 0 0 0 0 2.301188022e-06 0 0 0 0 0 0 3.637182492e-17 4.533969099e-17 0 19.02686436 0 4.594755533e-06 1.733778748e-12 1.262683504e-09 0 10215.52448 0 0 0 0 0 0 0 3.639063409e-08 0 5.578318456e-10 671.9759128 894073.5638 1.356689305e-09 0 0 0 0 5.082784913e-28 0.004903661446 0.154874552 0 0 7.554614539e-14 0 3.643997577e-13 1.709887716e-05 1.649881884e-05 4.750028759e-08 55.43718145 0 1.205027722e-11 0 0 314337.6358 0.1239038218 0 0.008185122436 0 0 0 5.617328402e-05 0.0001508661352 0 0 9414743.869 0 0 0 9.151479992e-16 4080.728593 0 6.800037219e-12 0 5.671392939e-17 0 5.024531744e-07 0 0 0 1.869459698e-12 0 0 8.209890326e-18 0 2.527850086e-11 0 0.4444806178 0 0.0007964104465 0.00143464436 267225.4377 0 0 0 1.813087516e-08 0.01136510743 2.040654594e-13 0 0 4.729719433e-21 0 0 2.399220869e-12 8.762757837e-45 0 3.608391628e-17 0 1.111606573e-07 8.942525493e-14 4.826049844e-12 0 0 0 1.925710564e-14 0 0 7.539025534e-08 0 0 2125444.787 0 462884.1249 1.951160412e-07 23.90746469 4.019251284e-07 1.708556142e-05 0 0 0 8.325791277e-07 5.150864657e-12 0.001328626021 0 8.685466793e-06 396925.1826 0.03553617758 0.0003621611326 0 2.406577722e-05 6.399761078e-20 8012.808629 0 0.001556275554 7.377024483e-10 315246.5718 0 0 4.637290771e-10 0 143.1345583 8.05326918e-11 0 222805.6687 0 4.600423818 1.802607974e-12 0 0 639501.3188 0 0 0 0 5.209658003e-10 0 4.288175971e-06 5.657899855e-22 9.592968751e-14 0 0 0 0 0 5.277057369e-14 19.34981855 381393.6646 0 0 0 0.0004931933383 0 9.537705778e-18 3.524116029e-10 0 1.538070159e-18 0 0 0 0 0 0 0 0 1.964159797e-10 0 2.719033901e-09 0 0 0 7.627887684 314942.0577 7.557945865e-20 0 0 0 0 0 0 0 0 0 0 0 0 900177.1381 0 0 0 0 0 0 0 7.810175433e-09 0 0 0 0 0 428867.1654 +0 0 0.0009098030778 1.201635997e-06 0 0 0 0 0 0 0 0 0 3.296904286e-24 0 0 0 0.1086996753 0 0 2.636332869 1.997140368e-08 0 0.0006332695015 0 0 207681.5881 0 0 7.867681932e-29 0 0 0 1.432603986e-28 9.429811961e-17 0 0 315405.3271 0 3.794401033e-33 3.117317811e-12 13.45827797 0 7.586649276e-13 0 250346.148 0 4.815894491e-12 7.662640092e-14 1.349559037e-16 1.845307985e-18 2.784713317e-13 1.029167896e-11 0 0 24288.34099 0.09962059117 1.348532876e-09 0 0 63134.56802 6.310821007e-17 0 0 0 3.158800689e-28 295.3215014 0 0 0 0 13912.20348 163170.7617 3.128483796e-05 2.809830406e-07 0 0 0 0 0 1.537593542 0 0 0 0 0 0 950.2226729 0 0 0 0 0 0 38465.2686 32.15923055 0 7.643026442e-19 0 3.887790118 0.0004310074163 6345.955598 0 0 2.617543553e-11 3.833858972e-13 0 0 0 0 6.079935483e-13 1491.107992 191.7885761 8143.062643 0 0.1101421722 0 0 0.3234704156 0 785.8873588 38.53015389 366514.7808 0 0 6.401597349e-15 0.05383858975 0 2.186650609e-18 0 0 0 0.1726836815 0 0 0 0 1.069355691e-18 5.218482209e-09 0 3.877744678e-17 0 9.015060792e-06 0 0 0 14.0326343 4.560266815e-14 0.0003522700759 0 1.532232973 0 0 0 0 0.346653356 0 4272.025674 0 1.526907554e-15 0 0 0 0.106687197 0 0 0 1.81332315e-14 0 0.02924381635 0 2.17844655e-18 0 0 0 0 0 0 0 0 0 0.02532719445 0 0 0 0 2644.905381 3.431167244 0 0.1023268059 0 6.462792553e-05 0 0 0.9478123037 0 0.004629801314 7.252659873e-12 0 0 0 1.216030157e-15 0 39.68543917 3.218582635e-10 3.244197633e-05 1.069901065e-07 1.293326389e-05 4.396393279e-10 0 8.495993181e-14 0 3.229051238e-12 5.843075276e-17 0 0 1.037135007e-07 0.0005368933969 0 0 0 0 0 0 10440.53654 0 0 0.005835137535 0 0 0 9.209500139e-09 7.210981179 0 0 173375.75 0 0 0 1.606497113e-09 0 0 0 0 0 0 0 0 0.000252787096 4.751477014e-16 0 0 0 0 8.05048572e-31 0 0 0 0 0 0 4.606787023e-18 0 0 0 0 6.581398698e-08 0 0 0.001757232508 0 0.0001074246253 0 0 0 0 0 4.979470024e-08 9.060874462 0 0 0 0 0 4.506726717e-18 0 0 5.215487507e-09 3.120859799e-26 73708.6855 0 0.0001229805518 0 87096.96421 0 0 0 4.172344614e-08 0 0 +1.181675686e-11 0 0 0 0.000322361413 2.390199141e-14 2.34016441e-30 0.3305662186 0 0.0003059073507 0 0 0 0 2.542100658e-15 250.0667949 0 0 0 0 0 0 0.5452577357 1.455139465e-09 0 7.0969458e-11 19.08535864 3.309262349e-09 0 0 0 0 0 20638.39284 0 0 1.690691315e-10 0 0 0.32479449 0 108.7864679 8.144584889 0 3.188004174e-11 9.41310832e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00690710664 0 0 0 0 0 0 0 102.4210202 0.0009534826394 0 0 0 3.317642964e-11 0 0 0 1.787751988e-11 0 0 6.514584299e-05 0 1.314157045e-07 485.2276371 37128.33609 0 0 0 0 0 2.233459524e-22 1.351367449e-20 0.03332000279 0 2.359215751e-08 0 0 0 0 0 1.692843131e-09 0 4.324520059e-17 0 2114506.943 0 0 0 5.117726085e-10 1.656768916e-18 0 0 0 0 0 2.554145705e-11 4.906985955e-12 1.220289526e-17 0.02597549915 0 0 1134.00743 0 0 0 0 12125.45383 5817.388474 0 3.960865612e-12 1.928052202e-13 0 1006532.898 1.011794049e-09 367.7853868 0 0 0 42576.66908 0 7.595245227e-31 0 4.316167841 1.798363163e-15 4747.23164 1.627284337e-09 1.141573592e-10 314.8409755 0 0 0 0 1.713207882e-19 1346.642481 0.1302925372 0.009760825845 0.8128378377 0 0 0 0 0 0 3.21705077e-09 387593.5662 0 0 2.975356792e-08 0 0 3.836195884e-07 0 1.470099956e-14 0 0.2004134445 0 0 2.98546311e-14 0 0 0 0 0 8.575378571e-19 0.003027187437 6.721716589e-12 0 0 0 526890.3921 134054.8547 0.6189433251 0 0 0 2.185824149e-09 5.354050097e-10 0 2.886583514e-19 7147.36108 0 0 3.219459375e-06 0 0 0 0 63.40771399 0 5.432853093e-17 0 0.08644022077 5.983096341e-18 0.0001019864984 1141.023715 0 0 0 0 1246064.481 20930.66377 0 0 0 0 0 724.6944287 1.713407938e-05 0 0 0 0 0 4.392589693 0 0 0 9.872219054e-07 1.538349471e-10 0 1.16302368e-13 0 208140.3565 0 0 0 0 0 0.1609600006 7.599190765e-15 0 8300.990647 0 0 0 0 2.316951535e-08 0 0 0 44923.22398 1.903740611 0 0 13506.67996 3.250070604e-20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.064963135e-19 0 0 1.280466355e-25 0 0 0 0 0 0 0 0 1.115788328e-12 1.079512282e-12 +2.094385886e-14 0 0 0 0 1.004040462e-15 0 5457797.731 0 0 0 9.227969712e-17 21309.01689 0 0 0 0 0 0 0 0 0 1743.833559 0 0 0 0 1.518602016e-11 1.430719245e-09 7.892280977e-15 0 0 0 0 0 0 0.00011485121 0 0 0 0 0 0 4.927461011e-08 0 0 0 1.849179294e-16 0 0 0 1.196499118e-16 140.829905 0 0 4.112898536e-12 1.956337664e-11 1.233739317e-09 1.294011457e-28 0 2.326740242e-08 0 0 0 0 0 8.670502325e-09 0 0 0 2.534423257e-17 1.688829488e-08 0 0 0 3.929026186e-12 0 0 0 277264.8556 886987.7154 0 0 0 0 3112.508856 0 0 0 3718.259392 0 0.01131656051 0 0 0 1.169682997e-24 0 0 0 0 0 0 0.001410344474 0 0 0.005910417115 9.083055085e-18 6.151703323e-08 0 0.6429382451 0.0006858176453 3.235683999e-11 2.622482948e-14 0 0 3.298843912e-24 0 3.683466985e-24 1.136813956e-10 0 0 0 0 0 0 1.689397745e-14 2.867159447e-18 312761.4041 0 6.113049062e-07 6.185259724e-28 0 5.856934163e-23 16673.21197 0 517810.5173 1.247554194e-14 0 5.91863238e-07 7.240815512e-16 0 0 0 0 0 2196881.632 1.697078415e-08 1.111862488e-16 0 0 0 0 0 1.28368451 0 0 0 0 6.93506351e-11 0 0 0 0 1720325.707 0 0 0 4.691499249e-12 0 87.67522019 0 4.144518189e-17 0 2.456952011e-20 0 43.48592157 3.149749409e-11 1.697387327e-06 0 1.821613883e-07 0 0 73933.24074 0 2.369368432e-09 0.000387045837 0.1291730635 0 0 5.100827836 1.499236288e-27 4.160071674 0 0 14478.53781 0 1.08395494e-05 16.8572599 5.572952195e-07 0 0 2.302181195e-05 0 0 6.277329799 374.0545958 0 0 0 31587.59762 0 0 0 1.105130904e-12 1.555305062e-14 0 0 0 7.8126322e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 403629.6846 1.591007214 0 0 0 960249.4759 0 15.03149154 0 8.673855009e-09 0 0 0.1931880897 0 0 0 0 0 0 5.190661235e-19 0 0 1.233009704e-29 0 0 0 2.482657691e-11 1.463843387e-06 0 0 0 7.336776908e-05 0 0 0 0 1.321963307e-18 0 0 0 0 0 0 0 1.891299644e-25 0 0 8.408031373e-25 0 2.675358675e-05 0 0 0 0 3.264963397e-11 0 0 0 0.0007939477642 9.192063318e-10 0 270.1319683 2.158813703e-07 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.870987573e-18 0 9.485113193e-20 1.549497764e-14 0 0 0 0 0 0 2.408931398e-15 9.214841082e-12 8.339556285e-10 0 0 0 0 1130247.165 0 0 30629.15273 0 0 0 0 0 2.516606735e-09 0.1339984954 0 1.783837672e-14 0 0 0 0 0 0 0 0 1.06333687e-10 600801.0939 5.423171293e-05 0 0 0 5.28767488e-15 0 0 9.784496334e-22 1.039822584e-20 2.826290568 0 0 0 0 3872.245862 0 0 0 0 0 0 0 0 5808.435882 0 0 0 3.460281293e-06 0 0 1.662086793e-05 6.398084235e-05 2.810913557e-17 0 0 1.549510077e-17 9.949239411e-13 2378.844254 0 0 0 35487137.98 0 472773.7965 0 1.462678188e-05 6.442329922 7.401495551 0 1.377664491e-06 9.015574231e-05 0 2.057571137e-05 0 0.4508831668 4.511979861e-14 1.745883647 9.519822882e-11 0 0.0001131358368 2.684127314e-21 0 0 1.001090724e-06 1.06616998e-14 3.067863857e-13 4614.77283 88181.83519 6.40846205 0 2.299804888e-15 0 0 0.0007763177603 0 3.361734252e-19 0 61658.08025 0 0 4.137002352e-13 0 7.840815362e-08 0 0.003545585654 0 0 0 0 0 0 0 26651.89991 0 1.569139464e-13 82505.84707 0 0.00335876706 0 0 0 1.166489054e-29 71.70017888 5.894308501e-11 0 0 0 1.028165868e-13 3.613171007e-07 0 0 2.245404927e-07 0 0.0001082235057 0 5.242619164e-05 0 0 0 2.44130574e-05 0 0 436911.9658 58178.40695 0 0 0 0 0 0 4.151422897e-21 0 0 0 0.1796838396 0 0 1.375981528e-09 0 0 3.992941411e-05 1.066843347e-10 0 0 0 0 0 0 2.04109125e-16 0.0008340198124 7111.198316 0 0 0 0 0 6.875557212e-15 0 1.537266451e-17 0 1.350343034e-20 0 0.01518166942 0 5.066018263e-13 6.863221747e-08 0 5.721581226 0 0 6.573023106e-12 0 0 30.97345942 0 0 507512.3986 0 12.30941431 8.081652846e-08 3.722849204e-08 0 0 4.35511952e-06 0 0 0 28.26895392 0 0 4.195296732e-10 0 0 0 0 0 0 0 1.286621188e-08 0 27.01141745 0 0 0 9.507717828e-12 1.367804184e-20 0.06888084361 0 7.231377447e-05 0 0 0 0 0 2.174709861e-11 0 0 0 0 0 0 0 0 0 2037.201265 0 0 0 2445364.922 0 0 0 0 0 51337.94928 0 0.02680816116 0 1.431099401e-07 0 +2.390702953e-11 5.213206462e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 386.6971743 0 0 0.006773681712 0 26.86770824 2.239254954e-08 0 2.918961106e-06 0 4.369533883e-05 0 0 0 0 0 2.401216843e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.46214458e-07 0 0 0 2.043961864e-11 0 0 0 0 3.230961557e-26 0 0 4.416426137e-15 30309.08688 0 0 0 0 0 0 6.851027392e-16 0 0 0 0 8.162099752e-23 0 0 0 0 0.0002896048111 0 0.0614592575 0 0 0 0 0 0 3.246792151e-06 0 0 0 0 0 0 461667.5153 0 0 0 0 0 0 9.394767696e-23 2.8357179e-13 3.436788885e-14 1.852660623e-15 0 0.0005383881441 0 0 1.153949309e-21 3.346439574 0 0 0 0 0 1.093524591e-18 1534067.527 0.03082279418 0.6985664383 0 205.1722971 0.0005382471351 87.42431779 0 0 0 3.513530841e-08 0 752874.4757 0 0 0 0 0 0.0001043003345 0 2.529302147e-11 0 0 0 0 0 0.0001201571973 0.02375202961 2.858268808e-14 1.112894509e-15 0.008199222065 0 0 1560255.989 4.646039578e-15 0 10661.43549 0 2.5331409e-13 0 0.07627411373 0 4.102291484e-07 0 8.609537154e-25 3.82318443e-16 0 0.02445473201 2.324841031e-07 52696.62722 0.2045096477 3.980180621e-39 0 3.954213991e-23 3.872149559e-18 4.236824728e-10 152070.9812 0 2114479.943 2.271604287e-10 1.761979774e-06 50.2276607 0 0 0 0 3.506812889e-08 0.002051872387 0 0.002570703683 1.288904727e-30 0.003483632146 0 0.001047957072 0 0 0.3283787169 1.744548943e-06 3.40540441 0 2.077674088e-11 0 1.419580886e-16 11.49012938 0 0 0 0 2974.293015 1.277201144e-07 0 0 1.627891274e-08 0 9.429332948e-15 37260.28848 1531.342262 0 0 2.119512833e-16 0 0 3.040172773e-23 0 0 547160.1527 9129.155173 0 0 0 5.118760675e-14 6.87930891e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.180119542e-09 0 0 0 0 0 0 0 0.00794173997 4.777151997 15382.93412 0 0 0 0 1.145461857e-27 0 1.438013625e-24 0 2.438723128e-31 1.100618102e-18 0.0007082015481 0 2.064790875e-20 0 0 220.0268635 0 0 3.890437865e-20 0 0 1.285961105e-08 0 0 0 0 0.02750513979 0 0 0 0 0 0 2.078937395e-12 0 0 0 0 0 116.4082846 0 1.322700552e-28 1.936416709e-06 0 0 0 0 +0 0 0 0 2.092452648e-12 0 0 0 2182708.323 1.991860502e-10 0 6.302942859e-16 0 4.527838262e-19 3.136956744e-10 1.514685473e-06 731253.2271 0 6.030661538e-24 0 0 0 0 0 0 2.116941076e-15 0 0 5.590906656e-10 1.235231392e-24 0 0 0.0002566236342 0 0 0 0 0 0 1488591.358 0 0 0 0 0 0 0 4.12886159e-10 0 0 0 8.410042609e-14 7.722097981e-18 0 0 2.231817269e-06 2.147099798e-08 3.060591936e-17 0 0 0.002168188737 4688.925498 0 0 0 0 0.5273888323 3.33195265e-06 7.239364854e-14 2.718904105e-22 0 0 0 0 0 1.643859327e-22 0 0 0 741311.183 0 0 2.634222899e-06 7.81131368e-18 3116.993422 3.982874918e-13 0 1.168545459e-11 0 0.003196195421 1147246.466 0 0 0 84.83613411 0 1333.813435 0.7314772889 0 0 0 0 0 0 0 0 0 0 13484.29565 0 0.0001466976306 0 0.006271548695 0 0 0 0 0 0 0 0 2.705366661e-08 0 119063.9574 2509.805977 0 0 0 2.397941171 0 9.353782541e-10 0 2.334234199 0 1.364662827e-16 0 0 0 0 275.2828568 1.420500936e-14 0 0 0 0 8801.78769 0 2.948736927e-14 3.545912188e-05 3.871548855 4.259064274 9.671730807e-14 18233.20778 2.443419218e-12 0 0 0 4.43195003e-15 0 65362.49628 1.470074634e-10 7.03299348e-10 4.018742495e-16 5.010975857e-11 0 2.898845283e-20 0 2631.057115 0 0 0.1029252567 0 2.727207697e-08 2.238103722e-06 0 0 0 0 2.353385963e-22 4.216824158 0 0 0.3635606445 0.04189227066 0.8288305282 0 5.530425241e-10 6.715990978e-15 0 0 0 1.084418689e-10 0 0 0 0 0 0 1.278606082e-07 4.590304634e-12 0 0.0003435567631 5.719040708e-14 0 0 0 0 38538.30719 0 0 1.241004749e-07 4.235330871e-06 3.622687756e-08 0.03889952827 0 0 0 0 0 1.315464041e-12 0 0 0 0 0 4.898292894e-14 0 0 0 0 2.757356121e-14 2256.430752 0 0 0 1.685167029e-05 0 0 0 1.143532697e-15 0 0 4.490982943e-24 0 7.66638068 0 0 0 0 0 0 0 0 0 0 0 0 2.999763564e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.701760671e-05 0 0 1.826490332e-07 0 1.08835408e-24 0 0 0 0 0 0 0 0 1.363155925e-08 9.937534738e-28 0 0 0 0 5.921218846e-08 0 0 0 0 1795.891984 0 +0 1.696831375e-22 0 0 0 0 0 262501.9057 0 0 0 0 0 0 0 0.003959509755 0 0 0 0 0 0 0 2.400007353e-05 5.219900999e-13 1.344913777e-17 0 0 0 5.38955277e-15 4893.14771 0 23.45224398 2.207638339e-32 2.606139808e-22 0 0 1.801125687e-27 0 0 0 0 9.376225468e-11 329524.9346 0 0 0 0 14460.2291 2.760060331e-23 0 48862.74526 0 0 0 0 0 0.0001858412471 0 0 0 0 0 0 0 0 0 0 5.395728881e-08 1.490838474e-18 0 0 0 0 0.07776231079 2.078217004 5096.863666 0 0 364.942632 0 2.112872536e-10 0 2.259778343e-09 0 0 0 0 0 0 0 0 2.010772734e-20 0.1605798501 0.1896950082 0 9.117479842e-11 0 0 0.6685448426 38.15441741 35754.85835 9.067511294e-18 1.607758748e-12 0 835.1993949 1.71501277e-05 6.571020179e-08 9.342425567 0 0 0 0.009193226613 1.726813547e-09 1.242609091e-28 0 0 5.006559202e-22 0 5.763861676e-08 1.501843648e-08 4.359064512e-19 0 0 0.006569541473 5.819635238e-10 35.30919307 0 88777.2646 0 1.180948312 0 4.102060409e-24 3517.884809 0 4.397258068e-06 679.3754527 0 0 0 0 0 0.005305088948 1.1194261e-17 4.35413956e-06 0 0 0 0 0.1619201243 0 1.537390312e-11 1.819745871e-06 2.806102449e-14 0 0 0 0 7.062763281e-09 3.438161037e-06 1133.932144 2.539989867e-09 0 0 4.017061477e-17 0 2.735985311 1.216139257e-10 0 0 2.041975838e-07 0 7.158193181e-05 9.243570429e-13 0 6.731386432e-11 0 3.005982119e-06 0 0 0 0 2.398082806 0 0 0 0 0 0.01589096974 0.001376095939 4.482500623e-09 0 18158.41324 1.62100806e-17 0 437641.4591 0 243154.549 0 0 0 1327.737439 2.705201892e-27 362.0891771 0 4.945180972e-19 0 0 250.0523644 0 0 0 0 0 0 0 0 0 4.467971009e-08 0 0 1.828311721e-16 0 0 0 0 5.985953591e-36 7.422814593 1.758889495e-05 8027.61235 0 0.01740383694 0.4560647082 2.034407115e-17 0 19.56922908 0 0 0 0 0 0 1908699.172 0 2.260739553e-09 0.001442011179 0 0 0 0.3392185928 2.041937131e-14 0 0 0 7.591843559e-07 1.204595407e-06 0 0 4.935721534e-14 0 0 0 0 0 0 4102.488092 0 3.691405507e-10 1.81944887e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.161418993e-06 0 0 5.665986235e-14 0 580.2649532 0 0 0 2.421125426e-15 0 0 0 0 0 1843151.295 1.318290871e-14 +0 0 0 0 0 0 0 0 0 0 1.817730324e-16 1.282059273e-05 0 0 420.9303909 9.539727248e-05 0 0 0 0 2.433445208e-12 0 0 0 0 4.516215173e-12 0 0 0 3.309378037e-05 0 0 0 0 0 0 0 0 0 0 0 0 9.700167869e-38 0 0 0 358233.9507 0 36777.12897 0 0 0 0 4.20323781e-19 2.219856197e-07 0 2.563171644e-06 0 7.215579962e-12 0 0 0 0 0.001170231248 1.734942817e-11 1154.962354 0 1.971691898e-05 0 2627.124036 0 1.940979346e-13 0 773.9895427 0 0 0 0 0 0 3.939320246e-08 0 0 2.358507373e-15 0 0 0 4.422314503e-10 0 2.651914717e-06 2.527313085e-10 151.7362154 0.1848164655 0 0 1153006.453 1.012123578e-06 3.211438871e-07 1.674532485e-05 2.000683715e-11 0 0.0001472546923 0 0 0 0 9.448361035e-25 3.102069134e-07 0 0 0 5.892637663e-06 0 0 0 0 0 0.01508716575 0 1.264660288e-15 0 0.3373530201 3.537673647e-06 1139542.283 0 0 0 1.201705498e-17 2.143932385e-14 541.821869 0 3.479431908e-09 0 633.718269 7.118379509e-05 0 1735.815532 0 0.06346259981 0 0 0 0.4880010395 7.86670371e-07 0 1.391507346e-22 0 0 7.111705813e-10 0 0 0 0 57.0913946 0 0 0 0 0 0 0 0 0 0 2.86505702e-19 0 0 1.96999042e-27 0 0 0 0 0 1.965158e-07 0 0 6.249267106e-05 0 0 0.3436164887 0 0 0 5.010820056e-08 4.665314758e-07 0 0 0 0.0001324343993 0 3355.606086 191.9102289 0 0 0.4094619791 1.770785584e-21 0 975.86617 0 0.0002006781246 0 0 2.433059091e-16 0 0 5.312226462e-12 0 3.023671194e-18 0 5.597676018e-07 1.730155303e-09 26.82453051 0 0 0 0.6813169412 0 0 0 0 0 0 0 3.933643645e-08 0 0 0 0 37.69950426 0 0 0 0 0 1.809265427e-11 0 1.445381148e-12 0 40.5777094 0 0 1.236461323e-08 0 0 4.164542901e-17 0.3914225998 0 0 0 0 187790.9456 0 0 0 0 0 0 0 0 0 511623.5286 0 3.244412963e-10 0 0 0 0 0 0 0 0 0 8.056483414e-05 0 0 0 0 0 0 0 0 0 0 0 0 3529.629352 2.106771408e-07 0 0 0 0 0 0 0 0 1.366591049e-14 0 0 0 0 +0 0 0.004389424553 0 0 63.53114373 0 0 9292.761332 1.437673428e-21 0 0 2.076331472e-14 0 156610.3622 0 0 0 0 0.001799548958 0 0 0 0 0 1.917408803e-13 0 2.780445349e-14 0 23.47716408 7.159378777e-09 2.401057341e-11 0 0 0 147.6834726 101162.2417 0 0 0.0613849312 1.010560465 0 0 0 0 0 0 0 0 8.395504272e-21 8.696152562e-17 0 0 0 0 2.591418661e-14 0 0 0 1.573850378e-15 0 0 1.37946802e-13 1.610286148e-05 0 0 0 0 0 0 0 30511.26725 0 5.548642505e-15 1.098823074 0 0 0 2.28576143e-24 5.662256121e-07 0 0 0 0.0009877043465 9061.516645 0.0004605893306 2.937687236e-11 0 1.526313562e-28 5.561612719e-05 0 132475.4447 0 0 0 0 0 979.8939061 8.168916509e-07 0.001967024901 152.7058128 0.0004270085066 5.581516568e-27 0.0006563761517 0.003275626879 0 1.646299604e-07 0 0 0 1.477635771e-11 0 2.465917503e-13 5.951757483e-20 0 0 0 0 0 1265319.153 2.183449195e-23 0 0 0.1331402825 0 0 0.000619413675 0 1.556722276e-10 0 0 0 0 2.824946393e-05 0 3.855976587e-21 663446.9398 152.7436016 0 0 0 0 146870.5693 0 25.74884233 2.398294641e-12 0 0 1.590740389e-12 1.578195899e-07 0 0.0001699709973 1.121138113e-06 0 0 2.329849431e-05 0 0 8.346350991e-09 2803.306505 8.831313667e-11 1.191593006e-14 4.666015168e-15 0 19559.96922 2.654660959 2.705987027e-05 0 0 0 3.293782936e-10 0 6.644170669e-07 0 306.6169644 0 0 0 0 79273.78289 5929.973629 0 0 0 1.645484913e-13 0 0 0 8.719114738e-09 0 0 0 0 3.489805986e-18 3564.485951 0 853690.599 614118.7214 0 0 6.477116213 0 3.226386842e-12 0 0 2.481011116e-27 0 9.305708224e-06 0 0 0 0 0 0 0 7.35228258 36.94659225 0 0 0 0.0002617771232 0 5.92701923e-09 0 0 1.567871051e-18 0 0 0 0 0 0 0 0 0 8.570707552e-14 0 0 6.471946478e-12 5.356069178e-35 0 0 0 9.358376841e-05 52680.27406 0 0 0 0 0 0 2277.680529 0 0 37917.52297 0 2.069194925e-11 0 0.004208238313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.294815332e-27 0 0 0 206621.401 1.326717077e-12 0 0 0 0 0 8.208221786e-12 0 0 0 0 0 9963.557246 0 0 1.551264394e-24 1.158386249e-13 0 0 0 4.539695932e-15 +0 3.273116967e-10 2.83919528e-08 0 528.3423667 0 0 3.105777081e-15 0 0 5.239179723e-19 0 0 0 0 3.720603596e-12 3.762358258e-28 0 3.310311194e-06 0 0 5.791567271e-05 0 0 0 1.35404295e-25 0 3.70256582e-16 0 0 0 0 0.003909181964 0.0003225624578 0 0 3.518420964e-08 3.750138992e-26 0 0 0 0 5.259374124e-10 0 0 3.970588506 0.0006019406834 0 1023603.221 7.187592654e-09 0 0 0 0 0 0 8.036713477e-24 0 0 0.3115300506 2.414390466e-05 1.29616284e-06 0 0 4.93377671e-15 0 0 0 2.046396884e-09 0 503.089618 0.0002081836521 0 0 0 0 1.136549218e-09 6.751538929e-10 0 0 0.001682488524 0 1.19891384e-16 2.968859785e-12 0.0006675837119 0.002670016168 0 0 0 5.807389412e-11 2.200233181e-21 0 0 0 0 7.448137453e-12 116.7258388 0 0 0 0.001298262423 0 0 0 1849.635314 0 2.385947043e-08 0 2.373723813e-13 0.04564741905 0 0 119785.2121 0 285.2610186 0 0.002024324358 0 0 3.947090045e-11 0 3076833.922 128.745908 0 1.571587498e-24 2.396573554e-25 0.000818467823 0 0 1.603200692e-28 0 0.3390770598 0 0 0 0 0 0 0 0 0.01657109755 8.41000931e-26 1.289607529e-12 2680.930871 0 186473.1447 61861.79867 0 0 0 3.004159339e-07 30.85481389 2.906046156e-13 1130.681619 0 3.496061804e-15 13631.35252 29.57141204 0 6.695350591e-05 0.01564824393 0 0 0 0 0 0.01510382977 0 0 13601.04767 1.65333485e-13 3.551646996e-10 2.842320464e-28 1.50657986e-12 0 0 676165.4099 0 5.155533451e-11 0 0.01735265161 0 1209.819731 0 3.546411588e-24 0.0003440651818 0 0.0003315548633 0 0 5.132649938e-22 0 0 0 0 0 1.198276681e-15 3.63230965e-05 0 0 0 0 3.698926306e-10 0 0 5.837372012e-24 3.201562565e-06 9.459192467e-20 788.5707696 0 0 0 0 0 4494.853568 0.04541396595 4.428632956e-15 0 1.414696616e-14 0 0 0 3.813041319e-18 0 0 0 915570.9896 0.0001054993802 0 0.1137668459 0 0 0 0 0.9422294702 0 0 8.830377798e-16 0 0 0 0 1.361020396e-15 0 0 0 0 1.533885819e-14 1.892985291 0 7.223310088e-13 0 0 5.909959413e-25 0 0 0 0 353.5114778 0 0 1.164500204e-08 0 0 0.01466104001 0 0 0 2.737368834e-09 18.39988181 4.469227586e-09 13047.64679 0 6.831315093e-26 3.183177887 0 1.532354062e-14 0 0 0 0 0 0 6.507843086e-07 0 0 3.130984919e-13 0 0 0 0 0 0.0009816562871 0 0 0 0 183293.7773 0 0 +0 8.849904252e-05 0 0 1.656977928e-08 0 0 0 0 0 0 0 0 1.037763399e-12 0 0 0 0 0 0 1.983093961e-10 0 0 0 3.549331454e-14 0 0 0 0 0 0 1.925352466e-20 0 0 2.6588308e-06 0 0 1981315.031 8.48427043e-05 0 0 0 0 0 0 0 0 0 0 0 0 3.123210516e-09 0.06264496327 1.276258395e-24 0 1244.298853 1.307522231e-10 0 0.6033307743 0 0 1.358376033e-30 0 0 0 0 0 2.693118523e-08 0 3.490897668e-13 0 3.320865861e-12 0 0 0 0 0 0 0 0 0 0 44875.27358 0 0 4.48882779e-17 6.724518021e-11 8.385846416e-20 0 0 0 0 0 0 1.269543342e-16 0 58.1122494 351641.1393 0 5.897500938e-11 0 0 14.08298824 0 0 3985781.152 1.689635676e-05 27958.63298 0 0 0 0 0 0 279119.691 0 0 7.701474827e-23 1.046781002e-27 0 1.066327872e-13 0 2.736608195e-08 51260.06315 5.705541505e-11 1.378566704e-21 0 5.277893122e-05 0 0 8.579562279e-15 4.322064282e-22 0 0.01482290904 3.583532413e-09 0 3.984117053e-05 0 1.430695528e-23 0 0 7.629821957e-13 0.03362092188 0 1.531977517e-18 0 3.341055111e-11 1.396734135e-17 0 0 0 0 2.945877888e-13 2.792221123e-10 2.198211439e-10 0 1.065804568e-12 0 8.898367959 2.80144344 0 0 0 0 8.844727709e-26 8.564433677e-29 0.0009246631487 2.83337656e-09 5.859099318 0 3.327772912e-12 0 0 4.853557721e-31 0.0127467294 0 0 5433.553271 0 539.9043146 0 0 1.278762962e-16 0 0 0.001108033272 2.666009307e-15 0 0 4.152510436e-06 1.173466324 7.533396054e-08 2.097612097e-11 20836.8174 1.773365669e-17 0.0003615051855 161570.187 0 0 5.2422891e-10 2.252287822e-10 0 0 1.041703701e-30 1.098297332e-22 0 811.1580282 0 0 0 0 0 2346.533137 339578.8643 0 0 0 0 0 0 0 0 7.302789522e-09 5.231052377e-13 2.87613484e-11 0.0003006902922 7.883341038e-13 0 0 0 0 53929.00183 1.442333766e-26 2.866890543e-08 0 0 0 204255.2029 2.232900683e-26 0 0 1778.561301 0 0 5.080768057e-06 0 0 0 0 0 0.5126217433 0 0 37376.0113 0 4.048398264e-07 0 6.368030472e-12 0 0 0 0 3.158731181e-28 0 0 1633.933202 0 0 0 2.58888499e-05 8.70584756e-09 0 0.0009915101314 0 0 1.280941107 0 0 0 0 0 0 0 0 0 0 0 6.80723053e-05 0 0 0 0 3.694158451e-07 0 2.816369825e-18 0 0 0 0 120923.6582 +0 0 0 3.074608902 0 9.547756309e-31 0 0 0 0 0 0 0 0 3518.368098 0 0 0.001379719049 0 0 0 0 0 0 2.563010959e-25 6.317105596e-09 0 4.455820703e-26 0 0 1.129979044e-09 0 0 0 998.848619 0.002034014194 0 2.886377706e-16 3.691025991e-14 0 0.0008617861149 3.033233499e-13 0 0 0.02528253477 0 0 0 0 0 0 0.02534353374 0 0 0.0002247107483 0 3.534575428e-05 0 0 2.344952514e-09 0 0 0 0 0 1.265586154e-13 0 3.880382698e-11 0 0 0 1.634490283 0.295299335 0 0 2.652535578e-18 4.862898455e-09 34.13108437 2.248588975e-09 356.4960178 0 0 828.8650095 2.78622982e-11 0 7.844618434e-06 8.137225304e-18 0 0 0 0 0 0 0 0 5.393911359e-06 0 0 0 0 0.0007976505935 0 0 0 0 0 34795.19648 5.05158046 0 0 0 5.163025242e-08 9.136972005e-08 9.080736482e-12 2.355660769e-05 0 0 934.7917692 0 0.8043991844 0.4946412176 5.740849734e-28 0 0 0 1.027339766e-20 0 0 1.368985968e-13 0 6.980327296e-10 1.463960542e-30 754.2184791 0 44.46163447 0 6.833011561e-10 0 7.035723328e-13 0 6.977907993e-09 0 549608.2239 2.426017334e-14 3.250888026e-10 3.280310281e-27 0 3.339758166e-23 6.987015478e-10 0 2.57056437e-09 5.162073194e-05 0 0 9.179141863e-10 0 2965.44787 0 0 7465.087447 0 3.738903203e-32 0 0 0 0 0.003190953913 0 0 0 1.407299796e-18 72460.57528 0 4.889551457e-31 0 3.475490855e-22 0 6.572190552 0 0 0 0 0 0.0002412783027 5.641767219e-07 0 502147.3101 4.398023474e-16 0 0 4.781309289e-12 0 1.04309308e-05 0 0 0 1.501737969e-16 0 2.02242817e-12 0 0 4.151280192e-14 1.532828777e-21 0 0 0 0 0 2.196649708e-28 0 0 0 3.950100192e-24 3.069646135e-06 0.0004736037959 1.203129369e-06 955.6300837 0 0 1.264819356e-09 2.083093333e-11 0 0.013356713 0 0 0 2.886098828e-10 2.59760485e-07 0 132117.5814 2.015196092e-14 101352.6377 0 0 0 0 0 0 0 0 0 0 1.260728477e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.724233766e-07 0 0 0 0 0 11560.7303 4.041205358e-05 0 0.0002287217284 0 0 0 0 4.332955061e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.723783017e-15 0 0 7.836281824e-13 0 1.048234393e-11 0 0 0 834420.1237 0 0 0 277.0757069 0 0 2.864946552e-13 3.967496818e-29 9.671762558e-21 0 0 0 0 0 1.303355255 0 0 1.032366842 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.614064119e-37 6267.760422 0 2.560425934e-13 0 2.918017664e-13 0 0 3.46109724e-09 0 0 0 0 0 0 1441.164941 0 0 0 0 0 51252.18312 0 0 9019.238341 0 0 0 0 5.628030292 0 0 0 1.338115712e-06 108.2933481 0 0 0 0.0001278103958 0 0 0 0 8.546307651e-23 0 3.643632195e-05 0 135.2750792 0 4.785439102e-07 0 0 0 0 0.01681753152 2.296051774e-05 11961.92917 0 6.025854367e-09 1.370210634e-16 88.73688147 9.964895675e-12 5.060916564e-13 171.8096837 9.411115043e-21 61.48367878 0.00204877292 0.003400812962 0 2.288473464 0 3.18076198e-08 1.253343744e-09 0.000822655938 2.960053516e-09 0 0 2.703895725e-10 0.3813980104 8.72265425e-21 0 0.0002276137721 1.868496059e-13 0 388.0607399 0.1055190702 0 9.616664946e-28 0 0 0 0 11093.41912 6.191590722e-12 2.824717436e-23 5.384405115e-09 0.000381612854 0 5.440208603e-07 0 4.304125157e-19 0 0 6.826593381e-06 0 3.912161535e-06 2290922.592 0 5.139338504e-06 772841.5808 0 6766.639311 0 0 0 0 2.196122259e-20 0 0 48654.13903 7.666922859e-25 2.712988888e-20 0 0 0 0 0 375775.0817 0 0 0 48.32946839 7085155.208 0 0.01174402561 6.346612058e-19 2.231038652e-17 0 0 5.549107738e-15 6.779287705e-21 0 9.41209034e-06 0 158290.4482 0 58.06379796 0 8.624090743e-13 1.760182004 48319.78841 5.472712471e-08 0 0 0 0 1.085305987e-08 48125.9439 0 4.061244508e-08 0 0 0 3.0368083e-26 0 0 0.0001699142808 0 83.70012727 0 0 0 0 7.552526342e-07 73.40048857 3.865056613e-11 0 0 174318.1771 0 0 0 1.943349904 0 0 0 0 0 0 1.930833901 0 0 0 0 0 0 0 0 0 0 2970426.101 2.097318727e-06 0 0 0 0 7.861081112e-17 0 0 0 0 0 0 0 0 0 0 0.0009993228178 0 0 0 2.670842374e-11 7.234468045e-06 2.039358579e-07 9.469276765e-12 0 0.002904050382 0 0 0 0 2.540273019e-11 0 0 0 5.186988448e-12 5.530201178e-23 0 10595.22686 9835.990505 0 0 0 2.78506954e-23 2.137830051e-07 0 0 0 8.546102701e-12 0 1.559775346e-08 7.701495814e-13 0 0 +0 0 6.237005744e-05 0 0 0 0 2.121210273e-20 44647.45759 1.685184746e-15 2.07216441e-14 0 0 0 0 5.071471694e-05 0.0001293849173 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.397006882e-26 1.350341669e-14 0 0 0 0 0 0 0 0 0 0 0 369537.0982 0.009217674171 4.55555661e-26 4.516799943e-06 0 0 0 0 0 1.588782912e-21 0 0 3.143695143e-13 9.935649823e-13 0 5.67261422e-22 0 5.437707311e-20 0.131483512 0 8.227488141e-33 7.22059236e-11 1.542888277e-21 0 2.34293523e-09 4.225354932e-13 0 0 0 2.468540789e-12 8.953840596e-09 0 0 9.904995585e-16 0 8.309762623e-24 0 0 1.983890957e-16 0 0.0006145944864 1.688616877e-37 0 0 0 361124.5054 0 4.753072857e-14 4.466381852e-19 0.04728872202 1.240943757e-07 0 5.5140544e-07 0 5.887001372e-09 2.076226853e-16 0 0 0 0.07342981336 1.464279565e-12 4.854218755e-10 1.626252394e-30 0 0 160.8434867 2237644.983 0 0 4.673012377e-22 0 0 0 0.1949234675 2.197780029e-12 0 1.081807886e-08 0.01383845848 0 0 2.707830626e-13 5.322590263e-06 0 0 1.455217987e-12 0 2.425813158e-18 0 0 0 49.22099558 0 0.2890754498 3.918600389e-08 0 0 0 2.654322132e-06 1.093914874e-06 0 0 0 0 0 45012.16085 0 3.183384333e-09 0 0 4.65060419e-18 0 7.089219086 0 3.336620371e-10 0 3.758314523e-05 0 3.873910909e-26 1.900756085e-18 0 0 3.086954628e-18 0.005857297128 0 0 1.169789824e-17 1.147168886e-13 0 1037.151583 99405.07201 709990.7473 3.525717712e-14 1.308960252e-06 4.511499718e-08 6022.040654 0 0 0 0 0 3.500863477e-10 0 16027.06783 0 1.275619136e-15 0 1.284968398e-10 0.004042808263 4.498688104e-13 25.92912727 0 0.3333525466 0 0 0 0 1.279091961e-17 3.559947541e-24 0 0 0 17397.68945 0 0 1.363184706e-09 0 0 3.961411126e-09 0 6.583244398e-06 0 0 0 0.008507506019 0 0.003213777643 0 0 0.0003077720641 0 0 0 0 0 7.774519415e-10 0 0 0 0 0 0 1.286835978e-10 0.02042620038 0 0 0 271264.0804 0 0 0 0 0 0 0 6.131916803e-08 3.262139754e-15 0 0 0.0007532896263 2.150814748e-09 0.1352329987 11.61088766 0 0 0 3.282628114e-06 0 0 0 112037.0793 0 0.002503476442 4.433011188e-08 0 0 0 0 0 0 0 0 0 0.002352551041 0 0 0 0 0 0 0 0 0 0 3.294025114e-12 0 0 0 0 0 0 2.04709559e-27 1.086199087e-07 3.178754459e-08 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 9.946057036e-27 0 0 0 9.315202072e-13 0 0 0 0 0 0.0107207238 0 0 4.460498742e-08 0 0 0 578180.5783 3.724538927e-16 0 8.607779317e-06 0 0 0 0 0 1.526507227e-09 0 0 0 0 0 0 5.981269099e-11 3.999644113e-15 0 0 0 0 5.857997638e-09 0 0 0 1.143309227e-10 0 0 0 286411.3843 0 0 0 0 0 0 0 576.4211318 0 0 4.392057961e-11 5.2559088e-14 0 0 0 0 0.2220318713 2.818435767e-24 0.0003526938035 0 3.584837093 0 2.606007034e-07 0 6.96856205e-10 2.080352245e-12 7.182108039e-05 0 3.236380706 0 0.0005557786135 1.20229151e-07 7.999122703e-24 9.17559761e-16 6.730558049e-11 0 1.198006878e-06 0 0 0 0 0 0 2.860703479e-11 6.444910581e-15 2948632.345 39597.74139 0.0004673583999 0 0 0 0 156.6795684 0 3.784529861e-11 1.339993237e-14 4536.454769 0 6.681745032e-05 0 0.001759917436 0.1087180709 0 0.01617245457 0 9.934505414 0 2.620888565e-19 0 0 0 1.031360363e-17 5.633404416e-06 1.384120443e-05 35.15152643 0 0.007185928933 0 0.06238969385 2.896717948e-15 0 0 0 0 1.828950944e-12 0.01525721627 0 0 0 11224.34951 1.130999712e-07 0 7.482914325e-06 0 0 2.044797211e-12 158.0737805 1.149386349e-13 0 0 3.208290738e-25 0 1.610660434e-07 0.002537553548 1.470868031e-19 0 3.511638297e-05 0 0 1.440210447e-08 0 0 0 0.07846561058 0 0 0 0 4.394494496e-13 0 0 0 0 0 1.169849757e-12 0 0 8.514804983e-09 0 3.044766092e-05 2.627943342e-11 5.465903822e-07 0 0 0.3051913453 0 0.007448505286 4.743842131e-14 0 0.005908161186 0 4.458326873e-21 0 0 0 0 16606.65961 0 10689.18613 2.191058213e-17 2.056527131e-13 3.245330841e-14 0 4.023912946e-06 155.3485526 2.399873173 0 0 0.002287806619 1.110132905e-09 784992.592 0 1.752959269e-13 7.362044473e-06 0 0 9.384112618e-08 0 0 0 2.325177124e-05 0 0 0 2.418382249e-07 0 2.524683292e-05 0 0 2.461079178e-19 0 0 0 0 3.998283696e-11 0 3.771720731e-08 0 1.426499334e-18 0 0 2.344743455e-09 1.370565052e-08 0 0 0 0 2.072768114e-08 0 0.000126332941 0 8.59990017e-13 0 1.578565928e-10 1.977096291e-13 0 15.12520261 0 0 0 0 59499.02346 0 634130.9926 0 3.930630653e-05 0 0 1.580221201e-12 9.179197132e-25 0 0 0 0 0 0 0 0 1.357839994e-19 2.562730441e-14 0 0 0 104000.3864 0 0 0 0 0 +0 0 0 1478.117012 0 0 0 0 0 283.9669275 1255.198053 3.236107514e-14 0 0 7.005177873e-34 0 0 0 0 0 0 0 4.703969791e-10 0 16.06776199 0 0 0 0 0 4.015398092e-14 0 0.134738396 0 0 0 0 0 0 4.454958831e-14 2.819779825e-12 0 0 0 0 0 0 0 96.33615571 5.814464204e-18 0 0 0 0 0 0 0 0 0 7.165586794e-16 0 0 0 5.950164401e-25 3.115584486e-06 0 0 0 1.100161487e-12 0 0 2.450742394e-23 0 1.063823703e-05 0 0 0 82263.31779 0 0 8.524185004e-16 0 0 0 0.0004124294777 0 0 0 0.6544309307 0 0 2.867254243e-06 0 6.638505066e-15 3.199695797e-13 0 0 0 0 0 0 1.420218264e-22 0 0 0 6.467691365e-15 0 5.884209293e-06 0 0.07877089869 0 0 71599.32594 0.09422807743 0 3.627640432e-18 3.563008867e-09 0 1.849838612e-28 0 4322.193249 1.341759558e-07 1.798206192e-15 1.240409988e-05 7.215035751 0 8.994244921e-15 0 0 0 0 0 0.0003917094404 0.0001756487179 0.07821652532 0 6.370902208e-11 4.691006609e-11 2.67000404e-21 0 0 0 2.161664637e-08 0 0 0 3.533115835e-05 719876.9334 0 0 0 0 0 0 0 0 0 0 1.334007565e-10 0 155561.1722 7.150450906e-10 0 3.410681618e-19 4630.006094 1463.430921 2.396533742e-32 0 0 0 0 523272.7774 4.522620424e-20 1.003424059e-06 0 0 0 0.03032185877 1.095087195e-14 7.047786244e-08 0 0 563753.0381 6.839073638e-05 0 19305.40041 5.319005665e-14 1.228052884e-13 1.442563845e-21 0 0.02032190638 0 0 0 2.673499557e-09 0 7.447797844 0 0 0 0 2.309651761e-13 0 0 1.298476709e-16 4.287813608e-18 3.520852118e-12 0 0 1.315272825e-06 0 0 0 0.0003780474236 1.838064342e-26 1740.141671 4.121687051e-10 0 0 447.1503552 0 0 0 4.662315686e-28 1101836.962 0 1.783872285e-13 0 1.007800903e-09 0 2.556318409e-28 0 4.33405758e-22 0 0 0 0 0 0 0 0 0 0 5.649555547e-25 0 0 1.136601123e-18 567181.6555 0 0 0 0 0 0 0 21189.01204 0 0 0 0 0 0 0 5.200387053e-15 0 0 0 0 6.544119526e-06 2.289053091e-18 0 4.702007722e-06 0 0 0 883726.3348 0.006655968727 0 0 0 0 0 0 0 0 0 0 0 1.970807949e-06 8.887977765e-05 0 5.183160968e-15 0 448.2171025 8466.934133 0 0.03979801477 0 1.270176352e-26 0 +0 0 0 0 0 3.803945462e-12 164977.5171 1.353014017e-18 0 0 0 0 0 0 0 0 0 0 0 0 207.4362914 0 0 0 2.444625785e-25 0 0 9.803244279e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.354689611e-37 0 0 863.9017325 0 0 0 0 0 0 0 0 0 0 0 0 1.883807285e-12 0 5.083799842e-12 0 0 0 3.457362806e-15 1338.573094 1.278605171 0 0 1909.751682 0 0 2.832371509 20.89057947 0 0 0 0 3088.262051 1.31034245e-05 7.0692371e-18 105779.0013 1.459336039e-05 0 1.867586567e-21 0 4.938664055e-17 0.001633233697 2.39840342e-18 0 0 7.725334623e-15 3.257840087e-15 0 2.588573479e-15 0 0 3.407638878e-17 0 0 0 0 1.152908214e-27 1.618257896e-05 201.2516545 1.465021956e-14 0 1.80269912e-14 3.704353884e-06 0 1.124693156e-11 0.02736214723 0 2.334916496e-23 0.0002006127695 1.656675216e-08 0 3.864499152e-26 0.0006324319484 0 0 0 0 0 0 94778.47165 284141.6043 8000.885552 0 0 778516.199 9.446486596e-07 5.022039964e-18 5.754871593e-19 0 1.733706035e-36 0 8.841930967e-12 1.383579402e-07 1.043201146e-13 7.877159506e-23 3.930746389 0 1.255691383e-28 180085.1183 0 1.877851615e-18 1.622885664e-06 0 0 0 1.137714566e-08 0 0 0 0 0 0 0.004367703329 3.947685737e-20 522820.1115 0 0 0 0 0 4.61470593e-23 0 2.228069178e-06 7.622397711e-13 0.1816208781 0 1.027647296e-24 0 23229.2976 9.190903884e-09 0 3.428686888e-20 0 5225499.805 0 0 0 151.1410204 0 0 1824160.498 0 0 0 0 9.054518289e-11 0 920.3074891 0.0003703101655 0 0.0005898001646 0.005614105878 98.6819347 2.542591706e-05 0.002268338432 2149.020487 0 0 0 0 0 1.244975248e-17 0 0 0 9.193340261e-12 2638486.259 3.736347662e-28 0 0 0 5.22204017e-16 8.981804425e-34 1.81821564e-06 0 0 3.100825885e-10 0.008542086911 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.8297651305 0 45581.76503 1.045616641e-20 0 0 0 2.246501446e-14 0 1172.794288 0 0 0 0 0 1.32524283e-25 0 0 0 0 0 0 0 0 0 0 3.099271402e-33 0 0 0 0 0 1.451140169e-25 0 0 0 0 0 0 1.432177894e-20 1.035573031e-22 0 0.0001500654087 0 518211.202 0 3.946536587e-07 0 0 0 0 0.2851639098 0 0 0 360552.5106 0 0 1.300749407e-10 0 +9.40577021e-05 14.00761651 0 0 0 0 0 0 0 0.06806951801 0 0 0 0 3.717217884 0.005328720041 0 1.952250896e-12 0 0 0 0 0.002998455198 0 0 0 0 0 4.900942391e-08 0 878861.6142 0 0 0 7.511646997e-23 1.068915566e-17 0 0 0 32.25745558 0 0 2.966303593e-15 0 0 245.3036952 0 0 443.8129681 0 0 1.69765986e-10 6617.908975 3.40839658 0 8.762082e-12 0 0 0 2.569539589e-05 0 0 2.041472029e-31 0 0 0 7.386212406e-13 0 0 0 0 0 5.385130645e-10 0 0 0 7.008767916e-16 1.517862098e-27 4.193074936e-06 1.48969608e-28 0 0 0 3.040311526e-13 7.224865107e-34 0.1344759611 1.126997996e-09 0 175.1951231 1.178605669e-05 5.303008423e-06 0 9.876448455e-08 0 3.26534385e-06 6.9049612e-13 0 1.608655399e-05 0 0 0 7.350117721e-12 3.238404014e-23 0 0.0002585430852 0 0 4.213082905e-17 0 0 0 0 0 0 8.532649905e-09 1.024769917e-11 0 190.0198759 1.516736981e-06 0 0 2.556573616e-07 2.529107568e-10 0.08426857089 0 0 6.433955863e-49 0.0311032064 0 6.999293408e-06 0 4.572502264e-10 4.652903278e-05 0 0 0 0.8094922222 0 0 0 1.322443946e-13 0 0 0 0 7.113114054e-13 0 0 0 3.29365179e-10 0.002978857245 0 2.923694028e-28 1.68630835e-40 0 6.722945349e-10 3.05868705e-09 1.129826088e-06 0 0.01328664229 0 0 3.788371697 0 3.814230136e-07 0 280.8961034 3.191184076e-08 0 0 0 0 1.950994681e-09 0 0 5.566536549e-10 0 0 186.0463928 0 5.835257287e-15 0 6.614785649e-22 6.627025229e-11 2.804911845e-12 0 0 3.209634574e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 3.658101056e-09 0 186901.8297 0 0 0 35.88725065 0 0 0 0 1.998606027e-25 0 0 0 0 0.01251243058 0 0 0 8.93111019e-37 8.151663054e-10 0 0 0 0 0 0 20.95854213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.681171273e-22 3.241470906e-14 0 0 0 0 0 3.95124692e-12 0 0 0 0 0 0 0 0 0 0 0 0 3.087735563e-30 0 2.00809868e-06 1.334602834e-17 0 3.321674193e-14 0 0 1.519606747e-09 0 0 4.969550136e-06 0 2699.579408 0 0 0 0 4.195172447e-12 0 0 3.731343529 0 0 0.02933659084 0 0 9.094200795e-19 0 4.945587772e-15 0 0 0 +0 0 0 0 0 1.250096526e-22 0 0 7.655218733e-10 0 0 281695.2111 0 0 0 0 6.06277297e-08 7.706942665 0 0 0 0 0 2.136819626e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 2.138234079e-24 0 5.058579613e-14 0 0 8539.689738 0 0 0 3.536547896e-13 0 0 0 0 5.777750913e-06 0 1.011748802e-14 0 0 8017.31623 4.578613969e-08 0 0 2.131015501e-20 0 0 0 2.786917315e-18 0 0 0 0 1.816154703e-19 0 1.175720632 0 21.5933598 0 4.083136191e-07 1464889.28 2.038251811e-11 0 0 0 0 4.773820732e-30 7.702393697e-17 0 72.97599526 9.934430901e-17 0 0 1.104478762e-15 0 0 102932.737 0 0 0.0239562875 0 0 0 0 0 0.01110996021 1.342404431e-06 8.121102676e-24 0 4.274663086e-16 6.223973958e-13 0 552473.1042 183.6303863 0 0 0 751110.058 0 1928393.81 199107.279 0 0 0 1221368.176 799.5405722 0 10.89171035 0 0 0 0 0 0 0 0.009226845135 1.6295331e-20 1.602830724e-24 0 9.041903705e-11 0.7877868008 0 0 0 7.24965645e-13 0 7.346335975e-07 0 0 21965.6255 0 6.535820608e-33 1.641237609e-12 0 4.758807019e-07 0 5351.974842 0 0 3.775658938 0 0 0 2.027804054e-11 0 0 0 0.5799166293 0 0 9.673634394e-13 0 0 0 0 0 2.098743136e-29 1.951477509e-05 2.28961052e-10 0 0.03776517312 0.5094316494 0 0.008855089407 0 0 4.754838413e-19 0 0 0 971215.4705 3.020486458e-13 0 0 0 1.642411151e-13 0 0 0 0 0 0 9.678256468 1.650053636e-16 0 1.740910345e-07 9.674288913e-27 0 0 0.008075283969 8.959080238e-05 0 2.697372721e-10 475.0392169 3.080752915e-10 0 0 5.57965101e-06 9.264945069e-08 9.891921134e-27 0 1.263820496e-08 0 0 0 2.509483275e-27 256804.6215 5.967270047e-08 6.269283954 0 0 0 0 5.925972513e-12 0 1.715827937e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.65232577e-41 0.0001684869925 0 0 0 0 2292.708168 0 1.816495925e-06 1.056532443e-09 162984.7474 6.258062662e-06 4.966014496e-09 0 0 0 0 8.082368281 0 0 0 8.887314658e-09 0 54692.499 0 0 0 0 103796.4679 0 4402.629234 0 0 0 8041.004659 0 4.735073219e-11 2.065326996e-08 0 0 0 0 3.786814699e-16 0 3.498936568e-16 0 0 0 0 0 860.487208 0 0 0 +0 0 3.968520801e-24 0 0 0 0 0 0 0 0 0 4.395933856e-11 601140.6567 6.927392889 0 0 0 0 0 0 3.369724588e-13 0 0 0 0 0 0 8.489910698e-09 0 1.005074423e-05 9.867388681e-13 4.05921754e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.780549231e-20 0 0 0 0 0 0 1.436085379e-05 3.075313104e-12 7.053512808e-07 0 199.2912808 0 0 0 0 1.44670156e-06 3.005121444 0 0 0 0 0 6.101692148e-15 1.086379919e-07 0.008297071518 1.057791499e-05 0 0 0 0 0 0 0 0.1985724662 0 0 20.04153155 0 222432.8408 8.701182705e-27 0.0012889908 0.7086250537 0.01494009193 0 0 0 0 4.016305273e-17 0.2943797765 7.968616595e-07 4.591479633e-06 0 1.628692904e-14 1.966967141e-05 1101743.592 5421882.862 0 1.782458888e-09 0.2792764884 0 0 0 954.211286 29.32889016 1.474980106e-19 0 0 0 48539.92097 0 2.132173017e-36 3.477069777e-10 1.457917292e-17 0 0.0007427324746 0 3.269705221e-09 0 3.376887222e-13 0 0 4.402270805e-15 0 2.821869073e-18 1.724414037e-08 0 0 4.967313193 0 2.547384663e-08 0 1272.205448 0 1.709059406e-26 3.738370117e-05 4.982746755e-08 0 0 0 4.956927223e-18 0 2.070969839e-16 1.586804734e-23 0 0 3.079612728e-12 0 2.821931429e-20 0 0 10006.59303 1.958015323e-10 0 0 1.177058127e-14 1.184666507e-09 295948.5293 0 1.135506765e-15 0 0.001211788064 0 0 1.914950631e-07 4.433794656e-13 0 0.002002981205 1.885211204e-06 0 0 0 0 684769.2459 0 0 1.376620467e-09 1.484066426e-09 1.046122976e-10 6.405234796e-10 0 0 4.992114884e-06 0 0 0.009852103897 0 0.0002086342247 0 0.06228583049 3.877222726e-06 0 1.535568366e-16 0 0 1.10618135e-22 3.915160424e-10 0 1.058334596e-08 0 0 0 0 6.098410043e-13 0 0 0 0 121908.6886 9.58982752e-11 0 0 0 5.132426312e-28 0 0.05512699571 4.809977799e-07 0 1.335852588e-05 2.522392694e-14 0 0 0.2581111074 0 0 0 0 0 1.635466937e-22 0 0 4.783257365e-25 5.107588493e-21 5.536770222e-10 0 0 0 7.377545772e-12 0 0 0 0 0 299580.1573 2.591287577e-16 0 0.1188968202 0 0 0 0 1.896517008e-20 0 0 0 0 0 0 0 0 0.1045815404 0 0 0 0 2.487228419e-18 0 0 0 0 0 0 0 705.4316982 0 0 0 1.655475562e-31 0 0 0 0 0 0 0 0 0.0393183274 5.470253306e-09 +0 0 0 0 0 0 7.145423027e-24 0 0 2524446.889 0 0 0 0 0 0 0 0 0 0 0 0 5.265839837e-10 0 0 3.116698389e-12 0 1.128452105e-30 0 1.041855453e-16 0 0 0 0 0 0 0 0 0 0 5.976395269 0 0 2.712222714e-14 8.8367847e-13 0 0 0 0 0 0 0 0 11499.24039 0.09929331389 0 0 0 1.658554904e-27 0 0 0 0 0 5.159921087e-14 0 0 8.230368064 0 95.06686512 0 0.0009491802739 0 0 0 0 0 0.0009590433478 0 0 5.824326089e-07 0 1.128935511e-14 0 0 3.897467375e-12 0 0 0 2424.980656 0 0 0 0 0 1.002956056e-07 0 0 0 4.643739201e-19 0 0 0 1.901032381e-11 0 0 0 0 4.91909622e-16 1.658430655e-20 1.887048709e-14 0 0 0 6.625232387e-10 0 0 0 5.206357142e-05 0 0 0 9360.897952 5.873894708 0 4.000403608 0.01946737459 0 62.64349804 472.6643863 0 2.409857391e-14 1.598875313 2.438310606 0 0 0 0 0 0 0 8.600286777e-12 0 1.012005598e-12 2.593933158e-30 0 0 0 0 0.08257839073 0.0003528777066 0 2.070921822e-09 1.703429985 1.866759235e-29 0 0 0 3.481510674e-28 0 0 0 1.536029486e-22 0.0001131004974 0 0 0 0 0 1.97196882e-16 9.833854607e-13 0.04006236901 0 0 0 0 4.756654782e-09 0 8.571199701e-06 0.001889027069 9.699129424e-23 0 2.918997058e-11 3.79884201e-06 0 0 0 0 0.01358482852 5707.249791 0 0 0 0 0 1.004599662e-09 1.496141414e-11 0 2.04996981e-09 1.117901809e-30 9334.817522 0 0 0 0 9.085743213e-07 0 1.699759696e-12 0 0 6.050331001e-05 0 8.888702869e-14 0 0 0 0 0 0 0 0 0 0 0 9.950340713e-05 5.053495619e-15 0 0 0 0 400426.6675 0 0 0 8.765311975e-14 0 0 0 0 0 0 0 1.394224126e-25 0 0.002833539565 0 0 0 0 0 0 0 0 0 0 0 0 1.273756349e-11 9002.869716 0 0 0 0 1.058467762e-12 0 4.706240303e-16 0 0 0 0 0 2.977320509e-11 0 0 8.36486531e-14 0 0 0 0 4.429432206e-11 53.53578791 0 0 0 0 0 2.654568025e-25 2.064504699e-14 0 0 0 0 0 0 0 0 3.130381492e-26 0 1.953545566e-16 0 +1.37520831e-07 0 0 0 4.299742672e-05 0 0 0 0 0 2.316757501e-07 0 0 0 0 0.2805021717 6646.272886 0 0 1.169238102e-15 4.881289697e-12 0 0 0 2.080191532e-09 6.44673835e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.814502673e-09 8.721067646e-11 0 0 0 0 0 0 9578.644829 0 0 0.001101970695 0 0 3013.962279 0 0 0 0 5.824003082e-14 0 0 3.063470098e-10 0 0 0 0 0 0 0 3.154827477e-12 0.02468203326 2.990181247e-18 0 0.01049369149 2.076818954e-12 51.27066204 8.963573412e-26 1.367979401e-14 0 0 0 0.09712093279 416449.1332 8.250372995e-07 4.721881586e-21 0 0 2.088466519e-14 0 11.89048579 0.4649222178 0 0 0 0 0 9.545295527e-06 0 0 0 0 0.1527971066 3.945785186e-20 0.00320168982 8.107627055e-15 0 0 3.91259148e-08 0.04198157032 9.195599338e-26 1.499102226e-10 1.319178874e-11 0 0 0 1.183722326e-17 7.105430989e-05 0 0 0 0 2.297010525e-10 28642.14536 0 7.482855424e-13 1.132657575e-15 6.430533549e-10 2789.592632 20.05570205 0.8576276416 1.871143088e-13 0 615.8791454 0 0 0 0 0 0.7598472769 0 0 19351.41876 0.7165297716 0 0 0 1433464.68 0 0 1.571947037e-10 2.996722104e-09 0 0 0.03550323527 4.40391377e-08 0 0 0 0 0 8.103262616e-21 2.817410881e-17 0 0 0 0 0 0 2.981438398e-24 0 0 8.114435602e-06 0 3.251436213e-21 0 0 1.258184326e-22 5.20453867e-16 0 6.710941761e-09 0.02667090041 0 0 0.00840594256 179.2586948 21856.7568 0 1.329555258e-23 0 6.592986895e-19 0 0 1.623571135e-26 0.3747021043 0 0 1.591513721e-08 0 0 0 0 3.817539826e-09 2.115061077e-17 0 0 0 1.147497326e-11 0 0 0 0 0 0 0 9.493684897e-10 0 0 2.229156777e-22 0 0 0 0 0 0.0002825002399 5.715098169e-06 9.51136941e-15 169185.2464 0 0 0 0 0 0 1.480845535e-22 0 0 0 0 0 17646.29735 3.688625544e-15 0 0 0 75822.74957 0 595323.4676 0 0 1.488615427e-12 0 0 0 0 0 0 0 0.002459644807 0 0 0 339920.4189 0 0 0 0 0 0 0 0 0 0 0 3.074186707e-27 0 6.951459616e-10 0.0594125105 0 0 0 0 3.892689832e-14 3.47735983e-17 0.0001007630987 2.898433874e-29 0 0 0 1.891173868e-09 0 +0 0 0 0 0 0 0 0 0.9995046585 60.25575283 0 0 0 0 0 0 0 0 0 0 0 460722.9335 0 0 0 0 0 0 0 0 0 136.9857562 0 8.645176152e-09 1.544921021e-07 0 0 0 0 0 0 4.937082039e-11 0 0 0 0 0 1.017788427e-18 0 1.950241695e-11 0.0003058381181 0 0 2.179767228e-16 2261.937155 0 0 0 0 1.740049758e-05 0 0.0009645506589 0 0 0 0 0 2.149398145 0 0 0 1.612591876e-06 0 10010.40162 0 11911.83997 1.006627745e-05 17357.31685 202988.5859 0 0 0.07673110483 12169.74088 0 4.274575911e-08 0 0 0 0 0 9.937381185e-09 98011.69325 0 3.222972696e-10 0 0 0 0 0 0 0 0 1.177638289e-25 0 1.609405847e-11 0 0 38202.8262 0 0 0.0003574531242 3.12844163e-24 0 0 1.148531452e-15 0 0 0 0 0 1.600132886e-08 0 0 1.857588535e-08 7.96034784e-18 0 0 0 117.2967706 0 0 3.954404975e-24 1.157787099e-06 0 0 0.002548111162 2.34587655e-09 0 0 0 1.012849216e-07 1.197393035e-29 0 2.736947608e-11 0 0 4.538370614e-21 0 0 1.145730371e-35 9.627876071e-17 0 7.789329465e-05 3.056557088e-17 0 4.172590353e-13 0 0 0 0 0 0 0 0 0 0 0 0 1.983103246e-16 0 0 0 0 10.21041759 0 0.0006266305181 0 0.06546440719 1.740247558 3.593190852e-16 3.026755312e-14 0 0.0004064635083 0.01686224659 61.45513185 0 0 0 0 0 0.0006633958601 1.06303171e-20 7.997946488e-16 0.001975567189 0 0 0 0 1.355566392e-30 0 0 0 0 0 9.612493215e-27 0 0 1.919814458e-22 0 0 1.514511022e-05 0 3.242285717e-08 0 92741.81614 0 0 0 4.622022729e-17 109.6117787 0 0 0 0 0 0 0 3.206916513e-07 0 0 0 0 0.0006722999615 0 0 0 8253.654679 0 0 0 0 0 0 0 0 582.136985 1.217411883e-20 0 3.665341967e-15 0 0 0 0 0 0 3.596834026e-05 0 0 1.051130123e-20 0 0 0 0 0 0 0 0 0 0.0001045494592 0 0 0 0 675.6490455 0 0 0 0 0 4.559333289e-08 0 215311.5272 0 0 0 0 0 0 3.834735999e-14 0 0 0 1496.781262 3.258858081e-11 0 0 0 2.653545998e-11 0 0 +0 0 0 0 0 0 0 0 0 0 0 33.56466736 0 6.56220281e-26 4.306864631e-14 0 0 0 0 0 0 0 0 0 1.162647643e-07 0 0 0 0 0 0 0 0 0 0 0 0 6.057607839e-11 0 0 0 0 1.219904286e-08 0 2.177631901e-06 0 0 2418.101795 0 0 0 0 6.081494135e-06 0 1.335165491e-28 0 0 0 2.286756131e-07 0 0 0 4728.512172 0 0 0 21009.61719 68.64383695 6.443328456e-12 5.327666506e-12 0 0 0 0.5005096728 200822.612 0 0 0 0 0 13.07267953 0 0 0.004884557111 0 0 0 0 0 0 0 0 161771.0456 8.710099754e-05 1.689635449 0.01140763923 0 99379.13758 3.284995499e-16 2.702659714e-08 0 813406.0028 0 11.56298647 0 0 3.881985241e-14 0 0 0 0 7.143648276e-15 0 0.0001330245521 0 133802.496 0 637168.9219 2300.098427 0 9.024512366e-16 0 0 0 0 7.483897027e-05 5.060121625 6.540791667e-23 672.7917387 0 24582.74698 0 0.0002032710137 8.807865995e-14 0 0 0 6.658992678e-06 7.329418613e-05 0 0 0 0 1.71327376e-16 0 4.513940841e-08 2.693306765e-06 0 0 12240.43581 785.142107 0 0 0 0 1.620517073e-10 0 0 0 0 0 1542735.296 0 269444.7865 0 0 0 0 3.200191943e-07 0 6.479675263e-05 0 0 0 509182.2045 0.1321260719 0 12274.50063 0 0 0 0 168725.9553 1606.163825 4.610299598e-13 105442.2356 0 0 4.960435248e-11 0 0 0 0.3249393479 0 2.634985355e-07 0 2.188371565e-07 38735.83763 0 3.527272506 161717.4963 0 2998.593675 1.176328701e-06 0 0 1.586865059e-19 0 5.514134492e-05 3.737999463e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.040466998e-05 0 0 0 2.007112427 0 1.546772268e-20 0 0 0 0 1.32953842e-09 2.309959281e-22 0 0.0002056186843 170128.2423 0 0 0 0 0 0 1.58412449e-15 0 9.229962425e-10 0 0 0 7.43775357e-15 0 0 0 0 0 0 0 0 0 0 0 0 1.022447472e-06 0 0 0 0 0 0 0 36862.07399 5.04371445e-13 0 0 2.203591755e-10 0 2.348102469e-26 8.830005314e-13 0 0 0 0 0 0 1.426764712e-15 0 0 0 0 0 0 0 0 0 0 0 3.218254839e-26 +0 0 0 0.005689959455 0 0 0 0 2.221488322e-12 0 0 0 0 0 0 139971.7118 0 0 769.7493665 0 8.074899123e-20 0 0 1.638279953e-22 0 1.764722925e-07 0 0 0 0 0 0 0 0 0 0 12359.25271 0 8.041226695e-09 0 0 279041.2435 0.02136505347 0.02579779862 0 0 0 0 0 0 0 8.148521218e-16 7.098858482 0.3721201699 0.0006594237886 158745.6877 0 152695.8278 212.4551262 0 1.14603765e-07 2409.430816 1281.012683 0 0 0 0 20.42326958 0 0 455273.9598 0 0 0 0 0 1.333217149 6.890940722e-19 0 0 0 0 0 0 0 4.233594859e-23 2.51562002e-18 0 0 0 0 0 0 0 0 0 0 5.21419244e-16 0 0 1.261762166e-18 5.031723536e-13 0 0 1.006833753e-07 0.006619939777 0 0 0 0 0 0 0 0 0 1.891138158e-22 8.098660265 0 2.441200071e-16 0 2.135863814e-29 5.171189857e-07 0 0 0 1.883010619e-29 0 2.925851622e-21 420.8955163 3.230351569e-18 0 4.977047776e-14 0 124320.7227 1.066522647e-08 120.0608789 4.229917717e-07 7.579378062 0 0 1.038677773 0 0 0 3.22164496e-05 1.970677854e-11 2.021944673e-18 0 3.299759988e-20 0 5.808478671e-20 0.01184317441 0 0.004112999905 0 1.293665243e-07 7.165787023e-13 5.259418151e-09 2.823078305e-08 0 11.03821014 8.731651448e-09 0 1.248476234e-28 3.161679671e-06 0.0001017028002 0 0 0 1.211681491e-22 0 0.002672979702 0 0 9.541990821e-12 7.204732096e-19 0 0.1490204921 0 0 4.921988858e-17 1.276459574e-30 3.146755146e-13 8.145163942e-06 0 0 1.013907647e-10 0 0 497835.7444 0 3.624568565e-24 0 0 0 2.037203708e-05 0 1.077658357e-12 0 0 5.617255968e-15 2.110177202e-11 0 0 736652.4651 0 0 0 4.543656849e-17 20796.45505 8.454167283e-08 0 0 0.0004670113705 0 0 9.078927299e-11 32.06971346 0 0 0.1320451403 0 0 4.70186047e-12 0 0 0 0 2.063486981e-16 23.16646641 0 0 0 0 0.0001902189356 0 3.537302815e-27 1.122507283e-08 0 2.128281103e-19 0 0 0 2.776412547e-09 0 0 0 0 0 0 0 4.2644161e-10 0 9.689941869e-10 0 0 0 30.34233911 0 0 0 5.134575034e-13 4.032544117e-11 0 0 0 54716.97622 1.044222017e-07 0 0 0 0 0 1.328019822e-08 0 0 0 0 247666.9544 0 5.493874513e-26 0 0 0 0 0 0 670.7007057 0 0 0 0 0 0.6467025599 1.051537477e-11 0 0 0 0 0 +0 0 0 0 0 4.177673889e-22 2.889256257e-09 0 0 0 0 2.131839425e-06 0 0 341798.2847 3.906829875e-06 0 0 0 0 0 0 0 0 7.589091907e-10 0 0 0 0 0 0 1.012137897e-28 1.908669877e-07 9.094042433e-11 0 0 0 0 5.025325391e-14 0 0.030780196 1.002140353e-18 0 0 0 0 1.130919061e-17 0 0.5574237759 0 0 0 0 0 0 0 0 0 0 0.0003807831151 0 0 0.004481947784 204445.2986 0 0 7.089010063e-25 0 0 0 2.254068744e-12 0 0 5.752569132e-19 1.468697479e-11 0 0 0 0 5.221107008e-16 0 0 0 9993.341477 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.31192827e-11 0 0 0 0 0.0006609937014 1.146788869e-13 36.08000436 1.095608495 0 6.813966169e-11 0 6.259978412e-17 6.466520238e-12 0 2.781531778e-23 0.371106206 497.5036916 0 2.764946709e-05 0 3.299593961e-19 0 6.072478161e-17 5.00055205e-20 0.001868699657 1.405124189e-09 0 0 0 0 8.612916308e-12 0 1.509687503e-15 0.05563248192 1.062746798e-08 0 0 19.99839691 0 0 0 2134.159604 0 5881.95794 0 1.085708986e-10 5.296141069e-10 0 2.382909785e-17 6.82795947e-29 1.077573401e-20 0.1945977887 0.00134570242 1.066610955 2.430671104e-06 324.4416165 3.407533913e-27 0 0 0 5.698182593e-07 1.406627417e-05 1.547146318 0 0 0 0 3080.644277 0 1.126888712e-26 3.425783644e-10 0 0 0 1035563.722 0 0 0 254943.9627 0 0 0 0 0 0 23306.34245 0 391916.5877 0.5490480496 0 0 0 0 0 0.01129307097 0 0 2.43868e-16 0 0 0 0 0 82.52005971 0 0 0 0 2.3933651e-14 0 0 0 0 0 0 94.57134745 0 0 0 0 0 0 0 1.105144187e-20 3438700.112 0 0 0 0 0 0 1.031504012e-28 0 0 0 0 0 0.0001542243153 1.428327798e-20 0 0 5.242062193e-14 0 0 0 1.829884366e-05 5.625823847e-15 3.569491915e-07 1.228321329e-08 0 0 0 0 11.52634169 0 3.237541598e-25 0 0 1.361234041e-14 1.576617758e-07 11.41027665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.504558725e-13 0 427.4063461 0 6.198110405e-13 0 0 0 0 0 2.183031054e-05 0 0 0 0 0 0 0 0 0 +0 0 8.878208195e-07 0 0 0 6.655995481e-17 0 1.056822417e-08 0.00273585312 0 0 0 2.139242377e-10 0 0 0 8.03730416e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001161235908 2.225196717e-13 0 0 1.26278584e-05 0 0 0 1558.281255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006568238772 0 6.936645724e-09 0 0 0 0 0.3968169363 0 0 0 0 0 0 0 0 0 283187.1686 6.735665281e-05 4.779125266e-08 0 0 0 4.503441018e-13 7.387849435e-27 0 0 0 7.376964426e-19 4.497571203e-12 14.50752096 0 0 0 0 0 0 4.176768195e-16 23.68992461 0 0.001565724433 0 0 0 1.155536087e-29 0 0 0 2.532214704e-18 0 0 0 3.72067079e-05 1093724.872 6.071820435e-08 3.503798344e-12 0 0.009032173295 109253.553 5017785.519 0 0 0 123.8986728 319719.3927 2302.922447 3.50278177e-10 0 0 1.113222087e-20 2.073377339e-15 6.832150203e-17 1.0349643 0 0 2.532108283e-08 6.094265006e-07 0 0 1.124276538e-14 0 5.013617725e-12 8.228001528e-07 323750.5619 0 4.186687807e-26 0 0 0 100.6322048 38.0599318 0 0 0.2918738691 2.743677845e-14 0 0 0 1.024473294e-15 0 0 0 7814.382474 6.76276794e-19 0 1317.214559 0 0 8.016109058e-17 1.19399126e-39 0 0 4.270589897e-31 59008.84268 1.452917147e-11 15.02125268 0 0 0 0 0 10291.07172 2.660521095e-13 0 0 0 0 918286.7858 0 0 0 0.000935525463 7.822545044e-28 0 1.289868115e-07 0 4.494577681e-10 6.721904151e-17 0 5.041768328e-15 0 0 2.094494234e-06 0 0 9121.106597 0 7.697644525e-09 0 0 2.182721632e-08 9.615173416e-21 4.998899521e-23 0 0 0 0 0 0 0 4.982566784e-22 0 0 0 0 1026.190884 7.038006788e-10 0 0 0 0 0 3.677799114 0 0 5.116804377e-08 0 4.332374915e-26 1.123704577e-27 0 8.074928947e-19 0 0 130.8017197 0 0 0 0 7.061236292e-12 0 0 0 1.371416601e-15 0 0 1.365957763e-07 0 0 9.295864656e-29 0 8.459875771e-19 0 0 7.002957985e-06 0 1.078126909e-17 0 4.282145733e-13 0 0 0 0 0 2.453844667e-27 0 5.198316934e-10 0 7.844428286e-19 4.564116119e-25 0 0 0 0 2795038.928 0 0 0 0 1.41556618e-13 4.135785648e-16 0 0 0 0 0 0 3.205761876e-15 0 +0 0 0 0 2.84639481e-12 0 0 2.139661532e-08 0 0 0 0 0 0 0 3.010612968e-09 0 6.702434781e-09 0 0 0 0 0 1.026260113e-41 0 0 0 0 0 0 0 0 0 0 2.035257641e-12 1.500371826e-20 0 0 0 0 0 0 0 0 2.482270349e-13 0 0 0 0 0 0 3.205164545e-05 0 0 0 0.002913131932 0 24.67582003 1.560942911e-07 0 0 5.566336442e-08 0 0 0 8.33044873e-12 3.080578621e-10 0 0 0 0 0 0 0 2937.999691 0 1788.811794 0 0.0001292667785 0.0304806336 682246.1744 0 0 1.582020499e-11 0.006891090619 0 1.748225453e-08 0 0 223840.1292 0 0.0935871623 0 3.82653279e-11 1.041777592 0 0 19.30327004 90856.86618 1.291777227e-09 0 0 1.199335082e-05 0 335.9901459 4.022528274e-07 0 0 1.181784532e-14 0 3.213112783e-18 1.505177477e-13 3.352495591e-24 0 0 0 3.819521645e-07 1.868867498e-10 0 0 5029.668842 1.983872623e-08 5.208775618e-13 5.410644749e-30 1380088.162 0 0 0 0 0 0 4.341534576e-14 3.891236212e-16 3.694114866e-28 1.471952426e-05 1.578404692e-27 0 3.678841725e-21 205960.6688 8.668014846e-13 0.6381871321 0.002149875974 4.84399792e-12 0 1.864464714e-23 4021.971468 0.001035856834 0 0 0 3.119908147e-12 810554.0182 0 3.759439139e-05 0 4.133921075e-14 0.001612247521 0 0 142312.0681 0 0 2.95390495e-14 0 0 3211516.398 0 0 0 0 7.382619229e-14 0 0 0 0 0 0 0 8.368096117e-08 0 0 3.319712058e-08 0.002855511437 18.34619427 0 2.671833183e-05 0 0.6710992283 0 1.472122049e-08 0 0.5472853938 1.987884559e-23 0 5867.427142 2.200006085e-19 0 0 0 0 0 4.054626989e-11 0 64684.91932 0 0 0 0 1.689610018e-06 0 0 0.0003313288098 0 0 4.13972416e-22 1.137181799e-16 7.738644498 0 0 0 0.0005140765709 0 0 4.546104127e-08 8.081030012e-13 0 0 0 0 82.34926005 5.849672108e-15 0 5.862925968e-07 0 0 6.391823427e-27 0 0 0 0 0 0 0 0 0 0 0 2.916894344e-05 0 0 5.693772296e-10 0 0 0 0 6915.799096 8.914996336e-18 0 0 0 0 0 0 0 2.653589508e-11 0 0 0 0 0 0 0 8.951482107e-19 0 0 0 1.25045934e-17 0 0.01293921213 0 1.233220929e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 5.927891323e-14 0 0 0 0 0 +0 0 0 0 1.133832868e-27 1.910296942e-22 0 0 0 0 0 0 0 0 0 0 11175.96833 0 0 1.059004888e-07 0 0 0 3441.698648 0 1.533727094e-10 0 0 0 0.2003397617 7.573952602 0 0 0 0 0 0 0 0 0 0 7.570439372e-12 0 0 3.393321945e-06 3.283801935e-18 1.942603525e-36 0 0 0 4.400798638e-14 0 0 0 5.897670376e-21 0 0.0008072565227 0.0001075183088 1.995153676e-10 0 0 1.344016583e-29 3.200689505e-23 0.004188590495 855412.7359 9.869701063e-33 0 0 9.677687271e-07 0 0 3.06518947e-09 3.454520301e-07 11190.19211 553.9788068 1.765650631e-15 0 0 0 6.225942659e-15 0 0 0 0 0 0 0 4.739297485e-06 0 5.179937092e-11 0 0 1.436974421e-16 7.803107518e-08 1.076440731e-10 0.003669871592 0 0 0 0 5.097974091e-05 0 3.12340492e-14 0 5.861588441e-13 0 0 5.389223529e-05 0 0 1.92946107e-05 0 30.5184197 0 0 0 0 0 9.101424633 6.120602319e-17 1.633456868e-20 1.668402975e-36 6.284617714e-15 1.190754131e-07 0 0 1.30110995e-05 1.082384424e-20 0 0 0.0002694977878 104370.5854 55227.03123 0 2.286478565e-13 1.951853103e-06 0 0 0 0 0 1.894137384e-08 0 0 1.549874595e-15 0 0 0 0 5.852140831e-14 0 0 462332.9796 0 0 0 0 0 0 0 0 0 0 9.900070252e-06 0 0 76015.8466 0 0 0 2.609679015e-07 6.08630381e-12 0 8.063564291e-14 0 0 3.666225802e-07 1.299019778e-09 0 0 0 1888.894689 0 0 3.448241505e-17 0 0 8.858728738e-14 0 0 0 292.0030519 0 0 3.980882208e-16 0 0 0 0 0 0 4.275372166e-11 3289.056326 0 0 0 2.298918649e-05 0 2.277178817e-06 1.688078087e-09 1.810175803e-16 0 0 0 0 4.051442847e-25 9.290252635e-14 0 2.822692066e-05 2.60337118 0 0 4.07962809e-08 0 0 0 0 1064202.397 0 0 0 0 0 6.404265608e-11 0 0 0 1186.699747 0 2.895451966e-38 0 0 0 0 5.886931867e-27 0 3.196398863e-11 0.01982537162 0 2.482517122e-05 0 0 2.097560806e-28 0 0 0 0 0 0 8.522433428e-15 0 0 0 0 1.043555742e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.69421047e-24 0 0 0 0 0 0 0 3.487645634e-22 0 0 0 0 0 0 1.317373025e-07 4.357794685e-09 +0 0 661.0269032 4.405623616e-09 0 0 0 0 0 0 0.01069210266 0 0 0 9.845125673e-19 0 1.521432874e-09 0 0 0 0 0 0 0 0 0 5.219217132e-08 0 436.6356282 0 0 0 0 0.7169664828 0 9.278858125e-10 1.243838128e-10 0 0 1.477022519e-12 0 0 1.321893155e-10 3466678.407 3.865362314e-11 0 0 0 2.868660549e-14 735679.7332 8402.948501 0.2909620828 2.907377187e-27 32883.53133 0 0 0 120.8742957 2.820791363e-07 0 0 0 218782.2134 0 3.631033069e-22 0 0 0 0 0 0 0 1.344545454e-10 0 3.466018331 2.282688965e-07 0 0 0 0 0 0 0 0 2.529215648e-09 0 0 1.974679454e-16 0 0 0 0 0 0 0 0 21633.07147 0 0 0.0005351730963 0 0 0 3.785924869e-07 0 0 0 0 0 0 5.800147291e-10 0 9.877038083e-14 0 0 0 0 0 0 0 4.453426908e-11 0.001134195404 0 0 0 0 0 5.510856201e-17 0 0.03415840826 0 0.002189543314 7.803286103e-18 0 0 0 6.650283413e-07 0 0 3806.298304 1.598095501e-10 0 0 0 0.0006173148804 0 0 0 1.597834775e-10 1.933618113e-15 0 0 0 1.253450147e-05 69.83918588 0 0 0 818.1164536 0 0 3.835691279 0 3.078459156e-09 1.876089417e-07 0 0 26.41547228 0 0 0 0 0 0 2.932095035e-25 0 7.614949841e-16 0 0 3.213969561e-14 2.027528579e-09 0.05100461934 0 7.70691374e-09 1.941332393e-20 0 0.005636620284 22516.05127 4.187834769e-08 2.739462585e-16 0 9.466064763e-11 0.01550764765 0 4.727562766e-11 0 0 0 0 0 0 1.027638929e-10 0 2.461380014e-13 726.6058086 5.574185345e-20 0.8249452291 0 0 6.331583279e-06 0 0 0 0 0 0 0 0 0 157796.826 0 0 167135.8353 0 3.840789854 0 0 4109.084504 0 0 0 0 0 0 0 2.730764432e-14 0 1043.728639 0 207634.6302 0 0 5.729588835e-05 4.783772809e-21 0 0 1.194010223e-16 37397.94005 0 0 0 0 0 0 301.6918194 0 5.638029561e-25 0 0 7.961013052e-12 0 0 0 0 0 0 0 1.926766088e-13 0 8.623948712e-08 6.213537649e-20 0 0 3.275244106e-07 2.427133318e-07 0 0 0 4.971536555e-19 0 0 0 0 0.01232438559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.006504587619 0 0 0 4.576995172 0 0 0 0 0 0 2.3587818e-16 0 0 0 0 1.815472668e-07 0 0 0 0 0 0 7.742777528e-31 0 0 0 0 0 0 0 0 0 62122.17464 0 0 0 0 0 0 0 0 0 0 0 0 0 1.378319019 3.867021725e-15 1.762984385e-12 0 0 0 4.604723668e-11 3.198983422e-06 0 0 0 0 1.926018403e-05 0 0 0 0.001871760581 3.947682974e-29 0.008386407571 2.830370685e-05 0 0 0 0 0.003842886413 0 0.05274697751 3.762444695e-18 0 0 0 0 1.060608147e-12 0 0 0 0.005171641612 0 0 0 4.431558428e-09 0 9.855305779e-15 0 0 5.046898166e-29 8.442525987 3.053331037e-15 0 0 0.001168590875 0 1.870202612e-18 0 0 3.962420707e-12 0 0 0 0.0218911095 0 1.241740704e-33 3.685016168e-06 0 0 376620.054 0 111039.1064 0 0 0 0 3.661900781e-12 0 2.164044576e-09 3.431461365 2.366325895e-13 1.943081971e-26 0 0 0 0 0 0 268827.2105 0 7.340363935 0 0 1.989471367e-06 0 0 0 0 0 67174.6435 0 0 3144537.71 4.20193474e-13 0 8715.459771 0.03980568111 0 0 0 0 0 0 0 0.2406558424 0 6.861250629e-05 0 0 0 0 6.807951867e-16 0 2520988.315 0 0 0 0.0004010916622 6.263631635e-11 4.212858779e-08 0 0 796346.4181 1.834613103e-16 0 0 0 1.93291311e-19 0 0 0 1.560094556e-24 0 0 0 5.016140821e-19 1.937408596e-12 0 0 0 1.466441215e-34 2.989952374e-21 1.955419626e-11 0 0 6.194673443e-12 433435.2837 0 0 0.0004376061797 2.472011273e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 2.537237739e-17 0 0 9.046563709e-30 0 0 0 7747.938404 0 0 0 0 0 0.06820930444 0.2152325908 0 0 0 0 0 0 0 0 271721.2946 0 0 703480.9374 0 0 0 546478.7368 3.958464924 0 0 0 0 0 0 0 0 0 0 7.533216318e-07 1.265530605e-12 0 0 0 1.752265033e-28 0 0 0 0 0 0 0 0 2.050837183e-17 0 0 0 7.467389302e-27 0 11608.59289 0 0 0 0 0 0.004719887311 0 0 0 0 0 0 0 0 0 0 0 7.780248075e-13 5.607617237e-25 0 +6.877102865e-26 0 0 1.940924062e-27 0 0.003030792186 0 0 0 35.94098766 0 1.976149172e-06 0 1.214196507e-18 272542.8882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.192406585e-07 6.020082534e-13 0 0 3.511608704e-05 0 0 0 0 4.94805628e-13 0 0.0001723039362 0 160488.6693 0 0 0 32.98661355 0 0 0 0 6.319781617e-20 1.010139948e-10 0 3331.460886 0 0 1.972313874e-08 4.949838489e-14 1.505336603e-09 8.244070078e-09 0 0 1.266053288e-10 1.475133557e-08 0 9.38649197e-12 7.253768741e-14 2.317635593e-26 0 4.475615341e-06 2.335136733e-30 1.81308592e-06 0 0 1053905.354 0 0 3.425089889e-25 0 4.157710536e-08 0 0 3.976495438e-29 0 6.6899149e-05 0 2.066929553e-17 0 544702.1148 5.514243092e-18 2.412351803e-18 0 3.459278808e-12 0 0 2.769872533e-07 0.000223740625 0 0 2.183195757e-08 0.0009468059765 41591.59377 0 0 2.1666176e-10 9.192901288e-06 0 1.470005689e-05 0.0009125823103 1.145535579e-09 0 0 0 0 941984.2458 0 1.59495226e-19 0 214.4722239 193785.917 1003.235893 0.0001614530437 0 0 0 2.091961587e-28 0 0 1.50691169 0 0 2.118752646e-06 0 0 3.840197008 0 0 1.039275509e-12 0.02407443614 0 0 0 0 0 0.2053251776 0 0 1.665820528e-13 0 0 0 0 0 0.003301024031 1667117.501 0 939492.6992 0 0 1.361291864e-10 0 4.939336002e-08 6.130993996e-08 2.671303196e-28 8957.995009 0 2189.494734 0 1.091399928e-13 4.555049613e-09 0 0 2.316679893e-25 0 0 0 0 0.03231018179 15294.47035 0 0 0 0 3.055922306e-13 0 0 2.066716734e-08 1.838548549e-08 2.142465537e-16 0 0 0 0 0 0.01562486496 0 0 4.955018921e-14 0 0 2.868890494e-13 3.1852438e-08 0 0 0 0 0 59.24205097 0 3.10328763e-24 0 3.440680215e-43 6348.221997 0 0 0 0 0 0 0 0 0.0001492125508 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34596.99106 0 0 0 0 0 0 0 5.846071572e-10 0 0 0 0 0 0.008105016534 0 0 0 0 5.93987394e-05 1.876795258e-24 0 0 4.379311834e-21 0 0 0 0 0 0 0 0 1.024784207e-28 0 0 0 0 1.011431413 0 0 0 0 0 1.112119521e-07 2.060236534e-20 0 0.0004878597742 2.243268498e-05 0 0 0.03094749064 0 912.3119684 2.635938672e-14 0 0 0 2.579146507e-08 0 0 +0 0 0 0 4.443860408e-12 0 0 0.1723396542 0 0 0 0 96.63834902 0 0 0 0.0005785067605 0 0 0 0 0 5.236977442e-20 0 0 0 0 0 2.914070064e-18 0 0 0 0 0 0 0 2.822766905e-05 3.100989383e-12 0 5.395479678 0 0 0 0 0 0 0 0 0 1.957542278e-07 0 3.339897674e-21 0 0 0 0.001758235494 0 1.906352367e-07 8.094342178e-25 0.06253053685 0 2.784038403e-27 6.489995968e-09 1.180654639e-15 6.691007639e-05 0 0 0 1.452488637e-05 0 0 0 0 3.306962886 0 1.331631228 0 0 3.352776582e-20 0 0.7506143644 5.457953055e-16 0 0 0 1.807012783e-12 23.36503116 0 0 0 0 0 0 0 0 0 1.038510457e-06 0 0 1.128486326e-08 0 5.674052092e-15 2.39411646e-20 0 0 0 2.340662514e-15 8.563158334e-13 0 6.088595552e-38 5.779770517e-12 1.364505972e-09 4.696696396e-05 0 2.090980656e-20 0.9654184478 5.29661944e-14 0 1.895540155 1.268246403 3.818381733e-10 0.005429240374 2.149353677e-05 0 0 195143.7171 1.158171019e-11 0.08460011627 5.332250355e-28 0 0 5.160819531e-17 4.097505236e-08 2.068399282e-15 0 2.166948846e-08 0 0.004894051242 190744.6303 0 237485.4668 2.210119919 0 0.3460608421 0 0 0 3.318135868e-05 0 1028719.057 0 0 0 210.4228619 0 48.95946727 0 1193.293894 0 0 0 2.984337989e-21 0 0 0 0 0 0 9.822745799e-14 0 0 0 0 1.503403654e-16 0.0003359377252 0 0 0.001020365054 0 9.450039932e-07 0.2124255663 0 15605.88696 0 0 0.1637127053 0 0 86670.84479 0 0 2.957854989e-09 69349.1248 1.921106088e-17 1.440179927e-07 0 0 0 0 0 0 0 0.5531739417 7.962713225e-12 0 0 8.650571874e-11 0 1.122335766e-06 9.175953807e-15 0.04992278044 1.743116269e-28 0 2.031064595e-13 0 0 0 2.768184138e-09 7675.401944 0 2.073892629e-20 3.109662806e-12 0 0 0 0 0 0 4.12137829e-20 330.2213935 3.321202247e-26 0 0 0 0 3.54520423e-21 1.106425525e-26 0 1.061769517e-24 0 0 0 0 0 0 0 1.02067235e-24 0 0 4.81130137e-18 0 0 0 0 0 0 0 0 0 0 0.006135848643 0 0 0 0 0 0 0 0 661.9232582 0 0 5.545557785e-08 0 0 0 0 0 0 0 0 0 0 9.923487881e-14 0 1.771258867e-18 0 0 12.08693188 0 0 0 0 0 0 0 0 7.831013128e-05 0 0 +0 9.78976145e-30 0 0 0 0 0 0 0 0 0 315225.3237 0 0 0 0 0 0 0 23.43892279 260159.1364 0.001396588488 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4981243507 0 2.213203307e-05 0 0 0 4.383664028e-05 9.278364289e-08 0 0 64431.44605 0 0 0 4.409973113e-28 0 0 0 2.494622855e-27 1243.934765 0 0 0 3.291096827e-23 0.0006296123608 0 0 0 831.4395738 0 0 0 0 1405336.977 0 0 0 0 0 0 0 0 0 2801.399047 0 0 0 0 0 0 7.754911858e-08 0 0 0 47.49913922 9.296257337e-11 0 0 0 0 0 0 0 0 7.82521826e-14 2.28517073e-15 0 4.120182453e-08 0 0 0 0 3968.333466 2.699956832e-06 2.294570814e-12 44579.78569 0 0 4.795638837e-08 0 0 0.001122297357 0 0 0 0 22.21543716 0 1108.774726 0 0 0 0 0 0 0 1.340724623e-05 0 3.943453691e-10 0 0 0 0 0 7.102485373e-16 105.4051351 0 0 128020.5755 0 0 0 3.847709251e-18 0 0 0 182.4065922 0 0 0 0 241.193017 0 0 0 1.10951565e-15 5.406316936e-07 1.286362876e-08 0 1.768725478e-06 18812.42706 0 0 0 0.0001668140007 0 1.828059176e-18 0 2.238030228e-23 163650.9195 0 0 0 0 0 1.305540457e-23 0.2457776787 0 59894.293 0 0 0 0 4038268.614 0 0 0 0 0 1.395165226e-12 4.088565834 0 0 0 1.73094803e-07 0 0 0 0 1.093101574e-09 3.403871401e-16 9.971272712e-05 6.440896161e-26 1.912555642e-27 7.509135645e-26 1.750321295e-10 1.171941271e-22 0 0 1.217761048e-18 0 7.880228472 0 0 0 1.220374794e-12 0 2.238654189e-29 0.003999201518 0 0 0 73.98600701 0 0 2.034816135e-22 0 2.429970676e-34 0 3.481074566e-09 0 0 0 0 0 1.249353661e-07 0 0 0 0.0230016994 5.385895833e-07 5.030995046e-10 0 0 0 0 0 0 0 8.055303684e-13 0 0 0 0 0 0 0 0 0 1.105687838e-22 0 5.165215718e-23 0 0 0 0 0 0 1.591158719e-08 0 0 0 0 0 0 0 0 0 0 0 0 8.719171558e-09 0 0 0 0 0 0 0 2.407082011e-20 0 0 +0 0 0 0 0 0 0 0 2.487367321e-14 1.337770337e-19 2.156834359e-23 0 3.67278413e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.438278756e-13 0 0 0 0 0 0 0 0 0.000352438977 0 6.05169058e-06 0 0 0 0 5.320455817e-10 0 4.163663519e-21 0.0005038595842 0 0 0 0 0 0 0 0 1.931469685e-06 0 6.529732302e-11 0 0.4942813063 2.26200416e-13 688330.1099 0 0 1.266201809e-07 0 4.1977996e-26 0.0003064002563 4.787059502e-06 0 0 0 0 0.0002310863227 0 2.566714611e-19 1.337631541e-07 0 277.2743169 0 2.318155443e-16 8.85589102e-12 0.001303968173 0 2.220950386 0 0 0 0 0 0 0 462.7206621 6.290853864e-12 0 0 0 0 0 0 0.00149811472 8.796810358e-09 0 0.0002290350249 0 5.751027527e-32 0 0 0 3.040060034e-07 0 0.01280713147 0 0 2.894402644e-17 2.106793452e-15 0 1.286936967e-25 6.78375764e-06 0 0.02842886089 1.494223584e-19 2.243246166e-29 0 0 0.0001685824572 2.782738799e-08 0 0 0 0 0 0 2.23581032e-25 0.3933792889 1.211057192e-31 0 0 7.424327075e-15 5.136612931e-12 2.81129075e-24 0 0 0 0 1.917387376e-22 2.069049529e-12 0 1778.466353 0 0 6.260736764e-19 0 0 0 0 0 0 8.522661926e-09 0 0 0 0 1.80576876e-10 5.156084784e-09 231.6106399 0 0 0 0 0 0 0 0 2016.267014 125.5590804 0 0 0 4.313057827e-16 0 0 0.001839852478 0 0 0.002057935607 2.394377595e-19 0 0 0 10708.41779 0 1.119765365e-07 0 0 0 6.028590806e-27 0 0 0 0 1.57865298 0 0 0 3.777745046e-28 5.482141677e-07 0 0 0 0 0 0 0 0 0 969490.3624 0 0 0 1.777448339e-13 1295565.727 0 0 0 0 4.683369715e-07 0 0 0 0 66721.44614 0 0 0 1.047673456e-19 0 425999.6037 1.490455567e-08 2.671461899e-22 0 140443.1264 2.570573088e-07 0 3.232021138e-12 0 0 0 3.992547552e-05 0.02554146052 8.52979573e-12 0.001039104032 0 0 0 1.804944563e-05 0 0 0 0 4.859635414e-13 0 0 0 0 0 0 0 0 0 0 0 1950549.729 3.961965823e-10 0 0 0 0 0.01036758548 0 0 0 0 0 0 0 0 2044.337878 251.0929653 0 0 778864.7628 0.2896588011 0 0 0 0 4.346954312 0 1.562493932e-05 +0 0 1.16298347e-16 2.614041057e-14 0 0 0 1.506088941e-10 0 0 170452.088 0 0 0 0 0 0 0 0 1.181798282e-13 0 0 0 0 0 0 0.001095678962 3697.271538 0 0.1655801494 0 0 4.137713998e-25 0 6.207258054e-27 0 3.377790677e-14 0 4.281745498e-29 0 1.551929609 4.711782486e-06 8.247336624e-10 1.013198984e-13 0 0 0 0 0 0 4.092717248e-24 0 6.664925978e-06 0.001031474059 9.344026586e-06 0 0 1.176904346e-08 0 0 0 0 0 0 0.2467795864 2.193449051e-10 0 0 0 3.01064564e-18 0 0 4.135919677e-14 0.1232487223 0 0.6196501226 0 0 0 3.385102148e-20 0 7.63850413e-18 0 0 0 0 0 1.74431736e-22 3.662290409e-19 1.390174713e-09 0 0 0 0 0 2.410930908e-06 0 1.646216619e-14 0 0 144.5071866 1.105118761e-19 0 0.01032775827 0 324.6552688 0 1.274846131e-17 0 0 2.294603033e-17 0 0 0 0 0 6.331922213e-22 6.541635872e-29 0 0 5.727833804e-10 0 41462.34129 0 7.459270231e-34 0 0 0 1.013242053e-13 0 0 1.559612254e-06 0 0 3.016778214e-13 0 3.00389235e-25 0 1.487431449e-21 0 0 0 0 0 0 0 3.243519882e-15 1.699439348e-28 0 0.05347391558 7.849257129e-10 0 0 1.882251083e-27 0 0 1.43859319e-11 1.839204202e-05 0 0 5.618719195e-32 6.835165723e-34 296.4055514 0 0 0 0 7.080038359e-26 10.58184267 3.017879634e-12 5.904061768e-17 0 1498.954104 0 0 0 458.6269358 0 0 0 0 0 1.616544192e-10 1059.406206 7.330459719e-13 377.261124 5.322277613e-10 0 0 0 6.443630486e-07 0 0 0 2.36815989e-05 0 0 0 253.2927131 0 0 0 0 0.1893375533 0 1.101072745e-13 0 0.0001701864576 19.11087904 8.64385119e-09 139.2243903 0 0.032515424 0 0 136667.7274 0 0 0 0 0 0 2.346632271e-19 0 0 0 0 0 0 2.736365025e-05 0 6.223376423e-22 0 7.811189875e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3494837.534 0 0 0 0 0 0 0 0 0 0 2.975905709e-20 0 0.01206159457 0 0 0 0 0.002249903522 1.115747084e-09 0 1.525292146 0 0 0 9.485916092e-21 0 0 0 97.00484325 0 0 0 0 0 3.074750245e-24 0 0 0 1.883361088e-09 399.4241613 0 0 0 0 0 8.182416581e-11 1.048960514e-13 +0 0 0 0 0 0 0 0 0 0 0 67623.08391 0 0 0 0 0 4.596278357e-23 10.42792251 5.108951907e-06 0 1.506345817e-09 0 0.0002165204161 4.66155807e-05 0 0 0 6.452523088e-29 629.4538781 0 0 0 0 1.501247933e-18 0 1.312700821 0 0 351364.2138 0 0 0 87.8835914 0 0 7.944080753e-23 0 0 1.382796658e-07 0 0 855229.5679 0 0 0 0 0 0 1.203817637e-15 0 6.174759199e-33 6.806855337 0 73.94819278 923719.4967 0 0 40194.81547 0 3.245101791e-08 0 0 0 0 0 0 0 8211.025886 0.001254036699 0 0 230.0470473 0 0 2.195482297e-15 0 0 0 0 0 1074.660917 0 0 0 0 361.1622668 8.12896856e-07 0 0 0 1.07195961e-29 0.0001651386657 0 2.719978184 0 0 0 1.281768586e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 2.443203478e-10 1.51407048e-07 0 0 3.363836773e-12 0 3.476473226e-08 0 1.198237562e-05 2.542768904 2.337137735e-15 0 0 0 223.0219759 0 0 0 0 1393529.171 7.079497821e-09 0 0 0 0.009128996916 0 0 6.404553352e-15 0 2.798110342e-21 0 1.591301192e-10 16461.25577 2193577.126 2.143069396e-23 6.577713944e-31 0 0 1351166.708 0 2.012875866 0 0 0 0 2.33661047e-18 0 0 0 0 3.150216829e-05 0 2.960790758e-05 0 3.294499908e-19 2.297533322e-21 6.185591004e-07 0 0 0 0 2.934009423 0 0 0 0 1.993243357e-09 0 3358464.026 0 0 2.947729006e-07 1.093895582e-18 0 0 0 9.566793838e-11 0 0 3.094275914e-11 0 218.7806655 0 0 0 0 0 0 0 0 0 1.613735257e-19 0 5.305442257e-14 0 0 0 0 0 0 0 0 1.820971724e-06 0 0 0 1.44283816e-06 0 0 0 0 0 0 0 0 7.854310099e-14 0 0 0 2587.714916 0 0 0 0 2.514605266e-09 132453.6734 238.4378328 0 0 0 0 0 0 7.560653594e-08 0 5.357346922 0 0 0 0 0 5.061735631e-10 0 0 0 0 0 0.0001944971782 0 0 0 0 0 1.26803697e-14 0 0 0 0 0 6.131318288e-15 0 0 0 2.161315853e-17 2.426830228e-06 2.555840834e-13 2.749840711e-07 0 0 0 0 9.193982251 0 0 1663559.603 0 0 0 +0 0 0 4.116966077e-25 0 0 7.588610066e-11 4.635313991e-22 0 9.746106387e-23 0 4.348073339e-24 0 0 0 0 0 0.00216810212 0 0 0 0 5.347812994e-10 16433.45055 0 0 0 0 0 1.769715375e-11 0 0 0 0 0 0 0 0 6.123630337e-14 0 0 0.09423374225 0 0 0 0 0 3.364997021e-07 0 0 6.873611223e-23 9.319434303e-23 0.9495388816 0.001081290034 0 0 0 316087.9296 0 0 7.007819506e-07 0.0008291778471 0 0 10.50818622 0 0 0 1.91658656e-28 0 0 0 1123.980234 2.844426055e-27 0 0 8.296660097 0 5.377360668e-19 11990.40792 0 0 0 2.552989263e-05 0 0 0 6090.835424 0 0 0 1.268384887e-41 5.906364339 1.80083452e-20 1.100957391e-23 12.66003811 0 1.252212411e-07 0 0 0 9.192729916e-10 0 7.619418514e-23 0.02858696274 0 8.270334115e-17 0 0 0 0 1.460765778e-05 0.0001443236406 3.00431051e-28 0 2.447408409e-08 0 0 0 1.653102596e-23 0.01417341901 0 1.015101989e-10 0 1.397182184e-08 1.892183888e-07 0 0 9.043485277e-14 7286.969798 0.1027931147 0 0 0 0 13368.34047 0 6.274882984 0.003135531395 0 0 0 0 0 0 5.737208022e-16 0.0001345741736 1260.650333 3.026234042e-07 0 1.371224511e-22 0 0 0 0 0.2829265231 0 0.1839419796 0 0 0 0 0 0 0 3.879612214e-05 6.855804069e-13 0 0 1.291849243e-06 6.447790642e-25 8.353986905e-11 0 2.419048468e-11 0 0 0 0 6.481751934e-24 7.207126364e-27 0 3.70482826e-08 0 0 0 7.792621656e-05 0 1.391201203e-12 0 1615.836269 0 0 2.049700715e-09 532.6439234 0 0 1.008918969e-14 831189.3149 0 0 0 124471.8792 237.1031952 8.667591711e-24 7.289630738e-20 1.816622367e-06 3.134524595e-13 0.0008717165095 0 2406.44105 203.1111273 0 2.553593804e-07 0 0 2.042873246 0 0 0 0 0 0 0 3.073661935e-16 0 0 0 0 0 0 7.828902508 0 0 0 0 0 0 0 0 0 4.808099078e-22 4.325866695 0 1.651839227e-15 0 6.372747788e-06 0 1.082243372e-05 643866.4245 0 0 0 0 0 0 8.999525094e-15 2.356592158e-18 0.05264036147 0 0 0 0 0 0 0 0 0 0 0 0 0 212636.9703 0 0 52.06122861 0.005724149825 3.786908284 0 1.477426949e-16 0 0 0 0 0 0 0 0 0 472.7383926 0 0 0 0 4.336701918e-06 0 0 0 0 0 0 +0 2.634123573e-12 0 0 0 0 0 1.649372318e-22 0 37.17193552 4.927231879e-14 0 0 0 0 0 0 0 0 2.031601661e-18 0 0 0 0 0 0 0 0 0 0 0 0 9.626073435e-13 2.338145689e-11 0 3.297417054e-06 2.632621805e-11 2.776640661e-16 0 0 0 22111.05277 0 0 0 2.181707289e-20 0 0 0 2.05374771e-22 0 0 0 0 0 6.855688032e-07 0 0 0 2.289126561e-29 4.375326969e-12 0 0 0.000178472662 1.021295197 0 0 0 0 0 0 0 0 515453.181 0 0 0 8.095474884e-08 0 0 0 0 0 0 0 0 0 0 24617.67008 1.376596651e-10 0 0 0 0 0 0 0 0 0 0.006435796965 8.556384986e-23 1.473904862e-06 0 2.483572484e-23 4.493786148e-14 2.676117946e-15 0 1.046284497e-37 0 0 0 0.0001808695666 0 6.765629373e-08 0.01611609069 0.02880112108 0 0 0 0 0 0 87182.10478 1701.172231 0 0 0 1.298434587e-08 1.02922644e-14 6.969740359e-11 7.879494938e-14 0 0 1.891915179e-23 0 1.961552349e-26 0 0 0 0 0 0 2187440.544 0 0 0 2.23593054e-20 0 0 0 0 0 2.464172611e-05 0 0 0 0 1.763930214 0 0.002025826585 0 0 4.657236672e-13 0.002407357102 0 0 3.086057623e-08 0 3.786417658e-06 0 5.902353398e-15 6.732096604e-37 0 0.0003268745254 70698.8479 0 1.177041428e-19 0 0 0.00406921246 4.150509985e-13 0 0 0.04232969751 0 8.154434608 4.068535201e-25 3.719060489e-23 0 0 8.075205447e-18 1.237670182e-34 0 0 20.34807853 0.000896241813 0 0 0 0 0 2.720021872e-11 0 0 0 3.353118178e-29 0 0 0 0 0 0 0 5.355118086e-13 0 2.326697493e-28 1.208209195e-27 0 0 0 13040.81449 0 0 0 0 0 0 0 0 6.684257184e-23 404189.963 0 0 0 0 0 0 4.427423112e-23 1.287557954e-27 0 0 0 0 0 0 0 0 0 5.62922991e-19 0 0 0 0 2.318713042e-09 2547473.945 0 185083.2642 4.047158002e-15 3.924547737e-27 2.717181592 0 0 0 0 0 0 0 8.930017916e-08 0 1.589272252e-16 0 0 3.852266896e-05 0 0 0 276069.1379 0 0 0 0 0 0 0 7.356706583e-37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 2347.809571 0 0 0 0 3.487045379e-15 0 0 0 0 0 0 180026.7913 0 3.623331822 0 0 183.1304765 0 5.230684862e-13 0 0 6.017282615e-09 0 1.941972916 5.125043783e-05 0 0 1.017704369e-13 0 0 0 0 0 0 4.185052408e-22 0 0 0 828.8533949 0 0 2.167999308e-29 4.313284095e-24 0.0001795709563 0 0 1.244697902e-12 0 0 3.217418294e-06 0 0.005291580255 0 0 0 6.495415117e-15 0 0 0 0 0 0 0 1.280469938e-12 1515375.904 0 0 0 1.001058351e-06 0 0 0 2578.27631 0 2.73792961e-07 0 7.942810479e-14 9.9294048e-25 0 0 0 0 0.007778184615 1213.125146 0 0 7.365180065e-08 3.740304124e-14 0 3.125605803e-06 0 0 0 0 0 2.345373497e-06 0 0 2.119621802e-17 0 0 0 0 0 0 2.838475136e-10 5.969659168e-15 7.740363671e-05 0 0 0 0 0 1.134272794e-21 1751.957969 0 0 3.679840595e-06 5.445720119e-11 0 0 0 0.1500224714 0 1660.766929 0 0 0 0 0 1.477271056e-08 0 0.09926640292 0.001009881815 0 4.059988857e-23 7.319680137e-09 0.5420242358 0.03351954547 0.0001888187479 0 0 0 0 0.0008292490961 0 0 0 78431.30944 0 0 115.0412552 0 0 3.285474191e-09 0 2.083318133e-09 0 0 0 0.0008459001337 0 0 1.648714216e-06 0 1.437351213e-11 0 0 0 0 0 8.501237402e-09 8.771745741e-05 0 0 0 0 0 0 1.719090469e-06 1.186516662 0 0 1258914.711 2.0680217e-15 441.9643376 0 0 514.210398 6.571297229e-15 0 0 0 0.0006499738686 3.925097046e-13 0 0 0 15367.03158 181228.3523 0 0 0 0 0 0 3.481947705e-08 0 3.662153942e-09 0 0 0 0 0 0 0 0 17.89661577 6.310280273e-15 0 0 8.848877343e-05 8.54084444e-05 0 0 0 2.19058253e-26 827.51743 0 0 2.475609087e-16 0 0.001321163772 3106444.43 0 0 0 61.4868458 2.364998636e-11 0 0 0 0 13.00802477 0 0 0 0 8362.77776 1.06908044e-05 0 0 0 0 16.48780178 5.758930329e-10 47613.39594 0 0 0 0 376.0218937 0 0.1584047338 0 0 3.662074475e-07 113.8967531 5.696674023e-16 0 1.423152774e-07 0 0 0.8254373793 457540.5829 0 0 0 26.02633878 2.892180202e-24 0 0 0 8.033289266e-06 0 0 0 0 0 0 0 +3.17867129e-28 0 0 0 0 0 0 35935.69428 0 0 0 1.928466659e-18 0 0 1.862583252e-10 0 1.653112301e-26 1.172276467e-05 2.591959487e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04035921872 0 4.181007248e-14 0 0 1803348.823 0 0 0 0 0 4.14475036e-05 0 0.02791683399 0 9.689817742e-12 0 0 0 0 0 0 0 4.763329292e-09 0 0 0 0 6.450553833e-15 0 0 0 0 0 0 0 2085830.136 0 0 0 2.583846136e-12 0 0 0 1.445943236e-11 0 0 0 0 6036.027538 0 0 213.9995586 0 0 2.393306861e-14 1.022652847e-09 0 0 2.964744622e-19 0 0 0 987.8135171 0 6.052498453e-05 0 0 0.1839856265 1.063162289e-16 0 0 2.844000979e-06 0 0 0 0 8.111937676e-30 8.445807775e-13 0 9.006053285e-13 0 0 4.727419059e-06 0 0 2070467.042 4.359380175e-07 6.461962169e-18 2.031456841e-09 0 7.970446808e-12 2.722587303e-18 0.0005157793762 0 3.940935121e-35 0 1.361098715e-13 6.620726876 0 0 0 1.149877075e-12 7.404189447e-19 0 0 0 3.350887256e-13 0 0 0 0 8.985883321e-05 0 2.093527701e-12 0 0 1.804995136e-23 0 0 0 0.004493769433 0 0 69.45854243 0 0 37067.96891 0 35598.59961 0 1.011641919e-38 0 0 0 0 1.890508643e-10 0 0 0 0.003599778112 0.3877544755 2.384251767e-30 0 0 0 0 0 1.658548411e-23 0 88.07856733 54.43826827 0 0 0 1854234.646 0 0 0 0 0 267.5862056 9.212709476e-15 0 0 0 0 0 1.955052398e-10 0 0 0 293329.8647 3.905065044 2084695.662 0 1.642547532e-11 0 0 0 0 0 2.694758832e-21 0 0 0 0 0 0 8.181545364e-14 0 2497.28359 0.0001758406705 0 0 0 0 0 0 410.1517373 0 0 1.268929813e-16 0 0.0002103076876 5.736530865e-25 801580.8079 0 401552.355 0 0 0 3.396260396e-07 0 0 0 0 0 0 1.415432216e-27 0 1366.355838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 485.6917793 0 0 0 2.551355895e-15 2.104064283e-16 0 0 1.887772923e-12 0 0 0 0 0 0 0.1149848521 0 0 0.0004624800641 0 0 0 0 0 0 0 +0 0 7.310876489e-13 0 0 0 0 0 0 0 1.621912492 0 0 0 0 0 0 1.135701388e-16 0 137996.3148 0 0 0 0 0 0 0 0 0 0 0 0 0 9.845621891e-08 0 0 0 0 8.091582992e-22 0 0 0 0 0 0 0 0 0 16162.88482 0 0 0 96487.58499 0 0 0 1.9214157e-30 1.676077167e-12 0 0 0 377055.3622 0 0.7611757963 1.067114652e-07 0 0 0 6.955456268e-11 0 0 143613.6265 0.004875969809 8.449831423e-05 82744.85581 0 0 0 7247.349727 0 0 0 1.795279136 0 0.007110340879 6.971965662e-15 254.1868355 0 0 0 0 0 0 0 0 0 0 3.452010742e-26 0 3.515270464e-05 3.08359147e-13 353074.8549 0 2.425052929e-08 1.369635834e-11 0 0 5.207776067e-30 6.29028202 1.560476654e-07 0.0003958823549 0 0 0 2.014247698e-25 6.68397604 0 24.85304205 0.0002760063621 0 2.622453915e-06 0 99227.84201 0 0 0 0.01246480536 0 0 0 3.378738655e-25 4.959005645e-27 0 4.032779503e-30 0 0.6157890983 7.753284168e-29 0 5.69114423e-12 1.540314799e-14 3.503189562e-07 0 0 3.443122943e-29 1190907.855 0 1.834660837e-24 0.1976650881 0 1.390625158e-08 0 5.756579534e-18 1.415513202e-14 10.00565626 0 0 17.60126205 0 13604.36606 0 0.1361752668 0 6.129576946e-23 1278.98619 0 0.000131997874 4.854963977e-12 3.723682815e-08 0 0 1.274716857e-19 80484.81468 0.002432098003 0 29.49694531 0 7.035034e-27 1.855564675e-06 1.087052864e-05 1.751388924e-26 0 2.84885815e-28 0 0 4.199447505e-11 0 9.701716974e-19 0 0 0 5.984378871e-21 0.005711138683 0 0 0 7.560981257e-26 0 2.327475606e-28 0 0 1.536053096e-05 0 0 0 1.017634086e-10 2.585353077e-10 0 0 928.0883396 4.438442884e-09 1.608499493 2.543293205 0 0 4.042127701e-07 0 4.009365367e-18 6.404733078e-08 0 0 0 1.349919409e-07 0 6.086132677e-10 0 0 0 0 2.621135612e-11 6.494326676 0 0 0 0 0 1.671084478e-17 350.9095879 0 0 0.03275711889 0 0 2.574288019e-05 0 0 0 0 0 0 0 2.075060393e-07 1.832453327e-11 9.401014389e-23 0 9.130406327e-21 0 2.619203773 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.754972208 1.143180864e-19 0 0 0 0 1576.235275 0 0 1.266366254 0 0 0.03633200007 0 0 0 0 0 0 465.7625291 0 0 1.628767567e-27 0.03470694489 0 0 0 0.000802212231 +0 0 0 0 0 6.180094484e-09 0 0 4.594774242e-09 0 32951.8629 0 0 0 0 0 7.953258648e-07 0 0 0 1.751154906e-21 0 0 9.041671897e-11 0 0 0 0 0 0 0 0 0.01290695243 0 0 0 0 0 0 0 0 4.027321387e-14 2.633418613 0 0 0 0 0 5.242485819e-18 0 0 0 29217.12119 51987.19931 0 0 0 0.004692470974 0 0 0 0 0 0 1100584.099 0 0 0 0 0 0 0 72.27489466 0 0 0 0 9.252859634e-21 0 0 6.283981386e-14 0 3.78874323e-12 0 2.095212945e-17 1.441391396e-19 0 0 1.579434142 3.570716236 0 6.000734325e-27 0 3.341052236e-08 0 0 8.399680701e-12 4.785081447e-18 0 286635.6544 0 0 0 0 0 0 0 0 9.230165313e-16 0 0 0 0 0 0 0 0 0 0.001458754026 1.046254622e-23 0 0 0 0 0 6.035666972e-08 0 5.777252615 0 0 0 4.709711977 0 3.398354448e-14 8.399117641 0 7.534933366e-16 0 0 4.732101342e-09 0 0 4.114340733e-05 0 0 3123956.109 0 0.01455437899 1.7897755e-05 0 0 0 0 0 0 0 0 0 0 0 9.251200417e-08 0 0 0 2.346212383e-11 0 5.234247867e-10 2.98431438e-06 0 9.346601038e-06 4.298024529e-22 1.371809019e-22 0 0 0 0 0 0 0 0 4.578639964e-36 0 4.88105866e-13 2.522098475e-19 0 4.007103748e-14 1.925937317e-12 2.735856955e-30 0 0 0 0 0 0 3.594751562e-23 0 0 0 0 3.361767874e-18 0 0 1.292559049e-15 0 0 1.157023711e-22 0 0 3.441239493e-27 5.656776757e-13 5.111234445 0 22.57167843 0 0 0 0 0 0 0 0 0 0 0 0 0 10782.69061 0 0 0 4.672426624e-25 0 0 52.50558053 0 1.895864207e-09 0 13838.14647 0 0 1.219935379e-13 0.8200894979 0 1.252680007e-08 0 0.2484715437 0 0 0 0 0 2.878248427e-07 0 0 0 0 0 9.123022933e-12 563.0061287 0 0 0 0 0 0 0 2.004430425e-20 0 0 2.365649705e-07 0 0 0 0 0 0 0 0 1.360044521e-27 0.0002053718077 9.630320865e-15 0 0 0.9803191667 23585.54514 3.327152864e-21 0 0 7.939274106e-19 0 3493570.528 0 559699.3523 0 0 0 0 0 0 0 +0 4.700669352e-12 0 0 0 2.857379421e-27 0 0 0 0 6.630298652e-32 0 5.064554486e-19 2.13604689e-16 0 1.379795755 0 0 0 0 0 0 0 0 0 0 297378.9807 0 0.114052069 0 3.092747989e-08 0 0 0 0 54826.00761 317.7997225 0 8.76875519e-08 0 0 0 0 0 0 0 0 5.922734922e-25 0 0 0 0 0 0 0 0 3472.408237 0 0 0 2.563353848e-16 0 494580.5009 1.241200113e-23 0 0 2.501125405e-30 0.1344451969 0 0 1490705.15 0 0 0 4.185179477e-07 0 1.036749881e-16 0 3.907864326e-18 3.453782257e-15 0.2218433945 0 0 0 0 7.552169791e-24 0 1.630103878e-05 6.381205748 0 0 0 1.517498431e-07 0 0 0 0 0 0 0 0 9.243260838e-29 0 0 1.192021743e-27 6.111881659e-12 5989.253575 0 0.2861903717 0 0 0 0 0.008555633216 0 0 0 0 0 0 0 0 2.355499779e-29 0 205996.0918 0 0 0 4.113880068e-11 171016.1296 3.703823752e-09 0 0 0 0 0 0 0 0 0 2.591644891e-13 0 0 0 3.697281375e-28 19748.87133 0 1.288380346e-17 0 1.258372437e-09 0 3031.411857 0 0 0 0.002610244335 1.228417543e-12 0 21560.98149 0 1.777315819e-26 1.160664627e-07 0 5.40509122e-26 1.124065068e-07 0 1.27693743e-06 0 4.492365664e-28 0 3.091494127e-08 6.445176807e-05 1.000841934e-18 0 0.4379607205 0 0 1.026829419e-11 0 0 0 0 0 0 94096.54398 0 0 0 0.006032931979 0 1.224097389e-46 0 0 0 0 0 5.959194547e-07 0 0 0 5.513916643e-30 7.082412714e-08 6.283024295e-12 0 0 0 4.312880761e-05 0 0 234418.2739 4.244207259e-17 4.500581758e-06 0 0 0 0 0 0 0 0 3.481023595 0 0 7.812832504 0 0 0.0001946166875 0 0 0 0 0 0 0 5.889317237e-18 0 1.072576282e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 1.13532663e-08 0 0 0 0 1.050612612e-15 0 0 564489.3703 0 0 0 0 7.926762838e-06 0 0 0 0.2528945615 0 0 0 9.826535658e-21 4.8649513e-08 0 0 5.236732682e-16 0 0 3.824898773e-19 0 0 0 0 0 4.548067869e-26 0 0 0 1.463734955e-20 1.462876063e-27 0 0 0 0 0 5.148276958 0 0 0 0 +0.00042303688 0 0 1.104596699e-18 0 0 0 1.387269021e-06 0 2.432366712e-19 0 0 0 0 0 0 0 0 0 5.480401618e-26 7.345973059e-11 2.938835098e-11 0 1.804431951e-15 0 0 0 0.3152792946 0 0 164.251741 7.308961453e-19 0 0 0 0 4.552936898e-28 3.166852964e-16 0 0 0 0 1651.867761 0 1.932022463e-17 0 0 0 0 0 0 2.486519105e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 17.99758658 0 0 0 0 0 0 0 0 0 6.190631211e-28 0 0 0.0008336493467 0.003536006458 0 0 1.892473047e-09 0 0 0 0 614613.2456 1143.312722 3.161896124e-14 0.9731956109 455.3022645 0.2841068368 2.723243015e-19 0 0 0 1.073054971e-24 0 1458.66634 58.08153473 0 5688.672598 0 0 2.566115601e-13 0 0 0 3.061008673e-09 0 0 7.330840902 0 4095.003225 0 0.5541913412 0 0 0 0 0 1.846582166e-09 0 2.396341515e-15 0 0 0 0 1.8566295e-08 7002.591392 0 0 0 3.218702321e-19 0 0 0 206156.039 0 3845.382356 0 7.829074712e-15 0 1.294988727e-19 4407.744002 0 0 0.7387039739 1.265682994e-08 5.045233955e-05 3.466968835e-13 0 0 0 5.563493024e-32 7.358291789e-14 0.0004366602239 1.21090299e-13 0 151.2375832 3.374387038e-22 0 6.452040002e-39 1.04993492e-09 1.517209832e-14 0 0.0002452302114 0 0 0 0 0.02073459824 6.622025436e-06 0 0 0 0 1.270425924e-13 0 0 0 0 0 0.01018479849 0 0 0.0007629076153 0 0 0 0 0 0 0 0 0 14.64882624 0 0 0 0 6.911745453e-07 0 0 0 0.2377620662 0 0 7.794526353e-05 0 4.188226198e-28 5.113256435e-07 0 0 0.009754863217 0 0 0 0 0 0 2.001518021e-22 0 0 0 0 0 2.501419261e-14 0 0 0 43602.41961 0 0 0 0 0 3.898697473e-05 0 0 0 0 0 0 0 0 0 9.829636814e-05 0 0 0 0 0 0 3.473090016e-08 82.1868492 0 0 1.125948473e-10 8.779937372e-29 2.826981404e-05 0 0 0 0 22.49192255 0 4.96201304e-12 0 0 0 0 18.04797744 0 0 0 0 0 5.827210707e-27 0 0 0 0 2.658870819e-33 874.4141219 0 0 352298.3396 0 0 0 0 0 0 0.8590674013 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 18269.76182 3.958133848e-05 0 1.276516556e-10 0 0 0 0 0 0 0 0 0 0 0 5.20346591e-24 0 0 0 0 0.009651537307 0 0 0.01630752779 7.153447249e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.179321825e-08 0 0.0004074676905 1.513886761e-06 0 0 0 1.371403327 0 0 0 1.525467316e-13 0 6.342256849e-06 0 0 0 0 0.159114924 5.196865779e-05 0 2795.83124 0 0 0 0 9.260722006e-06 0 0 0 3.073823963e-15 0 0 2.176199325e-30 0 125.6090493 0 0 0 2.138745003e-22 0 1.44217068e-05 1.023241462e-29 0.006292023769 0 6.255022263e-27 0 4.337688842e-09 0.009838601375 0 0 3.90394655e-16 0 0 0 4.471144046e-11 0 0 0 0 0.003785768126 1.280685183e-10 4.103655079e-17 0 0 0 0 0 0 142.422721 0.01019268002 14240.70713 1.616822488 0 0 0 89046.85121 0 325.5071619 3.859585363e-05 0 1.052565715e-09 0 2.353250627e-20 0 9.437461429e-12 4.491805038e-14 3.97281935e-23 4.748579778e-10 1362.827136 0 0 0 0 0 9.489607489e-13 0 0 1.192867482e-16 0.07163590796 9961.321603 0 0 2.516217588e-12 0 2.28210482e-14 0 6.062417303e-40 8.556606372e-12 0.000966411165 0 3.304983394e-13 5926.398273 1.15722635e-19 0 0 0 0 0.03812244527 2.020497385e-12 0 9.376384949e-31 77.59163353 0 0 3.317179298e-09 0 0 0 0 1.149008959 0 6.306561553e-08 0 0 0 365.2887855 0 1.416529669e-08 9.968428047e-09 4.140939966e-14 0 3.574609285 1.102100461e-09 0 3.275875918e-09 0 1.142691093e-10 0.0002692605989 0 5.9238489e-14 0 85349.29491 0 0 1.26002937e-33 0 0 0 0 3.640309934e-06 4.158264436e-09 0 0 21.07862349 0 0 1.599430131e-16 3.97600459e-07 0 0 0 0 1.224309263e-12 0 0 0 13.42928671 0 0 0 0 0 0 0 0 7.293935409e-14 0 2.406478607e-27 0 0 0.3304934076 1.134439164e-22 0 0 0 0 0.0372683961 0 0 0 0 0 0 0 0 0 0 0 0 1.031894524e-16 0 0 0 0 1.028949663e-08 0 0 0 0 0 0 0 0 432.305696 7.873469207e-09 0 0 0 4.560905708e-39 0 2833018.639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 7.469460064 0 0 0 0.002015189899 0 0 0 1.253416997e-08 0 0 2.620839917 0 0 0 7.076553646e-31 0 0 0 0 0 0 1016.626801 0 0 0 0 0 1.308889943e-31 0 1.601344747e-25 0 0 0 0 0 0 0.1657562254 9.728653744e-11 0 0 0 0 2.492484714e-09 1.31779293e-09 0 0 0 0 0 0 7.040040015e-20 0 0 1.386262315e-08 0 0 0 0 0 0 0 0.002134663468 5.807047473e-05 0 0 0 33687.79353 5.695404595e-12 0.2317329686 0 3576.462907 1.975429948e-27 0 235.5728573 1.407763657e-11 0 0 0 0 0 0 0 4.102332852e-29 23.59076913 2.784127994e-14 0 1.320548771e-28 0 0 0 0 0 0 0 0 8.935072968e-14 0.00244101084 0 0 6.13967646e-26 0 0.0007002573655 0.0184675517 0 0.09563145042 0.6104901471 2.560403953e-18 0 0 0 0 8.344897899e-21 0 0 0 3.215515895e-14 0 2.547623089e-07 0 0 0 0 0 0 1.412001018e-12 0 0.3259942525 0 0.0002610599198 0 827.6264607 2.499088513e-35 0 0 304582.9714 151.9979109 1.701107911e-30 0 6.452553079e-20 2.644858769e-10 3.818893585e-17 0 0.004469179096 0 890680.5121 0 0 3438398.524 0 1248.75035 0 0 123.9887045 0 0 0.5844063643 0 0 0 0 0 0 0 0 4.998585675e-16 0 4.279980848e-22 0 0 0 294.8935099 0 1.235474649e-14 0 2.817735966e-15 0 0 0 460.548579 0 0 1.70524624e-07 0 0 3.982703079e-19 0 0 8.781304923e-05 0 0 840.0413886 0 0 0 0 0 3.700979853e-13 0 0 0 0 0 0 0.09167060397 0 0 0 7.739785475e-13 4.54294989e-10 0 1.110526352e-08 0 0.1095128454 0 248.8074923 0 0 0 0 2.629611663e-16 0 0 0 0.703271219 0 0 0 3619.924899 0 0 0 0 0 4521.116683 0 1.647104726e-06 0 6.080738014e-23 0 0 0 0 1.416857053e-13 0 0 0 0 2.486461875e-11 1.315985376e-35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.457336637e-11 0 4.48715297e-35 3.51542631e-25 0 17025.93823 56979.47407 0 4.613148716e-13 0 0 0 31.31443314 0 0 0 0 0 5.006593062 0 0 0 0 3.795142088e-08 0 0 0 0 0 0 0 0 0 1.696395116e-14 +0 0 0 0 0 258004.9217 0 0 2.365774697e-14 0 2.105961338e-13 0 0 0 0 768601.8859 0 0 0 0 3.277359176e-12 0 0 0 0 2.701317293e-16 0 1.356624153e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 1.013913943e-14 0 4.550332443e-06 2.264264952e-15 0 0 0 0 0 0 0 0 0 1.941081227e-30 0 0 0.001150432833 5.038315369e-19 0 0 9.178875372e-10 24.34659078 0 0 0 0 0 3.934486118e-21 0 0 0 0.1680600448 1.74971107e-09 910.6643368 0 0 0.5296504798 0 0 2.362259278e-27 0 0 0.0001404259145 3.890913365e-18 0 0 0.01675690126 0 0 0 0 8.751302258e-19 0.001790875163 0 0.000211939303 37234.74231 5.473173265e-12 0 0 9.395084576e-05 1.345295877e-07 0 0 0 0 0 0 0 0 3.47163358e-08 1.641781029e-21 0 0 0 0 539042.621 0 0 7.700287433e-09 1.625757098e-09 0 0 0 0 0 0 1.159593491e-47 0 0 0.01945856524 0 0 0 7.982871693e-17 6.601861313e-09 0 2.337580581e-06 0 0 0 5.664389795e-19 349287.1128 445.5074903 0 0 0 0 0 0 0 1.37826854e-25 0 5.352688935 0 0 0 0 0 0 0 0 4.863726245e-05 0 0 0 0 0 0 0 0 0 0 0 0 7.879950376e-13 0 0 0 1.504749222e-26 0 0 0 0.01448491303 0 5254.01682 0 0 0 0 0 0.003765545639 0 1.421552798e-21 11.89774577 0 0 0.124091707 0 0 0.0002047859009 1.59335617e-21 0 0.3254416511 3.118271336e-09 0 1.841018127e-15 0 0 2.893838105e-22 3.341391128e-11 13.73294906 0 0 0 0 0 6.900683111e-07 0 0 0 0 0 0 0 0 0 0 0 0 20.00014102 0 2.118782598e-17 1.055829403e-45 0 0 0 0 0 0 0 0 0 0 0 0.7177211058 0 0 0 4.946403878e-11 3.596190144e-29 81.47717802 0 0 0 0 0 1.075260858e-11 6.961608965e-13 0 0 0 0 0 0 0 112233.362 0 0 1.404423701e-18 0 0 1.675631215e-10 0 0 318.784124 1.234115797e-09 4.469509016e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.112963816e-12 0 0 2.219560359 0 0 0 +0 0 0 0 0 0 0.02582006581 0 0 0 0 2.544016699e-09 0 0 0.0007180854558 1.01024346e-17 0 0 3.957008655e-06 0 2.455111229e-23 1.252907728e-26 0 0 7109.127302 0 2.249866882e-21 0 0 0 0 4.73372409e-10 2029284.653 0 0 0 0 0 0 5.109423884e-08 1.887311168e-07 6158234.12 0 0 0 1.446019825e-18 0 0 0 4.508708656e-25 0 0 0 0 0 4122.085629 0 0 0 0 0.1015675417 0 0 0.0009901041491 0 0 4.22779975e-09 0 0 9.02796811e-13 0 0 0 0 0 0 0 3.782267436e-07 0 0 0.003934906087 0 5.391019772e-23 0 0 0 0 20.33063158 5.55873646e-38 1.874209341e-15 0 0 0 4.083524051e-13 0 837.1870325 0 1.017729688e-12 3.644768682e-25 0 10.85076065 2.398126043e-34 1.10671055e-07 0 1.43231125e-26 6.216983349e-10 0 0 0 2.874653943e-09 8.095484176e-17 0 0 0 6.962095847e-12 0 0 0 1.129577504e-25 0 26998.84665 2442.398952 6.271781608e-22 0 0 0 7.115574109e-13 0 3.925605531e-05 0 7.025661764e-08 0 0 0 0 0 0.0004824729615 0 5.380038826e-10 0 0 0 1.9159427e-18 0 0 0 1.090289977e-18 106.86802 0 0 0 0 0 0 0 26.29841749 0 5.874499612e-14 0 0 0 183.60616 0 0 2.070907213e-16 6.210262753e-17 0 0 0 0 0 0 1.388613975 91718.314 32.58656398 1.086614484e-12 1.056075517e-05 0 0 0 0 1.956521013 3.648459899e-23 539639.7793 0 1.001258766e-12 164.0593411 0 0 0 1.760228673e-09 2.422500827e-15 0 0 1.508952383e-08 0 0 0 0 0 0 9.336229162e-16 0 0 0 1.200632503e-11 0 0.505447666 0 0 0 963.2351285 0 9.009458861e-11 0 0 0 0 7.804661343e-20 0 6.23795522e-21 0 0 0 0 0 0 0 0 0 2.109987051e-18 56651.56777 0 0 4.523033454e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 3.606057909e-05 0 0 0 0 0 5313.475681 0 0 0 0 0 0 0 0 0 0 0 0 0 1417.149659 0 0 0 819.8369339 0 0 0 0 0 1.491430382e-13 0 0 0 0 0 0 0 0 5.268102194e-06 0 0 0 0.01221215668 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 4.863323744e-16 0 0 0 1.438314109e-07 0 0 0 0 0.001918204941 0 0 6.020843894e-10 0 0 0 0 0 0 8.960894651e-19 0 0 0 0 0 8.452321441e-26 0 2.784334857e-12 0 0 0 0 0 8.804213303e-09 0 0 0 0 1.519109092e-16 0 0.003946334422 0 0 0 7.887374187e-23 0 2.644557427e-19 0 0 0 5.685543231e-10 0 0 0 0 0 0 0 0 0 0 4.84442314e-15 0 0 63009.47583 0 0 0 0 4.083946871e-30 0.0002641990129 1.745269333e-05 0 0 0 0.1367170496 0 0 5.960936038e-19 0 0 0 0 0 0 0 1.787180228e-13 0 0 0 0 1787978.769 0 0 7.693831693e-09 0 0 0 7.728334511e-16 0 5.768248898e-27 3.655440465e-09 2.218927581e-29 0 0 0 0.001305147999 0 0 0 0 0 0 0 0 0 154471.004 1.977004436e-09 0 13.97223822 0 0 0 0 0 0 0 4.013792301e-11 0 0 0.006321586846 4.289906122e-06 0 0 1.876766221e-31 0 0 7.172370497e-11 0 0 3.453570637e-22 4.387645249e-10 0 3.648670695e-18 0 0 0 0 0 2.339807377e-10 3.980978805e-37 0 0 4.731269087e-08 0 0 0 8.477661076e-40 0 0 7.011697769e-21 0.03012214821 1455990 0 0 0.02578533014 3.245875534e-29 2.774475263e-21 0 1888817.813 0 0 1.778028786e-09 0 9.960522086e-31 0 1.699412808e-22 0 0 3.03035536 0 11453.10221 0 0 8.043922044e-28 3.819835813e-11 0 0 0.00500475359 0 341220.5012 0 0 0 0 220.6479146 0 0 0 0 3.161473241e-06 0 0 0 0 0 1.396589531e-06 0 0 0 0 0 0 0 0 0.0001237109445 0.07211118448 0 0 0 2.84271739e-11 16.01286837 6.877323886e-27 0 0 0 1.958843648e-09 0 0 0 6.315083648e-21 0 0 0 0 7.55511342e-12 0 0 5.086584862e-13 0 0 0 588063.5732 0 0 493.5939798 3.741663572e-16 5.064343238e-22 0 0 0 0 0 0 0 2.766033523e-06 0 0 0 1.339881879e-24 1.492126717e-16 15.84432243 0 0 0 0.0002989959219 0 0 0 0 0 2.017426771e-07 0 57.07048932 9.923593469e-18 787119.3042 921219.5533 7.266366875 0 0 0 0 0 0 0 0 0 0 0 0 3.12361893e-35 0 0 0.3050502695 +0 3.217950513e-13 0 0.0004531566465 0 0 8.928654955e-13 0 0 0 0 0 0 115.5217021 3.939946813e-10 0 0 0 0 5.622128706e-14 0 0 0.0002719892783 0 0.004865106649 0 9.589650216e-25 0 1.470609792e-05 1.665801775e-25 0 0 0 0 0 0 0.01051648551 0 0 3.036542983e-14 0 0 499567.5847 0 0 5.141183504e-05 5.462993607e-11 0 6.155848739e-06 1.680565884e-41 0 0.02204409176 0 2.61389786e-21 0 0 0 1528.716451 0 0 37.43822465 0 1.711331798e-12 0 0 0 0 0 0 0.06431168017 0 3.396637307e-08 9.554918774 0.02948685624 6.064964414e-18 0 0 0 0 3.460435092e-10 0.00059544503 2.891895306e-13 0 0 6.041578783e-24 0 0 0 3.017671191e-09 0 0 8.663544441e-07 0.0002980361978 0 2.658903875e-26 0 9.974754311e-17 0.09403674129 0 0.02264202991 0 0 0 0.0004790136101 0 0 0 8.661918287e-22 0.0003390551726 0 0.0004858621154 0 0.05323449675 0 4.74143547e-38 1.841728107e-05 0 2.391782713e-10 5.175980385e-11 0 6.37099427e-06 1.508177185e-14 0 0 0 0 0 1.13635469e-14 6.666486948e-16 0 2.02502441e-05 0 0 1.293682911e-33 0 9.298543195e-11 0 0.2812855945 6.335245371e-35 1.504608284e-17 0 0 0 9.880963773e-27 0 0 1.642340603e-10 614.575322 0 2.844423566e-22 0 0 0 8604.19901 10.19113057 0 0 3.720553009e-21 0 0 0 0 0 0 0 0 0 1.015421761e-09 1.359762387 0 1.615971497e-20 2.232966323e-07 0 0 0 0 0 8.646442805e-20 0 0 0 9.324177805e-21 0 4.361585459e-23 0.03695928823 0 0 0 0 4.656144755e-26 1.1999017e-10 0 1121488.838 0.01307125992 7.721154268e-05 0 0 144304.3507 0 2.452580506e-12 2.130174614e-12 0 0 4.54851377e-17 0 0 0 0 0 0.6887095157 0 0 0 0 1.003107657e-14 1.321810859e-06 0 0 0 0 1.426217907e-11 0 0 0 0 6.519829593e-10 0 0 0 0 0 18.28775301 0 4.405593219e-08 3.306812345e-32 0 3.586125712e-06 0 0 1751.58369 0 0 0 7.699155875e-21 0 0 0 7.694032125e-28 3.547585342e-06 0 8.212615582e-10 0 0 0 0 0 0 0 0 0 0 0 0 2.319588533e-24 0 563.5134182 0 0 4596.347188 0 512.2193446 0 0 0 0 3.428039709e-05 0 0 0 0 1.906374848e-07 0 0 0 0 0 0 0 0 0 0 0 1.604869786e-12 0 0 0 0 0 0 0 +0 0 0 0 0 9.598620925e-16 0 0 0 0 0 0 0 0 0 0 0 0 1.733677439e-09 0 0 0 5.82117898e-06 2.383791887 0 0 0 0 2.224686313e-11 0 0 1059.477322 0 0 0 0 0 0 0 0 4.230323673e-16 0 0 0 0 0 0 0 0 0 5.76655434e-14 0 0 0 0 0 0 0 0 0 0 0 0 3.672778912e-06 2280.457078 0 0 2.098222706e-07 0 0 0 0 3.67918251e-05 0.003636405442 2.208741129e-12 0 1.577077113e-29 0 0 1.258764767e-25 0 0 1.437467795e-32 0 0 0 2321.11241 0 0 0 2.759398389e-25 0 0 0 0 0 0.002468280623 0 0 0 0 0 435812.7215 0 2.285965704e-29 0 0.1097825631 4.988068923e-14 0 0 0 0 27.63770901 0 0 0 9.406966772e-14 1.287444794e-17 0 0 4.441066136e-23 0.0003058490567 0 0 0 1.788127124e-19 0 0 7.269652983e-17 0 0 6.154373231e-15 0.02616640249 0 6.170090676e-18 0 0 0 6.902567001 0 97065.74688 0 5.793899539e-09 2.437626957e-13 0 0 0 5.27668355e-27 0 2.153156672e-09 0 2255.950623 0 0 0 0 0 0 2.882235252e-21 6.351812589e-28 7.443634044e-15 2.792746339e-23 0 0.0001990346971 1.751841534e-37 363.171396 0 1.446230675e-26 0 1.724090285e-12 926.4970129 58122.0115 0 8.292788827e-17 0 0 0 387161.4919 0 0 5.43528168e-15 0 2.725495214e-08 2.427998509e-08 0 0 4.540792007e-11 0 0 0 0.04217753174 1.05926063e-25 1.747426935e-05 2.832303534e-23 0 8.741755562e-14 5.822508124 0 4.484496401e-06 0 348.8023796 0 0 0 0 5.824263667e-21 0.00167160018 0 0 0 0 1.405869395 0 0 1.369977237e-10 0 0 0 0 0 1.817912636e-30 0 1.416149831e-07 3.052612826e-15 2.505383949e-05 0 0.001288951632 979310.2461 0 5.66088025e-11 0 0 0 0 0 0 0 0 4.971632825e-22 1.610710648e-23 139289.2568 0 0 0 2.001474503e-06 0 0 0.000682769933 21.7925764 0 1.269777463e-16 0 0 0 0 7.70930683e-07 0 0 0 0 0 0 0 0 0 0.001018414575 0 0 0 0 1333.082608 0 1.793503162e-35 0 2.55680132 0 0 0 0 0 3524.780062 0 1.43810439e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.302628618e-16 +0 5.491758883e-26 0 0 0 2.402388777e-05 0 0 0 0 3.393762787e-33 0 0 0 0 0 0 0 0 7.925126977e-19 0 0 0 0 4.492340624e-13 0 0 0 0 0 0.0004021945193 4.426600356e-07 0 0 0 55.35582868 0 1.088335181e-11 1.276266398e-21 0 0 0 0 0 5.394413904 0 0 0 0 247923.0082 0 0 0 390096.1296 0 0 0 1.40135465e-21 0 0 17.93306611 0 0 1.442954946e-08 0 0 0 0 0 0 1.269998141e-28 0 0 0 0 0 0 0 0 0 0 0 6.535213157e-16 0 5.484389192e-05 0 0 0 0 0 8.218618639e-27 4.511337355e-24 0 0 0 0.05922403081 0 0 0 0 8.340867689 19595.72421 0 0.05828005024 1.215363453e-06 0 6.088780734e-19 0 0 0 0.0001488791654 4.913376614e-17 0 0 0 0 0 0 0.001518947601 5.604584895e-12 0 0 0 0 0 0 0.5622973167 0 6.805815524e-11 0 0 0 0.06936591826 0 1.368743736e-31 0.0002445009804 5.26799193e-08 6.728191874e-15 0 0 3.752350254e-10 0.004703002995 0 0 436461.5045 0 0 5.878633157e-07 0 0 0 0 9.566372655e-07 6.577853427e-25 1.768359509e-35 2.283642727e-14 2.883642436e-11 0 239.1796143 0 7.883551036e-16 7.348776845e-16 2.325962281e-14 0 0 0 0 0 0 1.288016219e-05 2.180060966e-18 0 0.004309423848 0 8.953063539e-26 0 0 3.962901323e-21 0 643667.5623 0.0003784415154 6.836006124e-16 0 0.0001905335467 0 13.28233873 0 0 0 8.399393112e-08 4.143488808e-32 413.0672038 0 0 0 8.714942221e-25 0 8.003496032e-30 115.6651927 0 0.469834915 1.030764521e-14 0 0 0 5.534443388e-23 1159117.017 2.890912394e-07 0 0 4.204187636e-17 0 0 0 0.06020611592 0 0 0 1.771362349e-28 0.0008829108476 0 310.5454668 9.24338588e-25 0 0 3.908229555e-06 0 0 0 0 297.898545 0 0 0 0 0 3.413409421e-21 0 0 0 0 0 0.00722479475 0 0 0 0 22.06049667 0 0 0 0.008540627801 0 0 3.108788838e-23 0.006057875464 3.568541633e-22 1.185377188e-09 0 0 0 0 0 0 0 900474.216 0 1.639979694e-05 0 0 2.584459772e-11 0 1.689458875e-17 0 0 0 0 2.367033163e-11 0 0 8.940015027e-10 0 0 0 0 0 0 0 0 1.34043724e-18 0 0 0 0 0 0 7.728636767e-25 4.480125927 0 0.004724044994 +0 567.5202877 0 0 0 75.85665081 0 0 0 0 0 3.556022016e-32 0 0 0 1600.001 987.2297057 15.9436748 1.197864084 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.237910954e-07 0 0 0 0 3.89928241e-12 0 0 0 0 0 4.119451959e-08 0 0 0 3.80236877e-12 0 0 0 228337.8604 0 0 1967.113995 0 0 0 2.456623918e-12 0 0 0 0 6.013788673e-15 0 1.970626746e-07 0 0 0 0 3385.916787 0 0 0 0 5.420579602e-08 6.757691987e-21 0 19.40091858 0 1.489996272e-23 1.605541816e-06 5.933053001e-10 0.004583746099 0 0.008170842269 0 0 4.316323677e-10 0 0 0 0 0 0 2.12918747 0 0 0 0 5.156594379e-27 0.06094295268 0 0 0.008778113194 0 0 8495.932089 0 0 1.140920476 465477.3656 0 533095.6531 0 0 3.191911167e-27 1.706290453e-08 7.585076873e-24 4.347111335e-05 0 0 7.300593893e-05 0 0 0 1.166542635e-07 0 0 6.194208793e-23 7.735192637 4.179569395e-22 0 3.151347491e-08 0 0 0 1.907712661e-18 0 7.297106437e-08 0 0 0 0 0 0 0 0 0 0 269.5313362 0 1.199359755e-27 0 3.464862936e-09 0.003714489757 0 0 9.698825176e-17 1.568844291e-07 3.394737272e-05 2.978494593e-07 0.000253175366 0.0008146783152 0 0 0 162860.2091 0 0 0 2.02520801e-21 1.716880385e-28 0 0 0 0 0 0 0 0 0 2.00409617e-23 0 0 0 0 9.515838102e-13 0 0.2186720353 109.1934205 0 3.269496077e-05 0 0 2.953968755e-26 1.165657767e-15 0 768.7914574 3.424470131e-11 0 0 0 0 0 0 0 92634.14847 3.129071737e-07 0 0 1.510628979e-06 224.8183814 0 0 0 0 0 0 1.906098212 6.409589163e-10 4.457950164e-17 0 1.716686476e-19 0 930405.1022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.662786825e-23 0 285.9952424 7.697832499e-12 0.06675642702 0 2.363546765e-08 1.787833617e-05 0 0 0 0 0 0 0 0 2.695146666e-06 0 4.342772165e-06 0 0 0 0 0 0 0 0 0 368.7910364 0 0 8125.834559 0 0 0 0 0 0 0 0 0 0 1.735824205e-33 0 0 0 0 0 0 0 0 0 0.0004976392257 +0 0 0 0 0 0 7.738062169e-10 8.966871156e-08 0 0 0 0 0 0 0 0 0 2.085387314e-16 4.097363029e-23 0 0.9325431574 0 0.5385054517 0 0 0 0.005972564496 0.000342562364 0 0 7.649625717e-10 0 1.081952083e-18 0 0 0 0 0 0 0.9907327738 0 0 4.88388478e-14 0 0 0 0 0 0 0 0 0 0 0 0 5.08650852e-16 0 3.680132698e-25 0 4.007325738e-16 0 0 0 0 0 0 1.822065277e-07 0 2.757683192e-09 0 4.85253047 0 0 0 0 1.549743063e-07 2.246344583e-05 0 0 0 0 0 0.0001177473466 0 0 0 0 0 0 0 1.151025375e-44 0 0 0 0 0 0 103522.4693 1.195253773e-13 0.05272189001 0.000436114984 0 0 0 0 0 0 0 72642.16916 1.693231396e-34 0 4.34789613e-42 0 0 0 2.260636585e-16 0 0 0 0 0 0 0 0 0 66.27105574 0 0 3.19744367e-09 1.157000152e-17 1.789837165e-11 1942.593855 0 1.521783784e-29 44.75941096 0.0006910161542 4.001641338e-12 0 311123.8516 0 1.620775813e-07 3.632168798e-34 0 5.243377408e-10 0 0 1.718316318e-14 0.1609608266 9.873370142e-05 0 4.503185658e-05 0 0 4.48979604e-29 0 0 0 0 0 0 0 0 1479.098364 0 3.571526226e-25 0 0 1.672936606e-26 0 0 0 5.865007495e-20 2.127634001e-09 0 0 0 0 0 2.094348726e-29 0 0 0 0 0 0.05659245619 0 0 5.054394374e-16 9.617218011e-07 4.269392828e-41 0 7.890827689e-11 5.304715693e-24 0 0 0 0 0 0 0 5.81954222e-27 1.648306443e-14 0 0 127484.6063 3.304834661e-09 0 7.220300627e-06 0.0006380344858 0 0 26.33699095 1.850410046e-06 209525.7524 0 0 113.4237866 16.51339763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2935.994373 0 4.588956117 0 0 0 0 1.904416016e-16 0 8.223310535e-08 0 3.570112676e-18 20.34381324 0 0 0 0 3.585556438e-05 0 1.387208957e-09 3.140445337e-10 2.992784722e-24 2.657939355e-16 0 240885.9404 0 1.481839081e-17 0.1931683933 0 110300.6692 0 0 0 0 2.016569488e-24 45919.52077 0 0 0 0 0 0 0 0 0 0 1.101336487e-18 0 0 4.994984126e-25 2.634997575e-28 0 0 36.87141988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [sample_PSD/image.dat] N: +1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 2 0 0 0 0 0 0 0 2 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 2 1 0 0 2 0 0 0 2 0 0 0 0 0 0 1 1 1 0 0 1 1 0 2 0 1 1 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 2 0 0 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 2 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 2 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 +0 0 0 0 1 0 0 0 0 2 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 2 0 1 0 1 0 0 0 0 0 0 1 0 0 0 2 1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 4 0 0 1 1 0 0 0 3 0 0 0 1 1 0 0 0 1 0 0 1 1 2 0 0 1 2 0 1 1 1 1 1 0 1 0 2 0 0 0 0 2 1 0 0 1 1 1 0 1 0 1 2 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 2 1 0 0 +1 1 0 1 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 2 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 2 1 1 2 0 1 1 0 0 0 0 0 0 1 0 1 2 1 2 0 0 1 2 0 0 0 1 0 0 1 0 0 0 0 1 0 0 2 1 0 0 0 1 2 0 1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 2 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 2 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 2 0 0 2 0 1 1 2 1 1 0 0 0 1 0 0 0 0 1 0 1 2 1 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 2 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 +0 1 0 0 2 1 0 2 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 2 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 2 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 1 4 1 0 2 0 0 0 0 0 1 0 0 0 2 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 2 1 0 0 0 0 1 1 0 0 0 0 0 0 1 2 1 0 1 1 1 2 2 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 2 0 3 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 +1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 2 1 1 1 0 1 0 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 1 2 0 0 0 0 1 0 1 1 0 1 0 1 0 1 2 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 2 0 1 1 0 0 1 0 0 0 1 2 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 1 2 0 0 1 0 2 1 1 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 2 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 1 0 1 0 0 1 0 1 1 1 0 2 1 0 0 0 0 1 2 0 0 0 1 0 1 1 1 2 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 2 1 2 3 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 1 2 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 2 1 0 0 1 1 1 1 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 2 0 1 1 0 0 0 0 0 1 0 0 2 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 2 0 0 0 0 +0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 1 0 1 2 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 2 0 0 1 0 0 0 2 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 2 0 1 1 0 1 1 0 0 1 0 2 1 1 1 1 2 0 0 0 0 2 0 0 0 0 0 0 2 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 2 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 3 0 0 1 0 0 0 0 0 3 2 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 3 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 2 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 2 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 2 1 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 2 1 0 1 0 0 0 1 1 0 0 2 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 4 1 0 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 2 0 1 0 1 0 1 1 0 1 1 2 1 0 0 0 0 2 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 2 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 1 0 0 2 2 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 2 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 2 0 0 0 1 0 0 1 0 0 1 0 1 2 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 2 0 2 0 2 4 0 1 0 0 0 2 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 2 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 1 0 0 0 2 2 1 0 0 0 1 2 1 1 0 1 2 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 2 0 0 2 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 +0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 1 0 0 0 0 0 2 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 0 3 0 0 0 1 3 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 0 0 2 0 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 3 0 1 0 1 0 0 3 0 0 0 1 0 0 0 0 0 3 0 1 1 0 0 1 0 0 0 1 1 0 0 0 1 0 2 0 0 3 0 1 0 0 0 1 1 2 0 2 1 1 0 0 0 0 0 0 0 1 1 3 0 0 0 1 1 2 0 0 1 0 0 0 0 1 0 1 2 1 1 1 2 2 0 2 2 1 0 2 1 0 2 1 0 0 2 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 3 0 0 0 +0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 2 2 0 0 0 0 0 2 1 0 0 0 0 0 2 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 2 0 2 1 1 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 0 0 2 0 0 1 0 0 2 0 1 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 2 0 1 2 0 0 0 2 0 1 2 0 0 1 1 0 0 0 0 2 1 1 0 0 0 1 1 1 1 1 1 0 0 0 2 1 2 0 0 0 0 0 0 0 1 0 0 1 1 1 2 0 0 0 0 0 0 0 1 2 1 0 1 1 0 1 0 1 0 0 0 1 0 2 0 0 0 1 0 1 0 1 0 0 0 0 3 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 1 2 0 1 1 1 0 1 0 0 0 1 1 1 2 0 1 0 0 0 1 0 0 0 0 1 0 2 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 +1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 2 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 2 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 2 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 2 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 1 1 1 2 0 1 1 0 0 0 1 0 0 0 2 0 0 1 0 0 1 0 0 0 3 2 0 0 0 1 0 1 0 2 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 2 1 0 0 0 1 0 0 0 1 0 0 1 0 1 3 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 0 0 0 0 0 +2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 2 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1 1 1 0 0 2 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 2 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 2 1 0 1 1 1 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 +0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 2 0 0 0 0 3 0 1 1 0 1 2 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 2 1 2 0 0 0 0 0 2 2 0 0 0 0 0 2 0 1 1 2 0 0 1 0 2 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 2 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 2 0 0 1 0 0 1 0 0 0 2 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 +0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 2 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 2 0 0 1 1 0 0 0 2 0 0 1 1 1 0 0 1 0 4 0 0 1 0 0 2 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 2 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 1 3 0 1 0 0 0 1 1 0 0 0 0 3 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 2 1 1 0 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 2 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 2 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 2 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 +0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 2 0 0 0 1 0 0 0 0 0 0 0 0 2 2 0 1 0 2 0 0 1 0 0 2 1 0 0 0 0 1 0 0 1 1 0 1 2 1 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 2 0 0 0 0 0 1 0 0 2 0 1 1 1 1 1 1 0 2 1 1 1 0 0 1 2 0 0 1 0 0 0 0 1 0 0 0 0 2 0 2 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 2 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 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 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 0 1 0 0 0 1 1 2 1 0 0 0 0 0 1 0 1 0 2 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 2 1 0 0 0 2 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 2 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 2 0 0 1 0 1 0 0 0 0 0 0 2 1 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 2 1 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 0 +1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 2 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 2 1 0 0 0 0 0 0 0 1 2 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 2 2 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 1 1 1 2 1 0 1 0 0 0 2 2 0 0 0 2 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 2 0 0 1 0 1 3 0 2 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 2 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 2 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 2 0 1 1 0 1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 1 1 2 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 2 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 2 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 2 0 0 2 0 1 5 2 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 2 0 0 0 0 1 0 0 0 0 1 0 0 1 3 0 1 0 2 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 2 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 +0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 3 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 2 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 3 0 0 0 0 0 2 0 0 0 2 3 1 1 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 2 0 0 0 1 1 1 1 0 0 0 1 4 1 0 0 0 1 1 1 2 1 1 0 0 0 0 0 0 0 2 0 2 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 2 0 1 0 0 1 1 1 0 1 0 0 3 2 0 1 0 1 0 0 0 1 0 0 0 2 1 1 1 1 0 0 0 0 0 0 0 2 0 0 1 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 1 0 0 1 0 0 2 0 1 1 0 0 0 1 2 0 2 0 0 0 0 1 0 0 0 2 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 1 0 0 0 1 0 0 0 1 0 0 1 0 2 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 0 2 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 2 0 0 0 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 1 0 0 1 0 0 0 1 2 1 0 2 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 2 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 2 0 2 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 2 0 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 2 0 0 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 +0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 1 0 2 0 0 0 2 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 3 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 3 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 2 1 1 1 1 0 0 2 0 1 0 1 0 0 0 2 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 1 0 2 0 0 0 1 2 1 1 1 0 1 0 0 0 0 0 0 2 1 0 1 1 0 0 1 2 2 2 2 1 0 0 1 1 0 0 1 0 0 0 2 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 2 0 1 0 0 1 0 0 2 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 +0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 3 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 3 1 0 1 0 1 2 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 2 0 0 0 0 0 1 0 0 1 0 1 0 0 2 0 1 1 1 1 0 0 2 0 1 1 1 1 2 1 0 0 0 2 0 0 0 0 0 3 0 0 1 0 0 0 0 1 1 0 1 0 0 2 0 1 0 0 1 1 1 0 1 1 3 0 1 1 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 2 1 0 1 0 0 0 1 1 0 0 3 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 2 0 0 1 0 2 0 2 1 0 1 0 0 2 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 2 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 2 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 2 3 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 2 1 1 2 1 1 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 +0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 2 1 1 0 1 0 0 0 0 1 0 1 2 1 2 0 0 0 1 2 1 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 1 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 1 0 1 0 0 0 1 2 1 0 1 1 1 2 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 2 2 0 0 0 0 1 1 0 2 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 2 0 2 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 2 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 +0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 2 0 0 2 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 2 1 0 3 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 2 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 3 0 0 0 1 1 0 2 1 1 0 1 2 1 1 0 0 2 0 0 1 0 0 0 1 1 4 1 1 0 2 0 0 0 0 0 0 1 0 1 1 2 0 0 0 0 1 1 2 1 0 0 0 0 1 1 1 0 0 2 1 0 0 0 2 1 2 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 1 1 2 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 +0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 1 1 0 0 1 0 2 1 0 0 0 1 0 1 0 1 0 2 0 0 0 0 1 0 1 0 0 1 1 0 2 1 1 1 2 0 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 3 1 0 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 2 0 0 1 3 0 0 0 0 0 1 1 0 0 0 1 1 1 0 3 0 0 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 2 1 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 2 0 1 1 2 1 0 0 2 1 0 0 0 2 0 1 0 1 0 0 0 0 1 2 1 2 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 0 2 0 0 0 0 0 0 1 0 1 2 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 +0 0 0 1 0 2 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 1 1 1 0 0 2 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 2 0 1 0 0 1 0 2 0 0 1 2 0 0 0 0 1 0 0 2 1 0 1 1 1 1 0 1 0 2 1 0 2 0 1 1 0 0 0 1 0 0 1 1 2 1 1 2 0 0 0 1 1 1 2 1 0 0 0 0 0 0 0 2 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 2 0 0 1 0 1 1 0 3 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 3 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 2 0 1 0 0 0 1 0 2 2 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 2 0 0 1 2 0 0 1 2 0 1 0 1 1 1 1 0 1 0 1 0 0 0 3 2 0 0 2 0 1 1 0 0 1 1 3 0 1 0 0 0 0 0 0 1 1 1 0 0 2 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 2 0 0 1 0 1 1 2 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 2 1 0 1 1 1 0 2 0 1 0 0 1 0 0 1 0 0 0 0 2 0 1 2 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 +0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 2 0 1 0 0 0 0 0 0 2 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 1 1 0 2 1 0 1 1 0 0 0 2 0 0 2 1 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 2 0 0 0 0 1 1 1 0 1 1 1 3 0 0 1 0 0 0 0 1 0 1 0 1 4 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 2 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 2 0 2 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 2 0 0 1 0 0 1 0 0 1 0 2 0 0 1 1 1 1 1 1 1 1 0 2 0 0 0 0 0 3 1 1 0 0 0 0 0 0 0 0 1 2 0 1 0 0 1 0 2 1 0 0 0 0 0 2 0 0 0 1 1 0 3 0 3 0 0 1 1 1 0 0 0 1 0 1 2 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 2 0 0 1 0 0 0 0 0 1 0 +0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 2 1 0 3 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 2 0 1 1 0 1 1 1 2 0 0 1 1 2 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 3 0 1 0 0 0 0 0 2 0 0 1 2 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 2 1 0 0 1 0 1 2 0 1 0 1 0 0 0 0 0 0 0 2 0 0 1 1 2 2 0 2 2 0 1 0 0 2 1 0 0 0 0 0 0 1 1 0 1 0 1 2 2 1 0 1 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 1 0 0 2 0 0 1 0 1 0 2 0 0 0 3 0 1 1 1 0 0 0 2 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 0 0 0 +0 0 0 0 0 1 0 0 1 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 0 2 0 2 1 1 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 2 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 2 3 0 0 0 1 0 1 2 1 0 0 0 0 0 1 1 1 2 1 3 0 1 1 3 1 2 1 1 0 2 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 1 3 1 1 0 0 1 0 2 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 2 0 2 1 0 0 0 0 0 0 2 0 0 0 3 2 0 0 0 1 0 1 1 0 0 0 0 0 0 0 2 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 2 0 +0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 3 1 0 0 0 1 0 2 0 0 1 2 0 1 2 0 0 1 0 0 0 1 1 2 0 0 1 1 1 2 3 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 2 0 2 0 1 0 2 0 0 0 0 0 0 0 2 0 1 2 2 1 0 1 1 1 0 0 2 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 3 0 3 0 0 1 0 1 0 2 0 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 2 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 2 1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 2 0 0 0 1 0 4 0 2 1 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 1 1 1 0 0 0 2 0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 1 0 0 0 0 1 2 0 0 0 1 1 0 1 0 0 2 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 1 2 0 1 0 1 0 1 0 0 0 1 0 0 0 1 2 0 0 0 1 1 0 2 0 3 0 1 1 1 0 0 0 1 1 0 0 0 2 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 2 1 2 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 2 0 0 0 0 0 1 2 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 +0 0 1 0 0 0 1 0 0 1 2 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 2 0 0 0 0 2 0 0 0 0 0 0 1 0 2 1 2 0 0 0 0 1 0 2 0 0 1 0 1 1 0 0 1 1 0 1 0 0 3 0 1 2 0 0 0 0 0 2 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 2 0 1 2 0 0 1 1 1 0 1 0 0 0 0 1 1 2 1 0 1 0 1 0 0 0 0 1 0 0 1 3 1 0 1 2 1 0 0 0 0 0 0 1 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 3 1 1 0 1 1 1 0 1 2 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 2 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 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 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 1 0 0 1 0 2 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 3 0 0 1 1 0 1 0 0 2 0 1 1 1 1 2 2 1 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 3 1 0 1 0 0 0 0 0 3 0 0 0 1 0 2 1 0 0 0 0 0 0 0 0 0 2 1 2 0 0 1 0 0 2 0 0 0 0 0 1 1 0 0 0 3 0 2 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 1 +0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 3 1 2 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 2 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 0 0 2 0 1 1 0 3 1 1 0 0 2 2 1 0 0 1 1 0 2 1 1 1 1 0 0 1 0 0 0 0 0 2 3 2 0 0 1 1 0 1 0 1 2 0 1 3 1 2 0 1 0 0 0 1 1 1 1 0 2 0 2 0 0 0 0 1 2 0 1 1 0 1 0 1 0 2 1 0 0 1 0 0 0 0 0 2 1 0 0 0 1 1 1 0 0 0 1 1 1 2 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 0 +0 0 0 1 0 0 0 0 0 1 2 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 2 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 3 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 2 0 1 1 1 1 0 0 1 0 0 0 3 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 2 2 0 0 1 1 1 2 0 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 0 1 0 2 0 1 0 1 2 0 0 0 2 2 0 1 1 0 1 0 0 0 0 1 2 1 0 1 1 0 2 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 2 1 1 0 0 0 1 1 2 0 1 0 0 0 1 1 2 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 +0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 2 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 0 0 1 1 0 0 0 1 2 0 2 0 0 0 1 0 0 2 1 1 0 0 1 0 0 0 0 1 0 0 0 2 0 0 1 0 1 0 2 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 1 0 3 2 0 0 1 3 1 0 0 0 1 0 0 1 0 2 2 0 0 0 1 0 1 1 1 2 0 0 1 0 0 2 2 1 0 0 2 2 0 0 0 1 1 1 0 0 0 0 2 0 3 0 0 0 1 0 2 1 0 0 1 1 1 0 0 0 1 0 0 1 0 4 0 0 0 0 1 0 1 1 1 0 0 2 0 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 3 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 2 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1 0 0 0 1 0 0 1 0 3 0 0 1 0 1 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 2 0 0 0 1 0 1 2 1 0 2 0 0 2 0 1 0 2 1 0 1 0 3 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 1 1 2 0 0 1 0 1 0 1 0 0 0 2 2 0 0 1 0 0 0 0 0 0 0 1 1 3 0 1 1 0 1 0 1 0 1 1 0 0 2 0 1 1 3 0 0 2 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 2 0 0 0 0 0 0 1 1 2 1 0 1 2 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 3 3 2 1 0 1 2 1 1 0 0 0 2 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 1 0 2 0 0 1 1 1 0 1 1 0 0 4 0 0 0 0 0 1 2 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 2 3 0 0 2 0 0 0 1 0 2 1 0 1 2 3 1 2 0 0 0 1 1 0 0 0 0 0 3 1 1 1 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 3 0 1 0 0 0 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 +0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 2 1 0 1 0 0 0 0 2 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 2 0 0 0 0 2 1 0 0 0 2 0 0 1 1 0 1 0 2 1 2 2 0 0 0 0 3 0 1 1 0 1 0 2 0 0 0 0 1 2 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 2 1 0 0 1 0 2 0 0 0 0 0 0 0 0 1 0 1 0 0 1 2 1 1 0 1 0 1 0 1 0 0 2 0 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 2 1 0 1 1 0 0 0 0 1 0 0 2 0 0 0 0 2 1 0 1 0 1 0 2 1 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 2 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 +0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 2 0 1 0 0 0 1 0 1 0 0 0 0 1 1 2 0 1 0 1 0 2 1 1 0 1 1 1 0 0 1 2 2 0 0 1 1 0 1 1 0 0 1 1 1 1 1 0 0 2 0 0 1 0 1 1 0 1 0 0 1 0 2 0 1 0 1 3 2 1 2 2 0 2 0 1 1 2 0 0 2 1 0 1 0 1 1 1 2 1 0 0 0 2 0 0 0 0 1 0 1 0 1 0 3 0 1 0 1 1 1 0 1 2 2 0 1 0 0 0 0 0 2 0 0 0 0 0 0 1 0 3 0 0 0 1 0 1 1 0 1 0 1 0 0 2 1 1 0 1 0 0 1 1 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 1 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 1 0 2 0 0 0 1 0 +1 0 0 0 0 1 1 0 0 0 0 0 0 0 2 1 2 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 2 2 1 1 0 0 0 2 1 1 0 0 0 0 0 0 0 1 2 1 0 0 0 2 1 0 0 0 0 0 0 1 1 0 1 2 1 0 0 1 0 0 1 1 0 2 1 1 0 0 1 0 0 2 0 2 1 0 0 2 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 3 0 1 2 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 2 0 1 0 0 1 0 3 1 1 1 0 1 0 1 0 1 1 1 0 1 0 0 2 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 2 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 0 0 0 3 0 1 0 0 0 0 0 0 2 1 2 0 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 1 2 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 +1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 3 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 2 2 0 0 1 0 0 0 1 2 2 1 1 1 1 0 0 1 1 3 1 5 1 0 1 1 1 0 0 0 0 0 1 0 0 2 0 0 0 1 0 2 0 0 0 1 3 3 0 0 1 0 0 0 1 0 1 1 0 2 0 0 0 0 1 1 2 1 0 0 1 2 2 0 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 2 0 1 0 1 1 0 0 0 1 0 0 1 0 1 2 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 2 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 1 1 2 1 0 0 2 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 2 1 0 1 1 1 0 +0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 0 0 0 3 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 2 0 0 2 2 0 1 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 3 3 1 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 2 0 0 0 0 1 1 0 0 0 0 2 1 1 0 0 0 0 0 0 0 2 1 0 0 0 0 0 1 0 0 1 1 0 0 2 1 1 2 2 0 2 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 3 0 0 3 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 3 0 2 1 3 0 1 1 2 2 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 2 1 0 0 0 0 1 0 0 1 0 2 1 1 0 0 0 0 0 1 0 1 2 0 0 0 0 1 2 0 0 1 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0 2 0 2 1 1 1 0 0 0 0 0 0 0 2 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 +0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 2 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 2 0 1 0 0 0 0 4 0 2 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 2 0 1 0 0 1 2 0 1 0 2 0 0 0 1 0 0 0 1 0 2 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 2 0 0 2 1 0 1 0 2 0 1 0 1 1 2 0 0 0 1 0 1 2 1 0 1 0 0 0 0 0 1 0 1 2 0 2 1 3 0 0 1 1 0 0 2 0 0 2 1 1 1 1 0 0 0 1 2 0 0 0 0 0 3 0 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 1 3 1 1 1 1 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 2 0 0 0 1 2 1 1 1 0 0 0 1 2 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 2 +0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 2 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 2 0 1 2 0 0 1 0 3 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 3 1 1 0 0 1 1 1 0 3 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 2 0 1 1 1 0 2 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 2 0 0 1 1 2 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 2 0 1 1 0 1 1 1 2 0 0 1 1 0 2 2 0 0 0 2 1 0 0 0 0 2 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 2 2 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 3 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 +0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 1 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 2 1 1 1 0 0 1 0 0 0 0 1 2 0 0 1 3 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 2 1 0 0 0 2 0 2 0 0 0 0 1 0 2 1 1 0 0 2 0 0 0 1 1 0 0 1 2 0 1 0 2 1 2 1 1 0 0 1 1 0 1 3 0 0 1 0 0 2 2 0 1 1 0 2 0 1 0 0 1 0 0 0 1 1 0 0 2 0 0 0 1 0 0 0 0 1 0 0 2 0 2 1 0 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 2 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 2 0 1 0 0 0 2 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 2 0 2 1 0 1 0 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 +0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 2 1 1 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 2 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 2 0 1 2 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 3 0 0 0 2 0 2 0 1 0 1 4 1 2 1 0 2 0 0 0 0 0 0 0 4 1 0 1 1 2 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 1 2 0 1 0 1 0 1 2 1 0 2 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 3 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 2 1 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 +0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 1 0 0 0 1 1 1 0 1 2 0 0 0 0 0 0 0 3 1 1 0 0 1 0 1 1 0 0 1 1 0 1 3 0 1 0 1 1 2 0 0 1 0 1 2 0 0 0 0 2 1 1 0 0 0 0 0 1 2 0 0 1 0 0 1 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2 1 1 1 0 1 0 0 1 0 0 0 0 0 3 0 0 1 0 0 0 0 1 0 0 0 2 2 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 2 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 2 1 1 0 1 0 0 0 2 1 0 0 0 0 1 0 0 0 0 0 0 0 1 2 0 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 3 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 +1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 2 0 1 0 2 0 1 0 2 0 0 1 0 1 0 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 2 2 1 1 0 0 1 0 1 0 1 2 1 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 3 0 0 0 2 1 1 0 0 1 1 1 1 1 1 0 0 1 1 3 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 3 0 0 1 0 2 1 0 1 1 1 2 1 1 0 0 1 3 0 1 1 1 0 2 0 1 0 0 1 0 0 1 0 0 1 0 1 1 2 1 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 1 1 1 0 0 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 2 1 0 1 1 0 0 1 0 1 0 0 2 0 0 0 3 0 0 0 0 0 1 0 0 1 0 0 2 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 0 0 2 1 0 0 0 0 0 0 1 0 1 0 2 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 2 0 1 3 0 2 0 1 1 0 0 1 0 0 0 3 0 0 0 1 0 1 0 2 1 1 1 0 1 0 0 1 0 1 0 0 2 2 1 0 0 0 1 1 1 1 0 1 4 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 2 0 0 2 0 0 0 0 1 0 1 0 0 0 0 0 2 0 0 2 1 3 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 2 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 2 0 1 0 2 1 1 0 1 0 1 1 0 1 2 1 1 3 0 0 1 1 2 1 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 2 1 0 1 1 1 0 2 0 0 1 0 1 1 0 1 0 1 2 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 3 0 0 1 0 1 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 1 0 0 0 3 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 3 1 1 1 0 1 0 1 0 1 1 1 2 1 1 0 0 1 0 1 2 1 0 1 0 1 1 0 0 1 0 1 0 3 4 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 1 2 2 3 2 0 0 1 0 1 4 0 0 0 1 1 2 0 2 0 1 0 0 0 1 0 0 0 0 2 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 1 0 0 0 0 1 2 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 +0 1 0 0 0 0 2 0 0 0 0 1 0 0 2 0 0 1 1 0 3 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 2 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 2 0 1 0 0 1 0 0 1 1 1 1 0 1 0 3 0 0 3 0 1 0 0 1 0 1 0 2 1 1 1 1 0 1 0 0 0 1 0 0 0 0 2 2 0 0 0 2 2 2 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 2 1 2 0 0 0 0 0 0 3 1 0 1 0 0 0 1 0 1 0 0 1 1 0 2 1 1 3 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 2 1 1 0 1 0 1 1 3 0 0 0 0 3 1 2 1 0 1 0 1 1 0 0 0 1 2 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 1 2 0 0 0 2 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 +0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 2 0 0 0 1 1 0 2 0 0 2 0 0 3 3 3 0 2 1 0 3 0 0 1 0 0 1 1 0 0 0 3 1 1 0 0 2 0 1 0 1 0 1 1 0 1 0 0 1 1 2 1 1 2 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 2 3 1 0 0 1 1 0 0 0 0 0 3 2 0 0 1 1 1 3 0 0 0 1 1 0 1 1 1 1 1 0 0 0 1 0 2 0 0 2 0 1 0 0 1 0 3 2 1 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 1 0 0 2 0 0 0 1 0 1 1 0 1 0 1 0 2 0 0 2 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 1 2 1 0 0 1 0 0 0 0 1 0 0 2 2 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 2 0 0 1 0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 1 1 0 0 0 2 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 2 2 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 2 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 0 0 3 0 1 0 2 0 0 2 1 2 0 0 0 1 2 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 1 2 0 1 0 1 1 0 0 1 0 1 1 2 1 0 3 0 0 1 3 1 0 0 1 0 0 3 1 0 1 0 0 2 1 0 1 1 0 0 1 0 2 1 2 0 0 0 1 0 0 1 2 0 3 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 2 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 +0 2 0 1 0 0 0 0 0 0 0 0 1 0 3 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 2 3 0 0 0 0 0 0 0 0 1 1 2 0 2 1 0 0 1 0 0 3 0 1 0 1 1 2 1 0 1 0 0 1 1 1 2 1 0 1 1 0 1 1 0 0 0 1 2 0 0 0 1 0 0 0 0 0 2 0 0 1 0 2 1 1 2 1 1 0 2 0 1 0 1 0 0 0 0 1 2 0 1 0 3 0 3 1 0 1 0 1 1 1 1 0 2 0 0 1 0 0 0 0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 3 1 0 2 1 0 1 0 0 0 0 0 0 2 0 0 0 1 1 0 0 1 0 1 0 2 1 0 0 1 1 2 0 1 0 2 0 0 0 0 1 0 0 0 0 1 0 0 1 2 1 0 1 0 1 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 0 0 1 1 0 0 2 1 1 1 0 0 0 0 +0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 3 0 1 1 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 2 0 1 0 2 0 2 0 1 0 1 0 0 1 2 1 0 2 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 3 1 1 3 0 0 1 2 1 0 0 1 1 0 0 0 0 0 1 2 0 1 0 0 0 2 1 0 0 1 2 0 1 2 1 0 1 1 1 2 2 1 1 1 0 1 0 1 1 2 0 0 2 1 1 1 1 0 2 0 0 0 1 1 1 0 1 0 1 1 0 3 1 0 2 0 0 2 0 1 1 2 1 2 0 1 1 3 1 0 1 0 0 4 0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 2 0 2 0 0 1 0 2 0 1 0 0 1 2 0 2 1 2 0 0 3 1 0 1 1 0 1 0 0 0 3 2 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 2 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 +1 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 3 0 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 2 1 2 1 0 0 0 1 2 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 2 0 0 1 0 0 1 2 0 1 0 2 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1 3 1 1 0 1 1 1 2 1 2 1 0 0 2 0 0 0 0 0 0 0 1 0 0 0 3 1 0 0 1 1 2 0 0 0 0 0 3 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 2 0 0 0 1 0 0 1 0 0 1 1 0 1 1 0 0 2 0 0 0 0 1 1 1 1 0 2 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 2 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 2 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 +1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 2 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 2 0 0 0 0 1 1 3 0 0 0 0 0 2 0 1 1 1 1 0 1 2 0 0 1 0 1 1 2 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 2 1 1 0 1 0 1 0 0 2 2 0 1 0 0 0 0 0 1 3 1 2 0 1 0 1 0 1 1 1 1 0 0 0 1 0 2 0 4 2 1 2 0 1 0 0 1 0 0 1 1 1 2 1 0 0 0 1 4 0 2 1 0 1 2 0 2 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 3 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 3 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 2 0 0 2 2 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 2 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 +0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 3 0 0 1 1 0 1 2 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 2 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 2 0 2 0 2 2 0 0 0 1 0 2 0 0 0 2 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 3 1 0 1 0 2 1 1 1 2 1 0 0 0 0 0 1 1 1 2 0 2 1 0 1 0 2 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 2 0 1 2 1 0 0 1 1 1 1 0 1 2 1 1 0 1 1 0 1 1 1 0 2 1 2 0 0 0 0 1 1 1 1 0 2 0 2 0 0 1 0 1 0 2 1 1 0 0 0 1 0 2 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 0 1 1 0 2 1 0 2 0 0 1 0 1 2 2 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 +0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 2 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 2 1 2 2 0 0 1 0 1 0 0 0 2 0 2 0 0 0 0 1 1 0 1 1 0 0 0 2 1 0 1 1 0 0 2 1 1 0 1 0 1 0 3 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 2 0 0 1 0 0 0 2 2 0 0 0 0 1 3 1 2 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 3 1 0 0 0 2 0 1 0 1 0 0 0 1 1 1 2 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 +0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 2 0 1 0 0 0 0 0 0 1 0 2 1 1 1 0 2 1 1 0 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 2 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 2 0 0 0 1 1 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 1 0 1 1 0 0 2 3 0 2 0 1 2 1 0 1 0 0 0 0 1 0 1 1 2 0 0 0 1 1 0 1 1 0 1 0 2 2 0 1 1 1 0 1 1 0 0 1 2 0 0 0 0 0 0 0 1 2 1 0 0 1 1 0 0 1 2 0 0 2 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 2 0 0 0 0 0 0 0 1 0 0 0 1 2 1 0 1 0 0 0 1 1 1 0 0 1 1 1 2 0 1 3 0 0 1 1 1 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 2 2 0 1 0 2 0 0 1 0 1 1 1 0 0 0 0 2 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 2 0 0 2 0 0 0 2 0 0 0 0 0 +0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 1 0 0 0 0 1 3 0 1 2 0 1 0 0 0 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 2 0 2 0 2 0 1 1 0 0 2 0 1 0 0 1 1 0 1 1 3 1 0 0 3 0 1 0 0 0 0 1 0 0 0 0 2 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 2 0 2 0 0 1 0 3 0 4 0 0 3 0 1 0 2 0 0 2 0 1 1 0 1 0 2 0 1 0 0 2 0 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 3 0 1 2 0 1 2 1 0 1 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 2 1 2 0 0 0 1 0 1 0 2 2 2 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 1 2 3 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 2 1 0 2 1 0 0 0 1 0 1 0 2 0 2 3 1 0 0 2 0 1 0 2 1 1 2 0 1 1 0 0 0 1 0 0 2 3 0 0 2 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 0 0 3 1 0 0 2 1 0 0 0 0 1 1 2 1 0 1 1 1 0 1 1 1 2 1 1 0 1 0 0 0 0 0 2 0 1 2 1 0 1 0 0 1 0 0 2 1 0 1 0 3 1 0 0 0 0 1 1 0 2 0 0 0 0 1 0 2 1 2 0 0 0 2 1 1 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 2 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 4 0 0 0 0 0 0 0 2 0 1 0 0 1 1 0 0 1 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 +0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 2 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 3 2 0 0 0 0 1 0 3 0 0 1 1 0 1 0 1 0 0 0 0 1 2 1 0 1 1 3 2 0 0 0 0 0 1 0 3 0 2 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 2 0 1 0 1 0 1 0 0 4 0 1 0 2 2 2 0 0 1 0 0 0 0 1 2 0 0 1 0 1 0 0 1 0 0 2 2 1 2 0 0 0 2 0 1 0 0 3 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 4 0 0 0 1 0 0 2 0 1 0 0 0 1 0 0 1 0 2 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 +1 1 1 1 2 0 0 2 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 1 1 2 0 1 0 0 0 1 0 1 0 1 0 0 0 1 2 1 0 0 1 2 0 0 1 0 2 3 0 0 0 1 1 0 0 0 2 1 0 0 1 1 1 1 0 1 1 1 3 0 0 0 0 1 0 0 2 0 0 0 1 0 1 1 0 0 1 1 1 0 2 0 0 2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 1 2 1 0 1 1 0 1 1 1 2 0 1 0 1 1 1 2 0 1 0 1 1 0 0 0 1 0 0 0 0 2 0 1 0 0 1 0 1 0 0 0 3 1 0 0 1 0 0 1 1 0 2 1 0 0 2 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 2 0 0 0 0 3 0 1 0 0 0 0 1 +0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 1 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 4 0 0 2 0 0 1 3 0 1 2 0 0 0 0 2 0 1 1 0 1 1 1 0 1 0 1 3 0 0 1 1 1 2 2 0 0 0 2 0 2 1 3 1 0 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 1 0 2 1 0 0 0 0 1 2 0 0 1 0 1 2 0 1 0 0 0 0 0 2 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 2 1 0 1 0 0 0 2 0 0 0 0 0 0 1 1 0 1 1 0 0 0 2 1 1 0 1 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 1 1 0 0 2 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 2 1 0 2 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 2 1 0 0 0 0 1 1 2 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 0 3 0 2 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 3 2 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 2 0 1 0 0 1 2 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 0 0 3 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 0 3 0 0 0 1 2 1 0 1 1 1 1 1 0 2 1 1 1 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 2 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 +0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 2 1 0 1 0 0 0 1 0 5 1 1 0 0 1 1 1 2 2 1 0 2 1 3 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 2 2 1 0 1 0 1 0 1 0 1 1 0 2 1 1 0 1 1 2 0 0 0 0 0 1 1 0 1 0 3 2 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 2 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 2 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1 0 0 1 2 2 1 0 0 0 1 2 0 1 0 1 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 1 0 0 0 2 1 0 1 0 0 1 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 0 1 0 0 0 0 +0 0 1 0 0 0 1 0 1 0 2 0 0 1 2 0 1 1 0 0 0 0 0 1 0 0 0 3 0 0 0 0 1 1 0 1 1 2 0 1 0 0 1 1 0 1 0 0 0 2 0 2 2 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 2 0 0 1 0 0 1 2 1 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 2 0 0 1 0 0 0 0 0 0 1 2 0 3 0 0 2 0 1 0 0 0 0 1 0 0 1 1 1 0 2 0 0 1 1 0 0 1 0 0 3 2 0 1 2 0 0 0 1 0 1 0 1 2 1 0 0 2 0 1 1 0 2 2 1 0 0 1 1 1 0 2 0 0 0 1 0 3 0 0 0 0 0 0 0 1 2 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 1 2 0 0 2 1 1 1 1 0 1 0 1 2 1 0 1 0 1 1 0 0 3 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 3 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 1 0 0 0 2 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 2 2 0 0 1 1 0 0 0 2 0 1 0 0 0 0 0 0 1 0 2 1 0 2 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 3 2 0 0 0 0 1 0 2 1 0 0 1 2 2 0 2 2 1 1 0 0 0 0 0 2 1 0 1 1 0 2 2 1 0 0 1 0 0 0 0 1 0 2 0 1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 2 0 0 0 0 0 3 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 3 2 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 2 1 1 0 0 0 2 1 0 0 1 +0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 1 0 0 0 1 2 0 0 2 1 1 1 2 2 0 0 0 1 1 1 0 0 2 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 2 0 0 2 0 2 0 0 2 2 2 1 0 3 0 2 0 2 1 2 0 0 0 1 1 0 1 2 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 3 4 2 0 1 1 0 1 0 2 0 0 0 1 2 0 2 1 2 0 1 0 2 1 0 1 1 1 0 1 1 2 0 0 1 2 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 2 1 1 0 0 4 1 2 1 0 3 0 1 0 0 2 1 0 0 0 1 0 0 1 0 0 3 1 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 2 0 1 0 1 1 0 0 1 1 0 0 0 0 0 2 0 0 2 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 3 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 +0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 2 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 2 0 0 0 0 0 2 0 1 3 0 0 0 0 1 2 0 0 0 0 0 0 2 0 1 0 1 0 0 3 2 0 1 0 1 0 0 0 2 0 0 0 0 1 0 2 0 0 1 0 0 1 0 0 1 0 0 0 0 2 2 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 2 0 0 1 2 0 0 1 0 0 1 1 1 0 0 0 2 0 1 1 0 1 0 0 0 0 1 0 1 2 0 1 0 1 1 3 2 0 2 0 1 1 2 0 0 0 0 0 1 0 1 0 0 0 0 1 2 0 1 0 1 0 1 0 1 1 0 2 0 0 1 1 2 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 2 0 1 0 2 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 +0 0 0 1 0 0 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 2 1 0 0 1 0 0 2 0 0 0 0 0 0 0 0 1 2 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 2 0 0 1 1 0 1 2 1 0 2 0 0 1 0 1 1 2 1 1 1 2 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 0 2 0 0 0 1 1 1 1 1 2 1 0 0 1 2 0 1 0 1 1 0 1 0 3 0 0 1 0 1 1 0 1 0 1 0 1 3 1 0 0 2 1 0 0 1 2 0 1 0 2 0 1 0 0 0 0 0 0 1 0 0 1 3 0 1 1 2 1 0 2 0 1 0 0 0 0 1 0 0 2 1 0 1 0 1 0 0 0 0 2 1 2 0 1 1 0 1 1 0 0 3 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 1 +0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 2 0 0 0 0 0 1 1 0 2 2 0 1 1 0 0 1 0 2 1 1 0 1 0 0 1 0 3 0 1 1 0 1 0 1 1 0 0 1 0 0 0 0 2 2 1 0 0 0 0 1 0 0 1 1 1 1 1 0 0 3 0 0 1 0 0 0 0 2 2 2 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 2 0 2 0 1 0 0 0 0 0 0 1 2 1 1 1 1 0 0 2 1 0 1 0 0 0 0 2 0 0 0 2 2 1 0 0 1 1 0 2 1 0 0 2 1 0 0 2 1 0 1 0 0 0 1 0 2 0 2 2 1 2 1 0 0 0 1 0 1 1 2 0 1 0 1 3 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 2 0 2 0 0 1 0 1 1 1 0 0 0 0 1 1 2 0 0 0 1 0 1 0 0 0 0 2 1 0 5 1 0 0 0 0 1 0 2 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 2 0 1 0 1 1 0 1 0 0 0 +1 0 0 1 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 2 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 2 1 0 3 3 0 2 0 0 0 2 0 1 1 0 0 0 3 0 0 1 0 1 1 1 2 2 0 2 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 2 0 0 0 0 0 3 0 1 1 0 3 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 2 0 0 0 0 1 2 0 0 1 1 1 0 1 0 1 0 0 1 2 1 2 1 0 0 1 0 1 0 0 0 0 1 0 1 2 0 0 1 2 0 1 1 0 2 0 0 1 2 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 2 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 3 0 0 0 0 0 0 0 +0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 2 1 0 0 0 0 0 1 0 1 0 2 0 0 0 2 0 0 1 0 1 2 0 0 1 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 2 0 0 1 0 1 0 0 0 0 0 2 0 2 1 0 1 3 1 1 3 1 2 1 1 0 0 1 0 0 0 1 2 1 0 0 0 0 2 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 2 1 0 1 0 2 0 0 3 2 2 0 0 0 2 0 1 2 0 3 1 1 0 0 0 0 1 2 0 1 1 0 1 0 1 0 1 0 1 1 3 0 0 0 1 2 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 3 0 2 0 1 0 1 0 0 1 0 1 0 1 2 0 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 2 0 1 0 0 0 1 1 1 0 0 2 1 0 0 0 1 0 0 0 1 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 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 +1 0 0 0 0 0 0 0 0 0 0 1 0 1 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 2 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 2 0 0 1 0 0 1 0 1 2 1 1 2 0 0 0 0 1 1 0 1 0 0 1 0 1 2 0 0 1 1 0 1 1 1 1 0 1 1 2 2 0 2 0 0 0 1 0 2 2 1 0 1 0 1 1 0 0 1 3 0 1 0 0 1 0 0 0 1 1 0 0 1 3 1 0 0 1 0 0 0 0 0 2 0 0 1 2 2 0 0 0 0 0 1 2 2 1 0 2 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 2 2 0 1 1 1 1 2 0 0 1 0 1 1 2 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 +1 0 0 1 0 0 0 0 1 0 0 0 3 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 1 0 0 2 0 2 0 1 1 0 2 0 1 0 1 0 2 0 1 2 0 0 0 2 0 0 0 1 0 0 1 0 1 0 0 1 3 0 1 1 0 0 3 2 1 0 0 0 0 0 2 0 0 1 0 0 1 2 1 0 3 0 0 0 0 0 1 0 2 3 0 1 0 0 0 0 0 0 0 2 1 0 1 0 0 0 0 1 1 0 1 1 2 1 0 0 0 0 0 0 2 0 1 1 1 0 0 1 0 1 2 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 2 0 0 1 1 1 1 1 1 0 3 0 4 1 0 0 1 0 0 0 1 0 0 0 2 0 0 0 2 0 0 1 1 1 1 1 0 0 2 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 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 1 0 2 1 1 0 0 0 +0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 2 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 2 0 0 1 2 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 2 0 1 1 0 1 2 0 1 0 2 0 0 2 2 1 0 0 0 2 2 0 2 1 0 0 0 0 0 0 1 0 1 2 0 1 0 0 4 1 0 0 0 0 0 1 1 2 2 1 0 0 0 0 1 1 1 2 1 0 1 1 1 1 0 0 0 2 0 2 2 2 0 1 0 0 1 3 2 0 0 1 1 1 1 1 0 0 2 0 0 1 0 0 1 3 1 2 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 2 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 3 1 0 0 0 1 0 2 0 0 0 0 1 1 1 1 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 +1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 2 1 1 1 0 0 0 0 3 0 1 0 0 0 0 0 1 0 0 1 2 0 0 0 1 1 1 0 0 1 1 1 0 2 2 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 2 0 1 0 1 0 0 1 0 0 0 0 0 1 2 0 0 1 0 0 0 1 0 0 2 1 2 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 3 1 2 0 4 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 1 2 1 1 0 0 0 1 0 0 0 1 0 1 3 2 0 0 1 1 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 2 1 1 1 1 0 0 1 2 1 0 0 0 0 0 0 0 1 0 3 0 0 0 0 0 0 1 0 1 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 1 0 0 1 0 0 0 3 1 0 0 0 0 +1 1 0 0 0 0 0 1 0 1 0 0 2 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 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 1 0 1 0 2 0 1 0 2 0 0 0 1 0 0 0 0 0 1 3 1 2 0 1 1 0 0 0 0 0 0 0 1 2 1 0 1 2 0 1 1 2 1 0 0 1 0 1 1 0 2 0 1 1 0 1 4 1 1 1 1 0 1 1 0 0 1 0 2 0 1 0 0 2 0 0 1 1 0 0 0 0 1 2 1 1 1 0 1 1 1 0 1 1 0 2 0 0 1 2 0 0 0 2 1 0 0 0 1 0 2 0 0 0 0 2 3 0 0 1 0 0 0 0 2 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 2 0 0 2 1 0 1 1 2 0 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 1 0 0 1 1 2 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 2 1 0 +0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 2 1 0 0 1 0 0 0 0 1 0 0 0 0 2 0 0 1 2 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 2 0 0 0 0 1 1 0 0 1 1 2 1 3 0 3 0 0 1 0 1 0 0 2 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 1 1 3 1 0 0 2 2 2 2 0 1 0 0 2 0 0 0 4 0 0 1 0 0 0 1 0 1 0 2 4 1 0 0 0 2 2 1 2 2 1 2 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 2 1 1 1 0 0 1 0 0 2 0 0 0 0 0 0 0 1 3 0 0 1 0 0 1 2 0 4 2 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 2 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 +0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 2 0 0 0 1 2 0 0 2 0 3 1 0 0 4 1 1 0 1 0 2 0 0 1 0 1 0 3 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 2 1 2 0 1 1 0 3 0 3 0 1 1 0 2 0 0 2 4 1 0 2 0 0 0 2 2 0 0 0 0 0 1 0 0 1 0 0 3 0 0 1 1 1 3 1 1 1 0 2 0 0 1 0 1 1 1 1 1 2 0 0 0 1 2 1 2 1 1 0 0 0 1 0 1 0 2 1 2 0 0 2 1 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 2 0 0 1 1 0 0 0 0 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 2 0 0 0 1 0 0 1 0 1 0 0 1 1 0 2 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 1 2 1 2 2 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 1 1 2 0 0 0 1 1 3 2 1 1 0 2 2 0 1 0 0 1 2 2 0 2 2 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 3 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 2 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 4 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 1 0 2 1 0 0 0 1 0 0 0 1 2 3 0 1 1 0 1 2 0 1 0 0 1 1 0 1 2 1 1 0 1 0 2 2 0 0 0 0 0 0 0 0 0 2 0 0 1 1 1 0 0 0 1 0 1 0 1 2 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 1 1 0 1 0 1 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 +0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 2 0 1 1 3 0 1 1 0 0 0 1 0 2 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 2 0 0 1 2 2 1 0 1 1 1 0 0 2 2 0 0 0 0 1 0 0 2 0 0 1 0 0 0 3 0 0 0 1 1 0 0 0 1 2 0 1 1 1 0 2 1 0 2 0 0 1 0 1 0 0 1 2 0 0 1 0 0 0 0 1 2 0 0 1 0 2 0 2 1 0 2 0 0 0 0 0 0 2 0 0 1 1 1 1 0 2 0 1 1 0 1 1 0 0 1 0 0 1 0 3 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 +0 0 0 1 0 0 1 0 0 0 1 1 2 0 0 0 1 0 0 3 0 1 0 0 0 0 1 0 0 1 1 2 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1 2 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 3 2 0 0 1 0 1 0 2 0 0 0 1 0 2 3 0 2 0 1 1 1 0 0 2 0 0 1 1 0 1 0 2 0 3 0 2 2 2 0 0 2 0 1 1 0 1 0 0 0 0 1 0 2 0 1 1 0 0 3 0 1 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 0 0 2 0 1 0 1 0 1 3 2 1 0 0 0 0 0 0 2 1 0 1 0 1 0 0 1 0 2 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 2 1 0 1 0 0 0 0 1 1 1 1 0 1 0 2 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 2 0 1 0 0 1 0 0 1 2 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 +0 0 0 0 0 0 0 0 1 0 1 3 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 2 0 0 1 0 0 0 0 1 0 3 1 0 0 1 2 0 0 0 2 0 0 1 0 0 0 0 0 0 0 2 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 2 0 1 1 0 1 2 0 0 0 2 0 0 0 1 1 2 0 1 0 0 0 1 0 2 0 1 0 2 2 0 0 0 0 1 2 0 0 1 1 1 0 0 1 2 1 0 2 0 1 0 1 0 0 1 1 0 2 0 1 0 1 1 1 0 0 0 2 0 1 1 3 0 1 0 1 1 0 1 2 0 2 0 0 1 3 1 0 2 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 2 0 0 3 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 2 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 1 1 0 1 0 0 0 0 1 0 1 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 +0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 2 0 0 0 0 0 2 1 0 1 1 0 0 1 0 0 0 0 2 1 0 0 0 0 1 0 0 2 0 0 0 2 0 0 0 0 2 1 1 0 1 1 1 0 0 1 1 1 4 1 0 1 0 0 0 0 2 2 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 1 1 2 0 1 2 0 3 1 1 1 0 0 2 0 0 2 3 1 1 0 1 0 1 1 0 1 1 1 2 0 0 2 1 0 1 0 1 1 0 2 3 0 1 0 2 0 1 2 0 0 1 0 1 2 0 0 0 0 0 0 0 0 1 0 0 2 1 1 0 0 0 0 1 0 2 1 0 1 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 3 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 +0 0 2 0 0 0 1 0 0 1 0 2 2 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 3 1 0 1 1 1 1 3 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 2 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 3 0 0 1 0 0 1 1 0 1 0 2 1 1 1 0 1 0 1 0 0 2 0 1 0 0 2 1 0 1 0 1 1 0 0 1 2 1 0 0 1 1 0 0 0 1 1 2 0 0 0 1 1 2 0 1 1 2 2 0 1 1 0 1 1 1 1 0 3 0 0 0 1 0 2 0 0 1 0 0 1 1 0 0 0 0 0 0 2 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 2 0 4 1 1 1 1 0 0 0 1 0 0 1 0 2 1 0 1 0 0 0 1 0 0 0 0 0 0 0 +1 0 0 1 0 2 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 3 0 0 1 1 1 0 1 0 0 0 1 0 0 2 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 2 1 1 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 1 1 1 2 0 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 2 1 1 0 1 0 0 0 1 1 2 0 0 1 0 1 0 1 0 1 0 1 0 0 1 4 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 2 1 0 0 0 0 1 2 0 1 0 0 2 0 0 1 1 1 1 1 2 1 1 0 0 0 2 1 0 1 0 0 0 0 0 2 0 1 0 0 0 1 2 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 2 2 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 2 2 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 +1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 2 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 0 0 0 1 2 1 0 1 1 0 1 0 1 0 0 0 0 1 1 2 0 0 0 0 0 3 0 0 1 1 1 0 1 0 2 1 0 0 0 1 0 1 2 0 0 0 0 0 0 2 1 0 0 3 0 0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 1 2 0 1 0 1 1 1 1 1 0 0 1 0 0 1 0 0 2 1 0 0 1 2 0 1 0 0 3 2 2 0 1 0 0 0 2 0 0 1 0 0 0 1 2 0 0 0 3 1 0 2 2 1 2 0 2 0 0 0 1 0 0 0 2 1 0 1 1 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 2 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 3 0 1 0 0 0 0 0 2 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 +2 0 0 0 1 0 0 0 0 1 1 0 0 0 2 0 0 0 2 0 1 1 1 0 0 0 0 0 0 2 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 2 1 0 0 0 1 0 0 0 1 2 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 2 1 1 0 1 0 0 3 1 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 2 0 2 1 0 2 3 2 0 1 0 2 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 1 0 0 0 0 1 0 1 1 0 2 1 0 0 1 0 1 4 1 0 0 0 1 1 1 0 0 2 2 1 3 3 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 2 0 0 1 0 1 1 1 1 2 1 0 0 2 0 0 0 0 1 1 2 0 0 1 0 0 0 2 0 2 0 1 1 1 1 0 0 2 0 2 0 1 0 0 0 1 0 0 1 0 1 0 2 0 0 0 0 0 0 1 1 1 2 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 1 +0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 3 0 0 2 0 0 0 1 1 2 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 2 0 1 0 0 0 1 0 2 0 2 1 0 0 0 1 0 1 0 1 1 2 0 1 0 1 0 1 1 1 0 0 0 1 1 0 2 1 0 0 0 3 1 2 0 0 1 1 0 0 2 1 1 1 2 0 2 0 1 2 2 1 0 0 2 1 0 0 1 1 0 0 1 0 0 1 2 1 2 2 1 1 1 1 1 0 1 0 1 0 1 1 0 2 2 1 2 0 0 0 5 0 1 3 1 2 2 0 1 0 1 1 0 1 1 0 1 0 0 3 2 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 3 0 0 1 1 0 1 0 0 2 1 1 3 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 2 1 0 2 2 2 2 1 0 0 1 1 1 0 0 2 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 +0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 3 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 2 0 1 1 2 0 0 0 0 1 0 0 0 0 1 0 1 0 0 2 0 1 0 1 0 0 1 1 0 0 0 1 2 0 0 0 1 2 0 0 3 0 0 0 2 3 1 2 0 1 0 0 2 1 0 0 0 0 1 0 2 3 0 2 0 1 0 0 0 1 0 4 1 0 0 0 0 2 0 0 1 0 0 2 2 1 2 0 1 0 1 0 0 0 1 2 1 2 0 0 3 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 3 0 1 2 2 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 2 0 1 0 0 0 2 1 0 0 1 1 1 0 0 0 2 0 0 1 0 0 0 0 0 1 2 0 0 2 2 1 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 3 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 +0 0 1 0 0 3 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 2 0 1 0 0 0 0 1 0 2 2 0 0 0 0 1 0 0 0 0 0 0 4 1 0 0 0 1 0 0 1 0 0 0 0 1 1 2 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 2 1 1 0 0 0 1 0 1 0 0 0 2 0 1 1 0 1 0 3 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 2 2 0 0 0 1 2 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 3 2 0 0 1 2 1 1 2 0 0 1 1 0 2 0 1 1 1 1 0 2 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 2 4 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 2 0 2 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 2 0 0 1 1 2 0 0 0 0 1 1 1 2 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 2 2 0 0 0 0 0 1 2 0 1 0 0 0 0 1 0 0 2 0 0 2 0 0 0 2 0 0 2 0 0 0 1 0 0 0 1 1 0 0 1 0 0 2 0 1 0 0 1 0 0 0 0 0 0 1 0 0 2 1 0 0 2 0 3 3 0 1 0 2 1 0 0 4 0 0 1 2 0 1 1 0 2 0 0 1 3 0 0 2 1 1 0 1 0 0 1 0 0 0 1 1 2 1 0 2 0 0 1 0 1 0 0 1 2 1 0 0 2 1 2 3 1 0 0 0 0 2 0 0 0 0 0 3 0 0 1 0 4 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 1 3 0 2 1 0 0 2 0 1 1 0 1 1 0 1 0 0 0 2 0 0 1 0 2 0 0 0 1 1 1 0 0 1 2 0 1 0 1 0 2 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 0 3 1 1 0 0 0 4 1 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 +0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 2 0 1 0 1 0 0 0 0 0 0 0 2 3 1 0 0 0 0 0 0 0 0 2 3 0 0 3 0 0 0 3 2 2 1 1 0 0 2 1 3 0 0 1 0 1 2 1 1 1 3 4 1 0 0 0 0 0 1 0 3 2 3 0 0 1 0 0 0 1 1 0 1 0 2 1 1 2 0 0 0 0 1 1 0 1 0 2 2 1 1 4 0 0 0 1 1 0 1 0 0 0 0 0 0 2 0 1 0 4 2 3 0 1 0 0 0 0 2 1 1 1 0 0 1 1 0 1 0 1 1 0 1 2 0 1 0 1 1 0 0 1 1 1 0 1 0 0 0 1 0 3 0 0 1 0 1 1 0 0 0 2 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 3 0 0 0 2 0 0 0 1 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 1 0 0 0 0 +0 0 0 0 0 1 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 1 1 0 1 1 0 2 0 0 0 0 1 0 0 1 0 2 1 0 1 0 0 0 2 2 1 0 1 0 0 0 2 1 0 1 0 2 1 0 0 0 0 2 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 3 1 2 2 0 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 2 0 1 0 1 0 0 2 1 1 0 3 0 0 2 1 0 1 0 1 0 3 2 0 1 0 0 0 1 0 0 2 0 0 1 2 1 2 2 0 0 0 0 1 0 0 1 1 0 2 1 0 0 2 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 2 1 1 0 2 0 1 0 0 0 0 1 2 0 1 0 2 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 2 0 3 0 0 0 1 0 2 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 2 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 +0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 2 0 2 0 0 1 2 0 0 0 0 2 0 0 0 0 2 1 0 2 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 0 0 2 1 0 0 0 0 1 1 0 1 1 1 3 0 0 0 0 1 2 1 0 2 0 1 0 0 0 0 1 0 0 0 0 0 3 1 2 1 2 0 1 1 0 0 0 0 2 0 0 1 1 0 0 0 2 2 0 2 1 0 0 1 1 0 1 0 0 3 0 1 0 0 0 0 0 0 0 0 0 1 0 2 3 2 2 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 2 1 1 2 3 2 0 1 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 0 0 1 +0 0 1 0 0 1 0 0 1 1 1 0 0 1 2 0 1 0 0 2 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 2 0 0 0 0 0 0 0 1 1 0 1 0 0 3 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 2 1 1 3 0 0 0 0 1 1 1 1 0 1 0 0 0 0 2 0 1 2 1 1 1 1 1 1 1 0 0 0 0 1 2 0 1 0 2 0 2 0 2 0 0 1 1 2 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 2 0 0 0 1 1 1 2 0 0 1 2 1 0 1 1 0 0 1 0 0 0 4 0 1 1 1 1 0 2 1 0 1 1 0 0 0 0 0 0 0 0 2 0 3 0 0 1 0 0 1 3 0 1 0 0 1 2 0 2 0 1 0 1 2 2 1 0 2 1 1 1 1 1 1 0 0 0 1 1 2 2 1 1 0 2 1 2 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 2 0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 +0 1 0 0 1 1 2 2 1 0 1 0 0 1 0 0 0 1 0 0 0 1 2 0 0 1 1 1 0 0 0 0 0 2 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 2 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 2 2 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 2 0 1 0 1 1 1 2 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 1 3 0 0 0 0 0 1 1 1 1 2 0 0 0 0 1 1 1 2 3 0 0 0 0 0 2 1 1 0 1 0 0 1 0 1 2 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 2 0 0 0 1 1 1 0 2 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 2 0 0 1 2 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 1 1 0 3 1 0 1 0 1 +0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 2 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 2 1 1 1 3 1 0 0 0 0 0 0 1 1 1 1 0 0 0 2 0 1 1 0 0 1 0 0 0 1 0 1 1 3 1 1 1 2 2 0 1 2 0 0 0 1 3 1 1 1 1 0 0 0 0 0 1 2 0 0 2 0 3 1 2 0 3 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 2 0 1 0 0 1 0 1 1 1 1 0 2 0 1 2 0 2 2 1 1 0 1 1 3 1 0 0 2 0 1 0 0 0 1 2 1 0 2 0 0 1 1 2 0 2 0 1 0 2 2 3 1 2 1 0 0 1 0 0 1 0 1 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 +0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 2 0 0 2 0 0 1 2 0 0 0 0 1 3 1 0 1 0 1 1 2 1 2 0 1 0 0 0 1 0 2 1 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 4 1 0 1 2 1 3 0 0 2 1 0 0 0 1 0 1 1 1 0 1 0 1 0 1 2 0 2 1 3 0 0 0 0 1 1 1 1 1 2 0 0 0 2 2 1 0 2 1 1 0 0 1 1 1 1 1 2 0 0 0 0 2 0 2 0 0 0 2 0 1 0 1 0 1 1 1 0 2 0 0 1 0 2 0 0 0 0 0 1 1 2 2 0 1 1 2 0 1 1 1 0 1 0 0 0 2 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 2 0 0 0 2 0 0 1 0 0 0 2 0 0 0 0 0 0 1 0 +0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 3 0 0 0 0 1 0 0 1 1 2 2 1 0 1 0 3 0 1 0 0 0 2 1 0 1 0 1 2 1 0 0 1 1 1 2 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 1 0 2 2 2 0 0 0 0 0 1 0 1 0 0 1 0 0 0 2 0 0 1 0 1 1 1 1 1 0 1 0 0 0 2 2 0 0 0 3 2 2 1 2 0 0 1 1 0 2 0 2 0 0 1 2 1 1 1 0 0 2 1 1 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 1 1 2 0 0 2 2 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 2 0 0 1 0 0 1 0 1 0 0 0 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 2 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 +2 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 3 0 1 3 1 0 1 2 0 0 0 2 1 2 0 0 1 3 0 0 0 0 0 0 0 3 0 0 0 1 2 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 2 0 2 1 0 1 2 1 0 0 0 0 0 1 1 0 1 2 0 0 0 1 2 1 0 2 0 0 0 1 1 0 1 1 0 1 1 2 0 1 0 0 0 0 0 1 0 0 1 1 0 0 2 0 2 0 1 0 0 6 1 0 1 0 0 1 1 0 0 0 2 0 1 0 0 1 0 1 0 1 1 0 0 2 0 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 2 0 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 +0 0 1 1 0 0 2 0 0 0 0 0 0 2 0 0 1 0 0 1 0 2 1 2 0 0 0 3 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 3 1 1 0 1 1 1 0 0 1 0 2 0 2 0 1 2 0 0 2 0 1 1 0 2 1 1 0 1 1 0 1 1 0 1 0 0 2 1 0 0 0 1 0 1 0 2 0 3 0 1 1 0 1 0 0 0 1 2 0 0 1 2 1 1 0 2 0 2 1 1 1 0 0 0 2 0 1 1 1 1 1 1 2 1 3 1 2 0 2 0 0 1 1 1 3 0 2 0 1 2 2 2 1 0 2 0 1 0 0 0 0 1 1 1 0 0 0 4 1 0 1 0 1 2 0 0 0 1 0 0 3 3 0 1 1 0 0 1 1 1 0 1 2 0 1 1 1 1 2 1 0 1 0 1 2 0 0 2 0 0 1 2 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 3 0 2 0 2 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 3 0 3 1 1 0 2 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 2 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0 1 0 2 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 1 1 2 0 1 2 2 1 0 2 0 0 3 0 1 0 0 0 2 0 0 1 1 1 1 1 0 0 0 1 3 0 0 0 1 0 2 1 1 0 0 0 1 1 2 1 2 1 0 1 2 0 1 0 2 1 0 1 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 1 0 0 0 2 1 4 1 1 0 1 2 0 0 0 1 1 1 1 0 0 1 0 0 0 1 2 0 2 0 1 2 0 0 1 0 2 1 0 2 0 0 1 1 1 0 0 0 0 1 1 2 0 1 0 1 0 2 1 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 2 0 2 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 +0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 2 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0 0 0 2 1 0 0 2 0 1 1 1 1 1 0 1 1 1 5 0 0 1 0 1 1 0 0 1 2 0 0 2 0 0 0 1 1 2 2 0 0 0 4 0 2 2 1 1 0 1 2 1 0 1 1 2 1 1 2 0 2 1 0 0 2 1 0 1 1 1 0 1 0 0 1 4 0 2 0 0 2 1 0 1 0 1 0 0 0 0 2 1 0 0 1 2 1 0 0 0 2 1 1 1 1 1 1 1 2 2 0 0 1 1 0 2 0 0 2 2 0 0 0 2 0 2 0 2 0 0 1 1 0 0 0 0 0 0 2 1 2 3 0 0 1 1 2 0 0 0 0 0 0 2 0 1 0 1 0 0 1 0 0 0 0 0 0 0 2 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 +0 1 0 1 0 0 2 2 2 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 2 0 1 1 0 0 0 1 0 0 3 0 1 2 1 1 0 0 2 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 1 2 1 0 4 0 0 0 1 2 3 1 0 1 1 0 1 1 1 1 0 0 0 2 1 1 0 4 0 1 0 1 4 0 1 1 1 1 2 0 0 0 1 1 0 2 1 0 2 0 1 0 0 0 1 1 2 1 1 0 0 0 0 2 1 0 0 1 0 0 1 1 0 4 0 2 0 0 0 2 2 0 0 1 2 0 1 1 1 0 0 1 2 1 0 1 0 1 2 1 0 0 0 1 3 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 2 1 0 0 1 0 0 3 0 0 1 1 0 0 0 2 0 1 2 0 1 0 0 0 1 0 1 1 0 0 0 0 2 +0 0 1 0 2 1 0 0 0 1 1 0 0 0 1 4 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 0 1 0 0 0 2 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 5 1 0 0 1 1 0 1 0 0 2 3 0 0 0 0 1 1 1 1 0 2 1 0 1 0 0 5 0 0 1 1 0 0 0 1 0 0 0 1 0 2 0 3 0 0 1 3 2 2 0 3 1 1 1 0 1 0 1 0 1 3 3 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 2 1 0 0 1 0 1 0 0 1 1 0 2 1 1 1 0 2 0 0 2 0 0 2 0 1 0 1 0 1 0 1 2 2 0 1 1 0 2 0 0 0 0 0 0 1 0 2 0 1 0 0 0 2 1 0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 1 2 2 0 0 0 0 0 1 0 0 0 0 1 1 2 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 +0 2 0 0 0 1 2 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 1 2 1 0 1 0 0 0 0 1 0 3 0 0 0 1 1 0 0 1 0 0 3 1 1 1 0 0 0 2 0 0 1 0 1 0 0 0 0 2 1 0 0 0 1 0 0 1 2 0 2 1 0 0 1 2 2 0 0 0 1 1 1 0 1 2 3 0 0 2 2 0 0 1 2 0 2 1 0 0 0 0 0 0 3 0 0 0 2 1 4 0 0 1 1 0 2 1 1 0 0 1 0 0 1 0 2 1 0 3 1 1 0 0 1 1 0 0 1 3 0 1 1 2 0 1 2 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 2 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 3 1 1 3 1 2 0 1 0 2 1 1 0 0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 2 2 0 1 0 0 2 0 1 1 0 1 2 0 0 2 0 0 1 1 0 0 0 0 3 0 2 0 1 1 0 0 0 1 0 0 2 0 1 1 1 0 1 2 0 0 0 0 1 0 2 0 1 1 0 0 2 1 1 1 0 0 0 1 0 2 1 0 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0 2 1 2 0 0 1 0 0 0 1 1 2 2 1 1 4 1 3 1 0 1 0 0 1 1 0 0 2 0 1 3 0 1 2 0 2 1 0 1 0 0 0 3 1 0 0 1 1 0 1 0 0 1 2 0 3 0 0 2 1 1 0 0 0 0 1 1 1 1 0 0 0 1 0 2 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 3 1 0 0 0 3 1 3 2 0 0 1 1 2 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 2 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 2 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 2 0 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 2 0 1 0 0 0 0 0 +0 0 1 0 1 1 2 0 0 0 0 1 1 0 0 0 2 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 1 2 0 1 0 0 0 0 0 0 0 2 1 2 2 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 2 1 0 2 0 0 1 1 0 0 0 1 0 1 0 1 0 2 0 0 0 0 0 2 0 0 0 1 1 0 2 0 0 0 0 0 1 2 0 1 2 0 0 2 0 0 1 0 1 1 0 0 1 3 1 0 3 2 2 2 1 1 1 0 1 2 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 2 1 1 2 1 1 0 0 0 1 0 3 0 2 2 1 1 0 1 0 1 1 0 1 2 0 1 0 1 1 0 1 3 3 1 0 1 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 3 0 0 0 0 0 0 1 0 3 0 2 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 2 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 2 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 +0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 2 1 2 1 1 2 0 1 0 1 1 0 1 1 1 0 1 0 3 3 1 0 0 0 0 0 0 3 1 1 0 0 0 0 1 0 0 1 0 0 1 2 1 1 0 0 2 2 0 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 2 0 1 0 0 2 1 1 0 1 0 1 2 0 0 1 0 1 0 3 1 3 0 0 1 0 0 2 1 1 0 1 0 2 1 1 0 0 2 1 2 0 2 2 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 2 2 1 1 1 0 1 0 1 4 2 0 1 1 0 2 1 0 0 0 0 0 1 0 1 0 0 1 3 0 0 0 1 1 1 2 0 3 1 0 2 0 0 1 0 2 0 0 2 1 1 1 2 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 2 0 0 0 0 2 0 0 2 0 1 2 0 1 2 1 2 0 0 0 0 0 0 0 0 0 2 1 0 2 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 2 0 0 0 0 0 1 1 1 1 0 0 +1 0 0 0 0 1 0 0 0 0 0 0 1 2 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 1 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 2 1 1 0 4 0 0 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 2 0 0 1 0 0 1 2 0 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 3 2 0 0 2 1 1 1 1 1 0 0 0 0 1 0 0 2 1 0 1 1 0 1 2 1 0 0 1 2 1 0 1 0 2 0 0 0 3 0 0 0 1 1 4 0 2 0 2 0 1 4 1 1 1 0 3 0 2 2 0 3 0 2 3 1 1 0 0 0 0 0 0 1 1 0 0 2 1 1 2 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 3 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 +2 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 2 0 0 0 1 0 0 0 0 1 2 0 1 1 1 2 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 2 1 2 0 0 0 2 0 3 1 1 1 0 0 0 0 0 2 2 2 2 0 1 1 0 2 1 1 1 0 1 0 2 1 1 1 3 0 1 0 2 1 0 0 2 0 0 0 0 1 1 1 1 2 1 1 2 0 2 0 0 1 0 1 2 1 0 0 2 0 0 0 3 0 2 2 0 1 1 1 1 0 1 0 4 0 0 0 0 0 1 1 0 2 0 0 0 0 1 1 0 0 0 1 0 1 0 0 2 0 0 1 0 0 1 0 2 0 1 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 2 1 2 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 2 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 2 0 0 0 1 0 0 0 +0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 2 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 1 0 2 0 0 1 0 0 2 0 0 0 1 0 1 0 0 2 0 1 1 0 2 1 1 0 1 1 1 2 1 1 1 1 1 0 0 2 3 0 1 2 1 0 2 1 0 1 1 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 2 0 0 1 0 2 1 0 0 1 0 1 0 0 1 1 1 0 0 0 2 0 0 1 1 0 1 0 1 1 1 1 0 1 2 1 2 1 2 1 1 1 1 2 1 0 0 0 0 1 1 1 1 1 1 0 1 1 3 0 0 0 0 2 0 0 1 1 0 1 0 2 1 2 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 2 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 3 0 0 0 +1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 2 0 0 2 0 1 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 1 1 0 1 0 0 1 0 1 0 0 3 0 2 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 2 2 0 2 2 1 0 1 0 0 1 1 3 1 4 1 1 0 2 0 0 1 1 0 0 2 0 1 0 1 1 1 1 1 2 0 0 0 3 0 0 2 2 1 3 0 2 0 0 1 0 0 0 2 0 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 2 1 0 0 2 0 0 1 2 0 2 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 0 2 0 0 1 0 2 0 0 3 0 0 0 0 2 1 0 3 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 2 1 0 0 1 1 1 0 1 0 2 0 0 2 2 1 1 2 1 1 0 1 0 0 1 0 2 0 0 1 0 1 0 0 3 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 2 1 1 0 0 0 0 0 0 1 +0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 2 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 2 2 2 2 0 0 0 0 0 3 0 0 1 4 2 0 1 1 0 0 0 0 0 0 0 1 3 3 0 1 1 1 1 0 0 1 0 0 1 1 0 0 0 1 1 2 1 1 0 1 1 0 0 0 0 0 0 2 0 2 0 1 0 0 0 3 0 2 1 0 0 0 1 0 2 2 1 0 0 0 1 0 2 0 1 2 1 0 1 1 0 1 0 0 1 0 0 2 0 1 0 1 0 0 0 0 1 0 0 1 1 1 2 0 2 1 0 0 2 1 0 0 2 1 4 0 1 4 1 0 2 3 1 0 0 1 0 1 0 1 0 2 0 2 1 1 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 2 0 0 0 2 1 0 0 1 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 1 0 1 1 0 2 0 0 2 1 0 0 0 0 1 0 0 0 0 0 0 1 1 2 0 1 0 0 1 0 0 0 0 1 0 1 1 2 1 0 0 1 0 1 0 2 0 0 0 0 2 0 1 0 0 3 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 2 1 2 0 0 0 1 2 1 2 0 0 0 2 2 2 0 2 0 1 0 0 0 0 1 1 0 1 1 1 1 1 2 2 0 0 0 1 1 0 0 0 3 1 1 0 0 1 0 0 1 3 0 0 2 1 0 0 0 2 0 1 0 3 0 1 1 1 0 1 2 1 3 0 1 1 0 0 1 2 1 0 2 1 0 1 1 0 1 0 3 0 1 1 1 2 0 0 1 1 1 0 2 0 1 0 0 1 0 0 0 0 1 0 2 0 0 0 0 2 2 0 1 2 1 1 1 0 1 2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 2 0 0 2 0 0 2 1 0 0 2 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 1 0 1 0 1 0 3 2 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 1 2 0 2 0 0 0 0 1 0 +0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 2 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 2 1 1 0 0 0 0 0 0 1 0 1 1 1 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 2 0 1 0 1 1 0 0 1 0 0 1 2 0 1 0 0 2 0 1 0 1 0 0 2 0 2 1 1 0 3 0 1 0 0 2 0 1 0 1 0 1 1 0 0 3 1 0 0 0 0 0 0 0 0 1 0 1 0 1 2 1 1 0 1 2 1 1 1 1 1 2 0 2 0 0 1 2 0 0 2 2 2 1 0 0 0 0 0 1 0 1 0 1 2 0 0 3 1 2 0 1 1 1 1 0 1 2 3 1 1 2 0 0 0 1 1 0 0 0 0 1 0 2 0 0 1 2 0 1 0 0 1 0 2 0 0 2 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 2 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 +2 2 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 2 0 0 1 1 0 1 0 0 2 0 0 1 1 0 0 1 2 0 1 2 0 0 0 1 1 1 0 0 1 0 1 0 3 0 0 0 0 0 0 2 0 0 1 1 3 2 0 3 0 2 0 1 0 0 1 1 0 2 0 1 1 0 1 1 1 4 0 2 1 1 1 0 1 0 0 0 0 0 0 3 0 0 0 1 1 0 1 0 0 1 2 0 3 2 0 1 2 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 2 0 1 2 2 1 1 1 0 0 1 1 1 0 1 0 0 1 2 1 0 0 2 1 2 0 1 1 0 0 0 2 0 2 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 2 2 0 2 1 0 0 1 0 0 0 0 0 2 1 0 0 0 1 0 2 0 0 1 0 1 0 0 0 0 0 3 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 2 0 0 1 1 0 0 0 +1 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 2 1 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 2 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 2 1 0 2 0 3 1 0 1 1 2 2 0 1 3 1 2 1 1 1 0 0 2 0 1 1 0 2 1 1 2 0 0 2 1 0 2 0 0 1 1 0 0 1 1 2 1 1 0 3 0 0 0 3 2 3 1 1 1 0 1 1 1 0 3 0 1 0 0 0 0 1 2 1 0 1 0 2 0 1 0 0 1 0 2 2 1 0 1 2 0 0 4 0 3 2 2 0 0 1 0 2 1 0 1 0 2 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 2 1 2 1 2 0 0 1 0 2 1 0 0 2 0 0 1 1 0 1 2 1 1 2 0 0 0 0 0 1 2 0 0 2 1 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 2 0 1 0 0 0 0 0 0 0 1 2 2 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0 1 2 0 0 0 0 1 0 0 0 0 1 0 0 +0 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 3 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 2 0 0 0 2 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 1 1 0 2 0 0 1 2 0 2 0 0 0 2 0 0 2 0 1 1 2 0 2 1 0 1 0 0 1 1 1 1 2 1 0 1 0 0 3 2 2 1 2 1 0 1 1 0 0 0 1 2 0 1 2 2 1 0 0 0 0 1 0 1 1 1 0 1 1 1 2 0 1 1 2 1 1 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 2 1 3 2 3 0 0 1 0 0 2 0 0 2 1 1 2 1 1 3 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 2 0 0 1 1 2 0 1 0 0 0 0 1 0 2 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 2 1 0 1 1 1 0 2 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 2 0 1 0 0 +1 1 1 0 0 0 0 0 1 2 0 0 0 2 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 2 1 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 2 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 2 1 0 2 0 1 3 3 0 1 0 0 1 0 1 1 0 3 0 1 3 0 0 0 2 0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 2 0 1 0 1 0 1 1 0 1 0 0 1 1 1 2 1 0 2 2 2 0 1 0 0 1 1 1 1 0 0 0 1 0 1 3 1 2 1 0 1 0 2 1 2 0 0 1 0 0 1 2 1 1 1 0 1 2 1 0 2 1 3 1 1 0 0 2 0 0 0 0 1 0 1 3 0 2 1 0 1 0 1 1 1 2 0 0 1 1 0 0 2 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 2 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 2 0 1 0 0 0 0 0 0 0 0 0 2 0 1 1 2 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 +1 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 1 1 2 0 0 0 1 0 2 1 0 0 1 1 0 0 0 0 3 1 1 1 1 0 0 0 2 0 1 2 1 1 1 0 2 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 2 0 0 1 0 2 0 2 0 2 0 0 2 0 1 1 1 2 2 0 1 0 0 0 0 0 2 0 0 1 0 0 2 3 1 3 1 0 0 1 1 1 1 0 0 3 0 1 0 0 1 0 2 1 0 2 1 1 0 0 0 1 2 0 0 1 0 2 2 1 0 1 2 1 0 1 2 2 0 1 0 0 1 2 2 0 0 0 3 1 0 1 0 0 0 0 1 0 3 2 0 1 0 0 1 0 2 0 0 2 0 0 1 0 0 0 1 2 1 0 0 0 1 1 0 1 0 1 0 1 0 1 2 0 0 2 1 1 0 0 2 0 1 0 0 1 1 1 0 0 0 0 2 0 0 1 1 1 0 0 0 1 0 2 1 0 0 0 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 3 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 +0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 2 0 0 1 2 1 2 0 2 0 0 1 1 2 0 0 1 0 0 2 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 2 0 1 0 0 1 1 2 1 3 1 0 0 0 1 0 0 1 0 0 0 1 2 1 0 1 0 4 1 1 0 2 1 0 0 1 0 1 0 2 1 0 1 1 1 0 0 1 2 1 1 0 0 0 0 0 0 3 2 0 0 3 1 0 2 0 0 0 3 0 0 0 1 2 1 0 1 0 0 1 1 1 1 0 2 0 0 1 1 0 2 3 0 1 0 0 0 0 1 0 0 4 0 2 0 1 0 1 0 2 0 1 1 1 1 1 2 1 3 4 0 0 0 0 0 2 1 0 1 1 0 1 1 1 0 0 0 0 0 1 2 0 0 1 0 2 2 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 1 2 1 0 0 3 0 0 0 0 1 0 0 1 2 0 1 1 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 +0 0 0 0 2 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 2 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 2 0 1 1 0 0 1 2 0 1 1 0 1 0 0 0 1 0 0 2 3 3 0 1 1 0 0 0 1 0 0 0 0 0 0 0 3 0 1 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 0 0 3 1 0 0 0 1 1 1 1 0 0 0 0 2 0 1 2 2 0 1 1 1 1 2 0 0 1 1 1 0 1 0 2 2 0 1 2 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 1 2 1 1 1 0 1 1 1 0 0 2 0 1 1 2 0 2 0 0 0 0 1 1 0 0 0 0 0 2 1 0 0 0 0 1 2 0 0 0 0 1 0 0 0 2 1 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 2 3 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 +0 1 0 1 0 0 0 0 0 1 1 1 0 3 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 2 1 0 0 2 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 2 0 2 0 0 1 0 1 0 3 1 0 1 0 0 0 1 2 2 0 1 1 0 2 0 0 1 1 2 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 2 2 1 1 1 0 0 1 0 0 2 0 1 0 0 0 0 0 0 2 3 2 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 3 0 1 0 0 0 1 1 1 0 0 1 0 0 2 0 0 0 1 0 2 1 2 2 0 1 0 1 1 0 0 1 1 0 2 2 1 2 0 0 0 1 0 0 1 0 0 0 0 2 1 0 0 0 1 0 1 1 1 1 2 0 1 0 2 0 0 1 0 1 0 0 0 2 0 0 0 2 2 1 0 1 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 0 1 0 1 1 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 1 0 2 0 1 0 1 0 0 0 0 1 1 0 0 0 0 +0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 2 0 1 0 0 0 0 1 0 0 0 0 0 0 1 2 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 1 0 1 1 0 0 1 2 0 1 1 0 1 2 2 1 1 1 1 0 0 0 1 1 3 0 2 1 0 1 1 1 0 0 0 1 1 1 1 1 0 2 0 3 1 0 1 0 1 1 1 0 1 0 1 2 0 0 0 0 0 0 1 0 1 0 0 1 1 4 0 0 0 2 0 3 2 0 0 0 0 0 1 0 1 3 1 4 0 3 0 2 1 0 1 2 1 0 2 1 0 1 1 1 0 0 0 0 1 0 2 0 0 1 0 0 0 1 0 1 0 1 1 2 0 1 0 0 0 0 0 1 0 0 0 0 1 1 3 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 2 2 0 0 2 0 0 0 2 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 1 1 4 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 2 0 1 0 +0 0 0 0 1 0 2 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 2 0 1 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 0 0 2 0 2 0 1 0 1 1 1 2 1 0 0 0 1 0 2 0 0 2 0 1 1 1 1 3 0 2 1 1 0 2 0 1 1 0 0 0 1 0 3 1 1 1 1 1 2 0 1 0 0 1 1 0 1 0 1 0 0 3 1 0 0 2 1 1 1 3 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 2 1 3 2 0 0 2 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 3 0 1 0 1 2 1 1 0 2 0 1 1 0 2 1 0 0 0 1 1 1 0 0 3 2 1 1 1 1 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 2 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 2 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 +0 0 2 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 2 0 1 1 0 0 1 3 0 2 0 0 0 0 1 0 1 0 0 0 2 1 1 0 0 0 2 3 0 0 0 2 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 2 0 1 1 0 1 1 2 2 1 1 1 1 1 0 3 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 2 0 0 1 1 0 0 1 0 1 0 1 0 0 1 2 3 0 1 2 1 0 2 1 2 0 0 0 0 1 2 2 0 3 0 1 4 0 2 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 2 2 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 0 0 3 1 0 0 0 1 0 0 0 0 2 1 1 1 0 0 0 2 0 1 1 0 1 0 1 0 0 0 0 2 0 0 1 0 1 2 1 0 0 0 0 3 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 +0 0 2 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 2 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 2 0 1 1 0 1 1 0 0 0 1 0 1 2 0 0 1 0 1 2 1 0 0 0 1 2 0 0 0 1 1 0 0 2 0 2 0 0 2 0 0 0 1 0 1 0 0 0 2 2 1 1 2 1 1 1 0 1 2 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 1 1 2 2 0 1 0 1 1 2 0 0 0 0 0 0 2 2 0 1 0 2 0 0 0 0 3 1 2 1 1 0 0 0 0 0 0 3 2 2 1 0 1 0 1 2 2 0 1 2 2 1 2 1 0 0 0 1 0 0 1 0 0 1 1 0 0 2 0 1 2 1 0 1 1 0 0 1 0 0 2 1 0 0 0 1 0 0 2 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 2 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 1 0 +1 1 0 0 1 0 0 0 0 2 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 2 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 3 1 2 0 1 1 2 1 3 0 1 0 1 1 2 2 2 1 1 1 1 1 1 0 1 0 0 1 2 1 0 2 2 0 0 1 0 1 0 1 0 0 0 1 1 0 2 0 0 2 0 1 1 1 2 0 2 0 1 1 0 0 1 1 0 1 2 2 1 0 0 2 2 4 0 0 0 0 2 0 0 0 0 0 0 0 2 0 1 2 0 2 1 0 0 1 1 0 1 0 0 1 2 0 1 2 2 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 2 1 0 0 1 0 2 0 0 0 0 0 2 0 0 0 1 0 0 0 1 1 2 0 0 1 0 1 0 2 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 2 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 2 0 0 0 1 1 1 0 2 0 1 0 0 1 0 0 1 0 0 2 1 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 2 0 1 0 0 1 0 1 3 0 1 0 0 0 0 1 2 1 0 1 0 1 0 0 2 0 1 2 0 2 0 1 1 4 1 0 2 0 1 2 1 2 0 1 1 1 0 0 0 0 0 2 2 1 1 0 2 0 2 1 0 1 1 2 0 0 0 0 0 1 0 4 2 1 1 2 3 2 1 1 1 4 0 0 0 1 0 1 2 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 3 1 2 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 1 1 0 2 0 0 0 1 0 1 1 1 1 1 0 0 0 1 2 1 0 0 1 2 0 1 1 0 0 2 0 0 0 0 1 1 2 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 +0 0 1 0 1 1 1 0 0 2 0 0 1 0 1 2 0 0 0 0 0 2 0 0 1 2 0 0 2 3 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 2 0 0 1 0 1 1 0 0 0 2 2 0 0 2 1 1 2 0 0 0 2 0 0 0 1 0 0 1 0 0 2 0 0 1 1 0 0 0 2 0 0 1 1 1 2 1 0 0 0 2 1 2 0 1 2 2 0 0 0 0 0 0 0 1 1 2 0 0 0 0 1 1 0 0 1 1 0 0 2 1 0 1 1 1 0 0 2 0 1 0 0 1 1 0 2 0 0 1 2 0 3 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 2 1 1 0 0 1 2 0 0 0 0 1 1 3 0 1 2 4 2 1 0 0 3 0 0 0 1 0 0 0 2 2 0 1 1 0 0 0 0 0 1 0 2 0 0 1 0 0 2 0 0 0 0 0 1 0 1 0 0 2 1 0 0 2 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 2 0 0 0 1 1 3 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 2 0 1 0 1 0 0 0 2 0 0 0 0 0 +1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 2 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 2 1 0 0 1 0 1 0 0 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 2 0 2 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 2 0 1 0 1 0 2 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 2 1 0 0 1 0 0 0 2 0 0 1 3 2 1 2 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 2 1 1 1 1 1 1 0 1 1 1 2 0 0 0 1 0 2 1 0 0 0 0 0 1 1 0 1 2 1 1 1 0 1 1 1 0 0 0 0 2 2 1 3 2 0 2 0 0 0 1 1 0 0 1 0 1 1 1 0 2 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1 0 0 2 0 0 3 1 0 0 0 1 0 0 0 0 2 0 1 0 0 0 1 0 0 1 0 0 0 1 2 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 +1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 2 0 0 0 1 2 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 3 1 0 0 0 1 0 1 0 0 0 2 2 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 2 2 1 0 4 0 1 1 2 0 1 1 2 2 0 2 2 0 2 1 1 3 1 0 0 1 0 0 0 0 0 0 0 1 4 0 0 1 1 1 0 0 1 0 1 0 0 4 1 1 0 3 2 1 0 2 1 0 1 1 1 1 2 0 1 1 3 0 2 0 0 0 0 0 0 0 0 1 1 0 0 2 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 4 1 1 2 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 2 0 0 0 1 1 0 0 1 0 0 0 0 0 0 2 0 +0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 1 3 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 1 1 2 1 0 0 2 1 0 0 1 0 2 1 1 3 0 1 0 0 1 0 0 0 0 1 0 1 0 2 0 1 2 0 0 0 2 0 1 1 0 1 1 1 0 1 2 2 1 0 1 0 1 0 1 1 2 1 1 1 0 0 1 1 1 2 4 1 0 2 0 3 2 1 0 0 1 1 2 2 1 1 1 0 1 2 1 1 1 0 0 0 0 0 1 1 2 2 1 0 1 1 1 0 0 2 0 0 2 2 1 0 1 0 0 0 1 0 2 0 0 3 0 1 1 0 1 1 1 0 0 2 0 0 1 1 0 0 0 1 2 0 0 0 1 1 1 1 0 2 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 1 0 2 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 3 0 0 0 0 1 0 0 1 0 0 1 0 +1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 1 0 0 0 2 0 1 1 1 1 2 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 1 1 1 2 0 0 0 0 0 0 0 0 1 0 0 1 2 0 1 0 0 0 1 1 1 0 2 0 1 2 0 1 2 0 1 0 0 0 1 1 1 0 1 0 2 1 0 0 0 0 0 1 0 2 2 1 1 1 3 1 1 0 1 0 1 1 0 1 2 1 2 1 2 0 0 0 0 1 0 2 2 2 0 0 0 1 1 0 0 1 1 0 3 0 1 2 1 3 0 1 0 1 0 1 0 2 0 2 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 2 0 2 0 0 2 0 0 0 0 1 2 0 2 1 1 0 0 0 2 0 0 0 1 0 0 0 0 1 2 3 2 1 0 2 0 2 1 2 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 3 1 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 2 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 +0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 2 0 1 2 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 0 2 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 2 1 0 0 2 2 0 1 0 1 3 1 1 0 0 0 0 2 1 1 0 0 2 2 1 1 2 2 0 0 1 0 2 1 0 1 0 1 1 1 0 2 0 1 1 0 2 0 2 1 1 0 0 0 1 1 2 0 0 0 0 2 1 1 2 1 1 1 3 2 1 2 1 1 0 2 0 1 0 0 2 1 0 2 1 0 0 0 0 1 0 0 0 1 0 0 3 0 1 1 0 3 0 0 2 1 1 1 2 1 0 0 0 1 1 0 3 0 0 1 0 2 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 4 1 0 0 0 1 2 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 1 0 0 1 0 1 2 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 2 1 0 0 0 1 0 0 0 0 0 1 0 0 +1 2 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 2 0 1 0 0 0 1 1 1 0 0 0 0 0 2 1 0 2 1 0 2 0 0 0 0 1 1 1 0 1 0 4 0 1 0 0 5 0 0 0 1 0 0 0 1 0 0 0 0 0 0 3 3 1 0 1 0 0 1 0 2 1 0 1 3 2 1 0 0 2 3 1 3 2 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 2 0 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 2 0 0 0 1 4 1 0 0 0 0 1 1 1 1 1 1 0 0 2 0 5 1 1 0 0 0 2 0 2 1 2 0 0 1 1 2 0 0 1 0 0 1 0 0 0 1 0 1 2 0 0 0 1 0 0 0 1 0 2 2 1 0 0 1 1 0 2 0 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 2 0 0 1 1 0 1 1 1 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 3 0 1 0 0 1 2 0 0 0 0 1 0 +0 1 2 0 1 0 0 1 1 1 0 0 0 1 0 0 0 2 0 0 1 0 0 1 0 1 1 0 0 0 0 2 0 1 1 1 1 2 0 0 1 0 0 0 0 0 0 2 0 1 1 0 2 0 0 2 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 2 0 2 0 2 0 0 1 1 1 1 0 0 0 0 2 0 0 0 1 0 0 2 2 2 1 0 0 0 0 1 0 0 3 2 0 0 1 0 2 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 2 1 0 1 0 1 1 1 0 0 1 0 1 0 0 0 2 1 1 0 1 1 0 0 1 1 0 1 1 3 0 2 3 1 0 0 0 1 1 1 0 0 0 0 0 1 0 2 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 2 1 1 0 1 0 0 0 0 0 1 1 1 0 2 0 0 1 0 1 0 1 0 2 2 0 1 0 1 0 0 0 0 0 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 +1 0 0 0 1 0 2 0 0 0 1 0 0 1 0 0 0 0 0 3 0 0 0 0 1 0 2 0 1 0 0 1 1 0 1 0 0 2 0 1 1 0 1 1 0 2 1 0 0 1 0 0 0 1 2 0 0 1 0 0 1 0 3 1 1 1 0 2 1 0 0 1 1 1 1 0 0 1 2 0 1 1 0 0 0 0 1 1 0 0 0 2 2 2 0 4 0 1 0 1 0 1 0 1 1 2 0 2 0 0 2 1 0 0 1 1 1 1 0 2 0 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 2 1 2 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 3 0 1 1 1 0 1 0 0 1 2 1 0 0 2 2 0 1 3 2 0 1 1 2 1 0 0 3 2 0 0 0 0 1 0 0 1 1 0 0 1 0 4 0 1 2 3 0 0 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 2 0 0 0 2 0 0 0 1 1 1 0 0 0 1 1 0 0 2 0 0 1 0 0 1 0 2 1 0 0 1 0 0 0 0 2 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 +0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 2 1 0 0 0 0 0 0 3 0 0 0 1 1 0 1 1 1 2 1 0 0 0 2 0 1 0 0 1 0 1 2 0 1 1 2 3 0 0 0 2 0 1 0 1 1 1 2 3 0 1 0 0 0 1 1 0 1 2 0 1 1 1 1 3 2 3 0 4 0 1 2 1 0 0 2 1 2 0 0 0 0 0 1 2 1 2 0 0 0 3 0 1 2 0 1 0 0 0 1 2 0 0 0 2 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 2 1 2 0 0 1 2 1 1 1 1 0 0 0 0 0 1 0 1 3 0 0 0 0 0 1 0 0 2 1 0 0 0 0 1 0 1 1 1 0 1 0 1 0 2 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 2 1 1 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 +1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 2 2 1 0 2 0 2 1 0 0 0 0 1 0 2 0 1 1 0 0 0 0 0 1 0 1 0 2 0 0 0 2 1 0 0 2 2 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 0 0 0 0 1 1 3 1 0 0 0 1 1 1 0 3 1 0 1 0 1 0 2 0 1 0 1 1 1 0 1 0 0 2 0 0 2 2 2 0 1 0 1 0 1 1 0 1 2 2 2 1 1 1 1 1 0 2 2 0 1 0 1 2 1 1 1 1 1 1 0 0 0 1 0 1 0 0 0 1 0 3 5 0 0 0 0 1 0 1 0 0 0 1 0 3 1 0 0 0 0 1 0 2 1 1 0 1 0 1 1 1 0 2 0 1 4 0 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 2 0 1 1 0 0 2 0 1 1 0 1 2 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 2 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 1 0 0 1 +0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 2 0 1 1 1 3 0 0 2 0 0 0 0 1 1 0 1 0 0 1 0 0 0 2 1 1 0 1 1 0 2 0 0 0 0 0 0 1 0 1 1 1 0 0 1 2 1 0 0 0 2 3 1 1 0 2 0 4 1 0 0 1 0 0 0 0 1 1 3 0 1 0 0 2 0 0 1 1 0 2 0 1 1 1 1 0 1 2 1 1 1 1 0 0 0 1 0 0 0 0 2 0 1 1 0 0 1 1 0 1 1 2 0 3 2 0 1 0 0 0 1 0 0 0 0 0 0 3 1 0 0 0 0 0 0 0 0 2 0 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 3 3 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 2 0 0 0 +1 0 0 0 1 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 1 2 0 0 1 1 0 2 1 0 0 2 1 0 0 1 0 0 0 0 0 0 2 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 0 1 2 0 2 0 0 0 0 0 0 2 1 1 0 1 0 2 2 1 3 0 2 0 0 1 2 0 0 3 0 0 2 0 0 2 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 3 2 3 0 0 1 1 1 0 1 0 1 1 0 2 2 1 1 1 1 0 1 0 1 2 0 0 1 0 1 0 2 1 0 2 1 0 1 0 0 0 1 1 0 0 3 2 1 1 1 3 0 1 0 0 0 3 2 2 1 1 0 1 0 0 0 1 0 2 0 1 3 1 2 0 2 2 1 1 3 0 1 0 1 1 0 0 2 2 1 2 0 0 0 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 2 1 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 1 0 0 3 0 1 2 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 +2 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 0 2 0 1 1 0 0 0 1 0 1 0 0 0 0 2 1 0 1 3 0 1 0 1 0 0 1 1 1 1 0 0 2 1 2 0 1 1 0 0 0 0 0 0 1 2 2 0 1 1 0 4 3 0 1 3 0 3 3 0 0 2 0 2 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 0 1 2 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 2 0 2 0 1 1 1 0 1 0 1 0 0 3 1 1 0 1 0 2 1 1 1 0 0 0 1 1 0 3 0 2 0 3 0 0 1 1 1 0 0 2 0 2 0 1 0 1 0 0 0 0 2 0 0 0 0 1 1 0 2 3 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 2 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 3 0 1 0 0 0 0 0 0 0 1 0 1 2 0 1 1 0 0 1 1 0 0 0 0 +0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1 1 0 3 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 2 0 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 2 0 1 0 3 1 1 2 0 0 1 1 2 0 0 0 1 0 0 0 3 0 2 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 3 0 0 1 1 0 3 0 0 0 1 1 0 2 0 3 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 3 0 1 1 3 2 2 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 2 0 1 0 0 0 0 0 2 1 2 2 1 1 0 0 0 0 4 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 2 1 0 0 1 0 0 1 0 0 1 0 1 3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 2 1 0 2 0 0 1 0 0 0 0 +1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 2 1 2 0 0 2 0 0 2 0 1 0 1 0 2 0 0 0 0 1 2 1 0 0 1 1 0 0 3 0 0 2 0 1 2 1 0 0 0 0 1 1 0 0 1 0 3 1 3 1 0 2 2 0 1 1 1 2 1 0 0 2 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 2 1 1 0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 2 1 1 3 0 0 1 0 2 1 0 2 0 5 2 1 0 1 0 1 0 2 1 0 2 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 2 1 0 0 0 2 0 1 0 1 1 2 0 1 1 1 0 0 1 2 1 0 2 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 1 0 1 0 0 0 0 2 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 +1 1 0 0 0 0 0 1 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 2 1 0 0 0 0 0 1 1 1 2 1 0 0 0 1 1 1 1 0 1 1 0 2 0 0 0 0 1 0 0 0 2 0 2 0 0 2 0 0 0 0 3 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 3 1 0 1 0 2 1 0 0 0 1 0 1 1 0 2 2 1 0 1 1 0 0 0 1 0 1 1 1 0 2 1 1 0 1 3 1 0 1 1 0 1 1 0 1 2 2 0 1 0 2 1 1 1 0 0 2 0 2 1 2 0 1 1 0 0 0 1 1 1 1 2 0 0 0 0 1 0 0 0 1 1 1 2 0 1 2 1 0 1 0 0 2 2 0 1 1 1 1 0 2 0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 2 3 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 2 1 0 1 2 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 2 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 +2 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2 1 1 1 0 0 1 1 0 1 0 0 2 0 0 0 1 0 0 1 0 0 1 2 1 1 0 0 0 0 1 0 1 0 3 1 1 1 0 0 0 0 0 0 0 2 1 0 0 1 1 1 0 0 1 1 1 0 1 1 0 0 2 0 1 0 1 0 1 1 2 0 0 0 1 1 0 2 0 1 0 1 0 0 0 2 0 2 0 1 1 1 0 0 1 2 0 1 0 1 1 3 1 0 0 1 0 0 2 0 1 0 2 2 0 1 1 0 0 0 1 2 2 1 0 0 0 3 1 1 2 2 0 1 1 3 1 1 0 1 4 0 2 1 1 1 0 1 0 0 2 0 0 0 0 1 0 0 1 0 1 0 2 1 0 0 1 0 1 0 1 0 3 0 0 2 0 0 0 0 1 3 0 2 1 0 0 0 0 2 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 3 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 2 0 1 0 0 0 0 1 0 0 1 1 0 0 3 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 2 0 0 +0 0 1 0 0 0 2 0 0 0 0 1 1 2 0 0 1 1 0 0 2 0 2 1 0 0 0 0 0 1 0 1 1 0 3 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 2 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 2 1 0 0 2 0 2 0 0 0 0 2 0 1 0 0 2 0 0 2 0 0 0 0 0 0 0 0 2 1 0 1 1 1 1 1 0 1 2 2 0 0 0 0 2 1 0 0 2 1 0 2 1 2 3 1 1 2 1 1 2 0 0 2 1 3 0 1 0 0 2 0 0 0 1 2 0 1 1 0 2 0 0 1 0 1 0 0 1 2 0 1 1 0 0 0 0 0 2 0 0 2 2 0 0 0 1 0 0 0 0 0 0 0 0 0 2 2 1 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 +1 0 0 1 0 0 2 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 4 0 1 1 1 2 0 1 1 0 0 0 0 1 0 1 0 0 0 0 3 0 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 2 1 1 1 1 0 3 0 0 1 1 0 1 1 1 2 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 1 2 3 0 1 0 0 0 0 2 1 0 1 1 1 1 1 3 1 0 0 0 0 3 0 0 1 0 1 0 1 1 0 1 0 0 1 0 2 1 0 1 0 0 0 3 0 1 3 0 0 0 1 2 2 0 0 0 1 0 1 2 0 0 2 1 0 0 1 0 0 0 1 0 2 0 0 0 1 2 1 0 0 0 0 1 1 2 0 1 0 0 0 2 2 0 1 1 0 1 3 2 2 0 1 2 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 2 0 0 0 0 0 0 0 2 1 0 1 0 0 0 0 0 0 2 0 1 0 1 0 0 1 0 0 0 0 0 2 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 +0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 2 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 2 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 1 2 0 0 1 0 0 0 1 0 0 1 2 2 1 0 0 0 0 0 0 1 2 0 0 1 1 0 0 1 1 0 0 1 2 0 0 1 3 0 2 0 2 1 1 0 1 0 3 1 0 0 3 0 0 0 2 2 0 0 0 0 0 2 0 0 1 2 0 1 1 2 0 0 0 1 1 1 1 3 2 0 0 2 0 1 0 5 0 1 0 2 1 0 1 1 3 2 2 1 1 0 0 1 0 0 3 1 2 1 0 3 1 0 0 1 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 1 2 2 1 0 0 1 1 1 0 0 0 0 2 4 1 0 1 0 2 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 3 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 +0 0 0 1 0 2 1 0 1 0 1 2 0 0 0 0 1 0 0 2 0 3 0 2 2 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 2 0 0 0 0 0 0 0 0 0 0 3 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1 2 0 0 1 0 1 1 1 2 1 0 1 0 1 0 1 0 0 0 0 0 0 0 3 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 2 2 1 0 1 0 0 0 0 0 2 1 0 1 1 0 0 0 0 2 0 1 0 1 1 2 0 2 0 2 1 0 1 3 2 0 0 1 0 1 0 1 1 3 2 0 0 0 0 3 0 1 2 0 0 0 0 1 1 0 1 2 2 0 0 0 1 0 0 1 1 2 0 1 0 0 0 1 0 1 0 0 0 1 2 0 1 0 1 1 0 0 1 2 0 0 0 0 0 1 0 1 0 0 2 0 0 0 2 0 0 0 2 2 0 0 0 1 0 0 1 0 0 1 1 1 0 0 2 1 0 2 1 0 0 1 0 1 0 0 2 0 2 0 0 0 1 0 0 1 2 0 0 1 0 0 1 1 1 0 0 0 0 0 1 1 +1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 1 1 1 0 1 0 0 1 0 0 3 1 0 2 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 2 0 0 0 1 0 0 0 1 0 1 3 1 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 2 1 0 3 1 0 0 2 1 0 0 1 1 2 2 2 0 1 2 3 2 2 0 1 0 1 0 2 3 0 1 2 0 0 1 1 1 1 1 1 3 2 1 0 0 1 3 1 0 0 0 0 2 2 1 2 2 0 1 0 1 1 0 1 0 1 0 0 1 1 0 0 0 1 1 0 0 1 0 2 3 1 1 1 2 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 2 0 0 1 2 0 1 0 1 0 0 0 1 3 0 0 0 1 1 1 0 3 1 0 0 0 0 0 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 2 0 1 3 0 2 1 1 0 1 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 +0 1 1 0 0 1 0 0 1 0 1 0 0 2 0 0 0 1 0 0 2 0 0 0 1 0 0 1 1 1 0 2 0 2 0 1 0 1 1 2 0 0 0 0 1 0 1 2 0 2 0 1 0 1 0 1 0 1 1 0 0 2 0 0 1 0 0 1 1 0 0 0 0 2 0 0 0 0 2 0 0 0 1 1 0 0 0 0 1 2 0 1 0 2 0 2 1 2 0 0 2 0 3 2 0 2 1 0 0 1 0 0 1 0 3 2 0 0 1 1 0 1 1 2 0 0 1 1 0 0 1 0 0 2 0 0 2 4 2 0 0 1 0 0 1 2 0 2 1 2 1 0 1 1 0 0 0 0 1 1 0 0 1 1 2 1 1 0 2 1 1 1 2 1 1 1 2 0 2 0 1 1 0 2 0 0 0 0 1 1 0 1 2 1 1 0 0 0 2 0 1 1 1 1 1 0 1 1 0 0 1 0 0 1 0 2 1 3 0 0 0 1 2 0 1 0 0 2 0 0 0 0 0 0 0 1 0 0 1 2 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 +1 0 0 3 0 1 1 0 1 0 0 0 2 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 2 2 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 2 0 0 2 0 0 0 0 0 1 2 1 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 2 0 1 0 1 1 0 0 1 1 0 0 2 1 0 1 2 1 1 2 0 0 0 0 1 2 1 0 2 0 1 0 2 2 1 0 0 0 0 2 0 0 2 0 1 0 1 1 0 0 0 1 2 0 0 1 1 1 2 2 2 0 0 0 2 1 0 0 2 1 0 0 0 1 2 1 0 1 0 1 0 0 1 2 0 0 0 1 0 0 2 0 1 1 0 0 1 0 1 3 1 0 1 1 2 0 0 0 2 1 0 2 0 1 0 1 1 0 0 0 2 1 0 1 1 1 0 0 2 0 0 3 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 2 1 0 0 0 0 0 2 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0 3 0 0 2 1 0 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 1 2 0 1 0 0 1 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 1 2 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 1 1 2 0 0 0 1 2 1 1 0 0 0 1 0 2 1 1 0 2 1 0 0 0 0 2 0 1 1 0 2 2 1 0 0 3 0 0 0 0 1 1 0 0 2 1 0 0 0 2 0 0 0 0 0 0 0 1 0 2 0 2 0 1 0 0 0 0 0 1 0 0 0 1 0 3 1 2 2 2 0 0 0 0 2 2 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 2 1 1 1 0 0 1 1 0 2 1 1 0 1 0 1 0 0 0 0 3 0 1 0 1 0 1 1 3 1 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 2 0 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 3 0 1 0 0 0 0 1 0 1 1 1 1 1 +0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 3 0 0 1 1 1 0 0 1 4 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 2 0 1 2 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 2 0 1 1 1 3 0 0 3 2 1 0 0 0 0 0 0 0 1 0 0 1 0 2 1 0 0 0 0 0 1 2 1 2 2 0 0 1 0 1 1 0 1 1 1 1 0 0 0 0 3 2 1 1 0 2 0 0 0 0 1 0 0 1 1 1 2 1 0 1 0 1 0 1 2 0 0 1 1 0 2 0 1 0 1 1 2 0 1 1 0 0 0 1 1 0 2 0 1 0 1 3 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 0 1 2 0 0 0 1 0 0 1 0 0 2 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 +1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 2 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 2 0 1 0 2 2 0 1 0 0 0 0 1 1 0 2 0 0 0 1 0 2 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 3 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 1 0 0 0 2 0 2 0 1 3 1 1 0 1 5 0 0 1 0 2 0 1 1 2 0 0 1 1 2 0 2 1 1 0 1 0 1 2 1 2 0 0 0 2 0 1 0 1 0 1 1 0 1 1 1 0 0 0 1 1 2 2 0 0 1 0 1 0 1 1 0 2 1 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 2 0 2 2 0 0 1 1 0 1 0 1 0 2 2 0 0 0 1 1 1 1 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 1 0 1 1 1 0 0 0 0 1 1 0 1 0 0 2 0 0 0 1 1 0 0 0 0 0 0 1 +0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 0 2 0 0 1 0 1 1 0 1 0 0 1 0 2 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 1 2 1 1 1 0 0 1 0 0 0 0 0 2 0 0 2 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 1 3 2 1 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 2 0 2 0 1 0 0 0 2 0 0 2 1 0 2 0 0 0 1 0 0 0 2 2 1 0 0 0 1 0 2 1 1 0 0 1 1 0 2 2 0 1 0 2 1 2 1 0 1 1 0 3 1 1 0 0 0 0 1 0 0 1 2 0 1 0 0 1 0 1 1 0 0 1 0 2 2 0 2 0 0 1 1 0 1 0 0 0 2 1 0 0 0 3 1 0 0 0 1 0 0 0 0 0 0 2 0 3 0 0 2 0 1 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 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 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 +0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 3 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 1 1 1 1 1 2 0 0 1 0 1 0 0 2 2 1 0 2 0 0 1 1 0 1 1 0 0 0 0 1 4 0 1 1 0 0 0 1 0 0 0 1 2 0 1 0 0 1 0 1 0 2 0 1 2 1 1 1 1 2 1 1 0 1 1 2 0 0 0 0 2 0 0 2 0 0 1 1 0 1 0 0 2 0 0 0 0 0 2 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 1 1 2 1 0 1 1 1 2 1 1 1 2 3 0 2 0 0 0 1 0 0 1 2 0 0 1 0 2 1 0 0 1 1 0 0 0 0 0 0 2 1 1 0 0 0 0 2 0 0 0 1 1 1 2 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 1 1 1 2 0 0 0 1 1 1 0 0 0 0 1 3 0 1 0 0 1 2 0 1 0 0 2 1 0 2 0 0 0 3 0 0 1 +0 0 0 0 1 0 0 0 0 1 0 2 0 0 0 0 0 1 0 0 2 0 1 0 0 0 0 0 1 2 0 0 1 1 0 1 0 1 0 0 0 0 2 0 2 0 3 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 2 1 1 1 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 2 1 1 0 0 1 2 0 2 0 1 0 0 0 0 0 0 2 0 1 1 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 2 0 1 0 0 0 0 2 0 2 0 2 0 0 0 3 0 0 1 2 1 1 1 0 0 1 1 0 2 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 2 2 1 0 2 1 0 0 0 0 0 0 0 1 1 1 0 2 1 1 2 2 0 0 0 0 1 2 0 2 0 0 1 0 1 2 0 0 1 0 3 1 0 0 0 0 2 0 1 0 0 0 2 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 2 0 1 0 0 0 0 0 1 +0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 0 2 1 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 2 1 0 0 0 0 0 0 2 0 0 0 0 2 2 0 0 1 1 0 3 0 1 1 1 1 0 1 2 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 1 1 3 0 3 0 1 3 0 0 0 2 1 0 0 1 0 0 0 1 1 4 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 2 0 0 0 0 0 1 3 0 0 3 2 0 1 1 0 0 1 0 1 1 0 0 2 1 0 3 1 0 2 0 0 1 1 1 0 1 2 2 1 0 0 0 3 0 1 0 2 2 0 1 0 3 1 1 0 0 1 0 0 2 0 1 0 0 0 2 1 1 0 4 1 2 1 1 1 2 0 1 2 0 1 0 2 1 0 0 0 1 2 0 2 0 2 1 0 2 0 3 0 2 2 1 0 0 2 1 0 1 0 0 2 0 0 0 0 1 0 0 2 1 0 0 1 0 0 0 1 0 1 0 2 0 0 0 0 1 1 0 1 0 0 0 2 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 2 0 1 0 0 0 1 0 2 0 0 0 1 0 2 0 0 1 0 1 +1 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 2 0 1 0 0 0 2 0 2 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 3 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 2 0 1 1 1 0 0 1 2 0 0 1 1 0 0 0 0 1 1 0 0 2 1 2 1 2 2 2 2 0 0 1 0 2 0 2 0 1 1 1 1 1 2 1 1 2 4 0 0 0 1 0 1 3 1 1 0 0 0 1 3 3 2 2 0 0 1 0 1 0 1 0 0 3 2 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 3 0 0 2 2 2 1 3 0 0 4 1 0 0 1 0 0 1 0 0 1 1 2 1 1 0 0 1 1 1 0 0 1 1 0 1 0 1 1 0 0 0 2 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 1 2 0 0 1 0 0 2 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 +0 0 0 0 2 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 2 1 1 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 1 1 0 1 2 1 0 1 0 0 0 0 0 2 2 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 0 2 1 0 2 0 0 0 1 0 1 1 1 1 2 0 0 3 1 0 0 0 0 1 1 0 1 0 2 2 1 1 0 0 1 0 1 1 1 0 1 0 3 1 0 0 0 0 2 3 3 0 0 0 1 0 0 1 3 2 3 1 0 0 1 1 2 0 4 1 0 1 0 1 0 0 1 3 0 0 0 0 0 0 2 3 0 1 1 0 0 0 0 1 1 1 0 1 0 1 0 4 1 1 2 2 0 2 1 1 0 1 0 1 1 2 1 2 0 1 1 0 0 2 1 0 1 1 1 1 1 0 1 1 2 1 1 0 0 0 0 2 0 0 0 1 1 1 1 0 2 0 0 2 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 3 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 +0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 2 1 1 0 0 0 1 0 2 0 0 0 0 0 0 2 0 1 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 2 1 0 0 1 0 0 1 0 0 0 0 1 0 0 2 2 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 2 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 4 0 0 0 2 1 0 2 0 1 2 2 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 2 2 0 1 1 0 1 1 0 0 2 1 1 1 0 0 2 1 0 1 1 1 0 2 1 0 0 1 1 1 1 0 0 1 0 0 0 2 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 1 3 0 0 0 0 1 0 0 0 1 2 1 0 0 0 2 0 0 0 1 0 1 1 1 1 0 2 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 2 1 0 1 0 1 1 1 3 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 2 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 1 0 0 0 2 1 0 0 0 1 0 0 2 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 3 0 0 1 0 0 2 1 0 1 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 4 2 0 0 0 1 2 0 0 0 0 0 2 2 0 0 0 1 0 0 0 1 1 0 1 1 2 1 0 1 1 0 1 1 0 3 0 1 0 0 0 0 1 1 1 0 2 0 0 0 0 1 0 0 0 1 2 2 0 1 1 3 0 0 0 2 1 2 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 2 0 1 1 1 0 0 2 1 2 3 0 1 2 0 1 0 2 1 1 0 0 0 1 0 0 1 0 1 2 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 2 0 0 2 1 1 0 1 1 0 0 0 0 0 0 1 0 3 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 2 2 0 0 0 0 0 1 0 0 2 0 2 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 +0 0 0 0 0 0 2 0 0 1 0 1 0 0 1 0 1 2 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 2 1 0 0 0 1 1 0 2 1 0 1 2 0 1 0 0 0 1 1 0 2 0 0 4 0 1 2 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 3 0 0 2 3 1 1 0 2 0 0 1 2 0 1 0 0 0 0 1 1 3 1 1 2 0 1 1 0 1 0 1 0 1 0 0 0 2 4 1 0 1 2 0 1 1 1 0 2 0 0 1 2 2 0 0 0 0 2 1 2 0 0 1 2 0 0 2 0 1 0 1 0 1 0 1 2 1 0 2 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 0 2 0 1 1 0 0 0 1 2 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 +0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 1 0 0 0 2 2 0 0 1 0 0 0 1 0 0 2 1 0 0 0 0 0 2 1 0 1 2 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 2 2 1 0 0 0 2 0 2 0 4 1 0 1 0 1 3 0 0 0 1 5 1 0 1 0 4 0 0 0 0 0 0 0 0 1 1 0 0 1 2 0 1 1 3 1 0 0 1 2 0 2 0 4 1 1 1 1 3 0 1 0 2 1 0 1 2 0 1 1 0 0 2 0 1 1 0 1 0 0 1 2 1 4 2 0 1 1 2 0 0 1 1 0 0 1 0 1 0 1 0 2 1 0 0 2 1 1 1 0 2 0 1 0 0 1 0 1 0 0 1 1 1 0 2 3 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 2 1 1 2 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 2 2 2 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 2 0 1 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 +1 2 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 2 0 0 1 1 2 2 0 1 0 0 0 2 1 1 1 2 0 0 2 0 2 1 0 2 0 1 0 0 0 1 0 0 1 0 0 0 1 2 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 2 0 2 1 0 1 3 0 1 0 0 1 2 1 0 2 2 1 0 0 1 0 0 1 2 2 3 1 0 0 1 1 0 2 0 1 0 1 1 0 0 1 2 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 3 0 0 3 2 1 0 0 1 0 0 0 1 0 2 0 4 0 0 2 0 0 0 0 1 1 1 1 1 0 0 2 1 1 2 0 3 0 0 1 1 1 0 1 1 2 0 1 1 0 1 0 0 1 0 1 0 1 3 0 1 0 3 0 0 0 2 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 2 1 1 0 1 1 0 1 2 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 2 0 1 0 0 0 1 0 0 0 0 1 1 0 0 2 1 0 0 1 1 3 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 +2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 2 1 0 1 0 0 0 1 0 1 1 0 3 0 2 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 2 2 0 0 1 1 0 0 0 1 0 0 3 0 0 1 1 2 1 2 1 0 1 0 1 1 0 2 0 0 0 3 0 1 2 1 1 3 2 2 2 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 2 0 2 0 3 1 3 0 0 1 0 1 1 1 3 0 2 0 1 2 0 1 2 0 1 1 1 0 0 0 0 1 2 1 1 0 0 1 0 2 0 1 0 0 0 1 0 1 0 1 0 0 2 1 0 0 2 0 0 0 1 3 2 0 0 1 0 0 1 1 0 0 2 2 1 0 3 0 0 0 0 1 4 0 0 0 0 1 0 1 0 1 0 1 1 0 2 1 0 0 1 0 0 0 0 2 0 1 2 1 1 1 1 0 0 2 0 0 0 0 0 0 1 3 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 2 1 1 1 0 1 1 0 0 2 1 0 2 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 2 0 0 0 1 0 1 +2 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 2 0 1 1 0 0 3 1 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 2 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 3 2 1 2 1 2 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 2 1 1 0 3 0 0 0 0 0 1 0 1 1 3 1 1 0 0 1 1 1 0 2 1 0 1 1 0 0 0 1 1 1 1 0 1 2 1 4 0 0 0 2 1 1 3 1 1 0 0 0 1 2 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 2 1 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 2 0 0 1 0 0 0 3 0 3 0 1 1 0 0 0 2 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 3 0 2 0 0 0 1 0 1 1 1 0 0 1 0 2 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 2 0 0 1 0 1 0 0 0 0 1 1 2 1 0 0 0 0 0 1 0 0 0 0 +0 1 0 0 2 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 0 2 1 0 2 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 2 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 2 0 1 0 1 2 1 4 0 0 1 1 2 1 1 0 0 0 0 0 0 1 0 0 2 1 0 0 0 1 1 0 0 1 1 1 2 1 1 0 5 2 2 0 2 0 1 0 2 0 2 0 0 0 0 0 1 2 1 1 0 0 0 0 2 1 2 2 0 1 0 1 1 1 0 2 1 0 0 0 1 3 1 0 1 2 0 0 1 1 0 1 0 0 3 0 0 0 1 0 2 0 1 2 1 1 1 0 2 2 0 0 1 0 1 0 1 1 1 0 2 0 0 0 0 0 0 2 0 1 0 0 0 3 2 1 1 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 3 0 2 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 +0 0 0 1 1 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 3 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 2 0 2 0 0 1 1 0 0 0 0 1 0 2 1 1 0 0 0 0 1 0 0 2 1 2 0 0 2 1 0 0 1 0 1 0 1 0 1 1 1 0 0 2 3 1 1 0 0 1 0 0 1 4 1 1 1 0 0 1 1 1 1 2 2 0 0 0 0 1 1 0 2 1 3 1 1 0 1 4 1 0 1 0 0 0 0 2 1 2 2 0 1 1 0 1 1 0 4 3 1 1 0 1 0 1 0 0 1 3 1 0 1 0 0 0 0 2 0 2 0 1 0 1 0 0 3 0 2 1 0 1 0 0 1 0 3 3 0 0 2 2 0 1 2 1 2 2 0 0 1 0 1 2 2 0 0 3 2 1 2 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 2 0 0 2 1 0 1 1 0 0 2 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 2 0 0 0 0 0 1 0 0 0 1 0 0 0 0 +0 0 0 0 2 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 1 0 2 0 2 0 0 0 2 0 0 2 1 2 1 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 1 2 0 0 1 0 0 0 0 2 0 1 1 0 2 1 0 0 1 0 3 1 1 4 1 1 1 0 0 2 1 1 0 0 2 2 1 1 0 1 1 1 0 2 1 2 0 0 0 0 1 1 1 0 1 2 0 1 1 1 1 1 0 0 0 0 0 1 2 0 2 0 2 0 1 1 0 2 0 2 0 0 0 1 2 1 0 0 2 2 0 0 1 1 2 3 0 1 0 3 0 2 1 0 2 2 1 1 2 0 0 0 1 0 2 1 1 1 0 1 1 0 0 0 1 2 1 2 0 2 1 0 1 3 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 1 1 1 0 2 0 0 0 0 0 0 0 1 2 0 0 0 1 0 0 0 0 0 1 2 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 +1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 2 2 0 0 2 0 0 1 1 0 0 1 0 0 3 0 0 0 0 1 1 0 2 0 0 1 1 0 1 0 0 1 0 0 2 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 2 0 0 0 1 0 2 0 0 0 1 1 0 1 1 2 1 0 0 2 0 0 1 0 1 1 0 2 4 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 2 0 0 0 0 0 0 3 0 3 0 0 1 1 2 0 0 3 0 0 0 1 2 0 0 0 0 2 1 1 3 1 0 2 0 1 1 1 1 0 2 1 1 1 4 0 0 1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 0 0 0 1 1 2 0 2 0 2 1 1 2 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 1 2 0 1 0 0 0 1 3 2 1 0 0 1 0 1 0 0 1 0 1 0 0 2 +0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 3 1 2 0 1 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 2 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 2 3 1 2 2 0 0 0 0 1 0 1 3 0 1 1 1 0 2 1 0 0 0 1 1 0 1 0 0 0 2 0 3 0 1 1 0 1 0 1 1 2 2 0 0 0 0 0 0 5 1 1 1 1 0 2 1 0 1 1 2 0 1 0 1 0 2 0 1 0 1 3 2 0 0 0 3 0 0 1 1 1 1 0 0 0 2 3 3 2 1 0 1 0 0 0 0 1 1 2 0 1 2 1 0 0 1 0 2 1 0 1 0 0 0 1 1 2 0 1 1 0 1 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 3 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 +1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 1 0 0 0 2 2 1 1 4 0 1 1 1 2 0 0 0 0 2 1 0 2 0 0 1 2 1 0 0 2 0 0 2 2 2 0 1 1 0 1 1 0 0 1 0 2 0 0 0 0 0 0 0 0 1 1 0 2 0 0 0 2 0 4 0 1 1 4 0 0 0 1 0 1 0 1 1 2 0 1 0 2 0 0 1 0 2 0 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 2 0 2 0 2 2 1 0 0 0 2 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 2 1 2 1 0 0 0 0 1 2 1 0 0 0 0 1 1 0 0 1 0 0 0 1 2 0 0 0 0 1 0 0 0 0 1 0 1 0 0 2 1 0 0 0 2 0 1 1 3 0 0 0 0 0 1 1 2 0 0 1 0 1 0 2 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 +0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 2 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 2 0 0 2 0 1 0 2 1 1 0 1 1 1 0 2 0 1 0 0 0 0 1 0 1 0 0 2 0 1 1 4 0 0 1 0 3 1 2 1 0 0 0 0 0 1 1 1 1 1 2 2 0 0 0 1 1 1 1 3 1 0 0 0 2 0 1 1 2 0 2 1 0 0 1 2 0 0 1 1 0 1 2 0 0 1 1 1 0 1 0 1 2 0 1 2 0 0 1 1 0 1 0 1 1 0 2 1 1 2 1 1 0 0 0 1 0 1 0 1 2 0 0 0 0 0 0 1 0 0 1 0 1 2 0 1 1 0 3 0 0 2 1 0 0 2 0 1 0 2 1 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 2 0 0 0 2 0 0 0 1 0 0 0 0 1 0 2 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 2 0 0 0 0 0 +3 0 0 0 1 0 0 2 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 2 1 1 0 1 0 0 0 2 1 1 1 0 0 0 0 0 1 3 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 2 2 0 0 0 0 2 1 2 2 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 0 2 1 2 0 2 1 1 3 3 1 3 0 2 0 1 0 0 1 3 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 2 0 1 1 0 0 1 1 4 1 0 1 2 0 0 0 1 1 1 3 1 0 0 2 1 1 0 0 0 2 4 0 0 0 1 1 0 1 0 1 0 1 0 0 2 2 0 2 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 3 1 2 2 1 1 1 1 0 1 0 1 0 0 0 1 2 0 0 0 1 1 0 0 1 1 0 0 0 0 2 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 2 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 2 0 0 3 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 +1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 2 0 1 0 0 0 0 0 1 0 0 1 0 0 0 3 0 2 0 0 1 1 0 0 0 0 3 2 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 2 0 0 0 3 0 2 2 1 0 2 0 1 0 0 1 1 0 0 1 2 2 0 0 0 2 0 1 1 0 0 1 2 0 0 0 0 1 0 0 0 0 1 1 2 1 1 0 0 3 2 1 0 0 0 0 0 1 3 1 1 1 0 1 0 0 1 1 3 0 0 0 1 0 0 1 1 0 2 0 0 0 0 0 2 1 1 2 0 2 1 0 1 0 2 0 0 0 1 0 0 1 1 0 2 4 1 4 1 0 0 1 0 0 0 3 0 0 0 0 0 0 0 0 1 0 2 0 0 0 1 0 2 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 2 0 0 0 0 1 1 0 1 1 1 0 0 0 0 3 0 0 2 2 0 0 1 0 1 0 3 0 0 0 0 1 0 0 4 0 0 0 0 3 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 2 1 1 1 0 1 1 0 0 2 +1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 2 2 0 1 2 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 3 2 0 1 0 0 0 0 0 4 0 2 0 1 1 0 0 0 0 1 2 1 0 1 2 1 0 0 2 1 1 0 0 0 0 0 0 1 0 0 0 1 1 3 0 0 1 0 3 0 1 2 1 0 2 1 2 0 1 0 2 0 0 0 0 3 0 1 1 1 0 2 0 0 2 0 1 0 1 0 0 0 2 0 0 2 0 0 0 1 1 3 0 0 0 0 0 0 0 2 2 0 2 0 0 1 1 1 0 2 2 0 1 0 0 0 0 0 0 0 2 0 1 0 1 1 0 0 0 0 2 0 0 1 0 0 1 2 2 1 2 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 2 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 +0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 2 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 2 1 1 1 2 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 1 2 1 0 0 1 0 0 0 0 0 1 1 1 0 0 3 0 1 1 1 0 0 2 0 0 1 1 0 0 0 0 0 2 0 0 0 1 0 0 0 1 0 1 1 0 0 0 2 1 0 0 2 0 1 0 2 2 0 0 0 0 0 2 2 1 2 2 1 0 2 1 1 1 2 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 1 3 1 0 0 2 2 0 0 0 0 1 0 0 1 3 0 1 0 2 1 0 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 2 0 0 1 0 1 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 +1 0 0 0 0 0 1 2 0 0 1 1 0 0 1 0 0 1 1 0 2 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 2 0 0 0 0 0 0 0 1 1 1 2 0 1 1 1 1 0 0 0 1 0 0 0 1 1 3 0 2 3 2 1 1 0 0 1 0 1 0 0 1 0 0 1 2 0 1 0 0 2 0 1 0 0 2 2 4 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 2 1 0 0 2 1 1 1 0 2 2 2 0 1 0 0 2 1 0 0 0 0 2 0 0 3 0 1 1 1 1 0 0 1 1 1 2 1 3 0 1 1 0 2 1 0 0 2 4 1 1 1 1 0 2 0 1 1 1 0 1 0 0 0 2 0 1 1 1 0 1 1 0 2 0 0 2 1 0 1 2 0 0 0 1 1 0 0 2 0 1 0 1 2 0 0 3 0 1 0 0 0 1 1 0 1 0 0 2 0 0 0 1 0 0 1 0 2 1 0 0 1 1 0 0 0 0 0 0 1 0 0 2 1 1 0 1 3 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 +0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 2 1 3 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 2 2 1 1 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 3 0 2 0 0 1 1 0 0 1 1 1 1 0 2 0 0 0 2 0 1 1 1 1 1 1 1 0 2 2 0 1 0 1 1 0 0 0 1 0 0 2 1 0 1 0 1 1 1 0 0 2 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0 2 0 0 1 2 2 0 0 0 1 2 1 0 0 0 2 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 4 0 0 0 1 1 0 1 0 0 2 1 0 1 2 0 0 0 1 2 0 0 1 0 1 1 0 0 2 1 0 1 1 1 0 3 0 1 0 3 1 0 1 0 2 0 0 0 1 0 1 0 0 1 2 0 0 1 0 0 2 0 0 0 0 2 0 1 0 1 2 0 1 0 0 2 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 2 0 0 0 +0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 2 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 1 0 1 1 1 0 2 2 0 1 0 1 0 1 0 0 1 2 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 0 3 0 0 1 0 1 0 1 0 1 1 1 1 1 3 0 0 2 0 0 2 0 0 0 1 1 2 0 0 0 1 0 1 1 0 1 1 1 1 0 0 0 2 1 0 0 0 0 0 0 1 0 1 2 1 2 0 1 1 1 1 0 3 0 1 1 2 1 0 0 0 2 1 1 1 3 1 0 1 0 0 0 1 0 1 1 1 0 1 0 2 0 1 0 1 1 0 0 0 1 1 0 0 3 0 0 1 2 3 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 2 1 1 1 1 0 0 0 1 0 0 0 0 0 2 +0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 3 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 1 0 0 0 1 1 0 1 2 1 0 0 1 1 1 0 2 0 0 0 0 0 0 0 1 0 0 1 0 0 2 1 1 1 1 0 3 1 0 0 2 1 1 0 1 0 0 1 0 1 0 2 0 1 0 1 1 1 2 2 0 0 2 1 0 0 1 0 3 0 0 1 0 1 1 0 0 2 0 0 1 0 0 3 0 1 1 2 0 1 1 2 1 0 1 0 1 1 0 3 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 2 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 2 1 2 0 0 0 0 0 0 0 2 0 1 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 2 0 0 0 0 1 1 1 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 2 0 1 0 0 0 3 2 0 0 0 0 1 0 0 0 1 +1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 2 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 4 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 2 0 1 0 2 0 0 0 0 0 0 1 0 0 0 0 1 2 1 1 0 2 0 0 4 0 2 2 0 2 0 0 0 0 2 0 0 0 1 2 0 2 1 0 2 1 0 0 0 0 0 1 0 2 1 1 0 0 2 1 0 1 0 1 1 2 0 0 0 0 2 0 2 0 0 2 1 0 1 2 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 2 0 1 0 0 0 1 3 2 0 0 1 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 2 0 1 0 0 1 1 0 1 1 2 1 3 1 0 1 0 0 0 1 0 2 0 1 0 2 2 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 2 2 2 0 0 1 3 0 1 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 +0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 3 0 0 1 3 0 0 1 1 1 0 0 0 0 0 0 3 0 1 1 1 0 0 2 0 0 0 0 2 1 1 0 0 1 1 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 1 0 2 0 3 0 0 0 0 1 1 0 1 0 0 2 0 0 1 0 1 2 0 2 0 0 1 1 1 0 0 0 1 1 1 1 2 1 0 0 0 0 0 2 1 0 1 3 0 1 1 0 1 1 1 1 1 2 0 0 0 1 2 1 0 0 2 1 1 0 0 0 0 0 2 0 0 0 1 1 2 0 0 1 0 0 0 3 1 1 0 0 2 0 0 0 0 0 4 1 0 0 0 1 0 0 2 2 0 1 0 0 2 0 0 0 1 2 0 1 0 1 1 0 2 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 2 0 +1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 2 1 1 0 1 2 0 0 0 0 0 0 0 2 2 0 0 1 1 0 0 2 2 0 1 0 0 2 1 0 0 1 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 2 0 1 3 0 1 2 1 1 2 3 0 0 0 0 2 0 0 0 1 0 1 3 0 1 2 0 0 1 0 1 0 0 0 1 2 0 2 2 0 0 2 0 0 1 1 0 1 0 0 2 0 0 1 2 0 1 2 1 1 0 0 2 0 0 0 1 1 2 0 0 2 1 3 0 1 0 0 0 0 1 3 2 2 0 2 0 1 0 1 0 1 1 1 1 0 3 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 2 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 2 2 0 0 0 1 0 0 +0 1 2 0 1 0 1 0 2 1 1 1 0 0 0 0 0 1 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 2 0 0 0 1 0 1 0 0 0 1 1 0 0 0 2 0 0 0 0 2 0 0 1 1 0 0 0 0 0 0 1 0 2 0 1 0 0 0 1 0 2 3 2 0 1 1 0 0 0 1 0 0 1 1 1 1 1 2 1 3 0 0 0 1 2 1 1 0 1 0 0 1 1 1 0 4 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 2 1 1 0 0 0 0 0 0 0 0 2 1 1 0 2 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 2 0 1 0 0 1 0 0 1 0 3 0 0 1 0 0 0 1 2 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 2 0 1 0 2 0 0 0 1 0 1 1 0 0 0 2 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 +1 2 2 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 2 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 2 0 0 0 0 2 1 0 1 0 0 2 0 1 1 2 0 2 0 0 1 0 1 1 2 0 2 0 1 3 1 3 0 2 1 1 0 1 1 0 1 2 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 2 0 2 0 0 0 0 0 0 1 0 0 0 0 2 0 1 0 0 0 0 0 0 2 0 0 3 0 3 1 0 1 0 0 1 0 1 1 0 2 1 1 1 0 2 2 0 1 1 0 1 3 0 2 0 0 0 2 0 2 1 0 0 1 1 0 0 2 1 0 1 0 0 0 0 0 0 2 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 1 1 0 2 0 0 0 1 0 1 0 0 0 2 0 0 1 0 3 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 2 0 1 1 0 3 1 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 +0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 2 0 0 2 1 0 0 0 0 0 0 0 1 2 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 2 0 0 1 0 0 1 3 3 1 2 0 1 2 0 0 0 1 0 0 1 1 0 1 0 3 0 2 0 0 2 1 1 0 1 1 1 1 0 2 2 1 1 0 1 0 0 0 2 2 0 0 0 0 1 1 1 0 5 0 0 1 0 2 0 0 1 1 0 2 0 2 0 1 3 0 1 0 0 4 0 0 0 0 0 2 0 0 2 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 3 1 0 2 1 2 2 1 2 1 2 1 0 0 0 2 0 1 1 2 1 0 2 0 0 0 0 1 1 0 0 0 1 1 0 1 2 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 2 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 +0 1 0 0 0 1 0 0 0 0 0 0 0 1 2 0 1 2 0 0 1 0 1 0 2 0 0 0 1 0 1 0 0 0 0 0 0 2 1 0 0 0 1 1 1 2 0 0 1 0 0 0 0 0 0 0 0 0 0 2 1 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 3 0 2 0 0 1 0 0 0 2 0 1 2 1 0 0 1 0 1 2 1 0 1 1 2 0 0 3 1 0 1 0 1 0 0 3 1 0 1 2 1 2 0 3 0 0 4 4 1 0 0 0 1 0 2 1 1 2 0 0 2 2 0 1 0 1 0 0 0 1 1 2 1 1 1 0 0 0 0 0 1 2 0 0 0 2 1 0 0 1 0 1 3 0 0 1 1 0 1 0 0 0 0 1 1 2 0 0 0 2 1 1 1 0 1 1 1 2 0 0 1 1 1 1 1 0 2 1 0 0 0 0 0 2 0 1 0 0 1 2 1 0 1 1 0 2 0 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 2 0 0 0 0 1 0 0 1 +0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 1 2 0 2 2 2 2 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 2 1 0 1 1 3 0 0 3 0 2 2 0 0 2 2 1 0 1 0 0 1 0 2 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 2 0 1 1 2 0 0 0 1 0 1 1 4 1 1 0 1 1 1 1 0 2 1 1 1 1 1 2 1 0 1 0 2 1 1 2 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 2 2 0 0 0 0 1 1 0 0 1 3 0 0 1 0 0 2 1 0 0 0 3 1 0 0 2 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 1 0 2 1 0 1 0 2 0 2 0 1 0 0 1 2 1 1 0 1 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 2 2 0 0 1 0 1 0 0 0 2 0 0 0 2 0 0 0 1 1 0 0 0 1 1 0 2 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 1 1 0 1 0 1 0 0 0 1 0 3 1 0 0 2 1 1 1 0 0 1 0 +0 1 0 0 0 0 0 1 2 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 2 0 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 2 0 1 2 0 0 1 0 0 0 3 0 1 0 1 0 0 0 0 0 2 0 0 0 0 0 1 0 0 1 0 2 1 1 1 2 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 2 1 1 0 3 0 0 0 1 1 0 1 2 0 0 0 1 1 1 1 1 0 1 1 2 1 0 2 0 0 0 1 2 2 1 1 0 2 2 0 2 0 2 1 2 1 0 0 4 1 0 2 0 1 0 2 1 1 2 2 0 0 0 1 0 3 2 0 0 1 0 0 0 3 1 0 1 0 0 3 0 0 0 2 1 0 1 0 0 1 1 0 1 1 0 2 0 0 1 1 0 0 1 1 0 0 2 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 2 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 2 0 1 0 +1 0 0 0 2 0 0 0 0 2 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 3 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 2 0 2 0 0 1 1 0 0 0 1 0 0 2 0 0 0 0 0 2 1 1 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 3 0 0 1 0 1 0 0 1 0 0 2 0 0 2 0 0 0 0 1 0 1 0 1 2 1 0 1 0 1 0 0 2 1 0 1 1 0 0 2 1 1 1 0 1 2 0 0 1 0 0 1 0 0 0 1 1 0 2 1 0 0 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 0 2 4 0 1 0 0 2 1 0 0 0 0 0 0 0 2 1 1 0 0 0 0 0 0 1 1 2 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 2 0 0 1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 1 0 1 1 0 2 2 1 0 0 0 0 0 0 2 2 1 0 2 0 0 0 1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 2 2 0 0 0 0 1 0 0 +0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 2 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 2 1 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 2 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 2 0 0 0 1 2 1 0 2 2 0 2 1 0 1 0 0 0 2 0 1 1 1 0 0 2 1 1 1 0 0 0 2 2 1 1 0 1 0 1 1 0 1 0 2 1 0 1 0 0 1 0 2 0 0 0 0 2 0 3 0 0 0 1 2 1 0 0 0 0 1 0 0 1 2 2 0 1 1 2 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 2 0 0 0 0 0 0 0 0 0 0 1 0 3 0 0 2 1 1 3 0 1 0 0 0 0 2 0 0 0 0 1 1 2 1 0 2 0 1 0 1 0 0 2 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 3 0 1 0 1 1 1 2 0 2 0 1 3 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 2 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 +1 1 1 0 0 1 0 1 1 2 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 0 2 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 4 1 1 1 1 0 0 0 0 0 0 3 1 1 1 1 2 1 3 0 1 1 1 1 2 1 0 3 1 0 0 0 0 1 3 2 0 1 0 0 0 0 0 1 1 1 0 2 0 1 1 1 0 0 2 1 2 0 1 0 0 2 0 0 1 1 2 0 0 2 1 1 2 2 1 0 0 1 0 0 1 0 3 2 1 1 1 0 3 0 1 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 2 0 1 0 0 2 2 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 2 0 1 0 0 0 1 0 1 0 0 1 1 2 0 0 0 3 0 1 1 0 2 2 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 3 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 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 1 1 1 1 2 0 0 0 1 1 0 0 0 0 1 1 1 0 2 0 1 0 3 2 1 0 0 0 0 2 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 2 0 0 2 0 3 0 1 0 1 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 2 2 1 0 2 0 0 1 1 1 0 0 2 1 0 0 0 0 0 1 2 0 0 0 0 3 0 0 1 2 2 0 0 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 0 0 1 2 1 0 1 2 0 0 0 2 0 0 1 0 1 0 1 0 1 1 4 0 0 1 1 1 1 2 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1 2 2 1 0 0 0 1 1 2 0 1 2 0 0 0 0 0 1 0 0 2 0 0 2 1 2 0 1 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 2 0 0 1 0 2 1 1 0 0 0 1 2 1 0 1 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 1 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 1 1 1 1 1 2 1 0 0 0 1 0 0 0 1 1 0 1 2 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 2 0 0 0 0 1 0 0 2 0 1 2 1 0 0 1 2 1 0 1 1 1 1 1 1 1 1 3 0 0 1 0 1 0 2 0 0 0 1 2 0 0 0 1 0 0 1 0 1 1 1 1 1 2 1 1 0 1 0 2 2 2 0 1 1 0 0 0 1 0 1 0 0 2 1 1 0 1 0 0 0 0 1 0 2 1 3 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 2 0 2 0 2 1 0 2 0 0 0 0 0 0 1 1 1 2 0 2 1 0 0 0 1 0 0 1 0 0 1 2 0 1 3 1 0 0 0 1 0 1 0 3 0 1 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 2 1 1 0 0 1 1 3 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 +1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 2 0 0 1 1 0 1 1 0 0 0 0 0 0 2 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 2 1 1 0 1 1 0 0 1 0 1 0 0 0 2 2 0 0 1 2 1 3 0 1 2 3 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0 2 2 0 2 2 1 0 0 2 0 1 2 1 0 0 0 0 4 0 0 0 1 0 1 2 2 0 2 0 1 3 0 2 3 0 0 0 0 2 0 1 1 1 2 1 0 1 0 0 0 0 0 1 1 0 1 1 0 1 2 1 0 1 0 0 1 0 2 0 1 2 2 2 0 0 1 0 2 0 1 1 0 1 0 0 2 0 2 0 0 1 0 1 2 0 1 0 1 1 0 2 1 0 2 0 0 1 0 0 1 1 0 2 1 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 +0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 2 1 1 0 0 0 0 0 1 0 0 1 0 1 2 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 2 1 0 0 1 0 0 0 0 0 4 1 1 2 0 1 0 0 3 2 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 2 0 0 1 0 1 0 0 1 0 0 1 1 1 1 2 0 0 0 1 0 0 2 0 0 0 0 1 1 0 0 2 0 0 0 1 1 0 0 1 0 0 1 0 1 2 1 1 1 0 0 1 2 0 1 2 0 1 1 0 0 1 0 1 0 1 2 0 2 2 1 1 0 0 1 3 1 0 1 0 2 0 1 2 1 0 0 3 1 1 2 1 2 2 2 0 0 0 0 1 0 0 1 0 0 1 0 0 2 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 2 0 0 4 0 0 0 1 0 0 0 0 2 0 1 0 0 0 1 0 1 0 0 0 0 2 0 0 0 1 0 2 1 2 0 0 0 0 1 0 1 0 0 0 2 1 0 1 1 1 0 0 0 1 0 0 1 0 0 +1 0 0 1 0 0 2 0 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 2 0 3 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 0 1 0 1 1 2 0 1 1 0 0 0 0 0 1 0 3 1 1 1 0 3 1 0 0 3 0 0 3 0 0 1 1 1 0 2 1 0 0 0 2 2 0 0 0 1 1 0 0 0 3 0 0 1 0 1 1 0 0 3 1 2 1 0 3 0 1 1 0 0 0 2 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 2 2 1 0 0 1 0 0 1 1 0 0 0 0 1 0 2 1 0 1 1 0 1 1 0 1 0 2 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 3 3 1 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 2 2 0 0 0 0 1 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 2 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 +0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 2 1 1 0 1 2 0 1 0 0 2 0 0 0 1 1 0 0 2 0 0 1 1 0 1 0 1 0 1 0 0 1 0 2 0 1 0 0 0 0 0 1 2 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 2 0 0 1 0 1 1 0 1 0 2 2 1 1 1 1 1 0 2 1 1 0 3 0 0 1 1 0 0 1 2 0 0 2 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 1 2 0 0 1 0 0 0 0 0 3 2 1 1 1 0 0 0 0 1 0 1 2 1 0 0 0 1 2 1 0 3 1 1 0 1 4 1 1 0 3 1 1 1 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 2 1 1 0 1 1 0 0 1 0 1 0 0 2 3 1 1 2 2 1 0 0 1 1 1 1 0 0 1 1 2 1 1 2 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 2 0 0 2 0 0 1 1 0 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 2 0 +3 1 1 1 2 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 1 2 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 0 2 2 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 1 0 2 1 1 1 0 2 0 2 0 0 1 0 1 2 0 0 2 0 0 2 0 3 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 2 1 2 1 1 2 0 1 0 0 2 0 0 1 0 0 0 1 1 0 1 1 2 0 0 2 0 0 0 0 1 1 2 0 0 3 1 0 1 0 0 0 2 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 0 1 1 0 0 1 2 0 2 0 0 0 0 0 0 1 1 0 0 0 0 2 1 0 1 0 0 0 2 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 +0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 2 0 1 0 1 0 0 0 1 2 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 0 0 0 0 1 0 0 1 1 1 0 0 2 0 2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 2 0 2 1 1 1 2 0 1 0 0 0 2 0 0 1 1 0 2 1 0 0 0 0 0 0 1 1 1 1 0 0 0 3 0 1 4 0 0 1 0 1 0 0 1 2 0 0 1 0 1 0 0 1 1 1 1 0 0 2 0 1 1 0 0 0 2 1 1 0 1 1 1 0 0 1 2 0 1 0 1 0 2 0 0 2 0 1 0 0 0 0 1 1 1 1 1 0 0 1 0 2 1 0 1 0 1 0 1 1 0 3 1 0 3 0 1 2 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 3 2 2 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 0 1 0 0 0 1 0 0 2 0 0 1 2 2 0 0 0 1 0 0 1 0 +0 0 1 2 0 0 0 1 0 2 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1 1 2 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 4 0 1 1 1 3 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 2 0 0 2 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 2 0 3 0 1 0 0 1 0 2 0 2 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 1 2 1 2 1 1 1 2 0 1 3 1 0 0 1 0 2 1 0 1 1 1 1 0 1 2 1 0 2 1 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 2 3 1 0 0 0 1 1 0 0 0 1 0 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 0 0 0 2 2 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 2 0 2 0 0 0 +0 1 0 0 0 0 0 1 1 3 0 0 1 1 1 0 0 2 0 2 0 0 1 0 1 0 1 0 2 0 1 1 0 0 0 0 2 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 2 2 0 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 2 2 0 2 0 1 0 1 0 1 1 0 0 0 1 3 0 1 2 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 2 2 1 1 1 0 0 2 0 0 1 1 0 0 0 2 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 0 2 1 1 0 1 3 0 0 1 0 1 1 0 1 1 1 0 0 1 0 2 0 0 0 0 2 2 1 0 2 0 1 0 1 0 2 0 1 1 2 0 0 0 0 0 0 0 0 1 0 0 3 0 1 0 0 1 2 1 0 1 1 1 0 0 0 0 2 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 2 0 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 2 0 1 0 0 1 0 +0 0 2 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 2 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 2 0 0 0 0 1 2 1 0 2 1 0 0 0 0 0 1 0 1 0 1 0 2 0 0 0 2 1 1 0 0 3 0 1 1 2 0 0 1 0 0 2 1 1 3 0 0 0 0 2 0 0 1 0 1 0 0 1 0 2 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 2 0 0 2 2 0 1 0 1 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 2 0 1 0 0 2 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 1 2 0 0 3 1 2 1 1 0 1 1 1 0 0 1 2 2 1 0 0 1 0 3 1 0 0 0 1 1 2 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 2 0 0 2 0 1 2 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 1 1 1 1 0 1 1 2 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 2 0 0 0 0 1 0 2 0 2 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 2 1 1 0 1 2 0 1 1 0 0 1 1 0 0 1 1 0 0 0 2 1 0 0 0 0 1 2 0 1 0 0 1 0 1 0 1 0 3 2 1 1 0 0 3 0 1 0 0 1 1 1 0 0 0 4 1 1 0 0 2 1 0 0 0 0 2 1 2 0 1 0 1 0 0 0 0 2 0 2 0 2 0 1 0 0 0 0 2 1 0 2 0 0 4 1 0 1 0 1 0 0 0 1 1 2 1 0 1 1 0 0 1 0 1 1 0 4 0 0 0 2 0 3 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 2 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 2 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 2 1 1 0 0 0 1 1 1 0 0 0 1 0 1 +1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 2 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 1 0 1 0 2 0 0 1 0 3 3 0 0 1 1 1 0 1 0 2 0 0 1 0 0 0 0 1 1 0 0 2 0 0 1 0 1 0 0 2 1 1 0 2 1 0 1 0 0 1 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 3 3 1 0 1 0 2 1 1 1 0 2 0 1 1 2 1 1 2 1 1 3 1 1 1 2 2 0 1 0 0 3 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 0 1 0 0 1 0 2 0 0 1 1 0 2 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 1 1 2 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 2 1 0 1 0 0 0 0 0 1 2 0 2 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 +0 0 1 0 0 0 0 0 0 2 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 2 0 0 1 1 2 4 0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 2 0 1 0 0 1 0 1 0 1 2 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 2 0 1 4 1 0 0 1 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 1 0 1 0 0 0 2 1 0 1 1 0 0 1 0 2 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 2 0 0 0 3 2 1 1 0 1 0 0 1 2 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 2 0 0 2 2 1 1 0 1 2 2 2 0 0 1 2 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 2 1 2 0 0 1 1 0 1 1 0 2 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 1 0 1 0 0 1 +0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 2 2 1 0 2 0 1 0 2 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 2 0 0 0 0 2 0 1 0 0 2 0 0 0 3 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 2 1 0 1 0 0 1 1 2 1 0 0 1 0 0 2 1 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 2 1 1 0 1 0 2 0 1 3 0 0 0 0 0 1 0 0 1 0 1 1 1 2 0 1 2 0 1 0 2 2 0 1 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 1 0 1 2 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 2 0 0 1 1 0 1 2 1 1 0 0 1 0 0 0 0 0 1 0 2 0 0 1 0 1 0 0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 3 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 2 2 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 3 1 1 0 1 1 0 0 0 1 2 1 0 2 1 0 0 0 0 0 0 0 0 1 0 1 0 2 0 1 1 1 0 0 0 1 2 1 1 0 0 0 0 0 1 2 2 0 2 1 0 0 0 2 0 0 1 0 0 0 2 0 1 1 1 0 1 1 0 0 2 0 2 1 1 2 2 0 1 0 0 0 2 2 0 0 0 0 1 1 0 1 0 0 1 1 1 2 0 0 0 1 1 1 0 0 2 1 0 3 0 0 1 0 1 0 0 1 2 0 0 0 1 0 1 1 1 0 2 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 2 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 +0 1 0 0 0 0 0 1 0 0 1 0 2 0 1 0 2 0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 0 1 0 0 0 1 2 0 1 1 0 0 2 0 1 1 0 0 0 0 0 1 0 0 2 1 2 0 0 1 3 0 1 0 0 1 1 0 2 0 0 2 3 1 1 0 0 0 1 1 0 1 2 0 0 2 1 0 2 1 1 0 0 1 0 0 1 0 1 0 0 1 1 1 0 2 0 0 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 1 0 2 0 1 1 0 0 0 0 2 0 2 0 0 1 1 0 2 0 0 0 0 0 1 1 0 0 2 0 0 0 0 0 1 0 2 1 0 2 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 2 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 +1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 1 0 1 2 3 0 3 2 2 2 0 1 1 2 1 0 0 0 0 1 1 1 0 0 0 3 0 4 1 0 1 1 0 0 1 0 0 1 0 0 0 0 2 0 2 0 1 0 0 2 1 1 1 0 2 0 0 0 0 1 1 0 0 0 1 1 0 0 0 2 1 1 1 0 0 1 0 2 1 1 2 0 1 1 1 2 0 0 0 1 1 0 1 0 0 1 0 1 0 3 3 0 0 1 1 0 0 0 0 1 2 2 0 1 0 1 2 2 1 1 1 2 1 1 1 1 0 2 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 2 0 1 0 0 0 0 0 1 2 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 +0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 0 1 0 0 2 0 1 1 0 1 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 2 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 2 0 2 0 0 1 1 3 1 1 2 1 1 1 0 2 1 0 0 1 0 1 1 0 1 1 0 1 2 3 1 0 0 0 0 2 2 3 0 2 1 1 2 1 1 2 2 2 0 2 1 1 0 3 2 1 0 1 0 1 1 1 2 0 0 0 1 0 1 2 0 0 0 0 0 1 0 0 0 2 1 0 0 0 1 0 1 0 0 0 0 0 2 3 2 0 0 0 1 1 0 0 2 1 0 0 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 0 1 2 0 1 0 0 0 2 0 1 1 0 0 1 0 0 2 1 0 1 0 0 0 0 0 0 0 0 0 1 2 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 2 0 0 0 0 1 0 0 0 0 1 1 0 2 0 1 0 0 0 0 1 1 0 0 1 0 0 +2 0 1 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 2 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 1 0 1 1 0 0 2 0 1 1 1 1 1 1 3 1 0 1 0 0 0 0 0 1 1 0 2 0 2 1 1 0 0 1 1 0 0 0 0 3 0 1 0 0 0 0 2 1 1 0 0 1 0 1 1 1 1 0 0 3 1 1 0 1 0 0 2 2 2 0 2 0 0 1 0 1 0 0 2 0 0 1 0 0 0 0 3 1 0 0 0 0 0 1 0 0 1 2 4 1 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 1 1 0 1 2 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 2 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 2 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 +0 1 1 0 0 0 1 1 0 0 1 1 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 2 1 0 0 2 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 2 1 1 2 0 0 1 0 0 0 2 0 0 1 1 2 0 0 0 1 3 1 0 1 1 2 1 2 1 1 0 3 1 0 1 2 0 2 1 0 0 1 2 2 1 0 0 1 0 0 1 1 2 2 0 0 1 1 1 1 0 0 2 2 0 0 0 1 2 1 1 0 1 1 3 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 0 3 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 2 3 1 1 0 0 1 1 2 1 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 2 0 1 0 0 0 0 0 0 0 1 1 2 1 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 2 2 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 2 0 1 0 0 0 0 0 +1 1 0 0 0 1 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 3 0 0 0 1 0 1 1 0 0 1 2 1 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 0 2 0 0 0 2 1 3 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 3 1 1 2 1 0 1 1 0 0 1 1 0 1 2 0 1 1 0 1 1 0 0 2 1 0 1 1 0 0 0 0 2 1 0 1 0 0 0 1 1 1 3 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 2 0 2 1 1 0 3 0 0 1 0 0 0 0 0 1 1 1 2 1 1 0 2 0 2 2 0 0 1 1 1 1 0 2 0 1 1 0 0 0 0 0 0 1 1 1 2 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 2 0 1 0 2 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 2 1 0 2 0 0 0 1 1 0 +1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 2 1 1 0 1 1 2 0 0 1 0 0 2 1 1 1 1 1 0 0 0 0 2 0 0 0 1 1 0 3 0 0 1 2 3 0 0 2 0 0 2 1 1 0 2 0 1 0 0 3 0 0 0 4 1 1 0 1 0 0 1 2 0 2 0 1 1 1 1 1 1 0 1 2 2 0 2 1 0 0 2 0 0 0 1 0 1 1 1 2 2 1 1 2 2 1 0 1 1 2 1 0 0 2 0 1 1 1 1 2 2 1 0 1 0 0 1 2 0 0 0 0 2 0 1 0 0 0 0 3 1 1 0 1 3 0 0 0 1 1 1 0 2 2 2 1 2 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 2 0 0 1 2 1 0 0 0 1 1 0 0 3 0 0 0 1 0 0 0 1 0 1 2 1 1 0 0 2 0 0 1 0 1 2 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 2 0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 +0 0 2 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 2 0 1 1 0 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 3 0 1 1 1 0 0 1 0 0 2 1 0 3 3 0 0 0 0 3 1 1 1 0 0 0 3 0 0 2 0 2 1 0 0 2 2 0 0 1 3 0 0 1 1 0 1 0 1 0 1 1 0 1 2 1 1 1 0 0 1 1 0 0 1 3 1 0 0 2 3 0 0 0 0 0 0 0 1 1 1 2 2 0 1 1 0 1 1 1 3 0 0 0 0 0 1 1 0 3 1 0 0 1 0 2 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 1 2 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 1 0 0 1 1 2 +0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 3 1 1 0 0 0 1 0 1 1 0 0 2 0 2 1 0 0 0 1 0 1 0 1 0 0 1 3 0 0 1 1 0 1 0 0 2 0 1 0 0 0 1 0 2 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 2 2 0 0 0 0 1 4 1 0 0 1 2 0 0 0 1 0 2 0 1 1 1 0 0 0 0 0 0 0 2 2 0 0 3 0 0 2 1 4 0 1 0 2 0 0 1 1 1 0 0 1 2 1 1 1 1 0 1 0 1 2 0 1 1 0 0 1 0 1 0 0 0 1 0 2 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 2 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 2 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 +0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 2 1 0 1 2 1 1 1 0 0 0 0 2 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 2 3 0 2 1 0 2 2 2 1 0 0 1 1 0 2 0 0 1 0 0 0 1 2 1 0 1 1 0 2 1 1 1 1 0 2 0 1 1 0 1 1 3 2 1 2 1 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 2 0 1 0 1 0 0 1 0 0 3 0 1 1 1 0 1 0 2 0 2 0 0 0 1 1 0 1 2 0 0 2 0 1 1 1 0 2 0 0 0 1 0 0 1 0 1 0 2 1 2 0 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 2 0 0 1 1 0 0 2 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 1 2 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 2 1 0 0 0 2 0 0 +1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 1 1 2 0 2 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 2 1 2 1 0 0 0 0 1 2 0 0 0 1 2 0 2 0 0 0 0 3 1 0 1 2 2 0 0 0 0 2 1 0 0 0 0 1 0 0 0 0 1 0 3 0 1 2 0 2 0 1 0 1 0 0 1 0 1 1 0 0 0 2 2 1 0 0 0 0 0 0 2 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 2 0 0 1 0 0 2 3 0 0 0 1 0 1 1 0 0 1 1 1 0 0 0 0 2 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 2 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 3 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 0 0 0 2 0 1 1 0 2 0 0 0 1 0 0 0 1 0 3 1 2 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 2 1 1 0 0 1 0 0 2 1 0 1 0 1 0 2 2 0 0 2 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 2 1 0 2 1 0 0 0 2 1 0 1 2 0 1 0 1 2 1 0 0 0 0 0 0 1 1 0 1 2 0 0 1 2 0 1 0 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 0 0 2 2 0 0 0 1 0 0 0 3 0 0 0 1 1 1 0 0 1 2 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 3 0 0 1 2 0 1 1 0 1 0 1 2 1 1 0 0 2 1 1 1 1 0 0 1 0 2 0 0 0 2 0 1 1 0 0 0 0 1 0 2 1 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 +0 0 0 0 1 0 0 2 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 2 1 0 0 1 1 0 1 0 1 0 0 3 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 2 0 0 2 1 0 0 0 0 1 1 0 1 1 4 1 0 0 0 2 1 1 0 0 1 0 2 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 2 2 0 1 2 1 0 1 1 0 0 1 1 0 2 0 1 0 1 2 0 0 1 0 1 1 0 0 1 0 0 1 2 0 0 0 2 0 0 0 1 0 0 0 0 1 1 0 2 0 0 1 1 1 0 2 1 3 0 0 1 0 0 0 0 0 2 2 2 1 0 2 2 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 4 0 0 0 0 0 0 2 1 0 1 0 1 0 0 0 0 0 0 2 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 +0 0 0 0 0 0 1 0 2 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 1 1 0 2 0 0 1 3 0 1 0 0 2 0 0 1 1 1 2 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 4 1 2 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 2 1 0 0 0 1 0 0 1 3 0 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 2 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 3 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 2 0 0 0 0 2 0 1 0 0 1 1 0 0 0 1 0 0 2 0 1 0 0 0 1 2 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 2 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 2 0 0 1 0 0 2 1 0 0 0 2 0 0 0 1 0 +0 0 1 0 1 1 0 0 0 0 2 0 0 0 2 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 2 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 2 2 1 1 0 0 1 0 2 2 1 2 0 0 0 1 3 0 1 2 1 2 0 1 0 1 0 0 0 1 2 0 0 0 0 0 4 1 2 2 0 0 1 0 2 0 0 1 0 2 0 1 1 1 1 1 1 1 0 0 0 0 1 1 2 0 1 2 0 1 0 0 0 1 1 2 1 2 1 1 0 1 2 0 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 2 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 2 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 +0 0 0 1 0 0 0 0 0 0 1 0 0 2 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 3 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 2 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 2 0 0 0 1 0 1 1 2 2 0 0 0 1 0 1 0 1 1 0 1 3 1 1 3 1 1 0 0 0 0 0 0 2 1 0 2 0 1 1 0 0 0 2 0 0 0 0 1 2 1 0 0 2 1 1 1 1 0 1 1 0 1 0 0 1 2 0 0 1 2 0 0 2 0 0 1 0 2 0 0 0 1 1 1 1 2 0 1 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1 2 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 3 0 1 2 0 0 0 1 1 0 0 1 2 2 2 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 2 0 2 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 2 0 2 1 0 3 0 1 0 0 0 3 2 0 0 0 1 0 1 3 2 0 1 1 0 0 0 0 0 1 0 1 1 0 1 2 1 2 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 2 0 3 0 0 0 1 0 0 0 3 0 2 0 0 0 2 0 1 1 1 3 2 1 0 1 0 0 0 0 0 1 0 0 1 1 0 3 1 0 0 1 2 0 1 1 1 2 2 0 2 2 0 0 0 1 0 1 0 0 0 1 1 1 0 0 2 1 3 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 2 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 0 2 0 0 1 0 0 1 1 0 1 1 1 1 2 0 1 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 +0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 2 0 2 0 0 0 0 1 1 0 0 0 1 0 0 0 0 2 0 1 0 1 0 1 0 0 0 0 0 1 2 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 2 1 4 0 1 0 2 0 0 0 2 1 1 0 0 2 0 1 0 2 0 1 1 1 1 2 1 2 0 1 0 0 2 1 0 0 0 1 1 0 0 2 1 1 0 2 2 0 1 0 1 0 1 1 0 1 1 0 3 0 1 1 1 1 2 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 2 1 2 0 0 0 3 0 0 0 0 1 0 0 2 2 1 2 0 0 2 1 1 2 0 2 1 0 0 0 1 4 0 0 0 0 0 0 0 2 1 0 0 1 0 0 1 2 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 3 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 +0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 2 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 2 0 2 0 0 0 1 2 0 0 0 0 0 2 0 1 0 0 2 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 2 2 2 2 0 0 3 1 0 1 1 1 0 0 1 1 0 1 0 0 0 1 0 2 0 0 2 1 2 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 2 1 0 0 0 1 2 0 0 2 0 0 0 0 1 2 0 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 3 0 1 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 2 +0 0 0 1 0 0 0 2 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 3 2 1 0 0 0 0 1 1 0 2 0 0 1 0 0 0 0 1 0 0 1 0 0 0 2 1 1 2 1 2 3 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 3 3 0 1 1 3 0 1 1 0 1 1 0 1 0 0 0 0 0 2 1 1 0 0 0 3 0 1 2 2 0 1 3 0 2 1 0 1 2 0 1 0 2 0 0 1 3 1 2 0 1 2 0 1 1 0 1 0 0 1 0 1 0 1 2 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 2 0 1 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 2 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 +0 0 0 0 0 0 0 0 0 2 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 2 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 2 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 1 2 0 1 0 0 0 1 0 1 2 2 1 0 0 0 0 0 0 1 2 1 0 2 1 0 2 0 1 0 1 1 2 1 2 1 0 1 2 1 0 0 0 0 1 1 0 1 0 1 0 0 2 1 2 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 2 2 1 1 1 2 0 3 0 1 1 2 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 2 3 2 1 0 0 0 1 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 2 0 0 1 1 2 0 2 1 0 1 0 0 0 0 1 1 0 1 2 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 1 1 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 +0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 2 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1 1 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 2 0 2 0 2 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 2 1 0 0 1 0 1 3 1 1 1 0 1 0 0 1 1 0 2 0 0 0 1 1 0 0 2 0 0 0 1 2 0 1 0 1 0 3 0 0 0 1 0 0 1 0 1 0 1 0 1 2 1 0 0 0 1 3 1 0 0 1 0 0 1 1 0 1 0 2 1 1 0 0 0 1 0 0 2 0 0 2 0 1 1 2 1 1 0 0 0 1 1 1 0 1 2 1 1 0 2 1 1 0 2 2 1 0 0 1 0 1 1 0 2 0 1 1 0 0 2 0 0 0 0 2 0 1 1 1 0 0 0 0 0 2 1 1 0 0 0 2 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 2 +0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 2 0 1 0 1 0 2 1 1 1 1 2 0 0 3 1 1 0 0 1 1 0 0 0 2 2 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 3 2 1 0 0 2 1 0 0 0 0 1 3 2 1 0 2 0 0 1 0 2 1 1 0 0 1 1 0 1 0 0 0 2 0 0 0 0 1 1 0 1 0 2 0 0 0 1 1 1 0 1 0 0 0 0 2 0 2 0 1 0 0 0 1 0 0 0 1 0 2 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 2 0 2 0 1 0 0 2 0 2 2 0 0 0 1 0 1 2 2 1 1 1 0 1 0 1 2 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 3 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 2 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 1 1 1 0 1 0 2 0 0 0 1 0 0 +2 0 0 0 1 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 1 2 0 0 0 0 0 1 0 0 1 0 0 2 0 1 3 0 1 1 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 3 2 0 0 0 1 0 0 0 1 0 0 1 0 1 2 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 2 0 0 0 0 1 1 0 3 1 0 2 1 1 0 0 0 1 0 1 0 2 1 2 1 1 2 0 0 0 0 1 1 1 2 1 0 0 0 0 0 0 2 3 0 0 1 0 0 3 0 1 0 2 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1 2 0 0 0 2 1 0 1 3 0 0 1 0 0 0 0 2 0 1 0 1 2 1 1 0 0 0 0 2 1 0 0 0 0 0 2 1 0 0 0 0 0 3 0 0 0 3 1 0 1 0 1 0 0 0 0 0 2 1 0 1 0 0 0 0 2 0 0 0 2 2 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 +2 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 2 0 0 0 0 3 0 0 0 2 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 2 1 1 1 0 0 1 0 2 2 0 0 0 0 0 0 1 1 1 0 1 1 0 1 2 0 1 2 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 2 0 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 2 3 0 0 2 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 2 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 1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 2 0 0 1 0 0 0 0 0 1 2 0 1 0 0 0 0 0 0 0 0 1 1 2 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 1 2 0 0 0 1 0 3 0 1 3 1 0 2 1 0 2 0 2 2 1 1 0 2 1 0 0 1 1 1 3 2 1 0 1 0 0 2 0 1 0 1 0 0 1 0 1 0 2 0 0 0 0 0 0 0 1 0 1 2 0 1 0 0 0 1 2 1 0 0 0 1 2 0 0 2 0 1 0 1 0 0 0 1 0 0 2 3 0 0 0 0 0 0 1 0 0 0 1 0 0 2 0 0 1 1 0 0 0 0 0 0 1 1 2 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 2 0 0 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 2 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 1 0 1 0 +1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 3 1 0 1 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 3 0 0 0 0 0 1 1 1 2 0 1 2 2 0 0 0 1 0 2 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 4 0 1 0 3 0 2 0 1 1 0 2 2 2 2 1 0 1 1 1 2 0 3 1 1 2 0 0 0 0 2 1 0 2 1 1 0 2 0 0 1 1 1 0 1 0 1 1 0 0 0 0 2 2 0 0 1 0 1 1 2 0 0 1 0 0 1 0 0 1 1 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 3 0 1 1 0 0 0 0 +0 0 0 0 1 0 0 0 2 1 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 2 1 0 0 2 1 0 0 0 0 1 2 2 1 0 0 0 0 0 1 0 0 0 2 0 0 1 1 1 1 0 1 0 1 1 0 0 0 2 0 1 2 0 0 0 0 0 0 0 0 0 0 2 0 1 0 2 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 2 0 1 2 1 4 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 3 0 0 2 1 1 0 2 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 2 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 2 0 0 0 1 0 0 1 0 1 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 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 2 0 +0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 2 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 2 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 1 2 0 0 2 0 1 0 1 0 0 0 0 0 0 0 0 1 3 1 0 1 0 0 2 1 1 1 1 0 3 1 1 1 0 0 0 3 1 1 0 0 1 0 2 1 1 0 0 1 2 4 0 1 0 1 0 1 2 0 2 2 0 0 0 0 0 1 1 1 0 0 0 0 2 0 1 1 1 0 0 0 0 1 1 1 2 0 0 1 0 1 2 0 0 2 0 1 2 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 2 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 2 1 0 1 2 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 2 1 0 0 1 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 2 0 0 0 1 0 0 0 0 0 1 1 +0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 2 0 0 0 0 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 2 0 1 0 1 0 0 0 0 1 1 2 0 1 0 2 0 1 0 2 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 2 1 0 0 5 1 2 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 2 0 0 0 1 1 2 0 2 0 4 2 0 1 0 1 0 0 0 1 1 0 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 2 0 0 0 1 1 0 0 0 1 0 1 2 0 0 2 1 0 1 0 1 0 0 1 0 0 1 0 2 0 2 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 2 0 0 1 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 +0 0 1 0 0 1 0 0 1 1 0 0 1 0 2 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 3 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 2 0 1 1 0 0 0 1 1 0 0 0 1 2 1 1 0 1 1 0 1 0 0 0 0 0 3 1 2 1 1 1 3 2 0 1 0 0 0 1 0 1 1 0 0 0 0 0 3 1 0 0 2 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 2 0 1 1 0 0 1 1 0 1 3 0 0 2 0 0 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 1 4 0 0 0 1 0 0 0 2 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 +0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 2 0 1 1 0 0 0 0 0 0 1 0 0 1 3 1 0 0 1 0 0 0 1 0 2 2 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 2 0 0 0 1 0 0 0 2 0 1 0 1 1 0 0 2 0 2 0 1 0 0 1 0 1 2 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 2 1 1 1 0 1 1 0 0 0 1 1 1 2 0 2 1 1 0 1 3 0 0 0 0 0 1 0 0 2 1 1 1 2 0 0 2 0 2 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 2 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 2 0 0 1 0 0 1 0 0 0 1 1 1 2 0 1 1 0 1 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 +0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 2 0 0 0 0 0 0 1 0 2 1 0 1 0 0 1 0 0 1 1 2 0 0 0 0 0 0 2 0 0 1 1 0 2 0 1 2 1 2 0 1 0 0 1 1 0 3 2 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 1 0 1 2 0 0 0 0 1 1 2 1 1 0 1 0 0 1 1 0 0 2 0 1 0 0 1 0 0 1 2 0 0 1 1 2 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 2 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 3 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 2 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 2 +0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 2 1 0 1 1 0 1 1 0 0 2 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 2 1 0 0 1 2 1 1 1 0 0 1 1 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 0 1 0 2 1 1 0 1 0 1 0 1 0 1 0 2 1 1 1 0 1 2 0 3 2 0 0 2 0 1 0 0 2 0 1 0 0 0 0 3 0 0 0 1 2 0 1 0 1 0 1 0 0 0 0 0 1 1 0 2 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 2 1 1 1 0 0 1 1 0 1 0 0 0 1 1 0 3 1 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 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 +1 0 0 1 0 1 0 0 0 2 0 0 0 1 0 0 1 1 1 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 3 0 1 0 0 0 0 2 1 1 0 1 1 1 1 1 2 1 1 2 1 0 3 0 1 1 1 1 0 0 1 1 1 0 1 2 0 1 2 0 1 0 0 0 0 1 1 1 1 2 0 2 0 1 0 0 1 0 1 3 0 1 2 0 2 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 2 0 1 1 1 0 0 1 1 0 1 0 1 0 2 0 1 1 1 2 0 0 0 0 1 1 0 2 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0 2 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 1 1 0 2 0 0 0 0 1 0 0 0 1 1 0 2 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 +0 0 1 0 0 0 0 1 2 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 1 1 1 3 0 0 0 0 0 1 0 0 2 1 0 1 0 1 3 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 1 0 1 0 2 2 0 0 0 1 1 1 1 0 0 2 1 0 0 2 0 0 0 2 3 0 1 1 0 0 1 1 0 0 2 0 2 0 0 0 2 0 2 1 0 0 0 1 3 0 0 0 0 0 1 0 1 0 0 1 0 1 0 2 0 1 0 1 1 0 0 1 2 0 0 3 1 0 1 2 1 1 1 1 3 0 0 0 0 0 1 0 2 0 1 0 1 1 1 1 0 1 0 0 0 0 1 2 0 0 0 2 0 0 1 0 0 1 0 1 0 0 0 2 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 2 1 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 0 2 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 2 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 2 1 1 0 3 0 1 0 2 1 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 2 1 0 0 0 0 4 0 1 2 2 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 2 1 0 1 0 1 1 0 0 0 0 1 2 0 0 0 1 1 0 2 0 0 3 2 1 0 0 1 0 2 1 1 0 2 0 0 3 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 2 2 2 0 0 1 0 1 1 0 2 0 1 0 0 0 0 1 0 1 1 1 1 0 1 1 2 0 0 1 1 2 0 1 1 0 0 1 0 0 0 1 0 0 0 2 0 1 0 0 1 0 0 0 0 1 0 1 0 2 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 2 0 1 0 0 2 1 0 0 0 0 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 +0 0 0 1 0 0 0 0 0 2 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 2 0 0 3 1 0 1 3 0 1 0 1 1 1 2 1 0 1 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 2 0 1 3 0 1 1 1 1 0 0 0 0 2 1 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 0 0 0 2 0 1 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 4 1 1 1 0 0 2 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 0 1 0 1 1 0 1 0 1 0 +0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 2 0 0 2 0 0 1 1 0 0 0 0 1 1 1 1 1 0 2 0 2 1 1 0 0 1 1 0 1 0 0 2 0 0 0 0 1 1 2 2 0 1 2 0 1 1 0 1 2 1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 2 0 1 1 0 0 0 2 0 0 0 0 0 0 1 1 2 0 0 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 2 0 0 0 1 0 0 1 0 0 0 0 1 0 2 1 0 1 1 2 1 3 1 0 0 0 0 0 2 0 0 0 1 2 1 0 0 0 1 1 1 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 2 0 1 0 0 0 0 1 0 0 0 1 0 0 2 0 +1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 3 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 3 0 0 1 0 0 1 0 0 1 0 0 1 2 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 1 2 1 0 2 1 1 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 2 1 0 1 1 0 0 1 1 1 0 0 1 1 0 1 0 1 1 0 0 0 2 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 1 2 0 3 0 0 1 0 1 0 1 1 0 0 0 0 2 0 0 1 0 0 1 0 1 0 1 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 2 0 0 1 0 0 1 0 1 0 0 0 +0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 2 0 1 0 0 2 1 0 0 1 0 0 0 1 0 0 0 0 1 0 2 0 2 0 1 2 1 0 0 0 0 1 1 0 4 1 0 0 1 0 0 1 0 0 2 0 0 0 0 0 1 1 1 0 1 1 0 2 3 0 0 0 2 0 1 2 0 0 0 2 3 0 1 0 0 0 0 0 0 0 2 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1 3 0 2 0 2 0 0 1 0 0 0 1 0 0 0 1 0 0 2 0 0 0 0 0 1 2 1 0 1 1 0 2 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 2 1 0 2 2 2 0 0 2 2 1 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 1 0 1 1 1 2 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 3 0 0 0 +0 0 1 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 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 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 2 1 2 1 0 0 0 0 0 0 0 2 0 0 1 0 1 1 2 2 3 0 0 0 0 1 2 1 2 0 1 1 1 1 0 1 1 0 0 0 1 2 1 0 0 0 2 0 1 2 1 0 1 0 2 0 1 0 0 1 0 1 1 0 0 4 0 1 0 2 0 1 1 2 0 0 0 1 0 2 1 0 0 2 0 2 0 0 2 1 0 0 1 1 2 0 1 0 3 0 0 1 2 0 1 3 0 0 0 0 2 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 2 2 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 3 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 2 +0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 2 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 2 2 0 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 1 1 0 2 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 3 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 2 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 2 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 +1 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 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 1 1 0 0 0 0 0 0 2 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 2 0 0 0 0 0 3 0 0 0 0 2 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 3 1 0 1 1 1 2 2 2 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 2 0 0 1 1 0 0 2 1 0 0 0 0 0 1 2 0 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 2 3 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 0 1 0 2 0 0 1 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 2 3 1 1 0 0 0 1 0 +0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 2 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 2 2 1 1 0 0 1 1 0 2 0 0 0 0 0 1 2 0 3 0 0 0 0 0 0 0 0 1 0 1 0 0 5 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 2 3 0 0 0 2 0 0 1 2 0 0 2 1 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 0 1 2 1 1 0 1 1 1 0 0 0 0 0 1 1 1 2 0 0 0 0 1 0 0 0 0 0 2 0 0 1 0 0 1 0 1 0 1 0 0 0 1 3 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 2 0 2 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 +0 0 0 0 0 0 0 0 0 0 0 3 0 2 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 3 0 2 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 2 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 2 1 0 2 2 2 0 1 0 2 0 0 1 0 0 0 0 1 0 1 0 2 0 1 1 0 1 0 0 0 0 1 1 1 2 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 2 0 0 2 1 0 0 0 0 1 0 0 0 0 0 2 0 2 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 2 1 1 3 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 2 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 +0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 2 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 2 3 0 0 0 0 0 0 0 0 0 1 4 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 2 2 0 0 2 0 0 0 1 3 1 0 1 0 1 1 0 1 0 1 1 1 1 0 2 1 0 1 1 1 0 0 0 1 0 1 0 0 2 3 0 2 0 0 1 1 1 2 0 0 1 0 0 2 0 1 0 0 0 2 0 1 0 0 2 4 0 0 3 0 0 0 2 2 1 0 0 3 0 0 1 1 0 0 1 0 0 1 0 0 0 0 2 1 0 0 0 0 2 0 1 2 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 2 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 +0 0 0 0 0 1 1 0 0 0 0 2 0 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 2 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 2 0 0 0 0 1 0 1 1 1 0 0 2 0 0 0 1 0 1 0 2 1 0 1 1 2 1 2 1 4 1 1 0 0 0 2 1 1 0 0 0 0 3 0 2 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 2 0 2 2 0 0 0 0 0 2 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 2 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 2 1 1 1 0 0 1 1 0 0 2 0 1 1 2 0 1 0 0 0 1 1 0 0 2 1 0 0 0 1 0 0 0 1 1 0 2 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 2 1 0 1 0 1 1 0 1 0 0 2 0 0 2 0 1 0 0 1 2 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 2 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 3 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 +0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 3 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 0 2 0 2 0 2 2 0 0 2 2 1 0 0 1 0 2 2 0 0 2 0 1 1 1 0 0 0 1 2 0 0 3 1 2 1 1 0 0 0 0 0 0 2 1 1 1 1 0 1 1 2 1 1 1 0 1 1 1 0 0 0 1 2 0 1 0 1 2 0 0 2 0 0 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 3 0 0 1 1 2 0 1 0 1 0 2 0 4 1 0 4 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 2 0 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 +0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 1 0 1 1 2 0 0 1 1 1 2 1 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 2 1 2 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 2 1 1 1 1 1 0 0 2 1 0 0 1 4 2 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 1 1 0 1 0 0 4 1 0 0 0 1 0 0 1 0 0 3 0 0 0 1 0 0 2 0 0 0 0 0 0 1 2 0 0 0 1 0 1 2 1 0 0 0 0 1 1 0 1 1 0 0 2 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 2 0 0 0 0 1 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 2 0 0 0 0 0 0 1 1 +0 0 2 1 0 0 0 0 0 0 2 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 2 0 0 1 1 1 0 0 0 1 1 1 1 1 2 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 3 1 0 0 0 2 3 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 2 1 2 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 1 0 0 3 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 2 2 0 0 0 0 1 0 0 0 2 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 2 0 1 1 0 0 1 0 4 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 0 0 2 1 0 1 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 2 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 +1 0 0 1 0 1 0 0 0 1 0 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 2 0 2 0 1 0 0 0 1 0 0 0 0 2 2 0 2 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 2 0 0 1 0 2 0 0 1 0 1 0 1 0 2 2 2 0 2 0 0 1 1 0 0 1 1 2 0 0 1 2 0 1 1 2 0 0 0 0 1 0 1 0 3 1 1 2 0 0 0 1 0 0 2 0 0 1 0 0 1 0 0 1 2 0 0 0 0 0 2 0 0 1 0 0 0 0 0 2 2 0 1 0 0 1 0 2 2 1 1 0 2 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 2 0 0 1 1 1 0 0 0 0 0 2 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 +0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 2 1 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 2 1 0 0 0 1 3 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 2 0 1 1 2 0 1 1 2 1 2 0 0 3 1 1 1 0 0 1 1 1 0 2 0 1 1 0 1 2 0 1 0 0 0 3 0 2 0 0 0 3 0 2 0 1 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 1 0 1 1 0 4 0 0 4 0 0 1 0 0 1 2 2 1 0 0 0 0 0 0 0 2 1 0 0 1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 4 1 0 0 0 0 2 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 +0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 1 1 0 0 2 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 2 3 1 1 0 0 1 0 0 2 0 0 0 0 1 0 2 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 2 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 1 1 1 0 1 1 0 0 0 2 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 2 1 1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 2 0 0 0 4 0 0 1 0 1 0 1 0 0 0 0 0 2 0 0 0 1 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 +0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 2 0 0 0 0 1 0 1 1 0 2 0 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 2 0 0 1 2 0 2 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 3 1 0 0 2 1 2 0 0 0 0 1 2 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 3 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 2 0 0 0 0 1 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 1 2 0 0 0 0 1 0 0 0 0 2 0 0 0 1 0 2 1 1 0 2 1 0 1 0 0 0 2 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 2 2 0 0 0 0 1 0 1 +0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 1 0 1 0 0 1 0 1 0 2 0 1 0 1 1 2 1 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 2 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 2 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 2 0 1 0 0 0 2 0 0 2 0 0 1 0 2 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 2 2 1 1 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 3 0 1 0 2 1 1 2 0 1 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 +0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 2 1 0 2 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 2 1 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 3 1 1 1 1 0 0 1 0 3 0 0 0 0 1 0 0 0 0 1 0 2 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 2 0 0 1 0 2 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 2 1 1 0 0 0 0 2 0 0 2 0 0 0 +0 0 0 1 0 0 2 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 2 0 0 1 1 3 2 0 0 0 1 0 0 1 2 0 0 1 0 0 0 1 0 0 0 2 1 0 0 1 0 1 1 0 0 0 1 0 0 0 2 0 0 0 1 1 1 1 1 0 2 0 0 0 1 0 1 1 0 1 0 0 0 0 2 3 1 0 1 0 0 0 1 1 0 1 0 2 1 0 0 2 2 1 0 0 0 0 2 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 2 0 0 2 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 2 0 3 0 0 1 1 0 0 1 2 0 0 0 2 3 1 1 2 1 1 0 2 1 0 2 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 +0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 2 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 0 0 0 2 1 1 0 1 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 2 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 2 1 0 1 2 0 1 0 0 2 1 0 0 2 0 1 1 1 0 0 1 1 0 0 1 2 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 2 0 0 2 0 0 0 1 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 2 0 0 0 0 1 0 0 0 0 0 0 2 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 2 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 2 0 0 0 1 0 1 0 1 1 0 0 0 0 2 2 0 0 1 1 0 2 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 2 1 0 0 0 1 0 1 0 0 0 0 0 2 0 1 1 0 1 2 1 2 2 0 0 0 0 1 0 0 0 2 0 0 2 0 0 2 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 2 1 0 0 0 0 0 0 1 2 0 0 3 1 1 0 0 1 1 0 0 0 2 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 0 3 2 0 0 0 1 2 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 1 1 1 0 0 0 0 3 0 1 0 0 1 2 1 0 1 0 0 2 2 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 +1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 2 0 0 0 1 1 0 0 0 2 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 2 0 1 2 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 1 2 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 2 0 2 1 1 0 2 0 0 0 2 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 3 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 2 0 0 0 1 0 1 2 0 0 0 1 0 0 1 2 1 1 0 0 0 1 0 0 0 1 0 2 1 2 0 0 0 0 0 0 0 0 0 0 1 0 1 2 1 0 2 1 0 0 1 1 1 1 0 0 0 1 2 0 1 2 0 1 0 1 0 0 0 2 0 0 0 1 1 0 1 0 1 1 0 2 2 1 0 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 0 1 0 2 0 1 3 0 2 1 1 0 0 1 2 4 0 2 0 1 1 1 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 2 1 1 2 0 0 2 0 1 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 2 0 0 0 1 +0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 1 0 0 0 2 2 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 1 2 0 1 0 1 0 0 1 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1 2 0 1 0 0 1 0 0 2 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 1 1 0 1 2 1 0 0 0 0 0 0 0 0 1 0 1 1 0 2 1 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 3 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 2 0 0 0 0 0 0 0 +0 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 2 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 2 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 2 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 2 2 0 1 0 1 0 2 0 0 0 2 1 0 2 0 1 2 0 1 1 0 1 0 1 0 1 1 1 0 3 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 2 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 +1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 2 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 3 0 0 2 2 0 0 1 0 0 0 0 2 1 1 2 3 1 1 0 0 0 1 0 2 1 0 1 0 0 2 0 0 0 2 0 0 2 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 2 0 0 0 1 0 0 0 1 0 2 0 1 0 1 1 0 0 1 2 1 1 0 0 0 1 1 2 2 0 1 2 0 1 1 2 0 1 0 0 0 0 2 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 2 0 1 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 2 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 2 0 0 2 0 0 0 0 0 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 3 0 0 0 1 0 1 2 2 0 1 0 1 2 0 0 1 0 0 0 1 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 1 0 0 0 2 0 2 2 0 1 0 1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 2 0 0 1 0 1 0 1 1 1 0 1 3 1 0 0 0 0 2 1 0 1 2 0 0 2 0 0 0 0 1 0 1 0 0 0 1 0 2 3 1 0 1 1 0 1 0 1 2 0 1 0 2 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 2 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 3 0 0 1 0 1 1 0 2 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 2 0 2 1 0 0 3 1 1 0 1 2 2 0 2 0 2 0 0 3 0 1 0 0 1 0 0 2 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 2 0 0 1 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 2 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 2 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 2 0 1 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 +0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 3 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 2 0 0 1 0 0 1 1 0 0 2 0 0 0 0 1 1 0 1 1 1 0 0 1 2 0 0 0 0 0 0 0 0 1 2 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 3 0 0 0 1 1 2 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 1 0 0 0 0 0 3 0 1 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 2 0 0 1 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 +0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 2 0 0 0 0 0 0 1 2 2 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 2 0 0 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 2 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 2 1 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 0 1 2 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 2 1 2 0 1 1 0 0 0 1 1 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 2 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 1 0 0 0 1 0 1 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 2 1 0 2 0 0 0 0 0 0 0 1 0 0 1 2 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 2 0 2 0 0 1 2 0 0 3 0 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 3 2 1 0 0 0 0 0 0 0 1 0 0 0 1 3 1 0 0 0 1 0 0 0 0 0 1 0 1 1 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 +0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 2 0 0 2 1 0 1 1 0 1 0 1 0 0 0 2 0 0 2 0 1 0 0 0 0 0 0 3 0 1 2 1 1 0 0 0 0 2 1 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 0 1 2 0 1 1 0 0 0 0 0 1 2 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 1 1 0 2 0 0 0 2 1 0 0 1 0 0 0 0 0 0 0 0 0 2 1 0 1 2 0 0 0 0 0 2 0 0 0 1 0 1 2 0 0 0 0 1 1 0 1 2 1 0 0 1 0 1 1 0 0 2 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 2 1 0 1 0 0 1 0 0 0 2 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 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 1 0 0 0 1 1 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 2 1 1 0 1 0 0 1 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 2 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 2 0 0 1 1 0 1 0 0 0 1 0 1 0 2 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 2 1 1 0 1 0 1 2 1 0 1 0 0 0 1 0 0 1 0 2 1 0 0 1 0 0 0 2 1 1 1 0 1 1 0 2 0 1 0 0 0 0 1 2 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 2 1 1 0 2 2 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 0 1 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 +0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 2 0 0 0 1 0 0 0 1 0 0 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 3 2 0 1 0 0 0 1 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 2 1 1 0 0 1 1 0 0 3 0 0 1 0 0 0 0 1 1 1 3 1 0 1 0 1 1 1 0 0 0 0 0 0 2 1 0 1 0 1 0 0 1 0 2 2 1 0 2 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 2 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 +0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 2 0 0 0 0 1 0 0 0 0 1 2 0 1 0 1 1 2 1 0 2 0 0 2 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 1 0 0 1 0 0 2 1 0 1 0 0 1 1 2 3 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 3 0 0 0 0 0 0 0 0 0 0 2 0 1 0 1 1 0 0 1 1 2 2 2 4 0 0 0 2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 2 0 2 1 0 0 0 0 0 0 0 1 1 0 0 2 1 0 0 0 0 0 0 2 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 2 1 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 +0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 2 0 1 0 0 0 1 2 0 0 1 0 1 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 2 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 3 1 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 2 1 2 0 2 0 2 1 0 1 0 0 1 1 1 0 2 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 2 0 0 1 2 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 2 1 0 1 2 0 0 1 1 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 1 0 0 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/mccode.sim b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/mccode.sim new file mode 100644 index 0000000000..71f1fa14b7 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/mccode.sim @@ -0,0 +1,270 @@ +mcstas simulation description file for ODIN_MCPL_baseline. +Date: Sun Mar 1 17:38:02 2026 +Program: 3.99.99, git + +begin instrument: ODIN_MCPL_baseline + File: Filterscan/0/mccode + Source: ODIN_MCPL_TOF_train4.instr + Parameters: l_min(double) l_max(double) n_pulses(int) wfm_delta(double) bp_frequency(double) WFM1_phase_offset(double) jitter_wfmc_1(double) WFM2_phase_offset(double) jitter_wfmc_2(double) fo1_phase_offset(double) jitter_fo_chopper_1(double) bp1_phase_offset(double) jitter_bp1(double) fo2_phase_offset(double) jitter_fo_chopper_2(double) bp2_phase_offset(double) jitter_bp2(double) t0_phase_offset(double) jit_t0_sec(double) fo3_phase_offset(double) jitter_fo_chopper_3(double) fo4_phase_offset(double) jitter_fo_chopper_4(double) fo5_phase_offset(double) jitter_fo_chopper_5(double) choppers(int) target_tsplit(double) filter(int) repeat(int) v_smear(double) pos_smear(double) dir_smear(double) + Trace_enabled: yes + Default_main: yes + Embedded_runtime: yes +end instrument + +begin simulation: Filterscan/0 + Format: McCode with text headers + URL: http://www.mccode.org + Creator: 3.99.99, git + Instrument: ODIN_MCPL_TOF_train4.instr + Ncount: 1000000 + Trace: no + Gravitation: no + TOF_TRAIN: 100 + Seed: 1000 + Directory: Filterscan/0 + Nodes: 12 + Param: l_min=1 + Param: l_max=11 + Param: n_pulses=1 + Param: wfm_delta=0.3 + Param: bp_frequency=7 + Param: WFM1_phase_offset=0 + Param: jitter_wfmc_1=0 + Param: WFM2_phase_offset=0 + Param: jitter_wfmc_2=0 + Param: fo1_phase_offset=0 + Param: jitter_fo_chopper_1=0 + Param: bp1_phase_offset=0 + Param: jitter_bp1=0 + Param: fo2_phase_offset=0 + Param: jitter_fo_chopper_2=0 + Param: bp2_phase_offset=0 + Param: jitter_bp2=0 + Param: t0_phase_offset=0 + Param: jit_t0_sec=0 + Param: fo3_phase_offset=0 + Param: jitter_fo_chopper_3=0 + Param: fo4_phase_offset=0 + Param: jitter_fo_chopper_4=0 + Param: fo5_phase_offset=0 + Param: jitter_fo_chopper_5=0 + Param: choppers=2 + Param: target_tsplit=3 + Param: filter=0 + Param: repeat=1 + Param: v_smear=0.1 + Param: pos_smear=0.01 + Param: dir_smear=0.01 +end simulation + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: Sphere1 + position: 0 0 0 + title: 4PI PSD monitor + Ncount: 153447624 + filename: nonrotated.dat + statistics: X0=-89.8519; dX=2.44464; Y0=2.20963; dY=32.5383; + signal: Min=0; Max=3.76408e+13; Mean=2.27916e+11; + values: 1.84612e+15 1.45689e+13 1.46251e+08 + xvar: Lo + yvar: La + xlabel: Longitude [deg] + ylabel: Latitude [deg] + zvar: I + zlabel: Signal per bin + xylimits: -180 180 -90 90 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: Sphere0 + position: 0.0585 0 -0.0925 + title: 4PI PSD monitor + Ncount: 153447624 + filename: rotated.dat + statistics: X0=54.6874; dX=33.703; Y0=1.17881; dY=1.83374; + signal: Min=0; Max=4.24593e+13; Mean=2.27916e+11; + values: 1.84612e+15 1.45689e+13 1.46251e+08 + xvar: Lo + yvar: La + xlabel: Longitude [deg] + ylabel: Latitude [deg] + zvar: I + zlabel: Signal per bin + xylimits: -180 180 -90 90 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: PSD_cut + position: 1.69078 0 -1.24822 + title: PSD monitor + Ncount: 153447624 + filename: PSD_cut.dat + statistics: X0=0.03847; dX=0.288102; Y0=0.00841529; dY=0.277816; + signal: Min=0.442238; Max=2.55939e+10; Mean=3.35587e+07; + values: 2.71826e+11 2.66571e+10 690731 + xvar: X + yvar: Y + xlabel: X position [cm] + ylabel: Y position [cm] + zvar: I + zlabel: Signal per bin + xylimits: -0.5 0.5 -0.5 0.5 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: PSD_Backtrace + position: 0.123791 0 -0.138729 + title: PSD monitor + Ncount: 153447624 + filename: PSD_Backtrace.dat + statistics: X0=-1.20769; dX=7.30221; Y0=-0.00204656; dY=1.77858; + signal: Min=0; Max=7.77503e+11; Mean=4.54119e+10; + values: 3.67836e+14 1.9659e+12 1.06228e+07 + xvar: X + yvar: Y + xlabel: X position [cm] + ylabel: Y position [cm] + zvar: I + zlabel: Signal per bin + xylimits: -15 15 -15 15 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_2d(300, 300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: sample_PSD + position: 49.4198 0 -35.0741 + title: Intensity Position Position Monitor (Square) per bin + Ncount: 153447624 + filename: image.dat + statistics: X0=-0.0038853; dX=0.0781448; Y0=-0.00105397; dY=0.077434; + signal: Min=0; Max=3.54871e+07; Mean=26770.3; + values: 2.40932e+09 8.17576e+07 44025 + xvar: x + yvar: y + xlabel: x [m] + ylabel: y [m] + zvar: I + zlabel: Signal per bin + xylimits: -0.15 0.15 -0.15 0.15 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: profile_x + position: 49.4198 0 -35.0741 + title: x [m] monitor + Ncount: 153447624 + filename: profile_x.dat + statistics: X0=-0.0038853; dX=0.0781448; + signal: Min=464149; Max=4.07967e+07; Mean=8.03108e+06; + values: 2.40932e+09 8.17576e+07 44025 + xvar: x + yvar: (I,I_err) + xlabel: x [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: x I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: profile_y + position: 49.4198 0 -35.0741 + title: y [m] monitor + Ncount: 153447624 + filename: profile_y.dat + statistics: X0=-0.00105397; dX=0.077434; + signal: Min=390839; Max=4.07404e+07; Mean=8.03108e+06; + values: 2.40932e+09 8.17576e+07 44025 + xvar: y + yvar: (I,I_err) + xlabel: y [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: y I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: wavelength + position: 49.4198 0 -35.0741 + title: Wavelength [Angs] monitor + Ncount: 153447624 + filename: wavelength.dat + statistics: X0=3.58133; dX=1.42582; + signal: Min=0; Max=5.79383e+07; Mean=8.03108e+06; + values: 2.40932e+09 8.17576e+07 44025 + xvar: L + yvar: (I,I_err) + xlabel: Wavelength [Angs] + ylabel: Intensity [n/s/bin] + xlimits: 0.5 10 + variables: L I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: tof + position: 49.4198 0 -35.0741 + title: TOF [s] monitor + Ncount: 153447624 + filename: time.dat + statistics: X0=0.0547023; dX=0.0217818; + signal: Min=0; Max=6.994e+07; Mean=8.03108e+06; + values: 2.40932e+09 8.17576e+07 44025 + xvar: t + yvar: (I,I_err) + xlabel: TOF [s] + ylabel: Intensity [n/s/bin] + xlimits: 0 0.15 + variables: t I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:51 2026 (1772383131) + type: array_2d(300, 300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: wavelength_tof + position: 49.4198 0 -35.0741 + title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin + Ncount: 153447624 + filename: wavelength_tof.dat + statistics: X0=0.0547023; dX=0.0217818; Y0=3.58133; dY=1.42582; + signal: Min=0; Max=5.3377e+07; Mean=26770.3; + values: 2.40932e+09 8.17576e+07 44025 + xvar: TO + yvar: Wa + xlabel: TOF [s] + ylabel: Wavelength [Angs] + zvar: I + zlabel: Signal per bin + xylimits: 0 0.15 0.5 10 + variables: I I_err N +end data diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/nonrotated.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/nonrotated.dat new file mode 100644 index 0000000000..b01f4b684d --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/nonrotated.dat @@ -0,0 +1,335 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: Sphere1 +# position: 0 0 0 +# title: 4PI PSD monitor +# Ncount: 153447624 +# filename: nonrotated.dat +# statistics: X0=-89.8519; dX=2.44464; Y0=2.20963; dY=32.5383; +# signal: Min=0; Max=3.76408e+13; Mean=2.27916e+11; +# values: 1.84612e+15 1.45689e+13 1.46251e+08 +# xvar: Lo +# yvar: La +# xlabel: Longitude [deg] +# ylabel: Latitude [deg] +# zvar: I +# zlabel: Signal per bin +# xylimits: -180 180 -90 90 +# variables: I I_err N +# Data [Sphere1/nonrotated.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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.543100202e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.516385e+11 5.753955746e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.10222151e+11 4.837917352e+10 0 6.923240054e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.458543191e+11 2.538267617e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.382078512e+11 1.073790775e+12 2.024652343e+12 7.133618367e+11 0 0 1.43229495e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.277432458e+12 8.94847283e+12 3.147664422e+12 0 0 1.028615069e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1.001773038e+11 0 0 0 6.073223484e+10 0 0 1.526242433e+11 3.053566177e+12 1.062032255e+13 5.768659135e+12 0 2.847984395e+11 0 1.045150187e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.248800653e+12 1.370643412e+13 3.640657491e+12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.803241801e+10 0 0 0 0 3.00860318e+12 1.305476992e+13 2.623020628e+12 1.04014118e+11 0 0 1.39746073e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.925155628e+10 2.632232859e+11 0 2.169370681e+12 1.529960758e+13 3.666586366e+12 0 0 6.348162854e+10 1.42524868e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.90358819e+11 2.419329479e+12 1.509716133e+13 2.729041078e+12 7.975865722e+10 6.483659899e+10 1.523347492e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.487116849e+11 1.109455903e+12 1.801805141e+13 3.802535348e+12 2.66285531e+11 2.229392617e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.743217516e+10 0 0 0 6.153594947e+10 1.596404521e+12 2.034714304e+13 3.93499166e+12 4.82741164e+10 0 0 0 0 1.484291182e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.964812052e+10 1.435935895e+11 1.162205661e+12 2.152117972e+13 3.997163754e+12 0 1.545240769e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.413781542e+11 7.8e+10 0 4.480088532e+11 2.09546825e+13 3.172576921e+12 7.269616592e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.064321845e+11 1.395145075e+11 0 4.563281107e+10 2.655667591e+13 3.264201598e+12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.934954953e+10 1.532595745e+11 0 4.529345012e+11 2.38772281e+13 1.411222325e+12 3.792216146e+11 6.086465693e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.494380522e+10 4.986074903e+11 2.687009798e+13 1.615134044e+12 4.899322557e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.43385958e+11 1.482957709e+11 3.917201807e+11 2.7796442e+13 1.914547911e+12 0 0 0 1.431972113e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.382936189e+11 0 0 0 0 8.470444536e+10 4.764220319e+11 2.855087479e+13 1.067408674e+12 9.944635785e+10 2.797996509e+11 0 1.549261086e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.713325787e+10 0 3.739421654e+11 3.302049387e+11 2.700190976e+13 1.453444873e+12 1.070715744e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.131954026e+10 0 0 4.529175782e+11 2.987464587e+13 4.502142159e+11 3.947473061e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.265230558e+11 3.280377316e+11 2.849799789e+13 1.380150969e+12 2.046818712e+11 5.719461751e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.384462788e+11 0 0 1.774271057e+11 4.50188864e+11 2.815900442e+13 1.249708177e+12 2.901631776e+11 0 0 0 7.980380058e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557647152e+11 0 1.364494915e+11 1.019576205e+12 3.04976694e+13 1.399948938e+12 1.304616866e+11 3.998422766e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.833924067e+10 0 0 1.527421088e+11 0 4.028188981e+11 2.995925072e+13 4.832864317e+11 1.676033653e+11 0 7.8e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557514558e+11 0 6.777205682e+10 1.782019397e+11 8.112942413e+11 3.123820894e+13 6.801382256e+11 1.2307268e+11 1.404408531e+11 1.428287745e+11 1.461928804e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.15998255e+10 0 2.460591831e+11 6.858649893e+11 3.498042592e+13 5.488485789e+11 1.967434731e+11 1.158049886e+11 4.38672173e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.457086051e+11 1.461288103e+11 4.52731979e+11 3.061855947e+13 8.666234894e+11 3.276992912e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.472027528e+11 4.29403882e+10 5.092686936e+11 3.322504945e+13 7.522799231e+11 1.540429351e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.47654047e+11 0 1.593694199e+11 3.669223999e+11 3.461777334e+13 7.540729097e+11 1.619094851e+11 5.824125087e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.72959646e+10 0 0 1.193474871e+12 3.572537711e+13 3.051623282e+11 3.005636001e+11 0 1.312492547e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.83046236e+10 3.470017669e+11 3.087744731e+13 5.249597418e+11 4.964626551e+10 5.866766274e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.854102972e+11 0 5.418588424e+11 3.421477113e+13 3.034492049e+11 1.523836491e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.028761518e+11 0 0 0 2.62982729e+11 3.529933175e+13 7.151245526e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.187885978e+11 0 0 0 0 0 4.831810677e+10 5.931533568e+11 3.764083728e+13 1.332665425e+12 3.109900067e+11 3.914021409e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.161402869e+10 0 0 0 1.303253499e+11 5.065664563e+11 3.668093661e+13 8.641043315e+11 1.262817829e+11 0 0 8.674122477e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.117554474e+11 0 0 1.513031373e+11 4.858000942e+11 3.371837384e+13 1.039764481e+12 0 6.09924624e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.57101985e+11 4.388896329e+11 3.228389857e+13 8.394438171e+11 4.134880328e+10 6.457540905e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.342543709e+11 3.883696504e+11 3.196201927e+13 7.797458303e+11 3.674802203e+11 1.555999303e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.034542818e+11 1.055247638e+12 3.40337169e+13 2.856114525e+11 2.885036266e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.479463956e+11 1.424865124e+11 1.565620372e+11 4.878196857e+11 3.155926864e+13 9.437229792e+11 5.239173067e+11 7.614395678e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.85158911e+11 7.51789032e+11 3.274532762e+13 7.785302929e+11 4.498675046e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.204297242e+11 0 1.320286217e+11 6.287532245e+11 3.6255351e+13 5.846126876e+11 2.839882858e+11 1.263564577e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.465406842e+11 0 2.794442643e+11 6.923558568e+11 3.450482291e+13 8.449710202e+11 2.298478982e+11 0 1.332456887e+11 1.369088287e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.815777577e+10 7.084589789e+11 3.133699015e+13 1.181167404e+12 1.415652344e+11 2.152130513e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34.44722766 1.022891859e+11 580.224748 1.242057792e+12 3.118887818e+13 3.516701585e+11 5.056574428e+10 118060.1146 7.695030294e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.415107804e-21 364.0609432 229723.8667 4097.27217 1.359930386e+11 6.091541515e+11 2.927479637e+13 1.067834516e+12 5761352.094 1.471752205e+11 1.509560492e+11 1.729725757e-08 1.038961222e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001654633941 890194.603 162375449.8 800310.5108 48398871.58 1.25370943e+11 6.126292063e+11 2.881635201e+13 3.60112469e+12 2.66200526e+11 1.361458207e+11 1.165109206e+11 14841.53935 3058.691317 0.004690665866 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.772133533e-07 47.10616367 7027195.203 3.243551953e+10 12722490.21 2.965890102e+11 4.228257521e+11 4.687318279e+11 3.18459521e+13 2.069935813e+12 4.969382846e+10 2.976362123e+11 289684989.6 50094.17414 49605714.43 1.529039276e+11 6.397501363e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1.596878895e-21 690977.0774 235037.9752 9809096.394 33153923.71 2.274588235e+11 125049866.2 3.993474824e+11 3.859384336e+11 3.112215179e+13 2.155758168e+12 3.045070637e+11 3.815401963e+11 10118346.85 15282536.11 4680165.143 238742343.7 158540.2937 5.188293821e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 11966.54846 861437.7638 17204581.92 28550389.69 396704479.6 108736781.6 2.082585591e+11 3.854625612e+11 1.094810014e+12 2.707174676e+13 1.434582256e+12 2.915244811e+11 1.949874421e+11 26241539.87 47742992.17 40073946.62 12083000.05 7677.025962 0.9044448993 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0.0127031147 2746435.647 51063366.22 585077580.8 118027410 1575642657 3012011761 60808273.58 1.279507436e+11 6.625971933e+11 2.725548812e+13 2.343595203e+12 5326025836 4449032947 1.301037722e+11 169350482.1 1.481342606e+11 389880.3598 115988.5049 0.3606618451 4.756569908e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 596108.5751 12779044.99 73841865.32 65836632.46 71969366.64 2.502181535e+10 2.235327048e+11 2162706462 2.847856133e+11 1.336881586e+12 2.74767074e+13 3.029900687e+12 3.107215812e+11 1.039957236e+10 1.577828181e+11 1.814883057e+10 225164210.2 1.512168229e+11 12858782.73 7808472.409 265734.4848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0.0156873753 898402.4035 4918364.108 3684735.247 38219688.98 131184283.9 240722810.7 1.25043973e+11 2.34678892e+11 4.484416436e+11 8.242915938e+11 2.846597778e+13 3.2333154e+12 9.907038043e+10 3256547277 1.10458419e+10 1.497110923e+11 304021031.1 7921522.495 33006788.17 8805517.964 13484039.07 19540.60604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 20397.89334 160013098 79963046.92 91871767.33 48267388.02 512031255.9 1.415368473e+11 571001586 430843982.1 3.561723371e+11 7.476207617e+11 2.329428734e+13 3.178838563e+12 2.540789491e+11 9.468177966e+10 615760133.6 158608194.8 1.711395808e+11 45012687.71 94998286.78 7559137.157 18733549.86 468422.9673 3.205689028e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 13670.73693 11860665.16 8087692.812 20107997.7 181577339.1 7.03605327e+10 117137927 405381133.5 8859072319 5.25659873e+10 1.713690533e+11 9.137323884e+11 2.531968633e+13 3.416599846e+12 8683810178 1.514760833e+11 1190249910 408976609.9 856441743.8 515930955.6 74577379.74 12267800.49 1065570.522 391567.7271 0.002410628547 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7.729921196e-27 20668.93843 4356722.197 12452849.06 22791276.75 67302017.64 84555179.41 1.501273099e+11 203652901.6 1.135073763e+10 1.161375034e+10 9.575109223e+10 1.188745117e+12 2.308793556e+13 3.389531985e+12 1.508177757e+11 2.074213999e+10 3714206355 1.551143326e+10 1.799379316e+11 209115501.8 269372107.7 304656996.5 11505123.49 43550960.1 380333.2609 0.0008200611922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.025883949 7509147.347 659961821.6 83953084.4 157658263.7 538802508.1 1.481375517e+11 863852418.6 1207537626 1.072376794e+11 1.008350307e+11 5.143216081e+11 1.896285003e+12 1.864426817e+13 4.754262812e+12 2.666801365e+11 1.332831283e+11 6387794269 437971753.4 7.46435208e+10 223696359.7 141947349.7 1.439025494e+11 7249613.05 959353166.5 1239668.036 0.8897611048 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.884535015e-12 70560025.5 2592766.553 12150525.82 118024147 200970048.5 108886337.5 1914743439 1.360556833e+11 700661416.1 1.369389395e+10 6.960903363e+10 1.962615712e+11 2.085648753e+12 1.841265341e+13 3.226725554e+12 2.304509883e+11 9.131450298e+10 1942337490 3.291428495e+10 1.545590499e+11 395063276.9 266102383.9 563652966.6 66612313.43 7544252.146 241971.4311 84413.46461 0.01222940645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0.001338896701 316802.7501 22407669.37 1985474.594 293224645.7 65102825.25 2518474908 1.435362354e+11 3523504891 1.418114023e+10 3161317715 1.752275524e+11 1.214348071e+11 3.265609708e+12 1.674186164e+13 4.822749356e+12 6.930152621e+11 1.981124647e+11 2.995138983e+11 1226292389 635650832.5 1266921615 241766140.4 197086630.5 107548691.6 138165855.1 87829510.2 55227770.62 32.30444424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.590092298e-05 201983.5968 16166.68633 48924063.76 14573635.4 1453804680 80280575.82 205828018.2 363303752.4 1.124673176e+10 1116765808 1.237826326e+11 1.088674366e+10 3.683900583e+11 2.558823425e+12 1.557478267e+13 4.981213056e+12 2.963948927e+11 2.010641045e+11 1.702270195e+10 7728495271 6985365973 5.961879664e+10 355173134.6 452701845.7 355696047 96402109.92 372056887 13513.42812 9590378.634 2.512336011e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1331.622483 17010514.52 5942505.712 244510987.9 26857731.81 24395683.17 3898952742 95895364.44 666707314.1 468213710.5 8.310638843e+10 1.560593771e+11 2.581137068e+10 2.624367968e+11 2.97626723e+12 1.476331326e+13 4.382222752e+12 1.754834925e+11 5.293132284e+10 7811369557 1491963691 6556663012 3769342311 1072128712 460754972.1 11294399.25 151668952.7 34939606.39 46310672.88 7123976.856 9.119963435 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.542467272e-14 204348.739 1625848.599 23350617.17 3582333.273 84915420.67 118382262.7 57352526.79 1004915670 1.166820096e+10 4335489598 2.631392085e+11 1.251784507e+10 5.576811169e+10 2.357043646e+11 2.824942349e+12 1.318482406e+13 4.245797997e+12 4.121499879e+11 1.769235792e+11 4195491251 4983410857 3280258954 6.633425458e+10 4486598019 332567738.2 250292243.8 86857965.58 60546478.94 14168338.77 35716515.66 5.671742511 5.941289722e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2.371049143 1845978.937 2220891.128 4485172.658 103790410.7 4420687495 40998381.88 125335957.9 490877971 2230843960 7.688242642e+10 1.573980436e+10 1.514393292e+10 5.03935955e+10 3.270364874e+11 3.236252128e+12 1.177349273e+13 4.810690354e+12 1.552644623e+11 2.394643126e+10 2.859255012e+10 4039298677 5556631875 2451478209 869602732.5 211232687.3 519811670.5 122802932.8 162860985.9 187353.0747 6770345.745 26929498.61 1.412770634e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 902949.4432 374999.1452 23498752.01 15779723.4 227630010.3 111239871.3 194583355.7 3983060900 172983511 2047928463 1.177496533e+11 2.601056728e+11 1.929909878e+10 1.964583605e+11 2.071735684e+11 2.221825355e+12 1.052755386e+13 4.882677989e+12 5.143038341e+11 3.506233399e+10 4152262986 8757644485 5442864287 1302190244 6275979255 2423340592 49342734.45 42181129.47 984637867.9 24650287.41 12858959.19 1152.425997 2833.879769 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0002790542419 3783.429219 339094.517 110993.0187 29291016.88 103914708.1 63612275.61 73508247.53 159452836.4 485950628.6 437595196.4 946116675.6 6842445811 1.065521612e+10 6653744887 1.189486357e+11 9.498731464e+11 2.575668153e+12 4.919423026e+11 1.822290468e+11 1.569110867e+10 8577556902 6961922615 8014205346 5.395492891e+10 7191436104 1413427226 272133479.9 219233727.7 103248890.2 14550008.96 9541211.879 20981.43685 854422.8157 4.218259954e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 7.721420006 6002.863747 16214301.81 611137.236 316445758.3 285643916.7 40211515.37 54621422.68 52897637.13 1998905057 188803420.5 3.236517733e+10 1.264702131e+10 3855922645 9239754982 2.141631851e+10 4.659531026e+10 2.417779252e+11 1.05012696e+11 1.424503918e+11 1.182114421e+10 1.582678349e+10 2.38956288e+10 2.303852893e+10 1800408248 3068309582 885037999.1 604962798 73745086.98 13853863.65 136564101.8 540917.7495 8358181.001 41.32709505 1.128818251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.2512177263 12998190.04 15622542.75 12626660.11 8434139.891 88727223.01 884243777.8 3213203.465 548523546.8 491419532.5 96713015.79 4660756897 7.842791333e+10 647457495.1 2904181554 5552437272 1.06779512e+10 2.98629066e+11 2.621301079e+10 2.635041733e+10 1.008232835e+11 7184496318 8.437026522e+10 1582790935 728902189.6 2762610972 135202178.2 384620787.2 2187858384 6331625927 161741.3991 2472379.725 10234955.97 5897492.22 126520.388 49755.49673 23.40118616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1219.642617 12167.00824 170673.5755 6438632.528 922937.9003 2465190.872 5268783.227 135691600.4 1.007704216e+10 509117990.4 8.031519272e+10 8283498264 3.179268035e+10 2021604023 1337108242 1.186319301e+10 4353250831 1.59466699e+11 8.701779338e+10 8695609941 2.321928072e+10 1947266451 3951280111 1.007267892e+11 1.157745852e+10 472557024.8 93618584.39 2363200817 425787307.5 151796656.5 159424518.8 46094.39021 71814607.55 126797.9812 927421641.7 190909.711 11.78236483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 54562.27229 16.43522347 11768.57405 7087156.329 435642.3939 457573199.5 8672167.76 7769678826 31749895.07 3757559.301 46677167.84 361912309.7 47506345.5 1.264333522e+10 1.26028036e+10 4120646321 8033314329 6.506388328e+10 1.393189926e+11 1864430395 4793784149 2297033521 1.423046323e+11 992341710.1 93570669.16 641000690.7 82315088.11 484170790.4 100598821.1 368151081.6 47711140.69 639174081.8 47883412.68 919932.6871 376455.7184 3683550.649 0.0002113393994 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.02866039082 156621.5956 7494773.32 1555065.326 5492466.133 236226316.2 34428866.63 88218173.48 26790238.2 9938749.204 39699287.29 1212818736 324613478.2 209525337.8 245755733.4 5492683239 8.011138342e+10 6368380139 1337924956 760076584.2 1959243151 1142210928 1836286528 446303101.9 608847071.5 3674786758 671952530.6 82913441.26 452308808 828491197.6 3416605.279 76935.74761 10772393.52 9073.487364 679129.4104 9184.491065 0.0006163601615 1.01177225e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 106.2068052 0.1660412412 3091159.013 163350.0552 41408.14915 248120.2999 243531.124 26252903.31 871807.0207 4291401.822 37985010.17 594130212.2 318786390.2 18119929.38 916975025.2 233419723.3 2210721622 1110342946 4531734745 2607735102 616894866.3 226625120 181324230.7 821611709.5 112224420.4 1280305739 853987350.3 441239625.8 1876631.25 31515097.43 5886825.088 117677035.5 2098758.374 48322136.71 23489335.96 18076105.64 188563.8984 107535023 8.935213527e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.934847716e-05 6.204980031 291418.9933 338305923.7 965.0774212 1430.790015 15929787.5 1349601.971 3202454.342 26957952.4 133285780.6 95582953.01 60554096.21 24882187.53 1336851633 5565250.199 743198430.9 382544709.1 1011263372 57341526.35 392289562.1 1944348095 170596934.1 52047995.66 1259487177 1334987808 219834572.5 18537543.57 43295132.37 812239.0475 10111787.29 137.4295207 67359.80989 12717.20066 310174.4009 14249.38065 4604259.167 2.167955256 5.287150653e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 65.29255374 649520.7349 1.14413192 405.6902218 15609700.97 9069.197018 3605209.85 11931.30413 3849456.17 2477552.378 12117640.04 986925334.7 6828166300 18136393.16 230310795.4 5453391.871 590403022.8 802828863.8 991500.242 105865669.1 1038902094 664012335.4 324196.7563 1409420911 98550533.32 171584.6251 72923699.03 2699290.542 64386092.22 72915.60707 215339.4779 342.3485432 1506199806 4101.50383 11041910.66 907.6233334 3161.771422 0.02764532854 1.959231222e-22 4.594295311e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3.937304393e-05 6732.106959 9.818326934 206.6404536 1578.215053 5945786.473 16356.57058 1237053.488 336220.7209 143008.5943 44080.96436 158709.5894 33241.20395 1941.431084 690988.3096 2683103.325 16309.611 15401088.44 20877555.99 26297556.99 100988.0886 65.62586159 3327.009045 162457.8405 1714968.155 9632.805587 38548724.83 6980164917 2128672.437 43.76781055 0.02582566711 1718476.439 35452794.84 9.278365788 2479594.941 663.2819475 0.003345610291 0.002418042796 0 0 1.969377867e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 8.737402164e-06 0.001554667485 0.2042822275 0.2689596802 1.787923968 2207.243129 28218.65457 41.26184087 71.2743452 54006.5393 1101484.819 2791223.703 4760296.179 479127419.5 6656.54845 121484.3704 20816.77261 0.8442963347 492094.1695 687881.9869 10763452.73 54.98911819 617282.294 1350456.342 2.990586411 151.7788459 22659812.42 24.3345599 6021.738475 1712548.621 61283.83593 0.3950472015 10829462.97 0.003065834668 7179887.136 0.05414726781 0.006591459861 5.418816949e-15 2.445186144e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 6.814368434e-07 6856488.864 61.03832771 6.249456958 0.00440213005 410629.2293 205782.577 102.0975325 780859.2206 224589.4329 37.03101149 70.03980752 7.003595194 0.04045353409 323.103847 5165.242597 0.2506540466 5191.629573 0.1608494074 92.44047616 101544.8686 8.695812715 0.02617372207 0.5688435514 2353.560535 6408.281265 0.09615221584 6.522401196 0.000126414164 0.002102740655 4.142864881e-13 1188.850781 2.194996976e-08 656.0963719 8.210426346e-06 7.537970629e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.359270821 0.0001948895134 1480.929363 0.0001092989101 0 126.4792076 2825.593498 3.939281046e-17 24.08606548 7.077617333e-09 70.19417939 4.584160522e-11 55.52787641 341.2840022 2.561434474e-09 2121346.864 70.72141306 0.0003979548472 2.052979406e-13 5.17429711e-05 1.90261975e-08 157.4286968 0.04418868131 0.0003581324069 0.645329545 6.259261772e-11 3.111672213e-06 6.846181464e-11 3.317086263e-24 0 1.479410256e-06 8.846414272e-06 0 4.715267747e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0.1354394604 7.241745049e-11 0 0 1.601530275e-26 0 0 0 0 1.194515602e-25 0 0.001334744073 1.092869091e-12 4.229537204e-27 0 0 4.415465435e-07 0 1.925725382e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [Sphere1/nonrotated.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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.543100202e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.516385e+11 5.753955746e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.828925862e+11 4.837917352e+10 0 6.923240054e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.458543191e+11 1.735928284e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.382078512e+11 3.723792224e+11 4.936873676e+11 2.962316542e+11 0 0 1.43229495e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.38555455e+11 1.016991125e+12 5.991211922e+11 0 0 1.028615069e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1.001773038e+11 0 0 0 6.073223484e+10 0 0 1.526242433e+11 5.874355864e+11 1.111544372e+12 8.235801404e+11 0 2.028828602e+11 0 1.045150187e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.016225778e+11 1.297106486e+12 6.803151202e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.803241801e+10 0 0 0 0 6.007611943e+11 1.249311482e+12 5.409953132e+11 1.04014118e+11 0 0 1.39746073e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.925155628e+10 1.869326804e+11 0 5.142292323e+11 1.355913002e+12 6.299766047e+11 0 0 6.348162854e+10 1.42524868e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.053268119e+11 5.512215772e+11 1.330903264e+12 5.503140338e+11 7.975865722e+10 6.483659899e+10 1.523347492e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.487116849e+11 3.94119128e+11 1.486849104e+12 6.894982844e+11 1.883211066e+11 1.507139847e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.743217516e+10 0 0 0 6.153594947e+10 4.414579025e+11 1.536987643e+12 7.20684172e+11 4.82741164e+10 0 0 0 0 1.484291182e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.964812052e+10 1.435935895e+11 3.815414536e+11 1.561375773e+12 7.043461529e+11 0 1.545240769e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.101118165e+11 7.8e+10 0 2.36370031e+11 1.574712902e+12 6.08022407e+11 7.269616592e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.580631604e+10 1.395145075e+11 0 4.563281107e+10 1.795388479e+12 6.424248521e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.934954953e+10 1.293474002e+11 0 2.250124415e+11 1.676501968e+12 3.611705361e+11 2.101559766e+11 6.086465693e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.494380522e+10 2.61283955e+11 1.768018457e+12 4.16863915e+11 4.899322557e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.43385958e+11 1.482957709e+11 2.210747565e+11 1.827041548e+12 4.557797762e+11 0 0 0 1.431972113e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.382936189e+11 0 0 0 0 8.470444536e+10 2.547798781e+11 1.851614175e+12 3.637580893e+11 7.191603383e+10 1.986948122e+11 0 1.549261086e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.713325787e+10 0 2.16750417e+11 1.8583936e+11 1.782655034e+12 3.953059336e+11 1.070715744e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.131954026e+10 0 0 2.616042882e+11 1.890550322e+12 2.22383183e+11 3.947473061e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.265230558e+11 2.024968681e+11 1.808875821e+12 4.285795471e+11 1.526998978e+11 5.719461751e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.384462788e+11 0 0 1.551321903e+11 2.399518119e+11 1.809419715e+12 3.86203817e+11 1.898271858e+11 0 0 0 7.980380058e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557647152e+11 0 9.844518398e+10 3.737067497e+11 1.870694569e+12 4.369787339e+11 1.304616866e+11 2.310184608e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.833924067e+10 0 0 1.527421088e+11 0 2.175492723e+11 1.883345006e+12 2.611819457e+11 1.024651039e+11 0 7.8e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.557514558e+11 0 6.777205682e+10 1.493623511e+11 2.952381226e+11 1.921826797e+12 2.715650154e+11 1.2307268e+11 1.404408531e+11 1.428287745e+11 1.461928804e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.15998255e+10 0 1.813776513e+11 3.093608204e+11 2.035283583e+12 2.410955775e+11 1.562381062e+11 1.158049886e+11 4.38672173e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.457086051e+11 1.037991088e+11 2.433585924e+11 1.854192316e+12 3.182022563e+11 1.949156526e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.472027528e+11 4.29403882e+10 2.372517305e+11 1.976533896e+12 3.22243423e+11 1.540429351e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.47654047e+11 0 1.20115773e+11 2.021646421e+11 2.012561893e+12 2.975435885e+11 1.144875766e+11 5.824125087e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.72959646e+10 0 0 4.097089112e+11 2.060171528e+12 2.158861589e+11 1.936495643e+11 0 1.312492547e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.83046236e+10 2.012332615e+11 1.902945647e+12 2.710388002e+11 4.964626551e+10 5.866766274e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.03115507e+11 0 2.67267997e+11 2.026071828e+12 2.146503688e+11 1.523836491e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.028761518e+11 0 0 0 1.871434986e+11 2.038487083e+12 2.722093689e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.187885978e+11 0 0 0 0 0 4.831810677e+10 2.604070383e+11 2.11626816e+12 4.322971076e+11 1.799379471e+11 3.914021409e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.161402869e+10 0 0 0 9.522281022e+10 2.375844146e+11 2.083712157e+12 3.405505741e+11 1.262817829e+11 0 0 8.674122477e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.117554474e+11 0 0 1.513031373e+11 2.616014965e+11 1.973671854e+12 3.606621336e+11 0 6.09924624e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.597230467e+11 2.253108969e+11 1.916852479e+12 3.141629419e+11 4.134880328e+10 6.457540905e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.342543709e+11 2.111231331e+11 1.945939561e+12 3.187018202e+11 2.133926193e+11 1.555999303e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.147336373e+11 3.992392492e+11 2.010067161e+12 1.874394956e+11 2.046185423e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.479463956e+11 1.424865124e+11 1.126790509e+11 2.519037171e+11 1.941762903e+12 3.640224822e+11 2.659607064e+11 7.614395678e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.15380573e+11 3.363102097e+11 1.966321912e+12 3.114180355e+11 2.598781689e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.204297242e+11 0 1.320286217e+11 2.720726633e+11 2.069218687e+12 2.549314873e+11 2.008724147e+11 9.824998401e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.465406842e+11 0 1.869728032e+11 3.028564192e+11 1.99445219e+12 3.150921571e+11 1.708316058e+11 0 1.332456887e+11 1.369088287e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.384203012e+10 3.079557671e+11 1.928559578e+12 4.059819718e+11 1.733812948e+11 1.774535881e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36.52498414 1.043149108e+11 549.3377827 4.099256759e+11 1.926393379e+12 2.103479348e+11 5.160844665e+10 120975.6081 8.037197006e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.729833991e-21 366.4462166 148037.5105 3083.369525 9.71502805e+10 2.680675988e+11 1.854094397e+12 3.712596052e+11 5712266.014 1.479933697e+11 1.522484562e+11 1.693656272e-08 1.199689083e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001717009961 894714.5448 162805159.1 682649.3431 41969140.69 1.255893675e+11 2.708931564e+11 1.847444515e+12 6.996122543e+11 1.889912714e+11 1.364737211e+11 1.168181627e+11 10640.51253 3079.250771 0.005416313924 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.046281289e-07 45.48012978 5197839.435 3.247448748e+10 6923328.964 2.100686362e+11 2.279688764e+11 2.306018786e+11 1.917850195e+12 5.002813001e+11 4.956869513e+10 2.107433268e+11 205305929.6 28826.00511 49782426 1.545220036e+11 6.923258027e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1.596878895e-21 697595.8111 167293.8045 8001223.123 26326157.1 1.685326032e+11 119688623.1 2.324414058e+11 2.11173805e+11 1.948203207e+12 5.228657221e+11 2.154005161e+11 2.303915345e+11 5283856.597 7610510.772 3523682.278 236476414.6 160922.9962 5.188293821e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 12161.05697 481214.4184 15165827.05 14626304.08 335726789.2 88095153.88 1.476565193e+11 2.213842338e+11 3.956824994e+11 1.813756022e+12 4.149246484e+11 2.062789033e+11 1.462896598e+11 17230566.09 25558851.85 29632793.98 5184428.866 6651.180014 0.6455077064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0.01037059649 2542694.407 36741497.8 500858906.7 86686062.89 1438770849 2155160864 40651360.24 1.260785927e+11 2.690959216e+11 1.783833685e+12 5.496605643e+11 5243077362 4090042092 1.218387271e+11 137453593.7 1.481942482e+11 275818.8412 95441.8692 0.3582767663 4.350817497e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 535020.1198 9047536.538 68496034.49 50815870.52 37624177.53 2.468000404e+10 1.599567868e+11 1897807334 1.980958032e+11 4.148474593e+11 1.811281354e+12 6.051288474e+11 1.830265522e+11 1.032496755e+10 1.542176692e+11 1.490194429e+10 164435463.4 1.511684169e+11 7311960.321 5551688.4 261238.7102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0.01607640641 620693.0616 3922587.67 2018452.848 30124759.37 69960764.44 88211830.65 1.246040916e+11 1.679685157e+11 2.28642139e+11 3.336890579e+11 1.861304641e+12 6.231414949e+11 9.733193562e+10 2597160244 1.074457508e+10 1.494172039e+11 232184201.2 4076394.674 19620999.05 6358786.611 10701614.3 18252.85931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 15667.18641 142556393.4 68988179.98 55120284.63 26860157.46 309267349.1 1.412660262e+11 295877814.1 189437453.1 2.058993779e+11 3.061504391e+11 1.650261085e+12 6.016442876e+11 1.812901406e+11 7.620453495e+10 229558117.2 63254150.21 1.503690729e+11 18636179.7 69427857.31 5895931.858 16393262.06 470693.6721 3.205689028e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 14044.87372 10563903.86 6109556.173 8751639.925 85424971.79 7.029396182e+10 39284178.46 140682418.4 7985208394 5.180554842e+10 9.479702116e+10 3.237578569e+11 1.719596849e+12 6.364939786e+11 5334626279 1.352502811e+11 555140809.9 169292990.5 494602028.1 342628522.6 45135761.59 5900710.134 760172.292 355531.0078 0.001940104423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7.729921196e-27 12821.12155 3681964.446 8108693.07 10385106.9 31486125.7 47123209.54 1.495619487e+11 61377299.45 9731012942 7031232146 6.570831522e+10 3.848196846e+11 1.67159036e+12 6.383328922e+11 1.284522273e+11 9526591559 2322123486 1.376277338e+10 1.577917662e+11 107206350.7 203435068 206918013.3 7643897.831 25374508.58 382641.8153 0.0008200611922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0.8369812686 5842447.821 659421689.8 44222242.04 116744026.5 309919203.6 1.471521912e+11 413176590 485911657.8 8.064327807e+10 4.982276729e+10 2.540272629e+11 4.744855135e+11 1.484635332e+12 7.644087614e+11 1.548043675e+11 1.141235715e+11 3709830857 116217047.3 7.438172211e+10 73815843.21 48905429.6 1.439307913e+11 4045874.194 935026239.6 1159347.541 0.912329489 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.088128869e-11 66310093.41 2386084.55 11256914.86 82733942.12 152318842.1 53724516.62 1766292569 1.35536327e+11 238686632.5 1.003014275e+10 5.276365528e+10 1.549912731e+11 4.84376253e+11 1.454134411e+12 6.272794173e+11 1.453536442e+11 8.428411296e+10 596543808.5 1.898819645e+10 1.535003836e+11 127265174.1 156943011.6 496905259 37304952.77 5469454.641 153711.4698 82848.83968 0.01412130221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0.0009187014178 307931.6724 13111017.67 1432464.484 232394553.5 26540382.74 1800481081 1.116482962e+11 2393619339 1.294169127e+10 1525655146 1.550002017e+11 5.79920071e+10 6.145480312e+11 1.41421413e+12 7.371093474e+11 2.746704045e+11 1.528160696e+11 2.076732932e+11 367645910.5 422054512.7 998357554.4 158568925.8 108816266.1 61606372.25 122500225.9 87031457.1 55298427.39 33.18965905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.590092298e-05 145070.9685 9496.50736 28662312.58 7403189.03 1153670373 39642367.83 77537911.7 126408110.3 1.020778795e+10 301459293.3 1.062179507e+11 5729977562 1.803925074e+11 5.095258059e+11 1.158148069e+12 7.256491469e+11 1.617042216e+11 1.55232018e+11 9685667194 3433427608 5265106510 5.914286811e+10 121754686 338962638.9 306209297.8 58152720.39 359737647.1 13207.03652 8008147.678 3.076722662e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1364.601097 16258794.9 5941711.212 224054900.4 18535087.45 10117487.74 2720098546 36277459.61 279531451.6 271536789.7 7.300759035e+10 1.518093495e+11 1.271122075e+10 1.084846459e+11 3.332640234e+11 5.148047363e+11 2.838723284e+11 8.261908023e+10 1.910817331e+10 3804533061 454002206.4 3692186843 2792870456 681379728.1 288639627.1 8324721.328 99677580.04 25767347.31 45116215.03 6460273.177 9.400461861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.880758556e-14 205427.5639 1547753.421 13105163.46 1937052.86 66836224.16 87121319.74 23089005.31 589336371.4 9065246852 2188660564 1.832911115e+11 6544890503 3.158472754e+10 1.571354139e+11 1.794782743e+11 3.91859852e+11 1.728160191e+11 1.957489737e+11 1.561342279e+11 1421963412 2106625654 2459697501 6.548277487e+10 3830721392 146143859.1 147681287.9 62488452.23 50512754.87 8643713.319 34196540.2 5.752191772 7.276551858e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2.560996322 1854640.743 1389868.642 2875696.282 65547181.33 3964444724 16235209.07 62530857.64 233294481.3 1388968917 7.424738302e+10 1.479080508e+10 8783701822 1.991147458e+10 1.68345097e+11 5.562379416e+11 9.768473773e+11 6.636524997e+11 9.2717617e+10 1.239518253e+10 2.223665864e+10 2184441026 3454732871 1441906672 431539633.5 76827411.98 429299362.3 59481446.88 85679823.64 121703.699 6687460.191 27147437.93 1.57951528e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 886687.6618 200550.7659 23038201.28 10790471.99 130251786.3 54211945.53 90998029.1 2795225624 119001661.8 1191168433 8.881053711e+10 1.811938272e+11 1.243766049e+10 1.037748238e+11 1.491554076e+11 4.7529397e+11 1.099575367e+12 7.31967061e+11 2.491343995e+11 1.203904456e+10 1480219111 4691038300 1948998600 678742506.2 2697671482 1878949406 16458026.5 23960048.75 836762997.5 16618522.88 9240042.885 1057.924411 2887.744142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0.0003087431814 2873.573518 291242.8632 68145.89312 16827573.8 103393476.7 53072774.83 44149670.38 130562558.1 369594407.9 227445822.2 468071650.9 3698952075 7289856930 2674670101 8.556454134e+10 3.055996806e+11 5.485461875e+11 2.331547157e+11 1.418752652e+11 4311891443 5251687098 3089651260 5710918996 5.118307942e+10 5608352484 1298321522 162629432.8 176414056 91185409.81 13613907.82 5723843.592 21035.31644 851523.7221 5.166292245e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 5.9271708 3978.720039 16104402.19 397875.0063 314570794.5 278244640.8 20365224.77 18454142.99 30954155.75 1349216438 79316110.07 3.09430831e+10 8203846621 2136590921 3749793092 5631842744 5958395473 1.547521066e+11 5.200659291e+10 9.775508155e+10 3874504146 8823637581 2.135652305e+10 1.534193192e+10 1503281535 2575771168 715108454.4 583658676.3 41165284.08 11497664.95 113443927.5 535842.0253 8238571.954 30.08503245 0.880875424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.2512177263 13250248.59 15682258.5 7838690.2 7776467.012 76023594.76 747715688.6 1873570.311 493923686.4 395913604.6 42916771.76 3608808674 6.572275641e+10 268749585.4 1884955144 2665720328 3616189314 1.597626089e+11 4613058814 5003187437 7.84457132e+10 2599938328 7.805154145e+10 720279572.8 234237686.2 2103337577 65059244.14 339333448.8 2077309597 6286605847 79315.80391 1558326.405 6819725.997 4174334.337 98442.93837 51197.97981 27.02136225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1317.364543 10706.96336 167418.6863 6426004.217 597837.5433 2009533.095 2638492.692 116477362.7 1.00174199e+10 469550413.7 7.804450838e+10 7978159787 3.12424802e+10 1802868021 733766686.4 6291842244 994958362.2 1.487032162e+11 7.802882919e+10 1491300708 7918923306 668380148.7 1766166094 1.003773865e+11 1.037136668e+10 448221800.6 36578252.88 1830202299 387197370.4 143904211.9 134201498.4 26362.03786 52498554.77 125806.3004 930784194.1 194685.8043 11.78236483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 56621.44094 9.277490085 9314.802128 6481115.87 295749.9865 393106458.8 7707553.915 5457103820 19924039.71 1840578.121 17902750.64 318935489.5 23396819.54 1.143972726e+10 1.231962795e+10 1553152703 3737098112 5.146012936e+10 1.297173665e+11 471590270.8 1908833199 1214589010 1.413779807e+11 830150366.2 50108718.34 575558078.6 41522718.42 478862986.8 61053026.23 332935425.8 30894739.55 593497053.9 34031618.6 918741.2744 346842.4625 3746486.219 0.0002282726397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0.02940616629 150544.824 7534991.451 1215035.873 5301180.701 228157060.3 24074014.7 66420404.01 11892994.02 6562978.781 23511131.93 1004075841 200395868.9 150868485.3 130697947.2 3825848245 7.803451145e+10 3019922370 551531529 223454519.3 703765594.4 480063066.7 870509738.5 225266729.5 597864178.8 3351245122 645982314.6 48862875.89 420648235.2 818044678.3 3242192.947 74750.00509 9773147.705 7928.903979 657406.3061 9229.585724 0.0005715558454 1.01177225e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 118.7428174 0.1359029644 2300060.539 146868.7605 29930.75581 158900.4316 214917.199 24815834.38 821850.591 4116129.856 28723558.47 517052478.6 292066280.3 10647449.68 578015116 139286910.5 1212305779 612217379.1 3903188866 1239924260 268879791.2 140600424.7 129388576.8 815351054.8 66005125.02 885735854.9 793829004.5 439944506.7 1209613.27 28743843.47 4261313.04 116460767.5 1927458.759 47073255.66 21518027.09 16914456.36 192162.5935 113350336.8 8.935213527e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.934847716e-05 5.371360017 297419.2778 341313142.3 515.3982176 1136.181866 14625523.91 935256.7309 2003849.837 21573591.5 96600962.3 85166209.77 46025917.04 16984443.26 958732264.2 4662164.503 631454221.8 169798214.5 872310569.8 46880723.06 237015251 1517439869 130614919.2 29934613.69 1097187188 1243217420 199564514.1 11646864.38 38580795.25 684218.352 10133344.14 104.4727821 66752.18829 12793.16848 234652.803 12378.78697 4703286.536 2.273770652 5.287150653e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 68.47609554 671958.4765 1.019844933 308.234577 11700233.63 7330.179749 3492199.79 11464.09086 3183236.635 2228034.905 9063295.652 989850165.9 6845485870 16054698.86 215437259.4 3140986.31 404933610.3 804770189 593667.515 89380457.78 666280338.1 517191105.8 291099.2822 1383803643 84923256.52 151885.0595 50992330.81 2655669.224 60255436 43127.97134 193719.043 343.5623612 1518494986 4144.002091 11192690.46 668.3694307 3090.050705 0.02826299619 1.959231222e-22 4.594295311e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 4.546407503e-05 7096.263323 10.11898791 207.1353033 1146.519005 6016493.895 16535.72716 1173452.245 334363.5805 115235.8857 44115.51992 145672.7943 26732.74235 1506.202037 504099.0139 2694800.119 8603.562791 13724979.14 20455496.41 26457657.27 89035.93963 36.9252132 2443.049922 160621.4552 1645945.216 6515.179405 36094244.76 7027042677 2148290.843 37.47968775 0.01980451873 1386995.377 28438845.82 7.72145954 2530725.887 681.45742 0.003547929238 0.002961485514 0 0 1.969377867e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 8.737402164e-06 0.001732713143 0.1625330617 0.2807536515 1.828223128 2305.378514 28949.44232 38.42369812 59.70501483 42501.80805 1104559.605 2829698.468 4815291.492 484629984.2 5015.9322 122943.3838 18617.41124 0.6475224441 443583.8588 542467.3155 10957343.03 35.60829239 614964.802 1376179.483 1.766009921 138.5851319 22729135.03 24.03349798 6131.481597 1757033.716 60952.5591 0.4099351416 10848675.64 0.002671330455 7530329.157 0.05655293196 0.007046566971 6.256978179e-15 2.650416447e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 8.345862786e-07 7510907.233 64.33859392 6.62851626 0.004238003802 428882.9373 211126.8423 74.22964049 810330.791 202655.5898 32.03389749 53.5536203 7.232804263 0.04225163883 244.5268952 5360.16394 0.1853179299 5397.302116 0.1708078486 91.27090132 107640.3329 9.041084967 0.02733711628 0.5377013048 2340.882699 6619.721388 0.08881142114 6.875213294 0.0001296958948 0.002230293193 4.428898227e-13 1284.10404 2.53456419e-08 733.5380437 6.44783171e-06 9.232090246e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.889504837 0.0002250390261 1813.760642 0.000126199874 0 131.3767703 3460.631145 3.939281046e-17 29.49928516 7.752850747e-09 73.99115547 5.614427064e-11 50.18444376 376.0145466 2.883083192e-09 2371737.896 81.66205373 0.0004873931581 2.370555908e-13 6.334090436e-05 2.027592746e-08 181.7830009 0.04864048407 0.0002587385358 0.7451623731 7.665933703e-11 3.111672213e-06 6.846181464e-11 3.877861158e-24 0 1.479410256e-06 8.846414272e-06 0 4.715267747e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0.1354394604 7.241745049e-11 0 0 1.601530275e-26 0 0 0 0 1.194515602e-25 0 0.001334744073 1.334704942e-12 4.229537204e-27 0 0 4.415465435e-07 0 1.925725382e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [Sphere1/nonrotated.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 9 19 6 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 29 89 33 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 1 0 0 0 1 0 0 1 32 105 56 0 2 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 33 126 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 29 124 27 1 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 1 2 0 20 147 39 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 21 144 29 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 9 165 34 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 15 203 32 1 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 1 1 11 218 37 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 3 1 0 4 204 32 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 2 1 0 1 249 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 5 232 18 4 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 1 4 264 17 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 1 1 4 266 20 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 1 0 0 0 0 1 4 271 10 2 2 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 1 0 3 4 264 16 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 1 0 0 3 284 5 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 1 3 289 12 2 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 1 0 0 2 4 279 12 3 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 1 0 2 8 302 11 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 4 292 4 3 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 1 0 1 2 9 300 7 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 5 337 7 2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 4 315 9 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 6 324 6 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 1 0 2 4 339 7 2 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 1 0 0 9 339 2 3 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 1 3 299 4 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 5 326 2 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 1 0 0 0 2 341 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 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 1 6 358 10 4 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 1 0 0 0 2 5 355 7 1 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 1 0 0 1 4 337 9 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 3 4 324 8 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 311 7 3 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 2 7 328 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 4 299 7 4 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 4 5 315 7 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 6 351 6 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 3 6 345 8 2 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 304 9 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 25 49 46 333 29 24 20 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 31 112 167 138 110 347 84 104 89 58 12 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 58 173 266 315 276 215 390 192 196 203 189 117 38 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 69 236 411 530 603 486 364 521 311 330 436 347 264 138 47 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 45 267 536 743 939 937 893 608 647 472 567 625 606 520 350 157 33 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 30 249 498 914 1244 1518 1539 1354 897 856 748 942 1077 977 828 584 371 138 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 9 142 458 933 1436 2048 2394 2490 2135 1583 1310 1165 1523 1633 1573 1242 881 584 285 97 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 67 342 786 1374 2152 3071 3698 3850 3369 2393 1892 1963 2394 2509 2285 1818 1325 929 489 202 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 19 192 614 1125 2065 3243 4534 5347 5690 5114 3657 3048 3228 3607 3623 3264 2570 1921 1316 748 424 140 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 95 421 897 1680 2884 4627 6409 7924 8485 7873 6261 5353 5566 5900 5502 4832 3765 2645 1665 1061 638 290 64 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 18 243 612 1247 2187 3877 6218 8860 10633 11785 11916 10146 10254 10076 9295 8109 6855 5172 3436 2208 1491 843 406 144 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 116 395 881 1642 2875 4757 7743 10729 12895 15255 17066 17949 22846 20785 14925 12022 9743 7202 4465 2957 1914 1120 580 265 82 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 16 228 554 1149 2046 3618 6045 9285 11994 14904 18680 24344 35372 59572 49500 24753 16255 12489 9388 6023 3711 2211 1461 793 381 145 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 2 101 366 802 1476 2471 4393 6887 10423 13185 17450 22776 35134 82064 211477 159289 45251 20681 14113 10702 7070 4371 2741 1683 975 513 257 69 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 21 195 514 980 1846 3018 5084 7819 11155 14557 19278 27212 53028 266529 1217493 807369 102597 26864 15994 11673 8380 5122 3081 1940 1242 701 331 138 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 72 330 619 1210 2012 3473 5700 8756 11692 15069 20536 30631 78692 1603361 14492195 7163187 253544 35116 17797 12259 9085 5657 3421 2213 1455 844 425 201 54 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 19 155 423 792 1447 2445 4027 6279 9225 11887 15674 20689 32219 95270 4240457 31682995 18255481 444594 40453 17926 12636 9325 6197 3855 2405 1530 919 554 294 105 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 2 55 240 518 905 1548 2796 4365 6596 9116 11662 14985 19879 29878 84148 4192876 28053794 16589050 408599 37062 17069 12226 9486 6665 4104 2508 1652 1097 622 334 166 35 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 6 103 320 596 1115 1775 2958 4558 6735 8866 11065 14302 17997 25401 52624 1150340 7161343 3395340 155550 26811 15346 11536 8633 6497 4102 2605 1675 1086 679 403 166 58 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 39 152 323 630 1148 1859 2810 4504 6419 8154 10063 12316 15219 19462 29299 129880 410197 264847 45353 18656 13003 10014 8081 5969 3813 2459 1660 1156 663 424 224 76 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 4 64 209 390 648 1183 1764 2690 4075 5625 7029 8834 10517 12351 14475 18237 35992 62576 47350 20558 13039 10179 8327 6414 4977 3397 2279 1571 1074 724 445 238 133 38 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 14 98 240 402 695 1040 1597 2385 3325 4512 5910 7094 8362 9586 10688 11805 15798 20067 16470 11175 8616 7438 6064 4858 3758 2596 2016 1401 869 679 390 241 143 43 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 1 25 104 230 344 658 929 1364 1888 2571 3450 4181 5149 6032 6760 6876 7140 7778 8676 7518 6173 5420 4841 4099 3422 2733 2068 1581 1103 838 557 366 221 153 65 17 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 6 49 96 194 358 471 764 1086 1468 1924 2377 2946 3405 3832 4130 4109 4116 3891 4149 3604 3433 3086 2853 2627 2243 1886 1525 1173 892 658 453 332 197 107 65 25 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 13 52 89 189 279 431 568 802 1072 1340 1559 1893 2078 2368 2384 2435 2332 2094 1985 1844 1822 1771 1722 1624 1380 1217 1010 791 616 519 353 238 166 114 61 29 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 15 40 92 168 213 316 390 536 643 840 1017 1115 1264 1311 1300 1270 1222 1080 989 880 955 1016 953 972 795 775 637 535 465 355 279 200 145 86 62 30 8 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 4 12 48 71 111 145 196 300 346 423 515 607 669 702 751 710 698 601 549 524 421 457 485 548 464 472 454 377 313 275 223 160 135 111 64 46 25 9 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 1 18 24 56 85 106 142 182 206 264 324 345 313 371 385 371 344 293 263 269 238 247 243 261 266 268 229 233 198 156 133 112 103 67 41 32 23 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 10 13 26 40 46 58 101 104 135 159 170 168 189 190 175 149 160 150 130 124 125 113 135 148 134 135 117 112 115 76 74 64 61 41 36 27 12 13 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 3 9 16 24 37 40 42 46 65 89 78 89 109 98 84 70 88 82 50 65 55 46 65 77 67 56 60 58 54 52 50 38 31 29 24 18 8 2 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 1 4 14 11 15 11 19 27 27 34 43 36 41 38 45 37 33 26 25 38 27 18 24 26 33 31 23 31 27 19 22 13 21 17 10 11 7 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 2 5 9 8 7 11 19 15 13 22 15 8 15 11 8 13 11 12 7 19 8 12 11 10 13 12 20 9 8 8 7 6 3 4 2 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 2 3 2 3 0 6 2 1 2 5 9 2 9 4 2 4 3 2 3 2 6 3 4 6 3 2 1 1 2 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 1 0 1 2 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/profile_x.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/profile_x.dat new file mode 100644 index 0000000000..91bbd67457 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/profile_x.dat @@ -0,0 +1,360 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: profile_x +# position: 49.4198 0 -35.0741 +# title: x [m] monitor +# Ncount: 153447624 +# filename: profile_x.dat +# statistics: X0=-0.0038853; dX=0.0781448; +# signal: Min=464149; Max=4.07967e+07; Mean=8.03108e+06; +# values: 2.40932e+09 8.17576e+07 44025 +# xvar: x +# yvar: (I,I_err) +# xlabel: x [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: x I I_err N +-0.1495 9203390.612 5440190.841 94 +-0.1485 7964915.013 5756916.883 79 +-0.1475 3528276.31 3027274.129 86 +-0.1465 1880769.163 1388212.732 75 +-0.1455 682652.2786 333338.7833 82 +-0.1445 15488005.67 7471630.031 88 +-0.1435 6943271.819 2786428.003 90 +-0.1425 14569783.4 8161398.98 87 +-0.1415 4009649.999 2283222.144 74 +-0.1405 11107123.98 6142415.622 95 +-0.1395 7571591.405 3328613.701 110 +-0.1385 7395258.383 4704323.38 102 +-0.1375 4924145.957 2764811.292 84 +-0.1365 9615543.848 6144305.17 98 +-0.1355 5382774.564 2472758.951 96 +-0.1345 3584524.039 1640244.393 84 +-0.1335 6198472.968 2848798.636 97 +-0.1325 6680005.788 3005428.442 101 +-0.1315 3494102.662 2000129.269 91 +-0.1305 5510042.536 2796305.137 98 +-0.1295 9353832.748 5638397.89 112 +-0.1285 7311311.774 3629286.394 101 +-0.1275 2210952.475 1280478.062 108 +-0.1265 3995401.081 1978006.587 105 +-0.1255 5485734.599 4155666.289 86 +-0.1245 7982914.8 3258008.671 114 +-0.1235 6088797.775 2608677.818 113 +-0.1225 2390938.66 1246758.956 103 +-0.1215 9542808.685 4821495.402 108 +-0.1205 7654628.545 4625161.86 118 +-0.1195 6584835.562 3332848.385 97 +-0.1185 3984687.955 2255643.896 128 +-0.1175 6032041.079 2874511.791 112 +-0.1165 4532745.49 1856347.322 119 +-0.1155 951737.1398 544686.1678 99 +-0.1145 1912952.773 1259139.791 121 +-0.1135 11472045.72 8026780.196 113 +-0.1125 4669940.208 2284220.61 125 +-0.1115 14573572.06 8706085.191 121 +-0.1105 4616557.37 2543732.499 111 +-0.1095 5182391.99 2406736.121 128 +-0.1085 8451971.886 5231611.648 105 +-0.1075 7351458.248 3317774.723 130 +-0.1065 5638733.612 3629086.319 110 +-0.1055 464149.0508 207411.6214 113 +-0.1045 4303672.584 2764329.823 126 +-0.1035 4207973.942 2084049.921 120 +-0.1025 6074753.296 2783167.292 129 +-0.1015 1579988.227 1052106.651 102 +-0.1005 15274158.14 6722653.051 116 +-0.0995 9814500.001 5014339.223 107 +-0.0985 4144515.975 3188661.843 122 +-0.0975 3903119.938 1937060.183 129 +-0.0965 2781379.726 1181420.086 120 +-0.0955 1476232.684 892039.5926 94 +-0.0945 8980342.32 5268693.147 132 +-0.0935 7199477.033 3070878.135 132 +-0.0925 8135478.179 3134456.698 134 +-0.0915 2483048.134 1465183.875 140 +-0.0905 3490439.597 2064472.216 121 +-0.0895 2552118.012 840225.1103 138 +-0.0885 6534567.525 2912233.067 138 +-0.0875 4074925.539 2095064.81 125 +-0.0865 3502186.424 1737578.835 132 +-0.0855 12581962.13 4126979.384 124 +-0.0845 7952383.933 4657519.648 111 +-0.0835 5684391.816 3374381.763 119 +-0.0825 8433554.998 3392060.727 139 +-0.0815 3545496.69 1808790.414 136 +-0.0805 11253931.95 4795236.789 131 +-0.0795 9468797.346 3999464.66 141 +-0.0785 5207487.704 2662111.514 157 +-0.0775 10602979.22 7942254.14 144 +-0.0765 8530694.559 3680959.002 132 +-0.0755 7217234.359 2551847.601 149 +-0.0745 16205173.4 7187520.331 159 +-0.0735 3335104.968 1708119.328 139 +-0.0725 13478867.92 4369771.636 169 +-0.0715 10476281.61 4297318.227 163 +-0.0705 9048765.033 3067863.121 159 +-0.0695 15424040.47 5316457.745 153 +-0.0685 7802885.496 3694116.373 176 +-0.0675 10108747.78 4206568.863 188 +-0.0665 5048329.683 2076896.792 167 +-0.0655 9603357.218 3973598.142 183 +-0.0645 6371363.985 1958821.01 187 +-0.0635 15826604.91 5540715.936 191 +-0.0625 10851598.15 3942044.165 185 +-0.0615 23021780.18 7668554.686 189 +-0.0605 4463706.829 2131685.222 194 +-0.0595 7716558.269 4483652.303 171 +-0.0585 10211190.4 3165823.981 212 +-0.0575 7727694.254 2963293.191 197 +-0.0565 10964689.52 5251951.163 198 +-0.0555 9063674.888 3305467.107 200 +-0.0545 10752375.89 4610908.211 202 +-0.0535 7767225.564 3443328.34 187 +-0.0525 12649806.51 4166393.809 192 +-0.0515 10916118.34 4433853.799 198 +-0.0505 4078965.415 1924201.851 207 +-0.0495 4376697.721 1666922.113 176 +-0.0485 40796670.61 35634990.6 180 +-0.0475 9460609.062 4283018.075 189 +-0.0465 21946793.55 12803078.65 192 +-0.0455 9162226.56 6248435.824 197 +-0.0445 7791331.314 4276539.531 227 +-0.0435 9947728.654 4147104.404 188 +-0.0425 8779672.464 3917297.715 208 +-0.0415 21651959.13 9077828.192 179 +-0.0405 15555124.92 10450743.42 191 +-0.0395 13363154.85 5343299.38 175 +-0.0385 3937382.219 2276740.126 173 +-0.0375 11935485.8 5364698.399 187 +-0.0365 3143008.871 1398172.416 188 +-0.0355 4499949.028 2184319.828 183 +-0.0345 30308833.91 10344495.99 189 +-0.0335 9213608.865 3412740.373 196 +-0.0325 5028215.02 2226816.107 170 +-0.0315 4887179.839 2179234.309 178 +-0.0305 15499482.04 6443108.507 198 +-0.0295 7705663.895 3151829.449 221 +-0.0285 18654930.01 6858630.295 220 +-0.0275 4374721.98 1541161.614 191 +-0.0265 10906010.56 4749876.889 206 +-0.0255 10439825.75 3379437.56 232 +-0.0245 9292117.323 5180956.01 214 +-0.0235 6184740.89 2990564.769 212 +-0.0225 7902765.899 3605376.999 172 +-0.0215 16178146.21 5964418.322 189 +-0.0205 7859319.62 2946422.309 171 +-0.0195 10896680.02 4193740.825 192 +-0.0185 9610717.923 4601107.938 228 +-0.0175 11803160.88 4869436.576 206 +-0.0165 4301679.279 1975529.638 201 +-0.0155 5937299.366 2354542.735 192 +-0.0145 13797720.27 8175596.998 207 +-0.0135 9731141.981 5985081.748 203 +-0.0125 4252267.651 1530438.432 197 +-0.0115 3286083.354 1245984.548 183 +-0.0105 4333621.429 2493575.687 199 +-0.0095 8935898.352 3482046.797 195 +-0.0085 12307282.15 4331575.85 193 +-0.0075 6392124.065 2685038.333 218 +-0.0065 11346693.46 4753995.641 195 +-0.0055 7261620.732 2279393.673 213 +-0.0045 24453206.07 8092230.302 230 +-0.0035 3137284.905 2409793.904 195 +-0.0025 7829098.111 2950628.644 191 +-0.0015 33343026.96 16362112.93 192 +-0.0005 11339039.22 5126152.686 202 +0.0005 3463057.284 2993160.849 197 +0.0015 8461535.033 4298813.955 203 +0.0025 4432357.408 2181778.084 234 +0.0035 9726936.035 4160329.31 217 +0.0045 15627079.37 6301117.731 177 +0.0055 7304299.245 3302634.397 176 +0.0065 7778147.636 2933022.988 191 +0.0075 9144162.35 3740781.92 200 +0.0085 14189269.08 5641155.99 175 +0.0095 8785718.848 3295821.67 194 +0.0105 5173931.086 1807763.486 199 +0.0115 13507337.63 5826389.115 204 +0.0125 13329368.24 5241756.254 179 +0.0135 13983443.92 5256905.087 202 +0.0145 13790599.98 6221287.192 194 +0.0155 11419746.31 6850384.348 187 +0.0165 17693851.08 5891934.984 203 +0.0175 8625678.918 4484723.514 204 +0.0185 14139513.19 4516407.492 173 +0.0195 10729361.04 4628383.797 198 +0.0205 8117827.587 3461456.482 205 +0.0215 9683420.811 3323479.218 201 +0.0225 11128423.13 4593201.305 216 +0.0235 9965068.33 4554438.125 190 +0.0245 8882123.003 3381822.858 204 +0.0255 8300282.389 3243795.557 185 +0.0265 7446146.69 2696693.714 187 +0.0275 9530130.543 3420454.378 186 +0.0285 10182921.46 5978549.062 193 +0.0295 7945912.328 4593370.092 181 +0.0305 4001979.337 1544261.022 193 +0.0315 9051184.538 3155786.089 215 +0.0325 4875914.219 1590242.437 193 +0.0335 15173686.47 7256759.135 210 +0.0345 5666760.392 3707322.95 160 +0.0355 9352517.462 2891349.159 169 +0.0365 8493100.676 3040409.559 180 +0.0375 14415668.52 6231962.467 195 +0.0385 3429017.32 1527903.861 191 +0.0395 5917087.437 2472485.565 190 +0.0405 10181904.64 4304429.6 195 +0.0415 10992122.11 4577438.187 195 +0.0425 8336605.705 3974832.819 179 +0.0435 6106647.492 2376645.91 177 +0.0445 4162267.296 2491502.827 174 +0.0455 11541685.23 4629268.603 169 +0.0465 15503885.13 5780166.087 191 +0.0475 15594644 7344004.438 187 +0.0485 1474670.3 638519.8546 170 +0.0495 5198976.351 2997816.696 165 +0.0505 6140848.147 3351782.829 180 +0.0515 3128176.362 1017477.145 178 +0.0525 2167270.559 835888.2525 170 +0.0535 4342552.457 1953615.753 171 +0.0545 9405788.171 2999702.249 162 +0.0555 4700436.852 1640450.644 184 +0.0565 6534768.755 2672123.258 154 +0.0575 6702132.389 2414581.31 162 +0.0585 4591915.882 2051657.573 153 +0.0595 7620177.267 4944485.974 160 +0.0605 6111148.226 2565026.47 151 +0.0615 3212614.031 2177047.884 128 +0.0625 12500142.34 5188530.415 171 +0.0635 12892019.03 4950981.631 158 +0.0645 11148095.8 6356218.913 136 +0.0655 8622913.185 6892631.621 147 +0.0665 6074730.064 2580320.485 131 +0.0675 6825003.332 3040437.393 141 +0.0685 5159142.753 1747511.409 147 +0.0695 9254086.996 6150282.996 125 +0.0705 8273175.519 3269198.925 138 +0.0715 11722408.89 3486152.53 146 +0.0725 3467043.068 1342242.536 133 +0.0735 3477085.017 1555629.989 140 +0.0745 12429699.41 5311807.182 130 +0.0755 8419911.388 3121258.829 116 +0.0765 4901909.862 1918127.673 136 +0.0775 9025125.533 4165932.351 130 +0.0785 4293139.71 2110897.869 112 +0.0795 8841348.116 4177479.393 124 +0.0805 11688696.93 5573564.272 117 +0.0815 11430532.97 4975806.472 134 +0.0825 3786009.565 1861395.856 115 +0.0835 5434494.629 2019489.269 101 +0.0845 11342015.06 6357416.546 131 +0.0855 15380135.19 6091162.209 125 +0.0865 5699064.844 2263560.293 124 +0.0875 8945607.111 3091308.753 103 +0.0885 7710682.096 4687792.251 106 +0.0895 2775178.508 1852020.853 120 +0.0905 9166364.778 3061455.586 114 +0.0915 4564438.67 3321578.33 123 +0.0925 13317716.57 5374172.019 109 +0.0935 8321778.985 5864307.763 103 +0.0945 3192499.554 1482124.99 117 +0.0955 4906259.915 2013006.149 107 +0.0965 15203882.44 7996567.837 85 +0.0975 2674518.559 1180655.657 115 +0.0985 7300788.802 2770035.981 119 +0.0995 2174228.974 955697.9488 110 +0.1005 9227865.097 4978908.578 111 +0.1015 3680007.642 1584599.987 100 +0.1025 4933357.905 3174333.828 116 +0.1035 9287634.274 4277173.712 122 +0.1045 5220138.186 2824908.945 115 +0.1055 5903099.771 3245317.206 124 +0.1065 5843989.26 2247293.267 99 +0.1075 8275526.23 4601853.331 95 +0.1085 2371655.56 1203721.293 107 +0.1095 2802997.761 1700643.432 95 +0.1105 6087504.246 3305980.694 102 +0.1115 9045622.616 3926747.438 94 +0.1125 2374638.375 968582.4029 101 +0.1135 750797.2281 487363.3987 110 +0.1145 7500562.191 3183482.153 103 +0.1155 21921497.91 14124952.83 119 +0.1165 7426008.235 2651860.341 103 +0.1175 17878513.18 7728967.108 94 +0.1185 2462933.651 1163131.798 90 +0.1195 3547679.931 1644125.954 97 +0.1205 7532020.914 5222832.968 94 +0.1215 3970798.299 1578183.793 102 +0.1225 3505671.646 2198173.838 127 +0.1235 2494372.581 1364690.951 80 +0.1245 2612128.137 1354357.534 97 +0.1255 1837346.952 1023367.534 88 +0.1265 11073595.54 6318754.496 110 +0.1275 4095856.87 2470150.733 108 +0.1285 6140452.641 4037503.836 110 +0.1295 10752195.11 4887174.549 80 +0.1305 6283635.091 3233852.826 102 +0.1315 2111634.08 1328728.085 88 +0.1325 5365535.245 2273323.694 97 +0.1335 6617921.69 3074930.283 102 +0.1345 8268653.338 3556220.052 103 +0.1355 11129753.55 5492091.371 95 +0.1365 596832.3589 326892.7489 96 +0.1375 3347637.148 2443655.138 93 +0.1385 2971489.694 2068605.314 91 +0.1395 1723290.643 803537.4873 91 +0.1405 8139162.188 4237910.799 85 +0.1415 2148820.515 1000691.979 90 +0.1425 6298898.652 2758137.376 112 +0.1435 6829206.122 4268124.314 96 +0.1445 2646526.128 1365190.829 96 +0.1455 1918627.38 1044055.822 69 +0.1465 12809826.04 7184257.844 100 +0.1475 2244213.097 1434034.255 71 +0.1485 1958582.153 1855640.731 81 +0.1495 3242648.083 1456177.555 88 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/profile_y.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/profile_y.dat new file mode 100644 index 0000000000..0e81baf8c1 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/profile_y.dat @@ -0,0 +1,360 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: profile_y +# position: 49.4198 0 -35.0741 +# title: y [m] monitor +# Ncount: 153447624 +# filename: profile_y.dat +# statistics: X0=-0.00105397; dX=0.077434; +# signal: Min=390839; Max=4.07404e+07; Mean=8.03108e+06; +# values: 2.40932e+09 8.17576e+07 44025 +# xvar: y +# yvar: (I,I_err) +# xlabel: y [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: y I I_err N +-0.1495 9223809.22 5254898.168 98 +-0.1485 390838.7293 263685.3648 109 +-0.1475 538493.5674 432361.2649 96 +-0.1465 2384194.51 2187560.8 92 +-0.1455 8411114.103 5314825.739 107 +-0.1445 3978495.211 3419486.287 99 +-0.1435 6952104.132 3757709.655 115 +-0.1425 3389011.965 2078844.711 107 +-0.1415 2206934.58 1359292.084 96 +-0.1405 4849103.855 2771422.556 112 +-0.1395 5002174.422 3296252.347 139 +-0.1385 14101588.92 7619719.659 138 +-0.1375 7471415.152 4033476.125 107 +-0.1365 4424934.638 2980815.675 93 +-0.1355 8570200.001 4433994.008 108 +-0.1345 3802162.314 2016555.713 120 +-0.1335 9158315.298 3876436.698 107 +-0.1325 8306227.679 4970942.838 103 +-0.1315 2445560.432 1916778.945 124 +-0.1305 2063397.126 1060148.416 111 +-0.1295 1505224.205 915213.7574 124 +-0.1285 3265776.019 2320093.841 113 +-0.1275 3489894.474 1716452.187 126 +-0.1265 3976275.323 2684460.721 116 +-0.1255 4539404.837 2393040.415 98 +-0.1245 4066408.335 2363784.841 123 +-0.1235 4620445.266 2934013.285 135 +-0.1225 2434953.715 1579522.318 133 +-0.1215 8326692.231 4535483.785 123 +-0.1205 3771620.995 2283702.097 130 +-0.1195 21432605.35 14217945.39 150 +-0.1185 6254630.569 3617248.977 133 +-0.1175 12853873.26 7254989.029 132 +-0.1165 4848302.068 3019282.263 127 +-0.1155 2626534.476 1318231.196 127 +-0.1145 2576466.259 1488817.665 124 +-0.1135 3042047.453 1397605.551 110 +-0.1125 4526321.406 3508094.636 136 +-0.1115 8714638.033 4197243.596 126 +-0.1105 8015354.89 4712989.294 135 +-0.1095 11225849.01 4879247.933 120 +-0.1085 3798839.39 3178049.967 129 +-0.1075 6594122.512 4608192.046 126 +-0.1065 10683007.3 4950000.967 152 +-0.1055 8409759.277 6133171.125 143 +-0.1045 5518252.659 2345841.499 147 +-0.1035 22075988.13 10571661.27 155 +-0.1025 9624471.813 5978931.998 144 +-0.1015 1972179.769 936138.2408 134 +-0.1005 8764101.051 3961731.414 137 +-0.0995 6025859.124 2868779.579 131 +-0.0985 4280747.482 2057886.5 122 +-0.0975 13418666.78 6578410.345 146 +-0.0965 7955608.228 3540398.331 146 +-0.0955 5677448.199 3271017.238 132 +-0.0945 4906683.901 2347684.002 154 +-0.0935 1631389.266 810907.5701 148 +-0.0925 14861976.49 12278211.46 130 +-0.0915 6406382.183 3314040.968 154 +-0.0905 2823218.22 1180695.721 184 +-0.0895 6137875.152 4056121.272 136 +-0.0885 9340356.072 4792371.008 152 +-0.0875 7640868.522 3100619.471 153 +-0.0865 6399054.063 3104584.748 128 +-0.0855 26988802.17 13570610.56 149 +-0.0845 5835620.252 2242497.996 140 +-0.0835 4315493.857 2178170.244 166 +-0.0825 4092340.914 1681610.352 145 +-0.0815 3420043.052 1203780.187 154 +-0.0805 4987236.736 1828463.097 124 +-0.0795 6923198.406 3998588.35 142 +-0.0785 4068366.572 2022693.603 161 +-0.0775 5058585.442 2299602.535 155 +-0.0765 7505428.148 2986508.218 129 +-0.0755 8575082.525 4849493.271 167 +-0.0745 2976500.126 1380839.337 134 +-0.0735 10919997.46 4470073.124 154 +-0.0725 13139334.14 8645035.282 164 +-0.0715 7040044.54 2944466.984 138 +-0.0705 9025593.322 5320434.373 153 +-0.0695 15220238 7904236.825 146 +-0.0685 10979365.61 4717702.123 137 +-0.0675 4359491.881 1705156.707 159 +-0.0665 8100952.054 2973516.116 137 +-0.0655 4470785.863 1942752.327 148 +-0.0645 12676463.69 4782422.413 153 +-0.0635 5350946.492 2011499.24 162 +-0.0625 5144583.072 2147710.549 145 +-0.0615 16470926.7 8241682.961 131 +-0.0605 5703196.148 3008133.878 147 +-0.0595 2814329.912 1175179.475 142 +-0.0585 13230897.65 5176810.286 146 +-0.0575 3900537.622 1616900.49 156 +-0.0565 11878485.26 5635946.263 139 +-0.0555 7284051.246 2436492.657 154 +-0.0545 9099351.137 3146102.119 167 +-0.0535 26144006 7798637.417 179 +-0.0525 10164432.61 4458417.782 155 +-0.0515 12084339.56 3840558.26 148 +-0.0505 6536231.974 2376067.723 164 +-0.0495 12348065.18 3729920.763 164 +-0.0485 3511575.377 1713908.276 151 +-0.0475 9796660.944 6058357.355 149 +-0.0465 14064834.08 5542245.483 172 +-0.0455 7434546.127 3169580.351 147 +-0.0445 6037329.409 2442011.218 164 +-0.0435 9086646.783 3328751.486 156 +-0.0425 11101477.46 4929802.012 157 +-0.0415 4299195.965 1961874.414 135 +-0.0405 8321253.852 3313504.557 198 +-0.0395 10522530.76 4643204.205 160 +-0.0385 2233418.543 1117377.511 170 +-0.0375 13142088.03 4425056.559 175 +-0.0365 8621396.539 3805760.028 155 +-0.0355 13888917.77 5842563.898 164 +-0.0345 14293426.29 6784122.287 181 +-0.0335 9839575.822 3395114.352 168 +-0.0325 10823680.24 4198464.83 191 +-0.0315 17974537.6 8226050.005 172 +-0.0305 9697164.901 4273903.071 166 +-0.0295 5668665.004 2652683.68 156 +-0.0285 9317468.51 4615154.833 177 +-0.0275 2939105.992 1222169.55 152 +-0.0265 19178041.67 8505038.47 181 +-0.0255 4583379.97 1673888.851 161 +-0.0245 4915774.264 1976806.137 170 +-0.0235 18366778.67 8137484.819 202 +-0.0225 15910060.9 5712886.269 174 +-0.0215 10206991.62 5088704.804 187 +-0.0205 2968980.006 1345772.136 175 +-0.0195 9130444.935 2808754.473 177 +-0.0185 9354224.839 4146012.466 154 +-0.0175 13575825.2 4860417.541 161 +-0.0165 18239279.22 6478875.866 160 +-0.0155 8532975.445 4512093.73 160 +-0.0145 8461810.366 2912607.856 171 +-0.0135 23418381.91 8631751.438 167 +-0.0125 6819251.76 2921155.77 167 +-0.0115 9604301.533 3692253.966 174 +-0.0105 5506489.436 2440041.949 174 +-0.0095 5468345.663 2319780.187 159 +-0.0085 11390260.42 4653713.882 164 +-0.0075 6175195.116 2951817.014 177 +-0.0065 7564653.705 3479161.418 172 +-0.0055 13401721.11 5678522.593 178 +-0.0045 9329987.68 4265444.535 183 +-0.0035 8813465.005 4092806.326 155 +-0.0025 6827790.344 2795606.137 185 +-0.0015 3755681.031 1720434.828 172 +-0.0005 12331075.57 4052376.188 170 +0.0005 5163101.654 2400021.949 146 +0.0015 11901091.48 5439146.983 186 +0.0025 20242353.95 7280233.108 175 +0.0035 10659168.75 3824336.159 142 +0.0045 2688067.465 967014.2914 154 +0.0055 12720558.08 10063376.65 170 +0.0065 14220395.54 5360502.506 178 +0.0075 7513876.464 2890152.527 154 +0.0085 12941397.63 5516113.237 170 +0.0095 8647395.893 3314445.714 175 +0.0105 7225260.202 2684383.976 173 +0.0115 11582958.46 4569060.419 185 +0.0125 8743044.442 3229003.658 178 +0.0135 7394074.832 3060136.466 174 +0.0145 10075099.45 3625822.323 150 +0.0155 8336401.895 3990315.99 152 +0.0165 5496035.818 2273446.821 164 +0.0175 11607996.02 4240553.447 151 +0.0185 16868470.35 9706093.625 170 +0.0195 12441679.09 5184148.336 158 +0.0205 5466020.643 2720335.271 200 +0.0215 14689052.64 5669393.273 180 +0.0225 7063983.59 3837410.116 181 +0.0235 12927873.34 4007300.005 153 +0.0245 15155168.4 5357910.696 152 +0.0255 11502536.75 4230829.122 158 +0.0265 8023845.051 2939414.443 183 +0.0275 15131650.47 5388080.451 178 +0.0285 14253874.24 6701921.764 191 +0.0295 3093258.707 1296896.769 167 +0.0305 6535289.279 3438695.507 168 +0.0315 10300509.08 5339437.248 191 +0.0325 8479427.534 3401179.596 181 +0.0335 2959393.164 979328.4427 170 +0.0345 3354615.033 1502547.905 165 +0.0355 10540205.27 3775047.526 165 +0.0365 2046091.124 635872.3615 157 +0.0375 13017438.82 5524972.234 179 +0.0385 8954113.912 3251515.225 175 +0.0395 5456136.083 2494159.764 159 +0.0405 8231663.139 5512221.835 142 +0.0415 15101573.92 6778083.855 184 +0.0425 13700186.78 5763144.831 176 +0.0435 1684734.306 830890.0547 151 +0.0445 10258930.43 3552146.201 155 +0.0455 6522921.757 2394165.385 160 +0.0465 3426014.317 1786297.099 149 +0.0475 21018220.24 7962235.632 167 +0.0485 5167453.766 2272945.585 140 +0.0495 10021548.86 5161697.304 164 +0.0505 16588912.05 8587995.032 169 +0.0515 11896966.15 5183657.421 174 +0.0525 4600197.726 1983421.097 177 +0.0535 8055673.076 3266868.383 169 +0.0545 6369184.61 3020271.8 150 +0.0555 8163264.508 6154076.482 159 +0.0565 9445910.21 3338264.256 170 +0.0575 5747743.166 2905192.034 158 +0.0585 10411132.85 4696221.486 163 +0.0595 8138099.12 2753130.395 175 +0.0605 8902964.936 3246827.065 159 +0.0615 7090411.996 2423232.576 159 +0.0625 10549285.18 3566384.869 173 +0.0635 3432167.513 1357631.776 159 +0.0645 11774277.78 5431998.298 150 +0.0655 3820294.136 2188075.592 153 +0.0665 13239488.53 5539230.427 161 +0.0675 6984467.2 2349667.129 154 +0.0685 15992612.21 5381745.437 159 +0.0695 8191570.477 3413706.675 151 +0.0705 14158522.57 5236410.675 141 +0.0715 8367813.034 3844830.961 131 +0.0725 10686592.53 4079738.689 140 +0.0735 7614949.04 4527265.029 143 +0.0745 11338038.71 4349086.912 163 +0.0755 11100416.1 4274775.198 161 +0.0765 5491070.376 2027001.266 141 +0.0775 15963642.77 6461018.85 160 +0.0785 5302070.847 2133116.689 156 +0.0795 5417018.367 2450896.732 190 +0.0805 6272515.236 3892329.801 153 +0.0815 10671350.85 4483081.545 136 +0.0825 1321759.61 661669.4358 164 +0.0835 3689026.052 1778137.456 135 +0.0845 1133768.821 615107.4296 144 +0.0855 9368507.194 3823776.49 156 +0.0865 3442677.55 1494645.806 132 +0.0875 6017948.956 2840412.684 150 +0.0885 6044187.093 3940957.729 147 +0.0895 5730751.582 3590848.261 149 +0.0905 8624738.042 4444190.891 159 +0.0915 11848921.5 6533361.182 133 +0.0925 16989285.09 6936209.724 149 +0.0935 13499098.58 5401672.079 149 +0.0945 15360383.61 8145459.259 148 +0.0955 1792590.49 644795.2214 150 +0.0965 5546563.665 2603764.165 148 +0.0975 12418378.76 6240851.202 125 +0.0985 40740382.88 35700642.54 135 +0.0995 7094577.747 3030634.219 140 +0.1005 6104752.299 2777056.222 126 +0.1015 5178960.871 2732534.274 146 +0.1025 3340193.344 1535429.474 120 +0.1035 4133996.855 1693082.463 131 +0.1045 6146134.123 3438135.114 143 +0.1055 7580340.206 4509993.54 132 +0.1065 1182131.448 630542.9623 124 +0.1075 12980357.88 6900082.788 142 +0.1085 4187652.896 2425815.888 149 +0.1095 5139553.08 3136799.662 149 +0.1105 4628480.628 1842950.071 127 +0.1115 11144312.75 5256422.644 132 +0.1125 1075469.533 902419.463 115 +0.1135 7345447.604 2818449.299 141 +0.1145 8469795.488 5618734.412 145 +0.1155 2897701.657 2558142.657 101 +0.1165 3878696.838 1633440.423 128 +0.1175 1073274.895 484737.2002 117 +0.1185 4711425.312 1777467.418 115 +0.1195 2615390.812 991574.9073 146 +0.1205 5531731.247 3643497.276 117 +0.1215 10892309.64 5966019.731 117 +0.1225 6015831.945 3138968.048 137 +0.1235 2396016.197 1345357.345 122 +0.1245 5051155.718 3579409.83 109 +0.1255 8639006.182 3865838.899 101 +0.1265 5280743.492 2176052.225 134 +0.1275 1663890.119 919996.7803 139 +0.1285 5732164.162 3630650.12 106 +0.1295 5837012.263 2633413.86 119 +0.1305 3351144.153 3046355.045 119 +0.1315 12069065.85 4863739.009 106 +0.1325 2010293.756 1019128.579 136 +0.1335 6217837.544 3442508.12 101 +0.1345 5990694.629 3192971.384 131 +0.1355 11442433.6 4550781.091 99 +0.1365 2569925.625 1327811.165 140 +0.1375 8607888.817 4867843.211 102 +0.1385 3615715.598 1739685.159 105 +0.1395 1067888.049 618265.3781 118 +0.1405 3026716.999 2846694.892 120 +0.1415 4083470.434 3090769.313 113 +0.1425 1930297.654 946385.6559 99 +0.1435 7319556.757 5340129.353 99 +0.1445 7472521.147 3093808.333 106 +0.1455 1690185.185 1206925.669 123 +0.1465 1930146.983 1010103.507 111 +0.1475 3507595.065 1535717.755 115 +0.1485 2408927.442 1207016.977 119 +0.1495 1153359.829 443609.2725 112 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/rotated.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/rotated.dat new file mode 100644 index 0000000000..849b2cf169 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/rotated.dat @@ -0,0 +1,335 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: Sphere0 +# position: 0.0585 0 -0.0925 +# title: 4PI PSD monitor +# Ncount: 153447624 +# filename: rotated.dat +# statistics: X0=54.6874; dX=33.703; Y0=1.17881; dY=1.83374; +# signal: Min=0; Max=4.24593e+13; Mean=2.27916e+11; +# values: 1.84612e+15 1.45689e+13 1.46251e+08 +# xvar: Lo +# yvar: La +# xlabel: Longitude [deg] +# ylabel: Latitude [deg] +# zvar: I +# zlabel: Signal per bin +# xylimits: -180 180 -90 90 +# variables: I I_err N +# Data [Sphere0/rotated.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.659378217e-08 0.006241812911 13680.80034 64.61805682 0.9645867336 2.963828688e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52.62813065 68.07606865 72956410.87 1819417.439 11300124.34 142175574.4 596109.4168 9.295887077 0 0 0 0 0 0 0 0 0 0 1.187885978e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 734.0261049 17158084.82 6491410.344 10899292.87 664622000.4 4967592.758 22763005.65 12930984.47 2970775.025 296.2507727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25313.11709 2796313.21 10170890.53 263070921.3 23672288.83 15469341.77 31527693.27 86326746.12 1693283.8 16942760.03 1007741.254 0.5486814983 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7263.471721 23751369.38 11857444.87 27738507.78 41609881.21 325400672.3 201825936 83233646.68 6308412.727 655674022.1 2346005.452 46.6548958 0 0 0 0 0 0 0 4.161402869e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2512177263 15611963.51 22311470.57 54752360.44 171313183.3 1489853795 333299841.8 202014760.9 221567278.9 40410521.58 101448778 26741074.71 34455.83617 5.318038802e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13262.76278 32051309.81 348413976.3 432862148.7 4437150556 235179898.5 2258825009 432085388.1 2.175854097e+11 412174540.4 162209152.2 26925086.11 8307392.345 805.376417 0 0 0 0 0 0 0 0 1.028761518e+11 0 0 0 6.833924067e+10 0 0 1.382936189e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54578.832 2059505.661 882739676.8 389894000 4022732113 2466200328 2299056781 1.075803996e+11 1139956756 119453871.1 178614637.4 89851541.04 26078795.7 162368490.8 0 0 0 0 0 1.117554474e+11 0 0 0 0 0 0 1.384462788e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 106.2068047 9910553.184 460543992.4 596907593.8 199895613 413178272.4 1404601241 798210873.5 3.879363418e+10 2.859687569e+11 536135699.2 2.501359931e+10 1857946879 3.244878658e+10 259939.4762 34.43625768 1.465406842e+11 1.204297242e+11 0 0 0 0 0 2.049500116e+11 0 0 0 1.557514558e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006690289285 2633111.062 286850717.3 1.796290197e+10 1126336377 3641948092 1.507865752e+10 1.485569019e+10 4209039678 1180478120 8759230803 1.417021639e+11 3098004737 2.274442811e+11 7241554.325 0.1394439473 0 0 0 1.479463956e+11 0 0 0 0 0 0 0 1.557647152e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 649586.0275 339240153.8 126235242.7 73062489.7 9.408411785e+10 1.191717991e+11 2.253297027e+11 1.24415035e+11 8.920783754e+10 3.948522918e+10 1403336817 2.046631257e+11 2.231060358e+11 137646365.3 1.556684209e+11 154.9527302 0 0 0 0 0 0 1.541767473e+11 0 0 0 4.15998255e+10 6.777205682e+10 0 6.131954026e+10 0 0 7.934954953e+10 0 0 6.743217516e+10 0 1.001773038e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6735.82561 20019944.85 46637934.13 1949007350 9.724310988e+10 5.653051525e+10 2.832112271e+11 1.322615853e+11 3.205421587e+11 1.204232588e+11 4.262184715e+10 1.495923498e+11 154144958.4 2.08559494e+11 2.74889005e+11 2.431302207e+11 4.826592922e+10 2.098459142e+11 1.424865124e+11 0 2.713166592e+11 0 0 1.312335498e+11 0 1.472027528e+11 1.457086051e+11 3.013905001e+11 0 5.713325787e+10 0 0 1.157045993e+11 5.776286602e+10 1.258939219e+11 8.803241801e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12.07987978 8304908.657 1297619239 1656117541 1.573981956e+10 1.541635051e+10 1.830190812e+11 5.824164416e+10 7.424902545e+10 2.757413881e+11 1.415348194e+11 3.791360163e+11 4.938577036e+11 3.825913229e+11 2.806213973e+11 2.247937674e+11 4.815777576e+10 3.489185933e+11 3.461633974e+11 2.406683214e+11 4.85712862e+10 3.29946594e+11 0 0 1.172017597e+11 6.812881029e+10 3.536127316e+11 1.927859759e+11 1.69613677e+11 0 4.132220542e+10 1.43385958e+11 4.495489486e+11 0 0 0 6.073223484e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6858039.578 5428938.877 7083151773 6624004854 2.494761953e+10 1.261962764e+11 4.274710399e+11 2.465909363e+11 9.461407574e+11 3.7833849e+11 6.047062038e+11 2.899853622e+11 2.47840208e+11 6.261747093e+11 4.545031952e+11 7.709990286e+11 3.596379576e+11 2.825023159e+11 4.471274743e+11 8.853565357e+11 3.93251201e+11 4.662553786e+11 7.168036441e+11 5.519095874e+11 3.914992526e+11 2.892755874e+11 9.409719908e+10 5.048193197e+11 6.875821016e+11 3.372199295e+11 3.100403409e+11 1.932395761e+11 0 2.267116849e+11 6.153594947e+10 1.955465137e+11 2.632232859e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3023.571748 484261304.4 1403300042 8.269351819e+10 2.213582213e+11 4.415792543e+11 6.324108261e+12 7.396248676e+12 8.997828519e+12 8.688406679e+12 8.760599919e+12 1.046718295e+13 1.024508581e+13 1.16913621e+13 1.009864526e+13 9.120279843e+12 9.950559882e+12 9.373346076e+12 1.160195612e+13 1.194651036e+13 1.050449117e+13 1.320687804e+13 1.213341824e+13 9.288488287e+12 1.133228933e+13 1.085452063e+13 1.158687552e+13 1.097027285e+13 7.848637509e+12 9.256181612e+12 1.239654979e+13 9.838097423e+12 8.351809951e+12 7.477525944e+12 7.254733043e+12 7.066502418e+12 7.574523858e+12 4.441856629e+12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 415.914512 2839932.059 1027516646 1.16546619e+10 2.427068368e+11 1.339139242e+12 1.903784913e+13 2.222620989e+13 2.544398332e+13 2.353582407e+13 2.923731452e+13 3.086620944e+13 3.226719403e+13 3.462845448e+13 3.517956469e+13 3.317506315e+13 3.575079805e+13 4.081992797e+13 3.68412269e+13 3.497747107e+13 3.642966466e+13 4.245932868e+13 4.068397042e+13 3.293344302e+13 3.956910603e+13 3.798727018e+13 3.535445156e+13 3.489707366e+13 3.626711617e+13 3.221808058e+13 3.397410527e+13 3.361213107e+13 3.137881252e+13 3.02345875e+13 2.513857034e+13 2.575664535e+13 2.357026741e+13 1.203854916e+13 2.90432843e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 158.1187161 13127301.11 2159046902 3583393787 2.673132673e+10 3.329047692e+11 9.640902741e+12 9.941476938e+12 1.216006369e+13 1.112172978e+13 1.509439204e+13 1.332619732e+13 1.508373043e+13 1.351059374e+13 1.825969107e+13 1.70831555e+13 1.848350008e+13 1.711499675e+13 1.610476005e+13 1.670416193e+13 1.910470837e+13 1.527123705e+13 1.903355592e+13 1.814627358e+13 1.813798659e+13 1.643327393e+13 1.752086579e+13 1.57559195e+13 1.472248701e+13 1.632005001e+13 1.437188335e+13 9.57250862e+12 1.532195363e+13 1.523443317e+13 1.007572767e+13 8.474764668e+12 1.053504273e+13 3.995634259e+12 2.602287512e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1844.949262 6998073275 272325096.7 3158011136 1.519276895e+11 2.42835872e+11 4.459903699e+11 6.745162624e+11 5.933582259e+11 1.003698102e+12 8.784002435e+11 4.966676748e+11 5.264147093e+11 6.491839511e+11 8.210340782e+11 7.539155081e+11 0 2.902341099e+11 4.861968026e+11 2.317392007e+11 4.650551137e+11 7.337050459e+11 6.931783959e+11 3.116795937e+11 2.523678546e+11 3.517110243e+11 5.07715162e+11 5.581953757e+11 2.857744009e+11 4.218781435e+10 3.020769861e+11 2.732268419e+11 1.235269217e+11 3.872558134e+11 3.306415229e+11 1.688507169e+11 4.280279346e+11 0 6.923240054e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06074242352 28695315.81 1584483554 2312619471 1.032320201e+11 5.825913138e+10 3.513364179e+10 2.457317676e+11 5.488669226e+11 1.56697739e+11 1.417007673e+10 1.071932797e+11 2.519159019e+11 1.541342797e+11 3.494083306e+11 1.407508807e+11 1.921309787e+11 4.299707544e+11 1.39491457e+11 8.158470497e+11 1.654980154e+11 0 2.561242894e+11 2.020299146e+11 3.816453438e+11 3.388696754e+11 1.408177328e+11 1.194680218e+11 2.714487791e+11 0 2.087386837e+11 2.561325417e+11 1.874451299e+11 1.523347492e+11 6.348162854e+10 2.82270941e+11 2.073765256e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.005765847492 1535226951 16074244.08 4896262330 1.334332928e+10 3.275009762e+10 3.716542229e+10 2.999643498e+10 3.112126052e+11 1.340759595e+11 2.583875802e+10 2056744419 1213338062 2.052214641e+11 1.458294059e+11 1.471688883e+11 1.505842559e+11 4.274490952e+10 1.518208494e+11 3.937094085e+11 6.09924624e+10 0 1.811475002e+11 5.866766274e+10 0 1.540429351e+11 1.404408531e+11 1.391627333e+11 2.606795433e+11 5.719461751e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51.57720135 80842419.98 951190946.5 1209298119 2690902645 6.365507797e+10 9775029482 1.385476623e+10 8905886620 6616779446 2.127144492e+11 2.634156545e+10 6.158861816e+10 2409181.52 4.609919338e+11 1.361389373e+11 1.532449064e+11 0 1.59755505e+11 1.555999303e+11 6.457540905e+10 3.914021409e+10 0 0 5.824125087e+10 1.158049886e+11 1.218672173e+11 0 0 0 0 1.549261086e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 107533589.2 24638195.25 653844586.7 598451563.9 5786267828 1.431227415e+10 3776444506 1.640241898e+10 2.879497717e+10 1.581484e+10 610296975.8 3533998785 2.837637897e+11 138793648 1.165134132e+11 2.279030049e+11 0 0 0 0 0 0 0 0 1.312492547e+11 0 1.428287745e+11 0 0 0 1.431972113e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.935213527e-06 867665.9846 52496144.2 203646496.4 7213387452 5999385455 7.149563117e+10 6.154243391e+10 1.542414749e+11 1.801217278e+11 832009621.2 1.577020403e+10 1.494236327e+11 176358004.4 3827418.202 0.0007429769436 0 2.701545174e+11 0 0 0 0 0 0 0 0 0 1.461928804e+11 0 0 0 0 0 1.484291182e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4054412.791 999982892.7 125956703.9 242897915.3 854125930.3 699027285.9 1256517912 1154480811 463443041.5 2.456309117e+11 2702743270 1.481557209e+11 8522029.368 5047.500337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 190921.493 9906798.522 30750534.52 174006525.8 222550947.9 622258342.1 765369340.3 220027333.2 827096022 254120282.3 216272102.4 45592939.8 49622813.81 3044.192751 1.038961222e+11 0 0 0 0 0 8.674122477e+10 0 0 0 0 0 0 7.980380058e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.40498326 148061.8507 17776157.8 1068437818 301275420.8 399768725.7 737779513.3 106057055.2 209446002.5 11177106.18 1.510926257e+11 8254799.872 2672.719284 9.41119357e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 854422.8261 12858584.4 19923292.25 45828670.15 188671314.1 130762328.1 1.441810655e+11 68554924.3 39922404.8 127843685.4 2874676.802 1.529039276e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2833.763027 26929536.03 37551029.85 48375106.3 488295235.6 994514017.2 18283112.88 1504430.444 15263226.71 27978.98061 236745973.2 9.674322262 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.448853881 8543.810741 16113727.19 94955980.51 3894659.916 20566822.76 12807800.11 7808569.246 1.313019874 0.0001550498054 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.831901342e-08 55099437.5 131957.99 28654572.38 819199.3626 19423984.87 265733.8339 0.3564594548 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01222940645 0.2839412953 0.05291542209 5.788281083 20895.02658 0.6745794953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [Sphere0/rotated.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.914931056e-08 0.005144007458 13889.00895 61.91341029 0.9713351617 3.42226703e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54.61365688 49.73636587 66164917.61 1179711.523 10524544.93 141595381.8 533652.2813 9.242683317 0 0 0 0 0 0 0 0 0 0 1.187885978e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 730.9731424 16256012.16 5951519.93 7374736.651 659322985 3779168.613 18320682.01 9046061.861 2553175.808 302.0401343 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27729.08057 2051179.646 7251310.198 225464973.5 14436389.5 11481860.25 12425337.91 69252840.21 1007211.099 15008331.53 749725.3708 0.6335618214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4531.778926 23032830.18 7599422.136 12114485.69 16354444.91 234298712.7 120374367.2 53702313.31 3116293.501 506752162.8 1799919.212 45.525611 0 0 0 0 0 0 0 4.161402869e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2512177263 15644871.85 15740094.46 37151795.72 88167488.89 1153923049 173805861.3 110227034.6 89279130.81 17439951.37 49851319.08 17408388.15 30072.44225 6.140558442e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10786.8752 16484076.81 315026744.9 174784885.9 3963739973 99046720.79 1783267415 292008650.5 1.630762396e+11 258413783.4 91751173.58 14198671.48 5286441.315 487.7732622 0 0 0 0 0 0 0 0 1.028761518e+11 0 0 0 6.833924067e+10 0 0 1.382936189e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54823.47654 936041.5116 745154828.6 283872514.7 2794822298 2163467320 1678467235 1.054714321e+11 859784916.6 38075335.42 84151319.59 56700910.94 25418146.59 163277740.9 0 0 0 0 0 1.117554474e+11 0 0 0 0 0 0 1.384462788e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 130.0762393 7684406.591 392901467 502345140.6 131599449.2 126069362.1 614592250.5 221063544.2 3.665869144e+10 2.018341731e+11 214007019.4 2.467862644e+10 1476285283 3.245798369e+10 152998.7688 42.17562998 1.465406842e+11 1.204297242e+11 0 0 0 0 0 1.707830105e+11 0 0 0 1.557514558e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006101520787 2037244.975 229369128.9 1.140497929e+10 616029680.6 1467322050 9279764314 1.042681359e+10 2402931290 447594401.5 7977715177 1.412678054e+11 2156879608 1.685520971e+11 6548614.217 0.1707832592 0 0 0 1.479463956e+11 0 0 0 0 0 0 0 1.557647152e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 658228.6012 338795079.2 72201907.83 23897203.05 7.852951072e+10 8.881481871e+10 1.667907008e+11 1.064226676e+11 7.387882979e+10 1.985213154e+10 612792758.6 1.4701684e+11 1.59966533e+11 120192071.2 1.559223392e+11 120.6584609 0 0 0 0 0 0 1.541767473e+11 0 0 0 4.15998255e+10 6.777205682e+10 0 6.131954026e+10 0 0 7.934954953e+10 0 0 6.743217516e+10 0 1.001773038e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6839.824149 12125575.4 24614810.8 1153292227 7.155526511e+10 3.427566405e+10 1.819042974e+11 1.06247768e+11 2.168318859e+11 8.204554744e+10 4.099706362e+10 1.485789829e+11 74295600.28 1.476903581e+11 1.947826276e+11 1.76535406e+11 4.826592922e+10 1.583298823e+11 1.424865124e+11 0 1.960576717e+11 0 0 1.312335498e+11 0 1.472027528e+11 1.457086051e+11 2.131545807e+11 0 5.713325787e+10 0 0 8.385156957e+10 5.776286602e+10 1.258939219e+11 8.803241801e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10.07470031 6096846.508 996755425.1 681730224.7 1.15897853e+10 6746897372 9.137907184e+10 1.769958833e+10 2.102496529e+10 1.629297095e+11 1.268966162e+11 1.829241543e+11 2.545282913e+11 2.223653999e+11 1.730424325e+11 1.335787514e+11 4.815777576e+10 2.175509297e+11 1.91527865e+11 1.786989808e+11 4.85712862e+10 1.90448935e+11 0 0 8.287627712e+10 6.812881029e+10 1.892133836e+11 1.560193961e+11 1.461005505e+11 0 4.132220542e+10 1.43385958e+11 2.418412934e+11 0 0 0 6.073223484e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6937632.841 3136381.336 6833737927 3704545941 1.361423689e+10 8.564467097e+10 1.767709516e+11 4.999692895e+10 2.870553334e+11 2.188043978e+11 2.368085367e+11 1.690562532e+11 1.621277723e+11 2.874979596e+11 2.538772714e+11 3.105036332e+11 2.336722856e+11 1.832537468e+11 2.582224273e+11 3.621882613e+11 1.886990918e+11 2.425469248e+11 3.009405007e+11 2.760575735e+11 2.123685794e+11 1.553000761e+11 6.774230108e+10 2.589138068e+11 2.951627718e+11 1.999473093e+11 2.19234966e+11 1.713254088e+11 0 1.752119757e+11 6.153594947e+10 1.689279172e+11 1.869326804e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2867.568763 479334042.3 898509760 7.802376567e+10 1.572136333e+11 1.851424607e+11 8.215126231e+11 4.112108643e+11 9.365942587e+11 9.89763671e+11 1.030648546e+12 1.112210474e+12 1.10320199e+12 1.19502128e+12 1.085029872e+12 1.023583253e+12 1.064742847e+12 1.028491328e+12 1.179509426e+12 1.184930244e+12 1.10740635e+12 1.241566224e+12 1.207519428e+12 1.034793735e+12 1.149127224e+12 1.103298151e+12 1.169487562e+12 1.150960375e+12 9.322686778e+11 1.039210817e+12 1.243371675e+12 1.068980482e+12 1.017440694e+12 9.151811087e+11 9.597904839e+11 9.241531755e+11 9.332111377e+11 7.472033521e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350.0409415 2194669.632 643903512.3 4772262090 1.515465004e+11 3.902380588e+11 1.447159095e+12 5.403681589e+11 1.469241235e+12 1.652248041e+12 1.890444993e+12 1.906089046e+12 1.972338751e+12 2.039966073e+12 2.036180109e+12 1.985916222e+12 2.072655426e+12 2.180131665e+12 2.096071635e+12 2.034063479e+12 2.066698297e+12 2.253613222e+12 2.186318665e+12 1.971025746e+12 2.171970493e+12 2.086525351e+12 2.021418356e+12 2.01467141e+12 2.050602903e+12 1.956819851e+12 2.030101258e+12 1.993670943e+12 1.933168709e+12 1.871293795e+12 1.723583877e+12 1.768961101e+12 1.683357109e+12 1.171245055e+12 1.881463861e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 160.5466263 10895800.13 1475538594 1578864721 7445628603 1.335989073e+11 1.027751715e+12 3.313797041e+11 1.077372533e+12 1.140730769e+12 1.351885991e+12 1.229050068e+12 1.342353942e+12 1.265205684e+12 1.497712459e+12 1.44590645e+12 1.486485101e+12 1.432899846e+12 1.381262169e+12 1.401303912e+12 1.494496344e+12 1.34808824e+12 1.502256133e+12 1.470951527e+12 1.468090117e+12 1.395742306e+12 1.45701471e+12 1.374644383e+12 1.320606159e+12 1.386288997e+12 1.276986768e+12 1.026208625e+12 1.356335479e+12 1.352765167e+12 1.10312762e+12 9.691295847e+11 1.133275995e+12 6.707081161e+11 1.814053215e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1380.392792 6983235653 122266971.1 1452141636 1.413650569e+11 1.252219553e+11 2.172048439e+11 2.274093717e+11 2.227740208e+11 3.279800708e+11 3.517742395e+11 2.353105574e+11 2.469468551e+11 3.037538993e+11 3.082771507e+11 3.294924005e+11 0 1.914591272e+11 2.516180596e+11 1.81232391e+11 2.009343836e+11 3.153118364e+11 2.799037619e+11 2.042925265e+11 1.881054264e+11 2.122086813e+11 2.093010131e+11 2.638741966e+11 2.035953774e+11 4.218781435e+10 1.898018831e+11 1.851596989e+11 9.138790122e+10 2.119798635e+11 1.933885581e+11 1.256589046e+11 2.480418879e+11 0 6.923240054e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05525350056 15686418.99 1257587112 1192982018 1.003702945e+11 2.399762222e+10 1.129978984e+10 1.577615126e+11 2.649845538e+11 8.723181408e+10 9193769502 9.68787768e+10 1.743095114e+11 1.540168962e+11 2.183099539e+11 1.440265494e+11 1.635177779e+11 2.482636576e+11 1.39491457e+11 3.36754449e+11 1.433551682e+11 0 1.649804109e+11 1.759631018e+11 2.081942595e+11 2.016737705e+11 1.007239702e+11 9.203743556e+10 1.574174421e+11 0 1.56739554e+11 1.859167786e+11 1.479405517e+11 1.523347492e+11 6.348162854e+10 1.996150389e+11 1.466466699e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004224370568 1509543977 10706055 3438841620 1.039876264e+10 1.571440055e+10 2.261917407e+10 1.066121444e+10 2.078214195e+11 1.13847593e+11 1.434825666e+10 1798630918 1135873572 1.514057946e+11 1.462651204e+11 1.508032353e+11 1.097630319e+11 4.274490952e+10 1.518208494e+11 2.302385724e+11 6.09924624e+10 0 1.589771446e+11 5.866766274e+10 0 1.540429351e+11 1.404408531e+11 1.391627333e+11 1.843297286e+11 5.719461751e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52.76259025 52748420.54 825594596.8 658342377.3 2087335225 5.150901809e+10 3847414925 4414096386 5098721984 3722751136 1.543126797e+11 1.546101827e+10 6.076509814e+10 1355813.33 2.669846698e+11 1.406035639e+11 1.532449064e+11 0 1.132107575e+11 1.555999303e+11 6.457540905e+10 3.914021409e+10 0 0 5.824125087e+10 1.158049886e+11 9.268687168e+10 0 0 0 0 1.549261086e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124169093.4 17509329.99 592748425.4 364196401.7 2896142159 6506000831 1598001995 7004061200 1.836289387e+10 1.376277202e+10 191954287.6 2670343312 1.96535275e+11 112952273 1.168808039e+11 1.776940909e+11 0 0 0 0 0 0 0 0 1.312492547e+11 0 1.428287745e+11 0 0 0 1.431972113e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.935213527e-06 681568.7222 34091312.44 136398536.1 6312947125 2869454934 6.559401533e+10 5.914917422e+10 1.53495317e+11 1.577828853e+11 480215709.6 1.466569191e+10 1.494487579e+11 171853970.9 3155992.332 0.0007429769436 0 1.9106321e+11 0 0 0 0 0 0 0 0 0 1.461928804e+11 0 0 0 0 0 1.484291182e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3725784.771 926460206.6 111702792.8 176709579.2 441414642 212125851.1 678647753.2 457305410.2 162525087.2 1.677553145e+11 2640987562 1.481912163e+11 6025698.297 4247.167109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 195619.5204 5595459.276 22719092.34 99006329.85 117124341.9 311207892.8 382412431.5 70963701.55 407503177.9 228191008.1 164150046 29838211.84 49726270.19 3122.775833 1.038961222e+11 0 0 0 0 0 8.674122477e+10 0 0 0 0 0 0 7.980380058e+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24.82064252 104454.2439 10010871.18 838101313.8 115883111.5 306966479.2 508322052.1 32330125.83 95095460 8330549.204 1.511700736e+11 4079153.682 1999.670997 9.41119357e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 853564.1571 9237566.146 10892206.41 26715384.2 109929920.9 66935664.05 1.439215136e+11 31039389.42 20673730.66 110543271 1693518.311 1.555178593e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3168.24338 27082034.51 34160572.9 45120345.03 379606490.8 934548386 12704889.68 859063.5961 7170011.262 17236.76453 236985413.8 10.44946233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.130729958 8151.127948 10206876.76 87275239.04 2879234.206 15206736.44 10477960.15 5549401.525 0.7019643001 0.0001534621105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.918683136e-08 55475122.49 91403.05758 20742875.29 586641.4365 16546923.91 260075.9656 0.370990569 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01412130221 0.2992875496 0.04228430595 5.858870944 18125.58981 0.7789190414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [Sphere0/rotated.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 10 31 25 21 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 87 240 321 302 210 103 12 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 16 168 419 593 698 722 625 401 160 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 141 503 923 1236 1363 1448 1154 920 478 125 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 388 987 1632 2292 2613 2563 2147 1486 846 358 60 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 1 208 809 1730 2782 3762 4250 4225 3699 2551 1516 664 171 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43 417 1317 2989 4882 6616 7340 7269 6004 4143 2285 1065 356 31 0 0 0 0 0 0 0 0 1 0 0 0 1 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 104 666 2005 4372 7768 10632 11725 11412 9727 6460 3274 1452 490 86 0 0 0 0 0 1 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 2 188 934 2694 6328 11947 16077 17935 17351 14364 9328 4586 1890 707 161 2 1 1 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 285 1172 3503 8365 16056 21554 24046 22857 18793 12287 5629 2310 771 235 2 0 0 0 1 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 30 346 1323 4003 10193 19904 27836 31868 30145 23648 15020 6684 2527 948 263 20 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 387 1419 4277 11812 24193 35338 42867 41428 29483 17175 7236 2745 903 272 34 1 2 1 0 2 0 0 1 0 1 1 2 0 1 0 0 2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 361 1396 4248 12137 27729 45828 66512 63117 38594 19177 7212 2510 891 248 35 1 3 4 2 1 4 0 0 2 1 4 2 2 0 1 1 4 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 42 342 1181 3721 11554 30513 71197 195778 169714 56819 19596 6391 2206 790 266 33 3 3 3 6 5 4 6 4 4 4 2 4 6 3 2 2 0 2 1 2 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 36 256 827 2960 10308 37227 570559 10312482 4306874 114511 18614 5143 1728 607 263 124 102 98 110 117 102 133 115 93 110 114 112 103 83 91 111 98 76 78 64 67 76 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 184 736 2587 10030 48317 2665854 50437289 22705556 239242 22367 5068 1790 775 477 351 338 403 350 339 355 402 395 316 375 382 349 342 361 310 320 325 302 300 240 241 223 121 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 199 710 2279 8383 36367 1359757 34259164 14294831 195002 19853 4638 1398 558 286 180 176 162 154 162 187 147 182 173 176 159 165 149 144 161 146 101 145 145 94 88 98 41 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 218 819 2571 8360 25625 116685 1071917 661625 75499 16971 4927 1700 575 191 25 0 3 4 2 6 6 7 3 2 3 7 5 2 1 3 3 2 4 4 2 3 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 38 261 860 2848 8285 21604 42224 82143 76909 36648 14225 5094 1755 558 199 19 2 3 1 6 2 0 3 2 4 3 2 2 4 0 2 2 2 1 1 2 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 20 242 875 2753 7558 17944 29264 37810 36194 25006 11959 4665 1804 617 167 20 2 1 1 3 1 0 2 1 0 1 1 1 2 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 21 227 861 2513 6442 14345 22241 25967 24715 18801 9776 4185 1719 642 160 15 1 0 2 1 1 1 0 0 1 1 2 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 3 178 733 2135 5104 10415 16658 19205 18313 14041 7543 3391 1518 557 157 9 0 0 0 0 0 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 1 124 581 1639 3682 6857 10550 12235 11997 8993 5307 2665 1231 450 111 1 0 2 0 0 0 0 0 0 0 0 0 1 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 70 366 1181 2612 4495 6322 7390 7214 5678 3596 1986 914 322 47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 267 817 1844 2922 3993 4552 4475 3673 2508 1392 693 201 18 1 0 0 0 0 0 1 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 8 110 492 1122 1956 2571 2939 2873 2434 1621 910 469 109 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 32 255 653 1074 1600 1772 1807 1426 985 595 223 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 81 330 618 802 980 931 915 544 278 93 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 109 279 433 470 472 422 243 107 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 73 142 201 168 151 63 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 9 27 31 18 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/time.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/time.dat new file mode 100644 index 0000000000..c993bb1537 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/time.dat @@ -0,0 +1,360 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: tof +# position: 49.4198 0 -35.0741 +# title: TOF [s] monitor +# Ncount: 153447624 +# filename: time.dat +# statistics: X0=0.0547023; dX=0.0217818; +# signal: Min=0; Max=6.994e+07; Mean=8.03108e+06; +# values: 2.40932e+09 8.17576e+07 44025 +# xvar: t +# yvar: (I,I_err) +# xlabel: TOF [s] +# ylabel: Intensity [n/s/bin] +# xlimits: 0 0.15 +# variables: t I I_err N +0.00025 0 0 0 +0.00075 0 0 0 +0.00125 0 0 0 +0.00175 0 0 0 +0.00225 0 0 0 +0.00275 0 0 0 +0.00325 0 0 0 +0.00375 0 0 0 +0.00425 0 0 0 +0.00475 0 0 0 +0.00525 0 0 0 +0.00575 0 0 0 +0.00625 0 0 0 +0.00675 0 0 0 +0.00725 0 0 0 +0.00775 0 0 0 +0.00825 0 0 0 +0.00875 0 0 0 +0.00925 0 0 0 +0.00975 0 0 0 +0.01025 0 0 0 +0.01075 0 0 0 +0.01125 0 0 0 +0.01175 0 0 0 +0.01225 0 0 0 +0.01275 0 0 0 +0.01325 0 0 0 +0.01375 0 0 0 +0.01425 0 0 0 +0.01475 0 0 0 +0.01525 116101.9706 77519.01911 98 +0.01575 2141918.092 1333249.949 342 +0.01625 1750380.484 707798.2536 512 +0.01675 5225655.511 1181691.451 795 +0.01725 5184061.695 1508459.774 928 +0.01775 5791734.328 1489963.063 1020 +0.01825 4330670.709 812774.1455 1139 +0.01875 10107711.18 2951058.936 1163 +0.01925 11737280.09 4144956.71 1154 +0.01975 10480005.1 2199522.077 1248 +0.02025 9968948.564 2872113.736 1289 +0.02075 16330910.8 4227181.112 1280 +0.02125 12847856.77 2902324.005 1335 +0.02175 13340794 2967108.444 1230 +0.02225 9798326.792 3043236.686 1221 +0.02275 6693241.388 1615083.871 1225 +0.02325 8727626.431 2211742.191 1124 +0.02375 8238434.434 1721298.408 1144 +0.02425 11501976.27 2274697.069 1163 +0.02475 15363442.79 4313516.715 1063 +0.02525 10869320.22 2768459.955 1026 +0.02575 5490441.01 1526860.618 1038 +0.02625 10513340.89 3120923.764 963 +0.02675 9820503.204 2293175.294 1002 +0.02725 6759629.432 1867275.162 894 +0.02775 26705319.58 9057560.08 834 +0.02825 6994144.891 1817073.935 811 +0.02875 11617764.1 3076754.257 774 +0.02925 10249036.86 3622550.751 718 +0.02975 9838684.716 2783584.948 656 +0.03025 7856643.328 1949377.016 702 +0.03075 11638553.81 2995750.208 641 +0.03125 14232743.93 4646774.187 609 +0.03175 16044693.68 3982933.82 597 +0.03225 13380124.84 3949293.844 549 +0.03275 9986931.067 2926113.801 488 +0.03325 12328059.37 3967129.317 519 +0.03375 8611757.92 2132049.458 451 +0.03425 7618749.571 2210969.438 426 +0.03475 16748098.69 6830420.461 366 +0.03525 14415790.81 3455142.88 371 +0.03575 7673904.815 2788526.914 286 +0.03625 7373652.298 2308271.261 261 +0.03675 10021548.28 4781284.544 247 +0.03725 10397112.75 3115994.338 194 +0.03775 6275073.408 2343435.857 135 +0.03825 15826225.17 5649610.052 165 +0.03875 17125078.01 6227392.775 216 +0.03925 20149051.08 5667657.61 258 +0.03975 36123476.83 13771797.2 272 +0.04025 22529436.67 6401570.24 269 +0.04075 39022311.18 8166798.263 262 +0.04125 28184694.14 8562105.244 228 +0.04175 20398012.14 5178540.223 261 +0.04225 27000126.78 6796685.089 218 +0.04275 27418298.27 5574609.141 215 +0.04325 50428554.38 13394381.14 193 +0.04375 29434305.32 8187822.508 192 +0.04425 33798336.82 7791331.228 186 +0.04475 23647062.29 7154280.589 202 +0.04525 28312102.08 7999558.762 181 +0.04575 31486294.44 8961627.982 160 +0.04625 27919191.92 7534368.931 163 +0.04675 25414963.95 6646127.735 164 +0.04725 28461904.02 7030263.038 145 +0.04775 29703005.91 7200504.161 157 +0.04825 35493334.88 9111164.456 135 +0.04875 34189998.83 8856920.193 128 +0.04925 30288033.52 7897256.288 108 +0.04975 17847834.38 4928008.503 140 +0.05025 28378768.63 7738574.452 105 +0.05075 69939969.45 36944312.63 112 +0.05125 24626846.64 7247915.771 105 +0.05175 13345271.52 3493803.969 122 +0.05225 30452590.59 11073500.56 90 +0.05275 43762322.07 12804319.94 110 +0.05325 22227885.03 6409246.93 76 +0.05375 27266701.13 9824004.747 97 +0.05425 27534293.6 7255722.181 87 +0.05475 32101552.72 9051048.457 96 +0.05525 24959160.89 7423796.047 79 +0.05575 26220283.09 7926945.368 69 +0.05625 29963436.32 9953903.804 73 +0.05675 19394126.67 5964476.014 67 +0.05725 17091309.12 5400938.239 50 +0.05775 12624867.46 3765618.198 49 +0.05825 15997247.62 5943639.96 45 +0.05875 10076616.15 4303963.258 38 +0.05925 13562829.36 5081786.266 45 +0.05975 9419984.849 3844948.193 39 +0.06025 7796811.376 2736868.842 52 +0.06075 23213412.9 8432078.578 58 +0.06125 13275549.42 5303570.858 61 +0.06175 18121412.48 6155621.913 45 +0.06225 12199549.02 5679139.095 50 +0.06275 13576251.41 4788283.048 46 +0.06325 18783648.86 5612517.843 51 +0.06375 15954464.16 6741849.729 37 +0.06425 22143841.2 7633247.434 60 +0.06475 8550325.945 3489441.064 39 +0.06525 8574651.599 3942799.376 36 +0.06575 22897468.3 7434253.62 50 +0.06625 12507089.32 5208481.363 29 +0.06675 16226082.89 6142508.293 31 +0.06725 4196078.823 2360687.311 23 +0.06775 9547409.928 3755507.031 28 +0.06825 2668260.074 1532900.669 28 +0.06875 4659080.737 1981480.295 38 +0.06925 16397277.66 12420571.98 29 +0.06975 22435411.74 8781826.969 37 +0.07025 12046935.37 4798743.303 28 +0.07075 11583550.39 4538922.691 26 +0.07125 6639192.878 3901659.638 23 +0.07175 13679160.62 6063327.943 27 +0.07225 9023970.914 3773431.201 26 +0.07275 5955028.849 3122620.328 24 +0.07325 5697923.364 2840297.69 23 +0.07375 18607623.89 6809748.133 27 +0.07425 7522495.109 3230769.682 32 +0.07475 7331605.299 4020637.245 13 +0.07525 9872019.371 5537996.585 28 +0.07575 7259276.064 2498838.181 17 +0.07625 2309184.701 1672806.736 13 +0.07675 15639847.77 8468607.474 13 +0.07725 1947811.714 1324718.594 9 +0.07775 3371441.269 2150170.313 8 +0.07825 10796555.61 5949960.98 18 +0.07875 8561765.33 4177188.204 20 +0.07925 3852698.446 2193583.355 13 +0.07975 2989848.758 2870558.544 9 +0.08025 1421074.38 843820.794 18 +0.08075 12727767.59 8648787.348 18 +0.08125 5547412.835 3389194.008 14 +0.08175 7257570.428 3801612.071 11 +0.08225 11190183.08 5736776.375 15 +0.08275 6377234.728 3102157.107 15 +0.08325 9017891.157 3777616.831 17 +0.08375 8956971.043 4864521.704 13 +0.08425 7716258.868 3755018.274 9 +0.08475 9446046.672 5732131.503 11 +0.08525 10646713.34 5104887.406 18 +0.08575 932360.9847 943507.8877 11 +0.08625 4384593.206 3127103.501 13 +0.08675 5493663.617 5244960.788 12 +0.08725 4330908.624 3458326.154 6 +0.08775 11439947.05 9352057.341 9 +0.08825 3040918.558 2024030.071 9 +0.08875 7498816.06 4061818.064 10 +0.08925 5883544.551 2543445.017 12 +0.08975 5074866.111 3476683.595 10 +0.09025 2726770.259 2795739.444 5 +0.09075 7137282.15 5402742.129 10 +0.09125 2835129.349 3103320.887 5 +0.09175 5866299.522 4637386.413 5 +0.09225 3610609.466 2971739.062 8 +0.09275 4845997.252 2828790.693 14 +0.09325 102324.9432 98411.36013 8 +0.09375 4229888.417 2324342.34 7 +0.09425 5952196.805 5123667.114 5 +0.09475 23840386.3 16076283.66 6 +0.09525 2540953.172 1602182.889 7 +0.09575 1824208.123 1656851.856 8 +0.09625 4434401.164 3635445.711 4 +0.09675 5677395.22 5984463.724 6 +0.09725 2606194.547 2585459.85 5 +0.09775 2219318.569 2391580.338 3 +0.09825 250187.5196 189741.4136 7 +0.09875 6899912.876 5058272.371 9 +0.09925 1768615.019 1817056.336 6 +0.09975 3719581.797 2831782.473 6 +0.10025 2965040.807 3199370.06 6 +0.10075 15963.85087 14030.7914 3 +0.10125 2983306.239 2155190.063 6 +0.10175 11913858.32 8758567.751 9 +0.10225 13284400.3 6351269.655 16 +0.10275 320756.3491 357713.7757 4 +0.10325 566238.5865 604440.3132 3 +0.10375 121.0063616 148.2019208 2 +0.10425 252722.0247 282551.8133 4 +0.10475 5788511.737 4524716.566 7 +0.10525 70453.05011 79607.82783 3 +0.10575 455584.6727 523144.1592 3 +0.10625 2723306.84 2047550.328 6 +0.10675 7909063.625 7518348.454 5 +0.10725 25331.9062 29085.98681 3 +0.10775 1987497.688 1256376.717 6 +0.10825 3828271.222 2636075.188 6 +0.10875 217007.2286 195615.9328 4 +0.10925 1835973.121 1366567.016 7 +0.10975 8239474.538 6792103.624 3 +0.11025 23.6034949 28.90825932 2 +0.11075 4129853.222 3795858.542 3 +0.11125 50.15428105 56.07180223 4 +0.11175 5449123.967 6673786.466 2 +0.11225 1471339.294 1471339.294 1 +0.11275 692897.5519 848622.7231 2 +0.11325 823967.308 662827.8838 6 +0.11375 2279936.635 2792340.701 2 +0.11425 0 0 0 +0.11475 24357.92419 18076.12215 2 +0.11525 34034.66086 39291.1865 3 +0.11575 1522.635006 1714.863761 3 +0.11625 325111.0839 371841.8541 3 +0.11675 2682926.882 2567931.703 5 +0.11725 29462.97871 29462.97871 1 +0.11775 1358987.63 1368280.81 3 +0.11825 0 0 0 +0.11875 1497564.384 1712817.452 3 +0.11925 509374.4152 623853.7026 2 +0.11975 3138521.128 3138521.128 1 +0.12025 3148058.774 3519633.557 4 +0.12075 0 0 0 +0.12125 2282509.28 2551284.19 4 +0.12175 490161.9008 513199.7489 7 +0.12225 1863774.836 2142781.919 3 +0.12275 5744.11752 6877.764549 2 +0.12325 77742.00864 87861.33835 3 +0.12375 1926330.272 2359263.121 2 +0.12425 1.166566279e-06 1.166566279e-06 1 +0.12475 875.7403229 875.7403229 1 +0.12525 637220.8353 710908.9913 4 +0.12575 26.22437203 26.22437203 1 +0.12625 28.76147285 28.76147285 1 +0.12675 5.047938419e-16 6.182201244e-16 2 +0.12725 2961602.099 3419441.039 3 +0.12775 0 0 0 +0.12825 294286.8371 323777.6826 3 +0.12875 7.141413399e-10 8.746409435e-10 2 +0.12925 0 0 0 +0.12975 670.1558256 670.1558256 1 +0.13025 2622192.162 2622192.162 1 +0.13075 3911.065646 3911.065646 1 +0.13125 898238.2354 1100112.672 2 +0.13175 0.006969452823 0.00751516765 2 +0.13225 20930.66377 20930.66377 1 +0.13275 82510.28414 91955.19024 4 +0.13325 0 0 0 +0.13375 0 0 0 +0.13425 4431.525326 4431.525326 1 +0.13475 0 0 0 +0.13525 192.0600153 192.0600153 1 +0.13575 9.362942448e-23 9.362942448e-23 1 +0.13625 0 0 0 +0.13675 0 0 0 +0.13725 0 0 0 +0.13775 0 0 0 +0.13825 0 0 0 +0.13875 0 0 0 +0.13925 0 0 0 +0.13975 0 0 0 +0.14025 0 0 0 +0.14075 0 0 0 +0.14125 0 0 0 +0.14175 0 0 0 +0.14225 0 0 0 +0.14275 0 0 0 +0.14325 0 0 0 +0.14375 0 0 0 +0.14425 0 0 0 +0.14475 0 0 0 +0.14525 0 0 0 +0.14575 0 0 0 +0.14625 0 0 0 +0.14675 0 0 0 +0.14725 0 0 0 +0.14775 0 0 0 +0.14825 0 0 0 +0.14875 0 0 0 +0.14925 0 0 0 +0.14975 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/wavelength.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/wavelength.dat new file mode 100644 index 0000000000..3008898616 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/wavelength.dat @@ -0,0 +1,360 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: wavelength +# position: 49.4198 0 -35.0741 +# title: Wavelength [Angs] monitor +# Ncount: 153447624 +# filename: wavelength.dat +# statistics: X0=3.58133; dX=1.42582; +# signal: Min=0; Max=5.79383e+07; Mean=8.03108e+06; +# values: 2.40932e+09 8.17576e+07 44025 +# xvar: L +# yvar: (I,I_err) +# xlabel: Wavelength [Angs] +# ylabel: Intensity [n/s/bin] +# xlimits: 0.5 10 +# variables: L I I_err N +0.5158333333 0 0 0 +0.5475 0 0 0 +0.5791666667 0 0 0 +0.6108333333 0 0 0 +0.6425 0 0 0 +0.6741666667 0 0 0 +0.7058333333 0 0 0 +0.7375 0 0 0 +0.7691666667 0 0 0 +0.8008333333 0 0 0 +0.8325 0 0 0 +0.8641666667 0 0 0 +0.8958333333 0 0 0 +0.9275 0 0 0 +0.9591666667 0 0 0 +0.9908333333 126.9914284 120.9974345 39 +1.0225 1667527.398 1258696.376 292 +1.054166667 1190102.603 492024.283 447 +1.085833333 4182244.714 1151504.903 679 +1.1175 5449124.536 1275061.64 846 +1.149166667 5672995.566 1712682.749 963 +1.180833333 3954801.302 873998.3849 1050 +1.2125 6169398.12 1310832.913 1106 +1.244166667 13055004.89 4522282.244 1136 +1.275833333 9745189.661 2361889.678 1164 +1.3075 8307791.642 2002197.745 1237 +1.339166667 11029199.58 2987520.703 1201 +1.370833333 17359205.62 4571458.682 1305 +1.4025 9679932.418 2066464.394 1236 +1.434166667 15197557.88 3408849.662 1193 +1.465833333 8099703.459 2668805.899 1172 +1.4975 6063555.802 1370241.266 1153 +1.529166667 8311339.995 2185533.039 1124 +1.560833333 10029089.43 1875360.09 1089 +1.5925 9419551.328 2143485.527 1139 +1.624166667 16493807.6 4490048.128 990 +1.655833333 9661658.325 2473595.22 1002 +1.6875 6051420.564 1605279.465 1011 +1.719166667 9759850.076 3076497.407 922 +1.750833333 8982141.918 2241853.13 962 +1.7825 6815953.731 1881867.147 879 +1.814166667 25063580.94 8880027.334 819 +1.845833333 8883697.396 2558975.7 769 +1.8775 11426978 3058718.074 759 +1.909166667 10369690.32 3637969.902 715 +1.940833333 9456401.691 2778888.987 630 +1.9725 6639987.338 1808519.823 689 +2.004166667 6835218.503 1844123.922 630 +2.035833333 12529053.13 3049857.188 587 +2.0675 21065023.29 5724154.95 593 +2.099166667 10160366.8 2754641.344 527 +2.130833333 14492573.53 4080958.128 527 +2.1625 8177481.848 2606399.71 484 +2.194166667 11960635.97 3778139.124 478 +2.225833333 7043149.858 1877530.394 414 +2.2575 14318838.97 6448663.045 397 +2.289166667 15183923.89 4004557.235 334 +2.320833333 11936001.1 3218643.91 331 +2.3525 5247524.205 1989008.166 267 +2.384166667 4712066.294 1620901.016 249 +2.415833333 11370105.12 4861968.976 228 +2.4475 8183557.483 2876130.45 165 +2.479166667 8920945.167 3800615.564 133 +2.510833333 16012827.73 5453143.81 166 +2.5425 20892392.19 6917971.609 216 +2.574166667 29684654.25 13050245.42 262 +2.605833333 20589660.99 6025794.318 269 +2.6375 21404691.28 6348160.273 250 +2.669166667 40863767.56 8376823.507 252 +2.700833333 26325773.29 8357719.823 220 +2.7325 17694584.13 4738223.052 251 +2.764166667 28973844.14 7091568.728 220 +2.795833333 22556350.07 4993313.835 206 +2.8275 50373253.25 13083054.99 185 +2.859166667 30588323.54 8788890.504 183 +2.890833333 36836985.14 8033066.618 195 +2.9225 21327986.33 6967260.843 189 +2.954166667 27386814.01 7990923.478 164 +2.985833333 22935488.47 6058407.053 165 +3.0175 32352039.39 9343968.246 154 +3.049166667 27084783 7301899.439 159 +3.080833333 17844179.71 5195858.285 142 +3.1125 36194389.75 7282675.956 162 +3.144166667 27792700.44 9015540.358 128 +3.175833333 32521200 7390399.628 143 +3.2075 32941902.28 8614203.114 109 +3.239166667 26218004.87 7352599.643 125 +3.270833333 13099667.23 3846046.123 120 +3.3025 41460727.96 10668914.14 89 +3.334166667 57938307.11 36235367.56 120 +3.365833333 23048403.69 7026982.077 106 +3.3975 33150708.73 11276241.53 111 +3.429166667 26140760.02 10740028.75 86 +3.460833333 27170428.6 7518285.695 101 +3.4925 20459193.46 6281926.746 69 +3.524166667 28378554.76 9865407.175 95 +3.555833333 34073721.04 8722590.519 95 +3.5875 26132616.73 7738154.227 85 +3.619166667 26355943.58 7953317.878 77 +3.650833333 23025274.47 7248401.191 66 +3.6825 29963436.32 9954623.98 72 +3.714166667 18705876.04 5941117.628 65 +3.745833333 17696702.51 5427788.332 49 +3.7775 10813532.27 3378902.624 46 +3.809166667 14235395.03 5790940.807 41 +3.840833333 10223446.02 3399700.922 44 +3.8725 16985908.66 6118220.718 39 +3.904166667 3821693.274 2232726.33 37 +3.935833333 10020468.8 3582996.624 50 +3.9675 13879502.13 5208071.238 54 +3.999166667 22931890.58 8595498.396 57 +4.030833333 19062441.37 6152926.001 55 +4.0625 3977395.332 1847223.115 41 +4.094166667 20739928.26 7179161.221 46 +4.125833333 13901544.09 4342920.938 53 +4.1575 10092242.54 4165244.668 34 +4.189166667 20274192.72 7271136.265 54 +4.220833333 18797061.25 7308584.731 47 +4.2525 11183087.45 4528725.297 35 +4.284166667 15071001.21 6382806.014 35 +4.315833333 17178515.47 5649225.041 51 +4.3475 15519798.85 6453881.059 25 +4.379166667 6875934.047 3009100.673 24 +4.410833333 6049008.519 2611894.368 30 +4.4425 9209250.747 3764154.377 28 +4.474166667 2031841.409 1224883.959 24 +4.505833333 4323275.599 1902518.963 36 +4.5375 15854713.15 12420467.72 28 +4.569166667 23062547.06 8796434.778 36 +4.600833333 11553352.51 4778774.74 27 +4.6325 11449997.93 4539219.195 25 +4.664166667 6639192.878 3904657.393 22 +4.695833333 13679160.62 6063327.943 27 +4.7275 8081179.599 3658934.351 24 +4.759166667 6706822.414 3257969.979 23 +4.790833333 5593169.799 2831734.142 25 +4.8225 14608978.97 6407834.619 23 +4.854166667 11193636 3980412.207 33 +4.885833333 2921935.658 1788803.447 14 +4.9175 9644614.94 4102462.881 26 +4.949166667 9120876.491 5497106.593 16 +4.980833333 5707735.044 2467754.92 15 +5.0125 11198815.31 7555167.991 15 +5.044166667 6385256.583 4084439.192 10 +5.075833333 920893.24 800893.3594 7 +5.1075 7666767.997 3754071.609 13 +5.139166667 12482574.09 6375658.166 24 +5.170833333 3380221.196 1997369.668 10 +5.2025 4848345.562 3252397.194 11 +5.234166667 1271097.5 778639.6238 15 +5.265833333 4220266.21 2957912.289 14 +5.2975 9696157.896 8174738.055 18 +5.329166667 7013161.921 4073675.5 11 +5.360833333 5030415.264 3040527.509 11 +5.3925 11190195.88 5736776.256 15 +5.424166667 7946285.629 3491200.082 13 +5.455833333 7602158.121 3430166.302 17 +5.4875 13627495.35 5661674.748 16 +5.519166667 2892407.74 2337713.47 6 +5.550833333 9446046.617 5732131.504 11 +5.5825 10646709.55 5109338.851 17 +5.614166667 932360.9847 943507.8877 11 +5.645833333 4384593.206 3127103.501 13 +5.6775 473204.2042 493856.716 10 +5.709166667 9351368.037 6263391.645 8 +5.740833333 11225596.48 9463176.132 7 +5.7725 2801810.654 1987356.758 8 +5.804166667 4004298.232 3205509.426 8 +5.835833333 8023667.429 3373856.273 13 +5.8675 5488328.294 3436115.969 9 +5.899166667 1567596.695 1480564.693 8 +5.930833333 9683033.461 5996548.853 10 +5.9625 7887.002144 8482.608265 4 +5.994166667 6597113.215 5016378.335 6 +6.025833333 2104264.639 2272840.593 6 +6.0575 7675888.321 3972126.369 12 +6.089166667 785147.6542 818563.6236 10 +6.120833333 2074365.991 1315399.615 8 +6.1525 3478603.925 2099434.252 6 +6.184166667 18407364.81 15824394.73 4 +6.215833333 10870165.24 7008371.197 7 +6.2475 3371484.67 2144427.105 8 +6.279166667 3310139.467 3317098.035 5 +6.310833333 1407783.077 1625140.36 3 +6.3425 5677397.82 5878440.627 8 +6.374166667 2725226.486 2625353.975 4 +6.405833333 2258605.241 2282325.381 5 +6.4375 91873.90538 91775.94215 5 +6.469166667 6899905.279 5058272.515 9 +6.500833333 1768615.019 1817056.336 6 +6.5325 3719581.797 2853374.173 5 +6.564166667 2965040.807 3199370.06 6 +6.595833333 15963.85087 14030.7914 3 +6.6275 2983306.239 2155190.063 6 +6.659166667 11913858.32 8758567.751 9 +6.690833333 13282487.56 6370619.292 13 +6.7225 322669.087 342040.3227 7 +6.754166667 527128.2831 645282.6491 2 +6.785833333 39231.30978 47850.9469 2 +6.8175 252722.0247 282551.8133 4 +6.849166667 1987489.345 2139796.451 5 +6.880833333 3801022.407 4243925.453 4 +6.9125 523785.5232 519331.2846 3 +6.944166667 1056832.313 1138978.568 6 +6.975833333 9577790.336 7517388.242 7 +7.0075 127.1275702 155.6988396 2 +7.039166667 586353.5522 626136.3764 4 +7.070833333 4928551.452 2792279.977 8 +7.1025 542739.1023 399253.9189 4 +7.134166667 55461.57045 60371.89984 5 +7.165833333 8177171.605 6508931.355 5 +7.1975 1843151.295 1843151.295 1 +7.229166667 3284158.937 3792189.431 3 +7.260833333 845717.8886 976541.2881 3 +7.2925 50.15428105 57.91057341 3 +7.324166667 5449123.967 6673786.466 2 +7.355833333 1471339.294 1471339.294 1 +7.3875 692897.5519 848622.7231 2 +7.419166667 823967.308 662827.8838 6 +7.450833333 2279936.635 2792340.701 2 +7.4825 0 0 0 +7.514166667 24357.92419 18076.12215 2 +7.545833333 34034.66086 39291.1865 3 +7.5775 1488.950101 1823.584 2 +7.609166667 325144.7688 360211.5445 4 +7.640833333 2682926.882 2567931.703 5 +7.6725 29462.97871 29462.97871 1 +7.704166667 1349990.034 1412539.759 2 +7.735833333 8997.595684 8997.595684 1 +7.7675 1486716.226 1817866.278 2 +7.799166667 10848.15841 13286.22638 2 +7.830833333 3647895.543 3683202.871 2 +7.8625 3148056.132 3855565.603 2 +7.894166667 2.64187252 3.001680272 2 +7.925833333 2282509.28 2551284.19 4 +7.9575 484870.4006 586258.5902 2 +7.989166667 1861879.706 2005189.29 6 +8.020833333 7186.629589 8801.787685 2 +8.0525 7223.215884 6514.338507 3 +8.084166667 2002593.182 2215050.685 3 +8.115833333 4.177211267e-06 3.482121949e-06 2 +8.1475 875.7403229 875.7403229 1 +8.179166667 2.7119429 2.997027719 2 +8.210833333 637218.1234 778344.5392 2 +8.2425 26.22437203 26.22437203 1 +8.274166667 28.76147285 33.21088819 3 +8.305833333 0 0 0 +8.3375 2961602.099 3419441.039 3 +8.369166667 281695.2111 345004.7651 2 +8.400833333 12591.62598 12591.62598 1 +8.4325 7.141413399e-10 8.746409435e-10 2 +8.464166667 0 0 0 +8.495833333 670.1558256 670.1558256 1 +8.5275 2622192.162 2622192.162 1 +8.559166667 3911.065646 3911.065646 1 +8.590833333 1.916166382e-07 1.916166382e-07 1 +8.6225 898238.2417 1100112.67 2 +8.654166667 20930.66442 25634.72284 2 +8.685833333 82510.28414 91955.19024 4 +8.7175 0 0 0 +8.749166667 0 0 0 +8.780833333 4431.525326 4431.525326 1 +8.8125 0 0 0 +8.844166667 192.0600153 192.0600153 1 +8.875833333 0 0 0 +8.9075 9.362942448e-23 9.362942448e-23 1 +8.939166667 0 0 0 +8.970833333 0 0 0 +9.0025 0 0 0 +9.034166667 0 0 0 +9.065833333 0 0 0 +9.0975 0 0 0 +9.129166667 0 0 0 +9.160833333 0 0 0 +9.1925 0 0 0 +9.224166667 0 0 0 +9.255833333 0 0 0 +9.2875 0 0 0 +9.319166667 0 0 0 +9.350833333 0 0 0 +9.3825 0 0 0 +9.414166667 0 0 0 +9.445833333 0 0 0 +9.4775 0 0 0 +9.509166667 0 0 0 +9.540833333 0 0 0 +9.5725 0 0 0 +9.604166667 0 0 0 +9.635833333 0 0 0 +9.6675 0 0 0 +9.699166667 0 0 0 +9.730833333 0 0 0 +9.7625 0 0 0 +9.794166667 0 0 0 +9.825833333 0 0 0 +9.8575 0 0 0 +9.889166667 0 0 0 +9.920833333 0 0 0 +9.9525 0 0 0 +9.984166667 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/wavelength_tof.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/wavelength_tof.dat new file mode 100644 index 0000000000..87f896de65 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/0/wavelength_tof.dat @@ -0,0 +1,965 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 12787302 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/0 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=0 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:51 2026 (1772383131) +# type: array_2d(300, 300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: wavelength_tof +# position: 49.4198 0 -35.0741 +# title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin +# Ncount: 153447624 +# filename: wavelength_tof.dat +# statistics: X0=0.0547023; dX=0.0217818; Y0=3.58133; dY=1.42582; +# signal: Min=0; Max=5.3377e+07; Mean=26770.3; +# values: 2.40932e+09 8.17576e+07 44025 +# xvar: TO +# yvar: Wa +# xlabel: TOF [s] +# ylabel: Wavelength [Angs] +# zvar: I +# zlabel: Signal per bin +# xylimits: 0 0.15 0.5 10 +# variables: I I_err N +# Data [wavelength_tof/wavelength_tof.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 126.9914284 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 115974.9792 1551552.419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 590365.6728 599736.9303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1150643.554 3031601.16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2194054.351 3255070.185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1928991.51 3744004.056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2047730.272 1907071.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2423599.679 3745798.442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6361912.735 6693092.158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5044187.934 4701001.728 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5779003.374 2528788.268 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7440160.296 3589039.287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12741871.51 4617334.112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8230522.662 1449409.756 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11891384.25 3306173.638 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6492153.154 1607550.305 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5085691.083 977864.7189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7749761.713 561578.2819 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7676856.152 2352233.28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9149742.985 269808.3422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15093634.45 1400173.153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9469147.063 192511.2623 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5297929.748 753490.8162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9759850.076 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.277815806e-05 8982141.918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 838361.2854 5977592.445 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 782036.987 24281543.95 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2423775.628 6459921.768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 534223.1231 10892754.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 725009.2232 9644681.096 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 604355.7633 8852045.928 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 986638.7887 5653348.549 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2203294.779 4631923.724 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7006630.087 5522423.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8710320.895 12354702.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3689991.281 6470375.523 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6909749.317 7582824.21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2404106.857 5773374.991 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6554684.384 5405951.588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3205806.332 3837343.526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3781406.045 10537432.93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6210665.76 8973258.128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5442532.683 6493468.419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1180436.396 4067087.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3306564.488 1405501.806 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8616046.469 2754058.656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7643054.091 540503.3921 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5734570.016 3186375.151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12639850.02 3372977.708 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13752100.3 7140291.889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13008759.19 16675895.06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19447581.77 1142079.218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21387357.45 17333.82892 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39004977.35 1858790.211 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26325773.29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 130.6414015 17694453.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2703558.647 26270285.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 729841.2828 21826508.79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5591789.478 44781463.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5647090.615 24941232.93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4493072.398 32343912.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1454424.072 19873562.26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3773500.033 23613313.98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4698788.104 18236700.36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13249594.07 19102445.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8816746.599 18268036.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7146927.55 10697252.16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17764651.85 18429737.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11273268.01 16519432.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18973902.45 13547297.54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20642701.28 12299201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17988832.52 8229172.351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9618662.028 3481005.202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24897763.42 16562964.54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53377004.91 4561302.19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20065544.45 2982859.241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10362412.28 22788296.45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7664294.143 18476465.88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25285856.19 1884572.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20343312.62 115880.8409 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27150820.28 1227734.477 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26306559.13 7767161.91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24334390.81 1798225.923 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23160934.96 3195008.622 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23025274.47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29963436.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.946585755e-09 18705876.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 688250.6216 17008451.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82857.22937 10730675.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1894192.417 12341202.61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3656045.011 6567401.014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3509215.139 13476693.52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 86135.8431 3735557.431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5684427.419 4336041.385 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3460769.991 10418732.14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12794680.76 10137209.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3138339.601 15924101.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2197310.712 1780084.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10419464.4 10320463.86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3255787.55 10645756.54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8137892.324 1954350.211 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14000113.95 6274078.768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15869762.43 2927298.823 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5623027.122 5560060.324 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3014591.275 12056409.93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10841058.36 6337457.112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6169632.213 9350166.639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6875916.246 17.80142346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4196061.022 1852947.497 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7694462.431 1514788.316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1153471.758 878369.6514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3780711.085 542564.5137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15854713.15 4.909978725e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22435411.74 627135.3181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11419800.05 133552.4559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11449997.93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6639192.878 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.882246422e-12 13679160.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001101837749 8081179.599 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 942791.3152 5764031.099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 190997.7497 5402172.049 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 295751.3148 14313227.65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4294396.231 6899239.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 623255.3392 2298680.319 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5032924.98 4611689.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5260329.411 3860547.08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3398728.984 2309006.06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 178.6404489 11198636.67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4441211.097 1944045.485 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3766.228352 917127.0116 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2454314.257 5212453.74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5584101.869 6898472.223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1663293.107 1716928.089 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2135770.357 2712575.206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277273.5528 993823.9467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 427250.4336 3793015.776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8934751.818 761406.0785 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4786006.757 2227155.164 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5030415.264 2.754087625e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11190183.08 12.80013613 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6377221.928 1569063.701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7448827.456 153330.665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8803640.378 4823854.968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2892403.899 3.841082871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9446042.831 3.786611647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10646709.55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 932360.9847 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4384593.206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 473204.2042 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5020459.412 4330908.624 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11225596.48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 214350.5689 2587460.085 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 453458.4729 3550839.759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3947976.301 4075691.128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1807853.423 3680474.871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1394391.24 173205.4554 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2553564.803 7129468.657 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7813.493054 73.50908922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2835055.84 3762057.375 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2104242.147 22.49192266 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3610586.974 4065301.347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 780695.9051 4451.749143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 97873.19406 1976492.796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2253395.62 1225208.305 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4726988.5 13680376.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10160009.99 710155.2442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1830797.928 1540686.743 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 283521.3805 3026618.087 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1407783.077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5677395.22 2.599776675 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2606191.947 119034.5388 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2100284.03 158321.2111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91866.30851 7.596866938 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6899905.279 1.544791135e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1768615.019 3.44212032e-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 3719581.797 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2965040.807 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15963.85087 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2983306.239 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11913858.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13282487.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1912.737902 320756.3491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 527128.2831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39110.30342 121.0063616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.878916613e-17 252722.0247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.565235706e-26 1987489.345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3801022.392 0.01507171066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 70453.03503 453332.4882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2252.184584 1054580.128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1668726.711 7909063.625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127.1275702 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25204.77863 561148.7735 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1426348.914 3502202.537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 326068.6847 216670.4176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 336.8110589 55124.75939 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1780848.361 6396323.243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1843151.295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.6034949 3284135.333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 845717.8886 7.069940477e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50.15428105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5449123.967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1471339.294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 692897.5519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 823967.308 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2279936.635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24357.92419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34034.66086 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1488.950101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33.68490513 325111.0839 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2682926.882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29462.97871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1349990.034 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8997.595684 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1486716.226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10848.15841 2.910455031e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 509374.4152 3138521.128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3148056.132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.64187252 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2282509.28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 484870.4006 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5291.500106 1856588.206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7186.629589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5744.11752 1479.098364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76262.91028 1926330.272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.010644987e-06 1.166566279e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 875.7403229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.7119429 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 637218.1234 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26.22437203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28.76147285 5.047938419e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2961602.099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 281695.2111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12591.62598 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.141413399e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 670.1558256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2622192.162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3911.065646 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.916166382e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 898238.2354 0.006321586846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006478659779 20930.66377 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82510.28414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4431.525326 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 192.0600153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.362942448e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [wavelength_tof/wavelength_tof.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 120.9974345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77768.32482 1256865.027 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 448597.651 205553.6616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 678589.6118 931584.6744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 728206.8542 1047533.955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1086641.305 1324975.179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 682847.6843 546272.9448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 602305.3226 1164875.233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2712811.359 3620735.176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2021435.864 1223507.132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1828809.152 816759.134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2754464.79 1159288.293 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4066241.2 2092131.713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2013383.69 467380.0636 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2930683.034 1743626.001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2495808.73 947349.0902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1309053.829 406022.9304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2174534.338 221882.9629 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1707175.911 778232.0148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2138211.824 152788.8135 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4311177.914 1261886.678 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2467566.791 175022.8248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1516988.816 531707.9241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3076497.407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.629419855e-06 2241857.838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 487620.2735 1818965.013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 425492.5244 8870394.564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1845429.839 1784322.552 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 345625.6471 3039620.051 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 480557.7905 3606844.196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 344008.6865 2758211.793 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 380675.2519 1768570.697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 822488.394 1651860.067 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2504137.455 1748015.48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4312531.778 3773366.206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1281758.956 2440697.82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3109867.358 2648777.163 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1249017.749 2290214.506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3244417.485 1943924.626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 880527.2821 1660660.265 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1463489.377 6289791.298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2686636.3 2977558.592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1763495.076 2700946.587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 720424.7258 1860362.795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1376131.273 862060.2639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4708114.115 1234774.644 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2866898.599 256883.8687 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2332183.215 3039593.286 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4790044.352 2644266.391 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5656031.598 4035189.028 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4030982.203 12556123.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5969546.013 842687.5681 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6348823.069 17942.00544 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8167506.199 2078190.548 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8357719.823 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 146.0613011 4738359.338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2156187.915 6777274.394 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 542642.7463 4966386.725 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2577382.254 12839329.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3887621.805 7912037.426 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2145185.383 7751158.517 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 832249.223 6921803.681 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1841012.757 7786927.504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1881712.89 5770488.168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6903323.638 6349809.094 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4091523.397 6071638.344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2740084.896 4433810.694 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5483544.437 4823504.904 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5376814.121 7278342.746 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5534320.334 4931641.218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7396554.803 4478588.218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6541898.095 3418215.047 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3572173.308 1455526.217 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7624810.05 7547686.718 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36243694.59 2183807.215 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6933138.619 1252476.083 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3270865.854 10904164.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2437769.409 10585071.36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7412322.695 1322444.373 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6286181.804 121380.2652 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9828256.355 947611.4192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7202573.146 5043217.731 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7597957.41 1596824.066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7277600.953 3688695.547 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7248401.191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9954623.98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.946585755e-09 5941620.021 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 598113.7095 5403420.658 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74784.65135 3380266.444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1763028.142 5556666.983 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2214342.379 2636724.854 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3679862.362 5093399.822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71432.66357 2242562.763 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3193745.903 1756217.907 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2146670.01 4779962.608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7062016.952 5064723.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1663822.26 5956928.486 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1665175.297 879734.4961 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5670450.005 4513344.002 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1709024.299 4020894.608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3985341.503 1334324.629 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6655263.732 3092168.353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7038932.748 2127520.275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2813535.514 3633160.545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1693339.967 6257621.125 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4214365.07 3859230.389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3611722.776 5492775.43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3014116.149 13.61262238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2366390.405 1172406.703 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3603269.511 1203275.439 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000192.353 754703.7124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1853453.11 480504.538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12444747.83 5.294892765e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8788638.734 521825.2311 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4779305.485 133552.4559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4539219.195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3904657.393 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.882246422e-12 6066092.778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001101837749 3660959.594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1074349.331 3126558.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 213240.245 2833326.17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 298011.281 6411327.195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2450851.959 3205634.549 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 488136.6295 1756802.149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3803205.419 2007043.295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5481679.31 1730816.991 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1864048.602 1700849.307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112.0247673 7643333.407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4175604.39 1335859.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4612.66884 816582.2497 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2116558.357 3236809.297 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5194157.907 3992771.704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1392875.117 1547227.197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1659174.97 3032742.347 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 303728.0348 735065.5287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 453167.5183 3026480.872 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8261116.149 574029.4406 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3409997.354 2571696.699 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3064657.803 3.174633286e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5759120.432 14.78032408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3112464.407 1569063.701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3430630.221 153330.665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4871768.189 3061094 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2358981.876 3.841082871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5746056.038 3.786611647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5109338.851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 943507.8877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3127103.501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 493856.716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6148777.788 3458326.154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9463176.132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184366.0876 2009207.071 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 523583.3221 3265630.022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2681319.886 2204838.206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1391852.503 3291626.243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1520150.918 199995.9955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3127352.242 5449592.614 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9228.866664 86.86925635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3270994.935 4344034.188 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2577159.778 25.14673387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3080314.508 2763616.725 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 843034.7656 4977.154553 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 103403.9388 1330889.526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2070908.105 792828.6035 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5700310.215 16754969.21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7076347.447 820016.6428 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1468891.649 1722508.465 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 316967.645 3026618.087 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1625140.36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5984463.724 2.103643074 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2701299.457 119034.5388 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2546920.001 182791.4996 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 93441.08806 7.596866938 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5080730.469 1.544791135e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1841595.891 3.44212032e-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 2853374.173 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3199370.06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14030.7914 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2155190.063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8758567.751 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6370619.292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2206.844735 357713.7757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 645282.6491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39110.30342 121.0063616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.878916613e-17 291818.2579 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.565235706e-26 2182996.57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4382782.546 0.01507171066 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84089.76943 453332.4882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2656.040153 1179023.042 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1944987.057 7518348.454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 155.6988396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25204.77863 647958.7909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1151643.206 2645965.715 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 326068.6847 199095.8689 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 336.8110589 61631.3538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1403972.151 7024654.526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1843151.295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28.90825932 3284135.333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1035776.562 7.069940477e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57.91057341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6673786.466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1471339.294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 848622.7231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 662827.8838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2792340.701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18076.12215 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39291.1865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1823.584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33.68490513 371841.8541 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2567931.703 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29462.97871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1412539.759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8997.595684 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1817866.278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10848.15841 2.910455031e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 509374.4152 3138521.128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3855565.603 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.001680272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2551284.19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 586258.5902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5793.592159 1856588.206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8801.787685 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6877.764549 1479.098364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 93399.67658 1926330.272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.010644987e-06 1.166566279e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 875.7403229 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.997027719 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 778344.5392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26.22437203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28.76147285 6.182201244e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3419441.039 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 345004.7651 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12591.62598 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.746409435e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 670.1558256 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2622192.162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3911.065646 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.916166382e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 898238.2354 0.006321586846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006478659779 20930.66377 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91955.19024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4431.525326 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 192.0600153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.362942448e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [wavelength_tof/wavelength_tof.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 233 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 109 338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 174 505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 290 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 372 591 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 429 621 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 518 588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 575 561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 593 571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 677 560 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 729 472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 808 497 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 838 398 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 832 361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 860 312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 913 240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 884 240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 904 185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 978 161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 902 88 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 938 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 974 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 44 835 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 760 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 116 643 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 131 584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 134 496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 160 529 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 173 457 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184 403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 206 387 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210 317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232 295 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 193 291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 228 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 201 213 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 213 184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182 152 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 219 112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 174 93 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 168 81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 166 62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 132 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 134 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 226 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 236 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 236 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 248 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 220 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 206 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 164 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38 157 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42 122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 106 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 68 74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71 91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 73 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 65 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 87 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 79 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 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 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 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 16 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 12 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 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 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 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 8 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 5 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 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 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 2 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 2 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 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 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 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 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/PSD_Backtrace.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/PSD_Backtrace.dat new file mode 100644 index 0000000000..c8f8537cce --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/PSD_Backtrace.dat @@ -0,0 +1,335 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: PSD_Backtrace +# position: 0.123791 0 -0.138729 +# title: PSD monitor +# Ncount: 10622832 +# filename: PSD_Backtrace.dat +# statistics: X0=-1.20859; dX=7.30188; Y0=-0.00240169; dY=1.77858; +# signal: Min=0; Max=7.79257e+11; Mean=4.54738e+10; +# values: 3.68338e+14 1.96596e+12 1.06228e+07 +# xvar: X +# yvar: Y +# xlabel: X position [cm] +# ylabel: Y position [cm] +# zvar: I +# zlabel: Signal per bin +# xylimits: -15 15 -15 15 +# variables: I I_err N +# Data [PSD_Backtrace/PSD_Backtrace.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 20300283.22 2.666036771e+11 2.689361851e+11 4.142109617e+11 2.574429593e+11 2.681009151e+11 3.35002909e+11 4.553976529e+11 3.354831422e+11 2.825440729e+11 3.387685179e+11 3.847096716e+11 3.845277123e+11 2.62545625e+11 3.313485495e+11 2.564556006e+11 3.146036018e+11 2.539736999e+11 3.385190685e+11 2.463443957e+11 3.57233339e+11 3.578866755e+11 2.387014284e+11 2.899524267e+11 2.241246869e+11 2.386276311e+11 2.222884e+11 2.226010945e+11 2.767972227e+11 2.788202977e+11 2.150929274e+11 2.039648666e+11 3.086975445e+11 2.776486848e+11 1.998918826e+11 2.013197165e+11 2.900467749e+11 1.769228821e+11 1.739033628e+11 1.786984978e+11 1.680359942e+11 1.630240963e+11 1.504557208e+11 1.521195216e+11 1.598684316e+11 1.507914662e+11 1.395409304e+11 1.533183437e+11 1.503254811e+11 1.40974748e+11 1.487820107e+11 1.4032533e+11 1.402097165e+11 1.435137608e+11 1.463086617e+11 1.531819426e+11 1.452539193e+11 1.519285909e+11 1.590013859e+11 1.468233841e+11 1.486450067e+11 1.443891305e+11 1.442832383e+11 1.421784472e+11 1.414636742e+11 1.522955658e+11 1.487855671e+11 1.476309275e+11 1.391336333e+11 1.436555577e+11 1.314331632e+11 1.219763798e+11 1.897393186e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.962977911e+11 4.071377177e+11 4.84686205e+11 4.132089827e+11 4.291552641e+11 4.668638501e+11 4.95993599e+11 4.160255957e+11 4.798104865e+11 4.175626605e+11 4.037541194e+11 4.039665582e+11 3.767911334e+11 4.448121106e+11 4.165476784e+11 5.340981614e+11 3.54536476e+11 4.728586664e+11 5.277947271e+11 5.603204251e+11 3.412880151e+11 4.227227754e+11 5.050509885e+11 3.805659025e+11 3.899682182e+11 5.585734812e+11 3.477651304e+11 6.545367806e+11 4.425011552e+11 2.950656295e+11 3.166211005e+11 3.677559055e+11 3.743893248e+11 2.844584371e+11 2.600607321e+11 2.527474182e+11 3.405955538e+11 2.372459837e+11 2.836291802e+11 2.250032991e+11 2.311854526e+11 2.1837115e+11 2.250892463e+11 3.227668063e+11 2.160754346e+11 2.087747232e+11 1.974483008e+11 2.071444023e+11 2.071531493e+11 2.118559095e+11 2.07659162e+11 2.051515534e+11 2.071199943e+11 2.111080906e+11 2.019784712e+11 2.01120654e+11 2.742070649e+11 2.181767033e+11 2.145549496e+11 2.180849158e+11 2.055735411e+11 2.07839315e+11 2.091797538e+11 2.099177404e+11 2.095133635e+11 2.052487785e+11 2.039331464e+11 2.012728848e+11 2.058308849e+11 1.966448309e+11 1.717401155e+11 1.974818678e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.782914749e+11 5.992732399e+11 4.940361429e+11 6.89910628e+11 6.483637668e+11 5.223472482e+11 6.685179809e+11 5.233325378e+11 5.919245604e+11 6.606295979e+11 5.008982085e+11 5.01994212e+11 4.764131139e+11 4.968467237e+11 4.938249448e+11 4.63066431e+11 4.657792851e+11 4.297370494e+11 5.275710575e+11 4.176028937e+11 6.190660809e+11 3.8073433e+11 3.810913314e+11 4.497331184e+11 5.927856842e+11 4.71582949e+11 3.636655332e+11 3.69853855e+11 4.204356727e+11 3.447145863e+11 4.319903219e+11 4.259321736e+11 3.918756652e+11 3.606108554e+11 3.472088615e+11 3.764485517e+11 3.561439973e+11 7.183634997e+11 4.214214344e+11 3.178966979e+11 3.215996825e+11 3.180238648e+11 3.074929455e+11 3.005273029e+11 2.992405091e+11 2.985344361e+11 3.001588249e+11 2.984865087e+11 3.005891493e+11 2.979805125e+11 2.997819015e+11 3.008587284e+11 2.985846922e+11 3.000214115e+11 3.106107007e+11 2.988135428e+11 3.157841339e+11 3.207756397e+11 3.229130751e+11 3.195068617e+11 3.241382839e+11 4.158693352e+11 4.147880957e+11 5.154790535e+11 3.175960647e+11 3.558940256e+11 3.782316335e+11 3.109256347e+11 2.949413207e+11 2.798322438e+11 3.567757977e+11 3.755277601e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.435628358e+11 5.755387502e+11 4.711022406e+11 6.498539168e+11 5.041437033e+11 5.738541901e+11 5.628508545e+11 4.802260728e+11 5.456685226e+11 4.91555173e+11 4.661808228e+11 4.52894709e+11 5.142140941e+11 4.661208119e+11 3.918870585e+11 3.556789805e+11 2.960881869e+11 2.649245981e+11 3.208639417e+11 2.324012101e+11 2.270678979e+11 2.273811824e+11 2.154732253e+11 2.08472453e+11 2.16143717e+11 2.134494933e+11 2.743427976e+11 2.022178156e+11 2.061518601e+11 2.04692787e+11 2.008484812e+11 2.176889927e+11 2.422092386e+11 2.917622182e+11 3.117182264e+11 3.483124171e+11 3.500318713e+11 3.597551321e+11 3.382631677e+11 3.723518599e+11 3.554297662e+11 3.052151533e+11 2.993761517e+11 2.83531503e+11 4.138037393e+11 2.855276785e+11 2.884433187e+11 2.920596427e+11 4.01689267e+11 4.130921173e+11 2.998245727e+11 4.100676039e+11 3.059952232e+11 2.985746129e+11 3.045405816e+11 3.053932402e+11 3.12018213e+11 3.226777492e+11 3.733570214e+11 3.30552277e+11 4.844259404e+11 4.882642218e+11 3.385778725e+11 4.309832428e+11 3.419498199e+11 3.4250154e+11 5.377095632e+11 3.382820789e+11 3.296691155e+11 3.056563999e+11 3.015695465e+11 2.97342268e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.15116205e+11 6.625253927e+11 5.1185582e+11 5.919601627e+11 4.48661466e+11 4.52361337e+11 5.201759866e+11 4.242473442e+11 4.328188258e+11 5.061173105e+11 5.259698769e+11 4.814876155e+11 4.156439575e+11 3.566280736e+11 3.344907818e+11 4.092457659e+11 2.808296537e+11 1.786599767e+11 1.488010783e+11 1.38980325e+11 1.537931632e+11 1.414540605e+11 2.085784771e+11 1.438555839e+11 1.452584909e+11 1.442131874e+11 2.215577726e+11 1.388225375e+11 1.448328783e+11 1.309197697e+11 1.33032936e+11 1.416157135e+11 1.84301079e+11 2.259276795e+11 2.568552524e+11 2.815258555e+11 3.018675715e+11 2.894943949e+11 2.859435769e+11 2.569934827e+11 2.33370265e+11 3.179507086e+11 2.467974657e+11 1.997745954e+11 4.712689917e+11 2.981143364e+11 3.097968613e+11 1.968681057e+11 2.035394633e+11 3.178985423e+11 2.069548335e+11 3.428094809e+11 3.275326709e+11 2.136655789e+11 2.192605384e+11 2.327342726e+11 2.288760366e+11 2.385255514e+11 2.478466653e+11 2.520138078e+11 3.073183775e+11 2.590324908e+11 2.636086713e+11 2.734109361e+11 2.637027229e+11 2.662345435e+11 2.7583406e+11 2.737926984e+11 3.366805443e+11 2.516251291e+11 2.442415028e+11 2.330277366e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.587555348e+11 3.825115773e+11 3.929404561e+11 3.942133434e+11 4.071821231e+11 4.098114636e+11 4.036826812e+11 3.981743535e+11 3.944227359e+11 4.810265351e+11 4.925330655e+11 4.21149331e+11 3.825551796e+11 4.009180118e+11 3.217166892e+11 2.777317152e+11 2.137422666e+11 1.642555516e+11 1.396080192e+11 1.864462595e+11 1.52756603e+11 1.435881651e+11 2.57443152e+11 1.411721955e+11 1.350195998e+11 1.377201865e+11 1.377482179e+11 1.390091604e+11 1.309161674e+11 1.292188427e+11 1.260565814e+11 1.307844644e+11 1.638415972e+11 2.04644685e+11 2.374770861e+11 2.77956334e+11 2.840539418e+11 2.954831771e+11 3.351620307e+11 2.495038879e+11 2.116628228e+11 1.960871278e+11 1.935813491e+11 1.914889223e+11 2.877264075e+11 2.577538809e+11 3.680156557e+11 3.200707985e+11 1.863415125e+11 3.986469704e+11 2.047083112e+11 2.06454332e+11 2.028342712e+11 2.101888206e+11 2.044187776e+11 2.109831538e+11 3.000312551e+11 2.897212077e+11 2.126194895e+11 2.2691993e+11 2.291240756e+11 2.335925423e+11 2.378544294e+11 2.347160342e+11 2.357158785e+11 2.382744859e+11 2.333413504e+11 2.304297892e+11 2.256989258e+11 2.068345441e+11 1.948961275e+11 1.817902581e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.279087538e+11 3.542648725e+11 4.124867531e+11 3.479424106e+11 3.715036065e+11 3.705053263e+11 3.729755461e+11 4.344152259e+11 3.553699652e+11 3.651908094e+11 3.866836215e+11 3.867035858e+11 4.673452e+11 3.061067709e+11 3.943119675e+11 3.518150554e+11 1.785679026e+11 1.321755897e+11 1.167780435e+11 2.217548593e+11 1.164544737e+11 1.298638187e+11 1.229058881e+11 1.173304356e+11 3.970982716e+11 1.227760508e+11 1.331551817e+11 1.86897457e+11 1.138268099e+11 1.082439225e+11 1.051989763e+11 1.061549518e+11 1.355394054e+11 1.807946371e+11 2.358282437e+11 2.665017267e+11 2.84057208e+11 2.879542961e+11 3.370624314e+11 2.991380403e+11 2.211691792e+11 1.957904462e+11 3.076384785e+11 2.979892397e+11 1.837377171e+11 2.889371036e+11 1.762690995e+11 1.651664097e+11 1.751478085e+11 1.906657366e+11 2.045863091e+11 1.990394138e+11 1.954349237e+11 1.993724607e+11 1.996829136e+11 2.107398449e+11 2.230866588e+11 2.272351595e+11 2.313812054e+11 2.299211271e+11 5.252628967e+11 2.303031992e+11 2.316559676e+11 2.389840662e+11 2.384552394e+11 2.263036675e+11 2.340219418e+11 2.200345683e+11 2.232059407e+11 2.000205083e+11 1.866855529e+11 1.687253071e+11 304653.0538 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.168398928e+11 3.279659517e+11 4.427031982e+11 3.241027868e+11 3.435570996e+11 3.433071942e+11 3.459813386e+11 3.424957607e+11 3.486845243e+11 3.629568869e+11 3.676702825e+11 4.253496206e+11 3.228595818e+11 2.852065138e+11 2.563137262e+11 3.281477954e+11 1.631024885e+11 1.656719939e+11 9.54333324e+10 9.595663629e+10 9.812452424e+10 9.79028534e+10 2.219207345e+11 1.008952258e+11 1.042488917e+11 1.56374697e+11 9.474824687e+10 1.490926896e+11 9.915691366e+10 8.694736337e+10 1.572775036e+11 9.830210061e+10 1.295045629e+11 1.707167116e+11 2.109004398e+11 2.666659245e+11 2.75486916e+11 2.862252834e+11 2.822278496e+11 2.461401975e+11 2.120579876e+11 1.863660503e+11 4.125848297e+11 1.684225363e+11 1.792800071e+11 1.714460594e+11 1.641507541e+11 1.698599666e+11 1.676746742e+11 2.847169099e+11 1.879374598e+11 1.932282158e+11 2.829181029e+11 1.932114491e+11 3.066576153e+11 1.943317848e+11 2.087373503e+11 2.046766404e+11 2.202563452e+11 2.908567374e+11 3.439530552e+11 2.318405365e+11 2.43267921e+11 2.310452396e+11 2.3277329e+11 2.432936329e+11 2.346177519e+11 2.237433815e+11 2.278226517e+11 2.051706821e+11 1.861110708e+11 1.704659318e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.128905086e+11 3.177700169e+11 3.314281819e+11 3.307769472e+11 4.294733911e+11 3.373887306e+11 4.348492242e+11 3.529496088e+11 3.392423531e+11 3.8537152e+11 4.583117292e+11 3.511877663e+11 3.078984037e+11 3.931791061e+11 2.990540538e+11 3.60568489e+11 1.620065478e+11 2.532553451e+11 8.620011886e+10 2.032892766e+11 9.01660738e+10 1.045984387e+11 9.873171537e+10 9.857731433e+10 9.464387934e+10 9.855750719e+10 9.083387575e+10 9.948122574e+10 9.209983136e+10 8.261260401e+10 8.625748313e+10 9.293327724e+10 1.176175633e+11 3.271884752e+11 3.738121556e+11 2.689040396e+11 2.752729746e+11 2.882747523e+11 2.562787166e+11 2.528444663e+11 2.07161674e+11 1.661080196e+11 2.949545236e+11 5.145995029e+11 2.816993915e+11 1.78172277e+11 1.618406376e+11 1.647061306e+11 1.555000544e+11 1.754857984e+11 1.71711992e+11 1.861725866e+11 1.871096206e+11 1.844174237e+11 1.861196132e+11 2.804055236e+11 2.123838545e+11 2.075725178e+11 2.157145152e+11 2.959763348e+11 3.046086856e+11 2.289381053e+11 3.370885453e+11 2.370769786e+11 3.507490244e+11 2.280874549e+11 2.325346796e+11 2.234002328e+11 3.134859114e+11 1.955370059e+11 1.863235391e+11 1.708631235e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.041220666e+11 3.11285542e+11 3.182736906e+11 3.188160363e+11 3.323683473e+11 3.435191421e+11 3.497791348e+11 3.481528831e+11 3.319327923e+11 3.394300295e+11 3.703607741e+11 3.337373147e+11 3.051691701e+11 2.671925211e+11 4.983327784e+11 2.169660886e+11 2.294423845e+11 1.091201962e+11 8.767143848e+10 9.038869215e+10 9.358024492e+10 9.57354708e+10 9.634364877e+10 8.991821921e+10 9.721512761e+10 1.545384382e+11 9.398923402e+10 9.541656946e+10 9.226024134e+10 8.464973317e+10 7.806465831e+10 8.924305052e+10 1.279251538e+11 1.809671046e+11 2.199004595e+11 2.664639248e+11 2.74881771e+11 2.766510545e+11 2.778216153e+11 2.497577339e+11 2.152656938e+11 1.811731126e+11 1.681789028e+11 1.687836953e+11 3.550731393e+11 2.920020493e+11 1.652850768e+11 1.667557369e+11 1.660950921e+11 1.771572404e+11 1.747295011e+11 1.77929857e+11 1.824984688e+11 1.808546676e+11 1.900952896e+11 2.013605977e+11 2.120693517e+11 2.076797539e+11 2.09385916e+11 2.998714141e+11 3.305289943e+11 3.404823163e+11 2.365700176e+11 3.177551882e+11 3.268802429e+11 2.38396095e+11 3.364336291e+11 2.123712501e+11 2.082116324e+11 1.952548378e+11 1.903842109e+11 1.710248128e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.301236097e+11 3.24536958e+11 3.26105141e+11 3.402394063e+11 5.507756796e+11 3.383511289e+11 3.328209588e+11 3.362887404e+11 3.387145022e+11 3.567097708e+11 3.694438214e+11 3.499312108e+11 3.022429189e+11 2.751947864e+11 2.503558118e+11 2.166752628e+11 2.420982499e+11 1.187196302e+11 9.245797676e+10 9.480627969e+10 1.010998951e+11 1.009505264e+11 9.867307053e+10 9.818836809e+10 9.078444319e+10 1.713883425e+11 9.73275022e+10 9.576629604e+10 9.471714269e+10 9.12552402e+10 8.4511592e+10 2.109668593e+11 1.218408814e+11 1.696577116e+11 2.284548462e+11 2.717172989e+11 2.807708839e+11 2.765509661e+11 2.738740339e+11 2.458186899e+11 2.058254585e+11 1.824285969e+11 1.781475109e+11 4.101264106e+11 1.681348705e+11 1.679611374e+11 2.397651858e+11 1.594249087e+11 1.578393864e+11 1.72390664e+11 2.262278204e+11 1.872662856e+11 1.806764639e+11 2.679857251e+11 1.825031798e+11 2.463557812e+11 2.016024838e+11 2.015011398e+11 2.141002582e+11 3.238714992e+11 2.172422054e+11 2.275289209e+11 2.425769394e+11 3.394489872e+11 3.329706366e+11 3.288030389e+11 2.289492403e+11 3.355632704e+11 2.116374912e+11 2.032896862e+11 1.823599709e+11 1.700101967e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.786048848e+11 5.235165329e+11 3.435994891e+11 3.692341152e+11 5.57253619e+11 3.621779075e+11 3.672585444e+11 3.530709121e+11 3.424052645e+11 3.559018547e+11 4.661308021e+11 3.781404822e+11 3.183061245e+11 2.863026919e+11 2.616680934e+11 2.330808656e+11 1.736736138e+11 1.39460058e+11 1.052112053e+11 1.059046695e+11 1.136155555e+11 1.154160459e+11 1.10289773e+11 1.120652055e+11 1.092628489e+11 2.539962992e+11 1.140559365e+11 1.09855551e+11 1.104722252e+11 1.064174893e+11 9.763551855e+10 1.098358168e+11 1.336570347e+11 1.783794888e+11 2.398080706e+11 2.900959409e+11 2.947961439e+11 2.906392271e+11 2.853422209e+11 2.426460951e+11 2.126340426e+11 3.107324823e+11 3.004186648e+11 1.913753963e+11 1.869007585e+11 2.866812586e+11 2.471408694e+11 2.249939565e+11 2.15592704e+11 1.821109776e+11 2.968902148e+11 2.121013738e+11 2.066219095e+11 1.931082198e+11 2.381905856e+11 2.155890801e+11 2.129757244e+11 2.056773041e+11 2.273312288e+11 2.224722218e+11 2.224044039e+11 2.288427106e+11 5.414585378e+11 4.528528424e+11 2.321663478e+11 2.377119822e+11 2.227403029e+11 2.232298662e+11 2.173673255e+11 2.011866729e+11 1.926118725e+11 1.794525165e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6.603726198e+11 4.989897088e+11 5.423551485e+11 5.896563285e+11 3.695888035e+11 7.261526566e+11 3.953163264e+11 3.890662162e+11 4.775105188e+11 5.922053965e+11 6.441720719e+11 4.147868758e+11 3.557173783e+11 3.344698455e+11 4.407915942e+11 3.44884825e+11 2.0331637e+11 1.695451247e+11 1.404168017e+11 1.827799168e+11 1.416417668e+11 1.407198271e+11 2.23460214e+11 1.484668932e+11 3.533782447e+11 1.3669143e+11 1.863582803e+11 1.324744337e+11 1.280900624e+11 1.839229615e+11 2.024907101e+11 2.115265587e+11 2.314360691e+11 1.991154402e+11 2.477329403e+11 3.977296554e+11 2.740426816e+11 2.989030623e+11 2.787425566e+11 2.727370748e+11 2.325875165e+11 2.002494147e+11 1.951385675e+11 1.96513245e+11 1.894065022e+11 1.841589916e+11 1.807286369e+11 2.661505605e+11 2.307018492e+11 3.519544378e+11 2.070890853e+11 2.093085829e+11 2.060603053e+11 1.939797416e+11 3.408917804e+11 4.367976587e+11 2.188418486e+11 2.238508921e+11 2.316199777e+11 2.299826918e+11 4.127461955e+11 2.40942707e+11 2.292277209e+11 2.321974502e+11 3.43773082e+11 2.328801566e+11 2.281246296e+11 2.322359822e+11 2.017596434e+11 2.011733557e+11 2.713408584e+11 1.776903143e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.945079249e+11 4.006277588e+11 6.103015085e+11 6.481954043e+11 4.279809099e+11 5.40135225e+11 7.792574671e+11 4.298392828e+11 6.619174769e+11 6.137998497e+11 4.418478935e+11 6.921489908e+11 5.67082498e+11 3.500893025e+11 3.272553537e+11 3.659636592e+11 2.968618549e+11 3.307732987e+11 1.463316792e+11 1.341447368e+11 1.41871827e+11 3.155037621e+11 1.369398992e+11 1.378089844e+11 1.405029805e+11 1.357064703e+11 1.351323949e+11 1.217221134e+11 1.348803176e+11 1.215685137e+11 1.327070018e+11 1.47371802e+11 1.781205587e+11 2.279326384e+11 3.356391841e+11 3.79722569e+11 2.987919452e+11 3.649210779e+11 3.584081201e+11 4.44420008e+11 2.165477759e+11 3.201667117e+11 3.15544827e+11 1.988612602e+11 1.916785247e+11 2.578485502e+11 1.796404691e+11 1.777065386e+11 1.843054301e+11 1.912584275e+11 2.028286264e+11 2.03795304e+11 3.172539605e+11 1.924310768e+11 3.058713165e+11 2.108183078e+11 2.169710219e+11 3.00415092e+11 2.207846832e+11 5.099140638e+11 3.130319854e+11 2.452854504e+11 2.453688015e+11 3.542817502e+11 2.414473442e+11 3.610816433e+11 2.573528404e+11 2.619610703e+11 3.283590515e+11 3.109805723e+11 3.09752231e+11 3.25521181e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 167398778.8 4.52367265e+11 4.605768128e+11 5.419438456e+11 6.890571439e+11 5.641120008e+11 4.812592552e+11 4.724068002e+11 5.349968299e+11 6.09498792e+11 6.51679612e+11 5.896554509e+11 4.760636402e+11 6.30642966e+11 4.647024474e+11 4.994919032e+11 3.975529017e+11 3.771036039e+11 2.304637346e+11 2.004762504e+11 1.931780204e+11 1.885154759e+11 1.75522197e+11 1.781992879e+11 1.732029855e+11 1.701949852e+11 1.724721767e+11 2.417757665e+11 1.65976156e+11 2.454087144e+11 1.63303624e+11 1.696929579e+11 1.81896515e+11 2.097766402e+11 2.638005473e+11 4.4662792e+11 3.892553043e+11 3.292810085e+11 3.380369236e+11 3.916263896e+11 3.010162166e+11 2.805390695e+11 3.452050048e+11 3.485839602e+11 2.78548855e+11 2.752936349e+11 3.919025451e+11 2.608429758e+11 5.918242789e+11 2.589545621e+11 3.53375232e+11 2.683839146e+11 3.919146698e+11 2.627240226e+11 3.852803021e+11 2.866224308e+11 2.787386496e+11 2.858718241e+11 3.90398785e+11 4.010049701e+11 3.11317834e+11 4.034883694e+11 3.146625359e+11 4.434408102e+11 3.187699829e+11 3.175750134e+11 3.783890214e+11 3.10569127e+11 4.354478339e+11 3.300403938e+11 3.140671783e+11 2.945429695e+11 2.998045016e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 4.281516264e+11 5.657442238e+11 5.657262204e+11 4.438484113e+11 5.008857981e+11 5.894677696e+11 6.456603974e+11 4.505526879e+11 4.989594912e+11 4.472683096e+11 4.404976181e+11 5.145093287e+11 6.538650533e+11 4.128436754e+11 4.96800622e+11 3.999778566e+11 3.837792989e+11 5.765914628e+11 3.692636394e+11 3.568237804e+11 3.372812462e+11 3.183169313e+11 4.07024937e+11 3.179824876e+11 4.327570499e+11 3.124317863e+11 2.971315631e+11 2.938857343e+11 2.870424633e+11 4.466177207e+11 2.986427338e+11 2.962759888e+11 2.903213434e+11 2.907041104e+11 2.99894426e+11 4.497921484e+11 3.934474645e+11 3.130661728e+11 3.030091082e+11 2.903125273e+11 2.809239983e+11 2.948973466e+11 2.889776995e+11 2.82374417e+11 4.017617828e+11 2.783163778e+11 2.793307236e+11 2.687402916e+11 2.544226231e+11 2.653454899e+11 3.74065453e+11 2.78000188e+11 2.597240008e+11 2.814588899e+11 2.87239922e+11 2.890370256e+11 2.829816452e+11 2.784352473e+11 2.963192859e+11 3.872135764e+11 2.959227894e+11 3.045458771e+11 2.914116959e+11 2.768355855e+11 4.021477165e+11 3.340018302e+11 3.927650348e+11 3.432768113e+11 3.367676908e+11 2.858775645e+11 2.8133906e+11 5.981284712e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 5.741771397e+11 7.196347313e+11 4.017040082e+11 5.02342696e+11 3.872275598e+11 5.008882764e+11 4.779404261e+11 4.814017659e+11 4.962120185e+11 3.760760385e+11 3.63737133e+11 5.623453469e+11 3.527245024e+11 3.423975627e+11 3.403207104e+11 3.407009246e+11 3.301356819e+11 4.373644043e+11 3.29041232e+11 3.221266628e+11 4.787225754e+11 3.905808407e+11 6.117730229e+11 4.406239834e+11 3.568159017e+11 3.571301419e+11 2.978046393e+11 2.739124714e+11 3.537481247e+11 2.775613714e+11 3.557620464e+11 3.825528272e+11 2.575735723e+11 3.568874948e+11 2.49209122e+11 3.13975194e+11 2.461953606e+11 2.391580182e+11 2.428855569e+11 2.285987609e+11 2.327451248e+11 2.26830013e+11 2.258198975e+11 2.130811928e+11 2.051343295e+11 2.079583095e+11 1.949408401e+11 2.028561345e+11 1.942617643e+11 1.998946653e+11 2.070176289e+11 1.998301978e+11 2.069852658e+11 1.971480479e+11 2.087526202e+11 2.174838035e+11 2.103462302e+11 2.131410774e+11 2.211042474e+11 2.196544216e+11 2.679697761e+11 2.005044588e+11 2.071840044e+11 2.195378938e+11 2.076222463e+11 2.048840184e+11 2.088773102e+11 2.09127075e+11 2.513556526e+11 2.508205816e+11 1.946953254e+11 3.014676006e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 3.824080727e+11 3.207218417e+11 5.199470737e+11 3.200937943e+11 3.691640166e+11 3.011589559e+11 3.007697361e+11 2.949142966e+11 2.828489589e+11 3.586781784e+11 2.783018598e+11 2.847816971e+11 2.781752537e+11 2.5262056e+11 2.713643065e+11 3.413562858e+11 2.693041115e+11 2.609337657e+11 3.3116036e+11 6.716544001e+11 3.589608313e+11 2.440222729e+11 4.10391519e+11 3.26622114e+11 3.219244694e+11 2.408869613e+11 2.403330964e+11 2.286411061e+11 2.204796198e+11 2.642145899e+11 2.1135249e+11 2.147952199e+11 3.182122634e+11 1.982337793e+11 2.678832094e+11 1.938375504e+11 1.900833799e+11 1.907028282e+11 2.614440344e+11 1.887909843e+11 1.77454511e+11 1.823827822e+11 2.803077334e+11 1.813482909e+11 1.583561561e+11 1.653365939e+11 1.616301188e+11 1.640764031e+11 1.575044006e+11 1.623307855e+11 1.629570798e+11 1.551772963e+11 1.609773369e+11 1.635931926e+11 1.614312798e+11 1.684294744e+11 1.638149587e+11 1.615146196e+11 1.682000754e+11 1.645454494e+11 1.692930238e+11 2.16472989e+11 1.639302768e+11 2.177782463e+11 2.163746148e+11 1.524231177e+11 1.539932929e+11 1.583809621e+11 1.508198759e+11 1.4987253e+11 1.385507424e+11 1.455624659e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [PSD_Backtrace/PSD_Backtrace.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 20300283.22 6296503715 6288345683 1.062549595e+11 6045448318 6157988879 7.21332087e+10 1.280305044e+11 7.214809417e+10 6560919567 5.885470672e+10 1.059371525e+11 1.102477206e+11 6119276243 7.209038132e+10 6553039081 5.879145422e+10 6126302460 7.210965693e+10 5928269789 1.103435417e+11 1.103415064e+11 5903687985 5.86888618e+10 5813974858 5891888286 5612057180 5610402758 5.866941515e+10 7.205599559e+10 5717675478 5308356944 1.102978475e+11 7.82388655e+10 5217998697 5552576563 1.059028145e+11 5131959519 4907791022 5012233131 4794972553 4854460525 4616765874 4719783636 4838533042 4540943580 4285605615 5132880847 4803044934 4236908415 4744849108 4441273665 4634886043 4451992601 4572911254 4597270888 4626120974 4648280862 5116919444 4625939805 4595401788 4704863437 4488905215 4477839168 4563548479 4718235433 4901930002 4663112281 4286992717 4538175829 4251538167 3978014184 5.86301702e+10 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7572271403 7635613508 7.229048983e+10 7803998193 8073644648 5.897433161e+10 7.843461889e+10 8122337906 7.841953832e+10 8009929135 7636252698 7709182848 7319535951 7.222824118e+10 5.890277136e+10 1.014569277e+11 7184394966 8.29187915e+10 1.249150569e+11 1.559544164e+11 7054888907 7.218148694e+10 1.248778298e+11 5.877876215e+10 5.88050518e+10 1.747609019e+11 7686959413 1.770594887e+11 1.018054408e+11 6522973122 7315316729 7.211742713e+10 7.832600505e+10 6479101998 5960791653 5810080786 7.830732984e+10 5717765737 5.873059986e+10 5656330190 5775833856 5509126733 5688432339 1.103088335e+11 5406824043 5417282362 5327008033 5418005732 5418674564 5504037678 5399822044 5455266943 5469057935 5604654542 5228909143 5362620590 5.872747468e+10 5856746408 5812553788 5695073992 5387159008 5474092650 5332932337 5403043672 5495733263 5424129306 5423333857 5350554080 5571956086 5404577815 4773661103 5573259852 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8179544914 1.104928909e+11 8185782420 1.211394307e+11 1.105363006e+11 8854261937 9.784164221e+10 8561114577 7.849751247e+10 1.106630539e+11 8638638557 8527509428 8073070734 8377651125 8540908250 8146619894 8304611151 7674753237 1.104387458e+11 7727146449 1.559911748e+11 7235476431 7307944534 5.892980914e+10 1.34361317e+11 1.059759153e+11 7082332979 7318558218 7.861656521e+10 6985619335 7.835058886e+10 7.224269199e+10 5.875799667e+10 7160884310 6785015325 7474635614 6991808967 1.870544492e+11 7.841161746e+10 6647830936 6646595482 6694828037 6545597124 6465467211 6400690195 6518232238 6929968398 6558147004 7043930415 6495072969 6592478454 6437563574 6564029856 6579717941 6658087039 6314948790 6585103583 6812840175 6960780769 6983059912 7005410296 7.54405219e+10 1.059543672e+11 1.496901012e+11 6591404876 4.767585658e+10 7.839897162e+10 6614228082 6475832502 6064473262 5.889976967e+10 7.840468764e+10 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8089091659 1.104868724e+11 8180678420 1.106602019e+11 8554362070 7.848374712e+10 7.846058304e+10 8772642222 7.845380894e+10 8616393010 8191132623 8411606366 7.843455921e+10 5.897191755e+10 7506989034 7066333243 6367867253 6060771056 7.85597673e+10 5855975610 5792472544 5762178787 5491875532 5182730533 5556439970 5484545524 7.81924556e+10 5198388288 5486143775 5299052105 5387383543 5554033841 5785882913 6303944574 6309786761 6800633889 6742973249 6958720758 7015688809 4.768239139e+10 4.766428955e+10 6497587038 6660063939 6550041065 1.167569172e+11 6338825892 6490927157 6308990891 1.110998943e+11 1.16745308e+11 6763578992 1.167307074e+11 6918805548 6291252976 6359558977 6395163260 6627523802 6707461835 5.882894334e+10 6941498990 1.107194815e+11 1.014582528e+11 6870946510 1.059571581e+11 7263899818 7103761744 1.203690964e+11 6787473695 6733989510 6511697964 6812969946 6500462624 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7932414310 1.353867362e+11 7.841263198e+10 1.106234996e+11 7994036714 8067674445 7.842008805e+10 8071124192 7855933057 5.90320679e+10 7.841960214e+10 5.890717929e+10 8236477856 7195847074 6849976336 9.168468324e+10 4.757067691e+10 5040353518 4578749304 4402091607 4774969483 4298532709 7.195457982e+10 4339291271 4305283303 4581449999 7.8174178e+10 4340356718 4853412508 4153035465 4300072657 4331239657 4994296050 5462953300 5817182245 6137634039 6610157386 6217432957 6139709194 5969919861 5815790249 1.166993979e+11 4.749726275e+10 5528337402 1.643933951e+11 1.058636685e+11 1.11047103e+11 5199111266 5357739808 1.11044606e+11 5266076663 1.167007366e+11 1.059412452e+11 5427764470 5352466873 5693694293 5631566948 5657237958 5827586764 6034795645 5.873568423e+10 5964451240 6161000553 6283367713 6278228717 6062652567 6293794805 6126516651 7.83599905e+10 6089845328 5817541093 5643065383 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7138641024 7410733138 7380847354 7414859947 7939953521 7743877273 7506500516 7573146863 7496602375 7.838783377e+10 7.232393615e+10 7844035874 7514171107 4.775605866e+10 6740821731 6366172090 5520277083 4775068593 4533437816 4.742927696e+10 4959717103 4433946213 1.166653158e+11 4411665391 4197846340 4318563993 4311610901 4336192611 4118436057 4133816387 4141932727 4166331620 4651567328 5238073786 5546806479 6171405813 6133979559 6333427263 5.872475536e+10 5895947784 5393394194 5240681540 5551595754 5635189299 1.058495506e+11 7.006853602e+10 1.311932906e+11 1.39145694e+11 5085637046 1.497111345e+11 5324967661 5444108517 5287355535 5404558743 5275940430 5281521145 7.833439939e+10 7.831652895e+10 5257832311 5612148715 5540150394 5721339791 5726671309 5661882967 5798061985 5815351763 5778344157 5728447886 5885958236 5367953547 5087231294 5009008266 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6880298663 7413040733 7.831612387e+10 6931288216 7319341900 7626350002 7248597819 7.836016692e+10 7199350045 7462799887 7405625129 7513897299 9.297155795e+10 6633363435 1.059961748e+11 1.103240225e+11 4816060359 4194132378 3897696524 1.101426307e+11 3856433680 4383746266 4121596580 3907774444 1.965691368e+11 4018092368 4784679630 7.81450342e+10 3917895733 3815005202 3884536443 3756150263 4282615966 4784039081 5675893978 5913210360 6234988902 6766806356 5.875155965e+10 5.866034817e+10 5542576522 5073474518 1.166891543e+11 1.167116424e+11 5444683069 1.058621129e+11 5035860799 4698208653 4833746295 5457741012 5817044029 5289513677 5010393165 5182489788 5315076093 5184608783 5625728505 5640640071 5614797132 5461985917 1.689109899e+11 5574656603 5586828143 5867240164 5859383193 5564135425 5863843189 5509951373 5692834485 5131615101 5010977294 4673506736 304653.0538 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6916434238 6972534765 1.059915468e+11 6662872770 7113508342 7112659152 7096915880 7021818936 7368783509 7392885095 7278392377 7.220391836e+10 7002980698 6758889490 6596280216 1.0589581e+11 4636280318 4.733831231e+10 3663261540 3743900550 3811497820 3477956355 1.166414941e+11 3798735370 3786280757 5.858499821e+10 3616254394 5.094749535e+10 3721442758 3311403520 7.816096325e+10 3847138749 4256973185 4776197884 5285432218 6125615752 6174545486 6470399492 6388463145 5853907596 5331874372 5194876048 1.649494916e+11 4897277507 5095432354 4682476515 4600471205 4889099529 4849957756 1.059205936e+11 5150596050 5149553222 1.05910267e+11 5179592215 1.058812997e+11 5040734846 5187700032 5156121592 5542223738 7.831701133e+10 1.05967444e+11 5552572192 5838265289 5704056695 5671088541 5787801437 5880483137 5511699810 5716611828 5398741400 4928530195 4754023689 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6926025686 6816699083 7348312925 7336896126 1.059585319e+11 7014286491 7.838559049e+10 7249953469 7235479802 8158913638 7.83995494e+10 7519823718 7016379704 1.103632313e+11 4.762186036e+10 1.159837413e+11 4744412120 1.015728094e+11 3403659378 1.101331879e+11 3391131924 3825658823 3694665604 3704344604 3601063675 3829119465 3334271708 3657478033 3478528147 3213715520 3668214754 3562497542 4068157067 1.10496495e+11 1.10525646e+11 6185794779 6412771344 6526371102 5871130922 6081870972 5366879255 4763247770 1.16694315e+11 1.959252405e+11 1.166712153e+11 5074037713 4667498149 4601926380 4594425476 4893092664 4784972468 5174440704 5017462410 4904577708 4893695122 7.850493065e+10 5470544581 5335488944 5345582527 7.833628093e+10 7.834055709e+10 5452403007 1.059521933e+11 5767014607 1.167187546e+11 5610582443 5800250273 5624670364 1.110365567e+11 5194258428 4963507816 4770442280 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 6648664639 6841884418 6933185863 6646667649 6882182997 7179693954 7310420396 7437858255 7059097316 7420193095 7683070045 6988965725 7281272321 6321684091 1.774433803e+11 5455466131 7.815887951e+10 3768439826 3491336013 3512632971 3578753785 3556494917 3644515276 3355308989 3661493104 5.857982636e+10 4163840338 3603803369 3638488822 3399945323 3217963993 3475442788 4187626991 5264198783 5429187483 6237734976 6236068686 6392413409 6303033167 5821912049 5357909832 4865525172 4665843666 4732939570 1.360058646e+11 1.166847168e+11 4629785241 4841760485 5151589811 4966590660 4806145830 4937580427 4957087321 5035949677 5054671708 5213404907 5592790940 5306570209 5326371882 7.833902485e+10 1.059521027e+11 1.167033898e+11 5772062348 7.834235871e+10 1.059468796e+11 5857987300 1.059649027e+11 5350789315 5324345680 5081211352 4968085986 4660459387 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7088624611 7141077362 7108331032 7126538020 1.496971826e+11 7050327993 6860232148 7013294794 7166335964 7557920316 7193784348 7382442665 6552538936 6162036145 5945570665 5473894247 7.815047852e+10 3939833420 3504253034 3597013514 3710445495 3753061380 4190381312 3673496546 3504979206 7.814090115e+10 3743372690 3616017966 3535188153 3656310432 3620480986 1.166547969e+11 4186427827 5112468259 5791316031 6353753847 6363592500 6244575363 6490188348 5844000860 5357799826 5078641505 5461165406 1.649435054e+11 4596353672 4783302214 7.00462996e+10 4722865211 4625264352 4907083433 5.102757015e+10 5019400123 4810447783 7.829948753e+10 5079684178 4.001589755e+10 4953170578 5005922009 5245950469 1.059461648e+11 5388564020 5469572996 5862012748 1.059588664e+11 1.059474706e+11 1.059515895e+11 5647384822 1.110635716e+11 5474591500 5130884580 4913830465 5122312060 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1.105505704e+11 1.404592732e+11 7594644609 7428737364 1.496956513e+11 7521736609 7475388874 7425674130 7271661436 7109810977 7.871961304e+10 8215143539 6634375492 6777076822 5996352459 5606673214 4868525643 4410323724 3749172376 3818642747 3976969045 4002988272 3822716244 3846979015 3786493768 9.760844553e+10 4037636442 3697479181 3770108314 3771507636 3522797676 3908548137 4171850195 4868847135 6112812313 6399221687 6510530430 7054770677 6624518835 5675120697 5367830917 1.166957745e+11 1.166851626e+11 5299866510 5214966277 1.16677146e+11 7.004175403e+10 5.105500446e+10 5.101968785e+10 4930046418 1.059243968e+11 5541645759 5290339035 5074481211 4.001084502e+10 5737349024 5405344552 5099253179 5506903690 5311501617 5730875147 5619318312 1.759369385e+11 1.575296207e+11 5616607162 5811516388 5454121904 5660253276 5427443599 5642717381 5062989559 4837737010 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1.562088147e+11 9.777062161e+10 1.105989914e+11 1.575569698e+11 7211870638 1.959956581e+11 8030630014 7599885837 1.104098968e+11 1.406726444e+11 1.43386653e+11 8075444748 7063129113 7043021438 1.391398392e+11 7.85563226e+10 5379794642 5347273986 4344539637 4.741269188e+10 4368536946 4431702399 7.816356176e+10 4771395710 1.495726372e+11 4293834117 4.738991047e+10 4202295371 4002923462 5.860375437e+10 7.815605464e+10 7.814940015e+10 7.815726537e+10 5204232773 5854368036 1.059724632e+11 6115681166 6642341397 6215626070 6263356218 5848670159 5369494655 5146264549 5188940111 5121900963 5074198870 4918803640 7.006673627e+10 5.104747941e+10 1.174261942e+11 5331405832 5381023466 5435184221 5466943866 9.773995433e+10 1.595480896e+11 5532813766 5482003337 5813395619 5648566199 1.315937587e+11 5807398799 5503978662 5577998236 1.167088736e+11 5571600080 5554304886 5980003667 5015119554 5175576130 7.829317058e+10 5245024394 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8183191435 7489367508 1.405001823e+11 1.605805322e+11 7877865858 1.060291314e+11 2.020595724e+11 8844515556 1.482193642e+11 1.20240841e+11 7877807179 1.188654416e+11 1.122539723e+11 7054886710 6846221556 7.839671454e+10 7.853577669e+10 1.104677222e+11 4913292961 4205662080 4358538439 1.304764859e+11 4175684907 4294397257 4378283857 4483699557 4851436451 3901938254 4350069851 4052319576 4678298929 4458238758 5037758288 6153105488 7.827048908e+10 7.828666945e+10 6663163776 7.827145534e+10 7.827887994e+10 1.404029773e+11 5578317486 1.167051281e+11 1.167192849e+11 5728526880 5632413648 7.827879532e+10 4940961326 4825990487 5011383350 5167832600 5259470441 5207861784 1.166927495e+11 5038840843 1.059365752e+11 5749955628 5413514991 7.834805821e+10 5411348527 1.531125415e+11 7.836531191e+10 5778036582 5705276935 1.167136871e+11 5781617363 1.167253482e+11 5955638710 6396224660 7.835176496e+10 7.83416746e+10 7.833290772e+10 1.059189836e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 167398778.8 8769127242 8458422658 7.851935345e+10 1.35377747e+11 7.850546407e+10 8314235400 8631689762 7.878206497e+10 1.110800602e+11 1.20704677e+11 1.110552581e+11 4.780481208e+10 1.481867668e+11 7.868902279e+10 1.109863153e+11 7.862473928e+10 1.167280194e+11 5805450342 5706356877 5285794344 5155882307 4765891676 5028127221 4841281359 5256921459 5017632505 7.827066356e+10 4776244701 7.817854524e+10 4644233597 4876138452 4857279805 5317738596 6652032750 1.105411524e+11 7.829621971e+10 6670011251 6948421607 7.842339821e+10 6389096746 6168316869 7.826540318e+10 7.836341986e+10 6404768687 6378915025 9.77564784e+10 6111188618 1.574277707e+11 6229783305 7.838898244e+10 6226428601 1.167393242e+11 6314793211 7.770573465e+10 6362118591 6219600949 6323986749 1.059939245e+11 1.059998573e+11 6481766461 6.707921104e+10 6519957077 9.152378485e+10 6717110667 6719803623 5.884467903e+10 6402126358 1.111212807e+11 7434792716 6777909780 6700008592 6424025085 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7962298117 1.060879937e+11 1.104775336e+11 7879659140 4.787093723e+10 1.168686777e+11 1.354194789e+11 8265858902 4.793712143e+10 8114047851 8016259256 7.875653316e+10 1.357233544e+11 7657816881 7.844566802e+10 7491400563 7526132015 1.49700374e+11 7636601180 7255675522 6922116075 7111898789 7.832750938e+10 6639749247 1.167591155e+11 6774935815 6377730233 6455301242 6551227687 1.013484657e+11 6930692961 6937853635 6375869200 6245196901 6349608511 1.10531269e+11 7.830420031e+10 6666545203 6482157780 6337712043 6220992263 6534031789 6363033247 6258363201 1.167606628e+11 6358356675 6627657587 6059677836 6072590854 6035823822 1.059406744e+11 6428168410 5904786759 6277428203 6330656928 6430156732 6382443355 6087739837 6563012581 1.059901024e+11 6358997225 6549995414 7266128296 6162248257 1.11125168e+11 5.877631032e+10 8.291724257e+10 5.879486768e+10 5.88149233e+10 6468709854 6190505058 1.863041064e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1.318306201e+11 1.833280533e+11 7825981417 1.1041877e+11 7237684630 1.10419896e+11 7.841660023e+10 7.224054856e+10 1.104285307e+11 7403613032 7270446819 1.353853276e+11 7084310464 6832064344 7077541473 7026190013 6808774251 1.059668493e+11 7065216075 6883395387 1.106552613e+11 7.837273403e+10 1.562173721e+11 9.767744173e+10 5.87479377e+10 5.876554715e+10 6357141590 6079356925 5.882167271e+10 6172224324 7.838950124e+10 1.103556212e+11 6080261935 1.103243365e+11 6092907010 7.204504572e+10 5930819617 5853359065 5995077834 5764705301 5915714634 5837944765 5682075183 5527198405 5586066378 5638432480 5353685703 5284275707 5201644720 5334799768 5438812032 5427738466 5512583291 5065545527 5347177118 5788810538 5370273738 5499218111 5526859555 5611900146 5.871234672e+10 4981136195 5279775792 5799608551 5306746371 5322133333 5636955032 5454367551 5.868439654e+10 5.870526264e+10 5276824895 1.10300551e+11 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7.83006866e+10 6755209388 1.497010306e+11 6801589171 5.887397209e+10 6664154931 6970948731 6422324235 6255182367 5.883784523e+10 6233181719 6473741461 6574289207 5875003226 6335115586 7.826964342e+10 6361382143 5927297819 7.826388475e+10 1.904592516e+11 1.059200645e+11 5778521325 1.105153528e+11 7.826448172e+10 7.824648465e+10 5868502706 5840745972 5662480959 5516286971 4.749312266e+10 5427026781 5560713975 1.103006204e+11 5061230045 7.818139429e+10 5122185639 5357964208 5231692929 7.205437889e+10 5272051894 5023869171 5324967412 1.05875585e+11 5552218759 4746878065 4960176344 4931511699 5068053971 4770998542 4961968533 4976398645 4741132105 4839166178 4816966933 4702116138 5130640167 4902346858 4864770970 4904369727 4824205686 5035140578 5.864180551e+10 4772957720 5.866050093e+10 5.865791593e+10 4571525293 4630524673 4758635363 4471734956 4652233425 4244774287 4351734494 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [PSD_Backtrace/PSD_Backtrace.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 6853 6716 6662 6646 6719 6522 6554 6500 6509 6519 6414 6434 6317 6293 6271 6176 6202 6343 6029 6212 6142 6187 6063 5838 6169 5877 5931 6068 5860 6007 5851 5924 6074 6162 6127 5974 5929 6043 6096 5921 5860 5672 5712 5701 5576 5424 5506 5460 5489 5391 5321 5143 5183 5014 5195 4962 4972 4833 4791 4803 4608 4592 4419 4490 4535 4347 4166 4119 4187 4082 3967 3894 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11310 11623 11508 11342 11318 10943 11073 10877 10577 10665 10252 10025 9485 9233 8871 8820 8914 8904 8830 8963 8855 8912 8987 8807 8871 8913 9131 8918 8883 8867 9113 8858 8947 8833 8617 8675 8756 8372 8032 7839 8179 8083 8101 7950 7845 7905 7619 7640 7611 7504 7613 7238 7111 7092 6974 6787 6924 6796 6687 6605 6513 6390 6477 6316 6205 6130 6060 5852 5988 5733 5385 5433 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 13372 13594 13846 14196 14195 14180 14445 14157 14034 13911 13805 14045 13727 13613 13382 12842 12446 12244 11831 11944 11794 11539 11436 11681 11523 11593 11836 11706 11678 11563 11895 11801 11987 12509 12606 13022 12716 12334 11999 11575 11660 11559 11314 11353 11076 11250 11182 11013 10716 10681 10716 10669 10516 10368 10141 10302 10145 10023 10107 9767 9598 9727 9684 9484 9356 9151 9128 9157 8872 8761 8439 8417 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 12240 12726 13106 13397 13279 13235 13323 13133 12990 13245 13361 13224 12751 12443 11526 10669 9314 8210 7570 7418 7186 7306 7227 7122 7299 7279 7288 7377 7460 7517 7524 8052 9015 10527 11981 13186 13696 13972 13632 13325 12921 12680 12536 12187 12196 12159 11989 11942 11825 11746 12058 11787 11764 11443 11326 11365 11238 11151 10782 10970 10648 10524 10551 10399 10198 10306 9970 10020 9735 9259 8947 8777 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 10786 11145 11542 11534 11681 11884 11806 11577 11519 12019 12393 12450 11852 10557 10091 8554 7021 5348 4490 4291 4530 4485 4436 4486 4649 4480 4602 4713 4651 4635 4720 5285 6547 8329 9967 11417 12109 12761 12428 11728 10773 10041 10082 10067 9639 9544 9366 9312 9332 9405 9621 9678 9654 9196 9140 9234 9070 9207 8976 8960 8902 8903 8616 8594 8486 8376 8433 8273 7834 7802 7422 7073 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9322 9760 10082 10077 10110 10218 10304 10045 10154 10503 11204 11778 10874 10220 9407 7853 6054 4425 3548 3661 3777 3846 3741 3789 3799 3906 3836 3875 3958 3858 3775 4206 5360 7217 9049 10693 11999 12633 12483 11927 10618 10114 9980 9746 9424 9431 9166 9079 8955 9109 9269 9459 9179 9029 8828 8976 8928 8781 8560 8474 8289 8264 7986 7876 7470 7487 7261 6972 6743 6368 5883 5795 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8168 8256 8756 8822 8961 8951 9050 8705 8999 9586 10300 10419 9637 8653 7979 6811 5040 3378 2755 2736 2863 3042 2956 2970 2930 3013 3127 2982 2862 2772 2733 3053 4192 6388 8471 10488 11705 12575 12697 11799 11085 10347 10123 9916 9802 9351 9293 9076 8938 9100 9265 9346 9257 8955 8936 9085 8832 8925 8820 8618 8472 8328 8043 7816 7530 7245 7029 6915 6613 6263 5935 5535 1 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7579 7967 7992 8074 8409 8384 8318 8253 8313 8950 9661 9603 8793 7887 7172 6034 4211 2778 1992 2021 2199 2242 2291 2245 2281 2228 2145 2203 2231 2009 1864 2361 3623 5529 7925 10174 11557 12087 12388 11678 11008 10080 9954 9591 9542 9335 9108 8835 8568 8814 8975 9106 8903 8809 8631 8667 8742 8442 8583 8406 8335 8260 8024 7686 7658 7389 7125 6819 6678 6176 5917 5460 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7616 7599 7868 7855 7823 8323 8372 8341 8206 9170 9398 9519 8656 7957 7141 5778 4176 2599 1869 2011 2046 2190 2118 2100 2115 2112 2053 2096 2045 1956 1800 2259 3461 5648 7927 10013 11383 12288 12264 11926 10894 9882 9609 9545 9444 9400 8813 8842 8431 8537 8616 8836 8784 8843 8399 8771 8709 8696 8496 8235 8232 7964 7886 7680 7273 7095 7088 6762 6343 6033 5867 5303 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7458 7662 7838 7900 8130 8257 8391 8064 8118 8749 9414 9316 8581 7683 7151 5933 4002 2592 1891 1893 2112 2134 2085 2140 2091 2148 2044 2066 2025 1849 1741 2228 3587 5730 8045 10326 11461 12168 12355 11739 10962 9878 9562 9524 9399 9243 8934 8840 8532 8485 8621 8596 8665 8309 8550 8620 8607 8520 8489 8331 8146 8252 7835 7764 7345 7204 6973 6653 6440 6038 5833 5416 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 7819 7730 7722 8132 8077 8196 8236 8133 7964 8936 9609 9658 8535 7823 7046 5982 4131 2708 1924 1999 2170 2205 2190 2160 2121 2128 2130 2161 2054 1841 1863 2246 3552 5712 7923 10135 11459 12225 12410 11875 10832 10072 9724 9711 9474 9121 9081 8671 8492 8503 8812 8986 8695 8766 8246 8766 8724 8499 8564 8415 8328 8064 7957 7665 7491 7128 6891 6814 6402 6233 5745 5427 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8022 7905 8305 8664 8535 8662 8611 8497 8523 9159 9900 10118 9206 8362 7653 6475 4674 3273 2523 2447 2651 2733 2775 2769 2728 2802 2644 2830 2689 2569 2431 2923 4152 6143 8329 10544 11735 12387 12656 12015 11062 10394 10007 10027 9611 9561 9238 8860 8877 8739 9041 9314 9354 8758 8932 8899 8766 8515 8836 8538 8267 8165 8084 7747 7508 7328 7086 6866 6597 6326 6072 5584 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9059 9345 9666 9481 9634 9963 9956 9827 9623 10301 11000 11457 10669 9793 9089 7723 5704 4400 3723 3565 3712 3738 3840 3757 3822 3787 3902 3755 3796 3606 3571 4087 5272 7035 9074 11062 11675 12673 12552 12144 11042 10192 10185 10075 9768 9307 9012 8966 8808 9047 9282 9511 9303 8914 8850 8940 8889 8864 8718 8468 8374 8262 8058 7783 7564 7286 7139 7042 6735 6393 6048 5551 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 10471 10798 11082 11031 11248 11436 11164 10958 11208 11699 12454 12353 11700 10678 9830 8447 6488 5097 4313 4152 4206 4180 4261 4271 4441 4420 4456 4437 4401 4427 4544 5179 6125 8007 9694 11174 11873 12053 12110 11373 10239 9722 9627 9379 9164 9034 8868 8514 8479 8608 8927 8978 8675 8487 8494 8466 8441 8573 8328 8360 8284 8357 8190 7955 7855 7859 7907 7718 7629 7358 6962 6647 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 1 11915 12433 12391 12626 12724 12903 12656 12613 12602 12836 12776 13170 12014 11512 10726 9497 8098 7111 6301 6180 5968 5934 5967 6058 5893 6032 6090 6259 6218 6339 6354 6958 8011 9508 10674 11603 12419 13066 12726 12332 11685 11514 11471 11499 11153 10954 10828 10794 10691 10662 10835 10829 10521 10570 10599 10375 10605 10346 10304 10455 10275 10323 10053 9746 9768 9708 9686 9737 9430 9248 8757 8574 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 12135 12405 12541 12493 12587 12643 12559 12328 12497 12474 12209 12295 11752 11796 11608 11364 10913 10675 10277 10416 10016 10067 10166 10102 10266 10085 9949 10121 10046 10002 10251 10290 10670 10697 10946 10880 11053 10948 10669 10554 10487 10444 10370 10343 10226 9888 10150 9955 9729 9646 9614 9842 9361 9712 9501 9366 9173 9247 9211 9166 9037 9074 8932 8640 8795 8407 8410 8349 8209 8017 8136 7866 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 11342 11702 11588 11645 11439 11446 11194 11198 10987 10721 10518 10449 9524 9064 9045 8993 9023 8865 9009 9058 8860 8911 8872 8924 8901 9018 8954 8889 8986 8879 8883 8899 8854 8659 8631 8408 8319 8095 8239 8005 7929 7898 8080 7886 7822 7728 7521 7695 7366 7404 7433 7452 7325 7148 7114 7008 7080 6914 6991 6785 6699 6587 6538 6543 6329 6190 6248 6047 5963 5758 5819 5772 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 8601 8777 8476 8395 8135 7894 7945 7889 7502 7650 7277 7115 6688 6613 6611 6565 6651 6778 6621 6602 6529 6689 6576 6497 6701 6769 6609 6581 6543 6671 6737 6688 6671 6589 6587 6536 6252 6345 6461 6406 6440 6265 6246 6318 5950 6082 6083 6020 5975 5815 5837 5879 5732 5622 5542 5381 5437 5370 5325 5306 5354 5141 5132 5037 4875 4764 4761 4805 4755 4535 4452 4523 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/PSD_cut.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/PSD_cut.dat new file mode 100644 index 0000000000..e15a66ee71 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/PSD_cut.dat @@ -0,0 +1,335 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: PSD_cut +# position: 1.69078 0 -1.24822 +# title: PSD monitor +# Ncount: 10622832 +# filename: PSD_cut.dat +# statistics: X0=-0.000143389; dX=0.287533; Y0=0.00811166; dY=0.288024; +# signal: Min=1.00158e-20; Max=7.17965e+08; Mean=1.05054e+07; +# values: 8.50941e+10 2.19134e+09 89282 +# xvar: X +# yvar: Y +# xlabel: X position [cm] +# ylabel: Y position [cm] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.5 0.5 -0.5 0.5 +# variables: I I_err N +# Data [PSD_cut/PSD_cut.dat] I: +22132123.93 42687786.52 4338412.977 57007905.96 538.2881189 10812764.9 46827.36974 139446.9272 5339033.588 4124291.39 11193768.81 22289792.2 837076.9895 2.940745838 144879.5625 30309599.66 168167.0188 2150.525592 65940.47446 48652.57988 37.02634079 120.492878 4814410.549 16721643.55 9437761.084 410356.844 1938.78548 14371.52771 188.2699134 1999467.575 43095187.5 5445.797967 37595.26294 17744220 11887.30318 88152.90457 233581.2319 18356581.2 1365885.881 0.2748081972 4619285.066 1958702.966 34949070.75 23353553.72 23583096.09 200295.0576 13154386 46214672.98 4918950.5 226585.0647 43552060.59 15630510.95 202650.4531 581622.75 18187386.59 7376768.484 112893.5755 0.0003452575057 105782.6852 5.232443678e-05 11460.50716 16766581.03 78002.86713 130598.4001 3.832374469 33440656.88 5911164.538 49660644.65 0.0001978210376 1.497644414 5.623079989 26453188.26 37734149.06 2001103.741 28867014.8 1088880.42 0.7024980113 12964276.37 3222781.047 27370.12029 63608973.71 4724033.303 440566.1639 1349.846497 0.1538416571 24583442.44 13408235.11 1363387.651 986579.6084 251787.8133 +2259393.798 7362.090029 85711.50657 16055209.64 1743774.463 32422271.12 2958076.603 4160072.618 16109395.68 102614.2691 72233601.04 14217836.63 4399147.72 42422755.01 0.3489225003 539332.5228 3419082.069 2375.662963 331216.7605 43077181.99 48635405.69 0.311677717 12208.60885 16134201.25 0.3645289715 10151367.62 693.409367 1367557.694 11052166.56 1878416.191 10169.13942 5082100.908 20618276.73 5307.412006 6516614.517 60340272.19 23045737.51 74932994.04 931946.1626 1064797.959 1021676.669 108211.7462 176569624 15008957.77 30571.23446 8929409.637 24287.13299 18183035.77 10821.73029 24588.81521 27.47606144 44991.96296 190.5579823 3161212.444 17911039.38 8212.328359 6096930.947 26.96413159 16379342.48 777945.4268 35140080.04 17160936.77 1699.352822 173519.6388 7743336.861 20819650.15 141609.8037 259948.5047 4423281.771 74445.61987 0.002040106438 7185610.141 3047148.89 51183856.36 17552915.59 11428265.78 3426157.43 8760742.307 298607.8405 5868179.989 12086.15123 59047.31169 8085313.103 147559.7473 70386.73921 198795.1819 1.13544879e-08 45815879.89 3946392.436 577.0994873 +191222453 52919988.94 16244581.42 1776.138155 439245.7259 17087.51515 20951353.98 249401177.8 0.005034347631 41525.84336 22918270.83 220483027.1 20075.98837 1432826.867 15042.21114 26581035.06 2.772497892 22734988.69 2121558.19 46206.75982 11500499.98 356.8779196 64.86236742 1465.983127 61491848.07 5316041.432 385.3610286 3966189.653 14081.50349 50757.78589 5.650348945e-06 1984.318198 532850.8185 1140224.513 16172028.92 2849160.629 3488607.276 1941538.557 6735167.515 6756222.562 26717.12947 24089129.29 41193387.66 526.6762695 14296444.78 683460.9384 7406.959225 7710843.002 16879115.38 441379.2754 285049.6218 2195036.577 19946782.62 1975558.58 29831346.99 627875.6399 31.80437596 188.3685761 509077.45 12335880.44 5.346445554e-07 142259.0747 3187196.906 1113.213867 0.434833721 15868145.04 24620873.03 39633.29722 173.5352614 1504367.809 938292.6061 20.05375318 16026.79937 8414814.544 4172354.586 76983.03763 1728.556402 169920.405 533242.2606 68132213.22 49020972.89 155120.5708 2496.882394 61296.2653 6876960.962 0.2928589492 8272048.186 1236052.949 80789.65444 1158.119732 +3110569.375 9685191.58 33358804.27 631.150792 2.196582411 102180429.5 3175485.931 9.680750683 2768199.697 5.673210144 13536368.23 5654634.85 1115204.835 839685.3847 61002.97376 4726342.174 274160.8438 272281.2694 2042826.816 4.529019528e-05 7675.658521 204653.1186 22754306.27 8541440.753 7993454.065 2913978.62 4379697.002 228833.8672 3348663.829 26478.37078 6007.744072 16262061.09 10470743.65 16718.51994 16505.69354 82835.26597 16133893.93 12893.66232 8752457.862 53712280.25 86.03184438 14018.27679 450811.9258 18167743.55 27579025.96 6529941.843 3117070.865 521861.8384 10838841.67 15995390.95 81390.84732 14136370 4219268.866 42.855557 443668.6185 15559.92578 57964.77905 5389.980058 41.5687149 3432317.723 22314.67561 70387213.25 1.584297725 136.0755519 709638.9114 52141641.84 36724.7939 2672117.99 15587.75033 1.110228945 48204856.18 14.63168016 30014.69836 1005.606812 13233668.01 9429155.507 203659.0894 11924796.82 85598.00328 9343066.601 734.7308371 2293785.643 26.37035596 5444767.87 8419.884135 29712.57658 44212665.23 478353.0315 405658.3134 347.9772674 +176.7663907 56358.17344 3478185.38 6109088.222 1543136.268 1819162.591 1210214.871 7724977.71 237252.2863 68410.8257 27264.53163 5352533.648 6649384.71 3.037550932 57407.62967 2.852640285 307.252316 844242.853 102386159.6 1032.100171 65.18855485 17.20554229 23514134.17 5375878.264 87554.17023 684.5068647 293604.0087 1999736.369 45840723.63 18905042.33 35780987.39 3318502.194 34363.08984 3.79629719e-07 7374951.712 341453.1421 4430780.635 13182255.85 80.73789852 9660.086986 18171639.2 3467755.467 7078.011699 4005112.049 30821866.03 108072957.3 2584200.7 0.2810981633 1853645.229 1.79022573 48175583.69 418634.3775 6125278.84 319422.313 3590.857219 49623.51679 4115150.802 1622067.499 8519710 23378863.9 2202846.92 16118052.3 103.741231 859.3828104 60.02585174 0.1225223362 7539.502786 394553.1799 12121.59493 1388546.819 17776321.2 4413.44148 180974.7388 3621512.502 45376.74374 4700574.974 10.71441174 7034.01283 94037280.24 2578706.742 13583512.07 925745.1202 14.11503497 13460.32821 7825578.759 1195008.99 17386337.32 641622.0749 17559946.34 11975685.16 +12.04396879 15588.60722 213183564.8 2876171.219 16614951.69 3627949.396 42954338.7 70620457.29 23870.85759 2179583.874 54.12703382 5477500.271 0.00988993044 26637.47581 1689749.925 31.92632756 79536459.33 160395.2251 9350140.333 2336.79839 10129589.87 10734.87983 6779932.935 69613.05813 11382188.95 6622820.314 1544563.166 11110868.73 0.218978722 0.08910590816 0.2036712416 280420.2188 104581.3077 27137.68254 12836939.23 1882.222396 237145.6924 156664.4148 558266.0334 1877803.283 23117.47743 9106412.337 75.36250325 188210.5589 6154131.217 29348707.26 1638455.029 0.001130688576 1213.207367 3882776.626 14095667.05 98696.92899 4784068.501 2672838.175 43281580.99 8695298.923 1433.026443 45591428 13098517.86 227.7114463 28841519.37 0.1038231007 12828689.64 624107.6346 12406813.38 5610610.421 3856898.217 3.377592302 2577338.718 6710675.071 103363.2371 10287213.31 186923.7318 38368.30914 109935.9075 28143606.34 7.676156321e-05 51532660.21 0.002059937921 2550619.976 15324.31102 7215831.148 663500.6801 56.91357077 672105.8044 0.0002107161292 4242.176574 45953106.42 10633857.75 2199249.433 +111568.5565 21146935.4 2.19901069 708.5378011 631067.1522 88749.22251 227.6815218 10645837.71 8555790.73 143501937.4 14999704.26 101.6626792 6812088.121 238.5156917 4766914.006 86902.71448 812.9860657 0.1240732966 11927.0307 1473.038415 18629.8548 22392755.73 87149899.45 13441526.25 15992077.12 2061.083812 304.4738506 40280.02908 6519774.454 1575738.829 227402.5159 9771256.249 1061093.344 12923195.64 3198937.669 105.9001684 29200784 10051347.25 1085087.375 14842.46756 8828.101369 5517.591428 23070.3962 6.980507646e-08 14488660.88 206999.8016 15696276.85 23860757.79 85607.34334 12.30819189 0.006094582633 82986400.82 28008871.43 25145346.25 0.6767162254 625808.059 5509223.625 13117431.7 556717.6445 8775911.946 40878190.98 5174.077776 191.2396543 77187.02322 45639.25695 85651.00546 297307.7673 2590.025914 798098.8006 15331.42058 0.03074444393 43519.18662 18109707.25 219821.4553 15635020 27.57047662 108831.3085 31308.18091 497512.8945 20098.46302 3588021.148 38038.85082 4.859157366 2261247.615 1.00518985 3334.262083 31063486.41 41972014.02 6.925668721 144325.4533 +14351.49048 18611484.26 28.95042142 372332.0026 48.60581885 168.0196191 0.110812739 38215889.21 359777.5375 300733.3586 319.0050257 47446150.99 9581586.488 11464.51175 2820781.691 13529.83965 831101.322 0.2365306796 12165982.71 324225.7366 64161118.95 6554169.018 572551.3088 0.001858008303 308216.7224 9138205.143 22213368.14 752.7692811 25137028.88 2375.610891 1227017.712 2635321.234 8.949272156 116634870.9 2592257.094 10515235.98 35.07465068 379498.3659 10847153.42 3978309.383 1019878.256 228980.128 0.3651110451 5392037.419 2281552.718 10375551.27 31349271.73 19359.95911 18710.27081 1955.63849 75564055.08 2773083.364 71667.60982 26455356.58 5011814.945 6997045.255 3.124004609 1121228.157 4074755.341 7089836.365 79.9770776 816180.5868 0.0007111505453 260377.588 0.0004306318839 17472.82837 246175.6251 869.1863037 27275792.58 6210.189482 44481452.42 1194165.017 150593246.6 7227815.377 253115.4535 15584600.29 5987410.582 9303905.666 2356974.5 18877.62073 2236943.809 45871123 2477570.348 479940.1096 4608244.819 19513081.44 402433.0731 41801476.37 6.488529959e-14 8286909.407 +278093.8958 320.4673719 456216.2601 10890421.32 696359.125 5.460544518 6789968.725 3331373.295 9331496.298 58001.88544 404.6087552 6.707471497e-06 61707.21703 184737.893 95426691.91 1150.743579 5572754.891 930.1284484 96636804.41 1.244192046e-06 23962557.33 425860.393 37418103.08 264403.2322 222600.5566 398163.546 150826855.8 98.49693828 11374940.96 148.4103046 416002.1688 30580352.6 2178438.123 3379581.747 69585.71996 1766.434749 588650.7566 7027272.716 9787516 1212042.207 101444.9382 1697.750127 445184.8621 10137089.51 28899.979 35995.45607 9631.471713 38618255.46 20.23361588 1664894.875 964296.6059 11531838.06 1.188800481 14989766.92 1824324.73 39.30804437 30966.37441 9.447893658 70005382.63 240089.9258 19193.58501 3417952.89 2761763.698 3.456408066e-07 133985.5273 42715316.48 988311.1114 8158727.496 5877.091035 231062.421 2531139.876 233.0146653 132023.1863 0.007256855357 5610.799641 35931.29889 499.9302368 11419613.9 14175151.82 26070295.11 327479546.6 16223.43902 85783.91168 21599167.93 715084.4223 249.5633928 283089.0999 12030844.92 20312544.38 6912.321648 +20770889.59 1434769.788 10659037.54 2008557.924 1810747.28 22539.47768 17595074.38 0.8497986283 13125735.71 0.4792278793 46118335.16 3235.542729 2053712.005 35806954.11 12973.2065 2211307.804 27061482.36 49756.07814 18706670.24 870441.2393 259604.1045 13289956.54 173.1724665 0.4960411607 12540612.41 1702002.743 10263945.19 4.032582749e-05 2748.095657 4194846.421 1529.481116 14109368.4 8.781216111 1.061606646 102.7841 208360.6398 7317136.524 236.4190844 15198716.46 973806.778 17446.21664 205514.5811 44810289.46 52327892.41 0.007256312249 27.21753373 2181570.271 379.498128 6655423.939 620921.9525 8734044.282 91753067.47 18043737.28 0.05438793423 67098145.75 3.797213587e-05 2423568.128 5853664.667 30716646.63 1507581.479 1169122.079 4.432466085e-06 41948.25548 1143684.96 924.7146662 10787421 42.63501433 39.04294471 19703278.04 14674.28996 80661093.82 22168.19821 0.002817451448 574.9965635 507776.2657 21836.46802 2255015.039 1.711277192 4013442.334 1106.014163 69607.16084 161141.841 1251311.07 66102.10233 8323022.885 351381.9422 991086.8556 8462465.414 52750667.48 385.3651435 +2360.964506 3965072.436 204.0397159 28324016.35 192645.9515 106.0980458 15507896.58 9119460.541 52587.70971 5815567.297 14845.69787 11264.79691 22724285.86 3961598.013 216573.3055 10738436.19 101.6497843 0.0223374515 9064960.894 4851.774326 1340129.279 2378466.748 12979363.69 27836934.9 13300218.23 44635284.24 212784.2944 33446819.16 38492222.09 45191243.71 13061.77828 3906.011257 1839105.091 891.8092227 74500610.41 328087.5259 6298829.655 3623513.787 2775.102946 67756601.89 2191366.799 13355215.89 69.4727172 21506.47887 0.0001949900295 188955.3358 76490.87936 9182940.62 11462519.48 35762702.8 0.0005052996025 1963549.442 2674.633671 94308.17288 2677337.335 2724314.352 368.927619 37174.66101 6296456.072 26736390.19 1264868.145 3710746.88 365.7647096 14150982.29 27260443.96 5894219.163 6157189.962 20411924.58 68294.86149 2286915.72 1969.685715 18.16843178 195220.7791 23627825.94 10352505.08 12928243.86 12768824.48 3841.138868 2.525812242e-12 5574917.419 22751344.32 2192664.269 0.001448603206 20680474.49 36631.84109 4616.637085 41558.5159 1385850.565 1716974.911 15085962.59 +5703795.21 0.003768176364 1297837.04 1.428501303 5111862.902 9243536.512 29011556.25 7023380.972 5000812.998 7887756.267 1384016.505 138640.6092 175631.172 156704.0787 233.5051638 23422152.07 2721665.127 10551199.54 36946868.39 407735.4689 0.06247370016 2.179198678 3811.225436 825.6028163 13279.29785 58536170.62 1549.284341 23283066.33 4861.988519 668442.1904 3739222.625 26004832.13 162397.6243 30595440.2 1658944.684 1471493.678 10197196.56 49574.8635 1304847.842 80232083.6 75.4026289 0.005143178902 1268019.151 6188089.316 16487242.43 34173885.18 66091585.4 1969716.544 9932247.135 1039021.396 70877.23655 5302242.624 6640.162677 381.5115697 1002608.265 216.4810055 469929.9189 66379.99082 30742.43538 1245735.399 58.2362823 55501355.22 2002472.382 163656629.4 1094989.108 8995741.252 21590897.63 5192238.327 52708105.3 9.149878715 22382532.33 12042829.28 592467.6784 6024397.156 93782.63836 20409.13504 1705352.143 88015.89761 20086169.55 2259.708978 25331.95125 18376449.82 490857.5659 0.6003405965 4691731.899 7658611.607 364529.4804 665398.1947 2113948.739 11606854.18 +1.874458692 34314.58428 4536330.581 128554.0216 0.03865092872 6664254.254 35255608.06 38993863.81 109777357.5 1092134.943 478387.0739 1676492.59 2295.430001 0.001481850492 38.28617263 5157212.471 3388.757092 11418017.16 215.5717329 350.1466191 1093.537878 124490.0802 61.08182556 52524.06896 25858937.38 2868906.305 24656.65676 466.5656132 563518.7112 489167.3472 27471.32375 65234808.15 5779941.24 845.2640381 0.009629646433 952790.7307 5470534.664 8.236118987 0.0004109247169 100246.7916 9793615.079 5379274.813 25912559.26 1419874.553 1009269.923 45.3960529 6701181.627 32270411.4 1044804.196 1176.746151 55460643.3 150161841.2 8.396463721 0.6471142769 1526.64613 603308.8945 287.5088674 22802368.54 54008380 5223.056039 69230.06135 73.1845633 3.685705757 63280042.11 3385.935739 354.2413636 35099.26187 7.012212977e-07 1329.536014 31031329.09 0.5513464791 28227220.04 966554.3674 725753.3168 0.0450339379 1084618.905 8042607.969 0.003523025426 42.7460843 640152.1816 1487.800859 18069.35917 326038.9764 85439.47267 682134.09 13666.78342 248653.75 72870813.23 117402.285 36880806.82 +2.841872375e-05 2.774041228 13835026 9088269.992 63948351.09 14433398.73 10701870.61 5369.827056 27637.32837 5067401.185 4910356.682 170267.4347 15573.72097 100.1009565 15331326.66 15.00703073 622.2154566 9254544.667 2700322.852 6298024.764 4097198.609 18931961.53 7762097.51 4474153.656 266476.4063 674054.2957 387392.5057 52937140.33 1128.446776 37350.2711 15237911.7 80703.84949 77865976.13 94823997.34 74786562.25 4205102.723 1546.388357 70694513.42 40467.71982 1769262.403 469208.9074 10457038.37 315098.6031 23513.85915 336.5075324 58165.68716 26688.92847 22.39498343 3206631.515 42683430.15 330557.7232 0.1605654175 152733.56 2387142.445 72270.18154 514440.9002 114693.8313 2806387.306 11673176.36 1912580.535 539526.9063 4.806197888 971302.2821 9749765.141 0.04106211669 373048.6755 97387.5671 49.87368897 997182.2223 7470354.336 3554645.803 9991765.035 4028.442635 84806318.59 3868.481759 8931416.539 57207188.23 4.191355908e-10 3.203989176e-07 11107555 70228.28322 0.0005132127774 48213861.75 7758564.498 40975954.9 13061.89999 2132067.064 333519.1314 2086739.754 8948.610762 +22804.34298 11561573.48 14845.41493 1.305546728 10164516.9 4803.883384 40695718.11 147.3218386 1054.15291 3374.227757 22118530.93 184804.577 6324307.232 24658.48273 18648987.49 34.82012913 31701973.86 3090185.34 7954105.994 14553.56128 711.6342228 280161.7566 2114486.031 4501514.059 26621144.34 33.34697671 272613.4901 44266.8909 2530105.296 0.02379017789 116.757799 50446144.3 46365764 15981994 986253.5625 6839657.341 4000842.175 4.065944083e-06 0.1245062822 1343804.385 1121287.541 2191446.534 592962.7325 114700.6028 1954878.456 0.1445762162 12553.70944 3372834.041 4946766.757 373142.6085 0.0008250434398 27960.86219 15529202.51 5523.272516 373667.3518 26851202.75 10.20907732 928980.6993 21464955.91 29.33671016 5208840.033 1506877.243 1018.012374 29746508.13 3859820.937 808099.1295 62889.23162 2870370.578 1023.554474 21098.6631 124388.5213 1975497.613 25948719.62 18771502.17 301583.4711 13385571.23 136514612.8 1.008636077 51869.03598 9081.561766 14952220.02 392.1822756 38534.45076 3633192.629 4071131.059 23221074.79 23568843 429432.3132 2858904.103 699542.6242 +608.7944567 15940564.92 443.2209747 25671364.47 440.7839031 3412410.533 58269.40132 644123.1436 1.927281255e-06 415350.5842 4098326.599 324577.7507 646890.057 72792.64147 1316565.644 1654760.216 3795651.047 8438143.282 345698.1897 4295289.62 31966832.35 297906.6303 2387892.922 3768003.026 3414058.992 567004.7922 29.81538204 605907.2081 22982286.13 8975611.817 74688.91901 144188.4352 12131.99809 6519789.577 7.015879034 54051335.62 19908499.05 1.381378331 64.76640412 919399.1281 258611.758 3762859.475 260587.3863 7213134.901 26081260.45 767936.4156 14826211.55 1979117.221 70796509.56 3063144.521 425.4173201 381500.5894 2.020807844e-05 126273312.2 6940648.254 1.227218171 305042.9289 3281805.929 67.3876287 3558356.807 370070.4072 1082083.5 662.8976364 2557428.385 17275.77143 23861160.38 5946.724566 2526.545165 1195.156357 2400.213561 10046476.42 10849633.25 3.720355091 31114985.35 56483.70213 2480.785164 10766117 157528812.1 265023.8949 2916.688646 58.80927153 280383.2596 100835.1306 15607403.1 278285.8889 817821.9793 29853.93636 5880466.186 2.078837959e-06 3972324 +7342.086948 16672.52008 442.8303909 19.65921984 7106033.76 26821917.83 838712.6336 1309528.173 24171263.16 43653319.33 816964.8173 16498313.99 6193810.723 16371776.41 307835.219 2973.511795 444388.5219 3607610.265 273.5447216 443669.6181 1.215906583 2592450.212 4283744.107 5054.544558 0.09466693193 92951.12495 20575583.37 4902526.584 15276671.92 1432.915092 13827903.56 4795.271457 24597.76901 17761637.83 268864.786 183328.2733 400.6977185 30753.05193 51821.53757 82311140.37 501.7718478 4806.229231 9327207.462 8700579.638 3462705.763 0.08055221175 6798521.658 2492.630563 29277.34765 55956951.83 4523859.173 9226696.603 9741.046869 10550.23481 1.008742706 669563.5457 12139472.82 36944757.83 9410793.004 52401650.12 155300.7773 2768740.612 1848922.454 15445.87328 39.68585666 474935.4342 28788794 2973726.154 4479166.503 6487932.14 12417294.13 15590.07046 1705493.026 0.004235280087 9000626.571 199583.3022 1269.431163 2.999662594e-11 31676643.15 817150.4106 3363464.453 8229653.705 67389.81191 14681703.57 7240006.286 0.0004418667051 6461000.182 9279791.709 5166662.884 1807692.966 +1826276.076 20763218.9 4030910.582 407.0007993 16819.73802 907.7416922 35067.09154 43997976.81 140048280 55818727.9 6092012.571 44806478.51 3950055.871 152889.4895 7090511.783 11844.4513 79987.14779 5241649.156 4800035.871 270.8280638 3854368.765 31083235.07 10956953 374772.8423 116.2573013 44878862.7 14090400.03 4498858.348 792864.4665 747879.9065 18528097.93 140.4531735 184200069 26814.92723 7730.163917 9364544.426 62.16497495 7626197.028 13223140.65 74.81438689 507.81482 147067.6649 33610967.15 361472.8207 612936.1514 159771.5973 1590405.81 128111.3334 167556.1518 1739349.698 3176113.168 31896.04459 27528885.5 0.7487180101 31268715.11 4001.581008 200238.9961 18503.4013 16407.41407 6163.511193 0.009249917492 203832.1082 728593.4588 855455.7068 239937.1701 8701.175218 0.0117729722 402.2560842 271.4738789 5.850404529 6456527.389 6782291.949 13.8765159 30662.76973 8101.603715 88263007.36 26936.13826 1131675.716 39537.03937 195580.9223 196810.0908 49204.32879 1885463.224 551367.6164 488498.9529 438373.247 8389521.302 8.070899115 880.9832615 723726.1517 +5724690.361 1353075.956 63145605.2 3578.388844 646413.8128 0.0002218348854 2111157.571 2080478.544 128111.4325 602041.1897 39052.78646 21.5190636 208137.0512 2613.651794 88.90401729 28793492.03 8749.248684 1.601379692 807119.3141 3070099.413 18163869.29 543291.6916 4.91836496 51635546.86 0.007107597204 212.2853117 135.7066353 603048.208 23681834.1 8918178.338 40800.46587 3697.061884 14963931.16 46354.90223 526787.7913 28605.77144 17652188.46 31834354.74 1114084.998 22139597.36 18802229.09 40023.03645 17392813.75 6510887.206 15137057.27 3616.065841 32137.82349 0.4097047522 4599917.203 0.4440162932 29122079.74 10561190.31 17090029.19 430438.2616 200.449183 4584423.717 24979.78234 1275504.917 94928.45676 722198.2058 19812420.56 0.1219618811 534179.8044 644512.24 2867427.18 1.055123448e-05 17824.3102 151.8677342 11027160.75 53974905.87 2188083.503 60649.85219 12122493.64 31.82372857 5192307.022 1.702809385 3143.676712 3910.983529 78516.16708 42910083.26 53810932.12 54049.60952 27703861.01 9409133.505 737.9438745 365972.7428 5947806.011 21470146.23 1875999.854 106054891.4 +1866827.069 10884520.02 16526153.57 145.5771576 0.880797022 21385674.16 57718.14635 1042.056935 427.3321695 9328107.918 4257.076468 180279.8608 52274386.5 6171918.741 2398.735018 6061481.241 775651.1329 76041095.1 15144.22447 4163.631855 0.05140843479 302.7630014 56544.11147 372292.6235 64.72709219 27365718.25 29674824 33998.10588 146705809.9 1627037.52 700.17272 50372194.79 2102507.384 8553.73297 264040.1837 16765498.15 84729.57671 1947593.868 3347444.267 5765202.913 2089339.649 1868075.207 0.02294246152 2207.321869 2.84346697e-06 562067.1363 84426.30912 7053985.346 1270.247227 15468931.61 12148666.93 1687456.62 38876987.36 26348.42259 49971840.52 3.377209589e-05 309203.804 71773.3501 2599702.015 923182.2778 383926.2191 8190346.966 2838099.735 9.140320249 2360191.617 673805.7083 1.916809534e-05 175558.6128 5663053.93 13969252.43 66661.42206 23031556 177149.048 1409164.148 3.322714522 975140.9695 19.55329937 1364821.602 56059077.86 126637.1924 3311925.443 4120.249944 17144838.24 13785.76679 0.005993718725 1646.459014 36895403.72 1680613.873 191928.9263 6993.057128 +81123453.19 14.92891793 13650440.13 35890.57533 1514.116713 42805894.27 35562.07908 10486789.99 18468858.08 100495.9473 10097576.59 2896170.963 6526163.501 601724.3138 22138203.17 1.523456787e-07 23856452 1674161.226 97808867.19 60757.01387 0.2304724955 5551315.693 14255416.11 20737.34581 1579252.898 765151.7276 4577.682537 2484843.44 86567.92468 2886615.176 16920080.59 2792001.707 7424.128395 159.6592871 1183254.598 46998.68735 12917246.07 1837189.908 2743.863948 23829.43583 32300.51394 29523029.25 4065.20998 22856818.5 954393.0112 3880358.808 121032.002 3749197.998 5515973.016 16.72372214 10842.15621 595.7966938 1051.410096 47295.39298 1052169.886 32584.16286 26482231.14 107.2491165 172291.1951 12100418.63 14974031.99 1.051460205e-08 7076813.781 3.287274682 523212.6673 442960.8696 0.5675468693 79014.39729 0.5153352752 9457018.904 8458.940717 2.196529921 164755.4821 34103.67245 5018073.633 30300.42658 412.8139251 18366921.63 46185405.07 42555654.39 460260.0449 184553.3332 234937.4539 171173272.8 2.07877447e-10 611226.6255 14857686.55 4947754.567 728993.9023 10082.24707 +7111885.353 0.1603696852 126259.3715 749904.6865 13.04954086 1850.396241 513200.7469 255910.2446 13315396.94 1124.508667 77386432.33 415.5417521 92803073.73 2.255146247 399459.6105 9101309.802 5.556404114 13295663.73 16462855.83 61084931.41 27246616.04 148.1629213 9769.262018 769006.4308 60422.26288 25034909.67 41179472.54 1236783.5 21371710.67 12607098.64 21.71489429 5136215.134 184720.1137 9244720.242 8398991.031 10449122.43 1912785.434 233766.5469 1102966.506 10542507.11 30107626 157169.2753 122.2975302 24200.27158 27541141.84 167055.0185 331125.1503 13910.16081 10292692.17 72423.62344 809046.7921 16.20458572 6470591.167 6271742.501 77164148.38 171.9143361 12165660.11 27509823.79 615340.6298 122776.8478 28187921.33 7658546.103 6343.680672 67161.70132 35389474.75 6273191.588 223.735032 4008047.211 5756438.775 4596432.923 39213716 55072114.7 24725225.33 4026433.751 48463758.32 61.10718153 4720.800713 111056.5947 3380904.084 53.08851946 72210756.64 46228440.87 34638783.9 5797103.925 239535.471 30980189.31 4498883.367 5548.47228 59946.31198 886.0371035 +298005.8061 1429.991517 21565116.33 58084.20582 217844.4957 25705.95408 6999.464018 21468548.49 5931485.413 1219997.695 963855.8706 20988226.53 9615.439639 16900114.19 478481.9689 688231.3037 767130.3691 7359996 42067.0448 1.317510723 431545.6182 3.099147616 6.469897275 12108005.03 132446.4061 1.014625192 32792869.76 8504917.551 8.406036587 844734.9305 24430371.95 4848697.564 622.533397 6054143.759 0.03282324808 48609782.62 14.77128793 156131.4164 810394.134 2327.50153 83211856.03 32814496.26 2567191.53 1475542.372 29513288.54 639721.2643 10676.06054 12639409.57 45670756 4116715.799 9109292.395 47.13609812 0.7012674165 271358.745 115988288.9 18.08020278 33182436.08 1135881.929 1749457.361 2.41642378 26998170.96 102421.2062 0.004653297674 8394911.072 5231.994811 1019292.478 80614458.03 321186.9308 13614927.88 124723.3809 82414912.09 19533365.91 4601221.715 541.1502686 48020761.15 3092336.096 204935.5033 45360659.67 948274.4333 2001072.728 7636106.621 841354.6926 25270.34735 49117.32902 707767.9546 8072945.945 22124.88233 478554.3513 6359558.256 7736640.74 +364.125534 108776.4596 3252389.833 184904.4287 15294663.57 98863.82523 4837218.854 2.077048598e-06 3619708.474 46372886.29 1492536.786 5402437.917 1184493.904 74230329.6 921898.7994 39990476.45 29945670.47 4449559.058 783755.2526 15962698.7 7966224.159 1535555.142 2.909636099 0.9465171867 15630282.11 3666265.411 125695269.5 27.20871684 4.62608311 1080298.603 3149272.477 11.0997367 54.40608845 473485.3753 8596455 5300943.074 67.00797226 6156755.012 2508179.513 34419.92338 8961313 4856708.693 37.63336997 0.5502540469 589.4626132 166284.0468 919267.5528 0.009317435842 17996286.48 4.869699912 76309.00226 16840.69347 182068.2218 114801.257 4791689.191 36681071.58 1.104763944 42089.89379 39405818.18 8817465.718 70.46562462 670553.1222 113142.5751 933107.3226 406151.2813 51303964 8447010.322 11610.02999 1525210.003 5899083.146 7518416.211 23588036.5 2585.341973 5235386.024 2717.746215 574.2979712 4826788.676 5093.568586 1179.113387 1188307.876 626.6588013 2874529.635 35811924.65 27029561.14 941.6109613 1076636.241 1244873.116 260.2058172 23082424.51 517.5744948 +5.925217097 0.003153823962 26507092.57 3.26798175 27.50726289 819949.0216 4963285.503 262.1582991 2.307471819 0.2509796997 28596334 14470176.12 321382.5706 9209.840156 475.6043764 19238886.16 7201951.799 0.03670552196 641489.2171 4927087.798 10144874.19 68515362.77 1062285.76 2526.78132 1077.087807 78669166.3 114289.6876 4751561.249 36.07547828 86.55767047 517.8308832 3465.094285 139288635.8 20297234 51656.80034 4196989.571 76393933.45 3014579.885 0.6445073914 61664765.26 5274422.888 1833935.717 12092207.13 9.735461183 55.33869934 2091077.147 59265451.47 32081703.57 2684.365899 19231384.46 10249.75534 11369594.33 0.04834228756 17083.69768 1199833.634 7343508.689 7628845.114 6150.417791 339276.6086 23626523.78 12135097.04 1654902.293 638.5467987 23768.00576 2616.425841 1271413.586 457795.3556 13.03815246 10878236.58 6802.331609 56118315.01 3782943.115 15281626.52 2025007.899 1907284.953 7269903.238 77796930.81 0.0004916046511 10144.84578 26544.25674 1233.926136 117.2860968 532098.6125 32446704.22 9338634.658 2504.77914 4989451.65 1107.916727 7944903.684 2177538.854 +0.002661972504 24507375.44 1856095.222 12887922.83 9984188 938474.4564 3461580.965 11239894.16 5.579771787e-06 378067.4375 23861192.68 242685.8846 14693167.42 1438102.505 8971.465158 72.01599556 3092.38063 46504712.61 10388316.88 11971144.24 10066714.62 22644.34769 115.4679278 543.6365408 20.04594832 22.19956369 3.2843877e-05 4030496.471 77.45909119 4267847.084 19776.59203 1385485.575 61891.90221 295078.215 27506451.09 532.1639137 31569.55524 958252.8309 619931.6961 2824.409329 64912.15387 19006.5927 3089.480382 4150871.494 261640.0781 22144953.91 73.59949865 78719006.03 653.0830982 41569609.13 2736338.645 58248415.67 2530740.005 14822586.72 26016284 3.079247553 7505803.605 5.269132915 5769.376543 10569376.34 848.0074638 5669.867865 95433.21501 6301597.562 26231315.53 190990529.8 292143.6073 5807404.913 12647.62706 40473.71025 145245.5809 299583.3418 528210.0236 1727266.012 20992849.27 8954047.739 3090822.951 484918.0123 188350.3055 6531626.665 4416847.502 16791229.83 5.093175981 131460.72 6084.36093 27179258.16 25465819.4 654556.3424 2.027225318 0.0004474176432 +7967750.076 15367.86572 114742.145 771884.9765 1051208.479 0.1894913117 437954.7857 79257.22446 11.98184149 29895428.37 64.80542151 15096559.38 1093.543797 16459401.32 28313052.51 7225356.738 0.08142107079 127159687.3 2.955591202 4928762.151 13.82945131 1304421.228 960.7169955 132199.1954 463731.3213 4432965.593 35661159.88 12661.88938 19586578.43 107873.9597 40623611.75 2989586.945 9150.123231 4006.378473 705.5405841 7204.657538 18461927.56 14466.26612 134302.5568 611234.7565 17975317.51 781943.3897 1.409703709 10894.90132 1391152.312 13949950.09 1658274.422 11.30011321 38409.35855 0.00866315717 52092136.6 70118.69514 659822.7403 1739.849182 36576222.43 0.02700791612 18132486.66 23228891.68 95421.9219 174.3481319 21044498.17 29892384.86 7251180.548 657.9869868 63075951.39 805.2064278 613853.7858 49.54131514 39.12513766 11731343.92 34749811.33 173385.8755 777823.9232 0.1657837927 8359661.008 10794556.97 624533.605 39187844.59 58665.3986 4777132.004 0.4340938926 17571713.53 3125430.507 632236.0508 28918896.92 1346760.156 565484.1776 1926174.514 6284273.194 4147710.796 +19841273.78 1749928.781 17297653.54 717801.0688 5457854.579 115116.0655 10.10921469 567.1013476 5569.155047 9986947.877 18674.89356 743224.9273 203670.4782 37495724.19 18210869.17 50333592.7 4640816.026 4395822.808 19271245.65 51150140.01 29177650.84 7850900.076 20090.63132 11185478.1 51798340.01 22599066.28 2627898.778 8494187.855 43842128.45 5250098.967 123832.0144 8427222.914 1132929.631 15.62656936 19175910.48 2061427.657 6502204.77 27.90073586 4235724.14 190258.4062 17914012.75 24540.66101 301000.6853 19250072.55 92678.16676 33248478.2 11793.32755 5552443.742 13853772 71895.9027 21.3109944 375377.5435 75.2026904 690336.3397 409.9904175 15733663.16 4939494.916 6561907.011 56582486.16 51902399.8 1298788.842 133229.6279 677.087715 81.34066921 4942759.276 87163.5994 26907.1021 10.26531529 35562143.48 4197.65049 32642258.45 50796539.14 484.5430165 240644.3293 18869196 19812.33666 9996.723865 26419733.83 481236.8225 4816.668751 22682851.96 11602832.55 20032991.23 1560132.528 8904484.459 790670.4857 11488259.53 70858.30572 159537.7362 3815097.167 +1.295217771e-05 14099273.3 2200.31801 750779.6784 2231.845138 911.829267 629919.4318 86382729.92 11330507.52 0.02235366672 3.549558255 2078127.187 2463.893669 20918712.44 44286339.39 10578715.54 1533.777135 1025645.551 3198035.242 9298893.929 2670.023626 42319.27378 1381925.763 30924245.04 16126010.18 77230635.72 67608701.83 12502.92982 2781155.497 5540100.358 10538226.92 16411058.28 714949.5245 298908.0351 78752.00125 23898.10317 27.4695637 13772368.44 873624.7626 8997339.459 30399820.27 361560.4946 0.04327635772 72198320.11 11336279.57 11990.60325 2323549.243 178482.3407 0.06657029797 112479244.3 0.3559437327 616.5313911 31.55390754 121147.6937 28.94465292 127022846 82650.10711 8686.870057 30790517.06 3819936.608 6237.588404 7.377437161e-07 21043357.45 16911184.48 26167635.93 8449.459007 30141736.02 28935452.54 702123.8768 8.174923877e-06 63196105.21 14763.15113 517.9188284 902721.5922 2202980.981 1427.105241 30293010.53 167699.8985 2247.42221 33826815.82 1.183995734 203397.2062 1842043.75 1169049.906 4633569.096 13187.45509 456422.5895 31582772.59 836355.9389 222594.9784 +363339.0545 6957908.081 2403.399904 17.71163953 2.63017715e-05 8.637181839e-05 1365907.296 693205.9413 121052.2154 77.34521951 12310204.38 9359476.875 27246113.6 10332887.44 204.0635837 62784208.12 288730.1342 3284925.946 72155331.63 1035.167505 15870149.29 29564483.06 34743936.1 17326010.01 1632323.758 100014191.9 19.47343541 872287.8276 40824.17882 17669564.41 5.755222038e-05 1469568.378 5318.258057 38326.76333 67401015.39 7082278.482 283.6030424 999420.3051 35.27006026 1538.901223 44592990.12 370.4051828 7129786.005 12699145.04 7851.990069 8.252660979 5517520.736 9606605.253 61838351.24 772604.5458 67122580.73 14752.76871 35478.65299 18684.9213 25749079.64 1125038.995 453788.7522 1620.0712 25319.96047 44.05365513 14065212.75 2114962.463 16529385.76 36967.73988 6.309889288 12462575.4 3122597.375 64335181.23 5792.51396 52435.20037 1572.896239 4101337.564 61.16435922 187439.6517 2420.186623 10806554.36 410.5462211 22215152.12 2762041.974 1168157.51 0.0353902942 18707.57032 2817975.662 91294.37501 4.280937148 16035921.59 21.33893067 220.3676739 357.3090682 6750484.202 +480621.8839 40966299.05 211629581.3 249.9542166 1386.329826 7146566.955 151869021.6 9286.630271 21949643.41 382987.1878 0.9649039507 17060138.56 11613581.77 6368963.581 18355043.32 10648866.42 1928194.305 39.27280162 4213417.739 10.75976311 141385.8813 8045.553555 7717254.076 2372091.311 240552.784 1180210.681 1350.370153 100299704.1 2676.42518 28478.38771 36711607.39 0.001904387841 28593080.48 236956.7585 28211675.77 141785.3013 1970489.453 8581.870219 30746672.2 39636.05864 7742745.611 152232.2973 22070220.03 11047402.89 1.573942344 3276.484327 83546.43382 29591603.82 5890.464504 28179339.78 38331940.14 732.6252671 3.685739048 23957907.03 3088.252323 8025748.696 1528202.948 13597986.3 7284267.774 100977.5396 86197.58744 11260605.61 1510818.653 122757632.9 28644572 137342.4376 1548935.689 26214761.64 23916583.51 930003.1272 40060347.95 1201.354663 159452.2707 729443.6672 21346673.95 3137.767052 0.04585215072 17182453.37 66.97222101 43146584.53 86111.34788 23300.18024 157435.6758 3130637.187 16321966.25 4509921.22 25558068.1 15175.35617 48490016.48 54247.67852 +35109.7126 3887249.895 1324.865822 10325713.06 38241.62466 56365.77896 27999812.22 8870086.207 281880.8016 19226.66014 692122.0625 2191476.68 9771139.675 191.5518258 59963913.15 2928188.127 61496.41535 5199.265988 4301.29486 1876616.749 58033381.28 25306.23599 601268.4547 1994.600394 29503405.75 186753.2096 4365100.733 125.7519782 20.80019673 56163.78975 183789.3839 6103238.442 6625.987537 9641.411045 8587876.119 8879269.333 0.06630468669 1018489.714 66319225.22 32815.2824 8600437.116 999514.8783 1846650.736 12.40363767 4693449.75 12806334.34 385182.6488 48764.06839 42701101.14 14602419.27 21877.48896 724.8157254 6159041.458 574037.4151 567904.6567 6297843.405 12879.73827 4.340347996e-06 24416961.66 12318406.56 312968.9315 505255.6875 0.03364476602 18.54051566 483201.2197 14987.49926 208759.2691 11396764.69 32407119.54 23626.79624 1522487.615 102505.5445 286952.3498 12142559.19 53780708.48 448.6831171 13370.01705 1505282.696 12984.04725 46687257.41 394.5120461 238064.1573 1398335.822 206966.0533 16783416.48 828081.3435 66816435.89 3116632.164 364071.8125 293.8886414 +4939366.501 503561.1282 12268281.54 184.9303081 6130056.1 27520751.8 4360.396712 1727240.034 4871657.445 1856531.424 7646.047369 14144657.21 8492665.769 24336860.41 34751580 6243593.199 249760.8123 53039985.47 12794.76471 390.7561702 3119518.629 74407.12704 6426679.239 219.5822209 2075545.558 623081.7801 0.002339040528 8987180.706 3447251.203 8100169.446 194.1042158 391945.4863 172074.6331 0.1088108308 1198096.731 587576.9782 60357671.32 113.7162247 139143.5328 10414579.86 9699257.828 2595043.175 326686.4873 3371.979429 42301476.61 1129964.738 15169.8128 26.14904778 620386.3702 28422.11612 2361477.649 459.5867223 3117.035781 146236.4531 15130324.83 302079.23 43825639.56 10554578.86 13369.9727 438394.6849 7321426.547 1095161.751 7.508643983 139294.4806 1136646.65 761583.8235 573.1979746 6922295.006 16.81228454 638570.2796 1181.565269 348345.5816 14852.79913 4504.782382 1.205800092 4313246.942 27571313.55 30321994.69 11445381.5 19713.32973 42.93876061 4739.826693 1400126.981 32747523.05 9562849.213 393.1209108 8238.832361 212043.4446 86540661.74 2281467.299 +5806183.145 24715.65401 28649.70945 48890063.04 0.2181589538 5344632.508 2.154597019 47701453.96 7596357.121 36010395.17 4465181.119 650099.9305 7121185.296 367.5752813 17.57960352 10046.446 1719283.744 26896183.95 10125192.06 22513755.02 14940.84473 1630152.665 266748.4445 9219409 428003.2361 6268137.991 10866980.18 1.150967542 5470548.27 22037181.53 6108998.761 22275647.2 351406.8088 767184.0247 26952590.13 149834.5707 34.52154694 5909.672182 38438676.26 13510.20996 2.368083202 788.3651279 4502458.945 9163537.685 24632556.48 320729.9064 11141706.27 25.69744741 18012156.3 3070.592968 17753969.34 296.3013971 258919.8883 3.217923979e-08 737.7801514 41219078.58 0.04530204359 3849350.193 372214.9474 1286000.337 16586746.43 4114555.416 104085.1769 19874.10022 32039.37668 2216.763495 56460387.33 22204.30021 2142.220822 81219246.59 65782882.4 49770.21403 9225.762735 2958.829032 4108178.739 361.4879179 14933417.53 2242923.224 8329711.539 36102999.37 6165928.611 2909328.685 17316300 4405406.615 39959155.66 9726332.902 57797.08202 869186.1641 157911.0618 35176304.85 +3.052225478 982795.5093 23231181.63 178480.1196 2837437.562 37.20238877 8125352.916 5.900008185 5587083.741 11083717.7 9696966 35625071.72 18977624.34 3928051.505 63774289 132407.9003 535.1808472 19557362.04 11.23932875 315529.9058 49266669.43 455326.4213 1326565.998 12817199.44 8337855.977 583239.2583 1080.552521 29317486.69 15444.19201 247908.8916 8109203.768 5.420623773e-05 19878308.43 22989.21261 9847854.73 41132824.19 0.02165668176 16861.29158 7339270.956 1215.860735 6410.183833 260567.2795 0.4565599725 0.6161028053 3285698.277 23020492.43 2732.01214 36709680.95 43017796.54 650087.5918 2029.468224 42751672.23 274086.8002 282397.7995 13873566 1413.919817 167488741.8 69243614.05 3558806.238 68381944.99 11159894.85 35760292.18 681321.7643 1076876.154 101204.3795 4735.980725 20789160.75 4944.500489 2825666.214 11045138.12 91189.29473 36.93136069 3599.558968 10733.16649 18409706.48 1152087.736 1708842.369 326229.8991 167162.9724 416.0476598 1.001580901e-20 3175709.867 2087.487372 1773078.711 327.9741487 8249.46624 40969.77925 2813238.792 0.0936078707 1017392.065 +127228.6024 0.5620949597 34474220.3 2634113.227 79.14118389 9293.089736 11176676.71 3003357.348 25559579.03 6.829662503 18319.96136 4199858.09 212.0187649 3164501.203 4398540.481 13118468.08 862708.293 15.24074543 2515.060774 49941812.89 68851286.13 0.003833754019 6424.711714 102364.1796 1228028.61 20403.39829 17096121.12 70414.92969 0.0006927113911 15094809.75 593.6286451 0.4438743827 0.5446186322 12706601.41 28513670.39 1400.812533 363.4335251 1882.410717 55983287.28 1641937.022 7884949.681 188433.3594 651.2892236 32783791.17 370634.4185 250.9964363 36.38604857 210142.6172 5724.566895 15.99469743 3188.462427 1339230.226 311769.1759 937843.8351 1044391.233 45.19303817 781094.2609 617816.2631 10679516.92 1831832.372 4631891.952 643.9568102 2355121.295 41.83956747 38089480.49 13870.0108 6861254.755 1374.251324 82664.36421 4723418.989 22075.76596 10830.47686 20796314.24 15514967.87 7483012.768 6842.180991 48103320.34 26008134.9 757082.6531 2522.195044 19773.0111 279.3225454 0.08233845549 22558486.69 0.007764378597 7423938.308 109.3845336 36658237.63 14.27132594 2426591.197 +5.072667827e-07 10681634.14 4178894.75 49816837.94 6344800.989 85736415.43 0.3673810228 1336392.103 3392604.123 9722392.096 1475922.816 178.9881897 267375.1408 28600144.65 17628762.89 3601.265603 52779.41182 34525849.53 77009.97955 4297190.5 4153379.063 18619.37126 1090.954837 398547.0219 4.211890281 428797.9375 101305.0589 97.8364513 225345.3456 27329.5406 798373.6879 4011865.227 1495383.582 4.279118718 34917113.73 8840831.695 6421446.345 17045280.73 31083584.45 0.2133340165 6936.433801 3490943.276 229323.6111 13898892.57 1242285.567 56201905.88 70683.60248 1044108.446 11728631.29 0.06495413591 3.59114708e-05 15477.83635 91957.9818 65895.2751 20095271.44 32783865.28 4.962460643 98453960.95 5.238251804 889510.4991 34632308.84 7274909.992 3308406.03 189.1665687 18846947.55 53500170.78 645186.3586 36256273.73 2540324.04 1445.706125 187.2943364 52.92095871 2.722074562 18.02302423 959476.0758 18671894.57 89.3995338 14475.65532 18.6067523 4284948.045 38.02992755 1720850.298 18384931.3 64491629.69 199374.7343 16261409.63 32460419.05 131656.5583 3262365.784 13738.45102 +24360381.6 5216530.759 24340137.6 427434.8339 34.62958227 264490.9534 19659.1192 1562970.125 509.8252726 14092380.31 2625699.64 777415.8206 151964.9151 47277835.4 50777356.73 67150.73063 61068929.59 13756.24134 28.00390406 40980486.71 9636.565759 44724554.12 2371073.072 23.58121154 2.066724008 12004209.82 2023205.192 4837.014048 2407.547076 664674.2965 18020102.65 1.424204015 750818.1489 37690312.97 2959961.565 19817.21145 21739104.04 3112108.567 15593669.42 621358.3009 3936.61934 11179465.38 45514695.68 330773.7911 1508.391716 2087840.674 7859296.129 20566.291 24402538.78 109470622.9 62834929.24 4106926.213 11106093.48 5972.603591 1937.940469 948996.4338 7466561.738 18104480.12 10074343.83 33904573.08 31365996.46 24115.01649 565890.2091 10092816.26 906213.1284 14784868.44 16390559.51 20767377.55 23208.3719 225560.3283 11388267.05 3090492.131 398.22309 38630.35585 66186.97697 18114.75069 38063825.9 607948.2012 330523.4815 1395441.378 104456.2696 4819000.767 64159475.32 955614.8728 2470176.233 258177.4432 12452060 2325009.85 1137969.404 62633062.59 +3155198.517 6978.434516 697553.5128 30686963.65 0.3999200223 189109.3914 10085161.44 45201806.15 0.2331223687 3043911.895 918226.394 0.002026740749 0.2360817389 32362634 76984.00674 6150233.243 11.24616357 2417.936628 2296186.402 9268810.558 44987.01082 692.3452373 11279357.86 189532.389 2378.438024 965821.1482 62132.73964 33234396.52 502.8529062 1133803.817 4084272.263 16526.63642 38827318.45 3218052.087 0.4909405933 1838.744454 806.8029392 1717.800745 25827.635 579.4819058 41864268 394.9096895 101931.0023 1395777.068 1609.857382 112778769.5 242720.435 64732029.25 2.641099947 33693113.8 48677.10555 49.5168449 6859227.883 5323833.789 577.91134 7245.743682 730993.0359 4878787.256 1099236.162 81259.2663 3074737 3715537.691 1623138.945 2795952.754 1003497.322 817583.9301 20009539.14 9150.7933 0.05421045547 7479483.204 5872886.589 9345650.092 26994.88716 8492826.154 45239080.62 15087137.01 52641560.96 9464050.405 17347983.88 116665.3869 472535.4732 795165.9379 47938739.25 934109.9265 443947.3282 36234689.98 51362224.33 0.002499018535 14696121.1 1762.098192 +21359374.11 1769.146747 63.01394505 27171796.36 544.2679688 147319.4251 1385934.109 584519.1232 11265.84601 13313257.07 681501.4041 698.0024405 4280.976076 586.2035899 4041837.824 240.937246 8264542.517 6115168.634 11548521.04 3.540016754 10998550.72 24574374.21 193797.0027 82335244.43 13212286.77 1056836.129 2690793.445 2929990.895 0.7938147995 13457899.17 767759 486.9862378 5476633.22 791731.6458 418924.7716 22.34873872 3772306.414 4538602.297 356874.1807 8579229.856 3880479.755 806917.1436 213650.4654 3128888.182 67065.54412 7819659.105 20.65127175 48.65168056 11846443.57 3149880.586 1434285.458 4786177.492 291677.5734 58569099.96 148.3457032 17384467.35 747302.2485 4.835141846 75015.71469 6785841.941 5266988.649 4.887037024e-05 734.4217232 626.196125 247147.0468 445029.5557 13417.91113 10567547.53 11720726.79 69234092.75 66447.6711 15614.75293 2813670.64 11653980.58 6219.637848 44827343.42 6.936397599 34664702.96 13405589.65 3.580880263e-06 8030715.428 15128.04238 38086584.14 0.01106739136 62540746.1 9978816.58 76.32608414 10.32193873 204204.2373 3656.641872 +28042.59751 1474.670417 13.02520371 1917672.424 0.001682029871 0.007664295809 3.740588092 81326.50601 0.221982895 47858367.63 1150957.163 24281113.3 32255.39091 16072324.06 41688908.76 758030.5624 99053729.35 9030057.183 0.06545890681 1237979.945 3.089360051 4522439.944 80101552.13 2699.413748 4.691636443 1695579.293 7.588937308 1487205.443 25200.64533 2.838335899 4616159.12 53451649.44 98112294.27 16336923.98 1.260464775 1104301.426 274927.4177 14403363.31 112811346.6 1.831370374 9479.516135 349.9096657 1289.49101 5918124.441 3409449.604 3837.989688 9.591688294 8678061.007 2.780290634e-05 1511327.339 1422269.257 9849246.803 3355502.808 7230372.031 450922.2277 8913093.265 0.0179043716 5299588.45 8581398.47 1386485.409 4059254.176 20111.86328 50859578.1 4121911.909 3191350.412 2703252.032 3.676753267e-08 1832315.101 1209616.669 660711.7308 32662918.04 83811192.49 25982410.97 6362777.288 20820588.47 3941290.467 2403044.351 61483341.09 189756335.8 2505957.533 916976.9877 296455.257 9075911.094 695426.824 3.218776252e-07 0.01532798792 0.01284809837 17219.08914 2695.878567 239.4386814 +59426843.85 1313041.011 6338244.677 430.1138236 3653323.546 23600119.84 1984208.553 9266.628349 980837.2989 14363.97714 11587207.51 250298.0999 127.9449343 3281409.452 15812.69839 9147.913997 158137.115 95220.09905 33669566.35 1460397.725 6428478.539 38916.23914 50.31477215 182855.7088 9209784.637 1535120.041 31926309.48 1452560.806 26629218.54 10637752.61 27771804.05 0.6023493632 53896.95905 2054263.001 86406.08382 11354.09643 347411568.4 16567053.84 602640.1875 51741104.16 487009.5251 85.76897869 53010072.59 470653.5978 1171.437318 31156785.27 341405.6018 452322.0285 36526469.9 3174716.62 8922090.379 43829001.5 45804847.09 3413265.445 2539398.626 11716105.63 1030.954834 438.0942079 10204.53809 451792.9417 32168.18118 247495.4294 32180248.3 108175.1568 103970.8579 19304.18475 23424.74537 113517.7969 18321526.11 49439345.78 3246034.77 28207789.39 17.8336221 78071665.42 452.7779436 160532.074 7490280.758 1436731.383 324122.0275 663037.9614 9368924.875 125596852.9 73339120 5464445.309 9228654.303 5378953.292 2134178.152 13323430.97 472.2883932 2734823.993 +0.01868479091 1682916.03 22257334.67 2996.728372 224304707.3 10979826.28 2802.218459 9537542.143 150722943.4 26396429.41 4063964.775 10075947.58 6107100.035 8478766.146 7529551.412 14139183.83 1543315.437 40.67948659 24.29297282 3836058.019 37802.73069 0.04218549634 16.48400088 42967551.89 601719.3026 5635.05814 1281782.049 4199755.768 12.53551085 295153.3863 15118545.38 89183.6382 25.78943294 19921112 15521959.19 1825356.528 780.8861935 0.4815168092 13691.15092 5025.684063 32767723.63 3739445.812 1208.859881 27939977.5 52180010.4 2499.222611 416.6062471 4365427.897 39969.34731 12288524.85 8056.771585 518607.9121 4913.613519 0.4139216101 13653515.48 11076328.58 26672572.18 16460842.64 1245.193118 1630672.481 33603629.46 1.340565597 1790824.473 2599.767881 15716837.32 3210627.059 1949404.745 61968236 1894.283423 73.08527237 11958596.2 7759359.202 2460701.178 1244132.931 6873626.187 2335929.218 551271.7887 47.29751427 82153.5357 17159839.24 390473.2633 0.002308492846 1244285.737 1832249.254 590.9657522 567421.2428 37049218.56 166461.9435 4812238.408 27548277.82 +48337.92189 1531.782302 150116.7765 45022.93864 11695375.79 0.05981224599 43726852.06 9963848.757 13856284.44 413501.858 3523598.124 367236.2146 22809814.77 150773.3046 10861774.61 20812.53555 4378293.938 143924.1191 10816427.35 5391522.481 2697656.123 12809512.12 1104708.602 27689124.96 764000.1608 0.4823515041 21342801.22 3732917.3 3297664.103 1725.601929 55.37629279 7117.854452 5.526861614e-08 37237.94926 212638.2912 30213949.36 6764618.187 7762103.157 571275.7227 1645137.225 3775828.344 715.2576636 18885102.83 60.8494428 635131.5563 131275.8443 2673.802501 269.6121869 869318.2803 104878845.9 10.87992174 5665831.173 833959.2613 7512698.833 60.77236095 164.1264543 1293219.473 45109.29858 21043958.99 39581.08039 30421590.71 554.2258259 162.306673 43944117.55 2985632.163 9936.278238 0.06722579314 910490.1095 3102.818186 7930455.941 0.008639992687 3178252.261 3074930.425 26873931.9 55259465.01 2414338.341 29620591.13 474212.865 47301396.1 1574951.574 35625943 42836376.57 20.7352829 25045306.06 14975670.56 2.418422787 0.5081572112 32407089.01 344451.5818 1017061.781 +0.0001418533222 7584.789268 19501970.85 17970227.9 33462301.2 11862516.22 466928.7813 4363.740321 150118.315 0.6797452041 83144289.22 3196.381178 7490894.372 5508549.209 12371.20344 39149.84549 2.093295259 975984.0958 895019.4178 25717454.16 5226520.764 179989.5903 910437.0021 1423566.5 7431203.191 57094830.58 57910.53688 2375627.018 629743.3403 139199.578 21.30920094 4384561.542 2939903.549 644106.7165 49708141.69 277.8717281 661797.0897 8624138.67 836.0720005 16297617.21 18533653.47 9777561.507 752363.6466 11833.9375 14919.75233 241754.3289 46189.95286 496.9019871 7290832.823 3.301675006e-07 2.029098927e-08 11955814.67 0.01935598984 5240137.018 36529.31062 22610861.21 24839321.01 818.2312181 31594018.1 1012772.128 40710277.36 7377.904748 981.1856587 16977796.75 35430064.22 1054.822326 713.7795119 75006.20638 8468487.953 378564.3361 17933489.99 4383.029278 15451566.46 31204621.2 5619.592651 5.880949158 33204328.57 19999.48708 16664700.51 3352512.918 7921224.289 15269812.31 20174.89847 5062873.034 486145.9406 561.99814 14352382.01 17829.38014 931886.0566 16168726.86 +2894447.344 435.3957876 78705.76294 757481.5776 851405.7899 731.7446466 7652.4729 133220.4635 8383220.923 498.5872631 1876090.008 3315216.526 13522655.17 32079.35711 54628.30961 1252.136046 10.51660083 465.1735088 668092.5257 9923724.25 76298947.29 0.2947262951 15142810.84 603028.5785 2407795.886 116933.1422 1828844.106 2345.653428 260951.2243 24771.87325 7518081.502 35023150.97 2707706.023 79851.35793 1676607.391 26473670 7134.320707 34029003.47 13030218.44 608154.6123 36754.94028 15230660.45 4287.859093 1478501.843 67195959.67 47091189.02 130.7304417 12092607.34 774.7510088 2976253.899 134797.7767 189359.3273 871344.8284 43460.92172 5.174041635e-09 34932651.48 374.0075407 0.002660763189 15613702.21 71737970.36 364.9875709 92706.60083 52951616.05 0.3455572298 388368.6279 38726970.15 4553636.717 86752.5011 4913869.669 1715259.889 36.10550075 9286813.001 899831.7619 14501.8452 2511.546835 0.0003904716277 4866935.688 2016226.247 15629913.01 4680910.5 13142963.45 1414835.986 5476797.866 331314.2017 3993069.641 3360858.141 21019334.43 32622835.9 21529765.13 51809.42934 +31.50432137 13249.98665 12.61160241 28055696.88 2428.108612 12864.89035 199825684.5 1179.442216 9566.376017 22325757.65 70.23632657 50084.9403 62.48108045 5484408.374 2265.182148 21857116.27 0.02929285738 15476.10116 745.466389 20630.22698 74.22788216 7961.991823 10854384.38 6730.651551 95429.87769 2520543.85 38308380.6 665446.644 50.96089718 4623186.575 3772247.408 15600440.19 1509411.145 3948595.374 125630.541 33638.94118 99427684.44 6411.309366 22998703.3 11595014.32 225026.3579 1591.831268 19157929.95 1477945.082 14216913.3 13424.2188 327003.6838 31726871.56 61070586.38 6748485.466 12627.90432 36931133.26 3031869.718 13392.59574 2079.404027 11112408.04 4.166984442e-06 134297190.2 17842603.45 21852211.7 291890.0721 5.131530223 113874.2297 1258.703169 0.0006809486834 745844.7691 9860540.839 28829806.93 6137.087341 0.4857858097 6080966.536 13945414.75 3221393.749 11921457.07 54904.63036 1422.24246 17786461.75 2070671.78 1450416.125 2976493.376 11265270.79 23103.45481 3560698.585 113368822.2 7006546.623 76.0841774 494255.5859 4263176.442 62.80880699 13579392.12 +39.00123089 40.81828399 5732518.011 67571.22988 144.9128453 0.409494381 89053554.22 0.1804427065 238123.5597 3161217.5 26724923.86 18906587.75 147.2983616 63200866.8 9159431.776 3550366.294 3142309.789 257955.2307 80948.76108 34788637.92 41989783.54 863498.4955 6731644.172 0.8764817261 120452.3386 0.0009122103387 1983142.957 330807.3812 586.3202194 2620972.234 110220.5861 4.085336839 7180071.425 4894578.38 1658650.915 69909636.88 5707547.101 767860.1875 3821014.757 62179565.88 146.4529438 21543736.62 1726115.581 15.99051594 2.134112189 15212671.12 1993032.924 18959720.69 10521.16047 3467109.532 15564481.55 1557633.755 7155682.486 0.2052066384 2160289.57 293885.2078 42823304.11 2087187.44 0.004419440404 22756081.17 264.253479 33694.93414 26634.34269 112.8808452 9084345.018 263.0818797 9207246.323 32696046.35 13.80771201 11.07155577 756423.3876 70458682.75 2047979.686 6753225.815 1195654.51 40707.22781 512194.029 6816705.231 22.69284822 349352.875 16291649.3 11954.08704 2.802676781e-05 22.07365991 6188543.33 766915.0648 10600.03627 8168731.083 130965767.4 4222.638214 +20720273.91 14723661 9917163.822 18427.63942 4359763.657 49557.9519 17322334.47 9.094962063 55982.85548 1413.600993 16210091 8957127.282 101.6668272 7059137.832 1892789.31 1306789.87 58982759.04 0.05669202844 134753.3005 231245.4844 14944.85498 89758422.95 14218.82027 97.79291293 352504.7289 5339.930762 32495207.73 45164784.39 1523490.247 1506072.201 78965.56725 1434975.537 213425.3816 246.5283797 5406.035442 7172239.364 26373.11632 0.0009132910806 128499.8566 2078582.842 25.69080802 1214.751869 157929.7695 1016996.229 3119864.9 35873375.74 3.265909685 1776638.152 12559.9078 908029.6277 910103.7355 22264968.61 54843.63628 3823049.13 825.4366299 5813337.799 0.7323266718 224.454272 8737888.452 45812021.93 77262003.93 64683126.49 49.36842128 49117960 13698.854 20120311.1 5222.612791 1211295.917 13845620.26 69706.67865 17066.13044 10894216.81 45002907.62 8999.795325 1714947.37 2.678865379 2254219.859 240.9658203 4159.814726 524039.4074 34293952.59 1.564884262 14027122.32 34873.2153 6324426.891 16.32362378 259463.2598 6761274.353 22206.55772 11885704.38 +51416453.6 48566429 668004.9375 96424.94395 3965232.524 42436.05164 1459320.011 17.40231834 62275809.06 5809591.45 25340.56286 39028384.03 2450172.416 50361947.02 0.3885901592 5605.875848 7.706044161e-05 15834280.12 308161.4534 1239807.373 106347.8597 29734424.61 0.0006502406269 10864132.21 4025601.633 124.5916772 82373547.54 12065.8044 268680.4146 14.09450323 0.756315858 33505.56038 184532.6231 284639.1752 5426883.039 905801.6267 22345917.41 46911.82617 22925.48717 303352.7287 654156.2104 698091.7903 51019328.43 358240.1626 11626394.8 0.02962248705 107922.253 33.99777779 65929708.39 198123.7339 8997207.202 6299.059968 46029.82912 1389222.31 1698216.613 295311.7222 2207458.906 293170.0172 546.8511353 60692267.36 37382989.17 0.01413860389 7769639.418 69715512.49 397319.7842 79.25477178 673278.6499 4833.125874 3845098.683 224693.72 55147.3841 100394.1484 1964.112549 261283.2058 0.03523320273 10085217.65 345033393.8 28653.99917 19971.52921 0.0006468245487 14123596.44 3.71525567e-08 6129.126846 46655.66833 66003.77121 29000728.93 8042.491212 17143263.83 95070414.75 38.99328087 +6188.009972 0.2423404775 11131218.33 0.4181384945 15607838.61 1.58650775e-05 7158469.486 5328066.281 3625.916605 0.1112420371 11789461.55 2.196596455e-13 4967589.909 0.002414575221 0.0283693047 43275618.38 315939.1521 46720115.29 14959232.47 18517482.09 22682653.46 0.0139572915 64.42307289 12875530.4 25111191.75 14843.86431 29483.92865 0.1584660162 63984.84243 0.3557838301 189171.7858 22943597.17 5854818.813 48.37440455 29395218.66 82426520 536.540147 2420.168849 29196072.28 32811703.4 2371022.558 4092.7213 19177815.8 43017.29495 7482320.699 23281861.58 199359.8542 140040.8287 77.58125446 14460630.57 2.999840368 25067.54257 52849690.4 46898402.12 107547.1495 2791748.001 52660703.22 2051643.688 146402.6222 40959405.25 784253.5445 204.7273007 28146.35942 13.57841614 65856.60829 4788378.91 391.1603504 19425352.05 478493.1184 15105701.53 2177.526466 14885522.5 70380067.74 291.344882 2876892.91 6146308.894 0.01877145359 8806543.863 29170.89648 973598.1382 5.133451745 5229237.198 0.003724789711 3607790.826 79890.59788 276762.6337 22386950.99 736663.7816 262961.6388 325542.4336 +3520276.467 166.0145245 124764.2294 2247303.959 1727373.733 0.001658572874 0.1677965133 1120987.672 823543.2648 5060822.957 31131.47656 2833186.39 409.6999416 73924.58508 86354311.88 17225678.59 19268895 215925.976 49037.41202 1005894.89 38699037.08 87695.64618 0.04351257583 1582980.152 56854.39917 7875838.309 35.91151805 20004949.52 226297.0204 68511.10464 26424751.07 3985.22739 8.071427597e-06 14825853.02 5663225.516 14921901.51 10000.19432 1409570.945 40701286.4 8241667.173 49015288.6 10580835.92 304633.7261 46592982.06 6507123.226 20904.15573 10269565.05 15.14117978 184012.3592 3106003.848 10827438.49 1337422.602 173770426.7 2647848.075 787355.7924 14527203.48 37599514.02 5630938.533 4742483.506 28551395 39283.7432 518911.297 23645524.41 7174.194859 2154169.918 16555735.51 9121409.949 61097.89453 64270.93201 4858217.984 315259.7985 762743.5317 24506321.83 4748778.872 22348289.29 361995.3453 11307020.76 2380646.41 1397238.092 296551.5828 114269.7271 23756030.12 3.378322152e-08 13849603.31 2620831.181 9675293.684 834904.8351 14774.6731 5338.465025 37.94930246 +683373.7578 10272300.52 1.471769681 35056461.58 72942448.9 75661862.5 3072500.36 47458883.49 237191.3375 6711772.692 6560.508119 1626651.653 3841.002245 490598.6581 16474.8931 35387530.8 19097562.5 23603806.97 2526750.196 28412269.49 7015070.381 168003.1124 9047090 19364964.93 5921046.501 18541.88226 475.8546053 39066.29839 13119902.54 7238564.108 258253.9248 18.50296159 229.6525702 1387062.455 81520879.28 5494561.58 138600182.8 5254345.155 31160034 44282513.04 259562.9144 81283.61008 5563752.016 38863141.44 13448725.55 165009.1312 8140.288777 682.8674868 7452393.609 123781.0744 3684668.599 9132877.875 683387.5797 64166315.19 0.1398259519 2246720.826 7878062.975 4103850.358 333132.7406 934636.6819 283797.9208 125876.4492 2.688145423 28869126.53 3027.103824 227052.3193 48840.7546 454523.4671 41107073.9 3366.813965 46476402.62 8719761.063 61514686.77 12650560.81 1558102.508 11738150.68 557.88563 53609175.94 219041.8471 545491.2749 404938.3659 2.525322258 1027384.656 28.29495404 140528.7869 2556620.035 15022684.16 29181085.38 48477780.33 10.93120236 +0.0002221005183 25487600.42 10592336.45 2834518.272 35883375.01 0.6027040994 245.302224 8988.56226 154033.5574 2234174.091 0.2420574934 32795838.44 20191948.83 498841.8206 95816024 0.985874515 6280537.947 261.7412068 4809290.198 29621362.89 773.5664086 10448215.23 7457.561975 196431.7571 23869.86738 54.75386202 2716963.499 190064.8068 802.6300766 2.427699183e-05 6247073.344 8736.691685 67.62532881 6219257.409 6441231.602 0.0002196966107 300786.6573 25432653.18 34951377.69 323290.0243 99572.98439 29997.29152 416431.5741 24090.38878 607491.7359 2527.248289 14992.88345 56922640.96 1505305.906 0.01718137811 7359454.077 74257.87227 2104986.592 40.66368015 39991.23239 16641309.55 23429.39169 28905666.04 31691810.09 20952158.68 57914902.05 15451459.23 35593621.38 2137458.751 2.239791517e-08 5215324.279 5726546.284 71408308.38 18238.26853 8895983.423 5270485.634 11304655.21 47645972.97 195257.7994 5684331.635 15399204.12 9503.678383 63.17860055 4329435.305 13438986.89 3114.79421 22356145.53 2315.498543 1.718804464 195254643.1 7126619.27 6437.561563 286972.3375 4787.289279 5456244 +145436.7615 1194243.94 2760890.519 5061168.598 46842936.56 65794.26365 300375.7826 18402361.58 231622.1169 3176892.71 1931372.536 2462584.753 0.05382519472 54613.23809 0.07072657569 13432.42404 301366.1215 714286.0747 462596.3896 40290.75819 36335.70156 16367431.66 61388.89113 11650284.27 1134478 8065.248183 2.191747017 3690.323029 13483.2387 8785231.446 884123.6943 1817094.866 12896.88369 10.6024339 356747.62 109356.8166 58.85945805 383980.203 38755427.72 851727.2656 68536.62608 1042665.034 16399389.67 2474213.023 33715539.48 24672109.95 11557.4066 106000.9908 94644896.3 2842618.184 12190.29745 10961387.86 108532.6301 29673395.9 29118747.63 274027831.5 2875998.85 423.1956907 1130427.44 1080.135916 9968812.966 188210.3956 88352143.06 18817884.5 19077103.55 16469391.33 0.03387517228 118924993 73295.02378 36690161.96 52199943.47 3643386.901 9102198.82 40757.79723 2.699216669e-05 38592738.04 65955.97989 25452845.7 153175.0824 628.3451376 10141.77684 5911889.387 1551.888535 68529.13019 0.006275774454 23628626.94 0.2887561572 28977632.74 1636513.125 44899551.94 +9872648.159 17105812.71 32512.90899 464.5243227 127268.522 52681.50921 1.011013086e-05 42536277.52 18257858.86 33605.99278 56950.10821 13.43672092 10885749.98 143550.4688 7926239.06 735939.8028 12269247.5 618.800692 23.36822099 99418.49203 55637.66108 19187658.22 26108132.46 104731960.2 1790057.681 59064530.23 4971539.374 135786.5198 11729942.38 8939282.541 2754921.012 1068823.992 30509.8695 4305538.334 399239.6043 210158.715 33.14852153 364159.5255 13796625.79 591.2038097 8057724.082 3245726.244 12814294.75 2552769.943 17972.54438 64624.4071 231397.3674 6150812.103 1804619.42 92159434.23 105.9237711 3855135.409 39493985.17 653.7935023 30268474.86 20369.62433 303990.5872 1.900313876e-05 773001.4921 1182.473862 109741.6791 106.5034487 2857.337331 319519.7508 228051.2342 21127816.5 12591229.75 10.68068761 969867.9057 144676.3138 50056175.15 255.3113464 12646682.87 35031.80442 105951.2964 1228621.427 10271143.13 2373783.47 5521627.294 2.65199166 0.455602896 2.242318985e-13 11530567.35 3591907.911 21533424.99 460590.0261 33941.42981 49790.25609 131851514.2 1284497.115 +617617.9966 88668.07411 364.808266 6006976.669 67438598.8 79156192.36 5546179.112 75.38273251 0.00317603629 59449.3032 15047.54832 45146745.6 65712.30543 2405743.489 29889487.52 0.0966878929 139082724.3 17484754.94 277004.5131 32171.82715 4519.831996 5600109.23 2991639.271 83548.48409 47141885.51 2.199961477 676950.0991 58990384 216414.9537 73599773.71 53995655.44 791154.6269 6754907.699 254904.3083 18422995.53 3296369.669 0.001148346737 297436.5822 4459989.696 20355.28277 1991817.811 84161.49203 0.007722026168 9654314.194 79166.57266 7671145.853 25931938.6 1.359701593e-08 45033.47529 60443.98604 3879145.467 4151458.797 1.800178751 2054122.631 31646983.3 24754972.99 3069831.623 6232081.068 2.247495726 10093061.29 1719.31937 474067.3933 1059.986585 17709278.04 12750921.72 23368355.69 200783.8656 39226356 2565468.699 8145712.332 18333080.88 777.9351694 0.0194406306 85897.96185 804.5115024 3852.338415 1308632.82 1568352.376 45.19471979 1475794.133 0.4690298438 25.39339458 60988904.62 563902.5652 3695503.519 1561675.366 6312293.518 12351744.7 32045.43372 81680.03886 +1179216.671 5833272.501 5029522.826 6264977.258 11688222.19 7.687123153 238308.6579 4322030.749 42755780.57 139067.6836 1187883.874 15957110.43 44.5029295 82.39441707 3307.301903 0.09555135578 225708002.4 115691.4406 259098.8892 39051.41225 58.23144323 1.50416035 986981.6356 59421317.85 8772007.075 0.05378367408 59.99295933 2090975.375 0.03909658891 64418.30756 31854091.44 0.6024200788 11.85113299 42512612.05 6151521.564 5343.781199 315851.2078 16977905.32 3069824.109 407072.2214 13724191.14 31173779.16 4918592.962 21826.711 241.1197373 22270692.1 4307687.453 6327.903809 396144.2017 557318.3774 1397388.603 42585.79714 53130199.53 25917.70537 22780.92157 82901935.56 7600562.245 2340046.031 4034119.653 7277697.116 3431246.672 42995.971 0.03227921197 142.3391469 256872.2521 346852.9849 10410373.36 1720.519588 1821019.838 2856265.408 6289.675807 258975.8552 14095083.77 20893306.8 204561.0946 36700210.22 1931168.867 35628688.2 8648523.612 73493251.85 401669.3189 111999.4639 163398.9254 24642775.21 2807766.827 67180.17215 310081.4131 11277078.16 2140010.418 15345.75822 +16749203.92 1.741433707e-07 17858468 27601187.99 820.0527341 125893311.7 50296.76818 6310725.427 4358.517287 263.2943354 13705700.99 601045.4181 55826507.68 25560499 6413578.769 52299.69751 2865543.078 22593.8269 1299827.631 8.618845456e-08 853610.8091 14289327.57 31756.32559 476179.9528 0.02495226917 2798.701713 54993.91502 0.05064589903 0.2531146306 5708273.258 3313598.415 1336302.556 754.8932221 3159252.153 57980.95445 2597241.186 28945372.12 5401038.386 33.01690269 407.5034556 23492834.13 236400.1005 44765171.33 10196.45356 40801.88201 8268.381789 30988.90562 58484.24788 6113045.5 170538.1604 75.63366314 406371.3979 885686.8443 7139484.82 26894.35472 3940961.114 39.38941277 2200890.16 6154510.013 26926290.64 43376.45707 237.7656472 20789422.49 35243912.41 3300706.73 1247952.991 10740.52445 16196836.21 36600901.04 5351401.326 2044.939367 38573496.76 23641599.62 70514644.75 13419.16967 20.44517856 1922695.895 139547278.8 38.94083782 28160773.5 11.26058679 73596.91267 1268927.418 998976.7945 19915743.2 6414389.259 2467342.629 0.03125103622 29227028.08 3797.945935 +287774.0632 30612.24168 11740.40969 36.53694916 2832880.988 243417.3027 19107249.22 37474.28551 3799.847088 21587730.99 42041648.27 21222014.24 397744.5363 47628.28188 634352.3056 148564.9243 17903.28542 35602653.75 0.0571134674 27486.72959 131485.5537 0.001464465297 265021.3256 13264882.25 586724.386 1669391.673 0.004120374808 388186.7524 27422.47154 1787.166469 16416524.93 966509.2564 34126034.56 2523747.88 19148299.27 16710.95029 100681640 1225090.499 5810774.541 3022251.922 27926666.03 6.918707572e-05 64753.26135 6611866.418 26519.23215 7806.195809 45988985.4 24.17059718 1532051.188 0.0003591867411 3.474432781 20677038.76 35742364.31 18.05715088 2687526.783 25801899.73 70649370.9 98606362.07 325434.9594 23505634.79 3397143.03 43.60544794 35.05729233 26492255.6 1406053.241 4241870.198 537336.941 1743460.306 929.2872315 44773993.54 34388079 40431875.23 4.230434071e-13 641189.1559 930672.3397 3976783.004 4041315.662 79368.19201 1347964.087 535913.4314 85.08025706 10347780.99 7768702.661 14052649.58 35149499.48 78990867.55 3304493.694 4048.48274 0.0005814119607 1398067.528 +72620355.05 55305567.19 29583789.09 0.02296239542 3504308.101 15357484.04 22956291 16494619.09 781964.9702 9424553.253 9264583.187 1111596.298 5536483.653 2676527.515 2637.924529 701458.0224 1880.621619 5803135.981 7028590.016 5230483.091 3471577.967 2475962.946 26164.57735 34753.67224 10407279.72 181.3905491 403.3941739 2933062.687 6656845.807 9.213468761 22212327.13 41532035.22 20818945.67 6538565.748 484480.2024 108247.1501 102186710 657.6652881 94835988.16 960306.2402 8929342.069 76265.6968 7192.927987 259330.695 18824214.28 22460004.26 60843.37087 9562048.633 2351300.226 4128783.038 26241895.32 2023.507488 5430573.505 4842702.493 67767104.54 3146941.551 3335402.23 40089305.58 1414240.312 11381522.74 5742150.273 1325.833789 10015.78271 7031181.411 9716.886155 12052691.55 895072.7819 2932.241233 4953224.721 26526575.7 0.401701513 62978.0346 34944.83516 250.3761491 287443.0755 42.67338299 3727705.656 6160087.392 168583.2805 2691147.631 3804774.8 97088.75572 903873.0513 9316.307252 0.00015778774 4864871.092 24109033.12 7048070.706 1.659968418e-05 2191.56023 +7722412.661 8389593.272 36670040 42132.51303 105898.7777 220.5174959 8033222.411 32301.94425 0.2816776285 31611763.03 42.97681835 8925928.561 95094.33541 3036197.29 295191.3438 10008848.07 55.14487474 32323814.02 2617065.534 85130.63112 5611358.036 3497099.193 2547336.385 2874.52476 5.118045008e-13 3217157.789 3591.401495 10457393.08 0.002919601402 84101160 161982.6359 4394980.186 48222.68286 4722.845773 11.34689872 1809186.755 6926125.66 148299.2076 14765919.12 1098024.936 2812.480357 2320.866321 24368.27213 850794.7397 7673485.875 5544.419131 0.0004959401237 3657172.673 496214.6121 78630.44733 558641.3892 11671399.33 2044778.974 14547488.35 76803.82707 31652.25498 14027230.58 11265872.77 22637566.43 53702.62193 7486016.627 55160.72266 25596230.71 5586953.384 83372395.65 12046786.59 17650712.51 0.0005825390733 25745800.71 59830.04259 1.922621224 1514.206275 24.88009644 99005.16621 27820176 108904.0545 18520361 29859.56109 4535937.052 3252.50154 3293.440992 69904.64301 63765772.06 1.301974883e-08 25409555.23 6051438.68 0.06085153934 1444719.294 145520.2113 18072069.38 +34312.66007 156.8733131 7961085.343 6.297735367 3473782.38 979921.3498 3814964.281 58331.09754 775980.4255 156.9952614 16.60147667 4833477.067 655.3396932 42952977.52 1083519.778 1045.913086 12637854.71 44069723.31 68571124.52 66800.51345 344349.651 3.140818879e-05 0.208614672 0.005804227042 344907.0061 14543342.49 24055812.64 2.546816254 161289.6544 19612203.81 406811.7353 2697142.987 207271.4658 113286.7703 43417.44714 3051624.361 2.803642185 82.20921041 10457420.19 17792.50244 29726.06313 8207566.27 49280347 30570.80018 0.1828677835 339398.2734 21526607.59 362053.4073 34310158.89 83227.41337 33589356.21 143.3995819 200068.7755 23417817.77 6148.236293 218.8090335 4377026.39 1372661.758 3631761.261 3253.051312 76895.12638 26380454 24459897 7.388022878e-10 438027.3307 2590.631872 493.3078743 35271847.02 155678046.8 73324162.17 545186.3542 1720792.028 7174484.495 52948536.1 11704957.1 67898.63695 43920373.5 44241608 76654.91224 248280.7698 14494019.92 0.03584203314 17777298.97 0.006204669619 3651.324304 843.9508091 3323068.132 706520.1 1505.493594 125797.8849 +51390068.85 7391065.685 800722.3949 15366716.91 222399811.8 13285.70703 610566.659 12572.93792 1708.273569 3204.749938 477282.9972 35745.10058 85305132.68 800.6687464 22081.77087 2975445.154 89067.67363 9665.716187 23747.70291 4314894.45 92562925.02 767071.5569 30473230 268355.6125 39495848.08 29306039.82 72676.92974 262745.5639 7077573.355 137205.0595 272.3506051 7699885.816 11368285.11 413.865309 18186859.32 9749.192507 4077806.511 8306135.265 43090919.52 1209214.784 7067120.705 15.8015017 3576.466603 79299.84552 6074.378383 868301.7646 0.2062639893 18402168.48 1793.137823 2040891.323 31857176.61 8017383.269 10753721.1 34686.4516 170347.2326 13961535 3502029.808 3737386.101 3941900.285 3528773.795 26068311.86 20233255.3 75.49372188 22000884.87 1343032.787 36729144.98 63.50957963 253741.7925 8155892.769 25627754.79 4406.782073 21411.89596 25765577.92 53659432.44 183.6293352 28634815.78 34741602.25 11891482.52 0.8563745647 86394.69535 3345967.044 10763844.05 29.6779794 37053798.24 100499.2267 81.3014615 374.5887222 41989347.1 1915246.272 2975583.324 +4011473.143 3168.39475 17164900.89 54883074.25 19425656.14 98166.49949 13092.30414 239132.483 0.0001154854521 65.16211148 5490724.517 1.021428427e-06 3519106.901 2092.766263 71196.94531 294688.0965 21454522.47 1114841.11 10781381.52 7452754.067 139.4182395 3990.984465 186.3083686 7958989.033 33892.96423 430.152528 6587720.573 351.0669846 61535.89528 553.6910667 31197234.11 3808649.222 3848268.259 145374.2222 5.445820167 722.6197 47329019.97 63875275.18 826197.5007 68099383.33 6510421.002 40417065.13 35622.25312 28685936.17 3004213.558 9379.436187 84703842.75 18873.00227 40941511.32 3.355611425 22995517.32 234445.8523 248090.0817 667306.4448 3119487.547 12.29170906 5130.470768 4477902.655 916879.405 20345.32531 86869.82755 26754484.8 31599706.42 2606.270881 0.3365456292 527816.5965 2910.808747 127577.6183 28708416.67 323720.8491 0.0006585488071 3109.846747 16807074.96 1790502.117 22139386.92 567830.3694 93102.51122 2604.676186 1.161576562 25061.41179 86731296.78 111.9470467 280316.3896 8575661.704 47345182.72 11462718.1 33260.45647 1373686.326 2030.737331 31926012.45 +11130515.92 292139.5647 1252247.526 61570977.27 2837622.5 4797.830873 686129.1302 0.2583842432 10694792.7 270232.5257 526406.02 35423990.96 292934.1642 17795425.93 0.1214165632 19560869.38 18147.14364 78011.43532 7337365.691 4918701.846 939.5460394 69143.82751 145016.9598 3446560.057 2554626.087 7476959.643 2630019.232 17483939.4 170.0880847 9894947.256 84110035.51 1553546.509 937489.7643 0.2367446216 73036.45086 106414696.1 78867.90085 7135178.506 3468.981001 117212.6397 8398084.001 1.134408712 4818042.606 1476772.266 4188.978034 44641304.87 18975539.11 17.48815517 2414535.513 138451.2191 13982238.56 151287.4734 7.452438713 3035.953608 5278.227068 1780716.513 1480582.059 354765.5965 1888.029568 10305.31019 3038159.387 7638503.659 1718702.338 9900994.654 159.7314486 2678999.859 5776040.358 349.9980975 4272655.5 1526300.612 47036.34477 2433699.615 22988014.69 6137507.192 1154891.466 1421627.55 13555547.76 13622.41428 106161.519 19450807.85 3736043.434 145955.3831 41448078.29 2890818.916 8.830818706 2137713.782 18819268 5952.477025 59709580.28 34663879.46 +272012.1775 1025582.617 6333779.493 16832027.24 12202813.88 25884.4355 8696673.023 115096.3485 8230.596773 0.000555907423 12772544.85 489.8984376 54294416.78 4172860.916 366067.257 5794165.944 3252.747783 19.62134256 302718.208 6508434.621 36663.88659 2487.025304 596372.9825 242.6613187 36014280.76 2266083.322 269.0419018 1329745.197 297.2374572 876794.1804 4615728.529 5353.357272 1561307.023 20182914.62 452282.5399 22784118.13 1.893340752 53731370.61 0.08036593808 8677731.475 1510505.844 30179.32042 2340010.991 0.0312384516 14811.50205 324837.6262 379.1471347 196133.0086 0.1447459648 145836.1494 163887.0049 3137480.509 1365842.337 84901216.56 7.455558591e-08 565.5352485 60150541.26 481930.3185 36511480.61 1075386.312 5952717.133 10286083.13 181950.2826 75.73434529 667.4647562 9759576.443 2463.406863 566422.4291 7990555.339 233.8750654 2102302.066 60825.78344 22243672.48 3999713.5 616722.7072 7347.486646 0.9413398579 2344256.433 18559243.03 2143639.258 2.549373286 524725.7206 0.1514694061 80667.42429 4348553.026 10947496.28 38311.32535 3935728.688 41259383.64 411.467087 +511.741463 24575490.22 17513306.87 43688.71899 38736677.85 4976472.624 78899.55386 3285.832176 36931.43926 956740.7954 3612136.086 19668872.94 84739.73946 225679.779 3190543.406 819.6939327 1997526.146 154.8615473 24352330 10614180.94 19326.73091 2571.461529 76640.82208 8467379.27 185841600.6 7571.987859 33748.87771 24.67864469 7415560.649 3003521.69 65.57956886 19942.51922 83863112.49 4308093.736 256840.4452 4578133.794 270974469.6 65223.65625 85.58953098 9561.566696 3993154.833 8351908.915 16869472.97 300918.9427 75064.76915 3458989.947 3742684.371 30630.12237 35894.30178 12195237.26 26131566.11 23484.06496 1.40116402 37266659.69 1355140.424 823297.1659 529.810592 3246.454601 23021275.47 7314.528637 60478546.51 38119022.67 12871538.83 974558.6257 139313.102 17267.50739 4.834332087 441421.1563 8890.032386 282103.9946 374.031708 53741977.31 61080761.68 24948460.45 3011340.576 539.2784251 25037244.76 0.04112845359 40939085.86 455.5034485 9390372.823 10315191.3 17.92880637 725995.7481 17967256.1 3885364.886 15007358.38 48925438.04 0.004068295012 3831004.325 +2621284.943 1244550.634 3305759.685 1677050.671 15651556.33 46119207.65 52415.76019 82782.69429 118.6642442 16428.34294 2888169.242 7005.572313 3813866.935 60.5873946 3377.186293 327958.0827 12145.02029 89291.39844 29749306.87 33330364.18 239816.1991 83608577.23 939349.9827 174480.5095 8799.507056 1846654.116 134093.5307 58873.55032 2990886.625 1890471.164 51035686.4 77.73910944 7626.626284 0.8546764687 4731171.704 8525416.101 99997.25551 42429086.81 44693832.19 2734278.827 1276830.531 71782376.23 3437591.068 11728560.57 5.372571337 302827.6475 37661.55511 3178.289105 7525802.116 45.79106353 37371243.16 9410.731065 16019.16936 13374636.04 34497.50717 20640119.43 4.281447443 153925738 57316006.94 4818.343469 8.897984323e-11 318311.8134 1.606366829 8.043472434 2356962.924 123937.5974 0.09373917513 5137130.791 6850485.317 20245046.29 38609538.16 10127233.59 12544.29299 2842.855957 40215054.57 1206865.75 33079703.54 17619824.58 14.56363992 1904469.423 72.78015725 21484363.82 834594.0874 33962921.6 537103.3192 9294669.368 3.126656711e-09 231586.68 1154115.379 8374611.51 +5847007 49084074.74 4957307.436 46007.50047 1559966.178 9357129.075 1.015337128e-05 14506533 11149645.69 0.003881825028 314.0242655 1803980.301 58741.41926 0.02883821149 859921.3745 13989366.45 352786.0714 4149042.355 971945.6214 38352847.92 143.3327795 185811.7479 28323151.36 543754.104 104336278 30472546.77 2122217.425 375.2145446 260239.2886 39180457.9 44792236.01 41663038.68 36073620.62 413971.837 4036519.103 4845397.707 0.4154872022 9093268.319 281.3222351 0.0574069835 1292400.732 15857940.65 943313.8271 1139555.804 67609892.7 0.495562643 2202.458867 1610871.76 1425612.456 5463442.797 45702.18512 1189855.868 23795.82331 51539289.28 10267527.55 2653673.762 239729.8537 176577.5188 11623106.97 59586799.04 9276926.354 35875460.12 55013.66714 490.3319579 30657611.97 18704007.92 31392842.24 0.09024978001 2814203.029 3068704.153 1968.497377 18037.67469 171182.4766 64484192.98 3.897465764 8299892.347 413.5840715 24251088.13 1992008.378 50627951.62 46781791.4 18530213.23 588332.3236 9014199.895 5319479.012 97836599 7725769.842 14094524.08 19036961.26 15349.4323 +4.292569479e-09 617493.6313 3.454265721 86.85182282 18804454.69 953684.828 63704.60867 3544165.003 12129.0513 25926.24943 173.6922076 2194934.549 31750055.73 549110.2691 15193.88189 51530476 16366319.32 3770230.184 4297.480436 4641983.892 24871854.27 0.2213600693 67419.86164 2150.444849 18594049.42 153951.1722 1446768.051 1006233.431 1655143.409 588215.4247 219339.081 5180171.433 40109627.39 1093094.712 35881.6164 3926.558904 0.01353582828 86768.82462 11332752.24 523858.4201 41986325.73 14477.30188 296168.0938 19071.39859 23749375.54 552.3975252 26970.24738 94028.37355 135528.8974 5231117.375 95973092.48 2181.80917 115.2383409 110163.4445 3197914.434 139601.5481 5102089.084 13745943.56 12650286.93 539631.0935 10871.00437 4153863.951 88.08895828 54437.19517 4646740.433 0.1341936823 59380107.59 21340.64841 28631828.8 1490403.372 149414.947 0.0001111917307 0.008068395723 0.0005533022085 719556.1455 143.1453816 674086.7702 63134185.12 16563.9335 0.0362569356 17.03257932 79429.0595 127.9322519 136.8883241 26687557.51 226810.1608 234.9746091 20564.50856 21901087.35 3243132.586 +222964.1899 4297695.93 79531220.28 799877.4828 86.24237882 16780.10937 348267.4471 2788292.218 1484240.706 7706610.257 2526463.169 3723823.331 302563.4556 28.39334843 1.392157673 331193.4526 2800.09849 811730.0562 5097203.896 1592209.579 21142.80596 5620282.3 14802438.31 28337576.24 17455.91685 6374.78174 14.57745436 6239.51111 35522200.02 39010.48071 5.69030605 4574013.537 49646870.9 124455.5676 0.03142360418 5472108.958 1069.559247 0.8553835117 63480.19681 9286.511081 0.1091188994 2932.50783 677860.528 19.40912007 23438.37761 0.03499043467 319.1256916 833721.678 4266.158468 1155388.507 11055122.08 811468.2832 176560.138 407.5197608 2186.248435 7335434.877 24552286.96 44555717.53 405565.9927 16636749.32 784793.3201 278616.2568 42767.62114 26840641.93 233.3366511 125024.8296 1246771.349 21795601.75 8003853.808 807.1793252 0.1162498029 16638096.78 1405366.824 156939.9241 5.596548837 2.758242203e-12 31571272.18 50687967.95 5138.705208 32667.53773 49164278.14 56.51702356 8377.425802 25082679.77 80358901.63 2763106.25 5650349.499 5747.20014 206599.7236 9948.283769 +3882447.467 4.403202184 20385.4582 41617412.04 24935650.7 5742818.238 9865.215698 41735577.64 448137.7883 9751734.836 36743509.24 10818.41902 9234117.247 313424.2259 759139.253 8314397.456 1.757841233e-07 2596.253892 14793.64573 1646.895887 7243999.139 3417073.911 9236394.59 32830745.29 207.3171384 1476045.644 3185243.399 63707022.16 95695878.65 27790479.92 132494.6305 1512907.088 8731.757949 39630329.9 7649991.353 858.4638282 51.33303348 425.7706414 0.0007641705313 1397216.257 9.274992014e-07 397343.5715 5974721.963 214765.0281 122553.4523 2754.376806 1266850.234 500.9114694 3819638.311 17708552.8 11038536.22 8289.82185 7193.412667 0.058493333 151602.9978 22192294.83 29422684 0.584418271 41644.23411 17344044.07 49095277.24 7180477.311 8692646.673 24480228.34 7105037.113 3970.847267 52016510.31 15908.41756 1.035962889 1283065.071 65383424 0.01955883667 0.1087904718 10818708.51 25113832.92 0.3298582415 5915641.183 2289582.499 78.5819173 2453642.143 64630.58209 6701.01914 510019.9683 8719115.785 3487786.529 93.162117 39922531.94 4988106.981 92444.0509 17857266.15 +10516.91416 32442242.14 5.022137498e-05 547050.5624 56896.53014 8.850956899e-06 0.007076901365 50526176.9 57100364.74 85006156.74 101103995.3 0.1030739477 285497.5628 41.91259547 28657322 7357972.508 2287016.924 23465555.23 9084174.428 9289.218379 7952.297218 0.005144741103 41228.81511 11.00770049 17124333.68 8787394.009 5372.957088 22766824.89 8941314.117 8317608.597 63133.72403 13405.04263 140386894.6 63163470.54 509.9742723 3386991.599 376400.3664 27043.75969 89.06686033 33862.7776 50754.78605 29100603.87 52824241.06 10.36470869 2901255.555 394.1878642 0.002053940694 5171006.587 48115536.3 4.993262741e-07 25510.81718 13.74665398 0.01834064427 510154.5034 0.1813999477 1952485.85 4280364.11 259327.7302 1640200.904 31080503.5 11470305.38 360106.7427 32966.33485 4866.660567 4.087911884e-17 5684.536579 100201.868 4654306.612 308.3621089 1677.581665 13.74912736 6174294.317 19779866.19 163049.8569 1964.0434 22603.6753 3037.858844 40688113.67 5941718.039 58.83339834 72424983.33 0.00506580859 13018567.69 89144504.66 3771.054451 55017.97105 13327.74876 1276.320679 667.0453743 0.001231890579 +155.0428432 4433373.179 84105414.01 8964934.002 8729571.505 450116.7531 2529071.4 4927912.12 201899299.9 22197229.9 313202.9074 22126453.53 8758527.153 16852549.04 4692.0341 302.9258026 4330686.369 0.1579686898 1597679.032 12046532.35 287942.6245 42.38096133 23216.48953 1702.165002 39344651.64 433.8129298 1568563.089 19550415.61 2066319.242 268335.9396 1298.420916 4974924.737 264034.2509 56061586.79 1.80459557 8470.23318 31527.09101 8501039.506 1459795.363 2386.797784 13734998.54 23763.34285 144.1320863 3086257.71 551.1910665 2310891.218 3259.310164 2697110.547 633565.3633 4822.804696 822.6901807 131233.836 1870900.063 145.4223157 1254070.42 3750715.677 12609264.12 7307775.797 6.89962207 41165540.26 22702468.88 1.919255787e-05 3314227.969 71387328.39 653.418691 279583.6192 10638098.9 1218.603146 25152983.69 21641273.97 13471135.56 4163422.031 11613.81439 653513.5591 1932426.541 7077223.522 1948476.184 278.9890404 15480444.59 258039.2741 14585748.32 1452498.088 745741.3754 1321235.778 1247691.934 1288025.698 3076971.093 3534540.065 895605.6509 0.09804558774 +12989432.41 77.9734077 7316319.679 2830112.33 462893.7286 37986705.67 148.4459926 35.7348175 50715.81238 27982322.29 79827.86916 51345054.8 1299610.594 123113.8145 15.41695109 103734.0938 37737695.6 94352.30922 16813132.46 17053951.58 512293.5861 10636032.93 4253737.467 35791940.98 12.33823902 41295.95193 427.5073462 14543540.07 861678.5062 5.224664884 27820130.29 760846.2082 8202375.136 13.71412902 5133370.977 18466542.32 1827387.95 293969.8898 348241.816 611.2774001 741627.9383 1580388.185 64140.88057 19282639.74 32812.20203 694439.9297 14202024.89 1097532.212 35129.06223 236075.9376 30209.41698 2075384.84 41006.41775 35783.77113 390.6365426 713106.8699 3690944.692 2645.843995 22509787.57 0.0001523692559 2917.112715 32.46231854 61388.64747 3414832.778 9626632.98 7169.50365 4460.246006 77422.13867 69971864.61 667774.1622 7730803.333 7.797788305 5134137.167 2579987.089 1074446.97 1272047.377 5374.191034 1861862.125 3428265.407 1976241.061 500667.4163 11.20008564 275042.6055 8011334.322 115492.9555 17381466.03 14181026.44 19191.9649 154771.5164 24879579.02 +97568368.45 1699886.813 452636.3993 5025.399902 126545.9983 671952.1082 11702904.78 36348.625 7571225.637 384.8765298 5672631.361 5403477.002 386003.7057 2493532.728 217292.1798 51370.18345 677341.5793 2.034277602 20.77688269 4394504.642 109236.5626 3422100.846 26463465.66 129865.2241 44793229.65 2459838.306 9905766.946 711632.7816 7770.472344 48608.87301 257090.8587 3330841.119 329911.8136 225266.4699 270.5238441 0.002853931896 23.84175767 142909.8114 29327760.19 0.1272881967 3285771.067 7693912.381 14166570.08 57.02442173 46287.11777 1048863.227 33785742.69 63378.72925 8502901 12138396.74 363271.6084 1201082.475 7.065786942e-05 4.439793471 189861.6507 106745.4463 89248492.5 15999.9872 0.3450260214 31474397.32 14.87495767 4291092.889 3916.124685 169884274.1 61169.65332 152253.1347 116886.8472 2.394043051 18206081.4 10223.62281 13468624.88 3411911.354 94951.51841 775406.0198 387674.0178 16442532 29035017.13 38.76466031 927903.3279 16276524.49 666.5901646 2187803.108 4837053.699 3.507416108 5749.827846 35848.22976 25612854 156718.6741 1769.790872 3879318.735 +304297.2073 1974985.395 0.02539086159 463.0963645 64704948.41 118150.4341 198.984221 3309.640432 15428.43299 95.4103811 0.0193174786 3555071.832 1.508435353 25329648.7 5567.527487 11242391.35 14034329.25 439413.2414 648.7250698 249849.0427 232629.2386 2.478477125e-05 6908.409492 140946243.3 253615.4177 70059907.12 18264480.77 73445.6046 129091.0291 35582511.99 3751186.558 5253321.663 1646552.352 4699183.393 28918.42599 133272613.2 1682103.195 5489502.094 2390454.712 5.392592733 4531865.915 1573383.033 76717402.69 443.8194239 0.000466301557 14392191.74 15617944.4 43332.8933 871.5940579 25061729.88 254.9684897 13941682.5 25859640.71 1869976.132 672489.1519 2140568.204 24914989.72 29382.59493 9169.556667 3841.407124 0.3523079782 397231.5859 546.7403526 7933554.141 40573565.59 53236.04774 51426.91456 3723156.528 16252.4616 39387660.94 145.5806858 47734115.99 1581.223183 33294286.3 149334945.1 1054177.622 7.821027674 284740.9925 29711058.79 11309565.53 2603213.915 155135.3669 4652.464977 6217218.851 3473.382427 20607378.08 105010.0904 14090256.98 350210.9879 1214771.918 +7942.388256 5574814.744 1727566.952 107675539.7 636.7601243 110943.4259 743578.5604 18257566.68 10199686.49 2463.140539 571574.9484 1437815.133 2861363.004 39503097.99 444785.4688 9559712.007 1546.036743 21600.88278 2710705.553 17229466.51 83381.75327 502.8109746 33643894.46 29783244.36 275.5035305 8251570.549 17172499 95564.32209 7.100963668 109570.9192 815997.2804 6954.033848 83099006.2 58.68559946 26462295.44 431634.8053 961860.7717 73129.68972 11661987.61 36.11838143 28401320.3 6185155.353 15724244.19 8271990.132 19607352.21 2343.222249 0.01661631193 718191.399 27641109.04 116.3606714 7150369.569 40885.55947 454917.2131 121848.7561 108.8804669 2.755488514 5502565.713 50818095.08 0.0004422459018 4372448.612 23776977.28 48798509.51 757697.5252 3806566.015 1229608.671 41721340.62 2748.680843 23248850.23 2307145.607 75.89896547 23112140.51 2739410.035 3076840.575 23329.95898 25140.79724 2603842.516 14714.0291 2.810135338 0.01839778142 7351.895801 2498197.327 789251.3253 17338263.06 4790740.126 57448.98694 5633356.732 2525892.388 1251747.06 13529352.9 7874.262123 +40167.32344 30.04365415 1860411.121 1.124579235e-05 5177042.125 0.3058049232 89770.23526 178.4229449 19623333.26 9777417.983 25477.32861 30892.71877 29339.32222 63773.85755 492543.2059 11549755.52 2.664290543e-14 840578.6414 1976317.74 523471.6848 168112.9088 0.1096046061 764175.2711 2603552.16 5716126.5 2.000739421e-05 32466588.18 576994.3605 29688074.6 105.2779049 231917.2227 1304249.483 167295.3765 17177976.27 74376938.96 53.95251096 852267.8567 524211.5368 146.5973041 2182753.533 105135906.4 18535056.81 21306095.14 240383.8865 14031919 222092913.7 66152006.43 15060448.41 268271.5503 8529231.537 17590055.99 52402287.31 1351541.668 66152327.28 1.454910514 12074712.59 520480.258 3751019.799 34213.85885 1575542.555 5775524.504 105536.5608 8.593771549 86647.19824 396286.3234 13061353.25 29162847.39 63190770.69 372.9305174 19174.06752 92453035.1 1824331.747 7.799707279 140442257.1 952997.0193 7981771.517 308915.7334 3049758.282 15388640.09 21445458.81 110727.8748 425.5550343 49537.81302 54629777.15 226.2584118 110875.394 21413733.05 1117738.4 17859.20126 274494.5315 +673.9183351 28347274.1 4828779.295 2671961.758 25242.48939 76.40117168 24463.5543 18.56480858 3328090.019 351114.1519 7813.129193 1937379.754 0.00221410111 187239.2766 515002.6865 129872879.4 28200.16434 558590.2565 54863477.29 525067.2531 26031254 1297.184206 83672.91983 7.664407441e-10 13597.49833 18065.36509 13413282.32 50773705.1 501055.7824 20835763.37 7121698.397 518973.8095 26495.56895 447.6140424 74123787.93 17745.85497 10077.576 115.0660976 448.9462679 6203830.064 3222347.582 14394212.38 26658139.73 227439328.4 25884111.82 1420.034424 1139040.85 1897280.125 953417.7391 107247954.8 621.6406366 3153816.712 16389.78523 38802390.26 1002649.671 10836.03956 1.809043241 17826312.02 502448.6111 4648930.001 3959.933128 34982304.13 0.001024896982 16352428.15 44329854.08 143961756.7 11699245.51 1604442.653 4047176.87 7719161.545 2701977.21 4682307.843 88.51863743 2194703.343 7438497.366 26475703.07 61400.83132 3067429.302 349493.522 12257465.45 96017.29184 16169141 47.35992586 6789590.158 110332.8595 4478525.48 18162632.46 44202114.36 1734279.724 49844213.28 +286250.8823 97725.10202 104468.6489 6011739.814 793782.6572 11137189.52 532445.2398 36232737.6 31750362 164.7006805 15932299 1843332.448 484.4038981 2988.33104 8275.997803 21120480.65 3078.794768 43309966.88 226905.5934 790275.9414 0.3359867486 25050849.77 18358.86328 3195295.432 368117.775 71960701.78 29389149.38 55519.39586 16067752.12 15227.1902 42159233.74 233140.953 2405.718363 432.6941158 9331796.285 0.09660956704 568272.9071 1666310.376 126752.5618 0.008367774648 32406.7139 11446746.58 12.88429293 310010.3095 11285974.12 10629.45874 43558679.32 5023034.401 1464016.41 0.08657095675 26834106.78 20159677.87 180870.4415 8288898.506 28289365.33 641120.896 3048.779894 3510696.143 8181122.124 37598536.59 1523969.607 33452.0597 1060.046534 11124375.09 17.56366837 40991220.53 1141345.987 0.0009179291465 204935.5027 135601.216 34272040.15 11266390.67 5381.929435 28393185.73 10854.80513 13568645.11 14668780.02 37531.66973 2917367.243 286974.1787 53800.10806 6855.556343 7619807.925 7803509.439 3116920.375 5.621387661 1659092.189 7479288.676 49.53662885 2265507.664 +9518319.977 8088002.75 2600681.38 1104885.154 8885065.904 11917069.55 233.1798315 1984285.391 40408443.66 2232504.477 417658.2989 40752816.93 3940258.453 100157.1769 125477.1311 701463.4858 0.03307196138 0.003637063902 0.0001978031014 32142224.72 8403.539311 95.82331175 128625.4136 0.06210284713 4111523.5 2012453.114 27503393.65 222123.4361 354317.4913 44838897.08 11164.43232 12672221.17 2057925.255 9719733.422 2304.942228 5094976.951 652073.1941 226017.155 3.841416927 8362900.5 5196915.09 988.4408463 114492217.1 9845863.624 1959.468578 25668442.2 306820.9469 3218284.122 9534199.571 2656925.343 949452.8719 2825429.84 48009.85767 402.4628348 653547.4381 944.2638524 10081756.01 6494061.667 40482155.16 2.520819242e-06 34078.60178 51057.42527 30379811.05 106.6507538 142587.3027 14924.66973 324474.8787 4661.562736 127000.3812 21597845.24 91020361.31 134199.4814 1005741.934 0.008927791233 187065.3725 8134624.472 20086872.9 86.7561739 58173470.78 27983787.98 36681595.63 47763.51195 5090.732215 61.60091671 691457.1832 1139911.024 0.05133493408 50105490.52 4878594.339 28454384.57 +438737.2622 791401.3429 1203.409814 40729166.21 0.06295190636 21958.39442 21.60823441 2663375.954 1781.612206 2067.390998 58421360.32 437392.5699 21370619.04 178247.1181 96346.82925 152701.9911 378.2175009 1.100853058 148.1814566 16631.75196 3458621.026 4760315.706 22514723.97 4.463334821 2.098277825 899.2411188 2303081.826 11929.32625 22428642.85 1126642.278 105964339.3 92542446 1456473.73 682062.4736 345.9560676 24889.86785 38230735.94 0.006906512154 1008422.672 1773733.511 2394439.447 2700933.001 12456593.64 1605139.333 28733788.65 3002.114561 2138.231278 72495.65901 20834088.86 20014384 317653.3102 12411816.25 3564050.092 15122814.84 963.784727 717964836.5 15623803.76 5218349.727 27278.46559 64987953.26 41304.37509 2125.990927 1099143.304 4546604.427 96.84315791 6458734.919 4524898.159 20373.39279 433927.2223 8.919863345 2156.025163 19.07201356 201333976.9 28291925.51 35008.34781 119.5271275 24026037.12 69111.36519 10059479.43 8911149.825 197617.7467 15957.24663 5490.791505 20887519.53 10850.63578 4595568.481 314554.7437 1425.240316 34094.10054 5137746.73 +20612937.65 5822384.766 36009734.47 287216.3669 467015.2826 7132.597181 1029.918941 1018.753846 23090148.23 735972.4358 1132.826182 469187.3825 1526.465813 468395.1512 60697514.52 40.88450561 2317853.633 67070.57682 3548255.388 5076547.721 456.3040361 3709.587546 82388873.62 5753700.665 7788.167245 40798.5199 17842107.49 594102.4591 19374428.67 3980.997086 13168.97477 23322.73981 25054.64049 80221.43859 10192576.78 4.619018108 81740126.75 4873.642097 9744.23911 17214948.08 5364.389771 7737704.903 77597158.64 44631.46384 5986777.398 77133730.72 614.0131871 6402733.825 285973.0346 18.82029433 1509428.769 17780222 658537.7395 2830612.361 2011031.69 141170067 4148974.482 5184.464526 11306315.41 1269.084263 0.1366533894 207099.182 361.3434058 113199.723 9649.947272 2124763.554 148.907109 5407.202166 7738223.501 4638.157329 26970235.41 15398653.93 4755547.978 29458450.17 4042959.815 104045.0857 15012846.18 1246030.642 64235516.11 0.982059747 10763248.75 36638.98536 743.6385712 9948579.69 15752869 19001329.41 11925.17484 174621.9895 62499498.58 3897152.453 +75106.8038 5808234.314 24158597.42 334.1879593 338394.802 5208897.5 510695.579 29948040.94 3983.776505 16285216.2 15.04416035 110813.1804 118540.0573 12663178.42 1102220.731 207786.4339 1.828525104 4403269.174 11333189.27 2467575.083 7081536.851 48.88130131 60901.85313 1699782.268 34797.39862 88812016.82 1297224.613 4783.410502 11208752 10026745.18 33795986.57 85941065.72 850189.2002 10229069.48 1494709.696 18.65873733 5110009.14 541.0823366 22929009.55 5.242082408 143816.3803 12653.53494 52.78732569 111027309.4 9965698.026 416.5588465 29051.67393 13083776.46 1240308.381 1208180.938 7780019.398 14806840.46 556.7150088 6289.589388 2710.953239 26213788.18 744397.3172 280.8364322 15854718.34 204526.102 28804.05447 47.5437885 1353145.121 551.567912 9507.742222 43554999.4 167920.6085 17973263.94 14472155.56 10561755.54 45250799.05 1063.280983 10619641 4894930.737 7788805.826 5713313.675 455388.8151 51117.2033 46200071.04 645796.1206 6.119929165 13360780.56 3535.236062 23803.69603 708892.4476 35449.06807 256977.2287 961.6987963 330274.1038 3345822.885 +10067701.5 91676.04491 3760661.49 979796.386 7503493.05 213178.5792 2685432.588 418633.8991 10200541.65 285643.3515 8260641.639 46305575.73 22.69070951 39013894.22 6587609.829 68070.98539 5520.782715 7.027263592e-08 814500.5823 658575.1875 21133655.2 8122488.536 44.39357522 1.363855418 779946.436 7876311.346 1518004.783 40215480.27 9697415.577 7911675.79 27242877.19 3.649090286e-05 4597438.521 135849.0978 39565635.44 96462533.37 227.8988188 3272177.75 12292653.97 23.32390596 14698791.46 38913.79172 65982933.36 233.187882 15.51184689 7597.85474 132.0797178 3.298410337e-11 6950.762724 3230462.06 3652529.823 1099.161087 0.06454308349 156311.338 270.1351654 4622.452215 3859340.321 21290630.39 1041416.506 7164267.234 10942878.08 10592726.48 20223028.16 37813.44985 2973952.562 65.4579786 7947673.761 8040.432654 86.76283717 3229.897709 9706.626894 461987.2025 9843648.092 13676692.81 28388302.84 3886.921208 29038314.95 12383088.48 41852124.57 15780320.61 7299659.952 4713626.501 14615736 20236658.8 1.176793435 97962.50387 1365.299138 6781542.54 768.7212535 50284483.36 +18700988.02 19.46297977 406051.4672 525884.3569 519737.4604 0.0183062761 11.04315358 15607443.7 3536015.367 10647892.66 4831619.022 226960.1838 18107714.86 2017569.022 1169634.231 42578084.28 24095066 7361.708043 34072767.5 9435538.593 130819.0171 49.2535043 59681.72383 888234.0628 1325.086218 114469.0571 10268524.84 68092.70157 53611.95928 36030.14707 393500.6427 0.02538297825 0.01454730312 1756.36515 193131.213 35828838.27 9040220.442 1621240.343 59.26696529 1281.212296 4187380.355 716072.5431 58057.63193 1554049.473 7673269.837 31455.36139 1090232.701 806405.9295 1174.24539 19.87926804 4248451.783 11260338.1 784981.7323 22204.28515 0.2904978463 23349.68359 19547510.13 1149593.388 2094846.785 4.707131792e-05 1384797.976 7893665.052 154.6042939 8972.637939 8.930421825 6400448.475 12229180.63 6723429.494 45667712.02 110503.8971 7.406311884 0.0470817165 765680.5863 19026887.44 419323.9283 1738.379344 7557494.937 22637551.37 7.761560844e-05 8751.895968 0.5558802821 133533.8273 949542.2247 1166.341231 395679.5135 8.903532912 23111633.83 43323.01709 0.1548175387 122763.2908 +18258734.65 379.130934 471843.9908 2928983.696 8131242.802 365888.4573 4537277.904 6150291.515 51760.42621 220294.3504 2751.962277 1.589854917 565.9507631 1716861.28 355698.9044 848.0198821 1559.129102 0.0211887152 82943449.94 9837730.544 44244804.01 0.0001780699097 1156951.83 48582.1963 285956.3772 14142621.56 5828386.878 0.1817040575 65030213.04 844347.2485 1177.123171 35869715.71 54452575.01 42435008.77 90.00988183 106521023.7 928007.2897 0.06117610584 82411.83532 171590.4443 6361148.063 5155965.336 25345.47268 541427.3786 680273.4794 27411274.03 31297267.91 89354.07031 5.855820018 6273.803962 24171174.12 23487680.91 11510259.34 6427.628955 44451.60548 25345110.33 32909132.91 578600.6643 16908897.97 3947094.011 359673.48 13720474.7 14183.34382 13513879.67 208.090031 6.967151867 217422.059 66273886.55 14071338.51 21658516.82 37676.17992 4649193.57 2838549.392 264952.1189 137713.0407 12335.13226 35530437.41 118.9838892 10435098.47 2402618.161 8146855.8 44037.39476 1058.330019 7667.495006 2038859.084 57174652.66 51047.44049 16294.762 66570319.68 0.01227735745 +7824687.602 1665116.77 690.7837095 1539.251499 66519453.16 223.9578629 586839.1113 4928526.761 383.9935562 195.8754106 12325376.99 2001784.725 40863.38376 9.268009263 16721770.06 1453330.021 104.168495 92145171.03 469.14899 471.4476999 11453420.93 41613.21587 42559546.04 35729.40154 128153.5865 2977471.915 42659.60768 34144247.88 323308.0171 61.77379608 696.2827737 2.333081182 1625224.444 375128.809 85160904.12 15886.28484 2238119.2 53864021.36 284136.1868 51180507 34737901.02 20559864.25 282019.5707 5054826.504 2.751953581 15.95416835 35126845.43 0.0001549374595 0.8322309852 933886.6422 206.2408386 0.8736919041 5118917.953 26434.79689 15511586.26 22848.75101 4661.463087 3379746.416 87984.7519 15504.68197 973.3083102 22681156.5 1420620.756 353919.1893 101645.155 233795.1755 71177171.8 5041.834145 899477.8755 34.11904717 49312107.06 56125.51319 3780995.314 23909962.47 186990992.8 13544.31803 21250025.01 713877.3179 1039800.752 262.8294095 15.50032342 7363223.924 47375434.65 18896088.49 25276882.33 35588330.84 0.01475598906 0.01231738837 10672327.53 21692734.67 +# Errors [PSD_cut/PSD_cut.dat] I_err: +22921519.84 41775390 4416429.438 53212107.37 496.2405971 9951833.097 46454.79333 138581.3541 5542676.107 4399802.599 10193368.34 24075727.02 765730.4343 3.099536356 151321.7678 22528378.43 169976.099 2322.732271 44023.52831 51774.08452 40.56029768 125.3678082 4890943.079 12831118.49 7127211.854 443236.0497 1461.158434 10181.90971 203.3547476 1256799.433 38368949.61 4262.820599 39282.90062 18533233.35 12043.67167 91696.88729 182280.5802 12787910.15 1420434.433 0.2713740371 4793658.589 1982301.322 33232744.16 24385991.4 25013398.52 211482.6195 14208360.79 41025594.68 5499553.848 238841.6271 45101026.34 15551266.23 216642.4471 441793.9433 18983677.52 7768584.209 100615.3951 0.0003571319273 109122.9646 3.913067586e-05 10814.86958 17783644.68 77441.71277 105533.1338 3.412711472 24165382.2 5831527.157 54359303.54 0.0002059765084 1.500210656 5.964174189 27884044.44 36960419.64 1968392.912 29870140.59 1133333.456 0.769546595 13420537.39 3278507.563 28765.37879 53500895.72 4886004.587 461825.486 1035.957846 0.1642385527 19531417.61 11921888.09 1385372.123 1032510.869 262983.7767 +2365804.348 7804.793637 86002.17682 11986028.95 1813163.832 30324380.33 2176019.043 4362706.098 17084681.2 108164.8999 51009708.39 14576031.53 4556853.67 44199516.46 0.3700862625 582507.7686 2616283.411 2317.895932 362742.2371 40805379.97 42142369.74 0.2492140252 10935.98679 14334067.89 0.3865052108 10646748.18 518.910877 1461980.459 8266888.631 1961257.738 10360.76757 4658307.489 21337649.34 5455.658472 6595258.361 62036968.29 23587508.73 75290154.65 918658.1737 1060844.899 1083279.488 113304.1164 184656452.2 10983520.24 31444.95896 9640572.037 25452.34975 19256233.92 11475.43549 23561.80002 28.8162305 40691.16497 193.7378469 3169831.325 18698763.24 8415.918112 6583754.653 26.24787172 15901022.2 815745.1115 22647140.03 18345327.71 1281.179054 170222.0653 8162166.123 15874038.4 141323.5223 201171.0396 3601717.486 78051.03684 0.002203558415 7674770.73 2278917.463 49524091.55 17848269.92 9100071.422 3379313.279 9019127.55 308180.8138 6128975.624 12482.14473 62629.12842 8332731.779 114156.5161 73805.72804 209067.9634 1.213120914e-08 48159476.48 3710222.003 645.2168417 +196541712.3 56119513.01 16788945.88 1468.530038 451755.0369 14795.39823 22222243.03 259448461.6 0.00522363785 43371.70805 22436708.8 220372271.7 20955.95863 1496404.708 12044.11725 25183107.48 2.96392492 17626299.95 2140856.365 49908.86371 11970096.77 412.0304518 48.7151971 1576.105617 45878320.31 5513613.036 405.2253326 2981779.5 15161.42856 50709.25809 5.892546835e-06 1400.091616 550967.8092 1170382.836 12723995.72 2957907.139 3643713.795 1947753.713 4620580.346 4955629.772 28308.99834 25072029.87 40457082.7 588.8419704 8437643.476 738222.1855 7294.573661 8328662.341 17625999.14 451906.0007 202447.7527 2284661.97 13843608.08 1463664.064 26702533.78 647563.2453 22.59908733 196.0602301 387363.6176 13184468.81 4.16100091e-07 144132.1207 3358603.875 1285.428652 0.3247758479 15032785.55 26320808.37 37253.45078 174.5747661 1116176.669 691149.7197 21.96778346 12804.31498 8925258.054 4260593.962 73390.70179 1788.093554 177534.8528 555015.6065 71290797.68 50954889.23 162018.1434 2577.962679 64460.23924 5361810.009 0.2258457421 8035797.038 1270933.438 85149.12804 1181.286376 +2381555.463 10034152.46 24385021.73 654.6994739 1.931267526 71574021.2 3316639.301 7.793088755 2650778.82 6.127767312 14189567.91 5930627.515 1013876.309 852972.8035 41917.23567 4918380.075 288990.8371 175081.2392 2148807.011 4.830746793e-05 7963.422818 218780.7676 21850725.17 8168555.735 8111018.887 2988786.645 3246185.091 239006.6862 2661940.675 27750.1735 6372.157045 17023867.79 11178826.67 18052.93807 13799.98763 87312.27627 13191882.22 10275.36828 8749628.906 40682376.61 88.4309376 14444.92791 372053.3024 15472695.94 28546546.23 6820257.75 3212997.036 500050.3525 9122928.612 15988381.95 81882.42533 10909777.57 4475185.263 40.55050478 374434.3686 16806.64071 61960.49116 5532.978855 32.71922113 3584677.531 19599.53326 61275121.61 1.735507997 145.4669813 652494.0672 32260304.66 37640.73127 2816286.966 16836.33301 1.186884353 50024543.2 14.74200532 31068.15718 1161.174727 13949510.89 9696532.938 205013.2944 12568379.78 62950.03822 9246425.839 735.8540064 1901527.81 24.34502833 5710468.416 8830.823785 31672.10273 43291017.33 479060.0863 424911.2892 364.9611166 +159.9520763 59246.87456 3001543.855 4984855.785 1407141.739 1892169.137 1275622.457 8187726.795 228850.5568 70515.73401 28367.14 5571092.974 7008835.088 2.150028424 56053.15469 3.022594333 323.6949201 881756.5958 84264488.27 1082.471317 53.85557243 16.94952751 17829851.7 5575961.485 55936.31406 749.8396683 299374.9687 1500505.333 47981483.64 18040409.89 35485527.66 2071271.126 37116.37915 3.385963419e-07 7719111.741 353576.7287 4360936.811 13664170.43 87.20536471 8654.791108 19057778.04 3621212.948 6856.293526 4161335.905 32080385.9 94197998.01 1989501.253 0.2082040184 1915686.033 2.000998467 35539375.37 433543.0651 6146181.784 338798.5248 3750.775535 44751.51031 2604534.45 1643306.322 9036517.072 24519953.07 2100384.503 15626125.19 110.1254628 880.3096742 58.15310009 0.1303331998 7689.991887 386318.4909 12762.12078 1427330.99 18522160.43 4265.581707 143861.0199 3735881.87 48247.47503 3843136.757 10.42818326 7162.970138 70438633.37 2665782.73 13063790.81 912902.4742 14.57790595 14273.58392 7991495.91 1117909.891 16351688.25 658406.0187 14345438.01 11504992.77 +10.11520521 16221.90495 210277535.3 3003538.461 17242139.06 3748907.206 44864146.94 73099116.7 17557.51032 2311791.746 43.35370421 3569116.013 0.009308390641 20845.72274 1754891.521 33.48378148 81983317.14 122820.7889 9995710.285 1874.576299 10009214.55 11298.47919 5599738.105 50954.09628 10343948.65 6872825.117 1526996.289 11555489.62 0.2296629493 0.09129430248 0.2123683225 289103.1363 107890.7492 28604.34409 14820641.98 1544.161264 245436.2714 148044.4204 574563.6652 1960776.06 24712.6074 9230484.455 78.69167821 136586.3666 6451356.233 30546959.15 1604924.441 0.001208074877 1214.047741 4009605.239 14617261.92 102405.6738 4992650.356 1761227.229 29624771.6 9524412.675 1290.064829 48057584.75 11648297.19 177.1588979 20237406.18 0.105725866 9714227.407 518890.1471 12958372.43 5813955.851 4014376.232 3.34076439 2659059.037 6551647.421 79158.47166 10744004.29 146938.4763 37193.50062 100618.0193 29514394.26 7.18349444e-05 40639876.96 0.002224987253 2671573.276 15902.77943 7343709.355 606799.3338 60.28541505 701637.8475 0.0002026598923 3728.576894 47767498.12 11106688.76 2304377.108 +113596.824 22287681.68 1.61562131 703.9468677 658884.5479 65897.8257 237.3324409 11047707.16 6258553.224 149882378.3 15666263.88 97.48652453 7133492.737 173.366062 4606184.808 92042.78815 613.7850247 0.1340139807 12413.38345 1186.423337 19363.4001 23326237.11 65894995.75 13131708.07 16093457.07 2105.554646 314.7137005 42719.62436 5601694.092 1171891.186 238501.7705 7584283.217 901006.9769 13272038.38 3134715.96 101.5067973 31987856.19 8615959.285 1138049.24 13608.21104 8455.087949 4373.108644 24096.22886 7.804444692e-08 14474125.2 206592.2369 11225209.46 25024439.74 63103.51616 12.96919679 0.005639634372 60754647.51 28532253.51 25452282.88 0.7133213886 651311.0965 4426843.34 13322744.63 418302.9337 9307122.552 41991964.83 5667.918065 156.1708077 66602.60219 45119.96059 68817.27815 292220.8907 1679.91763 644421.9018 12965.29569 0.03240747221 44527.92642 18912458.23 227536.8047 17127306.28 22.04979643 112147.5319 35003.60427 515501.0873 17714.99144 2737842.752 31158.12307 3.247161762 2332082.652 0.9483857802 2473.136183 26717188.12 37829146.06 6.752352189 106192.8807 +15501.1457 16141875.48 22.56417389 390487.6825 51.96147393 151.122754 0.1171982492 24821163.83 373358.7888 282536.0526 318.7711201 41842515.11 10048572.06 7475.345984 2935948.319 14190.16712 910425.4445 0.2527635293 9279594.461 340050.8024 67723646.37 6651805.781 585585.1133 0.00190551923 294503.3007 9508534.493 18118909.44 797.9746709 25173611.47 2042.746721 1281524.4 2741273.049 10.00559044 122236423.1 1986805.33 10944601.48 35.76650136 380719.9349 7282226.014 4105098.237 971742.0468 240119.5029 0.3826767271 5631085.471 2361610.914 10130665.25 24649271.95 20302.98651 19515.18628 1683.704171 59529793.03 2874604.651 74372.99306 26678979.2 5105379.322 6860904.664 3.339701399 990826.587 3976141.138 7511050.934 81.71698656 591889.7769 0.0007680206245 265031.2588 0.0003893104509 18504.12072 254815.9805 907.8354603 24406306.54 6447.200187 46042514.78 1247264.532 122126609.4 7614348.989 264370.4686 16275209.2 5934318.603 9868279.309 2428242.87 19457.8364 1557835.013 47454921.28 2577818.344 329096.0247 4763640.843 20460529.19 434674.6794 23449976.32 6.725122952e-14 8533246.562 +297079.9819 282.8869554 472066.5425 11331460.61 744439.2183 5.660204876 7090450.735 3398535.395 9975788.833 54194.1889 426.4822534 5.81882399e-06 60874.82922 192196.4795 88899381.92 847.5754411 4088586.398 759.3481376 90349819.06 1.304955661e-06 23560407.64 381111.3199 39058601.16 169485.0969 210372.9938 412310.7138 112865898.8 105.2056397 11605828.16 138.0934922 436232.5902 26360031.04 2251328.969 3506132.213 72585.94213 1830.33464 473726.8052 6402963.317 10721686.59 1109984.311 85856.73989 1800.725545 461190.1595 7794768.402 27351.18982 30958.53241 9986.865542 32119589.36 22.16481567 1738796.712 970782.9582 12000907.58 1.253077334 13568298.6 1998441.503 41.05477244 29009.06195 9.908903588 74831395.59 250763.4082 20306.23629 3557756.862 2142010.634 3.074205107e-07 94810.67654 44418253.66 936153.8437 8593124.201 6076.812015 237930.0501 2642206.501 249.1031536 90089.75254 0.00791799512 5464.190744 27218.29911 547.6461358 9584859.595 15138184.03 17286126.39 339865654.3 13832.27981 74915.96217 22345269.71 738477.6796 266.760395 296906.3463 12192293.89 21536777.44 6817.164971 +21640282.94 1493353.213 10556911.37 1907547.792 1913524.362 19793.4002 18331615.66 0.9501033844 13529638.97 0.4907782723 44252739.45 1687.839898 2153950.92 36728428.8 11297.90104 2293233.327 27762160.77 39558.46973 18896478.51 625771.2431 243878.1503 12570563.48 175.7761154 0.5291864696 9224801.393 1766249.377 9956986.238 4.277190873e-05 1927.16979 4420478.31 1590.026168 15083518.29 9.380882851 1.225837765 112.5884417 133292.099 7817283.055 248.9413154 15874478.99 794253.5721 18504.4547 213228.3902 45726148.22 45859908.27 0.005799141951 28.46723757 2118353.063 393.0942615 5275201.274 641285.3546 6621569.869 96121363.52 18682276.29 0.05314757675 71167945.32 3.520064297e-05 2312911.227 6164545.963 24315585.51 1559195.785 1192765.053 5.118170975e-06 34363.71606 1190059.295 949.9645503 11651746.38 31.0536532 24.83080851 19228507.2 15465.23547 80823393.99 18732.51524 0.002401410912 424.6193747 528088.1129 16766.95853 2346285.284 1.512015034 4140741.061 1105.450626 75143.32123 170908.1833 1016362.721 69021.15515 7634417.072 365042.2384 753874.5914 8975795.264 39620815.06 263.4177399 +2279.87925 4113126.181 209.8823992 27252059.3 181421.7768 110.0932536 15846685.44 8369811.288 47152.56812 5934748.171 13049.13847 11874.13016 21474832.27 3243348.714 159140.9646 9125796.701 108.6425028 0.02002242711 9325911.916 3950.402478 1432658.43 2382882.095 13207945.22 27781560.64 12802676.98 43091114.37 223780.1286 34627555.88 28840891.79 47919335.66 13706.14689 3531.372778 1918550.619 761.4774785 48360117.36 337793.6468 6555387.132 3627943.665 3398.790841 72970731.93 2243862.451 14077632.67 74.23897431 21294.90451 0.0002078362627 196086.8897 81129.62079 7864764.197 12228148.18 22339727.1 0.0003965949127 2082301.456 2793.553857 96515.00464 2125121.065 2880492.877 391.214468 38169.54176 6476091.936 27906099.87 1316300.982 3850816.06 385.5498565 12389759.62 28471059.14 4334659.607 6389614.901 21181473.33 56948.08958 2163831.457 2063.247562 19.90122541 202114.1474 18485592.35 7593505.591 9527370.299 13127913.43 2683.705367 2.916556755e-12 5314279.675 20734001.61 2290008.57 0.001547819504 21275376.16 29133.68514 3936.969292 41938.27238 1071995.461 1835523.076 15253215.12 +5878489.339 0.00384110299 1345570.656 1.50960152 3962351.99 6901138.038 30193751.24 7112140.793 4897071.499 8162007.121 1441017.853 122419.0498 185131.5104 122503.5121 244.714411 24565360.26 2237397.397 10272926.5 38744803.69 425865.8079 0.06584733677 1.497319818 2869.517417 640.8571623 13940.1215 53200784.73 1415.142016 23822561 5066.964078 701931.5878 2769732.531 27256412.22 168371.0737 31473778.07 1731864.805 1547178.404 10544224.11 51963.79184 1269484.083 84148115.37 78.41471051 0.00575011355 1344607.708 6488862.453 12125024.14 35637243.41 64477433.97 2018906.936 10469197.03 1089733.686 73770.43098 5666953.668 6901.14261 281.1768798 828849.1263 227.2936113 502369.7897 62649.34675 32102.30625 1086898.456 62.24012886 41088862.25 2091514.051 140621856.5 1116070.723 9335319.527 19793987.18 4227110.207 54328879.24 9.088435465 23738639.73 10979280.78 620727.4052 5501286.164 99460.67831 22817.98987 1797596.574 81160.67666 21172155 2403.590693 20946.32873 12757783.5 530186.7636 0.6343756059 4385487.402 7920250.779 380216.1038 537735.9227 1432312 11829925.43 +1.331363152 33265.53817 4018721.857 122379.2915 0.02882217774 6935654.396 37394219.24 40191339.07 101489474.1 1003632.818 404352.4803 1662141.95 2376.511494 0.001254470053 38.70959823 5083566.493 3572.063603 11848749.14 225.5807077 378.1743695 807.703336 122696.5032 62.94198627 53112.43685 27139735.15 2965708.234 21560.44335 300.2784947 563235.3849 508061.9198 26996.36394 43061045.16 6061706.844 912.9895088 0.008018008563 842644.6484 5646331.731 9.022193782 0.0004438434164 105120.3614 9437887.336 5503456.586 27988301.56 1483006.467 768853.8156 43.84309199 4926109.331 34000053.24 1091073.684 1217.80371 57164973.56 154215615.7 8.24345218 0.7234957562 1643.04877 602958.0785 252.3865551 24030547.34 43064159.22 3967.966767 60048.94699 56.86283997 2.848408881 63394879.08 3202.381668 373.4031834 34553.07086 7.838478783e-07 1299.896128 32899197.86 0.5723492229 29095952.39 820645.9302 774638.9884 0.0460201496 1117479.639 5925580.767 0.003692923926 43.37519252 671396.815 1566.760299 17782.8151 340536.2674 87655.6266 700887.4748 12600.77029 258806.9302 70470393.14 98379.15764 29082079.12 +3.013796815e-05 3.371494865 11173313.81 9441629.833 61235526.56 10111440.2 11215270.54 5394.312094 27133.1378 5551052.816 5037932.623 183879.3197 16633.75734 105.4274952 13609097.84 13.44950546 568.7456853 9793769.184 2742926.231 6466102.593 4234459.027 14621157.87 8181969.173 4671581.805 275215.649 701577.9067 411977.0216 54689415.52 1204.971127 39069.72915 12491550.36 51644.41205 79833561.88 95564488.48 70771336.97 4161220.187 1346.912768 42901644.73 29683.49978 1835861.326 438399.5265 10920789.94 324637.0585 24781.05036 336.6005795 60207.09679 27694.6354 22.97197891 3299596.592 33213096.21 337129.4955 0.1726277274 152880.3234 2465338.104 77909.6785 531370.3244 119782.7963 2788396.554 9797285.987 2016036.729 553810.7133 3.677815285 1014491.982 8650575.728 0.03482022858 370705.8838 69060.04046 52.62268864 1006423.696 7657058.666 3679057.688 10434767.04 3620.807266 61234300.88 2895.473207 7487076.242 59542919.47 4.471976583e-10 3.460379022e-07 11497411.73 56615.91358 0.0004708894314 50533402.6 6414524.25 42218393.53 9455.627808 2214882.323 346106.7062 2165315.799 9424.306142 +23777.50426 11987065.18 15373.07304 1.372989698 10714316.07 3446.712082 42026553.85 156.2584064 997.2850624 2863.077031 16405982.27 179843.1258 6502888.881 24417.4098 18747526.9 37.22390527 33878105.89 3206761.624 8244505.877 14650.98087 750.1128246 298843.807 2316303.358 4699382.147 19622699.34 32.33108283 274138.1827 42391.35786 2683567.592 0.02365115084 119.5240544 50070969.25 48873806.56 16695837.56 1080386.647 7079459.581 3120191.945 4.017816427e-06 0.125817007 1416494.185 1156117.516 1914705.296 438562.3282 118725.5893 1956716.452 0.1484299293 12690.37818 3372039.169 4694668.891 315117.2987 0.0008230835774 29446.95041 15518177.28 5792.857027 390257.7669 25854273.46 9.028137089 958981.4671 21531453.46 31.68662632 5421524.701 1238740.047 1115.166254 34348295.79 3959185.295 849421.6741 53563.50221 2944875.752 822.3781696 22239.91342 124601.0045 1640706.158 26219245.38 19493258.92 322398.7186 13181519.54 134240438.2 1.069383009 53745.97278 9318.113591 13284015.6 387.1443331 42212.37409 2718361.508 4191654.348 24097415.57 14659067.16 324544.4256 2993147.73 724613.9601 +397.052925 16541663.03 431.087009 27059993.62 345.4639365 3507796.667 59836.77777 647854.4734 1.693401781e-06 428039.7575 4269694.707 342134.8225 520629.5147 56487.87639 997446.3378 1744242.309 4012392.386 8718991.196 364397.3181 3142911.597 33272114.77 309448.773 2157994.455 3951913.827 3525692.236 591704.3775 27.14694549 624539.8286 20516791.28 9150595.191 80670.6956 104176.3143 9092.511683 6914695.454 7.39999206 44990474.92 19706511.44 1.440883823 46.02423556 954105.5624 260583.3692 2751838.067 159014.0317 6376684.22 27146171.1 820823.2037 15546804.11 2137143.271 69820596.43 3191049.098 283.7223414 320635.4865 2.180088286e-05 104244470.8 6939691.098 1.311949957 316117.4022 3394641.893 75.34165686 3441375.32 388133.1165 1140616.159 678.9680375 2644158.928 18128.49591 19502123.71 6236.259432 2662.319899 1063.254649 2405.572349 10420282.03 11498236.99 3.946032408 33019671.55 58174.06994 2238.292755 9900122.168 157547281.1 198586.5706 3009.010459 46.2724904 270683.3237 107796.4132 16115243.28 197899.4614 820921.7176 31179.61069 4141687.759 1.816656057e-06 4351462.921 +7787.457589 17571.25421 266.43038 20.72161933 7316762.478 27748182.7 917668.2715 1373341.793 24770734.72 45076656.26 611137.4961 16800521.16 6375872.732 12748999.14 320402.2374 2586.170146 468426.2749 3692861.732 286.895011 374155.7646 1.018309162 2472336.584 4515454.645 4237.049554 0.09978708362 78944.5251 16445547.91 4877297.687 15342812.46 1510.425072 14148184.49 5084.164418 24762.12577 17094041.11 273222.4727 178857.0692 335.8213434 22657.15538 54603.20654 71132032.99 426.7500129 3524.761054 9606211.415 7018737.537 2494686.139 0.08490820756 7130238.266 2110.517035 28591.32783 44093929.48 4681259.527 8128952.489 7768.838166 10812.29021 1.053817485 696884.9201 11003087.26 30775240.91 10521586.43 53770477.42 129647.395 2959908.096 1808623.99 16198.22791 41.41074224 370890.5549 30193941.88 3118438.977 4697789.458 5444247.85 12147381.5 13720.19256 1294248.604 0.003592077864 6911309.051 205675.431 1346.413756 1.86162276e-11 32431547.53 850475.4138 3545387.942 8728847.913 71034.69931 15264590.7 5085355.72 0.000462114471 5057517.654 9429139.259 4841897.345 1816469.406 +1884531.195 21729840.75 4349045.83 429.0112617 10181.21053 748.9394984 25729.70804 45570023.08 130747124.1 58825884.4 4646029.274 45989692.06 4099068.708 108038.9529 7405729.27 12421.12925 55565.54418 4825271.14 4967482.501 286.0568668 4025682.089 24023620.03 11834861.87 400408.9679 123.3094892 39077987.43 14513376.43 3097006.973 835166.8869 776991.8284 18271804.46 142.0479417 135750539 28120.83682 8002.201337 9717577.857 66.42070187 7044497.019 13235101.75 55.59470735 439.8778876 141949.9935 24747283.24 304933.3982 637964.1454 160100.9117 1205939.742 135032.1504 176605.7893 1487050.207 2441625.817 33822.42648 28259645.74 0.6398318162 31692589.04 4321.931387 123878.8593 18998.3146 17973.42158 4485.559118 0.01012771393 209624.1535 748868.494 886344.2432 150255.8025 8199.018259 0.01359425051 421.3350473 286.1577127 5.78807795 6467424.423 7083804.505 14.65229144 32024.78459 6075.612339 69304400.48 24750.45005 1181179.11 37242.45325 202963.9146 207455.4373 51789.66098 1962369.964 563275.41 464131.2302 459768.8165 4833844.023 5.940754465 910.0665826 750888.677 +5958445.215 885514.641 65529127.28 3437.858901 708110.8532 0.0002163586119 2156531.437 1856231.917 101616.302 587475.5733 35592.43772 19.99179373 217391.2984 2001.77098 65.25030524 30052376.02 9101.998465 1.572014388 862846.7029 3195202.036 13513153.42 551831.9302 3.128479322 52262707.47 0.007492063411 237.3421904 148.5545772 623852.9228 24734689.87 9399858.232 42459.95276 2588.275619 15572499.73 47649.39295 547370.293 30339.98815 12758222.58 34384998.91 1161707.304 23485282.95 14066731.24 36451.45761 18049365.65 5474833.917 12767083.01 2830.312505 34085.30042 0.4215139154 4916799.534 0.3710485272 30133225.96 11076651.51 15629122.03 427207.6151 133.0199446 4900785.171 26633.40139 1417608.085 97494.9509 738924.4684 20674566.7 0.1054382248 468589.6046 617007.0388 2731393.875 1.11219777e-05 18425.72021 159.2318319 11500806.9 55841419.99 1379060.234 62608.64104 12578620.07 33.74619178 5341088.005 1.818981091 3294.286599 3908.963075 60375.99504 40665966.83 39876622 56502.85439 28935738.05 9877450.776 737.5407188 357381.0745 6515495.027 16790756.84 1395502.179 105513681.3 +1852168.216 12169263.31 17303978.07 103.2790653 0.9110682937 20381092.08 57405.29702 1114.000739 351.5417732 9629903.759 4038.654966 167218.4458 54587717.93 6436994.445 2360.794552 5462566.262 711034.9348 78231318.29 15715.64362 4388.796511 0.04432644572 318.2384822 61074.48822 274713.2976 56.79696052 25328748.93 30795020.22 36720.34564 117048011.2 1715048.113 736.9371886 51709223.82 2188356.045 5797.092457 273917.4068 13828733.61 87150.20027 1828529.361 2214801.415 4859066.193 2182243.803 1857235.349 0.01841952617 2010.525729 2.428140537e-06 549482.9578 67495.45257 7435352.945 937.1795391 12274626.16 10138708.91 1504758.908 30915467.75 27393.12062 47305551.43 3.521805662e-05 330550.836 74246.73962 2684960.68 967068.2223 407027.044 8496605.679 2849570.965 9.616942326 2245126.219 497752.3406 2.06216463e-05 151591.3543 5777921.424 12575459.93 72002.56495 22510342.48 184338.411 1472316.041 2.627244188 1031712.52 20.7235126 1391969.952 42869363.3 109786.1721 3266589.012 4276.472295 18713677.29 14621.1739 0.006210020081 1746.214043 38731100.05 1729603.354 146977.7239 7287.144446 +85511588.22 13.07620863 9890851.317 33468.3615 1225.793191 32381374.39 37013.01353 10458153.18 19467885.69 74414.30748 10643748.71 2313503.362 6231226.425 672748.2331 16436269 1.615019243e-07 25503619.96 1705202.924 100943809.4 62648.83494 0.2487361685 4304937.744 10414701.64 21858.6898 1575244.884 769494.046 5014.599508 2634314.669 87161.01094 2926883.386 12679537.43 2923814.576 7874.476797 147.4144782 944687.8445 48450.67418 10726140.91 1881056.326 2234.891111 15547.93752 33736.5106 30499170.52 2837.616046 14270764.5 1020275.256 4031337.957 121561.4044 2966531.614 5759015.305 17.53596526 11240.81287 620.632342 734.9832203 48311.93568 1084352.956 35207.14011 28604075.37 117.4847181 168645.5981 12517609.7 15432570.39 1.077224941e-08 7139729.929 3.514069782 546477.1383 352278.8302 0.4336741017 85345.21786 0.5204056817 9459964.135 6893.873999 2.348189198 136313.2309 34772.71586 5241030.956 31537.5807 280.3202151 18938354.01 40287674.85 25382807.68 456179.5476 188498.7393 219498.4406 174514428.7 1.317372245e-10 630729.581 11051516.52 5149766.244 758760.2919 7998.343045 +4396577.229 0.1602317414 106304.8408 785762.2682 13.62977745 2027.007522 534540.7464 264072.3764 13947255.65 1377.236223 76758222.73 232.1387727 97822907.57 2.435782859 343520.2766 9506000.895 5.940045856 13944603.69 17083953.96 62952486.19 28458162.28 106.4782266 7717.044378 768625.5713 50833.43172 24110205.92 28686189.31 1354828.443 22178471.6 13277992.5 16.63394262 4467113.998 191341.1328 9876258.537 8978899.061 10658311.62 1789740.433 245176.4228 1162628.774 8695187.168 31933959.76 166700.5369 127.9603996 22206.46712 28350209.14 174481.2327 245546.1764 14361.2229 10917044.15 65146.89176 769677.1291 16.74243568 6821845.816 6704774.758 69012485.87 137.4642508 12151056.98 28603121.58 637326.3826 119945.3309 18714512.61 8376697.678 6617.354199 67067.59916 26786514.24 6579378.751 235.8374302 2946095.199 5945329.685 4757720.629 39940070.41 57748914.61 25932031.57 3085788.639 37185800.87 64.8136824 4599.834253 116970.887 3545922.029 54.17052941 74931043.51 33936100.94 33138493.04 5936952.934 252487.5344 31728362.2 4742159.553 5885.043441 54995.65442 912.2333033 +221438.741 1525.493671 21375897.37 60455.9226 214919.9121 26848.89158 6338.111898 22950843.19 6108292.861 1301661.571 1015862.29 22121065.31 10157.37396 12423114.95 468209.5464 690637.0526 736919.7299 5837386.243 44863.14604 0.9903741358 419134.5366 2.812960647 6.053668357 10873988.03 97089.57131 1.084679955 34024172.48 8851252.912 8.933730027 874366.6291 25346535.32 4433617.981 641.3796192 4416248.258 0.03382643483 39713378.62 13.68765299 131457.3489 846428.9264 2487.804997 87712997.76 33873469.43 2432839.329 1456624.186 26508272.54 493957.1603 10044.42201 13200875.03 46183808.99 4284765.914 9453025.434 50.39043237 0.690763955 283418.1911 118688201.7 18.58781893 35841127.24 1196835.282 1815497.587 2.240496257 19247774.07 77685.99177 0.004974582091 8455667.651 5485.349341 1028413.837 81844497.99 348764.1375 11021755.99 132556.0914 86425107.4 20163602.73 4300051.099 584.5090949 37994752.76 3178484.073 210570.4318 45795098.72 694693.827 2089821.69 5657072.937 868891.5606 26637.15605 49648.28121 718512.4955 6221462.955 18138.12437 531033.658 4677372.337 7872907.988 +351.2596097 114084.3822 3269392.591 157718.1999 15885605.32 104089.6926 4055204.518 2.220457523e-06 3767511.008 44931695.4 1553481.24 4318938.828 1148022.186 75982923.14 958731.362 41293401.32 31761280.85 4605122.532 822009.441 11907663.9 6728075.698 1587913.842 2.131668231 0.9747243939 16250051.53 2707298.742 94175307.32 28.34020183 4.945487514 1145801.711 3277080.706 8.428085788 45.32034738 420681.3339 8947474.045 5359835.028 57.84564844 6489789.598 2374306.201 28296.89316 9816626.55 5072666.586 36.90344268 0.6152027269 652.3303083 152677.3956 960143.5891 0.009539286444 14944837.54 5.2053142 60788.79515 17074.27387 194635.7197 121760.0038 4966450.262 31490496.74 1.149666747 32791.39667 30276739.04 9288628.418 74.95738037 547594.351 113489.995 883535.1242 425975.0575 53240639.56 8728638.231 9030.937914 1593029.89 5841872.271 6058963.154 19761070.78 2725.053262 5434188.971 2156.882465 613.9395016 5041322.961 5365.927009 798.8247804 1229836.677 636.7006113 2991387.483 35823839.07 27752180.12 736.1522692 1105261.991 1308250.454 264.6597664 21762772.87 467.2745621 +6.284641329 0.003285844546 25877372.26 3.525980663 28.29683177 858454.87 5549121.885 248.2212976 2.447314168 0.1839670272 29992088.12 14206096.65 281159.9169 9067.786168 508.0113125 17689157.34 5613786.654 0.03609133598 667644.5323 5080441.361 9703203.148 50654360.41 883322.5151 2407.129578 1101.960848 82504614.19 110372.7025 4930562.997 33.33869681 65.13838244 376.7332387 2804.136698 85768048.78 21287918.61 54444.39151 4401785.693 78718273.69 3084038.033 0.512019025 60081311.73 5416547.378 1932052.5 7034896.266 10.51549362 58.69555435 2184055.798 46538699.83 34294453.25 1612.157632 20559214.28 10531.73322 8304980.92 0.05221563839 17849.0085 895351.2159 7598586.197 5841731.545 6362.45827 309745.3127 18911251.97 12871214.07 1245954.832 534.1051445 24673.14935 2732.467813 1315261.104 437626.3439 11.47111029 11463114.09 7270.475515 59133863.29 3904578.556 14881953.46 1614849.244 1405565.454 7525005.216 67167296.62 0.000521424621 10559.082 27892.01887 1204.276911 124.3017919 407676.8957 33671533.95 9144533.62 1820.280344 5258219.953 1143.338152 6353323.084 1663628.945 +0.001958784661 25548796.39 1895201.546 13337160.36 10471504.72 923174.3439 3671467.627 10392640.28 4.048879549e-06 422692.2452 25308598.75 243426.946 11294562.17 1498105.069 9333.09668 55.45369731 3004.546313 47438102.37 10950118.45 9857718.181 10477768.13 23341.64976 124.7196145 564.9563461 17.08182671 23.38876821 3.013721553e-05 4179905.506 81.64905121 4374425.007 20522.84561 1077900.453 48969.28962 266631.7879 19370959.23 594.7946973 28266.30859 898097.0717 606706.4943 2949.973463 58595.83677 19328.36256 2233.663549 4358664.462 279705.0089 18387288.87 64.85092196 81933332.86 692.6821665 30313632.46 2808028.788 60041059.81 2759293.511 12638180.92 27594436.26 3.283325597 7055466.016 3.831922136 6450.349659 11141094.13 739.5154065 6012.750141 88809.09899 5859239.999 27254775.43 201321693.3 213045.7655 6065444.498 12249.30947 43715.48899 125422.8792 288099.2593 441111.9686 1502968.695 19235272.5 9323877.634 3216460.19 508586.2889 198538.6453 5708748.421 3327525.417 17417509.31 5.368157164 132110.9897 6453.439212 22049032.23 26608262.58 442525.2533 2.117840972 0.0004191893425 +8293604.431 15915.90764 118572.0608 587620.6609 1087969.058 0.1952292305 444860.2419 75965.26652 12.32541187 31339068.64 55.2144134 16289337.5 1168.767924 15853544.98 30027419.18 7434689.041 0.07485063047 123960811.4 3.159659901 5101565.049 12.02204185 1357566.12 1018.988647 142790.852 474418.9427 4522965.855 31564203.59 12213.67834 19915022.34 100485.5455 41691226.36 2651386.034 5495.700445 3911.015034 709.6343776 6253.253068 19363020.73 10080.10998 139542.4562 626197.9274 18417034.08 829366.2274 1.485775644 11302.66809 1057938.789 14630797.09 1124140.823 12.63390438 39568.8356 0.007934553512 38790073.55 53278.6507 476806.0471 1833.670584 38036484.89 0.02862476896 13237825.05 14500578.73 98770.95904 182.0965841 21782677.55 30900880.81 5291444.471 660.9615018 46450806.46 869.6946712 522271.6073 51.05409603 41.49824881 12442192.49 35886119.47 181095.6402 825006.8041 0.1914306347 8544156.727 10140161.54 486361.0537 40393350.35 60568.8978 3962738.042 0.4640658913 15070397.43 3341225.748 601787.2187 27287029.65 1396669.329 420038.2121 2011804.563 5613251.473 4433951.8 +19151225.78 1798432.037 17994804.15 749668.6027 5451820.456 91073.16489 10.80718334 589.6826819 5835.661412 8151755.75 19482.55443 789322.4171 185275.3851 38795345.98 16194845.18 48585045.72 4846682.413 4633573.342 13499848.31 53916981.68 30470444.75 8171474.749 20397.03025 11357369.35 49199557.82 23352346.76 2465302.953 5375324.678 42150770.09 5150655.715 130501.4784 8167703.467 1188208.473 17.05776705 20064016.15 2138302.985 6509639.147 27.92828527 4492663.743 132402.622 18461888.9 25909.22883 319259.2726 14424887.19 62622.95963 26751607.45 12508.71134 5767764.211 14469789.78 74958.90229 23.01645231 294193.7036 72.03172888 705025.2564 458.3832218 11585721.98 5122452.81 6684636.398 59342781.79 49464454.14 1328758.909 135011.0041 426.5536785 62.06331822 4430842.173 69993.86448 27510.49362 10.59257387 35067027.45 4383.85701 27634004.51 39417643.91 460.0876049 247340.531 19889878.99 14019.79439 7041.409168 22529938.44 506910.4283 5039.789845 18152950.54 9073339.435 20625919.22 1613074.619 7899472.809 820145.9353 11783790.47 60154.9821 170014.6704 3826559.234 +1.495588658e-05 10076614.4 2157.538801 650376.6697 1456.426169 738.4263075 458998.9287 89415487.19 8321717.002 0.02326410804 3.60844274 2179547.248 2750.802848 21438988.56 45471993.07 11081797.02 1591.624491 1067525.551 3454073.726 9934938.495 2778.432139 41785.87472 1456252.503 32385553.01 15305835.94 80368495.31 65522687.69 13179.18463 2248646.749 5531636.195 9320488.915 17052201.12 739596.0157 313481.1 70441.66817 24646.4576 20.81539954 12583730.29 732685.1609 9397406.722 30229242.57 375025.4233 0.04586355267 74732136.38 10793463.86 13135.04695 2349171.443 143428.3901 0.0507902017 116402813.5 0.3641096864 615.4736772 33.09365557 120594.3691 29.05658909 133097626.8 63750.08197 8848.131795 28655338.45 4002277.431 5929.763801 7.96831256e-07 21720050.18 17736491.35 21064279.97 8905.770782 31279526.38 27086921.92 740103.5482 8.667134306e-06 62282587.75 11865.34723 519.8459595 970937.936 1458988.178 1496.701617 24893964.76 120672.0178 2326.039509 29470980.29 1.254700836 211144.4879 1989634.65 1229774.653 4600828.601 13773.84761 476715.5477 19803689.5 643261.4831 164245.0241 +378870.3767 7208093.9 2549.190553 18.33203042 2.638631169e-05 8.196987017e-05 1198027.187 649574.4823 125007.9952 83.54211737 7030443.011 6062159.91 28868439.69 10348278.9 190.1606596 64696083.57 296984.4634 3404689.046 74826710.02 1117.647793 13865098.94 24040583.63 35610317.3 18033482.96 1214196.773 92319890.76 14.57176205 646987.5884 33187.34479 18531490.79 6.15210725e-05 1514779.851 4600.181631 37468.01878 48828208.54 6378855.326 296.0550139 1012833.625 36.28365038 1607.319773 48165105.4 388.4651574 5316724.339 13263808.57 8074.745255 8.305839889 4505551.063 7844381.615 64097165.43 797818.7256 67424679.04 13985.97096 33895.14492 19807.76122 26793876.9 1152171.831 346149.3905 1532.272926 23260.47724 47.08166303 14638279.11 2194757.25 17335791.27 38960.73515 4.150199454 13016194.79 2313144.476 65787674.14 5982.468211 47057.96964 1189.964136 4382750.414 62.39796908 202454.7742 2370.071337 7943538.772 309.5384245 20839107.44 2562387.145 1225173.922 0.03855884006 19462.24412 2403581.603 102070.2142 4.575068934 10875002.31 17.67712943 213.8808549 369.0259668 6711429.423 +506618.8053 42512730.29 157853171.8 241.4986952 1261.851931 5627936.158 158818735.4 9601.176357 23020906.69 403703.9424 1.031525713 17561766.5 9873817.14 4589808.739 15322620.02 11165204.58 2022307.057 43.0205183 4413562.966 8.638534392 104323.8919 8533.579443 8134038.293 2349782.543 252250.8342 1226048.279 896.9207202 76825559.46 2697.353052 25598.33893 38697103.91 0.002316838377 29637150.98 188716.3916 20873724.28 95275.32271 1205788.695 8905.808134 30789396.88 39693.5398 7716913.921 162743.1709 22607738.17 11186424.66 1.681662233 3416.717286 67563.08655 19122402.4 4824.229009 29302290.11 28443059.41 764.8556501 3.810967925 14615416.93 3213.293208 6145162.915 1620555.389 13751342.92 7581661.97 104431.3603 76719.25549 11761070.84 1074804.619 127320697.7 30622335.55 140929.0399 1027289.518 23582244.8 24818460.13 899149.5845 35451694.55 1216.861358 166540.4357 759228.472 21731855.17 3291.507778 0.04896552653 17753357.3 55.82013057 31424164.86 88411.15669 24545.4753 138303.1845 2360464.46 16857178.27 4753719.388 17318071.95 15903.58733 50205479.35 43502.06517 +36002.54054 4023523.197 1394.449317 10829699.16 39665.0703 59414.74614 29235852.07 9158429.793 291069.2346 14651.43798 739909.6079 2226770.403 9476678.2 183.6639086 36996162.26 2947690.608 64715.22477 5395.776154 4321.533317 1934964.133 59555815.95 26481.21435 612404.7223 2056.590412 28197597.15 192044.3773 3831780.534 132.5059825 15.66699431 59569.55352 188407.6486 6176989.491 6806.381962 10005.13784 6608007.805 6881521.433 0.06898250337 1026965.314 68383029.18 34322.27897 8948175.909 1046648.29 1395622.548 12.96294582 3492538.597 13422822.17 355987.6554 40884.00679 47741242.91 10179591.35 22937.33626 782.8904044 6363989.132 605084.5196 560726.6367 6638509.403 11986.38216 4.099677232e-06 25446136.68 9279944.462 328316.9039 529289.9871 0.03310272948 19.54339329 476057.7627 13930.48225 225185.2208 8426286.819 32003273.58 24773.16843 1103406.835 80512.31085 301333.5659 12638361.43 54163229.59 368.1221641 14427.34735 1449634.244 12916.76405 48763012.6 381.7991217 237768.9409 1189470.477 215413.8652 17268369.81 634454.4609 52831747.72 2932872.867 381841.7383 309.7821154 +5159000.053 479851.6375 10561882.52 213.4924566 6355983.86 29416078.55 4538.436363 1809668.928 4961188.639 1917296.505 8173.968456 14479643.91 5474914.477 25201453.11 38068448.55 5955431.236 269374.1208 55908992.38 9573.201906 386.5128562 3249502.112 77682.34705 5984278.032 218.1283472 2185893.062 634763.4646 0.002171668732 9425833.897 3556950.12 8331435.097 207.340711 411054.3238 188459.5315 0.1153931767 1161255.904 554221.9319 62595796.43 120.6142704 136081.6358 10625709.23 10274757.01 2802908.744 297809.2038 3417.709463 31568664.53 1198507.394 13414.61491 27.41970156 587691.8907 29607.51364 2489206.774 291.9797881 2119.640492 157953.4222 15941687.47 164127.9898 44820481.41 10605135.43 13961.59316 382735.887 7445914.926 1148615.334 7.570559312 146224.1624 1075266.578 798755.7086 566.4642427 7260164.246 16.82341577 562361.0541 1214.773916 326163.6739 15753.77215 4387.870289 0.9300514895 4148050.315 28489248.66 31420584.95 11705504.38 19946.33435 43.05809998 4485.548005 1414820.244 25023493.12 10080098.03 413.6799305 8684.462305 220332.4846 90335450.16 2386360.77 +6120165.679 22088.78516 29923.63893 45068421.15 0.1961991083 5772862.893 2.303360868 49601000.88 7005139.051 27095784.49 4582421.81 607969.2418 5185183.842 377.7476075 18.29565 8590.779921 1812268.323 27834149.11 10672889.49 16443637.96 14821.51358 1672314.262 279767.4593 9521764.672 385178.2944 6620478.522 11054209.19 1.125983971 5739450.646 22759250.14 6479570.317 23116269.34 375121.4377 788302.751 27814468.66 155481.8006 28.00883223 6072.44371 40766407.69 12730.84688 2.509426647 831.0092729 3666867.494 9580591.718 17479462.86 327772.0275 11807092.86 22.24211106 13354063.61 2745.967454 18343793.87 314.2721254 265953.5773 3.597746784e-08 808.1976628 31499676.71 0.04695357 4056783.584 394575.8236 1374787.046 15488352.73 4116700.551 106277.8508 20826.81914 25563.59551 2369.773693 54320933.25 23191.2676 1366.915594 69351850.78 68601876.4 45242.3586 9657.198348 3138.311921 4435815.28 332.0372384 15839164.26 2026423.249 7527409.143 25074953.18 5817821.236 3065570.669 18366709.73 4533300.999 23350272.13 10092590.85 61082.20173 901995.8298 165099.0393 36403747.38 +3.159102616 823312.1097 23314945.35 186785.4909 2450788.26 39.77102649 8486638.101 5.339465466 5782839.606 9302894.167 10221499.65 36121867.59 11008399.69 4087951.718 57799468.54 140429.8935 564.1301457 20374028.65 10.14308493 233213.5236 51663774.89 470998.4183 1216959.344 11598184.05 6101793.078 618618.643 844.5122248 30320861.99 16197.95907 262928.2478 8480272.017 5.815969952e-05 18459471.38 24110.91331 10055491.56 42234134.52 0.02288675993 18847.47185 7665576.953 1213.300021 5159.799442 228699.8413 0.4675736294 0.7113984578 3458725.727 20244264.53 2897.735749 38173834.77 45117445.07 425014.4932 1768.846489 44218204.09 202886.2731 193100.7846 14550713.48 1417.434953 125024392.1 53242295.46 3675517.216 71719587.91 11492956.03 37327778.28 726138.0768 1002336.17 104174.7015 4810.782728 21470304.78 5185.835862 2287933.133 11461207.33 95519.0481 36.35771034 2730.612549 10513.14601 12669758.93 1183450.808 1477927.609 334222.395 156671.6117 424.5778723 1.001580901e-20 3295505.98 1423.881958 1874262.126 299.6930804 8749.871409 42402.45663 2056931.5 0.09866275004 852652.7644 +81111.12861 0.5739787655 37236413.42 2757716.347 73.51296169 9934.722408 11673066.54 3125989.405 26086495.82 7.376632618 19786.24845 3863410.295 223.9504223 3283940.398 4527313.022 13653966.7 872129.4748 16.06380884 2571.170873 43793022.27 70627741.98 0.004098454137 6524.618794 108565.2411 1280852.269 22350.73629 17788745.97 73851.8013 0.0007744686265 9276705.513 618.3667253 0.4678763229 0.5721063192 13224279.97 18242396.38 1454.661823 388.5244914 1939.121852 41034519.87 1459285.96 6593421.332 194613.1367 650.9731298 32284432.65 385471.9613 202.61658 38.00397896 216677.9921 6119.819431 12.00470701 3275.484616 1364852.228 333254.904 847037.6836 1099980.226 48.11740225 684546.1281 635836.8519 10686718.91 1805046.65 4185594.501 670.10653 1496625.79 44.10273345 40104864.82 14532.01503 6646574.028 1437.358108 86339.53147 4950799.928 22977.18535 11357.07413 21626506.32 15964167.36 7658602.25 7038.802749 50046761.9 24440808.29 793140.0742 2026.433841 20486.6573 292.9534946 0.08678943116 20031764.92 0.007734633514 7749780.582 113.7610776 31852453.97 15.04324764 1842537.613 +5.474097684e-07 11235773.4 4513722.213 38516577.9 5410115.697 89525430.6 0.3811581882 1285360.204 3528569.602 9075725.908 1326855.658 191.3464235 279079.4461 29557454.6 15437811.07 3770.172979 55766.5499 35737647.91 78812.58457 4641496.227 3436064.444 14011.89114 1149.967367 412529.2253 4.206430065 454808.894 83041.21594 77.51315223 232680.5321 28544.20897 830973.6801 4161305.113 1561876.073 3.231521116 38249601.68 9684640.536 6776178.672 16066228.94 32969119.54 0.2198197829 7162.906815 3821335.16 239472.9299 14852468.55 847063.3252 60045491.16 72716.46146 1094623.782 12207546.18 0.06658496822 3.617874463e-05 15729.50704 92472.13522 68635.98709 20761774.69 35046890.06 5.226660366 77129992.09 5.422738257 844290.761 36315552.53 7225262.977 2887611.277 145.6265481 18966533.37 50165244.2 623396.0493 38025763.25 2696180.915 1334.497033 173.3823555 55.76419282 2.857480964 18.89864741 861936.5232 19376140.93 68.04422559 9276.610734 19.90155255 3242173.357 38.31548577 1780605.193 14621754.94 67639220.56 178102.9363 16920460.19 24216882.65 151871.0835 2035977.836 9168.332029 +25468704.22 5712117.7 17893319.91 441451.998 28.50310691 269619.5315 20533.28027 1143970.445 550.6737734 12359010.81 2717625.189 792234.8884 157678.9606 49062512.38 54845812.91 54056.48497 63456172.54 10296.66163 29.93742886 41597742.96 10220.11945 43047559.15 1779210.248 17.75263654 1.669409881 12121388.02 2144612.613 3825.976324 2573.775867 728098.8962 13456201.41 1.040526264 657627.0817 39109819.95 3104432.751 18553.60823 17015878.82 3249294.869 16287046.6 635050.2978 3372.515826 10387545.03 45992062.51 252140.0293 1174.223691 2176962.267 8132511.898 20649.85616 18516862.56 74875548.02 50802232.75 3134877.865 8209245.344 5889.513311 1997.557123 986010.8115 7674966.739 11459770.11 10484328.32 34027732.17 28234731.41 25181.67884 579619.3195 9445425.876 935916.0333 15303597.75 12006961.18 16885120.78 24463.2521 239242.8564 11853283.05 3196789.285 417.6476727 35692.07859 69056.69579 15042.99177 40371958.87 627618.075 246865.4139 1470920.36 104609.6254 5031084.881 64943242.65 981702.4723 2572727.525 272142.414 13005752.5 2396600.91 1196710.763 65135908.22 +3281483.562 7125.495325 732277.6382 32339696.96 0.390613264 192663.0494 10495579.7 43232252.01 0.2514738079 3157977.819 916966.9472 0.002083916401 0.2504024928 34325756.94 79747.80761 6394796.074 11.9283514 2474.709879 2416441.718 9712042.884 42831.24376 707.0589162 11413335.62 168935.241 2437.151795 1005054.717 65490.59253 27453946.62 517.0533501 983244.0652 4265815.308 15696.44348 40722432.55 3066900.355 0.482003155 1937.666427 792.7822542 1531.116207 25418.17575 598.2002356 44403761.69 400.8391374 68962.44287 1435486.787 1480.236138 96223232.14 265884.9564 67375205.72 2.952839488 34999311.62 50507.03134 52.23743853 7008265.253 5140745.981 633.0471438 7354.873086 757326.2181 4424778.089 801487.2 61626.24586 3240125.247 3866737.093 1721598.622 2947192.973 1016292.015 599689.396 16137013.74 9453.026471 0.05031979641 5833364.228 6019207.603 10086076.63 28632.34436 8936247.13 38472852.01 15570649.3 38270664.05 9850487.163 17303168.09 122964.2134 480888.2127 838178.4934 47773732.78 958079.3631 463168.2281 38432444.7 54115855.27 0.002123974112 15296204.56 1928.064178 +22375585.99 1876.463473 66.08932606 23147571.04 376.1504991 155261.5248 1007131.043 598905.547 11652.66068 12987257.48 704750.3448 726.4006013 4323.445956 606.7745765 3968967.247 252.6320806 5775867.533 6364846.114 8551368.678 3.334195804 11593487.51 16586313.33 168044.8157 66555333.61 13857162.45 1113991.483 2772199.921 2909989.329 0.8364938494 14185729.17 820768.8953 513.3285656 5667877.893 589244.0574 433134.9899 15.73144322 2821390.365 4769755.027 376172.587 8960601.856 2437749.248 635676.9339 222369.3161 3165916.649 69264.91794 7912443.749 22.06713868 51.50334661 12486912.22 2831917.005 1193857.542 3624528.824 228553.2613 61737094.21 156.370101 17887790.58 564115.3728 4.362680878 77567.78439 5767972.842 5630504.587 4.686120612e-05 765.9014336 664.163381 258136.6222 463197.2294 13094.7489 7803299.247 11517650.14 60145859.85 50938.00501 16561.94652 2837883.968 10006978.91 6330.824674 38881738.84 5.297909739 35593897.8 13911166.35 3.716035853e-06 8181863.308 11123.91492 39641723.16 0.009376397972 54902407.96 10517902.99 57.55768986 10.35588285 196159.7729 3445.985094 +23272.76504 1133.613819 11.16394892 1981502.465 0.001837045263 0.0080121565 4.040068433 84777.73795 0.2236974916 50954136.57 1207133.394 24901367.1 23547.94913 16462309.4 43723678.62 788983.0932 74385076.39 9017214.649 0.06446782468 1240590.096 3.336432231 4653005.005 67996289.02 3018.003795 3.638199501 1371371.099 7.515453287 1561222.355 22731.95088 2.894535035 4697307.523 45142699.25 100744287.9 16953585.5 1.317850951 1143507.517 291215.4446 9657700.981 99084350.82 1.942461337 9900.298885 239.5046251 1269.13222 6176811.37 2490329.633 4001.915411 10.05983225 9373377.184 2.963835627e-05 1399596.819 967572.7216 10293017.41 3054686.963 7546867.291 427882.3777 9299808.534 0.01933892891 5109435.299 8744051.851 1234904.803 3117906.256 21500.48623 37300417.51 4323095.129 2546979.715 2651501.196 2.789023141e-08 1930713.721 1275944.243 538311.46 34429738.64 87537926.65 26976371.4 6404304.404 16738788.59 4176088.787 2568936.169 60669160.88 195450275 2616056.241 977028.0296 306858.4836 9104488.021 591098.0804 3.365878873e-07 0.01627738386 0.01052266833 18059.48206 2528.30937 251.1211494 +61359121.88 1278605.775 5200826.45 445.616919 3808108.517 16180292.39 2121207.701 9144.601431 893620.7051 15345.25704 9521421.042 257579.9382 133.8095358 2900800.613 16904.48548 6380.760758 158325.8106 101569.7478 30416456.95 1107000.745 6714326.285 39873.32302 53.78679058 193726.6086 9783446.354 1135017.585 31628880.74 1540671.717 27591653.07 11372209.04 29075942.42 0.6291164817 47405.15221 2196099.522 88269.92879 8745.132808 346738528.7 13201066.1 650925.7983 54023831.34 365326.2862 88.63869763 54748428.22 499163.1504 889.6431609 33046456 356670.6966 343524.0705 33801023.78 3393913.877 8279104.185 32249026.18 47298549.51 3562040.788 2620016.021 12192291.09 1129.354437 489.8042145 10909.11009 473827.6788 30323.28039 257448.3036 32750222.8 112984.0316 111149.4899 20475.17867 24346.08377 104704.7609 18774676.12 43074469.92 3403309.819 29272131.06 20.32441554 70267899.3 347.5651262 84884.9606 5487615.521 1506856.578 215692.4112 530528.3359 9820710.418 104775223.1 76107601.62 5628830.078 9509138.305 5618093.682 1593890.348 9917582.19 500.937486 2655284.071 +0.02042869302 1774752.034 23605241.64 2417.616284 164912061.2 11328710.2 2834.669393 10663143.47 144276466.7 27684747.9 4147829.679 9864946.625 6344742.133 6013983.783 5602906.981 14767656.98 1586465.928 33.81624361 24.45355405 3571244.877 33251.31948 0.04712053491 15.77607234 29847425.9 571801.3361 5678.772174 1318526.172 4415444.092 10.68813396 227659.5027 16035522.16 92824.49832 26.76295893 20573610.24 15827881.05 1870925.525 698.2639772 0.4248722519 8719.156045 5120.92628 29686210.61 3148442.296 1243.184114 27167814.77 53614279.04 2487.343155 411.4448743 3423647.449 40424.39086 12681530.13 4975.945573 546658.5308 3695.703919 0.3441428122 14376224.87 7989177.041 28500178.39 17444263.14 967.7529688 1702930.453 32513900.15 1.391825211 1613684.562 2715.208491 16566129.97 3319820.947 2013292.22 46167079.15 1996.416712 78.21533647 11644803.41 8075772.952 2569774.533 1032500.414 7409977.792 2371446.695 563636.6103 49.22234262 83035.20681 11897955.42 289673.6286 0.002443578919 884265.3886 1979054.964 564.8622173 585817.3741 39991258.22 160050.5614 4813549.238 22850383.76 +41912.67262 1556.989847 158236.9313 48131.53195 9439457.866 0.06394192965 44626634.64 10165216.06 14377087.45 431886.747 3691734.44 387092.4589 24637201.65 108626.8273 11155572.28 21819.9628 4390109.891 120525.9209 10164275.4 4322250.071 2807797.595 12979577.43 1210147.383 26805819.42 792964.3596 0.4946043264 17491483.01 3425037.119 3465546.817 1830.277238 55.29627601 7313.115027 5.796347952e-08 38561.10687 221281.8834 23128984.64 5793414.786 6632626.474 552451.4423 1702784.549 3596926.952 764.6292469 11587573.83 62.28623172 666131.5364 128415.4107 2818.421484 279.4837686 907932.6214 107040651.9 11.53975599 5157373.805 879069.9016 7968410.378 46.98720442 131.1882577 1382499.295 32313.79768 22320440.68 41028.42448 21874837.4 574.1771206 115.7864218 45719295.44 3083546.173 9795.419745 0.06529009586 882979.6232 3219.895048 5896239.247 0.009163770491 2683948.346 3164050.535 27277126.69 45370261.52 2515293.458 27192806.83 497357.1695 40100584.36 1196875.983 36945931.24 30869148.6 21.70813739 25182266.41 15207551.26 1.493399072 0.4412047837 33585692.18 359198.8317 753325.8608 +0.0001485288842 7850.990875 18860200.24 18582310.42 34636739.93 12681326.21 485994.8841 4540.033531 154722.5694 0.6850117959 85905880 3264.645122 5602400.246 4364128.094 9094.631635 41524.45689 2.179379344 1004889.834 927301.9822 26287764.15 3580044.144 155933.8495 997317.0045 1493049.141 7708616.99 58309657.31 62534.29379 1809743.047 656318.5569 129517.6986 23.01656055 4549769.685 2973810.448 672747.1647 50159612.51 179.1043041 697580.2134 9447268.672 578.2013841 11742009.6 19357768.17 6423913.242 798001.7273 12782.1134 15381.32673 253543.8653 49061.43121 340.7764645 6230017.582 3.425750635e-07 2.191677241e-08 10543366.8 0.02028759205 5348558.146 32007.88779 23743025.6 26182933.69 849.6613594 33099905.81 917514.2985 42354822.42 5448.81385 1014.874138 12860234.26 25066228.4 1179.325394 770.9684615 79556.08382 7780088.908 393758.3809 18807811.41 4583.785114 16518418.86 20363976.52 4392.988876 4.98645675 24623819.39 15978.98544 17237141.59 3316504.747 6899713.811 13461191.01 20663.53834 5287981.534 512440.011 439.1219301 13306474.93 18546.03711 845400.4251 16957901.82 +2267469.853 458.947452 80731.91793 573650.6593 730196.2997 701.4264829 7884.712474 116960.3427 8740321.346 521.5931356 1722549.2 3461583.937 12549729.43 31137.88143 39729.7422 974.0113036 11.35922586 452.5665069 700072.9122 10525178.37 58349610.8 0.2510836049 11467390.48 639608.3111 1414318.632 93249.12333 1939778.083 2272.723395 278922.2439 20830.88622 7755132.549 36330630.78 2044076.926 81971.14398 1792278.236 27473025.72 7567.075722 36755311.9 9340345.382 631110.445 31426.38374 12830767.69 4496.669493 1419430.78 65041841.25 32768152.86 113.9725217 9087308.592 828.0768523 3156573.471 134018.3586 159826.7687 753187.7719 44644.38911 5.528797498e-09 34615104.84 395.9861574 0.002692786877 13898406.19 74927375.18 399.8147376 91417.14313 55815831.54 0.3672037277 404183.1148 35944986.99 3357368.898 55503.39327 5081962.757 1783785.677 37.27807764 9928020.703 954327.143 15209.66099 1974.703823 0.0003033422673 4465819.407 1913888.712 16230114.11 5405049.874 13547434.44 1464449.917 5700168.494 312026.6108 4123924.225 2565777.326 20630307.73 34875272.11 21688699 54308.57788 +22.55432754 13789.34961 13.81531541 29171450.48 2114.273686 13308.77334 201865553.1 1221.404644 10146.67399 19316853.04 70.62614099 49455.29653 65.44547911 5645243.499 2236.199404 20347133.24 0.0307226079 16218.99833 672.9548687 19570.02188 77.02789893 8444.967481 8099869.949 5471.055609 96632.34923 2613153.198 30568678.65 631645.1869 53.10458137 4448224.908 3214917.333 16288077.39 1597651.422 3271942.922 106303.6074 35047.76545 106150180.3 6025.664041 24393764.09 12145712.28 246503.8479 1208.85729 17399215.98 1181652.068 14653413.58 14238.53416 334775.6321 33123295.94 50433168.54 5246367.997 13833.17496 38385257.22 3085839.99 8619.619004 2222.306938 7962051.874 4.166503832e-06 133708545.1 18101921.41 20614085.17 305639.8645 5.065814942 108490.6776 1309.598944 0.0007140982277 768742.5805 7783158.448 29781984.97 6320.47328 0.3680729378 6309937.293 10409298.67 3351707.566 11549662.76 58692.32433 1358.721988 17486901.99 1336418.991 1514814.794 3174272.122 9194071.985 17014.13272 3767721.456 115226244.6 7303408.75 79.38876917 302019.2501 4322341.059 68.79960102 14516942.48 +40.3769779 42.89011559 4409853.638 70864.33448 146.5959699 0.4060021001 55333827.51 0.1892499064 246696.7424 2821065.779 19789736.64 16049467.99 149.9861547 65352373.78 6986482.739 3534336.428 3330570.346 263138.8394 79324.40269 36032055.7 37268273.55 965318.1909 6736196.963 0.8888125509 125623.0886 0.001053329748 2079925.611 338101.2796 555.5473971 2701554.608 103247.6645 3.236459151 7424187.024 3535681.782 1215802.457 72349120.77 5903339.934 581334.2891 4272024.362 47402975.16 151.211853 22201735.67 1842642.675 16.52518834 2.087907603 15889116.65 2074343.901 19793540.8 8479.215268 3225480.506 15831601.15 1621217.612 6858519.389 0.2163065447 2257495.363 311545.1754 44326330.84 1523152.918 0.005103130213 23657364.25 285.4263793 34748.42096 28050.38088 78.70862418 9635398.618 258.4806674 7691288.985 31528236.86 14.91399705 11.5717723 797339.713 72297940.49 1625433.743 6408538.952 917988.5091 43490.18475 524306.4216 4398347.723 23.92036231 390588.3883 16644080.14 12591.03807 3.02714061e-05 17.60416561 6405311.021 541915.1705 10946.10911 8530897.598 108426698.9 4305.245843 +22114557.58 14848463.59 7950984.454 19123.21954 3176002.522 52564.13447 13174670.67 6.892733346 38573.55806 1459.043844 17086936.21 9541488.182 78.27760285 7431007.276 1976849.237 1124779.599 62045994.41 0.06013097058 139478.3295 242532.3101 15433.74038 49417593.47 12321.89426 89.03125011 325417.3169 5281.197643 33940034.62 39769668.97 1420759.841 1597393.679 81021.42392 1357825.019 221481.5057 218.331761 5296.566737 7604327.917 27642.55586 0.0009443046721 128335.3545 2170942.791 21.74614655 1251.876227 157483.7105 1071957.88 3288626.199 37227340.31 3.369771915 1899306.046 13006.00326 948405.222 983024.3331 23252329.89 35187.99717 4008746.123 891.5665611 6111496.307 0.7773441785 238.0697039 9042717.712 47063369.52 80930733.79 67559092.13 52.03887536 53053460.4 10985.64164 21091951.97 5383.338468 1260021.251 12363329.47 51198.57368 17871.93244 11275753.62 45224682.6 7959.966414 1653872.308 2.461413338 2357959.037 257.4388079 4352.167495 391982.6902 35694058.92 1.672792496 12834683.37 31842.713 5668746.899 17.31381747 279241.855 7016580.408 17139.04103 9165133.07 +55530507.48 42809392.77 746852.2248 92029.1038 3300551.88 44731.51677 1576245.475 18.05916021 66563185.58 4809735.646 23944.31126 41139528.94 2540659.568 49716553.54 0.4110611766 5447.157329 8.173419294e-05 13366832.32 237849.6112 1296957.048 114662.7308 30963867.74 0.0006746790448 7937853.722 3269573.439 128.2646331 54794548.27 12488.89722 231586.4716 15.05601333 0.7118797321 26060.67895 195696.5411 178566.592 5801579.778 888926.27 19694784.96 44139.70038 17768.99265 258453.5822 676244.3357 704632.0067 40103375.37 379919.2469 12078362.56 0.03166714537 89490.2351 26.58430192 68399316.3 203290.0873 6236570.158 6653.192639 48075.99098 1169591.335 1626463.682 239532.5753 1808124.147 169250.1445 611.398156 60171888.84 39910611.42 0.01430061732 8159771.019 66818405.33 413106.8684 81.7239525 695352.2361 4173.104062 4046254.104 208113.1005 58129.92442 105294.2712 2151.577497 271952.1801 0.0347099155 10432420.49 360375473 29114.35073 20609.63461 0.0006859616268 14002839.86 4.008659146e-08 4472.031134 34326.08939 70072.72819 30568742.76 8156.206485 17979193.36 79518263.54 40.41797537 +6488.363077 0.2446274364 11491612.86 0.4156596651 16624241.88 1.672286093e-05 7531452.759 3805618.924 4186.754484 0.08871524611 12585079.77 2.453026037e-13 5210045.461 0.00244507078 0.02952767632 40485041.34 331299.2677 48358457.92 15522922.37 18440624.05 23608852.71 0.0149055253 55.8741644 13288860.5 25195839.36 15568.37617 30860.69902 0.1617719367 50324.15365 0.3795355329 194958.9676 23588787.17 6005745.27 48.78519031 30591398.31 89030817.13 541.8644023 2526.196163 29995508.59 33267453.53 2532988.501 4268.027203 14408979.76 44182.4618 7690100.565 24098165.64 210115.2288 148535.7288 78.96664449 14815094.83 3.121603642 27062.13911 55708381.43 48858511.38 93054.2016 2984504.15 50835894.65 2157064.243 156330.9329 41648724.46 818928.9367 213.7842639 29853.20257 12.18003681 55256.40837 5000610.027 406.0352145 13038449.27 369022.3524 15675923.63 2087.487303 14119425.56 71230743.96 306.5521288 2976972.727 4871971.567 0.01971116438 6249384.422 21653.90379 983236.3931 5.622932793 5397440.367 0.00300111857 3782212.808 83789.25806 290270.825 23228570.46 768739.3588 275708.424 333574.3417 +3399565.527 115.6154497 122021.533 2302680.662 1832148.323 0.001808119654 0.1015781895 958337.4278 853094.6725 3748331.793 23701.8625 2971135.259 417.8090428 71860.9142 74396677.35 18264469.24 16596335.71 225501.1485 37259.69825 930372.6087 36140530.05 86485.67901 0.03219619509 1653301.942 59096.83295 8126858.933 37.50812434 15879941.74 234233.894 71795.05039 27023603.81 3046.024229 7.230262769e-06 15627821.24 5837342.795 15952165.7 10690.60201 1544106.242 24363373.56 7511208.096 50972580.75 7981335.955 312932.1362 49368857.93 6900135.854 19288.04813 10616634.16 16.05961888 193206.9074 3203104.255 11196638.38 1387899.132 127792957.6 2777085.881 816475.2895 15112466.24 41187252.28 5617697.659 4741391.279 21034745.13 41184.48686 397416.5 24323506.63 6999.991351 2020756.677 14965781.84 8233285.631 63592.70484 65498.6813 4311922.125 280053.4158 804001.576 22149961.51 4112240.485 22935849.16 333988.4403 10241179.59 1783563.058 1472818.036 203785.7562 92884.41205 20080624.52 3.771083568e-08 14591214.26 2679161.981 10337983.66 868755.8405 12290.26242 5499.658254 39.35563181 +666457.8793 10764647.19 1.53184922 34806328.05 76177039.12 69479245 2282599.674 32610442.29 238476.4802 7096646.413 5227.403246 1738195.321 4072.722399 566447.7278 16517.5514 33676586.59 15525434.73 24364547.7 1737473.479 30135185.65 7245715.353 174790.0077 9671746.036 15573222.24 6081818.285 19149.83566 521.2418301 40968.17007 13290911.61 7308399.574 275898.6713 11.43942711 234.1396745 1462062.37 60719815.31 5699180.613 131264862.6 5273337.169 31916488.53 46236900.36 267216.0631 81806.26085 5574348.315 36317365.59 10470067.78 157877.2446 8338.972228 697.5496378 7596145.844 128828.1598 3812239.477 5700952.436 715095.2936 65465079.23 0.09850414733 1493426.802 8218171.187 3393708.26 306345.2799 943643.0547 295382.7869 106954.7283 2.818341276 30617188.16 3207.750045 226573.0894 50343.54916 284773.7612 41375499.92 2536.872828 47906230.18 9002280.603 63660651.89 13094188.69 1314291.781 12216688.77 444.648539 56508213.56 228667.6843 571120.9953 423199.6327 2.637372384 837592.2787 28.4469401 146777.3439 2710170.366 15549916.22 24958057.37 50115444.53 7.177777571 +0.0002341038267 26834014.89 7304668.19 1903508.059 24807438.77 0.4282081295 230.0461432 5862.532747 134198.9629 2413183.448 0.2310071888 33952814.99 21177493.72 434955.9121 99728479.68 1.010666857 6486511.236 272.4050613 4974715.561 24719874.11 806.0345075 10636450.64 6462.195839 207056.9447 19932.11422 54.77899338 2720395.492 147598.2137 841.5122634 2.137710031e-05 6588736.766 9113.493544 72.28864686 6596392.125 4888182.585 0.0002159593851 315467.7065 22849178.46 35964053.79 345607.8639 102928.8506 26867.05416 438953.2732 25266.15072 644308.9026 2639.623723 11092.79438 52861828.48 1092403.164 0.01538158464 7434330.728 62158.82618 2218806.035 43.47084982 41768.86496 17380840.15 26171.93242 27806470.25 23356969.08 18320500.62 59588163.86 16047546.39 25287437.71 2232502.853 2.328610265e-08 5494982.117 4345991.85 73227652.57 15644.17807 7052629.354 5432262.568 11916130.24 49753381.81 145414.4779 5297802.483 11688528.13 9763.776396 62.36122944 3210600.189 13879719.87 3303.718673 23444541.91 2501.024265 1.882791766 193806080.7 6002862.673 5534.498467 300928.0876 3750.184939 5656648.859 +147419.9325 1273346.1 1758202.168 5312924.16 44566848.79 68272.76562 312641.0254 19300557.98 241029.8435 3431039.203 1936786.342 2554078.407 0.04026676714 53409.72349 0.05894363186 13363.96425 236237.8287 485080.875 466469.2792 42082.32406 37707.30854 13105989.18 63278.22007 11642472.06 1176986.55 7341.176738 2.256308003 3532.77444 12638.87409 9488114.169 927275.6206 1905515.451 9596.890613 11.24557039 360096.192 114192.4551 62.17122322 395794.0312 39316551.88 879453.9522 72225.50783 1126201.708 17128603.17 2584209.869 30971197.8 22550116.41 12258.48049 109952.6736 70303420.81 2970649.055 12718.02696 10131928.62 111378.0297 30881394.17 29794648.71 285732424.8 2986124.993 270.3641403 1172757.696 768.1068859 10335915.19 199627.2652 83178974.24 16902053.57 19660971.37 17199257.77 0.03658936663 120550008.2 76461.07328 38073600.02 54640218.17 3707863.699 9594497.219 42637.00704 2.861528123e-05 36674074.1 66396.59098 26282632.09 91222.7896 461.739418 8311.719206 4539832.179 1261.621034 69906.3082 0.00421666247 19710483.84 0.2990379567 19295585.47 1735777.154 47621632.21 +7891518.004 17743306.68 33187.71559 345.7261069 108560.8288 55238.98235 7.982666086e-06 38608836.09 18946865.88 25575.48032 58959.80653 10.9948451 11329289.89 165757.8036 5711257.163 706088.0382 12814491.44 570.9171532 22.65732828 107382.4481 57056.27366 15046042.17 26385625.55 78420276.94 1877427.216 60560437.77 5173340.255 139625.6662 12251524.84 7405825.548 2518636.527 1085559.989 30856.9824 4511927.753 418725.6211 157200.9229 35.4531621 360031.4836 14469584.84 575.1938193 8203669.951 3348325.097 9576231.448 2690179.012 18648.32457 66652.44089 253482.9283 6450916.93 1785531.413 97143657.39 108.9815891 2970895.257 31110422.11 689.1588139 31905728.21 21429.12599 316716.3833 1.956626146e-05 800214.0049 1251.629887 117318.2959 115.0368637 3008.229683 290849.0776 241495.8022 21962681.92 10629080.69 9.054562585 642914.5064 138486.7109 51691982.96 269.1210172 12937988.64 36260.90361 112378.1271 1277288.624 7677263.806 1570625.063 5728369.612 2.414211614 0.4857939655 2.456335557e-13 11690995.15 3738516.375 21391492.92 473537.652 37138.42339 52596.79247 116770476.1 1338218.675 +647617.4389 79078.11047 339.4863653 6215111.81 69801512.88 47490949.02 3282032.644 54.64938155 0.003313632365 51420.71481 15779.55681 46787881.64 63164.8501 2310985.863 30590824.33 0.09087984435 138321289.9 18460240.69 295752.5845 24290.12323 4337.421214 5849079.905 3231268.604 63668.89684 49198942.02 2.283006369 691522.4148 61613446.62 223049.5425 73317639.96 39922292.28 833950.1988 6047154.691 263201.6067 18927567.32 3454401.74 0.001195990584 315369.1617 4159323.169 15159.26871 1678391.051 88245.98073 0.005273679281 10038367.59 81244.90714 6892833.661 26444200.56 1.422672411e-08 40766.6739 45453.46582 3279320.501 4376021.753 1.84942648 2121262.84 33334518.64 26256602.06 3235879.319 6240236.761 1.974698359 10502350.94 1789.357084 498199.4496 1150.035452 18352509.7 13271544.76 22911955.98 197778.4858 41605833.49 2649604.213 8122671.626 17684591.18 531.5230305 0.01561896397 88824.76189 859.990072 4082.374981 1315757.748 1626920.418 33.31082815 1209634.691 0.4974812747 27.40937612 40363687.38 587184.4449 3872714.912 1603072.499 6592975.537 13176045.38 32976.37664 85309.71465 +1213204.362 6071462.514 3708189.563 4937036.954 11923767.46 7.989119578 247301.7908 3641052.338 38336347.15 143633.5066 1245749.37 16608099.73 46.90865564 87.38836605 3532.680715 0.07685074621 220665544.9 119885.4037 269601.4017 27424.81685 58.86281449 1.560430466 838616.3604 65092762.87 9200158.557 0.05639342894 61.73221305 2337781.539 0.03269038836 62000.30353 33170114.68 0.6291965305 12.39464645 44502169.58 6524626.979 5569.154049 317702.4941 17460844.78 2847976.481 425172.4405 15034097.98 32688774.62 4589228.745 15973.02144 269.4536391 17593103.95 4416403.423 7306.833935 415476.3507 556282.0991 1214234.209 31838.13421 48098078.24 25437.42543 17256.12639 84407151.94 5663819.008 2402002.773 4198171.575 7515442.986 3534529.662 43229.32203 0.03395663727 146.2653395 267096.5793 359540.5036 10877997.68 1275.090577 1641557.247 2987183.397 6568.905752 194763.0102 14542914.86 22335807.23 204534.466 36515517.6 1302094.039 36973611.83 7060777.335 45344862.1 418486.5298 115126.4352 171184.9764 24118286.38 2482758.12 70167.40108 253405.0142 11201766.5 1897062.708 15776.87732 +16829810.32 1.812947495e-07 19091505.35 28506297.25 619.2214594 129700882.9 49092.43224 5867056.966 4459.89125 220.8691442 14263389.19 625046.733 58307533.66 26416836.95 6283502.727 54851.57208 1867944.082 18143.18214 1316651.329 9.213443591e-08 888411.3439 14115193.38 32803.29004 328778.0001 0.02665859583 3065.816816 48250.56014 0.0566238365 0.2643650063 5984357.896 2930912.135 1278877.51 715.9260107 2629344.396 61950.65851 2723979.676 30043467.62 5566269.178 27.8127196 289.9051999 22442345.98 172599.1339 46245216.51 8845.061325 42116.19023 8764.192504 32223.68636 44468.76885 6535120.529 172660.69 82.84584539 405251.8893 886114.8336 5418692.384 20387.24652 3321021.17 31.27856342 2352849.011 5816723.202 28763729.43 45514.94364 244.9868977 14650009.98 34802346.79 2104161.548 1261639.094 9692.8394 16726360.87 31203898.62 5525330.178 2047.463563 31268101.13 23967609.02 61071277.08 13925.72769 22.05779263 1815600.205 144754468.2 33.04581925 20539830.15 11.60113319 76369.01066 1305131.546 1043054.171 20434600.28 5008501.512 2197047.324 0.02685039394 25023543.92 4060.17431 +298637.1928 24579.14239 10956.52146 38.75328677 2921691.536 162995.6715 20177862.56 24298.20235 3993.109854 21853012.77 44315788.09 22165670.71 293246.8846 50204.57907 660205.6911 154623.4454 18070.44499 37762289.1 0.05166631014 27493.82337 136449.0004 0.001553046636 231272.6025 13763271.01 615351.784 1725124.929 0.004321443859 406170.2638 25216.12468 1849.89181 14768319.64 805392.556 35243098.02 2626799.94 19532024.17 17512.21454 75833631.59 1259313.605 5890644.964 2952710.717 29367781.87 7.163000845e-05 70586.29508 7068382.065 27949.02107 8431.655137 48887408.15 25.53518989 1143464.609 0.0004014406871 3.714166086 20928644.18 23293299.96 19.77782003 2583514.033 27355738.17 74934919.03 71943478.4 241931.1718 24248946.3 2613410.678 45.96413096 35.8750043 26602619.31 1031449.512 3496202.973 553344.7338 1849207.668 974.6446708 47189528.28 33345890.05 30816035.47 4.459199646e-13 675872.6149 952994.6032 3151309.735 4162712.378 82468.60376 1355338.985 536578.4595 82.68799931 9002140.584 7487969.088 13500378.44 29194839.5 78991936.87 3408125.042 3276.172219 0.0006157217396 1447136.176 +50522125.2 35465813.8 22705562.67 0.02374634021 3605342.959 16050760.74 23892855.04 17165156.87 785639.2455 8514899.451 9674801.668 1153557.945 4173141.192 2261807.471 2716.505727 656911.2541 1925.646706 4043331.038 5618055.789 5438573.149 3585828.523 2548560.09 25669.78252 28360.90332 10915236.76 156.8940201 299.3379344 3063483.867 5426923.12 9.95168343 17116156.25 39516141.74 20911102.75 5470481.686 389249.7235 90029.14095 73222906.59 598.2559404 98949647.08 990556.1657 9145599.486 61035.58754 7627.859443 273358.363 19982065.94 23255360.27 61054.18584 7883270.937 2401334.918 4157271.223 27522705.18 2085.71154 5660687.545 4856134.594 45937407.83 3399032.536 2617610.255 41665381.4 1457695.115 11670424.32 5953517.472 968.6422422 7646.072561 7158038.062 10112.39031 13017363.21 921972.2357 3134.66707 5104814.837 27457435.81 0.314813082 51639.5668 26344.35935 140.7378347 277706.9992 43.63212188 3252526.594 6460750.039 177702.2813 2271279.899 3948134.12 89965.15555 976293.5881 5409.096257 0.0001667085734 4518609.961 24090278.94 6925700.027 1.916096179e-05 1668.742726 +8086888.034 8730977.816 38167387.73 44673.18619 109895.9675 230.3203031 8315071.227 33418.6472 0.297557383 19702935.07 30.8115326 8702512.33 77164.94289 2851738.651 315572.8205 9951232.246 47.6252177 23734974.71 2046451.315 83387.33745 4392085.734 3069462.945 2653800.822 1786.129761 5.528109203e-13 3282114.845 3694.32974 9076391.624 0.002855370549 67389308.41 167289.5542 3268082.498 48705.94212 4058.610584 10.02095577 1897443.796 5105362.108 141877.8299 15475183.8 935967.8447 2849.426865 1731.320219 27242.93461 891478.8761 7183659.062 5749.730356 0.0005015197375 3276928.086 502606.8102 53493.85932 407442.1306 11128181.47 1564776.381 14886246.09 74367.43803 20335.59154 10697768.99 8920367.869 23469626.14 56089.51345 6711388.435 63694.11615 26226792.03 5471175.768 61610072.27 11083416.3 17621217.32 0.0006108041649 26631851.43 62787.3821 2.106125514 1054.736632 26.87357559 102603.5779 34072617.88 65239.18061 17449502.69 31175.18676 4706951.76 3379.916347 3492.91726 58199.71484 35779362.53 1.503391099e-08 24013687.63 6237341.648 0.06450619981 1424223.496 108433.7392 17228841.39 +35472.39263 166.3918542 8391429.051 6.801603096 2500833.743 967142.3879 3800919.529 61486.32147 801232.1237 171.9796669 17.49949293 4855516.223 690.7880695 38087883.75 1131680.381 1102.489195 12907615.97 45344550.96 60631265.54 66064.28635 361156.9333 3.626704213e-05 0.2253227679 0.005283457418 305744.762 12089889.19 16129362.08 2.646404395 169878.0012 20122960.05 355600.494 2682398.515 155362.1454 121066.6379 45446.82484 2902191.004 2.088539633 85.04545234 10935518.85 16162.11898 28192.6255 8105657.965 50475751.04 31499.49164 0.1954927744 267759.8066 22690270.91 387050.9627 36679068.99 65198.76568 34149883.09 157.0863715 208914.5464 16684311.79 6316.90821 209.1321028 3472391.654 1310977.851 3631873.355 3407.310985 78954.68062 27668053.57 17941323.59 8.066737483e-10 449992.7328 2747.780008 447.9569863 36710288.06 135057727.4 78469127.07 582828.4101 1767276.661 5292162.236 55110583.56 12146798.53 58041.92805 41343195.71 51085808.58 74561.90058 234736.2382 13317601.79 0.03389240081 18261759.12 0.005226939367 3698.761019 830.6683583 3399288.209 644336.3604 1498.514284 130563.6931 +54938293.56 7717227.786 700424.3234 16048923.49 233153713.7 10338.82389 639708.4546 13028.28033 1811.024674 3302.459389 416544.4542 27550.88171 55979524.82 786.7709816 23156.93378 2987198.602 91985.98901 9003.422942 26014.04909 3943056.823 58587310.05 807816.8632 32321741.37 260495.5126 40639178.27 28765763.98 75644.54674 194170.8641 5254126.751 86394.53154 198.5193056 7990443.895 10338981.17 426.9814525 18768066.2 10276.51149 2690373.262 6327242.012 32026694.59 1195264.246 5094484.895 16.64864843 3660.166875 67547.47309 6344.41963 890557.9504 0.2205054797 19650709.97 1781.220492 2117973.461 29895054.3 8404430.168 10821440.63 36925.35895 124662.516 14808444.11 3614978.401 3964022.937 4155127.699 3672769.314 22754546.28 16766336.12 57.31936101 22977701.6 1433694.561 30413078.36 63.11881971 263320.2744 8426406.86 25699836.67 4601.969801 20399.78759 26817500.34 55845468.47 191.7893448 29772031.33 25655537.3 12712516.97 0.9145652594 91063.4108 2877407.861 11241748.05 22.44437162 28305662 105935.4697 89.06127873 404.6020544 27764150.19 1578150.607 3134833.037 +4152184.246 3357.019598 8744447.933 57851679.52 15338227.57 71553.64082 13603.72981 255629.3969 0.000120562424 56.5259284 5714811.96 1.091919116e-06 3412203.085 2115.699446 75515.76425 310626.8576 22492269.01 1000556.452 11002396.8 7902701.864 107.6464109 4233.074488 197.6088429 6234280.972 35853.3537 456.2456201 6483240.082 367.6365798 64863.23163 591.8896471 32170889.07 3925748.337 4036090.375 155403.324 5.194153928 632.3263959 42894020.66 65713844.7 866320.3959 46508131.15 6733867.81 29923461.89 36904.62108 29958245.71 2521129.925 10830.43538 88391594.54 19770.96484 30840287.16 3.477957518 17708155.16 241585.4517 261506.0184 689553.0033 3255898.033 10.00127515 5424.480607 4676974.497 966461.0463 20962.88421 90109.57679 27753209.77 33151978.4 1976.384372 0.3645962851 549861.9468 3036.944935 127387.3028 30260665.82 341049.6543 0.0006220298278 3277.958876 10310354.87 1343251.323 12941911.65 347580.7954 89324.05912 2762.654021 1.00140876 26416.94575 64372794.11 115.5972876 248369.1525 9081862.734 37216549.12 12000555.5 25004.03376 1447963.096 2192.445116 26685175.5 +8099392.652 205989.6622 1269257.696 55481030 3033546.054 4808.062985 719224.4838 0.2742436231 7829832.194 198630.3098 558280.3014 24874491.88 214001.2616 16494878.78 0.09212033052 20218152.19 19112.65705 68685.26336 7441645.491 5231279.735 976.5052531 51068.60236 149450.1925 3570981.173 2074567.72 6987322.424 2772170.312 19102260.34 171.250576 10283657.55 57597061.96 1186236.619 979173.1468 0.2455437853 58634.39209 106899062.6 58763.9031 7567999.653 3581.75031 115635.7656 8907442.104 1.309902351 4931620.326 1556648.095 3962.342037 45101009.73 13149988.81 18.54893028 1797000.852 121169.4916 10607949.95 160446.6127 7.141716687 3212.127848 5512.822422 1885203.822 1580972.625 260460.6931 1962.042979 10747.15012 2186488.511 7788270.71 1775899.773 7515054.697 168.9856943 2731085.746 5622718.906 354.4601949 4462643.125 1600797.468 49315.33897 2522605.265 24575214.12 6561270.968 1204590.63 1498521.491 13747350.68 11110.60291 75053.5398 20050592.24 3902095.923 146763.9399 42720495.11 2841159.37 9.142127477 1586023.252 20326808.27 5535.350049 62358101.37 33026229.54 +285288.6898 801223.756 5866631.084 17519328.1 12939220.66 19607.12271 9083378.703 105219.8301 8563.947195 0.0005942416418 8823766.93 523.698415 53087255.86 4176453.339 383921.4277 5977380.557 2715.439151 15.43788148 222403.9963 6903224.862 35424.52513 2596.805855 637489.808 153.2467665 26479963.73 2357597.224 285.3620285 1369795.231 303.9546147 636475.4781 4776442.482 5751.688713 1614659.901 20311498.07 476746.9144 15683450.08 1.301427176 47161759.16 0.08591377216 6547128.963 1581177.274 31510.48824 2434788.057 0.02358286713 13323.8299 355841.7894 391.4258631 188552.0296 0.1070694299 152095.1888 171092.352 3134460.624 1432020.72 75289336.05 7.40809061e-08 579.5971028 62784386.43 505446.8499 39996272.17 1008921.092 4688389.515 8213770.684 181675.203 62.62792095 697.7399232 10235916.95 1752.714404 439183.8793 8380511.812 190.085789 1896271.674 63793.90163 23142507.51 4216068.216 643991.6976 7705.676746 1.006259892 1768635.061 19239388.57 2139330.83 2.753527265 548055.8021 0.155407379 84839.34289 4612327.274 6633799.835 38381.17716 3951692.051 43273198.54 410.4364249 +318.5691184 22728580.96 17891732.42 43939.54602 40831584.9 4696810.583 80843.96321 3242.341776 31396.58753 737464.9784 2813216.02 16530262.51 71017.14757 232730.5712 3224638.598 618.6988922 2094795.844 157.5798268 18652137.49 9050861.155 19964.12449 2703.016968 83950.23167 8222168.075 193418180.4 8019.080492 29100.06898 25.53645013 7674267.662 2894186.118 69.0748396 10977.3874 73773880.26 4466406.372 265444.2392 3493467.69 277047555.1 68751.77036 91.49905734 8238.021546 3455143.113 8722893.205 17727807.08 176871.0765 77629.97915 3668810.504 3863626.89 23426.50368 36556.61252 8861406.994 26981038.92 21833.597 1.031927218 25025263.46 1058039.117 822788.3037 400.137479 3359.831845 22542812.39 6560.625005 60339957.95 28263674.83 13267354.82 1041846.994 144197.1436 17901.42238 4.122091234 462966.4144 8063.585468 231053.7288 383.3147623 51738538.63 50916398.03 25820975.93 3132545.106 576.482466 26047974.86 0.04586637831 42759474.45 417.0161283 9557635.931 8018192.337 12.59133176 769980.4999 13399532.59 4011630.138 15357812.85 42255283.46 0.00434909324 3869887.238 +2176029.481 1305295.575 3307000.584 1773458.187 16093362.68 48324065.06 56615.44568 81367.6557 87.31171571 17558.04971 2643867.559 6867.06995 2761450.374 47.11164 3456.90283 337425.9372 11495.8652 95456.52015 29632303.32 26036810.72 252780.9031 86117981.18 968203.6722 139827.5361 6646.353559 1929629.924 137889.2154 60685.61659 2669638.643 1592242.419 55894965.46 76.76222769 7954.955757 0.8079242969 5057342.918 8625300.311 74712.54272 43906906.25 46104413.03 2427682.656 1293815.466 64840073.1 3530651.368 12300826.81 5.660862881 320923.293 38788.57169 3348.869712 7772614.364 45.48774798 29863988.07 9747.515192 13962.76338 12545526.01 30804.09084 21408780.04 4.624491746 146359128.6 57483484.83 5150.795417 9.423182433e-11 335524.3747 1.175727141 8.596393213 2453203.822 88019.22603 0.08263492892 3933159.146 7090899.633 19903176.53 32122853.66 10418298.01 13305.23193 2328.328261 34326974.11 1290193.757 23691342.99 18339292.17 9.653321447 1606942.44 81.37057331 22597601.86 867110.7672 35975715.09 580131.425 9748203.957 3.495708474e-09 250142.1079 878437.0248 7789875.258 +4766857.554 45963690.87 5124670.29 47738.90967 1569633.418 9790408.867 1.061346866e-05 14975147.96 11584195.26 0.004482341353 243.8857035 1861837.894 60481.87108 0.0224172476 894873.5365 14602705.93 369799.6969 2294847.275 639789.8661 37948764.2 127.8014966 193230.0291 26552930.33 389171.2019 109406559.3 31666115.72 2025010.983 384.0969819 267783.1561 38910864.18 47884914.49 43034752.45 32346977.66 434176.0415 4177961.587 3808845.126 0.4394860618 8963061.081 298.3872902 0.0595725419 1106180.466 16284905.79 974388.0875 839959.7908 48903052.04 0.525578249 2302.13293 1682485.53 1512088.918 5605222.032 48459.76806 1272004.934 25079.68067 49415652.85 10759628.53 2797031.239 254271.6614 171569.4036 12327774.47 61582749.39 8890915.761 36913862.81 58350.7939 382.3011532 28538717.97 13720779.15 31995180.97 0.09572347674 2929115.088 3156689.92 2060.754638 19482.9036 145284.3871 51025499.31 2.921642857 8667321.145 341.6131172 25041337.34 2061924.56 49780144.17 38395391.15 18970783.33 600211.7496 9279557.868 5642159.51 95679977.11 8010816.492 12604091.99 19003034.85 16096.24243 +4.588949726e-09 495336.8742 3.542478979 92.71933537 19814184.61 1044709.368 50371.30894 3788871.758 9974.919499 27327.19753 181.0487662 2107238.774 27238447.81 569785.2682 14556.73313 54317891.02 16943694.09 3919785.731 3090.233178 4321997.902 25971865.05 0.2217283845 60191.96003 2009.430142 16311293.39 159323.4094 1428381.238 1044224.678 1695842.124 604204.4513 163760.2068 5423264.64 35000927.1 726286.655 37321.39888 3295.678029 0.01389743034 93720.95928 8439085.553 543994.3195 44257322.03 13375.93972 319898.1031 20103.01907 19604371.95 568.3143111 28071.52214 65572.66953 100146.4779 4371002.187 89908895.42 1906.045668 121.225758 75982.41628 2392871.711 141391.048 5103161.128 13846735.03 13518465.4 557028.5233 8494.766319 4352099.823 88.66935471 56658.89931 3925714.653 0.1161282188 50635335.97 22381.39601 27692717.81 1093448.839 108262.9196 0.0001185652027 0.00855782505 0.000471327264 771934.282 150.8615838 567860.1375 65657267.26 17236.16214 0.03971748281 17.42745124 82203.02959 129.1612299 142.4778817 28308908.87 242470.0344 231.6390875 21811.95438 20645670.69 3386430.549 +235024.8897 4439141.787 61128086.35 813432.2387 52.49376878 17374.37487 341826.8693 2218700.984 1253463.603 8616196.445 2205084.267 3864389.578 298037.984 29.65518245 1.556479028 332647.3774 2661.92156 828511.2084 5260709.911 1350182.851 22719.34577 5894589.305 15283605.45 26032761.58 14226.1182 4692.937075 15.28626093 6482.002521 37089403.58 39641.21737 5.632466831 5010573.896 52132460.74 95393.44164 0.03513264634 5082543.272 1127.352709 0.8949216813 66578.11875 10166.70662 0.1119098374 2765.641239 703448.3675 16.44991947 24580.47356 0.03912026739 273.2621514 861839.3323 4558.916858 972795.534 11136017.05 846841.7034 188665.5744 421.3884285 2252.886486 5397982.682 22464363.17 32351771.47 416965.5915 17969742.71 827244.3863 226692.0834 46383.12393 27000508.52 255.595659 134384.1029 1016906.176 12873669.02 5923259.816 843.0713051 0.1206353262 16338860.69 1473884.011 162447.8135 5.815005698 3.021502947e-12 32975118.15 52600488.36 5286.380399 33791.96351 37443405.61 41.87147213 8709.724667 26814482.28 84690679.17 2753908.836 4554877.581 6027.398364 192349.6169 10633.95359 +3866668.178 4.640319496 21619.1193 42976409.73 18709323.85 5328275.504 9442.516945 38482010.65 484044.0219 10199029.14 38376403.04 11209.10906 9871686.304 224033.0597 789927.5877 8884098.929 2.029780218e-07 2501.498314 13950.24445 1701.786408 5707371.464 2720285.202 9559162.229 33614389.28 215.0279143 1565312.646 3337437.204 65918056.88 97945905.57 28632915.31 118680.1 1554424.942 8950.925467 28434404.47 7900395.536 701.2612516 57.39205921 436.2296273 0.0007019061608 1481971.628 9.913707138e-07 411141.1246 5204276.598 221825.7033 127167.4632 2591.744706 1170265.609 541.0462233 3504719.084 12905929.77 8138893.534 6219.639957 7463.794909 0.06128417374 160612.7434 23538482.35 30533362.17 0.5188252728 41614.49833 17616185.55 50787772.64 5351533.098 8102953.578 23632940.99 7535989.896 2982.558911 39797891.9 16143.31114 1.082023607 1283266.883 68920180.35 0.02112245811 0.1146283523 11346578.69 24603990.66 0.3079149246 4160169.777 2390269.243 68.67703387 2155468.667 57574.23293 6902.943529 378812.4062 8705500.446 3699355.958 98.81334703 41551653.22 5208003.957 94353.68802 12565211.66 +11154.83399 34197121.44 4.781239991e-05 542304.2167 58819.65335 9.559918935e-06 0.007245956843 43170555.65 59871033.14 81180428.9 80478624.32 0.1069193196 305209.7325 26.81201017 30056052.88 5479457.244 2142751.202 21832722.79 6781982.671 9839.756365 5934.878503 0.005299833999 33708.54684 8.234040221 17682145.77 8981295.428 4329.327715 24059384.63 8803881.284 7756491.809 65707.03971 13570.36409 145079764.9 63625037.28 529.7705936 3525254.266 359516.7271 20229.82412 66.06662042 25125.75668 53007.18895 30865847.33 54689642.25 11.08033781 1973405.79 411.7111383 0.002216005758 5247096.494 55558723.51 3.767278551e-07 26632.76679 9.326912744 0.01345481972 313848.7378 0.1939245806 2058098.42 4511899.817 192260.9435 1728923.395 24957150.88 11934574.51 375743.1733 33638.79496 3780.563391 4.486591211e-17 6227.093417 89677.01101 4894649.013 326.998309 1276.207085 14.41293593 6421400.826 21362286.39 134787.0615 1824.276105 16894.09718 2720.088724 40913956.4 4057897.749 60.63928965 54454359.44 0.005464904695 9237282.834 93090259.48 3568.869403 60180.40314 7923.464281 1398.139253 692.1727403 0.001052713939 +107.0016353 3594900.496 89205282.44 9683235.439 8018226.9 463109.914 2630039.631 3670479.985 199866964.1 18298486.03 231818.1703 23086008.12 9288066.747 12491786.76 3577.103742 327.1972392 4654312.235 0.1516932223 1646788.376 8802070.284 289740.6928 45.3050148 17266.4953 1793.99731 40185023.73 443.3181864 1622265.829 20236311.82 2077867.056 277673.6267 1344.837182 5217744.832 276610.6898 57444944.32 1.823042642 8462.782403 24547.24054 8799393.659 1099093.652 2503.232115 14103881.39 24459.9532 112.6841413 2727820.152 418.1467578 2391970.303 2921.515858 2779851.673 605702.2868 5036.095209 859.1191524 126579.0978 1617041.295 110.6493871 1304462.499 3875274.966 12699311.28 5062122.69 6.953624747 43047200.44 23930280.46 1.994725466e-05 3467526.827 73844461.92 532.6591959 289388.4828 11156712.63 878.3869496 16144826.21 22893328.4 13627891.74 4289132.969 12034.69856 676450.3479 1880759.959 4654698.853 1945702.933 261.3476262 15791567.23 268230.6793 10509338.96 1409909.021 549328.786 1385722.023 1323365.36 1340434.464 2405515.717 3400010.444 929201.2044 0.07161683144 +9697524.111 79.07484732 5985379.429 3001787.075 485484.3463 39713344.22 153.9911923 37.66780503 52626.55476 18970536.16 79267.79654 53287568.98 1285539.906 95413.09301 11.27930959 113635.0063 33391901.2 96998.50537 17493316.22 17530513.8 462531.3309 6407807.607 4457272.188 26902672.81 10.52323535 30241.01373 452.8908518 8663229.917 764164.9182 5.5903139 29740144.94 789176.8093 6803826.089 12.43637056 5336641.578 16063422.4 1830404.615 307347.4676 369363.0891 505.0564624 676040.1726 1553803.26 65302.32504 20323740.63 25566.83428 640600.1225 14171327.04 1173309.42 32125.22927 244912.2964 23614.78216 2167665.251 34506.21975 37518.36802 413.2588897 756355.4407 2935697.92 2698.963553 22340572.59 0.0001262997375 2455.807815 34.69373802 61934.80139 3552572.812 8767975.3 7314.14407 4664.661686 60683.57959 51886994.41 695194.0674 5689369.688 8.12467451 4194408.927 2565112.263 792433.4847 1294369.745 5539.583643 2011040.941 3328425.363 2094411.714 521071.4298 8.704929935 287977.8047 8292491.985 72288.07625 18581568.76 12522818.52 20230.10723 156639.6023 25687503.9 +65380365.75 1752472.033 474884.4581 5297.236615 130675.7644 580991.0224 11981155.28 37964.90062 7907879.227 411.7083973 5320278.57 5776559.895 339083.1843 2561690.553 230473.1522 53392.23592 543409.7539 2.110964925 18.10835235 4631876.689 113696.7816 3209734.724 19896617.69 97616.34205 44580378.62 2318369.67 8384219.843 743450.518 8238.342874 43855.68641 264135.7462 2827685.949 349923.882 235279.1873 227.5727326 0.002551207383 25.48778108 149885.0593 30525298.32 0.1283186298 3321018.1 8160116.374 14794848.48 60.96167104 48568.62229 1129508.606 35410789.6 42241.36749 8823877.378 12488119.46 365971.9495 973240.0641 5.698109326e-05 4.673648005 198167.2846 108713.0472 68659658.46 16560.58595 0.3688483262 32749825.12 13.94422258 4373429.111 4107.266037 175203216.9 55982.33593 111396.3904 93173.94866 2.522619352 17069807.66 7923.859121 10423419.04 3482215.451 101501.1991 750384.7973 366050.1993 16910975.36 31032788.94 28.81139076 857280.8794 15844078.88 730.0590177 2252352.153 4945109.881 3.697096821 5714.891441 38070.61268 27381292.68 157207.9257 1699.054229 3314580.789 +317823.1427 2055629.952 0.02663016026 399.6156232 67444102.59 122968.5939 183.4602385 2484.953466 14917.34338 99.261397 0.0160353882 3713151.078 1.629195894 26481386.05 5839.266766 11248011.72 14650800.47 383830.5836 698.9373757 258607.832 248027.5245 2.615786147e-05 7318.887264 138978317.4 260929.2348 59814015.01 16869942.69 61474.35996 133297.001 26921465.39 2981650.287 5417344.404 1679636.714 3385848.527 19233.98891 139183643.9 1739406.4 4175348.601 2519759.218 5.564759098 4675736.922 1643178.815 73735575.62 446.1407335 0.0004867801614 14837674.09 16135700.25 44526.25138 954.7834499 24598722.01 266.3052282 14412728.94 26540846.93 1427384.195 578575.6815 2206274.955 25839322.16 30438.53594 9218.611591 4074.367673 0.3805127969 339005.9475 477.9908897 8168561.095 41709985.9 38030.28522 51894.19783 3487162.243 11680.74755 41737030.24 150.326301 49093525.2 1636.72145 34522694.23 135179263.8 1111129.546 6.673136709 301849.5859 22256795.71 11921321.84 2457011.981 156189.6535 4879.546293 4560253.785 3629.263629 18765559.23 111950.2501 14192800.41 363385.5741 953250.9798 +8336.111186 4153426.87 1798086.733 110960844.7 585.8640799 114796.1038 779705.4006 14468893.55 10557451.23 2633.192106 586223.7462 1054642.126 2719046.849 40577920.33 459186.3963 10026310.53 1193.119841 22106.13902 2137022.752 17901037.39 61844.38475 533.3115742 34368205.53 17880210.74 291.8106408 5595826.576 13146918.67 102162.5557 7.368981836 87109.28768 826814.902 5822.37952 86401972.86 42.53983954 27487161.57 454759.3297 958390.0012 55239.51099 11756964.54 36.43592364 25774621.34 4488829.586 12775582.25 6114819.356 11399878.1 2566.843694 0.01178615974 723762.566 29547319.71 118.9478149 7537151.243 38659.86796 468863.9 122340.4215 113.6907143 2.912157619 3558253.662 51787728.63 0.0003925737536 4515774.33 24483651.43 47707489 769924.4784 3726648.268 1272958.125 43978153.8 2767.2317 24227689.14 2409658.529 74.68707438 23791587.29 2816279.022 2746295.959 26083.6871 25952.46807 2568239.732 15427.47785 1.759856758 0.01928464523 6472.661221 2670685.197 812183.8519 13387929.09 4784121.25 59185.63345 5664648.381 2679045.154 977325.8193 14024075.32 5760.971491 +41315.04021 30.85868783 1938516.208 1.231287986e-05 3942062.594 0.2312817989 95215.7122 185.0168103 19821318.25 10042376.35 22858.07184 33025.70552 24442.05703 42608.96889 509829.7573 10365681.52 2.950737056e-14 874351.4256 2057806.109 319910.3242 176929.8999 0.1200658286 782090.5441 2709777.417 6062867.715 2.007084439e-05 32700046.47 603883.9864 31292524.13 78.06690471 226804.8202 891765.0153 143400.4142 17457708.84 55762469.77 56.86481695 834685.0139 436119.3336 93.36899615 2289291.184 108348199.4 18959468.12 22351109.75 253626.6004 15156204.76 237244874.1 66756509.9 12256320.02 274505.8028 8988214.906 15232078.92 38315767.23 1395766.989 51880368.69 1.514274898 12470638.38 512894.8279 3892617.157 35181.93396 1633055.511 5582432.045 111244.9128 8.798302938 65865.06573 400729.7683 14062653.08 30458733.53 65048574.24 372.2124825 18683.83741 88825352.75 1919194.035 8.424610858 144738935.8 747724.3015 6506563.522 325623.5573 3260326.799 12751262.64 16522132.82 114245.785 316.1001161 45144.38657 56213414.66 198.3955577 116847.5452 20388377.49 1069727.979 19290.14198 269524.2715 +778.1738642 25992972.33 4132948.4 2802122.085 18538.95568 74.85511007 25643.28457 19.56560816 3463975.155 343183.2503 6933.997556 1463168.768 0.001627381476 191293.8113 463819.5631 130803001 29321.74682 542512.2244 57830199.61 561294.8558 27439351 1336.074176 54361.8521 8.078953339e-10 11021.11045 18802.28316 13146837.93 52521292.16 518447.9747 21018467.6 7114016.489 535894.5245 26652.96349 483.4710345 65518865.84 12077.13866 10884.45134 128.6474483 472.2618809 6479498.485 2691540.465 13144710.68 27414851.7 232635362.1 27034970.05 1401.903369 1194589.271 2012369.463 921186.1078 100447535.9 636.7893394 3160886.007 17276.35048 33864117.65 1049668.548 11362.87399 1.545807683 18154716.32 486385.5026 4969915.221 4233.346558 33557603.96 0.001074921018 17138907.86 45537379.49 79481626.53 11482927.03 1189755.269 4148984.04 8029186.028 2058768.053 4873095.604 53.63632268 2283830.936 6823068.734 16869940.4 54554.23074 3182035.025 339372.7414 12996927.22 100286.4421 17285538.82 35.1607128 6980034.68 116239.9929 4625376.868 18886183.93 42795696.81 1538342.994 51391621.33 +301367.3263 103653.123 92585.09468 6238186.799 806055.4268 11739033.53 474726.3174 26899253.88 30240449.8 175.5943629 16794117.73 1384650.821 508.0467733 2081.958357 7591.50164 21895509.1 2492.522252 44726628.85 181874.3897 784041.8512 0.2970992459 25701537.21 19472.51508 3415913.757 380440.563 73558267.65 30976540.54 46685.3295 15804257.28 15695.72758 32212329.02 249024.4036 2510.270866 457.6165722 9712794.057 0.09223770802 454695.6087 1729145.839 108728.6496 0.009355423576 25705.33742 11444677.52 13.58040433 237900.8438 11834802.92 10944.2169 35927453.99 5268125.693 1528141.768 0.06557484836 28675103.88 19209579.63 170691.5402 8613745.104 29547266.5 581916.547 3197.587214 3700404.805 8579756.736 27241015.21 1596710.476 35083.27562 972.8821832 8738490.63 17.70616559 36705823.9 1210580.11 0.0009914699637 207028.6158 110172.4706 32559179.29 9898812.869 4910.430645 28742650.59 11595.47771 14219114.46 15183628.77 37088.32612 2981703.729 261097.2007 57238.64186 7010.240477 6572928.893 7328913.412 3269050.623 5.661134577 1813931.944 7883803.077 52.95688365 2270478.746 +7628371.011 6163004.184 2758342.854 1171904.818 7698318.888 12084518.18 247.3245036 1706201.523 33564089.75 2383372.637 315810.1452 42760698.73 3552831.318 104244.9244 131167.1016 725957.6308 0.03295029601 0.003779041642 0.0002166824308 32833866.05 8983.473395 83.1879886 131735.5945 0.06503082875 2606179.841 1476296.523 21994053.44 220233.5975 378781.0677 47119156.23 8300.010273 13064371.66 2158370.211 10645638.08 2444.760323 3682380.861 680386.7658 224489.1138 4.025941726 8815271.142 5156686.696 1040.891738 85830531.52 10148527.31 1964.66321 26455580.87 296949.5498 3349695.403 7112548.667 2638639.004 987905.2067 2118255.841 47311.69279 418.9018473 480904.6 835.0929832 10493424.34 6721822.686 42135096.79 2.554057637e-06 35332.16775 52965.08205 23772963.12 115.1868974 148256.4375 14514.87123 343235.6114 3129.041278 83637.78759 22651914.53 66414377.38 121018.9 1033632.231 0.008116153452 202051.6325 7872549.666 20740748.35 84.6247913 60671506.89 23033563.72 31648858.35 49817.59929 5313.217957 53.55696072 677441.2023 1177894.694 0.0538139324 51335892.65 5129768.588 21061295.73 +304553.2667 834208.7624 1262.099375 30479570.21 0.07038105733 23474.23621 23.10017425 2793315.108 1796.431445 2311.358805 60089962.53 416399.5268 22413235.58 192528.2401 104059.4989 156756.9061 376.0756154 1.182696888 114.1237375 17964.34529 2765052.429 5017813.118 23364514.28 4.767074649 2.18278368 735.9117121 2251445.401 12623.6608 18574473.17 1159639.875 79196438.02 96657400.86 1024898.179 592882.5774 306.1296005 17604.55202 40275260.89 0.007324832733 678849.1714 1813936.741 2478449.398 2452377.222 11262350.22 1667920.22 29106585.72 3148.643994 1898.941265 75698.24201 19686101.84 20716855.63 290600.7403 8979091.894 2733419.373 15583499.07 944.9437843 665892755.6 11592190.01 4748008.394 21817.22148 67955241.29 44156.23423 1516.341734 1126580.642 4748381.755 91.82407125 6725411.55 4661404.889 20897.29096 406231.5981 9.180417696 1760.707855 20.38599929 181019058.2 29612188.23 34786.56082 126.3133506 25055840.54 74646.78608 10467549.49 9306274.224 181911.8684 16735.8857 4545.441751 18471450.34 11333.11838 3968191.838 320724.8745 1260.990044 26837.269 5093150.971 +20464724.37 5893681.2 37170875.86 293100.4766 374298.0475 7625.067108 1056.514673 1089.093671 24116373.84 774973.0192 1132.475322 335148.7204 1619.035457 487461.4606 58099209.7 42.06396465 1682749.127 71688.82971 3177407.868 5218427.562 396.2683531 3087.798461 64629149.07 5922208.909 8168.124125 42866.51149 18425108.82 616137.0247 12417419.35 4103.21648 14224.11611 24491.11735 25879.38163 74143.21745 10643906.04 3.53763319 83921652.44 5169.278056 7772.577261 17867667.36 4169.195416 7138405.502 77657802.48 42909.81976 6349882.04 80809975.75 640.9886329 6719931.381 297863.5794 19.06320581 1490625.492 18858773.32 686562.3839 2924604.536 2011768.245 137419543.5 3889505.611 5464.894324 10637659.9 1316.488523 0.1426224951 189552.7875 378.9796853 126033.1069 7379.753848 2233262.016 159.1883906 4265.233682 8272508.891 4864.501024 27789142.64 11481188.95 4682563.07 23213746.96 4240290.899 108371.2906 15152843.18 1288838.594 67710179.08 0.858661976 10075953.36 37711.38866 773.9856944 10253005.86 16840525.33 19504424.82 12314.29416 181028.6248 64356180.31 4043601.349 +76156.59187 6066319.695 24349893.89 251.4456231 361759.1011 5362082.236 545948.9498 30315461.83 3536.590465 12890173.08 15.36456993 118342.5225 95453.49079 13271305.81 858918.9271 190209.3388 1.909771506 4582000.265 8681766.442 2582388.065 7140945.622 51.05469803 64288.9497 981224.2474 35495.70593 94940764.86 1232358.074 3894.043545 11648142.61 10378327.92 34023391.67 91154263.68 881547.0331 10646059.79 1530106.45 19.5530356 4162299.807 548.6096068 20578116.36 5.368705472 152536.5466 13666.29298 36.53542046 115182030.2 10452112.24 436.8710354 22023.39046 11251849.01 1315543 1281469.064 7260619.774 15349925.77 540.5002472 5351.065655 1987.328578 26977023.73 772185.3144 179.0237111 10366028.26 218614.3583 24631.38271 33.51228828 1446572.85 573.6287101 7056.319887 43648605.42 173807.5488 19016225.69 9137992.044 11133065.15 47260357.93 837.6619412 8080027.607 5133756.368 7029497.001 5526595.27 325349.085 45596.59901 49002559.08 672165.8525 6.344870179 14011527.12 2660.581554 24964.10065 726289.6191 33961.29532 270876.6886 997.4884593 286092.1196 3461084.051 +9340299.679 96389.18932 3447260.548 1038939.029 7142797.618 225457.8464 2816459.282 432322.0082 10436116.57 296404.3154 6855425.21 42739820.13 19.30061075 41703510.43 6875325.201 72770.90064 5766.269484 7.208911289e-08 842834.0318 704046.49 22064253.57 8259983.68 36.2689639 1.437506883 794421.2491 7927016.128 1392401.524 42522144.73 10842039.53 8235108.522 28311430.42 3.870444729e-05 4801867.905 128022.8161 30274849.48 80443654.33 236.5015743 3534355.919 9774545.581 25.19269775 15253520.59 27382.12937 65940635.04 197.3653953 16.99202174 4196.963248 136.5707018 3.790991339e-11 7194.722921 3350989.262 2934514.201 902.1588681 0.06899945841 151124.0483 195.6305379 3444.184729 3687314.699 16917064.63 834774.758 7332565.796 8316787.457 8814282.761 21619088.4 36189.66066 3054419.453 68.99873384 4842665.473 8305.936369 92.00218366 3361.784117 10178.6252 498979.2392 9114116.712 12909886.7 19312004.44 4107.162555 30331972.44 12847047.29 39604148.75 15797818.01 7573359.992 5091298.516 15502329.06 14827988.54 0.6936361397 101159.9262 998.5219166 5017271.319 797.9940331 50972570.74 +20199375.67 20.21484304 422624.7918 544221.4343 555622.521 0.02005344815 8.53756049 12603238.34 3726873.531 9293606.716 4314018.219 219369.9003 19357735.7 2156870.622 1192209.749 36534361.92 25271118.42 7639.563135 31381819.94 6726878.534 126535.8209 51.32911203 61633.37736 666582.9711 1374.093302 122693.7315 9712572.196 69019.23356 55242.44781 37788.73436 387742.0869 0.0278056517 0.009859365377 1576.17882 211564.4543 38680168.24 9481462.721 1682801.571 53.32183356 1275.575362 4071254.039 754803.8878 43437.51987 1599036.627 8043685.953 30393.86105 1048495.128 832820.3121 1237.755213 20.95056894 4437168.563 7233755.662 683221.2724 22477.1175 0.3046664749 24489.35476 20188498.52 1228859.385 2153651.753 4.007341002e-05 1480394.964 8145947.473 178.5216613 8810.344549 8.278320548 5308381.435 11911404.37 4782651.355 47510199.15 119357.6871 7.555966104 0.04993770136 799683.5596 19520302.18 435152.2496 1815.677214 7842782.163 22549848.96 8.138463174e-05 6911.661356 0.5760477621 122562.6052 987997.2502 918.0105504 413436.3568 7.944209022 24139312.33 44205.21316 0.1353084613 90518.95401 +17171107.98 405.2571822 461383.5346 2883369.799 7579070.955 376492.9661 4696512.796 4557499.44 47295.14001 235504.0308 2698.01091 1.717237501 600.248203 1809224.709 368659.8514 881.71591 1128.842838 0.02201417812 55493814.23 10232327.14 33211037.62 0.0001563659729 964092.9553 51175.54122 295281.9599 14332194.17 5991763.226 0.1581533587 66425010.83 806492.3702 956.3152818 28344092.1 33586021.66 34026880.76 66.1179096 85548013.14 961191.361 0.04554502812 85527.30252 173535.2946 4749764.594 5349684.908 19250.70687 562685.7377 710480.5698 28516174.76 32943920.91 96513.42667 6.171639606 4964.166081 19043275.7 18303865.92 11974961.35 4856.695054 45234.19033 25515336.49 31728856.92 602014.8741 16463757.2 4062472.427 281260.5083 15030011.35 15043.70782 13491265.88 218.246241 7.525376972 213219.6575 53464693.87 12218467.52 20406094.71 28687.12731 4854830.068 2854989.055 279273.5896 146947.0834 12995.69737 37049808.85 123.6303266 7415955.207 2214688.007 6147426.826 32347.37229 1087.728681 7968.511588 2037030.081 57754096.96 50187.78422 13357.29435 61081810.4 0.008319973975 +8247897.332 1746389.18 728.1304679 1589.121014 50663381.71 230.0198371 592601.8371 5016664.854 404.7647205 206.7302766 12091418.53 1197716.794 42351.62534 9.907918578 17352900.6 1488569.716 105.4931512 54539509.95 489.961349 487.9838652 8582304.877 41810.83846 25876516.84 31137.0685 135927.4045 3005249.567 44105.02644 26502808.08 336122.866 66.03896583 738.3740873 2.457630486 1704176.021 274635.2531 49648550.56 16983.14575 2104153.29 55971180.77 303446.1229 32393042.76 36281765.46 21881922.41 294973.241 5328254.972 2.823009151 11.18824262 37064698.23 0.0001465107946 0.8827142597 835518.0545 139.4878761 0.7388635711 5312078.139 27606.958 12585891.04 24627.0533 3591.880911 3510419.734 90830.9737 15456.30561 1040.50773 23786167.32 1483787.743 373061.9124 105481.6906 188500.1242 75011673.84 4799.948247 961517.3645 26.5374072 50661661.31 54474.17854 3933851.238 23936944.49 198333880.4 14143.52941 20332205.74 753092.5736 1082547.276 274.1817373 16.43975455 7590422.721 41805632.77 19864833.85 19534917.64 36837310.98 0.01103771444 0.00959671321 11000064.73 20752358.15 +# Events [PSD_cut/PSD_cut.dat] N: +13 16 13 11 11 15 11 9 12 7 20 6 11 9 11 15 15 6 16 6 5 11 10 14 16 6 8 17 6 12 12 13 6 11 10 12 9 17 9 12 13 13 17 11 8 6 6 16 4 9 8 14 7 16 11 9 14 10 13 7 16 8 17 15 6 8 14 5 10 11 8 9 13 13 14 12 5 11 20 9 15 14 10 6 7 8 11 16 7 11 +10 8 15 12 12 17 12 10 8 9 12 12 12 11 8 6 6 8 5 8 8 14 12 13 8 10 8 7 13 11 13 11 11 9 12 16 9 13 12 7 8 6 10 14 12 6 10 8 8 18 10 11 15 13 11 12 6 10 9 10 18 7 6 16 9 12 15 11 14 10 6 7 15 13 13 16 18 14 15 11 14 8 16 11 10 9 7 9 13 4 +15 8 9 14 13 10 8 12 13 11 12 12 11 9 17 10 7 14 11 6 12 3 7 6 11 7 8 14 6 11 7 13 14 17 12 12 11 7 13 9 8 12 14 4 14 6 11 6 11 6 18 12 13 18 21 15 13 12 11 7 5 13 9 3 7 10 7 10 11 9 11 5 11 8 7 13 14 10 12 10 12 11 15 8 10 4 18 16 9 9 +8 10 14 13 6 9 11 15 16 6 10 10 10 14 10 12 9 17 9 7 13 7 8 11 8 16 14 11 15 10 8 9 7 6 13 9 17 13 12 12 7 16 11 13 14 11 16 17 11 12 19 5 8 10 15 6 7 15 8 11 12 9 5 7 16 17 14 9 6 7 13 16 14 3 9 10 12 9 11 11 7 13 14 10 10 7 12 15 10 10 +13 9 16 11 15 9 9 7 12 16 12 12 9 9 11 8 9 11 12 10 12 10 10 13 12 5 13 14 9 10 16 17 6 8 10 13 9 8 6 16 10 11 12 12 12 14 10 9 14 4 15 9 12 8 9 8 11 15 8 10 11 15 6 11 12 7 13 11 8 17 9 15 17 13 7 15 9 7 10 12 10 16 15 8 13 10 16 9 14 6 +11 12 19 11 13 14 11 14 11 8 10 14 10 10 11 10 16 14 7 18 11 8 16 14 13 13 9 11 10 7 11 15 7 9 3 14 14 12 13 11 7 11 10 8 10 12 12 7 5 15 13 13 11 14 16 5 16 9 10 13 18 4 13 14 11 13 12 9 15 16 15 11 10 12 8 10 10 10 6 10 13 12 12 8 11 7 14 12 11 10 +12 9 11 10 11 10 11 13 8 11 11 12 10 19 15 7 7 6 12 10 11 11 13 15 15 15 14 8 16 12 10 20 10 13 7 9 5 11 10 12 11 12 11 4 12 19 12 10 10 9 10 17 18 16 9 10 9 11 16 8 18 5 9 10 12 7 13 9 19 16 9 15 11 14 5 8 16 4 13 10 12 14 10 13 8 15 11 17 16 11 +6 11 11 10 7 11 8 13 13 16 13 8 10 15 12 10 5 7 10 10 8 12 9 7 13 12 16 8 6 8 11 12 4 10 14 12 11 13 13 14 11 9 10 11 14 12 17 10 8 11 18 13 13 15 14 14 7 17 15 8 13 13 6 7 11 8 14 11 11 12 14 11 11 9 11 10 13 8 11 16 14 9 12 12 12 10 6 18 3 16 +7 12 10 12 7 12 11 11 7 14 9 10 8 10 20 9 12 15 14 5 9 14 10 10 12 10 18 6 7 11 10 14 14 12 9 11 10 16 5 18 9 8 13 13 8 8 13 10 5 11 8 12 9 12 5 11 13 10 7 11 8 11 17 3 13 12 12 5 10 14 9 7 17 5 10 11 5 14 7 24 11 9 11 12 15 7 10 12 8 10 +10 12 15 8 8 8 9 4 16 14 9 14 10 18 8 12 16 7 13 15 13 17 9 7 14 13 13 8 18 9 10 7 7 3 5 15 7 9 11 12 8 13 19 15 5 9 9 12 15 15 23 10 13 6 8 6 14 9 11 13 13 3 9 12 13 6 13 13 16 9 11 10 11 9 12 17 12 14 14 10 6 8 9 11 15 12 11 8 15 7 +10 12 17 10 17 13 13 17 9 18 16 9 12 17 12 8 7 12 9 6 7 11 14 20 19 9 8 10 10 8 9 16 11 10 12 13 12 12 2 6 12 9 6 9 6 13 8 11 7 11 10 8 11 14 8 6 8 9 11 11 12 13 9 14 11 12 13 13 11 11 9 5 12 10 12 12 16 13 3 16 12 11 5 14 11 6 6 9 7 17 +16 6 13 8 13 16 12 11 10 10 10 21 9 16 6 10 10 14 10 11 7 8 9 11 9 14 13 14 11 9 9 10 13 14 11 9 13 10 10 10 9 4 8 10 11 11 12 17 9 10 12 7 10 9 11 9 7 8 11 18 7 9 11 9 11 13 16 14 16 11 8 11 10 20 8 4 9 11 9 7 11 19 6 4 11 13 11 15 18 15 +9 12 11 10 9 12 8 16 9 14 9 13 9 10 7 11 9 13 10 6 12 17 12 13 9 10 10 9 17 10 13 18 10 6 9 14 13 5 6 10 11 18 6 11 16 10 11 9 11 14 16 14 11 4 6 16 17 9 6 6 12 6 9 9 10 9 14 4 6 8 10 16 10 7 10 16 15 10 12 10 9 12 11 7 8 8 12 17 8 13 +8 2 11 9 17 16 9 8 6 5 8 6 7 9 8 10 10 7 11 18 9 10 9 11 15 12 6 12 7 9 16 19 12 11 9 9 21 18 12 11 11 11 12 9 7 14 13 10 17 14 11 5 13 15 6 14 11 11 12 9 10 7 11 18 6 11 15 8 17 16 13 11 10 10 7 11 12 7 6 14 10 8 10 11 11 12 12 13 13 9 +11 13 13 8 9 13 15 8 13 8 12 11 13 11 14 7 7 13 13 13 9 7 5 11 15 14 16 11 8 7 9 13 9 10 5 14 10 5 12 9 10 18 10 14 10 8 17 12 10 11 7 9 13 10 11 13 9 10 8 6 12 7 5 3 17 9 14 19 8 9 12 14 18 12 7 10 10 8 9 11 11 8 5 13 15 13 8 10 8 13 +11 13 9 9 16 12 15 11 7 16 11 9 12 13 18 9 8 10 9 13 12 12 12 10 15 9 10 16 14 16 6 16 8 8 8 7 9 10 17 13 12 16 14 12 12 7 10 6 10 11 14 12 6 17 9 7 11 14 4 12 10 9 10 12 9 15 10 9 6 13 12 7 8 7 13 6 12 16 13 8 10 13 7 15 10 7 11 11 7 5 +8 9 11 9 16 14 5 10 15 12 12 11 12 14 12 14 9 16 10 12 11 15 9 10 9 9 7 8 11 9 10 8 15 14 18 14 5 10 9 15 14 12 11 14 14 9 10 12 11 8 14 12 16 10 10 12 10 12 4 7 8 7 13 10 8 11 10 10 10 12 19 10 10 10 18 10 8 7 20 12 9 8 9 8 16 9 20 16 14 12 +14 10 6 9 12 10 11 13 18 9 12 13 13 18 11 10 10 10 14 8 11 10 6 7 8 10 16 16 9 9 13 10 13 10 7 13 7 15 8 11 10 8 11 13 12 11 13 9 9 17 8 8 9 9 14 6 11 17 5 28 5 17 9 12 14 12 3 9 9 14 14 11 8 11 10 15 9 11 12 13 9 9 12 11 7 10 19 12 12 12 +12 10 13 8 5 7 23 12 14 14 15 10 11 11 12 11 12 6 7 11 16 19 6 13 9 4 5 14 11 9 12 14 12 15 12 8 11 6 11 7 10 9 13 11 12 16 8 14 7 10 10 10 14 6 10 7 7 4 12 11 10 11 10 15 8 9 14 10 11 14 9 15 13 7 16 7 10 12 7 17 19 9 11 9 8 8 5 12 11 8 +14 4 9 11 9 11 10 7 12 14 7 11 11 11 10 15 14 16 13 9 9 8 6 13 12 10 13 6 12 9 9 17 12 19 10 9 13 12 16 14 11 10 6 6 15 15 12 9 12 7 15 12 13 10 14 7 7 10 15 8 8 13 14 9 14 13 6 10 13 12 6 5 12 9 10 8 8 11 17 10 12 9 5 8 11 8 9 15 9 9 +9 12 16 10 15 21 12 16 9 14 9 13 8 4 10 8 7 13 15 14 6 21 14 9 20 10 5 8 11 15 12 10 8 10 5 15 13 16 14 17 11 14 11 6 7 10 9 15 10 10 12 5 12 12 16 4 6 5 15 12 16 7 8 7 11 11 9 6 8 15 11 7 16 15 11 12 10 12 16 12 12 10 5 14 5 11 10 12 12 7 +13 8 13 9 11 5 11 15 4 2 5 11 9 6 17 11 7 10 13 10 11 13 11 16 9 12 12 5 13 9 7 9 12 7 7 11 13 10 9 10 8 8 6 11 11 11 11 14 8 17 15 11 8 7 15 14 13 10 13 13 17 5 11 18 14 10 9 15 12 14 16 10 10 11 10 8 12 9 10 8 13 12 8 17 9 12 9 8 11 16 +23 7 18 12 15 11 9 7 14 7 8 9 8 11 10 13 12 14 7 10 11 12 6 9 9 7 13 12 6 14 10 10 9 15 7 10 15 9 11 6 9 15 18 12 16 9 12 11 9 12 13 7 6 11 16 15 6 7 13 15 13 10 7 15 10 17 12 5 12 6 10 13 11 6 11 15 10 10 11 11 10 15 9 12 11 12 13 4 17 19 +15 10 10 15 11 9 14 7 12 10 12 10 11 18 12 15 8 14 10 9 11 14 6 11 12 10 14 7 7 8 12 8 11 8 12 11 10 9 11 9 5 11 7 4 4 11 11 12 15 7 12 9 7 8 12 24 11 8 12 9 5 12 17 14 10 13 11 10 11 10 8 8 9 8 13 7 11 9 9 11 10 7 13 11 11 16 6 10 16 12 +8 11 15 6 16 8 4 12 8 9 10 14 17 12 7 14 8 10 12 15 10 12 8 16 11 10 11 12 6 6 16 8 10 10 9 10 16 15 7 10 16 9 19 6 8 11 11 7 13 7 13 15 6 7 9 14 7 14 20 17 8 13 6 8 11 7 13 6 9 7 9 15 12 15 12 14 14 8 12 8 11 8 11 13 16 8 9 15 11 10 +11 11 17 14 10 8 8 14 7 4 8 14 16 11 12 11 9 17 9 13 12 9 6 12 10 9 9 13 9 14 13 8 8 14 17 4 8 14 10 11 13 9 11 9 7 9 8 12 8 11 10 16 5 15 8 7 12 12 4 9 14 8 10 10 11 9 15 11 14 6 14 11 15 10 15 11 12 10 9 10 14 13 9 13 8 9 10 14 10 11 +11 12 14 17 14 13 13 11 12 10 9 6 7 13 8 17 13 9 7 14 10 12 8 6 15 10 10 9 12 11 18 7 13 11 11 10 10 13 12 13 19 8 9 13 10 10 15 4 12 8 11 11 13 9 11 7 14 11 14 11 14 13 14 13 11 6 9 16 8 8 15 11 8 3 15 7 10 16 13 6 7 9 7 9 15 13 11 11 9 7 +12 13 12 11 14 11 7 12 10 13 9 7 12 10 10 14 11 9 18 9 11 12 13 12 15 12 11 18 15 13 8 20 10 4 10 13 10 6 8 9 16 7 8 7 18 9 8 11 11 11 6 13 12 15 4 10 12 21 10 14 16 15 14 9 17 12 12 15 13 11 8 14 14 13 9 13 12 8 9 10 11 14 12 9 9 13 15 11 7 12 +3 12 9 12 19 10 15 13 17 12 10 9 4 15 15 9 13 12 6 7 12 9 9 9 7 12 21 9 12 8 8 12 10 10 12 9 9 16 8 11 12 9 8 14 14 5 15 8 6 14 9 6 10 14 14 10 14 14 10 10 10 6 15 10 13 9 13 15 9 8 15 12 10 6 17 10 16 11 14 11 8 11 6 9 9 11 11 11 10 10 +11 12 8 5 16 11 10 9 15 6 11 7 7 9 10 16 13 11 13 6 11 15 19 12 12 16 9 12 11 10 7 16 6 15 11 12 10 11 13 11 6 10 18 11 8 15 8 12 13 15 11 9 13 8 12 12 11 13 8 7 12 13 10 9 10 11 9 14 15 6 13 6 15 6 10 12 8 18 15 10 5 9 8 4 7 12 13 10 15 10 +9 13 11 11 10 13 10 12 10 9 7 9 13 13 13 10 10 5 10 12 13 8 9 15 10 9 13 10 10 17 9 2 13 8 16 11 12 13 19 15 13 7 12 8 5 11 9 19 10 12 9 11 11 17 12 20 8 7 12 14 8 11 15 13 7 11 9 13 13 10 6 15 11 12 14 7 7 14 8 14 10 9 16 9 15 9 10 10 11 15 +9 13 8 10 13 9 8 11 15 12 7 15 16 16 14 14 9 8 11 14 13 10 15 12 11 13 19 9 13 8 15 15 10 13 14 12 12 14 15 9 12 10 11 9 11 10 12 11 4 11 10 6 14 9 11 9 10 7 11 7 9 10 7 9 7 15 6 10 13 10 16 12 9 12 16 8 6 10 10 11 13 17 10 12 16 13 13 13 10 9 +11 9 12 3 12 7 12 10 22 15 7 17 17 12 5 15 6 9 9 10 11 11 14 10 9 19 8 10 11 17 7 10 5 8 14 12 12 8 9 19 8 6 13 10 14 8 9 10 10 10 9 11 15 6 7 19 13 12 11 11 10 10 10 9 9 10 11 10 8 11 12 10 8 12 8 14 13 11 13 7 6 9 13 15 9 9 9 9 11 10 +9 12 11 11 9 6 7 12 12 15 18 11 15 8 12 12 9 14 9 13 9 17 10 15 11 6 19 11 9 15 8 13 7 12 15 13 15 15 8 7 8 9 9 9 12 10 8 9 16 9 14 8 17 4 5 9 12 9 8 7 9 10 18 10 14 7 8 11 15 12 10 13 8 8 6 9 8 21 18 10 9 9 8 14 14 13 8 13 10 14 +14 12 9 10 13 7 11 9 14 11 9 10 14 12 9 8 9 11 8 13 10 13 14 11 12 8 5 12 10 8 10 6 13 10 9 13 8 4 11 12 10 10 9 3 8 14 8 12 10 16 12 14 20 12 10 11 8 11 15 10 12 11 7 10 15 13 15 10 10 12 10 9 10 12 12 13 11 20 11 15 1 13 12 8 16 8 10 14 9 9 +10 13 6 8 12 7 11 12 17 6 6 15 8 13 11 12 6 9 11 14 19 7 8 8 11 5 12 10 4 14 9 9 8 12 12 11 7 13 11 18 11 15 6 13 12 15 11 12 7 11 16 11 7 18 9 7 13 16 12 10 12 12 10 9 9 9 14 10 11 10 12 10 12 17 17 16 12 14 9 8 11 10 9 13 8 6 11 12 9 10 +6 9 6 10 18 11 8 12 12 13 13 7 11 11 14 10 8 14 14 6 13 6 9 14 13 8 13 12 15 11 12 11 11 10 5 5 8 15 8 16 15 5 11 7 20 7 14 10 12 6 14 9 10 11 10 7 9 12 13 17 10 10 11 16 10 16 12 10 6 14 10 9 9 10 15 13 15 11 6 9 9 13 16 10 11 12 18 3 13 15 +10 5 11 15 5 12 11 11 6 11 14 18 13 13 6 12 12 11 7 17 8 7 7 13 9 19 8 11 7 5 7 12 18 13 10 11 11 11 11 17 8 8 21 7 8 11 14 10 16 9 10 8 9 10 16 12 13 16 12 14 18 11 18 16 15 14 12 12 9 8 12 12 10 13 11 7 8 14 11 9 13 11 14 18 9 9 11 15 9 12 +12 11 9 9 14 14 12 10 6 13 13 13 8 8 8 12 8 9 9 10 8 9 10 15 10 12 9 17 11 8 11 9 10 21 7 9 12 7 7 15 8 13 7 15 15 12 5 12 4 12 13 8 13 9 5 13 11 16 13 7 9 12 8 9 16 14 17 12 14 13 13 6 8 8 19 11 19 12 18 9 6 9 8 17 11 8 9 8 12 5 +9 8 10 11 9 9 15 18 12 16 11 12 11 14 12 9 20 12 9 11 9 9 8 17 10 9 16 12 9 9 7 9 14 8 12 14 11 8 9 11 17 12 12 14 15 14 7 8 9 13 12 7 10 9 9 17 17 13 14 12 7 12 11 8 11 12 5 11 10 13 16 8 7 7 10 8 4 11 13 13 10 23 12 8 12 9 11 16 16 9 +11 10 16 8 5 9 6 9 8 7 9 14 14 16 10 12 11 15 7 6 6 10 15 4 10 17 10 9 13 12 14 12 10 13 6 10 8 16 15 8 11 13 13 11 12 11 10 6 7 17 8 10 12 11 9 10 6 15 12 16 8 7 13 10 19 18 5 9 8 9 9 11 12 13 12 8 7 7 9 11 7 14 11 11 10 6 6 10 14 10 +7 13 14 13 11 9 7 8 14 7 10 16 8 15 7 8 13 7 19 11 11 13 7 8 7 14 14 8 12 7 10 11 10 7 16 14 11 13 6 9 10 13 13 8 10 8 9 15 13 7 8 11 15 11 15 12 5 4 7 10 12 12 16 11 7 8 11 13 19 17 7 13 3 15 17 20 13 10 21 12 6 11 13 15 16 11 13 10 8 10 +5 8 8 14 11 10 8 4 11 10 11 16 11 15 8 11 15 12 11 11 10 4 9 17 12 8 13 7 14 14 8 12 13 15 11 19 10 12 18 13 20 15 15 13 13 10 12 23 12 15 16 9 14 13 9 14 7 8 10 11 10 11 5 11 9 14 15 11 9 6 16 12 11 13 6 15 11 12 10 11 8 8 15 6 11 15 6 18 13 16 +7 9 9 7 12 7 20 12 12 11 10 9 6 13 18 10 9 13 12 9 12 18 5 10 11 10 18 8 9 8 12 8 10 13 12 15 15 11 11 14 8 7 16 15 10 12 9 13 11 14 8 16 9 8 10 11 7 13 8 9 14 12 13 11 15 10 11 17 13 10 8 9 17 8 16 11 17 10 13 10 13 13 10 8 17 13 12 13 11 9 +8 14 14 13 14 7 12 12 16 7 12 14 12 10 12 8 9 16 13 9 17 14 5 10 12 15 6 8 10 18 6 13 14 11 13 14 9 5 12 13 11 13 8 6 15 10 7 11 18 5 6 9 9 13 12 9 9 11 8 9 10 8 13 15 17 4 6 8 7 11 10 10 7 20 8 7 11 9 14 16 19 13 15 11 9 14 19 12 7 10 +13 9 16 9 7 13 14 11 11 10 9 11 14 12 17 11 6 11 10 8 10 12 15 8 19 11 8 10 7 10 13 11 16 17 7 13 8 6 15 13 13 16 10 15 11 10 7 7 7 8 10 11 9 8 7 13 8 10 16 11 5 12 9 7 9 7 16 20 13 12 7 7 8 10 14 7 12 13 11 3 16 14 12 13 11 19 12 7 15 10 +16 12 5 12 8 14 12 13 8 8 9 13 10 16 10 13 10 10 11 6 13 8 8 8 13 13 15 16 9 14 10 11 8 9 16 11 7 18 8 10 5 13 12 19 11 8 12 11 12 14 5 12 15 15 7 16 8 17 12 16 10 9 12 12 10 16 14 13 8 11 13 10 12 8 7 15 12 14 11 5 8 9 8 15 11 9 13 11 5 7 +13 9 8 10 13 8 14 10 13 7 11 16 9 14 9 13 6 15 11 13 20 4 7 10 11 3 10 12 12 16 11 6 14 13 13 14 14 15 4 17 13 14 7 12 11 11 12 11 11 10 11 12 13 9 10 8 14 10 3 12 6 15 9 14 8 10 11 8 6 10 9 11 13 9 7 7 20 15 9 4 12 8 6 10 14 15 15 11 11 11 +7 16 14 13 13 8 11 12 8 10 9 7 10 9 11 13 9 8 14 10 15 12 19 11 13 9 11 11 15 8 16 11 13 8 15 8 8 10 12 11 8 8 14 9 9 13 3 7 13 11 6 11 13 10 6 9 7 8 11 18 10 11 9 6 14 10 16 10 16 15 10 14 15 12 13 12 9 7 10 10 12 7 12 15 9 8 6 11 11 9 +6 6 4 7 12 9 6 13 7 19 14 9 13 15 8 14 8 11 10 9 6 11 13 13 10 10 10 11 10 7 12 13 8 10 7 9 12 6 13 16 9 13 11 8 11 7 12 15 9 16 11 8 11 11 9 8 12 17 4 10 7 9 9 15 12 9 15 11 9 10 9 10 5 12 9 14 11 9 8 8 11 6 11 11 7 9 15 10 12 13 +10 13 14 12 7 9 7 9 3 15 7 4 10 8 12 11 10 14 13 9 12 7 9 8 13 10 8 11 15 7 16 17 18 13 12 6 15 9 18 14 7 10 18 17 15 14 9 8 10 7 12 6 9 10 11 7 19 9 7 15 11 11 8 10 13 11 12 11 12 13 11 11 11 6 14 12 5 7 9 8 5 15 8 10 10 10 11 10 10 13 +15 5 12 15 8 5 12 11 13 10 14 10 9 13 10 8 9 9 9 15 15 9 7 11 8 15 11 11 14 10 17 12 6 9 16 7 7 5 13 11 11 12 16 7 8 14 14 8 7 15 14 13 15 10 13 12 5 16 10 14 10 14 17 8 10 9 20 12 11 7 7 9 14 11 15 8 14 9 9 12 18 15 4 9 16 7 12 8 14 10 +10 10 12 15 11 12 15 14 13 8 14 7 8 3 15 13 13 15 11 8 14 12 7 9 18 14 5 10 14 12 7 9 6 9 12 12 11 13 10 11 14 11 10 13 10 14 15 10 13 12 14 8 10 20 10 13 9 11 9 19 12 12 10 8 8 12 16 17 11 14 16 15 14 14 10 12 16 9 11 10 8 6 9 10 11 7 13 15 14 11 +9 9 16 15 14 11 16 13 12 6 8 13 10 12 12 6 15 12 12 12 10 13 9 9 14 13 18 14 10 10 8 10 7 8 14 8 10 12 17 7 14 12 9 10 8 11 9 8 17 7 18 16 9 7 11 11 4 12 12 14 14 8 16 11 8 9 12 19 14 13 15 9 11 16 15 17 8 10 17 15 8 10 6 5 13 9 8 10 9 12 +14 7 14 9 14 13 12 10 12 6 11 13 10 17 6 11 10 14 13 11 13 12 16 13 10 9 13 6 12 6 10 10 12 8 17 11 8 16 12 15 8 6 11 11 14 15 8 11 10 10 6 8 17 12 14 11 12 15 9 12 13 8 18 11 16 11 6 13 11 13 10 12 9 9 8 16 18 15 12 12 12 14 13 13 14 10 9 17 8 8 +13 12 12 8 13 10 7 15 13 15 10 8 12 3 8 15 11 10 9 6 17 11 13 16 10 11 12 14 11 12 14 15 10 9 10 10 6 8 10 14 21 15 10 9 13 15 5 10 17 9 15 9 11 9 9 9 11 12 12 8 7 6 9 11 8 12 9 9 12 12 15 9 17 14 8 12 13 13 13 12 7 5 12 12 15 16 5 8 15 10 +10 11 9 11 14 12 17 11 10 13 10 13 8 11 20 9 10 6 7 7 10 11 6 11 11 13 8 11 16 13 14 9 13 15 18 10 11 8 17 8 11 10 8 12 16 9 16 9 17 12 15 9 7 15 9 8 9 11 15 12 12 8 5 11 12 11 9 8 15 15 6 10 11 14 7 8 19 13 11 15 8 6 8 10 10 13 11 7 11 11 +17 12 9 13 11 8 13 12 20 12 10 12 9 8 7 9 12 13 11 12 13 13 11 5 10 9 17 4 11 12 11 11 9 10 8 6 15 17 12 11 5 10 6 14 4 10 18 3 10 8 12 7 7 10 12 12 13 9 12 14 12 14 8 16 12 11 10 12 10 8 11 16 15 7 10 15 11 13 12 17 8 15 8 15 12 11 8 13 9 12 +11 4 7 15 15 16 10 12 10 12 12 12 11 13 14 10 14 6 17 7 12 16 14 11 7 5 13 4 11 10 20 6 12 13 7 10 12 16 11 15 10 15 14 12 15 8 11 10 7 14 5 12 15 8 7 10 8 7 12 7 9 11 10 15 18 21 13 13 17 15 12 9 9 10 13 6 8 13 11 11 11 13 8 11 16 11 10 7 15 7 +13 21 16 8 14 9 8 20 8 19 9 11 16 9 12 12 11 8 5 10 13 8 10 13 10 11 10 10 12 14 14 9 15 12 11 10 13 10 20 12 9 7 5 7 9 6 7 8 8 4 7 11 18 5 7 8 8 13 16 13 10 9 15 13 14 14 13 8 10 9 12 9 9 9 18 12 16 11 12 10 13 14 10 12 14 11 11 12 8 14 +14 13 11 14 13 10 12 12 22 10 11 13 10 17 13 9 8 18 20 9 14 8 10 14 10 8 11 11 11 6 13 15 12 21 12 10 17 14 11 10 9 10 8 9 7 13 12 17 9 9 10 9 8 7 19 6 15 12 16 11 11 11 6 10 12 6 13 7 16 14 10 15 9 15 13 12 13 10 9 11 13 14 6 16 8 10 15 11 3 9 +10 12 12 8 13 11 14 9 8 9 9 12 12 10 7 19 10 11 5 13 8 15 11 10 6 10 15 17 8 12 15 11 13 12 13 10 12 15 10 9 9 15 4 10 8 13 6 5 13 10 15 11 9 12 14 12 10 11 6 11 16 3 20 12 12 7 15 10 14 8 5 12 6 10 2 13 10 11 11 12 8 7 15 3 11 16 8 12 19 9 +13 7 9 6 10 11 17 9 14 5 9 14 9 8 11 9 11 17 10 16 10 3 6 13 13 15 17 11 9 11 14 14 13 7 10 10 5 14 10 11 10 13 14 7 7 16 9 7 7 10 12 5 11 11 10 11 10 12 17 10 16 10 12 5 18 8 6 12 9 6 7 10 16 12 13 10 14 3 11 11 15 10 14 16 12 12 15 18 9 12 +7 11 18 11 10 9 10 13 8 15 16 16 12 10 10 10 15 6 5 15 12 9 8 13 17 16 12 11 18 16 15 13 9 9 15 9 17 9 10 20 12 9 16 13 11 19 7 7 12 10 10 10 18 7 14 8 15 8 9 12 15 17 10 11 7 20 10 13 7 13 11 8 12 12 11 12 8 7 7 9 14 11 14 9 9 5 6 18 9 9 +14 8 17 9 15 14 10 7 8 8 12 7 14 13 8 9 10 13 10 8 10 8 8 13 6 8 14 10 9 7 15 16 10 7 11 12 14 14 10 14 14 12 13 11 13 3 8 10 11 11 18 16 9 12 11 12 6 11 9 14 10 13 9 5 4 7 11 13 9 9 9 9 11 10 14 21 9 8 15 9 10 15 12 8 7 10 10 9 6 11 +16 8 13 9 7 15 10 7 14 14 8 15 16 15 6 13 9 15 15 7 11 11 16 11 16 13 9 5 9 12 11 12 11 13 15 19 10 8 14 13 8 3 15 9 10 16 17 8 11 11 17 8 7 8 11 8 7 15 6 9 18 16 9 7 7 14 14 13 11 10 10 13 7 7 11 9 17 8 8 11 11 17 16 16 12 8 6 11 11 13 +10 13 10 12 8 17 11 16 12 7 14 7 18 15 10 13 11 9 14 8 13 9 7 13 11 12 8 12 13 16 13 6 13 15 9 23 14 15 7 9 10 11 12 6 14 5 13 15 9 7 8 12 10 8 6 11 11 10 5 13 11 10 15 10 10 10 6 12 10 12 16 10 12 9 9 10 7 13 12 12 6 11 11 9 8 15 14 15 10 12 +9 17 17 12 9 9 12 10 8 9 11 18 7 15 14 11 10 14 9 11 11 9 5 10 12 8 8 14 14 12 9 12 11 13 13 12 22 9 7 13 12 11 9 17 12 8 15 7 16 13 15 12 9 13 17 10 14 14 17 13 13 11 16 7 14 13 10 10 10 9 14 11 15 14 12 7 12 4 11 9 16 9 12 8 15 15 10 16 7 9 +14 10 14 7 16 10 6 15 11 7 8 14 18 15 17 16 18 7 8 13 9 14 15 12 10 10 14 13 8 12 5 14 10 7 7 16 14 14 11 8 8 13 16 10 7 8 8 9 15 13 17 12 13 8 14 13 6 9 17 7 8 9 9 7 12 15 9 8 14 17 15 17 8 11 6 7 16 12 14 13 4 8 12 8 6 10 4 6 5 10 +4 14 9 13 17 10 9 13 8 3 14 15 9 6 12 11 10 16 18 8 10 10 14 9 10 12 13 20 17 11 7 9 13 10 14 7 8 12 8 13 10 16 14 11 17 8 9 11 8 11 7 7 9 13 10 9 8 14 8 11 15 17 8 9 12 14 12 8 12 15 10 6 5 13 12 11 10 15 14 12 10 11 13 11 8 14 12 12 16 10 +7 11 12 7 9 5 10 7 9 9 11 11 10 13 11 9 13 12 7 10 11 9 15 9 12 14 6 9 19 14 17 10 11 13 10 10 10 6 18 12 9 10 6 9 12 14 12 17 12 10 17 8 8 10 10 15 14 12 7 15 19 10 11 12 11 9 9 10 10 15 17 5 8 10 5 9 9 12 12 5 9 13 5 12 7 7 11 8 12 11 +9 14 12 10 8 12 9 18 14 4 12 13 16 11 4 14 5 12 15 12 6 10 12 19 10 12 10 12 11 10 12 5 9 16 4 11 8 7 10 5 8 10 13 14 10 4 11 14 7 13 14 10 7 12 16 12 16 17 11 6 9 14 5 13 5 6 13 13 13 11 13 12 10 14 10 5 11 13 10 12 11 11 10 7 9 13 11 10 14 7 +13 9 8 9 6 19 11 11 6 10 11 12 7 16 12 7 3 10 16 10 12 15 14 15 13 8 10 13 16 16 14 13 7 12 11 12 4 7 13 8 7 14 17 10 13 8 9 6 13 16 11 11 13 10 8 8 13 9 10 10 14 8 16 17 8 7 11 9 11 10 9 6 9 10 13 12 12 11 17 13 10 13 9 15 8 8 12 11 13 16 +8 9 9 13 11 6 9 16 10 13 15 13 7 11 10 10 12 11 20 8 9 11 10 10 15 22 13 8 18 11 12 15 14 18 12 12 10 9 9 13 11 8 13 7 19 11 6 8 3 7 11 7 10 20 7 9 9 8 9 13 12 11 13 13 2 5 15 9 8 8 10 11 6 9 12 11 8 10 8 11 11 6 15 11 16 5 11 5 12 3 +11 14 8 6 15 17 12 11 8 20 10 11 8 19 16 6 6 8 16 15 15 7 11 9 20 8 14 14 13 12 13 10 10 20 9 10 14 14 14 10 14 12 18 9 13 14 11 16 15 11 11 14 15 14 12 14 14 11 12 9 9 12 10 13 10 14 10 11 13 8 17 16 10 14 19 12 15 8 17 12 15 12 12 10 8 12 7 15 13 7 +8 16 8 8 10 10 13 9 13 14 9 10 9 14 11 5 11 12 11 14 12 9 10 17 9 15 8 15 19 6 7 13 15 12 12 12 12 10 8 7 12 11 12 9 11 15 11 7 11 13 14 11 11 10 8 8 8 14 13 11 14 7 21 12 14 16 10 12 18 9 13 9 11 14 13 12 16 6 8 8 12 7 10 14 12 7 9 9 10 15 +10 15 9 9 15 9 14 11 11 6 14 7 9 18 8 12 14 12 6 9 12 13 9 9 13 13 10 10 8 15 17 14 8 11 9 8 7 10 12 10 14 8 11 7 8 6 10 10 13 15 7 16 13 9 11 9 19 14 7 12 12 5 10 14 6 13 12 9 15 9 16 24 7 11 8 6 7 12 15 21 5 16 20 9 12 7 7 10 11 15 +11 12 10 8 11 12 10 13 15 11 8 11 6 10 10 11 10 10 6 14 7 8 8 10 11 12 17 12 13 13 7 14 14 13 14 11 13 11 9 13 11 11 19 12 11 15 14 11 5 13 11 14 15 9 15 16 10 10 14 8 6 8 7 13 13 9 14 17 16 8 8 14 14 13 9 9 11 8 19 9 13 13 10 11 8 10 7 12 9 14 +9 12 12 16 6 13 10 17 14 7 13 15 6 16 13 10 8 13 12 11 11 8 15 15 8 6 12 7 13 14 16 12 12 13 11 9 10 11 16 11 11 18 15 12 13 5 12 16 7 8 9 6 16 14 11 8 17 14 10 15 12 18 15 6 13 9 8 10 11 12 14 11 9 4 12 7 10 10 9 11 7 13 14 10 16 7 8 15 10 9 +14 10 10 5 11 6 8 7 17 12 11 7 9 14 14 11 4 12 11 14 9 5 11 12 8 8 15 10 9 11 10 9 13 15 8 9 15 13 11 10 16 9 7 8 6 7 8 12 11 9 13 10 15 11 12 15 15 13 11 10 10 9 8 11 16 6 11 15 11 11 12 9 6 16 8 18 9 7 15 15 14 11 7 17 12 9 15 12 6 17 +3 7 18 10 14 6 9 9 12 15 14 11 11 16 11 12 12 13 9 7 9 11 15 9 13 12 17 14 9 12 12 15 11 6 16 9 6 4 7 11 7 11 16 17 11 10 10 8 10 10 20 9 9 13 8 10 12 8 13 7 7 11 10 10 18 14 14 11 13 12 19 12 11 12 11 26 13 13 15 8 11 7 9 15 9 15 12 17 10 15 +9 8 12 13 11 9 9 12 5 7 9 10 10 17 7 12 6 15 13 11 8 19 8 7 14 19 9 10 11 16 14 7 11 8 12 8 14 13 18 4 10 8 9 11 10 9 17 10 11 9 7 12 14 8 11 13 10 9 10 14 10 10 9 10 9 9 8 6 13 9 11 11 8 12 7 10 14 10 18 14 7 11 15 10 10 9 5 9 7 7 +11 9 8 8 11 7 8 13 7 7 12 9 14 12 8 12 7 9 5 18 7 9 13 10 10 12 13 9 7 9 9 11 10 5 8 18 11 15 10 9 13 6 11 16 10 16 14 12 9 10 12 22 9 11 11 17 12 14 12 6 12 13 15 6 12 12 7 12 10 10 16 13 17 12 6 16 15 6 11 9 15 10 9 9 11 12 8 14 9 15 +16 9 10 7 4 7 7 10 13 4 16 9 10 6 6 12 15 6 9 6 15 9 13 6 12 11 15 8 19 10 11 11 13 12 14 15 9 8 14 16 14 13 13 11 9 10 14 10 20 14 10 9 10 9 11 11 11 10 16 10 7 9 11 11 7 11 12 19 8 8 8 7 9 10 14 7 11 6 12 11 17 10 8 10 11 16 14 10 10 12 +8 12 14 14 9 7 19 7 11 9 11 15 8 11 19 13 13 7 17 16 7 9 13 10 10 9 15 12 22 6 6 8 14 12 11 8 14 8 6 12 6 12 15 7 8 10 11 9 11 8 17 8 11 14 20 10 12 9 11 9 11 15 10 4 10 9 7 17 7 10 14 17 9 9 10 11 10 14 9 8 8 15 12 11 7 17 15 13 14 13 +9 9 14 13 7 13 7 9 15 12 14 7 6 10 13 12 11 12 12 10 13 11 6 17 11 7 14 9 12 14 19 8 11 12 19 10 12 11 6 13 8 6 12 13 10 10 12 11 8 8 10 9 13 7 15 16 13 7 17 7 9 10 7 12 8 12 14 8 13 9 11 17 12 10 11 8 16 13 8 12 7 10 9 10 11 12 9 13 10 14 +8 9 12 8 12 8 10 12 12 13 11 11 11 7 10 7 11 12 14 7 11 19 16 9 10 11 15 8 4 11 12 8 11 17 12 16 13 6 24 6 13 12 8 9 5 11 12 3 14 13 12 10 7 12 11 12 14 8 11 12 14 12 7 10 8 9 14 14 8 12 10 6 11 11 15 7 10 13 10 14 12 6 8 16 8 15 11 13 11 12 +6 11 12 14 7 5 8 15 9 16 15 15 7 7 20 22 10 13 9 6 9 10 15 14 13 6 13 10 16 10 14 5 8 10 5 6 10 12 11 13 8 9 15 17 10 13 10 15 9 9 11 12 18 14 10 10 15 7 17 13 7 10 3 12 11 20 16 15 12 6 11 8 11 13 12 10 13 20 7 14 12 13 12 16 8 11 11 9 11 12 +11 7 10 14 10 17 14 15 11 7 16 6 8 9 10 12 16 12 18 12 12 8 11 9 15 11 17 10 11 12 11 9 8 15 14 11 9 8 12 15 7 13 9 11 11 12 9 6 9 11 15 14 12 10 12 15 19 11 13 15 13 5 8 9 10 6 14 13 10 12 9 11 8 9 7 9 11 11 10 14 7 11 13 12 15 15 11 13 12 13 +9 10 9 14 10 6 15 16 9 8 10 13 13 7 13 10 12 12 11 14 13 16 9 11 8 13 13 11 12 7 7 7 10 12 16 7 12 12 7 10 11 6 10 9 14 8 8 11 8 9 13 8 13 11 14 6 15 9 14 11 7 10 11 9 13 12 9 11 7 9 12 8 9 15 8 7 15 8 9 11 8 11 12 9 13 14 7 14 16 12 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/image.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/image.dat new file mode 100644 index 0000000000..7c22baf14c --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/image.dat @@ -0,0 +1,965 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_2d(300, 300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: sample_PSD +# position: 49.4198 0 -35.0741 +# title: Intensity Position Position Monitor (Square) per bin +# Ncount: 10622832 +# filename: image.dat +# statistics: X0=-0.0016582; dX=0.0801978; Y0=-0.00380121; dY=0.0762393; +# signal: Min=0; Max=3.5785e+07; Mean=28063.6; +# values: 2.52572e+09 9.28181e+07 43878 +# xvar: x +# yvar: y +# xlabel: x [m] +# ylabel: y [m] +# zvar: I +# zlabel: Signal per bin +# xylimits: -0.15 0.15 -0.15 0.15 +# variables: I I_err N +# Data [sample_PSD/image.dat] I: +0 0 1.689260766e-36 2.305722588e-14 161.9566686 0 0 0 4.898438598e-10 2.390612428e-20 0 0.0242950363 5.9658636e-24 0 0 2.788061597e-31 1.323845896e-15 1.062072201e-10 0 0 0 0 0 0 0 4.362103895e-32 0 0 0 0 0 0 0 0 0.0004317308313 0 0 0.00637832701 0 1.841769372e-05 1.335902933e-09 3502.231395 0 9.769602676e-05 1.422534989e-11 0 0 2.297127305e-11 0 5.669225407e-26 4.33110119e-07 0 0 5.185632217e-25 0 4.425600258e-08 53.54356916 0 0 0 8.332138009 0 9.760782206e-19 3.727275459e-05 0 0 0 0 0 0 0 2.203970198e-11 0 0 1236.48444 0 0 465.1363225 0 0 0 5.912715513e-20 0 5.414777322e-12 4.481368873e-17 0 0 2.623535524e-33 0 0 1.070965973e-16 0 5.261147853e-21 206042.1995 0 1.384694738e-37 0.002109353269 0 9.022049584e-18 0 7.13976979e-16 0 0 0 4.942382051e-21 0 0 9.139995171e-34 0 0 0 0 0 0 26539.62674 0.0005885242156 0 0.135265707 7.303552516e-22 3.660395364e-06 0 0 0 0 0 0 2.416967785e-27 0 8.616774708e-06 37.05424372 0 0.000424079716 0 0 148.4816971 1.867798934e-09 0 0 0 4.231415359e-05 3.089513165e-17 0 1.634655987e-05 0 0 6.010823391e-17 0 0 0 0.0007328972407 0 0 0 0 1.754111852e-16 1.084869646e-11 2.078208883e-13 0 0 48637.63264 0.0008770010002 0 7.094473086e-11 0 0 2.042256122e-09 0 0 0 2269.873387 308599.4459 0 7.01221754e-17 0 0 0 0 0 0 0 3.615048784e-11 0 0 0 0.04585771634 1.506811736e-23 0.7622268778 0 4.82637537e-27 0 6.01551847e-09 0 0 1.492307235 39071.73926 3.266184101e-10 2.848268953e-25 0 4.944277504e-24 0 7.940053521e-06 0 1.660500266e-06 0 0 6.353291819e-13 2.297093734e-16 1.73530414e-05 0 0 0 1.664553655e-05 0 3.562334306e-27 0 0 0 2692.176641 1.192711532e-22 0 0 0 0 0 0 3.691538701e-11 361348.2362 0 0 4.59177917e-36 0 0 1680.612539 0 6.345464776e-17 0 0 0 1.710811239e-08 0 0 0 0 0 0 1.459268111e-26 0 0 0 1163.714387 0 0 0 0 0 851.2760936 0 0 23.77817982 0 0 0 8.695259826e-06 0 0 0 1.578869349e-11 0 0 3.644176741e-12 0 0 0 0.01420715105 0 0 0 0 0 6.629321181e-12 0 0 0 0 0 0 0 0 0 0 0 0 2.440770094e-27 0 1.630782079e-16 0 0.01443059041 1.573691676e-09 0 0 +0 0 0.03366366304 0 0 0 0 0 5.99151141e-06 3.921404598e-09 1.259556709e-12 0 444.8159323 1.059661716e-23 0 0 0 0 0 0 0 0 4.517271846e-16 0 30.94427158 0 0 0 2.123187812e-14 5155.451727 0 0 0 0 0 0 0 0 0 0 0 1600.391701 0 0 0 0 0 0 0.1725062321 0 0 0 0 4.975550294 0 0 0 4.054306192e-30 0 0 0 0 0 0 0 5.259983323e-10 0 0 0 0 4.255144778e-29 0 0 1.750703859 0 1.154729511e-27 0 0 8.390070512 0 42.94097403 0 4.82144632e-43 0 0 1.530434909e-16 0.174459155 0 0 0 2.369629816e-05 0 0 0 3.834813766e-06 0 0 1.490312963e-24 0 1.7043469e-07 0 0 0 0 0 0 691138.1513 0 0 0.002456345961 0 76.59089432 329411.3586 5.062836245e-26 118.4456395 0 1.339711727e-19 0 0 1.438821302e-05 1.99913784e-22 0 0 0 0 0 0 0 0 8.957326086e-12 2.273823772e-07 0 3.390374725 0 4.496625252e-14 0 0.0003575267658 9.691587685e-12 0.0004098368641 140.7170395 1.348805419e-19 0 4.316559175e-09 152.2144508 0 0 3.016874591e-08 0 0.0008333173433 0 3.102510186e-06 8.721105286e-20 0 3.757400101e-27 0 30.02333759 9.171821313e-07 0.02627439893 5.496461491e-12 1.498149129e-08 2.237915605e-37 1.323944977e-14 2.34101685e-21 1.576440101e-14 0 0 0 5.75993466e-16 0 0 0 0 1.769552026e-18 4.497034334e-05 0 0 261.8352313 0 2.242031879e-18 0 1.006868721e-06 8.289028512e-21 0 5.429908209e-06 0 0 0 0 2.193970291e-23 0 0 0 0 0 2659.512906 0 0 0 0 2.096358426e-11 0 0 2.049424248e-08 0.1024360766 0 0.0001164153264 0.03332430499 1.725926724e-23 0 7.569846714e-23 0 0 0 0 5.895132967e-14 0 0 0 6.090026095e-12 1596.562071 426.1095281 6.87670012e-20 0 0 0 0 0 0 0 0 0 0 1.002173882e-25 0 0 0 0 0 0 0 7.518187725e-14 0 0 0 7.921294244e-14 0 0 0 0 0 0 0 0 0 9.199601977e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.02445987e-06 0 0 3.81483985e-18 0 0 0 0 0 0 0 0 0 0 1.594490359e-12 0 0 6.449505342e-12 0 0 0 0.08997721964 0 0 0 +0 4.19390481e-08 280.0704746 0 0 4.92358239e-26 0 0 0 0 1.494303939e-22 2.973788465e-36 2.962139234e-20 0 8.38266857e-13 0 0 0 1.120413311e-10 0 0 0 0 0 0 696853.2475 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.002269544e-26 0 844.3647619 1.841519988e-28 0 1.62969963e-16 0 0 0 5958.930352 0 0 0 0 0 0 0 0 0 0 0 0 0 5.821170524e-28 0 0 0 3.610670713e-06 0 0 0 0 0 0 0 6.846693965e-12 0 0.05113767684 3.582462476e-17 0 0 0 0 0 0 0 1.221784365e-21 0 0 0 0 1.831730725 2.976018247e-08 2.327327002e-22 0 0 0 0 0 0 1.573184304e-08 1.435341198e-28 53.87842321 0 1.197494915e-06 0 0 0 0 7.310483893e-11 0.03915213457 0 5.186871631e-27 0 0 62.67228343 0 0 0 0 6.337387524e-09 0 0 6.563347598e-44 0 0 0 0 0 0 0 0 0 7.973053379e-25 0.003108713013 0 0 0 0 8.106382363e-14 0 3.314941199e-10 0 0.005913997413 0 0 0 9.525678033e-27 0 0 1.238297943e-18 0 9.971698305e-20 0 0 0 0 3.322274628e-06 0 5389523.556 1478.187165 0 309.2632082 0 0 1.056417491e-17 0 0 1.602068942e-17 0 4.336001319e-25 2.078487009e-15 0 0.4397738303 1.902441089e-07 0 0 0 0 0.0003667112523 0 0 0 0 6.945268882e-19 0.5354624107 0 0 2201.511269 0 1.887448941 0 839618.4278 0 0.004460102401 0 5.348167217e-21 0 0 0 0 742.1706059 33.17663356 0 3.473403258e-07 0 0 6.987622556e-27 3.518422095e-13 0 0.2270068434 2.950347103e-05 0 1.843292407e-05 0 8.076249815 0 0 0 7799.963024 0 0 0 0 0 0 0 3.369175203e-23 0 2.420798666e-06 0 183525.8447 0 6.645883775e-08 0 0.1022647622 0 0 0 0 0 0 1.128318458e-08 0 0 0 0 0 0 0 0.001356652524 0 1.506953773e-29 0 0 0 0 0 0 6.455404784e-28 0 1.697905549e-07 0 0 0 272007.2718 0 0 7.980521411e-25 0 0 0 5.180859891 0 3.430502773e-13 0 0 0 0 0 0 0 0 0 0 9.882966016e-09 0 0 0 3.888015736e-29 0 0 0 0 1.228730013e-07 0 0 0 0 +0 0 4.040663206e-24 46.06144409 0 3.687787635e-20 0 2.723461767e-13 0 0 0 0 0 0 6.120790958e-23 0 0 0 0 0 1.867566486e-13 0 0 1.801286752e-21 0 8.806444989e-32 3.342843247e-17 0 0 0 0 401741.1818 0 0.8817168802 453197.2278 0 0 0 0 0 0 0 2209.793229 0 0 2.495265993e-24 4.129571253e-24 2.440714359e-11 0 5.494110829e-16 0 0 0 0 297.8148928 0 0 0 0 0 0 0 0 3.116392627e-11 9.772548069e-08 5.083141985e-20 3.052635029e-18 1.046731827e-12 0 0 0 0 0 0 1.011503191e-24 0 4.142251922e-11 3.146207502e-05 0 0 0 0 207.1282247 5.440756125e-08 227387.3669 0 0 0 0 0 0 0 0 5.088350838e-22 0 0 0 2.175146222e-15 316205.0538 1.17634432e-14 0 323613.3224 0 0 0 0 3.961946289e-10 0 0 8.951635892e-20 0 2.141103266e-28 1.858586635e-08 0 1.389918704e-12 0 0 1.112164623e-07 32053.68203 6.362398973e-28 3.44184847e-27 2.615891669e-08 0 0 0.2217717879 1737389.051 0.03813590455 0 0 0 5.34040375e-27 0 0 0.004900660098 0 1.187842876e-10 1.390907521e-05 0 3.88225195e-10 14618.01697 0 0 0 0 0 1.603647888e-27 0 0 0 8.552365888e-21 5.440958657e-25 1.595514644e-19 0.01012717349 1253902.945 3.748806576e-06 0 0 0 2.6416006e-21 13.10226714 2.613831504e-07 4.505495463e-22 1.682433359e-08 0 0.0001923619765 7.267826913e-10 0 0 0.0008392992334 0 1.265017374e-05 0 0 0 0 0 5.120522268e-05 0 0 0.002167495542 0 0 0 0 4.040188619e-07 0 0 0 0 0 0 0 0 0 0 0 4.060270319e-18 8.357876691e-10 0 6.422247423e-20 0 0 1.988324953e-09 0 0 0 0 0 1.887033971e-09 0 0 0 0 0.1535973761 0 0 0 0 0 10.52041345 0 0 0 4.500083616e-24 0 3.537628957e-11 0 0 4.919087661e-14 0 2.913365738e-09 0 0 0 0 0 0 0 0 0 1.414796097e-08 0 0 0 0 0 0 0 0 0 0 4.182245625e-08 0 0 0 2.007236647e-19 1.75052073e-07 0 0 0 0 0 0 0 0 2.476689111 0 0 0 0 0 0 0 0 4.565605318e-37 0 0 0 2.639082304e-27 0 0.214011946 0 0 4.587353147e-26 0 3.282449308e-11 0 913131.2523 0 0 0 1.086442779e-05 0 1.380035649e-22 1.057788765e-13 804.5751343 0 4.096735295e-12 0 0 +0 0 0 0 0 0 2.275448926e-13 0 0 0 0 0 1.641733289e-28 0 0 0 0 0 0 1.074144173e-44 0 0 2.100305841e-06 0 0 0 4.437903375e-17 0 0 0 0 0.3990620219 0 0 1.154419166 0 4.755803486e-20 0.00729883316 0 0 0 0 0.006435570929 0 0 0 1.853179548e-05 4.782571886e-14 0 0 3.768708918e-20 0 354579.5623 0 0 4.725463805e-12 2.25023247e-19 0 0 3.298188606e-34 0 5.94036688e-41 5.462791906e-05 1.176653139e-10 0 0 0 0.001467751522 0 7.286516893e-05 0 0 0 0 8.650013615e-07 0 0 0 2.39658489e-24 1.280487358e-32 0 0 0 8.22282244e-21 0 2.602655593e-19 1.665835184e-13 0 0 0 0 0 0 0 0 1.248167263e-31 0 0 0 0 4.086594003e-21 0 0 0 3.30186173e-20 0 0 2.134312282e-09 0 0 0 3.313301633e-12 0 0.7742650534 1.744220968e-22 6.366939078e-10 0 8.562722174e-28 0 0 1.387883172e-08 0 9.01830163e-11 0 0 0 807385.251 0 0 0 0 0 5.601138891e-25 4.383293219e-06 0 2.884431742e-16 0 0 0 0 7.038524025e-08 0 0 0 2.827341115e-17 0 0 0 0 0 0.04807766243 4.085242283e-23 0 1.084053359e-06 1.344737606e-16 1.64575921e-13 2.435603744e-26 0 5.065748958e-10 2.658978113e-32 0 0 1.770629413e-06 0 2.743531679e-09 1.661493797e-18 0 0 0 3.098086345 0 3.905150021e-22 0 0 0 0 0 0 0.0004283220254 1.826607394e-12 0 0.00338667439 0 1.077139323e-08 0 0 0 249000.5506 0 2.436963307e-11 15.24088037 2.915214223e-25 277.2461687 0 1.067022789e-16 0 0 0 0 0 6.476305715e-07 0 2.544678201e-14 0.02388012022 0 1.915464278e-07 0 0 0 0 0 0 0 9.398966393e-17 0 0 0 2.073994368e-13 0 5.042005992e-22 0.03098863833 0 9.848061175e-23 0.003049612454 1.528028488e-16 3.928603309e-07 0 0 3.527734774e-07 0 5.028730851e-18 0 0 0 0 0 0 0 0 2.906765662e-17 0.001083052386 0 0 0 0 0 0 0 0 8.760311996e-12 0 0 2.071102781e-11 0 0 0 0 0 291.4831334 0 1.269408178e-21 0 49.44431542 0 6.421782494e-14 0 0 0 0 0 0 0 0 3.534078357e-10 0 0 0 0 0 2.438333211e-06 0 0 0 0 0 0.009303547835 0 0 0 0 0 0 0 1.314983959e-23 0 0 0 0 0 0 +0 1.015073253e-26 13847.5725 0 0 0 0 0 0 0 0 0 0 0 0 4.205622056e-14 0 0 3.208942378e-13 0 6.772111705e-13 0.008035610435 0 0 0 9.866807633e-24 0 0 0 0 3.977768201e-23 0 3.300413839e-23 0 6.100715556e-24 0 158.1531779 0 0 0 0 0 0 0 9.429087039e-07 0 2.336798259e-27 0 0 0 0 0 0 0 0 0 9.480244836e-14 3.085644392e-22 0 0 0 0 0 0 0 3.193016212e-06 0 0 0 2.153249452e-13 0 0 0 0 0 0 0 731.8225794 0 0 0 0 535797.2843 0 1.216788541e-08 1.296414766e-12 0 0 2.066029006e-14 0 0 0 0 0 0 0 0 1.266234592e-13 0 0 0 0 7.497666406e-08 0 5.774195914e-43 0 0 0 0 0 6.543956484e-06 3.47345807e-35 0 0 0 0 0 3.648264371e-20 0 3.283636365e-15 2.177226001e-12 1.926081294e-32 1.126609692e-27 0 5.581240303e-39 0 0 0 0 0 1932.914542 0 0.02026275289 1.776531299e-18 0 0 0 0 0 0 0 0 0.0004756329164 0 0 0 0 0 0 4.605941082e-20 0 8.555416917e-23 0 2.026448923e-29 0 0 0 0 1.123823782e-09 0 0 0 0 0 0 0 0 1.440927493e-14 0 6.473388885e-18 0 9.237893859e-19 2.047650174 1.706809923e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 977013.9467 0 6.939349364e-12 0 9.89157638e-07 0 0.002695070197 0 3.856145399e-28 0 0.0004408944312 9.679361897e-16 0 0 0 0 0 0 0 5.110642168e-09 0.03351983962 0 0 5.082344323e-29 0 0 0 5.67885852e-11 0 0 0 0 0 0 0 0 4.941617306e-16 1.639986931e-15 901203.8226 1.15888813e-29 24.44771402 6.35398329e-22 0 1.525693131e-12 1141751.696 0.02761462493 0 0 0 934456.6746 9.799243889e-10 0 0 0 4.149018724e-13 0 9.752033528e-09 112560.029 0 0 5.032381171e-06 0 0 0 0 0 0 0 9.548284109e-24 0 0 0 1.083871627e-09 0.8556081081 0 0 53058.8174 0 11081.82623 0 0 0 0 0 0 0 0 0 1.851307408e-28 0 0 0 0 0 1.095441465 0.0001122387221 0 0 0 1.125213491e-12 0 0 0 0 0 1.282286609e-09 0 3.554282829e-26 0 0 0 0 +0 0 0 0 0 0 0 2.060227476e-07 0 0 1486.951971 0 0 2.841832574e-06 0 5.790370057e-07 0 0 2.409420177e-19 2.808981283e-07 0 0 0 3.377437881e-11 0 0 1848.079479 0 0 0 6.091977378e-23 0 0 0 4.137189253e-08 0 0 0 2074004.395 0 0 0 0 0 0 0 381547.2014 0 3.563480813e-36 0 0 0 1.606827151e-05 3.212853842e-27 4.892635785e-15 7.680082228e-10 0 18.4196169 0 0 0 0 0 0 13580.28079 0 1.423562938 0 0 0 0 0 0 0 0 3.341329079e-25 0 1.452027211e-15 5.860095138e-06 6.927821717e-12 0 0 0 0 0.01470709125 1.674072645e-11 2.086523226e-16 0 1.870949581e-18 0 0 34462.44247 1.811027853 7.488673313e-28 0.001896604051 0 0 1.406297508 2035.615978 4.840399415e-14 0 0 0.006411387714 0.007675707802 7.595182194e-28 1.919750502e-09 0 0 0.006734636935 0 0 0.0003406787624 0.1645657891 0 0 0 0 6.432847249e-07 32624.43935 0 0 0 206138.5792 0 0 0 9.874503365e-30 1.405186482e-20 0.3724743276 1.066618349e-33 1.588774603e-14 3.247183039e-28 0 0 0 3.865317132e-08 0 645274.2394 5.628438822e-13 14.38222673 0 5.226881138e-16 0 0.02044043552 1.198583876e-14 0 5.919363918e-08 0 0 0 0 0 0 0 4.6809743e-09 0 0 0 0 5.011686564e-07 0 0 0 8.629577346e-16 0 0 0 0 0 0 3.286384316e-08 72.26335933 0 0 0 0.000190228015 0 0 9.869029098e-34 1.660915809e-07 0 0 160589.4406 4012.983539 0 0 4746.869606 5.900003474 1.13160878e-22 0 0 1.121512941e-09 2.019880681e-14 2.560326527e-06 5.738112459e-15 0 0 2.37300519e-20 0 1.359504647e-06 1.924503393e-07 5.786430069e-21 0 0 0 0 8.170517328e-29 0 0 0.004377929915 3.154980548 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001023518092 0 1.960933151e-14 0 6.819273305e-22 0 7.670159131e-30 1.635962665e-23 0 0 0 0 0 0 0.0003479786039 0 0 0 0 8.855003849e-06 0 0 0 1.111406926e-17 0 6.967163964e-11 0 1.042903172e-06 0 0 0 0 5.565674763e-12 0 0 0 0.05327398143 0 0.05297889472 0 0 0 0 0 1.444787418e-17 0 0 1.524101692e-20 0 0 0 2.00138091e-40 0 0 0.00506422585 7.370398092e-15 0 0 7.1613316e-07 0 0 0 0 0 1.534365056e-13 0 1.24479462e-33 0 0 0 0 0 0 3.298258216e-08 0 33870.21925 +0 0 1.898854562e-29 0 0 0 0 0.0009787582072 0 0 364.614257 0 0 0 0 0 0 0 0 4.41933291e-07 0 1.580805673e-36 0 0 0 1.071749863e-25 0 0 0 0 0 1.542273609e-05 0 0 0 0 0 0 0 0 1.38454797e-23 0 0 0 0 0 0 0 6.567364136e-17 0 8.186690264e-06 0 0 0 0 0 2.605611533e-05 2.516281465e-05 0 0 0 0 0 0 0 1.620423853e-09 0.02001404522 0 0 178.1703045 0 6.745643868e-13 0 0 0 0 0 0 0 0 1.663698241e-24 0 0 0 0 2.881097807e-23 1353091.96 0 188019.867 0 0 1.328587712e-18 6.706757017e-26 0 0.07730852209 0 0 0 0 3442.615564 0 13503.83048 0 1.347273763e-08 0 0 0 0 0 1.585860723e-08 0 0 19331.61067 0 58.66382998 0 0 0 0 1.252689576e-17 9.865255632e-11 0.002834499623 0 7.937280492e-18 9.194411875e-27 1.615045902 2.130791194e-30 0 0.0009101754527 6.462921984 0 0 0 4.618565933e-09 0 1.867652035e-09 2.074281589e-27 740255.4585 0 3.870592024e-07 0 0 0 3.176206833e-21 0 0 9.83230102e-25 0 1.712557436e-14 0 11416.99398 3.882608477e-18 1.958480831e-19 0 0.0003484987347 0 5.199278939e-13 8762428.09 0 5.827943568e-23 1.309333399e-06 0 0 0 9.040344502e-07 1.051697636e-08 0 0 0.06131438092 0 0 1.50170976e-11 764030.6971 0 0 0 0 0 5.126537025e-07 0 5338.638848 9.894903631e-07 0 0 0 162912.5863 0.00176576114 0.007270790004 0 0.0002626700991 0 1.062241316e-09 0 0 2.298396596e-05 4.186748548e-26 0 0 0 0 4050.636799 1.81675643e-05 1.382488468e-22 0 0 2.666641899e-16 0 0 0 0 0.03624856321 0 0 0 0 0 6.212408661e-05 0 2.554087116e-09 5.022285943e-13 0 0 8.88794363e-06 2.024759595e-13 0 0 0 0 6.637785549e-28 145.0101635 0 63.29332553 381559.4091 0 0 0 0 0 0 0.0001645063038 0 0 0 0 0 0 0 0 2.52904906e-09 0 0 0 0 0 5.228163955e-08 4.767923423e-13 0 4.285612291e-30 0 4.165936706e-07 9.91544079 0 0.0001849076619 0 0 0 0 0 0 0 0 5.985447735e-20 0 0 0 0 0 0 0 0 5.988129665e-25 0 0 1277226.162 0 4.532560475e-08 0 0 0 5.144848335e-22 0 0.3668816611 0 0 8.161169244e-17 0 0 2.248043351 0 0.6455576978 +0.02484020134 2.03580719e-21 0 0 0 0 0 0 0 3.120035792e-24 0 0 0 1.37405902e-41 0 0 0.0198012639 0 0 0 3.572691694e-29 0 0 0 0 0 270.1336929 30.4450259 0 0 0 0 0 0 0.003705841586 0 0 0 0 0 0 19.98874471 0 0 0 0 0 0 121010.473 0 0 0 0 0 1.295107431e-09 0 0 0 0 0 0 0.0002249343417 0 134.8531597 0 0 1.750964238e-05 0 0 0 0 0 0 0 0 1.170605925 0 0 3.484479103e-13 0 4.559293465e-08 0 0 0 7.108310349e-15 0 0 0.2273592655 0 2.959963318e-19 0 0 1.289014241e-20 4.402366935e-08 0 0 3.523986352e-32 0 3.646983482e-08 0 0 1.161884184e-09 0.1151382143 0 0 0 0 0 1.539712202e-29 0 48114.36727 0 0 0 0 3.385711684e-10 0 19.2053024 0 0 83852.70435 0 1.559818433e-10 0 0 0 7.741954938e-26 0 0 0 2.258247638e-19 1.853035132e-33 4.656487651e-23 4.522690079e-25 0 0 0 0 0 0 0 312329.7687 1.552129988e-18 1.566930453e-13 0 6372.586417 0 0 0 0 1.315351815e-18 1.229904386e-08 0 2.173846816e-09 0 0 0 0 0 0 0 0 1.354696951e-20 0 0 0 0 0 0 0 3.507163896e-16 1.346937821e-06 4.973673685e-15 0 0 0 2.963049199e-10 0 0 0 1.513962829e-16 4.230948665e-22 0 0 0 0 0 6.397390677e-28 2.639652066e-12 0 0 0 0 3.506459432e-35 1.10264024e-11 0 0 0 0 0 0 0 0 0 0 0 0 3.635958532e-10 0 6.178135444e-07 0 0 0 0 0 0 1.741092266e-08 6.926373369e-05 1.107061777e-29 0 2.47746603e-09 9.015873116e-08 0 0.001776561939 6.635453502e-25 0 0 0 0 0 0 0 0 0 0 0 0 0.448059173 0 0 0 0 2.099984903e-26 1.591930883e-22 0 0 0 0 0 420.0260756 1.678438234e-23 0 4.92374544e-08 0 0 0 0 0 0 0 0 0 0.126538292 0 0 0 0 0 0 0 0 0 0 0 1007.673776 4.429848088e-19 0 0 0 0 0 0 0 0 0 168786.1172 0 0 0 0 0 1.752302855e-10 9.334436543e-33 0 0 0 0 0 0 4.694428574e-05 +9.537879628e-11 0 2.672718543e-22 3.199549059e-08 0 0 2.038625787e-08 18957.52348 0 0 0 2.999711891e-09 0 0 0 0 0.02460615241 0 0 1.01053678e-15 0.01201851271 0 0 4.523734002e-26 0 0 239073.7658 2.781676642e-05 0 0 0 33098.40244 0 0 0 0 0 0 58733.36175 0 0 2.746596871e-08 0 0 0 0 0 0 6.968091854e-12 0 1.098887783e-05 4.727131915e-15 0 0 0.0009174034129 5.678504423e-22 7.963084641e-18 0 0 1.880005884e-32 0 0 389922.5023 0 102.4533628 0 0 0 0 0 0 0 0 7.526675182e-10 0 2.165258596e-07 1.746438816e-13 0 6.664087413e-10 6.182378388e-27 0 0 0 0 6.354641435e-29 0 0 0 0 4.121981515e-24 5.050377753e-11 0 2.070973431e-12 0 0.002697430095 2.389700628e-06 2.475494246e-18 0 0 8.980308073e-09 0 0 1.829276679e-09 3.000081922e-08 100.7003135 0 0.3270106717 0 2.072957459e-16 0 0 1.432925192e-48 1.006927492e-30 8.506064216e-28 0 2053425.636 1.491199563e-10 0 3.103995874e-14 0 0 8.651077975e-10 0 236456.9603 0 0 5.85719201e-15 321.1516272 0 0 0 0 3.190268332e-12 0 1.062796576e-07 0.905876318 0 0 0.005077794275 0 0 0 8.411292071e-18 0 0 9.510275706e-09 12812.72342 0 0 2.922819917e-27 0 0 2.364757292e-22 1.740867157e-08 0 0 0 1.739949788e-13 0 0 0 0 0 0 0 1.344775775e-22 1.290701421e-21 0 381.7509474 0 4.214892854e-29 34339.07558 2.395098075e-22 0 0 1690977.892 0 0 0.06712148997 0.03150017064 0 1.206081434e-13 0 0 1.064985158e-31 278024.1668 0 0 0 132325.5038 0 202535.2653 0 0 0.00215927457 0 3.521252842e-23 0 0 0 0 0 4.532063414e-07 0 3.614893815e-10 2.990995326e-06 7.966447564e-12 0 0 0 1.718952618e-14 0 0 0.003910059874 27102.50416 0 1.60438514e-26 0 2.032806915e-07 0 0 0 0 0.02595918267 1.08300056e-08 0 0 0 0 0 0 1.142452095e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.495753048e-06 0 0 0 0 0 0 0.0001263815315 0 0 0 1.645529264e-11 0 0 0 924.5381017 0 0 0 5.6545781e-16 0 0 1.376141447 1454554.782 0 1.13144464e-11 0 0 0 6.130908523 3.649068951e-09 0 0 0 0 0 0 0 0 0 4.333206205e-11 0 +5389.801017 0 0 0 0 0 0 8.056478259e-07 0 0 18.20403247 0 0 0 0 0 0 0 0 0 0 0 0 0 2.61965548e-11 5.735747379e-21 0 0.03791584177 0 0 357.3868638 0 0.006883083261 0 2.161524973e-20 0 0 0 0 0 1.505175544e-12 0 0 0 1331.087939 0 1.833883597e-05 0 0 0 0.7992807042 0 0 0 0 0 1.515041355e-07 0 2.326734825e-13 0 0.7395199412 0 0 0 8.57874141e-22 0 0 0 0 0.001787993725 3.737676135e-05 0 0 0 8.293824809e-09 0 0 0 0 0 0 0.00675408313 4.798758042e-28 0 0 0 0 0 0 0 0 0.001212284968 0 0 2698372.897 0 0 0 0 2.842313958e-14 0 0 0 236316.2107 0 1.008554196e-06 0 0 0 0 0 0 0 143384.3971 0 5.84972089e-25 0 0 6.143741804e-17 0 4.43008689e-06 0 0 0.3333445714 0 1525.656925 2.824794382e-10 0 1.262428041e-22 0.002229438649 0 0 0 876676.3695 0.0001432800197 1.971183438e-07 0.03118453069 0 3.820421478e-12 4.199164227e-07 0 0 4.516769504 0 0 1.243350933e-07 0 0 0 0 4.731564728e-09 0 47655.9365 0 8.544113163e-36 0.07857130144 0 1.044591684e-16 0 0 0 5.906963688e-12 0 0 1.067516394e-07 0 0 242.4916538 0 0 0 0 1.411571693e-15 0 0 0 1.366639698e-21 0 0 1.659216924e-13 0 160390.9899 0 0 0 0 0 0 0 0 1.85996118 453.5598592 0 958.8013837 1199.704725 0 0 0 0 0 0 0 0 0.2731102427 0.0007832511564 0 2056.939564 0 0 0 0 9.947093929e-13 0 0 0 0 0 0 0 0 0.0001656443753 2.437446052e-27 7.081394601 0 0 0 0 0 0 0 0.005243808831 0 0 1.878033024e-22 0 0 0 0 0 0 1321.205777 0 0.01118376642 7.655870949e-27 0 0 0 0 6.640269898e-07 4.903360978e-19 0 0 0 6.75151235e-19 0 1.043000883e-05 0 0 5.19376894e-19 0.02112194226 1.739750393e-10 0 0 0 0.004231652589 0 1.939548158e-17 0 0 0 5.987118152e-31 0 0 0 0 8.069000995e-19 0 1.074679642e-16 0 0 1.166441919e-19 0 0 0.03357842634 0 0 0 1.164099629e-14 0 0 0 0 0 0 1.346701157e-24 0 0 0 0 0 +0 0 0 0 618.0973448 8.379513589e-05 25.57845531 0 0 4.598825901e-20 0 4.688246994e-16 0 0 0 0 0 0 0 0 49955.75045 1.430133208e-14 0 5.588894488e-23 0 0.7504251226 0 0 0 0 0 0 0 0 0 1.416426876e-12 0 0 5954.289275 0 2.167667152e-36 0 0 0 5.067519225e-17 0 1.047899861e-07 0 8.02468948e-07 5.904898699e-05 0 0 0 0.001889903446 0 0 0 0 0 0 0 1.277700823e-15 0 0 0 0 0 0 2.141097666e-18 0 1.559565814e-07 2.210883049e-06 0 0 0 1.999550344e-21 2385.435098 0 0 0 0 0 0 0 0 5.633743269e-09 0 0 0 2.42598179e-16 5.310610568e-05 0 0 6.873973603e-19 0 25211.7587 7.186965843e-20 0 4.822976761e-08 0 0 0 57900.9036 1.680838073e-18 0 1.381027843e-08 4.263777095e-13 0 185.1552765 0 0 2.271613764e-13 0 0 0 0 0 0 2.007768606e-12 0 0 0 129835.3683 7.423648468e-18 0 5.202420862e-07 0 0 9.095564467 0 0 2.247341432e-27 4.410913033e-09 231.3684469 0 0 0 6.486547816e-15 2.780149927e-16 0.0001102620151 1.699186861e-18 6.975405383e-13 0 0 3.347820037e-14 13825.58915 0.3713258642 0 1.449941212e-11 0 1.147526642e-08 0 0 723.4026722 9.440518518e-12 0 0 0 0 5.168906967 1.87722196e-18 0 0 2.476823955e-25 0 0 5.432785583e-19 2038.998384 4.006838929e-24 0 0 0 8.655213895e-06 0 0 1.180295924e-30 0 0 0 0 2.114904315e-20 1.414447956 0 1.155067987e-29 0 0 0 60.64054843 1.762553466e-10 0 7.284395157e-15 83.22740498 0 0 0 0 0 0 6.467814214e-20 0 0 0.0006041382691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.159631329e-10 52256.84947 0.004140053428 0 0 2.885587606e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1706241361 0 4.261281427e-26 0 0 0 476379.0654 2.162328602e-13 2.18730584e-18 2.825496293e-22 0 0 0 7.644407542e-08 0 6.238181503e-09 1.198919745e-31 0 0 4.060018222e-11 0 0 0 2.270391325 0 0 2.490136234e-30 0 0 1.026992117e-10 1.00724541e-27 0 0 0 0 0 1.089653691e-17 0 0 0 0 0 6.193779614e-15 2.033911052e-25 0 0.0001213104605 0 0 0 0 0 2.559348282e-36 0 0 0 27403.63427 0 +0 0 0 0 5.306837425e-10 0 6.397327667e-23 0 2.022756151 1.422215404e-19 4.801853586 0 0 0 0 0 0 0 0 3.501250541e-13 0 0 2.107870979e-17 0 0 0 6.069743147e-20 379.7033822 0 0 0 0 0 0 0 0 0 2.35957923e-13 0 0 0 16.8696949 0 7.955352008e-15 0 0 0 1.464155176e-15 0 0 0 0 9.347332003 9.562532345e-14 0 0 0 0 7.425778854e-19 0.9793879406 0 0 155926.295 0 0 2.08597995e-24 6.997667606e-12 0 0 4986.486858 0 0 0 0 0.1128015973 333872.4186 948.5192251 5.208064053e-11 0 0 0 0 1.490902455e-27 4264.291227 0 6.095986343 0 0 0 0 0 0 0 6.161743935e-23 0 0 0 0.0001374302363 0 0 1552089.739 40.00122057 3.384804302e-21 0 0 0 1.311688129e-08 0 0.0008801499568 3.706790181e-13 0.4674096156 3.354125933e-11 475.0087958 0.0003852879104 1.180546748e-35 0 0 0 8.520399384e-06 0 0 0 0 0 0 0 0 0 0 0 1.488707265e-09 0 0 0 1.870039373e-09 0 0 3.174255457e-10 3.990751442e-26 154839.1347 0 7.260780292e-15 6.936391598e-17 3.354143595e-16 1.628296376e-11 1.514214502e-27 1.168562043e-10 0 6.829646041e-11 0 5.267768851e-12 2.054840321e-20 1.717301628e-18 0 1833881.708 0 2.418904008e-26 8.093996703e-26 0 0 0 13016.50636 0.01470938058 0 0 0 0 0 0 535179.0807 0 0.0340318057 0 5.492307546e-06 0 211636.908 0 0 0 0 0 0 0 0 0 3.237619018e-11 7.685333257e-13 1.318619643e-19 0 6.044843767e-06 0 0 0 0.01925296051 0 0 1.032326892e-10 7.514161927e-10 6.609167754e-13 0 0 0 1341.23795 0 2.044119927e-05 3.532886981e-24 2.316853668e-13 0 0 0 0 0 1.321447919e-13 0 0 5.676312501e-14 0 0 0 0 0 0 0 0 0 0 0 0 0.001814015157 0 0 83071.98949 0 31.83103229 0 0 1.604421223e-05 0 0 0 0.0002538587546 0 0 0 0 0 0 0 0 46.01652502 0 0 0 968238.0609 0 4.787863708e-18 0 0 0 0 3.234497327e-13 6.406596518e-05 1.048861924e-21 0 9.92781939e-18 0 0 0 0 0 0 1.307858286e-22 0 0 0 0.06650533537 0 0 1.680745822e-06 0 0 0 0 3.610664416e-14 0 0 0 0 0 0 0 4.49883142e-08 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1.029888556e-14 0 0 4.286673486e-22 0 0 0 0 0 0 0 0 0 0 0 0 95.54062199 0 0 0 0 0 558.8817278 0 18.56456699 6.152593838e-27 0.0001299512954 0 0 0 0 0 0 0 0 0 0 1.335343159 4.70230501e-07 1.144594227e-05 0 0 0 0 0 0 0 6.532781638e-05 0 0 0 0 0.7102926159 0 2.041106171e-07 3.080111171e-09 1.494478601e-06 0 0 3532.511387 0 0 0 0 1.27186291e-05 0 1.326561701e-17 0 0 158055.0012 0 0 0 0 0.05190185593 0 0.004504408782 0 0 0 0 0 3.259330198 0 6.069486086e-11 0 0 0 0 341991.8727 0 0 0 0 0 0 0 1.38488839e-22 0 0 0 0.8993707863 0 0 4.546496839e-20 0 0 1.024881104e-15 0 0 2.245513055e-15 0 0 0 0 0 0 0 0 4.136594449e-13 0 0 0 0 1.463687114e-10 0 4.348905635e-17 2.078290106e-15 4.310558173e-13 9.256120933e-16 0 0 0.03764780841 0 0 0 0 324.0340001 6.034423253e-07 3.737520804e-12 0 0 23465.01337 0 1.441186305e-11 0 0 0 0 147.8355819 2.059434203e-12 2.83573102e-21 9.548523263e-07 2.843752795e-10 0 0 1.211731008e-13 1.786543299e-26 0 2.758333234e-18 0 0.001413418938 0 3.525482451e-19 0 0 0 0 7.235524059e-06 0 0.000862823851 0 5.447767045e-17 0 1.254880837e-14 0 0 7.912850167e-06 0 0 0 1.432669251e-14 962.8013703 1.579396766e-07 0 84.08098537 0 7.506605435e-11 0 7.127788377e-33 0 0 0 0 0 0 0 0 0 0 1349.453476 9.599966617e-10 1.752927896e-17 0 0 0 0.4168500071 0 0 0 0 0 0 0 1.216915893e-14 1.415469121e-26 0 0 0 0 0 5.415551299e-09 0 0.1666156615 0 0 8.472132865e-15 0 0 0 0 2.726853645e-08 0 0 0 0.0002309243182 0 0 0 0 5.421679393e-25 0 0 0 0 0 0.00637074831 1.709573586e-32 0 0 0 0 0 0 0 0 0 0 1.178937113e-13 1.154134831 16.00538683 0 0 0 0 4.480782974e-10 1.516263317e-12 0 0 0 0 0 0 0 0 1.944854299e-06 0 0 0 0 0 9.523713807e-27 71320.65503 0 0 0 0 0 1.551251913e-07 0 0 +0 0 0 0 0 0 0 0 0 0 3.46781708e-08 0 0 0 0 0 0 0 0 1.265706689 0 0 0 0 1.508704145e-25 0 0 0 0 0 0 2.140474872e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.101433483e-15 0 4.597685711e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.183603806e-24 0 0 0 1.052509748e-05 0 0 0 4.33211843e-13 0 0 0 0.0001102022501 1341.488048 0 0 6.668808389e-08 3073007.799 0 8.294309901e-13 96.3794034 0 0 2.033403574e-26 0 123.5541516 0 7.723341055e-10 0 0 0 0 0 1652133.066 0 0 1.940931638e-15 0 0 0 0 0 2.429330253e-10 0 0 0 0 0.04295081138 9.138021465e-23 728.4137178 6.358439329e-12 0.0002723402612 0 0 0 1.781590232e-08 0 0 2.325654885e-08 0 202497.308 0 0 0 2.512212616e-06 9.708882905e-26 10.09987104 0 5.527309369e-26 0 0 19.01584825 8.771398028e-05 5.970765193e-18 3.538916142e-16 0 0 0 0 0 0 3.172893375e-29 0.07464283792 0.005637694392 2.043705006e-18 0 0 6.857311756e-21 0 0 0.0001535270908 0 3.47601415e-26 0 0 0 0 0 0 0 0 0 3.225118104e-29 0 0 0 0 0 0 3.723011367 0 1.21377487e-21 0 0 1.240473843e-07 0.03074995877 0 0 0 0 3.678257519e-29 5.018170471e-11 0 4.699603626e-15 0 0 0 0 0 7.526441289e-05 1.84115003e-13 0 0.004030474464 0 9931.689587 0 0 4.486202682e-36 0 0 1.104389798e-27 0.1553163412 5.169674987e-28 0 2.121715607e-15 0 0 0 1.31291849e-20 1.320459668 2.911818817e-13 0 0 0 0.0001009729324 0 0 0.005987554012 0 0 6.300400812e-06 0 0 0 0 0 0 0 0 3.424134903e-13 0 0 268689.2631 0 1.719819469e-12 0 0 5.748889956e-07 0 1.447378869e-08 0 4.836449594e-26 0 0 1.819945577e-12 0 0 3.089808378e-13 0 5.157159357e-08 0 0 0 7.882494558e-20 1.572248596e-09 0 0 0 0 0 0 0 7.471498132e-27 0 0 0 0 0 0 1.51516242e-05 0 0 0 2.915044603e-11 0 0 0 0 7.584486787e-40 8.893363679e-19 0 0 0.0004287859283 0 0 0 0 0 0.003095344763 0 0 0 1.501899817e-05 +5.472284832e-27 1.540219683e-30 0 3.894879807e-08 0 0 0 7.306657369e-13 7.252994863e-12 0.000160307333 0 0 0 1.363239527e-12 0.0859104939 0.001073463897 0 0 0 0 0 0.0001669399972 0 204.4876649 0 0.0003586856013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5841.4954 0 0 0 0 3.222304915e-29 0 0 0 0 0 0 0 0 0 166.4951504 0 0 0 1.494724192e-09 0 0 1.167508753e-10 0.4460343754 0.001260682519 0 0 0 0 0 0 0 4.103707855e-08 0 0 0 6.323138453e-06 0 0 0 0 0 0.0001291923439 0 3.977942747e-11 6.150485489e-10 1.653980845e-19 0 2.379478257e-26 4.099820291e-10 0 0 0 0 0.0002739974374 0 11.60618051 0 1.431211289e-13 0 0 0 0 2.333329404e-10 0 0.2517130746 0 0 0 0 0 0.0003901023058 24.62399351 6.774050346e-08 0 0 215330.7834 0 0 0 2.910493224e-27 3387.435084 0 3.782548954e-05 0 0 0 2.055853139e-14 0 2.343836346e-24 2.566242725e-10 0 1.21952046e-39 0 0 7.771223529e-19 0 0 0 1.367784192e-10 0 0 0 0.8190763265 0 0 0 5.102015265e-18 5.089049099e-10 0 0 0 0 2.187751107e-15 9.53735959e-14 0 0 1.02115706e-08 9.476341009e-06 47.31716285 0 0 0 0 1.260138752e-09 0 0 3.365122181 0 1.180458197e-12 56496.34088 0 2.565082404e-13 0.002049376935 0.2308926293 2.237774705e-09 0 0 0 0 0 0 8.330861658e-07 8.296417249e-08 1.886925576e-26 0 0 0 0.1371026631 0 0 0.03238006727 0 0 1.434065252e-17 0 0 17255.01007 1.631144887e-10 0 586.7769036 1.662211917e-19 1.239828242e-10 0 0 2.586717616e-10 0 1822488.171 0 0.09204881957 4.191842283e-25 2.807524945e-05 0 5.898007684e-05 364875.1908 0 5.253974394e-21 0 2.8461482e-06 0 0 5.440255506e-13 0 0.0001115448773 0 1.325048002e-34 0 65395.6283 0 0 0.03367240639 0 0 1.0385138e-08 0 11.79978345 0 0 6.781262879e-07 0 0 0.001479031528 0 0 0 0 0 0 0 0 2.779610956e-08 0 0 5.499190092e-13 0 0 6.931120186e-16 0 3.686340703e-25 0 0 0.0009911461104 2.409112699e-17 0 0 0 0 5.839004734e-10 0 0 222251.1886 0 0 0 0 0 0 0 0 5.971313506e-14 0 0 0 0 0 0 0 7.980627556e-18 0 0 0 0 7.636306021e-13 0 0 0 0.1626728948 0 +0 1.579819967e-07 0 0 0 0 0 0 0 0 0 0 2.252874621e-21 0 0 0 0 8.346449045e-05 0 0 0 0 2.834748934e-13 0 0 0 2.257784737e-09 0 0 2.42059053e-38 0.1917630663 0 0 45.96071077 0 4.533825293e-14 0 0 0 774.0197751 0 0 2.394302166e-24 4.538654404e-13 2.681308461e-07 8.651738352e-21 50.46465682 0 0 0 0 0 0 0 0 88.27813151 0 0 0 0 0 0 0 0 0 4.228264444e-22 0 0 0 4.08238322e-07 0 0 1.404614656e-17 0 0 9.315039837e-06 3.300238537e-19 0 0 0 1.053946915e-07 0 0 0 0 0 0 0 3.732716387e-19 2.501828866e-19 0.05281968413 1.547392504e-27 0 0 0 1.904721358e-20 3.391201015e-17 0 0 0 9.484273281e-07 9.557792087e-17 0 386747.8633 0 0 0 1.544619162e-11 20.65263123 0 2.057600929e-24 0 2.679101048e-06 0 1.277874387e-05 0 6.261603784e-22 0 0.445632138 4.387510134e-18 1.490130345e-12 0 3.334466758e-27 1.727243216e-30 0 0.0008386364527 0 0 8.164463368e-16 7.716188705e-38 0 0 0.001087641837 1.536058073e-19 0 0 0 0 102434.074 9.307740966e-27 7.00285989e-13 5.289018657e-22 6.315428262e-06 6.88635813e-12 1.032258802e-07 0.0001535398784 7.864230213e-23 0 0 0 1.986536218e-07 0 0.2880218605 0 2.562861689e-10 0 0 0 2.68211954e-24 0 0 0.002393315201 9.151168818e-13 8.504097536e-10 0 0 4.589576551e-09 0 59.96245129 0 6.035188977e-25 1.055898566e-25 0 0 0.001618780385 0 0 0 4.539862433e-15 0 0 0 19715.34411 0 0 5.136040079e-07 0 0 0 0 0 8.402177239e-10 0 0 3.073288109e-20 0 3.763463941e-10 0 7.370281214e-12 0 0 0 0 0 9.083408623e-19 0 0 0 0 0 1.869570579e-13 0 1.81024886e-18 0 0 0 0 0 1.305577979e-12 2.157144595e-17 0 0 2.824561053e-05 0 0 0 0 0 0 0 0 2.107984837e-25 0 2.240623836 0 0 0 0 0 0 0 2.649732594 1.462097955e-12 0 1516449.085 0 0 0 0 0 1.819411393e-31 0 1.676333533e-12 0.02889657144 0 0 0 0 0 0 1.370245431e-07 0 9.858552247e-16 0 130454.173 0 0 0 0 0 362.1775083 0 0 0 0 0 0 0 0 0 0 0 0.0003292284174 0 0 0 0 10407.5614 0 0 0 0 0 4590.04238 0 0 0 1156781.419 0 0 +0 0 0 0 0 48131.96551 0 0 2.283115653e-18 0 0 0 0 106472.2738 0 0 0 0 0 0 0 0 0 0 0 0 0 159328.5005 0 0 0 5.084364228e-20 0 0 0 0 0 0 0 0 0 78.18220746 7.59431547e-27 0 0 2.179135251e-09 0 0 0 13091.37298 3.184899775e-26 7.275313173e-15 0 412252.8233 6.784586722e-06 0 0 0 0 0 0 0 0 0 0 1.718918199e-13 0 22305.13692 0 0 2.292308086e-18 0 0 0 0 0 0.009947519389 0 0 0 1.354111685e-06 0 0 0 0.01932213345 0 0 0 0 0 0 0 1961082.864 5.307996004e-10 0 5.749829858e-11 0 0 0 0 0 0 0 1.023661295e-21 9.75915641e-16 1.229092521e-06 0 1.229718348e-07 0 0 2.158549885e-09 0 0 0 9.882370209e-11 0 0 0 0 0 0 0 0 0 1.968351323e-10 0.6955653324 0 4.941279846e-09 39854.44955 1.593271459e-24 0 175060.8601 2.70913343e-14 0 3.870338481e-18 3.186953802e-18 0 9.168531028e-06 0 0.003257736166 0 3.421715218e-37 8.70886742e-19 0 0 0 2.216384081e-18 2.439981845e-22 1.365826176e-25 0 15.99534012 8.886349701e-22 0 0 0 0.561767497 7.947560964 0 1.245553557e-09 0 5.24837794e-24 113414.7456 9.219373172e-06 0 1.207854389e-14 0 0 1.08221977e-17 0.6328119229 0 0 0 0 0 0 2.831271631e-10 0 108.1756816 0 0 0 2.456347101e-09 0 0 0 0 0 0 0 7.128085797e-10 0 0 0 0 0 0 1.513673479e-08 0 6.037724266e-10 2.030624668e-19 0 0 2.168510442e-40 3.616978767e-10 0 0 0 0 0 0 0.03234021033 0 0 0 0 0 0.0002842625783 0 0 0 0 0 0 0 0.0004746394316 0 0 4781.547532 0 0 0 0 1.731271213 0 0 0 7.095505174e-10 0 0.09430663152 0 0 2.616351159e-06 0 0 0 1.973883061e-09 3874.554279 0 0 2.375240315e-21 0 0 0 60.34665216 0 1.147233757e-18 0 9.570225124e-19 0 0 0 0 0 0 0 0 0 5.790613447e-15 0 0 7.688126547e-08 0 7.012723766e-10 0 0 1.873747301e-43 0 9.89736413e-22 0 0 0 0 1.922575514e-16 0 0 0 1.097027607e-10 0 2.752665262 0 9.101741592e-16 3.901019174e-21 0 0 0 0 0 0 0 0 +0 0 0 1.880842484e-08 3.094968412e-23 2.413365867e-30 0 0.05466560578 0 0 0 0 0 1.141446401e-12 0 481198.0152 6.455387807e-09 0 0 0 0 0 0 0 109980.2259 8.308858725e-06 175.192281 0 7.251134941e-13 0 7.840240564e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 1.293462192e-10 0 0 0 1.22267318e-05 0 0 0 0 0 6999.163304 0 7.327304745e-09 0 2962.061508 0 0 0 0.04146307281 0 0 0 5.547059068e-06 0 0 4.36890128e-25 1.030919965e-15 0 0 0 0 254979.7182 0 1.034425586e-27 0 0.5018700509 0 0 0.04666874041 0 7.253652265e-11 2.643693472e-10 2.22074255e-17 0 0 0 0 0 6.955504484e-27 45431.1236 5.996028693e-13 0 9.800478325e-19 1.358204723e-06 0 2.479160444e-11 7.734561375e-30 0 3.937720976e-17 0 3.017709362 0 0 0 8.203384554e-26 8.42538411e-29 0 0 0 6.037730884e-07 0.0001546688011 0 0 0 877125.8674 1.81426075e-06 19.2404934 0 2.45717574e-07 5.893216336e-21 0 0.03220648976 1.484695667e-10 0 0 3.797096732e-10 0 0 0 0.4249468579 0 0 0.05488138718 0 1.126770943e-10 4986901.612 0 0 0 0 0 0 0.005264591506 0 0 5.536884732e-19 1745.968736 0 0 0 0 922607.0136 0 0 0 0 0 0 0 3313.742607 0 369595.4735 0 0 0 518.663257 0 1.340413913e-28 2.913934162e-15 1.536231795 0 3.080888169e-05 362.2984927 0 7.1662038e-11 0 1.524251455e-06 4.707184976e-31 1856247.464 0 0 205291.2262 0 0 0 4.733555345 0 0 2.876644677e-12 0 0 0 0 0.001107647008 0 0 9.107490226e-07 0 1324369.551 7.011098994e-10 0 0 0 0.4409533536 0 0 0 0 0 0 0 133504.7895 3.695100806e-21 0 0 17431.2146 0 4.597900458 173.4099248 0 0 0 0 0 0 4.537581416e-16 635835.6634 0 0 1.253158031e-10 0 0 0 0 0 5.065021875e-21 0 7.908997638e-26 0 0 0 0 0 0 2.995254284e-08 0 0 0 0 0 0 510749.1406 3.292100871e-11 1.545570885e-05 0 0 0 0 1.942317841e-16 0 0 0 2.294575673e-28 0 1.075087368 0 0 0 0 32117.42361 0 0 0 0 0 0 0 0 0 0 0 0 1.113504012e-08 0 5.788235914e-12 0 0 2.368531676e-25 18.53230854 0 0 0 0 0 6.745264402e-06 0 +0 0 0 0 0 0 0 0 6.823903816e-13 0 5.150147011e-09 0 0 0.0145042095 0 0 3.712114651e-10 0 0 0 3.28330016e-09 0 0 0 0 0 0 0 0 0 1.904816615e-06 0 25755.66393 0 0 0 0 0 0 0 0 0 0 1.073618973e-12 0 0 0 0 0 0 0 0 0 1298538.045 0 0 0 0 0 0 0 826254.5281 0 0.007252436881 0 0 0 0 0 0 0 0 0 9.187796972e-13 1.704057813e-14 1.571920731e-16 0 0.007367208382 0 0 0.5971601265 1.166110333e-15 0 121.5855738 4.610048628e-10 0 8.902437018e-11 0.0427346773 1065799.236 0 0 3.911599046e-29 0 0 0 2259.678649 1.270285202 6.220556741e-12 0 0 0.2739887013 80836.81282 0 3.089980568e-06 6.942527531e-06 9.771607772 0 7.861648388e-11 1.04663202e-05 0 2.618368423e-07 2.286001435 0 0 0 0 3.558375151e-27 0 0 0 0 0.01368390156 0 22865.67952 0 1.606367892 1.464837544e-15 0 1.290986439e-07 6.90473227e-21 0 1.148860127e-09 0 0.606521378 4.979385644e-17 0.003393451449 0 9.435065151e-22 0 0 0 0.007832494083 0.5711424621 0 8.572295971e-21 0 0 3.801073538e-13 0 1.04192165e-13 0 0 0 0 3.331684327e-05 0 0 0 0 1.450965414e-16 4.348614151e-14 0 0 4780035.872 0 0 0 0 0 0 0 4.032838985e-07 1.721638167e-19 0 1.885635339e-05 0 813680.2063 0 4.865816381e-05 0 0 4.287007135e-27 3259.309682 1.046002475e-40 0 0 0 0 0.08755739881 0 0 0.0008165190399 3.579736119e-19 0 0 2.107145706e-09 0 0 0 1.123561443e-09 0 0 0 0 0 0 0 0 7.868330014e-14 580.8315089 0 0 0 5.92626998e-10 0 6.108275696e-06 0 6.579479286e-21 0 5.862048713e-09 0 0 7.395444749e-19 0 0 0 0 0.005162552315 0 5.087599866e-14 0 0 0 0 0 0 0 1002656.231 0 0 0 0 0 1.811084462e-23 0 0.01066420431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.236694491e-07 0 0 0 0 0 0 0 0 2.654070043 4.368106095e-16 0 1.452520905e-06 0 1.221667694e-12 2.296770268 0 1.022922969 0 0 0 2351268.177 0 2.691442697e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9.623054051e-08 0 0.004494228417 0 0 0 3.171625401e-14 0 2.153690149e-26 0 0 0 0 0 0 0 9143.124297 0 0 0.3295961585 0 0 0 0 9.648776389e-11 0 0 0 3.789261322e-22 0 1.128563096e-24 0 0 0.001363106703 0 0 222.6821337 0 3.64487868e-19 0 0 0 3.93834863 3.843518088e-05 0 151737.8041 3.236658546e-08 0 0 0 0 1.812324197e-21 5.755987559e-15 0 3.025558991e-06 0 0 0.002656483921 0 4.096067737e-12 0 0 0 0 0 0 1.934516807e-11 0 0 0 0 0 3610174.965 0 0 1.617479837e-05 0 0 5.222679372e-14 79252.40541 0 0 0 2.207326845e-17 1.259901578e-21 0 0 0 0 0 0 0 138.3529173 0 4.231860858e-13 2.836706248e-17 0 1.945605569 0 3.007814654e-06 0 0.2281547281 0 0 0 15.49962169 0 0 0 37905.11818 4.25109393e-07 3.569343722e-10 1504.276089 0 7.657408591e-15 0 0 0 0 0 0 0 0 2.119431745e-08 0 0 0 0 0 0 3.749024584e-14 11501.98256 0 0 6.94124493e-16 0 3.678648284e-05 0.0005398337993 2.692922769e-12 0.08052653842 1.153983332e-27 6.299112626e-14 0 0 1.392057958e-10 1.214889507e-10 0 1.752969339e-14 2.643148904e-17 1.540068075e-21 0.02192075511 0 0 0 0 0 0 0 0 0 2.054268358e-24 0 0 1.587252327e-19 2.033536146e-05 0 0 0 9.647252125e-10 0 0 0 0.0002050869084 0 5.452092843e-13 0 0.02467285181 1.364680721e-29 0 12.93911894 0 0 0 0 0 0 0 4.786949987 0 0 1.167162219e-22 7.570363649e-10 8.209051669e-05 0 1.287113728e-21 0 0 0 0 0 0 0 9.448867689e-20 4.372272039e-29 7.536524517e-10 0 0 0.06669000674 0 0 0 0 0 0 0 0.2482512082 0 0 7.233457185 0 1.34660762e-19 0 0 3.136482773e-08 0 0 0 0 0 32.85971532 1.889917347 0 2.32800025e-23 3.194191491e-22 1.291412384e-13 2.422099659e-09 0 0 0 0 0 2.59391499e-11 0 0 0 0 0 0 0 499121.1624 0 4.407046644e-09 3.253307388e-09 0 0 0.001799939266 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.709093035e-17 5.882948572e-07 0 0 0 0 0 0 0 0 1520521.289 3.029985408 0 0 0 0 0 0 0 0 0 0 0 2.014729753e-27 0.003557752819 0 +0 0 24.72943103 0 0 0 0 0 0.005703784165 0 0 0 0 0 1.98734036e-05 711.4704376 0 0 0 0 0.0006735210967 0 0 0 0 4.000748244e-10 0.03410245585 0 7.150034349e-09 0 0 0 797969.7445 1.266734529 0 0 0 0 0 1.962768901e-10 0.007271421242 0 5.236294966e-29 0 0 0 0 2.271908175e-08 3.787291859e-30 2.971418141e-11 0 1192631.383 428112.6432 0 0 4.04112571e-07 0.0001349254273 8.48969558e-18 0 0 0 0 0 0 0 0 0 8.187124367e-11 5.971813275e-14 6.192778119e-39 0.9210673295 0 1.506066041e-39 0 38.43574627 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.038227332e-18 0 460.5651102 0 2.571494729e-30 0 0.000103609981 14221.97508 5.821001942e-19 2.259233452e-18 0 0 186728.0083 0 0.007642952449 1606111.1 0 0 0 80.1630501 1052.668601 0.3312369253 0 0 0 0 1.315259546 8.963820292e-11 509140.374 0 0 0 2.17260764e-11 0 0 0 0 0 3.724470152e-15 1.076673555e-23 0 1.547631564e-28 2.647638112e-05 7.386820701e-25 6.189503918e-27 0 169.8464691 0 0.00206649256 8.270994116e-19 0 0 0 0 0 0 0 0 0.0002207930381 0 2.265621553e-09 36.65896156 4.347946837e-15 0 0 1.579331783e-10 0 0 0 9.87585132e-22 0 0 0 0 1.027992866e-16 0 2.743136178e-16 0 3.272911514e-27 1.869479686e-07 1131.446753 0 0 0 0 6.567478031e-28 0 0 0.001156714773 0 2.859373302e-18 777.7313399 0 0 0 10656.74893 0 7.905258131e-17 1.76314016e-16 0 2.983199968e-20 0 552.648428 0 0 0 0 0 2.518954142e-08 6.401443662e-06 0 0 0 5343.689777 0 0 0 6922.227954 433.9702014 0 0 0 2.337649291e-10 4.727592249e-10 0 0 0 0 1.249750366e-10 0 0 0 0 0 2.259054713 0 2.10642899e-19 19545.31767 0 0 0 1.805691861e-05 0 0 0 0 0.003362729027 0 0 0 0 0 0 0 0 0 0 0 0 0 1.023516949e-17 0 0 0 494.4428777 0 0 7.392495139e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 9.606959103e-14 0 5.637543023e-27 0 0 0 0 7.657956316e-12 0 0 0 1.385365367 1.918200125e-16 0 9.713559546e-18 1.194669343e-08 0 0 0 0 0 0 1.157622845e-11 0 0 0 4.004508496e-18 0 0 6.679289696e-30 +0 4.157897801e-06 0 0 1.098529097e-18 0.0005966206983 0 472526.0148 0 2.658148586e-23 1.147790515e-07 0 0 5.503117276e-24 0 0 0.00103324215 1.716338963e-32 0 79.10344657 0 0 0 0 0 0 0 0 0 0 1.086103374e-11 0 0.0006976994316 362242.9622 0 1.773243301e-11 1.690555072e-24 0 0 1.446559425e-13 0 0 0 0 2.460291328e-08 0 0 0 0 0 0 0 0 0 0 1.738540115e-10 6.201377456e-06 4.501624655e-14 0 6.790148069 6.356486799e-13 0 0 0 0.0009616543188 1.941346281e-12 0 0 0 0 2.259886972e-09 0 0 1.941464548e-13 0 0 0 0 5.865876584e-11 0 0 1.968209134e-27 0 1.477971891e-23 797340.9865 0 0 0 0 1.587735516 0 7.492511541e-08 0 0 0.0543847713 0 6.590165629e-09 0 0 0 0 0 0 6.041254391e-30 6627.989986 0 0 2.876673404e-17 0 0 0 0 4.579991213e-21 0 0 0 0 0 0 0 3238.556843 0 0 6.339421715e-37 0 0 2.982850698e-08 8.8255229e-12 0 0 0 1653.229841 5.268776652e-09 0 0 0 0 15.24495818 0 0 0 0 0 1.334130374 0 0 3.128729158e-18 0 4.99342257e-11 5.218515661 0 0 1.312446e-30 2.588429091e-20 0 0 0 0 0 0 0 5.037702946e-13 0 6.535246445e-12 0.001088527504 0 0 0 0 0 3.876687449e-16 7.294289921e-26 0 102.4969626 0 6.971004841e-22 0 147296.4141 0 0 0 0 0 2.520451245e-12 0 5.419709496e-14 0 0 0 0 0 0 0 1.969028375e-16 0 0 0 0 0 4.858900119 2.165946834e-29 0.07797943448 51560.97849 1.108062944e-10 0 0.0002629204736 0 2.379091195e-10 197562.3959 0 0 472607.2015 0 0 0 0 0 0 4.829915597e-12 3.13580732e-29 0 0 5.214704316e-30 28.30503229 0 0 0 0 0 0 0 0 0 877.6831549 0 0 0 0 0 1.273559144e-19 9.874529508e-07 0 0 0 0 1.549093823e-13 0.0002102070711 4.579272097e-08 0 2525.469795 0 0 0 0 0 20.91389806 0 0 0 2.549682927e-10 0 9.973144941e-11 0 0 0 0 0 0 0.01046396001 1.023597136e-12 0 1.676080456e-18 0 0 4.177013535e-41 0 0 3.42040487e-09 1.267531349e-09 0 0 0 0 0 0 0 0 506.3108751 0 0 0 0 0 0 0 0 0 0 5.594496564e-15 0 +0 0 0 0 0 0 0 0 1.705275217e-17 0 1.481589457e-10 2.949701933e-16 0 0 0 4.804620398e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.838766392e-14 0 0 0 4213050.554 0 0 0 0 0 170.4828605 0 0 0 0 0.0004197521292 0 0 0 130.987603 0 3.756898209e-09 0 0 117993.3372 0.01379064138 1.642271997e-21 0.0236023121 0 2452375.558 0 0 0 0 0 0 0 0 4.009738483e-14 0 0 0 0 0 0 0 1.879942399e-30 0.05044139613 0.002291550689 6.029837009e-08 0 0 1960650.568 0 0 4389.974321 0 0 0 1.243404754e-08 1.157955779 0 0 0 0 0 2156160.772 0 0 6.463496285e-09 0 0 0 0 0.0833797277 0 26.3628397 0.001922489222 0 1.012575151e-11 0 0 17148.63173 9.91741654e-17 1.992519701e-19 1.060696642e-09 0 0 0.003334680128 0 0 14979.51004 1.103650857e-20 0 2.900590198e-13 65.16732262 0 7.486503017e-12 0 0 0 0 44437.76098 1885729.758 1.115039669e-11 1.131755569e-09 0 2.874485746e-20 0 0 8.60155721e-19 0 3.960422513e-10 6.808566505e-18 0 711.0744054 8757.600816 0 1.752950796 0 0 0 660435.3937 0 0 0 0 0 1.578685588e-24 1.082460788e-08 3.431008275e-08 319404.1656 6.802636582e-08 0 0 0 0 1.024427926e-17 0 0 5.105578599e-11 1.655091721e-14 0.000365114226 0 74713.43203 0 0 0 0 0 0 4768.601047 0 0 0 0 0 7.291691238e-05 0 0 0 3.560837751 0 0 0 238868.8348 8.005998422e-10 0 0 0 0 0 4.19252566e-08 0.001418291335 0 1.358393838e-07 0 0 0 8.053106822e-18 0 0 0.01810001526 30278.86746 0 0 0 188.7892285 1.965817795e-15 0 3.359148614e-11 0 0 0 0 0 2168440.136 0 0 5.693504058e-15 0 646.8741624 0 0 0 0.00158365438 4.793713377e-25 0 7.608545157e-20 0 1.599537753e-21 0 0 0 0 0 0 2.790604191e-16 0 0 1.11259112e-13 0 0 0 0 0 0 10.56108631 0 1.008484355e-14 2.104171729e-05 0 0 0 0 0 0 0 0 0 5.688307089e-25 0 0 0 0 0 0 0.1339926993 0 0 0 4.239037734e-21 0 0 0.0003107593879 868.8108056 0 0 0 85407.73611 0 1.98177169e-15 0 +0 0 0 1.68178508e-05 0 0 0 0 0 0 0 0 0.01886329132 0 553058.6445 0 0 0 0 0 0 0 0 0 0 629.6307001 9.507084912e-07 1.541013658e-31 0 9.440911709e-10 0 0 0 0 0 0 0 1.042853269e-27 5.539417365e-13 0.0001714639182 0 1.471180252e-07 3.850658989e-11 0 0 0 0 1.388240906e-09 1.961378042e-18 0 0 0 0 0.9947250895 0 0 0 1.721146339e-13 0 0 0 0 2.880593066e-28 723891.4544 0 1601.489839 1.079615475e-06 0 0 0 5.85373591e-09 0 0 0 1.521800165e-10 1.357821299e-10 9.227166896e-19 2.35638194e-27 0 0 0 1.229013947e-11 0 0 3.824846749e-13 0 0 1.328673853e-20 3.199179573e-23 1.807078043e-06 0 1.051810907e-14 0 0 4.385748824e-17 0 0 1506254.127 0 0.252801697 0 0 6.359321511e-15 0 0 0 7.692784332e-21 0 0 0 0 0 3.354341923e-18 0 0 2.916625753 0 0 0.6208795793 0.005863725249 0 0 10530.4024 0 0 0 0 0.02331211098 0 0 0 0 0 0 0.01775720634 0 0 1.480241576e-23 0 0 0 3.585659286e-20 0 0 0 2.412465657e-36 8.49033454e-07 0 0 0 0 0 1.540639588e-12 0.0007409955884 1.654918382e-13 2.084765447e-08 0 2.453026723e-24 9.896336353e-15 2.276137925e-06 0.002673520434 0 1763659.183 0 0 0 0 0.002336396844 0 45.2260463 6.794458506e-30 0 8.308757267e-11 0 0 3.362357141 7.311843032e-06 0 0 0 4.23848909e-05 0 0 8.36232225e-13 0 0 0.8843809945 773334.2533 0 110824.5517 0 1.148113034e-10 2.110487582e-16 0 0 0 72560.02454 0.001645653597 759857.881 0 3.770290881e-08 0 0 0 0.0009939140147 0 3.989463358e-08 0 2.420343412e-06 0 48.57000238 0 0 0 0 0 1955762.357 0 1.227444831e-09 0 0 0.001235721093 0 0 3.505838265e-09 0 3.533003641e-16 0 0.01178321696 0 0 0 0 0 0 9.029899817e-05 0 0 0 0 0 0 0 0 0 0 1.138761341e-22 0 0 0 0 10213.23689 0 0 0 1.126695674e-11 0 0.005709492089 0 0 0 0 0 0 0 0 0 3.646258506e-08 0 0.007304100043 0 0 1.514118761e-10 0.0001871272005 0 0 0 0 1.922056183e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003032418995 1.23633956 8.407281221e-13 0 0 0 0 0 +0 0 0 0.0008801921379 0 0 0 0 0 0 0 3.269034813e-12 2.089028222e-16 0 8.232912629e-24 0 0 0 0 0 0.005773555209 2735.419344 0 2.70200164e-26 0 0 1.265834995e-13 0 0 0 0 0 0 5.364055099e-10 0 0 0 0 6.397442269e-22 0 2.586889942e-15 0 0 0 0 0 0 0 0 8.478829702e-26 0 9.369458366e-07 2.094972986e-14 0 0 0 0 0 193221.4381 0 1.130474747e-14 0 0 4.143681643e-11 0 0 0 0 8.8680512e-09 0 0 0.07178790736 0 541.0758921 0 0 0 0 0 358516.1296 3.01548112e-21 0 0 0 8.487669569e-19 0 0 2.590061559e-32 452505.0444 4.266173774e-13 0 3.184679381e-08 2.476385183e-27 0 0 1.896439091e-22 2.285584987 6.730554062e-28 6.187974534e-19 0 1.406721103e-30 0 5.807294673e-14 9.921597914e-11 0 0 0.002464547828 6.468189989e-07 1.572867258e-22 0 5.148763968e-10 8.680520069e-15 0 0.001223020881 0 3.035361659e-09 0 2.656432657 0 0 16.06507647 0 0 2.771451507e-12 0 566.596978 26031.03693 1.344084106e-11 0 0 1.205061592e-13 0 0.000112219412 0 0 5743.239727 0 1.466864698e-21 0 0.06727605007 0 0 0 0 2.227211589e-17 0 0 0.1873301128 1.721406828e-05 0 0 5.517181725e-06 0 4.145003081 6.808588525e-10 0 0.003986706131 0.003571410843 0 0 0 0 0 0 0 0.02559504497 0 0 0 0 0 0 0 0 0 0 2.02919177e-16 4.687086927e-15 0 0 0 0 1.010982821e-28 0 7.396281836e-15 0.2933876664 0 7.789124938e-10 31.73341029 0 2.34496496e-05 2.545900513e-31 0 1.47269317e-21 0.04324120458 0.0007929100247 1.095250144e-11 0 0 0 6.650107702e-09 0 0 16524.22456 0 0 0 0 0 6.517500634e-12 0 0 0 0 8.936729347e-34 2.231912374e-13 22.59590454 8.912694837e-26 0 0 0 0 0 0 0 0 20273.96956 0.5872797649 0.0007949559272 0 0 0 0 0 0 58058.21038 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.953376045e-38 0 0.0001942437368 1.86727167e-29 0 1.010004609e-22 0 23796.49986 0 0 0 8.868835328e-21 0 0 0 0 1.16131823e-11 0.0001764747894 0 2.400356536e-27 0 6.707081225e-28 0 0 0 6.175612226e-22 0 0 5154.04876 5.319567155e-26 0 0 0 0 0 0 0 0 186.7371006 0 0 5.917158556e-29 0 0 0 0 0 0 7.741291209e-22 +0 0 0 0 0 0 0 0 0 1.002148769e-07 1.550397716e-07 0 0 0 0 0 0 0 0 3.358821693e-30 326.8003102 0 21288.79418 0 0 3.930654312 0 0.001560966987 0 0 4.577627603e-06 0 0 5.213070212e-15 0 0 112126.4686 0 0 0 1.296147609e-06 0 7.999648695e-24 5.338363265e-11 0 0 0 0 0 0 0 8.816849675e-07 0 3.361342679e-11 0 0 0 0 0 0 0 0 4.582662057e-13 0 1.774551737e-15 0 0 0 0 0 3.804595064e-06 283338.7228 0 0 0 0 0 0 0 0 0 487.324499 0 0 0 4.104647507e-10 6.531091835e-16 4.45631864e-21 0 69836.00095 0 1.71194638e-14 0 0 0 0 2.105830739e-07 2.945337832e-11 0 0 0.05237576491 0 1.297533824e-17 0 0 344040.7576 2190.905176 0 0 332.7652896 1.41563196e-29 0 0 0 0 3.44016169e-20 0 840748.4409 0 0 4.254456471e-13 0 0 0 11089.88803 0 0 0 0 1.650173768e-05 0 10.87470568 2.17791334e-16 0 0 1.536967946e-23 0 0.01799181218 0.01704417963 7.413915675e-14 3.675848574e-20 0 0 0 0 0 0 0 0.8847250529 0 0 0 0 0 0.02973122437 0 2.934635209e-19 0 0 29.86474278 356820.6896 0 424795.0011 2.276561191e-10 0 0 0 0 0 6.727844987e-07 2.380527102e-22 0 1.870497135e-08 5283.12726 7.387969093e-26 0 0 0 0 193070.5069 4.0211782e-11 0 0 0 0 0 5.376076951e-32 0 0 0.00571950046 9.712514802e-20 1.485168822e-15 0 1.575364945 5.297781033e-18 0 0 0 4.309419819e-19 0 0 0 0 0 0 0 2.067991651e-26 0 0 8.088013122e-09 0 0 1.174845077e-06 0 0 0 0.01014698852 0 0 91418.22927 0 0 5.972341921e-09 0 0 9.363830739e-23 5.341804347e-06 7.353430069e-28 0 0 0 0 0 1594.314188 2.608546939e-06 0 0 0 1.214036428e-11 0 0 0 0 7.138185333e-14 0 4.914379834e-10 0 0 0 0 0 0 0 0 0 0 0 0 507029.5917 0 0 0 0 0 1.120472976e-09 2.790911318e-06 0 1.580706392e-10 0 0 0 0 0 1.622920752e-16 127.2047015 0 0 0 0 7.572683148e-21 0 2.602436344e-23 0 0 0.0001206042633 0 0 0 0 0 0 0 0 0 7.344629931e-20 0 0 0 0 0 +9.355149719e-08 0 0 0 2.548147926e-42 0 0 7.823424179 0 0 0 1.078011992e-29 0 0 0 0 0 0 0 0 0 0 87.45211846 0 2.669952018e-12 0 1.042395311e-14 1.415604358e-15 0 5.414874919e-21 0 0 0 7.087664951e-13 3103.871263 0 0 1.826976547e-11 0 0 0 0 1.996973726 0 0 6.107847553e-11 4.463725458e-14 2.726261555e-08 0 0.0513851658 0 4.662099142e-26 0 2.392408553e-16 0 0 0 0 26432.84581 0 0.00278964452 5.3564824e-10 13.56187801 0 7.95881797e-08 0 0 0 0 0 0 1136093.302 0 0 0 0 0 0 1.200693837e-19 6.096631736e-20 0 0 592.7307743 0 0 0 0 1.691546158e-24 0 7.972158523e-15 0 0 276989.5617 0.0001041846096 0 0 7.392434653e-14 0.03330040877 0 0 861968.9516 0 2.800409933e-17 1.008360099e-10 0 0 0 0 6.682555891e-05 4.777074282e-16 0 0 1.133773602e-21 0 0.0002235098669 1.348820519e-21 9.434343525e-12 120.6398369 4.68665424e-17 9.768560388e-16 0 0 4.643922307e-22 1.152298801e-05 782649.5232 4.113608869e-21 1.679129004e-20 0 0 69.34822911 1.148269634e-15 3.717089804e-05 0 0 4.407918444e-10 0 0 0 0 44.79966035 0 3.30642122e-15 1.82268597e-11 0 0 0 0 0 0 4.508662471e-08 0 0 4.132033889e-08 0 0 0 0.02837899328 6.244467717e-28 0 0.3334071568 0 0 0 0 2.144776963e-16 9.289472636e-17 0 0 598.6858817 4.147988319e-11 0 4.437759328e-14 0 0 0 0 3.718781974e-13 1.348933602e-16 0 0 0 4.997624401e-09 2.301674537e-06 0 0 0 0 0 0 0 2.089809584e-05 3.832551553e-11 6.546701719e-34 0 20.46752298 560121.0573 0 0.238954057 0 0 1.548179203e-12 7.756025279e-23 0 7.373460007e-06 0 0.8628741745 0 0 0 10.07111547 0 3.195929237e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 2.305942226e-19 0 0 0 0.001393437267 0 0 1.57869786e-11 8.57923174e-08 0 0 0 203213.7101 0 0.0005221854918 6.118524513e-06 416.8436902 39.85770188 0 0 0 6.173165472e-30 836.6152467 0 0 0 0 1158534.56 0 0 0 0 0 0 0 0 0.001973532063 0 0 0 1.256791379e-25 0 0 0 0 0.004878194557 0 0 0 0 0 0 0 0 3.647468267e-13 0.1365003593 0 0 0 2.057604985e-05 0 0 0 0 0 0 4.751774171e-13 0 1.010469287 0 0.0240180088 0 0 0 0 +0 3.048302149e-08 0 0 0 7.883618997e-05 0 0 0 0 0 0 0 0 0 0 0 0 2.503495246e-26 0 0 0 1.130991468e-15 3.241463708e-19 0 0 0 3.122870445e-26 0 3.162784867e-10 0 0 0 0 0 0.003181163232 1.561624471e-06 0 0 0 0 0.001061623142 0 0.002224809421 0 0 0 0 0 0 0 0 0 0 0 0.0007009227522 0 0 0 0.3855033023 0 0 0.0004983299828 0 0 0 0 0 2.735731183e-05 0 0 4.465203104e-28 0 0 4.57619911e-14 0 3.098447653e-11 0 9.997027488 0.001134370821 9.967372564e-16 0 0 1.515308755 0 0 0 0 0 0 4.052347425e-14 7.479930588e-06 3.364031544e-28 0 0 2.871068586e-21 12562.83601 0 1.874243815e-08 2276836.003 0.01564153403 0 4.746896281e-35 0.8082536034 0 0 2.216741047e-08 2.468664992e-20 8.916157467 0 0 0 0 0 4.360398465e-05 0 0 0 3.144161163 0 0 8.061872204e-15 0 0 5.076179924e-35 0 0 0.01352404348 4.998996013e-06 11.2705006 0 0 8.397545301e-16 0 0 0.03949789403 0 0 0 7.757624932e-18 9.833815086e-13 0 0 0 10.47011368 2.032868337e-13 0 0 3.884119138e-23 106.5260214 5.521754584e-14 0 1.318004555e-06 0 0 2.308743428e-09 3.880465689e-26 4.744034587e-26 0.0002217436268 16.91568125 0 2.239222541e-10 0 0 20482.1948 0 0 0 0 0 1.568795369 4.281683412e-17 7.761416647e-05 0 0 0 0.0002374777531 0.0001198388457 0 0 1.34489977e-20 0.006619002509 0 0 3.110832987e-05 148.8052997 0 1813.759296 0 0 0 0 0 0.02808932472 0 3.522785284e-14 0.6515718087 0 7.163469753e-15 0 0 0 0 1.045483553e-05 215.0767956 0 0 0 0 0 0 78.00053688 0 0 0 0 2.832007715e-09 25569.12451 1.854690086 0 0 0.0001262384428 0 3.92796556e-08 3.029622042e-17 0 0 0 0 1.091218401e-15 0 0 0 0 3.405439952e-14 0 5.059874548e-12 7.926702945e-13 0 0 0 0.01197619899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.467923441e-10 0 0 0 0 0 1.572802789e-09 6.737773422e-10 0 0 0 0 1.179061958e-13 1.280559972e-19 8.151802999e-20 0 0 1.152333218e-06 0 0 0 1.395125966e-08 0 0 0 23.68732429 1240220.972 1.259178944e-21 0 0 0 0 0 0 0 0 0 1.083448516e-15 0 3.079178433e-26 0 +256644.3002 0 3.120600091e-09 0 0 0 0 1.754847719e-08 0 198610.1357 0 0 0 0 2.79714528e-19 1.545520244e-09 0 0 0 0 0 1.927054834e-24 0 2.836370379e-08 0 0.001880296224 0 0 45.43741169 0 0 0 0 0 0 0 0 0.0003131446599 148034.1858 0 0 0 0 7.887874054e-28 0 0 0 0 1.25940068e-06 7.618075255e-15 0 0 1.816632285e-15 0 0 2.586943934e-08 0 0 0 6.294515162e-06 3459.17261 1.286695055e-29 0 0 37607.17669 0 0 4.004312382e-16 0 0 0 0 0 0 0 6.603194312e-13 0 0 6.766945583 0 0 0 0 0 0 0.0003093444431 0 0 0 0 0 0 0 0 0 0 0 0 0 8.202245471e-10 0 0 5.858881294e-18 0 0 0 0 0 0 4.646457994e-18 2.041075679e-29 0.6372292112 0 0 0 0 202726.7505 0 0 1.239621843e-28 7.418099453e-15 0 1.500478726e-10 7.290793596e-31 0 0 0 2.605501618e-11 0 0.1074985107 0 0 2.135308984e-06 0 0 0 0 29.55037838 3.135604452e-09 0 7.131872706e-10 0 0.7117504059 1.505761253e-14 0 0 0 0 0.03819734076 0 9.364163753e-16 1.590121883e-36 0.0004252827455 0 0 1.033058977e-18 0 1417713.078 0.02034086106 0 0 0 0 0 3.576938727e-11 15.73559341 0 0 0 2.578238065e-08 1.225591261e-08 0 3.688207964e-11 0 9.919701574e-05 0 0 0 18710.50009 6.683880418e-25 0 3.78919257e-11 0 0 0 1.658063421e-32 0 4.52313647e-07 0 3.850757427 0 1955.413683 0 0 0 0 1.960279366e-21 0 0 4457.280207 0 0 0 0.02906255138 0 4.31821575e-13 1.194574252e-41 0 0.0006133235543 2.774419507e-12 22.09327782 0 3.775360689e-06 0 0 0 0 0 0 20247.79193 0 0 0 0 0 17320.05188 0 3.139416699e-21 0 7.446375038e-08 0 0 0 0 0 0 0 0 0 0 0 7.669708437e-09 0 0 0 0 0 0 4.394700251e-06 0 0 0 0 0 2.23309219e-18 13477.15247 0 0 0 0.005698787351 0 9.281200308e-28 0 0 0 0 0 0 0 0 0 0 2726.174576 1.936640729e-18 0 1.812762894e-09 0 0 0 0 0 0 0.01944315939 0 0 0 0 0 0 0 0 9.413212737e-13 0 0 0 7.433059345e-28 0.002152161087 0 0 0 +0 0 0 0 0 0 0 0 0 0 8.874449949e-33 0 0 0 0 0 0 0 171380.6725 1.161206097e-16 0 0.0002013537069 0 0 0 0 0 0 0 0 4.47918693 0 0 0 0 0 0 0 0.003394790797 0 907981.5687 0 0 0 1.21447727e-10 0 0 13572.45757 0 0 2.508227685e-20 2.112846333e-10 0 0 0 0 0 458.7518492 3.058847383e-09 0 0 0 1.172533159e-09 0 0 3.590718396e-13 0 0.09015361582 0.02538423569 0 0 0 0 0.8074019635 3.027871386e-13 0 0 0 0 2.312242337 0 0 0 0 1.544862256e-12 7819.960475 7.246360867e-09 1.797170702e-26 0 7074.322873 0 2.104361448e-10 0 0 0 3.504379513e-14 1.048785718e-11 0 0 2.460084351e-05 0 3.83130036 99000.65437 0 8.952342139e-13 3.429250278e-05 3.464086038e-09 1769962.88 1.402101803e-13 0 1586.381573 4.081781374e-09 111.167525 0 4.898324334e-11 0 0 0 0 1.208030195 4629.498697 0 0 0 0 0 2.901085501e-15 0 0 0 0 4.244348052e-21 6.985755969 4.332855683e-09 0 2.397111341e-10 0 7.657724324e-16 1.336537625e-34 7.358621572e-12 0 0 0 0.911252015 0 0 0 0 0 0 5.000437342e-06 0 71.89884548 4.401551727e-21 0 0 2.960359168e-07 1.940707826e-31 0 0 0 4.409753711e-08 0 1.275942901e-18 2.681639014e-17 0 2.495424424e-20 4.090043198e-17 0.004884351352 3.391890804e-10 0 0 1.225704394e-14 1.347012752e-11 8.200678814e-07 0 0.06106066561 0 1.642737758e-23 0.3016351627 0 0.6069871483 9.010844459e-18 2.573810524e-11 0.003516337774 0 6.378789117e-07 0 0 0 0 0 1.367182218e-22 0 0 0.01702341156 0 0 0.008991807807 0.1805115803 1.320408211e-26 3.133828674e-10 1.030722788e-09 0.0108955142 0 0 0 0 0.0001021807369 619.6782268 64015.0174 0 246531.1421 1.110560082e-27 0 0 0 0 0 0 0 0 0 0 0 6.94348254e-17 0 0 8.940427833e-19 23.46280664 0.01285989476 2.016720486 2.875070392e-12 0 0 0 7.888717585e-05 11172.0589 0 0 1.446516548e-11 0 0 0 0 0.689982681 1.326341989e-08 0 0 0 0 0 0 0 1083.760626 0 103.8001121 335750.3964 6.415199522e-12 0 0 0 0 0.8713988462 0 0 0 7.778557233e-07 0 0 0 0 0 0 3.147066498e-13 0 0 0 0.0003856765232 6.744114039e-14 0 0 2.19226619e-09 0 0 0 2.75305832e-23 1.337609556e-22 0 0 2.752570007e-18 0 0 0.008628146637 0 0 0 0 0 0 +4.856478242e-10 1.389045407e-29 1.147129007e-05 2.660134682e-05 0 1.827652949e-19 0 0 0 0 0 0 1.927793011 0 0 0 2.204927497e-13 0 0 0 4.831044077e-28 9.254590189e-14 0 4.401278521e-25 0 0 32.59989783 0 0 3.002529778e-05 0 3.791763039e-13 0 0 0 0 0 1.197105588e-08 0 0 0 0 0 0 0 0 2.020470024e-11 6.792578052e-25 0 18521.48534 0 0 0.01152071817 1.597360846e-06 5.184424247e-09 0 0 0 1.196132117e-07 1.375001182e-07 0 0 2.453981993e-07 5.822910328e-14 0 0 0 0 0 0.0004886800019 0 0 0 6.346840189e-24 0.0003698002632 0 0 5.191302257e-22 0 0 0 0 0 2.346901082e-10 0 0 0 2.621126389e-22 1.462399471 0 0 14.20185811 0 8.554030988e-26 0 873249.2606 1.389140537e-08 11330.14577 0 0 0 0 0 1.325323559e-25 0 0 0 8.140666655e-19 536.6660823 0 7.190439259e-29 0 0 0 0 0 0 1.657998474e-09 0 0 0.1734525284 0 4.220977933e-17 0 0.0388351853 2.344107093e-15 5579.251832 1.697406313 0 9.676959419e-14 0 0 0 0 452951.5838 0 0 2.119792003e-10 0 0.3964136848 0 0 2.376871879e-25 0 3.322871659e-31 0 0 0 1.45533336e-11 1.964488419e-20 0 0 0 3.680722639e-06 0 1.523633101e-07 9.990957839e-05 0 1.264345287e-26 0 1.743604254e-08 0 3.01281397e-10 0 0.1906108499 0 0 0 0 5.405447671e-11 0 1.276278613e-14 0 0 0 0 0 0 0.06574375774 112.4147951 0 0 0 41926.69225 8.218969729e-19 0 0 0.1329739289 0 0 4.110557373e-17 2.305810442e-05 1.809896998e-21 1.699351478e-35 5.157422561 0 0 19459.8488 0 20.5871065 0 0 0 0 0 0 63.4184315 0 0 0 0 0 0 0 0.000147596259 0 0 1.04261279e-24 0 0 0 0 299.8542646 0 0 281108.5543 0 0 8.795978315e-08 0 2.360052804e-06 0 0 0 0 0 0 0 0 0 0.01188053045 1.179072062e-07 0 0 0 0 0 0 0 62043.32196 0 270.5909465 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.333597462e-17 0 0 0 6.301621296e-14 0 127.3400573 0 0 0 0 0 0 0 0 0 0 0 6.044566312e-10 0 0 0 3.400041521e-11 0 0 0 0 0 0 0 0 0 0 39904.43 +0 0 0 0 0 1.030979432e-07 0 0 0 0 0 5.35577732e-09 0 0 0 0 5.690990387e-18 0 0 1.004250268e-11 0 0 0 0 0 0 53330.23597 0 0 0 1.56903948e-08 6.923251364 0 0 0 0 0.5021024265 0 0 0 0 0 0 0 0 243.1375905 32512.34375 1022.111396 0 1.008151186e-28 0 0 0 0 0 0 0 1.373669513e-05 0 0 0 1.340651064e-10 1.62518756e-19 0 0 0 0 0 3.331078978e-17 0 0 0.02888037472 0 0 0 1.026491707e-13 0 0 0 0 3.98053383e-22 0.002964780134 493.3956449 0 6.950652811e-18 13.63021439 0 0.960224854 0 0 0 0 7.80777894e-18 1.036048722e-16 0 7.241159177e-20 0.007277709968 0 0 2.006125125e-06 3.326340209e-07 0 0 1.794017847e-11 0 7.312825248e-08 2.278029073e-07 0 0 2.448724172e-06 0 0 0 0 0.03004211106 0 0 0 0 0 0 0 0 0 1.50619688e-13 4.234236961e-29 2.630101335e-18 0 0 0.00617192662 1.051201048e-17 0 0 0 1.22108316e-19 0 0 10.59565567 0 3.045463244e-06 0 4.28806411e-11 0 0 2.618463886e-18 0 0 3.177401799e-38 0 0 7.683421952e-08 8.562513896e-09 0 0 0 0 0 6.712404896 0 4.127178995e-08 0 0 722.9630515 0 0.05131127243 1.82456564e-13 0 21951.26829 0 0 0.3304774013 0 3.232659308e-15 0 6.092782977e-27 3.201163723e-18 19225.90251 1.639412116e-14 3857.055605 4.093352854e-10 9.903564055e-10 0 0 0 0 0 0 0 0 1.883064379e-07 1.075926252e-08 0.01791208088 1.279601279e-28 0 0 81096.92372 1.266056805e-14 1.527584563e-22 0 0 123720.3136 0 0 0 0 7.336964293e-05 0.00161686642 0 1194578.065 0 3202101.525 0 0 9.859494182e-21 3.844890991e-07 387.3194348 4.646769481e-32 0 0 0 0 0 0 3.233390867e-16 2.086072024e-21 1.235041104e-27 0 0 1.796968053e-21 0 0 0 0 0 7.152465697e-16 0 0 0 0 0 0 141310.8119 0 0 1136485.433 0 0 0 0 0.01333061239 3077.366647 0 0 0 0 0 0 123.0317286 9.976694235e-05 0 3.204493713e-15 3.538786923e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 9.707179346e-05 7.834886705e-14 0 0 1.107606765e-35 0 0 0 0 0 0 0 0.0003780341694 0 241195.4473 0 9.132828952e-14 0 1.704067917e-15 0 0 0 9.390935704e-11 0 0 +1.802620299e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.419011717e-24 0 5.650420126e-16 1.164208876e-13 0 0 0 1.907340097e-13 0 0 0 0 0 0 0 1.654082921e-07 0 3.581867642e-12 0 0.0009098965677 0 0 0 0 0 0 2.133366189e-34 0 0 3.085214198e-12 1.513545934e-20 0 0 0 0 0 3.614049082e-05 0 0 0 0 0 1.716577207e-11 4.631137657e-08 0 0 1.33487751e-05 0 1.594788039e-21 7.559042675 489639.8264 5.993100709e-27 0 0 0 0 0 0 0 0 0 1.04663889e-17 0 0 1.433036212e-19 0 0.0001707363418 0 0.124445369 0 3.910418411e-08 0 1.436605715e-17 4.605643725e-05 5.787999719e-10 0 0 0 5.836552847e-25 48253.63673 0 0 4716.053063 0 0 0 0 0 1340900.841 3.726838505e-09 0 6.260347494e-12 0 1.163230712e-08 0 0 5.467501588e-30 2120.739981 0 0 0 286890.0765 3.14452632e-05 0 0 0 0.0005602486262 0 8.213831293e-05 5.878119137e-23 0 0 3.781847199e-17 5.234523411e-12 220540.2679 0 0 0.002157468844 0 0 0 0 60952.62614 0 0 0 6.516097102e-11 174779.865 1.287060055e-05 7.137524124e-10 0 111.2920578 21350.97902 119751.5852 2.568231464e-11 0 1.070482894e-16 0 7.206249772e-08 0 0 3.770225547e-13 0 0 1.391277808e-05 6.339355603e-14 0 5.064780105e-05 0 0 2.827453664e-10 3.591581485e-17 0 0 0 0 1.84014414e-21 320.5970808 9.133673581e-05 0 0 0 0 11960.30214 0 0 0 0 0 9.671846229e-10 0 0 0 0 1.516475387e-07 0 0 0 0 0.1277456346 11.97276399 0 2.216033449e-13 0 0.0001158155954 0 1.490931437e-13 0 4.731720604e-38 0 83.21972804 1.856306544e-20 0 6.766163206e-05 0 0 0 8.336743582e-06 0 0 0 0 0 0 7.552988317e-17 0 1.341432925e-05 0 0.01665722705 2.724954771e-24 0 0 6.626131386e-28 0 0 0 1.08943824 0.01782598115 1.611711522e-27 0 0 48.30429085 0 2.715064406e-10 0 0 6.503768169e-05 0.158497705 0 0 0 26320.84174 0 0 1.248062878e-21 0 25.66359783 2412.528486 6.179168233e-05 0 0 0 0 0 8.277864926e-11 112.1738511 0 0 0 0 0 2113383.399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.101053557e-16 2250.470267 0 0 0 0 0 0 7.932556424e-29 1.275043366e-08 3.122886928e-13 0.0001437925056 +4.485351073e-22 1.456583771e-05 1.481986929e-23 3.662239878e-12 0 0 0 0 0 0 3.548882406e-22 0 0 0 2433642.924 4.481935469e-14 0 0 0 0 0 0 0 1.343842413e-14 5.470690135e-08 4.36497706e-05 0 0 98741.87431 0 0 0 0 0 0 0 2.019348752e-20 0 1300271.724 0 0 0 0 2.251459661e-10 6.981035222e-08 3.778291094e-12 0 0 183560.0398 0 0 0.1574362052 0 0 0 0 0 0 0 5.324602674e-07 0.0004660325672 22.9780335 4.720511343e-05 0 0 0 0.000327386584 0 0 0 0 0 0 2.356941078e-19 4.781437395e-14 0 2.597205961e-12 4.506609689e-12 0 0 0 0 0 0 0 0 0 1.230676116e-16 0 0 0 4.102373226e-08 0 0 0 0.0004881861816 3.21466253e-24 0 1.443628894e-14 1.033561829e-15 0 0 9.155756133e-12 0 0 0 0 0 0 0 7.839916216e-13 0.0001514097769 9710.557621 1.509746648e-10 0 4.167054656e-06 0 2.756687726e-06 6.380805595e-40 0 1.106072242e-26 0 0 0 0 0 0 0 0 60.61824562 0 5.453688108e-05 0 1.740494301e-18 0 8.426502562e-09 66.97409418 404.5008893 2709.780488 0 0 0 7.031237988e-16 0 0 6.363884909e-10 25840.4684 0 5.391746845e-09 0 0 1.548666553e-07 0 0.0008623680693 0 5.831983708e-31 3.277559179e-05 1.751491108e-14 0 0 3.450734864e-25 5.083066913e-23 0 0 0 0 0.00262782902 0 0 37.99887228 2.92103871e-13 0 0 0 0 0 5399.499129 60374.24042 2.22955162e-08 0 2.914327114e-05 0 2.381790192e-15 0 0 0 2.003126907e-07 2.342530001e-09 0 1.877258582 0 0 2.190705713e-19 0 0 0 0 424.5006161 0 0 30236.15132 0 0 617.4996829 0 0 0.0001433747877 7.14664441e-12 2904958.778 4.137495762 0 0 0 0 1.352549014e-09 0 2100.757927 0 0 0 17106.41327 0 50.80367346 0 0 9.799327695e-14 0 1.828400423e-20 0 0 1.246110239 0 0 0 7.330453373e-18 0 0 0 0 0 0 1.613794543e-05 0 0 0 0 8.062422323e-11 155.5013567 0 1140745.18 0 0 0.009050872035 0 373.7075556 0 0 0.01671153281 0 0 0 0 4.076887521e-12 0 0.0431258834 0 21876.34151 0 0 0 0 0 0 0 0 2.085939901e-11 0 0 6.283485929e-29 5.298698044e-15 2.196173792e-15 0 0 1.113761452e-18 1.063458839e-26 2541807.554 0 4.399040509e-08 3.738772419e-06 0 0 0 0 3.061140051e-05 0 0 0 3001.026306 2.471166458e-09 0 +0 0 0 0 0 0 0 0 0 0 0 0 1.205696118e-19 739820.1513 0 0 0 0 0 0 1.895719794 0 0 0 0 0 0 0 657182.2698 1.074718068e-12 0 0 0 0 0 0 0 0 4.082749358e-22 0 0 0 0 0 0 160.2842937 0 0 0 0 0 2.473364233e-20 0 0 0.04881836104 9483604.945 3.606579395e-05 1.139076895e-12 6.791077806e-32 0 0 0 0 0 0.0005723141247 0 0 3.920997044e-10 0 0 0 0 0 0 0 0 0 6.043916701e-14 0 0 0 0 0 0.003331983785 0 0 0 0.002112632268 0.004485256274 7.376604858e-27 0 0 5497.170372 0 7257.715212 0 6.495992946e-25 6.838470966e-13 0 0 0 2.186773208 0 3.94295885e-05 0 1.785444393e-13 1.903322488e-06 0 0 0.008344058496 3333517.488 0 1.537030255e-07 0 0 0 1.940443161e-07 0 0.0001684915195 0 0 2.076703027e-18 4.584950767e-21 0 0 0 0 0 0 0 0 0 0 0.0002695750902 0 0 0 1.71335624e-05 5.78002823e-13 1.26349772e-27 104.4125558 0 0 0 8.658638291e-20 0 1352525.178 0 0 17.06960438 7.609456729e-14 2.674901875e-08 0 1.358338629e-10 0.001347101011 1.543952009e-10 0 4072.200959 0 0 6.692575448e-07 0 0 0 0 4.873762373e-05 0 0 55533.79545 0 0 0 5.44647114e-12 13.8727428 0 0 685.1402342 1.319257288e-08 0 1.838640955e-16 0 0 0 2.672012696e-05 0 0 0 13829.3568 0 2.958313957e-16 0.000699725618 0 0.004642448326 0 0 40.37046007 254460.1158 0 0 33.76794111 0 0 2.542412064e-05 118.1586685 8.825650217e-19 0 616.3177292 0.4968624899 0 0 6.118882007e-18 49.11318244 0 0 0 0 0 0 1.037405575 0 0.1076240844 6.706841425e-17 0 225507.474 6.003524431e-05 0.5437684 1.429751934e-05 0 0 8.114361601e-13 0 0 0.0003004722326 0 0 0.0009750615267 0 0 0 0 0.01055785039 0 9676.433458 0 0 0 1.301471132 0 0.01453209209 0 0 9.672252035e-05 0 3605870.765 0 2379047.002 6768.858456 0 0 0 0.00164097381 0 0 0 0 0 0 0 0 0 2.712039139e-08 0 1.769116152e-21 1.657099024e-20 0 0 0 0 0 0 3.510657151e-29 0 0 6.636367861e-15 2.492031265e-14 0 1.991688843e-16 0 373633.4445 0 0 0 641769.4094 2.110284437e-10 0 0 0 0 0 0 +4.292599832e-07 0 0 0 0 2.371694813e-11 0 0 0 0 0 0.2930478998 0 0 0 1.854732365e-18 1.075383287 0 6.979595855e-10 12299.4402 0 0 0 0 0 0 0 0 0 1.202336978e-07 266897.1092 5.780587195e-29 0 3.769547591e-10 0 0 0 0 0 3.324963769e-11 2.750763289 0 0 0 0 0 0 0 0 0 0 1.540521486e-12 0 0 52818.94316 0 0 47419.88904 0 0 0 0 2.167271803e-06 0 0 0 0 0 0 0 2187447.257 0 5.904748195e-22 4.037853346e-07 5.080827813e-26 1.309295826e-05 0 0 0 0 393.122346 1.952335601e-14 0 95499.40983 0.07394161928 1.377462042e-15 0 3.721044974e-05 8.658610922e-05 0.001287186663 0 0 0 0 2.579754548 0 0 0 0 2.635568481 0 8.175331092e-05 0 4.180638326e-20 0 0.000222384369 0.009554223061 3.567276328 0 0 8.545297415e-09 2.359835507e-13 1.740305258e-07 1.453222674e-08 1.962136653e-06 0 0 0 0 0 3.426583012e-12 6.697721735e-25 0 3.564964441e-12 0 0 0 0.01062607663 0 0 0 0 0.05778583666 0 0 1.359178418e-14 0 1.747477732 2.481315621e-05 1.937818889e-24 4.414623509e-20 0 0 0 27.65766021 0 0.0002473092064 1.574386516e-15 0 0 0 0 0 9.220014841e-07 0.0002770958135 1.289690297e-26 1.489600503e-08 1.190240647e-15 0 0 0 0 0 0.001707390253 0 1.219493498e-08 8.528626251e-19 0 2.981013185e-11 9.454462086e-05 7.972084215e-05 0 6.485131224e-13 0 0 8.67594778e-06 0 0 3144.501982 0 0 0.02324154368 0 3.599512749e-23 0 248.6660717 8.510651416e-14 7.200261174e-15 0 0 0 0 5.028074841e-10 1.10112113 0 0 2.997067183e-10 0 0 0 3.885255631e-14 0 0.007432809893 0 0 0 0 0 0 0 0 0 0 0 0 1.3406365e-12 0.0009389305493 0 0 0 126.2697172 2.49097422e-14 8.855494589e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 1.616296456e-07 1729.720585 0 0 0 0 3.46588793e-12 0 0 0 4.87298559e-09 2.726191796e-10 0 2.138412639e-28 0 1.14506439e-07 0 0 3.411538174e-06 0 0.06889839583 0 0 9.595622028e-05 1.631544008 8.818446393e-26 0 0 0 0 0 0 0 0 4.6112382e-24 0 353.3161804 0 0 4.781642168e-19 0 0 0 0 0 0 0 0 0 0 1.154547054e-12 0 0 0 0 0 0 0 3.906548887e-09 0 0 0 0 0 +0 0 1.650658411e-13 0 0 0 0 0 0 0 0 174632.2115 0 0 0 0 0.04273020103 0 0 0 0 0 0 0 0 0 5.177342788e-20 4570.098291 0 0 0 0 0 0 0 0 0 0 0 0.0002147808845 0 0 0 4.666949514 32504.91209 0 0 0 0 0 0 0.003305038263 0 0 0 0 0 4.628356945e-21 0 1.469547637e-12 0 0 1.823103553e-17 0 0 0 0 5.611989042e-12 3.832694205e-21 0 0 0 0 0 0 2.007258727e-15 0 0 0 0 0 0 0 407.6012303 0 0 1.536440631e-07 0 7.795421819e-23 2.563174332e-11 9.346150504e-23 0 0 0 0 2.960834105e-21 0 0 0 4.213233705e-07 0 2.437618727e-27 2.21031614e-19 5.389505547e-18 1.386408828e-23 49855.8283 3.762589135e-31 0 0 0 6.853299414e-14 0 1.287968975e-15 1.763942107e-09 0 0 8.02969015e-11 0 0 0 6.563000249e-13 5.933110378 0 0 14.9501883 0 0.0002247502696 4.156706673e-13 1.832785301e-23 1.200443484e-11 4.76569544e-06 0 0 0 105287.2395 4.012794778e-21 0 2.845021685e-13 1.166573804e-05 0 0 0 2.090658835e-07 0 2.100405075e-22 5.523639555e-07 2.439258246e-17 0.0002045496325 0 0 12.88302435 0 0 0 85.61336026 0 0 6.513549605e-13 0 4.275269294e-12 0 1.350910792e-08 2.818575536e-16 0.004823942343 0 0 1.652746549e-13 0 0 0 1.568268198e-06 0 0 1.465404204e-10 0 0 0 1.18531194e-09 410201.9304 0 4699.350739 3.110005158e-12 0 0 27807.6343 0 2.916718761e-22 0.2856232997 6.525839566e-07 0 0 0 0 0 0.001523037738 0 0 0 0.009117526854 0 1.700557258e-09 0 33673.00364 0 0 0 0 0 0 0 0.01212104092 0 0 0 2.22321663e-15 0 0 5.19707786e-10 1.044626006 0 118434.4348 0 0 0 0 3.485829568e-23 0 0 0 0 0 0 0 0 0.03531876455 0.002980871114 0 0 0.005855745358 0 0 0 0 0 6.722129034e-07 0 86319.51401 0 3.3574222e-07 0 0 0 0 0 0 4.869154404e-16 0 0 1.799922562e-23 0 7.750752121e-22 0 7.381327982e-29 0 0 0 0 1.462727513e-07 0 2.775261399e-19 0 0 0 4.359051549e-31 0 0 0 0 0.02957891717 2.665022188e-20 0 0 0 0 0 0 0 0 0 915.8672532 0 0 0 0 0 7.112913389 0 0 2.146348877e-15 35.23073814 +0 0 0 0 0 70.07855006 5.163339034e-14 0 0 0 0 0 0 0 0 0 0 0 1.845470216e-20 0 0 3.403656169e-16 0 0 0 0 47374.34223 0 4.952965072e-21 0 0 4.860960665e-27 0 0 0 7.224248822e-20 0 0 0 0 0 0 0 0 0 0 5.94710882 0 0 0 5.269941676e-07 8.031229814e-18 6.270969242 0 0 0 0 0 0 0 2.591731965e-22 0 8.100646045e-09 0 0 0 113.1132572 0 2.620522019e-06 0 4.844781415e-29 5.458928444e-06 0 126.8725393 6.640592224e-11 0 0 0 0 0.0003158705501 0.0007575306353 4.354393795e-20 5.680502855e-14 194943.4916 6.526526847 1.526310804e-21 1.287080405e-14 0 22.73837875 0 0.06667852777 6.469641011e-14 0.5319420384 0 0 4.275596158 1.429899928e-07 0 4.048393775e-05 0 0 0 0 2.282729537e-09 0 0 0.01294604085 0 0 1.267630324e-14 0 0 0 1.210612311e-12 0 0 0 0 2.327877702e-10 0 8.55453701e-20 0 0 1009024.653 0 5.602406723e-14 0.0001295827015 9.773975671e-06 3.524873123 0 0 0 88.47732789 7.58700939e-19 4.87561893e-17 69.21672191 0 0 1.874726538e-15 3.07314451e-06 0 0 9.519969344e-10 25.75994989 0 0.4645493679 0 0 0 2.139498864e-12 0 0 0 1645285.327 0.001501688061 0 0 3.918421744e-07 0 1.189417629e-22 0 0 5063381.01 0 0 0 4.606819847e-15 0.008655899208 0 0 0 0.142484464 2.428568156e-12 0 5.485217688e-12 0 0 2.210542563e-13 0 0 5.09182225 0 0 0 0 1.673511155e-27 0 0 0 1.056636793e-23 0 0 0 1.297960662e-12 5.272539975e-09 0 0 1.078809927e-07 0.1442454992 0 61662.42056 0.03242156354 0 0 0 0 0 0 5.747890197e-11 0 1.961032583 0 0 561802.6413 0 1.126197974e-14 919.385409 0 3.852824376e-17 0 1.326766261 0 1809.678782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.02334428e-16 0 56392.45978 4.534862519e-07 0 2.964319674e-22 0 0 0 0 0 0 1068133.021 0 0 0 0 0 3.241318742e-21 1003.090174 0 1.45125494e-17 0 191130.1662 0 4.920477349e-13 0 0 0 1.070413768e-10 0 0 3.542322667e-16 0 0 1.723611277e-06 0 0 4.757390969e-14 0 0 0 0 0 0 0 0 0 723.4856501 3.085427857e-17 0 0 0 0 7.362997219e-05 7.776253376e-13 0 0 0 0 0 +0.001616599902 6.156815995e-11 0 0 0 0 0.005971167581 4218.012084 0 110959.7348 0.0001672355964 0 0 0 2.84447358e-27 0 8.605231299e-07 0 0 0 0 0 0 1764.281379 0 0 0 0 0 5.182384612e-10 0 0 0 0 0 5.716298606e-20 353349.9589 0.001533827978 1.076034534e-09 0.02064205446 0 0.1435540479 0 0 0 873.0612751 0 5.194171345e-10 0 0 0 0 0 0 0 2642538.261 5.834682916 102048.5619 0 0 0 0 0 0 7.258167951 267.8360491 0 3.22862848e-09 0 0 4.522108471e-10 0 0 3.23770447e-13 0 0 0 0 0 0 0 0 0.4457950332 0 7.829133425e-23 0 7.107581386e-07 0 0 6.522305196e-11 2.29919387e-10 13.52190686 0 4210.618537 0 0 0 5.025755509e-07 0 0 0 1.765933362e-13 0 0 0 0 0 0 0.7217834887 8.382869472e-10 0 0 6.953284417e-21 6.214812488e-09 0.7932565814 0 0 6601.028374 1.827102694 0 0 0 0 0 0 2.258013145e-30 0 0.0006717011839 0 0 183.3804682 0 0 0 0 0 0 0 0 0.1145495413 0 96.05837282 0 0 0 0 0 0 0 0 9.418875027e-07 0 0 0 0 4.51342041e-14 0 0 0.00201233494 0 0 6.645416877e-16 1.4097946e-14 2.611196962e-28 0.3477982768 2634.752618 0 4.274221212e-13 0 1.208222649 1.510102068e-06 0.003927026242 0 0 0 0 0 0 407.3517175 0 0.0003465228518 1.979491499e-13 6.322427423e-05 1.077936583e-09 9.482748723e-17 0 9.891699774e-27 0 6.150419564e-17 0 5.948130451e-05 4.351826912e-06 0 1.43172005e-05 5.105466325e-11 0 0 1.098064775e-06 0 0 2.912574748e-15 2276.263921 0 0 0 2795.992165 0 0 0 6.852661715e-22 0 1038933.274 0 1.676662986e-10 0 0 0 0.0004188417424 0 0 0 0 0 0 0 2.690211517e-10 1.289188577e-10 0 0 7.115634393e-13 9.549509034e-05 0 0 1.589043301e-13 0 0 0 3.852126037e-11 0 0 0 0 0 0.2817874875 0 5079.187473 0 0 12.57295152 1.535111054e-07 0 0 1.159433946e-07 0 0 0.001518610638 0 0 0 2.235793021e-14 0 771.4900098 0 1.513922634e-15 504324.7645 0 0 2.212706508e-07 2.345693825e-05 0 0 3.359595662e-15 0.003957281328 0 0 0 0 2.864057174e-06 0 0 0 0 0 2.500786711e-12 0 0 1.486765783e-06 0 8.374632339e-15 0 0 0 0 7.130836436e-07 0.03287322536 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9.161569288e-16 23687.78833 0 0 645.3946818 0 0 0.01021399948 0 0 4.159635383e-08 0 0 0 0 207621.7261 5.873739084 0 0 0 0 1013.361513 5.535351169e-12 0 3.013701698e-14 0 0 0 7.246600515e-09 1.908888719e-19 0 0 0 0 0 0 0 0.9057441764 0 0 435.2573877 0 0.1213053217 0 0 3.395770988e-09 0 47997.95763 0 0 0 1795175.208 0 693916.661 1.103106755e-14 0 0 0 0 0 0.005063614889 0 0 0 0 7.21165176e-11 2.390447288e-17 0 0 10.57125408 5.036049402e-15 1467621.186 0 59894.12494 0.03727172963 1.261100984e-11 6.65805563e-10 0 5.703461775e-09 0 0 0 0 0 0 0 3.768884555e-17 583152.9269 0 0.0003003339395 2.451564017e-22 3.245505937e-05 0 973475.7398 8113.767678 90.82992536 7.628213481e-12 0 0 0 1.002131384e-06 0 8.405796034e-07 0 0 0 4.578119138e-07 0 0 0 126347.1455 0 7.900177419e-05 0 0.000113510615 0 1774627.508 0.0009442204934 0 3.549995869e-12 9.736272196e-15 1.937780089e-34 0 5.714240063e-24 0 8.370709199e-09 0 1.040681669e-27 0 0 46852.8445 10.77891203 0 0 0 2.416766608e-19 0 0 7.822830268e-22 0 0.2192396214 3.273496587e-21 0.1005372544 3.720235707e-09 0 2.047640396e-11 0 79.98635136 0 6.551470111 0 9.036176417e-12 0 1.239388773 0.7867990531 0 0 0 0 0 0 0 0 0 0 0 0 3.698339942e-14 0 0 0 0 2197.214218 0 0 8.414304135e-18 0 0 0 0 0 0 0 0 0 0 4.048668613e-18 0 1.686637266e-12 9.97756967e-10 0 0 0 0 0 0 0 0 330114.0497 0.3815791414 16.41756506 0 0 0 3.735674958e-05 0 0 1.597653699e-22 0 0 0.05327490269 18644.89661 208.6629421 0.02210924425 1.287672976e-14 0 0 0 2.392594146e-12 7.513818197e-13 0 0 0 0 0 0 0 2.141908015e-14 0 0 3.232527161e-06 0 0.009230529107 0 0 0 0 0 0 0 2.328773039 6.408897532e-12 0.003711828685 0 0 0 1.167331231e-05 0 6.992379488 0 0.2540718721 0 2.772603569e-06 0 0 6.538856075e-19 0 0 5.543652437e-10 0 0 0 4.919177955e-08 0 0 0 0 0 0 1572772.616 0 0 0 0.0001821504105 0 0 0 5.355028425e-22 0 0 0 0 0 0 0 0 0 3.829991989e-07 0 0 59090.75156 +0 0 1.35024229e-10 4.016694944e-08 0 0 0 0 0 0 7.595718025e-07 0 0 0 0 0 0 0 0 0 0 0 0 410676.4287 0 0 0 0 0 0 0 0 0 1.733931458e-31 0.01516532399 5.968852101e-05 1.207283225e-06 0 0 286.3725648 0 0 0 9.997813421e-12 0 0 0 3.903437962e-10 2439790.781 0 0 0 0 0 0 0 0 0 5.520122512e-05 146599.2323 0 1.277773516 0.09494963566 2.19700256e-05 0 0 31.48978603 3.439100871e-11 0 1.439814698e-17 0 1.161016823e-07 0 0 0 0.001837212413 3.677361891 0 0 0.06771429692 0 7.020061944 0 0 1.771620781e-07 0 8.979345273e-11 1.075948311e-28 0 0.4207014476 0 0 96928.52642 0.0001591044163 2.635164106e-13 2830.683057 0 0 0.001163823074 0 0 0 1.903093683e-27 0 0 4.171212957e-10 0 2.907643358 0 1.966188748e-13 215351.417 0 7.913346357e-22 9.546357571 0 1.14862424e-12 0 0.0001161000427 0 0 0 0 1.588202055e-24 0 0 8.503319302e-13 195607.157 0 0 1.764282086e-10 0 0 6.361534615e-17 0.8451569731 0.0001673281696 4.514289862e-14 0 0 1.358366906e-11 0 0 0 0 0 4.190999609e-23 0 0 0 0 0 0 6.164190023e-15 0 1.478918141e-06 0 0 0 270836.4095 183870.8614 1.363726714e-15 0 1.864981304e-06 1.580944983e-25 0 376.2792124 0 0 5.798092184e-10 6.536657435e-07 4.727233805e-22 0 6.958908023e-08 1777173.843 0 0 0 0 0 5637.820328 0 0 0.0001664997376 0 0 3.159837729e-28 6032.138582 0 0 9.021491937e-10 1.146293695e-17 0 0 1.08015257e-12 3.0799006e-16 0 7943.693987 0 1.665521099 0 2.381717257e-05 0 0 2.472179556e-18 44140.88399 0.002333758772 0 2.299173916e-16 1.651819986e-10 3.590589857e-11 1.753010497e-11 0 0 0 0 15.69338244 2.108236534e-29 1.249989885e-12 10357.13858 0 4.630804707e-25 0 37567.0544 0 6.763560357e-13 0 0 0 0 0 0 0 2001.065348 1546.081101 0 1.742114463e-08 0 0 1.745250916e-24 3.871075664e-10 0 0 0 1.492169921e-10 504744.0406 5.464501457e-06 0 0 0 0 3.014647726e-10 0 0 268.8266017 0 4.025305647e-10 0 51834.98008 0 0 0 0 0 0 0 0 0 0 0 0 0 4.042545994e-14 0 4.019919183e-10 0 0 1.336754374e-16 2.976969181e-14 0 0 192570.8239 0 0 0.001511492834 0 0 0 0 0 0 0 0 0 6.449955601e-10 1.205436525e-12 1.535017652e-15 0 0 0 0 0 +35.99399458 3.152951188e-12 0 0 0 0.626860611 7.102400242e-13 0 0 0 0 0 3.934509666e-19 0 0 0 0 0 0 0 7.963349367e-28 0 8.195726329 4.577415879e-19 0 0 0 0 0 0 0 0 0 42451.93905 0 0 0 0 0.0001415771828 0 35706.62565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.989901746e-12 1.508149671e-11 0 0 0 0 0 0 7.110053027e-20 0 0 0 0 0 5.149262119e-23 0 0 0 0 45155.47994 0 0 0 0 0 0 2620.551069 0 0 1.050376169e-11 0 0 0 0 0 0 0.0003058307782 7.36471845e-17 2.710970083e-08 2.242913293e-12 0 1.66103679e-14 2.358250414e-06 0 2.263480812 6.104314755e-11 32.73030331 2.995268094e-07 463162.8237 3.418679026 1.388855224e-05 0.7188943205 0 6.666773418e-06 0 0.1803567187 0 0 21624.51644 0 0 5.167557502 0 0 0 3.919867373e-15 1422.346648 0 1.049375582e-07 282510.6848 7.065288688e-15 5.242923885e-10 127371.4807 634151.1483 0.0002017732865 0 0 4.719721978e-26 7.047735649e-37 0 1.011168544e-07 0 2.81277868e-15 17363.45478 1699786.553 0.0001249492001 0 2.638796945e-24 0 0 2.400517075e-25 0 2.851539028e-20 0.0002455907935 0 0 5.529523822e-15 6.023166474e-15 0 2.949845415e-07 3.714029292e-09 0.0001335145834 19081.131 0 0 0 1.573865972e-09 5.511270957e-12 4.221818712e-10 0 0 0.006161889746 0.1430038668 0 0 0 0 0.003737997312 6.947449224e-08 0 279.9065586 0 0 142618.0995 0 9059.774374 7.259383902e-13 0 0 0 2.535694091 0 5.528820724e-05 4.37640909e-20 0 0 3.35147218e-27 1.113961211e-05 0 2.124011801e-07 0 0 1.618594373e-05 0 3.679471126e-09 0 0 0 1.025802266e-09 0 489.0496708 0 0 0 0 3.070893285e-13 0 21313.79927 0 0 9.764545489e-17 1.584979861e-22 2.5715923e-17 0 0 0 0 0 0 1.384126927e-13 0 9489.475511 0 9.074108428e-12 0 0 9.620345651e-22 0 0 0.8952446842 0 0 0 0 0 0 0 6.497961299e-06 0 0 1.251740628e-21 0 0 0 0 2.24635624e-15 0 0 0 0 25.15694264 0 0 0 0 0 3.811317057e-26 0 1.274612469e-27 0 0 0 1.919897788e-06 0 0 0 0 0 0 0 8.408141128e-09 0 0 7.500678528e-05 5.061596512e-18 3.987228943e-29 0 0 0 23007.02089 0 0 0 0 0 0 0 0 0 0.004249851685 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 7.220159236 0 0 0.0005045253282 0 0 0 0 5.847693595e-12 1.694736995e-11 0 0 0 0 0 0 0 6.660582565e-09 0 0 0 0 0 0 0 0 0.02799211664 0 0 0 0 0 39365.80068 0 0 0 2.193247331e-11 0 0 0 0 0 0 0 0 8.696393517e-20 1.717627203e-07 0 0 29.83453323 0 0.0001018393632 0 1.647356927e-13 0 8.482328446e-14 0 0 0 0 0 422682.917 88986.79907 0 1.526167309e-26 0 0 13.8095942 0 0 0 0 0 0 5.028384345e-07 46.69719187 396513.5309 0 5.823408484e-15 3.26872909e-24 0 0 863865.2674 6.921483465e-10 4.485608283e-07 2.248527732e-07 0 1705613.968 59.18736894 0 0 1874.445007 1.695482943e-05 0 1.097296888e-20 2.704231376e-05 6.649607069e-12 0 0 0 3.298351705e-10 0 0 15.3864829 0 0.03472246188 0 0 0 0 0 2.115051222e-11 2.689310399e-10 0 0.2864019779 0 0 0.0001460945697 0 4.906359624 7.249154632e-08 7.815895507e-09 4.930263425 206.1463449 6.838200536 6.159501936e-09 0 0 0 0 0 6188.311518 0 0 0 0 0.8752495571 0 0.0001734970838 1.402390646e-15 0 14.96718178 0 25420.37481 0 0.0007030363111 0 3.486111735e-28 0 0 0.0008271116043 0 1045.513794 0 0.001616328067 0 1674.081825 6.001834438e-21 0 2.144561625e-15 0 0 0 0 0 2.606959861e-10 0 0.0005405177464 5.279635613e-15 0 0 0 5.460892165e-12 0 0 1.044097078e-18 5.134732759e-27 0 4.40042409 0 2569.793665 0 0 0 0 7.216157471e-14 0 0 1.92507572e-12 1.538076007e-15 0 7.202009647e-05 0 366190.3368 2.784315926e-07 0 48770.07757 0.002735225353 0 0 5.051289253e-24 11.44591745 1.034720638e-07 0.1934958356 5.101989138e-05 0 1314.053916 0 0 3.499150632e-24 1.344119033e-30 0 0 0 0 0 0 0 0 0 1.109621752e-22 0 3.648172857e-08 0 0 0 0 4.231584185e-15 0 0 1.149803645e-23 2.455887499e-25 1329.609196 0 1.220375792e-09 0 2.169148346 0 3.602557991e-15 0 0 0 0 3.077637061e-12 0 0 1050.794328 1.916762968e-05 0 0 0 0 0 9.952209905e-11 2.834638825e-09 1.000263751e-20 0 0 0 0 4.471260992e-24 0 0 0 3611.946068 314977.1144 0 0 0 360.6676634 0 2.10358459e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +484985.6768 0 0 0 0 6.139834126e-18 0 908.5201221 0 0 0 0 0 1.423431959e-08 0 0 0.02440446228 0 0 7.107618737e-08 0 0 0 0 0 0 0 0 0 0 1273.143042 0 0 5.113207794e-19 0 0 0 0 0 0 9.800915737e-25 0 0 0 0 1.629703342e-13 0 6.799101266e-10 0 0 0 0 0 82.82743438 0 0 0 0.301899099 0 0 0 5.152724858e-16 0 0 0 0 1.417071284e-05 0 0 0 0 1.569074173e-15 0.2992824648 1.21578351 0 1.3288201e-24 0 0 0 0 0 0 10610.8279 0 0 0 0 1.507304618e-14 73.94727722 9.582863589e-08 0 0 0 0 0 0.006413389408 0 9.182227947e-17 3.063599632 0 0 3.316070413e-18 0 0 0.002756701472 6.326644123e-20 0 6.977989156e-18 0 3.040482456e-15 0 0 0 0 9.172575818e-05 0 9.498808187e-17 5.619193247e-08 0 0 5.815794421e-26 0 1.582377743e-17 35.09978505 1.624660866e-06 0 0 330.346602 0 0 5776.202958 0 2.659213875e-14 368.5766718 1.074097136e-18 0 0 25.177981 0 0 3.020018755e-15 0 1.527583716e-28 4.797267597e-09 1.994705479e-23 0 0 0 0 6.174859562e-05 4.192980735e-06 3.632729726e-21 2.626334579e-10 7.366443387e-24 0 0 0 0 0 0 0 26.13853331 1.763459613e-12 2383.320561 0 0 0 2725273.521 0 0 0 758150.3806 0 0.0001499724281 0 1.446890604e-24 5.038292538e-20 1.085199452e-10 0.0002292077312 2.569377131e-06 0 0 0 0 0 0 5.018151744 8.382701794 0 0 0 480391.9996 0 0 0 2.610863732 0.09443731049 1.964753457e-15 5.302615135e-16 0 0 0 1.192678424e-20 2.142595871 0 0 0 0 0 0.002079470347 6.777983805e-11 6.446465294e-13 0 0 1.734148707e-24 7.259997673e-07 0 53.91680153 0 0 0 0 0 7.425604708e-08 0 0 5.591354122e-10 0 26.08247811 0.0003577509127 37922.39582 1.165294419e-17 0 0 6.979501945e-16 0 0 0 0 0 0 0 0 0 3.516949102e-16 184054.35 0 1.978926399e-09 0 0 0 0 0 0 0 0 1.171554184e-06 9.340221995e-09 0 0 0 0 0 2.364166112e-11 0 0 0 0 0 0 0 3.272326537e-16 0 0 0 0.00719510478 0 0 0 31850.75696 0.05585844164 3.058089596e-18 0 0 0 0 1661191.838 0 0 0 0 0 0.0003659863794 0 0 0 0 0 0 0 +3.38376874e-23 0 0 0 5.334111991e-29 0 0 7.058343992e-13 1.041708118e-30 0 0 0 3.821290655e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 7.83577301e-07 0 0 0 0 0 0 0.004602115965 0.01706793317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 171.6724496 0 0 5.041975533e-10 0 0 0 0 1.128448122e-13 0 0 26.86354148 0 0 0 0 0 0 3.473822659e-08 0 4.382249669e-08 0 0 0 0 1.215812341e-24 1.251859933e-37 2023089.439 71752.47003 0 0 3.087852845e-16 1943457.322 15.23309483 2.092030929e-18 4.198457084e-12 6.731900216e-06 0 0 0 0 9.029386979e-12 0 275.609191 0 3.072638574e-17 1.380026717e-26 1.65661196e-17 0 3.784913533e-16 0 0 3.361865855e-12 0 0 0 1.347404868e-18 0 0 4.95165996e-08 6.626671701e-08 0 0 5.894060587e-22 3.035230624e-11 5.666946983e-08 0.03199825704 0 3.218801257e-05 3.762895858e-12 0 0 0.0001012855285 1.722498297e-06 0 3.049996937e-13 1.770079631e-06 7.998208902e-12 0 2.535507443e-08 0 3.516473166e-07 0 0 0 3.583353979e-10 175.1312435 0 0 0.02308266045 0 0 0 0 5.114384334e-16 0 0 0 1.562994033e-13 561062.8989 1.785633972e-13 7.132563653e-11 0 72162.48746 4.58488108e-19 0 515.7365274 0 0 2.379637076e-07 0 0 0 9.6525485e-10 0 0 0 0 0 0 0 818.9600189 0 0 0 0 1.326785427 0 1.957889858e-21 0 69265.54188 0 6.575540551e-27 92.83979454 0 0 0 281.1950297 0 0 0 0 0.006048119372 455.4154736 0 1.275811774e-16 1.185066713e-09 0.02871063777 2.347477398e-07 0 1.166002986e-29 0.0009565602587 7.761153369e-40 0 0 3026574.848 3.674790975e-12 6.461087761e-28 1.529185984e-11 9.559677531e-23 0 0 0 0 0 4.387687455e-14 0 668256.7035 4.756694147e-24 0 0 0 0 0 0.191405051 3.725321461e-14 0 14096.74323 0 4.573014356e-06 0 1.163792791 0 0 0.3060469295 0 0 1.029443708e-14 0 0 0 0 11.8781251 0 0 1.242385101e-12 0 0 0 0 1.951976116e-15 0 1822.913709 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.763764429e-29 0 0 0 4.7200813e-23 0 7.457967305e-12 0 0 0 1.523115258e-10 0 0 0 0 0 0 2.551006245e-12 0 0 0 0 0 3.890913087e-24 6.452649965e-12 0 126.3152173 0 0 0 196678.6137 +0 0 0 0 0 130307.716 1.869525969e-06 0 0 0 0 0 2.21230031e-09 0 0 0 0 0 0 9.917936989 3.550689729e-08 0 1.448840398e-12 0 0 0.002628587766 5.341502349e-13 0.01682004006 0 5.357480613 0 0 0 2.93266822e-08 0 0 9.721764869e-10 0 0 0 0 0 0 0 0 7.913997466e-29 0 75.52975941 0 8.732488374e-22 142.4135586 0 0 0 0 0 2.459253805e-14 0 0 4.881856358e-09 299.1687239 55.31995522 0 0 0 0 0 0 0.004542238254 406.6328541 0 0 0 0 0 0 0 0 0.1424928188 2995.634122 0 3.231247055 0 0 5.032798839e-05 2.808322764e-09 158179.8816 1.999516772e-05 0 0 0 5.033897199e-15 159.5372905 0 8.993334668e-07 0 0 9.859331161e-29 0 3.996188169e-05 0 0 0 1.176459839e-27 0 0.04571861415 2.771452604e-08 2.600597528e-24 0 0 0 0 8.333585107 0 0 0 0 0 3.304176526e-23 1.139854455e-05 0 0 0 0 0 112.6472996 0 0 0.01117460683 0 1.893447351e-08 0 0 0 0 0.005094945218 0 5.727057048e-20 0 3.024224453e-07 0 1.060467463e-09 0 4.047632679e-13 0.184470234 0 0.0005761530899 0 0 6.064907148e-08 0 2.045155844e-06 4.840897101e-18 1.598827374e-15 0 2339.596224 0 0 0 0.145306221 0 0 1.025315901e-18 0.2283012701 0.0006148008536 6.627625442e-11 0 0 9.479571351e-08 0 0 1171.291293 0 0.01220303182 0 1.196663981e-05 2033.719395 0 0 0 0 0 4.409346588e-12 0 9088.468624 2.234645268e-17 5.722625859e-13 0 0.08846064485 1165.41126 2052.038404 0 0 0 0 0 0 5.909484768e-10 0 0 0 0 8.821183424e-13 0 4.925216467 0 0 0 0 0 0 368.2658179 0 4.660670033e-27 0 0 1.287434532e-13 0 0 0 2.357000676e-27 0 0 0 0 0 0 0 0.0006762181954 4.631704928e-06 0 0 0 9.010498694e-11 0 41974.60557 0 0 4.619730406e-09 5.256889586e-18 6.991272884e-08 0 0 0 0 0 0 0.135976832 0 0 0 6.941706386e-08 0 0 0 0 0 0 0 0 0 3.808635838e-05 0 0 0 0 5.566930728e-16 2.361446479e-10 0 0 0 0 0 0 0 0 2.159434931e-29 0 0 0 508142.0615 0 0 8.347909537e-19 0 0 0 0 7.029707521e-08 0 4.14029832e-28 0 0.001607756493 0 0 8292.361524 0 0 4.346784497e-17 0 +0 2.578250401e-23 0 0 1.887399311e-23 0 2.953537513e-22 31.23277032 0 0 9.624290007e-11 0 0 0 0 0 0 0 0 0 0 1.286088324e-12 0 7.530447362e-09 0 5.176783671e-06 0 1.057950792e-23 3.787924081e-05 0 0 2.164158884e-06 0 0 0 0.01670643841 4.553265975e-07 2.149047809e-14 0 3.270765095e-08 0.001791749282 0 0 39658.18219 0 0 9.725668888e-17 0 0 1.49911422e-17 0 0 0 0 0 8.469517422e-06 2.274354667e-05 0 0 1.553464107e-14 0 1.20239197 0 0 0 0.0008661911839 2.039575622e-23 0 0 0 12.18596421 0 5.187621258e-24 0 7.770473751e-15 0 0 0 3.83982585e-12 2.928988038e-16 0 4.173378677e-06 0 0 0 0.7994761016 29.10972244 0 2.915556671e-11 2.481681655e-30 0 0 5.868809908e-14 14030.09144 674.9479228 0.0001150936186 0 0 162.2087711 3.214776274e-09 0 0 6.941139734e-18 0 7.400630918e-15 0 5.287651027e-08 0 6.905038083e-26 0 0 6187.606456 8.146036178e-25 0 0 2.660199237e-13 8.924782421e-10 0 0 0 0 54306.85266 0 0 0.0001753435239 0.003446318135 0 3.31087866e-20 787435.0271 0 0 0.1573792701 0 0 2.731279203e-07 0 1.944395336e-26 1.6675623e-12 0 3.567157959e-15 0 0 2.267106841e-19 8.579754484e-19 0 0 7.712675959e-25 0 1.613298543e-13 2.22483301e-12 3.956579817e-24 2.259316663e-10 1.307973092e-06 1.48098576e-13 0 0 0 2.192314031e-06 0 0 0 0 0 0 1.095038063e-05 0 0 0 0 1.113489317e-05 0 0 8.889922387e-25 0 4047.371734 13014.68825 1.400625802e-18 1.656880513e-05 0 0 0 2.939823325e-13 7.713877528e-07 0 0 0 0 0 5.11103882e-06 0 0 0 0 1.784835868e-13 0 8.391847294e-05 0.002662719993 0.001301684436 0 0 1.084540521e-05 0 1052.200828 0 0 1.353941038e-25 0 0 0 2.025632589e-13 0 3.116215453e-15 0 0 109.37621 160745.9517 0 0 0 4.897882286e-11 1538.68561 0 0 1.109534431e-12 0 0 1548632.599 2.157008478e-10 0 3.500759199e-08 0 0 7.279737842e-07 1705767.243 0 0 0 0 3.026132046e-22 0 0 0 0 303.0582585 1.287066747e-05 3.327516483e-17 30004.90144 0 0 0.0001651640971 0 0 6.843431092e-32 0 441666.3337 0 0 0 0 0 1.732672466e-09 0 0 5.230564582e-09 2.665784559e-06 4.437783237e-16 0 0 0 0 1.086835474e-14 0 0 0 0 10152.4362 0 0 0 0 0 0 0 0 0 0 0 0 0 3.803975138 0 0 151.7428747 0 0 0 0 0 0.002221411703 0 +0 0 0 0 0.0001088298521 9.023344778e-16 0 0 42.85375001 38.63291328 0 0 0 0 2.187818725e-08 2.197859223e-12 0 0 0 0 6.835040796 0 1.391302164e-10 0.0002055357839 0 0 0 0 0 0 2.65671813e-19 0 6.237994714e-05 0 0 0 0 0 0 0 0 3.062935444e-24 0 2.975684898e-17 0 0 0 0 0 0 0 4.597865096e-17 0 0 1.760070234e-09 0 0 0 191.609288 0.06243855907 2202122.207 2.230621742e-22 0 0 8.008512353e-07 0 4.410283492 0 0 0 0 9165.353561 0 1.136931637e-14 0 3.906385835e-20 2.441374388e-07 0 0 0 0 0 3.231846832e-07 0 2.105560774e-10 0 0 0 2.1310637e-15 0 0 0 0 0 1.952507013e-09 0 0 0 0 0.0001369800831 0 0.0004724587924 0 0 0 0.0004356603434 1180.696171 0.0003863523443 153539.0707 983353.7705 1.084247036e-16 9.945234737e-17 0 5.577039072e-28 0 7.865115364e-16 0.0001371703868 0.0006294899654 2.250571481e-29 4.862735941e-16 0 0 0 5.632988203e-14 0.0003669374091 85.03561703 3.315120026e-11 0 2.272558686e-32 0 542644.7734 0 6.95482685e-06 0 0 0.2106639437 0 0 0 1.568169384e-06 0 0 0 6.424830301e-10 0 0 8.483093186e-24 1.328448461e-12 0 179.8735168 4.538929774e-30 1.037665352e-26 6.620845318e-06 6486.394763 2.687608968e-05 0 3.121548903e-14 0 0 9.971669915e-07 0 0 4210.095455 0 0 4.767957847e-08 3963.306088 0 0 0 1.429984192e-05 0.01336152538 5.098581551e-26 0 0.04185202683 1.087974364e-07 0 4.822354749 0 0 0 1.623704676e-11 0 0 0 2.44779708e-12 4.897231844e-16 0 2899744.177 4.421355057e-14 1.287618132e-10 0 0 1.947741745e-16 0 0 1.292731813e-19 2.868706517e-17 2.676160262e-37 0 0 0 0 14899.90202 193.4475931 0 3.138935815e-13 0 0.02357392749 1027.728378 0 0 1.645133785e-14 0 0 4677.632868 0.0001003303424 0.0002072231631 29.12864398 0 5.32098692e-11 0 0 0 0 2.938389439 0 0 0 0 0 6.795000385e-15 0 0 0 0 971.7071401 0 0 0 3.981316948e-08 4267.867261 0 0 0 6.597877979e-06 0 212313.372 0 2.752138894e-07 0 0 0 8.513476948e-25 0 4.395541298e-12 0 5958.194021 0 0.0004088859581 0 3.113291256e-28 0 0 0 0 0 0 3.4900643e-09 0 0 0 0.00178519154 0 0 5.753552148e-08 0 1.052558255e-20 0 5.0157392e-34 2.675656075 0 0 1577040.996 0 0 0 0 0 0 0.0002829066337 0 0 0 0 0 0 0 0 0 +0 0 0.01664592382 0 0 0 0 0 0 0 0 0 1.083157392e-05 6.002059966e-13 0 0 0 0 0 575.9889107 0 0 3.307988047e-09 0 0 0.2095094272 0 0 0 0 5.977829336e-11 0 0 0 0 0 0 0 3.66025487e-07 0 920186.831 1.869023438e-12 0 0 0 0 0 0 20304.13763 0 0.03356299844 0 0 0 0 0 0 0 0 137908.4745 308136.2125 0 0 2193.982642 17818.94174 8.279474069e-10 0 5.343039592e-29 0 0 0 0 0 0 0 0 0 0 0 6.736216281e-20 852.9578975 0 1.456748645e-24 0 440639.876 0 0 0.0005463107342 2.09967843e-13 0 0 0 0 0 0 518331.7923 0 0 0 1.848353742e-09 0.01584144369 7.429982611e-16 0 1.276715721e-16 0 1.580611068e-12 0.2056547927 9.449966788e-15 17.62702378 1.002114829e-28 0 897.6615185 0 1.054361174e-06 1.034393733 0 0 3.048997172e-12 0 0 0 0 1.303380103e-05 4.995723755e-08 1.716482604e-06 50783.52413 0 0 8.608337478e-11 4.561815114e-23 0 7.22635906e-14 13.80969501 2.290549873e-32 5.74756892e-12 0 8.741996669e-14 1.448402732e-10 0 0 0 1.607357565e-15 141.4108383 0 0 0 0 0 901373.3461 1.252419769e-22 0 4.813472348e-05 1956734.05 226760.9749 1.751346806e-29 4.781806956e-12 8.622782871e-08 2.025277141e-09 1.12556237e-20 4.390015202e-05 191475.5446 0 0 0 0 0 0 0 2.421246922e-11 6.151722512e-29 0 4.407832221e-06 0 0 2.769992468e-06 0 1.070280738e-09 9.688387203e-06 0.1195069054 1.26341341e-15 0 5.014140616e-08 2.898010237e-18 305.3501409 0 5.119750729e-15 0 1029.215085 0 0 3.348589028e-13 0 0 0 0 2.904092227e-23 0 30.5672681 5.038178543e-11 0 0 0 5.566408575e-12 0 0 2196007.905 0 6.685459567 5.8838616 0 0 0 0 0 4.228152353e-13 0 0 0 5.700821489 1.552407592e-10 4.826913917e-14 0 0.2319378381 2.330988583e-12 0 0 16.16014256 1.156226254e-07 0 9189.543408 0 0 0 0 0 0 0 3.212981792e-24 0 6.756593811e-13 0 0 8.763900824 0 0 0 3.528726436e-10 1.186816685e-11 924.8021489 0 7.672051966e-07 0 0 0 4.336191085e-11 0 0 113.9103719 0 0 909883.2575 8.420434061e-12 0 0 0 0 0 0 3.238387268e-08 0 1.515239007e-08 0 0 0 2.672855378e-09 0 0 0 0 0 0 0 0 0 0 0.005822913809 0 0 20963.95914 0 0 4610.362443 5.114913571e-09 0 0 0 5.596480508e-12 0 0 0 +0 1.218572393e-12 0 1.413300975e-13 0 7.680652647e-07 0 0 0 0 0 0 0 0 0 0.2020162274 10368.47934 0 0 0 0 2.776474059e-19 0 0 0 1.285408526e-14 1.649320833e-13 9.085691355e-25 0 0 0 0 15474.49873 0 3.405075092e-11 0 0 0 0 486.9815636 0 0 0 0 0 5.521583229e-29 0 0 0 0 0 0 0 2.466874424e-21 0 1.356458472e-25 5.04206528e-10 1.547499176 1.063731031e-13 0 0 0 0 0 0 0 3.272938907e-10 0.003337105913 0.01497014954 0 0 1.852684472e-06 0 0 1.890080654e-06 4.531688763 0 4465383.992 0 0 1.263886931e-05 134915.5404 4.96634793e-28 0 0 1.512641199e-08 475.2698013 0 1.217203819e-06 3.264420047e-22 4.491995028e-29 6929.945995 2.076205247e-11 0 104921.2587 1513.665686 2.65519663e-10 4.53620437e-14 0 7.570276699e-09 0 3.487058857e-10 0 1.353856538e-05 0 0 0 0 0 0.004732763588 50699.6749 858.3040931 0 132.4103082 1.475086334 807044.4762 2.360758918e-09 0 4.802388605e-21 0 0 0.07054942576 0 0 0.0001921436871 3.036035956e-19 5.432073782e-07 0 1705615.058 0 0 0 250978.4853 0 0 0 1.085850076e-10 2.385791542 3.447245061e-05 0.000982139108 0 46.04536795 8.033876407e-14 6.546078776e-25 0 927506.3155 7.525061556e-20 0 2.658651148e-20 0 1.888122891e-06 0.112857084 0.02378759288 0 0.04710525773 0.0858937735 3.231951265e-23 0 6.859862137e-07 508259.5801 4.25395454e-19 4.231457664e-10 9.076214611e-13 0 0 9.719152121 1.942832248e-12 0 9.744940039e-10 2.61662925e-10 0 0 3.542370649e-31 623287.5572 1.336323983e-10 0 413.9456996 4.554786042e-05 8.06157321e-21 0 2.705674293e-11 0 4.760840225e-07 0 2.427646302e-08 97044.40133 0 0 0 0 0 0 0 8.403487858e-18 1.666393079e-12 0 0.0009537122224 6.786802342e-05 0 773.751002 2.933023597e-19 0 0 0 0 2.48512041e-11 6.685720795e-14 0 4.680260111e-24 0.01275929731 0 0 1459063.106 0 0 0 0 0 55.41644349 0 0 0 0 0 0 3.388759642e-10 0 7.281251187e-13 8.953466096e-07 0 0 0 0 1.410338005e-11 0 0 0 0 0 0 262.1180173 34.95731138 0 0 0 976.5247508 0 0 0 0 17.1724276 0 0 0 0 0 0 0.3841666847 1.613251095e-07 0 2.528424558 0 0 1.533964342e-18 0 0 0 0 0.5541266192 2.670560387e-05 0 0 0 0 0.07189765662 7.644965588e-21 8.81560036e-08 0 7.167475523e-18 0 0 58.33742413 0 0 7383.163924 0 0 0 0 9.132624789e-17 0 0 0 0 0 9.500625497e-12 0 0 0 7.782762513e-13 +0 2795.869979 1.325145635e-10 0 82.85951877 0 5.432662858e-10 0 3.371242098e-10 0 0 1.09647253e-06 0 0 0 9.466499479e-11 0 0 0 0 7.22124577e-27 0 122956.7787 0 0 9.5169766e-05 0 1.872940676e-20 0 0 0 0 0 0 70035.92501 0 0 1.0460727e-06 0 0 7.721723825e-28 0 0 0 2.713137359e-23 0 0 0 0 0 8.475705199 3.001737615e-12 186.2306704 2.309743992e-10 0 49.65210426 0.006237375977 0 0 0 8.166090723e-20 0 0.01942416701 0 0.01036100576 0 4.522229008e-28 0 556129.6491 0 0 0 0 29948.2819 1.448766559e-08 0 0 0 0 0 0 0 0 0 375842.6781 0 0 0 0 0 0 0 0 0 0 2.75140177e-16 0 0 0 3.346542904e-08 0 4.103550235e-10 0 1.250301024e-08 0 0 1.418389195e-12 0 8.383125849e-06 1.077957042e-12 0 11695.9243 1.92456776e-11 0 864789.0573 161.8449098 0 0 0 0.003499602906 0 1.704713993e-13 1.028793614 0 0 0 0 0 0.09636875666 25.73344718 283604.7521 5.754697873e-35 0 0 0 0 634.1217476 0 0.4895584716 0 0 1.958829382e-10 0 0 0 0 9.870272641e-08 3.550514203e-23 0 30.42508704 1.640828962e-16 0 0 3.732010925 0 1.1879228e-22 1.223198357e-19 0 3.023736486e-10 0 8.085252283e-25 0 1.874097132e-07 0 0 0.0001015366382 25.04505337 0 0.0006609230753 7.611561982e-06 0 5.377281589e-12 0 3.625120783e-06 0 0 0 0 2.459501162e-08 0.05186380353 1.280208739e-20 0 0 0 0 1.510770149e-13 2.648355794e-15 28443.17406 8259.490306 0 0 0 0 0 0 2.461451615e-10 0 0 0 0 0.01609705565 0 2.650151349e-30 0 163.6475311 0 0 0 0 0 2657.430059 0 0 0 0 0 0 1.07968835e-27 2.866933365 2.721269763e-24 0 0 2.420280598e-10 0 0 1.989258289e-11 0 0 0 4.953460059e-07 0 0 0 0 0 0 47035.96871 0 0 0 0 0 0 0 1.249174394e-10 0 0 0 9.331477254 0 0 4.171681191e-10 0 0 0 0 0 0 0 117.0175643 1.027790343e-05 9.838269784e-15 0 0 8.848150901e-06 0 0 0 0 5.308558241e-18 3.956246489e-06 0 4203.218006 0 0 0 0 0 0 0 0 0 0 0 0 0.05488736718 0 0 0 4.705156618e-16 0 0 0 0 8.499997551e-10 0 0 0 0 0 +0 0 0 0 0 0 0 90027.96853 0 0 0.01197084195 0 0 0 0 0 471373.3174 0 2.262621006e-15 0 0 0 0 0 0 0 0 0 0 0 0 2.313551838e-12 0 0 0 0 0 0 0 0 2.339906661e-08 0 0 0 0 1.914304499e-09 0 0.0001652398763 0.1618294749 0 1.795516557e-21 0 0 2.214211931e-08 0 249.8381239 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.116533318e-15 0.003200431352 0 0 0 4.295916129 0 1675269.887 0 1.852146597e-24 0 3.302309719e-21 0 0 0 0 21282.9776 0 1.094687879 991154.0392 0 48481.62552 0 0 2016444.609 6.914388522e-07 0 0 0 1.879585207e-12 0 1053.591285 0 4.062848949e-12 0 0 0 6.411081966e-30 0 0.05351219572 2.418180435 4.093187559e-14 0 0 0 603.6054243 96449.43671 0 0 0 0 0 3.670830701e-09 0.2468062258 0 0.1996021937 0 0 0.0527131149 562.1478518 0 0 2010773.121 0.002048116868 0 0 1.383464009e-10 3.017853847e-20 41.32527507 0.0004298779687 1.240886037 7.909600987e-14 149.2481793 0 1.172108244e-29 0 29.5952198 0 0 0.03430769414 3.990668696e-05 8.988763934e-26 100888.9042 234.9027924 6.264502091e-12 5.370067413e-09 4.48274048e-06 0 0.000249967179 0.001699232003 4.081646655e-13 0 0 128236.3824 0 0 0 0 24508.73462 8.991318651e-26 2.590741238 0.007929149997 0 0 1874.095996 0 4357.977997 0.1855012119 0 0 1134315.873 1.137150492e-18 0 0 0.001217307957 0 0 5.396630862e-12 0 923803.1677 2.933171119e-18 0 2381982.203 8.166754905 0 0.01020261653 0 4.244353107e-06 2.498412558e-06 0 0 0 0 0.09245179893 0 0 564492.9305 0 0 3.861766905e-13 167.395645 0 0 1.002091513e-12 0 0.0006191827952 765070.5203 0 0 5.847557049e-15 5.574156956e-20 1.635738838e-07 0.0003251304583 4.665626985e-10 0 5.139736206 0 0 0 0 0 9.077007208e-11 1890.584701 0 7885.43611 0 0 0 0 0 5491.68415 0 0 0 289112.8024 0 7.791804129e-05 0 0 0 0 16589.78259 0 0 0 0 0 0 2.872771612e-14 0.08087036969 724928.5894 0 0 0 1.934065534e-08 0 0 0 174371.2768 0 0 0 0 0 0 2.227107062e-07 0 0 0 0 0 0 1.985769702e-19 0 5.57338463e-08 3.16976357e-06 0 0 0 0 6.346885717e-05 9.843363474e-11 1.117277868e-34 1.107070608e-19 0 1205.216118 0 0 0 +0 0 0 0 0 0 0 1.013329826e-17 0 0.1758184156 0 0 0 0 0 2.943893242e-07 1.395157727e-25 0 0 0 0 0 0 0 0.2776757262 0 0 0.1080194221 0 0 0 0 0 4.046941071e-05 4.249487146e-24 1.076669437e-09 2.012136953e-18 0.0003884620571 0.06658073011 0 2.602953459e-09 0 0 0 0 0 0 0 0 8.759933344 0 0 0 255510.9614 0 0 0 0 0 5.888243365e-17 0 7.338416918e-12 0 0.0520555611 1.265568258e-10 0 0 0 0 1.358313884e-08 6.305075326e-15 0.02686074377 0.3831981052 3.658048008e-11 9.930741471e-18 0 493789.6967 1.680259995e-09 8.421937431e-23 9.851579761e-17 0 2.974177492e-05 0 0.001708227787 1.094889574e-11 0.003007709905 0.009629133534 0 99.06711434 7.285154653e-11 0 1516614.017 0 2836406.934 80.68021417 0 0 0 4.682986554e-08 0 1.723677744e-24 0 1.107406949e-14 1.813952745e-05 0 565572.7638 0 0 0 0 3.708732588e-07 0.001227207096 0 0 0 0 7.816064545e-06 0 0 1187.029569 0 0 0 0 1.163104177e-19 0 1.51270374e-16 0 0 3.252872372e-14 0 17.42039626 0.1089456228 4.542151924e-08 0 4.646066395e-14 0 0 1.900665066e-12 0 3.42068787e-18 3.229945305e-25 0 374.8578338 0 0 1.424655938 4.95870655e-40 5.197081531e-05 0 40052.18432 7.496300533e-09 7.065887069e-14 0 0 1.390920537e-20 0.5332214759 1.497820707e-21 0.102106882 1.339356752e-10 0 34449.16466 0 0 8.226411011e-24 0 1.852199239e-05 0 0.6698797344 0 4.773544089e-11 4.605533723e-08 1.450095828e-05 0 0 4.921190168e-16 0 4.294883464e-11 3.635923061e-23 0 386185.5134 0.7210092884 1.180977255e-07 0 0 4.52865067e-06 0 0 298537.9091 0 0 1.060235796e-07 0 0 2.28620251e-11 0 0 0 469697.5173 0 0 0 0 7.187439308e-15 0 0 0 0 0 0 0 0 0 0 1.530053844e-06 0 714499.3691 0 0.002830315592 0 0 5590.519823 0 0 0 0 0 0 0 0.0002887547322 0 0.005969969269 0 0 0 0 0 1.036921939e-12 0 0 0 0 0 0 0 0 0 2.732816234e-06 0 0 0 1.142847597 0 0 0 0 0 26.83149483 0 0 0 0 0 9.398732658e-09 0 0 0 0 0 0 0 4.725856141e-09 0 0 0 2.287957109e-27 1.893102764e-26 0 0.2056651181 0 0 0 0 0 0 0 0.5187163708 0 0 0 0 0 0 0 5.957240566e-20 321523.3578 0 96442.87742 0 0 +0 3.920112834e-12 3.484389155e-07 0 4.138345552e-05 0 0 42.55317226 0.03391068738 0 0.2743806686 0.001349347116 0 6.345627176e-09 0 0 0 0 1.950048919e-17 6.802292273e-23 0 1.051366823 0 0 0 0 3.730513199e-05 0 2.447605673e-27 0 960885.0653 0 0 0 0 0 0 0 0 0 0 0 0 1.811019836e-10 597.0664756 3.400413755 0.03045065121 0 0 0 0 1.437596643e-26 3.1807114e-12 0 0 0 3.406473337e-11 6.546899274e-05 1.80042837e-07 0 0 70.10266501 0.08722365534 4.02732648e-06 0.0002271770804 0.0025868742 6.464248145e-06 0 548289.9821 0 0 0 0 0 0 0 307.4175265 0.001154157174 0 0.003130501906 0 0 0 0 0 1.053337177e-11 2771.184408 112420.3143 0 0 0 92.11431904 0 217.7817304 2.031675864e-07 6.710413077 0 173420.9428 0.001554009061 0 0 11.54872246 0.004132436475 1.179147972e-12 0 37.88867301 0 0 25579.24187 0 5.006901065e-17 7.069771083e-17 0 0 2.17609906e-05 0 0 1.126460657e-08 1.279121599e-09 0 2.769018124e-10 0 0.2963826826 2.469323831e-14 0 0 1.601760415e-08 0.3879634519 0.0004484477307 3.707246107e-23 1.268730276e-10 0 1.309374596e-16 0 1.097480441e-17 0 0 1.523878961e-17 8.502184252e-15 1.631845778e-05 0.06049964069 0 0 2.303428844e-11 0 0 0 0.762010897 1.232558544e-21 1.258474243e-10 0 0 0 2.314766927e-09 0 1.565390863e-09 4.895385126e-18 4.358575584e-05 0 0 5.266969051e-15 7.259389023e-06 0 0.0006543409838 0 0 0 2.223565715e-13 0 2.592840973e-22 2.792348904e-10 0.008543778628 0 8.387673189e-11 0.001347093078 106.8074556 0 6.87918726e-12 0 0 0.0002540128865 0 2.510310745e-13 0 2.111535532e-10 3.091126254e-09 0 72644.07687 9.272290626e-15 2.261546631e-07 0 4.053378646 0 0 1.078916852e-07 0 9.115216053e-07 6.218675649e-07 0 1.303961403e-08 0.66758054 0.0001153928386 0 1446254.665 0 60185.75983 0 72442.29588 0 800021.4273 0 3.797071489e-08 0.0001360611716 0 0 1.545189011e-12 0 0 5.698322136e-13 0 0 0 0 1.205876504e-30 0 0 0 1.553973562e-11 0 0 11087.05105 1.142419241e-15 0 0 0 0 0 2.352614354e-05 0 0 0 3.197828958 0 0 0 0 1.040682541e-12 0 1.595458923e-15 0 0 1.567883843e-07 0 0 0.0005058761832 0 0 4558.992689 0 0.3274873491 1720.627862 0 0 0 0 0 0 9.029331664e-17 0 0 0 6.526802122e-13 0 0 0 0.2137809731 0 0 0 0 0 0 0 0 0 0 0 5.409612095e-11 0 0 0 0 0 0.3912907484 0 0 0 0 0 6.038663124e-21 +0 3.248592931e-16 0 0 0.1552627637 639221.3573 0 0 0 0 0 1.608842616e-06 0 0 0 0 0 0 0 0 0 0 0 4096.351205 0 673657.3023 6.652436911e-22 0 0 0 0 0 0 0 2.494680685e-14 4.871495734e-16 62.27094239 0 0 0 0 0 0 0 22.34452542 0 0 0 0.4123114057 4.749629498e-07 0 0 0 0 3.384053212e-05 0 3.007963096e-14 0 0 0 0 0 0 0 0 0 3.234271341e-25 0 0 0 0 0.000481234388 41510.46405 0 8252.258335 7.308864015e-12 0.001474835721 60.61003543 2375509.95 0.02891743528 0 0 0 1103087.154 0 0 1.352477359e-10 0 3.956846486e-13 0 7.311119817e-09 0 0 0 0 10.19550861 0 0 0 0 0.0005746767039 0 0 0 0 1.734532829e-19 0 0 0 8.761069971e-08 0 0 3.37980732e-29 2.090720484e-05 0 0 3.157589158e-20 0 0 0 0 0 0 3.341373086e-09 4.945616118e-12 0 1784160.019 0 0 128.6164455 0 37.82341658 0 0 0 3.418482154e-09 0 1.428051591e-36 0 0 0 0 0 2.513045835e-11 9.246593382e-16 238816.5473 0 441477.0104 64.53628122 6.391610138e-08 3165.496198 0.0001003152261 0 0 3.647642814e-07 1.330448104e-05 0 0 0 4.494572661e-06 535.6365545 0 1.705062368e-07 5.531077743e-08 0.0202272132 467.1362301 5.512951302e-30 0 0 0 0 9.60631621e-05 0.001475523517 1.594077472e-10 0 0 0 2.882873262 0 0 0 1.308325927e-14 0 0 0 0 0 0 2.885662102e-08 1.208706612e-11 0 0 246365.6508 0 0 0 3.604686379e-08 0 1.062092089e-17 392657.1239 0 477643.5765 0 0 0 0 0 0 0 0.01018308509 0 0.01391094183 80.25424011 0 2.428989766e-07 723.8320639 0 573.6358507 0 3.961961716e-12 0 0 0 9.867659651e-08 0 0 0 0 0 0 0 5.248129541e-06 40821.73581 0 5.278025673e-32 0 0 9.831442771e-07 1325.869723 0.0002289694222 0.03277184756 0 0 0 0 0 1.260474001e-12 0 5.031525917e-26 4.792138437e-06 1.461990696e-36 1.267152015 3.371231989e-05 0 0 4122712.238 2.927203664e-14 0 0 0 96198.04273 0 0 6.742685524e-27 0 0 0 0 0 2.843201014e-05 275830.1596 0 0 0 0 631.4971277 0 0 0 0 0 8.391026928e-19 0 2.272816924e-23 0 0 0 0 0 1.090977062e-12 3.090803056e-09 0 0 0 0 1161508.222 0 1.11355105 0 0 +0 0 0 0 0.2519347913 0 3095.514417 1.491286122e-15 0 0 0 0.03558740287 0 0 0 6.96138493e-14 0 598308.861 0 0 262028.034 0 0 0 0 0 535752.7256 0 0 0 0.0007841520731 8.250177537e-07 0 0 0 0 0 3.326265082 48742.93792 0 151396.2032 0.1385747091 0 0 0 0.07284708988 0 0 0 0 0 0 0 7.8215504e-10 0 0 0 9158.027943 0 0 6.238371784e-11 1192.405037 0 0 8.525705689e-15 0 0 1.350907153e-10 1.506379988e-12 6.821236966e-22 0 260.6105508 0 2.131194811e-11 366.0679527 0 0 0 6.403416746e-05 0 0 0 0 0 2.175987448e-09 0 0 0 0 1.847018007e-12 0 8.291221839e-23 0 2.2298973e-07 0 2.955682053e-06 0 0.0006930405871 0 0 0 0 0 0 0 0 0 0 3.451809064e-17 0 0 0 0 0 1.735730945e-31 716782.2235 1.404612629e-05 0 0 2381.210504 0 0.08910946363 1.112646786e-15 0.724286294 0 0 2.246834259e-14 2.572135801e-12 3.80046171e-06 0.05529099776 0 0 1.050782531 7.679818353e-08 13862.70826 1438.511041 0.06342996261 0 0 5806.775522 0 212.4356124 0 0 0 0 0.07256248343 0 1.052643211e-20 0 0.7855911538 265880.4681 1.131228009e-29 0 0 6.139759994e-18 1.017842436e-06 0 624.8648244 0 0 0 0.000683220406 0 1.583803825e-09 5.074334844e-10 0 0 0 0 0 0 0 0 8.375264007e-08 3.014403301e-10 0 1.503012259e-13 0 8.941721888e-05 0 0.008387302043 3.483205663e-25 1255563.603 0 1.252928756e-10 0 0 0 0 0.000182473342 1.693075091e-07 6.97141368e-13 6.39895529e-13 0 4.486463364e-05 5.995707723e-11 0 0 0 0 3.756709048e-05 1.259264868e-06 0 0 0 0 1.062310234e-06 0 8.408977078e-09 0 0 2395.904728 0 0 0 0 644935.4787 0 34320.42344 0 1.089085375e-32 8.522940944e-09 0 0 0 1.319574566e-09 0.378063196 1.299558419e-21 0 0 0 34508.32808 0 0 3.424043042e-08 0 5.464541245e-14 2.795123021e-14 8.586730353e-07 0 0 0 2.076355446e-09 0 3.989920752e-18 0 0 1.190238044e-10 0 0 0 59.40603595 0 24.50996479 9.29759832 0 0 0 0 0 0 1.072520719e-12 0 0 0 0 0 0 0 0.0001825480361 0 2654.58191 0 0 0 0 0 0 0 2.885622807e-07 0 0 0 0 0 0 0 0 0 41.91747791 1.708157252e-11 6.009181964e-08 0 0 0 6.469901564e-11 0 0 0 +166431.2518 0 0.3035419308 0 0 0 0 0 0 555303.6068 3.762491068e-05 0 2.687218672e-14 0 0 0 0 0 0 0 0 7.744385958e-12 0 0.0007676407115 0 0 0 2.258569111e-09 0 0 5.123154298e-13 0 1.857259327e-06 0 24.84778196 0 0 0 0 0 0.02420350656 0 0 75.93963384 0.005782643943 0 4.458468993e-07 0 0 0 1.025184909e-17 0 0 5.324891629e-09 0.111652155 0 0 0 4.055964648e-17 4772.367835 0 2.450907034e-09 0 264289.0189 3.783643077e-15 0 106.3909831 0 1785749.277 0.2791935488 0 0 0 0 0 2.095543487e-10 0 0.002144263153 7.980670684e-26 0 1301614.486 0 0 0 0 0 4.104528483e-11 0.0001322016928 28921.36414 0 0 0 0 0 8.63227476e-12 3.311817422e-06 0.2416504192 229600.9698 0.1387186223 15082.86211 0 1.74169892e-06 6.007230827e-17 0.0005994715387 0 41322.08294 840.6216037 0 0 2.26401336e-22 0 900177.1736 149.9603933 0 47230.50742 1.144732655e-07 3.939853151e-17 1.184718513e-07 0 1.342997358e-13 0 0 9.332793462e-06 4.817899935 221.1086751 3.380933598e-20 0 0.1281696686 0 3.361545096e-25 0 0 0 1.931083962e-09 0 0 0 1.481381744e-16 9.722267125e-11 22905.16783 0 0.9927579474 15894.44351 0.004731992934 0.00632169837 0.006562978853 0 328558.1505 0 0 0 0 0 0 9.905942476e-27 3.522428143e-36 0 0 0 0 2.256194653 1.286560523e-11 0 1.129586375e-14 0 0 1.309560777e-07 3.064012098e-19 0 2.06393319e-08 0 0 0 4.706458827e-11 0 0.09792622721 0.03070083243 0 0 0 7.872303456e-22 0 4.189176428e-11 0 8464.332056 0 0 2.055863103e-20 87.28032377 0 0 5.700579656e-12 0 0 0.0004281114882 229.4787282 0 0 0 0 0 2.506313167e-30 0 4.419358859e-06 106523.5903 0 0 279298.5345 4.995181071e-22 9.458996444e-21 0 0 0 0 1.205751524e-19 0 0 0 3.955282473e-28 262.6249163 324154.4482 7.209603347e-09 2.000026289e-12 0 0 0 0 0 0 0 0 0 0 1.829209959e-06 265969.5345 0 398121.7076 0 0 0 0 0 1.514898851e-25 6.011445369e-11 0 0.03389748397 4.982178435e-13 0 0.000530331565 0 495369.0272 0.05457801711 0 0 7.434264567e-24 6.997668499 0 0 0.0003092050913 0 0 0 2.347973842e-07 0 0 0 0 0 0.0008774494724 0 0 0 0 0 0 0 0 0 0 0 0 0 9.863162831e-18 2100221.621 0 0 0 0 7.115885352 0 0 0 0 7.690363752e-14 0 0 0 0 0 0 +8.735877661e-09 4.463097185e-12 0 0 0 0 0 0 1.205244718e-15 0 0.01495836066 0 2.678683723e-10 0 0 0 0 1538.481579 0 5.553227148e-13 0 0 0 5.250430455e-05 5.812433033e-10 0 0 0 1.903105689e-07 0 0 2.090351436e-11 0.3180262216 0 0 8.17834919e-10 0 2.981222837e-15 0 0 1.923459578e-09 0 0 0 0 0 0 9776.67667 0 0 0 0 0 0 0 0 0 0 0 0 0 1.796181878e-12 2943.094858 0 0 0 0 0.2708644893 0 0 1.178274641e-25 41177.55425 0 0 0 4.014895443e-10 0 0 0 3.181096965 0 0 404081.7733 0 0 4.512768619e-06 0 0 0 4.807440547e-18 0 713.3255975 0 0 0 0 2.169533169e-12 0 0.001934894093 0 0 0 0 0 0 0 4.982285621e-29 1.120477903e-07 0 0.02662133436 0 0 8677.265575 3.416167697e-14 2.268810922e-21 0 16.68120493 4.789582607e-08 3.351964705e-06 0.00028327667 4.573416379e-09 0 8.231034624e-11 2.127937941e-11 1.164299489e-19 1.105535962e-09 6.383162837e-12 0 2.069813745e-10 16815.31021 2.282981943e-10 0.2447115819 0 0.08926546318 4.193847807e-10 0 0 104.9119616 0 0 3201.866703 0 0 0 2.160299003e-06 0.07923461699 0 1507103.128 0.0006261474359 0 276.8512984 0 2.107049058e-06 0 0.001276792565 158.604465 2016130.536 0 2.491281298 0 3.105529295e-19 0 0 0 134.8603175 0 1.415147177e-11 0 5778.858423 0 0.001809584364 0 1.98426101e-06 0 0 0 2152.468701 0 0 0.1321076309 0.005222544269 0 456331.7012 0 493549.9309 0 0.005419361018 0 0.6297333302 0 973.7746696 0 0 0 0.02129578828 0 1186376.093 34168.24404 0 0 0 0 70766.50055 0 0 0 8.733838624e-13 0 0.06963453913 0 0 6.805023348e-05 0 7.091848035e-08 0 0 4.121337267e-06 0.0003110595237 0 2.276186538e-12 1.691561787e-24 23.0405939 0 0 0 12.63338531 0 0 0 0 0 20.40324537 0 2.88275657e-13 0 0 1.840801305e-05 0 0 485.1542428 0 0 0 0 0 0 1.701484857e-11 0 0 95927.76765 0 0 0 0 0 0 0 0 0 3.358545384e-05 0 0 0 49346.08286 0 6.214708775e-11 0 0 4.975402722 33.19758902 0 2.251092938e-15 2.463422931 0 0 0 0 0 0 0 0 0 0 1.360989298e-09 0 4.726011275 0 673.3355536 1.056405765e-24 0 0 0 0 3.697099225e-06 3.39110385 90.58677537 0 3.83477395e-08 0 8.49094182e-20 +60625.1734 0 0 6.21191585e-16 0 0 0 0 0 0 0 1985.042452 0 0 0 60563.37079 0 0 0 2.421474696e-11 0 150927.535 0 0 0 1795.570539 0 0 0 0 4.687424648e-10 0 1.759536678 0 0 3.843451607e-09 0 0 0 0 0 2.544258113e-13 3.619596718e-10 0 0 0 0 0 0 0 0 3.739788084e-06 0 1.660368098e-12 0 0 0 0 0 5.156271177e-08 108.9860068 1.481306558e-13 89.18258186 0 0.4741500149 0 0 0 0 1.236707419e-11 0 0 0 0 0 0 0 0 0 128906.9463 0 2.973092178e-08 0 0 0 0 14753.71944 0 0 0 0 0 0 1.88942624e-09 0 4690.498083 7.36924782e-12 0 2.039955845e-07 0 0.008754737812 0 0 3.557073091e-05 1.455029948e-24 11454.48263 6.07845941e-10 16.9713465 0 1.295043811e-14 0 1.764569677e-11 1.138107459e-13 0 0 0 552.9355096 1.434823155e-12 3833213.285 0.0001226656131 5.671807362e-05 100353.3392 0 167.101273 0 3.873409565e-06 0.0001935973603 0.0002185942864 0 30194431.95 1.381220197e-33 0 1.039554719e-15 314.783117 0 0 0 0 0 1.157097464e-07 0 5.560121462e-12 0 1535557.957 0 0 0 0 4.219572402e-05 0 9.553303804e-17 17.87458106 0 0.004309457844 0 0 0 9.41232439e-29 1.101795395e-06 3.443004602e-15 0 95769.24132 0 0 0 0 0 1.153462351e-16 2.946113249e-12 0 157358.0517 5.309473271e-10 0 4.459181061e-06 7.764383912e-06 394781.1345 17237.45692 0 0 0 0 0 0 14.2795774 3.031489737e-14 0 685.3121184 0 0 0 0 0 0.01254553694 1017.060986 35.02618843 0 0.009937599784 0 0 0 0 0.1707657692 3399.243002 0 0 17635.93192 382760.7729 9.064020033e-20 0 0 0.0004630780938 0.001771050068 3.055057276e-05 0 0 2160.874142 0 3.287283535 0 0 0 925415.1019 5.099300081e-26 0 0 0 0 0 6.447939295 0 0 0 0 0 1.002007692e-21 0 0 0 0 1.457877283e-09 586.1628116 0 0 0 0 0 0 0 456.135566 0 0.09634102435 9.55406217e-13 0 2.321975789e-08 0 0 0 1.562096926 0 1.844804232e-12 0 0 0 5.046450127e-09 391.1816823 3.178801357e-05 0 0 0 0 1.409863141 0 0 0 1.164771647e-10 0 0 3.199166847e-11 0 2.474745204e-07 0 0.0007044397311 0 0 0 0 0 0 0 0 0 0 0 0.1170585778 0 0 0 252.2321728 0 0 +0 0 0 0 0 0 0 3.463869003e-06 5.945188634e-06 0 0 0.001221430928 0 0 0 0 0 3.915087741e-14 0 0 0 0 0 0 0 92919.48562 3.182479226e-21 0 0 0 0 0 0 0 0 86.66641792 0 0 0 0 0 0 0.002756933983 5.147686956e-22 0 0 0 0 4.719146246e-11 0 0 0 0 372896.3311 0 0 5.920070375e-15 542716.9123 0 0 0 0 0.0002681914894 0 0 0 0 2.05023274e-07 4.430251082e-05 0 1.053301136 0 0 9301.126684 0 5.920003322e-06 0 0 0.01297248458 0 5.439492591e-05 372684.458 0 0 0 0 4.484989056e-07 0 0 2.039196346e-16 0.002852841825 0 4.044309178e-11 0 0.06781188025 1.203029701e-09 0 2.187053499e-14 0.000510716132 4.346380384e-09 0 0 3.145561434e-24 0.009545579901 0 7.611296705e-24 0 1.774867606e-13 4.838177425 0.01768183794 1.017911566e-19 0 5.740514471e-35 1.739407833e-14 0 0 0 2.67392043e-08 0 5.232478702e-10 1237838.951 0 1.406560611e-12 0 4.929706402e-16 0 0 0.1476160357 3.152664157e-23 0 0 8.150209718e-15 0 3552.788497 0.001447392853 1.689282949e-20 0 0 0.002301094761 33.42749477 1.945905359e-08 4.385624279e-14 0 3.729290907e-07 3.6216007e-26 2.1992581e-12 0.002559480337 0 0 5.970770996e-05 5.327021682e-12 0 1.197325454 2.179395694e-15 0 3.683195406e-17 0 0 1.912315522e-18 0 0 0 2.668210552e-13 0 0 7.919344752e-10 0 0 0 355060.4995 0 0 0 0 0 0 2.996054739e-22 0.0006960887276 0 0 0 0 6.233221733e-21 0.003467073357 0 17.83115399 0 0 0 0 0 1.260743305e-05 0 0 0 0 0 0 0 0 0 469025.2115 1.686863124 2.10857763e-10 0 0 0.0002070711655 0 0 1.993787881e-07 0 11267.53264 233718.6649 0 0 0 23.56739801 0.01866807374 22891.67138 0 0 0 0 0 0 0 0 0 0.01107766596 0 0 4.835121797e-05 0 4.092175875e-08 0 0 0 0 0 0 1.157174843e-19 0 0 0 0 0 0 0 0 0 0 0 0 1.388624119e-10 0 0 0 0 0 257622.9017 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14871.19076 0 0.01061715172 0 0 0 0 0 0 0 0 0 1.48481508e-12 1.344915586e-15 6.529290532e-09 0 0 0 0 3.930520299e-07 2459311.585 0 1.031772154e-05 +0 0 0 0 0 5.082041775e-11 5.716806726 3.26153514 0 0 0 2.2755491e-06 0 29.35087577 0 3.957504918e-10 0 3.380601426e-16 0 0 0 9.140887731e-24 85447.74728 4.669943329e-12 0 0 0 0 0 0 0 0 3.30704993e-05 0 0.0006384392504 0 0 0 0 254.5573154 0 0 0 0 8.102512833e-14 0 0 0 0 0 6.238541783 0.0003188298721 6.460990837e-07 0 0 0 0 0 0 0 0.09131264174 0 0 0 0 1.132278919e-06 4.252115822e-08 15.10500434 0 0 0 0 0 1.588188016e-13 0 1.299196162e-09 2.987629103e-20 3.494063984e-12 4.076215859e-16 0 0 0 3.320036196 0 0 2.720632118e-21 9.44460686e-24 0 3.915774279e-33 0 0 0 147844.8769 0 0 0 0 1.869454885e-12 0 0 0 14.4202268 83.574467 0 0 0 0 0 0.001691176579 5.109692597e-12 0 8.736103747e-18 0 0 0 3.072648033e-14 0 1.581653915e-08 2429.010741 7.224573572 2.796379289e-14 0 0 0 0 0 274634.442 0.01626255432 0 0.1865526376 6.985012895e-30 0.8945331928 0 0 0 0 0 5.158990051e-11 2.241358573e-05 3.692432864e-17 0.6065480733 1.967514318e-14 8.401089352e-09 7.792351933e-13 1.592191912e-21 2.232362187 0 0 0 2.36347996e-05 0 5.162389897e-15 0 0 0 0 0 0 0 1.025853151e-14 5.269287595e-10 0 3.093133603e-08 0 0 2.989521434e-12 2.826249734e-13 0 0 0 1.576837551e-09 2.541258473 2.200864424e-13 0 33.76146961 4.366864626e-07 0 0 0 0 0 1.617528282e-10 0 7552.047041 5486.339247 3.198155327e-06 1.877473694e-07 1.028028629e-16 0 0 0.001234036047 0 4.843438832e-11 0 0.157286857 0 0 28765.42433 0 0.001919481674 4.450139884e-26 6.184887567e-11 0 0 0 0 0.005318781082 6.649269142e-11 0 0 2.213829463e-12 0 2.493708627e-08 0 0 89479.7312 0 64865.77734 507349.3596 0 1.029226654e-09 0 0 0 0.02876928432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1061490.187 2.832321564e-07 0 0 0.1115058175 0 1285.852893 0 0 0 1.153401784e-10 3.29627137 0 5.647310037 0 8.74908987e-08 0 0 0 0 0 2.124363233e-07 4.888723555e-06 0 0 0 0 0 4436401.67 0 0 0 0 1.015841188e-10 0 0 0 0 0 1.372067589e-15 6.657965598e-20 0 1.062099325e-10 0 0 671881.2479 1.528069239e-05 0 0 0 0 0 0 0 36313.98025 0 0 0 0 0 0 +0 0 2.635562468e-25 0 0 2.849035774e-07 0 0 0 0 2.004881587e-09 0 0 0 1.24452295e-10 0 0 0 1.637168379e-12 0 0 0 0 0 0 0 0 0 6.995959367e-10 1.716944697e-08 5.639030029e-19 0 0 0 0 0 0 0 0 0 0 0 0 85518.45256 2.145889607e-06 0 0 4.886561931e-08 581435.8853 0 0 0 2.00420593e-07 0 2.150034744e-12 0 0 0 4163038.986 0 0 0 0 0 50242.86562 0 0 0 0 1.41525844e-08 0 0 0 0 0 2.31993249e-17 0 48.27574549 0 0 2.125666767e-09 1329975.275 0 0 0 0 4.188217745e-11 6.298818113e-17 5.258221276e-05 0 1.473275349e-06 0.000390675432 0 0 482182.1443 94173.45475 0 3.597989966e-07 0 0 6.856428632e-10 0 8.133736569e-10 0 0 0 0 0 0.001495600351 0 9.119054074e-14 0 0 4.334992457e-13 1.805355261e-06 0 0 0 0 0 9.24437308e-17 1.506014465e-09 0 0 2.505961654e-07 0 5.586775452e-27 176.4091351 81245.57802 0 0 2.109525156e-24 0 0.06991794351 0 0.001450573173 9.297271783e-06 0 3425.837293 1.984910335e-06 0 0 1.378041769e-08 1.133904729e-11 9.040694882e-08 109315.1015 0.0410954767 0.0296049981 0.0002735927648 0 0 26720.49655 8.166389119 0 86551.27939 0 6.144929444 0 0 3.080132738e-14 8.351017339e-08 0 0 0.001365280389 0 0 0 0 0 3.377832083e-09 0.5207691181 0 0.007393607897 997945.4362 0 5.905394537e-11 0 0 0 6.386760996e-06 0 0 0 0 0 0 0.003750558832 9.942208629e-21 0 3.426684714e-11 1.794634117e-19 0 0 451.7548165 0 0 0 56557.08024 1.323714087e-25 0 1.882169813e-31 0 6.685227589e-08 0 3.079263078e-11 0.01312269128 3.146080008e-21 0 3.61965442e-08 0 0 1.429247685e-15 4.103443522e-05 0 0 0 1.632566806e-20 0 0 0 0 0 0 0 0 1.940529284e-13 6.426242905e-14 2.853946098e-12 1.822252917e-17 117749.3187 0 0.0003462322901 0 0 0 9.539888325e-15 7.339790483e-11 0 0 0 3.786460534e-06 0 0 0 0 0 0 0 0 0 0 0.1398932413 0 0 0 163177.7326 0 3.142216677e-17 2.742874062e-11 0 0 0 0 0 0 0 0 7.939630476e-05 0 0.001385771247 5.096345507e-08 0 0 0 0 0 0 0 0 2.568057183e-10 0 0.0007280312824 0 0 85.94802982 0 0 225585.4777 0 5.097107238e-05 0 0 6.869849486e-22 2.097930487e-09 0 0 0 148.6831925 0 1.646453139e-08 +246603.336 0 0 0 0 0 0 0 0 5.5878886e-10 0 0.000311476568 173041.2736 0 4.112854067e-14 310.056204 0 1.330423805e-27 0 0 0 0 1.099251245e-13 0 5.784737108e-05 2565809.492 0 0 1.700814406e-07 0 0 0 5.154760888e-08 0 26.01617453 2273958.552 0 0 0 0 0 0 3.965865682e-07 0 0 0 0 7.468517706e-20 0 0 0 1.283354224e-05 1164.959455 0 1.199099907e-23 0 0 6.142077256e-05 23.65148007 0 0 0 0 0 0.0007594953551 0 0 0 4.893539373e-06 216.9034122 3.18070353e-16 0 0 0 0 3760.577682 0 0 0 0 1.486755679e-17 0 209030.0865 0.0004481479977 5.458044169e-18 0.002241020006 5.377133595 0 0 1.654737076e-16 64580.50713 0 0 0 1.81173013e-05 0 4.57457486e-06 0 0 0.003957650758 0 3.462674352e-10 0.000366702316 835.1068256 0 0 0 0 0 0 0 24.27589469 3.064901295e-27 5.087663264e-05 0 0 0 0.5559430549 17052.44709 0 0 2.8687926e-22 2.009759373e-25 1.050031218e-09 0 892757.7269 0 0 4.654863718e-12 0 0.0003458858324 0 0 348.90482 0 7.507150183e-16 0 0 2.986137309e-15 0 1.575488832e-12 0.884777722 0 2.052677028e-11 4.946644947e-31 0 0 0 0.000545497094 1.597734326e-08 3.473974148e-08 56.3580223 5.702405414e-15 2.469444065e-08 0 1.21905213 0 19.18727609 0 0 4.031208083e-14 1.769629509e-28 0 0 1091.872369 4.439511124e-29 1.682740475e-10 0 0 1.066277696e-15 2.905192922e-07 0 5.324131641e-11 75.71814136 161430.5412 0 65380.73058 0 3.91825882e-06 0 4.779901703e-07 0 5.922845445e-37 6.589148967e-20 0 0.009287462967 0.4198214744 1809059.387 0 0 1.913076973e-06 0 0.006429536514 0 0.0002617957739 0 2006207.12 0 1.653952378e-07 7.948430627 4.259449111e-07 0 8.396020724e-18 0 0.03181950381 0 7.033422208e-16 0.8116394195 11748.08766 15612.3762 5.503611154e-11 0 0 878802.215 3.49306535e-13 22437.67318 0 0 0 0 14.97627208 0 0 0 0 6.417666701e-06 4.726524536e-17 0 0 0 0 0 0 0 0 2.48385849e-20 0 4.119238998e-17 0 0 0 4.534908952e-05 0 0 0 0 32.93049899 0 0 2.74559734e-15 3.569773326e-15 0 0 0 0.5320651511 0 0 0 0 0.01306949865 7.553334822e-05 0 0 0 0 0 626322.477 0 0 4574.399182 0 0 0 0 0 0 0 0.3554864411 0 0 4.157827666e-10 0 0 0 0 0 0 0 5.26433888e-20 2.307709294e-12 0 0 0 0 0 0 0 0 1662.741011 0 +0 0 0 0 0 0 0 0.2797939984 6.418585166e-06 0 0 0 0 0.01341958589 0 0 0 0 0 0 0 0 0 0 91.93092136 0 2.194831925e-06 0 0 0 0 0 0 0 0 2.858557834e-10 0 1.067446743e-14 1.902742801e-09 0 0 0 0 0 0 1.657836106e-15 1.483552224e-07 0 7.505873708e-13 0 0 0 0 0.001873076596 152782.2478 0.004158678187 0.005701869736 0.01308647517 0 0.001361991098 1.638562274e-08 0 0 0 0 1.969024647e-07 0 0 2.269106293e-12 8.726954143e-09 0 0 0 0 0 0 35.30938446 9.968531722e-05 0 4494.03052 0 5.504364959e-08 15244.37315 0 0 0 0 5.399107662e-18 0 1.345825707e-07 0.0002813916602 4.291311345e-11 0 0 2.333713222e-15 0 757.5474968 0 0.3403175442 4.015075071e-30 1.15201156e-07 0 0 355889.8153 0 364078.2609 0 0 0 0 7.181610612e-10 5.471832954e-06 0 6.084688632e-14 0 4224.063049 2.978291135e-10 0 2.531383864e-09 0 0 1.870599344 4.024926145e-15 0 0 0 0.03432041515 0.0002925305669 0 58036.70353 0 0 5.711844696e-06 10.26101363 2.974662349e-14 0 0 0 1.672116148e-05 0 0 61.59951857 0 6.242044324e-15 0 1.638310182e-09 0 0 0 0 5.388857605e-12 0 0 45440.78209 13779.61267 3.28401994e-08 0.004843303904 9.907986018e-08 3.050553451e-11 1.0552305e-10 5.058927951e-06 0 1.165998338e-17 0 395222.0029 5.207958056e-12 6.846467233e-07 284.5612403 23636.3917 4.589383174e-11 0 0 0.0003749163484 0 0 5285.218739 3.366370222e-05 0 0 586285.5605 1.250252493e-08 0 0.0001495710069 0 0.6629842925 1152.88486 4.973526101e-21 0 0.749025374 0.1056920334 0 1.140199396 0 0 1.226185449e-06 3.538046449e-14 0.164519848 1.016917342e-34 0 0.187332291 0 0 0 0 0 6.370826779e-25 0 0 2.390533907 1.421530763 7.939869835e-08 0 0 1.020453415e-10 0 0 5.498382559e-14 0 0 0 0 0 0 0 0 0 0 11076.73276 0 0 15346.65221 1.828071296e-17 33205.09753 0 0 0 0 2.037679676 0 4.085088628e-15 0 12.36125492 0 0 0 0.008122604804 8591.551639 0 0 0 0 0 0 0.001275923942 0 0 3.267858268e-20 3.761446581e-05 0 0 0 6.066285141e-22 0 6.168463652e-10 0 3.471000443e-26 0 0 0 0 0 0 0.0001064321105 6.47931053e-12 0 0 0 0 0 24045.49825 0 0 5.566347308 6.669390873e-05 0 0 0 3.024412139e-10 0 0 0 0 0 0 0 0 0 4.238379341e-13 0.006851944958 0 +3.386387582e-13 0 0 0.1957893633 2.620348329e-11 0 0 1.607622025e-14 1624.754649 4.258791851e-21 8.330010441e-19 0 3.367975073e-13 4.385370001e-14 4.998761319e-10 0 0 0 1.856035951e-26 0 0 0 0 0 1.148679589e-06 0 0 0 1.62105452e-15 0 0 4147.888537 3.332732049e-11 0 1442.031191 0 0 0 0 0 33307.79446 0.001361907689 0.0002055568128 0 6.957252408e-08 0 0 0 0 0 0 0.4570260933 0 0 0 0 0 1.57602709e-07 0 0 1.694936368e-11 0 0 0 0 0 1.562535527e-08 2.344761293e-18 0.0007144525253 0 0 1.674095754e-24 0 1.34306388e-06 0 0 0 0.2379780679 0 0.001382706538 2.807864217e-07 7.646024444e-11 0 0 0.01064951568 0.002126712306 0 0 4.893519505e-10 0 8.57578392e-05 0 0 0.008664635254 9.630143643e-06 0 0.2797740676 0 6.82960128e-09 0 4.095158188e-11 0 9.185135935e-06 0 0 4.337369324e-07 0 2.977015168e-07 0.001140803612 0 0 0 0 0.01051652116 0 307.8538375 0 0 2.740441812e-06 0 7.537056105e-14 0 115315.9474 0 7198.255155 1.410421529e-26 0 0 0 2395236.696 0.4012549165 0 0 1.304498233e-28 337578.6154 0 4.822516967e-06 8.23549393e-09 0 0 0 5.965405639e-11 1.747239549e-24 0 0 4.678752726e-08 4.698427376e-09 0 1.005868835e-28 1.24087975e-15 0 0 0 0 0.002017497704 0 0 0 0 7.238054045e-17 0 1.615307415e-11 0 0 7.818293093e-10 0 0 0 8846.201912 0 0 0 0 0 2.863825609e-11 0.08385480523 0 0.00425496845 6.064935047e-12 0 441.1966 5.853958607e-10 0 0 0 0 614569.8055 0 0 0 0.0002996170385 0 0 383011.4693 0 1.02786464e-20 1.229674798e-26 4.11376155e-07 9.622734972e-08 0 0 0 2.848391708e-07 0 0 0 511451.8184 0 0 0 0 2.826520235e-09 0 0 0 0 0 0 0 1.075589036e-06 0 0 0 8.943874579e-21 0 0 0 0 0 0 0 0 0 1.543730155e-16 0 0 0 0 0 0 3.503767689e-08 2.853918448e-23 16684.7959 0.001618456209 711.0162693 0 0 1.374664724e-11 0 0 0 0 0 0 0 0 0 2457.436941 5.617474594e-16 0 554792.1026 0 0 0 0 0 0 0 0 0 0 0 0 0 8.440831498e-13 0 3.298216024e-22 0 0 0 0 0 0 0 35291.66318 0 0 1.359579385e-17 0.116234397 0 0 0 0 0 0 0 1.601180048e-13 0 1.662632163e-08 2.268668216 +0 0 0 0 1.685103504e-06 425705.3838 1.424382988e-20 281.7111649 1.520147358e-07 0 0 0 0 0 0 1.940637635e-08 0.0004868859886 0 11252.92349 0 6.578820914e-14 0 0 0 0 0 1376.090489 0 0.0001224256599 0 86480.06521 0 0 1.266900535e-09 0 36550.3109 0 0 0 2.465739259 5.582471717e-05 0 6.881278424e-19 1.026074482e-09 1.014057662e-07 3.555389942e-16 0 0 5.747166769e-23 0 0 3.652203124e-07 0 4.884190363e-28 0 0 0 0 0 1.039825419e-22 0.300128266 3.593024549e-19 0 0 7.228719942e-15 0 0 0 0 0 0 0.0003494460506 7.007223317e-14 0.2051753708 6.257793265e-11 1.162978032 6.086302991e-12 0 0 0 489.8605704 0 6.468128969e-08 0 924845.474 3.269704048e-09 0 8.324969077 37719.62859 0 0 0 0.00295164111 0.6946000177 0 0 0 0 0 2.379586469e-12 3.079059167 5.973662881 0 0 0 0 677601.6435 2.02176635e-11 11567.86612 2.657655604e-09 5.723633559e-05 0 0 0.03518817675 8.958142471e-09 0 0 0.2039769937 60887.33175 0 0 0 2.018548425e-12 0 0 0 0 0.0003934204821 0 0.02521482035 1.749468861e-10 3.626527104e-11 0 0 0.0001608987856 0 6.870677647e-22 3.135475104e-05 0 0.03103714339 1.069552176e-11 2.349014108e-07 0 0 0 1017.834196 0 1.375776094e-07 6.821156939e-15 0.001105382897 327.9574798 0 19926.80665 0 0 0 2.867596515 5.781010191e-05 5.992931041e-10 0 0.000154499788 0.001349505744 0 2.268830281e-05 0 0 1.794981977e-05 3.618119501e-10 0 0 0 282616.9697 2.823166258e-05 3.685714907e-21 3192.56967 0 0.001754834965 9.124687009e-05 8.69814267e-11 8.852813005e-11 0 0 0.01659677727 1.281913849e-11 0 0 1.91347176e-10 0 3.009166211 3.873631803e-11 0 1.664868488e-10 0 1.050235427e-08 432.4573767 1.196516603e-10 0 0 1.686032936e-11 0 0 0.007801985637 0 0 0 146450.8115 3.295431385e-17 0 0 0 0 0 266938.3369 0 177022.9331 0 0 0 0 1.679712676e-13 0 0.03786571894 0 1171609.466 0 0 0 0 0.9357814958 1.968461403e-13 0 0 4335.453942 82.57716057 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.247327281e-09 6715.59234 0 1.178676169 0 0 0 4.180637084e-17 0 0 0 0 0 0 1.052713824e-14 0 6.778742553e-43 0 0 2.768187943e-11 0 2955048.557 0 0 0 1.375463916e-22 0 0 3.806234682e-15 0 1.237216762 0 68.65505183 0.07435778159 0 0 0 1.84337685e-17 1.377513805e-12 0 0 0 0 0 5.271639309e-12 5.22873707e-05 9.463341498e-18 0 0 1912851.486 3.346295214e-08 0 +0 0 0 5.814338362e-13 1.20139865e-26 0 0 0.002481415761 0 0 0 0 0 0 0 0 0.0002945295081 1.36278107e-07 49206.87907 0 0 1941016.365 0 3.662318204e-06 0 0.00034112231 0.01225378163 0 0 0 0 0.006074101272 0 1463.110155 0.7644640159 1253127.009 2513159.539 5.422510705e-07 0 0 0 0 0 2.128460372e-22 0 3660.158346 0 7.888997033e-05 0 0 0 0 0 0 1.948497029e-12 0 0 0 0 0 0 0 0.001780194933 0 0 1.483998037e-05 0 0 0 0 0 2.280440739e-10 0 0 0 0 0 169370.5405 53.41964963 2.415114392e-08 9.454068915e-09 0 1.692325868e-32 0 0 0 5.883989357e-12 1966.671092 0 0.002341195258 0 0.2461416813 3.729366935e-05 1151757.013 0 0 9.593180914e-12 0 5.234494776e-07 0 0 1.89797217e-10 0 0 0.3009501141 9.205601765e-32 5.964357884e-10 6.28017869e-12 0 0 0 227997.4404 0 837127.3329 5.575014853e-12 44848.4946 0.08107706668 0 1.444824768e-07 8.960414273e-14 0 0 0 0 0 0 1.542079788 0 3.63381373e-11 0 2.812640461e-10 488323.9406 0 9.078014839e-12 0 57.23337509 121.8196202 0.5465526738 1.893390511e-10 7.795780478e-13 1.028936045e-05 311.8340202 1.264795497e-06 0 0 1372239.563 0 0 0 0.3216572324 0 0 0 0 1.510618551 0 1.214529571e-06 6.363311809e-11 0 6179.790996 4.666337998e-07 3.38169839 0 0 0.08966642264 2.515252902e-19 10.1761932 0 639.5192538 0 180.9052605 0 1.661703462e-13 7.495869932e-05 0 68606.87971 0.001794702044 0 591476.1718 0.01714236604 0 0 9.228208551e-20 0 0 3.565335541e-08 3.697885449e-11 0 0 0 0 0 0 0 0 0 0 0 6.887254659 0 0 5.895401149e-09 0 0 0 0 7.923249708e-25 0 0 0 0 0 102325.5514 176602.2291 0.1699566965 0 3.169347804e-11 0 0 0 2.79432793e-13 0 4.389216862e-24 0 0 0 0 0 8.539008557e-08 5.011137749e-16 0 0 1.583519355e-09 5.46599432 11.81420598 0 3.223700907e-11 0 6.119431969e-17 0 0 0 0 0 0 760483.8302 0 6.781942097e-13 43437.81111 0 0 0 30686.0101 797.2217243 0 0.08714885072 0.1931645425 0 0 1142.990399 0 3.507247028e-05 0 0 0 6.041951763e-14 15612.1303 0 0 1.398698242e-08 0 0 0 147695.7637 0 0 0 0 0 0 0 0 5.22560047e-29 117.4047005 0 0 0 0 0 0 0 0 0 0 0 26689.13545 0 0 7.971485383e-28 6011.249995 +0 5250.267233 0 0 0 0 0 0 0 5.023657667e-09 3.852379201e-33 1.43599506e-09 0 52.93093686 101682.9344 0 30.7005811 0 0.02421859385 0 1.435443171e-12 0 0 0 5.140523987e-11 0 1.427055615e-13 0 0 84127.21688 0 1.495270416 0 2.035052398e-11 100754.413 0 0 0 4.510379615e-08 0.0003463142411 19.33012551 0 0 3.056238024e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03604746348 0 0 6.370441012e-05 460069.3831 74.05317845 0 0 0 0 0 1.503649431e-15 5.179922007e-09 0 0.001647305043 0 0 251525.3036 4.659194625e-05 0 0.004107518836 0 0 6782.651305 0 0 31.4890807 1103.827066 0 4.482978395e-11 2.304218025e-09 114998.7155 0 4.976205378e-13 0 2.710555176e-05 1.648953835e-09 2.786905349e-07 5.840439961e-06 1.946700916e-10 0 7.192539327 14.36450744 0 0 0 2.904398884e-05 6.619533879e-05 0 0 7.898585437e-06 106782.2727 0 8.148682667 0 0 5.859740034e-09 1432400.836 0 0 4.308242936e-05 0 1.848552314e-15 0 0 0 0 0 4.208850724e-17 0 0 0 0 0.1107370494 0 0 93.14434086 0 7.479251569e-10 0 1.453874886e-06 0 0 21570.6154 0 0.0003507666206 0 3.512458596e-08 0 0 0 4.700055627e-16 2.552639233e-13 0 5.235123994e-26 0.0009197210653 45177.33546 2.770283325e-24 1.392397758e-07 2.492812262e-13 0 0 252.6546599 1.987724104e-19 767987.8361 0 0 0 1298938.582 3.022743757e-06 1.919689252e-07 0 1.985169485e-09 0 0 1.422433181e-08 1.979394221e-17 3.29200182e-09 0 0 0 0 42.32680457 774.6896473 1.500497302e-14 0.0007869182968 0 1.543344041e-06 2444.791061 0.006846944323 2.813933677e-14 0 2.392947426e-07 0 0 9.257457071e-27 0 2.205773339e-11 0 0 0 9.577351187e-06 624.0098861 0 0 0 0 0 0 1.351127728e-08 0 1.602434493e-08 4469.333419 0 0 0.0002923872512 5.97386165e-25 1625.515911 0 255.6500379 0 0 0 0 5.058241913e-12 0 0 15.45908506 0 0.006805592867 0 0 0 0 21684.30441 0.0005460328415 0 0 1.273189854e-19 8.284823823e-12 9.65695268e-14 5.479364168e-26 0 0 0 0 1.675647726e-29 209451.2331 0 0 0 0 0 0 1.083207631e-22 4.289544732e-06 0 0 0 0 0 0 0 0.02895830108 0 0 0 0 3.307687047e-11 0 0 0 0 4.778119653e-28 0 0 0 0 0 0 0 0 1.130632383e-09 7643.296385 0 0 0 0 9.534936731e-15 0 0 0 0 0 0 0 1.46845985e-07 0 0 0 0 0 +0 0 0 0 0 0 0 1.042730854e-16 0 0 0 7.6750536e-13 0 0 0.08232986825 0 0 0 3.771914217e-07 0 0 0 310.1660143 0 0 0 674996.4752 0 0 46354.94742 0 4.419670509e-15 0 77.45274058 0 6.845375254e-12 0 0 0 12565.35349 0 0 0 3.628839802e-07 0 0 2.407265923e-14 0 0 6.93489001e-06 0 31.02813422 0 0 0 0 0 52.14774519 5801.015038 4.009310657e-14 1.159111801e-12 14.76419762 0 0 5713152.247 0 0 0 1545.566701 235.7611578 0 14.86270464 0.1101009654 6.006530701e-07 0 1.360339914e-06 0 8.623460378e-11 0 9.419421319e-26 0 0 0 4.761458592e-07 287273.1099 0 2972.232993 0 0 0 3.834659497e-07 0.7456337241 0.09052427582 0 3.042606868e-09 0 0 0.1698187292 0 0 0 0 0 0 45948.65324 1.657847434e-05 0.004778361208 0 1.856855013e-05 0 1.124289873e-22 4.581615531e-08 0 0.2922896086 1.022602498e-12 4126.064052 0 0 1.643539559e-12 2.071252363e-23 0 0 0 0 1.73623525e-13 0 0 3.299278042e-08 0.0005121274956 0 0 2.945142058e-18 0.03078402473 0.0009732682168 0 2.017689955e-16 0 0 3.10113207e-07 2.362289299e-21 57.63918815 3.701762128e-11 6.604059145e-08 1.451692476e-05 3.414754868e-10 1.151608791 0.0001790565925 2.175301565e-14 0 0 0.9362252709 0 0 0 0 0 1.481402539e-12 0 1.598570992e-06 1.055183117e-05 1.759696607 0 0 0 1.362106172e-14 0.001389787354 0 0 0 0 0 1.469241658e-12 470224.248 0 409.4677047 0 170415.8393 0.02438669234 1876831.011 0.02740954075 1.366463454e-07 0 1.890591716e-16 0 0 1.274643816e-08 0 60.55510413 5.718138648e-16 4.140369958e-07 0 0 0 0 2581.729473 0 0 0 2.540139466e-21 0 2.863351393e-15 0.0001340318727 0 0 0 2.265006768e-09 0 0 0 0 0 3.51842927e-06 0 2.595756066e-05 0 0 0 0 0 0 0 0 1.543330989e-13 2.239754993e-17 0 0.004954964115 6.205247696e-07 0 0 0.001199133175 0 0 0 0 0 0 0 1.21588563e-08 89521.52107 0 0 6.09944373e-27 0 0 0 0 0 0 0 0.3518032801 0 0.04578199676 0 0 0 9.263144717e-15 2.349343993e-24 0 0 0 0 0 0 0 101.1900509 39.73825174 1.962620274e-06 0 0 5.226503984e-11 0 0 0 0 0 0.0002092314585 0 0 771003.0458 5.076018857e-08 0 0 0 0 0 2009216.192 0 1.078443245e-12 8.284678008e-27 0 0 0 0 2.632968244e-46 0 0 0 0 6.428762241e-18 0 +1.790046875e-12 0 0 6576.349326 0 0 0 0 1.14614588e-08 5.487903357e-13 0 0 1.224420401e-16 10.43515552 0 0 0 0 0 0 0.00128791862 4590.378392 0 0 0 5.374596721e-07 0.001757503258 0 0 0 3.859616311e-14 0 0 0 0 0 0 0 0 0 1.706533812e-06 0 0.0001129231751 0 0 0 7.627723579e-19 0 0 0 11.31966728 0 0 0 0 7.742289794e-09 0.06743682812 1.674679171e-15 2474840.697 3.001958619e-12 9.094683857e-05 1.729389681e-20 1.046449203e-14 0 0 3.866857493 0 0.1193416888 0 0 3.450285061e-09 0 5.130035413e-07 8.564076253e-13 0 0 0 0 1.869251155e-07 2.097697225e-25 8151.186955 0 0.2222863088 0 0 536330.3428 0 0 0 2305770.742 0 1.050226527e-07 0 6.639768269e-07 0 0 2.956941327e-22 0 0.000259148351 1482.604486 0 0 0 2.986504273e-16 0.04240848051 0 0 0 0 0 0 5.757901516e-12 0 220880.3026 0 0.0001059887169 0 0 3.190718599e-29 0.07104754564 357345.1666 0.4284188215 2.506483078e-19 0 4.115904926e-07 42.60198956 0 0 0 0 0 2.361818162e-11 0 3.225299286e-14 0 0 0 883718.3398 7.385986575e-09 0 0 0 0.04028177709 6.122651113e-17 0 0 1068129.958 0 0 0 0 6.027116777e-13 2.696278707e-18 7.161553947e-20 0 0 0 0.00120844615 0 0 2.10136467e-05 0 0 0.0002658105799 1.844538741e-10 0 0 2.321588286e-07 2.376845386e-12 42316.04434 0 1545.256452 0 1.630249041e-05 3.861324342e-08 0 9521.550646 1.710931477e-08 0 0.6319811164 0 1.113622305 8.794080404e-16 0 3.199743937e-11 3.404525251e-05 0 3.287150107e-11 0 0 0 0 4.187993473e-13 0.0009478060647 0 1050969.194 7.033340789e-12 0 0 0.0004066554872 0 0 0 3.5988995e-12 0 0 0 0.8612239876 0 1048.377778 0 4.592868432e-21 0 3.706505271e-09 0.003157439837 0 2.908101966e-08 1.348853457e-23 0 0 0 0 0 1078189.659 0 1.631333346e-09 0 3.713200506e-11 2.571557733e-05 0 0 0 1.3112347e-06 0 0 0 74.41282048 0 1.30865473e-27 0 0 0 2.660632323e-08 0 0 0 0 0 7131135.849 0 8.400916331e-10 0 1.44034927e-05 1.155007538e-25 0 8.375519416e-12 0 0 0 0 0 0 0 376584.5888 0 0 0 0 0 0 0 0 2.862704925e-27 0 0 1.208560343e-13 0.0004623018638 0 0 0 0.003650691515 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.034506557e-07 0 0 +0 0 0 0.03697677601 0 0 6.421955824 0 8.550243115 0 0 0 3.873528188e-12 4.827766654e-16 27792.99546 5.847417939e-13 0 0 0 4.948161609e-31 0 0 15231.31551 1.03980164e-14 0 67.10135633 0.6494087094 0 2.706716651e-28 0 0 1.514877208e-20 0 2.383941187e-15 0 1667.145551 0 0 0 2.736853227e-13 0 0 0 5.386048079e-08 0 0 1.554343172e-27 0 0 0 0 1.831443263 0 1.00410717e-26 0 0 0 35.86019583 9.578731773e-06 0 0 9.583026382e-14 2.269867905e-09 0 0 0 0 0 0 0 0 197026.701 20.13071461 0 3.828739472e-29 0 0 0 0.2372147998 5.588341001 0.05620528901 0 0 0 0 0 0 5915058.504 0 0 1.544582727e-16 5.122007302e-25 0 3.229834642e-05 3063.98087 0 0.03464919353 0 0 4.471258086e-12 9546.462938 0 0.06483295101 3.912180798e-19 0 0 0 33060.00375 0 0 23.02579566 0.1955424988 0 3.058927002e-11 3.953493751 8.510271488e-07 2.345289852e-14 0 0 8.189236203e-07 658.1285529 0 0 885.4678075 0.006050555834 0 1114.329651 0 0 0 4.787642741e-06 0.380973861 0 0 0.001442666341 2.980768901e-07 0 0 0 1.773161207e-10 6.097494714e-12 0 0 0.0003535282736 0 9.88881684e-05 0 0 1.907564416e-25 167.343219 0 8.009106256e-12 0 0 0 76.22456552 295347.9563 0.001250613625 2.387305023e-20 0 0.2006791897 0 541351.0977 0 9.605044564e-14 0 0 0 4.287588003e-34 0 65372.62519 0 279.0144741 0 0 0 0.0007620276567 1013696.227 3.94665138e-14 2.913473546e-08 0 0 0 2.190421014e-13 3852.977227 0 5.016443478e-13 8.005122177e-12 7.550660431e-15 0 1.148934107e-18 3812382.039 0 0 6.2077069e-05 0 0 0 0 0 1.841875028e-21 0 2.029756536e-07 0 4.706304424e-09 3.855279185e-05 27.00418947 31.34006676 0 0 0.0002066615771 0 0 0 0 0 0 0.001652531854 0 0 6.21928817e-10 1.63031453e-18 0.3119792613 0 0 0 0 0.0003125861657 4.619313351e-11 0.3898382187 0 0 135485.4936 0 0 0 13047.10365 0 0 75695.63827 0 0 5.333487602e-11 0 0 8.042156729e-23 2.068165614e-13 0 1.74053141 0 0 0 4.162665763e-05 0 0 0 0 0 0 0 7.0549146e-07 0 3.406455147e-07 0 0.00144318515 0 0.01515814772 0 6.263811631e-11 0 2.256478187e-23 3.201734228e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.762099176e-11 1.737426259e-19 0 0 0 1.71687423e-28 2.053365019e-10 2.291167876e-15 5.22197192e-19 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9887664902 0 0 0.0009911004101 0 0 7.877274679e-15 0 0 0 0 0 150649.2404 0 0 1.218913695e-05 0 0 0 3358896.812 172.3440943 0 0 0 0 0.04822509254 0 0 9.773436152e-22 6.041920557e-11 0.0006143887176 71572.72664 0 1.11471085e-08 0 0 0 7.223536986e-11 0 0 0 0 0 0 0 0.5775752216 0 0 0 1.982011844e-17 1.864826157 0 0.9052295335 1.478703418e-13 0 5.195989949e-09 0 0 0 0.00107007715 3.594856587e-09 0 1.114433857e-13 0 0.09502468334 0 6.065879516e-13 0 13962.95316 0 1.91559946e-14 2.515346274e-09 110610.5391 0 1.904047345e-27 0 0.0001554957257 0 1.755452985e-22 0 0 0 2.070301189e-06 0 0 2.951088572e-08 2.608757383e-06 0 0 5.265965642e-14 0.004034380473 0 3.217048834e-08 0.02617544493 0 0 0.000277112347 0 0 0 0 0 0 5.153674388e-26 25.53026415 0 142537.5928 0 0 0 5.314368282e-07 86.16317788 0.8153948296 0 0 17385.30371 8.403763388e-06 0 7.96989463e-15 0 0.0004773388677 0 3.810691436e-12 0 1.123274925e-27 0 2.512732799e-08 0 3.18075898e-06 0 272.3811882 0 55.32596257 0 6.249100576e-08 6.790947218e-17 0 4.559271819e-06 0 97577.01554 0 4.267186281e-22 0 0 3265518.47 1.843657229 0 9.394383033e-05 0 0 0 0 0 4.237192474e-14 0 0 0 0 28770.31257 0 0 0 5112.433488 0 1015149.354 0 0 0 0 0 1.247670921e-14 0 415061.7079 95.94498876 0 0 3.712368787e-06 105190.8172 0 0 0.005866466354 0 0 9.167240082e-15 1.114553553e-12 0 0 6.284085308e-05 0.003693802271 0.01862789979 361.3552678 0 0 957894.9425 0 0 0 0 0 0 0 0 0 0.1213572665 1.003564199e-20 0 0 0 0 0 0 0 0 0 0 0.005424022157 0 0 0 0 24333.79449 0 0.0002426384398 0 0 0 0 1.442159688e-12 0 94.75502627 0 0 0 0 0.422571775 0 0 1.840984654e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006516511437 1.470184546 0 +3.313088308e-11 0 2.040257654e-05 0 0 0 0 0 555007.1312 0 0 0 9.833899159e-17 0 0 0 172.0407654 0 0 3.666637599e-34 0 0 0 4.150371975e-11 2.263973779e-22 0 3.294825778e-27 2.463010281e-05 2.956128919e-12 2804.92273 0 0 0 0 0 4.834304626e-16 0 0 928209.8683 0 0 1.704950024e-12 0 0 0.09266252229 0 0 0 0 93.24354237 0 0 1.018734844e-15 2.361114666e-06 0 0 2.395135813e-10 0 7.9079259e-11 0 0 0 0 8.231285743e-10 0.234352523 7.066992244e-13 0 0 4.77679478e-05 0 4.139155032e-28 0 0.0003617409105 9.076559571e-05 9.629663095e-10 238235.1119 1.281426533e-09 0 4.506194765e-24 0 0 0 0 2.776528626e-06 0 0.6173751311 3981.128432 0 0 0 0 0 1.443728963e-10 0 0 1639841.729 9.480273716e-11 9.4367152e-17 0 0 7.26254697e-05 0 3.369146715e-13 0 277959.199 1.993298233e-19 0 2.872462179e-07 0 4.044330256e-10 1322544.59 3.342956372e-10 0 0 1.047542021e-16 3.769637154e-07 0 0 0 0 0 8.285624964e-25 4.084726516e-27 88.50620956 766763.6105 0 32429.74467 0 0.01011364916 1.37073604e-12 0 8.940453174e-08 1403472.866 0 1.0404135e-26 0 0 0 0 1.753826082e-18 1.597610631e-07 0 0 127.1383837 0.1367523066 0 0 63.22640926 27262.78805 4.473414975e-15 0 6.608115602e-19 1.991193017e-14 1.003922435e-18 262378.2611 0 31684.37056 0 2.45147929e-08 0 0 0 3.085070213e-09 1.126064631 0 0 74495.1519 0.0005870651921 58.67610433 0 0 0 218397.1467 0 0 0 0 0 0 1.043794206e-11 6.322316128e-06 0 1596103.384 2.096201053e-06 0 0 6.847084952e-15 0 203002.1436 0 0 0 3350.521265 0 4.356898549e-15 0 0 0.1826751901 0 0.0003370849517 0 37106.98653 0 0 0 1400.250677 1.103948058e-09 9.766106382e-34 8.69285717e-15 2.606630194e-13 0 0 4.786268767e-09 100536.1522 531.1120099 1.844146135e-20 0 1.735849628e-15 0 81731.14318 0 0 0 0 0 1.71454845e-09 0.0001213663207 0 0 8.547630259 0 230146.1675 0 0 0 0 0 47.3621947 609.5672615 0 0 1.277986457e-10 2.174059092e-10 0 467.1832067 0 2.276385633e-09 5.005456469e-07 0 0 0 0 0 9.145806766e-10 0 2.645663992e-11 7.248503725e-08 1.267888074e-10 0 1.619411898e-05 2.309073633e-12 0 0 0 0 7.050129288e-12 0 0 0 2.830818078e-14 3.336948862e-06 0 0 0 0 0 0 2.12371591e-07 1.41829615e-12 0 0 0 0 0 1.621130473 3.296393728e-19 0 0 0 0 8.32552027e-14 25007.75128 0 0 0 0 0 0 3.65217081e-18 0 +0 0 0 0 0 0 931883.1417 0.01855412658 0 0 0 0 0 0 0 0 0 0 0 0 26.66605039 0.0002333614535 0 0 0 2.069645706e-12 0 0 0 0 0 0.05315042718 0 0 0 0 6.013770436e-11 0 0 7.402936189 0 0 0 0 0 0 0 0.01309509829 0 1268.019394 0.002681817486 2.802979839e-14 0 0 0 0 0 0 0 671347.7116 0 0 0 0 0 2.311534115e-09 0 0.0002180048836 153430.7339 1.108311369e-16 0 0.3021677692 4.13118352e-09 1.185252291e-19 0 6.91715727e-05 5.211926605e-06 6.216215149e-14 0 1.046946953e-07 0.01045512107 1.286640097e-06 1.880622606e-11 0 0 0 35784996.1 2840600.047 6.812533986e-09 1.265071145e-23 1.569615182e-07 0 0 0 1.647686e-06 0 0.01714352671 0 0 2.521023887e-17 3.531758026e-14 0 0 0 0 0 9.985861599e-12 0 0 0 3.182411432e-06 18641.93367 0 124244.187 0 0 0 0 0 7.516970976 0 0 0 0.01507039872 0.000227941154 0 1.737330806e-14 0 0 9.372352972e-13 2.5182e-08 0 2.44037194e-15 0 1.969821849e-06 0 2.2173867e-22 0 0 0 9.663930564e-05 0 3.283149955 0 1.007024056 0 0 2.799684665e-08 0 0 8957.26148 6.17858423e-20 0.2610571459 0 6.281684619e-12 200.2650868 0 52141.54277 1.04838595e-19 3.435510192e-12 8.771805988e-12 0 0 0 1.563254573e-21 1795.396971 0 0 41.55626955 3.437865741e-15 9.575812695 0.1774138894 0 0.0001584584251 5.188407838e-10 8.473479706e-12 0 142.6365338 0.03050125501 4.498766104e-23 14442.95692 2.868724427e-05 0 0 0 5.05344239 7.982840936e-17 1.796639458e-13 3.034235042e-05 2.626863475e-07 0 1.292572419e-13 0 1.777979247e-20 11.02457195 0 6.795263111e-11 0 0.01443134107 0 0.01643159626 2.173296457e-09 0.0001000821271 0 0.0001038336884 2.963518893e-05 0.0003410132763 2.69963103e-26 0 2.205011366e-35 886198.1525 0 0 0 0 1.278149082e-17 0 1.600212556e-15 0 0 0 0 0 0 0.07271425453 0 0 0.09807014647 0 0 0 3.26471473 1.897481924e-25 0 0 0 0 0 7.641409394e-09 0 0 0 0 8.750976328e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.4602105289 0.0001917972785 1.302936318e-11 0 0 0 0 0 0 0 0 0 0 5.392901955e-10 0 3.910012034e-15 0 1812.98775 0 0 0 6.857842899e-18 0 0 4.500846051e-14 0 0.2543906133 0 0 0 0 0 0 558698.9154 0 0 0 0.003838376663 0 0 0.1275177183 +0 0.01439318539 0 9.946781749e-08 2.848350138e-10 4968.534169 0 0 0 0 0 0 28591.50539 6.747638962e-08 0 47047.56577 0 0 0 0 4.910312318e-25 0 0 0 0 0 0 0 0 0 0 0 0 4.561453183e-07 0 0 0 0 9.415069132e-07 0 0 0 0.0001136965969 0 0 2.084042444e-08 0 0 2.348849774e-22 7.52499668e-07 0 1.638410499e-16 1.55273801e-21 0 0 6.073765815e-07 0 0 0 1353439.198 27.65675605 0 1.435514029e-23 0 0 0.0006628688185 0 0 0 12034.79818 0 0 0 6.448755665e-25 0 4.563552338e-12 3.290568822e-12 0 0 0 0 3216349.205 0 0 0 0 0.03623660411 1.357753822e-15 0 0 0 0 0 0 0 3.442638823e-06 0 2.872906065e-05 6.787742991e-07 0 0 0 0 3.095931715e-10 1.225193168e-17 3.260944359e-11 792.2996072 26.88379145 14607.75375 1.867925333e-06 0 5.031494825e-06 0 2.592799899e-09 0 0 3.524293703e-05 1242.772798 1061208.341 1.192315439e-23 8.204015857e-14 10535.81921 0 7.098306687e-07 0 0 0 965898.2161 9.08062508e-06 7.390198604e-05 2.488020547 0 0 831497.1454 3.280441913e-11 0 3.482915955e-24 0 0 0 2.046052304e-22 19965.48265 3.138756336e-17 0 0 3.274523299e-17 0 1.489775576e-05 0 835514.2073 228892.3217 0 864.6409007 0 0.006250324167 0 0 0 0 0.0001308829228 1.980879873e-06 0 0 0.001885541541 0 0.7030658181 6.581311155e-08 0 0 6.962481142 0 6.065725229e-05 2.173235851e-05 0 1.600981194 0 0.0002923584411 0 0.001607588413 0 3500.046132 0 5.988100601e-10 0 0 38.78228569 0 1.183623347e-24 0 0 0 0 0 0 303223.1828 0 6046.382744 0 0.01700554984 0 0 0 0.01371419029 0 174.0017433 0 1.750000277 0 0 2501.682222 0 0 0 4.232009512e-08 4.741836165e-24 420.3106784 0 0 0 0.018759411 2.22406544e-07 0 0 0.00157567316 1.337119506e-09 269.2241242 0 2.594025257e-12 0 0 4.529276845 0 0 0 0 0 2.154914208e-08 1.077769031e-24 0 2068908.925 0 0 0 0 0 0 101792.3266 1.009627965 3.767420768e-10 0 0 0 0 4.6556618e-14 0 0 0.253153368 0 0 0 0.00358583851 0 0 1.384458766e-12 0 0 0 5.352886174e-05 230.0722604 100.4044136 0 0 0 0 0 0 0 8.904338822e-06 0 0 0.01284722756 0 0 3.355166272e-19 0 0 2.479869537e-13 2.672276888e-06 0 0 1.393419277e-19 7.716904445e-08 0 0 0 0 0.00233532345 0 0.0001631377975 0 +0.0002433808004 8.985171421e-14 0 0 1.360539956e-10 0 0 3.194291985e-12 0 0 1437810.986 2.951448804e-25 0 0 1.36951734e-18 0 5.579890165e-15 0 0 138.5828878 0 0.004143796429 1.500343024e-28 0.009954062549 0 0 0 0 0 1.079082719e-29 0 2.617094943e-12 0 1.393892192e-05 0 5.508339826e-25 1.363528436e-10 0 0 0 7.978139741e-08 4907.271753 0.003929183369 16618.60374 201.0286475 2.407358836e-06 2.04696889e-17 0 0 17.37323183 0 0 42.38049673 3.602361087e-19 0 2.163672113e-06 0 0 127457.5034 9.007788257e-24 0 0.4637246818 0.03945459803 0 0 0 0 0 0 0.0007217214772 0 0 0 0 0 0 12.75241048 0 0 0 172207.1579 0 2.937142039e-09 3.64213067e-05 0 0.7654195053 1.378879518e-08 0 2.205575671e-17 7.656491437e-16 6.147294012e-09 0.0004099682388 0.002037823702 0.0006704871317 3.153208936e-30 0 0.1338574276 4.346590399e-08 0 4.288096029e-06 5.67206613e-10 0.009108325845 3.167469029e-12 1.282102848 0 670.6563285 2.411017267e-17 0 0.002683610691 2.726670794e-07 0 0 789921.7706 0 0 727875.1777 1.154705039 1.552692539e-12 0 1.415728224e-13 0.09820110792 0 0 0 0 1.248528387e-07 0 0 0.01701275703 2.314444762e-40 4.114394163e-18 0 0 5.349793785e-15 0 10.12724009 643378.5799 0 0 4.85281557e-07 0 0 0 4.683796826e-05 3.598992506e-09 128983.3151 0 66.75952793 2.928491635e-19 1.752282849e-07 0 0 0 3.851575829e-09 1.552915195e-29 0 33415.97749 0 0 0 28.15868234 110546.3765 2.585329868e-15 0.6612897939 0 1.089987271e-05 0 3.172814646e-12 1.189902224e-10 0 0 4.970863301e-11 0.271559662 0 53191.44502 1656203.226 1.449383565e-17 0 0 0.0002263161502 0 0 18182.49249 0 6.40927925e-06 31.0606251 0 0.0003700212287 0 0 1.642646806e-11 0.0001703554507 0 18155.12068 0 56.34553991 0 0 6.276089584e-15 0 0 0.0003582083659 1.888779214e-06 0.06025596553 6.286882412 801519.4505 0 0 0 0 0 0 0 0 0.01134493403 0.001014870124 0 0 1.939552323e-23 284.7298941 0 9.652019064e-12 3567.985246 0.05575872491 0.7206769449 80257.30321 0 0 0 0 164219.7578 0 37876.665 0 0 0 0.4130175093 790.3522432 1.764429002e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.241333035e-05 0 0 0 0.1380158969 8.466969919e-06 3.554072108e-27 0 0 0 0 0 0 0.001810819792 1.095164123e-06 0 0 0 0 0 0 0 0 0 27478.05335 0 0 0 59.95697449 5.917612854e-05 0 7.091402988e-12 5.994999807e-06 0 0 0 0 0 0 1.056467893 0 0 +0 0 4.026081398e-20 0.0006864345035 0 0 0 0 0 0 0 7.443416918e-06 0 0 7.989547091e-08 5.867183832e-08 0 7.040719799e-06 0 0.05148843653 79967.05882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007328891469 0 0 0 0 0 0 0 2.43039288e-11 0 0 13.18911357 0 0 0 0.001448057293 1.345412295e-13 0 0 2.312659367 0.8088027447 0 0 0 0 0 0 0 0 0 0 0 0.0001745013595 0 0 0 0 0 66278.90386 0 0 0 7.581073765e-06 7.193230123e-11 0 0 162613.5933 0 4.654086381 0 0 214293.221 0 1.72888681e-26 0 1.856057946e-15 0 0 0 0 0.06493132324 4.120836695e-13 0 0 0.01423476048 6.474661765e-08 0.366954589 0.0015432813 0 0 0 0 3.495034351e-11 5.245975812e-07 0 0 0 0 2906.397874 0.000760559048 53.63536813 3.189668771e-22 9.665026902e-14 6.571707935e-14 0 0 0 0 0 0 7.612737051e-15 0 0 0 0.007029299161 0 0 0 2.197807055e-08 81922.60841 0 0 231252.2477 0 5.10830548e-07 0 0 2.737896303e-08 30.56202901 6.022329695e-16 0 1.578727092e-20 1.668992864e-05 0.06644002643 7.494026427e-11 2.733218623e-08 202344.296 0 95683.40444 0 0 1.577661136e-15 8.699827237e-10 0 0.0003289857092 0 0.1228414676 0 0 0 0 1.642780315e-17 2.955627113e-06 0 7.185000227e-15 2.682434588e-13 0 0.3095142671 3.117739344e-14 111.314274 0.0002074516074 36939.14193 0 4.390684381e-12 0.0513438764 6.002405402e-10 0 0 0 7.334896417e-19 0 0.0002474800572 0 1880928.803 0 1.648408709e-08 0 0 0 0 0 0 0 0 0 0 0 2.801955726 0 0.3501807329 0 9.310794913e-12 1.1351156e-12 0 79402.28981 0.05834598834 2.924288038 8541.889229 0 0 0 9.231287889e-15 1.963102516e-16 0 0 9.361741045e-05 291.9739978 0 0 0 3.985487896e-10 0 0 0 0 0 0 0 0 0.00121952561 0 2.88783566e-10 7.144495045e-08 0 0 9.265734067e-13 0 15.67517629 0 4.801047009e-09 9.026078035e-22 0 721.378085 0 0 0 3.507308513e-08 0 0 3.528058399e-05 0 0 0 4807.295837 0 0 0 0 0 0 0 0 0 0 1.266707128e-10 0 4.641500775e-12 0 0 2.874628436 1.560137725e-15 0 0 0 1.086392557e-09 0 0 0 0 0 0 0 0 0 0 1.508638771e-07 5.420772265e-32 367898.4424 1.295933019e-10 1.046695634e-08 0 0 1.334932833e-06 +0 0 23879.02604 0 0 0 0 0 0 0 0 0 1303265.039 132.0386023 0 0 0 2.378745758e-23 0 0 0 0 0 0 1.161598591e-10 0 0 2.834078834e-05 1.794536055e-16 0 0 0 0 0 0 0 8.566726033e-27 0 0 0 330.2216232 0 1414691.903 0 0 3.840260283e-05 0 0.05692536463 0 0 7.995463433e-08 0 70.86038811 0 0.0003276184759 0 0 3.385852214e-06 1379.553751 0 0 0.002081730689 0 1848414.902 32.10575447 0 0 0 0 0 71626.43864 0 0 0 2.441090172e-20 1.362768064e-15 0 0 0 1.803889014e-09 0 0 2.457740201e-06 1.821728546e-09 0 3.895382005e-08 5.812086868e-11 0 0 32548.71043 2.116893111e-11 0 0 921.7301192 0 8.29432944e-12 5.115353826e-13 0 0 0 221.6165266 9.830176346e-22 0.07382090594 0 0 0 0 0 1972.028771 1.852700495e-12 0 0.0008510774793 3.366360268e-09 0 1503163.839 0.05300905683 5.929232951e-10 4.271190285e-08 7.973160266e-13 1.198935565e-14 0 88.47858057 161.8231634 0 0 0 0.001778052204 1.166509921e-15 0 0 3.735908248e-17 33347.47894 9.568813302e-18 0 0 9.757917434e-09 2.654834091e-05 2.549875356e-07 0 17327.36948 8.961256701e-23 2.62522947e-05 0.04818733039 8.728027703e-22 435.839355 6.458973159e-11 1.121559525e-07 0.0007967491059 0 0 0.0004118100683 0 1.592161505e-10 0 0.002464055669 0.0007280206384 0 3.837458986e-09 0 3.378607819e-14 0 8.392909693e-07 6.670312561e-25 0.009738730895 0 0 0 0 0 0 0 0 179.8153872 0 0 0 1.253663197e-10 0 0 0 0 10.94370363 0 36.99639528 0 1.276398095e-10 0.09435147706 0 4.670042561e-16 19.68618522 0 0 0 0 0 668399.644 0 1.622304806e-06 0 0 5.520902395e-05 5.276210558 1.963769999e-08 6.004397243e-13 1872236.555 0 2.394542636e-11 0 8.118321084e-11 0 2.786620025e-29 0.4157886842 0 0.07091368683 0 0 0 0 0 0 469.0430203 0 1.777016381e-07 0.01268525494 0 0 0 0 3349619.518 4.70357732e-08 0 0 0 1.218793672e-06 103.6512596 0 1.906022155e-07 0 35898.24331 48.89786337 7.285621242e-16 0 0.00918812616 0 0 3.578451223e-20 0 1.522543227e-06 1.31768129e-17 0 0 0 207296.6608 81842.08285 0 0 0 0 0 81.42700012 0 0 0.0002865444325 0 0 0 0 0 0 0 2.483537453e-27 0 0 0 0 0 5.439898563e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 70284.14216 0 8.853233702e-05 0 0 0 5.398515758e-10 0 0 3.979454349e-05 +0 0 7.816810558e-07 0.0001107418261 0 15756.28226 0 0.0004003311783 0 159914.4239 0 0 0 0 0.0009785567846 1.104122728e-11 0 0 0 0 0 0 0 0 0 8.92574879e-06 0 0 0 0 0 0 0 0 0 0 0 0.07043830581 0 0 5544.779069 4.333870949e-08 0 0 0 1.010398279e-08 3.032495958e-08 1.975264563e-05 2.369420247e-10 1.904701526e-11 375.105569 0 0 0 0 7.257908662e-05 0 0 0 0 0 0 0.0006819802733 4.23802736e-21 0 0.0004976393414 0 0 0.003436965198 8861.280932 87.26247932 1.120702969e-05 0 0 0 0 0 0 0 0.03773823074 0 1.983033116e-06 0.007989668193 6.249196475e-10 337997.6339 5.854376029e-26 6.565977894e-06 0 796.2118158 2.374538094e-19 0 154.6002004 0 0 1.880651942e-07 0 0 0 7.338028644e-17 3.312626868e-09 40256.71165 1.430393337e-10 3.969920623e-25 8.394737541e-05 0.003798054773 0.1984944603 3.851638682e-12 0 0 1.301896998e-08 0.1711412164 0.1254421751 0.06390466764 0 0 0 4.434224391e-11 0 0.02097907302 2.759372478e-27 0 2.195332473e-05 0 0 2.277052581e-14 701601.3375 2.07851738e-15 1.760620814e-25 2.266207107e-08 0 0 0.0004547053013 0.03855989009 1.142611547e-11 0 0 0 85.01256425 233.181697 1.61815244e-16 2.110591286e-06 0 7.611136294e-10 0 0 17.00532758 0 0 0 7.63412637e-21 0.11970097 99.22300016 2.667100498e-10 0 1.286262399e-10 0 3936.299537 0 0 80.19056833 8.985002557e-15 0 0 1.060346995e-15 0.01622545344 0 7.900354545e-06 5.486593423e-06 0 0 0 0 0.0003949154961 1196.401592 0 0 0.05418054188 0 0 0 2.470700631e-05 0 1.3987917e-06 0 0 1.066598883e-11 155.3524768 0 0 2.22499393e-08 1.366825112e-12 2.796419362e-16 0 0 9246.98391 0.004660890931 0 0 0 0 0 1.817311815e-15 0 0 995025.8735 2.643181306e-12 1.444219602e-10 0 0 3541431.983 0 0 5.780405383e-17 0 267034.1638 0 3.206833378e-06 0 0.000945573965 1.168865952e-13 0 1.297407808e-06 0 0.0007763047349 3.392986862e-06 0 0 1939.581891 214.1943824 4.333259211 0 0 20.78039753 1.94452615e-19 0 0 0 0 0 0 0 1.198122637e-06 0 0 0 0 0 3.157386029e-14 0 0 0 0 0 0 0.0002983848027 0.04620994819 0 1.395862194e-13 0 0 0.0002758573905 0.009607365998 0 0 0 0 0 0.0276942941 0 0 0 2.102735661e-06 0 0 0 0.0006819190126 0 0 1275915.936 0 1.325140102e-08 0 0 0 0 0 0.0001455576699 0 0.002909251134 0 2.674124351e-10 0 0 0 0 0 1.969836764e-10 0 0 0 +0 0 0 8.458058618e-14 0 0 0 0 0 781.1908789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.829607147e-06 0 0 0 1.276600313e-17 0 0 0 0 0 0 0 633083.7442 0 0 0 0 0 0 5.914513018e-07 0 0 2109.136197 0 0 7.324012883e-11 0 0 0 0.4890518313 1.399187206e-14 8.912020283e-16 0 0 17.25212586 0 7.237062488e-10 0 2.283925797e-09 4.61927551e-23 0 0.0006875032623 0 0 0 0 0 5.223624428e-13 3.591084135e-17 2.243143035e-07 0 2.167706269e-08 0.002259412185 348588.6201 2.398892345e-05 0 0 0 0 0 0 0 6.137288168e-05 30207.60038 0 3.50844471e-08 0 0 0.003905341228 9.595555295e-11 1.344552883e-07 268.2400238 0 5.017814222e-12 5.563415174e-09 0 0 1.256605949e-10 0 4.812130766e-07 0 0 0 0 0.000349848346 7.852600199e-20 11.7375279 0 0 1.66514312e-09 0 0 1.019256242e-06 0 2477.820644 0 1.804131175e-06 0 0 7425.104273 1.521147848e-12 605413.8278 0 3.655523963e-10 0 0 0 0 2.961141269e-05 0 0 0 590757.5737 0 9592.102938 132.5062532 0 1922.885266 6.616394186e-27 0 5.530345371e-15 0 0 1.747209078e-11 0 0 7.134549823e-11 0 0 1.04059623e-15 32948.86194 0 0 0 0 0 0 1.376738949e-05 1.694432098e-21 127.1969082 6.32662227e-19 4.59560477e-11 903.6769395 1.225905363e-20 1237687.943 2.795049125e-23 0 0 12924.15147 4.257204699 0 0 0.07431489258 0 0.03819181396 6.750520259e-15 4.510468348e-22 0 0 8.138475196e-13 3945.929174 0 0.1156337886 401367.6151 2.621137548e-07 3.909583841 0 0 0 0.3546050596 0 2.271233951e-07 7.232837861e-16 108694.0839 22215.2786 0 0.1009832632 689.0954381 13.43815 0 2.41292745e-06 3285.89774 0 149125.7951 7.432148241e-09 0 0 0 3.991076294e-08 0 1.104290664e-09 61380.73203 0 0 0.9304163996 0 0 0 2872.362964 375.8769784 0 0 0 22226.84034 0 0 0 0 0 0 0 0 6.602634275e-08 0 0 0 0 0 0 521.8590315 0 0 4.043335016e-11 0.001591521929 0.04624217338 0.003316238613 0 0 0 0 0.0989904643 0 0 0 7.769407505e-10 0 0 261215.6942 0 1.557025638e-16 0 278.8572312 0 0.4396477532 0 0 0 0 0 0 0 0 0 0.0008251293505 117.767977 0 3.422681624e-13 0 0 9.8364692e-11 5.199948692e-05 0 0 0 0 6.219409707e-22 0 0 0 0 0 1.56263918e-13 2.633318446e-09 0 +4.310750233 0 0 0 0.06730732345 964.2331617 0 0 0 768062.5864 0 0 1786.492961 0 9.356378441 1.575036008e-07 0 0 481755.8018 0 388.2621111 0 0 0 0 0.002299302805 4.292850516e-09 0 0 0 0.1956609565 0 0.1792091117 0 0.003861714802 0 2.135275623e-17 1.305714713e-12 0 0 0 1.275106235e-09 125.4047325 0 0 0 9.368165473e-07 0 3.649991382e-19 0 0 0 0 6.528483783e-14 0 0 7.404895791e-06 7.94137235e-12 0 0 1.540527479e-25 0 0 0 0 0 3.222760823e-07 0 0 0 0 0 84972.02039 315.053504 0 0 0 0.09875871559 2.449083464 0 0 9.504293241 0 0 0 0 0 0 0 2.314395138e-06 2.491304219e-13 0 0 3.831256494e-07 0 0.0007905059574 3.865540903e-12 3.920938336e-06 0.008187858252 1.293414714e-27 0 1.002749037e-15 4136.131323 1.900393653e-13 0 0.09415404414 0 0.09485962662 3.492718952e-15 0 0 0 5.936438929e-19 4.641152345e-07 0 1.83217261e-07 7.934069468e-27 0 0 7.141676248e-20 0 0 4.788352032e-23 1.929487081e-08 0 3036.229975 0.3462999222 0 0 0 0.2729592188 0 6.4847823e-10 0.03712571664 0 1.334377815e-20 8.351265568e-09 0 3.20243092e-10 0 2.431719322e-13 3.293749696e-32 308941.001 0 0.01616263798 6.195484101e-15 0 0 0 0 18.59890763 1.440605567e-11 0 4.996288051e-23 0.0002450424442 4.050115048e-16 0 3.292207203e-14 0.007725851753 2.634347104e-08 0 0 3.660344881e-06 2.748828103e-14 0 0 0 0 4.033604065e-15 5.588057797e-12 2.916394891e-11 0.001391098428 1.831339014e-17 0 401181.4783 0 0 0 0 0 0.001044197571 3.624948739 0 0 0 0 0.006660468963 0 0 1.665848776e-19 2.248849135e-06 0 0.005028604001 14593.34082 1.038017603e-17 0 0 0 0.2963687743 0.0001233458721 0 0 0 0 0 4989922.075 0 1.653880824e-18 4.636664214e-12 1.519974425e-25 0 2350060.372 9.98902693e-15 1.282149389e-09 0 0 0 5.101761309e-07 0 28400.00206 6.929157559e-06 2.603085797e-13 0 4.816142038e-16 0 0 9.757462318e-07 0 0 0 0 0 0 0 0 2.80663493e-12 0.000209321817 0 0 0 0 0 0 0 0.0001387945313 5.627388027e-09 0 0 4180.496948 0 0 0 0 2.030665479e-09 0 0 0.0603618449 0 9.90088987e-08 0 0 1.205566652e-05 0 0 0 0 2.15567772e-07 0 1.630257191e-17 0 694503.5057 0 0 2.969589315e-27 2.986115491e-12 0 0 0 0 0 2.474560702e-23 0 0 0 7.959723838e-15 0 6.22085548e-32 18445.47465 99154.23987 0 0 1.079468876e-24 0 0 0 4.989051358e-10 7.202880546e-19 0 0 9.341835169e-19 +0 0 1612.321624 0 0 0 0 0 133775.3221 0 0 0 0 12927.63492 0 3.185150125e-13 0 0 0 0 0 0 0 0 0 0 0 0 2.366181264e-17 0 0 1.47847517e-06 4.396511719e-15 193.2065941 0 0 0 4.122094937e-11 0 0 0.001353097608 0 0 0 0 0 0 5.928366382 0 0 0 0 0 1.573483573e-11 0 0 5.924745317e-13 3.087007134e-05 0 0 0 1.126279205e-09 0 0 0 0 0 0 5.970824842e-05 1521.977016 0 0 0 0 0 0 9.331426311 4.254506826e-13 0 3.684515345e-07 7.264964817e-13 0 21.27017053 0 0 0 0.001762878474 251924.063 0 0 0.002156146251 0.4583328974 1.385587232e-10 0 0 0 0 0 0 14.11892417 0.1015974229 3.383265011e-06 3.713295548e-17 0 5.80017031e-18 0 0 0 19320.08485 0 0 0 0.282245404 0 0 0 0 1954634.496 0 1.319478821e-16 0.0004419480309 8.88404386e-07 0 0 48.9813157 0 6.058155803e-07 0 0 0.0009079670967 4.660311891e-22 6.377809805e-06 0 2.410015333e-08 3.310688549e-11 8.278677956e-06 0 0 0.01016389341 1.050598093e-07 0 0 305879.7441 0 6.321285697e-20 1.17897015e-13 4.417440569e-06 0 0 0 3.924735356e-24 0 0 0 0.002180399957 0 1.225280658e-12 3.076479939e-09 2.865119831e-15 0 0 0.3611304907 0 1523.128957 6.639210961 0 1.486360146 0 0 2.374610891e-09 0 0 0 0 3.408868632e-08 1.328185845e-09 4.377489813e-12 0.001097580287 1.230613757e-08 0 8825.645733 1.290963142 9.947469787e-20 4.718948979e-06 0 0 0 1.465552221e-05 0 340893.5298 0 0 0 0 0 0 8.541347931e-15 37.45474778 3.532100481e-09 5.86864161e-08 0 0 0 639.3382857 0 3.898161001e-05 0 533943.1196 0 0 5.341441609 577918.4872 0 27.77500917 1.168977143e-21 0 0 0 0 0 0 0 2.391083758e-19 1.637814701e-05 7.146842346e-06 0 7.557175227e-13 15364.80073 5.345585478e-08 0.0009965153175 0 0 0 0 0 5139.994746 0 0 0 0 0 0 0 0 0 0 0 1.066182942e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 9.162260007e-08 0 2.524762869e-11 1579.050039 0 0 0 0 0 0 0 0 0 0.0006965629311 0 0 0 0 2.350587397e-08 0 0 125.4187627 0 0 431.0230866 0 7.614016607e-14 0 0 0 0 0 0 3823.337417 0 0 0 1.771391355e-11 0 +8.057914068e-17 0 0 0 0 0 0.08015577066 4.14634785e-22 0 9.143695886e-13 0 1.640782897 0 0 18816.67837 0 0 0 1.82277751e-07 0 6.428417804e-05 0 0 0 0 0 0 0 7606.192348 0 190624.0744 0 0 0 0 0 0 0 0 6.034153683e-06 0 0 0 0 37265.7065 9.177948462e-07 838.6739999 84688.79689 0.03216220068 4.069431271e-07 1.341259558e-05 0 0 0 0 0 0 0 0.0002984873189 0 0 7.403458679e-24 0.000827144691 4.568985753e-11 3.230422697 0 0 0 5.365904573e-11 0 6.282347206e-08 0 0.0003441556434 0.6440541546 9.183769428e-09 58.16416103 1.161846438e-11 1.12543547e-12 4.208288877e-09 0 0 0.008021369996 2161758.168 6.007935166 3.967535097e-15 2.985980214e-23 0.00184330535 450.0519244 0.0001785688427 1.97370266e-06 0 0 3.097047103e-11 18.59591726 0.001013574756 0 0 8.654377254 0 1.075828244e-20 1.030228118 0 0 0 0 0 0 0 0 0 1054788.543 3.96145107e-10 0 0.0001101040499 0 81156.865 0 0 0 0 0 0 0 0 2.804105387e-10 24.82331646 0 0 0 0 0 8.101521266e-16 2.228709784e-08 0.001483551178 0 0 9.439320646e-12 3.506922648e-05 0 0.0002769896386 0 0 0 7.000998616e-21 2.709373838e-06 0 1.123171673e-05 3.036642991e-14 0 3.918880188e-10 0 2.057052816e-10 210231.5723 101037.751 7.238246152e-40 3.910471214e-05 0 4.027799491e-09 348639.8143 2.26405077e-12 0 0 0.0004526195298 15868.57786 0 0 6.735611917e-20 0 0 3.445298189 0 0 2.799110282e-18 3.769300552e-13 46520.14358 0.6454727945 0 0 0 9.59934426e-14 2.103488937e-07 0 0 0 2.534602725e-05 0 0 0.2667356053 0 0 0.001357020058 1.304887819e-10 5.919220237e-05 58598.30826 0 0 0 165.032972 270729.0455 0 2536.037651 0 1.98738048e-20 0 0 2.058518558 0 0 10.38182254 0 0 0 0 1.603764302e-10 1.925724974e-17 7.945000504e-14 0 0 0 0 0 0 0 0 0 0 1.488294637e-12 0 0 0 0 0.0001078336725 0 3824.638444 0 0 1.186793062e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1936018775 0 0 0 0 0 0 0 0 1.897369773e-12 0 0 0 0 0 0 0 0 0 39603.42903 0.3806836044 0 0 0 5.384470636e-18 0 0 1.243057891e-09 6.694891745e-06 0 0 0 314207.4708 0 0 0 33368.97119 0 0 0 5.706078278e-09 3.005888933e-13 1.398874714e-18 0 39772.06559 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.041165531e-19 0 0 3.362313421e-12 0 0.02469372763 0 0 0 0 0 0 0 70082.6731 96.24092429 2.275011228e-10 0 0 0 0 46998.32653 0 3.301095662e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.110706553e-13 0 6.039164717e-07 0 14175.40617 0 196.4512237 1285.53223 48487.85552 0 18637.31956 0 0 0 0 1.466969298e-20 0 0 4.442348387e-18 0 0 578951.6107 6.889595138e-11 3.041681516e-08 5.47055289e-17 0 5.230766243e-11 0.01645618075 1.935557655e-12 2.962798288e-05 0 0.4211352012 449560.2765 0 0 0 0 5.704644224e-14 0 0 0 0.0001377301828 4.073122464 3251.304815 0 5.714995272e-09 0 0 4.766645954e-10 0 0 0 0 0 0.0829561484 280208.2698 0 0 0 3.299313181e-18 0 0 0 1.460062694e-06 0 5.989764009e-25 4.424712457e-05 1.560670464e-14 0 921.1152075 0 9.879381154e-23 0 9.373812243e-17 0 1.856685029e-12 654962.6474 0 0 0 0 0 52.94367504 0 6373.812857 7969.550822 316436.9311 0.04802406428 0 0 0 1.554590276e-07 6.817870441e-16 12577.13235 4.240904365e-14 0 5.777250342e-09 2.426872309e-13 2.293483753e-05 0 6.805660345e-10 0 0 0.00450099898 0 0 0 4.339277931e-07 1.401444026e-21 0 0 0 2.396003897e-06 0 1.280973554e-12 0.008773280447 0.0004687504422 2.882793717 0 0 0.009187392524 0 7.953685873e-16 0 0 0 0 0 1.957619105e-05 0 0 78.97759504 0 0 0 0 0 1.915538543 420553.1215 1.082479222e-11 0 0.09392127052 0 0 1.500534362e-06 0 0 3.751693718e-10 3.095090546e-08 0 0 0 3.344957808e-06 3.528613095e-06 0 0 512442.2962 0.3579076503 0.7037775893 0 0 0.06385700914 0 0 0 3.073165161e-09 5.13814277e-09 0 0.0001194366633 0 0 4899.355511 0 9.745480883e-13 0 0.2248840685 0 0 0 7.863587363 0 0 0 0 4.837563146e-16 1.863725909e-10 0 0 0.00042671712 0 1.304801994e-13 0 0 0 0 0 0 4.078443082e-13 0 0 0 0 0 0 4.907352477e-11 0 0 6.15900502e-07 0 0 1846.663834 0 0.00040564522 0 0 4422.400155 0 0 0 0 0 0 3.06064271e-06 1.03170415e-07 0 6.636838585e-09 0 3.223721872e-07 0 0 1.603591534e-24 1.011266215e-07 0 9296.786319 8.614797532e-11 1.218958781e-14 9.886488823e-07 0 0 0 0 0 +0 463.270176 0 0 0 2.686842198e-07 0 0 0 1.343420261e-14 0 2.455661626e-19 0 0 1.647552148e-13 1.951733523 0 7.190002883e-08 0 0 0 2.898187591e-08 0 0 0 37787.98013 0 0 0 0 0 1.116940723e-20 0 0 0 0 0 0 0 0 1.146607283e-08 5.714485853e-13 0 0 0.377627944 1.235050285e-08 0 0 2.27673581e-16 4549864.951 1.600695032e-19 3.001082894e-05 2.980443103e-10 0 2.180440116e-09 0 0 0.0001974142632 0 0 0 0 2.194938319 0 0 0 0.001708569658 2.257994752e-07 0 0 0 0 0 0 0 0 0 0.0005348463736 0 4.053565577e-24 0 0 0 3.149822249e-21 0.03612658487 7.70148352e-08 3.554050822e-24 2.520832674e-08 38058.96482 0 4.407172941e-08 0 9.732255693e-17 0 0 1.107273758e-08 0 7.477608987e-06 0 0 0 0 0 0 2.139227997 2.158932427e-13 0.008261829181 0 5.398088322e-10 7.929020628e-12 0 364727.2755 0 0 0 0 1.795503435e-13 0 0.0006242307968 2.970198925e-08 1.187929753e-25 4.199300461e-16 0 126342.3278 6.940413918e-13 0 0 0 21.98858209 48.81865366 0 0 0 0 0 0 0.06676639713 307.9218087 0 0 0 0 1790215.82 0 0.0003936869383 0 5.444177607e-11 0 3.804246848e-19 4.528162405e-21 0 0 0 0.6795620252 0 0 0.08593776502 0 498.6019344 5.177801723e-16 0 4.723665351e-17 1.030397395e-09 0 0.08636593816 0 0 0 0 1.804021358e-11 0 954.9065751 0 0 77459.14207 0 131.3509823 3.294303817e-12 5.091623111e-06 0 21.0506909 0 10173.06589 0 0 0 0 0 3.217141717e-16 3.171542158 0 21811.85227 3.828005356e-07 3.423994791e-20 1.799854305e-10 0 0 0.0426598198 0 0 0 0 1875996.433 0 0 1595.840281 8.112337802e-24 0 6.171911547 0 2.261977684e-07 0 0 0 0 0 0 1271.763329 0 2.411130024e-24 1066.691776 1.180745392e-05 0 0 1.518238674e-27 0 252.9950193 2.726663427e-21 0 5.510574924e-15 0 0.03275087159 0 0.0003523153118 0 0 0 0 0.006122853163 0 0 0 0 0 0 3.821161897 2.791471635e-09 0 0 0 3.304468653e-07 0 0 0 0 0 0 143303.501 0.009136479783 20587.27359 0 0 9.412454704e-10 1.991424055e-06 0 0 0.0008709747492 0 0 3435.835521 0 0 0 0 0 0 0 1.224228113e-09 0 0 0 0 0 0 0 0 0 0 11.36381534 0 0 0 3.882844155e-12 0 0 0 1.316776966 0 0 0 +0 1378.702575 0 0.1877022002 0 0 0 0.0001174529915 0 0 1.82377466e-12 0 0 1.380776268e-08 79655.42815 0 0 0 0 0 0 16710.56988 0 0 0 0 0 0 0 0 5963.67976 0 0 0 0 3.001441664e-24 0 5.275843302e-29 0 0 0.5568349271 0 0 6.315223492e-20 7.764539454e-15 0 0.01521786515 0 0 0 0 2.575767777e-13 1.979477992e-06 88.98488942 2.764938809e-07 0 3.321349538e-14 0 0 0 8.40285591e-17 0 0 2.112871548e-09 0 0 0 0 0 0 0 2.739705537e-07 128.542763 0 0 0 2.470235025e-06 0 4.844511736e-06 0 16.16274061 0 11625.95614 0.0002610493169 0 6.547519168e-05 0 9.12941874e-14 0 0 0 0 1076634.222 1.379972696e-18 0 0 2.603870601e-06 0 0 3.006404858e-11 0 4.159760837e-10 0 1.180681416e-10 0 3.397320868e-10 0 40.03656388 556.1903839 0 4.757744133e-10 0.0009554118168 0 0.003344057815 0 2.802192029e-09 0 0.000187401284 7.74429976 2082.102008 0 1.215903698e-07 0.001112064979 8.95606669e-12 5.968759733e-18 0 0 18598.95758 0 0 0 0 0 0 0 3849.857199 7.459194241e-18 0 0 0 2.462485153e-23 0 0.06628254203 4451.697511 0 2691521.646 0 0 0.05354605433 0 0 2.076301298e-08 0 0 0 641.0605765 0 0.01398351208 0 0 1859421.279 0 0 0 0 0 1.203890209 2.793760155e-10 0 0 0 0 0 0 2.518649237e-10 0 0 13418.12124 9.027991796e-22 108365.8838 6.878924077e-11 3.719560998e-17 0 0 4.022608204e-08 0 3488.946775 328.7761656 0 0 8.717216085e-09 1.717188783e-05 0 0 4.332518168e-20 3460.734909 0 0 0 0 0 0 8.832622599e-10 0 0 0.003267758878 0.006373452757 0.6219876942 0 0 0 0 1.016178694e-05 1.361269317e-07 8.189325059e-11 1.174713384 6.968049584 0 0 0 0 3.487060689e-08 101726.845 1.025232691e-06 1.11329955e-11 0 0.009517063515 38022.7642 0 0 0 0 0 8.199040407e-05 0 0.8085311858 0 1.886115154e-08 7243.481063 5.179922036e-14 0 0 0 0 0 0 0 0 2.305388857e-13 5.341790905e-05 0.002373931501 0 5319.849909 0 0 0.02333340185 0 7.759627525 0 0 0 0 0 0 0.04987645731 0 0 0 6.566257563e-17 0 0 51823.66857 0 0 0 0 0 0 0 7.904674241e-05 0 0.4790997621 6.419877264e-24 0 0 0 0 0 1.208276007e-05 0 0 0 0 0 0.002282149937 0 1.979191835 0 0 0 +0 1.29146333e-18 2.243449444e-12 0 0.01229448793 0 0 3.029075341e-06 0 0 0 0 0 1.492482568e-25 0 0 6.65126597e-11 0 1.221716685e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 1.192661774e-05 1.532316584 1.094032869e-22 6083.021885 0 0 0 0 0 0 0 0 0 2540.965899 0 0 0 91317.3155 0 38.59931578 7.906342784e-06 1.180119474e-08 0 0 0 0 0 0 0 6.013472646e-11 0 0 0 0 0 9396.082875 0 1.313411953e-09 49.05747672 0 0 0 0 0 0 4.688171901e-10 10561.14082 0 0 1.402493613e-10 0 0 0.0001127706135 0 0 0 0 0 0.0005442703966 0 1805.686938 9.891451779e-09 1.318953472e-12 670.4874642 6.370087319e-06 3.780879284e-25 3.139981114e-11 6.625317679 0.00236935403 0 0 2.772512908e-07 0 0 0 0 1.277821846e-14 2.684029274e-19 2.548694682e-15 0 0 0 0 0.2415123343 0 0 0 0 0 608.2785836 0.04081876744 0 985.3343238 0 4.701004123e-18 0 0 55.1636505 0 3.948837628e-10 0 0 0 0 0 0.0001091230895 0 0 1.436960374e-10 1246885.984 0 13003.02632 6.226214458e-09 0 0 0.03926287455 0 0 2.81882302e-17 0 3.323569851e-08 3235339.502 0 0 0 0 6.613790438e-12 0.785933521 0 0 0 5.1304028e-10 0 0 47501.53521 0 0 0.001356253041 0.05323188038 0 279.671257 0.005607968372 7.276772078e-10 0 0 2.306715682e-12 1.940912815e-10 0 0 0 0 0.0005410796315 0 0 4003458.817 0 0 0 5.668034257e-15 0 0 0 0 0 0.0001550501082 10.6463474 24889.07321 0 2928644.907 0 0 0 0 5.398136971e-15 0 3.358329327e-05 0 0 0 0 0 2704802.872 0 0 0 1.287402849e-29 0 0 0 0 0 0 3.146049143e-15 0 0 5.28716253e-18 0 0 0 0 0 0 0 0 0 0.0007376456884 0 0.00443676524 0 0 1152.464485 0 0 1.308677924e-07 0 0 0 0 0 0 5.86719306e-09 0 0 0.06654123258 0 0 0 0 0 2.978844423e-15 0 0 9.436225724e-16 0 0 0 0 0 0.2653341544 0 1.478371317e-07 0 0 0 0 0 0 0 0 0 5.003029377e-10 5.495499038e-17 656.3204853 1.561913415e-14 0 0 0 0 0 0 181.1312835 0 0 0 0 0 0 8.586615727e-20 +6.162315474e-14 0 87.52405018 0 0 0 3.119375046e-24 0 0 0 349184.3889 0 0 0 0 0 0 1.250528202e-06 0 0 0 75.76555122 4.42615274e-08 7.44833631e-08 0 0 113705.0836 0.001080188169 0 8.018537234e-07 1726.857108 4.589410977e-08 0 8.933334811e-09 0 2.091018618e-09 0 0 7.741842821e-05 2.820530831e-11 0 0.0001471054869 0 29185.44059 0 0 5.036427001e-07 0 87249.68441 0 0 0 4.82908434e-08 0 0 0 0 0 0 7.287116357e-14 0 1.657812612e-08 3.452556809e-09 2.687284034e-22 22.17384881 0.0001670273197 0 0 0 8.481950662e-16 0 0 9.038058096e-05 0 0.00240818575 0 0 4.572918457e-10 0 1.716793415e-06 6.060288668e-13 2.768160444e-10 0 0.001355704818 48154.19462 0 1.008558301e-12 0.0001763502393 2.269158625e-26 0 362061.1347 0 0 0 6.110961345e-13 0 0 0 0 0 1.590262781e-13 0 0 118462.076 0 3.675036338e-08 1.257713183e-14 2.361562192e-17 0 0.001684018396 0.001781755817 0 2944557.99 139.4431629 0 3.411832026e-11 0 0 0 6.698209353e-24 0 3.749607234e-11 1.860764724e-14 47.98168161 0 0.001541053046 4.463057062e-11 4.386349758 0 0 0 0 1.02623656e-13 6.927228281 0.03859619811 0.1670401468 0 0 7.350972554e-17 0.005888521286 0.0001463958521 1.012092193e-20 1.042254684e-06 0 0 0 1.314266492e-30 0.7099527971 0 1.20935304e-08 0.1232825334 2.439320632e-16 0 1.567422556e-13 0 0 6.363297166e-21 0 0 0 0 4.805569325e-05 0 0 0.8709024393 0 1.439736837e-15 0 31746.47218 0 0 7.000864258 0 0 2.608256238e-06 0 0 0 9.197812158 0.5164828127 0 0 0 0 0 8.463086174e-06 1.519678765e-13 0 0 1.748031494e-13 0 1.497192109e-15 6.444735767e-13 0 80.25065267 0 0 0.001771561016 0 37.8360366 0 1.877291839 8.448933399 3143018.255 0 0 0 1.576561904e-10 2.413102461e-05 0 0.09137523376 0 0 0 0 3.547994891e-14 0 0 0 0 1.751868052e-06 0 277109.8861 5.048665622e-10 9.871497133e-10 0 0 0 0 0 0 0 0 0 0 0 0.01225761595 0.799197725 8.247299549e-11 0 0 0 0.0007200902523 1.186867242e-14 0 3.572157253e-10 0 588837.3511 0 0 0 553350.4554 3.43775863e-05 0 4511.361137 0 5.902383355e-22 0 0.04325294892 0 0 0 0 0 0 3.466705322e-06 0 0.0002894119693 0 0 0 0 0 0 22.20501826 0 1.526199632 0 0 0 0 0 0 5.423161994e-19 0 1.230454547e-09 0 5.17315674e-08 0 0 0 0 460.9472888 0 0 0 2644913.912 0 5.3574669e-20 0 +0 0 0 0 0 0 0 0 0 0 1.03062095e-16 0 0 0 0 0 0 8.346585955e-17 0 0 0 0 5.400049275e-06 1.593174482e-10 0 0 0 0 0.001978076399 0 0 2.836368091e-08 0 0 0 0 0 488522.9778 0 0 0 0 0 0 0 21897.56371 0 0 0 0.0008874123141 0 0 0 0 0 0 0 5.892221434e-18 2.780197684e-16 0 0 0 0 27.01370135 0.002658011055 0 0 1206.708685 0 0 0 0 0 0 2.520962609e-14 0 0 5.2926021e-12 0 0 0 0.007125178438 0 4.759359066e-06 8.041177555e-11 1.290158101e-14 0 0 745439.857 0.0002742510171 0 1.870593926e-07 0.006595743852 8.735446063e-26 1.771517179e-09 0 0 0.0002396674004 0 3.928003405e-11 0 0.5433806882 0 7.626575618 0 5.406131495e-09 0 7.496669726e-21 0 60955.40128 62.73989622 0 0 0 2.74854307e-10 15727.64418 0 186.4891682 8.632970446e-11 1.38938806e-23 0 3.687988961e-05 806075.3404 0.9319323738 7.636613565e-09 0 0 0 233.2498839 0 1.997117152e-25 0 7.509406137e-06 142021.1088 0 1.056305333e-13 0 6.219209447e-26 1.763624383e-25 1.702224008e-12 0 0 0 0 0 0 9.411193774e-08 8.06284162e-10 4.017107036e-23 7.917861876e-29 1.752261931e-14 0 8191.338926 0 0 0 0 0 0 0 0.01673010868 0 0 0 0 1.204067361e-12 7993.288637 0 0 5027.934414 1.110697185 72.83427505 2.521730951e-13 0 0 0 0.03552100525 412262.2286 2.474702941e-29 9.552097077e-08 111.1825976 3.348182088e-07 0 0 1.272969634e-09 0.009618273695 0 0 0 0 1.250822782e-15 0 2.41156318e-09 427265.1114 0 0 0 0 3.580786923e-17 4.369065569e-20 4.552324633e-17 0 0 23805.4451 10813.54401 0 1.95041598e-09 346158.5298 0.1447269662 4.727254245e-12 0 0 0 0 0 0 7.056856511e-15 2.192907093e-05 6.186493917e-07 0 0 2.338001928e-17 0.000742861181 0 65122.78052 0 0 0 1.693853691e-05 0 0 0 199.729093 1.393831494e-15 2.968449759e-10 0 23.17102948 5.306684055e-12 0 0 0 0 22719.33834 0 1.013965479e-08 0 0 0 1.762478266e-21 45.48240139 4.478252664e-14 0.0004793771999 0 11.93887267 0 0 0 108093.6775 0 0 0 0 0 1.119241995e-08 2.651305634e-10 0 0 0 3.495208578e-06 0 0 3.406238365e-20 1.562363632e-16 2.813324647e-12 0 0 0 3.455574794e-16 6.449971289e-16 0 0 0 0 0 0 0 0 0 0 0 0 208.964575 0 0 0 0 5.481342565e-16 0 0 0 +0 0 0 0 240609.0556 0 3.013253037e-18 0 0 0.006378641912 0 0 0 9.562425664e-11 0 0 0 2.801030372e-09 0 0 0 0 2.170360101e-11 567987.9077 0 9.734500286e-09 2.1990082e-11 0.0003027633197 1549444.038 0 0 1449.282584 0 2.911900909e-15 0 0 3.385053348e-09 0 0 0 0 0 0 0 0 867.8793529 0 147808.1678 0 2.470371092e-05 0 0 0 1.925202691e-05 0 0.1350676036 0 0 2.341291763e-16 192372.3029 0 51548.92314 0 0 0.01959560139 2.181761171e-11 0 12931.39932 0.007808695843 0 0 1.756996161e-05 2.241555971e-14 0 50884.07952 0 0 0 1.132755696e-06 0 1.214100443e-07 0 0 0 0 0 0 0 1.022468024e-06 2.061192096e-13 0.002200864807 9904.158448 4.756932587e-13 2.872538039e-18 0 6.366642717e-17 8.454456597e-34 576.0532635 9.229295701e-13 0 1.703886456e-15 1.375985884 1.532945708e-16 0 0.2056895234 0 6.712196799e-15 4.020302639e-12 0 1.907950916e-08 2.200203948e-09 4.794138947e-05 0 0 1.262162587e-18 0 0 0 6.724395577e-16 3.030066094e-09 28630.87025 0 0 1.613698637e-06 1263728.895 0 0 5.376575879e-20 36.379988 0 9.925096601e-19 0 6.481855695e-17 0 0 1.653951001e-16 0 510666.4825 0 0 0 3.416843364e-15 0.1025352031 0 0 0 0 0 14107.14184 0 0 0.08908670437 4.235169781e-08 0.01379337985 0 0 0 0.002980095941 330015.0411 53601.68049 1600.147935 0 7.882634039e-05 0 2.340474282e-07 8.261573451e-10 0 1.244108345e-15 6.636897615e-11 0 1.392324301e-12 2.594060613e-14 2.937977983e-13 0.2117622335 0 0 6.581147761 0 374.6959122 0 0.01472759684 0 0 0.09102159882 182.3311108 0 0 0 0 877.9186704 711185.149 0 0 6.538770177e-13 1.502272676e-06 0 0 0 2.252148252 0 5.404641789e-09 0 0 0 1.661585068e-11 0.003224789772 0 3.317417902e-16 1.569109781e-07 0 0 6.641288492e-12 4068.107811 0 0 871.3478605 1.411674753e-10 0 1.615592498e-11 2.353936797e-11 0 0 0.0008564822042 0 3.560519472e-05 164855.6512 2.078849376e-26 0 0 2960.464859 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001214702903 0 0 0 0 0 0 0 0 0 0 0 0 6.560619597e-08 0 58541.51214 2.093455507e-07 0.09750419617 0 3.379038511 122.3037194 0 8.708848388e-10 0.003909940411 0 0 0 0 180211.5561 0 0 862.1828438 0 0 0 4.20607507e-08 0 0 0 0 0 0 0 0 0 0 39991.85145 0 0 0 0 0 0 +0 0 0.0002498337484 0 0 0 0 0 104228.713 0 2.270753031e-15 0 0 0 0 0 0 0 1.756164355e-14 0 0 0 0 1.516773916e-17 0 0 7.280290161e-07 1.696963379e-11 0 1.474118215e-07 0 326948.3399 0 1.119887931e-05 0 0 2.983070949e-10 2.08773626e-12 0 1.211711286e-08 0 0 462226.4728 0 0 22.64080167 0 0 0 0 4.219459475e-15 0 0 0 0 5.867137415e-10 0 3.807180698e-07 0 0 0 0 9.790816277e-05 1.865199644e-07 0 19.34310893 0 1.693649888e-08 2.805284937e-09 1.250877864 46821.14158 1.460202627e-06 0.02310263836 0 0 6514.625643 0 0 1236308.713 0 2.33191084e-18 0 0.006322559273 0 0 0 0 0 0 0 0 0 144523.7708 0 0 212412.6694 4.835775527e-07 0.03009843653 5.83991542e-06 1.68297494e-10 0 3.005647765e-14 0 4.58373995e-07 9.668174919e-11 1.014037316e-05 0 0 9.310632294e-12 0 1.147156264e-13 0 0 0.001346441184 0.0003337050528 17020.0878 0 0 0 0 0 8.791211405e-05 2.337345734e-10 0.0001480847166 23462.4853 13591.51831 0 1.584476775e-08 1.09241919e-17 0.0002189229437 0 0 0 0 3.083789774e-19 0 0.0002369893731 0 0 0 8.472930648e-22 61642.16864 0 119949.4754 6.748041146e-19 6.766594614e-18 461.5852677 0 6391.901544 0 1.676900141e-20 4.114037255e-11 0 0 1.41150909e-13 2288308.131 0 6.030015336e-23 3862523.658 0.0003222481389 1.461770278e-11 3.650370807e-10 0 0.1220202327 44029.40818 0.971430714 159887.1043 0 0.01653533523 8.228502781e-10 14291.58009 0 0.0001565975262 0 290912.951 0 26.5750576 0 67699.93214 0 0.1047245512 0 0.003913320368 0 2.784383707e-09 2.922573826e-06 2.576557617e-13 0 1.051227792e-11 1862.412197 37.26884834 1.143364986e-09 0 0 208.5736717 1.105129676e-10 5.846575172e-15 3.275708387e-17 0 0.0003412110097 112285.2979 0 0 0.8218068107 101042.8927 2.993317335e-11 0 0 0 522.9493924 1.837183727e-23 0 1.75469466e-11 0 21.61293386 0 0 0 0 0 2.631420813e-07 0 0.9538587769 2.071151418e-06 0 0 8331.111682 1.078333792e-16 3.485148525e-05 0 0 0 0 0.0355230754 4.743027496e-17 0 0.006828037098 0 0 181765.2109 0 0 0.7678305507 0.0005386178118 3.066650918e-27 37165.25492 0 0 0 0 0 1.083670262e-08 0 0 0 0 0 0 0 0 0 0 2.968881666e-08 0 0 9.268918224e-13 0 0.001213561967 0 0 3.554698768e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 231927.0613 0 0 8.708816947e-21 0 0 0 0 0 0 0 0 0 0 +0 5.795177127e-19 0 0 4.136280414e-13 21000.54805 0 0 0 0 101362.6163 0 0.0003918741587 0 0 0 0 0 0 1.624262329e-13 0 0 0 0 0 6.220183681 1.860946782e-13 3.624874023e-05 0 0 0 5.183565181e-05 0 0 0 3.017487337e-06 0 0 0 5.570934188e-11 0 0 0.005577776963 0.914773119 0 0 3.178845894e-23 0 0 0 0 2.80199578e-21 0 4.580877416e-12 0 0 341.2415413 0 0 9.362141942e-09 0 0 0 0 0 0 3.656113358e-10 0 0 0 3.527191712e-10 0 0 6.65560354e-13 0 2.886744701e-10 6.297722493e-08 0 0 7.005229915e-08 9.442256669e-06 8.633968063e-31 0 0 0 5.026090769e-08 871.0528168 0.0001690978517 0 0 0 4.869505099e-07 0 1.228631752e-10 0 0 0 6.538748383e-15 6.373891669e-09 0 5.930655373e-05 0 0 0 3.137459003e-08 0.0009273943766 0 0 0 6.029394775e-05 1508.277161 8.88516579e-06 0 37115.68717 3846.428055 7784.342116 6.5120891e-12 0 0 0 0 0 0 0 4.131083292e-08 102.2212041 1.091455008e-16 0 0 0 1.171978608e-23 2.044160338e-07 0 0 924677.7861 0 740190.5292 3.769965429e-18 0 0 0 0 0 5.020377403e-08 0 0 0 0 0 0.2630812844 1.759549505e-05 0 2.661775301e-07 0 0 0 0.00169106746 0.07577447857 0 3.512114118e-07 2.032771005e-10 0.0001433503574 0.005155145371 0 0 1.328993727e-09 0 0 526.1374673 0 0.000141033517 0 3.812569202e-05 0 6.488621834 2.010406171 5.587750436e-26 0 0 3000.470927 0 0.4442692038 0 1.070957277 6277.74397 0 11951.30862 0 0 1.040705049 0 1.916244648e-18 0 0.03916521877 27404.3584 0.0002367721613 1.959962624e-12 723.3242655 0 0 0 13.46050932 0.2557999402 0 0 1152383.991 0 0 0 54.86396546 0 22.36601542 0 0 0 4.776468101 0.06951372271 4726438.543 0 0.0004143363719 1.146017563e-10 167162.782 0 0.01471590462 9.590029167e-23 0 0 2.03395444e-05 0 0 1.615662514e-09 0 0 129511.9031 0 0 3.190211414e-37 0 3085.593298 0 0 444922.8338 0 1.740738543e-13 0 0 0 0 0.0006337268621 0 0.003355643804 0 0 2.127078781e-10 0 3326691.953 0 2.669811454e-07 0 0 536.0650983 0 0 0.09479424525 0 0 0.0003710089675 0 8.546599092e-22 1.383592618e-05 0 0 0 0 0 0 0 697245.2314 346255.5989 0 0 0 0 0 0 0 0 0 4.69313217e-05 0 0 0 8.821763529 0 0 14856.20731 0 0 0 0 +0 468.5120208 0 0 0 0 0 9.819615805e-16 0 0 213537.6358 0 0 228159.4413 0 0 0 0 0 0 134655.9204 2.272670669e-07 1.165903381e-08 1146.139524 0 7.053620155e-15 62.07833324 0 0 0 0 0 3.586258144e-12 0 0 0 0 901.2461661 0 433.9227863 0.001067005142 0 289.5784965 0 0 0 0 0 0 3.11332386 8.478904705e-08 0 0 3.399315469e-05 0 0.7061406785 2.509199587e-09 0 16.90804252 5.091226057e-20 0 127.9607364 0 0.0008751067494 0 0 0 0 0 3.847911997e-16 0 214.2476242 5.57266892e-32 5.024839332e-11 45818.38818 0 0 0 0 0 0 0 1.050719477e-14 3928406.775 1.882977843e-08 2.130022086e-09 2.221387529e-06 5.208075429e-08 7.272462152e-14 0.0001868091515 3.094601136e-18 0.001147816514 0.8204486331 0.001893264671 729564.507 2.750328874e-09 0 0 3.152689413e-13 0 0 0 10.29873644 0 787541.8144 0 0 0 6.751949838e-23 0 1410.365368 0.007928572119 0 1.298779793e-09 0 4.219763153e-22 5.227187916e-09 0.0228035396 0 8.662560073e-17 0.0007300424971 3.667392672e-12 0.01014287637 383.3548063 0 6.116697546e-17 2.395683106 0 0 906865.0763 0 4.265588553e-18 7.2027204e-15 0 610502.1093 10687.47753 5.840420999e-15 1.179792927e-11 0 0 0 0 3.332410401e-12 0 0 0 2.513601189e-06 0 6.281439175e-09 0 9.745412669e-13 0.05247644805 1.185152958e-08 0 0 0 0 0 1.187787611e-09 1.099926295e-10 0 0 0 0 4.00787656e-15 15488.00538 0 241.1032486 2.61424524e-06 0 0 7.149563834e-11 1.114684465e-11 0.03543954923 773769.5482 3.656361515e-18 36900.19818 7845.679959 3261.311508 5292.986166 2.192051391e-15 0 1148117.297 0 0 2.70598385e-21 0 0 0.00950626325 4.672684198e-08 0 1.527924309e-05 0 0.001227729463 0 3.583542175e-10 0 0 0 0 0 0 0 0 0 1331436.502 0 0 2.61671802e-15 0.002137017488 0 2.493560442 0.4282673388 6765.610125 0 0.009538770146 267603.7656 0 0 0 2.566474479e-09 2.836534168e-22 0 0 0 0 9.591223562e-12 0 0 2535949.279 0 0 2.586726125e-05 0 840.6740683 5.409033515e-10 262510.1461 77.02696715 7.992334865e-14 0 0 0 5.813906233e-06 0.1154123683 4.389724223e-22 0.02731814585 118680.211 0 5.445651688e-11 9.749934611e-15 0 0 0 0 0 0 0 0 0 0 0 2054491.995 0 0 0 7.369728335e-11 0 0 0 0 0 3.114315005e-05 0 0 0 0 0 0 0.4930668128 0 0 0 0 0 0 0 1929.272722 0 0 1.108658956e-06 0 0 3.152692042e-08 0 0 2101794.605 0 8.774470308e-14 0 0 +0 0 4.09903525e-14 0.01769381224 0 0 44.20627299 1.403988924e-06 0 3.876462594e-27 0 0 0 0 0 0 2.08799654e-12 0 0 0.09859856974 0 3.390873976e-25 0.04206933542 75865.2006 3.964103456 0 0 0 7.69735156e-06 0 0 0 2.606173373e-14 0 0 5.303467101e-06 5.905565594e-09 0 0 0 0 0 1.611364842e-13 0 3.854117831 0 3.821483207e-09 0.03492330433 0 35.38908877 0 0 0 3.700280224e-08 271.4961649 0.466119835 0 0 28.16424756 0 5.270437356e-08 0 0 0 11618.63752 156081.1095 2.601005833e-10 0 2.357610176e-06 28.66622817 53.44068744 6.674690383e-09 141417.9797 5.88158967e-10 0 0 3.217209985e-05 0 0.005566729776 4.476636533e-24 1.755410755e-10 1765.128644 1.270685924e-17 0 0.004270444939 3.792074168e-09 0 0 14698.8057 0 0 0 98.19787554 11346.51918 0 0 0.0008466886973 0 1.192773732e-15 0.0008102362238 0 0 4.869479997e-08 1.263049786e-20 0 58.20877125 1.72490792 4.118180725e-09 9.876991984e-07 5.289009777e-06 637107.3869 3.463778113e-11 0.006271216418 0 559.0904841 0 0 0 735636.5514 418.4628227 0 0 0 0 0 0 0 0 0 0 3.816725239e-21 0 0 5.827993947e-28 0 1.147754002 0 1.445556788e-07 0 0 1.633155832e-11 121565.7916 1.890888459e-07 351717.4839 1.401514573e-12 0 0 10791.90388 0.7163625158 0 0 6.122476612e-07 0 0 0 0 0 1.426229023e-12 1.298738944e-07 0.000388654815 0 0 0 0 0 0 2.082392745e-11 5.594519576e-12 2.74361656e-10 0 1595.740705 0.007148476954 2.517237826e-14 23.05791907 0 0 1.107214902e-10 0 0 0 0 0 4.224423392 0 2.269731674e-05 0 0 5.732450679e-05 0 0 642371.7439 0 0.02471183079 272915.8846 0 1.666178295e-12 0 245.0116161 0 0 0 1044537.466 0 6.489598794e-06 2.28471437e-11 6.839517387e-13 6.033605595e-08 0 0 0 0 0 0 0 11.79208752 0 0 0 0 0 0 124509.9158 0 155.0606222 0 0 5.036649321e-10 115587.9468 3.167970173e-11 2.442143644e-05 0 0 0 0.5931943771 3.211848646e-08 0 0 0 0 0 0 8.694961455e-07 0 0 1.261095291e-21 839.9451689 311967.2519 0 514.3908809 1.107897147e-11 0 0 0 0 0 7.583182884 0 0 0 4.255409939e-13 3.504888228e-14 1.548563156e-05 0 0.9173026275 0 0 30.86084266 0 0 0 0 0 0 0 81836.66348 0 7.026222291e-14 0 0.004009655677 0 0 0 0 0 0 0 0 0 0.003195696703 0 0 0 0 0 0 0 0 0 0 0 +0 2310.688445 0 0 0 8.444744277e-15 0 0 5159518.972 3.717292992e-13 0 1.269867923e-12 0 2.804849615e-18 0 0 1714.665272 1.055311885e-08 2690.730971 0 0 1122628.657 0 9.459556329e-10 0 0 0 0 0 0 0 0 3.858813526e-16 0 1.95997507e-10 0 0 1.447931388e-10 0 0 1266.551883 0 0 0 0.000317743323 0 564915.4283 0 0 0 0 0 0 0.0008160932651 0 5.898321562e-08 883.8798307 0 9.489702392e-25 0 2.077669259e-20 0 0 0 0 0 0 0 1.427630063e-08 0 154.1720973 0 1.845314859e-12 0.02402607605 0.00208362283 0 0 1.944898151e-12 0 7.931419602e-16 6.233399751 0 0 6.075291012e-09 5.448215863e-12 2.612838945e-06 0 0 0 0.01370804544 0 0 0 0.0003245123968 0 0 0 0.2670170987 0 0 4411.057008 14.13979723 3.988648395e-07 2.383566094e-11 1.140360399e-15 4221.413791 0 0 0 6.899274205 0.1709335528 0 954.6846966 0.0002902632417 2.750877623e-10 1.778241279e-16 2.074363516e-12 165.826718 0 15510.22366 0 0 15684.1361 263729.9366 346973.2186 4.221845354e-16 3.538404624e-14 0 0.003875343816 2.483716513e-06 0 891487.9607 1.015674455e-08 1259650.327 6.219601055e-11 0.1796623854 2.294629688e-06 1.6165194e-14 0 4.174660588e-23 0 1.246684695e-10 2.592948713e-14 1.437829064e-08 2.957394879e-10 0 1556953.19 0 8283.852405 1.03125355e-30 0 0.1802411637 3.274347276e-17 0 0 7097.573495 0 1.465169055e-15 0 0 2010.999406 0 1.17387782e-07 9.637372373e-10 6.845563806e-24 7.978615278e-06 0 0.001011835914 0.02444387848 0 78883.4898 2.004337782e-09 0 0.009537705073 0 0 0.2749342123 0 0.02357926884 3.914330279 0 0 0 0 5.47821714e-09 0 0 0 0 0 1.91825632e-25 0 0 0 0 1.373211702e-07 0 186426.055 0 1.693361663e-20 0 3.617971807e-16 0 0.0004803058981 5.247252129e-13 3.878016371e-12 0 0 1.266573516e-19 41270.49171 799.6294342 0 0 1.397816856e-10 0 0 6.661731359e-17 0 0 6893.927955 41362.49624 7.878985697e-11 0 7.348122979e-06 0 0 0.002112144721 0 0 7.045377759e-09 172636.6591 0 18991.16519 0 0 0 0 0 0 8.886950488e-22 0 0 0 0 0 7.658473312e-13 0 0 87.57872287 0 0 0.0001216697768 0.2488274327 0 0 0 0 0 285848.6353 0 0 2125.817494 6.333551241e-17 5.421118503 4.917885768e-10 0 3.195220273e-14 0 343327.6092 0.07209501925 0 0 0 0.0001851757833 0.05488637064 0 1.826424717e-05 0 193014.3836 0 2993.911589 5.665336082e-22 0 4.937019626e-13 0 7.854855167e-27 0 0 5.189287463e-12 0 0 0 0 1.836877784e-12 915162.6589 0 65.43448291 0 0 0 +5.075338899e-05 0 0 0 0 0 0 0 5.291369852e-17 0 0 0 2.225108718 0 6.657193033e-11 0 1.550317653e-13 0 0 3.592598947e-17 0 0 121011.2296 0 1.589277405e-06 0 0 0 0 0 0 2.673399913e-09 0 0 0 0 0 7.577331291e-09 0 0.0001135232244 2.173917474e-05 0 0 0 2.156339286e-12 0 3.342121328e-17 0 0 3.710483695e-09 0.01200998046 0 0 0 753230.9583 58328.73106 31.82788998 0 0 55.00892404 3.346833083e-09 0 8330.466271 0 9.947746076e-15 0 0 0 1.975903615e-11 4621.041688 0 0 104582.2608 0 2.397655511e-06 1.40905948e-07 0 0 0.1551789592 6.897290916 0 0 0 90.1235634 1.295943632e-17 0 0 0 0 0 7.253818556e-07 0 0 0 0 0 0 0 0 0.0162292009 0 6.094016129e-08 0 0 0 356709.6892 0 0 0 3.732957167e-22 0 0.001113669831 8.142234413e-05 4604.410192 0 1.103952803e-23 5.024386764e-09 0 1.213116087e-09 0 0 0 8.646992407e-15 19011.59284 0 291.651943 2.070776111e-08 1.475238003e-22 143925.8054 0 1.123891092e-13 1.487737515e-07 4.985194136e-07 8232.788623 819.2842248 342797.7453 0 0 0 0 0 0 0.2233499029 2.963364309e-10 0 6.943780345e-22 0 0 0 5162.385579 7.230466155e-11 0 4.321528187e-21 9.572300144e-14 0 0 0.005119448235 6.740213044 1.139135447 0 0 0 244242.0484 1.328607554e-05 0 2.752368509e-13 0 1.499981327e-09 2.468880156e-17 0 3.371131834e-06 140.5529122 0.009636297526 6.361863165e-08 0.001777062233 0 6067.983781 0 0 0 0 0 4.147909058e-15 0 2.913044686 0 3.140408369e-13 0 3.711543449e-09 0.004325548257 0 0 0 7.788102486e-21 1.423013125 0 3.21411732e-09 9.744520579e-14 0 508830.9785 1654634.366 0 2.249109198e-13 1.432092651e-09 2.585194208 0 1.746808195e-11 2.154684504e-08 6.682733954 0 0 43397.53225 1.829480839e-12 0 27142.56308 0 0 0 0.0002308254768 0 2524.599726 0 0 0 0 2.667082376e-17 0.951514882 4.08754585e-11 4171.497484 0 0 0 2.869870727e-12 0 0 0 0 0 9798.199633 321905.132 0 0 0 0 0 0 0 1.167101591e-21 0 0 0 0 0 0 0 0 3.336866642e-28 74792.42366 0 0 0 1.318913441e-12 0 0 0 0 2899820.901 0 0 18.03030981 0 0 426877.0638 0 0 0 0 0 1.991812081e-25 0.005083996782 0 0 1.444596402e-16 0 3.217121478e-13 0 17870.67803 0 0 0 0 0 0 0 6.479879645e-15 0 0 0 0 0 +0 5.037416017e-09 0 7028.095435 3.343388389e-08 0 0 0 0 0.2546588704 0 0 0 0 0 0 2.166801199e-15 0 0 0 0 0 0 0 0 0 0 889.7162159 0 0 0.0001713210287 0 0 0.001942887607 0.2291770795 0 0 0 0 0 115.2774434 0 0.01487005133 0.00472094524 0 0 0 0 1815509.794 0 0 0 3.434600428e-11 0 0 0 0.1655036105 0 0 2.440337932e-09 4.474458061e-06 0 0 61841.44841 0 4.588771373e-13 590071.2273 6.808964655e-06 0 0 0 3.471928802e-16 5.523149632e-19 2.011437392e-11 451.0469398 0 0 1.161621169e-08 1.912716577e-20 0 0 3.496863162e-29 0 620.1091756 1.821036311e-16 0 0 3.144755646e-12 0.0001782209966 0 4.433526046 0 0.0001295715836 0 0 3.322716038e-24 0 0 0 0.4715140143 0 0 0 1.944390256e-08 0 5.629232825e-08 0 2.888392072e-05 8.431135618e-12 0 0 0 0 0 8.635149412e-15 1.507821745e-26 0 0 0 8.089130648e-15 1818755.31 0 0 0 9.518604885e-15 0 1.803006643e-26 0 0.03948780762 0 7.102673622e-10 0 0.1804508292 3.035035345e-11 0 18699.72122 0 0 0 0 0.03828701916 0 5.335877899e-09 0 2.208474868e-19 0.01765605821 0 0.0003101136659 0 0 0 1.018891243e-21 0 2.912860146e-15 0 270555.8502 0 0.08572157081 0 0 0 72165.59298 8.82023983e-06 0.2794886859 172.4462975 0 3.89517178e-10 0 8.224090853e-08 0 658.4490878 20959.77513 4.919369869e-14 0 0 5.515113663 7.960202519e-07 0 3.11291919e-05 2.561267569e-17 0.0001704953322 2655.793074 1.477374952 0 0 0 3.837946143e-08 0 0 15744.08469 0 0 231445.7839 0 0 7.99561083e-09 0 0 2.61742732e-08 1.425209841e-11 9.222580063e-12 0 0 0 0 0 0 5206.808712 0 0 1.337601793e-13 0.005244809192 114.928288 0 0 0 0 0 0.2620654309 0 0 33.41583977 0 0 0.01173093904 0 0.0003411108165 0 289186.5562 0 2.544273203e-06 0 0 1.125564203e-08 0 461023.1168 0 0 0 2.921751586e-08 0 498459.8504 0.01095288915 0 0 0 0 0 0 0 0.01384232675 0 0 0 0 0 0.232348263 0 6.319022277e-13 0 0 0 0 1083567.106 0.438516045 0 0 0 0 0 0 414285.2282 0 0 0 0 62434.02071 2.405841331e-08 0 0 2286669.266 0 1.507030822e-10 727.8518686 5.514875302e-16 0 0 0 0 0 0 0 362098.2319 0.001286733759 0 0 0 0 0 0 +0 0 0 1.920269096e-08 0 1.285866365e-05 0 0 0.0192408409 3.808178478e-06 0 0 0 101899.4105 0 0 0 0 0 0 5.246310646e-06 0 0.0001032303592 0 0 0 0 0 0 0 0 0 0 0.02099089809 2.626527796 0 7.039217204e-16 0 7.296264755e-07 0 0 0 0 0 0.002547450711 0 0 0 3.194940762e-07 0 1.52616854 7.563920771e-09 0 0 0 0 1.690372696e-07 0 2.553116096e-13 0 2.228397205e-23 4.796564676e-11 0 0 6.104828168e-06 0 0.003052992641 0 0 5.24033095e-13 4.046666767e-19 151.0767213 0.3709854904 0 0 0.05399128392 2.297486553e-29 1.337357275 0 0 0 0 2.499842978e-15 0 0 0.006100593925 0 0 7772.802688 0 0 7.393820221e-11 0 0 0 0 0 0.01149272623 1.071532838e-07 0 0 0 3.868527879e-10 6.423040668e-34 3.108225716e-24 0.05256319019 6.628211773e-15 0 4.541308629e-14 0 0 0 1.093366229e-14 0 0 0 0.09624745676 0 0 4.128862737e-29 0 0 0 0 6.457976778e-17 0 0 0 2.080601938e-19 0.08378205469 0.1310438036 0 294112.9988 1.419526552e-08 0 3459.210177 2.893948974e-11 0.0001227929361 2.038472471e-06 5.795785278e-14 0 0 1.201845044e-05 0 5.7009669e-06 0 1.348018874e-12 0 0 1.670636792e-08 0.0001857668494 0 4.775657475e-13 2.325017718e-07 0 0 1.243783252e-08 1.562446435e-20 3.761669056e-10 5.149248307e-11 0 3.002738545e-16 782.2766354 1.23289595e-05 0 0 0 0 0 0 0 1.285731804e-05 0.04743906612 1.208612181e-14 0 0 0 667.6042788 0 0 68.44686568 0 0.738975804 2718.970798 1960923.015 0 0 0 1.586718868 57.17154627 0 14.27554789 1.884513628e-14 0 0 0 0.02289766324 7.60442417e-12 0 644.2064908 0 0 0 0.3394085228 2.378325099e-08 0 8.925221858e-22 1316648.792 392284.2632 0 0 4.295411811e-13 0 0.1533015495 0 203837.2424 605065.5256 0 0 4.903463089 0 0 0 0 0 0.0003208488164 0 0 536377.4794 0 0 0 9.123018686e-17 0 0.0004685767379 0 0 0.06310818046 3.033496712e-13 0.09348425225 0 1.749520291 0 0 0 0 1.708579399e-10 0 0 0 0 0 0 4.638054222e-10 0 0 0 207906.583 0 707.6828824 0 2.031003158 0 126.6608105 0 0 0 121740.0508 0 0.09672006587 1.83458984e-05 2.711846119e-12 0.9090878596 0 0 0 4.524603463e-12 0 0 0.001899855448 0 0 1.564510319e-10 0 0 0 0 0.0004832284776 0 8.101034659e-11 32745.11791 0 0 8.144119517e-10 0 0 0 0 0 0 +0 0 446000.8301 0 0 4.251667505e-24 0.01082157848 3577442.27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 135874.3045 3.967698438e-10 0.000342019821 6.555061829e-06 0 0 0 0 0 0 31145.31792 2.903059247e-22 2.314287786e-07 0 0 0 0 0 1.222419815e-19 0 0 0 1.805293242e-07 1.580053374e-11 0 0 0 2.471851895 67828.79242 0 0.2495910657 0 0 0 0 0 6.504250701e-08 0 764431.1103 2.849315994e-09 2137.687169 0 0 124510.2452 4.247586514e-11 3.116234831e-24 0 0 830953.6459 0 0 1.33996795e-19 0 0 1.64741439e-09 0 0 0 0 0 2.414562939e-11 0 0 348213.5996 1.920465728e-10 607.1536562 0 1.207184578e-28 0 1.18509296e-19 0 0.0004440191022 0 0 0 0 0 0 0.001241142437 0 106077.7053 0 0 0 0 0 7.39379446e-12 8.00103488e-09 10.75421995 3.535443531e-05 0 3.746175762e-08 0.001048207175 0 0 0 0 3.68327548e-10 39.73505241 1.330599062e-14 1.42431306e-11 648501.0861 22431.98683 37158.96681 0 0.0003841135474 3.037393544e-07 0 0 29113.04501 2.129244704e-12 0 0 0 0 0 4.162621389e-28 0.00203715368 0 1.088571869e-05 5.010559033 3.463628471e-08 2.283257001e-07 0 0 0.0008359178341 1.989520159e-28 1157.38197 0.8569014687 0.0002325823459 0 0.01029719478 0 0 0 0 7.9565636e-09 0.0002023337749 0 1.29650209e-26 1.414992766e-23 0.03995693206 1.58380397e-05 0 45.51096215 0 0 4.419269217e-11 0 0 1.409848362e-07 22531.09984 2211813.738 0 2.25089335e-08 0 130832.0479 1.241425362e-07 0 0 0 9126.352924 0 0 0 0 0 0 0.004599737845 0 0.0002195767914 0.002839426476 0.009039277218 18.1732794 0 0.002924117532 5.138789704e-08 0 0 0 0.001029900775 1.303676878e-11 0 0 0 276674.6919 0.00811892116 0 0 594170.6456 0 5.364220857e-06 0 1.135435738e-11 2.222792143e-05 1244.590938 8.544968355e-07 7.097731572e-08 1.590911085e-17 0 0 1.677372732e-09 0 0 0 0 1.547606899e-22 4.596958412e-10 3.39079158e-07 1091395.83 0 0.0001523327823 1653.809843 0 0 0 0 0 0 0 0 0 0 1.919301702e-15 0 0 0 0 0 0 32375.55481 0 0 0 0 0 1.678358858e-11 0 0 6.235004733e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.167270284e-12 0 5.467761021e-18 0 0 0 0 0 0 1280607.418 0 0 0 0 2.128134533e-10 2845.780159 0 2.233100952e-11 0 0 0 0 0 0 +0 2.614513857e-12 0 0 0 1853476.639 1.907512024e-13 0 0 0 528325.8481 3.981148572e-21 0 2.164999235e-22 0 523.7403728 0 0 2.16688693e-14 0 0 0 3.60467992 0.0004206782246 0 1.07297278e-06 2.551614617e-17 7.280695617e-07 0 8.931521669e-09 0 0 3.48552395e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009800277681 6.375185768e-07 0 0 0 0.002650215088 0 92770.77196 1.462170308e-15 9.079043247e-08 0 0 2.305723021e-15 4.798357192e-09 1.841002436e-05 2927.116593 1.085982703e-22 0 0 683733.375 507.4655186 0 0 0 288697.3755 0 0 0 4.043002644e-14 0 0 0 0.6131371411 0 7.024170858e-08 0.3448554123 0 0 0.001630494005 0 0 0 0 0 3.068665919e-05 462854.462 4.163961032e-10 1.816128879e-08 0 0 0 0 0.3300412169 52758.61416 0 2.892706718e-24 0 1.868411112e-18 0 0.0003892717813 1.427578973e-05 0 172435.6252 0 0 1556281.046 4.670023676e-08 0 106.9531318 356208.2251 0 0.4588869965 0.0004875582887 0 3.358227935e-09 14341.63989 158303.3945 0 0 743.7440518 4.626357159e-09 0.001962051422 1.842480563e-06 0 1.50231321e-12 0 0 2.930034829e-05 1.75151138e-05 0.02813833549 0 1.022332559e-12 0.000297145509 0 0 0 0 0 3.336003766e-09 692626.5393 0 1268391.264 0 4.623349962e-05 3.356600973e-08 3.622719547e-05 0.005550756185 0 0 0 0 0 0 0 0.03730574207 32581.88721 0 0 0 3515767.641 0 0.0887823344 3.765622983e-17 2.538935239e-07 0 0 3.119346273e-10 0 13.73293971 3.664543661e-07 0 4.868577056e-12 0 0.0003081517249 0.0005266480468 0 0 0 0 5.021426414e-16 0 0 0 1297586.627 0 0.5684205553 0 59.94070313 0 0.1082898666 0 0 0 404.1203072 50339.52259 0 307.537325 0.005660833688 0 0.0003518369074 1.039693539e-20 6932.744966 1.216047651e-10 0 0 0 0 0 0 0 3.518590534e-07 1.725712754e-17 0 0 0 0.005449497286 3.619019924e-10 0 0 0 0 0 3.112126153e-12 0 0 3.119657221 0 0 0.01865830241 5.517611516e-08 0 0 0 0 0 2.345458498e-07 8.28518336e-05 23309.27898 2.013432996e-07 0 0 0 524074.3934 0 2.75844154e-07 0 0.005905502319 0 0.07590710766 0 6.594750698e-17 0 0 4.493335702e-17 0 0 0 6.193954864e-13 3.435837894 7.548972057e-15 0 0 0 0 0 0 2299.476041 0 0 0 0 2.885969148e-23 0 1.181687535e-08 0 0 0 0 2.961864462e-15 0 0 9.412314131e-12 0 0 0 5.742765956e-07 0 0 0 0 5.063609514 0 0 +0 0 0 2.285565135e-17 2.036580804e-27 0 0 0 0 6.25213827e-14 0 0.0001541399969 3315.287545 0 0 0 0 2.199104452 0 0 0 4753.693903 0 6.659414265e-15 0 0 0 0 6.656324964e-07 0 0 0 2.441806566e-14 0.003521605381 66500.36566 0.0008877677033 0 0 0 0.0002973339428 0 0 0 0 0 243073.355 5.436430085e-16 0 0 74.73521677 0 0 0 4.444525774e-12 3.897246002e-15 0 1.503584261e-08 0 3.32039939e-20 3.160820777e-19 0 0 0 16.29608741 309605.7275 0 0 0 0 0 418339.4955 0 0 0 0 0 0.006998310973 58243.10576 0 0 99.88623007 0 0.7288360158 0 1.472246441e-09 1.02046861e-14 39781.36546 0 22.34308538 7.096294584e-07 0 6.0510341e-11 1.14869546e-07 0 0 0 0 0 480.7426106 267237.6503 2.487920938e-14 8.063385441e-11 62947.79705 2435179.182 0 75421.82669 8.274417383e-11 7.002424891e-07 1.333944062e-17 2.252839812e-23 1039.727546 0 7.874055577e-18 6.738754556e-07 0 0 6016.661837 5.405822414e-26 0 112338.7758 0 0 0 2132820.235 0 0 2.157758935e-11 0 0 1.002732889e-13 0.006008975558 0 0 0 0 0 8.866574161e-05 0.3684921544 0 0 8.453805808e-05 1.760551782 0 0 23754.62358 0 0 254409.5356 79768.93735 0 0 0.02663848686 0 7968.47095 0 0 0.0008680927552 2.147952496e-07 2675874.419 0.1615055023 0.0669920787 3.55023051 0 460812.3895 0 0 0 0 0 1.474164156e-10 2.202251983e-07 0.1110584907 0 3.399608482e-06 507341.7072 0 0 0 2.335895971e-10 0 2.750823631e-05 0 0 0 5.066153303e-07 0 0 0.005171608535 259.0348526 0 0 0 795.88286 0 0 1.780613116e-06 2.685124103e-12 0 0 6.827358463e-16 0.001710361721 0 0 0 0 2.009705405e-08 4.203106176e-14 0 7.889158027e-11 0 0 0 0.0004369690719 1.992867378e-05 143.4848067 0 0.0005379238766 0 1.958435818e-05 0 0 0 0 0 0 1.286930543e-07 8.152610928e-11 0 0 66780.21463 0 0 0 83722.38429 0 4.340244771e-05 0 0 0 3018.270895 0 0 0 0.001929925345 0 2.582129731e-14 0 0 5.220719769e-11 0 0 106328.155 0 0 3.719989494e-10 2933.534023 0 4.007441463e-13 0 4.783429399e-08 0 0 0 0 0 0 0 1.217307126 0 0.2273080794 0 0 0 0 0 0 3.339801398e-07 0 2.834555657 0 0 0 2.247367769e-19 0 0 2.546702976e-16 0 0 0 7.822234465e-19 0 5.315415483e-17 4.774930222e-15 0 0 0 14.20244645 1.915928622e-07 0 0 +0 0 0 0 0 0 0 254317.3893 0 0 0 0 0 0 0 0 0 0 92651.99036 0.09017595583 4342795.332 0 1.067289816e-13 0 0 0 0 1.550742248e-05 1.005753841e-12 0 0 0 0 0 3.301901411e-09 0 0 0 3.456833189e-09 0 4.042211439e-11 58.30633708 0 0 201.4127458 0 4.304257552e-16 0 7016.485946 0 0 0 0 0 0 0.0008902883056 0 0 2269.66792 0 0 0 0 0.01552819798 0 0.2773945025 0 1.122532273 0 0.3439552382 0 0 3.289470198e-10 3.899675537e-13 1.902815033 1173590.518 0 0 0 1.525943488e-13 469195.8649 3.999055708 1.527471758e-13 0 0.0003151470608 0.0005191372413 0 0 0 0 0 0 0 0 0.0004100136136 0 0 0 1764.005233 93738.01085 3.529796287e-09 0.1057018724 4.218806112e-08 0.01711486123 26787.16796 1.965862181e-11 0 0 0 2.4751291e-16 182893.2858 0 77814.67657 2169092.097 341056.6481 1.925797042e-18 9.606302534e-15 0 0 218273.8951 0 2.015186822e-25 0 2.656660409e-09 2.379637098e-28 0 1.613223331e-10 4.29110834e-20 2.01599757e-06 1553.544308 0 0 0 306.034452 0 0 5.086433585e-06 0 0 0 0 21.18547969 2.889364497e-20 9.171804225e-14 0 0 5.339258406e-09 0 0 200.1238664 6.123846488e-21 0 1.003757012 0 22831.50392 0 0.000438722499 52043.08197 0.05611532023 90.91242261 0 0 0 2.285729913e-13 0 0 2.315770746e-05 0 0 0.434448773 4.806892321e-07 0.001173685264 0 2.147847493e-13 12556.91378 4.689351808e-10 4.018826256e-17 0 5.539856207e-11 6.075167297e-11 0 0 0 0 0.1116130878 10698.17245 0.02326280525 7.244344017e-05 7.731714765e-15 1.383608925e-13 0 7.588318166e-11 0 0 0 0 0 0.0001128790757 1.137200556e-05 4.882422584 0 2.77645768e-11 1.131087721e-10 0.03704598447 0 0 9.446003247e-14 0 0.002427990078 0 0 1.658458082e-10 5.799925381e-14 0 0 0 0 0 615519.2556 0 0.0006847772838 0 4.431389162e-12 0.1906636947 1.09830795e-13 0 0 0 0.006946011841 2.168188659e-06 0 6.008563246e-24 0 0 0 0 168.8948608 0 0 0 0 0 0 1.993081401e-11 2.464406275e-13 0 0 0 3.078034075e-05 0.2472092585 2.141650657e-17 0 0 0 0 2.422310466e-07 0 8.651851989e-10 0 4573.934975 0 0 4.099702569e-14 2.828330622e-09 0 0 0 0 0 9.698773248e-15 0 2.093273963e-08 8.165356367e-09 0 0 0 0 0 0.3518705525 0 0 0.000213783786 4.458148518e-11 0 0 0 0 0 0 1.807181641e-14 0 0.0206072905 0 0 3.980725547e-06 0 1.319903617e-08 0 3.022075853e-16 0 +0 2.386792628 0 0 0 0 12929.12438 0 0 0 0.1849864879 0 0 0 183.22612 3325561.941 0 284401.2559 2.136101536e-09 1.405617448e-12 0 0 0 2.019022493e-11 0 0 2647.92807 0 0 0 59.96553331 0 0 0 0 0 0 0 1.199949746e-07 0 0 0 0 0 1741781.154 1864.244372 0 0 1622.355287 0 0 489002.5876 0 2.361107259e-07 0 0 1.222104753e-08 0 304539.9546 0 1.201076005e-06 0 213286.9184 0 2.156543099 2.030676583e-06 5.481055224e-05 0 0 0 0 0 0 0 0 0 3.320927767e-16 0 5.502697912e-05 2.19371362e-15 3501.166326 0 0 1.064346569e-10 0 0 36720.50017 1152.296411 1413.405732 1.174620552 0 3.122074403e-08 0 0 0 1.65232845e-07 4.40500157e-13 1.227255467e-32 0 814581.1667 2.659478657e-15 2.384569518e-29 15500.97778 1.771465436e-15 0 570301.6278 0.8467222419 0 4.018595452e-13 0.2075674891 0.1518735466 154.4352412 482266.4723 0 0 1.88062637e-10 0 0.004429083865 0 0 0.002520817888 0 573494.3951 0 5.954626046e-15 0.0001976309145 1.752542471e-13 0 0 7.301188428e-09 0 0.001680727545 0 0 8.214797562e-12 1.160085367e-07 0.002366557833 2.418344421e-07 1.12359521 6.970820655e-13 0.0001136691091 0 0 0 2.935829182e-10 0 5147.939408 0 0 0 2.140264456e-05 0 0 3.923584525e-10 0 0.0001418723282 0 2.73521061 1059775.764 0 2.583993653e-15 3.808155221e-06 0 0 0 0 9.555220682e-08 0 0.00349493161 186.8985887 0 0 4.738763259 5.846936773e-05 0 0 0 0.2699493013 1.514659555e-07 0 14.07827828 0.06622249318 0 88319.05392 4.77859485e-12 0.0007912793285 2.817422199e-13 0.0003726953191 0 0 135886.0407 8.097745049e-18 5.514339262e-08 0 0 0 0 0 0 3.328717704e-23 0 4.126810828 1.84620293e-08 0.0006406054594 0.007707964215 350588.2265 0 3.016762023e-21 7.476486655e-06 0 0.002753638476 0.03676718432 134332.9862 41.8658256 8.62860516e-20 0 0 0 0 0 0 0 0 0 4.013149827e-09 0 0 0 0 0 0 0 0 0 0 0.002895459966 0 0 0 0 6.431742721e-14 0 0 0 0 0 0 1403.266595 0 4.155441274e-10 1.689631672e-10 0.003575063967 0 0 0 0 0 0 0 0 0 0 0 7.803693354e-18 0.0003010942499 112252.5827 19065.35404 1.081403973e-24 0 0 0 0 0 5.666084317e-13 2.513351027e-15 0 0 0 3.774508408e-17 3.24744947e-20 0 0 0 0 4.022834938e-29 0 22075.27443 5.800639114e-07 0 0 0 4.681139797e-06 0 1.355052331e-27 0 0 8085.629681 1.058668612e-14 4.991485033e-11 4.903010444e-11 +9.805201932e-13 0 0 0 0 0 0 0 0.0004696840062 0 0 1.190068591e-16 0 0 0.04660562527 0 0 1.043373428e-06 0 0 0 68.21852064 1.048050073e-12 51053.59167 5.264868026e-17 0.0003264664924 2.044529847e-14 0 54432.26381 0 0 1.748392039e-11 0 3.329476734e-09 0 0 0 0 0.004427186928 3.015240648e-11 2998109.09 0 8.053637178e-19 24.18349498 0 0 0 0 0 0 16364.45325 1285607.559 0 1.115703042e-06 4.064558058e-05 0 0 0 0 479381.4305 2.153951168e-22 0.2712833194 0.06500339606 0 3.868722645e-27 0.0007110808079 99862.09475 0 0 1.578837585e-06 0 0 0 0 2.736431448e-19 0 0 0 9011.019228 0 0 0 2.685596647e-13 0 0 484.5958303 834706.1465 0 0 0.2237109193 0 4.738421597e-13 0 0 0 0.0003226883617 0 0 0 1.433993145e-12 4.198829884e-14 0 0 0 9.546767095e-07 1.649282238e-12 3.262550873e-13 6.596681255e-06 0 0 0 0 0 0 0 2.647856492e-12 0 18825.56102 0 0 2.454484559e-17 0 2.189012631e-19 3.869139714e-14 2.331910513e-10 0 6.391654299 0 1.799963271e-06 0 0 0 0 0.0004374663099 0 0.0001250638529 1.138842263e-07 231723.7352 0 1959559.071 0.008262199801 1.665954823e-06 0 0 0.008350431322 7.302634635e-11 3.562306928e-12 0 2.514829083e-27 0 0.000224886101 0 0 1.492038821e-05 0.1810365256 0 0 0.1261386703 0 5.400294512e-19 2.022969591e-08 0 4.166515401e-11 0.2063049197 16.76261007 0 366791.6914 5.318373734e-12 3.694461919 9.279482815e-09 0 0 0 0 492438.0142 9.734282285e-14 0 0 0.3816368732 0 0 1082.659568 0 9.462156352e-26 0 6.073838938e-14 0 0 0.0133131938 4.431897871e-15 286.5225533 2.674138548e-10 1.584578651e-13 0.6643185519 1.601211416e-33 0 2.273869612e-05 5.70366916e-25 0 0 0 0 0 0.001181752299 0 0 0 5.829881837 0 0 0 0 0 1.637766698e-06 0 1276106.366 2.972873042e-21 0 6.93937488 0 0 1.318791464 0 0 7829.696418 0 0 131.9102723 4.85594959e-09 1.464954481e-09 0 1.55261295e-18 0 0 59045.3575 0.30544696 0 0 0 2.939656346e-15 6.632577211e-13 0 0 0 3.396749124 9.450476284e-10 0 0.000344632518 32.3179639 0 0 54777.41556 0 0 0 0 0 0 0 1.329816527e-05 6.887613955e-15 0 5.948068097e-07 0 0 9.27955432e-07 0 1750768.107 1.353117827e-28 0 0 825735.8316 4.125548009e-11 0 0 0 0 0 332.2551565 0 0 0 0 0 3.158854043e-07 0 12.98503121 106253.137 0 0 0 0 0.0002339001891 1.152060608e-06 0 0.4957130775 0 0 0 0 +0 0 0 0 0 272.2827573 0 0 0 0 0 0 0 0 0 0 7.211741472e-11 0 0 0 0 0 0 0 0 12383.47832 0 0 0 9.966021003e-18 0 522.4262687 0 0 0 0 0 0 0 0 0 0 2.68034495e-13 0 0.045075766 8.288949554e-13 0 0 0 4.925226993e-09 0 0 0 2.236109839e-13 2.218546161e-06 0 6.268477668e-28 5.781386526e-10 0.4564785757 0 1.556083906e-07 6.133062736e-25 4.130660051e-09 1.324438005e-06 75.30044495 0 3.065927206e-05 0 0 0 0 0.3617848654 22686.51011 208109.773 5867.414559 761.0731119 1.556054402e-10 0 4.891521281e-05 29.39205837 0 0.0001056921455 0 0 0 2.308822363e-05 1.873538196e-10 1.089267201e-12 20612.44376 1.310066109e-09 0 4.57389044e-08 0 0 0 0 4.445374932e-06 3647.93544 0 0 0 0.0001908798625 0 1.271986937e-06 0 0 0 0 0 0.005244236386 5.600781762e-06 3265.718213 655888.0345 0.00646694735 0 206.5158434 0.0830663746 0 163.6491031 2.143687287e-06 10151.07463 0 1.08308336e-12 4.25961691e-10 7.672780065e-16 0 0 5.532596381e-13 1.117018756e-05 0 2287.052056 3.58740046e-14 3.134959225e-13 0.0003104514752 4.873385717e-05 0.001164670417 0 8.210038485e-18 0 9.555379817e-10 35.8285599 0 1474035.497 0 0 2.014573165e-13 4.858142073e-06 0 0 7.328902914e-16 0 0 0 103739.2065 0 0 113109.172 1.029565577e-25 1.47378805e-05 4888.395618 3.860705429e-11 7.358099784e-13 0 0 2.144160415e-08 175927.4881 0 0 0 0 0 0 0.001083598616 0 177294.9889 2.165534464 3.135412804e-07 0 346.177859 77.17537187 1.592365652e-07 20.04654207 4.510656247e-14 101915.3648 0 0 0 0 2.888677299e-13 0 0 2.689081451 0 0.01298195514 0 0 0 0 0.0004384366101 0 0 6.393584321 0 6.880336743e-14 0 0.7154170867 0 0 0 8.725511879e-08 12934.62784 0 19930.70093 3.52570318e-11 32.36212515 0 3.286212317e-06 0 0 113647.6343 0 0.0001024049102 0 0 1.936676691e-05 0 1.141800275e-10 3.017447899e-12 0 0 0 0 0 0.0001270659226 0 0 0 0 292.0781952 0 0 0.05332615587 0 0 0 0 8.402097553e-11 0 0 0 0 0 0 0 38788.40671 0 0 0.1448111359 0 0 0 1.015292128e-22 0 0.05544587819 0.002907949741 0 0 0 0 0 0 0 0 1.812857574e-05 0 0 0 0 8.965368488e-06 0.9422356639 0 0 0 0 0 0 3.002852961e-09 0 0.1418835827 0 115981.486 1.304983616e-05 3.045557393e-07 0 0 0 5.890308915e-05 0 0 0.02172722372 +5.387475793e-23 0 0 0 0 0 0 3366.648567 0 0 5.502571058e-12 0 0 0 2.096374895e-15 0 0 0 136411.6392 0 0 0.3478653533 5.14200062e-08 0 0 0 0 0 365388.762 0.8333953148 0 0 0 0 1.869381249e-10 1.417161919e-06 0 480.7763252 0 0 0 3.64848661e-14 2.052926473e-12 0 0 17.93350327 0 0 8.664148964e-14 0 0 0 0 0 0 4727.572792 0 6.698801287 0 0 0 1.997531719e-33 0.0002488170072 0 0 0 106254.5883 1.132633355e-07 9840.482434 0 0 0 0 1.054262348e-22 0 0 0 0 0 0 0 0 0 4.393121105e-14 957028.4378 0 0.1394374851 0.0003604918465 1.230021551e-09 0 0 1.101761646e-15 1.429875684 0 5.908110278e-16 20233.29881 0 0 2.05987525e-05 0.2582990514 5923.838179 0 0 5.666055734e-15 0 0.1311622801 0 0 0 6.999818564e-14 2.726560213e-08 0 0 0 0 0 0 5.424439019e-14 0 11878.29611 0 0 1.415778163e-10 0 0 0 1.124661848e-08 0 0 0 0.5270279998 9.617159027e-10 0 0 0 1.311809534 0 0 1575176.618 0 0 0 0 4.081140836e-08 0 0 0 0 0.1786683569 0.8842410709 1.252533972 1827650.002 0 0 0 0 320287.1506 0 4.858045953e-11 1.500492757e-14 0 0 6.312274699e-17 4.166039199e-15 0 0 362.5906971 33.95345582 1.441925065e-13 0 0 0 0 3.579853865e-05 136933.0331 0 1.922023424e-24 0 0 3.023502693e-06 28412.66026 0 2.927217249e-09 7.89359057e-08 5.796090328e-08 0.02983588987 8.408592404e-08 4.395581483e-05 0 0 0 0 1.98686833e-06 0 0 1.428856639e-08 0 0 0 0 0 0 0 19.74364842 668627.2404 0 0 0.1213679819 0.0003950502569 300833.364 0.0220779066 0 0 554955.7647 1.064191283e-05 0 0 0 0 0 0 0 0 0 2.719573853e-07 0 960642.9146 0 0 0 3.281844653e-05 31500.63476 0 0 6.971970928e-14 7.454860483e-05 0 0 0 0 0 0 0 1733.454869 1.718977604e-12 0 0 0 0 0 0 0 0 0 2.262338681e-06 0 2123.728747 0 2.700780538e-16 0 0 0 0 0 1.271938257e-14 0 0 3.744597466e-21 487766.1307 0 0 2.191195961 9.598738147e-16 5.728491029e-09 0 0 0 0 0 0 0 8.676736848e-32 1.396257865e-05 1435.071915 0 0 0 2.438766113e-26 1.197001725e-16 3.756161235e-12 0 0 1.180508573e-21 0 6.589165629e-14 0 0 3.794132737e-28 0 1.355862938e-13 +0.04717819424 0 0.002784530008 0 0 0 0 0 0 0 0 6.146183047e-19 0.0001098586684 0 0 0.01755083842 0 0 0 96.29688487 0 1.218592319e-17 0 0 0 0 1.305152382e-24 0 0 0 2.482863822e-06 0 0 0 0 0 0 0 0 0 10809.87842 0 0 3.221445291e-12 0 417891.1291 0 0 0 3.727204529e-11 4.356025247e-37 133204.077 0 0 0 0 0 0 0 0 0 0 0 0 0 1.242182592e-05 5.741512174e-05 3.697121211e-06 1250.812264 5.279431053e-06 0 0 0 1107526.456 9.312927829e-07 0 3.011295144e-16 4.499409601e-11 0 20.85333111 100.1666056 0 0 0.04350840625 0 1.151183002e-18 6.288105307e-13 0 0 177583.7663 0 74875.47849 3.040372433e-07 0 0 0 3.750408513e-06 0.0002303397511 5.060937076e-12 0 0 0 0.0007238584962 69.71854664 5.724630704e-11 0 0 0 740667.2213 0 0 0 1.042586935e-07 0 6.869197175e-17 1.887308558 1.109854066e-11 0 0 0 490289.0676 3.837712174e-10 0 0 0 1504.975975 0 0 18558.87985 0 0 0 0 0 0 0 52.71102325 0 0 4.191526906e-07 0.001599674528 0 44.77940096 0 0 0 15074.58482 6.78431729e-12 1.224584652 6.191385747e-17 1.343181929e-27 0 2.390220725e-18 0.004805400514 0 0 1722174.48 0 0 5.445339106e-12 0.8325508633 285.6210596 191138.6326 0 0 0 3.266912273e-07 164537.8443 3.174289153e-06 1098542.875 0 0 2.498018715e-26 949236.1388 4.085503875e-10 0 2.147979633e-13 0 0 6.169717762e-11 0 0.4991358578 0.127232304 2.825453783e-14 0 0.0001827242629 79267.78058 6.338122025e-23 8.090433853e-17 0 4.728260447e-12 3.969444381e-10 1869.446035 0 0 842797.8099 2.781481333 0.2875998555 125721.6549 0 0 0 0 389153.0392 0 0 0 1.435987956e-21 0 1.354476131 0 0.002503066337 264.1274439 0 0 5.172967152e-15 126501.4812 0 0 0 0 0 0 0 0 0.3962559646 0 2.385224597e-06 0 0 2.538986899e-13 72.36516648 0 0 0 0 0 253995.5829 0 0 0 0 0 0.003805577578 0.001635899012 0 0 4.190939641e-23 0 0 8.988572466e-18 0 0 0 0 2.497702493e-07 56.90296689 0 0 0 0 0 0 0 0 0 0 0 0 0.1477249973 0 0 0 0 1.08432771 93.18473991 0.001199474642 0 0 2.512018861e-13 0 5854.950536 0 0 9.941876826e-07 1.963793872 0 0 0 0 1.864790939e-10 39.04339197 0 0 4.221358751e-13 0 0 0 0 0 +1.934153118e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10233.94485 0 0 0 0 0.6680113844 9.305336554e-07 134098.6907 0 0 0 0 0 0 0 0 3.172754457e-14 0 0 0 101.0564477 361.7852796 1.051424312e-06 25696.05435 5.182095159e-16 7.652359172e-10 0 8.990829026e-14 0 0 1.535765227 6.763848031 0 0 0 0 0 0 0 0.00454653384 0 0 0 0 1.42944993e-09 6184.356904 0.6166589216 0 0 0 7.537738512e-16 0 0.0001908215313 0 0 0 5.437288794e-08 2.181313564e-11 1.384914363 0 0 0 0.002701082395 4.98317625e-09 0 0.004598944089 0 4.517579674e-07 0 0 10513.07143 3.598366109e-09 415428.4266 0 212.0609956 5.715511979e-07 0 6514.980552 0 370988.3993 4.223990677e-11 9534.179927 0 0 0 1.333258805e-10 0 410881.0776 108874.8713 0 0 0 33373.71423 0 164912.6408 0.05929117709 0 0 13.86048942 88.55258851 0 0 1.174157302e-10 1.516953465e-05 0 0 9.542734532e-05 34509.34753 0 2447.444228 0 0.3735309346 6.936082243e-11 0.0001639277731 6.025513657e-12 189.060329 0 0 6.477260634e-15 0 0 46.17847073 0.00841416527 2.419491813e-19 9.154198134e-23 0 35719.95794 0 0 4.418769758e-12 6.38905327e-08 7.493376196e-15 0 0 0 0 34678.77257 1.194046903e-14 0 1.304305268e-12 8.629870227e-08 6.825950161e-08 0 0 5.863413108e-05 0 0 2.929202525e-10 0.3072857818 0 0 0 50581.5233 0 8.58981686e-14 0 3.914609804e-06 0 0 0 63.33971915 0 0.0007119683428 0 0 7.353836106e-07 0 0 0 0 0 4.689389495e-23 0 68.03027113 0 7.335231436e-08 0 0 0 2.119249872e-15 2972.707824 0 0 0 0 0 0 1.485675529e-09 0 0 4.661702212e-05 0 0 1.77902092e-12 0 0 0 0 0 0 1.362472e-13 0 0 0 1248.283348 0 0 799.8271253 0 424.9028505 0 0 0 5.804429443e-08 665.8358761 1.021770277e-08 0 7.684045879e-12 5.249480774e-05 425.4038654 1206.53435 0 2.755135919e-18 5.437329487e-17 0 0 0 0 3.205122321e-10 6.075498732e-17 2.802615034e-14 0 0 0.8891402103 0 1.425552813e-09 0 5.347425808e-15 0 0 0 0 2.375244027e-05 0 0 7182.801554 0 0 15.13595371 0 1.036485379e-05 2.364664084e-15 4166590.803 7.870592154e-14 0 0 0 0 0 0.5317182068 0 2.07304432e-06 48.9671664 0 0 0 0 0 0 1.441962045e-05 0 0 0 0 2160.626515 0 0 0 0 0 0 16.37535358 5.555716903e-18 0 0 +0 0 0 0 0 0 0 5.624818958e-10 0 0 0 0 0 0 0 0 0 0 5.484067727e-25 0 0 0 2.762741191e-14 0 5.749693628e-14 0 0 0 0 0 0 0 0.1338312902 0 2888.325522 0 0 0 0 0 0 0 1.247612464e-07 3.080106723e-07 0.001059540675 2.092148538e-09 0 0 0 1.346797384e-17 0 0 0 0.101636861 0 0 0.9297023072 0 0 813428.4513 0 3.487987441e-15 0 0 0 0 59.91488008 5.331628497e-08 0 0 0 0 0.003532002355 0 4.262721711e-16 0 164169.3615 0 0 0 0 0 2.633850306e-06 213772.7124 0 0 0 2058011.206 0 979361.7698 0 442.170225 0 0 0 6.661802023e-21 0 6.673044244e-05 3.767791127e-24 0 0 0 0 1.422639004e-08 0 0 0 2.309269628e-17 117440.3624 0 0.3460923062 0 565.76215 28985.91443 6.998178235e-07 2.891148207 234677.0527 0 1.324066901e-07 483602.5924 0 0 50806.91254 0.06342490198 0 1.032368054e-08 0 97245.35796 4.672442025e-24 0 27710.38098 0 0 0 5.101871268e-18 8.570998802 1.354333055 0 0 1.156749261e-10 1.678773959e-13 5.706719623e-23 7.662107124e-07 9872.718371 0 579.9782073 3.912337124e-10 0 0 0 113.4379903 3.023589288e-17 3.921957867e-12 0 883.4503649 2520.233913 0 0.001042566624 0 4.737662188e-05 1.935024499e-11 0 0 0 1.013911753e-10 0 2307.503512 0 6946.642262 0.00037220948 0 5.302871328e-10 0 1.910785681e-10 0 1.547595177e-08 29.49467084 3.062672624 1.418939634e-23 0 0 1158.559764 0 0 0 1.343020677e-12 0 1.110783366e-20 6.051797101e-11 0 0 0 1.634567192e-10 0 1.234358077e-19 0 0.2740238818 110.3596427 0 257985.7656 0 0 0.0005550236835 0 0 0 0 0 0.007461548678 0 0 0 0 2.347615698e-06 0 0.02334542953 4.719137359 0 5.514775582e-13 2.2775156e-09 1.762316387e-22 0 0 0 0 0 0 1.242564426e-10 0 0 0 0 0 0 0 8.393107129e-08 0 0 0 0 0 0 2.530510841e-09 0 0 170340.7041 0.544215751 0 0 0 14762.33278 0 0 0 0 0 2.093090959e-08 0 0 0.1458098249 0 0 0 0 0 0 0 32858453.81 0 0 0 0 0 0 0 0 1.663838076e-18 0 0 0 0 7255.611608 0 0 0 0 0 0 1.522344124e-24 0 9.283490489e-20 0 0 0 0 0 0 0 2.392406142e-07 0 +0 3.702080615e-08 0 0 0 0 0 0 2.730213725 23610.19794 0.6840911376 0 0 0 0 0 0 0 0 1.253730802e-06 0 249922.5536 0 2.89785322e-05 1447.578443 0 2.27266353e-08 0 0 0 0.05210857444 0 0 1.60430192e-33 1.627554413e-15 0 0 0 15328.56395 0 3.861991372e-06 6.695682907e-17 0 0 0 1.337654926e-09 0 0 0 0 0 0 0 0 2.329864721e-15 0 0.0002856960328 0 0 0 0 0 0 6.999759454e-06 0 6.064901178e-11 0 0 0 0 0 4.633623458e-08 0 0 2.261617252e-10 23218.55646 4.07427231e-08 0 0.000417601216 910.5006972 1.543861372e-11 0 1.969461624e-21 277.2265452 0 0 13625.7775 0 0 0 3.901611652e-10 0 0 1.028053259e-13 0 0 9.41255151e-17 0 0 0 0 0.001480291892 17294.18447 0.002147203336 0 0.06035759136 0 0 0.03725147419 0 0 0 139.3146418 108.6300026 0.3157962277 0 0 25591.67954 1.165860773e-10 0 0 13.91470284 0 2.683393069e-07 0 6.632628968e-08 0.01565790815 0 0 9.700609642e-14 0.001886309353 3.117355074e-21 0.0007779697154 0 3.21803449e-20 0 0 5.098532385e-10 0.0007605011938 0 0 5.183533744e-08 228033.9236 0 0 1.550601878e-09 0.001323401541 2.626521075e-05 6.583319876e-15 0 1.916648581 0 0.303644654 71.1225362 0 0 0 0 4.512308363e-15 1.659015715e-05 1.374536849e-13 1.74368748e-12 0 0 16299.27974 0.003457371916 0 0 1.027582733e-09 5342.65515 0 0 2704431.326 7.763368555e-11 0 21007.38754 264348.5271 459.8129123 6.229424404 1712.869649 2.438150927e-10 0 1.144653309 0 1.472098725e-18 6.007920811e-09 0 4.679768751e-09 0 1.895212365e-12 0 0 1.634141953e-27 2415.593037 0 0 8.794564303e-16 0 1.036083316e-11 0 2.246436777e-05 9.010845126e-15 75.37981699 1.75692823e-30 2.3969038e-08 0 1.658591282e-09 0 0 9.35058381e-15 0 0 2.811289403e-07 1.177471198e-20 0 8.093259921e-09 1.590421735e-13 0.09690789456 0 0 4.868413796e-12 10.93804711 0.06788261767 3.625973565e-20 0 0.1702362757 0 0 1.773514403e-33 3.324892804e-19 7.90432365e-06 10.27825298 0.827532484 1325775.948 5.830703792e-22 0 0 0 0 0 0 360.0833443 0 0 879971.2354 0 0 0 28482.63381 6.645936984e-10 0 3.066837171e-10 239320.099 5.872104869e-13 0.009698921695 0 0 0 0 0 0 0 0 0 0 0 0 6.274543364e-16 6.458938333e-05 8.72104382e-18 0 0 1.602620948e-09 0 0 1.130708388e-15 0 3.854135206e-10 0 0 3.293855409 1.011127564e-19 0.0004250986494 7.685720891e-10 0 0 0 0 0 0 20370.09065 0 2.271850659e-10 7.502977623e-15 0 0 0 0 2.127346833e-08 0 +0 34.64277972 0 0 0.07528628504 0 0 7.479314971e-12 2.327757859e-08 0 4.795761026e-16 0.0008431020081 0 591.8975014 0 0 0 0 0 0 155921.0566 0 0 14994.86096 3.381138348e-11 0 0.001127870754 5.016465926e-20 0.001604775309 0 0 3.373360066e-15 3.648557526e-06 0 0 25879.54507 0.1133320165 1.771414021e-06 0 0 0 0 0 0 0 0 0 0 1.524246114e-06 2.006154146e-08 1050.531082 736188.2822 0 0.530736565 0 0 2.30141857e-18 0 586969.008 0 0.2271119807 0 0 0 0 0 0 8.175308486e-14 0 9545.204958 0 0 4.238849183e-22 0.05264899801 0 0 0 129528.9282 3.187195957e-06 2.223938192e-10 0 4.349403664e-11 1.716400838e-05 4.028349406e-09 3.521811576e-05 0.001100201337 0 0 5.679511477e-10 0.1214413082 0 36.43631165 0.1554396375 0 943.963948 0 6.541245598e-05 4.845158534e-14 0 5.62754929e-19 0 0 0 0 2.696637195e-05 35431.97423 14282.71937 0 7.478664923e-15 0 1094.691938 0 17.87141148 0 0 0 0 203067.6348 7.940326327e-10 0 0 0.6174831869 5.105637146e-11 0 0 6846.307835 1347161.487 0.003610854381 38750.48921 0 0 0 1415.902904 0.0007415416094 2.837363188e-11 8.097524525e-05 9.132352511e-17 1.125715992e-24 1.148395688e-06 6.675993569e-15 288258.7443 0 65141.78368 0 0 223.5169416 0 239.0451379 2.094600248e-08 0.0001525103956 1.153682377e-07 0.0007249138395 9.118619251e-16 0 0 5435.927312 0 0 10.09124938 0 2.092480941e-13 0 5.986433971e-18 0 0 0 0 0 0 0 3.273335159e-20 0 0 3.225388552e-21 0 0 2.579565293e-08 0 4.100824392e-07 0 0 159132.8016 0 0 0 0 0 1.700346706e-06 0 2792295.669 0 0 0 0 0 124239.1641 0 0 0 4779.488993 0 0 0.002164181475 1.240601486e-07 0 1266.649203 0 0 1.864160996e-13 0 0 0 0 0 0 3404.811038 0 1.761145917e-09 621.5294508 9963.205657 0 0 13233.91333 20.40492295 0 0 0.02832466626 0 0 0 0 0 0 105.572185 0.01329552582 0 0 1.037848986e-29 0 0 0 0 1.055268154e-18 0 0 0 775851.7172 0 0 168401.1464 1.152815288e-12 0 0.01325225915 0 0 0 0 0 428.2739696 0 0 6.361548648e-18 0 0 978.0426604 0.002952131018 14792.4835 0 0 0 0 0 0 0 0 0 0 0 23.49503109 0 0 39310.73712 0 0 15847.73807 0 0 0 2.851222109e-12 0 0 1.181372623e-14 0 0 0 0.1853672689 0 0 0 0 +0 0 7.920378151e-12 0 0 0 0 2.428640752e-11 0 0 0 0 0 1.821595066e-09 0 0 0 1.714464057e-15 0 0 0 1161577.342 3.463823273 3.459637024e-09 0 0 0 0 0 0 0 0 0 0 0 0 1.86404414e-08 3.212933321e-26 0 7392.607311 0 0 0.1568686722 0 0 2.760055061e-17 0 0 0 118.4175793 9.011131328e-07 0 0 1.279717322e-08 0 0 0 0 63129.999 0 0 0 6.424252221e-07 0 0 0 0 0 0.0001650432176 0 7.471833456e-05 0 0 7.552002809e-13 0 3.543145158e-10 2.813067761e-19 8.837254509e-05 0 0 0 0 0 190.6764351 2.467074554e-11 1.724023262e-05 0 0 10.03869862 0 0 0 7.054556724e-18 0 1.355067593e-06 0 93.29872607 0 0 1246755.835 0 1.046398629e-11 5406.082134 0 2.185154503e-08 75462.066 0.003279675515 0 2.955582477e-21 0 0 3.638139468e-07 0 0 0 0 0 0 0 0.3124802346 0 0 4.804619047e-13 0 0 0 0 134.3065239 21118.31174 69.1895311 2.66249655e-08 9.021499305e-12 0 2863.190644 1.481870145e-13 0 1.71161534e-20 2.969121515e-18 0 0 3408793.463 0 5.489778385 0 1.691525866e-09 6.204535722e-10 0 0 3.533238791e-31 3.178328536e-13 5.590637126e-24 43954.57214 1.003879893e-12 0 0 0 0.001094641584 2.537419901e-05 0 0 0 116492.0834 329556.9984 0 2.161988898 0 0 0 7.925821966e-12 3.508435986e-18 5243.502584 37097.40909 0 248.2249158 1.385951685e-20 0.02791962999 1435560.014 0 10958.8142 0 0 49484.81165 208227.7223 0 0 0 129.4580713 15827.12443 0.007848501829 0 2.920683981e-18 0 3.298905612e-14 0 0 0 0.0153484662 49531.06562 107900.7646 0.0006346641686 0 0 0 0 1.454087229e-17 0 0 0 0 20063.58798 0 3.814812514e-09 0 4.771258595e-12 0 1.695559044e-08 4.917005105 9.038165632e-23 0 0.001338747562 5.081162479e-09 5.130096138e-07 0 0 0 2.9062336 0 1.711873416e-10 0 0 0 0 0 0.006660033346 0 0 0 4.446653389e-11 14657.95203 0 0 9.152269925e-16 0 0 0 1.791960125e-09 426475.9646 0.03847674939 0 2.095896698e-09 0 0 0 1.874216692e-10 0 160.3788099 2.272864675e-13 2.118765475e-12 0 1803486.332 0 0 0.2095411986 0 0 0 0 0 1855.770594 469282.6645 0 0 0 0 0.01163465469 0 0 0 0 0 0 5.913247161 7.705667256e-15 1881.434955 1.533955224e-16 1.092790544e-05 1.955615558e-18 4.06121225e-13 0 0 0 0 0 0 0 0 0 0 7.649343219 0 +0 69463.51272 8.57491516e-17 3.728112768e-15 0 0 0 0 0.001368481974 2020.804897 0 0 0 0 888582.2228 0 6350.294406 6.031133372e-14 0 0 0 0 1.516366123e-13 1.443473758e-06 1.422395448e-10 0 0 4.743060202e-09 0 0 43.10033703 0 0 0 0 3.473578618e-05 4.734194387e-12 0 0 3.218789628e-12 1.823975828e-15 0 3.739291464e-18 4061879.642 0 0 0 0.08446059466 0 2.582048143e-40 0 0 0 0 3.391608718e-15 0 5.057976167e-05 0 1.409731854e-06 0 0 5684.295288 5.357448954e-10 0 0 0 0 2.013782762e-10 0 604.6401942 0 1.48043929e-09 0.2248633254 0 1.888717991e-11 16.72668634 0 0 0 0 0 0 0 0 1.728577532e-07 0 0 174.0501668 1.031050633e-09 0 0.002641712534 7666.369663 2.192831167 3141.657898 0 0 8773.241727 0 0 0.06980912391 78.13080039 0 0 8.020373651e-05 0 2.401669817e-08 1.747337833e-24 11.5949596 0 0 5.556830442e-22 0 205835.2411 4.227124012e-10 237.2087221 0 0 0 3.326090912e-05 0 0.4642384473 9.413331005e-27 0.2896428102 0 4.427680214e-13 0.005585345889 0 178534.6931 4230757.976 0.0003956113091 0 0 1.984640631e-17 0 0 1.886326714e-22 0 3.656251219e-15 0 1.253395125e-13 0 0 0 1.774080228e-11 489787.3295 0.1839881074 4.727729884e-17 0 0 0 0.4175697565 0 584.1209847 3.093830922e-05 337600.9969 508382.036 0 0 0 0 0 0.0007936871743 6.338993227e-16 1.153712325e-06 0 0 62115.68469 0 7.893944649e-07 0 374388.5248 0 0 179581.4876 0 0.4054625153 1.158350881e-11 21.22603534 1239.410052 0 0 0.0001355832009 0 3.531464972e-14 1.405352229e-13 1.485748548e-09 0 2.393433343e-13 1.393625753e-16 1.607985727e-07 39.89664523 0 8.99121752e-13 1.992122489e-24 1.676626966e-05 0 1.429300033e-13 0 0 2.113855988e-09 301029.6308 4272.94105 1.913557913e-08 0.05323831338 0 0.07141371537 0 0 0 22318.33114 1.547169146e-11 0 0 6.403586063e-16 0 0 0.02815330544 1.485044525e-07 0 0 0 0 0 0 0 3420.346605 0 0 9.407193132e-11 0 3294613.104 0.2513986573 3155.052865 0 100596.9656 0 0 0 0 0 0 0 225913.8402 0 0 2.813871958e-18 0 0 3.165559811e-19 0 9.215324664e-15 0 0 0 0 2.842530672e-14 0 0 0.01051545132 0 0.3439409697 0 0 0 0 0 4.16198568e-11 0 2.223352443e-23 0 3810439.403 4.000688921e-11 2.1396965e-06 0 0 0 5380.390986 0 0 0 1.723138962e-24 0.05135854836 0 0 0.023758957 0 0 0 1290766.477 0 0 0 2.169009064e-14 0 1.912905838e-10 0 0 0 0 0.07721458439 +0 0 0 28.9246693 0 1.397870268e-06 0 1.471037586e-27 537686.966 2.743152359e-09 0 196630.6814 0.1721416655 0 0 0 7.238858117e-05 0 0 6.835337497e-13 0 0 0 0 0 0 0 0 0 0 1835956.414 4.302907312e-09 4.120448371e-08 676101.7723 0.004224653613 0 0 1156896.572 0 16240.39125 0 7.71558387e-20 616273.8761 90211.97504 0 0 0 0 0 0 0 0 0 0 0 1.86097548 0 0 0 0 0 6.409066352e-09 1.020815394e-10 0 0 0 0 17071.02809 1.573990278e-30 3.313498256e-16 0 0.0001512892509 0 3.383330677e-05 0 0 0 0 0.0002856231026 2.198434302e-06 0 0 0 0 0 3.328096251e-10 147361.1039 0 0 9.864377398e-18 0 2068.924641 5.683439586e-07 0 8.794713946e-14 4.864822211e-08 2991.431764 3.340769329e-15 0.07220461206 0.001789900722 0.827923053 0 5.673493031e-27 0 1.480390188e-23 88.09578773 0 0 0 0.01798710255 0 0 0.011032778 0 0 0.004909827633 0 373699.3529 0 4.249066917e-09 0 0 61.46708476 769843.6269 0 8.541470436e-05 0.003486385966 0 0 0 683.9102793 0 6.229826001e-30 0 1.305270434e-07 4.336810931e-08 4.919414872e-18 1.728815903e-19 0 0 0.006251450713 0 9549.960963 22873.33091 4.357184392e-06 0 0.1296717086 0 0 3.151045692e-08 0.378360219 1.321395889e-12 7036379.544 0 0 6.962031233e-09 7.431743842e-25 0 0 0 0 0 0 6.34099826 0 0 2.075945364e-05 0 0 0 1.77794859e-26 0 0 0 1.955471209e-05 5.030499707e-11 0.000102933108 0 1917.304924 1.373364064e-06 28.3852194 0 0 3.654889453e-08 6.245831487e-09 0 95696.00051 0 563548.0325 0.0002769306254 0 0 0 0 0 0 0 0 0 569754.7911 0 0 0 2.166507449 0.0231019487 0 65.53241985 0 4.625104654e-07 0 4.098382371e-11 0 0 0 0.0001379976581 0 13.77424165 0 3.032382865e-07 0 0 7.750403528e-14 8.572051927e-10 4.916720608 0 0 0 8.207087844e-18 0 0 0 0.01144042001 0 0 1.281704134e-05 0 0 0 0 6169.145015 0 0 0 0 0 0 0 0 265862.5432 0 0 0 0 4.291230777e-05 0.01061213952 0 0 0.005096499322 573377.638 0 0.1629417023 0.001482174112 0 0 2.33135285e-05 0 0 0 0 277.0806713 0 0 0 10286.17512 3.317597335e-13 5.050106262e-27 0 0 46587.41159 0 0 0 0 3.647253492e-23 0 0 0 0.09699670223 0 0 0 0 0 0.008060795274 0 0 0 0 0 0 +1.234847735e-12 0 0 0.0009763246679 0 0 3.939755253e-19 0 0 0 0 0 0 1.545621203e-10 6.486113532e-10 3.787958145e-15 0 1.557410135e-11 0 0 6.044859008e-12 167278.2833 0 1.04644712e-07 0.05910290449 0 0 0.003590925128 8.121417957e-07 0 0 0 0 2.434189843e-18 1.225700062e-07 3.899307372e-12 1.375717442e-22 0 0 2.945134918e-15 1.151829409e-09 0 1.453871025e-07 0 0 1.312326388 0 0 0 0 0 0 0 0.0004452865475 4.473706672e-06 0 4981.077806 0 0.0002259538291 0 29.91470045 68.44466832 3.234988153e-13 0.4214057082 0 0 0 0.00017035987 2.569843428e-13 0 0 0 0 0.0005478272319 0 0 3.773725338e-11 4182.469642 0 1.746630888e-13 0 7.393000926e-12 21.58530749 0 4885.804071 0 0 0 0.05969412734 0 0 0.000274282248 0.000146841077 0 0.0001618463648 1.045726412 0 11.53550208 0 0 0 1038.255451 0.3632800642 9.549925372e-10 0 0 0 0 0.6925411496 5.215449798e-25 0 0 0 0 0 0 0 0 0.5364987282 4.538963371e-13 0 1.056428922e-12 3.777482545 9.32294446e-06 0 4.554574308e-05 0 1.210913018e-24 0 214526.9068 8.811759221e-10 0 0 0 1.220211071e-20 0 0 2.502364385e-13 1.044534557e-05 1.889901881e-06 153.0000737 102123.0711 0 2.071440278e-05 3.418625789e-05 0 0 0 0.01182573663 367.7018203 1.58569226e-18 0 2.147129534e-08 0 0.07020154009 37689.68597 2180.134153 0.4586560392 5053.656802 6.261342742e-10 0 0 0 53.82666954 0 0 1.716610548e-25 0 117.8926517 21.70726701 0 0 8.228134731e-20 5951.058813 11862.22765 6.050477773 1.064713262e-11 0 0.04434640584 2.454735439e-11 1.39092967e-16 3.401352602e-10 1.912320045e-06 3.405551965e-20 4.604398136e-06 18005.91107 0 5.643592441e-09 0 1.572746722 0 9.344231703e-11 0 35716.58237 0 1.674391824e-12 0 4.234935397e-22 8.156933914e-16 0.1484417133 1.709049484e-08 1.180009693e-08 0 1.051437421e-10 0 0 0.002272042724 1.14288135e-28 0 5240.878921 0 0 1718.396958 6.720528652 487.4214355 0 0 0 0.09342307603 3.428679394e-20 8.935255202e-10 0.004548206764 0 0.008354764055 0 0 0 0 2.264018331e-19 0 0 0 1.437120737e-08 0 0 0 4840.072741 0 0 0 0 0 2.018520811e-11 0 0 0 0 0 0 0 7.706887785e-12 0 0 0 0 1.917753891 0 0 0 0 56.79691468 4.069243598e-13 0 0 8.440374936e-16 0 0 0 0 0 0 0 0 1.383563845e-07 0 0.06071080834 2.835958445e-10 0 0 0 0 0 0 0 0 5079.765695 0 0 406256.5731 1.217516966e-11 0 11687.87719 0 0 0 0 0 0 0 60.86687533 +0 0 0 9.153762105e-18 5.01196916e-12 4.071251426e-06 0 0 0 2.689267958e-17 0.006868073804 0 0 0 0 157469.0251 0 0 0 0 0 0 0.03697344723 2.241215945e-17 0 0 0 0 4.018253923e-16 0 0 0 0 0 0 0 0 551.2682152 137246.7933 0 0 0 0 0 0.001787341301 0 2.444308231e-06 0.07856327375 2293545.64 6.38542352e-17 0 0 3.196938304e-21 1.035698748e-12 0 0 3.275636352e-17 0 0 0 0 6.392916006e-22 0 0 1384731.498 0 0.005444602626 4.163142946e-12 0 0 0 0 0 2351.114488 2.075991837e-13 5.761209666e-11 0 0 0 3.972905061e-08 1.232653733e-20 0 7.173707045e-19 279284.9797 0 0 0 0 3.429726282e-08 0 2.870701383e-09 0 0 1.516448002e-12 0 0 2.005722581e-12 4.74252804e-05 0 0 29.67424202 0 0 0.03945251956 0 0 0 0 0 1.826259285e-13 0 7.296207416e-10 0 0 5.360402443e-12 2.512115853e-06 133.5099831 2.707724175e-09 2.054468633e-17 6.778774174e-14 1169.620635 0.02054531346 8145.936729 4.772733819e-09 0 0 7.386548702e-11 0.01578466979 0 4.657486017e-29 0 0.0001112248673 5.987647303e-11 0 0 6068.609338 0 3.033713298e-05 1754151.985 0 14773.07343 0 0 5.066193939e-10 0 102783.5971 0 0 0 0 0 0 0 6.931004233e-07 0 9.056661766e-08 0 0 0 0.00122429644 3.674784402e-19 2.356228178e-13 0 154.6852114 0 0 2.483693796e-11 1.276358935e-08 0 4.745412755 0.002182927028 0 8768.013932 9.768109843 0 0 0 0 0 0 0 0.04520779988 0 0 1.216771357e-12 41981.88971 501712.1317 0 0 7.181485964e-05 0 44835.08904 0 16812.24031 0 28.61939527 0 1.32074932e-12 4.131082518e-14 0.15516588 4.309783106 0 126413.1174 0.0008267461293 0 1.207621527e-05 0.003947327546 0 12823.76402 0 2722954.305 0.07754633255 0 2.263935953e-05 0 0 0 0 9.631712842e-12 0 0 0 0 9.791672327e-09 0.0003899856591 0 4.99367993e-16 0 0 0 0 0.0001041451926 0 0 2.465017322e-07 0 0.0006065940874 0 0 7.486262107e-20 0 0 0 0 0 0 0 0 0 0 0 0 1.000928753e-11 7.284903243e-16 0 105455.3675 37.26310553 3.223017634e-20 466.6951135 8.605496197e-21 0 0 5729838.051 37046.29168 793.6476094 0 3.163472952e-10 0 0 0 2.207194805e-08 0 0 0 8.715427008e-08 0 0 0 0 0 0 0 0 0 0 1.476624131e-18 0 0.1925546187 0 0 0 56234.19288 23.13408192 0 5.075846504e-14 0 0 0 0 0 +0 0 5.948381428e-15 0 0 193481.9909 7.444903278e-25 0 0 0 0 0 0 0 0 0 9.88256361e-10 0 0 4.587748364e-13 0.0001125069343 0 0.0003006686349 3.097422763e-11 0 156.3871738 0 0 0.02792761959 0 0 1.218643505e-19 8390.055368 2.892464452 0 0.02271959629 0 2.815808652e-16 0 0 0 0 0 0 219.259379 0 208990.9606 0 0 0 0 0 0.001040773564 0 6.419131436e-13 0 9.287229198e-15 0 0 0 0 19337.00377 0.01252472128 0.6301639188 0 0 0 0 0 0 0 0 794.5773848 0 6.826156027e-14 0 0 3.100229271e-08 0.00490435861 236.6834523 3.250915338e-05 237975.6153 0 0 7.502521988e-15 7.817822104e-28 2.384591516e-06 0 469610.3139 791359.9422 0 7.606459685e-12 1.326481599e-09 0 8.152646984e-14 0.1279263604 8.601666192e-07 0 0 0 6.296469828e-05 0 0 0 0 0 0.05076841631 2.766925164e-13 158676.1978 0 0.004513714308 7.417916145e-08 3.037453429e-13 0 0 2.107906253e-08 0 0 4.421543825e-05 0 0.0001073928636 0 0 0 0 1.753959662e-10 2362140.14 0 0.6722497414 186276.1752 0 0 0 0 1.424417179e-19 0 2.70767266e-08 0 266599.1488 158.990078 0 0 0 0 0 1.182709861e-09 2.202152795e-11 1.394084699e-06 0 8510.9631 0 0 0 12.28006914 0 0 0 1922.225605 0 0 2.70123315e-12 0 1.742428664e-07 0 0 0 0 0.313611901 0 1.32962231e-12 0.0002629356341 1.46059381e-09 0 0.008923075695 131475.6098 1.591319411e-19 0 0 0 6.3702663e-06 0 1.020570762e-06 5.52680019e-05 0 0 0 0.7991356388 0 2.510882115e-15 0 189272.4195 1.835536979e-14 49066.31005 3.718023875e-10 0 0 0 8.309875135e-06 0 0.5519626516 0 17941.6237 3.830685493e-12 0 0 23725.17766 0 0 121.3962923 1.053197953e-16 3.337801844e-10 0.04375230514 4.654179324e-10 37863.13602 0 0 0 0 1.708665075e-13 2.89489712e-15 0 0 1262.531262 0 0 3.905735552e-12 0 0 1.796793249e-20 67.73589881 0 0 0 0.01382957738 3.958550633e-06 0 0 0 0 0 0 0 0 0 0 0 4.544989278e-14 0 673.6993809 0 0 0 0 0 0 0 0 1.164065734e-09 258249.0347 0 6.956748012e-23 9.710057981e-06 0.05944705449 0 4.814254995e-09 0 0.02049322311 7.063772457 0 6.621096925e-19 1.425570772e-14 2.519770419e-07 0 0 0 1.471225134e-18 0 0 0 0 0 0 0 0 0 0 0 0 0.007728736187 0 4395.267815 0 0 0 0 0 0 0 0 0 +0 0 0 7.067369905e-07 0 0 0 4.201020071e-20 0 0 0 0 0 0 0 0 0 54431.31186 0 0 4.718084034e-11 0.0005175934509 0 1.629797204e-19 1.923950418e-05 0 0 199592.5703 0 0 0 0 0 0 0 0 0 0 0 0 0 203.3160427 0 36.32025983 29.18357333 0 0 2.376624413e-13 0 0 0 0.08049860837 0 1.206801724e-08 2.746540318e-11 3.236832685e-07 1.385267506e-07 0.004857241436 0 0 9758.406659 0 0 0 73234.23854 0 0 22778.10743 56275.61956 0 0 0 0 1539795.7 0 1101052.463 0 0 0 0 0 0 0 915.237676 21080.02295 3.689383283e-07 0 0 0 0 1.878465773e-16 0 4.235263238e-11 0.0003211085953 9.549558877e-13 0.001900750858 0 0 0 0 1.421006296e-12 0 0 0 0 1.10812902e-18 1049271.733 0 0.6536534952 5.323693477e-17 182239.1785 157.0264489 14763.91638 4.397698651e-19 0 1.567215788 0.0005238768279 0 0.05795079759 0 0 0 9.884522039e-08 3786.876724 0 0 0.001535723351 0 8.088193567e-16 293.3758323 0 0 0 0 0.03684180874 3.580729958e-20 2056.953743 0 0 0.0001148040067 46.04793143 0 0.0583355542 0 0 160.2550822 0 3.897543557e-10 45401.17981 1.132084412e-07 0.9002982399 0 0 289.6618079 354.5795155 1.67013321e-06 0 9.632611401e-05 0 0.00276936741 0 0 0 0 1.598636935e-12 0 3.045067283e-29 0 3.044106148 0 0 1.289591772e-07 0 0 0 1.068000679e-12 2.323565718e-10 0 46434.63063 0 60.7936324 1.483685163e-09 96.3010171 1.463487648e-21 0 0.001409169138 139871.0453 0 0 2.029982048e-11 0 0 0 0 5.079363136e-06 0 1.41878997e-25 63.85237389 1.179133101e-11 0 3707832.591 0 0 0 0 0 0 0 0.06817537502 0 4.505072414e-06 0 2.913526007e-11 0 9.356504108e-16 1.119320216e-10 0 2.728563525e-07 0 0 0 1.796709635e-09 57.61860276 9.669140192e-05 0 5.588473983e-11 0.0001936360647 105765.0156 0 0 6.926165327 0 3.88853883e-24 0 0.0002310807308 0 0 0 0 0 9.448977856e-14 0 3.33320122e-17 228.5595659 0 0 3.489495755e-10 0 0 442.5150719 828.1874476 0 1.228755019e-07 5.697081462e-18 0.1667179668 0 0 0 0 0 0 0 0 0 7.255619301e-06 0 0 4.432439187e-06 0.003304328376 0 6729.654602 9.006005481e-15 0 0.0008603512193 0 0 0 0 34.11533537 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001096240845 0 1828.480739 0 1.363529594e-12 0 0 0 +4.054885555e-08 0 327327.7723 7.410955639 119454.7434 0 0 0 0 69.31378924 0 0 0 15186.66126 0 0 6717.274246 0 1.615656128e-11 0 0 1.148537798e-05 0.1279284292 0 0 67772.14097 1.105172814e-10 0 0 5.340481557e-10 0 0 0 10.27964222 23.69684712 0 9.972609439e-14 0 7.421160119e-15 0 0 3841.441671 0 0 1.100984574e-12 737.3491394 0 0 0 0 0 0 0 0 0 0 2.188069554e-12 0 0 5.998631366e-22 1.251754207 1.061594765e-06 1.608747085e-15 2031.503866 2.715392449e-12 0 0 0 0 3.211509993e-09 0.01107481656 0 0 0 0 0 1.174556997e-08 0 3.379871948e-12 0 0.08010081449 0 0 5.576084716e-09 0 8.743054698e-09 6.576195153e-13 0 4.50225267e-09 0 0 2375979.963 0 3.746244997e-10 1.34392621e-11 0 0 0 0 0 0 5.825023152e-16 0 677899.4323 26012.12438 0 1.702344678 0.1639746191 0 2.032597104e-25 7.177392563e-25 1.72950989e-08 0 0 20943.72561 3.064564816 3.783172876e-22 0.03294758823 0 0.0002905709463 1337.042502 1.114614405e-11 0 0 7.546627997e-26 0 27124.58378 0.4298313157 0 2742603.731 0 6.618209864e-13 0 0.0001335907913 0 4.024055543e-11 0 0 17451.95932 0 3.097105807e-14 3.370942832e-26 2.379118702e-21 45.74476646 0 3.076470501e-23 0 0 2.066009797e-10 62.43882767 0 4.597920047e-06 0.0006781235227 8.591861296e-24 15.59078597 0 0 0 0 2.729916403e-11 0 0 2.078230836 3983.862841 953911.828 2.410042809e-12 2015.304028 0 0 0 0.0003533922304 0 0 0.0002294628984 0 0 7.22244429e-07 11.34125214 1.424412811e-08 0.005913165568 3.183806561e-07 1.02767326e-20 5.372045595e-05 0.003760519004 0 0 7.744756211e-09 0 5.746457623e-05 1.464064861e-13 0.7828055897 0 1.487592159e-09 0 0 0 1.935882267e-18 0 0 74140.51322 252357.3176 0.02009428534 0 26.8166797 0 0 0 0 0 7.64912102e-06 0 0 29606.49793 0 0.003132918259 0 0 0 0 0 0 0 0 0 0.4051807443 2204.815842 0 0 0 58388.76633 0 0 0 0 0 0 0 0 1.427813541e-11 0 4.109579694e-13 0 2.058951591e-09 0 0 0 2.192168287e-21 0 128.7501646 3.762656414e-14 0 3.038105565e-11 0 0 0 0 0 0 0 2.622340333e-08 161.172062 0 0 0 0 0 0 8.399767688e-06 4.454875585e-29 0 0 0 1.414853524 0 1581943.573 2.768134997e-18 0 0 0 0 0 0 5.468724447e-13 1.296711368e-08 0 0 0 0 0 0 113855.1522 0 0 0.8221879189 0 4.331277106e-13 0 1.70044504e-05 0.0001948602714 0 +0 0.0003104609451 0 0 0 0 0 2.849842492e-13 0 7.103303972 0 1.395246192e-16 877705.6794 0.9284264054 0 0 0 0 1.459725799e-12 1.343465362e-09 0 0 0 0 0 4.399645498e-20 0 2.802112912e-08 1.069714462e-16 1.015510267e-10 0 6.53535934e-05 2.22958585e-08 0 0 915962.1199 0 1.234564218e-06 0 0.08990328611 1.276449569e-10 0 1.58741403e-14 0 1.687738365e-17 1396075.608 0 7.355010057e-13 0 0 0 0 0 0 3.563108691e-09 8.161769641e-13 0 0 0 0 1.688513385e-06 0.06368910196 0 0 0 0 2.470175634e-07 0 0 918.6160284 0 0 0 65029.16577 481803.6634 0 0 663.8050185 0 2266.642141 0 0.0008263602696 2.53104443e-06 1.372157197e-05 0 0.02640723007 149.855474 418890.3121 5349.476653 1747.080029 0 0 0 91309.16765 3.451787779e-13 0 0.004752480256 4.623248966e-14 3.893369015e-16 8.116759545e-07 2.203755317e-14 4.223098507e-11 0 10.39426046 946.7002439 3.5754262e-07 2.401285895 0 1.155038638e-05 0 0 0 2.708942549e-16 0 0 0.03549199307 12351.82957 0.005725377702 0.0001184322112 0.001282273131 0 9.110019729e-13 0 0 0 0 1594.330959 7677.963887 4276.992383 4.769331814e-17 0.0009446472544 0 9.185981342e-06 0 9.357627932e-07 0 0.01578031914 7.890912954e-23 0.1893600383 0 2.348738828e-06 995626.7707 0 0 6.843491934e-17 0 4198.754888 0 180088.9165 0.0001508580751 0 4.595848054e-08 1.893168913e-08 8.285089628e-10 0.0002378212138 0 17933.07363 0 0 0 0 0 0 2.054674505 1.143963517e-07 0 6.780124957e-08 0.0007396605106 0 0 0 0 29924.46381 0 6.87824419e-16 0 0 15.29565349 6.803704407e-20 6.079407532e-08 8.202442627e-05 9277.070232 0 62.53904411 0 0.001868832475 0 0 1.53397677e-19 16814.54996 0 0 1202.702161 2.80197265e-13 7.808917773e-05 7.494748528e-08 0 2.912512263e-12 7.46485469e-10 0 0 0.0006232282199 2.673118315e-09 17.55455152 6.90675569e-11 0 3.805712546e-22 8.102003629e-10 0 0 0 0 0 3.08889842e-20 0 1.552140246e-22 0 0 0 0 0 0 1.619725838e-09 0 4943.243366 0 0 0 1.500845455e-10 189868.3051 0 9.805411666e-19 0 0 5.88309016e-15 0.032157476 0 4.302951608e-12 0 0 0 0 0 0 0 0 0 0 1.051116572e-13 0 80749.45191 0 0.1388772758 491.8339772 0 0 0 0 7053.518829 3535.941604 0 0 0 2.135612598e-18 2.441904896e-06 0 0 0.05435598059 4.472859558e-13 0 0 0 8.964155567e-15 0 0 0 0 7.316377148e-17 6.271974242e-08 2.039297308e-11 0 0 0 0 0 44806.53987 0 0 0 0 0 0 0 0 0 0 50955.45662 0 0 0 +0 0 0 2.398323999e-09 0 0 0.00184569962 0 0 0 42839.26501 0 0 0 0 0 0 1.118259374e-07 0 0 0 0 0 0 4.393549217 0 9.763138015e-16 0 569.1692797 444.2790103 0 107.945153 0 0 0 0 0 0 0 5.885986003e-26 0 0 2.206054978e-15 1.561264248e-09 0 1227061.37 1.845277519 0 1.38801698e-11 0.001497461475 0.002728158701 0 0 0 4.803354726e-17 8.887471177e-15 2.337191423e-08 0 2840736.925 1.24678073e-12 0 3174377.139 0.00840802926 0 0 0 4.131505265e-22 3.545652544e-10 0 0 1.101907635e-08 0 0 0 0 0 4.650860387e-18 0 0 0 0 0 1.131774336e-07 0 0 1.022993015e-07 1.180672154e-19 0 0 6.047101834e-05 73.13080843 0 0.2206585973 0 1.069907605e-18 0 1.171429317e-06 21515.18308 3.868125328e-16 0 0 6.819521593e-14 0.04909911323 0 0.002096816157 5.021047566e-10 0 0 0.008354157408 0 2.512807134e-12 0 0 1.194084812e-21 0.001711928002 0 0 3.166571049e-18 0 3.057484626e-20 0.005184948149 0 0 0 0 1.998073833e-14 0 0 0 0 3.050397066e-07 215325.3532 0 0 0 2.519277267e-26 4.116892131e-12 5.494658668e-12 0 2.781686175e-08 0 1292987.212 0.02917573757 4.89294661e-16 9.200954313e-07 2.033526143e-06 0.00854011244 0 0 3.038737246e-07 1972445.299 0.000922630178 8.12633061e-11 0 5.02250138e-30 0 16.29392952 4.199595174e-16 626.0965141 0 0 6.359476133 0 0 0 0 12272.94557 0 0 1092.733719 1.296240236e-10 0 0.0006057515383 0 0 0 3.586691048e-18 7.509067138 0.001268002867 3.949138913e-11 0 0 0 0 43339.65929 0 0 138075.8195 0 4.292118027e-14 0 0 0 0 0 3.519374533e-06 6078.782296 1.781914989e-24 0 19685.6237 0.3771513112 0 4.321006367e-18 1.100552044e-08 1.597278744e-22 269321.7458 0 2416623.972 0.003398385358 1.875523639e-07 9.604757035e-09 1210395.198 0 2.77442384e-06 0 3.076195433e-09 0.03329872258 6.735065035e-16 0 4.997056083e-35 0 0 878.6259206 5.797315057 0 1.627986654e-09 0 0 0 0 0 0 1.641026374e-12 0 4.19049793e-10 0 0 0 0 9.278288405e-18 3.01647692 0 0 0 0 0 0 0 0 3.368364976e-15 8.86610434e-13 0 2.774476045e-05 1.517790715e-13 0 0 356771.6061 0 0 80822.3726 2.322199753 3.23444235e-05 0.0006702328224 13.81474496 6.093975651e-09 0 396.0462899 0 0 0 0 45.38260472 46.20779175 0 0 5.268759464e-07 0 0 0 0 0 0 0 6.812395847e-15 0 0 0 1.064616467e-06 0 0 0.01259497212 0 11389.58122 0 0 0 0 0 0 6.370778286e-13 +0 0.003046085323 0 0 0.0004650464113 0 0 0 0 0 0 0 0 0 0 0 0 0 24.4758955 0 0.7707425766 1.400196404e-15 0 0 0 0 0 0 0.005861355643 0 0.01811507201 0 2.402172149e-07 0 0 0 0 0.2329824154 0 48827.85525 20510.13702 5.708318406e-09 0 0 1780.023185 0 0 1.081824528 0 0 0 2.491539857e-22 1.812718084e-08 0 5.967059497e-10 0.000763190622 26792.01866 206260.8597 0 7.241397149e-07 1.343484652e-08 0 3.568517257e-11 0 0 0 1.081904963e-08 0.0002491902221 7.913673695e-19 0 0 0 0 0 0 0 0 2920.584951 0.000396156385 7.617910042e-16 25.83968287 0 0 2095.775455 0 0 0.002870575731 0 1.019557756 6.625360786e-07 0 9.093871996e-16 7.565744441 0 0 6.041308326e-10 0 0 0 0 0 0 0 0 0 0 0 125868.4613 0 194786.2185 99.09544606 1.148506439e-15 10330.2303 0 0.00173456356 1.365288872e-10 1.395324486e-28 80078.05881 0 0 5.947931321e-33 0.007764432613 0 0 6.390026441e-15 3405.595354 0 16465.2457 2.153288547e-09 0 2.131370561e-06 5.628926077e-06 0 4.929867185e-08 816.0508656 909.4818223 0 2.135558535e-07 2041.718706 1.14661842e-12 3.518928811e-06 0 0 0 0 0 1.116030689e-05 374.1261361 0 10.84827837 0 0 0 0 0.02882904467 1.376204188e-32 6.306729071e-08 3.700959242e-06 0 0 0 0.9050491733 443533.3074 8.570258885e-09 9.503822741e-27 0 0 2.816328242e-06 46022.63843 384.7106509 0 18815.53703 179.7977257 3.076822283e-14 1045.491142 0.5724684926 31536.3299 1.946936988e-12 0 4.451882495e-07 0 0 0 0 0 0 0 3.026092687e-19 0 1.240766345e-05 0 1050783.847 0 0 0 0 4.250365744e-14 0.005860714558 1.249824004e-09 0 0 1.676511273e-19 0 0.1449759678 0 5.867585912e-11 0 4.985385034e-24 2.023211839e-16 5.874424472e-06 0 0.01274119139 4.383471001 5.658110618e-12 470932.8312 1.761683547e-06 0 5868.310509 0 0 424.8004676 2.462982443 0 76853.23324 273.3915025 94.73487354 3.895592673e-09 0 0 0 0 17.6715953 0 0 0 0 0 0 0 0 3.30370651e-05 0 0 2510.9471 4736.417554 0 0 0 0 1254.83873 292080.9196 0 0 0 0 0 3.749270149 0 0 0 0 0 0 0 0 0.1604051379 0 0 4.640379364 0 0 0 6.422840246e-18 0 0 0 0 5.853805491e-27 0 279.7339863 0 0 0 0 0 0 0 0 0 0 0 0 0.0006709973718 0 0 0 0 4.173514392e-09 0 0 +0 1.237406852e-09 0 0 0 0 0 0 0 0 0 1.525382264e-10 0 0 5.690817904e-10 0 0.000385898208 0.005071326654 0 10.54664743 0 0 0 12607.4691 3.1698338e-14 0 0 0 4184686.829 0 0 0 2.959635775e-10 0 0 0 0 0 0 2.069843597e-06 0 0 0 0 8.12862667e-17 0 0 1.338862407e-12 30125.82734 1321.097544 0 0 0 5.031699824e-09 7.767195725e-12 4.496904328e-08 0 0 216484.019 5.480415916 434.0063838 0 0 0 0 171.525932 0 0 1.327504922e-11 0 636743.0789 0 0.008565704486 0.1892564592 0 0 1.041789092e-06 1.731375406e-15 0 151.4444774 0 0.003378774916 89073.16817 1.141689208e-15 0 0 0 0 1.066177244e-08 0 0 0 1.720095528e-07 0 0 0 0 0 0 0 0 0 1.83488326e-09 70.65192102 0 2.718274226e-09 0.000160400494 2.094316642e-14 1.125755544 0 19.95735535 6.540622798e-14 9.991987504e-08 36104.53074 0 0 0.0001219168757 9.940404553 1.273238089e-07 0.02066717211 0 0 0 1.854717061e-11 7.948089019e-05 0 0 7.791344967e-05 1.015134849e-15 612855.7642 4.751641523e-08 3.990485489e-10 8.486988336e-09 0 307492.5114 0 0.06503392846 4.736324415e-05 0 9014.280903 1593.452826 1.119020908e-13 111.4602469 0.01647409287 77966.51982 1.04180573e-08 4.033274082e-07 0 2973152.836 6.198676298e-24 0 0 0 2.158992951e-20 0 0 0 51065.23496 0 0 0.008319512633 2.405855263e-20 0 0 4.716935342e-11 0 0 4.113112059e-25 1.848419204e-12 0 0 0 2.799008657e-14 7.143447947e-19 0.001760501684 0.3005315574 210.7228582 0 0 8.292209128e-10 6.036212804e-05 28.00429852 105.1466325 0.0001359812764 8.703990838e-16 0 0 0 6.215677014e-06 0 0 319.6678065 0 0 539520.6949 0 0.001768140641 0 1.58119776e-06 0 5.850585678e-08 0 4.218257557e-05 2.047423061e-28 0 0 4.968961106e-05 0 2.190962288e-07 0 0 0 0 98.8455624 3.919083504e-14 0.005120007434 0 0.01867231211 1061905.058 0 0 0 416772.8753 0.007902353268 0 0 0 0 1.385338933e-05 0 0 0 0 1.202071564e-06 0 0 0 1.784735059e-07 0 0 0 0 5.541792806e-09 3.727606372e-11 0 0 0 3.149497207e-12 0 3.59780234 0 0 0 0 0 0.005363638506 0.2740569972 0 0 0 0 0 0 0 0 75.77595182 0.1109054944 0 0 0 0 0 0 0.0007017924071 0 0 0 0 0 0 0 2.120249887e-08 0 0 0 0.0001254962423 0 3.602934872e-16 0 0 0 5.433655664e-09 10.15453902 0 0 9.353126401e-23 0 0 4.622396928e-17 0 +0 0 0 0 0 0 3.770129296e-10 0 0.3552344112 0 0.002243951814 0 68048.59315 0 3.100871177e-12 2.073846368e-12 0 3.656448488e-06 28.75518388 0 0.05872351959 0 0 3.059288505e-08 1.479169574e-09 0 0 0 0 0 0 0 1.151465433e-14 0 0 0 0 0 0 0 0 0 0 5.679596435 0 0 4.673016239e-10 1.323031651e-13 3.298753015e-09 0.0029600029 0 0.4282263358 3.054327328 6.563613866e-13 0 0 0 1.242774175e-09 0 0 9.948568606e-08 0 0 0 0 0 2.453564339 6.68139245e-10 118652.1318 0 5.635575273e-07 1.423895951e-05 0 0 0 0 5406.498646 0 0 9018.447902 1.965498597e-12 39822.39222 0 0 0 0 0 29228.30498 0 3.021897859e-11 0 0 0 7.501690544e-17 47.53003234 4.301812517e-10 2.995296995e-13 0.1380133539 0.02196763911 0 0 1.369346819e-05 0 947567.9505 0 0 0 0 8.217116644 6.609819666e-10 1152816.07 0 0 0 5.138336153e-16 0 1.38066454e-10 0 0 4.341591195e-14 0 0.002886016298 0 2.163444627e-13 2.296425769e-09 2442.792252 0.001783301064 72.20267002 0.0003348979243 1893073.499 2201.861102 0 0 0 0 0 111168.3272 0.0006454286953 0 0 1.689542528e-13 3.593400259e-14 7.451761459e-09 1.421940653e-12 0 1.319804517e-12 0 0 2.312345394e-10 9.746091599e-13 562.5002729 3.387032666e-17 3.450175594e-21 0 0 0 6.044605417e-14 2.383332638e-05 1.356309932e-08 6.571592685e-05 1.967039992e-05 4.27089332e-05 0 0 5.922524704e-19 0 1.119764818e-06 0 7.210333198e-18 0 0 7.400687414e-16 0 0.0534470485 2.394830297e-08 0 1.020772292e-22 0 0 0.002209248955 0 0 1.851249274e-16 1.027034993e-07 0 0 1.537140896e-11 0 2.49503143e-19 0 0 1.29498525e-16 0 1537.41435 2.891230224e-15 4.048206828 0 0 0 0 0 0 0 0 0.00682118373 5156.784334 49621.19577 0 1.006052774e-06 0 0 3.706275094e-16 3.076764272e-16 0 0 0 0 660837.0991 0 7.430117558e-16 0 0 0 0 0.1636439517 0 0.01336431236 1.153075623e-06 0 2.429004922 0 0 485.6281612 0 0 0 3.099342903e-07 0 0 0 0 0 2.741534023e-08 0 0 0 0 3.111710723e-15 2.591687623e-12 2.106700247e-11 0 0 0 2.997646028e-21 0 0 0 0.0002755504696 3.937434272 0 0 0 0 0 4.375833063e-10 0.003935258763 0 0 205787.9091 0 0 0 644755.8996 0 0 0 0 0 0 0 0 3721.460992 0 8.378972852e-05 0 832.5466255 7.744475503e-20 0 0 0 0 0 1.962011917e-15 1008.141221 0 0 0 0 1.300940523e-09 0 +0 0 0 13.13582562 99214.79964 0 0.001504458534 0 0 0 0 3.463031918e-07 0 0 667.0272948 5.986862046e-19 0 0 0 0 2.385742873e-13 1.442410372e-19 0 0.07811655068 0 5.996892307e-16 4.719461088e-23 0 0 0 0 0 5.218952285e-28 0 0.0001551855179 5.476190694e-09 0 0 0 13672.91688 0 6.536636958e-05 0 250.9050993 7.193415725e-07 0.0003740041814 0.2133304908 0 0 1263.230372 0 0 0 0 0 0 0 4.774718605e-16 78440.2402 1.470775454e-13 0 0 2.411824977e-11 0.01861015485 0 0 0 0 0 0 0 1.865408987e-10 0 0.0003343320615 1.729767714e-05 0 0 0 9.743312209e-06 1.89941369e-20 1164.993591 0 0 238400.5143 2.553462557e-05 0 0.000214554555 2647.268018 0 0 1.430507042e-15 0 0.007824007268 4.744738326e-13 0 0 3.498836154e-18 9.05496296e-15 7.030107923e-07 0 2123.24513 0.0007360640077 3691.433928 1.486909916e-14 0 103.6123408 0.01159769218 40.19319975 0 5.544180802e-20 29038.47363 0 0 9.759530921e-17 0 0 6.745765526e-27 1.189655717e-16 0 0 1005.279889 4.172740288e-08 0 0 3.395751663e-05 0 0 0 0 1.850734876e-14 7.201250657e-14 7.487435359e-10 0 0.001970675963 0 0 5.498882899e-13 0.08975564999 0 5.027195373e-09 9.399045673e-09 0.01910034518 0 0 2.753747798e-09 5.739683528e-19 1.722372767e-13 0 6.299706642 1.628184697e-13 104.5194742 0 0 3.344606772e-10 5.53981385e-11 1.32835692e-07 4.448631326e-12 0.0003123248805 6.160166958e-20 0 1.10718119e-19 2.657921797e-09 0 286686.7289 4.791571331e-08 0 0 0 605.4493602 0 0.0004753984578 0.2427775842 0 7.71688303e-09 0 0 0 3239.125944 0.9894497094 8.446252046e-06 0.001060829794 0 0 0 1.356270164e-17 2.685349164e-15 0 0.3143498161 0 0.8678855235 4.522402699e-10 0 0 0 0 0 2.333640423e-07 0 0 1.044881452e-17 0 2.508857245e-08 480.8530082 0 0 0 0 0 0 0.0003357516161 0 16.35892859 0 5.488537403e-17 108.745037 0 0 5.046101709e-43 0 0.0003242788756 0 0 0 0 5.961255141e-18 0 1.619462224e-11 0 1812138.802 0 0 1.98358748e-10 7.062819974e-17 9077.164325 9.397045603e-08 1216.985167 0 3.612797881e-06 0 0 2.577902025e-09 0 2.292557664e-09 0 2.272269591e-06 0 0 0 0 9.856911731e-13 3.870962423e-07 1223.044037 0 803.2061714 3.337016405e-20 7.462442672 0 7.95675737e-11 4992.105336 0 1.950302673e-15 0 0 12.00041587 0 0 0.0002684859362 0 6.751020308e-12 2.998683685 0 0 1.470157946e-05 1.427095674e-14 0 0 0 2.445289244e-11 94528.35566 2.274631222e-17 0 0 0.02552233269 0 1.289211381e-22 0 0 0 9.060187737e-18 0 37574.17838 0 0.06945780011 0 4.895444118e-08 0 361398.905 2.108948471e-17 0 0 +0.03380845491 0 0 0 0 5.425582021 0.06250986568 0 0 0 4.751922057e-19 0 0 0 4.757028502e-20 0 0 827.9774004 1.14980282e-11 0 18.50419079 9.528404533e-25 0 0 0 2339521.607 3.62052448e-14 4.599053751e-11 0 109.3580025 2.018994602 0 0 0 0 0 0.03555848476 0 0 0 0 4.036435831e-08 1.874946477e-11 0 0 0 0 0 0 0 0.006984822989 0 1.224121663e-11 7.729732193e-13 0 0 95.40183017 307.2018336 1.093124481e-19 5.551968174e-05 0 2.67322563e-17 0 0 0 0 0 0 0 124343.7757 0 2.58217427e-05 0 0 0 83.05332337 0 0 0 0 0.002156592767 2.283613326e-19 0 0 0 164162.5289 9.539829612e-12 0 1.107682318 4.298735887e-09 2.055428708e-14 4.201623133e-14 0 35.47274931 1.090147691e-07 4.050198061e-10 1.224343135e-15 0 0 0 24322.62494 3.079409625 19558.72922 0 0 1.45221553e-13 2.124182512e-09 0 1.160770357e-10 2.260753599e-13 0 1.984928792e-06 0.2069129114 0.08430094705 0 430282.6867 1570768.306 4.512141554e-12 0 0 8.408428142e-06 2.462265091 278185.8148 1.069697516e-08 0.000173805046 1.716874907e-05 0 0 11.62183928 0.0004003493058 0 0.0006025876073 2.858111198e-09 0 0 0 0 6.638263325e-19 0 0 1.174639777e-13 0 0 34881.10049 8.47539245e-07 0 0 0 0 1.331590024e-05 6.685932358e-17 559.0712129 2.017931107e-12 1.288954478e-12 1290.177581 12.03421715 0 0 0 0.4537755055 6.881611777e-05 0.08935813437 0 0 41003.02627 0 0 2.080807323 51.68585474 0 0 1.804815285e-23 0 0.02819320441 0 0.003228476466 0 414.785259 2.160951362e-19 179568.9059 3.126599687 1.612800598e-05 0 16.9450144 1.183538862e-09 2.485585073e-09 164622.2299 0 0 4.972024729e-13 0 0 2.157538159e-23 6.680560302 6.294290407e-09 0 1.371740721e-07 7.872686633e-18 0 0 0 3.225119888e-05 1.215049833e-06 0 0.001753488754 0.3920374119 0 0 16.5966579 10250.89089 0 0.0008363766803 269.4656501 30.66153611 0.002943131582 0.3519644716 3.217363767e-08 0 686697.3845 1.02286191e-09 0 0 0 12295.03617 0 0 0.001614248803 0 0 0 0 0 0 0 0 0.001264643026 0 0 60391.03224 68.6893088 0 0 0 0 0 0 0 0 5.969428456e-05 0 0 0 0 0.004997353504 7.241195862e-10 0 0 2.746117432e-31 0 0 0 0 0 0 0 1.022590058 0 0 0 115.2400405 0 0 0 1.956331635e-13 0 1.192864192e-05 0.0001134029358 0 2.369855427e-06 0 0 0 0 21794.22243 0 0 0 0.000110539344 0 0 0 0.1418613462 0 0 0 0 0 0 0 0 +141.1135628 0 1.199807204e-09 0 3.671826536e-10 968.8436012 0 0 1.965650451e-07 0 0 0 2.420717724 0 1.116376456e-12 0 3.209716271e-10 0 0 0 0 0 2.567037168e-10 0 0 0 0 0 2893004.249 0 0 0 0 0 1.114227418e-10 0 0 0 1219099.037 0 6.490840528e-10 0 0 0 0 0 0 0 0.001723685608 0 644130.2324 0 3.943228743e-25 3.531746225e-25 2.99238293e-15 0.2634910965 0 0 0 0 6.717283545e-11 8.748321517 0 0 1.969212803 0.001915289707 0 0 0 0 0 431.9461562 8770.707155 0 0 0 0 0 0 175.3389442 164621.5845 3.303118139e-12 0 2.896119657e-21 0.1122678053 0 0 9.346845061e-22 4.052435175e-13 0 0 0 0.0008545297532 69.78414505 2.743474116e-13 0 98722.62892 6141.829648 11.69351587 0.0005289115186 7.340878765e-21 1.039957919 1.209974388e-13 9.229647454e-09 0 9086.368256 9.221203565e-11 29783.27245 0 1.400124505e-20 0 69.14934281 37.88344005 4062.540173 0 0 0 4.30302677e-15 0 0 2.633669831e-05 0.0031702991 0 0 1545.703905 1.975022503e-06 2.163308039e-05 0 13.78481314 0 0.5558619921 3.746667372e-06 0.08823932715 0 28441.35561 6.068892606e-10 0.2578848482 0.0008641407206 0 8.39951662e-08 0 3.142704437e-05 2.383732882e-08 0 0 0 0.02614230069 0 1.746621201e-17 103797.9773 109.8684889 43003.59041 0 3.646367934e-09 0 0 0.0001095464479 0 0 282504.3788 0 0 2.368411734e-13 3.970252171e-07 2.645513471e-10 1414.050045 2998.736222 1017071.784 36195.59295 0 2.859244974e-05 577.4389111 0 24981.09702 0 0 469.2537176 0 1.271172147e-19 281.7474931 0 3.972089961e-10 7.110289366e-13 1849.55487 0 0 0 4.841225891e-23 0 0 0 2.193159766e-05 0 0 0.007106265082 3.995776513e-14 0 1.978415026e-11 0 0 0.1151385446 0 9.945599473e-12 0 0 0.008447594473 2.388681959e-24 0 4.308737883e-12 0.001315795745 4.883588008e-14 0 0 2.390526391e-07 0 1.191233957e-10 42.63786755 0 0 0 0 0 0 0 5892.778409 0 0 0 653598.3524 1.179493131e-07 0 0 0 0.1770356023 1.267965041e-19 0 0 0 0 0 0 0 0 0 0 0 0.0007516999701 0 0 0 0 0 3.221936169e-06 1.92985331e-06 0 0 0 0 0 0 0.0001078217983 0 1.950301274e-13 1161.419526 9.677569234e-13 1.51096613e-08 4.152992157e-11 9.148358324e-13 3.112940047e-07 0 37553.18781 0 6528.726632 3.329294243e-24 835.0008372 0 6.939350897e-07 0 0 1.034155291e-13 0 0 0 0 0 0 0.0001452987573 0 0 33369.16523 2.608021596e-07 0 0 0 0.4873107236 0 0 1.301728689e-32 2.452851592e-06 0 +0 817.9509459 0 0 0.001121707797 0 0 0 0 0 0 0 0 0 0 0 0 0 4.264426735e-19 4.639034435e-19 0 11.01927481 0.0001609083523 0 0.001498661761 0 0.004665659492 0 0 2.113533643e-09 0 0 0 0 0 0 0 0 0 0 1442024.391 0 1277251.69 7.42422188e-15 1.485646692e-16 0 0.009940180983 0 0 0 4.997448587 0 0.4102252017 7.360212037e-17 0 0 0 8.297005931e-05 3.071060072e-06 0 0 0 0 3.489214139e-07 0 0 0 0 0.007801497726 0 5.044601638e-16 4.166404547e-06 9064.289744 0 0 320934.8878 0.0003469486726 108.8408189 1.15000115e-06 0 147062.9599 1.73270365e-08 0 338307.9251 7.267351892e-07 285.7122017 221021.6233 1.396047398e-30 0 2.41660027e-08 0 5537.334023 0 6.828852205 2.891358905e-05 0 112.8375417 0 232590.4047 0 0 2422.899775 0 0 0 0.05008287423 0 0 0 0.0005382786083 1.762038568e-06 7.182960703e-24 0 0 0 37346.71854 7.825866913 0 0 0 1.242929778e-13 0 0 0 0 0 5.797786841e-09 0 9.651538499e-08 1.155796587e-06 0 623.533032 0 8.741790974e-05 938680.4524 0 0 0 0 0.3459814365 1.248952077e-07 0 0 0 0 0.05522658564 0 0 0 0 0.0004172252119 44.61530127 0 38485.67554 0.01055175587 0 0 1.271029233e-05 5.894706365 0 0 0 1.02888425e-10 1166832.318 0 0.1516724571 0 7762.736751 0 4.312368107e-06 0 0 0 0 0 0 0 0 4.707075734e-11 0 0 0.0002014119337 0 0 0 1.304872628e-11 0 1.976011296e-17 0 0.0001212946533 51.83366748 0 0 0 2.688699911e-08 0 1.933992889e-07 0 0 0.01015186938 0 0 0 1.122946306 0 0 7.211233665e-07 0.08650220249 0 0 1326536.063 0 0.004372952199 0 0.0412766567 0 0 0 4.380875061e-13 0 0 5.342793329e-22 0 0 0 0 0 0 0 3.370922803e-10 6.920610697e-05 0 0 0 4.998764485e-24 0 0 0 0 2208.427221 0 0.007821631075 0.0003412135795 1.019811508e-06 0 7.855991735e-05 0 1.229337321e-17 0 2.56158507e-16 0 0.01865641783 0 8.747491845e-06 0.0009741191638 0.2526785798 0.07158612576 0 0 535376.903 0 0 0.0002289011917 0 0 0.004015950871 0 8.288180555e-09 0 94625.04091 0 0 5.354725154e-13 0 0 0 0 0 0 0.2768588639 0 7.66162429e-12 15361.95824 0 0 0 0 0 0 8517.542884 0 0 1.349923131e-27 0 0 1768284.693 0 0 0 0 +4.551099364e-06 0 0 0 1339.440712 0 0 7108.433487 0 1.426017303e-20 8.009608821e-06 0 42620.83361 1.484566702e-11 6.338254207e-06 0 0 407496.3917 1.98677589e-11 4355619.412 0 0 0 0 1.042459985e-09 0 0 0 9.111850232e-08 0 6.847190546e-11 0 0.1151875249 0 0 0.002104314418 0 4.647379665e-15 70111.70283 9.49464115e-18 0 0 2.624308561e-06 0 0 0 0 0 2.959024449e-15 0 0 0 109234.9499 0 0 7.691033606e-08 18.89579127 2.692966662e-08 0 7.559219593e-16 0 8.841014919e-05 69668.45033 8539.348119 0 0 1.890840683e-21 864.1252416 5.471238764e-17 75327.83228 8.134064082e-07 27407.7746 0 0 2.902064281e-08 1.498021449e-08 0 60045.01471 0 0.0005371782153 0 0 1.533343236e-10 3303.155232 0 0 59810.19688 0 1.051900074e-07 2183650.825 0 0 0 1.129594706e-15 517700.905 0 6377.358246 7.858370729e-10 0 0 1.587280471e-16 6.281488084e-06 0 1.012737834e-12 0 0 0 2.105793766e-23 0 1.426128601e-11 2.465990583e-07 0.4999361848 0 2.638111706e-12 0 0 0 7550.865926 18696.55338 8.679719498e-11 80498.11744 0 3.348657273e-21 0 221175.5657 0 24.59501326 0 0 2.519412614e-16 0 0 0 0 0 31669.22209 1.212207213 0 1.365755017e-26 0 5.53763935e-30 0 0 0 1.249935033e-19 6.616991937e-28 0 0 2.261573274e-17 0 1.322062539 0.04261195859 6.516686938e-05 0 566.3539058 8.004301194 0 0 0 0 0 2.528047074e-15 845098.1045 1.13808021 1.472122415e-18 0.01738715423 0 555851.4414 0 0 8.387335867e-10 0.1195232234 0 1.72113494e-16 0 0 825668.889 1.53025968e-09 0 1.790433772e-11 0 76315.86705 0 16858.15728 0.01269545389 1584.981844 0 968.8624339 7.257231373e-05 3.779565082e-12 0 0 1.482368097e-06 4.806941855e-06 0.0008881088717 8.428260235e-17 0 0 0.09880606487 2.265508032e-20 0 179.4035891 6.370881867e-09 89.61159602 4.070955686e-05 0 55089.32843 3.574382631e-24 0 0 0 0 0 4083.575974 0 0 0 0 0 0 5085.771421 0.007280180499 4.690681055e-06 0.09079345453 1.831446118e-10 0 33369.42901 0 21526.1984 0 1.120409989e-20 8.933026693e-07 0 0 18979.89357 0 0 0 0 0 6.030076378e-13 0 27.83036838 0 0 0 2231.962944 0 2.606437368e-16 2.187406529e-12 0 0 0 0 0 0 3.866624227e-07 0 0 1.231524484e-12 0 0 0 0 3.331611865e-15 0 0 48402.5133 0 0 1.488397999 0 0 62329.6725 0 0 0.02277512137 7.120150479e-08 1.752288394e-19 1.628102174e-15 2.870279626e-10 2234.413412 0 0.01113486333 0 0 0 0 0 14.68099316 0 4.820074284e-19 0.0004245401472 0 0 0 0.3623753153 0 0 0 +0 6.937025089e-06 0.004767720404 0 0 0 0 9.422752799e-12 0 0 0 0 7.310308753e-23 0 0 0 0 7.571778544e-18 0 0 1.702950373e-10 9.165001336e-19 0 0 1.282980447 6.442836694e-11 0 0.02457424072 0 0 0 0 5.484738966e-09 0 0 30830.08004 0.0001098875036 0 0 0 0 0 0 0 0 0.0003718713459 0 0 0 0 1.144891986e-07 0 0 0 0 0 0.003627571062 3.981774053e-09 0 0 7.403167826e-10 0 0 3.50124205e-05 0 0 3282.679528 8.313722756e-05 0 0 128.7932095 1.948822847e-22 0 0 730405.9377 0 0 0 112.201001 0 0 2.022725262e-14 0 3748386.605 0 1844893.267 0 0 0 5.677761441e-16 14631.63083 2.089890036e-07 0 0.003730835243 6.759241745e-14 0 0 0 0 0 9.96303828e-08 3.708798728e-07 0 1.081775559e-06 0 0.008148102449 2.085139689e-15 707103.8598 961460.711 0 0 0.007681454149 0 0 0 0 0 0.175665332 0 0 3.525351345e-17 2.377663438e-22 0 0 0 0.2595829364 0.1014661302 0 1.54961664e-06 425.3163146 2.526105207e-13 1.216936643e-11 9.738871276e-10 2.162472341e-07 0 0.007208128013 0.02090198248 4.834918326e-12 0 26.54323723 8.124808288e-07 0 0.0007205728616 9.0304473e-08 3339574.852 0 0 7090.921105 0 0 0 0 0 994603.9892 0 0 941942.5281 2.601272259e-15 0 15730.91571 27836.77674 2.708751158e-13 0.000136457043 4.29902334e-08 173.1507211 0 59726.41434 1.028407356e-20 0 0 214863.9673 0 4.676281052e-05 0 0 0.07245900009 0 724172.3844 1.081089219e-10 0 20591.96495 0.004748655425 0.05028328254 16.05550391 0 0 0 1.141237406e-11 10265.68561 3.34125685e-06 0 424.985819 6.70113754e-07 0.0001159920824 0.004662433342 0 3.52296777e-07 0.03394248529 0 0 0 3.522020416e-14 23.5823866 66.39927914 2.290960382e-09 1.06582961e-08 61876.6939 6.806158163e-29 4.20250518e-08 0 0 0 0 0 3.191994932e-06 1494.80338 0 0 0 2233089.526 0 0 849811.4117 0 0 0 0 0 0 0 0 391409.6354 0 0 894688.2446 1.814675577e-09 4.218650636e-13 1012521.436 0 0.01851149505 0 0 0 0 14.97916365 2.808622005e-12 0 1.539971368e-06 0 0 0 8917.788189 0 8351783.332 2.607422329e-05 0 0 0 0 0 9.082594136e-19 0 1.634314388e-16 0 0 0 0 0 0 0 0 0 0 6.269080296e-07 99.81479304 0 2.402043537e-19 7.476252679e-08 0 6007182.849 1.400498881e-22 0 3.642708752e-12 0 0 0 0 0 0 0 0 207373.4414 0 0 0.1136817405 0.829817143 0 0 0 0 +2.481799114e-12 0 94539.47443 2.147166936e-11 0 0 0 8.524683313e-22 1.584386566 4.361243031e-14 0 0 0 3.637804339e-10 1.903187576e-07 0 0 0 1.011133279e-14 0 0 5.379945185e-07 3.878182858e-14 0 0 0 0 0.04752925992 0 0 0 0.001311807812 0 0 0 0 0 104710.7415 0 3.403823767e-09 0 7864.051509 0 0.0001244124463 0 0 0 1.144413634e-12 1275.578991 8.870528616e-10 95170.68968 608380.4461 1.155735607e-12 0 0 0 2.915457261e-05 7.46827339e-08 0 3.524449628e-11 0 414087.5292 0 0.05817119253 6.267578792e-14 0 0 368081.9565 0 5.358888609e-13 1615415.787 1.383638895e-06 0 0 2.432830722e-08 6.032922088e-11 0 1.343713208e-09 2.317835649e-07 0 0 0 0.000473848471 0 1.003167227e-07 0 1.558761453e-06 0 0 0 77870.62087 1.186817937e-13 0.0002391423091 3.880712179e-08 0 3378.595846 0 0 0 4.802632235e-13 29.57502435 0 0 0 0 1.652030086e-05 0 397469.9842 0 1.613105255e-13 0 1.114799768e-12 0 0 2.279869028e-11 4.050422343e-15 4221.309961 7.854279647e-07 0 0 0.001382612512 1.234272865e-06 2156054.941 0 1.686328618e-06 4.713221341e-10 0 5.054059729e-10 1.601507985e-05 0.00356605317 0 2879233.865 61.44764074 8.000982388e-13 0 4.369645751e-28 738751.6274 0 2.459529571e-20 1.303929206e-09 0 0 0 0 3.14505373e-10 2.641116294e-13 2.243324069e-12 0.06362822093 0 0 0 38622.16386 0 0 0 0 3.598270319e-13 0 0.0001181783932 1.976948583e-09 0 8.964930728e-15 9.772351669e-13 0 0 1.517025943e-08 5.278426551e-12 5024.560557 0.006635518013 3.463017581e-11 7662.237312 1558.999448 7218.513253 0 0.02543724272 0 2.1309856e-05 70500.7825 8.314105417e-06 0 0 0 8.770340015e-16 1.191879616e-09 5.64707299e-11 1.707677857e-25 1.103788708e-06 9.066398628e-06 0 222692.249 3.443797541e-07 0 0 1.555233898 0.01876730562 0 0 0 0 1748.086291 35042.97367 0.1367957103 0 0 1.375855061e-06 0 0 1.219221094e-19 3067847.489 0 1.689012083e-06 0 3531313.46 1.492330964e-08 0 8.850058302e-05 0 0 685.1601032 0 0 944002.9953 0 0 0.0003844211485 0 0 0 4974.189566 1.808614316e-06 0 0 0 0 0 0 0.0005672337609 0 0 0 1.085587924e-17 0 0 0 0 0 0 0 0.2154420346 343461.6813 0.001080052297 0 0 0 0 0.6031705247 0 0 14.41708901 2.48766387e-17 0 0 4.221309298e-24 0 2.932288974e-05 0.001734504685 0 30.97162322 4.175598611e-06 0 0 0 0 0 0 0.8712119683 0 0 0 43.99003792 1.024163784e-07 8442.495695 0 1.091188195e-05 1.3560527e-27 0 0 0 0 0 0 3.340857181e-14 0 0 0 6.81257737e-13 4587.65783 0 0 0 +0 0 0 1.928681836e-18 9.075597245e-17 0 468398.654 0 0 0 0 0 0 5493.572336 284263.4918 0 0 0 1.76446735e-05 4.539452121e-19 3373615.204 0 0 0 0 0 0 18.50617892 216.4039761 0 0 0 0 10844.58977 0 0 0 0 0 0.0001394587013 0 6.7990629e-09 6.234821019e-06 0 0 0 0 0 0 2022.715341 104615.1776 0 0 0 2.876076014 0 0 5.018661087e-18 2.90490086e-06 0 0 0 0 0 0 0.3265706727 0 0 0 13.23675939 1.2717025e-12 0.0003034402424 0 0 456.4884746 0 346.867412 0 7.344076999e-12 0 0 0 0 3.306309033 1.195104751e-05 1.356338634e-07 711037.5969 0.01152064067 1.657723216e-21 0 0 6.886349662e-17 0 1376031.858 0 1.189286597e-05 1.201027607e-09 0 1.104933539e-08 2.024729426e-08 0.002153616636 0 0 0 1384207.902 2.65974298e-20 0.0001032083606 0.1342658407 0.004184970904 7.363358508e-09 0 38.86695089 0 0.01582872868 8.232631561 0 0 2.305790833e-07 1.601439164e-16 0 6.435264833e-22 871.238036 1074.642027 1.077452864e-15 1.347752429e-26 7.794471645 0 191251.9543 2.583668911e-14 4.455374064e-07 1.270858379e-06 0 0 0 1348940.283 117.4787373 0 1.812130425e-20 0 0 0 0 0 0 0 0 136.2281758 0 0 0 0 1.089462778e-07 19106.61137 6.037121121e-06 0.002259041663 8.708826119 32.67503491 0 1.528323632e-22 0 2.203778431e-14 0 1.411881592e-17 119217.7826 2.737268763e-16 1.358187809 2.50144426e-13 0.02651706374 1.624160625e-14 0.2637916267 1.630090838e-07 0 0 0 0 5.930224375 67317.40758 3116.816683 0 0 1253.190498 1.285785366e-13 17.89607084 402.7665248 998.3239836 428729.7031 1328105.108 0.01316633475 0 0.0005400816173 0 0.0001021621372 0 0 3.029237414e-15 0 8.799716326e-17 129578.1778 0.001663534064 0 1.880307683e-16 0 7.13223243e-12 0 0 0 0 0 0.003659415153 0 216090.5766 0 0 0 0 4093.07416 1.689718663e-06 0 309424.4526 0 0 0 5.287812933e-20 0.5912111637 0 0.0009160159127 0 6.444133956e-08 0 5.834537246 0 0 0 0 0 0 0 3.320585702e-21 64837.01105 0 0 1045.156046 35246.20585 0 1.770178344e-05 0 0 0 3.323076938e-12 0 0 0 0 0 0 4.264044348e-07 0 43166.40621 0 0 0 0.0004730178701 0 0 0 0 318305.6398 4.09804551e-12 2.222190144e-10 0 29101.46512 0 0 0 1088.654476 0 0 1.236278333e-06 0 8.206798201e-15 0 0 2.889617779e-07 0 209.3733192 0 0 7.822414956e-27 1.594654281e-07 11107073.8 0.004779514363 0 0 3.096750865e-13 0 1.905228497e-26 42.67531865 0 0 0 +0 301145.8687 0 2.130525699 52.19347616 0 0 0 0 0 0 4.784167123e-16 9.213372602e-17 0 0 7.271078092e-07 0 4.580195577e-15 0 0 0 0 1.344050778e-10 0.4153379925 1.548580986e-11 1.442657003e-17 0 1678849.054 0 0 0 122005.6743 8.561616438e-07 1.314039006e-08 0 0 0 0 35988.83835 0 2.089107183e-07 0 0 0 0 6.596413669e-11 0 0 0 3.536153095e-22 0 2.523443321e-05 0 0 0 0.0001043470131 0 0 0 0 0 0 0 0 2.004341254e-15 0 0 0 2.427469981e-21 2.209027445e-10 0 0 1.675804546e-11 0 0 563636.1182 1.878124563e-33 0.01756607224 0 4468.292772 0 0 0 0 3.249722367e-08 0 0.5250793074 320648.1027 2.568518907e-16 1.997853769e-18 0 3.414712618e-12 0 0 0 0 6.903533183e-13 1.436001198e-05 0 0 1.507945967e-18 516451.0502 3257.294121 0 2.381308832e-24 4.672661333e-16 3.38869286e-07 374217.3947 4.893939819e-06 0.003388745925 0 4.821381997e-07 0.2622349185 0 6.397754255e-15 0 0.0002276830765 2.573303002 8.718515922 0 1.111800175e-08 0 0 1.001699429e-12 0 4273.501988 8614.117515 1.399551553e-05 0 0 40731.46814 2.421955448e-06 7.541677244e-10 131605.902 0 0 1.718852517e-10 0 3.066401068e-12 7.722344479e-16 4.988041476e-13 0 0 5.000038322e-17 0 0 9017.656985 0 0 3.602826208e-15 0 0 6.264105824e-05 0 0.001534597666 353626.5625 16041.45351 0 1.875061627 0 9.24412333e-15 0 5.083941743e-05 0 2.030425588e-08 0 3.834177057e-24 4.015891204e-09 0.1587048061 1.054604293e-16 1.223572984e-11 2.322662636e-24 0 0 0.0005001316705 0 3195.593761 0.0005809511492 0.002989605924 760891.5733 1.342297082e-16 1.152326306e-22 46.10692454 0 0 0 0 0 0.00825378476 0.0001371853398 6100.186342 3.520724791e-13 0 0 0 2.979045048e-07 0 0 0.01224605844 0 0 0 0 1.502926249e-13 0 0 0 3.020412751e-08 0 2.53802462e-17 0 0 0 0 0 0 0 75204.98804 0 457.1376388 0 521816.3184 2506493.342 0 34822.88758 0 0.00171180697 0 1.059817424e-09 0 0 0.07555160623 0 1.58734733e-05 0 0 0 3.396281873e-05 0 8.825536108e-06 99389.77991 0 0 5404.523781 2.201821626e-13 0 4.749240965e-14 2197.067526 0 0 0 2.684062107e-06 0 0 0 15.54296568 0 0 6.007277721e-09 0 0 0 0 3.125545347e-18 5.972046158e-08 0 0 0 2.215915098 1.789226578e-09 0 0 0 0 0.007548597797 0 0 0 0 0 0 0 0 0.01255975093 3.094407301e-06 0 0 0 0 0 11183.90852 0 0.0005986695169 1133893.457 0 0 3.170951949e-15 0 0 0 +0 20.8717012 0.06470497219 0 0 0 0 0.732558736 0 0 0.0009499339619 0 7.809626483e-09 1.00508212e-13 0 0 63327.24428 0 0.149600876 0 27187.2858 0 0 3.386228415e-08 5.000795693e-31 2.755798948e-11 0 1.953482327e-19 0 0 0 0 0 0 0 1.724868413e-09 0 1.831129579e-11 0 0 0.3173437435 0 0 0 0 0 0.624627549 2.716917023e-07 1.167247399e-15 0 0 5.422679806e-15 1.032660537e-14 0 0 0 1.427613083e-09 0 8.985090729e-09 125019.5403 0 0 0 1.486106928e-07 0 0 4.954220277e-06 0 99.39042914 1543412.623 0 1.015626203e-05 0 9.974245816e-14 0 0 2.279272597e-07 3.891093906e-13 4.567283738e-10 0 0 8.0332581e-15 0 1.186316094e-05 0 0 2.798224202e-07 0 207805.9186 0 2.729438191e-07 0 0 593712.3045 1628.565309 3.603424052e-13 334425.9194 2.335487193e-07 6.273315872e-23 2.164369176e-12 2.895278742e-11 782157.6159 0.001428449506 0.007800261259 0 0 0 0 1.11047869e-08 6.221263585e-10 0 0 0.0003221395435 714813.8855 20117.47365 622.1479013 0 2.564348052e-17 0 3.120617431e-18 26198.57067 7.967985441e-28 0 0 0 0 0 4.551631437e-11 0 0 0 0 0.0007910729501 1.264819747e-07 0 0 0.001043429752 0 0 0 2.67622948e-07 0 0 0 0 0.07367784566 0 7.579365089 3217762.629 0 4.199408863e-16 0.6849504645 6.466621517 7.234529267e-11 1.061577507e-09 0 0 295432.0639 316.8643661 9.096987741e-14 0.0005855318738 0 430820.6267 6.029244522e-11 2.645087453 3.222891481e-12 0 0.04563674566 0 0.1220962226 1.142176201e-07 1.31807414e-11 0 3.958982385e-20 0 448977.7342 0 0 248.8210144 7.195913135e-12 3727782.648 2.736066018e-08 1.113705978 0.0141125471 0 0.01214122126 0 0 1.437342938e-09 3.384917195e-09 245216.7661 0 0.008354427525 0 0 2.033936698e-12 0 0 0 0 0 650137.1076 19.21517807 0.03516834383 0 8522.55264 1.844816985e-08 0 0 0.004239705053 0 2.106839638e-07 0 0.0001027460593 0 439230.6474 0 31.43425624 0 0 0 0 0 2322.708742 0 0 1.059126714e-12 0 0 9.207268263e-05 0 7.696421917e-07 0 0 0 0 1.58114207e-05 32.20306675 1873.07544 0 3.366496275e-23 8.327537376e-19 0 0.01858830401 1.733732278 0 0 0 0 0 0.001287071784 7.812385965 4621.10543 0 2.354656549e-08 0 0.00781511452 8.707016734e-07 0 0 8.356297812e-10 0 112828.6459 7.854390358e-24 0 1.078655354e-06 0 0 0 0 168210.4186 0 0 0 0 0.0007841703408 4.903280886e-22 0 0 0 0 0 0 6.832780555e-07 0 2.661636147e-09 0 4.79672108 0 0 0.001308763752 28630.83383 0 0 0 0 0 0 0 3.270380467e-05 +0 0 0 0 7356999.517 0 0 0 0 0 0 7.216645014e-20 0 0 33077.09257 0 0 0 8522.511027 0.0001533904897 0 0 0.06169393625 569.3273934 0 0 2.354596091e-08 0 0.00201160393 4.97768783e-07 0 0 2.726253267e-20 0 0.0003439482026 0 7.675384516 0 1.766536427e-11 245465.0182 0 0 0 0 0 1.941458766e-11 3.870160856e-07 0 0 634555.3314 0 0 1843753.77 0 0 0 0 1928.412656 9.866048433e-18 0 1.537672212e-09 9.80002924e-19 0 162.8358335 0 0 0 0 0.000700986682 0 0 0 0 0 0 753.428538 0 4.138856999e-06 5.191004089e-12 0 0 0 0 0 0 1.887122962e-06 4.445137894e-05 333531.2888 2.891014131e-07 1129332.946 0.0003216731103 0.004772385929 3.151157033e-09 0 0.02837634799 0.05136491646 0.0009173973833 3790.035883 0 154460.2666 0.7203007236 29320.83398 0 15.28685649 0 0 3277773.27 0 0 13.4174727 0 0 0 0 143144.4259 0 0 144190.702 0.01108203078 0 0 0 0 0 0 0 9.946219743e-09 0 1.951976284e-06 0 0 0 0 770376.2875 0 0 4.618305673e-21 0 1.78564281e-13 3.831423432e-05 0 1.569736603e-11 1.260666154e-06 0 451.4525064 1.575982377 6.701604357 0 0.3442521862 0 0 145.2797426 18.79548899 0 0 0 0 0 0 0.009894937937 0 0 0 0 0 0 0 0.008798723522 2078715.028 0 8.520079962e-13 0 5.199378073e-05 4.100458823 3.720246007e-11 1440691.099 2.817159593e-16 941757.705 3239687.324 1.275145311e-12 0 0 0 0 0 1.19264072e-11 0 0.941678219 0 0 2.808671823e-08 0.000458837471 0 106.6268172 0 0 0 0 0 0 0 0 0 161562.2603 0 0 2.079662396 4.744571857e-05 0 1.971071589e-08 2.390914774e-05 0 0 2.651932335e-07 0 2.981261221e-06 0 4.256236015e-05 0 0 5.934576591e-14 0 0 0 0 2.403769211e-08 1.916565213e-11 5.064836988e-08 0 0.1505548779 0 1.464217211e-06 4.080884244e-05 0 0 0 1.649416079e-08 0 0 0.3451178438 560911.2071 1617194.456 1.965572191e-08 505.388336 0 0 0 0 0.0003735876479 0 0.0001193776752 0 0 0 4.432285084e-07 0 0 0 0 445093.9529 0 0 0.008107353191 0 5.337510547e-12 0 0 0 0 0 0 1.606045355 317.5928052 0 9.880106034e-26 0 0 0 0 0 29941.85559 0 0 0 0 0 2.656344936e-10 0 0 0 0 0 0 0 0 0 0 2.360907275e-13 0 0 +2.137514037e-09 0 0 0 0 0 0 0 0 0 1.996353629e-08 0 0 0 6.635194636 0 0 0 11625.47083 4.301998066e-07 5704.211055 0.8317848038 0 0 0 0 0 0 0 0 0 0 0.4273847908 0 0.0001089946009 0 0 0.04737597571 0 2477.224385 0 0 0 0 0 6.889979406e-16 4.445363263e-09 0 0 5.512140945 0 0 1.919259994e-07 0 0 0.005729099156 1.14673291e-08 0.7778268996 0 0 0 166278.999 0 0 7.499584605e-11 0.6108450254 304252.2532 1.878947047e-09 2075342.096 0 8.259857485e-09 689790.9133 0 0 0 1.437762038e-29 1.800628506e-06 793.5010231 0 1.536663161e-11 0 0 0 0 47946.81793 1.231751619e-17 2139.01931 0 0.03227886636 1.305119247e-09 1.077175921e-05 0 4.176168438e-12 0 2.427972394e-05 0 373249.9924 9.814401679e-06 7.604519351e-16 0 0 0 1.641672318e-07 0 0 0 0 1.445037724e-05 0 0 0 0 168.2484541 0.0001906115303 0 0 0 1.007237778e-06 8.522011361e-10 0 2.776502735e-17 0 3.63667655e-13 0.001806398787 5.158066771e-11 2.523350587e-09 214627.5561 508659.2808 6.148878996e-05 0 0 2.11149361e-07 0 885262.652 0 0 0 1.150991804e-09 0 0 0.05581058915 0 214933.6689 2.018719337e-05 3.780832074e-31 0 0 1.643710028e-28 4.447894157e-30 547.6960982 0 0 0 926009.8192 505.1434576 0 500183.097 37853.25701 1.928505947e-08 0 7.794398833e-11 0 0 0.1337745439 6.070859372e-24 0.007972760016 0 0 0 0 0 3468.877677 0 2.040743264e-09 1.869354292e-09 0 0 15258.15751 3.741473274e-11 1.532492853e-09 0 6.208690585e-10 0 0 0 0 8.422427585e-10 0 26.51277844 4.716981205e-08 3.558000263e-05 9.807181517e-10 0.000236621037 2.232867432e-19 216.5576416 0 0 0 0 0 0 5.849385088e-08 1303.622778 0 0 29.62415944 0 0 2.743777981e-07 0 0 0.0002490770411 6.196766745e-05 1.882034305e-13 0 1712766.338 0.04507826339 0 0 0 5.653461788e-05 0 0 0 0 1.419606363e-05 2.576692181e-06 0 0 0 116.4226098 0 22411.74147 0 23677.28137 0 2682.748779 0 40755.07263 0 1.581737376e-22 1.812647421e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 4.870344789e-28 0 0 0 1.387470269e-10 0 0 0 2.07217378e-12 206327.425 0 1.74614798e-10 0 0 0 0 0 0 39.4799125 284.1509511 0 1.630811532e-22 0 4.692551074e-22 0 0 0 1326981.336 0 1290.511331 0.005702841093 0 0 0 0 0 0 0 0 0 0 0 46383.68596 0 0 +8.938557969e-30 0 0 12.27221609 0 0 0 0 0 0 0 5.424866985e-22 0 0 0 1.025044263e-10 0 23114.20942 0.0004240462535 0 0 0 1.167250761e-19 0 7.715409917e-09 0 0 0 0 7.101299328e-13 1.023064595e-05 0 0 1.907835745e-13 12414.16492 2140152.371 0 0 0 0 0 0 6.849931138e-14 0 1.104273458e-05 0 0 0 0 0 0 0 0 0.003122445947 0 0 0 193621.2329 0 0 0 0 7.857004746e-15 0 1511477.126 667405.5705 0 0 2.362235755e-12 3.237677317e-07 0 2.957126094e-26 1.896882599e-05 0 0 0 0 2.640638809e-15 112753.7857 0 2116.616409 85.02995879 0 0 0 0 0 0 0 0 0.04274960154 0 0.006272140222 0 3.828618384e-08 1.281205793e-05 0 0 0 0 2.210302629 6.30993331e-08 0 22362.04396 0 8.639493891e-07 1.533678112e-08 0 1.152542702e-06 3.868337983e-10 2.657336892e-05 0 0.06335737074 13977.02536 0 0 166.1266324 1.2569869e-11 4.330465374 0 0 0.8384378026 2.158479792e-14 0 5.393170101e-17 0 162684.1133 1.374252732e-12 0.0008661641171 0 0 0 0 0 1.235839118e-27 0 108140.0547 5161.966587 1.103143074e-18 249.190397 1.383331738e-06 24055.88967 2.566032719e-09 0 7.849738108e-15 1.988444846e-14 5922.961059 1.96696525e-18 208286.6034 0 0 4.601489271e-09 0.0006326547611 0 178.9265585 0 0 1.595543363e-14 6.668417595e-06 0 0 0 0.4117266632 31505.54701 0.001405982003 288.0938492 2.217181096e-24 0 0.0022350651 0.09932990556 0 2.591325841e-13 2.108634422e-11 0 0.0185162283 375.2079088 0 0.002001898801 0 11340.86474 1.477893037e-17 9.471308334e-12 0 0 0 0 4.438035173e-05 0.04240043918 0 0 306501.2077 4.490241321e-06 0 0 0 9.213120442e-13 1.198464281e-05 60.06029812 0 0 4422.137249 0 0 0 2.162633342e-11 0.6940028177 118301.9776 0.2828834368 0.000706725478 56652.50684 1.635029361e-08 0 4.051434212e-12 0 0 0 4.387536372e-11 8.94141761 0.002004408458 4737.664958 1.042192181e-14 3.674075315e-05 0.0544867146 0.0002028333432 0 0 0 0.1087912563 0.01482238041 0 2095.548143 0 6.1245587 9127.66686 0 0 0 0 0 0 16255.48985 0 0 0 2.629148503e-30 0 0 0 0 0 0 0 0 0 0 53.14301806 0 0 0.000537104871 0 0.00337056417 0 6.807775338e-05 0 0 1.524573799e-31 322949.4135 3.614844278e-06 2.970851463 0 0 0 0 2.299018428e-27 0 1.159205641e-07 4.736488537e-05 1.820561544e-18 0 7.021423206e-05 0 0 0 0.112067014 0 0 0 0 13.90835912 0 0 0 0 0 0 0 67.92404908 0 0 0 +0 0 0 1.028394479e-22 0 1.203464474 0 6.55602668e-13 0 0 0 0 465070.302 0.003580955032 0 0 1.827035504e-17 0 0 0 9496.845691 4.489520124e-22 0 0 1.996251982e-11 9.9993293e-07 0 0 0 0 0 0.0003999786911 1007.857329 0 0 0 1.4804481e-14 6.639087897e-09 0 1.713214391e-06 0 0 0 0.1129033537 0 18493.78494 0 0 39.63062815 0 1.750687305e-06 143.6611573 0 2.239883453e-14 0 5.799115003e-10 0 0 496294.4841 0 0 79.31513017 4899.832098 0 1.127806015e-09 1.661505409e-16 0.000161783301 159193.6914 1.615617898e-17 0.002575452741 0 5.431041833e-25 0 0.004476025919 7.408237445e-06 0 0 0 1.461756553e-14 0 0 6.011650078e-08 1.82757535e-11 0 0 0 0 0.0003319724681 0.0001026762736 0 4894.709555 0 4.919927065e-19 7.497525401e-06 3.041732781e-11 0 9.350103446e-07 1.852932365 0 0.00106642835 0 1.460651515e-10 1.547447661e-11 0 192573.8406 0 0 1.656619623e-11 0 0 7.198046593e-07 1.909691524e-23 2.029890011e-13 0 1.581426585e-12 0.000477528246 5.100697403e-06 0 0 1389.451066 0 11.5525192 4.278863598e-12 0 0 3.888133247e-09 16.55670895 3.421545722e-09 0 1.250203909e-08 0 0 0 0 3.099638494e-10 1.617647585 0 1.8089044e-23 0 0 0 2.681826269e-07 2.047750523e-09 6.468147369 0 1.092317215e-13 0 0 0.003955172591 0 0.016166851 2.635783821e-22 0 1.03685841e-11 6.36453813e-07 0 0 0 0.00140131645 0 0.3051156615 0 9.661139369e-14 441079.1304 0 2.204863171 0 4.073489494e-08 0 5.09833705e-08 20875.29847 0 0 0 1.478833435e-05 0 0 0 0 0 1.241930416e-11 4.252038104e-14 5.757547154e-11 555371.312 2.998000757e-12 0 191573.9371 4.159617583e-16 7.641806071e-07 0 0 0 1.360608446e-12 0 1.192913799e-05 0 1.180234952e-05 8.365040773 0 0 0 0 9.155426481e-07 1.158358333 0.1043505796 0 0 0 0 1.234157843e-05 0.001753352089 0 367854.2355 5.537753893e-11 2.571864657e-12 1608.06578 0.04201954808 0 15.76263591 0.0007429290368 0 0 0 2.837255699e-10 7.970938026e-05 0.0003804022783 0.000359040753 0 0 0 0 66.37064445 0 0.0001585190753 0 8.672742419e-12 0 5.513401044e-07 3.479188319e-07 0 0 0.0001904744988 0 1.042746841 3.476365045e-24 0 0 0 0 0 531.319009 1692.953481 0 0 0 0 0 0 0 0 0 0 97.6543414 3.676060402e-07 9.832370399e-06 5667.649599 26.15614241 0 0 49.92386316 12707.83815 0 0 0 0 0 0 0 0 0 0 9.828961179e-11 3.514419155e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.143361585e-09 0 +0 6.020527912e-12 0 0 0 0 0 0 0 1.332957896e-16 0 0 0 0 9.365569531e-08 0.006811645448 0 0 0 0 440641.6901 0 0 0 1.084614099e-07 0 0 0 0 0 0 0 0 5.379854311e-05 0 3.512003433e-11 0 9.833589315e-09 3.509242112e-10 0 0 2.635375822e-06 1.886271659e-24 0 0 0.001401614326 1.642451757e-11 2.059649824e-06 0 0 6.243812412e-06 0 0 0 0 0 0 0 0 0.06908939839 0 1.230783846e-06 0 0 0 0 0.01192562481 0 3.384838452e-14 0 0 0 2.142333051e-08 0 0.0001805389026 0.001167822661 192.2449768 0 0 0 0 0 0 0 0 0 3857.928486 2.725738701e-06 1.39229512e-07 0 1.13284924e-06 9037.864085 0 0 7.123378553e-09 7.507914132e-12 0 0 3.316370229e-11 0.000784773975 0 0 0 0 0 0 117.4405939 0 0 54586.38626 0 4.515545264e-08 1.087333955e-06 0 104928.0178 970.0072194 0 0 1.01935603e-16 2.231794456 1.977444847e-14 25432.63459 0 26815.66153 9083.695836 3.103951594e-07 0 0 0 0 0 1.593142481e-21 0 0 0 0.08898625688 0 7.722920168e-05 0 0 0 9.613721559e-15 0.01799385274 14.86636523 6.07503835e-10 0 1393680.253 5.32621337e-05 0.2946310975 0 3349.640295 0.01430696399 6.163932787e-14 0 0 23.87408277 0 1263.02035 0 175792.6628 0 0 0 0 0 130468.7785 0 0 13424.17822 0 62864.67409 0 0.0001022618267 0 5667447.588 0 0 75254.2377 0 0 0 3.443407466e-07 5.079618647e-16 0 1.353567205e-22 0 0 5.040925593e-19 0 0.8731082282 0 0 552706.8784 6289.665461 0 3.444647284e-13 3.745110229e-20 6.323963603e-07 0 7.436037254e-06 0 0 5.411864197e-17 0 0 4.881123569e-11 3.056108193e-11 1.608347458e-06 0 0 1.39815403 0 0 0 0 362.6956936 0 1.658176373e-07 1.155997801e-05 0 0 1.635995325e-09 1.021731962e-17 0 0 0 0 0.6594305524 2.527015623e-05 0 256.7656584 0 0.0005710420562 0 0.3063990074 0 10.29472751 0 0 0 3.837282843e-11 0 2.57263553e-10 0 4.910575725e-06 0 384.5871995 0 0 0 2.26041349e-11 0 0 2.034768158e-20 0 0 0 8.052857503 1.984634272e-07 0 0 0 288955.1035 0 0 0 0 0 4.829386626e-14 0 0 2.428943176e-12 0 1.744732333e-06 0 0 0 0 0 0 0 9.770788122 0 5.762405472e-10 0 0 0 0 0 0 4.950216136e-14 0 0 0 0 7.969860264e-25 0 0 0.1429507935 9.454621559e-07 +0 0 0 0 3.093975238e-14 0 0 0 305.4588415 0 0 9.627707675e-08 6.4325831e-30 0 2140359.848 2.145256789e-08 1.013927603e-12 0 0.007618026394 0.9254947711 0 0 4.216191118e-08 0.002449764042 1.140207569e-15 0 0 0 1.061921218e-07 0 6512.198861 1.592179674 0 0 0 0 1240971.343 4.918949022e-23 8.351549815e-05 4.757830365e-10 3.166975648e-10 193128.8519 0 5.60220885e-23 1613.007717 0 59306.56945 0 0 9.75183493e-20 0 0 0 37.35737018 0.09732048447 24879.11561 7.025437899e-09 1.061384728e-15 0 0 3.940275963e-08 0 0 0.01087487791 0.005749426779 1863.206452 0.0003702089785 0 0 0 0 0 0.0001017942486 0.002261454882 0 2080.651252 0.02002833547 0 0 1.724267321e-06 0 2.646121808e-06 0.1462269422 0 0 0.0007227420163 0.007350761089 1.560127606e-09 0 1.780977615e-13 0 0.02064681669 0 0 2.098217784e-21 0.001783380784 4.73968608e-13 0.03559975718 0.002984896954 233088.7668 1.119228139e-08 134512.7372 0 0 1.93797312e-08 0 0 0 5.609510248e-10 0.04706248232 0 8.718502009e-11 36441.60989 0 24.70830396 15.37687929 70372.55849 0.04931711678 0 2.353544372e-07 0 0 0 0 520.5069526 0 266.039186 1.376863178e-11 27.12533997 2.723770904 6377.576012 4712.178781 0 0 0.0006539764228 3.035941148 7041.622574 2.589785785e-07 15562.12634 1.888078693e-11 0 0 187331.0425 2.174239457e-13 0 2.147138589e-05 3.915664144 0 0 1.447468809e-12 0 0 4.286210268e-11 0 1.074761433e-09 0 0 0 9.245928293e-08 0 0 0 0 0 5.485512711e-15 0 0.1575077785 0.006416983349 1.024822106e-05 7.56543309e-06 0 0.0002652488691 0 0 0 0 0.0001133547102 0 0 0 367.0005266 1.738011771e-06 3.033810522e-18 0 0.008087232906 2.398928181e-21 8.039307616e-11 188.6972125 0 9.867006017e-10 3668.795076 0.02228047856 1.445058333e-08 0 9.699675116e-12 0.00294364495 5.840101907e-09 0 0 4.56472772e-14 4.69966302e-12 0.0003359051671 2084255.336 0 0 2.202934839e-10 0 12.48588283 0.0002000384825 0.113053695 0 0 0 0 0 0 0 0 0.4816864326 7.271938581e-12 136816.8694 0.002539252634 0 4.910088279e-11 0 0 3.33782771e-11 0 0 0 5.365441017e-06 58.46372461 0 0 0 109945.3618 0 0 0 0 0 4218.124864 0 0 1023516.592 0 0 101098.8374 3.625276821e-07 0.09395437192 1.559609472e-05 852630.1026 0 1.02139824 1.898249827e-06 0 0 0 0 0 0 1.691540173e-17 0 2.426070676e-06 0 3018.547641 0 0 0 0 0.0845660214 0 2.651015632e-14 0 16153.23157 0 0 1.495118179e-05 0 0 0 0 0 4292.20443 0 0 2.895158492 0 4.518601404e-05 0 0 0 0 0 0 3.975837114e-13 0 0 0 0 +0 0 0.4875967578 0 0 61.79604096 0 0 0 0 0 2.06775027e-09 0 0 0 0 0 0 0 1.728207911e-06 0.229662318 0 0 0 0 0 0 0 283172.9042 0 0 0 0 0 3.547170192e-12 1.48287152e-23 0 6.104350635e-16 0 0 1.720008571e-10 0 0 0 0 1.123667775e-06 0 0.07862919447 0 1576765.761 0 0 3.432243203e-06 0 0 0 0 0 1.630816263e-10 9.961843985e-05 0 82.48451933 0 0 374.2347113 5.30580907e-06 1.496223916e-13 9.359264193e-10 2.438425554e-08 0 0 7.12944993e-20 0 0 1220.045419 0 0 0 0.09008678356 50171.85829 8.062557115e-11 0 0 0 4.201839891e-18 0 393112.6869 0 0 0 0 5.867359792e-11 3068.230391 1.239499898e-06 0 0 2.456019913e-05 0 0 9.956754705e-05 0 0 0 1.096153835e-26 1.463857173e-15 1.547090513e-18 0 0 1.04108727e-08 1.400048585e-10 0.005274477709 0 0.001500376831 0 1613705.261 5.528021123e-05 2.142086034e-07 0.000124639343 1632179.609 9.548269109e-14 0 1.5109489e-10 0 0.09149653987 0 1.050813617e-11 1.501418472e-10 0 0 12309.45403 0 0 5.536881118e-17 0 0 8.337464796e-07 0 1.7704144e-10 9.02250341e-16 0 2.556911042e-12 0.0002658198911 223.1564172 0.0001886635068 1.478098328e-05 0 1.331197691e-06 0 6496.693553 1.610365523e-08 4.887317137e-20 3.747741866e-09 0 162.5437602 6.019930896e-24 1.10829069e-13 0.0001416773467 0 274.6684008 0 0 1.890664321e-15 4.525077814 588759.6672 0 0 2.284850118e-05 5.913651342e-07 5.355685221e-19 0 517507.5722 0 0 28.70143616 0 0 0 0 130.1498464 242854.4343 0 42704.11451 0 0 0.01452004462 3.16164776e-13 3.238708275e-07 1.496323417e-13 0 3.120808557e-08 0.01758511575 0 0 2.597701046e-09 2.511528978e-24 0 0.0009032326765 0 2.611110228e-07 0 8.283759881e-08 2.366448925e-12 8017.268132 6.934935271e-14 0 0 0 3.336508436e-20 0 3.558730582 0 0 0 0 2.368492236e-11 3.6991802 4.520617925 0 9.966528211e-07 0 0 4.41309471e-16 0 3.02502728e-09 0 0 0.1628686684 0 0 0 0 0 0 0 0 0 0 0 6.405556077e-12 0.00884306461 0 0.357150314 0 0 0 0 0 0 0 0 0 0 0.2717909083 0 0 1.842340323e-08 3.012729434 0 0 0 0 0 0 0 0 0 0 0 0.02602159592 0 0 0.9474250052 0 1.571359875e-10 0 2.613253205e-05 0.001591419673 0 0 0 0 0 3150701.632 0.002045040016 0 0.0003752546894 253.6305124 0.1114914209 0 0 0 0 0 0 0 0 0 0 0 0 +1.325795811e-14 19.69853696 0 932.6672993 6.532326746e-15 83106.45528 0 0 108472.2323 0 678462.9874 0 0 0 0 0 9.351452017 3.973807072e-06 0 0 3.228481198e-08 0 0 0 0 0 0 0 0 111.5778318 3.281430292e-22 0 0 8.586775822 0.15538581 0 1.403852484e-10 5.961138626e-12 0.0007137128387 0 0 0 0 0.0718553406 8.162899245e-06 0 8.261723591e-05 6.489465429e-05 5.157870318e-15 0 0.9224741298 9.898284411e-08 0 19.13059873 1.208768829e-09 5.800386858e-07 0 5.766203099e-12 1.108741142e-12 3.007526415e-11 103476.8052 0 2.68392631e-07 0 0 4.825686105e-16 0 0 0 0 0 0 0 7.56043265e-10 0 3.908678518e-11 0 164598.0744 0 2026.156543 1.122213477e-07 0 1.631200854e-21 1.483958755e-06 0 0 36.93368041 0 0 0 0.08434155433 0 0 0 3173709.321 0 2.314642357e-08 0 6.060446503e-05 0 0 3129.720495 2.475802313e-19 21.5928849 0 0 13509.9814 269.4584845 0 0 2481398.858 0 212.619827 0 0 0 0 0 0 0.002263483664 3.093523636e-20 0 0 5.200605566e-12 0 0 0 0 5.327611078e-19 549.0144691 4.121905856e-14 6.460065499e-13 0 0 0 2.516035492e-06 38.75624672 405.6482229 0.01573786518 0 0.0001580514629 2.373301375 209.1100762 0 6.638389505e-05 3.468568498e-11 413532.9829 2.060794125e-08 0 0.0006126600599 193.0172666 0 0 0 6.068796865e-08 0 110.1394638 0 2.574504606e-06 6.15087351e-08 6.249527901e-10 4.428607773e-05 0 891.5370453 0 0 29.4611053 1777.933605 0 0 9.911545847e-09 1.598620865e-11 0 5.494660993e-07 11.74289625 1.618667247e-08 9.028053068e-17 0 0.0002987815515 0 481995.8592 0 0 0 0 0 1.481375191e-06 5.72108972e-06 778.0136684 0 0 301217.4755 0 6.402330584e-14 78268.51269 0 0 0 0 2.937588875e-21 0 0 5.105696108e-28 9.531959749e-10 117883.3553 0 0 0 0 0 8.126514129 0 0 0 257.6150378 180.7062203 1.52150324e-06 2.729291679e-05 2.561761128e-14 3.246790068e-18 7.135961261e-07 0 0 6.593170333 0 0 0 0 0 0 0 0 0 1.304034207 0.007851252969 1.770708919 2.204791424e-05 5.87609222e-30 5.092909547e-13 0 0 2.902955826e-13 5.211479926e-19 0 0 1053.328471 4.053233986e-14 0 0 0 0 23677.7839 3.725322777e-15 0 0 0 0 0 0 0 6.730083824e-10 0 0 0 247.0121434 0 0 0 6.72592066 0 2.609677307e-06 0 0 0 0 0 0 3.434420496e-07 0 0 22125.86331 0 0 0 0 7.044540294e-14 0 0 0 0 0 0 3.350062358e-12 5.03237473e-10 0 0.4226982555 0 0 0 0 +0 0 0 0 0 7.235845146e-10 0 2.541840941e-11 1.195850725e-05 0 0 0 0 0 3.816375387e-06 0 0 0 0 0 0 0 0 4.958708873e-05 0 2.658104755e-28 1.983601197e-14 3.343086932e-12 0 0 0 0 0 0 0 0 0.07988541989 2.876086559e-08 0 0 4.998911631e-14 0 0 12595.16648 3905.424568 0.3066921543 9.918156488e-11 4.976826786e-07 227.9022034 673443.9196 0 940574.0422 0 0 0 0 0 0 30378.66574 0 0 0 1.405498868e-06 2.210414434e-07 0.1974388602 0 0 0 0 0 0.000144990017 0 0 0 4.355246021e-14 254.1364187 0 4.261102899e-25 9.679210456e-16 0 0 641132.5034 82.63271002 5.005750972e-06 0 0.3219054323 0 5.004473415e-05 0 2.032907466e-05 738463.6863 1.12466963e-12 1.552240562e-12 762428.6311 9.326277756e-16 187237.5393 6.262367055e-08 5.056160959e-16 2.147962233e-08 0 14213.73597 0 0 0 0 0 2.431041091e-19 27320.43248 0 0.07560868861 1.895611227e-07 0 0 0 1585.940715 21569.7147 0 0 1.325462661e-20 2.110772497e-10 0 0 0 0 1.065145979e-14 0 1.249350184 0 0.1862256584 0 0 1.391723689e-20 213498.7028 0 0 755513.5937 0 2.401398264e-08 0 0.01855578622 0 0 2.866850233e-21 544.1991856 3.562040368e-22 0 4.913080176e-11 1.259964359e-16 0.003205007042 0 1.045469071e-05 1.361260319e-09 0 0 1.908642841e-13 0 0 6.86250157e-11 0 0 0 127664.8497 0 0 0.01392625696 0 22.44684435 330.8801087 0 0 0.3213243136 0 0 0 0 7.773865871e-12 0 0 1.838849004e-08 5.03267363e-12 0.001567899597 995.3412449 0 0 0 24.24669718 10.57483174 0 0 1.61455348e-16 2.434003114e-14 0.1663116144 6.271752059e-12 0 0 0 1386.622129 0 0 0 0 0 0 0 456.5205622 4.57116587e-06 6.21136776e-10 9374.022029 0 0 0 0 4.444251999e-10 0 0 6168966.683 0 6.801872992e-18 2.501252745e-11 1.057203181e-13 7.064478644e-14 0 0 0 8.922426172e-13 0 0 0 0 0.4085115874 0 0 1.989706361e-18 3.046330647e-05 0 0 0 1.410672224e-24 712.5845058 0 0 0 0 0 1660569.268 0 0 19.57248214 0 1.951036037e-14 0 0 0 0 0 58.59751326 3.27630547e-16 0 235540.1412 1.492137035e-12 0 0 0 0 272564.5184 1287.630134 0 0 0 0.009113827615 0 3.110341605e-07 0 0 1.98594477e-24 0 0 5.44773891e-10 0 0 5.535841763e-23 0 0 0 0 0 6.329019517e-22 0 0 0 0.01208361443 0 0 369333.6557 0 0 0 0 0 0 +0 0 0 8.375557232e-18 0 0 0 0 0 175.2746678 0 0 0 0 0 0 1535195.526 0 1.30985351e-13 0 0 0 0 2074.727267 0 9.214415418e-15 0 0 0.3681048045 0 0 0 0 1.55708877e-08 0 0 0 9.061331342e-15 0.2584628065 1.592565817e-05 594708.0576 0 0 8.939338884e-26 0 7.299603719e-13 0 0 4.873089881e-29 0 0 0 0 0 12.83517643 0 7902.681111 0 0.09852386112 0 0 0 3.336961456e-10 5.988027846e-15 1.093759167e-10 0 0 0 935355.1797 4.331071987e-11 6.969875623e-12 0 0 0 3.763145098e-06 10197.73721 0 0 495487.8691 9750.016205 0 0 0 0 0 16.29709486 1.48087265e-05 5.501951144 0 34048.40012 0 0 0 0 0 2.913157589e-06 0 0 0 0 1.369933504e-14 0 0 0 2571.796417 8.278264038e-11 0 0 0 23.7046369 1.547446228e-06 1.458837754e-09 0 0 0 0 0.002065841303 0 5.181034068 0.4247418534 0 0 0 0 264.2582011 0 0 1.070635281e-12 1.248543122e-07 0 0.01082150306 890543.2128 0 0 0 0 0.3541534984 0 0 0 2894594.898 0 0.03628821163 4.491701598e-14 0 0 0 1.145182936e-06 2.396797702e-13 4.737380183 2096697.209 2.177669448e-05 0 0 2.428842707e-20 643.8786792 0.09795700372 9.054611551e-12 0 0 0 55674.93296 0 0 2300586.277 4.717154997e-10 4.749404481e-08 0 0.1758424503 0 0 22559.75932 0 0 5.507644896e-12 0 8.901899927e-08 0 0 0 3.139399127e-09 2248.047949 54362.97858 0 2.470584449e-10 0 0 0 0 6.269278121e-16 3.049623878e-07 0.0001055114572 3791.83083 3.396486817e-05 0 0 0 10.50206922 84511.43138 20688.57966 0 0 1.900727423e-06 1.979071608e-12 2094.079905 0.08963969759 6.914196909 0.09952855191 0 0 0 0 2.589804902e-20 0 5750.216011 2.127919194e-09 0 0 0 0 0.002106335368 0 807634.6774 0 8.941622537e-07 0 0 0 0 1.136961718e-06 0 0 1.569095316e-25 0 0 3174.920242 0 0 0 0 0 7.038627449e-06 0.9341625502 20517.15802 0 0 0 15.14756499 0 0 0 0 49.1070748 0 0 0 217.1215921 0 2.573744416e-17 0 20163.43784 0 0 796016.8297 0 8.719653527e-09 0.0003244175744 0 191.1512203 0 3.287590315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006236404486 0 5869.975725 180466.596 2096.171463 0 0 0 0 0 0 5.638816138e-11 0.0008091601533 +0 0 0 0 0 0 0 0 0 5.18155565e-12 0 0.01035989933 0 0 0 934363.0737 0 0 0 0 0 0 0 0 5.091833813e-14 0 3.804894622e-11 0 0 0 0 0 21.48226046 0 0 1.88764134e-11 0 0.007918165397 0 2.087257968e-17 0 5.094319709e-07 0 0 0 5810.552621 5.820530175 3.5963734e-07 0.1115855559 0 0 0 0 0 0 0 0 0 0 6.842441861 0.2019200129 1956418.193 0 0 0 0 2873.781702 0 279746.6392 820.3538745 0 0.002454244907 161964.0468 0 0 0 0 113564.0278 33.29545616 0 0 0 0 4.408230793e-07 0 8.433890143e-13 0.005770772184 1.317425622e-07 0.5418451263 0 28.13401511 0 1.020386822e-16 0 0 8.137879754e-05 2.5353596e-05 1.143545628e-06 4261.642869 1.984595366e-06 4.116924217e-16 0 1.283679727e-23 0 5.765990241e-10 0 0 0 10680.18788 2.582945238e-08 0.02284713347 54.37054436 0 0 22369.20458 2.71008694e-09 5102.236699 0 0 62144.80302 1.98488559e-12 0 0 1118.209271 1.76330864e-10 0 1.464177979e-29 4.813285166e-09 0.004823437198 4.879320334e-11 232335.4123 7.139055872 1.117739237e-20 0 24.23967984 0 0 7.88276357e-12 0 0 0 0 0 8.314501166e-09 0 18.7410146 2059407.469 0 0 0.03070094445 3.29584551e-11 22.21109272 0 3.84961989e-11 0 4.827089977e-16 8.690943465e-09 164.0752394 1.764816865e-07 0 0 297.754547 5.422050036e-11 1.204252629e-08 0 0.01532196443 2.025370232e-08 389.931287 28.97636223 0 266372.3929 815.1688938 1.711142605 576864.1131 0 0 0.2073141485 0 0 445.3573371 0.06399364236 1.366163439e-12 2.265811862e-05 2.326533843e-12 0 0 6.722297341e-12 0 0 3307.102427 0.01371309534 163.2930741 3.118214579e-15 6.895701987 124.6959106 1.014040533e-07 0 0 0 0.003452437133 16.30491928 0 0 0 1.544586901e-23 3.775265534e-24 2.427804183e-08 2.341276149e-06 0 0 0.5853629572 0.001172606652 0 0 0 2.433966776 0 0 0 5006007.228 3.675787774e-07 0 71.99340655 3365247.465 50625.28629 0 0 0 0 55081.6844 0 2953.553934 0 0 0 1.499572322e-14 0.004428947746 0 0 0 0 0 0 0 8.013870463e-10 0 0 9.694525297e-13 0 0 0 0 0 1.541507452 0 0 0 0 0 0.0004820701454 0 0 0 0 0 5.840400424e-11 1.147120088e-12 5.301966007e-21 1.89846881e-07 0 78.1849429 0 0 0 0 0.001921845517 0 0 0 1.81519614e-12 0 0 4.585599044e-19 0 0 2.288508656e-16 0 533604.1334 0 1.309360632e-08 0.01567643852 0 9685.242174 0 0 0 0 0 0 319158.766 +0 0 0 0 1424.279834 0 0.130880848 0 0 0 0 2.610148976e-19 0.005283610712 0 0 1.170876755e-13 0 102018.1447 0 0 0 5520.911075 0 0 0 0.001820362454 0 0 221.0358057 5.540085466e-11 548452.5721 0 0 0 0.005478058946 0.01194887481 3.272875859e-08 3.12918769e-15 0 0 0 3.704518892e-08 6.335376552e-16 0 0 1.295760128e-19 0 0 1.108551163e-06 9.951894626e-12 0 0 0 0 5.048425146e-06 0 2.635534276e-12 2373.815407 0 0 8.489077247e-05 0 0.0731713136 0 1.397702616e-11 0 0 0 0 2.729885311e-06 0 2.252374762e-07 0 1.520231017e-12 3020.33627 0 3.663362038e-14 0.3465735751 4.036784257e-13 2.334095372e-09 0 0 0 0 0 0.01708656456 1.015266279e-12 0 0 2.358154352e-19 0 0.008326237501 0 1.463079886e-09 2.963814293e-09 7.561006512e-25 3.852004392e-11 0 4.385767201e-08 0.0001120258911 0 2.528043027e-05 0 0 0 0 0 0 0.003936193554 3.109705489e-08 0 366218.0024 0 0 0.01139589894 267711.4724 0 0 5.584253608e-22 1.861716048e-08 0 0 0 687558.2904 321496.4995 1.796707956e-08 0 4.842541659e-05 0 0.0035769422 0.0001251063251 1.433849317e-05 0 1.256899399e-24 0 7241.024432 0 0 3.163723808e-10 0.008719105179 0 0 0 0 852917.7609 1.101642679e-07 1.686840879e-08 1.473836608e-05 7.810114743e-18 8522.731251 0 9437.099651 1214819.687 0 9.796643137e-06 0 0 1.727453898 0 0 0 0 0 88818.68702 0 4.522136851e-08 0 1.253202657e-08 0 12199.33746 0 0 2.236733231e-07 35.5808506 0 0 0 0 0 0 0 1.441145069e-05 1.433618523e-18 0.0009637603768 4.349959284e-17 0 7.310501064e-05 7.933640153e-11 9.91481407e-07 0 0.4051369988 0.0001793265615 0 0 0 0 0 0 0 4.740769036e-13 0 0 2353.098518 4870748.773 0.004855319399 0 8.832706978e-05 0 0 0 9.888470086e-15 0 0.0001183504108 13837.91289 0 11.02321914 0 0 9.879852883e-08 20689.23236 0 94973.78463 1.482587354e-10 1.136083994e-07 0 0 0 6.506129127e-15 0 0 0 0 0.002635607913 0 0 0.003265828565 0 0 3466.29561 0 0 1.494636909e-09 0 0 0 0 0 0 1.509698558e-15 0.4095981373 39515.14146 0 0 0 0 2072.84077 5.519327871e-05 0 0 0 0 3.679339806e-08 0 0 1.333990466e-23 0 0 0 1.727972334e-21 0.002034716685 8.501544629e-15 0 0 0 0 0 372292.1978 0 2.745301382e-10 4.030275654e-21 0 24772.25513 15981.77141 0 1.213437276e-14 0 5.794879543 0 0 1.252755725e-07 13450.25576 4.154921559e-22 0 3.078488974e-05 3.061338706e-06 6.17147076e-11 0 0 0 0 +0 0 0 0 0 6.088573477e-18 0 61.4335248 0 0 0 5.739702528e-11 1.419934202e-21 0 0 3955592.137 0 0 0 2461789.852 0 0 0 5.392564413e-14 0 0 6.959381613e-16 5.066422358e-12 1.188554332e-08 0.0006864049578 0 5.159626428e-11 1580.314723 0 0 0 0 0 0 0 0 8.002560323e-08 2605.814206 0 0 463855.0318 0 0 1.775103252e-12 0 277420.9335 2.247786518e-16 0.365916011 2.073752983e-18 0 4.89606851e-18 0 0 160100.1293 0 0 0.02297505132 304.003496 2.654210601e-18 0 1.497788882e-09 0 0 1.116667426e-07 8.80492395e-10 0 0 1.171374636e-11 5.008362173 0 2.14945148e-11 161748.4402 0.5558587034 1.624810709e-27 0 0 0 0.006472312507 0 0 0 4.94871687e-10 0 83.28694098 0 9.025428432e-06 0 0 0 2.660572771 0.001897886521 0 1.82488014e-08 0 1.098737138 1.348748187 1.648918448 3.955506601e-10 191234.8579 0 0 0 0.0003275779558 0 0 0 9685.669838 3.120708034 8.911851484 0 3.257292035e-12 0 0 2.1891714e-07 0 0 0 1.076925535e-11 1.204565739e-09 0 2.506860938e-07 0 0 0 3.903400013e-06 9.755687604e-08 0 0.005315861636 4.864771536e-10 9.870703709e-06 0 8.068311946e-10 7064.55974 0.6945973707 2.775951067e-16 0 0 0 0 0 1.1323819e-16 3.085474825e-05 8.712217118e-21 0 0 288048.8337 2.01662286e-10 38615.55625 0.0001046870168 6.159611657e-09 3.66819757e-11 0 8.035910425 6785023.701 8.078834605e-17 0 3.774997205 0 1.714028993e-13 0 0 0 0 0 19.61419957 8.847925345e-08 0 0 0 2.379577491e-07 11.91154379 0.002106282844 0 0 0 0 0 0 0 118.6885936 0 6.071169687e-20 0 1.445950374e-11 0.3632423716 5.395179182e-08 0 0 0 1.864461563e-14 0 0 0 182336.674 0 0 0 0 0 0 1171847.259 0 8.795242727e-09 0 0 2103.243786 0 0 0.1428045603 2.171509994e-09 2.403191364e-13 0 0 0 0 0.7987551622 0 1.985274627e-18 0 0 0 3.481650987e-14 0 0 7.922077483e-07 0 6280.512484 0 0 0.1569879958 0 0 0 0 0 0 2.826537647e-11 78.96835101 0 0 4.577936845e-15 0 0.82948171 0 0 0 0 0 0 4.660801121e-12 18813.56731 0 1.892951345e-32 0 0 190012.7383 0 2.82655393e-10 4.398324194e-12 0 0 0.2223576899 0 0 0 1.135770286e-16 0 0 1.776151937e-07 0 0 0 2.082659463e-10 0 0 0 0 0 0 0 0 0 0 0 0 3.047842452e-21 25.88888741 9.39375082 4.325113982e-15 1.343129557 0 0 5.969201808e-07 1099479.807 0 +0 0.004265636232 0 0 0 49058.68145 0 0 0 0 0 0 0 0 0 0 6.193986839e-11 0 8.876903758e-13 0 9.207015987e-10 8.724743658e-10 6.389379966e-14 0 0 0 0 2.760414545e-10 0 3.233258288 791.801319 8.904534432e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 658.1746582 143232.8254 0 2.192423042e-11 0 0 0 0 0 1.369767878e-08 0 0 0 1.016866821e-15 0 3.331093364e-11 6.387842732e-25 0 1.015484541e-17 6.024346745e-09 0 0 0 8.382489333e-29 0.0005005722438 0 1.242284285e-27 0 0.03136023744 0 0.001231663613 0 1.014079684e-11 2982.70091 7.554577452e-08 63558.93102 5.64280653e-16 2.888147103e-07 0 0 0 0 56781.93955 0 0 29.47415546 0 148938.4097 0 70.47772217 1667593.397 2.441849773e-09 1.177266259e-09 0 0 0 0 6.255080158 8.571396617e-11 1.588694506e-09 0.01281087581 0 0 5.584382007 1.112505013e-15 0 0.3937758214 0 0 0.02764789198 2.526372281e-05 0.3135615775 533985.9504 98378.08663 0.0003365567295 0 1.331829838e-16 0 0.1015235014 0.00336887819 0 1.29782644e-08 2.366685148e-10 0 0 5.394090255e-08 0 0.009516134521 1.029838989e-07 3.528468626e-10 84421.07344 0.001053783917 5.254599679e-24 341105.5668 5.941648091e-06 33.68308771 3392153.83 1.158281422e-12 0.0007734570261 7.896930869e-11 0 3.00502777e-08 7.159643018e-16 1.984921348e-05 0.0004133963996 6.054238028e-08 0 0 2.259079597e-22 0 0 0.06434409986 0 0 4.415603648e-18 0 0 1.460602838e-12 0.008514620632 0.0002694504235 0 0 332194.9729 1.21098209e-13 0 0 4.145903951e-08 0.0007815083763 0.0002100964123 0 1.295398628e-11 5.921977205e-06 34435.66366 0 1.150921623e-10 0 0 1434041.927 9305.070319 0 50846.60999 0 3.172062688e-09 0 0 0 0 0 0 1229029.643 0.09097456384 0 1.198620515 0 172.4530905 0 0 0 0 5.068937004e-08 0 497.1989987 0 5.497746519e-22 0 0 3.738038029e-10 0 0 0 3.199889992e-17 0 0 0 3.034204621e-05 0 1808.258209 0.009989062341 322434.7225 0.0001628611041 0 0 0.0007354347796 0 0 5.948135194e-06 0 0 0 0 2.115727803e-06 807844.1692 2646.404366 0 0 99357.97527 0 1331277.673 0 792337.9006 0 0 2.835900515e-13 9.147132662e-14 43.31571628 0 0 0 0 0 0 0 0 0 0 1.995754393 0 0 0 7.406750884e-07 1.966846434e-24 0 2.458990986 2.27283032e-25 0 0.0001446467705 0 0 0 0 0 0 0.4024262878 0 0 7.490450117e-16 0 0 0 0 1.988986319e-07 0 1.532573493e-09 0 0 +0 0 0 0 11985.94459 5.269243644e-07 269.7936205 0 0 3.161817642e-30 0 0 3.998621268e-05 0 1.512940011e-11 0 776336.2908 3.152734326e-09 0 0 0 0 0 2.782738684e-28 0 0 0 0 0 3.260576811e-06 459907.4233 0 0 0 0 0 4.610444776e-14 0 0 160.3955346 0 0 0 0 0.002948112223 0 0 35.7642139 0 0 8.417635502e-11 0 1.086707301e-13 0 3.169844012e-07 0 0 0 0 0 0 4.119568875e-05 5.175624428e-06 0 0 465677.8869 0 0 1.241407696e-21 8.597317194 0 0 0 0 2.443414914e-14 0 8.403246003 4.729080976e-11 0 0 0 9.42008189 0 0.7666161234 0 4.933546387e-14 0 0.001102277164 8.611646184e-10 0 0 0 0 0 0.01133684126 0 0 0 0 0 1.310236382e-08 534051.0766 0.000310106377 0 3515506.76 0.0002087494578 3.203937779e-09 0 0 0 0 1.937770255e-05 1.625294619e-09 0 0 3.465246278e-09 0 8.468928993e-09 0 1595.607295 0 0 4.549046946e-12 1.463134627e-16 0 459.2277016 0 9.404377574e-07 0 2.832637983e-13 0 0 6.846426338e-11 0 0 0 0 0 376694.2032 0 5449.009123 0.0713122268 1.017680045e-12 0.0009336796858 4.75871085e-24 0.1945456662 0.0006261629847 0 0 0 812516.3352 0 1526.600087 0.04921839058 0 1.647564497e-14 0 0 7.53902568e-16 0 0 1493.658314 2.265655622e-05 0 24.59058176 0 0 0 0 1.481898195e-06 4.007147205e-06 9.772907238e-08 0 0 0 14729.35813 160629.4989 3.669712759e-06 1.730720993e-10 0 3.844007711 0 0.001427267528 0 0 0 0 0 3.34247121e-16 0.0001269730285 4.177044513e-12 0 0 0 0 1758.261025 0 6.307542137e-22 4.173556742e-15 2.814306836e-19 6.490590279e-17 0 385726.9027 0.4976532329 1878.22514 0 0 4.043826797e-18 9.801988558e-06 1384.000888 0 0 0.05267843548 6.544503729e-07 10.72651555 0 0.1706068485 1.975551793e-10 4.489949283e-09 0 5.532344366e-26 0 4.190335578e-08 2.105463297e-12 864.3616111 1.002195968e-12 0 0.002519609063 2.670277022e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 2110.50503 0 0.003582438603 0 0 0 0 54.929785 0 0 0 7.292985961 0.2580038992 0 0 3.251717176e-10 0 3.756520897e-27 0 0 0 0 0 0 0 0.0003187790204 0 0 0 0 0 0 0 92065.0825 0 0 354938.0143 0 5.115869816e-16 0 1.139577986e-25 7.220457014e-06 0 5.605266162e-08 1.249277179e-14 0 0 0.08585414655 316663.3934 0 0 0 0 0 382430.4805 1.62046542 0 0 +0 0 0 0 2.643501773e-08 4111.024133 0 0.09515359206 1934.598605 0 0 0 0 0 28.34172584 0 0 0 0 0 5.905674273e-07 0 9.084433594e-21 0 0 11.72229277 1.066050701e-06 0 0 2.732979049e-08 0 0 0 0 6.087920277e-11 7.084032463e-05 0 0 0 9.990822604e-21 0 68.19511128 0 6.342743561e-11 13145.8881 2.031248992e-11 0 0 0 0 1.949634978e-19 0 0 0 0 0 0 1948.930921 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.215413413e-15 6.510555557e-08 0 0 0 0 5.937433269e-06 0 0.003223108341 0 0 1.234681996e-05 0 0 0 0 0 2.038029313e-12 1.095324916e-10 3.595010567e-15 6.678206136e-11 0 0 1.038289701e-07 2.650990585e-07 0 6.657480907e-22 6657.296636 0 0 0 0 0 0 0 0 2.137371923e-09 0 0 0.06775970475 0.1686655224 1.989219174e-14 0 0 4.378399186e-13 0 70327.24916 5.450884059e-26 1.442341171 2.213805214 0 0.0005891141808 2.268466262e-05 2.495897105e-05 735541.6897 9.423079839e-09 2.175630559e-08 3.387262777e-11 1.28862109e-06 2.204308009e-13 9.622843207e-05 6.199691892e-15 10568.15635 0 0 0 0 29.4029684 0.62168853 0 0 0.0006257472925 1.910556809e-27 0.0001095687617 552912.0269 0 0 14.16936123 31.61606498 1.029349462 0 0.6845395682 2.721801963e-17 16524.85727 1662.292391 0 0 0 0 1.125928615e-10 7.543081971e-09 436.7106047 0 0 7.182548182e-06 0.0005332362833 0.06397523929 0 0 0 0.7845997266 1.467111705e-15 0 4.116959084e-14 9.188705849e-09 4.942197206e-10 0 0 0 0 0.00132063617 0 5.30461173e-10 0 123759.3594 0 12891.23971 0 0 2069699.062 8847.593092 5.167037282e-20 375544.8856 0.2675976688 7.375722746e-13 0.07298805872 0 0 3.547864578e-07 132.5026879 0 0 0 7.285512506e-12 0 0 0.2749851246 208104.3578 0 0 1.698993152e-26 2.190358428e-05 5.807662836e-05 2.675022592e-07 0 0 0.07090794415 0 0.0001396029044 0 0 5.64531235e-16 0 1612.743268 442801.8116 0.0003005008956 0 2.921234557e-15 124.7139327 2.855149315e-05 0 1234.208316 0 0 0 0 1.233715734e-14 1.328577269e-16 1.041845583e-19 0 4.204228411e-05 39695.84993 0 4.098153327e-27 1723863.876 0 0 3.613066266e-11 0 0 0 0 0.02858973234 8.525926384 0 2.934763387e-06 0 0 0 4.339930486e-09 0.001210855958 0 9.64123149e-14 0 48456.10776 0 0 0 190093.7122 0 0 295523.0714 0 0 0 5.41009621e-06 0 0 0 0 0 0 0 0 0 0 7.948797279 0 0 0 268508.081 1.461580524e-10 0 1.430008354e-08 0 0 +0.9488205885 0 503.0316119 0 0 0 0 0 0 0 0 7.706053289e-21 0 0 37513.07657 1.407253963e-15 0 8.101096293e-06 0 0 0 9.629257043e-24 0 0 0 0 23045.40841 0 0.02061621537 0 0 0 2.952289103e-05 0 0 0 0 0 0 0.01292499249 13.50424017 0 0 187756.2391 0 0 0 15.06065024 1.420078051e-09 0 0 0.01213387604 0 1.352291691e-10 0 0 0 0 0 0 11.52622386 0 0 0 15.73243851 0 0 8.545076932e-07 0 1.62870947e-11 0 1087678.398 0 0.004014477895 4.608072266e-11 24636.03454 165.9345023 0 0 8.253852982e-07 0 6.56073541e-08 48959.76443 0 0.0007396821236 0 202.5548632 0 0 0 0.01897988187 2963.636377 3160.014831 7.789110738e-16 0.06923562302 62097.49098 2.599003269e-15 2.655346255e-08 6.362544085e-09 2.547967224e-05 0 30.94682802 1.182035368e-05 0 0 0.01776535126 3.73874157 1.224161682e-13 0 0 1069.20452 753433.4589 0 3.622762488e-06 0 1.681608092e-14 0 0 1.007119957e-10 7.012049581e-07 2.926242255e-05 1.531226222e-10 0.01107285149 1368.363564 5.830091961e-10 0 0 1.512348093e-11 0 0 4.650885653e-15 0 1.969200872e-12 0 2.135701382e-23 0 0 0 0.8017990061 1.708599375e-11 3.525831876e-10 0 0 0 274.4922613 0 0.055726244 7.57942813e-26 1.653155366e-13 0 0 4.326073864e-23 0 732.8674698 4.606191927e-05 0 0 85432.28741 352692.5468 0 0 1.89397335e-06 0 0 305193.5189 0 2230.3675 26002.68404 0 7.670983881e-11 1.346436755e-15 101728.416 3.637512327e-12 0.0007155187519 0 0 0 0 0 0.2496562054 2.921113767e-11 1.021465612e-10 131277.9027 0 0 2.550371538e-12 0.002624242316 9.611285193e-19 0.2322824694 0 0 0 2.841223831e-05 0 18.04039022 1.934323996e-05 0 92.51938135 300.8969343 0.00446668139 0 0 189274.8265 111810.0941 0 23314.78618 0 0 0 28446.99771 1.731582755e-13 0 0 19754.79132 3.403008368e-14 0 0 0 4.554576344e-08 0 7.090005696e-21 0 0 0 3815.550053 0 0 0.0007965351173 0 0 0 0 0 4.846762897e-17 0 0 0 0 0 739495.8436 14.20251673 0 0 0 263.8801199 1.55990411e-07 0.06806292652 0 0 1.384828234e-10 0 0 0 0 0 0 0 0 0 0 0 1.11304552e-06 0 0 8.040204876e-05 0 0 0 0 0 1.480126479e-12 0 0 0 0 6.239601872e-13 1.582145617e-18 0 0 0 0 0 0 0 0 5.494408135e-26 0 0 0 0 0 7.501888441e-09 2.38224029e-08 9716.376826 7.888035851e-11 1834.76636 0 122249.7582 0 1.183452334e-29 +0 0 66052.90681 0 0 0 2231210.471 0 0 0 0 0 0 0 0 0 0 0 1.51074098e-14 4.40885608e-19 0 0 0 0 1.211428819 2.316511527e-12 0 0 0 0 0 0 0.04014288396 0 3017.156308 77062.09171 0 0 0 3.646550186e-08 0.01012465768 0 2.114605303e-22 0 1.287295323e-19 5.525524252 0 1376099.861 0.0001578877701 0 0 10.30178779 0 8.52707905e-08 0 0 1.66702545e-06 0 0 3.415767978e-11 2.50521132e-13 152.3068104 0 0 0 0 3.700772285 0 0 2.894937295e-06 0 0.000101171146 0 0.5908464159 0 5.841333151e-15 0.0001357723778 0 4.444770352e-06 1.294594048e-18 0 0.02332706958 0 0 18.15260958 3.774613429e-13 0 0 0 16893.22567 0 1.042991214e-05 1.083954977e-09 1.864696048e-06 8.036401698e-10 0 0 3.86247152e-06 0 8.859041089e-26 0 0 1.255979009e-06 0 7.211480717e-05 2.277967225e-07 1615061.798 0 0 0 1.139221831e-09 0 0 2.596915696e-18 353.5763736 0 5.639131453e-16 0 5.658341877e-05 0 8.645975682e-14 47.51279136 0.01249841989 3.65715886e-10 0 7144.406877 0 282694.0124 4.314938374e-12 0 295133.0907 0 2.728332985e-07 0 14815.20003 0 36915.71123 3.410222573e-16 2.156401757e-08 0 3.199716149e-21 2959.205765 1.154485851e-11 8.19150538e-12 0 0 129469.9396 0 0.01135777429 0 0 47.37539206 1068.512379 1.122406153e-22 0 0 0.3481427469 4.488187921e-16 0 0 7362941.218 0 0 6.55531991e-12 5907016.116 0 35685.95314 251262.7418 0 0 89838.92738 21.66340437 1.013702171e-13 1.287662717e-05 0.0120208924 0 0 0 0 0 0 0 2.476305648e-06 0 0 0 77410.47666 0 0 0 0 1.770458158 1211.747966 0.04534913599 0 0 0 1.635165519e-05 0 6.100541379e-06 0.06987186501 0 0 0 0 0 1.57672519e-10 0 7.324154551e-05 0 0 1.004729455e-12 0 0 0 0 24.40935896 0 8357.810532 0 1.910114446e-15 79988.47283 0 0 0 0 2.185252282e-24 0 0 5756.415837 0.001299250171 0 6.427860285 0 0 0 0 0 0 0 0 29.41192309 0 7.203173469 1115866.787 90.72921596 0 0 0 0 0 0 0 0 0 0 0 0 0 7.480647076e-05 1.097680496e-26 0 0 4.246346715 2.615329213e-07 0 3.439051662e-15 0 0 0 0 0 0 0 0 11.33914474 0 0 6.883018705e-20 0 0.09265641852 0.002758027301 6.938594427e-06 0 0 0 0 1.269250438e-09 0 0 0.002977629367 4409.282731 0 452.623644 0.01008189489 0 0 0 0 0 +0 0 0 6.900564152 0.2207194873 0 4.168209357e-08 0 0 0 3.303067491e-11 1.264199779e-12 0 0 7.961197354e-05 0 0 0 627073.514 0 1806220.642 0 2.161814173e-21 81.88457464 0 2.629816703e-07 0 0 243.3077867 0 0 0.0001762352943 6.342581037 0 0 1.625869956e-18 2.315464802 0 0 2.192003466e-11 0 0 0 2.296627397e-07 0 0 0 0 7.529140512e-13 0 87.50975228 0 0 5.774085045 0 0 1.127215586e-05 0 0.003928993943 27.10062049 0 0 0 0 0 1.538601586e-05 0 5.346043254e-06 0 0 1.944035706e-09 0 0 0 0 0 4.151224366e-06 0 0 0 0 9.155188183 0.02675884486 0 0.1609635257 0 14304.53086 0 0 0 0 0 2.797870638e-07 13064.27838 1.084359387 0 385.8678264 5.125339607e-07 0 1.235856669e-17 2.882345994e-28 0 0 0.002814741361 0 4.949057931e-11 0 0 0 8.858118132e-07 0 4.372642016 318864.8746 0.0007409540989 0.004019221479 0 3856539.052 0 2.027869925e-18 31.99048989 0.01095025539 0 562.9534147 0 3.138928521e-12 373827.0359 0 0 0 0 0 7.941096147e-12 0 0 7167.380892 0 0 5.341262466e-15 0 0 0 260939.6085 0 0.007431276576 0 57.09599084 7.174170586e-06 244655.4486 6.004335738e-09 0 0.001030735314 0 1.477655875e-07 0 0.009657475323 0.005284038446 0 177819.4687 5.933905367e-11 59173.91195 0 0 43.03191836 1.958795e-16 0.05192585058 1144727.208 2.029862527e-11 0 1.791731406e-07 0 2.374922357e-11 0 0 0 1.423935879e-08 1.897254868e-14 0.009054970546 0.02080386769 3.884696869e-20 3.148777361e-05 8.214399294e-10 7.655300117e-06 0 0.247616516 4.584962137e-05 0 0.04140389394 1.504725291e-21 0.8068248234 0 0 0 1564.385351 7.238940033e-08 0 2.067703585e-11 0.0001838172049 0 0 0 0 0 0 1.233620469 0.07740025558 0 0 3.315935594e-12 2.788520928e-08 5.039706683 0 959.3531842 0 3.5145117e-10 6.61093163e-29 0 2.290881417e-12 0 2.649180246 4.246310274e-15 0.0002469852827 0 0.2604518453 0 0 0 1.915883484e-11 0 1271.106927 0 0 0 0 6805.961184 1.112232215 0 0 0 5.065492013e-08 0 218930.7436 0 0 148016.9324 0 0 0 0 0 0 0 0 7.239352313e-24 0 0 0 0 0 4.857688886e-11 0 0 0.09793177209 0 0 0 0 0 0.0001460542177 0 0 3.999728146e-13 8.289850485e-11 8.867698913e-10 0 0 0 1.19557657e-07 258.3806783 0 0 2.050679779e-11 0 0.0001021780731 0 2.282874818e-08 4.75188766e-08 0 0 0 0 0.0006927247443 0 5.354690505e-08 0 2.883645783e-06 0 0 0 85824.95419 0 +0 0 0 0 0 3.931054186e-13 0 0 3.214085004 682.3817945 0 8.13889608e-29 9.018127915e-12 0 0 5.083688186e-20 0 0 6.616950779e-13 0 0 0 0 0 4.268366588e-19 0 0 0.106201982 0 0 28.57085561 0 0 13437.19282 0 0 0 9.963351174e-09 85276.52009 0 1.727296467e-17 0 9.376283861e-05 0 2.957817475e-11 0 0 0 0 0 0 3.84729025e-08 0 0 0 110306.7627 1.574688372e-10 0 0 0 0 9.719107681e-20 0 0 6.127998409e-07 0 0 0 0.002959953248 0 0 0 3754.011928 0 171559.8479 0.04766591198 6.435315195e-06 78416.92348 0 0 3.455428511e-07 0 8.393659473 6.945230385e-27 0 0 627236.2387 0 2.915213199e-15 0 0.02307001036 0.02603270256 0 0 5.07567882e-15 0 0 20.009151 4.139731443e-10 173310.7774 0 0.05636643871 0 1205.719748 35893.4058 0 0 0 0 6.555626931e-14 1.278977892e-14 0 0 0 0.4907969037 5.849767738 0 0 0 0 0.052054121 2.609296994e-22 0 9530.498966 0 0 2.439264552e-27 4.211799244e-31 4446.64192 0 0 0 0 10805.23299 0.01946507975 0 0 0 0 7.884071002e-20 0.01959021518 0 1.181008754e-13 0 0 0 4.933901981e-11 0.003949583524 0 8.452203951e-14 0 1.516713603e-11 94.46247174 0 729682.2264 13872.04231 2.490082499e-12 0 2.945442764e-07 0 180950.7324 0.0004497392284 0 1.13417234e-16 1.900291094e-08 0 0 0 0 0 0 1.246934774e-21 14698.44429 1861.563868 132243.0582 0 1.101676921e-09 0 0 3.249494462e-05 0 1.413482734e-11 221.0887903 0 0 9.749838458e-20 1.983535186 0 0 0.1026309121 0 327279.2936 0 4.009564351e-05 0 1.976311863e-10 0 0 15039.80295 7.52491429e-06 0 0.001184245828 1.192411388e-05 0.3564939632 4.178267884e-11 1.604738132e-05 179.9402308 0 0 0 0.2354683172 7.809879555e-13 844.6821661 2.643035127e-14 172463.2705 8.029777664 0.125157112 4.225668514e-11 14306.75217 0 78.0558769 0 0 0 0 0 305182.598 1.826089815e-08 0 0 0 2462.778393 0 0 0 1.181330657e-11 0 1152.075039 7.937409864e-05 0 8.456807859e-13 5.549474702e-11 1.654561317e-18 14713.59735 4.957272223e-12 0 0 0 5.262583169e-09 0 0 0 0 0 15590.28765 0 0 0 6.770266769e-18 0 0 0 0 1.160450941e-06 0.002677781103 0 0 0 0 0 0 0 1.70228145e-05 0 0 99369.2233 8.158300168e-07 0 320.5226404 0 0 1.551502232e-11 0 5.329387465e-07 0 0 38.13770245 0 0 0.2092995149 4.741509711e-14 0 0.1077219362 0 0 0 0 0 0 0 +2.1724426e-16 0 0 0 0 2.05842923 3.744355064 7.644451557e-07 523.9236638 4.56777885e-06 0 0 0 0 4.696420981e-17 0 0 0 0 0 0 430307.0274 0 0 1.434320454e-09 136.5918288 4.371542504e-16 0 0 0 14836.56634 0 0 6.344192042e-26 0 0 0 917368.0619 0 1.007431029e-14 0 0 376376.229 0 0 0 6.456370742e-13 0 0 0 485.1527815 211.0786679 3.372630437e-12 0 0 129551.0998 0 0 2.779730282 1.724145096e-12 0 6.141551937e-18 0 0 0 1.558164509e-13 0 0.004759719661 0 0 0 0 0 11.49914852 0 753.5388037 0 0 5.047411144e-05 0.4738225418 0 2.032627057e-15 0 315009.6863 0 0 2.186528805e-14 0 5.721485885e-23 0.0004851760004 0.002842761169 6.05633201e-08 0 56.89352651 0 0 3.205600886e-09 0 0 0.4411373727 1.123310779e-11 631.9743194 2.123061183e-24 0.0006805834854 0 39073.9968 0 0 0 3.216562579e-18 0 19.72264019 0 0 0 0.007126672328 2.994668939e-28 216299.3812 0 3.016677757e-13 0 7.000133374e-10 0.008315742832 0 0 0.001584379415 1460.705624 0.07420231757 2.517414099e-11 5.209734993 0 2.373491656e-20 2.027779115e-24 0 0 0 137.6002895 0 0.08139224442 4.274293665e-05 1.247848752e-10 3.948055901e-08 0 0 2.019723935e-06 4.605189197e-07 5.591341719e-10 0 0 7.549567096e-15 2.83672769e-20 56.51345535 1.685670253e-13 3.785929397e-12 2.724432217e-10 271.0997988 0 0 4.907480057e-12 251.2177497 918614.3794 0 1269.619244 0 4.940095159e-06 0 132.9220947 0 0 896066.3054 0.006002349975 2.927516994e-09 0 0 5.430864344e-11 15.67699532 0 1.010257394 23635.84113 0.0006182829511 0 0 0 0.0014697976 0 0 0 0.0004206201006 0 77819.79857 2.993185472e-18 0 1.404279891e-13 0 5.132129183e-18 2455573.978 50180.61719 0 705244.7663 27.85481434 0 0 0.09109930647 1.303734872e-11 0 0.002026857938 0 0 3.22449501e-14 0 0.0001724839676 0 0 0 0 0 34.44739802 2.220639105e-05 0 2.701487771e-13 0 0 0 1.297282069e-08 0 0 0 0 0 0 0 0 0 956974.8932 0 0.1514704253 0 9.787842218e-13 0 839.0024099 1.84014e-12 1.26999161 0 0.0002861425112 0 0 61.18826751 1.014657921e-18 0 0 0.8544517881 3.109982102e-23 1.792732633e-17 3.979932695e-05 0 0 1.31240999e-12 3.316313143e-09 0 0 5.439878956e-11 17353.54859 128.5278969 0 0 0 0 0 0 5212797.686 0 9.341542132e-07 6.379165768 8.657481535e-11 0 0 0 2.288765278e-12 0 3.250091826e-10 0 1.519803633e-14 0 0 0 0 0 8.452893742e-10 0 0 3.896419886e-16 0 0 1.469370983e-17 0 0 1.810803334e-21 0 0 0 +0 5.097842992e-07 0 0 0 0 0 0 0 0 0 1.114138204e-05 0 0 0 7.729821708e-13 474.5706508 0 4.460274069e-07 1.549145003e-07 0 0 0 0 0.005598113376 3.833557589e-06 3.404083122e-19 0 0 0 0 0 0 0 0 0 138710.5136 0 0.04148387068 0 0 0 0 0 5052.633589 0 0 6.356595718e-08 0 0 0 0 5.875556966e-07 2.69459017 0 0 0 7.81517828e-08 0 169680.0324 0 0 0 8908.759919 0 272.4386015 0 0 0.004790746557 0 0 0 0 0 12.51977605 0 8.793179205e-08 0 1.296321975 1.072233597e-26 0 203.6101468 5.393399637e-08 848.6775777 1.429329258 1.161080656e-10 2504.191208 0 0 3.362934665e-05 0 0.005622884769 0.001559101386 0 0 4.929437826e-15 1842073.122 0 0 0 8.004450609e-12 16.29829654 668683.7533 5.652653048e-14 0 0 1.128806208 3.460299892e-12 0.003356727349 0 0 0 24.3173723 107866.3661 0 0.0007509913096 768492.1365 7.079544031e-05 629175.1408 264902.3608 35.14144682 2.154676914 0.014569504 0 0 7.376363185e-18 3.574507895e-11 0.00582271695 8.220657333 4.330215731e-06 7.494110197e-14 0.001191879732 0 0 0 0.06524724695 0 2.063551285e-23 0 2.889173316e-22 0.00102921466 24.179243 0.02803812089 0 9.307900664e-16 0 6.230388945e-13 0 1.561703514e-18 7.860274476e-05 0 504.4164845 0 0 9.205585489e-15 2.936070658e-09 0 5.897695431e-11 1.764668576e-08 1.344913692e-09 0 5.513699571 61.55115953 0 5.462792219e-11 4.693885895e-08 3.703278485e-11 0.0001177122874 1.277418654e-10 0.0001074332977 3.57008325e-19 0 0 0.1194427386 0 0 5.040910326e-05 2.833866203e-08 0.0001312129608 0 0 0 0 1.171580924e-08 0 0.003151808722 23438.32746 0 0 0 199853.5416 0 0 0.002518270023 0 0.2015862039 0 2.29953928e-15 1.894205384e-15 0 0 2068.257193 0 0 0 4.818422642e-07 0 4.408427011e-10 2758.901215 2.646546474e-06 0 17185.98018 1.789369222 0 0 0 0 0 0 0 0 0.8038884631 0 0 0 0 2.197038078e-05 5.451053996e-16 0 5.995890734e-17 0 3.091125462e-09 0 0 0 181.3698403 7.732677813e-16 0 2.717620667e-13 0.0009737738603 0 0 334763.5815 102.3004923 0 166734.786 161.8401392 802.1877578 1.955401655e-19 2.616782397e-05 0 0 0 0 0 0 0 0 0 2.686078757e-11 0.001092176323 0 0 0 0 0 0 0 0 1.0594586e-14 0 0 0 0 0.10658667 0 1.068647973 0.08657988346 0 0 0.3328026828 0 0 0 0 0 5.060625621e-14 0 23.69714175 0 42163.29477 2.933922069e-10 0 0 4.519108984e-11 0 30.30328422 0 0 4.776425956e-05 +0 1.488378242e-06 0 0 0 104681.8709 0 1.305640944e-11 0 1.608819292 0 0 0 0 0 0 2.459320119e-24 0 0 5.701225211e-11 0.01140073842 0 5.974956805e-08 2.379179949e-14 0 0 6.934035307e-10 0.001431169436 0.06410355433 0 0 0 0 0 0 0 0 0.05902762035 211115.1981 0 0 0 9.859732932e-08 0 278.8848297 0 51671.28838 0 0 0 0 0 0 0 0 1.294053369e-15 0 0 0 0 0 193367.1492 0 1.65948901e-17 3.910939905e-13 0 0 0 0 0 0.0001219984236 1806962.747 0 0 0 0.430301609 0 0.0002116764589 0 0 0.02198179275 2.769156546e-14 0 1.8574702e-16 0 0 0.0003694913053 0 5.204519825e-11 0 0 51.98418273 325.5896906 4.127879675e-08 0 0 0 0 1.842956688e-14 0 0 0.02195047945 0 3748429.897 9.545093178e-05 8.222312195e-14 0 3.247103103e-33 0 79.10931876 10775.04274 1.758551788e-07 0.002652460902 0.03846241441 5.554840683e-27 2053.84379 0 21.90950994 0 0 4.908448635e-16 6.817005185e-06 0 0 3.449324379e-15 2.5684554e-05 0 0 5.53832435e-15 52256.4916 0 0.0003988909796 0.4115606176 0 2.548120979e-15 0 9.809706072e-22 4.057954768e-09 50.08644621 0 8.584287477e-07 0 0 0 0 0 0 0 0 0 308605.0729 0.004908449548 0 0 0 0 2.964170251e-17 0 0 0.002128776164 0 0 1.142449864e-09 3.934437322e-08 0 0 0 0 0 0.0009005807964 0 0 0 0 0 0 0 0 2.201421908e-18 0 0 0 0 51.64738011 2069007.536 0 2031.863967 6.135018174e-12 0.0002970304865 7.480442887e-15 0.1992550143 0 0.0002283216681 78.47823054 2.572849198e-23 0 93531.50737 3.71575292e-09 0 0.009190483664 0 0 0 149.2109841 0 0 0 0 1299.902027 0 0 9.611018684e-13 3.85715004e-12 0 3793.014963 3.561964676 1.420227091e-07 0 0 0 119.1414882 0 0 0 6.027204095e-09 0 0 0 4.879286282e-20 0.000470389252 0.2950506169 0 0 0 0 0 0 3.393454811e-14 0 0 0.0008451149155 0 0 5.550253093e-16 825049.7867 0 0 0 0 0.01404315496 19112.30682 0.001526695493 0 0 0 0 0 43792.23841 0 387.6515562 1968060.664 0 0 0 0 0 0 0 27.48810692 0 0 0 0 0 0 0 2.712254388e-21 0 0 0 5144.9856 0 0 2.743845773e-13 2.323161531e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.366342246e-10 0 171049.0783 1.268569021e-08 1.695607078e-16 8.283395512e-10 0 0 0.01271513845 193.7602585 0 0 0 0 0 2.67931436e-19 203.8593497 1332044.485 0 0 6.365397433e-07 0 0 57.36308842 0 0 0 0 0 0 0 9.898360938e-14 0 0 0 0 7.770707904e-11 0 1.719275739e-11 0 0 0 0 0 0 0 0 1373191.791 0 0 0 4297.259051 2.313811908e-20 0 20639.06919 0 0 3.974949023e-05 0 66000.39394 0.000561682403 1.980080125e-16 0 3.257059272 995.3408015 0 0 7656.460941 0 0 4.058638685e-17 0 0 0 0.1364980168 0.270026868 0 27003.70888 2.246080373e-05 0 0 0 5.219464101e-09 0 5151.789262 0 0.02744926052 2.688086136e-10 974337.1237 0 0.001155682111 1.850869933e-08 0 6860.049911 0 0 250.1460235 0 7.558397352e-13 0 0 3.44879453 0 7.468201852e-11 18.63175615 0 6.07999849e-08 0 0.8689820257 91.08787878 2746.081852 0 0 0 0 0 0 8549.943834 0.2533929862 0 18.88483182 14653.17604 0 3.159649207e-05 1.684298998 1.676495264e-19 773760.9166 8.354517834e-21 192.4989991 0 0 9.789417903e-15 1.303870805e-11 461958.3155 1.299931856 0 0 0 1.288277366e-09 0 5.853105323 2.673871158e-09 0 3.111812733e-10 0 2.220495535e-07 0 0.01615450146 0 6.263058704e-13 418.7915925 0.01836540924 5.87447196e-25 95390.29401 0 0 2.333302614e-06 43868.82564 299517.4716 0 0 1.166876971e-21 0 1.669506475e-06 1.544076992e-07 60.59810831 0 0 6.703533352e-07 5.143666166e-09 1.608019245e-11 0 0 0 6057.482735 0 0 0 0 0 1441.942512 0 0 6857.333806 4.798868357e-11 8.455190456e-16 5.076270155e-08 114000.807 0 6.251258987e-20 0 0 0 0 62320.63142 3.88801476e-08 0 0.09021741013 2.115806851e-16 0 0 4.58243556e-18 0 0 0 0 0 0 0 0 6.124723673e-10 4.664962093e-18 0 0 0 0 4.567093464e-12 0 86323.68283 0 2.135271283e-19 2.984203972e-09 0 8.060149843e-05 5.414745973e-20 0 0.001209826388 0 0 0 0 0 0 0 1753247.912 0 0 0 0 0 115594.0137 0 112185.9815 2.265955726e-16 4.144056959e-17 0.1253625917 0 0 0 0 1.622447657e-20 0 2737150.105 0 0.00204721994 0 0 0 0 0 1.106673526 0 2.282101575e-06 65.50188252 0 0 1.906148978e-10 0 0 4.118257459e-18 0 3.050616519e-05 0 1110.792023 0 0 3.101649682e-13 0 0 0 7.43604817 0 0 0 1669817.203 0 0 0 0 0 0 0 233282.1887 0 0 126927.0693 0 3.839110733 0 5.157208111e-27 +0.009565070635 0 0 5.576286532e-07 0 0 0 0 4.654564163e-14 0 7.805937988e-08 0 0 0 0 0 0 0 1.985610786e-06 0 0 4.053305632e-15 0 247721.5412 0 1.935803596e-10 3.19135019 0.0002539853853 2.161007754e-14 0 9.752119351e-27 9.228879875e-11 0.003310729315 2.649895341e-13 1.380792776e-13 0 7.886542658e-11 0 0 0 0 0 0 0 0 1.916550869e-16 0 8.650290202e-11 7.024070556e-17 0 2.166244726e-21 2.323964206e-08 17383.78393 8.420810502e-06 0 0 0 0 0 3.061327921e-05 0 0 3.436410722e-14 0 0 0 0 5.7133737e-09 2.67209008e-17 0 0 1.096218712 0 0 0 0 0 0 0 0.00342319488 1.322654712e-14 12.03996439 0 2.729812908 0 0 0 0 0 0 0.0007893744359 0 0 0 0 0 0.01174534846 0.6344278015 7.123116766e-10 0 17.73476397 3.574606039e-19 0 0 0 7.416049917e-14 0 7.662653724e-23 0 2.701582326e-06 0 0.02307626579 667.935754 2.603423957e-09 1.236541207e-14 24534.21841 2.143427506 3.37777776e-27 0 0 51.13596697 0 6.723759453e-33 0 0 3.271044033e-19 3.361617517e-13 2.295628176 9.26164917e-06 0 0 2.761522268e-05 0 7.760996904 0 0 0 0 8.157568824e-27 0 1.017999259e-11 0 124527.2822 0 0 2.521060228e-10 1.89970306e-22 0 0.002255952333 0.003155331238 0 0 0 0.0001695738771 3.171721151e-08 0 0.0001417991834 0 0 115959.6657 0 0 0 0 1.145310176e-14 0.00110210504 0 816.5811608 0 216.572589 0 0 0 2.843360124e-16 0 9.4688051e-12 0 8.501049508e-10 5.143670779e-08 0 0 0.0003085364947 4.623604032e-08 3.471767899e-08 8675.44913 1.158818435e-05 6.787605763e-09 0 0 0 0 0 0 0 7.261835908e-19 631.6203066 0 10506.59647 0 5.943093808e-16 1.234192574 0.01231052812 0 0 1.402284488e-08 1475.189162 1.630857271e-12 4.5252217e-10 0 0 0 0.000563102799 6.980911162e-18 0 0 0 0 0 1125457.699 1.161981092e-12 0 0 0 0 230087.7452 0 0 0 78.6973264 0 1.124927209e-22 0 6.559665157e-11 6.257693699e-11 2.233861181e-14 437.5967237 1.167732917e-27 0 0 0 0 0 0 5.641453274e-17 1.721251237e-05 0 0.02884629646 0 0 421330.9184 0.0006514504682 0 0 0 0 0.02304748137 0.09578902204 0 0 0.0339320913 0 16984.66385 0 159.0545964 0 0 72810.72265 0 3.8703184e-07 4403.304339 0 0 0.0001653899871 34092.80051 0 0 8.210283065e-13 0 2.166101305e-06 0 0 0 0 1.105934183e-13 2.226385245e-09 0 0 0 0 0 0 4.408077316 0 0 0 16.01529405 0 0 0 0 +0 914732.8712 0 4.908328456e-05 2.56539565e-11 906739.0896 0 5.655537687e-09 0 0 0 1.122566707e-29 0 0 0 89523.5875 0 0 0 188940.3089 0 0 0 2.238519345e-05 0 0 0 0 0 0 0 7.78342714e-05 442422.7486 1.463457077e-12 4.763327855e-11 1.36151767e-05 9.881660253e-10 0 0.6284771826 0 0 8770.168553 0 0 0 2.974092391 7.754816573e-11 0 0 0 0 6.358678275e-11 0 3542.024899 1.380173105 0.06163683552 0 121.2378735 0 0 0 0 12.88728371 0 0 0 0 0 3970.833223 0.0003725807289 0 0 0 0 1.037634446e-07 0 3.6866623e-06 0 0 0 1.606515835e-06 0 0 0 0 0 6.200785921e-06 0.0002450508589 9.58735557e-11 0 5.457480114e-09 0 836565.0031 140.8559766 0 4422.968385 56.25831337 3.240749861e-14 0 1.687845543e-11 0.05402319495 0 0 0.04192776608 0.0002564833879 2.00652498 21808.90764 6.505897637e-07 2.245165071e-09 2.429938363e-26 6.402743746e-09 1.083143389e-14 0 0 2.01280746 0 0 0 0.002378234767 0 0 0 144512.9645 3046.818527 504663.4004 86.7748562 0 0 0 7.244994795e-16 7.087400268e-08 309681.6624 0 0 1.768892959e-07 1.791919025e-12 0 3.809364819e-09 4.370829166e-05 520914.6832 0 0 5.044265561e-20 0 0.0001969422383 1236.177188 0 2.320415714e-13 32821.34005 9.338439028e-10 76.9404806 0.06337792263 0.8084557286 3.47447511e-19 0 3.552829297e-10 7.043765967e-20 0 1.057663868e-29 5.186321584e-11 0.001255172711 9394.499626 4.166161652e-17 0 0 7.931408964e-05 4.14748354e-18 176.4946937 4.683851109e-14 0 5.559447666 0 0 0 21475.03726 0 0 2.663938198e-05 0 3.725270869e-12 0 4.812261822e-11 0 5.427375866 1.224103492e-19 4.653857772e-08 0 0 3.828461564e-18 2.367064652e-13 0 0.7328538606 0 6.652038439e-12 0 0 1.75944001e-08 0 4.855143469e-10 0 2.065812067e-08 0.0006585630647 0.00433484261 0 0 0 0 17612.92461 0 0 0 0 0 0.0004038480826 239.6885654 8471.352702 0 0 0 5.526181531e-22 0.002936044357 0 0 0 0 2.401112481e-09 4.094739418e-05 0 0 0 0 0.02559237726 0 0 0 2.368251582e-18 0 0 0 1.678698328e-09 0 2748.470378 0 0 0 0.003853612091 9.029928495e-17 0 0 0 391469.3026 13117.62929 0 0 0 0 0 1.096214585e-15 0 0 0 150220.0113 0 0 3.816869487e-07 0 0 0 0 0 0 0 0 0 0 0 45.24866497 217155.3602 0 2.466189068e-17 0 0 0 1.430495084e-15 3.029935038e-09 0 0 0 0 0 0.09955584223 0 0 3.164484286e-05 0 27405.86449 0 9.313626951e-12 4.314759691e-11 0 +0 0 4.291957883e-07 0 1.575242697e-12 0 16572.92503 1.39509598e-15 0 0 0 1.152698894e-34 0 0 0 0 0 0 0 0 0 0 5.319952656e-09 0 0 1352.851991 5.437596608e-13 6.583756581e-06 0 0 0 1.676425673e-13 0 516725.723 546.8997812 0 7.176993689 0 0 0 12819.69659 0 0 0.2125187257 0 0 0 7.398831365e-07 0 0 0 0 0 1.743109958e-10 1.893716018e-13 0 90007.34571 0 2.634471065e-14 0 3.697675324e-10 0 0.00228341008 0 0 0 0 0 0 114156.6596 0 2.570449003e-27 0 0 3.206863238e-06 0.004705888271 30.25286223 47137.96419 0 0 365.1771682 0 35.93190115 4.128926814 0.004443364539 0 1.121448129e-11 0.9147210358 366823.8384 11.76285305 3.768774813e-14 0 66.86616028 0 0 21351.72553 0 0 0.001312198492 0 1.190013766e-05 0 0 1.013469827e-14 3.507800706e-08 0 0 0 0 2.856760991e-11 0 0.5450117092 0.02716985762 0 0 0 7.250936082e-14 4.36890209e-11 0 0 0 0.009370228931 0 0 0 1.324293947e-05 44.27667402 3.324413597e-15 3.964934854e-13 0.0004153209133 281891.7956 0.6120467733 1.250621007e-06 600.5123734 2.852800315 1.115143858e-22 2.218173291e-07 0 2.312675917e-08 0 0 1.002114499e-07 2.342807736e-05 0 5.365827222e-10 0.002499092028 0 0.0002003477699 0.0002753052044 5.028291558e-16 0 0 2.720474256 0 55.93495352 0 0 0 0 4.080097241e-11 0 0 1.423754911e-10 0 83.4069932 0.3589791698 1.356755992e-16 0.003112722619 0.02038599826 428573.0323 34457.58054 0 0 0.5376696257 0.0002614756854 0 0 0 0 0 0 1.808429864e-06 3.73557062e-05 0 1.377228314e-08 1.525493861e-11 1.257755451e-07 0 0 2.006320059e-14 4.619696974e-09 5.731462938e-12 0 39939.11079 1.259308106e-09 0 0 0 0.8266507835 1.487814536e-14 0 0 3.933047832e-08 0 0.003667280451 1.895973473e-06 12211.0544 0 19873.54703 0.2526767125 0 0 0 0 0 0 0 0.02729447201 0 0.0001156254582 0 0 3.358392091e-10 2.66624541e-26 0 1.137783565e-14 0 0 0.008369706325 0 11244.53032 1.434674637e-13 0 0 2.093681356e-13 0 936.5662201 0.000158159471 0 0 0 0 0 1.45285756e-07 0 0 0 0 2.926963109 0 0.9473307825 5.012942551e-08 1.857516851e-05 0 0 0 0 0.01030161032 0 3.573689701e-10 9635.510999 0 0 0 0 0 0 0 0 31774.24153 0.001754166297 0 1.117855048e-22 0 0 0 0 0 49060.90613 0 0 0 1.322919506e-05 1.1656083e-11 0 0 2.816238642 0 0 1.313559078e-16 0 0 0 0 0 0 0 0 856594.6114 124.0044186 +2.523592685e-23 6.552025422e-05 0 0 0 1.161578139e-20 8.549853037e-09 0 0.004906833882 0 0 0 2.160838808e-10 0 0.00256557956 0 0 0 2.867009237 9.909615729e-22 0 0 0 0.6673538692 0 0 0 2512.512534 732.6586177 0 0 0.001152594942 0 0 0 0 0 1.888002501e-05 0 3.879148604e-23 0 0 3.234810336 0.002967122321 4.022763729e-07 1.035869327e-09 0 4.620756297e-25 95755.98771 0 0 76.3254791 3705.269415 0 0 0 8.097884823e-16 0 0.001154317 0 4.286538437e-14 0 0 2.262666839e-08 0 0.6507496557 3.843371012e-06 0 0 70611.72343 2.49333535e-08 115265.2856 0 0 81123.33593 0 0.01105608763 148.7404558 0 0 3.446148915e-10 33.49320911 0 5.703407341 2.911084881e-05 0 0 6521.365802 6.811726788e-13 5.139885874e-05 0 7507.947788 0 0 0.007806595647 0 0 2.655460872e-05 3.811295643e-31 1.360954921e-06 2.896072554e-13 0 1.664873572e-12 0 0 1.886266319e-17 1.300463544e-23 0.03538423916 0 2.68315295e-07 152223.3095 1.032724988e-05 6197.292745 2.676891767e-11 0 0 2.215273954e-13 72055.75335 1.70663437e-07 0 9.044244437e-07 2.665282675e-14 0 0 0 0.0004071847487 1.391285841e-10 93.35516859 4.642388727e-13 5.686086425e-10 0 5765.058572 0.0001160506428 0.0001699789085 0 0 0 0.0001254379104 3.249003624e-20 0 6.096059799e-17 0 1.959310213e-09 1.055369209e-12 461.4324598 0 1027.922204 0 1.127986758e-05 0 0 0 2.290558536e-09 1.652962157e-11 0 0 9.844171959e-08 0 226812.0583 26662.99633 0 0 4.34299706e-17 0 0 914028.3886 0.0001705416245 0 1.731555868e-23 0.00232769669 0 0 929412.2638 0 5109.775709 0 613.8748752 6.43293759e-09 8.115202791e-12 0.00218411535 1125723.911 0.3814512987 0 1.07682858e-09 0 1.142313551e-24 0 4.24532637e-15 0 0 0 0 0 5.441299414 1.351734808e-14 0 0 2.834662442e-15 0 0 0 1.182876202e-12 23007.84405 1.295809558e-08 0 0 0 12.32720998 1.889243736e-09 0.0009298558925 0 0 0 0 0 0 0 4.370241278e-14 0 0 5.13771156e-05 1.702794041e-07 177.7065035 2960.464593 0.2131491277 0 1767099.328 0 0 0 8.424194885e-06 0.000300514961 1.985209718e-12 2.478789526e-11 0 0 0 17805.78337 5.114241037e-07 0 95691.99283 0 0 7.619971488e-14 0 0 0 0 0 1.360869415e-11 1.15387153e-16 0 0 0 0 5978.652608 0 0 0 0 0 0 0 0 0 0 0.0001954877975 0.02115192001 0 0 0 0 0 0 0.01121283626 0 9.804681035e-16 0 0 0 3.414071904e-06 0 0 0 0 0 9.199881265e-07 0 5.437815204e-21 0 0 0 0 0 519.1958376 3.808473287e-06 2519317.692 305390.0397 0 41690.66457 +0 399619.7678 0 0.9417510211 0 951.4488599 0 0 2.389750021e-11 0 0 0 5.785606716e-06 0 0 0 0 0 0 4.417057524e-15 0 7.32825438e-07 0 0 0.04687578491 0 303.8016727 5.070941974 4.332844582e-25 0 0 0 7.498970524e-08 0 824.5389386 0 3.360155702e-19 0 0 0 0 0 1.076098721e-10 3.892414422e-05 0 0 2.817838258e-05 0 5.758440596e-07 6020.251638 0 0 0 3.93356938e-12 3.206365076e-06 7.147014217e-12 2.137897675e-18 0 0 0 0 0 673832.6473 0 0 0 0 17.71589791 1.584835928e-05 0 1.414854135e-25 0 4.062749994 26.07791834 1.726238788e-12 0 360527.1747 13448.81522 0 0 0 0 1.671167997e-11 6.89343702 0 0 0 7.277812895e-12 0 0.01807008001 0 0 0 0.00558013222 0 0 4328.072301 0 0 0.0002373040372 1.796916093e-07 3.477249312e-24 7.348279354e-13 0 1.110320879e-25 0 5.685301013e-15 0 0.001750578821 0 1.195300636 1.766137989e-09 0 5.089581331e-11 0 0.2875119626 0 0 4.953559246e-13 0 0 1163.808783 3637999.782 0 0 0 0 0 4.257801038e-25 0 0 2.034548855e-15 2.354075263e-10 1.310533961e-17 0 2.513309312e-27 3.149044138e-22 0.002559014859 0 5.361093599e-12 1.70259128e-14 3.104814338e-05 8.758711948e-21 0 0 1.168569636e-09 9.006161585e-05 0 0.03866435086 8.225816069e-12 0 0 5.775185807e-12 1228226.742 0 0.05080564091 5.53385401e-23 0.07730017707 0 0.0006622603167 2.053799481e-05 2.155407369e-08 0 0 2.932017435e-17 8.122702817e-13 2.088605684e-06 0 0 9.740864809e-15 2.203282083e-08 0 1.203224038e-14 105645.9798 18413.64917 248572.0682 25.51440147 0 2.750680329e-11 0 0 0 0 0 0.01939705449 0 0 0 157.1880484 0 0 0 0 0 5.024519431e-05 1.033294913e-11 0 0 0 0 1.319228461e-11 9.591139418e-19 0 5.262461015e-23 0 0 0 0 5.811619984e-08 2.784527259e-06 0 0 2.188273371e-22 3.205663355e-07 3.279126189e-22 0 0 0 0 3.094886694e-13 0 0.002847876759 0 0 0 0.0354073423 0 0 0.1795155361 5.210345618e-15 1726499.635 0 0 0 0 5.339610481e-30 0 0 0 0 0 0 0 0 0 0 0.03961264847 0 3.203595391e-06 0 0 0 0 6.626105932e-18 7.649708346e-08 0 0 0 2.651939517e-13 0 0 0 0 0 0 0.01652052724 0 4.45052207e-11 0 1294649.992 0 0 0 0 0 0 0 0 0 1.409094722 0 0 0 0 0 0 0 0 0 30.60889961 13316.83094 0 0 1.596164502e-16 0 0 0 0 0 8.878915616e-11 +9.980141134e-06 0 0 295145.6007 0 8.825163017e-09 695934.6448 0 8.315137531e-23 0 73502.78787 3.135972531e-13 0 33050.25863 0 1332.206944 0 0.1637198477 0 1.75352898e-06 0 0 657910.435 1903127.325 4.090303262e-22 0 1.719211027e-11 0 0.0001621906895 0 0 0.001296364491 0 0 0 1.669759828e-10 0 0 0.9821692325 0 3.637063754e-10 54.75707236 0 0 0 0 1.400563711e-19 0 1.455200623e-14 0 0 0 0 0 0 847.1617645 0 0 1.385578523e-07 0.01985237557 0 0 3.473915385e-19 0 2.262319855e-07 0 7.566300476e-16 0 12507.19609 0 0 0 1.255877999e-14 0 0 0 0 0 0 10158.68963 32.14694812 0 4.366045278e-13 2.504252922e-05 0 0 0 0 0.04813985379 0.0865234217 1.5653921e-08 0.000271400085 0.001346805406 0 0 15.35661518 0 0 0 51716.9612 0 0 0 0 4647.185414 0 0 1.301799534e-05 0 0 0 659480.012 1.260063878e-16 0 14038.43865 0 4.214344601e-22 2.92889635e-15 0 8.543192703 6.622446496e-21 4.614749392e-07 0.002937068385 0 2.043697566e-11 0 1.279523131e-17 5.2665039e-06 0.7874307236 0.04881484824 1.265640308e-10 0 0 9.45936402e-06 0 0 0 1.232803285e-18 2.939699628e-12 229937.1484 0 8.290898186e-05 0 0 0 1.928093012e-07 1.069245868e-08 0 2.590112425 1.903639589e-07 0.324142415 6.086037022e-08 0 57006.79275 5.670739736e-17 0.001445363296 0 0 0 0 0 6.978808217e-13 4.469821809e-11 3.797627737e-07 8.973687935e-13 0 0 0 0 0 0 1.465333599e-17 0 0 1.395617998e-08 2.406761867e-07 1262543.74 296.1751416 4.816332221e-11 7.164056575e-25 0 0 0 1.717001684e-27 0.08634565015 5.606673177e-18 5841.991438 0 0 0 0 141421.4806 3.977640269e-08 4.412068569e-10 0.5932949659 2.088417204e-08 7.098384066e-06 131744.0344 0 1862883.245 3.09060327e-19 0 0 0.0003821325863 23688.95703 0 6.959603011e-14 6.231952788e-09 0 0 0 27.32944862 0 0 0 26.07567721 3.122390983e-06 46.29798691 0 78518.78025 51.39205097 0 0 156495.7854 2.250861104e-09 0 4.500770681 0 834433.8286 0 0 192.0868092 0 2.626437425e-07 0 0 0 0 0 996.8160629 0 3.640819268e-15 8.118441637e-13 0 0.0007022814829 0 0 4.068746116 850.4333639 0 1.06023936e-11 0 0 0 0 0 0 0 0 3227190.3 0 0 0 0 3.0065114e-09 0 0 5.514041155e-16 0 5.424332198e-07 0 0 0 0 0 4.69748721e-11 0 0 1.033250636e-05 0 0 0 0 1.827244122e-05 0.3396824288 1.76293853e-23 732392.0227 0.421500394 0 0 0 1.171428428e-05 0 0 4.393324976e-10 0 3.117924135e-05 230702.6096 0 0 +0 0 0 0 2.102098065e-10 0 0 0 1.329312643e-19 0 0 0 0 0 2908718.546 0 0 0 0 3.942689115e-07 0.000887382976 0 0 0 0 0 0 0 0.5229682731 0 0 0.01033381804 2547.835339 0 0 3.35729449e-09 0 0 0 0 0 0 238799.8139 0 0 0 0 0 0 0 0 4.001108499e-07 6.5852432e-15 0 57.87691723 0 0 4.164370201e-16 0 0 0.0001001632366 639972.0519 9.157710759e-06 2952.576826 15644.75479 0 0 1.301651632e-21 0.6241743275 0 1.656430206e-05 5.572411666e-06 0 0 0.04347844456 8.291245094e-06 0 3.218750774e-14 0 0 0 8.277946365e-25 28492.01141 0 0.08878267607 0.02349560191 2.529417412e-10 7.945564332e-07 4.685327402e-05 0 4.769809935e-16 0 0 602755.8572 0.0001350672617 0 0 1394.333104 0 0 0 0 5.309936758e-18 0.0002440430117 15216.78858 1.765237741e-18 2930.986713 21.06569682 74.07840722 116113.9724 9.192975838e-18 2.953365014e-06 0 0 1.535106561e-14 0.002321816047 2.569826006e-14 0 0 0.005671580143 1.3501299e-12 0.0009152330987 315.3603736 1.593427941e-08 0 0 0 403.5146698 0 0 0 0 0.3870994146 6.887885343 0.3475335647 0 0 0 2.849995014e-09 1.132859264e-11 0.004450247123 0.1648066891 8.199034855e-19 0.6674728032 34238.69383 0 0 1.493621117e-09 0 0.003969570179 4.041471281e-05 0 1.021463036e-14 3.10171686e-13 5.596163862e-06 77695.77698 0.114606371 1.312315491e-12 0 1.389125001e-12 3.509940191e-14 0.03444707119 0 0 4.507710569e-05 0 0 0 3.466346415e-16 0.5398854361 3.926632005e-06 0 0.0004360887077 0 0.0007368432308 0 1.075359595e-05 2.730660405e-05 0 1.191313642e-10 0 2.530160971e-13 0 0.002035851311 0 0 0 7.633381956e-08 6.168992115e-10 2.515015185e-12 0 2.30578058e-07 0 0 1.446478591e-09 0 4.135963019e-16 0 0 0 0.1858913317 0.02676534251 0 0 1.073541576e-07 0 60.80741597 0 0 2.879497895e-05 0 0 659.3430849 1.2051319 0 55.44454505 0 0 3.193570336e-05 0 0.001739448239 0 0 0 0 0 1.907451274e-11 0 1.916258263e-07 0 0 0.136657244 0.09993952136 0 0 0 0 1.529039871e-11 0 1.91448677e-05 0 7.329513469e-10 0 0 0 4.284668243e-07 0 0 0 0 0 0 1.167592374e-08 0 0 2.724469268e-13 0 0 9.136843352e-16 0 0 0 1.197436811e-16 6.652961432e-21 0 0 0 0 0 792759.4543 0 0 0 0 0 4.521712144e-23 1294.110395 0 0 0 2.649680457e-29 0 2.5202549e-06 7.477370188e-08 0 0 1.243186756e-17 0 0 0 186974.5279 0 2.902125141e-05 10490.1673 0 0 43020.46039 13.19451555 0 0 +0.002520849507 0 0 0 0 0 0 3.407978724e-08 0 0 0.00061586027 4.05011833e-10 3.762244513e-12 1.112316376e-09 0 0 0 0 0 0 0.0001444225725 5.760221846e-27 0 2.071013605e-06 0 0 0 1.183738646 6.155326816e-14 0.1069370688 0 5.157157681e-12 35254.46188 0.1537829882 9.754175991e-10 0 0 0.002457629241 4.612959917e-08 0 0 0 0.1835730519 0 0 0 0 6.121521952e-09 0 0 1.718371716e-09 2.089889827 1.714494718e-16 0 0.0001694713153 0 0 0 0 0 3.152453186e-16 0 0 25.28070181 0 0 90108.4999 0 0 0 9.172846331e-12 0 0 0 0 0 1.186648881e-09 15941.58395 1.545315794e-12 100193.9592 710552.7989 0 199408.508 683518.8107 81585.8838 7737.31581 7.091177842e-05 0 0 0 0.0113648757 9.405394926e-05 6.871485506e-14 1.533247234e-07 0 1.357340098e-16 0 0 0 0 0 1.413936156e-12 0 0 3140.711556 6.539838955e-15 0 0 0 1.29329268e-10 2.390697485e-26 1.443595273e-06 8.193327609e-07 5.404476333e-16 0.0001056682371 0 0 0.004536569683 4.545675529e-08 0 0 0 0 3.353622161e-09 6.535463969 3.525288808e-21 7.3037871e-09 2.97946758e-08 7.058110519e-05 29423.95966 2.472393953 0 4.138408407e-08 2.195285298e-06 1.33127007e-06 0.2289471875 1.450588095e-19 5.544231435e-06 3.31499368e-14 1.464666853e-08 0 3.343646072e-11 1.715433037e-12 0.002036618217 0 0 154117.2258 0.001196125627 1.282135925e-22 9.289374981e-19 0 0.001611734123 0 0 0 0 0 6.823633916e-26 0 1.178819274e-17 6.183074496e-11 12113.25242 3.316109675e-13 87237.91997 0 0 0 0 1.428505638e-09 0 0 1.950278674e-06 0.0001326379742 0.001743976558 0 0 0 3.173703322e-29 0 4.027785804e-07 0 199723.5349 5.366207539e-08 0.1443402648 0 0 0 259.3390562 74925.455 742.8329872 0 0 0 0 1.231246776e-07 1.150689922e-08 0 5.566300315e-10 0 56166.04201 3.230548872e-05 5.301852702 0 0.02525943642 0 0 0 0 0 2.027971693e-09 0 0 553854.9119 1.169037476e-16 1.050131593e-14 5.872367178e-15 0 0 0 0 0 1897.907362 0 1.017041061e-05 2.193752099e-09 83663.08894 0 0 1.560039746e-08 0 18.38577116 3.672076105e-10 5.779941389e-14 0 0 0 9.905703978e-15 55.09772018 0 0 1.420206415e-11 4.194448074e-18 0 0 0 0.007783307643 1.720595318 0 383658.6048 0 0 0 0 0 0 5765.976808 9.727603584e-11 609567.4102 0 0 0 0 0 26207.37972 51.23556608 0 679.7930014 1.304971574e-16 0 0 0 0 0.02166679111 7.580436044e-14 0 2759.525551 3379.277281 0 0 0 0 0 0 12.66142162 0.000379822069 0 0 0 0 160745.3275 0 800.8724686 0 0 0 0 0 0.5840540474 0 0.008412786044 +4.957490582e-19 0 0 0 5.917513185e-12 8.855298829e-13 0 0 0 7.492824052e-26 0 0 8.359364099e-22 0 0 0.01114793421 3.565759591e-15 0 0 74684.00116 0 0 1000.287101 3.194369022e-25 6782.91574 0 0 7.789534908e-19 2.743868103e-12 0 0 0 0 14.05122667 0.2032862329 0 1.015005435e-12 0 0 0 4.973653115e-09 34.90965812 0 0 0 0 0 3.663164089e-13 0 0 425.2645507 0 659.0724605 0 814297.6481 0 0 0 0 559725.226 4.585428432e-16 0 0 0 0 1.073063249e-29 0 18246.01636 7.694340214e-08 0 0 0.0007590851587 4618.502372 0 0 429674.9859 2.725954214 7.070020442 0 0 0 0.002913419678 9.09563905e-16 0 1.472380427e-13 217.8135773 7.640459733e-16 1.710671281e-05 0 0 0.0004653135907 38.21877392 2.756390183e-13 0 0 0 1.008935619e-05 1.592076103e-05 1146.521255 5.882595355e-14 0 4.842960963e-08 0 2.907552945e-08 3.377045536e-13 2.663869953e-10 0 0 4.824994738e-11 0 0 0 0 0 0 7.234292395e-09 0 1.685000585e-08 0 0 2.435603441e-14 0 0 0 0 0 0 0 22682.56742 3.755600387e-06 0 0 0 0.03140530805 0.000109111834 0.7695906778 200796.7189 2.962063961e-09 0 6069.631854 0 67.58826427 0 0 0 1.618380601e-05 15.0405473 8.214452877e-10 0 0 0 2.952775052e-09 0 6.896743515e-10 9.69925784e-13 7.088562447e-10 0.0009672332676 12.40647782 0 0.06202417079 9.379502668e-23 216.1425759 8.064692182e-13 9.17470352e-09 5.708932527e-17 1.098831576e-23 1491171.304 9.227590817e-25 0 1268648.897 0 7.891720359e-06 4.790046874 211560.1967 0 3.685547976e-25 0 6.097228596e-06 1.415437871e-08 5.198872267 434267.3208 1053.388433 0 3.293398772e-10 4.516562741e-09 0 0 1.834164619 0 4.845110952e-10 0 0 1.285914631e-24 0 1.377584347e-15 2.62747279e-12 0.05098848321 0 5.945985036e-12 0.5671721688 22939.34423 107436.3386 0 0 1.145196657 0 6.090090424e-23 8.759527091e-11 0 0 0 0 2.105410118e-31 0 3.853152448e-08 1.148212531e-07 1.368564867e-14 0 2.217327618e-12 0 0 0 0 0 2.693305438e-13 7.616267358e-10 0 2.863130088e-06 0 0 9.486521885e-07 45521.67203 0 0 3.092936094e-08 0 0 1147.165146 0 2.772222161e-11 0 0 2721.305985 0 0 0 0 0.0003850535609 106.3600194 0 0 0 0 0 0 0 9.994241408e-22 2.730487752e-10 1300078.64 0 0 0 0 0 0.156515403 9.997670733e-26 9.609850483e-12 0 0 0 5.048084284e-18 1.99786352e-14 2.34814391e-25 0 0 0 0 0 0 0 0 0 0 9.725359372e-08 5.567521571e-32 290.3940181 0.0004036634464 0 0 0 0 0 0 0 4.379506155e-12 0 1.681137715e-15 0 0.5417297225 0 +0 0 42558.35766 0 0 4.6446185e-06 3.772362103e-16 0 0 0 0 0 760.413732 0 0 0 1.241164894e-16 8.287773841e-08 3.203692828e-14 1.055810553e-19 0 0 0 0 1.979858675e-16 0 316.1912888 0 17815.37394 1.079703794e-05 0 0 0 0 1.914450465e-05 1.801879476e-09 0 0 9.357160367e-19 2754.433096 0 5.59365611e-06 0 0 0 4.064585367e-14 0 5.318534062e-09 0 275.3133852 0 0 0 7.78259227e-06 0 0 1.081769547e-10 9793.71452 1.142396623e-11 5.787814881e-22 26.46255276 3.648582383e-10 1.776629412e-18 0 0 0 0 0 0 0 3064.982409 1.547650512e-16 0 0 0 27352.78425 0 0.000131787761 0 1.897937513 0 0 0.0001050874668 0 0 0.08739301508 0.0003169355161 0 1936111.773 0 0 5.810488272e-07 6.79483191e-23 0 1.527390292e-07 0.007189507917 4.299860978e-07 0 1.419817951e-13 26574.36704 1.253554155e-05 0 7.35589649e-19 126.6579262 2590.057237 1.344912355e-11 553.9564886 1.460839179e-13 1.066967028e-25 8.308486921e-12 1.084096231 0 0 0 9.531496714e-06 23224.90035 0 0 6.243862853e-11 3.314418402e-11 61854.52721 0 0 4.070408321e-09 0 0 4.876556511e-17 8.767003001e-11 5.455188609e-06 0.004247127869 0 0 9.313468083e-13 5.166530865e-11 6.469550114e-30 5.782840529 0 0 0 160.6619109 0.00244331245 0 0 0.9331639029 0 1740375.155 3.263117271e-10 0.6305382317 4.101205062e-11 1.572404089e-11 0 1500585.646 0 5.058495817e-09 0 6.495778045 1.706027933e-06 7.149460309e-10 29491.96444 62.39276944 3.922410654e-07 1388.187547 0.0013600266 0 0.1087418224 0 8.873409163e-12 13.01684643 0 0 1.721543059e-10 4.978348505e-09 0 0 0 0 0 0 0 1.321461933e-21 0 7.186399682e-12 0 1.312859495e-14 0 2.749217072e-07 6.945654728e-13 3.849408835e-16 0.009552568255 0 2793.357416 6.47655743e-14 59200.54573 8.025496745e-08 4.679406604e-08 5.352307818e-05 2.243607354e-07 225.0697448 0 0 0 3.642488322e-14 4.636476316 0 5.428131917e-06 1.56249095e-13 0 2.32295552e-21 0 0 0 0 0 1861.598061 0 0 0 0 0 0 29.5784793 0 8.25174182e-14 0 0 0 0 0 0 4.867901953e-07 0 0 0 0 0 1.173770923e-05 3.065862211e-10 60.18848733 2047164.383 0 0 0 0 0 0 0 0.0001959260606 0 0 0 0 0 0 5.887718427e-12 0 7.793051696e-12 0 0.006395944164 0 0 0 0 6.356438494e-06 1.412247505e-05 5.716858877e-36 0 0 2365038.496 0 1.023385472e-06 0 5.340304474e-07 0.0366338286 0 0.001890401095 0.01625452127 0 0 0 0 0 0 0 0 0 0 0.5754726837 1.564448571e-14 0 0 0 0 0.004486737561 0 1056.528576 0 0 0 9.664517075e-06 0 +0 0 0 0 0 0.04823552507 0 0 0.6972036757 0 8.083860495e-09 0 0 0 0 0 0 7.240283909e-21 0 0 2651802.266 0 0 0 0 3.184211263e-17 0 0 0 0 48.04730293 1.788378802e-10 0 4.67964955e-17 0 0 0 1.971835488e-06 6.63043423e-10 1.379373338e-07 0 0 285121.4707 0.003028324864 0 4551.586867 0 0.04849789776 0 0 1.84921885e-06 2.593943908e-08 0 0 3.381914305e-11 0 0 2.966355695e-21 2893505.188 0 0 0 0 0 1.993562865e-06 9.947958565e-13 142.1336046 1808.529339 4.588462453e-13 1.595848662e-10 9.221093457 0 3104735.043 0 0 0 0 0 0 0 0 2.59960702e-07 0 0 134.0012235 5.034302807e-13 0 0 31609.0299 1.162618308e-10 4.567092706e-13 2.4741734e-14 0 0 1.173446997e-14 13.66096541 0 1.801184582e-12 1.967683822e-14 0 0 0 0 0 0.0001410186511 0.002712897326 0 0 0.06228669022 0 121669.0436 0.06021781378 0 0 0.3709157017 0 0 0 0 0.0002333065457 1346.091624 0 0 130.2546122 1.012696775e-33 0 0 5.939898343e-10 4.268695871e-10 0 8.587500692e-18 0 0 5.482287955e-06 866.0831272 0 2.019985119e-06 1.070175281e-12 2.398825229e-27 0 0 0 0.0009160323057 7.541891843e-18 0 1.275745434e-05 4.052655718e-09 0 0 4.339503582e-06 3.932836645e-13 0 6.58113921e-16 0 1.707436204e-05 1.151447112e-13 0 2.033754897e-11 0 0 2.547371674e-08 0 0 274633.1114 4.584303832e-14 6.656179887e-13 1.019676453e-10 0 0 0 0 8.821101672e-19 1.819128205e-06 1.149550388e-10 5563.439791 0.002414943658 0 1.157088701e-19 0 0 1.8211572 0 684352.5946 6.371409225 311.7011912 0.03326186861 2345.486587 0 0 1.133670704e-30 0 0 3.136183618e-08 1.727143196e-06 726.4647074 0 21.26116481 0.0001081267492 0 0 0 0 0 0 6006.409333 0.0001034100448 2.423370309e-14 0 0 0 401781.7272 0 0 4.45662194e-07 2.571915775e-10 2.681071671e-14 0 0 0 0 0 0 0 0 0 0 2.038668383e-11 1.14252172e-17 1.215890256e-06 7.949266877e-26 0 0 0 0 0 0.0001503452474 0 0 0 2.58275476e-26 0 7.270462148e-07 0 0 1.745794904e-20 1.67289836e-08 4018.979793 0 0 17.69714721 0 0 0 0 0 0 2259692.692 0 5.348369331e-08 0 0 1.628007634e-25 0 0 0 1.710748116e-05 0 0 0 4.744681933e-10 4.019825769e-44 0 5.099686581e-20 0 0 298.7022475 0.05119578636 0 0 0 0.0013445709 8687.017069 0 1012389.478 5.080137635e-23 0 0 0 0 0 0 0 0 0 2.87713227e-05 0 0 0 0 0 +0 0 0 1.063281998e-05 1969.131657 0 0 1.560395214e-09 0 8.472571011e-10 0 0 8.666786217e-06 0 0 1.89397109e-11 0 0 0 165827.1098 0 0 0 0 0 0 0 0 0.001681599068 0 6.448990245e-09 1.102676688e-06 1.856176213e-23 0 7.490764951e-10 0 0 9.787315845e-16 0 0 0 0 0 0 0 0 0 5.637394151e-14 0 92484.8289 0 0 5.337110714e-17 0 0 0 2.552401637e-12 0 0 0 0 0 0 0 1.510586466e-06 3.833537255e-14 0 0 0.06598579178 0 129668.2531 0 9.658874488e-05 0 0 0 0 4600.526326 5.559546577e-14 0 0 0 0 0 4.459688276e-15 2.786065703e-06 9.962842843e-14 165743.7947 0 0 6.883702219e-13 2.726068685e-07 0.1718655174 0 0 246636.5391 3.442855994e-09 2.483081498e-13 0.003013151846 0 1.20158794e-10 0 0 117.7603951 0 0 0 0.9000631994 0 2.61020194e-11 1.33136035e-09 2.908474251e-08 0 0 0.05447924304 1.001256909e-14 0 0 1.702042135e-05 3132.300929 4.491485893e-24 0 0 0 182.0942617 0 0 1.560257683e-11 3.149908632e-16 0 3.747415131e-07 0 688.8265958 2.91018282e-10 0.1170643284 1.320055444e-16 530.9356939 0.2067804449 0.02259937852 8850.332044 80.71127693 0 0 0 655525.6206 0 47.33586724 0 0 1.950680006e-05 0 0 0.002658163784 0 6196.10293 16089.52144 10142.14674 0 0.008825641361 8.723866583e-13 0 0 317280.5828 3.739023163e-08 0 7.477753805 0.0909255141 1.397529633e-10 1.967348154e-15 1.245465704e-06 0 0 0 0 0 1.263968782e-20 0 14509.25909 2.852092052e-10 14759.49444 3457.8094 0.6149762533 126.8677244 0 0 0 0 0.06709836741 0 0 0 4.320048382e-20 0 3.743109349e-09 1.621860318e-08 0 1.986227995e-07 6.33747708e-08 1056.934748 0.0002488816239 0 5.044978978e-05 0 0 0 77.46386663 0 6.025463093e-13 0.0001074188327 567290.9458 0 0 0 2.772210356e-15 0 0 0 2.114079303e-12 121861.5799 0 0.1009132005 0 0 0 0 0 0.01335484748 0 0 0 1.041834969e-08 0 54790.37233 817910.1227 0 0.02515404468 0 0 0 1.028110241e-06 0 1345346.463 0 66507.8814 125388.9553 0 2.016813318e-11 0 3.213790757e-10 3.013258118e-11 49094.53579 4.904427767e-10 0 0 0 0 0 0 0.1556757165 0 0 0 0 0 99466.65866 1.982641077e-17 0.0264529531 0 0 0 0 0 0 0 0.0004100331517 1389.049987 0 782200.3103 0 0 9.114089892e-11 0 0 0 0 0 0.001409096035 0 0 0 0 0 0.001404810921 0 0 0 0 3698119.867 0 0 +1.294991401e-16 0 0 0.0008339893628 4.824463352e-09 0 0 0 0 0 1.626255469e-14 0 8.469977509e-06 0 6.113916497 0 0.1071601637 3.59664453e-07 0 0 0.00369552457 1.528624963e-06 18.98234802 0 2.702411502e-17 0 0 0 819752.9212 3.638194152e-16 0 2.215621591e-16 6.342954478e-08 0.01396184431 0 0 8.361395873e-11 0.1121415399 0 0 0 0 0 0 0 1876181.274 0 1.158328557e-12 8.99408983e-08 0.01111316081 0 0 0 1.539989583e-06 0 0 0 0 3.833899989e-10 0 3.339254879e-08 1.160711149e-13 0 0 1.112040236 0 0 0 0 0 0 0 989724.981 5.788216849e-11 73.25754417 798.8592757 0 0 4.161233881e-14 4.880819344e-30 0 0.007228890538 0 0 0 3.2087845e-14 7.434979188e-24 0 0 0 0 22339.5103 0 0 2.905587981e-15 4.292690696e-12 0.004269896828 0 7.479162898e-12 3.642025157e-06 0 0 0 0.001712243531 2.597163401e-08 1.540655319e-13 0 0 170977.5686 0 3.044966041e-19 9.530722827 4428.047855 0 0.02761341889 1.359239517e-07 0 0 3.467041411e-25 4.832546937e-12 8.051782724e-06 0 0 4.04714498e-07 979567.0975 0 0 0 0 0 0 0 541711.8803 0 3.898237959e-07 1.090626932e-07 0 0 1.352488428 0.00142116127 0 0.05155740769 0 4481.215454 0.004011260998 546.1340335 0 1.685735161e-12 0 16.49853284 0 0 2.213520522e-07 0 0 88531.04718 4.841799942e-09 5.854501218e-14 0 0 1214622.489 0 4.538396159e-10 2.948485493e-05 5.559801762e-07 0 4.184033017e-15 8.541999603e-22 2.22988229e-26 1.612157974e-20 0 0 0.0005490391331 0 0.0002038330707 0 0.0002112654643 45864.00623 0 0 0 0 0 0.003800819173 206380.051 4.827097358e-15 0 0 0 552.6034888 0 1816250.947 0 0.610352057 11528.0395 0 0 0 0 0 0 0 0 111640.8134 2.902329631e-11 0 4.599214591e-17 9.913958117e-35 3.939611518e-18 5.940139961e-24 1.183423839 0 0 3.010789041e-15 0 0 0 0 0 0 3.284393109e-14 0 2.686822768e-06 0 0 14932.57488 1.817503416e-29 2808.601992 3.432230816e-27 0 0 0 0 2.132161852e-15 1.127733393e-10 0 0 3.526902541 0.21895692 221520.8331 0 0 0 0.1849392078 59.18007555 0 0 0 0 0 0 0 0 78783.07884 0 0 0 1.054556114e-09 0 0 5760.281776 4.714547856e-17 0 0.0204305716 0 0 0 0 0 4.787655953e-13 4206.361649 0 0.002249076775 0 1.672182894e-22 0 0 0 6.345267925 1.006555987e-06 0 0 0.002390010522 369686.94 0 0 0 0 0 5.250940208e-17 2.565335968e-13 2.910288391e-07 0 175.5624897 0 3865.916912 9935.022221 0 0 0.003716609906 +3.219246614e-20 0 0 0 1.954913338e-09 0 0 0 0 0 0 0 0 6.63057833e-06 6.027352256e-05 0 9.54194602e-15 0 0 0 0 0 0 4.42786844e-15 0 0 0 0 0 0 0 0 0 0 2.134240414e-11 0 0 0 0 177363.4064 0 1.466392068e-13 0 5.031892896e-13 163231.8587 0 0 0 1.992777748e-11 0.0001472302928 0 0 7.619777925e-10 0.00432660161 0 0 0 0 0 0 0 0 2265.031314 0.04617270499 0 0 0 0 0.02780235065 139.0516159 8222.600893 1.089279526e-15 0.08789674662 0 2.211599604e-08 0 0 0 0 0.3118861542 0.06385993263 0 0.0003958527956 0 0 0 15.77153845 4.677030344e-13 3.807209223 0 0 0 1.815023501e-08 1.442995079e-24 2.003288652e-22 1163409.038 0.04656156175 88.49956935 0 0.0001339133269 2.548034522e-08 2.222964001e-23 0 0 7.550930038e-07 0 2.096138932e-19 218739.5223 4.583773322e-19 0 0 2.077470764e-12 0 0 0 9.664686696e-08 0 0 4.046468581e-09 0 0.005306835462 0 0 0 0 556466.0774 0 42359.88549 0 0 0 28.47558903 0.04330105171 0.002111258912 0 4.231782624 5.147496503e-07 0.0001563068904 1.013405305e-19 0 5.975532338e-09 0 2925545.366 7.79080273e-12 0 0 0 0 0 6254.812564 0 0 0 0 15228.30406 174067.9778 17.14628103 0 0 165194.7038 0 0 1.415073358e-06 0 307705.9928 0.00213483636 2.064879559e-09 0 0 4133296.81 0 0 6.100696938e-12 0 0 2071838.409 0 1.344871354e-28 5789.491221 2.173728269e-13 0.001317554776 9.650737114e-11 601.8543828 2.289778256e-06 0 1168432.729 0 8.95965261e-07 0 0 3.004446847e-05 0.01464792553 30707.92331 0 0.06304172528 1.07098015e-09 0 1278.787914 4.428648857e-17 3.250025139e-09 0 0 0 5.694199364e-10 0 2044.040548 0 32.80441684 0 1.760880709e-09 0 3.435855375e-06 66.46920448 1.237476166e-05 2049.790597 0.0002600922643 0.0305793069 0 87456.50187 0 0.001187579984 0 0 12988.33116 0 0 0 0 4623.456442 0 1.757481726e-12 0 0 0 0 5.682591276e-12 1.486998453e-09 0 1.973328337e-23 0 0 0 8.431734485e-08 0 4364663.305 7.4723529e-17 0 1.784129016e-08 74.84751844 638.8336077 0 0 1582.810464 0 0 0 819.7265168 0 0 0 0 0 0.02360142237 10.10452574 0 0 2.640867308e-09 10578.97736 0 0 0 0 6.887914828e-14 0 0 0.0005514335538 2534.351786 0 426306.5265 1.317891966e-11 0 0 0 0 7.244438564e-13 1.344481218e-21 0 3.30852162e-09 0 7.709041128e-18 0 1.706328009e-06 0 0.0012315773 0.01205044878 0 12.19371227 0 0 0 +3.397444406e-10 0.001183921032 0 0 2.442454984e-10 0 6.044365965e-19 5.897147589e-06 0 5.189858495e-12 7.058860203e-18 0 0 0.6208559734 527690.4446 2.270324718e-16 2077.717448 2.37400922e-06 604068.8797 0 0 0 0 0 0 0 37.92665678 1.673375017e-06 0 5.082506093e-16 0 0 0 0 0.3294942682 0 0 0 0 0 7657.372911 0 335229.9216 0 0 0.0001295982104 0 0 0 7.052290702e-07 1288.317467 1121699.085 0 0 0 0.003676257407 1.022923144e-11 6.565384224e-07 0 0 0 5.732275441e-27 0 6.425073641e-08 0 0 8.949795975 0 0 0 0 1.069639917e-16 0 0.0002112993215 0 4028.71754 0 0 1.805173258 2.914417201e-09 2.651763506e-11 0 0 3.455747491e-20 180196.5712 9.450617903e-13 7.06026246e-11 0 0 0.0001598333823 1.178410097e-05 6.364302421e-13 0 1.930650388e-05 1.42218078e-32 0 0 1396.569339 0 2148.676991 0 0 0 0 0 0.004192942887 5631.51732 0 72.21288564 0 0 8.244708405e-19 1.523295308 0.004790235617 1062.461084 1.831208909e-11 917.6586254 0 0 0 0 964440.084 137.53716 0 3.28404649e-11 0 2.874705876e-09 1978.438657 1.025735401e-22 0 2.146903858e-13 3.443622587e-05 0 0 47.24301377 3.22227318e-10 0.03064557362 0 0 0 0 5.771128731 8.448541433e-09 0 0 0 0.0003537917986 4.315959989e-09 0 32297.59171 0 1.89480338e-14 1.132248287e-07 4400.725715 4.927686469e-21 0 26.97043735 6.896791961e-08 0 27.78382974 0.0008994872209 2.034894704e-06 0 9.03056758e-05 0.0007347411376 24562.42745 1.270151228e-11 7.377223462e-15 0 7.11693488 0 0.00995410493 0.003290240326 3.926228758e-11 7.738165434e-27 2.456139814e-08 3.238630666 4.122258575e-14 8.944162122e-19 1.506971033e-18 20219.34901 0 164.9224362 3021.773587 8.048836014e-15 39079.9905 4.516734174e-13 0 1.91362464 0 0 0 1.62300834e-29 0.0001027349896 0 0 1.087562603e-18 0 0 0 0 0 0.09684243089 4.205920604e-12 1.661007479e-13 0.1855677408 0 0 1.968794803e-23 0 2.966963538e-16 0 1.321085758e-12 7.44422442e-09 11.64283704 0 95287.61919 0 0 5.275548802e-06 0 3.305031082e-08 10529.67057 0 0 0 0 2.473591466e-06 0 2130595.677 0 7.893890591e-21 0.04553039279 0 0 0 3.203455176e-19 0 680352.5343 0 0 0 0 9.211603231e-12 7.531651759e-19 1.30734057e-07 0 0 0 0.002865494623 0 1.431472204e-16 0.07239511228 0 0 0 0 6.107580881e-12 1.505406382e-16 0 0 0 0 0.3988502519 0 6.150844527e-05 0.02789353294 0.3728248468 0 0 0.0003523636144 0 0 0 0.000277157113 7.183291443 0 0 0 0 5.791187691e-11 0 0 0 0 0 0 1.222401849e-17 0 708478.6534 0 0 0 0 0 0 0 0 0 0 +0 0 7.061205234e-06 0 0 0 0 0 0.001305791969 0.03860194776 8.089219531e-08 2.297683505e-17 2.366388746e-13 8.345478271e-11 0 0 0 80570.58253 0 0 0 0 1.543762788e-25 0 0 0 0 0 0.0002447750342 0 0 45867.09439 0 0 2.84769405e-18 1.933693575e-13 0 0 0 5.310004076e-06 0 0 0 0 0 0 0 0 0 0 0 0 8.646743487e-09 0 0 0 0 0 0 7634.247672 0 0 1.157606362e-06 7.628771271 0 0 0 0 4.28714048e-10 0.1598060113 0 0 577756.8584 0 0 0 0 4.955907451e-06 4.255531054e-26 0 72.53101179 0 0 4.609378513e-15 0 3.600427828e-16 0.0003738641058 0 8.689049656e-13 0.1180817892 0 0 7.913387868e-12 0 4.312487918e-08 0 0 0 0 0 4.73839193e-13 0 1.683156309e-10 83.74993856 1745.610307 0 5.556347628e-11 0 0 2.18964997e-14 32169.85546 0.01710651112 6.225502191e-07 5.371049759e-13 0 5.469855584e-09 0 2.637568779e-13 8.950965839e-09 0 0 0 0 0 289649.6531 0 5.83559802e-05 4.905652194e-11 0 0 0 9.050825688e-09 1.109243941e-07 0.001128055795 34.45479409 1.496460364e-17 441269.6762 7.239819361e-07 6.302774945e-27 0 0 0 0 0 0 744207.7857 0 0 0 0 0 0 4.490799145 1.79131939e-22 0.01472513518 0 0 0 0.1286252291 184.5927395 99.07936363 551931.889 1.023226252e-08 0 0 0 0 25197.00809 1176411.59 0 0.0004230885019 0 0 5.494782802e-17 0 1.604800269e-05 1.278860502e-11 2.835200424e-06 8.20532229e-09 1.407997751e-10 24762.80706 2.913126081e-16 0 0 0 0 0 3.196651417e-12 1.481748947e-12 8.015137346e-19 3.779283645e-15 7847.049625 0 0 4.747249142e-06 0 0 0 0 0.1696093077 2.078675833 4.584936152e-06 11.98889414 1.431847916e-09 0 2.928343972 0 0 0 0 0 0 0 0 0 0 0.001591754391 1.403539605e-10 5.354414146e-05 0.0003969990694 0 0 0 0 0 29089.37044 0.4560935351 0.7416254129 0 0 1.086555101e-05 0 0 0 4.730967972e-07 0 0 0 1.959571771e-19 0 0 0 0 0 174277.7863 0 0 0 0 0.6753009262 0 0 0 2.131540632 9.182177149e-05 3.685998442e-20 0 0 1.873158805e-13 6.364428913e-24 5.411368968e-15 0 0 0 0 0 0 0 0 0 0 0.08967324735 0.003149298203 0 0.06138817137 333033.4898 0 0 1856075.274 0.004203256373 0.005274629919 0 0 0 0 2.98336197e-18 0 1.631599633e-14 0.03712842647 3425.331956 0 0 3002.482155 9.55675169e-27 0 0 2.776372559e-11 0 0 0 +0 0 0 0 60.3723185 0.02749457762 2.046741537e-14 0 0.04417947305 0 2.467976215e-20 0 0 0 0 0 0.003688121102 0 0 415897.2932 0 7.762090883e-12 7.011273556e-24 1.798852357e-18 0 0 0.004717017344 3.955923217e-05 1.196947867 5.223963415e-06 0 1.543850946e-09 0 3.749330774e-12 0 0 1.335226744e-08 0 1.926840578e-07 1578.714868 0.004687459022 0 0.0951731163 0 0 7.581136061e-10 0 2.50764246e-12 0 0 47801.32053 0 0 0 4.594288399e-12 0 0 3.968110082e-18 0 3.454946189e-29 2.003980223 0 13.20341362 4592293.16 0.001394709754 0 9.416209176e-14 0 18.52949267 412.7621846 0 0 0 380.0892548 2.551496145e-13 0 0 0.003499392905 10131.97091 0 0 2812975.762 0 0 1.455739705e-11 24.95802508 1.571979868e-11 2.468490885e-14 1.101599928e-10 0 5357.913668 376043.4511 1.591944457e-05 0 0 11710.70858 3.093919731e-07 0 13003.26816 2.0259583e-14 0 1.465337556e-12 702.0127963 0 2.514782934e-06 388.2715658 3.341267245e-09 1.612366567 4.415668821e-09 0 1.127686665e-06 172014.6113 0 0 0 0 0 0 0 0 0 0 0 1.465650726e-08 1.224032159e-14 10.60654045 0 0 26.83505082 0 1.836755166e-05 0 1.453992214 8.597009534e-28 1.89152074e-11 752413.9962 57144.7615 1.717889748e-10 0 0 0 0 0 0 7.469988361e-10 0 0 0 0 1.728503907e-19 0 0 2.883684777e-14 0 0 0 1.307942207e-05 0 0 0 0 917367.4188 0 3.420205686 0 3.246936666e-05 0 2.433230392e-11 0 1203670.858 0 0 0 0 0 3.32202453e-16 5.578234346e-07 2.449949596 0 1.03614765e-20 0 0 6.230096736e-14 0 367473.068 4.173998401e-15 0 136041.9085 0 0 0 0 5.069831933e-10 6.955772388e-07 1.165143055e-10 0 0 2.981769441e-13 0 0 2.475028405e-16 0 0 5.887598037e-12 0 0 933183.8341 0.02420534533 0.07173991464 604060.1885 8.579176925e-08 299486.014 0 0 37.571087 250.8480658 1.823442281e-12 0 0 81.92159074 0 0 0 0 1.522119004e-06 0 0.03931306931 0 8.433389178e-09 0 0 1.066250748e-05 5.112616066e-22 0 0 0 3.629321966 6.059058433e-09 2.016873728e-07 5.221672488e-27 0 5.1080192e-10 2.753511216e-10 0 0 35351.5512 8591.177799 0 0 0 0 2127599.843 1.302966427e-09 0 0.01575017029 0 1.836605674e-08 0 655988.0303 0 0 0 2.3814349e-07 0 1.059689475e-16 3.208083599e-05 20.34873024 1.052901958e-11 1.500949298e-07 0.6223218853 0 0 0 0 0 0 0.03722095014 0 0 0 0 0 0 0 0.02982922642 0 0 1.18412457e-06 0 0 0 1.547213237e-06 0 0 0 2.210002452e-08 0 0.0002406216194 0 0 +9.329684048 0 32644.4167 0 0 0 601.0082897 36178.90064 0 0 0.0004856185659 0 0 0 0 0 0 0 0 11.86072768 0 0 4.666871256e-16 2415759.052 0 0 0 0 0 0 0 0 0 0 78.10428115 0 0 341192.5921 1.229405136 0 0 1.009492203e-15 0 0 0 6.310530064e-09 0 0 0 0 0 0 0 0.009939121858 0 0 0 0.0003123196529 0 0 102.6703904 0 0.0001778916939 0 1.686212711e-07 0 0 2484177.085 207762.2077 0 7.070554291e-13 0 0 0 97.87361162 0 9.442443789e-11 0 4.350329092e-12 0 1508068.725 0 0 0 4.678366024e-09 2.176137343e-11 0 212073.7723 0 0 0 4.863044675e-18 0.005473895429 228.7955006 8.978456367e-12 0 0 0 0.3919958915 0 0 0 0 0.990919281 0.0365933601 41348.83575 4.227964919e-10 0 232076.4994 0 0 0 0.02127583487 5.334284083e-15 1.478022503e-11 0 0 0 7.432131737e-08 0 0 0 43.42243779 3.498873564e-07 0 2.996913416e-06 6.136489601e-11 0 0 0 0 1.919198442e-06 0 6.970338159e-10 200.3274813 0.2719493108 2.949079635e-08 4.700199372e-09 0 4.35973539e-07 0 4.640045679e-12 0 0 0 0 5.144446023e-24 49921.05591 0 0 0 9.73284309e-13 0.3374208064 0 0.9227937726 131677.3961 0 8.282923647e-10 0 0 1.918705968e-11 2513434.475 3.025173174e-22 0 0 0.009554672287 0 0 4.09728896e-05 1.998906217e-14 0 0.003387122396 0 0 0 0 0 0 0 5.094818282 0 1.117669745e-06 0.003216784526 0 7.485654906e-08 317038.9328 0.0001188311257 0 1.555189004e-12 0 0 1.827047417 0 0 0 0 1.392825499e-06 0 0 150449.4925 0 69.78021224 1.529893087e-11 0 0 0.002817271676 14875.19574 0 3.527095508e-17 106383.6926 6.874502256e-12 0.1558114751 0 0.0003453620009 0 0.0001735651277 0 0.6197367867 0 0.0002067817815 9.079919639e-26 0 0 0.00714952347 0 8.96344348e-15 0 0 1.937830707e-25 1.133923117 0 0 0 5.712809757e-14 0 0 0 0 0 0 2169.524918 1.158071286e-05 0 0 1.045810043e-13 0 0 2.969443023e-14 0 1139955.076 3.556349201e-11 0 0 0 0 0 1.542194204e-21 0 5.325483923e-11 0 0 0 14.75016187 4.323900226e-09 5.322852599e-13 7.597858802e-13 0 0 0 1.389755922e-09 0 0 0 0 19333.52085 0 0 0 0 0 0 0 1375244.625 0 0 2.770592405e-15 0 0 0 2.079890421e-16 2.075275545e-08 0 0 0.009514492188 0 0 265.1622719 0 0 0 +0 0 3.898819504e-05 1.301329321e-05 0 1.564687455e-17 0 0 0 0.03089469706 0.0001102836782 0 0 9.731553538e-13 4.746693469e-17 0 0 0 0 0 0 19440.49032 8.01230047e-11 0 0 0 0 0 0 0 144757.5702 0 2.585829296e-13 22763.54323 0 0 0 0.3885087935 1156616.396 0 0 0 0 2.707372247e-13 0 332.0522731 0 2.066876134e-10 0 0.348162725 0 0 0 0 0 5.180913096e-05 0.006473622327 1253003.725 0 1.365599671e-17 2.566994366e-19 5.544729668e-12 0 639.5927814 6.411568948e-07 0 0 0 1.091670352e-14 13344.46164 0.05498415043 0 0 0 4.282711453e-05 182.0725758 0 0 0 2.6031109e-22 3.489577436e-09 1.808556577e-08 5.427004081e-21 4.527640938e-30 0 0 2.915016352e-07 2462.363752 0 0 1.917123951e-11 9.603155361e-05 0 1.903178621e-11 5.260644125e-22 0 1.742332434e-17 0 0 10.40805532 381258.4035 0.001870332209 0 8.342918522e-06 1.479753075e-18 2.102251247e-19 0 0 0 260.3122453 0 0 0 6.051535734e-14 0 0 4.601908655e-15 2.99141921e-14 0 0 1.918347344e-21 0 0 0 0 0 0 3.096090718e-09 0 1.532717524e-10 0 0 193830.9309 2.838154304e-09 0 0 81848.70594 0 0.0004947795228 0 448522.3321 3.112897439e-11 0.2674314109 0 5.595638601 0.03182076401 8.948388557e-05 0 147140.5298 0 1.17236717e-12 0 154366.9626 0.003945903184 0 1.562343158e-18 2.921025515e-09 0 1.055203103e-11 0 145884.3828 1.143778796e-10 3.721063328e-15 1416.469652 0 2.697311801e-25 8.916680809e-08 0 0 0 1.893710249 570064.5029 0 1.008178221e-18 0 0 0 0 0 4.747393756e-22 0 0 0 0 7.396965423e-25 0 1.583772001e-14 3.404834211e-05 2.16514265e-34 0 3.986193215e-08 7.442406828e-14 0 10838.35221 7.539697465e-11 13911.77296 6830.730049 0 0.001945878217 1.947417503e-07 0 0 1.897003057e-07 341.0288688 0 9.94671571e-09 0 3.608279276e-06 0 0.0001216496083 0.0002838007982 4.243539881e-06 0 5.932350724e-09 0 1.172303957e-14 0.03450444597 0 0 0 0 0 0 0 0 0 7.873429905 0 0 0 0 939.0470475 0 0 1.150884467e-15 0 0 1.26923432e-09 1.159076301e-08 0 0 4.191366389e-12 0.359869487 64.5650009 0.008664184347 0 0 0 3335566.004 4.298235339e-06 0 2.077173005 0 0 2.583492454e-10 0 7614.054467 0 0.000538220611 0 0 0 0 2.096810975e-10 0 0 0 5.852718264e-07 0 0 0 0 0 0 2.202563585e-28 0 8.074383675e-05 0 0 0 9169.191614 0 0 0 7.444145774e-19 29568.62411 0.002886875786 0 16.64219063 0 0 0 0.0001856304743 270.9539616 1.839328615e-12 0 6.361995179e-06 0 0 0.01609874309 +0 3.684677335e-19 0 0 2.079803067e-06 0 0 0 91044.64155 0 0 0 0 0 0 0 0 0 214094.9484 0 0 0.1881942493 0 0 4.347353116e-24 0 0.0004658246845 0 7.56654646e-05 0 0 1.119225127e-06 0 0 44553.93663 0.0002879940636 1.389684555e-06 62.85405277 0 0 0 0.0006451862941 0 0 0 1.326742912e-21 2858.610612 0 1160.783672 0 3.555897974e-08 4.724009968e-16 0 192844.0106 0 1.524363679 0 449.0396265 0 3.539866621e-12 63907.29174 19.75956502 185463.6213 0.0007125115545 0 0 4.482299049e-08 0 7.12209119e-25 0.9979977027 0 5951.969624 0 286127.8752 6.27017915e-12 204660.1363 0 6.105140623e-08 0.008785144751 0 0 0 0 0 1754947.051 0 3.057508407e-31 0 0 0 0 0 0.001895161423 1.44445634e-11 575.4663922 0 0 0 5.676832173e-10 7.284435375e-07 0 1.315609621e-10 9.771185521e-09 3.085418895e-30 5.571761565e-08 2.043352932 3.246572579e-05 1.476817647e-07 376.3127363 0.0750704803 0 0 6.97203113e-07 0 0.49489971 7.353845744e-05 2345988.772 0 2.638210082e-07 0 0.002383514395 0 6.257161452e-20 0 0 0 3.980966391e-09 2.530029001e-14 0.00145641001 9.00445849e-15 144570.5285 1.913096953e-30 1991301.411 1.024611201e-24 7501.33638 9.86508816e-09 1.705320071e-13 0.001013200612 269388.8257 1.420867399e-08 0 0.000319097869 0 0 13045.29101 763391.2597 0 0 0 3.783118658e-11 1.041768835 4.230323505e-12 0.01315200121 3.024963518e-07 0 8.652092069 5.766611461e-14 0 2.16533038e-06 1.501219017e-10 8.159355231e-16 3670.336366 2.017676365e-08 2533.658415 42548.30787 4.453768813e-11 4.821742513e-16 0 2896.224359 42.7697528 0 0 1.232870043 1.246927297 0 0 0 3.890419517e-13 0 0 0 0 1.029782881e-13 1.020003837e-12 1.33679407e-07 0 7.205649185e-09 94.76625476 1.941377019e-06 1.469143348e-05 0 0 90.22535767 0.09050449917 0 0 3212.556134 2215.851754 0 0 0 0 0 0 0 7.542470912e-05 161609.0273 0 20714.46977 0 0 0 0 0 1.330843535e-10 17.93647891 0 232825.7434 0 0.0004153154963 205.8117351 9.980012862e-12 0 0 1.168309838 0 0 0 4.498840175e-14 0 6.018858779e-08 0 0 0 33994.94708 0.0005326653382 0 0 0 0 0 1.590632918e-16 0 1.408769885e-16 0 0.006744004641 0 0 0 0 0 0 0 0 0 0.005458220898 0.008087782661 0 0 0 0 8.547698636e-30 0 0 13.537458 0 0 0 0 0 0 0 0 0 0 0 0 0 2.15688476e-09 1.669187048e-07 0 5.777998479e-22 0 0 125.3745736 0 0 0 0 3.097234254 0 167772.9044 0 30145.35262 0 7.515637191e-19 0 0 0 0 +0 0 0 0 0.04932370814 1.311857161e-16 328.5441022 323372.7926 0 52.28903377 182.2614427 0 0 324639.2902 0 0.002189609223 27658.53964 3.605029263e-15 0 0 0 0 0 0.003142619155 0 8.721737892e-09 0 0 0 0 0 0 1.039814075e-08 223009.892 0 0 0 1.796525925e-30 0 0 0 0 0 0 3.495615073e-06 0.8767046728 0 0 5.61783239e-05 0 0 0 3.315029525e-06 2.871645143e-17 0 0 0 1.603935904e-14 0 1.557031446e-15 0 37417.61462 35268.22128 9.758282946e-06 0 0 0 0 2.792699138e-10 1.059699994e-07 0 539946.8643 0 0 4.704134637 0 137512.4445 0 0 0 0 3.95964723e-15 0 5.684359956e-17 9.038195722e-12 0 11.09500463 0 1.085648513e-14 0 120.2235174 1.88433106e-06 0 2.540017936e-10 2.508479444e-35 1.133300099e-05 0.8644346598 16709.1531 4.440021801 0 0 0 0.3557624314 1.836127436e-11 0.2003096988 0 0 1.365996915e-25 0.5750323496 2.457500913e-08 6.614189862e-14 4.280107698e-08 0 0 0.4591492677 0 1.346616678e-11 0 7.315111575e-05 1.861766697e-08 7.181324846e-08 978789.4786 0 0.0007014696623 1.042075858e-05 0 0.0005726118616 6.426419294e-12 6.967935503e-10 7.627983478e-22 132.6141097 18110.27925 0 0 3.862639604e-07 1.584682316e-05 9.790929554e-09 0 0 176.8159907 0 0 0 0 1026531.062 197615.459 0 9.030472314e-08 0 8.487123859e-11 690975.7705 0 0 1.524595444e-17 0 0 0 0 2.364053654e-25 9630.565074 4673.016095 0 0.5592257101 144114.9393 0 0 38072.88384 0 0 0 0.4473120175 9672.274499 0 1.399984116e-17 144.0247616 0 58.38118966 3.612527904e-13 40233.33956 0.001535831946 0.0001206234069 0 4.894314508e-10 3.283975166e-26 8448.459411 2.215000582e-19 0 0 0 0 0 0 1.975153209 6.350465254e-08 2.367555752e-07 7.259086734e-05 2.452248748e-06 239.5586681 0 0 3.093186042e-28 0 0.0002604784516 0 0 15.82306039 0 3.206862827e-21 1.827909323e-09 141470.8586 285.2566393 0 0.02348934086 8.288897864e-14 0 0.002603510577 0 0.8233227026 0.06287944774 1.823753711e-08 0.03455434916 6.355447347e-07 100.2012216 0 4.643938337e-05 0 24.15376463 98.54203844 0 0 0.07520438308 0 7.514510438e-11 0 671.1677593 0 4.030640705e-07 3.245120053e-05 0 0 328.7927473 0 0 0 10.56478181 0 0 0.002161666448 0 0 0 0 0 158.8118928 0 0 4.217379177e-15 0.00109953649 0 0 0 0 0 0 0 0 0 0 1.610293687e-15 0 0 0 0 0 0.05960203719 0 0 0 0 1.88971278e-18 0 0 0 0 0 0 0 2.298210228e-05 7.078778439e-24 0 0 843.2922449 0.001646426602 4.339415657e-16 0 1.446860414e-16 0.02323189339 0 0 0 +0 0 0 2076.870682 0 0 0 1.036299244e-09 1.8757705e-05 0 0 11.10291627 0 0 0 0 0 57382.86449 0.004009463133 2.383762676e-26 0 0 0 0 9.232264358 0 0 1.007484532e-06 0 0 0 0 0 8.545893857e-09 38421.12831 0 0.08888662877 0 5.113872812e-12 57.51607115 9.218038026e-10 199688.1225 0 929546.7214 0 5.309784571e-09 0 0 0 0 3.100463329e-07 4.177587939e-06 0 0 0 0 0 0 5.540004668e-22 8.986859194e-11 1560.845261 0 40628.71073 0 2.422851896e-13 0 7.375620873 0 1.35499203 0 7.138543721e-10 4.016719188e-06 0 0 0 0 0 8.487525452e-11 14825.14692 0 3.683932538e-06 9.356381079e-08 1.536917768e-09 9.545568872 4.124685258e-11 0 0 2.109546187e-14 8.208539886e-08 1.226478267e-12 1.683033337e-08 2.175423129e-07 3.071536892e-09 6.3362256e-19 1.260740095e-17 2.388399181e-05 255.3784148 0 0.0001482192556 0 0 0 0.0004222774783 0 2.586355364e-13 3.436453702e-08 1.22247436e-22 3.142711412 0 0 0 0.008991189905 0 0.0001201790078 0 7.362482675e-14 0.515292332 0 0 0 1.173645016e-15 0 0 0 3380.829267 0 0 0 1.775637662e-13 0 48.20545324 1.684473174e-05 12.22425627 0 0 0.001135408346 1.968070127e-12 0 1020.977901 0 2.810780624e-11 0 1193.788173 0 1.321706462e-11 0.0001926984014 0 1.449622062e-05 1.688923742e-07 6.814996275e-36 6.876320983e-11 0.03412977264 191825.8148 0 0.0831843946 0.0002427098057 0 0 0 8.328019998e-17 0 1.405935342e-21 0.01146138596 3.378877165e-14 0 9.890897189e-12 9.818924058e-11 0 0 6703.634443 0 8.554695017e-18 0 0 0 3.99251317e-10 0 0 0 0 0.02373697332 6.497016057e-19 0.3939017456 43360.39182 0.03812367388 0 0 0 5.415947657e-14 664.8896922 1.226191767e-07 3.668485829e-17 3.458776269 0 66.98004988 2340.331072 0 0 27.64088595 47.76700452 1068938.406 33409.1797 32.9958619 0 4109.742034 7.849217765e-11 5.205460211e-07 0 3.199111084e-27 2.019654426e-14 8.047211265e-07 0 0 0 0.01964472419 0 0 7.312200515e-21 0 0 60.12705426 0 0.1853104553 0 2.595269916e-07 0 0 0 0 0 0 6.763299075e-05 0 0 0 0 0 1.045227698e-09 0.7721140999 10084.44775 0 2.650891894e-05 0.6890123089 4.739142838e-11 0 0 0 52.30515592 0 0 0 0 0.001957563063 9.36582223e-32 5.754475312 0 2.383261166e-11 0 2.655738842e-30 0 0.002010897526 0.9904493703 0 1.040079862e-05 1707072.393 0 0 0 4.425543249e-23 0 0 0 0 0 0 3.425714562 1.128652604e-07 2.207182651e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.348474691e-07 0 415.9147162 0 0 0 8.318382426e-13 +1.05203204e-14 0 0 0 2.424197034e-11 0 1.771486211e-10 3.19278021e-16 0 0 1.711284819e-07 7.528667903e-15 0 2.875714389e-18 0 158846.7239 0.001290418033 0 0 0.06288748702 8.636924094e-20 1.03278643e-20 0 0 30047.5243 0 1.406324425e-23 0 0 0 2.135219641e-22 8.208782502e-13 0 0 0 5.581184606e-06 0 0.003352664538 0 0 0 0 0 2.347350764 0 0 6.482811046e-08 0 0 0 0 0 0 0 0 0 0 5.408145738e-10 1.902922442e-05 0.002816916824 0 5.612140224e-06 0 0.005607017167 0 0 0 0 0 0 0 42263.20458 5.87469905e-05 0 0 5.807903243e-30 1.03258429 0 0 0 0 0 3.23323193e-17 6.252237899e-13 0 0 266922.4607 0.01833297637 1.155859378e-07 0 0 0 1.290342293e-09 0 0 18.57340394 0.001167045759 0.000109411261 0 2.684296697e-09 1.566482409e-23 0 125.4239683 0 0 6.817096304e-07 0 0 0 0 0.1594288967 1.18232849e-06 0 1.340112476e-09 0.007524991521 0 0 9.243889235e-08 0 27.18797645 1.814026543e-10 0 0 0 0 0 6.775120939e-09 7.71093095 0 262.2620501 0.08141284168 0 0 0 0 8.198179862e-10 0 0 8.373098264e-11 0 3.510695672e-23 0.002508699925 0 0 0 0 5.57954979e-14 49317.54771 0 0 2.408385115e-08 0 0 0 5.047738482e-13 0 4.187491085e-10 0 0 0.2532112361 1.658302663e-08 2.114491442e-11 0 0 0.3866919556 0 0.1407037144 2.218734846e-18 0 0 0 0.003946246605 0 0.903151275 0 2.296086867e-10 4016.564472 1.502880257e-14 0 0 0 17727.22084 0 6.52335412e-13 0.4616145528 1.990341914e-11 1.492090638e-08 0 0 0 0 6.157857786e-09 2.239682391e-05 1.874204744e-06 0 0 0 466827.0445 1.443851372e-13 0 214055.5354 0 0 5.740479562e-07 0 0.9335531338 0.7023416952 0 0 6.247067429e-09 0 1.565690219e-07 1.65179044e-10 4.022231034e-05 0 4.154887791e-26 0 0 0 3.168432892e-13 290.9898412 0 0 0 0 0 0 0 0 0 3.863691066e-15 1.923834975e-12 0 2828.857698 1.410727813e-05 0.006702115033 4.565055636e-12 0 0 0 0.001061303239 0 0 0.0910017561 5.271847266e-11 0 0 569667.2213 0 1.489416994e-08 0.4147800906 5.12341165e-06 0 0 1.177909182e-18 0 0 0 1.854211938e-07 0 0 4.128560094e-07 0 0 0 4.300543475e-30 0 0 0 0 1.09958177e-12 0 0 0 0 0 0 0 1.298047297e-06 0 0 0 0.0001910293102 0 0.01387214009 0 0 0 1.47793724e-19 0.4259560953 0 104167.0639 0 0 0 6.875228807e-09 0 1.554368764e-09 0 2.776117413e-16 +3.013438287e-14 0 0 7.603414866 8.323283125e-07 5.601814734e-08 0 11518.5742 0 8121.239346 0 0 0 0 1816918.452 0 0 0 0 0 0 0 8.504637094e-16 0 0 4.444978938e-13 0 0 1282568.845 0.2532809628 0 0 5.78571389e-06 1.649133363e-07 77238.63554 3.178382433e-07 0 0 3.519303776e-05 0 0 1.080574495e-06 0 0 0 52207.47008 0 0 0 0 0 0 2.995140433e-08 0 0 0 5.17630819e-06 451263.3627 0 0.04183571 0 0.009656108588 36605.47532 0 0 0 0 0 0 5.805298254e-16 0 0 0 0 0 4.879441996e-09 1505.191762 0 56.20082412 905.2644844 0 0 3.4237946e-11 4259390.474 0 0 116529.3578 6.594427489e-15 0.0001147989935 0 98114.14643 4.219938353e-15 0 168719.4572 4.376325616e-10 0 0 0.0001203079737 1.27217027e-12 0 1.828763152e-14 0 0 0 5.222904937e-08 0 0 2.704443613e-10 0 0 0 0 0 4.198023894 38.45706789 0 3.717427335e-09 0 153635.4798 0 0 0 37618.81955 0 5.217988456e-17 5.147239655e-07 0 267811.1757 0 0 0.06359402416 0 2.374451817e-18 0 0.0001614057282 1.78424654e-11 6.243909069e-09 1.786869311e-09 0 1710039.88 0 0 1016.345679 6.095300023e-05 8.765214549e-13 0 0 5.753582426e-05 0.08288394998 0 0.02360433046 2.454317378e-20 9.087668829e-13 19168.72298 7.050692003e-10 0 0.001781292997 0.02165024714 86837.49214 0 0 0 0.0001218072595 6890.127184 2083960.273 0 0.987999011 4.314940501 0 0 880.831627 5759.287148 0 3.802615629e-06 0 0 0 0.00349436039 0 2.127104374e-13 0 0 178298.5028 0.160397002 0 0 0 1.243669187e-20 1.991650249 7.270659981e-24 0 0 0 2141.852016 2.009888242e-12 0 1.029454062e-10 1.509899849e-06 0.2680603414 0 69.08803141 0 0 0 21771.25132 8.088457295e-21 0 1903.310352 1.328213072e-05 0 55440.79893 9.208688572e-17 0 0.9152482801 3135310.303 0 0.0001528971424 0 14.9782441 0.9089019118 9.218374428e-10 0 2.793049501 2.063339924 0 0 0.001505231317 0 6.529618302e-15 9.524979808e-14 0 0 20.76246993 0.01159395133 501221.1087 0 0 0 4.685145995e-14 0 0 0 0 0 2.248265054e-07 0 0 0 2.605751502e-17 0 0 0 0 0 1232.371457 0 0 0.06600885403 0 0 0 0 0 0 2.459050858e-13 0 0 0 0 0 7.114998746e-06 1.652588566e-08 0 0 0 8.243256736e-17 0 0 0 0 0 1.072929456e-07 9.168848161e-17 0 0 0 2.764756801e-05 1.837694258e-11 0 0 0 0 0 1402.826948 151479.7251 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0.0002495751548 0 0 0 0 0 50104.39592 0 0 605983.6253 0 0 0.005612723067 0 0 0 0 0.01232929373 0 0 0 0 0 0 0 0 0 0 2.829409965e-23 9.776074784e-10 0 0 1.105329611 8.400726459 0 0 0 0 9.195440336 0 6.507126858e-20 2.158008123e-08 0 0 0 0 0 7.587694746e-05 0 7.232158695e-27 16.1091352 0 6.713495408e-23 0 0 0 9.156403797e-11 0 0 0 5.025649104 3.068449512e-15 0.0001921786559 0 0 0 18012.18034 0 0 0 0.0003808089719 0 0 0 0 0 2.601598227e-15 0 2470634.135 0 0 197.1393792 0 2.073406159e-18 0 0 0 4.58904507e-10 4.0021775e-07 0 1.192225561e-08 9.253667692e-15 0 3052.231936 0 8.762631978e-14 0 0 0.003950931756 9.945465688e-08 0 0.01885447834 3.153232897e-16 344277.4582 0.007443097331 0 0 0 1928.759449 3.034221698e-11 0 0 0 123447.172 6.608308977e-10 0 0.01341753615 0 0 6.944817464e-21 0 0 0 15937.66669 32902.01684 0 2.398034951e-08 44943.27109 0 0.05026569007 3.551653579e-05 9.094703774e-12 0 2.885484638e-19 0 0 0 0 0 5.087806868e-13 2.680947192e-06 2.852385046e-19 7.088911065e-16 0 954.7590083 1943.937513 0 390.9979322 0 0 4.112550119e-08 3885.523382 0 0 5.618866042e-12 0 0 0 486.4699171 1.476208902e-26 0 0.0002555599425 0 1.283870172e-07 5.51488958e-15 0 1.974254268e-08 6.621559862e-12 1.837336306e-09 0 0 0 1407.513868 1.556577325e-11 0 7.376819549e-16 1.292294997e-14 2294.055224 5.036517973e-07 3.044900066e-11 2.932736336e-11 0 19544.341 0 983.9691901 0 911.5462704 0 0 1.28546947e-18 1.378496406e-10 0 2.576967306e-09 0 0 0 0 3.439689934e-14 0 8.544757368e-05 0.07580328992 3.099363262e-08 0 21.24885906 42.50089951 0 0.0002051301137 0 0 0 0 0 1.199937541e-12 0.008277045783 2919.175447 0.3539258966 7.224375168e-11 8.394828523e-11 0 0 0 11.63324204 0.001589081445 0 1.060380669e-11 0 0 0.6462946765 0 0.01448414696 0 448756.8214 2.800474419e-17 303238.1959 0 3.463439394e-07 0 3198768.375 0 0 0 5.264517985e-20 0 0 0 0 0.0001657884415 0 0 3.256507745e-13 0 0 2219.211552 8.144368015e-06 0 0 0 1.020579353e-05 1.175836707e-22 0 0 0 2.346789758e-07 0 0 0 2773824.245 0 0.1447848857 0 1.933371708e-09 0 0 0 7.710646897e-15 1.742905879e-14 0 0 0 0 156746.2862 0 0 0 4.35736243e-22 6.052643652e-11 0 0 2.881437105e-22 2.260260316e-13 +0 0 0 0 1.050030181e-09 0 0 0 0 878.95448 0 0 1.496270235e-06 0 9.945158591e-06 1.26209762e-07 0 1.017041018e-22 0 0 0.0001057593947 6.407198463e-07 0 0 0 0 0 0.2583710121 0.08466776323 0 4.530694484e-06 0 0.0002740757495 0 0 0 0 0 0 0 0 0 5.784716458e-20 0.04300112799 0 0 0 0 0 2.172577957e-06 24921.63017 1.491341158e-18 0.5089302111 5.021871022e-15 0 382.453883 0 0 0 0 1.467610283e-16 0 0 0 0 0 0 0 0 0 4.849134232 0.0002262263353 0 0.05173700699 0 40033.79818 0 0 0 6.446362107e-15 0 0 0 0.004597850303 0 0.04954473356 1.592225098e-14 1.567238379 6.294335328e-16 0 1272.234293 0 0 5353.795415 1.537065886e-05 0.03323234405 0 0 0 0 2.857249194e-12 7.990221772e-10 9.5438286e-08 0.003390482653 0 2.16243054e-05 1.766647281e-06 0 1.126152041e-12 0 0 0 76653.0105 0 0 783894.677 1.931586068e-10 0 2.474490995e-06 5.879838972e-10 0 1.965119042e-13 6.644468472e-16 0.009574463947 0 0.0005276335905 0 0 0 0 0 177541.8598 0 0 3558.882057 2.040495077e-07 29973.99644 0 7.721049175e-06 0 3352440.37 1.034269221 8.520037855e-07 2.099952917e-26 1.224088035e-24 71235.97099 0 0 0 0 15.17047273 0.001266966573 0 7.54456549e-08 0 1.125363228e-22 0 3.132370828e-12 0 6.550335288e-05 1.355270793 0 0 0 1.209792907e-12 1841948.807 220.8624611 4114.317327 0 0 0 0 85158.28508 32.28010264 203741.0381 5.459548651e-10 0 0 1550583.889 0 0 0 6.402802901 0 6.57460324e-14 6.348025395e-11 2.452697814 0 0 9.071877668e-18 3.096751176e-09 0.03087352229 0 0 0.009639990849 6.686064936e-13 0 0 0.0001220929094 6.2857743e-05 0 0 141964.8196 0 0 0 0 0 46542.8309 56053.88978 0 0.005154153808 0 0 0 0 0 0 0.001664832108 0 2.038092368e-05 0 2.39902822e-10 0 1.553708948e-09 0 0 5.750900999e-27 0 0 2254.099271 0 0 95057.89469 0 0 2.678721253e-14 0 9.020171408e-09 342.4186873 0 6.206842041 0.01874012859 1.603652569e-11 1.585045211e-07 0 36836.84973 0 0 0 0 0 0 0 0 0 0.0005941965187 0 49793.54066 0 4.488825397e-05 1.87787473e-12 0 0 2.24303264e-14 8.888306706e-10 0.0165070866 0 7.879621036e-07 0 0.03292303908 0 0 0 0 163561.9301 0 0 0 0 0 0 279699.9382 0 0 0 0 6.961965075e-24 167744.2659 6.896683575e-12 0 0 17365.25333 0 0 1.576557855e-22 0 36.80187851 0 0 +0 0 192665.3617 0 0 20.53746747 0 0 0 0 0 0 0 0 0 0 0 4600.43572 0 0 0 2.094090476e-09 1.932426914e-14 0 0 0 0 0 0 0.1891933586 0 0 6.154180077e-10 3.909310336e-11 0 3822735.897 0 3.040319259e-07 0 0 0 0 6.240686509e-10 1.677268289e-21 15.30227383 0 3.848379863e-06 9.211143727e-22 0 1.994945232e-15 0 6.059905056e-05 0 0 0 7.584403985e-06 0 0 0 0 0 0 0 2275.131593 0 0 276.2218611 9.056835797e-11 3196.569176 0 4337.399218 0 4.894750476e-27 361.4516814 930514.1954 0 4932.601285 1.996701277e-08 0 3.702594398e-05 0 0 0 0 0 10.75194224 0 0 0 1.423338494e-09 3.213643142e-19 0 0.04614339261 3.924638913e-10 621.3965088 0 0.04603861547 6.186020355e-11 0 0 0 0 0 4.62819188e-13 0 68581.81507 0 0 0.0003860518946 2.337120383e-06 2.188998126e-07 3.76867034e-26 7732.164836 0 3.851176496e-16 0.0007085149995 0.5327514779 3.347088723e-05 0 0 1.408855601e-09 4.476972649e-15 2.696015484e-10 0 0 0 0 30.23719366 3029.86489 0 401576.5666 0 5.614270483e-10 6.808232417 58.0649987 3.137081847e-14 0 375.4949733 1.432868935e-09 4.261020091e-09 0 0 7.158341942e-09 1.691842182e-14 0 0 25843.54911 0.7000079852 0 3.218099754e-10 4.729953515e-06 0 0 0 0 0 0 2.492122338e-11 0 0 0 1.642719492e-06 0 1.581121747e-11 4.408243761e-19 0.9758450762 0 0 0 6.797543267e-12 0 0 1.064555303e-11 210106.179 0 0 99208.12539 0 0 0.0006823730733 8864.991485 3656.671475 2.160869128e-13 7.800672945e-18 23043.02056 0 2.732403285e-12 0 0 0 0 0.04825158782 5963.143739 0.0607535182 0 0 0 0.001849060627 0 808.7186768 0 0 3.34988291e-06 0 0 5.422790134e-10 0.001007869398 0 0 0 6.022106629e-06 4.214921415e-07 1.153521462e-06 0 116.4564836 0 0.000599743881 0 0.002113323648 7.857778205e-07 0 0 4.843916614e-05 0 1.028170478e-06 1072579.409 0 40.00912186 7.266979907e-10 226.1803494 0 0 1.619956226e-10 0 0 0 0.0009321040944 0 0 0 5.760496734e-16 0.0002602852627 5.09811494e-21 0 0 2.575587029e-18 0 0 0 0 0 3.925646186e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.052626865e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 424.3329279 0 0 2.114229718e-12 5.629591362e-19 0 0 0 0 0 0.8263651665 2.512957752e-10 123825.2149 3.981463598e-09 0 +6.093062617e-27 2.134689861e-21 0 0 0 3.85242488e-09 0 0.2602280961 0 1.817295522e-25 0 0 0 0 0 0 0 0 0 3.823130585e-05 0 0 0 0.0009867036357 7.327413573e-13 0 2560.688702 0 3.970968341e-15 0 989384.5752 0 0 0 0 0 0 0 0.0001667201603 0 0 0 0 1.126453721 0 0 0 0.007430164816 0 0 1.278640902e-10 5.109352059e-07 0 0 0 0 3146.523519 1.280035957e-15 0 1.423067921e-05 0 0 0 0 0 0 1.961374855e-17 0 5.146813493e-30 5.900577727 0 0 0 0 13.75295943 0 7.524275482e-16 617402.4426 0.0009127868296 1.351060151e-10 2.898732765e-15 0 0 0 0 0 0 0 0 0 0 1.219677236e-09 0 209615.8401 0 247.6663428 4.303036316e-06 0 0 0 0 2.681913972e-15 0 0 1.413823178e-05 5.497235617 0.01042697576 0 7.681584355e-06 0 2.187108732e-10 0 0 0 0 9547.946838 2.808837027e-06 0 0 0 1.168568886e-06 9.637345541e-15 0 0 0 0 0.05364396246 0.09945619634 482875.3784 0 0 4.360324258e-13 1595.040285 3.065726279e-16 3.768259504e-12 0 0 0 0 0 0 0 0 0 4.983059423e-08 0.003891532787 0 216830.6858 2.41586693e-15 37002.84577 0 0 0 148866.7875 0 0.2733020051 1.345387895e-19 0 0 6.507492983e-10 3.457123664e-09 0.08354348153 7.591354743e-10 9.503484378 4.360476452e-22 0.000524538831 634591.4089 0.2408196273 0 565665.9633 1.197689864e-05 189.2169027 0 0 9.481891942e-08 0 603715.1004 0.00227264182 0.0001581709304 4.53204038e-09 1.195006494e-08 1.109982275e-08 0 0.03943605581 2031940.47 9278.666678 9.79287764e-12 50070.69057 0 0 0 1.540600648e-11 0.02642062579 0 0 0 0 134047.7092 0 0 7.503484783e-14 1.495428525e-15 8.603264087e-10 0 0.9784758035 0 0.0001251036871 0 0 0 0 3.192561084e-10 0 0 0 0.4780656874 0 0 1.167661199e-10 7525.343084 0 0 6.979246696 0 0 0 5019.84708 0 0 0 0 0 0 0 23.47354539 0 30705.2636 0 2.873892946e-13 1.161017385e-10 2.282670446e-05 5.420430657e-22 47.80307875 0 0 2.626618461 0 0 0 0 0 1.17177609 0 4.858207373 0 0 0.0001950466437 0 0 3.364190483e-07 130.5422828 3.107447185e-10 0 0 0 0 0 0 0 1.313447166e-15 0 0 0 0 0 5.537743907e-21 4.249399296e-14 0 7.425075822e-20 0 0 0 0 0 0 0 0 0 0 1.289008286e-09 0 0 0 2.892726755e-14 0 0 5.161405044e-14 0 0 0 +6.052559845e-12 0 0 0 0 3.449566929e-07 0 0 223304.5536 9.686461488e-15 17562.85527 0 0 0 0 0 5.794210558e-17 0 110.5633835 0 0 0 0.0001432817971 0 0 0 0 0 0 0 2.697866812e-14 0 0 7.184608414e-10 0 0 0 1.829867946e-23 0 0 0 0 2.129861516e-06 0 0 0.0003789735233 0 0 0 4.571856936e-06 0.2679779102 0 0 0 0 0 0 0 54160.853 0 10387.52965 0 4.101015437e-14 0 0.1374128078 35.21374366 6.441906641e-15 0 0 0 0 0 0 0.2004098351 0 0 8.318976892e-07 0.1412718334 0 0 134797.9243 0 0 203110.1367 0 128357.6701 50677.85735 0 1382.729732 0 3.831967118e-11 5.868159561e-12 0.0005416956506 8128.128177 5.984505675e-08 0 0 0 0 0 0 3419154.151 0 0 0 0 1287698.631 8.366429103e-14 0.0005400641364 0 1822405.982 8.960328718e-28 0 0 0 0 1.0423081e-14 4.566337911e-25 1.533723802e-16 9584.25931 0 0 0 8.25648685e-08 0 1.962530936 0 1.215132068e-09 3.086072403e-07 0 1036435.806 0 0 424008.0492 0 1.830945775 107.4242996 0 0 0.003221839423 4.41863977e-30 0 0 6.035078012e-05 0 0 0 2.251949508e-31 0 0.0006454072414 2.790515911e-06 18012.76345 0 0.01255670993 0 0 0 0 6.324343328e-13 2.121024811e-13 0 9.801411761e-22 0 2778.045281 0 681503.9418 46.04111443 9.240536217e-07 0.008672294679 0 0 4.025010557e-07 0 0 0 4.926438188e-05 0 0 2.277955108e-20 0 0 0 1470.513536 4.057638024e-14 23.61046094 0.3278423987 1.2206305e-06 7.272499195e-11 0 0.0001933996043 0 0 0.002106405437 0 4.713010543e-19 179.9039713 0 5.683698689 0.001000258417 0.0002516099581 324819.3602 149661.7358 4.692532713e-09 1.720146918e-18 0 0 0 0 0 0 0 8.823152422e-08 7.581859008e-13 0 0 2.586064762e-16 0 0 0 0 0 4.356743767e-12 9448.911076 0 0 300.3692774 3.670203279e-07 0 0 3275440.479 0 4.69689148e-26 0.020696516 0 0 0 0 1.7056391e-20 0 0.000124227687 36152.9659 0 0 0 0 5.206786722e-07 0 0.6892508542 29662.89668 0 0 0 0 0.01390391717 2.491576547e-12 0 0 4.124530319e-05 0 8.322115138e-08 0 176494.6231 0 0 0 0 0 0 1.825342965e-18 7.882754634e-15 0 0 0 73142.99086 0 0 6.883051683e-22 0 0.0509628748 0 0 0 0 0 0 0 0 0 0 0 77803.63153 0 0.1387384439 0 0 0 0 2.277509412e-09 0 0 +7.94515767e-13 0 622.4157059 1.005678254e-10 0 0 0 0 520.9379346 5199.070194 1.366032916 0 1.271462147e-06 0 34.09422526 0 0 0 1.257510037e-07 0 5.240203946e-11 335861.7652 0 201643.1195 0 8.988419478e-14 0 0 0 0 0 0 230.1422659 0.0001825436111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003324759605 0 0.0008756996591 0 1.175857929e-21 0 1075670.375 0 0 0.01845987582 4.10581529e-11 0 0 0 0 0 0 0 1.58628384e-30 0 3.656452574e-10 1.810630896e-07 0 0 0 46.03508743 3.176414861e-13 0 0 8.795640912e-11 0 0 0 63930.37671 191167.5588 8.980719326e-06 0 1.568218849 0 0 0 3.176850669e-15 0 68030.75912 0 0.00204155351 0 222.8809926 9.298672638e-15 2.737027855e-13 3.240528941e-14 2082.270424 3.019271475e-20 0 9.254941534e-12 0 0 0 2.909074397e-09 6.164938812e-09 825942.8764 3.382131254e-08 0 0.0006568640059 0.001712785943 0.05845476911 0 12.06461991 0 8620.718526 1.338068304e-06 0 4118.141681 0 0.006251048752 5.614482511e-14 250850.2616 0 0 1.177443902e-06 0 1.386102327e-11 2.640316969 0 0 1279.195483 9.320909285e-22 1.355430037e-09 1056.529061 0 6.48999076e-12 3.588038373e-15 0.003276088979 0.0008431680216 0 0 602.8560469 1.276101453 0.2651680927 13.6267028 0.004101913574 0 0 4.529059917e-08 375504.8632 4.886557221e-13 0 3.378275544e-08 8.705685328 0 0 0.0001567690858 0 2.818667829e-15 0 35989.7166 0.2305772062 0 0.0004973352184 0 691.4629139 523805.4205 226897.5229 0 0 4.059818761e-15 0 298539.3224 0 0 0 0 0 1.403464986 0 0 9.063623521e-12 8.63654721e-08 0 0 0.03187578193 0 0 0.00109424961 3.600767628e-06 0 0 5.391489301e-12 4.362366913e-13 0 0 3.0547356e-08 4.091595966e-19 0 157051.3518 0 0 62.07899612 37869.28282 0 0 0 0 703.8117197 696596.0083 5220823.191 0.02003004561 0 2.40385036e-15 1.49893592e-08 0 0 0 1.552537072e-06 95.9833809 0 0 1.331680698e-14 342.0787117 0 0 0 130528.241 0 0 0 0 0 0 0 3167.078844 870455.4603 0 0 0 0 0 3.514224599e-12 6.188429154e-18 1.918851036e-08 40828.41674 0 7.460427583 670.2315182 0.0004848833538 0 0 0 1.04452128e-11 0 0 0 0 2.704022691e-14 0 889917.1137 3.141276925e-13 0 0 0 0 1.201012373e-09 0 1.662918795e-09 0 0.0006859537588 0 0 3549700.25 934720.4316 0.001362361866 0 0 5.374670575e-11 0 0 378757.4028 0 0 0 0 4931.635636 1.381817706e-23 0 1.156604601e-09 0 0 0 0 1.31933775e-13 0 +0 9.287373096e-10 21977.99618 0 3.288731085e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.316356628e-16 1.801095897e-11 0 2.15032831e-05 0 0 1.821726781e-13 109014.223 99657.01402 5.505804507e-17 0 0 0 0 1.607576438e-14 7.831398138e-15 0 0 2.206126374e-11 0 1752.565066 0 0 1.870825549 0 1.931575076e-09 0 2.981877217e-17 0 0 5.60064825e-12 6.54591516e-14 2.380015322e-15 0 7.942969963e-06 0 0 0 0 0 450864.0115 4.386683042e-17 4.075423411e-05 5.462599869e-15 0 0 0.001436760677 0 0 11814.1534 0 0 7.692231187e-17 0 0 0 1.23974124e-06 127716.1051 3.530236222e-05 0 132070.5347 20.30671365 0.430516357 0 2.802663032e-05 2.569935256e-06 0 2913.838916 6.996005688e-09 0 0 0 0 1.93330283e-05 9.679887403 0 6.053856585e-25 3.625469878e-10 0.1006470483 2.218521499e-15 0 9.112939703e-08 567.0045038 0 0 1.704404093e-06 2.523636386e-06 0 0 0 1.251605003e-12 0 8.512696252e-14 0 1.762967841e-15 0 961997.1892 6.687658469e-15 3.480950417e-06 0 0 0 4.438745849e-20 8.30390949e-23 0 0 2.476394848e-08 0 32102.34832 1.781033659e-18 2.193331209e-16 0 1.388586591e-10 0 531364.7144 2.776581521e-09 1.223027806e-09 0 911202.5687 4.468887913e-13 0 0 0 2.033728661e-07 5.513418772e-05 0.001594386742 0 0 0 0 0 1875.517958 0 0.628429889 0 0 8.057840346e-10 0 4.514291984e-27 4.745741358e-09 0.08434659215 0 344965.9156 0 0 0.04810377022 0 0 1.682227379e-14 0 1.559837519e-08 0 0 264.766877 0 97.57901394 1.713636829e-06 5.927838192e-05 12.13729164 5.510239978e-06 0 4.480571227e-09 0 4.07213012 0 0 0 0 1.402934903e-10 33039.90064 1.246786117e-09 1322969.746 1.656010817 0 5.506859512e-10 0.007270748316 0 1110609.287 0 0 0 8.364755502e-19 3.345003956 0 0 78551.29731 0 1.225153598e-16 0 46488.91866 771072.9312 0 0 0 0 0 0 1.095255157e-20 3.047022503e-06 0 0 1.717948249e-16 142.3408475 0.0009169984075 0 0 1.915333325e-15 0 0 0 0 0 16096.00005 0 7.510284194e-19 106281.8419 0 0 3.071685883e-12 0 0.1408348704 44.70115724 0 0 0.001183264428 3.428801684e-08 13115.33364 0 0 0 0 0 0 1154937.739 0 0 1.684755167e-09 0 0 4.764948379e-13 1.138882197e-08 0 4.684868422e-10 5.443949136e-08 0 0 0.0001804141356 0 241175.4028 0 0 1.160790327e-07 0 0 0 0 0 0 0.0002532139117 2.119184986e-12 0 0 7039.070808 1805.454368 0 0 0 3.102994941e-16 0 0 0 0 0.002695816892 0 0 0 +134.5594456 0 0 0 0 0 0 0 0 0 0 0 0 1.976074118e-13 0 0 0 32.18749536 0 835681.854 1146384.11 3.334088322e-12 2.427094456 0 0 0.0001079229571 0 0 0 0 0 0 2394.317676 0 0 0 0 0 2.000824006e-08 82.52267218 0.004439782424 1.206056684e-13 3.025720165 0 0 0 0 0 3.26309441e-09 0 1.091260142e-08 0 0 0.3451065553 0 0 0 4.16967139e-06 5.464601134e-11 18036.37912 0 0 0 0.007033310926 8.107917028 0 4.49589168e-07 0 0.006740708447 1.274295265e-24 0 0 0 4.301842322e-08 9.503374667e-24 0 0.001808191264 8.472243815e-15 0 28.16029576 0 0 0 0 31068.72154 405793.2802 1087977.839 1503425.716 0 0 3.986471877e-09 0.07606597836 0 0 0 0.1883795512 0.1377997246 0 4.543601058e-16 0 6.791029382e-05 0 0 4.428861992e-10 0 7.093026491e-14 0 0.002100425681 0.004201693245 0 1.253609546e-10 0 0 3448641.125 3.953057451e-06 1.221827036e-18 4.858290593e-11 5.289634657e-18 0 0 0.0002885787952 0 2155.440089 4.282504681e-15 5.404581059e-07 0 0 0 9.656440722e-06 0 0 0 0 0 8.943337868e-11 5.503248033e-08 0 0 0 9.872161222e-15 3.976186473e-06 0 1.573337144e-28 1.136835201e-08 5.534281296e-12 0 0 0 1.248525576 983.1570049 1.147977258e-13 0 0 0.005384725042 0 18.98602307 2.318636462e-21 0.002128848177 0 1104.198868 1.157099689e-05 0.001305970281 681.6034519 0 0 0 0.02053446102 0.009228304604 0 0 0 0 0 2.600553502e-11 2.715893502e-30 0 1.188916738e-06 2.087269985e-05 7.521455667e-25 4.508062866e-14 1.967594403 0.001036621121 5.747672591e-09 35445.00482 6.971423468e-06 0 0.001020136543 1.965780831e-18 1.311355297e-06 12.79556239 0 0 0 0 2.545971404e-23 4.86614119e-08 0.001180965058 229543.9295 0 0 350038.9681 0 1.145252105e-09 3.365455748e-05 274745.2476 0 0 0 0 5.789750626e-05 2.306603776e-09 0 0 0.0005500538321 0 0 4.46043086 0 0 3.114006771e-23 17.34418951 0 1.574121196e-10 7.219979565 0 0.001355618293 0 0 0 0 658714.341 8.441829035e-11 0 60039.99188 0 0 0 0 2.830026503e-17 0 1.393068588 1366.239345 0 0 1.070828319e-08 8.840034124e-16 0 1.820247541e-12 4.799572307e-06 0 0 1.948755107 0 0 0.0480873898 0 0 0 0 0 0 0 0 0 106463.4701 0 3.425312023e-26 0 0 0 33.31230214 0 0 0 9.06194589e-17 15460.64124 0 0 1.939471837e-20 9.544769919e-18 0 0 0 0 0 3.61165574e-13 2.158956498e-33 0 0 0 0 332.0568235 8.18974788e-13 0 288.2463778 0 0 0 2.129672305e-14 0 +0 4.139505957e-09 0 0 0 0 0 0 0 0.1080432842 0 0 0 8.188480514e-18 0 0 0 0 105768.7645 0 0 2.911623475e-10 2.421737156e-14 0 0 0 1.8993785e-10 0 0 0 7.554466827e-05 4.40076215e-16 0 1.047656258e-05 3.398278507e-13 0 0 0 0 0 0 2.087882611e-18 0 0 0 231030.9721 0 0 0 0 0 0 0 0 0.0003915939967 0.0008946022601 0 6.16480468e-10 0 1.050871712e-07 0 0 0 0 0 0 0 0 0 0.0002200766317 70963.37835 0.1448289901 741024.8938 0 0 0 0 0 9.958638965 0 1.552647674e-25 0 0 1.606494689e-05 1189682.734 2.024082041e-10 1.088784278e-12 0 3.107339721e-14 0 0 0 0.003950355294 75.97155724 6.426868794e-06 7.144133379e-06 2.316056301e-12 0 1.392616179e-12 95.99849731 0 0 0 0 6.420868004e-19 244.9589394 0 1.43804734 0 5167.842407 1.152675461e-06 0.01808202129 977487.7264 0.2538122661 3.194488755e-06 0.9108546699 0 0.3145221762 0 6.311320236e-11 0.4071142024 0 1449.525701 0 49529.92742 0.2889917455 0 0.1948784227 6.534904752e-09 0 5.945302976 2.974032846e-13 9.622584283e-09 9.312944794e-12 0 0 0 6.233341322e-09 2.537067881 0.3107383976 0 8.613324258e-29 0 9.741075299e-08 0 3.01966126e-08 2.524172074e-11 0 0 0.07717374703 179.3339276 27.39919496 0 36.35141874 1.129324774e-13 4933.997315 0 0 354182.8534 0 0 0 0 0.0002161218386 0 0.01758628601 1.73792556e-06 2.195788838 6.615077974e-17 4.436313897 1.018094522e-15 0 0 14.22755483 2.840329924e-15 37369.69023 0 1.21874166e-16 0 0 3.723445932e-07 0 1.370364499e-10 0 1.433546924 3.494217712e-06 9.713504022e-14 0 0 0 0 0.01607590883 0 0 2093636.291 0 0 0 0 2.175410414e-07 0 0 0.0004869398294 0 0 3.892410078e-15 1.454442424e-15 1.145401654e-10 0 0 0.03088729672 0 6.4137146e-06 0 260575.497 0 0 6.710857865e-19 4.194392217e-08 0 0 0 1.341835137 7.644675172e-10 0 7.624016386e-14 4.664539297e-11 0 0 6.355042438 0 0 0 2.250266439e-14 0.00209647169 0.02959253563 0 4.698814251 0 0 0 4.926962018e-19 9.341846217e-07 9.742033367e-09 0.3655071473 8.201146805e-31 0.0006218230392 0 5.645315854e-10 0 0 0 0 0 0 5.931671987e-07 1738623.211 0 0 0 0 0 0 0 0 7.239448376e-10 0 294802.71 0 0 1.044279368e-12 0 0 0 5.777335872e-22 0 0.02027380385 0 0 0 0 0 0.001382146428 0 0 0 0 11.94022952 0 6.496576956e-05 0 26601.22079 216495.8273 0 0 0 2.233988682e-12 0 1.258131414e-07 0 +2.892847232e-06 1.167142354e-18 0.2245139465 1.222914757e-17 0 0 0 3.667698912e-09 0 0 7.099757136e-08 0 0 0 0 0 297184.6495 0 0 0 666.5785749 0 0 7.68522544e-13 0 0 0 0 0 296526.6506 0 0 0 0 0 0 3.319666359e-11 8.963163161e-12 3.574487208e-16 0 0 0 0 109.4572254 0.114748881 0 0 2.125418309e-14 0 0 0 5.328585537e-14 0 0 0 1.486515362e-09 0 0 0 0.0833812228 6680.728789 0 0 0 3.800491742e-15 0 0 367.5003315 432.485511 0 705641.6844 0 4.511011841e-07 2.637237561e-11 0 0 5.654046182e-08 0 0 2.893449573e-11 4533.620891 0.07793836556 0 1.193157607e-13 0 0 0 2.248559792e-21 0 9.142763076e-08 0 1178.035542 319727.6404 411.6844548 10516.17488 0 0 15991.4501 2.336383286e-22 939.1137474 43378.58709 150.8441515 1.709214588e-06 0 0 0 57416.73537 5.459675865 12006.56579 0 0 0 0 0 0.0002306415724 0 0 0 2.352535924e-17 0.0001151739574 0 2.620590478e-11 0 0 1.345998119e-11 1.679184269e-08 1.236446769 0 0 7.513694034e-06 3.038607705e-10 122252.3013 0 1.572045663e-20 0 1.959174875e-06 0 1.921185834 13.46383966 8.061927612 0 512878.8096 0 0 0 0 4.571634562e-17 0 0 0 0 0 0 0 0 0 0.1101437306 0.004931295846 0 4.72822639e-09 3.253408173e-20 0.001211669341 690703.6741 2.003019821e-11 26626.42363 0 0 0 129.2308684 0 779612.1012 0.1652788751 3.775243248e-10 3.397656393 4.579265442e-05 2.961363129e-06 0 0 6.083161255e-10 2.881491504e-18 0 8.978981822e-11 3.159305154e-06 1.52308841e-09 6039.665646 0 0 71.80941141 72850.72528 1545374.561 0 0 0 0 1.097501624 9.680800061 0 3.623812094e-09 306291.5942 0 36889.50634 1.587233231e-09 0 0 2.243878643e-08 0 1.328860216 0 0 0 0.01016049085 7106.305386 36626.03989 7.310428229e-14 9352.749929 0.0004885854351 0 68.3227047 0 0 1.280389568e-11 0 1.127430845e-07 0.01062981637 0 0 0 0 1.181314836e-07 1.142524397e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1211172576 0 0 4.487694696e-09 0 0 5.358037992e-06 1.211294693e-11 0 3.336847831e-34 0 0.0009612768033 0 0 1144928.79 0 0 0 0 0 373489.7527 0 0.4439488825 0 0 1.119851897e-05 0 0 20102.17212 0 5.287459191e-07 0 0 0 0 0 0.4056726986 0 0 0 0 0 0 0.0004736014921 0 0 0 0 0 588.4717418 0.1697990882 0 +2492975.78 0 9.131158282e-05 0 2.575124607e-05 0 0 0 0 0 6.511666128e-07 0 0 0 0 0 0 0 0 4.384380179 0 9.451308466e-15 0 7.280518374e-08 0 0.04905984255 0 1.646079964e-14 2.765359792e-09 6.707499912e-07 0 0 0 5.719568432 0 0 0 0 0 1.24892647 1289.029678 411758.6982 0 0 2.494181129e-08 0 0.0001865939712 0 0 0 1.723982881e-07 0 0 1.635515997e-09 0.00770491763 7074.540985 0 0 1.237865976e-07 6.410385309e-05 0 0 0 0 8.632807875e-18 0 3.893828776e-14 0 0 0.241650461 0 7.602630939e-08 0 0 0 60250.99211 0 0 3.17346716e-08 2.380661731e-21 0 0 0 0.02360823842 0 3.128391152e-05 4.653372147e-12 1.609517794e-28 1.480834785e-09 0 8733.014134 133172.7113 9.831038595e-05 0 784452.174 2.863530776e-18 0 0 47.30775864 0 3.655412505e-05 0 0 608.3434562 2.243756558e-12 9.20679026e-21 4.312715528 6.467302988e-14 9.369204525e-11 0 6178.39119 2.783524896e-10 1.821539322e-05 0 0 0 2.38119972e-19 4.195652408e-06 0 0 0 0 0 1.977157393e-16 0 0 0 0 1999.709793 6.471882496e-06 29.35272351 1.902774795e-09 6.611571141 0 0 1.15203812 39.47552077 1.056216198e-06 0 0 0 0 0 1.431548441e-14 7.452961242e-08 0.0003191689762 0 0 0 0 0 0 35.40457356 3.895361522e-09 1.259279264e-12 3.908639393e-08 0 0 46606.44574 0 0 0 184456.035 0 0 0 44991.8683 0.496789364 0 0.001093455667 2.344501943e-12 0 1378.497715 0 5.235874006e-07 1.683993747e-12 0 0 33.73591625 0.001495638121 138.642898 0 0 0 1.657614529e-15 0 0 1.437825404e-06 0 2.590253416e-13 9.64213565e-08 3.597575344e-15 0 0 2.548657096e-06 0 0 2.644400152e-05 0 7.737849027e-06 0 0.007408414323 0 0 0 0 5289.342837 1.117164289e-11 7.710925127e-10 0 0 2069046.048 0 0 0 0 0 0 0 0 0 0 0 1.329543853e-14 0 3.442439154e-06 0 0 0 0 0 0 0 0 0 0 0 0 4.25755724e-13 0 0.1642838429 0 0 0 0 0 2.349164466e-06 0 2.996048202e-05 0 1.169119539e-11 0 0 89.21687684 1.491606039e-17 0 0 0 0 0 0 1.549353699e-12 0 0 4501.041418 206262.2783 0 0 5.5507384e-09 0 0 2112.286836 0 0 0 0 1.174585751e-22 1.157368891e-28 4.707779865e-20 0 0 0 0 0 0 0 1.498345731e-10 90310.7363 0 0 0 0 5.284320873e-24 0 0 0.000129770198 0 0 0 4.310012997e-14 +0 0 2.845898219e-08 1.095412599e-09 0 0 0 0 0 0 0 0 0 1179.119621 0 0 2.638265819e-15 0 0 0 0 0 0 0 0.04625806043 1.176085133e-08 0 0 0 0 0 0 7.699646724e-08 0.02275841316 0 0 0 0 0 0 0 765.5839139 0 0 0 0 0 2.456851478e-06 0 0 0 0 0 0 0 0 0 0 0 0 5682.47098 0.7779088339 999662.4996 1.277264808e-10 0 10304.16723 0 4.028364482e-08 0 0 2.495406073e-17 3.014638706e-25 0 5034.766753 0 0 3.189314292e-11 5.193429356e-24 0 4.597928004e-14 2.852401387e-26 0 29.74850752 1.299836563e-07 0 0.005168864267 0.0002933317764 4.64630161e-05 1604885.078 0 1.772330793e-06 44.1473959 0 2009.771996 1.221153668e-22 0 0 4.070925574e-13 0 0 0 0.01404446108 0 0 0 0 9.627538336e-07 0.01588858357 0 0 0.0007408628098 0 23377.44163 0 0 3.101183926e-05 0 0 0 0 0 20.69624728 0 3283.177699 0 1145433.446 0 0 0 4.867351033e-06 191.2841525 0 0 0 0 56943.62401 174819.0502 96161.34429 0.0003447859684 0 6570.744967 439.2216483 0 0.005127193046 4.858658062e-17 0 4.905824596e-17 0 0 37742.398 2.205800972e-13 0 2455.776067 2.479889386e-16 0 4.798257239e-10 0 0 0.1746343017 0 21968.93036 5.481425531 0 1.364481734e-09 0 0 0 0 7.782576409e-11 0 0 0 0.007838361017 0.01499590704 0 0.1214158598 0 454446.5251 8.38919999e-27 0 1438335.991 0 0 0 300997.9622 0 0 3.821031616e-12 4.268256468e-06 0 938744.9815 0 0 0 2.873897827 0.000138069448 9.600007323e-07 0 0 0 1.328846898e-11 21025.37602 0 0 0 0 0 4.588908044e-05 0 0 33616.06151 0 0 0 0 4.579166059e-07 0 0 96584.17318 0 3.196170044e-23 0 0 67.08204284 0 0 0 0 0 0 0 1.185385019e-11 0 0 0 0 0 0 0 8.486372415e-08 0 7.309524848e-13 0 0 3.276564728e-10 0 0.01311751875 3.508869679e-14 5.857860521 0 2016.276442 1.755370575e-15 0 0 2.387162299e-26 0 0 4.242571982e-21 3.507668318e-08 4.321832616e-13 0 0 13397.78176 0 0 0.004353218366 0 0 0 0 2.037140676e-07 5.640463147e-05 0 0.5994835282 0.0003058361709 0 3.938195118e-10 0 0 3.422899738e-22 9.735697028e-09 0 7.691349579e-22 0 42.90072276 0 0 0 9.118447908e-12 0 7.065797362e-13 486.8954292 0 0 1.527149958e-32 0 0 0 5.026745577e-18 2.651187041 +0 0 0 0.4294398381 0 8.650755858e-11 0 0 0 0 0 6.299763353e-12 0 0 1.497197053 14460.75402 0 0.000218154601 0 0 0 0 0 0 1.575626906e-09 0 0 130.5605114 0 0 0 0 533291.4501 1.493982405e-30 0 0 0 0 0 0 0.001021411305 5.959970577e-06 0 0 1979.423088 0 2.867832653e-12 62.72700343 0 2.40540462 0 0 97437.37427 0 4.107671676e-06 0 0 3562.597151 0 5.964362735e-06 0 0 2.661722682e-10 9.257921586e-07 0 0 0 1.755566285e-06 1.998369959e-23 152829.2661 0.006941140533 0 2773199.029 3.271057713e-15 6.664691743e-10 0 0 0 0 1.212381904e-14 0 16967.77561 0 0 0 29067.34394 0 1.343591157e-12 0 0 0 3.160838929e-10 5.286248249e-10 4.083695635e-10 0 0 0 0.002927303706 0.003973459727 0.007695560962 0 288628.6984 2.735508316e-08 0 5.985896359e-05 0 2268.877706 1.312620742e-08 0 3.042360984e-10 0 424658.7353 0 103438.7879 0.000177244937 1.29175765 3.612616126e-08 0.10333983 1.688844047e-13 0 9.157558854e-17 0 0 3.186113121e-12 0.0006761118853 0 0 0.2175894662 4.336767323e-23 5.022864241 0 2.763093322e-12 90.90272908 0 2.96271497e-12 0 0 15.75583318 0 0 0 2.543598331 2.520961762e-15 0 4.54265695e-15 0 0 0.0003006848604 0 1.435584882e-14 7.105203834e-21 0 0 0 4.094883236e-10 0 4.63636919e-09 6.17023568e-15 0.000357941843 0 0.0002444295263 0 0 0 2.010545639e-05 0 0 0 1.144271555e-13 0.004913734433 4.444735675e-05 89240.32867 0 1.427350822e-05 0 0 0 0 1.71777968e-09 1.043484145e-09 0 97.20610047 0 3.678145993e-11 4.67214008e-10 8.604536051e-13 0.009206194162 7636.364483 7.195369008e-06 112532.8852 0 0 5.157751399e-12 0 2.307819246e-10 0 6.774225862e-18 0 4457.666269 0 0 1.246848915e-32 1.800231102e-05 2280.456598 0 0 3.055482151e-07 0 0 1.18887746 0 0 0 0 0 123021.1064 0 0 0 0.6957134253 0 1.030908434e-05 1.881287373e-11 0 1.659749788e-15 0 3.672587171e-07 0 0 0 0 0 13.7196933 55.68214525 0 4.368765242e-13 0 24549.42824 0 0 0 0 0 10.1588256 0 0 0 0 2.21872326e-11 0 0 0 0 0 0 0 0 0 0 0.0002213940138 0 0 0 1.776307857e-13 0 3.430475155e-12 0 4.807608401e-12 0 3.304227845e-07 9.099309509e-20 0 0.0001909118455 0 7.651340361e-05 0 0 0 0 0 0 0 0 1.8850296 0 0 2.784769841e-14 4.046356347e-16 0 0 0 0 0 7.054482957e-12 1.726176461e-12 0 1.829336627e-36 0 0 0.1671108978 +0 0 0 0 0 0 0 1.013562901e-06 0 0 0 1.743216004e-09 0 0 0 0 0 0 5732.588861 0 0 0 0 0 1.645229433e-15 0 2.764887051e-06 0.007065102614 0.0002156412512 2.105576719e-18 0 0 0 1.424545155e-06 0 0 1.85127668e-12 0 34569.16611 0 0 0 0 0 0.0003491669399 0 0 0 4.223659401e-18 1.576397174e-11 0 0 0 0 1.102103914e-05 4.461795655e-15 3.649501434 0 0 0 0 0 0 0 0 0.09999215655 2.960804681e-15 0 0 0 0 772.2641603 0 1573.704519 0 0 7.613993001e-05 2.856604403e-07 0 0.001496107452 0 0 0 0 0 2.412361157e-08 0 0 2.14883943e-15 0 0 0 0 1.051779191e-07 0 0 0 1957.08617 2.334796125e-06 2.971148735e-11 0 1.125343274e-12 0 19.29668753 0.6349791432 3.822342325e-05 6.741393369e-06 0.0002226094761 3.537949902e-07 0 0 26.10070855 0.05607845091 1574.532666 0 4.422020327e-08 554.2670982 4.400935933e-14 0 0 0 0 0 0 0 0 0 2.478829152e-10 0 1882.985035 1.118521133e-12 0 0 0 54.41925836 0.06963943505 1.65345472 0 1.454923616e-06 4.115420969e-06 0 1.066189866e-07 3851492.463 0.0349547197 6.781798498e-22 438560.5531 0 6.061059246e-06 3.138853085 0 0.0001962283881 4.480175854e-14 0 69723.34325 0 3.492007907e-05 0 1.592790987e-15 0 3.724666663e-30 0 0 2.364487889e-09 0 0 6.448690964e-10 6.729145925e-14 1.406546941 165555.3081 0 1.230163048e-11 538927.8523 0 1.978518122e-25 0 33288.47599 5.679228237e-15 0 0 0 264450.3956 0 6.255712331e-07 0 0 0 0 8.245657568e-09 6.642334149e-12 1.603388637e-07 350634.8865 1.143139502e-12 10.34912622 14899.34862 0.0001389414136 150767.0498 0 0 5.82631838e-05 324116.4643 3.913910204e-08 0 0.1098278352 0 0.06234931422 3.634798587e-22 0 0 0 0 0 0 5.677404126e-10 3.977050924e-18 0 2546320.645 0 0 0 1.587677304e-07 1.455905637e-11 0 0 0 3.838454536e-14 4.224007955e-07 280.2303766 0 0 0 0 0 0 0 1.319510332e-18 1.362822172e-07 0 312676.5201 0 2.790429828e-07 6527.393638 0 0 0 0 0 7.518581514e-27 0 0 0 0 9.215714528e-13 0.8376752046 0 0 14.25967008 0.3670489984 0 0 5.776994204e-17 0 0 0.00475606104 0 0 0 0.0002989243244 0 0 0 5.032309684e-06 5.753454357e-07 0 0.06932717636 0 0 0 0 0 0 0 0 0 507486.3861 0 0 0 0 0 0 1.263184133e-11 0 0 0 0 5.51933968 0 0.8383544292 3.000038728e-15 0 +0 0 0 0 0 1.55100767e-07 0 0 4.684439077e-14 1986100.754 0 0 0 0 0.1284597769 0 0 115101.0294 0 504.2501235 0.04377937846 0.0005202985639 0 4.194651545e-18 0.2484420717 5.543175021e-09 0 0 4.720013207e-13 0 0 0 0 592946.8469 1.625315059e-06 0 0 14128.99711 0 0 1012.845624 0 0 0 442435.8368 0 9.643894992e-06 0 1.336113389e-23 0 0 0 8.782374303e-05 0 0 0.002149161788 0 181.9498378 1.347634219e-14 2.19811792e-09 0 0 268.5441847 4.846443357e-09 1.141062969e-12 0 9.212209487e-12 330.7750478 0 1.431058339e-05 8.479973839e-07 0 0.00707964563 0 3.941819316e-09 0.001148359064 200381.3564 8.120400736e-19 0 393144.5312 0 14.93639825 0 0 4.733227004e-06 0 0 6.962686059e-28 0 0.07915400326 214922.4353 1.092079591e-13 135623.6962 6.50042329e-11 0.07501854435 732.8397534 0 0.000514463402 0 0 3.412021999e-14 4.976699031e-09 0 40578.81706 341138.2804 0 1.2182399e-13 0 0 26812.53793 0 0 2.326562743e-16 1.413067816e-06 0.0002403142926 0 0 0 1.197892424e-13 68871.6301 1.39131619e-10 0 0 7.999442134e-07 0.04977582017 3.033459875 4.075492923e-18 1.224321343e-14 0 0 14200.3061 0 4.396393288e-10 1.495953181e-16 4915.271027 0 0 2.659176372 7.99443952e-30 2.922977543e-17 0 0 0 7568.029 0 0 0 33.12641153 1.558035162e-05 0.2078259531 0 1008141.994 0 0 5.052773164e-07 0 2.608536239 0 0 0 5.229702788e-08 0 0 0 0 0 0 2.282384406e-05 0 8.836828729e-28 19330.29019 3.410560467e-11 0 0 108744.9826 0 0 697861.0712 1.376433262 0 4.243482056e-08 0 0 407573.7703 0.007227209734 0 0 0 0.006480980937 2.594983142e-07 0 1.852032137e-16 0 0 0 0 0 0 1.056907224e-14 1.81009137e-14 5.209648834e-05 0 0 1198642.404 0 0 0.005190736391 5.999604027e-08 79.91839078 802430.2939 379.1455547 0.004009252976 6.646790657e-13 0 214.1314232 0 4.265465661e-11 471021.5699 0 9.060235149e-16 0 0 1.430445279e-26 4919.73615 0 0.0002819876392 0 56646.32353 0 0 0 6.206520864e-17 0 0 0.07376079896 0 0 0 0 9.531213549e-07 0 18.8014419 0 3663032.256 0 0 2.348957406e-34 0 0 0 0 0 0 0 0 0 482406.4641 0 0 0 0 0 0 0 0 0 0 0 3.349038506e-09 0 0 0 1.539224022e-07 0 0 3.463027288e-09 0 0 0 0 38.96597575 0 0 0 0 0 0 16.28960217 0 0 0 0 5080.568329 0 0 2.003480863e-05 7.236140456e-13 0 0 0 +0 0 0 0 2.73721802e-21 99143.30196 0.05904440795 2.774052555e-10 0 0 0 0 0 0 10230.87679 0 0 0 0 0 0 0 8.311805518 0 4.815247637e-19 0.0001011042524 0 0 0.2323354201 0 0 0 3.836962487e-09 0.9125777119 5.096778215e-10 0 0 2.563731789e-12 0 0 1.103829628e-14 875378.4585 0 8.718633887e-11 0 119143.7615 0 3.315212195e-14 0 0 0 3.884487244e-08 0 0 0 0 0 0 0 7.43442279 2.607489714e-14 4568.211152 5.972309279e-05 8.067975963e-14 0 0 4.083983376e-06 0 2466.213638 0 0 0 136374.5861 0.0005287011155 0 0 4.788985279e-14 0 0 0 0 6.291702918e-10 0 0 4.187328689e-05 0 2.719277399e-10 0 0 0 0 0 0 0 0 0 0 2.74102927e-11 4052.465394 178485.0841 0 0 0 0 0 0 4.746518905e-10 0 897.290108 0 1.486453712e-12 0 0 0 0 6.301021163e-09 0 0 0 3.732558227e-07 0 8.430364745e-08 9.168478193e-06 5.291074239e-23 0 122.6838307 0 75471.66959 2489864.63 1.656425969e-05 0 610.6870772 0 4.789578645 5.069564042e-12 1.837192762e-16 2.508368532e-05 0 9.789745207e-21 7.661717163e-18 0 2.710849912e-23 0 0.07248424625 2.151714652e-18 0 48.95493363 0 2.23634472e-14 0 0 3.140682785e-14 3.832845396e-20 4.033882476 0 406941.524 0 3.496389072e-12 0.001022181663 0 0 0.03270485355 5.91265848 0 1.010142984e-18 1.84288981e-14 0.00152709921 0 323133.1234 53405.118 0 280884.5378 0 0 0 21.19724515 0 0 0 0 0.0002397824744 1411682.323 0 0 2.501204619 0 8.194241114 12.65656441 0 0 23354.15243 0 0 0 0 923320.8438 0 0 0 0 3.650735647e-06 13.35945526 0 0 1.901260924e-12 7.806143181 0 1.942868309e-08 0 0 36.63404042 1.01008849e-07 4.956735622e-09 0 0 41.73361572 583.7193336 4.685560314e-11 0 3873.682798 0 0.004341310757 0 2649073.302 8.001509456e-09 4.399765108e-20 0.02698917774 1.974844644e-11 0 37.41642767 0 0 0 0 0.1292065254 0 0 0 224.3434847 0 0 0 0 0 7.922793034e-09 6380192.912 0 0 0 6.593184355e-05 9.567108719e-13 5.632593819e-12 1.796487864e-13 0 0 0 0 0.001763349145 0 0 0 0 0 8.87039841e-10 0 0 0 6.708319985e-14 0 0 0 0 0 199784.9842 72406.05447 0 0 1.689100499e-22 0 0.1747626172 0 0 5.325534086e-08 3.776187453e-06 0 0 0 0 0.07831850661 82187.70955 0 5.912650444e-09 0.01136060877 0 12.17650248 0.001711165046 0 0.8833422021 0 0 +0 0 0.1239667705 0 0.0006669225973 3.624374232e-20 0 3.958054774e-13 1.804121069e-17 1.101042366e-06 473539.3815 0 0 1.499486384e-14 0 2.189806436e-12 0 215.1441017 0 5.161834021e-08 0.06518136977 0 2377000.813 7.244154624e-07 0 0 1.624350122e-28 0.001441145082 0 4.294597192e-09 4.067280173e-09 2.905636862e-14 0 0 0 0 0 0 0 0 0 0 2.124231157e-09 0 40993.11715 0 0 0 0 0 1.552833204e-13 0 9.374802459e-06 0 0 0 0 0 0 0 0 0 0 0 3.86788468e-12 2.186199171 0 0.9962635297 6.795592625e-07 5.723231857e-19 0 0 1.644111919e-14 5.810550587e-06 0 356892.3435 0 0 1.410531551e-07 0.002307202353 0 1.810025086e-05 5772.946093 0.0001040089289 0 0.2048807771 1.196260846e-08 0 0 71.15279833 0 0 0 2.057900717e-08 0 0 4.768567002e-09 8.843309075e-09 0.09289323399 0 3.639192977e-09 4.273880156e-07 0 4.402505724e-11 0 0 0.995924697 0 2.79814783e-05 2.92490427e-12 0.0005374885873 0.001842912256 2.570585455e-14 0.002511285957 9.266407595e-21 0 0 0 0 0 0 1.322961193e-12 13.6522725 0 3.353023236e-25 0.0002815937132 6.75974131 20466.49204 1.87193646e-07 0 0 0.3492173022 6.854469687e-14 1.448669427e-24 0 224872.1606 1.224861446e-10 0 3.693828247e-11 1.122963022e-22 0 0.0004489597474 0 0.01092241019 3.104675736 0 0 1.517840531e-05 0 5.829195039e-18 6.87054871e-21 0 0 0 0 0 1867210.97 0 1293849.881 0.4617371742 0 0 216038.6322 0 4.850872295e-09 1.287269542e-10 3.771662816e-22 3.092159171e-14 1.879338118e-15 1.085011637e-12 1.064613044e-12 465284.9168 0 0 0 0 0 1091.870018 366.9251924 1.538775765e-11 0 0 0 1.300129287e-05 1.625317054e-07 0 0.02529039935 0.003428679967 0 2.898708435 0.07829246417 0 0.002689083918 0 0 0 1961978.375 0 2.305101034e-11 0 0 0 0 0 0 0 0 0 0 0 5.802557609e-09 182831.1819 4.687060898e-08 0 4.531550341e-19 5.92565726e-12 6.041589091e-35 0 0.01415180435 8.630833933 4.263671431e-09 0 0 0 2.127586491e-09 0 227112.551 0 0 0 0 0 0 0 0 0 0 0 0 0 569.6400798 0.003186067381 11.77232513 0 0 0 1.245836851e-21 0 0 0 440.393965 3.357665768e-08 0 6.941233908e-11 0 1.10168807 2.818921906e-21 0 340219.3182 0 0 0 0.09545589748 3.635894775e-05 0 1.244474684e-05 0 0 0 0 0 0 0 293340.8596 2604.624826 0 35511.47037 0 2.392789281e-14 0 0 0.04188104165 1038.026932 0 0 0 8.361955389e-05 1.582530666e-12 2.227983716e-17 0 0 0 1.188775347e-22 5.710120749e-17 4.022857468e-10 0 0 0 2.519966634e-09 3.41087431e-09 +0 0 0 0 0 0 0 7.768209737e-24 0.0002897781143 0 2106.891719 99487.90656 0 0 0 0 0 0 615.2171489 0 0 0 0 3213799.833 1.157369582e-05 0 0 0 0 0.001109467421 1.48967248 0 1.684762924e-09 0 8.376942338e-06 0 0 267199.1469 22273.68712 0 0 0 0 1.464584743 0 0 0 0 0 0 0 6.090778776e-14 0 2.980814261e-24 0.02527575267 1.412501624e-05 0 0 0 0 0 8.858958281e-10 0 0.004883214956 4.038752874e-08 0 8.234106618e-16 6.742228562e-14 3.675060922e-25 6.59449228e-08 0 5.184175099e-15 0 0 5.669700062e-20 0 2.678481287e-05 0 3.567257614 1.787923349e-05 0 0 3.274757936e-09 0 0 0 243667.9558 2.379765401e-07 44024.59212 0 0 286748.0869 0 0 5.458928615e-09 833686.8763 0 1.009636384e-10 0 0 0 0 0 40151.03497 2.639897927e-08 0 0 1.459206371e-12 0 0 1.456466666e-06 2.044105853e-18 0.06584549946 1.902359182e-06 120.7188154 0 0 0 0 2.271612784e-13 360552.057 5.864490318e-10 0 0 2.023153205e-10 5.182768812e-06 3.683274176e-13 0 0.03938872451 0 546725.9061 0 0 6.047480349e-10 0.05441555308 0 1173.005222 0 1.106569741e-08 0 0 0 1054278.713 0 0.0004113080684 0 0 0 0 0 0 2.321949295e-16 3.214531884e-13 0 5.472457249e-08 0 0.6010075243 0 2.783618989e-12 0 8.839846908e-08 0 0 9.202880001e-12 0 0 0 0 4.708471174e-10 9.220155371e-09 0.0001228611788 8.500056513e-14 3.300514677e-08 1.856125483 0 2.884126972e-10 0 0 150.3700017 0.003248927184 2.037889659e-16 0.005741811859 0 0 0 13485.27829 4.18299755e-06 0 0 0 771.8123686 0 0 0.000248278101 0 22.53841182 30410.853 0 0 0 2.887169958e-12 0.3213256624 2.451131744e-17 3.598552917 0 424951.8385 9851.894207 0 4.888761571e-12 4.056520666e-06 0 8.772859423e-21 5.686291245e-09 0 9.759253166e-07 0 3.04910496e-07 0 0 0.003499861589 0.001329602513 59061.2759 0 0 6.84567298e-10 0 1.716308535e-10 5.850282202e-11 0 0 1.690012709e-13 5.075073146e-06 48156.76771 0.03141891098 0 0 1.743980554e-21 0 64.79930306 0 0 0 0 0.02465331091 0.2731473726 0 0 7.634142417e-12 0 4114.23666 0 0 2.660356451e-07 3.136872517e-13 0 7.700720626e-13 1.999765346e-06 0 0 0 436.3443912 4.160568437e-13 115319.5164 11598.27222 213466.7689 0 0 9.409065632e-08 0 2.058020826 0 0 1427867.249 0 5.302778718 0 0 0 0 0 0 1.498800232e-11 0 0 0 0 1.308115023e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 5.590784147 0 0.2312929332 0 0.007475620608 0 0 0 0 0 0 0 4.483764396e-09 13.28044158 0 0.05806496667 0 0 0 0.001247524952 32118.28478 0 0 0 0.002230169775 0 0 0 6.762207653e-17 44.74017431 0 0 3.593469223e-09 0 0 0 0 0 0 0 0 0 0 0 0 2.239695667e-10 1.541270003e-10 0 0 0 0 0 2.142518783e-16 0 0 0 0 0 208390.8963 0 0.0006598979375 0 0 332145.5944 0 7.464823215e-12 1.284614009e-22 0 0 0 7.705844404e-12 0 0.04895131865 0 0.1700878346 0 0 0 1.283578993e-19 0 0 11.66133743 0 6.598106987e-09 4.423485998e-11 0 0 4.557015952e-10 1.61909742e-07 0 14.36607903 0 0.003698201079 1.300308074e-05 8.456438288e-05 4.982072973e-29 0 0 7.991690201e-06 0 1.181364406e-14 0 0 3.385702534e-07 113746.5652 0 2.041325875e-14 0 0 6.079402097e-07 0 1.280693262 0 0 0 2.428888085e-10 4.619809229e-16 0.8265525602 0 0.006815180922 0 7.460566594e-13 0 0 7.51147353e-18 9.163202943e-09 9102.203409 0 442.2091155 1.458733182e-09 0 0 1.390022978 2.067863314e-10 0.6754189584 6.903791242e-10 0 0 0 5.427922677e-08 916901.1326 0 4.8945262e-10 0 0 1.589749407e-12 0 0 0.03379657282 0 0 1.925839835e-06 0 0 3.552997292e-05 0 1248794.956 2.567228311e-12 0 5.190677154e-07 5.290601044e-11 0 1.798834592e-06 0 4.093987736e-13 0 0 0 4.024792569e-13 0.01068978922 8.356940978e-07 1965.534377 0 0 9.88764319e-06 0.05356133565 2.582066391e-14 0 0.0001669140457 558295.4695 25.06844382 0 14.86069739 0 372.2501099 0 3.811010238e-06 0.000212311947 0 0 0 0 2.073702024e-09 3.385108526e-05 159.2366776 567.0828991 0 0 0 5.126965241e-15 145927.8594 4.069107572e-06 3656588.503 0 0 1.551613664e-05 5.061379454e-08 0 0 0.6719785427 4.042521175e-09 4.012857277e-09 0 0 0 3.565612891e-14 0 0 0 12.94338635 53.5200473 20704.88005 0 0 0 0 5.058298513e-17 0 2.870103473e-09 0 0 0 404.9747496 2.546402071e-07 1.609162227e-06 0 874423.7525 0 0 2306.785332 0 0 2432.599242 0.0001000137763 0 0 0 130.7260878 1883058.686 0.009381725038 9152.474031 0.2139286841 0 0 0 7.403501676e-26 169837.4466 0 0 0 0 0.002525573798 0 0 0 0 0 1.847961726e-07 244200.5773 0 0 0 0 0 0 0 0 0 0.01804213571 0 0 0 0 3.303145513e-12 0 3.017197051e-12 0 2.107015303e-07 0 0 0 0 0 0 0 1.942458824e-13 0 3.547541693e-17 0 +0 0 0 0 0 0 0 0 0 0 0 0 9.364441774e-07 0 3.683533436e-13 0 0 0 0 0.000167639061 0 0 2.189179876e-09 0 0 0 0 0 0 6.333931862e-09 0 0 0 0 0 0 7.38207096e-10 0 0.0001075198376 0 0 0 0 0 0 1.696030613e-06 0 0 3.788611938e-08 0 0 0 0 6.45410034e-28 3.46694437e-14 1.176536019e-15 0 0.04845902783 0 2.355245006e-09 0 0 8.833803937e-14 0 0 0 0 0 0 0 0.4315366719 0 0 0 13.15097637 4.439403136e-08 1228.137838 2.774686457e-11 0 0 155582.5386 0.4992988876 0 0 0 0 0 0 0 2.105053049e-12 0.001009391747 0 499645.5989 9.98604206e-05 1.689208115e-19 774.5013128 0 2994792.75 0 0 0 0 2.950083897 0 0 1.143775109e-16 0 1.076455492e-21 0.08178142272 0 0 0 0 2.176029035e-15 588067.643 0.0001026702869 1.157648381e-09 0.0001428988268 5.78982052e-05 2.499494969e-15 0 0 153421.2969 0.01837792459 0 0 2.939536321e-16 0 0 950.6659366 0.0005204390251 0 0 25302.36888 0 0.0006919357421 0 3.679108858e-16 0 0 265523.2148 3.163072684e-06 1.980877503e-10 0 948.7605818 147782.4512 0 1.516752496e-06 2.546743063e-22 0 402573.0291 26.57353821 10177.07915 9.355008958e-09 0 1.472902106e-05 0 0 0 53.12111157 0 0.2540530113 0 2.301073352e-13 1.800591869e-11 0 0.5090986472 0 5.690922391e-21 0.01664393816 0 0 0 0 1.039874386e-12 3080292.428 1.912115835e-10 0 1.14086303e-08 3.15533168e-13 0 9.634535174e-19 0 0 1.13997945e-14 0 0 0.0004136955653 0 1.108794625e-12 2.782378936e-10 1.74061764e-11 2.963974251e-11 117.2691338 0 10.3020804 1326.761336 1102.440339 0 0 12.68341916 0 0 0 0 0.01818540824 3576.563924 6.322515089e-16 19.48619605 7.238603723e-25 5.619195918e-22 0 340.4758011 1.092578998 52619.92034 0 0 34215.08679 1791862.034 0 3.797326838e-19 8.043915978e-16 0 0.0007957695016 0 0 0 0.002041542571 0 0 0 0 6.778375957e-07 0 2.398992155e-06 0 0 0 0 0 0 371996.1657 0 0 0 0 0 1.054254603e-06 0 0 0.2815870221 2.985156532e-16 0 8.189510749e-17 7.79983654e-12 0 0 0 0 0.000179526715 1.067130771e-12 0 7290.221042 0 2.079461681e-21 0 1.881045027e-29 0 0 0 0 0 0 0 792417.6976 0 0 1452.046561 0 0 0 0 0 631631.5527 0.0001677622001 0 0 0 0 0 0 874.002247 0 8.964366009e-10 0 18.4605069 0 8854.872216 0 0 +9.38297451e-17 0 2.85906039e-05 3.562362434e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 697.3067484 3.01007284e-05 0 0 0 0 0 0 0 0 1.156537722e-13 0 2.246066587e-09 303.7527309 0 4.096770168e-18 0 0 7.166815423e-17 0 0 0 2.363961781e-05 0 0 0 0 0 4421708.758 0 4.199717354e-22 8.536037714 0 0 3.837527062e-20 2.338556506 0 0 0 2.746166466e-16 1.116995318e-10 0 5.461075783e-09 0 0 22.43996907 1.796806937e-22 0 0 8.428702688e-05 0 0 0 0 1.822252589e-08 14755.52691 0 0 0 5.857835124e-16 0 5.641661616e-06 0 0 0 2.47655355e-11 0 0 0 0 0 4.20067431e-08 0 1.790048777e-09 0.01382060934 0 8.557351381e-09 0 4.21012293e-05 0 0 0 0 2.408750559e-19 0 0.0004465118086 0 7.543857917e-05 2.938779231e-06 6.534948508e-05 5.764636248e-15 9.125064675e-05 0 2.828623502e-13 0 2.147179424e-05 0 0.000326373366 3.446804241e-05 0 0 0 361933.351 0 2.725670117e-09 0 24834.57716 0.0007279161498 2.496632513e-17 0 0 5.656528401e-13 141.1932356 20952.34133 0 0 0 0 0 0 5.376783526e-12 0 8708.910025 0 0 0 0 0 2626.064846 0 0 9.199585972e-36 1.79227879e-06 0 1.383491202e-26 3.164782301e-10 0.5163475753 363.8160631 0 3.851556389e-18 1.732653701e-15 105.5572417 0 19861.61614 0 0 0 2.15645507e-09 0 0 0 0.2573055041 8.043318315 2753.022797 0 0 0 3.847262244e-15 0 8.180486255e-05 0 0 0 0 0.003869496466 5.438838579e-11 0.01340741928 0 1571.144269 0 5.147717303e-14 64.61530415 1.92837454e-11 0 0 0 0 0 1.109832161e-08 1.344982023e-08 0 6.261120823e-09 10.91778613 3.481982596e-08 2.816888052e-11 0 1.347340245e-17 1.320942327e-12 0 31.50320088 0.0006367182227 0 0 0.0009276991468 198198.5296 0.004670467332 26.19520546 0.003409186658 0.1625030862 1.611886992e-16 8709.200662 0 0.1014456328 0 0 0 1.417614778e-10 3.839447097 1.664513478e-11 0 370.9137376 0 0 0 3.267384649e-14 4.828205793e-12 0 0 0 5.73834287e-08 0 0.005755066309 0 0.0002899264568 0.0001652374228 0 0 21.7064389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.644315021e-08 0 449516.1966 1119531.474 0.004194953085 0 43950.0619 0 4.433515636e-30 0 0 0 0 0 0 309284.818 0 0 0 0 0 0 0 1.52307028e-12 7.862330823e-14 0 0 +0 0 4.661962183e-07 2.592297715e-13 0 0 0 0 0.0004562541152 1.795870134e-13 0 0 0 3.648615002e-16 0 0 0 0 0 0 0 0 5.760879957 0 0 0 0 0 0 0 0 0 151264.0038 0 0 9.518768655e-06 0 0 330073.8518 0 0 0 0.006469930039 0 0.01540788456 1.145957183e-08 0 0 3.746579392e-08 0 0 410.3446853 0 5.32529711e-12 0 0 2.643121739e-09 0 0 324016.4685 1.732731151e-15 0 0 0 0 0 0 0 0.09032981505 0 9.419391199e-08 2.102161534e-06 0 36238.81344 2.599800407e-07 0 0.005366189174 1.026243313e-10 0 1.653730967 1.650814852 0 0.01562016125 0 38.20439663 2.398571138e-18 324263.7289 0 1.003616422e-05 0 0 3726.752366 3.919903634e-08 0 0.09449559632 1.841808156e-07 0 0 52982.86282 0.01300042883 1.019589308e-13 0 2.321775518e-07 0 0 0 5.687006722e-25 2.517609941e-10 85.60418241 0 1.694380012e-19 0.3505027756 4.358859582e-27 2541.877765 0 0 0 1.042951221e-12 0.00478324426 186241.907 0.005357340162 0 0 0 0 0 8.731244335e-08 0 6.169608303e-07 0 14281.75989 0 0.0001998013734 236.0499979 0 0 0 0 2.534272215e-06 5.447045531e-14 0 0 0 2.661365334e-17 5.045366136e-15 0 0.8825402224 0 0 0 0 0 14.7349245 13.34461299 0 556.842672 2.801434804e-11 0 0 3.158466477e-05 0 2.043275305e-13 1.903726692e-14 1.866486626e-10 0 0 12921.19503 4.118099277e-06 0 0 0 2.827649092e-15 0 0 0 5.515671123 0 0 0 5.454504325e-06 1.074559478e-06 1382882.752 4.36249456e-10 179957.3545 3.109788668e-06 0 9.357989515e-05 1.14474953e-06 189.4632094 0 1.147882183e-19 1137.150551 1.795098569e-10 0.01073427335 0.000358474705 1405346.153 9.096326254e-17 6050204.007 0 9.756504704e-06 0 777360.6545 0 0 0 0 9.466628249e-11 0 5.248681494e-06 4.043615917e-08 5.590991302e-10 0 1615462.891 0 835.4666014 0 0 1.798480971e-12 0 2545.573833 0 55679.37348 0 0 0 0 0 4.25105857e-05 0 0 0 0 478260.6043 0 0 0 2.683111422e-11 0 0 111232.7055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007043457586 0 0 0 0 0 0 1.386732981e-13 0 0 0 0 35364.64615 0 0 0 0 5644.404057 0 0 5.266484426 0 1.379596717e-05 2.662885484e-15 0.0001177923081 2.54645951e-11 0 0 1.348138792e-07 7.329400089 0 0 0 0 4.300622548 0 0 0 1.873838079e-14 0 4.386470994e-05 0 0 1.416420327e-06 10.30276839 +0 0.001805174643 0 0 0 0 0 0 0 0 0 0 0 0 0 1.289657929e-08 0 0 0 0.03785265601 2.996363662e-08 0 5.510880152e-27 3.969853698e-16 0 5.235069893e-08 0 2.020407966e-07 0 0 0 3.469980317e-09 0 0 0 0 0 0 0 4.777517944e-12 0 0 0 0 0 1.878294638e-09 0 0 69.37335719 0 2.896340373e-09 70680.78783 0 0 0 0 0 0 0 0 0.04733401929 3557.680062 348036.8802 0 0 5.742907079e-12 0 1.080115831 0 4.594949394e-16 0 0 0 2.411015988e-05 0 206973.4076 2592.705818 6.990817875e-18 4.094364554 0 0 0.01498384325 1.179976204e-14 1.274948878e-07 0 0 0 1.025947979e-17 104533.2697 0 1.802442245e-08 0 0 10946.10654 0 3.958768902e-07 0 5.924687976e-09 0 0.4635486178 0 3.708907543e-24 0 0 0 0 3.165052702 3.098768244e-10 1.102986679e-11 3530.035206 1.271275237e-08 1.121705383e-08 0 0 0 1454068.441 2.805694804 0 4.834958652e-14 0 0 21.93456046 0 0 0 0 0 2.051054059 1.924527482e-08 0.002616955467 0 0 1.46062547e-09 5.689979063e-06 0.01991129115 5.372771215e-05 2310.801432 0 0 0 0 0 4.002830964e-27 408270.6193 1.053775157e-15 0 32.60038882 0 1.090373224e-08 0 3.372608277e-11 370169.315 1.086576714e-09 0 0 0 1.312856617e-21 0 9.646813933 2.1522814e-10 327577.6684 8.211044156e-15 0 1875.26141 0 0 8.494045823e-05 7.588384611e-08 0.2739770454 0 0 2.347194985e-12 3.539803564e-16 0 1.699027469e-08 0 7.972016372e-18 0.0001936338852 6.263892321e-05 0 3.006022542e-10 0 5.021669412e-08 0 0 0.3699129652 0 5504.223109 105.6435364 0.0001965441781 0 2.91587589e-13 33903.49464 1.869953114e-12 15.55466351 0 0 0 0 4.942582231e-14 2.2358333e-05 0 3.905564203e-09 89.67413686 0 0 0 0 4842.389157 0 0 0 0 3.650189408e-24 2.552552329e-23 0.0001715808915 172494.4737 1.531165448e-05 0.1608922856 0 0 0 0 0 3.697558427e-05 284.8164209 0 0 0 0.001317036841 43218.35986 0 0 0 0 0 0 0 2.55623197e-08 0 3.109642732e-13 0.0003704844988 361566.8406 0 0 0 9.655235487e-19 6.476279949e-18 0 0 0 0 0 2.956173039e-11 91.90219862 0.002813289826 0 3.84540275e-05 0 5.867474478e-07 7.505065112e-09 9.373486623e-26 0 0 4.799210268e-12 0 0 0 1.87824062e-07 0 0 9434.184377 0 0 0 1722.602034 0 0 0.0960728583 0 0 777498.9047 0 0 0 8.162669753e-06 0.0003967842881 0 0 0 0 0 0 249224.4614 1.132452101e-27 0 0 0 3.93300205e-11 0 +35.52528917 0 0 0 427801.6024 0 0 10.56076304 0 0 0 0 0 0 9.662427671e-10 0 0 0 0 0 0 0 0 1.850017819e-18 0 0 4.191642178e-13 0 671927.0602 1.46621995e-13 0 0 0 0 16252.26681 0 0 0 0 0 0 0 0 0 0 0 0.0002326532616 233898.5482 0 0 6.294583273e-10 0.07286270449 0 6.392222741e-06 0.0005684341779 0.0002867121874 0 5.254360165 0 112.7682627 1.242703626e-11 0 0 0 4.881357923e-06 7.317660656e-15 0 0 3.664640962e-06 0 1.103350401e-08 0 0 2.345591067e-09 43876.82808 0 0 1534.375663 0.07931074962 0 0.0008583095373 0 0 3608135.181 0.6764539703 0 7.318304498e-12 0 7.186046448e-05 1.28545813e-10 8.599418535e-15 0 0.001968890616 14096.08359 9.418257931e-14 0 6.922481678e-20 0 0 0 0 7.027500578e-16 0 0 351522.8695 2059992.385 0.004923396409 0 0.0009629986811 0.01267352487 1.550241482e-22 0 0 0 0 0 0 0 10492.27098 0 2.374881753e-18 0.002695179829 1.561300698e-06 2.900839728e-10 1.482255442e-09 0 2.578302023 0 271795.187 0 642711.4014 0 0.0004051717145 330311.7005 0 3.305281585e-16 9.483181203e-24 0 0.0008249154008 0 0 0 0.004173645624 3353.445082 0 21963.68924 0.000702922616 46081.70401 4.866393267e-12 0 0 355518.413 0 1.859461899e-08 67268.67058 0 0 0.0002807850673 5.438355429e-09 0 146768.191 9.544903662e-08 0.0007004343411 0 8.00273683e-09 0 1.626728229e-13 6.352711337e-13 8.840125469e-08 0 5.286854729e-10 0 0 0 0 0 0 0 0 2.569629789e-09 8.1193384e-16 2.873453881e-10 3.280429814e-09 0 446200.5564 1.281018697e-09 4.533263403e-11 1.598674148e-05 0 0 0 6.920228511e-16 1.643356371e-08 0 4.466249009e-25 0.04630058647 5.421937037e-07 4256.016099 429214.6279 150501.9125 0 0.4331668597 3.298495701e-14 0 3.804864282e-06 0 0 6.49327843e-13 0 0 0 0 0 2.393024594e-06 0 0.001846719642 2.078155465e-09 0.006872692051 0 0 0.001846211153 0.05008583559 0 0.003752865156 1.402448228e-17 0 29449.34653 460714.7055 0 0 0 0.0001788510453 0 0 0 1.169108521e-18 0 0 0 0 122323.5009 0 0.0002567500808 0 0 0 5.756217315e-07 0 0 0 0 0 0 128.4103361 0 0 0 0 621.1981208 0 0 0 0 0 0 0 2.819423866e-11 55140.97223 0 0 0 0 7.983930204e-28 3.53811554e-06 0 0 0 0 0 692.3547776 0 0 0 0 0 0 7.941172362e-15 0 9.224401841e-06 0 0 9.760486404e-29 8.127073035e-05 1.819047782e-05 0 0 3.031457017e-12 1.038334512e-06 0 0 +0 2.17543108e-11 0 0 0 31.04007215 0 102.2255977 4.05130124e-14 0 4.985749119e-11 0 0 0 0 0 0 0 0 0 2.664749836e-13 2.531920122 0 8.307688783e-05 0 0 0 1.129430326e-19 3.7591862 0 0 0 1.64480138e-12 0 0 0 1.532059993e-14 0 0 2.063408041e-10 0 0 0 7.875274914e-05 18332.23997 0 0.002626162523 0 9.275268516e-09 1.758664467e-08 0 0 0 0 0 0.002381974231 0 6.803566019e-06 0 0 8.04520504e-14 0 0 0 0 0 0 3.328292003e-07 0 0 0 410.5900945 1.070795479 0 0 0 0 0 0 0 0 1.546253505e-05 0.002288570906 2.281653629e-07 0.0003000100434 0 0 2.724167951e-07 0 0 1.903243758e-14 0 0 0 0 0 0 0 0 0 7.929275731e-17 1.249626955e-10 2442.857168 0 2500.411399 91.45173986 0.1319912941 0 2.281916049e-07 6.036450369e-06 0 0 5.089155541e-07 4.932623224e-09 1223.767901 0 0 0 5.147485058e-16 4.820434756e-06 0 2.81611182e-07 0 0 1.830671713e-18 0 0 0 7.361423549e-20 30628.24505 0 0 93393.01304 6.096326768e-17 0.02207053608 0 0 0 7.640220017e-09 0 0 0 0 28.76034494 0 0 0 2.321130526e-08 0 0.01072141338 0 0.009717301926 8279.374875 0 6.861992698e-07 3.661767196e-11 0 1.449248492e-12 4.615686455e-17 0 0.3736916652 0.0001313687256 0.000976003571 2.328984159e-18 0.00106722943 0 602611.2215 0 0 1.951034741e-13 5.349144451e-15 0 1.413385465e-18 0 0 1.886040711e-06 0 0.003207006478 0 7.079878343e-06 3.003387218e-06 9.21534219e-10 7.782537402e-22 0.02613565178 4.532315794e-14 0 0 9.27397889e-08 0 0 0 0 0 447.0405169 5.015739265e-15 1.955618748e-05 4.965685751e-10 0 0 1.091134442e-05 0 0 1.462171813e-27 0 70.86535048 0 0.0001324731924 0 0 0 2.600563532e-08 0 0 0.03831514442 0.3400001337 0 0 0 0 17.6740005 257816.3142 0 0 0 0 4.209838902e-15 1.386078032e-08 0 0 0 0 0 0 1.462949247e-05 1.890341555e-14 1097283.7 0 47785.56796 674168.6922 0 9.337394118e-09 0 0 0 0 0 2.638442472e-07 4.328871996 0 0 0 0 8040.953112 8.951858463e-14 0 0 0 0 0 0 0 0 0.0002497060598 0 0 0 4.444343216e-18 5.114082998e-11 0 0 0 0 0 6.156785449e-18 0 0 0 0 2.825570039e-12 0 0 0 0 0 0 0 0 0 1.707791899e-12 53.71387846 0 0 0 0 0 0 0 0 0 0 +1905.91453 0 1.343649507e-06 23824.95149 4.497335089e-12 0 0 0 1.258902508e-10 0.003005994975 0 0.0001623464063 32.02142216 0 0 0 4.84115603e-12 0 0 0 0 0.006488591885 0 4.328569943e-15 5.916686479e-09 0 0 0 509677.8206 0 1.902224189 0 0 0 96906.10969 0 0 0 0 0 6.114428761e-07 1.287137472e-21 0 0.0744586806 0 0 0 0 7.581910466e-06 2.60327045e-05 0 0 0.3924805243 0 0 3.024729438e-11 0 0 0 0 0 0.6079443729 0 0.0103390429 0 782125.5003 0 1.531034647e-07 0 4.718276335e-06 25683.19682 0 0 0 0 0 0 0 0 0 0.0002907666803 259960.567 0 0 0 0 2.288030528e-15 0.07597663428 0 0 0 1.423195231e-06 5.56158336e-10 0 0 0 0 2.481211963e-09 0 4.660559336e-10 0 0.1607301126 0 0 94.68638647 1.158541511e-07 0 0 0 240171.4544 0 0 0 0 0.0001125110932 4.958818411 0 0 0 1.193769441e-07 0 2.322616277 0 0.004261052242 0 5.180582527e-05 0 0 1464.641182 6845.238879 0 0.000744319853 0 0 0 6.210390108e-15 0 13.7879306 0 0 166349.868 4.285806147e-23 0 0 1.381478567e-12 9.523388911e-19 1.480601783e-16 0 0.0004746964885 0 0 3.345467229 0 2.861819545e-19 1.932249984e-17 0 4.039162274e-11 2.678494515e-07 0.002302804153 0 2.306109788e-10 0 0 0 0 1.031773582e-16 0 0 0 0 2.165145562e-15 59599.59778 0 0 5.392181039e-06 0 0 3628.265057 2.768148745e-27 0 0 0 0 0 8.029689776e-10 0 5.602928734e-07 0 3.778226178e-10 1.716536346e-15 1.180017329e-19 9.375139582e-11 8069.532882 0 0 0 6.105633732e-12 0 0 0 0 8.28844387e-20 0 5.113500969e-06 0.0001969522797 0 0 0 0.0001930736338 1.652626644e-09 0 0 3.938520435e-09 0 1.51608342e-22 0 0 2.40480542e-06 0 2.87814821e-13 0 0 0 0 2.325364574e-09 0 0 0 0 0 2.697542333e-12 0.0009474607432 0 0 0.5716516284 0 4.819451846e-17 0 0 0 0 5.434162186e-07 0 0 6401.458092 0 0 0.3878153654 0 0 77.26524637 0.4274835 0 2.706192433e-05 0 0 39.33120388 0 0 0 0 0 0 253.6828557 0 0 0 0 0 0 0 0 0 0 0 0 0 1965905.317 12.70449426 598.9256536 34428.57359 0 0 481970.7196 0 0 0 0.02694379186 0 0 0 0 0 3.414878024e-19 8.006880343e-14 0.001368122686 0 0 0 0 +0 0 0 40.74188545 10.03009476 0 0.001246690857 2.090832197e-05 0 0 0 0 0 5.530762815e-10 0 0 3.181603593e-05 0 0 0 0 0 78.67015897 0 0 0 0 2.234101644e-21 0 0 3.422282423e-11 0 1.557575657e-05 0 0 0 5830.383775 0 0 0 0 0 0.03898268739 0 0 2.147076744e-13 0.001490037418 0 0 4.113302685e-06 0.1146316833 0 0 373.0683062 0 1.273488013e-05 0 9.090424576e-28 5.358002735e-16 0 0 0 5.19465581e-09 9.551527739 0.06368709943 3.231056071e-08 9.725933487 0 1.094979893e-05 52.08165278 0 0 30.80923001 2.64837908 0 0 0 3.682824421e-15 9.317380015e-09 0 9.186979964e-07 0 0 0 4006305.748 0 0 0 0.04081306844 0.02606580134 3.476465175e-11 4.089751417e-16 2.804074341e-12 1.053373095e-12 0.09312655567 9.005527617e-05 0 258029.9018 0 0 0.171449884 0.03105800343 0 0 0.01083888299 0 1.643265843e-12 5.13103964e-19 1.011709634e-08 0.0007213272022 26.51110879 0 0.2128068422 0 1067.666627 0 0.05714483844 1.894693806e-10 0 8.955119089e-14 0.004477604933 0 0 0 0 0 78583.28513 1.391623965e-05 0 153.3288871 0 0 1.053532245 0 0 0.05748806407 0 26205.84479 419954.7262 0 0.3166515229 0 1.827209142e-07 6.622106565e-13 0 0 0.1590399764 0 0.002075465921 0 9025336.336 0 0 0 0 3.610292849e-05 1.824557441e-09 0.01407077781 0 2.676077357e-09 1.240219654e-08 0.001795003616 1160.925224 0 0 7.067320557e-13 0 3.916488223e-10 1.002732825e-17 64.44906654 0 0 5.5807642e-24 0 4.761482047e-27 1.209911922e-07 3.40156537e-19 7.020690627e-17 0 0.0001137929544 0 1.350945877e-21 0.5354717541 0 1.813154358e-06 4.867782677e-11 2.662177668e-06 0 1.062911637e-06 0 0.2480697218 0.0005561717404 0 0 0 5.775422779e-08 4.128003293e-09 0 0 0 0 0 6.305416571e-17 0 0 0 0 0 0 0 0 41.56664464 0 4.53194648e-16 96118.98716 1467.001699 2.783659782e-40 0 0 0.04810237917 0 0 4.096133025e-13 0 0 0 9.2177676e-09 0.01608501085 0 0 0 0 0 0 1760866.661 4.254107393e-15 3.798058488e-05 0 0 0 9224.037069 0 5.409920395e-12 0 7.704103115e-10 3.651947552e-14 0 0 0 4.483667503e-05 0.006547198588 0.08089880118 0 0 0 0 0 0 614376.024 0 6.220011718e-05 0 0 0 0 0 33660.90677 0 52276.53562 0.2590726057 2.895732528e-09 30.90192132 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.900277834e-10 0 2.100534264e-10 0 0 0 7.508992619e-07 0 0 0 0 1.474284049e-13 1.744275625e-20 0 +0 0 0 0 0 0.7113006051 0 0 0 0 3.828199897e-05 4266.659082 0 0 0 0 0.00011087693 7.428605508e-20 0 0 0 0 0 0 14.8252628 0 0 6.335127252e-13 0 0 0 3.864968906e-20 0 0 0 0 0 0.005556994283 0 2.419080337e-14 0 7133.186648 0 0 1.143971001e-11 0 7.920727301e-08 0 0 0 0 0 0.01426603023 1023.260759 0 1.902389275e-09 2.812073921e-12 5.797515818e-06 0 0.006741261132 0 2.013951197e-11 0 0 0 0 6.254921769e-12 0 0 332558.6521 0 0 0 0 0 0.02154647793 0 0 102.3460965 179492.121 1.584849376e-11 60.98866199 4.045652027e-05 6.009545428e-08 3.586458128e-08 0 1.100838027e-11 0 0 24.94299157 503023.9395 112791.064 4005.451501 2.523811748e-09 0 0 0.001948584861 0 25.90602977 0 631033.9712 3.644448994e-10 7.023783483e-34 0.1097612547 0 0 3.583890764e-11 3.425880775e-18 3.092228817e-11 0 0 0 0.0001485351673 9.021485943 65.04781481 255795.7142 25636.53205 0 16049.92676 0 6.820719589e-13 0 5.391712092e-05 0 1.457639224e-14 382.6919955 2.634965549e-15 251.8453174 1.443108978e-14 1.123687684e-10 0 0 0 15034.39726 0 0 0 37776.68944 0 0 0 0 6.333386575e-05 5.342328707e-14 0 0 0 0.4693817092 0 0 0.0002481086866 0 715133.7174 35.59483342 0 0 173.8009063 0 0 269403.6066 0 0 0 0 0.01190810455 0.09252308732 0 0 0 0 9.213098735e-06 0 0 0.0001087535434 2.945595659e-08 2.548467035e-18 0.2703300022 6.115806949e-16 0 0 1.782455999e-06 10837.58714 0 0 0 0 4.370210767e-10 1.016940917e-10 36.6746398 0 1.685191882e-16 0 1.086478144e-13 2.743793019e-08 0 1.791353845e-05 0 0 0 0 2.439385056e-08 6.268586817e-13 3.717272145e-16 0 0 0 0 0.001440521267 5.950452282e-12 0.4662916177 2.2737864e-13 118122.8181 0 437.1260425 113.389077 0 5.928183245e-09 5.834849552e-12 0 0 6.427076054e-08 9.876339363e-06 0 0 0 172359.8354 0 0 0 0 0 0 11.12057787 0 425236.4913 1740.228401 1306.873297 1.020183966e-11 0 0 0 0 3.903312748e-08 0 1.325740466e-11 0 0 0 0 0 0 0 2.594646495e-06 8.839665713e-20 0 47.4704346 0 0 648299.2402 0 0 0 208964.4527 2.219591896e-33 0 0 372401.7575 7.143245906e-10 5.105410452e-05 7.83753425e-05 0 0 0 0 0 0.8030376169 0 0 0 0 0 0 0 0 0 0 0 115.0492846 0 0 0 0 0 0 0 0 59.43154203 8.460653506e-11 0 0 +0 1027822.48 2.071194146e-16 0 0 2.371490495 0.01882771527 0 12586.31795 0 0 368.5441121 5.82930671e-10 7.789842124e-12 2.933297631e-22 9.90028254e-11 3.971655744e-05 0 0 0 0 784474.9827 0 7.930924063e-12 0 0 0 0 0 0 0 0 5.994952978e-16 0 0 0 0.6407511173 0 0 0 0 3.768249775e-16 0 0 0 0.001432543676 0 0 5.595158107e-16 0 9.054555391e-20 0 17.9202098 1.708684035e-09 0 0 5830.871187 0 0 1.105399535e-14 0 0.03602324605 1.850276015e-18 0 92.18492962 9.242593238e-35 0 0 1.774882913e-05 0 451417.7837 0.004184078594 24.09646017 0 0 2.545537994e-17 0 1.653168452 0 0 0 501278.399 1302.943667 3.66099587e-07 2.120832982e-11 3.400247538e-18 0 220253.052 108058.6504 160.7605547 0 8.750322165e-18 2.372730433e-12 0 0 8.078044634e-22 1.511188877e-13 6717.863921 0 1.008124565e-07 15786.01346 0 0.007339993946 0 1224308.794 0 1703.58311 6.449267339e-11 1605025.169 2.198364484e-13 2.911017973e-12 0.001381244709 0 4.800864462e-21 0 48969.67773 1.107512323e-16 108.4438531 0 0 7.877711616e-18 1.29297342e-15 0 9797.073436 0.01055131648 1.37196036e-10 0 0 7258.122967 0.00101321835 0.07840640515 0 0 0 1.129349045e-08 0.1200085808 0 0 0 0 0 0 0 0 0 4.038832361e-16 0 0 0 0.0001964463864 2.558533371 0 0 0 0.00566592026 0 0 3936.235634 7.504448095e-05 1.092956972e-19 0 0 2.138230982e-17 0 1.220460461e-15 180.2755046 0 0 4.932735442e-20 0 0.07403307628 0 0 1.06305823e-05 0 6799.304078 1.249466147 4.864586189e-14 0 0 2539.747887 7.323079366e-29 0 0 0 0 0 0 0 0 1.258456626e-05 0 1.896644844e-26 0 4.104005816e-12 0.1520254196 1735419.371 0 32.1093243 0.06304694975 0 1.008034409e-27 148242.0024 0 0 0 0 0 0.01872950025 0.0004035971737 9.22486249e-06 9.967932969e-24 0 10397.53117 0 1.797556615e-08 693.9766658 0 1.394026111e-05 0 0 0 0 0 0 116276.7874 0 5.362888025e-09 0 0 3.354440483e-10 0 0 0 0 1.085857352e-15 0 0 1367017.493 0.0009791601135 0 0 0 787416.9558 8806.683898 0 0.6833302425 0 0 0 0.0157337277 0 0 0 0 4.719566221e-10 5.092003624e-10 9.073783838e-20 0 0 0 0 0 0 0 0 9.532707278e-14 4.196024205e-09 0 0.06133442065 0 166.6646174 0 0 0 0 0 7.920369163e-20 0.0008701567313 0 0 2.223221252e-08 1.639222619 0 0 246902.268 0 221053.0186 0 0 0 3.597813633e-30 0 0 25.86572986 0 0 0 0 0 +0 0 0 0 1.081852742e-24 4.900067091e-07 0 0 5.430682705e-14 0 6.476638515e-21 12.67992147 0 0 0 0 0 0 0 0 0 0 0 8.095691778e-05 0 0 0 8.681691353e-08 942304.232 1.236532157e-13 0 0 0 0 0 6.996523648e-05 0.02722516874 0 2.19999939e-06 0 0 0 0 0 0 0 0.0002998135625 8.54393545e-06 0 0.6651212306 0 0 8.040454766e-15 0 0 5.78657566e-13 2.035167782e-07 0 0 0 0 17060.82847 16.41103365 2.560093638 2.695137848e-10 0 0 0 245240.2097 0 0 0 0 3.206690908 66831.84622 2.747164307e-15 0 0 0.09712056026 0 0 0 0 0 23101.36819 0 2.67401374e-11 0 0 0 112934.7109 269621.1485 0.09789006989 8.27750822e-19 1.975847941e-11 29278.55247 0 0 0 2.281206713e-12 0 0 4878.676871 0 2.154822751e-05 1.341221013e-08 0 0 0 0 0 0.4794235516 3.150506781e-11 0 1.275964025e-12 1.546887293e-07 0 0 0 0 61280.37806 5.858945374e-13 0 0 1.667623565e-11 0 1.382155527e-11 1.081325788e-36 495715.2378 4.794614916 95900.46605 5.144119172e-09 646951.0853 0 4.058323978e-05 1.323641666e-09 0.01098753756 0 2.697233721e-06 4.481144717e-15 0 7.180874418e-06 0 0 0 0.001240377477 0 0.0001285378335 0 1.180560755e-08 0 0 0 0 1.154523214e-17 0 3.103396812e-09 3.354268032e-06 0 0 0 0.7179029983 0 0 0 8.527181665e-20 0 0 0 8.771439987 1.055678694e-05 0.2802185608 5.165120656e-13 5741.448228 0 0 1.46597978e-05 0 0 0 0 0 0 0 0 0 0.009131886219 0 3.071194018e-40 0 1.930474046e-09 0 0 4.199279634e-06 446.8031817 1.224850723e-21 0 7.796869455e-18 0 0 0 340.6109671 1.043348822e-05 1.09666977e-11 0 0 378094.1216 0 0 16.24390457 0.0004019405232 0 0 0 4.489900218e-11 0 0 0 0 0 0.01181490523 0 0 0 0 0 0 0 591.4110209 0 1.794860704e-10 0 121.2191188 0 0.0007085585584 0 0 0 0 1.977394527 0 0 0 0 0 0 285331.5183 0.001582301236 0 0.0002827463337 779641.4532 0 3.725268702e-10 0 0 164010.0756 0 0 0 0.001450814599 0 170078.411 0.04621264111 0 0 0 3.919409818e-27 0.2436598069 0 0 0 8.722048883e-13 0 2.141984566e-08 0 0 0 0 0 0 8.771958045e-14 0 0 0.00442766051 0 0.0001916343698 3.311549501e-09 471.9757754 0 0 0 10.8562525 0 0 9.358009891e-06 0 43.41173828 0 1.485760109e-06 0 +0 6.58272396 0 0.0004365602948 0 0 0 0 0 3507.579829 0 0 0 0.01536904344 0 0 0 0 0 0 0 0 2.204741138e-08 0 0 0 6.373205966e-08 0 0 0 3.111622253e-08 0 0 0 0 1.416469815e-31 0 0 0 98.68750207 0 0 0 0 2.41997148e-08 0 0 0.0003193943496 0 0 0 6.533559534e-07 0 0 0 0 606032.6725 0 0.001724540089 0 4545.509403 0 0.001469957763 0 0 0 53521.13006 0 0.0006524965054 2.860606393e-06 0 0 0 1021847.823 0 0.001816151764 20.50354803 17477.3542 1.325100398e-30 0 0 0.1548806686 100327.3566 0 0 0 0 13.79644008 0 0 0 1.740128804e-07 1839.03123 0 0 1046791.485 2160270.224 0.0003298685922 0 0 39665.82186 0 5.254866096e-14 0 0 0 1.954470744e-16 0 0 0.001897298497 0 0 5.553247738e-18 0.02409472808 0.0004421398551 1061.830554 0 392.9032669 0 2.849771117e-29 5.600733076e-14 0 4.250329905e-14 111960.14 0 0 3.682442406e-13 0 1.876018196e-09 1.368211138e-13 0 6.850329104e-10 0 0 2.383520893e-07 0 703.9224059 0 0 3.163643953e-20 0 0 0 0 5.363857428e-17 4.965759273e-07 0 0 0 0 0 0 0 1.56464145e-05 0 0 0 1.46505772e-05 2.335288117e-10 0 2.100663251e-24 0.001759903493 1.040814416e-16 2.617097622e-05 79.85715281 7.382591058 0 3.69895871e-07 0 0 0 0 0 5.141037609e-05 58293.27015 0 0 2.170278028e-07 297485.214 0 1.597518342 3.158220718e-18 0.001100833948 3.300338506e-06 8.809396431e-07 7.076052703e-24 0.005844257311 0 0 0 0 7.550178248e-05 0 2.550361711e-24 2.726999247e-06 0 0 0.0002190633629 0 0 0 1.055462211e-11 2.8340497e-11 0 0 259501.9703 0 0 232.8589367 47219.69962 1.801284918e-11 33.88879127 7.003385225e-13 72.72391098 0 3.525971832e-18 0 3.7600591e-15 0 216.7687255 0 60132.65148 1.27040627e-11 0 6.973671531e-06 0 9.343050857e-18 0 297.557951 0.0122088575 0 0 0 6.430651697e-11 2.878955239e-05 0 0 0 0 2.247912261e-10 5.558209327e-08 1.150092301e-10 0 175452.4986 0 0 7.105295547e-12 5645.846551 163.8236474 0 0 0 16041.38021 0 0 0 0 0 0.9220879665 10.93479504 0 0 0 0 0 0 56982.77992 0 31.14089065 3.004636507e-17 0 0 0 0 61300.60265 2.066131864e-32 0 0 381675.0961 0 0 1824.29316 0 0 0 0 0 0 0 0 0.005243097174 0 0 0 0 0 0 0 0 0 +0 0 2.736837594e-09 2777210.644 1.235973533e-14 0 0 0 0 0 1.298019555e-19 0 1.47546091e-07 2382.6558 9.344471801e-28 0 174642.451 0 152166.3334 738949.6483 0.02201007348 0 0 0 0 1.471153773e-10 0 3.321307654e-20 0 0 10.21419259 0 0 3.645946086e-07 88467.69636 0 0 0 0 1.263939372e-08 0 0 0 0 1.917508229e-17 0 2.347624678e-24 0 1.845158394e-10 0 0 0 0 0 0 0 0 0 0 0 1.540017627e-15 0 0 0 0 0 0 0 0 1741.260695 1.239018229e-11 2.60837851e-10 0 0 11.40888742 0 0 2.091317636e-08 0 0 0 0.001396836817 2.939488885e-12 0 2.718309188e-11 0 9.473284119e-06 0 0 0 4.593386595 0 0 9.585569785e-06 0 0 0 0.07857033727 6.277301359e-07 1079.444005 0 118051.4004 0 0 21.10986681 0 0 2.67265062 0 9.257135442e-15 7.858139443e-17 0 2.628992418e-09 0 8.854571363e-10 0 9.5779019 1.556627832e-15 3.850047685e-15 0 1.448356954e-15 0.004756441355 6.745635787e-07 2.503930588e-18 0 0 5.783388636e-05 4900.398388 0 2.460104082e-10 0 2.406888006e-24 1.048718324e-15 3.590165055e-26 5813.957957 186615.9754 2.212572052e-25 1.396391663e-07 0 2.789605549e-07 0 0.01496614388 0 0 5.229293254e-09 5.38949557e-12 0 0 0 0 0 0 1.090724793e-08 1.073857982e-25 0 0 39015.23667 0 36356.01598 0.01407438483 23662.54304 0 0 0 2.723371001e-26 0 0 0 4.868593046e-13 0 0.001324448805 0 2947.630626 0 484968.166 0 0 1.311751405 395.7408808 1.83846799e-25 0 5.500348391e-14 0.329460798 0 0 0.003712190464 0 552949.3208 189198.5334 54.74693818 0 0 109886.4447 1.885046667e-12 0 3.830950689e-09 0 2026.689486 3.863355318e-09 33704.24039 0 0 0 12420.97174 1.093719848e-05 0.0002458996515 8.188815914e-12 0 8.39595472e-31 108.4675364 2.898678794e-11 0 0 0.03032448938 576642.2035 0 18.86728661 314071.3564 0 0 3.464942761e-08 0 0 2.550733341e-06 0.000216595919 0 3.507029676e-06 0 0 0 195106.1424 0.001961844132 1.046932454e-27 0 0 0 0 0 0 0 0 1.392338899e-08 0.7653985396 1.016142077e-09 0 2.01432623e-06 262.5894843 0 5.429499277e-14 0 0 0 40.34739463 3.93144271e-13 1.362958054e-13 0 0 0 0 0 59.45185309 0 2.11710245e-09 0 0.002367906514 0.0002585604012 0 0 0 3.193528066e-14 0 0 0 0 0 5.400690812e-07 3.943044606e-09 0 0 0 2.636713486e-11 0 0 0 0 0 0 0 0 224606.3766 0 0 5.267537876e-13 0 0 0 0 0 0 0 +0 0.1721985673 20.6953984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66739.61229 0 0.07746855934 0 0 0 571695.4175 0 0 0 0 763437.1335 183263.359 2379359.912 0 0 1.000670722e-06 2.19154363e-08 0.01750676485 1.220363453e-07 0 0 0 0 0 0 0 0 2.07854139e-26 0 4.319302715e-12 0 1.292755821e-06 0 0.0001555369647 4.72864328e-11 1.235607921 0.0003498240702 4.816211819e-13 439477.296 0 2.39675427e-09 0 4.178584666e-16 0 0 0 0 4.220889238e-12 1361.253927 3.370044206e-08 0 0 0 0 839.0088327 314.5353135 0.4951889156 0.008179686671 0 243914.0077 1.311894011e-21 0 0 0 0.002120765275 0 5.632753777e-15 0 0 0 6.306812219e-14 286506.559 1.451601139e-06 8.698298147e-08 0 14897.95062 0 0.03068096101 0 0 0 1.106203157e-12 883947.6857 1.044987862e-07 0 592.113046 0 6.037781198e-08 0 1.847547562e-06 1.127630888e-05 5.700334012e-05 0 1.134063657e-11 7.434096294 0 0 2.482910732e-23 0 0 0 4.863213641e-13 2.72677789e-11 0 844776.558 5202.553465 0.003018373619 0 0 0 1116.072093 3.619676051 1.206217172e-09 0 8.465724686e-13 2032722.824 9.940100628e-05 0 6.512276055e-18 1.263922505 3.225847483e-14 0 2.299752959e-17 0.03017778503 0 6.967381612e-09 0 46.80323328 3.371097823e-05 0.0007939976791 0 0 5.143556304e-08 4.9259595e-07 1.861242881e-11 0 0.05297155072 37.60113417 0 735578.5979 1.079310185e-06 0 0 0 8.032671969e-07 10966.28022 5.276939636e-05 0 0 185117.3705 0.01625907632 0 0 0 0 0 0 0 0 0 2.055395708e-19 0 0 151154.3639 0 38745.7812 2.263816262e-09 0 0 0 2534.410491 298605.8862 0 0 213041.6128 1.085227514e-08 7.754451603e-06 0 514498.3959 0 0 0 0 0 2.321081376e-08 0.000373644511 0 2.387208503 3.619845914e-32 3.910235328e-12 3.915822306e-13 7.496740115e-09 0 0 1.267188917e-05 0 1.599678179e-16 0 0 0 0 0 3.894543503e-11 0 0 0 0 2.862810752e-06 0 0 0 0 4456435.467 3.280607968e-08 0 0 0 0 0 2.401486392e-10 0 0 26137.15105 0 0 0 0 0 0 7.950654624e-17 4.482077488e-05 0 5414.630062 0 0 0 0 0 0 5.137195061e-19 0 0 5398.699641 0.4458465222 8.408694293e-26 0 1.229414386e-06 10995.59923 0 0 280.3299247 0 0 977.6650199 8.540469064e-08 40.99819842 0 316.0436695 0 4.146447896e-05 1.058625257e-11 0 0 0 0 0 0 0 0 4.371292777e-28 0 2.431497294e-13 0 0 0 0 0 0 1.119057119e-12 7801.26189 0 +0 0 498191.0275 0 0.9918102591 11761.44546 0 0 0 10181.47253 0 0 0 0 5.457403242e-27 0 0 0 3.543842501e-20 0 0 0 0 6.846381286e-16 0 0 0 0 0 2.796529372e-05 0 0 255094.3188 7.905380384e-12 0 3.091847e-18 0 1.540578964e-09 535603.8197 0 8070.584581 5.207203442e-08 0 0 0 0 0 0 0 4.978421722e-15 9.472225567e-11 0 0 0 1.135091981e-13 0 0 0 1.292533022e-13 658150.6935 0 0 0 12885.22951 0 0 0 1.784522479e-08 0 0 0 2.904872659e-10 0 0 0 0 0 7.954376533e-08 3870.518345 42095.03702 7.106312279e-11 1.194288948 0 0 1.067695766 0 9.457856006 0.0008218789516 0.06538942379 0 0 364.9621247 1.822687294e-13 0 0 2328339.634 730.20455 0 1592024.159 10.26175187 999.3142959 0 265.1817692 0 193.4931239 0 7.661529002e-05 0 1.084644642e-26 1.697671541e-15 0 0 4.793389172e-12 9.87216752e-09 0 4.339105913e-12 0 0 0 2.70516736e-16 0 0 2.236853508e-14 1.046057232e-10 0 0 91279.97904 3.798550996e-06 4.577548465e-20 8.805355512e-08 0 0 1.692046784e-06 7.70206828e-06 4.055734921e-18 0 2.004831856e-17 7.155971616e-19 4.338630807e-05 1.024967015e-12 1.825093846e-10 0 0 0 0 9.08410631e-19 267013.2975 0 0 0 0 0 0 0 0 33.38619891 0 0 1.931631824e-11 2.308809351 0 2.462460756e-08 0.100238796 40342.01369 0 3.950206321e-12 0 1.655464487 7.994320361e-09 0.0007161621106 1.032198676e-05 1.423668618e-16 0 0 0 62681.19722 2.5855545e-12 1.791342927 0 1.012239904e-09 0 0 3381.825533 0 2.274078108e-09 7.433287215e-16 0 262.266735 5.834215378e-10 0 0 0 4.694014388e-08 0 0 1.108353161e-14 0 0 0.006070529714 0 0.08790186465 0.0005910139133 0 5.639653325e-09 11819.1194 0 0 76641.62673 0 928122.3699 135.6712778 0 0.0004179112176 0.0008686250066 0 1.559125918e-10 0 0.001591295134 114318.1677 0 0 2.396162213e-15 0 0 0 9.873004115e-17 0 62987.34782 0 1.068413959e-14 0 0 5.804183045e-05 0 0 0 0 55455.24272 0 0 5.637019594e-07 0 399909.9896 0 0 0 0 0 1.603695556e-11 1.280960379 2.699886771e-24 0.0005808592145 6.4583175e-12 3.806320142e-14 0 902.6034035 0 10.7431642 1461772.247 0 1.434073997e-20 0 78.80229833 0 0 0 0 0.009581053934 0 0 0 0 0 1116543.851 0 0 9.063961914e-08 13376.97849 0 0 0 0 0 0 0 0 0 2.322251958e-06 0 0 0 2.327676189e-12 0 0 0 0 66558.89572 2.248120199e-12 0 0 +0 1.128009318e-09 0 0 0 0 0 0 0 6.591449652e-14 0 0 0 0 0 0 0 0 0 33.7643382 0 0 0 5.210998251e-23 0 1.253840255 0 5.494734733 0.1458101857 0 0 5.343779657e-14 0 0 0 0 0 0 1.332386783 0 0.01743131599 8.316111216e-14 4.404164148e-10 0 3.550232568e-16 0 0 0 0 7.604811922e-08 0 0 1.227116634e-07 0 0 0 0 0 781314.8096 0 0 0 0 0 0.0003825494435 1.466457693e-11 0 819465.8855 0 2.001577996e-10 0.5502845579 0 0.01433194647 0 2316.889369 0 0 0 0 0.4880544929 0 0 0 0 0 1.337677753e-10 0.7340752041 0 0 3.07967581e-18 0 2.553251929e-05 0 0 0 0 831217.6493 0 355968.9947 23163.14259 1.80411766e-05 1.498290503e-06 0 0 1.615716613e-13 0 5.431944464e-08 29223.69688 0 0 16152.18771 0 4.512568645e-07 0 0 0 0 0 0 0.01616410335 5.440531169e-10 0.01906750684 829905.2542 3.444762451e-06 0 9.986178026 0 9.997525652e-20 0 0 1.48672706e-13 0 3.003179376e-13 0 0 1.445808013e-05 0 3.98657479e-14 3.114367632e-05 0 0 0 0 0 5.929190439e-16 5.211912828e-16 0.0001461732697 0.0049455906 0 0 0 0 9.215206997e-09 2.934982792e-08 1.642634346e-10 6575.494255 0 0.6117972763 1.722725138e-06 0 549.9960471 0 7.336171917 9.910559326 0 2026.500865 0 0 0 0 8.074838796e-12 1.394325636e-11 0 9.856696389e-13 2.76786564e-11 0 0 0.0001263764377 0 0 0 0 0 1.946064259e-06 0 0.1913423745 4231.960071 18.09386155 0 0 4.103058836e-28 0 1.489631632e-10 0 0 0 103.99934 0 1.964097428e-05 0 484701.1738 2.597762227e-22 1.410444956e-07 1.396050245e-07 0.2703643163 0 0 0 1.790982041e-13 2.237494116e-06 0 4.132209083e-14 0 0 0 27840.49172 189912.5048 0 0 0 0 9.129329404e-20 9.012981932e-10 0 0 7.029640636e-11 0 4.297208444e-05 0 0.3651713689 0 0.000109334947 0 0 0 1.07479857e-14 24.46159427 0 0 37144.42557 0 0.000732253736 4.79984448e-26 0 0 144304.3541 0 0 0 0 0 37860.37026 0 5.537848632 0 0 0 0 3.347117424e-06 0 1.338171774e-08 8.915172902e-11 0 8.139919934e-17 0 0 1.692521817e-07 2.765974655e-15 0 0 0 0 1.498938882 0 0 0 66.2166322 0 6.970523105e-26 0 0 0 1.78869317e-12 1.036493425e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 1.582648908e-15 0 0 +0 5942.890904 7.151856805 0 0 0 647.5539144 0 5767.156029 0 2.008721122e-24 0 0 0 0 0 0 0 0 0 0 3065.526178 0 1.444214481e-06 0 0 347.5135277 0 0 0 0 0 1.236800215e-15 0 1.910997047e-13 0 0 0 0 0 0 0.0004328128556 0 0.1448690886 0 0 3.113752034e-25 895212.2192 0 2.197737605e-10 0 0 1.100593013e-15 0 0 1.057522488e-09 0.001325108635 6.381581414e-06 0 0 1.179216189e-26 5.748787522e-08 8.282865186e-06 722.8423899 4.080826089e-17 0 0 0 0 0 1.295148973e-12 0 0 0 4730.182768 1.533539149e-12 0 2.157853579e-09 0 0 9.28619113e-08 3.077756505e-10 6.879670863e-10 439.3246268 0 2.036453446e-07 53.45294129 0 0 0 0 0 7.073189011e-09 0 0 0 0 97320.92474 0 0 0 9.501329053e-08 0 7.352271661e-05 79.36760569 57823.61537 0.0005174576614 0 0 2804.35395 0.0005535687403 0 6.299038735e-06 0.0003525523215 2794.367465 3.393658204e-16 0 0.0002148686849 1.973670184e-18 0.3753403554 22697.40512 1.265689578e-05 2081.841049 0 0 0 0 8.682466711e-21 1.555295176e-05 0 15.95443133 0.8991550782 0 9.126663364e-22 0 0 0 694.887543 2.473626523e-06 1.913096881e-13 0 0 0 8.096647394e-05 18.90153888 0.03784969412 2.55920828e-10 0 2.222506607e-06 1.309313469e-05 0 0 0 0.001175204399 0 0 1.496503034 0.08496926438 0 0 0 9.128090518e-09 1.453332048e-09 266369.7614 0 0 9.944546383e-09 0 0 0 0 0 0 4812.291188 0 1.623452467e-18 0 1.787457497e-17 0 0 0 0 4.290238474e-12 2.370346974e-18 0 0.005156494101 0 0 0.002105675891 8.161863854e-09 0.05575811042 1.04566196e-09 0 0 0 0 0 0 3.066191839e-18 7.85874401e-18 0.009763373521 0 1300981.221 0 4.866896198e-12 0 0 0 0 0.4468109641 0 0 0.06761650024 0.0004458857091 0.002462914409 0 0 7.009253626e-11 1.162584873e-20 0 0 0 0.0009385479193 0 0 0 5.573280499e-27 0.0002725938943 3.699045852e-12 1.169018526e-09 0 0 4.394383151e-07 467.9373019 0 0 0 3893.047316 2.088587139e-11 1.43052648e-17 0 0.006175799056 880504.9537 1.017593978 0 4.123687866e-21 0 2.327193689e-10 0.0006274954608 0 1.719975867e-19 0 0 0 0 1.068111444e-12 0 0 0 0 0 0 624.5359152 0 0 0.22829098 0 0 4.057958577e-06 0 0.004371700321 0 0 0 0 0 0 2.950991529 0 0 5.602030239e-22 0 0 0 0 0 2.051364566e-17 0 0 0 0 0 0 0 1164.136638 0.0100991645 0 0 0 0 +0 0 0 0 0 0 3.935353025e-17 0 0 0 9.664426249 0 0 0 0 0.6212014163 5.318830104e-05 3.565099879e-15 7.835308651e-26 0 0 0 0 0 0 0 0 1.534925688e-07 3.718601457e-07 0 1.06398691e-21 0 0.02837280823 0.0005202728306 0 4.317938878e-14 1.766370544e-19 0.003636741559 0 1.498931712e-08 3.679132533e-11 0 0 0.5503396219 2.539310453e-09 0 1.002751714e-05 438.8567512 0 0 0 0.0004835336438 0.001773633093 0 0 0 1.567750776e-10 100.8409204 0 0 11.04700866 0 278.7515403 9.041604643e-12 1.918558237e-09 6.572470632e-08 0 0 0 81716.55761 0 0 0 0 0 0 0 3.556083489e-14 4.595010081e-24 0 0 0 0 0 0 0 0 8.415282251e-13 0 0 0 0 0.01545598746 0 0 0.000340535575 8.079079726e-15 2364.939872 3.864248712e-11 0 0 0 0 7.115017109e-15 0 3.611084004e-24 3.871994706e-14 3.905790876e-21 0 0 0 0 0 0.0001212120933 4.089017707e-05 0 1.458329603e-15 114246.6589 1.709677539e-10 0 0 6.46435374e-05 0.0003139186988 0 1053.984536 0 0 0 9.272177237e-12 1.559354704e-11 2.899054061e-11 339906.5958 0.0002019637194 0 1571.469884 3.44069494e-06 177.3381851 0 3.231320526e-15 2.548979008e-17 5.408099364e-05 1.935670821e-09 0 0 7.204877439e-13 0 0 0 0 0 2.154809666e-16 3.179087874 7.483276074e-10 14827.53712 0.2404337614 0 0 0 1.214260983e-19 0 2.097618422e-13 0 5.481980994e-13 1.942709965e-25 0 0.06373201446 0 0 0.0001773051399 0 1.41185308e-07 3.027652298e-18 0 0.0005664521524 2.055613986e-05 0 0 0 0 1.875750223e-05 0 0 0 0.451473906 0 0 0 3.940159549e-13 0 0 10070.90372 1.833399768e-26 0 0 0 0.0001545921612 7.397095393e-16 0 0 872619.7654 0 2.121015753e-17 0 4.695614377e-12 2247.540329 0 7417.656677 7.435416028e-27 1.140171742e-07 0.0003201333585 0 1.117760078e-15 0 0 0 474452.0187 0 1.024832732e-16 0 0 4.618254817e-20 0 1.279932007e-09 9.942612088e-06 0 0 0 5.508748173e-18 0 0 0 0 3.010025793e-13 3.132340555 98.14367709 0 0 0 0.007652409687 0 0 0 0 1114369.321 0 0.0007080045705 0 0 2.33489316e-06 0 260308.3558 0 0 3.889817199e-05 0 0 1.654312538e-20 0 1.685034995e-05 594.8320921 0 0 24.57709132 0 0 0 0 0 1.542720311e-07 0 0 4.433496143e-08 8.188709222e-08 0 9.865971969e-06 0 8.461544921e-09 0 0 0 0 0 0 0 8.711517194e-14 0 3.766864564e-08 0 0 0 0 0 1.267295071e-08 0 0 0 0 0 0 0 +0 0.009375073708 0 0 0 0 0 5.516503057e-09 0 4.742898478e-11 0 0 0 0 0 3.877403747e-25 0 2.58266949e-23 0 11.6367199 0 2.77861445 0 2.723689058e-15 0 21838.21337 0 6572.421708 0 0 0 0.001456593509 3.729790858e-05 0 0.0001488157519 9.624589198e-17 0 0 0 0 0 0 0 1987.446443 1.64177305e-06 0 0 0 0 0 0 0 0 0 431602.0828 4.841325734e-05 0 0 0.7011822212 0 0.0001835755537 0 0 0 1.075694056e-06 1.2116049e-17 0 2.011274451e-09 1.023199144e-14 3.937197253e-12 0 0 0 2.032590667e-07 0 5.749550426e-07 0 0 2.107068608e-23 1.295937542e-16 55.62782513 0 0 1.327768436e-11 5.188356319e-08 5487.019346 0 0 299.3813661 6.053094998e-21 0 0 0 0 0 0 0 0 9770.904674 6281.795558 0 0 1.531101405 0 0 3.789534414e-14 137.629128 0 0.3029254729 478763.6865 1.017347604e-05 1373.314473 0 0 0 6.490946496e-06 0 2.941310527e-17 454562.7925 0 1.862368869e-24 0 0 389.1727694 2276.292561 0 1.606143932e-11 0 0 0 0 0 0 0 0 4.594518714e-20 6.924781981e-09 2.508675264e-11 0 5.293845181e-12 149678.3166 0 0.00185221339 0 0 19.40195757 0 0 35330.4143 268779.8224 1.032617757e-16 0 4.013278227e-06 6.341726775e-14 0 4.421250305e-08 0 0.2794828777 0 48.72095883 41978.34502 2.669666374e-06 0 3.694972233e-07 0.007367479753 3.85218271e-07 0 0 8.976109106e-16 1414.012287 1.29993022e-31 0 3.774840794e-05 7.11364696e-14 1.043644565 0.2485547202 1.2606292e-06 0 0 6.671626453e-20 1.728901716e-10 0 1.85633819e-07 107.2749968 0 499528.4986 0 4.150601338e-05 0 0 0 0 9.427794702e-19 1.862871797e-06 1.074496226e-08 1.169935329 4.881780644e-07 0 621.3748058 0 0.558330165 0 5.939980103e-06 0 0.0006440553122 0 3.191183713e-12 0 2.033083771e-17 8.282847031 8.941464239e-13 0 0 0 0 251706.9053 0 0 0 0 6.613468124e-08 0 0 0 0 0 2.404000896e-11 0 0 0 0 0.0002047942412 0 2.970913502e-14 0 0 0 2.109004058e-17 0 0 34587.5141 0 0 0 1.89037058e-06 0 0 2.998538157e-11 0 3.53439546e-19 0 0 0 0 0 301.8520871 0 3.359087727e-12 0 4.889567067e-12 0 0 0.04592290532 0 0 0 0 0 0 0 0 0 18.64695796 0 0 6.76968174e-08 0 0 0 3.918011599e-21 0 0 0 43.72802993 0 0.03335319682 6.839102555e-05 0 0 0 4.024848606e-07 0 0 0 0 418.1004303 2.401070504e-19 0 0 0 +0 0 0 4.106027059e-14 0 2460.868768 0 0 9.477571657e-15 0 0 0.01480907625 0 0 475456.6346 0 0 0 13068.6978 0 0 13061.05841 69050.47048 0 2.253970246e-13 0 0 0 8.282556987e-39 386237.2577 7.320657744e-06 5.449562808e-28 0 0 0 0 0 0 5.505708087e-27 0 0 1.032136904e-13 0 0 0 90.00149428 0 0 0 0 0 0 2.739235329e-11 0 0 0 0 0 0 6.541012263e-05 0 0 0 0 0 0 0 0 0 1.292290385e-11 0 0 3021.100154 0 0 0 9.655377466e-13 1.074121978e-14 2.76556319e-06 2.426135976e-14 3.582859231 4.302123216e-08 2.922155135e-15 0 0 96818.97449 8.316016204e-09 0 0 0 0 8.840180837e-19 0 0 0 1.971642594e-09 0 0 0 0 0 8370.859005 0.0003975836599 8.532777615e-10 0 4.327158321e-09 0 0 0 0 5.198407322e-14 1.262083352e-24 0 0 3.395937438e-07 0 144381.9916 0 1.16018769e-17 0.6953494944 0 1.614766561e-29 4.166537243e-09 0 0 99630.57316 5.432014556e-13 0 0 1.604669403e-06 0 5.218903539e-06 5.259149951e-10 0 6.187951652e-09 1.746897854e-11 0 1.290114345e-17 9.171711258e-09 0 3.734765702e-12 0 7.68278572e-11 0 0.5693168057 0 0 0 0 150297.0268 0 0 8.775369544e-11 3.481684967e-06 0.04346898204 8.400411966e-05 0.02575095402 0 0 0 0 0 709909.3853 0 1.067283223e-16 0 0.1237488062 0 44.13686981 0 0 157.0756425 3940.285978 147.9700396 0 2.549559685e-18 0 0 4.414975779e-14 1.839248975e-14 3.656763199e-15 1.283731537e-22 0 0 1.11446176e-26 3.407570631e-05 0 0 0 2267949.2 0 8.249727529e-21 0 6.946742192e-10 0 4.478610657 0 0 1.86163713e-12 0 0.0001437121217 7.040782797e-06 0 0 0 6.728018778e-07 0 6.458027285e-05 1043493.568 0 1.281957234e-07 0.004657184292 0 0 1.111733289e-14 1.381641427e-10 0 0 210290.5813 0.4548812414 3.762793545e-08 0 0 0 0 0 0 0 19483.3806 190.0754631 1.764394965e-24 0 3.024001625e-13 0 33999.57767 0 2532830.901 0 0 0 0.04722625781 0 0 0 2.811119184e-09 0 0 0 0 0 0 1.601288525e-14 0 1.20393426e-05 0 9.528704729e-15 0 0 0 0 512247.6673 0 0 0 1.077822637e-07 5.636823762 0 0 10062.00938 0.002000128419 0 0.9574885745 0.0003779627775 5751.570957 0 0 0 0 0 0.000204873712 0 0 62468.53074 0 0 0 7.326557632e-14 0 0 0 0 0 0 0 0 0 0 0 0 24552.72521 +0 0 1.461922661e-11 0 0 0 0.001332867747 0 0 0 0 1.801643884e-18 4122.212171 0 0 0 1.490391343e-14 1109439.554 0 0 0 0 0 0 0 0 0 7.111274002e-14 2.952347759e-10 0 2.256027715e-25 0 0.00807981038 0 83951.10078 0 0 0 0 0 0 0 1.960544566 0 2.391698584e-10 0 6.442522131e-10 0.9052391183 0 0 0 0 0 0 0 1606.717444 0 0 0 0 0 0 0 1.390042175e-10 0 0 1761.248181 0 0 2.539752611e-07 221116.8514 0 1.624144115e-10 0 1.260473044e-20 0 0 1.59711634e-09 1.281987492e-28 0 1556.804317 0 0 0 0 0 0 0 931.941542 2.193671385e-12 2.43470384e-06 2.209391404e-13 0 0 6.71275257 3282.69448 21587.61269 2.528365211e-10 0 0.006510759478 2.204318158e-12 862026.9466 174.3373343 0 0.000298224319 0 0 1.645055167e-13 0 852515.501 4502.707177 4.082515839e-31 0 0 2.485498474e-21 0 0 0 1.95005307e-10 7116.502926 0 0 0 6.795284289e-22 0 92.2775667 7.048295617e-26 0 0 0 1.602334176e-29 0 2413.710605 2.915698099e-09 8.007852154e-13 0 0 0.4557809836 8.055865478e-06 1.854465347e-08 0 0 9.129549625e-26 3.447125096e-05 0 6.811225841e-12 0 0 0 0 0.003932579605 1.176373046e-06 0.1424525763 150.9114972 3.650883961e-14 0 0 9.564739468e-18 1319772.564 0.01579658144 0 4.622414974e-25 0 205085.0479 69.98703571 4.202461634e-10 2.931752948e-21 7.14793141e-19 3.40966036e-11 8.050706094e-16 1.449584972e-08 0 0.00736259883 0 0 3.045833844e-07 1.916267462e-20 0 0 0 9.900215993e-05 0.007315486296 0 0 0 4.86726846e-20 970.7043783 3.284132864e-12 3.144198957e-08 9.522971566 6642.978405 49.93951743 6.213025782e-13 0 0 799.9145686 0 0 4.692486456e-08 1.151647084e-09 0 0 1181.444686 3.692940821e-13 0 0 35002.62022 0 1.964315877e-14 0 0 879.4344258 4.778842967 2.958302566e-09 0 2704.484749 0.02982830252 2.887457333e-11 0 0 0 0 3.5032726e-11 0 0 0 0 0 0 0 0 0 0 8.507426712e-07 0 0 0 0 0 0 0 5.010713624e-11 0 3.360673211e-07 0 7.815099502e-08 0 0 0 4.028836095e-06 0 0 0 3.716184136e-09 47643.60925 0 1.119223345e-15 9070.502335 0 0 0 0 0 0 0 0 2.60151917e-12 0 2.116640634e-07 0 0 117441.4249 0 0 0 0 0 2.174144527e-06 0 0 3.664893621e-14 63103.03686 0 0.001754261196 0 0 0 0 509393.0186 0 2.698621794e-17 0 0 3.284871364e-05 0 1.33816628e-12 0 0 0 0 +2.882103426e-07 0 482056.1199 113740.6043 1.670372537e-09 5.938332513e-13 0.4672950862 28.89690179 0 3.251056929e-19 0 0 0 0 1.279911394e-14 0 52825.81962 196.732262 8.184390042e-06 0 675217.254 6.397212325e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002068038565 1.760235605e-10 0 0.0304348325 0 1.164959357 2.757093711e-15 9.879406433 9.49941888e-07 0 0 0 3.485357156 0.0002234063228 0 538973.8279 2.495626379e-07 0 1.852256944e-11 0 0 0 1.502323325e-19 8.67504711e-09 2.485456427e-12 0 0 0 0 0 0 1408.637351 0 4.009449276e-11 0 0 1.18290734 8.610932634e-10 0 8.305453968 0 0 0 0 0 0 6.534601731e-05 0 0 0.0008526750641 636.0757232 0 0 0 4.654943373e-08 0 0 0.1486514781 0 0 0 3.332528639e-21 0 0 0.001064467935 0 0 0 59060.19998 0 1245664.896 1.287809296e-06 0 0 3.609641584 4.725948097e-11 0 0 2647.559091 0 0 3.768430706e-19 0.03198958052 1.932096531e-42 0 0 0 0 0 0 0 0 5.728599571e-07 2.41519395e-13 0 0 0 0 1.710171805e-07 0 0 0 3.26384682e-05 1.275277826e-16 0 0.001477227494 6.890011776e-11 3.808545525e-06 3.620472928e-06 1.860581192e-26 0 0 3.481190515e-21 0 76318.82501 0 0 0 1260494.132 1.317545023e-05 3.260436984e-19 0 0 0 0 0 3.923460724e-19 0 81.76805915 1.953217175e-09 1.729037565e-09 4.351693484e-06 0.006194041133 0 1031171.029 0 37.73688411 320926.7157 1.212887071 0 6.817221022e-06 11103.02666 7.297362601e-15 1168868.938 0 2.901860579e-07 0.0002282577581 0 2.365917612e-17 3.693415881e-09 1.609839395e-11 5915.964387 0 6.88527122e-05 1.090792091e-05 0 0.08675626043 3.808706123e-11 9.512493904e-17 2.564588642e-10 5.785911049e-11 0 1.704697241e-24 0 0 77881.55244 0 0 36.6830229 1.554698913e-09 0.2019326683 41.8978104 0 0 0 5.203940932e-12 0 0 57396.74312 0 2.446018144e-11 0 0 0 0 0.02727729194 0 0 0 0 0 522282.435 0 8.960494838 11412.46151 0 4.06172163e-14 0 0 0.9371190853 0 0.1607431523 2.957496964e-21 1.372941076e-16 0 0 718406.8056 3.914705261e-11 0 0 0 0 0 1.384822607e-13 2.290251917e-14 0 0 0 0 1.016850347e-24 0 0 0 178299.857 0 0 0 0 2.371694532e-08 2.459908876e-06 336073.7721 0 5.080882855e-14 0 0 0 0 8.251757304e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 5.244479216e-05 0 0 0 3.170075721e-26 0 0 1.199195204e-24 3.427338017e-16 0 3.053060913e-10 7.713811577e-27 0 +8.242747651e-09 0 0 0 0 0 0 0 0 0 0 0 9.062657363e-13 0 0 0 3083.961443 4.589376246e-16 0 9.185804825e-11 0 0 0 1.241401412e-10 3.717047016e-14 7.859942908e-06 3.299166359e-14 1.68640384e-09 0 0 0 9.456470934e-05 5.02058103e-05 0 0 0 0 0 0 0 0.07616334599 0 0 0 0 0 1.258676151e-05 0 1.912610702e-11 0 2.425624873e-20 0 0 0 0 0 0 0 0 0 0 0 1.758876692e-05 0 0 0.0003176465775 0 0 0 0 0 0 0 0 0 8148.647113 2.656657717e-08 0 0 0 4.945295738e-12 0 2.266089855e-18 0 0 0 0.002162533282 6015.760161 0 4.418538503e-24 0 7.733855093e-13 0 332642.1736 0 0 0 4.737417558e-12 0 4.226283952e-11 0 1.028406731e-05 0 9.226004327e-05 0 1.806941262e-14 876715.2547 0 0 1.366796351e-09 0 7.454284285 0 2.816967528e-13 0 0 0 0 0 0 0 0 0 8.648942803e-05 6.699624946e-12 11654.19366 6.290989523e-05 0 0 4.302099757e-10 0.02642132559 0 0 0.0003110534737 0 9.80442052e-34 5.504023533e-22 3.65921466e-14 726479.831 0 0.1389803085 0 0 562.1528666 7.998919451e-08 0 330207.2109 0 0 0.2938826152 0.0004698695835 0 0 0.0003986179295 0 0 0 0 3.597489094e-05 0 0 8.149439489e-08 0 0 0.1515235864 0.001742556489 1.341162083e-08 5.259269021e-07 7768.835834 0 84491.5761 0 1.720543698e-13 0.01882724747 0 4.594279835e-08 0 637.668367 0 141779.323 2.312084101e-13 0.002182395164 2773814.859 6.039128123e-08 8.096818958e-15 2.439174177e-12 9.285940272 0 4.719072614e-11 0 1.823159517e-10 0 0 85.1636915 0 0 0 0 0 5.244041147e-06 2235755.67 0 0 0 2.396171049e-05 3.099220662e-13 0 0.2822761388 0 2.661197268e-05 0 0 0 0 0 0 0.00374076616 0 0 3.704762707e-11 0 3.666767637e-25 94.17028063 0.0008556490041 0 0 0 0 0 8.331724112 0 0 0 0 8.462778405e-14 0 0 0 117530.7285 0 0 0 2030.111937 2.398692227e-09 0 1.896196606e-25 0 0 0 56336.93639 0.1093684381 0 0 5.955294089e-10 0 0 0 9.914930701e-23 0 0 0 98.53898708 0 0 0 4.971148814 391.4632517 0.3482476952 0 0 0.001561905092 0 0 1201321.805 0 0 360.8393381 0 0 0 1.233105289e-18 0 0 0 0 0 0 6.991243572e-12 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1.212350669e-07 0 0.2183200468 0 0 152261.675 0 0 134.392869 0 0.05324730563 23221.61011 5.093727075e-08 0 0.002837878362 0 0 0 0 7.845252559e-24 0 0 0 4932155.172 0 6.554125511e-13 0 4.421900732e-21 0 0.009740816302 0 1.409792413e-05 8458.911192 0.0002315408103 0 0 0 0 0 0 0 0 0 0.0009271569002 0 1.563329514e-13 2.006112545e-06 0 0 0 2.009612035e-11 2.028640142e-13 0.0001100024251 0.0133778561 0 0 1.166485319e-17 0 0 3.391957492e-24 7.877073166e-14 2.259747539e-07 0 0 0 0 0 0 0 6.963658219e-18 0 0 520.9230724 0.008156433038 2.792409106e-16 0 592513.5702 0 0.1362978616 0 0 0 0 0 4.01744117e-06 143.3598225 2.385942001e-08 0 0 0 0 0 23602.7981 17.45462011 0 0 5.689818852e-10 0 1.046437791e-17 2005.423461 0 1.225803612 0.01354327314 0 38018.78805 0 893815.713 0 0 0 0 3.498325183e-15 1.096283299e-19 2.286142205e-08 0 9.844717891e-14 0 0 3.040592005e-17 7.320228125e-14 0 149231.832 0 7.753427356e-08 7.03564514e-08 1.709815557e-20 8.344306541e-24 0 50265.96234 0 0.003085083314 0.0007694023189 0 5.731083981e-07 4.893590194e-23 1.674199804e-10 2.562540454 11360.56052 0 5.947220849e-07 0 0 0 0.006223628613 0 0.006304465687 0 0 0 113843.2269 0 8.528593637e-10 8.111292901e-12 0.002012243254 0 35.68992144 0 0 0 0.003483579002 3.767650599e-31 0 0 0 0.6615106352 9.987133775e-05 0 0 14926.6413 0 0 0 0 0 8.249060691e-15 0 0 1.931300532e-05 0.02409914434 2667959.251 0 0 0 0 0.001218845914 0 0 0 6.561454982 0 0 93.97643152 0 0 0 0.02463093727 2.167574373e-30 2.069282191e-05 0 0 4.579955473e-33 0 0 134.373217 0 5.414767065e-29 0 0 0 2.27231772e-08 0 0 0.02556318508 0 0 0 0 0 0.0007293186163 3.43872075e-28 1.328708621e-16 0 0 0 0 1.738344185e-24 0 0 2.007177893e-15 8.122724888e-12 21959.11384 0 1070.204282 0 0 1.575299656e-28 0 0 53901.51431 42.25182859 165510.8888 0 0 0 7.036698156e-06 863.5208399 0 0 6.298094986e-11 0 8.870175391e-05 4.325730896e-23 0 65842.90237 0 0 0 0.01483556903 0.0003355713949 0 1.50298128e-17 0 5.47187462e-09 0 0.0004003861369 0 833290.6361 0 4.542736673e-05 0 0 947.2065087 0 0 0 0 0 0 5.900433861e-08 0 0 0 0 0 0 3.351203006e-13 0 0 0 0 0 1.008353748e-31 0 0 0 0 0 +0 0 0 0 0 3.484382985e-11 0 3.114948138e-05 402743.3524 0 0 0 0.08881376253 0 0 0 0 0 0 0 0 6.760292603e-21 0 0 0 0 0 2.685471278e-06 0 0 0 550694.3316 1.389279832e-11 0 0 0 0 0 0 0 6.723633706e-12 0 0 0 20377.32427 0 0 0 232.8570825 1.247878447e-07 0 1.9013847e-20 0 0 0 0 0.0113044564 0 239.1689945 27937.1874 3.111573522e-05 0 0.007123510105 0 14073.04195 0.2116266564 0 5.537968368e-24 2.243899052e-11 0 1.447890756e-07 0 0 0 0 0 5.545860063e-18 0 6.114029454e-11 0 0 0 1.833167894e-16 0 0 2.225909507 0 0 35.30834856 0 47.13822081 5.510260524e-16 0 0 0 0 0.1688995221 0 1.020119723e-27 6.389903629e-05 0.002984897826 0 424260.39 0 0 1.790311673 0 0 0 7.166406689e-21 2.79870464e-24 0 0 0 0.03678887566 0 0 2.941661863e-09 8.141690301e-17 0 0 0 0 0 0 889958.5033 0 1.48492357e-18 3.834100864e-15 0 0 1.147488882e-15 7.571523463e-12 0 5.878406812e-18 0 1.585732223e-08 0 1.456383507e-19 0 7.725506616e-17 5.038557681 6.33895274e-05 0 0 0 0 46272.5131 0.0003258151102 0 0 0 0 479.5371124 1.278378243e-15 0 724.5271821 0.0001894925232 9.129868693e-16 3.124253926e-06 1.549422302e-09 1.572592856e-19 1.13684755e-17 4.306503901e-07 0.0003526733173 2.07252544e-06 0 0 0.5539270304 0 0 6.643263451e-31 4069.442336 1847.664733 0 0 0 5.522994257e-11 0 2.35724881e-06 0 0 0 0.1165241329 0.0006505518387 0.0001098054095 0 7.232628702e-10 111246.657 0 0.02813694653 0 0 4.801375663e-05 3.676171395e-29 0.1524189959 0 0 0 6.080985019e-11 0 34757.22112 0 1.427384542e-11 2.670187127e-06 0 22.67033552 0 0 0 0 3.096922731e-08 0.02231855709 0 0 0 4.887790293e-11 12.7708807 0 102326.9456 0 0 0 0 0 0.05386698211 0 0 0 0 0 0 0 104974.7924 0 3.727123634e-08 2.770678391e-17 9.257257732e-16 0.09582261299 0 4.857883389e-07 0 2473988.516 0 5.525242496e-16 0 0 0 3.403903684e-08 2.471240712e-16 0 0 0 0 9.842637676e-13 0 250.6278986 702.3716485 5.838609047e-07 0 0 0 0 0 0 1.469228001e-11 0 0 0 5.742136838e-13 1.42860276e-09 0 0 34.09145342 0 1.932442285e-05 0.3955151346 0 0 1814.281695 0 0 0 0 2.416482223e-09 6.302305948e-12 0 0 3.452962101e-17 3.761021659e-10 0 0 0 0 0 0 0 628771.3105 5.469975967e-08 39884.95101 +0 43605.94837 0 2.953055111e-14 0 0 2.738050886e-17 0 0 0 2.824365493e-06 0 0 0 2.438306927e-06 159520.4759 0 0 0 0 0 0 2614438.599 0 0 8.380498349e-14 0 0 0 0 0 0 0 0 0 0 236938.7324 0 0.000312590162 0 3.230421467e-14 0 0 0 5.761530932e-05 0 8948.851855 1.577348964e-11 0 3.419380223e-22 0 0 0.117814903 0 16.29821152 8649.503436 3597741.614 0 410509.0541 0 6.998877281e-05 0 2289765.375 0 0 0 0 0 145.9337327 0 6.257830533e-05 1.438058125e-10 0 0 0.0004673354397 0 0 0 0 1107.38054 0 0 0 0 0 7.383541858e-13 1.062883539e-12 0 9.516160103e-16 278.4123007 4.816940537e-09 1.204188664e-11 9.347709448e-07 0 0 0 0 0 0 0.0001235841657 4.962719805e-13 0.0006520811352 0 1.29179684e-18 4.577404842e-07 0 0 7.001380849e-05 2823.183733 0.002437644416 0 71772.80696 0 0 1.268205317e-12 0 47.23336314 0 0.001716903078 453.131397 0 0 2.24523205e-12 0 0 1.624333066e-14 0 2.768353248e-13 0 0 0 0 1.005277132e-11 0.1627505829 0 0 0 0.0146433231 0 0 134.4088325 1.03250737e-09 1.820414402e-10 2.951476604e-16 7.174070421 4.475169306e-05 7.443569121e-07 5.987430766e-24 1.936165497e-22 0 2.714016484e-11 0 448018.4893 1.376262455e-14 1.126508792e-12 0 1.469354682e-12 0 2.133810414e-11 9.758051475e-28 0.0005114134845 15717.4878 12806.7203 3.216709654e-13 1.413323657 145.2867575 0 0 6.610769359e-10 1.021270895e-12 1.092734465e-22 0 0.0009950520022 6.565051122e-05 0 0 0 0 0 0 325143.4918 7.361485592e-17 0.04970258219 0 0 0 0 0 2.314703932e-12 5.113827034e-08 0.008798327748 0 0 0 149640.9673 0 0 0 2.95837188e-07 0 0 0 0 0 5.892186068e-13 0 0 0 0 1.542139402e-08 0 0 0 0.0001420870939 1.355366157e-40 854625.026 5.737608582e-12 0 5.023852072e-05 0 1.422311479e-06 0.005598092467 2.229334005e-14 8.113517526e-17 0 3244.79076 0 1.079140287e-21 0 0 0 0 0 0 0 0 1.267555397e-21 0 0 0 2.46649632 0 0 0 305284.1892 0 0 4.331611177e-06 0 8.024830813e-06 0 7.700887431 1.072154573e-17 0 0 11875.44243 0 0 0 0 0.006290949409 0.01219027657 8.744650441e-08 0 330396.1293 0 0 0 0 663.1123807 2.097171927e-08 0 0.02180215298 0 0 0 0 0 0 0 0 0 2.536296561e-28 0 0 2863.409192 0 0 0 1.087567e-16 7.238406719e-24 0 1.155868416e-08 0 0 0 4.72642197e-09 0 0 0 +0 2817281.75 0 0 0 0 13.03030356 0 0 2.16534356e-12 0 0 0 0 2.295870033e-05 0 0 0 1.35174097e-09 4.153842098e-30 0 0 0 0 0 0 14124.93964 7.528290374e-09 0 0 0 0 0 0 0 5.817342964e-08 0 6.879906616e-20 0 0 59.86643588 0 0 0 0 6.144320324e-17 0 0 0 0 0 0 0 0 0 0 8.594376133e-16 0 0 0 0 0 1.335734422e-10 0 0 0 0 4.168563573e-09 0 0 1.503830386e-19 0.1795417454 0 0.02495616394 0 5.420874695e-11 14878.92445 51.34567032 0 0 0 9.382178536e-08 2.099282662e-05 0 19428.54231 0 0 9984.159258 0 0 0.0004009425973 2.549103731e-22 3.367823998e-20 0 1.662484867e-06 0 0 1.872014361e-05 54.43579798 0 0 0 0.03095736696 0 3.934013121e-18 0 24943.57894 1.272005674e-19 0 0 0 1.545806193e-09 6.411500066e-08 0.008465334208 0.0001461457344 1.132405855 0 0 1.63475019e-13 0.0018076825 0 0 2.49887212e-20 8.421164607e-12 5767.122509 0 0 5.934829968e-10 4.599290859e-13 1.84617616e-09 0 0 713.0740204 0 0.005256813821 3.309945505e-21 350.3723728 0 0 0 821615.6229 0 0 2.219880719e-08 0 2.294437738e-21 6.122614092e-08 1.261239256e-05 0 2.931451938e-05 0 2680.932996 0 0 3.367426505e-08 6.972916706e-08 5.220941942e-08 7.507276049e-12 0 0 2.988370069e-15 0 1754818.731 0 0 0 10.01905851 2.016004662e-16 0 5.637346269e-23 0 0 0.00112158693 0 3.403864079e-09 0 0 4.050188446e-09 1.846693804e-27 0 0 0 14772.51004 0 2.495193708e-20 3.070361967e-08 182654.338 0 0 0 0 189.9269936 98630.08759 8.827128507 9182.362463 0 0 0 0 0 0 0 0 4881.823944 1.457583358e-06 0 0.6544282588 0 6.729074553e-09 1.090203254e-07 3.508390948e-15 3.174815606e-05 0 0 1.138896455e-16 1.949514884e-08 0.01140004679 0 0 0 0 0 0 0 0 0 0 2.610657724e-28 0.0002148699004 0 0 1.160207539e-08 0 0 0 0 0 0 0 5.184945716e-11 0 0 0 0 6.293914708e-14 2.933491291e-10 0 0 0 0 0 2.263295976e-25 0 0 0 1.184525914e-20 0 0 0.06910126579 0 7.979982222e-16 446484.8476 0 0 0 3.116544367e-10 0 0 0.000162754539 0 0 0 8.593640313e-25 0 0 0.891336694 881.626122 0 0 0 0 0 0 1.059680694e-08 0 1.565488621e-20 1.105530006e-27 0 17.59166353 0 0 0 0 0 0 2.893746262e-05 1.215938734e-08 0 0 0 +0 1.124057762e-07 0 981.4107996 0 4.540959336e-05 0 0 0 1.002062128e-14 2.606661067e-09 0 0 0 0 0 0 1.1641883e-07 0 5.357786787e-11 0 0 0 0 0 0 0 0 1.813085953e-08 0 0 0 0 0.006899371453 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.64896789 0 0.001592714377 7583.044016 0 0 9.261591491e-11 1.171559209e-11 0 0.0008672065253 0 0 2948051.153 1.925111804e-09 0.0006540818149 0 690.5892082 0 661.4771391 0 0 10.43853435 3.449600782e-27 0 0 0 0 0 0 0 6.676941186e-07 0 4.18132995e-09 70.28572536 0 5.015595905e-12 0.0007785138152 7.128677792e-11 0 0 11.19667346 193.5383615 0 5.29504154e-21 0 1.452160019e-07 0 4.429848266e-13 0 0 1185924.414 2.473237438e-09 0 4.453027265e-36 0 3.381898671e-07 0 781870.1532 2.256181875e-07 0 0 18453.62158 0 0 0.002268875286 5.838617932e-12 0.113032347 0 103683.6607 0 0 0 0 5.062644272e-06 5.187025796e-28 0 0 1488321.538 0 1.837739065e-06 0 0.00100140339 0 0.5091201566 0 0 0 3.596547304e-06 674.7724584 0 1.169114716 1.103931859e-11 0.0001322669994 635.2363948 0 0 0 0 1.559118629 4.464159798e-05 0 0 2.780033446e-11 0 2.322218426e-21 0 1.987580051e-09 1.114650658e-18 0.003546457004 0.0006094069977 0 1.253054682e-06 0 0 0 1.173520707e-06 0 3.414739766e-23 0 0 0 0 5.498612001e-19 0 3.239011433e-08 0 0 4.482654649 0 0 2.475225779e-06 0 6.373058327e-17 0 4.696641583e-07 0 0 0 0 0 3.357072644e-05 0 1.173825699e-07 0 0 2.285237912e-06 0 5.752621003e-07 2.088500334e-08 0 0 488.1376125 0 0 315.6276711 4.192178869e-23 0 0 0 1.328282143e-26 0 0 0.4299260534 0 2.698338071e-05 1.215104864e-12 0 7023.156382 1.386248975e-05 9.105755942e-07 0 1068.931991 0 1.138501428e-15 0 0 0 5.104964861 0 0 1.148086907e-11 0 0 0.002767503031 0 0 2.588571791e-14 0 0 397.084345 0 0 3.154549041e-06 0.02466720717 0 151920.1912 0 0 0.1233354612 0 0 1.130963296 0 1.07266766e-18 0 0 5616.173386 0 0 0 0 0 0 0 0 0 0 0 0 0.01834409112 0 1937708.224 0 0 0 0 1.080405601e-17 0 0 0 0 1053561.59 0.005785250996 0 1.371283669e-20 0 0 0 2.302240862e-06 0 0 0 0 0 0 0 +0 0 1.078539569e-13 0 0 0 0 1.192540707e-17 0 0 4155.500571 0 0 0 0 0 0 0 0 0 0 523.1265406 0 0 2.735160268e-24 0 0 0 0 0 0 1.927753192e-08 0 0 0 0 0 0 0 0 0 0 0 0 1.104918912e-06 0 1.718797183e-29 0 1.068221121e-22 158467.287 0 0 0 0 0 0 0.0003734983014 4.723243999 4.927103408e-08 7.242957623e-18 0 0 0 0 3.000432786e-18 0 0 0 0 0.0006098910344 0 0 0 0 1172.252638 0 2.846282212 3.37231618e-10 0 0 0 0.3578319711 52.44014487 4.521874374e-07 0.01174104891 2315229.39 0 0 0 0 0 1.06018277e-10 0 0 0 0.0062142248 1.211303948e-06 0 0 0 0 0 6.423217767e-06 0.0002070435818 103.3778372 1.423295123e-10 0 202932.3387 0 2.898015714e-09 0.1090432858 0 0 0 4.869658204e-09 0 2616.620215 0 0 0 6.600111428e-08 0 0.05985571455 113198.9222 1.627042855e-12 0 2.604597159e-13 26.58344544 3.672357524e-06 6.127391655e-11 0 0 187115.9525 0 0 0 0 1.655964754e-14 1.093090323e-13 3.029571315e-12 0 0 1338.618838 2.568524768e-15 26771.15893 0 7.545875759e-15 0 1.379265078 607425.5397 1.213823946e-12 0 0 0 7.326233548e-12 0 0 0 0 163672.6903 0.0004902767263 1.868558695 5.752737332e-30 5.152633968e-16 1.76937674e-12 0 1.713195236e-07 0 1307.593016 0.000212705923 0 0 0 0 179.1557165 0 0 0 0 0 0 0 0 2.811709684e-12 0 0 0 223.223939 0 0 0 2.017385381e-06 1.135648064e-11 0 47.68781431 0 0.005902578044 7.854883283e-17 0 0 0 0 0 2.828779915e-07 6.225133643 0 0 0 0.08127338297 0.08387099613 3.378257366e-07 240407.1532 1.403347139e-18 0 0 0 4.198282627 0 0 0 2.292458376e-05 0 0 0 0 0 0 0 0 0 0 554.0752413 0 6.985649818e-24 3.878822649e-12 0.0005016120708 0 0 0 0 0 48231.54025 0 0 8.163565341e-08 0 0 1.409549419e-15 0 3391915.969 2.694145565 7.602172721e-12 0 0 0 0 0 2020.344954 0 0 5.915471571e-14 0 0 0 0 6.768055287e-11 0 0 0 6.670330098e-14 0 0 0 0 0 5.183512604e-13 0 0 0 7.001380066e-07 0 96182.46891 0 1.313416211e-12 0 0 2.424823586e-14 3.03102637e-18 4.802503314e-16 0 3.185574168e-06 0 190236.7496 0 0 0 0 0 0 1.368199758e-17 +1.185879136e-10 0 0 0 3.018256789e-05 1.901404061e-10 0 0.01192812431 4.65247877e-05 0 0 1.090099331e-08 0 0.5569736725 0 0 0 0 10218.50503 0 0 0 0 0 0 0 0 0.008795255083 0 6.976533237e-18 4.051646914e-06 0 0 3.699088418e-13 0 0 171672.958 0 0 0 0 0 4.435549099e-06 0.0001834218798 0 7.22807113e-09 0 6.173412408e-07 0 4.599721757e-28 0 2.891560071e-07 0 0 0 0 0.008347965047 0 0 0 0 0 0.4029377074 0 1193.72656 0 0 9.062202246e-11 0 9.189929062e-09 1.436496244e-06 0 2719.841701 0 0 0 0 1.19183335e-11 1.008051571e-09 0 0 1.698160437e-10 0 0 2.749202746e-17 5.778678231e-19 0 0 40.59831148 6.745602486e-05 0.0001872341946 8.422904228e-13 0 3.712882394e-09 6.975633872e-23 9.033273593e-09 668274.91 1.52418305 0.0001624323658 0 3.813285165e-05 0 0 0 1.102780475e-12 0 0 22.14943345 0 0 0 0.0004866738634 5.796002773e-09 0 1.851787104e-13 0 0 0 0 0 0 0 0 4.249609821e-17 0 0 9.098612685 0 0 0 0 0 0 1326.003303 0 113.029675 0 8.596061677e-16 0 1.955843369e-11 0.2956979468 0 0 0 171660.7985 7.735183772 0 0 33.61074906 0 1.288304607e-05 0 0 4.847881659e-27 0 0 0.02375196402 0 0 87.31744537 0 0 0 1.579731155e-07 0 0 0 0 0 0 8.029348334e-06 2.21398176e-09 0 0 398543.4307 0.01151485555 64.12315992 0 0 2.184122054e-15 149089.1267 0.0009901177362 0 0 0 0 0 0 0 5.610619792e-06 0 0 0 279853.8655 0 3.237216729e-05 5.325365773e-08 0 0 0 0 0 0 0 0 0 0 121316.2716 0 3.488194941 0 0.08343302137 0 2.988346044e-08 2.595453091e-09 0 0 5.4740785e-24 5.379862553e-05 0 7.662831688e-14 0 1.376574537e-10 0 0 0 0 0 0 0 4.642022097e-11 0 2.68282709e-15 0 0 9550.793182 0 0 0.007744770616 0 0 0 9.043533175e-07 5.69110121 16616.8027 0 0 0 0 0 0.1008769369 8.778903868e-28 0 0 6.630071881e-14 0 197.1433822 0 0 0.4000947728 1.564222051e-07 1.121917103e-19 0 0 66.60220091 0 0 1.188349205e-14 1.134341289e-05 4.495649456e-24 0 0 6.464435607e-11 0 0 0 0 0 0 0.03315775171 0.0006021229766 424864.2283 2.919508797e-10 0 0 0 0 0.1236935203 0 0 0 0 0 1.084343168e-22 450825.9224 0 1.191993584e-12 0 0 0 +4.094990099e-08 0 0 0 0 0 1.205615198e-19 0 0 0 0 4.107483692e-25 8.399438859e-07 0 0 0 0 0 0 1.004598381e-07 1.783617702e-10 2957491.258 3.040580653e-12 1117.064676 2.093800809e-07 2.000592191e-12 3.675568304e-23 0 0 0 0 8.550577109e-20 0 0 0 0 0 1.579748685e-05 0.3855387051 3.033176481e-09 0 8.214409686e-18 0 0 0 0 0 5.141247898e-12 0.283031929 0 6.286347692e-09 8.225141342e-06 7596.853307 0 0 0 0 0.00124905998 0 0 0 0 13286.10412 1.662756823e-12 1.753569242e-11 223.7693701 0 0 1007.959144 0 0 0 0 0 0 9.43962005 0 0 0 493620.0269 5.54558731e-09 0 4.273319183e-16 0 2.057498671e-08 0 489021.3132 0.0005528756432 0 3.852112834e-08 0 0 121.6670851 2.105101562e-09 41515.60881 0 2.304506114e-15 0 0.003101260025 18369.35393 0 0 0 410412.9165 0 1.902026654e-12 0 0 0 0 1.773206769e-24 0 47.18660187 0 23695.11043 9008.795537 1.942836334e-29 1657198.139 0 1.291206189 0 76.82749792 0 0 0.002107830641 0 0 8.571049597e-06 0 0.000180080064 0 2.390215138e-19 1.146099346e-12 4.505121698e-05 0 0 0.3214006446 0 0 0 350097.3353 0 0 8.474224664e-18 9.468401519e-13 4.462766269e-22 0 3.003138747e-07 0 3.581744565e-10 573280.675 9.038122522e-05 0 0 191040.9459 0 4.203660719e-11 0 0 0 4.23284552e-13 0 0 0 1.00562604e-21 1.005899614e-08 0 205171.833 0 0 0 0 0 0 0 0 0 0.0001155506221 0 1.692222813 677987.4756 0 1.056908564e-07 10.33429928 5.744599603e-07 0 9.8244094e-32 0.0257590769 0 124.95594 0.0001274645405 2.62570673e-20 412.9391614 2.708201246e-09 0 1.81931129e-10 5433.000688 0 1397.795339 0 0 0.09669490758 0 0.0004737357781 3.085367879e-29 0 1.31766105e-20 0 0.007227347561 0 0 1.946152789e-07 0 0 2371.201544 1.720500407 0 0 0.003137185755 5.323099115e-05 82.1081084 0 6.248186909e-05 0 0 1.534439885e-08 6.204271025e-08 0 0 0 0 0 7.548105717e-17 0 0 0 0 2.224832834e-09 0.255770233 0 0 0 0 0 0 0 1.310848679e-13 0 0 0 0 0 6.608729886e-11 0 0 0 147888.7511 0 0 4.739428861e-24 0 0 69.87078397 0 0 8.275072771e-19 0 0 0.0001107460222 0 7.918170703e-19 0 0 0 0 0 0 0 0 0 0 1.326194053e-21 2.634070704e-08 0 0 0 0 0 3.623944729e-05 0 0 295347.6472 0 1.43147155e-09 0 0 1.2512171 0 227.0554659 0 +0 0 0 3.60104327e-16 1.728643504e-07 0 0 0 0.001584531321 0.02770004166 0 0 0 6.68458429e-13 0 0 0 4.182189557 0 0 0 1.951186037e-11 5.629465899e-09 1.956620652e-20 0 0 0 3.561682638e-09 0 2587638.25 0 0 3.537922217e-12 0 0 0 0 0 0 0 0 4473.683155 0 1.306776304e-05 0 0 0 0.00205516883 0 5.124195566 0 0 0 0 0 0 3.74587669e-19 2.559370606e-06 0 0 0 0 2.029220047e-20 0 0 0 3.302592647e-16 0 0 0 3538.383489 0 0.01097633423 1788.73276 0.001296938912 0 0 3.426862406e-05 0 0 0.0002625279103 0 0 0 0 0.0002938434946 1.509914656e-11 455.9557119 0 0.0003435424109 0 2.361201182e-09 0 1.283267018 0 0 0 0 84.85220783 0 2021.756863 48336.21837 9.01991584e-08 1.176346223e-19 2905.520217 0 3881072.965 0.006516375756 3.742539738e-11 6.789502129e-05 0.0001134233728 3.767857452e-13 0 0 4.698055599e-07 0 0 0.009137527645 0 0 0 705.6691049 0 0 0 7.589045406e-05 0 109.5294693 0 0 6.495017992e-08 6.224009269e-14 0.001755293637 8.680441069e-05 0 1.082265929e-05 2.331515571e-11 3.404116458e-13 0 0 1.740772978e-08 2.990153312e-06 0 0.1706130982 0 1076186.682 0 1.519932555e-07 0 0 0 0 0 2.014659575e-06 130.2037844 0 0 0 0 0 0 4.844066939 0 0 0 0 2.227967453e-10 2.971260075e-21 2.928809047e-15 0 0 1.23705732e-06 0 366687.3963 0 4.852626509e-09 0 0 5.071502244e-10 2.304822296e-16 1.942968945e-08 3304.941225 0 0 0 4.492231121e-13 0.1247147678 0 0 3.128075818e-14 116147.367 6.186176967e-19 2.36236452e-10 0 3319.087652 0 0 0 0 1.531439216e-21 0 0 100.0485678 4.479557781e-06 86617.67645 1.149325411e-14 0 3.234034592e-13 0 0 4.93941942e-11 0 0 866.5952419 0 0 0 666100.2239 74.08396705 7529.410913 0 0 6.209973235e-32 0 0 0 0 2.894028355 0 0 0 0 364.5889552 0.001380475624 0 0 4.97733523e-10 0 3.414415855 0 0 3.463840482e-05 0 0 0 0 0 0 0 0 0 13.32061099 0 0 0 0 0 0 0 5967222.728 2.320296263e-12 0 4.84381658e-12 0 0 5.211991023e-08 0 2683.628795 0 0 2.162329218e-24 1.239945703e-05 0 0 0 0 0 0 0 0 397.715609 0 3.592795275e-21 0 0 0 0 20930.38862 2.477879403 0 10845.22557 0 0.0006163564017 0 0 0 0 5.543976801e-08 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43279.5612 0 0 0 0 0 0 0 8.986763347e-06 0 1.330873142e-09 0 0 0 5.306120767e-19 53726.92288 0 0 0 0 0 0 0 1.531631617e-11 0 0 2.001138928e-19 0 0 0 0 165.7809166 0 3.416170473e-14 273697.4639 0 0 3.736396777e-09 0 0 0 0 0 0 0 0 0 0 44.31165412 0 1.765859453e-11 16.77372935 3.476525872e-15 0.003891823166 3.808658031e-14 0 0 9726.376367 0 0.00484231282 0 0 0.0003167079099 0.0007511094224 0 0 0 4.285867018e-07 638.3647817 0 0 0.0006944185793 0 0 1.377390443e-12 7.792313181e-18 0 0 7.020772259e-06 4.590998168 0 2.732086568e-10 0 2.151592012e-07 144821.1325 78694.91731 0 0 0 0 0 0 0 0 0 89914.74996 0 0.0002696029076 0 0 0 1.226917638e-06 0 0 0 6.674120991e-07 5.776692244e-06 0 7.429629331e-12 0 0 169.0009433 0 0.1746599087 1.269795371e-10 0 8.40472194e-11 0 2346.068837 0 1.341273411e-07 0 0 0 0 2.724838998e-19 0 0 342.573971 0 202649.1982 2.297713936e-25 0 0 0 1.540712545e-25 0 0 8.148074169e-18 4.820791983e-14 0 0 0 2.787357226e-14 4.967757441e-05 0 0 0 0 0 7.098276749e-15 6217.524718 2.013181479e-13 0 0 0.0002480548143 1932.553942 0.002420147616 3.344581469e-15 8.042919692e-21 0 0 2.104885985e-16 3.683676135e-14 0.0003230907314 0 2.16341078e-12 573.1367312 0.2897296418 0 830470.8086 0 1.372427566e-09 31.39784513 0 0.0002233205267 0 0 9.578894487e-16 0 2.268992873e-06 2.348318944e-12 0 19.68638315 244403.3825 0 0 0.001972997366 0.0001309026289 2.665601757e-11 0.0004187086323 0 73106.30883 53939.79757 0 0 0 0 0.00674579991 0 0 0 5.873020262e-12 0 0 4.673782022e-18 0 4.163007048e-13 0 6.175862511e-11 0 58547.196 0 0 0 0 4.866425298e-07 0 2.424145907e-08 0 0 0 9003.148577 7.584373474e-21 0 0 0 0 0 16.67215511 0 2.768488602e-20 163.3032976 0 0 0 0.2258686605 0 0 0.001075865468 2.078053562e-11 2.745327389e-09 0 1221121.536 0 0 0 0 0 0 2575558.42 0 0 0 0 0 0 0 0 0 7.310571888e-16 0 0 3.120464367e-05 0 0 0 1.208195713e-08 0 0 0 276311.6148 0.2243277086 0 1.395455456e-05 0 0 1.033026559e-13 4.154513818e-08 0 0 0 0 2.64912622e-12 0 +0 0 0 0 0 0 0 5.547275697e-20 0 0 0 1.01933477e-11 0 0 0.02977396714 0 0 0 2.417106282e-07 0.0005262107933 0 9.886807144e-20 0 7.575286387e-18 0 0 0 5.939034677e-09 0.0001475135116 0 0 9.898338043e-05 0 0 17.60802185 2.779698668e-07 0 0 0 3637.302167 0 0 0 0.0005448349991 0 0 0 0 0 0 0 2.185848363 0 0 0 0 0 0 3.341576834e-14 0 0 0 0 1.3541661e-16 0 112701.618 0 0 0 0 0 8988.489147 0 0 0 0.004705723656 0 1.700603941e-16 0 1.307168072e-21 47567.13705 9.100936879e-09 0 3.028321916e-09 1.995411007e-13 133.8273656 0 0 9.523190193e-10 0 0 0 0 0 5.446401144e-09 1115415.903 3.268469445e-07 0 0 215637.8909 0 0 0 18.65397266 0 1250398.162 0 0.006236488599 1.822149662e-27 614.8918931 0 0 0 0 0.01160189504 0.01745642815 0 0 0 3.661130832e-17 0 0 0 101249.6644 0 0 5.302094645 0 0.0001418517844 0.6806704274 0 5.426787545e-11 0 0 1.671978242e-11 0 0 5.838731937e-10 3.467624578e-10 3.630826035e-17 8.414678578e-30 2.56423632e-06 0 0 0 0 6.951282191e-20 4027.158806 0 0 0 2.850129669e-06 0 126662.9614 3.257451579e-11 0 0 0 7.403166079e-21 2.196268759e-08 0 0 0 0.001170253305 0.01445201274 0 0 4.102442722e-16 0 0 0 0 0.0003839373392 0 2.359504899e-12 2.352420615e-20 0 61616.46378 0 446247.842 0 2.047859078 0 0 0 1.387246215e-23 0 1.899721198e-06 3.480259086e-21 0 0 0 0 0.03486552505 0 0 0 0 0 0 0 0 4.756667894e-11 0.3374243087 0 0 1.309578233e-05 0 0 0 0 0.06141949317 0 0 0 1.614147664e-12 0 0 0 0.0008525635025 0 0 0 1.291250583e-11 0 0 0 0.9162418014 1.025905028e-26 0 0.2204290312 0 5.595019619e-10 0.004789330414 0 667235.6822 8.101746079e-11 0 0 1.424497817e-23 0 64937.64682 5535.209465 0 0 0 4.112982746e-16 7.07735847e-09 0 36002.60815 123.2201608 0 0 0 0 0 0 0 2.645135605e-10 0 0 0 0 91077.99588 0 0 0 0 1.886412621e-13 0 0 2.287103341e-13 164.0643559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.484007104e-27 2.943854593 0 1.016472234e-08 0 0 0 0 716.7432141 0 0.01857992508 0 0 +65.36438477 0 2.855170027e-07 0 0 7.565171585e-10 0 0 0 0 1.569441847e-17 0 9.342975965e-09 0 0 0 0 0 0 1.108326492e-12 0 3.346857074e-17 0 0 0 0 0 0 0 0 0.04910811172 0 0 0 0 1.8725334e-29 0 0 2358.382502 0 0 0 0 0 2.149995733e-17 607458.5067 0 0 3.290856912e-13 2.676590618e-08 3.547784792e-15 0 3102142.444 0 2.493693282e-15 6055.305239 0 5.062887924e-17 8.630959055e-13 0 92497.82073 1.893863873e-23 0 0 997147.5383 0 0.0006335430162 0.0008751519657 0 56089.73374 0 850153.1751 0 0 5071.44014 0 0 2.577922523e-06 0 0 0 0 0 0 16466.71725 0 0.02209570889 0 0 0 0 0 0 0.003814349894 0 735.6918025 1475966.878 2.544452813e-09 0.0009926590708 4.523752123e-05 1.151711039e-12 7.273342549e-11 1.564590273e-05 1.274212249e-10 0 0 0 0 0 1.931655985e-16 1.959833228e-12 0 1.434369679e-31 0 0 5.463973867e-27 0 1.505953618e-08 9898.591376 2.140061534e-18 0 0 3.204393311e-19 0 0 1.607633428e-09 2.000449004e-23 7.349518398e-23 0 0 2.051096833e-07 0 0.8849632499 0 6.110825956e-10 9.932900772e-17 18.70356616 0 0 51414.10497 0 0 2.277159933e-16 30979.0053 0 2.525792269 4.790415575e-28 7.944954295e-17 204.3026925 1.984254615e-15 125258.3084 0 0 0 0 0 1.449884755 0 0 0.004137563036 0 125249.0185 0 92.16430518 0 0 0 0.4504572584 0.0001017940586 0 1.114176415e-17 0 0 0.1591533517 0 0 0 0 0 618.432364 0.001007946858 0 0 0.001166464896 0 2.483354942e-06 1.480965058 1374551.923 0 0 0 2.129425799e-09 6.497336132e-23 0 8.298021411e-06 6.24249296e-20 4.472242534e-14 0 0 428774.6434 0 1.383041465e-06 0 0 0 390715.6858 2.442438041e-13 1.013527258e-11 0 1005.8352 0 0.321490217 1.295027908e-19 0.07944809472 0 3.758944304e-22 811676.5596 0 6.426496268e-13 1.827022792e-05 0 1.82664995e-17 0 1.759799479e-16 0 0 0 185936.9588 0 0 0 0 0 6.578458555e-10 0 0 0 0 0 0 1.50268292e-15 1691741.467 3.899458974e-11 9.369517301e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.351917755e-05 36215.22928 0 0 0 0 5.607903666e-27 6.826717839e-18 3.964247886e-06 0 0 0 0 0 1.329881096e-07 0 0 0 446209.67 0 0 0 0 0 0 0 0 0 0 1.358518262e-15 0 0 6.840522561e-16 0 0 654244.7556 0 0 0 0 9.977095812e-08 +3146.754583 0 523564.6096 4.742677954e-13 0 0 0 0 0 0 0 0 6.757470928e-06 0 0 0 0.1105609183 2.352944775e-07 0 1.088055531e-25 0 0 3.40419627e-07 0 0 0 0 0 0 0 0 3.505755438e-25 0 0 0 0 0 0 0 0 0 14946.26435 3.193997623e-30 0 0 0 0 1211790.774 260581.208 0 0 0 0 0.004283515653 0 0 0 6.044310274e-09 0 6.44127583e-15 0 1.74420699e-10 383899.2224 1.798211217e-15 0 0 0 22237.91677 418564.1968 3.524758582e-10 1.984118397e-06 0 0 0 0 0 0 0 0 4.3083159 0 0 0 0 0 0 0 0 0.03054660801 0 7.439611823e-10 1.525818923e-11 2.708916894e-08 0 2.191263094e-09 0 1.061277096e-29 3.057632104e-14 1.826227825e-12 0 0.001444642227 7.022290918e-06 0 4.640013628 8327.843712 0 0 4.118517527e-13 10.53573577 1414.157978 750656.2765 0 0 0.03658063759 7.805729137e-13 5671.745389 3.084186204e-20 8.025784404e-10 0.0008975995464 1864.10563 0 1.837203361e-13 0 0.004569876974 0 6.476531565e-31 2126.972674 0 0 0 0 0 0 0 654.307724 0 8.515996345e-12 0 0 0.001237089773 0 0 0 0 0 0.9636122332 0 0 5.765451812e-09 0.004941816448 0 2284.847155 13178.27798 0.04177897756 434047.7119 0 6.314727382e-19 0 408114.7371 0 0 0 0 0 0 472033.8225 0 0 0 0 0 2.988567395e-40 16043.28736 8.28522146e-21 0.3359328591 7.63560428e-09 0 0.06572472668 6.795160717e-13 0.2550880292 4.155583608e-09 0 6.779248754e-13 0 14897.36315 0 1363705.47 29292.59521 0 403215.6244 5009335.027 0 2.810590609e-05 1.533437034e-09 0 0 1.361994131e-09 0 13.55758842 8.198129173e-12 297672.144 6.764352777e-15 0 947766.9762 0 0 0 0 0.3993375394 0 7.280091069e-06 21.4595495 2.152043232e-15 0 0.001292986591 0 0 2.465481405e-13 0 14156.77725 1.657406944e-05 0.0001266548244 0 0 0 1.845561678e-12 5.068099724e-18 1.181854675e-27 0 0 0.0008439512438 0 0 0 0 0 0 0 0 0 0 7.072424213e-07 3.092783276e-10 0 0 0 0 0 8.623415601e-17 3.283800397e-07 2.605752839e-06 0 0 0 0 0 0 0.0006102169089 0 0 0 0 1.153500657 0 0 0.0007670405716 0 0 4.557685737 0 0 0 0 0 0 0 7.656170124e-21 0 3.344603656e-10 101.7997745 0 7.276547546e-13 0 1166336.414 0 0 1.653903445e-19 6.445627372e-29 0 0 0 1.430424839e-10 0 0.0003104191936 0 0 2243.77432 1.208737988e-17 0 0 +0 0 0 0 0 0 0 0 0 0 396213.436 0.008886236792 2.686109777e-13 0 0 2203755.853 0 0 0 0 0 0 0 0 1.565632568e-11 0 0 0 3.665924402e-10 0 0 5.433118008e-13 0 0 0 0 0 0 0 1.16294967e-30 0 1.501846035e-09 0 0 0 0 0 0 0 0 0 0 2.453925525e-11 0 2.314438091e-08 0 4.282236417e-13 0 0 0 8.234366672e-10 0 0 0.2428685056 0 0 0 0 0.4819961362 0 0 5.934511191e-09 6.270212605e-17 0 0 0 6.675046902e-15 0 0 0 2.983540816e-05 5.523890818e-08 1.649934518e-20 0 0 0 0 702091.23 0 0 232.7143237 13438.43927 4.035923293e-07 1.882796615e-20 0 2.590430582e-26 0 5.750250602e-10 0 74.21017821 13302.70176 0 0.0004459416982 19.1840779 0 1.546817372 5.661682506 15432.96916 0.6642893314 0 2.353664923e-07 0.000446681732 4.606722916e-11 85616.34819 0 0 0.0001367758242 0 0 9.446359792e-08 0 0.001269899143 1.525373796 0 0 0 5.775321515e-15 0 0 0.4438597499 0.0008722286996 0 0 0 0 0 0 0 0 0 0 8.720030919e-20 4.440908788e-12 0 125451.7335 3.144266476e-23 1.524427732e-11 0 2487.513428 8.019587142e-10 3.223846141 0 3.25096698e-11 7.401911191e-15 5.864378377e-07 0.01628866944 0 0 3.47814037e-11 0 0 0 0.0005067719077 259907.9729 0 0 0 0 0 0 0.002396739417 0 2.41168472e-13 0.5038169767 0 0 0 0 2.821139207e-14 0 0 0 0 455.3042246 0 0 0 0 0 0 0 0 0 6.913526958 9333.085151 0 0 0 0 2.210820851e-11 0 0.1443758803 0 0.01544599251 0 536.5565121 0 8.399120891e-08 1.419070708e-11 0 0 0 0 3.327563998e-16 0 0.06398922159 0 0 68.01552288 0 0 0 247251.7545 6.645096809e-17 8.069841378e-07 0 0 0 0 0 0 0 1.839773962e-16 0 0 2946.790227 0 9.247289692e-10 8.618007817e-27 6.247153415 176605.5607 7.775896011e-06 0 0 0 0 0 0 0 0 0 0.0112559031 0.0002021830194 5081.743273 0 0 2.534946041e-19 0.8405568627 0 0 0 0 0 6.343808305e-16 0 0 6.923191036e-05 0 5.179087654e-11 0 0 124727.8385 6.633639178e-20 0 3.20783088e-14 0 0 0 0 0 2.626774467e-07 0 5.50213097e-30 0 0 29082.49627 1.98348412e-29 0 218593.9945 0.1691966674 5.313835852e-11 0 0 0 0 0 0 0 0 5.245984791e-13 +0 9.237789082e-13 0 0 0 0 0 0 1.151842549e-09 0 49.87015428 2.450221791e-12 0 0 0 0 2.547753107e-11 0 0 4.667946959e-21 0 0 4.57806141e-12 0 0 0 0 1.656298402e-28 8.893229441e-15 0 4.065041559e-18 0 7.123084645e-12 0 1.628330481e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 6.408088256e-10 0 0 11.17896295 10112.73736 3080.902307 0 0 0 2.737757048e-05 0 0 4.257150122e-07 0.0001651924471 3.204031616e-08 0 0.02199118953 0 9.397191136e-12 0 0 0 0 0 0 0 13921.76783 0 0 4.205725317 0 0 0 0 0 0.0002136445721 0 0 223034.3604 0 1661.852338 0 0 470.1052977 0 0 0 0 0 2.048036918e-27 0 1.856727797 0 0 0 1.238915662e-15 0 0 0 3.215216696e-06 1.431166162e-16 0 4.095803966 0 0 6.373132724e-11 0 6.382332019e-16 0 0.01174875692 0 1.749561081e-18 0 0 0 0 5.704075924 0 0 3.871673803e-13 0 5.625624395e-13 0 0 0.07213429563 4.964537524 0 168.7921534 0 0 5.573891066e-12 0 0 0.1357122343 0 0 0 2.925306087e-06 6.260657347 0.311485913 0 1.268405233e-08 5.183302881e-08 7.538147493e-12 5.760082781e-25 0 0 1.473661608e-30 6.723229669e-12 1.140314021e-31 0 0 0.4677829602 0 3.669679948e-06 2.319238463 8.718490778e-05 0 6.847526799e-20 0 0 20784.37399 7.037319827e-09 304430.993 2.536456678e-11 0 2.545728297e-27 0 50.73208781 16.69086136 1.814073245e-21 0 1.700521233e-22 0 0 8.259078016e-15 0 0 2.929512337e-07 1.033701311e-23 569811.5444 0 1.100767782e-08 9.184138624e-23 0 0 41.40153596 0 0 0 0 0 0 6.221292751e-12 410.8577658 4.287118498e-08 0 0 0 4605.405394 5.385973567e-20 0 5.131062546 8696.356466 0 2311.067952 0 0 0 0 17.62553109 0 0 47.20158655 0 64.98056784 1567.065163 0 354380.8529 35.69821135 0 0 0 0 0 0 0 0 0 1601.06913 0 0.002930316758 1.809516077e-12 0 555.3880402 0 0 0 0 2.40203252e-06 0 0.09994610419 0 0 0 0 0 0 0 0 3.0921013 0 0 0 2.580526026 0 0 0 0 0 1546351.783 15305.74656 0 0.002210067089 0 0 0.1379947756 0 1.217243231e-07 0 0 0 0 1504350.121 0 4.776557416e-12 77.83832702 1.048269962e-07 0 0 0 193442.8876 1.128788957e-09 0 0 0 958454.083 0 0 0 0 0 +4.493935923e-15 0 2.659798753e-27 0 0 0 0 0.0001173579924 134300.9714 0 0 0 2.028437146e-11 0 0 0 179747.4114 0 0 3.147842615e-05 0 0 0 0 0 958.5446858 0 0 0 0 5.543156517e-10 4512.532044 2926.951339 0 7012.550485 0 0 0.1343520286 0 0 1.493994598e-07 9.723952147e-18 382.2101022 0 75.91994474 0 2.522350421e-08 0 358.4369808 0 0 0 1.245733727e-07 0 3.681049556e-12 1.074407869 0 0 2751934.597 0 0 0 0 1.711870869e-18 0 0 191726.5703 4295.710842 0 0 0 0 3.980483045e-27 3.794648154e-28 0 9.841233728e-09 1.934566135e-11 1.715483675e-05 7.795231694e-11 1.261559275e-09 0 0 0 0 1.242499878e-14 6.998841298e-19 0 0 0 4.166493845e-27 8.011745494e-11 1.291193768e-07 1.687752681e-10 0 1.117354263e-08 226811.8039 1.274699265e-06 0 0 0.0076565972 0 0.01395838912 1.583154319e-15 0 0 0 0 0.0006275325699 3.039044493e-18 0 518012.8529 0 0 0 35.42268886 2.620808018e-10 533.8983652 0 4.395355141e-09 0 9.663250885e-18 0 1.193938712e-06 0 0 4.724512007e-09 4.492131522e-12 0.1114303543 0 0 0 0 0 0.01140162763 0 0 2.499054697e-11 0 3.355228727e-10 0 0 0 0 3.162545686e-13 0 132.4948674 0 0 2.40408039e-24 3846.491751 0 0.009087046372 0 0.02065546748 0 1.648841728e-34 0 193798.2159 0.3964175921 0 5.87734922e-06 0 0.9478790968 4.121272165e-08 0 1.118202968e-11 765.7441815 7696.55427 2.034533345e-18 7.62743618e-05 4.514810233e-07 4.431601599e-15 563.8876644 0 1.073314604e-18 9.085538632e-19 0 0 0 814.6240309 0 0 1.117774795e-26 0 5.486600788 0 0 0 7.244487529e-12 0 0 597.4317756 486270.7307 121890.3778 9.982524827e-17 577104.6234 0.05572121098 0 0 4.281111344e-11 6.007672405e-13 0 0.4030553646 0.01619991716 0 0.0007114140807 0 2.372594896e-15 283.1906198 0 0 0 9.37153077e-06 0 0 0 0 0 0 0 7842.03964 0.2368735483 0 2.189615796e-12 2.106570731e-05 19500.42043 0 0 0 0 0 2.803814979e-07 0 4653985.276 0 0 0 0 0 53391.70767 0 0 0.3017036077 0 0 0 0 0 0 0 7.313776144e-09 0 0 6.758454711e-06 0 2.96471115e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.716916247e-20 0 0 0.03480864533 1044992.805 0 0 0 2593.6139 0 0 2280.275527 0 0 0 6.31190746e-12 1.16943567e-05 1.784589792e-13 0 2.239097374e-15 0 0 0 0 0 +26.08808639 0 2.330672274e-14 0 5.722874027e-26 0 1.923909469e-05 0 0 0 0 0 0 0 3.038951989e-12 0 0 0 1.511596347e-05 0 0 0 0 0 0 0.03236824776 0 0 0 0 3.715349325e-16 3.004630182e-17 9.993163794e-12 0 0 0 0 0 0 0 0 245.4632172 0 1.577450274e-09 0 9.76900627e-11 2.479387548e-10 0 0 0 0 1.719305544 0 0 0 2.990585843e-08 5.422601424e-05 0 1.732380454e-26 0 0 0 0 0 1.16140761e-09 0 3.887358131e-14 0 0 0 0 2027.422513 494987.3351 6.368917515e-12 0 0 0 0 0 0 0 0.03122539881 5.018702142e-23 0 0 0 0 0 0 79605.12091 7.295232573e-08 0 2.279166854e-14 0 0 38.45419948 0.3636736831 0 0 0 9.556068733e-05 0 0 5.704139784e-17 0 0 0 0 0 3.004519343e-28 2.251386447e-16 0 850.5070528 2.257952689e-10 0 0.002057036981 0 0 0 84200.45024 0 0 2.29100161e-16 7.536410569e-09 10837.2532 0 0 0 3.464490133e-11 0.03757754717 4.684899805 0 0.00692148162 6.624526174e-14 0 0 0.08662687797 1310.692076 251.4963197 0 0 0 0 1.364968279e-08 0 0 0 30.3198796 47974.14571 0 0.0009824868713 5.228910498 0 0 0 0 0 0 6.780418852e-13 0 68630.33692 0 0 0 0 2.034521842e-12 1.237050586e-08 3.540614647e-09 0 0 154999.7169 0 0 0 4.235523115 2.725338897e-05 0 0 0 0 8714.492302 89.95169026 1.391181512 0 80.74518095 0.8369728287 0.00017414608 0 0 1.628600583e-35 0 0 0 8.436243752e-28 0 0 0 0 5.672335183e-15 441923.8622 249.4703425 1.087677541e-08 0.01876149092 0 6944.593285 0 0 0 0 0 0 2.354267016e-10 0 0 0.02084932135 0 0 0 0 1.173065333e-09 0 465833.5199 0 0 10978.68468 2.53009709e-05 0 0 1.458909129e-16 0 1.854479555e-16 1.540818157e-35 0 0 0 1185858.764 0 0 0 980340.5087 0 0 0 0 0 0 0.0001102404992 0 0 0 89135.59156 4.260693459e-12 0.2253913738 3.905142776e-12 1.706859585e-20 0 0 8.338071852e-16 0 0 0 549530.9882 8.956250427e-10 0.8412103271 0 0 0 0 3.764859369e-21 0 0 9.725370826e-12 0 2.42414634e-11 0 0 0 0.02623776094 0 0 2.060539151e-15 0 0 0 0.04383571102 2.377658071e-19 0 263510.9876 0 0.04127450231 0 0 0 0 0 0 1.106847515e-08 4050.495543 3.1433665e-07 0 +0 0 0 0 0 0 0 0 0 0 0 0 9.205913649e-05 0 0 0 0 0 0 0 2.938834929e-11 0 0 0 0 6.33582036e-12 2.090592765e-19 0 0 0 0 575202.5735 0 132.9590654 4.665841926e-08 1.251052691e-11 0 0 0 0 1.339229177e-15 0 339236.2397 0 0 0 7.757408718e-23 0 0.006705133986 5.953871984e-18 0 0 0 6.226225061e-12 0 0 3.423673468e-08 0 0 0 0 7.55374781e-11 0 2555.810109 2389509.379 0 0 0 0 0 1.986761454 0 0 0 0 0 0 1.494549217e-21 0.06478213806 3.1299475e-14 0 1.950989014e-09 8.783941445e-07 0 0 0 0 0 0.000681085534 3703.986154 0 0 0 0 5.879882342e-11 0 0 0 0 0 1.343262172e-10 2.48056347e-11 0 0 0 0.003173323024 2.313861114e-06 2.165107889e-05 0 0.02088739654 0 0 1332.850576 2.523685947e-10 0 0.01546289964 0 0 0.002597891655 2.952384053e-08 1.25143932 0 7.990350425e-11 0 0 2.421665914e-17 5.042051203e-17 1.081300649e-09 0 0 6.243842451e-08 1.311452164e-07 0 0 0 4.758213148 0.0007817492398 1.629171441e-05 0 0 0 0 0 0 0 8.856011391e-11 1026.43908 1.673276922e-07 0 1.125899497e-09 0 4.649914978e-15 0 0.3028670427 0 0 0 0 5.059511621e-19 1.430564308e-10 2.676484555e-16 0 0 0 0 0 4067.713387 8.747233344e-06 0 0.0002804521567 9.662822335e-24 0 0 0 0 0 0 2.512363014e-05 0.000102883555 0 0 0 0 3.275836988e-13 0.04883839785 7.846271768e-17 0 0 4372.870113 232899.3098 0 0 7.749425146e-09 0 0 2.36557502e-12 0 1.326136149e-08 0 0 0 0 0 4.937721026 0 0.2345659756 13132.62843 0 0 0 108552.9639 0 0 0 3.82588944e-07 0 1.535180833e-18 1805.690848 0 160.841774 1.071570901e-19 0 0 1.155363534e-17 0 0 0 1.227654727e-13 0 4518.780541 0 0 0.001404540837 0.008341130741 0 0.337206341 0 0 0 0 0 0 1.611907838e-24 0 2.751826691e-13 0 0 0.0003508707415 0 0 0 0 0 0 0 0 1.237392894e-10 0.0005525667305 0 0 158019.1267 7.341449322e-15 0 0 4309.796509 0 0 0 0 0 1195474.776 0 0 0 0 0 7373.949488 0.0005647955745 0 0 0 0 0 4.299882077e-16 9.352592238e-13 0 0 0 0 5.118576526 2.604495901e-07 0 0.003911371935 0 0 0 0 0 71.57777192 1.782579873e-06 +0 0 0 7.508676358e-10 465627.8469 0 3.873047638e-09 0 0 4.118801631e-16 0 0.003015062727 0 2.333949606e-08 8.870312953e-07 0 0 0 0 0 0 0 0 4.917180535e-10 0 0 0 0 0 4.048512212e-17 0 0 1.190525814e-19 0 0.08774068577 0 44.03986911 1.871479612e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112925.2977 0 0 0 0 1.440625549e-12 2.468393249e-12 0 0 0 0 0 0 0 1.120481383e-05 283768.6334 0.0007456769736 0 0 0 4.285470696e-10 3.32353654e-13 0 5.569684823e-07 0.04051261618 0.2842473011 0 3.487770415e-06 1.966587104e-09 382061.7201 1.879853958e-14 1.397944758e-11 0 178.0788168 0 1388.934239 166.8999435 0 0 2287818.767 0 142.367016 54400.45261 0 0 0 564684.3451 2.069371716e-17 0 0 1.195888822e-14 0.06739658054 0 236.6958392 0 0 1.640047088e-23 6.569385897e-27 153.4456254 0 0 0 2.15954017e-07 0 2.649614274e-05 1.64614491e-15 976917.1392 3.713049498e-10 0 0 2.466963357e-16 1092.181246 0 1.794945714e-11 0 5.961831859e-11 0 3779.192436 0 0 0 0 0 0.08468081807 25.09355687 2.575646135e-12 0 558.5848154 0 0 0 0 3444.033615 0.1976099076 0.3082863358 0 0.03413196978 0 608.8964538 0 1.255189952e-14 1296.583429 0 4.963833765e-16 0 0 2.482751522e-11 2.351591923e-20 0 0 0 0 432082.453 316785.759 0 1.012820723e-11 0 4.761733426e-08 0.0005172362824 0 0.0003255687641 4.247215979e-07 0 1.658605111e-10 0 0.1668781783 0.04435568316 0 3.128708859e-05 2.045607784e-10 9.40960902e-15 0 0 0 0 0 0 2.054452805e-17 4.062800149e-05 0 0 3.865834769e-08 950.336383 0.006660091033 0.007467283782 0 0 1.26058035e-06 0 0.04862396677 0 5.046455463e-06 0 0 0 1.673571225e-08 0 6.595606062e-27 1.392640911e-18 0 0 0 0 1464398.405 1.928480889e-11 0 0 0 2079233.788 1.240689465e-07 0 0 0 7.144169619e-06 0 0 0 4.465767567e-11 3.886849133 5.694450316e-14 0 0 0 2.010876851e-07 8.321739749e-08 0 1.056366683e-14 64788.71975 0 8.390701002 0 0 0 0 4.690634303e-19 0 0 3.83393962e-14 108.9452567 0 0 27007.67758 0 0 0 0 1.216422538e-29 0 0 0 0 2941.142868 0 0 0 0 0 0 0 1.350095219e-09 0 0 0 0 0 0 0 1083553.215 0 0 6669.311551 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.537566432e-21 +0 1.145443462e-12 0 0 0 0 0 0 4.857616211e-17 1.594413052e-11 4.600427468e-05 0 0 0 189.366076 0 0 0 0 0 83.31596777 0 0 0 0 0.01408670193 0 59821.52854 0 0 0.0001072757984 0 0 0 0 0 3.239294439e-11 2.505471636e-13 0 0 1.16250746e-10 7.935935096e-12 0 2446.686259 0 0 0 0 0 2.328141564e-05 0 345966.6765 0 0 0 0 0 0 4.424482012e-10 0 14817.28721 0 0 0 0 0 0 0 0 0 0 0 0 3.670828254e-17 0 0 0 0 0.00187997917 0 9.51232266e-28 7.71170512e-19 8.730158187e-06 0 0 0 0 0 5037375.248 0 0 0.01878234477 0 0 0 0 1.994611624e-06 0 0 1.79944277e-12 0 8.198142118e-07 0 6359.9089 0 2.500326402e-19 0 0 7.404418818e-25 0.0003360279926 0 0 5.058736679e-08 0 0 0 430.5797291 0 0 0 0 2.40769297e-17 7.577380749e-07 0 0 7.169817236 4.209452819e-13 1.933583184e-27 1491346.588 0.0001403518246 0 0 8.420750565e-20 0 0 0 0 0 0 0 0 0 3.21353819e-11 5.106243251e-11 0 9.174333361e-15 1.989250473e-12 0 111975.9573 0.004357038953 3.613052457e-13 0 5.566124163e-05 3.223063522e-08 0 1.344589668e-09 64711.39647 0.02974927247 0 0 0 0 2.234809071 0 0 0 0 0 0 7070561.82 0 0 1.079606762e-13 0 0.02744463331 0 0 0 0 0 2.627414614e-32 0 0 0 0 0 11984.51565 2.518479116e-09 0 0.1483353416 0 0 0 1.426161519e-27 0 7.223219007e-16 1.64373858e-07 589341.3419 0 0 0 0 780.4147188 0 1.255506851e-14 13474.1313 1.68387048e-12 0 0 0 0 0 0 4.39857363e-06 0 0 0 1.582484979e-26 5.569291457e-25 6.067520286e-11 0 0 5.634945845e-07 4091.101708 0 0 0 1.307395192e-06 1.934811591e-22 0 86865.50689 0 0 0 0 0 1.848072543e-06 1497806.752 0 0.3167842386 1465432.726 0 0 3.743193262e-21 0 1.35801688e-06 0 0 0 0 0 5.194805224e-10 0.0001073374792 8.032958589 0 390079.1206 0 3.727340066 0 0.01742572229 3.640257989e-11 0 0.001424337541 0 0 0 0 0 0 2.09827468e-25 0 0 0 0 0 0 0 0 0 3.00806523e-15 0 4.507973193e-20 9.882370924e-18 0 0 615.2623953 0 2.718345284e-05 0 0 6495.519878 0 0 0 0 0 0 0 0 3.460040235e-36 +0 0 0 0 0 2608096.011 0 0 3232007.191 30023.75757 0 0 0 0 0.1414310378 342266.6396 0 0 0 0 0 0 0 0 0 1.968976161e-11 1774528.074 0.9061158182 0 0 0 7.884654663 0 0 0 0 0 1.509341571e-18 2.06833285e-24 0 2.790437267e-12 240.5974034 0 2.547218474e-16 2128042.116 1.261063964e-22 5749.620247 0 0 0 1.166305456e-09 0 8.88243616e-22 0 0 0 0 0 45069.40722 1.429712556e-20 0.007113259567 0 0 0 0 165254.9143 1.17363298e-05 0 2.696155563e-27 0 5.957185113e-22 0 0 0 0 0 0 0 170.1877515 265823.5068 14179.3376 1.054406087e-08 0 0 2.805313472e-31 4.19056085e-09 0 0.4175783463 0 636.5033378 697.5197854 29942.46584 0.0003427780394 0.0001900234462 0 0 0 0 3.806534866e-29 1.839768184e-12 65.40180416 67.36358677 0 0 1.13208284e-06 563427.6727 0 0 0 3.935426978e-07 1.654340794e-07 1.003494489e-25 2.535420245e-14 0 0 0 0.0009024977799 8288049.493 0 2.097469058e-13 0 0 0 1.888209587e-19 0 0 0 1.675323051e-08 1.134582174e-06 3201.514916 5.921841746e-06 2.656651463e-13 0.0001284325336 3.26790028e-20 5.221865129e-07 0 11093.41864 0 105.7259627 5.195012103e-14 0 5.247720319e-19 6.310680376e-07 0 0 0 96843.66345 0 0 6.251750451e-05 0 1.386505445e-15 0.0001330635714 180.24567 0 0 0 0.02667018046 2.52548464e-09 1.986439421e-06 9.647963984e-16 342.3446891 1.466641796e-11 7.166546695e-22 0 0 0 5.745792655 187683.0249 0 1.193515372e-12 0.00978108803 0.0001604025121 0 1.001961065e-13 1.070328432e-16 110.8181856 4.040221345e-23 2.295979602e-22 0 0 0.01546100192 0 1.462739347e-28 0 0 0 2.398139932e-27 1.713114574e-13 0 2.28594195e-12 6.056246296e-13 0 7.706890012e-10 2.919971456e-13 2.306557944e-09 37636.65586 1.155826907e-07 1.832385259e-12 0 0 0.001088810927 0 0 0 0 6.834993218e-08 150521.3081 220592.6104 0.005692138435 6750.506339 3.966118946e-08 0.1233268024 0 0 0 0 0 0 3.383931918e-27 1.63378642e-12 9.821435057e-10 0 43.99675405 0 0 0 0 0 0 0 0 0 2.283995551e-17 7.618965853 0 0 0 0 0 2.395344137e-11 6.642187114 7.740784659e-06 8.469147866e-18 0 0 0 0 0 0 2.028949702e-12 122580.7591 0 0 0 2.293128016e-12 0 491.9947736 0 0 0 5.547817287e-13 0 0 0 27.22879635 0 0 0 0 0 0 0 0 0 9.683392401e-12 0 0 0 0 0 0 0 0 0 0 1.119254153e-07 0 0 0 0 2.656466363e-09 0 0 0 0 2.941436945e-28 9.559873652e-30 0 0 +0 2.970951508e-20 2.731034419e-18 0 0 93.93774119 0 0 1.304322441e-14 9.36791221e-10 0 0 0 0 0 0 0 0 0 0 0 0 7.727457012e-07 0 0 0 0 0 0 0 0 0 0 0 0 1.185925358e-05 0 7.757558667 0 0 0 3.821500639e-08 0 0 0 0 0 0.03354216054 0 0 0 0 0 0 0 0 0 0 3.499913292e-14 0 6.810095975e-20 3.162624791e-15 7.967789794e-28 0 0 0 1.778201743e-08 1695.782225 5.959631532e-08 1.599589219e-14 0 0 0 6980.283242 0 0 0 0 0 0 0 0 0 0 6.942415337e-23 0.03894694777 2552.820565 0 0 0.0005168671961 0 461988.4529 0 0 0.001388969898 67.38044292 2.66844851e-07 0.003121352913 2.498717066e-30 0.01670738106 0 0.007183554057 0 1.391072529e-05 9.083342426e-06 0 0 1087.029635 0.0003004898134 0 0 1537182.094 104.4590864 2.824534392e-13 0 0.08651686642 0 0 0 0 22.84798683 1.191135842e-06 435461.5804 5714.941474 0 0 0 1.889235789 0 0 0.07086068807 2.255345189e-14 0 14.79339515 0 0 7.632366865e-06 0 100025.4861 2.721933251e-05 786179.7763 0 2.577415835e-09 0.0006079540616 1.448087077e-05 111.1573042 6.105203272e-28 0 0.176853713 3.812948945e-14 0 0 1.815388515e-08 0 0 2.016884816e-12 5.7010794e-14 0 0 0 19.81909555 7.066463574e-08 6.735913599e-16 0 0 0 2.997167604e-05 9.566717407 0 1.194701472e-06 0 0 57.22692874 0.0002604435466 7.113828857e-14 0.0009415795198 0 0 0 0 2.793217889e-06 0 9.076879994e-09 2.6686914 0 0 0 0.01848635077 0 0 4.605704526e-19 0 0 0 0 2325.061444 4.246648673e-17 206.5904745 3.536971719e-20 18333.23449 3.707057737e-08 5129.442879 0 0 3.160815946e-18 0 0 9.523246485e-11 0 0 30589.04513 4.463071894e-10 10847.35986 0 0 0 0 1.007127267e-26 3.866842244e-17 0 0 0 0 0 0 0 0.01431185001 3.290973874e-13 0 0 2011191.981 0 0 7.914164169e-06 2.411883117e-10 0 0.02106004597 0 0 0 0 0 0 0 0 0 0 0 0 2.508196044e-09 0 332050.5778 385030.4282 0 3739.026467 1.539176262e-20 0 6.27662194e-17 0 0 0 0 1.190421562e-09 0 0.3218547418 3.312303059e-20 21896.15224 1.232581943e-12 0 0 0 3.021813635e-06 0 0 0 0 0 0 0 0 859677.2829 6.644368741e-11 6.051327934e-13 3.839322813e-13 0 0 0 0 0 0 707.3575644 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 5.527158631 0 6.702112133e-13 0 0 0.04810891126 0 1.218906751e-14 0 0 0 0 0 0 0 0 0 0 0 1.509211115e-22 0 0 0 0 5.132670034e-20 32927.49899 2.267017565e-08 0 4.662313902e-08 0 710731.209 0 0 0 0 0 0 0 0 2222.73175 0 6.517348174e-09 0 0 8172.67457 0 0 0 0 0 0 0 0 0 0 0 1.819801177e-29 3.857073687e-11 0 0 0 0 0 0 0.1727490621 3.102549989e-15 0 0 9.432502994e-07 603124.4039 0 6.748233149 0 5.654869238e-11 0.001103719838 1012071.099 1.066124762 0 0 0 0 0 1.681218548e-06 453506.7627 369.0312005 6.359203878e-18 0 2.857024779e-17 268164.1853 0 1.358269663 0.1386435467 0 0 0 0 0 2.584885329e-16 0.6966362731 0.6341301983 3.251977368e-06 3.088759652e-16 0 0 0 3.971594685e-23 1.472767251e-08 0 0 0 1.153669877e-22 376622.0283 2.15223712e-09 0 59.94017955 1.555186327e-08 0.00373981418 0 0 0 1.260477717e-20 0 0 4.36974837e-11 1.425465757e-14 1.842319652e-13 2.196446744e-23 7.827746404e-20 0.2321497751 1.571699852e-15 2.176834018e-13 2.301487687e-07 0 0 0 0 0 0 8638.065196 0 2.317185789 0 0 0 0 1.280291178e-14 1.799053205e-12 14.81655608 2.737393465e-09 4.336369156e-09 0 7.004538607e-10 20.95717768 3657529.747 902.4691519 2.689560683e-07 0 0 1.295459342e-10 0.004487730935 0 7.435491276e-16 9.548934399e-23 0 0 0 1732.842136 0 1.924055117e-33 1.838902377e-11 0 278887.0603 1.455870756e-05 163.0571408 1.38482871e-11 0 0 0.1960140651 0 1.791818543e-07 0 0 99341.83483 0.0001362639723 0 0 0.001699624195 2.056260743e-13 0 3.928990453e-12 619.9753204 0 0 0 0 3237.19029 5.271250406 0 0 0 7170.970934 0.0002486882223 0 0 5.065468099e-13 0 0 0 0.005016679574 0 0 7.053101033e-22 1.090397578e-11 0 0 0 0 0 0 0 5.212048074e-09 0 0 0 0 0 9.76705414e-12 0 0.6260755908 0.1033996161 0 0 0 0 0 0 0 1.739042508e-06 0 6.485310975e-13 0 0 55.97150177 0 4.061979811e-09 0 0 4.893590282e-06 2.842085864e-06 0 0 0 0 0 0 0 0 0 0 2.222813625e-27 0 1.49933492e-05 1.209910337e-23 0 2.313569981e-38 0 0 0 0 0 0 0 1.639409472e-30 7.299969581e-20 0 0 0 6.46746441e-20 0 0 0 3.410288718e-15 0 0 0 0.2656692209 0 2.775850949e-24 0 0 0 0 0 0 188955.9135 +0.0135388738 0 1.224110634 0.117286691 0 0 0 1.268673718e-41 0 2.539613107e-14 4.446835767e-09 0 0 2.785270173e-10 1.214741352e-13 0 2025109.246 0 0 2.515836354e-06 6.138071601e-14 0 0 0 4.899328397e-15 0 0 0 5.750502996e-10 0 0 2.124636213e-15 0.01032498638 1.683612453e-26 0 0 0 3.857906758e-16 0 0 0 1.398202212e-06 8.885177224e-23 0.000264157558 0 0 0 0 0 0 0 2072287.454 2390683.393 0 0 0 0 0 0 0 0 2.679771475e-23 0 0 0 2.023646485 0 0 0 0 0 0 0.0003152234681 176837.7536 0 0 0 23882.51477 3.255325451e-09 0 0 0 0 2.21361442e-11 1.566890916e-18 219.2508011 0 0 1.211250318e-08 3.556501981e-17 1.941129062e-05 2.190595862e-16 0 9.219346527e-06 2.370533491e-09 1.166355364e-13 0 0 3.430464874e-16 0 0 0 1.124418742e-06 3.651310541 0 0 262270.0293 0 1.558342222e-12 0 1.082747681e-17 21633.09655 0 0 8.003880352e-08 5.27632421e-07 0 34123.39599 0 2.263509541e-11 0.006612918155 0 0 3.716206071e-18 0.0006828413095 0.2088682394 2.25186131e-06 0 2.479134322e-11 8161.612188 690537.0343 0 0 0 1.267499066e-12 0 283.4074345 1.086248377e-17 6.752558022e-17 1118.440163 0 0 0 1.61836085e-10 9.842757497e-07 0 0 0 2.992324449e-07 1.2135778e-10 0.008912082275 1.400818992e-08 6.442294646e-21 0 1.115949539e-20 0.5986274428 8565.910572 1.658617851 0 2.445755298e-06 0 6.725150124e-08 0.0002640998413 1.447200808e-11 9.376489007e-20 0 5.88282358e-20 0 0 0 0.003603791408 0 0 1.113241794e-10 0 1.815153497e-20 1.765424971e-28 0 0 0 6.756691178e-11 61678.12953 48.68650377 0 7.232295047e-16 0 0 0.00247469638 0 67069.14832 0 0 0 0 0 7.303770832e-12 0 64.38602971 0 6.265856306e-08 4.662535292e-35 5.25057885e-11 4.759797099e-05 0 0 0 798.4962674 0.0005436382172 0 0 106.1191059 0 0.001108714109 59.42180183 1.117378681e-27 0 0 5.838740063e-05 0 0 0 0 0 0 0 6.573111898e-10 0 0 0 5.419627296e-18 299317.1987 0 0 0 0 0 0 0.00628986046 0 0 0 0 0 21.58584547 0 0 0 0.02412803694 0 0 0 0.7615280053 0 89759.93585 64682.53132 0 0.006097519432 0 0 0 0 6.959893551e-07 1.256701536e-11 5.159690633e-13 0 0 0 1.868339927e-06 0 0 0 3.497375623e-20 0 0 0 1.34279586e-18 0 0 0 3.838682471e-09 0 0 0 0 0 1.743320885 0.01489077239 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 2.300746971e-18 0 0 1.082394001e-31 0 0 0 1.278619985e-24 0 0 1.102346662e-14 0 0 26716.66969 1.534023857e-22 0 4.841815148e-11 0 0 0 1.685796339e-21 2.841210044e-13 4.157122101e-25 0 0 0 0 0 0 0 0 0 1.166732302e-12 0 0 0 0 164205.6797 0 0 0 0 2.736275618e-16 0 0 0 0 5.032973668e-12 8.773408012e-14 0.005938321056 0 0 8.540313662e-05 0 1183665.067 0 0 9.981803017e-15 0 0 19.05282187 0 32.42718122 30.99828504 274642.9806 0 9.750134227e-06 0 5.126437089e-27 0 9.15596507 0 1.40700755 0 2.868067183e-26 0 0 3.537060739e-07 0 9274.602363 0.0002459696457 0.0001060807433 5.866190346e-28 0.0007256726498 0 0 0.004019255467 157014.6561 0 2.99910038 0.01369357978 0 2.203390855e-15 0 0 0 0 0.7206225248 0 5.596966504e-16 0 0 5.813176452e-23 111357.9879 0 3.019340413e-13 0 0 21232.92181 0 0 0.7213326092 0 0.0001664296159 0.9895164466 67604.49668 0 0 5.339148313e-05 5.05730493e-12 0 2.502708159e-13 0.001518176938 36514.66101 0.03753507797 3063.065639 0 0 1.241832686e-09 0 2.758155746e-08 0 191.2050968 2.405640508e-07 9.161803442e-12 0.0001672340503 0 0 3.805055258e-19 3.756666459e-29 0.003976404891 0.0001424977681 0 0 0 0 0 0 0 0 0 2.254457093e-17 0 3.56970095e-11 1.925360546e-14 0 0 0 0 0 0 3.994320777e-19 0 0 0 3.242161016e-14 0 0 0 0 0 0 0 9.818980288e-13 0 37.12975853 8.610212175 8.886924036e-20 0 4.046315194e-13 0 5.672488839e-11 0 0.9408872787 0 0 5.370321719e-17 0.0487726349 0 0.07039735549 0 3.09465088e-05 93.02307364 0 1.075844456e-07 3.151787886e-28 0.0008752266695 0 0 3172859.588 4.695419725e-09 1.78622283e-08 6.04715329e-26 0 0 0 0 0 4411.088667 0 0 5.067806263e-07 6.942761148e-16 0 0 0 3.837143323e-13 0 0 0 0 0 0 0 0 0 6.763539398e-11 0 0 0 0 0 0 0 0 1.464752674e-16 0 0 0 0 0 16098.55863 0 12783.96376 0 0.04804487493 8.150675653e-12 0 0 0 0 2.780863459e-08 0 0 5.189812431e-12 0 0 0 0 0 0 0 0 0 0 1.449179377e-13 0 0 0 0 0 0 0 0 0 0 0 6.976910762e-21 0 1.170920299e-13 6.825847662e-09 0 0 0 0 1.452805285e-11 0 0 0 0 0 0 0 3.862793676e-16 2.26335629e-06 0 +0 0 0 0 0 0 0 0 0 9.169673115e-06 0 0 0 4.62809861e-15 0 0 0 0 0 0 0 0 0 18.39159108 0 0 1.842986956e-09 0 1.602052894e-08 0 0 0 0 0 0 0 0 0 0 23894.44245 0 5.776996881e-25 0 8.927311772e-08 0 0 3.535719879e-17 0 0 0 3.1481983e-12 0 0 0 0 7.108775039e-08 0 0 0 0 0 0 0 9.888063178e-05 7.357271098e-05 108019.2664 0 1188.554079 3.856324462e-11 5.145095263e-09 0 0 0 0 0 4.313436785e-15 0 0 5.224907621e-11 1571.70293 26646.07509 569078.9493 0 0 5.774440119e-06 7.182554053e-16 0 0 0 0 0 0 0 0 0 0 0 7.043248254e-08 0 4.160597219e-12 0.08341077219 0 0 0.5678901447 0.001304490271 0 0 0 0 0 0 3.752465337e-09 1.017704007e-06 7.30610727e-30 3.648489382e-08 0 0 0 1153535.588 1.078561117e-11 1.603378189e-17 0 0 0 0 2.141872186e-12 0 0 9.355046825e-09 41.0509626 1.096674883e-16 3.851490333 0 7.049926008e-24 0 1.943361726e-08 11.87612703 6.091930061e-10 0 0 2.443640286e-10 71874.25153 1.370512642e-21 1180633.608 9.93956475e-06 978.989753 0 0 346.622753 2.371020447e-24 0.04795104456 0 5.762390776e-05 6.276828773e-18 1.347453779e-35 0 0 0 2.73375738e-22 0 0 1.171791812e-07 0 1.732304352e-17 0 0 0 2.667565548e-09 1570.094776 0 0 348822.8764 0 0 8.876208829e-10 1.029098908e-17 0 2.598512686e-05 0 0 0 248431.8311 0 1.779924446e-19 0 0.005399307629 0 0 0 0 85.13093228 0 0 0.0001306909119 0 0.02375679422 0 0 0 0 0 0 348727.9367 0 0 1575.434288 3515.760725 0.001310811753 0 0 0 0 0 0 2.988482671e-31 0.002101522401 0 0 0 1.035476676e-10 2.23373921e-15 0 0.02605612147 0 0 3.065601922e-05 2.803706565e-12 0 2407.679323 0 0 0.0806747319 0 0 0 6.850856061e-06 0 5.760673118e-26 0 221486.1832 0 0 9.776861944e-13 0 0 0 0 0 1.011363642 8.871582212e-11 3.585152954 0 0 0 0 68.57592375 0 8.258559477e-17 9.924288147e-08 0 0 0 0 0 2.374632043e-09 0 0 0 0 0 0 2.683358584e-25 0 0 0 0.1112977646 0 0 0 0 0 16.32311419 0 0 0 6.075812733e-33 1.197166407e-19 0 0 0 0 0 0 2.267325915e-15 0 477555.1691 0 21.94173044 0 0 +1.697460956e-17 0 1.041383003e-10 0 0 1.880733022e-11 0 0 0 0 0.001380116835 0 0 0 0 8.859455062e-13 0 0 742038.4284 0 0 0 0 0 0 4.765031153e-10 0 0 0.05977003467 0 0 0 0.0001278616563 0 0 258.1024073 6.388001578e-05 0 0 2.444143585e-23 0.7876291033 0 1.154091466e-10 2.215397082e-10 0.000209070021 0 2018.769124 0.002951058618 0 0 0 0 0 0 0 0 1.582947913e-17 0 8216.111935 6.138754162e-14 0 1.85899653e-20 11.3023174 0 0 1.586824509e-08 925.1874487 9.122884004e-06 5.4306252e-27 3.881652656e-11 0 0 0 2061592.211 0 0 0 389367.5914 1.069691514e-13 1.303159713e-15 26022.49156 0 4.531954298e-12 6.79642023e-13 0 1.9642309e-06 0.006853536925 0 0 1818817.478 0.0004300061951 0 0 1.056806777e-16 8432.784439 8820.569506 0 0 0 0 2.325915491e-09 3589118.765 4.462176854e-12 2.87029931e-12 2.821826036e-05 0 8.389116588e-10 0 1.409038361e-23 0 0.007853845865 0 3.797430387e-07 1.128296402e-11 1.618157555e-06 2.229664718e-18 0 0 0 1.252887814e-14 0.002091847938 0 2371.740533 8.910540139e-07 0 1.02278029e-22 1.037733646e-09 0 0 0.2796547164 0 0 126839.55 0 0 4.961296054 7.66204967e-06 1.463385689e-22 0 0.0008763574849 5.527257588 2.32911429e-09 0.004290240781 33365.04256 0 0 3595504.799 0.0002061433711 0 0 1.599342442e-14 278.6721642 0 0.09535108005 1.80501679e-08 1.311564856e-09 29573.30317 0 2.355191317e-06 0 0 0 0 0 0 3.771870713e-12 0 0 5.928479036e-38 1.049908725e-18 6.453377898e-13 149461.8662 0 0 165537.7067 0 3.55606539e-29 1.23293849e-10 0 0 3.058033551e-14 0 352.4904612 0 0 2.101386311e-25 0 983348.8538 0 6.098715493e-16 0.000589883918 0 0 0 0 0 0 0.003818761839 0 2.686631998e-22 0 0 1.928180395e-07 2.007861533e-05 3.483975292e-07 0 0 0 0 1.02558507e-11 0 0 0 0 0 0 0 0 0 2.507499858e-05 0 248.592542 0 6.721261845e-07 0.01459626528 0 0 0 0 0 0 0.447592796 0 0 2.399820903e-22 0 0 0 0 0 0 0.003816136057 0 7251.398425 0 0 0 0 0 0 0 0 1428621.957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48.44477285 0 0 0 0 0 0 0 0.03611369634 0 0 0 0 0 0 5.390570452e-05 0 0 7.520501328e-18 8.794408072e-26 0 0 809810.1619 221186.5035 0 0 0 0 0 7.275094e-09 0 0 0 +0 0 0 7.514823225e-21 8.858482914e-08 0 0.04303848124 0 0 0 0 2.622691618e-22 120.83456 0 0 0 0 1.309149539e-06 0 0 0 5.96130974e-24 0 0 0 0 0 0 0 0 81.90210561 0 0 90.09666555 3.001289402e-11 0 1.503301582e-26 8.289996322e-11 0 9.576395078e-08 0 0 0 4.018846731e-18 8.062197088e-07 9.976527108e-13 3.744144098e-20 0 0 0 2482014.162 0.000486309992 24262.1402 0 0 0 273.5420798 0 0 0 9.822905795e-12 0 0 27069.18357 0 0 0 0 7.37803087e-13 0 4.492941006e-13 1.829773073e-26 7.259040886e-09 4.385697398e-13 3.988751437e-28 5.153009844e-05 1.348099549e-28 0 4329.867527 0 0 0 0 0 4.840426075e-08 0 4.11410993e-17 0 0 0 0 0 0 0 0 0 0.02468195862 0 7.769057007e-07 0.06961779418 0 190378.713 0.004065427972 0 5.372149386e-07 1.429029299e-05 6.885782536e-06 0.006060122032 5.721762116e-12 0 0 0 0 0 0 57513.08471 0.1855090337 0 0 0 0 6978.256297 0 0 1.118520182e-05 10652.45565 0 195.6325551 0 3.311678941e-12 0 0 0 4.539827251 142835.2188 0 0 0.0003056783691 0 0 0 0 0 9.110967624e-21 0.7400292133 0 2.430609888e-21 0 0 0 0 6.584687755e-16 1009222.047 4.238960178e-29 0 0 0 1.194561939e-10 0 0 0 1730056.74 9.421537726e-12 1.561207569e-20 0 125.0262301 89.81652647 0 6.7033052e-24 0 7.186393884e-10 1.195644663e-15 0 0 3.427970997e-09 0 0 374.7023726 0 2.264482519e-09 5303.948403 9.0300858e-16 0 0.4908982425 1.269982137e-15 0.004032962059 2.412219203e-14 2.545117008e-15 0 1.552619982e-22 0 0 0 0 0 0.02161816112 0 0 0 0.0007086904141 0 0 0 128766.4785 38188.04559 0.001273752701 1.22196136e-12 0 0 2.535181596e-20 0 0 0 0 1.124420545e-27 8.247823303e-29 0 0 0 0 2.063512203 4.14943168e-16 7.053046036e-19 0 0 0 2.38440447e-07 3.259422952 0 0 0 0 1.113881795e-10 0 910.0531761 0 0 3.479507714e-15 0 0 0 0 0.02884759238 0 0 0 0 0 0 0 0 0 4.284149911e-16 2.127306347e-10 0 0 0 1.087327807e-10 0 0 10544.33351 0 2.470519312e-12 0 2140.553058 0 0.00152746582 0 0 0.0003611710483 0 0 0 0 1.561287318e-20 7.386144192e-11 0 0 9.601199044e-22 0 0 0.9824309723 0 0 3.354811765e-29 0 0 0 0 0 1.260157057e-09 2.434406408e-08 0 3.331802996e-13 0 0 0 0 0 9.871257754e-08 +0 0 0 0 0.002526347458 0 0 0 0 0 0 0 0 5.011275703e-11 3.705536655e-13 0 1.724598498e-28 0 0 4.698821599e-30 0 0 0 0 0 0 3.307717436e-11 2.671382512e-08 0 0 0 0 0 0 6.320739067e-23 0 0 5.622396452 3.84575928e-05 0 0 0 0 2.709612277e-09 34.30547031 0 0 0 0 0 7.287630562e-32 0 0 0 0 0 5.714519935e-17 0 0 0 0 0.02884269283 0 0 0 22294.36936 0 0 3.903907798e-09 0 241.4645635 2.298339637e-14 1.179146912e-23 635.1270408 0 7.065734276e-05 0 477.9822117 0 0 1.223104579e-06 0 7.232159958e-13 0 0 0 3.883722703 8.6229855e-16 6.270150599e-05 0 467502.6014 1.138913651e-20 117870.4051 0 47182.67825 0 0 0 0 0.0001053208283 0 0 0 0 0 3.724248807e-29 0 7034.30331 2.057992575e-14 0 0 0 29422.18727 0 3.798925336e-22 9.498603734e-09 0 0 8.598157848e-20 0 0 2.341728174e-08 0.02286202288 4.07880719e-16 272682.9594 0 73183.08339 0 0 0.03948003864 0 0.0007931241012 0.01428858291 0 1.065356128e-07 0 5.852375581e-07 0 5.904571071e-17 2938.497587 0 0 0 1.173186132e-09 0 0.0005188753033 0.2613508171 0.8007294103 4.813234038e-13 0 0.05128322014 4870.258071 0.0001543861225 0 0 0 0 1.0982263e-29 2.933380971e-27 0 0 0 1.687090745 50.58088247 0 0 2.209712973 0.004297099447 7.347346831e-27 0 0 0 4.267151854e-12 0 0 0 0 2.476148878e-08 770227.0683 7.22791475e-26 6.681323608e-08 0 91.44896149 1.867626261e-30 0 8.843948567e-07 4.371528223e-17 0 3.184942609e-16 0 0 0 0 4.751725877e-12 1.032737191e-09 0 2.449263499e-28 2.836837938e-08 0 29.54388507 0 0 0 0 0 0 0 1.388696139e-11 0 0 0.01154384179 1.778649828e-08 419.0129073 0 0 0 0 0 0 0 0 2.331800843e-16 0.01378180695 4.238947646e-09 0 0 0 0.0002283470536 0 1.777740207e-14 0.01173994817 0 0 0 0 0 9.138012102e-30 5005.817621 0 11421.73936 0 0 0 129016.2928 0 0 0 85035.84993 0 0 0 0 0 0 0.3766210673 0 0 4.161922374 0 0 0 0 0 2.806882593e-20 0 0 0 6.356001654e-12 0 0 0 0 7.612843651e-19 0 0 0 3.828862636e-12 1.444121226e-14 4.294898102e-27 0 0 0 4.946461783 0 0 0 0 0 0 1.718267471e-17 0 0 0.2502745764 0 0 0 1.999432796e-06 0 0 0 +0 0 0 0 14764.87341 0 0 0 0 0 0 0 0 393772.9937 3.963755797e-07 0 0 0 0.03605627211 2.682080663e-12 4.508564054e-13 0 0 0 5.415250308e-29 1.096238166e-07 0.000236635369 0 0 6.530287664e-13 0 0 0 0 0 0 0 0 0 0 0 7.469824172e-10 0 4.159368898e-13 0 0 0 1.809598709e-10 94.41814288 0 0 0 1.021899512e-09 0 0 0 0 0 0 0 0 0 0 5586.474392 0 0 317732.469 0 0 0 0 0 496657.7449 0 0 2.429755226e-27 0 0 0 0 3.570078246e-09 8.760259e-18 0 0 1.110280878e-09 0 0.000911676219 2.008016325e-07 0 1.098299668e-24 0 0 1.135312688e-10 0 0 0 0 0 0 0 262007.0544 9.242176818e-16 0 0 1654788.226 0 0 3.498914843e-16 4.609103779e-10 5.875820992e-09 0 9.231247113e-13 0 7.397732544e-28 0 6690.06567 0 5.16817742e-13 0.3574221117 8.275104089e-16 0 0 0 0 0 0 54949.7764 0.09519416634 1.552050617e-06 2.993710692e-12 0 0.03063129645 1.472334806e-13 0 0 0 0 0 0.01179193996 0 135.5798347 0 0 981.8483043 0 0 0 3.25484886e-44 1.187119196 0 0 0 4.312361251e-18 0 9.955905048e-05 0 0 0 0 0 0 114314.6316 4.153371379e-05 0 6.931435197e-13 0 0 382059.6835 1.665186031e-09 1.645779358e-27 0 0 0 1.703567077e-09 2.020683737e-16 0 0 0 1.415190023e-27 1.242727353e-20 0 2.039933239e-16 7.31222626e-14 0 1.118463772e-14 1.356870645e-24 9.753616334 0 4.75676713e-16 1.638423373e-16 0 1.427685179e-11 0 0 0 2.842741694e-15 1.278287784e-07 0 0 0 0 0 0.005934239245 1.472673905e-10 0 5093.817824 0 0 2.61680108e-11 0 0 760.3024386 9.986213571e-14 0.2772763764 0 1.512507919e-07 1.842383012e-11 3.764855623e-07 0 0 3.258153371e-13 0 0 0 1.951883405e-26 0 0 7.147562971e-07 0 0 0 0 10588.17336 0 1.196998058e-08 0 6.863561286 0 1463418.257 2.544016684e-25 0 0 5.255379626e-13 0 0 0 3.964814569e-16 168555.7497 0 0 0 2.423186456e-11 0 0 0 0 2.27010885e-05 0 0.04302835238 2.995176906e-08 0 0 21155.86592 0 0 0 0 0 224.1086614 0 0 9.435545102e-07 2.042572268e-17 90302.35133 0 0 0 202998.7428 0 0 0 4.263910723e-07 0 0 0 0 0 0 0 0 1.781983898 0 1.401035248e-15 8.13812422e-15 1.701146569e-12 0 0 0 1.484598081e-28 2.384592962e-20 +0 0 2.631655777e-06 0 1737775.145 0 13829.78349 0 0 0 5.365185663e-15 0 0.0001010304348 0 0 0 2.9622081e-17 0 5.360922744e-19 0 0 0 0 0 0 0 9.169972873e-09 0 0 4.433025464e-20 0 0 0 0 0 0 1.636486956e-13 0 1.743539846e-08 2.640086462e-10 0 0 0 0 1.185062218 0 0 0 0 1.363861824e-12 0 2.028177275e-26 0 0 0 0 0 2.159843024e-10 0 0.0002110943308 0 0 0 0 0 0 0 2.253867127e-10 0 0 0 1.635781519e-21 0 0 6.395810129e-26 0 6.138716983e-09 0 0 0.0003902815458 0 2.058363718e-12 0 0 0 0 0 0 1.839967254e-07 3.187832068e-13 0 6.744307425e-16 0 2.547330269e-33 0 0 0 0 0 0 0 961023.9706 0 0.002356403754 4.026809685e-27 0 1.067356995e-05 0 2.560517698e-05 0 0 0 3.376320218e-36 0 0 0 1.826811186e-16 0 2.691580946e-18 0 7.271096283e-08 0.004360196261 1.177884474e-14 0 0 0 0 8.576186721 1.641815755 0 3.779506873e-14 0 0 0 0 0 2.311197293e-06 0 2.280380855e-28 0 0.002749627754 0 0 3.469781365e-16 19.75774432 0 0 0 0 0 0 1440561.395 0.0008634515847 0 2.585220867e-25 0 0 0 0 7.891996086e-19 0 5.55330891e-06 6.132054967e-10 2.497880424e-06 0 0.0005141591441 7.804849936e-10 0 81.44756435 8.927739705e-06 1.133028556e-12 0 9.886189225e-11 0 0 0 0 0 1.263964779e-10 0.01044307343 0 0 0 0 20.01949451 1.268415633e-22 0 0 0 0 1.095524117e-18 0 0 7.312765607e-07 0 0 0 0 0 0 136.266715 0 776982.8946 0 0 124944.685 0 3.638366363e-08 0 0 2.05265192e-07 2.37049668e-31 0 0 1364.261723 0 0 110745.8733 19.96526797 0 3.53141076e-15 0 0 220781.8792 0 2.034405312e-17 0 1.873225068e-11 0 0 0.09148413264 5.016300485e-23 0 0 0 0.0002709749383 9.970631404 200.2250346 0 0 0 2.084642889e-12 0 0 0 0 1.045769906e-07 0 0 0 0 0 0 0 46415.22291 0 0 0 0 0 0 0 23429.28884 0 0 0 0 10.86997315 0 1.625326969e-08 0 0 3.049329317e-13 0 0 0 0 0 0 0 0 0 0 0 0 1.002688247e-16 0 0 0 0 0 16001.82484 0 0 0 0 3.829081407e-12 0.001825018917 0 0 +1.015221397e-10 0 0 0 0 2.419456077e-29 2.056499699e-17 0 0 0 2.245135716e-09 0 6.19670503e-10 5468.723048 0 0 22374.6824 1.116424037e-09 0 1.423266006e-15 0 0 0 2.74176557e-06 0 0 0 0 0 1.753621825e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.20606165e-10 0 1.929113183e-26 0 0 0 0 0 1.368678342e-31 8.0052823e-13 2.417554952e-07 0 0 0 1.585090037e-10 0 0 252933.8868 0.002090205318 0 2.887314403e-09 0 0 0 0.108021428 0 0.08833742782 1.594083062e-06 0 0 6.000588129 6.495543734e-21 2.003503003e-11 0 0 4.871455166e-15 2.61843068e-23 0 0 7.570695067e-05 0 0 4.368136733e-11 2.543086732e-12 1.411283246e-19 0 2.731942948e-30 41211.05128 0.0005163455251 0 280.4075972 0 0 0 4.935948466e-14 0 41.01619616 148369.0338 0.001119085457 0 0 0 0.0002215998023 0 0.0002866412082 2.914055921e-12 0 0 6546.215696 0 0 1.558240626e-05 1686511.849 3.676796067e-14 5.406301133e-10 0 0.0006665210602 0 4.487666306e-22 0 0.4810780708 0 0 0 0 0 0 0 1.109534103e-10 0.3577359654 4.155556863e-07 1.826360779e-18 2331376.324 0 0 0 0 0 6.228439744e-07 0 0 1.681302428e-06 0 0 0 0 3.450251102e-05 5.56302313e-06 1.743183404e-22 2.22349958 2.2674771e-10 1208.670889 92.19614075 0 0 0 0 0 0 4.23240082e-19 0 0.01946335111 8.101388446e-16 0 0.04297247805 0 0 0 5.364121984e-18 0 337.8430389 0 0 0 0 0 0 0 0 1.048264757e-13 0 0 0 0 0 0 4.844257312e-06 0.8151514196 1.579676295e-13 2485.171885 0 0 0 0 0 0 2.735440485e-13 0.0002836957308 3.052662954e-14 0 0 5.294683152e-05 0 0 0 2.023853959e-19 0 1.604815736e-23 2.522947971e-14 0.0005248000593 1.609672834e-11 1082.295978 6.379943394e-07 0 0 7.739064124e-11 6.712037492e-13 5.038632613e-15 0 0 0 0 0 0 0 0.02499140072 0 0 1.778191876 0 0 0 0 0 0 0 0 2.065329597e-08 0 20210.42639 0 0 0 0 0.004000742214 0 0 12493.44343 0 0 1.368060427e-11 9.9210318e-11 0 0 0 0 0 0 0 0 0 0 0 2.051129467e-11 0 0 0 3.22400677e-23 0 0 4.089609638e-07 0 0 6.777928749e-16 0 0 0 1.40824652e-24 0 4.165968963e-09 0 0 0 7.829909553e-21 0 1.20971462e-09 0 0 0 0 0 0 0 +0 0 3.770606364e-09 0 0 0 0 0 0 0 0 0 0.0008029765881 2.10002124e-20 0 0 0 0 0 3.908709406e-09 1308.059595 0 0 0 0 0 1.448696668e-12 0 0 33625.4001 0.009400279853 0 266740.1586 0 0 0 0 6.551292661e-20 0 0.02684897662 341.1484013 0 9.841715191e-30 0 7.075468879e-08 0 0 0 0 2.504406134e-11 0 0 0 0.01293016193 0.0002285903658 0 0 0 6011.194852 6466.429249 0 0 0 0 0 0 8.027886594e-29 0 0 0 0 0.01017221259 0 0 0 0.002457267435 0 0 0 0 0.00101611527 1.741365789e-05 0 0 0 273.6223093 0 2.598795321e-07 2.92732486e-07 2.002639296 0 7.275987358e-11 8.257457934 0 0 0 4.425806416e-12 0 2.274209126e-20 1.535854168e-12 0 18152.32682 0 0 0 0 0 0 0 3.413451581e-14 0 0.0001750626111 11618.73806 0 0.397876299 0 0 0 12.52610288 0 9.728907363e-06 0 0 13.38152333 0 5.396351375e-18 0 1.26220291e-17 0 0.001123669135 0 9228.22533 4.274007103e-08 3.662107802e-20 1.203601339e-09 6.134852574e-14 0 45.86102326 13644.69378 0 0 0 8.654331589e-05 9.996900047e-09 0 0.002248104065 2.69378719e-07 0 0 6.949659174e-07 0 0 0 0 0.0562546489 0 383.4670894 0 0 3.554963768e-20 1.141654531e-10 0 4.320432501e-15 1.050640006e-07 1.247927861e-18 0 0 0 0 3.360552295e-10 0 0.001363018838 0 5.664287881e-22 1.669177705e-08 6.946932164e-11 2.991046439e-13 0 7.153176186e-07 0 0 0 0 0 1.536686243e-27 0 0 0 0 0 0 0 0 3.561570831e-10 0 0 3.530876901 0 1168159.273 8.295293593e-27 0 1.037971414e-09 9.868174314e-10 0 2.93754928e-07 0 0 6.092751152e-05 0 3.149490021e-09 0 1.988633436 1.875996343e-11 0 7.528730341e-08 0 0 0 0 233711.2367 0 0 5.091130788e-24 0 0 0.5086081728 0 0 0 0 0 1.071994587e-09 0 0 0 4.191016651e-24 0 0 0 5.544809385e-07 0 0 8.058744291e-21 0 488165.2518 0 0 0 0 0 0 0 1.213857362e-12 0 0 2.234081567e-07 0 0 0 0 4.150946595e-21 0 0 0.008658987765 6.958120886e-05 0 0 8.048339492e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.936100503e-29 0 0 0 0 5925.893331 0 0 0 0 0 5.185834357e-06 0 0 0 +0 0.1771389529 0 0 1.477343921e-11 0 0 8.213749873e-15 0 0 0 0 0 0 0 0 0 0.3568494248 0 0 10551.22834 0 0 0 329798.217 4.779190921e-14 0 0.1214726254 0 167.6946962 0 0 8615.686719 0.6270353865 0.01319380214 0 0 0 0 0 0 0.1079259998 1.028236554e-27 3.934088981e-09 0 0 0 6.486523995e-13 0 0.0009305819663 0.002495236909 4.438188636e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.301541489e-08 1.534235794e-15 0 0 0 9.740074869e-06 0 0 0 171161.514 6894.825155 7.007326365e-08 0 0 0 1.605147607e-19 9.354241983e-07 0 0 1.80801633e-07 0.003965161797 0 2.389350612e-07 7.201818529e-19 0 0 0 0 1.451251264e-23 0.0001921576731 0 0.9084837333 0 0 8.207368934e-08 0 0.297031708 0.0003969846824 314642.6572 0 1.007703607 0 5.327587556e-05 5.509837601e-07 0 340766.0683 0 0 4.813140648e-23 0 1.915682103e-10 0 9.126731253e-06 0 1.269443959e-08 6.460800076e-12 0 35.40155596 0 0 0 0 7.830140533e-24 0 9.95942847e-17 4.560564772e-09 7.376372798 1.411996148e-23 5.15323151e-10 3.453862882e-15 0 5.549565803 0 0 0 0 0 0 50.85609739 0 0 7.248582648e-10 8372.463524 169936.4988 0 0 2833889.843 0 0 0 0 0 0 0 0 0 0 0 0 0 2.195810308e-28 0 0 0 1.617350759e-09 0 5.097769952e-07 7.19308653e-07 0 0 0 0 0 0 5.620207771e-10 5.406640542e-08 0 0 2.167709842e-08 5.458172528e-06 356.4980229 1.460209451e-11 0 0 2.127863365e-27 0 0.01572939107 9.087423552e-06 1.11224016e-05 0 0 0 0 0 0 0 0 0 0 5.545682724e-19 0 746397.3865 2.445610883e-12 0 0 3.728777652 0 0 0 0 0 0 0 477.6088228 4.845051281e-39 0 0 3.891029137e-07 0 0 390345.3407 3.400100545e-12 1479887.048 935.4907245 3.943928189 0 6.620008602e-29 0 111794.0476 7.667292154e-07 0 0 0 0 0 0 1.025557278e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.29630436e-10 1.49415703e-15 0.04052706295 0 154289.2947 0 0 0 388804.6107 0 0 1.090675425e-11 0.0007233024878 0 0 0 0 2.751548239e-18 0 1.17947923e-15 0 0 4459894.051 0 2.323025561e-13 0 0 5.954188949e-08 0 4.893888072e-13 0 0 0 17654.57579 0 6.314219392e-08 0.0001000518631 0 0 +0 3.087009524e-05 0 0 0 0 0 1.542960209e-08 0 0 4.388926812e-05 0 0 0 36893.03879 0 0 0 41.05089935 0 0 0 0 0 0 0.0003113573295 0.07754274352 0 0 16.52270736 0 0.04912519452 0 0 0 0 0 0 0 0 0 0 0 0 4.633035757e-14 117138.7355 0 0 0 0 1.252212842e-08 0 1.718982752e-21 0 0 0.005898058178 0 2.74224521e-06 1.48756468e-17 0 0 0 0 0 0 0 0 0 0 0 7.749281921e-07 0 0 0.005033121382 2.950732645e-18 0 0 0 0 0 0 2.509413148e-09 1314.429573 0 0 0.005633012734 1.602352884e-11 8.161366486e-24 0 2.926292545e-05 1.599032655e-09 1.016708564e-26 0 0 9.880323273e-14 3.745363219e-20 4.963586165e-06 0 2445.987061 0 1.036639946e-06 0 17.18705602 6.326150374e-18 1.689636831e-05 2.011262279e-27 0 0.08472916137 0 0 0.07587733432 0 5.333239491e-09 1.071880784e-18 336.7353152 0 0 2404761.539 2.263779108e-11 2.250815314e-15 8.507174372e-15 0 0 0 0 2.780689031e-15 5.003828797e-12 0.04088038009 4.912819899e-24 1.113713075e-10 0 0 0 0 0 4.795557699e-12 0.03827121354 3.171381952e-13 0 1.702755685e-28 0 0 296.4107748 0 379114.0581 4.554082509e-13 0.01676865119 0 1.877841841e-18 0 0 2743.58081 0.00365312813 0 0 0 3.117615114e-10 3.973790184e-07 0 16.67260652 1.284463712e-17 2.836608273e-19 2.633289905e-08 0 4.85643686e-15 0 3.510853362e-05 0 0 0 0 5.224669155e-09 3.632065574e-18 180.8278706 1.297910107e-15 3.191021605e-07 0 3.093111056e-05 6.448763064e-17 0.03376675562 0 2558698.413 0 6.65061679e-18 0 0 2.12188078e-05 800.5315135 0 0 4.400651584e-12 5.557596256 0 0 0 1.556207065e-14 0 0 0.1315793284 0 0 260539.3519 0 0 0 0 0 8.628866089e-14 7.887512296e-11 0 1377442.177 0 0 4.982428513e-22 0 0 0 0 0 0 0 2.163685547e-13 340290.9264 0 0 0 0 0 0 0 0.009143686875 0 0 0 0 1.802027752e-14 0 0 0 0 0 0 0 0 0 0 0 7.25465665e-07 1.630832339e-10 0 0 0 0.0004055563625 0 0 0 1.8036786e-06 1.024474133e-11 0 0 3.73854738e-27 0 0 0 0 5.703529115e-18 4.037554839e-19 0 3121668.423 1.398183431e-10 0.002632067332 0 0 7.718298448e-15 0 0 5.713349696e-14 0 0 0 0 0 0 5.923163834 0.02211404603 2.477498862e-25 0 0 0 0 0 0 2.740295025e-12 0 0 0 0 0 3.077245766e-08 0 +0 0 0 3.45038204e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.456921146e-19 0 5.936032027e-10 0 0 0 0 5.724726309e-37 0 0 0 0 1.418223093e-05 0 0 0 0 0 0 0 0 7.095690173e-25 0 0 0 0 0 0 2.287479266e-26 5.367768732e-22 0 0 1.490099759e-10 0 0 314.6111572 0 0 537.4555996 0.1444319388 0 0 2.639201835e-07 0 2.657438359e-11 100536.6178 0 0 2.655825495e-10 2.716257854e-09 0 0 0 0 136305.1764 5.40799234 1.455282729e-17 355.540182 0 0 0 1.331466071e-10 1.917636863e-15 1.271120064e-22 0 7.131276198e-06 8.796623561e-09 0 2.363523319e-25 2.311480958e-17 4.273925742e-17 0.0006669868649 0 4.759809223e-09 2.031083127e-14 0 0.0001039662898 1.430890151e-09 7.707688675e-16 5.29430965 0 7.802362817e-08 0 0 1.267284203e-13 0 5.351857631 3.512643323e-10 675.4214564 0 0 8.98331383e-09 0 0 3.008302136e-11 814.4345366 20267.70866 2.422293747e-21 0 0 9.115560542e-08 0 2.960735203e-10 0 123881.2796 0 0.00213650606 2345.424169 0 0 0 0 0 0 591.1585702 0 2.785944792e-17 7.481368096e-06 0 5.247777365e-30 0 0.006001055802 0 0 2.604224945e-17 2.11925706e-11 7.573507925e-11 4.979567194e-18 3.561284339e-15 0 0 44043.54608 1081370.717 5.723743905e-20 4.448083419e-14 2.96794495e-09 624557.1642 654.4517905 0 0 5.303545972e-08 0 0 0 0 1001.610589 0 0 0 0 2.339991042e-10 0 0 0 0 0 1.220694764e-24 4.760752476e-15 0 0 0 1.870228013e-19 322.0947037 1.996609233e-05 0 0 6.782884726e-19 0 1.485087198e-17 0 0 0 0 0 1046.298627 1.093337712e-06 2.628297301e-08 0 0 1.180833845e-20 3.777490458e-27 0 0 0 0 0 0 1.062700797e-15 0 0 0 1742429.981 0 0 0 3.032587739e-26 0 0 0 6.40208687e-09 0 1.030737125e-07 0 0 0 1223.817271 0 0.003986652003 0 0 0 0 0 0.0001539399555 0 5.390717647e-06 0 0 1.573658665e-11 0 0 0 0 3.661164535e-05 3.143831157e-06 0 0 0 0 1.703001278e-08 2.431045879e-17 0 0 0 0 0 2.712344769e-27 0 0 0 0 1.203991684e-11 0 0 0 0 0 0 0 0 0 4535.640137 0 0 483545.8459 0 0 1.80961372e-14 0 0 2.43845083e-12 0 0.3922302126 3.582706185e-21 0 0 0 0 0 0 9.258500216e-07 0 0 0 0 0 0 0 1.779987088 0 0 0 +0 0 0.0001819026224 0 0 1.88290507e-12 2.520830444e-12 0 0 0 0 0 475386.8309 0 2.962449215e-12 0 0 0 0 0 0 0 0 2.185503298e-13 0 2.653320121e-09 0 0 0 0 2.61171641e-12 0 6469.474281 0 4.229698052e-12 0 2.158809364e-11 0 0 0 0 0 0 0 0 0 0 1.693070977e-06 0 2.670884623e-14 0 0 0 3.918091463e-30 0 0 0 1.950647452e-07 1.304401849e-13 0 0 1.237120925e-06 0 0 0 0 672833.8833 0 0 0 0 0.04215638008 0 2.003027147e-05 0 2.695129874e-11 322.4878143 0 0 3.999689198e-14 0 0 28.73100324 0 0 0 0 9.966469532e-12 0.01514699506 0 0 0 0 162091.6492 0 5.545935583e-13 41347.2875 0.0001596808195 0 1362.409569 0.0001980537966 0 0 0 0 0 0 0 0 9.569008518e-23 0 0 0 0 9489.639284 0 0 0 0 0 3.116411129e-07 5.65960695e-13 1.17176234e-05 0 0 0.002319858271 2.368930321e-13 3.673209526 0 0 0 1.431821643e-11 8.407401757e-31 0.0697346191 0.08172981836 0 0 0 668.9227184 0 1.729124582e-23 0 0 0 2.766836746e-21 0 0 0 0 0 1.765300481e-12 12361.79288 0 0 0 0 8.029306589e-07 3.409801113e-17 0 0 0 0 0.03215926073 3.553148615e-13 0 0 4.102923956e-08 0 9048.480092 0 0 0 3.347748247e-05 0 0 5.700400049e-27 16957.31241 1.673577794e-18 8.12481926e-39 0.01550765174 1.432233813e-05 0 0 2.021057158e-16 1.82137397e-17 0 0 37.61129897 0 8.279964072e-10 0 4561967.594 0 0 2.376672134 0 0.5865118091 0 1.797735551e-15 3.604664591e-22 3.240135135e-10 4.41651256e-17 3.021342259e-05 0 0 1.081797985e-10 0 2.686741515e-11 560595.7698 0 0 6.795099847e-08 0 0 3.378157319e-13 0 0 2.655629584e-21 0 0 3.112036293e-11 0 2.526147025e-06 0 0 0 2.946062897e-33 0 0 4.52007883e-14 0 6.77177993e-15 0 0 0 2056.140074 6045.161777 58037.0128 0 2.49405413e-07 0 0 0 5.778114833e-07 0 0 0 0 2.603871841 0 0 3.149824145e-12 0 0 0.02365290184 0 0 0 0 0 0 1.90652699e-17 5.617002258e-06 2.018978164e-07 0 0 0 5.001031585e-05 0 0 0 109.722364 2.851033155e-13 0 653.351926 0 0 0 0 0 0 1.225172167e-09 0 0 2.868552436e-08 8.274156259e-26 7.076542782e-22 0 0 0 0 0 2.698514747e-13 0 3.348178252e-05 0 0 0 0 0 +0 0 0 0 3.766085445e-30 0.0002152632905 17.73958415 0 0 0 0 0 0 5.613055372e-05 0 0 0 0 0 0 0 0 94.54725313 0 0 0 0 0.3441628029 0 0 0 0 0 0 0 803.5293492 0 0 2.227354062e-21 0.0006964729137 0 0 0 0 0 6.450932007e-05 1.645108775e-16 1.54987471e-11 2.154957709 0 0 0 0 2.674178655e-25 513328.9962 0 10.61512827 3795.188106 1.762996819e-09 0 4.084474927e-36 0.003826634535 0 0 298531.5769 0 0 0.002358862811 2.854475381e-06 0 0 0.5732446205 3.279663648e-08 29.07105327 3.155921571e-23 0 0 0 1.893379722e-13 0 0 5.181144477e-19 0 0 3.926968856 0 0 0 3.744277103e-05 0.0003455552507 0 0 0 0 2.829656761e-07 0 0 0 0 0 0.0006095783976 0 5.863725454e-29 0 1.768040663e-09 0 0 3.834662912e-15 2.008945169e-08 0 321304.9049 5.069767767e-18 0 0 0 0 0 0 4.732000089e-08 862360.4069 0 0 0 1.182186424e-11 0 9.060419372e-16 0 0 0 0.3615956972 0 0 0 1159599.487 0 0 6.302880421e-12 3.636436195e-07 2.785284512e-13 0 0 50755.39657 0 0 0 0 0 3539342.46 0 0 0 0 4.380455272 1.338601539e-05 0 0 0 1.860466781e-07 0.01715819829 7.522788405e-29 7.634240549e-05 0 0 0 1.035596381e-09 2.383080459 0 0 54314.7669 0 0 0 0 0 0 0 315749.2808 2.970602938e-10 7.421081178e-05 0 254.0469232 0 0 5.13890108e-18 0 2942332.038 0 0 0 0 2.391182753e-08 0 0 2.354531914e-20 0 0 1.343813603e-10 0.256248342 0 3.123240309e-16 0 0 1.774929335 0 68.0810863 21.07862325 0 0 0.5479911245 6.776877388e-18 0 7.972591115e-25 0 0 0 0 0 0 2.340612327e-07 0 0 0 2.043421502e-12 0 0 0 0 0 422250.3248 0 3.291038483e-18 0 0 0 0 0 3.894022011 0 0 9.210167384e-11 0 0 0 0 0 0 4.187524165e-19 0 0 0 0 0 3.648067701e-07 0 103816.57 0 0 0 0.0002597098848 0.000345158615 0 0 0 0 0 0 0 0 0 3.550574139e-27 0 0 117.7379427 0 0 0 0 0 0 0 0 0 0 0 0 0 9.364176149e-20 0 0 0 0.00123342509 0 0 0 1.673358458e-19 0 0 3.368890575e-06 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 5.757379979e-12 0 0 0 0 0 0 1.026350405e-06 0 0 0 0 0 0 0 0 0 0 0 0 8.817218398e-05 9.229114818e-18 0.7955649086 0 1.100626416e-08 29363.90039 4.176738821e-13 0 0 0 0 0 2.558132575e-16 0 0.0001053141675 0 0 0 0 3.140193618e-09 0 0 0 0 95.67086956 0 0 0 2.756966678e-06 0 2.306827518e-07 0 0 0 2.777414018e-05 0 0 0 6.606146595e-17 0 1.461469527e-14 1.00843004e-09 0 0 6.767862176e-13 1396543.755 4093.10877 5.037160494e-12 536.2466507 0 0 0 0 1.968143709e-06 0 1.192624928 0 1.70417004e-12 0.5345162135 0 0 7.040249705e-20 0.0004337973844 329060.4009 0.06388760495 0 0 0 0 0 6.365651312e-13 0 0 0 0 0 7.392382258e-05 0 0 1.326277399e-12 0 0 1.415646228e-16 0.03415819592 0 0 0 0 5.71758192e-10 0.01854807024 0 1473291.173 2.908296544e-07 0 0 0 0.001433841808 0.0008264677521 11688.97418 0 3.711055155e-06 10997.38905 0.1698026325 1.213623775e-07 0 1.498451765e-08 0 2.991481898e-10 0 0 1.267519002e-07 0.001724504882 0.0007239338823 0 0 0 0 0 1.553970762e-18 2.015200367 160929.2631 8.060465742e-07 7.698298622e-24 6.17412534e-36 0 8.257166547e-24 0 0 2.122179714e-13 0 9489.437494 0 6.95532969e-28 0 8.369278937e-19 0 0 5.864325191e-10 0 0 0 5.319012026e-07 0 585274.4889 0 0 0 0 0 0 0 0 0 0 2.759010129e-27 0 1.58656203e-05 3.40596935e-09 1.849198098e-07 0 0 0 0 5499.028907 0 0 0 0 0 0 0 0 0 0 0 1.289708794e-08 0 3.64960608e-09 0 199155.5843 0.0001135342557 0 13734.02594 0 0 1.301075656e-22 0 0 0 0 0 0 0 0 0.0009426600916 0 0 0 26.80419865 0.05406754379 0 2.208955709e-14 0 3.245714065e-14 0 0 4.528738227e-06 0 0 0.02977834952 0 8.050425902e-23 0 0 0 0 779.359879 0 0.0001850422576 0 0 0 0 0 49853.10528 0 1.789037066e-08 0 0 0 0 56.50074285 0.01745566289 0 0 0 0 0 1142833.168 0 0 0 0 4558.783121 0 1.299152385e-20 0 0 0 0 0 646353.0772 5.940024535e-17 0 1188.285662 0 0 0 0 0 0 0.001085268304 0 1.300730537e-13 0 0 0 +0 0 0 0 0 0 0 0 1.881912106 0 0 6.048960112e-08 0 0 0 8.946076436e-13 0.001126306371 9.978553237e-18 61491.33658 0 0 5.265840997e-10 0 0 0 9.665831453e-05 0 0 0 0 0 0 0 0 0 0 308593.6701 0 0 0 0.0002184790414 0 4.281499227e-11 0.0007017794714 85975.29665 0 0 0 0 0 0 8.741657073e-11 2.241094797e-13 1.012011427e-09 0 0 0 59.42540765 10.03154241 0 0 0 1.632082682e-10 0 503693.0524 0 0 0 1.103575695e-26 0 1.376558774e-10 0 14875.17343 0 0 0 0.02872133087 0 1.486144725e-12 0 0 0 0 0 0 0 0 179.4888463 0 1.823346665e-12 0 0.0001555830588 4.567323119e-05 0 0 3.219012785e-14 0 0 0.07107321086 9.005744685e-10 0 0 0 133.9005429 0 0 0 1.051959372e-10 2.15788928e-18 4162.455951 0 2.487406556e-06 7.902745717e-10 0 0 1.336639993e-08 0 2.459589084e-14 0 1.08310787e-48 0 2.824708644e-33 0 0 0.0001935964961 4.01467576e-16 0.0003142556394 0 0 0.03502863647 0 7.105387258e-05 2.585065795e-14 1.679603438e-18 3.689064842e-15 0 0 0 92644.7892 9.95799158e-36 0.005563915135 7.855582649e-28 0 0 0 568283.1612 0 0 4.594857533e-40 0.0001476075156 0 0.0003932192921 1.030293265e-19 0 0.06710713827 0 2347.878371 0 163078.1321 0 0 0.0001123521065 0 0 0 0 0 0 0 0 8.086869958e-16 0.0002579452436 0.002234282132 0 6.516615246e-08 1.06254179e-15 0 0 6.074625946e-15 0 0 0 0 0 37221.68112 2.996572279e-14 0.0003889967736 0 0 3.660957879e-06 0 0.0004377317049 0 6.931778181e-08 0.003442719382 189549.1095 0 0 0 0 0 9.529600884e-29 0 0 0 0 1.033424777 0.5793128528 0 3.813182071e-05 0 0 7.588306876e-21 517048.6657 0 0 1.632012056e-07 0 0 1.662651676e-13 0.03186963803 0 1.310703143e-25 3.703551535e-08 0 0 0 9.220344223e-14 0.03017874857 0 12559.5021 0 0 0 3.236577181e-17 0 0 0 0 0 7.678149995e-14 0 1.96168429e-14 0.08719788534 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.554543361e-09 1.105123102e-10 0 5.438275568e-09 0 0 0.01182817401 0 0 0 0 3.470902716e-08 0 6.551551371e-14 0 0 0 8.747305596e-09 2.93317301e-05 0 5.658192931e-14 0 0 0.0002690106919 1.57975205e-07 3.996199083e-12 0 0 0 0 0 0 1.184267624e-11 0 0 1.412554306e-33 0 0 0.001139196071 0 0 0 +6.085249623 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.753739059e-31 0 0 0 0 0 0 233.1962162 0 0 53.65765322 2.037789713e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.820278125e-14 0 0 0 0 0 0 0 0 0 158.8991209 0 3440.773519 0 26496.04637 0 0.02970287598 0 0 0 2.286735511e-06 0 4.430013632e-08 0 0 0 0 0 0 0 1.67072169e-24 7.413603906e-17 0 0 0 0 4.087931375e-30 4.287553446e-18 0 0 0 0 2.537692676e-27 0 0 0 0 0 0 0 0.01144907808 0 0 0 0 0.005243009373 2.551345573e-12 0 0 1.7964928e-06 0 4.29475222e-05 4.010823602e-11 0 0 0 66232.7072 0 0 0 7.578316844e-12 0 1.587370487e-25 0 0.805042248 0 1.775464925e-12 0 2.622482963e-14 1.390585451e-12 0 68262.54999 0 38.49703694 11.64600064 0 9.696900531e-29 0 0 0 1.093385838 9.80142182e-13 0 9.65696434e-22 0 0 4483.721675 3.777744926e-28 8331.261712 0.2802108592 0 0 1.611530811e-09 0.002264008797 1.046118806e-12 0 0 0 0 0 0 0 0 0 0 3.136805932e-14 0 1336931.209 2.565269101e-18 175340.5266 0 6.916229254e-06 0 0 2.80800572e-21 0 0 0 7.919158973e-13 0.001706661416 0 0 0 0 0 0 0 0 9.485210632e-30 0 165628.5073 0 0 0 1.92337646e-24 0.1902309223 0 0 0 0 0 0 0 2.088355486e-09 0 0 1.859017622e-08 0 0 0 0 0 0 0 0 0 6.19879983e-29 3.482048856e-08 0 3.46738209e-13 0.1554781427 0 1.251251661e-09 0 0 0 1.450412899e-08 0 0 1.156253507e-24 0 0 0 0 0 0 0 54423.4615 0 0 0.02508248 0 2.456036569e-14 9.746102043e-16 0 0 0 0 0 0 0 0 0 0 0 0 10047.84655 0 0 0 0 0 0 0 6.766520239e-18 0 0 0 0 0 0 0 0 0 0 1.414380001e-11 0 0 0 2.086350318e-19 0 0 176.8658817 0 0 9.298493864e-23 0 0 0 0 0 0 0 8.623922717e-16 0 0 0 4.63206921e-15 3.8149548e-12 3.115664123e-11 0 0 0 2417.523257 9.265753513e-28 1.351725518e-06 0 +0 3.323459729e-09 0 0.01470577566 3.083640826e-07 0 0 0 0.02582111532 0 0 0 0 0 0 0 0 0 0.004110640697 0 5631.754309 0 0 0 0 0 0 0 0 6.976621178e-18 0 0 0 0 0 0 5.410251045e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.3799673835 0 0 1.218040832e-05 0 2.433280888e-11 0 0 0.0002111776499 0 0 0 0 0 1541.678009 0 2.178326038e-18 0 0 0 181162.5908 0 0 1.760429924e-20 0 2.276790859e-11 2.359220227e-08 0 0 0.0002860189055 0 1.398670933e-06 3.175813701e-07 2.743582031e-06 4.39121199e-10 0 0 0 0.655596173 2.275517247e-05 0 0 3.141989619e-14 1.57672118e-09 0 7.088196559e-05 0.01169189947 4.387866819e-10 0 0 0 2.418157428e-07 1.332214081e-25 0 261853.9901 0 0 3.731347952e-09 0.001261116206 0 0 0 70.27085892 2.722643059e-09 1.313485222e-23 7.364492747e-19 207.1460329 0 0 0 0 0 0.001975710721 18102.55024 0 0 3.778066771e-14 12.48723167 0 0 3.02497095e-07 3.063361385e-15 9.272020938e-08 0 0 6.504919415e-07 133.9598686 9.175997553e-16 0 1.200855899e-14 0 0 0 0 43.91374947 0 0 3.883946682e-26 0 0 4.422748809e-23 0 420.4991152 0 67.68405652 3.831753232e-16 484860.4263 0 4.776059258e-07 0 3.882308903e-12 0 0 0 0 0.002170703515 0 0 2.014845342e-06 0.001160723079 0 9.913332476e-11 0 0 4.214267208e-21 0 0 0 0 0 0 0 1.218345148e-10 0 0 0 0 0 0 17151.81007 4.088217379e-18 0 2.511020679e-10 149.8523718 1.508093551e-07 0 2.645203377e-14 0 1.648279727e-11 0 0 0 0 1.244118534e-15 0 0 0 0 1.969906499e-16 0 0 0 0 1.713256478e-05 0 3.423763643e-38 0 0.0841618463 0 1.909741559e-27 0 4.716359714e-25 0 0 0 1.712100401 0 0 0 0 0.0001747943517 0 0 2.860622617e-16 0 0 0 0 2.386491609e-10 0 0 0 8.222155247e-12 0 0 0 0 0 9.281910296e-14 0 0 0 0 0 0 0 0 2.806260439e-08 0 0 0 0 0 5.90006087e-06 0 0 0 0 0 0 0 0 0 0 3.51643962e-12 0 2.539994699e-12 0 0 0 0 0 0 0 0.004549366115 0 0 0 2.677302847e-24 7.329687467 0 1.339489317e-07 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.661981268e-23 0 0 0 0.08447874861 0 2.015375141 0 0 0 4.206158793e-22 0 0 1702.336922 0 0 0 0 0 0 0 1.814936246e-09 0 0 0 8.075932303e-15 0 180799.9448 1.281822222 0 0 0 0 7.579763395e-26 485.1653278 0 26411.13035 0 0 455.0687992 0 0 2906.603257 0 0 0 3.433094921e-12 0 0 3.811150362e-16 0 9.434862221e-21 1.841043274e-12 0 0 0 0 26.64943286 0 0 0 6.957610582 0 4.488307772e-25 7611.138695 0 2.443420649e-41 0 0 29.32473505 2.155936766e-38 0 0 0 2246965.422 0 0 2.507530013e-12 0 2.859437422e-08 0 0.2628065221 0 0 0 0 0 0.006156908319 6.916665689e-07 0 0.006706709019 7.808850915e-08 0 0 0.0002508012148 0 0 0 0 0 0 0 1.583711838e-11 0 9.41998499e-13 3.426576251 0 115641.888 1660041.435 0 0 7.070021334e-09 0 0 9.889863052e-18 514.1236142 7432.149012 0 0 0 0 2.120115836e-18 0 0 0 0 8.908911843e-21 0 0 0 13722.95564 0 0 2.957892537e-23 265344.0337 0 0 1.107343603e-14 0.00268493308 1.889200664e-08 0 0 0 0 2.22665411e-06 0 9.327217157e-06 0 0 1.499868493e-08 0.0006226123596 0 0 0 0 0 0 1.85754783e-05 0 0 18326.61983 0 0 0 1.096863935e-14 155560.8735 1057704.303 0 0 0 0 6.567342486e-05 5.615050436e-28 88405.17079 0 0 545870.1137 0 1.194185338e-17 5.912802838e-05 3.868708975e-14 0 0 0 0 5099.091352 0 0 4.356639322e-11 6.818775859e-07 13048.25289 1.630830791e-12 0 0 0.2220330724 3.605051339e-12 0 3.447727761e-21 0 107.4725907 0 0 3.669049587e-21 18412.94042 0 3.747818202e-13 8.724343108e-12 0 0 0 0 1605.686879 0 0.1932257281 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.194004271e-16 0 0 0 0 0 0 2.288251348e-06 2.592107731e-22 1536646.23 3.01386555e-05 0 0 0 0 0 0 0 0 3.971097379 6.263910723e-12 0 0 0 0 3.341941477 2.055813929e-13 347393.2567 0 1.296007145e-37 0 0 0 0 1216266.771 1.34335704e-10 0 2.34479868e-05 0 0 1.442848276e-07 0 0 8.038653783e-08 0 0 0 0.003717983396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.670872522e-13 0 3527.492554 +0 0 0 0 0 0 0 0 0 0 6.554842223e-09 0 8.575943462 0 0 0 0.01331093908 0 0 5.178393848e-13 0 0 0 0 1.697871509e-09 0 0 0 0 0 1.982680638e-28 0 0 5.877018166e-11 0 0 0 0 0 601115.3549 0.001095381161 0 3.264156369e-06 2.524330223e-11 0 0 0 0 2.613858504e-06 6.692801973e-06 0 0 0 8.893006846e-10 0 15.78487018 0 171757.0057 0 0 0 1.083261161e-11 1.924359076e-05 5.822005585e-08 10641.83217 0 2.81951697e-10 4.008233419e-07 0 4.929958388e-25 0 1.028476301e-07 0 0 0.01900949772 0 1.033072207e-05 0 0.000544192136 0 0 0 0 0 0 7.929261854e-26 0 0 0.0001800192503 1.103469967e-22 0 0 1.109861055e-28 0 3.051123185e-09 0 0 0.00317309717 0 0 89246.48724 0 1852324.254 1.218308808e-40 12383.99646 1.753326586e-23 2.623797979e-28 9699.963345 0 2.181087382e-28 0 0.009215845657 0 4.902401895e-17 262312.6591 0 4.700976006e-11 0 0 0 6.787142979e-18 0 0 3.625999506 0 0.0001332135941 0 0.0009198291504 1.179540375e-17 0.0002547406126 0 0 0 0 0 0 5.155206927e-30 0 0 0.0001328162843 0 1.299860135e-07 0 0 0 0 0 5.844954489e-15 0 0 0 12871.36583 0 4.280308767e-06 0 41.94305134 2.521439443e-13 1.032334033e-10 18.44800863 986514.3305 0 0 138409.8675 1901193.141 0 0 0 0 0 0 8.483737172e-06 5.908863666e-17 0 0 0.3598733815 0 0 0 5.285793843e-09 0 4.942548592 0 0 0 0 0 0 0 0.001445348641 0 0 0 3.521666374e-11 1.926964725e-18 0 0 488.9710541 0 0 0 0 0 7.49677814e-06 32.49986248 282446.1026 0 0 0 0 0.0001977487617 0 0 0 0 8.237504949e-08 0 0 0 4456926.714 0 0 0 0 0 0.06141930451 0 0 0 0 0 8.625801001e-19 0 0 0 0 0 0 0 0 1.147061438e-09 0 0 0 0 0 0 6.323993313e-07 0 0 3.283484354e-07 0 0 0 2.721132126e-17 4.701991521e-08 0 0 0 0 0 0 0 0 4.597959756e-05 0.0005007663186 0 0 41.30582584 0 0 0 0 588.1011147 0 0 0 0 0 0 0 0 0 8.466428078e-05 0 2.17590739e-22 5.938527724e-18 0 0 0 4.405991279 0 4.987386004e-07 0 0 0 0 602304.228 475237.4663 0.1437114326 6.354357469e-06 +0 0 0 5.736331896e-25 1.660035174e-19 0 0 0 0.004570124413 0 0 0 0 0.000939497379 0 0 0 0.006395806496 0 0 0 0 0 0 0 0 0 0 0.1103494641 1.475681788e-21 0 0 0 367.5390258 0.004123034749 7.41595054e-32 0 0 0 0 0 0 7.885597763e-29 1.390064042e-29 0 0 0 3.519528238 0.00166521882 0 0 0 0 0 0 0 0 0 3166686.19 0 0 9.351219679e-13 0 4.998468695e-14 0 0 0 0 4.56750705e-15 0 0 0 0 0 5.447261946e-19 0 0 0 3.173970646e-23 6.727125552e-09 0 0 3060.655296 3250.825165 41.08614214 7.229019324e-09 0 0 0 0 4.176192568e-06 0 0 0 0 0.07966809305 5.956904013e-11 0 0 0 0 8.75316329e-08 0 1.261475037 7.578708688e-09 2009.224183 1.388768962e-16 2.859943901e-14 0 0 340.4278438 0 0 0 0 849.9617272 7.764320618e-05 0 0 0.04335345954 0.01998145559 3.028935119e-09 0 0 0 1.388634239e-18 3.374912908e-15 2.415406568e-16 6.414253553e-07 0 0 0 0 1.714615166e-13 204869.9892 54124.32556 0 1.680521136e-20 0.04843958125 0 1.786393921e-18 0 0.0007694910621 0 0 5.163752364e-07 451376.0521 0 8.328920484e-22 4.521989052e-10 3.455074604e-10 0 0 0.4873944415 66068.10642 0 0 0 6.902002934e-40 1.26515018e-21 1.480857083e-25 0.01310628539 1.080857176e-11 0 7.442179987e-24 0 0 2.301114864e-27 2.209852108e-17 0 0 0 0 1.694821929e-07 0.0001553182004 0 1652.2221 0 0 4.272128689e-07 2.89341805e-08 0 0 2.535545987e-16 0 0 4.03663636e-09 1.49594734e-10 0 663.1090241 0 0 6.997972546e-07 0 4.677562995e-13 0 0 5.521407665e-11 0 0 0 0 0.01173168676 0.3623620001 0 5.53670711e-09 7.777127896e-15 0 1.965294287e-09 0 0 0 0 0 0 1020.503377 0 0 0 0 0 3.665890846e-21 9.451525151e-06 0 1.40879919e-16 0 0 0 8.102971025e-09 0 0 0 0 2.959557807e-26 0.1933899128 0 0 0 0 8.924236682e-09 0 0 3.429559174e-20 0 279.2152601 3.439935075e-38 1.709465344e-10 0 0 0 0 2.808274475e-09 0 3.006714819e-10 5.858485454e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.487155018e-13 73481.37219 0 0 0 0.1421300844 8.737899635e-10 8.386923455e-14 0 0 0 1.510660936e-12 51.18279061 0 0 0 0 9.441257281e-05 0 0 0 0 0 5.447930567e-08 0 0 0 2.520135128e-06 0 +0.01425850892 0 0 0.05409389215 0 0 0 4.247043097e-24 1.161612298e-22 1.36458539e-07 0 0 0 1.626276507 31.30438058 0 0 0.01651465062 0 0 4.1782961e-13 0 0 1.411480433e-07 0.1738231121 10103941.44 0 0 2.574654294e-08 0 0 0 141745.5434 0 0 2.20921216e-13 0 0.08817523646 0 6.625569963e-15 0 44.48273601 0 881.4423487 0 4908.407196 2.705852313e-07 0 0 5.469746689e-29 1.667151917 0.01194853386 0 0 0 1.210721844e-11 0 0 0 0 0 0 0 6.959989637e-08 0 0 0 1.089365004e-05 6.126732443e-19 3.836450757e-10 112638.4398 0 0 7.191917562e-18 0 8.755457282e-10 0 0 0 9.363277111e-26 1.153506472e-21 0 10.86365543 0 0 0 1.319505952 0.02047129928 7.602642378e-28 0 15.60585072 0 0 0.002167600763 1.150391743e-14 0 70.14117881 4.4019318e-17 1.209283917e-14 0 0 3.687013543e-07 0 1.357957462e-20 23.95579835 0 0 0 4.183768536e-10 7.087747178e-17 0 5940.665792 732.1252024 0 5.51782752e-23 8.222200368e-10 2.415084445e-15 52753.69408 0 5.037699775e-09 9.446862518e-08 13125.0899 0 159.6468512 369060.8963 0 0 0 1.867996892e-10 0 0 0 2.972517201e-09 0 0 0 0 0.0004092575841 2.511396452e-41 0 0 0 0 0 0 0 4.786320236e-11 1.128068522e-15 0 0 2.812183391e-08 0 0 0 0.2364547956 0 96.94684436 0 1.175588313e-08 0 0.5903967734 0 0 3.432855243e-10 5.6417133e-13 0 8.066419677e-23 4.619037578e-13 0.04509849201 9.848237384e-07 0 5.198426144e-24 0 8.385593252e-21 3.582273606e-30 0 0 0 3.814922596e-09 3.417097876e-16 0 9.951214691e-13 0 9.703583599e-21 1.005672367e-22 1.33518162e-31 0 0 0 0 0 5.399730791e-08 0 0 54351.25309 0 0 0 0 0 1.759444854 3.254224679e-10 0 0 946726.5631 5.456833358e-08 1.138513515e-11 2.273326799e-17 0 0 0 1.03285151e-13 94.51985383 0 0.2844744739 1.279983052e-22 0 0 0.00197973787 0 6.436022036e-16 0 0 0 6.038733028e-11 0 0 5.910093666e-05 0 51892.21338 0 0 4.259724077e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.832144193 0 735.8683576 0 0 0 0 0 0 1.023890613e-07 0 0 0 0 0 3.867099999e-18 0 0 5.142224852e-06 1.377132447e-37 0 1.517845632e-12 0 0 0 0 0 3.760391844e-16 0 0 0 6.418690659e-14 9.346043541e-05 0 0 3186.863653 0 0 0 0 0 0 0 0 0 0 0 0 +1.411123299e-15 0 3.235474542e-23 0 4.079854617e-10 0.2282226978 0 0 0 0 0 0 1.872150443e-24 0 0 7.168261276e-07 0 0 0 0 0 0 0 0 0 0 1.986931261e-22 6.05072472e-28 9.474743966e-23 0 1.888991326e-07 0 6.704190975e-13 0 1.564290089e-18 0 0 0 0 0 0 0 1.195201382e-07 0 0 0 0 1.383015034e-07 0 0 7.816306182e-29 0 0 0 0 0 0 0 0 0 7.578766983e-09 0 0 0.002523065918 0 8.126800631e-05 0 0 0 0 0 0 0 5.41749908e-13 0 7.5054208e-07 0.0006206097832 0 0 0 8.891712075e-13 0 0 0 2.307732647e-16 4.583331771e-23 0 0 0 0 0.4871844837 1.944883776e-05 189989.2488 635210.6843 0 0 0 7.193346568e-10 140701.6775 4.665577122 0 0 3.6715109e-11 0 1.083112503e-05 0 8.693895125e-06 0 0 2.572039025e-12 6.150050088e-41 0.3888585149 0 0 0.005262811846 0 6666.716515 4.2391268e-17 4.722975338e-14 0 0 0 0.006825432627 1.830533093e-18 0 0 2.502738135e-09 0 0 0 0 0 0 0 0.050976889 0 7.853315185e-12 0.002223737159 0 0 0 0 1.214400263e-19 2.726987951e-21 5.602311199e-12 0 2.062834795e-13 0 0 811161.3118 1.139952461 0 0 8.624134833e-08 0 0 0 14.82213886 4.73371597e-06 0 0 76.23306344 0 0 0 0 7.191750355e-20 0 0 0 4.736301387e-05 1.697442246e-09 0 0 0 131.1751986 0 0 0 0 0 0 154005.5396 0 9.635753146e-08 0 9.518372369e-08 0 0 1.545799724e-25 0 1.306443453e-19 0 1.137936758e-16 61.62909927 2.961426321e-39 0 0 0 8.702711069e-09 40.61439434 0 0 3.162570212e-12 9.31266351e-16 0 1.034145211 0 0 7.588861831e-09 0 0 0 0 0 25.1807463 19.95717779 1.808630867e-05 0 0 34.58156458 4.443539546e-06 0 3.976969948e-14 0 2773845.287 0.08603750717 0 0 0 0 0 0 0 54023.43052 0 0 8.777229922e-09 0 0 7.976923028e-10 66949.31767 0 0 0 9.569717561e-11 0.0002147966435 0 0 0.003384733976 1.957950077e-15 0 0 0 0 6.924970441e-16 0 0 0 0 0 1.974072822e-08 208869.4254 0 0.2326289336 0 0 0 3.077869758e-07 0 0 9.302743218e-25 1.152916768e-25 0 0 0 3.46958874e-16 1.709913024e-14 0 0 1.333228277e-08 0 0 0 1.668669147e-22 0 0 1.006441469e-30 0 0 0 0 0 0 3.998181849e-23 0 0 0 0 1.79224986e-12 +0 1.973279609e-14 0 3.231102067e-17 0 0 0 0 0 0 2.120842066e-16 0 0 0 0 0 0 0 0.0009100123088 5.067607727e-08 0 0 0 2.224859664e-24 0 0 0 0 1.303691567e-05 0 0 0.0007698539706 0 0 0 0 1.696670584e-27 0 7.512805745e-28 1.39779617e-14 59.82884167 2.187855528e-13 0 3.266984816e-09 0 2.013164652e-11 324435.1375 2.020980685e-09 0 0 0 0 2.331380502e-24 0 8.22482445e-19 0 0 0 0 0 0 6.408286512e-17 0.0076579393 1.281109174e-30 0 0 0 0 0 0 0 0 2.677283917e-12 1.315159515e-08 0 0 3.259739273e-25 1215269.485 3.654744466 0 21.19266528 0 0 3.720945797e-12 0.0008215946692 0 0 0 5.479190605e-16 5.255603443e-07 0 2.209802514e-14 0 1.156101282e-09 0 0 0 7.951920668 0 0 0 0.2806968059 0 0.00457130223 0 0 0.2183039224 0 0 0 0 396260.1441 0 0 0 2.126277692e-13 8.187827552e-06 1.134386474e-13 6.754924553e-13 0 0 0 0 0 0 1.12213348e-18 3.889458928e-13 8.049731793e-23 0 11158.94237 0 0 0 1.005568318e-17 0 0 24.30812224 0 0 0 0 0 0 0 0 0 0.009518561866 388914.4263 0 3446.229172 1367.751824 0 0 0.03571246869 0 0 0 0 0 0.005718188324 0 0 0 0 7.996605277e-15 0 0 0.002906729525 0 0 0 0 0 1.831275567e-15 5.470986214e-11 0 0 2.086744057e-12 34.13726314 0 0 0 791.0746309 0 0 0 0 0 0 2.133078591e-07 0 0 2.845675321e-06 0 2.131409099e-28 0.001053386743 0 3.019281038e-27 0.0001007874586 0 0 2.003248269e-08 0 0 0 0 0 0 0 0 0 207.3742466 6.668752102e-11 1.728641162e-13 69.78952547 1.351798995e-20 0 0 0 0 0 0 0 3110.935585 5.093641444 248295.3661 0 0 0 0 0 0 1.743542966e-19 0 0 3.201301914e-25 0 3.696796904e-09 0 0 31.07558785 0 7.286459551e-05 9.566825361e-18 0 0 0 0 0 0 0 1.420516964e-10 84116.86535 0 1.460709853e-14 1.059171537e-06 0 9.862051153e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 224603.4062 0 0 0 0 0 8545.539519 2.990974744e-07 3.64387596e-11 0 8.166706305e-08 0 491.9478176 5.616549761e-16 0 0 0.01812999364 3.602344803e-18 0.2748045396 1.109679549e-16 0 0 0 0 147.4767522 0 0 0 0 +0 0 731.5559268 0 0 0 0 0 0 0 0 0 0 3.434881459 0 0 0 0 0 351.4951239 0 0 5.763268668e-09 8.301307362e-35 0 0 3.393496222e-06 3.814597893e-13 0 0 0 8.36172679e-19 5.542516335e-08 0 0 0 0 3730026.22 0 0 101164.9462 0 0 1.866349076e-07 0 8.450103554e-13 0 0 0 0 0 0.0003209472227 0 0 8.801730693e-11 0.0003898572816 2.515120829e-05 0 0 0 0 0 4806.823442 2.194060738e-23 1.749605248e-18 0 0 2.920091312e-11 9.320589773e-12 0 0 1.006375224e-29 0 28.73763331 2425256.366 0.2283018432 0 0 1.761949206e-15 0.0001040165429 238759.9432 0 0 4.270690535e-12 8.159123424e-19 0 3.827192795e-10 1.724645864e-09 0 0 0 0 0 6.192445455e-06 3.516975372 0 0.0006730494241 0 0.08088419397 0 0 0 0 0 0 0 0.003225715353 0 3.235424614e-15 0 1.102711047e-16 0 1.444880509e-14 0 0 0 0 0 4.183933064e-13 8.745497478 0 0 0 0 2.901039941 1.25885494 0 0 0 0 0 0 0 46929.12806 3.38310901e-05 1.715172379e-18 0 0 0 0 0 0.8941630512 9.542742948e-09 0 0.0001817315439 167.2663874 41.05575261 0 0 0 0 4.678114485e-07 0 6.291401377e-23 0 0 2.18100443e-27 4.247580841e-23 0 0 0 0 0 0 0 130.0540642 8.067732654e-24 0.0001191657851 0 901962.0619 2.683654421e-39 0 0 3.395403602 2.203713106e-19 0 10033.20582 0 0 0 2015.102135 0 0 0 2.218610376e-11 2845.545791 8.414517193e-22 0 0.7445861843 0.949093484 0 0 3.28720277e-09 1.897648729e-16 0 0 0 0 777072.0402 94.31359948 0 456.2480306 0 0 2.339191089e-11 0 0 0 0 0 2.759537774e-13 0 0 1.061681787e-06 0.2080408199 0 9.644843659e-14 2.434449896e-12 0 0.004241816133 0 8.803480576e-34 3.975386349e-35 0 0 0 0 0 0 0 0 0 72.0154937 0 0 0 177544.4531 0 0 0 0 7.851930311 3.766924297e-19 0 0 0 0 0 0 0 687841.0027 0 0 0 0 5.29169182e-06 0 0 0 0 0 0 0 0 0 0 0.1217482294 0 0 0.327470622 0 0 0 0 0 0 5.142841608e-17 0 0 0 0 1.18755178e-43 0 0 0 0 1.737849961e-08 0 0 0 0 0 0 1780.374551 0 0 0 0 0 0 +6.107605272e-33 0 0 57.27783388 0 0 5.928691056e-11 7.009664418e-15 0 0 0 0 0 5.921082875e-06 0 0 0 206020.274 6.609986943e-24 0 1.263863743e-12 9.12948188e-11 0 0.02422312911 0 0 435.6536265 0.1376531907 0 0 0 0 0 0 0 0 0 2.346401031e-08 1.105708372e-27 0 48959.49207 0 0 0 0 0 0 3.541009181e-13 0 2.701624559e-21 1.034666569e-28 0 0.0001183690327 0 0 112.5600053 0 13.59860578 0 3.736991852e-08 0 0 0 0 294822.2795 0 1.207500327e-17 0 0 0 0 0 6.603171515e-08 0 0 0 0 0 0 5.659310249e-10 0 1.339683754e-17 0 0 8.296371296e-12 0 0 0 0 0 4.917931645e-10 20639.13926 4556870.498 0 4.114644864e-14 0 0 0 0 2660.131536 0 0 0.001124013827 4.717012658e-20 0.00032203663 6.281433843e-24 0 3.401787208e-10 0.6820927229 0.0001705219925 0 0 0 0 0 0 0 0 0 6.058518097e-15 0 0 0 8.572573739e-21 0 0 1.139584318e-29 0 0 0 0.03000448277 1.091321298e-05 6.804979633e-27 0 10.51624786 0 0 0 0 3782.188758 0 171628.6771 105155.4038 7.38142653e-15 0 1.065699546e-13 0 0 0 1.436252694e-26 9.882721035e-28 0 0 1.111434169e-10 4.48800532e-19 0 0 0 0 1.057605822e-13 0 0 0 1.639429757e-09 0 0 0 0 7220.514473 0 0 0 0 95360.71425 0 0 0 0 0.01642017418 0 0 1.995684177e-28 2.327869446e-22 10.87677956 0 0 0 0 7.538880401e-09 1.298224321e-15 2.624164115e-07 4.641306704e-07 1.654766732e-10 3.328704783e-06 0 0 0 1.618059341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 758.6402341 1.59582139e-12 9.777584926e-14 0 0 9.13108813e-13 0 0.00750751345 1.873166771e-20 9.050263559e-18 0 0 3.958108106e-23 0 0 0 1.37987579e-14 879.6328902 0 0 0 2.841094913e-13 1.259639559e-23 0 4.867788583e-06 0 0 6.128084302e-15 0 0 0 0 0 2394.973692 52.36184838 0 0 3.414035857e-05 710.2130987 0 0 0 0.4457970035 0 0 0 9.416263181e-08 0 0 0 0 0 0 6.801049998e-28 0 5.608824767e-17 0.00015977227 0 0 7.0150729e-14 4.6485846e-21 3.638860059e-05 1.284177557e-14 0 0 0 0 0 0 0 0 1.475315743e-30 0 0 1.431796089e-14 0 0 0 0 0 0 0 0 0 0 46.3814469 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1356616872 0 0 0 3.203705601e-29 0 9.83508057e-27 0 0 0 0 0 1.268243124e-21 0 0 0 0 3.572331794e-10 0 0 7.937728806e-12 0 0 0 0 0 1283703.235 19.45966584 0 0 0 0 2.22941189e-18 0 1.000143145e-17 0 0 0.7978509653 0 3.540498317e-05 0.009528526792 0 0 0 11.11825904 0 0 0 0 1.566678114e-16 0 0 0 1.515312773e-14 1153846.477 0 0 0 9.960720102e-13 0.0002865493756 57.02098355 1.651659443e-14 0 0 0 0 2.625865547e-05 5.171084167e-15 0.02523547911 0 0 0 0.1493473961 0.0002653625513 103.7100346 0.008033099084 0 0 0.5455896727 0 23.44792181 0 0 0 0.01003723136 0 0 3.898361733e-10 2.218559291e-22 6.199088396e-14 0 0 0 1.855113002e-11 0 0 2.537255669e-29 0.001284516967 0 0 0 0 0 0 0 1.900983467e-11 4.137433183e-12 0 0 4.599052059e-21 0 0 0 615887.7414 6.109758758 0 0 0 0 0.01555426944 2.173618164e-14 0 0 0 1.849389181e-13 0 0 0 0 0 2.028737593e-14 0 0 0 0 0 0 1.320134126 1.368539938e-07 1.347330175e-42 1.244716298e-07 0.05781062997 2.902331662e-06 0 7.81040445e-09 0 6.543694555e-14 0 6.651322816e-14 0 0 0.03112688779 0 1.369809748e-10 1.031836819e-21 6.338423937e-08 0 0.03600256946 0 0 0 0 123104.5421 0 0 0 0 0 1.83261399e-18 0 0 0 0.03409015635 0 0 0 6984.293621 0 0 0 0 0.04685539529 0 0 0 4.403844397e-05 4.734567386e-05 0 0 0 0 0.005290359036 7.755169619 0 9.16141498e-06 0 0 3.642537485e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.829399612e-06 1.330869305e-30 0 0 0 0 0 0 0.000104926359 0 5.294110487 0 0 7.566406662e-11 0 9.387318387e-21 0 0 2.174109737e-08 0 0 0 2245.619547 1101.513826 0 0 2.561372416e-08 0 1.064745248e-14 0 0 0 0 0 0 0 0 6763.011454 1.858355973e-16 0 0 0 0 0 0 1.051970628e-16 0 101099.7378 0 0 0 0 0 0 0 0 3.17344904e-15 6.388026798e-05 1.786159258e-12 0 0 3.665250497e-14 0 0 0 0 0 0 +2.705246273e-05 0.00244692173 357366.8466 0 0 0.0008054968197 0 0 0 0 0 0 7.122792146e-18 0 0.10806126 0 0 0 0.9878981663 1.426711354e-27 0 0 9.111861679e-16 0 0 0 0 3.79497893e-27 0 0 0 0 0 0 0 0 51.92801039 0 299374.4195 0 0 3.227383027e-08 0 0 2.261535145e-05 0 0 0 0 0 0 1.185775848e-24 2.232500251e-26 0 0.003843035441 1540.213049 0 379407.811 1.399383438e-05 0 0 0 0 0 7.86522714e-14 0 0.2433475722 0 0 0 0 0 0 0 0 538.8391991 17779.35322 0 0 0 0 0 2010.332838 0 0.01148484197 4.062496937e-10 4.547163256e-18 0.0001526901979 6.300102624e-16 8.562652834e-14 0 0 0 5.125424404e-10 8.080036806e-14 1.548343365e-06 9.651380812e-16 794.8236616 4.376504231 0 0 0 0 2.027920365e-08 0 0 0 0 0 0 0 0 2.018192523e-24 5.676109182e-23 0 0 0 2.598721842e-30 9.399895837e-14 0 0 543081.1555 6.36846216e-26 0 2.466421484e-36 0 0 0 0 0 250.3013354 0 1.691718047e-24 0 0 0 0 0 0 0 0 0 0 0 2.347089799e-29 0 8.775928469e-21 0 0 290734.2299 888540.5035 5.166822722e-16 0 5.733723202e-32 2.672052765e-05 0 29676.05015 0 0 0 0 7489.940094 89.56411369 0.001947050625 2.81012463e-16 4.244207148e-17 1468.499361 0 1.281424733e-08 2.127864528e-21 6.646957607e-08 10201.54796 0 0 1.378712134 0 0 0 5.391750965e-19 2.675501003e-20 1.8580814e-07 0 893857.4705 2869.054394 0.02683024794 1.716805899e-14 4.015982823e-24 0 0 0 0 0 4.281858629e-06 0 0 0.4185133697 5.137110167e-05 0 0.0002608011635 0 0 0 0 2.507133524e-09 337359.2514 7.096140442e-10 0 35322.25371 0 0 0 0 4.706274652e-08 0.04812136161 0 0 0 0 0 0 0 0 0 0 0 8.26421233e-14 0 0 2.67333459 0 0 0 0 0 0 0 0 0 0 24.30279128 2.779466811e-13 1.650280356e-19 12.31556323 0 0 0 0 0 58385.89568 0 0 0 0 0 0 0 0 0 0 45594.63536 0.01664555275 8.858588957e-34 0 0 0 0 0 0 0 3.978280496e-20 0 1.046491263e-24 4.902166317e-05 0 0 0 0 0 0 0 0 0 0 0 0 1.547463231e-08 0 0 0 0 8.800032204e-23 0 0 0 55.80019407 0 0 0 1.61913084e-13 0 +0 0 0 0 0 0 0 0 1.348731956e-10 0 179.9615935 0 0 0 0 0 0.2085641271 0 1.163690186e-12 0 0 7.319934939e-07 0 0 2.399981437e-05 6.79077635e-15 0.2780793156 0 0 510.2185503 0 0 9.406048019e-08 1.157207676e-15 0 0 0.002760742788 5.956387069e-17 2.618976235e-07 2.271826998e-29 0 0 0 2093.796789 0 0 0 3.373540284e-21 0 0 0 3.487521666e-14 0 0 0 0 0 0 0 0 0 2.256880538e-20 0 0 0 0 4.018541871e-15 0 3.245054055e-08 0 0 4.157027385e-10 0 0 0 1.064584935e-10 0.05637844995 0 4.519494029e-07 0 0 0 4.674465459e-21 0 0 0 0 1.261694891 0 1.767369697e-09 0 0 0 0 1.838995254e-17 6.255091e-13 0 0 0 0 1020.818295 0 7.542525755e-07 0 0 3.944469347 0 0.6302572566 0 0.1729197086 0 1.021215196e-05 0 0 2.024102721e-17 2.379227102e-24 7.454131435e-11 0 1.4360456e-12 0 579884.7858 0 0 5.635346598e-34 0 0 0.006024405252 0 0.6187003924 0 0 0 3.683251347e-24 0 1.048855313e-07 3.986854523e-14 0 4.457562297e-14 5.270391598e-20 0 0 0 2.50699002e-14 6190.599144 0 16267.7046 0 0 0.0005384403246 0 0 2.405439141e-33 5.589683484e-10 176.0568562 3.881375982e-12 0 0 1.221259869e-08 0 1.253431662e-08 0 1.930686457e-06 0 61.76316189 8153.168256 0 0 0 0 0 0 2.74049258e-21 0 0 0 0 1.685375413e-15 0 0 0 1.11092641e-06 1.087154557e-17 0 2.56033939e-13 2.026257854e-08 0 0 7.571270456e-14 0 1.138934716e-16 0 0 0 0.0003700552287 0 0 0 0 0 0 0 0 303.6359265 8.448729676e-24 3.817765319e-05 0 0 0 0 0 0 0 4.023287728e-09 0 0 0.0001444815922 630.678842 0 0 0 0 0 0 0 0 0 0 0 0 242.0971023 0 0 0 0 0 1369097.137 0 0 3.450252688e-14 0 0 0 0 0 0 0 0 0 33618.85693 60461.60965 5645.505828 1.084966274e-12 9.244711509e-28 0 2.700027389e-08 0 0 6.9314076e-18 0 0 0.002119002165 0 0 1.6039431e-23 0 0 0 0 0 10.32517735 0 0 0 0 0 0 0 822214.2899 0 0 2.37335551e-06 0 0 0 0 0 1.100580969e-08 0 0 0 0 0 1.236122566e-19 23.80611945 0 0 0 0 0 0 +0 0 0 7.943020544e-21 0 0 5.398377954e-05 6806.667686 0 1.188672127e-20 0 3.012673159e-15 1.447498826e-17 0 0 0 4.516820932e-20 1.269748828e-18 0 3.790780304e-06 0 0 0 0 0 2.005409922e-09 0 0 0 0 0 0 0 5.691203261e-08 0 0 1.496338567e-07 0 0 0 0 0 0.0002258947811 0 0 5.057750927e-05 0 0 0 0 0 0 0.4138846937 6.907704178e-26 0 0 0 0 5.782248487e-07 1.149344924e-17 2.155252134e-10 0 0 888.6760524 0.01163847114 0 0 0 0 1.045413222e-26 0 0 0 0 4.331584003e-10 0 0 0 0 0 0.03707287458 0.01425147223 4.119969587e-26 7.618221853e-18 0 0 0 0 0 33128.47427 0 2.817140617e-10 0 20.28514605 0 0 0 7.007404464e-09 0 0 0 0 1.337892699e-14 0.0001986801596 0 28296.19394 8847.881727 0.2703693581 5.143027376e-11 0 0 0 0 2.982512697e-21 0 5.059383801 0.01363551024 8.581218563e-26 0.01903660122 7.008326406e-21 0.0005617211271 0 3.856264061e-11 0 0 3.431429791e-20 0 0 0 745.8883571 0 3148.842005 2.766060048e-21 2.878246028e-05 2.987030985e-11 1.729187417e-30 3.487948846 0.006390953885 0 2.243087866e-05 0 0 7.167173511e-11 0 0 130.1874678 0 1.158883234e-22 0 0 0 3.734659234e-21 0 2.924747883e-12 0 0 0 0 0 0 0 0 0 0 0 1.512762528e-18 0 7.859435042e-09 0 6.334922768e-12 0.005645046661 0 0 0 8.431989071e-15 2513.744609 1547.034844 5.349341377e-06 0 0 0 0 1.430653678e-30 5.342163737e-14 0 0 31.68728348 1.386103307e-11 0 1.520776514 9.836797069e-05 0 1.94770984e-16 4898.737488 2.453528628e-16 0 9.955245804e-14 0 0 0.1429467425 0 0 1.841279114e-06 0 24.52546838 0 0 4.104500896e-11 4.31284983e-08 1.584800547e-07 4.94324669e-18 3.233940115e-07 29.26145709 0 0 0 0.0002724776681 0 0.2744911025 0 0 1388850.945 0 0 0 0 0 0 0 0 0.08965812903 602566.3205 0 0 0 2080221.132 0 0 2.833702879e-14 0 3.52706546 0 7.361211023 0 15.33288706 2.27340493e-12 1.495758225e-22 7.89194018 0 0 0 7.233723817e-06 0 0 0 0 9.369262396e-05 0 1.955839736e-15 7.087782143 0 0 0 0 0 0 0 0 0 2.070328435e-14 0 0 6.846384704e-07 0 0 0 0 0 0 0 0 0 0 0 162115.7418 0 0 0 0 0 0 0 0 0 0 0 0 2.150668745 0 0 +0 3.374427846e-23 0 0 0 0 1.914342859e-19 0 0 0 0 0 0.001743457479 0 0 0 0 108887.7742 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.126099522e-19 0 0 3.342040726e-12 1.373129571e-05 0.0003419917923 2.853096321e-15 0 0 4.140693887e-13 1.101547693e-26 0 4.926454958e-13 0 0 0 2.389544125e-10 0 0 26.0089325 0 9.18801727e-19 0.01492249046 0 0 1.071599582e-07 0 146737.2258 0 0 0.01933456646 0 0 0 0 0 1.337331765e-14 0 3.561146356e-33 0 4.932716336e-12 3.780857515e-24 0 1.083909776e-17 0 0 64.82877033 0.002259423906 2.293993647e-25 11.45165425 8.442144268e-05 0 0 9376.088631 0 8.632612364e-06 0 4.517296577e-17 9.489943539e-20 2.608561047e-09 3.831548296e-12 0 0.0003428271365 0 0 0 0 0 2.011941181e-18 0.005025384108 26849.296 0 0 3.067619805e-17 0 0 0 0 0 0 0 0 0 8.989919295e-22 0 0 0.000401459283 4.496413776e-30 0 7.00281386e-12 0.002267267397 774.4440834 3044.987507 0 0.0004609029098 1.016024757e-26 0 0 0 0 0 654.8573866 7.511483301e-12 0.0007691691855 6.007143554e-16 3.292736403e-23 0 2.698286377e-28 1.402142329e-10 2.572362141e-12 0 0 6.531454943e-13 0 0 25.73037272 0 0 0 4.411415169e-25 1.201807642e-28 7.498500903e-15 0 0 0 9.90049302e-13 0 0.5948913705 8.583019664e-15 1.194229334e-13 1.139919714e-07 0 7.990321552e-11 249581.9354 0 0 0 0 0 0 0 0 0 0 3.789121632e-28 0 1.013701094e-39 0 2.738907042 0 0 325306.8558 0 0 0 3.541005752e-13 7.98961509e-11 1.360543655e-14 0.005932024764 0 0 0 0 0 0 0 0 0 0.02538636839 2.803819774e-11 0 0 0 0 0 0 47.20884834 0 0 2.162097249e-06 1.493553333 0 0 0 9.858093662e-09 0 0 1.923403927e-10 0 2.809154707 0 31044.49789 2.199939182e-16 2.374271898e-39 0 0 0 8628.795802 0 0.3148225373 1.440729937e-10 0 0 0 0 0 0 0 4.731853631e-10 0 0 0 0.005172249661 0 3.02944061e-21 0 0 0 0.213813182 0 0 5.497217544e-10 0 0 1.311972825e-26 0 0 81724.63566 0 0 0 0 0 0 0 0 0 0 0 410463.7461 0 0 0 0 0 0 0 0 0 0 2.655176565e-11 0 0 0 0 0.001907050226 4.260287304 0 0.01852722587 0 0 0 6.192033441e-14 +0 0 0 0 0 0 7.482535377e-07 0 2.27879019e-09 0 0 0 0 0 0 1.22096397e-18 0 1551339.136 1.050066393e-08 0 0 4.578071969e-08 0 0 0 0 1.797936915e-16 0 0 0 0 0 0.0003153516833 0 0 0 0 0 0 591315.3821 0 0.3701693664 0 0 2607287.621 1.248181583e-08 152273.6892 0 0 0 1.378256245e-22 6.441836827e-08 0 206254.1675 0 0 0 4576835.959 3.787585555e-18 0 14.91750618 0 0 0 1.301755158e-13 0 0 0 0 0.2505556601 27.11154394 546395.8883 0 2.065195227e-23 3.103617872e-08 0 1.775557468e-21 0 0 1.284983551e-13 0 0 0 0.002739017799 0 0 0 5.769566784e-10 0 1.907436336e-14 0 3.826309537e-09 4.559466977e-10 0 0.002180957584 0 0 0.09371657941 0 0 29929.77892 0 2.314076266e-14 0 0 1.907255432e-28 4.738452423e-05 3.034316216e-20 0 0 0 0 0 6.705731559e-09 0 2.12552325e-33 0 0 0 0 0 0 2.363812618 3.048833117e-12 0 0 0 0 0 7.892603037e-22 0 0 0 0.01022785231 1.148458106e-11 1.04130222e-16 1064.74089 0 0 0 0 0 98530.50448 0 0 4.378300452e-10 0 1.888386418e-05 5.815394596e-05 0 0 0 0 0 1.351298078e-05 0.000529062207 0 0 0 0 0 0 4.833924964e-15 1.013203579e-08 0 0 0 0.0003876205785 0 3.254988822e-31 0.0002744436644 0 0.00264575078 3786.042237 5.409405503e-12 0 0 0 0 3.996614939e-15 0 0 0 0 0 3.301800912e-27 0 4.534455224e-06 0 2.609885427e-22 581.3544274 0 0 0 0.0001348748966 0 18.23769355 0 1.145453935e-22 0 0 0 2.510676629e-15 0 0 0 0 0 0 0 0 0 0 0.002155222134 1.446555453 0 0 0 0 0 42700.03803 98.93378227 6.316545518e-06 0 1.983108019e-06 0 0 2.786073665e-11 0 0 0 0 0 0 0 0 0 0 0 1.081654704e-22 0 0 3.190814945e-12 0.001925489116 0 1.381526429e-08 22.89767206 0 0 0 0 0 0 171790.9081 0.000678309615 0 0 0 0 4.593775107e-13 0 0 0 0 0 0 0 0 147731.2048 3.02821112e-19 0 0 0 0 0 0 0 0 0 0 1.201165721e-37 0 2.371367947e-26 0 0 0 1.866164568e-21 2.191235757e-12 0 0 0 0 0 0 0 0.1195028553 0 0 1.567227308e-15 0 +0 0 0 89.63141817 0 3.767471902 5.590790389e-12 0 9.558450865e-09 0.000124078669 0 0 0 0 8.613469677e-08 4.13250836e-27 0 8.636376108 0 0 0 0 0 0 0 9.949475581e-14 7.709844818e-21 0 3.255129658e-17 0 8.911598805e-11 0 0 0 0 0 71.30539636 0 4.353209617e-11 0 0 0.006134451502 0 0 14446.52288 0 0 16.54830341 0 0 0 0 0 0 0 0 0 0 0 0 9.014405767e-08 0 0 9.657085294e-12 2.296894475e-05 0 4.141237332e-06 0 3.732022302 16.54239592 0 0 0 0 0 0 0 2.595365649e-08 1.154025105e-09 0 0 0 0 2.28674327e-19 0 4.050057639e-26 0 0 0 0 1.324066515e-21 3.015829248e-05 0.03987510514 0 0.9539784517 8.136209099e-23 0 475883.1391 0 5.939343812e-28 0.2337858585 610610.2825 0 0 0 7.830565402e-27 1.763977691e-22 1.930386326e-10 0 0 0 0 2.521835627e-18 1.40306468e-15 0 0.0009694616751 444.6046125 0 0.005098580084 0 0 0 0 0 9.313339063e-33 0 0 2.63379114e-43 0 0 0 0 0.4299836061 1.763853278e-08 9.391258758e-17 2.119229265e-19 2.160172558e-25 5.871163394e-09 0.008653063602 0 0 2.451986737e-24 0 3.176372778 2.165924497e-26 0 1.33229971e-23 0 0 0 5.03700276e-27 5.45721313e-15 0 0 0 1.112507753e-31 0 0 0 0 1431252.298 0.01589377642 0 0 6.863470731e-13 0 0 7.647456413e-15 2.142381868e-16 0 0 0 0 1.72165881e-16 1.945318853e-12 6.245861538e-09 0 0 0 0 6.685100461e-18 0 0 0 0 0.0001009664413 0 0 0 0 0 0 9.075045297e-07 0 0 2.194400946e-07 0 0 0 0 0 0.01977117554 0 0 1.289267194 2.101387542e-10 139443.6817 0 0 0 0.02572096185 0 0 0 0 0 0 0 0 12638.31304 404437.9598 1.33063467e-28 0 4.881249092e-15 2.341697524e-07 4.449636239e-23 0 7.723076532e-25 0 0 0 7.250037607e-11 0 0 0 2.694386758e-13 59191.28184 0.000191033817 0 0 0.5315615184 0 0 0 0 0 0 0 692925.6764 0 0 2.70401005e-14 0 0 0 0 0.0002108993641 0.0006179775973 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.97193347e-06 3.511618431e-10 0 4.500581568e-11 0 0 0 4.933555965e-09 0 0 0 0 0 0 +0 86.61342722 0 0 6298.429194 0 0 2.258360409e-22 0 0 6.865957042e-34 0 0 1.727373955e-07 446.2268252 0 0 0.04370689098 0.01005437951 0 0 0 0 0 0 0 0 0 0 4.199108165e-10 2.122787252e-05 0 0 0 0 2.547776233e-13 7.78631368e-08 1.821088685e-11 2.893212883e-10 4.776330277e-09 0 0 0 1.249149101e-07 0 0 0 6.871869919e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1491.111142 0 0 4.841096135e-15 5648.135369 0 0 1.880102628e-07 0 0 0 227972.0008 4178539.65 45.26937645 0 0 3.15971968e-18 0 0 0 0 0 0 5.384279336e-12 4.636939905e-08 0 0 0.000195746854 0 1.998498919e-25 0 1.874773792e-14 0 5.946145735e-15 2.033859121e-09 0 0 7.224336943e-34 5.72905427e-06 0 3.639924554e-05 1.753506377e-17 0 0 0 0.0224283544 2.931920276e-38 0.00230841883 0 0 0 0 5.862723264e-14 0 2.248879677e-23 1.688788753e-37 0 0 2.975909856e-09 0 8.378442507e-07 0 141.6741051 0 2.146811094e-22 0 2.016838539e-13 5.701438407e-27 0 2.154258381e-18 5.155805479e-09 0.0001007345613 0 5.754529075e-05 0 2.797385884e-10 4.205171272e-15 1.266053307e-10 0 0 0 1.033415695e-07 517.6968246 0 0 3.142898573 0 0 216.0868515 0 0 0 10.51936446 4.601486649e-11 0 0 1.387707944e-07 0 376.2660615 0 1174115.737 0 0 0 1.050896899e-20 0 0.0002418865417 0.00076308047 0 3.165552733e-30 0 0 1.685578073 0 0 0 0.02141491435 0 0 146.3673565 0 5.337097344e-13 0 4.944486855e-11 0 0 0 0 0 0 0.0001126189327 0 0 0 1.418625261e-18 0.01655565448 7.548919575e-15 0 0 9.918130314e-11 0 0 0 0 0 0 110665.473 0 0 0 0 8.549715828 0 0 0 3.633321636e-08 0 4.590702811e-12 0 2.379036085e-06 185.0775161 0 0 0 0 3.836277708e-17 0 8886.448617 101.466424 0 0 0 0 637162.2171 0 0 0 0 0 0 0 0 3.735450371e-20 0 1.400417966e-15 0 341.5204781 0 0 3.350702842e-27 0 0 0 105276.5639 0 0 0 1.055971715e-26 0 0 0 1.792808051e-10 0 0 0 42.12797011 0 7.368204434e-13 0 0 0 5.53122144 0 0 0 0 0 0 0 1.596529379e-11 0 0 3.770990053e-18 0 0 0 0 0 0 1.85267252e-16 0 1.594504493e-05 1.698577586e-24 0 0 0 0 +127467.8656 6.689289484e-10 0 9.542759294e-11 0 0 0 0 0 0 1.012884623e-06 0 1.029330255e-11 0 1.356649428e-31 0 0.003648062558 0 0 5.360174388e-19 0 368.5034148 0 0 0 0 3.248125818e-23 0.0891407855 0 0 0 0 2.275219407e-32 0 0 0.0001407916752 0 0 0 0 73522.4864 0 1.081670626e-19 0 0 8.501748652 0 49283.01828 0 0 7.035450724e-27 0 0 3529.230975 0 0 0 0 0 1.523170868e-10 0 0 0 3.982422386e-11 0 0 0 0 0 0 0 1.008248825e-16 0 686513.9984 0.005336659579 2.064102505e-10 0 0.5592076134 0 0 1.71076387e-15 0 0 0 0 0 5830.967695 0 0 0 0.0004105850175 6.032391642e-09 0 32.65356319 0 0 0 2.491976685e-10 0 0 0.004914032607 1.788418846e-08 0 2.591834737 0 0 0 1.209128756e-25 0 0 4.07212052e-07 0 3.888388381e-05 0 2.604390089e-06 1.927546645e-07 0 17.09152329 7.489358689e-18 3.719435254e-10 0 4.776351099e-10 0.000823167143 0 2.958848946e-22 0 0 0 7.842942081e-14 0 0 5.915218415e-06 0 1.180306613e-12 3.369113592e-28 4.738298023e-24 0 0 3.944898147e-25 0 0 0 4.846097415e-29 90.39023235 0 0 0 0 0 0 1.526588992e-12 0 0 0 0 1.713517121e-23 0 7.469190169e-09 0 0 1.545443902e-06 2.475782307e-06 0 0 0 0 0 25.41928881 0 0 5.31646877e-09 414363.3433 0 0 0 0 0 0 0 6.263951542e-08 1.250284481e-25 1.428774666e-23 0 1.419485213e-14 0 0 0 0 0 0 0 0 0 0 0 3.939724999e-25 0 0 0 1.094942545e-13 0 54716.50222 1013236.16 0 1.547832208e-10 0 2.382399244e-07 2.325801405e-18 1.618534837e-30 719.3463087 2.387961403e-13 0 0 0 0 3.822502086e-27 1.742355984e-08 0 0 0 0 0 0 0 0 0 0 0 1.718869343e-22 0.001151574659 8.455481701e-06 3.772263188e-22 3.519873633e-31 0 0.0002391587876 506354.6698 0 0 1.949437967e-11 1.395674206e-17 608490.7416 0 0 0 0 0 2.938267372 2.793991084e-09 2.930006719e-16 0 8.304539563e-10 4.284915745 0 1.924450333e-05 1.610154728e-10 0 0 0 0 0 0 4.638203171e-18 1.933240784e-17 0 0 0 0 1.001363618 0 0 0 0 0 0 0 4.340201734e-24 0 0 0 0 0 5.675284043e-16 0 0 0 0 8.667232897e-25 0 0 0 0 0 7.519311271e-09 3.384681281e-22 0 0 0 0 0 0 +0 0 0 0 0 0 0 677967.244 0 0 0 0 0 3.345965961e-09 0 0 0 2.211811129e-36 0 0 0 0 0 0 0 9.455216844e-11 0 0 0 0 2.614010586e-14 1.505220502e-13 0 198251.2979 0 0 0 779.4180207 1.556342922e-22 5.96800078e-16 0 8.647030425e-24 0 0 0 0 0 0 8.222987667e-10 0 0 0 0 0 0 0 4.603097105e-11 0 0 0 0 0 0 0 0 0.02865413135 0 0 0 0 0 0 3.613237577e-16 0.002106397955 0 0 0 0 0 1.194131559e-19 0 28295.75067 0 0 88.76579738 0 3.650657478e-08 0 0 2.410534262e-16 0 0 0 0 0 0 0 7.784673578e-09 8.005811183e-18 0 5.205258382e-18 0 0 0 0 0.0003820132729 0 0 0 0 0 0 7.971284232e-18 0 0 0 0 2.636016711 0 0 0 1.218064622e-07 0 2.676428697e-15 0 27.98308847 0 0 0 0 0 0 0 0 500207.8072 0 0 4.251198048e-24 0 0 0 0 0 5.308017502e-26 1.021928174e-24 0 6.126697648 4.039366815e-08 0.002399547027 0 0 0 0 0 0 0 6.247126255e-15 105.4051914 0 1.462618207 1.190256309e-22 0 0 40645.04615 0 0 0 0 0 0.2273505964 0 2.153158311e-20 0 0.2963924689 0 299.4793727 0 0 0 0 0 0 0 0 0 0 3.557680887e-21 0 0 4.987790022e-11 2.111046557e-08 0 0 7.883016249e-35 0.008503414479 0 0 6.324246028e-08 0 0 0 8.819372608e-14 0 1.549209611e-28 0 1.516427562e-11 0 0 0.006125327685 0.004399985366 0 0 0 0 0 247.4364209 0 0 0 0 712873.9537 0 0 0 0 2.849676989e-05 0 0 0 0 0 0 0 0 0 0 0 0 7822.924769 0 0 0 0 0 0 2.543842317e-17 0 0 0 0 0 0 0 5.162797129e-25 7.247064829e-26 0 0 3.623986845e-11 2.08307258e-05 0 3.055635268e-14 0 0 0 0 0 0 0 0 0 0 118.1055114 0 1.973985972e-10 5.037547078e-14 0 1.061581817e-15 0 0 0 0 0 0 0 0 1.015612235e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 8.747298036e-17 +0 2.895331871e-13 0 0 0 0 0 0 0 0 0 867.4391353 0 0 0.2453541233 0 0 133.5641332 0 0 0.02187442704 0 0 0 0.00593261757 0 0 0 1.104016077e-08 0.001114698701 0 0 0.005314006078 0 0 0 1.982287335e-06 0 0 0 0 0 8.319978079e-15 0 0 1.173459931e-07 0 0 49658.18441 0 0 1.884038287e-11 0 0 5.887173017e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.558630919e-24 0 1.627662179e-06 0 0 0.02456401538 0 0 880670.1435 0 0 0 0 0.959325027 0 5.319499855e-24 0 0 0 0 0 2072.395344 0.0001967026414 0 0 5.294991535e-14 0 5.578079182e-05 0 0 0 0 5.097928296e-19 0 0 0 2.682190558e-16 0 2.085828711e-33 5.335357267e-05 16306.6675 0 0 1.169963548e-05 4.894867177 0 2.374518849e-25 0 0 117958.4316 1467.097714 1.500028521e-17 0 0 0.8256499551 0 0 0 0 0.02131160521 0 0 0.01919378333 0 0 0.1450436824 0 231.7070411 0 0 1.08053228e-15 0 5.079998505e-10 3.693883591e-13 0.0006447330646 0 0 1.663865665e-06 8.442466321e-42 0 0 0 209644.1788 1.261486268e-17 2105542.526 1.704190235e-29 0 0 0 0.2636721522 0 0.4909826874 0 0 397.3200269 0 0 0 1.609482115e-10 0 0 3.955394142e-11 9.377994114e-12 0 2.038090362e-05 0 1.532235984 0 0 3.329801956e-26 0.0004307576063 0.0003725745712 0.001191067964 5.966108453e-07 1.860879651e-12 0 0 0 0 0 224.6079283 0 0 5.729467567e-28 3.282649738e-18 0 0 0 0 0 1.360540488e-14 0 0.1205792476 1.226402685e-21 0 0 0 0 1.636801585e-13 0 2.321020351e-20 2.414150039e-13 4.434254028e-11 0 0 0 0 0 0 0 0 0 0 1.014093898e-22 0 0 0 8.76702612e-06 0 0 0 103.6174774 0 0 8.129336307e-15 0 1.335319689e-05 1.860718563e-38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.408897665e-20 0 0 0 0 0 0 439374.4297 6.912192892e-18 5.029864623e-08 0 0.00836932412 0 0 0 0 0 0 246567.0229 0 0 0 0 0 0 493945.979 0 0 0 2.211205819e-27 0 0 0 0.0009164596988 0 0 0 0 0.172567366 0 0 1.19227759e-14 0 0 0 9696759.897 0 0 0 +0 0 0 0 0 0 0 0 1.583271373 516717.2843 2021.528131 0 0 0 0 0 1.190639435e-14 0 0 0 1.041389684e-06 0 0 0 1.969653882e-13 0 0 676332.7882 6.216286621e-07 0 7.156814748e-06 0.0002764121887 0 0 0 0 3.295221582e-07 0 0 0 0.0004944236249 15689.39401 0 0 0.0002478348312 0 0 7.739577794e-13 2.289755033e-33 0 0 3.515790562 0 0 0 0 0 5.446620346e-11 0 0 0 7.985864801e-08 0 0 38.47573749 0 0 0.0001213772003 0 0 0 0 0 0 0 1.138077726e-09 9.863647897e-16 0 0 0.01775853141 9.805119025e-17 0 0 0 0 0 0 0 0 0 0 3178.780015 3.560730294e-08 1.41882683e-20 0 53.03711964 3.655451258e-11 0 2398536.49 6.10491066e-15 0 0 0 0 0 3.894005252e-09 8.974123036e-27 1.102732644 0 0.5008346835 0 0 0 0 0 0 5.256118394e-14 0.01745744828 131.3278234 0 0 0.03115234333 9.926985512e-06 2.042809195e-09 0 462.301342 0 0 0 0 1.034835894e-24 0 7.98017801 0 0 0 0 0.001307588942 1.312913412e-15 0 99.2815404 0 1.74929186e-18 7189.862371 0 0 2.735634077e-11 0.002272784605 0 0 0 0 3.634458448e-15 4.005868056e-31 0 0 7.98293565e-21 6.412922969e-05 0.0003756422071 1.183506471e-10 0 0 0 0 0 0 0 1.952330082e-08 0 0 0 1.616270839e-07 1.152633135e-23 1.483477133e-25 1.567245492e-10 0 0 4.732262903e-21 0.05768083293 2.985010368e-09 0 0 0 0 0 1.302924167e-09 5.195725585e-06 0 0 0 0 1293534.526 9.886038319e-23 2.435945154e-06 0 0 0 0 0 1.897828854e-15 0 0 1.391842129e-12 0.8064073202 101227.7354 0 0 0 120.976901 0 1.204102687e-15 0 54.86458675 0 0 0 0 0 0 0 0 0 0 0 0 7.228656206e-11 0 6450.805787 0 0 0 1.063142263e-16 0 0 4.467779125e-20 0 0 1.777626653e-11 0 0 0 0 0 0 716.3376769 0 0 0 0.0004691064732 0 0 0 0 4.692362367e-14 0 0.7419037079 1.469073608e-06 2.468877607e-15 0 3.101302978e-17 0 0 0 0 0 0 0 0 0 0 0 0 5.242992964e-17 0 0 0 0 0 0 0 0 2.93120041e-10 0 4.606999497e-05 0 0 1.647416407e-17 0 0 0 0 92197.87106 3.677393196 0 1.462612831e-16 0 0 0 0.09696862197 0 +0 0.001836288423 0 0 8.458097078e-15 0 0 0.2202203327 0 221810.9816 5.758676775e-36 2.930510209e-14 0 6.065613195e-08 5.072267526e-08 0 0 0 0 0 0 1.37930495e-23 1.760085145e-06 0 0 0 2.396490615e-22 1.100877482e-28 0 0 0 0 0 0 0 0 0 1.040774568e-10 0 0 0 0 0 3.988843539e-06 5.072231178e-17 0 0 0 0 0 8.43907145e-13 6.078287987e-11 0 1462.650645 455.904993 0 1.188530019e-17 0 0 0 0 0 0 0 0 7.215108014e-09 0 0 0 0 6.356744987e-30 0 38.62940476 0 0 6.870609476e-17 0 0 0 0 0 0 0 9.641710793e-10 2.723430104e-06 269935.9432 0 0 3.717967342e-09 0 0 1.577015701 0 3.147161047e-13 0 0 5.323590667e-14 0 833.9106722 0 0 0.2932360415 4.898214794e-08 0 0 0 478.487434 6.287685868e-08 1.137055618e-16 4.391007131e-06 0 535749.4702 0 0 0 1.604347987e-10 1.854104079e-08 1.760004398e-18 6.455175659e-32 0 2.418255592e-15 1.240797777e-26 273.91655 0 0 0 2.322830726e-27 0.3121792688 0 0.0004615054595 2.68104976e-29 0 0 0 3.000933044e-31 1.356103672e-07 0 0.8449491377 0 7.134576869e-26 0.001034927114 5.643646805e-08 6.533291632e-19 0 0 1.94622259e-36 3.110526273e-07 0 6.629616527e-14 0 0.07106684665 0 0 0 5.369430463e-05 0.311777905 0 2.206933453e-29 0 0 2.508378807e-13 0 3.961226331e-19 0 0 0 0 0 0 0 2.012327063e-20 1.627698123 0 0.08344923903 0 0 0 0 8.467752481e-25 0 0 6.604621667e-05 0 0 0 0.0001736760165 0 0 1.055835708e-12 0 0 5.298280371e-06 0 0 0 2.886191568e-09 4.159203149e-14 0 694.1030168 3.258300415e-13 895038.37 2.794174349e-24 0 0 3.644838591e-20 1.326753909e-25 0 15787.82492 0 1.391506805e-05 0 0 0 0 0 0 0 0 0 0.0003438279216 0 0 1.254836945 0 0 0 0 0 0 1.489894573e-22 0 0 0 0 21.53537149 0 0 2.602237816e-15 0 3.875545616e-22 0 0 0 6.095683997e-06 0 0 8.140959018e-08 0 0 0 0 2.51860882e-07 0 0 1.525147584e-09 0 0 3.976758967e-09 0 0 0 0 0 0 50431.83761 0 0 0 0 0 6.549824188e-10 0 0 7.739968009e-16 0 0 0 0 0 0 0 0 0 0.02310930795 0 0 0 0 12827.49809 178.1613866 0 1.3172009e-13 0 0 0.1831290974 0 0 0 0 0 +14.24567186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.079585207e-13 0 0 0 0 0 0 0 0 0 0.1582967685 1.871249586e-21 0 0 0.0001648747689 6.890867394e-27 0 0 0 3.578509108e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.491495209e-07 0 0 0 0 51.0527803 2.256651515e-21 0 5.037467567e-15 0 0 0 2.767744879e-05 8.585185575e-07 3.004791234e-10 0 0.0002588173701 0 0 0 0 0 0 0 0 6163.757695 0 0 8.40605607e-16 2.066740202e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.284673531e-09 0 0 0 0.2506491179 0 0 0 0 2.441689275e-09 0 0 0 129.2694183 0.0002600472638 0 0 0 0 7192.275328 0.006657887328 0 7.120868744 0 6.358105552e-17 0.0005721984075 5.36371897e-14 0 474.0461629 0 2.382389638e-17 1.346855095e-13 4.220792801e-15 0 0 0 0 183.7299534 0 0 1.19066845e-05 0 0 3.874363987 0 0 4.805230894e-23 4.723677949e-11 0 8.12134036e-08 2.627823174e-06 317.8164104 1284439.847 0 0 0 0 0 4.915083402e-05 0 267229.6924 0.0003901519064 0 0 11.93442428 1024506.898 0 3.943736209e-08 0 333.5973248 1999872.988 0 0 0.007398458612 0 5.663895319e-19 0 1.076197551e-06 0 2.261672848e-10 0.1034562519 2.318482776e-21 0 0 0 0 1.486453515e-06 0 0 0 0 1.113307395e-12 1.531539343e-18 0 0 0 0 0 0 144461.4019 7.527759026e-27 3.166131175e-05 0 1.09600211e-05 0.4707695839 0 0 1.642634475e-14 1.970313226e-14 0 0 624932.0736 0.002935835848 0 80.40869347 0 0.004395517305 0 0 5.35862612e-11 0 5469.688787 0 0 0 0 0 0 0 3.449855094e-30 7.947505881e-05 4.381479207e-12 0 0 0 0 0 0 33378.53356 0 0 0 0 0 2.327660992e-06 8.668277319 0 0 0 1.651418947e-12 7.140680675e-12 0.5423957112 0 0 0 0 0 129.4865155 0 0 0 40868.74949 0 0 0 0 0.0131582324 0 6.239459442e-29 0 0 0 1.698286077 0 2.013389649 0 0 0 1.408608294e-11 2.019129017e-30 0 3.545327464e-17 0 0 0 0 0 0 0 0 0 0 1.628907884e-09 0 0 +0 616.8884333 912462.1384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.203091343e-13 0 0 0 0 0 0 0.002708871823 0 0 3.816717733e-05 9.137591334e-19 0 0 0 0 0 0 0 0 0 0 4.355996495e-05 0 0 0 0 303.9439214 0 0 10617.68378 8.118860307e-38 0 0 3394.722297 2.972018741e-15 0 2.620077945e-13 0 0 2.521655761e-07 0 1.215292517 0 1.156105774e-22 0 0 0 0 0 0 0 0 5.04930971e-22 0 0 0 3.468976283e-12 0 0 0 0 0 0 0 181201.4133 0 0 0 7.44157844e-15 0 0 0 0 0 0 9.668894627e-27 2.424092156e-11 0 0 369890.9717 0 0 41.288902 0 10.33614754 0 0 0 5.705982782e-08 0 0.001156155616 0 0 1.251536842e-08 0 0 0 0 1.227488209e-08 2.105848914e-28 5.993205127e-08 0 0 3.315511618e-28 0 0 0 0 4.519102839e-07 0 1.566972765e-26 0 0 0 0 0.0001972020545 0 0 0 7.007882111e-05 0 2.570931129e-20 0 0 1.176853176e-06 0 2.771045297e-08 2.021445184e-09 0 2.545625396e-20 5.067597438e-25 13.25008804 4.605548087e-30 0 1.952649351 1.203364855e-22 0 4.686939544e-05 0 0 2.73189836 2.022066549e-05 0 3.92830034e-18 0 0 0 0 8.023208837e-18 0 3.979410203e-05 2.612260582e-12 0 0 0 0 0 0 0 0 0 0 36688.34289 0 0 0 0 3.917424391e-26 0 0 0 0 0 0 0 0 213.6752663 2.686855068e-25 0 0.0008081972753 0 0 0 0 0 0 0 0 0 0.002580206084 0 0 3402928.664 0 0 0 0 0 5.426915779e-25 7.766393915e-07 1.64298227e-16 0 0 0 0 0 0 5.769980459e-05 0 0 0 0 0 0.0105095911 0 0 1.40971133e-09 0 0 0 0 2.200782614e-29 0 0 3.103486195e-09 6.133273275e-15 0 0 0 0 0 0 0 0 1.39302115e-15 142.5212332 0 11.16700693 0 0 0 0 0 0 1.926737334e-05 0 0 0 0 0 0 1.656400579e-17 0 0 0 0 1.664260402e-06 0 0 0 0 0 0 0 3.682379419e-27 0 0 0 0 1.222041438e-25 0 0 0 0 0 7.367992298e-07 0 0 0 +0 0 0 0 727246.0325 4.957827105e-33 0 0 0 0 0 0 0 0 26.5940051 0 5.225647469e-27 0 0 0 0 0 0 1.230463019e-30 0 3.922699685e-34 0 0 0 0 0 0 3.63745069e-08 0 0 1.271994572e-12 0 0 0 0 0 536447.5697 1.05737152e-05 0 0 0 0 0 2.268811897e-17 0 0 0 0 0 0 1.348351968e-07 2.532618813e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 224.1700794 0 0 0 0 1.096440342e-17 0 0 0 0 0 0 0 0.0001380751768 0 0 2.087788962 0 1.092972817e-18 0 0 0 0 0 0 7.050975865e-11 125717.5259 0 0 1.098766951e-19 0 0 0 0 0 1.184722372 0 0 0 0 3.032079722e-12 0 0 7.446167531e-14 0 3.850160794e-13 0 0.06231751962 3.128674246e-15 5.31598877e-10 2.562153352e-09 0 0 0 2.848301551e-10 0 0 0 0.0001685361908 0 0 1.389914546e-06 4.387247922e-09 0 1.970388151e-17 1987.511845 0 0 1.989072429e-20 1.63507195e-07 0 0 0 0.002131255561 0 0 3.726415505e-18 0 0.0002053602838 0 9.115704448e-07 9.864472508e-17 0 5.166100407e-32 9.618940568e-06 1.197443786e-09 0 0 0 3359.379336 4.03690356e-09 1.108324515 0 985.8450587 0.1919542617 1.095464463e-22 0 0 0 2.079143531e-05 0 0 0 115129.7001 0 1.761381922e-05 5.276218046e-09 5.095301673e-29 0 0 0 1.898026616e-20 0 0 1.239696464e-29 8.433358162e-05 0 2.967888949e-16 0 0 0 337750.3245 0 0 0 0 0 0 0 0 8.637072077e-09 2.284141197e-29 0 0 0.07145045601 0 0 7.492444159e-14 0 0 2.688819457e-28 0 5.593277949e-15 0 0.01661379091 0 0 0 0 0 0 0 0 0 1.831981812e-20 0 38.1297497 0 0 0 9.898215082e-05 0 1.886627814e-24 0 3.10908143e-23 0 0 0 0 0 4072.585024 0 0 5.565080621e-40 0 0 0 7.472253765e-26 1.040118225e-15 0 0 0 2.797444284e-10 0 0.09716494671 3042.887936 0 0 0 5.055238446e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2078513276 0 0 0 2.711215868e-06 0 3.503787478e-15 0 0 0 0 0 0 0 0 23.87144091 4.830915613e-21 5.679388826e-20 0 0 0 3.579005872e-17 0 0 0 +0 0 0 0 0 2.060000597e-13 0 0 8.175944916e-11 0 0 0 0 0 0.6468864737 0 0 0 0 0.04213255026 0 0 0 0 7.299029881e-05 0 0 0 0 0 0 0 0 695.1765371 0 0 0 7.162861e-22 0 3.798433012e-27 0 0 0 0 2.853874537e-16 0 0 4.657290095e-05 0 0 0 14226.61685 0 0 2.39317375e-31 0 0 0 0 0 0 2.586649435e-12 6.150625802e-23 3.709296089e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.754125166e-10 0 0 2.857718002 0.0006605250224 0 1.93269764e-09 0 0 0 1.316318535e-13 0 5.47369429e-28 0 0 1.107349594e-08 0.1687448867 0 0 0 0 2.404738373e-25 0 4699.424279 0 0 0 0 0 0.0007097501908 0 7.166461158e-11 0 0 13.30966322 6.150159818e-26 8525.307997 0 0 0 7284.233033 5.065092467e-28 0 0 1.985775138e-07 0.5423253153 0 0 0 0 0 11715.87825 0.03213725145 3.556547417e-16 0 0 3.392872971e-14 0 0 0 0 0.03611808166 0.005684269135 6.260163429e-21 0 0 1.437484065e-05 0 9.267352053e-19 8.398340602e-20 0 0 0.0004903221254 0.001981086324 1.828382162e-13 0 82.94601751 0 1.433166047e-24 0 0 0 0 0 0.0001461657316 1.840156581e-22 0 0 46710.60408 0 0 0 5052.729707 0.1843753413 0.0004781659389 0.1106594801 9.788111793e-14 1.430129076e-06 7837.524365 0 7.634270466e-13 0 1.71320937e-10 399037.4705 0 0 0 0 2.125678499e-08 0 0 0 1.186300867e-27 3.104105662e-27 0 0 5.128741341e-14 0 0 0 0 0 0 1.775767159e-14 0 0 0 0 1.854181531e-05 0 2.500765624 0 0 0 2595504.115 0 0 0 1.414457741e-06 0 0 0 0 1.578208876e-19 0.004073947214 0 0 0 0 4.833513141e-11 0 0 0 0 0.003081219917 2.137443224e-06 0 0 0 1.434651553 0 3.59373941e-19 0 171847.632 70.71385516 0 0 0.0002735921914 0 6.291094582e-08 0 0 0 0 0 0 0 0 0 3.521296418e-07 0 0 0 2.654747426e-17 2.503297889e-22 0 0 0 0 0 0 0 0 11.40574984 0 0 5.947117154e-27 0 0 0 0 0 0 7.341744762e-05 0 1.759068215e-09 0 1.120690089e-14 0 0 0 0 0 0 1.051823635e-10 0 0 5.583547542e-12 0 644.14069 0 0 +0 0 0 0 0 0 0 0 0 2.624356164e-17 0 0 0 3.825980061e-21 0 0 3.645742346e-06 1.936874672e-16 17.4239689 0 0 0 0 0 0 4.185264419e-25 0 0 0 0 2.918365429e-10 1.44792597e-09 0 0 0 0 2.609482164e-18 1.412439274e-12 0 0 0 0 839173.9733 0 6.95234872e-44 0 4.319759221e-08 0.0001909882669 0 13309.29369 0 0 0 0 0 0 0 0 0 4.643738386e-31 0 0 0 0 0 6.298103856e-28 0 1296.715078 0 0 0 0 0 1.2765577 0 0 0 0 0 0 0 0 5.55352367e-07 0 9.695048488e-17 0 0 0 0 3.08819023e-38 6.235486494e-10 2.191583699e-12 1.469685635e-11 0 0.05018631131 0 0 7.691532787e-16 0 0 0 0 8.528217255e-09 6.21437308e-12 0 3.792014352e-08 0 0 0 1.334017321 0 0 1.921609933e-29 0 0 1.051813818e-08 4.146631075e-34 0 0 675924.3682 0 0 0 0 3.707983052e-16 0 2.001822015 0 0 0 0 2.545202216e-14 3.941975834e-12 5.756177728e-25 0 46284.14895 0 0 0 0 0 1.738434338e-08 5.53866831e-14 0 0.02132392086 3.27755722e-08 0 2.705234646e-18 2.357764035e-28 3.497860956e-20 4.816008142e-14 14.4921909 5.114811181e-05 0.02889670959 0 0 396471.4957 0 1.595898455e-12 0.002172450413 0 0.3480867663 0 0 0 0 1.858025553e-14 0 1.060236757e-29 0 0 0 0.7142767273 124905.6205 0.08962571342 0 0.0003830765393 1.807427344e-14 0 0 0 0 0 0 0.002089364837 0.0002613458873 0 8.389311883e-26 0 206681.8937 0.0001441144271 0 0 7.361787946e-06 0 0 0 0 0 0 1.889222999e-17 6184.382427 0 0 0 0.05886001074 0 463.2054145 0 0 0 0 0 0 2.893535625e-23 0 3.808422993e-05 110259.6759 5.842590531e-07 0 0 0 0 0 4.17505849e-14 0 233720.6273 0 0 0 0 1.789531111e-11 0 0 0 5.056777589e-29 238.4065023 0 0 0 0 0 0 0 2.867698871e-18 2.427159722e-06 0 0 0 1.111539652e-12 6.893473882e-11 0 0 0 0 0 0 0 0 0 0 1.048243561e-27 0 0 0.007150985984 0 0 0 0 0 0 0 0 0 0 0 0 0 2.507238712 0 0 0.3067321505 0 0 1.257936631e-20 2.924738007e-11 0 1.453023074e-11 0 0.02987441404 0 0 0 0 1.30749783e-06 0 0 0 0 0 +0.0663087639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.885131932e-06 0 0.002809708462 8.141919329e-11 1.733690905e-14 0 0 5.746381265e-13 0 0 0 0 0 0 0 0.06910539829 2007626.66 0 0 0 0 14.50153527 0 0 0 0 0 0 0 0 8.631050369 0 0 4.705975216e-11 0 0 0 0 0 2.741113192e-14 1.9321928e-07 0.008642897294 0 0.0009703777695 0 0 0 0 0 0 0 0 0 0 0 0 1.486064653e-15 3.296479134e-25 1.255564016 0 0 1199.364769 4.712053889e-05 0 0 0 1.078254737e-37 0 191499.695 0 1.145824323e-29 0 0 37940.06853 6.151721336e-05 1.136392655e-10 0 0 0 0 0 0 0.009935658522 6937.670158 5.596694972e-24 5.905188324e-26 0 0 0 5.815400421e-41 0 1.747744082e-33 0 0 0 0 0 0 360.5374395 0.0003771576129 5.083837928e-14 0 0 0 1.785889073e-18 0.845714866 0 0.0004273162013 3.038902457e-09 21.3244297 0 0 0.2937451502 0 0 0 0 369.682357 6.105994924e-08 0 0 2.844718019e-24 0 0 0 0 6.208996612e-17 0 4.910596544e-06 0 0 9.911656057e-09 0.2350912346 0 1.473589722e-18 72.98205722 7.066982002e-05 0 0 0 0 0 1.153583118e-25 141165.0034 0 6.222925914e-31 0.05171411192 0 0 6.561219728e-05 1.434698587e-11 3.457891671e-11 1.872485183e-15 0 0 0 0 0 0 26524.72905 2.542878548e-14 0 2.018727262e-27 2.304536645e-23 1.270948411e-21 0 10653.32575 0.3123519459 3.057566407e-28 0 0 7.365760345e-31 0 0 0 0 2.462067863e-07 0 7.340812417e-11 0 5.475260695e-27 0 6.20836954e-18 0 0 0 0 1.125766879e-19 6.741033315e-11 0 0.3408913283 0 6.76556542e-24 4.030393427e-15 0 0 0 0 2.206915971e-19 0 0 0 9.056163867e-13 0 3.693296273e-10 0 0 0 0 6.878698956e-19 0 0 5.672235918e-05 2.571324378e-14 0 0 0 1.282563429e-24 123989.9746 0 0 2.918396619e-33 0 6.06232503e-09 0 0 0 3.474859531e-19 412243.9173 0 245685.7133 0 0 0 8.68104676e-23 0 0 0 0 0 0 0 0 0 0 0 1.093671228e-26 0 0 0 0 8.179068726e-14 0 291.4110986 0 0 3.93367167e-23 0 7.633864669 259.0676892 0 0 0 0 5.906711702e-14 9229.756812 0 0 0 1.891276229e-24 0 1735.674242 0 3.293894662e-21 0 0 9.504769417e-08 +0 0 0 0 0 0 0 0 0 0 0 0 9.252726113e-09 0 0 0 0 7.277142004e-13 0 0 0 0 0 0 0 0 2.622145552e-06 0 0 0 0 7.769056793e-08 0 0 0 0 0 0 0 8.872605034e-13 0 0 0 7.101467647e-28 0 0 5.863019961e-27 1686.633542 0 0.00180670747 0 2.662600028e-08 0 0 0 0 0 0 0 1.144637646e-28 0 0 0 0 0 0 0.1108382883 0 0 0 0 0.000175865604 0.02179576655 0 468.4500175 0 0 0 0 0 0 0 377603.136 0 0 0 9.245564608e-08 0 0 8.050345993e-07 2.117670275e-24 693.7083381 0 0 0 0 6.664355041e-07 0.01528821081 0 0 1058.559524 13911.2344 0 1.173033775e-17 140876.1262 0 0 0 0 0 0 0 6.07854207e-26 2.048053156e-24 3.776664638e-05 0 0 1.288087685e-26 0.06831387751 0 0.2869275241 0 0 6.670992932e-11 0 7.530518849e-26 0 0 0 0 0 0 18.07894465 0 0 0.08043970466 0 1.00311992e-20 0.9298077893 0 3.309002822e-26 0 4.296047183e-12 0 0 12240.36171 0 1.198571719e-10 3.724374722e-23 0 0 1.948937902e-29 0 0 3.813931882e-17 0 0 0 0 0 0 0.3829327844 5.559184892e-34 5.955784633e-40 1.930082665e-19 4.804429737e-30 0 0 0.0003665984442 4.117147713e-06 0 3.239285151e-08 0 0 0 5.536701049e-07 0 0 0 0.008987152743 1071.983951 1.35514115e-28 0 6.13901194e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.619113163e-15 0 7.464125356e-17 0 0 0 0 7.188441302e-09 5.821532228e-21 0.03828306081 0 0 0 0 0 0 1869.267158 0 0 6.012374922e-30 0 0 0 0 0 435182.0395 0 0.0004491695941 0 6.520177077e-10 0 52428.30173 0 5792.152458 0 0 0 0 3.543341874e-29 0 0 0 0 0 0 0 0.3984922718 0 0 0 3.249025059e-05 0 0 0 4.513064358e-24 0 0 0 1.868670196e-29 3.231135279e-12 0 1073926.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 95360.9449 0 0 0 4.925364296 0 4.400197558e-09 0 0 0 0 15534.05622 0 0 0 1.73887892e-13 613.9435447 0 0 0 0 0 0 +0 0 0 3.801175227e-11 46382.47881 0 0 0 0.004277239413 0 0 0 0 324891.6903 0 0 0 0 0 0 43238.86317 0 0 0 0 3.116661832e-35 0.2868523074 0 0 0 0 0 0 0 0 4.543948026e-21 0 1.782119865e-27 0 0 0 0 0.5241043497 0 0 7.240497236e-05 0 9.039700206e-07 0 0 0 0 0 0 0 0 0 0 0 2.022597429e-09 9.115122933e-28 0 292.0862833 0 0 0 9.409825141e-15 0 0 0 2.583630723e-18 268949.7799 0 0 0.02179726102 0 2.234544201e-10 6.216986148e-10 0 3.30508293e-30 0 5.876116495 0 0 1.103137808 0 0 0 1.6521167e-05 10.16508689 0 0 0 0 3.354482093e-12 0 0 0 2.256974275e-08 0 0 0 31.82990454 0 0 0 0 0 0 0 1.889767248e-34 0 7.881866856e-08 0 0 1.47499841e-10 0 0 4.086225672e-17 0 0 3.637829778e-15 4.867589446e-20 0 0 0 1.405009315e-20 0 0 0 0 20871.79564 0 0 6.054295218e-05 12089.87539 8.190869228e-10 0 0 1.278674089e-09 0 0 0 1.349359041e-13 2.86507462e-15 1.848066266e-16 6.82868739e-18 0 0 0 0 0 0 0 0 5.320802234e-09 0 6.735068049e-20 3.192576357e-07 12.27029132 0.0001688090608 2.420054107e-13 0 0 0 0 1.035731132e-26 0 0 0 0 7.07774583e-07 0 0.000800551304 0 0 2.056818744e-24 0 0 0 0 0 4.613780551e-12 0 0 0 0 0 0 0 0 0 0 0.0007660984314 0 0 0 3.469105967e-11 0 1.3277829e-08 0 0 0 0 6861.965116 4.521056275e-23 0 0.002483104499 0 0 1.249013199e-09 0 0 0 4.594373659e-24 0 0 0 3.371327918 0 0 0 3.428032371e-10 0 0 0 0 0 0 0 0 9.151528731e-25 0 0 0 0 0 7.803609061e-17 0 1.45885446e-26 0 0 0 0 0 0 0 0 0 1.471513309e-24 0 0 3.848155015e-10 0 0 0 2.767633984e-12 680.1098388 0 0 0 1.552923207e-24 0 3.089074957e-07 0 40875.22489 0 0 0 0 0 3.51569008e-09 0 0 0 0 0 1.696441968e-14 1671.515262 1.413338807e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.950743534e-28 1592.168239 +0 4.519567021e-26 0 417162.2141 0 0 3.966443119e-16 1.801707954e-05 0 0 0 0 0 0 0 0 0 0 0 22.78533049 0 0 0 0 0 0 0 0 0 1.589572447 0 0 0 0 0 0.3150464355 0 0 0 0 0 0 1.188569563e-07 0 0 2.736870931e-23 6.095526502e-23 0 0 0 0 0.000734272906 1.752236721e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.154301991e-28 0 9.232768361e-06 0 0 0 0 1.755340904e-24 0 0.03057018765 0 1.191038774e-13 0 3.93812619 0 0 0 0 0 0 0 0 0 0.0006388406908 0 0 41508.58562 0 0 0 0 0 8.559733865 0 7.748644318e-31 0 0 0 0.0001026987749 0.000170318308 9.446255444e-07 0 5.516624838e-11 2.133172559e-16 2.922693884e-14 3.725227553e-05 0 0 5.598494465e-09 0 0 0 0 1053.33995 0.001034834592 4.828259321e-09 5.287118313e-05 0 2.323114916e-32 0 0 0 0 0 0.0457280803 2.203425449e-10 0 8.856621803e-05 4.46146205e-22 0 0 0 0 0 0 0 0 0 0 3.490326802e-10 5.808058782e-30 1407111.177 6.871087684e-08 0 0 0.2783830268 0 0 0 0 0 5.443424555e-22 0 0 20.47680177 1.714280611e-11 0 0 1.553398304e-24 0 0 0 0 0 3.274222559e-21 3.368485117e-08 0 0 0 0 0 0 123.097077 0 0 0 1.808732837e-11 0 0 0 2.416126457e-12 0 301.3223967 1.559526463e-21 5.830497296 7.060651211e-24 0 0 0 202850.8008 0 0 0 3.202267944e-08 0 2.690097913e-26 2.366507704e-06 0 0 0 0 0 0 4.56690622e-22 0 3.630321542e-16 0 1.836405122e-12 0 1.298788614e-27 0 1.639450985e-11 0 0 0 0 0 0 0 0 0 0 0 49.49250326 0 1.679719198e-05 1.755404022e-12 0 0 1.233334245 1.118687275e-08 0 0 0 0 0 0 2.768794143e-12 0 35.48963466 0 0 0 0 0 9.02139985e-15 0 0 0 1.012407708e-05 0 215263.0702 0 0 0 0 15.06965302 1.509936823e-12 0 0 0 1.486691706e-32 0 496415.9556 0 0.01130183676 0 0 0 0 0 0 0 0 0 8.782724368e-06 0 0 0 0 0 1.771464626e-33 0 0 0 0 0 0 0 +0 4.998442524e-37 8071.043918 1.18936863e-05 0 0 0 0 0 0 0 0 0 0 0 363771.9362 0 0 4.994377648e-30 6.463296688e-18 0 0 0 0 0 1.3051149e-16 246.7887819 0 0 0 0 0.004983732516 1.108848287e-12 0 0 0 0 0 0 7.882473952e-07 2.449463183e-11 0 0 0 0.05148627523 0 9.712895514e-37 0 0 0 0 0 0 4.54545607e-10 0 0 0 0 0 0 0 9.287148771e-09 5.692814252e-14 0 0 0 0 0 2.66405385e-06 851.7513651 0 0 1.167309008 0 1.48933464e-27 1.207544905e-28 8.40622813e-07 0 68953.99639 0 0 0 0 1801197.262 12.37760018 0 0 0 0 0.1792680761 0 1.44028934e-21 1.053013298e-08 0 3.903945381e-16 0 1.806651726e-16 0.05726401 0 0 4.537529142e-19 0.0003391813538 0 0 0 0 1.017434685e-10 0 5.631516336e-14 3.916864284e-07 2.416137448e-16 3.547524887e-08 0 0 88002.90644 5.786591858e-14 0 0 652003.162 8491.346378 0 4.100553497e-14 1.828686519e-24 0 0 0 0 0 0 0 0 0 0 0 3.509822581e-05 3.591820777e-18 0 0.2271897203 1.689361697e-25 0 0 0 2.805735196e-10 7.152281315e-24 0 1.31416233e-30 1.010076489e-27 1.197421816e-20 0 1.097262353e-08 0 0 3.039750611e-12 0 3.270502345e-05 0 0 0 5.714801393e-05 0 6.623309376e-21 0 4.218163497e-09 1.91754781e-20 0 0 0.6049147988 0 0 0.1727922683 0 0 0 0 0 3.726349791e-06 0 0 0 0 2.1983813e-09 0 1.055856622e-05 1.039456684e-23 0 369314.5658 406.3449432 0 0 0 1.924030987e-16 0 0 0 0 90.77185728 0 0 0 0 0.8419786647 0 0 6.431178805e-20 0 0 0 0 0 0 0 0 0 0 0 5.336411406e-08 0 7.338306918e-05 0 0 0.0005045286123 0 49381.28796 0 0.009265521794 0 0 8.535128632e-10 0 6.896770663e-29 0 0 0 2.12352467e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2498.55709 0 0 13.00802219 0 0 5.096907505 4.303708251e-26 0 0 0 0.0002411765704 0 0 0 0 0 0 0 0 7.221451966e-32 0 1.010651591e-16 0 0 0 7.764083762e-26 0 0 0 0 2.93936924e-27 1.071851129e-08 0 0 0 0 0 0 0 0 3.446716406e-19 0 0 0 4.41746793e-29 0 0 1.544196723e-12 8.414957963e-19 0 0 +0 0 0 916994.2481 0 0 0 0 0 0 0 2.187106528e-18 0 0 0 0 0 0 4.005124368e-17 0 0 0 2.291056282e-05 0 0 0 0 0 0 0 0 1880.659995 0 2.738549538e-27 654.7701895 0 297.5831578 0 3.97164958e-22 0 0 6.340820336e-06 1.353188348e-29 0 6.09931671e-29 1518.375383 0 0 0 0 1.409647521e-25 1.479237108e-13 0 1.07898426e-25 0.02650452292 1.570302762e-28 0 0 0 0 0 0 0 0 0 0 8.264300581e-06 88545.49919 0 0 2.358276757 0 0 0 0 6.122137238e-09 3534388.127 0 0 0 1.244527836e-24 3.4812626e-07 0 0 5.51139514e-10 0 0.01256582489 8.228008523e-08 116.0413475 4.875606514e-07 4.519279975e-22 0 0 5.090434653e-26 0 0 0 1.746021958e-13 0 0 0 0 0 0 0 2.00725695e-13 0 0 0 0 9.726002023e-20 0 0 0 0 3.941318901e-22 0 0 1.524614109e-13 2.412492246e-12 0 0 1.083376642e-16 0 6.480916717e-21 5.124330547e-11 0 2.561105597e-10 8.52536638 0.03104804706 0 3.862375611e-28 0 4.1102125 0 5.927353426 1.395090106e-10 3.876963822e-28 0 0 0 0 2.087049682e-21 1.41601947e-11 9.53687914e-18 2.345591449e-22 0 4.59935019e-18 0 0 0 0 0 0 1.506325358e-13 2322553.974 5.084401908e-25 9.070590027e-34 0 0 0.02539625029 0 0 0 0.0001975002915 0 0 5.738686861e-05 0 0 1.657469893e-31 0 0 1.123276149e-21 0 0 2.940951967e-12 0 0 0 3.480074825e-05 0 4.327961213e-21 777.8644888 0 3.071966348 0 0 0 0 0 0 0 0 0 0.001535758774 0 0 1.96804112e-45 2.498772346e-05 0 0 0 0 0 0.006652346502 0 3.017389792e-12 0 4.603884486e-13 0 0 0 0 6.417679679e-11 0 0 0 0 8.638442324e-12 0 0 0 0 0 0 6.139439129e-12 2.826145013e-13 2.367370428e-27 0 0 0 0 0 0 0 0 0 0 7.729480614e-19 0 0 9.193359977 0 0 0 6.99389236e-08 0 0 0 0 0 0 0 0 0 0 425002.7391 7.526062125e-18 0 0 0.001492117455 0 0 0 0 0 0 0 0 5.378840535e-31 0 0 2.025145508e-12 0 0 0 0 0 0 9321.44561 0 0 0 0 0 5.113168778e-21 0 0 0 0 0.001361437133 0 0 0 0 0 0 0 0 +2.283999585e-11 2.321552526e-09 0 0 0 0 0 0 0 0 0 0 0 0.3346420653 0 0 0 0 0 0 0 0 0 0 0 0 0 1.470605405e-05 9.334547559e-05 0 0 0 0 0 1.443043325e-05 0 0 0 0 0 1.434042805e-09 0 2.115569641e-06 5.872144225e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 57768.17012 0 0 0 0 0 4.229223029e-14 0 1220.183149 0 2937.96563 0 0 0.001783509471 0 0 4.028226193e-12 0 6.754859993e-13 0 0 0 0 0 0 3.328717745e-05 0 0 4.964840569e-24 3.073816224e-15 1.441291737e-19 0 346251.5828 0 3.69828663e-16 2.185908135e-14 0 4.304750153e-13 5.287013408e-08 0 0 0.008761212997 44.22909635 0 0 1.200101554e-18 0 0 0 0 0 0 1.412367019e-25 2.35474288e-07 0 0 2.109761307e-11 0 4.952257452e-08 8.511197387e-09 0 0 0 0.02039352483 0 3.620412094e-13 2.600470614e-09 0 0 0.0001020576411 0 119.3654023 0 0 3.237682321e-23 0 0 0 0 0 0 1.752516267e-11 4.501603611e-08 0 0 0.0005840071394 9.888830576e-15 3.739893006e-09 1.565717728e-16 0 18.65127116 1.962394564e-18 0 0 0 0 0 0 3266878.367 0 0 0 11055.2848 0 0.004253192551 0 1.862061078e-19 0 0 743254.1812 21562.68049 1.193420545e-16 0 1.415048971e-15 0 0 1.190542136e-26 2.969501778e-12 9.752146919e-10 1.75240017e-20 0 0 0 147.6771852 1.176165101e-05 1.101022114e-08 0 0 0 0 0 0.9499792231 0 0 0 1.883333524e-21 1.068973025e-11 0 1.527399066e-25 0 0.000446870465 1.130081541e-11 0 0 0 0 2.973637957e-10 0.0001192012115 0 0 0 3.43101825e-26 0.03577825526 0 0 0 0 0 0.1666652684 0 0 0 0 1.680810195e-15 0 0 1.25025288e-07 0 4.733024082e-11 1.080919169e-29 0 0 2.48663141 0 0 0 0 0 0 2.599223717e-27 0 0 0 4.664275117e-12 3.950270323e-11 0 9.465297128e-25 0 0 0 0 1.706771899e-34 0 0 1.961334519e-18 0 9.308257055e-06 0 0 0 1.073392956e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.68413253 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001630419187 0 5.296740052e-06 0 7.888201987e-19 +# Errors [sample_PSD/image.dat] I_err: +0 0 1.689260766e-36 2.305722588e-14 161.9566686 0 0 0 4.898438598e-10 2.390612428e-20 0 0.0242950363 5.9658636e-24 0 0 2.788061597e-31 1.323845896e-15 1.062072201e-10 0 0 0 0 0 0 0 4.362103895e-32 0 0 0 0 0 0 0 0 0.0004317308313 0 0 0.00637832701 0 2.255696953e-05 1.335902933e-09 3502.231395 0 9.769602676e-05 1.422534989e-11 0 0 2.297127305e-11 0 5.669225407e-26 4.33110119e-07 0 0 5.185632217e-25 0 4.425600258e-08 53.54356916 0 0 0 8.332138009 0 9.760782206e-19 3.727275459e-05 0 0 0 0 0 0 0 2.203970198e-11 0 0 1236.48444 0 0 465.1363225 0 0 0 5.912715513e-20 0 5.414777322e-12 4.481368873e-17 0 0 2.623535524e-33 0 0 1.070965973e-16 0 5.261147853e-21 206042.1995 0 1.384694738e-37 0.002109353269 0 1.104970882e-17 0 7.13976979e-16 0 0 0 4.942382051e-21 0 0 9.139995171e-34 0 0 0 0 0 0 26539.62674 0.0005885242156 0 0.135265707 7.303552516e-22 3.660395364e-06 0 0 0 0 0 0 2.416967785e-27 0 8.616774708e-06 37.05424372 0 0.0005193894572 0 0 181.852197 1.867798934e-09 0 0 0 4.231415359e-05 3.089513165e-17 0 1.634655987e-05 0 0 6.010823391e-17 0 0 0 0.0007328972407 0 0 0 0 1.754111852e-16 1.084869646e-11 2.078208883e-13 0 0 48637.63264 0.0008770010002 0 7.094473086e-11 0 0 2.042256122e-09 0 0 0 2780.015789 308599.4459 0 8.58817746e-17 0 0 0 0 0 0 0 3.615048784e-11 0 0 0 0.04585771634 1.506811736e-23 0.7622268778 0 4.82637537e-27 0 6.974834482e-09 0 0 1.492307235 39071.73926 3.266184101e-10 2.848268953e-25 0 4.944277504e-24 0 9.144388956e-06 0 1.660500266e-06 0 0 6.353291819e-13 2.297093734e-16 1.73530414e-05 0 0 0 2.038653552e-05 0 3.562334306e-27 0 0 0 3297.229259 1.192711532e-22 0 0 0 0 0 0 3.691538701e-11 361348.2362 0 0 4.59177917e-36 0 0 1940.604203 0 6.345464776e-17 0 0 0 1.710811239e-08 0 0 0 0 0 0 1.459268111e-26 0 0 0 1163.714387 0 0 0 0 0 851.2760936 0 0 23.77817982 0 0 0 8.695259826e-06 0 0 0 1.578869349e-11 0 0 3.644176741e-12 0 0 0 0.01420715105 0 0 0 0 0 6.629321181e-12 0 0 0 0 0 0 0 0 0 0 0 0 2.440770094e-27 0 1.630782079e-16 0 0.01443059041 1.573691676e-09 0 0 +0 0 0.03366366304 0 0 0 0 0 5.99151141e-06 3.921404598e-09 1.259556709e-12 0 444.8159323 1.059661716e-23 0 0 0 0 0 0 0 0 4.517271846e-16 0 30.94427158 0 0 0 2.123187812e-14 5155.451727 0 0 0 0 0 0 0 0 0 0 0 1600.391701 0 0 0 0 0 0 0.1725062321 0 0 0 0 4.975550294 0 0 0 4.054306192e-30 0 0 0 0 0 0 0 5.259983323e-10 0 0 0 0 4.255144778e-29 0 0 2.144165572 0 1.154729511e-27 0 0 8.390070512 0 42.94097403 0 4.82144632e-43 0 0 1.530434909e-16 0.174459155 0 0 0 2.902191965e-05 0 0 0 3.834813766e-06 0 0 1.490312963e-24 0 1.7043469e-07 0 0 0 0 0 0 691138.1513 0 0 0.003008397118 0 93.80430501 329411.3586 5.062836245e-26 145.0656896 0 1.339711727e-19 0 0 1.438821302e-05 1.99913784e-22 0 0 0 0 0 0 0 0 8.957326086e-12 2.273823772e-07 0 3.390374725 0 5.427823641e-14 0 0.0004378726482 1.186969959e-11 0.0004732382086 172.3397558 1.348805419e-19 0 4.316559175e-09 152.2144508 0 0 3.016874591e-08 0 0.0008333173433 0 3.102510186e-06 8.721105286e-20 0 3.757400101e-27 0 36.77092873 9.171821313e-07 0.02627439893 5.496461491e-12 1.498149129e-08 2.237915605e-37 1.323944977e-14 2.34101685e-21 1.930736928e-14 0 0 0 5.75993466e-16 0 0 0 0 1.769552026e-18 5.507719737e-05 0 0 320.6813567 0 2.745916878e-18 0 1.006868721e-06 8.289028512e-21 0 5.429908209e-06 0 0 0 0 2.193970291e-23 0 0 0 0 0 3257.22443 0 0 0 0 2.096358426e-11 0 0 2.501306696e-08 0.1024360766 0 0.0001164153264 0.03332430499 1.725926724e-23 0 7.569846714e-23 0 0 0 0 5.895132967e-14 0 0 0 6.090026095e-12 1596.562071 426.1095281 6.87670012e-20 0 0 0 0 0 0 0 0 0 0 1.002173882e-25 0 0 0 0 0 0 0 7.518187725e-14 0 0 0 7.921294244e-14 0 0 0 0 0 0 0 0 0 9.199601977e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.02445987e-06 0 0 3.81483985e-18 0 0 0 0 0 0 0 0 0 0 1.952843889e-12 0 0 6.449505342e-12 0 0 0 0.08997721964 0 0 0 +0 5.136463407e-08 280.0704746 0 0 4.92358239e-26 0 0 0 0 1.494303939e-22 2.973788465e-36 2.962139234e-20 0 8.38266857e-13 0 0 0 1.120413311e-10 0 0 0 0 0 0 853467.441 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.002269544e-26 0 1034.131412 1.841519988e-28 0 1.62969963e-16 0 0 0 7298.169388 0 0 0 0 0 0 0 0 0 0 0 0 0 5.821170524e-28 0 0 0 3.610670713e-06 0 0 0 0 0 0 0 8.385452251e-12 0 0.06263060745 3.582462476e-17 0 0 0 0 0 0 0 1.221784365e-21 0 0 0 0 2.24340229 3.644863085e-08 2.327327002e-22 0 0 0 0 0 0 1.573184304e-08 1.435341198e-28 53.87842321 0 1.197494915e-06 0 0 0 0 7.054578767e-11 0.04520899087 0 5.186871631e-27 0 0 62.67228343 0 0 0 0 6.337387524e-09 0 0 6.563347598e-44 0 0 0 0 0 0 0 0 0 7.973053379e-25 0.00380738032 0 0 0 0 8.106382363e-14 0 3.634431036e-10 0 0.007243138001 0 0 0 9.525678033e-27 0 0 1.238297943e-18 0 9.971698305e-20 0 0 0 0 4.052208151e-06 0 5389523.556 1810.402149 0 309.2632082 0 0 1.056417491e-17 0 0 1.602068942e-17 0 4.336001319e-25 2.545616304e-15 0 0.4397738303 1.902441089e-07 0 0 0 0 0.0004491277256 0 0 0 0 6.945268882e-19 0.5354624107 0 0 2201.511269 0 1.887448941 0 1027968.442 0 0.005462487396 0 5.348167217e-21 0 0 0 0 742.1706059 33.17663356 0 3.473403258e-07 0 0 6.987622556e-27 3.518422095e-13 0 0.2270068434 2.950347103e-05 0 1.843292407e-05 0 8.076249815 0 0 0 7799.963024 0 0 0 0 0 0 0 3.369175203e-23 0 2.420798666e-06 0 183525.8447 0 6.645883775e-08 0 0.1022647622 0 0 0 0 0 0 1.128318458e-08 0 0 0 0 0 0 0 0.001356652524 0 1.506953773e-29 0 0 0 0 0 0 6.455404784e-28 0 1.697905549e-07 0 0 0 272007.2718 0 0 7.980521411e-25 0 0 0 6.344925453 0 4.201490668e-13 0 0 0 0 0 0 0 0 0 0 9.882966016e-09 0 0 0 3.888015736e-29 0 0 0 0 1.228730013e-07 0 0 0 0 +0 0 4.040663206e-24 46.06144409 0 3.687787635e-20 0 3.335545832e-13 0 0 0 0 0 0 6.120790958e-23 0 0 0 0 0 1.867566486e-13 0 0 1.801286752e-21 0 8.806444989e-32 3.342843247e-17 0 0 0 0 401741.1818 0 0.8817168802 453197.2278 0 0 0 0 0 0 0 2209.793229 0 0 2.495265993e-24 4.129571253e-24 2.440714359e-11 0 5.494110829e-16 0 0 0 0 297.8148928 0 0 0 0 0 0 0 0 3.116392627e-11 9.772548069e-08 5.083141985e-20 3.052635029e-18 1.046731827e-12 0 0 0 0 0 0 1.011503191e-24 0 5.073201246e-11 3.146207502e-05 0 0 0 0 207.1282247 5.440756125e-08 278491.3605 0 0 0 0 0 0 0 0 5.088350838e-22 0 0 0 2.175146222e-15 316205.0538 1.17634432e-14 0 323613.3224 0 0 0 0 3.961946289e-10 0 0 8.951635892e-20 0 2.141103266e-28 1.858586635e-08 0 1.389918704e-12 0 0 1.112164623e-07 32053.68203 6.362398973e-28 3.44184847e-27 2.615891669e-08 0 0 0.2217717879 1737389.051 0.04670675351 0 0 0 5.34040375e-27 0 0 0.004900660098 0 1.439597203e-10 1.390907521e-05 0 3.88225195e-10 17903.34131 0 0 0 0 0 1.603647888e-27 0 0 0 8.552365888e-21 5.440958657e-25 1.954098342e-19 0.01012717349 1253902.945 3.748806576e-06 0 0 0 2.6416006e-21 13.10226714 2.613831504e-07 4.505495463e-22 1.682433359e-08 0 0.0001923619765 8.899620362e-10 0 0 0.0008392992334 0 1.265017374e-05 0 0 0 0 0 5.120522268e-05 0 0 0.001737760039 0 0 0 0 4.66370755e-07 0 0 0 0 0 0 0 0 0 0 0 4.060270319e-18 8.357876691e-10 0 6.422247423e-20 0 0 1.988324953e-09 0 0 0 0 0 1.887033971e-09 0 0 0 0 0.1535973761 0 0 0 0 0 10.52041345 0 0 0 4.500083616e-24 0 3.537628957e-11 0 0 4.919087661e-14 0 2.913365738e-09 0 0 0 0 0 0 0 0 0 1.73183443e-08 0 0 0 0 0 0 0 0 0 0 4.182245625e-08 0 0 0 2.007236647e-19 1.75052073e-07 0 0 0 0 0 0 0 0 2.476689111 0 0 0 0 0 0 0 0 4.565605318e-37 0 0 0 2.639082304e-27 0 0.2621100333 0 0 4.587353147e-26 0 3.282449308e-11 0 913131.2523 0 0 0 1.086442779e-05 0 1.380035649e-22 1.057788765e-13 922.9906563 0 4.096735295e-12 0 0 +0 0 0 0 0 0 2.275448926e-13 0 0 0 0 0 1.641733289e-28 0 0 0 0 0 0 1.074144173e-44 0 0 2.572338778e-06 0 0 0 4.437903375e-17 0 0 0 0 0.3990620219 0 0 1.154419166 0 5.824645929e-20 0.008939208478 0 0 0 0 0.006435570929 0 0 0 1.853179548e-05 4.782571886e-14 0 0 3.768708918e-20 0 434269.1709 0 0 4.725463805e-12 2.25023247e-19 0 0 3.298188606e-34 0 5.94036688e-41 5.462791906e-05 9.458036543e-11 0 0 0 0.001467751522 0 8.924124195e-05 0 0 0 0 8.650013615e-07 0 0 0 2.39658489e-24 1.280487358e-32 0 0 0 8.22282244e-21 0 2.602655593e-19 1.665835184e-13 0 0 0 0 0 0 0 0 1.248167263e-31 0 0 0 0 4.086594003e-21 0 0 0 3.30186173e-20 0 0 2.134312282e-09 0 0 0 4.057948059e-12 0 0.7742650534 1.744220968e-22 6.366939078e-10 0 8.562722174e-28 0 0 1.387883172e-08 0 9.01830163e-11 0 0 0 807385.251 0 0 0 0 0 5.601138891e-25 5.368415889e-06 0 2.090807566e-16 0 0 0 0 8.620396201e-08 0 0 0 3.421644898e-17 0 0 0 0 0 0.04807766243 4.085242283e-23 0 1.213653191e-06 1.344737606e-16 1.64575921e-13 2.435603744e-26 0 5.065748958e-10 2.658978113e-32 0 0 2.168569292e-06 0 3.360126354e-09 1.661493797e-18 0 0 0 3.098086345 0 3.905150021e-22 0 0 0 0 0 0 0.0004945794183 1.826607394e-12 0 0.00338667439 0 1.077139323e-08 0 0 0 249000.5506 0 2.436963307e-11 18.66619007 2.915214223e-25 277.2461687 0 1.067022789e-16 0 0 0 0 0 6.476305715e-07 0 2.246696035e-14 0.02388012022 0 1.915464278e-07 0 0 0 0 0 0 0 9.398966393e-17 0 0 0 2.073994368e-13 0 6.17517098e-22 0.03098863833 0 9.848061175e-23 0.003681445886 1.528028488e-16 3.928603309e-07 0 0 4.320575059e-07 0 5.028730851e-18 0 0 0 0 0 0 0 0 2.906765662e-17 0.001083052386 0 0 0 0 0 0 0 0 8.760311996e-12 0 0 2.071102781e-11 0 0 0 0 0 291.4831334 0 1.269408178e-21 0 60.55667172 0 6.421782494e-14 0 0 0 0 0 0 0 0 3.534078357e-10 0 0 0 0 0 2.438333211e-06 0 0 0 0 0 0.009303547835 0 0 0 0 0 0 0 1.314983959e-23 0 0 0 0 0 0 +0 1.015073253e-26 13847.5725 0 0 0 0 0 0 0 0 0 0 0 0 5.149460955e-14 0 0 3.208942378e-13 0 6.772111705e-13 0.008035610435 0 0 0 9.866807633e-24 0 0 0 0 3.977768201e-23 0 3.300413839e-23 0 6.100715556e-24 0 158.1531779 0 0 0 0 0 0 0 9.429087039e-07 0 2.336798259e-27 0 0 0 0 0 0 0 0 0 9.480244836e-14 3.085644392e-22 0 0 0 0 0 0 0 3.193016212e-06 0 0 0 2.153249452e-13 0 0 0 0 0 0 0 731.8225794 0 0 0 0 618685.224 0 1.216788541e-08 1.296414766e-12 0 0 2.066029006e-14 0 0 0 0 0 0 0 0 1.266234592e-13 0 0 0 0 7.497666406e-08 0 5.774195914e-43 0 0 0 0 0 6.543956484e-06 3.47345807e-35 0 0 0 0 0 3.648264371e-20 0 4.021616796e-15 2.177226001e-12 1.926081294e-32 1.126609692e-27 0 5.581240303e-39 0 0 0 0 0 1932.914542 0 0.02481670268 1.776531299e-18 0 0 0 0 0 0 0 0 0.0004756329164 0 0 0 0 0 0 4.605941082e-20 0 8.555416917e-23 0 2.026448923e-29 0 0 0 0 1.123823782e-09 0 0 0 0 0 0 0 0 1.440927493e-14 0 6.473388885e-18 0 9.237893859e-19 2.047650174 1.706809923e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1128158.53 0 6.939349364e-12 0 9.89157638e-07 0 0.002695070197 0 3.856145399e-28 0 0.0005399831935 1.185474884e-15 0 0 0 0 0 0 0 6.259232183e-09 0.03351983962 0 0 5.082344323e-29 0 0 0 5.67885852e-11 0 0 0 0 0 0 0 0 4.941617306e-16 1.639986931e-15 901203.8226 1.15888813e-29 24.44771402 6.35398329e-22 0 1.525693131e-12 1141751.696 0.02761462493 0 0 0 934456.6746 9.799243889e-10 0 0 0 4.149018724e-13 0 9.752033528e-09 112560.029 0 0 5.511121332e-06 0 0 0 0 0 0 0 9.548284109e-24 0 0 0 1.083871627e-09 0.8556081081 0 0 53058.8174 0 11081.82623 0 0 0 0 0 0 0 0 0 1.851307408e-28 0 0 0 0 0 1.341636316 0.0001122387221 0 0 0 1.125213491e-12 0 0 0 0 0 1.570473948e-09 0 3.554282829e-26 0 0 0 0 +0 0 0 0 0 0 0 2.523253035e-07 0 0 1486.951971 0 0 2.841832574e-06 0 7.091726031e-07 0 0 2.409420177e-19 2.808981283e-07 0 0 0 3.377437881e-11 0 0 1848.079479 0 0 0 6.091977378e-23 0 0 0 5.06700132e-08 0 0 0 2074004.395 0 0 0 0 0 0 0 381547.2014 0 3.563480813e-36 0 0 0 1.606827151e-05 3.212853842e-27 4.892635785e-15 7.680082228e-10 0 18.4196169 0 0 0 0 0 0 13580.28079 0 1.423562938 0 0 0 0 0 0 0 0 3.341329079e-25 0 1.452027211e-15 5.860095138e-06 6.927821717e-12 0 0 0 0 0.01801243458 1.674072645e-11 2.086523226e-16 0 1.870949581e-18 0 0 42207.69967 1.811027853 7.488673313e-28 0.001896604051 0 0 1.406297508 2350.526866 4.840399415e-14 0 0 0.006411387714 0.007675707802 7.595182194e-28 1.919750502e-09 0 0 0.008248212047 0 0 0.0003406787624 0.1710497105 0 0 0 0 6.432847249e-07 39956.61477 0 0 0 206138.5792 0 0 0 9.874503365e-30 1.405186482e-20 0.3724743276 1.066618349e-33 1.588774603e-14 3.247183039e-28 0 0 0 3.865317132e-08 0 790296.3154 5.628438822e-13 14.38222673 0 5.226881138e-16 0 0.02044043552 1.198583876e-14 0 5.919363918e-08 0 0 0 0 0 0 0 5.732999267e-09 0 0 0 0 5.011686564e-07 0 0 0 1.015723736e-15 0 0 0 0 0 0 3.286384316e-08 72.26335933 0 0 0 0.000190228015 0 0 9.869029098e-34 1.660915809e-07 0 0 160589.4406 4012.983539 0 0 5813.704205 6.596404417 1.13160878e-22 0 0 1.121512941e-09 2.019880681e-14 2.257772503e-06 5.738112459e-15 0 0 2.37300519e-20 0 1.359504647e-06 1.924503393e-07 5.786430069e-21 0 0 0 0 8.170517328e-29 0 0 0.005361847211 3.864046245 0 0 0 0 0 0 0 0 0 0 0 0 0 9.168691025e-05 0 1.960933151e-14 0 6.819273305e-22 0 7.670159131e-30 1.635962665e-23 0 0 0 0 0 0 0.0003479786039 0 0 0 0 8.855003849e-06 0 0 0 1.111406926e-17 0 6.967163964e-11 0 1.042903172e-06 0 0 0 0 5.565674763e-12 0 0 0 0.06524703553 0 0.05297889472 0 0 0 0 0 1.444787418e-17 0 0 1.524101692e-20 0 0 0 2.00138091e-40 0 0 0.00506422585 7.370398092e-15 0 0 7.1613316e-07 0 0 0 0 0 1.534365056e-13 0 1.24479462e-33 0 0 0 0 0 0 3.298258216e-08 0 33870.21925 +0 0 1.898854562e-29 0 0 0 0 0.0009787582072 0 0 364.614257 0 0 0 0 0 0 0 0 4.41933291e-07 0 1.580805673e-36 0 0 0 1.071749863e-25 0 0 0 0 0 1.542273609e-05 0 0 0 0 0 0 0 0 1.38454797e-23 0 0 0 0 0 0 0 6.567364136e-17 0 8.186690264e-06 0 0 0 0 0 2.605611533e-05 2.516281465e-05 0 0 0 0 0 0 0 1.620423853e-09 0.02001404522 0 0 173.4302714 0 6.745643868e-13 0 0 0 0 0 0 0 0 1.663698241e-24 0 0 0 0 2.881097807e-23 1353091.96 0 188019.867 0 0 1.328587712e-18 6.706757017e-26 0 0.08926819208 0 0 0 0 4216.325756 0 13503.83048 0 1.555697116e-08 0 0 0 0 0 1.585860723e-08 0 0 23675.80273 0 58.66382998 0 0 0 0 1.252689576e-17 9.865255632e-11 0.002834499623 0 7.937280492e-18 9.194411875e-27 1.978019075 2.130791194e-30 0 0.0009101754527 6.462921984 0 0 0 4.618565933e-09 0 1.867652035e-09 2.074281589e-27 740255.4585 0 3.870592024e-07 0 0 0 3.176206833e-21 0 0 9.83230102e-25 0 1.712557436e-14 0 13982.90483 3.882608477e-18 1.958480831e-19 0 0.0003484987347 0 6.367790215e-13 8762428.09 0 5.827943568e-23 1.511867128e-06 0 0 0 9.040344502e-07 1.051697636e-08 0 0 0.06896745679 0 0 1.50170976e-11 764030.6971 0 0 0 0 0 5.126537025e-07 0 5338.638848 9.894903631e-07 0 0 0 199526.3546 0.00176576114 0.007270790004 0 0.0002626700991 0 1.300847539e-09 0 0 2.814949444e-05 4.186748548e-26 0 0 0 0 4050.636799 1.81675643e-05 1.382488468e-22 0 0 2.666641899e-16 0 0 0 0 0.03624856321 0 0 0 0 0 7.608615647e-05 0 2.554087116e-09 5.022285943e-13 0 0 8.88794363e-06 2.024759595e-13 0 0 0 0 6.637785549e-28 145.0101635 0 63.29332553 467252.7711 0 0 0 0 0 0 0.0001645063038 0 0 0 0 0 0 0 0 3.097439866e-09 0 0 0 0 0 5.228163955e-08 4.767923423e-13 0 4.285612291e-30 0 4.165936706e-07 9.91544079 0 0.0002264647054 0 0 0 0 0 0 0 0 5.985447735e-20 0 0 0 0 0 0 0 0 5.988129665e-25 0 0 1277226.162 0 4.532560475e-08 0 0 0 5.144848335e-22 0 0.3668816611 0 0 8.161169244e-17 0 0 2.248043351 0 0.6455576978 +0.02484020134 2.03580719e-21 0 0 0 0 0 0 0 3.120035792e-24 0 0 0 1.37405902e-41 0 0 0.0198012639 0 0 0 3.572691694e-29 0 0 0 0 0 302.0186502 30.4450259 0 0 0 0 0 0 0.003705841586 0 0 0 0 0 0 23.07799987 0 0 0 0 0 0 121010.473 0 0 0 0 0 1.295107431e-09 0 0 0 0 0 0 0.0002249343417 0 134.8531597 0 0 1.750964238e-05 0 0 0 0 0 0 0 0 1.170605925 0 0 3.484479103e-13 0 4.559293465e-08 0 0 0 7.108310349e-15 0 0 0.2273592655 0 2.959963318e-19 0 0 1.289014241e-20 4.402366935e-08 0 0 3.523986352e-32 0 3.646983482e-08 0 0 8.800731576e-10 0.1151382143 0 0 0 0 0 1.539712202e-29 0 48114.36727 0 0 0 0 4.114059349e-10 0 23.52159562 0 0 83852.70435 0 1.559818433e-10 0 0 0 7.741954938e-26 0 0 0 2.258247638e-19 1.853035132e-33 4.656487651e-23 4.522690079e-25 0 0 0 0 0 0 0 312329.7687 1.552129988e-18 1.566930453e-13 0 6372.586417 0 0 0 0 1.315351815e-18 1.420151533e-08 0 2.510141336e-09 0 0 0 0 0 0 0 0 1.354696951e-20 0 0 0 0 0 0 0 3.507163896e-16 1.346937821e-06 4.973673685e-15 0 0 0 2.963049199e-10 0 0 0 1.85421819e-16 4.230948665e-22 0 0 0 0 0 6.397390677e-28 2.639652066e-12 0 0 0 0 3.506459432e-35 1.350452979e-11 0 0 0 0 0 0 0 0 0 0 0 0 3.635958532e-10 0 6.178135444e-07 0 0 0 0 0 0 1.741092266e-08 8.397354594e-05 1.107061777e-29 0 3.034263814e-09 9.015873116e-08 0 0.002174340559 6.635453502e-25 0 0 0 0 0 0 0 0 0 0 0 0 0.5487581743 0 0 0 0 2.099984903e-26 1.591930883e-22 0 0 0 0 0 514.4247807 1.678438234e-23 0 4.92374544e-08 0 0 0 0 0 0 0 0 0 0.1549771242 0 0 0 0 0 0 0 0 0 0 0 1007.673776 4.429848088e-19 0 0 0 0 0 0 0 0 0 206719.9314 0 0 0 0 0 1.752302855e-10 9.334436543e-33 0 0 0 0 0 0 4.694428574e-05 +9.537879628e-11 0 2.672718543e-22 3.199549059e-08 0 0 2.038625787e-08 23218.12966 0 0 0 2.999711891e-09 0 0 0 0 0.02460615241 0 0 1.01053678e-15 0.01201851271 0 0 4.523734002e-26 0 0 292804.3685 2.781676642e-05 0 0 0 40537.09864 0 0 0 0 0 0 58733.36175 0 0 2.746596871e-08 0 0 0 0 0 0 6.968091854e-12 0 1.098887783e-05 5.789530569e-15 0 0 0.0009174034129 5.678504423e-22 7.963084641e-18 0 0 1.880005884e-32 0 0 389922.5023 0 102.4533628 0 0 0 0 0 0 0 0 7.526675182e-10 0 2.165258596e-07 1.746438816e-13 0 6.664087413e-10 6.182378388e-27 0 0 0 0 6.354641435e-29 0 0 0 0 4.121981515e-24 5.050377753e-11 0 2.070973431e-12 0 0.002697430095 2.389700628e-06 2.475494246e-18 0 0 1.036891827e-08 0 0 1.829276679e-09 3.674334947e-08 100.7003135 0 0.3270106717 0 2.072957459e-16 0 0 1.432925192e-48 1.006927492e-30 8.506064216e-28 0 2514922.505 1.491199563e-10 0 3.103995874e-14 0 0 9.900352956e-10 0 236456.9603 0 0 5.85719201e-15 321.1516272 0 0 0 0 3.190268332e-12 0 1.062796576e-07 0.905876318 0 0 0.005863331783 0 0 0 8.411292071e-18 0 0 9.510275706e-09 12812.72342 0 0 3.579617891e-27 0 0 2.364757292e-22 1.991536067e-08 0 0 0 1.767137293e-13 0 0 0 0 0 0 0 1.344775775e-22 1.580759081e-21 0 381.7509474 0 4.214892854e-29 42056.60621 2.9333829e-22 0 0 1690977.892 0 0 0.06712148997 0.03150017064 0 1.206081434e-13 0 0 1.064985158e-31 196827.1475 0 0 0 152789.7634 0 248051.4311 0 0 0.002576174003 0 3.521252842e-23 0 0 0 0 0 5.550607386e-07 0 4.427322661e-10 2.990995326e-06 7.966447564e-12 0 0 0 1.718952618e-14 0 0 0.003910059874 33193.65298 0 1.60438514e-26 0 2.032806915e-07 0 0 0 0 0.02595918267 1.08300056e-08 0 0 0 0 0 0 1.142452095e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.495753048e-06 0 0 0 0 0 0 0.0001263815315 0 0 0 1.645529264e-11 0 0 0 1132.323299 0 0 0 5.6545781e-16 0 0 1.376141447 1454554.782 0 1.13144464e-11 0 0 0 6.130908523 3.649068951e-09 0 0 0 0 0 0 0 0 0 4.333206205e-11 0 +5389.801017 0 0 0 0 0 0 8.056478259e-07 0 0 18.20403247 0 0 0 0 0 0 0 0 0 0 0 0 0 3.208409614e-11 5.735747379e-21 0 0.03791584177 0 0 357.3868638 0 0.006883083261 0 2.161524973e-20 0 0 0 0 0 1.839928658e-12 0 0 0 1331.087939 0 1.833883597e-05 0 0 0 0.7992807042 0 0 0 0 0 1.85553913e-07 0 2.326734825e-13 0 0.7395199412 0 0 0 8.57874141e-22 0 0 0 0 0.001787993725 4.577699677e-05 0 0 0 8.293824809e-09 0 0 0 0 0 0 0.00675408313 4.798758042e-28 0 0 0 0 0 0 0 0 0.001212284968 0 0 2698372.897 0 0 0 0 2.842313958e-14 0 0 0 236316.2107 0 1.008554196e-06 0 0 0 0 0 0 0 143384.3971 0 5.84972089e-25 0 0 6.143741804e-17 0 4.43008689e-06 0 0 0.4082620542 0 1525.656925 3.459652433e-10 0 1.262428041e-22 0.002229438649 0 0 0 1073704.887 0.0001432800197 1.971183438e-07 0.03819309403 0 3.820421478e-12 4.199164227e-07 0 0 4.516769504 0 0 1.243350933e-07 0 0 0 0 4.731564728e-09 0 58366.36382 0 8.544113163e-36 0.07857130144 0 1.20619058e-16 0 0 0 7.234522606e-12 0 0 1.067516394e-07 0 0 242.4916538 0 0 0 0 1.411571693e-15 0 0 0 1.366639698e-21 0 0 1.659216924e-13 0 196438.0423 0 0 0 0 0 0 0 0 1.85996118 453.5598592 0 958.8013837 1199.704725 0 0 0 0 0 0 0 0 0.2731102427 0.0007832511564 0 2056.939564 0 0 0 0 9.947093929e-13 0 0 0 0 0 0 0 0 0.0001656443753 2.437446052e-27 7.081394601 0 0 0 0 0 0 0 0.005243808831 0 0 1.878033024e-22 0 0 0 0 0 0 1321.205777 0 0.01118376642 7.655870949e-27 0 0 0 0 6.640269898e-07 4.903360978e-19 0 0 0 6.75151235e-19 0 1.043000883e-05 0 0 5.19376894e-19 0.02112194226 1.739750393e-10 0 0 0 0.004231652589 0 1.939548158e-17 0 0 0 5.987118152e-31 0 0 0 0 8.069000995e-19 0 1.074679642e-16 0 0 1.166441919e-19 0 0 0.03357842634 0 0 0 1.425724031e-14 0 0 0 0 0 0 1.346701157e-24 0 0 0 0 0 +0 0 0 0 618.0973448 8.379513589e-05 25.57845531 0 0 4.598825901e-20 0 4.688246994e-16 0 0 0 0 0 0 0 0 49955.75045 1.430133208e-14 0 5.588894488e-23 0 0.7504251226 0 0 0 0 0 0 0 0 0 1.416426876e-12 0 0 5954.289275 0 2.167667152e-36 0 0 0 5.067519225e-17 0 9.737796755e-08 0 9.822665482e-07 7.231994398e-05 0 0 0 0.001889903446 0 0 0 0 0 0 0 1.277700823e-15 0 0 0 0 0 0 2.141097666e-18 0 1.910070105e-07 2.210883049e-06 0 0 0 1.999550344e-21 2385.435098 0 0 0 0 0 0 0 0 5.633743269e-09 0 0 0 2.42598179e-16 6.504143028e-05 0 0 8.418863916e-19 0 25211.7587 7.186965843e-20 0 4.822976761e-08 0 0 0 57900.9036 1.680838073e-18 0 1.381027843e-08 4.263777095e-13 0 185.1552765 0 0 2.782147308e-13 0 0 0 0 0 0 2.314702251e-12 0 0 0 159015.2015 9.092075388e-18 0 5.202420862e-07 0 0 11.13974414 0 0 2.247341432e-27 4.410913033e-09 231.3684469 0 0 0 6.486547816e-15 3.404974364e-16 0.0001100648316 1.699186861e-18 6.975405383e-13 0 0 3.347820037e-14 16932.8194 0.4547794478 0 1.449941212e-11 0 1.405426214e-08 0 0 723.4026722 1.152958205e-11 0 0 0 0 5.168906967 1.87722196e-18 0 0 2.476823955e-25 0 0 5.432785583e-19 2038.998384 4.006838929e-24 0 0 0 8.655213895e-06 0 0 1.180295924e-30 0 0 0 0 2.114904315e-20 1.414447956 0 1.155067987e-29 0 0 0 74.26920069 1.762553466e-10 0 8.92100482e-15 101.9323374 0 0 0 0 0 0 6.467814214e-20 0 0 0.0006041382691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.094487137e-10 64001.30838 0.004140053428 0 0 2.885587606e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1706241361 0 4.261281427e-26 0 0 0 476379.0654 2.162328602e-13 2.18730584e-18 2.825496293e-22 0 0 0 7.644407542e-08 0 7.616621757e-09 1.198919745e-31 0 0 4.060018222e-11 0 0 0 2.270391325 0 0 2.490136234e-30 0 0 1.026992117e-10 1.00724541e-27 0 0 0 0 0 1.089653691e-17 0 0 0 0 0 6.193779614e-15 2.033911052e-25 0 0.0001213104605 0 0 0 0 0 2.559348282e-36 0 0 0 27403.63427 0 +0 0 0 0 6.499521372e-10 0 6.397327667e-23 0 2.022756151 1.422215404e-19 4.801853586 0 0 0 0 0 0 0 0 3.501250541e-13 0 0 2.107870979e-17 0 0 0 6.069743147e-20 465.03977 0 0 0 0 0 0 0 0 0 2.35957923e-13 0 0 0 16.8696949 0 9.743276572e-15 0 0 0 1.464155176e-15 0 0 0 0 9.347332003 9.562532345e-14 0 0 0 0 7.425778854e-19 0.9793879406 0 0 155926.295 0 0 2.554793246e-24 6.997667606e-12 0 0 4986.486858 0 0 0 0 0.1243643471 333872.4186 948.5192251 5.986908992e-11 0 0 0 0 1.490902455e-27 5222.668708 0 6.095986343 0 0 0 0 0 0 0 6.161743935e-23 0 0 0 0.0001683114275 0 0 1552089.739 40.00122057 3.384804302e-21 0 0 0 1.311688129e-08 0 0.0008801499568 4.539731426e-13 0.4674096156 3.354125933e-11 475.0087958 0.0003852879104 1.180546748e-35 0 0 0 1.042663855e-05 0 0 0 0 0 0 0 0 0 0 0 1.488707265e-09 0 0 0 1.870039373e-09 0 0 3.887653092e-10 3.990751442e-26 154839.1347 0 7.260780292e-15 6.936391598e-17 3.354143595e-16 1.628296376e-11 1.514214502e-27 1.431190368e-10 0 6.829646041e-11 0 5.267768851e-12 2.054840321e-20 1.717301628e-18 0 2246037.216 0 2.418904008e-26 8.093996703e-26 0 0 0 13016.50636 0.01470938058 0 0 0 0 0 0 598290.3445 0 0.0340318057 0 6.726675499e-06 0 233047.4892 0 0 0 0 0 0 0 0 0 3.237619018e-11 7.685333257e-13 1.318619643e-19 0 6.044843767e-06 0 0 0 0.01925296051 0 0 1.032326892e-10 7.514161927e-10 6.609167754e-13 0 0 0 1341.23795 0 2.044119927e-05 3.532886981e-24 2.837554647e-13 0 0 0 0 0 1.321447919e-13 0 0 5.676312501e-14 0 0 0 0 0 0 0 0 0 0 0 0 0.001814015157 0 0 101741.9931 0 38.98488681 0 0 1.604421223e-05 0 0 0 0.0002538587546 0 0 0 0 0 0 0 0 46.01652502 0 0 0 968238.0609 0 4.787863708e-18 0 0 0 0 3.234497327e-13 6.406596518e-05 1.048861924e-21 0 9.92781939e-18 0 0 0 0 0 0 1.307858286e-22 0 0 0 0.08145206841 0 0 1.680745822e-06 0 0 0 0 3.610664416e-14 0 0 0 0 0 0 0 4.49883142e-08 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1.029888556e-14 0 0 4.286673486e-22 0 0 0 0 0 0 0 0 0 0 0 0 95.54062199 0 0 0 0 0 558.8817278 0 18.56456699 6.152593838e-27 0.0001299512954 0 0 0 0 0 0 0 0 0 0 1.635432583 5.748292439e-07 1.144594227e-05 0 0 0 0 0 0 0 8.000990807e-05 0 0 0 0 0.7102926159 0 2.041106171e-07 3.080111171e-09 1.494478601e-06 0 0 4326.425203 0 0 0 0 1.27186291e-05 0 1.326561701e-17 0 0 158055.0012 0 0 0 0 0.05190185593 0 0.005516751555 0 0 0 0 0 3.259330198 0 6.069486086e-11 0 0 0 0 418852.7921 0 0 0 0 0 0 0 1.38488839e-22 0 0 0 1.005527107 0 0 4.546496839e-20 0 0 1.024881104e-15 0 0 2.245513055e-15 0 0 0 0 0 0 0 0 4.136594449e-13 0 0 0 0 1.792643286e-10 0 4.348905635e-17 2.078290106e-15 5.279334015e-13 9.256120933e-16 0 0 0.03764780841 0 0 0 0 324.0340001 6.034423253e-07 3.737520804e-12 0 0 23465.01337 0 1.441186305e-11 0 0 0 0 147.8355819 2.520844456e-12 3.473041132e-21 9.548523263e-07 2.843752795e-10 0 0 1.483941167e-13 1.786543299e-26 0 2.758333234e-18 0 0.001731077595 0 3.525482451e-19 0 0 0 0 7.235524059e-06 0 0.001029065042 0 5.447767045e-17 0 1.254880837e-14 0 0 7.912850167e-06 0 0 0 1.432669251e-14 1179.18604 1.93435809e-07 0 84.08098537 0 7.506605435e-11 0 7.127788377e-33 0 0 0 0 0 0 0 0 0 0 1652.736224 1.175750607e-09 1.752927896e-17 0 0 0 0.4168500071 0 0 0 0 0 0 0 1.216915893e-14 1.415469121e-26 0 0 0 0 0 6.632667212e-09 0 0.1666156615 0 0 8.472132865e-15 0 0 0 0 2.726853645e-08 0 0 0 0.0002309243182 0 0 0 0 5.421679393e-25 0 0 0 0 0 0.007356306503 1.709573586e-32 0 0 0 0 0 0 0 0 0 0 1.178937113e-13 1.154134831 16.00538683 0 0 0 0 4.480782974e-10 1.516263317e-12 0 0 0 0 0 0 0 0 2.381949244e-06 0 0 0 0 0 9.523713807e-27 87349.60647 0 0 0 0 0 1.551251913e-07 0 0 +0 0 0 0 0 0 0 0 0 0 3.46781708e-08 0 0 0 0 0 0 0 0 1.265706689 0 0 0 0 1.508704145e-25 0 0 0 0 0 0 2.140474872e-21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.69744326e-15 0 4.597685711e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.183603806e-24 0 0 0 1.052509748e-05 0 0 0 4.33211843e-13 0 0 0 0.0001102022501 1341.488048 0 0 6.668808389e-08 3435727.167 0 8.294309901e-13 96.3794034 0 0 2.033403574e-26 0 149.9281631 0 7.723341055e-10 0 0 0 0 0 1652133.066 0 0 2.377146069e-15 0 0 0 0 0 2.973995551e-10 0 0 0 0 0.04295081138 9.138021465e-23 728.4137178 7.787465958e-12 0.0003335221702 0 0 0 1.781590232e-08 0 0 2.325654885e-08 0 202497.308 0 0 0 2.512212616e-06 9.708882905e-26 10.09987104 0 5.527309369e-26 0 0 23.28956261 8.771398028e-05 5.970765193e-18 3.538916142e-16 0 0 0 0 0 0 3.172893375e-29 0.07464283792 0.00650984875 2.043705006e-18 0 0 6.857311756e-21 0 0 0.0001535270908 0 3.47601415e-26 0 0 0 0 0 0 0 0 0 3.225118104e-29 0 0 0 0 0 0 4.559734057 0 1.21377487e-21 0 0 1.519263974e-07 0.03074995877 0 0 0 0 3.678257519e-29 5.018170471e-11 0 5.755815433e-15 0 0 0 0 0 7.526441289e-05 1.84115003e-13 0 0.004030474464 0 9931.689587 0 0 4.486202682e-36 0 0 1.104389798e-27 0.1553163412 5.169674987e-28 0 2.121715607e-15 0 0 0 1.31291849e-20 1.320459668 2.911818817e-13 0 0 0 0.0001009729324 0 0 0.005987554012 0 0 6.300400812e-06 0 0 0 0 0 0 0 0 3.424134903e-13 0 0 329075.797 0 1.719819469e-12 0 0 5.748889956e-07 0 1.447378869e-08 0 4.836449594e-26 0 0 1.819945577e-12 0 0 3.784226964e-13 0 5.157159357e-08 0 0 0 7.882494558e-20 1.925603404e-09 0 0 0 0 0 0 0 7.471498132e-27 0 0 0 0 0 0 1.51516242e-05 0 0 0 2.915044603e-11 0 0 0 0 7.584486787e-40 8.893363679e-19 0 0 0.0004287859283 0 0 0 0 0 0.003791006179 0 0 0 1.501899817e-05 +5.472284832e-27 1.540219683e-30 0 3.894879807e-08 0 0 0 7.306657369e-13 7.252994863e-12 0.000160307333 0 0 0 1.363239527e-12 0.0859104939 0.001073463897 0 0 0 0 0 0.0001669399972 0 204.4876649 0 0.0003586856013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7154.341533 0 0 0 0 3.222304915e-29 0 0 0 0 0 0 0 0 0 166.4951504 0 0 0 1.494724192e-09 0 0 1.167508753e-10 0.4460343754 0.001260682519 0 0 0 0 0 0 0 4.103707855e-08 0 0 0 6.323138453e-06 0 0 0 0 0 0.0001582276607 0 3.977942747e-11 6.150485489e-10 1.653980845e-19 0 2.379478257e-26 4.099820291e-10 0 0 0 0 0.0002739974374 0 14.21461006 0 1.431211289e-13 0 0 0 0 2.333329404e-10 0 0.3082842971 0 0 0 0 0 0.0003901023058 28.430343 6.774050346e-08 0 0 263725.2726 0 0 0 2.910493224e-27 3387.435084 0 3.782548954e-05 0 0 0 2.055853139e-14 0 2.343836346e-24 3.142992604e-10 0 1.21952046e-39 0 0 7.771223529e-19 0 0 0 1.367784192e-10 0 0 0 1.003159516 0 0 0 5.102015265e-18 5.089049099e-10 0 0 0 0 2.187751107e-15 9.53735959e-14 0 0 9.917381698e-09 9.476341009e-06 47.31716285 0 0 0 0 1.260138752e-09 0 0 4.121416133 0 1.180458197e-12 56496.34088 0 3.141571519e-13 0.002508295804 0.2827845635 2.237774705e-09 0 0 0 0 0 0 1.020318008e-06 1.016099448e-07 1.886925576e-26 0 0 0 0.1371026631 0 0 0.03238006727 0 0 1.434065252e-17 0 0 17255.01007 1.631144887e-10 0 718.6520034 1.662211917e-19 1.51845385e-10 0 0 2.586717616e-10 0 1822488.171 0 0.09204881957 4.191842283e-25 2.807524945e-05 0 5.898007684e-05 446879.0187 0 5.253974394e-21 0 3.485691341e-06 0 0 5.440255506e-13 0 0.0001115448773 0 1.325048002e-34 0 65395.6283 0 0 0.03367240639 0 0 1.0385138e-08 0 11.79978345 0 0 6.781262879e-07 0 0 0.001479031528 0 0 0 0 0 0 0 0 3.29379621e-08 0 0 5.499190092e-13 0 0 6.931120186e-16 0 3.686340703e-25 0 0 0.0009911461104 2.409112699e-17 0 0 0 0 5.839004734e-10 0 0 222251.1886 0 0 0 0 0 0 0 0 5.971313506e-14 0 0 0 0 0 0 0 7.980627556e-18 0 0 0 0 9.352526636e-13 0 0 0 0.1626728948 0 +0 1.934876399e-07 0 0 0 0 0 0 0 0 0 0 2.252874621e-21 0 0 0 0 8.346449045e-05 0 0 0 0 2.834748934e-13 0 0 0 2.765210271e-09 0 0 2.42059053e-38 0.2214289159 0 0 45.96071077 0 4.533825293e-14 0 0 0 774.0197751 0 0 2.394302166e-24 4.538654404e-13 2.681308461e-07 8.651738352e-21 55.32497426 0 0 0 0 0 0 0 0 88.27813151 0 0 0 0 0 0 0 0 0 3.076833225e-22 0 0 0 4.08238322e-07 0 0 1.404614656e-17 0 0 1.140854727e-05 3.300238537e-19 0 0 0 1.290815409e-07 0 0 0 0 0 0 0 3.732716387e-19 2.501828866e-19 0.05281968413 1.547392504e-27 0 0 0 1.904721358e-20 3.391201015e-17 0 0 0 1.161581506e-06 9.557792087e-17 0 386747.8633 0 0 0 1.544619162e-11 20.65263123 0 2.057600929e-24 0 3.281215268e-06 0 1.481008916e-05 0 6.261603784e-22 0 0.5453462482 4.387510134e-18 1.825028021e-12 0 3.334466758e-27 1.727243216e-30 0 0.0008386364527 0 0 8.164463368e-16 7.716188705e-38 0 0 0.001087641837 1.536058073e-19 0 0 0 0 102434.074 9.307740966e-27 7.00285989e-13 5.289018657e-22 7.734788223e-06 8.30690597e-12 1.032258802e-07 0.0001535398784 9.603580372e-23 0 0 0 1.986536218e-07 0 0.2880218605 0 3.13885171e-10 0 0 0 2.68211954e-24 0 0 0.002763562351 9.151168818e-13 8.504097536e-10 0 0 4.589576551e-09 0 59.96245129 0 6.035188977e-25 1.055898566e-25 0 0 0.001618780385 0 0 0 4.539862433e-15 0 0 0 22693.05331 0 0 5.136040079e-07 0 0 0 0 0 8.402177239e-10 0 0 3.073288109e-20 0 3.763463941e-10 0 7.370281214e-12 0 0 0 0 0 9.083408623e-19 0 0 0 0 0 1.869570579e-13 0 1.81024886e-18 0 0 0 0 0 1.305577979e-12 2.157144595e-17 0 0 2.824561053e-05 0 0 0 0 0 0 0 0 2.107984837e-25 0 2.586761107 0 0 0 0 0 0 0 3.245246405 1.462097955e-12 0 1857263.239 0 0 0 0 0 1.819411393e-31 0 1.676333533e-12 0.03538891118 0 0 0 0 0 0 1.370245431e-07 0 9.858552247e-16 0 130454.173 0 0 0 0 0 362.1775083 0 0 0 0 0 0 0 0 0 0 0 0.0003292284174 0 0 0 0 10407.5614 0 0 0 0 0 5621.630862 0 0 0 1156781.419 0 0 +0 0 0 0 0 48131.96551 0 0 2.283115653e-18 0 0 0 0 106472.2738 0 0 0 0 0 0 0 0 0 0 0 0 0 159328.5005 0 0 0 5.084364228e-20 0 0 0 0 0 0 0 0 0 78.18220746 7.59431547e-27 0 0 2.179135251e-09 0 0 0 13091.37298 3.184899775e-26 7.275313173e-15 0 504904.5311 6.784586722e-06 0 0 0 0 0 0 0 0 0 0 1.718918199e-13 0 22305.13692 0 0 2.292308086e-18 0 0 0 0 0 0.009947519389 0 0 0 1.354111685e-06 0 0 0 0.02366304012 0 0 0 0 0 0 0 2401826.18 6.500940884e-10 0 7.023306214e-11 0 0 0 0 0 0 0 1.023661295e-21 9.75915641e-16 1.505324684e-06 0 1.229718348e-07 0 0 2.643672901e-09 0 0 0 9.882370209e-11 0 0 0 0 0 0 0 0 0 1.968351323e-10 0.6955653324 0 4.941279846e-09 39854.44955 1.951351048e-24 0 175060.8601 2.70913343e-14 0 4.740176194e-18 3.186953802e-18 0 1.122911127e-05 0 0.003257736166 0 3.421715218e-37 8.70886742e-19 0 0 0 2.216384081e-18 2.439981845e-22 1.365826176e-25 0 19.59021078 8.886349701e-22 0 0 0 0.561767497 7.947560964 0 1.245553557e-09 0 5.24837794e-24 113414.7456 1.058369875e-05 0 1.207854389e-14 0 0 1.08221977e-17 0.6328119229 0 0 0 0 0 0 2.831271631e-10 0 108.1756816 0 0 0 3.008398513e-09 0 0 0 0 0 0 0 7.128085797e-10 0 0 0 0 0 0 1.513673479e-08 0 6.037724266e-10 2.030624668e-19 0 0 2.168510442e-40 3.616978767e-10 0 0 0 0 0 0 0.03234021033 0 0 0 0 0 0.0002842625783 0 0 0 0 0 0 0 0.0004746394316 0 0 4781.547532 0 0 0 0 2.120365538 0 0 0 7.095505174e-10 0 0.09430663152 0 0 3.204038782e-06 0 0 0 1.973883061e-09 3874.554279 0 0 2.375240315e-21 0 0 0 60.34665216 0 1.147233757e-18 0 9.570225124e-19 0 0 0 0 0 0 0 0 0 5.790613447e-15 0 0 7.688126547e-08 0 7.012723766e-10 0 0 1.873747301e-43 0 9.89736413e-22 0 0 0 0 2.35388801e-16 0 0 0 1.34339314e-10 0 2.752665262 0 9.101741592e-16 3.901019174e-21 0 0 0 0 0 0 0 0 +0 0 0 1.880842484e-08 3.094968412e-23 2.413365867e-30 0 0.05466560578 0 0 0 0 0 1.141446401e-12 0 589344.8012 6.455387807e-09 0 0 0 0 0 0 0 109980.2259 8.308858725e-06 175.192281 0 7.251134941e-13 0 7.840240564e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 1.584161185e-10 0 0 0 1.497462706e-05 0 0 0 0 0 6999.163304 0 7.327304745e-09 0 2962.061508 0 0 0 0.04146307281 0 0 0 5.547059068e-06 0 0 4.36890128e-25 1.030919965e-15 0 0 0 0 285075.9914 0 1.034425586e-27 0 0.5018700509 0 0 0.04666874041 0 7.253652265e-11 2.643693472e-10 2.22074255e-17 0 0 0 0 0 6.955504484e-27 45431.1236 5.996028693e-13 0 9.800478325e-19 1.358204723e-06 0 2.479160444e-11 7.734561375e-30 0 3.937720976e-17 0 3.017709362 0 0 0 8.203384554e-26 8.42538411e-29 0 0 0 6.037730884e-07 0.0001831858125 0 0 0 1074255.408 1.81426075e-06 19.2404934 0 2.45717574e-07 5.893216336e-21 0 0.03220648976 1.484695667e-10 0 0 3.797096732e-10 0 0 0 0.4249468579 0 0 0.06721569748 0 1.126770943e-10 4986901.612 0 0 0 0 0 0 0.005264591506 0 0 5.536884732e-19 2138.366255 0 0 0 0 922607.0136 0 0 0 0 0 0 0 3313.742607 0 369595.4735 0 0 0 634.9946486 0 1.340413913e-28 2.913934162e-15 1.536231795 0 3.773301985e-05 362.2984927 0 7.1662038e-11 0 1.524251455e-06 4.707184976e-31 1856247.464 0 0 205291.2262 0 0 0 5.797397625 0 0 2.876644677e-12 0 0 0 0 0.001107647008 0 0 9.107490226e-07 0 1622014.815 7.011098994e-10 0 0 0 0.5400553583 0 0 0 0 0 0 0 133504.7895 3.695100806e-21 0 0 21348.79042 0 4.597900458 173.4099248 0 0 0 0 0 0 4.537581416e-16 635835.6634 0 0 1.253158031e-10 0 0 0 0 0 5.065021875e-21 0 7.908997638e-26 0 0 0 0 0 0 2.995254284e-08 0 0 0 0 0 0 510749.1406 3.292100871e-11 1.545570885e-05 0 0 0 0 1.942317841e-16 0 0 0 2.294575673e-28 0 1.075087368 0 0 0 0 39335.64985 0 0 0 0 0 0 0 0 0 0 0 0 1.113504012e-08 0 5.788235914e-12 0 0 2.368531676e-25 18.53230854 0 0 0 0 0 6.745264402e-06 0 +0 0 0 0 0 0 0 0 6.823903816e-13 0 6.288611934e-09 0 0 0.0145042095 0 0 3.712114651e-10 0 0 0 3.28330016e-09 0 0 0 0 0 0 0 0 0 1.904816615e-06 0 31544.11731 0 0 0 0 0 0 0 0 0 0 1.073618973e-12 0 0 0 0 0 0 0 0 0 1590377.591 0 0 0 0 0 0 0 826254.5281 0 0.00888237284 0 0 0 0 0 0 0 0 0 9.187796972e-13 1.967676474e-14 1.571920731e-16 0 0.007367208382 0 0 0.5971601265 1.166110333e-15 0 121.5855738 4.610048628e-10 0 8.771504314e-11 0.0427346773 1065799.236 0 0 3.911599046e-29 0 0 0 2259.678649 1.391527646 7.618246554e-12 0 0 0.2739887013 99004.47193 0 3.089980568e-06 6.942527531e-06 9.771607772 0 7.861648388e-11 1.04663202e-05 0 2.618368423e-07 2.799672389 0 0 0 0 3.558375151e-27 0 0 0 0 0.01675928825 0 28004.62372 0 1.606367892 1.464837544e-15 0 1.581089746e-07 6.90473227e-21 0 1.148860127e-09 0 0.606521378 4.979385644e-17 0.003393451449 0 9.435065151e-22 0 0 0 0.009592806624 0.609969078 0 8.572295971e-21 0 0 4.564611986e-13 0 1.04192165e-13 0 0 0 0 3.331684327e-05 0 0 0 0 1.450965414e-16 4.348614151e-14 0 0 4780035.872 0 0 0 0 0 0 0 4.938859349e-07 1.721638167e-19 0 1.885635339e-05 0 996550.6597 0 5.959383657e-05 0 0 4.287007135e-27 3259.309682 1.046002475e-40 0 0 0 0 0.1072354751 0 0 0.0008165190399 3.579736119e-19 0 0 2.107145706e-09 0 0 0 1.123561443e-09 0 0 0 0 0 0 0 0 7.868330014e-14 711.3704117 0 0 0 7.258168765e-10 0 6.108275696e-06 0 6.579479286e-21 0 5.862048713e-09 0 0 7.395444749e-19 0 0 0 0 0.005162552315 0 5.087599866e-14 0 0 0 0 0 0 0 1002656.231 0 0 0 0 0 1.811084462e-23 0 0.01066420431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.236694491e-07 0 0 0 0 0 0 0 0 2.654070043 4.368106095e-16 0 1.739411006e-06 0 1.221667694e-12 2.296770268 0 1.022922969 0 0 0 2351268.177 0 2.691442697e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9.623054051e-08 0 0.004494228417 0 0 0 3.171625401e-14 0 2.153690149e-26 0 0 0 0 0 0 0 9143.124297 0 0 0.3805848616 0 0 0 0 9.648776389e-11 0 0 0 3.789261322e-22 0 1.128563096e-24 0 0 0.001363106703 0 0 222.6821337 0 3.64487868e-19 0 0 0 3.93834863 3.843518088e-05 0 151737.8041 3.236658546e-08 0 0 0 0 1.812324197e-21 5.755987559e-15 0 3.025558991e-06 0 0 0.002656483921 0 4.096067737e-12 0 0 0 0 0 0 1.934516807e-11 0 0 0 0 0 3610174.965 0 0 1.617479837e-05 0 0 5.222679372e-14 79252.40541 0 0 0 2.207326845e-17 1.259901578e-21 0 0 0 0 0 0 0 138.3529173 0 4.231860858e-13 2.836706248e-17 0 1.945605569 0 3.007814654e-06 0 0.2794313323 0 0 0 15.49962169 0 0 0 37905.11818 5.206505488e-07 3.989836899e-10 1504.276089 0 9.378234253e-15 0 0 0 0 0 0 0 0 2.119431745e-08 0 0 0 0 0 0 3.749024584e-14 13281.34545 0 0 8.501254129e-16 0 3.678648284e-05 0.0006611586772 3.29814335e-12 0.0986244649 1.153983332e-27 6.299112626e-14 0 0 1.392057958e-10 1.214889507e-10 0 1.752969339e-14 2.643148904e-17 1.540068075e-21 0.02192075511 0 0 0 0 0 0 0 0 0 2.500674812e-24 0 0 1.587252327e-19 2.033536146e-05 0 0 0 9.647252125e-10 0 0 0 0.0002050869084 0 5.452092843e-13 0 0.02467285181 1.364680721e-29 0 12.93911894 0 0 0 0 0 0 0 4.786949987 0 0 1.167162219e-22 7.570363649e-10 8.755884241e-05 0 1.287113728e-21 0 0 0 0 0 0 0 9.448867689e-20 4.372272039e-29 7.536524517e-10 0 0 0.06669000674 0 0 0 0 0 0 0 0.2482512082 0 0 7.233457185 0 1.34660762e-19 0 0 3.136482773e-08 0 0 0 0 0 32.85971532 1.889917347 0 2.32800025e-23 3.194191491e-22 1.291412384e-13 2.422099659e-09 0 0 0 0 0 2.59391499e-11 0 0 0 0 0 0 0 499121.1624 0 4.407046644e-09 3.983960087e-09 0 0 0.002204466385 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.709093035e-17 5.882948572e-07 0 0 0 0 0 0 0 0 1520521.289 3.029985408 0 0 0 0 0 0 0 0 0 0 0 2.014729753e-27 0.003557752819 0 +0 0 24.72943103 0 0 0 0 0 0.005703784165 0 0 0 0 0 2.433984914e-05 711.4704376 0 0 0 0 0.0006735210967 0 0 0 0 4.000748244e-10 0.03410245585 0 8.756967898e-09 0 0 0 797969.7445 1.266734529 0 0 0 0 0 1.962768901e-10 0.00806197615 0 5.236294966e-29 0 0 0 0 2.271908175e-08 3.787291859e-30 2.971418141e-11 0 1192631.383 428112.6432 0 0 4.04112571e-07 0.0001652492194 8.48969558e-18 0 0 0 0 0 0 0 0 0 8.187124367e-11 5.971813275e-14 6.192778119e-39 0.9210673295 0 1.506066041e-39 0 38.43574627 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.038227332e-18 0 460.5651102 0 2.571494729e-30 0 0.000103609981 14221.97508 5.821001942e-19 2.259233452e-18 0 0 228669.6708 0 0.009360666814 1967064.038 0 0 0 98.17928449 1052.668601 0.3312369253 0 0 0 0 1.315259546 8.963820292e-11 509140.374 0 0 0 2.17260764e-11 0 0 0 0 0 3.724470152e-15 1.076673555e-23 0 1.547631564e-28 2.647638112e-05 7.386820701e-25 6.189503918e-27 0 208.0185918 0 0.00206649256 8.270994116e-19 0 0 0 0 0 0 0 0 0.0002207930381 0 2.774706858e-09 36.65896156 4.347946837e-15 0 0 1.93369906e-10 0 0 0 9.87585132e-22 0 0 0 0 1.027992866e-16 0 2.743136178e-16 0 3.272911514e-27 1.869479686e-07 1385.733608 0 0 0 0 6.567478031e-28 0 0 0.001156714773 0 2.859373302e-18 952.5211928 0 0 0 10656.74893 0 7.905258131e-17 2.159147772e-16 0 2.983199968e-20 0 552.648428 0 0 0 0 0 2.518954142e-08 6.401443662e-06 0 0 0 5343.689777 0 0 0 6922.227954 433.9702014 0 0 0 2.337649291e-10 5.790094361e-10 0 0 0 0 1.249750366e-10 0 0 0 0 0 2.259054713 0 2.10642899e-19 19545.31767 0 0 0 1.805691861e-05 0 0 0 0 0.003362729027 0 0 0 0 0 0 0 0 0 0 0 0 0 1.023516949e-17 0 0 0 494.4428777 0 0 7.392495139e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 9.606959103e-14 0 5.637543023e-27 0 0 0 0 7.657956316e-12 0 0 0 1.696719128 1.918200125e-16 0 9.713559546e-18 1.194669343e-08 0 0 0 0 0 0 1.157622845e-11 0 0 0 4.004508496e-18 0 0 6.679289696e-30 +0 4.157897801e-06 0 0 1.098529097e-18 0.0005966206983 0 472526.0148 0 3.255553827e-23 1.405750547e-07 0 0 5.503117276e-24 0 0 0.00103324215 1.716338963e-32 0 79.10344657 0 0 0 0 0 0 0 0 0 0 1.086103374e-11 0 0.0006976994316 443655.21 0 1.773243301e-11 1.690555072e-24 0 0 1.446559425e-13 0 0 0 0 2.460291328e-08 0 0 0 0 0 0 0 0 0 0 2.129268004e-10 6.201377456e-06 4.501624655e-14 0 6.790148069 7.785074607e-13 0 0 0 0.0009616543188 1.941346281e-12 0 0 0 0 2.259886972e-09 0 0 1.941464548e-13 0 0 0 0 5.865876584e-11 0 0 1.968209134e-27 0 1.477971891e-23 920690.0659 0 0 0 0 1.587735516 0 7.492511541e-08 0 0 0.0543847713 0 6.590165629e-09 0 0 0 0 0 0 6.041254391e-30 6627.989986 0 0 2.876673404e-17 0 0 0 0 4.579991213e-21 0 0 0 0 0 0 0 3238.556843 0 0 6.339421715e-37 0 0 2.982850698e-08 8.8255229e-12 0 0 0 2024.784769 5.268776652e-09 0 0 0 0 15.24495818 0 0 0 0 0 1.334130374 0 0 3.128729158e-18 0 4.99342257e-11 5.218515661 0 0 1.312446e-30 2.588429091e-20 0 0 0 0 0 0 0 5.037702946e-13 0 6.535246445e-12 0.001088527504 0 0 0 0 0 4.747415936e-16 7.294289921e-26 0 118.3530807 0 6.971004841e-22 0 180400.5278 0 0 0 0 0 3.086909735e-12 0 5.419709496e-14 0 0 0 0 0 0 0 1.969028375e-16 0 0 0 0 0 4.858900119 2.165946834e-29 0.07797943448 51560.97849 1.357094407e-10 0 0.0002629204736 0 2.91377974e-10 197562.3959 0 0 472607.2015 0 0 0 0 0 0 4.829915597e-12 3.13580732e-29 0 0 5.214704316e-30 34.66644313 0 0 0 0 0 0 0 0 0 877.6831549 0 0 0 0 0 1.273559144e-19 9.874529508e-07 0 0 0 0 1.549093823e-13 0.0002574500323 4.579272097e-08 0 2482.157805 0 0 0 0 0 20.91389806 0 0 0 2.549682927e-10 0 9.973144941e-11 0 0 0 0 0 0 0.01046396001 1.023597136e-12 0 1.676080456e-18 0 0 4.177013535e-41 0 0 4.189123323e-09 1.267531349e-09 0 0 0 0 0 0 0 0 506.3108751 0 0 0 0 0 0 0 0 0 0 5.594496564e-15 0 +0 0 0 0 0 0 0 0 1.705275217e-17 0 1.481589457e-10 2.949701933e-16 0 0 0 5.884434191e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.838766392e-14 0 0 0 4213050.554 0 0 0 0 0 170.4828605 0 0 0 0 0.0004197521292 0 0 0 130.987603 0 3.756898209e-09 0 0 117993.3372 0.0149969671 1.642271997e-21 0.0236023121 0 2452375.558 0 0 0 0 0 0 0 0 4.009738483e-14 0 0 0 0 0 0 0 1.879942399e-30 0.06177784121 0.002291550689 6.029837009e-08 0 0 2192073.975 0 0 5376.598535 0 0 0 1.522853589e-08 1.418200374 0 0 0 0 0 2640725.448 0 0 6.463496285e-09 0 0 0 0 0.0833797277 0 26.3628397 0.001922489222 0 1.012575151e-11 0 0 21002.61266 9.91741654e-17 1.992519701e-19 1.060696642e-09 0 0 0.003334680128 0 0 18346.0781 1.103650857e-20 0 3.552482968e-13 65.16732262 0 7.486503017e-12 0 0 0 0 54424.91982 1885729.758 1.115039669e-11 1.131755569e-09 0 2.874485746e-20 0 0 8.60155721e-19 0 3.960422513e-10 6.808566505e-18 0 870.8847244 8757.600816 0 1.752950796 0 0 0 808864.8581 0 0 0 0 0 1.578685588e-24 1.082460788e-08 3.961787102e-08 319404.1656 6.802636582e-08 0 0 0 0 1.024427926e-17 0 0 5.105578599e-11 2.027064981e-14 0.000365114226 0 74713.43203 0 0 0 0 0 0 5840.319676 0 0 0 0 0 8.930461447e-05 0 0 0 3.560837751 0 0 0 238868.8348 9.805305508e-10 0 0 0 0 0 4.19252566e-08 0.001418291335 0 1.358393838e-07 0 0 0 8.053106822e-18 0 0 0.01810001526 37083.88761 0 0 0 188.7892285 2.407450162e-15 0 4.114100036e-11 0 0 0 0 0 2605239.897 0 0 5.693504058e-15 0 646.8741624 0 0 0 0.00158365438 4.793713377e-25 0 7.608545157e-20 0 1.599537753e-21 0 0 0 0 0 0 2.790604191e-16 0 0 1.11259112e-13 0 0 0 0 0 0 10.56108631 0 1.008484355e-14 2.104171729e-05 0 0 0 0 0 0 0 0 0 5.688307089e-25 0 0 0 0 0 0 0.1339926993 0 0 0 4.239037734e-21 0 0 0.0003107593879 868.8108056 0 0 0 85407.73611 0 1.98177169e-15 0 +0 0 0 1.68178508e-05 0 0 0 0 0 0 0 0 0.01886329132 0 553058.6445 0 0 0 0 0 0 0 0 0 0 629.6307001 9.507084912e-07 1.541013658e-31 0 9.440911709e-10 0 0 0 0 0 0 0 1.042853269e-27 5.539417365e-13 0.0001714639182 0 1.471180252e-07 3.850658989e-11 0 0 0 0 1.388240906e-09 1.961378042e-18 0 0 0 0 0.9947250895 0 0 0 1.721146339e-13 0 0 0 0 2.880593066e-28 886582.3463 0 1601.489839 1.079615475e-06 0 0 0 5.85373591e-09 0 0 0 1.521800165e-10 1.662984672e-10 9.227166896e-19 2.35638194e-27 0 0 0 1.229013947e-11 0 0 3.824846749e-13 0 0 1.328673853e-20 3.199179573e-23 1.807078043e-06 0 1.051810907e-14 0 0 4.385748824e-17 0 0 1506254.127 0 0.252801697 0 0 6.359321511e-15 0 0 0 7.692784332e-21 0 0 0 0 0 3.354341923e-18 0 0 2.916625753 0 0 0.6208795793 0.005863725249 0 0 12897.05634 0 0 0 0 0.02331211098 0 0 0 0 0 0 0.01775720634 0 0 1.480241576e-23 0 0 0 3.585659286e-20 0 0 0 2.412465657e-36 8.49033454e-07 0 0 0 0 0 1.886890376e-12 0.0007409955884 2.026792883e-13 2.55330579e-08 0 2.453026723e-24 9.896336353e-15 2.628257054e-06 0.002673520434 0 1763659.183 0 0 0 0 0.002336396844 0 55.39017702 6.794458506e-30 0 8.308757267e-11 0 0 4.118029665 8.950250228e-06 0 0 0 4.23848909e-05 0 0 8.36232225e-13 0 0 0.8843809945 773334.2533 0 127969.1695 0 1.148113034e-10 2.584808579e-16 0 0 0 72560.02454 0.001645653597 930632.0427 0 3.770290881e-08 0 0 0 0.0009939140147 0 3.989463358e-08 0 2.961549892e-06 0 59.48586132 0 0 0 0 0 1955762.357 0 1.227444831e-09 0 0 0.001235721093 0 0 4.293757367e-09 0 3.533003641e-16 0 0.01443143454 0 0 0 0 0 0 9.029899817e-05 0 0 0 0 0 0 0 0 0 0 1.138761341e-22 0 0 0 0 10213.23689 0 0 0 1.379914748e-11 0 0.005709492089 0 0 0 0 0 0 0 0 0 3.646258506e-08 0 0.007304100043 0 0 1.514118761e-10 0.0002291830791 0 0 0 0 1.922056183e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0.003032418995 1.23633956 8.407281221e-13 0 0 0 0 0 +0 0 0 0.0008801921379 0 0 0 0 0 0 0 3.269034813e-12 2.089028222e-16 0 8.232912629e-24 0 0 0 0 0 0.005773555209 2735.419344 0 2.70200164e-26 0 0 1.265834995e-13 0 0 0 0 0 0 5.364055099e-10 0 0 0 0 6.397442269e-22 0 2.586889942e-15 0 0 0 0 0 0 0 0 8.478829702e-26 0 9.369458366e-07 2.094972986e-14 0 0 0 0 0 193221.4381 0 1.130474747e-14 0 0 4.143681643e-11 0 0 0 0 8.8680512e-09 0 0 0.07178790736 0 624.7804019 0 0 0 0 0 358516.1296 3.01548112e-21 0 0 0 8.487669569e-19 0 0 2.590061559e-32 452505.0444 4.266173774e-13 0 3.184679381e-08 2.476385183e-27 0 0 1.896439091e-22 2.285584987 6.730554062e-28 6.187974534e-19 0 1.406721103e-30 0 7.112454368e-14 9.921597914e-11 0 0 0.002464547828 7.46804069e-07 1.572867258e-22 0 3.937159532e-10 8.680520069e-15 0 0.001223020881 0 3.717543625e-09 0 3.06738422 0 0 16.06507647 0 0 2.771451507e-12 0 566.596978 26031.03693 1.344084106e-11 0 0 1.475893005e-13 0 0.000112219412 0 0 5743.239727 0 1.466864698e-21 0 0.06727605007 0 0 0 0 2.227211589e-17 0 0 0.1873301128 1.721406828e-05 0 0 6.08353454e-06 0 5.0763422 8.338783877e-10 0 0.003986706131 0.003571410843 0 0 0 0 0 0 0 0.03134740006 0 0 0 0 0 0 0 0 0 0 2.02919177e-16 4.687086927e-15 0 0 0 0 1.010982821e-28 0 7.396281836e-15 0.2933876664 0 7.789124938e-10 31.73341029 0 2.34496496e-05 2.545900513e-31 0 1.47269317e-21 0.04324120458 0.0007929100247 1.095250144e-11 0 0 0 6.650107702e-09 0 0 16524.22456 0 0 0 0 0 7.800827107e-12 0 0 0 0 8.936729347e-34 2.231912374e-13 22.59590454 8.912694837e-26 0 0 0 0 0 0 0 0 20273.96956 0.5872797649 0.0007949559272 0 0 0 0 0 0 58058.21038 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.953376045e-38 0 0.0001942437368 1.86727167e-29 0 1.010004609e-22 0 23796.49986 0 0 0 8.868835328e-21 0 0 0 0 1.16131823e-11 0.0001764747894 0 2.400356536e-27 0 6.707081225e-28 0 0 0 6.175612226e-22 0 0 5154.04876 5.319567155e-26 0 0 0 0 0 0 0 0 186.7371006 0 0 5.917158556e-29 0 0 0 0 0 0 7.741291209e-22 +0 0 0 0 0 0 0 0 0 1.002148769e-07 1.550397716e-07 0 0 0 0 0 0 0 0 4.113693684e-30 326.8003102 0 21288.79418 0 0 3.930654312 0 0.001866807317 0 0 4.577627603e-06 0 0 5.213070212e-15 0 0 112126.4686 0 0 0 1.296147609e-06 0 7.999648695e-24 5.338363265e-11 0 0 0 0 0 0 0 8.816849675e-07 0 3.361342679e-11 0 0 0 0 0 0 0 0 4.582662057e-13 0 1.774551737e-15 0 0 0 0 0 3.804595064e-06 283338.7228 0 0 0 0 0 0 0 0 0 487.324499 0 0 0 4.104647507e-10 6.531091835e-16 4.45631864e-21 0 69836.00095 0 1.71194638e-14 0 0 0 0 2.579105396e-07 2.945337832e-11 0 0 0.05237576491 0 1.297533824e-17 0 0 344040.7576 2190.905176 0 0 407.5525818 1.41563196e-29 0 0 0 0 3.44016169e-20 0 1029702.341 0 0 4.254456471e-13 0 0 0 11089.88803 0 0 0 0 1.650173768e-05 0 10.87470568 2.17791334e-16 0 0 1.536967946e-23 0 0.01799181218 0.01704417963 7.413915675e-14 3.675848574e-20 0 0 0 0 0 0 0 1.083522643 0 0 0 0 0 0.02973122437 0 2.934635209e-19 0 0 34.48483347 437014.3096 0 424795.0011 2.276561191e-10 0 0 0 0 0 6.727844987e-07 2.380527102e-22 0 2.290881773e-08 5283.12726 7.387969093e-26 0 0 0 0 193070.5069 4.0211782e-11 0 0 0 0 0 5.376076951e-32 0 0 0.007004928856 9.712514802e-20 1.485168822e-15 0 1.928767709 6.48843015e-18 0 0 0 4.309419819e-19 0 0 0 0 0 0 0 2.067991651e-26 0 0 8.088013122e-09 0 0 1.174845077e-06 0 0 0 0.01014698852 0 0 91418.22927 0 0 7.314592913e-09 0 0 9.363830739e-23 5.341804347e-06 7.353430069e-28 0 0 0 0 0 1594.314188 2.608546939e-06 0 0 0 1.214036428e-11 0 0 0 0 7.138185333e-14 0 6.018861497e-10 0 0 0 0 0 0 0 0 0 0 0 0 507029.5917 0 0 0 0 0 1.120472976e-09 2.790911318e-06 0 1.580706392e-10 0 0 0 0 0 1.622920752e-16 155.7933058 0 0 0 0 9.27382692e-21 0 2.602436344e-23 0 0 0.0001206042633 0 0 0 0 0 0 0 0 0 7.344629931e-20 0 0 0 0 0 +9.355149719e-08 0 0 0 2.548147926e-42 0 0 7.823424179 0 0 0 1.078011992e-29 0 0 0 0 0 0 0 0 0 0 87.45211846 0 2.669952018e-12 0 1.042395311e-14 1.415604358e-15 0 5.414874919e-21 0 0 0 7.087664951e-13 3103.871263 0 0 1.826976547e-11 0 0 0 0 2.445783329 0 0 6.107847553e-11 4.463725458e-14 3.338974857e-08 0 0.0513851658 0 4.662099142e-26 0 2.392408553e-16 0 0 0 0 32373.49235 0 0.00278964452 5.3564824e-10 13.56187801 0 7.95881797e-08 0 0 0 0 0 0 1391424.443 0 0 0 0 0 0 1.200693837e-19 6.096631736e-20 0 0 592.7307743 0 0 0 0 1.691546158e-24 0 7.972158523e-15 0 0 276989.5617 0.0001041846096 0 0 7.392434653e-14 0.03330040877 0 0 995315.9135 0 2.800409933e-17 1.008360099e-10 0 0 0 0 8.1844246e-05 4.777074282e-16 0 0 1.133773602e-21 0 0.0002235098669 1.348820519e-21 9.434343525e-12 147.7524724 4.68665424e-17 9.768560388e-16 0 0 4.643922307e-22 1.152298801e-05 782649.5232 4.113608869e-21 1.679129004e-20 0 0 69.34822911 1.148269634e-15 4.552486674e-05 0 0 4.407918444e-10 0 0 0 0 54.86815425 0 3.30642122e-15 1.82268597e-11 0 0 0 0 0 0 4.756761023e-08 0 0 5.060687095e-08 0 0 0 0.02837899328 6.244467717e-28 0 0.3334071568 0 0 0 0 2.144776963e-16 9.289472636e-17 0 0 733.237398 4.147988319e-11 0 4.437759328e-14 0 0 0 0 3.718781974e-13 1.348933602e-16 0 0 0 6.12071864e-09 2.054606884e-06 0 0 0 0 0 0 0 2.559078151e-05 3.832551553e-11 6.546701719e-34 0 20.46752298 560121.0573 0 0.2871990102 0 0 1.548179203e-12 7.756025279e-23 0 9.030607268e-06 0 0.8628741745 0 0 0 10.07111547 0 3.914197937e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 2.305942226e-19 0 0 0 0.001393437267 0 0 1.744825965e-11 1.050737007e-07 0 0 0 248869.169 0 0.0005221854918 6.118524513e-06 510.5271717 39.85770188 0 0 0 6.173165472e-30 1024.640233 0 0 0 0 1158534.56 0 0 0 0 0 0 0 0 0.002417072836 0 0 0 1.256791379e-25 0 0 0 0 0.005974543766 0 0 0 0 0 0 0 0 3.647468267e-13 0.1365003593 0 0 0 2.057604985e-05 0 0 0 0 0 0 4.751774171e-13 0 1.010469287 0 0.0240180088 0 0 0 0 +0 3.733392424e-08 0 0 0 7.883618997e-05 0 0 0 0 0 0 0 0 0 0 0 0 2.503495246e-26 0 0 0 1.130991468e-15 3.969966051e-19 0 0 0 3.122870445e-26 0 3.162784867e-10 0 0 0 0 0 0.003181163232 1.561624471e-06 0 0 0 0 0.001061623142 0 0.002224809421 0 0 0 0 0 0 0 0 0 0 0 0.0007009227522 0 0 0 0.3855033023 0 0 0.0004983299828 0 0 0 0 0 2.735731183e-05 0 0 4.465203104e-28 0 0 5.106030771e-14 0 3.577779173e-11 0 9.997027488 0.001385522565 9.967372564e-16 0 0 1.515308755 0 0 0 0 0 0 4.052347425e-14 7.479930588e-06 3.364031544e-28 0 0 2.871068586e-21 15386.26897 0 2.295470499e-08 2788543.218 0.01564153403 0 4.746896281e-35 0.8082536034 0 0 2.216741047e-08 2.468664992e-20 8.916157467 0 0 0 0 0 4.360398465e-05 0 0 0 3.144161163 0 0 9.831723447e-15 0 0 5.076179924e-35 0 0 0.01352404348 4.998996013e-06 11.2705006 0 0 8.397545301e-16 0 0 0.03949789403 0 0 0 7.757624932e-18 9.833815086e-13 0 0 0 12.82321803 2.032868337e-13 0 0 3.884119138e-23 106.5260214 3.960097698e-14 0 1.318004555e-06 0 0 2.308743428e-09 3.880465689e-26 4.744034587e-26 0.0002217436268 16.91568125 0 2.239222541e-10 0 0 20482.1948 0 0 0 0 0 1.811462424 4.281683412e-17 7.761416647e-05 0 0 0 0.0002374777531 0.0001198388457 0 0 1.34489977e-20 0.006619002509 0 0 3.110832987e-05 148.8052997 0 1813.759296 0 0 0 0 0 0.02808932472 0 3.522785284e-14 0.7980092311 0 7.163469753e-15 0 0 0 0 1.28045062e-05 240.4631666 0 0 0 0 0 0 78.00053688 0 0 0 0 2.832007715e-09 31315.65411 1.854690086 0 0 0.0001262384428 0 3.459489358e-08 3.029622042e-17 0 0 0 0 1.091218401e-15 0 0 0 0 3.405439952e-14 0 5.059874548e-12 7.926702945e-13 0 0 0 0.01197619899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.467923441e-10 0 0 0 0 0 1.572802789e-09 6.737773422e-10 0 0 0 0 1.179061958e-13 1.280559972e-19 8.151802999e-20 0 0 1.152333218e-06 0 0 0 1.395125966e-08 0 0 0 23.68732429 1240220.972 1.259178944e-21 0 0 0 0 0 0 0 0 0 1.083448516e-15 0 3.079178433e-26 0 +314323.7904 0 3.120600091e-09 0 0 0 0 1.754847719e-08 0 198610.1357 0 0 0 0 2.79714528e-19 1.545520244e-09 0 0 0 0 0 1.927054834e-24 0 2.836370379e-08 0 0.001880296224 0 0 55.40551997 0 0 0 0 0 0 0 0 0.0003835223162 181304.1099 0 0 0 0 7.887874054e-28 0 0 0 0 1.25940068e-06 7.618075255e-15 0 0 1.816632285e-15 0 0 2.586943934e-08 0 0 0 6.169927828e-06 3459.17261 1.286695055e-29 0 0 37607.17669 0 0 4.004312382e-16 0 0 0 0 0 0 0 6.603194312e-13 0 0 6.766945583 0 0 0 0 0 0 0.0003093444431 0 0 0 0 0 0 0 0 0 0 0 0 0 1.004562103e-09 0 0 5.858881294e-18 0 0 0 0 0 0 4.646457994e-18 2.041075679e-29 0.6372292112 0 0 0 0 248288.5478 0 0 1.239621843e-28 7.418099453e-15 0 1.500478726e-10 7.290793596e-31 0 0 0 2.605501618e-11 0 0.1074985107 0 0 2.615207338e-06 0 0 0 0 29.55037838 3.84031547e-09 0 7.131872706e-10 0 0.7117504059 1.813188635e-14 0 0 0 0 0.04678169592 0 9.364163753e-16 1.590121883e-36 0.0004252827455 0 0 1.033058977e-18 0 1637015.596 0.02034086106 0 0 0 0 0 3.576938727e-11 19.27208731 0 0 0 2.578238065e-08 1.225591261e-08 0 4.382502528e-11 0 9.919701574e-05 0 0 0 18710.50009 6.683880418e-25 0 3.78919257e-11 0 0 0 1.658063421e-32 0 5.538445769e-07 0 3.850757427 0 2394.882852 0 0 0 0 1.960279366e-21 0 0 5459.031074 0 0 0 0.03559421076 0 5.288712591e-13 1.194574252e-41 0 0.0006133235543 2.774419507e-12 27.0586287 0 3.775360689e-06 0 0 0 0 0 0 20247.79193 0 0 0 0 0 17320.05188 0 3.139416699e-21 0 7.446375038e-08 0 0 0 0 0 0 0 0 0 0 0 7.669708437e-09 0 0 0 0 0 0 4.394700251e-06 0 0 0 0 0 2.23309219e-18 13477.15247 0 0 0 0.005698787351 0 9.281200308e-28 0 0 0 0 0 0 0 0 0 0 2726.174576 1.936640729e-18 0 1.812762894e-09 0 0 0 0 0 0 0.01944315939 0 0 0 0 0 0 0 0 9.413212737e-13 0 0 0 7.433059345e-28 0.002152161087 0 0 0 +0 0 0 0 0 0 0 0 0 0 8.874449949e-33 0 0 0 0 0 0 0 171380.6725 1.161206097e-16 0 0.0002013537069 0 0 0 0 0 0 0 0 4.47918693 0 0 0 0 0 0 0 0.004157752618 0 1112045.77 0 0 0 1.487424808e-10 0 0 13572.45757 0 0 2.508227685e-20 2.112846333e-10 0 0 0 0 0 561.8539745 3.058847383e-09 0 0 0 1.172533159e-09 0 0 3.590718396e-13 0 0.09015361582 0.02538423569 0 0 0 0 0.8074019635 3.027871386e-13 0 0 0 0 2.312242337 0 0 0 0 1.891011156e-12 9577.456486 7.246360867e-09 1.797170702e-26 0 7074.322873 0 2.104361448e-10 0 0 0 4.289852306e-14 1.048785718e-11 0 0 2.908188212e-05 0 3.83130036 114316.1088 0 8.952342139e-13 3.429250278e-05 4.242621609e-09 1769962.88 1.402101803e-13 0 1586.381573 3.389335612e-09 111.167525 0 4.898324334e-11 0 0 0 0 1.208030195 5669.954787 0 0 0 0 0 2.901085501e-15 0 0 0 0 4.244348052e-21 8.555768418 4.332855683e-09 0 2.397111341e-10 0 7.657724324e-16 1.336537625e-34 5.223891299e-12 0 0 0 0.911252015 0 0 0 0 0 0 6.124259989e-06 0 71.89884548 4.401551727e-21 0 0 3.625684709e-07 1.940707826e-31 0 0 0 4.409753711e-08 0 1.275942901e-18 2.681639014e-17 0 2.495424424e-20 4.090043198e-17 0.004884351352 3.391890804e-10 0 0 1.225704394e-14 1.347012752e-11 8.200678814e-07 0 0.06106066561 0 1.642737758e-23 0.3016351627 0 0.6069871483 9.010844459e-18 2.573810524e-11 0.003781571659 0 6.378789117e-07 0 0 0 0 0 1.367182218e-22 0 0 0.01702341156 0 0 0.008991807807 0.1805115803 1.320408211e-26 3.133828674e-10 1.030722788e-09 0.0108955142 0 0 0 0 9.843604867e-05 619.6782268 78402.06425 0 246531.1421 1.110560082e-27 0 0 0 0 0 0 0 0 0 0 0 6.94348254e-17 0 0 8.940427833e-19 23.46280664 0.01285989476 2.016720486 2.875070392e-12 0 0 0 7.888717585e-05 11172.0589 0 0 1.446516548e-11 0 0 0 0 0.689982681 1.326341989e-08 0 0 0 0 0 0 0 1083.760626 0 127.1286549 411208.5761 6.415199522e-12 0 0 0 0 0.8713988462 0 0 0 7.778557233e-07 0 0 0 0 0 0 3.147066498e-13 0 0 0 0.0004723548531 6.744114039e-14 0 0 2.19226619e-09 0 0 0 2.75305832e-23 1.337609556e-22 0 0 2.752570007e-18 0 0 0.008628146637 0 0 0 0 0 0 +4.856478242e-10 1.389045407e-29 1.147129007e-05 2.660134682e-05 0 1.827652949e-19 0 0 0 0 0 0 1.927793011 0 0 0 2.204927497e-13 0 0 0 4.831044077e-28 9.254590189e-14 0 4.401278521e-25 0 0 32.59989783 0 0 3.492067399e-05 0 3.791763039e-13 0 0 0 0 0 1.197105588e-08 0 0 0 0 0 0 0 0 2.020470024e-11 6.792578052e-25 0 18521.48534 0 0 0.01410994045 1.597360846e-06 5.184424247e-09 0 0 0 1.464954674e-07 1.375001182e-07 0 0 2.453981993e-07 7.131579561e-14 0 0 0 0 0 0.0004886800019 0 0 0 6.346840189e-24 0.0004200278423 0 0 5.191302257e-22 0 0 0 0 0 2.346901082e-10 0 0 0 2.621126389e-22 1.791065338 0 0 14.20185811 0 8.554030988e-26 0 873249.2606 1.389140537e-08 13876.53792 0 0 0 0 0 1.325323559e-25 0 0 0 8.140666655e-19 536.6660823 0 7.190439259e-29 0 0 0 0 0 0 1.657998474e-09 0 0 0.1895787866 0 4.220977933e-17 0 0.04756319402 2.344107093e-15 6833.160067 1.697406313 0 9.676959419e-14 0 0 0 0 553552.9133 0 0 2.119792003e-10 0 0.3964136848 0 0 2.376871879e-25 0 3.322871659e-31 0 0 0 1.45533336e-11 1.964488419e-20 0 0 0 4.239066709e-06 0 1.523633101e-07 9.990957839e-05 0 1.264345287e-26 0 1.743604254e-08 0 3.01281397e-10 0 0.1906108499 0 0 0 0 5.405447671e-11 0 1.557358661e-14 0 0 0 0 0 0 0.08025487212 112.4147951 0 0 0 41926.69225 8.218969729e-19 0 0 0.1329739289 0 0 4.110557373e-17 2.824029513e-05 1.809896998e-21 1.699351478e-35 5.157422561 0 0 19459.8488 0 20.5871065 0 0 0 0 0 0 63.4184315 0 0 0 0 0 0 0 0.000147596259 0 0 1.04261279e-24 0 0 0 0 299.8542646 0 0 281108.5543 0 0 8.795978315e-08 0 2.360052804e-06 0 0 0 0 0 0 0 0 0 0.01188053045 1.179072062e-07 0 0 0 0 0 0 0 62043.32196 0 331.4048683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.333597462e-17 0 0 0 6.301621296e-14 0 155.9590821 0 0 0 0 0 0 0 0 0 0 0 7.402236163e-10 0 0 0 3.400041521e-11 0 0 0 0 0 0 0 0 0 0 39904.43 +0 0 0 0 0 1.176512912e-07 0 0 0 0 0 5.35577732e-09 0 0 0 0 5.690990387e-18 0 0 1.004250268e-11 0 0 0 0 0 0 65315.93299 0 0 0 1.56903948e-08 6.923251364 0 0 0 0 0.5021024265 0 0 0 0 0 0 0 0 243.1375905 32512.34375 1022.111396 0 1.008151186e-28 0 0 0 0 0 0 0 1.563472698e-05 0 0 0 1.340651064e-10 1.62518756e-19 0 0 0 0 0 3.331078978e-17 0 0 0.02888037472 0 0 0 1.026491707e-13 0 0 0 0 3.98053383e-22 0.002964780134 569.7239813 0 6.950652811e-18 13.63021439 0 1.176030465 0 0 0 0 7.80777894e-18 1.036048722e-16 0 7.241159177e-20 0.007277709968 0 0 2.006125125e-06 3.326340209e-07 0 0 2.197089791e-11 0 7.312825248e-08 2.278029073e-07 0 0 2.448724172e-06 0 0 0 0 0.03004211106 0 0 0 0 0 0 0 0 0 1.50619688e-13 4.234236961e-29 2.630101335e-18 0 0 0.00617192662 1.051201048e-17 0 0 0 1.22108316e-19 0 0 12.97688146 0 3.045463244e-06 0 4.28806411e-11 0 0 2.618463886e-18 0 0 3.177401799e-38 0 0 7.683421952e-08 1.048689498e-08 0 0 0 0 0 8.220983471 0 3.874880733e-08 0 0 885.4452684 0 0.05131127243 1.82456564e-13 0 21951.26829 0 0 0.4047373528 0 3.232659308e-15 0 6.092782977e-27 3.920548948e-18 22200.15998 1.639412116e-14 3857.055605 4.093352854e-10 9.903564055e-10 0 0 0 0 0 0 0 0 1.883064379e-07 1.075926252e-08 0.01791208088 1.279601279e-28 0 0 81096.92372 1.266056805e-14 1.527584563e-22 0 0 151525.8196 0 0 0 0 7.336964293e-05 0.00161686642 0 1463053.359 0 3202101.525 0 0 9.859494182e-21 3.844890991e-07 387.3194348 4.646769481e-32 0 0 0 0 0 0 3.233390867e-16 2.086072024e-21 1.235041104e-27 0 0 2.200732341e-21 0 0 0 0 0 7.152465697e-16 0 0 0 0 0 0 141310.8119 0 0 1391462.759 0 0 0 0 0.01333061239 3768.985296 0 0 0 0 0 0 123.0317286 9.976694235e-05 0 3.204493713e-15 3.538786923e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 9.707179346e-05 7.834886705e-14 0 0 1.107606765e-35 0 0 0 0 0 0 0 0.000436516026 0 241195.4473 0 1.118453108e-13 0 1.704067917e-15 0 0 0 9.390935704e-11 0 0 +1.802620299e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.419011717e-24 0 5.650420126e-16 1.13174372e-13 0 0 0 1.907340097e-13 0 0 0 0 0 0 0 1.654082921e-07 0 3.581867642e-12 0 0.0009098965677 0 0 0 0 0 0 2.133366189e-34 0 0 3.085214198e-12 1.513545934e-20 0 0 0 0 0 3.614049082e-05 0 0 0 0 0 1.716577207e-11 4.631137657e-08 0 0 1.33487751e-05 0 1.594788039e-21 7.559042675 544337.4764 5.993100709e-27 0 0 0 0 0 0 0 0 0 1.04663889e-17 0 0 1.433036212e-19 0 0.0001707363418 0 0.124445369 0 3.910418411e-08 0 1.436605715e-17 4.605643725e-05 5.787999719e-10 0 0 0 5.836552847e-25 48253.63673 0 0 4716.053063 0 0 0 0 0 1340900.841 4.564426346e-09 0 6.260347494e-12 0 1.163230712e-08 0 0 5.467501588e-30 2120.739981 0 0 0 331270.0154 3.848767074e-05 0 0 0 0.0005602486262 0 8.213831293e-05 5.878119137e-23 0 0 4.631797961e-17 5.234523411e-12 270105.5618 0 0 0.002157468844 0 0 0 0 60952.62614 0 0 0 7.980556507e-11 174779.865 1.576320202e-05 7.137524124e-10 0 111.2920578 21350.97902 119751.5852 3.145344817e-11 0 1.070482894e-16 0 7.206249772e-08 0 0 3.770225547e-13 0 0 1.391277808e-05 6.339355603e-14 0 5.064780105e-05 0 0 2.827453664e-10 3.591581485e-17 0 0 0 0 1.84014414e-21 392.6496304 9.133673581e-05 0 0 0 0 11960.30214 0 0 0 0 0 9.671846229e-10 0 0 0 0 1.516475387e-07 0 0 0 0 0.1564558108 14.66358129 0 2.216033449e-13 0 0.0001158155954 0 1.490931437e-13 0 4.731720604e-38 0 101.9229351 1.856306544e-20 0 8.286809734e-05 0 0 0 1.021038395e-05 0 0 0 0 0 0 7.552988317e-17 0 1.341432925e-05 0 0.0204008534 2.724954771e-24 0 0 6.626131386e-28 0 0 0 1.257974883 0.01782598115 1.611711522e-27 0 0 48.30429085 0 2.715064406e-10 0 0 6.503768169e-05 0.158497705 0 0 0 26320.84174 0 0 1.248062878e-21 0 25.66359783 2954.73189 6.179168233e-05 0 0 0 0 0 8.277864926e-11 112.1738511 0 0 0 0 0 2588355.479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.101053557e-16 2250.470267 0 0 0 0 0 0 7.932556424e-29 1.275043366e-08 3.122886928e-13 0.0001754022549 +4.485351073e-22 1.456583771e-05 1.481986929e-23 3.662239878e-12 0 0 0 0 0 0 3.548882406e-22 0 0 0 2433642.924 4.481935469e-14 0 0 0 0 0 0 0 1.343842413e-14 5.470690135e-08 4.36497706e-05 0 0 98741.87431 0 0 0 0 0 0 0 2.019348752e-20 0 1300271.724 0 0 0 0 2.251459661e-10 6.981035222e-08 3.778291094e-12 0 0 224814.2173 0 0 0.1574362052 0 0 0 0 0 0 0 6.521279757e-07 0.0004660325672 22.9780335 4.720511343e-05 0 0 0 0.000327386584 0 0 0 0 0 0 2.356941078e-19 4.781437395e-14 0 2.597205961e-12 5.519446945e-12 0 0 0 0 0 0 0 0 0 1.230676116e-16 0 0 0 4.102373226e-08 0 0 0 0.0005637088335 3.21466253e-24 0 1.443628894e-14 1.033561829e-15 0 0 9.155756133e-12 0 0 0 0 0 0 0 9.589228245e-13 0.0001514097769 9710.557621 1.729568486e-10 0 4.167054656e-06 0 2.756687726e-06 6.380805595e-40 0 1.106072242e-26 0 0 0 0 0 0 0 0 69.99592085 0 5.453688108e-05 0 1.740494301e-18 0 1.03203158e-08 82.02617836 404.5008893 3318.789474 0 0 0 7.031237988e-16 0 0 6.363884909e-10 25840.4684 0 6.225770726e-09 0 0 1.548666553e-07 0 0.0008623680693 0 5.831983708e-31 3.277559179e-05 1.751491108e-14 0 0 3.450734864e-25 5.083066913e-23 0 0 0 0 0.00262782902 0 0 43.87731401 2.92103871e-13 0 0 0 0 0 5399.499129 60374.24042 2.22955162e-08 0 2.914327114e-05 0 2.381790192e-15 0 0 0 2.003126907e-07 2.342530001e-09 0 1.877258582 0 0 2.190705713e-19 0 0 0 0 492.5701803 0 0 30236.15132 0 0 617.4996829 0 0 0.0001433747877 7.14664441e-12 3557833.312 4.137495762 0 0 0 0 1.352549014e-09 0 2425.746287 0 0 0 17106.41327 0 50.80367346 0 0 9.799327695e-14 0 1.828400423e-20 0 0 1.246110239 0 0 0 7.330453373e-18 0 0 0 0 0 0 1.613794543e-05 0 0 0 0 8.062422323e-11 155.5013567 0 1140745.18 0 0 0.009050872035 0 373.7075556 0 0 0.01671153281 0 0 0 0 4.076887521e-12 0 0.04702917198 0 21876.34151 0 0 0 0 0 0 0 0 2.085939901e-11 0 0 6.283485929e-29 5.298698044e-15 2.196173792e-15 0 0 1.113761452e-18 1.063458839e-26 3089450.86 0 4.399040509e-08 4.576976602e-06 0 0 0 0 3.061140051e-05 0 0 0 3001.026306 2.471166458e-09 0 +0 0 0 0 0 0 0 0 0 0 0 0 1.205696118e-19 739820.1513 0 0 0 0 0 0 1.895719794 0 0 0 0 0 0 0 657182.2698 1.074718068e-12 0 0 0 0 0 0 0 0 4.082749358e-22 0 0 0 0 0 0 185.0182351 0 0 0 0 0 2.473364233e-20 0 0 0.04881836104 9483604.945 3.606579395e-05 1.139076895e-12 6.791077806e-32 0 0 0 0 0 0.0005723141247 0 0 3.920997044e-10 0 0 0 0 0 0 0 0 0 6.043916701e-14 0 0 0 0 0 0.003331983785 0 0 0 0.002562258765 0.005493294619 7.376604858e-27 0 0 5497.170372 0 8888.849484 0 6.495992946e-25 8.354370985e-13 0 0 0 2.186773208 0 3.432581458e-05 0 1.785444393e-13 1.903322488e-06 0 0 0.008344058496 3333517.488 0 1.537030255e-07 0 0 0 2.376547808e-07 0 0.0001684915195 0 0 2.076703027e-18 4.584950767e-21 0 0 0 0 0 0 0 0 0 0 0.0003301607091 0 0 0 1.71335624e-05 5.78002823e-13 1.26349772e-27 104.4125558 0 0 0 8.658638291e-20 0 1561761.552 0 0 17.06960438 7.609456729e-14 2.674901875e-08 0 1.358338629e-10 0.001347101011 1.890947305e-10 0 4987.40724 0 0 6.692575448e-07 0 0 0 0 5.969115471e-05 0 0 55533.79545 0 0 0 5.44647114e-12 16.9905706 0 0 685.1402342 1.319257288e-08 0 1.838640955e-16 0 0 0 2.672012696e-05 0 0 0 13829.3568 0 2.958313957e-16 0.000699725618 0 0.004642448326 0 0 40.37046007 254460.1158 0 0 33.76794111 0 0 2.758708534e-05 118.1586685 8.825650217e-19 0 754.8319779 0.6085295257 0 0 6.118882007e-18 59.67864902 0 0 0 0 0 0 1.270557157 0 0.1318120455 6.706841425e-17 0 225507.474 6.003524431e-05 0.5437684 1.429751934e-05 0 0 8.114361601e-13 0 0 0.0003004722326 0 0 0.0009750615267 0 0 0 0 0.01055785039 0 9676.433458 0 0 0 1.301471132 0 0.01453209209 0 0 0.00011846041 0 3605870.765 0 2379047.002 6768.858456 0 0 0 0.00164097381 0 0 0 0 0 0 0 0 0 2.712039139e-08 0 1.769116152e-21 1.657099024e-20 0 0 0 0 0 0 3.510657151e-29 0 0 6.636367861e-15 2.492031265e-14 0 1.991688843e-16 0 373633.4445 0 0 0 641769.4094 2.110284437e-10 0 0 0 0 0 0 +4.292599832e-07 0 0 0 0 2.371694813e-11 0 0 0 0 0 0.2930478998 0 0 0 1.854732365e-18 1.075383287 0 6.979595855e-10 12299.4402 0 0 0 0 0 0 0 0 0 1.202336978e-07 266897.1092 5.780587195e-29 0 3.769547591e-10 0 0 0 0 0 3.324963769e-11 2.750763289 0 0 0 0 0 0 0 0 0 0 1.540521486e-12 0 0 52818.94316 0 0 58077.26533 0 0 0 0 2.167271803e-06 0 0 0 0 0 0 0 2679064.81 0 5.904748195e-22 4.037853346e-07 5.080827813e-26 1.309295826e-05 0 0 0 0 481.474577 1.952335601e-14 0 110272.7764 0.090559619 1.377462042e-15 0 3.721044974e-05 8.658610922e-05 0.001547810843 0 0 0 0 2.579754548 0 0 0 0 3.22789898 0 8.175331092e-05 0 4.180638326e-20 0 0.0002567873506 0.009554223061 4.118977036 0 0 8.545297415e-09 2.359835507e-13 2.131127232e-07 1.453222674e-08 1.962136653e-06 0 0 0 0 0 3.426583012e-12 6.697721735e-25 0 3.564964441e-12 0 0 0 0.01301423286 0 0 0 0 0.05778583666 0 0 1.664646307e-14 0 1.747477732 2.481315621e-05 1.937818889e-24 4.414623509e-20 0 0 0 27.65766021 0 0.0003028906821 1.928221773e-15 0 0 0 0 0 9.220014841e-07 0.0003381987154 1.289690297e-26 1.489600503e-08 1.190240647e-15 0 0 0 0 0 0.001707390253 0 1.219493498e-08 8.528626251e-19 0 3.650980609e-11 9.454462086e-05 9.763769257e-05 0 7.942628059e-13 0 0 1.062524809e-05 0 0 3144.501982 0 0 0.0284488225 0 3.599512749e-23 0 248.6660717 8.510651416e-14 7.200261174e-15 0 0 0 0 5.028074841e-10 1.10112113 0 0 2.997067183e-10 0 0 0 3.885255631e-14 0 0.007432809893 0 0 0 0 0 0 0 0 0 0 0 0 1.3406365e-12 0.0009389305493 0 0 0 126.2697172 2.49097422e-14 8.855494589e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 1.616296456e-07 1729.720585 0 0 0 0 3.46588793e-12 0 0 0 4.87298559e-09 2.726191796e-10 0 2.138412639e-28 0 1.14506439e-07 0 0 3.411538174e-06 0 0.06889839583 0 0 9.595622028e-05 1.998225154 8.818446393e-26 0 0 0 0 0 0 0 0 4.6112382e-24 0 432.7221799 0 0 4.781642168e-19 0 0 0 0 0 0 0 0 0 0 1.154547054e-12 0 0 0 0 0 0 0 3.906548887e-09 0 0 0 0 0 +0 0 1.650658411e-13 0 0 0 0 0 0 0 0 213879.9054 0 0 0 0 0.04273020103 0 0 0 0 0 0 0 0 0 5.177342788e-20 5597.204444 0 0 0 0 0 0 0 0 0 0 0 0.0002628590614 0 0 0 4.666949514 32504.91209 0 0 0 0 0 0 0.003305038263 0 0 0 0 0 4.628356945e-21 0 1.798738323e-12 0 0 2.10506354e-17 0 0 0 0 5.611989042e-12 3.832694205e-21 0 0 0 0 0 0 2.458379832e-15 0 0 0 0 0 0 0 407.6012303 0 0 1.536440631e-07 0 7.795421819e-23 2.563174332e-11 9.346150504e-23 0 0 0 0 2.960834105e-21 0 0 0 4.213233705e-07 0 2.437618727e-27 2.21031614e-19 5.389505547e-18 1.386408828e-23 49855.8283 3.762589135e-31 0 0 0 6.853299414e-14 0 1.287968975e-15 1.763942107e-09 0 0 8.02969015e-11 0 0 0 8.038000894e-13 5.933110378 0 0 18.31016645 0 0.0001593750951 4.156706673e-13 2.244692842e-23 1.200443484e-11 5.814929683e-06 0 0 0 105287.2395 4.012794778e-21 0 2.845021685e-13 1.323058068e-05 0 0 0 2.560523687e-07 0 2.100405075e-22 5.523639555e-07 2.439258246e-17 0.0002505211132 0 0 12.88302435 0 0 0 85.61336026 0 0 6.513549605e-13 0 4.275269294e-12 0 1.350910792e-08 3.452035933e-16 0.004823942343 0 0 1.447220455e-13 0 0 0 1.568268198e-06 0 0 1.465404204e-10 0 0 0 1.451696222e-09 502385.1472 0 4699.350739 3.110005158e-12 0 0 27807.6343 0 2.916718761e-22 0.3498156714 7.992487055e-07 0 0 0 0 0 0.001523037738 0 0 0 0.01116664425 0 1.700557258e-09 0 38882.23542 0 0 0 0 0 0 0 0.01484518271 0 0 0 2.22321663e-15 0 0 6.364342435e-10 1.199253335 0 145051.9666 0 0 0 0 3.485829568e-23 0 0 0 0 0 0 0 0 0.04325647574 0.002980871114 0 0 0.005855745358 0 0 0 0 0 6.722129034e-07 0 105719.3821 0 4.111978128e-07 0 0 0 0 0 0 4.869154404e-16 0 0 1.799922562e-23 0 7.750752121e-22 0 7.381327982e-29 0 0 0 0 1.462727513e-07 0 2.775261399e-19 0 0 0 4.359051549e-31 0 0 0 0 0.02957891717 2.665022188e-20 0 0 0 0 0 0 0 0 0 915.8672532 0 0 0 0 0 7.112913389 0 0 2.146348877e-15 35.23073814 +0 0 0 0 0 70.07855006 5.163339034e-14 0 0 0 0 0 0 0 0 0 0 0 1.845470216e-20 0 0 3.403656169e-16 0 0 0 0 47374.34223 0 4.952965072e-21 0 0 4.860960665e-27 0 0 0 7.224248822e-20 0 0 0 0 0 0 0 0 0 0 7.085351585 0 0 0 5.269941676e-07 8.031229814e-18 7.24109156 0 0 0 0 0 0 0 2.591731965e-22 0 8.100646045e-09 0 0 0 138.5348816 0 3.209470903e-06 0 4.844781415e-29 5.458928444e-06 0 146.4997894 6.640592224e-11 0 0 0 0 0.0003868608361 0.0007575306353 4.354393795e-20 5.680502855e-14 238756.0415 6.526526847 1.526310804e-21 1.287080405e-14 0 22.73837875 0 0.06667852777 6.469641011e-14 0.6046456559 0 0 4.275596158 1.429899928e-07 0 4.957758183e-05 0 0 0 0 2.282729537e-09 0 0 0.01585559714 0 0 1.267630324e-14 0 0 0 1.210612311e-12 0 0 0 0 2.851055995e-10 0 1.047255869e-19 0 0 1165120.456 0 5.789177379e-14 0.0001295827015 1.128601492e-05 3.524873123 0 0 0 108.3621535 7.58700939e-19 4.87561893e-17 69.21672191 0 0 1.728388645e-15 3.07314451e-06 0 0 9.519969344e-10 31.54936651 0 0.4645493679 0 0 0 2.139498864e-12 0 0 0 1645285.327 0.001501688061 0 0 3.918421744e-07 0 1.189417629e-22 0 0 5063381.01 0 0 0 4.606819847e-15 0.01049728841 0 0 0 0.142484464 2.84975852e-12 0 6.647234146e-12 0 0 2.210542563e-13 0 0 5.09182225 0 0 0 0 1.673511155e-27 0 0 0 1.056636793e-23 0 0 0 9.246310863e-13 5.272539975e-09 0 0 1.078809927e-07 0.1766639354 0 75520.73333 0.03242156354 0 0 0 0 0 0 5.747890197e-11 0 1.961032583 0 0 561802.6413 0 1.379305193e-14 919.385409 0 3.852824376e-17 0 1.326766261 0 1809.678782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.02334428e-16 0 69066.37301 4.534862519e-07 0 2.964319674e-22 0 0 0 0 0 0 1068133.021 0 0 0 0 0 3.241318742e-21 1003.090174 0 1.45125494e-17 0 191130.1662 0 4.920477349e-13 0 0 0 1.070413768e-10 0 0 3.542322667e-16 0 0 1.723611277e-06 0 0 4.757390969e-14 0 0 0 0 0 0 0 0 0 723.4856501 3.085427857e-17 0 0 0 0 7.362997219e-05 7.776253376e-13 0 0 0 0 0 +0.001616599902 6.156815995e-11 0 0 0 0 0.007312584734 4218.012084 0 110959.7348 0.0001672355964 0 0 0 2.84447358e-27 0 1.05392129e-06 0 0 0 0 0 0 1764.281379 0 0 0 0 0 5.182384612e-10 0 0 0 0 0 5.716298606e-20 353349.9589 0.001533827978 1.076034534e-09 0.02064205446 0 0.1435540479 0 0 0 873.0612751 0 5.194171345e-10 0 0 0 0 0 0 0 2642538.261 5.834682916 102048.5619 0 0 0 0 0 0 8.889403973 328.0308275 0 3.22862848e-09 0 0 4.522108471e-10 0 0 3.23770447e-13 0 0 0 0 0 0 0 0 0.5246021604 0 7.829133425e-23 0 7.107581386e-07 0 0 7.988159838e-11 2.29919387e-10 13.52190686 0 4210.618537 0 0 0 5.025755509e-07 0 0 0 1.765933362e-13 0 0 0 0 0 0 0.7217834887 8.382869472e-10 0 0 6.953284417e-21 6.214812488e-09 0.7932565814 0 0 6601.028374 1.827102694 0 0 0 0 0 0 2.258013145e-30 0 0.0006717011839 0 0 183.3804682 0 0 0 0 0 0 0 0 0.1402939632 0 96.05837282 0 0 0 0 0 0 0 0 9.418875027e-07 0 0 0 0 5.501946834e-14 0 0 0.00201233494 0 0 8.138940238e-16 1.4097946e-14 2.611196962e-28 0.4259641548 2634.752618 0 4.274221212e-13 0 1.208222649 1.510102068e-06 0.003927026242 0 0 0 0 0 0 407.3517175 0 0.0004244020856 1.979491499e-13 7.742858422e-05 1.077936583e-09 9.482748723e-17 0 9.891699774e-27 0 6.150419564e-17 0 7.284942264e-05 4.351826912e-06 0 1.43172005e-05 5.105466325e-11 0 0 1.267935981e-06 0 0 2.912574748e-15 2274.356262 0 0 0 2795.992165 0 0 0 6.852661715e-22 0 1038933.274 0 1.676662986e-10 0 0 0 0.0004188417424 0 0 0 0 0 0 0 3.293607746e-10 1.482974925e-10 0 0 7.115634393e-13 0.0001169571221 0 0 1.589043301e-13 0 0 0 3.852126037e-11 0 0 0 0 0 0.3451170208 0 6220.708809 0 0 12.57295152 1.535111054e-07 0 0 1.420010777e-07 0 0 0.001518610638 0 0 0 2.235793021e-14 0 944.8784329 0 1.513922634e-15 617665.164 0 0 2.212706508e-07 2.345693825e-05 0 0 3.359595662e-15 0.004846454553 0 0 0 0 3.507739329e-06 0 0 0 0 0 2.500786711e-12 0 0 1.820845294e-06 0 8.374632339e-15 0 0 0 0 8.733455354e-07 0.03765515935 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 9.161569288e-16 23687.78833 0 0 790.4438241 0 0 0.01021399948 0 0 4.159635383e-08 0 0 0 0 207621.7261 5.873739084 0 0 0 0 1013.361513 5.535351169e-12 0 3.013701698e-14 0 0 0 7.246600515e-09 2.337901555e-19 0 0 0 0 0 0 0 0.9057441764 0 0 435.2573877 0 0.1213053217 0 0 3.395770988e-09 0 47997.95763 0 0 0 1795175.208 0 693916.661 1.103106755e-14 0 0 0 0 0 0.005846958839 0 0 0 0 7.21165176e-11 2.92768804e-17 0 0 10.57125408 3.494236742e-15 1797461.521 0 59894.12494 0.04564835939 1.261100984e-11 6.65805563e-10 0 5.703461775e-09 0 0 0 0 0 0 0 3.768884555e-17 583152.9269 0 0.0003003339395 2.451564017e-22 3.245505937e-05 0 973475.7398 8113.767678 111.2434852 7.628213481e-12 0 0 0 1.002131384e-06 0 8.405796034e-07 0 0 0 4.578119138e-07 0 0 0 154743.0184 0 7.900177419e-05 0 0.000113510615 0 1774627.508 0.0009442204934 0 3.549995869e-12 9.736272196e-15 1.937780089e-34 0 5.714240063e-24 0 8.370709199e-09 0 1.040681669e-27 0 0 46852.8445 10.77891203 0 0 0 2.416766608e-19 0 0 7.822830268e-22 0 0.2192396214 3.273496587e-21 0.1231324867 3.720235707e-09 0 2.047640396e-11 0 97.9628736 0 6.551470111 0 9.036176417e-12 0 1.430882973 0.7867990531 0 0 0 0 0 0 0 0 0 0 0 0 3.698339942e-14 0 0 0 0 2691.026845 0 0 8.414304135e-18 0 0 0 0 0 0 0 0 0 0 4.048668613e-18 0 1.621491542e-12 9.97756967e-10 0 0 0 0 0 0 0 0 330114.0497 0.3815791414 20.10732814 0 0 0 3.735674958e-05 0 0 1.597653699e-22 0 0 0.06524804479 22835.2415 208.6629421 0.02210924425 1.287672976e-14 0 0 0 2.392594146e-12 7.513818197e-13 0 0 0 0 0 0 0 2.141908015e-14 0 0 3.232527161e-06 0 0.01130498913 0 0 0 0 0 0 0 2.328773039 7.849264384e-12 0.003711828685 0 0 0 1.167331231e-05 0 6.992379488 0 0.2540718721 0 2.772603569e-06 0 0 8.008422514e-19 0 0 6.789559885e-10 0 0 0 4.919177955e-08 0 0 0 0 0 0 1816081.387 0 0 0 0.0001821504105 0 0 0 5.355028425e-22 0 0 0 0 0 0 0 0 0 3.829991989e-07 0 0 59090.75156 +0 0 1.35024229e-10 4.911594745e-08 0 0 0 0 0 0 7.595718025e-07 0 0 0 0 0 0 0 0 0 0 0 0 410676.4287 0 0 0 0 0 0 0 0 0 1.733931458e-31 0.01516532399 5.968852101e-05 1.207283225e-06 0 0 286.3725648 0 0 0 9.997813421e-12 0 0 0 3.903437962e-10 2439790.781 0 0 0 0 0 0 0 0 0 5.520122512e-05 146599.2323 0 1.277773516 0.0929448325 2.19700256e-05 0 0 38.56695295 3.439100871e-11 0 1.439814698e-17 0 1.161016823e-07 0 0 0 0.001837212413 3.677361891 0 0 0.06771429692 0 7.020061944 0 0 1.771620781e-07 0 8.979345273e-11 1.075948311e-28 0 0.4857611593 0 0 96928.52642 0.0001947863572 2.635164106e-13 2830.683057 0 0 0.001163823074 0 0 0 1.903093683e-27 0 0 4.171212957e-10 0 3.56112129 0 1.966188748e-13 215351.417 0 7.913346357e-22 9.546357571 0 1.14862424e-12 0 0.0001161000427 0 0 0 0 1.588202055e-24 0 0 1.041439671e-12 239568.4942 0 0 1.764282086e-10 0 0 6.361534615e-17 0.8451569731 0.0001673281696 4.514289862e-14 0 0 1.358366906e-11 0 0 0 0 0 5.132876724e-23 0 0 0 0 0 0 6.164190023e-15 0 1.810871094e-06 0 0 0 270836.4095 225139.7219 1.363726714e-15 0 1.864981304e-06 1.580944983e-25 0 376.2792124 0 0 7.099461317e-10 6.536657435e-07 4.727233805e-22 0 6.958908023e-08 1777173.843 0 0 0 0 0 6904.891533 0 0 0.0001664997376 0 0 3.159837729e-28 7384.650457 0 0 9.021491937e-10 1.40382856e-17 0 0 1.08015257e-12 3.0799006e-16 0 7943.693987 0 2.038130408 0 2.381717257e-05 0 0 2.472179556e-18 44140.88399 0.002333758772 0 2.299173916e-16 1.651819986e-10 3.590589857e-11 1.753010497e-11 0 0 0 0 15.69338244 2.108236534e-29 1.249989885e-12 10357.13858 0 4.630804707e-25 0 41296.2774 0 6.763560357e-13 0 0 0 0 0 0 0 2001.065348 1546.081101 0 1.742114463e-08 0 0 1.745250916e-24 3.871075664e-10 0 0 0 1.492169921e-10 504744.0406 5.464501457e-06 0 0 0 0 3.014647726e-10 0 0 329.2440017 0 4.025305647e-10 0 51834.98008 0 0 0 0 0 0 0 0 0 0 0 0 0 4.042545994e-14 0 4.923375403e-10 0 0 1.336754374e-16 2.976969181e-14 0 0 235850.129 0 0 0.001511492834 0 0 0 0 0 0 0 0 0 6.449955601e-10 1.205436525e-12 1.535017652e-15 0 0 0 0 0 +35.99399458 3.152951188e-12 0 0 0 0.626860611 8.690358427e-13 0 0 0 0 0 3.934509666e-19 0 0 0 0 0 0 0 7.963349367e-28 0 8.195726329 4.577415879e-19 0 0 0 0 0 0 0 0 0 42451.93905 0 0 0 0 0.0001733958727 0 41230.45978 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.336101442e-12 1.508149671e-11 0 0 0 0 0 0 7.110053027e-20 0 0 0 0 0 5.149262119e-23 0 0 0 0 45155.47994 0 0 0 0 0 0 2620.551069 0 0 1.050376169e-11 0 0 0 0 0 0 0.0003743114449 7.36471845e-17 3.320246242e-08 2.242913293e-12 0 2.03434629e-14 2.358250414e-06 0 2.263480812 7.476227611e-11 32.73030331 3.458548586e-07 463162.8237 3.418679026 1.388855224e-05 0.8804621319 0 8.165096552e-06 0 0.1803567187 0 0 21624.51644 0 0 5.167557502 0 0 0 3.919867373e-15 1422.346648 0 1.049375582e-07 346003.5123 6.328141142e-15 5.242923885e-10 155997.5677 776673.3665 0.0002017732865 0 0 4.719721978e-26 7.047735649e-37 0 1.011168544e-07 0 3.425227161e-15 21265.80219 2081804.863 0.0001530275193 0 2.638796945e-24 0 0 2.400517075e-25 0 2.851539028e-20 0.0002455907935 0 0 5.529523822e-15 7.323304777e-15 0 2.949845415e-07 3.714029292e-09 0.0001335145834 19081.131 0 0 0 1.573865972e-09 5.511270957e-12 5.170650707e-10 0 0 0.006161889746 0.1430038668 0 0 0 0 0.003737997312 6.947449224e-08 0 279.9065586 0 0 174636.8064 0 11095.9122 7.259383902e-13 0 0 0 2.535694091 0 4.067096063e-05 4.37640909e-20 0 0 3.35147218e-27 1.113961211e-05 0 2.124011801e-07 0 0 1.618594373e-05 0 3.679471126e-09 0 0 0 1.174948472e-09 0 489.0496708 0 0 0 0 3.070893285e-13 0 26103.96635 0 0 9.764545489e-17 1.584979861e-22 2.5715923e-17 0 0 0 0 0 0 1.384126927e-13 0 9489.475511 0 1.10858014e-11 0 0 9.620345651e-22 0 0 0.8952446842 0 0 0 0 0 0 0 6.497961299e-06 0 0 1.251740628e-21 0 0 0 0 2.24635624e-15 0 0 0 0 25.15694264 0 0 0 0 0 3.811317057e-26 0 1.274612469e-27 0 0 0 1.919897788e-06 0 0 0 0 0 0 0 8.408141128e-09 0 0 7.500678528e-05 5.061596512e-18 3.987228943e-29 0 0 0 23007.02089 0 0 0 0 0 0 0 0 0 0.004249851685 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 7.220159236 0 0 0.0005045253282 0 0 0 0 5.847693595e-12 1.694736995e-11 0 0 0 0 0 0 0 6.660582565e-09 0 0 0 0 0 0 0 0 0.02799211664 0 0 0 0 0 39365.80068 0 0 0 2.193247331e-11 0 0 0 0 0 0 0 0 8.696393517e-20 1.717627203e-07 0 0 29.83453323 0 0.0001018393632 0 1.647356927e-13 0 8.482328446e-14 0 0 0 0 0 422682.917 108986.1258 0 1.526167309e-26 0 0 13.8095942 0 0 0 0 0 0 5.028384345e-07 57.19214625 314871.8535 0 5.823408484e-15 3.26872909e-24 0 0 863865.2674 6.921483465e-10 4.485608283e-07 2.248527732e-07 0 2088941.96 72.48942656 0 0 2164.422658 1.695482943e-05 0 1.097296888e-20 2.704231376e-05 6.649607069e-12 0 0 0 3.298351705e-10 0 0 18.84451601 0 0.04252615711 0 0 0 0 0 2.095856334e-11 2.689310399e-10 0 0.2864019779 0 0 0.0001460945697 0 4.906359624 5.387398178e-08 7.815895507e-09 6.038314844 252.4766784 6.838200536 6.159501936e-09 0 0 0 0 0 6188.311518 0 0 0 0 0.8752495571 0 0.0001734970838 1.402390646e-15 0 14.96718178 0 25420.37481 0 0.0007030363111 0 3.486111735e-28 0 0 0.00100843398 0 1045.513794 0 0.001616328067 0 1674.081825 6.001834438e-21 0 2.144561625e-15 0 0 0 0 0 2.606959861e-10 0 0.0005405177464 5.279635613e-15 0 0 0 5.460892165e-12 0 0 1.044097078e-18 5.134732759e-27 0 5.389396712 0 2569.793665 0 0 0 0 7.216157471e-14 0 0 1.92507572e-12 1.883551913e-15 0 7.202009647e-05 0 448489.7369 2.784315926e-07 0 48770.07757 0.003158363053 0 0 5.051289253e-24 11.44591745 1.034720638e-07 0.1737868274 5.101989138e-05 0 1314.053916 0 0 3.499150632e-24 1.344119033e-30 0 0 0 0 0 0 0 0 0 1.109621752e-22 0 3.648172857e-08 0 0 0 0 4.231584185e-15 0 0 1.149803645e-23 2.455887499e-25 1329.609196 0 1.436012548e-09 0 2.169148346 0 4.412214423e-15 0 0 0 0 3.077637061e-12 0 0 1050.794328 1.916762968e-05 0 0 0 0 0 9.952209905e-11 2.834638825e-09 1.000263751e-20 0 0 0 0 4.471260992e-24 0 0 0 3611.946068 314977.1144 0 0 0 360.6676634 0 2.10358459e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +484985.6768 0 0 0 0 6.139834126e-18 0 908.5201221 0 0 0 0 0 1.423431959e-08 0 0 0.02440446228 0 0 7.107618737e-08 0 0 0 0 0 0 0 0 0 0 1273.143042 0 0 5.113207794e-19 0 0 0 0 0 0 9.800915737e-25 0 0 0 0 1.600985874e-13 0 6.799101266e-10 0 0 0 0 0 82.82743438 0 0 0 0.301899099 0 0 0 5.152724858e-16 0 0 0 0 1.417071284e-05 0 0 0 0 1.569074173e-15 0.3665446639 1.21578351 0 1.3288201e-24 0 0 0 0 0 0 10610.8279 0 0 0 0 1.507304618e-14 73.94727722 9.582863589e-08 0 0 0 0 0 0.006413389408 0 9.182227947e-17 3.752127937 0 0 3.316070413e-18 0 0 0.002756701472 6.326644123e-20 0 6.977989156e-18 0 3.040482456e-15 0 0 0 0 9.172575818e-05 0 9.498808187e-17 6.882078105e-08 0 0 5.815794421e-26 0 1.582377743e-17 35.09978505 1.624660866e-06 0 0 404.5903066 0 0 5776.202958 0 2.659213875e-14 269.9273165 1.074097136e-18 0 0 25.177981 0 0 3.418880255e-15 0 1.527583716e-28 4.797267597e-09 1.994705479e-23 0 0 0 0 7.561236355e-05 4.841631329e-06 3.632729726e-21 2.626334579e-10 7.366443387e-24 0 0 0 0 0 0 0 32.01302207 2.159788117e-12 2383.320561 0 0 0 3337764.768 0 0 0 758150.3806 0 0.0001836779616 0 1.446890604e-24 6.170622935e-20 1.085199452e-10 0.0002807209932 2.569377131e-06 0 0 0 0 0 0 6.145955611 9.672223686 0 0 0 588357.6378 0 0 0 3.014765757 0.09443731049 1.964753457e-15 5.302615135e-16 0 0 0 1.192678424e-20 2.142595871 0 0 0 0 0 0.002079470347 6.777983805e-11 6.446465294e-13 0 0 2.086559154e-24 7.259997673e-07 0 66.03416308 0 0 0 0 0 7.425604708e-08 0 0 5.591354122e-10 0 26.08247811 0.0003577509127 46439.77244 1.165294419e-17 0 0 6.979501945e-16 0 0 0 0 0 0 0 0 0 3.516949102e-16 184054.35 0 1.978926399e-09 0 0 0 0 0 0 0 0 1.171554184e-06 1.143938899e-08 0 0 0 0 0 2.364166112e-11 0 0 0 0 0 0 0 3.272326537e-16 0 0 0 0.00881204887 0 0 0 31850.75696 0.05585844164 3.058089596e-18 0 0 0 0 1916616.91 0 0 0 0 0 0.0003659863794 0 0 0 0 0 0 0 +3.38376874e-23 0 0 0 5.334111991e-29 0 0 7.058343992e-13 1.041708118e-30 0 0 0 4.412385006e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 7.83577301e-07 0 0 0 0 0 0 0.004602115965 0.01706793317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 210.2549522 0 0 5.041975533e-10 0 0 0 0 1.128448122e-13 0 0 26.86354148 0 0 0 0 0 0 3.473822659e-08 0 4.382249669e-08 0 0 0 0 1.215812341e-24 1.251859933e-37 2335596.694 71752.47003 0 0 3.770814598e-16 2380239.387 15.23309483 2.092030929e-18 4.198457084e-12 6.731900216e-06 0 0 0 0 9.029386979e-12 0 337.5509432 0 3.072638574e-17 1.380026717e-26 1.65661196e-17 0 3.784913533e-16 0 0 3.361865855e-12 0 0 0 1.347404868e-18 0 0 4.95165996e-08 6.626671701e-08 0 0 5.894060587e-22 3.035230624e-11 5.666946983e-08 0.03199825704 0 3.218801257e-05 3.762895858e-12 0 0 0.0001012855285 2.109620955e-06 0 3.049996937e-13 2.167807301e-06 7.998208902e-12 0 2.535507443e-08 0 3.516473166e-07 0 0 0 3.583353979e-10 175.1312435 0 0 0.02827036998 0 0 0 0 5.114384334e-16 0 0 0 1.562994033e-13 561062.8989 1.785633972e-13 7.132563653e-11 0 88380.63642 4.58488108e-19 0 631.6446579 0 0 2.379637076e-07 0 0 0 1.182190927e-09 0 0 0 0 0 0 0 818.9600189 0 0 0 0 1.326785427 0 2.397914347e-21 0 69265.54188 0 6.575540551e-27 92.83979454 0 0 0 344.3921705 0 0 0 0 0.006048119372 455.4154736 0 1.275811774e-16 1.451404379e-09 0.02871063777 2.347477398e-07 0 1.166002986e-29 0.001104504737 7.761153369e-40 0 0 3026574.848 3.674790975e-12 6.461087761e-28 1.529185984e-11 9.559677531e-23 0 0 0 0 0 5.373790176e-14 0 818443.9704 5.440041986e-24 0 0 0 0 0 0.2344223546 4.562400998e-14 0 14096.74323 0 4.573014356e-06 0 1.163792791 0 0 0.3748294074 0 0 1.029443708e-14 0 0 0 0 11.8781251 0 0 1.521604767e-12 0 0 0 0 1.951976116e-15 0 2232.552396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.763764429e-29 0 0 0 4.7200813e-23 0 7.457967305e-12 0 0 0 1.523115258e-10 0 0 0 0 0 0 2.551006245e-12 0 0 0 0 0 3.890913087e-24 6.452649965e-12 0 126.3152173 0 0 0 196678.6137 +0 0 0 0 0 130307.716 1.869525969e-06 0 0 0 0 0 2.21230031e-09 0 0 0 0 0 0 9.917936989 3.550689729e-08 0 1.448840398e-12 0 0 0.002628587766 5.341502349e-13 0.02060025779 0 5.357480613 0 0 0 3.18483641e-08 0 0 1.19066816e-09 0 0 0 0 0 0 0 0 7.913997466e-29 0 75.52975941 0 8.732488374e-22 142.4135586 0 0 0 0 0 3.01193422e-14 0 0 4.881856358e-09 299.1687239 55.31995522 0 0 0 0 0 0 0.004542238254 406.6328541 0 0 0 0 0 0 0 0 0.1744464948 3668.887528 0 3.231247055 0 0 5.032798839e-05 2.808322764e-09 182626.8822 1.999516772e-05 0 0 0 5.033897199e-15 195.3924783 0 1.10145405e-06 0 0 9.859331161e-29 0 4.894310964e-05 0 0 0 1.176459839e-27 0 0.05599363821 2.771452604e-08 2.600597528e-24 0 0 0 0 8.333585107 0 0 0 0 0 3.304176526e-23 1.396030875e-05 0 0 0 0 0 112.6472996 0 0 0.01290324551 0 1.893447351e-08 0 0 0 0 0.006239934162 0 7.014173396e-20 0 3.167767081e-07 0 1.060467463e-09 0 4.047632679e-13 0.184470234 0 0.0007054096188 0 0 6.064907148e-08 0 2.504794122e-06 4.840897101e-18 1.946678972e-15 0 2339.596224 0 0 0 0.1779338547 0 0 1.025315901e-18 0.2283012701 0.0006148008536 6.627625442e-11 0 0 9.479571351e-08 0 0 1171.291293 0 0.01220303182 0 1.196663981e-05 2033.719395 0 0 0 0 0 4.409346588e-12 0 11131.05534 2.234645268e-17 5.722625859e-13 0 0.1083417211 1165.41126 2513.223511 0 0 0 0 0 0 5.909484768e-10 0 0 0 0 9.235337837e-13 0 6.032133524 0 0 0 0 0 0 425.2366213 0 4.660670033e-27 0 0 1.287434532e-13 0 0 0 2.357000676e-27 0 0 0 0 0 0 0 0.000819990687 4.631704928e-06 0 0 0 9.010498694e-11 0 41974.60557 0 0 4.962288387e-09 5.256889586e-18 6.991272884e-08 0 0 0 0 0 0 0.1665369276 0 0 0 6.941706386e-08 0 0 0 0 0 0 0 0 0 3.808635838e-05 0 0 0 0 5.566930728e-16 2.361446479e-10 0 0 0 0 0 0 0 0 2.159434931e-29 0 0 0 508142.0615 0 0 8.347909537e-19 0 0 0 0 7.029707521e-08 0 4.14029832e-28 0 0.001607756493 0 0 8292.361524 0 0 4.346784497e-17 0 +0 2.578250401e-23 0 0 1.887399311e-23 0 2.953537513e-22 31.23277032 0 0 9.624290007e-11 0 0 0 0 0 0 0 0 0 0 1.286088324e-12 0 7.530447362e-09 0 5.176783671e-06 0 1.057950792e-23 4.639240592e-05 0 0 2.164158884e-06 0 0 0 0.01670643841 4.553265975e-07 2.149047809e-14 0 3.982796322e-08 0.001791749282 0 0 48571.15525 0 0 9.725668888e-17 0 0 1.49911422e-17 0 0 0 0 0 8.469517422e-06 2.274354667e-05 0 0 1.553464107e-14 0 1.20239197 0 0 0 0.0008661911839 2.039575622e-23 0 0 0 14.92469717 0 5.187621258e-24 0 7.770473751e-15 0 0 0 4.702804423e-12 2.928988038e-16 0 5.111302918e-06 0 0 0 0.7994761016 35.65198327 0 2.915556671e-11 2.481681655e-30 0 0 5.868809908e-14 14030.09144 674.9479228 0.0001150936186 0 0 198.664356 3.937277645e-09 0 0 6.941139734e-18 0 7.400630918e-15 0 5.287651027e-08 0 6.905038083e-26 0 0 7578.239273 8.146036178e-25 0 0 2.660199237e-13 8.924782421e-10 0 0 0 0 54306.85266 0 0 0.0002147510812 0.003446318135 0 3.31087866e-20 787435.0271 0 0 0.192749454 0 0 2.731279203e-07 0 1.944395336e-26 1.6675623e-12 0 3.567157959e-15 0 0 2.267106841e-19 1.050800991e-18 0 0 9.446059613e-25 0 1.613298543e-13 2.22483301e-12 3.956579817e-24 2.767077996e-10 1.307973092e-06 1.48098576e-13 0 0 0 2.192314031e-06 0 0 0 0 0 0 1.095038063e-05 0 0 0 0 1.36374033e-05 0 0 8.889922387e-25 0 4047.371734 13014.68825 1.400625802e-18 2.029253242e-05 0 0 0 2.939823325e-13 7.713877528e-07 0 0 0 0 0 5.11103882e-06 0 0 0 0 1.784835868e-13 0 8.391847294e-05 0.002662719993 0.001301684436 0 0 1.084540521e-05 0 1052.200828 0 0 1.353941038e-25 0 0 0 2.025632589e-13 0 3.116215453e-15 0 0 109.37621 196872.78 0 0 0 4.897882286e-11 1538.68561 0 0 1.109534431e-12 0 0 1896679.833 1.809310569e-10 0 4.287536875e-08 0 0 7.279737842e-07 2089129.59 0 0 0 0 3.026132046e-22 0 0 0 0 303.0582585 1.576328398e-05 3.327516483e-17 30004.90144 0 0 0.0001651640971 0 0 6.843431092e-32 0 540928.577 0 0 0 0 0 1.732672466e-09 0 0 5.230564582e-09 2.665784559e-06 4.437783237e-16 0 0 0 0 1.086835474e-14 0 0 0 0 12434.14416 0 0 0 0 0 0 0 0 0 0 0 0 0 3.803975138 0 0 151.7428747 0 0 0 0 0 0.002221411703 0 +0 0 0 0 0.0001088298521 9.023344778e-16 0 0 42.85375001 38.63291328 0 0 0 0 2.187818725e-08 2.197859223e-12 0 0 0 0 6.835040796 0 1.391302164e-10 0.0002055357839 0 0 0 0 0 0 2.65671813e-19 0 6.237994714e-05 0 0 0 0 0 0 0 0 3.062935444e-24 0 2.975684898e-17 0 0 0 0 0 0 0 4.597865096e-17 0 0 1.760070234e-09 0 0 0 234.6724928 0.06243855907 2697037.879 2.230621742e-22 0 0 8.550460401e-07 0 4.410283492 0 0 0 0 11225.21977 0 1.136931637e-14 0 3.906385835e-20 2.441374388e-07 0 0 0 0 0 3.842162734e-07 0 2.105560774e-10 0 0 0 2.1310637e-15 0 0 0 0 0 1.952507013e-09 0 0 0 0 0.0001369800831 0 0.0004724587924 0 0 0 0.0004356603434 1180.696171 0.0003863523443 188046.1894 983353.7705 1.084247036e-16 9.945234737e-17 0 5.577039072e-28 0 7.865115364e-16 0.0001371703868 0.0006294899654 2.250571481e-29 4.862735941e-16 0 0 0 5.632988203e-14 0.0003669374091 85.03561703 3.315120026e-11 0 2.272558686e-32 0 542644.7734 0 6.95482685e-06 0 0 0.2580095846 0 0 0 1.568169384e-06 0 0 0 7.86877796e-10 0 0 8.483093186e-24 1.62701044e-12 0 180.6320703 4.538929774e-30 1.037665352e-26 6.620845318e-06 5044.263658 2.687608968e-05 0 3.121548903e-14 0 0 9.971669915e-07 0 0 4210.095455 0 0 4.767957847e-08 3963.306088 0 0 0 1.667439309e-05 0.01336152538 6.244461414e-26 0 0.04185202683 1.332491022e-07 0 5.565261557 0 0 0 1.623704676e-11 0 0 0 2.44779708e-12 4.897231844e-16 0 2899744.177 4.421355057e-14 1.287618132e-10 0 0 1.947741745e-16 0 0 1.292731813e-19 2.868706517e-17 2.676160262e-37 0 0 0 0 14899.90202 236.9239471 0 3.138935815e-13 0 0.02357392749 1256.374996 0 0 1.645133785e-14 0 0 5728.905404 0.0001057185575 0.0002072231631 35.67515733 0 5.32098692e-11 0 0 0 0 2.938389439 0 0 0 0 0 6.795000385e-15 0 0 0 0 1121.170265 0 0 0 3.981316948e-08 4267.867261 0 0 0 8.080102894e-06 0 253923.6398 0 2.752138894e-07 0 0 0 8.513476948e-25 0 4.395541298e-12 0 5958.194021 0 0.0004088859581 0 3.113291256e-28 0 0 0 0 0 0 3.4900643e-09 0 0 0 0.00178519154 0 0 5.753552148e-08 0 1.052558255e-20 0 5.0157392e-34 3.276996056 0 0 1577040.996 0 0 0 0 0 0 0.0002829066337 0 0 0 0 0 0 0 0 0 +0 0 0.01664592382 0 0 0 0 0 0 0 0 0 1.213591469e-05 6.002059966e-13 0 0 0 0 0 575.9889107 0 0 3.307988047e-09 0 0 0.1575744765 0 0 0 0 5.977829336e-11 0 0 0 0 0 0 0 3.66025487e-07 0 920186.831 1.869023438e-12 0 0 0 0 0 0 20304.13763 0 0.03356299844 0 0 0 0 0 0 0 0 137908.4745 377388.246 0 0 2193.982642 21823.65751 8.279474069e-10 0 5.343039592e-29 0 0 0 0 0 0 0 0 0 0 0 6.736216281e-20 852.9578975 0 1.456748645e-24 0 440639.876 0 0 0.0005463107342 2.09967843e-13 0 0 0 0 0 0 518331.7923 0 0 0 1.848353742e-09 0.01584144369 9.099829171e-16 0 1.276715721e-16 0 1.580611068e-12 0.2518746526 9.449966788e-15 17.62702378 1.002114829e-28 0 897.6615185 0 1.291290871e-06 1.034393733 0 0 3.048997172e-12 0 0 0 0 1.596307439e-05 6.118486982e-08 1.716482604e-06 50783.52413 0 0 8.608337478e-11 4.561815114e-23 0 7.22635906e-14 13.80969501 2.290549873e-32 5.74756892e-12 0 8.741996669e-14 1.428258444e-10 0 0 0 1.607357565e-15 141.4108383 0 0 0 0 0 1103952.382 1.252419769e-22 0 4.813472348e-05 1956734.05 226760.9749 1.751346806e-29 4.781806956e-12 8.622782871e-08 2.025277141e-09 1.12556237e-20 4.390015202e-05 191475.5446 0 0 0 0 0 0 0 2.421246922e-11 6.151722512e-29 0 4.407832221e-06 0 0 3.392334435e-06 0 1.070280738e-09 1.11871859e-05 0.1195069054 1.26341341e-15 0 4.329224205e-08 2.898010237e-18 373.9755201 0 5.119750729e-15 0 1029.215085 0 0 3.348589028e-13 0 0 0 0 2.904092227e-23 0 37.43710483 5.038178543e-11 0 0 0 5.566408575e-12 0 0 2196007.905 0 6.685459567 7.206229319 0 0 0 0 0 5.17840791e-13 0 0 0 5.700821489 1.901277666e-10 4.826913917e-14 0 0.2319378381 2.330988583e-12 0 0 16.16014256 1.156226254e-07 0 9189.543408 0 0 0 0 0 0 0 3.212981792e-24 0 6.756593811e-13 0 0 10.73354259 0 0 0 3.528726436e-10 1.186816685e-11 924.8021489 0 9.396306298e-07 0 0 0 4.336191085e-11 0 0 113.9103719 0 0 909883.2575 8.420434061e-12 0 0 0 0 0 0 3.238387268e-08 0 1.164760677e-08 0 0 0 2.672855378e-09 0 0 0 0 0 0 0 0 0 0 0.007131583808 0 0 20963.95914 0 0 4610.362443 5.114913571e-09 0 0 0 5.596480508e-12 0 0 0 +0 1.218572393e-12 0 1.730915128e-13 0 7.680652647e-07 0 0 0 0 0 0 0 0 0 0.2020162274 10368.47934 0 0 0 0 2.776474059e-19 0 0 0 1.285408526e-14 1.649320833e-13 9.085691355e-25 0 0 0 0 18892.10398 0 3.405075092e-11 0 0 0 0 486.9815636 0 0 0 0 0 5.521583229e-29 0 0 0 0 0 0 0 2.466874424e-21 0 1.356458472e-25 5.04206528e-10 1.547499176 1.063731031e-13 0 0 0 0 0 0 0 3.272938907e-10 0.004085437669 0.0137374251 0 0 1.852684472e-06 0 0 1.890080654e-06 4.531688763 0 4891557.203 0 0 1.263886931e-05 134915.5404 4.96634793e-28 0 0 1.512641199e-08 475.2698013 0 1.217203819e-06 3.264420047e-22 4.491995028e-29 7029.505023 2.53790181e-11 0 104921.2587 1513.665686 2.65519663e-10 5.555693038e-14 0 9.271657562e-09 0 3.487058857e-10 0 1.353856538e-05 0 0 0 0 0 0.004732763588 50699.6749 858.3040931 0 132.4103082 1.475086334 988423.5832 2.360758918e-09 0 4.802388605e-21 0 0 0.07054942576 0 0 0.0001921436871 3.036035956e-19 6.652904505e-07 0 1705615.058 0 0 0 307384.6127 0 0 0 1.085850076e-10 2.385791542 3.447245061e-05 0.000982139108 0 53.16861117 8.033876407e-14 6.546078776e-25 0 1135958.603 7.525061556e-20 0 2.658651148e-20 0 2.312468827e-06 0.1382211348 0.02378759288 0 0.04710525773 0.0858937735 3.231951265e-23 0 8.401580971e-07 508259.5801 4.25395454e-19 4.231457664e-10 9.076214611e-13 0 0 9.719152121 1.942832248e-12 0 9.744940039e-10 3.204692152e-10 0 0 3.542370649e-31 623287.5572 1.336323983e-10 0 413.9456996 4.554786042e-05 8.06157321e-21 0 2.705674293e-11 0 4.760840225e-07 0 2.200009224e-08 97044.40133 0 0 0 0 0 0 0 8.403487858e-18 1.666393079e-12 0 0.0009537122224 6.786802342e-05 0 773.751002 2.933023597e-19 0 0 0 0 2.48512041e-11 6.685720795e-14 0 4.680260111e-24 0.01275929731 0 0 1459063.106 0 0 0 0 0 55.41644349 0 0 0 0 0 0 3.388759642e-10 0 7.281251187e-13 1.096571168e-06 0 0 0 0 1.410338005e-11 0 0 0 0 0 0 321.027401 34.95731138 0 0 0 976.5247508 0 0 0 0 21.03184263 0 0 0 0 0 0 0.3841666847 1.613251095e-07 0 2.528424558 0 0 1.533964342e-18 0 0 0 0 0.6786637349 2.670560387e-05 0 0 0 0 0.07189765662 7.644965588e-21 1.079686133e-07 0 7.167475523e-18 0 0 58.33742413 0 0 7383.163924 0 0 0 0 9.132624789e-17 0 0 0 0 0 9.500625497e-12 0 0 0 7.782762513e-13 +0 2795.869979 1.325145635e-10 0 82.85951877 0 4.296859199e-10 0 3.371242098e-10 0 0 1.09647253e-06 0 0 0 9.466499479e-11 0 0 0 0 7.22124577e-27 0 122956.7787 0 0 9.5169766e-05 0 2.198584825e-20 0 0 0 0 0 0 70035.92501 0 0 1.0460727e-06 0 0 7.721723825e-28 0 0 0 2.713137359e-23 0 0 0 0 0 8.475705199 3.001737615e-12 186.2306704 2.828847108e-10 0 49.65210426 0.006237375977 0 0 0 9.693517618e-20 0 0.02378964892 0 0.01268958867 0 4.522229008e-28 0 556129.6491 0 0 0 0 29948.2819 1.448766559e-08 0 0 0 0 0 0 0 0 0 460311.3924 0 0 0 0 0 0 0 0 0 0 2.75140177e-16 0 0 0 3.346542904e-08 0 4.103550235e-10 0 1.250301024e-08 0 0 1.418389195e-12 0 8.383125849e-06 1.077957042e-12 0 14324.5233 1.92456776e-11 0 864789.0573 161.8449098 0 0 0 0.003499602906 0 1.704713993e-13 1.028793614 0 0 0 0 0 0.1180270514 24.51011967 316823.4886 5.754697873e-35 0 0 0 0 776.6373582 0 0.4895584716 0 0 1.958829382e-10 0 0 0 0 9.870272641e-08 3.550514203e-23 0 37.26296931 1.640828962e-16 0 0 4.309355009 0 1.114199545e-22 1.223198357e-19 0 3.023736486e-10 0 8.085252283e-25 0 1.874097132e-07 0 0 0.0001015366382 30.67380067 0 0.0006609230753 7.611561982e-06 0 6.56059552e-12 0 4.439848087e-06 0 0 0 0 2.459501162e-08 0.05186380353 1.567622674e-20 0 0 0 0 1.213340242e-13 2.648355794e-15 28443.17406 10115.73694 0 0 0 0 0 0 2.461451615e-10 0 0 0 0 0.01609705565 0 2.650151349e-30 0 163.6475311 0 0 0 0 0 2657.430059 0 0 0 0 0 0 1.07968835e-27 2.866933365 2.721269763e-24 0 0 2.420280598e-10 0 0 1.989258289e-11 0 0 0 6.066724803e-07 0 0 0 0 0 0 47035.96871 0 0 0 0 0 0 0 1.249174394e-10 0 0 0 9.331477254 0 0 4.171681191e-10 0 0 0 0 0 0 0 117.0175643 1.027790343e-05 9.838269784e-15 0 0 8.848150901e-06 0 0 0 0 5.308558241e-18 3.956246489e-06 0 4203.218006 0 0 0 0 0 0 0 0 0 0 0 0 0.05488736718 0 0 0 4.705156618e-16 0 0 0 0 8.499997551e-10 0 0 0 0 0 +0 0 0 0 0 0 0 90027.96853 0 0 0.01197084195 0 0 0 0 0 471373.3174 0 2.262621006e-15 0 0 0 0 0 0 0 0 0 0 0 0 2.313551838e-12 0 0 0 0 0 0 0 0 2.339906661e-08 0 0 0 0 2.344534617e-09 0 0.0001652398763 0.1618294749 0 1.795516557e-21 0 0 2.711844707e-08 0 288.4834568 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.116533318e-15 0.003200431352 0 0 0 4.295916129 0 1675269.887 0 1.852146597e-24 0 3.302309719e-21 0 0 0 0 21282.9776 0 1.340713366 1213910.826 0 59377.62222 0 0 2016444.609 6.914388522e-07 0 0 0 1.879585207e-12 0 1053.591285 0 4.062848949e-12 0 0 0 6.411081966e-30 0 0.05351219572 2.418180435 4.093187559e-14 0 0 0 603.6054243 96449.43671 0 0 0 0 0 3.670830701e-09 0.3022746588 0 0.2304807595 0 0 0.06456011712 562.1478518 0 0 2462684.036 0.002048116868 0 0 1.383464009e-10 3.017853847e-20 41.32527507 0.0004298779687 1.51976881 7.909600987e-14 182.7909413 0 1.172108244e-29 0 29.5952198 0 0 0.03835707562 3.990668696e-05 8.988763934e-26 100888.9042 234.9027924 6.264502091e-12 5.370067413e-09 4.48274048e-06 0 0.000249967179 0.001699232003 4.081646655e-13 0 0 157056.8517 0 0 0 0 28300.24906 8.991318651e-26 2.590741238 0.007929149997 0 0 1874.095996 0 4357.977997 0.1855012119 0 0 1267164.964 1.137150492e-18 0 0 0.001490891678 0 0 5.396630862e-12 0 1131423.192 2.933171119e-18 0 2381982.203 8.166754905 0 0.01020261653 0 4.244353107e-06 2.498412558e-06 0 0 0 0 0.09245179893 0 0 691359.8215 0 0 3.861766905e-13 167.395645 0 0 1.002091513e-12 0 0.0006922649827 765070.5203 0 0 5.847557049e-15 5.574156956e-20 1.635738838e-07 0.0003251304583 5.714202722e-10 0 5.139736206 0 0 0 0 0 9.077007208e-11 1890.584701 0 7885.43611 0 0 0 0 0 5491.68415 0 0 0 289112.8024 0 7.791804129e-05 0 0 0 0 20318.25114 0 0 0 0 0 0 2.872771612e-14 0.08087036969 724829.095 0 0 0 1.934065534e-08 0 0 0 174371.2768 0 0 0 0 0 0 2.227107062e-07 0 0 0 0 0 0 1.985769702e-19 0 3.974635366e-08 3.16976357e-06 0 0 0 0 6.346885717e-05 9.843363474e-11 1.117277868e-34 1.107070608e-19 0 1476.08226 0 0 0 +0 0 0 0 0 0 0 1.12179324e-17 0 0.1758184156 0 0 0 0 0 2.943893242e-07 1.395157727e-25 0 0 0 0 0 0 0 0.2776757262 0 0 0.1080194221 0 0 0 0 0 4.046941071e-05 4.249487146e-24 1.165879009e-09 2.012136953e-18 0.0003884620571 0.06658073011 0 2.602953459e-09 0 0 0 0 0 0 0 0 8.759933344 0 0 0 255510.9614 0 0 0 0 0 5.888243365e-17 0 7.338416918e-12 0 0.06375478144 1.549643049e-10 0 0 0 0 1.358313884e-08 6.305075326e-15 0.02686074377 0.4693198985 3.658048008e-11 9.930741471e-18 0 526170.6705 1.680259995e-09 8.421937431e-23 9.851579761e-17 0 2.974177492e-05 0 0.002091926402 1.094889574e-11 0.003631984784 0.009629133534 0 99.06711434 7.285154653e-11 0 1516614.017 0 2836406.934 80.68021417 0 0 0 4.682986554e-08 0 1.723677744e-24 0 1.107406949e-14 2.221366064e-05 0 692682.3419 0 0 0 0 4.541555316e-07 0.001227207096 0 0 0 0 7.816064545e-06 0 0 1187.029569 0 0 0 0 1.377917868e-19 0 1.51270374e-16 0 0 3.252872372e-14 0 17.42039626 0.1089456228 4.542151924e-08 0 4.646066395e-14 0 0 1.900665066e-12 0 3.42068787e-18 3.229945305e-25 0 459.1052094 0 0 1.645022869 4.95870655e-40 5.197081531e-05 0 40052.18432 9.181042231e-09 7.065887069e-14 0 0 1.390920537e-20 0.6530602608 1.497820707e-21 0.1250548785 1.339356752e-10 0 39778.46889 0 0 8.226411011e-24 0 2.241290285e-05 0 0.8204317691 0 4.773544089e-11 4.605533723e-08 1.450095828e-05 0 0 4.921190168e-16 0 4.294883464e-11 3.635923061e-23 0 386185.5134 0.8830524281 1.180977255e-07 0 0 4.52865067e-06 0 0 364949.4264 0 0 1.183160289e-07 0 0 2.28620251e-11 0 0 0 469697.5173 0 0 0 0 7.187439308e-15 0 0 0 0 0 0 0 0 0 0 1.530053844e-06 0 875079.4379 0 0.002830315592 0 0 5590.519823 0 0 0 0 0 0 0 0.0002887547322 0 0.005969969269 0 0 0 0 0 1.036921939e-12 0 0 0 0 0 0 0 0 0 2.732816234e-06 0 0 0 1.142847597 0 0 0 0 0 26.83149483 0 0 0 0 0 9.398732658e-09 0 0 0 0 0 0 0 4.725856141e-09 0 0 0 2.287957109e-27 1.893102764e-26 0 0.2056651181 0 0 0 0 0 0 0 0.5187163708 0 0 0 0 0 0 0 5.957240566e-20 321523.3578 0 96442.87742 0 0 +0 3.920112834e-12 3.484389155e-07 0 4.138345552e-05 0 0 42.55317226 0.03391068738 0 0.2743806686 0.001349347116 0 6.345627176e-09 0 0 0 0 1.950048919e-17 6.802292273e-23 0 1.287534869 0 0 0 0 4.565595806e-05 0 2.447605673e-27 0 960885.0653 0 0 0 0 0 0 0 0 0 0 0 0 2.217771454e-10 731.2536684 3.400413755 0.03045065121 0 0 0 0 1.437596643e-26 3.669644473e-12 0 0 0 4.172060749e-11 8.018281309e-05 1.80042837e-07 0 0 70.10266501 0.08722365534 4.02732648e-06 0.0002271770804 0.0025868742 6.464248145e-06 0 671515.3437 0 0 0 0 0 0 0 307.4175265 0.001154157174 0 0.003614792236 0 0 0 0 0 1.053337177e-11 2771.184408 112420.3143 0 0 0 92.11431904 0 217.7817304 2.031675864e-07 6.759548742 0 173420.9428 0.001554009061 0 0 11.54872246 0.004771723249 1.179147972e-12 0 46.40395795 0 0 31328.04529 0 6.1321764e-17 7.069771083e-17 0 0 2.17609906e-05 0 0 1.379626913e-08 1.279121599e-09 0 2.769018124e-10 0 0.3422332427 2.469323831e-14 0 0 1.601760415e-08 0.3879634519 0.0005492340583 4.52639624e-23 1.268730276e-10 0 1.564723707e-16 0 1.097480441e-17 0 0 1.523878961e-17 8.502184252e-15 1.884293198e-05 0.07409662127 0 0 2.303428844e-11 0 0 0 0.933268938 1.340965096e-21 1.258474243e-10 0 0 0 2.314766927e-09 0 1.565390863e-09 5.995597826e-18 4.358575584e-05 0 0 4.324067831e-15 8.890816838e-06 0 0.0006543409838 0 0 0 2.223565715e-13 0 2.592840973e-22 2.792348904e-10 0.008543778628 0 8.387673189e-11 0.001347093078 106.8074556 0 6.87918726e-12 0 0 0.0002540128865 0 2.510310745e-13 0 2.111535532e-10 3.781070009e-09 0 72644.07687 1.135618973e-14 2.261546631e-07 0 4.964354706 0 0 1.321320836e-07 0 9.115216053e-07 6.218675649e-07 0 1.303961403e-08 0.810567356 0.0001412220583 0 1669771.994 0 60185.75983 0 72442.29588 0 979822.1401 0 3.797071489e-08 0.0001360611716 0 0 1.545189011e-12 0 0 5.698322136e-13 0 0 0 0 1.205876504e-30 0 0 0 1.553973562e-11 0 0 11087.05105 1.142419241e-15 0 0 0 0 0 2.352614354e-05 0 0 0 3.197828958 0 0 0 0 1.274568429e-12 0 1.953896278e-15 0 0 1.399302205e-07 0 0 0.0005058761832 0 0 5583.602914 0 0.4010883462 1720.627862 0 0 0 0 0 0 9.029331664e-17 0 0 0 6.526802122e-13 0 0 0 0.2137809731 0 0 0 0 0 0 0 0 0 0 0 5.409612095e-11 0 0 0 0 0 0.3912907484 0 0 0 0 0 6.038663124e-21 +0 3.248592931e-16 0 0 0.1552627637 782883.0791 0 0 0 0 0 1.608842616e-06 0 0 0 0 0 0 0 0 0 0 0 4717.658906 0 673657.3023 6.652436911e-22 0 0 0 0 0 0 0 2.494680685e-14 4.871495734e-16 62.27094239 0 0 0 0 0 0 0 27.36633665 0 0 0 0.4123114057 4.749629498e-07 0 0 0 0 3.384053212e-05 0 3.007963096e-14 0 0 0 0 0 0 0 0 0 3.234271341e-25 0 0 0 0 0.000481234388 50839.72795 0 8252.258335 7.308864015e-12 0.001474835721 60.61003543 2909393.628 0.02891743528 0 0 0 1103087.154 0 0 1.352477359e-10 0 3.956846486e-13 0 8.954256454e-09 0 0 0 0 11.16789524 0 0 0 0 0.0007038296748 0 0 0 0 1.734532829e-19 0 0 0 1.073007499e-07 0 0 3.37980732e-29 2.090720484e-05 0 0 3.157589158e-20 0 0 0 0 0 0 3.341373086e-09 4.945616118e-12 0 2185140.833 0 0 128.6164455 0 37.82341658 0 0 0 3.418482154e-09 0 1.428051591e-36 0 0 0 0 0 2.513045835e-11 1.131105365e-15 238816.5473 0 540696.7044 74.52007586 6.391610138e-08 3165.496198 0.0001003152261 0 0 3.647642814e-07 1.330448104e-05 0 0 0 4.494572661e-06 535.6365545 0 1.705062368e-07 5.531077743e-08 0.02477315816 467.1362301 5.512951302e-30 0 0 0 0 9.60631621e-05 0.00180713986 1.952338208e-10 0 0 0 2.882873262 0 0 0 1.602365462e-14 0 0 0 0 0 0 2.058127999e-08 1.208706612e-11 0 0 246365.6508 0 0 0 4.414805229e-08 0 1.062092089e-17 392657.1239 0 477643.5765 0 0 0 0 0 0 0 0.01018308509 0 0.01391094183 80.25424011 0 2.428989766e-07 723.8320639 0 573.6358507 0 3.961961716e-12 0 0 0 9.867659651e-08 0 0 0 0 0 0 0 5.248129541e-06 49996.21157 0 5.278025673e-32 0 0 9.831442771e-07 1325.869723 0.0002802279846 0.03277184756 0 0 0 0 0 1.260474001e-12 0 5.031525917e-26 5.860071071e-06 1.461990696e-36 1.267152015 3.892658077e-05 0 0 4122712.238 2.927203664e-14 0 0 0 96198.04273 0 0 6.742685524e-27 0 0 0 0 0 2.843201014e-05 275830.1596 0 0 0 0 631.4971277 0 0 0 0 0 9.969787642e-19 0 2.272816924e-23 0 0 0 0 0 1.090977062e-12 3.090803056e-09 0 0 0 0 1161508.222 0 1.11355105 0 0 +0 0 0 0 0.1848193551 0 3095.514417 1.491286122e-15 0 0 0 0.03558740287 0 0 0 6.96138493e-14 0 732775.709 0 0 262028.034 0 0 0 0 0 535752.7256 0 0 0 0.0007841520731 8.250177537e-07 0 0 0 0 0 3.326265082 48742.93792 0 168927.6513 0.160012287 0 0 0 0.07284708988 0 0 0 0 0 0 0 7.8215504e-10 0 0 0 9158.027943 0 0 6.238371784e-11 1192.405037 0 0 8.525705689e-15 0 0 1.350907153e-10 1.535881765e-12 6.821236966e-22 0 260.6105508 0 2.607028657e-11 366.0679527 0 0 0 7.809097283e-05 0 0 0 0 0 2.175987448e-09 0 0 0 0 1.847018007e-12 0 8.291221839e-23 0 2.2298973e-07 0 2.955682053e-06 0 0.0006930405871 0 0 0 0 0 0 0 0 0 0 3.451809064e-17 0 0 0 0 0 1.735730945e-31 877875.352 1.720292114e-05 0 0 2916.375352 0 0.1091363586 1.112646786e-15 0.724286294 0 0 2.246834259e-14 2.592929089e-12 3.80046171e-06 0.05529099776 0 0 1.286940516 9.405817622e-08 13862.70826 1660.49547 0.0562777703 0 0 5806.775522 0 212.4356124 0 0 0 0 0.07256248343 0 1.052643211e-20 0 0.7855911538 325635.7396 1.131228009e-29 0 0 6.139759994e-18 1.017842436e-06 0 624.8648244 0 0 0 0.000683220406 0 1.939755612e-09 5.074334844e-10 0 0 0 0 0 0 0 0 8.375264007e-08 2.138131624e-10 0 1.503012259e-13 0 8.941721888e-05 0 0.01027230516 4.225160484e-25 1537745.083 0 1.252928756e-10 0 0 0 0 0.000182473342 2.016593873e-07 8.538174202e-13 6.39895529e-13 0 4.486463364e-05 5.995707723e-11 0 0 0 0 4.468393972e-05 1.259264868e-06 0 0 0 0 1.062310234e-06 0 1.029884612e-08 0 0 2395.904728 0 0 0 0 644935.4787 0 34320.42344 0 1.089085375e-32 8.522940944e-09 0 0 0 1.319574566e-09 0.378063196 1.299558419e-21 0 0 0 42263.89784 0 0 3.424043042e-08 0 5.464541245e-14 2.795123021e-14 8.586730353e-07 0 0 0 2.076355446e-09 0 3.989920752e-18 0 0 1.190238044e-10 0 0 0 59.40603595 0 30.01845368 9.29759832 0 0 0 0 0 0 1.072520719e-12 0 0 0 0 0 0 0 0.0001825480361 0 2654.58191 0 0 0 0 0 0 0 2.885622807e-07 0 0 0 0 0 0 0 0 0 41.91747791 1.708157252e-11 4.249331861e-08 0 0 0 6.469901564e-11 0 0 0 +203835.8221 0 0.3035419308 0 0 0 0 0 0 680105.2445 3.762491068e-05 0 2.687218672e-14 0 0 0 0 0 0 0 0 7.744385958e-12 0 0.0007676407115 0 0 0 2.258569111e-09 0 0 5.123154298e-13 0 1.857259327e-06 0 30.43219352 0 0 0 0 0 0.02420350656 0 0 75.93963384 0.005782643943 0 4.458468993e-07 0 0 0 1.025184909e-17 0 0 5.324891629e-09 0.111652155 0 0 0 4.055964648e-17 5844.93303 0 2.450907034e-09 0 323686.6205 3.783643077e-15 0 106.3909831 0 1785749.277 0.3419408671 0 0 0 0 0 2.095543487e-10 0 0.002144263153 7.980670684e-26 0 1301614.486 0 0 0 0 0 5.026813073e-11 0.0001619133156 35421.2924 0 0 0 0 0 8.63227476e-12 2.605956376e-06 0.2416504192 281202.6102 0.1539666761 18472.65801 0 2.13313682e-06 6.007230827e-17 0.0005994715387 0 41322.08294 840.6216037 0 0 2.26401336e-22 0 1102487.35 149.9603933 0 47230.50742 1.144732655e-07 3.939853151e-17 1.184718513e-07 0 1.644829126e-13 0 0 9.332793462e-06 4.817899935 255.3119691 3.380933598e-20 0 0.1281696686 0 3.361545096e-25 0 0 0 1.931083962e-09 0 0 0 1.481381744e-16 9.722267125e-11 18784.77999 0 0.9927579474 19466.60344 0.005795482382 0.007299668163 0.006562978853 0 328558.1505 0 0 0 0 0 0 9.905942476e-27 3.522428143e-36 0 0 0 0 2.763262831 1.286560523e-11 0 1.383455119e-14 0 0 1.603877846e-07 3.064012098e-19 0 2.526123866e-08 0 0 0 4.706458827e-11 0 0.1130501336 0.03070083243 0 0 0 7.872303456e-22 0 5.130672346e-11 0 8464.332056 0 0 2.055863103e-20 87.28032377 0 0 5.700579656e-12 0 0 0.0004281114882 229.4787282 0 0 0 0 0 2.506313167e-30 0 4.419358859e-06 130464.2209 0 0 279298.5345 6.117738105e-22 9.458996444e-21 0 0 0 0 1.205751524e-19 0 0 0 3.955282473e-28 262.6249163 324154.4482 8.829701989e-09 2.000026289e-12 0 0 0 0 0 0 0 0 0 0 1.829209959e-06 265969.5345 0 398121.7076 0 0 0 0 0 1.514898851e-25 6.011445369e-11 0 0.03389748397 4.982178435e-13 0 0.000530331565 0 495369.0272 0.05457801711 0 0 7.434264567e-24 6.997668499 0 0 0.0003092050913 0 0 0 2.875668922e-07 0 0 0 0 0 0.0008774494724 0 0 0 0 0 0 0 0 0 0 0 0 0 9.863162831e-18 2100221.621 0 0 0 0 8.714242782 0 0 0 0 7.690363752e-14 0 0 0 0 0 0 +8.735877661e-09 4.463097185e-12 0 0 0 0 0 0 1.205244718e-15 0 0.01832003791 0 2.678683723e-10 0 0 0 0 1538.481579 0 5.553227148e-13 0 0 0 5.250430455e-05 7.105626756e-10 0 0 0 2.330818933e-07 0 0 2.090351436e-11 0.3180262216 0 0 8.17834919e-10 0 2.981222837e-15 0 0 1.923459578e-09 0 0 0 0 0 0 9776.67667 0 0 0 0 0 0 0 0 0 0 0 0 0 1.796181878e-12 3604.540334 0 0 0 0 0.2708644893 0 0 9.795876217e-26 41177.55425 0 0 0 4.014895443e-10 0 0 0 3.663177165 0 0 404081.7733 0 0 4.512768619e-06 0 0 0 3.681207776e-18 0 713.3255975 0 0 0 0 2.169533169e-12 0 0.001934894093 0 0 0 0 0 0 0 4.982285621e-29 1.120477903e-07 0 0.02662133436 0 0 10627.43651 3.416167697e-14 2.268810922e-21 0 16.68120493 5.866016734e-08 3.351964705e-06 0.00028327667 4.573416379e-09 0 1.008090052e-10 2.127937941e-11 1.164299489e-19 1.35399743e-09 7.817744159e-12 0 2.069813745e-10 19416.64775 2.282981943e-10 0.2997092549 0 0.08926546318 5.136393593e-10 0 0 104.9119616 0 0 3921.469823 0 0 0 2.645815124e-06 0.07923461699 0 1507103.128 0.0006261474359 0 276.8512984 0 2.107049058e-06 0 0.001563745146 158.604465 2469245.535 0 2.491281298 0 3.105529295e-19 0 0 0 165.1694823 0 1.415147177e-11 0 5778.858423 0 0.001809584364 0 1.98426101e-06 0 0 0 2152.468701 0 0 0.1321076309 0.005222544269 0 456331.7012 0 604416.206 0 0.005419361018 0 0.6297333302 0 973.7746696 0 0 0 0.02608190398 0 1186376.093 34168.24404 0 0 0 0 86670.90861 0 0 0 8.733838624e-13 0 0.06963453913 0 0 6.805023348e-05 0 7.091848035e-08 0 0 4.935637735e-06 0.0003110595237 0 2.276186538e-12 1.691561787e-24 23.0405939 0 0 0 14.58777682 0 0 0 0 0 22.40706537 0 2.88275657e-13 0 0 1.840801305e-05 0 0 485.1542428 0 0 0 0 0 0 1.701484857e-11 0 0 95927.76765 0 0 0 0 0 0 0 0 0 3.358545384e-05 0 0 0 49346.08286 0 6.214708775e-11 0 0 6.093598967 40.6585769 0 2.251092938e-15 2.463422931 0 0 0 0 0 0 0 0 0 0 1.360989298e-09 0 4.726011275 0 673.3355536 1.056405765e-24 0 0 0 0 3.697099225e-06 3.39110385 90.58677537 0 3.83477395e-08 0 8.49094182e-20 +60625.1734 0 0 6.21191585e-16 0 0 0 0 0 0 0 1985.042452 0 0 0 60563.37079 0 0 0 2.421474696e-11 0 150927.535 0 0 0 2199.115809 0 0 0 0 4.687424648e-10 0 1.759536678 0 0 3.843451607e-09 0 0 0 0 0 2.544258113e-13 4.433082517e-10 0 0 0 0 0 0 0 0 4.580286276e-06 0 1.660368098e-12 0 0 0 0 0 5.156271177e-08 108.9860068 1.481306558e-13 89.18258186 0 0.4741500149 0 0 0 0 1.236707419e-11 0 0 0 0 0 0 0 0 0 128906.9463 0 3.641278671e-08 0 0 0 0 14753.71944 0 0 0 0 0 0 2.314065098e-09 0 5744.663471 7.36924782e-12 0 2.039955845e-07 0 0.008754737812 0 0 3.557073091e-05 1.455029948e-24 14028.81886 6.07845941e-10 20.78556958 0 1.295043811e-14 0 1.764569677e-11 1.393581549e-13 0 0 0 677.2049294 1.434823155e-12 3833213.285 0.0001226656131 6.920425465e-05 100353.3392 0 204.5414937 0 3.873409565e-06 0.0002366849385 0.0002185942864 0 34865526.82 1.381220197e-33 0 1.039554719e-15 385.5253647 0 0 0 0 0 1.157097464e-07 0 5.560121462e-12 0 1535557.957 0 0 0 0 4.219572402e-05 0 9.553303804e-17 21.89180148 0 0.004309457844 0 0 0 9.41232439e-29 1.349418259e-06 3.443004602e-15 0 95769.24132 0 0 0 0 0 1.153462351e-16 2.946113249e-12 0 160650.9951 5.309473271e-10 0 4.459181061e-06 7.764383912e-06 483506.1685 21111.48696 0 0 0 0 0 0 17.48878725 3.031489737e-14 0 766.2022412 0 0 0 0 0 0.01254553694 1237.236306 35.02618843 0 0.01217102437 0 0 0 0 0.2091444995 3399.243002 0 0 17635.93192 464580.9561 9.064020033e-20 0 0 0.0004630780938 0.001771050068 3.055057276e-05 0 0 2160.874142 0 3.287283535 0 0 0 1133397.4 5.099300081e-26 0 0 0 0 0 6.447939295 0 0 0 0 0 1.002007692e-21 0 0 0 0 1.457877283e-09 717.8998973 0 0 0 0 0 0 0 456.135566 0 0.09634102435 9.55406217e-13 0 2.321975789e-08 0 0 0 1.562096926 0 1.844804232e-12 0 0 0 5.046450127e-09 391.1816823 3.178801357e-05 0 0 0 0 1.409863141 0 0 0 1.164771647e-10 0 0 3.199166847e-11 0 3.030833999e-07 0 0.0007044397311 0 0 0 0 0 0 0 0 0 0 0 0.143366877 0 0 0 252.2321728 0 0 +0 0 0 0 0 0 0 3.293033847e-06 5.945188634e-06 0 0 0.001221430928 0 0 0 0 0 3.915087741e-14 0 0 0 0 0 0 0 92919.48562 3.182479226e-21 0 0 0 0 0 0 0 0 86.66641792 0 0 0 0 0 0 0.002756933983 5.147686956e-22 0 0 0 0 4.719146246e-11 0 0 0 0 372896.3311 0 0 5.920070375e-15 542716.9123 0 0 0 0 0.0002681914894 0 0 0 0 2.05023274e-07 4.430251082e-05 0 1.053301136 0 0 11363.28056 0 6.835830925e-06 0 0 0.01297248458 0 5.439492591e-05 372684.458 0 0 0 0 4.484989056e-07 0 0 2.039196346e-16 0.002852841825 0 4.044309178e-11 0 0.07830240561 9.040375541e-10 0 2.187053499e-14 0.000510716132 4.346380384e-09 0 0 3.145561434e-24 0.01169089597 0 7.611296705e-24 0 1.774867606e-13 4.838177425 0.01768183794 1.017911566e-19 0 5.740514471e-35 1.739407833e-14 0 0 0 2.67392043e-08 0 5.659288092e-10 1237838.951 0 1.203147487e-12 0 4.929706402e-16 0 0 0.1476160357 3.152664157e-23 0 0 9.981927553e-15 0 4099.839551 0.001772686974 1.689282949e-20 0 0 0.002818254007 40.94015278 1.945905359e-08 4.385624279e-14 0 3.729290907e-07 3.6216007e-26 2.1992581e-12 0.00313470998 0 0 7.312547841e-05 5.327021682e-12 0 1.466416618 2.179395694e-15 0 3.683195406e-17 0 0 1.912315522e-18 0 0 0 2.668210552e-13 0 0 7.919344752e-10 0 0 0 355060.4995 0 0 0 0 0 0 2.996054739e-22 0.0006960887276 0 0 0 0 6.233221733e-21 0.004242795884 0 21.83861439 0 0 0 0 0 1.260743305e-05 0 0 0 0 0 0 0 0 0 574436.2223 1.851058648 2.582469632e-10 0 0 0.0002388975531 0 0 2.441881482e-07 0 11267.53264 233718.6649 0 0 0 28.86404985 0.01866807374 22670.84615 0 0 0 0 0 0 0 0 0 0.01107766596 0 0 4.835121797e-05 0 4.092175875e-08 0 0 0 0 0 0 1.157174843e-19 0 0 0 0 0 0 0 0 0 0 0 0 1.388624119e-10 0 0 0 0 0 257622.9017 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18213.41462 0 0.01300330212 0 0 0 0 0 0 0 0 0 1.48481508e-12 1.344915586e-15 6.529290532e-09 0 0 0 0 3.930520299e-07 2459311.585 0 1.031772154e-05 +0 0 0 0 0 5.082041775e-11 5.716806726 3.26153514 0 0 0 2.786966818e-06 0 35.94733457 0 3.957504918e-10 0 3.380601426e-16 0 0 0 9.140887731e-24 85447.74728 5.719489142e-12 0 0 0 0 0 0 0 0 3.30704993e-05 0 0.0006384392504 0 0 0 0 254.5573154 0 0 0 0 8.102512833e-14 0 0 0 0 0 6.238541783 0.0003904852413 7.913065338e-07 0 0 0 0 0 0 0 0.09131264174 0 0 0 0 1.38675271e-06 4.252115822e-08 18.49968039 0 0 0 0 0 1.588188016e-13 0 1.299196162e-09 2.987629103e-20 3.494063984e-12 4.076215859e-16 0 0 0 3.320036196 0 0 2.720632118e-21 9.44460686e-24 0 3.915774279e-33 0 0 0 181072.2547 0 0 0 0 1.869454885e-12 0 0 0 17.66109659 83.574467 0 0 0 0 0 0.001691176579 5.109692597e-12 0 8.736103747e-18 0 0 0 3.072648033e-14 0 1.581653915e-08 2429.010741 7.224573572 2.796379289e-14 0 0 0 0 0 274634.442 0.01626255432 0 0.1865526376 6.985012895e-30 0.8945331928 0 0 0 0 0 6.318417937e-11 2.241358573e-05 3.692432864e-17 0.7003813868 2.407245047e-14 8.401089352e-09 7.792351933e-13 1.592191912e-21 2.232362187 0 0 0 2.36347996e-05 0 5.162389897e-15 0 0 0 0 0 0 0 1.025853151e-14 5.269287595e-10 0 3.093133603e-08 0 0 2.989521434e-12 2.826249734e-13 0 0 0 1.576837551e-09 2.541258473 2.688422895e-13 0 33.76146961 4.366864626e-07 0 0 0 0 0 1.617528282e-10 0 9249.330881 5486.339247 3.823741955e-06 1.877473694e-07 1.028028629e-16 0 0 0.001234036047 0 4.843438832e-11 0 0.1816192162 0 0 28765.42433 0 0.002345590545 4.450139884e-26 6.184887567e-11 0 0 0 0 0.005318781082 6.649269142e-11 0 0 2.213829463e-12 0 3.054134841e-08 0 0 109589.8419 0 64865.77734 584466.035 0 1.029226654e-09 0 0 0 0.03522858616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1300054.662 2.832321564e-07 0 0 0.1115058175 0 1285.852893 0 0 0 1.153401784e-10 3.29627137 0 5.647310037 0 1.07154017e-07 0 0 0 0 0 2.124363233e-07 5.883197287e-06 0 0 0 0 0 5433460.193 0 0 0 0 1.015841188e-10 0 0 0 0 0 1.372067589e-15 8.117309058e-20 0 1.062099325e-10 0 0 671881.2479 1.528069239e-05 0 0 0 0 0 0 0 36313.98025 0 0 0 0 0 0 +0 0 2.635562468e-25 0 0 2.849035774e-07 0 0 0 0 2.004881587e-09 0 0 0 1.24452295e-10 0 0 0 1.637168379e-12 0 0 0 0 0 0 0 0 0 6.995959367e-10 1.930140472e-08 5.639030029e-19 0 0 0 0 0 0 0 0 0 0 0 0 85518.45256 2.145889607e-06 0 0 4.886561931e-08 671381.8062 0 0 0 2.00420593e-07 0 2.150034744e-12 0 0 0 5098660.648 0 0 0 0 0 61534.69199 0 0 0 0 1.41525844e-08 0 0 0 0 0 2.31993249e-17 0 48.27574549 0 0 2.125666767e-09 1329975.275 0 0 0 0 4.188217745e-11 6.298818113e-17 5.258221276e-05 0 1.473275349e-06 0.000390675432 0 0 482182.1443 94173.45475 0 3.597989966e-07 0 0 6.856428632e-10 0 8.133736569e-10 0 0 0 0 0 0.001495600351 0 9.119054074e-14 0 0 3.451360363e-13 1.805355261e-06 0 0 0 0 0 9.24437308e-17 1.84448348e-09 0 0 2.505961654e-07 0 5.586775452e-27 176.4091351 81245.57802 0 0 2.109525156e-24 0 0.06991794351 0 0.001450573173 9.297271783e-06 0 4195.652095 2.406165702e-06 0 0 1.378041769e-08 1.133904729e-11 9.040694882e-08 109315.1015 0.0410954767 0.03365915597 0.0002735927648 0 0 26720.49655 8.166389119 0 99266.84281 0 7.095549377 0 0 3.003422677e-14 8.351017339e-08 0 0 0.00157649 0 0 0 0 0 3.377832083e-09 0.6378083473 0 0.009055283353 1222228.414 0 5.905394537e-11 0 0 0 6.386760996e-06 0 0 0 0 0 0 0.004593477694 9.942208629e-21 0 3.426684714e-11 1.794634117e-19 0 0 553.2843947 0 0 0 56557.08024 1.323714087e-25 0 1.882169813e-31 0 8.18769025e-08 0 3.079263078e-11 0.01312269128 3.146080008e-21 0 4.433153187e-08 0 0 1.429247685e-15 4.103443522e-05 0 0 0 1.632566806e-20 0 0 0 0 0 0 0 0 2.376653289e-13 5.120126193e-14 2.239466367e-12 1.822252917e-17 144212.8742 0 0.0004240462216 0 0 0 1.168392762e-14 7.339790483e-11 0 0 0 3.786460534e-06 0 0 0 0 0 0 0 0 0 0 0.1540162184 0 0 0 188165.7761 0 3.142216677e-17 2.750616447e-11 0 0 0 0 0 0 0 0 9.167894706e-05 0 0.001385771247 5.096345507e-08 0 0 0 0 0 0 0 0 3.145214864e-10 0 0.0007280312824 0 0 105.2643806 0 0 225585.4777 0 5.097107238e-05 0 0 6.869849486e-22 2.097930487e-09 0 0 0 148.6831925 0 1.646453139e-08 +246603.336 0 0 0 0 0 0 0 0 5.5878886e-10 0 0.000311476568 173041.2736 0 4.112854067e-14 310.056204 0 1.330423805e-27 0 0 0 0 1.099251245e-13 0 5.784737108e-05 2565809.492 0 0 1.700814406e-07 0 0 0 5.154760888e-08 0 31.86317633 2273958.552 0 0 0 0 0 0 4.857172925e-07 0 0 0 0 7.468517706e-20 0 0 0 1.283354224e-05 1164.959455 0 1.199099907e-23 0 0 6.142077256e-05 28.9670249 0 0 0 0 0 0.0007594953551 0 0 0 4.893539373e-06 216.9034122 3.18070353e-16 0 0 0 0 3760.577682 0 0 0 0 1.486755679e-17 0 241367.1534 0.0004481479977 5.458044169e-18 0.002360103465 6.511785454 0 0 1.654737076e-16 64580.50713 0 0 0 2.044855174e-05 0 4.57457486e-06 0 0 0.003957650758 0 4.240250235e-10 0.000366702316 1022.792802 0 0 0 0 0 0 0 24.27589469 3.064901295e-27 5.087663264e-05 0 0 0 0.5559430549 17052.44709 0 0 2.8687926e-22 2.009759373e-25 1.286011621e-09 0 892757.7269 0 0 5.699688123e-12 0 0.0003458858324 0 0 348.90482 0 7.507150183e-16 0 0 2.986137309e-15 0 1.575488832e-12 0.884777722 0 2.275424246e-11 4.946644947e-31 0 0 0 0.000545497094 1.597734326e-08 3.473974148e-08 56.3580223 5.702405414e-15 2.469444065e-08 0 1.489192972 0 19.18727609 0 0 4.031208083e-14 1.769629509e-28 0 0 1091.872369 4.439511124e-29 1.682740475e-10 0 0 1.066277696e-15 3.550571002e-07 0 6.52070261e-11 75.71814136 161430.5412 0 80074.71447 0 3.91825882e-06 0 4.779901703e-07 0 5.922845445e-37 6.589148967e-20 0 0.009793634847 0.5141705212 2215636.207 0 0 1.913076973e-06 0 0.006429536514 0 0.0002617957739 0 2006207.12 0 1.653952378e-07 7.948430627 4.259449111e-07 0 8.396020724e-18 0 0.03557519972 0 7.033422208e-16 0.8116394195 11748.08766 15612.3762 6.740519526e-11 0 0 878802.215 3.49306535e-13 22437.67318 0 0 0 0 14.97627208 0 0 0 0 6.417666701e-06 4.726524536e-17 0 0 0 0 0 0 0 0 2.48385849e-20 0 4.119238998e-17 0 0 0 4.534908952e-05 0 0 0 0 32.93049899 0 0 2.74559734e-15 3.569773326e-15 0 0 0 0.6516409139 0 0 0 0 0.01306949865 7.553334822e-05 0 0 0 0 0 626322.477 0 0 4574.399182 0 0 0 0 0 0 0 0.3554864411 0 0 4.157827666e-10 0 0 0 0 0 0 0 5.26433888e-20 2.307709294e-12 0 0 0 0 0 0 0 0 1662.741011 0 +0 0 0 0 0 0 0 0.3426762645 6.418585166e-06 0 0 0 0 0.01341958589 0 0 0 0 0 0 0 0 0 0 91.93092136 0 2.194831925e-06 0 0 0 0 0 0 0 0 2.858557834e-10 0 1.067446743e-14 2.330374487e-09 0 0 0 0 0 0 2.030415674e-15 1.483552224e-07 0 7.505873708e-13 0 0 0 0 0.001873076596 152782.2478 0.004158678187 0.005701869736 0.01602747842 0 0.001361991098 1.430847172e-08 0 0 0 0 1.969024647e-07 0 0 2.269106293e-12 8.726954143e-09 0 0 0 0 0 0 35.30938446 9.968531722e-05 0 5504.040831 0 5.504364959e-08 15244.37315 0 0 0 0 5.399107662e-18 0 1.648293132e-07 0.0002813916602 4.291311345e-11 0 0 2.333713222e-15 0 927.8024115 0 0.3454051841 4.015075071e-30 1.393758258e-07 0 0 378502.739 0 364078.2609 0 0 0 0 8.292508659e-10 5.471832954e-06 0 6.084688632e-14 0 4224.063049 3.439034377e-10 0 2.531383864e-09 0 0 1.870599344 4.024926145e-15 0 0 0 0.03432041515 0.0002925305669 0 58036.70353 0 0 5.711844696e-06 11.84839796 2.974662349e-14 0 0 0 1.672116148e-05 0 0 61.59951857 0 6.242044324e-15 0 1.638310182e-09 0 0 0 0 5.388857605e-12 0 0 45440.78209 13779.61267 3.28401994e-08 0.004843303904 9.907986018e-08 3.050553451e-11 1.0552305e-10 6.195870667e-06 0 1.165998338e-17 0 484046.1211 5.207958056e-12 6.846467233e-07 284.5612403 28943.23372 5.299362859e-11 0 0 0.0003749163484 0 0 6102.844619 3.366370222e-05 0 0 718049.5248 1.531240329e-08 0 0.0001727097222 0 0.8119751528 1152.88486 4.973526101e-21 0 0.749025374 0.1294457759 0 1.396453362 0 0 1.226185449e-06 3.538046449e-14 0.164519848 1.016917342e-34 0 0.2294342625 0 0 0 0 0 6.370826779e-25 0 0 2.390533907 1.421530763 7.939869835e-08 0 0 1.176482055e-10 0 0 5.498382559e-14 0 0 0 0 0 0 0 0 0 0 11076.73276 0 0 17158.07878 1.828071296e-17 33205.09753 0 0 0 0 2.037679676 0 4.085088628e-15 0 12.36125492 0 0 0 0.008122604804 8591.551639 0 0 0 0 0 0 0.001275923942 0 0 3.267858268e-20 3.761446581e-05 0 0 0 6.066285141e-22 0 6.168463652e-10 0 3.471000443e-26 0 0 0 0 0 0 0.0001064321105 6.47931053e-12 0 0 0 0 0 24045.49825 0 0 5.566347308 6.669390873e-05 0 0 0 3.024412139e-10 0 0 0 0 0 0 0 0 0 4.238379341e-13 0.006851944958 0 +3.386387582e-13 0 0 0.2397920071 2.620348329e-11 0 0 1.607622025e-14 1624.754649 4.258791851e-21 8.330010441e-19 0 3.367975073e-13 4.385370001e-14 5.765113772e-10 0 0 0 1.856035951e-26 0 0 0 0 0 1.148679589e-06 0 0 0 1.62105452e-15 0 0 4450.721281 4.081057046e-11 0 1442.031191 0 0 0 0 0 33307.79446 0.001361907689 0.0002055568128 0 6.957252408e-08 0 0 0 0 0 0 0.511243635 0 0 0 0 0 1.57602709e-07 0 0 1.694936368e-11 0 0 0 0 0 1.579805951e-08 2.82183071e-18 0.0007144525253 0 0 1.674095754e-24 0 1.34306388e-06 0 0 0 0.2379780679 0 0.001596611983 2.807864217e-07 9.364429225e-11 0 0 0.01064951568 0.002604669908 0 0 4.893519505e-10 0 8.57578392e-05 0 0 0.01061193911 9.630143643e-06 0 0.2797740676 0 6.82960128e-09 0 4.095158188e-11 0 1.124710479e-05 0 0 4.337369324e-07 0 2.977015168e-07 0.001140803612 0 0 0 0 0.01051652116 0 377.0291873 0 0 2.740441812e-06 0 7.537056105e-14 0 115315.9474 0 7198.255155 1.410421529e-26 0 0 0 2933553.86 0.4012549165 0 0 1.304498233e-28 337578.6154 0 4.822516967e-06 8.23549393e-09 0 0 0 5.965405639e-11 1.747239549e-24 0 0 4.678752726e-08 4.698427376e-09 0 1.005868835e-28 1.24087975e-15 0 0 0 0 0.002017497704 0 0 0 0 7.238054045e-17 0 1.615307415e-11 0 0 7.818293093e-10 0 0 0 8846.201912 0 0 0 0 0 2.863825609e-11 0.08385480523 0 0.00425496845 6.064935047e-12 0 441.1966 7.169605781e-10 0 0 0 0 614569.8055 0 0 0 0.0002996170385 0 0 469091.3327 0 1.02786464e-20 1.229674798e-26 4.11376155e-07 9.622734972e-08 0 0 0 2.848391708e-07 0 0 0 626397.9916 0 0 0 0 2.826520235e-09 0 0 0 0 0 0 0 1.075589036e-06 0 0 0 8.943874579e-21 0 0 0 0 0 0 0 0 0 1.543730155e-16 0 0 0 0 0 0 3.503767689e-08 2.853918448e-23 16684.7959 0.001618456209 820.8341291 0 0 1.374664724e-11 0 0 0 0 0 0 0 0 0 2457.436941 5.617474594e-16 0 679478.771 0 0 0 0 0 0 0 0 0 0 0 0 0 8.440831498e-13 0 3.298216024e-22 0 0 0 0 0 0 0 35291.66318 0 0 1.359579385e-17 0.116234397 0 0 0 0 0 0 0 1.601180048e-13 0 1.662632163e-08 2.778539763 +0 0 0 0 1.685103504e-06 425705.3838 1.424382988e-20 281.7111649 1.520147358e-07 0 0 0 0 0 0 1.940637635e-08 0.0005963111167 0 11252.92349 0 6.578820914e-14 0 0 0 0 0 1685.359769 0 0.0001224256599 0 86480.06521 0 0 1.266900535e-09 0 36550.3109 0 0 0 2.465739259 5.582471717e-05 0 6.881278424e-19 1.026074482e-09 1.014057662e-07 3.555389942e-16 0 0 5.747166769e-23 0 0 3.652203124e-07 0 4.884190363e-28 0 0 0 0 0 1.039825419e-22 0.3675805404 3.593024549e-19 0 0 7.228719942e-15 0 0 0 0 0 0 0.0003494460506 7.007223317e-14 0.2051753708 6.376974338e-11 1.424351381 6.086302991e-12 0 0 0 489.8605704 0 6.468128969e-08 0 924845.474 3.269704048e-09 0 9.566652026 46194.78484 0 0 0 0.003615007308 0.8507078093 0 0 0 0 0 2.379586469e-12 3.771061924 5.973662881 0 0 0 0 782069.587 2.02176635e-11 13357.42121 2.657655604e-09 4.748780765e-05 0 0 0.03518817675 8.958142471e-09 0 0 0.2353212832 60887.33175 0 0 0 2.018548425e-12 0 0 0 0 0.0003934204821 0 0.02521482035 2.142648295e-10 3.626527104e-11 0 0 0.0001608987856 0 6.870677647e-22 3.84015701e-05 0 0.03801258219 1.069552176e-11 2.349014108e-07 0 0 0 1246.528589 0 1.684974687e-07 6.821156939e-15 0.001105382897 327.9574798 0 19926.80665 0 0 0 3.101017902 7.080262583e-05 5.992931041e-10 0 0.0001892227979 0.001652800239 0 2.778713435e-05 0 0 1.794981977e-05 3.618119501e-10 0 0 0 282616.9697 2.823166258e-05 3.685714907e-21 3192.56967 0 0.002149225123 9.124687009e-05 8.69814267e-11 8.852813005e-11 0 0 0.01659677727 1.281913849e-11 0 0 1.91347176e-10 0 3.685460863 3.873631803e-11 0 2.039039136e-10 0 1.050235427e-08 499.3136638 1.196516603e-10 0 0 1.686032936e-11 0 0 0.009543241996 0 0 0 179364.8803 3.295431385e-17 0 0 0 0 0 326931.3591 0 177022.9331 0 0 0 0 1.679712676e-13 0 0.03786571894 0 1275635.212 0 0 0 0 0.9357814958 2.41085934e-13 0 0 5005.330247 101.1359538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.75240256e-09 6715.59234 0 1.178676169 0 0 0 4.180637084e-17 0 0 0 0 0 0 1.052713824e-14 0 6.778742553e-43 0 0 2.768187943e-11 0 3619180.565 0 0 0 1.375463916e-22 0 0 3.806234682e-15 0 1.237216762 0 68.65505183 0.07435778159 0 0 0 1.84337685e-17 1.377513805e-12 0 0 0 0 0 5.271639309e-12 5.22873707e-05 9.463341498e-18 0 0 1912851.486 3.346295214e-08 0 +0 0 0 5.814338362e-13 1.20139865e-26 0 0 0.002481415761 0 0 0 0 0 0 0 0 0.0003607235044 1.36278107e-07 49206.87907 0 0 1941016.365 0 3.662318204e-06 0 0.00034112231 0.01225378163 0 0 0 0 0.006074101272 0 1791.936659 0.9362733828 1253127.009 2513159.539 5.422510705e-07 0 0 0 0 0 2.128460372e-22 0 3660.158346 0 9.662008657e-05 0 0 0 0 0 0 1.948497029e-12 0 0 0 0 0 0 0 0.002180284614 0 0 1.483998037e-05 0 0 0 0 0 2.267950202e-10 0 0 0 0 0 169370.5405 42.68144159 2.415114392e-08 9.454068915e-09 0 1.692325868e-32 0 0 0 5.883989357e-12 1966.671092 0 0.002341195258 0 0.2461416813 3.729366935e-05 1320142.855 0 0 9.593180914e-12 0 6.410920038e-07 0 0 1.89797217e-10 0 0 0.3009501141 9.205601765e-32 5.964357884e-10 6.28017869e-12 0 0 0 279238.6515 0 935866.5054 5.575014853e-12 44848.4946 0.09904315905 0 1.444824768e-07 8.960414273e-14 0 0 0 0 0 0 1.542079788 0 3.63381373e-11 0 2.812640461e-10 563867.9013 0 1.110008895e-11 0 70.09628262 121.8196202 0.5465526738 1.893390511e-10 7.795780478e-13 1.259435194e-05 381.8956932 1.449865727e-06 0 0 1372239.563 0 0 0 0.3681894895 0 0 0 0 1.85012228 0 1.214529571e-06 6.363311809e-11 0 6179.790996 5.715073521e-07 3.38169839 0 0 0.08966642264 2.515252902e-19 12.46324043 0 783.2479263 0 221.2930537 0 1.661703462e-13 7.495869932e-05 0 84025.88103 0.001794702044 0 724407.4079 0.02051233752 0 0 9.228208551e-20 0 0 4.366626414e-08 3.697885449e-11 0 0 0 0 0 0 0 0 0 0 0 6.887254659 0 0 5.895401149e-09 0 0 0 0 7.923249708e-25 0 0 0 0 0 102325.5514 216292.6744 0.2081535924 0 3.817079805e-11 0 0 0 2.79432793e-13 0 4.389216862e-24 0 0 0 0 0 8.539008557e-08 5.011137749e-16 0 0 1.583519355e-09 5.46599432 11.81420598 0 3.223700907e-11 0 6.119431969e-17 0 0 0 0 0 0 931398.6708 0 7.500096579e-13 43437.81111 0 0 0 37533.60019 976.3932182 0 0.08714885072 0.2365772757 0 0 1142.990399 0 3.507247028e-05 0 0 0 6.041951763e-14 15612.1303 0 0 1.398698242e-08 0 0 0 147695.7637 0 0 0 0 0 0 0 0 5.22560047e-29 117.4047005 0 0 0 0 0 0 0 0 0 0 0 26689.13545 0 0 7.971485383e-28 6011.249995 +0 5250.267233 0 0 0 0 0 0 0 5.023657667e-09 3.852379201e-33 1.43599506e-09 0 52.93093686 101682.9344 0 30.7005811 0 0.02794149351 0 1.435443171e-12 0 0 0 5.140523987e-11 0 1.427055615e-13 0 0 84127.21688 0 1.495270416 0 2.035052398e-11 100754.413 0 0 0 4.510379615e-08 0.0003463142411 19.33012551 0 0 3.056238024e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04405598202 0 0 7.802147368e-05 460069.3831 74.05317845 0 0 0 0 0 1.503649431e-15 5.179922007e-09 0 0.001647305043 0 0 251525.3036 4.659194625e-05 0 0.004107518836 0 0 6782.651305 0 0 38.56305614 1103.827066 0 5.482553955e-11 2.304218025e-09 96290.64264 0 4.976205378e-13 0 2.710555176e-05 1.648953835e-09 3.41318428e-07 5.840439961e-06 1.946700916e-10 0 7.192539327 13.22901097 0 0 0 3.557147637e-05 6.619533879e-05 0 0 9.673750768e-06 130781.0409 0 9.980057305 0 0 5.859740034e-09 1754325.577 0 0 4.308242936e-05 0 1.848552314e-15 0 0 0 0 0 4.208850724e-17 0 0 0 0 0.1107370494 0 0 93.14434086 0 7.479251569e-10 0 1.453874886e-06 0 0 21570.6154 0 0.0003507666206 0 3.512458596e-08 0 0 0 4.700055627e-16 2.552639233e-13 0 5.235123994e-26 0.001060206531 45177.33546 2.770283325e-24 1.392397758e-07 2.492812262e-13 0 0 252.6546599 1.987724104e-19 767987.8361 0 0 0 1298938.582 3.022743757e-06 1.919689252e-07 0 1.985169485e-09 0 0 1.422433181e-08 1.979394221e-17 3.29200182e-09 0 0 0 0 42.32680457 774.6896473 1.500497302e-14 0.0007869182968 0 1.890199839e-06 2444.791061 0.006846944323 2.813933677e-14 0 2.392947426e-07 0 0 9.257457071e-27 0 2.205773339e-11 0 0 0 1.172981175e-05 624.0098861 0 0 0 0 0 0 1.351127728e-08 0 1.602434493e-08 4469.333419 0 0 0.0002923872512 5.97386165e-25 1990.842275 0 255.6500379 0 0 0 0 5.058241913e-12 0 0 18.93343513 0 0.006805592867 0 0 0 0 21684.30441 0.0005460328415 0 0 1.273189854e-19 8.284823823e-12 9.65695268e-14 5.479364168e-26 0 0 0 0 1.675647726e-29 209451.2331 0 0 0 0 0 0 1.083207631e-22 4.289544732e-06 0 0 0 0 0 0 0 0.03546653073 0 0 0 0 3.307687047e-11 0 0 0 0 4.778119653e-28 0 0 0 0 0 0 0 0 1.130632383e-09 7643.296385 0 0 0 0 9.534936731e-15 0 0 0 0 0 0 0 1.46845985e-07 0 0 0 0 0 +0 0 0 0 0 0 0 1.042730854e-16 0 0 0 7.6750536e-13 0 0 0.07804443756 0 0 0 3.771914217e-07 0 0 0 310.1660143 0 0 0 826698.4195 0 0 56772.98411 0 4.419670509e-15 0 77.45274058 0 6.845375254e-12 0 0 0 12565.35349 0 0 0 3.628839802e-07 0 0 2.407265923e-14 0 0 6.93489001e-06 0 38.00154819 0 0 0 0 0 52.14774519 6698.435188 4.009310657e-14 1.159111801e-12 14.76419762 0 0 5713152.247 0 0 0 1545.566701 235.7611578 0 14.86270464 0.1101009654 7.355475056e-07 0 1.360339914e-06 0 8.623460378e-11 0 9.419421319e-26 0 0 0 3.641510434e-07 287273.1099 0 3640.227115 0 0 0 3.834659497e-07 0.7456337241 0.1045050455 0 3.042606868e-09 0 0 0.1698187292 0 0 0 0 0 0 56275.37692 1.657847434e-05 0.004778361208 0 1.856855013e-05 0 1.124289873e-22 4.581615531e-08 0 0.2922896086 1.022602498e-12 4126.064052 0 0 1.643539559e-12 2.071252363e-23 0 0 0 0 1.73623525e-13 0 0 3.299278042e-08 0.0005674430838 0 0 2.945142058e-18 0.03078402473 0.001192005257 0 2.017689955e-16 0 0 3.10113207e-07 2.362289299e-21 57.63918815 3.701762128e-11 8.088282998e-08 1.777935144e-05 2.606160801e-10 1.151608791 0.000219293923 2.511087925e-14 0 0 0.9362252709 0 0 0 0 0 1.481402539e-12 0 1.598570992e-06 1.292330103e-05 1.759696607 0 0 0 1.362106172e-14 0.001389787354 0 0 0 0 0 1.469241658e-12 470224.248 0 501.4934713 0 208715.9252 0.02438669234 2298639.154 0.02740954075 1.366463454e-07 0 2.206372266e-16 0 0 1.274643816e-08 0 60.55510413 5.718138648e-16 4.140369958e-07 0 0 0 0 2581.729473 0 0 0 2.540139466e-21 0 2.863351393e-15 0.0001340318727 0 0 0 2.77305403e-09 0 0 0 0 0 3.51842927e-06 0 3.179138925e-05 0 0 0 0 0 0 0 0 1.828322207e-13 2.239754993e-17 0 0.004954964115 7.54541498e-07 0 0 0.001199133175 0 0 0 0 0 0 0 1.489146828e-08 89521.52107 0 0 6.09944373e-27 0 0 0 0 0 0 0 0.3518032801 0 0.05607126469 0 0 0 9.263144717e-15 2.349343993e-24 0 0 0 0 0 0 0 101.1900509 48.66922002 1.962620274e-06 0 0 5.226503984e-11 0 0 0 0 0 0.0002092314585 0 0 944282.0261 5.076018857e-08 0 0 0 0 0 2009216.192 0 1.078443245e-12 8.284678008e-27 0 0 0 0 2.632968244e-46 0 0 0 0 7.809366851e-18 0 +1.790046875e-12 0 0 6576.349326 0 0 0 0 1.14614588e-08 5.487903357e-13 0 0 1.224420401e-16 10.43515552 0 0 0 0 0 0 0.00128791862 5622.042394 0 0 0 5.374596721e-07 0.001757503258 0 0 0 3.859616311e-14 0 0 0 0 0 0 0 0 0 1.706533812e-06 0 0.0001129231751 0 0 0 7.627723579e-19 0 0 0 11.31966728 0 0 0 0 7.742289794e-09 0.06743682812 1.674679171e-15 2474840.697 3.001958619e-12 0.0001113866741 1.729389681e-20 1.046449203e-14 0 0 4.735912153 0 0.1193416888 0 0 3.450285061e-09 0 5.130035413e-07 8.564076253e-13 0 0 0 0 1.869251155e-07 2.097697225e-25 8151.186955 0 0.2222863088 0 0 536330.3428 0 0 0 2823980.839 0 1.285547602e-07 0 8.131938802e-07 0 0 2.956941327e-22 0 0.000259148351 1482.604486 0 0 0 2.986504273e-16 0.05193956901 0 0 0 0 0 0 5.757901516e-12 0 220880.3026 0 0.0001059887169 0 0 3.190718599e-29 0.08701511714 336347.3588 0.5247037544 2.506483078e-19 0 5.040932608e-07 42.60198956 0 0 0 0 0 2.727192549e-11 0 2.550278491e-14 0 0 0 883718.3398 7.385986575e-09 0 0 0 0.04028177709 6.122651113e-17 0 0 1308186.688 0 0 0 0 6.027116777e-13 2.696278707e-18 7.161553947e-20 0 0 0 0.00120844615 0 0 2.573635603e-05 0 0 0.0002658105799 1.844538741e-10 0 0 2.843353346e-07 2.911015113e-12 51826.35828 0 1545.256452 0 1.996608397e-05 3.861324342e-08 0 9521.550646 1.710931477e-08 0 0.773943149 0 1.113622305 1.077050487e-15 0 3.199743937e-11 3.404525251e-05 0 3.287150107e-11 0 0 0 0 2.962921893e-13 0.001160820617 0 1050969.194 7.033340789e-12 0 0 0.0004066554872 0 0 0 3.5988995e-12 0 0 0 0.8612239876 0 1048.377778 0 4.592868432e-21 0 3.706505271e-09 0.003157439837 0 3.561682968e-08 1.348853457e-23 0 0 0 0 0 1078189.659 0 1.631333346e-09 0 3.713200506e-11 3.149502145e-05 0 0 0 1.3112347e-06 0 0 0 74.41282048 0 1.30865473e-27 0 0 0 2.660632323e-08 0 0 0 0 0 7131135.849 0 8.400916331e-10 0 1.756787939e-05 1.155007538e-25 0 8.375519416e-12 0 0 0 0 0 0 0 376584.5888 0 0 0 0 0 0 0 0 2.862704925e-27 0 0 1.208560343e-13 0.0004623018638 0 0 0 0.003650691515 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.034506557e-07 0 0 +0 0 0 0.03697677601 0 0 6.421955824 0 8.550243115 0 0 0 3.873528188e-12 5.912676399e-16 27792.99546 5.847417939e-13 0 0 0 4.948161609e-31 0 0 15231.31551 1.241651279e-14 0 82.18204203 0.6494087094 0 2.706716651e-28 0 0 1.514877208e-20 0 2.383941187e-15 0 1667.145551 0 0 0 2.736853227e-13 0 0 0 5.386048079e-08 0 0 1.554343172e-27 0 0 0 0 2.243035103 0 1.00410717e-26 0 0 0 43.91959091 9.578731773e-06 0 0 9.583026382e-14 2.269867905e-09 0 0 0 0 0 0 0 0 197026.701 20.13071461 0 3.828739472e-29 0 0 0 0.2372147998 5.588341001 0.06883713945 0 0 0 0 0 0 7244437.567 0 0 1.544582727e-16 5.122007302e-25 0 3.229834642e-05 3063.98087 0 0.03464919353 0 0 4.471258086e-12 11691.98152 0 0.07940382425 3.912180798e-19 0 0 0 33060.00375 0 0 23.02579566 0.1955424988 0 3.746405158e-11 3.953493751 1.042291136e-06 2.345289852e-14 0 0 8.189236203e-07 806.0395698 0 0 1022.446215 0.006050555834 0 1114.329651 0 0 0 4.787642741e-06 0.380973861 0 0 0.001442666341 2.980768901e-07 0 0 0 2.171670093e-10 7.467875379e-12 0 0 0.0004329819399 0 9.88881684e-05 0 0 1.907564416e-25 167.343219 0 8.009106256e-12 0 0 0 93.35563546 295347.9563 0.001250613625 2.387305023e-20 0 0.2457808027 0 617496.2347 0 9.605044564e-14 0 0 0 4.287588003e-34 0 80060.80272 0 310.9446006 0 0 0 0.0006467985306 1013696.227 3.94665138e-14 2.913473546e-08 0 0 0 2.190421014e-13 3852.977227 0 5.016443478e-13 9.705993985e-12 7.550660431e-15 0 1.148934107e-18 3812382.039 0 0 6.2077069e-05 0 0 0 0 0 1.841875028e-21 0 2.485933908e-07 0 3.741796872e-09 3.855279185e-05 27.00418947 31.34006676 0 0 0.000157421281 0 0 0 0 0 0 0.002023929913 0 0 6.21928817e-10 1.63031453e-18 0.3119792613 0 0 0 0 0.0003125861657 4.619313351e-11 0.477452359 0 0 135485.4936 0 0 0 13047.10365 0 0 75695.63827 0 0 5.333487602e-11 0 0 8.042156729e-23 2.068165614e-13 0 1.74053141 0 0 0 4.162665763e-05 0 0 0 0 0 0 0 7.0549146e-07 0 3.406455147e-07 0 0.00144318515 0 0.01856486367 0 6.263811631e-11 0 2.256478187e-23 3.201734228e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.762099176e-11 1.737426259e-19 0 0 0 1.71687423e-28 2.123228779e-10 2.291167876e-15 5.22197192e-19 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.141724004 0 0 0.0009911004101 0 0 7.877274679e-15 0 0 0 0 0 150649.2404 0 0 1.218913695e-05 0 0 0 3358896.812 143.8468619 0 0 0 0 0.04822509254 0 0 9.773436152e-22 6.041920557e-11 0.0007524694309 71572.72664 0 1.242091377e-08 0 0 0 7.223536986e-11 0 0 0 0 0 0 0 0.5775752216 0 0 0 1.982011844e-17 2.153270584 0 1.042970686 1.478703418e-13 0 5.195989949e-09 0 0 0 0.00107007715 3.594856587e-09 0 1.114433857e-13 0 0.09502468334 0 7.338738852e-13 0 17101.05527 0 1.91559946e-14 2.515346274e-09 127721.8293 0 1.904047345e-27 0 0.0001904425899 0 1.755452985e-22 0 0 0 2.535590761e-06 0 0 2.951088572e-08 2.608757383e-06 0 0 5.265965642e-14 0.004034380473 0 3.939758172e-08 0.03205824181 0 0 0.0003393919257 0 0 0 0 0 0 5.153674388e-26 29.47980926 0 142537.5928 0 0 0 5.314368282e-07 86.16317788 0.9986506258 0 0 21292.56156 8.403763388e-06 0 7.96989463e-15 0 0.0004773388677 0 3.810691436e-12 0 1.123274925e-27 0 2.512732799e-08 0 3.18075898e-06 0 272.3811882 0 63.88491863 0 6.249100576e-08 6.790947218e-17 0 4.559271819e-06 0 97577.01554 0 4.267186281e-22 0 0 3265518.47 2.25800878 0 9.394383033e-05 0 0 0 0 0 4.237192474e-14 0 0 0 0 33194.34336 0 0 0 5903.329701 0 1015149.354 0 0 0 0 0 1.247670921e-14 0 508344.698 95.94498876 0 0 3.712368787e-06 105190.8172 0 0 0.007184924581 0 0 9.167240082e-15 1.114553553e-12 0 0 6.284085308e-05 0.004523965388 0.01862789979 361.3552678 0 0 957894.9425 0 0 0 0 0 0 0 0 0 0.1213572665 1.003564199e-20 0 0 0 0 0 0 0 0 0 0 0.006643043319 0 0 0 0 24333.79449 0 0.0002426384398 0 0 0 0 1.442159688e-12 0 94.75502627 0 0 0 0 0.422571775 0 0 1.840984654e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.006516511437 1.470184546 0 +3.313088308e-11 0 2.040257654e-05 0 0 0 0 0 555007.1312 0 0 0 9.833899159e-17 0 0 0 172.0407654 0 0 3.666637599e-34 0 0 0 4.150371975e-11 2.263973779e-22 0 3.294825778e-27 2.463010281e-05 2.956128919e-12 2804.92273 0 0 0 0 0 4.834304626e-16 0 0 1037460.046 0 0 1.704950024e-12 0 0 0.09266252229 0 0 0 0 93.24354237 0 0 1.018734844e-15 2.361114666e-06 0 0 2.395135813e-10 0 7.9079259e-11 0 0 0 0 8.231285743e-10 0.234352523 7.066992244e-13 0 0 4.77679478e-05 0 4.139155032e-28 0 0.0003617409105 9.076559571e-05 9.629663095e-10 291727.9667 1.281426533e-09 0 4.506194765e-24 0 0 0 0 2.776528626e-06 0 0.6173751311 3981.128432 0 0 0 0 0 1.768083403e-10 0 0 2008387.748 9.480273716e-11 1.07768952e-16 0 0 7.26254697e-05 0 3.369146715e-13 0 340429.1035 1.993298233e-19 0 2.872462179e-07 0 4.044330256e-10 1490380.761 3.342956372e-10 0 0 1.047542021e-16 3.769637154e-07 0 0 0 0 0 8.285624964e-25 4.084726516e-27 102.1979502 766763.6105 0 32429.74467 0 0.007571049082 1.37073604e-12 0 8.940453174e-08 1403472.866 0 1.0404135e-26 0 0 0 0 1.753826082e-18 1.956618818e-07 0 0 127.1383837 0.1367523066 0 0 77.43011918 27262.78805 4.473414975e-15 0 7.630393517e-19 1.991193017e-14 1.003922435e-18 321346.4297 0 31684.37056 0 3.002436688e-08 0 0 0 3.085070213e-09 1.126064631 0 0 74495.1519 0.0005870651921 58.67610433 0 0 0 218397.1467 0 0 0 0 0 0 1.043794206e-11 6.322316128e-06 0 1954819.434 2.56731149e-06 0 0 8.385932179e-15 0 248625.8343 0 0 0 3350.521265 0 4.356898549e-15 0 0 0.1826751901 0 0.0003370849517 0 45443.48663 0 0 0 1714.949831 1.103948058e-09 9.766106382e-34 8.69285717e-15 2.606630194e-13 0 0 4.786268767e-09 123131.1368 531.1120099 1.844146135e-20 0 1.735849628e-15 0 81731.14318 0 0 0 0 0 1.71454845e-09 0.0001486427597 0 0 8.547630259 0 230146.1675 0 0 0 0 0 47.3621947 609.5672615 0 0 1.277986457e-10 2.174059092e-10 0 467.1832067 0 2.276385633e-09 5.005456469e-07 0 0 0 0 0 9.145806766e-10 0 2.645663992e-11 7.248503725e-08 1.267888074e-10 0 1.619411898e-05 2.309073633e-12 0 0 0 0 7.050129288e-12 0 0 0 2.830818078e-14 4.086736388e-06 0 0 0 0 0 0 2.12371591e-07 1.737050936e-12 0 0 0 0 0 1.621130473 3.296393728e-19 0 0 0 0 8.32552027e-14 25007.75128 0 0 0 0 0 0 3.65217081e-18 0 +0 0 0 0 0 0 931883.1417 0.01855412658 0 0 0 0 0 0 0 0 0 0 0 0 21.04326695 0.0002858078419 0 0 0 2.069645706e-12 0 0 0 0 0 0.05315042718 0 0 0 0 6.013770436e-11 0 0 7.402936189 0 0 0 0 0 0 0 0.01603194107 0 1553.000127 0.002681817486 2.802979839e-14 0 0 0 0 0 0 0 671347.7116 0 0 0 0 0 2.311534115e-09 0 0.0002180048836 153430.7339 1.108311369e-16 0 0.3021677692 4.13118352e-09 1.185252291e-19 0 6.91715727e-05 5.211926605e-06 6.216215149e-14 0 1.046946953e-07 0.01207098798 1.266856072e-06 1.880622606e-11 0 0 0 43800641.15 2840600.047 8.343616061e-09 1.265071145e-23 1.922378015e-07 0 0 0 2.017994978e-06 0 0.01714352671 0 0 2.521023887e-17 3.531758026e-14 0 0 0 0 0 9.985861599e-12 0 0 0 3.182411432e-06 18641.93367 0 124244.187 0 0 0 0 0 7.516970976 0 0 0 0.01507039872 0.000227941154 0 1.737330806e-14 0 0 9.372352972e-13 2.5182e-08 0 2.44037194e-15 0 1.969821849e-06 0 2.2173867e-22 0 0 0 9.663930564e-05 0 3.283149955 0 1.007024056 0 0 2.799684665e-08 0 0 8957.26148 6.17858423e-20 0.2610571459 0 7.023050014e-12 200.2650868 0 58296.01704 1.04838595e-19 3.435510192e-12 8.771805988e-12 0 0 0 1.563254573e-21 1795.396971 0 0 50.89582801 3.437865741e-15 9.575812695 0.1774138894 0 0.0001584584251 5.188407838e-10 8.473479706e-12 0 142.6365338 0.03735625558 4.498766104e-23 14442.95692 2.868724427e-05 0 0 0 5.05344239 7.982840936e-17 2.198540726e-13 3.714970849e-05 2.626863475e-07 0 1.292572419e-13 0 2.177570952e-20 13.50228796 0 6.795263111e-11 0 0.01443134107 0 0.01643159626 2.173296457e-09 0.0001000821271 0 0.0001038336884 2.963518893e-05 0.0003410132763 2.69963103e-26 0 2.205011366e-35 886198.1525 0 0 0 0 1.278149082e-17 0 1.600212556e-15 0 0 0 0 0 0 0.07271425453 0 0 0.09807014647 0 0 0 3.26471473 1.897481924e-25 0 0 0 0 0 7.641409394e-09 0 0 0 0 8.750976328e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5174678689 0.0002206995036 1.302936318e-11 0 0 0 0 0 0 0 0 0 0 5.392901955e-10 0 3.910012034e-15 0 2220.447449 0 0 0 6.857842899e-18 0 0 4.500846051e-14 0 0.2543906133 0 0 0 0 0 0 558698.9154 0 0 0 0.003838376663 0 0 0.156031889 +0 0.01439318539 0 1.148049463e-07 2.848350138e-10 6085.186742 0 0 0 0 0 0 28591.50539 6.747638962e-08 0 47047.56577 0 0 0 0 4.910312318e-25 0 0 0 0 0 0 0 0 0 0 0 0 4.561453183e-07 0 0 0 0 9.415069132e-07 0 0 0 0.0001136965969 0 0 2.084042444e-08 0 0 2.348849774e-22 7.52499668e-07 0 1.638410499e-16 1.55273801e-21 0 0 7.438813496e-07 0 0 0 1353439.198 27.65675605 0 1.435514029e-23 0 0 0.0006628688185 0 0 0 14739.55735 0 0 0 6.448755665e-25 0 4.563552338e-12 3.290568822e-12 0 0 0 0 3216349.205 0 0 0 0 0.03623660411 1.357753822e-15 0 0 0 0 0 0 0 4.216354242e-06 0 2.872906065e-05 6.787742991e-07 0 0 0 0 3.095931715e-10 1.225193168e-17 3.260944359e-11 970.3648803 26.88379145 14607.75375 1.867925333e-06 0 5.809694436e-06 0 2.592799899e-09 0 0 3.524293703e-05 1242.772798 1061208.341 1.192315439e-23 8.204015857e-14 10535.81921 0 7.098306687e-07 0 0 0 965898.2161 9.08062508e-06 7.390198604e-05 2.488020547 0 0 831497.1454 3.830459105e-11 0 3.482915955e-24 0 0 0 2.046052304e-22 24452.62248 3.138756336e-17 0 0 3.274523299e-17 0 1.489775576e-05 0 835514.2073 280334.6971 0 864.6409007 0 0.006250324167 0 0 0 0 0.0001308829228 1.980879873e-06 0 0 0.001885541541 0 0.7030658181 8.028935766e-08 0 0 6.962481142 0 7.428965864e-05 2.048944145e-05 0 1.938868215 0 0.0003580645014 0 0.001796147887 0 3500.046132 0 5.988100601e-10 0 0 47.49840549 0 1.183623347e-24 0 0 0 0 0 0 371340.9968 0 6046.382744 0 0.0208274594 0 0 0 0.01371419029 0 174.0017433 0 1.974566746 0 0 2501.682222 0 0 0 4.232009512e-08 4.741836165e-24 485.3329667 0 0 0 0.018759411 2.22406544e-07 0 0 0.00157567316 1.337119506e-09 269.2241242 0 2.594025257e-12 0 0 4.529276845 0 0 0 0 0 2.154914208e-08 1.077769031e-24 0 2068908.925 0 0 0 0 0 0 124669.6296 1.009627965 3.767420768e-10 0 0 0 0 4.6556618e-14 0 0 0.253153368 0 0 0 0.00358583851 0 0 1.384458766e-12 0 0 0 5.352886174e-05 230.0722604 100.4044136 0 0 0 0 0 0 0 9.432452925e-06 0 0 0.01284722756 0 0 3.355166272e-19 0 0 2.479869537e-13 3.272857413e-06 0 0 1.393419277e-19 7.716904445e-08 0 0 0 0 0.00233532345 0 0.0001631377975 0 +0.0002433808004 8.985171421e-14 0 0 1.360539956e-10 0 0 3.194291985e-12 0 0 1437810.986 2.951448804e-25 0 0 1.36951734e-18 0 5.579890165e-15 0 0 138.5828878 0 0.004143796429 1.500343024e-28 0.009954062549 0 0 0 0 0 1.079082719e-29 0 3.205273602e-12 0 1.393892192e-05 0 5.508339826e-25 1.669895936e-10 0 0 0 7.978139741e-08 4907.271753 0.003929183369 16618.60374 201.0286475 2.407358836e-06 2.04696889e-17 0 0 17.37323183 0 0 42.38049673 3.602361087e-19 0 2.649946323e-06 0 0 127457.5034 9.007788257e-24 0 0.5679444258 0.03945459803 0 0 0 0 0 0 0.0005513531652 0 0 0 0 0 0 12.75241048 0 0 0 210909.8334 0 2.937142039e-09 4.460680858e-05 0 0.7654195053 1.688775618e-08 0 2.205575671e-17 7.656491437e-16 6.147294012e-09 0.0005017266556 0.002495814128 0.0006704871317 3.153208936e-30 0 0.1034262105 4.175772586e-08 0 4.288096029e-06 5.67206613e-10 0.01115537537 3.167469029e-12 1.282102848 0 670.6563285 2.411017267e-17 0 0.00328673843 3.223863972e-07 0 0 967452.6374 0 0 727875.1777 1.154705039 1.552692539e-12 0 1.72018086e-13 0.09820110792 0 0 0 0 9.706649652e-08 0 0 0.01701275703 2.314444762e-40 4.114394163e-18 0 0 5.349793785e-15 0 10.12724009 742906.1914 0 0 5.841884391e-07 0 0 0 4.683796826e-05 3.598992506e-09 148937.097 0 81.76338944 2.928491635e-19 1.752282849e-07 0 0 0 3.851575829e-09 1.552915195e-29 0 33415.97749 0 0 0 28.15868234 135391.1077 2.585329868e-15 0.6612897939 0 1.089987271e-05 0 3.172814646e-12 1.189902224e-10 0 0 4.970863301e-11 0.332245506 0 53191.44502 2028426.407 1.449383565e-17 0 0 0.0002263161502 0 0 18182.49249 0 7.849729764e-06 38.04134129 0 0.0004531816018 0 0 1.642646806e-11 0.0002086388145 0 20963.59626 0 56.34553991 0 0 6.276089584e-15 0 0 0.000438713859 1.888779214e-06 0.07379816854 6.286882412 801519.4505 0 0 0 0 0 0 0 0 0.01310000143 0.0009657059216 0 0 1.939552323e-23 348.721471 0 9.652019064e-12 4369.871384 0.05575872491 0.7206769449 80257.30321 0 0 0 0 164219.7578 0 37876.665 0 0 0 0.4130175093 967.9798564 1.764429002e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.241333035e-05 0 0 0 0.1380158969 8.466969919e-06 3.554072108e-27 0 0 0 0 0 0 0.001810819792 1.095164123e-06 0 0 0 0 0 0 0 0 0 33653.56662 0 0 0 59.95697449 5.917612854e-05 0 7.091402988e-12 5.994999807e-06 0 0 0 0 0 0 1.056467893 0 0 +0 0 4.026081398e-20 0.0006864345035 0 0 0 0 0 0 0 9.116286695e-06 0 0 9.785156824e-08 5.867183832e-08 0 7.040719799e-06 0 0.04802654472 79967.05882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007328891469 0 0 0 0 0 0 0 2.43039288e-11 0 0 13.18911357 0 0 0 0.001448057293 1.345412295e-13 0 0 2.312659367 0.8088027447 0 0 0 0 0 0 0 0 0 0 0 0.0001745013595 0 0 0 0 0 81174.74003 0 0 0 7.581073765e-06 7.193230123e-11 0 0 184127.0128 0 5.374075727 0 0 214293.221 0 1.72888681e-26 0 1.856057946e-15 0 0 0 0 0.06493132324 4.120836695e-13 0 0 0.01423476048 6.474661765e-08 0.366954589 0.0015432813 0 0 0 0 3.495034351e-11 5.245975812e-07 0 0 0 0 2906.397874 0.000760559048 53.63536813 3.189668771e-22 9.665026902e-14 6.571707935e-14 0 0 0 0 0 0 7.612737051e-15 0 0 0 0.007029299161 0 0 0 2.197807055e-08 81922.60841 0 0 231252.2477 0 5.10830548e-07 0 0 2.737896303e-08 30.56202901 6.022329695e-16 0 1.822956746e-20 2.04406549e-05 0.08137208162 7.494026427e-11 2.733218623e-08 202344.296 0 95683.40444 0 0 1.577661136e-15 8.699827237e-10 0 0.0002976881902 0 0.1228414676 0 0 0 0 1.642780315e-17 3.619888947e-06 0 7.185000227e-15 3.09731815e-13 0 0.3790760113 3.117739344e-14 111.314274 0.0002540752922 36939.14193 0 4.390684381e-12 0.0513438764 7.351415232e-10 0 0 0 8.9808732e-19 0 0.0003030995546 0 1880928.803 0 1.805382094e-08 0 0 0 0 0 0 0 0 0 0 0 2.801955726 0 0.4249120129 0 9.310794913e-12 1.1351156e-12 0 79402.28981 0.07145761307 2.924288038 9863.324089 0 0 0 1.13059725e-14 1.963102516e-16 0 0 9.361741045e-05 291.9739978 0 0 0 3.985487896e-10 0 0 0 0 0 0 0 0 0.00121952561 0 2.88783566e-10 7.144495045e-08 0 0 9.265734067e-13 0 15.67517629 0 4.801047009e-09 9.026078035e-22 0 721.378085 0 0 0 3.507308513e-08 0 0 3.528058399e-05 0 0 0 4807.295837 0 0 0 0 0 0 0 0 0 0 1.266707128e-10 0 4.641500775e-12 0 0 2.874628436 1.910770677e-15 0 0 0 1.330553713e-09 0 0 0 0 0 0 0 0 0 0 1.508638771e-07 5.420772265e-32 367898.4424 1.295933019e-10 1.046695634e-08 0 0 1.334932833e-06 +0 0 23879.02604 0 0 0 0 0 0 0 0 0 1303265.039 132.0386023 0 0 0 2.378745758e-23 0 0 0 0 0 0 1.161598591e-10 0 0 2.834078834e-05 1.794536055e-16 0 0 0 0 0 0 0 8.566726033e-27 0 0 0 330.2216232 0 1704334.279 0 0 3.840260283e-05 0 0.05692536463 0 0 7.995463433e-08 0 86.78589269 0 0.0004012490481 0 0 3.385852214e-06 1379.553751 0 0 0.002549588975 0 2263836.645 32.10575447 0 0 0 0 0 71626.43864 0 0 0 2.441090172e-20 1.362768064e-15 0 0 0 1.803889014e-09 0 0 2.457740201e-06 1.821728546e-09 0 3.895382005e-08 5.812086868e-11 0 0 32548.71043 2.116893111e-11 0 0 1128.884236 0 8.29432944e-12 6.265003363e-13 0 0 0 221.6165266 9.830176346e-22 0.07382090594 0 0 0 0 0 1972.028771 1.852700495e-12 0 0.0008510774793 3.366360268e-09 0 1151733.449 0.06492257049 5.929232951e-10 4.271190285e-08 7.973160266e-13 1.198935565e-14 0 88.47858057 161.8231634 0 0 0 0.002177660318 1.166509921e-15 0 0 4.574202182e-17 33347.47894 9.568813302e-18 0 0 9.757917434e-09 2.654834091e-05 2.549875356e-07 0 21221.6069 8.961256701e-23 3.21523633e-05 0.04818733039 8.728027703e-22 435.839355 7.91059425e-11 1.121559525e-07 0.0007967491059 0 0 0.0004118100683 0 1.94962281e-10 0 0.002464055669 0.0007280206384 0 3.837458986e-09 0 3.378607819e-14 0 8.392909693e-07 6.670312561e-25 0.009738730895 0 0 0 0 0 0 0 0 220.2279733 0 0 0 1.253663197e-10 0 0 0 0 13.4032449 0 36.99639528 0 1.276398095e-10 0.09435147706 0 4.670042561e-16 19.68618522 0 0 0 0 0 668399.644 0 1.986909437e-06 0 0 5.520902395e-05 5.276210558 1.963769999e-08 7.353854375e-13 1872236.555 0 2.394542636e-11 0 8.118321084e-11 0 2.786620025e-29 0.5092350586 0 0.07091368683 0 0 0 0 0 0 469.0430203 0 1.777016381e-07 0.01268525494 0 0 0 0 3867655.471 4.70357732e-08 0 0 0 1.218793672e-06 103.6512596 0 1.906022155e-07 0 41451.21465 48.89786337 7.285621242e-16 0 0.00918812616 0 0 3.578451223e-20 0 1.522543227e-06 1.31768129e-17 0 0 0 207296.6608 81842.08285 0 0 0 0 0 81.42700012 0 0 0.0002865444325 0 0 0 0 0 0 0 2.483537453e-27 0 0 0 0 0 5.439898563e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 70284.14216 0 8.853233702e-05 0 0 0 5.398515758e-10 0 0 3.979454349e-05 +0 0 7.816810558e-07 0.0001107418261 0 19297.42589 0 0.0004003311783 0 195854.3705 0 0 0 0 0.001195754626 1.104122728e-11 0 0 0 0 0 0 0 0 0 8.92574879e-06 0 0 0 0 0 0 0 0 0 0 0 0.08626895378 0 0 6790.939728 4.333870949e-08 0 0 0 1.010398279e-08 3.032495958e-08 2.419195066e-05 2.369420247e-10 1.528487284e-11 459.4086219 0 0 0 0 7.257908662e-05 0 0 0 0 0 0 0.0006819802733 4.23802736e-21 0 0.0004976393414 0 0 0.003436965198 8861.280932 87.26247932 1.120702969e-05 0 0 0 0 0 0 0 0.04621970455 0 2.424788959e-06 0.007989668193 7.649694703e-10 337997.6339 5.854376029e-26 6.565977894e-06 0 796.2118158 2.374538094e-19 0 189.3458026 0 0 2.303318811e-07 0 0 0 7.338028644e-17 3.312626868e-09 40256.71165 1.028725806e-10 3.969920623e-25 8.394737541e-05 0.003798054773 0.1984944603 3.851638682e-12 0 0 1.594480788e-08 0.1711412164 0.1254421751 0.07810224454 0 0 0 5.40924816e-11 0 0.02097907302 2.759372478e-27 0 2.195332473e-05 0 0 1.908273598e-14 756629.2395 2.07851738e-15 1.760620814e-25 2.266207107e-08 0 0 0.0005250484562 0.03855989009 1.142611547e-11 0 0 0 98.16405368 233.181697 1.61815244e-16 2.110591286e-06 0 7.611136294e-10 0 0 20.82718774 0 0 0 7.63412637e-21 0.11970097 99.22300016 3.248032763e-10 0 1.286262399e-10 0 4820.962669 0 0 80.19056833 8.985002557e-15 0 0 1.298654484e-15 0.01873544753 0 7.900354545e-06 5.486593423e-06 0 0 0 0 0.0004836707202 1381.485562 0 0 0.06635734029 0 0 0 3.025977927e-05 0 1.682790213e-06 0 0 1.066598883e-11 179.3822615 0 0 2.22499393e-08 1.59927929e-12 2.796419362e-16 0 0 9246.98391 0.004660890931 0 0 0 0 0 1.817311815e-15 0 0 995025.8735 2.643181306e-12 1.767009134e-10 0 0 3541431.983 0 0 5.780405383e-17 0 267034.1638 0 3.206833378e-06 0 0.000945573965 1.168865952e-13 0 1.297407808e-06 0 0.0007763047349 3.392986862e-06 0 0 1939.581891 214.1943824 4.333259211 0 0 20.78039753 1.94452615e-19 0 0 0 0 0 0 0 1.467358354e-06 0 0 0 0 0 3.157386029e-14 0 0 0 0 0 0 0.0002983848027 0.04620994819 0 1.395862194e-13 0 0 0.0003378549242 0.009607365998 0 0 0 0 0 0.0276942941 0 0 0 2.102735661e-06 0 0 0 0.0006819190126 0 0 1275915.936 0 1.325140102e-08 0 0 0 0 0 0.0001455576699 0 0.002909251134 0 2.674124351e-10 0 0 0 0 0 1.969836764e-10 0 0 0 +0 0 0 8.458058618e-14 0 0 0 0 0 781.1908789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.829607147e-06 0 0 0 1.276600313e-17 0 0 0 0 0 0 0 633083.7442 0 0 0 0 0 0 5.914513018e-07 0 0 2109.136197 0 0 7.324012883e-11 0 0 0 0.4890518313 1.399187206e-14 8.912020283e-16 0 0 17.25212586 0 7.237062488e-10 0 2.283925797e-09 4.61927551e-23 0 0.0006875032623 0 0 0 0 0 5.223624428e-13 3.591084135e-17 2.243143035e-07 0 2.511906283e-08 0.00260894201 426932.1242 2.398892345e-05 0 0 0 0 0 0 0 7.516472883e-05 30207.60038 0 3.50844471e-08 0 0 0.004509499498 9.595555295e-11 1.344552883e-07 268.2400238 0 5.017814222e-12 5.563415174e-09 0 0 1.256605949e-10 0 5.820486262e-07 0 0 0 0 0.000349848346 7.852600199e-20 11.7375279 0 0 1.66514312e-09 0 0 1.241040244e-06 0 2477.820644 0 1.804131175e-06 0 0 7425.104273 1.521147848e-12 741294.4182 0 3.655523963e-10 0 0 0 0 2.961141269e-05 0 0 0 590757.5737 0 11747.87888 162.2863541 0 1922.885266 6.616394186e-27 0 4.007055763e-15 0 0 1.747209078e-11 0 0 7.134549823e-11 0 0 1.04059623e-15 36779.76342 0 0 0 0 0 0 1.589719792e-05 1.694432098e-21 127.1969082 6.32662227e-19 4.59560477e-11 1106.773697 1.225905363e-20 1514803.456 2.795049125e-23 0 0 12924.15147 4.257204699 0 0 0.07431489258 0 0.03819181396 6.750520259e-15 4.510468348e-22 0 0 8.138475196e-13 4832.756518 0 0.1156337886 491175.4606 2.097505048e-07 4.788220599 0 0 0 0.3546050596 0 2.271233951e-07 7.232837861e-16 108694.0839 24837.41449 0 0.1009832632 689.0954381 13.43815 0 2.41292745e-06 3285.89774 0 172025.2833 7.432148241e-09 0 0 0 3.991076294e-08 0 1.104290664e-09 70876.36262 0 0 0.9304163996 0 0 0 2872.362964 460.3534016 0 0 0 22226.84034 0 0 0 0 0 0 0 0 8.086542466e-08 0 0 0 0 0 0 639.1441724 0 0 4.043335016e-11 0.001591521929 0.04624217338 0.003316238613 0 0 0 0 0.1212374332 0 0 0 7.769407505e-10 0 0 292048.0245 0 1.557025638e-16 0 278.8572312 0 0.4396477532 0 0 0 0 0 0 0 0 0 0.0008251293505 117.767977 0 3.422681624e-13 0 0 9.8364692e-11 5.199948692e-05 0 0 0 0 6.219409707e-22 0 0 0 0 0 1.56263918e-13 3.040694227e-09 0 +5.22909796 0 0 0 0.0824342992 964.2331617 0 0 0 768062.5864 0 0 2187.998076 0 9.356378441 1.575036008e-07 0 0 481755.8018 0 388.2621111 0 0 0 0 0.002299302805 4.292850516e-09 0 0 0 0.1956609565 0 0.1792091117 0 0.003861714802 0 2.135275623e-17 1.305714713e-12 0 0 0 1.275106235e-09 125.4047325 0 0 0 9.368165473e-07 0 3.649991382e-19 0 0 0 0 6.528483783e-14 0 0 7.404895791e-06 7.94137235e-12 0 0 1.540527479e-25 0 0 0 0 0 3.222760823e-07 0 0 0 0 0 104069.0462 315.053504 0 0 0 0.1209542304 2.449083464 0 0 9.504293241 0 0 0 0 0 0 0 2.314395138e-06 2.491304219e-13 0 0 3.831256494e-07 0 0.0009512708565 3.865540903e-12 4.527501814e-06 0.0100280374 1.293414714e-27 0 1.002749037e-15 4136.131323 1.900393653e-13 0 0.09415404414 0 0.09485962662 3.492718952e-15 0 0 0 5.936438929e-19 4.641152345e-07 0 1.83217261e-07 7.934069468e-27 0 0 7.141676248e-20 0 0 4.788352032e-23 1.929487081e-08 0 3718.60709 0.3998725634 0 0 0 0.3343054033 0 6.4847823e-10 0.03712571664 0 1.334377815e-20 1.022816967e-08 0 3.20243092e-10 0 2.431719322e-13 3.293749696e-32 308941.001 0 0.0176491527 7.587887216e-15 0 0 0 0 18.59890763 1.440605567e-11 0 4.996288051e-23 0.0002450424442 4.050115048e-16 0 3.292207203e-14 0.007725851753 2.894937821e-08 0 0 3.660344881e-06 2.748828103e-14 0 0 0 0 4.033604065e-15 5.588057797e-12 2.916394891e-11 0.001391098428 1.831339014e-17 0 401181.4783 0 0 0 0 0 0.001278867115 4.057243808 0 0 0 0 0.008157375204 0 0 1.665848776e-19 2.248849135e-06 0 0.006158756961 14593.34082 1.038017603e-17 0 0 0 0.2963687743 0.0001233458721 0 0 0 0 0 4989922.075 0 1.653880824e-18 4.636664214e-12 1.519974425e-25 0 2878224.388 9.98902693e-15 1.282149389e-09 0 0 0 5.101761309e-07 0 28400.00206 6.929157559e-06 2.603085797e-13 0 4.816142038e-16 0 0 9.757462318e-07 0 0 0 0 0 0 0 0 2.492983645e-12 0.000209321817 0 0 0 0 0 0 0 0.0001699878904 6.891994915e-09 0 0 4180.496948 0 0 0 0 2.030665479e-09 0 0 0.0603618449 0 1.212606344e-07 0 0 1.205566652e-05 0 0 0 0 2.6217505e-07 0 1.630257191e-17 0 694503.5057 0 0 2.969589315e-27 3.440791859e-12 0 0 0 0 0 2.474560702e-23 0 0 0 7.959723838e-15 0 7.618452298e-32 18445.47465 99154.23987 0 0 1.079468876e-24 0 0 0 4.989051358e-10 7.202880546e-19 0 0 9.341835169e-19 +0 0 1974.682641 0 0 0 0 0 133775.3221 0 0 0 0 12927.63492 0 3.185150125e-13 0 0 0 0 0 0 0 0 0 0 0 0 2.366181264e-17 0 0 1.47847517e-06 4.396511719e-15 236.6287853 0 0 0 4.122094937e-11 0 0 0.001353097608 0 0 0 0 0 0 7.26073393 0 0 0 0 0 1.573483573e-11 0 0 5.924745317e-13 3.780219194e-05 0 0 0 1.126279205e-09 0 0 0 0 0 0 7.312737103e-05 1521.977016 0 0 0 0 0 0 9.331426311 4.254506826e-13 0 3.684515345e-07 7.264964817e-13 0 21.27017053 0 0 0 0.001762878474 251924.063 0 0 0.002156146251 0.4583328974 1.696629814e-10 0 0 0 0 0 0 16.45850005 0.1015974229 3.383265011e-06 4.537997054e-17 0 5.80017031e-18 0 0 0 23662.17484 0 0 0 0.282245404 0 0 0 0 2393928.575 0 1.319478821e-16 0.0005412735843 8.88404386e-07 0 0 48.9813157 0 5.819021596e-07 0 0 0.0009079670967 4.660311891e-22 7.811189849e-06 0 2.410015333e-08 4.045232654e-11 1.013924439e-05 0 0 0.01016389341 1.050598093e-07 0 0 307652.1748 0 6.321285697e-20 1.17897015e-13 4.417440569e-06 0 0 0 3.924735356e-24 0 0 0 0.002180399957 0 1.225280658e-12 3.076479939e-09 2.865119831e-15 0 0 0.3611304907 0 1523.128957 8.131339575 0 1.820411966 0 0 2.374610891e-09 0 0 0 0 3.408868632e-08 1.625701625e-09 4.377489813e-12 0.001093606452 1.230613757e-08 0 8825.645733 1.290963142 9.947469787e-20 4.718948979e-06 0 0 0 1.465552221e-05 0 340893.5298 0 0 0 0 0 0 8.541347931e-15 37.45474778 3.532100481e-09 5.86864161e-08 0 0 0 639.3382857 0 3.898161001e-05 0 653944.0973 0 0 5.341441609 577918.4872 0 27.77500917 1.168977143e-21 0 0 0 0 0 0 0 2.391083758e-19 1.637814701e-05 7.146842346e-06 0 9.243275532e-13 15364.80073 5.345585478e-08 0.0009965153175 0 0 0 0 0 6295.182205 0 0 0 0 0 0 0 0 0 0 0 1.066182942e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 9.162260007e-08 0 2.524762869e-11 1579.050039 0 0 0 0 0 0 0 0 0 0.0006965629311 0 0 0 0 2.350587397e-08 0 0 125.4187627 0 0 431.0230866 0 7.614016607e-14 0 0 0 0 0 0 3823.337417 0 0 0 1.771391355e-11 0 +8.057914068e-17 0 0 0 0 0 0.09249358112 4.14634785e-22 0 1.109577381e-12 0 1.640782897 0 0 23045.63003 0 0 0 1.82277751e-07 0 7.87313386e-05 0 0 0 0 0 0 0 7606.192348 0 190624.0744 0 0 0 0 0 0 0 0 7.390298776e-06 0 0 0 0 45640.98291 9.177948462e-07 838.6739999 84688.79689 0.03216220068 4.069431271e-07 1.341259558e-05 0 0 0 0 0 0 0 0.0002984873189 0 0 7.403458679e-24 0.000827144691 5.595841868e-11 3.956443612 0 0 0 5.365904573e-11 0 7.69410309e-08 0 0.0003441556434 0.6440541546 9.183769428e-09 58.16416103 1.161846438e-11 1.12543547e-12 4.208288877e-09 0 0 0.008021369996 2647602.195 6.007935166 3.967535097e-15 2.985980214e-23 0.00184330535 450.0519244 0.0001785688427 1.97370266e-06 0 0 3.576149385e-11 20.8125216 0.001013574756 0 0 8.654377254 0 1.075828244e-20 1.261766604 0 0 0 0 0 0 0 0 0 1178501.04 3.96145107e-10 0 0.0001101040499 0 99396.45419 0 0 0 0 0 0 0 0 2.804105387e-10 24.82331646 0 0 0 0 0 8.101521266e-16 2.228709784e-08 0.001483551178 0 0 9.439320646e-12 3.506922648e-05 0 0.0002644049707 0 0 0 7.000998616e-21 3.318291712e-06 0 1.123171673e-05 3.036642991e-14 0 4.799628371e-10 0 2.057052816e-10 257480.0396 101037.751 7.238246152e-40 3.910471214e-05 0 4.027799491e-09 400062.0893 2.26405077e-12 0 0 0.0004526195298 15868.57786 0 0 6.735611917e-20 0 0 3.445298189 0 0 2.799110282e-18 3.769300552e-13 46520.14358 0.6454727945 0 0 0 9.59934426e-14 2.103488937e-07 0 0 0 3.036414753e-05 0 0 0.2667356053 0 0 0.001357020058 1.304887819e-10 5.919220237e-05 58598.30826 0 0 0 165.032972 270729.0455 0 3105.998175 0 1.98738048e-20 0 0 2.520130254 0 0 10.38182254 0 0 0 0 1.603764302e-10 1.925724974e-17 7.945000504e-14 0 0 0 0 0 0 0 0 0 0 1.488294637e-12 0 0 0 0 0.0001078336725 0 3824.638444 0 0 1.186793062e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1936018775 0 0 0 0 0 0 0 0 2.323793134e-12 0 0 0 0 0 0 0 0 0 38354.97296 0.3806836044 0 0 0 5.384470636e-18 0 0 1.243057891e-09 6.694891745e-06 0 0 0 314207.4708 0 0 0 33368.97119 0 0 0 5.706078278e-09 3.005888933e-13 1.398874714e-18 0 39772.06559 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.041165531e-19 0 0 3.362313421e-12 0 0.02469372763 0 0 0 0 0 0 0 70082.6731 96.24092429 2.275011228e-10 0 0 0 0 57560.95939 0 2.722844668e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.110706553e-13 0 6.039164717e-07 0 14175.40617 0 196.4512237 1574.449006 48487.85552 0 18637.31956 0 0 0 0 1.466969298e-20 0 0 4.442348387e-18 0 0 578951.6107 6.889595138e-11 3.041681516e-08 5.47055289e-17 0 6.406354129e-11 0.01645618075 1.935557655e-12 2.962798288e-05 0 0.4211352012 449560.2765 0 0 0 0 5.704644224e-14 0 0 0 0.0001377301828 4.858486963 3251.304815 0 6.278588534e-09 0 0 4.766645954e-10 0 0 0 0 0 0.0829561484 343183.6413 0 0 0 3.299313181e-18 0 0 0 1.460062694e-06 0 5.989764009e-25 5.109204947e-05 1.560670464e-14 0 1128.131126 0 9.879381154e-23 0 9.373812243e-17 0 1.856685029e-12 654962.6474 0 0 0 0 0 64.84249448 0 7806.294608 9760.666496 316436.9311 0.04802406428 0 0 0 1.554590276e-07 6.817870441e-16 12577.13235 4.240904365e-14 0 7.075657728e-09 2.426872309e-13 2.293483753e-05 0 6.805660345e-10 0 0 0.00450099898 0 0 0 4.339277931e-07 1.401444026e-21 0 0 0 2.396003897e-06 0 1.280973554e-12 0.008773280447 0.0005740997001 2.882793717 0 0 0.009187392524 0 7.953685873e-16 0 0 0 0 0 1.957619105e-05 0 0 91.19547152 0 0 0 0 0 2.075422357 515070.2787 1.082479222e-11 0 0.09392127052 0 0 1.500534362e-06 0 0 3.751693718e-10 3.095090546e-08 0 0 0 3.344957808e-06 4.319900196e-06 0 0 591717.3953 0.3579076503 0.7037775893 0 0 0.06385700914 0 0 0 3.073165161e-09 5.13814277e-09 0 0.0001194366633 0 0 4899.355511 0 1.193572773e-12 0 0.2754256094 0 0 0 7.863587363 0 0 0 0 4.837563146e-16 1.863725909e-10 0 0 0.00042671712 0 1.304801994e-13 0 0 0 0 0 0 4.078443082e-13 0 0 0 0 0 0 4.907352477e-11 0 0 6.15900502e-07 0 0 1846.663834 0 0.00040564522 0 0 4422.400155 0 0 0 0 0 0 3.06064271e-06 1.03170415e-07 0 6.636838585e-09 0 3.223721872e-07 0 0 1.603591534e-24 1.011266215e-07 0 9296.786319 8.614797532e-11 1.218958781e-14 9.886488823e-07 0 0 0 0 0 +0 567.3877714 0 0 0 2.686842198e-07 0 0 0 1.343420261e-14 0 2.455661626e-19 0 0 1.647552148e-13 1.951733523 0 7.190002883e-08 0 0 0 2.898187591e-08 0 0 0 37787.98013 0 0 0 0 0 1.116940723e-20 0 0 0 0 0 0 0 0 1.146607283e-08 5.714485853e-13 0 0 0.4624978854 1.235050285e-08 0 0 2.27673581e-16 4549864.951 1.600695032e-19 3.001082894e-05 2.980443103e-10 0 2.670482704e-09 0 0 0.0001974142632 0 0 0 0 2.194938319 0 0 0 0.001708569658 2.4974067e-07 0 0 0 0 0 0 0 0 0 0.0005348463736 0 4.053565577e-24 0 0 0 3.149822249e-21 0.04424581254 7.70148352e-08 3.554050822e-24 2.910733341e-08 38058.96482 0 4.407172941e-08 0 9.732255693e-17 0 0 1.107273758e-08 0 8.340430894e-06 0 0 0 0 0 0 2.139227997 2.158932427e-13 0.008261829181 0 6.611280987e-10 7.929020628e-12 0 400578.6046 0 0 0 0 1.795503435e-13 0 0.0006242307968 3.63743781e-08 1.187929753e-25 4.199300461e-16 0 154737.118 6.940413918e-13 0 0 0 26.92985297 48.81865366 0 0 0 0 0 0 0.08174848174 377.1256461 0 0 0 0 1790215.82 0 0.0004545425299 0 5.444177607e-11 0 3.804246848e-19 4.528162405e-21 0 0 0 0.6795620252 0 0 0.08593776502 0 498.6019344 5.177801723e-16 0 4.723665351e-17 1.030397395e-09 0 0.08636593816 0 0 0 0 2.209465906e-11 0 954.9065751 0 0 77459.14207 0 131.3509823 3.294303817e-12 6.235938943e-06 0 21.0506909 0 12459.41027 0 0 0 0 0 3.217141717e-16 3.884329993 0 21811.85227 3.828005356e-07 3.423994791e-20 1.799854305e-10 0 0 0.0521023674 0 0 0 0 1875996.433 0 0 1842.270421 8.112337802e-24 0 6.171911547 0 2.261977684e-07 0 0 0 0 0 0 1271.763329 0 2.411130024e-24 1066.691776 1.180745392e-05 0 0 1.518238674e-27 0 252.9950193 2.726663427e-21 0 5.510574924e-15 0 0.03275087159 0 0.0003523153118 0 0 0 0 0.006122853163 0 0 0 0 0 0 3.821161897 3.407667588e-09 0 0 0 3.304468653e-07 0 0 0 0 0 0 143303.501 0.009136479783 20587.27359 0 0 9.412454704e-10 1.991424055e-06 0 0 0.0008709747492 0 0 3435.835521 0 0 0 0 0 0 0 1.224228113e-09 0 0 0 0 0 0 0 0 0 0 11.36381534 0 0 0 3.882844155e-12 0 0 0 1.316776966 0 0 0 +0 1378.702575 0 0.1877022002 0 0 0 0.0001174529915 0 0 1.82377466e-12 0 0 1.594383092e-08 79655.42815 0 0 0 0 0 0 16710.56988 0 0 0 0 0 0 0 0 5963.67976 0 0 0 0 3.001441664e-24 0 5.275843302e-29 0 0 0.6819807212 0 0 6.315223492e-20 7.764539454e-15 0 0.01521786515 0 0 0 0 2.575767777e-13 1.979477992e-06 88.98488942 2.764938809e-07 0 3.321349538e-14 0 0 0 8.40285591e-17 0 0 2.112871548e-09 0 0 0 0 0 0 0 2.739705537e-07 157.4320882 0 0 0 2.470235025e-06 0 4.844511736e-06 0 19.79523322 0 11625.95614 0.0003176790989 0 6.547519168e-05 0 9.12941874e-14 0 0 0 0 1076634.222 1.379972696e-18 0 0 2.603870601e-06 0 0 3.648008892e-11 0 4.159760837e-10 0 1.446033057e-10 0 3.397320868e-10 0 40.03656388 681.1913202 0 5.359311073e-10 0.0009554118168 0 0.003344057815 0 2.802192029e-09 0 0.000187401284 7.74429976 2082.102008 0 1.215903698e-07 0.00136199588 8.95606669e-12 5.968759733e-18 0 0 18598.95758 0 0 0 0 0 0 0 4714.461284 7.459194241e-18 0 0 0 2.462485153e-23 0 0.06628254203 5452.193696 0 2691521.646 0 0 0.05354605433 0 0 2.076301298e-08 0 0 0 641.0605765 0 0.01398351208 0 0 2277316.676 0 0 0 0 0 0.8563065938 3.42164334e-10 0 0 0 0 0 0 2.518649237e-10 0 0 13418.12124 9.027991796e-22 132720.5604 7.941820171e-11 3.336258052e-17 0 0 4.670775165e-08 0 3488.946775 402.6669226 0 0 8.717216085e-09 1.717188783e-05 0 0 4.332518168e-20 3460.734909 0 0 0 0 0 0 8.832622599e-10 0 0 0.003515678245 0.006373452757 0.7617762384 0 0 0 0 1.016178694e-05 1.361269317e-07 8.189325059e-11 1.438715847 8.456473446 0 0 0 0 3.487060689e-08 117464.0141 1.025232691e-06 1.11329955e-11 0 0.009517063515 38022.7642 0 0 0 0 0 8.199040407e-05 0 0.8085311858 0 1.886115154e-08 7243.481063 5.179922036e-14 0 0 0 0 0 0 0 0 2.795299309e-13 5.341790905e-05 0.002502726801 0 5319.849909 0 0 0.02857745255 0 9.503564015 0 0 0 0 0 0 0.04987645731 0 0 0 6.566257563e-17 0 0 51823.66857 0 0 0 0 0 0 0 7.904674241e-05 0 0.5867730854 6.419877264e-24 0 0 0 0 0 1.208276007e-05 0 0 0 0 0 0.00279505143 0 1.979191835 0 0 0 +0 1.29146333e-18 2.243449444e-12 0 0.01404604397 0 0 3.029075341e-06 0 0 0 0 0 1.492482568e-25 0 0 6.65126597e-11 0 1.221716685e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 1.192661774e-05 1.876696103 1.094032869e-22 7450.085506 0 0 0 0 0 0 0 0 0 2540.965899 0 0 0 91317.3155 0 38.59931578 7.906342784e-06 1.180119474e-08 0 0 0 0 0 0 0 6.013472646e-11 0 0 0 0 0 11507.80431 0 1.313411953e-09 49.05747672 0 0 0 0 0 0 5.722905634e-10 10561.14082 0 0 1.402493613e-10 0 0 0.0001127706135 0 0 0 0 0 0.0005442703966 0 2085.027679 1.02506007e-08 1.318953472e-12 670.4874642 6.370087319e-06 3.780879284e-25 3.139981114e-11 6.625317679 0.002735894138 0 0 3.395620965e-07 0 0 0 0 1.277821846e-14 3.22735889e-19 2.548694682e-15 0 0 0 0 0.2957909928 0 0 0 0 0 505.7015075 0.0499925668 0 985.3343238 0 4.701004123e-18 0 0 61.62921292 0 4.830962402e-10 0 0 0 0 0 0.0001091230895 0 0 1.436960374e-10 1246885.984 0 13003.02632 7.624798359e-09 0 0 0.04808700349 0 0 2.81882302e-17 0 3.323569851e-08 3235339.502 0 0 0 0 7.755992877e-12 0.785933521 0 0 0 6.117914684e-10 0 0 47501.53521 0 0 0.001356253041 0.05323188038 0 279.671257 0.006471257004 7.276772078e-10 0 0 2.825002223e-12 1.940912815e-10 0 0 0 0 0.0005410796315 0 0 4903215.654 0 0 0 5.668034257e-15 0 0 0 0 0 0.0001550501082 10.6463474 30482.76477 0 3586842.83 0 0 0 0 5.398136971e-15 0 3.358329327e-05 0 0 0 0 0 2704802.872 0 0 0 1.287402849e-29 0 0 0 0 0 0 3.146049143e-15 0 0 5.28716253e-18 0 0 0 0 0 0 0 0 0 0.000903414322 0 0.00443676524 0 0 1404.301147 0 0 1.602795741e-07 0 0 0 0 0 0 5.86719306e-09 0 0 0.06654123258 0 0 0 0 0 2.978844423e-15 0 0 9.436225724e-16 0 0 0 0 0 0.2653341544 0 1.511804333e-07 0 0 0 0 0 0 0 0 0 5.003029377e-10 5.495499038e-17 656.3204853 1.561913415e-14 0 0 0 0 0 0 181.1312835 0 0 0 0 0 0 8.586615727e-20 +6.162315474e-14 0 107.1946313 0 0 0 3.119375046e-24 0 0 0 349184.3889 0 0 0 0 0 0 1.250528202e-06 0 0 0 75.76555122 4.42615274e-08 7.44833631e-08 0 0 113705.0836 0.001080188169 0 8.018537234e-07 1726.857108 4.362643214e-08 0 8.933334811e-09 0 2.091018618e-09 0 0 9.481782288e-05 2.820530831e-11 0 0.0001471054869 0 29185.44059 0 0 5.036427001e-07 0 87249.68441 0 0 0 5.914396279e-08 0 0 0 0 0 0 7.287116357e-14 0 2.030397493e-08 3.452556809e-09 2.687284034e-22 22.17384881 0.0001670273197 0 0 0 8.481950662e-16 0 0 9.038058096e-05 0 0.00240818575 0 0 4.572918457e-10 0 1.716793415e-06 6.060288668e-13 2.768160444e-10 0 0.001355704818 48154.19462 0 1.008558301e-12 0.0002159840512 2.269158625e-26 0 362061.1347 0 0 0 6.110961345e-13 0 0 0 0 0 1.590262781e-13 0 0 118462.076 0 4.485835969e-08 1.257713183e-14 2.361562192e-17 0 0.001684018396 0.002182196299 0 3606332.297 170.7822986 0 3.411832026e-11 0 0 0 6.698209353e-24 0 3.749607234e-11 1.860764724e-14 58.76531847 0 0.001541053046 4.463057062e-11 5.37215937 0 0 0 0 1.02623656e-13 6.927228281 0.04621724635 0.1867565617 0 0 7.350972554e-17 0.005888521286 0.0001463958521 1.012092193e-20 1.042254684e-06 0 0 0 1.314266492e-30 0.8695110214 0 1.476583799e-08 0.1509896503 2.439320632e-16 0 1.567422556e-13 0 0 6.363297166e-21 0 0 0 0 4.805569325e-05 0 0 0.8709024393 0 1.439736837e-15 0 38881.32899 0 0 8.421683233 0 0 2.608256238e-06 0 0 0 9.197812158 0.5164828127 0 0 0 0 0 8.463086174e-06 1.519678765e-13 0 0 1.748031494e-13 0 1.497192109e-15 6.444735767e-13 0 80.25065267 0 0 0.001771561016 0 37.8360366 0 1.877291839 8.448933399 3143018.255 0 0 0 1.576561904e-10 2.413102461e-05 0 0.09137523376 0 0 0 0 3.547994891e-14 0 0 0 0 2.145591412e-06 0 277109.8861 5.048665622e-10 9.871497133e-10 0 0 0 0 0 0 0 0 0 0 0 0.01501245227 0.799197725 8.247299549e-11 0 0 0 0.0007200902523 1.186867242e-14 0 3.572157253e-10 0 588837.3511 0 0 0 553350.4554 4.210377252e-05 0 4511.361137 0 5.902383355e-22 0 0.04325294892 0 0 0 0 0 0 3.466705322e-06 0 0.0002894119693 0 0 0 0 0 0 22.20501826 0 1.526199632 0 0 0 0 0 0 5.423161994e-19 0 1.506992895e-09 0 5.17315674e-08 0 0 0 0 460.9472888 0 0 0 2644913.912 0 5.3574669e-20 0 +0 0 0 0 0 0 0 0 0 0 1.03062095e-16 0 0 0 0 0 0 8.346585955e-17 0 0 0 0 6.61299968e-06 1.593174482e-10 0 0 0 0 0.001978076399 0 0 3.47382192e-08 0 0 0 0 0 488522.9778 0 0 0 0 0 0 0 21897.56371 0 0 0 0.0008874123141 0 0 0 0 0 0 0 5.892221434e-18 2.780197684e-16 0 0 0 0 27.01370135 0.003002132208 0 0 1477.910265 0 0 0 0 0 0 2.520962609e-14 0 0 5.2926021e-12 0 0 0 0.005679812157 0 4.759359066e-06 9.848225394e-11 1.290158101e-14 0 0 745439.857 0.0002742510171 0 1.870593926e-07 0.006595743852 8.735446063e-26 1.771517179e-09 0 0 0.0002935314195 0 3.928003405e-11 0 0.5433806882 0 7.626575618 0 6.621131822e-09 0 7.496669726e-21 0 60955.40128 76.84036613 0 0 0 3.366264029e-10 17582.99743 0 225.3371327 8.632970446e-11 1.38938806e-23 0 4.5167548e-05 987236.6391 0.9319323738 7.636613565e-09 0 0 0 233.2498839 0 1.997117152e-25 0 7.509406137e-06 142021.1088 0 1.056305333e-13 0 6.219209447e-26 1.763624383e-25 2.084601822e-12 0 0 0 0 0 0 9.411193774e-08 8.06284162e-10 4.017107036e-23 7.917861876e-29 1.752261931e-14 0 8191.338926 0 0 0 0 0 0 0 0.01673010868 0 0 0 0 1.204067361e-12 7993.288637 0 0 5027.934414 1.110697185 72.83427505 2.521730951e-13 0 0 0 0.04350285055 504916.0502 2.474702941e-29 9.552097077e-08 128.3826053 3.348182088e-07 0 0 1.272969634e-09 0.01107180197 0 0 0 0 1.250822782e-15 0 2.953549199e-09 523290.754 0 0 0 0 3.580786923e-17 4.369065569e-20 4.552324633e-17 0 0 23805.4451 10813.54401 0 1.95041598e-09 346158.5298 0.1772165334 4.727254245e-12 0 0 0 0 0 0 7.056856511e-15 2.192907093e-05 6.186493917e-07 0 0 2.338001928e-17 0.0009098154028 0 65122.78052 0 0 0 1.693853691e-05 0 0 0 199.729093 1.393831494e-15 2.968449759e-10 0 23.17102948 5.306684055e-12 0 0 0 0 27669.68591 0 1.013965479e-08 0 0 0 2.137353655e-21 54.4724185 4.478252664e-14 0.0004793771999 0 11.93887267 0 0 0 108093.6775 0 0 0 0 0 1.119241995e-08 2.651305634e-10 0 0 0 4.280732695e-06 0 0 3.406238365e-20 1.91349661e-16 2.813324647e-12 0 0 0 3.455574794e-16 6.449971289e-16 0 0 0 0 0 0 0 0 0 0 0 0 208.964575 0 0 0 0 5.481342565e-16 0 0 0 +0 0 0 0 240609.0556 0 3.013253037e-18 0 0 0.006378641912 0 0 0 1.1711356e-10 0 0 0 2.801030372e-09 0 0 0 0 2.170360101e-11 567987.9077 0 9.734500286e-09 2.1990082e-11 0.0003027633197 1549444.038 0 0 1775.001067 0 2.911900909e-15 0 0 3.385053348e-09 0 0 0 0 0 0 0 0 867.8793529 0 180991.816 0 3.02557338e-05 0 0 0 1.925202691e-05 0 0.1490933688 0 0 2.341291763e-16 192372.3029 0 51548.92314 0 0 0.02399700843 2.181761171e-11 0 12931.39932 0.007808695843 0 0 1.756996161e-05 2.241555971e-14 0 50884.07952 0 0 0 1.132755696e-06 0 1.214100443e-07 0 0 0 0 0 0 0 1.189125369e-06 2.061192096e-13 0.002643478873 9904.158448 4.756932587e-13 2.872538039e-18 0 6.366642717e-17 8.454456597e-34 576.0532635 8.577490605e-13 0 1.703886456e-15 1.375985884 1.532945708e-16 0 0.2257689659 0 6.712196799e-15 4.020302639e-12 0 2.336753096e-08 2.200203948e-09 4.794138947e-05 0 0 1.262162587e-18 0 0 0 6.724395577e-16 3.030066094e-09 28630.87025 0 0 1.613698637e-06 1547745.483 0 0 5.376575879e-20 36.379988 0 9.925096601e-19 0 6.481855695e-17 0 0 1.653951001e-16 0 510666.4825 0 0 0 3.416843364e-15 0.1025352031 0 0 0 0 0 14107.14184 0 0 0.08908670437 4.235169781e-08 0.01689337119 0 0 0 0.002980095941 381068.5456 65648.38328 1600.147935 0 7.882634039e-05 0 2.340474282e-07 8.261573451e-10 0 1.244108345e-15 6.636897615e-11 0 1.121065661e-12 2.594060613e-14 2.937977983e-13 0.2117622335 0 0 7.59925485 0 374.6959122 0 0.01472759684 0 0 0.1114782363 203.8523549 0 0 0 0 1075.220975 871020.3529 0 0 6.538770177e-13 1.502272676e-06 0 0 0 2.252148252 0 5.404641789e-09 0 0 0 1.661585068e-11 0.003948567263 0 3.317417902e-16 1.569109781e-07 0 0 6.641288492e-12 4697.387261 0 0 871.3478605 1.728941413e-10 0 1.615592498e-11 2.748452439e-11 0 0 0.0008564822042 0 3.560519472e-05 198652.3134 2.078849376e-26 0 0 3162.715599 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001214702903 0 0 0 0 0 0 0 0 0 0 0 0 8.035010043e-08 0 67506.35466 2.563948896e-07 0.09750419617 0 4.032515615 149.7908531 0 8.708848388e-10 0.004788515323 0 0 0 0 180211.5561 0 0 862.1828438 0 0 0 4.20607507e-08 0 0 0 0 0 0 0 0 0 0 39991.85145 0 0 0 0 0 0 +0 0 0.0002498337484 0 0 0 0 0 104228.713 0 2.270753031e-15 0 0 0 0 0 0 0 1.756164355e-14 0 0 0 0 1.516773916e-17 0 0 8.91649802e-07 1.696963379e-11 0 1.474118215e-07 0 377527.4241 0 1.371575588e-05 0 0 2.983070949e-10 2.08773626e-12 0 1.211711286e-08 0 0 566109.5018 0 0 22.64080167 0 0 0 0 4.219459475e-15 0 0 0 0 5.867137415e-10 0 3.807180698e-07 0 0 0 0 0.0001130546067 1.865199644e-07 0 19.34310893 0 1.693649888e-08 2.805284937e-09 1.250877864 46821.14158 1.460202627e-06 0.02829483783 0 0 6514.625643 0 0 1422191.089 0 2.33191084e-18 0 0.006322559273 0 0 0 0 0 0 0 0 0 166881.6733 0 0 212412.6694 4.835775527e-07 0.03009843653 5.83991542e-06 1.452350579e-10 0 3.005647765e-14 0 4.58373995e-07 1.184104765e-10 9.23052352e-06 0 0 9.310632294e-12 0 1.147156264e-13 0 0 0.001346441184 0.0003337050528 20845.26524 0 0 0 0 0 9.011698074e-05 2.337345734e-10 0.0001480847166 28735.55854 13591.51831 0 1.94052609e-08 1.09241919e-17 0.0002681246308 0 0 0 0 3.083789774e-19 0 0.0002369893731 0 0 0 8.472930648e-22 61642.16864 0 119949.4754 6.748041146e-19 6.766594614e-18 461.5852677 0 7828.448628 0 1.676900141e-20 4.114037255e-11 0 0 1.41150909e-13 2288308.131 0 6.030015336e-23 4460058.142 0.0003946707196 1.461770278e-11 3.650370807e-10 0 0.1220202327 46520.8605 0.971430714 159887.1043 0 0.01653533523 1.007781658e-09 14291.58009 0 0.0001565975262 0 290912.951 0 32.54766551 0 82915.14468 0 0.1282554943 0 0.004518713051 0 2.784383707e-09 2.922573826e-06 2.576557617e-13 0 1.051227792e-11 1862.412197 37.26884834 1.143364986e-09 0 0 240.840131 1.31338631e-10 5.846575172e-15 3.275708387e-17 0 0.0003412110097 112285.2979 0 0 0.8218068107 123751.7646 3.666050005e-11 0 0 0 522.9493924 1.837183727e-23 0 1.75469466e-11 0 21.61293386 0 0 0 0 0 2.631420813e-07 0 0.9538587769 2.536632063e-06 0 0 8331.111682 1.078333792e-16 3.485148525e-05 0 0 0 0 0.0355230754 4.743027496e-17 0 0.006828037098 0 0 181765.2109 0 0 0.7678305507 0.0005386178118 3.066650918e-27 37165.25492 0 0 0 0 0 1.327219594e-08 0 0 0 0 0 0 0 0 0 0 2.968881666e-08 0 0 9.268918224e-13 0 0.001484252741 0 0 3.554698768e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 284051.4789 0 0 8.708816947e-21 0 0 0 0 0 0 0 0 0 0 +0 5.795177127e-19 0 0 4.136280414e-13 21000.54805 0 0 0 0 101362.6163 0 0.0003918741587 0 0 0 0 0 0 1.624262329e-13 0 0 0 0 0 6.220183681 1.860946782e-13 3.624874023e-05 0 0 0 5.183565181e-05 0 0 0 3.695652141e-06 0 0 0 5.570934188e-11 0 0 0.005577776963 0.914773119 0 0 3.178845894e-23 0 0 0 0 2.80199578e-21 0 4.580877416e-12 0 0 417.9338277 0 0 9.362141942e-09 0 0 0 0 0 0 4.477805973e-10 0 0 0 3.527191712e-10 0 0 6.65560354e-13 0 2.886744701e-10 7.713103322e-08 0 0 7.005229915e-08 9.442256669e-06 8.633968063e-31 0 0 0 5.026090769e-08 871.0528168 0.0001690978517 0 0 0 4.869505099e-07 0 1.228631752e-10 0 0 0 7.872907805e-15 7.790870182e-09 0 6.24050503e-05 0 0 0 3.660822881e-08 0.0009273943766 0 0 0 6.029394775e-05 1847.254718 1.088150941e-05 0 37115.68717 4710.53218 7784.342116 6.5120891e-12 0 0 0 0 0 0 0 4.131083292e-08 124.7879324 1.091455008e-16 0 0 0 1.171978608e-23 2.044160338e-07 0 0 1132494.376 0 854698.4025 3.769965429e-18 0 0 0 0 0 5.020377403e-08 0 0 0 0 0 0.2630812844 2.154999232e-05 0 2.661775301e-07 0 0 0 0.002071126199 0.07577447857 0 4.301443699e-07 2.346949704e-10 0.0001755676149 0.005155145371 0 0 1.627669372e-09 0 0 526.1374673 0 0.000141033517 0 3.812569202e-05 0 7.946906314 2.461383474 5.587750436e-26 0 0 3000.470927 0 0.4442692038 0 1.070957277 6277.74397 0 14582.64352 0 0 1.274598171 0 1.916244648e-18 0 0.04796395794 27404.3584 0.0002367721613 1.959962624e-12 723.3242655 0 0 0 13.46050932 0.3132896562 0 0 1330658.415 0 0 0 67.18386446 0 22.36601542 0 0 0 5.849954811 0.06951372271 4726438.543 0 0.0004143363719 1.146017563e-10 167162.782 0 0.01471590462 9.590029167e-23 0 0 2.491075265e-05 0 0 1.615662514e-09 0 0 129511.9031 0 0 3.190211414e-37 0 3085.593298 0 0 444922.8338 0 1.740738543e-13 0 0 0 0 0.0006337268621 0 0.003355643804 0 0 2.127078781e-10 0 3841332.989 0 2.669811454e-07 0 0 536.0650983 0 0 0.09479424525 0 0 0.0003710089675 0 8.546599092e-22 1.383592618e-05 0 0 0 0 0 0 0 697245.2314 346255.5989 0 0 0 0 0 0 0 0 0 5.747889531e-05 0 0 0 10.75498103 0 0 14856.20731 0 0 0 0 +0 540.8361361 0 0 0 0 0 9.819615805e-16 0 0 246572.0231 0 0 228159.4413 0 0 0 0 0 0 134655.9204 2.272670669e-07 1.165903381e-08 1146.139524 0 7.053620155e-15 62.07833324 0 0 0 0 0 3.586258144e-12 0 0 0 0 1092.459321 0 516.8034355 0.001067005142 0 354.6597784 0 0 0 0 0 0 3.11332386 8.478904705e-08 0 0 3.925191387e-05 0 0.7061406785 3.073129325e-09 0 16.90804252 5.091226057e-20 0 127.9607364 0 0.0008751067494 0 0 0 0 0 3.847911997e-16 0 214.2476242 5.57266892e-32 5.024839332e-11 52906.5131 0 0 0 0 0 0 0 1.050719477e-14 3928406.775 1.882977843e-08 2.130022086e-09 2.221387529e-06 6.378563672e-08 7.272462152e-14 0.000228711423 3.094601136e-18 0.001147816514 1.004840206 0.001893264671 842428.529 2.750328874e-09 0 0 3.152689413e-13 0 0 0 10.29873644 0 964507.5829 0 0 0 6.751949838e-23 0 1410.365368 0.009710477504 0 1.389033121e-09 0 4.219763153e-22 6.401971591e-09 0.0228035396 0 8.662560073e-17 0.0007300424971 3.667392672e-12 0.01014287637 469.5117695 0 7.491393943e-17 2.395683106 0 0 906865.0763 0 4.265588553e-18 8.821494167e-15 0 747709.2717 11573.11392 7.067741714e-15 1.179792927e-11 0 0 0 0 3.332410401e-12 0 0 0 2.333194338e-06 0 7.693160403e-09 0 9.745412669e-13 0.06427026061 1.185152958e-08 0 0 0 0 0 1.454736087e-09 1.099926295e-10 0 0 0 0 4.00787656e-15 15488.00538 0 241.1032486 2.61424524e-06 0 0 7.149563834e-11 1.114684465e-11 0.03543954923 947670.2858 3.656361515e-18 36900.19818 9059.410872 3261.311508 6390.547979 2.192051391e-15 0 1406150.772 0 0 2.70598385e-21 0 0 0.00950626325 4.672684198e-08 0 1.527924309e-05 0 0.001227729463 0 3.583542175e-10 0 0 0 0 0 0 0 0 0 1481754.784 0 0 2.61671802e-15 0.002617301209 0 3.051550563 0.4282673388 7783.319124 0 0.009538770146 267603.7656 0 0 0 2.566474479e-09 2.836534168e-22 0 0 0 0 9.591223562e-12 0 0 2535949.279 0 0 2.586726125e-05 0 1029.611254 5.409033515e-10 275829.8784 94.33838297 7.992334865e-14 0 0 0 5.813906233e-06 0.1154123683 3.698810324e-22 0.01937829169 145337.1432 0 5.445651688e-11 9.749934611e-15 0 0 0 0 0 0 0 0 0 0 0 2512588.873 0 0 0 7.369728335e-11 0 0 0 0 0 3.114315005e-05 0 0 0 0 0 0 0.4930668128 0 0 0 0 0 0 0 1929.272722 0 0 1.108658956e-06 0 0 3.152692042e-08 0 0 2101794.605 0 8.774470308e-14 0 0 +0 0 4.09903525e-14 0.01769381224 0 0 44.20627299 1.403988924e-06 0 3.876462594e-27 0 0 0 0 0 0 2.08799654e-12 0 0 0.09859856974 0 3.390873976e-25 0.04206933542 75865.2006 3.964103456 0 0 0 9.053767089e-06 0 0 0 3.190293105e-14 0 0 5.303467101e-06 5.905565594e-09 0 0 0 0 0 1.611364842e-13 0 3.854117831 0 3.821483207e-09 0.03492330433 0 35.38908877 0 0 0 4.531899227e-08 271.4961649 0.466119835 0 0 28.16424756 0 6.454941122e-08 0 0 0 14229.86671 180226.9412 2.601005833e-10 0 2.357610176e-06 35.10881593 53.44068744 6.674690383e-09 173149.1263 5.88158967e-10 0 0 3.217209985e-05 0 0.006817823743 4.476636533e-24 1.755410755e-10 1765.128644 1.270685924e-17 0 0.004326979485 3.792074168e-09 0 0 16971.98936 0 0 0 120.2673445 11346.51918 0 0 0.0008466886973 0 1.192773732e-15 0.0009923297917 0 0 4.869479997e-08 1.263049786e-20 0 58.20877125 1.991752104 4.118180725e-09 9.876991984e-07 6.4776876e-06 637107.3869 3.595779992e-11 0.006271216418 0 559.0904841 0 0 0 849439.9219 483.1992467 0 0 0 0 0 0 0 0 0 0 3.816725239e-21 0 0 5.827993947e-28 0 1.405705828 0 1.445556788e-07 0 0 1.633155832e-11 148887.0798 2.315855943e-07 351717.4839 1.354954131e-12 0 0 13217.32893 0.7163625158 0 0 6.122476612e-07 0 0 0 0 0 1.426229023e-12 1.590622475e-07 0.000388654815 0 0 0 0 0 0 2.405925013e-11 5.594519576e-12 3.360229885e-10 0 1595.740705 0.007148476954 2.517237826e-14 28.24006812 0 0 1.107214902e-10 0 0 0 0 0 4.877943424 0 2.269731674e-05 0 0 5.732450679e-05 0 0 786741.4988 0 0.02471183079 334252.33 0 2.040643321e-12 0 296.7718938 0 0 0 1279291.905 0 6.489598794e-06 2.28471437e-11 6.839517387e-13 6.033605595e-08 0 0 0 0 0 0 0 14.44229423 0 0 0 0 0 0 124509.9158 0 155.0606222 0 0 5.036649321e-10 115587.9468 3.167970173e-11 2.979059053e-05 0 0 0 0.7265117711 3.211848646e-08 0 0 0 0 0 0 8.694961455e-07 0 0 1.261095291e-21 839.9451689 382073.2882 0 514.3908809 1.107897147e-11 0 0 0 0 0 7.583182884 0 0 0 4.255409939e-13 3.504888228e-14 1.548563156e-05 0 1.123316865 0 0 30.86084266 0 0 0 0 0 0 0 81836.66348 0 7.026222291e-14 0 0.004009655677 0 0 0 0 0 0 0 0 0 0.003195696703 0 0 0 0 0 0 0 0 0 0 0 +0 2310.688445 0 0 0 8.444744277e-15 0 0 6319094.399 3.717292992e-13 0 1.269867923e-12 0 2.804849615e-18 0 0 1714.665272 1.292487818e-08 3295.439795 0 0 1122628.657 0 9.459556329e-10 0 0 0 0 0 0 0 0 3.858813526e-16 0 1.95997507e-10 0 0 1.447931388e-10 0 0 1550.177359 0 0 0 0.000317743323 0 691877.2735 0 0 0 0 0 0 0.0008160932651 0 5.898321562e-08 1082.52729 0 9.489702392e-25 0 2.077669259e-20 0 0 0 0 0 0 0 1.427630063e-08 0 188.8214855 0 1.845314859e-12 0.02402607605 0.002551856024 0 0 1.944898151e-12 0 7.931419602e-16 6.233399751 0 0 6.075291012e-09 5.448215863e-12 2.612838945e-06 0 0 0 0.01678885833 0 0 0 0.0003974188744 0 0 0 0.3270278223 0 0 4411.057008 16.32723148 4.869787755e-07 2.919260349e-11 1.140360399e-15 4221.413791 0 0 0 6.899274205 0.1709335528 0 1169.245185 0.0002902632417 2.959252488e-10 1.778241279e-16 2.074363516e-12 165.826718 0 15510.22366 0 0 15684.1361 304528.5598 346973.2186 4.221845354e-16 3.538404624e-14 0 0.004474861236 3.039902182e-06 0 1029375.394 1.243942079e-08 1259650.327 6.219601055e-11 0.1796623854 2.294629688e-06 1.6165194e-14 0 4.174660588e-23 0 1.246684695e-10 2.592948713e-14 1.233259343e-08 2.957394879e-10 0 1600291.605 0 8283.852405 1.03125355e-30 0 0.2131862108 4.010239913e-17 0 0 7935.328404 0 1.794457996e-15 0 0 2322.028605 0 1.17387782e-07 9.637372373e-10 6.845563806e-24 7.978615278e-06 0 0.001011835914 0.02822535964 0 78883.4898 2.004337782e-09 0 0.009537705073 0 0 0.3174666025 0 0.02357926884 3.914330279 0 0 0 0 5.47821714e-09 0 0 0 0 0 1.91825632e-25 0 0 0 0 1.373211702e-07 0 186426.055 0 1.693361663e-20 0 3.617971807e-16 0 0.0004803058981 5.247252129e-13 3.191928608e-12 0 0 1.266573516e-19 48974.6233 923.3325315 0 0 1.613991031e-10 0 0 6.661731359e-17 0 0 6893.927955 50658.50343 7.878985697e-11 0 8.999575932e-06 0 0 0.002112144721 0 0 8.628789463e-09 199343.5515 0 18991.16519 0 0 0 0 0 0 8.886950488e-22 0 0 0 0 0 7.658473312e-13 0 0 87.57872287 0 0 0.0001216697768 0.2488274327 0 0 0 0 0 285848.6353 0 0 2125.817494 6.333551241e-17 5.421118503 4.917885768e-10 0 3.195220273e-14 0 343327.6092 0.07209501925 0 0 0 0.0001851757833 0.06314026394 0 1.826424717e-05 0 193014.3836 0 2993.911589 5.665336082e-22 0 4.937019626e-13 0 7.854855167e-27 0 0 5.189287463e-12 0 0 0 0 1.836877784e-12 915162.6589 0 65.43448291 0 0 0 +5.075338899e-05 0 0 0 0 0 0 0 5.291369852e-17 0 0 0 2.225108718 0 6.657193033e-11 0 1.550317653e-13 0 0 3.592598947e-17 0 0 148207.8828 0 1.589277405e-06 0 0 0 0 0 0 2.673399913e-09 0 0 0 0 0 7.577331291e-09 0 0.0001135232244 2.173917474e-05 0 0 0 2.156339286e-12 0 3.342121328e-17 0 0 3.710483695e-09 0.01200998046 0 0 0 753230.9583 65213.49752 38.98104502 0 0 55.00892404 3.346833083e-09 0 8330.466271 0 9.947746076e-15 0 0 0 1.975903615e-11 5608.410877 0 0 83793.8094 0 2.397655511e-06 1.40905948e-07 0 0 0.1551789592 7.964277754 0 0 0 90.1235634 1.295943632e-17 0 0 0 0 0 7.253818556e-07 0 0 0 0 0 0 0 0 0.0162292009 0 6.094016129e-08 0 0 0 356709.6892 0 0 0 3.732957167e-22 0 0.001113669831 8.142234413e-05 5639.227767 0 1.179141812e-23 5.024386764e-09 0 1.213116087e-09 0 0 0 8.646992407e-15 23284.35082 0 291.651943 2.070776111e-08 1.475238003e-22 176272.392 0 1.123891092e-13 1.822092174e-07 4.985194136e-07 8232.788623 819.2842248 419839.7804 0 0 0 0 0 0 0.2735466481 3.629261537e-10 0 6.943780345e-22 0 0 0 6322.605262 7.230466155e-11 0 4.321528187e-21 9.572300144e-14 0 0 0.005119448235 6.709949618 1.139135447 0 0 0 244242.0484 1.328607554e-05 0 3.370948034e-13 0 1.499981327e-09 2.468880156e-17 0 3.371131834e-06 140.5529122 0.009636297526 7.791659283e-08 0.001777062233 0 7006.65377 0 0 0 0 0 4.147909058e-15 0 3.363150457 0 3.140408369e-13 0 3.711543449e-09 0.005297692856 0 0 0 7.788102486e-21 1.423013125 0 3.21411732e-09 9.744520579e-14 0 508830.9785 2025459.911 0 2.249109198e-13 1.432092651e-09 2.585194208 0 1.746808195e-11 2.154684504e-08 8.184644136 0 0 43397.53225 1.829480839e-12 0 27142.56308 0 0 0 0.0002308254768 0 2814.095966 0 0 0 0 2.667082376e-17 1.09871472 4.08754585e-11 4171.497484 0 0 0 2.869870727e-12 0 0 0 0 0 12000.29475 321905.132 0 0 0 0 0 0 0 1.167101591e-21 0 0 0 0 0 0 0 0 3.336866642e-28 74792.42366 0 0 0 1.318913441e-12 0 0 0 0 2899820.901 0 0 18.03030981 0 0 426877.0638 0 0 0 0 0 1.991812081e-25 0.005083996782 0 0 1.444596402e-16 0 3.217121478e-13 0 17870.67803 0 0 0 0 0 0 0 6.479879645e-15 0 0 0 0 0 +0 5.037416017e-09 0 7838.726007 3.343388389e-08 0 0 0 0 0.2546588704 0 0 0 0 0 0 2.166801199e-15 0 0 0 0 0 0 0 0 0 0 889.7162159 0 0 0.0001713210287 0 0 0.002243445805 0.2291770795 0 0 0 0 0 115.2774434 0 0.01487005133 0.005781953419 0 0 0 0 2096370.137 0 0 0 3.434600428e-11 0 0 0 0.202699698 0 0 2.440337932e-09 5.478278571e-06 0 0 75739.99618 0 4.588771373e-13 590071.2273 6.808964655e-06 0 0 0 3.471928802e-16 5.523149632e-19 2.011437392e-11 552.4151463 0 0 1.285421858e-08 1.912716577e-20 0 0 3.496863162e-29 0 759.4665529 1.821036311e-16 0 0 3.144755646e-12 0.0001782209966 0 4.433526046 0 0.0001295715836 0 0 3.322716038e-24 0 0 0 0.5753813283 0 0 0 1.944390256e-08 0 5.629232825e-08 0 3.532496194e-05 1.032595413e-11 0 0 0 0 0 8.635149412e-15 1.507821745e-26 0 0 0 8.089130648e-15 2100117.546 0 0 0 9.518604885e-15 0 1.803006643e-26 0 0.04540577746 0 7.102673622e-10 0 0.1804508292 3.035035345e-11 0 20906.92391 0 0 0 0 0.03828701916 0 5.335877899e-09 0 2.208474868e-19 0.02038302661 0 0.0003101136659 0 0 0 1.018891243e-21 0 2.912860146e-15 0 270555.8502 0 0.08572157081 0 0 0 72165.59298 8.82023983e-06 0.2794886859 172.4462975 0 3.89517178e-10 0 9.675967004e-08 0 658.4490878 25670.37709 4.919369869e-14 0 0 6.754607174 9.749217211e-07 0 3.792589491e-05 2.561267569e-17 0.0001704953322 3251.53495 1.477374952 0 0 0 4.700504855e-08 0 0 15744.08469 0 0 283353.5189 0 0 7.99561083e-09 0 0 2.61742732e-08 1.425209841e-11 9.222580063e-12 0 0 0 0 0 0 5206.808712 0 0 1.337601793e-13 0.006001853928 114.928288 0 0 0 0 0 0.2620654309 0 0 33.41583977 0 0 0.01173093904 0 0.0003411108165 0 289186.5562 0 2.544273203e-06 0 0 1.125564203e-08 0 532343.6411 0 0 0 2.921751586e-08 0 498459.8504 0.01095288915 0 0 0 0 0 0 0 0.01384232675 0 0 0 0 0 0.232348263 0 6.319022277e-13 0 0 0 0 938534.4462 0.438516045 0 0 0 0 0 0 414285.2282 0 0 0 0 62434.02071 2.405841331e-08 0 0 2286669.266 0 1.845726689e-10 727.8518686 5.514875302e-16 0 0 0 0 0 0 0 362098.2319 0.001286733759 0 0 0 0 0 0 +0 0 0 2.351839727e-08 0 1.285866365e-05 0 0 0.02356509753 4.664047056e-06 0 0 0 101899.4105 0 0 0 0 0 0 5.246310646e-06 0 0.0001032303592 0 0 0 0 0 0 0 0 0 0 0.02099089809 2.626527796 0 7.039217204e-16 0 7.296264755e-07 0 0 0 0 0 0.003119977074 0 0 0 3.194940762e-07 0 1.868009197 7.563920771e-09 0 0 0 0 2.07027529e-07 0 2.553116096e-13 0 2.228397205e-23 4.796564676e-11 0 0 6.104828168e-06 0 0.003052992641 0 0 6.418068455e-13 4.046666767e-19 185.0304395 0.3709854904 0 0 0.05399128392 2.297486553e-29 1.337357275 0 0 0 0 2.499842978e-15 0 0 0.007043397625 0 0 9519.698601 0 0 7.393820221e-11 0 0 0 0 0 0.01149272623 1.071532838e-07 0 0 0 3.868527879e-10 6.423040668e-34 3.108225716e-24 0.05256319019 6.628211773e-15 0 4.541308629e-14 0 0 0 1.093366229e-14 0 0 0 0.09624745676 0 0 4.128862737e-29 0 0 0 0 6.457976778e-17 0 0 0 2.080601938e-19 0.09674316375 0.1310438036 0 360213.3869 1.419526552e-08 0 3459.210177 2.893948974e-11 0.0001227929361 2.038472471e-06 5.795785278e-14 0 0 1.201845044e-05 0 5.7009669e-06 0 1.348018874e-12 0 0 1.670636792e-08 0.0001857668494 0 4.775657475e-13 2.325017718e-07 0 0 1.243783252e-08 1.562446435e-20 4.607029841e-10 5.149248307e-11 0 3.002738545e-16 903.2951183 1.23289595e-05 0 0 0 0 0 0 0 1.285731804e-05 0.04743906612 1.384489734e-14 0 0 0 667.6042788 0 0 83.82994758 0 0.8532957572 3330.045541 2401630.406 0 0 0 1.586718868 63.91973192 0 14.27554789 1.884513628e-14 0 0 0 0.02289766324 7.60442417e-12 0 788.9885958 0 0 0 0.3394085228 2.378325099e-08 0 8.925221858e-22 1612558.855 392284.2632 0 0 4.295411811e-13 0 0.1367374642 0 203837.2424 733738.1604 0 0 4.903463089 0 0 0 0 0 0.0003208488164 0 0 536377.4794 0 0 0 9.123018686e-17 0 0.0004685767379 0 0 0.06310818046 3.033496712e-13 0.09348425225 0 2.141235201 0 0 0 0 1.708579399e-10 0 0 0 0 0 0 4.638054222e-10 0 0 0 254632.5184 0 866.7309808 0 2.487438829 0 126.6608105 0 0 0 136109.5146 0 0.09672006587 1.83458984e-05 2.711846119e-12 0.9090878596 0 0 0 5.541484418e-12 0 0 0.00158391753 0 0 1.564510319e-10 0 0 0 0 0.0005918315996 0 8.101034659e-11 32745.11791 0 0 8.144119517e-10 0 0 0 0 0 0 +0 0 446000.8301 0 0 4.251667505e-24 0.01325367274 3577442.27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 135874.3045 3.967698438e-10 0.0004076698793 6.555061829e-06 0 0 0 0 0 0 38038.54524 2.903059247e-22 2.314287786e-07 0 0 0 0 0 1.222419815e-19 0 0 0 2.210944519e-07 1.580053374e-11 0 0 0 2.471851895 67828.79242 0 0.2495910657 0 0 0 0 0 7.407920767e-08 0 936233.0819 2.849315994e-09 2137.687169 0 0 124510.2452 4.247586514e-11 3.116234831e-24 0 0 830953.6459 0 0 1.33996795e-19 0 0 1.64741439e-09 0 0 0 0 0 2.414562939e-11 0 0 424483.7375 1.920465728e-10 607.1536562 0 1.207184578e-28 0 1.18509296e-19 0 0.0005438101182 0 0 0 0 0 0 0.001104027773 0 106077.7053 0 0 0 0 0 7.39379446e-12 9.799226435e-09 10.75421995 4.329604381e-05 0 3.746175762e-08 0.001048207175 0 0 0 0 4.511072717e-10 39.73505241 1.629549229e-14 1.42431306e-11 692653.6598 27473.46083 33748.77185 0 0.0003841135474 3.505638432e-07 0 0 35656.05257 2.129244704e-12 0 0 0 0 0 4.162621389e-28 0.00203715368 0 1.333222814e-05 5.010559033 3.463628471e-08 2.283257001e-07 0 0 0.0008359178341 1.989520159e-28 1157.38197 0.8569014687 0.0002837986439 0 0.01261143645 0 0 0 0 7.9565636e-09 0.0002023337749 0 1.29650209e-26 1.414992766e-23 0.03995693206 1.58380397e-05 0 45.51096215 0 0 4.419269217e-11 0 0 1.03067214e-07 22531.09984 2708907.532 0 2.25089335e-08 0 151071.8362 1.503073324e-07 0 0 0 11177.45394 0 0 0 0 0 0 0.005311319766 0 0.0002195767914 0.002839426476 0.009039277218 22.2565358 0 0.002924117532 6.293706307e-08 0 0 0 0.001029900775 1.303676878e-11 0 0 0 276674.6919 0.00811892116 0 0 662054.6305 0 6.569801984e-06 0 1.135435738e-11 2.222792143e-05 1244.590938 1.046539982e-06 7.097731572e-08 1.590911085e-17 0 0 1.677372732e-09 0 0 0 0 1.547606899e-22 4.440652318e-10 4.148267316e-07 1091395.83 0 0.0001523327823 1653.809843 0 0 0 0 0 0 0 0 0 0 1.919301702e-15 0 0 0 0 0 0 32375.55481 0 0 0 0 0 1.678358858e-11 0 0 6.235004733e-16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.167270284e-12 0 5.467761021e-18 0 0 0 0 0 0 1280607.418 0 0 0 0 2.128134533e-10 3482.451046 0 2.233100952e-11 0 0 0 0 0 0 +0 2.614513857e-12 0 0 0 1853476.639 1.907512024e-13 0 0 0 647064.3729 3.981148572e-21 0 2.164999235e-22 0 641.4483354 0 0 2.16688693e-14 0 0 0 4.39612272 0.0004206782246 0 1.07297278e-06 2.551614617e-17 8.91327046e-07 0 1.091580549e-08 0 0 3.48552395e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009800277681 6.375185768e-07 0 0 0 0.002650215088 0 92770.77196 1.462170308e-15 9.079043247e-08 0 0 2.305723021e-15 4.798357192e-09 2.254758215e-05 2927.116593 1.085982703e-22 0 0 683733.375 507.4655186 0 0 0 288697.3755 0 0 0 4.043002644e-14 0 0 0 0.6131371411 0 7.024170858e-08 0.3448554123 0 0 0.001630494005 0 0 0 0 0 3.758198884e-05 566878.6286 4.163961032e-10 2.224259181e-08 0 0 0 0 0.4001445099 60920.40017 0 2.892706718e-24 0 1.868411112e-18 0 0.0003892717813 1.748420012e-05 0 211171.6226 0 0 1556281.046 4.670023676e-08 0 119.5772236 356208.2251 0 0.5620194955 0.0004875582887 0 4.112754492e-09 15776.63818 158303.3945 0 0 743.7440518 5.43409898e-09 0.002265578844 1.842480563e-06 0 1.50231321e-12 0 0 2.930034829e-05 2.145154566e-05 0.03446228208 0 1.022332559e-12 0.000297145509 0 0 0 0 0 4.085753503e-09 692626.5393 0 1464547.824 0 4.623349962e-05 3.356600973e-08 3.622719547e-05 0.005550756185 0 0 0 0 0 0 0 0.04569001627 32581.88721 0 0 0 4180341.656 0 0.1087357087 3.765622983e-17 2.538935239e-07 0 0 3.820400468e-10 0 16.81934748 3.664543661e-07 0 4.868577056e-12 0 0.0003081517249 0.0006450090571 0 0 0 0 5.021426414e-16 0 0 0 1297586.627 0 0.5684205553 0 59.94070313 0 0.1082898666 0 0 0 494.9442737 61653.07212 0 307.537325 0.005660833688 0 0.000430910448 1.039693539e-20 8490.843835 1.216047651e-10 0 0 0 0 0 0 0 3.518590534e-07 1.725712754e-17 0 0 0 0.005449497286 3.619019924e-10 0 0 0 0 0 3.112126153e-12 0 0 2.591566299 0 0 0.01865830241 5.517611516e-08 0 0 0 0 0 2.345458498e-07 8.28518336e-05 23309.27898 2.013432996e-07 0 0 0 524074.3934 0 2.75844154e-07 0 0.00716134443 0 0.07590710766 0 6.594750698e-17 0 0 4.493335702e-17 0 0 0 6.193954864e-13 3.435837894 7.548972057e-15 0 0 0 0 0 0 2299.476041 0 0 0 0 2.885969148e-23 0 1.181687535e-08 0 0 0 0 2.123887267e-15 0 0 9.412314131e-12 0 0 0 5.742765956e-07 0 0 0 0 5.063609514 0 0 +0 0 0 2.285565135e-17 2.036580804e-27 0 0 0 0 6.25213827e-14 0 0.0001541399969 4060.381418 0 0 0 0 1.565531352 0 0 0 4753.693903 0 6.659414265e-15 0 0 0 0 6.656324964e-07 0 0 0 2.441806566e-14 0.003521605381 81445.98178 0.0008877677033 0 0 0 0.0002973339428 0 0 0 0 0 297702.8449 5.436430085e-16 0 0 74.73521677 0 0 0 4.444525774e-12 3.897246002e-15 0 1.503584261e-08 0 3.32039939e-20 3.160820777e-19 0 0 0 16.29608741 309605.7275 0 0 0 0 0 418339.4955 0 0 0 0 0 0.006998310973 58243.10576 0 0 99.88623007 0 0.7288360158 0 1.472246441e-09 1.02046861e-14 39781.36546 0 27.18292992 7.096294584e-07 0 4.681877966e-11 1.249759341e-07 0 0 0 0 0 480.7426106 267237.6503 3.046464183e-14 8.063385441e-11 77094.9916 2249356.417 0 75421.82669 8.274417383e-11 7.002424891e-07 1.333944062e-17 2.759085193e-23 1200.573957 0 7.874055577e-18 6.738754556e-07 0 0 6726.827131 5.405822414e-26 0 137586.3395 0 0 0 2611501.536 0 0 2.157758935e-11 0 0 1.002732889e-13 0.007359461993 0 0 0 0 0 8.866574161e-05 0.3684921544 0 0 8.453805808e-05 1.760551782 0 0 23754.62358 0 0 254409.5356 79768.93735 0 0 0.02663848686 0 9759.343929 0 0 0.00106319215 2.147952496e-07 3089833.632 0.1978030357 0.0669920787 3.55023051 0 460812.3895 0 0 0 0 0 1.474164156e-10 2.202251983e-07 0.1357639851 0 4.163653037e-06 585827.7418 0 0 0 2.335895971e-10 0 3.325476849e-05 0 0 0 5.066153303e-07 0 0 0.006323440429 259.0348526 0 0 0 974.753451 0 0 1.780613116e-06 2.685124103e-12 0 0 6.827358463e-16 0.002094756718 0 0 0 0 2.009705405e-08 4.203106176e-14 0 9.662205833e-11 0 0 0 0.0004369690719 1.992867378e-05 143.4848067 0 0.0005379238766 0 1.958435818e-05 0 0 0 0 0 0 1.576161583e-07 8.152610928e-11 0 0 66780.21463 0 0 0 83722.38429 0 4.340244771e-05 0 0 0 3018.270895 0 0 0 0.001929925345 0 2.582129731e-14 0 0 5.220719769e-11 0 0 106328.155 0 0 3.719989494e-10 2933.534023 0 4.007441463e-13 0 4.783429399e-08 0 0 0 0 0 0 0 1.217307126 0 0.2273080794 0 0 0 0 0 0 3.339801398e-07 0 2.834555657 0 0 0 2.247367769e-19 0 0 2.546702976e-16 0 0 0 7.822234465e-19 0 5.315415483e-17 4.774930222e-15 0 0 0 14.20244645 2.280735733e-07 0 0 +0 0 0 0 0 0 0 254317.3893 0 0 0 0 0 0 0 0 0 0 92651.99036 0.09017595583 4342795.332 0 1.067289816e-13 0 0 0 0 1.550742248e-05 1.005753841e-12 0 0 0 0 0 3.301901411e-09 0 0 0 3.456833189e-09 0 4.927203441e-11 58.30633708 0 0 201.4127458 0 4.304257552e-16 0 7016.485946 0 0 0 0 0 0 0.00109037429 0 0 2779.764144 0 0 0 0 0.01792861174 0 0.2773945025 0 1.374815645 0 0.4212574052 0 0 3.289470198e-10 4.776107614e-13 2.329993955 1173590.518 0 0 0 1.525943488e-13 469195.8649 4.897774623 1.527471758e-13 0 0.000385971001 0.0005569181036 0 0 0 0 0 0 0 0 0.0004100136136 0 0 0 1764.005233 93738.01085 3.529796287e-09 0.1057018724 4.218806112e-08 0.01711486123 26787.16796 2.39028702e-11 0 0 0 2.4751291e-16 182893.2858 0 77814.67657 2169092.097 341056.6481 1.925797042e-18 9.606302534e-15 0 0 218273.8951 0 2.015186822e-25 0 2.656660409e-09 2.379637098e-28 0 1.613223331e-10 4.29110834e-20 2.01599757e-06 1553.544308 0 0 0 374.4579143 0 0 6.229583447e-06 0 0 0 0 21.18547969 2.889364497e-20 9.171804225e-14 0 0 5.339258406e-09 0 0 200.1238664 6.123846488e-21 0 1.003757012 0 22831.50392 0 0.000438722499 52043.08197 0.06872695041 111.3445233 0 0 0 2.285729913e-13 0 0 2.315770746e-05 0 0 0.3758499987 4.806892321e-07 0.001173685264 0 2.147847493e-13 15378.99527 4.689351808e-10 4.018826256e-17 0 5.539856207e-11 7.430962126e-11 0 0 0 0 0.1116130878 10698.17245 0.02326280525 7.244344017e-05 7.731714765e-15 1.383608925e-13 0 7.588318166e-11 0 0 0 0 0 0.0001128790757 1.137200556e-05 4.882422584 0 3.119679966e-11 1.131087721e-10 0.04537187948 0 0 9.446003247e-14 0 0.002427990078 0 0 1.498841191e-10 5.799925381e-14 0 0 0 0 0 752401.0374 0 0.0006847772838 0 4.431389162e-12 0.1906636947 1.09830795e-13 0 0 0 0.008507092378 2.168188659e-06 0 6.008563246e-24 0 0 0 0 168.8948608 0 0 0 0 0 0 1.993081401e-11 2.464406275e-13 0 0 0 3.769753552e-05 0.2472092585 2.141650657e-17 0 0 0 0 2.422310466e-07 0 8.651851989e-10 0 5601.903402 0 0 4.099702569e-14 2.828330622e-09 0 0 0 0 0 9.698773248e-15 0 2.093273963e-08 1.000045696e-08 0 0 0 0 0 0.4309385721 0 0 0.000213783786 4.458148518e-11 0 0 0 0 0 0 1.807181641e-14 0 0.0206072905 0 0 3.980725547e-06 0 1.616394195e-08 0 3.040122312e-16 0 +0 2.386792628 0 0 0 0 15834.87877 0 0 0 0.1849864879 0 0 0 224.4052507 3325561.941 0 284401.2559 2.616177964e-09 1.721061505e-12 0 0 0 2.019022493e-11 0 0 3243.036323 0 0 0 73.44247934 0 0 0 0 0 0 0 1.309112205e-07 0 0 0 0 0 1741781.154 1864.244372 0 0 1986.965885 0 0 489002.5876 0 2.361107259e-07 0 0 1.222104753e-08 0 304539.9546 0 1.201076005e-06 0 213286.9184 0 2.156543099 2.485345189e-06 5.481055224e-05 0 0 0 0 0 0 0 0 0 3.320927767e-16 0 5.502697912e-05 2.19371362e-15 3501.166326 0 0 1.064346569e-10 0 0 36720.50017 1403.039238 1413.405732 1.174620552 0 3.122074403e-08 0 0 0 1.65232845e-07 4.40500157e-13 1.227255467e-32 0 997654.1063 2.659478657e-15 2.384569518e-29 17898.98738 1.771465436e-15 0 570301.6278 1.037018723 0 4.018595452e-13 0.2542172177 0.1860063407 189.1437696 590343.0687 0 0 1.88062637e-10 0 0.005424497748 0 0 0.002520817888 0 662214.2783 0 5.954626046e-15 0.0001976309145 2.145867199e-13 0 0 8.942093082e-09 0 0.001680727545 0 0 8.214797562e-12 1.160085367e-07 0.002898429569 2.418344421e-07 1.376117471 8.537473774e-13 0.0001136691091 0 0 0 3.49933548e-10 0 6304.912388 0 0 0 2.140264456e-05 0 0 3.923584525e-10 0 0.0001418723282 0 2.73521061 1059775.764 0 2.583993653e-15 4.088461237e-06 0 0 0 0 9.555220682e-08 0 0.004008493163 186.8985887 0 0 4.738763259 5.846936773e-05 0 0 0 0.2699493013 1.514659555e-07 0 14.07827828 0.06622249318 0 88319.05392 4.77859485e-12 0.0007912793285 3.450623334e-13 0.0004564566807 0 0 135886.0407 8.097745049e-18 6.753655184e-08 0 0 0 0 0 0 3.328717704e-23 0 4.126810828 1.84620293e-08 0.0006406054594 0.009436920452 429381.0951 0 3.016762023e-21 7.476486655e-06 0 0.002753638476 0.03676718432 164523.6359 51.2749552 8.62860516e-20 0 0 0 0 0 0 0 0 0 4.013149827e-09 0 0 0 0 0 0 0 0 0 0 0.002895459966 0 0 0 0 6.431742721e-14 0 0 0 0 0 0 1403.266595 0 5.089285853e-10 1.689631672e-10 0.004332435597 0 0 0 0 0 0 0 0 0 0 0 7.803693354e-18 0.0003010942499 112252.5827 19065.35404 1.081403973e-24 0 0 0 0 0 5.666084317e-13 2.513351027e-15 0 0 0 3.774508408e-17 3.24744947e-20 0 0 0 0 4.022834938e-29 0 27036.57914 5.800639114e-07 0 0 0 4.681139797e-06 0 1.355052331e-27 0 0 8085.629681 1.058668612e-14 4.991485033e-11 4.903010444e-11 +9.805201932e-13 0 0 0 0 0 0 0 0.0004696840062 0 0 1.190068591e-16 0 0 0.04660562527 0 0 1.043373428e-06 0 0 0 68.21852064 1.283457809e-12 51053.59167 5.264868026e-17 0.0003264664924 2.044529847e-14 0 54432.26381 0 0 1.748392039e-11 0 3.329476734e-09 0 0 0 0 0.004427186928 3.015240648e-11 3671918.72 0 8.053637178e-19 24.18349498 0 0 0 0 0 0 16364.45325 985269.6107 0 1.115703042e-06 4.064558058e-05 0 0 0 0 587119.9484 2.153951168e-22 0.2712833194 0.06500339606 0 3.868722645e-27 0.0007110808079 99862.09475 0 0 1.933673235e-06 0 0 0 0 2.736431448e-19 0 0 0 11034.55054 0 0 0 3.289161097e-13 0 0 484.5958303 601994.3135 0 0 0.2237109193 0 4.738421597e-13 0 0 0 0.0003226883617 0 0 0 1.433993145e-12 4.139046338e-14 0 0 0 9.546767095e-07 1.649282238e-12 3.262550873e-13 6.596681255e-06 0 0 0 0 0 0 0 2.647856492e-12 0 18825.56102 0 0 2.454484559e-17 0 2.189012631e-19 3.869139714e-14 2.855995442e-10 0 6.391654299 0 1.799963271e-06 0 0 0 0 0.0004374663099 0 0.0001250638529 1.138842263e-07 231723.7352 0 2399959.836 0.008262199801 1.402173513e-06 0 0 0.01022713138 7.302634635e-11 3.562306928e-12 0 2.514829083e-27 0 0.000224886101 0 0 1.492038821e-05 0.2217235352 0 0 0.1544876896 0 5.400294512e-19 2.022969591e-08 0 4.788310877e-11 0.2063049197 16.76261007 0 366791.6914 6.513650955e-12 4.298389694 9.279482815e-09 0 0 0 0 492438.0142 9.734282285e-14 0 0 0.4470269388 0 0 1082.659568 0 9.462156352e-26 0 6.352816311e-14 0 0 0.0133131938 5.4198508e-15 286.5225533 2.674138548e-10 1.584578651e-13 0.6643185519 1.601211416e-33 0 2.273869612e-05 5.70366916e-25 0 0 0 0 0 0.001181752299 0 0 0 6.509266418 0 0 0 0 0 1.637766698e-06 0 1276106.366 2.972873042e-21 0 8.498963792 0 0 1.615183082 0 0 9589.380533 0 0 131.9102723 4.85594959e-09 1.464954481e-09 0 1.55261295e-18 0 0 72315.49877 0.3740945977 0 0 0 2.939656346e-15 6.632577211e-13 0 0 0 4.153062206 9.450476284e-10 0 0.000344632518 39.43140692 0 0 56283.20278 0 0 0 0 0 0 0 1.329816527e-05 8.346733544e-15 0 7.272886598e-07 0 0 9.27955432e-07 0 2144244.259 1.353117827e-28 0 0 1011315.023 4.125548009e-11 0 0 0 0 0 406.9247939 0 0 0 0 0 3.158854043e-07 0 15.90335039 106253.137 0 0 0 0 0.0002339001891 1.152060608e-06 0 0.4957130775 0 0 0 0 +0 0 0 0 0 272.2827573 0 0 0 0 0 0 0 0 0 0 7.211741472e-11 0 0 0 0 0 0 0 0 12383.47832 0 0 0 9.966021003e-18 0 522.4262687 0 0 0 0 0 0 0 0 0 0 2.68034495e-13 0 0.045075766 8.288949554e-13 0 0 0 4.925226993e-09 0 0 0 2.236109839e-13 1.571202438e-06 0 6.268477668e-28 5.781386526e-10 0.5590697945 0 1.556083906e-07 6.133062736e-25 4.130660051e-09 1.324438005e-06 75.30044495 0 3.065927206e-05 0 0 0 0 0.4177531789 22686.51011 254881.3772 5867.414559 931.8886365 1.556054402e-10 0 4.891521281e-05 29.39205837 0 0.0001056921455 0 0 0 2.826158776e-05 1.873538196e-10 1.089267201e-12 25240.02953 1.310066109e-09 0 4.57389044e-08 0 0 0 0 4.445374932e-06 4467.790222 0 0 0 0.0001908798625 0 1.271986937e-06 0 0 0 0 0 0.005244236386 5.600781762e-06 3999.671632 757354.2666 0.00646694735 0 206.5158434 0.1017351163 0 163.6491031 2.143687287e-06 10151.07463 0 1.08308336e-12 4.25961691e-10 8.72365564e-16 0 0 5.532596381e-13 1.368062993e-05 0 2798.20401 3.58740046e-14 3.134959225e-13 0.0003104514752 4.873385717e-05 0.001164670417 0 8.210038485e-18 0 9.555379817e-10 39.24822092 0 1805317.416 0 0 2.014573165e-13 4.858142073e-06 0 0 8.976036257e-16 0 0 0 127054.0611 0 0 130607.1821 1.029565577e-25 1.47378805e-05 5987.037462 3.860705429e-11 7.358099784e-13 0 0 2.144160415e-08 175927.4881 0 0 0 0 0 0 0.001083598616 0 217141.1283 2.165534464 3.135412804e-07 0 346.177859 94.5201409 1.592365652e-07 24.55189959 4.510656247e-14 124820.3203 0 0 0 0 2.888677299e-13 0 0 2.689081451 0 0.01298195514 0 0 0 0 0.0005048742058 0 0 7.830508094 0 6.880336743e-14 0 0.7154170867 0 0 0 1.068652225e-07 15841.61908 0 24410.02375 3.52570318e-11 39.63398637 0 3.286212317e-06 0 0 113647.6343 0 0.0001248680475 0 0 2.371932052e-05 0 1.398366836e-10 3.017447899e-12 0 0 0 0 0 0.0001270659226 0 0 0 0 292.0781952 0 0 0.06531093591 0 0 0 0 8.402097553e-11 0 0 0 0 0 0 0 38788.40671 0 0 0.1448111359 0 0 0 1.015292128e-22 0 0.06790705495 0.003357811131 0 0 0 0 0 0 0 0 1.812857574e-05 0 0 0 0 8.965368488e-06 0.9422356639 0 0 0 0 0 0 3.002852961e-09 0 0.1418835827 0 115981.486 1.304983616e-05 3.045557393e-07 0 0 0 5.890308915e-05 0 0 0.02172722372 +5.387475793e-23 0 0 0 0 0 0 3366.648567 0 0 5.502571058e-12 0 0 0 2.096374895e-15 0 0 0 157514.5932 0 0 0.4260463073 5.14200062e-08 0 0 0 0 0 365388.762 0.8333953148 0 0 0 0 1.869381249e-10 1.417161919e-06 0 480.7763252 0 0 0 3.64848661e-14 2.052926473e-12 0 0 17.93350327 0 0 8.664148964e-14 0 0 0 0 0 0 4727.572792 0 8.204037181 0 0 0 1.997531719e-33 0.0002488170072 0 0 0 106254.5883 1.132633355e-07 9840.482434 0 0 0 0 1.054262348e-22 0 0 0 0 0 0 0 0 0 4.393121105e-14 957028.4378 0 0.1394374851 0.0003604918465 1.230021551e-09 0 0 1.101761646e-15 1.751232211 0 5.908110278e-16 24780.61165 0 0 2.522821648e-05 0.2582990514 5923.838179 0 0 5.666055734e-15 0 0.1050507577 0 0 0 7.265449251e-14 2.726560213e-08 0 0 0 0 0 0 5.424439019e-14 0 14545.79762 0 0 1.415778163e-10 0 0 0 1.124661848e-08 0 0 0 0.5270279998 9.617159027e-10 0 0 0 1.514747175 0 0 1916862.934 0 0 0 0 4.998356308e-08 0 0 0 0 0.1786683569 1.082969717 1.252533972 1827650.002 0 0 0 0 290497.1049 0 4.858045953e-11 1.500492757e-14 0 0 6.312274699e-17 4.166039199e-15 0 0 362.5906971 33.95345582 1.441925065e-13 0 0 0 0 3.579853865e-05 136933.0331 0 1.922023424e-24 0 0 3.023502693e-06 28412.66026 0 2.927217249e-09 7.89359057e-08 5.796090328e-08 0.02983588987 8.408592404e-08 4.395581483e-05 0 0 0 0 1.98686833e-06 0 0 1.737072483e-08 0 0 0 0 0 0 0 19.74364842 772064.2345 0 0 0.1213679819 0.0003950502569 300833.364 0.0220779066 0 0 554955.7647 1.064191283e-05 0 0 0 0 0 0 0 0 0 2.719573853e-07 0 960642.9146 0 0 0 3.281844653e-05 38580.18123 0 0 6.971970928e-14 7.454860483e-05 0 0 0 0 0 0 0 1733.454869 1.718977604e-12 0 0 0 0 0 0 0 0 0 2.262338681e-06 0 2123.728747 0 2.700780538e-16 0 0 0 0 0 1.271938257e-14 0 0 3.744597466e-21 597389.067 0 0 2.191195961 9.598738147e-16 5.728491029e-09 0 0 0 0 0 0 0 8.676736848e-32 1.396257865e-05 1435.071915 0 0 0 2.438766113e-26 1.197001725e-16 3.756161235e-12 0 0 1.180508573e-21 0 6.589165629e-14 0 0 3.794132737e-28 0 1.355862938e-13 +0.04717819424 0 0.002784530008 0 0 0 0 0 0 0 0 6.146183047e-19 0.0001098586684 0 0 0.02149529934 0 0 0 96.29688487 0 1.218592319e-17 0 0 0 0 1.305152382e-24 0 0 0 2.482863822e-06 0 0 0 0 0 0 0 0 0 10809.87842 0 0 3.945448599e-12 0 389831.4714 0 0 0 3.727204529e-11 4.356025247e-37 163141.0101 0 0 0 0 0 0 0 0 0 0 0 0 0 1.242182592e-05 5.741512174e-05 3.697121211e-06 1250.812264 5.279431053e-06 0 0 0 1107526.456 1.121696405e-06 0 3.011295144e-16 4.499409601e-11 0 20.85333111 122.6785365 0 0 0.04350840625 0 1.409905478e-18 6.288105307e-13 0 0 177583.7663 0 91703.35828 3.040372433e-07 0 0 0 3.750408513e-06 0.0002417419142 5.060937076e-12 0 0 0 0.0008865419809 85.38742312 5.724630704e-11 0 0 0 907128.3807 0 0 0 1.042586935e-07 0 6.869197175e-17 1.887308558 1.109854066e-11 0 0 0 600479.0211 3.837712174e-10 0 0 0 1843.211606 0 0 22729.89291 0 0 0 0 0 0 0 64.55755539 0 0 4.191526906e-07 0.001599674528 0 44.77940096 0 0 0 18462.52045 8.309057803e-12 1.224584652 6.191385747e-17 1.343181929e-27 0 2.390220725e-18 0.004805400514 0 0 1988595.729 0 0 5.445339106e-12 0.8325508633 285.6210596 234096.06 0 0 0 3.266912273e-07 164537.8443 3.174289153e-06 1345434.752 0 0 2.498018715e-26 949236.1388 4.085503875e-10 0 2.147979633e-13 0 0 6.169717762e-11 0 0.6113138457 0.1558271091 2.825453783e-14 0 0.0002237906038 97082.80774 6.338122025e-23 8.090433853e-17 0 4.728260447e-12 3.969444381e-10 1869.446035 0 0 1032212.295 2.781481333 0.2875998555 125721.6549 0 0 0 0 389153.0392 0 0 0 1.435987956e-21 0 1.354476131 0 0.002503066337 323.4887324 0 0 3.752374768e-15 126501.4812 0 0 0 0 0 0 0 0 0.3962559646 0 2.92127606e-06 0 0 3.109609401e-13 72.36516648 0 0 0 0 0 311030.1647 0 0 0 0 0 0.003805577578 0.002003558925 0 0 4.190939641e-23 0 0 8.988572466e-18 0 0 0 0 2.497702493e-07 69.68967363 0 0 0 0 0 0 0 0 0 0 0 0 0.1809254328 0 0 0 0 1.08432771 114.1275323 0.001199474642 0 0 2.512018861e-13 0 5854.950536 0 0 9.941876826e-07 1.963793872 0 0 0 0 1.864790939e-10 39.04339197 0 0 4.221358751e-13 0 0 0 0 0 +1.934153118e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10233.94485 0 0 0 0 0.6680113844 9.305336554e-07 134098.6907 0 0 0 0 0 0 0 0 3.172754457e-14 0 0 0 101.0564477 361.7852796 1.051424312e-06 25696.05435 5.182095159e-16 9.372186713e-10 0 8.990829026e-14 0 0 1.535765227 7.810218963 0 0 0 0 0 0 0 0.005568332166 0 0 0 0 1.71897418e-09 7574.259401 0.6166589216 0 0 0 7.537738512e-16 0 0.0001908215313 0 0 0 6.659291564e-08 2.181313564e-11 1.696166743 0 0 0 0.00330813681 4.98317625e-09 0 0.004598944089 0 4.517579674e-07 0 0 10513.07143 3.598366109e-09 415428.4266 0 212.0609956 5.715511979e-07 0 6514.980552 0 454338.1059 4.223990677e-11 9534.179927 0 0 0 1.333258805e-10 0 459379.0095 133343.9398 0 0 0 33373.71423 0 164912.6408 0.05561395544 0 0 16.0047146 102.2517216 0 0 1.174157302e-10 1.516953465e-05 0 0 9.542734532e-05 34509.34753 0 2447.444228 0 0.3735309346 6.936082243e-11 0.0001639277731 6.025513657e-12 189.060329 0 0 6.477260634e-15 0 0 56.55684519 0.00841416527 2.419491813e-19 9.154198134e-23 0 35719.95794 0 0 5.285051015e-12 6.38905327e-08 7.493376196e-15 0 0 0 0 42453.83528 1.194046903e-14 0 1.304305268e-12 8.629870227e-08 6.825950161e-08 0 0 5.863413108e-05 0 0 2.929202525e-10 0.3072857818 0 0 0 50581.5233 0 8.58981686e-14 0 3.914609804e-06 0 0 0 63.33971915 0 0.0007119683428 0 0 7.353836106e-07 0 0 0 0 0 4.689389495e-23 0 68.03027113 0 7.335231436e-08 0 0 0 2.119249872e-15 2972.707824 0 0 0 0 0 0 1.485675529e-09 0 0 4.661702212e-05 0 0 1.77902092e-12 0 0 0 0 0 0 1.362472e-13 0 0 0 1248.283348 0 0 799.8271253 0 424.9028505 0 0 0 6.026096518e-08 665.8358761 1.021770277e-08 0 7.684045879e-12 6.429108116e-05 425.4038654 1206.53435 0 2.755135919e-18 5.437329487e-17 0 0 0 0 3.205122321e-10 6.075498732e-17 2.802615034e-14 0 0 0.8891402103 0 1.425552813e-09 0 5.347425808e-15 0 0 0 0 2.375244027e-05 0 0 8792.874002 0 0 15.13595371 0 1.268629278e-05 2.364664084e-15 4166590.803 7.870592154e-14 0 0 0 0 0 0.6512191468 0 2.07304432e-06 48.9671664 0 0 0 0 0 0 1.441962045e-05 0 0 0 0 2160.626515 0 0 0 0 0 0 16.37535358 5.555716903e-18 0 0 +0 0 0 0 0 0 0 5.526154898e-10 0 0 0 0 0 0 0 0 0 0 5.484067727e-25 0 0 0 2.762741191e-14 0 5.749693628e-14 0 0 0 0 0 0 0 0.1338312902 0 3537.46187 0 0 0 0 0 0 0 1.247612464e-07 3.080106723e-07 0.001059540675 2.092148538e-09 0 0 0 1.346797384e-17 0 0 0 0.101636861 0 0 0.9297023072 0 0 996242.3239 0 3.487987441e-15 0 0 0 0 59.91488008 5.331628497e-08 0 0 0 0 0.004254023887 0 4.262721711e-16 0 164169.3615 0 0 0 0 0 2.633850306e-06 213772.7124 0 0 0 2058011.206 0 1199468.305 0 442.170225 0 0 0 6.661802023e-21 0 6.673044244e-05 3.767791127e-24 0 0 0 0 1.422639004e-08 0 0 0 2.309269628e-17 117440.3624 0 0.3679245327 0 565.76215 28985.91443 6.998178235e-07 2.891148207 234677.0527 0 1.620691711e-07 592289.7948 0 0 62225.50556 0.07767932305 0 1.032368054e-08 0 76531.22935 4.672442025e-24 0 33938.14699 0 0 0 5.101871268e-18 8.570998802 1.658712463 0 0 1.416722724e-10 1.678773959e-13 5.706719623e-23 7.662107124e-07 9872.718371 0 710.3253349 3.912337124e-10 0 0 0 113.4379903 3.023589288e-17 4.803389991e-12 0 1082.001304 2520.233913 0 0.001276877971 0 4.737662188e-05 1.935024499e-11 0 0 0 1.013911753e-10 0 2307.503512 0 6946.642262 0.00037220948 0 5.302871328e-10 0 1.910785681e-10 0 1.547595177e-08 29.49467084 3.750992589 1.418939634e-23 0 0 1158.559764 0 0 0 1.343020677e-12 0 1.110783366e-20 6.051797101e-11 0 0 0 1.634567192e-10 0 1.234358077e-19 0 0.2740238818 110.3596427 0 257985.7656 0 0 0.0004002763228 0 0 0 0 0 0.007461548678 0 0 0 0 2.347615698e-06 0 0.02334542953 5.779739278 0 5.514775582e-13 2.2775156e-09 1.762316387e-22 0 0 0 0 0 0 1.242564426e-10 0 0 0 0 0 0 0 8.393107129e-08 0 0 0 0 0 0 2.530510841e-09 0 0 208623.9038 0.544215751 0 0 0 18080.09136 0 0 0 0 0 2.093090959e-08 0 0 0.1458098249 0 0 0 0 0 0 0 32858453.81 0 0 0 0 0 0 0 0 1.663838076e-18 0 0 0 0 7255.611608 0 0 0 0 0 0 1.522344124e-24 0 9.283490489e-20 0 0 0 0 0 0 0 2.930087153e-07 0 +0 3.702080615e-08 0 0 0 0 0 0 2.730213725 23610.19794 0.8378371124 0 0 0 0 0 0 0 0 1.253730802e-06 0 288497.4188 0 2.89785322e-05 1447.578443 0 2.27266353e-08 0 0 0 0.0638197093 0 0 1.60430192e-33 1.627554413e-15 0 0 0 14047.81288 0 3.861991372e-06 6.695682907e-17 0 0 0 1.337654926e-09 0 0 0 0 0 0 0 0 2.329864721e-15 0 0.0002856960328 0 0 0 0 0 0 6.999759454e-06 0 6.064901178e-11 0 0 0 0 0 4.633623458e-08 0 0 2.213522544e-10 23218.55646 4.07427231e-08 0 0.000417601216 1115.131059 1.543861372e-11 0 1.969461624e-21 339.2881739 0 0 15733.69261 0 0 0 3.901611652e-10 0 0 1.028053259e-13 0 0 9.41255151e-17 0 0 0 0 0.001480291892 21180.96373 0.002147203336 0 0.06035759136 0 0 0.03725147419 0 0 0 139.3146418 108.6300026 0.2699508123 0 0 25591.67954 1.165860773e-10 0 0 17.04196091 0 3.286471899e-07 0 5.045117043e-08 0.01807991212 0 0 9.700609642e-14 0.001886309353 3.117355074e-21 0.0007779697154 0 3.21803449e-20 0 0 5.098532385e-10 0.0007605011938 0 0 5.183533744e-08 228033.9236 0 0 1.550601878e-09 0.00162082925 3.216729638e-05 8.062887236e-15 0 1.916648581 0 0.303644654 71.1225362 0 0 0 0 4.346046951e-15 1.659015715e-05 1.588202076e-13 1.74368748e-12 0 0 16299.27974 0.003457371916 0 0 1.027582733e-09 6543.082907 0 0 2704431.326 7.763368555e-11 0 21007.38754 305243.3813 459.8129123 6.229424404 1712.869649 2.438150927e-10 0 1.401908269 0 1.472098725e-18 6.007920811e-09 0 4.679768751e-09 0 1.895212365e-12 0 0 1.634141953e-27 2415.593037 0 0 8.794564303e-16 0 1.036083316e-11 0 2.751311921e-05 9.010845126e-15 75.37981699 1.75692823e-30 2.3969038e-08 0 1.658591282e-09 0 0 9.35058381e-15 0 0 2.811289403e-07 1.177471198e-20 0 9.912150453e-09 1.590421735e-13 0.118687349 0 0 4.868413796e-12 10.93804711 0.06788261767 3.625973565e-20 0 0.1928362417 0 0 1.773514403e-33 3.324892804e-19 9.680779852e-06 10.27825298 1.013516166 1623737.293 5.830703792e-22 0 0 0 0 0 0 360.0833443 0 0 879971.2354 0 0 0 34883.95969 6.645936984e-10 0 3.066837171e-10 239320.099 5.872104869e-13 0.01187856148 0 0 0 0 0 0 0 0 0 0 0 0 6.274543364e-16 6.458938333e-05 8.72104382e-18 0 0 1.602620948e-09 0 0 1.130708388e-15 0 3.854135206e-10 0 0 4.034132312 1.011127564e-19 0.0004250986494 9.387796556e-10 0 0 0 0 0 0 24435.37664 0 2.271850659e-10 7.502977623e-15 0 0 0 0 2.127346833e-08 0 +0 42.42123744 0 0 0.07528628504 0 0 7.479314971e-12 2.327757859e-08 0 4.795761026e-16 0.0008431020081 0 591.8975014 0 0 0 0 0 0 155921.0566 0 0 14994.86096 3.381138348e-11 0 0.001127870754 5.016465926e-20 0.001604775309 0 0 3.373360066e-15 3.648557526e-06 0 0 25879.54507 0.138802806 1.771414021e-06 0 0 0 0 0 0 0 0 0 0 1.524246114e-06 2.006154146e-08 1050.531082 736188.2822 0 0.530736565 0 0 2.30141857e-18 0 586969.008 0 0.2271119807 0 0 0 0 0 0 8.175308486e-14 0 11690.44031 0 0 4.238849183e-22 0.05264899801 0 0 0 141054.5593 3.187195957e-06 2.223938192e-10 0 4.349403664e-11 1.716400838e-05 4.028349406e-09 3.521811576e-05 0.001100201337 0 0 6.955949783e-10 0.1214413082 0 42.07302608 0.1554396375 0 943.963948 0 7.552436314e-05 5.934083066e-14 0 5.62754929e-19 0 0 0 0 2.696637195e-05 35431.97423 17492.6873 0 7.478664923e-15 0 1340.718336 0 20.63612846 0 0 0 0 248706.0443 7.940326327e-10 0 0 0.6174831869 5.105637146e-11 0 0 8384.980409 1347161.487 0.003610854381 38750.48921 0 0 0 1734.11982 0.0007415416094 2.837363188e-11 8.097524525e-05 9.132352511e-17 1.125715992e-24 1.148395688e-06 6.675993569e-15 288258.7443 0 65141.78368 0 0 223.5169416 0 292.7693067 2.094600248e-08 0.0001525103956 1.153682377e-07 0.0008370583994 9.118619251e-16 0 0 6657.624096 0 0 10.09124938 0 2.092480941e-13 0 5.986433971e-18 0 0 0 0 0 0 0 3.273335159e-20 0 0 3.225388552e-21 0 0 2.579565293e-08 0 4.100824392e-07 0 0 159132.8016 0 0 0 0 0 1.700346706e-06 0 3419849.795 0 0 0 0 0 152147.6394 0 0 0 4779.488993 0 0 0.002650570136 1.240601486e-07 0 1551.322115 0 0 1.864160996e-13 0 0 0 0 0 0 4170.024857 0 1.761145917e-09 621.5294508 9963.205657 0 0 15141.08039 20.40492295 0 0 0.02832466626 0 0 0 0 0 0 129.2989921 0.01329552582 0 0 1.037848986e-29 0 0 0 0 1.055268154e-18 0 0 0 775851.7172 0 0 168401.1464 1.152815288e-12 0 0.01325225915 0 0 0 0 0 428.2739696 0 0 6.361548648e-18 0 0 978.0426604 0.002952131018 14792.4835 0 0 0 0 0 0 0 0 0 0 0 23.49503109 0 0 48145.62367 0 0 13391.7383 0 0 0 2.851222109e-12 0 0 1.181372623e-14 0 0 0 0.1853672689 0 0 0 0 +0 0 7.920378151e-12 0 0 0 0 2.52213252e-11 0 0 0 0 0 2.101343257e-09 0 0 0 1.714464057e-15 0 0 0 1161577.342 3.463823273 3.459637024e-09 0 0 0 0 0 0 0 0 0 0 0 0 1.86404414e-08 3.212933321e-26 0 9054.057749 0 0 0.1568686722 0 0 2.760055061e-17 0 0 0 118.4175793 9.011131328e-07 0 0 1.279717322e-08 0 0 0 0 72896.24143 0 0 0 6.424252221e-07 0 0 0 0 0 0.0001650432176 0 7.471833456e-05 0 0 7.552002809e-13 0 3.543145158e-10 2.813067761e-19 8.837254509e-05 0 0 0 0 0 233.529986 2.467074554e-11 1.977666068e-05 0 0 10.03869862 0 0 0 7.054556724e-18 0 1.355067593e-06 0 93.29872607 0 0 1246755.835 0 1.046398629e-11 6242.405951 0 2.185154503e-08 75462.066 0.004016765715 0 2.955582477e-21 0 0 3.638139468e-07 0 0 0 0 0 0 0 0.3124802346 0 0 4.804619047e-13 0 0 0 0 134.3065239 24448.11781 61.42310333 2.66249655e-08 9.021499305e-12 0 2863.190644 1.481870145e-13 0 1.71161534e-20 2.969121515e-18 0 0 3408793.463 0 4.453894107 0 2.071608683e-09 6.204535722e-10 0 0 3.533238791e-31 3.892641574e-13 5.590637126e-24 53833.129 1.003879893e-12 0 0 0 0.001094641584 2.537419901e-05 0 0 0 134513.4714 403623.2436 0 2.161988898 0 0 0 9.70709291e-12 3.508435986e-18 5243.502584 37097.40909 0 304.0121926 1.385951685e-20 0.02791962999 1435560.014 0 10958.8142 0 0 49484.81165 208227.7223 0 0 0 129.4580713 19384.18947 0.007848501829 0 3.57708958e-18 0 3.298905612e-14 0 0 0 0.0153484662 49531.06562 132150.908 0.0006346641686 0 0 0 0 1.454087229e-17 0 0 0 0 20063.58798 0 3.814812514e-09 0 4.771258595e-12 0 2.076588392e-08 4.917005105 9.038165632e-23 0 0.001545852224 5.081162479e-09 6.283058934e-07 0 0 0 2.9062336 0 1.711873416e-10 0 0 0 0 0 0.006660033346 0 0 0 4.446653389e-11 14657.95203 0 0 1.094740831e-15 0 0 0 1.791960125e-09 426475.9646 0.04442693259 0 2.095896698e-09 0 0 0 1.874216692e-10 0 196.4231249 2.272864675e-13 2.118765475e-12 0 1803486.332 0 0 0.2095411986 0 0 0 0 0 1855.770594 469282.6645 0 0 0 0 0.01163465469 0 0 0 0 0 0 5.913247161 7.705667256e-15 1881.434955 1.533955224e-16 1.092790544e-05 1.955615558e-18 4.06121225e-13 0 0 0 0 0 0 0 0 0 0 7.649343219 0 +0 69463.51272 8.57491516e-17 3.728112768e-15 0 0 0 0 0.001368481974 2020.804897 0 0 0 0 888582.2228 0 6350.294406 6.031133372e-14 0 0 0 0 1.516366123e-13 1.443473758e-06 1.422395448e-10 0 0 4.743060202e-09 0 0 52.78691673 0 0 0 0 3.473578618e-05 4.734194387e-12 0 0 3.218789628e-12 1.823975828e-15 0 3.739291464e-18 4061879.642 0 0 0 0.08446059466 0 2.582048143e-40 0 0 0 0 3.391608718e-15 0 5.057976167e-05 0 1.409731854e-06 0 0 6961.811501 5.357448954e-10 0 0 0 0 2.013782762e-10 0 731.3148088 0 1.48043929e-09 0.2248633254 0 1.888717991e-11 16.72668634 0 0 0 0 0 0 0 0 1.728577532e-07 0 0 174.0501668 1.031050633e-09 0 0.002836540651 8852.360171 2.192831167 3847.729398 0 0 10744.98281 0 0 0.06980912391 78.13080039 0 0 9.822911495e-05 0 2.401669817e-08 1.747337833e-24 11.5949596 0 0 5.556830442e-22 0 252095.6558 5.155949443e-10 237.2087221 0 0 0 3.326090912e-05 0 0.5163446543 9.413331005e-27 0.2896428102 0 4.427680214e-13 0.005585345889 0 178534.6931 5181599.097 0.0003956113091 0 0 1.984640631e-17 0 0 1.886326714e-22 0 3.656251219e-15 0 1.253395125e-13 0 0 0 1.774080228e-11 489787.3295 0.1839881074 4.727729884e-17 0 0 0 0.4175697565 0 584.1209847 3.093830922e-05 413467.0463 622638.2867 0 0 0 0 0 0.0007936871743 6.338993227e-16 1.153712325e-06 0 0 75996.72323 0 7.893944649e-07 0 374388.5248 0 0 165052.3222 0 0.4965881361 1.158350881e-11 21.22603534 1517.961092 0 0 0.0001355832009 0 3.531464972e-14 1.405352229e-13 1.485748548e-09 0 2.393433343e-13 1.393625753e-16 1.607985727e-07 39.89664523 0 8.99121752e-13 1.992122489e-24 1.676626966e-05 0 1.429300033e-13 0 0 2.113855988e-09 368684.4926 4723.348017 2.299804343e-08 0.05323831338 0 0.0820168622 0 0 0 22318.33114 1.547169146e-11 0 0 6.403586063e-16 0 0 0.02815330544 1.485044525e-07 0 0 0 0 0 0 0 4189.051741 0 0 9.407193132e-11 0 4035060.502 0.2513986573 3155.052865 0 116159.3661 0 0 0 0 0 0 0 261136.0929 0 0 2.813871958e-18 0 0 3.165559811e-19 0 9.215324664e-15 0 0 0 0 2.842530672e-14 0 0 0.01051545132 0 0.3439409697 0 0 0 0 0 4.16198568e-11 0 2.223352443e-23 0 3810439.403 4.000688921e-11 2.585726896e-06 0 0 0 5380.390986 0 0 0 1.723138962e-24 0.05135854836 0 0 0.023758957 0 0 0 1290766.477 0 0 0 2.169009064e-14 0 1.912905838e-10 0 0 0 0 0.09048871298 +0 0 0 28.9246693 0 1.397870268e-06 0 1.471037586e-27 658529.354 2.743152359e-09 0 196630.6814 0.1721416655 0 0 0 8.306130711e-05 0 0 6.835337497e-13 0 0 0 0 0 0 0 0 0 0 2248578.202 4.302907312e-09 4.120448371e-08 676101.7723 0.004224653613 0 0 1156896.572 0 16240.39125 0 7.71558387e-20 616273.8761 110486.6538 0 0 0 0 0 0 0 0 0 0 0 2.278971216 0 0 0 0 0 6.409066352e-09 1.020815394e-10 0 0 0 0 20907.65406 1.573990278e-30 3.313498256e-16 0 0.0001512892509 0 3.383330677e-05 0 0 0 0 0.0002856231026 2.198434302e-06 0 0 0 0 0 3.328096251e-10 147361.1039 0 0 9.864377398e-18 0 2388.988394 6.960736015e-07 0 1.045992271e-13 4.864822211e-08 3663.740692 3.340769329e-15 0.07220461206 0.001789900722 0.827923053 0 5.673493031e-27 0 1.480390188e-23 88.09578773 0 0 0 0.01798710255 0 0 0.01351233827 0 0 0.006013286213 0 373699.3529 0 4.249066917e-09 0 0 61.46708476 769843.6269 0 8.541470436e-05 0.003486385966 0 0 0 683.9102793 0 6.229826001e-30 0 1.595800647e-07 4.336810931e-08 4.919414872e-18 1.728815903e-19 0 0 0.006251450713 0 9549.960963 27477.377 4.357184392e-06 0 0.1296717086 0 0 3.859226019e-08 0.378360219 1.321395889e-12 7036379.544 0 0 8.526712048e-09 7.431743842e-25 0 0 0 0 0 0 6.948711983 0 0 2.075945364e-05 0 0 0 1.77794859e-26 0 0 0 1.955471209e-05 5.030499707e-11 0.0001260667961 0 2348.209366 1.373364064e-06 32.7764266 0 0 4.476307107e-08 7.649546847e-09 0 95696.00051 0 690202.3369 0.0003083481461 0 0 0 0 0 0 0 0 0 637005.2217 0 0 0 2.166507449 0.02654697744 0 79.36424607 0 4.625104654e-07 0 4.098382371e-11 0 0 0 0.0001379976581 0 11.33771828 0 3.032382865e-07 0 0 7.750403528e-14 8.572051927e-10 4.916720608 0 0 0 8.207087844e-18 0 0 0 0.01144042001 0 0 1.479962538e-05 0 0 0 0 6169.145015 0 0 0 0 0 0 0 0 325613.7863 0 0 0 0 4.291230777e-05 0.01061213952 0 0 0.005096499322 573377.638 0 0.1703383442 0.001595184232 0 0 2.33135285e-05 0 0 0 0 277.0806713 0 0 0 10286.17512 3.317597335e-13 5.050106262e-27 0 0 46587.41159 0 0 0 0 3.647253492e-23 0 0 0 0.1187957765 0 0 0 0 0 0.008060795274 0 0 0 0 0 0 +1.234847735e-12 0 0 0.0009763246679 0 0 3.939755253e-19 0 0 0 0 0 0 1.545621203e-10 6.486113532e-10 3.787958145e-15 0 1.557410135e-11 0 0 6.044859008e-12 167278.2833 0 1.04644712e-07 0.05910290449 0 0 0.003590925128 8.121417957e-07 0 0 0 0 1.762936204e-18 1.225700062e-07 4.618524804e-12 1.375717442e-22 0 0 2.945134918e-15 1.151829409e-09 0 1.453871025e-07 0 0 1.514740234 0 0 0 0 0 0 0 0.0004452865475 5.479149302e-06 0 4981.077806 0 0.0002259538291 0 29.91470045 68.44466832 3.234988153e-13 0.4214057082 0 0 0 0.00017035987 2.569843428e-13 0 0 0 0 0.0005478272319 0 0 3.773725338e-11 4182.469642 0 1.746630888e-13 0 9.05278048e-12 21.58530749 0 4885.804071 0 0 0 0.06331686347 0 0 0.0002894225133 0.000146841077 0 0.0001982204912 1.28074806 0 14.12804682 0 0 0 1271.598039 0.3632800642 9.549925372e-10 0 0 0 0 0.8481861984 5.215449798e-25 0 0 0 0 0 0 0 0 0.5364987282 4.538963371e-13 0 1.056428922e-12 3.777482545 1.126171442e-05 0 4.554574308e-05 0 1.210913018e-24 0 214526.9068 1.079215691e-09 0 0 0 1.220211071e-20 0 0 2.502364385e-13 1.279197039e-05 1.889901881e-06 153.0000737 117894.5129 0 2.071440278e-05 3.418625789e-05 0 0 0 0.01182573663 450.3409186 1.58569226e-18 0 2.147129534e-08 0 0.07020154009 46160.18797 2517.40208 0.4586560392 6189.440249 6.261342742e-10 0 0 0 65.92393746 0 0 1.716610548e-25 0 117.8926517 21.70726701 0 0 8.228134731e-20 7288.52876 11862.22765 6.833601927 1.064713262e-11 0 0.04434640584 2.454735439e-11 1.39092967e-16 4.165575431e-10 1.912320045e-06 3.405551965e-20 4.604398136e-06 18005.91107 0 5.643592441e-09 0 1.926213481 0 1.078702878e-10 0 35716.58237 0 1.674391824e-12 0 4.234935397e-22 8.156933914e-16 0.1484417133 2.09314959e-08 1.442485589e-08 0 1.051437421e-10 0 0 0.002272042724 1.14288135e-28 0 5240.878921 0 0 1365.143466 8.230932979 487.4214355 0 0 0 0.09342307603 3.428679394e-20 1.094340798e-09 0.004548206764 0 0.01023243295 0 0 0 0 2.264018331e-19 0 0 0 1.437120737e-08 0 0 0 4840.072741 0 0 0 0 0 2.018520811e-11 0 0 0 0 0 0 0 7.706887785e-12 0 0 0 0 1.917753891 0 0 0 0 69.56169127 4.069243598e-13 0 0 8.440374936e-16 0 0 0 0 0 0 0 0 1.628871347e-07 0 0.06071080834 2.835958445e-10 0 0 0 0 0 0 0 0 5079.765695 0 0 406256.5731 1.217516966e-11 0 11687.87719 0 0 0 0 0 0 0 60.86687533 +0 0 0 9.153762105e-18 5.01196916e-12 4.986244189e-06 0 0 0 2.689267958e-17 0.006868073804 0 0 0 0 157469.0251 0 0 0 0 0 0 0.03697344723 2.241215945e-17 0 0 0 0 4.018253923e-16 0 0 0 0 0 0 0 0 551.2682152 158478.8784 0 0 0 0 0 0.001787341301 0 2.444308231e-06 0.0719852613 2293545.64 6.38542352e-17 0 0 3.196938304e-21 1.268460441e-12 0 0 3.275636352e-17 0 0 0 0 6.392916006e-22 0 0 1384731.498 0 0.005444602626 4.163142946e-12 0 0 0 0 0 2879.515412 2.075991837e-13 4.139429117e-11 0 0 0 3.972905061e-08 1.232653733e-20 0 7.173707045e-19 279284.9797 0 0 0 0 3.429726282e-08 0 2.870701383e-09 0 0 1.516448002e-12 0 0 2.005722581e-12 4.74252804e-05 0 0 29.67424202 0 0 0.03945251956 0 0 0 0 0 2.236701693e-13 0 7.296207416e-10 0 0 5.360402443e-12 2.512115853e-06 163.5156671 2.707724175e-09 2.054468633e-17 6.778774174e-14 1169.620635 0.0164422051 9976.694231 4.772733819e-09 0 0 8.183872894e-11 0.01578466979 0 4.657486017e-29 0 0.0001362202998 7.333340326e-11 0 0 6068.609338 0 3.715163838e-05 2025024.746 0 16516.79819 0 0 6.189638313e-10 0 102783.5971 0 0 0 0 0 0 0 8.488711703e-07 0 1.109210005e-07 0 0 0 0.00122429644 3.674784402e-19 2.356228178e-13 0 189.4499193 0 0 3.041877099e-11 1.563214059e-08 0 4.745412755 0.002673528682 0 8768.013932 9.768109843 0 0 0 0 0 0 0 0.04682945705 0 0 1.216771357e-12 41981.88971 501712.1317 0 0 8.79548694e-05 0 54799.61051 0 20590.70509 0 28.61939527 0 1.32074932e-12 5.018016564e-14 0.15516588 5.260807789 0 154823.7146 0.0008267461293 0 1.207621527e-05 0.003947327546 0 14807.60721 0 2722954.305 0.09497447299 0 2.263935953e-05 0 0 0 0 9.631712842e-12 0 0 0 0 9.791672327e-09 0.0004776329359 0 4.99367993e-16 0 0 0 0 0.0001041451926 0 0 3.01901732e-07 0 0.0007429215392 0 0 7.486262107e-20 0 0 0 0 0 0 0 0 0 0 0 0 1.000928753e-11 7.284903243e-16 0 105455.3675 45.63779739 3.223017634e-20 466.6951135 8.605496197e-21 0 0 6616247.082 37046.29168 793.6476094 0 3.163472952e-10 0 0 0 2.207194805e-08 0 0 0 8.715427008e-08 0 0 0 0 0 0 0 0 0 0 1.476624131e-18 0 0.1925546187 0 0 0 64933.61382 23.13408192 0 6.216616973e-14 0 0 0 0 0 +0 0 5.948381428e-15 0 0 193481.9909 7.444903278e-25 0 0 0 0 0 0 0 0 0 9.88256361e-10 0 0 4.587748364e-13 0.0001377911999 0 0.0003682390537 3.097422763e-11 0 191.522707 0 0 0.02792761959 0 0 1.218643505e-19 8390.055368 2.892464452 0 0.02271959629 0 2.815808652e-16 0 0 0 0 0 0 219.259379 0 241321.3481 0 0 0 0 0 0.001040773564 0 6.419131436e-13 0 9.287229198e-15 0 0 0 0 23682.89619 0.01533958816 0.6301639188 0 0 0 0 0 0 0 0 794.5773848 0 8.360176207e-14 0 0 3.100229271e-08 0.00490435861 236.6834523 3.981541879e-05 291459.4097 0 0 7.502521988e-15 7.817822104e-28 2.384591516e-06 0 469610.3139 969214.0306 0 7.606459685e-12 1.326481599e-09 0 8.152646984e-14 0.1279263604 1.0534846e-06 0 0 0 7.711552109e-05 0 0 0 0 0 0.05076841631 2.766925164e-13 158676.1978 0 0.004462385482 7.417916145e-08 3.037453429e-13 0 0 2.107906253e-08 0 0 5.414866993e-05 0 0.0001073928636 0 0 0 0 1.254427958e-10 2362140.14 0 0.6722497414 186276.1752 0 0 0 0 1.424417179e-19 0 3.316208203e-08 0 326515.322 158.990078 0 0 0 0 0 1.182709861e-09 2.202152795e-11 1.605066704e-06 0 10422.98317 0 0 0 12.28006914 0 0 0 1922.225605 0 0 2.70123315e-12 0 2.011944543e-07 0 0 0 0 0.3506278542 0 1.32962231e-12 0.0003036118037 1.46059381e-09 0 0.008923075695 131475.6098 1.591319411e-19 0 0 0 7.355749919e-06 0 1.249714703e-06 4.583776831e-05 0 0 0 0.7991356388 0 2.510882115e-15 0 218548.9959 2.247999144e-14 49066.31005 3.718023875e-10 0 0 0 8.309875135e-06 0 0.6760134268 0 17941.6237 3.830685493e-12 0 0 23725.17766 0 0 140.176364 1.114972755e-16 3.337801844e-10 0.05358541133 4.654179324e-10 37863.13602 0 0 0 0 1.708665075e-13 2.89489712e-15 0 0 1262.531262 0 0 3.905735552e-12 0 0 1.796793249e-20 67.73589881 0 0 0 0.01382957738 2.807322824e-06 0 0 0 0 0 0 0 0 0 0 0 4.544989278e-14 0 673.6993809 0 0 0 0 0 0 0 0 1.164065734e-09 258249.0347 0 6.956748012e-23 9.710057981e-06 0.05944705449 0 4.814254995e-09 0 0.02049322311 7.063772457 0 6.621096925e-19 1.425570772e-14 2.519770419e-07 0 0 0 1.471225134e-18 0 0 0 0 0 0 0 0 0 0 0 0 0.007728736187 0 4395.267815 0 0 0 0 0 0 0 0 0 +0 0 0 7.067369905e-07 0 0 0 4.201020071e-20 0 0 0 0 0 0 0 0 0 66662.56896 0 0 4.718084034e-11 0.0005175934509 0 1.629797204e-19 1.923950418e-05 0 0 199592.5703 0 0 0 0 0 0 0 0 0 0 0 0 0 203.3160427 0 44.48305194 29.18357333 0 0 2.910757883e-13 0 0 0 0.08049860837 0 1.206801724e-08 2.746540318e-11 3.236832685e-07 1.385267506e-07 0.005947127611 0 0 9758.406659 0 0 0 73234.23854 0 0 27897.37025 56275.61956 0 0 0 0 1539795.7 0 1101052.463 0 0 0 0 0 0 0 915.237676 17219.88013 4.518400308e-07 0 0 0 0 1.878465773e-16 0 4.235263238e-11 0.0003932761053 1.162739604e-12 0.001900750858 0 0 0 0 1.421006296e-12 0 0 0 0 1.10812902e-18 1049271.733 0 0.8005587658 5.323693477e-17 182239.1785 157.0264489 18082.03064 4.397698651e-19 0 1.919439499 0.0005238768279 0 0.07097494214 0 0 0 9.884522039e-08 4637.957847 0 0 0.001617741905 0 8.088193567e-16 359.310546 0 0 0 0 0.04107186034 3.580729958e-20 2056.953743 0 0 0.0001148040067 46.04793143 0 0.07144613341 0 0 160.2550822 0 3.897543557e-10 45401.17981 1.132084412e-07 0.9002982399 0 0 354.7618134 354.5795155 2.038623391e-06 0 0.0001179749141 0 0.003385965673 0 0 0 0 1.598636935e-12 0 3.045067283e-29 0 3.044106148 0 0 1.289591772e-07 0 0 0 1.068000679e-12 2.845775196e-10 0 56870.57572 0 74.4566895 1.817135792e-09 111.1988363 1.463487648e-21 0 0.001309568743 161509.1713 0 0 2.029982048e-11 0 0 0 0 5.079363136e-06 0 1.41878997e-25 78.20286745 1.179133101e-11 0 4541148.949 0 0 0 0 0 0 0 0.06817537502 0 4.505072414e-06 0 2.913526007e-11 0 9.356504108e-16 1.119320216e-10 0 2.728563525e-07 0 0 0 1.796709635e-09 57.61860276 9.669140192e-05 0 5.588473983e-11 0.0001936360647 105765.0156 0 0 6.926165327 0 3.88853883e-24 0 0.0002830049805 0 0 0 0 0 9.448977856e-14 0 3.33320122e-17 228.5595659 0 0 3.489495755e-10 0 0 442.5150719 828.1874476 0 1.228755019e-07 5.697081462e-18 0.1667179668 0 0 0 0 0 0 0 0 0 7.255619301e-06 0 0 4.432439187e-06 0.003304328376 0 6729.654602 9.006005481e-15 0 0.0008603512193 0 0 0 0 41.78258203 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001096240845 0 1828.480739 0 1.363529594e-12 0 0 0 +4.532450882e-08 0 327327.7723 7.410955639 146301.5843 0 0 0 0 84.89170783 0 0 0 15186.66126 0 0 7580.325981 0 1.615656128e-11 0 0 1.148537798e-05 0.1279284292 0 0 67772.14097 1.105172814e-10 0 0 5.340481557e-10 0 0 0 12.58993908 23.69684712 0 9.972609439e-14 0 7.421160119e-15 0 0 3841.441671 0 0 1.100984574e-12 737.3491394 0 0 0 0 0 0 0 0 0 0 2.188069554e-12 0 0 5.998631366e-22 1.251754207 1.300121181e-06 1.608747085e-15 2271.29037 2.715392449e-12 0 0 0 0 3.211509993e-09 0.01107481656 0 0 0 0 0 1.174556997e-08 0 3.379871948e-12 0 0.08010081449 0 0 5.576084716e-09 0 6.225874808e-09 6.576195153e-13 0 4.50225267e-09 0 0 2528059.969 0 3.746244997e-10 1.34392621e-11 0 0 0 0 0 0 5.825023152e-16 0 677899.4323 26012.12438 0 1.702344678 0.2008261188 0 2.032597104e-25 7.177392563e-25 1.72950989e-08 0 0 20943.72561 3.064564816 3.783172876e-22 0.04035238971 0 0.0002905709463 1147.243652 1.320444781e-11 0 0 7.546627997e-26 0 33220.69487 0.4298313157 0 3166884.183 0 8.091083282e-13 0 0.0001335907913 0 4.024055543e-11 0 0 17451.95932 0 3.097105807e-14 3.370942832e-26 2.379118702e-21 52.82150646 0 3.076470501e-23 0 0 1.592047273e-10 62.43882767 0 4.597920047e-06 0.0006781235227 8.591861296e-24 15.59078597 0 0 0 0 2.729916403e-11 0 0 2.078230836 4879.2115 953911.828 2.410042809e-12 2015.304028 0 0 0 0.0003533922304 0 0 0.0002294628984 0 0 8.845258628e-07 13.86562905 1.744209679e-08 0.006729312679 3.183806561e-07 1.02767326e-20 5.372045595e-05 0.003760519004 0 0 7.744756211e-09 0 5.746457623e-05 1.464064861e-13 0.7828055897 0 1.821920867e-09 0 0 0 1.935882267e-18 0 0 74140.51322 291397.1305 0.02009428534 0 30.96523449 0 0 0 0 0 7.64912102e-06 0 0 29606.49793 0 0.003132918259 0 0 0 0 0 0 0 0 0 0.4678624236 2700.336869 0 0 0 71511.14134 0 0 0 0 0 0 0 0 1.427813541e-11 0 4.109579694e-13 0 2.058951591e-09 0 0 0 2.192168287e-21 0 128.7501646 3.762656414e-14 0 3.038105565e-11 0 0 0 0 0 0 0 2.622340333e-08 161.172062 0 0 0 0 0 0 8.399767688e-06 4.454875585e-29 0 0 0 1.414853524 0 1581943.573 2.768134997e-18 0 0 0 0 0 0 5.468724447e-13 1.296711368e-08 0 0 0 0 0 0 131468.6046 0 0 1.006970437 0 5.304709218e-13 0 2.082611278e-05 0.0001948602714 0 +0 0.0003104609451 0 0 0 0 0 2.849842492e-13 0 7.103303972 0 1.395246192e-16 1074965.254 0.9284264054 0 0 0 0 1.459725799e-12 1.343465362e-09 0 0 0 0 0 4.399645498e-20 0 2.802112912e-08 1.069714462e-16 1.015510267e-10 0 7.618542726e-05 2.22958585e-08 0 0 915962.1199 0 1.234564218e-06 0 0.08990328611 1.276449569e-10 0 1.58741403e-14 0 1.687738365e-17 1396075.608 0 7.355010057e-13 0 0 0 0 0 0 3.563108691e-09 8.161769641e-13 0 0 0 0 1.688513385e-06 0.06368910196 0 0 0 0 2.470175634e-07 0 0 1060.726387 0 0 0 65029.16577 556190.4613 0 0 766.4960122 0 2776.058337 0 0.001012080492 2.53104443e-06 1.372157197e-05 0 0.0323421196 183.5347232 418890.3121 5349.476653 1747.080029 0 0 0 91309.16765 3.451787779e-13 0 0.004752480256 5.236190917e-14 3.893369015e-16 8.403723723e-07 2.203755317e-14 4.223098507e-11 0 10.39426046 1159.466268 3.5754262e-07 2.940962584 0 1.414627612e-05 0 0 0 2.708942549e-16 0 0 0.03549199307 15127.83992 0.005725377702 0.0001450487682 0.001282273131 0 9.110019729e-13 0 0 0 0 1594.330959 7677.963887 5238.224486 3.566783375e-17 0.0009446472544 0 1.125048354e-05 0 9.357627932e-07 0 0.01932686493 7.890912954e-23 0.1893600383 0 2.857226294e-06 1219388.759 0 0 8.381531647e-17 0 4198.754888 0 207948.4581 0.0001847626538 0 4.595848054e-08 1.893168913e-08 1.014712103e-09 0.000247032608 0 21963.43996 0 0 0 0 0 0 2.054674505 1.143963517e-07 0 6.780124957e-08 0.0007396605106 0 0 0 0 29924.46381 0 6.87824419e-16 0 0 18.73327317 6.803704407e-20 6.079407532e-08 9.471364918e-05 9168.504065 0 62.53904411 0 0.002288842989 0 0 1.53397677e-19 16814.54996 0 0 1344.49077 2.80197265e-13 9.226206548e-05 9.179036234e-08 0 2.912512263e-12 7.46485469e-10 0 0 0.0006232282199 2.673118315e-09 17.55455152 6.90675569e-11 0 3.805712546e-22 6.368521652e-10 0 0 0 0 0 3.08889842e-20 0 1.552140246e-22 0 0 0 0 0 0 1.619725838e-09 0 5932.04535 0 0 0 1.500845455e-10 189868.3051 0 9.805411666e-19 0 0 5.88309016e-15 0.03938457596 0 4.302951608e-12 0 0 0 0 0 0 0 0 0 0 1.051116572e-13 0 80749.45191 0 0.1388772758 602.3711412 0 0 0 0 7053.518829 4330.626346 0 0 0 2.135612598e-18 1.840782998e-06 0 0 0.05435598059 4.472859558e-13 0 0 0 8.964155567e-15 0 0 0 0 7.316377148e-17 6.271974242e-08 2.039297308e-11 0 0 0 0 0 44806.53987 0 0 0 0 0 0 0 0 0 0 50955.45662 0 0 0 +0 0 0 2.398323999e-09 0 0 0.002260511144 0 0 0 42839.26501 0 0 0 0 0 0 1.118259374e-07 0 0 0 0 0 0 4.393549217 0 9.763138015e-16 0 697.0868815 513.0092116 0 107.945153 0 0 0 0 0 0 0 5.885986003e-26 0 0 2.206054978e-15 1.911077781e-09 0 1502837.12 2.259633284 0 1.521969254e-11 0.001833965054 0.003341298247 0 0 0 4.803354726e-17 1.088423933e-14 2.337191423e-08 0 2840736.925 1.24678073e-12 0 3174377.139 0.01029769071 0 0 0 4.131505265e-22 3.545652544e-10 0 0 1.101907635e-08 0 0 0 0 0 4.650860387e-18 0 0 0 0 0 1.131774336e-07 0 0 1.022993015e-07 1.180672154e-19 0 0 7.406156958e-05 73.13080843 0 0.2206585973 0 1.069907605e-18 0 1.171429317e-06 26350.61013 4.737424053e-16 0 0 6.819521593e-14 0.05669477104 0 0.002096816157 5.021047566e-10 0 0 0.008354157408 0 2.512807134e-12 0 0 1.194084812e-21 0.001711928002 0 0 3.166571049e-18 0 3.057484626e-20 0.006350238654 0 0 0 0 1.998073833e-14 0 0 0 0 3.050397066e-07 263718.622 0 0 0 2.519277267e-26 4.116892131e-12 5.494658668e-12 0 2.781686175e-08 0 1583579.456 0.03573248785 4.89294661e-16 9.200954313e-07 2.033526143e-06 0.01045945533 0 0 3.720146475e-07 2277583.649 0.001129986579 8.12633061e-11 0 5.02250138e-30 0 19.95590661 4.199595174e-16 766.8084946 0 0 6.359476133 0 0 0 0 14171.5321 0 0 1092.733719 1.587563581e-10 0 0.0006877152869 0 0 0 3.586691048e-18 9.196691466 0.001268002867 4.83668763e-11 0 0 0 0 43339.65929 0 0 138075.8195 0 4.292118027e-14 0 0 0 0 0 3.519374533e-06 6078.782296 1.781914989e-24 0 19685.6237 0.461914133 0 4.321006367e-18 1.100552044e-08 1.597278744e-22 293011.6415 0 2416623.972 0.004162154317 2.29701931e-07 9.604757035e-09 1482425.311 0 3.397961368e-06 0 3.767554136e-09 0.03329872258 6.735065035e-16 0 4.997056083e-35 0 0 1076.09259 7.100231884 0 1.627986654e-09 0 0 0 0 0 0 1.641026374e-12 0 4.19049793e-10 0 0 0 0 9.278288405e-18 3.01647692 0 0 0 0 0 0 0 0 3.368364976e-15 8.86610434e-13 0 3.398025037e-05 1.517790715e-13 0 0 356771.6061 0 0 80822.3726 2.322199753 3.23444235e-05 0.0006702328224 13.81474496 6.093975651e-09 0 352.7138667 0 0 0 0 45.38260472 56.58553177 0 0 5.268759464e-07 0 0 0 0 0 0 0 6.812395847e-15 0 0 0 1.064616467e-06 0 0 0.01259497212 0 11389.58122 0 0 0 0 0 0 6.370778286e-13 +0 0.003730677377 0 0 0.0004650464113 0 0 0 0 0 0 0 0 0 0 0 0 0 24.4758955 0 0.7707425766 1.400196404e-15 0 0 0 0 0 0 0.007178664025 0 0.02218634154 0 2.402172149e-07 0 0 0 0 0.2329824154 0 59801.66529 20510.13702 5.708318406e-09 0 0 1780.023185 0 0 1.081824528 0 0 0 2.491539857e-22 1.812718084e-08 0 5.967059497e-10 0.000763190622 32813.38745 252540.5739 0 7.241397149e-07 1.343484652e-08 0 3.568517257e-11 0 0 0 1.081904963e-08 0.0002491902221 7.913673695e-19 0 0 0 0 0 0 0 0 2920.584951 0.000396156385 7.617910042e-16 25.83968287 0 0 2095.775455 0 0 0.002870575731 0 1.248695932 6.625360786e-07 0 9.093871996e-16 7.565744441 0 0 6.041308326e-10 0 0 0 0 0 0 0 0 0 0 0 154156.7524 0 238563.0516 99.09544606 1.40651952e-15 11928.304 0 0.00173456356 1.365288872e-10 1.395324486e-28 80078.05881 0 0 5.947931321e-33 0.007264092976 0 0 6.390026441e-15 3405.595354 0 20165.14277 2.153288547e-09 0 2.609503733e-06 5.628926077e-06 0 4.929867185e-08 816.0508656 1050.17915 0 2.135558535e-07 2500.584123 1.14661842e-12 3.518928811e-06 0 0 0 0 0 1.17537853e-05 458.2090664 0 10.84827837 0 0 0 0 0.03530821189 1.376204188e-32 7.724134085e-08 3.700959242e-06 0 0 0 1.108449609 443533.3074 1.043322967e-08 9.503822741e-27 0 0 2.816328242e-06 46022.63843 384.7106509 0 18815.53703 217.5918936 3.076822283e-14 1207.229184 0.7011278503 36342.27362 1.946936988e-12 0 4.451882495e-07 0 0 0 0 0 0 0 3.026092687e-19 0 1.240766345e-05 0 1050783.847 0 0 0 0 4.250365744e-14 0.007177880096 1.249824004e-09 0 0 1.676511273e-19 0 0.1775441561 0 5.867585912e-11 0 4.985385034e-24 2.023211839e-16 5.874424472e-06 0 0.01274119139 4.383471001 5.658110618e-12 470932.8312 2.067023914e-06 0 7187.183196 0 0 424.8004676 2.228350457 0 76853.23324 273.3915025 94.73487354 3.895592673e-09 0 0 0 0 17.6715953 0 0 0 0 0 0 0 0 2.562955421e-05 0 0 2510.9471 4736.417554 0 0 0 0 1021.684981 292080.9196 0 0 0 0 0 3.749270149 0 0 0 0 0 0 0 0 0.1604051379 0 0 5.681542862 0 0 0 6.422840246e-18 0 0 0 0 5.853805491e-27 0 336.4063729 0 0 0 0 0 0 0 0 0 0 0 0 0.0006709973718 0 0 0 0 5.111139367e-09 0 0 +0 1.237406852e-09 0 0 0 0 0 0 0 0 0 1.525382264e-10 0 0 6.969782845e-10 0 0.000385898208 0.005071326654 0 10.54664743 0 0 0 12607.4691 3.88223769e-14 0 0 0 4184686.829 0 0 0 2.959635775e-10 0 0 0 0 0 0 2.535025926e-06 0 0 0 0 8.12862667e-17 0 0 1.639764844e-12 34786.30905 1321.097544 0 0 0 5.031699824e-09 7.767195725e-12 4.496904328e-08 0 0 265137.692 6.712111286 434.0063838 0 0 0 0 171.525932 0 0 1.327504922e-11 0 772262.2518 0 0.008565704486 0.1892564592 0 0 1.275925848e-06 1.731375406e-15 0 151.4444774 0 0.004123511029 109091.8541 1.141689208e-15 0 0 0 0 1.066177244e-08 0 0 0 1.720095528e-07 0 0 0 0 0 0 0 0 0 1.83488326e-09 86.47272317 0 2.718274226e-09 0.000160400494 2.565003567e-14 1.26922279 0 19.95735535 6.540622798e-14 9.991987504e-08 43922.28462 0 0 0.0001219168757 9.940404553 1.273238089e-07 0.02066717211 0 0 0 1.854717061e-11 7.948089019e-05 0 0 9.542409789e-05 1.157305709e-15 612855.7642 4.751641523e-08 3.990485489e-10 8.486988336e-09 0 315418.8432 0 0.06503392846 4.736324415e-05 0 9014.280903 1593.452826 1.119020908e-13 111.4602469 0.0190226401 87091.26053 9.664082253e-09 4.939730668e-07 0 2973152.836 6.198676298e-24 0 0 0 2.158992951e-20 0 0 0 51065.23496 0 0 0.01018928036 2.405855263e-20 0 0 4.716935342e-11 0 0 4.113112059e-25 1.848419204e-12 0 0 0 2.799008657e-14 7.143447947e-19 0.002156165408 0.3680744837 258.0817399 0 0 8.292209128e-10 6.036212804e-05 28.00429852 128.7777989 0.0001665423709 1.053745093e-15 0 0 0 6.215677014e-06 0 0 369.1205882 0 0 660775.2041 0 0.001690151198 0 1.58119776e-06 0 5.850585678e-08 0 4.218257557e-05 2.047423061e-28 0 0 4.968961106e-05 0 2.190962288e-07 0 0 0 0 121.0605933 3.919083504e-14 0.006270702835 0 0.01867231211 1300562.769 0 0 0 416772.8753 0.007902353268 0 0 0 0 1.385338933e-05 0 0 0 0 1.202071564e-06 0 0 0 1.784735059e-07 0 0 0 0 5.541792806e-09 3.727606372e-11 0 0 0 3.149497207e-12 0 3.59780234 0 0 0 0 0 0.006569088631 0.3356499018 0 0 0 0 0 0 0 0 59.6560771 0.1109054944 0 0 0 0 0 0 0.0008595150413 0 0 0 0 0 0 0 2.120249887e-08 0 0 0 0.0001254962423 0 3.602934872e-16 0 0 0 5.433655664e-09 10.15453902 0 0 9.353126401e-23 0 0 4.622396928e-17 0 +0 0 0 0 0 0 4.617263196e-10 0 0.3971641456 0 0.002243951814 0 68048.59315 0 3.100871177e-12 2.073846368e-12 0 3.656448488e-06 28.75518388 0 0.05872351959 0 0 3.059288505e-08 1.479169574e-09 0 0 0 0 0 0 0 1.151465433e-14 0 0 0 0 0 0 0 0 0 0 5.679596435 0 0 4.673016239e-10 1.323031651e-13 3.298753015e-09 0.0029600029 0 0.4282263358 3.054327328 8.03875127e-13 0 0 0 1.522066217e-09 0 0 9.626246366e-08 0 0 0 0 0 2.453564339 6.68139245e-10 118652.1318 0 4.16343148e-07 1.423895951e-05 0 0 0 0 6618.885465 0 0 9018.447902 1.965498597e-12 39822.39222 0 0 0 0 0 35797.21662 0 3.021897859e-11 0 0 0 7.501690544e-17 58.21216302 5.268622818e-10 2.995296995e-13 0.1686413033 0.02455448104 0 0 1.369346819e-05 0 947567.9505 0 0 0 0 9.488308881 6.609819666e-10 1411905.089 0 0 0 5.138336153e-16 0 1.38066454e-10 0 0 4.341591195e-14 0 0.003534633659 0 2.163444627e-13 2.485543736e-09 2442.792252 0.002184088832 72.20267002 0.0004101644592 2318532.059 2696.718092 0 0 0 0 0 111168.3272 0.0007904854844 0 0 1.689542528e-13 3.593400259e-14 9.122510513e-09 1.554161858e-12 0 1.319804517e-12 0 0 2.312345394e-10 7.727801418e-13 688.9193244 4.146812474e-17 3.450175594e-21 0 0 0 6.0325649e-14 2.383332638e-05 1.356309932e-08 6.571592685e-05 1.967039992e-05 4.27089332e-05 0 0 7.253581755e-19 0 1.119764818e-06 0 7.210333198e-18 0 0 7.400687414e-16 0 0.06545899854 2.394830297e-08 0 1.020772292e-22 0 0 0.002209248955 0 0 1.851249274e-16 1.027034993e-07 0 0 1.882586112e-11 0 2.49503143e-19 0 0 1.29498525e-16 0 1537.41435 2.891230224e-15 4.95793264 0 0 0 0 0 0 0 0 0.00682118373 5156.784334 49621.19577 0 1.006052774e-06 0 0 3.706275094e-16 3.076764272e-16 0 0 0 0 660837.0991 0 7.430117558e-16 0 0 0 0 0.1636439517 0 0.01336431236 1.153075623e-06 0 2.97491132 0 0 485.6281612 0 0 0 3.099342903e-07 0 0 0 0 0 3.357679055e-08 0 0 0 0 3.111710723e-15 2.591687623e-12 2.106700247e-11 0 0 0 2.997646028e-21 0 0 0 0.0002755504696 3.937434272 0 0 0 0 0 4.375833063e-10 0.004523756184 0 0 205787.9091 0 0 0 644755.8996 0 0 0 0 0 0 0 0 4544.943387 0 0.0001026189166 0 832.5466255 7.744475503e-20 0 0 0 0 0 1.962011917e-15 1149.133743 0 0 0 0 1.300940523e-09 0 +0 0 0 13.13582562 99214.79964 0 0.001504458534 0 0 0 0 3.463031918e-07 0 0 667.0272948 5.986862046e-19 0 0 0 0 2.914198557e-13 1.442410372e-19 0 0.09483299437 0 5.996892307e-16 4.719461088e-23 0 0 0 0 0 5.218952285e-28 0 0.0001551855179 5.476190694e-09 0 0 0 16745.8348 0 6.536636958e-05 0 250.9050993 7.193415725e-07 0.0003740041814 0.2463328326 0 0 1263.230372 0 0 0 0 0 0 0 4.774718605e-16 91039.18002 1.470775454e-13 0 0 2.411824977e-11 0.0227926917 0 0 0 0 0 0 0 1.865408987e-10 0 0.0003343320615 1.729767714e-05 0 0 0 9.743312209e-06 1.89941369e-20 907.5693936 0 0 238400.5143 2.553462557e-05 0 0.000214554555 2647.268018 0 0 1.430507042e-15 0 0.009582412776 4.744738326e-13 0 0 3.498836154e-18 9.05496296e-15 7.030107923e-07 0 2123.24513 0.0007360640077 4127.079874 1.486909916e-14 0 126.5311819 0.01420421401 40.19319975 0 5.544180802e-20 35240.63571 0 0 9.759530921e-17 0 0 6.745765526e-27 1.189655717e-16 0 0 1005.279889 4.172740288e-08 0 0 3.395751663e-05 0 0 0 0 1.850734876e-14 8.819694087e-14 7.487435359e-10 0 0.001970675963 0 0 5.498882899e-13 0.08975564999 0 5.027195373e-09 9.399045673e-09 0.01910034518 0 0 2.753747798e-09 5.739683528e-19 1.722372767e-13 0 6.299706642 1.628184697e-13 128.0096899 0 0 3.344606772e-10 4.326681734e-11 1.32835692e-07 5.432708585e-12 0.0003123248805 6.160166958e-20 0 1.356014468e-19 2.657921797e-09 0 286686.7289 4.791571331e-08 0 0 0 699.1127022 0 0.0004753984578 0.2973276859 0 7.71688303e-09 0 0 0 3967.101605 0.9894497094 8.446252046e-06 0.001060829794 0 0 0 1.356270164e-17 2.685349164e-15 0 0.3143498161 0 0.8678855235 4.522402699e-10 0 0 0 0 0 2.333640423e-07 0 0 1.044881452e-17 0 2.508857245e-08 480.8530082 0 0 0 0 0 0 0.0003357516161 0 16.35892859 0 5.488537403e-17 133.1849068 0 0 5.046101709e-43 0 0.0003242788756 0 0 0 0 5.961255141e-18 0 1.619462224e-11 0 1812138.802 0 0 1.98358748e-10 7.062819974e-17 9077.164325 9.397045603e-08 1216.985167 0 3.612797881e-06 0 0 2.577902025e-09 0 2.292557664e-09 0 2.272269591e-06 0 0 0 0 9.856911731e-13 3.870962423e-07 1223.044037 0 803.2061714 3.337016405e-20 9.139588387 0 7.95675737e-11 6114.055407 0 1.950302673e-15 0 0 14.69744779 0 0 0.0002684859362 0 6.751020308e-12 2.998683685 0 0 1.470157946e-05 1.74690416e-14 0 0 0 2.99485546e-11 115773.1188 2.274631222e-17 0 0 0.02552233269 0 1.289211381e-22 0 0 0 9.060187737e-18 0 37574.17838 0 0.06945780011 0 4.895444118e-08 0 361398.905 2.108948471e-17 0 0 +0.03380845491 0 0 0 0 6.644953755 0.06250986568 0 0 0 4.751922057e-19 0 0 0 4.757028502e-20 0 0 827.9774004 1.14980282e-11 0 18.50419079 9.528404533e-25 0 0 0 2339521.607 4.434167669e-14 4.599053751e-11 0 109.3580025 2.328518784 0 0 0 0 0 0.03555848476 0 0 0 0 4.941939095e-08 1.874946477e-11 0 0 0 0 0 0 0 0.006984822989 0 1.224121663e-11 7.729732193e-13 0 0 116.8429022 307.2018336 1.093124481e-19 5.551968174e-05 0 2.67322563e-17 0 0 0 0 0 0 0 124343.7757 0 2.978568591e-05 0 0 0 83.05332337 0 0 0 0 0.002156592767 2.283613326e-19 0 0 0 194627.6566 9.539829612e-12 0 1.107682318 4.298735887e-09 2.055428708e-14 4.201623133e-14 0 43.40522606 1.335152793e-07 4.822160815e-10 1.224343135e-15 0 0 0 29789.01016 3.079409625 23954.4533 0 0 1.45221553e-13 2.124182512e-09 0 1.160770357e-10 2.721880006e-13 0 1.496640781e-06 0.2534155271 0.08430094705 0 430282.6867 1923790.427 4.512141554e-12 0 0 8.408428142e-06 2.462265091 340706.65 1.069697516e-08 0.000173805046 1.716874907e-05 0 0 11.62183928 0.0004003493058 0 0.0006025876073 3.500456137e-09 0 0 0 0 6.638263325e-19 0 0 1.174639777e-13 0 0 42720.44894 8.47539245e-07 0 0 0 0 1.331590024e-05 5.377343449e-17 645.5598305 2.017931107e-12 1.578639759e-12 1290.177581 12.03421715 0 0 0 0.4537755055 6.881611777e-05 0.08935813437 0 0 41003.02627 0 0 2.080807323 63.30198552 0 0 1.804815285e-23 0 0.02819320441 0 0.003228476466 0 478.9527618 2.160951362e-19 179568.9059 3.520013504 1.612800598e-05 0 14.48919305 1.358822398e-09 2.485585073e-09 164622.2299 0 0 4.972024729e-13 0 0 2.157538159e-23 6.680560302 7.708867946e-09 0 1.371740721e-07 7.872686633e-18 0 0 0 3.225119888e-05 1.215049833e-06 0 0.002147576349 0.4801458096 0 0 18.31795982 11821.12488 0 0.0008363766803 269.4656501 30.66153611 0.003604585276 0.3519644716 3.217363767e-08 0 841029.0995 1.02286191e-09 0 0 0 12295.03617 0 0 0.001614248803 0 0 0 0 0 0 0 0 0.001264643026 0 0 60391.03224 84.12687867 0 0 0 0 0 0 0 0 5.969428456e-05 0 0 0 0 0.004997353504 7.241195862e-10 0 0 2.746117432e-31 0 0 0 0 0 0 0 1.022590058 0 0 0 115.2400405 0 0 0 1.956331635e-13 0 1.460948919e-05 0.0001134029358 0 2.369855427e-06 0 0 0 0 21794.22243 0 0 0 0.000110539344 0 0 0 0.1418613462 0 0 0 0 0 0 0 0 +141.1135628 0 1.199807204e-09 0 3.671826536e-10 968.8436012 0 0 1.965650451e-07 0 0 0 2.420717724 0 1.116376456e-12 0 3.209716271e-10 0 0 0 0 0 2.567037168e-10 0 0 0 0 0 3543192.117 0 0 0 0 0 1.315701817e-10 0 0 0 1407694.314 0 6.490840528e-10 0 0 0 0 0 0 0 0.001723685608 0 743777.5261 0 3.943228743e-25 3.531746225e-25 2.99238293e-15 0.2634910965 0 0 0 0 6.717283545e-11 8.748321517 0 0 1.969212803 0.001915289707 0 0 0 0 0 431.9461562 8770.707155 0 0 0 0 0 0 214.7454727 201619.4413 3.303118139e-12 0 2.896119657e-21 0.1122678053 0 0 9.346845061e-22 4.052435175e-13 0 0 0 0.0008545297532 85.46777376 2.743474116e-13 0 98722.62892 7522.174362 11.69351587 0.0005289115186 7.340878765e-21 1.039957919 1.209974388e-13 9.229647454e-09 0 9354.728466 9.221203565e-11 29783.27245 0 1.400124505e-20 0 69.14934281 46.39754891 4062.540173 0 0 0 4.30302677e-15 0 0 2.633669831e-05 0.0031702991 0 0 1784.825132 1.975022503e-06 2.163308039e-05 0 13.78481314 0 0.6807891218 3.746667372e-06 0.08823932715 0 31798.40225 6.068892606e-10 0.3158431399 0.0008641407206 0 8.39951662e-08 0 3.142704437e-05 2.383732882e-08 0 0 0 0.02614230069 0 1.746621201e-17 103797.9773 126.8651805 43003.59041 0 3.646367934e-09 0 0 0.0001341664502 0 0 282504.3788 0 0 2.368411734e-13 3.970252171e-07 3.240079056e-10 1549.521956 2998.736222 1245653.452 39897.32911 0 2.859244974e-05 577.4389111 0 24981.09702 0 0 469.2537176 0 1.271172147e-19 298.8937523 0 3.972089961e-10 7.110289366e-13 1849.55487 0 0 0 4.841225891e-23 0 0 0 2.193159766e-05 0 0 0.008703361714 3.151762778e-14 0 1.978415026e-11 0 0 0.1151385446 0 9.945599473e-12 0 0 0.01034614801 2.388681959e-24 0 5.277096125e-12 0.001315795745 4.883588008e-14 0 0 2.390526391e-07 0 1.191233957e-10 42.63786755 0 0 0 0 0 0 0 7217.150134 0 0 0 800491.2301 1.179493131e-07 0 0 0 0.1770356023 1.267965041e-19 0 0 0 0 0 0 0 0 0 0 0 0.0007516999701 0 0 0 0 0 3.221936169e-06 2.363577844e-06 0 0 0 0 0 0 0.0001320541945 0 1.950301274e-13 1161.419526 9.677569234e-13 1.744682851e-08 4.152992157e-11 1.024909732e-12 3.112940047e-07 0 45993.05397 0 6528.726632 3.329294243e-24 963.7972652 0 6.939350897e-07 0 0 1.034155291e-13 0 0 0 0 0 0 0.000167776528 0 0 33369.16523 2.608021596e-07 0 0 0 0.4873107236 0 0 1.301728689e-32 2.452851592e-06 0 +0 817.9509459 0 0 0.001121707797 0 0 0 0 0 0 0 0 0 0 0 0 0 4.264426735e-19 4.639034435e-19 0 11.01927481 0.0001609083523 0 0.001835478199 0 0.004637809836 0 0 2.113533643e-09 0 0 0 0 0 0 0 0 0 0 1766111.977 0 1277251.69 7.42422188e-15 1.485646692e-16 0 0.01217418567 0 0 0 4.997448587 0 0.50242121 7.360212037e-17 0 0 0 8.297005931e-05 3.071060072e-06 0 0 0 0 3.489214139e-07 0 0 0 0 0.009554844327 0 5.044601638e-16 4.166404547e-06 9064.289744 0 0 320934.8878 0.0003469486726 124.4669641 1.15000115e-06 0 147062.9599 1.73270365e-08 0 338307.9251 8.900651292e-07 285.7122017 270695.0997 1.396047398e-30 0 2.41660027e-08 0 5537.334023 0 8.363601554 2.891358905e-05 0 112.8375417 0 232590.4047 0 0 2797.723674 0 0 0 0.05008287423 0 0 0 0.0006592539513 1.762038568e-06 7.182960703e-24 0 0 0 37346.71854 7.825866913 0 0 0 1.242929778e-13 0 0 0 0 0 5.797786841e-09 0 9.651538499e-08 1.415555942e-06 0 623.533032 0 8.741790974e-05 1149644.069 0 0 0 0 0.3994875639 1.248952077e-07 0 0 0 0 0.05522658564 0 0 0 0 0.0005109942459 44.61530127 0 38485.67554 0.01292320756 0 0 1.271029233e-05 4.389944344 0 0 0 1.02888425e-10 1166832.318 0 0.1516724571 0 7762.736751 0 4.312368107e-06 0 0 0 0 0 0 0 0 5.764966864e-11 0 0 0.0002014119337 0 0 0 1.304872628e-11 0 1.976011296e-17 0 0.0001212946533 51.83366748 0 0 0 2.688699911e-08 0 2.168268584e-07 0 0 0.01015186938 0 0 0 1.296666638 0 0 8.831921409e-07 0.08650220249 0 0 1326536.063 0 0.004372952199 0 0.0412766567 0 0 0 4.380875061e-13 0 0 5.342793329e-22 0 0 0 0 0 0 0 3.370922803e-10 6.920610697e-05 0 0 0 4.998764485e-24 0 0 0 0 2208.427221 0 0.007821631075 0.0003412135795 1.019811508e-06 0 7.855991735e-05 0 1.229337321e-17 0 2.56158507e-16 0 0.01865641783 0 8.747491845e-06 0.0009741191638 0.2526785798 0.07158612576 0 0 655700.1162 0 0 0.0002289011917 0 0 0.004918515231 0 8.288180555e-09 0 94625.04091 0 0 5.354725154e-13 0 0 0 0 0 0 0.2768588639 0 7.66162429e-12 15361.95824 0 0 0 0 0 0 8517.542884 0 0 1.349923131e-27 0 0 1768284.693 0 0 0 0 +4.551099364e-06 0 0 0 1339.440712 0 0 5480.534894 0 1.426017303e-20 8.009608821e-06 0 42620.83361 1.484566702e-11 6.338254207e-06 0 0 407496.3917 1.98677589e-11 4355619.412 0 0 0 0 1.042459985e-09 0 0 0 9.111850232e-08 0 6.847190546e-11 0 0.1151875249 0 0 0.002104314418 0 4.647379665e-15 73856.281 9.49464115e-18 0 0 2.624308561e-06 0 0 0 0 0 2.959024449e-15 0 0 0 109234.9499 0 0 7.691033606e-08 18.89579127 3.298197108e-08 0 7.559219593e-16 0 8.841014919e-05 69668.45033 8539.348119 0 0 1.890840683e-21 1058.332958 5.471238764e-17 92257.37626 9.962153268e-07 27407.7746 0 0 2.902064281e-08 1.498021449e-08 0 60045.01471 0 0.0005371782153 0 0 1.533343236e-10 3303.155232 0 0 73252.22366 0 1.051900074e-07 2388302.812 0 0 0 1.129594706e-15 634051.5282 0 7810.635733 9.624499248e-10 0 0 1.942379917e-16 6.281488084e-06 0 1.012737834e-12 0 0 0 2.105793766e-23 0 1.426128601e-11 2.465990583e-07 0.4999361848 0 2.638111706e-12 0 0 0 7550.865926 22898.45883 8.679719498e-11 80498.11744 0 4.101250533e-21 0 221175.5657 0 30.12261635 0 0 2.519412614e-16 0 0 0 0 0 31669.22209 1.48068264 0 1.365755017e-26 0 5.53763935e-30 0 0 0 1.249935033e-19 6.616991937e-28 0 0 2.261573274e-17 0 1.322062539 0.04579769294 7.981278728e-05 0 626.010669 8.004301194 0 0 0 0 0 2.528047074e-15 1035029.569 1.13808021 1.472122415e-18 0.01738715423 0 680766.8082 0 0 9.891417455e-10 0.1195232234 0 1.72113494e-16 0 0 1011233.737 1.53025968e-09 0 1.790433772e-11 0 76315.86705 0 16858.15728 0.01269545389 1584.981844 0 1186.609297 7.637851754e-05 3.779565082e-12 0 0 1.482368097e-06 4.033627697e-06 0.0008881088717 8.428260235e-17 0 0 0.09880606487 2.265508032e-20 0 179.4035891 6.370881867e-09 103.4745576 4.070955686e-05 0 67470.37247 3.574382631e-24 0 0 0 0 0 5001.338731 0 0 0 0 0 0 5085.771421 0.007280180499 4.690681055e-06 0.09079345453 2.243054241e-10 0 38531.69764 0 21526.1984 0 1.120409989e-20 8.933026693e-07 0 0 18979.89357 0 0 0 0 0 6.030076378e-13 0 27.83036838 0 0 0 2231.962944 0 2.606437368e-16 2.187406529e-12 0 0 0 0 0 0 3.866624227e-07 0 0 1.231524484e-12 0 0 0 0 3.331611865e-15 0 0 48402.5133 0 0 1.488397999 0 0 62329.6725 0 0 0.0278937131 7.120150479e-08 1.752288394e-19 1.628102174e-15 2.870279626e-10 2234.413412 0 0.01363736676 0 0 0 0 0 14.68099316 0 4.820074284e-19 0.0004873545783 0 0 0 0.3623753153 0 0 0 +0 6.937025089e-06 0.005839239164 0 0 0 0 9.422752799e-12 0 0 0 0 7.310308753e-23 0 0 0 0 7.571778544e-18 0 0 1.702950373e-10 9.165001336e-19 0 0 1.571321359 6.442836694e-11 0 0.02910658602 0 0 0 0 5.484738966e-09 0 0 30830.08004 0.0001098875036 0 0 0 0 0 0 0 0 0.0004554475237 0 0 0 0 1.144891986e-07 0 0 0 0 0 0.003627571062 4.876657165e-09 0 0 7.403167826e-10 0 0 3.50124205e-05 0 0 3282.679528 0.0001018218649 0 0 128.7932095 1.948822847e-22 0 0 894560.926 0 0 0 112.201001 0 0 2.022725262e-14 0 4590817.22 0 2259523.567 0 0 0 5.677761441e-16 17920.01482 2.559582103e-07 0 0.00456932133 6.759241745e-14 0 0 0 0 0 9.96303828e-08 3.708798728e-07 0 1.081775559e-06 0 0.008148102449 2.479117959e-15 707103.8598 1054975.387 0 0 0.007681454149 0 0 0 0 0 0.2151452145 0 0 3.525351345e-17 2.377663438e-22 0 0 0 0.2997394244 0.1242701225 0 1.54961664e-06 425.3163146 2.526105207e-13 1.216936643e-11 9.738871276e-10 2.162472341e-07 0 0.007208128013 0.02090198248 4.834918326e-12 0 26.54323723 8.124808288e-07 0 0.0008825179167 9.0304473e-08 3339574.852 0 0 7090.921105 0 0 0 0 0 994603.9892 0 0 941942.5281 2.601272259e-15 0 15730.91571 27836.77674 2.708751158e-13 0.000136457043 4.29902334e-08 212.0654576 0 59726.41434 1.028407356e-20 0 0 263153.542 0 4.676281052e-05 0 0 0.07245900009 0 809572.9246 1.081089219e-10 0 20591.96495 0.004748655425 0.05028328254 16.05550391 0 0 0 1.141237406e-11 7649.150802 3.34125685e-06 0 424.985819 6.70113754e-07 0.00013393612 0.004662433342 0 3.52296777e-07 0.03394248529 0 0 0 3.522020416e-14 23.5823866 66.39927914 2.290960382e-09 1.06582961e-08 61876.6939 6.806158163e-29 4.20250518e-08 0 0 0 0 0 3.909303946e-06 1726.050144 0 0 0 2233089.526 0 0 849811.4117 0 0 0 0 0 0 0 0 391409.6354 0 0 894688.2446 1.814675577e-09 4.218650636e-13 1012521.436 0 0.01851149505 0 0 0 0 14.97916365 2.808622005e-12 0 1.539971368e-06 0 0 0 8917.788189 0 9643773.806 2.607422329e-05 0 0 0 0 0 9.082594136e-19 0 1.634314388e-16 0 0 0 0 0 0 0 0 0 0 6.269080296e-07 99.81479304 0 2.402043537e-19 7.476252679e-08 0 6007182.849 1.400498881e-22 0 3.642708752e-12 0 0 0 0 0 0 0 0 146912.6534 0 0 0.1136817405 0.829817143 0 0 0 0 +2.481799114e-12 0 94539.47443 2.147166936e-11 0 0 0 8.524683313e-22 1.940463021 4.361243031e-14 0 0 0 3.637804339e-10 1.903187576e-07 0 0 0 1.011133279e-14 0 0 5.379945185e-07 3.878182858e-14 0 0 0 0 0.04752925992 0 0 0 0.00160662989 0 0 0 0 0 104710.7415 0 3.403823767e-09 0 9631.456609 0 0.0001244124463 0 0 0 1.144413634e-12 1275.578991 1.024280417e-09 95170.68968 608380.4461 1.155735607e-12 0 0 0 2.915457261e-05 5.365528868e-08 0 3.524449628e-11 0 414087.5292 0 0.05817119253 6.267578792e-14 0 0 368081.9565 0 5.358888609e-13 1615415.787 1.383638895e-06 0 0 2.432830722e-08 6.032922088e-11 0 1.645360374e-09 2.317835649e-07 0 0 0 0.000473848471 0 7.466323522e-08 0 1.558761453e-06 0 0 0 95371.64354 1.186817937e-13 0.0002391423091 3.880712179e-08 0 3378.595846 0 0 0 4.802632235e-13 29.57502435 0 0 0 0 2.023126732e-05 0 397469.9842 0 1.613105255e-13 0 1.114799768e-12 0 0 1.961385353e-11 4.050422343e-15 5170.027725 9.619486314e-07 0 0 0.001382612512 1.511669362e-06 2156054.941 0 1.686328618e-06 4.713221341e-10 0 5.054059729e-10 1.849262129e-05 0.004084640301 0 2879233.865 61.44764074 8.000982388e-13 0 4.369645751e-28 738751.6274 0 2.459529571e-20 1.303929206e-09 0 0 0 0 3.14505373e-10 2.641116294e-13 2.747499648e-12 0.06362822093 0 0 0 47302.29711 0 0 0 0 3.598270319e-13 0 0.0001181783932 2.421257638e-09 0 8.964930728e-15 1.151067515e-12 0 0 1.517025943e-08 5.278426551e-12 5024.560557 0.007662034709 4.241313022e-11 7662.237312 1558.999448 8070.543163 0 0.03059299933 0 2.1309856e-05 86345.4718 8.314105417e-06 0 0 0 8.770340015e-16 1.191879616e-09 5.64707299e-11 1.707677857e-25 1.35058688e-06 9.066398628e-06 0 222692.249 3.443797541e-07 0 0 1.555233898 0.02298393221 0 0 0 0 2140.959104 35042.97367 0.1367957103 0 0 1.375855061e-06 0 0 1.219221094e-19 3067847.489 0 1.689012083e-06 0 3531313.46 1.492330964e-08 0 8.850058302e-05 0 0 737.458389 0 0 1090560.831 0 0 0.0004708178301 0 0 0 6092.11316 2.215091108e-06 0 0 0 0 0 0 0.0005672337609 0 0 0 1.085587924e-17 0 0 0 0 0 0 0 0.2154420346 396593.8705 0.001080052297 0 0 0 0 0.6031705247 0 0 17.65725582 2.48766387e-17 0 0 4.221309298e-24 0 3.385915494e-05 0.001734504685 0 30.97162322 4.175598611e-06 0 0 0 0 0 0 0.8712119683 0 0 0 43.99003792 1.024163784e-07 8442.495695 0 1.336427145e-05 1.3560527e-27 0 0 0 0 0 0 3.340857181e-14 0 0 0 6.81257737e-13 4587.65783 0 0 0 +0 0 0 1.928681836e-18 9.075597245e-17 0 468398.654 0 0 0 0 0 0 5493.572336 301434.1003 0 0 0 1.76446735e-05 4.539452121e-19 3373615.204 0 0 0 0 0 0 18.50617892 216.4039761 0 0 0 0 10844.58977 0 0 0 0 0 0.0001707503076 0 6.7990629e-09 6.234821019e-06 0 0 0 0 0 0 2022.715341 104615.1776 0 0 0 2.536671173 0 0 5.018661087e-18 2.90490086e-06 0 0 0 0 0 0 0.3265706727 0 0 0 13.23675939 1.2717025e-12 0.0003503820556 0 0 456.4884746 0 387.8095559 0 8.994620633e-12 0 0 0 0 3.306309033 1.463698413e-05 1.661168785e-07 711037.5969 0.01152064067 1.657723216e-21 0 0 6.886349662e-17 0 1376031.858 0 1.189286597e-05 1.201027607e-09 0 1.305775401e-08 2.024729426e-08 0.00263763093 0 0 0 1695301.5 2.65974298e-20 0.0001032083606 0.1550368332 0.005125521652 9.018235569e-09 0 47.60209877 0 0.01582872868 8.232631561 0 0 2.305790833e-07 1.601439164e-16 0 6.435264833e-22 1067.04431 1074.642027 1.077452864e-15 1.347752429e-26 7.794471645 0 191251.9543 2.583668911e-14 4.455374064e-07 1.270858379e-06 0 0 0 1348940.283 131.3452213 0 1.812130425e-20 0 0 0 0 0 0 0 0 157.302748 0 0 0 0 1.089462778e-07 19106.61137 6.037121121e-06 0.002766749683 8.708826119 32.67503491 0 1.871245832e-22 0 2.203778431e-14 0 1.411881592e-17 141043.5583 2.737268763e-16 1.358187809 2.50144426e-13 0.02651706374 1.624160625e-14 0.3196112934 1.630090838e-07 0 0 0 0 7.263011889 59861.25843 3817.305247 0 0 1534.826783 1.574755957e-13 21.91812098 402.7665248 998.3239836 524425.8285 1328105.108 0.01316633475 0 0.0005400816173 0 0.0001021621372 0 0 3.029237414e-15 0 8.799716326e-17 129578.1778 0.001663534064 0 2.302897191e-16 0 7.13223243e-12 0 0 0 0 0 0.003659415153 0 216090.5766 0 0 0 0 5012.971586 2.069474264e-06 0 309424.4526 0 0 0 5.287812933e-20 0.7240722856 0 0.0009160159127 0 6.444133956e-08 0 5.834537246 0 0 0 0 0 0 0 3.320585702e-21 64837.01105 0 0 1045.156046 35246.20585 0 1.770178344e-05 0 0 0 3.323076938e-12 0 0 0 0 0 0 4.264044348e-07 0 43166.40621 0 0 0 0.0004730178701 0 0 0 0 318305.6398 4.09804551e-12 2.222190144e-10 0 35641.87016 0 0 0 1088.654476 0 0 1.236278333e-06 0 8.206798201e-15 0 0 2.889617779e-07 0 256.4288988 0 0 7.822414956e-27 1.594654281e-07 11107073.8 0.004779514363 0 0 3.792313792e-13 0 1.905228497e-26 52.26637747 0 0 0 +0 301145.8687 0 2.609350273 52.19347616 0 0 0 0 0 0 4.784167123e-16 9.213372602e-17 0 0 7.271078092e-07 0 4.580195577e-15 0 0 0 0 1.344050778e-10 0.4153379925 1.548580986e-11 1.442657003e-17 0 1678849.054 0 0 0 122005.6743 1.048578268e-06 1.314039006e-08 0 0 0 0 35988.83835 0 2.089107183e-07 0 0 0 0 8.078608433e-11 0 0 0 3.536153095e-22 0 2.523443321e-05 0 0 0 0.0001043470131 0 0 0 0 0 0 0 0 2.004341254e-15 0 0 0 2.427469981e-21 2.209027445e-10 0 0 1.675804546e-11 0 0 563636.1182 1.878124563e-33 0.02151395482 0 4468.292772 0 0 0 0 3.249722367e-08 0 0.5250793074 320648.1027 2.568518907e-16 1.997853769e-18 0 3.414712618e-12 0 0 0 0 6.903533183e-13 1.436001198e-05 0 0 1.507945967e-18 516451.0502 3257.294121 0 2.381308832e-24 4.672661333e-16 4.150284201e-07 374217.3947 5.993814725e-06 0.003388745925 0 4.821381997e-07 0.2622349185 0 6.397754255e-15 0 0.0002276830765 3.151639654 8.718515922 0 1.111800175e-08 0 0 1.001699429e-12 0 4934.614312 8614.117515 1.714093587e-05 0 0 40731.46814 2.421955448e-06 7.541677244e-10 94777.37537 0 0 1.718852517e-10 0 3.066401068e-12 8.317697444e-16 4.988041476e-13 0 0 5.000038322e-17 0 0 11044.32914 0 0 4.41254292e-15 0 0 6.264105824e-05 0 0.001879490622 408332.7821 16041.45351 0 1.875061627 0 9.24412333e-15 0 5.083941743e-05 0 1.499148999e-08 0 3.834177057e-24 4.015891204e-09 0.1943727021 1.054604293e-16 1.223572984e-11 2.322662636e-24 0 0 0.0005001316705 0 3195.593761 0.0006938693879 0.002989605924 931898.0521 1.342297082e-16 1.152326306e-22 56.46921936 0 0 0 0 0 0.00825378476 0.0001371853398 6100.186342 3.520724791e-13 0 0 0 2.12173215e-07 0 0 0.01224605844 0 0 0 0 1.502926249e-13 0 0 0 3.020412751e-08 0 2.53802462e-17 0 0 0 0 0 0 0 92106.9232 0 457.1376388 0 521816.3184 3069814.865 0 42649.15297 0 0.001976624428 0 1.297986028e-09 0 0 0.07555160623 0 1.58734733e-05 0 0 0 3.396281873e-05 0 8.825536108e-06 121727.1232 0 0 5404.523781 2.696669744e-13 0 4.749240965e-14 2197.067526 0 0 0 3.204829979e-06 0 0 0 15.54296568 0 0 6.007277721e-09 0 0 0 0 3.125545347e-18 5.972046158e-08 0 0 0 2.215915098 1.789226578e-09 0 0 0 0 0.007548597797 0 0 0 0 0 0 0 0 0.01255975093 3.094407301e-06 0 0 0 0 0 11183.90852 0 0.0007332174203 1388730.196 0 0 3.170951949e-15 0 0 0 +0 25.562509 0.06470497219 0 0 0 0 0.732558736 0 0 0.0009499339619 0 7.809626483e-09 1.00508212e-13 0 0 63327.24428 0 0.1832229057 0 30150.76189 0 0 3.386228415e-08 5.000795693e-31 2.755798948e-11 0 2.392506691e-19 0 0 0 0 0 0 0 1.724868413e-09 0 1.831129579e-11 0 0 0.3173437435 0 0 0 0 0 0.624627549 2.716917023e-07 1.167247399e-15 0 0 6.435282101e-15 1.032660537e-14 0 0 0 1.427613083e-09 0 8.985090729e-09 125019.5403 0 0 0 1.486106928e-07 0 0 6.067655573e-06 0 114.755616 1543412.623 0 1.015626203e-05 0 9.974245816e-14 0 0 2.791384851e-07 3.891093906e-13 4.567283738e-10 0 0 9.838691658e-15 0 1.186316094e-05 0 0 2.798224202e-07 0 207805.9186 0 2.729438191e-07 0 0 727146.1 1628.565309 3.603424052e-13 386161.7892 2.335487193e-07 6.273315872e-23 2.164369176e-12 2.895278742e-11 782157.6159 0.001428449506 0.009394366865 0 0 0 0 1.359495489e-08 6.221263585e-10 0 0 0.0003944386563 714813.8855 24638.77268 761.9724514 0 2.564348052e-17 0 3.120617431e-18 26198.57067 7.967985441e-28 0 0 0 0 0 4.551631437e-11 0 0 0 0 0.0009062987404 1.264819747e-07 0 0 0.001204848896 0 0 0 2.974756651e-07 0 0 0 0 0.09023639267 0 8.751896949 3217762.629 0 4.199408863e-16 0.8388895569 7.467011348 7.234529267e-11 1.300161608e-09 0 0 295432.0639 388.0780072 9.096987741e-14 0.0005855318738 0 430820.6267 6.029244522e-11 2.645087453 3.222891481e-12 0 0.0526395084 0 0.1495367225 1.142176201e-07 1.31807414e-11 0 3.958982385e-20 0 549334.3491 0 0 304.7422613 8.346565953e-12 3727782.648 2.736066018e-08 1.113705978 0.0141125471 0 0.01214122126 0 0 1.760378392e-09 3.384917195e-09 245216.7661 0 0.008354427525 0 0 2.033936698e-12 0 0 0 0 0 582261.4913 19.21517807 0.04060889715 0 8522.55264 2.220933639e-08 0 0 0.004239705053 0 2.106839638e-07 0 0.0001027460593 0 439230.6474 0 31.43425624 0 0 0 0 0 2322.708742 0 0 1.059126714e-12 0 0 9.207268263e-05 0 9.402637488e-07 0 0 0 0 1.58114207e-05 32.20306675 2294.039539 0 3.366496275e-23 8.327537376e-19 0 0.01858830401 1.733732278 0 0 0 0 0 0.001287071784 7.812385965 4621.10543 0 2.862066995e-08 0 0.00781511452 8.707016734e-07 0 0 8.356297812e-10 0 138185.8702 7.854390358e-24 0 1.321076237e-06 0 0 0 0 168210.4186 0 0 0 0 0.0009603011929 4.903280886e-22 0 0 0 0 0 0 6.832780555e-07 0 2.661636147e-09 0 4.79672108 0 0 0.001591779775 35065.46688 0 0 0 0 0 0 0 3.270380467e-05 +0 0 0 0 7356999.517 0 0 0 0 0 0 7.216645014e-20 0 0 33077.09257 0 0 0 10437.8055 0.0001533904897 0 0 0.04595841051 569.3273934 0 0 2.354596091e-08 0 0.00201160393 5.820391413e-07 0 0 2.726253267e-20 0 0.0003439482026 0 7.675384516 0 1.766536427e-11 258844.6436 0 0 0 0 0 1.941458766e-11 4.739912266e-07 0 0 732721.3828 0 0 1843753.77 0 0 0 0 1928.412656 9.866048433e-18 0 1.537672212e-09 9.80002924e-19 0 162.8358335 0 0 0 0 0.0008585298437 0 0 0 0 0 0 869.9840315 0 4.138856999e-06 5.191004089e-12 0 0 0 0 0 0 1.887122962e-06 5.444150802e-05 408490.7354 2.891014131e-07 1129332.946 0.0003939674913 0.005747697619 3.859291542e-09 0 0.02837634799 0.05931109669 0.0009173973833 3790.035883 0 189174.4193 0.8821475427 34531.37834 0 15.28685649 0 0 3277773.27 0 0 13.4174727 0 0 0 0 143144.4259 0 0 144190.702 0.01108203078 0 0 0 0 0 0 0 9.946219743e-09 0 1.951976284e-06 0 0 0 0 770376.2875 0 0 4.618305673e-21 0 2.171694598e-13 3.831423432e-05 0 1.569736603e-11 1.260666154e-06 0 451.4525064 1.575982377 6.701604357 0 0.4216210994 0 0 145.2797426 21.70315106 0 0 0 0 0 0 0.01211877445 0 0 0 0 0 0 0 0.008798723522 2400292.276 0 8.520079962e-13 0 5.998046528e-05 4.704569921 3.720246007e-11 1128439.734 3.424066607e-16 1054478.403 3239687.324 1.561628595e-12 0 0 0 0 0 1.19264072e-11 0 0.941678219 0 0 2.808671823e-08 0.0005619566951 0 110.1513129 0 0 0 0 0 0 0 0 0 161562.2603 0 0 2.079662396 5.810890048e-05 0 1.971071589e-08 2.390914774e-05 0 0 2.651932335e-07 0 2.981261221e-06 0 4.256236015e-05 0 0 5.934576591e-14 0 0 0 0 2.403769211e-08 1.916565213e-11 5.064836988e-08 0 0.1505548779 0 1.464217211e-06 4.080884244e-05 0 0 0 1.649416079e-08 0 0 0.3451178438 686973.1243 1980650.616 1.965572191e-08 505.388336 0 0 0 0 0.0004575495557 0 0.0001193776752 0 0 0 4.432285084e-07 0 0 0 0 445093.9529 0 0 0.008107353191 0 5.337510547e-12 0 0 0 0 0 0 1.966987136 317.5928052 0 9.880106034e-26 0 0 0 0 0 36671.13408 0 0 0 0 0 2.656344936e-10 0 0 0 0 0 0 0 0 0 0 2.360907275e-13 0 0 +2.137514037e-09 0 0 0 0 0 0 0 0 0 1.996353629e-08 0 0 0 7.661662819 0 0 0 11625.47083 4.301998066e-07 5704.211055 0.8317848038 0 0 0 0 0 0 0 0 0 0 0.4273847908 0 0.0001089946009 0 0 0.04737597571 0 2477.224385 0 0 0 0 0 6.889979406e-16 4.445363263e-09 0 0 6.750947698 0 0 1.919259994e-07 0 0 0.005729099156 1.14673291e-08 0.7778268996 0 0 0 166278.999 0 0 9.185077783e-11 0.6108450254 304252.2532 2.300880987e-09 2075342.096 0 8.259857485e-09 766145.7396 0 0 0 1.437762038e-29 2.205310507e-06 793.5010231 0 1.536663161e-11 0 0 0 0 54473.88264 1.231751619e-17 2461.796341 0 0.03227886636 1.305119247e-09 1.077175921e-05 0 4.176168438e-12 0 2.427972394e-05 0 355008.7197 9.814401679e-06 7.604519351e-16 0 0 0 1.641672318e-07 0 0 0 0 1.445037724e-05 0 0 0 0 168.2484541 0.0001906115303 0 0 0 1.233609303e-06 8.522011361e-10 0 2.776502735e-17 0 3.63667655e-13 0.002212377292 5.158066771e-11 2.523350587e-09 214627.5561 508659.2808 6.148878996e-05 0 0 2.11149361e-07 0 885262.652 0 0 0 1.150991804e-09 0 0 0.05581058915 0 214933.6689 2.472403055e-05 3.780832074e-31 0 0 1.643710028e-28 4.447894157e-30 547.6960982 0 0 0 1069264.037 505.1434576 0 500183.097 37853.25701 1.928505947e-08 0 7.794398833e-11 0 0 0.1495643513 6.070859372e-24 0.009764596941 0 0 0 0 0 3468.877677 0 2.040743264e-09 2.289481979e-09 0 0 15258.15751 3.741473274e-11 1.532492853e-09 0 6.208690585e-10 0 0 0 0 8.422427585e-10 0 26.51277844 4.716981205e-08 3.558000263e-05 9.807181517e-10 0.0002898004015 2.232867432e-19 240.9350629 0 0 0 0 0 0 5.849385088e-08 1303.622778 0 0 29.62415944 0 0 2.743777981e-07 0 0 0.0003050558286 6.949332667e-05 1.882034305e-13 0 2097701.789 0.04507826339 0 0 0 5.653461788e-05 0 0 0 0 1.419606363e-05 2.576692181e-06 0 0 0 116.4226098 0 22411.74147 0 23677.28137 0 2682.748779 0 49914.56618 0 1.581737376e-22 1.812647421e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 4.870344789e-28 0 0 0 1.699296939e-10 0 0 0 2.07217378e-12 252698.4556 0 1.74614798e-10 0 0 0 0 0 0 39.4799125 348.0124194 0 1.630811532e-22 0 4.692551074e-22 0 0 0 1326981.336 0 1290.511331 0.006984178454 0 0 0 0 0 0 0 0 0 0 0 56808.1815 0 0 +8.938557969e-30 0 0 12.27221609 0 0 0 0 0 0 0 5.424866985e-22 0 0 0 1.025044263e-10 0 28309.00944 0.0005193450924 0 0 0 1.167250761e-19 0 9.449170075e-09 0 0 0 0 8.454552291e-13 1.023064595e-05 0 0 1.907835745e-13 12414.16492 2621094.65 0 0 0 0 0 0 6.849931138e-14 0 1.104273458e-05 0 0 0 0 0 0 0 0 0.003122445947 0 0 0 237136.4649 0 0 0 0 7.857004746e-15 0 1511477.126 817401.5497 0 0 2.362235755e-12 3.237677317e-07 0 2.957126094e-26 1.896882599e-05 0 0 0 0 2.640638809e-15 112753.7857 0 2116.616409 98.18413915 0 0 0 0 0 0 0 0 0.05235735342 0 0.007215086527 0 3.828618384e-08 1.569150203e-05 0 0 0 0 2.70705681 6.30993331e-08 0 22362.04396 0 1.058117583e-06 1.878364273e-08 0 1.152542702e-06 3.868337983e-10 2.657336892e-05 0 0.06335737074 13977.02536 0 0 166.1266324 1.2569869e-11 4.271681082 0 0 0.8384378026 2.158479792e-14 0 5.393170101e-17 0 162684.1133 1.374252732e-12 0.0009997647202 0 0 0 0 0 1.235839118e-27 0 108140.0547 5161.966587 1.103143074e-18 305.1946607 1.383331738e-06 29462.32747 2.566032719e-09 0 7.849738108e-15 1.988444846e-14 5922.961059 1.96696525e-18 255097.9493 0 0 4.601489271e-09 0.0006326547611 0 219.1393849 0 0 1.595543363e-14 6.668417595e-06 0 0 0 0.4117266632 31505.54701 0.001405982003 288.0938492 2.217181096e-24 0 0.0022350651 0.09932990556 0 2.591325841e-13 2.582539085e-11 0 0.0185162283 459.533962 0 0.002001898801 0 11340.86474 1.477893037e-17 9.471308334e-12 0 0 0 0 4.923045746e-05 0.05187065498 0 0 306501.2077 4.490241321e-06 0 0 0 9.213120442e-13 1.198464281e-05 60.06029812 0 0 5415.989916 0 0 0 2.162633342e-11 0.7986997436 118301.9776 0.3464600375 0.000706725478 69384.86721 1.635029361e-08 0 4.051434212e-12 0 0 0 4.387536372e-11 8.94141761 0.002281501664 4737.664958 1.042192181e-14 3.674075315e-05 0.0544867146 0.0002028333432 0 0 0 0.1087912563 0.01482238041 0 2566.511841 0 6.1245587 8098.797653 0 0 0 0 0 0 19908.82783 0 0 0 2.629148503e-30 0 0 0 0 0 0 0 0 0 0 53.14301806 0 0 0.000537104871 0 0.004127615885 0 6.807775338e-05 0 0 1.524573799e-31 322949.4135 3.614844278e-06 2.970851463 0 0 0 0 2.299018428e-27 0 1.159205641e-07 4.736488537e-05 1.820561544e-18 0 8.599204358e-05 0 0 0 0.112067014 0 0 0 0 16.05995611 0 0 0 0 0 0 0 67.92404908 0 0 0 +0 0 0 1.028394479e-22 0 1.203464474 0 6.55602668e-13 0 0 0 0 569592.4672 0.003580955032 0 0 2.237652363e-17 0 0 0 9496.845691 4.489520124e-22 0 0 1.996251982e-11 9.9993293e-07 0 0 0 0 0 0.0003999786911 1234.368095 0 0 0 1.4804481e-14 6.639087897e-09 0 1.713214391e-06 0 0 0 0.1382778034 0 18493.78494 0 0 30.06940846 0 1.750687305e-06 143.6611573 0 2.239883453e-14 0 5.799115003e-10 0 0 496294.4841 0 0 97.1407989 4899.832098 0 1.127806015e-09 1.661505409e-16 0.0001981432682 159193.6914 1.615617898e-17 0.002575452741 0 5.431041833e-25 0 0.004476025919 7.408237445e-06 0 0 0 1.461756553e-14 0 0 6.011650078e-08 1.82757535e-11 0 0 0 0 0.0003319724681 0.0001257522393 0 4894.709555 0 4.919927065e-19 9.182040988e-06 3.041732781e-11 0 9.350103446e-07 1.852932365 0 0.00106642835 0 1.460651515e-10 1.547447661e-11 0 235853.8236 0 0 1.656619623e-11 0 0 7.198046593e-07 1.909691524e-23 2.029890011e-13 0 1.581426585e-12 0.000477528246 6.247052982e-06 0 0 1400.812581 0 11.5525192 5.240516247e-12 0 0 3.888133247e-09 16.55670895 3.421545722e-09 0 1.250203909e-08 0 0 0 0 3.099638494e-10 1.981205583 0 1.8089044e-23 0 0 0 2.681826269e-07 2.047750523e-09 7.921830317 0 1.092317215e-13 0 0 0.003955172591 0 0.01980026785 2.635783821e-22 0 1.03685841e-11 6.36453813e-07 0 0 0 0.00140131645 0 0.3522894695 0 9.661139369e-14 540209.4029 0 2.204863171 0 4.988957348e-08 0 5.09833705e-08 23339.28972 0 0 0 1.478833435e-05 0 0 0 0 0 1.241930416e-11 4.252038104e-14 5.757547154e-11 555371.312 2.998000757e-12 0 234629.1969 4.159617583e-16 9.329412002e-07 0 0 0 1.360608446e-12 0 1.192913799e-05 0 1.445104802e-05 8.365040773 0 0 0 0 9.155426481e-07 1.158358333 0.1043505796 0 0 0 0 1.234157843e-05 0.001753352089 0 367854.2355 6.782335667e-11 2.571864657e-12 1897.271825 0.04201954808 0 15.76263591 0.0007429290368 0 0 0 2.837255699e-10 9.762333754e-05 0.0004656506826 0.0004397333209 0 0 0 0 66.37064445 0 0.0001585190753 0 8.672742419e-12 0 6.512180291e-07 3.479188319e-07 0 0 0.0001904744988 0 1.042746841 3.476365045e-24 0 0 0 0 0 531.319009 1692.953481 0 0 0 0 0 0 0 0 0 0 97.6543414 3.676060402e-07 9.832370399e-06 6941.424779 26.15614241 0 0 61.14399536 12707.83815 0 0 0 0 0 0 0 0 0 0 9.828961179e-11 3.514419155e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.143361585e-09 0 +0 6.020527912e-12 0 0 0 0 0 0 0 1.332957896e-16 0 0 0 0 9.365569531e-08 0.008342439691 0 0 0 0 440641.6901 0 0 0 1.084614099e-07 0 0 0 0 0 0 0 0 5.379854311e-05 0 4.301286803e-11 0 9.833589315e-09 3.509242112e-10 0 0 2.635375822e-06 1.886271659e-24 0 0 0.001716619957 1.642451757e-11 2.059649824e-06 0 0 7.555504727e-06 0 0 0 0 0 0 0 0 0.06908939839 0 1.230783846e-06 0 0 0 0 0.01192562481 0 3.384838452e-14 0 0 0 2.142333051e-08 0 0.0002211140901 0.001430284753 235.4510494 0 0 0 0 0 0 0 0 0 4724.978127 2.725738701e-06 1.39229512e-07 0 1.386293397e-06 9037.864085 0 0 7.123378553e-09 7.507914132e-12 0 0 3.316370229e-11 0.000784773975 0 0 0 0 0 0 117.4405939 0 0 66854.39662 0 4.515545264e-08 1.087333955e-06 0 104928.0178 970.0072194 0 0 1.01935603e-16 2.231794456 1.977444847e-14 29367.07686 0 26815.66153 11125.13535 3.103951594e-07 0 0 0 0 0 1.593142481e-21 0 0 0 0.102750799 0 7.722920168e-05 0 0 0 9.613721559e-15 0.01799385274 14.86636523 6.07503835e-10 0 1600438.841 6.523252508e-05 0.2946310975 0 3349.640295 0.01752238078 6.163932787e-14 0 0 23.87408277 0 1263.02035 0 215301.1622 0 0 0 0 0 145868.4454 0 0 15500.90492 0 62864.67409 0 0.0001022618267 0 4412708.451 0 0 81749.91769 0 0 0 3.443407466e-07 5.079618647e-16 0 1.353567205e-22 0 0 6.15359825e-19 0 0.8731082282 0 0 552706.8784 6289.665461 0 3.444647284e-13 3.745110229e-20 7.745241988e-07 0 7.436037254e-06 0 0 5.411864197e-17 0 0 3.934866326e-11 3.056108193e-11 1.969801511e-06 0 0 1.712381374 0 0 0 0 362.6956936 0 2.022898015e-07 1.155997801e-05 0 0 2.003676848e-09 1.021731962e-17 0 0 0 0 0.6594305524 2.527015623e-05 0 256.7656584 0 0.0005710420562 0 0.3063990074 0 12.60807619 0 0 0 3.837282843e-11 0 3.150817403e-10 0 4.910575725e-06 0 384.5871995 0 0 0 2.26041349e-11 0 0 2.034768158e-20 0 0 0 9.862695927 1.984634272e-07 0 0 0 288955.1035 0 0 0 0 0 4.829386626e-14 0 0 2.428943176e-12 0 1.744732333e-06 0 0 0 0 0 0 0 9.770788122 0 5.762405472e-10 0 0 0 0 0 0 4.950216136e-14 0 0 0 0 7.969860264e-25 0 0 0.1429507935 9.454621559e-07 +0 0 0 0 3.093975238e-14 0 0 0 352.7103819 0 0 9.627707675e-08 6.4325831e-30 0 2140359.848 2.145256789e-08 1.013927603e-12 0 0.007618026394 0.9254947711 0 0 4.216191118e-08 0.002449764042 1.140207569e-15 0 0 0 1.288202638e-07 0 6512.198861 1.592179674 0 0 0 0 1240971.343 4.918949022e-23 8.351549815e-05 4.757830365e-10 3.166975648e-10 193128.8519 0 5.60220885e-23 1975.522929 0 59306.56945 0 0 9.75183493e-20 0 0 0 37.35737018 0.09732048447 24879.11561 8.604209345e-09 1.061384728e-15 0 0 3.940275963e-08 0 0 0.01087487791 0.007041489132 2281.952546 0.0003702089785 0 0 0 0 0 0.0001246719802 0.002769703641 0 2080.651252 0.02002833547 0 0 1.724267321e-06 0 2.646121808e-06 0.1462269422 0 0 0.0007227420163 0.008995470354 1.560127606e-09 0 1.780977615e-13 0 0.02064681669 0 0 2.098217784e-21 0.001783380784 4.73968608e-13 0.03559975718 0.003655736904 233088.7668 8.489640879e-09 134512.7372 0 0 1.93797312e-08 0 0 0 5.609510248e-10 0.04706248232 0 8.718502009e-11 42079.14656 0 24.70830396 15.37687929 70372.55849 0.04931711678 0 2.882491399e-07 0 0 0 0 601.0296584 0 325.8299222 1.453158531e-11 33.22092606 2.723770904 6377.576012 5770.472723 0 0 0.0006539764228 3.718253351 8624.191133 2.589785785e-07 15562.12634 1.888078693e-11 0 0 187331.0425 2.174239457e-13 0 2.147138589e-05 4.795689578 0 0 1.667783588e-12 0 0 4.286210268e-11 0 1.074761433e-09 0 0 0 9.245928293e-08 0 0 0 0 0 5.485512711e-15 0 0.1575077785 0.006416983349 1.255143585e-05 7.56543309e-06 0 0.0003248616324 0 0 0 0 0.0001133547102 0 0 0 367.0005266 1.738011771e-06 3.033810522e-18 0 0.008087232906 2.398928181e-21 8.039307616e-11 231.1059432 0 9.867006017e-10 3668.795076 0.02228047856 1.445058333e-08 0 9.699675116e-12 0.00294364495 5.840101907e-09 0 0 4.56472772e-14 4.69966302e-12 0.0003258501696 2084255.336 0 0 2.202934839e-10 0 15.29202082 0.0002000384825 0.113053695 0 0 0 0 0 0 0 0 0.4816864326 7.271938581e-12 136816.8694 0.002539252634 0 4.910088279e-11 0 0 3.33782771e-11 0 0 0 5.365441017e-06 58.46372461 0 0 0 134653.0291 0 0 0 0 0 4218.124864 0 0 1181447.67 0 0 101098.8374 3.625276821e-07 0.1084891631 1.559609472e-05 1044254.337 0 1.02139824 1.898249827e-06 0 0 0 0 0 0 1.691540173e-17 0 2.426070676e-06 0 3018.547641 0 0 0 0 0.0845660214 0 2.651015632e-14 0 19773.12972 0 0 1.495118179e-05 0 0 0 0 0 4292.20443 0 0 2.895158492 0 4.518601404e-05 0 0 0 0 0 0 3.975837114e-13 0 0 0 0 +0 0 0.5971816284 0 0 61.79604096 0 0 0 0 0 2.06775027e-09 0 0 0 0 0 0 0 1.728207911e-06 0.229662318 0 0 0 0 0 0 0 337932.5586 0 0 0 0 0 3.547170192e-12 1.48287152e-23 0 6.104350635e-16 0 0 1.720008571e-10 0 0 0 0 1.376206345e-06 0 0.09630070246 0 1576765.761 0 0 3.432243203e-06 0 0 0 0 0 1.630816263e-10 9.961843985e-05 0 82.48451933 0 0 374.2347113 6.315737257e-06 1.496223916e-13 9.359264193e-10 2.438425554e-08 0 0 7.12944993e-20 0 0 1407.939279 0 0 0 0.09008678356 50171.85829 9.836587516e-11 0 0 0 4.201839891e-18 0 393112.6869 0 0 0 0 5.867359792e-11 3068.230391 1.239499898e-06 0 0 2.456019913e-05 0 0 9.956754705e-05 0 0 0 1.096153835e-26 1.463857173e-15 1.547090513e-18 0 0 1.04108727e-08 1.400048585e-10 0.005274477709 0 0.001837576387 0 1613705.261 5.528021123e-05 2.142086034e-07 0.0001511842104 1999003.606 9.548269109e-14 0 1.5109489e-10 0 0.112059918 0 1.050813617e-11 1.501418472e-10 0 0 15075.94067 0 0 5.536881118e-17 0 0 8.337464796e-07 0 1.7704144e-10 9.02250341e-16 0 2.556911042e-12 0.0002658198911 223.1564172 0.0002310646623 1.810293347e-05 0 1.331197691e-06 0 6496.693553 1.610365523e-08 4.887317137e-20 3.747741866e-09 0 199.0729299 6.019930896e-24 1.10829069e-13 0.0001635949072 0 274.6684008 0 0 2.31558143e-15 4.525077814 588759.6672 0 0 2.284850118e-05 7.239311471e-07 5.355685221e-19 0 563144.8125 0 0 28.70143616 0 0 0 0 159.4003568 242854.4343 0 42704.11451 0 0 0.01452004462 3.16164776e-13 3.512195609e-07 1.496323417e-13 0 3.822193235e-08 0.01758511575 0 0 2.597701046e-09 2.511528978e-24 0 0.0009032326765 0 2.611110228e-07 0 8.283759881e-08 2.366448925e-12 8017.268132 6.934935271e-14 0 0 0 3.336508436e-20 0 4.358259703 0 0 0 0 2.368492236e-11 3.6991802 4.520617925 0 9.966528211e-07 0 0 4.41309471e-16 0 3.02502728e-09 0 0 0.1628686684 0 0 0 0 0 0 0 0 0 0 0 6.576879991e-12 0.00884306461 0 0.357150314 0 0 0 0 0 0 0 0 0 0 0.2717909083 0 0 1.842340323e-08 3.012729434 0 0 0 0 0 0 0 0 0 0 0 0.03185215583 0 0 0.9474250052 0 1.571359875e-10 0 2.613253205e-05 0.001591419673 0 0 0 0 0 3150701.632 0.002045040016 0 0.0003752546894 253.6305124 0.1114914209 0 0 0 0 0 0 0 0 0 0 0 0 +1.325795811e-14 19.69853696 0 932.6672993 6.532326746e-15 101784.2049 0 0 132850.8085 0 678462.9874 0 0 0 0 0 9.351452017 3.973807072e-06 0 0 3.228481198e-08 0 0 0 0 0 0 0 0 111.5778318 3.281430292e-22 0 0 8.586775822 0.15538581 0 1.403852484e-10 5.961138626e-12 0.0007137128387 0 0 0 0 0.08730462243 8.162899245e-06 0 0.000101185036 6.489465429e-05 6.31704158e-15 0 0.9224741298 9.898284411e-08 0 19.13059873 1.208768829e-09 5.800386858e-07 0 5.766203099e-12 1.108741142e-12 3.007526415e-11 103476.8052 0 2.68392631e-07 0 0 4.825686105e-16 0 0 0 0 0 0 0 9.259601113e-10 0 3.908678518e-11 0 164598.0744 0 2026.156543 1.374425029e-07 0 1.631200854e-21 1.483958755e-06 0 0 45.23413034 0 0 0 0.08434155433 0 0 0 3173709.321 0 2.314642357e-08 0 6.060446503e-05 0 0 3129.720495 2.475802313e-19 24.93331581 0 0 16546.28043 330.0178955 0 0 3039080.525 0 212.619827 0 0 0 0 0 0 0.002772189872 3.093523636e-20 0 0 4.396786522e-12 0 0 0 0 5.327611078e-19 549.0144691 4.121905856e-14 6.460065499e-13 0 0 0 2.516035492e-06 38.75624672 496.7682637 0.01573786518 0 0.0001825021079 2.373301375 230.4103313 0 8.125672734e-05 3.468568498e-11 506461.8918 2.523947035e-08 0 0.0007503521849 193.0172666 0 0 0 7.432709427e-08 0 110.1394638 0 2.574504606e-06 6.15087351e-08 6.249527901e-10 5.423914657e-05 0 1029.458303 0 0 36.08233763 1777.933605 0 0 9.911545847e-09 1.598620865e-11 0 5.494660993e-07 11.74289625 1.618667247e-08 9.028053068e-17 0 0.0002987815515 0 481995.8592 0 0 0 0 0 1.780335925e-06 5.72108972e-06 952.8682496 0 0 301217.4755 0 7.841205593e-14 78268.51269 0 0 0 0 2.937588875e-21 0 0 5.105696108e-28 1.167421881e-09 144377.0348 0 0 0 0 0 9.382550524 0 0 0 315.5126963 180.7062203 1.52150324e-06 2.729291679e-05 2.561761128e-14 3.246790068e-18 7.135961261e-07 0 0 8.074843643 0 0 0 0 0 0 0 0 0 1.457954566 0.007851252969 2.168666667 2.204791424e-05 5.87609222e-30 5.092909547e-13 0 0 2.902955826e-13 5.211479926e-19 0 0 1053.328471 4.053233986e-14 0 0 0 0 28999.2444 3.725322777e-15 0 0 0 0 0 0 0 6.730083824e-10 0 0 0 247.0121434 0 0 0 6.72592066 0 2.609677307e-06 0 0 0 0 0 0 3.434420496e-07 0 0 22125.86331 0 0 0 0 7.044540294e-14 0 0 0 0 0 0 3.350062358e-12 5.03237473e-10 0 0.4226982555 0 0 0 0 +0 0 0 0 0 7.235845146e-10 0 2.541840941e-11 1.195850725e-05 0 0 0 0 0 3.816375387e-06 0 0 0 0 0 0 0 0 4.958708873e-05 0 2.658104755e-28 1.983601197e-14 3.343086932e-12 0 0 0 0 0 0 0 0 0.07988541989 2.876086559e-08 0 0 4.998911631e-14 0 0 12595.16648 3905.424568 0.3066921543 9.918156488e-11 5.996707965e-07 227.9022034 824796.9867 0 1051593.748 0 0 0 0 0 0 37206.11506 0 0 0 1.405498868e-06 2.210414434e-07 0.1974388602 0 0 0 0 0 0.0001775757797 0 0 0 4.355246021e-14 293.4514592 0 4.261102899e-25 9.679210456e-16 0 0 641132.5034 82.63271002 5.005750972e-06 0 0.3219054323 0 5.004473415e-05 0 2.032907466e-05 738463.6863 1.12466963e-12 1.552240562e-12 933780.5551 9.326277756e-16 132410.0546 6.262367055e-08 5.056160959e-16 2.147962233e-08 0 17408.20024 0 0 0 0 0 2.431041091e-19 33460.55954 0 0.07560868861 1.895611227e-07 0 0 0 1831.278463 21569.7147 0 0 1.325462661e-20 2.585122214e-10 0 0 0 0 1.065145979e-14 0 1.530135229 0 0.1862256584 0 0 1.391723689e-20 261481.4413 0 0 925311.3991 0 2.401398264e-08 0 0.01855578622 0 0 2.866850233e-21 628.3870926 3.562040368e-22 0 5.67297717e-11 1.259964359e-16 0.003205007042 0 1.045469071e-05 1.667196594e-09 0 0 1.908642841e-13 0 0 6.86250157e-11 0 0 0 127664.8497 0 0 0.01392625696 0 22.44684435 330.8801087 0 0 0.3213243136 0 0 0 0 7.773865871e-12 0 0 1.838849004e-08 5.03267363e-12 0.001567899597 1150.35881 0 0 0 24.24669718 12.95136014 0 0 1.61455348e-16 2.981032792e-14 0.1663116144 6.271752059e-12 0 0 0 1386.622129 0 0 0 0 0 0 0 456.5205622 4.57116587e-06 6.21136776e-10 11477.0925 0 0 0 0 5.101573771e-10 0 0 6168966.683 0 6.801872992e-18 2.501252745e-11 1.057612138e-13 7.064478644e-14 0 0 0 8.922426172e-13 0 0 0 0 0.4717085499 0 0 1.989706361e-18 3.046330647e-05 0 0 0 1.410672224e-24 712.5845058 0 0 0 0 0 1660569.268 0 0 23.96983484 0 1.951036037e-14 0 0 0 0 0 58.59751326 3.27630547e-16 0 235540.1412 1.492137035e-12 0 0 0 0 272564.5184 1565.437356 0 0 0 0.01116211347 0 3.110341605e-07 0 0 1.98594477e-24 0 0 5.44773891e-10 0 0 5.535841763e-23 0 0 0 0 0 6.329019517e-22 0 0 0 0.01208361443 0 0 369333.6557 0 0 0 0 0 0 +0 0 0 8.375557232e-18 0 0 0 0 0 214.6667505 0 0 0 0 0 0 1535195.526 0 1.30985351e-13 0 0 0 0 2074.727267 0 1.128530799e-14 0 0 0.4508342855 0 0 0 0 1.906966203e-08 0 0 0 9.061331342e-15 0.3165271345 1.950486816e-05 481254.0279 0 0 8.939338884e-26 0 7.299603719e-13 0 0 4.873089881e-29 0 0 0 0 0 12.83517643 0 7902.681111 0 0.09852386112 0 0 0 3.336961456e-10 5.988027846e-15 1.093759167e-10 0 0 0 935355.1797 4.331071987e-11 6.969875623e-12 0 0 0 3.763145098e-06 10197.73721 0 0 495487.8691 9750.016205 0 0 0 0 0 18.81446253 1.48087265e-05 6.738486446 0 34048.40012 0 0 0 0 0 2.913157589e-06 0 0 0 0 1.369933504e-14 0 0 0 3149.794472 8.278264038e-11 0 0 0 23.7046369 1.547446228e-06 1.458837754e-09 0 0 0 0 0.002065841303 0 6.345444904 0.4247418534 0 0 0 0 264.2582011 0 0 1.070635281e-12 1.524340326e-07 0 0.01325237033 890543.2128 0 0 0 0 0.3541534984 0 0 0 3342390.286 0 0.04444380108 4.491701598e-14 0 0 0 1.145182936e-06 2.396797702e-13 5.470254048 2096697.209 2.666283579e-05 0 0 2.428842707e-20 719.8782444 0.09795700372 1.108958693e-11 0 0 0 55674.93296 0 0 2817625.609 4.717154997e-10 4.749404481e-08 0 0.1758424503 0 0 22559.75932 0 0 5.983007349e-12 0 8.901899927e-08 0 0 0 3.840301062e-09 2248.047949 66580.77919 0 2.470584449e-10 0 0 0 0 6.269278121e-16 3.049623878e-07 0.0001055114572 4153.740131 3.396486817e-05 0 0 0 10.50206922 84511.43138 23841.63376 0 0 2.326720195e-06 1.979071608e-12 2564.713624 0.1097857594 6.914196909 0.1140371023 0 0 0 0 2.589804902e-20 0 7042.538046 2.127919194e-09 0 0 0 0 0.002106335368 0 807634.6774 0 8.941622537e-07 0 0 0 0 1.136961718e-06 0 0 1.569095316e-25 0 0 3174.920242 0 0 0 0 0 7.038627449e-06 1.144110792 20517.15802 0 0 0 15.14756499 0 0 0 0 60.143638 0 0 0 217.1215921 0 2.573744416e-17 0 20163.43784 0 0 796016.8297 0 1.067935093e-08 0.0003244175744 0 191.1512203 0 4.026459179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006236404486 0 5869.975725 180466.596 2096.171463 0 0 0 0 0 0 5.638816138e-11 0.0009910146882 +0 0 0 0 0 0 0 0 0 6.334643366e-12 0 0.01035989933 0 0 0 1143615.254 0 0 0 0 0 0 0 0 5.091833813e-14 0 3.804894622e-11 0 0 0 0 0 21.48226046 0 0 1.88764134e-11 0 0.009697730514 0 2.087257968e-17 0 5.094319709e-07 0 0 0 7116.444522 5.820530175 4.40463147e-07 0.1366638373 0 0 0 0 0 0 0 0 0 0 6.842441861 0.2019200129 2396113.148 0 0 0 0 3519.649402 0 279746.6392 820.3538745 0 0.002454244907 198364.6357 0 0 0 0 113564.0278 33.29545616 0 0 0 0 5.398958055e-07 0 8.433890143e-13 0.005770772184 1.52843133e-07 0.5418451263 0 28.13401511 0 1.020386822e-16 0 0 8.914600486e-05 2.5353596e-05 1.143545628e-06 5219.425248 1.984595366e-06 4.116924217e-16 0 1.283679727e-23 0 5.765990241e-10 0 0 0 13080.50534 2.582945238e-08 0.02284713347 54.37054436 0 0 22369.20458 2.71008694e-09 5102.236699 0 0 62144.80302 1.98488559e-12 0 0 1118.209271 1.76330864e-10 0 1.464177979e-29 4.813285166e-09 0.00477590866 4.879320334e-11 284551.6029 7.139055872 1.117739237e-20 0 24.23967984 0 0 9.654373481e-12 0 0 0 0 0 8.314501166e-09 0 18.7410146 2522248.734 0 0 0.03375483542 3.988879585e-11 25.64662423 0 3.84961989e-11 0 4.827089977e-16 1.064418844e-08 200.9503023 2.161389036e-07 0 0 297.754547 5.422050036e-11 1.204252629e-08 0 0.01876549736 2.025370232e-08 389.931287 35.47001267 0 326238.2221 998.373922 2.095713113 706511.3641 0 0 0.239385758 0 0 543.9950004 0.06399364236 1.260848328e-12 2.265811862e-05 2.699760775e-12 0 0 6.722297341e-12 0 0 3695.287235 0.01371309534 188.5545992 3.118214579e-15 8.445475639 124.6959106 1.014040533e-07 0 0 0 0.00418569596 11.54946634 0 0 0 1.544586901e-23 3.775265534e-24 2.427804183e-08 2.341276149e-06 0 0 0.5853629572 0.001436143481 0 0 0 2.980711889 0 0 0 5006007.228 3.675787774e-07 0 71.99340655 2464073.787 50625.28629 0 0 0 0 55081.6844 0 2953.553934 0 0 0 1.499572322e-14 0.005424331037 0 0 0 0 0 0 0 8.013870463e-10 0 0 9.694525297e-13 0 0 0 0 0 1.541507452 0 0 0 0 0 0.0005904125805 0 0 0 0 0 5.840400424e-11 1.147120088e-12 5.301966007e-21 1.89846881e-07 0 95.75626254 0 0 0 0 0.001921845517 0 0 0 1.81519614e-12 0 0 4.585599044e-19 0 0 2.288508656e-16 0 653490.3448 0 1.309360632e-08 0.01567643852 0 9685.242174 0 0 0 0 0 0 319158.766 +0 0 0 0 1424.279834 0 0.1602956439 0 0 0 0 2.610148976e-19 0.006471075122 0 0 1.170876755e-13 0 102018.1447 0 0 0 5520.911075 0 0 0 0.001820362454 0 0 270.7123997 6.783192473e-11 548452.5721 0 0 0 0.005478058946 0.01463432314 3.272875859e-08 3.12918769e-15 0 0 0 3.704518892e-08 6.335376552e-16 0 0 1.295760128e-19 0 0 1.108551163e-06 9.951894626e-12 0 0 0 0 5.048425146e-06 0 2.635534276e-12 2741.045928 0 0 8.489077247e-05 0 0.08960256817 0 1.397702616e-11 0 0 0 0 3.34301278e-06 0 2.758584438e-07 0 1.520231017e-12 3020.33627 0 3.663362038e-14 0.3465735751 4.036784257e-13 2.857516948e-09 0 0 0 0 0 0.01708656456 1.015266279e-12 0 0 2.358154352e-19 0 0.008326237501 0 1.463079886e-09 3.629916336e-09 7.561006512e-25 3.852004392e-11 0 4.385767201e-08 0.0001292912569 0 2.070275111e-05 0 0 0 0 0 0 0.003936193554 3.109705489e-08 0 366218.0024 0 0 0.01395399434 267711.4724 0 0 5.584253608e-22 1.861716048e-08 0 0 0 687558.2904 359444.0137 1.796707956e-08 0 4.842541659e-05 0 0.004380840938 0.0001251063251 1.655445114e-05 0 1.256899399e-24 0 7241.024432 0 0 3.163723808e-10 0.01067867935 0 0 0 0 984864.5967 1.101642679e-07 1.686840879e-08 1.701654872e-05 7.810114743e-18 8522.731251 0 11558.03923 1214819.687 0 9.796643137e-06 0 0 1.727453898 0 0 0 0 0 88818.68702 0 5.532897943e-08 0 1.253202657e-08 0 12199.33746 0 0 2.236733231e-07 35.5808506 0 0 0 0 0 0 0 1.76503185e-05 1.433618523e-18 0.001112854604 4.349959284e-17 0 7.310501064e-05 9.716685089e-11 9.91481407e-07 0 0.4051369988 0.0002196292612 0 0 0 0 0 0 0 5.801549836e-13 0 0 2881.945341 4698081.306 0.004855319399 0 8.832706978e-05 0 0 0 9.888470086e-15 0 0.0001183504108 14101.06207 0 13.50063111 0 0 9.879852883e-08 20689.23236 0 94973.78463 1.482587354e-10 1.136083994e-07 0 0 0 6.506129127e-15 0 0 0 0 0.002635607913 0 0 0.003999806785 0 0 3466.29561 0 0 1.494636909e-09 0 0 0 0 0 0 1.509698558e-15 0.5016532176 39515.14146 0 0 0 0 2072.84077 5.519327871e-05 0 0 0 0 4.50610816e-08 0 0 1.333990466e-23 0 0 0 1.727972334e-21 0.002034716685 8.501544629e-15 0 0 0 0 0 372292.1978 0 2.745301382e-10 4.030275654e-21 0 24772.25513 15981.77141 0 1.213437276e-14 0 5.794879543 0 0 1.53430615e-07 13450.25576 4.154921559e-22 0 3.078488974e-05 3.061338706e-06 6.17147076e-11 0 0 0 0 +0 0 0 0 0 6.088573477e-18 0 61.4335248 0 0 0 5.739702528e-11 1.419934202e-21 0 0 3955592.137 0 0 0 2461789.852 0 0 0 5.392564413e-14 0 0 6.959381613e-16 5.066422358e-12 1.188554332e-08 0.0006864049578 0 6.318870488e-11 1580.314723 0 0 0 0 0 0 0 0 8.002560323e-08 3008.782257 0 0 463855.0318 0 0 1.775103252e-12 0 277420.9335 2.247786518e-16 0.4481474365 2.073752983e-18 0 4.89606851e-18 0 0 194411.7048 0 0 0.02297505132 304.003496 2.654210601e-18 0 1.497788882e-09 0 0 1.116667426e-07 8.80492395e-10 0 0 1.432717314e-11 5.783157447 0 2.14945148e-11 161748.4402 0.5558587034 1.624810709e-27 0 0 0 0.007926931549 0 0 0 4.94871687e-10 0 96.17147559 0 9.025428432e-06 0 0 0 2.660572771 0.002191490158 0 2.234371464e-08 0 1.098737138 1.348748187 1.648918448 3.955506601e-10 191234.8579 0 0 0 0.0004011994214 0 0 0 9685.669838 3.822018648 8.911851484 0 3.257292035e-12 0 0 2.1891714e-07 0 0 0 1.076925535e-11 1.204565739e-09 0 2.506860938e-07 0 0 0 3.903400013e-06 9.755687604e-08 0 0.005315861636 4.864771536e-10 1.139763451e-05 0 8.068311946e-10 7064.55974 0.6945973707 2.775951067e-16 0 0 0 0 0 1.1323819e-16 3.085474825e-05 8.712217118e-21 0 0 352786.3318 2.01662286e-10 38615.55625 0.0001046870168 6.159611657e-09 3.66819757e-11 0 8.035910425 8309922.98 8.078834605e-17 0 3.774997205 0 1.714028993e-13 0 0 0 0 0 19.61419957 6.662611347e-08 0 0 0 2.379577491e-07 11.91154379 0.002579659111 0 0 0 0 0 0 0 145.3632462 0 6.071169687e-20 0 1.445950374e-11 0.4448792317 5.395179182e-08 0 0 0 1.864461563e-14 0 0 0 221689.1053 0 0 0 0 0 0 1171847.259 0 8.795242727e-09 0 0 2103.243786 0 0 0.1748986727 2.171509994e-09 2.403191364e-13 0 0 0 0 0.7987551622 0 1.985274627e-18 0 0 0 3.481650987e-14 0 0 7.922077483e-07 0 6280.512484 0 0 0.1841003041 0 0 0 0 0 0 2.826537647e-11 96.59660478 0 0 4.577936845e-15 0 0.82948171 0 0 0 0 0 0 4.660801121e-12 18813.56731 0 1.892951345e-32 0 0 190012.7383 0 2.82655393e-10 4.398324194e-12 0 0 0.2223576899 0 0 0 1.135770286e-16 0 0 1.776151937e-07 0 0 0 2.327789785e-10 0 0 0 0 0 0 0 0 0 0 0 0 3.047842452e-21 31.70728208 11.50494814 4.325113982e-15 1.343129557 0 0 5.969201808e-07 1099479.807 0 +0 0.004265636232 0 0 0 49058.68145 0 0 0 0 0 0 0 0 0 0 6.193986839e-11 0 8.876903758e-13 0 9.207015987e-10 8.724743658e-10 6.389379966e-14 0 0 0 0 2.760414545e-10 0 3.233258288 791.801319 0.0001090578288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 658.1746582 143232.8254 0 2.192423042e-11 0 0 0 0 0 1.581642939e-08 0 0 0 1.016866821e-15 0 3.992771554e-11 6.387842732e-25 0 7.291737492e-18 6.024346745e-09 0 0 0 8.382489333e-29 0.0005005722438 0 1.242284285e-27 0 0.03840828997 0 0.001231663613 0 1.014079684e-11 2982.70091 9.246939541e-08 77843.4748 5.64280653e-16 2.888147103e-07 0 0 0 0 56781.93955 0 0 29.47415546 0 148938.4097 0 86.31722068 2042376.46 2.990358343e-09 1.177266259e-09 0 0 0 0 6.255080158 9.897395693e-11 1.588694506e-09 0.01568995038 0 0 6.832104106 1.112505013e-15 0 0.3937758214 0 0 0.03386161391 2.526372281e-05 0.3840114282 653996.5541 120488.0571 0.0003365567295 0 1.331829838e-16 0 0.1015235014 0.00336887819 0 1.5895056e-08 2.366685148e-10 0 0 5.394090255e-08 0 0.009516134521 1.261286494e-07 3.953114487e-10 84421.07344 0.001290616285 5.254599679e-24 417767.2936 5.941648091e-06 38.89387951 3392153.83 1.158281422e-12 0.0007121358106 9.556497561e-11 0 3.00502777e-08 7.159643018e-16 2.431022241e-05 0.0004133963996 7.373484166e-08 0 0 2.259079597e-22 0 0 0.06434409986 0 0 4.415603648e-18 0 0 1.788590437e-12 0.008514620632 0.0002694504235 0 0 332194.9729 1.21098209e-13 0 0 4.145903951e-08 0.0009023597411 0.0002100964123 0 1.295398628e-11 6.838032585e-06 39752.58327 0 1.328435237e-10 0 0 1434041.927 10744.56971 0 58712.21767 0 3.88129575e-09 0 0 0 0 0 0 1229029.643 0.09097456384 0 1.198620515 0 172.4530905 0 0 0 0 5.068937004e-08 0 497.1989987 0 5.497746519e-22 0 0 3.738038029e-10 0 0 0 3.199889992e-17 0 0 0 3.034204621e-05 0 1808.258209 0.009989062341 322434.7225 0.0001628611041 0 0 0.0007354347796 0 0 5.948135194e-06 0 0 0 0 2.115727803e-06 807844.1692 2646.404366 0 0 121688.1706 0 1630475.502 0 792337.9006 0 0 2.835900515e-13 9.147132662e-14 43.31571628 0 0 0 0 0 0 0 0 0 0 1.995754393 0 0 0 7.406750884e-07 1.966846434e-24 0 2.458990986 2.27283032e-25 0 0.0001446467705 0 0 0 0 0 0 0.4024262878 0 0 7.490450117e-16 0 0 0 0 1.988986319e-07 0 1.532573493e-09 0 0 +0 0 0 0 11985.94459 5.269243644e-07 311.5308388 0 0 3.161817642e-30 0 0 3.998621268e-05 0 1.512940011e-11 0 776336.2908 3.861295196e-09 0 0 0 0 0 2.782738684e-28 0 0 0 0 0 2.322043379e-06 459907.4233 0 0 0 0 0 4.610444776e-14 0 0 160.3955346 0 0 0 0 0.002948112223 0 0 43.80203755 0 0 8.417635502e-11 0 1.086707301e-13 0 3.881995824e-07 0 0 0 0 0 0 4.119568875e-05 6.337511276e-06 0 0 465677.8869 0 0 1.241407696e-21 10.52952014 0 0 0 0 2.443414914e-14 0 8.403246003 4.729080976e-11 0 0 0 9.42008189 0 0.9388947825 0 5.458481088e-14 0 0.001102277164 1.054706914e-09 0 0 0 0 0 0.01388444482 0 0 0 0 0 1.310236382e-08 654076.3171 0.000310106377 0 3958174.883 0.0002087494578 3.203937779e-09 0 0 0 0 2.373274182e-05 1.625294619e-09 0 0 2.473878333e-09 0 9.715707115e-09 0 1954.207476 0 0 4.549046946e-12 1.463134627e-16 0 459.2277016 0 9.404377574e-07 0 2.832637983e-13 0 0 8.365243116e-11 0 0 0 0 0 376694.2032 0 6673.644349 0.08733916114 1.017680045e-12 0.001078120435 4.75871085e-24 0.2382688066 0.0006261629847 0 0 0 812516.3352 0 1672.250999 0.04921839058 0 1.647564497e-14 0 0 7.53902568e-16 0 0 1493.658314 2.265655622e-05 0 30.11718889 0 0 0 0 1.814947215e-06 4.007147205e-06 9.772907238e-08 0 0 0 14729.35813 185095.1097 3.669712759e-06 2.078828402e-10 0 3.844007711 0 0.001427267528 0 0 0 0 0 3.34247121e-16 0.0001269730285 4.177044513e-12 0 0 0 0 1758.261025 0 6.307542137e-22 4.173556742e-15 2.814306836e-19 6.490590279e-17 0 472410.5442 0.4976532329 2168.787573 0 0 4.043826797e-18 1.200493521e-05 1384.000888 0 0 0.05267843548 6.544503729e-07 10.72651555 0 0.1706068485 1.975551793e-10 4.489949283e-09 0 5.532344366e-26 0 4.190335578e-08 2.105463297e-12 1058.622448 1.002195968e-12 0 0.002519609063 2.670277022e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 2110.50503 0 0.004387573306 0 0 0 0 67.27497156 0 0 0 7.292985961 0.2580038992 0 0 3.251717176e-10 0 3.756520897e-27 0 0 0 0 0 0 0 0.0003187790204 0 0 0 0 0 0 0 92065.0825 0 0 354938.0143 0 5.115869816e-16 0 1.139577986e-25 7.220457014e-06 0 5.605266162e-08 1.249277179e-14 0 0 0.08585414655 316663.3934 0 0 0 0 0 382430.4805 1.62046542 0 0 +0 0 0 0 2.643501773e-08 4111.024133 0 0.09515359206 1934.598605 0 0 0 0 0 28.34172584 0 0 0 0 0 7.232944278e-07 0 9.084433594e-21 0 0 11.72229277 1.211931056e-06 0 0 2.732979049e-08 0 0 0 0 6.087920277e-11 7.084032463e-05 0 0 0 9.990822604e-21 0 83.52161277 0 7.76824191e-11 13702.10657 2.031248992e-11 0 0 0 0 1.949634978e-19 0 0 0 0 0 0 2386.94315 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.215413413e-15 6.510555557e-08 0 0 0 0 5.937433269e-06 0 0.003947485217 0 0 1.485059738e-05 0 0 0 0 0 2.038029313e-12 1.095324916e-10 3.595010567e-15 6.678206136e-11 0 0 1.271639075e-07 2.650990585e-07 0 6.657480907e-22 8153.489632 0 0 0 0 0 0 0 0 2.137371923e-09 0 0 0.06775970475 0.1686655224 1.989219174e-14 0 0 4.378399186e-13 0 81206.91234 5.450884059e-26 1.766499951 2.690616737 0 0.0007193658979 2.268466262e-05 2.495897105e-05 900850.9122 9.423079839e-09 2.614512459e-08 3.387262777e-11 1.28862109e-06 2.204308009e-13 0.0001178388224 6.199691892e-15 12943.29529 0 0 0 0 36.01113475 0.62168853 0 0 0.0006257472925 1.910556809e-27 9.678958787e-05 552912.0269 0 0 14.16936123 31.61606498 1.260658842 0 0.8379510452 2.721801963e-17 16524.85727 2035.884081 0 0 0 0 1.125928615e-10 9.238350958e-09 534.8589335 0 0 8.515450857e-06 0.0006530783866 0.06397523929 0 0 0 0.9609266991 1.467111705e-15 0 4.116959084e-14 6.611214878e-09 4.942197206e-10 0 0 0 0 0.00132063617 0 5.30461173e-10 0 142904.9989 0 15788.47972 0 0 2534853.312 10216.32051 5.167037282e-20 459946.6726 0.3277388725 7.375722746e-13 0.07298805872 0 0 3.547864578e-07 132.5026879 0 0 0 7.285512506e-12 0 0 0.3367743186 208104.3578 0 0 1.698993152e-26 2.682630211e-05 5.807662836e-05 2.675022592e-07 0 0 0.07090794415 0 0.0001396029044 0 0 5.64531235e-16 0 1975.199046 442801.8116 0.0003005008956 0 2.921234557e-15 152.7427494 2.855149315e-05 0 1234.208316 0 0 0 0 1.510987018e-14 1.328577269e-16 1.041845583e-19 0 4.204228411e-05 39695.84993 0 4.098153327e-27 1617872.521 0 0 3.613066266e-11 0 0 0 0 0.02858973234 8.525926384 0 2.934763387e-06 0 0 0 4.339930486e-09 0.001210855958 0 9.64123149e-14 0 59346.36947 0 0 0 190093.7122 0 0 295523.0714 0 0 0 5.41009621e-06 0 0 0 0 0 0 0 0 0 0 7.948797279 0 0 0 268508.081 1.286728269e-10 0 1.430008354e-08 0 0 +0.9488205885 0 503.0316119 0 0 0 0 0 0 0 0 7.706053289e-21 0 0 37513.07657 1.407253963e-15 0 9.921774512e-06 0 0 0 9.629257043e-24 0 0 0 0 23045.40841 0 0.02061621537 0 0 0 2.952289103e-05 0 0 0 0 0 0 0.01582981825 16.53923798 0 0 187756.2391 0 0 0 15.06065024 1.420078051e-09 0 0 0.01213387604 0 1.353563545e-10 0 0 0 0 0 0 14.10408643 0 0 0 14.16750335 0 0 1.046553701e-06 0 1.62870947e-11 0 1332128.539 0 0.004915015076 4.608072266e-11 24636.03454 203.2274307 0 0 8.253852982e-07 0 6.56073541e-08 48959.76443 0 0.0007396821236 0 233.8898332 0 0 0 0.02136745052 2963.636377 3160.014831 7.789110738e-16 0.08479452418 71704.00627 2.599003269e-15 2.655346255e-08 6.362544085e-09 1.962680895e-05 0 37.90196889 1.182035368e-05 0 0 0.01776535126 3.73874157 1.224161682e-13 0 0 1069.20452 753433.4589 0 3.622762488e-06 0 1.681608092e-14 0 0 1.007119957e-10 7.012049581e-07 2.926242255e-05 1.531226222e-10 0.01278582757 1368.363564 7.140375229e-10 0 0 1.512348093e-11 0 0 4.650885653e-15 0 1.969200872e-12 0 2.135701382e-23 0 0 0 0.8017990061 1.708599375e-11 3.525831876e-10 0 0 0 274.4922613 0 0.055726244 7.57942813e-26 1.982259387e-13 0 0 4.326073864e-23 0 897.1654403 5.641409932e-05 0 0 85432.28741 352692.5468 0 0 1.89397335e-06 0 0 305193.5189 0 2575.327456 26002.68404 0 7.670983881e-11 1.346436755e-15 124591.3558 3.637512327e-12 0.0007155187519 0 0 0 0 0 0.2496562054 2.921113767e-11 1.021465612e-10 131277.9027 0 0 2.985301961e-12 0.002928700318 9.611285193e-19 0.2322824694 0 0 0 2.841223831e-05 0 22.0948754 1.934323996e-05 0 113.3126378 368.5144318 0.00446668139 0 0 189274.8265 111810.0941 0 23314.78618 0 0 0 34840.31455 1.731582755e-13 0 0 24194.57936 3.403008368e-14 0 0 0 4.554576344e-08 0 7.090005696e-21 0 0 0 4673.075358 0 0 0.0008389295879 0 0 0 0 0 4.846762897e-17 0 0 0 0 0 739495.8436 14.20251673 0 0 0 201.8950176 1.55990411e-07 0.08335972019 0 0 1.307620386e-10 0 0 0 0 0 0 0 0 0 0 0 1.276661918e-06 0 0 9.284019698e-05 0 0 0 0 0 1.480126479e-12 0 0 0 0 6.239601872e-13 1.582145617e-18 0 0 0 0 0 0 0 0 5.494408135e-26 0 0 0 0 0 7.501888441e-09 2.38224029e-08 9716.376826 7.888035851e-11 2247.091758 0 122249.7582 0 1.183452334e-29 +0 0 80897.95885 0 0 0 2231210.471 0 0 0 0 0 0 0 0 0 0 0 1.51074098e-14 4.40885608e-19 0 0 0 0 1.211428819 2.316511527e-12 0 0 0 0 0 0 0.04014288396 0 3017.156308 77062.09171 0 0 0 3.646550186e-08 0.01231632599 0 1.496947502e-22 0 1.287295323e-19 5.525524252 0 1376099.861 0.0001578877701 0 0 11.89547991 0 8.52707905e-08 0 0 1.5486314e-06 0 0 3.415767978e-11 2.50521132e-13 186.536985 0 0 0 0 3.700772285 0 0 2.894937295e-06 0 0.000101171146 0 0.7236361174 0 5.841333151e-15 0.0001642778843 0 4.444770352e-06 1.294594048e-18 0 0.02332706958 0 0 22.1635836 3.774613429e-13 0 0 0 16893.22567 0 1.042991214e-05 1.083954977e-09 1.864696048e-06 8.036401698e-10 0 0 4.727300283e-06 0 8.859041089e-26 0 0 1.255979009e-06 0 7.211480717e-05 2.277967225e-07 1978038.654 0 0 0 1.139221831e-09 0 0 2.596915696e-18 433.039374 0 5.639131453e-16 0 5.658341877e-05 0 8.645975682e-14 47.51279136 0.01249841989 4.215303605e-10 0 7144.406877 0 320771.9126 4.314938374e-12 0 295133.0907 0 2.728332985e-07 0 14815.20003 0 45212.32801 3.410222573e-16 2.156401757e-08 0 3.199716149e-21 3624.272085 1.413927275e-11 1.002743416e-11 0 0 158567.6445 0 0.01135777429 0 0 47.37539206 1068.512379 1.122406153e-22 0 0 0.4263860438 4.488187921e-16 0 0 8498450.057 0 0 6.55531991e-12 7234587.694 0 43706.18809 251262.7418 0 0 89838.92738 26.5321434 1.013702171e-13 1.486864814e-05 0.01343160544 0 0 0 0 0 0 0 1.751014121e-06 0 0 0 77410.47666 0 0 0 0 1.770458158 1211.747966 0.04534913599 0 0 0 1.635165519e-05 0 6.100541379e-06 0.06987186501 0 0 0 0 0 1.57672519e-10 0 8.96961942e-05 0 0 1.004729455e-12 0 0 0 0 29.89523572 0 10159.5962 0 1.910114446e-15 97965.46712 0 0 0 0 2.185252282e-24 0 0 5756.415837 0.001299250171 0 6.427860285 0 0 0 0 0 0 0 0 29.41192309 0 7.203173469 1366640.159 90.72921596 0 0 0 0 0 0 0 0 0 0 0 0 0 7.480647076e-05 1.097680496e-26 0 0 4.246346715 3.20311104e-07 0 3.439051662e-15 0 0 0 0 0 0 0 0 11.33914474 0 0 6.883018705e-20 0 0.09265641852 0.002758027301 8.463526791e-06 0 0 0 0 1.269250438e-09 0 0 0.002977629367 5376.125082 0 452.623644 0.01234774906 0 0 0 0 0 +0 0 0 6.900564152 0.2207194873 0 4.168209357e-08 0 0 0 3.303067491e-11 1.264199779e-12 0 0 7.961197354e-05 0 0 0 757972.3861 0 2212159.468 0 2.161814173e-21 81.88457464 0 3.22085452e-07 0 0 243.3077867 0 0 0.0002158432729 6.342581037 0 0 1.625869956e-18 2.315464802 0 0 2.192003466e-11 0 0 0 2.296627397e-07 0 0 0 0 7.529140512e-13 0 87.50975228 0 0 5.774085045 0 0 1.127215586e-05 0 0.003928993943 33.15717743 0 0 0 0 0 1.538601586e-05 0 5.346043254e-06 0 0 1.944035706e-09 0 0 0 0 0 4.330574826e-06 0 0 0 0 9.155188183 0.02675884486 0 0.1969247974 0 14304.53086 0 0 0 0 0 2.797870638e-07 16000.11018 1.084359387 0 385.8678264 5.125339607e-07 0 1.235856669e-17 2.882345994e-28 0 0 0.003447339974 0 4.949057931e-11 0 0 0 8.858118132e-07 0 4.372642016 318864.8746 0.0007409540989 0.004019221479 0 3856539.052 0 2.483594337e-18 31.99048989 0.01095025539 0 689.4743075 0 3.138928521e-12 457842.7451 0 0 0 0 0 9.725816505e-12 0 0 8276.178575 0 0 5.705367011e-15 0 0 0 260939.6085 0 0.007431276576 0 57.09599084 7.174170586e-06 299640.5059 6.933202905e-09 0 0.001262312705 0 1.477655875e-07 0 0.009657475323 0.005284038446 0 205328.2361 5.933905367e-11 59173.91195 0 0 43.03191836 1.958795e-16 0.05583323011 1401998.777 2.029862527e-11 0 1.791731406e-07 0 2.374922357e-11 0 0 0 1.423935879e-08 1.897254868e-14 0.01109000629 0.02547798131 4.757759584e-20 3.148777361e-05 8.214399294e-10 7.655300117e-06 0 0.3020004711 4.584962137e-05 0 0.04140389394 1.504725291e-21 0.8068248234 0 0 0 1564.385351 7.238940033e-08 0 2.525455811e-11 0.0002069309206 0 0 0 0 0 0 1.510870342 0.07740025558 0 0 3.315935594e-12 2.788520928e-08 5.039706683 0 959.3531842 0 4.303607118e-10 6.61093163e-29 0 2.290881417e-12 0 2.649180246 4.246310274e-15 0.000302394956 0 0.2604518453 0 0 0 1.915883484e-11 0 1556.78169 0 0 0 0 8335.566055 1.284295137 0 0 0 5.065492013e-08 0 268134.3054 0 0 181282.9783 0 0 0 0 0 0 0 0 7.239352313e-24 0 0 0 0 0 4.857688886e-11 0 0 0.1199414356 0 0 0 0 0 0.0001460542177 0 0 3.999728146e-13 8.289850485e-11 8.867698913e-10 0 0 0 1.19557657e-07 258.3806783 0 0 2.050679779e-11 0 0.0001021780731 0 2.282874818e-08 5.819832443e-08 0 0 0 0 0.0006927247443 0 5.354690505e-08 0 2.883645783e-06 0 0 0 85824.95419 0 +0 0 0 0 0 3.931054186e-13 0 0 3.214085004 682.3817945 0 8.13889608e-29 9.018127915e-12 0 0 5.083688186e-20 0 0 6.616950779e-13 0 0 0 0 0 4.268366588e-19 0 0 0.106201982 0 0 28.57085561 0 0 13437.19282 0 0 0 9.963351174e-09 104441.9806 0 1.727296467e-17 0 9.376283861e-05 0 2.957817475e-11 0 0 0 0 0 0 4.63536254e-08 0 0 0 110306.7627 1.574688372e-10 0 0 0 0 9.719107681e-20 0 0 6.127998409e-07 0 0 0 0.002959953248 0 0 0 3754.011928 0 171559.8479 0.04766591198 6.435315195e-06 78416.92348 0 0 3.455428511e-07 0 10.28009091 6.945230385e-27 0 0 627236.2387 0 2.915213199e-15 0 0.02307001036 0.03188341894 0 0 5.07567882e-15 0 0 24.50610506 5.032670465e-10 173310.7774 0 0.06903450531 0 1205.719748 43960.26195 0 0 0 0 6.555626931e-14 1.278977892e-14 0 0 0 0.4907969037 7.164464323 0 0 0 0 0.052054121 2.609296994e-22 0 9530.498966 0 0 2.439264552e-27 4.211799244e-31 5445.995493 0 0 0 0 10805.23299 0.01946507975 0 0 0 0 7.884071002e-20 0.01959021518 0 1.181008754e-13 0 0 0 5.697179274e-11 0.004837231709 0 8.452203951e-14 0 1.516713603e-11 109.075833 0 729682.2264 10912.05761 2.490082499e-12 0 3.519172947e-07 0 221618.4815 0.0005508158125 0 1.13417234e-16 2.315630346e-08 0 0 0 0 0 0 1.246934774e-21 14698.44429 1861.563868 161964.0073 0 1.101676921e-09 0 0 3.249494462e-05 0 1.413482734e-11 221.0887903 0 0 1.194091596e-19 1.983535186 0 0 0.1026309121 0 400832.0281 0 4.009564351e-05 0 1.976311863e-10 0 0 18419.92153 7.52491429e-06 0 0.001450398998 1.192411388e-05 0.3564939632 4.178267884e-11 1.604738132e-05 220.3808748 0 0 0 0.2883708189 7.809879555e-13 844.6821661 2.643035127e-14 211223.5061 9.834429012 0.1521936874 4.225668514e-11 14306.75217 0 95.59853491 0 0 0 0 0 305182.598 1.826089815e-08 0 0 0 2843.770768 0 0 0 1.430503975e-11 0 1330.278652 7.937409864e-05 0 8.456807859e-13 5.549474702e-11 1.654561317e-18 14713.59735 4.957272223e-12 0 0 0 5.262583169e-09 0 0 0 0 0 15590.28765 0 0 0 6.770266769e-18 0 0 0 0 1.160450941e-06 0.002677781103 0 0 0 0 0 0 0 1.70228145e-05 0 0 99369.2233 8.158300168e-07 0 392.5584507 0 0 1.551502232e-11 0 5.329387465e-07 0 0 38.13770245 0 0 0.2092995149 5.807139701e-14 0 0.1319318889 0 0 0 0 0 0 0 +2.1724426e-16 0 0 0 0 2.05842923 3.744355064 7.644451557e-07 641.6728203 4.56777885e-06 0 0 0 0 4.696420981e-17 0 0 0 0 0 0 430307.0274 0 0 1.434320454e-09 136.5918288 4.371542504e-16 0 0 0 14836.56634 0 0 6.344192042e-26 0 0 0 917368.0619 0 1.007431029e-14 0 0 460964.8562 0 0 0 6.456370742e-13 0 0 0 485.1527815 211.0786679 3.372630437e-12 0 0 129551.0998 0 0 2.779730282 1.724145096e-12 0 6.141551937e-18 0 0 0 1.558164509e-13 0 0.004759719661 0 0 0 0 0 11.49914852 0 753.5388037 0 0 6.181790913e-05 0.4738225418 0 2.032627057e-15 0 352191.5352 0 0 2.186528805e-14 0 5.721485885e-23 0.0004851760004 0.003325002501 6.992050748e-08 0 69.6800548 0 0 3.205600886e-09 0 0 0.4411373727 1.123310779e-11 631.9743194 2.123061183e-24 0.0006805834854 0 39073.9968 0 0 0 3.216562579e-18 0 19.72264019 0 0 0 0.008724979383 2.994668939e-28 216299.3812 0 3.016677757e-13 0 7.000133374e-10 0.008315742832 0 0 0.001940460562 1460.705624 0.07420231757 2.517414099e-11 6.309496386 0 2.373491656e-20 2.027779115e-24 0 0 0 137.6002895 0 0.08139224442 4.274293665e-05 1.247848752e-10 4.716921141e-08 0 0 2.019723935e-06 5.053929163e-07 6.558518785e-10 0 0 7.549567096e-15 2.83672769e-20 56.51345535 1.685670253e-13 3.785929397e-12 2.724432217e-10 271.0997988 0 0 4.907480057e-12 280.8611701 918614.3794 0 1072.733561 0 4.940095159e-06 0 151.4076577 0 0 728507.4686 0.006002349975 3.58546032e-09 0 0 5.430864344e-11 18.10223494 0 1.010257394 23635.84113 0.0006182829511 0 0 0 0.0014697976 0 0 0 0.0005151519649 0 77819.79857 2.993185472e-18 0 1.404279891e-13 0 5.132129183e-18 2455573.978 50180.61719 0 705244.7663 33.61281639 0 0 0.09109930647 1.303734872e-11 0 0.002026857938 0 0 3.22449501e-14 0 0.0002110217427 0 0 0 0 0 42.18926869 2.220639105e-05 0 2.701487771e-13 0 0 0 1.553833081e-08 0 0 0 0 0 0 0 0 0 956974.8932 0 0.1514704253 0 9.787842218e-13 0 1027.563899 1.84014e-12 1.26999161 0 0.0002861425112 0 0 61.18826751 1.014657921e-18 0 0 0.8544517881 3.109982102e-23 1.792732633e-17 4.857961168e-05 0 0 1.31240999e-12 4.06163673e-09 0 0 5.439878956e-11 17353.54859 128.5278969 0 0 0 0 0 0 6384296.366 0 9.341542132e-07 7.812841646 8.657481535e-11 0 0 0 2.288765278e-12 0 3.952496054e-10 0 1.519803633e-14 0 0 0 0 0 8.452893742e-10 0 0 3.896419886e-16 0 0 1.469370983e-17 0 0 1.810803334e-21 0 0 0 +0 5.097842992e-07 0 0 0 0 0 0 0 0 0 1.114138204e-05 0 0 0 7.729821708e-13 545.1079622 0 4.460274069e-07 1.549145003e-07 0 0 0 0 0.005598113376 4.695129996e-06 3.404083122e-19 0 0 0 0 0 0 0 0 0 169884.9902 0 0.04148387068 0 0 0 0 0 5052.633589 0 0 6.356595718e-08 0 0 0 0 5.875556966e-07 2.69459017 0 0 0 7.81517828e-08 0 169680.0324 0 0 0 10910.7629 0 272.4386015 0 0 0.004790746557 0 0 0 0 0 12.51977605 0 8.793179205e-08 0 1.570313761 1.072233597e-26 0 203.6101468 5.393399637e-08 1039.413511 1.429329258 1.161080656e-10 2797.934359 0 0 4.118736834e-05 0 0.006886598848 0.001559101386 0 0 4.929437826e-15 2255864.715 0 0 0 8.004450609e-12 13.00323257 668683.7533 5.652653048e-14 0 0 1.38249961 3.460299892e-12 0.003356727349 0 0 0 24.3173723 124553.351 0 0.0007509913096 768492.1365 7.079544031e-05 629175.1408 324437.8078 43.03930676 2.154676914 0.01781484618 0 0 7.376363185e-18 3.574507895e-11 0.006714999622 10.06820791 4.330215731e-06 9.176897271e-14 0.001191879732 0 0 0 0.06524724695 0 2.063551285e-23 0 2.889173316e-22 0.001260525219 29.61306452 0.02803812089 0 9.307900664e-16 0 6.230388945e-13 0 1.561703514e-18 7.860274476e-05 0 504.4164845 0 0 9.205585489e-15 2.936070658e-09 0 5.897695431e-11 1.764668576e-08 1.344913692e-09 0 5.513699571 75.38446678 0 5.462792219e-11 4.693885895e-08 3.703278485e-11 0.0001441674993 1.277418654e-10 0.0001074332977 3.57008325e-19 0 0 0.1194427386 0 0 5.040910326e-05 3.47076247e-08 0.0001312129608 0 0 0 0 1.171580924e-08 0 0.003860161568 28705.97135 0 0 0 199853.5416 0 0 0.002518270023 0 0.2015862039 0 2.29953928e-15 1.894205384e-15 0 0 2533.08739 0 0 0 4.818422642e-07 0 4.408427011e-10 3378.926182 3.241344221e-06 0 21048.44109 2.191520591 0 0 0 0 0 0 0 0 0.8038884631 0 0 0 0 2.197038078e-05 5.451053996e-16 0 5.995890734e-17 0 3.091125462e-09 0 0 0 181.3698403 7.732677813e-16 0 2.717620667e-13 0.0009737738603 0 0 314151.7494 102.3004923 0 184418.8023 161.8401392 802.1877578 1.955401655e-19 3.20489082e-05 0 0 0 0 0 0 0 0 0 2.686078757e-11 0.001092176323 0 0 0 0 0 0 0 0 1.0594586e-14 0 0 0 0 0.10658667 0 1.287076657 0.08657988346 0 0 0.3328026828 0 0 0 0 0 5.060625621e-14 0 29.02295283 0 42163.29477 3.593306003e-10 0 0 4.519108984e-11 0 37.11331935 0 0 5.844985075e-05 +0 1.488378242e-06 0 0 0 104681.8709 0 1.305640944e-11 0 1.608819292 0 0 0 0 0 0 2.459320119e-24 0 0 5.701225211e-11 0.01316443298 0 5.974956805e-08 2.379179949e-14 0 0 6.934035307e-10 0.001752814148 0.07851049941 0 0 0 0 0 0 0 0 0.05902762035 211115.1981 0 0 0 1.207562491e-07 0 278.8848297 0 51671.28838 0 0 0 0 0 0 0 0 1.294053369e-15 0 0 0 0 0 232148.1233 0 1.65948901e-17 3.910939905e-13 0 0 0 0 0 0.0001494169297 1806962.747 0 0 0 0.5270096888 0 0.0002116764589 0 0 0.02198179275 2.769156546e-14 0 1.8574702e-16 0 0 0.0004060675327 0 5.204519825e-11 0 0 51.98418273 325.5896906 4.127879675e-08 0 0 0 0 1.842956688e-14 0 0 0.02195047945 0 3748429.897 0.0001169030392 8.222312195e-14 0 3.247103103e-33 0 79.10931876 12233.96178 1.758551788e-07 0.002652460902 0.03846241441 5.554840683e-27 2053.84379 0 21.90950994 0 0 4.908448635e-16 8.349092136e-06 0 0 3.449324379e-15 3.145702512e-05 0 0 5.53832435e-15 63891.2535 0 0.0003988909796 0.4115606176 0 2.548120979e-15 0 9.809706072e-22 4.057954768e-09 50.08644621 0 8.584287477e-07 0 0 0 0 0 0 0 0 0 377962.4803 0.00601159841 0 0 0 0 2.964170251e-17 0 0 0.002446789461 0 0 1.31845423e-09 3.934437322e-08 0 0 0 0 0 0.0009005807964 0 0 0 0 0 0 0 0 2.201421908e-18 0 0 0 0 51.64738011 2069007.536 0 2031.863967 6.135018174e-12 0.0002970304865 7.480442887e-15 0.1992550143 0 0.0002598732642 78.47823054 2.572849198e-23 0 107753.5365 3.71575292e-09 0 0.009190483664 0 0 0 172.2940036 0 0 0 0 1299.902027 0 0 9.611018684e-13 3.85715004e-12 0 3793.014963 3.822625405 1.739414423e-07 0 0 0 119.1414882 0 0 0 6.027204095e-09 0 0 0 4.879286282e-20 0.000470389252 0.2950506169 0 0 0 0 0 0 3.393454811e-14 0 0 0.0008451149155 0 0 5.550253093e-16 1010475.495 0 0 0 0 0.01404315496 19112.30682 0.001526695493 0 0 0 0 0 43792.23841 0 387.6515562 2410372.104 0 0 0 0 0 0 0 30.73262324 0 0 0 0 0 0 0 2.712254388e-21 0 0 0 6301.294727 0 0 2.743845773e-13 2.323161531e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.366342246e-10 0 171049.0783 1.268569021e-08 1.695607078e-16 8.283395512e-10 0 0 0.01271513845 193.7602585 0 0 0 0 0 2.67931436e-19 203.8593497 1332044.485 0 0 6.365397433e-07 0 0 49.38627235 0 0 0 0 0 0 0 9.898360938e-14 0 0 0 0 7.770707904e-11 0 1.719275739e-11 0 0 0 0 0 0 0 0 1585625.301 0 0 0 4297.259051 2.313811908e-20 0 25277.59415 0 0 3.974949023e-05 0 73790.68369 0.000561682403 1.980080125e-16 0 3.989058847 995.3408015 0 0 7656.460941 0 0 4.058638685e-17 0 0 0 0.1364980168 0.270026868 0 33064.69269 2.246080373e-05 0 0 0 5.219464101e-09 0 6309.627477 0 0.02744926052 2.688086136e-10 1193314.395 0 0.001155682111 1.850869933e-08 0 6860.049911 0 0 306.3650594 0 9.257108388e-13 0 0 3.44879453 0 7.468201852e-11 18.63175615 0 6.07999849e-08 0 1.064281275 91.08787878 3170.90102 0 0 0 0 0 0 10471.49986 0.283301971 0 18.88483182 16328.07276 0 3.159649207e-05 2.062836559 1.676495264e-19 773760.9166 8.354517834e-21 222.2786977 0 0 9.789417903e-15 1.303870805e-11 532171.4408 1.299931856 0 0 0 1.288277366e-09 0 5.853105323 2.673871158e-09 0 3.111812733e-10 0 2.220495535e-07 0 0.01615450146 0 6.263058704e-13 418.7915925 0.02249292041 5.87447196e-25 110147.1441 0 0 2.85770041e-06 43868.82564 299517.4716 0 0 1.166876971e-21 0 1.669506475e-06 1.544076992e-07 74.21660297 0 0 8.210118093e-07 5.143666166e-09 1.608019245e-11 0 0 0 6057.482735 0 0 0 0 0 1627.103318 0 0 6857.333806 4.798868357e-11 8.455190456e-16 5.076270155e-08 114000.807 0 6.251258987e-20 0 0 0 0 71769.6522 3.88801476e-08 0 0.09021741013 2.115806851e-16 0 0 4.58243556e-18 0 0 0 0 0 0 0 0 6.124723673e-10 4.664962093e-18 0 0 0 0 4.567093464e-12 0 86323.68283 0 2.135271283e-19 2.984203972e-09 0 8.060149843e-05 5.414745973e-20 0 0.001209826388 0 0 0 0 0 0 0 1753247.912 0 0 0 0 0 115594.0137 0 112185.9815 2.265955726e-16 4.144056959e-17 0.1535371739 0 0 0 0 1.622447657e-20 0 2737150.105 0 0.00204721994 0 0 0 0 0 1.106673526 0 2.282101575e-06 65.50188252 0 0 2.334546185e-10 0 0 4.118257459e-18 0 3.050616519e-05 0 1110.792023 0 0 3.101649682e-13 0 0 0 7.43604817 0 0 0 2045100.021 0 0 0 0 0 0 0 285330.4117 0 0 126927.0693 0 3.839110733 0 5.157208111e-27 +0.009565070635 0 0 5.576286532e-07 0 0 0 0 4.654564163e-14 0 7.805937988e-08 0 0 0 0 0 0 0 1.985610786e-06 0 0 4.053305632e-15 0 247721.5412 0 1.935803596e-10 3.19135019 0.000311067298 2.161007754e-14 0 9.752119351e-27 9.228879875e-11 0.004054744895 2.649895341e-13 1.380792776e-13 0 7.886542658e-11 0 0 0 0 0 0 0 0 1.916550869e-16 0 8.650290202e-11 7.024070556e-17 0 2.166244726e-21 2.323964206e-08 17383.78393 8.420810502e-06 0 0 0 0 0 3.061327921e-05 0 0 3.436410722e-14 0 0 0 0 5.7133737e-09 2.596016698e-17 0 0 1.096218712 0 0 0 0 0 0 0 0.004191785531 1.322654712e-14 14.74588464 0 2.729812908 0 0 0 0 0 0 0.0007893744359 0 0 0 0 0 0.01438505518 0.5089760788 7.123116766e-10 0 21.6413368 3.574606039e-19 0 0 0 7.416049917e-14 0 7.662653724e-23 0 3.307833371e-06 0 0.02307626579 667.935754 2.603423957e-09 1.236541207e-14 24534.21841 1.66351555 3.37777776e-27 0 0 62.62851324 0 6.723759453e-33 0 0 3.271044033e-19 3.361617517e-13 2.295628176 9.26164917e-06 0 0 2.761522268e-05 0 9.448609577 0 0 0 0 8.157568824e-27 0 1.22339982e-11 0 143791.7198 0 0 3.08751205e-10 1.89970306e-22 0 0.002255952333 0.003155331238 0 0 0 0.0001695738771 3.171721151e-08 0 0.0001417991834 0 0 142021.0058 0 0 0 0 1.145310176e-14 0.00110210504 0 1000.103589 0 216.572589 0 0 0 3.482388178e-16 0 9.4688051e-12 0 1.040955476e-09 5.143670779e-08 0 0 0.0003085364947 4.623604032e-08 3.471767899e-08 10625.20765 1.158818435e-05 6.787605763e-09 0 0 0 0 0 0 0 7.261835908e-19 631.6203066 0 10506.59647 0 5.943093808e-16 1.511571025 0.01231052812 0 0 1.716798329e-08 1475.189162 1.630857271e-12 4.5252217e-10 0 0 0 0.000563102799 6.980911162e-18 0 0 0 0 0 1125457.699 1.161981092e-12 0 0 0 0 230087.7452 0 0 0 78.6973264 0 1.124927209e-22 0 8.033916186e-11 6.257693699e-11 2.233861181e-14 391.3275431 1.167732917e-27 0 0 0 0 0 0 5.641453274e-17 1.721251237e-05 0 0.02884629646 0 0 421330.9184 0.0006514504682 0 0 0 0 0.02304748137 0.09578902204 0 0 0.03791096068 0 20801.84741 0 183.6604281 0 0 72810.72265 0 3.8703184e-07 4403.304339 0 0 0.0001653899871 34092.80051 0 0 8.210283065e-13 0 2.651779622e-06 0 0 0 0 1.105934183e-13 2.226385245e-09 0 0 0 0 0 0 5.398671343 0 0 0 19.61464925 0 0 0 0 +0 914732.8712 0 4.908328456e-05 2.56539565e-11 906739.0896 0 5.655537687e-09 0 0 0 1.122566707e-29 0 0 0 89523.5875 0 0 0 231403.6743 0 0 0 2.238519345e-05 0 0 0 0 0 0 0 9.532703594e-05 442422.7486 1.463457077e-12 4.763327855e-11 1.36151767e-05 9.881660253e-10 0 0.6284771826 0 0 8770.168553 0 0 0 2.974092391 7.754816573e-11 0 0 0 0 6.358678275e-11 0 3542.024899 1.380173105 0.06163683552 0 139.9934377 0 0 0 0 12.88728371 0 0 0 0 0 3970.833223 0.0003725807289 0 0 0 0 1.037634446e-07 0 3.6866623e-06 0 0 0 1.967553691e-06 0 0 0 0 0 7.594380755e-06 0.0003001247827 9.58735557e-11 0 5.457480114e-09 0 836565.0031 172.512635 0 5417.007845 56.25831337 3.240749861e-14 0 1.687845543e-11 0.05402319495 0 0 0.05135081648 0.0003141266062 2.00652498 21808.90764 6.505897637e-07 2.245165071e-09 2.429938363e-26 7.840774831e-09 1.046391567e-14 0 0 2.464772065 0 0 0 0.002378234767 0 0 0 144512.9645 3731.575362 592663.6347 86.7748562 0 0 0 7.244994795e-16 7.087400268e-08 379281.0278 0 0 1.768892959e-07 1.791919025e-12 0 4.596892431e-09 4.370829166e-05 637987.5866 0 0 5.044265561e-20 0 0.0002412039963 1468.751553 0 2.320415714e-13 32821.34005 9.338439028e-10 88.84321437 0.06337792263 0.8084557286 3.47447511e-19 0 4.347172101e-10 7.043765967e-20 0 1.057663868e-29 5.186321584e-11 0.001255172711 9321.688889 4.166161652e-17 0 0 7.931408964e-05 4.14748354e-18 197.3269336 4.683851109e-14 0 5.559447666 0 0 0 26301.44175 0 0 3.262644645e-05 0 3.725270869e-12 0 4.812261822e-11 0 6.647150757 1.224103492e-19 4.653857772e-08 0 0 3.828461564e-18 2.367064652e-13 0 0.7328538606 0 6.652038439e-12 0 0 1.75944001e-08 0 4.855143469e-10 0 2.065812067e-08 0.0008065716694 0.00433484261 0 0 0 0 21571.33909 0 0 0 0 0 0.0004038480826 239.6885654 10291.81393 0 0 0 5.526181531e-22 0.002936044357 0 0 0 0 2.401112481e-09 5.014980899e-05 0 0 0 0 0.03076835189 0 0 0 2.368251582e-18 0 0 0 1.678698328e-09 0 2748.470378 0 0 0 0.003853612091 9.029928495e-17 0 0 0 391469.3026 16065.7492 0 0 0 0 0 1.096214585e-15 0 0 0 150220.0113 0 0 3.816869487e-07 0 0 0 0 0 0 0 0 0 0 0 55.41807036 265951.3588 0 2.466189068e-17 0 0 0 1.430495084e-15 3.029935038e-09 0 0 0 0 0 0.09955584223 0 0 3.164484286e-05 0 29535.12247 0 9.313626951e-12 4.314759691e-11 0 +0 0 5.256553386e-07 0 1.575242697e-12 0 16572.92503 1.39509598e-15 0 0 0 1.152698894e-34 0 0 0 0 0 0 0 0 0 0 5.319952656e-09 0 0 1352.851991 5.437596608e-13 7.697260955e-06 0 0 0 1.676425673e-13 0 516725.723 546.8997812 0 7.176993689 0 0 0 12819.69659 0 0 0.2125187257 0 0 0 7.398831365e-07 0 0 0 0 0 1.743109958e-10 1.893716018e-13 0 90007.34571 0 2.634471065e-14 0 3.697675324e-10 0 0.00228341008 0 0 0 0 0 0 114156.6596 0 2.570449003e-27 0 0 3.206863238e-06 0.004705888271 30.25286223 57731.97989 0 0 365.1771682 0 41.4905856 4.128926814 0.005066563871 0 1.121448129e-11 1.116892829 449265.5756 11.76285305 3.768774813e-14 0 77.21039068 0 0 23871.94293 0 0 0.001312198492 0 1.190013766e-05 0 0 1.013469827e-14 3.507800706e-08 0 0 0 0 2.856760991e-11 0 0.6675002957 0.03092950216 0 0 0 7.250936082e-14 5.350787181e-11 0 0 0 0.0114761398 0 0 0 1.324293947e-05 54.22762943 3.324413597e-15 3.964934854e-13 0.0005086621431 281891.7956 0.7496011466 1.250621007e-06 600.5123734 2.852800315 1.115143858e-22 2.716696362e-07 0 2.312675917e-08 0 0 1.227334594e-07 2.342807736e-05 0 5.365827222e-10 0.002499092028 0 0.0002444542236 0.0002474284824 5.028291558e-16 0 0 3.331886892 0 68.50604746 0 0 0 0 4.997077688e-11 0 0 1.423754911e-10 0 102.1522872 0.4395740079 1.65982538e-16 0.003112722619 0.02038599826 428573.0323 42201.74505 0 0 0.5376696257 0.0003202312512 0 0 0 0 0 0 1.808429864e-06 3.73557062e-05 0 1.686665241e-08 1.525493861e-11 1.257755451e-07 0 0 2.006320059e-14 4.619696974e-09 5.731462938e-12 0 48915.2211 1.259308106e-09 0 0 0 0.8266507835 1.487814536e-14 0 0 3.933047832e-08 0 0.003667280451 1.895973473e-06 14100.11109 0 19873.54703 0.2526767125 0 0 0 0 0 0 0 0.02729447201 0 0.0001156254582 0 0 3.358392091e-10 2.66624541e-26 0 1.137783565e-14 0 0 0.0102507549 0 13771.68084 1.434674637e-13 0 0 2.093681356e-13 0 936.5662201 0.000158159471 0 0 0 0 0 1.45285756e-07 0 0 0 0 2.926963109 0 0.9473307825 5.012942551e-08 1.857516851e-05 0 0 0 0 0.01030161032 0 3.573689701e-10 11800.95327 0 0 0 0 0 0 0 0 31774.24153 0.001754166297 0 1.117855048e-22 0 0 0 0 0 49060.90613 0 0 0 1.322919506e-05 1.103005739e-11 0 0 2.816238642 0 0 1.313559078e-16 0 0 0 0 0 0 0 0 856594.6114 101.7185854 +2.523592685e-23 6.552025422e-05 0 0 0 1.422636864e-20 8.549853037e-09 0 0.004906833882 0 0 0 2.160838808e-10 0 0.00256557956 0 0 0 2.867009237 9.909615729e-22 0 0 0 0.6673538692 0 0 0 3077.186841 732.6586177 0 0 0.001152594942 0 0 0 0 0 1.888002501e-05 0 3.879148604e-23 0 0 3.234810336 0.002967122321 4.387127969e-07 1.035869327e-09 0 4.620756297e-25 117276.6548 0 0 76.3254791 3705.269415 0 0 0 8.097884823e-16 0 0.001154317 0 4.286538437e-14 0 0 2.770066638e-08 0 0.6507496557 3.843371012e-06 0 0 70611.72343 2.49333535e-08 115265.2856 0 0 99300.84366 0 0.01105608763 148.7404558 0 0 3.446148915e-10 33.49320911 0 5.703407341 2.911084881e-05 0 0 7811.996804 6.811726788e-13 6.295048863e-05 0 9195.320548 0 0 0.007806595647 0 0 2.655460872e-05 3.811295643e-31 1.666822559e-06 2.896072554e-13 0 1.664873572e-12 0 0 1.886266319e-17 1.300463544e-23 0.04322644042 0 2.68315295e-07 152223.3095 1.032724988e-05 6197.292745 2.676891767e-11 0 0 2.215273954e-13 72055.75335 1.70663437e-07 0 9.044244437e-07 2.665282675e-14 0 0 0 0.0004071847487 1.70397019e-10 93.35516859 4.642388727e-13 5.686086425e-10 0 5765.058572 0.0001421324296 0.0002081807964 0 0 0 0.0001534706062 3.249003624e-20 0 6.096059799e-17 0 1.959310213e-09 1.055369209e-12 565.1370386 0 1027.922204 0 1.127986758e-05 0 0 0 2.290558536e-09 1.652962157e-11 0 0 9.844171959e-08 0 226812.0583 26662.99633 0 0 4.34299706e-17 0 0 1119451.581 0.0001705416245 0 1.731555868e-23 0.00232769669 0 0 929412.2638 0 6258.171593 0 751.840085 6.43293759e-09 8.115202791e-12 0.00218411535 1378724.587 0.3814512987 0 1.07682858e-09 0 1.142313551e-24 0 4.24532637e-15 0 0 0 0 0 5.441299414 1.351734808e-14 0 0 2.834662442e-15 0 0 0 1.182876202e-12 26558.76461 1.295809558e-08 0 0 0 15.09765179 1.889243736e-09 0.0009298558925 0 0 0 0 0 0 0 4.370241278e-14 0 0 5.13771156e-05 2.085488219e-07 177.7065035 3625.813828 0.2131491277 0 1767099.328 0 0 0 8.424194885e-06 0.000300514961 1.985209718e-12 2.478789526e-11 0 0 0 17805.78337 5.114241037e-07 0 95691.99283 0 0 7.619971488e-14 0 0 0 0 0 1.360869415e-11 1.15387153e-16 0 0 0 0 5978.652608 0 0 0 0 0 0 0 0 0 0 0.0001954877975 0.02115192001 0 0 0 0 0 0 0.01121283626 0 9.804681035e-16 0 0 0 3.414071904e-06 0 0 0 0 0 9.199881265e-07 0 5.437815204e-21 0 0 0 0 0 519.1958376 3.808473287e-06 2519317.692 305390.0397 0 41690.66457 +0 489432.2611 0 0.9417510211 0 951.4488599 0 0 2.389750021e-11 0 0 0 5.785606716e-06 0 0 0 0 0 0 4.417057524e-15 0 7.32825438e-07 0 0 0.05210231134 0 303.8016727 5.070941974 4.332844582e-25 0 0 0 7.498970524e-08 0 824.5389386 0 3.360155702e-19 0 0 0 0 0 1.076098721e-10 3.892414422e-05 0 0 2.817838258e-05 0 5.758440596e-07 7373.272318 0 0 0 3.93356938e-12 3.206365076e-06 7.147014217e-12 2.137897675e-18 0 0 0 0 0 825273.0789 0 0 0 0 17.71589791 1.584835928e-05 0 1.414854135e-25 0 4.062749994 31.93879674 2.026293873e-12 0 416293.6949 16471.36746 0 0 0 0 1.671167997e-11 6.89343702 0 0 0 7.277812895e-12 0 0.02213123763 0 0 0 0.00558013222 0 0 4328.072301 0 0 0.0002373040372 2.197456372e-07 3.477249312e-24 7.348279354e-13 0 1.110320879e-25 0 5.685301013e-15 0 0.001106938402 0 1.463883707 1.766137989e-09 0 5.089581331e-11 0 0.2875119626 0 0 4.953559246e-13 0 0 1425.368838 3637999.782 0 0 0 0 0 4.257801038e-25 0 0 2.034548855e-15 2.071968896e-10 1.310533961e-17 0 2.513309312e-27 3.149044138e-22 0.003134118364 0 5.361093599e-12 1.70259128e-14 3.580680764e-05 8.758711948e-21 0 0 1.239314472e-09 0.0001103023614 0 0.03866435086 8.225816069e-12 0 0 5.775185807e-12 1418234.081 0 0.05080564091 5.53385401e-23 0.07730017707 0 0.0006622603167 2.053799481e-05 2.639346896e-08 0 0 2.932017435e-17 8.122702817e-13 2.088605684e-06 0 0 9.740864809e-15 2.203282083e-08 0 1.203224038e-14 105645.9798 18413.64917 304437.3657 25.51440147 0 2.750680329e-11 0 0 0 0 0 0.01530578674 0 0 0 157.1880484 0 0 0 0 0 5.024519431e-05 1.033294913e-11 0 0 0 0 1.319228461e-11 9.591139418e-19 0 5.262461015e-23 0 0 0 0 5.811619984e-08 2.784527259e-06 0 0 2.188273371e-22 3.205663355e-07 3.279126189e-22 0 0 0 0 2.569179775e-13 0 0.002847876759 0 0 0 0.0354073423 0 0 0.1795155361 5.210345618e-15 1726499.635 0 0 0 0 5.339610481e-30 0 0 0 0 0 0 0 0 0 0 0.04849310333 0 3.203595391e-06 0 0 0 0 8.115287735e-18 9.368940574e-08 0 0 0 2.651939517e-13 0 0 0 0 0 0 0.01652052724 0 5.446596987e-11 0 1585615.915 0 0 0 0 0 0 0 0 0 1.409094722 0 0 0 0 0 0 0 0 0 30.60889961 13316.83094 0 0 1.596164502e-16 0 0 0 0 0 8.878915616e-11 +9.980141134e-06 0 0 295145.6007 0 1.080852751e-08 852342.3747 0 8.315137531e-23 0 82176.00826 3.135972531e-13 0 33050.25863 0 1631.613615 0 0.1637198477 0 1.75352898e-06 0 0 657910.435 2197542.146 4.090303262e-22 0 1.719211027e-11 0 0.0001621906895 0 0 0.00158771576 0 0 0 1.669759828e-10 0 0 1.202906685 0 3.637063754e-10 67.06344355 0 0 0 0 1.400563711e-19 0 1.455200623e-14 0 0 0 0 0 0 847.1617645 0 0 1.385578523e-07 0.01985237557 0 0 3.473915385e-19 0 2.770531245e-07 0 7.566300476e-16 0 14442.06605 0 0 0 1.255877999e-14 0 0 0 0 0 0 10158.68963 32.14694812 0 4.366045278e-13 2.504252922e-05 0 0 0 0 0.05895903904 0.0990503607 1.5653921e-08 0.000271400085 0.001649382722 0 0 15.35661518 0 0 0 59717.60259 0 0 0 0 4647.185414 0 0 1.56511234e-05 0 0 0 659480.012 1.260063878e-16 0 10726.49066 0 4.214344601e-22 2.92889635e-15 0 8.543192703 6.622446496e-21 4.255403074e-07 0.002937068385 0 2.503004442e-11 0 1.279523131e-17 5.2665039e-06 0.7874307236 0.05978573503 1.265640308e-10 0 0 9.45936402e-06 0 0 0 1.232803285e-18 2.939699628e-12 229937.1484 0 8.290898186e-05 0 0 0 2.361422022e-07 1.309553393e-08 0 2.590112425 2.325695867e-07 0.3261372392 6.086037022e-08 0 69818.77705 5.670739736e-17 0.001751846091 0 0 0 0 0 8.513931775e-13 4.469821809e-11 3.797627737e-07 8.973687935e-13 0 0 0 0 0 0 1.465333599e-17 0 0 1.395617998e-08 2.406761867e-07 1457859.937 296.1751416 4.816332221e-11 7.164056575e-25 0 0 0 1.717001684e-27 0.08811684632 5.606673177e-18 5142.323166 0 0 0 0 141421.4806 3.977640269e-08 4.318974398e-10 0.6334633435 2.088417204e-08 8.693659306e-06 161352.8305 0 1862883.245 3.09060327e-19 0 0 0.0003821325863 23688.95703 0 6.959603011e-14 6.231952788e-09 0 0 0 25.98241128 0 0 0 26.07567721 3.122390983e-06 46.29798691 0 78518.78025 59.34242892 0 0 180705.7561 2.250861104e-09 0 4.500770681 0 834433.8286 0 0 192.0868092 0 2.626437425e-07 0 0 0 0 0 996.8160629 0 3.640819268e-15 8.118441637e-13 0 0.0007022814829 0 0 4.068746116 850.4333639 0 1.06023936e-11 0 0 0 0 0 0 0 0 3951603.985 0 0 0 0 3.0065114e-09 0 0 5.514041155e-16 0 5.424332198e-07 0 0 0 0 0 4.69748721e-11 0 0 1.033250636e-05 0 0 0 0 2.109833418e-05 0.3396824288 1.76293853e-23 732392.0227 0.421500394 0 0 0 1.388697978e-05 0 0 4.393324976e-10 0 3.799287566e-05 282551.8379 0 0 +0 0 0 0 2.102098065e-10 0 0 0 1.329312643e-19 0 0 0 0 0 2908718.546 0 0 0 0 3.942689115e-07 0.000887382976 0 0 0 0 0 0 0 0.5229682731 0 0 0.01033381804 3091.12166 0 0 3.35729449e-09 0 0 0 0 0 0 238799.8139 0 0 0 0 0 0 0 0 4.001108499e-07 8.064988946e-15 0 57.87691723 0 0 4.164370201e-16 0 0 0.0001001632366 782472.1126 9.157710759e-06 2952.576826 19160.8332 0 0 1.594186185e-21 0.6241743275 0 1.656430206e-05 5.572411666e-06 0 0 0.04347844456 8.291245094e-06 0 3.218750774e-14 0 0 0 8.277946365e-25 32899.74091 0 0.08878267607 0.02349560191 2.920602797e-10 9.731289166e-07 4.685327402e-05 0 4.769809935e-16 0 0 602755.8572 0.0001654227994 0 0 1394.333104 0 0 0 0 5.309936758e-18 0.0002440430117 18636.68377 1.765237741e-18 2930.986713 21.06569682 90.72714932 142209.9921 9.192975838e-18 3.603279767e-06 0 0 1.880113539e-14 0.002843632295 2.569826006e-14 0 0 0.005671580143 1.3501299e-12 0.001120927044 315.3603736 1.593427941e-08 0 0 0 403.5146698 0 0 0 0 0.474097082 6.808857802 0.3475335647 0 0 0 2.849995014e-09 1.132859264e-11 0.00545041734 0.1718356357 8.199034855e-19 0.6674728032 41933.11191 0 0 1.493621117e-09 0 0.003969570179 4.949771213e-05 0 1.021463036e-14 3.10171686e-13 5.596163862e-06 95157.50438 0.1387986672 1.312315491e-12 0 1.389125001e-12 3.509940191e-14 0.04218887377 0 0 4.507710569e-05 0 0 0 3.466346415e-16 0.661221919 4.809122332e-06 0 0.0005338051519 0 0.0007368432308 0 1.075359595e-05 2.730660405e-05 0 1.191313642e-10 0 2.530160971e-13 0 0.002035851311 0 0 0 7.633381956e-08 6.168992115e-10 2.515015185e-12 0 2.30578058e-07 0 0 1.446478591e-09 0 4.135963019e-16 0 0 0 0.1858913317 0.02676534251 0 0 1.073541576e-07 0 60.80741597 0 0 2.879497895e-05 0 0 659.3430849 1.2051319 0 55.44454505 0 0 3.193570336e-05 0 0.001739448239 0 0 0 0 0 1.907451274e-11 0 2.346925551e-07 0 0 0.136657244 0.1224003739 0 0 0 0 1.529039871e-11 0 1.91448677e-05 0 7.329513469e-10 0 0 0 4.284668243e-07 0 0 0 0 0 0 1.167592374e-08 0 0 2.724469268e-13 0 0 9.136843352e-16 0 0 0 1.197436811e-16 6.652961432e-21 0 0 0 0 0 792759.4543 0 0 0 0 0 4.521712144e-23 1294.110395 0 0 0 2.649680457e-29 0 2.5202549e-06 7.477370188e-08 0 0 1.243186756e-17 0 0 0 186974.5279 0 2.902125141e-05 10490.1673 0 0 43020.46039 13.19451555 0 0 +0.002520849507 0 0 0 0 0 0 3.407978724e-08 0 0 0.00061586027 4.05011833e-10 3.762244513e-12 1.112316376e-09 0 0 0 0 0 0 0.0001444225725 5.760221846e-27 0 2.071013605e-06 0 0 0 1.449542303 6.155326816e-14 0.1309705355 0 5.157157681e-12 40708.34612 0.1883449261 9.754175991e-10 0 0 0.002457629241 4.612959917e-08 0 0 0 0.1835730519 0 0 0 0 6.121521952e-09 0 0 1.718371716e-09 2.089889827 1.714494718e-16 0 0.0001694713153 0 0 0 0 0 3.152453186e-16 0 0 25.28070181 0 0 90108.4999 0 0 0 9.172846331e-12 0 0 0 0 0 1.186648881e-09 18407.75554 1.545315794e-12 122712.0377 870245.8963 0 199408.508 789259.5229 81585.8838 7737.31581 7.091177842e-05 0 0 0 0.01391907318 0.0001051554011 6.871485506e-14 1.877834896e-07 0 1.357340098e-16 0 0 0 0 0 1.731191744e-12 0 0 3140.711556 6.539838955e-15 0 0 0 1.29329268e-10 2.390697485e-26 1.768035106e-06 8.193327609e-07 5.404476333e-16 0.0001056682371 0 0 0.004536569683 5.537939552e-08 0 0 0 0 3.353622161e-09 7.546502651 3.525288808e-21 7.3037871e-09 2.97946758e-08 7.058110519e-05 29423.95966 3.028051814 0 5.068494448e-08 1.553859597e-06 1.33127007e-06 0.2289471875 1.450588095e-19 6.790269016e-06 3.31499368e-14 1.774857803e-08 0 4.095108629e-11 1.479380633e-12 0.002036618217 0 0 154117.2258 0.001337339776 1.282135925e-22 9.289374981e-19 0 0.001973963101 0 0 0 0 0 6.823633916e-26 0 1.443712922e-17 6.183074496e-11 14835.64378 3.316109675e-13 87237.91997 0 0 0 0 1.428505638e-09 0 0 1.950278674e-06 0.0001105043939 0.001743976558 0 0 0 3.173703322e-29 0 4.027785804e-07 0 230620.8733 5.366207539e-08 0.176779999 0 0 0 317.6241791 86516.45682 909.7808913 0 0 0 0 1.231246776e-07 1.150689922e-08 0 5.566300315e-10 0 68789.0719 3.230548872e-05 5.301852702 0 0.02525943642 0 0 0 0 0 2.027971693e-09 0 0 553854.9119 1.169037476e-16 1.050131593e-14 5.872367178e-15 0 0 0 0 0 1897.907362 0 1.245615824e-05 2.193752099e-09 102465.9391 0 0 1.560039746e-08 0 22.51787893 3.672076105e-10 5.779941389e-14 0 0 0 9.905703978e-15 55.09772018 0 0 1.420206415e-11 4.194448074e-18 0 0 0 0.007783307643 1.720595318 0 383658.6048 0 0 0 0 0 0 5765.976808 8.665490251e-11 609567.4102 0 0 0 0 0 26207.37972 62.75049678 0 679.7930014 1.304971574e-16 0 0 0 0 0.02166679111 7.580436044e-14 0 2759.525551 3379.277281 0 0 0 0 0 0 12.66142162 0.000379822069 0 0 0 0 160745.3275 0 800.8724686 0 0 0 0 0 0.5840540474 0 0.008412786044 +4.957490582e-19 0 0 0 5.917513185e-12 8.855298829e-13 0 0 0 7.492824052e-26 0 0 8.359364099e-22 0 0 0.01365337525 3.565759591e-15 0 0 86237.60452 0 0 1000.287101 3.194369022e-25 6782.91574 0 0 7.789534908e-19 2.743868103e-12 0 0 0 0 17.20916478 0.2489737712 0 1.015005435e-12 0 0 0 4.973653115e-09 34.90965812 0 0 0 0 0 3.663164089e-13 0 0 520.8405775 0 807.1956159 0 997306.8683 0 0 0 0 559725.226 4.585428432e-16 0 0 0 0 1.073063249e-29 0 18246.01636 7.694340214e-08 0 0 0.0007590851587 5656.487093 0 0 480391.2382 2.725954214 7.070020442 0 0 0 0.003568195809 9.09563905e-16 0 1.472380427e-13 261.8648173 7.640459733e-16 2.095130114e-05 0 0 0.0004653135907 38.21877392 3.37587435e-13 0 0 0 1.221351038e-05 1.949887033e-05 1404.195348 5.882595355e-14 0 5.930544697e-08 0 2.907552945e-08 4.1360192e-13 2.663869953e-10 0 0 4.824994738e-11 0 0 0 0 0 0 8.860162509e-09 0 1.685000585e-08 0 0 2.793226393e-14 0 0 0 0 0 0 0 22682.56742 3.755600387e-06 0 0 0 0.03844939879 8.68492932e-05 0.7695906778 200796.7189 2.962063961e-09 0 6069.631854 0 67.58826427 0 0 0 1.618380601e-05 15.0405473 1.005743732e-09 0 0 0 2.952775052e-09 0 6.896743515e-10 9.69925784e-13 7.088562447e-10 0.0009672332676 10.52729049 0 0.06928121515 9.379502668e-23 216.1425759 9.847952997e-13 9.17470352e-09 5.708932527e-17 1.098831576e-23 1633496.301 9.227590817e-25 0 1553771.23 0 7.891720359e-06 4.790046874 167511.2284 0 3.685547976e-25 0 7.040473142e-06 1.733509879e-08 6.367292146 434267.3208 1003.208149 0 4.033478804e-10 5.155598454e-09 0 0 2.246383453 0 4.845110952e-10 0 0 1.285914631e-24 0 1.377584347e-15 2.62747279e-12 0.0624478761 0 5.945985036e-12 0.5671721688 28094.8442 107436.3386 0 0 1.145196657 0 6.090090424e-23 6.309453752e-11 0 0 0 0 2.105410118e-31 0 3.853152448e-08 1.148212531e-07 1.368564867e-14 0 2.217327618e-12 0 0 0 0 0 2.693305438e-13 7.616267358e-10 0 3.506603891e-06 0 0 9.486521885e-07 45521.67203 0 0 3.092936094e-08 0 0 1147.165146 0 2.772222161e-11 0 0 2721.305985 0 0 0 0 0.0003850535609 130.2638869 0 0 0 0 0 0 0 9.994241408e-22 3.096657278e-10 1300078.64 0 0 0 0 0 0.156515403 9.997670733e-26 9.609850483e-12 0 0 0 5.048084284e-18 2.446870407e-14 2.34814391e-25 0 0 0 0 0 0 0 0 0 0 9.725359372e-08 5.567521571e-32 290.3940181 0.0004036634464 0 0 0 0 0 0 0 4.379506155e-12 0 1.681137715e-15 0 0.5417297225 0 +0 0 52123.13027 0 0 4.6446185e-06 3.772362103e-16 0 0 0 0 0 931.2997683 0 0 0 1.241164894e-16 8.287773841e-08 3.203692828e-14 1.055810553e-19 0 0 0 0 1.979858675e-16 0 387.2536593 0 17815.37394 1.079703794e-05 0 0 0 0 2.344713388e-05 1.801879476e-09 0 0 9.357160367e-19 2754.433096 0 5.59365611e-06 0 0 0 4.064585367e-14 0 5.318534062e-09 0 337.1886565 0 0 0 9.531689969e-06 0 0 1.081769547e-10 9793.71452 1.142396623e-11 5.787814881e-22 32.40986777 3.648582383e-10 1.776629412e-18 0 0 0 0 0 0 0 3064.982409 1.547650512e-16 0 0 0 33500.18223 0 0.000131787761 0 1.897937513 0 0 0.0001050874668 0 0 0.08739301508 0.0003169355161 0 2371242.964 0 0 7.116365711e-07 8.321935532e-23 0 1.865230473e-07 0.007189507917 4.299860978e-07 0 1.419817951e-13 26574.36704 1.253554155e-05 0 7.35589649e-19 155.1236455 2590.057237 1.344912355e-11 553.9564886 1.460839179e-13 1.066967028e-25 8.308486921e-12 1.327741298 0 0 0 1.167365172e-05 28424.86486 0 0 6.243862853e-11 3.314418402e-11 71423.45587 0 0 4.070408321e-09 0 0 4.876556511e-17 8.767003001e-11 5.455188609e-06 0.004247127869 0 0 9.313468083e-13 5.166530865e-11 6.469550114e-30 7.079069882 0 0 0 196.7698513 0.00244331245 0 0 0.9331639029 0 2131515.546 3.764416859e-10 0.7280828356 4.101205062e-11 1.572404089e-11 0 1142834.881 0 6.195366807e-09 0 7.955670847 1.706027933e-06 8.756253786e-10 24384.7411 76.41522439 3.922410654e-07 1325.311952 0.0013600266 0 0.1331809893 0 8.873409163e-12 13.01684643 0 0 1.721543059e-10 4.978348505e-09 0 0 0 0 0 0 0 1.321461933e-21 0 8.801210878e-12 0 1.312859495e-14 0 3.367084558e-07 6.945654728e-13 3.849408835e-16 0.009552568255 0 2793.357416 7.447725719e-14 59200.54573 8.025496745e-08 4.679406604e-08 6.555176138e-05 2.243607354e-07 275.6530157 0 0 0 3.642488322e-14 5.678500589 0 5.428131917e-06 1.56249095e-13 0 2.32295552e-21 0 0 0 0 0 2279.982677 0 0 0 0 0 0 34.15157247 0 8.25174182e-14 0 0 0 0 0 0 4.867901953e-07 0 0 0 0 0 1.437569918e-05 3.065862211e-10 60.18848733 2047164.383 0 0 0 0 0 0 0 0.0001959260606 0 0 0 0 0 0 5.887718427e-12 0 7.793051696e-12 0 0.007833399812 0 0 0 0 6.356438494e-06 1.412247505e-05 5.716858877e-36 0 0 2365038.496 0 1.023385472e-06 0 5.340304474e-07 0.0366338286 0 0.00231344173 0.01625452127 0 0 0 0 0 0 0 0 0 0 0.5754726837 1.564448571e-14 0 0 0 0 0.004486737561 0 1056.528576 0 0 0 9.664517075e-06 0 +0 0 0 0 0 0.04823552507 0 0 0.6972036757 0 8.083860495e-09 0 0 0 0 0 0 7.240283909e-21 0 0 2651802.266 0 0 0 0 3.184211263e-17 0 0 0 0 58.84568784 1.788378802e-10 0 4.67964955e-17 0 0 0 1.971835488e-06 6.63043423e-10 1.379373338e-07 0 0 349201.0589 0.003028324864 0 5254.520189 0 0.05939119175 0 0 1.84921885e-06 2.593943908e-08 0 0 3.381914305e-11 0 0 2.966355695e-21 3509102.119 0 0 0 0 0 1.993562865e-06 9.947958565e-13 142.1336046 1808.529339 4.588462453e-13 1.595848662e-10 11.29348692 0 3104735.043 0 0 0 0 0 0 0 0 2.59960702e-07 0 0 164.1173112 6.165734981e-13 0 0 38712.99725 1.162618308e-10 5.593349895e-13 3.030231072e-14 0 0 1.173446997e-14 16.73119731 0 1.801184582e-12 2.409788813e-14 0 0 0 0 0 0.0001410186511 0.002712897326 0 0 0.06228669022 0 121669.0436 0.06021781378 0 0 0.4542771034 0 0 0 0 0.000285740995 1346.091624 0 0 159.5286682 1.012696775e-33 0 0 5.939898343e-10 4.268695871e-10 0 8.587500692e-18 0 0 6.714404057e-06 1000.066653 0 2.331530827e-06 1.070175281e-12 2.398825229e-27 0 0 0 0.0009160323057 7.541891843e-18 0 1.562334413e-05 4.052655718e-09 0 0 5.23403508e-06 3.932836645e-13 0 6.58113921e-16 0 2.091173734e-05 1.151447112e-13 0 2.033754897e-11 0 0 2.547371674e-08 0 0 274633.1114 4.584303832e-14 7.832621601e-13 1.248843505e-10 0 0 0 0 8.821101672e-19 2.22796794e-06 1.149550388e-10 5563.439791 0.002935616974 0 1.157088701e-19 0 0 1.8211572 0 790173.3339 6.371409225 381.7543791 0.04073730299 2345.486587 0 0 1.133670704e-30 0 0 3.136183618e-08 1.727143196e-06 726.4647074 0 21.26116481 0.0001208893807 0 0 0 0 0 0 6006.409333 0.0001034100448 2.423370309e-14 0 0 0 401781.7272 0 0 4.45662194e-07 2.571915775e-10 2.681071671e-14 0 0 0 0 0 0 0 0 0 0 2.038668383e-11 1.14252172e-17 1.215890256e-06 7.949266877e-26 0 0 0 0 0 0.0001841344881 0 0 0 2.58275476e-26 0 7.270462148e-07 0 0 1.745794904e-20 1.67289836e-08 4577.253402 0 0 17.69714721 0 0 0 0 0 0 2259692.692 0 6.55038294e-08 0 0 1.628007634e-25 0 0 0 1.710748116e-05 0 0 0 4.744681933e-10 4.019825769e-44 0 5.099686581e-20 0 0 298.7022475 0.05119578636 0 0 0 0.0013445709 10639.3796 0 1012389.478 5.080137635e-23 0 0 0 0 0 0 0 0 0 2.87713227e-05 0 0 0 0 0 +0 0 0 1.302249174e-05 2410.501521 0 0 1.911086035e-09 0 8.472571011e-10 0 0 8.666786217e-06 0 0 1.89397109e-11 0 0 0 203095.9022 0 0 0 0 0 0 0 0 0.001681599068 0 6.448990245e-09 1.102676688e-06 1.856176213e-23 0 9.052726606e-10 0 0 9.787315845e-16 0 0 0 0 0 0 0 0 0 5.637394151e-14 0 92484.8289 0 0 5.337110714e-17 0 0 0 2.552401637e-12 0 0 0 0 0 0 0 1.510586466e-06 3.833537255e-14 0 0 0.08081572514 0 158810.5279 0 9.658874488e-05 0 0 0 0 4600.526326 5.559546577e-14 0 0 0 0 0 4.459688276e-15 2.786065703e-06 9.962842843e-14 165743.7947 0 0 6.883702219e-13 2.726068685e-07 0.1718655174 0 0 302066.8364 3.442855994e-09 2.483081498e-13 0.003013151846 0 1.20158794e-10 0 0 117.7603951 0 0 0 0.9000631994 0 2.61020194e-11 1.33136035e-09 2.908474251e-08 0 0 0.06672317351 1.001256909e-14 0 0 1.963631958e-05 3132.300929 4.491485893e-24 0 0 0 223.0190132 0 0 1.560257683e-11 3.857833947e-16 0 3.747415131e-07 0 688.8265958 3.564231484e-10 0.1433703003 1.320055444e-16 650.2607681 0.2067804449 0.02259937852 10839.39386 80.71127693 0 0 0 655525.6206 0 47.33586724 0 0 1.812443794e-05 0 0 0.002658163784 0 7154.64124 17774.7502 12421.5422 0 0.01080915899 8.723866583e-13 0 0 317280.5828 3.739023163e-08 0 9.158339453 0.1113605571 1.397529633e-10 1.967348154e-15 1.245465704e-06 0 0 0 0 0 1.263968782e-20 0 14509.25909 2.852092052e-10 18066.16029 4234.934329 0.6149762533 155.3805948 0 0 0 0 0.07501560188 0 0 0 4.320048382e-20 0 3.743109349e-09 1.983152583e-08 0 1.986227995e-07 6.33747708e-08 1056.934748 0.0002488816239 0 5.044978978e-05 0 0 0 77.46386663 0 6.025463093e-13 0.0001074188327 589257.8052 0 0 0 2.772210356e-15 0 0 0 2.114079303e-12 121861.5799 0 0.123339414 0 0 0 0 0 0.01542075914 0 0 0 1.041834969e-08 0 54790.37233 817910.1227 0 0.02515404468 0 0 0 1.259172085e-06 0 1345346.463 0 66507.8814 125388.9553 0 2.016813318e-11 0 2.591032877e-10 3.013258118e-11 49094.53579 4.904427767e-10 0 0 0 0 0 0 0.1556757165 0 0 0 0 0 99466.65866 1.982641077e-17 0.0264529531 0 0 0 0 0 0 0 0.0004100331517 1389.049987 0 782200.3103 0 0 9.114089892e-11 0 0 0 0 0 0.001409096035 0 0 0 0 0 0.001404810921 0 0 0 0 3698119.867 0 0 +1.294991401e-16 0 0 0.0008339893628 4.824463352e-09 0 0 0 0 0 1.626255469e-14 0 1.03735464e-05 0 7.487987874 0 0.1071601637 4.404971942e-07 0 0 0.00369552457 1.528624963e-06 23.24853338 0 2.702411502e-17 0 0 0 1003988.186 3.638194152e-16 0 2.215621591e-16 6.342954478e-08 0.01709969721 0 0 8.361395873e-11 0.1373447758 0 0 0 0 0 0 0 1876181.274 0 1.158328557e-12 1.101546421e-07 0.01111316081 0 0 0 1.539989583e-06 0 0 0 0 3.833899989e-10 0 3.339254879e-08 1.160711149e-13 0 0 1.112040236 0 0 0 0 0 0 0 989724.981 5.788216849e-11 73.25754417 922.4145568 0 0 4.161233881e-14 4.880819344e-30 0 0.008711736842 0 0 0 3.2087845e-14 7.434979188e-24 0 0 0 0 19414.00297 0 0 2.905587981e-15 4.292690696e-12 0.004269896828 0 7.479162898e-12 3.642025157e-06 0 0 0 0.001712243531 2.597163401e-08 1.540655319e-13 0 0 170977.5686 0 3.044966041e-19 9.530722827 3513.872989 0 0.03381939205 1.359239517e-07 0 0 3.467041411e-25 4.832546937e-12 8.051782724e-06 0 0 4.956720048e-07 979567.0975 0 0 0 0 0 0 0 663458.8471 0 3.898237959e-07 1.090626932e-07 0 0 1.656453265 0.00142116127 0 0.05155740769 0 4481.215454 0.004912771333 546.1340335 0 1.685735161e-12 0 16.49853284 0 0 2.710170021e-07 0 0 82064.50114 4.841799942e-09 5.854501218e-14 0 0 1487602.438 0 4.99694523e-10 2.948485493e-05 6.809337829e-07 0 4.184033017e-15 8.541999603e-22 2.22988229e-26 1.612157974e-20 0 0 0.0006724328624 0 0.0002038330707 0 0.0002112654643 45864.00623 0 0 0 0 0 0.003800819173 206380.051 5.516906756e-15 0 0 0 552.6034888 0 2224444.032 0 0.610352057 11528.0395 0 0 0 0 0 0 0 0 111640.8134 3.548823315e-11 0 4.599214591e-17 9.913958117e-35 3.939611518e-18 5.940139961e-24 1.183423839 0 0 3.010789041e-15 0 0 0 0 0 0 3.284393109e-14 0 2.686822768e-06 0 0 14932.57488 1.817503416e-29 3243.094193 3.432230816e-27 0 0 0 0 2.132161852e-15 1.127733393e-10 0 0 3.526902541 0.21895692 255790.2253 0 0 0 0.1849392078 59.18007555 0 0 0 0 0 0 0 0 78783.07884 0 0 0 1.054556114e-09 0 0 5760.281776 4.714547856e-17 0 0.0204305716 0 0 0 0 0 4.787655953e-13 4857.088051 0 0.002249076775 0 1.672182894e-22 0 0 0 6.345267925 1.006555987e-06 0 0 0.002390010522 369686.94 0 0 0 0 0 5.250940208e-17 2.565335968e-13 2.910288391e-07 0 215.0191736 0 4463.97634 12167.86751 0 0 0.003716609906 +3.219246614e-20 0 0 0 1.954913338e-09 0 0 0 0 0 0 0 0 6.63057833e-06 6.027352256e-05 0 9.54194602e-15 0 0 0 0 0 0 4.42786844e-15 0 0 0 0 0 0 0 0 0 0 2.613900001e-11 0 0 0 0 217224.9224 0 1.466392068e-13 0 6.162784923e-13 163231.8587 0 0 0 1.992777748e-11 0.0001472302928 0 0 7.619777925e-10 0.00432660161 0 0 0 0 0 0 0 0 2265.031314 0.04617270499 0 0 0 0 0.02780235065 139.0516159 8222.600893 1.089279526e-15 0.08789674662 0 2.211599604e-08 0 0 0 0 0.3819809678 0.06385993263 0 0.0003958527956 0 0 0 15.77153845 4.677030344e-13 3.807209223 0 0 0 1.815023501e-08 1.442995079e-24 2.003288652e-22 1163409.038 0.04656156175 88.49956935 0 0.0001339133269 2.548034522e-08 2.222964001e-23 0 0 7.550930038e-07 0 2.096138932e-19 218739.5223 4.583773322e-19 0 0 2.54437071e-12 0 0 0 1.183677525e-07 0 0 4.046468581e-09 0 0.005306835462 0 0 0 0 556466.0774 0 42359.88549 0 0 0 34.87529421 0.053032741 0.001883066894 0 4.231782624 5.911599727e-07 0.0001563068904 1.013405305e-19 0 5.975532338e-09 0 3583046.683 7.79080273e-12 0 0 0 0 0 6254.812564 0 0 0 0 18650.7873 174067.9778 20.49373458 0 0 165194.7038 0 0 1.415073358e-06 0 376861.1091 0.00213483636 2.064879559e-09 0 0 4133296.81 0 0 6.100696938e-12 0 0 2537473.466 0 1.344871354e-28 5789.491221 2.173728269e-13 0.001317554776 9.650737114e-11 737.0914535 2.289778256e-06 0 1168432.729 0 8.95965261e-07 0 0 3.004446847e-05 0.01637687861 37609.37158 0 0.06304172528 1.07098015e-09 0 1278.787914 4.428648857e-17 3.250025139e-09 0 0 0 6.97394133e-10 0 2044.040548 0 40.17704038 0 1.760880709e-09 0 3.435855375e-06 81.40781475 1.42882891e-05 2049.790597 0.0002600922643 0.0305793069 0 87456.50187 0 0.00137129599 0 0 12988.33116 0 0 0 0 5662.554565 0 1.757481726e-12 0 0 0 0 5.682591276e-12 1.486998453e-09 0 1.973328337e-23 0 0 0 8.431734485e-08 0 5345598.998 7.4723529e-17 0 1.784129016e-08 74.84751844 638.8336077 0 0 1938.538998 0 0 0 819.7265168 0 0 0 0 0 0.02360142237 10.10452574 0 0 2.640867308e-09 10578.97736 0 0 0 0 6.887914828e-14 0 0 0.0005514335538 2831.571677 0 426306.5265 1.614081427e-11 0 0 0 0 7.244438564e-13 1.344481218e-21 0 3.30852162e-09 0 7.709041128e-18 0 2.089816477e-06 0 0.0012315773 0.01205044878 0 12.19371227 0 0 0 +3.397444406e-10 0.001183921032 0 0 2.442454984e-10 0 6.044365965e-19 5.897147589e-06 0 5.189858495e-12 7.058860203e-18 0 0 0.6208559734 646286.1657 2.270324718e-16 2544.673787 2.37400922e-06 604068.8797 0 0 0 0 0 0 0 37.92665678 1.914299974e-06 0 5.082506093e-16 0 0 0 0 0.3294942682 0 0 0 0 0 7657.372911 0 410571.1272 0 0 0.0001295982104 0 0 0 8.637256852e-07 1288.317467 1121699.085 0 0 0 0.003676257407 1.022923144e-11 6.565384224e-07 0 0 0 5.732275441e-27 0 6.425073641e-08 0 0 10.9586048 0 0 0 0 1.310035307e-16 0 0.0002112993215 0 4651.962312 0 0 1.805173258 2.914417201e-09 2.651763506e-11 0 0 3.455747491e-20 180196.5712 9.450617903e-13 8.647020238e-11 0 0 0.0001957551152 1.178410097e-05 6.364302421e-13 0 2.362730407e-05 1.42218078e-32 0 0 1710.441136 0 2148.676991 0 0 0 0 0 0.004192942887 6897.171956 0 72.21288564 0 0 8.244708405e-19 1.523295308 0.004790235617 1062.461084 1.831208909e-11 917.6586254 0 0 0 0 1181193.047 137.53716 0 3.28404649e-11 0 2.874705876e-09 2423.082598 1.025735401e-22 0 2.146903858e-13 3.443622587e-05 0 0 57.86063882 2.327597758e-10 0.03753293995 0 0 0 0 6.663925453 8.448541433e-09 0 0 0 0.0004085199675 3.57862006e-09 0 39556.30974 0 1.89480338e-14 1.132248287e-07 5081.495662 4.927686469e-21 0 31.14277852 7.942973436e-08 0 32.08200316 0.0008994872209 2.034894704e-06 0 9.03056758e-05 0.0007347411376 28362.2482 1.270151228e-11 7.377223462e-15 0 7.11693488 0 0.00995410493 0.004029680256 2.810489438e-11 7.738165434e-27 2.456139814e-08 3.96516839 4.122258575e-14 8.944162122e-19 1.506971033e-18 20219.34901 0 201.9876408 3696.518386 8.048836014e-15 39079.9905 4.516734174e-13 0 1.91362464 0 0 0 1.62300834e-29 0.0001027349896 0 0 1.087562603e-18 0 0 0 0 0 0.09684243089 4.205920604e-12 1.298707403e-13 0.1855677408 0 0 1.968794803e-23 0 2.966963538e-16 0 1.321085758e-12 7.44422442e-09 14.25950495 0 116703.0229 0 0 5.275548802e-06 0 3.305031082e-08 12896.15898 0 0 0 0 2.473591466e-06 0 2130595.677 0 7.893890591e-21 0.04553039279 0 0 0 3.203455176e-19 0 785603.4376 0 0 0 0 9.211603231e-12 7.531651759e-19 1.601158656e-07 0 0 0 0.002865494623 0 1.431472204e-16 0.07239511228 0 0 0 0 7.480198891e-12 1.505406382e-16 0 0 0 0 0.3988502519 0 6.150844527e-05 0.03375466216 0.456615319 0 0 0.0003523636144 0 0 0 0.0003394467528 7.183291443 0 0 0 0 5.791187691e-11 0 0 0 0 0 0 1.222401849e-17 0 708478.6534 0 0 0 0 0 0 0 0 0 0 +0 0 7.061205234e-06 0 0 0 0 0 0.001305791969 0.03860194776 8.089219531e-08 2.297683505e-17 2.366388746e-13 8.345478271e-11 0 0 0 80570.58253 0 0 0 0 1.543762788e-25 0 0 0 0 0 0.0002447750342 0 0 45867.09439 0 0 2.84769405e-18 1.933693575e-13 0 0 0 5.310004076e-06 0 0 0 0 0 0 0 0 0 0 0 0 1.058827959e-08 0 0 0 0 0 0 7634.247672 0 0 1.157606362e-06 7.628771271 0 0 0 0 4.28714048e-10 0.1598060113 0 0 577756.8584 0 0 0 0 4.955907451e-06 4.255531054e-26 0 72.53101179 0 0 4.609378513e-15 0 3.600427828e-16 0.0003738641058 0 1.0641869e-12 0.1180817892 0 0 7.913387868e-12 0 4.312487918e-08 0 0 0 0 0 4.73839193e-13 0 1.683156309e-10 80.59267212 1745.610307 0 6.805038076e-11 0 0 2.5224831e-14 24648.90601 0.01710651112 6.225502191e-07 5.371049759e-13 0 5.469855584e-09 0 2.637568779e-13 1.0962649e-08 0 0 0 0 0 289649.6531 0 5.83559802e-05 4.905652194e-11 0 0 0 9.050825688e-09 1.358540828e-07 0.0008033662085 39.78496925 1.496460364e-17 441269.6762 7.239819361e-07 6.302774945e-27 0 0 0 0 0 0 744207.7857 0 0 0 0 0 0 5.50008322 1.79131939e-22 0.01472513518 0 0 0 0.1575330896 226.079011 99.07936363 675975.7505 1.023226252e-08 0 0 0 0 23802.39455 1176411.59 0 0.0003797730571 0 0 5.494782802e-17 0 1.604800269e-05 1.278860502e-11 3.472397178e-06 8.20532229e-09 1.02954024e-10 24762.80706 2.913126081e-16 0 0 0 0 0 3.662687232e-12 1.814646829e-12 8.015137346e-19 3.779283645e-15 9610.633783 0 0 4.747249142e-06 0 0 0 0 0.1696093077 2.078675833 5.615377036e-06 11.98889414 1.431847916e-09 0 2.928343972 0 0 0 0 0 0 0 0 0 0 0.001591754391 1.403539605e-10 6.557790476e-05 0.0003969990694 0 0 0 0 0 29089.37044 0.4560935351 0.7416254129 0 0 1.086555101e-05 0 0 0 5.79422876e-07 0 0 0 1.959571771e-19 0 0 0 0 0 174277.7863 0 0 0 0 0.6753009262 0 0 0 2.131540632 9.182177149e-05 3.685998442e-20 0 0 1.873158805e-13 6.364428913e-24 5.411368968e-15 0 0 0 0 0 0 0 0 0 0 0.08967324735 0.003857086822 0 0.06138817137 333033.4898 0 0 2273216.141 0.004203256373 0.005274629919 0 0 0 0 2.98336197e-18 0 1.631599633e-14 0.03712842647 3425.331956 0 0 3002.482155 9.55675169e-27 0 0 2.776372559e-11 0 0 0 +0 0 0 0 60.3723185 0.02749457762 2.046741537e-14 0 0.04417947305 0 2.467976215e-20 0 0 0 0 0 0.003688121102 0 0 509368.0767 0 7.762090883e-12 7.011273556e-24 1.798852357e-18 0 0 0.005777138966 3.955923217e-05 1.196947867 5.223963415e-06 0 1.890823528e-09 0 3.749330774e-12 0 0 1.633036646e-08 0 2.359888116e-07 1933.522939 0.005740941397 0 0.1165627861 0 0 7.581136061e-10 0 2.50764246e-12 0 0 47801.32053 0 0 0 4.594288399e-12 0 0 3.968110082e-18 0 3.454946189e-29 2.003980223 0 13.20341362 5302721.673 0.001708163618 0 1.152644293e-13 0 18.52949267 412.7621846 0 0 0 380.0892548 2.551496145e-13 0 0 0.003499392905 10131.97091 0 0 2812975.762 0 0 1.778835602e-11 24.95802508 1.571979868e-11 2.468490885e-14 1.101599928e-10 0 6138.659385 460557.2881 1.949725809e-05 0 0 11710.70858 3.093919731e-07 0 14535.34235 2.0259583e-14 0 1.465337556e-12 702.0127963 0 2.459604861e-06 388.2715658 3.341267245e-09 1.974737684 4.415668821e-09 0 1.127686665e-06 210673.3768 0 0 0 0 0 0 0 0 0 0 0 1.465650726e-08 1.224032159e-14 9.511616905 0 0 26.83505082 0 2.120902179e-05 0 1.779217904 8.597009534e-28 1.862573659e-11 921515.183 69987.75357 1.927020608e-10 0 0 0 0 0 0 9.148829934e-10 0 0 0 0 2.116976294e-19 0 0 3.289237819e-14 0 0 0 1.307942207e-05 0 0 0 0 1059172.814 0 3.949313347 0 3.246936666e-05 0 2.433230392e-11 0 1203670.858 0 0 0 0 0 3.32202453e-16 6.824753678e-07 2.449949596 0 1.26901643e-20 0 0 6.230096736e-14 0 367473.068 4.173998401e-15 0 136041.9085 0 0 0 0 5.069831933e-10 8.491215529e-07 1.165143055e-10 0 0 2.981769441e-13 0 0 2.475028405e-16 0 0 5.887598037e-12 0 0 933183.8341 0.02420534533 0.07173991464 604060.1885 8.579176925e-08 358243.9539 0 0 37.571087 250.8480658 1.823442281e-12 0 0 81.92159074 0 0 0 0 1.522119004e-06 0 0.03931306931 0 8.859969926e-09 0 0 1.066250748e-05 5.112616066e-22 0 0 0 3.629321966 6.059058433e-09 2.470153646e-07 5.221672488e-27 0 6.256020318e-10 2.753511216e-10 0 0 35351.5512 10522.00095 0 0 0 0 2127599.843 1.302966427e-09 0 0.019198063 0 1.836605674e-08 0 655988.0303 0 0 0 2.3814349e-07 0 1.059689475e-16 3.208083599e-05 20.34873024 1.052901958e-11 1.500949298e-07 0.6223218853 0 0 0 0 0 0 0.03722095014 0 0 0 0 0 0 0 0.02982922642 0 0 1.18412457e-06 0 0 0 1.547213237e-06 0 0 0 2.210002452e-08 0 0.0002406216194 0 0 +9.329684048 0 32644.4167 0 0 0 601.0082897 44309.92302 0 0 0.0004856185659 0 0 0 0 0 0 0 0 14.52636539 0 0 4.666871256e-16 2958686.201 0 0 0 0 0 0 0 0 0 0 78.10428115 0 0 417873.8774 1.229405136 0 0 1.009492203e-15 0 0 0 6.310530064e-09 0 0 0 0 0 0 0 0.009939121858 0 0 0 0.0003123196529 0 0 102.6703904 0 0.0001778916939 0 1.686212711e-07 0 0 2977806.393 207762.2077 0 5.014128973e-13 0 0 0 119.8702039 0 9.442443789e-11 0 5.320321827e-12 0 1508068.725 0 0 0 4.678366024e-09 2.176137343e-11 0 259736.265 0 0 0 4.863044675e-18 0.005473895429 228.7955006 8.978456367e-12 0 0 0 0.4800949577 0 0 0 0 1.213623307 0.0365933601 50641.77319 4.227964919e-10 0 240755.8839 0 0 0 0.02127583487 5.334284083e-15 1.478022503e-11 0 0 0 9.102465229e-08 0 0 0 52.09015411 4.122096398e-07 0 3.670429804e-06 6.136489601e-11 0 0 0 0 1.919198442e-06 0 8.536845685e-10 200.3274813 0.3329880224 2.949079635e-08 4.700199372e-09 0 4.693659859e-07 0 4.640045679e-12 0 0 0 0 5.144446023e-24 49921.05591 0 0 0 1.192024966e-12 0.4131451856 0 0.9227937726 161262.1147 0 1.014433146e-09 0 0 1.918705968e-11 3078315.983 3.025173174e-22 0 0 0.009554672287 0 0 4.09728896e-05 2.448150138e-14 0 0.004148310414 0 0 0 0 0 0 0 6.239852562 0 1.117669745e-06 0.003216784526 0 8.634389334e-08 388291.8069 0.0001188311257 0 1.555189004e-12 0 0 1.632539662 0 0 0 0 1.392825499e-06 0 0 184261.581 0 69.78021224 1.529893087e-11 0 0 0.002817271676 18215.31618 0 3.527095508e-17 130292.882 8.39198759e-12 0.1558114751 0 0.0003453620009 0 0.0001735651277 0 0.6197367867 0 0.0002532549215 9.079919639e-26 0 0 0.00714952347 0 8.96344348e-15 0 0 1.937830707e-25 1.133923117 0 0 0 5.712809757e-14 0 0 0 0 0 0 2169.524918 1.417427663e-05 0 0 1.045810043e-13 0 0 2.969443023e-14 0 1383429.549 3.556349201e-11 0 0 0 0 0 1.542194204e-21 0 5.325483923e-11 0 0 0 10.94892173 4.323900226e-09 5.322852599e-13 7.597858802e-13 0 0 0 1.389755922e-09 0 0 0 0 23678.63051 0 0 0 0 0 0 0 1684323.801 0 0 2.770592405e-15 0 0 0 2.079890421e-16 2.075275545e-08 0 0 0.009514492188 0 0 324.7561327 0 0 0 +0 0 3.898819504e-05 1.301329321e-05 0 1.91626556e-17 0 0 0 0.03089469706 0.0001102836782 0 0 9.731553538e-13 4.746693469e-17 0 0 0 0 0 0 23794.80527 8.01230047e-11 0 0 0 0 0 0 0 177291.0917 0 2.585829296e-13 27879.53283 0 0 0 0.3885087935 1156616.396 0 0 0 0 2.707372247e-13 0 401.4629623 0 2.066876134e-10 0 0.348162725 0 0 0 0 0 5.180913096e-05 0.007928535744 1253003.725 0 1.365599671e-17 2.566994366e-19 5.544729668e-12 0 783.3379788 6.411568948e-07 0 0 0 1.091670352e-14 16343.56095 0.05498415043 0 0 0 4.282711453e-05 182.0725758 0 0 0 2.6031109e-22 3.489577436e-09 1.808556577e-08 5.427004081e-21 4.527640938e-30 0 0 2.915016352e-07 3015.767376 0 0 1.917123951e-11 9.603155361e-05 0 1.903178621e-11 5.260644125e-22 0 1.742332434e-17 0 0 7.953401413 381258.4035 0.001870332209 0 8.342918522e-06 1.479753075e-18 2.102251247e-19 0 0 0 318.8160875 0 0 0 7.411574724e-14 0 0 4.601908655e-15 2.99141921e-14 0 0 1.918347344e-21 0 0 0 0 0 0 3.781774891e-09 0 1.877187926e-10 0 0 237393.4385 2.838154304e-09 0 0 81848.70594 0 0.0006059786821 0 448522.3321 3.112897439e-11 0.2674314109 0 5.595638601 0.03182076401 8.948388557e-05 0 169861.0226 0 1.17236717e-12 0 154366.9626 0.004832724688 0 1.562343158e-18 3.575590424e-09 0 1.055203103e-11 0 145884.3828 1.143778796e-10 4.547564378e-15 1734.813942 0 2.697311801e-25 8.916680809e-08 0 0 0 2.186666067 570064.5029 0 1.008178221e-18 0 0 0 0 0 4.747393756e-22 0 0 0 0 7.396965423e-25 0 1.583772001e-14 4.169817248e-05 2.16514265e-34 0 3.986193215e-08 7.442406828e-14 0 12515.0377 7.539697465e-11 13911.77296 6830.730049 0 0.001945878217 1.947417503e-07 0 0 1.897003057e-07 341.0288688 0 1.218166114e-08 0 3.608279276e-06 0 9.334384784e-05 0.0002838007982 4.243539881e-06 0 5.932350724e-09 0 1.172303957e-14 0.04225520159 0 0 0 0 0 0 0 0 0 7.873429905 0 0 0 0 1149.234888 0 0 1.150884467e-15 0 0 1.26923432e-09 1.159076301e-08 0 0 4.191366389e-12 0.359869487 64.5650009 0.008664184347 0 0 0 3335566.004 4.298235339e-06 0 2.077173005 0 0 2.583492454e-10 0 9314.122636 0 0.000538220611 0 0 0 0 2.096810975e-10 0 0 0 5.852718264e-07 0 0 0 0 0 0 2.202563585e-28 0 9.889052457e-05 0 0 0 9169.191614 0 0 0 7.444145774e-19 29568.62411 0.002886875786 0 16.64219063 0 0 0 0.0001856304743 270.9539616 1.839328615e-12 0 6.361995179e-06 0 0 0.01609874309 +0 3.684677335e-19 0 0 2.079803067e-06 0 0 0 111506.4578 0 0 0 0 0 0 0 0 0 214094.9484 0 0 0.1881942493 0 0 4.347353116e-24 0 0.0004658246845 0 7.56654646e-05 0 0 1.119225127e-06 0 0 44553.93663 0.0002879940636 1.701217741e-06 76.9801772 0 0 0 0.0007886828687 0 0 0 1.326742912e-21 2858.610612 0 1160.783672 0 3.555897974e-08 4.724009968e-16 0 192844.0106 0 1.524363679 0 449.0396265 0 3.539866621e-12 63907.29174 19.75956502 185463.6213 0.0007125115545 0 0 5.489668402e-08 0 7.12209119e-25 1.222291422 0 5951.969624 0 286127.8752 6.27017915e-12 204660.1363 0 6.105140623e-08 0.008785144751 0 0 0 0 0 2149362.4 0 3.057508407e-31 0 0 0 0 0 0.001895161423 1.44445634e-11 575.4663922 0 0 0 6.89887667e-10 7.284435375e-07 0 1.315609621e-10 9.771185521e-09 3.085418895e-30 5.571761565e-08 2.043352932 3.246572579e-05 1.476817647e-07 376.3127363 0.06015924881 0 0 8.538959369e-07 0 0.49489971 9.006584861e-05 2345988.772 0 3.231134266e-07 0 0.002919197031 0 6.257161452e-20 0 0 0 3.980966391e-09 2.530029001e-14 0.00178373069 9.00445849e-15 144570.5285 1.913096953e-30 1991301.411 1.024611201e-24 9187.22326 9.86508816e-09 1.953518061e-13 0.001013200612 329588.1755 1.420867399e-08 0 0.000319097869 0 0 15876.69987 763391.2597 0 0 0 3.783118658e-11 1.041768835 4.230323505e-12 0.016107846 3.024963518e-07 0 8.652092069 5.766611461e-14 0 2.500255073e-06 1.501219017e-10 8.159355231e-16 3670.336366 2.017676365e-08 2775.483733 42548.30787 4.453768813e-11 4.821742513e-16 0 3344.271799 42.7697528 0 0 1.504058634 1.246927297 0 0 0 3.890419517e-13 0 0 0 0 1.237441407e-13 1.020003837e-12 1.33679407e-07 0 8.825081885e-09 94.76625476 1.941377019e-06 1.469143348e-05 0 0 110.2807555 0.1108449082 0 0 3212.556134 2713.853071 0 0 0 0 0 0 0 7.542470912e-05 161609.0273 0 25369.94062 0 0 0 0 0 1.330843535e-10 20.71110957 0 268843.4861 0 0.0004153154963 205.8117351 9.980012862e-12 0 0 1.430879149 0 0 0 4.498840175e-14 0 6.018858779e-08 0 0 0 41635.13709 0.0005326653382 0 0 0 0 0 1.590632918e-16 0 1.408769885e-16 0 0.006744004641 0 0 0 0 0 0 0 0 0 0.006684928052 0.009905470335 0 0 0 0 8.547698636e-30 0 0 13.537458 0 0 0 0 0 0 0 0 0 0 0 0 0 2.15688476e-09 1.669187048e-07 0 5.777998479e-22 0 0 153.5518661 0 0 0 0 3.097234254 0 167772.9044 0 30145.35262 0 7.515637191e-19 0 0 0 0 +0 0 0 0 0.04932370814 1.311857161e-16 328.5441022 323372.7926 0 57.72681333 182.2614427 0 0 324639.2902 0 0.002189609223 27658.53964 3.605029263e-15 0 0 0 0 0 0.003142619155 0 8.721737892e-09 0 0 0 0 0 0 1.039814075e-08 223009.892 0 0 0 1.796525925e-30 0 0 0 0 0 0 3.495615073e-06 0.8767046728 0 0 5.61783239e-05 0 0 0 3.315029525e-06 2.871645143e-17 0 0 0 1.603935904e-14 0 1.557031446e-15 0 45826.92103 39431.07011 9.758282946e-06 0 0 0 0 2.792699138e-10 1.059699994e-07 0 661297.1529 0 0 5.340050469 0 137512.4445 0 0 0 0 3.95964723e-15 0 5.684359956e-17 9.038195722e-12 0 13.5885488 0 1.085648513e-14 0 147.2427151 1.88433106e-06 0 3.110855614e-10 2.508479444e-35 1.388003471e-05 0.8644346598 16709.1531 4.440021801 0 0 0 0.4356651772 1.836127436e-11 0.2003096988 0 0 1.365996915e-25 0.5750323496 2.457500913e-08 8.054690285e-14 4.280107698e-08 0 0 0.4591492677 0 1.346616678e-11 0 8.959145385e-05 1.861766697e-08 7.181324846e-08 1185345.322 0 0.0007014696623 1.042075858e-05 0 0.0005726118616 6.426419294e-12 6.967935503e-10 7.627983478e-22 162.4184507 18110.27925 0 0 3.862639604e-07 1.584682316e-05 9.790929554e-09 0 0 202.1699684 0 0 0 0 1026531.062 228186.6769 0 9.030472314e-08 0 8.487123859e-11 690975.7705 0 0 1.524595444e-17 0 0 0 0 2.364053654e-25 7319.41578 4673.016095 0 0.6848997354 144114.9393 0 0 43962.77947 0 0 0 0.4473120175 9672.274499 0 1.399984116e-17 176.3935882 0 64.47071577 3.612527904e-13 46457.45779 0.001535831946 0.0001206234069 0 5.644974741e-10 3.283975166e-26 10347.20733 2.215000582e-19 0 0 0 0 0 0 1.975153209 7.776842847e-08 2.367555752e-07 7.259086734e-05 3.003370489e-06 239.5586681 0 0 3.093186042e-28 0 0.0002604784516 0 0 15.82306039 0 3.206862827e-21 1.827909323e-09 173265.7084 285.2566393 0 0.02348934086 8.288897864e-14 0 0.002603510577 0 0.8233227026 0.07701128114 1.823753711e-08 0.03455434916 6.355447347e-07 115.9925606 0 4.643938337e-05 0 24.15376463 98.54203844 0 0 0.09204321045 0 7.514510438e-11 0 671.1677593 0 4.030640705e-07 3.245120053e-05 0 0 328.7927473 0 0 0 10.56478181 0 0 0.002161666448 0 0 0 0 0 158.8118928 0 0 4.217379177e-15 0.00109953649 0 0 0 0 0 0 0 0 0 0 1.610293687e-15 0 0 0 0 0 0.05960203719 0 0 0 0 1.88971278e-18 0 0 0 0 0 0 0 2.298210228e-05 7.078778439e-24 0 0 843.2922449 0.002016452537 4.339415657e-16 0 1.446860414e-16 0.02323189339 0 0 0 +0 0 0 2076.870682 0 0 0 1.036299244e-09 1.8757705e-05 0 0 11.10291627 0 0 0 0 0 57382.86449 0.004009463133 2.383762676e-26 0 0 0 0 9.232264358 0 0 1.007484532e-06 0 0 0 0 0 8.545893857e-09 44364.85097 0 0.08888662877 0 5.113872812e-12 57.51607115 9.218038026e-10 199688.1225 0 1073317.116 0 5.309784571e-09 0 0 0 0 3.100463329e-07 4.177587939e-06 0 0 0 0 0 0 5.540004668e-22 8.986859194e-11 1560.845261 0 40628.71073 0 2.967312741e-13 0 7.375620873 0 1.35499203 0 7.138543721e-10 4.016719188e-06 0 0 0 0 0 8.487525452e-11 14825.14692 0 3.683932538e-06 9.356381079e-08 1.536917768e-09 9.545568872 4.124685258e-11 0 0 2.109546187e-14 8.208539886e-08 1.226478267e-12 2.061156067e-08 2.175423129e-07 3.071536892e-09 6.3362256e-19 1.260740095e-17 2.388399181e-05 312.7734038 0 0.0001482192556 0 0 0 0.000517182108 0 2.586355364e-13 4.208779048e-08 1.22247436e-22 3.142711412 0 0 0 0.008991189905 0 0.0001201790078 0 7.362482675e-14 0.5761135129 0 0 0 1.437415714e-15 0 0 0 3380.829267 0 0 0 1.775637662e-13 0 48.20545324 1.684473174e-05 12.22425627 0 0 0.001390585549 1.968070127e-12 0 1250.425894 0 2.810780624e-11 0 1193.788173 0 1.321706462e-11 0.0002355601376 0 1.449622062e-05 1.688923742e-07 6.814996275e-36 6.876320983e-11 0.03412977264 234937.6829 0 0.1018795302 0.0002802571394 0 0 0 8.328019998e-17 0 1.405935342e-21 0.01403727316 3.378877165e-14 0 9.890897189e-12 9.818924058e-11 0 0 6703.634443 0 8.554695017e-18 0 0 0 3.99251317e-10 0 0 0 0 0.02373697332 6.497016057e-19 0.3939017456 43360.39182 0.03812367388 0 0 0 5.415947657e-14 767.7484855 1.226191767e-07 3.668485829e-17 3.458776269 0 82.03347258 2340.331072 0 0 27.64088595 47.76700452 1068938.406 33409.1797 40.41151263 0 4109.742034 7.849217765e-11 6.375360696e-07 0 3.199111084e-27 2.019654426e-14 8.047211265e-07 0 0 0 0.01964472419 0 0 7.312200515e-21 0 0 60.12705426 0 0.1853104553 0 3.178543513e-07 0 0 0 0 0 0 6.763299075e-05 0 0 0 0 0 1.045227698e-09 0.7721140999 10084.44775 0 3.23856405e-05 0.6890123089 4.739142838e-11 0 0 0 64.02257017 0 0 0 0 0.002397515319 9.36582223e-32 5.754475312 0 2.383261166e-11 0 2.655738842e-30 0 0.002010897526 0.9904493703 0 1.040079862e-05 1707072.393 0 0 0 4.425543249e-23 0 0 0 0 0 0 3.425714562 1.128652604e-07 2.207182651e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.348474691e-07 0 415.9147162 0 0 0 8.318382426e-13 +1.05203204e-14 0 0 0 2.424197034e-11 0 2.169618651e-10 3.19278021e-16 0 0 1.711284819e-07 7.528667903e-15 0 2.875714389e-18 0 194546.7104 0.001290418033 0 0 0.06288748702 8.636924094e-20 1.03278643e-20 0 0 30047.5243 0 1.406324425e-23 0 0 0 2.135219641e-22 8.208782502e-13 0 0 0 5.581184606e-06 0 0.004105559066 0 0 0 0 0 2.347350764 0 0 6.482811046e-08 0 0 0 0 0 0 0 0 0 0 5.408145738e-10 1.902922442e-05 0.002816916824 0 6.873439956e-06 0 0.005607017167 0 0 0 0 0 0 0 48801.34032 7.195007513e-05 0 0 5.807903243e-30 1.264537468 0 0 0 0 0 3.23323193e-17 7.657283132e-13 0 0 326911.9148 0.01833297637 1.155859378e-07 0 0 0 1.290342293e-09 0 0 18.57340394 0.001346626819 0.000109411261 0 2.684296697e-09 1.566482409e-23 0 153.6111588 0 0 8.301228908e-07 0 0 0 0 0.1594288967 1.18232849e-06 0 1.519894609e-09 0.007524991521 0 0 9.243889235e-08 0 33.29833472 2.221663674e-10 0 0 0 0 0 6.775120939e-09 7.71093095 0 262.2620501 0.08141284168 0 0 0 0 8.198179862e-10 0 0 8.373098264e-11 0 3.510695672e-23 0.003072490658 0 0 0 0 5.57954979e-14 60401.41362 0 0 2.949657318e-08 0 0 0 5.047738482e-13 0 4.187491085e-10 0 0 0.2532112361 1.658302663e-08 2.467149793e-11 0 0 0.3866919556 0 0.1407037144 2.717384123e-18 0 0 0 0.003946246605 0 0.903151275 0 2.296086867e-10 4016.564472 1.502880257e-14 0 0 0 21703.41257 0 6.52335412e-13 0.4616145528 1.990341914e-11 1.492090638e-08 0 0 0 0 6.157857786e-09 2.743035232e-05 1.874204744e-06 0 0 0 522840.596 1.443851372e-13 0 214055.5354 0 0 5.740479562e-07 0 1.043744127 0.7023416952 0 0 6.247067429e-09 0 1.565690219e-07 1.65179044e-10 4.022231034e-05 0 4.154887791e-26 0 0 0 3.361981411e-13 290.9898412 0 0 0 0 0 0 0 0 0 3.863691066e-15 1.923834975e-12 0 2828.857698 1.410727813e-05 0.006702115033 4.565055636e-12 0 0 0 0.001246335471 0 0 0.1111288501 5.271847266e-11 0 0 569667.2213 0 1.489416994e-08 0.4147800906 5.12341165e-06 0 0 1.177909182e-18 0 0 0 1.854211938e-07 0 0 4.128560094e-07 0 0 0 4.300543475e-30 0 0 0 0 1.09958177e-12 0 0 0 0 0 0 0 1.589762872e-06 0 0 0 0.0001910293102 0 0.0142011404 0 0 0 1.47793724e-19 0.4259560953 0 104167.0639 0 0 0 6.875228807e-09 0 1.903705172e-09 0 2.776117413e-16 +3.013438287e-14 0 0 7.603414866 8.323283125e-07 5.601814734e-08 0 14107.31468 0 8121.239346 0 0 0 0 1816918.452 0 0 0 0 0 0 0 8.504637094e-16 0 0 4.444978938e-13 0 0 1480981.586 0.3102045594 0 0 5.78571389e-06 1.649133363e-07 77238.63554 3.178382433e-07 0 0 4.310248351e-05 0 0 1.080574495e-06 0 0 0 52207.47008 0 0 0 0 0 0 2.995140433e-08 0 0 0 5.17630819e-06 552682.4891 0 0.04183571 0 0.01182626947 44832.36816 0 0 0 0 0 0 5.805298254e-16 0 0 0 0 0 5.752510337e-09 1505.191762 0 56.20082412 905.2644844 0 0 3.4237946e-11 4259390.474 0 0 134556.4748 6.594427489e-15 0.0001393820436 0 120164.7977 4.219938353e-15 0 168719.4572 4.376325616e-10 0 0 0.0001347950118 1.27217027e-12 0 1.828763152e-14 0 0 0 5.222904937e-08 0 0 2.704443613e-10 0 0 0 0 0 4.198023894 38.45706789 0 4.552898127e-09 0 153635.4798 0 0 0 37618.81955 0 5.217988456e-17 5.147239655e-07 0 267811.1757 0 0 0.07788645494 0 2.374451817e-18 0 0.0001614057282 1.78424654e-11 7.209845152e-09 1.786869311e-09 0 1710039.88 0 0 1016.345679 6.095300023e-05 8.765214549e-13 0 0 5.753582426e-05 0.08288394998 0 0.02360433046 2.454317378e-20 9.087668829e-13 22134.13456 7.050692003e-10 0 0.002179944256 0.02165024714 106353.7731 0 0 0 0.0001218072595 8438.647932 2083960.273 0 0.987999011 4.314940501 0 0 1078.793808 7053.657397 0 3.802615629e-06 0 0 0 0.00349436039 0 2.127104374e-13 0 0 178298.5028 0.160397002 0 0 0 1.243669187e-20 1.991650249 7.270659981e-24 0 0 0 2620.029218 2.009888242e-12 0 1.029454062e-10 1.509899849e-06 0.3094798113 0 69.08803141 0 0 0 21771.25132 8.088457295e-21 0 1903.310352 1.328213072e-05 0 67900.83415 9.208688572e-17 0 0.9152482801 3135310.303 0 0.0001528971424 0 14.9782441 0.9089019118 9.218374428e-10 0 3.420773051 2.527064988 0 0 0.001505231317 0 6.529618302e-15 1.166567017e-13 0 0 20.76246993 0.01419963243 501221.1087 0 0 0 4.685145995e-14 0 0 0 0 0 2.248265054e-07 0 0 0 2.605751502e-17 0 0 0 0 0 1232.371457 0 0 0.04776247081 0 0 0 0 0 0 2.459050858e-13 0 0 0 0 0 7.114998746e-06 1.652588566e-08 0 0 0 8.243256736e-17 0 0 0 0 0 1.072929456e-07 9.168848161e-17 0 0 0 2.764756801e-05 1.837694258e-11 0 0 0 0 0 1402.826948 151479.7251 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0.0002495751548 0 0 0 0 0 50104.39592 0 0 605983.6253 0 0 0.005612723067 0 0 0 0 0.01510023926 0 0 0 0 0 0 0 0 0 0 2.829409965e-23 1.196359549e-09 0 0 1.105329611 8.400726459 0 0 0 0 9.195440336 0 6.507126858e-20 2.158008123e-08 0 0 0 0 0 7.587694746e-05 0 7.232158695e-27 16.1091352 0 6.713495408e-23 0 0 0 9.156403797e-11 0 0 0 6.155137965 3.068449512e-15 0.0002351729286 0 0 0 22057.17939 0 0 0 0.0003808089719 0 0 0 0 0 2.601598227e-15 0 2470634.135 0 0 197.1393792 0 2.073406159e-18 0 0 0 4.58904507e-10 4.0021775e-07 0 1.192225561e-08 9.253667692e-15 0 3738.20541 0 8.762631978e-14 0 0 0.004838882844 9.945465688e-08 0 0.02309192565 3.153232897e-16 344277.4582 0.007443097331 0 0 0 2362.238244 3.71614746e-11 0 0 0 123447.172 6.608308977e-10 0 0.01341753615 0 0 6.944817464e-21 0 0 0 15937.66669 32902.01684 0 2.398034951e-08 55038.43301 0 0.06156264522 3.551653579e-05 9.094703774e-12 0 2.885484638e-19 0 0 0 0 0 5.087806868e-13 2.680947192e-06 2.852385046e-19 7.088911065e-16 0 954.7590083 1943.937513 0 478.8727122 0 0 4.939899899e-08 3885.523382 0 0 4.246750401e-12 0 0 0 595.801536 1.476208902e-26 0 0.0002555599425 0 1.283870172e-07 5.51488958e-15 0 2.417957761e-08 6.621559862e-12 1.837336306e-09 0 0 0 1723.845391 1.556577325e-11 0 7.376819549e-16 1.292294997e-14 2294.055224 5.036517973e-07 3.044900066e-11 2.932736336e-11 0 23920.12727 0 983.9691901 0 1116.41161 0 0 1.28546947e-18 1.378496406e-10 0 2.576967306e-09 0 0 0 0 3.439689934e-14 0 8.544757368e-05 0.06878607811 3.099363262e-08 0 21.24885906 52.05275617 0 0.0002512320547 0 0 0 0 0 1.199937541e-12 0.008277045783 2919.175447 0.3539258966 7.224375168e-11 8.394828523e-11 0 0 0 14.24775353 0.001589081445 0 1.298682543e-11 0 0 0.6462946765 0 0.01448414696 0 448491.5576 2.800474419e-17 303238.1959 0 3.463439394e-07 0 3917675.162 0 0 0 5.264517985e-20 0 0 0 0 0.0002030485433 0 0 3.94073341e-13 0 0 2219.211552 8.144368015e-06 0 0 0 1.020579353e-05 1.175836707e-22 0 0 0 2.715024712e-07 0 0 0 2773824.245 0 0.1447848857 0 2.367887083e-09 0 0 0 7.710646897e-15 1.742905879e-14 0 0 0 0 191951.2458 0 0 0 4.35736243e-22 6.052643652e-11 0 0 2.881437105e-22 2.260260316e-13 +0 0 0 0 1.050030181e-09 0 0 0 0 1076.494992 0 0 1.496270235e-06 0 9.945158591e-06 1.33298672e-07 0 1.017041018e-22 0 0 0.0001057593947 6.407198463e-07 0 0 0 0 0 0.2983411357 0.08466776323 0 4.530694484e-06 0 0.0002740757495 0 0 0 0 0 0 0 0 0 5.784716458e-20 0.04300112799 0 0 0 0 0 2.172577957e-06 30522.63872 1.491341158e-18 0.5089302111 5.021871022e-15 0 382.453883 0 0 0 0 1.467610283e-16 0 0 0 0 0 0 0 0 0 5.938952281 0.0002262263353 0 0.05173700699 0 40033.79818 0 0 0 6.446362107e-15 0 0 0 0.00544388675 0 0.04954473356 1.592225098e-14 1.809691 6.294335328e-16 0 1272.234293 0 0 5353.795415 1.537065886e-05 0.03323234405 0 0 0 0 2.857249194e-12 7.990221772e-10 1.142283271e-07 0.004152476241 0 2.16243054e-05 1.766647281e-06 0 1.126152041e-12 0 0 0 88511.27249 0 0 783894.677 2.341869794e-10 0 3.028569104e-06 7.20053461e-10 0 1.965119042e-13 6.644468472e-16 0.009574463947 0 0.0005276335905 0 0 0 0 0 177541.8598 0 0 4108.980182 2.040495077e-07 34610.98979 0 7.721049175e-06 0 4105884.149 1.034269221 8.520037855e-07 2.099952917e-26 1.224088035e-24 71235.97099 0 0 0 0 18.44526569 0.001266966573 0 7.54456549e-08 0 1.125363228e-22 0 3.132370828e-12 0 6.550335288e-05 1.646570518 0 0 0 1.209792907e-12 2255917.354 255.0300027 5034.696436 0 0 0 0 104297.1729 32.28010264 249530.7916 6.324021462e-10 0 0 1550583.889 0 0 0 7.393319946 0 6.57460324e-14 6.348025395e-11 2.452697814 0 0 9.071877668e-18 3.096751176e-09 0.03087352229 0 0 0.009639990849 6.686064936e-13 0 0 0.0001220929094 6.2857743e-05 0 0 141964.8196 0 0 0 0 0 57003.09305 68651.71403 0 0.005154153808 0 0 0 0 0 0 0.001664832108 0 2.038092368e-05 0 2.39902822e-10 0 1.641423364e-09 0 0 5.750900999e-27 0 0 2254.099271 0 0 95057.89469 0 0 3.280679031e-14 0 9.020171408e-09 394.9666577 0 6.206842041 0.01874012859 1.603652569e-11 1.585045211e-07 0 36836.84973 0 0 0 0 0 0 0 0 0 0.0005941965187 0 60984.38356 0 4.488825397e-05 1.87787473e-12 0 0 1.690155108e-14 8.888306706e-10 0.02021131391 0 7.879621036e-07 0 0.03292303908 0 0 0 0 199543.3303 0 0 0 0 0 0 279699.9382 0 0 0 0 6.961965075e-24 205443.9068 6.896683575e-12 0 0 17365.25333 0 0 1.576557855e-22 0 36.80187851 0 0 +0 0 192665.3617 0 0 20.53746747 0 0 0 0 0 0 0 0 0 0 0 4600.43572 0 0 0 2.094090476e-09 1.932426914e-14 0 0 0 0 0 0 0.1444934402 0 0 6.154180077e-10 3.909310336e-11 0 4619650.219 0 3.040319259e-07 0 0 0 0 6.240686509e-10 1.677268289e-21 18.74138118 0 3.848379863e-06 9.211143727e-22 0 1.960933314e-15 0 6.059905056e-05 0 0 0 7.584403985e-06 0 0 0 0 0 0 0 2627.075789 0 0 276.2218611 9.056835797e-11 3196.569176 0 4337.399218 0 4.894750476e-27 442.686093 930514.1954 0 4932.601285 2.257333996e-08 0 4.5347335e-05 0 0 0 0 0 10.75194224 0 0 0 1.423338494e-09 3.213643142e-19 0 0.05651387349 3.924638913e-10 717.522538 0 0.04603861547 7.567800826e-11 0 0 0 0 0 4.62819188e-13 0 83994.21291 0 0 0.0003860518946 2.862376203e-06 2.680964189e-07 3.76867034e-26 7732.164836 0 4.716708364e-16 0.0008677501119 0.5327514779 3.347088723e-05 0 0 1.626776179e-09 4.476972649e-15 2.696015484e-10 0 0 0 0 30.23719366 3710.805703 0 401576.5666 0 5.614270483e-10 6.808232417 71.11480936 3.137081847e-14 0 375.4949733 1.432868935e-09 4.261020091e-09 0 0 5.46764283e-09 1.691842182e-14 0 0 25843.54911 0.8573311898 0 3.218099754e-10 4.729953515e-06 0 0 0 0 0 0 2.492122338e-11 0 0 0 2.011912273e-06 0 1.581121747e-11 4.408243761e-19 0.9758450762 0 0 0 6.797543267e-12 0 0 1.064555303e-11 234585.5024 0 0 99208.12539 0 0 0.0006823730733 10236.41044 3656.671475 2.646429805e-13 7.800672945e-18 28221.82125 0 2.732403285e-12 0 0 0 0 0.05908353862 5963.143739 0.0607535182 0 0 0 0.001849060627 0 808.7186768 0 0 3.34988291e-06 0 0 5.422790134e-10 0.001234371439 0 0 0 6.022106629e-06 4.214921415e-07 1.153521462e-06 0 134.4723644 0 0.000599743881 0 0.002113323648 9.623773059e-07 0 0 5.593273122e-05 0 1.187228908e-06 1072579.409 0 40.00912186 7.266979907e-10 226.1803494 0 0 1.619956226e-10 0 0 0 0.0009321040944 0 0 0 5.760496734e-16 0.0002602852627 6.243890119e-21 0 0 2.575587029e-18 0 0 0 0 0 3.925646186e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.052626865e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 424.3329279 0 0 2.114229718e-12 5.629591362e-19 0 0 0 0 0 0.8263651665 2.512957752e-10 123825.2149 3.981463598e-09 0 +6.093062617e-27 2.134689861e-21 0 0 0 3.85242488e-09 0 0.2602280961 0 1.817295522e-25 0 0 0 0 0 0 0 0 0 3.823130585e-05 0 0 0 0.001208460217 7.327413573e-13 0 3136.001539 0 3.970968341e-15 0 1211743.684 0 0 0 0 0 0 0 0.0001667201603 0 0 0 0 1.379618417 0 0 0 0.009100056252 0 0 1.278640902e-10 5.109352059e-07 0 0 0 0 3146.523519 1.280035957e-15 0 1.423067921e-05 0 0 0 0 0 0 1.961374855e-17 0 5.146813493e-30 7.226702309 0 0 0 0 13.75295943 0 7.524275482e-16 617402.4426 0.001117922738 1.351060151e-10 2.898732765e-15 0 0 0 0 0 0 0 0 0 0 1.219677236e-09 0 209615.8401 0 247.6663428 4.810940838e-06 0 0 0 0 2.681913972e-15 0 0 1.413823178e-05 5.497235617 0.01233858596 0 7.681584355e-06 0 2.187108732e-10 0 0 0 0 10410.61054 3.440108743e-06 0 0 0 1.4311562e-06 9.637345541e-15 0 0 0 0 0.05364396246 0.09945619634 591399.1432 0 0 4.360324258e-13 1841.793875 3.065726279e-16 3.768259504e-12 0 0 0 0 0 0 0 0 0 4.983059423e-08 0.003891532787 0 236649.248 2.41586693e-15 45319.04558 0 0 0 182323.8345 0 0.3347252291 1.647726086e-19 0 0 6.507492983e-10 3.991942556e-09 0.08354348153 5.799332495e-10 9.503484378 4.360476452e-22 0.000524538831 634591.4089 0.2408196273 0 565665.9633 1.382612467e-05 189.2169027 0 0 9.481891942e-08 0 739396.973 0.002782806841 0.0001581709304 4.53204038e-09 1.463578073e-08 1.109982275e-08 0 0.03943605581 2265854.005 9278.666678 9.79287764e-12 50070.69057 0 0 0 1.540600648e-11 0.02642062579 0 0 0 0 164174.2444 0 0 7.503484783e-14 1.495428525e-15 8.603264087e-10 0 0.9784758035 0 0.0001251036871 0 0 0 0 3.192561084e-10 0 0 0 0.4780656874 0 0 1.167661199e-10 9216.62522 0 0 8.538406699 0 0 0 6148.031966 0 0 0 0 0 0 0 23.47354539 0 37503.4624 0 2.873892946e-13 1.161017385e-10 2.282670446e-05 5.420430657e-22 47.80307875 0 0 2.626618461 0 0 0 0 0 1.17177609 0 5.950064564 0 0 0.0002388823764 0 0 4.120267641e-07 130.5422828 3.80582446e-10 0 0 0 0 0 0 0 1.313447166e-15 0 0 0 0 0 5.537743907e-21 4.249399296e-14 0 7.425075822e-20 0 0 0 0 0 0 0 0 0 0 1.289008286e-09 0 0 0 2.892726755e-14 0 0 5.161405044e-14 0 0 0 +6.052559845e-12 0 0 0 0 4.224839405e-07 0 0 257661.0033 1.18633565e-14 21510.01692 0 0 0 0 0 5.794210558e-17 0 110.5633835 0 0 0 0.0001432817971 0 0 0 0 0 0 0 2.697866812e-14 0 0 7.184608414e-10 0 0 0 1.829867946e-23 0 0 0 0 2.129861516e-06 0 0 0.0003789735233 0 0 0 4.571856936e-06 0.2679779102 0 0 0 0 0 0 0 54160.853 0 12722.07366 0 4.101015437e-14 0 0.1374128078 43.12785196 6.441906641e-15 0 0 0 0 0 0 0.2429003352 0 0 8.318976892e-07 0.1725688943 0 0 134797.9243 0 0 248758.0983 0 157205.3981 62067.44588 0 1382.729732 0 3.831967118e-11 5.868159561e-12 0.0005416956506 8128.128177 5.984505675e-08 0 0 0 0 0 0 3948099.139 0 0 0 0 1269349.843 8.366429103e-14 0.0006614327886 0 1822405.982 8.960328718e-28 0 0 0 0 1.152524032e-14 4.566337911e-25 1.533723802e-16 9584.25931 0 0 0 8.25648685e-08 0 1.962530936 0 1.215132068e-09 3.086072403e-07 0 1158770.458 0 0 424008.0492 0 1.830945775 107.4242996 0 0 0.003221839423 4.41863977e-30 0 0 6.035078012e-05 0 0 0 2.251949508e-31 0 0.0006454072414 2.790515911e-06 18012.76345 0 0.01255670993 0 0 0 0 7.638260189e-13 2.121024811e-13 0 9.801411761e-22 0 2368.690747 0 834668.4572 46.04111443 9.240536217e-07 0.009824505422 0 0 4.025010557e-07 0 0 0 6.033629871e-05 0 0 2.277955108e-20 0 0 0 1800.157327 4.057638024e-14 28.91679095 0.3278423987 1.2206305e-06 7.272499195e-11 0 0.0001933996043 0 0 0.002106405437 0 4.713010543e-19 179.9039713 0 6.394579504 0.001000258417 0.0003081580057 324819.3602 149661.7358 4.692532713e-09 1.720146918e-18 0 0 0 0 0 0 0 1.078436597e-07 7.581859008e-13 0 0 2.586064762e-16 0 0 0 0 0 4.356743767e-12 11572.50538 0 0 367.875732 3.670203279e-07 0 0 3275440.479 0 4.69689148e-26 0.020696516 0 0 0 0 1.7056391e-20 0 0.000124227687 36152.9659 0 0 0 0 5.206786722e-07 0 0.8441564488 29662.89668 0 0 0 0 0.01390391717 3.051545597e-12 0 0 4.124530319e-05 0 8.322115138e-08 0 216160.8845 0 0 0 0 0 0 1.825342965e-18 7.882754634e-15 0 0 0 73142.99086 0 0 6.883051683e-22 0 0.0509628748 0 0 0 0 0 0 0 0 0 0 0 77803.63153 0 0.1016698705 0 0 0 0 2.277509412e-09 0 0 +7.94515767e-13 0 622.4157059 1.005678254e-10 0 0 0 0 520.9379346 5199.070194 1.366032916 0 1.271462147e-06 0 34.09422526 0 0 0 1.471263379e-07 0 5.240203946e-11 335861.7652 0 201643.1195 0 8.988419478e-14 0 0 0 0 0 0 230.1422659 0.0001825436111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003324759605 0 0.0008756996591 0 1.175857929e-21 0 1317421.775 0 0 0.01845987582 4.10581529e-11 0 0 0 0 0 0 0 1.58628384e-30 0 3.656452574e-10 1.810630896e-07 0 0 0 46.03508743 3.176414861e-13 0 0 8.795640912e-11 0 0 0 78298.401 191167.5588 1.099908994e-05 0 1.810353228 0 0 0 3.176850669e-15 0 68030.75912 0 0.002500382191 0 222.8809926 9.298672638e-15 3.352160806e-13 3.240528941e-14 2082.270424 3.019271475e-20 0 9.254941534e-12 0 0 0 2.909074397e-09 7.550222318e-09 825942.8764 3.382131254e-08 0 0.0008044908225 0.001712785943 0.05845476911 0 12.06461991 0 8620.718526 1.338068304e-06 0 4118.141681 0 0.006251048752 6.866395068e-14 250850.2616 0 0 1.177443902e-06 0 1.386102327e-11 2.640316969 0 0 1279.195483 9.320909285e-22 1.355430037e-09 1293.978549 0 7.948582844e-12 3.588038373e-15 0.003276088979 0.0009411589461 0 0 602.8560469 1.276101453 0.2651680927 13.6267028 0.004101913574 0 0 5.229700287e-08 375504.8632 4.886557221e-13 0 3.589382302e-08 10.66180227 0 0 0.0001920021336 0 3.452148845e-15 0 41557.34349 0.2823982508 0 0.0004973352184 0 691.4629139 570876.7152 277199.2833 0 0 4.059818761e-15 0 365634.4638 0 0 0 0 0 1.717565862 0 0 1.110062641e-11 8.63654721e-08 0 0 0.03903329902 0 0 0.00109424961 3.600767628e-06 0 0 6.603198863e-12 4.362366913e-13 0 0 3.0547356e-08 4.091595966e-19 0 157051.3518 0 0 49.40822726 37869.28282 0 0 0 0 861.9897941 804359.5188 3769470.56 0.02003004561 0 2.40385036e-15 1.49893592e-08 0 0 0 1.552537072e-06 117.5551535 0 0 1.331680698e-14 418.9591477 0 0 0 130528.241 0 0 0 0 0 0 0 3167.078844 870455.4603 0 0 0 0 0 3.514224599e-12 6.188429154e-18 1.918851036e-08 40828.41674 0 7.460427583 670.2315182 0.0005938584008 0 0 0 1.04452128e-11 0 0 0 0 2.704022691e-14 0 1089921.421 3.141276925e-13 0 0 0 0 1.201012373e-09 0 1.662918795e-09 0 0.0006859537588 0 0 4346331.266 1144794.055 0.001362361866 0 0 5.374670575e-11 0 0 462870.7916 0 0 0 0 4931.635636 1.381817706e-23 0 1.156604601e-09 0 0 0 0 1.31933775e-13 0 +0 1.134091761e-09 26917.42303 0 3.288731085e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.141016e-15 1.801095897e-11 0 2.15032831e-05 0 0 1.821726781e-13 109014.223 122054.4142 5.505804507e-17 0 0 0 0 1.607576438e-14 7.831398138e-15 0 0 2.206126374e-11 0 1752.565066 0 0 2.290838377 0 1.931575076e-09 0 2.981877217e-17 0 0 5.60064825e-12 6.54591516e-14 2.380015322e-15 0 9.693334232e-06 0 0 0 0 0 519533.1705 4.386683042e-17 4.075423411e-05 5.462599869e-15 0 0 0.001625135598 0 0 14469.32379 0 0 7.692231187e-17 0 0 0 1.518366723e-06 156419.6447 3.530236222e-05 0 132070.5347 20.30671365 0.5272727003 0 2.802663032e-05 2.569935256e-06 0 2913.838916 6.996005688e-09 0 0 0 0 2.367802725e-05 11.84009565 0 6.053856585e-25 3.625469878e-10 0.1006470483 2.218521499e-15 0 9.112939703e-08 694.4182651 0 0 1.704404093e-06 2.523636386e-06 0 0 0 1.251605003e-12 0 8.512696252e-14 0 1.762967841e-15 0 961997.1892 6.687658469e-15 3.480950417e-06 0 0 0 4.438745849e-20 8.30390949e-23 0 0 3.032947222e-08 0 32102.34832 1.781033659e-18 2.193331209e-16 0 1.700664306e-10 0 650661.4364 2.776581521e-09 1.223027806e-09 0 1115990.673 4.468887913e-13 0 0 0 2.033728661e-07 5.513418772e-05 0.001952454778 0 0 0 0 0 1875.517958 0 0.7026058355 0 0 8.057840346e-10 0 4.514291984e-27 4.745741358e-09 0.1033030562 0 344965.9156 0 0 0.05553094896 0 0 1.682227379e-14 0 1.559837519e-08 0 0 264.766877 0 119.5093969 1.713636829e-06 5.927838192e-05 12.13729164 6.361290549e-06 0 4.07582137e-09 0 4.07213012 0 0 0 0 1.402934903e-10 40465.44885 1.246786117e-09 1620300.411 1.656010817 0 5.506859512e-10 0.007270748316 0 1110609.287 0 0 0 8.364755502e-19 3.345003956 0 0 96205.29852 0 1.225153598e-16 0 46488.91866 859841.782 0 0 0 0 0 0 1.095255157e-20 3.71990502e-06 0 0 1.717948249e-16 142.3408475 0.0009169984075 0 0 1.915333325e-15 0 0 0 0 0 19713.49351 0 7.510284194e-19 106281.8419 0 0 3.071685883e-12 0 0.1408348704 54.74749262 0 0 0.001278732434 3.428801684e-08 13115.33364 0 0 0 0 0 0 1154937.739 0 0 1.255333104e-09 0 0 4.764948379e-13 1.138882197e-08 0 4.684868422e-10 5.443949136e-08 0 0 0.0002207254684 0 295378.3377 0 0 1.160790327e-07 0 0 0 0 0 0 0.0002532139117 2.119184986e-12 0 0 7039.070808 1805.454368 0 0 0 3.102994941e-16 0 0 0 0 0.002695816892 0 0 0 +134.5594456 0 0 0 0 0 0 0 0 0 0 0 0 1.976074118e-13 0 0 0 32.18749536 0 835681.854 1404028.059 3.334088322e-12 2.427094456 0 0 0.0001079229571 0 0 0 0 0 0 2932.428294 0 0 0 0 0 2.000824006e-08 82.52267218 0.004439782424 1.206056684e-13 3.705735255 0 0 0 0 0 3.26309441e-09 0 1.091260142e-08 0 0 0.3451065553 0 0 0 4.16967139e-06 5.464601134e-11 18036.37912 0 0 0 0.007033310926 8.107917028 0 4.49589168e-07 0 0.006740708447 1.274295265e-24 0 0 0 4.301842322e-08 9.503374667e-24 0 0.001808191264 8.472243815e-15 0 28.16029576 0 0 0 0 22538.49311 405793.2802 1332495.278 1503425.716 0 0 3.986471877e-09 0.08783342555 0 0 0 0.1883795512 0.1687670855 0 4.543601058e-16 0 8.317252302e-05 0 0 4.428861992e-10 0 7.093026491e-14 0 0.002545462827 0.004201693245 0 1.253609546e-10 0 0 4223695.471 3.953057451e-06 1.221827036e-18 4.858290593e-11 5.289634657e-18 0 0 0.0003332197031 0 2155.440089 4.282504681e-15 5.404581059e-07 0 0 0 9.656440722e-06 0 0 0 0 0 1.095330684e-10 5.503248033e-08 0 0 0 9.872161222e-15 3.976186473e-06 0 1.573337144e-28 1.38910476e-08 6.778082634e-12 0 0 0 1.441673155 983.1570049 1.147977258e-13 0 0 0.005384725042 0 18.98602307 2.318636462e-21 0.002128848177 0 1104.198868 1.401790788e-05 0.001599480404 681.6034519 0 0 0 0.02514865736 0.009228304604 0 0 0 0 0 2.600553502e-11 2.715893502e-30 0 1.399310473e-06 2.087269985e-05 7.521455667e-25 4.508062866e-14 1.967594403 0.001268947358 5.747672591e-09 43411.08787 6.705435238e-06 0 0.001020136543 1.965780831e-18 1.311355297e-06 15.67129941 0 0 0 0 2.545971404e-23 4.86614119e-08 0.001180965058 229543.9295 0 0 350038.9681 0 1.401199013e-09 3.365455748e-05 336492.8329 0 0 0 0 5.789750626e-05 2.306603776e-09 0 0 0.0004438847609 0 0 4.46043086 0 0 3.114006771e-23 17.34418951 0 1.927189346e-10 7.219979565 0 0.001355618293 0 0 0 0 658714.341 8.441829035e-11 0 73524.53646 0 0 0 0 2.830026503e-17 0 1.393068588 1366.239345 0 0 1.070828319e-08 8.840034124e-16 0 1.820247541e-12 4.799572307e-06 0 0 1.948755107 0 0 0.0480873898 0 0 0 0 0 0 0 0 0 106463.4701 0 3.425312023e-26 0 0 0 40.7990712 0 0 0 9.06194589e-17 15460.64124 0 0 1.939471837e-20 9.544769919e-18 0 0 0 0 0 3.61165574e-13 2.158956498e-33 0 0 0 0 332.0568235 8.18974788e-13 0 288.2463778 0 0 0 2.129672305e-14 0 +0 4.139505957e-09 0 0 0 0 0 0 0 0.1323254582 0 0 0 8.188480514e-18 0 0 0 0 129539.7519 0 0 2.911623475e-10 2.421737156e-14 0 0 0 1.8993785e-10 0 0 0 7.554466827e-05 4.40076215e-16 0 1.047656258e-05 3.398278507e-13 0 0 0 0 0 0 2.087882611e-18 0 0 0 231030.9721 0 0 0 0 0 0 0 0 0.0003915939967 0.00109565953 0 6.16480468e-10 0 1.050871712e-07 0 0 0 0 0 0 0 0 0 0.0002200766317 70963.37835 0.1773785628 907566.4383 0 0 0 0 0 9.958638965 0 1.552647674e-25 0 0 1.606494689e-05 1373727.294 2.024082041e-10 1.088784278e-12 0 3.632883127e-14 0 0 0 0.003950355294 75.97155724 6.426868794e-06 8.749740716e-06 2.316056301e-12 0 1.392616179e-12 95.99849731 0 0 0 0 6.420868004e-19 300.0122047 0 1.43804734 0 6329.278225 1.411733353e-06 0.01808202129 1197173.08 0.2538122661 3.194488755e-06 1.105877875 0 0.3852094218 0 6.311320236e-11 0.4986110313 0 1775.299168 0 49529.92742 0.2889917455 0 0.1948784227 6.534904752e-09 0 7.281479329 2.974032846e-13 9.622584283e-09 9.312944794e-12 0 0 0 6.233341322e-09 2.537067881 0.2602478222 0 8.613324258e-29 0 9.741075299e-08 0 3.01966126e-08 2.524172074e-11 0 0 0.07717374703 207.0769783 27.39919496 0 44.52121367 1.129324774e-13 4933.997315 0 0 408975.1315 0 0 0 0 0.0001789207369 0 0.02030171541 2.128446423e-06 2.195788838 6.615077974e-17 5.433352692 1.018094522e-15 0 0 16.42856517 2.840329924e-15 37369.69023 0 1.21874166e-16 0 0 3.723445932e-07 0 1.370364499e-10 0 1.755729243 3.494217712e-06 9.713504022e-14 0 0 0 0 0.01607590883 0 0 2564170.31 0 0 0 0 2.175410414e-07 0 0 0.0005963769306 0 0 3.892410078e-15 1.454442424e-15 1.145401654e-10 0 0 0.03088729672 0 6.4137146e-06 0 260575.497 0 0 6.710857865e-19 4.194392217e-08 0 0 0 1.341835137 7.644675172e-10 0 7.624016386e-14 4.664539297e-11 0 0 7.783305634 0 0 0 2.250266439e-14 0.00209647169 0.03624330606 0 5.754848644 0 0 0 4.926962018e-19 9.341846217e-07 9.742033367e-09 0.3655071473 8.201146805e-31 0.0006218230392 0 5.645315854e-10 0 0 0 0 0 0 5.931671987e-07 2129369.86 0 0 0 0 0 0 0 0 7.239448376e-10 0 294802.71 0 0 1.044279368e-12 0 0 0 5.777335872e-22 0 0.02027380385 0 0 0 0 0 0.001382146428 0 0 0 0 11.94022952 0 6.496576956e-05 0 26601.22079 216495.8273 0 0 0 1.616894902e-12 0 1.258131414e-07 0 +2.892847232e-06 1.167142354e-18 0.2245139465 1.222914757e-17 0 0 0 3.667698912e-09 0 0 7.099757136e-08 0 0 0 0 0 297184.6495 0 0 0 666.5785749 0 0 7.68522544e-13 0 0 0 0 0 296526.6506 0 0 0 0 0 0 3.319666359e-11 8.963163161e-12 3.574487208e-16 0 0 0 0 109.4572254 0.1405102747 0 0 2.125418309e-14 0 0 0 6.52615722e-14 0 0 0 1.486515362e-09 0 0 0 0.0833812228 6680.728789 0 0 0 3.800491742e-15 0 0 367.5003315 432.485511 0 705641.6844 0 4.511011841e-07 2.637237561e-11 0 0 5.654046182e-08 0 0 2.893449573e-11 5234.972303 0.07793836556 0 1.193157607e-13 0 0 0 2.248559792e-21 0 1.119503532e-07 0 1442.792989 319727.6404 411.6844548 10516.17488 0 0 15991.4501 2.336383286e-22 939.1137474 53127.70207 150.8441515 1.709214588e-06 0 0 0 57416.73537 6.686710015 14704.97987 0 0 0 0 0 0.0002306415724 0 0 0 2.352535924e-17 0.0001410587131 0 2.620590478e-11 0 0 1.345998119e-11 2.056572219e-08 1.514331715 0 0 7.513694034e-06 3.038607705e-10 122252.3013 0 1.572045663e-20 0 1.959174875e-06 0 1.921185834 13.46383966 9.873804495 0 512878.8096 0 0 0 0 4.571634562e-17 0 0 0 0 0 0 0 0 0 0.1101437306 0.004931295846 0 4.72822639e-09 3.253408173e-20 0.001211669341 690703.6741 2.003019821e-11 32610.57579 0 0 0 129.2308684 0 779612.1012 0.2024226227 3.775243248e-10 3.397656393 5.608431865e-05 3.626869531e-06 0 0 6.083161255e-10 2.881491504e-18 0 9.407226651e-11 3.869340692e-06 1.52308841e-09 7397.049525 0 0 71.80941141 89223.55216 1892689.563 0 0 0 0 1.097501624 11.17842504 0 3.623812094e-09 306291.5942 0 42596.32977 1.943127293e-09 0 0 2.243878643e-08 0 1.627514733 0 0 0 0.01173231231 7106.305386 44857.55451 7.310428229e-14 10799.62534 0.0005543961394 0 68.3227047 0 0 1.280389568e-11 0 1.127430845e-07 0.01292881302 0 0 0 0 1.181314836e-07 1.142524397e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1211172576 0 0 4.487694696e-09 0 0 5.358037992e-06 1.211294693e-11 0 3.336847831e-34 0 0.0009612768033 0 0 1144928.79 0 0 0 0 0 373489.7527 0 0.4439488825 0 0 1.119851897e-05 0 0 20102.17212 0 5.287459191e-07 0 0 0 0 0 0.4968455571 0 0 0 0 0 0 0.0005800409984 0 0 0 0 0 588.4717418 0.1697990882 0 +2492975.78 0 9.131158282e-05 0 2.575124607e-05 0 0 0 0 0 6.511666128e-07 0 0 0 0 0 0 0 0 5.365255307 0 9.451308466e-15 0 7.280518374e-08 0 0.04905984255 0 1.646079964e-14 2.765359792e-09 8.214976117e-07 0 0 0 5.719568432 0 0 0 0 0 1.24892647 1578.732487 441293.1421 0 0 2.494181129e-08 0 0.0001865939712 0 0 0 1.723982881e-07 0 0 1.635515997e-09 0.006504404759 7074.540985 0 0 1.237865976e-07 6.410385309e-05 0 0 0 0 8.632807875e-18 0 3.893828776e-14 0 0 0.241650461 0 7.602630939e-08 0 0 0 60250.99211 0 0 3.17346716e-08 2.380661731e-21 0 0 0 0.02360823842 0 3.636861677e-05 4.653372147e-12 1.609517794e-28 1.480834785e-09 0 10695.215 163102.5952 9.831038595e-05 0 784452.174 2.863530776e-18 0 0 47.30775864 0 3.655412505e-05 0 0 608.3434562 2.243756558e-12 9.20679026e-21 4.312715528 6.467302988e-14 9.369204525e-11 0 6178.39119 2.512347606e-10 2.196860196e-05 0 0 0 2.38119972e-19 4.195652408e-06 0 0 0 0 0 1.977157393e-16 0 0 0 0 2443.345203 6.471882496e-06 29.35272351 2.330413671e-09 7.391961247 0 0 1.323784153 48.34744161 1.056216198e-06 0 0 0 0 0 1.431548441e-14 7.452961242e-08 0.0003191689762 0 0 0 0 0 0 35.40457356 3.895361522e-09 1.259279264e-12 3.908639393e-08 0 0 57081.00537 0 0 0 184456.035 0 0 0 44991.8683 0.496789364 0 0.001093455667 2.344501943e-12 0 1688.308006 0 5.235874006e-07 2.062420619e-12 0 0 33.73591625 0.001826259171 169.8021783 0 0 0 1.657614529e-15 0 0 1.437825404e-06 0 2.590253416e-13 9.64213565e-08 3.597575344e-15 0 0 2.548657096e-06 0 0 2.644400152e-05 0 7.737849027e-06 0 0.009073417429 0 0 0 0 5289.342837 1.117164289e-11 7.710925127e-10 0 0 2534053.535 0 0 0 0 0 0 0 0 0 0 0 1.329543853e-14 0 3.442439154e-06 0 0 0 0 0 0 0 0 0 0 0 0 4.25755724e-13 0 0.1642838429 0 0 0 0 0 2.876948562e-06 0 2.996048202e-05 0 1.169119539e-11 0 0 89.21687684 1.491606039e-17 0 0 0 0 0 0 1.549353699e-12 0 0 4501.041418 206262.2783 0 0 5.5507384e-09 0 0 2112.286836 0 0 0 0 1.174585751e-22 1.157368891e-28 4.707779865e-20 0 0 0 0 0 0 0 1.498345731e-10 110181.9771 0 0 0 0 5.284320873e-24 0 0 0.000129770198 0 0 0 4.310012997e-14 +0 0 2.845898219e-08 1.095412599e-09 0 0 0 0 0 0 0 0 0 1179.119621 0 0 2.638265819e-15 0 0 0 0 0 0 0 0.04625806043 1.176085133e-08 0 0 0 0 0 0 7.699646724e-08 0.02275841316 0 0 0 0 0 0 0 765.5839139 0 0 0 0 0 2.456851478e-06 0 0 0 0 0 0 0 0 0 0 0 0 5682.47098 0.9527398548 999662.4996 1.277264808e-10 0 10304.16723 0 4.028364482e-08 0 0 2.495406073e-17 3.014638706e-25 0 6166.304759 0 0 3.189314292e-11 5.193429356e-24 0 4.597928004e-14 2.852401387e-26 0 29.74850752 1.299836563e-07 0 0.005168864267 0.0002933317764 4.64630161e-05 1965567.281 0 1.772330793e-06 44.1473959 0 2009.771996 1.221153668e-22 0 0 4.985845121e-13 0 0 0 0.01720087808 0 0 0 0 9.627538336e-07 0.01588858357 0 0 0.0009073679267 0 23377.44163 0 0 3.101183926e-05 0 0 0 0 0 20.69624728 0 4021.053747 0 1402863.738 0 0 0 4.867351033e-06 191.2841525 0 0 0 0 69741.41145 214108.7055 96161.34429 0.0004222748465 0 7344.803742 489.3388241 0 0.005920021442 4.858658062e-17 0 4.905824596e-17 0 0 46224.80839 2.639925666e-13 0 2455.776067 2.479889386e-16 0 5.744832259e-10 0 0 0.2008036248 0 21968.93036 6.713347807 0 1.364481734e-09 0 0 0 0 7.782576409e-11 0 0 0 0.007838361017 0.01400534151 0 0.1487034516 0 454446.5251 8.38919999e-27 0 1761594.629 0 0 0 368280.2547 0 0 3.821031616e-12 4.268256468e-06 0 938744.9815 0 0 0 3.519791625 0.000169099848 9.600007323e-07 0 0 0 1.328846898e-11 25750.72144 0 0 0 0 0 4.588908044e-05 0 0 33616.06151 0 0 0 0 4.579166059e-07 0 0 96584.17318 0 3.196170044e-23 0 0 67.08204284 0 0 0 0 0 0 0 1.185385019e-11 0 0 0 0 0 0 0 8.486372415e-08 0 7.309524848e-13 0 0 3.276564728e-10 0 0.01311751875 3.508869679e-14 7.174143479 0 2016.276442 1.755370575e-15 0 0 2.387162299e-26 0 0 4.242571982e-21 3.507668318e-08 4.321832616e-13 0 0 13397.78176 0 0 0.004353218366 0 0 0 0 2.037140676e-07 5.640463147e-05 0 0.5994835282 0.0003058361709 0 3.938195118e-10 0 0 3.422899738e-22 9.735697028e-09 0 7.691349579e-22 0 52.54243163 0 0 0 9.118447908e-12 0 7.065797362e-13 486.8954292 0 0 1.527149958e-32 0 0 0 5.026745577e-18 2.651187041 +0 0 0 0.4294398381 0 8.650755858e-11 0 0 0 0 0 6.299763353e-12 0 0 1.83368441 14460.75402 0 0.000218154601 0 0 0 0 0 0 1.575626906e-09 0 0 159.9033168 0 0 0 0 653145.9685 1.493982405e-30 0 0 0 0 0 0 0.001021411305 5.959970577e-06 0 0 1979.423088 0 2.867832653e-12 62.72700343 0 2.946006972 0 0 119335.9244 0 5.03080367e-06 0 0 3562.597151 0 5.964362735e-06 0 0 2.661722682e-10 1.069012584e-06 0 0 0 1.755566285e-06 1.998369959e-23 177698.6329 0.006941140533 0 2773199.029 3.271057713e-15 8.162254612e-10 0 0 0 0 1.212381904e-14 0 16967.77561 0 0 0 29067.34394 0 1.343591157e-12 0 0 0 3.160838929e-10 6.474305431e-10 4.083695635e-10 0 0 0 0.002927303706 0.003973459727 0.007695560962 0 333253.2158 2.735508316e-08 0 5.985896359e-05 0 2268.877706 1.312620742e-08 0 3.042360984e-10 0 424658.7353 0 103438.7879 0.000177244937 1.582055641 3.612616126e-08 0.10333983 1.688844047e-13 0 9.157558854e-17 0 0 3.186113121e-12 0.0008280425474 0 0 0.2175894662 4.336767323e-23 6.151727154 0 2.763093322e-12 90.90272908 0 2.96271497e-12 0 0 19.29687588 0 0 0 2.543598331 2.520961762e-15 0 4.54265695e-15 0 0 0.0003006848604 0 1.435584882e-14 7.105203834e-21 0 0 0 5.015187243e-10 0 5.662591171e-09 6.071213643e-15 0.0004383874364 0 0.0002993507442 0 0 0 2.010545639e-05 0 0 0 1.144271555e-13 0.006018070613 4.444735675e-05 109296.6349 0 1.427350822e-05 0 0 0 0 2.102903175e-09 1.277875194e-09 0 95.06978379 0 3.678145993e-11 4.67214008e-10 8.604536051e-13 0.009206194162 7636.364483 7.195369008e-06 112532.8852 0 0 5.788260513e-12 0 2.307819246e-10 0 6.774225862e-18 0 4710.281181 0 0 1.246848915e-32 1.800231102e-05 2280.456598 0 0 3.055482151e-07 0 0 1.18887746 0 0 0 0 0 123021.1064 0 0 0 0.8520714492 0 1.262599818e-05 1.821573578e-11 0 1.659749788e-15 0 3.672587171e-07 0 0 0 0 0 16.80312401 55.68214525 0 3.09688971e-13 0 24549.42824 0 0 0 0 0 10.1588256 0 0 0 0 2.21872326e-11 0 0 0 0 0 0 0 0 0 0 0.0002213940138 0 0 0 1.776307857e-13 0 3.430475155e-12 0 5.41816122e-12 0 3.304227845e-07 9.099309509e-20 0 0.0002301865534 0 7.651340361e-05 0 0 0 0 0 0 0 0 1.8850296 0 0 2.784769841e-14 4.046356347e-16 0 0 0 0 0 7.054482957e-12 1.726176461e-12 0 1.829336627e-36 0 0 0.1671108978 +0 0 0 0 0 0 0 1.013562901e-06 0 0 0 1.743216004e-09 0 0 0 0 0 0 5732.588861 0 0 0 0 0 1.645229433e-15 0 2.764887051e-06 0.007065102614 0.0002156412512 2.105576719e-18 0 0 0 1.424545155e-06 0 0 1.85127668e-12 0 34569.16611 0 0 0 0 0 0.0003491669399 0 0 0 4.223659401e-18 1.576397174e-11 0 0 0 0 1.349796116e-05 4.461795655e-15 4.213318718 0 0 0 0 0 0 0 0 0.09999215655 2.960804681e-15 0 0 0 0 772.2641603 0 1573.704519 0 0 7.613993001e-05 2.856604403e-07 0 0.001832349929 0 0 0 0 0 2.412361157e-08 0 0 2.122465754e-15 0 0 0 0 1.051779191e-07 0 0 0 1895.55864 2.334796125e-06 2.971148735e-11 0 1.125343274e-12 0 19.29668753 0.6349791432 3.822342325e-05 6.741393369e-06 0.0002226094761 3.537949902e-07 0 0 31.96670894 0.05607845091 1926.461287 0 4.422020327e-08 678.8309515 4.400935933e-14 0 0 0 0 0 0 0 0 0 2.478829152e-10 0 1882.985035 1.118521133e-12 0 0 0 54.41925836 0.06963943505 1.65345472 0 1.454923616e-06 4.115420969e-06 0 1.066189866e-07 4717095.641 0.03884394829 6.781798498e-22 537124.4474 0 6.061059246e-06 3.844292735 0 0.0001962283881 4.480175854e-14 0 85393.30706 0 3.492007907e-05 0 1.592790987e-15 0 3.724666663e-30 0 0 2.364487889e-09 0 0 6.448690964e-10 6.729145925e-14 1.406546941 165555.3081 0 1.506472044e-11 538927.8523 0 1.978518122e-25 0 40769.77622 5.679228237e-15 0 0 0 305361.014 0 7.24581744e-07 0 0 0 0 8.245657568e-09 6.642334149e-12 1.603388637e-07 350634.8865 1.143139502e-12 12.67503926 14899.34862 0.0001701676679 150767.0498 0 0 5.82631838e-05 324116.4643 3.913910204e-08 0 0.1345110779 0 0.06234931422 3.634798587e-22 0 0 0 0 0 0 6.445752498e-10 3.977050924e-18 0 2251301.231 0 0 0 1.587677304e-07 1.455905637e-11 0 0 0 3.838454536e-14 4.224007955e-07 299.3726388 0 0 0 0 0 0 0 1.319510332e-18 1.666489478e-07 0 312676.5201 0 3.417564132e-07 6527.393638 0 0 0 0 0 7.518581514e-27 0 0 0 0 9.215714528e-13 0.8376752046 0 0 14.25967008 0.3670489984 0 0 5.776994204e-17 0 0 0.005824960939 0 0 0 0.0002989243244 0 0 0 6.163295475e-06 5.753454357e-07 0 0.06932717636 0 0 0 0 0 0 0 0 0 507486.3861 0 0 0 0 0 0 1.263184133e-11 0 0 0 0 5.51933968 0 0.8383544292 3.000038728e-15 0 +0 0 0 0 0 1.55100767e-07 0 0 4.684439077e-14 1986100.754 0 0 0 0 0.1284597769 0 0 140969.3954 0 504.2501235 0.05361856925 0.0005202985639 0 4.194651545e-18 0.2484420717 5.543175021e-09 0 0 4.720013207e-13 0 0 0 0 592946.8469 1.625315059e-06 0 0 14128.99711 0 0 1012.845624 0 0 0 541859.7183 0 9.643894992e-06 0 1.336113389e-23 0 0 0 8.782374303e-05 0 0 0.002149161788 0 181.9498378 1.347634219e-14 2.19811792e-09 0 0 268.5441847 5.935656646e-09 1.141062969e-12 0 9.212209487e-12 330.7750478 0 1.431058339e-05 8.479973839e-07 0 0.00817487062 0 3.941819316e-09 0.001148359064 245415.9799 8.120400736e-19 0 393144.5312 0 14.93639825 0 0 5.7949405e-06 0 0 6.962686059e-28 0 0.07915400326 248170.9825 1.092079591e-13 135623.6962 6.50042329e-11 0.07501854435 732.8397534 0 0.000514463402 0 0 3.412021999e-14 4.976699031e-09 0 40578.81706 417807.3594 0 1.2182399e-13 0 0 26812.53793 0 0 2.326562743e-16 1.730647558e-06 0.0002403142926 0 0 0 1.197892424e-13 68871.6301 1.616708672e-10 0 0 7.999442134e-07 0.04977582017 3.715214424 4.075492923e-18 1.499477128e-14 0 0 17391.75207 0 4.396393288e-10 1.495953181e-16 6019.952981 0 0 3.068455475 7.99443952e-30 2.922977543e-17 0 0 0 9268.87107 0 0 0 33.12641153 1.558035162e-05 0.2545337687 0 1164099.991 0 0 5.052773164e-07 0 3.194791381 0 0 0 5.229702788e-08 0 0 0 0 0 0 2.282384406e-05 0 8.836828729e-28 23674.67377 3.89289256e-11 0 0 125567.89 0 0 854607.8737 1.376433262 0 4.243482056e-08 0 0 407573.7703 0.005510373954 0 0 0 0.006972847977 3.178192286e-07 0 1.852032137e-16 0 0 0 0 0 0 1.056907224e-14 1.81009137e-14 5.209648834e-05 0 0 1467923.622 0 0 0.005190736391 5.999604027e-08 79.91839078 802430.2939 379.1455547 0.004910312021 6.646790657e-13 0 262.2563623 0 4.849471945e-11 471021.5699 0 9.060235149e-16 0 0 1.430445279e-26 4919.73615 0 0.0002819876392 0 69377.29422 0 0 0 6.206520864e-17 0 0 0.07376079896 0 0 0 0 9.531213549e-07 0 23.02696954 0 3663032.256 0 0 2.348957406e-34 0 0 0 0 0 0 0 0 0 482406.4641 0 0 0 0 0 0 0 0 0 0 0 3.349038506e-09 0 0 0 1.885118462e-07 0 0 3.463027288e-09 0 0 0 0 38.96597575 0 0 0 0 0 0 16.28960217 0 0 0 0 5080.568329 0 0 2.003480863e-05 7.236140456e-13 0 0 0 +0 0 0 0 2.73721802e-21 99143.30196 0.07231433582 2.774052555e-10 0 0 0 0 0 0 10230.87679 0 0 0 0 0 0 0 10.17984118 0 4.815247637e-19 0.0001011042524 0 0 0.2323354201 0 0 0 3.836962487e-09 0.9125777119 5.096778215e-10 0 0 2.563731789e-12 0 0 1.103829628e-14 875378.4585 0 1.067810214e-10 0 145920.6862 0 3.315212195e-14 0 0 0 3.884487244e-08 0 0 0 0 0 0 0 7.43442279 2.607489714e-14 4568.211152 5.972309279e-05 8.067975963e-14 0 0 4.083983376e-06 0 3020.482505 0 0 0 136374.5861 0.0005287011155 0 0 4.788985279e-14 0 0 0 0 6.291702918e-10 0 0 4.187328689e-05 0 2.719277399e-10 0 0 0 0 0 0 0 0 0 0 2.74102927e-11 4679.383972 178485.0841 0 0 0 0 0 0 4.746518905e-10 0 1036.101371 0 1.486453712e-12 0 0 0 0 6.301021163e-09 0 0 0 4.57143145e-07 0 8.430364745e-08 9.168478193e-06 5.291074239e-23 0 122.6838307 0 87147.17751 2868440.52 1.656425969e-05 0 705.1606959 0 5.530528944 5.069564042e-12 1.837192762e-16 3.071831503e-05 0 9.789745207e-21 7.661717163e-18 0 2.710849912e-23 0 0.07248424625 2.151714652e-18 0 59.95730389 0 2.23634472e-14 0 0 3.846522867e-14 3.832845396e-20 4.940476875 0 406941.524 0 3.496389072e-12 0.001251911748 0 0 0.04003727432 5.91265848 0 1.010142984e-18 1.84288981e-14 0.00152709921 0 372938.6396 53405.118 0 324337.527 0 0 0 21.19724515 0 0 0 0 0.000276876648 1411682.323 0 0 2.501204619 0 8.194241114 12.65656441 0 0 23354.15243 0 0 0 0 923320.8438 0 0 0 0 3.650735647e-06 13.35945526 0 0 1.901260924e-12 7.806143181 0 1.942868309e-08 0 0 44.86735301 1.01008849e-07 4.956735622e-09 0 0 51.11302595 583.7193336 4.685560314e-11 0 3873.682798 0 0.004341310757 0 3244438.938 8.001509456e-09 4.399765108e-20 0.02698917774 1.974844644e-11 0 37.41642767 0 0 0 0 0.1369111574 0 0 0 224.3434847 0 0 0 0 0 7.922793034e-09 6380192.912 0 0 0 6.593184355e-05 9.567108719e-13 5.632593819e-12 1.796487864e-13 0 0 0 0 0.002159652822 0 0 0 0 0 8.87039841e-10 0 0 0 6.708319985e-14 0 0 0 0 0 199784.9842 72406.05447 0 0 1.689100499e-22 0 0.1747626172 0 0 5.325534086e-08 3.776187453e-06 0 0 0 0 0.07831850661 82187.70955 0 5.912650444e-09 0.01136060877 0 12.17650248 0.001711165046 0 0.8833422021 0 0 +0 0 0.1239667705 0 0.0006669225973 3.624374232e-20 0 3.958054774e-13 1.804121069e-17 1.101042366e-06 473539.3815 0 0 1.499486384e-14 0 2.189806436e-12 0 215.1441017 0 5.161834021e-08 0.06518136977 0 2377000.813 7.244154624e-07 0 0 1.624350122e-28 0.001441145082 0 4.294597192e-09 4.067280173e-09 2.905636862e-14 0 0 0 0 0 0 0 0 0 0 2.124231157e-09 0 40993.11715 0 0 0 0 0 1.552833204e-13 0 9.374802459e-06 0 0 0 0 0 0 0 0 0 0 0 3.86788468e-12 2.186199171 0 1.023214355 6.795592625e-07 5.723231857e-19 0 0 1.644111919e-14 7.115175873e-06 0 356892.3435 0 0 1.410531551e-07 0.002823982326 0 2.21681309e-05 5772.946093 0.0001040089289 0 0.250926681 1.465113959e-08 0 0 87.14402483 0 0 0 2.057900717e-08 0 0 4.768567002e-09 8.843309075e-09 0.1137704463 0 3.639192977e-09 4.273880156e-07 0 5.391946306e-11 0 0 1.098432769 0 2.79814783e-05 2.92490427e-12 0.0005374885873 0.001842912256 2.570585455e-14 0.003075650641 9.266407595e-21 0 0 0 0 0 0 1.322961193e-12 16.72055073 0 3.353023236e-25 0.0002815937132 6.75974131 20466.49204 2.292639864e-07 0 0 0.3492173022 6.854469687e-14 1.448669427e-24 0 224872.1606 1.224861446e-10 0 3.693828247e-11 1.122963022e-22 0 0.0004489597474 0 0.01092241019 3.802433788 0 0 1.858967403e-05 0 5.829195039e-18 6.87054871e-21 0 0 0 0 0 1867210.97 0 1584636.006 0.480576902 0 0 216038.6322 0 4.850872295e-09 1.287269542e-10 3.771662816e-22 3.092159171e-14 1.879338118e-15 1.328862437e-12 1.064613044e-12 537264.7439 0 0 0 0 0 1091.870018 366.9251924 1.538775765e-11 0 0 0 1.501259977e-05 1.625317054e-07 0 0.02529039935 0.003428679967 0 2.898708435 0.07829246417 0 0.003105084612 0 0 0 1961978.375 0 2.305101034e-11 0 0 0 0 0 0 0 0 0 0 0 5.802557609e-09 211115.207 4.687060898e-08 0 4.531550341e-19 5.92565726e-12 6.041589091e-35 0 0.01415180435 8.630833933 4.263671431e-09 0 0 0 2.127586491e-09 0 278154.932 0 0 0 0 0 0 0 0 0 0 0 0 0 569.6400798 0.003597120416 11.77232513 0 0 0 1.245836851e-21 0 0 0 516.00777 4.112283929e-08 0 6.941233908e-11 0 1.10168807 2.818921906e-21 0 340219.3182 0 0 0 0.09545589748 3.635894775e-05 0 1.244474684e-05 0 0 0 0 0 0 0 293340.8596 2604.624826 0 35511.47037 0 2.392789281e-14 0 0 0.04188104165 1038.026932 0 0 0 8.361955389e-05 1.582530666e-12 2.227983716e-17 0 0 0 1.188775347e-22 5.710120749e-17 4.022857468e-10 0 0 0 2.519966634e-09 4.177450819e-09 +0 0 0 0 0 0 0 7.768209737e-24 0.0002897781143 0 2432.82896 99487.90656 0 0 0 0 0 0 615.2171489 0 0 0 0 3936084.789 1.157369582e-05 0 0 0 0 0.001109467421 1.48967248 0 1.684762924e-09 0 8.376942338e-06 0 0 267199.1469 22273.68712 0 0 0 0 1.793742653 0 0 0 0 0 0 0 6.090778776e-14 0 2.980814261e-24 0.02527575267 1.725013557e-05 0 0 0 0 0 8.858958281e-10 0 0.004883214956 4.946441702e-08 0 8.234106618e-16 6.742228562e-14 3.675060922e-25 6.59449228e-08 0 5.184175099e-15 0 0 5.669700062e-20 0 3.280456219e-05 0 3.567257614 1.787923349e-05 0 0 3.274757936e-09 0 0 0 243667.9558 2.379765401e-07 44024.59212 0 0 351193.2487 0 0 5.458928615e-09 1021053.726 0 1.009636384e-10 0 0 0 0 0 40151.03497 2.639897927e-08 0 0 1.459206371e-12 0 0 1.456466666e-06 2.044105853e-18 0.06584549946 1.902359182e-06 120.7188154 0 0 0 0 2.781125859e-13 360552.057 5.864490318e-10 0 0 2.023153205e-10 6.347562042e-06 3.683274176e-13 0 0.04824113743 0 669599.7495 0 0 6.047480349e-10 0.05441555308 0 1353.146976 0 1.106569741e-08 0 0 0 1216754.907 0 0.0005037474463 0 0 0 0 0 0 2.321949295e-16 3.214531884e-13 0 5.472457249e-08 0 0.6010075243 0 2.783618989e-12 0 1.020736108e-07 0 0 9.202880001e-12 0 0 0 0 4.708471174e-10 9.220155371e-09 0.0001228611788 8.500056513e-14 4.042288412e-08 1.856125483 0 2.884126972e-10 0 0 150.3700017 0.003979106906 2.037889659e-16 0.005741811859 0 0 0 13485.27829 4.18299755e-06 0 0 0 945.2681874 0 0 0.000248278101 0 27.60380428 35025.62806 0 0 0 2.887169958e-12 0.3935419571 2.451131744e-17 3.598552917 0 424951.8385 12066.05687 0 5.987485621e-12 4.677507833e-06 0 8.772859423e-21 5.686291245e-09 0 9.759253166e-07 0 3.04910496e-07 0 0 0.003499861589 0.001329602513 59061.2759 0 0 6.84567298e-10 0 1.716308535e-10 5.850282202e-11 0 0 1.690012709e-13 5.860189694e-06 48156.76771 0.03141891098 0 0 1.743980554e-21 0 79.36261408 0 0 0 0 0.02465331091 0.3345358437 0 0 7.634142417e-12 0 5038.890243 0 0 2.660356451e-07 3.136872517e-13 0 7.700720626e-13 1.999765346e-06 0 0 0 436.3443912 4.160568437e-13 115319.5164 14203.02971 261442.3304 0 0 9.409065632e-08 0 2.058020826 0 0 1648759.081 0 5.302778718 0 0 0 0 0 0 1.498800232e-11 0 0 0 0 1.308115023e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 5.590784147 0 0.2832748337 0 0.007475620608 0 0 0 0 0 0 0 4.483764396e-09 13.28044158 0 0.05806496667 0 0 0 0.001247524952 32118.28478 0 0 0 0.002731283675 0 0 0 8.277702769e-17 44.74017431 0 0 3.593469223e-09 0 0 0 0 0 0 0 0 0 0 0 0 2.239695667e-10 1.091528251e-10 0 0 0 0 0 2.142518783e-16 0 0 0 0 0 208390.8963 0 0.0006598979375 0 0 332145.5944 0 7.464823215e-12 1.284614009e-22 0 0 0 7.705844404e-12 0 0.04895131865 0 0.1700878346 0 0 0 1.283578993e-19 0 0 11.66133743 0 6.598106987e-09 4.423485998e-11 0 0 4.557015952e-10 1.61909742e-07 0 14.36607903 0 0.003698201079 1.300308074e-05 8.456438288e-05 4.982072973e-29 0 0 7.991690201e-06 0 1.181364406e-14 0 0 3.385702534e-07 113746.5652 0 2.041325875e-14 0 0 6.079402097e-07 0 1.280693262 0 0 0 2.550773009e-10 4.619809229e-16 1.012314563 0 0.007869458511 0 7.460566594e-13 0 0 7.51147353e-18 9.163202943e-09 10510.31918 0 541.5922507 1.786573354e-09 0 0 1.390022978 2.067863314e-10 0.6754189584 6.903791242e-10 0 0 0 5.427922677e-08 916901.1326 0 5.994545862e-10 0 0 1.690409058e-12 0 0 0.03379657282 0 0 1.925839835e-06 0 0 3.552997292e-05 0 1441984.208 2.567228311e-12 0 5.190677154e-07 6.106145764e-11 0 2.202733849e-06 0 4.093987736e-13 0 0 0 4.929344057e-13 0.01068978922 8.356940978e-07 1965.534377 0 0 9.88764319e-06 0.06184045066 2.582066391e-14 0 0.0001669140457 683308.9715 25.06844382 0 14.86069739 0 372.2501099 0 4.667515223e-06 0.0002600279683 0 0 0 0 1.837368597e-09 4.145893644e-05 183.2066066 694.5318723 0 0 0 5.126965241e-15 178724.3961 4.069107572e-06 3656588.503 0 0 1.890302831e-05 5.061379454e-08 0 0 0.8230022738 4.042521175e-09 4.012857277e-09 0 0 0 3.565612891e-14 0 0 0 12.94338635 65.54840335 20704.88005 0 0 0 0 5.058298513e-17 0 2.555414534e-09 0 0 0 404.9747496 2.546402071e-07 1.609162227e-06 0 1009309.441 0 0 2306.785332 0 0 2432.599242 0.0001000137763 0 0 0 130.7260878 1883058.686 0.009381725038 9152.474031 0.2139286841 0 0 0 7.403501676e-26 208007.5417 0 0 0 0 0.001791625326 0 0 0 0 0 2.263278665e-07 281978.5381 0 0 0 0 0 0 0 0 0 0.01804213571 0 0 0 0 3.303145513e-12 0 3.017197051e-12 0 2.107015303e-07 0 0 0 0 0 0 0 1.942458824e-13 0 3.547541693e-17 0 +0 0 0 0 0 0 0 0 0 0 0 0 9.364441774e-07 0 3.683533436e-13 0 0 0 0 0.000167639061 0 0 2.189179876e-09 0 0 0 0 0 0 6.333931862e-09 0 0 0 0 0 0 7.38207096e-10 0 0.0001075198376 0 0 0 0 0 0 1.696030613e-06 0 0 3.788611938e-08 0 0 0 0 6.45410034e-28 3.46694437e-14 1.176536019e-15 0 0.04845902783 0 2.355245006e-09 0 0 8.833803937e-14 0 0 0 0 0 0 0 0.4315366719 0 0 0 13.15097637 4.439403136e-08 1504.155451 2.774686457e-11 0 0 155582.5386 0.6115137519 0 0 0 0 0 0 0 2.105053049e-12 0.001009391747 0 611938.3728 9.98604206e-05 1.689208115e-19 774.5013128 0 3667857.061 0 0 0 0 2.950083897 0 0 1.143775109e-16 0 1.076455492e-21 0.08178142272 0 0 0 0 2.176029035e-15 588067.643 0.0001257448022 1.157648381e-09 0.0001428988268 5.78982052e-05 2.499494969e-15 0 0 153421.2969 0.01303829012 0 0 2.939536321e-16 0 0 1159.745626 0.0005204390251 0 0 29216.65875 0 0.0006919357421 0 3.679108858e-16 0 0 265523.2148 3.163072684e-06 1.980877503e-10 0 1082.733538 180995.7991 0 1.516752496e-06 2.546743063e-22 0 402573.0291 26.57353821 10177.07915 9.355008958e-09 0 1.472902106e-05 0 0 0 53.12111157 0 0.2540530113 0 2.301073352e-13 1.876293369e-11 0 0.5090986472 0 5.690922391e-21 0.01664393816 0 0 0 0 1.039874386e-12 3080292.428 1.912115835e-10 0 1.14086303e-08 3.15533168e-13 0 9.634535174e-19 0 0 1.396183902e-14 0 0 0.0004136955653 0 1.108794625e-12 2.782378936e-10 1.74061764e-11 2.963974251e-11 117.2691338 0 10.3020804 1624.944045 1102.440339 0 0 15.53395257 0 0 0 0 0.01818540824 3576.563924 6.322515089e-16 23.86517481 7.238603723e-25 5.619195918e-22 0 340.4758011 1.092578998 64445.97757 0 0 34215.08679 2194573.836 0 3.797326838e-19 8.043915978e-16 0 0.0007957695016 0 0 0 0.002041542571 0 0 0 0 6.778375957e-07 0 2.398992155e-06 0 0 0 0 0 0 371996.1657 0 0 0 0 0 1.054254603e-06 0 0 0.2815870221 2.985156532e-16 0 8.189510749e-17 7.79983654e-12 0 0 0 0 0.0002198744235 1.067130771e-12 0 7290.221042 0 2.079461681e-21 0 1.881045027e-29 0 0 0 0 0 0 0 792417.6976 0 0 1452.046561 0 0 0 0 0 631631.5527 0.0001677622001 0 0 0 0 0 0 1070.42977 0 8.964366009e-10 0 18.4605069 0 8854.872216 0 0 +9.38297451e-17 0 3.501619514e-05 3.562362434e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 697.3067484 3.01007284e-05 0 0 0 0 0 0 0 0 1.156537722e-13 0 2.246066587e-09 372.0195993 0 4.096770168e-18 0 0 8.773873249e-17 0 0 0 2.363961781e-05 0 0 0 0 0 4421708.758 0 4.199717354e-22 9.856567332 0 0 3.837527062e-20 2.338556506 0 0 0 2.746166466e-16 1.116995318e-10 0 5.461075783e-09 0 0 22.43996907 1.796806937e-22 0 0 8.428702688e-05 0 0 0 0 1.822252589e-08 14755.52691 0 0 0 5.857835124e-16 0 5.641661616e-06 0 0 0 2.948708141e-11 0 0 0 0 0 4.20067431e-08 0 2.189792846e-09 0.01692671855 0 8.557351381e-09 0 4.21012293e-05 0 0 0 0 2.408750559e-19 0 0.0004465118086 0 7.543857917e-05 2.938779231e-06 6.534948508e-05 5.764636248e-15 9.125064675e-05 0 2.828623502e-13 0 2.147179424e-05 0 0.000326373366 3.446804241e-05 0 0 0 443276.0154 0 2.725670117e-09 0 24834.57716 0.0007279161498 2.496632513e-17 0 0 5.656528401e-13 172.9256912 25661.27258 0 0 0 0 0 0 4.93216145e-12 0 10666.19289 0 0 0 0 0 2626.064846 0 0 9.199585972e-36 1.79227879e-06 0 1.383491202e-26 3.164782301e-10 0.5163475753 445.5683774 0 3.851556389e-18 1.732653701e-15 105.5572417 0 24325.41251 0 0 0 2.640502617e-09 0 0 0 0.2573055041 9.851012856 3371.750551 0 0 0 3.847262244e-15 0 9.446011864e-05 0 0 0 0 0.004739134008 5.438838579e-11 0.01548103603 0 1814.201119 0 5.147717303e-14 79.13726237 1.92837454e-11 0 0 0 0 0 1.28148781e-08 9.536694391e-09 0 6.261120823e-09 10.91778613 3.481982596e-08 2.816888052e-11 0 1.347340245e-17 1.320942327e-12 0 31.50320088 0.0006367182227 0 0 0.0009276991468 242742.6327 0.004670467332 29.28713004 0.003409186658 0.1625030862 1.611886992e-16 8709.200662 0 0.1242450185 0 0 0 1.733740916e-10 3.839447097 2.002662623e-11 0 370.9137376 0 0 0 3.267384649e-14 4.828205793e-12 0 0 0 5.73834287e-08 0 0.005755066309 0 0.0003550859408 0.0001652374228 0 0 21.7064389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.644315021e-08 0 550542.6564 1041542.664 0.003257641769 0 43950.0619 0 4.433515636e-30 0 0 0 0 0 0 309284.818 0 0 0 0 0 0 0 1.52307028e-12 7.862330823e-14 0 0 +0 0 4.661962183e-07 2.592297715e-13 0 0 0 0 0.0004562541152 1.795870134e-13 0 0 0 4.468621856e-16 0 0 0 0 0 0 0 0 5.760879957 0 0 0 0 0 0 0 0 0 185259.8129 0 0 1.105536499e-05 0 0 330073.8518 0 0 0 0.006469930039 0 0.01540788456 1.145957183e-08 0 0 3.746579392e-08 0 0 410.3446853 0 5.32529711e-12 0 0 2.643121739e-09 0 0 324016.4685 1.732731151e-15 0 0 0 0 0 0 0 0.1106280882 0 9.419391199e-08 2.102161534e-06 0 36238.81344 2.599800407e-07 0 0.006528848873 1.026243313e-10 0 1.653730967 1.650814852 0 0.01562016125 0 46.79063884 2.398571138e-18 374167.3441 0 1.003616422e-05 0 0 4564.306594 3.919903634e-08 0 0.09449559632 1.841808156e-07 0 0 64890.48951 0.01300042883 1.019589308e-13 0 2.321775518e-07 0 0 0 5.687006722e-25 2.517609941e-10 85.60418241 0 2.059655912e-19 0.4292764768 4.358859582e-27 2935.107623 0 0 0 1.042951221e-12 0.00478324426 186241.907 0.005357340162 0 0 0 0 0 1.069354672e-07 0 7.556195867e-07 0 17488.63927 0 0.0001998013734 289.1010225 0 0 0 0 2.534272215e-06 5.447045531e-14 0 0 0 2.661365334e-17 5.045366136e-15 0 0.8825402224 0 0 0 0 0 14.7349245 16.34374632 0 556.842672 2.801434804e-11 0 0 3.868315619e-05 0 2.043275305e-13 1.903726692e-14 1.956324959e-10 0 0 14920.11084 4.118099277e-06 0 0 0 2.827649092e-15 0 0 0 6.75528992 0 0 0 5.454504325e-06 1.074559478e-06 1693678.558 4.36249456e-10 179957.3545 3.109788668e-06 0 9.357989515e-05 1.14474953e-06 189.4632094 0 9.200274337e-20 1137.150551 1.795098569e-10 0.01073427335 0.000358474705 1405346.153 9.096326254e-17 6050204.007 0 9.756504704e-06 0 777360.6545 0 0 0 0 9.466628249e-11 0 5.248681494e-06 4.043615917e-08 5.590991302e-10 0 1978529.89 0 835.4666014 0 0 2.12291038e-12 0 2545.573833 0 55679.37348 0 0 0 0 0 4.25105857e-05 0 0 0 0 478260.6043 0 0 0 2.683111422e-11 0 0 111232.7055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0007043457586 0 0 0 0 0 0 1.386732981e-13 0 0 0 0 35364.64615 0 0 0 0 5644.404057 0 0 5.266484426 0 1.379596717e-05 2.662885484e-15 0.0001177923081 2.54645951e-11 0 0 1.348138792e-07 7.329400089 0 0 0 0 4.300622548 0 0 0 1.873838079e-14 0 4.386470994e-05 0 0 1.416420327e-06 10.30276839 +0 0.001805174643 0 0 0 0 0 0 0 0 0 0 0 0 0 1.289657929e-08 0 0 0 0.03785265601 3.454285718e-08 0 5.510880152e-27 3.969853698e-16 0 5.235069893e-08 0 2.474392866e-07 0 0 0 2.584594884e-09 0 0 0 0 0 0 0 4.777517944e-12 0 0 0 0 0 2.123356317e-09 0 0 69.37335719 0 2.896340373e-09 70680.78783 0 0 0 0 0 0 0 0 0.04733401929 3729.024394 348036.8802 0 0 5.742907079e-12 0 1.080115831 0 4.594949394e-16 0 0 0 2.411015988e-05 0 253488.7831 2592.705818 6.990817875e-18 4.094364554 0 0 0.01730181707 1.179976204e-14 1.274948878e-07 0 0 0 1.025947979e-17 104533.2697 0 1.802442245e-08 0 0 13406.18785 0 3.958768902e-07 0 5.924687976e-09 0 0.4635486178 0 3.708907543e-24 0 0 0 0 3.165052702 3.098768244e-10 1.102986679e-11 3530.035206 1.271275237e-08 1.121705383e-08 0 0 0 1454068.441 2.805694804 0 4.834958652e-14 0 0 21.93456046 0 0 0 0 0 2.512017936 1.924527482e-08 0.002616955467 0 0 1.78889355e-09 5.689979063e-06 0.01991129115 5.372771215e-05 2830.142203 0 0 0 0 0 4.002830964e-27 408270.6193 1.053775157e-15 0 39.92715888 0 1.090373224e-08 0 3.372608277e-11 453362.9701 1.086576714e-09 0 0 0 1.312856617e-21 0 9.646813933 2.1522814e-10 401198.896 8.211044156e-15 0 2296.577064 0 0 8.494045823e-05 7.588384611e-08 0.3355519813 0 0 2.347194985e-12 3.539803564e-16 0 2.080875178e-08 0 7.972016372e-18 0.0001936338852 6.263892321e-05 0 3.139542366e-10 0 6.149972493e-08 0 0 0.3699129652 0 6741.269024 105.6435364 0.0001965441781 0 3.571202588e-13 40169.98502 1.869953114e-12 15.55466351 0 0 0 0 4.942582231e-14 2.2358333e-05 0 3.905564203e-09 109.8279392 0 0 0 0 4842.389157 0 0 0 0 3.650189408e-24 2.552552329e-23 0.0001715808915 172494.4737 1.531165448e-05 0.1855312628 0 0 0 0 0 4.509869891e-05 348.8204907 0 0 0 0.001317036841 43218.35986 0 0 0 0 0 0 0 2.55623197e-08 0 3.109642732e-13 0.0003704844988 361566.8406 0 0 0 9.655235487e-19 6.476279949e-18 0 0 0 0 0 2.956173039e-11 91.90219862 0.003445562286 0 3.84540275e-05 0 5.867474478e-07 7.505065112e-09 9.373486623e-26 0 0 4.799210268e-12 0 0 0 1.87824062e-07 0 0 11554.4689 0 0 0 1722.602034 0 0 0.1109353812 0 0 952237.7961 0 0 0 9.425361873e-06 0.0003967842881 0 0 0 0 0 0 272886.3427 1.132452101e-27 0 0 0 3.93300205e-11 0 +35.52528917 0 0 0 427801.6024 0 0 10.56076304 0 0 0 0 0 0 9.662427671e-10 0 0 0 0 0 0 0 0 1.850017819e-18 0 0 4.191642178e-13 0 822939.221 1.46621995e-13 0 0 0 0 16252.26681 0 0 0 0 0 0 0 0 0 0 0 0.0002849408889 286466.0473 0 0 6.294583273e-10 0.08923822364 0 6.392222741e-06 0.0005684341779 0.0002867121874 0 5.254360165 0 112.7682627 1.242703626e-11 0 0 0 4.881357923e-06 7.317660656e-15 0 0 3.664640962e-06 0 1.103350401e-08 0 0 2.345591067e-09 53737.92016 0 0 1534.375663 0.07931074962 0 0.001046231732 0 0 4342331.426 0.6764539703 0 8.574140982e-12 0 8.771798442e-05 1.574205011e-10 8.599418535e-15 0 0.002411385566 17264.10609 9.418257931e-14 0 6.922481678e-20 0 0 0 0 7.027500578e-16 0 0 387433.7939 2059992.385 0.004923396409 0 0.0009629986811 0.01267352487 1.550241482e-22 0 0 0 0 0 0 0 10492.27098 0 2.374881753e-18 0.002695179829 1.561300698e-06 2.900839728e-10 1.482255442e-09 0 2.517726825 0 271795.187 0 642711.4014 0 0.0004051717145 381411.0964 0 3.305281585e-16 9.483181203e-24 0 0.0008249154008 0 0 0 0.004173645624 4107.114665 0 21963.68924 0.000702922616 46081.70401 4.866393267e-12 0 0 355518.413 0 2.265863962e-08 67268.67058 0 0 0.0002807850673 5.438355429e-09 0 146768.191 9.544903662e-08 0.0007004343411 0 8.00273683e-09 0 1.626728229e-13 6.352711337e-13 8.840125469e-08 0 6.467755343e-10 0 0 0 0 0 0 0 0 2.569629789e-09 8.1193384e-16 3.345049571e-10 3.280429814e-09 0 446200.5564 1.281018697e-09 4.533263403e-11 1.598674148e-05 0 0 0 6.920228511e-16 1.643356371e-08 0 4.466249009e-25 0.04630058647 5.421937037e-07 4256.016099 429214.6279 150501.9125 0 0.5001667872 3.298495701e-14 0 3.804864282e-06 0 0 6.49327843e-13 0 0 0 0 0 2.393024594e-06 0 0.001846719642 2.078155465e-09 0.008417294255 0 0 0.001846211153 0.05008583559 0 0.003752865156 1.675109015e-17 0 31156.12342 460714.7055 0 0 0 0.0001788510453 0 0 0 1.169108521e-18 0 0 0 0 122323.5009 0 0.0002567500808 0 0 0 5.756217315e-07 0 0 0 0 0 0 128.4103361 0 0 0 0 760.8091993 0 0 0 0 0 0 0 2.819423866e-11 55140.97223 0 0 0 0 7.983930204e-28 3.53811554e-06 0 0 0 0 0 692.3547776 0 0 0 0 0 0 7.941172362e-15 0 9.224401841e-06 0 0 9.760486404e-29 9.951961309e-05 1.819047782e-05 0 0 3.712761434e-12 1.038334512e-06 0 0 +0 2.17543108e-11 0 0 0 31.04007215 0 102.2255977 4.05130124e-14 0 4.985749119e-11 0 0 0 0 0 0 0 0 0 2.664749836e-13 3.10095615 0 8.307688783e-05 0 0 0 1.129430326e-19 4.340734329 0 0 0 1.64480138e-12 0 0 0 1.532059993e-14 0 0 2.063408041e-10 0 0 0 7.875274914e-05 18332.23997 0 0.003216105633 0 9.275268516e-09 2.153633484e-08 0 0 0 0 0 0.002381974231 0 6.803566019e-06 0 0 8.04520504e-14 0 0 0 0 0 0 3.328292003e-07 0 0 0 410.5900945 1.070795479 0 0 0 0 0 0 0 0 1.669170607e-05 0.001827905689 2.281653629e-07 0.0003000100434 0 0 2.724167951e-07 0 0 2.329438368e-14 0 0 0 0 0 0 0 0 0 7.929275731e-17 1.249626955e-10 2236.185334 0 2500.411399 105.5993732 0.1501777589 0 2.281916049e-07 6.036450369e-06 0 0 5.089155541e-07 4.932623224e-09 1223.767901 0 0 0 5.147485058e-16 4.820434756e-06 0 2.81611182e-07 0 0 1.830671713e-18 0 0 0 7.361423549e-20 37511.78604 0 0 93393.01304 6.096326768e-17 0.02703077587 0 0 0 7.640220017e-09 0 0 0 0 28.76034494 0 0 0 2.321130526e-08 0 0.01072141338 0 0.0119012157 8279.374875 0 6.861992698e-07 3.661767196e-11 0 1.449248492e-12 4.615686455e-17 0 0.3736916652 0.0001313687256 0.000976003571 2.328984159e-18 0.00106722943 0 602611.2215 0 0 1.951034741e-13 5.349144451e-15 0 1.413385465e-18 0 0 1.886040711e-06 0 0.003927764731 0 7.079878343e-06 3.003387218e-06 1.126872683e-09 7.782537402e-22 0.02613565178 4.532315794e-14 0 0 9.27397889e-08 0 0 0 0 0 516.1979154 5.015739265e-15 2.395134032e-05 4.965685751e-10 0 0 1.336341264e-05 0 0 1.462171813e-27 0 86.57183564 0 0.0001324731924 0 0 0 2.600563532e-08 0 0 0.03831514442 0.3400001337 0 0 0 0 17.6740005 257816.3142 0 0 0 0 4.209838902e-15 1.386078032e-08 0 0 0 0 0 0 1.462949247e-05 1.890341555e-14 1097283.7 0 47785.56796 674168.6922 0 1.143578397e-08 0 0 0 0 0 2.638442472e-07 4.328871996 0 0 0 0 8040.953112 6.403936489e-14 0 0 0 0 0 0 0 0 0.0002497060598 0 0 0 4.444343216e-18 5.114082998e-11 0 0 0 0 0 6.156785449e-18 0 0 0 0 2.104177035e-12 0 0 0 0 0 0 0 0 0 1.707791899e-12 49.38616717 0 0 0 0 0 0 0 0 0 0 +1905.91453 0 1.343649507e-06 23824.95149 4.497335089e-12 0 0 0 1.258902508e-10 0.003005994975 0 0.0001623464063 32.02142216 0 0 0 4.84115603e-12 0 0 0 0 0.006488591885 0 4.328569943e-15 5.916686479e-09 0 0 0 564591.8123 0 1.902224189 0 0 0 96906.10969 0 0 0 0 0 7.37341797e-07 1.287137472e-21 0 0.0744586806 0 0 0 0 7.581910466e-06 2.60327045e-05 0 0 0.3924805243 0 0 3.024729438e-11 0 0 0 0 0 0.7358396009 0 0.0103390429 0 782125.5003 0 1.531034647e-07 0 4.718276335e-06 25683.19682 0 0 0 0 0 0 0 0 0 0.0002907666803 259960.567 0 0 0 0 2.288030528e-15 0.07597663428 0 0 0 1.593043396e-06 5.56158336e-10 0 0 0 0 2.481211963e-09 0 4.660559336e-10 0 0.1607301126 0 0 115.9666662 1.417386246e-07 0 0 0 240171.4544 0 0 0 0 0.0001125110932 4.958818411 0 0 0 1.193769441e-07 0 2.322616277 0 0.005218701879 0 6.34488968e-05 0 0 1464.641182 6845.238879 0 0.000744319853 0 0 0 6.210390108e-15 0 13.7879306 0 0 203736.1477 4.285806147e-23 0 0 1.381478567e-12 9.523388911e-19 1.480601783e-16 0 0.0004746964885 0 0 3.345467229 0 2.861819545e-19 1.932249984e-17 0 4.039162274e-11 2.678494515e-07 0.002820270294 0 2.306109788e-10 0 0 0 0 1.031773582e-16 0 0 0 0 2.165145562e-15 59599.59778 0 0 5.392181039e-06 0 0 3628.265057 2.768148745e-27 0 0 0 0 0 8.029689776e-10 0 6.862158231e-07 0 3.778226178e-10 1.716536346e-15 1.180017329e-19 9.375139582e-11 9883.119012 0 0 0 6.105633732e-12 0 0 0 0 8.28844387e-20 0 5.113500969e-06 0.0001969522797 0 0 0 0.0001930736338 1.652626644e-09 0 0 4.20765157e-09 0 1.51608342e-22 0 0 2.945273105e-06 0 2.87814821e-13 0 0 0 0 2.847978335e-09 0 0 0 0 0 2.697542333e-12 0.0009474607432 0 0 0.5716516284 0 4.819451846e-17 0 0 0 0 5.434162186e-07 0 0 7840.152968 0 0 0.3878153654 0 0 77.26524637 0.5234978706 0 2.706192433e-05 0 0 39.33120388 0 0 0 0 0 0 253.6828557 0 0 0 0 0 0 0 0 0 0 0 0 0 1965905.317 15.55946012 733.5311202 34428.57359 0 0 481970.7196 0 0 0 0.02694379186 0 0 0 0 0 3.414878024e-19 8.006880343e-14 0.001368122686 0 0 0 0 +0 0 0 40.74188545 12.28430712 0 0.001246690857 2.090832197e-05 0 0 0 0 0 5.530762815e-10 0 0 3.181603593e-05 0 0 0 0 0 78.67015897 0 0 0 0 2.234101644e-21 0 0 3.422282423e-11 0 1.557575657e-05 0 0 0 6812.021161 0 0 0 0 0 0.03898268739 0 0 2.147076744e-13 0.001490037418 0 0 4.113302685e-06 0.1146316833 0 0 373.0683062 0 1.273488013e-05 0 9.090424576e-28 5.358002735e-16 0 0 0 6.36187534e-09 9.551527739 0.06368709943 3.231056071e-08 11.91178716 0 1.094979893e-05 52.08165278 0 0 30.80923001 3.24358858 0 0 0 3.722368486e-15 9.317380015e-09 0 9.186979964e-07 0 0 0 4006305.748 0 0 0 0.04998559625 0.03192395651 3.476465175e-11 4.089751417e-16 3.434275569e-12 1.290113227e-12 0.09312655567 8.034726122e-05 0 258029.9018 0 0 0.171449884 0.03105800343 0 0 0.01083888299 0 1.643265843e-12 5.13103964e-19 1.239086185e-08 0.0008553939216 32.2352498 0 0.2128068422 0 1067.666627 0 0.05714483844 1.609700597e-10 0 8.955119089e-14 0.004477604933 0 0 0 0 0 78583.28513 1.391623965e-05 0 153.3288871 0 0 1.053532245 0 0 0.05748806407 0 32095.46274 419954.7262 0 0.3166515229 0 1.827209142e-07 8.110391053e-13 0 0 0.1947833926 0 0.002075465921 0 9025336.336 0 0 0 0 3.722744455e-05 1.824557441e-09 0.01723311296 0 2.676077357e-09 1.240219654e-08 0.002190547601 1160.925224 0 0 7.067320557e-13 0 3.916488223e-10 1.002732825e-17 78.93365066 0 0 5.5807642e-24 0 4.761482047e-27 1.209911922e-07 3.40156537e-19 7.020690627e-17 0 0.0001137929544 0 1.350945877e-21 0.5354717541 0 1.813154358e-06 4.867782677e-11 3.260488446e-06 0 1.301752264e-06 0 0.2480697218 0.0005561717404 0 0 0 5.775422779e-08 5.055702086e-09 0 0 0 0 0 6.305416571e-17 0 0 0 0 0 0 0 0 41.56664464 0 4.53194648e-16 96118.98716 1796.702808 2.783659782e-40 0 0 0.05891314219 0 0 4.096133025e-13 0 0 0 9.2177676e-09 0.01608501085 0 0 0 0 0 0 1760866.661 4.254107393e-15 4.634141876e-05 0 0 0 11297.09209 0 5.409920395e-12 0 9.435522973e-10 3.651947552e-14 0 0 0 4.483667503e-05 0.006547198588 0.09908039185 0 0 0 0 0 0 614376.024 0 7.386928732e-05 0 0 0 0 0 33660.90677 0 52276.53562 0.2590726057 2.895732528e-09 37.84520155 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.900277834e-10 0 2.100534264e-10 0 0 0 7.508992619e-07 0 0 0 0 1.474284049e-13 1.744275625e-20 0 +0 0 0 0 0 0.7113006051 0 0 0 0 3.828199897e-05 4266.659082 0 0 0 0 0.0001276194847 7.428605508e-20 0 0 0 0 0 0 14.8252628 0 0 6.335127252e-13 0 0 0 3.864968906e-20 0 0 0 0 0 0.005556994283 0 2.419080337e-14 0 7133.186648 0 0 1.143971001e-11 0 7.920727301e-08 0 0 0 0 0 0.01426603023 1023.260759 0 2.196689897e-09 2.812073921e-12 5.797515818e-06 0 0.006741261132 0 2.013951197e-11 0 0 0 0 6.254921769e-12 0 0 384005.6546 0 0 0 0 0 0.02154647793 0 0 125.3444625 179492.121 1.584849376e-11 60.98866199 4.045652027e-05 6.009545428e-08 3.586458128e-08 0 1.100838027e-11 0 0 24.94299157 616075.9901 112791.064 4005.451501 2.523811748e-09 0 0 0.001948584861 0 25.90602977 0 631033.9712 2.788196959e-10 7.023783483e-34 0.1097612547 0 0 3.583890764e-11 3.425880775e-18 3.787155067e-11 0 0 0 0.0001818880786 9.021485943 65.04781481 295367.4489 25636.53205 0 19657.06549 0 6.820719589e-13 0 6.603471732e-05 0 1.457639224e-14 382.6919955 2.634965549e-15 308.4430879 1.443108978e-14 1.123687684e-10 0 0 0 17357.30233 0 0 0 42235.62278 0 0 0 0 7.080941431e-05 5.342328707e-14 0 0 0 0.5748728386 0 0 0.0002481086866 0 715133.7174 35.59483342 0 0 173.8009063 0 0 269403.6066 0 0 0 0 0.01190810455 0.09252308732 0 0 0 0 9.213098735e-06 0 0 9.703286525e-05 3.401280848e-08 2.548467035e-18 0.2703300022 6.115806949e-16 0 0 1.782455999e-06 13273.2766 0 0 0 0 4.370210767e-10 1.016940917e-10 36.6746398 0 1.685191882e-16 0 1.086478144e-13 2.743793019e-08 0 1.791353845e-05 0 0 0 0 2.439385056e-08 6.268586817e-13 3.717272145e-16 0 0 0 0 0.001440521267 5.950452282e-12 0.4662916177 2.2737864e-13 118122.8181 0 437.1260425 113.389077 0 7.26051202e-09 5.834849552e-12 0 0 6.427076054e-08 9.876339363e-06 0 0 0 211096.8245 0 0 0 0 0 0 11.12057787 0 425236.4913 1740.228401 1600.586291 1.020183966e-11 0 0 0 0 3.903312748e-08 0 1.325740466e-11 0 0 0 0 0 0 0 3.177779988e-06 8.839665713e-20 0 47.4704346 0 0 648299.2402 0 0 0 208964.4527 2.219591896e-33 0 0 372401.7575 7.143245906e-10 5.105410452e-05 7.83753425e-05 0 0 0 0 0 0.8030376169 0 0 0 0 0 0 0 0 0 0 0 140.9060213 0 0 0 0 0 0 0 0 59.43154203 8.460653506e-11 0 0 +0 758178.0858 2.071194146e-16 0 0 2.371490495 0.01882771527 0 12586.31795 0 0 368.5441121 5.82930671e-10 7.789842124e-12 2.933297631e-22 9.90028254e-11 4.864261223e-05 0 0 0 0 960781.7118 0 7.930924063e-12 0 0 0 0 0 0 0 0 5.994952978e-16 0 0 0 0.6407511173 0 0 0 0 3.768249775e-16 0 0 0 0.001432543676 0 0 5.595158107e-16 0 9.054555391e-20 0 17.9202098 1.708684035e-09 0 0 6464.744807 0 0 1.105399535e-14 0 0.03602324605 1.850276015e-18 0 92.18492962 9.242593238e-35 0 0 1.774882913e-05 0 451417.7837 0.004812232405 24.09646017 0 0 2.545537994e-17 0 2.024709583 0 0 0 613938.1484 1595.772007 4.48377271e-07 2.120832982e-11 3.400247538e-18 0 220253.052 108058.6504 196.8899815 0 8.750322165e-18 2.372730433e-12 0 0 8.078044634e-22 1.511188877e-13 6717.863921 0 1.234695391e-07 19333.15933 0 0.007339993946 0 1224308.794 0 2086.454579 6.449267339e-11 1605025.169 2.198364484e-13 2.911017973e-12 0.001381244709 0 4.800864462e-21 0 48969.67773 1.107512323e-16 108.4438531 0 0 7.877711616e-18 1.578612353e-15 0 11998.91545 0.01218361082 1.37196036e-10 0 0 7258.122967 0.00101321835 0.07840640515 0 0 0 1.129349045e-08 0.1200085808 0 0 0 0 0 0 0 0 0 4.038832361e-16 0 0 0 0.0001964463864 3.133550621 0 0 0 0.004973275838 0 0 3936.235634 7.504448095e-05 1.092956972e-19 0 0 2.138230982e-17 0 1.220460461e-15 180.2755046 0 0 4.932735442e-20 0 0.07403307628 0 0 1.301975086e-05 0 6799.304078 1.249466147 4.864586189e-14 0 0 3110.141627 7.323079366e-29 0 0 0 0 0 0 0 0 1.258456626e-05 0 1.896644844e-26 0 4.104005816e-12 0.1520254196 1735419.371 0 39.32573026 0.06304694975 0 1.008034409e-27 148242.0024 0 0 0 0 0 0.01872950025 0.0004035971737 9.22486249e-06 9.967932969e-24 0 10397.53117 0 2.201547859e-08 693.9766658 0 1.394026111e-05 0 0 0 0 0 0 116276.7874 0 5.362888025e-09 0 0 3.873374231e-10 0 0 0 0 1.085857352e-15 0 0 1367017.493 0.001199221327 0 0 0 964384.8783 10785.92865 0 0.83690521 0 0 0 0.01926954049 0 0 0 0 4.719566221e-10 5.092003624e-10 9.073783838e-20 0 0 0 0 0 0 0 0 9.532707278e-14 4.196024205e-09 0 0.06133442065 0 166.6646174 0 0 0 0 0 7.920369163e-20 0.0008701567313 0 0 2.223221252e-08 2.007629496 0 0 246902.268 0 221053.0186 0 0 0 3.597813633e-30 0 0 25.86572986 0 0 0 0 0 +0 0 0 0 1.081852742e-24 4.900067091e-07 0 0 5.430682705e-14 0 6.476638515e-21 12.67992147 0 0 0 0 0 0 0 0 0 0 0 8.095691778e-05 0 0 0 8.681691353e-08 942304.232 1.236532157e-13 0 0 0 0 0 6.996523648e-05 0.02722516874 0 2.694437969e-06 0 0 0 0 0 0 0 0.0002998135625 8.54393545e-06 0 0.6651212306 0 0 8.040454766e-15 0 0 5.78657566e-13 2.035167782e-07 0 0 0 0 17060.82847 20.09884473 3.135459015 2.695137848e-10 0 0 0 245240.2097 0 0 0 0 3.206690908 66831.84622 2.747164307e-15 0 0 0.09712056026 0 0 0 0 0 28293.28221 0 2.67401374e-11 0 0 0 112934.7109 269621.1485 0.09789006989 8.27750822e-19 2.415135611e-11 29278.55247 0 0 0 2.281206713e-12 0 0 4878.676871 0 2.154822751e-05 1.642653556e-08 0 0 0 0 0 0.4794235516 3.150506781e-11 0 1.275964025e-12 1.546887293e-07 0 0 0 0 61280.37806 5.858945374e-13 0 0 1.667623565e-11 0 1.606611239e-11 1.081325788e-36 607124.6952 4.794614916 117453.604 5.144119172e-09 792350.0238 0 4.058323978e-05 1.323641666e-09 0.01098753756 0 2.697233721e-06 4.481144717e-15 0 8.291089454e-06 0 0 0 0.001519145091 0 0.0001574253646 0 1.180560755e-08 0 0 0 0 1.154523214e-17 0 3.103396812e-09 4.108122546e-06 0 0 0 0.7179029983 0 0 0 8.527181665e-20 0 0 0 8.771439987 1.055678694e-05 0.3431962452 5.165120656e-13 7031.809271 0 0 1.46597978e-05 0 0 0 0 0 0 0 0 0 0.009131886219 0 3.071194018e-40 0 1.930474046e-09 0 0 4.199279634e-06 446.8031817 1.224850723e-21 0 7.796869455e-18 0 0 0 340.6109671 1.043348822e-05 1.09666977e-11 0 0 436585.4858 0 0 16.24390457 0.000492274593 0 0 0 4.489900218e-11 0 0 0 0 0 0.01181490523 0 0 0 0 0 0 0 591.4110209 0 1.794860704e-10 0 147.2180046 0 0.0008678034604 0 0 0 0 1.591038683 0 0 0 0 0 0 285331.5183 0.001582301236 0 0.0002827463337 779641.4532 0 3.725268702e-10 0 0 164010.0756 0 0 0 0.001450814599 0 170078.411 0.04621264111 0 0 0 3.919409818e-27 0.2436598069 0 0 0 8.722048883e-13 0 2.141984566e-08 0 0 0 0 0 0 8.771958045e-14 0 0 0.00442766051 0 0.0001916343698 3.311549501e-09 471.9757754 0 0 0 10.8562525 0 0 9.358009891e-06 0 53.16639833 0 1.485760109e-06 0 +0 6.58272396 0 0.0005346678826 0 0 0 0 0 3507.579829 0 0 0 0.01882315713 0 0 0 0 0 0 0 0 2.204741138e-08 0 0 0 6.373205966e-08 0 0 0 3.111622253e-08 0 0 0 0 1.416469815e-31 0 0 0 120.867012 0 0 0 0 2.41997148e-08 0 0 0.0003193943496 0 0 0 8.001943532e-07 0 0 0 0 742232.1933 0 0.00211212163 0 5567.089303 0 0.001469957763 0 0 0 65549.72956 0 0.0006524965054 2.860606393e-06 0 0 0 1246546.965 0 0.001816151764 20.50354803 17477.3542 1.325100398e-30 0 0 0.1788374049 122875.4154 0 0 0 0 13.79644008 0 0 0 2.13121382e-07 1839.03123 0 0 1046791.485 2160270.224 0.0003298685922 0 0 39665.82186 0 5.254866096e-14 0 0 0 2.391258033e-16 0 0 0.001897298497 0 0 5.553247738e-18 0.02409472808 0.0005415084034 1061.830554 0 453.6817116 0 2.849771117e-29 6.859467213e-14 0 4.250329905e-14 111960.14 0 0 4.510052445e-13 0 2.297643664e-09 1.368211138e-13 0 6.850329104e-10 0 0 2.383520893e-07 0 862.1253564 0 0 3.163643953e-20 0 0 0 0 5.363857428e-17 4.965759273e-07 0 0 0 0 0 0 0 1.56464145e-05 0 0 0 1.46505772e-05 2.335288117e-10 0 2.100663251e-24 0.001759903493 1.040814416e-16 2.617097622e-05 79.85715281 7.382591058 0 3.69895871e-07 0 0 0 0 0 6.296459445e-05 58293.27015 0 0 2.170278028e-07 364343.4902 0 1.597518342 3.158220718e-18 0.001100833948 3.300338506e-06 8.809396431e-07 7.076052703e-24 0.005844257311 0 0 0 0 8.698314402e-05 0 2.550361711e-24 2.726999247e-06 0 0 0.0002682967302 0 0 0 1.055462211e-11 3.470987824e-11 0 0 269203.6501 0 0 232.8589367 52793.15179 1.801284918e-11 41.5051233 7.003385225e-13 83.49645304 0 3.525971832e-18 0 3.7600591e-15 0 159.5848791 0 60132.65148 1.27040627e-11 0 6.973671531e-06 0 9.343050857e-18 0 297.557951 0.01379440985 0 0 0 7.875841352e-11 2.878955239e-05 0 0 0 0 2.247912261e-10 5.558209327e-08 1.150092301e-10 0 175452.4986 0 0 7.105295547e-12 5645.846551 189.0600955 0 0 0 19646.59814 0 0 0 0 0 0.9220879665 10.93479504 0 0 0 0 0 0 69785.45772 0 31.14089065 3.004636507e-17 0 0 0 0 75077.59871 2.066131864e-32 0 0 381675.0961 0 0 1824.29316 0 0 0 0 0 0 0 0 0.005243097174 0 0 0 0 0 0 0 0 0 +0 0 2.736837594e-09 2777210.644 1.235973533e-14 0 0 0 0 0 1.298019555e-19 0 1.47546091e-07 2918.145471 9.344471801e-28 0 174642.451 0 152166.3334 738949.6483 0.02201007348 0 0 0 0 1.471153773e-10 0 3.321307654e-20 0 0 10.21419259 0 0 3.645946086e-07 108350.3574 0 0 0 0 1.263939372e-08 0 0 0 0 1.917508229e-17 0 2.347624678e-24 0 1.845158394e-10 0 0 0 0 0 0 0 0 0 0 0 1.886118549e-15 0 0 0 0 0 0 0 0 2131.442848 1.239018229e-11 2.60837851e-10 0 0 11.40888742 0 0 2.091317636e-08 0 0 0 0.001396836817 2.939488885e-12 0 2.718309188e-11 0 9.473284119e-06 0 0 0 5.303985974 0 0 9.585569785e-06 0 0 0 0.07857033727 6.277301359e-07 1079.444005 0 118051.4004 0 0 25.85420111 0 0 2.67265062 0 9.257135442e-15 7.858139443e-17 0 2.628992418e-09 0 8.854571363e-10 0 11.73048623 1.556627832e-15 3.850047685e-15 0 1.448356954e-15 0.004756441355 7.789157138e-07 2.503930588e-18 0 0 7.083158257e-05 5658.477514 0 2.460104082e-10 0 2.406888006e-24 1.048718324e-15 3.590165055e-26 5813.957957 228305.0488 2.212572052e-25 1.396391663e-07 0 2.789605549e-07 0 0.01496614388 0 0 6.404550094e-09 6.600753519e-12 0 0 0 0 0 0 1.090724793e-08 1.073857982e-25 0 0 39015.23667 0 41980.31123 0.01723588374 23662.54304 0 0 0 2.723371001e-26 0 0 0 4.868593046e-13 0 0.001324448805 0 2947.630626 0 484968.166 0 0 1.606245688 484.6816142 1.83846799e-25 0 5.500348391e-14 0.4035054226 0 0 0.004546486232 0 552949.3208 189198.5334 54.74693818 0 0 109886.4447 1.885046667e-12 0 3.830950689e-09 0 2026.689486 3.863355318e-09 33704.24039 0 0 0 12420.97174 1.093719848e-05 0.0002458996515 8.188815914e-12 0 8.39595472e-31 108.4675364 2.898678794e-11 0 0 0.03032448938 576642.2035 0 18.86728661 384657.2831 0 0 4.243670818e-08 0 0 2.550733341e-06 0.000216595919 0 3.507029676e-06 0 0 0 195106.1424 0.001961844132 1.046932454e-27 0 0 0 0 0 0 0 0 1.392338899e-08 0.7653985396 1.016142077e-09 0 2.01432623e-06 262.5894843 0 5.429499277e-14 0 0 0 40.34739463 3.93144271e-13 1.362958054e-13 0 0 0 0 0 59.45185309 0 2.11710245e-09 0 0.002900081358 0.0002585604012 0 0 0 3.193528066e-14 0 0 0 0 0 5.400690812e-07 3.943044606e-09 0 0 0 2.636713486e-11 0 0 0 0 0 0 0 0 224606.3766 0 0 5.267537876e-13 0 0 0 0 0 0 0 +0 0.2107382306 20.6953984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66739.61229 0 0.07746855934 0 0 0 700181.0306 0 0 0 0 763437.1335 183263.359 2379359.912 0 0 1.000670722e-06 2.19154363e-08 0.02144132047 1.49463388e-07 0 0 0 0 0 0 0 0 2.07854139e-26 0 4.319302715e-12 0 1.292755821e-06 0 0.0001555369647 4.72864328e-11 1.235607921 0.0003498240702 4.816211819e-13 538247.5644 0 2.39675427e-09 0 5.117695237e-16 0 0 0 0 4.220889238e-12 1361.253927 4.127416936e-08 0 0 0 0 839.0088327 385.2255117 0.6025070245 0.008179686671 0 281647.636 1.311894011e-21 0 0 0 0.002120765275 0 5.632753777e-15 0 0 0 6.306812219e-14 350897.4326 1.451601139e-06 8.698298147e-08 0 18246.18861 0 0.03757634964 0 0 0 1.106203157e-12 1059876.293 1.044987862e-07 0 725.1870881 0 6.037781198e-08 0 2.262774103e-06 1.127630888e-05 5.700334012e-05 0 1.134063657e-11 7.888068338 0 0 2.482910732e-23 0 0 0 4.863213641e-13 2.72677789e-11 0 1034635.757 6371.797988 0.003018373619 0 0 0 1116.072093 4.43317968 1.206217172e-09 0 8.465724686e-13 2489566.853 9.940100628e-05 0 6.512276055e-18 1.547982606 3.823408416e-14 0 2.299752959e-17 0.03695981573 0 8.532864781e-09 0 46.80323328 4.128722432e-05 0.0009724445851 0 0 5.143556304e-08 4.9259595e-07 2.279547672e-11 0 0.05297155072 37.60113417 0 735578.5979 1.079310185e-06 0 0 0 8.032671969e-07 10966.28022 6.420994638e-05 0 0 185117.3705 0.0172142548 0 0 0 0 0 0 0 0 0 2.517335352e-19 0 0 151154.3639 0 38745.7812 2.263816262e-09 0 0 0 2534.410491 298605.8862 0 0 213041.6128 1.085227514e-08 7.754451603e-06 0 630129.2717 0 0 0 0 0 2.321081376e-08 0.000373644511 0 2.387208503 3.619845914e-32 4.789039501e-12 3.915822306e-13 7.496740115e-09 0 0 9.153881762e-06 0 1.599678179e-16 0 0 0 0 0 3.894543503e-11 0 0 0 0 2.862810752e-06 0 0 0 0 5457996.481 3.280607968e-08 0 0 0 0 0 2.401486392e-10 0 0 26137.15105 0 0 0 0 0 0 7.950654624e-17 4.482077488e-05 0 6631.540399 0 0 0 0 0 0 5.137195061e-19 0 0 5398.699641 0.4458465222 8.408694293e-26 0 1.229414386e-06 13466.43972 0 0 280.3299247 0 0 977.6650199 8.540469064e-08 40.99819842 0 316.0436695 0 4.146447896e-05 1.058625257e-11 0 0 0 0 0 0 0 0 4.371292777e-28 0 2.431497294e-13 0 0 0 0 0 0 1.119057119e-12 8201.882998 0 +0 0 498191.0275 0 0.9918102591 14404.77001 0 0 0 10181.47253 0 0 0 0 5.457403242e-27 0 0 0 3.543842501e-20 0 0 0 0 6.846381286e-16 0 0 0 0 0 2.796529372e-05 0 0 312425.4586 7.905380384e-12 0 3.091847e-18 0 1.540578964e-09 655978.0313 0 8070.584581 5.207203442e-08 0 0 0 0 0 0 0 4.978421722e-15 9.472225567e-11 0 0 0 1.135091981e-13 0 0 0 1.292533022e-13 658150.6935 0 0 0 14878.58135 0 0 0 2.185504551e-08 0 0 0 3.557684426e-10 0 0 0 0 0 7.954376533e-08 3870.518345 42095.03702 8.702599113e-11 1.194288948 0 0 1.067695766 0 9.457856006 0.0008218789516 0.06538942379 0 0 421.4219618 1.822687294e-13 0 0 2328339.634 730.20455 0 1592024.159 10.26175187 1223.905059 0 288.5972631 0 193.4931239 0 5.750645102e-05 0 1.084644642e-26 2.028923019e-15 0 0 4.793389172e-12 9.87216752e-09 0 4.339105913e-12 0 0 0 2.70516736e-16 0 0 2.236853508e-14 1.281153161e-10 0 0 105401.0328 3.798550996e-06 4.577548465e-20 8.805355512e-08 0 0 1.692046784e-06 7.70206828e-06 4.055734921e-18 0 2.004831856e-17 7.155971616e-19 4.338630807e-05 1.024967015e-12 1.825093846e-10 0 0 0 0 9.08410631e-19 267013.2975 0 0 0 0 0 0 0 0 33.38619891 0 0 1.931631824e-11 2.308809351 0 2.462460756e-08 0.100238796 40342.01369 0 3.950206321e-12 0 1.655464487 7.994320361e-09 0.0007161621106 1.032198676e-05 1.423668618e-16 0 0 0 62681.19722 2.5855545e-12 1.791342927 0 1.227446766e-09 0 0 4141.873477 0 2.274078108e-09 7.433287215e-16 0 262.266735 5.834215378e-10 0 0 0 5.731840494e-08 0 0 1.108353161e-14 0 0 0.006070529714 0 0.1076573579 0.0004731629379 0 5.639653325e-09 14475.40587 0 0 93833.48543 0 1136713.1 135.6712778 0 0.0004179112176 0.0008686250066 0 1.559125918e-10 0 0.001591295134 114318.1677 0 0 2.396162213e-15 0 0 0 9.873004115e-17 0 62987.34782 0 1.068413959e-14 0 0 5.804183045e-05 0 0 0 0 67918.52386 0 0 6.903908241e-07 0 399909.9896 0 0 0 0 0 1.603695556e-11 1.280960379 2.699886771e-24 0.0005808592145 6.4583175e-12 3.806320142e-14 0 1105.458889 0 13.15763526 1461772.247 0 1.434073997e-20 0 78.80229833 0 0 0 0 0.009581053934 0 0 0 0 0 1289273.746 0 0 9.063961914e-08 13376.97849 0 0 0 0 0 0 0 0 0 2.322251958e-06 0 0 0 2.317829859e-12 0 0 0 0 66252.55782 2.248120199e-12 0 0 +0 1.128009318e-09 0 0 0 0 0 0 0 6.591449652e-14 0 0 0 0 0 0 0 0 0 41.35269986 0 0 0 5.210998251e-23 0 1.253840255 0 5.494734733 0.1458101857 0 0 5.343779657e-14 0 0 0 0 0 0 1.332386783 0 0.01743131599 8.316111216e-14 4.404164148e-10 0 3.550232568e-16 0 0 0 0 9.313954399e-08 0 0 1.227116634e-07 0 0 0 0 0 781314.8096 0 0 0 0 0 0.000468525469 1.795877557e-11 0 819465.8855 0 2.001577996e-10 0.5502845579 0 0.01433194647 0 2837.598372 0 0 0 0 0.4880544929 0 0 0 0 0 1.337677753e-10 0.7340752041 0 0 3.07967581e-18 0 3.127082205e-05 0 0 0 0 1018029.553 0 411037.5899 27543.87841 1.80411766e-05 1.498290503e-06 0 0 1.615716613e-13 0 6.652201602e-08 29223.69688 0 0 19782.30906 0 5.526745305e-07 0 0 0 0 0 0 0.01979446306 6.663262642e-10 0.02335283121 829905.2542 3.444762451e-06 0 9.986178026 0 9.997525652e-20 0 0 1.48672706e-13 0 2.505369283e-13 0 0 1.667525415e-05 0 3.98657479e-14 3.114367632e-05 0 0 0 0 0 5.929190439e-16 5.211912828e-16 0.0001769985858 0.0049455906 0 0 0 0 9.215206997e-09 2.934982792e-08 2.011807988e-10 6575.494255 0 0.6117972763 1.722725138e-06 0 549.9960471 0 7.336171917 9.910559326 0 2481.781905 0 0 0 0 8.074838796e-12 1.677307223e-11 0 9.856696389e-13 2.17911885e-11 0 0 0.0001263764377 0 0 0 0 0 1.946064259e-06 0 0.1913423745 4886.553336 22.16036413 0 0 4.103058836e-28 0 1.489631632e-10 0 0 0 127.3388091 0 2.405464975e-05 0 484701.1738 2.597762227e-22 1.410444956e-07 1.396050245e-07 0.2703643163 0 0 0 1.790982041e-13 2.237494116e-06 0 4.132209083e-14 0 0 0 27840.49172 189912.5048 0 0 0 0 9.129329404e-20 9.012981932e-10 0 0 7.029640636e-11 0 4.297208444e-05 0 0.4472384564 0 0.000109334947 0 0 0 1.07479857e-14 29.95921213 0 0 42890.63558 0 0.000732253736 4.79984448e-26 0 0 176736.0176 0 0 0 0 0 37860.37026 0 5.537848632 0 0 0 0 3.347117424e-06 0 1.338171774e-08 8.915172902e-11 0 8.139919934e-17 0 0 1.692521817e-07 2.459400974e-15 0 0 0 0 1.498938882 0 0 0 66.2166322 0 6.970523105e-26 0 0 0 2.190692786e-12 1.036493425e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 1.582648908e-15 0 0 +0 5942.890904 7.151856805 0 0 0 647.5539144 0 5767.156029 0 2.008721122e-24 0 0 0 0 0 0 0 0 0 0 3065.526178 0 1.444214481e-06 0 0 347.5135277 0 0 0 0 0 1.236800215e-15 0 2.340483824e-13 0 0 0 0 0 0 0.0005300852476 0 0.1448690886 0 0 3.113752034e-25 895212.2192 0 2.197737605e-10 0 0 1.100593013e-15 0 0 1.057522488e-09 0.001622920005 6.381581414e-06 0 0 1.179216189e-26 5.748787522e-08 8.282865186e-06 722.8423899 4.080826089e-17 0 0 0 0 0 1.295148973e-12 0 0 0 4730.182768 1.849558549e-12 0 2.157853579e-09 0 0 9.28619113e-08 3.077756505e-10 6.879670863e-10 537.9150321 0 2.036453446e-07 65.4662157 0 0 0 0 0 8.164912419e-09 0 0 0 0 119193.3034 0 0 0 1.163670403e-07 0 7.352271661e-05 79.36760569 68823.69369 0.0005174576614 0 0 2804.35395 0.0005535687403 0 7.341432312e-06 0.0003525523215 2794.367465 4.156365481e-16 0 0.0002631593195 1.973670184e-18 0.4596961753 22697.40512 1.265689578e-05 2549.724147 0 0 0 0 8.682466711e-21 1.555295176e-05 0 15.95443133 0.8991550782 0 9.126663364e-22 0 0 0 851.0599545 3.029561389e-06 2.343055493e-13 0 0 0 9.916327372e-05 23.14956254 0.04635621851 2.55920828e-10 0 2.222506607e-06 1.603574899e-05 0 0 0 0.001175204399 0 0 1.832649647 0.09811397304 0 0 0 1.011019573e-08 1.453332048e-09 266369.7614 0 0 9.944546383e-09 0 0 0 0 0 0 4812.291188 0 1.623452467e-18 0 1.787457497e-17 0 0 0 0 4.290238474e-12 2.370346974e-18 0 0.006315389705 0 0 0.002161764923 8.161863854e-09 0.05575811042 1.04566196e-09 0 0 0 0 0 0 3.066191839e-18 7.85874401e-18 0.009763373521 0 1593370.078 0 4.866896198e-12 0 0 0 0 0.5472294194 0 0 0.06761650024 0.0004458857091 0.002462914409 0 0 7.009253626e-11 1.162584873e-20 0 0 0 0.0009385479193 0 0 0 5.573280499e-27 0.0002725938943 3.699045852e-12 1.244903499e-09 0 0 5.381998227e-07 467.9373019 0 0 0 4017.873638 2.088587139e-11 1.43052648e-17 0 0.007563778221 1078393.926 1.017593978 0 4.123687866e-21 0 2.327193689e-10 0.0006274954608 0 1.719975867e-19 0 0 0 0 1.308145716e-12 0 0 0 0 0 0 624.5359152 0 0 0.22829098 0 0 4.057958577e-06 0 0.004371700321 0 0 0 0 0 0 2.950991529 0 0 5.602030239e-22 0 0 0 0 0 2.051364566e-17 0 0 0 0 0 0 0 1164.136638 0.01236889991 0 0 0 0 +0 0 0 0 0 0 3.935353025e-17 0 0 0 11.83645648 0 0 0 0 0.7170534052 5.318830104e-05 3.565099879e-15 7.835308651e-26 0 0 0 0 0 0 0 0 1.534925688e-07 3.718601457e-07 0 1.06398691e-21 0 0.02837280823 0.0005202728306 0 4.317938878e-14 1.766370544e-19 0.003636741559 0 1.498931712e-08 3.679132533e-11 0 0 0.5503396219 2.539310453e-09 0 1.002751714e-05 537.4875553 0 0 0 0.0004835336438 0.002172248034 0 0 0 1.766182206e-10 100.8409204 0 0 11.04700866 0 278.7515403 9.041604643e-12 1.918558237e-09 6.572470632e-08 0 0 0 100081.9348 0 0 0 0 0 0 0 3.556083489e-14 4.595010081e-24 0 0 0 0 0 0 0 0 8.415282251e-13 0 0 0 0 0.01545598746 0 0 0.000340535575 8.079079726e-15 2896.447979 3.864248712e-11 0 0 0 0 7.115017109e-15 0 3.611084004e-24 3.871994706e-14 3.905790876e-21 0 0 0 0 0 0.000148433557 5.00795889e-05 0 1.458329603e-15 139923.0096 1.709677539e-10 0 0 6.46435374e-05 0.0003844703163 0 1053.984536 0 0 0 9.272177237e-12 1.559354704e-11 2.899054061e-11 339906.5958 0.0002473540183 0 1924.649681 2.441750019e-06 217.1940327 0 3.231320526e-15 2.548979008e-17 6.623541907e-05 1.935670821e-09 0 0 7.204877439e-13 0 0 0 0 0 2.154809666e-16 3.179087874 7.483276074e-10 18159.95005 0.268813113 0 0 0 1.214260983e-19 0 2.097618422e-13 0 5.481980994e-13 1.942709965e-25 0 0.07359131661 0 0 0.0002171516392 0 1.41185308e-07 3.027652298e-18 0 0.0005664521524 2.055613986e-05 0 0 0 0 1.875750223e-05 0 0 0 0.451473906 0 0 0 3.940159549e-13 0 0 12334.28768 1.833399768e-26 0 0 0 0.0001545921612 7.397095393e-16 0 0 1068736.582 0 2.121015753e-17 0 4.695614377e-12 2247.540329 0 7417.656677 7.435416028e-27 1.140171742e-07 0.0003868919935 0 1.117760078e-15 0 0 0 581082.6766 0 1.024832732e-16 0 0 5.65614326e-20 0 1.279932007e-09 1.217716064e-05 0 0 0 5.508748173e-18 0 0 0 0 3.010025793e-13 3.836136138 98.14367709 0 0 0 0.007652409687 0 0 0 0 1114369.321 0 0.0008642634547 0 0 2.33489316e-06 0 260308.3558 0 0 3.889817199e-05 0 0 1.654312538e-20 0 1.685034995e-05 594.8320921 0 0 24.57709132 0 0 0 0 0 1.542720311e-07 0 0 4.433496143e-08 8.188709222e-08 0 1.207792931e-05 0 8.461544921e-09 0 0 0 0 0 0 0 8.711517194e-14 0 3.766864564e-08 0 0 0 0 0 1.267295071e-08 0 0 0 0 0 0 0 +0 0.009375073708 0 0 0 0 0 5.516503057e-09 0 4.742898478e-11 0 0 0 0 0 3.877403747e-25 0 2.58266949e-23 0 11.6367199 0 2.77861445 0 2.723689058e-15 0 21838.21337 0 8049.539779 0 0 0 0.001070470285 3.729790858e-05 0 0.0001488157519 9.624589198e-17 0 0 0 0 0 0 0 2434.114838 1.64177305e-06 0 0 0 0 0 0 0 0 0 448784.5175 4.841325734e-05 0 0 0.7011822212 0 0.0002064021188 0 0 0 1.075694056e-06 1.2116049e-17 0 2.011274451e-09 1.023199144e-14 3.937197253e-12 0 0 0 2.032590667e-07 0 5.749550426e-07 0 0 2.107068608e-23 1.295937542e-16 67.56926248 0 0 1.327768436e-11 5.188356319e-08 5487.019346 0 0 366.6657925 6.053094998e-21 0 0 0 0 0 0 0 0 11966.86539 6281.795558 0 0 1.531101405 0 0 3.789534414e-14 168.5605687 0 0.3029254729 418600.8608 1.017347604e-05 1373.314473 0 0 0 6.490946496e-06 0 2.941310527e-17 556720.6133 0 1.862368869e-24 0 0 420.3546338 2628.436243 0 1.606143932e-11 0 0 0 0 0 0 0 0 4.594518714e-20 8.481091216e-09 2.967008174e-11 0 5.293845181e-12 149678.3166 0 0.00185221339 0 0 19.40195757 0 0 43270.74372 268779.8224 1.032617757e-16 0 4.915241925e-06 6.341726775e-14 0 4.421250305e-08 0 0.3227190291 0 48.72095883 46933.21643 3.2696602e-06 0 4.512693859e-07 0.007367479753 3.85218271e-07 0 0 8.976109106e-16 1731.804297 1.29993022e-31 0 4.623159148e-05 7.11364696e-14 1.174875563 0.3041355628 1.441092738e-06 0 0 6.671626453e-20 2.117463209e-10 0 1.85633819e-07 107.2749968 0 611794.9667 0 4.150601338e-05 0 0 0 0 9.427794702e-19 1.862871797e-06 1.074496226e-08 1.169935329 4.881780644e-07 0 532.1448207 0 0.6447037554 0 5.939980103e-06 0 0.0007081680171 0 3.191183713e-12 0 2.033083771e-17 8.282847031 8.941464239e-13 0 0 0 0 308276.7414 0 0 0 0 6.613468124e-08 0 0 0 0 0 2.404000896e-11 0 0 0 0 0.0002507550036 0 2.970913502e-14 0 0 0 2.109004058e-17 0 0 34587.5141 0 0 0 2.315221662e-06 0 0 2.998538157e-11 0 3.53439546e-19 0 0 0 0 0 301.8520871 0 3.359087727e-12 0 4.889567067e-12 0 0 0.05302399228 0 0 0 0 0 0 0 0 0 18.64695796 0 0 6.76968174e-08 0 0 0 3.918011599e-21 0 0 0 43.72802993 0 0.03335319682 6.839102555e-05 0 0 0 4.024848606e-07 0 0 0 0 418.1004303 2.401070504e-19 0 0 0 +0 0 0 4.106027059e-14 0 2460.868768 0 0 9.477571657e-15 0 0 0.01480907625 0 0 475456.6346 0 0 0 13068.6978 0 0 15996.4643 69050.47048 0 2.253970246e-13 0 0 0 8.282556987e-39 386237.2577 7.320657744e-06 5.449562808e-28 0 0 0 0 0 0 5.505708087e-27 0 0 1.1101068e-13 0 0 0 90.00149428 0 0 0 0 0 0 2.739235329e-11 0 0 0 0 0 0 6.541012263e-05 0 0 0 0 0 0 0 0 0 1.292290385e-11 0 0 3021.100154 0 0 0 9.655377466e-13 1.074121978e-14 2.76556319e-06 2.426135976e-14 4.388088446 4.302123216e-08 2.922155135e-15 0 0 118578.5425 1.01849982e-08 0 0 0 0 8.840180837e-19 0 0 0 1.971642594e-09 0 0 0 0 0 8370.859005 0.0003975836599 8.532777615e-10 0 4.327158321e-09 0 0 0 0 5.198407322e-14 1.262083352e-24 0 0 3.395937438e-07 0 176803.7102 0 1.16018769e-17 0.6953494944 0 1.614766561e-29 4.166537243e-09 0 0 118857.691 5.432014556e-13 0 0 1.965309279e-06 0 5.218903539e-06 5.259149951e-10 0 7.500237689e-09 1.746897854e-11 0 1.290114345e-17 9.171711258e-09 0 3.734765702e-12 0 7.68278572e-11 0 0.697267838 0 0 0 0 150297.0268 0 0 8.775369544e-11 3.481684967e-06 0.05323841282 8.400411966e-05 0.02575095402 0 0 0 0 0 709909.3853 0 1.067283223e-16 0 0.1237488062 0 44.13686981 0 0 157.0756425 3940.285978 147.9700396 0 2.549559685e-18 0 0 4.414975779e-14 1.839248975e-14 3.656763199e-15 1.283731537e-22 0 0 1.11446176e-26 4.166617512e-05 0 0 0 2777659.152 0 8.249727529e-21 0 6.946742192e-10 0 5.485155427 0 0 1.86163713e-12 0 0.0001260748271 7.040782797e-06 0 0 0 8.239889762e-07 0 6.458027285e-05 1278013.395 0 1.569067233e-07 0.004657184292 0 0 1.111733289e-14 1.381641427e-10 0 0 210290.5813 0.4548812414 3.762793545e-08 0 0 0 0 0 0 0 19483.3806 190.0754631 1.764394965e-24 0 3.024001625e-13 0 33999.57767 0 2532830.901 0 0 0 0.04722625781 0 0 0 3.442903791e-09 0 0 0 0 0 0 1.601288525e-14 0 1.20393426e-05 0 9.528704729e-15 0 0 0 0 627372.7033 0 0 0 1.077822637e-07 6.903670961 0 0 10062.00938 0.002000128419 0 0.9574885745 0.0003779627775 6915.775793 0 0 0 0 0 0.000204873712 0 0 62468.53074 0 0 0 7.326557632e-14 0 0 0 0 0 0 0 0 0 0 0 0 24552.72521 +0 0 1.461922661e-11 0 0 0 0.001332867747 0 0 0 0 1.801643884e-18 5048.658216 0 0 0 1.825327049e-14 1358780.404 0 0 0 0 0 0 0 0 0 7.111274002e-14 2.952347759e-10 0 2.256027715e-25 0 0.00807981038 0 83951.10078 0 0 0 0 0 0 0 1.960544566 0 2.391698584e-10 0 6.442522131e-10 1.108494649 0 0 0 0 0 0 0 1606.717444 0 0 0 0 0 0 0 1.390042175e-10 0 0 2033.714223 0 0 2.539752611e-07 221116.8514 0 1.624144115e-10 0 1.260473044e-20 0 0 1.956057799e-09 1.281987492e-28 0 1892.837759 0 0 0 0 0 0 0 758.4770037 2.193671385e-12 2.981890886e-06 2.209391404e-13 0 0 6.71275257 3790.411941 18231.70188 2.528365211e-10 0 0.006510759478 2.204318158e-12 1055763.082 174.3373343 0 0.000298224319 0 0 1.645055167e-13 0 1044113.894 5514.667523 4.082515839e-31 0 0 2.485498474e-21 0 0 0 1.95005307e-10 8715.900461 0 0 0 6.795284289e-22 0 113.0164766 7.048295617e-26 0 0 0 1.602334176e-29 0 2413.710605 2.915698099e-09 8.007852154e-13 0 0 0.5582154222 8.055865478e-06 1.854465347e-08 0 0 9.129549625e-26 3.447125096e-05 0 6.811225841e-12 0 0 0 0 0.004816406703 1.176373046e-06 0.1424525763 184.8280822 3.650883961e-14 0 0 1.170834579e-17 1319772.564 0.01785996714 0 4.622414974e-25 0 205085.0479 85.71581336 4.202461634e-10 2.931752948e-21 8.740951912e-19 3.40966036e-11 8.050706094e-16 1.449584972e-08 0 0.00901730417 0 0 3.045833844e-07 1.916267462e-20 0 0 0 9.900215993e-05 0.007315486296 0 0 0 4.86726846e-20 1120.581539 3.284132864e-12 3.144198957e-08 11.55210991 6642.978405 43.36146663 6.213025782e-13 0 0 799.9145686 0 0 4.692486456e-08 1.151647084e-09 0 0 1181.444686 3.692940821e-13 0 0 42674.88046 0 1.964315877e-14 0 0 879.4344258 4.778842967 2.958302566e-09 0 2704.484749 0.02982830252 2.887457333e-11 0 0 0 0 3.5032726e-11 0 0 0 0 0 0 0 0 0 0 8.507426712e-07 0 0 0 0 0 0 0 5.010713624e-11 0 3.360673211e-07 0 7.815099502e-08 0 0 0 4.028836095e-06 0 0 0 3.716184136e-09 47643.60925 0 1.119223345e-15 9070.502335 0 0 0 0 0 0 0 0 2.60151917e-12 0 2.592339145e-07 0 0 117441.4249 0 0 0 0 0 2.174144527e-06 0 0 3.664893621e-14 63103.03686 0 0.002148459027 0 0 0 0 623876.487 0 2.698621794e-17 0 0 3.284871364e-05 0 1.638809482e-12 0 0 0 0 +2.882103426e-07 0 556630.4611 113740.6043 1.670372537e-09 5.938332513e-13 0.4672950862 28.89690179 0 3.251056929e-19 0 0 0 0 1.279911394e-14 0 52825.81962 196.732262 8.184390042e-06 0 675217.254 6.397212325e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.002068038565 1.760235605e-10 0 0.0304348325 0 1.164959357 2.757093711e-15 12.09975203 9.49941888e-07 0 0 0 3.485357156 0.0002234063228 0 622353.3692 3.056505609e-07 0 2.219257335e-11 0 0 0 1.502323325e-19 8.67504711e-09 2.485456427e-12 0 0 0 0 0 0 1725.221372 0 4.009449276e-11 0 0 1.18290734 8.610932634e-10 0 8.305453968 0 0 0 0 0 0 8.003219835e-05 0 0 0.0008526750641 636.0757232 0 0 0 4.654943373e-08 0 0 0.1486514781 0 0 0 3.332528639e-21 0 0 0.001229139542 0 0 0 59060.19998 0 1143831.104 9.215494185e-07 0 0 4.420889871 4.725948097e-11 0 0 2672.1084 0 0 3.768430706e-19 0.03198958052 1.932096531e-42 0 0 0 0 0 0 0 0 5.728599571e-07 2.41519395e-13 0 0 0 0 2.09452411e-07 0 0 0 3.26384682e-05 1.559703135e-16 0 0.001809226797 6.531894878e-11 4.664487336e-06 3.620472928e-06 1.860581192e-26 0 0 3.481190515e-21 0 93470.9318 0 0 0 1260494.132 1.317545023e-05 3.260436984e-19 0 0 0 0 0 3.923460724e-19 0 81.76805915 1.953217175e-09 1.226615732e-09 5.329714274e-06 0.00758612011 0 1262921.43 0 37.73688411 320926.7157 1.212887071 0 7.871848469e-06 11103.02666 7.297362601e-15 1168868.938 0 2.901860579e-07 0.0002282577581 0 2.365917612e-17 3.693415881e-09 1.609839395e-11 5915.964387 0 6.88527122e-05 1.090792091e-05 0 0.08675626043 3.808706123e-11 9.512493904e-17 3.140952865e-10 5.785911049e-11 0 1.704697241e-24 0 0 77881.55244 0 0 36.6830229 1.554698913e-09 0.2019326683 41.8978104 0 0 0 5.203940932e-12 0 0 57396.74312 0 2.446018144e-11 0 0 0 0 0.02727729194 0 0 0 0 0 639662.7331 0 8.960494838 11412.46151 0 4.06172163e-14 0 0 0.9371190853 0 0.1607431523 2.957496964e-21 1.372941076e-16 0 0 879865.0508 3.914705261e-11 0 0 0 0 0 1.384822607e-13 2.585088008e-14 0 0 0 0 1.016850347e-24 0 0 0 218371.8354 0 0 0 0 2.371694532e-08 2.459908876e-06 336073.7721 0 5.080882855e-14 0 0 0 0 8.251757304e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 5.244479216e-05 0 0 0 3.170075721e-26 0 0 1.199195204e-24 3.427338017e-16 0 3.053060913e-10 7.713811577e-27 0 +8.242747651e-09 0 0 0 0 0 0 0 0 0 0 0 9.062657363e-13 0 0 0 3777.06596 4.589376246e-16 0 9.185804825e-11 0 0 0 1.241401412e-10 3.717047016e-14 7.859942908e-06 3.299166359e-14 1.68640384e-09 0 0 0 0.0001158176428 5.02058103e-05 0 0 0 0 0 0 0 0.08882127017 0 0 0 0 0 1.258676151e-05 0 1.912610702e-11 0 2.425624873e-20 0 0 0 0 0 0 0 0 0 0 0 1.758876692e-05 0 0 0.0003176465775 0 0 0 0 0 0 0 0 0 8148.647113 2.656657717e-08 0 0 0 5.567682506e-12 0 2.266089855e-18 0 0 0 0.002162533282 6015.760161 0 4.418538503e-24 0 7.733855093e-13 0 407401.7962 0 0 0 4.737417558e-12 0 5.176105652e-11 0 1.028406731e-05 0 0.0001129950148 0 1.806941262e-14 876715.2547 0 0 1.366796351e-09 0 7.454284285 0 2.816967528e-13 0 0 0 0 0 0 0 0 0 8.648942803e-05 6.699624946e-12 11654.19366 6.290989523e-05 0 0 4.302099757e-10 0.02642132559 0 0 0.0003110534737 0 9.80442052e-34 5.504023533e-22 4.481600427e-14 726479.831 0 0.160480637 0 0 688.4938397 7.998919451e-08 0 330207.2109 0 0 0.3599312258 0.0004698695835 0 0 0.0004882052648 0 0 0 0 3.597489094e-05 0 0 8.149439489e-08 0 0 0.1855777354 0.001742556489 1.642577148e-08 5.259269021e-07 9514.790751 0 84491.5761 0 1.720543698e-13 0.01882724747 0 4.594279835e-08 0 780.9809862 0 173643.4987 2.312084101e-13 0.002672877285 3101217.851 6.039128123e-08 8.096818958e-15 2.439174177e-12 9.285940272 0 3.532455942e-11 0 1.823159517e-10 0 0 104.3037944 0 0 0 0 0 6.049437366e-06 2738230.29 0 0 0 2.396171049e-05 3.099220662e-13 0 0.2822761388 0 3.072862597e-05 0 0 0 0 0 0 0.00374076616 0 0 3.704762707e-11 0 3.666767637e-25 94.17028063 0.0008556490041 0 0 0 0 0 8.331724112 0 0 0 0 8.462778405e-14 0 0 0 117530.7285 0 0 0 2030.111937 2.398692227e-09 0 1.896196606e-25 0 0 0 56336.93639 0.1339483667 0 0 5.955294089e-10 0 0 0 9.914930701e-23 0 0 0 98.53898708 0 0 0 4.971148814 391.4632517 0.3482476952 0 0 0.001561905092 0 0 1201321.805 0 0 360.8393381 0 0 0 1.233105289e-18 0 0 0 0 0 0 6.991243572e-12 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1.212350669e-07 0 0.2183200468 0 0 152261.675 0 0 134.392869 0 0.05324730563 23221.61011 5.093727075e-08 0 0.002837878362 0 0 0 0 7.845252559e-24 0 0 0 4932155.172 0 6.554125511e-13 0 4.421900732e-21 0 0.01176753319 0 1.409792413e-05 8458.911192 0.0002315408103 0 0 0 0 0 0 0 0 0 0.0009271569002 0 1.563329514e-13 2.456976051e-06 0 0 0 2.009612035e-11 2.028640142e-13 0.0001100024251 0.01638446003 0 0 1.166485319e-17 0 0 3.391957492e-24 9.551601506e-14 2.259747539e-07 0 0 0 0 0 0 0 6.963658219e-18 0 0 637.9978613 0.008156433038 2.792409106e-16 0 592513.5702 0 0.1362978616 0 0 0 0 0 4.01744117e-06 143.3598225 2.385942001e-08 0 0 0 0 0 23602.7981 17.45462011 0 0 5.689818852e-10 0 1.046437791e-17 2205.72054 0 1.225803612 0.01658705163 0 38018.78805 0 960200.4434 0 0 0 0 3.498325183e-15 1.096283299e-19 2.286142205e-08 0 9.844717891e-14 0 0 3.040592005e-17 8.959897772e-14 0 149231.832 0 7.753427356e-08 7.03564514e-08 1.709815557e-20 8.344306541e-24 0 56199.05437 0 0.003085083314 0.0007694023189 0 7.019115713e-07 5.993381875e-23 1.674199804e-10 2.562540454 13913.78824 0 5.947220849e-07 0 0 0 0.006223628613 0 0.007279769921 0 0 0 113843.2269 0 8.528593637e-10 8.111292901e-12 0.002012243254 0 43.71104824 0 0 0 0.003483579002 3.767650599e-31 0 0 0 0.6615106352 9.987133775e-05 0 0 14926.6413 0 0 0 0 0 8.249060691e-15 0 0 1.931300532e-05 0.02409914434 2524843.733 0 0 0 0 0.001218845914 0 0 0 8.036108338 0 0 93.97643152 0 0 0 0.0301666141 2.167574373e-30 2.069282191e-05 0 0 4.579955473e-33 0 0 164.5729084 0 5.414767065e-29 0 0 0 2.27231772e-08 0 0 0.02556318508 0 0 0 0 0 0.0007293186163 3.43872075e-28 1.328708621e-16 0 0 0 0 1.738344185e-24 0 0 2.007177893e-15 8.122724888e-12 21959.11384 0 1070.204282 0 0 1.575299656e-28 0 0 53901.51431 42.25182859 165510.8888 0 0 0 7.036698156e-06 945.9338251 0 0 6.298094986e-11 0 8.870175391e-05 4.325730896e-23 0 65842.90237 0 0 0 0.01483556903 0.0003355713949 0 1.50298128e-17 0 6.701650378e-09 0 0.0003413700846 0 833290.6361 0 4.542736673e-05 0 0 947.2065087 0 0 0 0 0 0 5.900433861e-08 0 0 0 0 0 0 3.351203006e-13 0 0 0 0 0 1.008353748e-31 0 0 0 0 0 +0 0 0 0 0 3.484382985e-11 0 3.114948138e-05 493257.8553 0 0 0 0.08881376253 0 0 0 0 0 0 0 0 6.760292603e-21 0 0 0 0 0 2.685471278e-06 0 0 0 674459.3955 1.389279832e-11 0 0 0 0 0 0 0 8.13308464e-12 0 0 0 23529.70731 0 0 0 232.8570825 1.247878447e-07 0 1.9013847e-20 0 0 0 0 0.0113044564 0 239.1689945 27937.1874 2.790153326e-05 0 0.007123510105 0 16250.14911 0.259188662 0 5.537968368e-24 2.243899052e-11 0 1.447890756e-07 0 0 0 0 0 5.545860063e-18 0 6.114029454e-11 0 0 0 1.833167894e-16 0 0 1.615790967 0 0 35.30834856 0 57.73229418 5.510260524e-16 0 0 0 0 0.2068588235 0 1.020119723e-27 6.389903629e-05 0.002984897826 0 424260.39 0 0 1.790311673 0 0 0 7.166406689e-21 2.79870464e-24 0 0 0 0.04505698679 0 0 2.941661863e-09 8.141690301e-17 0 0 0 0 0 0 889958.5033 0 1.48492357e-18 3.834100864e-15 0 0 1.147488882e-15 7.571523463e-12 0 5.878406812e-18 0 1.941986315e-08 0 1.456383507e-19 0 7.725506616e-17 5.038557681 7.763599849e-05 0 0 0 0 56672.02309 0.0003258151102 0 0 0 0 587.3106191 1.278378243e-15 0 887.3609504 0.0001894925232 9.129868693e-16 3.822340782e-06 1.897646948e-09 1.572592856e-19 1.13684755e-17 4.306503901e-07 0.0003526733173 2.538314903e-06 0 0 0.6396195937 0 0 6.643263451e-31 4984.028631 1847.664733 0 0 0 6.764258891e-11 0 2.35724881e-06 0 0 0 0.1165241329 0.0006505518387 0.0001098054095 0 8.858124909e-10 111246.657 0 0.02813694653 0 0 4.801375663e-05 3.676171395e-29 0.1524189959 0 0 0 6.080985019e-11 0 42568.72831 0 1.427384542e-11 2.670187127e-06 0 22.67033552 0 0 0 0 3.731243284e-08 0.02733452827 0 0 0 4.891209311e-11 15.64107064 0 102326.9456 0 0 0 0 0 0.06597331006 0 0 0 0 0 0 0 128567.3386 0 3.727123634e-08 2.770678391e-17 9.257257732e-16 0.09582261299 0 4.857883389e-07 0 2473988.516 0 5.525242496e-16 0 0 0 3.403903684e-08 2.471240712e-16 0 0 0 0 9.842637676e-13 0 231.5548919 860.2260743 5.838609047e-07 0 0 0 0 0 0 1.794446009e-11 0 0 0 7.032652642e-13 1.42860276e-09 0 0 34.09145342 0 1.932442285e-05 0.4844051327 0 0 1814.281695 0 0 0 0 2.95957421e-09 6.302305948e-12 0 0 3.452962101e-17 3.761021659e-10 0 0 0 0 0 0 0 770084.4378 5.469975967e-08 39884.95101 +0 43605.94837 0 2.953055111e-14 0 0 2.738050886e-17 0 0 0 3.459127152e-06 0 0 0 2.438306927e-06 195371.8848 0 0 0 0 0 0 2614438.599 0 0 8.380498349e-14 0 0 0 0 0 0 0 0 0 0 290189.4973 0 0.000312590162 0 3.719038686e-14 0 0 0 5.761530932e-05 0 10675.41874 1.577348964e-11 0 3.419380223e-22 0 0 0.117814903 0 16.29821152 10593.43497 3597741.614 0 410509.0541 0 8.571815476e-05 0 2289765.375 0 0 0 0 0 145.9337327 0 6.257830533e-05 1.438058125e-10 0 0 0.0005723650911 0 0 0 0 1356.25461 0 0 0 0 0 7.383541858e-13 1.062883539e-12 0 9.516160103e-16 212.1311975 5.899523192e-09 1.204188664e-11 9.347709448e-07 0 0 0 0 0 0 0.0001513578343 4.962719805e-13 0.0007986330253 0 1.29179684e-18 4.577404842e-07 0 0 8.574905288e-05 2823.183733 0.002985492496 0 87903.37723 0 0 8.997092041e-13 0 47.23336314 0 0.001716903078 361.8734079 0 0 2.24523205e-12 0 0 1.624333066e-14 0 2.768353248e-13 0 0 0 0 1.005277132e-11 0.1627505829 0 0 0 0.01793433473 0 0 164.6165282 1.264558106e-09 1.820414402e-10 2.951476604e-16 7.174070421 4.475169306e-05 9.116473106e-07 5.987430766e-24 1.936165497e-22 0 2.714016484e-11 0 448018.4893 1.376262455e-14 1.126508792e-12 0 1.469354682e-12 0 2.133810414e-11 9.758051475e-28 0.0005114134845 15178.92526 14787.92678 3.216709654e-13 1.730960519 177.9392111 0 0 6.610769359e-10 1.021270895e-12 1.092734465e-22 0 0.001218683323 8.04051235e-05 0 0 0 0 0 0 325143.4918 7.361485592e-17 0.05556013318 0 0 0 0 0 2.313956216e-12 5.113827034e-08 0.01077563022 0 0 0 149640.9673 0 0 0 2.95837188e-07 0 0 0 0 0 5.892186068e-13 0 0 0 0 1.542139402e-08 0 0 0 0.0001420870939 1.355366157e-40 854625.026 5.737608582e-12 0 5.023852072e-05 0 1.422311479e-06 0.005598092467 2.229334005e-14 8.113517526e-17 0 3974.040842 0 1.079140287e-21 0 0 0 0 0 0 0 0 1.267555397e-21 0 0 0 2.46649632 0 0 0 370314.3176 0 0 4.007639743e-06 0 9.828370382e-06 0 9.379146867 1.072154573e-17 0 0 14544.38721 0 0 0 0 0.006290949409 0.01219027657 1.064241166e-07 0 404650.9649 0 0 0 0 663.1123807 2.097171927e-08 0 0.02180215298 0 0 0 0 0 0 0 0 0 2.536296561e-28 0 0 2863.409192 0 0 0 1.087567e-16 7.238406719e-24 0 1.406893335e-08 0 0 0 4.72642197e-09 0 0 0 +0 3450451.375 0 0 0 0 13.03030356 0 0 2.16534356e-12 0 0 0 0 2.295870033e-05 0 0 0 1.65553781e-09 4.153842098e-30 0 0 0 0 0 0 17299.44739 6.774184007e-09 0 0 0 0 0 0 0 5.817342964e-08 0 6.879906616e-20 0 0 59.86643588 0 0 0 0 6.144320324e-17 0 0 0 0 0 0 0 0 0 0 8.594376133e-16 0 0 0 0 0 1.635933336e-10 0 0 0 0 5.096654151e-09 0 0 1.503830386e-19 0.1795417454 0 0.02495616394 0 6.639188481e-11 14878.92445 51.34567032 0 0 0 9.382178536e-08 2.099282662e-05 0 23795.00755 0 0 12228.04781 0 0 0.0004910486319 2.549103731e-22 3.367823998e-20 0 1.662484867e-06 0 0 1.640495948e-05 54.43579798 0 0 0 0.03791487639 0 3.934013121e-18 0 24943.57894 1.272005674e-19 0 0 0 1.893218207e-09 6.411500066e-08 0.01036787438 0.0001461457344 1.132405855 0 0 1.63475019e-13 0.0018076825 0 0 2.49887212e-20 8.421164607e-12 5767.122509 0 0 6.847629758e-10 4.599290859e-13 2.259525145e-09 0 0 713.0740204 0 0.005256813821 3.309945505e-21 383.0705233 0 0 0 821615.6229 0 0 2.219880719e-08 0 2.294437738e-21 7.498640208e-08 1.54469631e-05 0 2.931451938e-05 0 3283.45549 0 0 3.367426505e-08 8.34595653e-08 5.220941942e-08 7.507276049e-12 0 0 3.649584808e-15 0 1754818.731 0 0 0 10.01905851 2.016004662e-16 0 5.637346269e-23 0 0 0.001273920639 0 4.168865073e-09 0 0 4.050188446e-09 1.846693804e-27 0 0 0 14772.51004 0 3.055975679e-20 3.611319208e-08 182654.338 0 0 0 0 232.6121111 98630.08759 10.81098037 10609.82938 0 0 0 0 0 0 0 0 5978.951194 1.785167741e-06 0 0.6122965213 0 6.729074553e-09 1.090203254e-07 3.508390948e-15 3.174815606e-05 0 0 1.138896455e-16 1.949514884e-08 0.01396209941 0 0 0 0 0 0 0 0 0 0 2.610657724e-28 0.000194157625 0 0 1.160207539e-08 0 0 0 0 0 0 0 5.184945716e-11 0 0 0 0 6.293914708e-14 2.933491291e-10 0 0 0 0 0 2.263295976e-25 0 0 0 1.184525914e-20 0 0 0.06910126579 0 7.979982222e-16 446484.8476 0 0 0 3.116544367e-10 0 0 0.000162754539 0 0 0 8.593640313e-25 0 0 0.891336694 1079.767071 0 0 0 0 0 0 1.289839899e-08 0 1.565488621e-20 1.105530006e-27 0 17.59166353 0 0 0 0 0 0 2.893746262e-05 1.215938734e-08 0 0 0 +0 1.124057762e-07 0 981.4107996 0 4.540959336e-05 0 0 0 1.002062128e-14 2.606661067e-09 0 0 0 0 0 0 1.1641883e-07 0 5.357786787e-11 0 0 0 0 0 0 0 0 1.813085953e-08 0 0 0 0 0.006899371453 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.64896789 0 0.001592714377 7583.044016 0 0 9.261591491e-11 1.171559209e-11 0 0.0008672065253 0 0 3610610.53 2.357757265e-09 0.0006540818149 0 690.5892082 0 661.4771391 0 0 12.78168436 3.449600782e-27 0 0 0 0 0 0 0 6.676941186e-07 0 4.18132995e-09 86.08208166 0 5.015595905e-12 0.0009534808024 8.730811566e-11 0 0 13.7130684 193.5383615 0 5.29504154e-21 0 1.452160019e-07 0 4.429848266e-13 0 0 1452454.844 2.473237438e-09 0 4.453027265e-36 0 3.904479978e-07 0 781870.1532 2.256181875e-07 0 0 18453.62158 0 0 0.002268875286 5.838617932e-12 0.113032347 0 103683.6607 0 0 0 0 5.062644272e-06 5.187025796e-28 0 0 1488321.538 0 1.837739065e-06 0 0.00100140339 0 0.5091201566 0 0 0 3.596547304e-06 674.7724584 0 1.169114716 1.103931859e-11 0.0001619933179 635.2363948 0 0 0 0 1.559118629 4.464159798e-05 0 0 2.780033446e-11 0 2.322218426e-21 0 2.434276243e-09 1.114650658e-18 0.003546457004 0.0007036825872 0 1.253054682e-06 0 0 0 1.173520707e-06 0 3.414739766e-23 0 0 0 0 5.498612001e-19 0 3.239011433e-08 0 0 4.482654649 0 0 2.475225779e-06 0 6.373058327e-17 0 4.696641583e-07 0 0 0 0 0 4.111557504e-05 0 1.173825699e-07 0 0 2.285237912e-06 0 5.752621003e-07 2.088500334e-08 0 0 597.8440372 0 0 352.8809944 4.192178869e-23 0 0 0 1.328282143e-26 0 0 0.4299260534 0 2.698338071e-05 1.36234489e-12 0 7023.156382 1.386248975e-05 1.115222777e-06 0 1068.931991 0 1.138501428e-15 0 0 0 5.894705287 0 0 1.148086907e-11 0 0 0.002767503031 0 0 2.588571791e-14 0 0 486.3269914 0 0 3.154549041e-06 0.02466720717 0 151920.1912 0 0 0.1233354612 0 0 1.130963296 0 1.07266766e-18 0 0 6878.379551 0 0 0 0 0 0 0 0 0 0 0 0 0.02246683152 0 2373198.209 0 0 0 0 1.080405601e-17 0 0 0 0 1290344.154 0.005785250996 0 1.371283669e-20 0 0 0 2.302240862e-06 0 0 0 0 0 0 0 +0 0 1.078539569e-13 0 0 0 0 1.192540707e-17 0 0 4155.500571 0 0 0 0 0 0 0 0 0 0 523.1265406 0 0 2.735160268e-24 0 0 0 0 0 0 1.927753192e-08 0 0 0 0 0 0 0 0 0 0 0 0 1.352967236e-06 0 1.718797183e-29 0 1.068221121e-22 194080.8922 0 0 0 0 0 0 0.0003734983014 5.784768864 4.927103408e-08 7.242957623e-18 0 0 0 0 3.000432786e-18 0 0 0 0 0.0007469525304 0 0 0 0 1435.710406 0 2.846282212 4.130226938e-10 0 0 0 0.3578319711 64.22579848 4.521874374e-07 0.0143154001 2529199.979 0 0 0 0 0 1.06018277e-10 0 0 0 0.0062142248 1.211303948e-06 0 0 0 0 0 7.159800231e-06 0.000253575565 103.3778372 1.423295123e-10 0 202932.3387 0 2.898015714e-09 0.1090432858 0 0 0 4.869658204e-09 0 2616.620215 0 0 0 8.083434213e-08 0 0.05985571455 113198.9222 1.627042855e-12 0 2.604597159e-13 32.55793846 4.497701043e-06 7.504163911e-11 0 0 187115.9525 0 0 0 0 1.655964754e-14 1.093090323e-13 3.029571315e-12 0 0 1639.466557 2.568524768e-15 32787.83349 0 9.241772636e-15 0 1.379265078 700786.8378 1.213823946e-12 0 0 0 7.326233548e-12 0 0 0 0 163672.6903 0.0004902767263 1.868558695 5.752737332e-30 5.152633968e-16 1.76937674e-12 0 1.713195236e-07 0 1502.388195 0.000212705923 0 0 0 0 219.4200263 0 0 0 0 0 0 0 0 2.811709684e-12 0 0 0 223.223939 0 0 0 2.452126281e-06 1.135648064e-11 0 47.68781431 0 0.006815710035 7.854883283e-17 0 0 0 0 0 2.828779915e-07 7.624200503 0 0 0 0.08127338297 0.08387099613 3.378257366e-07 170217.7076 1.403347139e-18 0 0 0 4.828990859 0 0 0 2.807369334e-05 0 0 0 0 0 0 0 0 0 0 554.0752413 0 6.985649818e-24 3.878822649e-12 0.0005016120708 0 0 0 0 0 48231.54025 0 0 8.163565341e-08 0 0 1.409549419e-15 0 3391915.969 2.694145565 7.602172721e-12 0 0 0 0 0 2020.344954 0 0 5.915471571e-14 0 0 0 0 6.768055287e-11 0 0 0 6.670330098e-14 0 0 0 0 0 5.183512604e-13 0 0 0 7.001380066e-07 0 96182.46891 0 1.313416211e-12 0 0 2.424823586e-14 3.03102637e-18 4.802503314e-16 0 3.185574168e-06 0 190236.7496 0 0 0 0 0 0 1.368199758e-17 +1.185879136e-10 0 0 0 3.018256789e-05 1.901404061e-10 0 0.01192812431 5.668306244e-05 0 0 1.090099331e-08 0 0.6424200544 0 0 0 0 12515.06162 0 0 0 0 0 0 0 0 0.008795255083 0 6.976533237e-18 4.051646914e-06 0 0 3.699088418e-13 0 0 121398.8784 0 0 0 0 0 4.435549099e-06 0.0001834218798 0 7.22807113e-09 0 6.173412408e-07 0 4.599721757e-28 0 2.891560071e-07 0 0 0 0 0.008347965047 0 0 0 0 0 0.4029377074 0 1193.72656 0 0 9.062202246e-11 0 9.189929062e-09 1.436496244e-06 0 3140.602676 0 0 0 0 1.19183335e-11 1.008051571e-09 0 0 1.698160437e-10 0 0 2.749202746e-17 5.778678231e-19 0 0 40.59831148 6.745602486e-05 0.000216199425 8.422904228e-13 0 3.712882394e-09 6.975633872e-23 1.042622954e-08 818466.2687 1.866735374 0.0001624323658 0 4.670301449e-05 0 0 0 1.102780475e-12 0 0 22.14943345 0 0 0 0.0004866738634 5.796002773e-09 0 1.851787104e-13 0 0 0 0 0 0 0 0 4.249609821e-17 0 0 9.098612685 0 0 0 0 0 0 1624.015744 0 113.029675 0 8.596061677e-16 0 1.955843369e-11 0.2956979468 0 0 0 171660.7985 7.735183772 0 0 33.61074906 0 1.288304607e-05 0 0 4.847881659e-27 0 0 0.02375196402 0 0 106.9415873 0 0 0 1.824116415e-07 0 0 0 0 0 0 9.833903187e-06 2.677162233e-09 0 0 488113.9383 0.01151485555 78.53451125 0 0 2.184122054e-15 182596.1393 0.0009901177362 0 0 0 0 0 0 0 6.871577816e-06 0 0 0 279853.8655 0 3.237216729e-05 5.325365773e-08 0 0 0 0 0 0 0 0 0 0 121316.2716 0 3.488194941 0 0.102184165 0 3.644380585e-08 2.595453091e-09 0 0 5.4740785e-24 5.379862553e-05 0 7.662831688e-14 0 1.578967004e-10 0 0 0 0 0 0 0 5.618972388e-11 0 2.68282709e-15 0 0 11697.28497 0 0 0.007744770616 0 0 0 1.107525329e-06 5.69110121 16616.8027 0 0 0 0 0 0.1008769369 8.778903868e-28 0 0 6.630071881e-14 0 197.1433822 0 0 0.4000947728 1.776551493e-07 1.121917103e-19 0 0 66.60220091 0 0 1.188349205e-14 1.134341289e-05 4.495649456e-24 0 0 6.464435607e-11 0 0 0 0 0 0 0.0406097862 0.0006021229766 424864.2283 2.919508797e-10 0 0 0 0 0.1236935203 0 0 0 0 0 1.084343168e-22 450825.9224 0 1.191993584e-12 0 0 0 +4.094990099e-08 0 0 0 0 0 1.205615198e-19 0 0 0 0 4.107483692e-25 1.026498603e-06 0 0 0 0 0 0 1.004598381e-07 1.783617702e-10 2957491.258 3.040580653e-12 1117.064676 2.564371802e-07 2.450215022e-12 3.675568304e-23 0 0 0 0 8.550577109e-20 0 0 0 0 0 1.579748685e-05 0.3855387051 3.033176481e-09 0 8.214409686e-18 0 0 0 0 0 5.141247898e-12 0.3466419035 0 7.69870308e-09 8.225141342e-06 7596.853307 0 0 0 0 0.00124905998 0 0 0 0 16272.08774 1.662756823e-12 1.753569242e-11 223.7693701 0 0 1007.959144 0 0 0 0 0 0 11.56112624 0 0 0 604558.5963 5.54558731e-09 0 4.273319183e-16 0 2.057498671e-08 0 489021.3132 0.0005528756432 0 3.852112834e-08 0 0 120.8199016 2.105101562e-09 41515.60881 0 2.304506114e-15 0 0.003101260025 20506.98596 0 0 0 473885.868 0 1.902026654e-12 0 0 0 0 1.773206769e-24 0 47.18660187 0 29020.46488 11033.47613 1.942836334e-29 1657198.139 0 1.291206189 0 94.05480383 0 0 0.002107830641 0 0 8.571049597e-06 0 0.000180080064 0 2.390215138e-19 1.146099346e-12 4.505121698e-05 0 0 0.3214006446 0 0 0 401064.5218 0 0 8.474224664e-18 9.468401519e-13 4.462766269e-22 0 3.003138747e-07 0 3.581744565e-10 702122.5665 9.038122522e-05 0 0 191040.9459 0 5.148411907e-11 0 0 0 4.23284552e-13 0 0 0 1.00562604e-21 1.005899614e-08 0 205171.833 0 0 0 0 0 0 0 0 0 0.0001155506221 0 1.692222813 488565.7605 0 1.056908564e-07 10.33429928 5.744599603e-07 0 9.8244094e-32 0.03154829515 0 124.95594 0.0001274645405 2.62570673e-20 412.9391614 2.708201246e-09 0 1.81931129e-10 5433.000688 0 1397.795339 0 0 0.09669490758 0 0.0004737357781 3.085367879e-29 0 1.31766105e-20 0 0.00885165686 0 0 2.383272968e-07 0 0 2895.962663 1.720500407 0 0 0.003137185755 3.891320099e-05 100.2462773 0 6.248186909e-05 0 0 1.534439885e-08 6.204271025e-08 0 0 0 0 0 7.548105717e-17 0 0 0 0 2.224832834e-09 0.255770233 0 0 0 0 0 0 0 1.310848679e-13 0 0 0 0 0 6.608729886e-11 0 0 0 181125.9894 0 0 4.739428861e-24 0 0 77.68903717 0 0 8.275072771e-19 0 0 0.0001107460222 0 7.918170703e-19 0 0 0 0 0 0 0 0 0 0 1.326194053e-21 2.634070704e-08 0 0 0 0 0 3.623944729e-05 0 0 295347.6472 0 1.43147155e-09 0 0 1.408516875 0 227.0554659 0 +0 0 0 3.60104327e-16 1.728643504e-07 0 0 0 0.001940646609 0.02770004166 0 0 0 6.68458429e-13 0 0 0 4.182189557 0 0 0 1.951186037e-11 5.629465899e-09 1.956620652e-20 0 0 0 3.561682638e-09 0 2559480.159 0 0 4.333052091e-12 0 0 0 0 0 0 0 0 4473.683155 0 1.600467577e-05 0 0 0 0.00205516883 0 5.124195566 0 0 0 0 0 0 3.74587669e-19 3.134576023e-06 0 0 0 0 2.029220047e-20 0 0 0 3.302592647e-16 0 0 0 3538.383489 0 0.01344320905 1788.73276 0.001296938912 0 0 4.197031734e-05 0 0 0.0003215297116 0 0 0 0 0.0003598831824 1.509914656e-11 558.4294197 0 0.0003435424109 0 2.891869037e-09 0 1.571674699 0 0 0 0 73.1043883 0 2021.756863 59199.53555 9.01991584e-08 1.176346223e-19 3558.520984 0 4753324.209 0.007980897787 3.742539738e-11 6.789502129e-05 0.0001134233728 3.767857452e-13 0 0 5.753066602e-07 0 0 0.01119114012 0 0 0 814.8351118 0 0 0 8.762736678e-05 0 126.4734264 0 0 6.495017992e-08 6.224009269e-14 0.00214978001 8.680441069e-05 0 1.082265929e-05 2.331515571e-11 3.404116458e-13 0 0 1.261883758e-08 2.990153312e-06 0 0.208957517 0 1076186.682 0 1.519932555e-07 0 0 0 0 0 2.014659575e-06 130.2037844 0 0 0 0 0 0 4.844066939 0 0 0 0 2.227967453e-10 2.971260075e-21 2.928809047e-15 0 0 1.23705732e-06 0 366687.3963 0 5.943229266e-09 0 0 5.071502244e-10 2.304822296e-16 1.942968945e-08 4047.709805 0 0 0 4.492231121e-13 0.1093592154 0 0 3.128075818e-14 116147.367 6.186176967e-19 2.893285539e-10 0 3832.552175 0 0 0 0 1.531439216e-21 0 0 122.5339703 4.479557781e-06 86617.67645 1.149325411e-14 0 3.234034592e-13 0 0 4.93941942e-11 0 0 866.5952419 0 0 0 815802.8331 74.08396705 7529.410913 0 0 6.209973235e-32 0 0 0 0 2.894028355 0 0 0 0 446.5284531 0.001380475624 0 0 4.97733523e-10 0 3.414415855 0 0 3.463840482e-05 0 0 0 0 0 0 0 0 0 13.32061099 0 0 0 0 0 0 0 7308325.433 2.320296263e-12 0 4.84381658e-12 0 0 6.383359275e-08 0 2683.628795 0 0 2.162329218e-24 1.239945703e-05 0 0 0 0 0 0 0 0 487.1001499 0 3.592795275e-21 0 0 0 0 20930.38862 2.477879403 0 10845.22557 0 0.0007547347937 0 0 0 0 5.543976801e-08 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43279.5612 0 0 0 0 0 0 0 1.100649232e-05 0 1.330873142e-09 0 0 0 5.306120767e-19 65801.76921 0 0 0 0 0 0 0 1.531631617e-11 0 0 2.001138928e-19 0 0 0 0 203.0393273 0 3.416170473e-14 335209.2851 0 0 4.57613279e-09 0 0 0 0 0 0 0 0 0 0 44.31165412 0 1.765859453e-11 20.54353855 3.476525872e-15 0.003891823166 3.808658031e-14 0 0 9726.376367 0 0.00484231282 0 0 0.0003167079099 0.0009199169289 0 0 0 4.285867018e-07 638.3647817 0 0 0.0006944185793 0 0 1.377390443e-12 7.792313181e-18 0 0 7.020772259e-06 5.622801461 0 2.732086568e-10 0 2.151592012e-07 144821.1325 89044.95551 0 0 0 0 0 0 0 0 0 89914.74996 0 0.0002696029076 0 0 0 1.502651262e-06 0 0 0 6.674120991e-07 5.776692244e-06 0 7.429629331e-12 0 0 169.0009433 0 0.1746599087 1.555175356e-10 0 1.029361285e-10 0 2873.335776 0 1.341273411e-07 0 0 0 0 2.724838998e-19 0 0 342.573971 0 248193.5662 2.297713936e-25 0 0 0 1.540712545e-25 0 0 8.148074169e-18 4.820791983e-14 0 0 0 2.787357226e-14 4.967757441e-05 0 0 0 0 0 7.098276749e-15 7179.379136 2.013181479e-13 0 0 0.0002480548143 1932.553942 0.002420147616 3.344581469e-15 8.042919692e-21 0 0 2.104885985e-16 3.683676135e-14 0.000395703703 0 2.16341078e-12 661.801292 0.2897296418 0 958251.194 0 1.680873622e-09 38.2782198 0 0.0002233205267 0 0 9.578894487e-16 0 2.268992873e-06 2.348318944e-12 0 19.68638315 282212.7173 0 0 0.001972997366 0.0001309026289 2.665601757e-11 0.00051281125 0 73106.30883 66062.14686 0 0 0 0 0.00674579991 0 0 0 5.873020262e-12 0 0 4.673782022e-18 0 4.163007048e-13 0 7.563855936e-11 0 58547.196 0 0 0 0 4.866425298e-07 0 2.424145907e-08 0 0 0 9003.148577 7.584373474e-21 0 0 0 0 0 16.67215511 0 2.768488602e-20 163.3032976 0 0 0 0.2258686605 0 0 0.001075865468 2.545085441e-11 2.745327389e-09 0 1221121.536 0 0 0 0 0 0 2575558.42 0 0 0 0 0 0 0 0 0 7.310571888e-16 0 0 3.120464367e-05 0 0 0 1.208195713e-08 0 0 0 276311.6148 0.2243277086 0 1.395455456e-05 0 0 1.033026559e-13 4.154513818e-08 0 0 0 0 2.64912622e-12 0 +0 0 0 0 0 0 0 5.547275697e-20 0 0 0 1.01933477e-11 0 0 0.03408011929 0 0 0 2.417106282e-07 0.0005262107933 0 9.886807144e-20 0 7.575286387e-18 0 0 0 5.939034677e-09 0.0001806664158 0 0 0.0001212293875 0 0 21.56499354 2.779698668e-07 0 0 0 3637.302167 0 0 0 0.0005448349991 0 0 0 0 0 0 0 2.677106545 0 0 0 0 0 0 3.341576834e-14 0 0 0 0 1.3541661e-16 0 112701.618 0 0 0 0 0 10982.251 0 0 0 0.004549901606 0 1.700603941e-16 0 1.307168072e-21 47567.13705 9.100936879e-09 0 3.028321916e-09 1.624604209e-13 133.8273656 0 0 1.166288454e-09 0 0 0 0 0 5.446401144e-09 1287971.341 4.003037369e-07 0 0 248997.1888 0 0 0 18.65397266 0 1443835.431 0 0.007638107424 1.822149662e-27 753.0856925 0 0 0 0 0.01160189504 0.01745642815 0 0 0 3.661130832e-17 0 0 0 124005.004 0 0 6.493713224 0 0.0001737192841 0.6806704274 0 6.646430214e-11 0 0 1.671978242e-11 0 0 5.838731937e-10 3.467624578e-10 3.630826035e-17 8.414678578e-30 2.56423632e-06 0 0 0 0 6.951282191e-20 4027.158806 0 0 0 2.850129669e-06 0 126662.9614 3.257451579e-11 0 0 0 7.403166079e-21 2.196268759e-08 0 0 0 0.001355740766 0.01457553223 0 0 4.102442722e-16 0 0 0 0 0.0004702252871 0 2.359504899e-12 2.352420615e-20 0 61616.46378 0 446247.842 0 2.508104848 0 0 0 1.387246215e-23 0 1.899721198e-06 3.480259086e-21 0 0 0 0 0.04270137299 0 0 0 0 0 0 0 0 4.756667894e-11 0.3374243087 0 0 1.125728755e-05 0 0 0 0 0.06718981248 0 0 0 1.614147664e-12 0 0 0 0.0008525635025 0 0 0 1.291250583e-11 0 0 0 0.9162418014 1.025905028e-26 0 0.2204290312 0 5.595019619e-10 0.005373833271 0 779334.0165 8.101746079e-11 0 0 1.424497817e-23 0 64937.64682 5535.209465 0 0 0 4.112982746e-16 7.07735847e-09 0 36002.60815 123.2201608 0 0 0 0 0 0 0 2.645135605e-10 0 0 0 0 91077.99588 0 0 0 0 1.886412621e-13 0 0 2.287103341e-13 164.0643559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.484007104e-27 3.605467278 0 1.016472234e-08 0 0 0 0 716.7432141 0 0.01857992508 0 0 +65.36438477 0 2.855170027e-07 0 0 7.565171585e-10 0 0 0 0 1.569441847e-17 0 9.342975965e-09 0 0 0 0 0 0 1.108326492e-12 0 3.346857074e-17 0 0 0 0 0 0 0 0 0.06014490798 0 0 0 0 1.8725334e-29 0 0 2358.382502 0 0 0 0 0 2.149995733e-17 743981.6906 0 0 3.290856912e-13 3.278128959e-08 3.547784792e-15 0 3799333.049 0 2.493693282e-15 6055.305239 0 5.062887924e-17 8.630959055e-13 0 92497.82073 1.893863873e-23 0 0 1221251.334 0 0.0007759285595 0.0008751519657 0 64766.84575 0 874225.3446 0 0 5071.44014 0 0 2.577922523e-06 0 0 0 0 0 0 16466.71725 0 0.02209570889 0 0 0 0 0 0 0.003814349894 0 735.6918025 1475966.878 2.937046575e-09 0.0009926590708 4.523752123e-05 1.151711039e-12 7.273342549e-11 1.564590273e-05 1.274212249e-10 0 0 0 0 0 1.931655985e-16 2.400295694e-12 0 1.434369679e-31 0 0 5.463973867e-27 0 1.844345569e-08 9898.591376 2.140061534e-18 0 0 3.204393311e-19 0 0 1.607633428e-09 2.000449004e-23 7.349518398e-23 0 0 2.338195647e-07 0 0.8849632499 0 6.110825956e-10 9.932900772e-17 22.90709673 0 0 62969.16138 0 0 2.277159933e-16 30979.0053 0 2.525792269 4.790415575e-28 7.944954295e-17 204.3026925 1.984254615e-15 125258.3084 0 0 0 0 0 1.449884755 0 0 0.005067459108 0 125249.0185 0 112.8777601 0 0 0 0.551695217 0.0001017940586 0 1.114176415e-17 0 0 0.1591533517 0 0 0 0 0 714.1041837 0.001007946858 0 0 0.001428621852 0 2.424820233e-06 1.480965058 1683475.419 0 0 0 2.129425799e-09 6.497336132e-23 0 6.573130652e-06 6.24249296e-20 4.472242534e-14 0 0 428774.6434 0 1.383041465e-06 0 0 0 427177.7803 2.442438041e-13 1.013527258e-11 0 1161.43654 0 0.321490217 1.295027908e-19 0.07944809472 0 3.758944304e-22 811676.5596 0 6.426496268e-13 1.827022792e-05 0 1.82664995e-17 0 1.759799479e-16 0 0 0 185936.9588 0 0 0 0 0 6.578458555e-10 0 0 0 0 0 0 1.50268292e-15 1691741.467 3.899458974e-11 9.369517301e-24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.351917755e-05 36215.22928 0 0 0 0 5.607903666e-27 6.826717839e-18 3.964247886e-06 0 0 0 0 0 1.329881096e-07 0 0 0 446209.67 0 0 0 0 0 0 0 0 0 0 1.358518262e-15 0 0 6.840522561e-16 0 0 654244.7556 0 0 0 0 9.977095812e-08 +3146.754583 0 523564.6096 4.742677954e-13 0 0 0 0 0 0 0 0 5.176256332e-06 0 0 0 0.1105609183 2.881757046e-07 0 1.088055531e-25 0 0 4.169271923e-07 0 0 0 0 0 0 0 0 3.505755438e-25 0 0 0 0 0 0 0 0 0 17258.4595 3.193997623e-30 0 0 0 0 1211790.774 260581.208 0 0 0 0 0.004283515653 0 0 0 6.044310274e-09 0 6.44127583e-15 0 1.74420699e-10 470178.6038 1.798211217e-15 0 0 0 22237.91677 418564.1968 3.524758582e-10 1.984118397e-06 0 0 0 0 0 0 0 0 4.964145746 0 0 0 0 0 0 0 0 0.03741178977 0 8.579315431e-10 1.525818923e-11 2.708916894e-08 0 2.191263094e-09 0 1.061277096e-29 3.057632104e-14 1.826227825e-12 0 0.001444642227 7.022290918e-06 0 4.640013628 10199.48388 0 0 4.118517527e-13 12.90358835 1414.157978 750656.2765 0 0 0.03658063759 7.805729137e-13 5671.745389 3.084186204e-20 8.025784404e-10 0.0009987899034 1953.058389 0 1.837203361e-13 0 0.005596896779 0 6.476531565e-31 2126.972674 0 0 0 0 0 0 0 801.3600283 0 9.991472736e-12 0 0 0.001237089773 0 0 0 0 0 0.9636122332 0 0 5.765451812e-09 0.004941816448 0 2284.847155 13178.27798 0.05116588117 531597.6653 0 6.314727382e-19 0 499836.4312 0 0 0 0 0 0 472033.8225 0 0 0 0 0 2.988567395e-40 16043.28736 8.28522146e-21 0.3359328591 7.63560428e-09 0 0.06572472668 6.795160717e-13 0.2550880292 4.155583608e-09 0 6.779248754e-13 0 18245.46911 0 1670191.28 35875.95576 0 403215.6244 5009335.027 0 3.382041442e-05 1.533437034e-09 0 0 1.361994131e-09 0 13.55758842 8.198129173e-12 297672.144 6.764352777e-15 0 1160772.743 0 0 0 0 0.4890865873 0 7.280091069e-06 26.28247319 2.152043232e-15 0 0.001292986591 0 0 2.465481405e-13 0 14156.77725 2.029897469e-05 0.0001551088673 0 0 0 1.845561678e-12 5.068099724e-18 1.181854675e-27 0 0 0.00103362135 0 0 0 0 0 0 0 0 0 0 7.072424213e-07 3.092783276e-10 0 0 0 0 0 8.623415601e-17 3.283800397e-07 2.605752839e-06 0 0 0 0 0 0 0.0006102169089 0 0 0 0 1.153500657 0 0 0.0007670405716 0 0 4.557685737 0 0 0 0 0 0 0 7.656170124e-21 0 3.819516486e-10 101.7997745 0 7.276547546e-13 0 1166336.414 0 0 1.653903445e-19 6.445627372e-29 0 0 0 1.751905472e-10 0 0.0003104191936 0 0 2243.77432 1.208737988e-17 0 0 +0 0 0 0 0 0 0 0 0 0 396213.436 0.01026094241 2.686109777e-13 0 0 2203755.853 0 0 0 0 0 0 0 0 1.565632568e-11 0 0 0 4.489820829e-10 0 0 5.433118008e-13 0 0 0 0 0 0 0 1.16294967e-30 0 1.501846035e-09 0 0 0 0 0 0 0 0 0 0 2.453925525e-11 0 2.314438091e-08 0 4.282236417e-13 0 0 0 8.234366672e-10 0 0 0.2428685056 0 0 0 0 0.5903082272 0 0 5.934511191e-09 6.270212605e-17 0 0 0 6.675046902e-15 0 0 0 2.983540816e-05 5.523890818e-08 1.649934518e-20 0 0 0 0 702091.23 0 0 285.0156745 16458.65683 4.035923293e-07 1.882796615e-20 0 2.590430582e-26 0 5.750250602e-10 0 82.58397978 14480.56278 0 0.0004459416982 23.49560102 0 1.785689265 6.934116613 15432.96916 0.6642893314 0 2.353664923e-07 0.000446681732 4.606722916e-11 85616.34819 0 0 0.0001653280814 0 0 9.446359792e-08 0 0.001269899143 1.86819373 0 0 0 5.775321515e-15 0 0 0.4438597499 0.0008722286996 0 0 0 0 0 0 0 0 0 0 8.720030919e-20 5.438980263e-12 0 125451.7335 3.144266476e-23 1.524427732e-11 0 2487.513428 9.821948223e-10 3.948389027 0 3.753871139e-11 7.401911191e-15 5.864378377e-07 0.01628866944 0 0 3.47814037e-11 0 0 0 0.0006204101566 259907.9729 0 0 0 0 0 0 0.002935222431 0 2.41168472e-13 0.6170469469 0 0 0 0 2.821139207e-14 0 0 0 0 455.3042246 0 0 0 0 0 0 0 0 0 8.467306685 11430.64236 0 0 0 0 2.210820851e-11 0 0.1262007701 0 0.01544599251 0 657.1448364 0 8.399120891e-08 1.663423728e-11 0 0 0 0 3.327563998e-16 0 0.06398922159 0 0 68.01552288 0 0 0 285501.734 6.645096809e-17 8.069841378e-07 0 0 0 0 0 0 0 1.839773962e-16 0 0 2946.790227 0 9.247289692e-10 8.618007817e-27 6.247153415 176605.5607 7.775896011e-06 0 0 0 0 0 0 0 0 0 0.0112559031 0.0002476224029 5081.743273 0 0 2.534946041e-19 0.8405568627 0 0 0 0 0 6.343808305e-16 0 0 8.479142715e-05 0 5.179087654e-11 0 0 124727.8385 6.633639178e-20 0 3.20783088e-14 0 0 0 0 0 2.626774467e-07 0 5.50213097e-30 0 0 25944.71548 1.98348412e-29 0 267721.8737 0.1691966674 5.313835852e-11 0 0 0 0 0 0 0 0 5.245984791e-13 +0 9.237789082e-13 0 0 0 0 0 0 1.151842549e-09 0 49.87015428 2.450221791e-12 0 0 0 0 2.547753107e-11 0 0 4.667946959e-21 0 0 4.57806141e-12 0 0 0 0 1.656298402e-28 8.893229441e-15 0 4.065041559e-18 0 7.123084645e-12 0 1.628330481e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 6.408088256e-10 0 0 11.17896295 10112.73736 3268.305443 0 0 0 2.737757048e-05 0 0 4.257150122e-07 0.0001651924471 3.204031616e-08 0 0.02199118953 0 9.397191136e-12 0 0 0 0 0 0 0 13921.76783 0 0 4.205725317 0 0 0 0 0 0.0002136445721 0 0 273160.189 0 1661.852338 0 0 470.1052977 0 0 0 0 0 2.048036918e-27 0 2.141664812 0 0 0 1.238915662e-15 0 0 0 3.937820157e-06 1.431166162e-16 0 5.016314901 0 0 6.373132724e-11 0 6.382332019e-16 0 0.01174875692 0 1.749561081e-18 0 0 0 0 6.986037702 0 0 3.871673803e-13 0 6.769458913e-13 0 0 0.07213429563 4.964537524 0 168.7921534 0 0 5.573891066e-12 0 0 0.1357122343 0 0 0 2.925306087e-06 7.667707629 0.311485913 0 1.553472804e-08 5.183302881e-08 7.538147493e-12 5.760082781e-25 0 0 1.473661608e-30 6.723229669e-12 1.140314021e-31 0 0 0.4677829602 0 4.494421696e-06 1.768002606 8.718490778e-05 0 6.847526799e-20 0 0 20784.37399 7.037319827e-09 372850.2974 2.536456678e-11 0 2.545728297e-27 0 62.13386436 20.4420425 1.814073245e-21 0 1.700521233e-22 0 0 8.259078016e-15 0 0 2.929512337e-07 1.230487769e-23 569811.5444 0 1.100767782e-08 9.184138624e-23 0 0 50.70264438 0 0 0 0 0 0 7.61949639e-12 410.8577658 5.250626394e-08 0 0 0 4605.405394 5.385973567e-20 0 5.131062546 8696.356466 0 2311.067952 0 0 0 0 21.58677881 0 0 47.20158655 0 64.98056784 1567.065163 0 354380.8529 43.72120098 0 0 0 0 0 0 0 0 0 1601.06913 0 0.002930316758 1.809516077e-12 0 555.3880402 0 0 0 0 2.94187701e-06 0 0.09994610419 0 0 0 0 0 0 0 0 2.749438316 0 0 0 2.580526026 0 0 0 0 0 1546351.783 17673.54809 0 0.002210067089 0 0 0.1379947756 0 1.452018293e-07 0 0 0 0 1504350.121 0 4.776557416e-12 77.83832702 1.048269962e-07 0 0 0 193442.8876 1.128788957e-09 0 0 0 1106727.444 0 0 0 0 0 +4.493935923e-15 0 2.659798753e-27 0 0 0 0 0.0001173579924 134300.9714 0 0 0 2.028437146e-11 0 0 0 179747.4114 0 0 3.147842615e-05 0 0 0 0 0 958.5446858 0 0 0 0 5.543156517e-10 5526.700478 2926.951339 0 7012.550485 0 0 0.1343520286 0 0 1.493994598e-07 9.723952147e-18 382.2101022 0 75.91994474 0 2.522350421e-08 0 358.4369808 0 0 0 1.245733727e-07 0 3.681049556e-12 1.315875516 0 0 2751934.597 0 0 0 0 1.711870869e-18 0 0 191726.5703 4295.710842 0 0 0 0 3.980483045e-27 3.794648154e-28 0 1.205300054e-08 1.934566135e-11 1.715483675e-05 7.795231694e-11 1.261559275e-09 0 0 0 0 1.27561441e-14 6.998841298e-19 0 0 0 4.166493845e-27 8.011745494e-11 1.581330638e-07 1.687752681e-10 0 1.117354263e-08 277786.5935 1.274699265e-06 0 0 0.0076565972 0 0.01709546549 1.583154319e-15 0 0 0 0 0.0006275325699 3.039044493e-18 0 518012.8529 0 0 0 35.42268886 3.209647732e-10 653.8892846 0 5.383188666e-09 0 9.663250885e-18 0 1.193938712e-06 0 0 4.724512007e-09 4.492131522e-12 0.1114303543 0 0 0 0 0 0.01140162763 0 0 2.499054697e-11 0 4.109299012e-10 0 0 0 0 3.162545686e-13 0 162.2724094 0 0 2.40408039e-24 4710.971044 0 0.01112930738 0 0.02065546748 0 1.648841728e-34 0 193798.2159 0.4855104129 0 7.198253313e-06 0 0.9478790968 4.121272165e-08 0 1.118202968e-11 937.8412591 7696.55427 2.034533345e-18 9.34166334e-05 4.514810233e-07 4.431601599e-15 563.8876644 0 1.073314604e-18 9.085538632e-19 0 0 0 814.6240309 0 0 1.117774795e-26 0 5.486600788 0 0 0 7.244487529e-12 0 0 597.4317756 595557.5836 121890.3778 9.982524827e-17 577104.6234 0.05572121098 0 0 4.281111344e-11 6.007672405e-13 0 0.4903088736 0.01984076546 0 0.0007114140807 0 2.372594896e-15 346.8362592 0 0 0 1.14777213e-05 0 0 0 0 0 0 0 7842.03964 0.2368735483 0 2.189615796e-12 2.106570731e-05 19500.42043 0 0 0 0 0 2.803814979e-07 0 4653985.276 0 0 0 0 0 53391.70767 0 0 0.3017036077 0 0 0 0 0 0 0 7.313776144e-09 0 0 6.758454711e-06 0 2.96471115e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.716916247e-20 0 0 0.03480864533 1044992.805 0 0 0 2593.6139 0 0 2280.275527 0 0 0 6.31190746e-12 1.16943567e-05 1.784589792e-13 0 2.239097374e-15 0 0 0 0 0 +26.08808639 0 2.330672274e-14 0 5.722874027e-26 0 1.923909469e-05 0 0 0 0 0 0 0 3.038951989e-12 0 0 0 1.511596347e-05 0 0 0 0 0 0 0.03964274006 0 0 0 0 3.715349325e-16 3.679904964e-17 9.993163794e-12 0 0 0 0 0 0 0 0 300.6195381 0 1.577450274e-09 0 9.76900627e-11 2.479387548e-10 0 0 0 0 1.719305544 0 0 0 2.990585843e-08 4.261907473e-05 0 1.732380454e-26 0 0 0 0 0 1.16140761e-09 0 3.887358131e-14 0 0 0 0 2027.422513 494987.3351 6.368917515e-12 0 0 0 0 0 0 0 0.03122539881 5.691581876e-23 0 0 0 0 0 0 79605.12091 7.295232573e-08 0 2.791332946e-14 0 0 47.08463624 0.3636736831 0 0 0 9.556068733e-05 0 0 5.704139784e-17 0 0 0 0 0 3.004519343e-28 2.251386447e-16 0 982.0809518 2.257952689e-10 0 0.002519293912 0 0 0 84200.45024 0 0 2.29100161e-16 7.536410569e-09 10837.2532 0 0 0 4.243116523e-11 0.03757754717 4.684899805 0 0.00692148162 6.624526174e-14 0 0 0.1060958245 1310.692076 308.0188277 0 0 0 0 1.364968279e-08 0 0 0 30.3198796 47974.14571 0 0.0009824868713 6.404081316 0 0 0 0 0 0 8.30088971e-13 0 84054.65316 0 0 0 0 2.034521842e-12 1.514007566e-08 3.540614647e-09 0 0 154999.7169 0 0 0 5.187435212 2.725338897e-05 0 0 0 0 8714.492302 89.95169026 1.391181512 0 80.74518095 0.8369728287 0.000209544755 0 0 1.628600583e-35 0 0 0 8.436243752e-28 0 0 0 0 5.672335183e-15 441923.8622 305.5373116 1.332127047e-08 0.01876149092 0 6944.593285 0 0 0 0 0 0 2.354267016e-10 0 0 0.02084932135 0 0 0 0 1.173065333e-09 0 465833.5199 0 0 13446.08775 2.53009709e-05 0 0 1.458909129e-16 0 1.854479555e-16 1.540818157e-35 0 0 0 1185858.764 0 0 0 1200667.01 0 0 0 0 0 0 0.0001102404992 0 0 0 89135.59156 4.260693459e-12 0.2253913738 3.905142776e-12 1.706859585e-20 0 0 8.338071852e-16 0 0 0 673035.2595 1.096912178e-09 0.8412103271 0 0 0 0 3.764859369e-21 0 0 1.191109745e-11 0 2.42414634e-11 0 0 0 0.02623776094 0 0 2.060539151e-15 0 0 0 0.04383571102 2.377658071e-19 0 322733.7306 0 0.04127450231 0 0 0 0 0 0 1.355605817e-08 4050.495543 3.1433665e-07 0 +0 0 0 0 0 0 0 0 0 0 0 0 9.205913649e-05 0 0 0 0 0 0 0 2.938834929e-11 0 0 0 0 6.33582036e-12 2.090592765e-19 0 0 0 0 575202.5735 0 162.8409335 4.665841926e-08 1.251052691e-11 0 0 0 0 1.339229177e-15 0 339236.2397 0 0 0 7.757408718e-23 0 0.008212078462 5.953871984e-18 0 0 0 6.226225061e-12 0 0 3.423673468e-08 0 0 0 0 7.55374781e-11 0 2555.810109 2389509.379 0 0 0 0 0 1.986761454 0 0 0 0 0 0 1.494549217e-21 0.06478213806 3.1299475e-14 0 1.950989014e-09 1.01423699e-06 0 0 0 0 0 0.0008341560147 3703.986154 0 0 0 0 5.879882342e-11 0 0 0 0 0 1.343262172e-10 2.48056347e-11 0 0 0 0.003173323024 2.313861114e-06 2.499560263e-05 0 0.02088739654 0 0 1539.043277 2.523685947e-10 0 0.01873938375 0 0 0.003181754481 2.952384053e-08 1.532693889 0 9.775614049e-11 0 0 2.421665914e-17 5.042051203e-17 1.081300649e-09 0 0 7.647107336e-08 1.605468584e-07 0 0 0 4.758213148 0.0009574433722 1.629171441e-05 0 0 0 0 0 0 0 1.084482217e-10 1257.125998 2.022287653e-07 0 1.125899497e-09 0 4.649914978e-15 0 0.3709348573 0 0 0 0 5.059511621e-19 1.430564308e-10 3.277955765e-16 0 0 0 0 0 4981.609216 8.747233344e-06 0 0.0002804521567 9.662822335e-24 0 0 0 0 0 0 2.512363014e-05 0.000102883555 0 0 0 0 3.275836988e-13 0.04883839785 7.846271768e-17 0 0 4372.870113 285236.692 0 0 8.948261961e-09 0 0 2.36557502e-12 0 1.326136149e-08 0 0 0 0 0 4.937721026 0 0.2699997602 11521.96721 0 0 0 132949.6858 0 0 0 4.679779144e-07 0 1.535180833e-18 2211.510594 0 196.9901378 1.071570901e-19 0 0 1.155363534e-17 0 0 0 1.227654727e-13 0 4518.780541 0 0 0.001404540837 0.008341130741 0 0.337206341 0 0 0 0 0 0 1.611907838e-24 0 2.751826691e-13 0 0 0.0003508707415 0 0 0 0 0 0 0 0 1.237392894e-10 0.0005525667305 0 0 158019.1267 7.341449322e-15 0 0 4309.796509 0 0 0 0 0 1195474.776 0 0 0 0 0 7373.949488 0.0005647955745 0 0 0 0 0 4.299882077e-16 9.352592238e-13 0 0 0 0 5.118576526 2.604495901e-07 0 0.004790416705 0 0 0 0 0 71.57777192 1.782579873e-06 +0 0 0 9.196209548e-10 465627.8469 0 3.873047638e-09 0 0 4.118801631e-16 0 0.003015062727 0 2.333949606e-08 1.056228953e-06 0 0 0 0 0 0 0 0 4.917180535e-10 0 0 0 0 0 4.048512212e-17 0 0 1.190525814e-19 0 0.08774068577 0 44.03986911 1.871479612e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112925.2977 0 0 0 0 1.440625549e-12 2.468393249e-12 0 0 0 0 0 0 0 1.120481383e-05 347544.1784 0.0008234342339 0 0 0 4.285470696e-10 3.32353654e-13 0 5.569684823e-07 0.04677132811 0.2842473011 0 4.263854213e-06 1.966587104e-09 382061.7201 1.879853958e-14 1.397944758e-11 0 218.1011176 0 1701.090086 166.8999435 0 0 2287818.767 0 142.367016 54400.45261 0 0 0 691594.2556 2.069371716e-17 0 0 1.195888822e-14 0.08254361637 0 273.3128129 0 0 1.640047088e-23 6.569385897e-27 187.9317427 0 0 0 2.15954017e-07 0 2.649614274e-05 1.64614491e-15 1196474.251 4.54753833e-10 0 0 2.466963357e-16 1337.64338 0 1.794945714e-11 0 4.410503891e-11 0 3779.192436 0 0 0 0 0 0.08468081807 25.09355687 2.276374959e-12 0 684.123888 0 0 0 0 3444.033615 0.2420217208 0.355978398 0 0.03413196978 0 680.7474723 0 1.508679405e-14 1587.983905 0 4.963833765e-16 0 0 3.040063076e-11 2.351591923e-20 0 0 0 0 432082.453 316785.759 0 1.012820723e-11 0 4.761733426e-08 0.0006334824829 0 0.0003255687641 4.247215979e-07 0 2.031326024e-10 0 0.202412681 0.04435568316 0 3.128708859e-05 2.045607784e-10 9.40960902e-15 0 0 0 0 0 0 2.054452805e-17 4.062800149e-05 0 0 3.865834769e-08 950.336383 0.007446182602 0.007467283782 0 0 1.455453017e-06 0 0.04862396677 0 5.046455463e-06 0 0 0 2.017990734e-08 0 6.595606062e-27 1.392640911e-18 0 0 0 0 1464398.405 1.928480889e-11 0 0 0 2079233.788 1.240689465e-07 0 0 0 8.7497851e-06 0 0 0 4.465767567e-11 3.886849133 5.694450316e-14 0 0 0 2.46280264e-07 8.321739749e-08 0 1.056366683e-14 64788.71975 0 8.390701002 0 0 0 0 4.690634303e-19 0 0 3.83393962e-14 108.9452567 0 0 33077.5146 0 0 0 0 1.216422538e-29 0 0 0 0 2941.142868 0 0 0 0 0 0 0 1.350095219e-09 0 0 0 0 0 0 0 1083553.215 0 0 6669.311551 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.537566432e-21 +0 1.145443462e-12 0 0 0 0 0 0 4.857616211e-17 1.594413052e-11 4.600427468e-05 0 0 0 189.366076 0 0 0 0 0 83.31596777 0 0 0 0 0.01408670193 0 73266.11027 0 0 0.0001072757984 0 0 0 0 0 3.239294439e-11 2.505471636e-13 0 0 1.16250746e-10 7.935935096e-12 0 2446.686259 0 0 0 0 0 2.328141564e-05 0 423720.912 0 0 0 0 0 0 4.424482012e-10 0 14817.28721 0 0 0 0 0 0 0 0 0 0 0 0 3.670828254e-17 0 0 0 0 0.00187997917 0 9.51232266e-28 7.71170512e-19 1.062568723e-05 0 0 0 0 0 5816659.911 0 0 0.02300358043 0 0 0 0 2.442890351e-06 0 0 1.79944277e-12 0 8.198142118e-07 0 7789.265804 0 2.500326402e-19 0 0 7.404418818e-25 0.0003360279926 0 0 5.058736679e-08 0 0 0 430.5797291 0 0 0 0 2.40769297e-17 8.749605616e-07 0 0 7.169817236 4.209452819e-13 1.933583184e-27 1826519.085 0.0001403518246 0 0 8.420750565e-20 0 0 0 0 0 0 0 0 0 3.21353819e-11 5.106243251e-11 0 1.123621773e-14 2.17287992e-12 0 129298.6982 0.005336261112 3.613052457e-13 0 5.566124163e-05 3.223063522e-08 0 1.552598414e-09 74722.28435 0.02974927247 0 0 0 0 2.234809071 0 0 0 0 0 0 7070561.82 0 0 1.321684576e-13 0 0.02744463331 0 0 0 0 0 2.627414614e-32 0 0 0 0 0 11984.51565 2.518479116e-09 0 0.1816729489 0 0 0 1.426161519e-27 0 7.223219007e-16 1.64373858e-07 589341.3419 0 0 0 0 780.4147188 0 1.255506851e-14 16502.37281 1.68387048e-12 0 0 0 0 0 0 4.39857363e-06 0 0 0 1.582484979e-26 5.569291457e-25 6.067520286e-11 0 0 6.901371023e-07 4091.101708 0 0 0 1.509649932e-06 1.934811591e-22 0 86865.50689 0 0 0 0 0 1.848072543e-06 1497806.752 0 0.387979413 1465432.726 0 0 3.743193262e-21 0 1.663224205e-06 0 0 0 0 0 5.194805224e-10 0.0001073374792 8.032958589 0 390079.1206 0 3.727340066 0 0.01742572229 3.640257989e-11 0 0.001424337541 0 0 0 0 0 0 2.09827468e-25 0 0 0 0 0 0 0 0 0 3.00806523e-15 0 5.521116364e-20 9.882370924e-18 0 0 615.2623953 0 2.718345284e-05 0 0 7955.354658 0 0 0 0 0 0 0 0 3.460040235e-36 +0 0 0 0 0 2608096.011 0 0 3232007.191 30023.75757 0 0 0 0 0.1414310378 342266.6396 0 0 0 0 0 0 0 0 0 2.411493456e-11 1774528.074 0.9061158182 0 0 0 7.884654663 0 0 0 0 0 1.509341571e-18 2.06833285e-24 0 2.790437267e-12 240.5974034 0 2.547218474e-16 2128042.116 1.261063964e-22 7041.81791 0 0 0 1.166305456e-09 0 8.88243616e-22 0 0 0 0 0 45069.40722 1.429712556e-20 0.007113259567 0 0 0 0 165254.9143 1.17363298e-05 0 2.696155563e-27 0 5.957185113e-22 0 0 0 0 0 0 0 170.1877515 325565.9766 16372.88859 1.054406087e-08 0 0 2.805313472e-31 4.19056085e-09 0 0.4175783463 0 660.2500668 697.5197854 29942.46584 0.0003427780394 0.0001900234462 0 0 0 0 3.806534866e-29 1.839768184e-12 65.40180416 67.36358677 0 0 1.307216402e-06 690055.1525 0 0 0 3.935426978e-07 1.654340794e-07 1.003494489e-25 2.535420245e-14 0 0 0 0.0009024977799 8288049.493 0 2.097469058e-13 0 0 0 1.888209587e-19 0 0 0 1.675323051e-08 1.134582174e-06 3201.514916 5.921841746e-06 2.656651463e-13 0.0001572970868 3.26790028e-20 5.221865129e-07 0 11093.41864 0 105.7259627 3.695992608e-14 0 5.247720319e-19 7.728973425e-07 0 0 0 96843.66345 0 0 7.656799301e-05 0 1.698115303e-15 0.0001330635714 180.24567 0 0 0 0.02667018046 2.52548464e-09 2.432777971e-06 9.647963984e-16 419.2849022 1.466641796e-11 8.087320619e-22 0 0 0 6.634669836 229863.8222 0 1.193515372e-12 0.00978108803 0.0001953772641 0 1.001961065e-13 1.070328432e-16 135.7240043 4.040221345e-23 2.295979602e-22 0 0 0.01875535764 0 1.462739347e-28 0 0 0 2.398139932e-27 1.713114574e-13 0 2.28594195e-12 6.056246296e-13 0 7.706890012e-10 2.919971456e-13 2.792719114e-09 46095.30124 1.334479357e-07 1.832385259e-12 0 0 0.001088810927 0 0 0 0 6.834993218e-08 150521.3081 270166.0618 0.005692138435 6750.506339 3.966118946e-08 0.1510438687 0 0 0 0 0 0 3.383931918e-27 1.63378642e-12 9.821435057e-10 0 43.99675405 0 0 0 0 0 0 0 0 0 2.283995551e-17 7.618965853 0 0 0 0 0 2.395344137e-11 6.642187114 7.740784659e-06 8.469147866e-18 0 0 0 0 0 0 2.028949702e-12 122580.7591 0 0 0 2.293128016e-12 0 491.9947736 0 0 0 5.547817287e-13 0 0 0 32.93947986 0 0 0 0 0 0 0 0 0 9.683392401e-12 0 0 0 0 0 0 0 0 0 0 1.119254153e-07 0 0 0 0 2.656466363e-09 0 0 0 0 2.941436945e-28 9.559873652e-30 0 0 +0 2.970951508e-20 2.731034419e-18 0 0 93.93774119 0 0 1.304322441e-14 9.36791221e-10 0 0 0 0 0 0 0 0 0 0 0 0 7.727457012e-07 0 0 0 0 0 0 0 0 0 0 0 0 1.185925358e-05 0 7.757558667 0 0 0 3.821500639e-08 0 0 0 0 0 0.03354216054 0 0 0 0 0 0 0 0 0 0 3.499913292e-14 0 6.810095975e-20 3.162624791e-15 7.967789794e-28 0 0 0 2.177843464e-08 1695.782225 5.959631532e-08 1.599589219e-14 0 0 0 8549.066102 0 0 0 0 0 0 0 0 0 0 6.942415337e-23 0.03894694777 2552.820565 0 0 0.0006330187836 0 461988.4529 0 0 0.001388969898 67.38044292 2.66844851e-07 0.003121352913 2.498717066e-30 0.01670738106 0 0.008798020989 0 1.606129444e-05 9.083342426e-06 0 0 1087.029635 0.0003004898134 0 0 1774984.992 116.6898941 2.824534392e-13 0 0.08651686642 0 0 0 0 22.147728 1.191135842e-06 533329.3373 5714.941474 0 0 0 2.021026293 0 0 0.07086068807 1.852795384e-14 0 14.79339515 0 0 7.632366865e-06 0 100025.4861 2.721933251e-05 962869.649 0 2.577415835e-09 0.0006079540616 1.773537216e-05 136.1393382 6.105203272e-28 0 0.176853713 3.812948945e-14 0 0 1.815388515e-08 0 0 2.470168882e-12 5.7010794e-14 0 0 0 15.77716528 7.066463574e-08 6.735913599e-16 0 0 0 2.997167604e-05 11.71678808 0 1.463202989e-06 0 0 70.08838748 0.000318976898 7.113828857e-14 0.000688892981 0 0 0 0 2.793217889e-06 0 1.111686222e-08 3.268466106 0 0 0 0.01848635077 0 0 4.605704526e-19 0 0 0 0 2325.061444 4.246648673e-17 206.5904745 3.536971719e-20 18333.23449 3.707057737e-08 5129.442879 0 0 3.160815946e-18 0 0 9.523246485e-11 0 0 30589.04513 5.466093346e-10 12525.45227 0 0 0 0 1.007127267e-26 3.866842244e-17 0 0 0 0 0 0 0 0.01431185001 3.290973874e-13 0 0 2463197.064 0 0 7.914164169e-06 2.411883117e-10 0 0.02106004597 0 0 0 0 0 0 0 0 0 0 0 0 3.071889353e-09 0 332050.5778 385030.4282 0 4305.732965 1.539176262e-20 0 6.27662194e-17 0 0 0 0 1.190421562e-09 0 0.3218547418 3.312303059e-20 21896.15224 1.232581943e-12 0 0 0 3.021813635e-06 0 0 0 0 0 0 0 0 992669.8193 6.644368741e-11 6.051327934e-13 3.839322813e-13 0 0 0 0 0 0 861.6651924 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 5.527158631 0 6.702112133e-13 0 0 0.04810891126 0 1.218906751e-14 0 0 0 0 0 0 0 0 0 0 0 1.509211115e-22 0 0 0 0 5.132670034e-20 32927.49899 2.267017565e-08 0 4.662313902e-08 0 710731.209 0 0 0 0 0 0 0 0 2222.73175 0 6.517348174e-09 0 0 10009.44127 0 0 0 0 0 0 0 0 0 0 0 1.819801177e-29 4.723931217e-11 0 0 0 0 0 0 0.2115735278 3.102549989e-15 0 0 9.432502994e-07 603124.4039 0 6.748233149 0 5.654869238e-11 0.001351775206 1012071.099 1.066124762 0 0 0 0 0 1.681218548e-06 555430.0817 369.0312005 6.359203878e-18 0 2.857024779e-17 268164.1853 0 1.566725772 0.1386435467 0 0 0 0 0 2.584885329e-16 0.6966362731 0.7766476908 3.251977368e-06 3.088759652e-16 0 0 0 3.971594685e-23 1.802337408e-08 0 0 0 1.153669877e-22 376622.0283 2.15223712e-09 0 59.94017955 1.555186327e-08 0.00373981418 0 0 0 1.260477717e-20 0 0 4.36974837e-11 1.425465757e-14 1.842319652e-13 2.196446744e-23 7.827746404e-20 0.2321497751 1.571699852e-15 2.176834018e-13 2.81118784e-07 0 0 0 0 0 0 8638.065196 0 2.317185789 0 0 0 0 1.280291178e-14 1.799053205e-12 18.1464411 3.352608608e-09 4.336369156e-09 0 7.004538607e-10 20.95717768 4479540.799 902.4691519 3.294025653e-07 0 0 1.295459342e-10 0.004487730935 0 7.435491276e-16 9.548934399e-23 0 0 0 2000.913666 0 1.924055117e-33 1.838902377e-11 0 215166.5911 1.783070242e-05 199.703397 1.38482871e-11 0 0 0.2258212298 0 1.791818543e-07 0 0 114710.0702 0.0001362639723 0 0 0.002081606016 2.056260743e-13 0 3.928990453e-12 679.1489361 0 0 0 0 3964.732139 5.271250406 0 0 0 7170.970934 0.0002486882223 0 0 5.065468099e-13 0 0 0 0.006144130419 0 0 7.053101033e-22 1.090397578e-11 0 0 0 0 0 0 0 5.212048074e-09 0 0 0 0 0 9.76705414e-12 0 0.6260755908 0.1033996161 0 0 0 0 0 0 0 1.739042508e-06 0 6.485310975e-13 0 0 55.97150177 0 4.061979811e-09 0 0 5.993398897e-06 2.842085864e-06 0 0 0 0 0 0 0 0 0 0 2.222813625e-27 0 1.49933492e-05 1.209910337e-23 0 2.313569981e-38 0 0 0 0 0 0 0 1.639409472e-30 7.299969581e-20 0 0 0 6.46746441e-20 0 0 0 3.410288718e-15 0 0 0 0.2656692209 0 2.775850949e-24 0 0 0 0 0 0 188955.9135 +0.01651274497 0 1.224110634 0.117286691 0 0 0 1.268673718e-41 0 2.539613107e-14 4.446835767e-09 0 0 2.785270173e-10 1.214741352e-13 0 2025109.246 0 0 2.515836354e-06 6.138071601e-14 0 0 0 4.899328397e-15 0 0 0 5.750502996e-10 0 0 2.124636213e-15 0.01032498638 1.683612453e-26 0 0 0 3.857906758e-16 0 0 0 1.398202212e-06 8.885177224e-23 0.000264157558 0 0 0 0 0 0 0 2072287.454 2390683.393 0 0 0 0 0 0 0 0 2.232820047e-23 0 0 0 2.023646485 0 0 0 0 0 0 0.0003152234681 176837.7536 0 0 0 29249.98748 3.255325451e-09 0 0 0 0 2.21361442e-11 1.566890916e-18 219.2508011 0 0 1.211250318e-08 3.556501981e-17 1.941129062e-05 2.190595862e-16 0 9.219346527e-06 2.370533491e-09 1.166355364e-13 0 0 3.430464874e-16 0 0 0 1.377126085e-06 4.471923858 0 0 320101.5389 0 1.558342222e-12 0 1.326089141e-17 21633.09655 0 0 9.241910044e-08 5.27632421e-07 0 34123.39599 0 2.263509541e-11 0.006612918155 0 0 4.551404326e-18 0.0007634397929 0.2088682394 2.25186131e-06 0 2.479134322e-11 8161.612188 690537.0343 0 0 0 1.267499066e-12 0 347.101802 1.086248377e-17 6.752558022e-17 1118.440163 0 0 0 1.61836085e-10 9.842757497e-07 0 0 0 3.664834023e-07 1.2135778e-10 0.01088150289 1.400818992e-08 6.442294646e-21 0 1.115949539e-20 0.6912354305 10491.05504 1.658617851 0 2.445755298e-06 0 6.725150124e-08 0.0002640998413 1.447200808e-11 9.376489007e-20 0 5.88282358e-20 0 0 0 0.004413061903 0 0 1.113241794e-10 0 1.815153497e-20 1.765424971e-28 0 0 0 8.254942073e-11 75539.11122 48.68650377 0 7.232295047e-16 0 0 0.00247469638 0 82142.59543 0 0 0 0 0 7.303770832e-12 0 64.38602971 0 7.674075376e-08 4.662535292e-35 6.309116745e-11 4.759797099e-05 0 0 0 798.4962674 0.0005436382172 0 0 129.9688308 0 0.001108714109 59.42180183 1.117378681e-27 0 0 5.819812149e-05 0 0 0 0 0 0 0 6.573111898e-10 0 0 0 5.419627296e-18 299317.1987 0 0 0 0 0 0 0.00628986046 0 0 0 0 0 21.58584547 0 0 0 0.02220014193 0 0 0 0.7615280053 0 89759.93585 79219.59851 0 0.007467905652 0 0 0 0 6.959893551e-07 1.256701536e-11 5.159690633e-13 0 0 0 2.288239743e-06 0 0 0 3.497375623e-20 0 0 0 1.34279586e-18 0 0 0 3.838682471e-09 0 0 0 0 0 1.743320885 0.01822153136 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 2.300746971e-18 0 0 1.082394001e-31 0 0 0 1.278619985e-24 0 0 1.349834601e-14 0 0 30849.75119 1.534023857e-22 0 4.841815148e-11 0 0 0 1.685796339e-21 2.841210044e-13 4.157122101e-25 0 0 0 0 0 0 0 0 0 1.424774733e-12 0 0 0 0 164205.6797 0 0 0 0 2.736275618e-16 0 0 0 0 5.032973668e-12 8.773408012e-14 0.005938321056 0 0 0.0001045970536 0 1183665.067 0 0 9.981803017e-15 0 0 19.05282187 0 37.44366173 30.99828504 274642.9806 0 1.194142689e-05 0 5.126437089e-27 0 11.21372126 0 1.723225281 0 2.868067183e-26 0 0 3.537060739e-07 0 10709.38834 0.0002927942937 0.0001060807433 5.866190346e-28 0.0008887590496 0 0 0.003718309538 181303.9441 0 3.673132774 0.01369357978 0 2.203390855e-15 0 0 0 0 0.7206225248 0 4.874712208e-16 0 0 5.813176452e-23 111357.9879 0 3.019340413e-13 0 0 21232.92181 0 0 0.7213326092 0 0.0001664296159 1.211905193 78062.94871 0 0 6.539094514e-05 5.05730493e-12 0 2.502708159e-13 0.001859379418 36514.66101 0.03753507797 3751.473932 0 0 1.241832686e-09 0 2.758155746e-08 0 234.1774617 2.405640508e-07 9.161803442e-12 0.0001672340503 0 0 4.660220778e-19 3.756666459e-29 0.003976404891 0.0001424977681 0 0 0 0 0 0 0 0 0 2.254457093e-17 0 4.371972929e-11 1.925360546e-14 0 0 0 0 0 0 3.994320777e-19 0 0 0 3.242161016e-14 0 0 0 0 0 0 0 1.202574574e-12 0 36.73190279 8.610212175 8.886924036e-20 0 4.046315194e-13 0 5.672488839e-11 0 0.9408872787 0 0 5.370321719e-17 0.05929990859 0 0.08616021037 0 3.09465088e-05 113.9295324 0 1.075844456e-07 3.151787886e-28 0.001071929375 0 0 3172859.588 3.612715096e-09 1.78622283e-08 6.04715329e-26 0 0 0 0 0 5402.458222 0 0 5.067806263e-07 6.942761148e-16 0 0 0 3.837143323e-13 0 0 0 0 0 0 0 0 0 6.763539398e-11 0 0 0 0 0 0 0 0 1.464752674e-16 0 0 0 0 0 16098.55863 0 12783.96376 0 0.04804487493 8.150675653e-12 0 0 0 0 3.210101275e-08 0 0 5.189812431e-12 0 0 0 0 0 0 0 0 0 0 1.774874939e-13 0 0 0 0 0 0 0 0 0 0 0 6.976910762e-21 0 1.170920299e-13 6.825847662e-09 0 0 0 0 1.452805285e-11 0 0 0 0 0 0 0 3.862793676e-16 2.26335629e-06 0 +0 0 0 0 0 0 0 0 0 9.169673115e-06 0 0 0 4.62809861e-15 0 0 0 0 0 0 0 0 0 18.39159108 0 0 1.842986956e-09 0 1.602052894e-08 0 0 0 0 0 0 0 0 0 0 23894.44245 0 5.776996881e-25 0 8.927311772e-08 0 0 4.330354514e-17 0 0 0 3.1481983e-12 0 0 0 0 7.108775039e-08 0 0 0 0 0 0 0 0.0001060596756 7.357271098e-05 108019.2664 0 1188.554079 3.856324462e-11 5.145095263e-09 0 0 0 0 0 4.313436785e-15 0 0 5.224907621e-11 1571.70293 32634.64381 569078.9493 0 0 6.667749114e-06 7.182554053e-16 0 0 0 0 0 0 0 0 0 0 0 7.043248254e-08 0 4.160597219e-12 0.1021568779 0 0 0.6557430558 0.001304490271 0 0 0 0 0 0 3.752465337e-09 1.246353237e-06 7.30610727e-30 3.648489382e-08 0 0 0 1153535.588 1.078561117e-11 1.603378189e-17 0 0 0 0 2.141872186e-12 0 0 9.355046825e-09 47.39559649 1.096674883e-16 3.851490333 0 7.049926008e-24 0 2.380122307e-08 14.54510417 6.091930061e-10 0 0 2.443640286e-10 71874.25153 1.370512642e-21 1363278.263 1.217342591e-05 978.989753 0 0 346.622753 2.371020447e-24 0.04795104456 0 5.762390776e-05 7.687513681e-18 1.347453779e-35 0 0 0 2.73375738e-22 0 0 1.171791812e-07 0 1.732304352e-17 0 0 0 2.667565548e-09 1570.094776 0 0 427219.0289 0 0 8.876208829e-10 1.029098908e-17 0 3.182515082e-05 0 0 0 248431.8311 0 1.779924446e-19 0 0.005399307629 0 0 0 0 104.2636727 0 0 0.0001306909119 0 0.02908823255 0 0 0 0 0 0 427102.7519 0 0 1575.434288 4305.909917 0.001605409818 0 0 0 0 0 0 2.988482671e-31 0.002101522401 0 0 0 1.035476676e-10 1.878939803e-15 0 0.02605612147 0 0 3.539819273e-05 2.803706565e-12 0 2407.679323 0 0 0.0806747319 0 0 0 6.850856061e-06 0 5.760673118e-26 0 221486.1832 0 0 9.776861944e-13 0 0 0 0 0 1.011363642 8.871582212e-11 4.390877902 0 0 0 0 68.57592375 0 8.258559477e-17 9.924288147e-08 0 0 0 0 0 2.374632043e-09 0 0 0 0 0 0 2.683358584e-25 0 0 0 0.1363113598 0 0 0 0 0 16.32311419 0 0 0 6.075812733e-33 1.197166407e-19 0 0 0 0 0 0 2.776326118e-15 0 477555.1691 0 26.87302182 0 0 +1.697460956e-17 0 1.041383003e-10 0 0 1.880733022e-11 0 0 0 0 0.001380116835 0 0 0 0 8.859455062e-13 0 0 742038.4284 0 0 0 0 0 0 4.765031153e-10 0 0 0.05977003467 0 0 0 0.0001476418616 0 0 258.1024073 7.707355001e-05 0 0 2.444143585e-23 0.7876291033 0 1.154091466e-10 2.215397082e-10 0.000256057436 0 2018.769124 0.002951058618 0 0 0 0 0 0 0 0 1.938707339e-17 0 10062.64094 6.138754162e-14 0 1.85899653e-20 11.3023174 0 0 1.586824509e-08 925.1874487 9.122884004e-06 5.4306252e-27 4.753832574e-11 0 0 0 2061592.211 0 0 0 476875.9607 1.069691514e-13 1.303159713e-15 29925.16358 0 4.531954298e-12 6.79642023e-13 0 1.9642309e-06 0.006853536925 0 0 2100182.745 0.0004300061951 0 0 1.056806777e-16 9737.340732 9861.696508 0 0 0 0 2.325915491e-09 4395754.8 4.462176854e-12 2.87029931e-12 2.821826036e-05 0 8.389116588e-10 0 1.409038361e-23 0 0.007853845865 0 4.159829772e-07 1.128296402e-11 1.618157555e-06 2.229664718e-18 0 0 0 1.252887814e-14 0.002561980033 0 2904.777054 1.067102579e-06 0 1.02278029e-22 1.037733646e-09 0 0 0.2796547164 0 0 126839.55 0 0 4.961296054 7.66204967e-06 1.463385689e-22 0 0.0008763574849 5.527257588 1.653726223e-09 0.004290240781 33365.04256 0 0 4401203.39 0.0002061433711 0 0 1.599342442e-14 278.6721642 0 0.09535108005 2.210685056e-08 1.606323423e-09 29573.30317 0 2.355191317e-06 0 0 0 0 0 0 3.771870713e-12 0 0 5.928479036e-38 1.049908725e-18 6.453377898e-13 143642.937 0 0 202741.4573 0 3.55606539e-29 1.23293849e-10 0 0 3.058033551e-14 0 352.4904612 0 0 2.573628069e-25 0 983348.8538 0 6.098715493e-16 0.0007224573021 0 0 0 0 0 0 0.003818761839 0 2.686631998e-22 0 0 2.361529049e-07 2.007861533e-05 3.483975292e-07 0 0 0 0 1.02558507e-11 0 0 0 0 0 0 0 0 0 2.507499858e-05 0 304.4597424 0 8.231830974e-07 0.01787670104 0 0 0 0 0 0 0.447592796 0 0 2.399820903e-22 0 0 0 0 0 0 0.004611487605 0 8369.701713 0 0 0 0 0 0 0 0 1749697.414 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48.44477285 0 0 0 0 0 0 0 0.03611369634 0 0 0 0 0 0 5.390570452e-05 0 0 7.520501328e-18 8.794408072e-26 0 0 809810.1619 221186.5035 0 0 0 0 0 7.275094e-09 0 0 0 +0 0 0 7.514823225e-21 1.080793254e-07 0 0.04303848124 0 0 0 0 2.622691618e-22 120.83456 0 0 0 0 1.309149539e-06 0 0 0 5.96130974e-24 0 0 0 0 0 0 0 0 81.90210561 0 0 90.09666555 3.464568561e-11 0 1.503301582e-26 8.289996322e-11 0 9.576395078e-08 0 0 0 4.018846731e-18 9.874134536e-07 9.976527108e-13 3.744144098e-20 0 0 0 3039833.587 0.000486309992 24262.1402 0 0 0 273.5420798 0 0 0 9.822905795e-12 0 0 27069.18357 0 0 0 0 7.37803087e-13 0 4.492941006e-13 1.829773073e-26 7.259040886e-09 4.385697398e-13 3.988751437e-28 5.153009844e-05 1.651078009e-28 0 5302.981915 0 0 0 0 0 5.928039143e-08 0 4.11410993e-17 0 0 0 0 0 0 0 0 0 0.02468195862 0 9.515112713e-07 0.06961779418 0 190378.713 0.004065427972 0 5.372149386e-07 1.558178108e-05 6.885782536e-06 0.007422103378 5.721762116e-12 0 0 0 0 0 0 70438.85487 0.2142073811 0 0 0 0 6978.256297 0 0 1.348939337e-05 13046.54042 0 195.6325551 0 3.311678941e-12 0 0 0 4.539827251 142835.2188 0 0 0.0003743775495 0 0 0 0 0 9.110967624e-21 0.8961184298 0 2.430609888e-21 0 0 0 0 6.584687755e-16 1165349.24 4.238960178e-29 0 0 0 1.463032647e-10 0 0 0 2118878.12 9.421537726e-12 1.561207569e-20 0 144.3678552 89.81652647 0 6.7033052e-24 0 7.186393884e-10 1.195644663e-15 0 0 3.427970997e-09 0 0 374.7023726 0 2.264482519e-09 5929.994589 9.0300858e-16 0 0.4908982425 1.466255015e-15 0.004032962059 1.940330027e-14 3.115319552e-15 0 1.552619982e-22 0 0 0 0 0 0.02647673196 0 0 0 0.0008679639466 0 0 0 148686.7219 38188.04559 0.001273752701 1.22196136e-12 0 0 2.535181596e-20 0 0 0 0 1.124420545e-27 8.247823303e-29 0 0 0 0 2.063512203 4.14943168e-16 7.053046036e-19 0 0 0 2.38440447e-07 3.259422952 0 0 0 0 1.113881795e-10 0 910.0531761 0 0 3.479507714e-15 0 0 0 0 0.02884759238 0 0 0 0 0 0 0 0 0 4.284149911e-16 2.127306347e-10 0 0 0 1.087327807e-10 0 0 10544.33351 0 2.470519312e-12 0 2140.553058 0 0.00152746582 0 0 0.0003611710483 0 0 0 0 1.561287318e-20 7.386144192e-11 0 0 9.601199044e-22 0 0 0.9824309723 0 0 3.354811765e-29 0 0 0 0 0 1.543370891e-09 2.434406408e-08 0 3.331802996e-13 0 0 0 0 0 9.871257754e-08 +0 0 0 0 0.002526347458 0 0 0 0 0 0 0 0 5.011275703e-11 3.705536655e-13 0 1.724598498e-28 0 0 4.698821599e-30 0 0 0 0 0 0 3.307717436e-11 3.271762031e-08 0 0 0 0 0 0 6.320739067e-23 0 0 6.886001219 3.84575928e-05 0 0 0 0 2.709612277e-09 34.30547031 0 0 0 0 0 7.287630562e-32 0 0 0 0 0 5.714519935e-17 0 0 0 0 0.03532494012 0 0 0 22294.36936 0 0 3.903907798e-09 0 241.4645635 2.298339637e-14 1.179146912e-23 635.1270408 0 8.653719791e-05 0 585.4062625 0 0 1.497900259e-06 0 7.232159958e-13 0 0 0 3.883722703 8.6229855e-16 6.270150599e-05 0 467502.6014 1.394627236e-20 117870.4051 0 47182.67825 0 0 0 0 0.000121613991 0 0 0 0 0 3.724248807e-29 0 7034.30331 2.057992575e-14 0 0 0 29422.18727 0 3.798925336e-22 9.498603734e-09 0 0 1.047784735e-19 0 0 2.341728174e-08 0.02800014439 4.07880719e-16 333967.055 0 73183.08339 0 0 0.03948003864 0 0.0007931241012 0.01749986864 0 1.065356128e-07 0 6.612194973e-07 0 5.904571071e-17 2938.497587 0 0 0 1.436853699e-09 0 0.0005188753033 0.2613508171 0.9806892387 4.813234038e-13 0 0.05128322014 4870.258071 0.0001543861225 0 0 0 0 1.0982263e-29 2.933380971e-27 0 0 0 1.687090745 50.58088247 0 0 2.628604657 0.00526285051 7.347346831e-27 0 0 0 5.114838902e-12 0 0 0 0 2.476148878e-08 943331.6517 7.22791475e-26 8.179861264e-08 0 91.44896149 1.867626261e-30 0 8.843948567e-07 4.371528223e-17 0 3.184942609e-16 0 0 0 0 4.751725877e-12 1.032737191e-09 0 2.449263499e-28 2.836837938e-08 0 29.54388507 0 0 0 0 0 0 0 1.388696139e-11 0 0 0.01413826103 1.778649828e-08 513.1839093 0 0 0 0 0 0 0 0 2.331800843e-16 0.01687919738 4.238947646e-09 0 0 0 0.0002636720732 0 1.777740207e-14 0.01435891667 0 0 0 0 0 9.138012102e-30 5005.817621 0 11421.73936 0 0 0 129016.2928 0 0 0 85035.84993 0 0 0 0 0 0 0.3766210673 0 0 4.161922374 0 0 0 0 0 2.806882593e-20 0 0 0 6.356001654e-12 0 0 0 0 7.612843651e-19 0 0 0 3.828862636e-12 1.444121226e-14 4.294898102e-27 0 0 0 4.946461783 0 0 0 0 0 0 1.718267471e-17 0 0 0.2502745764 0 0 0 1.999432796e-06 0 0 0 +0 0 0 0 18083.20298 0 0 0 0 0 0 0 0 482271.4545 3.963755797e-07 0 0 0 0.03605627211 2.682080663e-12 4.508564054e-13 0 0 0 5.415250308e-29 1.234187246e-07 0.000236635369 0 0 6.530287664e-13 0 0 0 0 0 0 0 0 0 0 0 9.148628845e-10 0 4.159368898e-13 0 0 0 2.206111587e-10 94.41814288 0 0 0 1.021899512e-09 0 0 0 0 0 0 0 0 0 0 6119.676083 0 0 317732.469 0 0 0 0 0 496657.7449 0 0 2.429755226e-27 0 0 0 0 3.570078246e-09 8.760259e-18 0 0 1.110280878e-09 0 0.000911676219 2.008016325e-07 0 1.098299668e-24 0 0 1.135312688e-10 0 0 0 0 0 0 0 262007.0544 9.242176818e-16 0 0 1654788.226 0 0 3.498914843e-16 4.609103779e-10 5.875820992e-09 0 9.231247113e-13 0 7.397732544e-28 0 6690.06567 0 5.16817742e-13 0.3574221117 8.275104089e-16 0 0 0 0 0 0 54949.7764 0.116588567 1.552050617e-06 2.993710692e-12 0 0.03737967192 1.310884179e-13 0 0 0 0 0 0.01132473186 0 135.5798347 0 0 981.8483043 0 0 0 3.25484886e-44 1.187119196 0 0 0 5.182467145e-18 0 9.955905048e-05 0 0 0 0 0 0 131920.1285 4.153371379e-05 0 6.931435197e-13 0 0 441164.5222 1.665186031e-09 1.645779358e-27 0 0 0 1.703567077e-09 2.020683737e-16 0 0 0 1.415190023e-27 1.242727353e-20 0 2.039933239e-16 7.31222626e-14 0 1.118463772e-14 1.356870645e-24 11.94569158 0 4.75676713e-16 1.638423373e-16 0 1.427685179e-11 0 0 0 3.476209124e-15 1.565574518e-07 0 0 0 0 0 0.005934239245 1.472673905e-10 0 6238.627239 0 0 2.61680108e-11 0 0 931.1765123 9.986213571e-14 0.2772763764 0 1.512507919e-07 1.842383012e-11 3.764855623e-07 0 0 3.258153371e-13 0 0 0 1.951883405e-26 0 0 8.753941066e-07 0 0 0 0 12967.81101 0 1.196998058e-08 0 6.863561286 0 1792314.005 2.544016684e-25 0 0 5.255379626e-13 0 0 0 3.964814569e-16 206437.7899 0 0 0 2.423186456e-11 0 0 0 0 2.27010885e-05 0 0.0526987539 2.995176906e-08 0 0 21155.86592 0 0 0 0 0 224.1086614 0 0 9.435545102e-07 2.042572268e-17 90302.35133 0 0 0 202998.7428 0 0 0 4.263910723e-07 0 0 0 0 0 0 0 0 1.781983898 0 1.401035248e-15 8.13812422e-15 1.701146569e-12 0 0 0 1.484598081e-28 2.384592962e-20 +0 0 2.631655777e-06 0 1737775.145 0 13829.78349 0 0 0 5.365185663e-15 0 0.0001010304348 0 0 0 3.627949178e-17 0 5.360922744e-19 0 0 0 0 0 0 0 9.169972873e-09 0 0 4.433025464e-20 0 0 0 0 0 0 1.636486956e-13 0 1.743539846e-08 2.640086462e-10 0 0 0 0 1.185062218 0 0 0 0 1.363861824e-12 0 2.028177275e-26 0 0 0 0 0 2.159843024e-10 0 0.0002585366989 0 0 0 0 0 0 0 2.253867127e-10 0 0 0 1.697723704e-21 0 0 6.395810129e-26 0 6.138716983e-09 0 0 0.0004779953216 0 2.058363718e-12 0 0 0 0 0 0 1.839967254e-07 3.187832068e-13 0 6.744307425e-16 0 2.547330269e-33 0 0 0 0 0 0 0 961023.9706 0 0.002356403754 4.931814508e-27 0 1.067356995e-05 0 2.560517698e-05 0 0 0 3.376320218e-36 0 0 0 1.826811186e-16 0 2.691580946e-18 0 7.271096283e-08 0.005034720967 1.177884474e-14 0 0 0 0 8.576186721 1.641815755 0 4.628914995e-14 0 0 0 0 0 2.311197293e-06 0 2.280380855e-28 0 0.002749627754 0 0 3.469781365e-16 19.75774432 0 0 0 0 0 0 1764320.181 0.0008634515847 0 2.585220867e-25 0 0 0 0 7.891996086e-19 0 5.55330891e-06 7.510202872e-10 2.497880424e-06 0 0.000629713032 9.558941896e-10 0 81.44756435 1.093420333e-05 1.133028556e-12 0 1.21075118e-10 0 0 0 0 0 1.263964779e-10 0.01044307343 0 0 0 0 20.01949451 1.268415633e-22 0 0 0 0 1.095524117e-18 0 0 8.956272172e-07 0 0 0 0 0 0 136.266715 0 776982.8946 0 0 124944.685 0 3.638366363e-08 0 0 2.05265192e-07 2.37049668e-31 0 0 1364.261723 0 0 135635.4404 19.96526797 0 3.53141076e-15 0 0 270401.4743 0 2.034405312e-17 0 1.873225068e-11 0 0 0.09148413264 5.016300485e-23 0 0 0 0.0002709749383 9.970631404 200.2250346 0 0 0 2.084642889e-12 0 0 0 0 1.045769906e-07 0 0 0 0 0 0 0 56846.33442 0 0 0 0 0 0 0 23429.28884 0 0 0 0 10.86997315 0 1.625326969e-08 0 0 3.049329317e-13 0 0 0 0 0 0 0 0 0 0 0 0 1.002688247e-16 0 0 0 0 0 16001.82484 0 0 0 0 3.829081407e-12 0.002235179741 0 0 +1.015221397e-10 0 0 0 0 2.419456077e-29 2.056499699e-17 0 0 0 2.245135716e-09 0 6.19670503e-10 6697.790505 0 0 22374.6824 1.116424037e-09 0 1.423266006e-15 0 0 0 2.74176557e-06 0 0 0 0 0 1.753621825e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.20606165e-10 0 1.929113183e-26 0 0 0 0 0 1.368678342e-31 8.0052823e-13 2.417554952e-07 0 0 0 1.585090037e-10 0 0 252933.8868 0.002559968243 0 2.887314403e-09 0 0 0 0.108021428 0 0.08833742782 1.952345054e-06 0 0 6.000588129 6.495543734e-21 2.453780027e-11 0 0 4.871455166e-15 2.61843068e-23 0 0 9.271895652e-05 0 0 4.368136733e-11 2.543086732e-12 1.411283246e-19 0 2.731942948e-30 41211.05128 0.0005163455251 0 280.4075972 0 0 0 4.935948466e-14 0 50.23437589 148369.0338 0.001370389495 0 0 0 0.0002215998023 0 0.0002452429527 2.914055921e-12 0 0 6546.215696 0 0 1.908447215e-05 2065546.738 3.676796067e-14 6.621339586e-10 0 0.0006665210602 0 4.487666306e-22 0 0.5884866464 0 0 0 0 0 0 0 1.109534103e-10 0.3577359654 4.155556863e-07 1.826360779e-18 2331376.324 0 0 0 0 0 6.228439744e-07 0 0 2.059166526e-06 0 0 0 0 3.450251102e-05 6.813283665e-06 1.743183404e-22 2.716763823 2.770555104e-10 1395.652926 92.19614075 0 0 0 0 0 0 4.23240082e-19 0 0.01946335111 9.922130603e-16 0 0.04297247805 0 0 0 5.364121984e-18 0 337.8430389 0 0 0 0 0 0 0 0 1.048264757e-13 0 0 0 0 0 0 4.844257312e-06 0.8151514196 1.579676295e-13 2868.341789 0 0 0 0 0 0 2.735440485e-13 0.0003474548914 3.738660787e-14 0 0 5.294683152e-05 0 0 0 2.023853959e-19 0 1.604815736e-23 2.522947971e-14 0.0006427461811 1.609672834e-11 1082.295978 7.809949365e-07 0 0 7.739064124e-11 6.712037492e-13 5.038632613e-15 0 0 0 0 0 0 0 0.02499140072 0 0 1.291359399 0 0 0 0 0 0 0 0 2.065329597e-08 0 20210.42639 0 0 0 0 0.004000742214 0 0 12493.44343 0 0 1.368060427e-11 9.9210318e-11 0 0 0 0 0 0 0 0 0 0 0 2.051129467e-11 0 0 0 3.22400677e-23 0 0 4.089609638e-07 0 0 6.777928749e-16 0 0 0 1.40824652e-24 0 4.165968963e-09 0 0 0 7.829909553e-21 0 1.20971462e-09 0 0 0 0 0 0 0 +0 0 3.770606364e-09 0 0 0 0 0 0 0 0 0 0.0008029765881 2.10002124e-20 0 0 0 0 0 3.908709406e-09 1308.059595 0 0 0 0 0 1.448696668e-12 0 0 33625.4001 0.009400279853 0 266740.1586 0 0 0 0 6.551292661e-20 0 0.02684897662 341.1484013 0 9.841715191e-30 0 7.075468879e-08 0 0 0 0 2.504406134e-11 0 0 0 0.01293016193 0.0002285903658 0 0 0 6941.129932 6466.429249 0 0 0 0 0 0 8.027886594e-29 0 0 0 0 0.01212289132 0 0 0 0.003006343248 0 0 0 0 0.00101611527 2.132728141e-05 0 0 0 273.6223093 0 2.598795321e-07 2.92732486e-07 2.002639296 0 7.275987358e-11 10.11327926 0 0 0 4.425806416e-12 0 2.274209126e-20 1.535854168e-12 0 22231.96918 0 0 0 0 0 0 0 3.413451581e-14 0 0.0001750626111 11618.73806 0 0.3842017302 0 0 0 15.34128026 0 9.728907363e-06 0 0 13.38152333 0 5.089562062e-18 0 1.26220291e-17 0 0.001123669135 0 10655.83676 5.234568279e-08 4.485140721e-20 1.474104567e-09 6.134852574e-14 0 45.86102326 13644.69378 0 0 0 8.654331589e-05 9.996900047e-09 0 0.002753353924 2.69378719e-07 0 0 6.949659174e-07 0 0 0 0 0.06889759274 0 383.4670894 0 0 3.554963768e-20 1.141654531e-10 0 4.320432501e-15 1.286765959e-07 1.247927861e-18 0 0 0 0 3.360552295e-10 0 0.001669350331 0 6.923046392e-22 1.251314717e-08 6.946932164e-11 2.991046439e-13 0 7.153176186e-07 0 0 0 0 0 1.536686243e-27 0 0 0 0 0 0 0 0 3.561570831e-10 0 0 3.530876901 0 1168159.273 8.295293593e-27 0 1.037971414e-09 9.868174314e-10 0 2.93754928e-07 0 0 5.385122031e-05 0 3.149490021e-09 0 1.988633436 1.875996343e-11 0 9.110535544e-08 0 0 0 0 233711.2367 0 0 5.091130788e-24 0 0 0.6229152468 0 0 0 0 0 1.071994587e-09 0 0 0 4.191016651e-24 0 0 0 5.544809385e-07 0 0 8.058744291e-21 0 488165.2518 0 0 0 0 0 0 0 1.486665411e-12 0 0 2.234081567e-07 0 0 0 0 4.150946595e-21 0 0 0.008658987765 6.958120886e-05 0 0 8.048339492e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.936100503e-29 0 0 0 0 7257.707466 0 0 0 0 0 5.185834357e-06 0 0 0 +0 0.1771389529 0 0 1.477343921e-11 0 0 8.213749873e-15 0 0 0 0 0 0 0 0 0 0.3568494248 0 0 10551.22834 0 0 0 329798.217 4.779190921e-14 0 0.1214726254 0 167.6946962 0 0 8615.686719 0.6270353865 0.0161590415 0 0 0 0 0 0 0.1079259998 1.028236554e-27 3.934088981e-09 0 0 0 6.486523995e-13 0 0.0009305819663 0.002495236909 5.435648629e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.319993248e-08 1.534235794e-15 0 0 0 1.192910674e-05 0 0 0 209601.2792 6894.825155 7.007326365e-08 0 0 0 1.605147607e-19 9.354241983e-07 0 0 2.214144304e-07 0.003965161797 0 2.389350612e-07 7.201818529e-19 0 0 0 0 1.451251264e-23 0.0002147751666 0 1.112616575 0 0 8.207368934e-08 0 0.363788061 0.0003969846824 363313.1158 0 1.007703607 0 5.327587556e-05 5.509837601e-07 0 340766.0683 0 0 4.813140648e-23 0 1.915682103e-10 0 9.126731253e-06 0 1.269443959e-08 6.460800076e-12 0 43.3578741 0 0 0 0 7.830140533e-24 0 1.219775894e-16 4.560564772e-09 7.376372798 1.411996148e-23 6.311393844e-10 3.453862882e-15 0 6.796802255 0 0 0 0 0 0 50.85609739 0 0 7.903191918e-10 10253.42661 169936.4988 0 0 2833889.843 0 0 0 0 0 0 0 0 0 0 0 0 0 2.195810308e-28 0 0 0 1.617350759e-09 0 6.243466781e-07 8.800838896e-07 0 0 0 0 0 0 5.620207771e-10 5.406640542e-08 0 0 2.167709842e-08 6.684868804e-06 356.4980229 1.460209451e-11 0 0 2.127863365e-27 0 0.01572939107 9.087423552e-06 1.362210432e-05 0 0 0 0 0 0 0 0 0 0 5.545682724e-19 0 914127.2453 2.445610883e-12 0 0 3.728777652 0 0 0 0 0 0 0 477.6088228 4.845051281e-39 0 0 3.891029137e-07 0 0 390345.3407 4.163966397e-12 1654564.019 1145.737467 3.943928189 0 6.620008602e-29 0 111794.0476 9.390473546e-07 0 0 0 0 0 0 1.025557278e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.29630436e-10 1.49415703e-15 0.04963531249 0 154289.2947 0 0 0 388804.6107 0 0 1.335799133e-11 0.0007233024878 0 0 0 0 2.751548239e-18 0 1.17947923e-15 0 0 4459894.051 0 2.323025561e-13 0 0 5.954188949e-08 0 5.993764318e-13 0 0 0 21622.35116 0 6.314219392e-08 0.0001000518631 0 0 +0 3.087009524e-05 0 0 0 0 0 1.88973247e-08 0 0 4.388926812e-05 0 0 0 36893.03879 0 0 0 41.05089935 0 0 0 0 0 0 0.0003113573295 0.07754274352 0 0 20.23606575 0 0.04912519452 0 0 0 0 0 0 0 0 0 0 0 0 4.633035757e-14 117138.7355 0 0 0 0 1.252212842e-08 0 1.718982752e-21 0 0 0.005898058178 0 2.74224521e-06 1.741190608e-17 0 0 0 0 0 0 0 0 0 0 0 7.749281921e-07 0 0 0.005033121382 2.950732645e-18 0 0 0 0 0 0 2.509413148e-09 1314.429573 0 0 0.006504373163 1.602352884e-11 8.161366486e-24 0 2.926292545e-05 1.599032655e-09 1.016708564e-26 0 0 9.880323273e-14 3.745363219e-20 4.963586165e-06 0 2445.987061 0 1.036639946e-06 0 21.04975871 6.326150374e-18 1.689636831e-05 2.011262279e-27 0 0.1037716058 0 0 0.07587733432 0 5.333239491e-09 1.071880784e-18 412.4148503 0 0 2404761.539 2.602236364e-11 2.250815314e-15 8.507174372e-15 0 0 0 0 2.780689031e-15 5.003828797e-12 0.04088038009 4.912819899e-24 1.113713075e-10 0 0 0 0 0 4.795557699e-12 0.03827121354 3.171381952e-13 0 1.702755685e-28 0 0 307.9868659 0 379114.0581 5.577580277e-13 0.01676865119 0 2.293169225e-18 0 0 2743.58081 0.00365312813 0 0 0 3.117615114e-10 3.973790184e-07 0 20.41261638 1.284463712e-17 2.836608273e-19 3.065524071e-08 0 4.85643686e-15 0 3.510853362e-05 0 0 0 0 6.032928027e-09 3.632065574e-18 180.8278706 1.297910107e-15 3.093262065e-07 0 3.093111056e-05 6.448763064e-17 0.03376675562 0 2954530.434 0 6.65061679e-18 0 0 2.12188078e-05 800.5315135 0 0 4.400651584e-12 5.557596256 0 0 0 1.905956622e-14 0 0 0.1611364063 0 0 260539.3519 0 0 0 0 0 8.628866089e-14 7.887512296e-11 0 1687015.242 0 0 4.982428513e-22 0 0 0 0 0 0 0 2.163685547e-13 340290.9264 0 0 0 0 0 0 0 0.009143686875 0 0 0 0 1.802027752e-14 0 0 0 0 0 0 0 0 0 0 0 7.25465665e-07 1.630832339e-10 0 0 0 0.0004055563625 0 0 0 1.8036786e-06 1.024474133e-11 0 0 3.73854738e-27 0 0 0 0 5.703529115e-18 4.037554839e-19 0 3121668.423 1.398183431e-10 0.002632067332 0 0 7.718298448e-15 0 0 5.713349696e-14 0 0 0 0 0 0 5.923163834 0.02211404603 2.477498862e-25 0 0 0 0 0 0 2.740295025e-12 0 0 0 0 0 3.077245766e-08 0 +0 0 0 3.45038204e-31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.456921146e-19 0 5.936032027e-10 0 0 0 0 5.724726309e-37 0 0 0 0 1.418223093e-05 0 0 0 0 0 0 0 0 7.095690173e-25 0 0 0 0 0 0 2.287479266e-26 5.367768732e-22 0 0 1.490099759e-10 0 0 385.3184012 0 0 537.4555996 0.1444319388 0 0 2.639201835e-07 0 3.010221507e-11 100536.6178 0 0 2.655825495e-10 2.716257854e-09 0 0 0 0 136305.1764 5.40799234 1.455282729e-17 355.540182 0 0 0 1.331466071e-10 1.917636863e-15 1.271120064e-22 0 7.131276198e-06 8.796623561e-09 0 2.363523319e-25 2.311480958e-17 4.273925742e-17 0.0006669868649 0 4.759809223e-09 2.031083127e-14 0 0.0001273096464 1.752475374e-09 7.707688675e-16 6.484178592 0 7.802362817e-08 0 0 1.267284203e-13 0 6.554660186 3.512643323e-10 675.4214564 0 0 8.98331383e-09 0 0 3.008302136e-11 814.4345366 20267.70866 2.422293747e-21 0 0 9.115560542e-08 0 2.960735203e-10 0 151722.9618 0 0.00213650606 2345.424169 0 0 0 0 0 0 724.0184232 0 2.785944792e-17 7.481368096e-06 0 5.247777365e-30 0 0.007349762316 0 0 2.604224945e-17 2.11925706e-11 7.573507925e-11 4.979567194e-18 3.561284339e-15 0 0 53942.10718 1324402.862 5.723743905e-20 4.448083419e-14 2.96794495e-09 624557.1642 654.4517905 0 0 6.49549073e-08 0 0 0 0 1001.610589 0 0 0 0 2.339991042e-10 0 0 0 0 0 1.220694764e-24 4.760752476e-15 0 0 0 1.870228013e-19 394.4838365 2.445336919e-05 0 0 6.782884726e-19 0 1.485087198e-17 0 0 0 0 0 1281.244514 1.093337712e-06 2.628297301e-08 0 0 1.180833845e-20 3.102376147e-27 0 0 0 0 0 0 1.062700797e-15 0 0 0 2134032.183 0 0 0 3.032587739e-26 0 0 0 6.40208687e-09 0 1.250765002e-07 0 0 0 1223.817271 0 0.003986652003 0 0 0 0 0 0.0001539399555 0 5.390717647e-06 0 0 1.573658665e-11 0 0 0 0 3.661164535e-05 3.143831157e-06 0 0 0 0 1.703001278e-08 2.431045879e-17 0 0 0 0 0 2.712344769e-27 0 0 0 0 1.203991684e-11 0 0 0 0 0 0 0 0 0 4535.640137 0 0 483545.8459 0 0 1.80961372e-14 0 0 2.815680486e-12 0 0.3922302126 3.582706185e-21 0 0 0 0 0 0 9.258500216e-07 0 0 0 0 0 0 0 1.779987088 0 0 0 +0 0 0.0001819026224 0 0 1.88290507e-12 2.520830444e-12 0 0 0 0 0 475386.8309 0 2.962449215e-12 0 0 0 0 0 0 0 0 2.185503298e-13 0 2.653320121e-09 0 0 0 0 2.61171641e-12 0 6469.474281 0 4.229698052e-12 0 2.158809364e-11 0 0 0 0 0 0 0 0 0 0 1.693070977e-06 0 2.670884623e-14 0 0 0 3.918091463e-30 0 0 0 1.950647452e-07 1.304401849e-13 0 0 1.237120925e-06 0 0 0 0 821281.9052 0 0 0 0 0.04215638008 0 2.003027147e-05 0 2.695129874e-11 394.9652967 0 0 3.999689198e-14 0 0 28.73100324 0 0 0 0 7.275389501e-12 0.01514699506 0 0 0 0 198461.8564 0 6.792356161e-13 41347.2875 0.0001596808195 0 1362.409569 0.0001980537966 0 0 0 0 0 0 0 0 9.569008518e-23 0 0 0 0 9489.639284 0 0 0 0 0 3.816808548e-07 5.65960695e-13 1.435109915e-05 0 0 0.002319858271 2.368930321e-13 4.241457017 0 0 0 1.431821643e-11 8.407401757e-31 0.0697346191 0.1000981759 0 0 0 668.9227184 0 1.729124582e-23 0 0 0 2.766836746e-21 0 0 0 0 0 1.765300481e-12 15140.04243 0 0 0 0 9.205173644e-07 4.176136426e-17 0 0 0 0 0.03215926073 3.553148615e-13 0 0 4.102923956e-08 0 9048.480092 0 0 0 3.347748247e-05 0 0 5.700400049e-27 20768.38141 1.673577794e-18 8.12481926e-39 0.01899291694 1.754119785e-05 0 0 2.021057158e-16 1.82137397e-17 0 0 37.61129897 0 8.279964072e-10 0 5267706.437 0 0 2.910817007 0 0.5865118091 0 1.890530315e-15 3.604664591e-22 3.968338889e-10 4.41651256e-17 3.021342259e-05 0 0 1.081797985e-10 0 2.686741515e-11 647320.2372 0 0 6.795099847e-08 0 0 3.378157319e-13 0 0 2.655629584e-21 0 0 3.112036293e-11 0 3.089363085e-06 0 0 0 2.946062897e-33 0 0 4.52007883e-14 0 6.77177993e-15 0 0 0 2056.140074 6045.161777 58037.0128 0 2.49405413e-07 0 0 0 5.778114833e-07 0 0 0 0 2.603871841 0 0 3.149824145e-12 0 0 0.02365290184 0 0 0 0 0 0 1.90652699e-17 5.617002258e-06 2.018978164e-07 0 0 0 5.001031585e-05 0 0 0 109.722364 2.851033155e-13 0 800.1894205 0 0 0 0 0 0 1.225172167e-09 0 0 2.868552436e-08 8.274156259e-26 7.076542782e-22 0 0 0 0 0 2.698514747e-13 0 3.348178252e-05 0 0 0 0 0 +0 0 0 0 3.766085445e-30 0.0002152632905 17.73958415 0 0 0 0 0 0 5.613055372e-05 0 0 0 0 0 0 0 0 94.54725313 0 0 0 0 0.4194467603 0 0 0 0 0 0 0 984.0186155 0 0 2.227354062e-21 0.0006964729137 0 0 0 0 0 6.450932007e-05 1.645108775e-16 1.898201102e-11 2.154957709 0 0 0 0 2.674178655e-25 513328.9962 0 13.00059373 3795.188106 1.762996819e-09 0 4.084474927e-36 0.003826634535 0 0 298531.5769 0 0 0.002723780158 3.496004084e-06 0 0 0.5732446205 3.279663648e-08 35.60462339 3.865186781e-23 0 0 0 1.893379722e-13 0 0 5.181144477e-19 0 0 4.809534967 0 0 0 3.744277103e-05 0.0004232170203 0 0 0 0 2.829656761e-07 0 0 0 0 0 0.0006095783976 0 5.863725454e-29 0 1.768040663e-09 0 0 3.834662912e-15 2.008945169e-08 0 393516.5344 5.069767767e-18 0 0 0 0 0 0 4.732000089e-08 964148.2167 0 0 0 1.182186424e-11 0 1.046207113e-15 0 0 0 0.4428613964 0 0 0 1338990.152 0 0 6.302880421e-12 3.636436195e-07 3.411262922e-13 0 0 50944.86561 0 0 0 0 0 3923364.454 0 0 0 0 4.380455272 1.338601539e-05 0 0 0 1.860466781e-07 0.02100103883 7.522788405e-29 7.634240549e-05 0 0 0 1.035596381e-09 2.91866557 0 0 54314.7669 0 0 0 0 0 0 0 315749.2808 2.970602938e-10 7.421081178e-05 0 311.1426663 0 0 5.13890108e-18 0 3289627.224 0 0 0 0 2.391182753e-08 0 0 2.354531914e-20 0 0 1.645828818e-10 0.256248342 0 3.123240309e-16 0 0 2.1738356 0 68.0810863 21.07862325 0 0 0.5479911245 6.776877388e-18 0 7.972591115e-25 0 0 0 0 0 0 2.340612327e-07 0 0 0 2.043421502e-12 0 0 0 0 0 422250.3248 0 3.291038483e-18 0 0 0 0 0 4.769183487 0 0 9.210167384e-11 0 0 0 0 0 0 4.187524165e-19 0 0 0 0 0 3.648067701e-07 0 103816.57 0 0 0 0.0002597098848 0.000345158615 0 0 0 0 0 0 0 0 0 4.348547467e-27 0 0 117.7379427 0 0 0 0 0 0 0 0 0 0 0 0 0 9.364176149e-20 0 0 0 0.00123342509 0 0 0 1.673358458e-19 0 0 3.368890575e-06 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 5.757379979e-12 0 0 0 0 0 0 1.256888734e-06 0 0 0 0 0 0 0 0 0 0 0 0 8.817218398e-05 9.229114818e-18 0.7955649086 0 1.100626416e-08 35887.52008 5.105177773e-13 0 0 0 0 0 2.558132575e-16 0 0.0001053141675 0 0 0 0 3.140193618e-09 0 0 0 0 95.67086956 0 0 0 2.756966678e-06 0 2.306827518e-07 0 0 0 2.777414018e-05 0 0 0 6.606146595e-17 0 1.461469527e-14 1.00843004e-09 0 0 6.767862176e-13 1396543.755 5013.013971 5.037160494e-12 656.7653353 0 0 0 0 1.968143709e-06 0 1.192624928 0 1.70417004e-12 0.5345162135 0 0 7.040249705e-20 0.0004337973844 402948.2874 0.06388760495 0 0 0 0 0 6.365651312e-13 0 0 0 0 0 7.392382258e-05 0 0 1.326277399e-12 0 0 1.415646228e-16 0.03944248722 0 0 0 0 5.71758192e-10 0.01854807024 0 1473291.173 2.908296544e-07 0 0 0 0.0017560904 0.0008264677521 11688.97418 0 3.711055155e-06 10997.38905 0.2079649033 1.486379495e-07 0 1.498451765e-08 0 2.991481898e-10 0 0 1.224562053e-07 0.001724504882 0.0007239338823 0 0 0 0 0 1.553970762e-18 2.468106314 160929.2631 8.060465742e-07 7.698298622e-24 6.17412534e-36 0 8.257166547e-24 0 0 2.122179714e-13 0 9489.437494 0 6.95532969e-28 0 8.369278937e-19 0 0 5.864325191e-10 0 0 0 5.319012026e-07 0 675816.7674 0 0 0 0 0 0 0 0 0 0 2.759010129e-27 0 1.58656203e-05 2.503529384e-09 1.849198098e-07 0 0 0 0 5499.028907 0 0 0 0 0 0 0 0 0 0 0 1.289708794e-08 0 4.051398996e-09 0 199155.5843 0.0001135342557 0 13734.02594 0 0 1.301075656e-22 0 0 0 0 0 0 0 0 0.0009426600916 0 0 0 30.95036229 0.05406754379 0 2.208955709e-14 0 3.245714065e-14 0 0 4.528738227e-06 0 0 0.02977834952 0 8.050425902e-23 0 0 0 0 779.359879 0 0.0001850422576 0 0 0 0 0 49853.10528 0 2.191113971e-08 0 0 0 0 69.19893804 0.01745566289 0 0 0 0 0 1142833.168 0 0 0 0 4558.783121 0 1.299152385e-20 0 0 0 0 0 646353.0772 5.940024535e-17 0 1188.285662 0 0 0 0 0 0 0.001085268304 0 1.300730537e-13 0 0 0 +0 0 0 0 0 0 0 0 1.881912106 0 0 6.048960112e-08 0 0 0 8.946076436e-13 0.001126306371 9.978553237e-18 61491.33658 0 0 5.265840997e-10 0 0 0 9.665831453e-05 0 0 0 0 0 0 0 0 0 0 308593.6701 0 0 0 0.0002184790414 0 4.281499227e-11 0.0008595008085 85975.29665 0 0 0 0 0 0 8.741657073e-11 2.241094797e-13 1.012011427e-09 0 0 0 59.42540765 11.21191555 0 0 0 1.632082682e-10 0 503693.0524 0 0 0 1.103575695e-26 0 1.376558774e-10 0 14875.17343 0 0 0 0.02872133087 0 1.486144725e-12 0 0 0 0 0 0 0 0 179.4888463 0 1.823346665e-12 0 0.0001555830588 5.504969897e-05 0 0 3.219012785e-14 0 0 0.07107321086 9.005744685e-10 0 0 0 154.6139425 0 0 0 1.288333227e-10 2.15788928e-18 4162.455951 0 2.487406556e-06 7.902745717e-10 0 0 1.558291773e-08 0 2.459589084e-14 0 1.08310787e-48 0 2.824708644e-33 0 0 0.0001935964961 4.01467576e-16 0.0003142556394 0 0 0.03502863647 0 8.702286603e-05 2.585065795e-14 2.057085651e-18 3.689064842e-15 0 0 0 92644.7892 9.95799158e-36 0.005563915135 7.855582649e-28 0 0 0 568283.1612 0 0 4.594857533e-40 0.0001476075156 0 0.0003932192921 1.030293265e-19 0 0.08182385633 0 2874.86511 0 163078.1321 0 0 0.000137601648 0 0 0 0 0 0 0 0 8.086869958e-16 0.0003096801938 0.002234282132 0 6.516615246e-08 1.06254179e-15 0 0 7.439859799e-15 0 0 0 0 0 37221.68112 2.996572279e-14 0.0003889967736 0 0 4.483739385e-06 0 0.0004377317049 0 8.489659777e-08 0.003442719382 232149.2997 0 0 0 0 0 9.529600884e-29 0 0 0 0 1.033424777 0.7095104384 0 3.813182071e-05 0 0 7.588306876e-21 517048.6657 0 0 1.632012056e-07 0 0 1.662651676e-13 0.03186963803 0 1.310703143e-25 4.535905451e-08 0 0 0 9.220344223e-14 0.03696095204 0 15382.18579 0 0 0 3.236577181e-17 0 0 0 0 0 7.678149995e-14 0 1.96168429e-14 0.1067951629 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.554543361e-09 1.105123102e-10 0 5.438275568e-09 0 0 0.01182817401 0 0 0 0 3.470902716e-08 0 6.551551371e-14 0 0 0 8.747305596e-09 2.93317301e-05 0 5.658192931e-14 0 0 0.0002690106919 1.57975205e-07 3.996199083e-12 0 0 0 0 0 0 1.184267624e-11 0 0 1.412554306e-33 0 0 0.001139196071 0 0 0 +6.085249623 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.753739059e-31 0 0 0 0 0 0 285.6056352 0 0 65.7163965 2.037789713e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.820278125e-14 0 0 0 0 0 0 0 0 0 158.8991209 0 3440.773519 0 32450.8969 0 0.02970287598 0 0 0 2.286735511e-06 0 4.430013632e-08 0 0 0 0 0 0 0 1.67072169e-24 7.413603906e-17 0 0 0 0 4.087931375e-30 4.287553446e-18 0 0 0 0 3.107858767e-27 0 0 0 0 0 0 0 0.01144907808 0 0 0 0 0.005243009373 2.551345573e-12 0 0 1.7964928e-06 0 4.29475222e-05 4.010823602e-11 0 0 0 66232.7072 0 0 0 5.905950453e-12 0 1.587370487e-25 0 0.9859701623 0 1.775464925e-12 0 2.622482963e-14 1.390585451e-12 0 68648.11487 0 47.14904855 14.26337955 0 9.696900531e-29 0 0 0 1.338993564 9.80142182e-13 0 9.65696434e-22 0 0 5491.415127 3.777744926e-28 10203.67005 0.2802108592 0 0 1.973714096e-09 0.002264008797 1.046118806e-12 0 0 0 0 0 0 0 0 0 0 3.136805932e-14 0 1637399.642 2.565269101e-18 175340.5266 0 6.916229254e-06 0 0 2.80800572e-21 0 0 0 7.919158973e-13 0.001706661416 0 0 0 0 0 0 0 0 9.485210632e-30 0 165628.5073 0 0 0 1.92337646e-24 0.1902309223 0 0 0 0 0 0 0 2.088355486e-09 0 0 1.859017622e-08 0 0 0 0 0 0 0 0 0 6.19879983e-29 3.482048856e-08 0 3.46738209e-13 0.1904210579 0 1.251251661e-09 0 0 0 1.450412899e-08 0 0 1.156253507e-24 0 0 0 0 0 0 0 54423.4615 0 0 0.02508248 0 2.456036569e-14 9.746102043e-16 0 0 0 0 0 0 0 0 0 0 0 0 12306.03461 0 0 0 0 0 0 0 6.766520239e-18 0 0 0 0 0 0 0 0 0 0 1.414380001e-11 0 0 0 2.086350318e-19 0 0 176.8658817 0 0 9.298493864e-23 0 0 0 0 0 0 0 8.623922717e-16 0 0 0 4.63206921e-15 3.8149548e-12 3.115664123e-11 0 0 0 2417.523257 9.265753513e-28 1.351725518e-06 0 +0 3.323459729e-09 0 0.01470577566 3.083640826e-07 0 0 0 0.03162427856 0 0 0 0 0 0 0 0 0 0.005034486112 0 5631.754309 0 0 0 0 0 0 0 0 8.544580296e-18 0 0 0 0 0 0 5.410251045e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.3799673835 0 0 1.218040832e-05 0 2.433280888e-11 0 0 0.0002111776499 0 0 0 0 0 1541.678009 0 2.178326038e-18 0 0 0 181162.5908 0 0 1.760429924e-20 0 2.276790859e-11 2.889442874e-08 0 0 0.0002860189055 0 1.398670933e-06 3.175813701e-07 3.360188022e-06 4.39121199e-10 0 0 0 0.655596173 2.786927966e-05 0 0 3.141989619e-14 1.57672118e-09 0 7.088196559e-05 0.01169189947 4.387866819e-10 0 0 0 2.418157428e-07 1.332214081e-25 0 320704.3314 0 0 3.731347952e-09 0.001261116206 0 0 0 70.27085892 3.334542566e-09 1.313485222e-23 8.817966281e-19 207.1460329 0 0 0 0 0 0.001975710721 22171.00557 0 0 3.778066771e-14 14.41901313 0 0 3.02497095e-07 3.751836145e-15 1.135586009e-07 0 0 6.504919415e-07 164.0666621 9.175997553e-16 0 1.200855899e-14 0 0 0 0 43.91374947 0 0 3.883946682e-26 0 0 4.422748809e-23 0 420.4991152 0 67.68405652 4.692920119e-16 484860.4263 0 4.776059258e-07 0 3.882308903e-12 0 0 0 0 0.002655003754 0 0 2.014845342e-06 0.001160723079 0 9.913332476e-11 0 0 4.214267208e-21 0 0 0 0 0 0 0 1.218345148e-10 0 0 0 0 0 0 17151.81007 4.088217379e-18 0 2.511020679e-10 149.8523718 1.508093551e-07 0 2.645203377e-14 0 1.648279727e-11 0 0 0 0 1.244118534e-15 0 0 0 0 1.969906499e-16 0 0 0 0 1.713256478e-05 0 3.423763643e-38 0 0.0841618463 0 1.909741559e-27 0 4.716359714e-25 0 0 0 1.712100401 0 0 0 0 0.0001747943517 0 0 2.860622617e-16 0 0 0 0 2.922761659e-10 0 0 0 8.222155247e-12 0 0 0 0 0 9.281910296e-14 0 0 0 0 0 0 0 0 2.806260439e-08 0 0 0 0 0 5.90006087e-06 0 0 0 0 0 0 0 0 0 0 3.51643962e-12 0 2.539994699e-12 0 0 0 0 0 0 0 0.005571812818 0 0 0 2.677302847e-24 7.329687467 0 1.339489317e-07 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 2.661981268e-23 0 0 0 0.08447874861 0 2.015375141 0 0 0 4.206158793e-22 0 0 1702.336922 0 0 0 0 0 0 0 1.814936246e-09 0 0 0 8.075932303e-15 0 180799.9448 1.281822222 0 0 0 0 7.579763395e-26 485.1653278 0 26894.61713 0 0 455.0687992 0 0 2906.603257 0 0 0 3.433094921e-12 0 0 4.667686783e-16 0 9.434862221e-21 1.841043274e-12 0 0 0 0 26.64943286 0 0 0 6.957610582 0 4.488307772e-25 9321.703082 0 2.443420649e-41 0 0 35.91531886 2.155936766e-38 0 0 0 2743553.921 0 0 2.507530013e-12 0 2.859437422e-08 0 0.2628065221 0 0 0 0 0 0.004531430879 6.916665689e-07 0 0.006706709019 7.808850915e-08 0 0 0.0002508012148 0 0 0 0 0 0 0 1.583711838e-11 0 9.41998499e-13 4.19668169 0 141631.8092 1916850.734 0 0 7.070021334e-09 0 0 9.889863052e-18 514.1236142 7432.149012 0 0 0 0 2.120115836e-18 0 0 0 0 8.908911843e-21 0 0 0 13722.95564 0 0 2.957892537e-23 265344.0337 0 0 1.107343603e-14 0.00268493308 1.889200664e-08 0 0 0 0 2.727083202e-06 0 9.327217157e-06 0 0 1.731898956e-08 0.0006226123596 0 0 0 0 0 0 2.144632891e-05 0 0 18326.61983 0 0 0 1.343378479e-14 190522.3771 1057704.303 0 0 0 0 6.567342486e-05 5.615050436e-28 88405.17079 0 0 545870.1137 0 1.194185338e-17 5.912802838e-05 3.868708975e-14 0 0 0 0 5099.091352 0 0 4.356639322e-11 6.818775859e-07 13048.25289 1.630830791e-12 0 0 0.1725787741 3.605051339e-12 0 3.447727761e-21 0 107.4725907 0 0 3.669049587e-21 15058.0104 0 4.540286275e-13 8.724343108e-12 0 0 0 0 1605.686879 0 0.1932257281 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.194004271e-16 0 0 0 0 0 0 2.288251348e-06 2.592107731e-22 1774366.226 3.01386555e-05 0 0 0 0 0 0 0 0 4.863581149 6.263910723e-12 0 0 0 0 3.341941477 2.055813929e-13 347393.2567 0 1.296007145e-37 0 0 0 0 1489616.49 1.34335704e-10 0 2.34479868e-05 0 0 1.442848276e-07 0 0 8.038653783e-08 0 0 0 0.003717983396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.670872522e-13 0 3527.492554 +0 0 0 0 0 0 0 0 0 0 6.554842223e-09 0 8.575943462 0 0 0 0.01331093908 0 0 5.178393848e-13 0 0 0 0 1.697871509e-09 0 0 0 0 0 1.982680638e-28 0 0 6.786196035e-11 0 0 0 0 0 601115.3549 0.00134156246 0 3.264156369e-06 2.524330223e-11 0 0 0 0 3.201295622e-06 6.692801973e-06 0 0 0 8.893006846e-10 0 15.78487018 0 198327.9069 0 0 0 1.083261161e-11 1.924359076e-05 5.822005585e-08 10641.83217 0 2.81951697e-10 4.008233419e-07 0 4.929958388e-25 0 1.048520311e-07 0 0 0.01900949772 0 1.033072207e-05 0 0.000544192136 0 0 0 0 0 0 7.929261854e-26 0 0 0.0001800192503 1.103469967e-22 0 0 1.109861055e-28 0 3.051123185e-09 0 0 0.00317309717 0 0 89246.48724 0 1852324.254 1.218308808e-40 12383.99646 1.753326586e-23 2.623797979e-28 11879.98036 0 2.181087382e-28 0 0.009215845657 0 4.902401895e-17 321266.084 0 4.700976006e-11 0 0 0 6.787142979e-18 0 0 3.998478494 0 0.0001332135941 0 0.0009198291504 1.179540375e-17 0.0002547406126 0 0 0 0 0 0 5.155206927e-30 0 0 0.0001328162843 0 1.299860135e-07 0 0 0 0 0 5.844954489e-15 0 0 0 12871.36583 0 4.280308767e-06 0 41.94305134 2.521439443e-13 1.032334033e-10 14.84952214 986514.3305 0 0 138409.8675 2328476.548 0 0 0 0 0 0 8.483737172e-06 7.236833891e-17 0 0 0.4407530784 0 0 0 5.285793843e-09 0 4.942548592 0 0 0 0 0 0 0 0.001770183336 0 0 0 3.521666374e-11 1.926964725e-18 0 0 488.9710541 0 0 0 0 0 9.181640579e-06 32.49986248 282446.1026 0 0 0 0 0.0001829352994 0 0 0 0 8.237504949e-08 0 0 0 4456926.714 0 0 0 0 0 0.06141930451 0 0 0 0 0 8.625801001e-19 0 0 0 0 0 0 0 0 1.147061438e-09 0 0 0 0 0 0 7.726291732e-07 0 0 3.283484354e-07 0 0 0 2.721132126e-17 4.701991521e-08 0 0 0 0 0 0 0 0 4.597959756e-05 0.0005007663186 0 0 41.30582584 0 0 0 0 588.1011147 0 0 0 0 0 0 0 0 0 0.000103692143 0 2.17590739e-22 5.938527724e-18 0 0 0 4.405991279 0 4.987386004e-07 0 0 0 0 602304.228 475237.4663 0.1437114326 6.354357469e-06 +0 0 0 5.736331896e-25 1.660035174e-19 0 0 0 0.005597236437 0 0 0 0 0.000939497379 0 0 0 0.006395806496 0 0 0 0 0 0 0 0 0 0 0.1103494641 1.807333701e-21 0 0 0 424.3975109 0.004123034749 7.41595054e-32 0 0 0 0 0 0 7.885597763e-29 1.390064042e-29 0 0 0 3.519528238 0.00166521882 0 0 0 0 0 0 0 0 0 3166686.19 0 0 9.351219679e-13 0 4.998468695e-14 0 0 0 0 4.56750705e-15 0 0 0 0 0 5.447261946e-19 0 0 0 3.173970646e-23 6.727125552e-09 0 0 3060.655296 3250.825165 47.43625471 8.347352504e-09 0 0 0 0 4.176192568e-06 0 0 0 0 0.09757308818 5.956904013e-11 0 0 0 0 8.75316329e-08 0 1.261475037 7.578708688e-09 2009.224183 1.388768962e-16 3.502701608e-14 0 0 382.0246687 0 0 0 0 1040.986266 7.764320618e-05 0 0 0.04335345954 0.01998145559 3.028935119e-09 0 0 0 1.388634239e-18 3.374912908e-15 2.415406568e-16 4.541694405e-07 0 0 0 0 1.714615166e-13 204869.9892 54124.32556 0 1.680521136e-20 0.04843958125 0 1.786393921e-18 0 0.0007694910621 0 0 5.163752364e-07 451376.0521 0 8.328920484e-22 4.521989052e-10 3.455074604e-10 0 0 0.4873944415 66068.10642 0 0 0 6.902002934e-40 1.26515018e-21 1.480857083e-25 0.01310628539 1.080857176e-11 0 7.442179987e-24 0 0 2.301114864e-27 2.209852108e-17 0 0 0 0 1.694821929e-07 0.0001553182004 0 2023.550544 0 0 4.272128689e-07 2.89341805e-08 0 0 2.535545987e-16 0 0 4.03663636e-09 1.49594734e-10 0 663.1090241 0 0 6.997972546e-07 0 4.677562995e-13 0 0 6.691078287e-11 0 0 0 0 0.01173168676 0.3623620001 0 5.53670711e-09 7.777127896e-15 0 1.4019908e-09 0 0 0 0 0 0 1020.503377 0 0 0 0 0 3.665890846e-21 9.451525151e-06 0 1.40879919e-16 0 0 0 9.924072206e-09 0 0 0 0 2.959557807e-26 0.1933899128 0 0 0 0 8.924236682e-09 0 0 3.204068763e-20 0 279.2152601 3.439935075e-38 1.709465344e-10 0 0 0 0 2.808274475e-09 0 3.006714819e-10 5.858485454e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.487155018e-13 89995.93374 0 0 0 0.1421300844 8.737899635e-10 8.386923455e-14 0 0 0 1.510660936e-12 51.18279061 0 0 0 0 9.441257281e-05 0 0 0 0 0 5.447930567e-08 0 0 0 2.520135128e-06 0 +0.01425850892 0 0 0.05409389215 0 0 0 4.247043097e-24 1.161612298e-22 1.36458539e-07 0 0 0 1.626276507 31.30438058 0 0 0.01651465062 0 0 4.1782961e-13 0 0 1.411480433e-07 0.2128889651 10103941.44 0 0 2.574654294e-08 0 0 0 134210.5263 0 0 2.20921216e-13 0 0.08817523646 0 6.625569963e-15 0 54.45123942 0 881.4423487 0 4908.407196 3.313978743e-07 0 0 5.469746689e-29 1.667151917 0.01463224364 0 0 0 1.210721844e-11 0 0 0 0 0 0 0 8.524211613e-08 0 0 0 1.089365004e-05 7.494957932e-19 4.698673377e-10 112638.4398 0 0 7.191917562e-18 0 8.755457282e-10 0 0 0 9.363277111e-26 1.153506472e-21 0 10.86365543 0 0 0 1.319505952 0.02047129928 7.602642378e-28 0 15.60585072 0 0 0.002654687805 1.150391743e-14 0 70.14117881 4.4019318e-17 1.209283917e-14 0 0 4.515650927e-07 0 1.357957462e-20 27.66177324 0 0 0 4.183768536e-10 7.087747178e-17 0 5940.665792 732.1252024 0 5.51782752e-23 8.222200368e-10 2.415084445e-15 52753.69408 0 5.037699775e-09 9.446862518e-08 13125.0899 0 159.6468512 369060.8963 0 0 0 1.867996892e-10 0 0 0 2.972517201e-09 0 0 0 0 0.0004092575841 2.511396452e-41 0 0 0 0 0 0 0 4.786320236e-11 1.128068522e-15 0 0 2.029921265e-08 0 0 0 0.2364547956 0 96.94684436 0 1.175588313e-08 0 0.7230854203 0 0 3.432855243e-10 5.6417133e-13 0 8.066419677e-23 4.619037578e-13 0.04509849201 9.848237384e-07 0 5.198426144e-24 0 8.385593252e-21 3.582273606e-30 0 0 0 3.814922596e-09 3.417097876e-16 0 1.218769911e-12 0 9.703583599e-21 1.005672367e-22 1.33518162e-31 0 0 0 0 0 6.463046139e-08 0 0 54351.25309 0 0 0 0 0 1.759444854 3.254224679e-10 0 0 946726.5631 6.68322867e-08 1.138513515e-11 2.273326799e-17 0 0 0 1.03285151e-13 94.51985383 0 0.2844744739 1.279983052e-22 0 0 0.00197973787 0 6.436022036e-16 0 0 0 6.038733028e-11 0 0 5.910093666e-05 0 63554.7222 0 0 4.259724077e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.832144193 0 735.8683576 0 0 0 0 0 0 1.023890613e-07 0 0 0 0 0 3.867099999e-18 0 0 5.142224852e-06 1.377132447e-37 0 1.517845632e-12 0 0 0 0 0 4.605520625e-16 0 0 0 7.411626033e-14 9.346043541e-05 0 0 3903.094915 0 0 0 0 0 0 0 0 0 0 0 0 +1.411123299e-15 0 3.235474542e-23 0 4.079854617e-10 0.2282226978 0 0 0 0 0 0 1.872150443e-24 0 0 7.168261276e-07 0 0 0 0 0 0 0 0 0 0 1.986931261e-22 6.05072472e-28 9.474743966e-23 0 1.888991326e-07 0 8.210923037e-13 0 1.564290089e-18 0 0 0 0 0 0 0 1.195201382e-07 0 0 0 0 1.383015034e-07 0 0 7.816306182e-29 0 0 0 0 0 0 0 0 0 7.578766983e-09 0 0 0.001851492695 0 9.953257393e-05 0 0 0 0 0 0 0 5.41749908e-13 0 7.5054208e-07 0.0006206097832 0 0 0 1.089007793e-12 0 0 0 2.307732647e-16 4.583331771e-23 0 0 0 0 0.5594004594 1.944883776e-05 189989.2488 635210.6843 0 0 0 8.810014317e-10 140701.6775 4.665577122 0 0 3.6715109e-11 0 1.083112503e-05 0 8.693895125e-06 0 0 2.572039025e-12 6.150050088e-41 0.4762524719 0 0 0.006445601818 0 7240.246492 4.2391268e-17 4.722975338e-14 0 0 0 0.006825432627 1.830533093e-18 0 0 2.502738135e-09 0 0 0 0 0 0 0 0.050976889 0 7.853315185e-12 0.002223737159 0 0 0 0 1.214400263e-19 2.726987951e-21 5.602311199e-12 0 2.526442194e-13 0 0 811161.3118 1.39615093 0 0 8.624134833e-08 0 0 0 14.82213886 4.73371597e-06 0 0 93.36605348 0 0 0 0 5.096072072e-20 0 0 0 4.736301387e-05 2.078933685e-09 0 0 0 131.1751986 0 0 0 0 0 0 154005.5396 0 9.635753146e-08 0 9.518372369e-08 0 0 1.545799724e-25 0 9.37925269e-20 0 1.137936758e-16 61.62909927 2.961426321e-39 0 0 0 8.702711069e-09 40.61439434 0 0 3.873341647e-12 9.31266351e-16 0 1.034145211 0 0 7.588861831e-09 0 0 0 0 0 25.1807463 19.95717779 1.808630867e-05 0 0 34.58156458 5.442202269e-06 0 4.860876739e-14 0 2773845.287 0.1053739957 0 0 0 0 0 0 0 66164.91946 0 0 8.777229922e-09 0 0 8.556276722e-10 66949.31767 0 0 0 9.569717561e-11 0.0002147966435 0 0 0.003384733976 1.957950077e-15 0 0 0 0 6.924970441e-16 0 0 0 0 0 1.974072822e-08 208869.4254 0 0.2326289336 0 0 0 3.077869758e-07 0 0 9.302743218e-25 1.152916768e-25 0 0 0 3.46958874e-16 1.709913024e-14 0 0 1.333228277e-08 0 0 0 1.668669147e-22 0 0 1.006441469e-30 0 0 0 0 0 0 3.998181849e-23 0 0 0 0 1.79224986e-12 +0 1.973279609e-14 0 3.231102067e-17 0 0 0 0 0 0 2.120842066e-16 0 0 0 0 0 0 0 0.0009100123088 5.067607727e-08 0 0 0 2.224859664e-24 0 0 0 0 1.303691567e-05 0 0 0.0007698539706 0 0 0 0 1.696670584e-27 0 7.512805745e-28 1.39779617e-14 73.27506699 2.187855528e-13 0 4.001064988e-09 0 2.013164652e-11 397350.2707 2.475185729e-09 0 0 0 0 2.331380502e-24 0 1.007295961e-18 0 0 0 0 0 0 6.408286512e-17 0.009379021883 1.281109174e-30 0 0 0 0 0 0 0 0 2.677283917e-12 1.610734824e-08 0 0 3.259739273e-25 1215269.485 3.654744466 0 21.19266528 0 0 3.720945797e-12 0.0008215946692 0 0 0 5.479190605e-16 5.255603443e-07 0 2.209802514e-14 0 1.156101282e-09 0 0 0 9.739074055 0 0 0 0.343781971 0 0.00457130223 0 0 0.2183039224 0 0 0 0 485317.5771 0 0 0 2.126277692e-13 8.187827552e-06 1.134386474e-13 6.754924553e-13 0 0 0 0 0 0 1.12213348e-18 4.763594875e-13 8.049731793e-23 0 11158.94237 0 0 0 1.005568318e-17 0 0 24.30812224 0 0 0 0 0 0 0 0 0 0.01165780983 476320.9489 0 3446.229172 1367.751824 0 0 0.03571246869 0 0 0 0 0 0.007003321822 0 0 0 0 7.996605277e-15 0 0 0.002906729525 0 0 0 0 0 1.831275567e-15 5.470986214e-11 0 0 2.086744057e-12 34.13726314 0 0 0 791.0746309 0 0 0 0 0 0 2.133078591e-07 0 0 2.845675321e-06 0 2.131409099e-28 0.001053386743 0 3.019281038e-27 0.0001007874586 0 0 2.003248269e-08 0 0 0 0 0 0 0 0 0 207.3742466 8.167519935e-11 1.728641162e-13 69.78952547 1.351798995e-20 0 0 0 0 0 0 0 3810.102403 6.238411236 248295.3661 0 0 0 0 0 0 1.743542966e-19 0 0 3.201301914e-25 0 4.527633048e-09 0 0 31.07558785 0 8.924053966e-05 9.566825361e-18 0 0 0 0 0 0 0 1.420516964e-10 103021.6994 0 1.460709853e-14 1.059171537e-06 0 9.862051153e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 275081.8698 0 0 0 0 0 8545.539519 2.990974744e-07 3.64387596e-11 0 9.775586705e-08 0 491.9478176 5.616549761e-16 0 0 0.01812999364 3.602344803e-18 0.2748045396 1.109679549e-16 0 0 0 0 179.6668726 0 0 0 0 +0 0 731.5559268 0 0 0 0 0 0 0 0 0 0 3.966259048 0 0 0 0 0 351.4951239 0 0 5.763268668e-09 8.301307362e-35 0 0 3.393496222e-06 3.814597893e-13 0 0 0 8.36172679e-19 6.788168456e-08 0 0 0 0 4568330.483 0 0 101164.9462 0 0 2.285801459e-07 0 8.450103554e-13 0 0 0 0 0 0.0003930784643 0 0 1.077890993e-10 0.0003898572816 2.515120829e-05 0 0 0 0 0 4806.823442 2.194060738e-23 1.749605248e-18 0 0 2.920091312e-11 9.320589773e-12 0 0 1.006375224e-29 0 33.69057976 2791611.165 0.2796115116 0 0 1.761949206e-15 0.0001040165429 275696.2349 0 0 4.270690535e-12 8.159123424e-19 0 3.827192795e-10 1.724645864e-09 0 0 0 0 0 6.192445455e-06 3.516975372 0 0.0006730494241 0 0.08088419397 0 0 0 0 0 0 0 0.003950678335 0 3.235424614e-15 0 1.102711047e-16 0 1.444880509e-14 0 0 0 0 0 4.183933064e-13 8.745497478 0 0 0 0 2.901039941 1.541776131 0 0 0 0 0 0 0 46929.12806 4.143442604e-05 1.715172379e-18 0 0 0 0 0 0.8941630512 9.542742948e-09 0 0.0001817315439 167.2663874 41.05575261 0 0 0 0 4.678114485e-07 0 6.291401377e-23 0 0 2.521058574e-27 4.247580841e-23 0 0 0 0 0 0 0 159.2830481 8.067732654e-24 0.0001459476842 0 901962.0619 2.683654421e-39 0 0 3.395403602 2.203713106e-19 0 10033.20582 0 0 0 2015.102135 0 0 0 2.218610376e-11 2845.545791 8.414517193e-22 0 0.9119281091 0.949093484 0 0 3.28720277e-09 1.897648729e-16 0 0 0 0 882629.6213 94.31359948 0 456.2480306 0 0 2.339191089e-11 0 0 0 0 0 2.759537774e-13 0 0 1.300289323e-06 0.254796724 0 9.644843659e-14 2.434449896e-12 0 0.005162165171 0 8.803480576e-34 3.975386349e-35 0 0 0 0 0 0 0 0 0 72.0154937 0 0 0 177544.4531 0 0 0 0 9.61660981 3.766924297e-19 0 0 0 0 0 0 0 687841.0027 0 0 0 0 5.29169182e-06 0 0 0 0 0 0 0 0 0 0 0.1217482294 0 0 0.327470622 0 0 0 0 0 0 5.142841608e-17 0 0 0 0 1.18755178e-43 0 0 0 0 1.737849961e-08 0 0 0 0 0 0 1780.374551 0 0 0 0 0 0 +6.107605272e-33 0 0 57.27783388 0 0 5.928691056e-11 7.009664418e-15 0 0 0 0 0 5.921082875e-06 0 0 0 206020.274 6.609986943e-24 0 1.263863743e-12 1.118125867e-10 0 0.02422312911 0 0 533.5645447 0.1376531907 0 0 0 0 0 0 0 0 0 2.873739222e-08 1.105708372e-27 0 59962.88682 0 0 0 0 0 0 3.541009181e-13 0 3.305935124e-21 1.034666569e-28 0 0.0001449718656 0 0 112.5600053 0 10.93218158 0 3.736991852e-08 0 0 0 0 294822.2795 0 1.207500327e-17 0 0 0 0 0 8.087200448e-08 0 0 0 0 0 0 5.659310249e-10 0 1.339683754e-17 0 0 6.078345829e-12 0 0 0 0 0 4.917931645e-10 25277.67995 5261820.818 0 4.114644864e-14 0 0 0 0 2660.131536 0 0 0.001124013827 4.717012658e-20 0.00032203663 6.281433843e-24 0 3.401787208e-10 0.6820927229 0.0001705219925 0 0 0 0 0 0 0 0 0 6.058518097e-15 0 0 0 8.572573739e-21 0 0 1.139584318e-29 0 0 0 0.03000448277 1.091321298e-05 6.804979633e-27 0 12.87972063 0 0 0 0 3782.188758 0 171628.6771 128788.4878 7.38142653e-15 0 1.305199624e-13 0 0 0 1.436252694e-26 9.882721035e-28 0 0 1.361223298e-10 4.48800532e-19 0 0 0 0 1.057605822e-13 0 0 0 1.963672988e-09 0 0 0 0 8337.53195 0 0 0 0 95360.71425 0 0 0 0 0.02011052334 0 0 1.995684177e-28 2.851046165e-22 10.87677956 0 0 0 0 7.538880401e-09 1.298224321e-15 2.624164115e-07 4.641306704e-07 1.654766732e-10 3.843657205e-06 0 0 0 1.782932153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 929.1407067 1.59582139e-12 1.197504699e-13 0 0 9.13108813e-13 0 0.00750751345 2.29415136e-20 9.050263559e-18 0 0 3.958108106e-23 0 0 0 1.37987579e-14 879.6328902 0 0 0 2.841094913e-13 1.259639559e-23 0 4.867788583e-06 0 0 7.49780631e-15 0 0 0 0 0 2677.661861 52.36184838 0 0 4.181322784e-05 710.2130987 0 0 0 0.4457970035 0 0 0 9.416263181e-08 0 0 0 0 0 0 6.801049998e-28 0 5.608824767e-17 0.00015977227 0 0 7.0150729e-14 4.6485846e-21 3.638860059e-05 1.284177557e-14 0 0 0 0 0 0 0 0 1.475315743e-30 0 0 1.431796089e-14 0 0 0 0 0 0 0 0 0 0 56.80543921 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1356616872 0 0 0 3.203705601e-29 0 9.83508057e-27 0 0 0 0 0 1.268243124e-21 0 0 0 0 3.572331794e-10 0 0 7.937728806e-12 0 0 0 0 0 1572208.953 19.45966584 0 0 0 0 2.22941189e-18 0 1.000143145e-17 0 0 0.7978509653 0 3.540498317e-05 0.009528526792 0 0 0 11.11825904 0 0 0 0 1.566678114e-16 0 0 0 1.515312773e-14 1153846.477 0 0 0 9.960720102e-13 0.0002865493756 69.83615717 2.022861431e-14 0 0 0 0 2.625865547e-05 5.171084167e-15 0.02523547911 0 0 0 0.1493473961 0.0002653625513 103.7100346 0.008033099084 0 0 0.6682081535 0 28.71772198 0 0 0 0.01003723136 0 0 3.898361733e-10 2.218559291e-22 6.199088396e-14 0 0 0 1.855113002e-11 0 0 2.537255669e-29 0.001573205567 0 0 0 0 0 0 0 1.900983467e-11 4.137433183e-12 0 0 4.599052059e-21 0 0 0 711165.7038 6.109758758 0 0 0 0 0.01555426944 2.173618164e-14 0 0 0 2.159381767e-13 0 0 0 0 0 2.028737593e-14 0 0 0 0 0 0 1.320134126 1.368539938e-07 1.347330175e-42 1.244716298e-07 0.05781062997 2.902331662e-06 0 7.81040445e-09 0 8.014356202e-14 0 6.651322816e-14 0 0 0.03112688779 0 1.369809748e-10 1.031836819e-21 7.086055082e-08 0 0.03600256946 0 0 0 0 123104.5421 0 0 0 0 0 1.83261399e-18 0 0 0 0.03409015635 0 0 0 8553.977792 0 0 0 0 0.04685539529 0 0 0 4.403844397e-05 5.798637124e-05 0 0 0 0 0.005290359036 7.755169619 0 9.16141498e-06 0 0 4.461178817e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.829399612e-06 1.330869305e-30 0 0 0 0 0 0 0.0001285078561 0 5.294110487 0 0 7.566406662e-11 0 9.387318387e-21 0 0 2.174109737e-08 0 0 0 2245.619547 1101.513826 0 0 2.561372416e-08 0 1.064745248e-14 0 0 0 0 0 0 0 0 8281.833516 1.858355973e-16 0 0 0 0 0 0 1.051970628e-16 0 101099.7378 0 0 0 0 0 0 0 0 3.17344904e-15 6.388026798e-05 1.786159258e-12 0 0 3.665250497e-14 0 0 0 0 0 0 +3.313236499e-05 0.00244692173 357366.8466 0 0 0.0008054968197 0 0 0 0 0 0 7.122792146e-18 0 0.132347474 0 0 0 0.9878981663 1.426711354e-27 0 0 9.111861679e-16 0 0 0 0 3.79497893e-27 0 0 0 0 0 0 0 0 63.59856441 0 299374.4195 0 0 3.227383027e-08 0 0 2.769778621e-05 0 0 0 0 0 0 1.185775848e-24 2.232500251e-26 0 0.003843035441 1886.368033 0 379407.811 1.713887688e-05 0 0 0 0 0 7.86522714e-14 0 0.2433475722 0 0 0 0 0 0 0 0 538.8391991 17779.35322 0 0 0 0 0 2010.332838 0 0.0140660013 4.062496937e-10 4.547163256e-18 0.0001526901979 6.300102624e-16 8.562652834e-14 0 0 0 5.125424404e-10 8.080036806e-14 1.548343365e-06 9.651380812e-16 794.8236616 4.376504231 0 0 0 0 2.027920365e-08 0 0 0 0 0 0 0 0 2.018192523e-24 5.676109182e-23 0 0 0 2.598721842e-30 9.399895837e-14 0 0 627095.7357 6.36846216e-26 0 2.466421484e-36 0 0 0 0 0 250.3013354 0 1.691718047e-24 0 0 0 0 0 0 0 0 0 0 0 2.347089799e-29 0 8.775928469e-21 0 0 290734.2299 888540.5035 5.166822722e-16 0 5.733723202e-32 2.672052765e-05 0 23761.08347 0 0 0 0 9163.448955 109.6931889 0.002384640267 2.81012463e-16 4.244207148e-17 1468.499361 0 1.281424733e-08 2.127864528e-21 6.646957607e-08 10201.54796 0 0 1.378712134 0 0 0 5.391750965e-19 2.675501003e-20 1.8580814e-07 0 893857.4705 2869.054394 0.02683024794 1.716805899e-14 4.015982823e-24 0 0 0 0 0 5.235225198e-06 0 0 0.5125707275 5.137110167e-05 0 0.0002608011635 0 0 0 0 2.507133524e-09 337359.2514 7.096140442e-10 0 35322.25371 0 0 0 0 4.706274652e-08 0.05884548565 0 0 0 0 0 0 0 0 0 0 0 8.26421233e-14 0 0 2.67333459 0 0 0 0 0 0 0 0 0 0 24.30279128 2.779466811e-13 1.650280356e-19 12.31556323 0 0 0 0 0 58385.89568 0 0 0 0 0 0 0 0 0 0 52648.14999 0.01664555275 8.858588957e-34 0 0 0 0 0 0 0 3.978280496e-20 0 1.046491263e-24 4.902166317e-05 0 0 0 0 0 0 0 0 0 0 0 0 1.649442127e-08 0 0 0 0 8.800032204e-23 0 0 0 55.80019407 0 0 0 1.61913084e-13 0 +0 0 0 0 0 0 0 0 1.348731956e-10 0 179.9615935 0 0 0 0 0 0.2085641271 0 1.163690186e-12 0 0 7.319934939e-07 0 0 2.399981437e-05 6.79077635e-15 0.2780793156 0 0 510.2185503 0 0 9.406048019e-08 1.157207676e-15 0 0 0.002760742788 5.956387069e-17 2.618976235e-07 2.271826998e-29 0 0 0 2417.708279 0 0 0 3.373540284e-21 0 0 0 3.487521666e-14 0 0 0 0 0 0 0 0 0 2.256880538e-20 0 0 0 0 4.018541871e-15 0 3.245054055e-08 0 0 4.157027385e-10 0 0 0 1.064584935e-10 0.05637844995 0 5.535227133e-07 0 0 0 4.674465459e-21 0 0 0 0 1.543650385 0 1.767369697e-09 0 0 0 0 1.838995254e-17 6.255091e-13 0 0 0 0 1020.818295 0 9.237669735e-07 0 0 3.944469347 0 0.7719043427 0 0.1729197086 0 1.250728074e-05 0 0 2.024102721e-17 2.379227102e-24 7.454131435e-11 0 1.4360456e-12 0 669593.2743 0 0 5.635346598e-34 0 0 0.006024405252 0 0.6187003924 0 0 0 3.683251347e-24 0 1.284579984e-07 3.986854523e-14 0 4.399156717e-14 5.270391598e-20 0 0 0 2.50699002e-14 6190.599144 0 19923.73085 0 0 0.0006594520261 0 0 2.405439141e-33 4.942688534e-10 215.6247317 3.881375982e-12 0 0 1.221259869e-08 0 1.253431662e-08 0 2.203032151e-06 0 75.64411576 8153.168256 0 0 0 0 0 0 2.74049258e-21 0 0 0 0 1.685375413e-15 0 0 0 1.11092641e-06 1.331486623e-17 0 2.56033939e-13 2.163303933e-08 0 0 7.571270456e-14 0 1.138934716e-16 0 0 0 0.0003700552287 0 0 0 0 0 0 0 0 303.6359265 8.448729676e-24 3.817765319e-05 0 0 0 0 0 0 0 4.023287728e-09 0 0 0.000176953089 630.678842 0 0 0 0 0 0 0 0 0 0 0 0 242.0971023 0 0 0 0 0 1369097.137 0 0 3.450252688e-14 0 0 0 0 0 0 0 0 0 33618.85693 74043.15808 6914.303508 1.328806879e-12 9.244711509e-28 0 2.700027389e-08 0 0 8.48920591e-18 0 0 0.002119002165 0 0 1.6039431e-23 0 0 0 0 0 10.32517735 0 0 0 0 0 0 0 822214.2899 0 0 2.37335551e-06 0 0 0 0 0 1.100580969e-08 0 0 0 0 0 1.236122566e-19 23.80611945 0 0 0 0 0 0 +0 0 0 7.943020544e-21 0 0 5.398377954e-05 6806.667686 0 1.188672127e-20 0 3.012673159e-15 1.447498826e-17 0 0 0 4.516820932e-20 1.269748828e-18 0 3.790780304e-06 0 0 0 0 0 2.005409922e-09 0 0 0 0 0 0 0 5.691203261e-08 0 0 1.496338567e-07 0 0 0 0 0 0.0002258947811 0 0 5.057750927e-05 0 0 0 0 0 0 0.4138846937 6.907704178e-26 0 0 0 0 5.782248487e-07 1.149344924e-17 2.155252134e-10 0 0 888.6760524 0.01163847114 0 0 0 0 1.045413222e-26 0 0 0 0 4.331584003e-10 0 0 0 0 0 0.03707287458 0.01425147223 4.119969587e-26 7.618221853e-18 0 0 0 0 0 33128.47427 0 2.817140617e-10 0 24.84412859 0 0 0 7.007404464e-09 0 0 0 0 1.337892699e-14 0.0001986801596 0 34655.61665 8847.881727 0.3311334847 5.143027376e-11 0 0 0 0 2.982512697e-21 0 6.195568328 0.01670002116 8.581218563e-26 0.01903660122 7.008326406e-21 0.0006293154991 0 3.856264061e-11 0 0 3.431429791e-20 0 0 0 745.8883571 0 3148.842005 2.766060048e-21 2.878246028e-05 3.65835048e-11 1.729187417e-30 3.487948846 0.007827287995 0 2.243087866e-05 0 0 7.167173511e-11 0 0 130.1874678 0 1.158883234e-22 0 0 0 3.734659234e-21 0 2.924747883e-12 0 0 0 0 0 0 0 0 0 0 0 1.512762528e-18 0 7.859435042e-09 0 6.334922768e-12 0.005645046661 0 0 0 8.431989071e-15 3078.695817 1547.034844 5.349341377e-06 0 0 0 0 1.430653678e-30 5.342163737e-14 0 0 31.68728348 1.386103307e-11 0 1.520776514 9.836797069e-05 0 1.94770984e-16 5999.703615 2.453528628e-16 0 9.955245804e-14 0 0 0.1425323228 0 0 1.841279114e-06 0 24.52546838 0 0 2.931096435e-11 5.281843121e-08 1.584800547e-07 4.94324669e-18 3.233940115e-07 29.26145709 0 0 0 0.0002724776681 0 0.2744911025 0 0 1388850.945 0 0 0 0 0 0 0 0 0.103528288 602566.3205 0 0 0 2080221.132 0 0 3.470563068e-14 0 3.52706546 0 7.361211023 0 15.33288706 2.27340493e-12 1.495758225e-22 9.665575294 0 0 0 7.233723817e-06 0 0 0 0 9.369262396e-05 0 1.955839736e-15 8.680724829 0 0 0 0 0 0 0 0 0 2.070328435e-14 0 0 6.846384704e-07 0 0 0 0 0 0 0 0 0 0 0 162115.7418 0 0 0 0 0 0 0 0 0 0 0 0 2.150668745 0 0 +0 3.374427846e-23 0 0 0 0 2.34152507e-19 0 0 0 0 0 0.001743457479 0 0 0 0 108887.7742 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.126099522e-19 0 0 3.342040726e-12 1.373129571e-05 0.0003419917923 2.853096321e-15 0 0 4.140693887e-13 1.101547693e-26 0 4.926454958e-13 0 0 0 2.389544125e-10 0 0 26.0089325 0 9.18801727e-19 0.01492249046 0 0 1.071599582e-07 0 146737.2258 0 0 0.01933456646 0 0 0 0 0 1.337331765e-14 0 3.561146356e-33 0 4.174400631e-12 3.780857515e-24 0 1.083909776e-17 0 0 64.82877033 0.002607318024 2.293993647e-25 11.45165425 0.000103394729 0 0 9376.088631 0 9.967903321e-06 0 4.517296577e-17 9.489943539e-20 2.608561047e-09 3.831548296e-12 0 0.0004198736323 0 0 0 0 0 2.011941181e-18 0.005025384108 26849.296 0 0 3.067619805e-17 0 0 0 0 0 0 0 0 0 8.989919295e-22 0 0 0.0004916772473 4.496413776e-30 0 7.00281386e-12 0.002267267397 774.4440834 3044.987507 0 0.0004609029098 1.016024757e-26 0 0 0 0 0 654.8573866 7.511483301e-12 0.0009419617107 6.007143554e-16 3.292736403e-23 0 2.698286377e-28 1.402142329e-10 2.572362141e-12 0 0 6.531454943e-13 0 0 31.51314203 0 0 0 4.411415169e-25 1.201807642e-28 7.498500903e-15 0 0 0 9.90049302e-13 0 0.5948913705 1.05120093e-14 1.194229334e-13 1.395893441e-07 0 7.990321552e-11 249581.9354 0 0 0 0 0 0 0 0 0 0 3.789121632e-28 0 1.013701094e-39 0 2.738907042 0 0 363521.4306 0 0 0 3.541005752e-13 7.98961509e-11 1.360543655e-14 0.005932024764 0 0 0 0 0 0 0 0 0 0.02538636839 3.433963888e-11 0 0 0 0 0 0 57.81879489 0 0 2.162097249e-06 1.493553333 0 0 0 1.207364959e-08 0 0 1.923403927e-10 0 2.809154707 0 31044.49789 2.199939182e-16 2.374271898e-39 0 0 0 8628.795802 0 0.3852712345 1.440729937e-10 0 0 0 0 0 0 0 4.731853631e-10 0 0 0 0.005172249661 0 3.02944061e-21 0 0 0 0.213813182 0 0 5.497217544e-10 0 0 1.311972825e-26 0 0 81724.63566 0 0 0 0 0 0 0 0 0 0 0 410463.7461 0 0 0 0 0 0 0 0 0 0 2.655176565e-11 0 0 0 0 0.001907050226 4.260287304 0 0.01852722587 0 0 0 6.192033441e-14 +0 0 0 0 0 0 7.482535377e-07 0 2.27879019e-09 0 0 0 0 0 0 1.495369361e-18 0 1899994.651 1.050066393e-08 0 0 4.578071969e-08 0 0 0 0 1.797936915e-16 0 0 0 0 0 0.0003153516833 0 0 0 0 0 0 724210.4816 0 0.3701693664 0 0 2607287.621 1.528703992e-08 152273.6892 0 0 0 1.378256245e-22 6.441836827e-08 0 252608.7338 0 0 0 4576835.959 3.787585555e-18 0 14.91750618 0 0 0 1.301755158e-13 0 0 0 0 0.2505556601 27.11154394 546395.8883 0 2.065195227e-23 3.103617872e-08 0 1.775557468e-21 0 0 1.284983551e-13 0 0 0 0.002739017799 0 0 0 5.769566784e-10 0 1.907436336e-14 0 3.826309537e-09 4.559466977e-10 0 0.002180957584 0 0 0.09371657941 0 0 36656.34323 0 2.314076266e-14 0 0 1.907255432e-28 4.738452423e-05 3.034316216e-20 0 0 0 0 0 6.705731559e-09 0 2.12552325e-33 0 0 0 0 0 0 2.363812618 3.048833117e-12 0 0 0 0 0 7.892603037e-22 0 0 0 0.01022785231 1.148458106e-11 1.227343357e-16 1064.74089 0 0 0 0 0 98530.50448 0 0 4.378300452e-10 0 1.888386418e-05 5.815394596e-05 0 0 0 0 0 1.351298078e-05 0.0006479662228 0 0 0 0 0 0 4.833924964e-15 1.013203579e-08 0 0 0 0.0004482558256 0 3.254988822e-31 0.0003361218651 0 0.003240365974 4636.935813 5.409405503e-12 0 0 0 0 3.996614939e-15 0 0 0 0 0 3.301800912e-27 0 4.534455224e-06 0 2.609885427e-22 581.3544274 0 0 0 0.0001348748966 0 18.23769355 0 1.145453935e-22 0 0 0 2.510676629e-15 0 0 0 0 0 0 0 0 0 0 0.002155222134 1.77124066 0 0 0 0 0 42700.03803 98.93378227 6.316545518e-06 0 2.428801375e-06 0 0 2.786073665e-11 0 0 0 0 0 0 0 0 0 0 0 1.081654704e-22 0 0 3.190814945e-12 0.001925489116 0 1.381526429e-08 22.89767206 0 0 0 0 0 0 171790.9081 0.000678309615 0 0 0 0 4.593775107e-13 0 0 0 0 0 0 0 0 147731.2048 3.02821112e-19 0 0 0 0 0 0 0 0 0 0 1.201165721e-37 0 2.371367947e-26 0 0 0 1.866164568e-21 2.191235757e-12 0 0 0 0 0 0 0 0.1195028553 0 0 1.567227308e-15 0 +0 0 0 89.63141817 0 3.767471902 5.590790389e-12 0 9.558450865e-09 0.000124078669 0 0 0 0 8.613469677e-08 4.13250836e-27 0 8.636376108 0 0 0 0 0 0 0 9.949475581e-14 7.709844818e-21 0 3.255129658e-17 0 8.911598805e-11 0 0 0 0 0 71.30539636 0 4.353209617e-11 0 0 0.006134451502 0 0 14446.52288 0 0 16.54830341 0 0 0 0 0 0 0 0 0 0 0 0 9.014405767e-08 0 0 9.657085294e-12 2.813109728e-05 0 4.141237332e-06 0 3.732022302 13.19686014 0 0 0 0 0 0 0 2.595365649e-08 1.154025105e-09 0 0 0 0 2.800611735e-19 0 4.050057639e-26 0 0 0 0 1.324066515e-21 3.693578846e-05 0.03987510514 0 1.101559432 8.136209099e-23 0 582835.4135 0 5.939343812e-28 0.2337858585 610610.2825 0 0 0 7.830565402e-27 2.159896717e-22 1.930386326e-10 0 0 0 0 2.521835627e-18 1.40306468e-15 0 0.0009694616751 444.6046125 0 0.005098580084 0 0 0 0 0 9.313339063e-33 0 0 2.63379114e-43 0 0 0 0 0.4299836061 1.763853278e-08 9.391258758e-17 2.119229265e-19 2.160172558e-25 5.871163394e-09 0.008653063602 0 0 2.451986737e-24 0 3.176372778 2.165924497e-26 0 1.63172703e-23 0 0 0 5.03700276e-27 5.45721313e-15 0 0 0 1.112507753e-31 0 0 0 0 1431252.298 0.01589377642 0 0 6.863470731e-13 0 0 7.647456413e-15 2.142381868e-16 0 0 0 0 2.088333305e-16 1.945318853e-12 6.245861538e-09 0 0 0 0 6.685100461e-18 0 0 0 0 0.0001009664413 0 0 0 0 0 0 9.075045297e-07 0 0 2.194400946e-07 0 0 0 0 0 0.01977117554 0 0 1.289267194 2.573663615e-10 139443.6817 0 0 0 0.02572096185 0 0 0 0 0 0 0 0 12638.31304 404437.9598 1.33063467e-28 0 4.881249092e-15 2.341697524e-07 4.449636239e-23 0 7.723076532e-25 0 0 0 7.250037607e-11 0 0 0 2.694386758e-13 59191.28184 0.0002339676876 0 0 0.5315615184 0 0 0 0 0 0 0 692925.6764 0 0 2.70401005e-14 0 0 0 0 0.0002108993641 0.0006179775973 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.97193347e-06 3.511618431e-10 0 4.500581568e-11 0 0 0 4.933555965e-09 0 0 0 0 0 0 +0 86.61342722 0 0 6298.429194 0 0 2.258360409e-22 0 0 6.865957042e-34 0 0 2.115592392e-07 446.2268252 0 0 0.05352979057 0.01005437951 0 0 0 0 0 0 0 0 0 0 4.199108165e-10 2.122787252e-05 0 0 0 0 2.547776233e-13 7.78631368e-08 1.821088685e-11 2.893212883e-10 4.776330277e-09 0 0 0 1.249149101e-07 0 0 0 6.871869919e-22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1491.111142 0 0 4.841096135e-15 5648.135369 0 0 1.880102628e-07 0 0 0 227972.0008 4178539.65 45.26937645 0 0 3.15971968e-18 0 0 0 0 0 0 5.384279336e-12 4.636939905e-08 0 0 0.000195746854 0 1.998498919e-25 0 1.874773792e-14 0 5.946145735e-15 2.490862652e-09 0 0 7.224336943e-34 5.72905427e-06 0 3.639924554e-05 1.753506377e-17 0 0 0 0.0224283544 2.931920276e-38 0.00230841883 0 0 0 0 5.862723264e-14 0 2.248879677e-23 1.688788753e-37 0 0 2.975909856e-09 0 8.378442507e-07 0 163.5409026 0 2.146811094e-22 0 2.016838539e-13 5.701438407e-27 0 2.154258381e-18 5.155805479e-09 0.0001007345613 0 5.754529075e-05 0 2.797385884e-10 4.205171272e-15 1.266053307e-10 0 0 0 1.033415695e-07 634.0465309 0 0 3.849248909 0 0 216.0868515 0 0 0 10.51936446 4.601486649e-11 0 0 1.699588187e-07 0 460.8299291 0 1355752.055 0 0 0 1.050896899e-20 0 0.0002418865417 0.00076308047 0 3.165552733e-30 0 0 1.685578073 0 0 0 0.02600874549 0 0 146.3673565 0 6.394695186e-13 0 4.944486855e-11 0 0 0 0 0 0 0.0001126189327 0 0 0 1.418625261e-18 0.01655565448 7.548919575e-15 0 0 9.918130314e-11 0 0 0 0 0 0 110665.473 0 0 0 0 8.549715828 0 0 0 3.633321636e-08 0 4.590702811e-12 0 2.379036085e-06 185.0775161 0 0 0 0 3.836277708e-17 0 10883.63237 101.466424 0 0 0 0 637162.2171 0 0 0 0 0 0 0 0 3.735450371e-20 0 1.400417966e-15 0 341.5204781 0 0 3.350702842e-27 0 0 0 105276.5639 0 0 0 1.055971715e-26 0 0 0 2.07132138e-10 0 0 0 42.12797011 0 7.368204434e-13 0 0 0 5.53122144 0 0 0 0 0 0 0 1.596529379e-11 0 0 4.61666416e-18 0 0 0 0 0 0 1.85267252e-16 0 1.594504493e-05 1.698577586e-24 0 0 0 0 +127467.8656 6.689289484e-10 0 9.542759294e-11 0 0 0 0 0 0 1.012884623e-06 0 1.029330255e-11 0 1.356649428e-31 0 0.003648062558 0 0 5.360174388e-19 0 368.5034148 0 0 0 0 3.248125818e-23 0.0891407855 0 0 0 0 2.275219407e-32 0 0 0.0001407916752 0 0 0 0 73522.4864 0 1.081670626e-19 0 0 8.501748652 0 49283.01828 0 0 7.035450724e-27 0 0 3529.230975 0 0 0 0 0 1.523170868e-10 0 0 0 3.982422386e-11 0 0 0 0 0 0 0 1.008248825e-16 0 686513.9984 0.005336659579 2.064102505e-10 0 0.5592076134 0 0 1.71076387e-15 0 0 0 0 0 4766.455428 0 0 0 0.0005028618945 6.032391642e-09 0 32.65356319 0 0 0 1.930815449e-10 0 0 0.004914032607 2.189741841e-08 0 2.591834737 0 0 0 1.209128756e-25 0 0 4.987304205e-07 0 3.888388381e-05 0 2.604390089e-06 1.927546645e-07 0 17.09152329 7.489358689e-18 3.719435254e-10 0 4.776351099e-10 0.000823167143 0 2.958848946e-22 0 0 0 7.842942081e-14 0 0 6.716092667e-06 0 1.180306613e-12 3.369113592e-28 4.738298023e-24 0 0 3.944898147e-25 0 0 0 4.846097415e-29 90.39023235 0 0 0 0 0 0 1.526588992e-12 0 0 0 0 1.713517121e-23 0 7.469190169e-09 0 0 1.545443902e-06 3.032201683e-06 0 0 0 0 0 25.41928881 0 0 5.31646877e-09 414363.3433 0 0 0 0 0 0 0 6.263951542e-08 1.250284481e-25 1.428774666e-23 0 1.419485213e-14 0 0 0 0 0 0 0 0 0 0 0 3.939724999e-25 0 0 0 1.341025263e-13 0 67013.75547 1013236.16 0 1.786496974e-10 0 2.382399244e-07 2.325801405e-18 1.618534837e-30 719.3463087 2.387961403e-13 0 0 0 0 3.822502086e-27 1.742355984e-08 0 0 0 0 0 0 0 0 0 0 0 1.718869343e-22 0.001410385158 8.455481701e-06 3.772263188e-22 3.519873633e-31 0 0.0002391587876 506354.6698 0 0 2.387564152e-11 1.395674206e-17 608490.7416 0 0 0 0 0 3.598627894 2.793991084e-09 2.930006719e-16 0 8.304539563e-10 4.284915745 0 1.924450333e-05 1.610154728e-10 0 0 0 0 0 0 4.638203171e-18 1.933240784e-17 0 0 0 0 1.001363618 0 0 0 0 0 0 0 4.340201734e-24 0 0 0 0 0 5.675284043e-16 0 0 0 0 8.667232897e-25 0 0 0 0 0 7.519311271e-09 3.384681281e-22 0 0 0 0 0 0 +0 0 0 0 0 0 0 830336.9051 0 0 0 0 0 3.345965961e-09 0 0 0 2.211811129e-36 0 0 0 0 0 0 0 1.148471412e-10 0 0 0 0 2.614010586e-14 1.505220502e-13 0 198251.2979 0 0 0 779.4180207 1.556342922e-22 5.96800078e-16 0 8.647030425e-24 0 0 0 0 0 0 8.222987667e-10 0 0 0 0 0 0 0 4.603097105e-11 0 0 0 0 0 0 0 0 0.02865413135 0 0 0 0 0 0 3.613237577e-16 0.002346694056 0 0 0 0 0 1.194131559e-19 0 28295.75067 0 0 88.76579738 0 3.650657478e-08 0 0 2.410534262e-16 0 0 0 0 0 0 0 7.784673578e-09 8.005811183e-18 0 5.205258382e-18 0 0 0 0 0.0003820132729 0 0 0 0 0 0 7.971284232e-18 0 0 0 0 2.636016711 0 0 0 1.491779965e-07 0 2.676428697e-15 0 27.98308847 0 0 0 0 0 0 0 0 612626.9465 0 0 4.251198048e-24 0 0 0 0 0 5.308017502e-26 1.021928174e-24 0 6.126697648 4.039366815e-08 0.002399547027 0 0 0 0 0 0 0 6.247126255e-15 129.0944675 0 1.462618207 1.190256309e-22 0 0 46932.85667 0 0 0 0 0 0.2273505964 0 2.153158311e-20 0 0.2963924689 0 299.4793727 0 0 0 0 0 0 0 0 0 0 3.557680887e-21 0 0 4.987790022e-11 2.111046557e-08 0 0 7.883016249e-35 0.008503414479 0 0 6.324246028e-08 0 0 0 8.819372608e-14 0 1.549209611e-28 0 1.516427562e-11 0 0 0.007501963668 0.004747860614 0 0 0 0 0 247.4364209 0 0 0 0 873075.979 0 0 0 0 2.849676989e-05 0 0 0 0 0 0 0 0 0 0 0 0 7822.924769 0 0 0 0 0 0 3.115557831e-17 0 0 0 0 0 0 0 5.162797129e-25 7.247064829e-26 0 0 3.623986845e-11 2.08307258e-05 0 3.055635268e-14 0 0 0 0 0 0 0 0 0 0 118.1055114 0 1.973985972e-10 5.037547078e-14 0 1.061581817e-15 0 0 0 0 0 0 0 0 1.015612235e-27 0 0 0 0 0 0 0 0 0 0 0 0 0 8.747298036e-17 +0 2.895331871e-13 0 0 0 0 0 0 0 0 0 867.4391353 0 0 0.2453541233 0 0 133.5641332 0 0 0.02187442704 0 0 0 0.00593261757 0 0 0 1.104016077e-08 0.001114698701 0 0 0.005314006078 0 0 0 1.982287335e-06 0 0 0 0 0 8.319978079e-15 0 0 1.173459931e-07 0 0 49658.18441 0 0 2.30746623e-11 0 0 5.887173017e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.558630919e-24 0 1.627662179e-06 0 0 0.02456401538 0 0 880670.1435 0 0 0 0 0.959325027 0 5.319499855e-24 0 0 0 0 0 2072.395344 0.0001967026414 0 0 5.294991535e-14 0 5.578079182e-05 0 0 0 0 6.243661534e-19 0 0 0 2.682190558e-16 0 2.085828711e-33 5.335357267e-05 16306.6675 0 0 1.169963548e-05 4.894867177 0 2.374518849e-25 0 0 144468.9841 1467.097714 1.500028521e-17 0 0 1.01121051 0 0 0 0 0.02131160521 0 0 0.02216307195 0 0 0.1450436824 0 231.7070411 0 0 1.08053228e-15 0 5.079998505e-10 3.693883591e-13 0.0006447330646 0 0 1.663865665e-06 8.442466321e-42 0 0 0 256760.6287 1.261486268e-17 2578752.41 1.704190235e-29 0 0 0 0.3229311161 0 0.4909826874 0 0 397.3200269 0 0 0 1.609482115e-10 0 0 3.955394142e-11 9.377994114e-12 0 2.038090362e-05 0 1.532235984 0 0 3.329801956e-26 0.0004307576063 0.0003725745712 0.001191067964 5.966108453e-07 1.860879651e-12 0 0 0 0 0 224.6079283 0 0 5.729467567e-28 4.020408431e-18 0 0 0 0 0 1.360540488e-14 0 0.1476788151 1.496271517e-21 0 0 0 0 1.636801585e-13 0 2.321020351e-20 2.414150039e-13 4.434254028e-11 0 0 0 0 0 0 0 0 0 0 1.014093898e-22 0 0 0 8.76702612e-06 0 0 0 126.904974 0 0 8.129336307e-15 0 1.335319689e-05 1.860718563e-38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.408897665e-20 0 0 0 0 0 0 439374.4297 6.912192892e-18 5.029864623e-08 0 0.01025028679 0 0 0 0 0 0 246567.0229 0 0 0 0 0 0 493945.979 0 0 0 2.211205819e-27 0 0 0 0.001122429316 0 0 0 0 0.172567366 0 0 1.19227759e-14 0 0 0 9696759.897 0 0 0 +0 0 0 0 0 0 0 0 1.583271373 516717.2843 2021.528131 0 0 0 0 0 1.190639435e-14 0 0 0 1.041389684e-06 0 0 0 1.969653882e-13 0 0 676332.7882 6.216286621e-07 0 8.765272158e-06 0.0002764121887 0 0 0 0 3.295221582e-07 0 0 0 0.0004944236249 15689.39401 0 0 0.0002993800945 0 0 7.739577794e-13 2.289755033e-33 0 0 3.515790562 0 0 0 0 0 6.56955358e-11 0 0 0 7.985864801e-08 0 0 38.47573749 0 0 0.0001213772003 0 0 0 0 0 0 0 1.138077726e-09 9.863647897e-16 0 0 0.01775853141 9.805119025e-17 0 0 0 0 0 0 0 0 0 0 3670.538995 3.560730294e-08 1.41882683e-20 0 53.03711964 3.655451258e-11 0 2398536.49 6.10491066e-15 0 0 0 0 0 3.894005252e-09 8.974123036e-27 1.102732644 0 0.5008346835 0 0 0 0 0 0 6.437060336e-14 0.01745744828 131.3278234 0 0 0.03115234333 9.926985512e-06 2.042809195e-09 0 566.142364 0 0 0 0 1.034835894e-24 0 7.98017801 0 0 0 0 0.001307588942 1.312913412e-15 0 121.5945574 0 1.74929186e-18 8805.747065 0 0 2.735634077e-11 0.002272784605 0 0 0 0 3.634458448e-15 4.005868056e-31 0 0 7.98293565e-21 6.412922969e-05 0.0003756422071 1.446540779e-10 0 0 0 0 0 0 0 1.952330082e-08 0 0 0 1.616270839e-07 1.152633135e-23 1.483477133e-25 1.567245492e-10 0 0 4.732262903e-21 0.06122286778 2.985010368e-09 0 0 0 0 0 1.302924167e-09 5.195725585e-06 0 0 0 0 1584249.777 9.886038319e-23 2.435945154e-06 0 0 0 0 0 1.897828854e-15 0 0 1.391842129e-12 0.8064073202 101227.7354 0 0 0 120.976901 0 1.204102687e-15 0 54.86458675 0 0 0 0 0 0 0 0 0 0 0 0 7.228656206e-11 0 6450.805787 0 0 0 1.302078024e-16 0 0 4.467779125e-20 0 0 1.777626653e-11 0 0 0 0 0 0 716.3376769 0 0 0 0.0004691064732 0 0 0 0 4.692362367e-14 0 0.7419037079 1.469073608e-06 2.468877607e-15 0 3.101302978e-17 0 0 0 0 0 0 0 0 0 0 0 0 5.242992964e-17 0 0 0 0 0 0 0 0 2.93120041e-10 0 4.606999497e-05 0 0 1.647416407e-17 0 0 0 0 92197.87106 3.677393196 0 1.462612831e-16 0 0 0 0.09696862197 0 +0 0.002248984822 0 0 8.458097078e-15 0 0 0.2202203327 0 271652.9006 5.758676775e-36 2.930510209e-14 0 6.065613195e-08 6.212233639e-08 0 0 0 0 0 0 1.37930495e-23 1.760085145e-06 0 0 0 2.396490615e-22 1.100877482e-28 0 0 0 0 0 0 0 0 0 1.040774568e-10 0 0 0 0 0 4.601871239e-06 5.072231178e-17 0 0 0 0 0 8.43907145e-13 6.078287987e-11 0 1462.650645 455.904993 0 1.188530019e-17 0 0 0 0 0 0 0 0 7.215108014e-09 0 0 0 0 6.356744987e-30 0 38.62940476 0 0 6.870609476e-17 0 0 0 0 0 0 0 9.641710793e-10 3.28502436e-06 269935.9432 0 0 3.717967342e-09 0 0 1.931441892 0 3.147161047e-13 0 0 5.323590667e-14 0 833.9106722 0 0 0.2932360415 4.898214794e-08 0 0 0 478.487434 6.287685868e-08 1.137055618e-16 4.391007131e-06 0 535749.4702 0 0 0 1.604347987e-10 1.854104079e-08 1.760004398e-18 6.455175659e-32 0 2.418255592e-15 1.240797777e-26 273.91655 0 0 0 2.322830726e-27 0.3121792688 0 0.0004615054595 2.68104976e-29 0 0 0 3.000933044e-31 1.356103672e-07 0 0.8449491377 0 7.134576869e-26 0.001034927114 6.912027481e-08 8.001615419e-19 0 0 1.94622259e-36 3.110526273e-07 0 6.629616527e-14 0 0.07106684665 0 0 0 5.369430463e-05 0.3818483902 0 2.206933453e-29 0 0 2.508378807e-13 0 3.961226331e-19 0 0 0 0 0 0 0 2.012327063e-20 1.627698123 0 0.0980825006 0 0 0 0 1.023499301e-24 0 0 6.604621667e-05 0 0 0 0.0001736760165 0 0 1.292901413e-12 0 0 5.298280371e-06 0 0 0 2.886191568e-09 4.159203149e-14 0 776.0307638 3.258300415e-13 1033501.288 2.794174349e-24 0 0 3.644838591e-20 1.326753909e-25 0 19336.0576 0 1.391506805e-05 0 0 0 0 0 0 0 0 0 0.0004211014837 0 0 1.254836945 0 0 0 0 0 0 1.489894573e-22 0 0 0 0 26.37533578 0 0 2.602237816e-15 0 3.875545616e-22 0 0 0 6.095683997e-06 0 0 8.140959018e-08 0 0 0 0 2.51860882e-07 0 0 1.525147584e-09 0 0 3.976758967e-09 0 0 0 0 0 0 50431.83761 0 0 0 0 0 6.549824188e-10 0 0 7.739968009e-16 0 0 0 0 0 0 0 0 0 0.02830300638 0 0 0 0 12827.49809 178.1613866 0 1.3172009e-13 0 0 0.1831290974 0 0 0 0 0 +14.24567186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.079585207e-13 0 0 0 0 0 0 0 0 0 0.1582967685 1.871249586e-21 0 0 0.0001648747689 6.890867394e-27 0 0 0 4.382760671e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.491495209e-07 0 0 0 0 51.0527803 2.256651515e-21 0 5.037467567e-15 0 0 0 2.767744879e-05 8.585185575e-07 3.004791234e-10 0 0.0002588173701 0 0 0 0 0 0 0 0 6163.757695 0 0 8.40605607e-16 2.066740202e-17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.284673531e-09 0 0 0 0.2506491179 0 0 0 0 2.441689275e-09 0 0 0 129.2694183 0.0003184914522 0 0 0 0 7192.275328 0.008154213359 0 8.721247474 0 6.358105552e-17 0.000700797065 5.36371897e-14 0 474.0461629 0 2.382389638e-17 1.346855095e-13 4.220792801e-15 0 0 0 0 225.0223182 0 0 1.458265078e-05 0 0 3.874363987 0 0 4.805230894e-23 4.723677949e-11 0 9.94656983e-08 2.99352485e-06 363.5666798 1573096.535 0 0 0 0 0 4.915083402e-05 0 267229.6924 0.0003901519064 0 0 11.93442428 1024506.898 0 3.943736209e-08 0 333.5973248 1999872.988 0 0 0.007398458612 0 5.663895319e-19 0 1.076197551e-06 0 2.769972219e-10 0.1034562519 2.318482776e-21 0 0 0 0 1.486453515e-06 0 0 0 0 1.113307395e-12 1.531539343e-18 0 0 0 0 0 0 144461.4019 7.527759026e-27 3.87770289e-05 0 1.342322963e-05 0.4707695839 0 0 1.642634475e-14 1.970313226e-14 0 0 624932.0736 0.002935835848 0 92.84796132 0 0.004395517305 0 0 5.35862612e-11 0 5469.688787 0 0 0 0 0 0 0 3.449855094e-30 7.947505881e-05 4.381479207e-12 0 0 0 0 0 0 40078.51747 0 0 0 0 0 2.327660992e-06 8.668277319 0 0 0 1.651418947e-12 7.140680675e-12 0.5423957112 0 0 0 0 0 129.4865155 0 0 0 40868.74949 0 0 0 0 0.01607083267 0 6.239459442e-29 0 0 0 1.698286077 0 2.013389649 0 0 0 1.408608294e-11 2.019129017e-30 0 3.545327464e-17 0 0 0 0 0 0 0 0 0 0 1.628907884e-09 0 0 +0 616.8884333 912462.1384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.203091343e-13 0 0 0 0 0 0 0.002708871823 0 0 4.674505469e-05 9.137591334e-19 0 0 0 0 0 0 0 0 0 0 4.355996495e-05 0 0 0 0 303.9439214 0 0 10617.68378 8.118860307e-38 0 0 3394.722297 2.972018741e-15 0 2.620077945e-13 0 0 3.088384683e-07 0 1.215292517 0 1.156105774e-22 0 0 0 0 0 0 0 0 5.04930971e-22 0 0 0 3.468976283e-12 0 0 0 0 0 0 0 181201.4133 0 0 0 7.44157844e-15 0 0 0 0 0 0 9.668894627e-27 2.968894435e-11 0 0 369890.9717 0 0 41.288902 0 10.33614754 0 0 0 5.705982782e-08 0 0.001156155616 0 0 1.251536842e-08 0 0 0 0 1.503312467e-08 2.105848914e-28 5.993205127e-08 0 0 3.315511618e-28 0 0 0 0 5.534748026e-07 0 1.566972765e-26 0 0 0 0 0.0001972020545 0 0 0 7.007882111e-05 0 2.570931129e-20 0 0 1.176853176e-06 0 2.771045297e-08 2.021445184e-09 0 2.545625396e-20 5.067597438e-25 15.29988377 4.605548087e-30 0 1.952649351 1.203364855e-22 0 4.686939544e-05 0 0 3.153310498 2.022066549e-05 0 3.92830034e-18 0 0 0 0 8.023208837e-18 0 4.873762237e-05 3.199351132e-12 0 0 0 0 0 0 0 0 0 0 44933.8598 0 0 0 0 3.917424391e-26 0 0 0 0 0 0 0 0 242.3023483 2.686855068e-25 0 0.0008081972753 0 0 0 0 0 0 0 0 0 0.002580206084 0 0 3402928.664 0 0 0 0 0 5.426915779e-25 7.766393915e-07 1.64298227e-16 0 0 0 0 0 0 7.065270607e-05 0 0 0 0 0 0.0105095911 0 0 1.40971133e-09 0 0 0 0 2.200782614e-29 0 0 3.103486195e-09 6.133273275e-15 0 0 0 0 0 0 0 0 1.39302115e-15 142.5212332 0 11.16700693 0 0 0 0 0 0 1.926737334e-05 0 0 0 0 0 0 1.656400579e-17 0 0 0 0 1.664260402e-06 0 0 0 0 0 0 0 3.682379419e-27 0 0 0 0 1.222041438e-25 0 0 0 0 0 7.367992298e-07 0 0 0 +0 0 0 0 727246.0325 4.957827105e-33 0 0 0 0 0 0 0 0 26.5940051 0 5.225647469e-27 0 0 0 0 0 0 1.230463019e-30 0 3.922699685e-34 0 0 0 0 0 0 3.63745069e-08 0 0 1.369621838e-12 0 0 0 0 0 657011.4098 1.05737152e-05 0 0 0 0 0 2.268811897e-17 0 0 0 0 0 0 1.348351968e-07 3.101811899e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 274.5510947 0 0 0 0 1.096440342e-17 0 0 0 0 0 0 0 0.0001380751768 0 0 2.087788962 0 1.092972817e-18 0 0 0 0 0 0 8.635646348e-11 125717.5259 0 0 1.345709172e-19 0 0 0 0 0 1.45098265 0 0 0 0 3.032079722e-12 0 0 7.446167531e-14 0 3.850160794e-13 0 0.06231751962 3.128674246e-15 5.31598877e-10 2.562153352e-09 0 0 0 2.848301551e-10 0 0 0 0.0001685361908 0 0 1.389914546e-06 4.387247922e-09 0 1.970388151e-17 2434.194939 0 0 1.989072429e-20 1.888018414e-07 0 0 0 0.002610244319 0 0 3.726415505e-18 0 0.0002053602838 0 9.115704448e-07 9.864472508e-17 0 5.166100407e-32 1.110469901e-05 1.197443786e-09 0 0 0 4114.382612 4.03690356e-09 1.357414764 0 985.8450587 0.2216084169 1.341664397e-22 0 0 0 2.079143531e-05 0 0 0 115129.7001 0 2.157243285e-05 5.276218046e-09 5.095301673e-29 0 0 0 1.898026616e-20 0 0 1.239696464e-29 8.433358162e-05 0 2.967888949e-16 0 0 0 337750.3245 0 0 0 0 0 0 0 0 8.637072077e-09 2.284141197e-29 0 0 0.07145045601 0 0 7.492444159e-14 0 0 2.688819457e-28 0 5.593277949e-15 0 0.01661379091 0 0 0 0 0 0 0 0 0 1.831981812e-20 0 38.1297497 0 0 0 9.898215082e-05 0 1.886627814e-24 0 3.10908143e-23 0 0 0 0 0 4072.585024 0 0 5.565080621e-40 0 0 0 7.472253765e-26 1.040118225e-15 0 0 0 2.797444284e-10 0 0.09716494671 3042.887936 0 0 0 5.055238446e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2078513276 0 0 0 2.711215868e-06 0 3.503787478e-15 0 0 0 0 0 0 0 0 23.87144091 4.830915613e-21 5.679388826e-20 0 0 0 3.579005872e-17 0 0 0 +0 0 0 0 0 2.060000597e-13 0 0 8.175944916e-11 0 0 0 0 0 0.6468864737 0 0 0 0 0.04213255026 0 0 0 0 7.299029881e-05 0 0 0 0 0 0 0 0 695.1765371 0 0 0 7.162861e-22 0 3.798433012e-27 0 0 0 0 2.853874537e-16 0 0 4.657290095e-05 0 0 0 14226.61685 0 0 2.39317375e-31 0 0 0 0 0 0 2.586649435e-12 6.150625802e-23 3.709296089e-13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.822590415e-10 0 0 3.499930289 0.0006605250224 0 1.93269764e-09 0 0 0 1.316318535e-13 0 5.47369429e-28 0 0 1.107349594e-08 0.2066694345 0 0 0 0 2.404738373e-25 0 4699.424279 0 0 0 0 0 0.0007097501908 0 7.166461158e-11 0 0 16.30094177 6.150159818e-26 10408.47091 0 0 0 7284.233033 5.065092467e-28 0 0 1.985775138e-07 0.5423253153 0 0 0 0 0 11715.87825 0.03213725145 3.556547417e-16 0 0 3.392872971e-14 0 0 0 0 0.03611808166 0.005684269135 6.260163429e-21 0 0 1.437484065e-05 0 9.267352053e-19 8.398340602e-20 0 0 0.0004903221254 0.001981086324 1.828382162e-13 0 101.4444826 0 1.433166047e-24 0 0 0 0 0 0.0001461657316 1.840156581e-22 0 0 46710.60408 0 0 0 5052.729707 0.1843753413 0.0004781659389 0.1355296307 9.788111793e-14 1.751543251e-06 7837.524365 0 9.3500336e-13 0 1.71320937e-10 399037.4705 0 0 0 0 2.125678499e-08 0 0 0 1.186300867e-27 3.104105662e-27 0 0 5.128741341e-14 0 0 0 0 0 0 1.775767159e-14 0 0 0 0 1.854181531e-05 0 2.500765624 0 0 0 2595504.115 0 0 0 1.414457741e-06 0 0 0 0 1.578208876e-19 0.004073947214 0 0 0 0 4.833513141e-11 0 0 0 0 0.003081219917 2.137443224e-06 0 0 0 1.434651553 0 3.59373941e-19 0 171847.632 86.60643106 0 0 0.0002735921914 0 6.291094582e-08 0 0 0 0 0 0 0 0 0 3.521296418e-07 0 0 0 3.070615631e-17 2.503297889e-22 0 0 0 0 0 0 0 0 11.40574984 0 0 5.947117154e-27 0 0 0 0 0 0 5.958525018e-05 0 1.759068215e-09 0 1.372559439e-14 0 0 0 0 0 0 1.051823635e-10 0 0 5.583547542e-12 0 644.14069 0 0 +0 0 0 0 0 0 0 0 0 2.624356164e-17 0 0 0 3.825980061e-21 0 0 3.645742346e-06 1.936874672e-16 17.4239689 0 0 0 0 0 0 4.185264419e-25 0 0 0 0 3.574253081e-10 1.7728091e-09 0 0 0 0 2.609482164e-18 1.412439274e-12 0 0 0 0 839173.9733 0 6.95234872e-44 0 5.29060289e-08 0.0001909882669 0 13309.29369 0 0 0 0 0 0 0 0 0 4.643738386e-31 0 0 0 0 0 6.298103856e-28 0 1588.145142 0 0 0 0 0 1.2765577 0 0 0 0 0 0 0 0 5.55352367e-07 0 9.695048488e-17 0 0 0 0 3.08819023e-38 6.235486494e-10 2.684130895e-12 1.469685635e-11 0 0.05018631131 0 0 7.691532787e-16 0 0 0 0 8.528217255e-09 6.21437308e-12 0 4.64425013e-08 0 0 0 1.052159704 0 0 1.921609933e-29 0 0 1.051813818e-08 4.146631075e-34 0 0 675924.3682 0 0 0 0 3.707983052e-16 0 2.451721226 0 0 0 0 3.117222913e-14 3.941975834e-12 5.756177728e-25 0 53307.44783 0 0 0 0 0 1.738434338e-08 5.53866831e-14 0 0.02132392086 3.27755722e-08 0 3.301042489e-18 2.357764035e-28 3.497860956e-20 4.816008142e-14 14.4921909 5.114811181e-05 0.02889670959 0 0 485576.4311 0 1.595898455e-12 0.002660697502 0 0.4263174818 0 0 0 0 1.858025553e-14 0 1.060236757e-29 0 0 0 0.8748067193 124905.6205 0.1002045939 0 0.0003830765393 1.807427344e-14 0 0 0 0 0 0 0.002089364837 0.0002613458873 0 8.389311883e-26 0 206681.8937 0.0001441144271 0 0 7.361787946e-06 0 0 0 0 0 0 1.889222999e-17 7574.29066 0 0 0 0.05886001074 0 463.2054145 0 0 0 0 0 0 2.893535625e-23 0 3.808422993e-05 135039.9725 5.842590531e-07 0 0 0 0 0 4.17505849e-14 0 286248.1396 0 0 0 0 2.191718942e-11 0 0 0 5.056777589e-29 238.4065023 0 0 0 0 0 0 0 3.512199486e-18 2.959673971e-06 0 0 0 1.111539652e-12 6.893473882e-11 0 0 0 0 0 0 0 0 0 0 1.048243561e-27 0 0 0.007150985984 0 0 0 0 0 0 0 0 0 0 0 0 0 2.507238712 0 0 0.3067321505 0 0 1.257936631e-20 2.924738007e-11 0 1.453023074e-11 0 0.02987441404 0 0 0 0 1.30749783e-06 0 0 0 0 0 +0.08121131829 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.885131932e-06 0 0.002809708462 8.141919329e-11 1.733690905e-14 0 0 5.746381265e-13 0 0 0 0 0 0 0 0.06910539829 2007626.66 0 0 0 0 10.26539552 0 0 0 0 0 0 0 0 8.631050369 0 0 4.705975216e-11 0 0 0 0 0 3.357162093e-14 1.9321928e-07 0.008642897294 0 0.0009703777695 0 0 0 0 0 0 0 0 0 0 0 0 1.486064653e-15 3.296479134e-25 1.255564016 0 0 1199.364769 5.77106261e-05 0 0 0 1.078254737e-37 0 191499.695 0 1.145824323e-29 0 0 43809.15014 6.151721336e-05 1.136392655e-10 0 0 0 0 0 0 0.01216044745 7756.551039 5.596694972e-24 5.905188324e-26 0 0 0 5.815400421e-41 0 1.747744082e-33 0 0 0 0 0 0 441.56638 0.0004619218521 5.083837928e-14 0 0 0 1.785889073e-18 0.845714866 0 0.0004273162013 3.038902457e-09 26.11698591 0 0 0.3597628662 0 0 0 0 452.7665708 6.105994924e-08 0 0 2.844718019e-24 0 0 0 0 6.208996612e-17 0 4.910596544e-06 0 0 9.911656057e-09 0.2350912346 0 1.473589722e-18 89.38439264 8.655249963e-05 0 0 0 0 0 1.153583118e-25 141165.0034 0 6.222925914e-31 0.05171411192 0 0 7.333546393e-05 1.434698587e-11 3.457891671e-11 1.872485183e-15 0 0 0 0 0 0 32485.68245 2.936263199e-14 0 2.018727262e-27 2.304536645e-23 1.270948411e-21 0 10653.32575 0.3825514439 3.057566407e-28 0 0 7.365760345e-31 0 0 0 0 2.462067863e-07 0 7.340812417e-11 0 5.475260695e-27 0 6.20836954e-18 0 0 0 0 1.125766879e-19 6.741033315e-11 0 0.3408913283 0 8.286057565e-24 4.030393427e-15 0 0 0 0 2.206915971e-19 0 0 0 9.056163867e-13 0 3.693296273e-10 0 0 0 0 6.878698956e-19 0 0 5.672235918e-05 2.571324378e-14 0 0 0 1.282563429e-24 123989.9746 0 0 2.918396619e-33 0 6.06232503e-09 0 0 0 3.474859531e-19 412243.9173 0 300902.3173 0 0 0 8.68104676e-23 0 0 0 0 0 0 0 0 0 0 0 1.093671228e-26 0 0 0 0 8.179068726e-14 0 291.4110986 0 0 3.93367167e-23 0 9.349536602 259.0676892 0 0 0 0 5.906711702e-14 9229.756812 0 0 0 1.891276229e-24 0 1735.674242 0 3.293894662e-21 0 0 9.504769417e-08 +0 0 0 0 0 0 0 0 0 0 0 0 9.252726113e-09 0 0 0 0 7.277142004e-13 0 0 0 0 0 0 0 0 3.175570117e-06 0 0 0 0 9.515112459e-08 0 0 0 0 0 0 0 8.872605034e-13 0 0 0 7.101467647e-28 0 0 5.863019961e-27 1686.633542 0 0.002212755705 0 2.662600028e-08 0 0 0 0 0 0 0 1.144637646e-28 0 0 0 0 0 0 0.1108382883 0 0 0 0 0.000175865604 0.0266942533 0 468.4500175 0 0 0 0 0 0 0 462467.5043 0 0 0 1.122654923e-07 0 0 9.859619968e-07 2.117670275e-24 787.3763149 0 0 0 0 7.693418909e-07 0.01528821081 0 0 1222.319253 16063.26903 0 1.173033775e-17 140876.1262 0 0 0 0 0 0 0 6.07854207e-26 2.048053156e-24 3.776664638e-05 0 0 1.288087685e-26 0.06831387751 0 0.2869275241 0 0 6.670992932e-11 0 7.530518849e-26 0 0 0 0 0 0 18.07894465 0 0 0.08043970466 0 1.00311992e-20 0.9298077893 0 3.309002822e-26 0 3.298813752e-12 0 0 14991.32023 0 1.467944561e-10 4.560246396e-23 0 0 1.948937902e-29 0 0 3.813931882e-17 0 0 0 0 0 0 0.3829327844 5.559184892e-34 5.955784633e-40 1.930082665e-19 4.804429737e-30 0 0 0.0003665984442 4.117147713e-06 0 3.239285151e-08 0 0 0 6.781046214e-07 0 0 0 0.008987152743 1071.983951 1.35514115e-28 0 6.13901194e-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.619113163e-15 0 9.141649249e-17 0 0 0 0 7.188441302e-09 5.821532228e-21 0.03828306081 0 0 0 0 0 0 1869.267158 0 0 6.012374922e-30 0 0 0 0 0 435182.0395 0 0.0004491695941 0 6.520177077e-10 0 52428.30173 0 5792.152458 0 0 0 0 3.543341874e-29 0 0 0 0 0 0 0 0.3984922718 0 0 0 3.249025059e-05 0 0 0 4.513064358e-24 0 0 0 1.868670196e-29 3.231135279e-12 0 1315285.483 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110113.3344 0 0 0 4.925364296 0 4.400197558e-09 0 0 0 0 15534.05622 0 0 0 1.73887892e-13 613.9435447 0 0 0 0 0 0 +0 0 0 3.801175227e-11 46382.47881 0 0 0 0.004277239413 0 0 0 0 324891.6903 0 0 0 0 0 0 52956.45624 0 0 0 0 3.116661832e-35 0.2868523074 0 0 0 0 0 0 0 0 4.543948026e-21 0 2.182642157e-27 0 0 0 0 0.5241043497 0 0 8.360606056e-05 0 1.107132642e-06 0 0 0 0 0 0 0 0 0 0 0 2.022597429e-09 9.115122933e-28 0 292.0862833 0 0 0 9.409825141e-15 0 0 0 2.583630723e-18 329394.8636 0 0 0.02186626556 0 2.234544201e-10 6.216986148e-10 0 3.30508293e-30 0 5.876116495 0 0 1.103137808 0 0 0 1.6521167e-05 10.16508689 0 0 0 0 3.354482093e-12 0 0 0 2.256974275e-08 0 0 0 31.82990454 0 0 0 0 0 0 0 1.889767248e-34 0 7.881866856e-08 0 0 1.47499841e-10 0 0 4.086225672e-17 0 0 3.637829778e-15 4.867589446e-20 0 0 0 1.405009315e-20 0 0 0 0 20871.79564 0 0 6.054295218e-05 12089.87539 8.190869228e-10 0 0 1.278674089e-09 0 0 0 1.084333749e-13 2.86507462e-15 1.848066266e-16 6.82868739e-18 0 0 0 0 0 0 0 0 5.320802234e-09 0 8.248618462e-20 3.91009152e-07 12.27029132 0.0001688090608 2.420054107e-13 0 0 0 0 1.035731132e-26 0 0 0 0 7.07774583e-07 0 0.000800551304 0 0 2.056818744e-24 0 0 0 0 0 4.613780551e-12 0 0 0 0 0 0 0 0 0 0 0.0007660984314 0 0 0 4.248769742e-11 0 1.3277829e-08 0 0 0 0 6861.965116 4.521056275e-23 0 0.002483104499 0 0 1.249013199e-09 0 0 0 4.594373659e-24 0 0 0 4.129016577 0 0 0 3.428032371e-10 0 0 0 0 0 0 0 0 9.151528731e-25 0 0 0 0 0 7.803609061e-17 0 1.45885446e-26 0 0 0 0 0 0 0 0 0 1.471513309e-24 0 0 3.848155015e-10 0 0 0 2.767633984e-12 680.1098388 0 0 0 1.552923207e-24 0 3.089074957e-07 0 40875.22489 0 0 0 0 0 3.51569008e-09 0 0 0 0 0 1.696441968e-14 1671.515262 1.413338807e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.950743534e-28 1592.168239 +0 4.519567021e-26 0 417162.2141 0 0 3.966443119e-16 1.801707954e-05 0 0 0 0 0 0 0 0 0 0 0 22.78533049 0 0 0 0 0 0 0 0 0 1.589572447 0 0 0 0 0 0.3150464355 0 0 0 0 0 0 1.188569563e-07 0 0 2.736870931e-23 6.095526502e-23 0 0 0 0 0.000734272906 1.752236721e-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.154301991e-28 0 9.232768361e-06 0 0 0 0 1.755340904e-24 0 0.03744068055 0 1.191038774e-13 0 3.93812619 0 0 0 0 0 0 0 0 0 0.0006388406908 0 0 41508.58562 0 0 0 0 0 8.559733865 0 9.432316776e-31 0 0 0 0.0001026987749 0.000170318308 9.446255444e-07 0 5.516624838e-11 2.609560973e-16 2.922693884e-14 3.739419251e-05 0 0 6.856727362e-09 0 0 0 0 1053.33995 0.001034834592 4.828259321e-09 5.287118313e-05 0 2.323114916e-32 0 0 0 0 0 0.04579107476 2.203425449e-10 0 0.0001084710213 4.46146205e-22 0 0 0 0 0 0 0 0 0 0 3.490326802e-10 5.808058782e-30 1407111.177 6.871087684e-08 0 0 0.2783830268 0 0 0 0 0 5.443424555e-22 0 0 20.47680177 2.099556387e-11 0 0 1.553398304e-24 0 0 0 0 0 3.274222559e-21 3.368485117e-08 0 0 0 0 0 0 150.7625135 0 0 0 2.215236266e-11 0 0 0 2.416126457e-12 0 301.3223967 1.559526463e-21 5.830497296 8.252658139e-24 0 0 0 202850.8008 0 0 0 3.202267944e-08 0 2.690097913e-26 2.898368174e-06 0 0 0 0 0 0 4.56690622e-22 0 3.630321542e-16 0 1.836405122e-12 0 1.298788614e-27 0 1.639450985e-11 0 0 0 0 0 0 0 0 0 0 0 60.61568948 0 1.679719198e-05 1.755404022e-12 0 0 1.233334245 1.118687275e-08 0 0 0 0 0 0 2.768794143e-12 0 35.48963466 0 0 0 0 0 9.02139985e-15 0 0 0 1.012407708e-05 0 248564.3821 0 0 0 0 15.06965302 1.509936823e-12 0 0 0 1.486691706e-32 0 496415.9556 0 0.01130183676 0 0 0 0 0 0 0 0 0 1.075649175e-05 0 0 0 0 0 1.771464626e-33 0 0 0 0 0 0 0 +0 4.998442524e-37 8071.043918 1.18936863e-05 0 0 0 0 0 0 0 0 0 0 0 363771.9362 0 0 4.994377648e-30 6.463296688e-18 0 0 0 0 0 1.598432777e-16 246.7887819 0 0 0 0 0.004983732516 1.108848287e-12 0 0 0 0 0 0 7.882473952e-07 2.449463183e-11 0 0 0 0.05148627523 0 9.712895514e-37 0 0 0 0 0 0 4.54545607e-10 0 0 0 0 0 0 0 1.137438783e-08 5.692814252e-14 0 0 0 0 0 2.66405385e-06 1043.178116 0 0 1.167309008 0 1.48933464e-27 1.207544905e-28 8.40622813e-07 0 68953.99639 0 0 0 0 2206007.108 15.15940173 0 0 0 0 0.1792680761 0 1.44028934e-21 1.289672637e-08 0 3.903945381e-16 0 1.806651726e-16 0.05726401 0 0 4.537529142e-19 0.0003391813538 0 0 0 0 1.017434685e-10 0 5.631516336e-14 4.796712164e-07 2.416137448e-16 3.547524887e-08 0 0 88002.90644 5.786591858e-14 0 0 652003.162 8491.346378 0 4.100553497e-14 1.828686519e-24 0 0 0 0 0 0 0 0 0 0 0 4.298637206e-05 3.591820777e-18 0 0.2271897203 1.689361697e-25 0 0 0 2.805735196e-10 7.152281315e-24 0 1.31416233e-30 1.010076489e-27 1.197421816e-20 0 1.097262353e-08 0 0 3.039750611e-12 0 3.270502345e-05 0 0 0 5.714801393e-05 0 6.623309376e-21 0 5.16617411e-09 1.91754781e-20 0 0 0.6049147988 0 0 0.1727922683 0 0 0 0 0 3.726349791e-06 0 0 0 0 2.692456222e-09 0 1.055856622e-05 1.039456684e-23 0 452316.1199 406.3449432 0 0 0 2.221679616e-16 0 0 0 0 111.1723667 0 0 0 0 1.031209051 0 0 6.431178805e-20 0 0 0 0 0 0 0 0 0 0 0 5.336411406e-08 0 7.338306918e-05 0 0 0.0006179188303 0 49381.28796 0 0.0113479003 0 0 8.535128632e-10 0 6.896770663e-29 0 0 0 2.12352467e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2498.55709 0 0 13.00802219 0 0 5.096907505 4.303708251e-26 0 0 0 0.0002953797677 0 0 0 0 0 0 0 0 7.221451966e-32 0 1.224624371e-16 0 0 0 7.764083762e-26 0 0 0 0 2.93936924e-27 1.312744173e-08 0 0 0 0 0 0 0 0 4.221347054e-19 0 0 0 4.41746793e-29 0 0 1.544196723e-12 1.030585278e-18 0 0 +0 0 0 916994.2481 0 0 0 0 0 0 0 2.187106528e-18 0 0 0 0 0 0 4.005124368e-17 0 0 0 2.291056282e-05 0 0 0 0 0 0 0 0 1880.659995 0 2.738549538e-27 654.7701895 0 297.5831578 0 3.97164958e-22 0 0 6.340820336e-06 1.353188348e-29 0 6.09931671e-29 1518.375383 0 0 0 0 1.409647521e-25 1.811477071e-13 0 1.07898426e-25 0.02650452292 1.570302762e-28 0 0 0 0 0 0 0 0 0 0 8.264300581e-06 88545.49919 0 0 2.888287363 0 0 0 0 6.122137238e-09 4328723.733 0 0 0 1.244527836e-24 3.4812626e-07 0 0 5.51139514e-10 0 0.01256582489 8.228008523e-08 116.0413475 4.875606514e-07 4.519279975e-22 0 0 5.090434653e-26 0 0 0 1.746021958e-13 0 0 0 0 0 0 0 2.00725695e-13 0 0 0 0 9.726002023e-20 0 0 0 0 3.941318901e-22 0 0 1.524614109e-13 2.412492246e-12 0 0 1.083376642e-16 0 6.480916717e-21 5.124330547e-11 0 2.561105597e-10 8.52536638 0.03798043542 0 4.730415759e-28 0 4.1102125 0 6.626982594 1.395090106e-10 3.876963822e-28 0 0 0 0 2.087049682e-21 1.41601947e-11 9.53687914e-18 2.345591449e-22 0 4.59935019e-18 0 0 0 0 0 0 1.506325358e-13 2844536.068 5.084401908e-25 9.070590027e-34 0 0 0.02539625029 0 0 0 0.0001975002915 0 0 5.738686861e-05 0 0 1.657469893e-31 0 0 1.123276149e-21 0 0 2.940951967e-12 0 0 0 3.480074825e-05 0 4.327961213e-21 777.8644888 0 3.071966348 0 0 0 0 0 0 0 0 0 0.001535758774 0 0 1.96804112e-45 3.007989136e-05 0 0 0 0 0 0.006652346502 0 3.017389792e-12 0 4.603884486e-13 0 0 0 0 6.417679679e-11 0 0 0 0 8.638442324e-12 0 0 0 0 0 0 7.519246587e-12 2.826145013e-13 2.367370428e-27 0 0 0 0 0 0 0 0 0 0 7.729480614e-19 0 0 9.193359977 0 0 0 8.565502072e-08 0 0 0 0 0 0 0 0 0 0 425002.7391 7.526062125e-18 0 0 0.001492117455 0 0 0 0 0 0 0 0 5.378840535e-31 0 0 2.025145508e-12 0 0 0 0 0 0 9321.44561 0 0 0 0 0 5.113168778e-21 0 0 0 0 0.001361437133 0 0 0 0 0 0 0 0 +2.283999585e-11 2.321552526e-09 0 0 0 0 0 0 0 0 0 0 0 0.3346420653 0 0 0 0 0 0 0 0 0 0 0 0 0 1.470605405e-05 9.334547559e-05 0 0 0 0 0 1.443043325e-05 0 0 0 0 0 1.434042805e-09 0 2.115569641e-06 5.872144225e-14 0 0 0 0 0 0 0 0 0 0 0 0 0 57768.17012 0 0 0 0 0 4.229223029e-14 0 1481.431381 0 2937.96563 0 0 0.002184344077 0 0 4.028226193e-12 0 6.754859993e-13 0 0 0 0 0 0 4.076829986e-05 0 0 4.964840569e-24 3.073816224e-15 1.441291737e-19 0 424069.8502 0 3.69828663e-16 2.185908135e-14 0 4.304750153e-13 5.287013408e-08 0 0 0.008761212997 54.16935882 0 0 1.200101554e-18 0 0 0 0 0 0 1.412367019e-25 2.35474288e-07 0 0 2.109761307e-11 0 4.952257452e-08 8.511197387e-09 0 0 0 0.02039352483 0 3.620412094e-13 2.600470614e-09 0 0 0.0001178451338 0 119.3654023 0 0 3.237682321e-23 0 0 0 0 0 0 1.752516267e-11 4.501603611e-08 0 0 0.0005840071394 9.888830576e-15 4.580414778e-09 1.565717728e-16 0 18.65127116 1.962394564e-18 0 0 0 0 0 0 4001092.526 0 0 0 11055.2848 0 0.004253192551 0 1.862061078e-19 0 0 743254.1812 21562.68049 1.193420545e-16 0 1.415048971e-15 0 0 1.190542136e-26 2.969501778e-12 9.752146919e-10 1.75240017e-20 0 0 0 147.6771852 1.176165101e-05 1.271350802e-08 0 0 0 0 0 1.163482181 0 0 0 1.883333524e-21 1.068973025e-11 0 1.527399066e-25 0 0.000446870465 1.130081541e-11 0 0 0 0 2.973637957e-10 0.0001456284228 0 0 0 3.43101825e-26 0.03577825526 0 0 0 0 0 0.1666652684 0 0 0 0 1.680810195e-15 0 0 1.439935594e-07 0 4.733024082e-11 1.080919169e-29 0 0 2.48663141 0 0 0 0 0 0 2.599223717e-27 0 0 0 4.664275117e-12 3.950270323e-11 0 9.465297128e-25 0 0 0 0 1.706771899e-34 0 0 1.961334519e-18 0 1.140024009e-05 0 0 0 1.073392956e-18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.68413253 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001630419187 0 5.296740052e-06 0 7.888201987e-19 +# Events [sample_PSD/image.dat] N: +0 0 1 1 1 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 2 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 1 0 2 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 2 0 0 2 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 2 1 0 2 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 2 0 0 1 1 1 1 0 1 0 2 0 1 0 0 1 1 1 0 0 0 2 0 1 0 0 0 2 1 0 0 0 0 0 0 1 1 0 0 1 0 0 3 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 +0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 2 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 2 0 2 1 1 2 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 2 0 2 2 3 2 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 2 1 1 1 1 1 1 1 2 0 0 0 1 0 0 0 0 1 2 0 0 2 0 2 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 1 0 0 2 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 +0 2 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 2 2 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 3 3 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 1 0 2 0 2 0 0 0 1 0 0 1 0 1 0 0 0 0 2 0 1 2 0 1 0 0 1 0 0 1 0 1 2 0 1 1 0 0 0 0 2 0 0 0 0 1 1 0 0 1 0 1 0 2 0 2 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 +0 0 1 1 0 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 2 1 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 2 0 0 0 1 0 0 1 0 2 1 0 1 2 0 0 0 0 0 1 0 0 0 1 1 2 1 1 1 0 0 0 1 1 1 1 1 0 1 2 0 0 1 0 1 0 0 0 0 0 1 0 0 2 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 2 0 0 1 0 1 0 1 0 0 0 1 0 1 1 3 0 1 0 0 +0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 1 0 0 1 0 2 2 0 0 0 0 1 0 0 0 1 1 0 0 1 0 2 0 0 1 1 0 0 1 0 1 1 2 0 0 0 1 0 2 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 2 0 1 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 2 0 2 0 0 0 0 2 0 0 0 2 0 0 0 0 0 1 1 0 3 1 1 1 0 1 1 0 0 2 0 2 1 0 0 0 1 0 1 0 0 0 0 0 0 3 1 0 1 0 1 0 0 0 1 0 1 2 1 1 0 1 0 0 0 0 0 1 0 2 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 2 1 0 1 2 1 1 0 0 2 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 +0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 3 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 2 1 1 1 0 1 0 0 0 0 0 1 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 0 1 0 1 0 1 0 2 2 0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 2 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 0 1 0 0 0 0 0 2 0 1 0 0 0 0 +0 0 0 0 0 0 0 2 0 0 1 0 0 1 0 2 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 2 1 1 0 1 0 0 2 1 1 1 0 0 1 3 1 0 0 1 1 1 1 0 0 2 0 0 1 4 0 0 0 0 1 2 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 2 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 2 4 1 0 0 1 1 2 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 2 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 +0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 3 0 0 0 0 2 0 1 0 3 0 0 0 0 0 1 0 0 2 0 1 0 0 0 0 1 1 1 0 1 1 2 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 1 0 1 0 2 1 1 0 1 0 2 1 0 1 3 0 0 0 1 1 0 0 3 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 2 1 1 0 1 0 2 0 0 2 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 2 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 1 0 1 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 +1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 4 1 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 2 1 0 0 0 0 0 1 0 1 0 0 0 0 2 0 2 0 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 3 0 3 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 2 1 0 0 0 0 0 1 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 2 1 0 2 1 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 2 1 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 0 0 1 +1 0 1 1 0 0 1 2 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 2 1 0 0 0 2 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 2 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 0 3 0 0 1 2 1 0 1 0 1 0 0 1 1 1 0 2 1 0 1 0 0 3 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 3 0 0 0 1 0 0 1 1 0 0 2 0 0 1 3 0 0 0 2 0 0 0 0 0 0 0 1 2 0 1 0 1 2 2 0 0 1 0 0 1 1 0 1 0 0 1 2 0 0 0 3 0 2 0 0 2 0 1 0 0 0 0 0 2 0 2 1 1 0 0 0 1 0 0 1 2 0 1 0 1 0 0 0 0 1 1 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 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 +1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 2 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 2 0 1 0 1 0 0 0 1 0 0 0 0 1 2 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 2 0 1 2 0 1 1 0 0 0 2 1 1 2 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 2 0 1 1 0 3 0 0 0 2 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 2 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 +0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 3 0 2 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 2 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 2 0 0 2 0 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 0 2 0 0 0 0 0 0 3 0 0 0 2 2 0 1 0 0 2 0 0 1 1 1 0 0 0 1 2 3 1 1 0 0 1 2 2 0 1 0 2 0 0 1 2 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 2 1 0 2 2 0 0 0 0 0 0 1 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 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 2 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 +0 0 0 0 2 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 2 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 2 1 0 0 1 0 0 0 0 2 1 1 3 0 0 0 0 1 2 0 1 0 0 0 0 0 0 0 1 0 0 0 2 0 0 1 1 1 0 0 0 1 0 1 2 1 1 1 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 2 1 1 0 1 1 1 1 1 2 0 1 0 1 1 1 0 2 0 1 1 0 0 0 1 1 0 0 0 0 0 0 2 0 1 0 2 0 3 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 0 1 1 2 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 2 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 2 0 0 1 0 0 0 0 1 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 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 2 2 1 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 1 1 0 0 2 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 2 0 0 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 4 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 1 2 1 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 2 2 1 1 0 0 2 1 0 1 0 2 0 1 0 0 0 0 1 0 2 0 1 0 1 0 0 1 0 0 0 1 2 2 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 2 2 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 3 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 2 0 0 0 0 0 1 0 0 +0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 4 0 1 1 0 0 1 0 2 0 1 0 0 0 0 0 1 0 0 2 0 0 0 0 0 2 0 0 0 0 1 1 1 2 2 0 0 0 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 2 1 1 1 0 0 0 0 0 0 1 1 3 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 1 0 0 2 1 0 0 0 0 1 1 0 2 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 2 0 1 0 0 1 0 1 0 1 0 0 1 0 0 2 0 1 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 2 0 0 0 1 +1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 2 0 1 1 1 0 1 1 0 0 0 0 1 0 2 0 1 0 0 0 0 1 0 2 0 0 0 0 0 1 3 1 0 0 2 0 0 0 1 1 0 1 0 0 0 1 0 1 2 0 1 0 0 1 0 0 0 1 0 0 0 2 0 0 0 1 1 0 0 0 0 1 1 0 0 3 1 1 0 0 0 0 1 0 0 2 0 1 1 0 2 2 2 1 0 0 0 0 0 0 2 2 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 2 1 2 0 0 1 0 1 0 1 1 1 0 1 2 0 1 0 2 0 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 2 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 1 0 +0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 2 0 0 1 3 0 0 1 0 1 0 0 0 1 0 0 1 1 1 1 3 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 2 1 0 0 0 2 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 2 1 0 1 0 0 0 1 1 0 1 0 2 0 2 0 1 0 2 1 2 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 2 2 1 1 2 0 0 0 1 0 1 0 2 0 0 0 1 0 0 3 1 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 3 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 3 0 0 0 0 0 0 0 2 1 0 2 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 2 0 0 0 1 0 0 +0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 2 2 0 2 0 0 0 0 0 0 0 1 1 2 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 2 0 1 1 0 2 1 0 2 0 1 0 1 1 0 0 0 1 1 1 0 2 1 0 0 0 1 1 0 1 0 1 1 2 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 2 0 0 0 1 0 1 0 0 2 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 2 0 0 0 2 0 1 0 1 1 0 0 0 0 0 0 0 0 +0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 2 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 4 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 0 1 2 0 0 0 2 1 1 0 1 1 0 1 1 0 0 1 0 0 0 1 0 0 2 0 1 1 0 0 0 0 0 0 1 0 0 1 2 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 1 1 1 0 2 1 0 1 0 1 1 1 0 0 1 0 0 0 2 0 0 1 0 0 0 0 1 0 0 1 0 2 1 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 2 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 0 1 0 2 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 1 3 1 0 1 0 0 1 1 0 1 1 0 2 1 1 0 0 1 0 0 0 1 5 2 0 0 1 2 0 1 1 1 0 1 1 0 1 2 0 0 0 0 1 0 0 0 0 2 0 2 0 1 1 0 2 1 0 1 0 1 1 1 0 1 0 0 0 2 3 0 1 0 0 2 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 2 1 0 1 0 2 0 2 0 0 1 1 1 0 0 0 0 2 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 2 0 0 0 2 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 2 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 2 0 0 0 1 0 0 0 1 2 3 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 3 0 0 2 0 1 2 2 2 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 2 0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 2 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 +0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 0 0 1 0 0 0 0 1 1 0 2 0 0 0 1 1 0 0 0 0 0 1 4 0 1 0 0 0 0 1 1 1 0 1 1 0 0 1 2 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 0 0 2 0 2 2 0 0 0 2 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 2 0 1 1 0 0 0 0 0 0 0 0 1 0 2 1 1 0 0 2 0 0 0 1 0 0 0 0 1 0 1 0 1 1 2 0 0 0 0 1 0 0 1 0 1 2 0 0 0 1 0 1 2 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 2 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 2 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 +0 1 0 0 1 1 0 1 0 2 2 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 2 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 1 1 0 1 2 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 3 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 2 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 2 1 0 3 0 1 0 2 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 2 0 1 0 2 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 2 1 0 2 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 2 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 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 2 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 2 1 1 0 0 4 0 0 2 0 0 0 2 2 0 0 0 0 0 2 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 2 1 1 1 0 0 1 0 0 2 1 0 2 1 0 1 0 0 0 0 2 1 1 1 0 1 0 0 1 0 1 1 0 2 1 0 1 0 0 0 2 0 0 0 0 0 1 1 3 1 1 0 0 0 0 1 0 0 1 2 1 0 1 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 1 0 0 0 1 2 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 2 0 0 0 1 2 0 2 0 0 0 0 0 2 0 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 +0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 2 0 1 1 0 0 0 1 0 0 0 1 2 1 1 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 2 1 2 2 0 1 1 3 1 0 1 0 0 0 0 1 0 2 1 0 1 0 0 2 2 0 0 0 1 0 0 1 0 0 1 1 0 3 0 1 2 0 0 0 1 1 2 0 1 0 0 0 1 0 1 0 2 0 2 0 0 0 0 0 1 0 1 0 0 1 0 0 2 0 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 3 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 2 1 0 0 1 3 1 0 3 1 0 1 0 2 0 3 0 0 1 0 0 1 0 1 1 1 0 0 2 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 3 0 2 2 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 2 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 +0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 1 0 1 0 0 1 0 2 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 2 1 0 0 1 0 1 0 0 1 1 0 0 2 1 0 0 0 0 1 0 2 0 0 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 1 0 0 3 2 0 1 1 0 0 0 0 0 1 1 0 2 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 2 1 1 0 2 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 2 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 2 0 0 0 0 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 +1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 2 0 0 1 1 2 0 1 0 1 0 1 0 0 0 0 2 0 1 1 1 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 0 0 3 0 1 1 0 0 0 0 2 1 0 0 1 0 1 1 1 2 1 1 0 0 1 1 1 1 1 0 0 1 1 2 0 0 1 0 0 0 0 2 0 1 1 0 0 0 0 0 0 2 0 0 2 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 2 1 0 1 0 0 0 0 1 1 0 0 0 2 3 0 0 0 0 0 0 0 2 1 1 0 1 1 0 2 0 0 1 1 0 2 0 1 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 2 2 0 0 0 2 0 1 1 2 1 0 0 0 1 2 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 +0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 2 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 2 0 3 0 1 2 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 2 0 2 2 1 0 1 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 2 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 2 1 0 0 1 1 2 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 3 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 2 0 1 0 0 0 0 2 4 0 0 0 0 0 0 1 0 0 0 0 1 2 1 0 0 1 0 3 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 +2 0 1 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 2 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 2 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 2 0 0 0 0 1 2 0 1 0 1 2 0 0 0 0 2 0 1 1 1 0 0 1 0 3 1 0 0 0 0 0 1 2 0 0 0 1 1 0 2 0 1 0 0 0 1 1 0 1 0 0 0 1 0 2 0 1 0 2 0 0 0 0 1 0 0 2 0 0 0 2 0 2 1 0 1 1 2 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 +0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 2 0 0 0 2 0 0 1 0 0 1 1 0 0 0 0 0 2 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 2 2 1 1 0 1 0 1 0 0 0 2 1 0 0 2 0 1 3 0 1 1 2 1 1 0 1 3 1 0 1 0 0 0 0 1 2 0 0 0 0 0 1 0 0 0 0 1 2 1 0 1 0 1 1 2 0 0 0 1 0 0 0 0 0 0 2 0 1 1 0 0 2 1 0 0 0 1 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 3 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 0 2 1 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 2 2 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 2 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 +1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 2 1 1 0 0 0 2 1 0 0 1 2 0 0 0 0 0 1 0 0 0 1 3 0 0 1 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 1 0 1 1 2 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 4 0 1 0 2 1 2 1 0 1 0 0 0 0 2 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 3 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 2 0 0 0 0 0 0 2 1 0 0 0 1 1 0 0 1 0 0 1 2 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 +0 0 0 0 0 3 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 3 0 1 1 0 2 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 2 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 2 0 1 0 1 0 0 1 0 0 1 0 0 1 2 0 0 0 0 0 2 0 4 0 0 2 0 1 1 0 1 0 0 2 0 1 0 1 2 3 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 2 0 0 0 0 1 1 0 2 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 0 0 0 0 1 2 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 3 0 1 0 2 0 1 0 0 0 1 0 0 +1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 4 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 2 0 1 0 1 0 0 1 1 0 0 0 3 2 0 0 0 1 0 1 1 0 0 2 1 2 0 0 1 0 0 0 0 1 0 0 0 2 1 2 1 0 1 1 1 2 0 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 2 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 2 2 0 1 0 1 0 1 0 1 0 2 1 0 2 0 0 0 2 0 0 0 0 0 0 1 0 1 0 2 1 0 0 1 0 0 0 3 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 2 1 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 2 +1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 2 0 0 1 0 0 0 0 0 0 0 2 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 3 1 0 1 1 0 0 1 0 0 0 0 0 0 0 2 1 1 3 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 3 0 1 0 1 0 2 2 1 2 0 0 0 1 0 0 1 1 0 3 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 3 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 2 0 0 1 0 0 1 0 0 1 1 2 1 0 0 0 0 1 0 3 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 3 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 2 0 1 2 0 0 0 0 1 0 0 0 1 1 0 +0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 2 2 1 0 0 1 0 2 0 1 2 0 0 0 1 0 2 0 1 1 0 0 1 1 0 1 0 0 0 2 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 1 1 0 0 0 1 0 3 0 0 1 1 1 0 1 1 2 0 2 0 0 1 0 0 0 0 2 0 0 1 0 0 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 2 1 1 0 2 2 0 0 1 2 0 0 0 0 0 0 2 0 2 1 0 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 2 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 +1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 2 0 1 1 1 1 0 0 0 0 2 1 0 3 2 1 0 1 1 2 0 0 0 0 1 0 0 0 0 2 0 1 0 1 0 3 1 3 0 0 1 1 2 1 1 0 0 0 0 0 1 1 0 1 0 0 0 2 0 0 0 0 1 0 0 2 0 1 1 1 1 0 0 0 1 0 2 2 0 0 0 0 0 1 2 1 1 1 0 0 0 0 0 1 0 1 1 0 2 1 2 0 2 0 0 2 0 0 1 0 0 2 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 2 1 0 0 0 0 0 0 0 0 1 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 +0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 2 0 0 3 0 0 0 0 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 2 1 0 0 2 0 2 1 2 1 2 0 0 0 1 1 0 1 2 0 0 0 2 0 1 1 1 2 0 0 1 0 0 0 1 0 0 1 0 1 0 1 2 1 0 0 2 0 0 0 1 0 0 1 0 0 0 2 2 0 1 1 0 0 1 0 1 2 2 0 0 0 0 0 1 0 0 0 2 0 1 0 3 0 0 0 0 0 0 0 2 0 0 0 1 0 0 2 3 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 1 0 2 0 2 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 +0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 3 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 2 0 1 1 0 3 1 0 0 0 0 2 1 1 1 2 1 1 1 0 1 0 1 1 3 0 0 1 1 0 2 0 0 0 0 1 0 0 2 0 0 1 0 0 0 1 0 0 0 0 2 0 2 0 0 3 0 2 1 3 1 0 0 0 2 1 1 1 0 0 2 1 0 0 1 2 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 2 0 0 0 1 2 0 2 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 2 1 0 0 1 2 0 2 1 0 0 0 0 0 0 1 0 1 0 0 1 0 2 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 +1 1 0 0 0 0 2 1 0 1 1 0 0 0 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 2 2 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 1 0 0 2 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 1 0 0 2 1 1 2 1 0 1 0 1 1 1 0 0 0 0 0 0 1 0 2 1 2 1 1 0 1 0 1 0 2 1 0 1 1 0 0 3 0 0 1 3 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 2 3 0 0 1 2 0 0 1 0 0 0 1 0 0 0 0 0 2 0 2 0 0 1 1 0 0 2 0 0 1 0 0 0 1 0 2 0 1 2 0 0 1 1 0 0 1 2 0 0 0 0 2 0 0 0 0 0 1 0 0 2 0 1 0 0 0 0 2 3 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 1 1 0 0 2 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 3 0 0 0 0 1 2 0 0 1 3 2 0 1 2 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 1 2 1 0 0 0 1 0 1 0 0 0 1 0 0 0 2 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 1 2 1 0 1 0 2 0 1 0 1 0 3 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 0 0 0 1 1 2 0 0 0 1 0 0 1 0 0 2 2 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 2 0 0 0 0 0 0 0 1 2 1 0 0 0 1 0 1 0 1 0 1 0 0 2 0 0 2 0 0 0 1 0 0 0 0 0 0 3 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 +0 0 1 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 3 1 0 0 2 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 1 0 3 0 0 1 2 1 1 0 0 1 0 0 0 1 0 0 1 0 2 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 2 2 0 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 1 0 2 0 0 0 1 2 1 0 1 1 0 1 0 0 2 1 1 0 1 1 0 0 0 0 0 2 0 0 1 0 0 1 2 0 0 1 2 0 0 1 1 0 1 0 2 0 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 3 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 2 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 1 1 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 +1 1 0 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 2 1 2 1 0 2 1 0 1 2 1 3 1 1 1 2 0 2 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 2 2 1 2 2 1 0 0 1 1 0 1 0 2 2 2 2 0 1 0 0 1 0 1 1 0 0 1 2 0 1 1 1 1 0 0 0 1 1 2 0 0 1 1 0 0 0 0 1 1 0 1 0 0 2 0 2 1 0 0 0 1 0 2 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 0 2 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 2 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 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 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 2 0 1 0 0 1 0 0 0 0 0 0 1 2 3 0 1 1 0 0 1 1 1 1 0 2 2 0 0 3 1 0 1 1 1 0 0 0 1 0 0 2 0 2 0 0 0 0 0 2 1 0 1 0 0 1 0 1 2 1 2 2 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 2 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 2 0 1 0 0 0 0 1 0 0 1 2 0 1 0 2 1 0 1 3 0 0 1 1 1 2 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 1 0 2 0 1 0 2 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 3 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 2 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 2 0 0 1 0 1 1 1 0 0 2 0 0 1 0 1 2 1 0 0 1 0 0 3 0 1 1 1 0 0 0 0 2 3 1 1 1 0 0 0 0 0 0 0 2 2 1 0 0 0 2 0 0 0 1 0 2 0 1 2 1 2 1 0 0 0 0 0 0 2 3 0 0 0 2 0 0 0 3 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 2 1 0 2 0 0 0 0 0 1 0 0 1 0 1 1 2 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1 1 1 0 0 0 0 3 0 0 0 0 0 1 0 0 0 0 0 0 0 +1 0 0 0 1 0 0 1 1 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 3 1 0 0 2 2 1 1 1 1 0 0 0 0 1 0 2 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 1 0 0 1 2 0 1 2 1 0 1 0 1 0 0 0 1 1 0 0 2 0 0 0 0 1 0 0 0 1 1 1 1 0 2 1 0 2 0 0 1 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 1 0 2 0 1 0 1 1 0 0 0 2 0 0 0 0 1 1 0 1 2 1 1 0 1 3 1 0 0 1 1 1 1 1 0 0 0 0 0 2 0 2 2 0 0 0 0 0 2 2 0 1 0 1 0 1 0 0 2 0 0 1 0 0 0 0 1 0 0 2 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 +0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 2 0 1 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 2 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 2 0 1 0 0 1 1 3 1 0 0 0 1 2 0 2 0 0 1 0 2 0 0 0 1 0 2 1 1 0 0 0 0 1 0 0 0 0 0 1 2 0 0 0 0 0 1 0 0 3 0 1 0 0 0 0 2 0 2 0 3 0 1 0 1 1 0 2 0 0 1 0 2 1 2 0 1 0 0 0 2 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 2 1 1 0 2 1 2 0 0 0 0 0 0 1 0 0 0 0 2 0 2 0 0 0 0 0 0 3 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 1 0 0 0 1 0 1 0 0 3 1 1 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 +0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 2 0 0 1 0 0 0 1 1 1 0 2 1 0 0 2 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 2 0 1 0 1 0 0 0 2 1 0 2 0 0 0 1 2 0 1 1 0 0 1 1 1 1 0 0 2 2 0 0 1 0 1 0 1 0 1 0 0 2 1 0 0 1 1 0 0 0 0 1 0 0 2 1 0 1 1 0 0 2 0 0 1 0 1 1 0 1 0 0 1 2 0 0 2 0 1 1 1 2 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 2 0 0 1 0 1 1 1 2 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 2 0 0 0 1 1 0 0 1 0 0 2 2 0 2 0 0 1 2 0 0 0 0 1 0 0 0 0 1 2 1 1 0 0 1 0 0 1 0 2 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 +0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 2 1 2 1 0 0 3 0 1 0 0 0 0 2 0 1 0 1 1 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 2 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 2 0 0 0 1 0 0 0 2 0 0 1 2 0 3 1 1 1 3 1 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 2 1 2 0 1 2 0 3 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 1 1 0 0 0 0 1 2 0 1 0 1 2 0 0 1 0 0 2 2 1 2 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 3 0 0 0 1 1 0 0 0 2 0 2 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 1 0 0 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 2 0 0 1 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 1 2 0 1 0 1 2 1 1 1 0 1 0 2 1 0 0 1 0 0 0 0 2 2 1 1 0 0 1 1 0 1 1 1 1 0 1 2 0 0 0 1 1 0 0 0 0 0 2 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 2 0 1 3 1 1 0 2 1 2 0 1 0 1 0 0 1 0 0 0 0 1 0 2 1 0 0 0 1 0 0 1 0 1 2 0 0 0 0 0 2 0 0 0 1 2 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 2 0 0 0 1 1 1 0 2 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 1 1 0 0 0 1 0 0 0 +0 1 0 2 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 2 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 2 4 0 0 1 0 0 1 1 0 5 0 0 1 1 1 0 0 1 1 0 1 1 1 4 2 0 1 1 1 2 0 2 0 1 0 1 0 0 0 0 0 1 1 1 0 1 1 2 1 0 1 0 0 1 0 0 1 1 2 0 1 0 0 0 2 0 0 0 1 1 1 1 0 3 1 1 0 2 1 0 1 0 2 2 1 0 1 1 1 0 2 1 1 1 1 0 0 1 1 0 1 2 0 0 1 1 1 0 1 1 1 0 1 0 1 0 2 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 2 0 0 0 0 1 0 0 0 0 0 0 2 1 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 2 1 0 0 0 0 1 1 2 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 +0 1 1 0 1 0 2 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 2 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 2 0 1 1 0 0 0 2 0 2 0 2 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 2 1 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 2 2 4 1 0 0 0 0 2 0 1 0 0 1 0 0 0 0 1 1 0 2 1 0 0 3 0 3 1 0 1 0 1 0 1 0 0 1 2 0 1 1 0 2 0 2 0 0 0 0 1 1 2 0 0 0 0 3 1 1 2 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 1 1 0 1 0 0 2 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 2 2 0 2 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 1 2 0 3 0 0 2 1 0 0 2 1 0 0 1 1 1 1 2 1 2 0 1 0 1 0 0 4 1 1 1 1 1 1 1 0 1 1 1 0 0 2 0 0 0 0 3 1 1 1 0 0 1 0 1 1 0 0 4 1 0 0 2 0 0 1 0 2 1 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 2 0 0 1 1 0 0 1 0 4 1 0 0 1 1 1 1 2 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 1 1 3 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 2 1 0 0 0 0 1 1 1 1 0 2 0 0 0 +0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 2 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 2 2 0 0 0 0 1 1 1 2 1 1 0 3 1 1 1 0 1 0 2 1 2 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 1 2 0 2 0 0 0 0 2 1 0 0 0 0 1 0 0 1 0 0 0 0 2 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 2 0 0 3 1 1 0 1 2 1 0 0 1 2 1 2 1 0 3 0 0 1 0 2 0 2 0 1 1 1 0 0 1 0 1 1 0 1 2 1 0 0 1 0 0 2 0 0 4 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 2 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 +0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 1 1 0 2 0 0 0 0 2 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 1 0 0 0 0 1 3 0 0 0 2 2 1 0 0 1 1 1 1 1 1 0 2 0 0 0 0 0 0 0 1 1 0 3 0 0 0 0 0 1 1 1 0 0 0 1 0 1 1 3 0 1 1 0 0 1 3 1 0 2 0 0 2 0 2 1 0 0 1 0 0 2 1 0 1 0 3 1 0 0 1 1 2 2 1 0 2 0 1 0 0 1 1 3 2 0 0 1 0 0 0 2 2 1 0 0 0 1 0 1 2 1 0 0 2 2 0 1 0 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 2 0 1 2 1 0 2 0 0 2 0 1 1 0 1 2 2 0 3 0 1 0 1 0 2 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 2 0 2 0 0 3 0 0 1 0 0 2 0 2 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 +0 1 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 2 0 1 1 1 1 2 1 0 0 0 1 0 0 1 0 1 0 2 0 0 0 0 5 0 0 0 0 2 0 0 0 0 1 0 0 0 2 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 2 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 2 1 0 2 3 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1 2 1 1 0 0 0 0 1 2 2 0 0 0 1 0 0 0 2 0 0 0 0 0 0 2 1 0 0 1 0 0 0 2 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 2 0 1 0 0 1 1 2 1 0 0 0 0 0 1 0 1 2 1 1 3 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 2 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 +0 0 0 0 2 0 1 1 0 0 0 1 0 0 0 1 0 2 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 4 3 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 1 2 1 0 1 0 2 1 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 2 2 0 0 2 0 2 1 1 0 0 1 2 1 1 0 0 2 2 1 3 3 0 0 1 0 1 0 0 0 0 1 0 1 0 1 2 1 0 0 1 1 0 1 0 0 0 1 0 2 1 0 0 0 0 0 0 0 0 1 2 0 1 0 1 0 2 2 2 0 1 0 0 0 0 1 2 2 1 0 1 1 0 0 0 0 2 1 0 0 0 0 1 0 2 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 1 0 0 0 2 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 2 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 1 0 0 0 +2 0 1 0 0 0 0 0 0 2 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 2 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1 2 0 1 0 2 1 0 1 0 1 2 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 2 2 2 0 0 0 0 0 1 2 1 2 4 2 0 2 1 1 0 1 1 0 0 1 0 2 1 0 1 1 1 1 0 2 0 0 1 1 3 1 0 1 0 1 0 0 0 1 0 0 0 1 1 4 0 1 2 2 3 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 2 1 0 2 0 0 2 1 0 2 0 0 0 1 0 3 1 0 0 0 1 0 2 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 2 0 0 1 2 1 0 0 0 0 1 0 0 0 1 1 1 2 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 +1 1 0 0 0 0 0 0 1 0 2 0 1 0 0 0 0 1 0 1 0 0 0 1 2 0 0 0 2 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 1 0 0 2 1 0 0 0 1 0 0 0 3 0 0 1 0 0 1 0 0 0 2 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 2 1 1 0 1 2 1 1 1 0 2 1 1 2 2 0 1 3 1 2 0 1 2 0 0 1 0 0 2 0 0 0 2 1 0 1 1 0 1 0 1 0 2 1 2 0 1 0 1 0 0 0 2 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 0 1 0 2 0 1 0 1 0 1 0 0 0 2 0 1 1 0 0 0 0 2 0 0 0 1 0 1 0 0 1 0 1 0 0 2 1 0 1 1 1 0 0 0 3 0 0 0 0 0 2 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 2 2 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 0 1 0 1 +1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 2 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 0 0 0 0 0 2 0 2 1 0 1 0 1 0 0 1 1 2 1 2 0 1 0 1 2 0 0 0 2 1 1 1 2 1 0 2 0 1 2 1 0 3 1 0 1 2 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 2 0 1 0 0 0 1 2 1 0 1 0 0 0 0 0 1 1 0 2 1 0 1 1 2 2 0 0 0 0 0 0 2 1 0 4 0 0 0 0 0 1 2 1 0 2 0 0 0 0 2 1 0 0 1 2 1 0 0 1 1 1 0 0 1 0 1 0 0 0 2 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 +0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 2 0 3 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 1 0 3 2 0 1 1 1 0 0 1 2 0 1 0 1 1 1 1 0 1 1 0 0 0 1 0 4 1 0 2 0 1 0 0 1 1 0 0 2 0 3 2 1 0 0 2 2 1 1 0 1 1 1 2 0 0 2 1 0 2 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 2 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 3 2 0 0 3 0 0 2 0 1 1 0 0 0 2 1 2 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 +0 0 0 0 0 1 1 1 0 0 0 2 0 2 0 1 0 1 0 0 0 1 1 2 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 2 0 0 0 0 0 0 0 1 0 0 0 0 2 1 2 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 2 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 2 1 1 3 2 1 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 2 0 1 1 0 0 0 0 0 1 0 2 1 2 1 1 0 0 1 0 1 0 3 0 0 1 0 2 1 1 0 0 0 0 1 1 0 0 1 0 2 0 0 2 0 1 3 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 1 0 1 0 0 0 1 1 0 1 0 2 0 0 0 0 0 1 2 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 2 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 +0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 3 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 3 0 0 0 1 0 1 0 0 0 2 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 2 1 0 0 0 0 0 1 2 0 0 1 0 1 1 1 0 0 1 0 1 0 1 1 0 2 2 0 0 1 1 1 1 1 3 1 0 0 1 1 0 3 0 3 0 0 2 1 0 0 3 0 0 0 0 0 1 2 0 2 2 0 1 0 0 0 1 0 0 0 0 0 0 2 1 0 1 1 0 0 2 0 0 0 1 1 0 1 0 2 0 1 1 1 0 2 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 2 2 2 1 2 0 2 0 0 0 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 3 0 0 0 2 0 1 2 0 0 0 0 0 0 0 0 3 0 1 1 0 0 0 0 0 0 0 0 2 0 1 0 0 2 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 +1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 2 1 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 2 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 3 1 1 4 2 0 0 1 1 0 0 0 3 0 1 0 0 1 0 2 1 2 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 2 0 1 0 0 2 0 1 0 0 1 0 1 0 0 1 0 1 1 0 2 1 0 0 0 1 1 1 1 1 1 0 2 0 1 0 0 1 1 0 0 1 1 1 0 0 1 2 0 2 1 1 0 2 0 1 0 1 0 1 1 0 2 2 2 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 4 0 1 1 1 1 2 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 2 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 2 1 0 1 0 0 0 0 1 1 1 1 2 0 1 2 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 2 0 1 1 0 0 0 0 1 0 2 1 1 0 0 1 0 2 0 2 1 2 0 0 3 0 1 0 0 0 0 3 1 0 1 0 1 3 0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 1 3 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 2 0 1 0 2 1 1 1 2 3 0 0 1 0 0 3 1 0 0 2 2 0 3 0 2 1 1 0 1 2 0 2 0 0 1 1 1 1 0 2 0 0 0 0 0 1 0 0 1 1 1 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 4 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 +1 0 0 2 1 0 0 1 1 1 1 0 1 1 3 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 2 2 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 3 0 0 0 0 0 1 0 0 1 0 0 0 0 0 2 2 1 0 0 1 0 1 0 0 0 1 0 3 1 2 0 0 1 2 0 0 1 0 1 0 0 2 1 0 1 0 1 0 1 0 2 0 0 1 0 1 1 0 0 0 0 1 0 2 0 0 1 0 1 0 1 0 1 1 0 0 0 2 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 2 0 0 0 0 1 0 0 0 1 0 0 2 0 1 1 1 1 0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 3 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 2 +0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 2 0 1 0 1 0 0 0 0 0 2 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 2 1 0 0 1 0 0 0 0 0 0 1 1 1 2 2 1 0 0 0 1 0 1 0 1 1 0 3 2 0 0 0 2 2 0 0 0 0 0 1 2 1 0 0 0 0 3 1 3 1 4 0 0 1 1 0 0 3 1 0 0 0 1 0 0 0 0 1 0 1 2 1 0 0 1 0 1 2 0 2 1 1 0 0 0 2 0 2 1 1 1 0 1 0 0 0 2 2 1 0 2 2 0 2 0 0 1 1 0 0 0 1 1 1 1 0 2 1 1 1 0 0 1 1 0 0 1 0 2 1 0 2 0 1 3 1 0 0 1 0 0 2 0 0 0 2 1 0 0 0 0 0 2 0 1 0 0 0 0 1 0 1 0 3 0 0 0 0 1 2 0 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 2 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 +0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 2 1 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 2 2 1 1 1 0 0 0 0 0 1 0 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 3 1 1 0 1 0 0 0 1 1 0 1 0 1 1 3 0 0 1 0 2 0 0 1 0 0 1 1 1 1 0 0 0 2 0 4 1 1 2 0 1 1 0 0 0 0 0 0 1 0 1 0 1 3 0 2 0 2 1 1 1 1 2 2 3 0 0 1 0 0 0 3 0 0 0 0 2 0 1 1 0 1 2 1 0 0 1 1 2 0 2 0 2 0 1 1 0 2 1 0 2 2 0 0 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 2 0 2 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 2 0 2 1 0 0 0 2 2 0 1 2 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 +0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 3 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 1 1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 2 1 0 2 1 2 0 1 0 1 1 2 1 1 0 1 3 0 0 0 2 1 0 0 2 2 0 2 0 0 1 2 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 3 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 1 1 1 1 0 2 1 1 1 0 1 0 0 1 0 1 0 0 0 2 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 2 0 1 0 0 0 0 1 0 0 2 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 1 0 0 0 1 0 0 2 0 0 0 1 0 0 0 1 0 0 0 2 0 0 2 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 2 0 0 0 0 0 1 3 1 1 1 0 0 1 0 0 0 1 1 0 1 1 2 0 1 0 1 0 1 0 0 0 4 1 0 2 0 0 0 1 1 3 0 1 0 0 1 0 0 0 0 0 0 2 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 1 4 0 0 1 1 2 0 1 0 0 1 1 1 1 2 2 2 1 2 3 0 0 1 0 0 0 0 0 1 0 1 2 1 0 0 0 1 1 0 0 0 0 0 1 1 0 2 0 2 1 2 1 1 0 2 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 2 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 2 1 0 1 2 0 0 1 0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 0 0 1 0 2 0 0 0 1 1 0 0 0 0 0 0 0 1 2 1 0 0 1 0 0 0 0 0 1 0 0 2 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 2 0 +1 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 2 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 2 1 1 0 0 2 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 2 0 2 0 2 0 0 1 0 1 1 0 0 0 1 2 0 0 0 0 0 0 1 0 1 0 1 0 0 1 2 2 2 1 0 2 1 0 0 0 0 0 3 0 2 0 0 0 1 1 0 0 0 1 1 0 0 2 0 0 0 0 1 1 1 0 0 0 1 0 0 2 0 0 1 1 0 0 2 2 2 0 1 0 2 1 0 1 1 0 2 0 1 2 0 1 1 0 1 0 0 0 0 2 2 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 2 1 0 0 0 0 0 1 0 1 0 1 2 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 2 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 +0 0 0 1 0 0 1 0 1 0 0 0 1 2 1 1 0 0 0 1 0 0 1 2 0 2 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 2 0 1 0 0 0 2 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 2 0 0 0 0 0 0 2 0 0 1 1 0 1 1 0 1 0 0 1 2 0 2 1 0 0 0 1 0 0 1 1 0 2 1 2 1 0 0 1 2 0 0 3 1 0 1 0 0 0 1 1 0 0 1 1 0 0 0 2 2 0 0 2 0 1 0 0 1 1 0 1 0 0 0 2 1 1 1 0 2 0 3 0 1 0 0 0 1 0 2 0 2 0 0 0 2 1 1 1 0 0 0 1 1 0 1 2 1 0 1 1 0 0 1 0 0 0 0 0 1 0 2 0 2 1 1 1 0 0 2 0 0 0 0 0 0 2 0 0 1 1 1 0 0 0 0 1 1 2 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 2 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 4 0 0 0 0 1 0 0 1 1 2 1 0 2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 3 0 3 1 0 1 0 0 0 1 1 0 1 0 1 0 2 0 2 0 1 1 3 0 1 0 2 0 1 0 0 0 2 0 0 1 1 0 0 1 1 0 2 2 0 0 2 0 0 0 0 0 0 1 3 0 1 0 0 0 1 1 2 0 0 2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 3 0 1 1 0 1 0 1 0 1 0 0 1 2 0 1 0 0 0 0 0 1 0 0 0 0 3 0 0 0 3 0 1 0 0 0 0 0 1 0 2 1 0 0 1 1 0 0 2 0 0 1 1 0 0 1 2 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 +1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 3 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 1 2 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 2 0 0 2 1 2 0 0 1 0 1 0 2 1 0 1 0 1 3 1 0 0 1 1 0 0 0 0 0 1 1 3 1 0 1 0 2 1 0 1 1 0 1 0 0 0 0 1 2 0 0 1 1 0 0 2 1 1 0 3 1 1 2 0 1 0 2 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 2 2 0 0 2 0 2 0 0 0 1 0 1 0 0 1 0 1 0 2 0 0 0 2 1 1 1 1 0 0 1 2 1 1 0 1 0 1 0 0 0 0 0 1 2 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1 2 0 0 0 0 0 0 1 2 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 +0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2 0 2 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 3 3 1 0 0 0 2 1 2 1 2 0 0 0 2 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 0 4 1 0 4 1 1 1 0 0 0 1 1 0 0 2 1 1 1 0 1 1 1 0 1 2 1 1 1 0 0 0 1 1 2 2 1 0 1 0 2 2 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 2 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 2 +0 1 0 2 1 2 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 0 0 2 0 0 0 1 1 0 1 0 0 1 0 0 0 2 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 1 1 1 2 1 1 1 0 3 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0 1 2 0 1 0 0 0 1 2 1 0 0 1 0 1 0 1 2 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 2 0 0 1 0 2 2 0 2 0 2 0 4 0 1 0 1 0 0 2 0 1 0 0 0 0 0 0 2 0 1 0 2 0 0 0 1 0 1 0 3 0 0 1 0 0 0 1 1 3 0 0 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 2 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 2 0 0 1 0 0 1 0 0 1 2 0 0 1 1 0 0 0 0 1 0 1 0 +1 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 0 2 0 1 0 1 2 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 2 0 0 1 1 0 2 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 2 0 1 2 0 1 2 0 1 1 1 2 2 1 1 0 2 2 0 1 1 2 1 1 0 1 1 0 2 2 0 0 2 0 0 1 1 1 0 2 1 0 0 0 0 3 0 0 1 1 1 0 0 1 0 1 3 0 0 2 0 0 0 1 1 3 0 2 1 1 0 0 0 1 1 0 1 0 0 0 1 2 1 1 0 1 0 1 1 0 0 1 2 0 1 2 1 0 0 1 0 0 1 0 2 2 0 2 0 0 1 2 0 3 0 1 0 0 1 0 0 2 1 2 1 1 0 0 0 0 0 0 0 0 3 2 0 0 1 2 0 1 2 1 1 1 0 0 0 0 1 0 1 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 +0 0 1 1 0 0 0 0 0 0 0 2 0 0 2 1 0 1 0 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 1 1 0 0 3 0 3 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 3 2 2 1 1 1 0 1 0 0 1 1 0 4 0 1 0 0 0 0 1 2 0 1 3 0 2 1 1 2 1 0 1 1 2 0 0 0 2 0 2 0 1 0 3 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 1 1 0 1 2 1 3 0 0 0 2 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 +0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 2 0 0 1 0 1 0 0 1 0 2 0 2 0 0 1 1 0 0 2 0 2 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 1 0 0 2 0 1 2 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 1 0 3 2 1 1 1 1 0 1 1 0 0 0 2 1 0 0 2 1 1 0 0 1 1 1 0 2 1 2 1 1 1 2 1 1 0 0 1 0 2 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 2 0 0 1 1 1 2 1 0 1 0 1 0 1 2 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 3 1 0 0 0 1 1 0 1 0 3 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 +0 0 1 1 0 2 0 1 0 2 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 1 0 0 0 1 1 2 1 2 2 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 2 0 2 1 2 1 1 1 0 1 1 0 2 0 0 2 0 0 0 1 1 1 2 1 1 1 1 1 0 0 2 1 1 2 0 0 0 2 0 1 1 0 1 0 0 2 3 1 1 1 0 0 3 1 1 0 0 0 3 1 1 1 0 1 0 0 2 0 0 0 1 1 1 2 0 1 0 2 0 0 1 1 0 0 2 3 0 1 1 0 0 0 0 2 3 0 0 2 0 0 0 2 0 2 0 0 1 3 0 0 1 2 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 2 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 2 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 1 1 0 2 3 2 1 0 0 0 0 0 0 0 2 1 0 1 0 0 3 1 1 1 0 1 1 0 0 1 0 2 0 0 0 0 1 1 1 0 0 1 0 0 2 0 1 0 1 0 0 1 1 2 0 1 0 0 0 0 1 0 0 0 1 0 2 2 0 1 1 0 2 0 0 1 0 0 1 0 0 1 4 0 0 0 0 0 0 3 1 1 1 1 2 1 2 1 0 0 1 1 0 0 1 0 1 1 1 0 0 1 2 0 1 2 2 2 0 0 0 1 0 1 1 1 4 0 1 1 1 0 1 1 0 3 1 0 0 0 1 0 1 3 0 0 1 0 0 0 1 2 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 1 1 1 1 0 0 0 0 2 0 0 0 1 0 0 4 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 3 0 +2 0 0 0 2 1 0 0 0 1 0 0 2 0 1 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 0 2 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 2 1 3 2 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 2 3 0 0 0 2 0 1 1 0 1 2 0 1 0 1 1 1 0 3 2 0 0 0 0 1 1 0 1 1 1 0 1 1 3 0 0 1 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 2 3 0 0 0 0 2 0 0 1 1 0 2 1 1 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 2 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 2 2 0 0 1 0 0 0 0 1 0 0 1 0 2 0 0 1 0 0 0 0 2 0 1 0 1 0 0 1 2 0 0 0 0 0 1 0 0 0 1 0 2 1 1 0 0 1 0 0 0 1 1 0 0 1 +0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 2 0 0 0 1 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 1 2 0 0 0 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 2 0 0 0 0 0 0 2 1 1 2 0 1 0 0 0 2 0 0 0 1 0 0 0 0 2 0 1 2 1 0 0 1 0 3 0 0 1 1 2 0 1 2 2 0 0 1 1 0 0 4 0 1 1 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 1 2 0 2 0 0 1 0 0 0 0 1 2 1 3 1 0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 2 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 2 1 1 1 0 0 0 0 0 2 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 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 +1 0 0 0 0 0 3 1 0 2 0 1 0 0 2 0 0 0 1 0 2 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 2 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 2 2 0 0 0 1 0 2 0 1 1 1 1 1 1 1 0 0 1 2 1 1 1 1 1 1 1 0 0 3 3 1 0 0 1 0 1 2 0 0 0 0 0 0 0 0 0 4 1 0 1 0 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 4 0 0 0 1 2 0 1 1 0 2 0 1 2 1 1 1 0 1 2 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0 1 1 0 0 0 2 0 0 1 0 0 1 1 1 1 0 0 0 1 1 0 2 0 1 0 0 2 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 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 2 0 0 0 0 0 0 0 0 0 2 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 2 1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 2 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1 2 1 0 2 0 0 1 0 0 0 0 0 1 2 0 0 0 1 0 0 0 1 0 1 3 1 0 2 0 1 0 1 0 1 1 0 0 0 0 0 2 0 2 2 1 1 0 0 0 1 1 1 1 0 2 1 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 1 2 1 0 0 1 0 1 0 0 0 0 0 1 0 0 3 0 0 0 0 0 3 2 1 0 1 0 0 1 0 0 1 1 0 0 0 1 2 0 0 3 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 2 0 2 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 +0 2 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 2 1 0 0 1 1 1 1 1 0 2 0 0 1 0 0 0 0 1 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 2 1 1 3 1 0 1 0 1 0 0 1 0 2 0 0 0 0 0 0 1 1 1 0 2 1 0 3 0 0 0 0 1 0 1 2 1 1 0 2 1 0 0 0 2 1 0 0 0 0 0 0 2 2 0 0 0 0 1 0 3 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 0 2 0 1 0 0 1 0 1 1 2 0 1 0 2 0 0 0 0 0 1 2 0 1 1 1 1 0 0 2 0 0 0 0 1 0 0 3 1 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 2 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 +0 1 0 1 0 0 0 1 0 0 1 0 0 3 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 2 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 2 0 0 0 1 0 1 0 2 0 1 2 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 2 0 1 0 2 0 1 0 1 2 0 2 1 0 1 0 1 0 1 1 1 0 1 2 1 1 0 0 1 0 0 0 0 0 0 0 2 1 0 0 0 1 0 1 2 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 2 0 0 0 0 0 0 1 0 0 1 1 2 3 2 0 0 2 0 1 2 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 2 1 2 0 0 0 0 1 1 1 2 2 0 0 0 0 1 3 1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 2 1 2 0 1 0 0 2 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 1 0 0 0 0 0 2 0 1 0 0 0 +0 1 1 0 3 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 2 1 0 0 1 0 0 1 0 0 0 0 0 1 0 3 2 1 1 1 1 1 1 3 0 0 2 0 0 0 0 1 2 1 0 0 0 0 2 0 0 0 0 0 2 2 0 1 0 1 0 0 4 0 2 0 0 0 0 0 1 0 0 1 1 0 1 2 0 0 2 0 0 1 0 1 1 0 0 0 0 2 1 0 0 0 2 0 0 1 0 0 1 1 0 1 3 1 0 0 2 1 0 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 0 1 1 2 0 2 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 2 0 1 0 0 2 0 0 2 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 3 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 +1 0 2 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 2 0 1 0 1 0 0 2 1 0 1 0 1 0 0 1 0 1 0 0 0 2 0 0 0 0 0 0 1 0 2 1 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 2 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 2 1 1 0 1 2 0 2 2 0 1 0 0 0 1 0 1 1 2 0 1 1 2 0 0 0 0 1 1 2 4 0 0 1 1 1 1 1 0 0 0 1 2 0 2 2 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 2 0 0 2 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 2 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 1 1 0 0 0 1 1 0 1 0 1 0 0 0 1 2 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 2 0 1 0 0 0 0 1 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 1 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 2 0 0 2 0 0 0 0 0 0 1 0 0 1 0 0 0 3 0 1 2 1 0 0 1 1 0 1 1 1 1 0 0 2 0 1 0 1 0 1 0 2 0 1 0 1 2 0 0 0 2 4 0 2 1 1 0 2 2 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 1 2 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 2 2 1 1 3 1 0 0 1 3 0 0 0 0 1 0 2 2 0 0 0 0 1 1 1 0 0 1 1 0 1 1 2 1 0 0 0 0 0 0 1 1 1 0 0 1 2 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 0 0 2 0 1 0 0 0 2 2 1 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 2 0 0 1 2 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 +0 0 0 0 1 0 1 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 0 0 2 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 2 0 2 0 0 0 1 0 2 0 0 1 1 0 1 0 0 2 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 2 1 2 1 1 1 0 1 1 1 2 0 1 1 1 0 2 0 1 1 0 2 1 1 0 0 1 0 0 0 1 1 1 0 0 1 2 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 2 0 0 0 1 3 2 1 0 1 0 1 1 0 1 1 0 3 1 1 1 0 0 3 0 1 0 1 0 0 2 4 0 0 0 0 2 2 0 0 1 1 0 0 0 1 0 1 0 0 0 1 2 0 1 1 0 0 1 3 0 0 1 2 0 1 2 0 0 1 0 1 2 1 0 0 2 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 2 0 3 2 1 0 2 2 0 1 2 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 0 1 0 3 0 2 0 0 1 1 0 1 0 0 2 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 3 1 0 1 0 1 1 1 1 1 2 0 0 1 0 0 3 0 1 0 1 0 0 0 0 0 0 0 0 0 3 0 0 1 1 1 1 3 0 1 0 1 2 2 0 0 1 0 1 0 0 1 1 2 0 0 0 0 0 2 1 1 2 1 0 2 1 2 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 2 0 1 1 0 0 1 1 0 1 3 2 1 1 0 1 3 1 1 0 1 2 1 0 1 0 1 0 2 0 2 0 2 0 3 0 1 1 1 0 1 1 1 1 0 0 3 2 1 1 0 1 1 0 0 1 2 2 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 2 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 +0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 2 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 2 0 0 1 0 0 0 0 0 0 2 0 0 0 1 0 0 1 0 1 2 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 2 2 0 3 0 0 0 2 1 0 0 0 1 2 2 0 1 2 1 1 0 0 0 0 0 0 0 1 2 1 0 0 0 1 1 0 0 2 0 3 1 0 0 0 0 0 1 0 0 0 0 0 1 2 0 1 0 0 0 2 1 0 2 3 2 1 0 0 2 0 0 1 0 1 0 1 0 2 2 1 0 0 1 0 1 0 1 1 0 2 0 0 2 0 1 0 2 1 1 1 1 0 0 0 1 2 0 0 3 0 0 0 2 0 1 0 0 0 2 1 1 0 1 1 1 0 1 1 0 0 2 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 0 3 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 1 0 0 0 0 +0 3 0 0 0 0 0 1 0 0 3 0 0 1 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 2 0 2 1 0 2 0 0 0 0 0 0 1 1 0 0 3 0 1 2 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 3 0 0 0 0 0 0 0 1 1 1 1 1 2 1 2 1 1 2 1 3 1 0 0 1 0 0 0 1 0 2 0 0 0 1 0 1 2 0 2 0 1 2 1 0 1 1 1 1 2 0 2 1 0 0 1 0 1 2 0 2 2 2 1 0 0 0 0 1 0 0 0 2 0 2 0 1 2 1 0 0 0 0 0 2 1 0 0 0 0 1 1 0 1 1 0 0 1 1 1 2 1 1 3 1 2 1 0 2 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 4 0 0 1 2 0 2 1 3 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 2 1 2 2 1 0 0 0 1 1 2 2 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 +0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 2 0 0 0 2 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 2 1 1 0 0 1 0 2 0 0 0 2 3 1 0 1 2 1 1 2 1 0 0 1 0 2 1 1 1 1 0 3 1 0 0 3 0 0 0 2 1 0 0 1 0 1 2 0 0 1 1 0 1 3 1 1 2 1 2 1 0 1 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 2 0 1 0 0 1 2 2 1 2 0 0 2 1 0 0 1 0 0 0 0 0 1 2 1 0 0 0 0 0 0 2 1 2 0 1 1 1 2 0 0 1 0 0 0 0 0 3 0 1 0 0 1 0 0 2 0 1 2 0 2 0 2 0 0 0 2 0 1 1 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 1 0 0 1 1 1 2 0 0 0 2 1 0 0 0 0 0 0 1 0 0 1 1 2 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 2 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 +0 1 0 0 0 1 0 0 2 1 0 1 0 1 0 0 1 2 2 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 2 0 0 0 1 0 2 0 0 0 0 0 0 1 0 1 2 0 1 0 1 0 0 0 0 0 0 0 1 0 2 0 1 1 2 0 0 1 0 1 1 0 0 1 1 1 0 0 0 2 0 0 0 2 0 0 0 2 0 0 1 3 2 2 1 1 0 0 0 1 1 0 2 1 3 1 1 1 0 1 0 0 1 3 1 1 1 0 3 2 0 3 2 1 1 1 1 1 0 1 0 1 1 2 1 0 4 0 1 1 0 2 2 0 0 4 0 2 0 0 3 0 1 1 1 1 0 1 3 0 1 1 0 1 0 0 3 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 1 2 0 0 1 2 3 0 0 3 0 0 1 0 0 1 2 1 0 2 0 0 1 0 0 2 3 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 1 3 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 +1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 2 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 4 2 0 0 1 1 0 1 0 1 0 0 0 1 2 0 0 3 0 1 1 0 0 1 3 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 1 2 0 2 1 0 1 0 0 0 1 2 0 1 1 1 2 0 1 2 1 1 1 2 0 0 0 0 0 0 2 2 0 1 0 0 0 2 1 0 1 1 0 0 1 3 1 0 0 0 1 1 0 2 0 1 1 0 1 1 1 2 1 0 3 0 0 0 0 0 1 0 3 0 1 0 1 2 0 0 0 1 1 0 1 1 0 1 2 0 1 1 1 0 1 1 2 0 0 1 1 0 1 0 0 0 1 0 4 0 0 0 0 1 3 1 1 0 0 0 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 +0 1 0 2 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 3 1 0 0 0 0 0 1 0 1 2 0 0 0 0 3 0 0 0 1 0 0 0 2 0 0 1 2 0 0 2 0 1 1 1 0 0 0 1 1 1 2 0 0 3 1 0 0 1 0 2 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 2 0 0 0 1 0 1 0 2 2 0 0 0 0 0 1 1 0 0 0 1 3 0 0 0 1 0 1 0 3 0 1 0 1 1 0 4 0 0 0 0 1 0 1 0 1 3 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 0 1 0 2 0 1 2 1 0 0 2 2 0 2 1 1 2 1 0 0 0 2 0 0 1 0 0 2 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 2 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 3 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 2 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 2 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 +0 0 0 2 0 1 0 0 2 2 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 2 0 0 0 1 0 2 1 0 0 0 0 2 0 1 0 1 1 0 0 1 0 1 0 0 2 1 2 1 0 0 1 1 1 0 0 0 0 1 0 0 3 0 0 2 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 3 1 0 2 1 0 1 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 0 0 1 1 2 1 0 1 3 1 0 0 0 0 0 0 0 1 1 2 0 0 0 1 0 0 2 0 3 2 2 0 0 0 1 4 0 1 1 0 0 0 1 1 0 2 0 0 0 1 1 0 1 2 1 0 0 1 0 2 0 1 2 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 2 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 2 0 2 0 2 0 1 0 0 0 4 0 1 1 1 1 0 0 0 2 0 0 2 0 0 1 0 0 0 0 2 0 1 1 0 0 1 0 0 0 0 0 0 +0 0 1 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1 0 0 0 0 0 0 2 1 1 0 0 0 0 0 1 0 0 0 2 1 0 0 0 1 1 0 1 0 0 0 0 0 3 0 2 1 1 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 2 1 1 0 1 0 1 0 2 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 2 1 2 0 1 1 0 0 0 0 2 1 2 1 2 2 3 0 1 3 0 0 2 1 0 0 0 0 0 1 1 0 2 1 1 1 0 0 1 1 1 1 2 0 2 0 0 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 0 2 1 2 0 1 0 3 2 0 0 0 2 0 0 0 0 0 0 3 0 1 1 1 2 0 1 2 0 0 0 1 1 0 0 0 1 1 0 0 3 0 2 0 1 1 1 2 1 1 0 0 1 0 0 0 0 1 2 2 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 2 0 1 0 0 0 0 0 0 +0 1 0 0 0 1 1 0 0 0 2 1 0 1 0 2 0 0 1 0 0 0 2 1 0 1 1 2 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 1 1 2 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 2 2 1 2 0 0 0 0 2 3 0 1 0 1 0 1 2 0 2 0 0 1 1 0 4 1 0 2 1 0 2 3 1 0 0 1 2 3 1 0 1 0 0 1 2 2 0 1 1 0 0 0 0 0 2 1 0 3 0 1 1 1 1 0 0 0 0 0 0 0 2 1 0 0 0 2 0 2 1 1 0 0 2 0 2 1 0 1 0 1 2 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 2 2 0 1 1 0 2 1 2 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 2 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 2 0 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 0 1 0 0 +0 0 0 1 1 0 0 0 0 1 0 1 2 0 0 0 0 2 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 2 1 0 0 0 1 0 0 0 0 0 2 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 2 1 0 3 2 0 0 0 0 0 1 1 2 1 2 3 0 1 1 1 1 2 3 0 1 1 0 0 4 1 0 2 0 0 0 2 0 0 1 0 0 1 2 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 2 0 0 2 1 3 2 1 1 0 1 0 0 0 0 0 1 1 2 0 2 3 0 0 0 1 0 2 0 0 0 1 0 0 2 1 0 0 0 2 0 0 1 1 0 0 1 2 0 0 0 0 1 1 0 2 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 2 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 2 0 0 +0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 2 1 0 0 1 0 1 0 1 0 0 0 0 0 0 2 0 0 2 0 0 0 0 3 0 1 0 2 0 2 0 0 1 2 2 1 0 0 0 1 1 2 1 0 2 2 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 2 0 0 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 2 0 0 2 0 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1 2 2 0 0 0 1 0 0 1 0 0 4 1 1 0 1 2 1 1 0 1 2 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 0 3 1 2 0 0 1 0 1 0 0 3 1 0 0 0 0 0 2 0 1 0 1 1 1 0 0 0 2 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 2 1 1 0 0 0 0 1 0 1 0 2 0 0 1 1 0 0 0 0 0 1 0 1 2 0 0 0 0 0 2 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 2 0 2 0 +0 1 0 0 0 0 2 0 0 0 1 0 0 0 2 1 0 1 2 2 0 0 0 1 0 0 2 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 2 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 2 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 1 2 1 1 0 1 0 0 0 1 1 1 0 2 1 1 3 1 0 1 2 0 1 2 2 2 2 0 0 1 0 2 0 0 1 0 3 0 1 1 2 0 0 2 0 1 0 0 1 1 2 1 2 2 1 0 0 0 2 0 2 0 0 0 1 0 0 1 0 1 0 1 1 0 1 3 0 0 0 0 1 0 3 1 0 0 1 1 0 0 0 1 1 0 1 1 0 1 1 1 2 2 0 0 1 1 2 0 0 0 0 0 0 1 0 1 1 1 2 2 0 1 1 0 1 1 2 2 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 2 1 2 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 2 1 0 0 0 1 0 1 0 0 1 1 1 1 +1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 2 1 1 1 1 0 1 0 0 1 0 1 0 0 0 0 1 1 2 0 1 1 0 0 0 0 0 0 1 3 0 1 1 0 0 0 0 2 1 1 1 0 1 1 1 0 0 2 0 0 0 0 1 0 0 0 2 0 0 0 2 0 0 1 2 0 0 1 0 1 0 0 0 1 0 0 0 1 2 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 2 0 1 0 1 0 0 0 0 1 0 1 1 1 0 2 1 2 0 0 2 1 1 0 1 0 1 0 0 1 2 0 0 2 0 1 1 0 3 1 1 0 1 2 2 1 0 0 0 0 1 1 0 0 2 0 0 1 0 1 0 2 0 0 1 2 1 1 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0 4 0 0 0 0 0 1 0 1 1 0 2 0 0 2 0 0 2 0 0 1 1 1 0 1 0 0 2 2 0 0 0 1 1 0 0 0 2 1 0 1 2 0 0 2 0 0 0 0 0 0 0 1 2 0 2 0 0 1 0 2 1 0 0 2 1 0 0 0 0 0 2 0 0 0 0 0 1 0 2 1 0 0 0 0 1 1 0 1 0 0 0 0 +0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 2 0 1 1 2 0 1 1 1 1 1 0 1 0 0 0 0 3 1 2 1 2 1 0 1 1 0 1 0 0 0 2 1 1 2 1 0 1 0 0 0 0 1 2 0 0 0 1 0 1 0 0 0 0 0 1 1 2 3 1 0 1 2 0 1 1 1 0 1 1 2 0 0 1 2 0 2 1 1 1 1 1 0 1 0 1 5 0 2 0 0 1 1 0 0 2 0 0 0 2 0 0 3 1 1 2 1 1 0 0 1 1 0 0 0 0 0 0 1 0 2 1 1 0 1 2 1 2 1 2 0 0 0 0 1 0 0 1 0 1 0 0 0 0 2 0 0 2 0 1 0 1 0 0 0 2 2 0 2 1 2 0 1 0 0 1 0 2 0 0 2 0 2 1 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 2 3 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 1 +1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 3 0 0 2 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 2 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 2 0 1 2 0 0 2 1 1 0 0 1 0 2 0 0 0 2 1 0 0 0 0 0 0 1 0 2 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 3 0 0 2 0 0 0 0 2 0 0 0 0 1 2 1 1 0 0 0 0 3 0 1 1 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 1 3 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 2 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 2 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 1 +1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 2 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 2 0 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 2 0 1 1 0 1 2 0 0 1 0 2 1 0 0 1 0 2 1 0 0 0 1 5 1 0 0 0 2 2 1 0 0 0 2 0 0 0 1 0 1 1 1 0 0 0 2 1 0 0 0 2 0 0 2 0 0 0 0 0 0 0 2 0 0 1 1 0 1 0 0 0 2 2 1 1 1 0 1 1 0 0 3 0 0 1 1 1 2 0 0 0 1 1 1 2 0 0 1 1 1 0 1 0 0 1 0 2 2 1 0 2 2 1 1 0 1 1 1 0 0 2 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 2 0 0 2 1 0 0 0 0 0 0 0 0 1 0 2 0 0 2 1 0 0 0 0 0 2 0 0 0 0 0 1 2 0 0 1 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 2 1 0 0 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 +1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 2 0 1 0 0 1 3 0 0 0 0 0 0 0 2 0 0 0 0 2 2 1 0 0 0 1 0 1 0 0 0 2 1 2 0 0 0 2 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 0 2 1 1 0 0 0 1 0 4 2 0 0 0 1 0 1 2 0 0 3 3 0 0 1 1 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 0 0 2 1 1 1 0 1 0 0 2 1 1 0 0 0 0 2 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 2 1 1 0 1 2 1 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 2 0 0 1 0 2 1 1 1 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 +0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 2 0 1 0 0 0 0 1 1 0 0 0 0 2 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 2 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 4 0 1 1 1 1 1 0 2 2 0 0 2 2 0 1 0 4 1 0 2 0 0 0 1 1 2 0 0 2 1 1 1 1 0 2 1 0 0 0 1 1 2 0 2 1 0 2 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 2 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 1 2 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 1 0 0 0 2 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 0 +0 1 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 0 1 0 3 0 1 1 0 1 0 0 0 2 0 0 1 1 0 0 0 3 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 2 1 1 0 1 2 1 0 1 2 0 0 3 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 2 1 0 1 0 0 1 0 0 0 1 1 2 0 0 1 1 0 0 2 0 2 0 2 3 0 0 1 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 2 2 2 0 1 0 1 1 0 0 0 0 2 1 2 1 0 0 1 1 0 0 1 2 0 0 1 1 0 1 3 1 1 1 1 0 2 0 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 2 1 1 1 1 0 1 0 0 1 0 0 1 1 0 2 1 2 0 0 1 1 1 1 0 3 0 0 1 1 2 1 2 2 1 0 0 0 0 0 0 1 0 0 1 0 0 0 2 1 0 1 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 2 1 1 2 0 0 0 0 0 0 2 0 1 1 0 0 0 0 1 0 +0 2 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 2 0 0 1 1 0 0 0 4 1 1 0 1 1 1 1 1 0 0 2 1 0 3 1 0 1 0 3 2 0 1 0 0 0 0 1 1 2 0 1 0 2 0 3 0 0 0 0 2 1 0 0 1 1 0 0 2 1 1 1 0 0 0 2 1 1 1 1 1 1 1 1 0 1 0 0 1 0 2 1 1 1 3 1 0 0 2 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 2 0 0 0 1 0 0 2 1 0 2 0 0 1 0 0 0 0 0 0 2 0 1 1 1 0 0 2 1 0 0 1 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 2 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 3 0 0 0 0 0 3 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 3 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 2 1 3 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 3 0 1 1 2 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 2 2 1 1 0 1 1 0 1 1 0 0 1 0 4 0 2 1 0 0 1 2 1 2 1 0 0 0 1 1 0 0 0 3 2 0 1 0 0 0 2 1 1 1 0 2 1 1 1 0 1 0 0 1 1 0 0 0 1 2 1 0 2 0 1 0 0 0 1 1 2 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 2 1 1 0 3 1 2 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 2 0 0 0 1 1 3 0 1 0 0 0 1 0 2 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 +0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 2 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 2 1 0 0 0 0 1 0 2 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 5 3 1 2 0 0 2 0 0 1 1 0 0 2 0 1 1 1 0 0 1 0 2 2 1 0 0 0 1 0 2 1 1 0 1 1 0 1 2 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 2 2 0 0 0 0 0 1 1 1 0 0 2 0 1 0 1 0 0 2 0 2 1 1 2 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 2 3 2 1 0 3 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 2 0 0 1 0 2 1 1 0 3 0 0 0 0 0 0 0 2 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 1 2 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 2 +0 0 0 1 0 1 0 1 2 1 0 1 1 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 2 1 1 1 1 0 0 1 0 1 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 2 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 3 2 0 2 1 2 1 1 1 1 0 1 0 1 1 0 0 0 1 0 0 2 0 0 2 0 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 0 2 1 1 1 0 0 1 0 1 2 1 0 1 0 0 2 1 1 1 0 0 2 1 0 0 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 1 1 2 0 2 1 3 0 0 2 2 0 1 0 2 4 0 0 0 0 0 0 0 0 0 4 0 0 0 1 2 0 2 0 1 0 1 0 0 0 1 0 2 0 1 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 3 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 1 1 0 2 2 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 +1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 1 1 0 0 0 0 2 1 2 1 0 0 1 1 0 1 0 0 2 0 0 0 0 0 0 0 1 2 0 1 0 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 0 2 1 0 1 0 0 0 2 0 0 2 1 0 2 2 0 2 0 0 0 2 1 1 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 1 0 1 1 2 0 1 0 1 0 1 2 0 0 0 1 0 0 1 2 1 1 3 0 1 1 0 0 0 1 2 1 0 1 0 1 2 3 1 2 1 0 0 0 2 0 0 1 0 1 1 0 0 1 2 1 3 1 0 1 1 1 2 1 1 1 1 0 1 0 2 0 3 0 1 0 1 0 1 1 1 2 2 0 1 0 0 1 1 0 1 0 0 4 2 1 0 0 0 1 1 2 1 0 2 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 2 1 0 0 1 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 +0 0 0 1 1 2 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 1 0 1 2 1 1 0 0 1 2 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 2 1 2 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 2 0 1 0 0 1 1 2 1 1 1 1 4 2 1 0 0 4 1 0 1 0 2 2 0 0 1 0 2 3 0 4 0 0 2 0 1 0 0 0 0 0 0 0 2 0 2 0 0 0 1 1 1 0 2 0 0 2 2 0 1 2 0 1 1 0 0 0 0 0 0 0 4 0 0 1 1 1 0 0 2 0 2 0 2 0 1 0 1 2 1 2 0 2 1 0 1 1 0 3 0 1 2 0 1 0 0 0 0 1 0 0 0 0 1 2 0 1 0 0 0 0 1 0 0 2 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 2 1 1 1 0 0 3 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 3 1 0 2 0 0 0 0 0 +0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 0 2 1 0 2 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 3 0 0 0 0 0 1 0 1 0 1 0 0 0 0 2 2 1 0 0 0 0 0 0 0 0 1 0 2 0 0 1 1 1 2 2 0 0 1 1 1 0 1 2 0 1 1 0 1 1 2 0 0 0 2 0 0 0 0 0 1 1 1 0 2 1 1 0 0 1 0 0 2 0 1 0 0 0 0 2 1 0 1 1 0 0 0 0 1 0 2 0 2 1 0 0 0 0 0 1 1 3 0 2 0 0 0 1 0 0 0 1 0 0 1 0 3 0 0 0 0 4 0 1 3 1 0 1 1 1 0 0 0 3 0 2 2 0 0 0 1 0 1 0 3 2 1 1 0 0 0 1 0 2 0 1 1 0 0 1 0 0 3 2 1 2 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 +0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 0 2 0 0 0 1 0 1 1 1 1 2 0 0 1 0 0 0 1 0 0 2 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 3 2 0 0 0 0 1 0 1 2 2 1 0 0 0 0 1 0 0 0 0 1 1 0 2 1 1 1 2 1 0 2 1 0 2 0 0 0 1 2 0 0 4 0 1 2 0 0 0 0 4 1 1 0 0 1 1 0 2 0 0 1 0 1 1 1 1 0 0 2 1 2 0 2 0 2 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 2 0 2 0 2 2 3 1 0 2 3 0 0 1 0 0 0 0 1 0 1 2 1 0 2 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 0 0 1 0 1 0 2 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 +2 0 1 1 2 0 0 0 0 2 0 0 0 1 0 0 3 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 2 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 2 1 4 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 2 1 0 1 0 0 3 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 2 0 1 1 1 0 0 1 1 1 2 0 1 3 2 0 0 1 0 2 1 0 3 0 2 0 1 0 1 0 0 1 0 1 1 1 3 0 1 0 0 3 1 0 1 1 1 1 0 0 0 0 1 0 0 1 2 1 1 1 0 0 0 1 0 0 1 0 0 2 2 2 3 1 1 1 1 0 0 1 0 1 1 1 0 2 0 0 0 1 0 0 1 3 1 0 3 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 3 2 0 0 0 2 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 3 0 0 2 0 2 0 2 1 0 +0 1 0 0 0 0 0 1 0 1 0 1 2 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 2 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 3 0 0 0 1 3 0 0 3 0 2 0 2 1 1 0 2 2 1 1 1 0 0 0 1 1 0 1 3 1 2 1 1 0 1 2 1 2 0 2 0 0 0 1 0 0 1 2 1 2 1 0 1 0 0 0 0 1 1 2 2 1 0 2 0 1 0 2 1 1 0 2 2 0 0 2 0 1 0 3 2 0 1 1 2 2 0 2 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 2 1 1 3 2 0 1 0 2 0 0 1 1 0 0 4 1 2 2 0 1 1 0 0 1 1 1 1 0 1 2 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 2 0 0 0 1 1 0 1 0 0 1 2 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 2 0 0 0 0 1 2 0 0 0 1 2 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 +0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 2 3 0 1 0 0 0 0 0 0 0 1 0 0 1 2 0 2 2 0 3 2 2 0 0 0 1 2 1 0 1 1 0 1 2 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 2 1 0 1 0 1 0 1 2 2 0 0 1 3 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 2 0 0 0 0 1 0 0 0 0 1 2 0 0 0 1 1 1 0 1 0 2 2 1 1 1 2 0 0 2 3 2 1 0 1 0 2 1 2 0 0 1 0 0 0 0 3 0 0 1 2 0 2 0 0 0 1 2 1 2 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 1 0 1 2 0 1 1 1 5 0 1 2 2 1 2 0 2 0 2 1 1 0 1 0 0 2 2 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 2 1 0 0 1 0 0 1 1 1 1 1 1 0 3 0 0 0 0 1 2 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 +0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 2 0 2 0 1 0 0 0 0 1 0 2 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 2 2 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 2 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 2 1 2 3 0 1 1 1 1 0 0 1 3 0 0 1 1 0 2 1 0 2 1 0 1 1 3 0 1 2 1 1 0 0 0 0 0 4 2 0 1 0 0 0 0 2 1 2 1 0 0 0 2 1 2 1 0 0 1 1 1 0 1 2 1 3 2 3 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 2 1 0 0 1 0 2 0 1 0 1 1 1 0 1 1 1 1 2 0 2 0 0 1 2 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 1 1 0 0 0 0 2 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 +0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 1 1 0 1 0 0 0 1 2 0 0 0 1 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 1 0 0 2 3 1 0 0 0 1 1 1 0 0 2 2 1 0 0 0 0 1 0 0 1 0 2 0 1 1 0 0 2 1 0 1 0 2 2 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 2 0 1 1 2 2 0 1 1 1 2 0 0 1 1 1 1 0 0 0 1 1 0 0 2 2 1 1 1 1 0 4 0 1 1 0 1 1 1 1 3 4 2 2 0 1 1 0 0 0 1 0 0 0 1 0 0 2 1 0 0 1 0 0 1 1 0 0 0 1 1 2 2 2 0 0 1 1 1 2 2 2 0 0 0 1 0 0 3 0 0 2 0 2 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 2 1 2 0 1 2 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 +0 0 0 0 0 0 2 0 4 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 2 0 0 0 2 0 0 2 0 0 0 0 0 1 1 1 0 2 1 0 0 0 0 2 0 0 1 1 1 0 0 0 0 0 2 0 1 0 0 0 1 2 2 1 2 4 0 0 1 0 1 0 0 0 0 3 1 2 0 0 0 1 0 1 0 0 1 0 2 0 1 2 1 2 1 2 2 2 0 0 0 0 0 1 2 0 0 1 1 2 2 0 1 0 0 1 2 2 2 1 0 0 0 2 1 1 1 1 1 0 0 2 0 1 0 1 0 0 1 0 2 1 0 1 0 0 1 0 0 1 1 0 0 2 0 1 0 0 1 0 1 1 2 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 2 0 0 1 0 0 0 1 0 0 0 0 0 2 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 3 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 2 0 1 1 0 0 0 0 0 1 3 0 0 0 0 1 0 +0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 2 1 0 2 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 2 0 1 0 1 1 1 3 0 0 1 0 0 0 0 0 0 0 1 2 1 0 0 1 2 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 5 0 0 1 1 0 1 1 0 0 1 0 2 1 0 0 1 1 1 0 1 1 4 1 0 2 2 1 0 1 2 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 2 1 0 1 0 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 2 0 0 1 4 1 2 1 1 0 2 1 0 1 1 0 0 0 3 0 1 2 0 1 0 0 0 2 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 2 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 1 2 0 1 2 0 1 0 0 2 0 0 1 0 1 1 0 0 1 2 0 0 0 2 2 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 +1 0 0 0 0 2 1 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 2 1 0 1 3 0 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 1 1 0 0 2 1 1 1 0 1 0 0 0 0 0 0 0 1 0 3 0 0 0 1 0 0 0 0 1 1 0 0 0 2 1 0 1 1 1 1 0 2 2 2 1 0 0 0 2 1 2 0 0 1 1 0 1 2 0 2 2 1 0 1 2 1 0 0 1 1 2 1 1 1 0 0 1 1 0 1 2 0 0 0 0 1 0 0 1 0 0 2 1 0 0 0 0 1 2 3 1 2 1 1 0 0 0 1 1 1 0 0 1 0 0 1 2 0 0 1 0 1 0 1 0 3 1 1 3 1 0 3 2 1 1 0 0 1 0 0 1 1 2 0 1 1 0 0 0 1 1 0 2 2 0 0 2 3 0 1 1 1 2 1 1 0 2 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 2 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 +1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 3 0 1 0 0 0 0 0 0 0 1 0 3 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 2 2 1 0 1 1 0 0 1 1 0 0 0 1 2 1 0 1 2 1 1 1 1 1 1 0 2 1 1 0 1 0 1 2 1 0 0 0 1 0 0 1 1 0 0 3 1 1 0 1 0 2 1 1 0 4 1 2 1 0 1 0 1 1 0 0 0 1 0 1 1 3 1 0 1 0 0 2 0 0 1 0 0 1 1 2 3 1 2 4 0 1 1 0 1 0 0 1 0 1 3 0 1 1 1 0 0 0 1 0 0 0 1 0 0 2 2 0 1 0 0 1 0 1 0 0 2 1 0 2 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 2 0 0 0 2 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 2 0 0 0 0 0 0 2 0 1 1 1 3 1 2 1 0 2 0 1 1 3 0 1 0 0 1 0 0 0 0 0 0 3 0 0 1 1 0 0 0 1 0 0 1 1 0 +0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 2 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 1 1 1 0 2 0 0 0 1 0 2 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 2 0 1 1 1 0 0 1 1 3 1 0 1 1 0 1 2 1 2 1 0 1 0 1 0 2 1 0 1 0 1 0 0 3 0 0 0 1 0 0 0 2 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 2 0 1 0 1 2 0 0 0 0 3 1 0 0 0 0 1 0 0 0 0 2 1 0 1 2 0 0 1 2 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 3 0 0 1 0 0 0 3 0 0 2 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 2 0 0 1 0 0 2 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 +1 0 0 0 1 0 0 2 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 5 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 2 0 1 0 1 1 1 0 0 1 2 1 2 2 1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 2 0 1 5 0 0 0 1 2 0 2 2 0 0 2 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 1 2 1 1 0 2 0 1 0 2 0 0 1 0 0 0 0 0 1 2 0 1 0 1 0 0 0 1 1 0 0 1 0 1 4 2 0 3 1 0 0 0 0 0 1 2 1 1 1 0 2 0 0 2 1 0 1 0 0 2 1 0 1 0 1 0 1 1 1 0 2 3 1 0 0 1 3 1 1 0 0 1 1 0 1 1 3 1 0 2 1 0 0 0 0 0 2 0 0 0 0 0 0 1 1 1 1 2 0 3 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 2 1 1 1 1 1 0 2 0 0 0 0 0 1 0 1 2 0 0 0 1 0 0 0 +0 1 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 2 1 0 2 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 2 0 0 1 0 0 1 0 0 1 2 0 0 1 1 0 0 2 0 0 0 1 0 0 1 0 2 0 2 0 0 0 1 2 2 0 2 1 0 0 0 0 0 1 1 0 1 0 1 2 1 4 0 0 1 0 0 0 0 0 2 0 0 1 1 0 0 0 3 2 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 2 1 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 1 2 0 1 1 0 0 2 0 1 0 0 1 0 4 1 0 1 1 1 1 0 0 0 1 2 1 0 1 1 3 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 2 3 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 3 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 2 0 0 1 1 0 0 0 0 +1 0 1 1 0 0 0 1 2 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 1 0 2 0 1 0 0 0 1 1 3 1 1 1 0 0 0 1 2 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 1 0 2 1 0 0 0 1 0 2 0 1 0 0 0 2 1 1 1 0 1 0 0 0 1 1 0 0 0 0 2 0 1 0 1 0 1 0 0 2 1 2 2 0 0 1 2 1 0 1 1 0 1 3 3 0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 1 2 1 0 0 0 2 0 0 0 0 1 0 1 2 0 1 2 0 0 1 1 1 3 2 1 1 4 0 2 0 1 2 1 0 0 0 1 1 1 1 2 1 0 1 1 0 0 1 2 0 0 0 0 2 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 2 0 0 2 0 0 2 0 0 0 2 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 3 1 0 0 0 0 1 0 0 2 1 0 0 1 0 3 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 2 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 +0 0 0 1 1 0 1 0 0 0 0 0 0 1 3 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 2 0 1 1 0 0 0 0 0 0 1 1 0 0 0 2 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 1 3 0 0 1 0 4 0 2 0 0 0 0 1 2 2 1 1 1 0 0 1 0 1 0 1 1 0 2 1 2 0 0 0 2 1 1 3 2 2 0 2 0 1 1 0 0 1 1 0 1 2 1 1 1 1 0 1 1 1 1 0 0 0 1 4 0 1 0 0 0 0 0 0 0 0 3 0 0 0 0 1 1 1 2 1 1 0 2 0 1 0 1 2 1 1 1 1 1 2 1 0 0 0 0 2 3 2 0 0 2 2 2 1 1 2 1 1 0 1 0 1 0 0 1 0 1 1 1 0 2 0 1 0 0 0 0 0 1 0 1 0 0 0 0 2 2 0 1 0 0 0 1 2 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 0 2 0 0 0 1 0 0 1 0 1 0 0 1 0 2 0 0 1 1 1 1 0 0 2 0 1 2 0 0 0 +0 1 0 2 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 2 1 0 0 0 0 1 0 1 0 0 0 0 2 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 2 0 1 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0 0 1 1 1 0 1 1 2 1 2 1 0 1 1 0 1 0 1 2 1 0 1 0 0 1 0 3 1 2 0 0 1 1 1 2 0 0 1 0 1 2 1 0 0 1 0 0 2 0 0 2 0 0 1 0 2 3 1 0 1 0 1 0 1 0 2 0 1 1 2 1 1 1 0 0 1 0 1 2 1 2 1 1 2 0 0 0 0 0 1 1 1 1 0 0 0 2 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 2 0 1 0 1 2 0 2 0 3 0 2 0 0 1 0 1 0 0 0 1 0 1 2 0 0 1 2 0 1 1 0 0 0 2 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 2 2 0 0 1 0 0 0 +0 2 1 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 2 0 2 0 0 1 1 1 0 2 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 2 1 0 0 0 1 0 1 1 0 0 0 1 0 0 2 0 3 1 0 1 0 1 0 0 2 1 1 0 0 2 0 1 0 0 1 0 1 0 1 0 0 2 1 1 3 1 1 1 1 1 1 2 0 0 0 0 2 1 0 0 2 1 2 2 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 3 1 0 0 3 0 0 0 2 0 0 0 0 2 0 3 1 0 1 2 3 1 2 0 0 1 2 1 1 0 1 1 1 1 0 3 0 2 1 1 0 1 0 2 0 0 2 2 1 1 1 1 0 1 0 0 2 1 1 0 1 0 0 1 0 0 0 0 0 3 1 3 0 1 2 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 2 0 0 0 0 1 1 2 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 2 0 1 1 0 0 1 0 2 1 0 2 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 1 0 1 0 1 0 0 2 2 0 0 0 0 0 0 0 1 +0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 2 1 0 0 2 1 0 0 1 0 1 2 0 0 1 0 1 0 1 0 1 3 0 0 0 0 0 1 2 0 0 3 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 2 0 0 0 0 0 0 3 0 1 1 0 0 0 0 0 0 1 2 2 1 1 2 2 2 0 1 3 1 1 0 2 2 2 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 2 1 0 1 1 0 1 1 1 0 2 0 0 1 3 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 3 0 1 0 3 3 1 3 2 2 1 2 0 0 0 0 0 1 0 1 0 0 1 2 0 3 0 0 0 0 0 0 0 0 0 1 0 0 1 2 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 1 2 2 1 1 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 2 1 0 1 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 +1 0 0 0 0 0 0 0 0 0 1 0 0 0 3 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 2 0 0 1 0 0 1 1 1 0 0 0 1 0 0 2 1 1 2 1 0 1 3 0 0 0 1 2 1 0 1 0 0 0 0 3 1 3 0 1 1 1 0 1 0 1 0 3 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 2 1 0 1 0 1 2 1 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 2 1 0 0 1 1 1 0 0 0 3 1 0 1 1 1 0 1 0 0 4 1 2 0 0 0 0 0 1 0 1 2 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 1 1 2 1 4 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 2 2 1 0 2 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1 2 0 1 0 0 0 0 0 0 1 2 0 1 0 1 0 0 0 1 0 1 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 +1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 2 2 0 0 0 1 0 2 0 0 0 0 2 1 0 0 1 1 2 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 1 0 1 2 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 3 0 0 0 0 0 0 0 0 2 0 2 0 1 2 0 0 0 0 2 1 0 1 0 2 2 0 1 1 1 0 1 1 0 0 1 1 3 0 0 1 1 0 1 0 1 1 3 0 0 0 0 0 1 0 1 1 1 2 1 2 1 0 1 1 1 1 2 0 0 1 1 0 2 0 0 1 1 0 0 0 1 1 1 1 1 0 1 1 0 1 2 0 1 2 0 1 0 1 1 1 0 0 0 0 4 2 0 0 1 1 0 0 0 1 1 1 0 0 2 0 0 0 1 3 1 2 1 2 1 0 1 0 0 0 1 1 2 1 1 1 1 1 0 0 0 1 1 0 2 0 1 2 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 2 0 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 2 0 0 0 1 0 0 0 0 3 0 0 0 0 0 0 0 1 0 0 0 +0 0 0 1 0 1 0 1 0 0 0 0 2 1 0 0 2 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 2 0 0 0 1 1 0 1 0 0 0 2 0 1 0 0 2 0 1 1 0 1 0 1 0 0 1 0 0 2 1 0 1 1 2 1 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 2 0 1 0 1 2 1 0 1 1 0 1 0 1 1 0 2 0 0 1 0 0 1 1 1 0 1 1 2 0 0 3 0 1 2 0 0 1 1 1 0 1 0 0 0 0 1 2 0 1 0 0 0 1 1 2 0 1 0 0 1 0 2 1 0 1 1 0 0 0 1 0 3 0 1 2 0 1 0 2 0 1 4 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 2 1 2 0 0 0 1 0 1 0 2 1 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 2 1 2 1 0 1 1 0 0 0 1 2 2 2 0 0 0 0 1 0 1 0 1 0 2 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 2 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 +0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 2 0 1 1 0 0 1 1 0 0 2 1 1 0 0 2 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 2 2 2 0 0 0 0 0 0 0 0 0 2 1 1 0 2 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 2 0 1 1 0 1 1 0 0 1 1 1 3 0 1 2 1 0 0 0 0 0 1 0 0 0 3 0 1 0 0 0 1 1 1 1 0 3 2 1 0 1 2 1 0 0 1 0 1 0 2 0 0 0 0 0 4 0 0 3 0 1 0 1 0 4 0 0 5 0 0 0 1 1 0 1 0 0 2 0 1 0 0 1 1 0 1 1 2 0 1 0 0 1 0 0 2 1 2 0 0 2 0 0 0 0 1 0 2 1 0 0 2 1 0 0 0 0 1 1 0 1 0 1 0 1 0 2 0 0 0 1 0 2 0 1 0 1 0 0 0 1 0 0 1 0 0 0 2 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 +0 0 0 0 1 0 0 0 3 0 0 1 1 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 2 0 1 1 0 0 0 0 1 1 1 1 1 1 0 1 2 0 1 0 0 1 0 0 0 1 1 1 2 1 0 0 1 0 0 1 2 2 1 0 0 0 0 0 2 2 0 1 1 0 0 1 0 1 1 0 0 1 2 1 0 1 0 1 0 0 1 1 1 1 2 1 2 1 0 0 1 0 0 0 1 1 0 1 3 0 1 1 1 1 0 2 0 0 0 0 3 0 2 2 2 1 1 2 0 0 1 2 2 1 1 1 0 0 1 1 0 1 2 0 0 3 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 2 1 0 2 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 2 0 1 1 1 1 0 1 1 1 0 0 1 1 3 1 0 0 1 0 2 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 0 2 0 0 0 0 0 1 0 0 3 0 0 1 1 3 1 2 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 2 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 +0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 2 0 2 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 1 2 1 1 1 0 0 1 0 0 3 0 0 0 1 1 2 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1 0 2 0 1 1 1 2 2 1 0 1 0 2 0 1 1 0 0 2 0 0 1 0 0 1 0 1 1 0 1 1 1 2 2 0 1 0 1 1 1 1 0 2 1 1 3 0 1 0 0 2 1 1 0 0 1 2 1 0 2 0 0 1 0 0 0 0 2 1 0 1 0 0 1 1 3 1 0 2 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 2 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 +1 1 0 1 1 2 0 0 2 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 2 1 0 2 1 2 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 2 0 1 0 1 0 1 2 0 1 1 0 0 2 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 3 0 0 2 2 0 0 2 0 1 0 0 0 0 0 0 2 1 0 0 4 0 0 0 0 1 1 1 1 0 0 0 1 1 2 1 0 3 1 3 0 2 1 2 2 0 2 1 0 0 0 2 0 1 0 1 1 1 2 0 3 0 0 2 1 0 0 1 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 2 1 2 0 0 1 0 2 1 0 0 0 0 1 0 0 1 2 2 0 0 0 0 0 3 0 0 0 2 1 1 1 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 4 1 2 1 1 1 0 0 1 1 0 0 1 1 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 +0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 1 2 1 2 0 4 0 0 0 0 0 0 2 0 0 0 1 1 1 0 0 0 0 0 2 0 0 0 1 3 0 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 1 2 1 2 1 1 1 0 2 0 0 0 0 0 1 2 0 1 1 0 0 0 3 1 0 0 1 2 0 0 0 0 1 0 2 0 1 0 0 1 2 0 0 2 0 1 0 1 0 0 1 3 1 0 3 1 1 0 1 2 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 2 0 0 0 1 2 0 0 1 2 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 2 0 0 0 0 3 0 0 1 0 1 1 2 1 0 0 0 1 0 0 0 0 3 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 2 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 2 0 0 0 2 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 +0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 2 0 0 2 0 0 0 0 2 0 0 0 1 2 2 2 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 3 1 2 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 2 1 0 0 0 1 1 1 0 0 0 0 1 0 2 1 0 0 0 0 1 0 0 1 2 0 2 1 0 0 0 0 1 0 0 0 3 0 2 1 0 0 0 1 1 3 1 2 0 0 1 4 1 2 0 0 0 1 0 0 2 1 1 0 1 0 0 1 0 0 3 0 1 0 0 0 2 1 2 0 1 0 0 0 0 1 1 1 5 1 0 0 0 1 1 3 0 0 2 1 2 2 1 3 0 0 0 0 1 0 2 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 2 1 0 0 0 1 0 0 0 0 2 0 0 0 1 0 1 0 1 0 0 1 0 2 1 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 1 2 +0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 2 0 1 0 1 0 0 0 2 1 2 2 0 0 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 2 0 1 1 0 1 2 0 0 0 0 1 1 0 0 0 0 2 0 1 1 2 1 0 1 0 1 0 0 5 1 1 2 1 1 0 1 0 1 0 0 0 2 1 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 1 1 2 1 2 1 1 0 1 0 0 2 0 0 0 0 0 1 0 1 2 0 0 2 2 3 0 1 0 1 2 2 2 0 0 1 1 1 0 2 1 1 2 0 2 2 2 2 0 0 3 0 0 2 1 2 1 2 0 0 1 0 0 4 1 3 1 2 1 1 0 0 0 2 2 0 0 0 1 1 1 1 0 0 1 2 0 0 0 2 0 0 0 1 1 0 1 2 1 0 0 0 0 1 0 1 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 1 1 1 0 2 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 2 0 1 1 0 1 0 0 0 0 0 0 1 +0 0 0 0 1 0 2 0 0 0 0 1 2 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 2 2 1 0 0 0 1 2 1 1 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 1 3 0 0 1 0 2 0 1 0 0 0 0 2 0 2 0 1 1 0 1 1 1 2 0 0 0 0 0 1 1 0 0 1 0 1 0 1 2 1 1 0 1 3 0 3 0 0 0 0 0 0 1 1 0 1 0 0 2 1 0 0 1 1 0 0 0 1 4 1 0 1 0 2 1 3 0 1 0 1 0 0 1 2 0 0 0 0 3 1 1 3 1 1 0 2 1 0 1 0 0 1 0 0 0 0 0 1 0 2 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 2 1 3 1 0 1 2 1 0 1 2 0 0 0 0 0 0 0 2 0 0 2 3 1 0 1 0 0 0 1 0 1 3 0 2 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 2 0 0 1 0 0 1 0 0 0 0 0 0 1 2 1 0 0 0 0 1 1 0 0 0 0 2 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 0 2 1 1 0 1 1 1 0 0 0 0 +0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 2 1 0 0 0 0 0 0 0 0 1 3 0 0 1 0 0 1 0 1 1 2 1 0 1 0 0 2 0 0 1 1 1 0 1 0 0 1 1 0 0 2 3 0 1 1 1 1 0 0 0 2 0 0 0 1 0 3 0 1 0 0 0 1 3 0 2 0 1 1 1 1 1 0 0 0 2 0 0 0 1 2 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 1 1 3 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 2 1 1 1 1 1 0 1 2 1 0 1 0 1 0 0 0 0 0 1 3 0 0 0 1 1 2 0 0 0 0 0 0 0 2 0 1 0 1 2 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 1 0 1 0 0 1 0 0 2 1 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 2 0 0 0 0 0 0 1 2 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 1 0 0 1 1 0 +0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 1 1 2 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 1 0 0 0 0 0 3 0 0 0 1 0 2 1 0 2 1 0 0 0 1 1 0 1 0 2 0 1 0 1 1 2 2 1 1 0 0 0 0 1 0 0 1 0 1 0 2 2 2 1 0 0 0 0 1 3 1 2 0 0 2 1 0 1 0 0 2 1 2 2 2 1 0 1 0 1 1 0 2 1 0 0 1 0 1 2 2 1 2 1 2 1 3 1 1 2 2 0 1 1 2 1 2 0 0 1 0 0 1 0 0 1 0 0 2 1 1 0 0 1 1 0 0 1 3 1 0 1 3 3 0 3 0 0 1 3 0 3 0 2 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 2 0 2 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 +0 0 0 0 1 1 3 0 0 1 0 0 1 0 1 0 1 2 0 0 0 0 0 1 0 0 0 0 0 2 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 2 0 0 1 0 1 0 2 0 0 0 0 0 0 1 2 0 0 1 0 0 1 2 0 0 0 0 1 0 1 1 0 0 0 1 0 2 0 2 0 1 2 0 0 0 0 0 2 0 0 0 0 0 1 2 1 0 3 1 1 0 0 0 0 2 1 0 0 2 0 3 0 2 0 0 1 1 0 1 0 1 0 1 0 0 2 0 0 0 0 0 1 0 2 2 1 3 1 2 1 0 0 0 1 0 5 1 0 1 0 0 1 0 0 1 1 0 2 0 0 0 0 2 1 1 0 0 0 1 3 1 2 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 1 0 2 1 3 0 0 1 2 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 2 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 2 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 +0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 2 0 1 0 0 1 3 0 0 1 0 0 0 0 1 1 0 0 0 1 0 2 0 2 2 1 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 2 0 0 2 0 0 0 0 0 1 1 1 1 0 0 2 1 0 1 2 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 3 1 2 2 0 2 1 1 2 1 2 1 1 1 2 1 2 0 0 0 0 2 1 0 0 1 1 4 1 0 0 1 1 2 0 2 1 1 2 0 0 0 0 1 2 2 0 0 2 2 1 0 0 0 2 1 0 1 2 1 0 0 0 0 1 0 1 0 3 0 2 0 0 2 3 1 2 2 1 1 0 0 1 1 0 0 0 1 0 0 2 1 0 0 1 2 1 1 0 0 1 0 1 0 0 1 0 2 1 1 0 1 2 1 0 1 0 0 0 0 2 1 1 0 1 1 0 1 3 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 2 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 2 0 1 0 0 +1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 2 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 2 2 0 0 1 0 0 0 1 1 0 0 1 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 2 0 1 0 2 0 2 1 1 2 0 0 1 0 1 1 0 1 0 3 0 0 0 3 1 1 1 2 3 1 1 1 2 0 2 1 0 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 3 1 2 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1 2 0 0 1 0 2 2 0 0 1 1 0 0 1 0 0 1 0 3 1 0 1 1 2 1 1 0 0 0 0 0 1 1 1 1 0 0 2 2 1 1 0 0 0 1 0 2 1 0 2 2 1 0 0 1 1 0 1 0 0 0 2 1 0 0 2 1 0 0 0 1 0 1 0 0 0 2 0 0 3 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 3 1 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 3 0 0 3 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 2 0 1 0 1 +0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 2 0 2 0 1 1 0 1 1 0 0 3 0 1 0 0 3 0 0 1 1 2 0 0 0 0 1 0 0 1 0 1 0 2 0 1 2 0 1 1 0 1 0 0 2 1 0 0 0 1 0 1 1 1 1 0 0 2 0 1 0 0 1 0 1 1 2 0 0 0 1 0 0 1 2 0 1 0 1 0 1 1 1 3 0 1 0 3 1 0 1 0 1 0 1 0 2 1 1 0 1 2 2 2 0 0 2 0 1 0 0 1 1 1 0 0 2 1 0 0 3 0 0 1 2 0 2 1 0 0 1 2 1 3 2 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 2 0 0 1 0 0 0 0 2 0 2 0 1 2 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 2 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 2 0 0 0 0 1 0 0 1 2 0 1 2 0 0 0 0 0 +0 0 0 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 2 0 2 0 1 1 0 2 0 0 1 0 0 2 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 2 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 3 0 0 0 0 1 1 0 2 0 1 0 0 0 0 0 1 2 1 0 1 1 0 1 1 0 0 2 0 1 0 0 0 1 0 1 1 1 1 0 1 0 2 1 1 0 2 0 1 2 0 0 0 0 0 2 0 0 3 0 0 2 0 0 0 1 0 1 0 1 1 2 3 0 2 0 1 0 1 1 0 3 1 1 0 0 1 1 2 2 1 0 1 0 1 0 0 0 1 1 2 2 2 1 1 1 0 2 1 0 1 1 1 0 0 0 1 1 0 2 3 0 0 0 0 0 0 2 1 0 0 1 1 1 0 1 0 2 1 0 1 0 1 1 2 0 1 0 0 0 1 0 2 0 0 0 0 2 3 0 0 0 1 0 2 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 2 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 2 0 0 0 0 1 0 1 0 1 0 0 0 1 0 +0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 2 0 1 0 1 0 1 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 1 0 2 1 0 0 1 0 1 0 1 2 0 0 1 0 0 2 2 1 0 2 0 1 2 0 0 0 0 1 1 0 0 0 1 2 0 0 0 0 1 1 0 1 0 0 1 1 2 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 3 2 0 1 0 1 3 0 1 2 1 0 2 0 2 2 0 1 2 0 0 0 0 0 0 1 1 1 2 0 1 0 0 1 0 1 1 0 0 2 1 0 0 1 0 2 0 1 0 1 0 0 2 1 0 2 1 1 1 1 2 0 0 0 2 1 1 1 2 2 2 1 1 0 2 0 0 0 0 0 1 1 0 0 0 3 0 0 0 2 0 3 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 2 0 0 1 0 1 0 0 1 0 0 1 2 0 2 0 0 0 0 0 0 0 +1 0 0 0 0 1 1 1 2 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 2 1 0 1 0 4 0 0 1 0 1 1 2 3 0 2 0 0 1 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 2 1 1 0 1 0 1 1 0 0 2 1 1 1 2 0 1 1 0 0 0 1 0 1 1 1 2 0 0 1 3 2 0 0 1 1 1 1 1 1 1 0 0 1 4 1 0 5 0 1 0 3 0 0 7 1 2 0 0 1 3 0 1 1 1 0 0 0 1 0 0 0 2 0 1 1 0 1 0 1 1 1 0 1 2 0 0 1 1 0 1 0 0 1 0 2 0 0 0 0 0 2 1 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 2 1 1 0 1 0 0 1 1 0 0 1 1 1 2 0 0 1 2 0 0 1 1 1 0 0 0 0 0 0 2 0 1 2 1 0 0 0 1 0 2 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 +0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 3 0 1 1 0 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 2 0 1 0 0 1 0 0 0 0 0 1 0 1 0 2 1 0 1 1 2 1 1 4 0 0 2 0 2 1 0 0 1 2 0 0 0 1 4 1 1 0 0 2 1 1 0 0 0 1 3 0 1 1 1 1 2 2 1 2 0 0 1 1 3 2 1 2 1 0 0 0 1 0 1 0 1 2 2 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 2 0 1 1 1 2 1 1 1 0 0 1 0 0 1 2 1 0 0 0 0 1 0 2 2 0 0 0 1 0 0 1 0 1 0 1 1 0 0 2 0 0 0 1 0 1 2 2 0 2 2 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 1 0 0 2 1 0 3 1 1 1 2 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 2 1 0 0 1 0 0 0 0 0 1 0 2 0 1 2 0 0 1 0 2 0 0 2 +0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 3 0 1 1 0 0 1 2 2 0 0 0 0 0 0 0 0 1 1 0 0 0 2 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 1 1 0 0 0 0 0 2 1 0 0 0 2 0 1 0 0 1 1 0 1 0 0 3 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 2 1 0 1 0 1 3 1 1 1 1 1 0 1 0 0 1 2 0 0 1 2 0 0 1 2 0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 3 0 0 3 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 1 0 3 1 1 0 3 1 0 1 0 0 0 3 0 0 0 0 1 0 0 1 1 0 1 2 2 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 2 0 0 0 0 1 1 1 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 1 0 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 3 0 0 0 1 1 0 2 0 0 1 0 4 1 1 0 2 1 0 0 1 0 0 1 0 0 0 1 1 0 2 1 0 0 0 1 0 2 0 1 1 2 0 1 1 0 1 0 0 2 0 2 0 0 1 0 1 1 0 1 0 2 1 3 0 0 0 0 0 0 2 4 0 1 3 0 1 2 1 1 1 3 0 0 1 1 3 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 2 1 3 0 0 2 1 1 0 0 1 0 1 1 2 0 0 2 1 1 0 0 0 1 0 0 0 0 0 2 0 0 1 1 1 1 1 0 1 0 0 0 0 2 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 2 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 2 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 2 0 0 1 0 1 0 1 +1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 2 1 0 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 2 0 0 1 0 0 0 0 0 0 0 2 1 2 0 1 0 0 0 0 0 0 1 0 0 0 0 0 2 3 1 0 2 1 0 0 0 1 0 1 0 2 0 1 1 1 1 1 3 1 0 0 2 0 1 0 0 1 1 1 1 0 0 1 0 2 0 0 0 0 1 0 2 0 3 0 0 2 1 0 1 1 0 0 0 1 1 0 1 0 0 2 0 0 0 0 1 1 0 2 0 1 0 0 0 2 0 1 0 2 1 0 0 1 1 1 2 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 2 1 0 0 2 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 2 1 1 2 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 3 0 2 0 3 0 0 1 0 1 1 0 0 1 1 0 0 1 0 2 0 0 0 0 1 1 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 +0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 2 1 1 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 1 1 0 3 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 2 0 0 0 0 0 2 2 1 0 1 0 1 2 0 2 1 1 0 1 1 0 0 2 2 1 1 1 1 1 2 3 0 0 2 0 0 0 1 0 0 0 1 2 2 1 0 0 0 1 1 2 0 0 1 1 0 2 1 2 0 0 1 0 2 2 0 1 1 1 3 1 1 1 0 2 1 0 1 1 1 3 1 0 0 1 1 4 1 0 1 0 0 0 2 0 0 2 0 1 0 1 0 2 1 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 2 1 0 0 0 0 2 0 0 0 0 0 1 1 2 0 0 0 1 1 0 0 0 0 1 2 0 0 0 0 2 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 2 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 2 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 4 0 1 1 0 +0 0 2 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 2 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 2 0 0 1 0 3 1 2 0 1 2 2 1 1 0 3 0 0 4 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 2 3 0 0 0 1 2 0 0 0 2 0 0 0 1 2 1 1 2 1 2 1 1 1 1 2 0 1 0 0 2 1 0 1 1 0 2 2 1 0 0 2 0 2 0 0 0 0 2 0 0 1 0 2 2 2 1 1 1 2 0 0 1 2 0 0 0 0 0 0 1 1 0 2 1 1 0 0 1 1 1 0 2 1 0 0 0 1 1 0 0 1 0 1 1 3 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 2 0 2 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 2 +1 1 0 0 0 2 1 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 0 2 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 2 1 0 1 2 0 0 1 1 0 0 0 1 0 1 0 1 0 0 2 0 1 1 0 0 1 1 1 0 0 2 0 1 1 0 0 1 1 0 1 1 0 0 2 1 2 0 2 0 0 1 0 0 1 1 2 1 0 1 0 0 1 1 2 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 1 2 1 1 1 0 1 2 2 0 0 0 2 1 0 1 0 1 1 2 0 1 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 0 2 1 0 1 1 0 0 1 0 2 0 2 1 1 1 2 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 3 1 0 0 0 2 1 1 0 0 0 0 0 0 0 1 0 0 1 2 1 2 1 0 1 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 1 +0 2 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 3 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 2 0 0 0 1 1 1 1 0 0 0 0 0 2 0 0 0 0 1 1 0 1 0 1 2 2 0 3 2 0 0 0 0 1 1 0 0 0 1 0 2 0 0 0 1 0 0 1 0 0 1 2 1 1 0 1 0 1 0 4 0 2 1 0 1 0 1 0 0 1 0 0 2 1 0 0 0 0 0 1 0 0 1 2 1 0 1 1 2 0 1 1 3 1 0 0 3 2 0 1 1 0 0 1 3 0 1 1 1 0 1 1 2 0 0 1 1 1 0 0 1 1 0 1 1 1 2 1 0 1 0 0 0 0 0 4 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 2 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 2 2 0 0 0 1 0 0 0 0 0 0 1 0 2 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 +1 0 0 1 0 2 2 0 1 0 4 1 0 1 0 2 0 1 0 1 0 0 1 3 1 0 1 0 1 0 0 2 0 0 0 1 0 0 2 0 1 2 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 2 0 1 0 3 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 2 2 1 1 2 0 0 1 0 0 0 3 0 0 0 0 1 0 0 2 0 0 0 1 1 0 4 0 1 1 0 1 1 3 1 0 2 0 1 1 1 2 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 2 2 0 1 2 3 1 0 2 1 2 0 0 0 0 0 2 1 1 1 0 0 0 0 0 0 1 0 0 1 1 3 1 1 1 0 0 0 1 3 1 3 0 0 0 0 1 1 2 2 1 2 2 0 1 1 0 0 1 1 0 1 1 0 0 0 2 0 0 0 1 1 1 0 1 3 0 0 3 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 3 1 1 1 1 0 0 0 2 0 0 1 0 2 2 0 0 +0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 2 0 1 0 0 1 0 0 1 2 1 1 2 0 0 2 1 0 1 1 0 0 1 1 0 1 0 0 0 1 3 0 1 1 3 2 1 0 1 0 0 1 2 0 0 1 0 0 0 0 1 1 2 1 1 1 2 2 1 2 0 0 2 2 1 0 0 1 1 2 1 1 0 0 0 1 0 0 0 0 2 3 1 0 0 0 1 1 2 2 1 1 2 0 0 1 0 1 2 0 1 1 1 2 2 1 0 1 1 2 0 0 1 0 0 0 1 2 2 0 2 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 2 0 0 1 2 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 1 1 0 0 +1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 2 1 2 0 1 3 2 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 3 1 2 2 0 1 3 1 1 1 0 0 0 2 4 1 2 0 1 0 0 0 0 0 2 0 0 1 1 0 0 0 1 1 2 1 1 1 0 0 1 2 0 0 0 0 1 3 1 1 1 1 1 2 0 2 2 1 1 1 2 1 2 0 2 2 1 0 0 1 3 1 1 0 2 0 0 0 0 0 1 0 2 1 2 1 1 0 0 0 0 1 0 0 1 3 1 0 0 0 1 0 1 0 3 1 2 0 0 0 2 3 2 0 0 0 0 1 1 0 1 0 2 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 1 0 2 1 2 0 0 1 0 2 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 1 2 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 +1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 2 1 0 0 3 0 0 1 1 1 0 0 1 1 0 0 0 0 2 2 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 2 0 2 0 2 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 2 0 0 4 1 1 0 0 0 2 1 0 1 2 1 2 0 0 1 1 2 0 0 0 2 2 2 1 0 2 0 1 2 1 0 0 1 0 0 0 0 0 0 2 0 1 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 2 2 1 1 1 0 1 0 1 0 0 0 1 1 2 0 0 0 1 0 1 1 1 1 3 0 2 1 1 2 1 1 1 5 1 0 2 0 1 1 3 0 1 0 3 2 2 1 3 0 2 3 0 0 2 0 1 0 0 1 0 1 1 2 0 1 1 2 1 0 0 1 0 1 2 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 2 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 1 1 1 0 0 0 1 2 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 +0 0 2 0 0 1 1 0 0 0 0 0 2 0 0 0 1 1 1 1 0 0 0 0 1 0 2 0 1 1 0 0 0 0 2 1 0 0 1 1 0 1 0 0 0 1 0 1 0 2 0 0 0 2 0 0 1 1 1 1 2 1 1 0 0 0 0 0 0 0 1 1 0 0 0 2 0 1 0 1 0 0 1 0 0 1 1 0 2 0 0 2 2 0 2 1 1 0 1 1 1 0 1 2 1 1 1 1 1 1 2 0 0 0 2 2 0 0 1 1 3 0 0 1 0 0 1 1 1 1 0 0 1 1 1 2 0 0 0 2 1 0 0 1 0 2 3 3 1 1 0 3 0 2 0 2 1 2 3 2 1 2 1 0 2 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 2 0 1 0 2 1 1 1 0 1 2 1 1 1 2 1 2 0 0 0 1 2 0 1 1 0 1 0 0 0 0 0 2 0 0 0 0 0 0 3 0 1 0 0 0 0 0 0 1 0 0 0 0 0 2 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 2 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 2 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 1 0 +0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 2 1 0 1 0 0 0 1 1 1 0 0 2 1 0 3 0 2 0 0 1 1 0 0 1 0 0 1 2 0 0 0 0 0 1 1 1 1 1 1 2 0 1 0 0 0 0 0 0 0 0 1 0 0 2 2 0 0 2 1 2 2 0 0 1 2 0 1 2 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 2 0 0 0 0 2 1 0 0 2 1 0 0 1 1 0 1 0 0 2 3 0 3 1 1 0 0 0 1 1 0 2 1 0 0 2 1 0 1 0 2 1 0 1 0 0 1 0 0 1 1 2 2 0 0 0 0 1 2 1 1 2 0 1 0 0 1 0 3 1 2 2 1 0 0 1 0 0 1 1 1 0 1 4 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 2 0 0 0 1 0 1 0 0 1 1 3 0 0 1 0 0 0 0 0 0 1 0 2 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 2 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 +0 0 0 2 2 0 0 2 0 1 0 0 1 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 1 1 1 0 2 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 2 0 2 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 2 1 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 2 1 0 0 3 1 1 0 0 0 2 0 0 1 2 0 1 0 1 2 2 1 2 1 1 2 1 0 0 0 1 0 1 0 0 2 0 0 1 0 3 2 2 0 2 1 0 0 1 1 0 2 2 1 1 1 0 0 0 0 0 1 0 1 1 2 2 1 2 0 0 0 0 4 0 0 0 1 0 1 2 0 1 1 1 1 0 1 0 0 0 1 0 1 1 2 0 0 0 1 0 0 0 1 1 0 2 0 0 0 0 0 3 0 0 0 1 0 1 1 0 1 0 0 0 2 0 1 0 1 1 0 1 0 2 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 +1 0 0 1 1 0 0 0 0 0 1 0 2 0 2 0 1 2 0 0 1 1 2 0 1 0 0 0 2 1 0 1 1 2 0 0 1 2 0 0 0 0 0 0 0 1 0 1 2 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 3 0 0 1 1 0 2 0 0 0 1 1 0 0 0 0 2 0 0 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 1 4 0 2 1 0 0 1 1 1 0 0 2 1 0 0 0 0 0 0 0 2 0 1 1 0 0 2 1 0 1 0 1 2 1 0 1 0 1 0 0 2 0 0 2 1 1 0 0 2 0 3 1 2 0 1 1 1 1 0 0 2 0 1 0 1 1 0 0 0 0 0 1 1 3 0 0 0 1 0 2 0 1 1 0 0 0 0 0 0 0 0 1 2 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 3 1 0 0 0 0 1 1 0 0 1 1 3 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 3 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 2 0 3 2 0 0 1 +1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 1 0 2 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 2 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 2 0 0 0 2 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 2 2 2 0 1 3 1 1 0 1 0 2 1 0 0 0 0 0 1 0 0 0 0 2 1 2 0 0 1 0 0 1 0 2 1 1 0 0 1 0 0 1 0 0 2 0 1 1 1 1 1 2 1 0 1 0 1 0 0 1 4 2 0 1 1 0 1 1 1 0 0 0 2 0 1 0 2 0 1 0 1 2 3 1 1 1 0 1 0 3 0 0 1 0 0 0 0 2 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 2 1 0 1 1 1 0 0 2 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 4 0 1 2 0 0 0 0 1 1 0 1 0 1 0 2 0 1 1 0 1 0 0 0 +1 1 0 0 1 0 1 1 0 1 1 0 0 1 2 1 2 1 1 0 0 0 0 0 0 0 1 3 0 1 0 0 0 0 1 0 0 0 0 0 1 0 2 0 0 1 0 0 0 2 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 2 0 0 0 0 2 0 1 0 3 0 0 1 1 1 0 0 1 1 1 2 0 0 2 1 1 0 2 1 0 0 2 0 1 0 0 0 0 0 1 2 0 1 0 0 1 1 1 1 1 1 0 0 0 0 2 1 0 1 0 1 2 1 0 1 1 0 0 2 4 2 0 0 0 0 3 1 0 0 0 3 3 0 2 0 1 1 3 1 0 3 3 0 3 1 1 0 1 1 3 1 1 0 1 0 1 2 2 1 1 2 1 1 1 1 0 2 2 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 2 1 0 0 1 0 1 0 1 1 2 0 2 0 0 1 0 1 2 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 3 0 0 0 0 1 1 2 0 0 0 1 0 1 1 0 0 0 0 2 1 0 0 0 0 1 0 1 2 2 0 0 1 0 0 0 2 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 2 1 0 0 1 0 1 0 0 0 0 0 1 0 1 2 1 0 2 0 0 3 3 1 1 1 0 1 0 1 2 0 0 0 0 0 1 0 1 1 0 0 0 1 2 2 3 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 1 1 0 0 0 2 2 1 2 1 0 0 0 0 4 1 0 3 0 0 1 0 1 1 2 1 2 1 1 0 0 0 0 0 3 2 1 1 2 0 0 1 0 0 0 0 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 2 0 1 1 0 0 2 1 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 0 0 0 +0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 0 0 2 0 1 1 1 0 0 2 1 1 1 0 2 0 1 0 0 2 0 2 2 2 0 2 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 3 2 0 2 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 2 1 1 1 1 0 3 2 2 0 0 1 1 0 4 1 0 1 1 0 2 1 1 2 1 0 1 2 0 0 0 0 0 0 0 0 0 0 0 1 1 3 0 0 1 0 3 0 2 1 2 2 2 3 0 0 0 0 0 0 2 0 0 0 0 2 0 0 2 0 0 0 1 0 0 0 0 3 0 3 0 1 0 1 0 1 0 0 0 0 0 1 2 1 0 2 0 0 1 0 1 1 0 1 0 0 0 0 1 2 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 2 0 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 3 0 0 1 1 0 0 0 1 1 2 1 0 2 1 0 0 1 2 0 0 0 0 1 1 0 2 0 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 +1 0 1 0 0 0 1 2 0 0 1 0 0 0 0 0 0 0 0 2 0 0 1 2 0 0 0 0 0 0 0 0 0 0 1 0 0 2 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 2 1 0 2 0 0 0 2 0 1 0 2 0 1 0 0 0 1 1 0 2 0 0 0 1 1 1 1 0 0 0 2 0 0 0 0 2 1 2 1 0 2 0 0 0 1 1 1 0 0 0 2 0 0 0 2 2 0 2 1 0 0 0 0 1 0 2 1 2 1 1 0 3 0 1 0 0 0 0 1 1 0 0 0 2 2 0 1 2 0 2 0 0 1 2 1 0 0 1 0 0 1 2 0 2 0 0 0 0 0 0 0 2 0 1 1 0 3 2 1 0 1 0 0 3 0 0 0 0 1 0 0 2 0 1 1 0 0 1 2 0 1 2 2 1 0 1 0 1 0 1 0 2 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 2 0 0 1 0 0 1 0 2 1 0 0 0 0 0 1 0 1 0 0 0 2 1 1 1 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 1 0 0 0 1 1 0 0 1 0 0 2 0 0 0 +0 0 1 1 0 2 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 2 0 1 2 0 0 0 1 1 0 0 0 0 1 0 2 0 1 0 1 0 0 0 0 0 1 2 1 0 1 1 1 0 2 1 0 0 0 1 2 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 1 2 0 0 1 1 0 1 1 0 1 0 0 3 1 1 0 1 1 1 0 0 0 2 0 0 0 2 0 0 1 1 0 0 1 0 0 0 0 0 0 2 0 2 0 0 2 1 0 0 1 0 2 0 1 1 1 0 1 1 1 0 3 0 1 0 1 2 0 1 2 0 1 0 1 1 2 2 0 1 1 0 0 0 3 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 2 1 0 1 1 0 3 1 1 1 0 1 1 0 0 1 1 0 2 0 1 0 2 1 1 0 1 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 2 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 2 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 +0 1 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 2 2 0 0 0 2 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 2 0 1 2 0 1 0 1 1 1 0 1 1 0 0 0 0 0 2 0 1 0 0 0 0 0 1 1 1 0 0 0 2 1 0 1 1 1 1 1 1 1 1 2 0 0 2 0 1 2 1 0 2 0 2 0 1 0 0 0 1 1 2 1 1 1 1 1 2 1 3 1 2 1 0 1 0 0 2 1 0 0 0 1 1 1 2 1 0 1 1 0 3 1 1 1 1 5 1 1 1 0 3 1 0 0 2 1 0 0 0 1 0 0 0 0 2 1 1 0 2 1 1 1 0 0 2 2 0 0 1 2 0 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 1 3 0 3 0 1 1 1 0 0 2 0 0 0 1 0 1 0 0 0 2 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 2 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 +0 0 0 0 1 1 1 1 0 2 1 0 0 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 2 4 1 0 0 0 0 1 1 0 2 0 0 3 0 1 0 0 0 0 1 0 1 1 0 2 0 1 0 2 1 0 2 1 2 1 1 1 0 0 0 2 1 1 0 0 1 1 1 2 1 0 0 1 0 1 0 2 1 1 2 0 1 1 0 1 1 1 1 2 1 0 0 1 1 1 0 0 3 0 0 0 0 1 3 0 1 0 1 1 0 0 1 0 0 0 0 1 2 1 0 2 1 0 0 3 0 0 0 1 1 0 1 2 0 4 1 3 1 1 0 3 1 2 1 0 0 0 0 0 0 1 2 1 1 2 1 0 0 1 0 1 0 0 1 0 1 1 2 1 0 1 1 0 1 0 1 2 1 1 1 2 0 1 0 1 1 0 0 2 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 2 1 0 1 1 0 0 0 +0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 3 0 1 0 1 1 1 1 0 3 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 2 0 1 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 2 1 1 1 1 1 2 0 1 0 0 0 2 0 1 2 1 1 0 0 0 1 0 1 0 1 4 0 0 0 2 0 0 0 1 0 0 0 1 0 1 1 1 0 0 2 1 0 2 0 1 0 1 0 1 2 0 1 1 1 1 1 2 0 2 3 0 0 0 1 0 1 2 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 3 1 1 1 0 2 1 0 0 1 1 1 1 2 0 1 1 2 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 2 1 1 0 0 0 2 0 0 0 0 2 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 +1 0 0 0 1 0 2 1 0 0 1 1 0 1 0 2 1 0 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 2 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 2 0 1 0 0 0 0 0 0 0 3 2 0 0 1 2 0 0 0 0 0 1 2 0 0 2 1 1 0 0 0 1 0 0 1 3 1 0 1 1 0 2 0 0 2 0 0 0 0 1 1 0 2 1 0 0 1 0 2 2 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 1 2 0 0 0 0 1 2 0 0 2 0 0 0 1 0 1 0 0 1 1 2 0 0 1 0 1 2 0 0 0 1 0 1 0 1 1 1 0 0 0 2 0 1 1 1 1 0 0 0 0 1 2 1 0 0 0 3 1 0 1 0 0 1 0 4 1 0 0 1 0 1 1 1 0 1 0 0 0 2 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 2 0 0 2 1 0 0 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 1 0 3 0 0 0 1 1 0 1 0 0 0 1 0 2 0 1 +1 0 0 1 1 1 0 2 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 3 2 0 0 1 1 1 1 0 0 2 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 2 0 1 0 2 2 0 0 0 0 0 0 1 0 0 0 0 0 2 1 0 1 1 0 0 1 1 0 0 3 1 2 0 2 1 0 1 1 0 0 2 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 2 0 1 0 0 0 1 0 1 1 0 1 0 0 2 0 1 0 1 1 3 1 0 1 0 0 1 1 1 0 0 1 1 0 1 1 1 3 1 0 2 1 2 0 0 0 1 2 1 0 1 1 0 0 2 2 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 2 1 0 1 1 3 0 1 0 0 0 1 1 0 1 1 0 2 1 0 1 1 0 1 0 1 1 1 0 2 2 0 0 1 0 1 2 0 0 1 2 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 2 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 2 1 2 0 0 0 2 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1 0 2 0 1 0 0 2 1 0 2 1 1 1 0 0 0 2 2 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 2 0 2 1 1 0 1 0 0 0 0 0 1 1 1 1 0 1 1 0 2 0 0 2 1 0 0 2 0 0 0 2 1 0 1 0 1 1 0 2 1 1 0 0 0 2 1 0 1 1 1 1 1 1 0 2 0 1 0 2 0 0 1 1 0 1 0 0 0 0 1 0 1 2 1 0 1 2 0 2 0 0 0 0 0 1 1 1 1 1 1 0 0 0 2 1 0 2 0 0 1 0 1 0 2 1 1 0 1 0 2 0 0 0 1 0 0 0 0 2 0 0 2 0 0 1 1 0 0 0 1 1 0 0 0 2 0 0 0 1 0 1 0 2 0 0 0 1 1 0 0 0 0 2 0 0 0 1 1 0 0 1 1 +0 0 0 0 1 0 0 0 0 2 0 0 1 0 1 2 0 1 0 0 1 1 0 0 0 0 0 3 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 2 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 1 0 1 0 1 0 0 0 1 0 0 0 2 0 1 1 3 1 0 1 0 0 1 1 1 0 0 0 0 1 1 2 2 0 1 1 0 1 0 0 0 3 0 0 1 2 0 2 2 0 1 1 1 0 1 0 0 0 0 0 1 0 0 3 1 3 0 1 0 2 1 1 1 1 1 0 0 0 0 2 1 0 1 0 1 0 1 0 1 2 0 0 0 1 2 3 2 0 0 0 0 2 1 2 2 0 0 1 0 0 0 3 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 2 2 0 1 0 0 0 0 0 0 1 0 1 0 1 0 2 0 0 1 0 0 1 0 0 1 0 0 2 0 1 3 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 1 1 0 0 3 1 2 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 2 1 0 0 1 0 0 1 0 1 0 0 +0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 4 0 0 1 1 0 2 0 1 0 0 0 0 1 1 2 0 1 1 0 2 0 1 0 0 0 1 0 0 0 0 0 0 0 3 0 0 1 1 1 0 1 0 1 2 1 0 1 2 0 2 0 0 0 0 0 1 0 0 0 1 1 0 2 1 3 0 1 2 0 0 0 0 0 1 0 2 0 0 1 2 2 1 1 0 2 2 1 1 0 0 3 1 1 0 0 0 0 1 2 0 1 0 1 1 2 1 0 1 1 1 0 0 3 1 0 0 1 2 0 1 1 0 0 0 0 0 0 1 0 0 0 2 0 1 1 1 0 0 0 1 0 0 1 4 0 0 1 0 0 1 3 1 2 1 2 0 1 0 0 0 0 2 1 1 0 0 0 1 0 1 0 0 1 0 0 1 2 0 0 0 1 1 1 0 3 0 1 0 1 2 0 0 3 0 3 1 0 1 1 1 0 0 1 0 0 0 1 0 0 0 1 1 2 0 0 1 0 0 0 0 0 1 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 1 0 0 1 1 0 0 0 0 0 1 1 1 1 0 +1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2 1 0 2 0 1 0 2 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 2 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 2 0 0 0 0 1 0 1 1 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 4 0 0 0 0 1 0 0 1 1 2 0 1 0 1 0 0 0 0 3 2 0 0 0 2 1 0 0 0 0 1 1 2 0 0 1 3 1 1 0 0 0 0 0 0 0 0 0 1 1 0 4 1 2 0 0 0 2 0 2 2 0 0 1 3 1 3 1 1 1 1 1 0 1 3 1 0 0 1 0 2 2 1 1 2 1 0 1 2 1 1 1 0 0 0 1 1 0 0 0 0 2 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 2 0 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 2 0 1 1 1 1 1 0 0 1 0 0 0 0 0 1 0 2 0 0 2 0 0 2 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 +1 0 0 0 0 2 0 0 3 2 2 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 2 0 1 0 1 2 1 0 0 0 0 0 0 2 0 0 1 2 0 0 1 0 0 2 0 2 2 0 1 0 1 1 1 1 1 0 0 0 0 0 0 3 0 0 0 0 3 1 2 0 1 1 0 0 0 0 2 1 1 1 0 0 0 1 0 1 0 1 1 0 4 0 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 2 1 0 1 0 3 0 2 1 1 3 0 0 1 0 0 0 2 0 0 1 0 0 0 2 1 2 1 1 1 0 1 0 0 1 0 1 1 0 3 1 2 1 1 1 1 0 0 0 0 0 0 0 2 1 0 0 1 0 0 0 0 0 1 2 0 0 2 1 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 2 1 0 0 0 0 1 2 0 0 1 0 1 0 2 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 0 +1 0 1 1 0 0 0 0 1 1 1 0 1 0 1 0 0 0 2 0 1 1 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 2 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 2 1 2 0 3 0 0 0 1 0 1 0 2 0 1 1 2 1 1 1 0 1 0 0 0 1 2 1 1 0 2 1 1 0 1 0 1 1 0 1 0 1 2 1 0 0 1 0 1 1 0 0 1 1 1 2 0 2 1 1 4 0 0 1 1 1 1 1 0 0 3 1 1 0 3 2 0 0 2 0 2 0 3 2 0 1 0 1 4 2 0 0 1 0 2 0 0 0 0 0 2 0 0 2 1 0 0 2 0 0 1 1 0 0 2 1 0 0 1 1 0 1 0 0 2 1 0 0 0 0 2 3 2 1 0 1 1 0 0 0 1 2 0 0 1 2 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 1 1 2 0 0 0 1 0 0 0 0 1 0 2 1 0 0 0 0 1 0 1 0 1 0 0 2 2 1 0 0 1 0 0 2 0 0 0 0 1 1 0 1 0 0 0 0 1 0 +0 2 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 0 0 1 1 2 1 0 0 0 0 1 1 0 0 1 0 1 0 0 2 0 1 0 1 0 0 1 1 1 0 2 0 0 0 0 0 3 1 1 1 0 0 2 0 0 2 0 0 1 0 0 0 2 2 1 0 1 1 2 0 1 1 0 1 1 0 0 0 0 2 2 0 1 1 1 1 0 1 2 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 2 0 1 1 1 0 2 0 2 1 1 0 2 1 0 0 0 1 1 2 0 0 0 0 0 1 0 4 0 0 1 0 1 1 2 0 1 0 0 3 0 0 1 0 1 0 0 1 0 2 1 1 1 3 0 2 0 1 0 0 0 0 1 2 1 2 1 0 1 1 0 1 0 0 0 1 1 0 0 2 0 1 0 1 4 0 0 0 0 0 0 1 2 0 0 1 1 1 0 0 1 0 0 0 0 0 2 0 1 1 0 0 1 0 1 2 0 0 2 1 1 0 0 0 0 0 0 1 0 0 2 0 0 1 1 0 1 1 0 0 2 0 2 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 +1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 2 1 1 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 1 1 1 1 2 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 2 1 2 1 0 0 1 3 0 0 0 1 2 0 1 0 2 0 0 1 0 1 0 2 1 0 1 0 0 2 1 1 1 1 0 0 3 0 1 1 1 0 0 0 1 0 0 0 0 0 2 1 0 0 0 1 1 0 1 2 2 0 0 0 3 1 1 0 0 1 0 1 1 1 0 1 2 2 1 0 0 0 2 1 0 0 0 0 0 1 1 0 2 1 1 1 1 2 1 2 2 0 1 1 1 2 0 0 0 0 1 1 1 1 0 0 1 0 2 1 2 0 0 0 0 1 1 0 0 2 0 0 1 0 0 1 1 0 2 1 0 1 0 0 0 0 1 1 0 2 0 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 1 0 +0 1 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 2 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 2 2 0 0 0 0 0 1 0 1 0 0 1 3 1 1 0 2 0 0 0 1 1 1 2 1 0 1 1 0 0 0 0 1 2 0 1 0 2 2 1 2 1 1 2 0 2 0 1 2 0 2 0 1 1 0 1 1 0 2 1 1 1 0 0 0 1 1 3 0 1 0 1 0 1 1 0 0 1 3 1 0 2 1 1 0 0 3 0 0 0 0 2 0 3 2 1 1 2 1 0 0 3 1 1 0 1 0 0 1 0 1 0 2 1 1 0 0 0 0 1 0 0 2 0 0 0 0 1 0 0 2 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 2 0 0 0 1 1 2 0 2 0 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 2 0 1 0 +1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 2 0 0 1 0 0 0 2 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 3 1 0 1 0 0 0 1 0 2 0 2 1 1 1 0 0 1 1 1 2 1 1 0 0 0 1 2 2 0 0 0 0 0 1 0 0 0 1 2 0 1 0 0 1 2 2 0 0 1 1 1 0 1 0 1 0 1 1 2 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 2 0 0 0 1 0 1 2 1 1 2 2 0 0 1 1 0 2 2 1 2 0 0 1 2 2 0 0 0 0 1 3 0 1 1 0 3 2 0 0 1 0 2 0 0 0 3 1 2 1 3 3 0 1 0 0 1 0 1 2 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 +1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 1 0 1 0 1 1 2 0 0 0 1 0 0 0 0 0 1 2 5 0 0 1 0 1 0 0 0 1 0 0 1 3 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 2 1 1 1 0 2 2 1 0 1 1 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 2 2 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 2 1 1 2 4 0 0 3 2 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 2 0 0 0 1 0 0 0 1 1 0 1 1 0 2 0 1 2 0 0 1 2 2 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 2 0 0 0 0 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 2 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 2 0 0 0 0 1 0 0 1 0 0 0 1 +0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 1 0 1 0 1 0 0 1 1 0 2 0 0 1 1 0 1 1 0 1 1 0 1 1 1 2 0 1 1 0 1 1 0 0 2 0 0 0 2 0 0 0 0 1 1 0 0 2 0 1 0 0 1 0 0 0 0 0 1 0 2 0 2 0 0 0 1 1 0 0 0 0 2 2 1 2 0 4 4 0 3 1 0 1 0 0 2 2 0 1 1 0 2 0 0 2 0 1 2 0 1 0 0 0 0 1 0 0 0 1 3 0 2 0 1 1 0 2 0 0 0 2 0 0 1 1 0 1 0 0 0 2 2 1 0 0 0 1 2 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 2 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 2 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 +0 0 0 1 0 1 0 0 0 0 0 1 0 0 2 1 0 1 0 0 0 0 0 0 1 0 0 2 0 0 0 0 2 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 2 0 0 2 0 2 0 0 1 0 1 0 0 1 3 0 0 0 1 1 2 1 0 1 1 2 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 2 1 0 0 0 1 1 1 0 3 1 0 1 0 1 1 0 1 0 1 0 1 1 2 1 1 1 0 1 0 0 1 2 0 0 1 1 2 0 1 1 0 1 0 0 2 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 2 0 2 2 2 0 2 0 0 0 1 0 0 0 1 2 1 2 0 1 0 0 0 0 2 2 0 4 0 1 1 1 1 1 1 1 0 0 2 0 1 0 1 0 4 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 2 0 2 2 0 1 0 1 0 0 0 0 0 2 1 0 2 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 3 0 1 1 0 2 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 +0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 2 1 3 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 2 0 0 0 0 0 1 0 0 2 0 0 0 0 1 0 0 0 2 1 1 0 1 0 1 1 1 1 1 1 0 0 2 1 2 0 1 2 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 1 0 1 2 2 1 2 0 1 2 0 1 1 0 2 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 2 1 0 1 0 2 1 0 0 0 3 0 2 0 0 0 0 1 1 1 1 1 2 1 2 1 0 0 1 1 1 0 2 0 1 1 0 0 0 0 0 0 2 1 0 2 0 0 0 1 1 0 0 0 1 1 2 0 0 0 0 0 0 0 1 2 0 1 0 2 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 2 0 0 0 1 0 0 0 2 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 +0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 2 0 1 2 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 2 0 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 2 1 0 1 1 0 1 1 0 3 0 1 1 2 1 0 1 0 1 0 0 2 0 0 1 0 1 3 1 1 1 1 1 0 1 0 0 1 1 0 1 2 0 1 0 0 1 0 0 1 2 1 0 0 0 1 1 2 0 0 1 1 2 1 2 0 0 2 0 1 1 2 0 0 3 1 1 0 0 0 2 0 0 0 1 1 2 0 3 0 0 1 0 2 0 0 0 1 0 0 0 0 0 0 1 0 1 2 3 0 0 3 0 0 2 1 0 1 0 0 1 3 0 0 0 4 2 0 1 0 0 0 0 0 0 1 1 1 0 0 2 0 0 1 1 1 1 1 2 1 0 2 0 2 1 0 1 0 0 1 1 0 1 0 2 0 0 0 1 0 0 1 0 0 0 0 1 0 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 +0 0 0 0 1 1 2 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 1 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 1 0 2 0 2 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 2 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 3 1 0 0 0 0 0 0 1 0 3 0 1 0 0 0 0 1 0 0 0 2 0 1 1 1 0 1 0 3 3 1 0 3 0 3 1 1 2 0 1 1 0 1 0 1 1 0 2 0 1 0 0 2 1 2 0 1 0 1 2 0 0 2 1 0 1 1 1 0 3 1 0 3 0 0 0 1 0 0 0 0 3 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 0 0 2 1 1 0 0 2 1 1 0 1 0 1 0 2 1 1 1 1 0 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 0 1 0 0 +0 0 1 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 1 1 0 0 1 2 0 1 0 0 1 2 0 2 1 1 0 2 2 0 0 2 0 0 0 1 0 0 1 1 2 0 1 1 0 2 0 0 3 0 1 1 1 1 1 2 1 0 0 0 0 0 0 1 2 0 1 1 1 1 2 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 2 0 0 2 0 1 1 0 0 0 0 0 1 0 2 4 0 0 1 0 1 1 1 1 1 2 1 3 0 0 0 0 0 1 1 1 0 0 0 3 1 0 1 1 0 1 1 0 3 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 3 1 0 1 1 1 0 1 1 1 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 1 0 0 0 2 2 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 2 +0 0 0 0 0 0 0 1 1 0 3 1 0 0 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 1 0 1 1 2 0 0 0 0 0 1 0 1 2 0 1 1 1 1 0 1 0 0 1 0 2 0 1 1 0 0 1 0 0 0 1 1 1 0 0 2 0 0 1 2 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 1 1 0 0 0 0 2 1 1 0 0 1 2 1 0 2 0 2 0 0 1 1 0 3 0 1 0 0 0 3 0 2 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 3 0 0 1 0 0 0 0 1 1 1 1 2 1 0 1 0 0 1 2 1 1 0 0 0 1 1 0 0 0 2 0 0 1 0 2 3 0 0 0 1 2 1 1 0 1 2 0 2 3 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 3 1 1 0 0 1 0 2 0 0 0 0 1 2 0 0 1 0 2 0 0 1 1 0 1 1 0 0 0 1 1 1 2 2 0 0 1 0 1 0 0 3 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 1 0 2 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 2 0 0 0 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 3 1 2 0 3 0 1 0 0 1 1 3 0 2 2 0 0 1 1 1 1 0 0 0 1 1 0 2 0 0 2 0 0 1 0 0 1 0 0 1 0 3 1 0 1 3 0 2 0 1 0 0 0 2 1 1 1 0 0 1 3 1 0 1 2 1 0 1 0 1 0 2 2 0 0 0 0 2 2 3 2 0 0 0 1 2 1 1 0 0 2 1 0 0 2 1 1 0 0 0 1 0 0 0 1 2 1 0 0 0 0 1 0 2 0 0 0 1 1 1 0 3 0 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 2 0 0 0 0 2 0 0 0 0 0 2 3 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 2 1 0 0 1 2 0 0 0 0 0 0 0 1 1 0 2 1 1 1 0 2 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 2 1 1 1 1 0 0 1 2 0 0 1 0 0 2 1 0 0 3 0 1 0 1 0 0 1 1 1 0 2 2 0 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 2 0 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 2 0 0 1 0 1 1 1 1 1 0 1 2 1 0 0 2 0 0 0 0 1 1 1 2 1 1 0 1 1 2 0 0 1 2 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 2 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 1 0 1 0 1 0 0 +1 0 2 1 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 0 0 0 0 0 1 0 1 2 0 1 0 0 2 0 0 0 1 0 0 0 0 0 1 0 1 3 0 0 1 1 0 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 2 0 0 0 0 0 1 0 2 2 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 1 0 0 0 2 0 1 0 1 1 1 0 0 1 2 2 0 0 0 0 0 0 3 0 2 0 0 0 0 0 1 0 0 1 1 0 1 1 1 2 0 1 1 1 0 2 0 0 0 2 0 0 0 1 2 2 0 0 0 1 0 3 0 0 0 0 2 1 3 0 3 0 1 2 1 0 0 0 0 0 3 2 0 1 1 1 1 0 1 1 0 1 1 0 0 1 2 1 4 1 1 1 1 0 2 0 0 0 2 1 2 0 1 0 0 0 1 1 0 0 0 1 0 1 0 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 2 2 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 +0 0 1 1 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 2 0 1 1 0 1 1 0 2 1 0 1 1 0 1 0 2 1 3 0 1 0 0 2 1 0 1 1 0 0 2 1 1 0 1 0 0 0 1 1 1 0 2 2 1 3 0 0 0 1 1 1 1 0 0 0 0 0 2 0 2 0 2 0 1 2 0 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 1 2 0 1 1 0 0 2 0 1 1 2 0 0 3 1 0 0 0 1 0 0 0 2 0 0 0 1 1 2 1 1 1 0 1 1 1 0 3 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 2 0 1 0 0 2 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 +0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 3 0 1 1 0 1 0 2 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 3 1 0 0 1 0 1 0 1 0 0 0 1 0 2 1 1 1 0 0 3 1 1 0 0 0 1 1 0 1 0 0 2 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 2 1 1 0 0 2 1 1 1 2 0 0 0 0 0 1 1 1 0 2 0 1 0 1 2 1 0 0 0 1 0 1 1 2 1 0 2 0 0 1 1 2 0 0 1 1 0 2 0 1 1 1 0 2 0 2 0 0 1 0 2 1 1 0 2 2 1 1 0 0 0 0 1 1 0 1 2 0 0 0 0 1 0 0 0 0 1 1 1 1 1 3 0 0 0 0 0 2 2 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 2 0 1 0 1 1 1 0 0 1 0 0 0 1 0 0 2 0 0 0 1 0 0 3 0 0 2 0 0 0 3 1 0 0 0 0 0 0 2 1 0 0 0 1 0 +1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 2 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 1 2 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 1 2 0 0 1 1 0 2 0 0 2 1 0 2 0 2 2 1 0 2 2 1 0 1 0 0 0 0 1 0 0 3 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 3 0 1 0 1 0 1 3 0 1 1 0 1 0 0 0 1 2 0 1 1 1 1 0 0 1 0 2 1 0 0 1 1 0 1 1 1 0 1 0 1 1 1 0 2 0 0 0 0 0 0 0 0 1 1 2 1 0 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 3 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 2 0 0 1 1 0 1 2 0 2 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 2 1 0 0 2 1 0 0 +0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 2 0 1 0 0 0 1 3 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 2 0 1 2 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 2 2 1 1 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 1 1 2 0 1 3 3 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 2 0 0 1 1 2 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 2 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1 0 0 1 0 2 0 1 1 2 1 1 1 0 0 1 0 0 0 0 0 3 1 2 1 0 0 2 0 0 1 0 2 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 1 0 2 0 0 0 0 0 1 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 +1 0 1 1 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 2 0 1 0 0 0 1 0 0 0 0 0 2 1 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 2 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 2 1 0 0 0 0 1 0 1 0 1 0 0 2 2 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 2 0 2 0 0 1 1 0 1 0 0 0 1 0 1 0 0 2 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 2 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 2 0 1 1 1 1 2 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 2 0 1 0 0 2 0 1 0 0 0 0 2 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 2 0 0 1 0 0 1 2 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 +0 0 0 1 2 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 2 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 2 1 1 1 2 0 1 1 0 0 1 2 0 0 0 2 1 0 1 0 0 0 1 0 0 0 2 2 1 1 2 2 1 2 0 1 0 0 1 1 0 0 1 0 1 1 2 2 2 0 1 0 1 0 1 2 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 2 1 0 1 0 1 2 0 0 2 0 1 0 1 0 0 0 0 2 1 2 0 1 1 2 1 0 0 1 0 1 1 2 0 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 2 0 2 0 1 1 0 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 2 1 0 0 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 2 0 0 0 2 0 1 0 2 1 0 0 0 1 1 2 0 0 0 0 0 0 1 0 2 0 0 0 0 0 1 0 1 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 +0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 2 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 3 1 1 0 1 0 1 0 0 0 0 1 0 0 3 0 0 0 0 0 1 0 0 2 1 1 1 1 1 1 0 1 0 0 1 2 1 1 1 0 0 1 0 1 0 1 3 1 1 0 0 1 1 2 0 0 0 2 1 1 3 1 0 2 0 1 0 2 0 1 1 1 2 1 1 0 0 0 3 0 0 0 4 0 0 0 0 4 1 0 0 0 2 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 2 3 1 1 1 0 0 1 2 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 0 2 1 0 0 1 1 0 0 0 2 0 0 0 0 0 0 1 0 1 1 2 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 1 0 1 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 +0 2 1 0 0 1 1 0 1 0 0 1 1 1 1 1 2 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 2 0 0 1 0 1 1 0 1 1 0 0 1 0 1 3 1 0 0 1 0 2 0 0 0 2 2 2 1 1 0 1 1 2 0 1 1 0 0 1 1 1 0 2 2 0 1 0 1 0 2 1 1 1 1 1 0 1 0 1 1 1 0 0 1 2 0 2 3 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 2 0 0 0 3 0 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 2 0 1 1 1 0 0 2 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 2 1 0 1 1 0 0 0 0 0 1 1 1 1 0 1 0 2 1 0 1 0 0 0 0 0 0 1 0 1 0 0 3 0 0 0 0 1 0 0 1 2 0 0 0 2 2 0 2 0 0 0 2 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 2 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 +0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 2 2 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 2 0 1 0 0 0 1 1 1 1 2 1 0 0 0 1 0 0 1 0 1 2 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 1 0 2 1 2 1 2 1 2 0 1 1 1 0 1 1 0 3 0 0 0 2 0 2 0 1 0 0 0 0 1 0 1 2 0 0 0 1 0 0 0 1 0 0 0 1 1 2 1 2 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 3 0 0 1 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 2 0 2 0 0 0 0 2 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 1 0 2 0 1 0 +0 1 0 2 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 1 0 0 0 2 0 0 0 0 2 0 2 0 2 0 1 0 0 0 2 0 1 1 0 0 0 2 0 1 1 1 1 0 0 3 2 0 0 0 0 1 0 0 0 2 1 0 0 1 1 1 0 0 1 0 1 0 0 0 2 0 0 1 0 0 1 1 2 1 0 3 0 1 2 0 1 1 0 0 2 0 2 1 0 1 0 0 1 0 2 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 2 1 0 0 1 2 0 1 1 1 1 1 1 1 0 0 0 0 3 0 1 1 0 0 2 0 0 0 1 2 0 0 2 0 0 1 4 1 2 1 3 0 1 0 1 0 2 0 1 1 0 1 0 1 0 1 2 0 0 0 2 1 0 0 0 0 1 1 1 0 1 0 0 1 1 3 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 1 1 0 0 0 0 2 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 +0 0 1 1 1 0 0 0 0 0 1 0 1 2 1 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1 0 0 1 2 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 3 0 0 1 0 0 0 1 1 1 0 1 0 0 2 0 0 1 0 1 1 0 1 0 1 0 2 1 1 0 1 1 3 1 0 0 2 3 0 1 0 1 1 1 1 2 1 1 0 1 0 1 0 0 2 2 0 0 0 0 0 0 1 1 0 0 1 0 3 2 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 2 2 1 0 1 2 0 0 2 0 1 1 1 0 0 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 2 0 0 2 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 2 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 +0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 0 0 0 1 1 1 0 0 1 1 2 2 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 2 0 1 0 2 0 0 0 0 1 1 2 0 0 0 0 1 2 2 1 0 3 1 0 0 0 1 0 1 0 0 0 1 2 1 1 0 2 0 2 0 0 0 1 2 1 0 2 0 1 0 2 1 1 0 1 2 0 0 1 0 0 0 1 1 0 2 2 1 0 0 0 1 2 1 0 1 2 1 0 1 2 2 0 1 2 0 2 0 1 2 2 0 0 1 1 2 0 1 1 0 1 1 0 0 0 1 1 2 0 0 1 2 0 0 0 0 0 0 0 0 0 2 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 2 0 0 0 0 0 1 1 0 1 1 2 1 1 0 0 2 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 2 0 0 0 0 0 0 1 0 0 1 1 1 0 1 2 0 0 1 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 2 0 +0 0 1 0 1 2 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 2 1 0 1 0 1 2 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 3 0 0 0 2 0 0 0 2 0 0 0 0 0 1 1 1 2 1 0 0 1 0 1 1 1 0 0 3 1 0 0 1 1 0 1 1 2 0 2 0 1 0 2 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 1 2 0 0 3 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 2 0 0 2 0 1 1 0 1 1 0 0 0 2 0 0 1 0 0 1 0 2 2 0 1 2 0 0 2 0 2 1 0 1 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 2 0 0 2 0 1 0 0 0 0 0 1 1 1 1 1 1 0 2 0 2 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 3 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 3 1 0 0 +0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 2 2 0 1 0 1 1 0 1 0 2 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 2 0 0 0 0 2 0 3 2 1 1 0 0 1 0 2 1 0 0 2 0 2 0 0 0 0 0 0 2 2 2 1 1 0 1 0 1 0 0 1 0 3 0 0 3 0 1 1 0 0 0 0 0 1 1 2 1 0 0 0 0 1 1 2 1 0 1 1 0 1 0 1 1 0 2 0 0 0 0 1 2 0 1 2 0 0 1 0 0 0 0 0 1 0 1 3 2 0 0 1 0 1 0 0 0 2 0 2 0 1 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 2 0 1 0 0 0 1 2 0 0 3 0 1 1 0 0 2 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 2 0 0 0 0 1 0 0 0 1 0 1 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 +0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 2 0 1 0 0 1 1 0 1 0 0 1 0 0 1 2 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 2 0 1 0 0 1 1 1 2 0 1 2 0 0 0 0 0 3 0 0 0 0 2 0 0 0 2 0 1 1 2 1 0 0 1 1 0 2 1 1 2 0 2 1 2 1 1 2 0 0 0 0 1 1 0 1 1 0 1 0 0 0 2 2 2 0 0 0 2 2 2 1 0 1 2 0 0 0 1 0 0 2 3 0 0 0 4 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 2 0 0 3 1 1 1 0 0 0 0 0 0 1 1 1 0 2 0 1 0 0 0 0 2 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 1 1 1 2 0 0 2 1 0 0 0 3 1 1 0 2 2 1 0 1 0 1 1 0 1 0 0 0 0 2 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 2 0 0 0 0 +0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 3 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1 2 0 0 0 1 2 0 0 0 2 1 0 0 1 0 1 1 1 1 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 2 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 2 2 0 1 2 1 0 0 1 2 0 1 0 0 0 1 1 1 1 2 0 2 2 2 0 1 1 2 1 0 0 1 0 0 0 0 0 1 1 1 2 4 0 0 0 1 0 1 0 1 1 0 3 0 0 2 0 1 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 2 1 0 0 0 1 1 0 0 2 0 1 0 1 1 0 1 1 1 2 0 1 0 0 0 2 0 1 0 0 2 0 1 2 0 0 0 1 0 0 0 0 1 2 1 0 0 0 1 0 0 0 0 1 0 2 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 2 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 2 0 0 0 2 1 0 1 1 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 3 1 0 0 1 0 2 0 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 1 1 2 0 0 1 1 1 0 0 2 1 0 0 0 0 0 0 0 0 2 1 0 0 1 0 0 1 2 0 1 3 1 1 0 0 0 1 0 1 2 0 1 0 0 6 3 0 1 0 0 0 0 0 0 0 0 1 2 2 0 1 1 0 1 0 0 1 0 0 2 1 1 0 2 1 0 1 0 3 0 1 4 2 0 2 1 1 0 0 1 2 1 0 2 1 2 2 3 0 0 1 2 0 1 1 0 2 0 1 0 0 0 0 1 1 1 1 1 0 2 0 3 0 1 0 2 0 1 0 1 1 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 2 0 1 0 0 0 1 0 0 1 0 0 0 2 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 3 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 +0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 2 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 2 1 1 0 0 2 2 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 0 1 0 2 0 1 1 0 1 1 0 0 2 1 0 0 2 0 1 1 0 2 1 0 1 1 0 1 0 1 0 2 0 0 0 0 1 0 0 1 1 2 1 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 2 0 0 0 2 0 1 0 1 0 2 0 0 1 0 2 1 0 0 0 2 0 1 2 0 2 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 2 0 0 0 1 2 0 0 1 1 0 1 1 2 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 +0 0 1 0 0 0 1 0 0 0 0 1 2 0 0 0 2 2 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 3 0 0 1 1 0 1 0 1 0 0 2 1 0 2 0 0 0 0 0 0 0 3 1 2 1 0 0 1 3 3 1 0 1 1 2 1 0 1 0 0 1 0 2 2 1 0 0 1 0 0 0 1 2 0 0 0 1 0 2 1 0 0 0 1 0 1 1 1 0 0 2 1 1 0 0 1 1 0 1 0 0 0 0 2 1 1 2 1 0 0 2 1 3 0 1 0 1 2 1 1 2 1 1 1 0 2 0 0 1 1 0 0 0 1 1 0 0 0 1 3 1 1 2 1 5 1 0 0 1 0 0 1 1 0 0 1 1 0 0 2 0 1 0 0 1 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 2 0 0 1 0 0 0 0 0 1 0 0 1 1 0 2 0 0 0 0 2 0 1 0 0 1 0 2 0 0 0 0 +1 0 3 1 1 1 1 1 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 2 1 0 0 0 1 1 0 3 2 0 2 0 0 0 1 1 1 0 0 0 0 0 0 2 0 1 0 0 1 1 0 1 0 0 0 0 0 0 2 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 3 0 0 0 1 0 3 2 0 0 2 1 0 0 2 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 0 1 2 0 2 2 2 1 1 0 0 1 0 2 0 0 0 1 1 1 0 0 0 0 0 1 0 1 1 2 2 2 0 2 0 1 1 1 0 3 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 2 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 2 0 1 1 0 1 0 0 1 0 1 1 1 0 0 2 1 0 0 0 0 0 1 2 0 0 0 0 1 0 0 0 2 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 0 +1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 1 0 1 0 0 0 1 1 1 1 1 0 0 0 2 1 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 0 1 0 0 0 1 1 0 1 0 1 0 2 0 0 0 1 0 2 0 1 0 2 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 0 1 1 2 1 0 3 0 0 2 1 0 1 0 0 2 1 0 0 2 0 0 0 0 1 0 0 1 0 0 2 1 2 1 2 0 1 0 1 1 0 1 0 2 0 2 1 2 4 1 1 1 1 0 2 0 1 0 0 2 0 0 0 0 0 3 2 0 0 0 1 1 0 1 0 3 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 2 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 2 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 2 0 0 0 1 1 1 2 0 0 1 0 0 1 2 1 0 0 0 0 0 0 0 1 0 0 2 1 1 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 1 0 1 3 0 1 2 0 1 0 5 0 0 0 0 1 1 1 0 1 0 0 1 2 0 1 0 1 1 1 1 0 4 0 1 1 0 2 2 1 1 2 0 1 0 0 0 1 0 3 0 0 0 1 0 1 1 1 0 2 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 1 2 0 0 0 0 1 0 0 0 2 0 0 1 0 0 0 2 1 1 0 0 1 0 0 2 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 0 1 5 0 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 2 0 2 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 +0 0 0 0 0 1 0 1 2 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 0 0 2 0 0 0 3 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 2 0 1 0 3 2 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 2 0 0 1 0 2 1 0 0 0 0 2 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 0 2 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 2 0 1 0 1 1 2 0 0 0 0 2 1 0 0 0 0 2 1 0 2 1 1 2 2 1 1 1 1 2 0 0 3 0 0 1 2 1 0 0 0 2 0 1 0 0 0 1 1 1 0 2 1 0 1 0 0 1 1 1 0 0 0 1 0 2 0 1 1 0 1 0 0 0 0 2 2 0 0 0 2 2 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 1 1 1 1 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 2 2 1 0 0 0 0 0 0 2 0 0 0 2 1 0 0 1 0 1 2 0 0 1 0 0 0 0 2 1 0 0 1 1 0 0 0 0 0 0 0 2 1 1 +0 1 0 1 0 0 1 0 0 0 2 0 0 0 1 2 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 1 0 2 0 0 0 1 0 2 1 0 1 0 0 1 0 1 2 1 0 1 0 2 0 1 0 0 0 0 0 1 0 1 1 0 0 2 0 0 0 0 2 0 0 0 0 0 1 1 0 1 2 2 1 1 0 0 0 0 0 0 2 1 2 0 1 1 0 0 2 1 2 0 2 0 0 2 0 1 0 1 2 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 2 0 0 2 2 1 1 1 1 2 1 1 0 1 0 1 1 1 0 1 0 1 1 1 2 3 1 2 2 0 0 1 1 1 0 2 2 0 0 0 0 0 0 1 1 4 0 0 0 0 0 2 1 2 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 1 0 1 1 1 1 0 2 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 2 0 2 0 2 1 0 0 2 0 0 0 0 1 1 2 0 2 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 2 0 0 0 1 0 0 0 +0 2 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 2 0 0 1 1 0 1 0 2 1 1 0 0 0 1 1 0 2 0 0 2 0 0 2 1 1 0 1 0 0 3 1 0 0 0 2 0 1 0 1 1 0 0 0 2 1 2 1 1 0 0 1 1 0 0 1 1 1 0 0 3 1 2 0 0 1 0 1 1 2 0 0 0 1 0 0 1 0 1 2 2 0 1 0 2 0 0 1 2 1 1 0 0 2 0 1 0 0 0 1 1 0 1 0 0 2 0 2 0 0 1 1 0 0 0 1 0 2 2 1 0 0 0 0 2 1 2 2 0 0 0 0 0 0 0 0 2 2 0 2 0 1 1 1 1 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 1 2 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 2 0 0 0 0 0 0 2 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 +0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 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 1 0 1 1 0 0 1 1 0 1 0 0 2 2 1 0 1 0 1 0 0 2 1 0 0 0 0 0 0 0 1 0 1 2 0 1 2 2 0 0 2 1 0 1 0 1 0 1 0 0 2 1 0 1 0 3 0 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 2 1 0 0 0 0 1 1 0 0 1 0 1 0 2 1 1 3 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 2 0 1 0 0 1 0 1 1 0 0 2 0 0 4 1 0 0 0 1 0 0 1 0 1 2 0 1 1 2 0 1 0 1 0 0 0 3 0 0 1 0 0 1 0 0 1 0 0 2 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 0 0 0 0 1 0 0 0 0 2 1 0 1 0 0 0 1 0 0 0 0 0 0 0 +0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 1 2 0 0 0 0 0 0 1 2 1 1 0 0 0 0 1 0 0 0 0 2 0 0 0 0 2 0 1 2 0 0 0 1 2 1 2 3 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 4 2 1 1 0 1 0 1 1 0 0 0 1 0 1 0 0 0 2 0 1 1 1 0 1 2 2 2 0 0 1 0 0 0 0 1 1 1 0 0 2 1 2 0 2 0 1 3 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 0 3 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 2 1 0 1 0 3 1 0 0 0 0 0 1 2 0 0 0 1 1 1 2 1 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 +1 0 0 0 1 1 0 1 2 0 0 1 0 3 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 2 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 3 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 3 1 0 1 1 3 2 2 1 0 2 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 2 0 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 2 0 0 0 3 0 0 0 0 0 0 2 2 0 0 2 1 2 0 0 1 2 1 0 0 0 0 0 0 0 2 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 2 0 2 1 0 0 1 1 0 1 0 3 0 0 0 0 0 0 0 2 0 1 0 0 2 0 0 1 0 0 0 2 1 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 3 1 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 2 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 +1 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 1 1 1 1 1 2 2 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 2 0 2 1 1 0 0 0 0 1 0 0 0 0 2 1 1 1 0 0 1 0 0 0 0 0 0 2 0 0 0 2 1 0 1 0 1 0 1 1 0 1 0 0 2 1 1 0 1 0 1 4 0 0 0 3 0 1 0 0 0 0 1 0 1 0 2 2 1 1 0 1 0 2 0 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 2 0 0 1 1 1 0 1 0 1 2 1 0 0 1 0 2 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 2 0 1 1 1 0 1 2 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 2 0 0 2 0 0 2 1 0 0 1 2 2 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 2 0 0 1 0 0 3 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 2 0 1 0 +0 0 0 1 1 0 0 0 2 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 2 0 0 2 0 0 0 0 0 0 0 0 1 0 2 0 0 0 1 0 1 0 0 0 0 0 0 1 2 0 0 0 0 1 0 0 0 1 0 0 0 1 0 2 1 1 0 0 2 0 0 2 0 0 0 0 2 1 2 0 1 0 2 0 2 0 0 0 0 2 0 1 2 1 1 2 0 2 2 1 1 1 1 0 0 2 0 0 2 0 0 0 3 0 0 0 3 0 3 0 0 1 1 2 1 0 1 1 1 0 0 2 1 0 2 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 0 2 0 0 1 1 1 2 0 0 0 1 2 0 0 1 1 1 2 0 3 0 0 0 0 1 0 0 2 1 1 1 0 1 0 0 1 0 0 1 0 0 0 2 1 1 0 0 1 0 0 0 0 1 0 0 0 0 2 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 1 0 1 0 0 2 0 1 0 0 1 1 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 1 1 0 1 0 2 0 0 0 0 1 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 2 0 1 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 2 0 1 2 0 0 2 0 0 0 0 0 0 0 0 0 0 1 0 1 2 1 1 1 0 0 1 0 1 0 0 1 2 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 2 0 1 0 1 1 3 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 0 0 1 1 0 1 0 0 1 0 1 2 0 2 0 2 0 1 0 0 0 0 1 0 0 1 0 2 1 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 3 1 0 0 1 1 1 1 1 0 0 1 1 2 0 1 3 1 0 3 0 2 2 0 1 0 0 1 0 1 1 0 1 3 0 0 1 1 1 2 0 1 2 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 2 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 2 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 0 0 0 1 0 0 3 0 0 0 1 1 0 1 0 1 0 0 0 1 2 0 0 2 0 0 2 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 2 0 0 0 3 0 1 0 1 1 1 0 1 2 1 0 0 2 0 0 0 0 0 1 3 2 0 0 3 0 0 0 1 0 3 0 2 1 2 0 0 0 0 1 1 0 0 0 1 0 0 0 2 0 0 2 0 2 1 0 2 0 0 1 0 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 2 3 0 0 1 0 0 0 0 2 0 1 1 0 1 0 1 0 2 0 0 0 1 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 1 0 0 2 0 0 0 0 2 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 3 0 2 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 1 0 0 0 0 1 0 1 0 0 +1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 1 0 0 0 0 0 1 2 0 0 1 2 1 0 2 0 1 1 0 1 1 0 1 1 0 0 2 0 2 1 0 3 0 2 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 3 1 1 1 1 1 1 0 0 0 0 0 1 2 0 1 0 0 1 0 2 1 1 0 0 1 0 0 1 1 1 0 0 2 0 1 0 1 1 2 0 0 2 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 2 0 1 0 2 0 0 0 2 1 0 1 0 0 1 0 0 0 0 0 3 1 0 0 2 0 3 1 2 0 0 0 1 1 0 2 1 1 0 0 1 0 1 0 0 0 5 1 1 0 3 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 +1 0 1 1 0 0 0 0 0 0 0 0 4 0 0 0 1 2 0 1 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 2 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 2 0 2 1 1 0 1 0 1 1 1 0 1 1 0 1 2 0 0 1 2 1 1 0 0 1 1 1 1 1 4 4 0 1 0 2 0 1 1 0 0 0 0 0 0 0 2 0 2 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 2 2 0 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 2 0 2 2 0 1 1 0 2 1 0 0 1 0 1 1 1 1 0 2 0 0 0 0 2 0 1 2 1 0 1 0 0 1 0 1 2 2 0 0 0 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 2 1 0 1 0 1 0 0 1 1 0 0 0 2 0 1 0 0 1 1 0 0 +0 0 0 0 0 0 0 0 0 0 1 3 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 2 0 0 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 2 2 1 1 0 1 0 1 0 2 3 0 1 2 0 3 2 1 1 0 1 1 1 1 0 0 2 0 0 1 0 1 2 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 2 0 1 1 1 0 1 2 2 0 3 1 1 1 0 0 1 0 0 0 2 1 0 0 0 0 0 0 2 0 1 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 2 0 1 0 2 0 1 2 0 0 0 0 1 0 1 0 0 1 0 0 0 3 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 2 1 0 0 1 1 0 0 0 0 0 1 0 0 2 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 2 1 0 2 1 1 0 0 0 0 0 0 0 0 1 +0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 3 0 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 2 0 1 0 0 1 0 0 0 0 0 1 0 3 0 0 0 1 0 0 0 2 1 0 2 0 0 1 0 1 0 1 0 1 0 0 0 0 2 0 0 1 0 2 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 2 1 0 2 1 1 1 0 0 1 1 1 0 0 1 0 2 2 1 0 1 0 0 1 1 2 1 0 1 0 2 2 1 0 1 0 0 1 0 0 1 2 1 0 1 1 0 0 2 0 0 0 0 0 0 2 1 2 0 0 0 1 1 0 1 1 0 1 0 0 0 0 2 0 0 1 0 1 1 0 1 2 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 3 0 0 0 1 0 0 0 0 0 1 3 0 1 0 0 1 0 2 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 3 0 0 0 0 0 +1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 2 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 1 2 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 2 1 1 1 1 0 0 0 0 3 1 0 0 0 1 1 2 1 0 1 2 1 0 0 1 0 2 1 0 0 0 0 1 1 0 1 0 0 0 1 2 2 0 2 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 2 0 0 0 0 1 0 2 0 0 1 2 0 2 0 1 0 1 0 1 2 0 2 0 1 1 0 1 2 1 1 2 1 1 1 0 1 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 2 1 1 1 1 0 0 1 1 0 2 2 0 1 0 1 2 0 0 0 2 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 +1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 1 2 1 0 0 0 0 0 0 0 0 2 0 1 0 1 1 0 0 0 0 1 0 0 0 1 2 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 1 0 2 0 0 2 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 3 1 0 2 0 0 0 1 0 0 1 1 1 0 0 0 2 1 1 0 1 1 0 0 2 1 2 0 0 0 0 1 0 0 0 1 1 0 1 2 0 0 0 0 0 0 2 0 2 0 0 0 0 1 2 1 0 0 1 0 0 0 2 1 0 0 0 0 1 1 1 0 1 1 2 0 0 1 0 0 0 1 0 0 0 0 1 1 2 2 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 2 1 0 0 1 0 1 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 2 2 1 0 0 0 0 1 0 0 2 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 2 0 1 0 0 0 0 0 0 2 1 1 0 +0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 2 1 1 0 0 0 0 1 0 1 0 0 0 1 0 2 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 3 0 0 0 0 0 2 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 3 0 1 0 0 3 1 0 2 0 0 2 1 2 0 2 0 0 1 1 1 0 0 2 2 0 0 0 1 2 1 0 0 0 0 0 0 0 2 2 2 0 1 0 1 0 2 0 0 0 0 1 1 2 0 0 0 0 0 2 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 2 0 0 3 0 0 1 0 1 0 0 0 0 0 1 0 3 2 0 0 0 2 0 0 0 2 0 1 2 0 2 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 2 0 0 0 0 0 1 1 +0 0 0 2 1 0 1 0 0 1 0 1 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 2 2 0 0 0 1 1 0 1 3 1 0 2 1 1 1 1 0 2 0 2 1 0 0 1 0 1 1 0 0 0 2 1 0 0 1 2 0 3 0 0 1 1 2 0 0 0 1 0 1 1 2 2 0 0 1 2 0 1 0 2 0 1 0 0 0 0 0 1 1 2 0 2 0 0 0 0 1 2 3 0 1 0 4 0 2 2 0 1 0 0 2 1 0 0 0 0 1 1 0 1 0 1 2 0 1 1 0 2 0 2 1 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 4 1 0 0 3 0 1 0 1 0 0 0 2 0 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 2 0 0 0 1 1 1 0 0 0 2 1 0 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 +0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 2 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 2 0 0 0 0 0 3 0 0 2 0 0 0 0 2 0 0 1 0 1 0 2 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 3 0 0 1 1 1 2 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 2 2 0 3 2 1 0 1 1 0 3 3 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 2 0 0 0 1 0 1 1 1 0 0 0 0 1 0 1 2 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 2 1 0 0 0 3 1 0 1 0 0 0 0 0 1 1 0 2 1 0 0 1 0 2 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 1 0 0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 1 +0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 1 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 1 1 2 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 2 3 1 0 0 1 1 0 1 0 3 1 1 1 1 0 0 0 0 1 1 1 1 0 0 3 2 0 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 2 1 1 0 1 0 1 2 0 1 2 0 0 0 1 0 0 2 0 2 1 1 0 0 0 1 1 2 1 2 1 3 0 0 0 3 2 0 1 1 2 0 1 1 2 1 1 0 0 2 0 1 0 0 0 1 1 0 1 1 0 1 1 2 2 3 1 0 0 1 0 0 0 0 1 1 2 1 1 1 2 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 +0 1 1 0 0 1 0 0 1 1 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 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 2 1 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 2 0 1 0 0 1 1 1 1 1 1 0 2 0 3 1 0 0 1 1 0 0 3 4 1 0 1 0 0 0 0 3 1 2 1 0 0 0 2 0 0 1 2 0 1 0 0 1 0 1 1 2 0 1 1 2 2 1 0 1 1 0 0 1 0 0 2 1 0 0 0 2 1 1 0 0 0 1 2 0 2 0 0 2 2 1 2 0 0 0 0 1 0 2 2 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 2 3 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 2 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 3 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 3 1 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 2 1 0 0 1 1 0 1 0 1 2 1 1 0 0 0 0 0 1 2 1 1 0 1 1 0 3 1 0 0 0 0 0 1 1 2 1 1 0 0 0 1 2 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 2 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 2 2 1 0 1 1 2 1 2 0 0 1 1 0 1 1 0 0 0 3 0 1 1 0 3 2 2 1 0 0 3 0 1 0 0 3 1 0 0 2 1 0 1 5 0 0 0 0 2 1 0 0 0 1 1 0 0 1 0 0 0 2 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 +2 0 1 1 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 2 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 0 1 0 0 0 2 2 0 0 2 0 1 0 2 1 0 0 3 1 0 1 0 1 1 0 0 2 4 1 1 0 1 1 1 0 0 0 1 0 2 1 1 1 0 0 0 1 1 0 0 0 2 1 2 1 1 0 1 3 2 1 0 1 0 1 1 1 1 0 1 0 0 0 2 0 0 1 0 1 1 0 0 0 2 2 1 0 1 0 0 1 0 2 0 0 0 0 0 1 0 1 0 2 1 2 1 0 0 0 1 1 0 0 2 0 1 1 1 0 0 2 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 2 0 0 0 1 0 1 2 0 2 0 0 0 0 1 1 1 0 0 0 2 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 1 0 0 1 0 0 0 1 0 0 2 0 0 3 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 2 0 1 0 0 1 0 0 1 0 3 1 1 0 2 0 1 0 2 0 2 0 1 0 0 1 0 3 2 1 1 2 0 0 2 3 0 2 1 0 1 0 0 0 0 1 0 2 0 0 1 1 0 1 0 0 1 0 0 1 0 1 2 3 0 0 2 1 0 1 2 1 1 2 0 0 1 0 1 0 2 1 1 1 0 0 2 1 1 1 0 0 0 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 0 2 1 1 0 1 0 1 0 1 0 0 1 2 0 2 0 1 2 0 1 1 2 0 0 1 3 1 1 0 0 0 0 0 2 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 3 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 +0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 2 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 3 1 1 0 1 1 1 0 0 0 0 0 1 0 0 1 1 2 1 0 0 3 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 0 0 3 1 0 0 0 0 0 0 1 2 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 3 1 1 0 1 0 2 2 1 0 0 1 1 1 3 2 1 0 0 1 1 1 0 1 2 1 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 2 0 0 1 1 0 2 0 0 0 1 0 1 0 1 0 0 0 0 2 0 0 1 0 2 0 0 0 0 0 0 2 0 0 1 2 2 0 0 0 0 0 0 1 1 0 0 0 1 2 0 1 0 0 3 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 2 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 2 0 1 0 2 0 0 +1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 3 0 0 1 2 0 0 1 1 0 1 1 2 0 1 1 0 0 0 0 0 0 0 0 2 0 2 1 0 1 1 0 0 1 1 1 1 2 0 0 0 1 0 0 0 2 1 1 3 0 1 1 0 1 1 0 0 3 1 0 0 1 3 4 0 0 0 0 1 2 1 1 1 0 1 0 1 0 1 0 5 1 1 1 0 0 0 1 2 0 2 2 0 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 2 1 1 0 0 2 1 0 0 1 1 0 1 2 2 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 2 0 0 2 0 1 1 0 0 1 0 1 0 0 2 0 1 0 1 2 0 0 0 0 0 0 1 0 1 0 0 2 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 2 2 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 2 0 3 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 0 +0 0 0 1 2 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 3 0 1 1 0 1 0 0 0 1 2 1 1 0 0 0 2 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 2 0 2 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 1 0 2 1 0 1 1 0 1 4 1 2 1 0 0 0 0 0 0 2 3 0 0 0 0 1 0 0 2 2 0 1 0 1 0 0 0 1 1 0 0 2 0 0 0 0 0 1 2 0 1 0 0 0 0 1 3 1 0 0 0 2 0 0 0 2 1 1 0 3 1 0 1 0 1 1 0 0 1 0 0 1 0 1 4 1 0 1 3 1 2 2 0 1 0 0 0 0 0 2 0 0 0 2 0 0 0 3 1 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 2 1 0 1 0 0 0 0 0 1 +0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 0 0 2 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 2 0 0 0 1 0 0 1 0 1 1 1 1 0 2 0 2 0 0 2 0 1 0 0 0 1 1 1 0 1 2 1 0 1 0 0 0 0 3 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 1 0 0 2 0 0 1 2 1 2 0 1 0 0 1 0 1 2 0 1 0 3 0 1 1 0 0 0 2 0 1 1 2 1 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 2 2 1 0 0 0 2 0 0 0 0 1 2 1 2 0 1 1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 2 1 2 0 0 0 0 0 0 0 0 1 2 1 0 0 0 3 0 1 2 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 +0 0 0 0 2 0 0 0 0 0 0 0 0 2 1 0 0 0 1 1 1 0 0 0 1 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 5 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 2 1 1 0 2 2 0 0 0 0 0 4 0 1 0 0 1 0 0 0 1 1 0 0 0 2 0 1 0 0 0 0 0 0 3 1 0 1 0 0 3 1 1 0 0 0 1 1 0 0 0 1 1 0 1 1 0 1 1 2 0 1 1 0 1 0 0 0 2 2 0 0 0 0 0 1 1 0 2 0 0 1 0 0 2 1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 2 0 0 0 0 2 0 1 0 1 0 2 1 0 0 1 0 0 0 1 2 0 0 0 1 0 0 0 0 1 0 2 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 +0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 1 0 0 0 2 0 0 1 0 1 0 0 2 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 2 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 3 1 0 0 0 0 1 1 0 2 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 2 1 0 1 0 0 0 0 1 0 1 2 1 0 2 2 0 1 2 1 0 2 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 2 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 2 1 0 1 0 0 2 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 2 0 0 +1 0 0 0 0 1 1 0 0 0 1 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 2 0 1 0 0 0 1 0 1 2 0 0 1 1 2 0 0 1 1 0 0 2 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 0 2 1 2 0 0 0 1 0 3 1 0 0 1 0 0 2 2 1 2 0 1 0 1 0 2 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 2 0 0 0 0 1 2 1 2 2 3 1 0 0 0 0 0 0 1 0 1 2 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 3 0 0 0 0 0 0 1 2 2 0 0 1 0 0 0 1 0 1 1 2 1 1 2 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 3 1 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 2 0 0 0 0 1 2 0 0 0 1 0 1 1 1 0 1 2 0 0 0 1 0 1 1 0 2 0 0 0 0 0 0 0 1 0 1 1 0 2 0 0 0 2 0 1 0 0 1 0 2 0 1 0 1 0 3 2 2 2 1 0 1 1 0 0 0 1 1 0 2 1 0 0 1 0 0 0 0 2 0 1 0 0 1 1 0 1 2 1 0 0 0 0 1 0 2 0 2 2 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 0 2 0 1 0 1 1 0 2 0 0 0 0 1 0 0 1 0 0 2 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 +0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 1 2 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 2 0 0 0 2 1 1 0 0 0 1 1 0 0 2 1 0 1 1 0 0 0 0 1 4 0 2 0 0 1 0 2 1 3 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 2 0 0 0 0 1 0 2 1 1 1 2 1 0 2 0 0 0 0 0 0 1 0 0 3 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 2 2 0 0 0 0 0 0 1 1 0 0 1 2 1 1 0 0 1 0 1 1 2 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 2 4 2 1 0 1 0 1 2 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 1 1 2 0 1 0 0 0 1 0 0 2 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 2 0 0 0 2 0 1 1 0 0 +0 1 0 0 0 0 0 2 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 3 1 1 0 1 1 1 0 0 1 1 1 0 1 0 1 0 2 1 1 1 0 2 0 0 1 0 1 1 2 0 0 1 3 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 4 0 1 2 1 0 2 0 0 1 1 0 0 0 1 1 0 2 1 1 2 0 1 0 1 0 0 0 0 3 1 1 1 3 0 1 1 1 0 3 0 1 0 0 1 1 0 0 1 1 0 0 0 2 0 0 2 0 0 1 0 0 0 0 0 1 1 0 2 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 +0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 2 0 0 1 1 0 0 1 0 3 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 2 2 1 2 0 1 0 0 1 0 2 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1 0 2 0 1 1 0 0 0 0 0 0 2 0 1 1 0 1 0 2 0 0 1 1 1 1 1 0 0 2 2 1 1 1 1 1 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 2 2 0 0 1 0 1 0 0 0 0 0 2 1 1 0 0 1 2 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1 0 0 0 1 0 2 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 3 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 +0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 2 0 0 0 0 1 0 1 0 1 2 0 0 1 0 0 1 0 0 0 0 2 1 0 0 0 0 2 0 2 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 2 1 2 0 0 1 1 3 0 0 0 1 1 1 2 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 2 0 0 0 0 3 2 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 2 1 1 2 2 0 0 1 1 0 0 1 0 1 0 3 0 0 2 0 1 0 2 1 2 1 1 0 0 1 0 1 3 0 0 1 0 0 1 0 0 1 0 0 1 0 2 0 0 0 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 2 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 +0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 1 1 0 0 0 0 0 1 1 2 1 0 0 0 0 1 1 0 2 1 1 0 1 1 0 0 1 0 0 3 2 0 0 1 1 2 2 0 0 0 1 0 0 1 0 0 2 0 0 0 1 2 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 2 1 0 0 0 0 0 0 1 4 0 0 0 1 0 3 0 0 0 2 0 0 0 3 0 0 1 1 2 0 0 2 0 0 0 0 0 3 0 0 0 0 1 1 0 0 0 1 2 1 1 0 0 0 1 2 0 0 1 0 0 0 0 0 0 0 1 1 1 0 2 0 0 1 0 4 0 0 0 0 1 0 0 1 0 0 2 1 0 1 0 0 2 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 2 2 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 1 2 1 2 0 0 0 0 1 0 1 0 1 1 0 0 1 1 2 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 3 0 0 0 0 1 1 0 1 1 0 0 0 2 1 1 0 1 1 2 2 0 1 0 1 0 0 3 1 1 0 0 0 0 0 1 2 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 3 0 0 0 0 0 0 0 0 0 0 1 0 1 2 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 4 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 3 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 2 0 0 0 0 2 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 +0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 2 1 0 0 0 0 0 0 1 1 1 0 0 0 1 4 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 2 0 0 1 0 0 1 1 0 0 0 3 0 0 0 2 1 1 0 1 1 0 0 2 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 2 1 2 1 0 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 2 0 2 0 1 0 0 2 0 0 0 0 0 0 0 0 1 2 1 0 1 1 0 0 2 0 0 0 0 0 1 1 1 0 0 2 0 1 0 2 1 2 0 0 0 0 0 1 0 0 0 0 1 2 0 1 0 0 1 1 0 0 1 0 0 1 1 0 1 2 0 0 0 1 2 0 2 0 0 0 1 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 +1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 2 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 2 0 1 0 2 0 1 0 1 1 0 2 0 2 2 0 1 0 0 0 2 1 0 1 0 0 2 1 2 1 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 2 1 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 2 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 +0 1 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 2 0 0 1 0 1 1 2 1 0 0 0 1 2 0 0 1 1 0 1 1 1 0 0 0 1 1 0 2 0 0 1 1 0 0 0 1 2 1 2 1 0 0 0 0 0 1 2 0 0 1 3 0 0 1 2 2 0 0 1 2 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 2 1 0 1 0 1 0 0 0 0 2 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 1 0 3 0 0 1 0 0 1 0 0 0 1 0 0 2 0 1 1 0 0 0 0 1 0 0 0 1 0 1 2 0 1 0 0 2 1 0 0 0 2 0 0 1 0 1 0 1 0 0 0 0 0 2 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 2 0 2 3 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 2 0 1 0 0 3 1 0 0 0 0 0 0 3 0 0 1 0 0 0 2 2 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 0 0 3 1 0 1 0 1 0 0 1 2 0 2 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 3 1 0 0 0 0 0 0 0 0 2 1 0 0 0 0 1 1 1 0 1 0 0 0 0 2 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 +0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 3 0 0 0 0 0 1 2 0 1 1 0 0 0 0 2 1 0 0 0 1 0 1 0 3 0 0 0 1 1 1 1 0 1 1 0 1 0 2 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 2 0 1 0 1 0 1 2 0 1 0 0 0 1 0 0 3 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 2 1 0 0 1 2 0 0 0 0 0 0 1 2 0 0 2 0 0 0 1 0 1 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 1 0 0 0 0 0 2 1 1 0 0 0 0 2 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 1 1 0 0 0 1 0 1 0 0 0 0 1 1 1 1 +0 0 0 1 1 0 0 0 2 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 3 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 3 3 0 0 0 0 1 0 0 0 0 2 1 0 0 0 0 1 0 1 1 1 1 2 0 0 3 0 0 0 0 2 1 0 0 1 1 1 0 0 0 1 1 1 2 0 0 0 0 1 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 2 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 2 0 0 0 0 1 1 0 1 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 2 0 0 0 0 1 1 0 0 0 0 1 0 0 2 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 +1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 2 1 0 0 1 0 0 0 2 0 0 1 0 1 0 1 0 2 0 1 0 1 2 0 0 1 1 2 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 1 2 2 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 2 1 0 1 1 1 0 0 2 0 1 3 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 2 0 0 0 1 0 1 0 1 0 2 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 1 1 0 2 0 1 1 1 0 0 0 0 0 2 0 0 1 0 0 0 0 0 1 1 0 0 1 2 1 1 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 2 0 0 0 3 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 +1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 2 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 2 0 0 0 0 0 0 0 1 0 1 1 0 0 0 2 0 0 0 1 1 0 0 0 0 3 1 1 1 0 0 0 2 1 1 0 0 1 0 1 0 1 0 0 1 1 2 0 0 2 0 2 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 2 0 0 1 2 0 0 1 0 0 0 1 1 0 0 2 0 0 0 0 2 0 0 0 1 2 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 2 0 1 1 1 0 0 0 1 1 0 0 2 1 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 1 2 0 2 0 1 2 0 0 0 0 0 0 0 2 0 0 1 0 0 3 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 +0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 2 1 0 2 0 1 2 2 0 0 0 0 1 0 2 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 0 1 2 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 2 0 0 0 2 0 1 0 0 1 0 0 0 0 2 0 0 0 1 1 1 1 0 0 0 0 0 0 1 2 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 2 2 0 1 1 0 0 1 0 0 0 0 0 2 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 2 1 1 1 0 0 0 0 0 0 0 2 2 1 0 0 0 0 0 0 1 0 0 1 0 2 0 0 1 0 2 1 0 0 0 0 0 0 0 1 2 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 1 0 2 0 1 1 0 0 1 1 1 1 0 0 0 0 2 0 0 0 0 +0 0 1 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 1 2 0 0 0 0 2 0 0 1 0 0 2 0 1 0 0 0 0 0 2 0 0 2 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 2 3 2 0 0 1 1 3 0 0 1 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 2 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 2 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 2 1 0 0 0 0 0 0 0 2 1 2 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 2 1 0 0 1 1 0 0 0 0 3 1 0 1 0 0 1 0 0 0 0 0 1 0 0 2 2 0 1 1 0 2 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 +1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 2 0 1 0 0 2 1 0 0 0 0 0 0 0 0 0 2 1 0 2 0 0 0 0 0 0 1 0 2 1 0 2 0 0 1 0 3 0 1 0 0 0 0 1 0 1 0 0 0 0 0 2 0 0 0 0 0 0 1 0 1 0 0 2 0 0 0 0 0 1 2 3 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 2 0 0 0 0 1 0 1 2 1 0 2 0 0 0 1 1 0 0 2 1 0 0 0 0 1 0 0 0 2 0 0 0 0 3 0 0 0 0 1 0 0 0 0 2 0 0 1 2 1 0 0 0 0 1 1 1 1 1 3 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 2 0 0 1 0 1 2 1 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 2 0 0 0 0 0 4 1 0 0 2 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 2 1 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 2 2 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 2 0 2 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 2 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 3 1 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 2 0 1 0 0 1 0 1 1 4 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 0 1 2 0 0 0 0 1 1 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 +2 1 1 0 0 1 0 0 0 0 0 0 1 0 2 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 0 1 0 0 2 0 0 0 0 0 0 1 1 0 1 2 0 1 2 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 2 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 3 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1 0 3 0 0 0 0 2 2 2 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 2 0 0 2 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 3 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 1 0 0 0 1 0 +0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 3 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 2 0 0 0 1 0 0 0 0 2 0 1 0 0 0 0 1 1 0 0 0 0 1 0 2 0 0 1 0 2 0 1 0 2 0 0 1 1 1 0 1 0 3 0 0 1 0 0 1 0 1 0 0 0 1 0 2 1 0 2 1 0 0 0 1 1 0 2 0 0 2 0 0 1 2 2 1 0 0 1 0 1 0 2 0 2 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 2 0 1 2 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 2 2 2 1 0 1 0 0 2 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 +0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 0 2 0 0 0 1 0 0 0 0 1 1 0 2 1 2 1 0 0 0 0 1 0 2 2 1 1 1 2 0 1 0 0 1 0 0 0 1 0 1 1 1 2 1 1 2 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 2 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 0 1 2 1 0 1 0 0 2 0 0 1 0 1 0 0 2 2 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 3 1 0 0 0 1 0 0 2 0 1 0 1 0 1 1 1 2 0 0 0 1 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 +0 1 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 2 1 0 1 0 0 1 3 1 1 2 0 0 1 0 3 0 1 1 1 1 0 2 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 1 0 1 1 1 1 0 1 1 0 0 0 0 0 1 1 2 1 1 0 1 1 1 0 0 1 0 0 2 0 0 0 1 1 1 0 0 0 1 0 1 2 1 2 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 4 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 2 0 0 1 1 0 0 0 2 0 0 1 0 1 0 1 1 1 0 0 0 1 0 2 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 +0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 2 0 2 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 2 0 1 0 0 1 2 1 0 0 0 1 1 0 2 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 2 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 2 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 2 0 0 0 0 0 0 1 1 0 0 0 2 0 1 2 0 2 2 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 1 1 1 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 +0 0 0 1 0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 2 0 1 0 1 2 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 1 0 0 0 0 1 2 1 0 3 1 0 2 0 1 1 1 0 0 0 1 2 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 1 1 0 2 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 2 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 2 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 2 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 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 1 1 0 1 0 0 0 1 0 0 0 0 0 0 +0 1 0 0 1 0 0 1 0 0 1 0 0 2 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1 2 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0 3 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 1 2 0 0 2 0 0 1 0 0 0 1 1 0 0 2 0 2 0 3 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 2 0 0 1 0 2 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 2 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 1 0 1 1 0 0 0 0 +1 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 3 0 0 0 2 1 0 1 0 0 0 2 0 0 1 2 0 1 0 0 0 1 0 0 2 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 2 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 2 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 2 1 0 3 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 2 1 1 1 0 1 1 0 0 2 1 1 0 0 0 0 0 2 1 1 0 1 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 4 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 2 0 1 0 1 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 2 0 1 1 0 0 3 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 2 4 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 +0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 2 0 0 0 1 0 1 1 1 0 0 1 1 0 1 0 0 2 1 1 0 0 2 0 0 0 0 1 0 0 3 0 0 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 0 2 1 2 1 0 0 0 2 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 1 2 0 0 0 0 0 1 0 2 2 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 +0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 2 1 0 0 0 0 1 0 0 0 1 1 0 0 2 0 0 1 1 0 0 1 0 0 0 0 0 2 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 3 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 2 1 1 0 0 1 1 1 0 2 0 0 0 0 1 0 1 0 0 0 0 1 1 0 2 0 1 2 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 2 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 3 1 0 0 0 0 0 1 1 0 0 0 0 2 1 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 2 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 +0 2 0 0 1 0 0 1 0 2 1 1 0 1 2 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 1 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 2 1 0 0 1 0 0 2 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 2 2 0 0 1 1 0 1 0 1 0 0 0 1 2 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 2 0 0 0 0 2 0 0 1 0 0 0 1 0 0 2 0 0 1 0 0 0 1 1 0 4 1 3 1 0 0 1 1 0 2 0 1 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 1 0 0 0 0 2 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 +1 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 1 1 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 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 0 0 0 1 0 0 0 1 2 0 0 0 0 1 2 0 2 0 1 2 1 0 1 0 1 1 1 0 0 0 0 2 0 0 2 0 0 1 0 0 1 1 0 2 3 3 2 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 2 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 2 0 2 1 0 0 1 1 0 0 1 1 0 3 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 2 0 1 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 +0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 2 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 2 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 2 1 1 0 0 1 0 0 0 0 2 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 1 3 1 0 1 1 0 1 0 0 3 1 0 1 0 0 0 0 1 0 2 2 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 3 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 +0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 2 1 0 0 0 0 0 1 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 2 1 0 0 2 0 0 0 0 0 2 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 1 2 0 0 1 3 0 0 0 2 0 0 1 0 1 0 1 1 0 1 3 1 0 0 0 2 1 2 0 1 3 2 0 0 0 1 0 0 0 1 0 2 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 1 0 1 0 0 0 1 0 1 0 0 1 2 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 2 1 2 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 1 0 0 1 1 1 0 2 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 2 1 2 1 0 2 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 2 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 2 0 1 0 2 0 0 0 0 0 0 1 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 0 1 0 1 0 2 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 2 1 0 1 0 0 1 0 0 0 0 1 1 0 2 0 0 0 4 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 2 0 0 0 0 2 1 1 0 3 0 0 0 0 0 1 1 0 1 1 0 2 1 1 1 1 1 1 0 0 2 0 1 2 0 2 0 0 0 0 1 0 1 0 0 0 2 1 4 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 2 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 2 1 0 0 0 0 0 1 0 2 0 0 0 0 2 0 0 0 1 1 0 0 0 0 0 0 0 2 2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 +2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 2 0 0 0 1 0 1 0 1 0 0 3 1 1 0 0 0 0 0 0 2 4 1 1 0 0 0 1 0 1 0 0 0 0 0 0 2 2 1 0 0 0 1 1 0 1 1 2 0 0 2 0 0 0 0 2 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 2 2 0 0 0 0 0 1 1 0 1 1 0 0 4 1 1 1 0 0 0 0 0 0 2 3 0 1 1 1 0 1 2 1 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 2 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 2 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 1 +0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 2 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 2 0 1 0 0 0 0 0 0 0 2 0 0 0 2 0 0 2 1 3 0 0 0 0 3 1 0 0 3 3 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 2 0 0 2 0 2 2 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 0 0 2 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 +0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 0 3 0 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 2 0 0 2 0 1 1 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 2 1 1 1 0 0 0 0 0 0 0 0 1 0 2 2 1 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 +0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 2 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 2 0 0 0 1 1 1 0 1 2 1 2 0 0 2 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 3 1 0 2 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 1 2 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 2 0 0 0 2 0 0 0 1 0 1 1 1 2 0 0 0 1 0 0 0 1 0 1 2 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 3 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 +0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 2 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 1 0 0 0 0 0 1 2 0 0 1 0 1 1 1 0 1 0 0 0 0 2 2 0 0 0 0 1 0 1 2 0 1 0 1 1 0 0 1 1 0 0 0 0 1 0 1 2 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 2 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 2 0 1 1 0 2 1 0 0 0 3 0 0 0 0 2 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 2 0 1 0 2 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 2 0 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 1 2 0 0 +0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 1 2 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 2 0 0 0 0 1 2 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 2 0 2 0 1 0 4 1 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 2 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 2 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 +1 1 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 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 2 0 1 0 0 2 0 0 1 0 1 0 0 0 0 0 0 2 0 0 1 1 1 0 2 0 1 1 0 1 1 0 0 1 2 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 1 1 0 0 3 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 2 1 0 1 1 0 0 0 0 0 0 2 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 0 1 1 3 0 0 0 0 0 2 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 2 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 3 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 2 0 0 0 1 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 1 0 1 0 1 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/mccode.sim b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/mccode.sim new file mode 100644 index 0000000000..bcfe9a7c19 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/mccode.sim @@ -0,0 +1,270 @@ +mcstas simulation description file for ODIN_MCPL_baseline. +Date: Sun Mar 1 17:38:52 2026 +Program: 3.99.99, git + +begin instrument: ODIN_MCPL_baseline + File: Filterscan/1/mccode + Source: ODIN_MCPL_TOF_train4.instr + Parameters: l_min(double) l_max(double) n_pulses(int) wfm_delta(double) bp_frequency(double) WFM1_phase_offset(double) jitter_wfmc_1(double) WFM2_phase_offset(double) jitter_wfmc_2(double) fo1_phase_offset(double) jitter_fo_chopper_1(double) bp1_phase_offset(double) jitter_bp1(double) fo2_phase_offset(double) jitter_fo_chopper_2(double) bp2_phase_offset(double) jitter_bp2(double) t0_phase_offset(double) jit_t0_sec(double) fo3_phase_offset(double) jitter_fo_chopper_3(double) fo4_phase_offset(double) jitter_fo_chopper_4(double) fo5_phase_offset(double) jitter_fo_chopper_5(double) choppers(int) target_tsplit(double) filter(int) repeat(int) v_smear(double) pos_smear(double) dir_smear(double) + Trace_enabled: yes + Default_main: yes + Embedded_runtime: yes +end instrument + +begin simulation: Filterscan/1 + Format: McCode with text headers + URL: http://www.mccode.org + Creator: 3.99.99, git + Instrument: ODIN_MCPL_TOF_train4.instr + Ncount: 1000000 + Trace: no + Gravitation: no + TOF_TRAIN: 100 + Seed: 1000 + Directory: Filterscan/1 + Nodes: 12 + Param: l_min=1 + Param: l_max=11 + Param: n_pulses=1 + Param: wfm_delta=0.3 + Param: bp_frequency=7 + Param: WFM1_phase_offset=0 + Param: jitter_wfmc_1=0 + Param: WFM2_phase_offset=0 + Param: jitter_wfmc_2=0 + Param: fo1_phase_offset=0 + Param: jitter_fo_chopper_1=0 + Param: bp1_phase_offset=0 + Param: jitter_bp1=0 + Param: fo2_phase_offset=0 + Param: jitter_fo_chopper_2=0 + Param: bp2_phase_offset=0 + Param: jitter_bp2=0 + Param: t0_phase_offset=0 + Param: jit_t0_sec=0 + Param: fo3_phase_offset=0 + Param: jitter_fo_chopper_3=0 + Param: fo4_phase_offset=0 + Param: jitter_fo_chopper_4=0 + Param: fo5_phase_offset=0 + Param: jitter_fo_chopper_5=0 + Param: choppers=2 + Param: target_tsplit=3 + Param: filter=1 + Param: repeat=1 + Param: v_smear=0.1 + Param: pos_smear=0.01 + Param: dir_smear=0.01 +end simulation + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: Sphere1 + position: 0 0 0 + title: 4PI PSD monitor + Ncount: 10622832 + filename: nonrotated.dat + statistics: X0=-89.7425; dX=1.98692; Y0=54.6204; dY=1.18399; + signal: Min=0; Max=4.98015e+12; Mean=1.33741e+09; + values: 1.0833e+13 3.27214e+11 1.06228e+07 + xvar: Lo + yvar: La + xlabel: Longitude [deg] + ylabel: Latitude [deg] + zvar: I + zlabel: Signal per bin + xylimits: -180 180 -90 90 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: Sphere0 + position: 0.0585 0 -0.0925 + title: 4PI PSD monitor + Ncount: 10622832 + filename: rotated.dat + statistics: X0=0.0171366; dX=1.99993; Y0=1.08058; dY=1.24824; + signal: Min=0; Max=1.66765e+12; Mean=6.75406e+08; + values: 5.47079e+12 2.38132e+11 5.3096e+06 + xvar: Lo + yvar: La + xlabel: Longitude [deg] + ylabel: Latitude [deg] + zvar: I + zlabel: Signal per bin + xylimits: -180 180 -90 90 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: PSD_cut + position: 1.69078 0 -1.24822 + title: PSD monitor + Ncount: 10622832 + filename: PSD_cut.dat + statistics: X0=-0.000143389; dX=0.287533; Y0=0.00811166; dY=0.288024; + signal: Min=1.00158e-20; Max=7.17965e+08; Mean=1.05054e+07; + values: 8.50941e+10 2.19134e+09 89282 + xvar: X + yvar: Y + xlabel: X position [cm] + ylabel: Y position [cm] + zvar: I + zlabel: Signal per bin + xylimits: -0.5 0.5 -0.5 0.5 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_2d(90, 90) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: PSD_Backtrace + position: 0.123791 0 -0.138729 + title: PSD monitor + Ncount: 10622832 + filename: PSD_Backtrace.dat + statistics: X0=-1.20859; dX=7.30188; Y0=-0.00240169; dY=1.77858; + signal: Min=0; Max=7.79257e+11; Mean=4.54738e+10; + values: 3.68338e+14 1.96596e+12 1.06228e+07 + xvar: X + yvar: Y + xlabel: X position [cm] + ylabel: Y position [cm] + zvar: I + zlabel: Signal per bin + xylimits: -15 15 -15 15 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_2d(300, 300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: sample_PSD + position: 49.4198 0 -35.0741 + title: Intensity Position Position Monitor (Square) per bin + Ncount: 10622832 + filename: image.dat + statistics: X0=-0.0016582; dX=0.0801978; Y0=-0.00380121; dY=0.0762393; + signal: Min=0; Max=3.5785e+07; Mean=28063.6; + values: 2.52572e+09 9.28181e+07 43878 + xvar: x + yvar: y + xlabel: x [m] + ylabel: y [m] + zvar: I + zlabel: Signal per bin + xylimits: -0.15 0.15 -0.15 0.15 + variables: I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: profile_x + position: 49.4198 0 -35.0741 + title: x [m] monitor + Ncount: 10622832 + filename: profile_x.dat + statistics: X0=-0.0016582; dX=0.0801978; + signal: Min=478399; Max=4.61465e+07; Mean=8.41908e+06; + values: 2.52572e+09 9.28181e+07 43878 + xvar: x + yvar: (I,I_err) + xlabel: x [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: x I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: profile_y + position: 49.4198 0 -35.0741 + title: y [m] monitor + Ncount: 10622832 + filename: profile_y.dat + statistics: X0=-0.00380121; dX=0.0762393; + signal: Min=601930; Max=4.20509e+07; Mean=8.41908e+06; + values: 2.52572e+09 9.28181e+07 43878 + xvar: y + yvar: (I,I_err) + xlabel: y [m] + ylabel: Intensity [n/s/bin] + xlimits: -0.15 0.15 + variables: y I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: wavelength + position: 49.4198 0 -35.0741 + title: Wavelength [Angs] monitor + Ncount: 10622832 + filename: wavelength.dat + statistics: X0=3.55117; dX=1.41996; + signal: Min=0; Max=1.01537e+08; Mean=8.41908e+06; + values: 2.52572e+09 9.28181e+07 43878 + xvar: L + yvar: (I,I_err) + xlabel: Wavelength [Angs] + ylabel: Intensity [n/s/bin] + xlimits: 0.5 10 + variables: L I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_1d(300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: tof + position: 49.4198 0 -35.0741 + title: TOF [s] monitor + Ncount: 10622832 + filename: time.dat + statistics: X0=0.0542468; dX=0.0216991; + signal: Min=0; Max=1.06449e+08; Mean=8.41908e+06; + values: 2.52572e+09 9.28181e+07 43878 + xvar: t + yvar: (I,I_err) + xlabel: TOF [s] + ylabel: Intensity [n/s/bin] + xlimits: 0 0.15 + variables: t I I_err N +end data + +begin data + Date: Sun Mar 1 17:38:56 2026 (1772383136) + type: array_2d(300, 300) + Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) + component: wavelength_tof + position: 49.4198 0 -35.0741 + title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin + Ncount: 10622832 + filename: wavelength_tof.dat + statistics: X0=0.0542468; dX=0.0216991; Y0=3.55117; dY=1.41996; + signal: Min=0; Max=9.04634e+07; Mean=28063.6; + values: 2.52572e+09 9.28181e+07 43878 + xvar: TO + yvar: Wa + xlabel: TOF [s] + ylabel: Wavelength [Angs] + zvar: I + zlabel: Signal per bin + xylimits: 0 0.15 0.5 10 + variables: I I_err N +end data diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/nonrotated.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/nonrotated.dat new file mode 100644 index 0000000000..7286236b8c --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/nonrotated.dat @@ -0,0 +1,335 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: Sphere1 +# position: 0 0 0 +# title: 4PI PSD monitor +# Ncount: 10622832 +# filename: nonrotated.dat +# statistics: X0=-89.7425; dX=1.98692; Y0=54.6204; dY=1.18399; +# signal: Min=0; Max=4.98015e+12; Mean=1.33741e+09; +# values: 1.0833e+13 3.27214e+11 1.06228e+07 +# xvar: Lo +# yvar: La +# xlabel: Longitude [deg] +# ylabel: Latitude [deg] +# zvar: I +# zlabel: Signal per bin +# xylimits: -180 180 -90 90 +# variables: I I_err N +# Data [Sphere1/nonrotated.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.269401142e+11 2.345872644e+12 5.48787682e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.732928254e+11 4.98015357e+12 9.926760898e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.099563871e+11 7.891349604e+11 1.661825702e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [Sphere1/nonrotated.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.057042213e+11 2.548106316e+11 1.74762766e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6357012699 1.642255923e+10 7353572046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2330314997 6806718972 3099005499 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [Sphere1/nonrotated.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 137061 1672274 197836 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 760050 5381119 1175707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 140838 943826 214121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/profile_x.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/profile_x.dat new file mode 100644 index 0000000000..6cffe9f591 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/profile_x.dat @@ -0,0 +1,360 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: profile_x +# position: 49.4198 0 -35.0741 +# title: x [m] monitor +# Ncount: 10622832 +# filename: profile_x.dat +# statistics: X0=-0.0016582; dX=0.0801978; +# signal: Min=478399; Max=4.61465e+07; Mean=8.41908e+06; +# values: 2.52572e+09 9.28181e+07 43878 +# xvar: x +# yvar: (I,I_err) +# xlabel: x [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: x I I_err N +-0.1495 3846649.632 2587869.671 90 +-0.1485 5593894.015 3111106.387 97 +-0.1475 4218146.566 1458127.406 91 +-0.1465 4561987.978 2986496.171 96 +-0.1455 11259880.66 7665708.828 95 +-0.1445 7204665.588 3442003.34 103 +-0.1435 4375818.481 2574519.386 83 +-0.1425 5485288.335 3713174.573 106 +-0.1415 10857680.5 6191435.166 101 +-0.1405 4603024.786 2300310.617 95 +-0.1395 4346612.825 1845159.691 105 +-0.1385 478398.7792 282882.9786 82 +-0.1375 3444327.573 1725901.41 94 +-0.1365 2296822.763 999107.4151 99 +-0.1355 12399219.52 4915373.889 112 +-0.1345 12350334.89 5777096.412 86 +-0.1335 5716227.321 2742046.878 97 +-0.1325 6064832.816 2483748.835 96 +-0.1315 3568801.807 1302658.724 100 +-0.1305 9857526.063 5208903.381 106 +-0.1295 15225545.76 6559418.144 101 +-0.1285 9404536.484 4038702.645 97 +-0.1275 6355931.322 3624255.996 92 +-0.1265 9126367.575 4534568.782 114 +-0.1255 1258462.759 704847.8953 95 +-0.1245 16617706.68 10774101.4 116 +-0.1235 8418751.431 5341018.458 120 +-0.1225 2789096.051 1836664.173 116 +-0.1215 14339740.41 5752231.845 116 +-0.1205 4207278.448 2416718.301 93 +-0.1195 5786064.593 2452110.163 106 +-0.1185 4627212.447 2579357.292 119 +-0.1175 2830104.672 1146191.05 119 +-0.1165 2661906.806 1144468.573 111 +-0.1155 1349158.951 542486.8697 109 +-0.1145 11304450.07 5223007.921 92 +-0.1135 5082641.995 2874089.159 98 +-0.1125 7023142.503 4083128.908 115 +-0.1115 9454134.167 3273241.929 112 +-0.1105 3758573.367 2206895.185 112 +-0.1095 7376993.092 3617959.136 124 +-0.1085 6668703.772 4386811.12 109 +-0.1075 6195852.188 2331582.583 108 +-0.1065 6771871.036 4383044.529 129 +-0.1055 7367170.912 3835912.721 120 +-0.1045 7010835.308 2811829.411 127 +-0.1035 1796761.976 805672.7548 127 +-0.1025 5399163.727 2486175.326 131 +-0.1015 7992763.81 3887361.746 114 +-0.1005 8119572.183 4934925.174 124 +-0.0995 3780734.69 2598009.23 95 +-0.0985 9554836.966 3216746.153 133 +-0.0975 12963525.51 6243269.21 112 +-0.0965 2752033.38 1468964.012 119 +-0.0955 2955925.394 1308644.474 104 +-0.0945 13560392.97 9947072.771 117 +-0.0935 4536082.006 3665936.254 138 +-0.0925 8490301.54 4862795.352 138 +-0.0915 23076063.3 7798235.053 132 +-0.0905 9329428.937 3949757.295 122 +-0.0895 5394159.284 2973552.42 129 +-0.0885 7629835.288 3919103.448 136 +-0.0875 7033085.349 2824226.425 146 +-0.0865 7672057.68 5028664.665 144 +-0.0855 14833021.85 6692170.581 142 +-0.0845 2621345.973 1174025.278 108 +-0.0835 8568678.019 4044458.166 130 +-0.0825 4566711.484 2666204.472 133 +-0.0815 7713846.126 3085340.082 140 +-0.0805 3077570.377 1641678.912 147 +-0.0795 7545110.351 3085963.642 129 +-0.0785 9182569.818 3003870.175 145 +-0.0775 13676555.39 5751847.768 118 +-0.0765 7261730.645 3095193.111 154 +-0.0755 6331042.043 2858664.856 159 +-0.0745 10156330.54 4618573.618 175 +-0.0735 5175785.446 3610403.057 149 +-0.0725 8503619.491 4792178.946 163 +-0.0715 9839207.273 4056756.68 159 +-0.0705 3752214.74 1220191.236 165 +-0.0695 7627694.741 2846473.535 158 +-0.0685 12546131.1 5148648.333 150 +-0.0675 4330901.021 2326761.613 152 +-0.0665 23719215.07 8374231.059 157 +-0.0655 14985033.81 5762517.809 196 +-0.0645 6354382.424 3007082.505 185 +-0.0635 43240960.15 35926005.37 206 +-0.0625 15553606.25 7149831.083 158 +-0.0615 16638679.87 6449062.404 177 +-0.0605 12516256.24 4521909.147 186 +-0.0595 4477984.644 1584676.987 180 +-0.0585 6143696.572 2798810.019 221 +-0.0575 10971003.3 5232426.725 194 +-0.0565 11825567.45 4315166.534 173 +-0.0555 9040851.84 4388181.105 189 +-0.0545 13595061.5 4315132.698 203 +-0.0535 8961690.941 3480597.588 194 +-0.0525 5928645.231 3418291.522 207 +-0.0515 5596934.943 2961990.081 174 +-0.0505 5958247.853 2781306.143 182 +-0.0495 8451924.079 3151730.806 188 +-0.0485 13635149.53 5383258.564 193 +-0.0475 4885131.872 2292719.674 169 +-0.0465 12159205.88 4982699.292 201 +-0.0455 13386054.28 4816468.305 175 +-0.0445 10201051.01 3470055.594 198 +-0.0435 15032116.39 5811567.588 184 +-0.0425 4159246.642 2019415.589 175 +-0.0415 4255324.382 2043473.216 181 +-0.0405 5311949.044 1869515.319 206 +-0.0395 14547524.91 5131254.454 217 +-0.0385 7613215.888 2428929.258 198 +-0.0375 8737157.05 3698541.788 209 +-0.0365 8709837.889 4270121.625 163 +-0.0355 5856459.779 2258578.179 199 +-0.0345 11064415.77 3721939.177 208 +-0.0335 9994633.53 4894867.881 175 +-0.0325 17110964.84 9099691.346 159 +-0.0315 12020956.3 4735999.523 209 +-0.0305 4985182.364 2122028.835 199 +-0.0295 7245138.596 2753526.902 189 +-0.0285 2719821.788 1480975.168 180 +-0.0275 9894934.331 4480350.625 184 +-0.0265 7448143.393 2819177.073 196 +-0.0255 7975004.58 2607653.549 179 +-0.0245 8590472.099 3175217.626 191 +-0.0235 8972031.577 3508222.594 210 +-0.0225 4070648.07 1458532.657 196 +-0.0215 13194408.67 5577250.276 211 +-0.0205 39528850.92 30564052.29 215 +-0.0195 6586748.241 1963334.92 181 +-0.0185 8402757.931 3575466.354 196 +-0.0175 5983141.965 2641259.23 190 +-0.0165 9419037.538 3224342.19 196 +-0.0155 8698366.971 3042479.932 212 +-0.0145 2522315.207 1164423.811 219 +-0.0135 3485754.756 1350740.033 220 +-0.0125 3270715.939 1443455.079 210 +-0.0115 6863560.521 2687287.303 185 +-0.0105 12426450.82 6136724.471 208 +-0.0095 14888981.26 6066112.126 183 +-0.0085 8197895.329 2925999.959 177 +-0.0075 13682518.04 5586187.443 205 +-0.0065 3796366.225 2020315.614 194 +-0.0055 7716489.51 3741809.448 198 +-0.0045 11683112.65 4014150.658 205 +-0.0035 13823172.69 5034277.638 217 +-0.0025 7136296.515 3825721.146 184 +-0.0015 10217689.29 4720206.323 182 +-0.0005 3449687.946 1399802.687 200 +0.0005 19324242.96 9713414.299 212 +0.0015 10661239.82 4419890.519 213 +0.0025 17467508.52 8185776.563 200 +0.0035 13306448.55 4794440.103 219 +0.0045 6074304.999 2517149.885 210 +0.0055 11514837.84 4816819.031 188 +0.0065 8522494.234 3470641.433 216 +0.0075 14002667.38 9092014.869 196 +0.0085 24266723.37 9371717.33 209 +0.0095 3585464.914 1392159.03 202 +0.0105 21056639.35 9678227.205 190 +0.0115 6753610.554 3257402.039 203 +0.0125 15286958.63 5965165.662 187 +0.0135 12412501.03 5522006.771 208 +0.0145 12630251.15 6786390.153 182 +0.0155 6049552.418 2553477.75 168 +0.0165 10200751.42 4201604.516 194 +0.0175 5832496.795 3034314.627 172 +0.0185 4753041.699 2459719.148 195 +0.0195 18637385.49 8595515.885 195 +0.0205 7332429.377 2292058.519 195 +0.0215 4779231.679 1433596.917 188 +0.0225 7254306.189 3504743.885 206 +0.0235 5898735.028 2030210.595 189 +0.0245 12784980.49 4854240.512 199 +0.0255 13627225.92 5007764.171 185 +0.0265 7425882.269 2471448.57 203 +0.0275 5121693.781 1833894.782 188 +0.0285 9139453.798 4212038.535 190 +0.0295 4087237.005 1639412.355 183 +0.0305 9980523.364 4320746.673 198 +0.0315 8085715.803 3482867.114 208 +0.0325 13226062.71 4660383.249 205 +0.0335 3514909.56 1564512.79 170 +0.0345 11395878.53 4819698.989 183 +0.0355 7444161.71 3400161.687 191 +0.0365 8821886.988 4530342.712 193 +0.0375 6501859.342 2683958.988 188 +0.0385 6455829.123 3221228.202 168 +0.0395 8972332.321 4006513.877 187 +0.0405 13316494.27 5800761.3 158 +0.0415 14069197.68 6491509.841 182 +0.0425 3388252.658 1661071.066 166 +0.0435 7609368.798 3374076.492 194 +0.0445 3409589.586 2197487.223 192 +0.0455 10440797.48 3697854.211 175 +0.0465 8266322.388 3573326.414 168 +0.0475 8658080.838 6148093.124 164 +0.0485 5464072.888 1920949.624 151 +0.0495 6567092.023 2383737.808 160 +0.0505 15379171.42 5748565.763 147 +0.0515 5551022.496 1952208.186 166 +0.0525 10166738.2 3665980.652 189 +0.0535 19618207.52 7459920.163 172 +0.0545 8416969.178 2962965.294 156 +0.0555 13787211.35 5969736.947 180 +0.0565 6300220.464 3293885.884 164 +0.0575 7436966.343 3037973.315 164 +0.0585 9764615.517 4587996.746 169 +0.0595 12058382.12 4685629.477 185 +0.0605 10474488.04 4741255.695 156 +0.0615 9532780.736 3679271.679 152 +0.0625 11834673.74 4998299.744 145 +0.0635 9740043.285 4605901.471 166 +0.0645 11882670.39 5052460.032 162 +0.0655 14537022.49 6955131.667 169 +0.0665 5934278.143 2465562.006 155 +0.0675 10557428.06 5195115.853 132 +0.0685 12188311.82 5239039.747 136 +0.0695 8137628.237 5510020.433 142 +0.0705 2132959.639 941675.4778 157 +0.0715 4940239.653 2048419.879 119 +0.0725 7738990.329 3536341.767 143 +0.0735 8988653.147 3939207.841 146 +0.0745 867129.6245 502554.9088 132 +0.0755 5137640.676 3023985.279 125 +0.0765 7230412.897 2815206.097 136 +0.0775 1592636.229 746646.2445 126 +0.0785 9934662.794 4325774.143 121 +0.0795 8599308.895 4684414.724 121 +0.0805 9509634.33 4367983.856 115 +0.0815 7080231.383 4672280.342 117 +0.0825 2661584.776 1325254.805 120 +0.0835 13441639.83 5814760.29 124 +0.0845 6051160.737 2751756.56 117 +0.0855 7614900.106 3130007.159 111 +0.0865 4191593.946 2672207.156 104 +0.0875 6331383.742 2484864.055 117 +0.0885 6692931.792 3039397.663 102 +0.0895 6488231.828 2705473.002 109 +0.0905 4444175.073 1937215.621 107 +0.0915 7256944.849 2859651.287 114 +0.0925 5610110.908 2811834.37 118 +0.0935 7146916.619 3985169.692 101 +0.0945 15214780.67 5668328.58 123 +0.0955 8556775.72 6473865.368 111 +0.0965 3031951.424 1290174.279 108 +0.0975 4951125.706 3331274.531 104 +0.0985 13764645.22 8080624.155 119 +0.0995 10521304.93 4347541.756 123 +0.1005 3324366.076 1295110.521 101 +0.1015 5742030.826 2658214.408 126 +0.1025 7687811.295 3609716.361 100 +0.1035 13603750.1 9199032.186 101 +0.1045 1579901.424 923389.0001 98 +0.1055 11253481.7 5871684.507 121 +0.1065 5226717.419 2934301.887 103 +0.1075 3395328.442 1460260.843 118 +0.1085 8629778.558 2778767.647 94 +0.1095 12573552.55 7094568.995 104 +0.1105 5590521.097 2559391.416 119 +0.1115 4314966.256 2292325.484 102 +0.1125 8690859.187 5903339.19 113 +0.1135 2734490.534 1267805.471 91 +0.1145 4660910.032 2078105.754 114 +0.1155 3102313.498 2605000.715 93 +0.1165 5469075.162 3073618.042 90 +0.1175 46146524.57 33710887.47 102 +0.1185 8454778.298 4163916.481 97 +0.1195 13995122.21 6423854.282 113 +0.1205 6235242.127 4088155.698 93 +0.1215 2913485.029 1506263.845 81 +0.1225 3734528.269 1745365.636 110 +0.1235 3315150.34 1699875.474 89 +0.1245 3129533.65 1852401.32 87 +0.1255 3583703.783 2067527.446 99 +0.1265 5316408.992 3032446.346 100 +0.1275 8821162.748 4329642.551 83 +0.1285 8621102.866 3134099.476 108 +0.1295 7454382.559 6134817.64 91 +0.1305 3768253.572 2510189.705 85 +0.1315 5513959.518 2534915.291 84 +0.1325 8606982.507 4405290.442 86 +0.1335 13617333.66 5669737.933 96 +0.1345 4738402.354 2462367.362 88 +0.1355 9033865.734 3885286.126 97 +0.1365 3290608.937 1885662.393 103 +0.1375 2411943.706 1149647.203 92 +0.1385 3433488.313 1561831.155 86 +0.1395 13584535.38 11241833.72 74 +0.1405 1677511.209 536580.5426 95 +0.1415 1129228.479 410906.4713 95 +0.1425 2250841.395 1000836.52 111 +0.1435 1889435.445 1222341.57 96 +0.1445 3794743.263 1626676.928 89 +0.1455 6043307.126 3057997.961 82 +0.1465 16482166.43 10444042.5 101 +0.1475 11273698.6 5079011.019 92 +0.1485 2118894.48 1405528.425 83 +0.1495 955154.3388 434466.1719 77 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/profile_y.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/profile_y.dat new file mode 100644 index 0000000000..339550a207 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/profile_y.dat @@ -0,0 +1,360 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: profile_y +# position: 49.4198 0 -35.0741 +# title: y [m] monitor +# Ncount: 10622832 +# filename: profile_y.dat +# statistics: X0=-0.00380121; dX=0.0762393; +# signal: Min=601930; Max=4.20509e+07; Mean=8.41908e+06; +# values: 2.52572e+09 9.28181e+07 43878 +# xvar: y +# yvar: (I,I_err) +# xlabel: y [m] +# ylabel: Intensity [n/s/bin] +# xlimits: -0.15 0.15 +# variables: y I I_err N +-0.1495 1004536.032 524509.2952 120 +-0.1485 1033305.209 769067.5642 111 +-0.1475 7401310.922 5533648.054 109 +-0.1465 5676832.101 2469833.682 114 +-0.1455 1411604.34 920157.5994 117 +-0.1445 4683623.099 2070919.364 96 +-0.1435 3596341.211 2229926.086 131 +-0.1425 13687439.77 9069133.127 121 +-0.1415 742370.4809 389287.6328 99 +-0.1405 6864179.575 3103596.951 130 +-0.1395 4177667.487 2869365.983 102 +-0.1385 845094.361 505995.5554 123 +-0.1375 5854305.772 2688221.714 119 +-0.1365 601930.2965 385897.1277 110 +-0.1355 5208584.71 3521629.316 105 +-0.1345 2774380.016 1893771.5 125 +-0.1335 3328986.982 1960973.415 125 +-0.1325 3059928.276 2034505.638 105 +-0.1315 12779670.36 5756255.239 117 +-0.1305 12273935.01 5816619.599 118 +-0.1295 5921308.299 3970312.315 112 +-0.1285 4783355.532 2271401.273 117 +-0.1275 2516832.196 1134925.137 112 +-0.1265 16460817.11 6428908.451 121 +-0.1255 8242281.405 3364397.67 117 +-0.1245 1163934.449 615699.1876 119 +-0.1235 3265992.798 1244017.75 107 +-0.1225 5011971.008 2110259.755 132 +-0.1215 3578124.608 2603471.231 122 +-0.1205 2343814.174 1483389.266 110 +-0.1195 3642974.982 2050464.193 137 +-0.1185 1807563.516 1031099.98 115 +-0.1175 6257474.466 3630095.644 127 +-0.1165 4926946.36 2595298.766 129 +-0.1155 10784305.89 4895191.229 134 +-0.1145 23151419.95 11143000.54 123 +-0.1135 2668422.942 2215625.061 126 +-0.1125 1049477.495 488478.8955 128 +-0.1115 9904137.761 5579582.856 133 +-0.1105 4784379.017 2919837.734 137 +-0.1095 9793841.27 3611646.804 130 +-0.1085 6605047.268 3141816.575 135 +-0.1075 3598783.903 1912092.423 135 +-0.1065 4293834.768 2048142.613 129 +-0.1055 6385818.276 3368203.853 130 +-0.1045 8651189.931 4239915.908 131 +-0.1035 869395.0931 551699.3364 134 +-0.1025 4819720.026 2489558.766 140 +-0.1015 8628349.865 4146042.628 144 +-0.1005 8838251.085 3448066.088 138 +-0.0995 11181004.21 5235355.256 158 +-0.0985 2409900.959 1145870.884 125 +-0.0975 14675380.89 4641388.893 148 +-0.0965 8036673.975 3480194.072 137 +-0.0955 4293786.88 2008855.751 173 +-0.0945 14131420.86 5499839.423 135 +-0.0935 4591811.092 1827817.686 142 +-0.0925 9687997.433 3378540.191 157 +-0.0915 6409583.838 2904363.834 144 +-0.0905 38100497.26 30603388.03 141 +-0.0895 6455849.893 2948376.636 132 +-0.0885 7421700.046 4668120.016 137 +-0.0875 8655766.618 4576239.072 148 +-0.0865 12054090.84 4617468.805 148 +-0.0855 2119088.064 882519.824 155 +-0.0845 5024421.429 2648363.618 129 +-0.0835 9223428.629 3927906.529 174 +-0.0825 12034536.58 4119590.384 160 +-0.0815 5048768.525 2174892.211 140 +-0.0805 12185939.86 6469958.042 154 +-0.0795 17559272.84 8217377.108 138 +-0.0785 12162093.91 7163967.967 153 +-0.0775 9781397.042 4933025.867 127 +-0.0765 10066122.75 3321085.484 155 +-0.0755 42050920.29 36038737.45 145 +-0.0745 11120729.12 4494093.83 146 +-0.0735 7056198.152 2678598.644 176 +-0.0725 3517035.169 1974944.968 142 +-0.0715 12540544.44 4857445.539 144 +-0.0705 7367983.156 3987808.555 167 +-0.0695 4555719.165 1748423.1 156 +-0.0685 10254973.84 5674582.92 158 +-0.0675 4172176.568 2179565.135 130 +-0.0665 5123236.901 2494837.365 146 +-0.0655 3464783.798 1267297.551 135 +-0.0645 9066433.189 5271961.609 136 +-0.0635 6106593.884 3460467.894 146 +-0.0625 14330926.76 6654722.978 129 +-0.0615 11298791.43 5171051.837 149 +-0.0605 3720493.055 1403956.312 147 +-0.0595 6193889.556 2327753.278 160 +-0.0585 10185399.76 4738174.198 168 +-0.0575 12897898.09 6101952.583 154 +-0.0565 18274209.73 6080336.426 180 +-0.0555 4868375.996 1692224.254 167 +-0.0545 13523146.25 5845185.854 192 +-0.0535 8174103.543 3562963.488 154 +-0.0525 10392160.09 3740532.201 150 +-0.0515 5790729.945 2572745.777 159 +-0.0505 12828979.55 4804231.492 157 +-0.0495 13639708.68 4806877.857 166 +-0.0485 10511246.78 4103532.514 158 +-0.0475 10174095.56 5097773.688 161 +-0.0465 10814162.3 4183961.846 171 +-0.0455 12980884.62 4494264.273 168 +-0.0445 3399941.013 1669942.137 166 +-0.0435 8520062.69 3006172.069 131 +-0.0425 9141236.528 2888455.176 154 +-0.0415 6050086.735 4245792.332 146 +-0.0405 38606512.03 33078977.92 132 +-0.0395 6110005.831 3185751.209 174 +-0.0385 7793761.538 3378891.005 152 +-0.0375 11141224.77 4534485.951 157 +-0.0365 20685507.86 7974880.394 167 +-0.0355 15642300.4 7586820.106 156 +-0.0345 1051774.823 504404.8873 172 +-0.0335 15548834.33 7156264.325 170 +-0.0325 5628976.183 2619622.224 158 +-0.0315 8388290.222 4320679.724 158 +-0.0305 9505404.039 4073106.657 172 +-0.0295 5922308.537 2253433.103 183 +-0.0285 15356406.79 5742140.813 179 +-0.0275 3192079.97 1316906.864 164 +-0.0265 11260324.35 5388191.652 169 +-0.0255 5953933.013 2604046.927 166 +-0.0245 3085963.514 1897456.122 179 +-0.0235 6167012.757 2972084.167 173 +-0.0225 7363581.674 3454296.665 181 +-0.0215 9938321.775 3399621.323 142 +-0.0205 10942431.48 5109951.686 187 +-0.0195 34419059.18 12141137.33 161 +-0.0185 17862078.49 6328364.087 183 +-0.0175 23491659.35 12009685.4 181 +-0.0165 9645761.978 3521028.397 163 +-0.0155 14223602.54 5429231.288 189 +-0.0145 26628862.46 9546938.137 159 +-0.0135 10372385.6 3468594.328 158 +-0.0125 6099113.028 2775629.561 173 +-0.0115 2952847.638 1099122.549 167 +-0.0105 9048237.279 4394595.092 155 +-0.0095 8707609.777 3535849.859 183 +-0.0085 10124360.78 4320795.709 149 +-0.0075 8258995.656 4166395.906 175 +-0.0065 13874292.1 6699877.256 156 +-0.0055 13898983.06 4900976.594 160 +-0.0045 16044719.25 6407371.744 185 +-0.0035 9974180.832 4574036.482 176 +-0.0025 17475993.94 8443869.901 158 +-0.0015 13032071.17 4660966.397 175 +-0.0005 8678975.658 3818289.803 162 +0.0005 7226871.715 2801573.135 179 +0.0015 4490614.066 1635409.234 174 +0.0025 21096634.3 10033471.35 163 +0.0035 9369577.563 4519802.782 173 +0.0045 3368584.833 1145182.554 166 +0.0055 13760625.27 6121485.247 183 +0.0065 5398822.234 2264862.674 180 +0.0075 11522370.35 5150928.369 144 +0.0085 12717589.59 4374918.399 167 +0.0095 2459082.313 1266923.71 160 +0.0105 5798364.291 1863014.303 175 +0.0115 2965134.202 1199074.895 171 +0.0125 8629852.996 3568082.914 163 +0.0135 9734622.508 4510570.349 155 +0.0145 13390812.1 4697606.753 191 +0.0155 5723685.54 3168161.36 163 +0.0165 4375315.63 1410106.72 188 +0.0175 7028393.021 2644387.9 191 +0.0185 9905283.361 4217640.556 184 +0.0195 13758347.99 5660684.171 164 +0.0205 9589159.157 4224971.38 162 +0.0215 9617753.137 3398069.932 173 +0.0225 18254781.43 7264366.267 166 +0.0235 7510904.401 2921578.411 197 +0.0245 6406433.823 2548186.871 152 +0.0255 16559625.95 6232530.077 185 +0.0265 13333501.25 4911826.701 161 +0.0275 8153296.175 3863445.281 168 +0.0285 9289037.441 3696810.089 181 +0.0295 4977872.237 1774028.742 181 +0.0305 4359370.549 2244224.346 168 +0.0315 1927427.583 832979.7424 157 +0.0325 16805652.71 6411717.282 161 +0.0335 10630812.05 4995967.785 157 +0.0345 9311235.849 4245002.976 169 +0.0355 7022663.705 4088281.611 164 +0.0365 6792081.897 2540128.707 160 +0.0375 13688364.6 5403735.624 157 +0.0385 17416431.5 5694280.387 182 +0.0395 8645642.528 2728640.205 175 +0.0405 10217158.41 4280656.982 164 +0.0415 8400057.103 3284626.308 169 +0.0425 7465890.788 2474377.858 161 +0.0435 6563885.524 3385299.024 147 +0.0445 7498785.185 2871173.372 149 +0.0455 4806002.549 2892726.003 166 +0.0465 9624466.898 4507206.512 149 +0.0475 13528539.22 4759524.979 170 +0.0485 16808133.99 7638750.717 159 +0.0495 10389366.87 3962790.72 171 +0.0505 9376362.238 3893963.027 167 +0.0515 10432372.43 4559705.675 167 +0.0525 12026899.56 4888640.284 140 +0.0535 7011079.36 4583759.798 157 +0.0545 13542054.82 6682424.897 150 +0.0555 4975268.75 1883302.145 165 +0.0565 11024713.57 4386039.789 157 +0.0575 2845772.377 1454503.494 137 +0.0585 4676056.418 2267247.548 128 +0.0595 16391392.73 10093101.25 161 +0.0605 5071398.434 1516505.084 156 +0.0615 10689281.49 3387084.359 163 +0.0625 4796091.399 1619469.402 139 +0.0635 6592789.345 2752394.07 159 +0.0645 7050586.109 3089178.977 152 +0.0655 15384326.79 5796479.492 167 +0.0665 10732479 3686589.897 161 +0.0675 4624168.098 1762163.724 150 +0.0685 3562093.171 1836749.465 164 +0.0695 3298915.657 1564365.453 154 +0.0705 2706009.344 959955.5496 169 +0.0715 8899480.794 3742362.438 137 +0.0725 5498184.905 2202365.765 163 +0.0735 8949246.873 2674836.022 160 +0.0745 8918038.378 3975876.93 137 +0.0755 10818161.13 5604227.948 153 +0.0765 5882790.499 2835947.949 160 +0.0775 11907340.65 5166886.118 165 +0.0785 6244483.402 3466150.58 150 +0.0795 9695946.988 4236610.388 137 +0.0805 7756132.415 4131793.07 139 +0.0815 2878381.368 1075530.25 144 +0.0825 8574770.66 3618272.055 152 +0.0835 14862677.41 7598921.258 155 +0.0845 6251655.215 3029978.993 140 +0.0855 4360743.586 1884678.499 138 +0.0865 13577021.79 4506906.34 149 +0.0875 14203935.48 5739353.247 158 +0.0885 4632736.176 2407074.6 141 +0.0895 5739964.806 2499349.56 141 +0.0905 11201986.15 5618609.13 145 +0.0915 4953277.334 1863571.038 137 +0.0925 5047479.369 2780501.409 137 +0.0935 10619852.64 3871906.192 156 +0.0945 18273074.5 9123964.059 131 +0.0955 20332573.15 9739775.876 160 +0.0965 7021106.105 2914207.329 151 +0.0975 7715267.854 3985197.036 147 +0.0985 8299330.266 3859305.107 153 +0.0995 5261875.604 3419411.97 149 +0.1005 4792133.706 1916880.887 136 +0.1015 16209453.12 6169784.11 157 +0.1025 5872529.302 3212105.314 153 +0.1035 2047691.98 969408.6641 137 +0.1045 5667653.654 2394058.145 139 +0.1055 5474366.266 2599922.018 113 +0.1065 4533035.188 2903566.61 133 +0.1075 2263843.708 1320671.843 126 +0.1085 11945743.19 5621989.169 142 +0.1095 10604768.68 4948334.131 138 +0.1105 4371374.379 2216516.354 128 +0.1115 6597880.788 4690248.496 132 +0.1125 10588918.47 4829525.455 128 +0.1135 6075406.465 2532742.93 123 +0.1145 2561910.626 1015191.673 134 +0.1155 1922717.582 1369708.49 98 +0.1165 971420.8429 583154.2146 113 +0.1175 9538085.422 3661901.804 127 +0.1185 11866633.99 5410619.522 119 +0.1195 4030198.299 3219678.908 128 +0.1205 11863176.72 10193550.79 137 +0.1215 5041835.168 2992453.132 128 +0.1225 2911419.997 1423277.358 123 +0.1235 9110144.623 4680692.577 123 +0.1245 5518604.963 4593645.859 135 +0.1255 3294973.318 1847900.703 108 +0.1265 4203887.638 1571609.289 121 +0.1275 2906793.999 1707579.778 119 +0.1285 4324866.947 2588369.192 126 +0.1295 1403262.899 617550.5015 124 +0.1305 10728003.18 5586487.545 108 +0.1315 3841490.661 1828733.143 109 +0.1325 6458731.706 4413720.813 119 +0.1335 3544582.372 1530476.57 118 +0.1345 2167741.419 1128521.263 89 +0.1355 14261934.97 10035413.84 108 +0.1365 5114773.804 2870754.339 112 +0.1375 2006026.032 1105743.691 125 +0.1385 5440266.43 2692109.278 111 +0.1395 4918542.926 3566172.445 93 +0.1405 1856057.158 984170.3501 107 +0.1415 3273967.803 2644462.221 106 +0.1425 2654954.503 1207144.642 122 +0.1435 3217840.819 2090030.685 130 +0.1445 2230342.348 1237529.639 107 +0.1455 768463.0101 431425.9185 94 +0.1465 2781954.712 1585557.249 100 +0.1475 3413315.521 1996608.67 117 +0.1485 7302084.621 4370091.96 102 +0.1495 4451264.033 3384530.802 106 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/rotated.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/rotated.dat new file mode 100644 index 0000000000..9b710bb175 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/rotated.dat @@ -0,0 +1,335 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_2d(90, 90) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: Sphere0 +# position: 0.0585 0 -0.0925 +# title: 4PI PSD monitor +# Ncount: 10622832 +# filename: rotated.dat +# statistics: X0=0.0171366; dX=1.99993; Y0=1.08058; dY=1.24824; +# signal: Min=0; Max=1.66765e+12; Mean=6.75406e+08; +# values: 5.47079e+12 2.38132e+11 5.3096e+06 +# xvar: Lo +# yvar: La +# xlabel: Longitude [deg] +# ylabel: Latitude [deg] +# zvar: I +# zlabel: Signal per bin +# xylimits: -180 180 -90 90 +# variables: I I_err N +# Data [Sphere0/rotated.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.534682712e+11 5.062779996e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.663238659e+12 1.667646255e+12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.952492593e+11 5.849072721e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [Sphere0/rotated.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4898159328 1.356264765e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9612829359 1.614705453e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5651944453 1.099603179e+11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [Sphere0/rotated.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 506126 338927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1836728 1473368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 705386 449068 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/time.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/time.dat new file mode 100644 index 0000000000..00c26763db --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/time.dat @@ -0,0 +1,360 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: tof +# position: 49.4198 0 -35.0741 +# title: TOF [s] monitor +# Ncount: 10622832 +# filename: time.dat +# statistics: X0=0.0542468; dX=0.0216991; +# signal: Min=0; Max=1.06449e+08; Mean=8.41908e+06; +# values: 2.52572e+09 9.28181e+07 43878 +# xvar: t +# yvar: (I,I_err) +# xlabel: TOF [s] +# ylabel: Intensity [n/s/bin] +# xlimits: 0 0.15 +# variables: t I I_err N +0.00025 0 0 0 +0.00075 0 0 0 +0.00125 0 0 0 +0.00175 0 0 0 +0.00225 0 0 0 +0.00275 0 0 0 +0.00325 0 0 0 +0.00375 0 0 0 +0.00425 0 0 0 +0.00475 0 0 0 +0.00525 0 0 0 +0.00575 0 0 0 +0.00625 0 0 0 +0.00675 0 0 0 +0.00725 0 0 0 +0.00775 0 0 0 +0.00825 0 0 0 +0.00875 0 0 0 +0.00925 0 0 0 +0.00975 0 0 0 +0.01025 0 0 0 +0.01075 0 0 0 +0.01125 0 0 0 +0.01175 0 0 0 +0.01225 0 0 0 +0.01275 0 0 0 +0.01325 0 0 0 +0.01375 0 0 0 +0.01425 0 0 0 +0.01475 0 0 0 +0.01525 107924.9646 60079.17226 98 +0.01575 4749083.437 3146782.312 355 +0.01625 1771988.629 561578.535 497 +0.01675 5707216.757 1594295.993 786 +0.01725 5419657.907 1703369.839 931 +0.01775 8700953.312 2639887.677 1014 +0.01825 5501573.524 1269519.335 1125 +0.01875 9965759.661 2779053.974 1167 +0.01925 11816323.05 3788325.337 1202 +0.01975 11117704.85 2928138.244 1238 +0.02025 9612924.873 1857614.324 1302 +0.02075 16205734.43 4314211.881 1304 +0.02125 11432310.09 2830901.627 1323 +0.02175 13446024.9 3232187.142 1198 +0.02225 9250040.294 2434479.918 1190 +0.02275 9715926.878 2848648.995 1217 +0.02325 9824191.753 2602809.871 1125 +0.02375 9209386.721 2179997.503 1105 +0.02425 10555318.65 2171594.942 1152 +0.02475 13557913.87 3226231.238 1059 +0.02525 12555687.01 3223101.648 1040 +0.02575 8547018.164 2951944.735 1051 +0.02625 12441782.87 3373976.899 959 +0.02675 10340270.89 2537901.702 992 +0.02725 7508777.071 2323869.62 904 +0.02775 21200906.69 6091644.283 821 +0.02825 6111515.586 1527988.191 795 +0.02875 16234411.25 4109386.897 762 +0.02925 9303131.352 2853554.33 704 +0.02975 11598570.6 4085114.605 651 +0.03025 13030839.64 4832112.788 705 +0.03075 15550111.43 4530761.375 632 +0.03125 12467558.99 4618276.739 588 +0.03175 17327045.02 4236433.35 608 +0.03225 12604482.51 5317050.675 553 +0.03275 9001035.379 2682565.754 484 +0.03325 9061935.217 2860620.14 508 +0.03375 8734747.615 2880349.345 458 +0.03425 11040871.98 3958840.287 407 +0.03475 17890442.7 7421522.248 371 +0.03525 17190867.17 4644833.912 371 +0.03575 11272603.12 3894519.651 294 +0.03625 17883429.31 7695722.957 271 +0.03675 10077145.79 3216609.233 262 +0.03725 10796606.45 3398608.377 205 +0.03775 12422195.5 3785691.754 152 +0.03825 14940746.29 5937655.538 160 +0.03875 14120187.34 4355450.791 210 +0.03925 17156019.16 3988346.87 258 +0.03975 35216350.09 11890171.71 266 +0.04025 18501006.21 4279174.452 265 +0.04075 35678484.52 7305359.793 257 +0.04125 30348874.29 7008618.969 231 +0.04175 17984448.8 5075117.791 253 +0.04225 25527776.3 6398300.296 210 +0.04275 25603532.61 5280772.488 208 +0.04325 44337310.8 12243181.44 198 +0.04375 26558727.14 6712115.194 196 +0.04425 30002907.95 7218300.16 194 +0.04475 24144475.81 7302610.22 198 +0.04525 25695780.41 7726278.166 176 +0.04575 40547873.02 9869397.977 157 +0.04625 34216492.23 11490568.79 162 +0.04675 24101091.93 7088668.646 142 +0.04725 30893563.25 7473835.223 154 +0.04775 41781965.73 9979538.752 158 +0.04825 40544513.27 8835453.385 149 +0.04875 23777582.13 7192937.616 113 +0.04925 25684794.17 6862462.919 105 +0.04975 17210482.83 4834429.182 118 +0.05025 43310310.76 10578037.06 121 +0.05075 106448599.8 49937696.41 109 +0.05125 35745440 9744969.595 95 +0.05175 15362425.28 3900190.694 115 +0.05225 28346288.75 7195507.978 94 +0.05275 39368401.64 10728782.71 106 +0.05325 29349658.88 9299718.436 86 +0.05375 15403107.2 4686780.48 91 +0.05425 26684743.59 7719298.365 84 +0.05475 20673559.14 6331271.189 82 +0.05525 26565991.03 7432490.569 80 +0.05575 24193523.14 7172241.888 62 +0.05625 24295271.85 8025452.681 70 +0.05675 18149026.17 5855264.327 55 +0.05725 17894265.28 5481835.387 56 +0.05775 11514834.34 4406813.975 51 +0.05825 14949533.17 6241876.495 43 +0.05875 13480907.4 5179492.375 50 +0.05925 13882913.5 6817382.267 35 +0.05975 14502881.04 5902640.155 45 +0.06025 10476789.74 3519632.041 58 +0.06075 26721704.63 12397807.84 60 +0.06125 15104190.84 7552709.701 46 +0.06175 54959277.41 31287235.87 52 +0.06225 30044952.75 11195399.36 58 +0.06275 19121317.6 6027139.342 49 +0.06325 19444516.33 6515120.043 53 +0.06375 6230517.013 2325958.367 48 +0.06425 16352972.97 6382828.65 51 +0.06475 14925332.88 4924499.041 29 +0.06525 6385683.962 2363149.664 30 +0.06575 15313593.6 4883094.54 43 +0.06625 10407766.81 3897600.925 39 +0.06675 18679898.79 6103781.589 32 +0.06725 8612800.386 5014461.394 28 +0.06775 3803447.812 1741648.39 29 +0.06825 16839488.48 8765722.773 37 +0.06875 4482219.316 1806479.829 36 +0.06925 5912190.249 1789401.81 34 +0.06975 25923589.53 8302621.353 39 +0.07025 17510864.88 7602138.629 26 +0.07075 8046132.823 3480089.063 30 +0.07125 11589300.99 6831577.496 22 +0.07175 11853036.59 5159630.177 35 +0.07225 12397234.19 5535721.732 24 +0.07275 14144868.25 5459413.439 21 +0.07325 11445031.74 4975431.118 25 +0.07375 9456941.735 3649381.523 29 +0.07425 9859692.766 4715100.017 33 +0.07475 3605207.152 2642596.687 12 +0.07525 16742105.13 6657807.059 34 +0.07575 6117380.81 2812978.981 15 +0.07625 4513775.817 2936322.731 19 +0.07675 11723569.8 6883763.463 20 +0.07725 8542998.769 4267501.302 14 +0.07775 19301579.88 10323317.14 15 +0.07825 3070650.354 1180916.873 22 +0.07875 9186793.439 4280679.661 15 +0.07925 2271637.9 1614378.591 11 +0.07975 8173882.679 4564317.738 8 +0.08025 5353453.713 3095052.828 18 +0.08075 9438757.876 5252905.647 16 +0.08125 5864373.655 3180511.948 16 +0.08175 2040085.473 1552988.71 11 +0.08225 10966122.24 5575206.82 19 +0.08275 4347108.471 2221610.188 17 +0.08325 16607034.08 9301141.658 17 +0.08375 2976178.828 1781994.676 14 +0.08425 5633107.503 3021766.597 13 +0.08475 6957799.109 3932736.629 16 +0.08525 4977857.423 3536130.223 9 +0.08575 4145057.011 2324609.698 11 +0.08625 4136938.795 2673182.397 15 +0.08675 3135110.297 2022769.134 12 +0.08725 2501618.382 2038795.158 6 +0.08775 3227977.395 2454124.118 7 +0.08825 4926516.894 4889623.35 5 +0.08875 15698000.92 7491190.094 12 +0.08925 6876291.828 2633099.689 13 +0.08975 7192.005052 7740.941784 6 +0.09025 1112001.645 714358.047 9 +0.09075 3796423.579 2745651.976 11 +0.09125 851616.58 933103.2408 4 +0.09175 18147190.4 12019444.87 8 +0.09225 6103191.695 3188291.038 8 +0.09275 9617124.923 5293468.163 7 +0.09325 737119.7544 658968.5715 8 +0.09375 1865244.274 1765027.034 8 +0.09425 226631.2081 169452.3797 7 +0.09475 6511379.404 4186711.487 8 +0.09525 768500.4483 841840.5776 5 +0.09575 657182.2698 758848.7208 3 +0.09625 386769.2563 423018.7526 5 +0.09675 1008399.437 1164062.871 3 +0.09725 3133506.26 1819420.435 10 +0.09775 4.506194765e-24 4.506194765e-24 1 +0.09825 585656.968 353175.8408 8 +0.09875 1569661.057 1119389.523 8 +0.09925 1267.758492 942.1451371 6 +0.09975 1403007.086 931824.0133 6 +0.10025 3312552.778 2701179.72 7 +0.10075 23.67556605 25.93471375 5 +0.10125 923831.3055 687867.2965 5 +0.10175 4693032.935 4835840.866 5 +0.10225 5418743.937 4163712.817 4 +0.10275 375729.978 419858.2012 4 +0.10325 1739622.658 2007445.225 3 +0.10375 0 0 0 +0.10425 7472098.951 5358008.045 8 +0.10475 6169.148048 6897.313583 4 +0.10525 3801575.767 2909036.233 6 +0.10575 462575.9723 368208.0067 4 +0.10625 3937847.469 2636641.897 7 +0.10675 1919129.23 2340203.395 2 +0.10725 435182.367 502504.888 3 +0.10775 3481511.988 2201214.828 6 +0.10825 3630200.064 2734512.59 7 +0.10875 1526572.871 1183026.556 5 +0.10925 1068527.767 749023.8816 6 +0.10975 10112009.99 8174570.892 6 +0.11025 3.293855282 3.803416468 3 +0.11075 0.3885087935 0.3885087935 1 +0.11125 650190.1738 692979.5793 5 +0.11175 6355612.74 5075937.374 4 +0.11225 2808.601962 3439.820848 2 +0.11275 461023.1168 461023.1168 1 +0.11325 361566.8407 442827.1336 2 +0.11375 12120.06278 12788.83825 5 +0.11425 1691694.098 1952469.877 3 +0.11475 9.80495397e-09 9.80495397e-09 1 +0.11525 401185.3324 448534.2412 4 +0.11575 1833.907794 1965.452744 5 +0.11625 448072.0495 486012.7584 4 +0.11675 818302.4965 850802.7362 5 +0.11725 16572.92518 20297.60487 2 +0.11775 648103.6641 406192.1701 3 +0.11825 0 0 0 +0.11875 6280.512485 7692.025455 2 +0.11925 1941239.706 2126266.715 5 +0.11975 0 0 0 +0.12025 0 0 0 +0.12075 23520.19595 23222.67577 3 +0.12125 1.380173105 1.380173105 1 +0.12175 12710457.91 11196800.15 5 +0.12225 6663689.933 4536165.511 6 +0.12275 0 0 0 +0.12325 41980.17667 51412.01492 2 +0.12375 232825.3391 232825.3391 1 +0.12425 3172859.588 3663702.674 3 +0.12475 130307.716 130307.716 1 +0.12525 0.3087060127 0.3780861058 2 +0.12575 3.390873976e-25 3.390873976e-25 1 +0.12625 56496.34088 56496.34088 1 +0.12675 5617902.415 6195836.786 3 +0.12725 0 0 0 +0.12775 1903198.849 2197531.824 3 +0.12825 16364.45325 16364.45325 1 +0.12875 3229075.21 3445897.595 2 +0.12925 2737151.259 3352310.082 2 +0.12975 0 0 0 +0.13025 11.52218927 11.52218927 1 +0.13075 5539884.166 5803097.619 3 +0.13125 1886363.174 2177361.795 3 +0.13175 171790.9081 171790.9081 1 +0.13225 567441.2695 609669.1851 3 +0.13275 718408.0318 829544.5483 3 +0.13325 0 0 0 +0.13375 17255.01007 17255.01007 1 +0.13425 6.917457572e-06 6.917457572e-06 1 +0.13475 0 0 0 +0.13525 0 0 0 +0.13575 0 0 0 +0.13625 0 0 0 +0.13675 0 0 0 +0.13725 0 0 0 +0.13775 0 0 0 +0.13825 0 0 0 +0.13875 0 0 0 +0.13925 0 0 0 +0.13975 0 0 0 +0.14025 0 0 0 +0.14075 0 0 0 +0.14125 0 0 0 +0.14175 0 0 0 +0.14225 0 0 0 +0.14275 0 0 0 +0.14325 0 0 0 +0.14375 0 0 0 +0.14425 0 0 0 +0.14475 0 0 0 +0.14525 0 0 0 +0.14575 0 0 0 +0.14625 0 0 0 +0.14675 0 0 0 +0.14725 0 0 0 +0.14775 0 0 0 +0.14825 0 0 0 +0.14875 0 0 0 +0.14925 0 0 0 +0.14975 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/wavelength.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/wavelength.dat new file mode 100644 index 0000000000..006360e7fd --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/wavelength.dat @@ -0,0 +1,360 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_1d(300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: wavelength +# position: 49.4198 0 -35.0741 +# title: Wavelength [Angs] monitor +# Ncount: 10622832 +# filename: wavelength.dat +# statistics: X0=3.55117; dX=1.41996; +# signal: Min=0; Max=1.01537e+08; Mean=8.41908e+06; +# values: 2.52572e+09 9.28181e+07 43878 +# xvar: L +# yvar: (I,I_err) +# xlabel: Wavelength [Angs] +# ylabel: Intensity [n/s/bin] +# xlimits: 0.5 10 +# variables: L I I_err N +0.5158333333 0 0 0 +0.5475 0 0 0 +0.5791666667 0 0 0 +0.6108333333 0 0 0 +0.6425 0 0 0 +0.6741666667 0 0 0 +0.7058333333 0 0 0 +0.7375 0 0 0 +0.7691666667 0 0 0 +0.8008333333 0 0 0 +0.8325 0 0 0 +0.8641666667 0 0 0 +0.8958333333 0 0 0 +0.9275 0 0 0 +0.9591666667 0 0 0 +0.9908333333 6424.872559 6471.334436 40 +1.0225 4322630.099 3115144.962 308 +1.054166667 1457908.406 595682.6035 430 +1.085833333 4549497.931 1320067.486 675 +1.1175 5083318.57 1638010.236 843 +1.149166667 8361010.206 2640848.698 948 +1.180833333 4879392.064 1318480.797 1045 +1.2125 8238809.284 2119973.282 1106 +1.244166667 11221971.51 3845790.921 1171 +1.275833333 10442314.45 2360870.655 1179 +1.3075 9673491.032 2845489.632 1228 +1.339166667 10713763.63 2062403.913 1233 +1.370833333 14856912.96 4264057.381 1319 +1.4025 9512546.82 2563125.48 1199 +1.434166667 14769319.18 3319864.289 1158 +1.465833333 9633387.034 3094693.212 1152 +1.4975 7913040.555 1979222.759 1150 +1.529166667 9141320.877 2570644.322 1124 +1.560833333 11829618.02 2675723.077 1052 +1.5925 8162689.828 1557474.236 1126 +1.624166667 13665971.2 3236316.423 998 +1.655833333 11983461.77 3193188.542 1011 +1.6875 9290451.725 3009820.989 1019 +1.719166667 11503194.56 3318085.596 922 +1.750833333 8883943.095 2348155.052 947 +1.7825 8144848.486 2489189.943 887 +1.814166667 20629917.08 6060703.484 811 +1.845833333 7274582.526 1680162.02 757 +1.8775 15633112.05 4068568.545 745 +1.909166667 9192732.971 2877535.822 690 +1.940833333 11272055.33 4065966.37 625 +1.9725 7942383.413 2031002.058 701 +2.004166667 15529669.62 5582720.105 620 +2.035833333 10933608.38 3296319.536 574 +2.0675 20947441.74 5873254.779 589 +2.099166667 11849399.16 4580411.092 553 +2.130833333 11483333.41 3885417.586 518 +2.1625 6737630.152 1924416.855 469 +2.194166667 9441039.62 3306883.776 477 +2.225833333 5617925.341 2109253.855 403 +2.2575 23551838.87 8203710.013 393 +2.289166667 14094519.57 4334613.146 337 +2.320833333 12872817.54 3819524.364 332 +2.3525 10101307.59 2995627.121 287 +2.384166667 17828325.38 7946692.887 248 +2.415833333 10457540.95 3119221.767 254 +2.4475 8278584.458 2724779.363 170 +2.479166667 11656529.77 3864105.2 141 +2.510833333 16806862.53 6477266.79 159 +2.5425 15848243.81 4029749.373 208 +2.574166667 25054080.2 10199818 266 +2.605833333 23090916.41 6907782.643 253 +2.6375 18198422.91 4234861.793 260 +2.669166667 34908689.84 7286788.73 244 +2.700833333 30348761.39 7008958.466 225 +2.7325 17482742.6 5050482.424 245 +2.764166667 25685023.91 6411328.989 212 +2.795833333 21050572.9 4804857.497 193 +2.8275 44988376.89 12060648.23 194 +2.859166667 26951642.58 7122172.602 184 +2.890833333 32388484.46 7417862.058 200 +2.9225 23017823.75 7246890.856 183 +2.954166667 21873176.81 7344948.651 164 +2.985833333 34682536.4 8088248.05 166 +3.0175 40953650.8 12904143.25 151 +3.049166667 26630218.3 7292498.992 151 +3.080833333 10589698.01 2547604.408 133 +3.1125 48875368.65 10901745.51 168 +3.144166667 34206819.82 8510660.588 138 +3.175833333 34354697.42 8311596.127 136 +3.2075 23930320.77 6610800.662 105 +3.239166667 24445887.21 6531547.395 108 +3.270833333 13292927.37 3599997.168 105 +3.3025 52508957.54 12243545.53 122 +3.334166667 101536595.3 49781603.54 99 +3.365833333 27460663.26 8210200.076 103 +3.3975 25703816.48 6665397.509 100 +3.429166667 28922424.74 8941578.743 93 +3.460833333 26709520.9 7545562.714 94 +3.4925 29149166.07 9306225.258 84 +3.524166667 20453400.5 6348310.819 89 +3.555833333 21937660.34 6433358.018 83 +3.5875 21425077.3 6517256.422 80 +3.619166667 26033796.2 7359226.524 78 +3.650833333 22824426 7041298.385 59 +3.6825 24295271.85 8026073.334 69 +3.714166667 17367952.61 5831350.378 52 +3.745833333 16941471.79 5367145.579 54 +3.7775 13227949.82 4581082.09 51 +3.809166667 8915729.829 4320610.543 38 +3.840833333 15125659.69 5751687.794 49 +3.8725 18270859.68 7778360.471 37 +3.904166667 6868922.171 4624768.9 37 +3.935833333 13958715.7 4536737.523 60 +3.9675 16578442.45 5457887 61 +3.999166667 28623846.69 13643958.36 47 +4.030833333 51138204.4 31239576.78 47 +4.0625 28742127.42 11118745.91 49 +4.094166667 14167620.12 4483374.782 56 +4.125833333 22811954.83 7097039.18 56 +4.1575 9727388.055 4140691.229 39 +4.189166667 12154819.13 4704153.24 52 +4.220833333 17849352.76 6329420.57 41 +4.2525 8510847.472 2964804.253 28 +4.284166667 6541910.091 2966558.555 26 +4.315833333 15893612.79 4823180.156 46 +4.3475 13192389.32 5439394.287 32 +4.379166667 16495067.12 6318208.327 30 +4.410833333 6104494.489 2352365.297 33 +4.4425 14883697.14 8584927.391 32 +4.474166667 3706204.144 2136051.663 31 +4.505833333 4548955.674 1809102.444 33 +4.5375 7207601.505 2257761.166 33 +4.569166667 24565059.1 8189858.762 39 +4.600833333 17709471.7 7607743.909 25 +4.6325 7435011.403 3453530.034 28 +4.664166667 11997571.61 6837684.838 23 +4.695833333 11853036.59 5161180.063 34 +4.7275 11205605.21 5414163.382 22 +4.759166667 13155293.6 5369613.636 20 +4.790833333 13032789.35 5188605.399 24 +4.8225 7552729.797 3418779.657 26 +4.854166667 10195400.04 4625400.678 38 +4.885833333 3431696.281 2120803.74 11 +4.9175 11350086.56 4611289.758 31 +4.949166667 12024826.19 5884458.587 18 +4.980833333 2867248.953 1654029.642 15 +5.0125 10443949.96 6801502.454 19 +5.044166667 10122411.4 4078573.255 20 +5.075833333 17490904.48 10336032.1 11 +5.1075 6401022.133 3551703.789 19 +5.139166667 9622245.402 4246833.804 21 +5.170833333 2814751.705 1768575.485 7 +5.2025 5280069.597 3811848.424 11 +5.234166667 4218825.834 2639524.167 11 +5.265833333 7591809.75 4184853.55 16 +5.2975 6734369.193 4433101.319 15 +5.329166667 5789284.474 3177244.702 16 +5.360833333 2174007.131 1560487.477 13 +5.3925 10716830.12 5594082.59 15 +5.424166667 8715129.641 3844776.557 19 +5.455833333 12238999.13 8795706.446 15 +5.4875 5942087.945 2718281.854 16 +5.519166667 3109632.405 2258014.531 12 +5.550833333 6515365.09 3914870.985 15 +5.5825 4977857.423 3551032.205 8 +5.614166667 4145057.011 2324609.698 11 +5.645833333 4136938.795 2673182.397 15 +5.6775 3135107.98 2027663.666 11 +5.709166667 388916.7948 426034.3003 5 +5.740833333 5340681.3 3101299.627 8 +5.7725 4535047.591 4888972.472 5 +5.804166667 12105735.75 7016562.931 9 +5.835833333 9982305.85 3760877.908 15 +5.8675 877720.4805 948029.8421 6 +5.899166667 566128.7995 427310.3648 7 +5.930833333 761072.6955 617563.9795 10 +5.9625 4440032.28 2882222.637 9 +5.994166667 18140739.59 12165052.78 5 +6.025833333 2737869.887 2046138.447 7 +6.0575 7374799.657 4370999.783 6 +6.089166667 6236542.349 3997128.384 8 +6.120833333 325920.6322 243783.0604 8 +6.1525 1766383.475 1737528.297 10 +6.184166667 2326156.94 1691920.164 5 +6.215833333 4299477.434 3948620.673 6 +6.2475 1425674.406 1076666.548 6 +6.279166667 386266.2247 431762.5235 4 +6.310833333 1008643.4 1164027.762 3 +6.3425 51325.1493 57074.02682 4 +6.374166667 3082440.179 1828780.278 8 +6.405833333 11340.86475 13095.30262 3 +6.4375 1521042.688 1055334.117 8 +6.469166667 622934.4718 518786.2362 7 +6.500833333 1267.758492 948.7189953 5 +6.5325 1403007.086 931824.0133 6 +6.564166667 3312552.778 2701179.72 7 +6.595833333 23.67506841 26.46952952 4 +6.6275 923831.306 683192.8256 6 +6.659166667 4693032.935 4835840.866 5 +6.690833333 5416620.209 4167296.422 3 +6.7225 2308.821144 2369.616435 4 +6.754166667 2115167.543 1961028.563 4 +6.785833333 0 0 0 +6.8175 4095859.151 4221836.846 5 +6.849166667 3376239.803 3641079.967 5 +6.880833333 2316398.324 2469104.252 6 +6.9125 1953922.56 1636992.606 6 +6.944166667 2928624.933 2478309.379 5 +6.975833333 2928351.766 2349926.694 4 +7.0075 435182.367 502504.888 3 +7.039166667 708501.0934 818077.444 3 +7.070833333 5882004.641 3365436.406 6 +7.1025 521206.317 418974.8613 5 +7.134166667 2506550.007 1355993.3 7 +7.165833333 8253394.317 8066997.094 5 +7.1975 1947169.594 2090929.674 6 +7.229166667 0.3885087935 0.4758241523 2 +7.260833333 633083.7442 775366.0688 2 +7.2925 17106.42962 19706.85726 3 +7.324166667 6355612.74 5029005.365 5 +7.355833333 2808.601962 2808.601962 1 +7.3875 461023.1168 461023.1168 1 +7.419166667 361566.8407 442827.1336 2 +7.450833333 12120.06278 12788.83825 5 +7.4825 1691694.098 1952469.877 3 +7.514166667 9.80495397e-09 9.80495397e-09 1 +7.545833333 401185.3324 448534.2412 4 +7.5775 1795.410757 2007.313809 4 +7.609166667 448110.5465 476539.8922 5 +7.640833333 818302.4965 850802.7362 5 +7.6725 16572.92518 20297.60487 2 +7.704166667 648103.6641 406192.1701 3 +7.735833333 0 0 0 +7.7675 3.024963518e-07 3.024963518e-07 1 +7.799166667 1947520.219 2096347.536 6 +7.830833333 0 0 0 +7.8625 0 0 0 +7.894166667 23520.19595 23222.67577 3 +7.925833333 0 0 0 +7.9575 10610237.67 11059095.8 5 +7.989166667 5243507.712 4105100.06 3 +8.020833333 3520403.842 3209912.857 4 +8.0525 0 0 0 +8.084166667 41980.17667 51412.01492 2 +8.115833333 3405684.927 3539553.171 4 +8.1475 0 0 0 +8.179166667 130308.0247 159593.5809 2 +8.210833333 1.456833947e-12 1.784249905e-12 2 +8.2425 0 0 0 +8.274166667 56715.75888 69104.49118 2 +8.305833333 5617682.997 6512976.328 2 +8.3375 1903142.301 2330839.317 2 +8.369166667 56.54847985 56.54847985 1 +8.400833333 16364.45325 16364.45325 1 +8.4325 5966225.315 4256888.592 3 +8.464166667 1.154705039 1.154705039 1 +8.495833333 11.52218927 11.52218927 1 +8.5275 0 0 0 +8.559166667 5539884.166 5803097.619 3 +8.590833333 1886363.174 2177361.795 3 +8.6225 171790.9081 171790.9081 1 +8.654166667 567441.2695 609669.1851 3 +8.685833333 718406.8189 879865.0454 2 +8.7175 1.212887071 1.212887071 1 +8.749166667 0 0 0 +8.780833333 17255.01008 21132.98509 2 +8.8125 0 0 0 +8.844166667 0 0 0 +8.875833333 0 0 0 +8.9075 0 0 0 +8.939166667 0 0 0 +8.970833333 0 0 0 +9.0025 0 0 0 +9.034166667 0 0 0 +9.065833333 0 0 0 +9.0975 0 0 0 +9.129166667 0 0 0 +9.160833333 0 0 0 +9.1925 0 0 0 +9.224166667 0 0 0 +9.255833333 0 0 0 +9.2875 0 0 0 +9.319166667 0 0 0 +9.350833333 0 0 0 +9.3825 0 0 0 +9.414166667 0 0 0 +9.445833333 0 0 0 +9.4775 0 0 0 +9.509166667 0 0 0 +9.540833333 0 0 0 +9.5725 0 0 0 +9.604166667 0 0 0 +9.635833333 0 0 0 +9.6675 0 0 0 +9.699166667 0 0 0 +9.730833333 0 0 0 +9.7625 0 0 0 +9.794166667 0 0 0 +9.825833333 0 0 0 +9.8575 0 0 0 +9.889166667 0 0 0 +9.920833333 0 0 0 +9.9525 0 0 0 +9.984166667 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/wavelength_tof.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/wavelength_tof.dat new file mode 100644 index 0000000000..d1b6906f41 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/1/wavelength_tof.dat @@ -0,0 +1,965 @@ +# Format: McCode with text headers +# URL: http://www.mccode.org +# Creator: 3.99.99, git +# Instrument: ODIN_MCPL_TOF_train4.instr +# Ncount: 885236 +# Trace: no +# Gravitation: no +# TOF_TRAIN: 100 +# Seed: 1000 +# Directory: Filterscan/1 +# Nodes: 12 +# Param: l_min=1 +# Param: l_max=11 +# Param: n_pulses=1 +# Param: wfm_delta=0.3 +# Param: bp_frequency=7 +# Param: WFM1_phase_offset=0 +# Param: jitter_wfmc_1=0 +# Param: WFM2_phase_offset=0 +# Param: jitter_wfmc_2=0 +# Param: fo1_phase_offset=0 +# Param: jitter_fo_chopper_1=0 +# Param: bp1_phase_offset=0 +# Param: jitter_bp1=0 +# Param: fo2_phase_offset=0 +# Param: jitter_fo_chopper_2=0 +# Param: bp2_phase_offset=0 +# Param: jitter_bp2=0 +# Param: t0_phase_offset=0 +# Param: jit_t0_sec=0 +# Param: fo3_phase_offset=0 +# Param: jitter_fo_chopper_3=0 +# Param: fo4_phase_offset=0 +# Param: jitter_fo_chopper_4=0 +# Param: fo5_phase_offset=0 +# Param: jitter_fo_chopper_5=0 +# Param: choppers=2 +# Param: target_tsplit=3 +# Param: filter=1 +# Param: repeat=1 +# Param: v_smear=0.1 +# Param: pos_smear=0.01 +# Param: dir_smear=0.01 +# Date: Sun Mar 1 17:38:56 2026 (1772383136) +# type: array_2d(300, 300) +# Source: ODIN_MCPL_baseline (ODIN_MCPL_TOF_train4.instr) +# component: wavelength_tof +# position: 49.4198 0 -35.0741 +# title: Intensity Time_Of_Flight Wavelength Monitor (Square) per bin +# Ncount: 10622832 +# filename: wavelength_tof.dat +# statistics: X0=0.0542468; dX=0.0216991; Y0=3.55117; dY=1.41996; +# signal: Min=0; Max=9.04634e+07; Mean=28063.6; +# values: 2.52572e+09 9.28181e+07 43878 +# xvar: TO +# yvar: Wa +# xlabel: TOF [s] +# ylabel: Wavelength [Angs] +# zvar: I +# zlabel: Signal per bin +# xylimits: 0 0.15 0.5 10 +# variables: I I_err N +# Data [wavelength_tof/wavelength_tof.dat] I: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6424.872559 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 101500.0921 4221130.007 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 527953.4305 929954.9754 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 842033.6536 3707464.278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1999752.479 3083566.091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2336091.816 6024918.391 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2676034.922 2203357.143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3298216.381 4940592.903 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5025166.758 6196804.748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5619518.298 4822796.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 6294908.699 3378582.334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6234342.539 4479421.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11726313.34 3130599.626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8301710.469 1210836.351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12235188.55 2534130.638 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6715909.656 2917477.377 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6798449.501 1114591.055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8709600.699 431720.1781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8777666.543 3051951.479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7503367.174 659322.6539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12898591.22 767379.9855 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11788307.02 195154.7496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8351863.414 938588.311 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11503194.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.175598611e-06 8883943.095 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1456327.794 6688520.693 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 820256.3782 19809660.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1391245.988 5883336.538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 228179.0477 15404933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 829478.2566 8363254.715 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 939876.6375 10332178.69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1266391.905 6675991.508 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6354848.134 9174821.486 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6375289.94 4558318.442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7909240.544 13038201.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4288843.814 7560555.341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5043927.171 6439406.24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2561629.14 4176001.012 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4885934.204 4555105.415 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4179642.199 1438283.141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9602588.843 13949250.02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3941192.679 10153326.89 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7037540.274 5835277.269 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5437325.848 4663981.744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13219447.56 4608877.813 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5468267.972 4989272.974 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5807333.481 2471250.978 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9950944.524 1705585.246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13235161.05 3571701.477 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10548485.86 5299757.955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11856261.2 13197819 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22018531.1 1072385.308 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17428620.91 769802.0095 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34908682.51 7.329687467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30348761.39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 105.5723011 17482637.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 501811.773 25183212.13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 344564.1721 20706008.73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4897523.884 40090853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4246457.794 22705184.79 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3853542.35 28534942.11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1467965.841 21549857.91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2594617.905 19278558.91 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6417221.499 28265314.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12282558.12 28671092.68 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5545399.547 21084818.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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3016273.185 7573424.825 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23320138.42 25555230.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16226735.5 17980084.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22564428.95 11790268.46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11987313.67 11943007.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 13741787.08 10704100.13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6506382.704 6786544.666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36523766.1 15985191.44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90463408.4 11073186.86 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24672253.14 2788410.124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12574015.16 13129801.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15216487.42 13705937.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25662464.32 1047056.572 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28302602.31 846563.7621 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14556543.43 5896857.062 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20787886.53 1149773.81 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19523785.33 1901291.967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24664699.07 1369097.137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22824426 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24295271.85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.246066587e-09 17367952.61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 781073.564 16160398.22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1733867.051 11494082.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20751.57007 8894978.258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6054554.908 9071104.781 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4409802.623 13861057.05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21856.44396 6847065.727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7655815.318 6302900.383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4173889.36 12404553.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14317151.54 14306695.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 797495.6969 50340708.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4618568.71 24123558.71 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5921394.043 8246226.081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10875091.51 11936863.31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7507653.022 2219735.034 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4010781.98 8144037.153 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8208935.815 9640416.946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5284915.937 3225931.535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3159752.427 3382157.664 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11931435.93 3962176.856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6445589.957 6746799.365 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11933099.43 4561967.692 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4050832.694 2053661.795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1749786.017 13133911.13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3705577.356 626.7877373 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4481592.529 67363.14532 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5844827.103 1362774.402 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24560815.13 4243.972645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17506620.9 202850.8008 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7435011.403 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 408270.6193 11589300.99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11853036.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001794702044 11205605.21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1191628.984 11963664.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2181203.627 10851585.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 593446.0228 6959283.774 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2497657.962 7697742.077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2161950.688 1269745.593 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2335461.559 9014625.002 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7727480.128 4297346.064 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1820034.746 1047214.207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3466561.61 6977388.349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4746181.453 5376229.946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3166768.823 14324135.66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4977444.222 1423577.911 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1647072.443 7975172.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1211620.479 1603131.226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 668506.6741 4611562.923 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3562319.755 656506.079 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4696947.634 2894862.116 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6543895.76 190473.4331 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5673900.222 115384.2518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1924701.222 249305.909 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10716816.33 13.78481314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4347094.686 4368034.955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12238999.13 2.404738373e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2976178.828 2965909.118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2667198.385 442434.0191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6515365.09 2.3333715e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4977857.423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4145057.011 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4136938.795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3135107.98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.317185789 388914.4776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2112703.905 3227977.395 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.603825995e-20 4535047.591 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 391469.3026 11714266.45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3983734.469 5998571.381 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 877720.447 0.03357842634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7191.971474 558936.828 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 553064.8165 208007.8789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3588415.7 851616.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18140739.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6450.805787 2731419.081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3371772.613 4003027.044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5614097.879 622444.4702 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 114675.2842 211245.348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1653998.926 112384.5492 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 114246.6589 2211910.281 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4299469.122 8.311805517 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 768492.1365 657182.2698 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.734306737e-20 386266.2247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 503.0316215 1008140.368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 259.0686287 51066.08067 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3082440.179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.506194765e-24 11340.86475 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 574316.1033 946726.585 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 622934.4718 1.560395214e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1267.758492 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1403007.086 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3312552.778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23.67506841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004976393414 923831.3055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4693032.935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5416620.209 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2123.728747 185.0923972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 375544.8856 1739622.658 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4095859.151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3376239.8 0.003032418995 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6169.145015 2310229.179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1491346.588 462575.9723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2928624.933 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1009222.536 1919129.23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 435182.367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 708501.0934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2773010.894 3108993.747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 521206.317 1.566482409e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1526572.871 979977.1367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88550.63025 8164843.686 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1947166.3 3.293855282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.742849171e-25 0.3885087935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 633083.7442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17106.42962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6355612.74 3.905142776e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2808.601962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 461023.1168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 361566.8407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12120.06278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1691694.098 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.80495397e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 401185.3324 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1795.410757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38.49703694 448072.0495 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 818302.4965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16572.92518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 648103.6641 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.024963518e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6280.512484 1941239.706 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23520.19595 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.380173105 10610236.29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2100221.621 3143286.091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3520403.842 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41980.17667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232825.3391 3172859.588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 130307.716 0.3087060127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.456833947e-12 3.390873976e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56496.34088 219.4180052 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5617682.997 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1903142.301 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56.54847985 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16364.45325 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3229075.21 2737150.105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.154705039 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11.52218927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5539884.166 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1886363.174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 171790.9081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 567441.2695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 718406.8189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.212887071 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17255.01007 6.917457572e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Errors [wavelength_tof/wavelength_tof.dat] I_err: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6471.334436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59932.44359 3115739.302 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 455178.0049 386310.7128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 408546.3119 1255850.122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 983814.2335 1310896.331 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1089097.246 2407023.019 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1086759.055 747847.9053 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1026595.677 1855843.437 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2070158.71 3242988.917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1961235.742 1315983.703 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2616957.3 1119902.182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1482919.605 1434603.291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4069950.068 1275687.35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2528149.688 425250.9469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3204750.5 869618.2466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2274583.758 2101338.289 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1926399.887 455863.032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2563009.669 202118.0782 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2170897.745 1567958.958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1506239.456 397665.63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3202017.688 473234.3984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3188647.671 173462.9016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2947008.312 619979.3777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3318085.596 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.114042984e-06 2348157.599 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 972431.279 2295410.967 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 365632.8059 6050125.351 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 717271.57 1521427.936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 143604.0086 4066517.051 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 597537.0155 2815666.035 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 467762.5355 4040055.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 613492.8446 1936983.671 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4436660.46 3401626.328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2999629.221 1378977.936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4414997.022 3883238.49 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1699863.334 4256712.045 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3193847.623 2220221.183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1510107.619 1196777.29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2601878.138 2046759.815 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2031110.562 578036.389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3920960.043 7218519.846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1765819.226 3966451.002 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2431307.965 2955706.796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2547748.242 1584118.271 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7540467.031 2540381.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 1987862.644 2415925.332 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2403483.677 1299146.028 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3563701.76 1521812.182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5748697.208 3036284.484 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3168691.549 2527476.506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3116282.345 9836356.454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6861006.077 829715.5503 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4202051.534 544893.9176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7286889.239 8.976997134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7008958.466 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 118.0332824 5050637.269 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 522197.8222 6392391.523 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 303097.9835 4796664.201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2244019.802 11860300.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3099645.55 6435754.589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1936609.556 7169310.993 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 878361.6937 7198888.319 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1268104.297 7245021.04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2725457.842 7631276.995 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6308582.94 11296157.56 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2223924.102 6962895.626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1404867.125 2134487.599 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7184264.787 8237535.704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5680017.877 6374615.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6155309.034 5626134.545 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4527500.445 4855712.515 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4890022.3 4370062.144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2114559.804 2936610.337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10185572.07 6868912.676 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 49603898.03 5420405.189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8150153.148 1152551.342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3735638.24 5587975.972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4617747.424 7766115.739 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7525008.682 635155.8285 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9286402.109 722558.3822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4637820.833 4545841.025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6388774.376 821269.1679 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6285991.804 1876238.676 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7231175.572 1580897.202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7041298.385 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8026073.334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.246066587e-09 5832085.389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 599181.8507 5341345.506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1327553.359 4411015.167 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18092.39485 4328917.737 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4648209.288 3583055.62 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3861816.759 6846398.613 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22903.92267 4645355.957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3730782.325 2667124.734 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2348809.32 4960311.537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11632649.26 7545782.775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 768590.467 31356776.87 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2375302.608 10925931.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2762004.026 3574110.613 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4921137.464 5191894.465 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4025529.912 1158473.331 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2038819.24 4285041.874 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4806247.941 4210915.099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2660789.031 1391833.563 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1946678.664 2314014.818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4350416.208 2158444.689 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3291634.371 4528358.854 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4310915.021 5100434.818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1911441.481 1430210.844 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1060285.399 8697372.137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2142782.268 674.510761 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1809716.676 76977.58162 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1789213.485 1669050.959 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8192936.385 3070.107135 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7609460.184 202850.8008 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3453530.034 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 408270.6193 6831577.496 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5161180.063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001794702044 5417861.659 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1361749.481 5249323.737 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1678287.305 4962018.342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 586596.2055 3386723.804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1447787.914 4422425.198 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1798600.44 1302776.38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2487427.432 4027407.208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5540913.013 2451251.243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1518596.427 841839.6221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2904881.294 6306313.196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3097032.725 2778121.47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3656562.323 9937859.899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3581459.506 774626.899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 918580.8541 4204993.78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1023577.004 1587271.138 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 708943.0882 3993112.381 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2686144.986 476152.2808 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3095130.066 3095178.411 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4457095.141 219632.4823 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3189619.958 133145.5505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1569617.911 273093.5613 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5601152.346 13.78481314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2223941.653 3328085.97 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8812213.802 2.404738373e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1785100.877 2154258.529 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2229603.338 541850.3913 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3921064.721 2.3333715e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3551032.205 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2324609.698 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2673182.397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2027663.666 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.317185789 434819.5434 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2177432.813 2470355.201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.603825995e-20 4987837.433 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 391469.3026 7032478.691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2998430.44 2484576.412 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1074959.225 0.03754182194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8768.219902 433737.1553 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 618337.9024 224401.4042 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2831553.703 933103.2408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12165052.78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7448.748915 2089730.759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2588304.419 3921998.258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4022988.653 710256.2755 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 103474.0388 243756.093 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1811859.797 122997.8704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 139923.0096 1710195.899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3994851.882 8.311805517 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 859200.3287 804880.6146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.734306737e-20 445916.9802 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 616.0853829 1008140.368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 317.2914401 62541.53936 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1828780.278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.506194765e-24 13889.66592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 355319.5761 1159498.494 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 522873.9215 1.560395214e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 948.7189953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 931824.0133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2701179.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26.46952952 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0004976393414 687867.2965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4835840.866 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4167296.422 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2123.728747 213.7069603 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 375544.8856 2007445.225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4221836.846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3833153.163 0.003713939612 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7555.628718 2554951.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 1826519.085 368208.0067 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2478309.379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1236039.326 2340203.395 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 502504.888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 818077.444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2127724.308 2859982.963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 423193.7098 1.566482409e-23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1192871.554 759637.6081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 102242.7951 8730622.657 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2163846.876 4.034132364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.742849171e-25 0.3885087935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 775366.0688 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19706.85726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5075937.374 3.905142776e-12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2808.601962 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 461023.1168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 442827.1336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12788.83825 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1952469.877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.80495397e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 448534.2412 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2007.313809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38.49703694 486012.7584 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 850802.7362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20297.60487 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 406192.1701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.024963518e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6280.512484 2126266.715 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23222.67577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.380173105 11272970.39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2100221.621 3849286.158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3209912.857 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51412.01492 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232825.3391 3663702.674 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 130307.716 0.3087060127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.456833947e-12 3.390873976e-25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56496.34088 219.4180052 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6512976.328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2330839.317 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 56.54847985 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16364.45325 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3445897.595 2737150.105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.154705039 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11.52218927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5803097.619 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2177361.795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 171790.9081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 609669.1851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 879865.0454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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.212887071 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17255.01007 6.917457572e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +# Events [wavelength_tof/wavelength_tof.dat] N: +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 105 325 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 172 503 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 283 560 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 371 577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 437 608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 517 589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 578 593 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 609 570 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 668 560 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 742 491 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 813 506 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 817 382 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 816 342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 848 304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 913 237 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 888 236 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 869 183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 969 157 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 902 96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 944 67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 984 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 922 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 840 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 112 633 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 129 561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 143 482 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 169 532 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 173 447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 185 389 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 199 390 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 218 335 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 218 300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184 285 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 223 254 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 204 199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 208 185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 186 151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 220 112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 182 105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 166 82 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 180 74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 131 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 113 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 132 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 183 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 233 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 233 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 245 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 242 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 169 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 155 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35 148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 114 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 62 104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 53 98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 87 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76 92 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 77 59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 54 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 64 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 63 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 74 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 76 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 75 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 51 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 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 14 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 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 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 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 16 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 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 13 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 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 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 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 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 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 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 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 4 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 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 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 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 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 2 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 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/ODIN_MCPL_TOF_train4.c b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/ODIN_MCPL_TOF_train4.c new file mode 100644 index 0000000000..9a1061364a --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/ODIN_MCPL_TOF_train4.c @@ -0,0 +1,37177 @@ +/* Automatically generated file. Do not edit. + * Format: ANSI C source code + * Creator: McStas + * Instrument: ODIN_MCPL_TOF_train4.instr (ODIN_MCPL_baseline) + * Date: Sun Mar 1 17:37:54 2026 + * File: ./ODIN_MCPL_TOF_train4.c + * CFLAGS= @MCPLFLAGS@ -DTOF_TRAIN + */ + +#ifndef WIN32 +# ifndef OPENACC +# define _GNU_SOURCE +# endif +# define _POSIX_C_SOURCE 200809L +#endif +/* In case of cl.exe on Windows, supppress warnings about #pragma acc */ +#ifdef _MSC_EXTENSIONS +#pragma warning(disable: 4068) +#endif + +#define MCCODE_STRING " 3.99.99, git" +#define FLAVOR "mcstas" +#define FLAVOR_UPPER "MCSTAS" + +#define MC_USE_DEFAULT_MAIN +#define MC_TRACE_ENABLED + +#include +#include + +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#define MCCODE_BASE_TYPES + +/* available random number generators */ +#define _RNG_ALG_MT 1 +#define _RNG_ALG_KISS 2 +/* selection of random number generator */ +#ifndef RNG_ALG +# define RNG_ALG _RNG_ALG_KISS +#endif +#if RNG_ALG == _RNG_ALG_MT // MT +#define randstate_t uint32_t +#elif RNG_ALG == _RNG_ALG_KISS // KISS +#define randstate_t uint64_t +#endif + +#ifndef MC_NUSERVAR +#define MC_NUSERVAR 10 +#endif + +/* Particle JUMP control logic */ +struct particle_logic_struct { +int dummy; +}; + +struct _struct_particle { + double x,y,z; /* position [m] */ + double vx,vy,vz; /* velocity [m/s] */ + double sx,sy,sz; /* spin [0-1] */ + int mcgravitation; /* gravity-state */ + void *mcMagnet; /* precession-state */ + int allow_backprop; /* allow backprop */ + /* Generic Temporaries: */ + /* May be used internally by components e.g. for special */ + /* return-values from functions used in trace, thusreturned via */ + /* particle struct. (Example: Wolter Conics from McStas, silicon slabs.) */ + double _mctmp_a; /* temp a */ + double _mctmp_b; /* temp b */ + double _mctmp_c; /* temp c */ + randstate_t randstate[7]; + double t, p; /* time, event weight */ + #ifdef TOF_TRAIN + int N_trains; /* initialised like e.g. ncount, seed from cmdline */ + double *t_offset; + double *p_trains; + int *alive_trains; + double p_last_time_manipulation; + #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains) + #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains) + #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains) + int Ntof_init; /* 0/1 - set to 1 once "times are filled in" */ + #endif /* TOF_TRAIN */ + long long _uid; /* Unique event ID */ + long _index; /* component index where to send this event */ + long _absorbed; /* flag set to TRUE when this event is to be removed/ignored */ + long _scattered; /* flag set to TRUE when this event has interacted with the last component instance */ + long _restore; /* set to true if neutron event must be restored */ + long flag_nocoordschange; /* set to true if particle is jumping */ + struct particle_logic_struct _logic; +}; +typedef struct _struct_particle _class_particle; + +_class_particle _particle_global_randnbuse_var; +_class_particle* _particle = &_particle_global_randnbuse_var; + +#pragma acc routine +_class_particle mcgenstate(void); +#pragma acc routine +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF); +#pragma acc routine +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p); + +extern int mcgravitation; /* flag to enable gravitation */ +#pragma acc declare create ( mcgravitation ) + +extern int NTOF; /* TOF_train suppport */ +#pragma acc declare create ( NTOF ) + +_class_particle mcgenstate(void) { + _class_particle particle = mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, NULL, 0, NTOF); + return(particle); +} +/*Generated user variable handlers:*/ + +#pragma acc routine +double particle_getvar(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +double particle_getvar(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + double rval=0; + if(!str_comp("x",name)){rval=p->x;s=0;} + if(!str_comp("y",name)){rval=p->y;s=0;} + if(!str_comp("z",name)){rval=p->z;s=0;} + if(!str_comp("vx",name)){rval=p->vx;s=0;} + if(!str_comp("vy",name)){rval=p->vy;s=0;} + if(!str_comp("vz",name)){rval=p->vz;s=0;} + if(!str_comp("sx",name)){rval=p->sx;s=0;} + if(!str_comp("sy",name)){rval=p->sy;s=0;} + if(!str_comp("sz",name)){rval=p->sz;s=0;} + if(!str_comp("t",name)){rval=p->t;s=0;} + if(!str_comp("p",name)){rval=p->p;s=0;} + if(!str_comp("_mctmp_a",name)){rval=p->_mctmp_a;s=0;} + if(!str_comp("_mctmp_b",name)){rval=p->_mctmp_b;s=0;} + if(!str_comp("_mctmp_c",name)){rval=p->_mctmp_c;s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void* particle_getvar_void(_class_particle *p, char *name, int *suc); + +#ifdef OPENACC +#pragma acc routine +int str_comp(char *str1, char *str2); +#endif + +void* particle_getvar_void(_class_particle *p, char *name, int *suc){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int s=1; + void* rval=0; + if(!str_comp("x",name)) {rval=(void*)&(p->x); s=0;} + if(!str_comp("y",name)) {rval=(void*)&(p->y); s=0;} + if(!str_comp("z",name)) {rval=(void*)&(p->z); s=0;} + if(!str_comp("vx",name)){rval=(void*)&(p->vx);s=0;} + if(!str_comp("vy",name)){rval=(void*)&(p->vy);s=0;} + if(!str_comp("vz",name)){rval=(void*)&(p->vz);s=0;} + if(!str_comp("sx",name)){rval=(void*)&(p->sx);s=0;} + if(!str_comp("sy",name)){rval=(void*)&(p->sy);s=0;} + if(!str_comp("sz",name)){rval=(void*)&(p->sz);s=0;} + if(!str_comp("t",name)) {rval=(void*)&(p->t); s=0;} + if(!str_comp("p",name)) {rval=(void*)&(p->p); s=0;} + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +int particle_setvar_void(_class_particle *, char *, void*); + +int particle_setvar_void(_class_particle *p, char *name, void* value){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + if(!str_comp("x",name)) {memcpy(&(p->x), value, sizeof(double)); rval=0;} + if(!str_comp("y",name)) {memcpy(&(p->y), value, sizeof(double)); rval=0;} + if(!str_comp("z",name)) {memcpy(&(p->z), value, sizeof(double)); rval=0;} + if(!str_comp("vx",name)){memcpy(&(p->vx), value, sizeof(double)); rval=0;} + if(!str_comp("vy",name)){memcpy(&(p->vy), value, sizeof(double)); rval=0;} + if(!str_comp("vz",name)){memcpy(&(p->vz), value, sizeof(double)); rval=0;} + if(!str_comp("sx",name)){memcpy(&(p->sx), value, sizeof(double)); rval=0;} + if(!str_comp("sy",name)){memcpy(&(p->sy), value, sizeof(double)); rval=0;} + if(!str_comp("sz",name)){memcpy(&(p->sz), value, sizeof(double)); rval=0;} + if(!str_comp("p",name)) {memcpy(&(p->p), value, sizeof(double)); rval=0;} + if(!str_comp("t",name)) {memcpy(&(p->t), value, sizeof(double)); rval=0;} + return rval; +} + +#pragma acc routine +int particle_setvar_void_array(_class_particle *, char *, void*, int); + +int particle_setvar_void_array(_class_particle *p, char *name, void* value, int elements){ +#ifndef OPENACC +#define str_comp strcmp +#endif + int rval=1; + return rval; +} + +#pragma acc routine +void particle_restore(_class_particle *p, _class_particle *p0); + +void particle_restore(_class_particle *p, _class_particle *p0) { + p->x = p0->x; p->y = p0->y; p->z = p0->z; + p->vx = p0->vx; p->vy = p0->vy; p->vz = p0->vz; + p->sx = p0->sx; p->sy = p0->sy; p->sz = p0->sz; + p->t = p0->t; p->p = p0->p; + p->_absorbed=0; p->_restore=0; +} + +#pragma acc routine +double particle_getuservar_byid(_class_particle *p, int id, int *suc){ + int s=1; + double rval=0; + switch(id){ + } + if (suc!=0x0) {*suc=s;} + return rval; +} + +#pragma acc routine +void particle_uservar_init(_class_particle *p){ +} + +#define MC_EMBEDDED_RUNTIME +/* embedding file "mccode-r.h" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: mcstas 3.99.99 +* Version: $Revision$ +* +* Runtime system header for McStas/McXtrace. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int numipar; +* metadata_table_t metadata_table[]; +* int num_metadata; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM mcAbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas/McXtrace version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCCODE_R_H +#define MCCODE_R_H "$Revision$" + +#include +#include +#include +#include +#include +#include +#include +#ifndef _MSC_EXTENSIONS +#include +#endif +#include +#include +#include +#ifdef OPENACC +#include +#ifndef GCCOFFLOAD +#include +#else +#include +#endif +#pragma acc routine +int noprintf(); +#pragma acc routine +size_t str_len(const char *s); +#else +#include +#endif + +/* In case of gcc / clang, ensure to use + the built-in isnan/isinf functions */ +#if defined(__GNUC__) || defined(__clang__) +# ifdef isnan +# undef isnan +# endif +# ifdef isinf +# undef isinf +# endif +# define isnan(x) __builtin_isnan(x) +# define isinf(x) __builtin_isinf(x) +#endif + +#ifdef _MSC_EXTENSIONS +#ifndef _TIMES_H +#define _TIMES_H + +#if defined(WIN32) || defined(_WIN32) +#include +#include +#include + +int gettimeofday(struct timeval* t,void* timezone); + +#define __need_clock_t +#include + + +/* Structure describing CPU time used by a process and its children. */ +struct tms + { + clock_t tms_utime; /* User CPU time. */ + clock_t tms_stime; /* System CPU time. */ + + clock_t tms_cutime; /* User CPU time of dead children. */ + clock_t tms_cstime; /* System CPU time of dead children. */ + }; + +/* Store the CPU time used by this process and all its + dead children (and their dead children) in BUFFER. + Return the elapsed real time, or (clock_t) -1 for errors. + All times are in CLK_TCKths of a second. */ +clock_t times (struct tms *__buffer); + +typedef long long suseconds_t ; + + + +int gettimeofday(struct timeval* t,void* timezone) +{ struct _timeb timebuffer; + _ftime( &timebuffer ); + t->tv_sec=timebuffer.time; + t->tv_usec=1000*timebuffer.millitm; + return 0; +} + +clock_t times (struct tms *__buffer) { + + __buffer->tms_utime = clock(); + __buffer->tms_stime = 0; + __buffer->tms_cstime = 0; + __buffer->tms_cutime = 0; + return __buffer->tms_utime; +} + + +#endif +#endif +#endif + +/* If the runtime is embedded in the simulation program, some definitions can + be made static. */ + +#ifdef MC_EMBEDDED_RUNTIME +# define mcstatic +#else +# define mcstatic +#endif + +#ifdef __dest_os +# if (__dest_os == __mac_os) +# define MAC +# endif +#endif + +#ifdef __FreeBSD__ +# define NEED_STAT_H +#endif + +#if defined(__APPLE__) && defined(__GNUC__) +# define NEED_STAT_H +#endif + +#if defined(WIN32) || defined(_WIN32) +# define NEED_STAT_H +# define NEED_TYPES_H +#endif + +#ifdef NEED_STAT_H +# include +#endif + +#ifdef NEED_TYPES_H +# include +#endif + +#ifndef MC_PATHSEP_C +#if defined(WIN32) || defined(_WIN32) +# define MC_PATHSEP_C '\\' +# define MC_PATHSEP_S "\\" +# else /* !WIN32 */ +# define MC_PATHSEP_C '/' +# define MC_PATHSEP_S "/" +# endif /* !WIN32 */ +#endif /* MC_PATHSEP_C */ + +#if defined(WIN32) || defined(_WIN32) +#if defined _MSC_VER +#include +#elif defined __GNUC__ +#include +#include +#include +#endif +#define mkdir(a,b) mkdir(a) +#define getpid() _getpid() +#endif + +/* the version string is replaced when building distribution with mkdist */ +#ifndef MCCODE_STRING +# define MCCODE_STRING " 3.99.99, git" +#endif + +#ifndef MCCODE_DATE +# define MCCODE_DATE "git" +#endif + +#ifndef MCCODE_VERSION +# define MCCODE_VERSION "3.99.99" +#endif + +#ifndef __MCCODE_VERSION__ +#define __MCCODE_VERSION__ 399099L +#endif + +#ifndef MCCODE_NAME +# define MCCODE_NAME "mcstas" +#endif + +#ifndef MCCODE_PARTICLE +# define MCCODE_PARTICLE "neutron" +#endif + +#ifndef MCCODE_PARTICLE_CODE +# define MCCODE_PARTICLE_CODE 2112 +#endif + +#ifndef MCCODE_LIBENV +# define MCCODE_LIBENV "MCSTAS" +#endif + +#ifndef FLAVOR_UPPER +# define FLAVOR_UPPER MCCODE_NAME +#endif + +#ifdef MC_PORTABLE +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef MAC +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#if (USE_MPI == 0) +# undef USE_MPI +#endif + +#ifdef USE_MPI /* default is to disable signals with MPI, as MPICH uses them to communicate */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifdef OPENACC /* default is to disable signals with PGI/OpenACC */ +# ifndef NOSIGNALS +# define NOSIGNALS 1 +# endif +#endif + +#ifndef OPENACC +# ifndef USE_OFF /* default is to enable OFF when not using PGI/OpenACC */ +# define USE_OFF +# endif +# ifndef CPUFUNNEL /* allow to enable FUNNEL-mode on CPU */ +# ifdef FUNNEL /* by default disable FUNNEL-mode when not using PGI/OpenACC */ +# undef FUNNEL +# endif +# endif +#endif + +#if (NOSIGNALS == 0) +# undef NOSIGNALS +#endif + +/** Header information for metadata-r.c ----------------------------------------------------------------------------- */ +struct metadata_table_struct { /* stores metadata strings from components */ + char * source; // component name which provided the metadata + char * name; // the name of the metadata + char * type; // the MIME type of the metadata (free form, valid identifier) + char * value; // the metadata string contents +}; +typedef struct metadata_table_struct metadata_table_t; +char * metadata_table_key_component(char* key); +char * metadata_table_key_literal(char * key); +int metadata_table_defined(int, metadata_table_t *, char *); +char * metadata_table_name(int, metadata_table_t *, char *); +char * metadata_table_type(int, metadata_table_t *, char *); +char * metadata_table_literal(int, metadata_table_t *, char *); +void metadata_table_print_all_keys(int no, metadata_table_t * tab); +int metadata_table_print_all_components(int no, metadata_table_t * tab); +int metadata_table_print_component_keys(int no, metadata_table_t * tab, char * key); +/* -------------------------------------------------------------------------- Header information for metadata-r.c --- */ + +/* Note: the enum instr_formal_types definition MUST be kept + synchronized with the one in mccode.h and with the + instr_formal_type_names array in cogen.c. */ +enum instr_formal_types + { + instr_type_int, + instr_type_string, instr_type_char, + instr_type_vector, instr_type_double + }; +struct mcinputtable_struct { /* defines instrument parameters */ + char *name; /* name of parameter */ + void *par; /* pointer to instrument parameter (variable) */ + enum instr_formal_types type; + char *val; /* default value */ + char *unit; /* expected unit for parameter; informational only */ +}; + + +#ifndef MCCODE_BASE_TYPES +typedef double MCNUM; +typedef struct {MCNUM x, y, z;} Coords; +typedef MCNUM Rotation[3][3]; +#endif + +/* the following variables are defined in the McStas generated C code + but should be defined externally in case of independent library usage */ +#ifndef DANSE +extern struct mcinputtable_struct mcinputtable[]; /* list of instrument parameters */ +extern int numipar; /* number of instrument parameters */ +extern metadata_table_t metadata_table[]; /* list of component-defined string metadata */ +extern int num_metadata; /* number of component-defined string metadata */ +extern char instrument_name[], instrument_source[]; /* instrument name and filename */ +extern char *instrument_exe; /* executable path = argv[0] or NULL */ +extern char instrument_code[]; /* contains the initial 'instr' file */ + +#ifndef MC_ANCIENT_COMPATIBILITY +extern int traceenabled, defaultmain; +#endif +#endif + + +/* Useful macros ============================================================ */ + + +/* SECTION: Dynamic Arrays */ +typedef int* IArray1d; +IArray1d create_iarr1d(int n); +void destroy_iarr1d(IArray1d a); + +typedef int** IArray2d; +IArray2d create_iarr2d(int nx, int ny); +void destroy_iarr2d(IArray2d a); + +typedef int*** IArray3d; +IArray3d create_iarr3d(int nx, int ny, int nz); +void destroy_iarr3d(IArray3d a); + +typedef double* DArray1d; +DArray1d create_darr1d(int n); +void destroy_darr1d(DArray1d a); + +typedef double** DArray2d; +DArray2d create_darr2d(int nx, int ny); +void destroy_darr2d(DArray2d a); + +typedef double*** DArray3d; +DArray3d create_darr3d(int nx, int ny, int nz); +void destroy_darr3d(DArray3d a); + + +/* MPI stuff */ +#ifdef USE_MPI +#include "mpi.h" + +#ifdef OMPI_MPI_H /* openmpi does not use signals: we may install our sighandler */ +#ifndef OPENACC /* ... but only if we are not also running on GPU */ +#undef NOSIGNALS +#endif +#endif + +/* + * MPI_MASTER(i): + * execution of i only on master node + */ +#define MPI_MASTER(statement) { \ + if(mpi_node_rank == mpi_node_root)\ + { statement; } \ +} + +#ifndef MPI_REDUCE_BLOCKSIZE +#define MPI_REDUCE_BLOCKSIZE 100000 +#endif + +int mc_MPI_Sum(double* buf, long count); +int mc_MPI_Send(void *sbuf, long count, MPI_Datatype dtype, int dest); +int mc_MPI_Recv(void *rbuf, long count, MPI_Datatype dtype, int source); + +/* MPI_Finalize exits gracefully and should be preferred to MPI_Abort */ +#define exit(code) do { \ + MPI_Finalize(); \ + exit(code); \ + } while(0) + +#else /* !USE_MPI */ +#define MPI_MASTER(instr) instr +#endif /* USE_MPI */ + + +#ifdef USE_MPI +static int mpi_node_count; +#endif + +#ifdef USE_THREADS /* user want threads */ +#error Threading (USE_THREADS) support has been removed for very poor efficiency. Use MPI/SSH grid instead. +#endif + + +void mcset_ncount(unsigned long long count); /* wrapper to get mcncount */ +#pragma acc routine +unsigned long long int mcget_ncount(void); /* wrapper to set mcncount */ +unsigned long long mcget_run_num(void); /* wrapper to get mcrun_num=0:mcncount-1 */ + +/* Following part is only embedded when not redundant with mccode.h ========= */ + +#ifndef MCCODE_H + +#ifndef NOSIGNALS +#include +char *mcsig_message; +#define SIG_MESSAGE(msg) mcsig_message=(char *)(msg); +#else +#define SIG_MESSAGE(...) +#endif /* !NOSIGNALS */ + + +/* Useful macros and constants ============================================== */ + + +#ifndef FLT_MAX +#define FLT_MAX 3.40282347E+38F /* max decimal value of a "float" */ +#endif + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef SQR +#define SQR(x) ( (x) * (x) ) +#endif +#ifndef SIGN +#define SIGN(x) (((x)>0.0)?(1):(-1)) +#endif + + +# ifndef M_E +# define M_E 2.71828182845904523536 // e +# endif +# ifndef M_LOG2E +# define M_LOG2E 1.44269504088896340736 // log2(e) +# endif +# ifndef M_LOG10E +# define M_LOG10E 0.434294481903251827651 // log10(e) +# endif +# ifndef M_LN2 +# define M_LN2 0.693147180559945309417 // ln(2) +# endif +# ifndef M_LN10 +# define M_LN10 2.30258509299404568402 // ln(10) +# endif +# ifndef M_PI +# define M_PI 3.14159265358979323846 // pi +# endif +# ifndef PI +# define PI M_PI // pi - also used in some places +# endif +# ifndef M_PI_2 +# define M_PI_2 1.57079632679489661923 // pi/2 +# endif +# ifndef M_PI_4 +# define M_PI_4 0.785398163397448309616 // pi/4 +# endif +# ifndef M_1_PI +# define M_1_PI 0.318309886183790671538 // 1/pi +# endif +# ifndef M_2_PI +# define M_2_PI 0.636619772367581343076 // 2/pi +# endif +# ifndef M_2_SQRTPI +# define M_2_SQRTPI 1.12837916709551257390 // 2/sqrt(pi) +# endif +# ifndef M_SQRT2 +# define M_SQRT2 1.41421356237309504880 // sqrt(2) +# endif +# ifndef M_SQRT1_2 +# define M_SQRT1_2 0.707106781186547524401 // 1/sqrt(2) +# endif + +#define RAD2MIN ((180*60)/PI) +#define MIN2RAD (PI/(180*60)) +#define DEG2RAD (PI/180) +#define RAD2DEG (180/PI) +#define FWHM2RMS 0.424660900144 /* Convert between full-width-half-max and */ +#define RMS2FWHM 2.35482004503 /* root-mean-square (standard deviation) */ +#define HBAR 1.05457168e-34 /* [Js] h bar Planck constant CODATA 2002 */ +#define MNEUTRON 1.67492728e-27 /* [kg] mass of neutron CODATA 2002 */ +#define GRAVITY 9.81 /* [m/s^2] gravitational acceleration */ +#define NA 6.02214179e23 /* [#atoms/g .mole] Avogadro's number*/ + + +#define UNSET nan("0x6E6F74736574") +int nans_match(double, double); +int is_unset(double); +int is_valid(double); +int is_set(double); +int all_unset(int n, ...); +int all_set(int n, ...); +int any_unset(int n, ...); +int any_set(int n, ...); + + +/* wrapper to get absolute and relative position of comp */ +/* mccomp_posa and mccomp_posr are defined in McStas generated C code */ +#define POS_A_COMP_INDEX(index) (instrument->_position_absolute[index]) +#define POS_R_COMP_INDEX(index) (instrument->_position_relative[index]) + +/* setting parameters based COMP_GETPAR (returned as pointer) */ +/* compname must be given as a string, type and par are symbols. */ +#define COMP_GETPAR3(type, compname, par) \ + &( ((_class_ ## type ##_parameters *) _getvar_parameters(compname))->par ) +/* the body of this function depends on component instances, and is cogen'd */ +void* _getvar_parameters(char* compname); + +int _getcomp_index(char* compname); + +/* Note: The two-stage approach to COMP_GETPAR is NOT redundant; without it, +* after #define C sample, COMP_GETPAR(C,x) would refer to component C, not to +* component sample. Such are the joys of ANSI C. + +* Anyway the usage of COMP_GETPAR requires that we use sometimes bare names... +* NOTE: This can ONLY be used in instrument descriptions, not components. +*/ +#define COMP_GETPAR2(comp, par) (_ ## comp ## _var._parameters.par) +#define COMP_GETPAR(comp, par) COMP_GETPAR2(comp,par) + +#define INSTRUMENT_GETPAR(par) (_instrument_var._parameters.par) + +/* Current component name, index, position and orientation */ +/* These macros work because, using class-based functions, "comp" is usually +* the local variable of the active/current component. */ +#define INDEX_CURRENT_COMP (_comp->_index) +#define NAME_CURRENT_COMP (_comp->_name) +#define TYPE_CURRENT_COMP (_comp->_type) +#define POS_A_CURRENT_COMP (_comp->_position_absolute) +#define POS_R_CURRENT_COMP (_comp->_position_relative) +#define ROT_A_CURRENT_COMP (_comp->_rotation_absolute) +#define ROT_R_CURRENT_COMP (_comp->_rotation_relative) + +#define NAME_INSTRUMENT (instrument->_name) + + +/* MCDISPLAY/trace and debugging message sent to stdout */ +#ifdef MC_TRACE_ENABLED +#define DEBUG +#endif + +#ifdef DEBUG +#define DEBUG_INSTR() if(!mcdotrace); else { printf("INSTRUMENT:\n"); printf("Instrument '%s' (%s)\n", instrument_name, instrument_source); } +#define DEBUG_COMPONENT(name,c,t) if(!mcdotrace); else {\ + printf("COMPONENT: \"%s\"\n" \ + "POS: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + name, c.x, c.y, c.z, t[0][0], t[0][1], t[0][2], \ + t[1][0], t[1][1], t[1][2], t[2][0], t[2][1], t[2][2]); \ + printf("Component %30s AT (%g,%g,%g)\n", name, c.x, c.y, c.z); } +#define DEBUG_INSTR_END() if(!mcdotrace); else printf("INSTRUMENT END:\n"); +#define DEBUG_ENTER() if(!mcdotrace); else printf("ENTER:\n"); +#define DEBUG_COMP(c) if(!mcdotrace); else printf("COMP: \"%s\"\n", c); +#define DEBUG_LEAVE() if(!mcdotrace); else printf("LEAVE:\n"); +#define DEBUG_ABSORB() if(!mcdotrace); else printf("ABSORB:\n"); +#else +#define DEBUG_INSTR() +#define DEBUG_COMPONENT(name,c,t) +#define DEBUG_INSTR_END() +#define DEBUG_ENTER() +#define DEBUG_COMP(c) +#define DEBUG_LEAVE() +#define DEBUG_ABSORB() +#endif + +// mcDEBUG_STATE and mcDEBUG_SCATTER are defined by mcstas-r.h and mcxtrace-r.h + + + +#ifdef TEST +#define test_printf printf +#else +#define test_printf while(0) printf +#endif + +/* send MCDISPLAY message to stdout to show gemoetry */ +void mcdis_magnify(char *what); +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2); +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n); +void mcdis_multiline(int count, ...); +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height); +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz); +void mcdis_circle(char *plane, double x, double y, double z, double r); +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz); +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz); +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz); +void mcdis_sphere(double x, double y, double z, double r); + + +/* random number generation. ================================================ */ + +#if RNG_ALG == _RNG_ALG_MT // MT (currently not functional for GPU) +# define MC_RAND_MAX ((uint32_t)0xffffffffUL) +# define RANDSTATE_LEN 1 +# define srandom(seed) mt_srandom_empty() +# define random() mt_random() +# define _random() mt_random() +#elif RNG_ALG == _RNG_ALG_KISS // KISS +# ifndef UINT64_MAX +# define UINT64_MAX ((uint64_t)0xffffffffffffffffULL) +# endif +# define MC_RAND_MAX UINT64_MAX +# define RANDSTATE_LEN 7 +# define srandom(seed) kiss_srandom(_particle->randstate, seed) +# define random() kiss_random(_particle->randstate) +# define _random() kiss_random(state) +#endif + +#pragma acc routine +double _randnorm2(randstate_t* state); + +// Component writer interface +#define randnorm() _randnorm2(_particle->randstate) // NOTE: can't use _randnorm on GPU +#define rand01() _rand01(_particle->randstate) +#define randpm1() _randpm1(_particle->randstate) +#define rand0max(p1) _rand0max(p1, _particle->randstate) +#define randminmax(p1, p2) _randminmax(p1, p2, _particle->randstate) +#define randtriangle() _randtriangle(_particle->randstate) + +// Mersenne Twister rng +uint32_t mt_random(void); +void mt_srandom (uint32_t x); +void mt_srandom_empty(); + +// KISS rng +#pragma acc routine +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed); +#pragma acc routine +uint64_t kiss_random(uint64_t state[7]); + +// Scrambler / hash function +#pragma acc routine seq +randstate_t _hash(randstate_t x); + +// internal RNG (transforms) interface +#pragma acc routine +double _rand01(randstate_t* state); +#pragma acc routine +double _randpm1(randstate_t* state); +#pragma acc routine +double _rand0max(double max, randstate_t* state); +#pragma acc routine +double _randminmax(double min, double max, randstate_t* state); +#pragma acc routine +double _randtriangle(randstate_t* state); + + +#ifdef USE_OPENCL +#include "opencl-lib.h" +#include "opencl-lib.c" +#endif + +#ifndef DANSE +int init(void); +int raytrace(_class_particle*); +int save(FILE *); +int finally(void); +int display(void); +#endif + + +/* GPU related algorithms =================================================== */ + +/* +* Divide-and-conquer strategy for parallel sort absorbed last. +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier); +#endif +long sort_absorb_last_serial(_class_particle* particles, long len); + + +/* simple vector algebra ==================================================== */ + + +#define vec_prod(x, y, z, x1, y1, z1, x2, y2, z2) \ + vec_prod_func(&x, &y, &z, x1, y1, z1, x2, y2, z2) +#pragma acc routine seq +mcstatic void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic double scalar_prod( + double x1, double y1, double z1, double x2, double y2, double z2); + +#pragma acc routine seq +mcstatic void norm_func(double *x, double *y, double *z); +#define NORM(x,y,z) norm_func(&x, &y, &z) + +#pragma acc routine seq +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z); + +/** + * Rotate the vector vx,vy,vz psi radians around the vector ax,ay,az + * and put the result in x,y,z. + */ +#define rotate(x, y, z, vx, vy, vz, phi, ax, ay, az) \ + do { \ + double mcrt_tmpx = (ax), mcrt_tmpy = (ay), mcrt_tmpz = (az); \ + double mcrt_vp, mcrt_vpx, mcrt_vpy, mcrt_vpz; \ + double mcrt_vnx, mcrt_vny, mcrt_vnz, mcrt_vn1x, mcrt_vn1y, mcrt_vn1z; \ + double mcrt_bx, mcrt_by, mcrt_bz; \ + double mcrt_cos, mcrt_sin; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vp = scalar_prod((vx), (vy), (vz), mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_vpx = mcrt_vp*mcrt_tmpx; \ + mcrt_vpy = mcrt_vp*mcrt_tmpy; \ + mcrt_vpz = mcrt_vp*mcrt_tmpz; \ + mcrt_vnx = (vx) - mcrt_vpx; \ + mcrt_vny = (vy) - mcrt_vpy; \ + mcrt_vnz = (vz) - mcrt_vpz; \ + vec_prod(mcrt_bx, mcrt_by, mcrt_bz, \ + mcrt_tmpx, mcrt_tmpy, mcrt_tmpz, mcrt_vnx, mcrt_vny, mcrt_vnz); \ + mcrt_cos = cos((phi)); mcrt_sin = sin((phi)); \ + mcrt_vn1x = mcrt_vnx*mcrt_cos + mcrt_bx*mcrt_sin; \ + mcrt_vn1y = mcrt_vny*mcrt_cos + mcrt_by*mcrt_sin; \ + mcrt_vn1z = mcrt_vnz*mcrt_cos + mcrt_bz*mcrt_sin; \ + (x) = mcrt_vpx + mcrt_vn1x; \ + (y) = mcrt_vpy + mcrt_vn1y; \ + (z) = mcrt_vpz + mcrt_vn1z; \ + } while(0) + +/** + * Mirror (xyz) in the plane given by the point (rx,ry,rz) and normal (nx,ny,nz) + * + * TODO: This define is seemingly never used... + */ +#define mirror(x,y,z,rx,ry,rz,nx,ny,nz) \ + do { \ + double mcrt_tmpx= (nx), mcrt_tmpy = (ny), mcrt_tmpz = (nz); \ + double mcrt_tmpt; \ + NORM(mcrt_tmpx, mcrt_tmpy, mcrt_tmpz); \ + mcrt_tmpt=scalar_prod((rx),(ry),(rz),mcrt_tmpx,mcrt_tmpy,mcrt_tmpz); \ + (x) = rx -2 * mcrt_tmpt*mcrt_rmpx; \ + (y) = ry -2 * mcrt_tmpt*mcrt_rmpy; \ + (z) = rz -2 * mcrt_tmpt*mcrt_rmpz; \ + } while (0) + +#pragma acc routine +Coords coords_set(MCNUM x, MCNUM y, MCNUM z); +#pragma acc routine +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z); +#pragma acc routine +Coords coords_add(Coords a, Coords b); +#pragma acc routine +Coords coords_sub(Coords a, Coords b); +#pragma acc routine +Coords coords_neg(Coords a); +#pragma acc routine +Coords coords_scale(Coords b, double scale); +#pragma acc routine +double coords_sp(Coords a, Coords b); +#pragma acc routine +Coords coords_xp(Coords b, Coords c); +#pragma acc routine +double coords_len(Coords a); +#pragma acc routine seq +void coords_print(Coords a); +#pragma acc routine seq +mcstatic void coords_norm(Coords* c); + +#pragma acc routine seq +void rot_set_rotation(Rotation t, double phx, double phy, double phz); +#pragma acc routine seq +int rot_test_identity(Rotation t); +#pragma acc routine seq +void rot_mul(Rotation t1, Rotation t2, Rotation t3); +#pragma acc routine seq +void rot_copy(Rotation dest, Rotation src); +#pragma acc routine seq +void rot_transpose(Rotation src, Rotation dst); +#pragma acc routine seq +Coords rot_apply(Rotation t, Coords a); + +#pragma acc routine seq +void mccoordschange(Coords a, Rotation t, _class_particle *particle); +#pragma acc routine seq +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz); + +double mcestimate_error(double N, double p1, double p2); +void mcreadparams(void); + +/* this is now in mcstas-r.h and mcxtrace-r.h as the number of state parameters +is no longer equal */ + +_class_particle mcgenstate(void); + +// trajectory/shape intersection routines +#pragma acc routine seq +int inside_rectangle(double, double, double, double); +#pragma acc routine seq +int box_intersect(double *dt_in, double *dt_out, double x, double y, double z, + double vx, double vy, double vz, double dx, double dy, double dz); +#pragma acc routine seq +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h); +#pragma acc routine seq +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r); +// second order equation roots +#pragma acc routine seq +int solve_2nd_order(double *t1, double *t2, + double A, double B, double C); + +// random vector generation to shape +// defines silently introducing _particle as the last argument +#define randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius) \ + _randvec_target_circle(xo, yo, zo, solid_angle, xi, yi, zi, radius, _particle) +#define randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A) \ + _randvec_target_rect_angular(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, _particle) +#define randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order) \ + _randvec_target_rect_real(xo, yo, zo, solid_angle, xi, yi, zi, height, width, A, lx, ly, lz, order, _particle) +// defines forwarding to "inner" functions +#define randvec_target_sphere randvec_target_circle +#define randvec_target_rect(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9) \ + randvec_target_rect_real(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,0,0,0,1) +// headers for randvec +#pragma acc routine seq +void _randvec_target_circle(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double radius, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_angular(double *xo, double *yo, double *zo, + double *solid_angle, double xi, double yi, double zi, double height, + double width, Rotation A, + _class_particle* _particle); +#pragma acc routine seq +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, double height, double width, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle); + + +// this is the main() +int mccode_main(int argc, char *argv[]); + + +#endif /* !MCCODE_H */ + +#ifndef MCCODE_R_IO_H +#define MCCODE_R_IO_H "$Revision$" + +#if (USE_NEXUS == 0) +#undef USE_NEXUS +#endif + +#ifndef CHAR_BUF_LENGTH +#define CHAR_BUF_LENGTH 1024 +#endif + + +/* I/O section part ========================================================= */ + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + + +/* main DETECTOR structure which stores most information to write to data files */ +struct mcdetector_struct { + char filename[CHAR_BUF_LENGTH]; /* file name of monitor */ + double Position[3]; /* position of detector component*/ + char position[CHAR_BUF_LENGTH]; /* position of detector component (string)*/ + Rotation Rotation; /* position of detector component*/ + char options[CHAR_BUF_LENGTH]; /* Monitor_nD style list-mode'options' (string)*/ + char component[CHAR_BUF_LENGTH]; /* component instance name */ + char nexuscomp[CHAR_BUF_LENGTH]; /* component naming in NeXus/HDF case */ + char instrument[CHAR_BUF_LENGTH]; /* instrument name */ + char type[CHAR_BUF_LENGTH]; /* data type, e.g. 0d, 1d, 2d, 3d */ + char user[CHAR_BUF_LENGTH]; /* user name, e.g. HOME */ + char date[CHAR_BUF_LENGTH]; /* date of simulation end/write time */ + char title[CHAR_BUF_LENGTH]; /* title of detector */ + char xlabel[CHAR_BUF_LENGTH]; /* X axis label */ + char ylabel[CHAR_BUF_LENGTH]; /* Y axis label */ + char zlabel[CHAR_BUF_LENGTH]; /* Z axis label */ + char xvar[CHAR_BUF_LENGTH]; /* X variable name */ + char yvar[CHAR_BUF_LENGTH]; /* Y variable name */ + char zvar[CHAR_BUF_LENGTH]; /* Z variable name */ + char ncount[CHAR_BUF_LENGTH]; /* number of events initially generated */ + char limits[CHAR_BUF_LENGTH]; /* X Y Z limits, e.g. [xmin xmax ymin ymax zmin zmax] */ + char variables[CHAR_BUF_LENGTH]; /* variables written into data block */ + char statistics[CHAR_BUF_LENGTH]; /* center, mean and half width along axis */ + char signal[CHAR_BUF_LENGTH]; /* min max and mean of signal (data block) */ + char values[CHAR_BUF_LENGTH]; /* integrated values e.g. [I I_err N] */ + double xmin,xmax; /* min max of axes */ + double ymin,ymax; + double zmin,zmax; + double intensity; /* integrated values for data block */ + double error; + double events; + double min; /* statistics for data block */ + double max; + double mean; + double centerX; /* statistics for axes */ + double halfwidthX; + double centerY; + double halfwidthY; + int rank; /* dimensionaly of monitor, e.g. 0 1 2 3 */ + char istransposed; /* flag to transpose matrix for some formats */ + + long m,n,p; /* dimensions of data block and along axes */ + long date_l; /* same as date, but in sec since 1970 */ + + double *p0, *p1, *p2; /* pointers to saved data, NULL when freed */ + char format[CHAR_BUF_LENGTH]; /* format for file generation */ +}; + +typedef struct mcdetector_struct MCDETECTOR; + +static char *dirname = NULL; /* name of output directory */ +static char *siminfo_name = "mccode"; /* default output sim file name */ +char *mcformat = NULL; /* NULL (default) or a specific format */ + +/* file I/O definitions and function prototypes */ + +#ifndef MC_EMBEDDED_RUNTIME /* the mcstatic variables (from mccode-r.c) */ +extern FILE * siminfo_file; /* handle to the output siminfo file */ +extern int mcgravitation; /* flag to enable gravitation */ +extern int mcdotrace; /* flag to print MCDISPLAY messages */ +#else +mcstatic FILE *siminfo_file = NULL; +#endif + +/* I/O function prototypes ================================================== */ + +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle); + +/* output functions */ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, long n, + double *p0, double *p1, double *p2, char *f, char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, long m, + long n, double *p0, double *p1, double *p2, char *f, + char *c, Coords pos, Rotation rot, int index); +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rot,char* options, int index); + +/* wrappers to output functions, that automatically set NAME and POSITION */ +#define DETECTOR_OUT(p0,p1,p2) mcdetector_out_0D(NAME_CURRENT_COMP,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_0D(t,p0,p1,p2) mcdetector_out_0D(t,p0,p1,p2,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f) \ + mcdetector_out_1D(t,xl,yl,xvar,x1,x2,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) +#define DETECTOR_OUT_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f) \ + mcdetector_out_2D(t,xl,yl,x1,x2,y1,y2,m,n,p0,p1,p2,f,NAME_CURRENT_COMP,POS_A_CURRENT_COMP,ROT_A_CURRENT_COMP,INDEX_CURRENT_COMP) + +#ifdef USE_NEXUS +#include "napi.h" +NXhandle nxhandle; +#endif + +#endif /* ndef MCCODE_R_IO_H */ + +#endif /* MCCODE_R_H */ +/* End of file "mccode-r.h". */ + +/* embedding file "mcstas-r.h" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.h +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system header for McStas. +* +* In order to use this library as an external library, the following variables +* and macros must be declared (see details in the code) +* +* struct mcinputtable_struct mcinputtable[]; +* int mcnumipar; +* char instrument_name[], instrument_source[]; +* int traceenabled, defaultmain; +* extern MCNUM mccomp_storein[]; +* extern MCNUM instrument.counter_AbsorbProp[]; +* extern MCNUM mcScattered; +* #define MCCODE_STRING "the McStas version" +* +* Usage: Automatically embbeded in the c code. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#define MCSTAS_R_H "$Revision$" + +/* Following part is only embedded when not redundent with mcstas.h */ + +#ifndef MCCODE_H + +#define AA2MS 629.622368 /* Convert k[1/AA] to v[m/s] */ +#define MS2AA 1.58825361e-3 /* Convert v[m/s] to k[1/AA] */ +#define K2V AA2MS +#define V2K MS2AA +#define Q2V AA2MS +#define V2Q MS2AA +#define SE2V 437.393377 /* Convert sqrt(E)[meV] to v[m/s] */ +#define VS2E 5.22703725e-6 /* Convert (v[m/s])**2 to E[meV] */ + +#define SCATTER0 do {DEBUG_SCATTER(); SCATTERED++;} while(0) +#define SCATTER SCATTER0 + +#define JUMPTOCOMP(comp) mcneutron->_index = INDEX_COMP(comp); + +#define MAGNET_ON \ + do { \ + mcMagnet = 1; \ + } while(0) + +#define MAGNET_OFF \ + do { \ + mcMagnet = 0; \ + } while(0) + +#define ALLOW_BACKPROP \ + do { \ + allow_backprop = 1; \ + } while(0) + +#define DISALLOW_BACKPROP \ + do { \ + allow_backprop = 0; \ + } while(0) + +#define PROP_MAGNET(dt) \ + do { \ + } while (0) + /* change coordinates from local system to magnet system */ +/* Rotation rotLM, rotTemp; \ + Coords posLM = coords_sub(POS_A_CURRENT_COMP, mcMagnetPos); \ + rot_transpose(ROT_A_CURRENT_COMP, rotTemp); \ + rot_mul(rotTemp, mcMagnetRot, rotLM); \ + mcMagnetPrecession(x, y, z, t, vx, vy, vz, \ + &sx, &sy, &sz, dt, posLM, rotLM); \ + } while(0) +*/ + +#define mcPROP_DT(dt) \ + do { \ + if (mcMagnet && dt > 0) PROP_MAGNET(dt);\ + x += vx*(dt); \ + y += vy*(dt); \ + z += vz*(dt); \ + t += (dt); \ + if (isnan(p) || isinf(p)) { ABSORB; }\ + } while(0) + +/* ADD: E. Farhi, Aug 6th, 2001 PROP_GRAV_DT propagation with acceleration */ +#define PROP_GRAV_DT(dt, Ax, Ay, Az) \ + do { \ + if(dt < 0 && allow_backprop == 0) { ABSORB; }\ + if (mcMagnet) /*printf("Spin precession gravity\n")*/; \ + x += vx*(dt) + (Ax)*(dt)*(dt)/2; \ + y += vy*(dt) + (Ay)*(dt)*(dt)/2; \ + z += vz*(dt) + (Az)*(dt)*(dt)/2; \ + vx += (Ax)*(dt); \ + vy += (Ay)*(dt); \ + vz += (Az)*(dt); \ + t += (dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_DT(dt) \ + do { \ + if(dt < 0 && allow_backprop == 0) { RESTORE=1; ABSORB; }; \ + if (mcgravitation) { Coords mcLocG; double mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + PROP_GRAV_DT(dt, mc_gx, mc_gy, mc_gz); } \ + else mcPROP_DT(dt); \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define PROP_Z0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gz/2, -vz, -z); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); z=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Z0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_Z0 \ + do { \ + double mc_dt; \ + if(vz == 0) { ABSORB; }; \ + mc_dt = -z/vz; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + z = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_X0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gx/2, -vx, -x); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); x=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_X0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define mcPROP_X0 \ + do { \ + double mc_dt; \ + if(vx == 0) { ABSORB; }; \ + mc_dt = -x/vx; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + x = 0; \ + DISALLOW_BACKPROP;\ + } while(0) + +#define PROP_Y0 \ + do { \ + if (mcgravitation) { Coords mcLocG; int mc_ret; \ + double mc_dt, mc_gx, mc_gy, mc_gz; \ + mcLocG = rot_apply(ROT_A_CURRENT_COMP, coords_set(0,-GRAVITY,0)); \ + coords_get(mcLocG, &mc_gx, &mc_gy, &mc_gz); \ + mc_ret = solve_2nd_order(&mc_dt, NULL, -mc_gy/2, -vy, -y); \ + if (mc_ret) {PROP_GRAV_DT(mc_dt, mc_gx, mc_gy, mc_gz); y=0;}\ + else if (allow_backprop == 0 && mc_dt < 0) { ABSORB; }; } \ + else mcPROP_Y0; \ + DISALLOW_BACKPROP;\ + } while(0) + + +#define mcPROP_Y0 \ + do { \ + double mc_dt; \ + if(vy == 0) { ABSORB; }; \ + mc_dt = -y/vy; \ + if(mc_dt < 0 && allow_backprop == 0) { ABSORB; }; \ + mcPROP_DT(mc_dt); \ + y = 0; \ + DISALLOW_BACKPROP; \ + } while(0) + + +#ifdef DEBUG + +#define DEBUG_STATE() if(!mcdotrace); else \ + printf("STATE: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); +#define DEBUG_SCATTER() if(!mcdotrace); else \ + printf("SCATTER: %g, %g, %g, %g, %g, %g, %g, %g, %g, %g, %g\n", \ + x,y,z,vx,vy,vz,t,sx,sy,sz,p); + +#else + +#define DEBUG_STATE() +#define DEBUG_SCATTER() + +#endif + +#endif /* !MCCODE_H */ + +#endif /* MCSTAS_R_H */ +/* End of file "mcstas-r.h". */ + +/* embedding file "mccode-r.c" */ + +/******************************************************************************* +* +* McCode, neutron/xray ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mccode-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y/McXtrace X.Y +* Version: $Revision$ +* +* Runtime system for McStas and McXtrace. +* Embedded within instrument in runtime mode. +* Contains SECTIONS: +* MPI handling (sum, send, recv) +* format definitions +* I/O +* mcdisplay support +* random numbers +* coordinates handling +* vectors math (solve 2nd order, normals, randvec...) +* parameter handling +* signal and main handlers +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + + +/** Include header files to avoid implicit declarations (not allowed on LLVM) */ +#include +#include + +// UNIX specific headers (non-Windows) +#if defined(__unix__) || defined(__APPLE__) +#include +#include +#endif + + +#ifndef DANSE +#ifdef MC_ANCIENT_COMPATIBILITY +int traceenabled = 0; +int defaultmain = 0; +#endif +/* else defined directly in the McCode generated C code */ + +static long mcseed = 0; /* seed for random generator */ +#pragma acc declare create ( mcseed ) +static long mcstartdate = 0; /* start simulation time */ +static int mcdisable_output_files = 0; /* --no-output-files */ +mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ +mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ + /* When -DTOF_TRAIN is defined, the default NTOF + becomes 10, defined below in the + mcparseoptions function body.*/ +mcstatic int mcusedefaults = 0; /* assume default value for all parameters */ +mcstatic int mcdotrace = 0; /* flag for --trace and messages for DISPLAY */ +mcstatic int mcnexus_embed_idf = 0; /* flag to embed xml-formatted IDF file for Mantid */ +#pragma acc declare create ( mcdotrace ) +int mcallowbackprop = 0; /* flag to enable negative/backprop */ + +/* OpenACC-related segmentation parameters: */ +int vecsize = 128; +int numgangs = 7813; +long gpu_innerloop = 2147483647; + +/* Monitor_nD list/buffer-size default */ +/* Starting value may be defined using -DND_BUFFER=N */ +/* Can further be controlled dynamically using --bufsiz input */ +long MONND_BUFSIZ = 10000000; +#ifdef ND_BUFFER +MONND_BUFSIZ = ND_BUFFER; +#endif + + +/* Number of particle histories to simulate. */ +#ifdef NEUTRONICS +mcstatic unsigned long long int mcncount = 1; +mcstatic unsigned long long int mcrun_num = 0; +#else +#ifdef MCDEFAULT_NCOUNT +mcstatic unsigned long long int mcncount = MCDEFAULT_NCOUNT; +#else +mcstatic unsigned long long int mcncount = 1000000; +#endif +#pragma acc declare create ( mcncount ) +mcstatic unsigned long long int mcrun_num = 0; +#pragma acc declare create ( mcrun_num ) +#endif /* NEUTRONICS */ + +#else +#include "mcstas-globals.h" +#endif /* !DANSE */ + +#ifndef NX_COMPRESSION +#define NX_COMPRESSION NX_COMP_NONE +#endif + +/* String nullification on GPU and other replacements */ +#ifdef OPENACC +int noprintf() { + return 0; +} + +int str_comp(char *str1, char *str2) { + while (*str1 && *str1 == *str2) { + str1++; + str2++; + } + return (*str1 - *str2); +} + +size_t str_len(const char *s) +{ + size_t len = 0; + if(s != NULL) + { + while(*s != '\0') + { + ++len; + ++s; + } + } + return len; +} + +#endif + +/* SECTION: Predefine (component) parameters ================================= */ + +int nans_match(double a, double b){ + return (*(uint64_t*)&a == *(uint64_t*)&b); +} +int is_unset(double x){ + return nans_match(x, UNSET); +} +int is_set(double x){ + return !nans_match(x, UNSET); +} +int is_valid(double x){ + return !isnan(x)||is_unset(x); +} +int all_unset(int n, ...){ + va_list ptr; + va_start(ptr, n); + int ret=1; + for (int i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Allreduce((double*)(sbuf+offset), (double*)(rbuf+offset), + length, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + for (i=0; i count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Send((void*)((char*)sbuf+offset*dsize), length, dtype, dest, tag++, MPI_COMM_WORLD) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Send */ + +/******************************************************************************* +* mc_MPI_Recv: Receives arrays from MPI nodes by blocks to avoid buffer limit +* the buffer must have been allocated previously. +*******************************************************************************/ +int mc_MPI_Recv(void *sbuf, + long count, MPI_Datatype dtype, + int source) +{ + int dsize; + long offset=0; + int tag=1; + int length=MPI_REDUCE_BLOCKSIZE; /* defined in mccode-r.h */ + + if (!sbuf || count <= 0) return(MPI_SUCCESS); /* nothing to recv */ + MPI_Type_size(dtype, &dsize); + + while (offset < count) { + if (offset+length > count-1) length=count-offset; + else length=MPI_REDUCE_BLOCKSIZE; + if (MPI_Recv((void*)((char*)sbuf+offset*dsize), length, dtype, source, tag++, + MPI_COMM_WORLD, MPI_STATUS_IGNORE) != MPI_SUCCESS) + return MPI_ERR_COUNT; + offset += length; + } + + return MPI_SUCCESS; +} /* mc_MPI_Recv */ + +#endif /* USE_MPI */ + +/* SECTION: parameters handling ============================================= */ + +/* Instrument input parameter type handling. */ +/******************************************************************************* +* mcparm_double: extract double value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_double(char *s, void *vptr) +{ + char *p; + double *v = (double *)vptr; + + if (!s) { *v = 0; return(1); } + *v = strtod(s, &p); + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_double: display parameter type double +*******************************************************************************/ +static char * +mcparminfo_double(char *parmname) +{ + return "double"; +} + +/******************************************************************************* +* mcparmerror_double: display error message when failed extract double +*******************************************************************************/ +static void +mcparmerror_double(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for floating point parameter %s (mcparmerror_double)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_double: convert double to string +*******************************************************************************/ +static void +mcparmprinter_double(char *f, void *vptr) +{ + double *v = (double *)vptr; + sprintf(f, "%g", *v); +} + +/******************************************************************************* +* mcparm_int: extract int value from 's' into 'vptr' +*******************************************************************************/ +static int +mcparm_int(char *s, void *vptr) +{ + char *p; + int *v = (int *)vptr; + long x; + + if (!s) { *v = 0; return(1); } + *v = 0; + x = strtol(s, &p, 10); + if(x < INT_MIN || x > INT_MAX) + return 0; /* Under/overflow */ + *v = x; + if(*s == '\0' || (p != NULL && *p != '\0') || errno == ERANGE) + return 0; /* Failed */ + else + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_int: display parameter type int +*******************************************************************************/ +static char * +mcparminfo_int(char *parmname) +{ + return "int"; +} + +/******************************************************************************* +* mcparmerror_int: display error message when failed extract int +*******************************************************************************/ +static void +mcparmerror_int(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for integer parameter %s (mcparmerror_int)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_int: convert int to string +*******************************************************************************/ +static void +mcparmprinter_int(char *f, void *vptr) +{ + int *v = (int *)vptr; + sprintf(f, "%d", *v); +} + +/******************************************************************************* +* mcparm_string: extract char* value from 's' into 'vptr' (copy) +*******************************************************************************/ +static int +mcparm_string(char *s, void *vptr) +{ + char **v = (char **)vptr; + if (!s) { *v = NULL; return(1); } + *v = (char *)malloc(strlen(s) + 1); + if(*v == NULL) + { + exit(-fprintf(stderr, "Error: Out of memory %li (mcparm_string).\n", (long)strlen(s) + 1)); + } + strcpy(*v, s); + return 1; /* Success */ +} + +/******************************************************************************* +* mcparminfo_string: display parameter type string +*******************************************************************************/ +static char * +mcparminfo_string(char *parmname) +{ + return "string"; +} + +/******************************************************************************* +* mcparmerror_string: display error message when failed extract string +*******************************************************************************/ +static void +mcparmerror_string(char *parm, char *val) +{ + fprintf(stderr, "Error: Invalid value '%s' for string parameter %s (mcparmerror_string)\n", + val, parm); +} + +/******************************************************************************* +* mcparmprinter_string: convert string to string (including esc chars) +*******************************************************************************/ +static void +mcparmprinter_string(char *f, void *vptr) +{ + char **v = (char **)vptr; + char *p; + + if (!*v) { *f='\0'; return; } + strcpy(f, ""); + for(p = *v; *p != '\0'; p++) + { + switch(*p) + { + case '\n': + strcat(f, "\\n"); + break; + case '\r': + strcat(f, "\\r"); + break; + case '"': + strcat(f, "\\\""); + break; + case '\\': + strcat(f, "\\\\"); + break; + default: + strncat(f, p, 1); + } + } + /* strcat(f, "\""); */ +} /* mcparmprinter_string */ + +/* now we may define the parameter structure, using previous functions */ +static struct + { + int (*getparm)(char *, void *); + char * (*parminfo)(char *); + void (*error)(char *, char *); + void (*printer)(char *, void *); +} mcinputtypes[] = { + { + mcparm_int, mcparminfo_int, mcparmerror_int, + mcparmprinter_int + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_string, mcparminfo_string, mcparmerror_string, + mcparmprinter_string + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + }, { + mcparm_double, mcparminfo_double, mcparmerror_double, + mcparmprinter_double + } +}; + +/******************************************************************************* +* mcestimate_error: compute sigma from N,p,p2 in Gaussian large numbers approx +*******************************************************************************/ +double mcestimate_error(double N, double p1, double p2) +{ + double pmean, n1; + if(N <= 1) + return p1; + pmean = p1 / N; + n1 = N - 1; + /* Note: underflow may cause p2 to become zero; the fabs() below guards + against this. */ + return sqrt((N/n1)*fabs(p2 - pmean*pmean)); +} + +double (*mcestimate_error_p) + (double V2, double psum, double p2sum)=mcestimate_error; + +/* ========================================================================== */ + +/* MCCODE_R_IO_C */ + +/* ========================================================================== */ + +#ifndef MCCODE_R_IO_C +#define MCCODE_R_IO_C "$Revision$" + +/* SECTION: file i/o handling ================================================ */ + +#ifndef HAVE_STRCASESTR +// from msysgit: https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c +char *strcasestr(const char *haystack, const char *needle) +{ + int nlen = strlen(needle); + int hlen = strlen(haystack) - nlen + 1; + int i; + + for (i = 0; i < hlen; i++) { + int j; + for (j = 0; j < nlen; j++) { + unsigned char c1 = haystack[i+j]; + unsigned char c2 = needle[j]; + if (toupper(c1) != toupper(c2)) + goto next; + } + return (char *) haystack + i; + next: + ; + } + return NULL; +} + + +#endif +#ifndef HAVE_STRCASECMP +int strcasecmp( const char *s1, const char *s2 ) +{ + int c1, c2; + do { + c1 = tolower( (unsigned char) *s1++ ); + c2 = tolower( (unsigned char) *s2++ ); + } while (c1 == c2 && c1 != 0); + return c2 > c1 ? -1 : c1 > c2; +} +#endif + +#ifndef STRACPY +/* this is a replacement to strncpy, but ensures that the copy ends with NULL */ +/* http://stracpy.blogspot.fr/2011/04/stracpy-strncpy-replacement.html */ +#define STRACPY +char *stracpy(char *destination, const char *source, size_t amount) +{ + if (!destination || !source || !amount) return(NULL); + while(amount--) + if((*destination++ = *source++) == '\0') break; + *destination = '\0'; + return destination; +} +#endif + +/******************************************************************************* +* mcfull_file: allocates a full file name=dirname+file. Catenate extension if missing. +*******************************************************************************/ +char *mcfull_file(char *name, char *ext) +{ + int dirlen=0; + char *mem =NULL; + + dirlen = dirname ? strlen(dirname) : 0; + mem = (char*)malloc(dirlen + strlen(name) + CHAR_BUF_LENGTH); + if(!mem) { + exit(-fprintf(stderr, "Error: Out of memory %li (mcfull_file)\n", (long)(dirlen + strlen(name) + 256))); + } + strcpy(mem, ""); + + /* prepend directory name to path if name does not contain a path */ + if (dirlen > 0 && !strchr(name, MC_PATHSEP_C)) { + strcat(mem, dirname); + strcat(mem, MC_PATHSEP_S); + } /* dirlen */ + + strcat(mem, name); + if (!strchr(name, '.') && ext && strlen(ext)) + { /* add extension if not in file name already */ + strcat(mem, "."); + strcat(mem, ext); + } + return(mem); +} /* mcfull_file */ + +/******************************************************************************* +* mcnew_file: opens a new file within dirname if non NULL +* the file is opened in "a" (append, create if does not exist) +* the extension 'ext' is added if the file name does not include one. +* the last argument is set to 0 if file did not exist, else to 1. +*******************************************************************************/ +FILE *mcnew_file(char *name, char *ext, int *exists) +{ + char *mem; + FILE *file=NULL; + + if (!name || strlen(name) == 0 || mcdisable_output_files) return(NULL); + + mem = mcfull_file(name, ext); /* create dirname/name.ext */ + + /* check for existence */ + file = fopen(mem, "r"); /* for reading -> fails if does not exist */ + if (file) { + fclose(file); + *exists=1; + } else + *exists=0; + + /* open the file for writing/appending */ +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + /* NXhandle nxhandle is defined in the .h with USE_NEXUS */ + NXaccess mode = (*exists ? NXACC_CREATE5 | NXACC_RDWR : NXACC_CREATE5); + + if (NXopen(mem, mode, &nxhandle) != NX_OK) + file = NULL; + else + file = (FILE*)&nxhandle; /* to make it non NULL */ + } else +#endif + file = fopen(mem, "a+"); + + if(!file) + fprintf(stderr, "Warning: could not open output file '%s' for %s (mcnew_file)\n", + mem, *exists ? "append" : "create"); + free(mem); + + return file; +} /* mcnew_file */ + +/******************************************************************************* +* mcdetector_statistics: compute detector statistics, error bars, [x I I_err N] 1D +* RETURN: updated detector structure +* Used by: detector_import +*******************************************************************************/ +MCDETECTOR mcdetector_statistics( + MCDETECTOR detector) +{ + + if (!detector.p1 || !detector.m) + return(detector); + + /* compute statistics and update MCDETECTOR structure ===================== */ + double sum_z = 0, min_z = 0, max_z = 0; + double fmon_x =0, smon_x = 0, fmon_y =0, smon_y=0, mean_z=0; + double Nsum=0, P2sum=0; + + double sum_xz = 0, sum_yz = 0, sum_x = 0, sum_y = 0, sum_x2z = 0, sum_y2z = 0; + int i,j; + char hasnan=0, hasinf=0; + char israw = ((char*)strcasestr(detector.format,"raw") != NULL); + double *this_p1=NULL; /* new 1D McCode array [x I E N]. Freed after writing data */ + + /* if McCode/PGPLOT and rank==1 we create a new m*4 data block=[x I E N] */ + if (detector.rank == 1 && strcasestr(detector.format,"McCode")) { + this_p1 = (double *)calloc(detector.m*detector.n*detector.p*4, sizeof(double)); + if (!this_p1) + exit(-fprintf(stderr, "Error: Out of memory creating %zi 1D " MCCODE_STRING " data set for file '%s' (detector_import)\n", + detector.m*detector.n*detector.p*4*sizeof(double*), detector.filename)); + } + + max_z = min_z = detector.p1[0]; + + /* compute sum and moments (not for lists) */ + if (!strcasestr(detector.format,"list") && detector.m) + for(j = 0; j < detector.n*detector.p; j++) + { + for(i = 0; i < detector.m; i++) + { + double x,y,z; + double N, E; + long index= !detector.istransposed ? i*detector.n*detector.p + j : i+j*detector.m; + char hasnaninf=0; + + if (detector.m) + x = detector.xmin + (i + 0.5)/detector.m*(detector.xmax - detector.xmin); + else x = 0; + if (detector.n && detector.p) + y = detector.ymin + (j + 0.5)/detector.n/detector.p*(detector.ymax - detector.ymin); + else y = 0; + z = detector.p1[index]; + N = detector.p0 ? detector.p0[index] : 1; + E = detector.p2 ? detector.p2[index] : 0; + if (detector.p2 && !israw) + detector.p2[index] = (*mcestimate_error_p)(detector.p0[index],detector.p1[index],detector.p2[index]); /* set sigma */ + + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + /* fill-in 1D McCode array [x I E N] */ + this_p1[index*4] = x; + this_p1[index*4+1] = z; + this_p1[index*4+2] = detector.p2 ? detector.p2[index] : 0; + this_p1[index*4+3] = N; + } + + if (isnan(z) || isnan(E) || isnan(N)) hasnaninf=hasnan=1; + if (isinf(z) || isinf(E) || isinf(N)) hasnaninf=hasinf=1; + + /* compute stats integrals */ + if (!hasnaninf) { + sum_xz += x*z; + sum_yz += y*z; + sum_x += x; + sum_y += y; + sum_z += z; + sum_x2z += x*x*z; + sum_y2z += y*y*z; + if (z > max_z) max_z = z; + if (z < min_z) min_z = z; + + Nsum += N; + P2sum += E; + } + + } + } /* for j */ + + /* compute 1st and 2nd moments. For lists, sum_z=0 so this is skipped. */ + if (sum_z && detector.n*detector.m*detector.p) + { + fmon_x = sum_xz/sum_z; + fmon_y = sum_yz/sum_z; + smon_x = sum_x2z/sum_z-fmon_x*fmon_x; smon_x = smon_x > 0 ? sqrt(smon_x) : 0; + smon_y = sum_y2z/sum_z-fmon_y*fmon_y; smon_y = smon_y > 0 ? sqrt(smon_y) : 0; + mean_z = sum_z/detector.n/detector.m/detector.p; + } + /* store statistics into detector */ + detector.intensity = sum_z; + detector.error = Nsum ? (*mcestimate_error_p)(Nsum, sum_z, P2sum) : 0; + detector.events = Nsum; + detector.min = min_z; + detector.max = max_z; + detector.mean = mean_z; + detector.centerX = fmon_x; + detector.halfwidthX= smon_x; + detector.centerY = fmon_y; + detector.halfwidthY= smon_y; + + /* if McCode/PGPLOT and rank==1 replace p1 with new m*4 1D McCode and clear others */ + if (detector.rank == 1 && this_p1 && strcasestr(detector.format,"McCode")) { + + detector.p1 = this_p1; + detector.n = detector.m; detector.m = 4; + detector.p0 = detector.p2 = NULL; + detector.istransposed = 1; + } + + if (detector.n*detector.m*detector.p > 1) + snprintf(detector.signal, CHAR_BUF_LENGTH, + "Min=%g; Max=%g; Mean=%g;", detector.min, detector.max, detector.mean); + else + strcpy(detector.signal, "None"); + snprintf(detector.values, CHAR_BUF_LENGTH, + "%g %g %g", detector.intensity, detector.error, detector.events); + + switch (detector.rank) { + case 1: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g;", + detector.centerX, detector.halfwidthX); break; + case 2: + case 3: snprintf(detector.statistics, CHAR_BUF_LENGTH, "X0=%g; dX=%g; Y0=%g; dY=%g;", + detector.centerX, detector.halfwidthX, detector.centerY, detector.halfwidthY); + break; + default: strcpy(detector.statistics, "None"); + } + + if (hasnan) + printf("WARNING: Nan detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + if (hasinf) + printf("WARNING: Inf detected in component/file %s %s\n", + detector.component, strlen(detector.filename) ? detector.filename : ""); + + return(detector); + +} /* mcdetector_statistics */ + +/******************************************************************************* +* detector_import: build detector structure, merge non-lists from MPI +* compute basic stat, write "Detector:" line +* RETURN: detector structure. Invalid data if detector.p1 == NULL +* Invalid detector sets m=0 and filename="" +* Simulation data sets m=0 and filename=siminfo_name +* This function is equivalent to the old 'mcdetector_out', returning a structure +*******************************************************************************/ +MCDETECTOR detector_import( + char *format, + char *component, char *title, + long m, long n, long p, + char *xlabel, char *ylabel, char *zlabel, + char *xvar, char *yvar, char *zvar, + double x1, double x2, double y1, double y2, double z1, double z2, + char *filename, + double *p0, double *p1, double *p2, + Coords position, Rotation rotation, int index) +{ + time_t t; /* for detector.date */ + long date_l; /* date as a long number */ + char istransposed=0; + char c[CHAR_BUF_LENGTH]; /* temp var for signal label */ + + MCDETECTOR detector; + + /* build MCDETECTOR structure ============================================= */ + /* make sure we do not have NULL for char fields */ + + /* these also apply to simfile */ + strncpy (detector.filename, filename ? filename : "", CHAR_BUF_LENGTH); + strncpy (detector.format, format ? format : "McCode" , CHAR_BUF_LENGTH); + /* add extension if missing */ + if (strlen(detector.filename) && !strchr(detector.filename, '.')) + { /* add extension if not in file name already */ + strcat(detector.filename, ".dat"); + } + strncpy (detector.component, component ? component : MCCODE_STRING " component", CHAR_BUF_LENGTH); + #ifdef USE_NEXUS + char pref[5]; + if (index-1 < 10) { + sprintf(pref,"000"); + } else if (index-1 < 100) { + sprintf(pref,"00"); + } else if (index-1 < 1000) { + sprintf(pref,"0"); + } else if (index-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(detector.nexuscomp,"%s%d_%s",pref,index-1,detector.component); + #endif + + snprintf(detector.instrument, CHAR_BUF_LENGTH, "%s (%s)", instrument_name, instrument_source); + snprintf(detector.user, CHAR_BUF_LENGTH, "%s on %s", + getenv("USER") ? getenv("USER") : MCCODE_NAME, + getenv("HOST") ? getenv("HOST") : "localhost"); + time(&t); /* get current write time */ + date_l = (long)t; /* same but as a long */ + snprintf(detector.date, CHAR_BUF_LENGTH, "%s", ctime(&t)); + if (strlen(detector.date)) detector.date[strlen(detector.date)-1] = '\0'; /* remove last \n in date */ + detector.date_l = date_l; + + if (!mcget_run_num() || mcget_run_num() >= mcget_ncount()) + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%llu", mcget_ncount() +#ifdef USE_MPI +*mpi_node_count +#endif + ); + else + snprintf(detector.ncount, CHAR_BUF_LENGTH, "%g/%g", (double)mcget_run_num(), (double)mcget_ncount()); + + detector.p0 = p0; + detector.p1 = p1; + detector.p2 = p2; + + /* handle transposition (not for NeXus) */ + if (!strcasestr(detector.format, "NeXus")) { + if (m<0 || n<0 || p<0) istransposed = !istransposed; + if (strcasestr(detector.format, "transpose")) istransposed = !istransposed; + if (istransposed) { /* do the swap once for all */ + long i=m; m=n; n=i; + } + } + + m=labs(m); n=labs(n); p=labs(p); /* make sure dimensions are positive */ + detector.istransposed = istransposed; + + /* determine detector rank (dimensionality) */ + if (!m || !n || !p || !p1) detector.rank = 4; /* invalid: exit with m=0 filename="" */ + else if (m*n*p == 1) detector.rank = 0; /* 0D */ + else if (n == 1 || m == 1) detector.rank = 1; /* 1D */ + else if (p == 1) detector.rank = 2; /* 2D */ + else detector.rank = 3; /* 3D */ + + /* from rank, set type */ + switch (detector.rank) { + case 0: strcpy(detector.type, "array_0d"); m=n=p=1; break; + case 1: snprintf(detector.type, CHAR_BUF_LENGTH, "array_1d(%ld)", m*n*p); m *= n*p; n=p=1; break; + case 2: snprintf(detector.type, CHAR_BUF_LENGTH, "array_2d(%ld, %ld)", m, n*p); n *= p; p=1; break; + case 3: snprintf(detector.type, CHAR_BUF_LENGTH, "array_3d(%ld, %ld, %ld)", m, n, p); break; + default: m=0; strcpy(detector.type, ""); strcpy(detector.filename, "");/* invalid */ + } + + detector.m = m; + detector.n = n; + detector.p = p; + + /* these only apply to detector files ===================================== */ + + detector.Position[0]=position.x; + detector.Position[1]=position.y; + detector.Position[2]=position.z; + rot_copy(detector.Rotation,rotation); + snprintf(detector.position, CHAR_BUF_LENGTH, "%g %g %g", position.x, position.y, position.z); + /* may also store actual detector orientation in the future */ + + strncpy(detector.title, title && strlen(title) ? title : component, CHAR_BUF_LENGTH); + strncpy(detector.xlabel, xlabel && strlen(xlabel) ? xlabel : "X", CHAR_BUF_LENGTH); /* axis labels */ + strncpy(detector.ylabel, ylabel && strlen(ylabel) ? ylabel : "Y", CHAR_BUF_LENGTH); + strncpy(detector.zlabel, zlabel && strlen(zlabel) ? zlabel : "Z", CHAR_BUF_LENGTH); + strncpy(detector.xvar, xvar && strlen(xvar) ? xvar : "x", CHAR_BUF_LENGTH); /* axis variables */ + strncpy(detector.yvar, yvar && strlen(yvar) ? yvar : detector.xvar, CHAR_BUF_LENGTH); + strncpy(detector.zvar, zvar && strlen(zvar) ? zvar : detector.yvar, CHAR_BUF_LENGTH); + + /* set "variables" as e.g. "I I_err N" */ + strcpy(c, "I "); + if (strlen(detector.zvar)) strncpy(c, detector.zvar,32); + else if (strlen(detector.yvar)) strncpy(c, detector.yvar,32); + else if (strlen(detector.xvar)) strncpy(c, detector.xvar,32); + + if (detector.rank == 1) + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s %s_err N", detector.xvar, c, c); + else + snprintf(detector.variables, CHAR_BUF_LENGTH, "%s %s_err N", c, c); + + /* limits */ + detector.xmin = x1; + detector.xmax = x2; + detector.ymin = y1; + detector.ymax = y2; + detector.zmin = z1; + detector.zmax = z2; + if (abs(detector.rank) == 1) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g", x1, x2); + else if (detector.rank == 2) + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g", x1, x2, y1, y2); + else + snprintf(detector.limits, CHAR_BUF_LENGTH, "%g %g %g %g %g %g", x1, x2, y1, y2, z1, z2); + + /* if MPI and nodes_nb > 1: reduce data sets when using MPI =============== */ +#ifdef USE_MPI + if (!strcasestr(detector.format,"list") && mpi_node_count > 1 && m) { + /* we save additive data: reduce everything into mpi_node_root */ + if (p0) mc_MPI_Sum(p0, m*n*p); + if (p1) mc_MPI_Sum(p1, m*n*p); + if (p2) mc_MPI_Sum(p2, m*n*p); + if (!p0) { /* additive signal must be then divided by the number of nodes */ + int i; + for (i=0; i CHAR_BUF_LENGTH) break; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(Parameters) + strlen(ThisParam) + 1 >= CHAR_BUF_LENGTH) break; + strcat(Parameters, ThisParam); + } + + /* output data ============================================================ */ + if (f != stdout) + fprintf(f, "%sFile: %s%c%s\n", pre, dirname, MC_PATHSEP_C, siminfo_name); + else + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + + fprintf(f, "%sSource: %s\n", pre, instrument_source); + fprintf(f, "%sParameters: %s\n", pre, Parameters); + + fprintf(f, "%sTrace_enabled: %s\n", pre, traceenabled ? "yes" : "no"); + fprintf(f, "%sDefault_main: %s\n", pre, defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "yes"); +#else + fprintf(f, "%sEmbedded_runtime: %s\n", pre, "no"); +#endif + + fflush(f); +} /* mcinfo_out */ + +/******************************************************************************* +* mcruninfo_out: output simulation tags/info (both in SIM and data files) +* Used in: siminfo_init (ascii case), mcdetector_out_xD_ascii +*******************************************************************************/ +static void mcruninfo_out(char *pre, FILE *f) +{ + int i; + char Parameters[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + fprintf(f, "%sFormat: %s%s\n", pre, + mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME, + mcformat && strcasestr(mcformat,"McCode") ? " with text headers" : ""); + fprintf(f, "%sURL: %s\n", pre, "http://www.mccode.org"); + fprintf(f, "%sCreator: %s\n", pre, MCCODE_STRING); + fprintf(f, "%sInstrument: %s\n", pre, instrument_source); + fprintf(f, "%sNcount: %llu\n", pre, mcget_ncount()); + fprintf(f, "%sTrace: %s\n", pre, mcdotrace ? "yes" : "no"); + fprintf(f, "%sGravitation: %s\n", pre, mcgravitation ? "yes" : "no"); + #ifdef TOF_TRAIN + fprintf(f, "%sTOF_TRAIN: %d\n", pre, NTOF); + #endif + snprintf(Parameters, CHAR_BUF_LENGTH, "%ld", mcseed); + fprintf(f, "%sSeed: %s\n", pre, Parameters); + fprintf(f, "%sDirectory: %s\n", pre, dirname ? dirname : "."); +#ifdef USE_MPI + if (mpi_node_count > 1) + fprintf(f, "%sNodes: %i\n", pre, mpi_node_count); +#endif + + // TODO Consider replacing this by a a call to `mcparameterinfo_out(pre+"Param: ", f)` + /* output parameter string ================================================ */ + for(i = 0; i < numipar; i++) { + if (mcinputtable[i].par){ + /* Parameters with a default value */ + if(mcinputtable[i].val && strlen(mcinputtable[i].val)){ + (*mcinputtypes[mcinputtable[i].type].printer)(Parameters, mcinputtable[i].par); + fprintf(f, "%sParam: %s=%s\n", pre, mcinputtable[i].name, Parameters); + /* ... and those without */ + }else{ + fprintf(f, "%sParam: %s=NULL\n", pre, mcinputtable[i].name); + } + } + } + fflush(f); +} /* mcruninfo_out */ + +/******************************************************************************* + * @brief Print parameter information to the specified file + * @param pre any beginning-of-line padding + * @param f the output file + */ +static void mcparameterinfo_out(char * pre, FILE *f){ + if (!f || mcdisable_output_files) return; + + unsigned int nchar = 4; + for (int i=0; i < numipar; ++i){ + if (mcinputtable[i].par && mcinputtable[i].val && strlen(mcinputtable[i].val) > nchar) + nchar = strlen(mcinputtable[i].val); + } + char * buffer = calloc(nchar+1, sizeof(char)); + + if (!buffer) { + exit(1); + } + + for (int i=0; i < numipar; ++i) { + if (mcinputtable[i].par) { + char * name = mcinputtable[i].name; + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + mcinputtypes[mcinputtable[i].type].printer(buffer, mcinputtable[i].par); + } else { + strcpy(buffer, "NULL"); + } + if (strlen(mcinputtable[i].unit)){ + //fprintf(f, "%s%s %s (\"%s\") = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + fprintf(f, "%s%s %s/\"%s\" = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, mcinputtable[i].unit, buffer); + } else { + fprintf(f, "%s%s %s = %s\n", pre, mcinputtypes[mcinputtable[i].type].parminfo(name), name, buffer); + } + } + } + + free(buffer); +} + +/******************************************************************************* +* siminfo_out: wrapper to fprintf(siminfo_file) +*******************************************************************************/ +void siminfo_out(char *format, ...) +{ + va_list ap; + + if(siminfo_file && !mcdisable_output_files) + { + va_start(ap, format); + vfprintf(siminfo_file, format, ap); + va_end(ap); + } +} /* siminfo_out */ + + +/******************************************************************************* +* mcdatainfo_out: output detector header +* mcdatainfo_out(prefix, file_handle, detector) writes info to data file +*******************************************************************************/ +static void +mcdatainfo_out(char *pre, FILE *f, MCDETECTOR detector) +{ + if (!f || !detector.m || mcdisable_output_files) return; + + /* output data ============================================================ */ + fprintf(f, "%sDate: %s (%li)\n", pre, detector.date, detector.date_l); + fprintf(f, "%stype: %s\n", pre, detector.type); + fprintf(f, "%sSource: %s\n", pre, detector.instrument); + fprintf(f, "%scomponent: %s\n", pre, detector.component); + fprintf(f, "%sposition: %s\n", pre, detector.position); + + fprintf(f, "%stitle: %s\n", pre, detector.title); + fprintf(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "%sNcount: %s\n" : + "%sratio: %s\n", pre, detector.ncount); + + if (strlen(detector.filename)) { + fprintf(f, "%sfilename: %s\n", pre, detector.filename); + } + + fprintf(f, "%sstatistics: %s\n", pre, detector.statistics); + fprintf(f, "%ssignal: %s\n", pre, detector.signal); + fprintf(f, "%svalues: %s\n", pre, detector.values); + + if (detector.rank >= 1) + { + fprintf(f, "%sxvar: %s\n", pre, detector.xvar); + fprintf(f, "%syvar: %s\n", pre, detector.yvar); + fprintf(f, "%sxlabel: %s\n", pre, detector.xlabel); + fprintf(f, "%sylabel: %s\n", pre, detector.ylabel); + if (detector.rank > 1) { + fprintf(f, "%szvar: %s\n", pre, detector.zvar); + fprintf(f, "%szlabel: %s\n", pre, detector.zlabel); + } + } + + fprintf(f, + abs(detector.rank)==1 ? + "%sxlimits: %s\n" : + "%sxylimits: %s\n", pre, detector.limits); + fprintf(f, "%svariables: %s\n", pre, + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + fflush(f); + +} /* mcdatainfo_out */ + +/* mcdetector_out_array_ascii: output a single array to a file + * m: columns + * n: rows + * p: array + * f: file handle (already opened) + */ +static void mcdetector_out_array_ascii(long m, long n, double *p, FILE *f, char istransposed) +{ + if(f) + { + int i,j; + for(j = 0; j < n; j++) + { + for(i = 0; i < m; i++) + { + fprintf(f, "%.10g ", p[!istransposed ? i*n + j : j*m+i]); + } + fprintf(f,"\n"); + } + } +} /* mcdetector_out_array_ascii */ + +/******************************************************************************* +* mcdetector_out_0D_ascii: called by mcdetector_out_0D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + /* Write data set information to simulation description file. */ + MPI_MASTER( + siminfo_out("\nbegin data\n"); // detector.component + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.component, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* write I I_err N */ + fprintf(outfile, "%g %g %g\n", + detector.intensity, detector.error, detector.events); + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); +} /* mcdetector_out_0D_ascii */ + +/******************************************************************************* +* mcdetector_out_1D_ascii: called by mcdetector_out_1D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write data file header and entry in simulation description file */ + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + /* output the 1D array columns */ + mcdetector_out_array_ascii(detector.m, detector.n, detector.p1, outfile, detector.istransposed); + + fclose(outfile); + } + ); /* MPI_MASTER */ + return(detector); + +} /* mcdetector_out_1D_ascii */ + +/******************************************************************************* +* mcdetector_out_2D_ascii: called by mcdetector_out_2D for ascii output +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_ascii(MCDETECTOR detector) +{ + int exists=0; + FILE *outfile = NULL; + + MPI_MASTER( + /* Loop over array elements, writing to file. */ + /* Don't write if filename is NULL: mcnew_file handles this (return NULL) */ + outfile = mcnew_file(detector.filename, "dat", &exists); + if(outfile) + { + /* write header only if file has just been created (not appending) */ + if (!exists) { + /* Write data set information to simulation description file. */ + siminfo_out("\nbegin data\n"); // detector.filename + mcdatainfo_out(" ", siminfo_file, detector); + siminfo_out("end data\n"); + + mcruninfo_out( "# ", outfile); + mcdatainfo_out("# ", outfile, detector); + } + /* Add # Data entry for any write to the file (e.g. via -USR2, see GitHub issue #2174 ) */ + fprintf(outfile, "# Data [%s/%s] %s:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p1, + outfile, detector.istransposed); + if (detector.p2) { + fprintf(outfile, "# Errors [%s/%s] %s_err:\n", detector.component, detector.filename, detector.zvar); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p2, + outfile, detector.istransposed); + } + if (detector.p0) { + fprintf(outfile, "# Events [%s/%s] N:\n", detector.component, detector.filename); + mcdetector_out_array_ascii(detector.m, detector.n*detector.p, detector.p0, + outfile, detector.istransposed); + } + fclose(outfile); + + if (!exists) { + if (strcasestr(detector.format, "list")) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } + } /* if outfile */ + ); /* MPI_MASTER */ +#ifdef USE_MPI + if (strcasestr(detector.format, "list") && mpi_node_count > 1) { + int node_i=0; + /* loop along MPI nodes to write sequentially */ + for(node_i=0; node_i strlen(original)) n = strlen(original); + else original += strlen(original)-n; + strncpy(valid, original, n); + + for (i=0; i < n; i++) + { + if ( (valid[i] > 122) + || (valid[i] < 32) + || (strchr("!\"#$%&'()*+,-.:;<=>?@[\\]^`/ \n\r\t", valid[i]) != NULL) ) + { + if (i) valid[i] = '_'; else valid[i] = 'm'; + } + } + valid[i] = '\0'; + + return(valid); +} /* strcpy_valid */ + +/* end ascii output section ================================================= */ + + + + + + + +#ifdef USE_NEXUS + +/* ========================================================================== */ + +/* NeXus output */ + +/* ========================================================================== */ + +#define nxprintf(...) nxstr('d', __VA_ARGS__) +#define nxprintattr(...) nxstr('a', __VA_ARGS__) + +/******************************************************************************* +* nxstr: output a tag=value data set (char) in NeXus/current group +* when 'format' is larger that 1024 chars it is used as value for the 'tag' +* else the value is assembled with format and following arguments. +* type='d' -> data set +* 'a' -> attribute for current data set +*******************************************************************************/ +static int nxstr(char type, NXhandle *f, char *tag, char *format, ...) +{ + va_list ap; + char value[CHAR_BUF_LENGTH]; + int i; + int ret=NX_OK; + + if (!tag || !format || !strlen(tag) || !strlen(format)) return(NX_OK); + + /* assemble the value string */ + if (strlen(format) < CHAR_BUF_LENGTH) { + va_start(ap, format); + ret = vsnprintf(value, CHAR_BUF_LENGTH, format, ap); + va_end(ap); + + i = strlen(value); + } else { + i = strlen(format); + } + + if (type == 'd') { + /* open/put/close data set */ + if (NXmakedata (f, tag, NX_CHAR, 1, &i) != NX_OK) return(NX_ERROR); + NXopendata (f, tag); + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputdata (f, value); + else + ret = NXputdata (f, format); + NXclosedata(f); + } else { + if (strlen(format) < CHAR_BUF_LENGTH) + ret = NXputattr (f, tag, value, strlen(value), NX_CHAR); + else + ret = NXputattr (f, tag, format, strlen(format), NX_CHAR); + } + + return(ret); + +} /* nxstr */ + +/******************************************************************************* +* mcinfo_readfile: read a full file into a string buffer which is allocated +* Think to free the buffer after use. +* Used in: mcinfo_out_nexus (nexus) +*******************************************************************************/ +char *mcinfo_readfile(char *filename) +{ + FILE *f = fopen(filename, "rb"); + if (!f) return(NULL); + fseek(f, 0, SEEK_END); + long fsize = ftell(f); + rewind(f); + char *string = malloc(fsize + 1); + if (string) { + int n = fread(string, fsize, 1, f); + fclose(f); + + string[fsize] = 0; + } + return(string); +} + +/******************************************************************************* +* mcinfo_out: output instrument/simulation groups in NeXus file +* Used in: siminfo_init (nexus) +*******************************************************************************/ +static void mcinfo_out_nexus(NXhandle f) +{ + FILE *fid; /* for intrument source code/C/IDF */ + char *buffer=NULL; + time_t t =time(NULL); /* for date */ + char entry0[CHAR_BUF_LENGTH]; + int count=0; + char name[CHAR_BUF_LENGTH]; + char class[CHAR_BUF_LENGTH]; + + if (!f || mcdisable_output_files) return; + + /* write NeXus NXroot attributes */ + /* automatically added: file_name, HDF5_Version, file_time, NeXus_version */ + nxprintattr(f, "creator", "%s generated with " MCCODE_STRING, instrument_name); + + /* count the number of existing NXentry and create the next one */ + NXgetgroupinfo(f, &count, name, class); + sprintf(entry0, "entry%i", count+1); + + /* create the main NXentry (mandatory in NeXus) */ + if (NXmakegroup(f, entry0, "NXentry") == NX_OK) + if (NXopengroup(f, entry0, "NXentry") == NX_OK) { + nxprintf(nxhandle, "program_name", MCCODE_STRING); + nxprintf(f, "start_time", ctime(&t)); + nxprintf(f, "title", "%s%s%s simulation generated by instrument %s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name, + instrument_name); + nxprintattr(f, "program_name", MCCODE_STRING); + nxprintattr(f, "instrument", instrument_name); + nxprintattr(f, "simulation", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + /* write NeXus instrument group */ + if (NXmakegroup(f, "instrument", "NXinstrument") == NX_OK) + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + int i; + char *string=NULL; + + /* write NeXus parameters(types) data =================================== */ + string = (char*)malloc(CHAR_BUF_LENGTH); + if (string) { + strcpy(string, ""); + for(i = 0; i < numipar; i++) + { + char ThisParam[CHAR_BUF_LENGTH]; + snprintf(ThisParam, CHAR_BUF_LENGTH, " %s(%s)", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + if (strlen(string) + strlen(ThisParam) < CHAR_BUF_LENGTH) + strcat(string, ThisParam); + } + nxprintattr(f, "Parameters", string); + free(string); + } + + nxprintattr(f, "name", instrument_name); + nxprintf (f, "name", instrument_name); + nxprintattr(f, "Source", instrument_source); + + nxprintattr(f, "Trace_enabled", traceenabled ? "yes" : "no"); + nxprintattr(f, "Default_main", defaultmain ? "yes" : "no"); +#ifdef MC_EMBEDDED_RUNTIME + nxprintattr(f, "Embedded_runtime", "yes"); +#else + nxprintattr(f, "Embedded_runtime", "no"); +#endif + + /* add instrument source code when available */ + buffer = mcinfo_readfile(instrument_source); + if (buffer && strlen(buffer)) { + long length=strlen(buffer); + nxprintf (f, "description", buffer); + NXopendata(f,"description"); + nxprintattr(f, "file_name", instrument_source); + nxprintattr(f, "file_size", "%li", length); + nxprintattr(f, "MCCODE_STRING", MCCODE_STRING); + NXclosedata(f); + nxprintf (f,"instrument_source", "%s " MCCODE_NAME " " MCCODE_PARTICLE " Monte Carlo simulation", instrument_name); + free(buffer); + } else + nxprintf (f, "description", "File %s not found (instrument description %s is missing)", + instrument_source, instrument_name); + + if (mcnexus_embed_idf) { + /* add Mantid/IDF.xml when available */ + char *IDFfile=NULL; + IDFfile = (char*)malloc(CHAR_BUF_LENGTH); + sprintf(IDFfile,"%s%s",instrument_source,".xml"); + buffer = mcinfo_readfile(IDFfile); + if (buffer && strlen(buffer)) { + NXmakegroup (nxhandle, "instrument_xml", "NXnote"); + NXopengroup (nxhandle, "instrument_xml", "NXnote"); + nxprintf(f, "data", buffer); + nxprintf(f, "description", "IDF.xml file found with instrument %s", instrument_source); + nxprintf(f, "type", "text/xml"); + NXclosegroup(f); /* instrument_xml */ + free(buffer); + } + free(IDFfile); + } + + /* Add "components" entry */ + if (NXmakegroup(f, "components", "NXdata") == NX_OK) { + NXopengroup(f, "components", "NXdata"); + nxprintattr(f, "description", "Component list for instrument %s", instrument_name); + NXclosegroup(f); /* components */ + } else { + printf("Failed to create NeXus component hierarchy\n"); + } + NXclosegroup(f); /* instrument */ + } /* NXinstrument */ + + /* write NeXus simulation group */ + if (NXmakegroup(f, "simulation", "NXnote") == NX_OK) + if (NXopengroup(f, "simulation", "NXnote") == NX_OK) { + + nxprintattr(f, "name", "%s%s%s", + dirname && strlen(dirname) ? dirname : ".", MC_PATHSEP_S, siminfo_name); + + nxprintf (f, "name", "%s", siminfo_name); + nxprintattr(f, "Format", mcformat && strlen(mcformat) ? mcformat : MCCODE_NAME); + nxprintattr(f, "URL", "http://www.mccode.org"); + nxprintattr(f, "program", MCCODE_STRING); + nxprintattr(f, "Instrument",instrument_source); + nxprintattr(f, "Trace", mcdotrace ? "yes" : "no"); + nxprintattr(f, "Gravitation",mcgravitation ? "yes" : "no"); + nxprintattr(f, "Seed", "%li", mcseed); + nxprintattr(f, "Directory", dirname); + #ifdef USE_MPI + if (mpi_node_count > 1) + nxprintf(f, "Nodes", "%i", mpi_node_count); + #endif + + /* output parameter string ================================================ */ + if (NXmakegroup(f, "Param", "NXparameters") == NX_OK) { + NXopengroup(f,"Param", "NXparameters"); + int i; + char string[CHAR_BUF_LENGTH]; + for(i = 0; i < numipar; i++) { + if (mcget_run_num() || (mcinputtable[i].val && strlen(mcinputtable[i].val))) { + if (mcinputtable[i].par == NULL) + strncpy(string, (mcinputtable[i].val ? mcinputtable[i].val : ""), CHAR_BUF_LENGTH); + else + (*mcinputtypes[mcinputtable[i].type].printer)(string, mcinputtable[i].par); + + nxprintf(f, mcinputtable[i].name, "%s", string); + nxprintattr(f, mcinputtable[i].name, string); + } + } + NXclosegroup(f); /* Param */ + } /* NXparameters */ + NXclosegroup(f); /* simulation */ + } /* NXsimulation */ + + /* create a group to hold all links for all monitors */ + NXmakegroup(f, "data", "NXdetector"); + + /* leave the NXentry opened (closed at exit) */ + } /* NXentry */ +} /* mcinfo_out_nexus */ + +/******************************************************************************* +* mccomp_placement_type_nexus: +* Places +* - absolute (3x1) position +* - absolute (3x3) rotation +* - type / class of component instance into attributes under +* entry/instrument/compname +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_placement_type_nexus(NXhandle nxhandle, char* component, Coords position, Rotation rotation, char* comptype) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, component, "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + int64_t pdims[3]; pdims[0]=3; pdims[1]=0; pdims[2]=0; + if (NXcompmakedata64(nxhandle, "Position", NX_FLOAT64, 1, pdims, NX_COMPRESSION, pdims) == NX_OK) { + if (NXopendata(nxhandle, "Position") == NX_OK) { + double pos[3]; coords_get(position, &pos[0], &pos[1], &pos[2]); + if (NXputdata (nxhandle, pos) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Position field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Position field for component %s\n",component); + } + } + int64_t rdims[3]; rdims[0]=3; rdims[1]=3; rdims[2]=0; + if (NXcompmakedata64(nxhandle, "Rotation", NX_FLOAT64, 2, rdims, NX_COMPRESSION, rdims) == NX_OK) { + if (NXopendata(nxhandle, "Rotation") == NX_OK) { + if (NXputdata (nxhandle, rotation) == NX_OK) { + NXclosedata(nxhandle); + } else { + fprintf(stderr, "COULD NOT PUT Rotation field for component %s\n",component); + } + } else { + fprintf(stderr, "Warning: could not open Rotation field for component %s\n",component); + } + } + nxprintf(nxhandle, "Component_type", comptype); + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + } else { + printf("FAILED to create comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } + #endif +} /* mccomp_placement_nexus */ + +/******************************************************************************* +* mccomp_param_nexus: +* Output parameter/value pair for component instance into +* the attribute +* entry/instrument/compname/parameter +* requires: NXentry to be opened +*******************************************************************************/ +static void mccomp_param_nexus(NXhandle nxhandle, char* component, char* parameter, char* defval, char* value, char* type) +{ + /* open NeXus instrument group */ + + #ifdef USE_NEXUS + if(nxhandle) { + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, component, "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(nxhandle, "parameters", "NXdata"); + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + if (NXopengroup(nxhandle, "parameters", "NXdata") == NX_OK) { + NXmakegroup(nxhandle, parameter, "NXnote"); + if (NXopengroup(nxhandle, parameter, "NXnote") == NX_OK) { + nxprintattr(nxhandle, "type", type); + nxprintattr(nxhandle, "default", defval); + nxprintattr(nxhandle, "value", value); + NXclosegroup(nxhandle); // parameter + } else { + printf("FAILED to open parameters %s data group \n",parameter); + } + NXclosegroup(nxhandle); // "parameters" + } else { + printf("FAILED to open comp/parameters data group \n"); + } + NXclosegroup(nxhandle); // component + } else { + printf("FAILED to open comp data group %s\n",component); + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } else { + printf("Failed to open NeXus instrument hierarchy\n"); + } + } else { + fprintf(stderr,"NO NEXUS FILE\n"); + } +#endif +} /* mccomp_param_nexus */ + +/******************************************************************************* +* mcdatainfo_out_nexus: output detector header +* mcdatainfo_out_nexus(detector) create group and write info to NeXus data file +* open data:NXdetector then filename:NXdata and write headers/attributes +* requires: NXentry to be opened +*******************************************************************************/ +static void +mcdatainfo_out_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + if (!f || !detector.m || mcdisable_output_files) return; + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + NXmakegroup(f, detector.nexuscomp, "NXdata"); + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + NXmakegroup(f, "output", "NXdetector"); + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + if (NXmakegroup(f, data_name, "NXdata") == NX_OK) { + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + /* output metadata (as attributes) ======================================== */ + nxprintattr(f, "Date", detector.date); + nxprintattr(f, "type", detector.type); + nxprintattr(f, "Source", detector.instrument); + nxprintattr(f, "component", detector.component); + nxprintattr(f, "position", detector.position); + + nxprintattr(f, "title", detector.title); + nxprintattr(f, !mcget_run_num() || mcget_run_num() >= mcget_ncount() ? + "Ncount" : + "ratio", detector.ncount); + + if (strlen(detector.filename)) { + nxprintattr(f, "filename", detector.filename); + } + + nxprintattr(f, "statistics", detector.statistics); + nxprintattr(f, "signal", detector.signal); + nxprintattr(f, "values", detector.values); + + if (detector.rank >= 1) + { + nxprintattr(f, "xvar", detector.xvar); + nxprintattr(f, "yvar", detector.yvar); + nxprintattr(f, "xlabel", detector.xlabel); + nxprintattr(f, "ylabel", detector.ylabel); + if (detector.rank > 1) { + nxprintattr(f, "zvar", detector.zvar); + nxprintattr(f, "zlabel", detector.zlabel); + } + } + + nxprintattr(f, abs(detector.rank)==1 ? + "xlimits" : + "xylimits", detector.limits); + nxprintattr(f, "variables", + strcasestr(detector.format, "list") ? detector.ylabel : detector.variables); + + NXclosegroup(f); // data_name + } + } + } + NXclosegroup(f); // output + NXclosegroup(f); // detector.nexuscomp + } + NXclosegroup(f); // components + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + NXclosegroup(f); // instrument + } /* NXdetector (instrument) */ +} /* mcdatainfo_out_nexus */ + +/******************************************************************************* +* mcdetector_out_axis_nexus: write detector axis into current NXdata +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_axis_nexus(NXhandle f, char *label, char *var, int rank, long length, double min, double max) +{ + if (!f || length <= 1 || mcdisable_output_files || max == min) return(NX_OK); + else { + double *axis; + axis=malloc(sizeof(double)*length); + if (!axis ) { + printf("Fatal memory error allocating NeXus axis of length %li, exiting!\n", length); + return(NX_ERROR); + } + char *valid; + valid=malloc(sizeof(char)*CHAR_BUF_LENGTH); + if (!valid ) { + printf("Fatal memory error allocating label axis of length %li, exiting!\n", CHAR_BUF_LENGTH); + free(axis); + return(NX_ERROR); + } + int dim=(int)length; + int i; + int nprimary=1; + /* create an axis from [min:max] */ + for(i = 0; i < length; i++) + axis[i] = min+(max-min)*(i+0.5)/length; + /* create the data set */ + strcpy_valid(valid, label); + NXcompmakedata(f, valid, NX_FLOAT64, 1, &dim, NX_COMPRESSION, &dim); + /* open it */ + if (NXopendata(f, valid) != NX_OK) { + fprintf(stderr, "Warning: could not open axis rank %i '%s' (NeXus)\n", + rank, valid); + free(axis); + free(valid); + return(NX_ERROR); + } + /* put the axis and its attributes */ + NXputdata (f, axis); + nxprintattr(f, "long_name", label); + nxprintattr(f, "short_name", var); + NXputattr (f, "axis", &rank, 1, NX_INT32); + nxprintattr(f, "units", var); + NXputattr (f, "primary", &nprimary, 1, NX_INT32); + NXclosedata(f); + free(axis); + free(valid); + return(NX_OK); + } +} /* mcdetector_out_axis_nexus */ + +/******************************************************************************* +* mcdetector_out_array_nexus: write detector array into current NXdata (1D,2D) +* requires: NXdata to be opened +*******************************************************************************/ +int mcdetector_out_array_nexus(NXhandle f, char *part, double *data, MCDETECTOR detector) +{ + + int64_t dims[3]={detector.m,detector.n,detector.p}; /* number of elements to write */ + int64_t fulldims[3]={detector.m,detector.n,detector.p}; + int signal=1; + int exists=0; + int64_t current_dims[3]={0,0,0}; + int ret=NX_OK; + + if (!f || !data || !detector.m || mcdisable_output_files) return(NX_OK); + + /* when this is a list, we set 1st dimension to NX_UNLIMITED for creation */ + if (strcasestr(detector.format, "list")) fulldims[0] = NX_UNLIMITED; + + /* create the data set in NXdata group */ + NXMDisableErrorReporting(); /* inactivate NeXus error messages, as creation may fail */ + ret = NXcompmakedata64(f, part, NX_FLOAT64, detector.rank, fulldims, NX_COMPRESSION, dims); + if (ret != NX_OK) { + /* failed: data set already exists */ + int datatype=0; + int rank=0; + exists=1; + /* inquire current size of data set (nb of events stored) */ + NXopendata(f, part); + NXgetinfo64(f, &rank, current_dims, &datatype); + NXclosedata(f); + } + NXMEnableErrorReporting(); /* re-enable NeXus error messages */ + + /* open the data set */ + if (NXopendata(f, part) == NX_ERROR) { + fprintf(stderr, "Warning: could not open DataSet %s '%s' (NeXus)\n", + part, detector.title); + return(NX_ERROR); + } + if (strcasestr(detector.format, "list")) { + current_dims[1] = current_dims[2] = 0; /* set starting location for writing slab */ + NXputslab64(f, data, current_dims, dims); + if (!exists) + printf("Events: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + else + printf("Append: \"%s\"\n", + strlen(detector.filename) ? detector.filename : detector.component); + } else { + NXputdata (f, data); + } + + if (strstr(part,"data") || strstr(part, "events")) { + NXputattr(f, "signal", &signal, 1, NX_INT32); + nxprintattr(f, "short_name", strlen(detector.filename) ? + detector.filename : detector.component); + } + nxprintattr(f, "long_name", "%s '%s'", part, detector.title); + NXclosedata(f); + + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +/******************************************************************************* +* mcdetector_out_data_nexus: write detector axes+data into current NXdata +* The data:NXdetector is opened, then filename:NXdata +* requires: NXentry to be opened +*******************************************************************************/ +int mcdetector_out_data_nexus(NXhandle f, MCDETECTOR detector) +{ + char data_name[CHAR_BUF_LENGTH]; + + if (!f || !detector.m || mcdisable_output_files) return(NX_OK); + + strcpy_valid(data_name, + strlen(detector.filename) ? + detector.filename : detector.component); + NXlink pLink; + /* the NXdetector group has been created in mcinfo_out_nexus (siminfo_init) */ + if (NXopengroup(f, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(f, "components", "NXdata") == NX_OK) { + if (NXopengroup(f, detector.nexuscomp, "NXdata") == NX_OK) { + if (NXopengroup(f, "output", "NXdetector") == NX_OK) { + + /* the NXdata group has been created in mcdatainfo_out_nexus */ + if (NXopengroup(f, data_name, "NXdata") == NX_OK) { + + MPI_MASTER( + nxprintattr(f, "options", + strlen(detector.options) ? detector.options : "None"); + ); + /* write axes, for histogram data sets, not for lists */ + if (!strcasestr(detector.format, "list")) { + mcdetector_out_axis_nexus(f, detector.xlabel, detector.xvar, + 1, detector.m, detector.xmin, detector.xmax); + mcdetector_out_axis_nexus(f, detector.ylabel, detector.yvar, + 2, detector.n, detector.ymin, detector.ymax); + mcdetector_out_axis_nexus(f, detector.zlabel, detector.zvar, + 3, detector.p, detector.zmin, detector.zmax); + } else { + MPI_MASTER( + nxprintattr(f, "dataset columns", + strlen(detector.ylabel) ? detector.ylabel : "None"); + ); + } + + /* write the actual data (appended if already exists) */ + if (!strcasestr(detector.format, "list") && !strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus(f, "data", detector.p1, detector); + mcdetector_out_array_nexus(f, "errors", detector.p2, detector); + mcdetector_out_array_nexus(f, "ncount", detector.p0, detector); + } else if (strcasestr(detector.format, "pixels")) { + mcdetector_out_array_nexus( f, "pixels", detector.p1, detector); + } else { + mcdetector_out_array_nexus( f, "events", detector.p1, detector); + } + NXclosegroup(f); + NXopengroup(f, data_name, "NXdata"); + NXgetgroupID(nxhandle, &pLink); + NXclosegroup(f); + } /* NXdata data_name*/ + NXclosegroup(f); + } /* NXdetector output */ + NXclosegroup(f); + } /* NXdata detector.nexuscomp */ + NXclosegroup(f); + } /* NXdata components */ + NXclosegroup(f); + } /* NXdata instrument */ + + if (!strcasestr(detector.format, "pixels")) { + if (NXopengroup(f, "data", "NXdetector") == NX_OK) { + NXmakelink(nxhandle, &pLink); + NXclosegroup(f); + } + } + return(NX_OK); +} /* mcdetector_out_array_nexus */ + +#ifdef USE_MPI +/******************************************************************************* +* mcdetector_out_list_slaves: slaves send their list data to master which writes +* requires: NXentry to be opened +* WARNING: this method has a flaw: it requires all nodes to flush the lists +* the same number of times. In case one node is just below the buffer size +* when finishing (e.g. monitor_nd), it may not trigger save but others may. +* Then the number of recv/send is not constant along nodes, and simulation stalls. +*******************************************************************************/ +MCDETECTOR mcdetector_out_list_slaves(MCDETECTOR detector) +{ + int node_i=0; + MPI_MASTER( + printf("\n** MPI master gathering slave node list data ** \n"); + ); + + if (mpi_node_rank != mpi_node_root) { + /* MPI slave: slaves send their data to master: 2 MPI_Send calls */ + /* m, n, p must be sent first, since all slaves do not have the same number of events */ + int mnp[3]={detector.m,detector.n,detector.p}; + + if (mc_MPI_Send(mnp, 3, MPI_INT, mpi_node_root)!= MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send mnp list error (mcdetector_out_list_slaves)\n", mpi_node_rank); + if (!detector.p1 + || mc_MPI_Send(detector.p1, mnp[0]*mnp[1]*mnp[2], MPI_DOUBLE, mpi_node_root) != MPI_SUCCESS) + fprintf(stderr, "Warning: proc %i to master: MPI_Send p1 list error: mnp=%i (mcdetector_out_list_slaves)\n", mpi_node_rank, abs(mnp[0]*mnp[1]*mnp[2])); + /* slaves are done: sent mnp and p1 */ + } /* end slaves */ + + /* MPI master: receive data from slaves sequentially: 2 MPI_Recv calls */ + + if (mpi_node_rank == mpi_node_root) { + for(node_i=0; node_i 1) { + mcdetector_out_list_slaves(detector); + } +#endif /* USE_MPI */ + + return(detector); +} /* mcdetector_out_2D_nexus */ + +MCDETECTOR mcdetector_out_3D_nexus(MCDETECTOR detector) +{ + printf("Received detector from %s\n",detector.component); + MPI_MASTER( + mcdatainfo_out_nexus(nxhandle, detector); + mcdetector_out_data_nexus(nxhandle, detector); + ); + return(detector); +} /* mcdetector_out_3D_nexus */ + + +#endif /* USE_NEXUS*/ + + + + + + + + +/* ========================================================================== */ + +/* Main input functions */ +/* DETECTOR_OUT_xD function calls -> ascii or NeXus */ + +/* ========================================================================== */ + +/******************************************************************************* +* siminfo_init: open SIM and write header +*******************************************************************************/ +FILE *siminfo_init(FILE *f) +{ + int exists=0; + + /* check format */ + if (!mcformat || !strlen(mcformat) + || !strcasecmp(mcformat, "MCSTAS") || !strcasecmp(mcformat, "MCXTRACE") + || !strcasecmp(mcformat, "PGPLOT") || !strcasecmp(mcformat, "GNUPLOT") || !strcasecmp(mcformat, "MCCODE") + || !strcasecmp(mcformat, "MATLAB")) { + mcformat="McCode"; +#ifdef USE_NEXUS + } else if (strcasestr(mcformat, "NeXus")) { + /* Do nothing */ +#endif + } else { + fprintf(stderr, + "Warning: You have requested the output format %s which is unsupported by this binary. Resetting to standard %s format.\n",mcformat ,"McCode"); + mcformat="McCode"; + } + + /* open the SIM file if not defined yet */ + if (siminfo_file || mcdisable_output_files) + return (siminfo_file); + +#ifdef USE_NEXUS + /* only master writes NeXus header: calls NXopen(nxhandle) */ + if (mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + siminfo_file = mcnew_file(siminfo_name, "h5", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + mcinfo_out_nexus(nxhandle); + ); + return(siminfo_file); /* points to nxhandle */ + } +#endif + + /* write main description file (only MASTER) */ + MPI_MASTER( + + siminfo_file = mcnew_file(siminfo_name, "sim", &exists); + if(!siminfo_file) + fprintf(stderr, + "Warning: could not open simulation description file '%s'\n", + siminfo_name); + else + { + /* write SIM header */ + time_t t=time(NULL); + siminfo_out("%s simulation description file for %s.\n", + MCCODE_NAME, instrument_name); + siminfo_out("Date: %s", ctime(&t)); /* includes \n */ + siminfo_out("Program: %s\n\n", MCCODE_STRING); + + siminfo_out("begin instrument: %s\n", instrument_name); + mcinfo_out( " ", siminfo_file); + siminfo_out("end instrument\n"); + + siminfo_out("\nbegin simulation: %s\n", dirname); + mcruninfo_out(" ", siminfo_file); + siminfo_out("end simulation\n"); + + } + ); /* MPI_MASTER */ + return (siminfo_file); + +} /* siminfo_init */ + +/******************************************************************************* +* siminfo_close: close SIM +*******************************************************************************/ +void siminfo_close() +{ +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(siminfo_file && !mcdisable_output_files) { +#ifdef USE_NEXUS + if (mcformat && strcasestr(mcformat, "NeXus")) { + time_t t=time(NULL); + nxprintf(nxhandle, "end_time", ctime(&t)); + nxprintf(nxhandle, "duration", "%li", (long)t-mcstartdate); + NXclosegroup(nxhandle); /* NXentry */ + NXclose(&nxhandle); + } else { +#endif + fclose(siminfo_file); +#ifdef USE_NEXUS + } +#endif +#ifdef USE_MPI + } +#endif + siminfo_file = NULL; + } +} /* siminfo_close */ + +/******************************************************************************* +* mcdetector_out_0D: wrapper for 0D (single value). +* Output single detector/monitor data (p0, p1, p2). +* Title is t, component name is c. +*******************************************************************************/ +MCDETECTOR mcdetector_out_0D(char *t, double p0, double p1, double p2, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI reduce) */ + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " data"), + 1, 1, 1, + "I", "", "", + "I", "", "", + 0, 0, 0, 0, 0, 0, c, + &p0, &p1, &p2, posa, rota, index); /* write Detector: line */ + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_0D_nexus(detector)); + else +#endif + return(mcdetector_out_0D_ascii(detector)); + +} /* mcdetector_out_0D */ + + + +/******************************************************************************* +* mcdetector_out_1D: wrapper for 1D. +* Output 1d detector data (p0, p1, p2) for n bins linearly +* distributed across the range x1..x2 (x1 is lower limit of first +* bin, x2 is upper limit of last bin). Title is t, axis labels are xl +* and yl. File name is f, component name is c. +* +* t: title +* xl: x-label +* yl: y-label +* xvar: measured variable length +* x1: x axus min +* x2: x axis max +* n: 1d data vector lenght +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_1D(char *t, char *xl, char *yl, + char *xvar, double x1, double x2, + long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + // detector_import calls mcdetector_statistics, which will return different + // MCDETECTOR versions for 1-D data based on the value of mcformat. + // + MCDETECTOR detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + xl, yl, (n > 1 ? "Signal per bin" : " Signal"), + xvar, "(I,I_err)", "I", + x1, x2, 0, 0, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + detector = mcdetector_out_1D_nexus(detector); + else +#endif + detector = mcdetector_out_1D_ascii(detector); + if (detector.p1 != p1 && detector.p1) { + // mcdetector_statistics allocated memory but it hasn't been freed. + free(detector.p1); + // plus undo the other damage done there: + detector.p0 = p0; // was set to NULL + detector.p1 = p1; // was set to this_p1 + detector.p2 = p2; // was set to NULL + detector.m = detector.n; // (e.g., labs(n)) + detector.n = 1; // not (n x n) + detector.istransposed = n < 0 ? 1 : 0; + } + return detector; + +} /* mcdetector_out_1D */ + +/******************************************************************************* +* mcdetector_out_2D: wrapper for 2D. +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D */ + +/******************************************************************************* +* mcdetector_out_2D_list: List mode 2D including forwarding "options" from +* Monitor_nD +* +* Special case for list: master creates file first, then slaves append their +* blocks without header- +* +* t: title +* xl: x-label +* yl: y-label +* x1: x axus min +* x2: x axis max +* y1: y axis min +* y2: y axis max +* m: dim 1 (x) size +* n: dim 2 (y) size +* p0: pntr to start of data block#0 +* p1: pntr to start of data block#1 +* p2: pntr to start of data block#2 +* f: filename +* +* Not included in the macro, and here forwarded to detector_import: +* c: ? +* posa: ? +* rota: ? +*******************************************************************************/ +MCDETECTOR mcdetector_out_2D_list(char *t, char *xl, char *yl, + double x1, double x2, double y1, double y2, + long m, long n, + double *p0, double *p1, double *p2, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char xvar[CHAR_BUF_LENGTH]; + char yvar[CHAR_BUF_LENGTH]; + + /* create short axes labels */ + if (xl && strlen(xl)) { strncpy(xvar, xl, CHAR_BUF_LENGTH); xvar[2]='\0'; } + else strcpy(xvar, "x"); + if (yl && strlen(yl)) { strncpy(yvar, yl, CHAR_BUF_LENGTH); yvar[2]='\0'; } + else strcpy(yvar, "y"); + + MCDETECTOR detector; + + /* import and perform basic detector analysis (and handle MPI_Reduce) */ + if (labs(m) == 1) {/* n>1 on Y, m==1 on X: 1D, no X axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + n, 1, 1, + yl, "", "Signal per bin", + yvar, "(I,Ierr)", "I", + y1, y2, x1, x2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } else if (labs(n)==1) {/* m>1 on X, n==1 on Y: 1D, no Y axis*/ + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 1D data"), + m, 1, 1, + xl, "", "Signal per bin", + xvar, "(I,Ierr)", "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + }else { + detector = detector_import(mcformat, + c, (t ? t : MCCODE_STRING " 2D data"), + m, n, 1, + xl, yl, "Signal per bin", + xvar, yvar, "I", + x1, x2, y1, y2, 0, 0, f, + p0, p1, p2, posa, rota, index); /* write Detector: line */ + } + + MPI_MASTER( + if (strlen(options)) { + strcpy(detector.options,options); + } else { + strcpy(detector.options,"None"); + } + ); + + if (!detector.p1 || !detector.m) return(detector); + +#ifdef USE_NEXUS + if (strcasestr(detector.format, "NeXus")) + return(mcdetector_out_2D_nexus(detector)); + else +#endif + return(mcdetector_out_2D_ascii(detector)); + +} /* mcdetector_out_2D_list */ + +/******************************************************************************* +* mcdetector_out_list: wrapper for list output (calls out_2D with mcformat+"list"). +* m=number of events, n=size of each event +*******************************************************************************/ +MCDETECTOR mcdetector_out_list(char *t, char *xl, char *yl, + long m, long n, + double *p1, char *f, + char *c, Coords posa, Rotation rota, char* options, int index) +{ + char format_new[CHAR_BUF_LENGTH]; + char *format_org; + MCDETECTOR detector; + + format_org = mcformat; + strcpy(format_new, mcformat); + strcat(format_new, " list"); + mcformat = format_new; + detector = mcdetector_out_2D_list(t, xl, yl, + 1,labs(m),1,labs(n), + m,n, + NULL, p1, NULL, f, + c, posa,rota,options, index); + + mcformat = format_org; + return(detector); +} + +/******************************************************************************* + * mcuse_dir: set data/sim storage directory and create it, + * or exit with error if exists + ******************************************************************************/ +static void +mcuse_dir(char *dir) +{ + if (!dir || !strlen(dir)) return; +#ifdef MC_PORTABLE + fprintf(stderr, "Error: " + "Directory output cannot be used with portable simulation (mcuse_dir)\n"); + exit(1); +#else /* !MC_PORTABLE */ + /* handle file://directory URL type */ + if (strncmp(dir, "file://", strlen("file://"))) + dirname = dir; + else + dirname = dir+strlen("file://"); + + +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { +#endif + if(mkdir(dirname, 0777)) { +#ifndef DANSE + fprintf(stderr, "Error: unable to create directory '%s' (mcuse_dir)\n", dir); + fprintf(stderr, "(Maybe the directory already exists?)\n"); +#endif +#ifdef USE_MPI + MPI_Abort(MPI_COMM_WORLD, -1); +#endif + exit(-1); + } +#ifdef USE_MPI + } +#endif + + /* remove trailing PATHSEP (if any) */ + while (strlen(dirname) && dirname[strlen(dirname) - 1] == MC_PATHSEP_C) + dirname[strlen(dirname) - 1]='\0'; +#endif /* !MC_PORTABLE */ +} /* mcuse_dir */ + +/******************************************************************************* +* mcinfo: display instrument simulation info to stdout and exit +*******************************************************************************/ +static void +mcinfo(void) +{ + fprintf(stdout, "begin instrument: %s\n", instrument_name); + mcinfo_out(" ", stdout); + fprintf(stdout, "end instrument\n"); + fprintf(stdout, "begin simulation: %s\n", dirname ? dirname : "."); + mcruninfo_out(" ", stdout); + fprintf(stdout, "end simulation\n"); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcinfo */ + +/******************************************************************************* +* mcparameterinfo: display instrument parameter info to stdout and exit +*******************************************************************************/ +static void +mcparameterinfo(void) +{ + mcparameterinfo_out(" ", stdout); + exit(0); /* includes MPI_Finalize in MPI mode */ +} /* mcparameterinfo */ + + + +#endif /* ndef MCCODE_R_IO_C */ + +/* end of the I/O section =================================================== */ + + + + + + + +/******************************************************************************* +* mcset_ncount: set total number of rays to generate +*******************************************************************************/ +void mcset_ncount(unsigned long long int count) +{ + mcncount = count; +} + +/* mcget_ncount: get total number of rays to generate */ +unsigned long long int mcget_ncount(void) +{ + return mcncount; +} + +/* mcget_run_num: get curent number of rays */ +/* Within the TRACE scope we are now using _particle->uid directly */ +unsigned long long int mcget_run_num() // shuld be (_class_particle* _particle) somehow +{ + /* This function only remains for the few cases outside TRACE where we need to know + the number of simulated particles */ + return mcrun_num; +} + +/* mcsetn_arg: get ncount from a string argument */ +static void +mcsetn_arg(char *arg) +{ + mcset_ncount((long long int) strtod(arg, NULL)); +} + +/* mcsetseed: set the random generator seed from a string argument */ +static void +mcsetseed(char *arg) +{ + mcseed = atol(arg); + if(!mcseed) { + // srandom(mcseed); + //} else { + fprintf(stderr, "Error: seed must not be zero (mcsetseed)\n"); + exit(1); + } +} + +/* Following part is only embedded when not redundent with mccode-r.h ========= */ + +#ifndef MCCODE_H + +/* SECTION: MCDISPLAY support. =============================================== */ + +/******************************************************************************* +* Just output MCDISPLAY keywords to be caught by an external plotter client. +*******************************************************************************/ + +void mcdis_magnify(char *what){ + // Do nothing here, better use interactive zoom from the tools +} + +void mcdis_line(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: multiline(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} + +void mcdis_dashed_line(double x1, double y1, double z1, + double x2, double y2, double z2, int n){ + int i; + const double dx = (x2-x1)/(2*n+1); + const double dy = (y2-y1)/(2*n+1); + const double dz = (z2-z1)/(2*n+1); + + for(i = 0; i < n+1; i++) + mcdis_line(x1 + 2*i*dx, y1 + 2*i*dy, z1 + 2*i*dz, + x1 + (2*i+1)*dx, y1 + (2*i+1)*dy, z1 + (2*i+1)*dz); +} + +void mcdis_multiline(int count, ...){ + va_list ap; + double x,y,z; + + printf("MCDISPLAY: multiline(%d", count); + va_start(ap, count); + while(count--) + { + x = va_arg(ap, double); + y = va_arg(ap, double); + z = va_arg(ap, double); + printf(",%g,%g,%g", x, y, z); + } + va_end(ap); + printf(")\n"); +} + +void mcdis_rectangle(char* plane, double x, double y, double z, + double width, double height){ + /* draws a rectangle in the plane */ + /* x is ALWAYS width and y is ALWAYS height */ + if (strcmp("xy", plane)==0) { + mcdis_multiline(5, + x - width/2, y - height/2, z, + x + width/2, y - height/2, z, + x + width/2, y + height/2, z, + x - width/2, y + height/2, z, + x - width/2, y - height/2, z); + } else if (strcmp("xz", plane)==0) { + mcdis_multiline(5, + x - width/2, y, z - height/2, + x + width/2, y, z - height/2, + x + width/2, y, z + height/2, + x - width/2, y, z + height/2, + x - width/2, y, z - height/2); + } else if (strcmp("yz", plane)==0) { + mcdis_multiline(5, + x, y - height/2, z - width/2, + x, y - height/2, z + width/2, + x, y + height/2, z + width/2, + x, y + height/2, z - width/2, + x, y - height/2, z - width/2); + } else { + + fprintf(stderr, "Error: Definition of plane %s unknown\n", plane); + exit(1); + } +} + +void mcdis_circle(char *plane, double x, double y, double z, double r){ + printf("MCDISPLAY: circle('%s',%g,%g,%g,%g)\n", plane, x, y, z, r); +} + +void mcdis_new_circle(double x, double y, double z, double r, double nx, double ny, double nz){ + printf("MCDISPLAY: new_circle(%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, r, nx, ny, nz); +} + + +/* Draws a circle with center (x,y,z), radius (r), and in the plane + * with normal (nx,ny,nz)*/ +void mcdis_Circle(double x, double y, double z, double r, double nx, double ny, double nz){ + int i; + if(nx==0 && ny && nz==0){ + for (i=0;i<24; i++){ + mcdis_line(x+r*sin(i*2*PI/24),y,z+r*cos(i*2*PI/24), + x+r*sin((i+1)*2*PI/24),y,z+r*cos((i+1)*2*PI/24)); + } + }else{ + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + /*draw circle*/ + for (i=0;i<24; i++){ + double ux,uy,uz; + double wx,wy,wz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + rotate(wx,wy,wz, mx,my,mz, (i+1)*2*PI/24, nx,ny,nz); + mcdis_line(x+ux*r,y+uy*r,z+uz*r, + x+wx*r,y+wy*r,z+wz*r); + } + } +} + + +/* OLD IMPLEMENTATION + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_legacy_box(double x, double y, double z, + double width, double height, double length){ + + mcdis_rectangle("xy", x, y, z-length/2, width, height); + mcdis_rectangle("xy", x, y, z+length/2, width, height); + mcdis_line(x-width/2, y-height/2, z-length/2, + x-width/2, y-height/2, z+length/2); + mcdis_line(x-width/2, y+height/2, z-length/2, + x-width/2, y+height/2, z+length/2); + mcdis_line(x+width/2, y-height/2, z-length/2, + x+width/2, y-height/2, z+length/2); + mcdis_line(x+width/2, y+height/2, z-length/2, + x+width/2, y+height/2, z+length/2); +} + +/* NEW 3D IMPLEMENTATION OF BOX SUPPORTS HOLLOW ALSO + draws a box with center at (x, y, z) and + width (deltax), height (deltay), length (deltaz) */ +void mcdis_box(double x, double y, double z, + double width, double height, double length, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: box(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g)\n", x, y, z, width, height, length, thickness, nx, ny, nz); + } else { + mcdis_legacy_box(x, y, z, width, height, length); + if (thickness) + mcdis_legacy_box(x, y, z, width-thickness, height-thickness, length); + } +} + + +/* OLD IMPLEMENTATION +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz. */ +void mcdis_legacy_cylinder( double x, double y, double z, + double r, double height, int N, double nx, double ny, double nz){ + int i; + /*no lines make little sense - so trigger the default*/ + if(N<=0) N=5; + + NORM(nx,ny,nz); + double h_2=height/2.0; + mcdis_Circle(x+nx*h_2,y+ny*h_2,z+nz*h_2,r,nx,ny,nz); + mcdis_Circle(x-nx*h_2,y-ny*h_2,z-nz*h_2,r,nx,ny,nz); + + double mx,my,mz; + /*generate perpendicular vector using (nx,ny,nz) and (0,1,0)*/ + if(nx==0 && ny && nz==0){ + mx=my=0;mz=1; + }else{ + vec_prod(mx,my,mz, 0,1,0, nx,ny,nz); + NORM(mx,my,mz); + } + /*draw circle*/ + for (i=0; i<24; i++){ + double ux,uy,uz; + rotate(ux,uy,uz, mx,my,mz, i*2*PI/24, nx,ny,nz); + mcdis_line(x+nx*h_2+ux*r, y+ny*h_2+uy*r, z+nz*h_2+uz*r, + x-nx*h_2+ux*r, y-ny*h_2+uy*r, z-nz*h_2+uz*r); + } +} + +/* NEW 3D IMPLEMENTATION ALSO SUPPORTING HOLLOW +Draws a cylinder with center at (x,y,z) with extent (r,height). + * The cylinder axis is along the vector nx,ny,nz.*/ +void mcdis_cylinder( double x, double y, double z, + double r, double height, double thickness, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cylinder(%g, %g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, thickness, nx, ny, nz); + } else { + mcdis_legacy_cylinder(x, y, z, + r, height, 12, nx, ny, nz); + } +} + +/* Draws a cone with center at (x,y,z) with extent (r,height). + * The cone axis is along the vector nx,ny,nz.*/ +void mcdis_cone( double x, double y, double z, + double r, double height, double nx, double ny, double nz){ + if (mcdotrace==2) { + printf("MCDISPLAY: cone(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, height, nx, ny, nz); + } else { + mcdis_Circle(x, y, z, r, nx, ny, nz); + mcdis_Circle(x+0.25*height*nx, y+0.25*height*ny, z+0.25*height*nz, 0.75*r, nx, ny, nz); + mcdis_Circle(x+0.5*height*nx, y+0.5*height*ny, z+0.5*height*nz, 0.5*r, nx, ny, nz); + mcdis_Circle(x+0.75*height*nx, y+0.75*height*ny, z+0.75*height*nz, 0.25*r, nx, ny, nz); + mcdis_line(x, y, z, x+height*nx, y+height*ny, z+height*nz); + } +} + +/* Draws a disc with center at (x,y,z) with extent (r). + * The disc axis is along the vector nx,ny,nz.*/ +void mcdis_disc( double x, double y, double z, + double r, double nx, double ny, double nz){ + printf("MCDISPLAY: disc(%g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, r, nx, ny, nz); +} + +/* Draws a annulus with center at (x,y,z) with extent (outer_radius) and remove inner_radius. + * The annulus axis is along the vector nx,ny,nz.*/ +void mcdis_annulus( double x, double y, double z, + double outer_radius, double inner_radius, double nx, double ny, double nz){ + printf("MCDISPLAY: annulus(%g, %g, %g, %g, %g, %g, %g, %g)\n", + x, y, z, outer_radius, inner_radius, nx, ny, nz); +} + +/* draws a sphere with center at (x,y,z) with extent (r)*/ +void mcdis_sphere(double x, double y, double z, double r){ + if (mcdotrace==2) { + printf("MCDISPLAY: sphere(%g,%g,%g,%g)\n", x, y, z, r); + } else { + double nx,ny,nz; + int i; + int N=12; + + nx=0;ny=0;nz=1; + mcdis_Circle(x,y,z,r,nx,ny,nz); + for (i=1;i 3) { + /* Split in triangles - as many as polygon rank */ + faceSize=count; + vtxSize=count+1; + } else { + faceSize=1; + vtxSize=count; + } + + for (int i = 0; i < faceSize;) { + int num_indices = 3; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + if (count==3) { // Single, basic triangle + ptr += sprintf(ptr, "[%g, %g, %g], [%g, %g, %g], [%g, %g, %g]", x[0], y[0], z[0], x[1], y[1], z[1], x[2], y[2], z[2]); + } else { + for (int i = 0; i < vtxSize-1; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", x[i], y[i], z[i]); + if (i < vtxSize - 2) { + ptr += sprintf(ptr, ", "); + } else { + ptr += sprintf(ptr, ", [%g, %g, %g]", x0, y0, z0); + } + } + } + ptr += sprintf(ptr, "], \"faces\": ["); + if (count==3) { // Single, basic triangle, 1 face... + ptr += sprintf(ptr, "{ \"face\": ["); + ptr += sprintf(ptr, "0, 1, 2"); + ptr += sprintf(ptr, "]}"); + } else { + for (int i = 0; i < faceSize; i++) { + int num = 3; + ptr += sprintf(ptr, "{ \"face\": ["); + if (i < faceSize - 1) { + ptr += sprintf(ptr, "%d, %d, %d",i,i+1,count); + } else { + ptr += sprintf(ptr, "%d, %d, %d",i,count,0); + } + ptr += sprintf(ptr, "]}"); + if (i < faceSize-1) { + ptr += sprintf(ptr, ", "); + } + } + } + ptr += sprintf(ptr, "]}"); + mcdis_polyhedron(json_string); + + free(json_string); + } + free(x);free(y);free(z); +} +/* END NEW POLYGON IMPLEMENTATION*/ + +/* +void mcdis_polygon(double x1, double y1, double z1, + double x2, double y2, double z2){ + printf("MCDISPLAY: polygon(2,%g,%g,%g,%g,%g,%g)\n", + x1,y1,z1,x2,y2,z2); +} +*/ + +/* SECTION: coordinates handling ============================================ */ + +/******************************************************************************* +* Since we use a lot of geometric calculations using Cartesian coordinates, +* we collect some useful routines here. However, it is also permissible to +* work directly on the underlying struct coords whenever that is most +* convenient (that is, the type Coords is not abstract). +* +* Coordinates are also used to store rotation angles around x/y/z axis. +* +* Since coordinates are used much like a basic type (such as double), the +* structure itself is passed and returned, rather than a pointer. +* +* At compile-time, the values of the coordinates may be unknown (for example +* a motor position). Hence coordinates are general expressions and not simple +* numbers. For this we used the type Coords_exp which has three CExp +* fields. For runtime (or calculations possible at compile time), we use +* Coords which contains three double fields. +*******************************************************************************/ + +/* coords_set: Assign coordinates. */ +Coords coords_set(MCNUM x, MCNUM y, MCNUM z) +{ + Coords a; + + a.x = x; + a.y = y; + a.z = z; + return a; +} + +/* coords_get: get coordinates. Required when 'x','y','z' are #defined as ray pars */ +Coords coords_get(Coords a, MCNUM *x, MCNUM *y, MCNUM *z) +{ + *x = a.x; + *y = a.y; + *z = a.z; + return a; +} + +/* coords_add: Add two coordinates. */ +Coords coords_add(Coords a, Coords b) +{ + Coords c; + + c.x = a.x + b.x; + c.y = a.y + b.y; + c.z = a.z + b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_sub: Subtract two coordinates. */ +Coords coords_sub(Coords a, Coords b) +{ + Coords c; + + c.x = a.x - b.x; + c.y = a.y - b.y; + c.z = a.z - b.z; + if (fabs(c.z) < 1e-14) c.z=0.0; + return c; +} + +/* coords_neg: Negate coordinates. */ +Coords coords_neg(Coords a) +{ + Coords b; + + b.x = -a.x; + b.y = -a.y; + b.z = -a.z; + return b; +} + +/* coords_scale: Scale a vector. */ +Coords coords_scale(Coords b, double scale) { + Coords a; + + a.x = b.x*scale; + a.y = b.y*scale; + a.z = b.z*scale; + return a; +} + +/* coords_sp: Scalar product: a . b */ +double coords_sp(Coords a, Coords b) { + double value; + + value = a.x*b.x + a.y*b.y + a.z*b.z; + return value; +} + +/* coords_xp: Cross product: a = b x c. */ +Coords coords_xp(Coords b, Coords c) { + Coords a; + + a.x = b.y*c.z - c.y*b.z; + a.y = b.z*c.x - c.z*b.x; + a.z = b.x*c.y - c.x*b.y; + return a; +} + +/* coords_len: Gives length of coords set. */ +double coords_len(Coords a) { + return sqrt(a.x*a.x + a.y*a.y + a.z*a.z); +} + +/* coords_mirror: Mirror a in plane (through the origin) defined by normal n*/ +Coords coords_mirror(Coords a, Coords n) { + double t = scalar_prod(n.x, n.y, n.z, n.x, n.y, n.z); + Coords b; + if (t!=1) { + t = sqrt(t); + n.x /= t; + n.y /= t; + n.z /= t; + } + t=scalar_prod(a.x, a.y, a.z, n.x, n.y, n.z); + b.x = a.x-2*t*n.x; + b.y = a.y-2*t*n.y; + b.z = a.z-2*t*n.z; + return b; +} + +/* coords_print: Print out vector values. */ +void coords_print(Coords a) { + #ifndef OPENACC + fprintf(stdout, "(%f, %f, %f)\n", a.x, a.y, a.z); + #endif + return; +} + +mcstatic void coords_norm(Coords* c) { + double temp = coords_sp(*c,*c); + + // Skip if we will end dividing by zero + if (temp == 0) return; + + temp = sqrt(temp); + + c->x /= temp; + c->y /= temp; + c->z /= temp; +} + +/* coords_test_zero: check if zero vector*/ +int coords_test_zero(Coords a){ + return ( a.x==0 && a.y==0 && a.z==0 ); +} + +/******************************************************************************* +* The Rotation type implements a rotation transformation of a coordinate +* system in the form of a double[3][3] matrix. +* +* Contrary to the Coords type in coords.c, rotations are passed by +* reference. Functions that yield new rotations do so by writing to an +* explicit result parameter; rotations are not returned from functions. The +* reason for this is that arrays cannot by returned from functions (though +* structures can; thus an alternative would have been to wrap the +* double[3][3] array up in a struct). Such are the ways of C programming. +* +* A rotation represents the tranformation of the coordinates of a vector when +* changing between coordinate systems that are rotated with respect to each +* other. For example, suppose that coordinate system Q is rotated 45 degrees +* around the Z axis with respect to coordinate system P. Let T be the +* rotation transformation representing a 45 degree rotation around Z. Then to +* get the coordinates of a vector r in system Q, apply T to the coordinates +* of r in P. If r=(1,0,0) in P, it will be (sqrt(1/2),-sqrt(1/2),0) in +* Q. Thus we should be careful when interpreting the sign of rotation angles: +* they represent the rotation of the coordinate systems, not of the +* coordinates (which has opposite sign). +*******************************************************************************/ + +/******************************************************************************* +* rot_set_rotation: Get transformation for rotation first phx around x axis, +* then phy around y, then phz around z. +*******************************************************************************/ +void rot_set_rotation(Rotation t, double phx, double phy, double phz) +{ + if ((phx == 0) && (phy == 0) && (phz == 0)) { + t[0][0] = 1.0; + t[0][1] = 0.0; + t[0][2] = 0.0; + t[1][0] = 0.0; + t[1][1] = 1.0; + t[1][2] = 0.0; + t[2][0] = 0.0; + t[2][1] = 0.0; + t[2][2] = 1.0; + } else { + double cx = cos(phx); + double sx = sin(phx); + double cy = cos(phy); + double sy = sin(phy); + double cz = cos(phz); + double sz = sin(phz); + + t[0][0] = cy*cz; + t[0][1] = sx*sy*cz + cx*sz; + t[0][2] = sx*sz - cx*sy*cz; + t[1][0] = -cy*sz; + t[1][1] = cx*cz - sx*sy*sz; + t[1][2] = sx*cz + cx*sy*sz; + t[2][0] = sy; + t[2][1] = -sx*cy; + t[2][2] = cx*cy; + } +} + +/******************************************************************************* +* rot_test_identity: Test if rotation is identity +*******************************************************************************/ +int rot_test_identity(Rotation t) +{ + return (t[0][0] + t[1][1] + t[2][2] == 3); +} + +/******************************************************************************* +* rot_mul: Matrix multiplication of transformations (this corresponds to +* combining transformations). After rot_mul(T1, T2, T3), doing T3 is +* equal to doing first T2, then T1. +* Note that T3 must not alias (use the same array as) T1 or T2. +*******************************************************************************/ +void rot_mul(Rotation t1, Rotation t2, Rotation t3) +{ + if (rot_test_identity(t1)) { + rot_copy(t3, t2); + } else if (rot_test_identity(t2)) { + rot_copy(t3, t1); + } else { + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + t3[i][j] = t1[i][0]*t2[0][j] + t1[i][1]*t2[1][j] + t1[i][2]*t2[2][j]; + } +} + +/******************************************************************************* +* rot_copy: Copy a rotation transformation (arrays cannot be assigned in C). +*******************************************************************************/ +void rot_copy(Rotation dest, Rotation src) +{ + int i,j; + for(i = 0; i < 3; i++) + for(j = 0; j < 3; j++) + dest[i][j] = src[i][j]; +} + +/******************************************************************************* +* rot_transpose: Matrix transposition, which is inversion for Rotation matrices +*******************************************************************************/ +void rot_transpose(Rotation src, Rotation dst) +{ + dst[0][0] = src[0][0]; + dst[0][1] = src[1][0]; + dst[0][2] = src[2][0]; + dst[1][0] = src[0][1]; + dst[1][1] = src[1][1]; + dst[1][2] = src[2][1]; + dst[2][0] = src[0][2]; + dst[2][1] = src[1][2]; + dst[2][2] = src[2][2]; +} + +/******************************************************************************* +* rot_apply: returns t*a +*******************************************************************************/ +Coords rot_apply(Rotation t, Coords a) +{ + Coords b; + if (rot_test_identity(t)) { + return a; + } else { + b.x = t[0][0]*a.x + t[0][1]*a.y + t[0][2]*a.z; + b.y = t[1][0]*a.x + t[1][1]*a.y + t[1][2]*a.z; + b.z = t[2][0]*a.x + t[2][1]*a.y + t[2][2]*a.z; + return b; + } +} + +/** + * Pretty-printing of rotation matrices. + */ +void rot_print(Rotation rot) { + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[0][0], rot[0][1], rot[0][2]); + printf("[ %4.2f %4.2f %4.2f ]\n", + rot[1][0], rot[1][1], rot[1][2]); + printf("[ %4.2f %4.2f %4.2f ]\n\n", + rot[2][0], rot[2][1], rot[2][2]); +} + +/** + * Vector product: used by vec_prod (mccode-r.h). Use coords_xp for Coords. + */ +void vec_prod_func(double *x, double *y, double *z, + double x1, double y1, double z1, + double x2, double y2, double z2) { + *x = (y1)*(z2) - (y2)*(z1); + *y = (z1)*(x2) - (z2)*(x1); + *z = (x1)*(y2) - (x2)*(y1); +} + +/** + * Scalar product: use coords_sp for Coords. + */ +double scalar_prod( + double x1, double y1, double z1, + double x2, double y2, double z2) { + return ((x1 * x2) + (y1 * y2) + (z1 * z2)); +} + +mcstatic void norm_func(double *x, double *y, double *z) { + double temp = (*x * *x) + (*y * *y) + (*z * *z); + if (temp != 0) { + temp = sqrt(temp); + *x /= temp; + *y /= temp; + *z /= temp; + } +} + + +/* SECTION: GPU algorithms ================================================== */ + + +/* +* Divide-and-conquer strategy for parallelizing this task: Sort absorbed +* particles last. +* +* particles: the particle array, required to checking _absorbed +* pbuffer: same-size particle buffer array required for parallel sort +* len: sorting area-of-interest size (e.g. from previous calls) +* buffer_len: total array size +* flag_split: if set, multiply live particles into absorbed slots, up to buffer_len +* multiplier: output arg, becomes the SPLIT multiplier if flag_split is set +*/ +#ifdef FUNNEL +long sort_absorb_last(_class_particle* particles, _class_particle* pbuffer, long len, long buffer_len, long flag_split, long* multiplier) { + #define SAL_THREADS 1024 // num parallel sections + if (len_absorbed)); + + // return (no SPLIT) + if (flag_split != 1) + return accumlen; + + // SPLIT - repeat the non-absorbed block N-1 times, where len % accumlen = N + R + int mult = buffer_len / accumlen; // TODO: possibly use a new arg, bufferlen, rather than len + + // not enough space for full-block split, return + if (mult <= 1) + return accumlen; + + // copy non-absorbed block + #pragma acc parallel loop present(particles[0:buffer_len]) + for (long tidx = 0; tidx < accumlen; tidx++) { // tidx: thread index + randstate_t randstate[7]; + _class_particle sourcebuffer; + _class_particle targetbuffer; + // assign reduced weight to all particles + particles[tidx].p=particles[tidx].p/mult; + #pragma acc loop seq + for (long bidx = 1; bidx < mult; bidx++) { // bidx: block index + // preserve absorbed particle (for randstate) + sourcebuffer = particles[bidx*accumlen + tidx]; + // buffer full particle struct + targetbuffer = particles[tidx]; + // reassign previous randstate + targetbuffer.randstate[0] = sourcebuffer.randstate[0]; + targetbuffer.randstate[1] = sourcebuffer.randstate[1]; + targetbuffer.randstate[2] = sourcebuffer.randstate[2]; + targetbuffer.randstate[3] = sourcebuffer.randstate[3]; + targetbuffer.randstate[4] = sourcebuffer.randstate[4]; + targetbuffer.randstate[5] = sourcebuffer.randstate[5]; + targetbuffer.randstate[6] = sourcebuffer.randstate[6]; + // apply + particles[bidx*accumlen + tidx] = targetbuffer; + } + } + + // set out split multiplier value + *multiplier = mult; + + // return expanded array size + return accumlen * mult; +} + +#endif + +/* +* Fallback serial version of the one above. +*/ +long sort_absorb_last_serial(_class_particle* particles, long len) { + long i = 0; + long j = len - 1; + _class_particle pbuffer; + + // bubble + while (i < j) { + while (!particles[i]._absorbed && ix; + b.y = particle->y; + b.z = particle->z; + c = rot_apply(t, b); + b = coords_add(c, a); + particle->x = b.x; + particle->y = b.y; + particle->z = b.z; + +#if MCCODE_PARTICLE_CODE == 2112 + if (particle->vz != 0.0 || particle->vx != 0.0 || particle->vy != 0.0) + mccoordschange_polarisation(t, &(particle->vx), &(particle->vy), &(particle->vz)); + + if (particle->sz != 0.0 || particle->sx != 0.0 || particle->sy != 0.0) + mccoordschange_polarisation(t, &(particle->sx), &(particle->sy), &(particle->sz)); +#elif MCCODE_PARTICLE_CODE == 22 + if (particle->kz != 0.0 || particle->kx != 0.0 || particle->ky != 0.0) + mccoordschange_polarisation(t, &(particle->kx), &(particle->ky), &(particle->kz)); + + if (particle->Ez != 0.0 || particle->Ex != 0.0 || particle->Ey != 0.0) + mccoordschange_polarisation(t, &(particle->Ex), &(particle->Ey), &(particle->Ez)); +#endif +} + +/******************************************************************************* +* mccoordschange_polarisation: applies rotation to vector (sx sy sz) +*******************************************************************************/ +void mccoordschange_polarisation(Rotation t, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *sx; + b.y = *sy; + b.z = *sz; + c = rot_apply(t, b); + *sx = c.x; + *sy = c.y; + *sz = c.z; +} + +/* SECTION: vector math ==================================================== */ + +/* normal_vec_func: Compute normal vector to (x,y,z). */ +void normal_vec(double *nx, double *ny, double *nz, + double x, double y, double z) +{ + double ax = fabs(x); + double ay = fabs(y); + double az = fabs(z); + double l; + if(x == 0 && y == 0 && z == 0) + { + *nx = 0; + *ny = 0; + *nz = 0; + return; + } + if(ax < ay) + { + if(ax < az) + { /* Use X axis */ + l = sqrt(z*z + y*y); + *nx = 0; + *ny = z/l; + *nz = -y/l; + return; + } + } + else + { + if(ay < az) + { /* Use Y axis */ + l = sqrt(z*z + x*x); + *nx = z/l; + *ny = 0; + *nz = -x/l; + return; + } + } + /* Use Z axis */ + l = sqrt(y*y + x*x); + *nx = y/l; + *ny = -x/l; + *nz = 0; +} /* normal_vec */ + +/******************************************************************************* + * solve_2nd_order: second order equation solve: A*t^2 + B*t + C = 0 + * solve_2nd_order(&t1, NULL, A,B,C) + * returns 0 if no solution was found, or set 't1' to the smallest positive + * solution. + * solve_2nd_order(&t1, &t2, A,B,C) + * same as with &t2=NULL, but also returns the second solution. + * EXAMPLE usage for intersection of a trajectory with a plane in gravitation + * field (gx,gy,gz): + * The neutron starts at point r=(x,y,z) with velocityv=(vx vy vz). The plane + * has a normal vector n=(nx,ny,nz) and contains the point W=(wx,wy,wz). + * The problem consists in solving the 2nd order equation: + * 1/2.n.g.t^2 + n.v.t + n.(r-W) = 0 + * so that A = 0.5 n.g; B = n.v; C = n.(r-W); + * Without acceleration, t=-n.(r-W)/n.v + ******************************************************************************/ +int solve_2nd_order_old(double *t1, double *t2, + double A, double B, double C) +{ + int ret=0; + + if (!t1) return 0; + *t1 = 0; + if (t2) *t2=0; + + if (fabs(A) < 1E-10) /* approximate to linear equation: A ~ 0 */ + { + if (B) { *t1 = -C/B; ret=1; if (t2) *t2=*t1; } + /* else no intersection: A=B=0 ret=0 */ + } + else + { + double D; + D = B*B - 4*A*C; + if (D >= 0) /* Delta > 0: two solutions */ + { + double sD, dt1, dt2; + sD = sqrt(D); + dt1 = (-B + sD)/2/A; + dt2 = (-B - sD)/2/A; + /* we identify very small values with zero */ + if (fabs(dt1) < 1e-10) dt1=0.0; + if (fabs(dt2) < 1e-10) dt2=0.0; + + /* now we choose the smallest positive solution */ + if (dt1<=0.0 && dt2>0.0) ret=2; /* dt2 positive */ + else if (dt2<=0.0 && dt1>0.0) ret=1; /* dt1 positive */ + else if (dt1> 0.0 && dt2>0.0) + { if (dt1 < dt2) ret=1; else ret=2; } /* all positive: min(dt1,dt2) */ + /* else two solutions are negative. ret=-1 */ + if (ret==1) { *t1 = dt1; if (t2) *t2=dt2; } + else { *t1 = dt2; if (t2) *t2=dt1; } + ret=2; /* found 2 solutions and t1 is the positive one */ + } /* else Delta <0: no intersection. ret=0 */ + } + return(ret); +} /* solve_2nd_order */ + +int solve_2nd_order(double *t0, double *t1, double A, double B, double C){ + int retval=0; + double sign=copysign(1.0,B); + double dt0,dt1; + + dt0=0; + dt1=0; + if(t1){ *t1=0;} + + /*protect against rounding errors by locally equating DBL_EPSILON with 0*/ + if (fabs(A)=0){ + dt0=(-B - sign*sqrt(B*B-4*A*C))/(2*A); + dt1=C/(A*dt0); + retval=2; + }else{ + /*no real roots*/ + retval=0; + } + } + /*sort the solutions*/ + if (retval==1){ + /*put both solutions in t0 and t1*/ + *t0=dt0; + if(t1) *t1=dt1; + }else{ + /*we have two solutions*/ + /*swap if both are positive and t1 smaller than t0 or t1 the only positive*/ + int swap=0; + if(dt1>0 && ( dt1) + * + * If height or width is zero, choose random direction in full 4PI, no target. + * + * Traditionally, this routine had the name randvec_target_rect - this is now a + * a define (see mcstas-r.h) pointing here. If you use the old rouine, you are NOT + * taking the local emmission coordinate into account. +*******************************************************************************/ +void _randvec_target_rect_real(double *xo, double *yo, double *zo, double *solid_angle, + double xi, double yi, double zi, + double width, double height, Rotation A, + double lx, double ly, double lz, int order, + _class_particle* _particle) +{ + double dx, dy, dist, dist_p, nx, ny, nz, mx, my, mz, n_norm, m_norm; + double cos_theta; + Coords tmp; + Rotation Ainverse; + + rot_transpose(A, Ainverse); + + if(height == 0.0 || width == 0.0) + { + randvec_target_circle(xo, yo, zo, solid_angle, + xi, yi, zi, 0); + return; + } + else + { + /* Now choose point uniformly on rectangle within width x height */ + dx = width*randpm1()/2.0; + dy = height*randpm1()/2.0; + + /* Determine distance to target plane*/ + dist = sqrt(xi*xi + yi*yi + zi*zi); + /* Go to global coordinate system */ + + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(Ainverse, tmp); + coords_get(tmp, &xi, &yi, &zi); + + /* Determine vector normal to trajectory axis (z) and gravity [0 1 0] */ + vec_prod(nx, ny, nz, xi, yi, zi, 0, 1, 0); + + /* This now defines the x-axis, normalize: */ + n_norm=sqrt(nx*nx + ny*ny + nz*nz); + nx = nx/n_norm; + ny = ny/n_norm; + nz = nz/n_norm; + + /* Now, determine our y-axis (vertical in many cases...) */ + vec_prod(mx, my, mz, xi, yi, zi, nx, ny, nz); + m_norm=sqrt(mx*mx + my*my + mz*mz); + mx = mx/m_norm; + my = my/m_norm; + mz = mz/m_norm; + + /* Our output, random vector can now be defined by linear combination: */ + + *xo = xi + dx * nx + dy * mx; + *yo = yi + dx * ny + dy * my; + *zo = zi + dx * nz + dy * mz; + + /* Go back to local coordinate system */ + tmp = coords_set(*xo, *yo, *zo); + tmp = rot_apply(A, tmp); + coords_get(tmp, &*xo, &*yo, &*zo); + + /* Go back to local coordinate system */ + tmp = coords_set(xi, yi, zi); + tmp = rot_apply(A, tmp); + coords_get(tmp, &xi, &yi, &zi); + + if (solid_angle) { + /* Calculate vector from local point to remote random point */ + lx = *xo - lx; + ly = *yo - ly; + lz = *zo - lz; + dist_p = sqrt(lx*lx + ly*ly + lz*lz); + + /* Adjust the 'solid angle' */ + /* 1/r^2 to the chosen point times cos(\theta) between the normal */ + /* vector of the target rectangle and direction vector of the chosen point. */ + cos_theta = (xi * lx + yi * ly + zi * lz) / (dist * dist_p); + *solid_angle = width * height / (dist_p * dist_p); + int counter; + for (counter = 0; counter < order; counter++) { + *solid_angle = *solid_angle * cos_theta; + } + } + } +} +/* randvec_target_rect_real */ + + +/* SECTION: random numbers ================================================== + + How to add a new RNG: + + - Use an rng with a manegable state vector, e.g. of lengt 4 or 7. The state + will sit on the particle struct as a "randstate_t state[RANDSTATE_LEN]" + - If the rng has a long state (as MT), set an empty "srandom" and initialize + it explicitly using the appropriate define (RNG_ALG) + - Add a seed and a random function (the transforms will be reused) + - Write the proper defines in mccode-r.h, e.g. randstate_t and RANDSTATE_LEN, + srandom and random. + - Compile using -DRNG_ALG= + +============================================================================= */ + + +/* "Mersenne Twister", by Makoto Matsumoto and Takuji Nishimura. */ +/* See http://www.math.keio.ac.jp/~matumoto/emt.html for original source. */ +/* + A C-program for MT19937, with initialization improved 2002/1/26. + Coded by Takuji Nishimura and Makoto Matsumoto. + + Before using, initialize the state by using mt_srandom(seed) + or init_by_array(init_key, key_length). + + Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + Any feedback is very welcome. + http://www.math.keio.ac.jp/matumoto/emt.html + email: matumoto@math.keio.ac.jp +*/ +#include +#include // for uint32_t +#include // for size_t + +/* Period parameters */ +#define N 624 +#define M 397 +#define MATRIX_A 0x9908b0dfU /* constant vector a */ +#define UPPER_MASK 0x80000000U /* most significant w-r bits */ +#define LOWER_MASK 0x7fffffffU /* least significant r bits */ + +static uint32_t mt[N]; /* the array for the state vector */ +static int mti = N + 1; /* mti==N+1 means mt[N] is not initialized */ + +// Required for compatibility with common RNG interface (e.g., kiss/mt polymorphism) +void mt_srandom_empty(void) {} + +// Initializes mt[N] with a seed +void mt_srandom(uint32_t seed) { + mt[0] = seed; + for (mti = 1; mti < N; mti++) { + mt[mti] = 1812433253U * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti; + /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ + /* In the previous versions, MSBs of the seed affect */ + /* only MSBs of the array mt[]. */ + /* 2002/01/09 modified by Makoto Matsumoto */ + mt[mti] &= 0xffffffffU; + /* for >32 bit machines */ + } +} +/* Initialize by an array with array-length. + Init_key is the array for initializing keys. + key_length is its length. */ +void init_by_array(uint32_t init_key[], size_t key_length) { + size_t i = 1, j = 0, k; + mt_srandom(19650218U); + k = (N > key_length ? N : key_length); + for (; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525U)) + + init_key[j] + (uint32_t)j; + mt[i] &= 0xffffffffU; + i++; j++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + if (j >= key_length) j = 0; + } + for (k = N - 1; k; k--) { + mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941U)) + - (uint32_t)i; + mt[i] &= 0xffffffffU; + i++; + if (i >= N) { mt[0] = mt[N - 1]; i = 1; } + } + mt[0] = 0x80000000U; /* MSB is 1; ensuring non-zero initial array */ +} + +// Generates a random number on [0, 0xffffffff]-interval +uint32_t mt_random(void) { + uint32_t y; + static const uint32_t mag01[2] = { 0x0U, MATRIX_A }; + /* mag01[x] = x * MATRIX_A for x=0,1 */ + + if (mti >= N) { /* generate N words at one time */ + int kk; + + if (mti == N + 1) /* if mt_srandom() has not been called, */ + mt_srandom(5489U); /* a default initial seed is used */ + + for (kk = 0; kk < N - M; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + for (; kk < N - 1; kk++) { + y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); + mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1U]; + } + y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); + mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1U]; + + mti = 0; + } + + y = mt[mti++]; + + /* Tempering */ + y ^= (y >> 11); + y ^= (y << 7) & 0x9d2c5680U; + y ^= (y << 15) & 0xefc60000U; + y ^= (y >> 18); + + return y; +} +#undef N +#undef M +#undef MATRIX_A +#undef UPPER_MASK +#undef LOWER_MASK +/* End of "Mersenne Twister". */ + + +/* +KISS + + From: http://www.helsbreth.org/random/rng_kiss.html + Scott Nelson 1999 + + Based on Marsaglia's KISS or (KISS+SWB) + + KISS - Keep it Simple Stupid PRNG + + the idea is to use simple, fast, individually promising + generators to get a composite that will be fast, easy to code + have a very long period and pass all the tests put to it. + The three components of KISS are + x(n)=a*x(n-1)+1 mod 2^32 + y(n)=y(n-1)(I+L^13)(I+R^17)(I+L^5), + z(n)=2*z(n-1)+z(n-2) +carry mod 2^32 + The y's are a shift register sequence on 32bit binary vectors + period 2^32-1; + The z's are a simple multiply-with-carry sequence with period + 2^63+2^32-1. The period of KISS is thus + 2^32*(2^32-1)*(2^63+2^32-1) > 2^127 + + In 2025 adapted for consistent 64-bit behavior across platforms. +*/ + +/* the KISS state is stored as a vector of 7 uint64_t */ +/* 0 1 2 3 4 5 6 */ +/* [ x, y, z, w, carry, k, m ] */ + +uint64_t *kiss_srandom(uint64_t state[7], uint64_t seed) { + if (seed == 0) seed = 1ull; + state[0] = seed | 1ull; // x + state[1] = seed | 2ull; // y + state[2] = seed | 4ull; // z + state[3] = seed | 8ull; // w + state[4] = 0ull; // carry + state[5] = 0ull; // k + state[6] = 0ull; // m + return state; +} + +uint64_t kiss_random(uint64_t state[7]) { + // Linear congruential generator + state[0] = state[0] * 69069ull + 1ull; + + // Xorshift + state[1] ^= state[1] << 13ull; + state[1] ^= state[1] >> 17ull; + state[1] ^= state[1] << 5ull; + + // Multiply-with-carry + state[5] = (state[2] >> 2ull) + (state[3] >> 3ull) + (state[4] >> 2ull); + state[6] = state[3] + state[3] + state[2] + state[4]; + state[2] = state[3]; + state[3] = state[6]; + state[4] = state[5] >> 62ull; // Top bit of carry (adjusted for 64-bit) + + return state[0] + state[1] + state[3]; +} +/* end of "KISS" rng */ + + +/* FAST KISS in another implementation (Hundt) */ + +////////////////////////////////////////////////////////////////////////////// +// fast keep it simple stupid generator +////////////////////////////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////////////////////////// +// Thomas Mueller hash for initialization of rngs +// http://stackoverflow.com/questions/664014/ +// what-integer-hash-function-are-good-that-accepts-an-integer-hash-key +////////////////////////////////////////////////////////////////////////////// +randstate_t _hash(randstate_t x) { + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x) * (randstate_t)0x45d9f3b; + x = ((x >> 16) ^ x); + return x; +} + + +// SECTION: random number transforms ========================================== + + + +// generate a random number from normal law +double _randnorm(randstate_t* state) +{ + static double v1, v2, s; /* removing static breaks comparison with McStas <= 2.5 */ + static int phase = 0; + double X, u1, u2; + + if(phase == 0) + { + do + { + u1 = _rand01(state); + u2 = _rand01(state); + v1 = 2*u1 - 1; + v2 = 2*u2 - 1; + s = v1*v1 + v2*v2; + } while(s >= 1 || s == 0); + + X = v1*sqrt(-2*log(s)/s); + } + else + { + X = v2*sqrt(-2*log(s)/s); + } + + phase = 1 - phase; + return X; +} +// another one +double _randnorm2(randstate_t* state) { + double x, y, r; + do { + x = 2.0 * _rand01(state) - 1.0; + y = 2.0 * _rand01(state) - 1.0; + r = x*x + y*y; + } while (r == 0.0 || r >= 1.0); + return x * sqrt((-2.0 * log(r)) / r); +} + +// Generate a random number from -1 to 1 with triangle distribution +double _randtriangle(randstate_t* state) { + double randnum = _rand01(state); + if (randnum>0.5) return(1-sqrt(2*(randnum-0.5))); + else return(sqrt(2*randnum)-1); +} +double _rand01(randstate_t* state) { + double randnum; + randnum = (double) _random(); + // TODO: can we mult instead of div? + randnum /= (double) MC_RAND_MAX + 1; + return randnum; +} +// Return a random number between 1 and -1 +double _randpm1(randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / 2; + randnum -= 1; + return randnum; +} +// Return a random number between 0 and max. +double _rand0max(double max, randstate_t* state) { + double randnum; + randnum = (double) _random(); + randnum /= ((double) MC_RAND_MAX + 1) / max; + return randnum; +} +// Return a random number between min and max. +double _randminmax(double min, double max, randstate_t* state) { + return _rand0max(max - min, state) + max; +} + + +/* SECTION: main and signal handlers ======================================== */ + +/******************************************************************************* +* mchelp: displays instrument executable help with possible options +*******************************************************************************/ +static void +mchelp(char *pgmname) +{ + int i; + + fprintf(stderr, "%s (%s) instrument simulation, generated with " MCCODE_STRING " (" MCCODE_DATE ")\n", instrument_name, instrument_source); + fprintf(stderr, "Usage: %s [options] [parm=value ...]\n", pgmname); + fprintf(stderr, +"Options are:\n" +" -s SEED --seed=SEED Set random seed (must be != 0)\n" +" -n COUNT --ncount=COUNT Set number of particles to simulate.\n" +" -d DIR --dir=DIR Put all data files in directory DIR.\n" +" -t --trace Enable trace of " MCCODE_PARTICLE "s through instrument.\n" +" (Use -t=2 or --trace=2 for modernised mcdisplay rendering)\n" +" -g --gravitation Enable gravitation for all trajectories.\n" +" --no-output-files Do not write any data files.\n" +" -h --help Show this help message.\n" +" -i --info Detailed instrument information.\n" +" --list-parameters Print the instrument parameters to standard out\n" +" -y --yes Assume default values for all parameters with a default\n" +" --meta-list Print names of components which defined metadata\n" +" --meta-defined COMP[:NAME] Print component defined metadata names, or (0,1) if NAME provided\n" +" --meta-type COMP:NAME Print metadata format type specified in definition\n" +" --meta-data COMP:NAME Print the metadata text\n" +" --source Show the instrument code which was compiled.\n" +#ifdef OPENACC +"\n" +" --vecsize OpenACC vector-size (default: 128)\n" +" --numgangs Number of OpenACC gangs (default: 7813)\n" +" --gpu_innerloop Maximum rays to process pr. OpenACC \n" +" kernel run (default: 2147483647)\n" +"\n" +#endif +#ifdef TOF_TRAIN +" --tof-trains=K Number of TOF \"sub-particles\" (default 10)\n" +#endif +"\n" +" --bufsiz Monitor_nD list/buffer-size (default: 1000000)\n" +" --format=FORMAT Output data files using FORMAT=" + FLAVOR_UPPER +#ifdef USE_NEXUS + " NEXUS\n" +" --IDF Embed an xml-formatted IDF instrument definition\n" +" in the NeXus file (if existent in .)\n\n" +#else +"\n\n" +#endif +); +#ifdef USE_MPI + fprintf(stderr, + "This instrument has been compiled with MPI support.\n Use 'mpirun %s [options] [parm=value ...]'.\n", pgmname); +#endif +#ifdef OPENACC + fprintf(stderr, + "This instrument has been compiled with NVIDIA GPU support through OpenACC.\n Running on systems without such devices will lead to segfaults.\nFurter, fprintf, sprintf and printf have been removed from any component TRACE.\n"); +#endif + + if(numipar > 0) + { + fprintf(stderr, "Instrument parameters are:\n"); + for(i = 0; i < numipar; i++) + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + fprintf(stderr, " %-16s(%s) [default='%s']\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name), + mcinputtable[i].val); + else + fprintf(stderr, " %-16s(%s)\n", mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo)(mcinputtable[i].name)); + } + +#ifndef NOSIGNALS + fprintf(stderr, "Known signals are: " +#ifdef SIGUSR1 + "USR1 (status) " +#endif +#ifdef SIGUSR2 + "USR2 (save) " +#endif +#ifdef SIGBREAK + "BREAK (save) " +#endif +#ifdef SIGTERM + "TERM (save and exit)" +#endif + "\n"); +#endif /* !NOSIGNALS */ +} /* mchelp */ + + +/* mcshowhelp: show help and exit with 0 */ +static void +mcshowhelp(char *pgmname) +{ + mchelp(pgmname); + exit(0); +} + +/* mcusage: display usage when error in input arguments and exit with 1 */ +static void +mcusage(char *pgmname) +{ + fprintf(stderr, "Error: incorrect command line arguments\n"); + mchelp(pgmname); + exit(1); +} + +/* mcenabletrace: enable trace/mcdisplay or error if requires recompile */ +static void +mcenabletrace(int mode) +{ + if(traceenabled) { + mcdotrace = mode; + #pragma acc update device ( mcdotrace ) + } else { + if (mode>0) { + fprintf(stderr, + "Error: trace not enabled (mcenabletrace)\n" + "Please re-run the " MCCODE_NAME " compiler " + "with the --trace option, or rerun the\n" + "C compiler with the MC_TRACE_ENABLED macro defined.\n"); + exit(1); + } + } +} + +/******************************************************************************* +* mcreadparams: request parameters from the prompt (or use default) +*******************************************************************************/ +void +mcreadparams(void) +{ + int i,j,status; + static char buf[CHAR_BUF_LENGTH]; + char *p; + int len; + + MPI_MASTER(printf("Instrument parameters for %s (%s)\n", + instrument_name, instrument_source)); + + for(i = 0; mcinputtable[i].name != 0; i++) + { + do + { + MPI_MASTER( + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) + printf("Set value of instrument parameter %s (%s) [default='%s']:\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name), mcinputtable[i].val); + else + printf("Set value of instrument parameter %s (%s):\n", + mcinputtable[i].name, + (*mcinputtypes[mcinputtable[i].type].parminfo) + (mcinputtable[i].name)); + fflush(stdout); + ); +#ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) + { + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } + } + else + p = buf; + MPI_Bcast(buf, CHAR_BUF_LENGTH, MPI_CHAR, mpi_node_root, MPI_COMM_WORLD); +#else /* !USE_MPI */ + p = fgets(buf, CHAR_BUF_LENGTH, stdin); + if(p == NULL) + { + fprintf(stderr, "Error: empty input for paramater %s (mcreadparams)\n", mcinputtable[i].name); + exit(1); + } +#endif /* USE_MPI */ + len = strlen(buf); + if (!len || (len == 1 && (buf[0] == '\n' || buf[0] == '\r'))) + { + if (mcinputtable[i].val && strlen(mcinputtable[i].val)) { + strncpy(buf, mcinputtable[i].val, CHAR_BUF_LENGTH); /* use default value */ + len = strlen(buf); + } + } + for(j = 0; j < 2; j++) + { + if(len > 0 && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) + { + len--; + buf[len] = '\0'; + } + } + + status = (*mcinputtypes[mcinputtable[i].type].getparm) + (buf, mcinputtable[i].par); + if(!status) + { + (*mcinputtypes[mcinputtable[i].type].error)(mcinputtable[i].name, buf); + if (!mcinputtable[i].val || strlen(mcinputtable[i].val)) { + fprintf(stderr, " Change %s default value in instrument definition.\n", mcinputtable[i].name); + exit(1); + } + } + } while(!status); + } +} /* mcreadparams */ + +/******************************************************************************* +* mcparseoptions: parse command line arguments (options, parameters) +*******************************************************************************/ +void +mcparseoptions(int argc, char *argv[]) +{ + int i, j; + char *p; + int paramset = 0, *paramsetarray; + char *usedir=NULL; + + #ifdef TOF_TRAIN + NTOF=100; /* Default to 100 TOF "sub-particles" in a TOF_TRAIN */ + #endif + + /* Add one to numipar to avoid allocating zero size memory block. */ + paramsetarray = (int*)malloc((numipar + 1)*sizeof(*paramsetarray)); + if(paramsetarray == NULL) + { + fprintf(stderr, "Error: insufficient memory (mcparseoptions)\n"); + exit(1); + } + for(j = 0; j < numipar; j++) + { + paramsetarray[j] = 0; + if (mcinputtable[j].val != NULL && strlen(mcinputtable[j].val)) + { + int status; + char buf[CHAR_BUF_LENGTH]; + strncpy(buf, mcinputtable[j].val, CHAR_BUF_LENGTH); + status = (*mcinputtypes[mcinputtable[j].type].getparm) + (buf, mcinputtable[j].par); + if(!status) fprintf(stderr, "Invalid '%s' default value %s in instrument definition (mcparseoptions)\n", mcinputtable[j].name, buf); + else paramsetarray[j] = 1; + } else { + (*mcinputtypes[mcinputtable[j].type].getparm) + (NULL, mcinputtable[j].par); + paramsetarray[j] = 0; + } + } + for(i = 1; i < argc; i++) + { + if(!strcmp("-s", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("-s", argv[i], 2)) + mcsetseed(&argv[i][2]); + else if(!strcmp("--seed", argv[i]) && (i + 1) < argc) + mcsetseed(argv[++i]); + else if(!strncmp("--seed=", argv[i], 7)) + mcsetseed(&argv[i][7]); + else if(!strcmp("-n", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("-n", argv[i], 2)) + mcsetn_arg(&argv[i][2]); + else if(!strcmp("--ncount", argv[i]) && (i + 1) < argc) + mcsetn_arg(argv[++i]); + else if(!strncmp("--ncount=", argv[i], 9)) + mcsetn_arg(&argv[i][9]); + else if(!strcmp("-d", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; /* will create directory after parsing all arguments (end of this function) */ + else if(!strncmp("-d", argv[i], 2)) + usedir=&argv[i][2]; + else if(!strcmp("--dir", argv[i]) && (i + 1) < argc) + usedir=argv[++i]; + else if(!strncmp("--dir=", argv[i], 6)) + usedir=&argv[i][6]; + else if(!strcmp("-h", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("--help", argv[i]) || !strcmp("--version", argv[i])) + mcshowhelp(argv[0]); + else if(!strcmp("-i", argv[i])) { + mcformat=FLAVOR_UPPER; + mcinfo(); + } + else if(!strcmp("--info", argv[i])) + mcinfo(); + else if (!strcmp("--list-parameters", argv[i])) + mcparameterinfo(); + else if (!strcmp("--meta-list", argv[i]) && ((i+1) >= argc || argv[i+1][0] == '-')){ + //printf("Components with metadata defined:\n"); + exit(metadata_table_print_all_components(num_metadata, metadata_table) == 0); + } + else if (!strcmp("--meta-defined", argv[i]) && (i+1) < argc){ + exit(metadata_table_print_component_keys(num_metadata, metadata_table, argv[i+1]) == 0); + } + else if (!strcmp("--meta-type", argv[i]) && (i+1) < argc){ + char * literal_type = metadata_table_type(num_metadata, metadata_table, argv[i+1]); + if (literal_type == NULL) exit(1); + printf("%s\n", literal_type); + exit(0); + } + else if (!strcmp("--meta-data", argv[i]) && (i+1) < argc){ + char * literal = metadata_table_literal(num_metadata, metadata_table, argv[i+1]); + if (literal == NULL) exit(1); + printf("%s\n", literal); + exit(0); + } + else if(!strncmp("--trace=", argv[i], 8)) { + mcenabletrace(atoi(&argv[i][8])); + } else if(!strncmp("-t=", argv[i], 3) || !strcmp("--verbose", argv[i])) { + mcenabletrace(atoi(&argv[i][3])); + } else if(!strcmp("-t", argv[i])) + mcenabletrace(1); + else if(!strcmp("--trace", argv[i]) || !strcmp("--verbose", argv[i])) + mcenabletrace(1); + else if(!strcmp("--gravitation", argv[i])) + mcgravitation = 1; + else if(!strcmp("-g", argv[i])) + mcgravitation = 1; + else if(!strcmp("--yes", argv[i])) + mcusedefaults = 1; + else if(!strcmp("-y", argv[i])) + mcusedefaults = 1; + else if(!strncmp("--format=", argv[i], 9)) { + mcformat=&argv[i][9]; + } + else if(!strcmp("--format", argv[i]) && (i + 1) < argc) { + mcformat=argv[++i]; + } +#ifdef TOF_TRAIN + else if(!strncmp("--tof-trains=", argv[i], 13)) { + NTOF=atoi(&argv[i][13]); + } +#endif +#ifdef USE_NEXUS + else if(!strcmp("--IDF", argv[i])) { + mcnexus_embed_idf = 1; + } +#endif + else if(!strncmp("--vecsize=", argv[i], 10)) { + vecsize=atoi(&argv[i][10]); + } + else if(!strcmp("--vecsize", argv[i]) && (i + 1) < argc) { + vecsize=atoi(argv[++i]); + } + else if(!strncmp("--bufsiz=", argv[i], 9)) { + MONND_BUFSIZ=atoi(&argv[i][9]); + } + else if(!strcmp("--bufsiz", argv[i]) && (i + 1) < argc) { + MONND_BUFSIZ=atoi(argv[++i]); + } + else if(!strncmp("--numgangs=", argv[i], 11)) { + numgangs=atoi(&argv[i][11]); + } + else if(!strcmp("--numgangs", argv[i]) && (i + 1) < argc) { + numgangs=atoi(argv[++i]); + } + else if(!strncmp("--gpu_innerloop=", argv[i], 16)) { + gpu_innerloop=(long)strtod(&argv[i][16], NULL); + } + else if(!strcmp("--gpu_innerloop", argv[i]) && (i + 1) < argc) { + gpu_innerloop=(long)strtod(argv[++i], NULL); + } + + else if(!strcmp("--no-output-files", argv[i])) + mcdisable_output_files = 1; + else if(!strcmp("--source", argv[i])) { + printf("/* Source code %s from %s: */\n" + "/******************************************************************************/\n" + "%s\n" + "/******************************************************************************/\n" + "/* End of source code %s from %s */\n", + instrument_name, instrument_source, instrument_code, + instrument_name, instrument_source); + exit(1); + } + else if(argv[i][0] != '-' && (p = strchr(argv[i], '=')) != NULL) + { + *p++ = '\0'; + + for(j = 0; j < numipar; j++) + if(!strcmp(mcinputtable[j].name, argv[i])) + { + int status; + status = (*mcinputtypes[mcinputtable[j].type].getparm)(p, + mcinputtable[j].par); + if(!status || !strlen(p)) + { + (*mcinputtypes[mcinputtable[j].type].error) + (mcinputtable[j].name, p); + exit(1); + } + paramsetarray[j] = 1; + paramset = 1; + break; + } + if(j == numipar) + { /* Unrecognized parameter name */ + fprintf(stderr, "Error: unrecognized parameter %s (mcparseoptions)\n", argv[i]); + exit(1); + } + } + else if(argv[i][0] == '-') { + fprintf(stderr, "Error: unrecognized option argument %s (mcparseoptions). Ignored.\n", argv[i++]); + } + else { + fprintf(stderr, "Error: unrecognized argument %s (mcparseoptions). Aborting.\n", argv[i]); + mcusage(argv[0]); + } + } + if (mcusedefaults) { + MPI_MASTER( + printf("Using all default parameter values\n"); + ); + for(j = 0; j < numipar; j++) { + int status; + if(mcinputtable[j].val && strlen(mcinputtable[j].val)){ + status = (*mcinputtypes[mcinputtable[j].type].getparm)(mcinputtable[j].val, + mcinputtable[j].par); + paramsetarray[j] = 1; + paramset = 1; + } + } + } + if(!paramset) + mcreadparams(); /* Prompt for parameters if not specified. */ + else + { + for(j = 0; j < numipar; j++) + if(!paramsetarray[j]) + { + fprintf(stderr, "Error: Instrument parameter %s left unset (mcparseoptions)\n", + mcinputtable[j].name); + exit(1); + } + } + free(paramsetarray); +#ifdef USE_MPI + if (mcdotrace) mpi_node_count=1; /* disable threading when in trace mode */ +#endif + if (usedir && strlen(usedir) && !mcdisable_output_files) mcuse_dir(usedir); +} /* mcparseoptions */ + +#ifndef NOSIGNALS +/******************************************************************************* +* sighandler: signal handler that makes simulation stop, and save results +*******************************************************************************/ +void sighandler(int sig) +{ + /* MOD: E. Farhi, Sep 20th 2001: give more info */ + time_t t1, t0; +#define SIG_SAVE 0 +#define SIG_TERM 1 +#define SIG_STAT 2 +#define SIG_ABRT 3 + + printf("\n# " MCCODE_STRING ": [pid %i] Signal %i detected", getpid(), sig); +#ifdef USE_MPI + printf(" [proc %i]", mpi_node_rank); +#endif +#if defined(SIGUSR1) && defined(SIGUSR2) && defined(SIGKILL) + if (!strcmp(mcsig_message, "sighandler") && (sig != SIGUSR1) && (sig != SIGUSR2)) + { + printf("\n# Fatal : unrecoverable loop ! Suicide (naughty boy).\n"); + kill(0, SIGKILL); /* kill myself if error occurs within sighandler: loops */ + } +#endif + switch (sig) { +#ifdef SIGINT + case SIGINT : printf(" SIGINT (interrupt from terminal, Ctrl-C)"); sig = SIG_TERM; break; +#endif +#ifdef SIGILL + case SIGILL : printf(" SIGILL (Illegal instruction)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGFPE + case SIGFPE : printf(" SIGFPE (Math Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGSEGV + case SIGSEGV : printf(" SIGSEGV (Mem Error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGTERM + case SIGTERM : printf(" SIGTERM (Termination)"); sig = SIG_TERM; break; +#endif +#ifdef SIGABRT + case SIGABRT : printf(" SIGABRT (Abort)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGQUIT + case SIGQUIT : printf(" SIGQUIT (Quit from terminal)"); sig = SIG_TERM; break; +#endif +#ifdef SIGTRAP + case SIGTRAP : printf(" SIGTRAP (Trace trap)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGPIPE + case SIGPIPE : printf(" SIGPIPE (Broken pipe)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGUSR1 + case SIGUSR1 : printf(" SIGUSR1 (Display info)"); sig = SIG_STAT; break; +#endif +#ifdef SIGUSR2 + case SIGUSR2 : printf(" SIGUSR2 (Save simulation)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGHUP + case SIGHUP : printf(" SIGHUP (Hangup/update)"); sig = SIG_SAVE; break; +#endif +#ifdef SIGBUS + case SIGBUS : printf(" SIGBUS (Bus error)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGURG + case SIGURG : printf(" SIGURG (Urgent socket condition)"); sig = SIG_ABRT; break; +#endif +#ifdef SIGBREAK + case SIGBREAK: printf(" SIGBREAK (Break signal, Ctrl-Break)"); sig = SIG_SAVE; break; +#endif + default : printf(" (look at signal list for signification)"); sig = SIG_ABRT; break; + } + printf("\n"); + printf("# Simulation: %s (%s) \n", instrument_name, instrument_source); + printf("# Breakpoint: %s ", mcsig_message); + if (strstr(mcsig_message, "Save") && (sig == SIG_SAVE)) + sig = SIG_STAT; + SIG_MESSAGE("sighandler"); + if (mcget_ncount() == 0) + printf("(0 %%)\n" ); + else + { + printf("%.2f %% (%10.1f/%10.1f)\n", 100.0*mcget_run_num()/mcget_ncount(), 1.0*mcget_run_num(), 1.0*mcget_ncount()); + } + t0 = (time_t)mcstartdate; + t1 = time(NULL); + printf("# Date: %s", ctime(&t1)); + printf("# Started: %s", ctime(&t0)); + + if (sig == SIG_STAT) + { + printf("# " MCCODE_STRING ": Resuming simulation (continue)\n"); + fflush(stdout); + return; + } + else + if (sig == SIG_SAVE) + { + printf("# " MCCODE_STRING ": Saving data and resume simulation (continue)\n"); + save(NULL); + fflush(stdout); + return; + } + else + if (sig == SIG_TERM) + { + printf("# " MCCODE_STRING ": Finishing simulation (save results and exit)\n"); + finally(); + exit(0); + } + else + { + fflush(stdout); + perror("# Last I/O Error"); + printf("# " MCCODE_STRING ": Simulation stop (abort).\n"); +// This portion of the signal handling only works on UNIX +#if defined(__unix__) || defined(__APPLE__) + signal(sig, SIG_DFL); /* force to use default sighandler now */ + kill(getpid(), sig); /* and trigger it with the current signal */ +#endif + exit(-1); + } +#undef SIG_SAVE +#undef SIG_TERM +#undef SIG_STAT +#undef SIG_ABRT + +} /* sighandler */ +#endif /* !NOSIGNALS */ + +#ifdef NEUTRONICS +/*Main neutronics function steers the McStas calls, initializes parameters etc */ +/* Only called in case NEUTRONICS = TRUE */ +void neutronics_main_(float *inx, float *iny, float *inz, float *invx, float *invy, float *invz, float *intime, float *insx, float *insy, float *insz, float *inw, float *outx, float *outy, float *outz, float *outvx, float *outvy, float *outvz, float *outtime, float *outsx, float *outsy, float *outsz, float *outwgt) +{ + + extern double mcnx, mcny, mcnz, mcnvx, mcnvy, mcnvz; + extern double mcnt, mcnsx, mcnsy, mcnsz, mcnp; + + /* External code governs iteration - McStas is iterated once per call to neutronics_main. I.e. below counter must be initiancated for each call to neutronics_main*/ + mcrun_num=0; + + time_t t; + t = (time_t)mcstartdate; + mcstartdate = t; /* set start date before parsing options and creating sim file */ + init(); + + /* *** parse options *** */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat=getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + + /* Set neutron state based on input from neutronics code */ + mcsetstate(*inx,*iny,*inz,*invx,*invy,*invz,*intime,*insx,*insy,*insz,*inw); + + /* main neutron event loop - runs only one iteration */ + + //mcstas_raytrace(&mcncount); /* prior to McStas 1.12 */ + + mcallowbackprop = 1; //avoid absorbtion from negative dt + int argc=1; + char *argv[0]; + int dummy = mccode_main(argc, argv); + + *outx = mcnx; + *outy = mcny; + *outz = mcnz; + *outvx = mcnvx; + *outvy = mcnvy; + *outvz = mcnvz; + *outtime = mcnt; + *outsx = mcnsx; + *outsy = mcnsy; + *outsz = mcnsz; + *outwgt = mcnp; + + return; +} /* neutronics_main */ + +#endif /*NEUTRONICS*/ + +#endif /* !MCCODE_H */ +/* End of file "mccode-r.c". */ +/* End of file "mccode-r.c". */ + +/* embedding file "mcstas-r.c" */ + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/mcstas-r.c +* +* %Identification +* Written by: KN +* Date: Aug 29, 1997 +* Release: McStas X.Y +* Version: $Revision$ +* +* Runtime system for McStas. +* Embedded within instrument in runtime mode. +* +* Usage: Automatically embbeded in the c code whenever required. +* +* $Id$ +* +*******************************************************************************/ + +#ifndef MCSTAS_R_H +#include "mcstas-r.h" +#endif +#ifdef DANSE +#include "mcstas-globals.h" +#endif + +/******************************************************************************* +* The I/O format definitions and functions +*******************************************************************************/ + +/*the magnet stack*/ +#ifdef MC_POL_COMPAT +void (*mcMagnetPrecession) (double, double, double, double, double, double, + double, double*, double*, double*, double, Coords, Rotation)=NULL; +Coords mcMagnetPos; +Rotation mcMagnetRot; +double* mcMagnetData = NULL; +/* mcMagneticField(x, y, z, t, Bx, By, Bz) */ +int (*mcMagneticField) (double, double, double, double, + double*, double*, double*, void *) = NULL; +#endif + +#ifndef MCSTAS_H + +/******************************************************************************* +* mcsetstate: transfer parameters into global McStas variables +*******************************************************************************/ +_class_particle mcsetstate(double x, double y, double z, double vx, double vy, double vz, + double t, double sx, double sy, double sz, double p, int mcgravitation, void *mcMagnet, int mcallowbackprop, int NTOF) +{ + _class_particle mcneutron; + + mcneutron.x = x; + mcneutron.y = y; + mcneutron.z = z; + mcneutron.vx = vx; + mcneutron.vy = vy; + mcneutron.vz = vz; + mcneutron.t = t; + mcneutron.sx = sx; + mcneutron.sy = sy; + mcneutron.sz = sz; + mcneutron.p = p; + mcneutron.mcgravitation = mcgravitation; + mcneutron.mcMagnet = mcMagnet; + mcneutron.allow_backprop = mcallowbackprop; + mcneutron._uid = 0; + mcneutron._index = 1; + mcneutron._absorbed = 0; + mcneutron._restore = 0; + mcneutron._scattered = 0; + mcneutron.flag_nocoordschange = 0; + + /* init tmp-vars - FIXME are they used? */ + mcneutron._mctmp_a = mcneutron._mctmp_b = mcneutron._mctmp_c = 0; + // what about mcneutron._logic ? + mcneutron._logic.dummy=1; + // init uservars via cogen'd-function + + #ifdef TOF_TRAIN + mcneutron.N_trains=NTOF; + mcneutron.t_offset=malloc(NTOF*sizeof(double)); + mcneutron.p_trains=malloc(NTOF*sizeof(double)); + mcneutron.alive_trains=malloc(NTOF*sizeof(int)); + #endif + + particle_uservar_init(&mcneutron); + + return(mcneutron); +} /* mcsetstate */ + +/******************************************************************************* +* mcgetstate: get neutron parameters from particle structure +*******************************************************************************/ +_class_particle mcgetstate(_class_particle mcneutron, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *t, + double *sx, double *sy, double *sz, double *p) +{ + *x = mcneutron.x; + *y = mcneutron.y; + *z = mcneutron.z; + *vx = mcneutron.vx; + *vy = mcneutron.vy; + *vz = mcneutron.vz; + *t = mcneutron.t; + *sx = mcneutron.sx; + *sy = mcneutron.sy; + *sz = mcneutron.sz; + *p = mcneutron.p; + + return(mcneutron); +} /* mcgetstate */ + + +/******************************************************************************* +* mcgenstate: set default neutron parameters +*******************************************************************************/ +// Moved to generated code +/* #pragma acc routine seq */ +/* _class_particle mcgenstate(void) */ +/* { */ +/* return(mcsetstate(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, mcgravitation, mcMagnet, mcallowbackprop)); */ +/* } */ + +/******************************************************************************* +* mccoordschanges: old style rotation routine rot -> (x y z) ,(vx vy vz),(sx,sy,sz) +*******************************************************************************/ +void +mccoordschanges(Coords a, Rotation t, double *x, double *y, double *z, + double *vx, double *vy, double *vz, double *sx, double *sy, double *sz) +{ + Coords b, c; + + b.x = *x; + b.y = *y; + b.z = *z; + c = rot_apply(t, b); + b = coords_add(c, a); + *x = b.x; + *y = b.y; + *z = b.z; + + if ( (vz && vy && vx) && (*vz != 0.0 || *vx != 0.0 || *vy != 0.0) ) + mccoordschange_polarisation(t, vx, vy, vz); + + if ( (sz && sy && sx) && (*sz != 0.0 || *sx != 0.0 || *sy != 0.0) ) + mccoordschange_polarisation(t, sx, sy, sz); + +} + +/* intersection routines ==================================================== */ + +/******************************************************************************* +* inside_rectangle: Check if (x,y) is inside rectangle (xwidth, yheight) +* return 0 if outside and 1 if inside +*******************************************************************************/ +int inside_rectangle(double x, double y, double xwidth, double yheight) +{ + if (x>-xwidth/2 && x-yheight/2 && y -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[0] = tt; + else + t[0] = 0; + + tt = (dx/2 - x)/vx; + y_in = y + tt*vy; + z_in = z + tt*vz; + if( y_in > -dy/2 && y_in < dy/2 && z_in > -dz/2 && z_in < dz/2) + t[1] = tt; + else + t[1] = 0; + } + else + t[0] = t[1] = 0; + + if(vy != 0) + { + tt = -(dy/2 + y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[2] = tt; + else + t[2] = 0; + + tt = (dy/2 - y)/vy; + x_in = x + tt*vx; + z_in = z + tt*vz; + if( x_in > -dx/2 && x_in < dx/2 && z_in > -dz/2 && z_in < dz/2) + t[3] = tt; + else + t[3] = 0; + } + else + t[2] = t[3] = 0; + + if(vz != 0) + { + tt = -(dz/2 + z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[4] = tt; + else + t[4] = 0; + + tt = (dz/2 - z)/vz; + x_in = x + tt*vx; + y_in = y + tt*vy; + if( x_in > -dx/2 && x_in < dx/2 && y_in > -dy/2 && y_in < dy/2) + t[5] = tt; + else + t[5] = 0; + } + else + t[4] = t[5] = 0; + + /* The intersection is evaluated and *dt_in and *dt_out are assigned */ + + a = b = s = 0; + count = 0; + + for( i = 0; i < 6; i = i + 1 ) + if( t[i] == 0 ) + s = s+1; + else if( count == 0 ) + { + a = t[i]; + count = 1; + } + else + { + b = t[i]; + count = 2; + } + + if ( a == 0 && b == 0 ) + return 0; + else if( a < b ) + { + *dt_in = a; + *dt_out = b; + return 1; + } + else + { + *dt_in = b; + *dt_out = a; + return 1; + } + +} /* box_intersect */ + +/******************************************************************************* + * cylinder_intersect: compute intersection with a cylinder + * returns 0 when no intersection is found + * or 2/4/8/16 bits depending on intersection, + * and resulting times t0 and t1 + * Written by: EM,NB,ABA 4.2.98 + *******************************************************************************/ +int cylinder_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r, double h) +{ + double D, t_in, t_out, y_in, y_out; + int ret=1; + + D = (2*vx*x + 2*vz*z)*(2*vx*x + 2*vz*z) + - 4*(vx*vx + vz*vz)*(x*x + z*z - r*r); + + if (D>=0) + { + if (vz*vz + vx*vx) { + t_in = (-(2*vz*z + 2*vx*x) - sqrt(D))/(2*(vz*vz + vx*vx)); + t_out = (-(2*vz*z + 2*vx*x) + sqrt(D))/(2*(vz*vz + vx*vx)); + } else if (vy) { /* trajectory parallel to cylinder axis */ + t_in = (-h/2-y)/vy; + t_out = (h/2-y)/vy; + if (t_in>t_out){ + double tmp=t_in; + t_in=t_out;t_out=tmp; + } + } else return 0; + y_in = vy*t_in + y; + y_out =vy*t_out + y; + + if ( (y_in > h/2 && y_out > h/2) || (y_in < -h/2 && y_out < -h/2) ) + return 0; + else + { + if (y_in > h/2) + { t_in = ((h/2)-y)/vy; ret += 2; } + else if (y_in < -h/2) + { t_in = ((-h/2)-y)/vy; ret += 4; } + if (y_out > h/2) + { t_out = ((h/2)-y)/vy; ret += 8; } + else if (y_out < -h/2) + { t_out = ((-h/2)-y)/vy; ret += 16; } + } + *t0 = t_in; + *t1 = t_out; + return ret; + } + else + { + *t0 = *t1 = 0; + return 0; + } +} /* cylinder_intersect */ + + +/******************************************************************************* + * sphere_intersect: Calculate intersection between a line and a sphere. + * returns 0 when no intersection is found + * or 1 in case of intersection with resulting times t0 and t1 + *******************************************************************************/ +int sphere_intersect(double *t0, double *t1, double x, double y, double z, + double vx, double vy, double vz, double r) +{ + double A, B, C, D, v; + + v = sqrt(vx*vx + vy*vy + vz*vz); + A = v*v; + B = 2*(x*vx + y*vy + z*vz); + C = x*x + y*y + z*z - r*r; + D = B*B - 4*A*C; + if(D < 0) + return 0; + D = sqrt(D); + *t0 = (-B - D) / (2*A); + *t1 = (-B + D) / (2*A); + return 1; +} /* sphere_intersect */ + +/******************************************************************************* + * plane_intersect: Calculate intersection between a plane and a line. + * returns 0 when no intersection is found (i.e. line is parallel to the plane) + * returns 1 or -1 when intersection time is positive and negative respectively + *******************************************************************************/ +int plane_intersect(double *t, double x, double y, double z, + double vx, double vy, double vz, double nx, double ny, double nz, double wx, double wy, double wz) +{ + double s; + if (fabs(s=scalar_prod(nx,ny,nz,vx,vy,vz)) + #include + + typedef struct { + // Prefixed names to avoid the _particle accessor macros + double _x, _y, _z; + double _vx, _vy, _vz; + double _sx, _sy, _sz; + // insert [int, void*, int, double, double, double, unsigned long] + // here in order to have matching memory layout with + // _struct_particle, e.g., _class_particle + double _t, _p; + } mcpl_input_once_particle_t; + + void + mcpl_input_once_translator (const int use_polarisation, double weight_scale, const mcpl_particle_t* input, mcpl_input_once_particle_t* output) { + // position in mm -> m + output->_x = input->position[0] / 100; + output->_y = input->position[1] / 100; + output->_z = input->position[2] / 100; + // ekin in MeV -> meV; then to velocity + double nrm = sqrt (input->ekin * 1e9 / VS2E); + output->_vx = input->direction[0] * nrm; + output->_vy = input->direction[1] * nrm; + output->_vz = input->direction[2] * nrm; + // polarization is a direction, and we might ignore it + output->_sx = (use_polarisation) ? input->polarisation[0] : 0; + output->_sy = (use_polarisation) ? input->polarisation[1] : 0; + output->_sz = (use_polarisation) ? input->polarisation[2] : 0; + // time in msec -> sec + output->_t = input->time * 1e-3; + // probability, unitless + output->_p = input->weight * weight_scale; + } + + int + mcplinputonce_file_exist (char* fn) { + struct stat buffer; + return (stat (fn, &buffer) == 0); + } + +/* Shared user declarations for all components types 'ESS_butterfly'. */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.h +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#define ESS_BUTTERFLY_LIB_H 0.1 + +#ifndef ESS_SOURCE_DURATION +#define ESS_SOURCE_DURATION 2.857e-3 +#endif + +#ifndef ESS_SOURCE_FREQUENCY +#define ESS_SOURCE_FREQUENCY 14 +#endif + +#ifndef ESS_SOURCE_POWER +#define ESS_SOURCE_POWER 5 +#endif + +/* Struct for extra source parameters - for future geometrical adjustments */ +struct ess_struct { + double X; + double Y; + double Z; + double height_t; + double height_c; + double Width_c; + double Width_t; + double Mwidth_c; + double Mwidth_t; + double tmultiplier; + double Radius_c; + double beamportangle; + int Uniform; + double extractionangle; + int Wasleft; +}; +typedef struct ess_struct ess_moderator_struct; + +typedef void (*functype)(double* t , double* p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, ess_moderator_struct extras); + +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta); +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta); + +/* List of brilliance definitions */ +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y); +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y); + +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y); +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y); + +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y); +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y); + +/* List of pulse-shape definitions */ +double ESS_2015_Schoenfeldt_cold_timedist(double t, double lambda, double height, double pulselength); +double ESS_2015_Schoenfeldt_thermal_timedist(double t, double lambda, double height, double pulselength); + +/* List of moderator-geometry-weighting definitions */ +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height); +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width); +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height); +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width); + +double ESS_2015_Schoenfeldt_cold_y0(double y0); +double ESS_2015_Schoenfeldt_cold_x0(double x0, double theta, double width); +double ESS_2015_Schoenfeldt_thermal_y0(double y0); +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width); +double ESS_2015_Schoenfeldt_cold_Y(double x0,double height); +double ESS_2015_Schoenfeldt_thermal_Y(double y0,double height); +double ESS_2015_Schoenfeldt_cold_Theta120(double x0,double height); +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft); + +/* end of ESS_butterfly-lib.h */ +#endif + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.c +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#error McStas : please import this library with %include "ESS_butterfly-lib" +#endif + +#ifdef OPENACC +#define exit(...) noprintf() +#endif + +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ + if(lambda<=0)return 0; + double par0=8.44e13/25.; + double par1=2.5; + double par2=2.2; + + double par3=-13.-.5*(theta-5); + double par4=2.53; + double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); + + double par6; + if(theta==5)par6=5.73745e+015/25.; + else if(theta==15)par6=5.88284e+015/25.; + else if(theta==25)par6=6.09573e+015/25.; + else if(theta==35)par6=6.29116e+015/25.; + else if(theta==45)par6=6.03436e+015/25.; + else if(theta==55)par6=6.02045e+015/25.; + double par7=0.788956+0.00854184*(theta-5.)/10.; + double par8=0.0461868-0.0016464*(theta-5.)/10.; + double par9=0.325; + + double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); + double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); + return para_part+SD_part; + +} +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ + if(lambda<=0)return 0; + double i=(theta-5.)/10.; + double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; + double par2=6.24806e+012-8.84602e+010*i; + double par3=-0.31107+0.0221138*i; + double aOlsqr=949./(325*lambda*lambda); + return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); + +} + + +/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ + + double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); + if(y0 < -height/2. || y0 > height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} /* end of ESS_2015_Schoenfeldt_cold */ + + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(time +#include +#include + +#ifndef _MSC_EXTENSIONS +#include +#else +# include +# define strcasecmp _stricmp +# define strncasecmp _strnicmp +#endif + + typedef struct struct_table + { + char filename[1024]; + long filesize; + char *header; /* text header, e.g. comments */ + double *data; /* vector { x[0], y[0], ... x[n-1], y[n-1]... } */ + double min_x; /* min value of first column */ + double max_x; /* max value of first column */ + double step_x; /* minimal step value of first column */ + long rows; /* number of rows in matrix block */ + long columns; /* number of columns in matrix block */ + + long begin; /* start fseek index of block */ + long end; /* stop fseek index of block */ + long block_number; /* block index. 0 is catenation of all */ + long array_length; /* number of elements in the t_Table array */ + char monotonic; /* true when 1st column/vector data is monotonic */ + char constantstep; /* true when 1st column/vector data has constant step */ + char method[32]; /* interpolation method: nearest, linear */ + char quiet; /*output level for messages to the console 0: print all messages, 1:only print some/including errors, 2: never print anything.*/ + } t_Table; + +/*maximum number of rows to rebin a table = 1M*/ +enum { mcread_table_rebin_maxsize = 1000000 }; + +typedef struct t_Read_table_file_item { + int ref_count; + t_Table *table_ref; +} t_Read_table_file_item; + +typedef enum enum_Read_table_file_actions {STORE,FIND,GC} t_Read_table_file_actions; + +/* read_table-lib function prototypes */ +/* ========================================================================= */ + +/* 'public' functions */ +long Table_Read (t_Table *Table, char *File, long block_number); +long Table_Read_Offset (t_Table *Table, char *File, long block_number, + long *offset, long max_lines); +long Table_Read_Offset_Binary(t_Table *Table, char *File, char *Type, + long *Offset, long Rows, long Columns); +long Table_Rebin(t_Table *Table); /* rebin table with regular 1st column and interpolate all columns 2:end */ +long Table_Info (t_Table Table); +#pragma acc routine +double Table_Index(t_Table Table, long i, long j); /* get indexed value */ +#pragma acc routine +double Table_Value(t_Table Table, double X, long j); /* search X in 1st column and return interpolated value in j-column */ +t_Table *Table_Read_Array(char *File, long *blocks); +void Table_Free_Array(t_Table *Table); +long Table_Info_Array(t_Table *Table); +int Table_SetElement(t_Table *Table, long i, long j, double value); +long Table_Init(t_Table *Table, long rows, long columns); /* create a Table */ +#pragma acc routine +double Table_Value2d(t_Table Table, double X, double Y); /* same as Table_Index with non-integer indices and 2d interpolation */ +MCDETECTOR Table_Write(t_Table Table, char*file, char*xl, char*yl, + double x1, double x2, double y1, double y2); /* write Table to disk */ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier); +t_Table *Table_File_List_find(char *name, int block, int offset); +int Table_File_List_gc(t_Table *tab); +void *Table_File_List_store(t_Table *tab); + +#define Table_ParseHeader(header, ...) \ + Table_ParseHeader_backend(header,__VA_ARGS__,NULL); + +char **Table_ParseHeader_backend(char *header, ...); +FILE *Open_File(char *name, const char *Mode, char *path); + + +/* private functions */ +void Table_Free(t_Table *Table); +long Table_Read_Handle(t_Table *Table, FILE *fid, long block_number, long max_lines, char *name); +static void Table_Stat(t_Table *Table); +#pragma acc routine +double Table_Interp1d(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp1d_nearest(double x, double x1, double y1, double x2, double y2); +#pragma acc routine +double Table_Interp2d(double x, double y, double x1, double y1, double x2, double y2, +double z11, double z12, double z21, double z22); + + +#endif + +/* end of read_table-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2009, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/read_table-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Release: McStas CVS_090504 +* Version: $Revision$ +* +* This file is to be imported by components that may read data from table files +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "read_table-lib" +* +*******************************************************************************/ + +#ifndef READ_TABLE_LIB_H +#include "read_table-lib.h" +#endif + +#ifndef READ_TABLE_LIB_C +#define READ_TABLE_LIB_C "$Revision$" + + +/******************************************************************************* + * void *Table_File_List_Handler(action, item, item_modifier) + * ACTION: handle file entries in the read_table-lib file list. If a file is read - it is supposed to be + * stored in a list such that we can avoid reading the same file many times. + * input action: FIND, STORE, GC. check if file exists in the list, store an item in the list, or check if it can be garbage collected. + * input item: depends on the action. + * FIND) item is a filename, and item_modifier is the block number + * STORE) item is the Table to store - item_modifier is ignored + * GC) item is the Table to check. If it has a ref_count >1 then this is simply decremented. + * return depends on the action + * FIND) return a reference to a table+ref_count item if found - NULL otherwise. I.e. NULL means the file has not been read before and must be read again. + * STORE) return NULL always + * GC) return NULL if no garbage collection is needed, return an adress to the t_Table which should be garbage collected. 0x1 is returned if + * the item is not found in the list +*******************************************************************************/ +void * Table_File_List_Handler(t_Read_table_file_actions action, void *item, void *item_modifier){ + + /* logic here is Read_Table should include a call to FIND. If found the return value should just be used as + * if the table had been read from disk. If not found then read the table and STORE. + * Table_Free should include a call to GC. If this returns non-NULL then we should proceed with freeing the memory + * associated with the table item - otherwise only decrement the reference counter since there are more references + * that may need it.*/ + + static t_Read_table_file_item read_table_file_list[1024]; + static int read_table_file_count=0; + + t_Read_table_file_item *tr; + switch(action){ + case FIND: + /*interpret data item as a filename, if it is found return a pointer to the table and increment refcount. + * if not found return the item itself*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + int i=*((int*) item_modifier); + int j=*( ((int*) item_modifier)+1); + if ( !strcmp(tr->table_ref->filename,(char *) item) && + tr->table_ref->block_number==i && tr->table_ref->begin==j ){ + tr->ref_count++; + return (void *) tr; + } + tr++; + } + return NULL; + case STORE: + /*find an available slot and store references to table there*/ + tr=&(read_table_file_list[read_table_file_count++]); + tr->table_ref = ((t_Table *) item); + tr->ref_count++; + return NULL; + case GC: + /* Should this item be garbage collected (freed) - if so scratch the entry and return the address of the item - + * else decrement ref_count and return NULL. + * A non-NULL return expects the item to actually be freed afterwards.*/ + tr=read_table_file_list; + while ( tr->table_ref!=NULL ){ + if ( tr->table_ref->data ==((t_Table *)item)->data && + tr->table_ref->block_number == ((t_Table *)item)->block_number){ + /*matching item found*/ + if (tr->ref_count>1){ + /*the item is found and no garbage collection needed*/ + tr->ref_count--; + return NULL; + }else{ + /* The item is found and the reference counter is 1. + * This means we should garbage collect. Move remaining list items up one slot, + * and return the table for garbage collection by caller*/ + while (tr->table_ref!=NULL){ + *tr=*(tr+1); + tr++; + } + read_table_file_count--; + return (t_Table *) item; + } + } + tr++; + } + /* item not found, and so should be garbage collected. This could be the case if freeing a + * Table that has been constructed from code - not read from file. Return 0x1 to flag it for + * collection.*/ + return (void *) 0x1 ; + } + /* If we arrive here, nothing worked, return NULL */ + return NULL; +} + +/* Access functions to the handler*/ + +/******************************************** + * t_Table *Table_File_List_find(char *name, int block, int offset) + * input name: filename to search for in the file list + * input block: data block in the file as each file may contain more than 1 data block. + * return a ref. to a table if it is found (you may use this pointer and skip reading the file), NULL otherwise (i.e. go ahead and read the file) +*********************************************/ +t_Table *Table_File_List_find(char *name, int block, int offset){ + int vars[2]={block,offset}; + t_Read_table_file_item *item = Table_File_List_Handler(FIND,name, vars); + if (item == NULL){ + return NULL; + }else{ + return item->table_ref; + } +} +/******************************************** + * int Table_File_List_gc(t_Table *tab) + * input tab: the table to check for references. + * return 0: no garbage collection needed + * 1: Table's data and header (at least) should be freed. +*********************************************/ +int Table_File_List_gc(t_Table *tab){ + void *rval=Table_File_List_Handler(GC,tab,0); + if (rval==NULL) return 0; + else return 1; +} + + +/***************************************************************************** + * void *Table_File_List_store(t_Table *tab) + * input tab: pointer to table to store. + * return None. +*******************************************************************************/ +void *Table_File_List_store(t_Table *tab){ + return Table_File_List_Handler(STORE,tab,0); +} + + +/******************************************************************************* +* FILE *Open_File(char *name, char *Mode, char *path) +* ACTION: search for a file and open it. Optionally return the opened path. +* input name: file name from which table should be extracted +* mode: "r", "w", "a" or any valid fopen mode +* path: NULL or a pointer to at least 1024 allocated chars +* return initialized file handle or NULL in case of error +*******************************************************************************/ + + FILE *Open_File(char *File, const char *Mode, char *Path) + { + char path[1024]; + FILE *hfile = NULL; + + if (!File || File[0]=='\0') return(NULL); + if (!strcmp(File,"NULL") || !strcmp(File,"0")) return(NULL); + + /* search in current or full path */ + strncpy(path, File, 1024); + hfile = fopen(path, Mode); + if(!hfile) + { + char dir[1024]; + + if (!hfile && instrument_source[0] != '\0' && strlen(instrument_source)) /* search in instrument source location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_source, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_source; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_source, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile && instrument_exe[0] != '\0' && strlen(instrument_exe)) /* search in PWD instrument executable location */ + { + char *path_pos = NULL; + /* extract path: searches for last file separator */ + path_pos = strrchr(instrument_exe, MC_PATHSEP_C); /* last PATHSEP */ + if (path_pos) { + long path_length = path_pos +1 - instrument_exe; /* from start to path+sep */ + if (path_length) { + strncpy(dir, instrument_exe, path_length); + dir[path_length] = '\0'; + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + } + } + if (!hfile) /* search in HOME or . */ + { + strcpy(dir, getenv("HOME") ? getenv("HOME") : "."); + snprintf(path, 1024, "%s%c%s", dir, MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MCSTAS/data */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "data", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if (!hfile) /* search in MVCSTAS/contrib */ + { + strcpy(dir, getenv(FLAVOR_UPPER) ? getenv(FLAVOR_UPPER) : MCSTAS); + snprintf(path, 1024, "%s%c%s%c%s", dir, MC_PATHSEP_C, "contrib", MC_PATHSEP_C, File); + hfile = fopen(path, Mode); + } + if(!hfile) + { + // fprintf(stderr, "Warning: Could not open input file '%s' (Open_File)\n", File); + return (NULL); + } + } + if (Path) strncpy(Path, path, 1024); + return(hfile); + } /* end Open_File */ + +/******************************************************************************* +* long Read_Table(t_Table *Table, char *name, int block_number) +* ACTION: read a single Table from a text file +* input Table: pointer to a t_Table structure +* name: file name from which table should be extracted +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* File is opened, read and closed +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebinned with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read(t_Table *Table, char *File, long block_number) + { /* reads all or a single data block from 'file' and returns a Table structure */ + return(Table_Read_Offset(Table, File, block_number, NULL, 0)); + } /* end Table_Read */ + +/******************************************************************************* +* long Table_Read_Offset(t_Table *Table, char *name, int block_number, long *offset +* long max_rows) +* ACTION: read a single Table from a text file, starting at offset +* Same as Table_Read(..) except: +* input offset: pointer to an offset (*offset should be 0 at start) +* max_rows: max number of data rows to read from file (0 means all) +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset(t_Table *Table, char *File, + long block_number, long *offset, + long max_rows) + { /* reads all/a data block in 'file' and returns a Table structure */ + FILE *hfile; + long nelements=0; + long begin=0; + long filesize=0; + char name[1024]; + char path[1024]; + struct stat stfile; + + /*Need to be able to store the pointer*/ + if (!Table) return(-1); + + /*TK: Valgrind flags it as usage of uninitialised variable: */ + Table->quiet = 0; + + //if (offset && *offset) snprintf(name, 1024, "%s@%li", File, *offset); + //else + strncpy(name, File, 1024); + if(offset && *offset){ + begin=*offset; + } + /* Check if the table has already been read from file. + * If so just reuse the table, if not (this is flagged by returning NULL + * set up a new table and read the data into it */ + t_Table *tab_p= Table_File_List_find(name,block_number,begin); + if ( tab_p!=NULL ){ + /*table was found in the Table_File_List*/ + *Table=*tab_p; + MPI_MASTER( + if(Table->quiet<1) + printf("Reusing input file '%s' (Table_Read_Offset)\n", name); + ); + return Table->rows*Table->columns; + } + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read_Offset)\n", path); + ); + } + + /* read file state */ + stat(path,&stfile); filesize = stfile.st_size; + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + + Table_Init(Table, 0, 0); + + /* read file content and set the Table */ + nelements = Table_Read_Handle(Table, hfile, block_number, max_rows, name); + Table->begin = begin; + Table->end = ftell(hfile); + Table->filesize = (filesize>0 ? filesize : 0); + Table_Stat(Table); + + Table_File_List_store(Table); + + if (offset) *offset=Table->end; + fclose(hfile); + return(nelements); + + } /* end Table_Read_Offset */ + +/******************************************************************************* +* long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, +* long *offset, long rows, long columns) +* ACTION: read a single Table from a binary file, starting at offset +* Same as Table_Read_Offset(..) except that it handles binary files. +* input type: may be "float"/NULL or "double" +* offset: pointer to an offset (*offset should be 0 at start) +* rows : number of rows (0 means read all) +* columns: number of columns +* return initialized single Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* updated *offset position (where end of reading occured) +*******************************************************************************/ + long Table_Read_Offset_Binary(t_Table *Table, char *File, char *type, + long *offset, long rows, long columns) + { /* reads all/a data block in binary 'file' and returns a Table structure */ + long nelements, sizeofelement; + long filesize; + FILE *hfile; + char path[1024]; + struct stat stfile; + double *data = NULL; + double *datatmp = NULL; + long i; + long begin; + + if (!Table) return(-1); + + Table_Init(Table, 0, 0); + + /* open the file */ + hfile = Open_File(File, "r", path); + if (!hfile) return(-1); + else { + MPI_MASTER( + if(Table->quiet<1) + printf("Opening input file '%s' (Table_Read, Binary)\n", path); + ); + } + + /* read file state */ + stat(File,&stfile); + filesize = stfile.st_size; + Table->filesize=filesize; + + /* read file content */ + if (type && !strcmp(type,"double")) sizeofelement = sizeof(double); + else sizeofelement = sizeof(float); + if (offset && *offset) fseek(hfile, *offset, SEEK_SET); + begin = ftell(hfile); + if (rows && filesize > sizeofelement*columns*rows) + nelements = columns*rows; + else nelements = (long)(filesize/sizeofelement); + if (!nelements || filesize <= *offset) return(0); + data = (double*)malloc(nelements*sizeofelement); + if (!data) { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: allocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } + nelements = fread(data, sizeofelement, nelements, hfile); + + if (!data || !nelements) + { + if(!(Table->quiet>1)) + fprintf(stderr,"Error: reading %ld elements from %s file '%s' (Table_Read_Offset_Binary)\n", nelements, type, File); + exit(-1); + } + Table->begin = begin; + Table->end = ftell(hfile); + if (offset) *offset=Table->end; + fclose(hfile); + + datatmp = (double*)realloc(data, (double)nelements*sizeofelement); + if (!datatmp) { + free(data); + fprintf(stderr,"Error: reallocating %ld elements for %s file '%s'. Too big (Table_Read_Offset_Binary).\n", nelements, type, File); + exit(-1); + } else { + data = datatmp; + } + /* copy file data into Table */ + if (type && !strcmp(type,"double")) Table->data = data; + else { + float *s; + double *dataf; + s = (float*)data; + dataf = (double*)malloc(sizeof(double)*nelements); + if (!dataf) { + fprintf(stderr, "Could not allocate data block of size %ld\n", nelements); + exit(-1); + } + for (i=0; idata = dataf; + } + strncpy(Table->filename, File, 1024); + Table->rows = nelements/columns; + Table->columns = columns; + Table->array_length = 1; + Table->block_number = 1; + + Table_Stat(Table); + + return(nelements); + } /* end Table_Read_Offset_Binary */ + +/******************************************************************************* +* long Table_Read_Handle(t_Table *Table, FILE *fid, int block_number, long max_rows, char *name) +* ACTION: read a single Table from a text file handle (private) +* input Table:pointer to a t_Table structure +* fid: pointer to FILE handle +* block_number: if the file does contain more than one +* data block, then indicates which one to get (from index 1) +* a 0 value means append/catenate all +* max_rows: if non 0, only reads that number of lines +* return initialized single Table t_Table structure containing data, header, ... +* modified Table t_Table structure containing data, header, ... +* number of read elements (-1: error, 0:header only) +* The routine stores any line starting with '#', '%' and ';' into the header +* Other lines are interpreted as numerical data, and stored. +* Data block should be a rectangular matrix or vector. +* Data block may be rebined with Table_Rebin (also sort in ascending order) +*******************************************************************************/ + long Table_Read_Handle(t_Table *Table, FILE *hfile, + long block_number, long max_rows, char *name) + { /* reads all/a data block from 'file' handle and returns a Table structure */ + double *Data = NULL; + double *Datatmp = NULL; + char *Header = NULL; + char *Headertmp = NULL; + long malloc_size = CHAR_BUF_LENGTH; + long malloc_size_h = 4096; + long Rows = 0, Columns = 0; + long count_in_array = 0; + long count_in_header = 0; + long count_invalid = 0; + long block_Current_index = 0; + char flag_End_row_loop = 0; + + if (!Table) return(-1); + Table_Init(Table, 0, 0); + if (name && name[0]!='\0') strncpy(Table->filename, name, 1024); + + if(!hfile) { + fprintf(stderr, "Error: File handle is NULL (Table_Read_Handle).\n"); + return (-1); + } + Header = (char*) calloc(malloc_size_h, sizeof(char)); + Data = (double*)calloc(malloc_size, sizeof(double)); + if ((Header == NULL) || (Data == NULL)) { + fprintf(stderr, "Error: Could not allocate Table and Header (Table_Read_Handle).\n"); + return (-1); + } + + int flag_In_array = 0; + do { /* while (!flag_End_row_loop) */ + char *line=malloc(1024*CHAR_BUF_LENGTH*sizeof(char)); + long back_pos=0; /* ftell start of line */ + + if (!line) { + fprintf(stderr,"Could not allocate line buffer\n"); + exit(-1); + } + back_pos = ftell(hfile); + if (fgets(line, 1024*CHAR_BUF_LENGTH, hfile) != NULL) { /* analyse line */ + /* first skip blank and tabulation characters */ + int i = strspn(line, " \t"); + + /* handle comments: stored in header */ + if (NULL != strchr("#%;/", line[i])) + { /* line is a comment */ + count_in_header += strlen(line); + if (count_in_header >= malloc_size_h) { + /* if succeed and in array : add (and realloc if necessary) */ + malloc_size_h = count_in_header+4096; + char *Headertmp = (char*)realloc(Header, malloc_size_h*sizeof(char)); + if(!Headertmp) { + free(Header); + fprintf(stderr, "Error: Could not reallocate Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + strncat(Header, line, 4096); + flag_In_array=0; + /* exit line and file if passed desired block */ + if (block_number > 0 && block_number == block_Current_index) { + flag_End_row_loop = 1; + } + + /* Continue with next line */ + continue; + } + if (strstr(line, "***")) + { + count_invalid++; + /* Continue with next line */ + continue; + } + + /* get the number of columns splitting line with strtok */ + char *lexeme; + char flag_End_Line = 0; + long block_Num_Columns = 0; + const char seps[] = " ,;\t\n\r"; + + lexeme = strtok(line, seps); + while (!flag_End_Line) { + if ((lexeme != NULL) && (lexeme[0] != '\0')) { + /* reading line: the token is not empty */ + double X; + int count=1; + /* test if we have 'NaN','Inf' */ + if (!strncasecmp(lexeme,"NaN",3)) + X = 0; + else if (!strncasecmp(lexeme,"Inf",3) || !strncasecmp(lexeme,"+Inf",4)) + X = FLT_MAX; + else if (!strncasecmp(lexeme,"-Inf",4)) + X = -FLT_MAX; + else + count = sscanf(lexeme,"%lg",&X); + if (count == 1) { + /* reading line: the token is a number in the line */ + if (!flag_In_array) { + /* reading num: not already in a block: starts a new data block */ + block_Current_index++; + flag_In_array = 1; + block_Num_Columns= 0; + if (block_number > 0) { + /* initialise a new data block */ + Rows = 0; + count_in_array = 0; + } /* else append */ + } + /* reading num: all blocks or selected block */ + if (flag_In_array && (block_number == 0 || + block_number == block_Current_index)) { + /* starting block: already the desired number of rows ? */ + if (block_Num_Columns == 0 && + max_rows > 0 && Rows >= max_rows) { + flag_End_Line = 1; + flag_End_row_loop = 1; + flag_In_array = 0; + /* reposition to begining of line (ignore line) */ + fseek(hfile, back_pos, SEEK_SET); + } else { /* store into data array */ + if (count_in_array >= malloc_size) { + /* realloc data buffer if necessary */ + malloc_size = count_in_array*1.5; + Datatmp = (double*) realloc(Data, malloc_size*sizeof(double)); + if (Datatmp == NULL) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Handle).\n", + malloc_size*sizeof(double)); + free(Data); + return (-1); + } else { + Data=Datatmp; + } + } + if (0 == block_Num_Columns) Rows++; + Data[count_in_array] = X; + count_in_array++; + block_Num_Columns++; + } + } /* reading num: end if flag_In_array */ + } /* end reading num: end if sscanf lexeme -> numerical */ + else { + /* reading line: the token is not numerical in that line. end block */ + if (block_Current_index == block_number) { + flag_End_Line = 1; + flag_End_row_loop = 1; + } else { + flag_In_array = 0; + flag_End_Line = 1; + } + } + } + else { + /* no more tokens in line */ + flag_End_Line = 1; + if (block_Num_Columns > 0) Columns = block_Num_Columns; + } + + // parse next token + lexeme = strtok(NULL, seps); + + } /* while (!flag_End_Line) */ + } /* end: if fgets */ + else flag_End_row_loop = 1; /* else fgets : end of file */ + free(line); + } while (!flag_End_row_loop); /* end while flag_End_row_loop */ + + Table->block_number = block_number; + Table->array_length = 1; + + // shrink header to actual size (plus terminating 0-byte) + if (count_in_header) { + Headertmp = (char*)realloc(Header, count_in_header*sizeof(char) + 1); + if(!Headertmp) { + fprintf(stderr, "Error: Could not shrink Header (Table_Read_Handle).\n"); + free(Header); + return (-1); + } else { + Header = Headertmp; + } + } + Table->header = Header; + + if (count_in_array*Rows*Columns == 0) + { + Table->rows = 0; + Table->columns = 0; + free(Data); + return (0); + } + if (Rows * Columns != count_in_array) + { + fprintf(stderr, "Warning: Read_Table :%s %s Data has %li values that should be %li x %li\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_in_array, Rows, Columns); + Columns = count_in_array; Rows = 1; + } + if (count_invalid) + { + fprintf(stderr,"Warning: Read_Table :%s %s Data has %li invalid lines (*****). Ignored.\n", + (Table->filename[0] != '\0' ? Table->filename : ""), + (!block_number ? " catenated" : ""), + count_invalid); + } + Datatmp = (double*)realloc(Data, count_in_array*sizeof(double)); + if(!Datatmp) { + fprintf(stderr, "Error: Could reallocate Data block to %li doubles (Table_Read_Handle).\n", count_in_array); + free(Data); + return (-1); + } else { + Data = Datatmp; + } + Table->data = Data; + Table->rows = Rows; + Table->columns = Columns; + + return (count_in_array); + + } /* end Table_Read_Handle */ + +/******************************************************************************* +* long Table_Rebin(t_Table *Table) +* ACTION: rebin a single Table, sorting 1st column in ascending order +* input Table: single table containing data. +* The data block is reallocated in this process +* return updated Table with increasing, evenly spaced first column (index 0) +* number of data elements (-1: error, 0:empty data) +*******************************************************************************/ + long Table_Rebin(t_Table *Table) + { + double new_step=0; + long i; + /* performs linear interpolation on X axis (0-th column) */ + + if (!Table) return(-1); + if (!Table->data + || Table->rows*Table->columns == 0 || !Table->step_x) + return(0); + Table_Stat(Table); /* recompute statitstics and minimal step */ + new_step = Table->step_x; /* minimal step in 1st column */ + + if (!(Table->constantstep)) /* not already evenly spaced */ + { + long Length_Table; + double *New_Table; + + Length_Table = ceil(fabs(Table->max_x - Table->min_x)/new_step)+1; + /*return early if the rebinned table will become too large*/ + if (Length_Table > mcread_table_rebin_maxsize){ + fprintf(stderr,"WARNING: (Table_Rebin): Rebinning table from %s would exceed 1M rows. Skipping.\n", Table->filename); + return(Table->rows*Table->columns); + } + New_Table = (double*)malloc(Length_Table*Table->columns*sizeof(double)); + if (!New_Table) { + fprintf(stderr,"Could not allocate New_Table of size %ld x %ld\n", Length_Table, Table->columns); + exit(-1); + } + for (i=0; i < Length_Table; i++) + { + long j; + double X; + X = Table->min_x + i*new_step; + New_Table[i*Table->columns] = X; + for (j=1; j < Table->columns; j++) + New_Table[i*Table->columns+j] + = Table_Value(*Table, X, j); + } /* end for i */ + + Table->rows = Length_Table; + Table->step_x = new_step; + Table->max_x = Table->min_x + (Length_Table-1)*new_step; + /*max might not be the same anymore + * Use Length_Table -1 since the first and laset rows are the limits of the defined interval.*/ + free(Table->data); + Table->data = New_Table; + Table->constantstep=1; + } /* end else (!constantstep) */ + return (Table->rows*Table->columns); + } /* end Table_Rebin */ + +/******************************************************************************* +* double Table_Index(t_Table Table, long i, long j) +* ACTION: read an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* return Value = data[i][j] +* Returns Value from the i-th row, j-th column of Table +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +double Table_Index(t_Table Table, long i, long j) +{ + long AbsIndex; + + if (Table.rows == 1 || Table.columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table.columns*Table.rows - 1); + i = 0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table.rows - 1); + j = MIN(MAX(0, j), Table.columns - 1); + } + + /* handle vectors specifically */ + AbsIndex = i*(Table.columns)+j; + + if (Table.data != NULL) + return (Table.data[AbsIndex]); + else + return 0; +} /* end Table_Index */ + +/******************************************************************************* +* void Table_SetElement(t_Table *Table, long i, long j, double value) +* ACTION: set an element [i,j] of a single Table +* input Table: table containing data +* i : index of row (0:Rows-1) +* j : index of column (0:Columns-1) +* value = data[i][j] +* Returns 0 in case of error +* Tests are performed on indexes i,j to avoid errors +*******************************************************************************/ +int Table_SetElement(t_Table *Table, long i, long j, + double value) +{ + long AbsIndex; + + if (Table->rows == 1 || Table->columns == 1) { + /* vector */ + j = MIN(MAX(0, i+j), Table->columns*Table->rows - 1); i=0; + } else { + /* matrix */ + i = MIN(MAX(0, i), Table->rows - 1); + j = MIN(MAX(0, j), Table->columns - 1); + } + + AbsIndex = i*(Table->columns)+j; + if (Table->data != NULL) { + Table->data[AbsIndex] = value; + return 1; + } + + return 0; +} /* end Table_SetElement */ + +/******************************************************************************* +* double Table_Value(t_Table Table, double X, long j) +* ACTION: read column [j] of a single Table at row which 1st column is X +* input Table: table containing data. +* X : data value in the first column (index 0) +* j : index of column from which is extracted the Value (0:Columns-1) +* return Value = data[index for X][j] with linear interpolation +* Returns Value from the j-th column of Table corresponding to the +* X value for the 1st column (index 0) +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value(t_Table Table, double X, long j) +{ + long Index = -1; + double X1=0, Y1=0, X2=0, Y2=0; + double ret=0; + + if (X > Table.max_x) return Table_Index(Table,Table.rows-1 ,j); + if (X < Table.min_x) return Table_Index(Table,0 ,j); + + // Use constant-time lookup when possible + if(Table.constantstep) { + Index = (long)floor( + (X - Table.min_x) / (Table.max_x - Table.min_x) * (Table.rows-1)); + X1 = Table_Index(Table,Index-1,0); + X2 = Table_Index(Table,Index ,0); + } + // Use binary search on large, monotonic tables + else if(Table.monotonic && Table.rows > 100) { + long left = Table.min_x; + long right = Table.max_x; + + while (!((X1 <= X) && (X < X2)) && (right - left > 1)) { + Index = (left + right) / 2; + + X1 = Table_Index(Table, Index-1, 0); + X2 = Table_Index(Table, Index, 0); + + if (X < X1) { + right = Index; + } else { + left = Index; + } + } + } + + // Fall back to linear search, if no-one else has set X1, X2 correctly + if (!((X1 <= X) && (X < X2))) { + /* look for index surrounding X in the table -> Index */ + for (Index=1; Index <= Table.rows-1; Index++) { + X1 = Table_Index(Table, Index-1,0); + X2 = Table_Index(Table, Index ,0); + if ((X1 <= X) && (X < X2)) break; + } /* end for Index */ + } + + Y1 = Table_Index(Table,Index-1, j); + Y2 = Table_Index(Table,Index , j); + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) { + ret = Table_Interp1d(X, X1,Y1, X2,Y2); + } + else if (!strcmp(Table.method,"nearest")) { + ret = Table_Interp1d_nearest(X, X1,Y1, X2,Y2); + } + +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + + return ret; +} /* end Table_Value */ + +/******************************************************************************* +* double Table_Value2d(t_Table Table, double X, double Y) +* ACTION: read element [X,Y] of a matrix Table +* input Table: table containing data. +* X : row index, may be non integer +* Y : column index, may be non integer +* return Value = data[index X][index Y] with bi-linear interpolation +* Returns Value for the indices [X,Y] +* Tests are performed (within Table_Index) on indexes i,j to avoid errors +* NOTE: data should rather be monotonic, and evenly sampled. +*******************************************************************************/ +double Table_Value2d(t_Table Table, double X, double Y) + { + long x1,x2,y1,y2; + double z11,z12,z21,z22; + double ret=0; + + x1 = (long)floor(X); + y1 = (long)floor(Y); + + if (x1 > Table.rows-1 || x1 < 0) { + x2 = x1; + } else { + x2 = x1 + 1; + } + + if (y1 > Table.columns-1 || y1 < 0) { + y2 = y1; + } else { + y2 = y1 + 1; + } + + z11 = Table_Index(Table, x1, y1); + + if (y2 != y1) z12=Table_Index(Table, x1, y2); else z12 = z11; + if (x2 != x1) z21=Table_Index(Table, x2, y1); else z21 = z11; + if (y2 != y1) z22=Table_Index(Table, x2, y2); else z22 = z21; + +#ifdef OPENACC +#define strcmp(a,b) str_comp(a,b) +#endif + + if (!strcmp(Table.method,"linear")) + ret = Table_Interp2d(X,Y, x1,y1,x2,y2, z11,z12,z21,z22); +#ifdef OPENACC +#ifdef strcmp +#undef strcmp +#endif +#endif + else { + if (fabs(X-x1) < fabs(X-x2)) { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z11; else ret = z12; + } else { + if (fabs(Y-y1) < fabs(Y-y2)) ret = z21; else ret = z22; + } + } + return ret; + } /* end Table_Value2d */ + + +/******************************************************************************* +* void Table_Free(t_Table *Table) +* ACTION: free a single Table. First Call Table_File_list_gc. If this returns +* non-zero it means there are more refernces to the table, and so the table +* should not bee freed. +* return: empty Table +*******************************************************************************/ + void Table_Free(t_Table *Table) + { + if( !Table_File_List_gc(Table) ){ + return; + } + if (!Table) return; + if (Table->data != NULL) free(Table->data); + if (Table->header != NULL) free(Table->header); + Table->data = NULL; + Table->header = NULL; + } /* end Table_Free */ + +/****************************************************************************** +* void Table_Info(t_Table Table) +* ACTION: print informations about a single Table +*******************************************************************************/ + long Table_Info(t_Table Table) + { + char buffer[256]; + long ret=0; + + if (!Table.block_number) strcpy(buffer, "catenated"); + else sprintf(buffer, "block %li", Table.block_number); + printf("Table from file '%s' (%s)", + Table.filename[0] != '\0' ? Table.filename : "", buffer); + if ((Table.data != NULL) && (Table.rows*Table.columns)) + { + printf(" is %li x %li ", Table.rows, Table.columns); + if (Table.rows*Table.columns > 1) + printf("(x=%g:%g)", Table.min_x, Table.max_x); + else printf("(x=%g) ", Table.min_x); + ret = Table.rows*Table.columns; + if (Table.monotonic) printf(", monotonic"); + if (Table.constantstep) printf(", constant step"); + printf(". interpolation: %s\n", Table.method); + } + else printf(" is empty.\n"); + + if (Table.header && strlen(Table.header)) { + char *header; + int i; + header = malloc(80); + if (!header) return(ret); + for (i=0; i<80; header[i++]=0); + strncpy(header, Table.header, 75); + if (strlen(Table.header) > 75) { + strcat( header, " ..."); + } + for (i=0; iheader = NULL; + Table->filename[0]= '\0'; + Table->filesize= 0; + Table->min_x = 0; + Table->max_x = 0; + Table->step_x = 0; + Table->block_number = 0; + Table->array_length = 0; + Table->monotonic = 0; + Table->constantstep = 0; + Table->begin = 0; + Table->end = 0; + strcpy(Table->method,"linear"); + + if (rows*columns >= 1) { + data = (double*)malloc(rows*columns*sizeof(double)); + if (data) for (i=0; i < rows*columns; data[i++]=0); + else { + if(Table->quiet<2) + fprintf(stderr,"Error: allocating %ld double elements." + "Too big (Table_Init).\n", rows*columns); + rows = columns = 0; + } + } + Table->rows = (rows >= 1 ? rows : 0); + Table->columns = (columns >= 1 ? columns : 0); + Table->data = data; + return(Table->rows*Table->columns); +} /* end Table_Init */ + +/****************************************************************************** +* long Table_Write(t_Table Table, char *file, x1,x2, y1,y2) +* ACTION: write a Table to disk (ascii). +* when x1=x2=0 or y1=y2=0, the table default limits are used. +* return: 0=all is fine, non-0: error +*******************************************************************************/ +MCDETECTOR Table_Write(t_Table Table, char *file, char *xl, char *yl, + double x1, double x2, double y1, double y2) +{ + MCDETECTOR detector; + + if ((Table.data == NULL) && (Table.rows*Table.columns)) { + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + return(detector); /* Table is empty - nothing to do */ + } + if (!x1 && !x2) { + x1 = Table.min_x; + x2 = Table.max_x; + } + if (!y1 && !y2) { + y1 = 1; + y2 = Table.columns; + } + + /* transfer content of the Table into a 2D detector */ + Coords coords = { 0, 0, 0}; + Rotation rot; + rot_set_rotation(rot, 0, 0, 0); + + if (Table.rows == 1 || Table.columns == 1) { + detector = mcdetector_out_1D(Table.filename, + xl ? xl : "", yl ? yl : "", + "x", x1, x2, + Table.rows * Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } else { + detector = mcdetector_out_2D(Table.filename, + xl ? xl : "", yl ? yl : "", + x1, x2, y1, y2, + Table.rows, Table.columns, + NULL, Table.data, NULL, + file, file, coords, rot,9999); + } + return(detector); +} + +/****************************************************************************** +* void Table_Stat(t_Table *Table) +* ACTION: computes min/max/mean step of 1st column for a single table (private) +* return: updated Table +*******************************************************************************/ + static void Table_Stat(t_Table *Table) + { + long i; + double max_x, min_x; + double row=1; + char monotonic=1; + char constantstep=1; + double step=0; + long n; + + if (!Table) return; + if (!Table->rows || !Table->columns) return; + if (Table->rows == 1) row=0; // single row + max_x = -FLT_MAX; + min_x = FLT_MAX; + n = (row ? Table->rows : Table->columns); + /* get min and max of first column/vector */ + for (i=0; i < n; i++) + { + double X; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + if (X < min_x) min_x = X; + if (X > max_x) max_x = X; + } /* for */ + + /* test for monotonicity and constant step if the table is an XY or single vector */ + if (n > 1) { + /* mean step */ + step = (max_x - min_x)/(n-1); + /* now test if table is monotonic on first column, and get minimal step size */ + for (i=0; i < n-1; i++) { + double X, diff;; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if (diff && fabs(diff) < fabs(step)) step = diff; + /* change sign ? */ + if ((max_x - min_x)*diff < 0 && monotonic) + monotonic = 0; + } /* end for */ + + /* now test if steps are constant within READ_TABLE_STEPTOL */ + if(!step){ + /*means there's a disconitnuity -> not constantstep*/ + constantstep=0; + }else if (monotonic) { + for (i=0; i < n-1; i++) { + double X, diff; + X = (row ? Table_Index(*Table,i ,0) + : Table_Index(*Table,0, i)); + diff = (row ? Table_Index(*Table,i+1,0) + : Table_Index(*Table,0, i+1)) - X; + if ( fabs(step)*(1+READ_TABLE_STEPTOL) < fabs(diff) || + fabs(diff) < fabs(step)*(1-READ_TABLE_STEPTOL) ) + { constantstep = 0; break; } + } + } + + } + Table->step_x= step; + Table->max_x = max_x; + Table->min_x = min_x; + Table->monotonic = monotonic; + Table->constantstep = constantstep; + } /* end Table_Stat */ + +/****************************************************************************** +* t_Table *Table_Read_Array(char *File, long *blocks) +* ACTION: read as many data blocks as available, iteratively from file +* return: initialized t_Table array, last element is an empty Table. +* the number of extracted blocks in non NULL pointer *blocks +*******************************************************************************/ + t_Table *Table_Read_Array(char *File, long *blocks) + { + t_Table *Table_Array = NULL; + t_Table *Table_Arraytmp = NULL; + long offset=0; + long block_number=0; + long allocated=256; + long nelements=1; + + /* first allocate an initial empty t_Table array */ + Table_Array = (t_Table *)malloc(allocated*sizeof(t_Table)); + if (!Table_Array) { + fprintf(stderr, "Error: Can not allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + *blocks = 0; + return (NULL); + } + + while (nelements > 0) + { + t_Table Table; + + /* if ok, set t_Table block number else exit loop */ + block_number++; + Table.block_number = block_number; + + /* access file at offset and get following block. Block number is from the set offset + * hence the hardcoded 1 - i.e. the next block counted from offset.*/ + nelements = Table_Read_Offset(&Table, File, 1, &offset,0); + /*if the block is empty - don't store it*/ + if (nelements>0){ + /* if t_Table array is not long enough, expand and realocate */ + if (block_number >= allocated-1) { + allocated += 256; + Table_Arraytmp = (t_Table *)realloc(Table_Array, + allocated*sizeof(t_Table)); + if (!Table_Arraytmp) { + fprintf(stderr, "Error: Can not re-allocate memory %zi (Table_Read_Array).\n", + allocated*sizeof(t_Table)); + free(Table_Array); + *blocks = 0; + return (NULL); + } else { + Table_Array = Table_Arraytmp; + } + } + /* store it into t_Table array */ + //snprintf(Table.filename, 1024, "%s#%li", File, block_number-1); + Table_Array[block_number-1] = Table; + } + /* continues until we find an empty block */ + } + /* send back number of extracted blocks */ + if (blocks) *blocks = block_number-1; + + /* now store total number of elements in Table array */ + for (offset=0; offset < block_number; + Table_Array[offset++].array_length = block_number-1); + + return(Table_Array); + } /* end Table_Read_Array */ +/******************************************************************************* +* void Table_Free_Array(t_Table *Table) +* ACTION: free a Table array +*******************************************************************************/ + void Table_Free_Array(t_Table *Table) + { + long index; + if (!Table) return; + for (index=0;index < Table[0].array_length; index++){ + Table_Free(&Table[index]); + } + free(Table); + } /* end Table_Free_Array */ + +/****************************************************************************** +* long Table_Info_Array(t_Table *Table) +* ACTION: print informations about a Table array +* return: number of elements in the Table array +*******************************************************************************/ + long Table_Info_Array(t_Table *Table) + { + long index=0; + + if (!Table) return(-1); + while (index < Table[index].array_length + && (Table[index].data || Table[index].header) + && (Table[index].rows*Table[index].columns) ) { + Table_Info(Table[index]); + index++; + } + printf("This Table array contains %li elements\n", index); + return(index); + } /* end Table_Info_Array */ + +/****************************************************************************** +* char **Table_ParseHeader(char *header, symbol1, symbol2, ..., NULL) +* ACTION: search for char* symbols in header and return their value or NULL +* the search is not case sensitive. +* Last argument MUST be NULL +* return: array of char* with line following each symbol, or NULL if not found +*******************************************************************************/ +#ifndef MyNL_ARGMAX +#define MyNL_ARGMAX 50 +#endif + +char **Table_ParseHeader_backend(char *header, ...){ + va_list ap; + char exit_flag=0; + int counter =0; + char **ret =NULL; + if (!header || header[0]=='\0') return(NULL); + + ret = (char**)calloc(MyNL_ARGMAX, sizeof(char*)); + if (!ret) { + printf("Table_ParseHeader: Cannot allocate %i values array for Parser (Table_ParseHeader).\n", + MyNL_ARGMAX); + return(NULL); + } + for (counter=0; counter < MyNL_ARGMAX; ret[counter++] = NULL); + counter=0; + + va_start(ap, header); + while(!exit_flag && counter < MyNL_ARGMAX-1) + { + char *arg_char=NULL; + char *pos =NULL; + /* get variable argument value as a char */ + arg_char = va_arg(ap, char *); + if (!arg_char || arg_char[0]=='\0'){ + exit_flag = 1; break; + } + /* search for the symbol in the header */ + pos = (char*)strcasestr(header, arg_char); + if (pos) { + char *eol_pos; + eol_pos = strchr(pos+strlen(arg_char), '\n'); + if (!eol_pos) + eol_pos = strchr(pos+strlen(arg_char), '\r'); + if (!eol_pos) + eol_pos = pos+strlen(pos)-1; + ret[counter] = (char*)malloc(eol_pos - pos); + if (!ret[counter]) { + printf("Table_ParseHeader: Cannot allocate value[%i] array for Parser searching for %s (Table_ParseHeader).\n", + counter, arg_char); + exit_flag = 1; break; + } + strncpy(ret[counter], pos+strlen(arg_char), eol_pos - pos - strlen(arg_char)); + ret[counter][eol_pos - pos - strlen(arg_char)]='\0'; + } + counter++; + } + va_end(ap); + return(ret); +} /* Table_ParseHeader */ + +/****************************************************************************** +* double Table_Interp1d(x, x1, y1, x2, y2) +* ACTION: interpolates linearly at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d(double x, + double x1, double y1, + double x2, double y2) +{ + double slope; + if (x2 == x1) return (y1+y2)/2; + if (y1 == y2) return y1; + slope = (y2 - y1)/(x2 - x1); + return y1+slope*(x - x1); +} /* Table_Interp1d */ + +/****************************************************************************** +* double Table_Interp1d_nearest(x, x1, y1, x2, y2) +* ACTION: table lookup with nearest method at x between y1=f(x1) and y2=f(x2) +* return: y=f(x) value +*******************************************************************************/ +double Table_Interp1d_nearest(double x, + double x1, double y1, + double x2, double y2) +{ + if (fabs(x-x1) < fabs(x-x2)) return (y1); + else return(y2); +} /* Table_Interp1d_nearest */ + +/****************************************************************************** +* double Table_Interp2d(x,y, x1,y1, x2,y2, z11,z12,z21,z22) +* ACTION: interpolates bi-linearly at (x,y) between z1=f(x1,y1) and z2=f(x2,y2) +* return: z=f(x,y) value +* x,y | x1 x2 +* ---------------- +* y1 | z11 z21 +* y2 | z12 z22 +*******************************************************************************/ +double Table_Interp2d(double x, double y, + double x1, double y1, + double x2, double y2, + double z11, double z12, double z21, double z22) +{ + double ratio_x, ratio_y; + if (x2 == x1) return Table_Interp1d(y, y1,z11, y2,z12); + if (y1 == y2) return Table_Interp1d(x, x1,z11, x2,z21); + + ratio_y = (y - y1)/(y2 - y1); + ratio_x = (x - x1)/(x2 - x1); + return (1-ratio_x)*(1-ratio_y)*z11 + ratio_x*(1-ratio_y)*z21 + + ratio_x*ratio_y*z22 + (1-ratio_x)*ratio_y*z12; +} /* Table_Interp2d */ + +/* end of read_table-lib.c */ +#endif // READ_TABLE_LIB_C + +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff.h +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Release: +* Version: +* +* Object File Format intersection header for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format: +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#define INTEROFF_LIB_H "$Revision$" + +#ifndef OFF_EPSILON +#define OFF_EPSILON 1e-13 +#endif + +#ifndef OFF_INTERSECT_MAX +#ifdef OPENACC +#define OFF_INTERSECT_MAX 100 +#else +#define OFF_INTERSECT_MAX 1024 +#endif +#endif + +//#include + +#define N_VERTEX_DISPLAYED 200000 + +typedef struct intersection { + MCNUM time; //time of the intersection + Coords v; //intersection point + Coords normal; //normal vector of the surface intersected + short in_out; //1 if the ray enters the volume, -1 otherwise + short edge; //1 if the intersection is on the boundary of the polygon, and error is possible + unsigned long index; // index of the face +} intersection; + +typedef struct polygon { + MCNUM* p; //vertices of the polygon in adjacent order, this way : x1 | y1 | z1 | x2 | y2 | z2 ... + int npol; //number of vertices + #pragma acc shape(p[0:npol]) init_needed(npol) + Coords normal; + double D; +} polygon; + +typedef struct off_struct { + long vtxSize; + long polySize; + long faceSize; + Coords* vtxArray; + #pragma acc shape(vtxArray[0:vtxSize]) init_needed(vtxSize) + Coords* normalArray; + #pragma acc shape(vtxArray[0:faceSize]) init_needed(faceSize) + unsigned long* faceArray; + #pragma acc shape(vtxArray[0:faceSize][0:polySize]) init_needed(faceSize,polySize) + double* DArray; + #pragma acc shape(vtxArray[0:polySize]) init_needed(polySize) + char *filename; + int mantidflag; + long mantidoffset; + intersection intersects[OFF_INTERSECT_MAX]; // After a call to off_intersect_all contains the list of intersections. + int nextintersect; // 'Next' intersection (first t>0) solution after call to off_intersect_all + int numintersect; // Number of intersections after call to off_intersect_all +} off_struct; + +/******************************************************************************* +* long off_init( char *offfile, double xwidth, double yheight, double zdepth, off_struct* data) +* ACTION: read an OFF file, optionally center object and rescale, initialize OFF data structure +* INPUT: 'offfile' OFF file to read +* 'xwidth,yheight,zdepth' if given as non-zero, apply bounding box. +* Specifying only one of these will also use the same ratio on all axes +* 'notcenter' center the object to the (0,0,0) position in local frame when set to zero +* RETURN: number of polyhedra and 'data' OFF structure +*******************************************************************************/ +long off_init( char *offfile, double xwidth, double yheight, double zdepth, + int notcenter, off_struct* data); + +/******************************************************************************* +* int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +* data is the full OFF structure, including a list intersection type +*******************************************************************************/ +#pragma acc routine +int off_intersect_all(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct *data ); + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* ax, ay, az are the local acceleration vector +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ); + +/***************************************************************************** +* int off_intersectx(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +#pragma acc routine +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ); + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED points from the object +*******************************************************************************/ +void off_display(off_struct); + +/******************************************************************************* +void p_to_quadratic(double eq[], Coords acc, + Coords pos, Coords vel, + double* teq) +* ACTION: define the quadratic for the intersection of a parabola with a plane +* INPUT: 'eq' plane equation +* 'acc' acceleration vector +* 'vel' velocity of the particle +* 'pos' position of the particle +* equation of plane A * x + B * y + C * z - D = 0 +* eq[0] = (C*az)/2+(B*ay)/2+(A*ax)/2 +* eq[1] = C*vz+B*vy+A*vx +* eq[2] = C*z0+B*y0+A*x0-D +* RETURN: equation of parabola: teq(0) * t^2 + teq(1) * t + teq(2) +*******************************************************************************/ +void p_to_quadratic(Coords norm, MCNUM d, Coords acc, Coords pos, Coords vel, + double* teq); + +/******************************************************************************* +int quadraticSolve(double eq[], double* x1, double* x2); +* ACTION: solves the quadratic for the roots x1 and x2 +* eq[0] * t^2 + eq[1] * t + eq[2] = 0 +* INPUT: 'eq' the coefficients of the parabola +* RETURN: roots x1 and x2 and the number of solutions +*******************************************************************************/ +int quadraticSolve(double* eq, double* x1, double* x2); + +#endif + +/* end of interoff-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Runtime: share/interoff-lib.c +* +* %Identification +* Written by: Reynald Arnerin +* Date: Jun 12, 2008 +* Origin: ILL +* Release: $Revision$ +* Version: McStas X.Y +* +* Object File Format intersection library for McStas. Requires the qsort function. +* +* Such files may be obtained with e.g. +* qhull < points.xyz Qx Qv Tv o > points.off +* where points.xyz has format (it supports comments): +* 3 +* +* +* ... +* The resulting file should have its first line being changed from '3' into 'OFF'. +* It can then be displayed with geomview. +* A similar, but somewhat older solution is to use 'powercrust' with e.g. +* powercrust -i points.xyz +* which will generate a 'pc.off' file to be renamed as suited. +* +*******************************************************************************/ + +#ifndef INTEROFF_LIB_H +#include "interoff-lib.h" +#endif + +#ifndef INTEROFF_LIB_C +#define INTEROFF_LIB_C "$Revision$" + +#ifdef OPENACC // If on GPU map fprintf to printf +#define fprintf(stderr,...) printf(__VA_ARGS__) +#endif + +#pragma acc routine +double off_F(double x, double y,double z,double A,double B,double C,double D) { + return ( A*x + B*y + C*z + D ); +} + +#pragma acc routine +char off_sign(double a) { + if (a<0) return(-1); + else if (a==0) return(0); + else return(1); +} + +// off_normal ****************************************************************** +//gives the normal vector of p +#pragma acc routine +void off_normal(Coords* n, polygon p) +{ + //using Newell method + int i=0,j=0; + n->x=0;n->y=0;n->z=0; + for (i = 0, j = p.npol-1; i < p.npol; j = i++) + { + MCNUM x1=p.p[3*i], + y1=p.p[3*i+1], + z1=p.p[3*i+2]; + MCNUM x2=p.p[3*j], + y2=p.p[3*j+1], + z2=p.p[3*j+2]; + // n is the cross product of v1*v2 + n->x += (y1 - y2) * (z1 + z2); + n->y += (z1 - z2) * (x1 + x2); + n->z += (x1 - x2) * (y1 + y2); + } +} /* off_normal */ + +// off_pnpoly ****************************************************************** +//based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html +//return 0 if the vertex is out +// 1 if it is in +// -1 if on the boundary +#pragma acc routine +int off_pnpoly(polygon p, Coords v) +{ + int i=0, c = 0; + MCNUM minx=FLT_MAX,maxx=-FLT_MAX,miny=FLT_MAX,maxy=-FLT_MAX,minz=FLT_MAX,maxz=-FLT_MAX; + MCNUM areax=0,areay=0,areaz=0; + + int pol2dx=0,pol2dy=1; //2d restriction of the poly + MCNUM x=v.x,y=v.y; + + /*areax: projected area with x-scratched = |v1_yz x v2_yz|, where v1=(x1-x0,0,z1-z0) & v2=(x2-x0,0,z2-z0).*/ + /* In principle, if polygon is triangle area should be scaled by 1/2, but this is irrelevant for finding the maximum area.*/ + /* Similarly for y and z scratched.*/ + areax=coords_len(coords_xp( + coords_set(0,p.p[3*1+1]-p.p[0+1],p.p[3*1+2]-p.p[0+2]), + coords_set(0,p.p[3*2+1]-p.p[0+1],p.p[3*2+2]-p.p[0+2]))); + areay=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],0,p.p[3*1+2]-p.p[0+2]), + coords_set(p.p[3*2+0]-p.p[0+0],0,p.p[3*2+2]-p.p[0+2]))); + areaz=coords_len(coords_xp( + coords_set(p.p[3*1+0]-p.p[0+0],p.p[3*1+1]-p.p[0+1],0), + coords_set(p.p[3*2+0]-p.p[0+0],p.p[3*2+1]-p.p[0+1],0))); + + if(areaztime = inter->edge = inter->in_out=0; + inter->v = inter->normal = coords_set(0,0,1); + + if (fabs(ndir) < OFF_EPSILON) // ray is parallel to polygon plane + { + if (nw0 == 0) // ray lies in polygon plane (infinite number of solution) + return 0; + else return 0; // ray disjoint from plane (no solution) + } + + // get intersect point of ray with polygon plane + inter->time = nw0 / ndir; //parametric value the point on line (a,b) + + inter->v = coords_set(a.x + inter->time * dir.x,// intersect point of ray and plane + a.y + inter->time * dir.y, + a.z + inter->time * dir.z); + + int res=off_pnpoly(p,inter->v); + + inter->edge=(res==-1); + if (ndir<0) + inter->in_out=1; //the negative dot product means we enter the surface + else + inter->in_out=-1; + + inter->normal=p.normal; + + return res; //true if the intersection point lies inside the poly +} /* off_intersectPoly */ + + +// off_getBlocksIndex ********************************************************** +/*reads the indexes at the beginning of the off file as this : +line 1 OFF +line 2 nbVertex nbFaces nbEdges +*/ +FILE *off_getBlocksIndex(char* filename, long* vtxSize, long* polySize ) +{ + FILE* f = Open_File(filename,"r", NULL); /* from read_table-lib: FILE *Open_File(char *name, char *Mode, char *path) */ + if (!f) return (f); + + char line[CHAR_BUF_LENGTH]; + char *ret=0; + *vtxSize = *polySize = 0; + + /* **************** start to read the file header */ + /* OFF file: + 'OFF' or '3' + */ + + ret=fgets(line,CHAR_BUF_LENGTH , f);// line 1 = "OFF" + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read 1st line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (strlen(line)>5) + { + fprintf(stderr,"Error: First line in %s is too long (=%lu). Possibly the line is not terminated by '\\n'.\n" + " The first line is required to be exactly 'OFF', '3' or 'ply'.\n", + filename,(long unsigned)strlen(line)); + fclose(f); + return(NULL); + } + + if (strncmp(line,"OFF",3) && strncmp(line,"3",1) && strncmp(line,"ply",1)) + { + fprintf(stderr, "Error: %s is probably not an OFF, NOFF or PLY file (interoff/off_getBlocksIndex).\n" + " Requires first line to be 'OFF', '3' or 'ply'.\n",filename); + fclose(f); + return(NULL); + } + + if (!strncmp(line,"OFF",3) || !strncmp(line,"3",1)) { + do /* OFF file: skip # comments which may be there */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + } while (line[0]=='#'); + //line = nblines of vertex,faces and edges arrays + sscanf(line,"%lu %lu",vtxSize,polySize); + } else { + do /* PLY file: read all lines until find 'end_header' + and locate 'element faces' and 'element vertex' */ + { + ret=fgets(line,CHAR_BUF_LENGTH , f); + if (ret == NULL) + { + fprintf(stderr, "Error: Can not read line in file %s (interoff/off_getBlocksIndex)\n", filename); + exit(1); + } + if (!strncmp(line,"element face",12)) + sscanf(line,"element face %lu",polySize); + else if (!strncmp(line,"element vertex",14)) + sscanf(line,"element vertex %lu",vtxSize); + else if (!strncmp(line,"format binary",13)) + exit(fprintf(stderr, + "Error: Can not read binary PLY file %s, only 'format ascii' (interoff/off_getBlocksIndex)\n%s\n", + filename, line)); + } while (strncmp(line,"end_header",10)); + } + + /* The FILE is left opened ready to read 'vtxSize' vertices (vtxSize *3 numbers) + and then polySize polygons (rows) */ + + return(f); +} /* off_getBlocksIndex */ + +// off_init_planes ************************************************************* +//gives the equations of 2 perpandicular planes of [ab] +#pragma acc routine +void off_init_planes(Coords a, Coords b, + MCNUM* A1, MCNUM* C1, MCNUM* D1, MCNUM *A2, MCNUM* B2, MCNUM* C2, MCNUM* D2) +{ + //direction vector of [a b] + Coords dir={b.x-a.x, b.y-a.y, b.z-a.z}; + + //the plane parallel to the 'y' is computed with the normal vector of the projection of [ab] on plane 'xz' + *A1= dir.z; + *C1=-dir.x; + if(*A1!=0 || *C1!=0) + *D1=-(a.x)*(*A1)-(a.z)*(*C1); + else + { + //the plane does not support the vector, take the one parallel to 'z'' + *A1=1; + //B1=dir.x=0 + *D1=-(a.x); + } + //the plane parallel to the 'x' is computed with the normal vector of the projection of [ab] on plane 'yz' + *B2= dir.z; + *C2=-dir.y; + *A2= 0; + if (*B2==0 && *C2==0) + { + //the plane does not support the vector, take the one parallel to 'z' + *B2=1; + //B1=dir.x=0 + *D2=-(a.y); + } + else { + if (dir.z==0) + { + //the planes are the same, take the one parallel to 'z' + *A2= dir.y; + *B2=-dir.x; + *D2=-(a.x)*(*A2)-(a.y)*(*B2); + } + else + *D2=-(a.y)**B2-(a.z)**C2; + } +} /* off_init_planes */ + +// off_clip_3D_mod ************************************************************* +#pragma acc routine +int off_clip_3D_mod(intersection* t, Coords a, Coords b, + Coords* vtxArray, unsigned long vtxSize, unsigned long* faceArray, + unsigned long faceSize, Coords* normalArray) +{ + MCNUM A1=0, C1=0, D1=0, A2=0, B2=0, C2=0, D2=0; //perpendicular plane equations to [a,b] + off_init_planes(a, b, &A1, &C1, &D1, &A2, &B2, &C2, &D2); + + int t_size=0; + MCNUM popol[3*4]; /*3 dimensions and max 4 vertices to form a polygon*/ + unsigned long i=0,indPoly=0; + + //exploring the polygons : + i=indPoly=0; + while (iOFF_INTERSECT_MAX) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", OFF_INTERSECT_MAX); + return (t_size); + } +#endif + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k t[0].time) { + t[0]=x; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (x.time < t[3].time) { + t[3]=x; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } /* if (jCHAR_BUF_LENGTH) + { + fprintf(stderr, "Warning: number of intersection exceeded (%d) (interoff-lib/off_clip_3D_mod)\n", CHAR_BUF_LENGTH); + return (t_size); + } + //both planes intersect the polygon, let's find the intersection point + //our polygon : + int k; + for (k=0; k= 1) { + double time = 1.0e36; + if (x1 < time && x1 > 0.0) { + time = x1; + } + if (nsol == 2 && x2 < time && x2 > 0.0) { + time = x2; + } + if (time != 1.0e36) { + intersection inters; + double t2 = time * time * 0.5; + double tx = pos.x + time * vel.x; + if (acc.x != 0.0) { + tx = tx + t2 * acc.x; + } + double ty = pos.y + time * vel.y; + if (acc.y != 0.0) { + ty = ty + t2 * acc.y; + } + double tz = pos.z + time * vel.z; + if (acc.z != 0.0) { + tz = tz + t2 * acc.z; + } + inters.v = coords_set(tx, ty, tz); + Coords tvel = coords_set(vel.x + time * acc.x, + vel.y + time * acc.y, + vel.z + time * acc.z); + inters.time = time; + inters.normal = pol.normal; + inters.index = indPoly; + int res=off_pnpoly(pol,inters.v); + if (res != 0) { + inters.edge=(res==-1); + MCNUM ndir = scalar_prod(pol.normal.x,pol.normal.y,pol.normal.z,tvel.x,tvel.y,tvel.z); + if (ndir<0) { + inters.in_out=1; //the negative dot product means we enter the surface + } else { + inters.in_out=-1; + } +#ifdef OFF_LEGACY + t[t_size++]=inters; +#else + /* Check against our 4 existing times, starting from [-FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX] */ + /* Case 1, negative time? */ + if (t_size < 4) t_size++; + if (inters.time < 0) { + if (inters.time > t[0].time) { + t[0]=inters; + } + } else { + /* Case 2, positive time */ + intersection xtmp; + if (inters.time < t[3].time) { + t[3]=inters; + if (t[3].time < t[2].time) { + xtmp = t[2]; + t[2] = t[3]; + t[3] = xtmp; + } + if (t[2].time < t[1].time) { + xtmp = t[1]; + t[1] = t[2]; + t[2] = xtmp; + } + } + } +#endif + } + } + } + i += pol.npol; + indPoly++; + } /* while itime - pb->time); +} /* off_compare */ + +// off_cleanDouble ************************************************************* +//given an array of intersections throw those which appear several times +//returns 1 if there is a possibility of error +#pragma acc routine +int off_cleanDouble(intersection* t, int* t_size) +{ + int i=1; + intersection prev=t[0]; + while (i<*t_size) + { + int j=i; + //for each intersection with the same time + while (j<*t_size && fabs(prev.time-t[j].time)maxx) maxx=vtxArray[i].x; + if (vtxArray[i].ymaxy) maxy=vtxArray[i].y; + if (vtxArray[i].zmaxz) maxz=vtxArray[i].z; + i++; // inquire next vertex + } + + // resizing and repositioning params + double centerx=0, centery=0, centerz=0; + if (!notcenter) { + centerx=(minx+maxx)*0.5; + centery=(miny+maxy)*0.5; + centerz=(minz+maxz)*0.5; + } + + double rangex=-minx+maxx, + rangey=-miny+maxy, + rangez=-minz+maxz; + + double ratiox=1,ratioy=1,ratioz=1; + + if (xwidth && rangex) + { + ratiox=xwidth/rangex; + ratioy=ratiox; + ratioz=ratiox; + } + + if (yheight && rangey) + { + ratioy=yheight/rangey; + if(!xwidth) ratiox=ratioy; + ratioz=ratioy; + } + + if (zdepth && rangez) + { + ratioz=zdepth/rangez; + if(!xwidth) ratiox=ratioz; + if(!yheight) ratioy=ratioz; + } + + rangex *= ratiox; + rangey *= ratioy; + rangez *= ratioz; + + //center and resize the object + for (i=0; i polySize*10) { + fprintf(stderr, "Error: %li exceeded allocated polygon array[%li] in file %s (interoff/off_init)\n", + faceSize, polySize*10, offfile); + } + faceArray[faceSize++] = nbVertex; // length of the polygon/face + // then read the vertex ID's + for (j=0; jvtxArray = vtxArray; + data->normalArray= normalArray; + data->DArray = DArray; + data->faceArray = faceArray; + data->vtxSize = vtxSize; + data->polySize = polySize; + data->faceSize = faceSize; + data->filename = offfile; + #ifdef OPENACC + acc_attach((void *)&vtxArray); + acc_attach((void *)&normalArray); + acc_attach((void *)&faceArray); + #endif + + return(polySize); +} /* off_init */ + +#pragma acc routine +int Min_int(int x, int y) { + return (xintersects, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray ); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(data->intersects, A, B, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray ); + } + #ifndef OPENACC + qsort(data->intersects, t_size, sizeof(intersection), off_compare); + #else + #ifdef USE_OFF + gpusort(data->intersects, t_size); + #endif + #endif + off_cleanDouble(data->intersects, &t_size); + off_cleanInOut(data->intersects, &t_size); + + /*find intersections "closest" to 0 (favouring positive ones)*/ + if(t_size>0){ + int i=0; + if(t_size>1) { + for (i=1; i < t_size-1; i++){ + if (data->intersects[i-1].time > 0 && data->intersects[i].time > 0) + break; + } + + data->nextintersect=i-1; + data->numintersect=t_size; + + if (t0) *t0 = data->intersects[i-1].time; + if (n0) *n0 = data->intersects[i-1].normal; + if (t3) *t3 = data->intersects[i].time; + if (n3) *n3 = data->intersects[i].normal; + } else { + if (t0) *t0 = data->intersects[0].time; + if (n0) *n0 = data->intersects[0].normal; + } + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(data->intersects[data->nextintersect]).index; + return t_size; + } +#else + intersection intersect4[4]; + intersect4[0].time=-FLT_MAX; + intersect4[1].time=FLT_MAX; + intersect4[2].time=FLT_MAX; + intersect4[3].time=FLT_MAX; + if(mcgravitation) { + Coords pos={ x, y, z}; + Coords vel={vx, vy, vz}; + Coords acc={ax, ay, az}; + t_size=off_clip_3D_mod_grav(intersect4, pos, vel, acc, + data->vtxArray, data->vtxSize, data->faceArray, + data->faceSize, data->normalArray, data->DArray); + } else { + /////////////////////////////////// + // non-grav + Coords A={x, y, z}; + Coords B={x+vx, y+vy, z+vz}; + t_size=off_clip_3D_mod(intersect4, A, B, + data->vtxArray, data->vtxSize, data->faceArray, data->faceSize, data->normalArray ); + } + if(t_size>0){ + int i=0; + if (intersect4[0].time == -FLT_MAX) i=1; + data->numintersect=t_size; + if (t0) *t0 = intersect4[i].time; + if (n0) *n0 = intersect4[i].normal; + if (t3) *t3 = intersect4[i+1].time; + if (n3) *n3 = intersect4[i+1].normal; + + if (intersect4[1].time == FLT_MAX) + { + if (t3) *t3 = 0.0; + } + + /* should also return t[0].index and t[i].index as polygon ID */ + data->nextintersect=(int)intersect4[i].index; + return t_size; + } +#endif + return 0; +} /* off_intersect */ + +/******************************************************************************* +* int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + off_struct data ) +* ACTION: computes intersection of neutron trajectory with an object. +* INPUT: x,y,z and vx,vy,vz are the position and velocity of the neutron +* data points to the OFF data structure +* RETURN: the number of polyhedral which trajectory intersects +* t0 and t3 are the smallest incoming and outgoing intersection times +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_intersect(double* t0, double* t3, + Coords *n0, Coords *n3, + double x, double y, double z, + double vx, double vy, double vz, + double ax, double ay, double az, + off_struct data ) +{ + return off_intersect_all(t0, t3, n0, n3, x, y, z, vx, vy, vz, ax, ay, az, &data ); +} /* off_intersect */ + +/***************************************************************************** +* int off_x_intersect(double* l0, double* l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +* ACTION: computes intersection of an xray trajectory with an object. +* INPUT: x,y,z and kx,ky,kz, are spatial coordinates and wavevector of the x-ray +* respectively. data points to the OFF data structure. +* RETURN: the number of polyhedral the trajectory intersects +* l0 and l3 are the smallest incoming and outgoing intersection lengths +* n0 and n3 are the corresponding normal vectors to the surface +*******************************************************************************/ +int off_x_intersect(double *l0,double *l3, + Coords *n0, Coords *n3, + double x, double y, double z, + double kx, double ky, double kz, + off_struct data ) +{ + /*This function simply reformats and calls off_intersect (as for neutrons) + *by normalizing the wavevector - this will yield the intersection lengths + *in m*/ + double jx,jy,jz,invk; + int n; + invk=1/sqrt(scalar_prod(kx,ky,kz,kx,ky,kz)); + jx=kx*invk;jy=ky*invk;jz=kz*invk; + n=off_intersect(l0,l3,n0,n3,x,y,z,jx,jy,jz,0.0,0.0,0.0,data); + return n; +} + + +/******************************************************************************* +* void off_display(off_struct data) +* ACTION: display up to N_VERTEX_DISPLAYED polygons from the object +*******************************************************************************/ +void off_display(off_struct data) +{ + if(mcdotrace==2){ + // Estimate size of the JSON string + const int VERTEX_OVERHEAD = 30; + const int FACE_OVERHEAD_BASE = 20; + const int FACE_INDEX_OVERHEAD = 15; + int estimated_size = 256; // Base size + estimated_size += data.vtxSize * VERTEX_OVERHEAD; + + for (int i = 0; i < data.faceSize;) { + int num_indices = data.faceArray[i]; + estimated_size += FACE_OVERHEAD_BASE + num_indices * FACE_INDEX_OVERHEAD; + i += num_indices + 1; + } + + char *json_string = malloc(estimated_size); + if (json_string == NULL) { + fprintf(stderr, "Memory allocation failed.\n"); + return; + } + + char *ptr = json_string; + ptr += sprintf(ptr, "{ \"vertices\": ["); + + for (int i = 0; i < data.vtxSize; i++) { + ptr += sprintf(ptr, "[%g, %g, %g]", data.vtxArray[i].x, data.vtxArray[i].y, data.vtxArray[i].z); + if (i < data.vtxSize - 1) { + ptr += sprintf(ptr, ", "); + } + } + + ptr += sprintf(ptr, "], \"faces\": ["); + + for (int i = 0; i < data.faceSize;) { + int num = data.faceArray[i]; + ptr += sprintf(ptr, "{ \"face\": ["); + for (int j = 1; j <= num; j++) { + ptr += sprintf(ptr, "%lu", data.faceArray[i + j]); + if (j < num) { + ptr += sprintf(ptr, ", "); + } + } + ptr += sprintf(ptr, "]}"); + i += num + 1; + if(i 1 || drawthis) { + mcdis_line(x1,y1,z1,x2,y2,z2); + } + x1 = x2; y1 = y2; z1 = z2; + } + if (ratio > 1 || drawthis) { + mcdis_line(x1,y1,z1,x0,y0,z0); + } + if (data.mantidflag) { + printf("MANTID_PIXEL: %s\n", pixelinfo); + pixel++; + } + i += nbVertex; + } + } +} /* off_display */ + +/* end of interoff-lib.c */ +#endif // INTEROFF_LIB_C + + +/* Shared user declarations for all components types 'bi_spec_ellipse'. */ + + +/* Shared user declarations for all components types 'Guide_four_side'. */ + + + void + TEST_INPUT (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s should \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + fprintf (stderr, " (for negative values use the global guide position !) \n"); + exit (-1); + }; + + void + TEST_INPUT_1 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s must \n", compname, name); + fprintf (stderr, " be -1 (transperent) or \n"); + fprintf (stderr, " be 0 (absorbing) or \n"); + fprintf (stderr, " be > 0 (reflecting) \n"); + exit (-1); + }; + + void + TEST_INPUT_2 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %s can \n", compname, name); + fprintf (stderr, " NOT be negative \n"); + exit (-1); + }; + + void + TEST_INPUT_3 (char name[20], char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) %sr must \n", compname, name); + fprintf (stderr, " be positive\n"); + exit (-1); + }; + + void + TEST_INPUT_4 (char name[20], char name1[20], double inputname, double inputname1, char compname[256]) { + fprintf (stderr, "Component: %s (Guide_four_side) \n", compname); + fprintf (stderr, " %s have to be bigger or equal %s \n", name, name1); + printf (" %s = %f \n", name, inputname); + printf (" %s = %f \n", name1, inputname1); + fprintf (stderr, " check curve parameter and wallthicknesses! \n"); + exit (-1); + }; + + /* function to calculate the needed parameters for an elliptic wall*/ + + void + ELLIPSE (double w1, double length, double lin, double lout, double wallthick, double* a, double* b, double* a2, double* b2, double* z0, double* w2, double* awt, + double* a2wt, double* bwt, double* b2wt, double* w2wt, double* w1wt) { + double DIV1, lb, u1, u2, u1wt, u2wt, dx, dz; + lb = lin + length + lout; /* lenght between the two focal points of the wall */ + *z0 = (lin - length - lout) / 2.0; + u1 = sqrt ((lin * lin) + (w1 * w1)); /* length between entrance focal point and starting point of the wall (INNER side)*/ + u2 = sqrt ((w1 * w1) + ((length + lout) * (length + lout))); /* length between exit focal point and end point of the wall (INNER side) */ + *a = (u1 + u2) / 2.0; /* long half axis a of the ellipse (INNER side)*/ + *a2 = *a * (*a); /* square of the long axis a (INNER side)*/ + *b = sqrt (*a2 - (lb * (lb) / 4.0)); /* short half axis b of the ellipse (INNER side)*/ + *b2 = *b * (*b); /* square of short half axis b of the ellipse (INNER side)*/ + DIV1 = sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2))); /* help variable to calculated the exit width (INNER side)*/ + *w2 = *b * (DIV1); /* exit width (INNER side)*/ + if (length < (lb) / 2 - lout) { /* if the maximum opening of the guide is smaller than the small half axis b, the OUTER side is defined by: */ + dx = wallthick * sin (atan (*a2 * w1 / (*b2 * (*z0)))); + dz = wallthick * cos (atan (*a2 * w1 / (*b2 * (*z0)))); + u1wt = sqrt (((lin + dz) * (lin + dz)) + ((w1 + dx) * (w1 + dx))); /* length between entrance focal point and starting point of the wall (OUTER side)*/ + u2wt = sqrt (((w1 + dx) * (w1 + dx)) + + ((length + lout - dz) * (length + lout - dz))); /* length between exit focal point and end point of the wall (OUTER side) */ + *awt = (u1wt + u2wt) / 2.0; /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *awt * (*awt); /* square of the long axis a (OUTER side)*/ + *bwt = sqrt (*a2wt - (lb * lb / 4.0)); /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout - length) * (lb / 2.0 - lout - length) / (*a2wt))); /* entrance width for OUTER side */ + } else { /* if the maximum opening of the guide is the small half axis b the OUTER wall is defined by:*/ + *bwt = *b + wallthick; /* short half axis b of the ellipse (OUTER side)*/ + *b2wt = *bwt * (*bwt); /* square of the long axis a (OUTER side)*/ + *awt = sqrt (*b2wt + (lb * lb / 4.0)); /* long half axis a of the ellipse (OUTER side)*/ + *a2wt = *b2wt + (lb * lb / 4.0); /* square of short half axis b of the ellipse (OUTER side)*/ + *w2wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lout) * (lb / 2.0 - lout) / (*a2wt))); /* exit width for OUTER side */ + *w1wt = *bwt * sqrt (1.0 - ((lb / 2.0 - lin) * (lb / 2.0 - lin) / (*a2wt))); /* entrance width for OUTER side */ + } + } + + /* function to calculate the needed parameters for a parabolical focusing wall*/ + + void + PARABEL_FOCUS (double w1, double length, double lout, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = (length + lout) * (length + lout); /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (lout + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = length + lout + *p2para / 4.0; /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = 1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (w1 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (w1 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (length + lout - dz) * (length + lout - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((w1 + dx) * (w1 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *pbwt = length + lout + *p2parawt / 4.0; /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = 1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + *w2wt = sqrt (*p2parawt * (lout + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lout + length + *p2parawt / 4.0)); /* entrance width (OUTER side) */ + } + + /* function to calculate the needed parameters for a parabolical defocusing wall*/ + + void + PARABEL_DEFOCUS (double w1, double length, double lin, double wallthick, double* p2para, double* w2, double* pb, double* pa, double* p2parawt, double* pbwt, + double* pawt, double* w2wt, double* w1wt) { + double DIV1, DIV1wt, dx, dz; + DIV1 = lin * lin; /* help variable to calculate the curve parameters (INNER side) */ + *p2para = 2.0 * (sqrt (DIV1 + (w1 * w1)) - sqrt (DIV1)); /* help variable to calculate the curve parameters (INNER side) */ + *w2 = sqrt (*p2para * (length + lin + *p2para / 4.0)); /* exit width (INNER side) */ + *pb = -(lin + *p2para / 4.0); /* parameter b for parabolic equation to define the wall (INNER side)*/ + *pa = -1.0 / (*p2para); /* parameter a for parabolic equation to define the wall (INNER side)*/ + dx = wallthick + * sin ( + atan (-*w2 * 2 * (*pa))); /* help variable dx; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + dz = wallthick + * cos ( + atan (-*w2 * 2 * (*pa))); /* help variable dz; needed because the wall is not paralell to the z-axis or the wallthickness is not perpendicular to z*/ + DIV1wt = (lin + length - dz) * (lin + length - dz); /* help variable to calculate the curve parameters (OUTER side) */ + *p2parawt = 2.0 * (sqrt (DIV1wt + ((*w2 + dx) * (*w2 + dx))) - sqrt (DIV1wt)); /* help variable to calculate the curve parameters (OUTER side) */ + *w1wt = sqrt (*p2parawt * (lin + *p2parawt / 4.0)); /* entrance width for right focusing parabolic wall (OUTER side) */ + *w2wt = sqrt (*p2parawt * (lin + length + *p2parawt / 4.0)); /* exit width (OUTER side) */ + *pbwt = -(lin + *p2parawt / 4.0); /* parameter b for parabolic equation to define the wall (OUTER side)*/ + *pawt = -1.0 / (*p2parawt); /* parameter a for parabolic equation to define the wall (OUTER side)*/ + } + + /* function to calculate the needed parameters for a linear wall*/ + + void + LINEAR (double w1, double w2, double length, double wallthick, double* w1wt, double* w2wt) { + *w1wt = w1 + wallthick / (cos (atan ((w1 - w2) / length))); /* entrance width (OUTER side) */ + *w2wt = w2 + wallthick / (cos (atan ((w1 - w2) / length))); /* exit width (OUTER side) */ + } + + /* function to calculate the intersection time with a linear wall at an negative axis*/ + + void + TIME_LINEAR (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (-w2 + w1) / length; + *t2 = (anstieg * zin - w1 - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (INNER side)*/ + *t2wt = (anstieg * zin - w1wt - xin) / (vxin1 - anstieg * vzin1); /* time untill next interaction with this wall (OUTER side)*/ + if (*t2 < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (*t2wt < 1e-15) /* see comments above*/ + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with a linear wall at an positive axis*/ + + void + TIME_LINEAR_1 (double t1in, double w1, double w2, double length, double xin, double zin, double vxin1, double vzin1, double w1wt, double* t2, double* t2wt) { + double anstieg; + anstieg = (w2 - w1) / length; + *t2 = (anstieg * zin + w1 - xin) / (vxin1 - anstieg * vzin1); + *t2wt = (anstieg * zin + w1wt - xin) / (vxin1 - anstieg * vzin1); + if (*t2 < 1e-15) + *t2 = t1in + 2.0; + if (*t2wt < 1e-15) + *t2wt = t1in + 2.0; + } + + /* function to calculate the intersection time with an elliptical wall at a negative axis*/ + + void + TIME_ELLIPSE (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + /* solving the elliptic equation in respect to z and the straight neutron trajectoty, only two z values possible! */ + + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); /* p parameter of quadratic equation for calulation the z component of the intersection point with + respect to the neutron trajectory (INNER side)*/ + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); /* q parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (INNER side)*/ + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; /* if the neutron never touch the ellipse the time is set to be bigger than the time (t1) needed to pass the component */ + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); /* first solution for z (INNER side)*/ + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); /* second solution for z (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* interaction time for first z value (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* interactime time for second z value (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a wall + tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) /* for the right wall x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); /* p parameter of quadratic equation for calulation the z component of the intersection point + with respect to the neutron trajectory (OUTER side)*/ + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); /* q parameter of quadratic equation for calulation the z component of the + intersection point with respect to the neutron trajectory (OUTER side)*/ + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; /* if the neutron never touch the ellipse the time is set bigger than need to pass the component */ + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); /* first solution for z (OUTER side) */ + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); /* second solution for z (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* interaction time for first z value (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* interactime time for second z value (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER side)*/ + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with an elliptical wall at a positive axis*/ + + void + TIME_ELLIPSE_1 (double vxin, double vzin, double xin, double zin, double a2, double b2, double z0, double t1in, double a2wt, double b2wt, double* t2w1, + double* t2w1wt) { + double m, n, q, p, z1, z2, qwt, pwt, xintersec, z1wt, z2wt, xintersecwt, t2w2, t2w2wt; + + m = vxin / vzin; + n = -m * zin + xin; + p = 2.0 * (a2 * m * n + b2 * z0) / (a2 * m * m + b2); + q = (a2 * n * n + b2 * z0 * z0 - a2 * b2) / (a2 * m * m + b2); + if ((p * p / 4.0) - q < 0) { + *t2w1 = t1in + 2.0; + } else { + z1 = -p / 2.0 + sqrt (((p) * (p) / 4.0) - q); + z2 = -p / 2.0 - sqrt (((p) * (p) / 4.0) - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = 2.0 * (a2wt * m * n + b2wt * z0) / (a2wt * m * m + b2wt); + qwt = (a2wt * n * n + b2wt * z0 * z0 - a2wt * b2wt) / (a2wt * m * m + b2wt); + if ((pwt * pwt / 4.0) - qwt < 0) { + *t2w1wt = t1in + 2.0; + } else { + z1wt = -pwt / 2.0 + sqrt ((pwt * pwt / 4.0) - qwt); + z2wt = -pwt / 2.0 - sqrt ((pwt * pwt / 4.0) - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + } + + /* function to calculate the intersection time with a parabolical wall at an negative axis*/ + + void + TIME_PARABEL (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; /* m parameter of the neutron trajectory*/ + n = -m * zin + xin; /* n parameter of the neutron trajectory */ + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); /* p parameter of quadratic equation (INNER side) */ + q = n * n / (m * m) - pb / (pa * m * m); /* q parameter of quadratic equation (INNER side) */ + if (q > 0 + && q > (p * p + / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) the time is set to t1+2.0 */ + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { /* only neutron with a negativ x-component can hit the RIGHT wall (INNER side)*/ + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; /* the time solution for neutron with a positive x component is set to a time long behind the exit of the guide */ + /* (means will not scatter with the right wall)*/ + } + } else { /* if vx is not zero and x is a real variable*/ + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); /* first z-solution for intersection (INNER side)*/ + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); /* second z-solution for intersection (INNER side)*/ + *t2w1 = (z1 - zin) / vzin; /* first time solution (INNER side)*/ + t2w2 = (z2 - zin) / vzin; /* second time solution (INNER side)*/ + if (*t2w1 + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1 = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2 < 1e-15) /* see comments above*/ + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) /* choosing the smaller positive time solution (INNER side)*/ + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersec > 0) { /* the x-coordinate of the intersection point have to be negative */ + *t2w1 = t1in + 2.0; + } /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); /* p parameter of quadratic equation (OUTER side)*/ + qwt = n * n / (m * m) - pbwt / (pawt * m * m); /* q parameter of quadratic equation (OUTER side)*/ + if (qwt > 0 && qwt > (pwt * pwt / 4)) { /* in the very special case of no intersection the quadratic equation has no solution (negative square root) and the + time is set to t1+2.0 */ + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) /* in the special case of vx = 0 is x a constant */ + { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; /* only neutron with a negativ x-component can hit the RIGHT wall (OUTER wall)*/ + } else { + *t2w1wt = t1in + 2.0; + } + } else { /* if vx is not zero */ + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); /* first z-solution for intersection (OUTER side)*/ + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); /* second z-solution for intersection (OUTER side)*/ + *t2w1wt = (z1wt - zin) / vzin; /* first time solution (OUTER side)*/ + t2w2wt = (z2wt - zin) / vzin; /* second time solution (OUTER side)*/ + if (*t2w1wt + < 1e-15) /* solving the precision problem for the intersection times given by double variable type, to small times (<1e-15) gives scattering events */ + *t2w1wt = t1in + 2.0; /* at the same postion again (time is set to zero). this results in a sign change in the velocity components, which results in a + wall tunneling.*/ + if (t2w2wt < 1e-15) /* see comments above*/ + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) /* choosing the smaller positive time solution (OUTER wall)*/ + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; /* crosscheck of the x-coordinate of the intersection point */ + if (xintersecwt > 0) /* x-coordinate of the intersection point have to be negative */ + *t2w1wt = t1in + 2.0; /* if this is not the case the time is set to t1+2.0 (time point behind the component) */ + } + }; + + /* function to calculate the intersection time with a parabolical wall at an positive axis*/ + + void + TIME_PARABEL_1 (double vxin, double vzin, double xin, double zin, double pa, double pb, double t1in, double pawt, double pbwt, double* t2w1, double* t2w1wt) { + double m, n, p, q, z1, z2, t2w2, xintersec, pwt, qwt, t2w2wt, z1wt, z2wt, xintersecwt; + + m = vxin / vzin; + n = -m * zin + xin; + p = (2.0 * m * n * pa + 1.0) / (pa * m * m); + q = n * n / (m * m) - pb / (pa * m * m); + if (q > 0 && q > (p * p / 4)) { + *t2w1 = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1 = (pb - pa * xin * xin - zin) / vzin; + } else { + *t2w1 = t1in + 2.0; + } + } else { + z1 = -p / 2.0 + sqrt (p * p / 4.0 - q); + z2 = -p / 2.0 - sqrt (p * p / 4.0 - q); + *t2w1 = (z1 - zin) / vzin; + t2w2 = (z2 - zin) / vzin; + if (*t2w1 < 1e-15) + *t2w1 = t1in + 2.0; + if (t2w2 < 1e-15) + t2w2 = t1in + 2.0; + if (t2w2 < *t2w1) + *t2w1 = t2w2; + } + xintersec = m * (vzin * (*t2w1) + zin) + n; + if (xintersec < 0) { + *t2w1 = t1in + 2.0; + } + } + pwt = (2.0 * m * n * pawt + 1.0) / (pawt * m * m); + qwt = n * n / (m * m) - pbwt / (pawt * m * m); + if (qwt > 0 && qwt > (pwt * pwt / 4)) { + *t2w1wt = t1in + 2.0; + } else { + if (vxin == 0) { + if (xin < 0) { + *t2w1wt = (pbwt - pawt * xin * xin - zin) / vzin; + } else { + *t2w1wt = t1in + 2.0; + } + } else { + z1wt = -pwt / 2.0 + sqrt (pwt * pwt / 4.0 - qwt); + z2wt = -pwt / 2.0 - sqrt (pwt * pwt / 4.0 - qwt); + *t2w1wt = (z1wt - zin) / vzin; + t2w2wt = (z2wt - zin) / vzin; + if (*t2w1wt < 1e-15) + *t2w1wt = t1in + 2.0; + if (t2w2wt < 1e-15) + t2w2wt = t1in + 2.0; + if (t2w2wt < *t2w1wt) + *t2w1wt = t2w2wt; + } + xintersecwt = m * (vzin * (*t2w1wt) + zin) + n; + if (xintersecwt < 0) + *t2w1wt = t1in + 2.0; + } + }; + + /* test if the left or right scattered neutron in the upper and lower limits defined by TOP und BOTTOM walls */ + + void + TEST_UP_DOWN (double t, double vzin, double zin, double vyin, double yin, double length, double linhdin, double louthdin, double linhuin, double louthuin, + double h2din, double h1din, double h2uin, double h1uin, double bhdin, double z0hdin, double a2hdin, double bhuin, double z0huin, double a2huin, + double pbhdin, double pahdin, double pbhuin, double pahuin, double* ylimitd, double* ylimitu, double* ytest) { + if (linhdin == 0 && louthdin == 0) { + *ylimitd + = (-h2din + h1din) / length * (vzin * t + zin) - h1din; /* calculation of the lower y-limit given by a linear bottom wall and the interaction time*/ + } else { + if (linhdin != 0 && louthdin != 0) { + *ylimitd = -bhdin + * sqrt (1 + - ((z0hdin + (vzin * t + zin)) * (z0hdin + (vzin * t + zin))) + / a2hdin); /* calculation of the lower y-limit given by a elliptic bottom wall and the interaction time*/ + } else { + *ylimitd = -sqrt (((vzin * t + zin) - pbhdin) / -pahdin); /* calculation of the lower y-limit given by a parabolic bottom wall and the interaction time*/ + } + } + if (linhuin == 0 && louthuin == 0) { + *ylimitu = (h2uin - h1uin) / length * (vzin * t + zin) + h1uin; /* calculation of the upper y-limit given by a linear top wall and the interaction time*/ + } else { + if (linhuin != 0 && louthuin != 0) { + *ylimitu = bhuin + * sqrt (1 + - ((z0huin + (vzin * t + zin)) * (z0huin + (vzin * t + zin))) + / a2huin); /* calculation of the upper y-limit given by a elliptic top wall and the interaction time*/ + } else { + *ylimitu = sqrt (((vzin * t + zin) - pbhuin) / -pahuin); /* calculation of the upper y-limit given by a parabolic top wall and the interaction time*/ + } + } + *ytest = vyin * t + yin; /* calculation of the y coordinate of the neutron at the interaction time */ + }; + + /* test if the up or down scattered neutron in the right and left limits defined by RIGHT und LEFT walls */ + + void + TEST_LEFT_RIGHT (double t, double vzin, double zin, double vxin, double xin, double length, double linwrin, double loutwrin, double linwlin, double loutwlin, + double w2rin, double w1rin, double w2lin, double w1lin, double bwrin, double z0wrin, double a2wrin, double bwlin, double z0wlin, double a2wlin, + double pbwrin, double pawrin, double pbwlin, double pawlin, double* xlimitr, double* xlimitl, double* xtest) { + if (linwrin == 0 && loutwrin == 0) { + *xlimitr = (-w2rin + w1rin) / length * (vzin * t + zin) - w1rin; + } else { + if (linwrin != 0 && loutwrin != 0) { + *xlimitr = -bwrin * sqrt (1 - ((z0wrin + (vzin * t + zin)) * (z0wrin + (vzin * t + zin))) / a2wrin); + } else { + *xlimitr = -sqrt (((vzin * t + zin) - pbwrin) / -pawrin); + } + } + if (linwlin == 0 && loutwlin == 0) { + *xlimitl = (w2lin - w1lin) / length * (vzin * t + zin) + w1lin; + } else { + if (linwlin != 0 && loutwlin != 0) { + *xlimitl = bwlin * sqrt (1 - ((z0wlin + (vzin * t + zin)) * (z0wlin + (vzin * t + zin))) / a2wlin); + } else { + *xlimitl = sqrt (((vzin * t + zin) - pbwlin) / -pawlin); + } + } + *xtest = vxin * t + xin; + }; + +/* Shared user declarations for all components types 'Slit'. */ + void + slit_print_if (int condition, char* level, char* message, char* component) { + if (condition) + fprintf (stderr, "Slit: %s: %s: %s\n", component, level, message); + } + void + slit_error_if (int condition, char* message, char* component) { + slit_print_if (condition, "Error", message, component); + if (condition) + exit (-1); + } + void + slit_warning_if (int condition, char* message, char* component) { + slit_print_if (condition, "Warning", message, component); + } + +/* Shared user declarations for all components types 'Graphite_Diffuser'. */ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} + +/* Shared user declarations for all components types 'Monitor_nD'. */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.h +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H + +#define MONITOR_ND_LIB_H "$Revision$" +#define MONnD_COORD_NMAX 30 /* max number of variables to record */ + + typedef struct MonitornD_Defines + { + int COORD_NONE ; + int COORD_X ; + int COORD_Y ; + int COORD_Z ; + int COORD_RADIUS; + int COORD_VX ; + int COORD_VY ; + int COORD_VZ ; + int COORD_V ; + int COORD_T ; + int COORD_P ; + int COORD_SX ; + int COORD_SY ; + int COORD_SZ ; + int COORD_KX ; + int COORD_KY ; + int COORD_KZ ; + int COORD_K ; + int COORD_ENERGY; + int COORD_LAMBDA; + int COORD_KXY ; + int COORD_KYZ ; + int COORD_KXZ ; + int COORD_VXY ; + int COORD_VYZ ; + int COORD_VXZ ; + int COORD_HDIV ; + int COORD_VDIV ; + int COORD_ANGLE ; + int COORD_NCOUNT; + int COORD_THETA ; + int COORD_PHI ; + int COORD_USER1 ; + int COORD_USER2 ; + int COORD_USER3 ; + int COORD_USERDOUBLE0 ; + int COORD_USERDOUBLE1 ; + int COORD_USERDOUBLE2 ; + int COORD_USERDOUBLE3 ; + int COORD_USERDOUBLE4 ; + int COORD_USERDOUBLE5 ; + int COORD_USERDOUBLE6 ; + int COORD_USERDOUBLE7 ; + int COORD_USERDOUBLE8 ; + int COORD_USERDOUBLE9 ; + int COORD_USERDOUBLE10 ; + int COORD_USERDOUBLE11 ; + int COORD_USERDOUBLE12 ; + int COORD_USERDOUBLE13 ; + int COORD_USERDOUBLE14 ; + int COORD_USERDOUBLE15 ; + int COORD_XY ; + int COORD_XZ ; + int COORD_YZ ; + int COORD_PIXELID; + + /* token modifiers */ + int COORD_VAR ; /* next token should be a variable or normal option */ + int COORD_MIN ; /* next token is a min value */ + int COORD_MAX ; /* next token is a max value */ + int COORD_DIM ; /* next token is a bin value */ + int COORD_FIL ; /* next token is a filename */ + int COORD_EVNT ; /* next token is a buffer size value */ + int COORD_3HE ; /* next token is a 3He pressure value */ + int COORD_LOG ; /* next variable will be in log scale */ + int COORD_ABS ; /* next variable will be in abs scale */ + int COORD_SIGNAL; /* next variable will be the signal var */ + int COORD_AUTO ; /* set auto limits */ + + char TOKEN_DEL[32]; /* token separators */ + + char SHAPE_SQUARE; /* shape of the monitor */ + char SHAPE_DISK ; + char SHAPE_SPHERE; + char SHAPE_CYLIND; + char SHAPE_BANANA; /* cylinder without top/bottom, on restricted angular area */ + char SHAPE_BOX ; + char SHAPE_PREVIOUS; + char SHAPE_OFF; + + } MonitornD_Defines_type; + + typedef struct MonitornD_Variables + { + double area; + double Sphere_Radius ; + double Cylinder_Height ; + char Flag_With_Borders ; /* 2 means xy borders too */ + char Flag_List ; /* 1 store 1 buffer, 2 is list all, 3 list all+append */ + char Flag_Multiple ; /* 1 when n1D, 0 for 2D */ + char Flag_Verbose ; + int Flag_Shape ; + char Flag_Auto_Limits ; /* get limits from first Buffer */ + char Flag_Absorb ; /* monitor is also a slit */ + char Flag_per_cm2 ; /* flux is per cm2 */ + char Flag_log ; /* log10 of the flux */ + char Flag_parallel ; /* set neutron state back after detection (parallel components) */ + char Flag_Binary_List ; + char Flag_capture ; /* lambda monitor with lambda/lambda(2200m/s = 1.7985 Angs) weightening */ + int Flag_signal ; /* 0:monitor p, else monitor a mean value */ + int Flag_mantid ; /* 0:normal monitor, else do mantid-event specifics */ + int Flag_OFF ; /* Flag to indicate external geometry from OFF file */ + long long OFF_polyidx; /* When intersection is done externally by off_intersect, this gives the + polygon number, i.e. pixel index */ + unsigned long Coord_Number ; /* total number of variables to monitor, plus intensity (0) */ + unsigned long Coord_NumberNoPixel; /* same but without counting PixelID */ + unsigned long Buffer_Block ; /* Buffer size for list or auto limits */ + long long Neutron_Counter ; /* event counter, simulation total counts is mcget_ncount() */ + unsigned long Buffer_Counter ; /* index in Buffer size (for realloc) */ + unsigned long Buffer_Size ; + int Coord_Type[MONnD_COORD_NMAX]; /* type of variable */ + char Coord_Label[MONnD_COORD_NMAX][30]; /* label of variable */ + char Coord_Var[MONnD_COORD_NMAX][30]; /* short id of variable */ + long Coord_Bin[MONnD_COORD_NMAX]; /* bins of variable array */ + long Coord_BinProd[MONnD_COORD_NMAX]; /* product of bins of variable array */ + double Coord_Min[MONnD_COORD_NMAX]; + double Coord_Max[MONnD_COORD_NMAX]; + char Monitor_Label[MONnD_COORD_NMAX*30];/* Label for monitor */ + char Mon_File[128]; /* output file name */ + + /* these don't seem to be used anymore as they are superseded by _particle + double cx, cy, cz; + double cvx, cvy, cvz; + double ckx, cky, ckz; + double csx, csy, csz; + double cEx, cEy, cEz; + double cs1, cs2, ct, cphi, cp; */ + + double He3_pressure; + char Flag_UsePreMonitor ; /* use a previously stored neutron parameter set */ + char UserName1[128]; + char UserName2[128]; + char UserName3[128]; + char UserVariable1[128]; + char UserVariable2[128]; + char UserVariable3[128]; + double UserDoubles[16]; + char option[CHAR_BUF_LENGTH]; + + long long int Nsum; + double psum, p2sum; + double **Mon2D_N; + double **Mon2D_p; + double **Mon2D_p2; + double *Mon2D_Buffer; + unsigned long PixelID; + + double mxmin,mxmax,mymin,mymax,mzmin,mzmax; + double mean_dx, mean_dy, min_x, min_y, max_x, max_y, mean_p; + + char compcurname[128]; + Coords compcurpos; + Rotation compcurrot; + int compcurindex; + } MonitornD_Variables_type; + +/* monitor_nd-lib function prototypes */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *, MonitornD_Variables_type *, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, MCNUM, int); +#pragma acc routine +int Monitor_nD_Trace(MonitornD_Defines_type *, MonitornD_Variables_type *, _class_particle* _particle); +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_Finally(MonitornD_Defines_type *, MonitornD_Variables_type *); +void Monitor_nD_McDisplay(MonitornD_Defines_type *, MonitornD_Variables_type *); + +#endif + +/* end of monitor_nd-lib.h */ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/monitor_nd-lib.c +* +* %Identification +* Written by: EF +* Date: Aug 28, 2002 +* Origin: ILL +* Modified by: TW, Nov 2020: introduced user doubles +* Release: McStas 1.6 +* Version: $Revision$ +* +* This file is to be imported by the monitor_nd related components +* It handles some shared functions. Embedded within instrument in runtime mode. +* +* Usage: within SHARE +* %include "monitor_nd-lib" +* +*******************************************************************************/ + +#ifndef MONITOR_ND_LIB_H +#error McStas : please import this library with %include "monitor_nd-lib" +#endif + +/* ========================================================================= */ +/* Monitor_nD_Init: this routine is used to parse options */ +/* ========================================================================= */ + +void Monitor_nD_Init(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars, + MCNUM xwidth, + MCNUM yheight, + MCNUM zdepth, + MCNUM xmin, + MCNUM xmax, + MCNUM ymin, + MCNUM ymax, + MCNUM zmin, + MCNUM zmax, + int offflag) + { + long carg = 1; + char *option_copy, *token; + char Flag_New_token = 1; + char Flag_End = 1; + char Flag_All = 0; + char Flag_No = 0; + char Flag_abs = 0; + int Flag_auto = 0; /* -1: all, 1: the current variable */ + int Set_Vars_Coord_Type; + char Set_Vars_Coord_Label[64]; + char Set_Vars_Coord_Var[64]; + char Short_Label[MONnD_COORD_NMAX][64]; + int Set_Coord_Mode; + long i=0, j=0; + double lmin, lmax, XY=0; + long t; + int N_spatial_dims=0; + + t = (long)time(NULL); + +/* initialize DEFS */ +/* Variables to monitor */ + DEFS->COORD_NONE =0; + DEFS->COORD_X =1; + DEFS->COORD_Y =2; + DEFS->COORD_Z =3; + DEFS->COORD_RADIUS =19; + DEFS->COORD_VX =4; + DEFS->COORD_VY =5; + DEFS->COORD_VZ =6; + DEFS->COORD_V =16; + DEFS->COORD_T =7; + DEFS->COORD_P =8; + DEFS->COORD_SX =9; + DEFS->COORD_SY =10; + DEFS->COORD_SZ =11; + DEFS->COORD_KX =12; + DEFS->COORD_KY =13; + DEFS->COORD_KZ =14; + DEFS->COORD_K =15; + DEFS->COORD_ENERGY =17; + DEFS->COORD_LAMBDA =18; + DEFS->COORD_HDIV =20; + DEFS->COORD_VDIV =21; + DEFS->COORD_ANGLE =22; + DEFS->COORD_NCOUNT =23; + DEFS->COORD_THETA =24; + DEFS->COORD_PHI =25; + DEFS->COORD_USER1 =26; + DEFS->COORD_USER2 =27; + DEFS->COORD_USER3 =28; + DEFS->COORD_USERDOUBLE0=39; + DEFS->COORD_USERDOUBLE1=40; + DEFS->COORD_USERDOUBLE2=41; + DEFS->COORD_USERDOUBLE3=42; + DEFS->COORD_USERDOUBLE4=43; + DEFS->COORD_USERDOUBLE5=44; + DEFS->COORD_USERDOUBLE6=45; + DEFS->COORD_USERDOUBLE7=46; + DEFS->COORD_USERDOUBLE8=47; + DEFS->COORD_USERDOUBLE9=48; + DEFS->COORD_USERDOUBLE10=49; + DEFS->COORD_USERDOUBLE11=50; + DEFS->COORD_USERDOUBLE12=51; + DEFS->COORD_USERDOUBLE13=52; + DEFS->COORD_USERDOUBLE14=53; + DEFS->COORD_USERDOUBLE15=54; + DEFS->COORD_XY =37; + DEFS->COORD_YZ =31; + DEFS->COORD_XZ =32; + DEFS->COORD_VXY =30; + DEFS->COORD_VYZ =34; + DEFS->COORD_VXZ =36; + DEFS->COORD_KXY =29; + DEFS->COORD_KYZ =33; + DEFS->COORD_KXZ =35; + DEFS->COORD_PIXELID=38; + +/* token modifiers */ + DEFS->COORD_VAR =0; /* next token should be a variable or normal option */ + DEFS->COORD_MIN =1; /* next token is a min value */ + DEFS->COORD_MAX =2; /* next token is a max value */ + DEFS->COORD_DIM =3; /* next token is a bin value */ + DEFS->COORD_FIL =4; /* next token is a filename */ + DEFS->COORD_EVNT =5; /* next token is a buffer size value */ + DEFS->COORD_3HE =6; /* next token is a 3He pressure value */ + DEFS->COORD_LOG =64; /* next variable will be in log scale */ + DEFS->COORD_ABS =128; /* next variable will be in abs scale */ + DEFS->COORD_SIGNAL =256; /* next variable will be the signal var */ + DEFS->COORD_AUTO =512; /* set auto limits */ + + strcpy(DEFS->TOKEN_DEL, " =,;[](){}:"); /* token separators */ + + DEFS->SHAPE_SQUARE =0; /* shape of the monitor */ + DEFS->SHAPE_DISK =1; + DEFS->SHAPE_SPHERE =2; + DEFS->SHAPE_CYLIND =3; + DEFS->SHAPE_BANANA =4; + DEFS->SHAPE_BOX =5; + DEFS->SHAPE_PREVIOUS=6; + DEFS->SHAPE_OFF=7; + + Vars->Sphere_Radius = 0; + Vars->Cylinder_Height = 0; + Vars->Flag_With_Borders = 0; /* 2 means xy borders too */ + Vars->Flag_List = 0; /* 1=store 1 buffer, 2=list all, 3=re-use buffer */ + Vars->Flag_Multiple = 0; /* 1 when n1D, 0 for 2D */ + Vars->Flag_Verbose = 0; + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + Vars->Flag_Auto_Limits = 0; /* get limits from first Buffer */ + Vars->Flag_Absorb = 0; /* monitor is also a slit */ + Vars->Flag_per_cm2 = 0; /* flux is per cm2 */ + Vars->Flag_log = 0; /* log10 of the flux */ + Vars->Flag_parallel = 0; /* set neutron state back after detection (parallel components) */ + Vars->Flag_Binary_List = 0; /* save list as a binary file (smaller) */ + Vars->Coord_Number = 0; /* total number of variables to monitor, plus intensity (0) */ + Vars->Coord_NumberNoPixel=0; /* same but without counting PixelID */ + + Vars->Buffer_Block = MONND_BUFSIZ; /* Buffer size for list or auto limits */ + Vars->Neutron_Counter = 0; /* event counter, simulation total counts is mcget_ncount() */ + Vars->Buffer_Counter = 0; /* index in Buffer size (for realloc) */ + Vars->Buffer_Size = 0; + Vars->He3_pressure = 0; + Vars->Flag_capture = 0; + Vars->Flag_signal = DEFS->COORD_P; + Vars->Flag_mantid = 0; + Vars->Flag_OFF = offflag; + Vars->OFF_polyidx = -1; + Vars->mean_dx=Vars->mean_dy=0; + Vars->min_x = Vars->max_x =0; + Vars->min_y = Vars->max_y =0; + + Set_Vars_Coord_Type = DEFS->COORD_NONE; + Set_Coord_Mode = DEFS->COORD_VAR; + + /* handle size parameters */ + /* normal use is with xwidth, yheight, zdepth */ + /* if xmin,xmax,ymin,ymax,zmin,zmax are non 0, use them */ + if (fabs(xmin-xmax) == 0) + { Vars->mxmin = -fabs(xwidth)/2; Vars->mxmax = fabs(xwidth)/2; } + else + { if (xmin < xmax) {Vars->mxmin = xmin; Vars->mxmax = xmax;} + else {Vars->mxmin = xmax; Vars->mxmax = xmin;} + } + if (fabs(ymin-ymax) == 0) + { Vars->mymin = -fabs(yheight)/2; Vars->mymax = fabs(yheight)/2; } + else + { if (ymin < ymax) {Vars->mymin = ymin; Vars->mymax = ymax;} + else {Vars->mymin = ymax; Vars->mymax = ymin;} + } + if (fabs(zmin-zmax) == 0) + { Vars->mzmin = -fabs(zdepth)/2; Vars->mzmax = fabs(zdepth)/2; } + else + { if (zmin < zmax) {Vars->mzmin = zmin; Vars->mzmax = zmax; } + else {Vars->mzmin = zmax; Vars->mzmax = zmin; } + } + + if (fabs(Vars->mzmax-Vars->mzmin) == 0) + Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + else + Vars->Flag_Shape = DEFS->SHAPE_BOX; + + if (Vars->Flag_OFF) { + N_spatial_dims++; + Vars->Flag_Shape = DEFS->SHAPE_OFF; + } + + /* parse option string */ + + option_copy = (char*)malloc(strlen(Vars->option)+1); + if (option_copy == NULL) + { + fprintf(stderr,"Monitor_nD: %s cannot allocate 'options' copy (%li). Fatal.\n", Vars->compcurname, (long)strlen(Vars->option)); + exit(-1); + } + + if (strlen(Vars->option)) + { + Flag_End = 0; + strcpy(option_copy, Vars->option); + } + + if (strstr(Vars->option, "cm2") || strstr(Vars->option, "cm^2")) Vars->Flag_per_cm2 = 1; + + if (strstr(Vars->option, "binary") || strstr(Vars->option, "float")) + Vars->Flag_Binary_List = 1; + if (strstr(Vars->option, "double")) + Vars->Flag_Binary_List = 2; + + strcpy(Vars->Coord_Label[0],"Intensity"); + strncpy(Vars->Coord_Var[0],"p",30); + Vars->Coord_Type[0] = DEFS->COORD_P; + Vars->Coord_Bin[0] = 1; + Vars->Coord_Min[0] = 0; + Vars->Coord_Max[0] = FLT_MAX; + + /* default file name is comp_name+dateID */ + sprintf(Vars->Mon_File, "%s_%li", Vars->compcurname, t); + + carg = 1; + while((Flag_End == 0) && (carg < 128)) + { + if (Flag_New_token) /* retain previous token or get a new one */ + { + if (carg == 1) token=(char *)strtok(option_copy,DEFS->TOKEN_DEL); + else token=(char *)strtok(NULL,DEFS->TOKEN_DEL); + if (token == NULL) Flag_End=1; + } + Flag_New_token = 1; + if ((token != NULL) && (strlen(token) != 0)) + { + char iskeyword=0; /* left at 0 when variables are processed, 1 for modifiers */ + int old_Mode; + /* change token to lower case */ + for (i=0; iCOORD_MAX) /* max=%i */ + { + if (!Flag_All) + Vars->Coord_Max[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Max[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_MIN) /* min=%i */ + { + if (!Flag_All) + Vars->Coord_Min[Vars->Coord_Number] = atof(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Min[i++] = atof(token)); + Set_Coord_Mode = DEFS->COORD_MAX; + } + if (Set_Coord_Mode == DEFS->COORD_DIM) /* bins=%i */ + { + if (!Flag_All) + Vars->Coord_Bin[Vars->Coord_Number] = atoi(token); + else + for (i = 0; i <= Vars->Coord_Number; Vars->Coord_Bin[i++] = atoi(token)); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_FIL) /* file=%s */ + { + if (!Flag_No) strncpy(Vars->Mon_File,token,128); + else { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1;} + Set_Coord_Mode = DEFS->COORD_VAR; + } + if (Set_Coord_Mode == DEFS->COORD_EVNT) /* list=%i */ + { + if (!strcmp(token, "all") || Flag_All) Vars->Flag_List = 2; + else { i = (long)ceil(atof(token)); if (i) Vars->Buffer_Block = i; + Vars->Flag_List = 1; } + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + if (Set_Coord_Mode == DEFS->COORD_3HE) /* pressure=%g */ + { + Vars->He3_pressure = atof(token); + Set_Coord_Mode = DEFS->COORD_VAR; Flag_All = 0; + } + + /* now look for general option keywords */ + if (!strcmp(token, "borders")) {Vars->Flag_With_Borders = 1; iskeyword=1; } + if (!strcmp(token, "verbose")) {Vars->Flag_Verbose = 1; iskeyword=1; } + if (!strcmp(token, "log")) {Vars->Flag_log = 1; iskeyword=1; } + if (!strcmp(token, "abs")) {Flag_abs = 1; iskeyword=1; } + if (!strcmp(token, "multiple")) {Vars->Flag_Multiple = 1; iskeyword=1; } + if (!strcmp(token, "list") || !strcmp(token, "events")) { + Vars->Flag_List = 1; Set_Coord_Mode = DEFS->COORD_EVNT; } + if (!strcmp(token, "limits") || !strcmp(token, "min")) + Set_Coord_Mode = DEFS->COORD_MIN; + if (!strcmp(token, "slit") || !strcmp(token, "absorb")) { + Vars->Flag_Absorb = 1; iskeyword=1; } + if (!strcmp(token, "max")) Set_Coord_Mode = DEFS->COORD_MAX; + if (!strcmp(token, "bins") || !strcmp(token, "dim")) Set_Coord_Mode = DEFS->COORD_DIM; + if (!strcmp(token, "file") || !strcmp(token, "filename")) { + Set_Coord_Mode = DEFS->COORD_FIL; + if (Flag_No) { strcpy(Vars->Mon_File,""); Vars->Coord_Number = 0; Flag_End = 1; } + } + if (!strcmp(token, "inactivate")) { + Flag_End = 1; Vars->Coord_Number = 0; iskeyword=1; } + if (!strcmp(token, "all")) { Flag_All = 1; iskeyword=1; } + if (!strcmp(token, "sphere")) { Vars->Flag_Shape = DEFS->SHAPE_SPHERE; iskeyword=1; } + if (!strcmp(token, "cylinder")) { Vars->Flag_Shape = DEFS->SHAPE_CYLIND; iskeyword=1; } + if (!strcmp(token, "banana")) { Vars->Flag_Shape = DEFS->SHAPE_BANANA; iskeyword=1; } + if (!strcmp(token, "square")) { Vars->Flag_Shape = DEFS->SHAPE_SQUARE; iskeyword=1; } + if (!strcmp(token, "disk")) { Vars->Flag_Shape = DEFS->SHAPE_DISK; iskeyword=1; } + if (!strcmp(token, "box")) { Vars->Flag_Shape = DEFS->SHAPE_BOX; iskeyword=1; } + if (!strcmp(token, "previous")) { Vars->Flag_Shape = DEFS->SHAPE_PREVIOUS; iskeyword=1; } + if (!strcmp(token, "parallel")){ Vars->Flag_parallel = 1; iskeyword=1; } + if (!strcmp(token, "capture")) { Vars->Flag_capture = 1; iskeyword=1; } + if (!strcmp(token, "auto")) { + #ifndef OPENACC + if (Flag_auto != -1) { + Vars->Flag_Auto_Limits = 1; + if (Flag_All) Flag_auto = -1; + else Flag_auto = 1; + iskeyword=1; Flag_All=0; + } + #endif + } + if (!strcmp(token, "premonitor")) { + Vars->Flag_UsePreMonitor = 1; iskeyword=1; } + if (!strcmp(token, "3He_pressure") || !strcmp(token, "pressure")) { + Vars->He3_pressure = 3; iskeyword=1; } + if (!strcmp(token, "no") || !strcmp(token, "not")) { Flag_No = 1; iskeyword=1; } + if (!strcmp(token, "signal")) Set_Coord_Mode = DEFS->COORD_SIGNAL; + if (!strcmp(token, "mantid")) { Vars->Flag_mantid = 1; iskeyword=1; } + + /* Mode has changed: this was a keyword or value ? */ + if (Set_Coord_Mode != old_Mode) iskeyword=1; + + /* now look for variable names to monitor */ + Set_Vars_Coord_Type = DEFS->COORD_NONE; lmin = 0; lmax = 0; + + if (!strcmp(token, "x")) + { Set_Vars_Coord_Type = DEFS->COORD_X; strcpy(Set_Vars_Coord_Label,"x [m]"); strcpy(Set_Vars_Coord_Var,"x"); + lmin = Vars->mxmin; lmax = Vars->mxmax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mxmin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mxmax; + N_spatial_dims++;} + if (!strcmp(token, "y")) + { Set_Vars_Coord_Type = DEFS->COORD_Y; strcpy(Set_Vars_Coord_Label,"y [m]"); strcpy(Set_Vars_Coord_Var,"y"); + lmin = Vars->mymin; lmax = Vars->mymax; + Vars->Coord_Min[Vars->Coord_Number+1] = Vars->mymin; + Vars->Coord_Max[Vars->Coord_Number+1] = Vars->mymax; + N_spatial_dims++;} + if (!strcmp(token, "z")) + { Set_Vars_Coord_Type = DEFS->COORD_Z; strcpy(Set_Vars_Coord_Label,"z [m]"); strcpy(Set_Vars_Coord_Var,"z"); lmin = Vars->mzmin; lmax = Vars->mzmax; + N_spatial_dims++;} + if (!strcmp(token, "k") || !strcmp(token, "wavevector")) + { Set_Vars_Coord_Type = DEFS->COORD_K; strcpy(Set_Vars_Coord_Label,"|k| [Angs-1]"); strcpy(Set_Vars_Coord_Var,"k"); lmin = 0; lmax = 10; } + if (!strcmp(token, "v")) + { Set_Vars_Coord_Type = DEFS->COORD_V; strcpy(Set_Vars_Coord_Label,"Velocity [m/s]"); strcpy(Set_Vars_Coord_Var,"v"); lmin = 0; lmax = 10000; } + if (!strcmp(token, "t") || !strcmp(token, "time") || !strcmp(token, "tof")) + { Set_Vars_Coord_Type = DEFS->COORD_T; strcpy(Set_Vars_Coord_Label,"TOF [s]"); strcpy(Set_Vars_Coord_Var,"t"); lmin = 0; lmax = 1.0; } + if ((!strcmp(token, "p") || !strcmp(token, "i") || !strcmp(token, "intensity") || !strcmp(token, "flux"))) + { Set_Vars_Coord_Type = DEFS->COORD_P; + strcpy(Set_Vars_Coord_Label,"Intensity"); + strncat(Set_Vars_Coord_Label, " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Set_Vars_Coord_Label, "/cm2", 30); + if (XY > 1 && Vars->Coord_Number) + strncat(Set_Vars_Coord_Label, "/bin", 30); + strncat(Set_Vars_Coord_Label, "]", 30); + strcpy(Set_Vars_Coord_Var,"I"); + lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + } + + if (!strcmp(token, "vx")) + { Set_Vars_Coord_Type = DEFS->COORD_VX; strcpy(Set_Vars_Coord_Label,"vx [m/s]"); strcpy(Set_Vars_Coord_Var,"vx"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vy")) + { Set_Vars_Coord_Type = DEFS->COORD_VY; strcpy(Set_Vars_Coord_Label,"vy [m/s]"); strcpy(Set_Vars_Coord_Var,"vy"); lmin = -1000; lmax = 1000; } + if (!strcmp(token, "vz")) + { Set_Vars_Coord_Type = DEFS->COORD_VZ; strcpy(Set_Vars_Coord_Label,"vz [m/s]"); strcpy(Set_Vars_Coord_Var,"vz"); lmin = -10000; lmax = 10000; } + if (!strcmp(token, "kx")) + { Set_Vars_Coord_Type = DEFS->COORD_KX; strcpy(Set_Vars_Coord_Label,"kx [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "ky")) + { Set_Vars_Coord_Type = DEFS->COORD_KY; strcpy(Set_Vars_Coord_Label,"ky [Angs-1]"); strcpy(Set_Vars_Coord_Var,"ky"); lmin = -1; lmax = 1; } + if (!strcmp(token, "kz")) + { Set_Vars_Coord_Type = DEFS->COORD_KZ; strcpy(Set_Vars_Coord_Label,"kz [Angs-1]"); strcpy(Set_Vars_Coord_Var,"kz"); lmin = -10; lmax = 10; } + if (!strcmp(token, "sx")) + { Set_Vars_Coord_Type = DEFS->COORD_SX; strcpy(Set_Vars_Coord_Label,"sx [1]"); strcpy(Set_Vars_Coord_Var,"sx"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sy")) + { Set_Vars_Coord_Type = DEFS->COORD_SY; strcpy(Set_Vars_Coord_Label,"sy [1]"); strcpy(Set_Vars_Coord_Var,"sy"); lmin = -1; lmax = 1; } + if (!strcmp(token, "sz")) + { Set_Vars_Coord_Type = DEFS->COORD_SZ; strcpy(Set_Vars_Coord_Label,"sz [1]"); strcpy(Set_Vars_Coord_Var,"sz"); lmin = -1; lmax = 1; } + + if (!strcmp(token, "energy") || !strcmp(token, "omega") || !strcmp(token, "e")) + { Set_Vars_Coord_Type = DEFS->COORD_ENERGY; strcpy(Set_Vars_Coord_Label,"Energy [meV]"); strcpy(Set_Vars_Coord_Var,"E"); lmin = 0; lmax = 100; } + if (!strcmp(token, "lambda") || !strcmp(token, "wavelength") || !strcmp(token, "l")) + { Set_Vars_Coord_Type = DEFS->COORD_LAMBDA; strcpy(Set_Vars_Coord_Label,"Wavelength [Angs]"); strcpy(Set_Vars_Coord_Var,"L"); lmin = 0; lmax = 100; } + if (!strcmp(token, "radius") || !strcmp(token, "r")) + { Set_Vars_Coord_Type = DEFS->COORD_RADIUS; strcpy(Set_Vars_Coord_Label,"Radius [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; } + if (!strcmp(token, "xy")) + { Set_Vars_Coord_Type = DEFS->COORD_XY; strcpy(Set_Vars_Coord_Label,"Radius (xy) [m]"); strcpy(Set_Vars_Coord_Var,"xy"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "yz")) + { Set_Vars_Coord_Type = DEFS->COORD_YZ; strcpy(Set_Vars_Coord_Label,"Radius (yz) [m]"); strcpy(Set_Vars_Coord_Var,"yz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "xz")) + { Set_Vars_Coord_Type = DEFS->COORD_XZ; strcpy(Set_Vars_Coord_Label,"Radius (xz) [m]"); strcpy(Set_Vars_Coord_Var,"xz"); lmin = 0; lmax = xmax; N_spatial_dims+=1;} + if (!strcmp(token, "vxy")) + { Set_Vars_Coord_Type = DEFS->COORD_VXY; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xy) [m]"); strcpy(Set_Vars_Coord_Var,"Vxy"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxy")) + { Set_Vars_Coord_Type = DEFS->COORD_KXY; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xy) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxy"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vyz")) + { Set_Vars_Coord_Type = DEFS->COORD_VYZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (yz) [m]"); strcpy(Set_Vars_Coord_Var,"Vyz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kyz")) + { Set_Vars_Coord_Type = DEFS->COORD_KYZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (yz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kyz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "vxz")) + { Set_Vars_Coord_Type = DEFS->COORD_VXZ; strcpy(Set_Vars_Coord_Label,"Radial Velocity (xz) [m]"); strcpy(Set_Vars_Coord_Var,"Vxz"); lmin = 0; lmax = 2000; } + if (!strcmp(token, "kxz")) + { Set_Vars_Coord_Type = DEFS->COORD_KXZ; strcpy(Set_Vars_Coord_Label,"Radial Wavevector (xz) [Angs-1]"); strcpy(Set_Vars_Coord_Var,"Kxz"); lmin = 0; lmax = 2; } + if (!strcmp(token, "angle") || !strcmp(token, "a")) + { Set_Vars_Coord_Type = DEFS->COORD_ANGLE; strcpy(Set_Vars_Coord_Label,"Angle [deg]"); strcpy(Set_Vars_Coord_Var,"A"); lmin = -50; lmax = 50; N_spatial_dims++;} + if (!strcmp(token, "hdiv")|| !strcmp(token, "divergence") || !strcmp(token, "xdiv") || !strcmp(token, "hd") || !strcmp(token, "dx")) + { Set_Vars_Coord_Type = DEFS->COORD_HDIV; strcpy(Set_Vars_Coord_Label,"Hor. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"hd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "vdiv") || !strcmp(token, "ydiv") || !strcmp(token, "vd") || !strcmp(token, "dy")) + { Set_Vars_Coord_Type = DEFS->COORD_VDIV; strcpy(Set_Vars_Coord_Label,"Vert. Divergence [deg]"); strcpy(Set_Vars_Coord_Var,"vd"); lmin = -5; lmax = 5; N_spatial_dims++;} + if (!strcmp(token, "theta") || !strcmp(token, "longitude") || !strcmp(token, "th")) + { Set_Vars_Coord_Type = DEFS->COORD_THETA; strcpy(Set_Vars_Coord_Label,"Longitude [deg]"); strcpy(Set_Vars_Coord_Var,"th"); lmin = -180; lmax = 180; N_spatial_dims++;} + if (!strcmp(token, "phi") || !strcmp(token, "latitude") || !strcmp(token, "ph")) + { Set_Vars_Coord_Type = DEFS->COORD_PHI; strcpy(Set_Vars_Coord_Label,"Latitude [deg]"); strcpy(Set_Vars_Coord_Var,"ph"); lmin = -90; lmax = 90; N_spatial_dims++;} + if (!strcmp(token, "ncounts") || !strcmp(token, "n") || !strcmp(token, "neutron")) + { Set_Vars_Coord_Type = DEFS->COORD_NCOUNT; strcpy(Set_Vars_Coord_Label,"Neutron ID [1]"); strcpy(Set_Vars_Coord_Var,"n"); lmin = 0; lmax = mcget_ncount(); if (Flag_auto>0) Flag_auto=0; } + if (!strcmp(token, "id") || !strcmp(token, "pixel")) + { Set_Vars_Coord_Type = DEFS->COORD_PIXELID; + strcpy(Set_Vars_Coord_Label,"Pixel ID [1]"); + strcpy(Set_Vars_Coord_Var,"id"); lmin = 0; lmax = FLT_MAX; + if (Flag_auto>0) Flag_auto=0; + Vars->Flag_List = 1; } + if (!strcmp(token, "user") || !strcmp(token, "user1") || !strcmp(token, "u1")) + { Set_Vars_Coord_Type = DEFS->COORD_USER1; strncpy(Set_Vars_Coord_Label,Vars->UserName1,30); strcpy(Set_Vars_Coord_Var,"U1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user2") || !strcmp(token, "u2")) + { Set_Vars_Coord_Type = DEFS->COORD_USER2; strncpy(Set_Vars_Coord_Label,Vars->UserName2,30); strcpy(Set_Vars_Coord_Var,"U2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "user3") || !strcmp(token, "u3")) + { Set_Vars_Coord_Type = DEFS->COORD_USER3; strncpy(Set_Vars_Coord_Label,Vars->UserName3,30); strcpy(Set_Vars_Coord_Var,"U3"); lmin = -1e10; lmax = 1e10; } + + if (!strcmp(token, "userdouble0") || !strcmp(token, "ud0")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE0; strcpy(Set_Vars_Coord_Label,"ud0 [1]"); strcpy(Set_Vars_Coord_Var,"ud0"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble1") || !strcmp(token, "ud1")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE1; strcpy(Set_Vars_Coord_Label,"ud1 [1]"); strcpy(Set_Vars_Coord_Var,"ud1"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble2") || !strcmp(token, "ud2")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE2; strcpy(Set_Vars_Coord_Label,"ud2 [1]"); strcpy(Set_Vars_Coord_Var,"ud2"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble3") || !strcmp(token, "ud3")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE3; strcpy(Set_Vars_Coord_Label,"ud3 [1]"); strcpy(Set_Vars_Coord_Var,"ud3"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble4") || !strcmp(token, "ud4")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE4; strcpy(Set_Vars_Coord_Label,"ud4 [1]"); strcpy(Set_Vars_Coord_Var,"ud4"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble5") || !strcmp(token, "ud5")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE5; strcpy(Set_Vars_Coord_Label,"ud5 [1]"); strcpy(Set_Vars_Coord_Var,"ud5"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble6") || !strcmp(token, "ud6")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE6; strcpy(Set_Vars_Coord_Label,"ud6 [1]"); strcpy(Set_Vars_Coord_Var,"ud6"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble7") || !strcmp(token, "ud7")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE7; strcpy(Set_Vars_Coord_Label,"ud7 [1]"); strcpy(Set_Vars_Coord_Var,"ud7"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble8") || !strcmp(token, "ud8")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE8; strcpy(Set_Vars_Coord_Label,"ud8 [1]"); strcpy(Set_Vars_Coord_Var,"ud8"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble9") || !strcmp(token, "ud9")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE9; strcpy(Set_Vars_Coord_Label,"ud9 [1]"); strcpy(Set_Vars_Coord_Var,"ud9"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble10") || !strcmp(token, "ud10")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE10; strcpy(Set_Vars_Coord_Label,"ud10 [1]"); strcpy(Set_Vars_Coord_Var,"ud10"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble11") || !strcmp(token, "ud11")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE11; strcpy(Set_Vars_Coord_Label,"ud11 [1]"); strcpy(Set_Vars_Coord_Var,"ud11"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble12") || !strcmp(token, "ud12")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE12; strcpy(Set_Vars_Coord_Label,"ud12 [1]"); strcpy(Set_Vars_Coord_Var,"ud12"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble13") || !strcmp(token, "ud13")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE13; strcpy(Set_Vars_Coord_Label,"ud13 [1]"); strcpy(Set_Vars_Coord_Var,"ud13"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble14") || !strcmp(token, "ud14")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE14; strcpy(Set_Vars_Coord_Label,"ud14 [1]"); strcpy(Set_Vars_Coord_Var,"ud14"); lmin = -1e10; lmax = 1e10; } + if (!strcmp(token, "userdouble15") || !strcmp(token, "ud15")) + { Set_Vars_Coord_Type = DEFS->COORD_USERDOUBLE15; strcpy(Set_Vars_Coord_Label,"ud15 [1]"); strcpy(Set_Vars_Coord_Var,"ud15"); lmin = -1e10; lmax = 1e10; } + + /* now stores variable keywords detected, if any */ + if (Set_Vars_Coord_Type != DEFS->COORD_NONE) + { + int Coord_Number = Vars->Coord_Number; + if (Vars->Flag_log) { Set_Vars_Coord_Type |= DEFS->COORD_LOG; Vars->Flag_log = 0; } + if (Flag_abs) { Set_Vars_Coord_Type |= DEFS->COORD_ABS; Flag_abs = 0; } + if (Flag_auto != 0) { Set_Vars_Coord_Type |= DEFS->COORD_AUTO; + if (Flag_auto > 0) Flag_auto = 0; } + if (Set_Coord_Mode == DEFS->COORD_SIGNAL) + { + Coord_Number = 0; + Vars->Flag_signal = Set_Vars_Coord_Type; + } + else + { + if (Coord_Number < MONnD_COORD_NMAX) + { Coord_Number++; + Vars->Coord_Number = Coord_Number; + if (Set_Vars_Coord_Type != DEFS->COORD_PIXELID) + Vars->Coord_NumberNoPixel++; + } + else if (Vars->Flag_Verbose) printf("Monitor_nD: %s reached max number of variables (%i).\n", Vars->compcurname, MONnD_COORD_NMAX); + } + Vars->Coord_Type[Coord_Number] = Set_Vars_Coord_Type; + strncpy(Vars->Coord_Label[Coord_Number], Set_Vars_Coord_Label,30); + strncpy(Vars->Coord_Var[Coord_Number], Set_Vars_Coord_Var,30); + if (lmin > lmax) { XY = lmin; lmin=lmax; lmax = XY; } + Vars->Coord_Min[Coord_Number] = lmin; + Vars->Coord_Max[Coord_Number] = lmax; + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT || Set_Vars_Coord_Type == DEFS->COORD_PIXELID || Set_Vars_Coord_Type == DEFS->COORD_SIGNAL) + Vars->Coord_Bin[Coord_Number] = 1; + else + Vars->Coord_Bin[Coord_Number] = 20; + Set_Coord_Mode = DEFS->COORD_VAR; + Flag_All = 0; + Flag_No = 0; + } else { + /* no variable name could be read from options */ + if (!iskeyword) { + if (strcmp(token, "cm2") && strcmp(token, "incoming") + && strcmp(token, "outgoing") && strcmp(token, "cm2") + && strcmp(token, "cm^2") && strcmp(token, "float") + && strcmp(token, "double") && strcmp(token, "binary") + && strcmp(token, "steradian") && Vars->Flag_Verbose) + printf("Monitor_nD: %s: unknown '%s' keyword in 'options'. Ignoring.\n", Vars->compcurname, token); + } + } + carg++; + } /* end if token */ + } /* end while carg */ + free(option_copy); + if (carg == 128) printf("Monitor_nD: %s reached max number of tokens (%i). Skipping.\n", Vars->compcurname, 128); + + if ((Vars->Flag_Shape == DEFS->SHAPE_BOX) && (fabs(Vars->mzmax - Vars->mzmin) == 0)) Vars->Flag_Shape = DEFS->SHAPE_SQUARE; + + if (Vars->Flag_log == 1) Vars->Coord_Type[0] |= DEFS->COORD_LOG; + if (Vars->Coord_Number == 0) + { Vars->Flag_Auto_Limits=0; Vars->Flag_Multiple=0; Vars->Flag_List=0; } + + /* now setting Monitor Name from variable labels */ + strcpy(Vars->Monitor_Label,""); + XY = 1; /* will contain total bin number */ + for (i = 0; i <= Vars->Coord_Number; i++) + { + if (Flag_auto != 0) Vars->Coord_Type[i] |= DEFS->COORD_AUTO; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if ((Set_Vars_Coord_Type == DEFS->COORD_X) + || (Set_Vars_Coord_Type == DEFS->COORD_Y) + || (Set_Vars_Coord_Type == DEFS->COORD_Z)) + strcpy(Short_Label[i],"Position"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_THETA) + || (Set_Vars_Coord_Type == DEFS->COORD_PHI) + || (Set_Vars_Coord_Type == DEFS->COORD_ANGLE)) + strcpy(Short_Label[i],"Angle"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_XY) + || (Set_Vars_Coord_Type == DEFS->COORD_XZ) + || (Set_Vars_Coord_Type == DEFS->COORD_YZ) + || (Set_Vars_Coord_Type == DEFS->COORD_RADIUS)) + strcpy(Short_Label[i],"Radius"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_VX) + || (Set_Vars_Coord_Type == DEFS->COORD_VY) + || (Set_Vars_Coord_Type == DEFS->COORD_VZ) + || (Set_Vars_Coord_Type == DEFS->COORD_V) + || (Set_Vars_Coord_Type == DEFS->COORD_VXY) + || (Set_Vars_Coord_Type == DEFS->COORD_VYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_VXZ)) + strcpy(Short_Label[i],"Velocity"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_KX) + || (Set_Vars_Coord_Type == DEFS->COORD_KY) + || (Set_Vars_Coord_Type == DEFS->COORD_KZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXY) + || (Set_Vars_Coord_Type == DEFS->COORD_KYZ) + || (Set_Vars_Coord_Type == DEFS->COORD_KXZ) + || (Set_Vars_Coord_Type == DEFS->COORD_K)) + strcpy(Short_Label[i],"Wavevector"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_SX) + || (Set_Vars_Coord_Type == DEFS->COORD_SY) + || (Set_Vars_Coord_Type == DEFS->COORD_SZ)) + strcpy(Short_Label[i],"Spin"); + else + if ((Set_Vars_Coord_Type == DEFS->COORD_HDIV) + || (Set_Vars_Coord_Type == DEFS->COORD_VDIV)) + strcpy(Short_Label[i],"Divergence"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) + strcpy(Short_Label[i],"Energy"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) + strcpy(Short_Label[i],"Wavelength"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) + strcpy(Short_Label[i],"Neutron_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) + strcpy(Short_Label[i],"Pixel_ID"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) + strcpy(Short_Label[i],"Time_Of_Flight"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) + strcpy(Short_Label[i],"Intensity"); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) + strncpy(Short_Label[i],Vars->UserName1,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) + strncpy(Short_Label[i],Vars->UserName2,30); + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) + strncpy(Short_Label[i],Vars->UserName3,30); + else + strcpy(Short_Label[i],"Unknown"); + + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) + { strcat(Vars->Coord_Label[i]," (abs)"); } + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) + { strcat(Vars->Coord_Label[i]," (log)"); } + + strcat(Vars->Monitor_Label, " "); + strcat(Vars->Monitor_Label, Short_Label[i]); + XY *= Vars->Coord_Bin[i]; + + } /* end for Short_Label */ + + if ((Vars->Coord_Type[0] & (DEFS->COORD_LOG-1)) == DEFS->COORD_P) { + strncat(Vars->Coord_Label[0], " [n/s", 30); + if (Vars->Flag_per_cm2) strncat(Vars->Coord_Label[0], "/cm2", 30); + + if (XY > 1 && Vars->Coord_Number) + strncat(Vars->Coord_Label[0], "/bin", 30); + strncat(Vars->Coord_Label[0], "]", 30); + } + + /* update label 'signal per bin' if more than 1 bin */ + if (XY > 1 && Vars->Coord_Number) { + if (Vars->Flag_capture) + printf("Monitor_nD: %s: Using capture flux weightening on %ld bins.\n" + "WARNING Use binned data with caution, and prefer monitor integral value (I,Ierr).\n", Vars->compcurname, (long)XY); + } + + strcat(Vars->Monitor_Label, " Monitor"); + if (Vars->Flag_Shape == DEFS->SHAPE_SQUARE) strcat(Vars->Monitor_Label, " (Square)"); + if (Vars->Flag_Shape == DEFS->SHAPE_DISK) strcat(Vars->Monitor_Label, " (Disk)"); + if (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) strcat(Vars->Monitor_Label, " (Sphere)"); + if (Vars->Flag_Shape == DEFS->SHAPE_CYLIND) strcat(Vars->Monitor_Label, " (Cylinder)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BANANA) strcat(Vars->Monitor_Label, " (Banana)"); + if (Vars->Flag_Shape == DEFS->SHAPE_BOX) strcat(Vars->Monitor_Label, " (Box)"); + if (Vars->Flag_Shape == DEFS->SHAPE_PREVIOUS) strcat(Vars->Monitor_Label, " (on PREVIOUS)"); + if (Vars->Flag_Shape == DEFS->SHAPE_OFF) strcat(Vars->Monitor_Label, " (OFF geometry)"); + if ((Vars->Flag_Shape == DEFS->SHAPE_CYLIND) || (Vars->Flag_Shape == DEFS->SHAPE_BANANA) || (Vars->Flag_Shape == DEFS->SHAPE_SPHERE) || (Vars->Flag_Shape == DEFS->SHAPE_BOX)) + { + if (strstr(Vars->option, "incoming")) + { + Vars->Flag_Shape = abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [in]"); + } + else /* if strstr(Vars->option, "outgoing")) */ + { + Vars->Flag_Shape = -abs(Vars->Flag_Shape); + strcat(Vars->Monitor_Label, " [out]"); + } + } + if (Vars->Flag_UsePreMonitor == 1) + { + strcat(Vars->Monitor_Label, " at "); + strncat(Vars->Monitor_Label, Vars->UserName1,30); + } + if (Vars->Flag_log == 1) strcat(Vars->Monitor_Label, " [log] "); + + /* now allocate memory to store variables in TRACE */ + + /* Vars->Coord_Number 0 : intensity or signal + * Vars->Coord_Number 1:n : detector variables */ + + if ((Vars->Coord_NumberNoPixel != 2) && !Vars->Flag_Multiple && !Vars->Flag_List) + { Vars->Flag_Multiple = 1; /* default is n1D */ + if (Vars->Coord_Number != Vars->Coord_NumberNoPixel) Vars->Flag_List = 1; } + + /* list and auto limits case : Vars->Flag_List or Vars->Flag_Auto_Limits + * -> Buffer to flush and suppress after Vars->Flag_Auto_Limits + */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + Vars->Mon2D_Buffer = (double *)malloc((Vars->Coord_Number+1)*Vars->Buffer_Block*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot allocate Vars->Mon2D_Buffer (%zi). No list and auto limits.\n", Vars->compcurname, Vars->Buffer_Block*(Vars->Coord_Number+1)*sizeof(double)); Vars->Flag_List = 0; Vars->Flag_Auto_Limits = 0; } + else + { + for (i=0; i < (Vars->Coord_Number+1)*Vars->Buffer_Block; Vars->Mon2D_Buffer[i++] = (double)0); + } + Vars->Buffer_Size = Vars->Buffer_Block; + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_NumberNoPixel) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Number)*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, (Vars->Coord_Number)*sizeof(double *)); exit(-1); } + for (i= 1; i <= Vars->Coord_Number; i++) + { + Vars->Mon2D_N[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + Vars->Mon2D_p2[i-1] = (double *)malloc(Vars->Coord_Bin[i]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s n1D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[i], i, (Vars->Coord_Bin[i])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[i]; j++ ) + { Vars->Mon2D_N[i-1][j] = (double)0; Vars->Mon2D_p[i-1][j] = (double)0; Vars->Mon2D_p2[i-1][j] = (double)0; } + } + } + } + else /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + Vars->Mon2D_N = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + Vars->Mon2D_p2 = (double **)malloc((Vars->Coord_Bin[1])*sizeof(double *)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2 (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], (Vars->Coord_Bin[1])*sizeof(double *)); exit(-1); } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + Vars->Mon2D_N[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + Vars->Mon2D_p2[i] = (double *)malloc(Vars->Coord_Bin[2]*sizeof(double)); + if ((Vars->Mon2D_N == NULL) || (Vars->Mon2D_p == NULL) || (Vars->Mon2D_p2 == NULL)) + { fprintf(stderr,"Monitor_nD: %s 2D cannot allocate %s Vars->Mon2D_N/p/p2[%li] (%zi). Fatal.\n", Vars->compcurname, Vars->Coord_Var[1], i, (Vars->Coord_Bin[2])*sizeof(double *)); exit(-1); } + else + { + for (j=0; j < Vars->Coord_Bin[2]; j++ ) + { Vars->Mon2D_N[i][j] = (double)0; Vars->Mon2D_p[i][j] = (double)0; Vars->Mon2D_p2[i][j] = (double)0; } + } + } + } + else { + Vars->Mon2D_N = Vars->Mon2D_p = Vars->Mon2D_p2 = NULL; + } + /* no Mon2D allocated for + * (Vars->Coord_Number != 2) && !Vars->Flag_Multiple && Vars->Flag_List */ + + Vars->psum = 0; + Vars->p2sum = 0; + Vars->Nsum = 0; + + Vars->area = fabs(Vars->mxmax - Vars->mxmin)*fabs(Vars->mymax - Vars->mymin)*1E4; /* in cm**2 for square and box shapes */ + Vars->Sphere_Radius = fabs(Vars->mxmax - Vars->mxmin)/2; + if ((abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + { + Vars->area = PI*Vars->Sphere_Radius*Vars->Sphere_Radius*1E4; /* disk shapes */ + } + + + if (Vars->area == 0 && abs(Vars->Flag_Shape) != DEFS->SHAPE_PREVIOUS ) { + if (abs(Vars->Flag_Shape) != DEFS->SHAPE_OFF) { + Vars->Coord_Number = 0; + } + } + if (Vars->Coord_Number == 0 && Vars->Flag_Verbose) + printf("Monitor_nD: %s is inactivated (0D)\n", Vars->compcurname); + Vars->Cylinder_Height = fabs(Vars->mymax - Vars->mymin); + + if (Vars->Flag_Verbose) + { + printf("Monitor_nD: %s is a %s.\n", Vars->compcurname, Vars->Monitor_Label); + printf("Monitor_nD: version %s with options=%s\n", MONITOR_ND_LIB_H, Vars->option); + } + + /* compute the product of bin dimensions for PixelID */ + Vars->Coord_BinProd[0]=1; + + for (i = 1; i <= Vars->Coord_Number; i++) { + Vars->Coord_BinProd[i]=Vars->Coord_Bin[i]*Vars->Coord_BinProd[i-1]; + } + + #ifdef USE_NEXUS + + #ifdef USE_MPI + if(mpi_node_rank == mpi_node_root) { + #endif + if(nxhandle) { + + /* This section of code writes detector shape information to + entryN/instrument/components/'name'/geometry in the NeXus file */ + + char nexuscomp[CHAR_BUF_LENGTH]; + char pref[5]; + if (Vars->compcurindex-1 < 10) { + sprintf(pref,"000"); + } else if (Vars->compcurindex-1 < 100) { + sprintf(pref,"00"); + } else if (Vars->compcurindex-1 < 1000) { + sprintf(pref,"0"); + } else if (Vars->compcurindex-1 < 10000) { + sprintf(pref,""); + } else { + fprintf(stderr,"Error, no support for > 10000 comps at the moment!\n"); + exit(-1); + } + sprintf(nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,Vars->compcurname); + + if (NXopengroup(nxhandle, "instrument", "NXinstrument") == NX_OK) { + if (NXopengroup(nxhandle, "components", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, nexuscomp, "NXdata") == NX_OK) { + if (NXmakegroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + if (NXopengroup(nxhandle, "Geometry", "NXdata") == NX_OK) { + char tmp[CHAR_BUF_LENGTH]; + sprintf(tmp,"%g",Vars->Sphere_Radius); + nxprintattr(nxhandle, "radius", tmp); + + sprintf(tmp,"%g",Vars->Cylinder_Height); + nxprintattr(nxhandle, "height", tmp); + + sprintf(tmp,"%g",Vars->mxmin); + nxprintattr(nxhandle, "xmin", tmp); + sprintf(tmp,"%g",Vars->mxmax); + nxprintattr(nxhandle, "xmax", tmp); + + sprintf(tmp,"%g",Vars->mymin); + nxprintattr(nxhandle, "ymin", tmp); + sprintf(tmp,"%g",Vars->mymax); + nxprintattr(nxhandle, "ymax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%g",Vars->mzmin); + nxprintattr(nxhandle, "zmin", tmp); + sprintf(tmp,"%g",Vars->mzmax); + nxprintattr(nxhandle, "zmax", tmp); + + sprintf(tmp,"%i",Vars->Flag_Shape); + nxprintattr(nxhandle, "Shape identifier", tmp); + sprintf(tmp,"%s",Vars->Monitor_Label); + nxprintattr(nxhandle, "Shape string", tmp); + sprintf(tmp,"%s",Vars->option); + nxprintattr(nxhandle, "Option string", tmp); + + NXclosegroup(nxhandle); // Geometry + } else { + printf("Failed to open component NeXus component Geometry group\n"); + } + } else { + printf("Failed to create component NeXus component Geometry group\n"); + } + NXclosegroup(nxhandle); // component + } + NXclosegroup(nxhandle); // components + } else { + printf("Failed to open NeXus component hierarchy\n"); + } + NXclosegroup(nxhandle); // instrument + } + + /* Below code communicates geometry-oriented "BINS" for the detector. */ + char metadata[CHAR_BUF_LENGTH]; + char metadatatmp[CHAR_BUF_LENGTH]; + // Vars for 1D, >3D, OFF + long numbins; + long minbins = 0; + long maxbins = 0; + char binlabel[CHAR_BUF_LENGTH]; + char binvar[CHAR_BUF_LENGTH]; + sprintf(binlabel,"none"); + sprintf(binvar,"none"); + + // Find index of pixel column + int id_index; + for (id_index=0;id_index<30;id_index++) { + if (strcmp(Vars->Coord_Var[id_index], "id") == 0) break; + } + if (id_index == 30) id_index = Vars->Coord_Number-1; // Revert to earlier behavior is id not found + long pix=Vars->Coord_Min[id_index]; + + MCDETECTOR detector; + + /* Init - perhaps better with an init-function in mccode-r? */ + detector.m = 0; + detector.xmin = 0; + detector.xmax = 0; + detector.ymin = 0; + detector.ymax = 0; + detector.zmin = 0; + detector.zmax = 0; + detector.intensity = 0; + detector.error = 0; + detector.events = 0; + detector.min = 0; + detector.max = 0; + detector.mean = 0; + detector.centerX = 0; + detector.halfwidthX = 0; + detector.centerY = 0; + detector.halfwidthY = 0; + detector.rank = 0; + detector.istransposed = 0; + detector.n = 0; + detector.p = 0; + detector.date_l = 0; + detector.p0 = NULL; + detector.p1 = NULL; + detector.p2 = NULL; + + sprintf(detector.filename,"BINS"); + sprintf(detector.component,"%s",Vars->compcurname); + sprintf(detector.nexuscomp,"%s%d_%s",pref,Vars->compcurindex-1,detector.component); + sprintf(detector.format,"pixels"); + + if(!Vars->Flag_OFF) { + + sprintf(metadata,"id=%ld + %ld pixels: ",(long)Vars->Coord_Min[id_index],(long)Vars->Coord_BinProd[Vars->Coord_Number]); + for (i=1; iCoord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + } + sprintf(metadatatmp,"%s %s (%ld bins)",metadata,Vars->Coord_Label[i],Vars->Coord_Bin[i]); + sprintf(metadata,"%s",metadatatmp); + numbins = Vars->Coord_BinProd[Vars->Coord_Number]; + if (N_spatial_dims==1) { + minbins=Vars->Coord_Min[1]; + maxbins=Vars->Coord_Max[1]; + sprintf(binlabel,"%s",Vars->Coord_Label[1]); + sprintf(binvar,"%s",Vars->Coord_Var[1]); + } else if (N_spatial_dims>3) { + minbins=1; + maxbins=Vars->Coord_BinProd[Vars->Coord_Number]; + sprintf(binlabel,"More than 3 dimensions"); + sprintf(binvar,"wrapped_variables_4plus_dims"); + N_spatial_dims=1; + } + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } else { + numbins = Vars->Flag_OFF; + minbins=1; + maxbins=Vars->Flag_OFF; + sprintf(binlabel,"OFF pixel index"); + sprintf(binvar,"OFF"); + N_spatial_dims=1; + sprintf(detector.xlabel,"%s",binlabel); + sprintf(detector.xvar,"%s",binvar); + detector.xmin=minbins; + detector.xmax=maxbins; + } + + long k,l,m; + if (N_spatial_dims==1) { // 1D case or ND + detector.m=numbins; + detector.n=1; + detector.p=1; + detector.rank=1; + detector.p0=(double *)calloc(numbins, sizeof(double)); + detector.p1=(double *)calloc(numbins, sizeof(double)); + detector.p2=(double *)calloc(numbins, sizeof(double)); + if (Vars->Flag_Verbose) printf("1D case %ld \n",Vars->Coord_Bin[1]); + for (k=0; kFlag_Verbose) printf("Assigning pixel no [%ld] = %ld\n",k,pix); + detector.p1[k]=pix; + pix++; + } + mcdetector_out_1D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==2) { // 2D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=1; + detector.rank=2; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("2D case %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld] = %ld\n",l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]+l]=pix; + pix++; + } + } + mcdetector_out_2D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } else if (N_spatial_dims==3) { // 3D case + detector.m=Vars->Coord_Bin[1]; + detector.n=Vars->Coord_Bin[2]; + detector.p=Vars->Coord_Bin[3];; + detector.rank=3; + sprintf(detector.xlabel,"%s",Vars->Coord_Label[1]); + sprintf(detector.xvar,"%s",Vars->Coord_Var[1]); + detector.xmin=Vars->Coord_Min[1]; + detector.xmax=Vars->Coord_Max[1]; + sprintf(detector.ylabel,"%s",Vars->Coord_Label[2]); + sprintf(detector.yvar,"%s",Vars->Coord_Var[2]); + detector.ymin=Vars->Coord_Min[2]; + detector.ymax=Vars->Coord_Max[2]; + sprintf(detector.zlabel,"%s",Vars->Coord_Label[3]); + sprintf(detector.zvar,"%s",Vars->Coord_Var[3]); + detector.zmin=Vars->Coord_Min[3]; + detector.zmax=Vars->Coord_Max[3]; + detector.p0=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p1=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + detector.p2=(double *)calloc(Vars->Coord_BinProd[Vars->Coord_Number], sizeof(double)); + if (Vars->Flag_Verbose) printf("3D case %ld x %ld x %ld \n",Vars->Coord_Bin[1],Vars->Coord_Bin[2],Vars->Coord_Bin[3]); + for (k=0; kCoord_Bin[1]; k++) { + for (l=0; lCoord_Bin[2]; l++) { + for (m=0; mCoord_Bin[3]; m++) { + if (Vars->Flag_Verbose) printf("Assigning pixel no [%ld,%ld,%ld] = %ld\n",m,l,k,pix); + detector.p1[k*Vars->Coord_Bin[2]*Vars->Coord_Bin[3] + l*Vars->Coord_Bin[3] + m]=pix; + pix++; + } + } + } + mcdetector_out_3D_nexus(detector); + free(detector.p0); + free(detector.p1); + free(detector.p2); + } + } // nxhandle available + #ifdef USE_MPI + } // Master only + #endif + + #endif // USE_NEXUS + } /* end Monitor_nD_Init */ + +/* ========================================================================= */ +/* Monitor_nD_Trace: this routine is used to monitor one propagating neutron */ +/* return values: 0=neutron was absorbed, -1=neutron was outside bounds, 1=neutron was measured*/ +/* ========================================================================= */ + +int Monitor_nD_Trace(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars, _class_particle* _particle) +{ + + double XY=0, pp=0; + long i =0, j =0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char While_End =0; + long While_Buffer=0; + char Set_Vars_Coord_Type = DEFS->COORD_NONE; + + /* the logic below depends mainly on: + Flag_List: 1=store 1 buffer, 2=list all, 3=re-use buffer + Flag_Auto_Limits: 0 (no auto limits/list), 1 (store events into Buffer), 2 (re-emit store events) + */ + + /* Vars->Flag_Auto_Limits=1: buffer full, we read the Buffer, and determine min and max bounds */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 1) && (Vars->Coord_Number > 0)) + { + /* auto limits case : get limits in Buffer for each variable */ + /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + for (i = 1; i <= Vars->Coord_Number; i++) + { + if (Vars->Coord_Type[i] & DEFS->COORD_AUTO) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step (read Buffer and generate new events to store in histograms) */ + } /* end if Flag_Auto_Limits == 1 */ + +#ifndef OPENACC + /* manage realloc for 'list all' if Buffer size exceeded: flush Buffer to file */ + if ((Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List >= 2)) + { + if (Vars->Buffer_Size >= 1000000 || Vars->Flag_List == 3) + { /* save current (possibly append) and re-use Buffer */ + + Monitor_nD_Save(DEFS, Vars); + Vars->Flag_List = 3; + Vars->Buffer_Block = Vars->Buffer_Size; + Vars->Buffer_Counter = 0; + Vars->Neutron_Counter = 0; + } + else + { + Vars->Mon2D_Buffer = (double *)realloc(Vars->Mon2D_Buffer, (Vars->Coord_Number+1)*(2*Vars->Buffer_Block)*sizeof(double)); + if (Vars->Mon2D_Buffer == NULL) + { printf("Monitor_nD: %s cannot reallocate Vars->Mon2D_Buffer[%li] (%zi). Skipping.\n", Vars->compcurname, i, (long int)(2*Vars->Buffer_Block)*sizeof(double)); Vars->Flag_List = 1; } + else { + Vars->Buffer_Block = 2*Vars->Buffer_Block; + Vars->Buffer_Size = Vars->Buffer_Block; + } + } + } /* end if Buffer realloc */ +#endif + + char outsidebounds=0; + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) or passing neutron */ + if ((Vars->Flag_Auto_Limits == 2) && (Vars->Coord_Number > 0)) + { /* Vars->Flag_Auto_Limits == 2: read back from Buffer (Buffer is filled or auto limits have been computed) */ + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loop (While_Buffer) */ + /* auto limits case : scan Buffer within limits and store in Mon2D */ + Coord[0] = pp = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) continue; + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + if (Vars->Coord_NumberNoPixel < Vars->Coord_Number) /* there is a Pixel variable */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char flag_outside=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!flag_outside) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + if (!Vars->Flag_List) /* free Buffer not needed anymore (no list to output) */ + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, p2) */ + free(Vars->Mon2D_Buffer); Vars->Mon2D_Buffer = NULL; + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li) in TRACE.\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + } /* if Vars->Flag_Auto_Limits == 2 */ + + if (Vars->Flag_Auto_Limits != 2 || !Vars->Coord_Number) /* Vars->Flag_Auto_Limits == 0 (no auto limits/list) or 1 (store events into Buffer) */ + { + /* automatically compute area and steradian solid angle when in AUTO mode */ + /* compute the steradian solid angle incoming on the monitor */ + double v; + double tmp; + v=sqrt(_particle->vx*_particle->vx + _particle->vy*_particle->vy + _particle->vz*_particle->vz); + tmp=_particle->x; + if (Vars->min_x > _particle->x){ + #pragma acc atomic write + Vars->min_x = tmp; + } + if (Vars->max_x < _particle->x){ + #pragma acc atomic write + Vars->max_x = tmp; + } + tmp=_particle->y; + if (Vars->min_y > _particle->y){ + #pragma acc atomic write + Vars->min_y = tmp; + } + if (Vars->max_y < _particle->y){ + tmp=_particle->y; + #pragma acc atomic write + Vars->max_y = tmp; + } + + #pragma acc atomic + Vars->mean_p = Vars->mean_p + _particle->p; + if (v) { + tmp=_particle->p*fabs(_particle->vx/v); + #pragma acc atomic + Vars->mean_dx = Vars->mean_dx + tmp; //_particle->p*fabs(_particle->vx/v); + tmp=_particle->p*fabs(_particle->vy/v); + #pragma acc atomic + Vars->mean_dy = Vars->mean_dy + tmp; //_particle->p*fabs(_particle->vy/v); + } + + for (i = 0; i <= Vars->Coord_Number; i++) + { /* handle current neutron : last while */ + XY = 0; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + /* get values for variables to monitor */ + if (Set_Vars_Coord_Type == DEFS->COORD_X) XY = _particle->x; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Y) XY = _particle->y; + else + if (Set_Vars_Coord_Type == DEFS->COORD_Z) XY = _particle->z; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VX) XY = _particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VY) XY = _particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_VZ) XY = _particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KX) XY = V2K*_particle->vx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KY) XY = V2K*_particle->vy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_KZ) XY = V2K*_particle->vz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SX) XY = _particle->sx; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SY) XY = _particle->sy; + else + if (Set_Vars_Coord_Type == DEFS->COORD_SZ) XY = _particle->sz; + else + if (Set_Vars_Coord_Type == DEFS->COORD_T) XY = _particle->t; + else + if (Set_Vars_Coord_Type == DEFS->COORD_P) XY = _particle->p; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE0) XY = Vars->UserDoubles[0]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE1) XY = Vars->UserDoubles[1]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE2) XY = Vars->UserDoubles[2]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE3) XY = Vars->UserDoubles[3]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE4) XY = Vars->UserDoubles[4]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE5) XY = Vars->UserDoubles[5]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE6) XY = Vars->UserDoubles[6]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE7) XY = Vars->UserDoubles[7]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE8) XY = Vars->UserDoubles[8]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE9) XY = Vars->UserDoubles[9]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE10) XY = Vars->UserDoubles[10]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE11) XY = Vars->UserDoubles[11]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE12) XY = Vars->UserDoubles[12]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE13) XY = Vars->UserDoubles[13]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE14) XY = Vars->UserDoubles[14]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_USERDOUBLE15) XY = Vars->UserDoubles[15]; + else + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV) XY = RAD2DEG*atan2(_particle->vx,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VDIV) XY = RAD2DEG*atan2(_particle->vy,_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_V) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XY) + XY = sqrt(_particle->x*_particle->x+_particle->y*_particle->y)*(_particle->x > 0 ? 1 : -1); + else + if (Set_Vars_Coord_Type == DEFS->COORD_YZ) XY = sqrt(_particle->y*_particle->y+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_XZ) + XY = sqrt(_particle->x*_particle->x+_particle->z*_particle->z); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXY) XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VXZ) XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_VYZ) XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); + else + if (Set_Vars_Coord_Type == DEFS->COORD_K) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXY) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KXZ) { XY = sqrt(_particle->vx*_particle->vx+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_KYZ) { XY = sqrt(_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_ENERGY) { XY = _particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz; XY *= VS2E; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_LAMBDA) { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy+_particle->vz*_particle->vz); XY *= V2K; if (XY != 0) XY = 2*PI/XY; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_NCOUNT) XY = _particle->_uid; + else + if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { XY = sqrt(_particle->vx*_particle->vx+_particle->vy*_particle->vy); + if (_particle->vz != 0) + XY = RAD2DEG*atan2(XY,_particle->vz)*(_particle->x > 0 ? 1 : -1); + else XY = 0; + } + else + if (Set_Vars_Coord_Type == DEFS->COORD_THETA) { if (_particle->z != 0) XY = RAD2DEG*atan2(_particle->x,_particle->z); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PHI) { double rr=sqrt(_particle->x*_particle->x+ _particle->y*_particle->y + _particle->z*_particle->z); if (rr != 0) XY = RAD2DEG*asin(_particle->y/rr); } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER1) {int fail; XY = particle_getvar(_particle,Vars->UserVariable1,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER2) {int fail; XY = particle_getvar(_particle,Vars->UserVariable2,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_USER3) {int fail; XY = particle_getvar(_particle,Vars->UserVariable3,&fail); if(fail) XY=0; } + else + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID && !Vars->Flag_Auto_Limits) { + /* compute the PixelID from previous coordinates + the PixelID is the product of Coord_Index[i] in the detector geometry + pixelID = sum( Coord_Index[j]*prod(Vars->Coord_Bin[1:(j-1)]) ) + + this does not apply when we store events in the buffer as Coord_Index + is not set. Then the pixelID will be re-computed during SAVE. + */ + char flag_outside=0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] <= 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + flag_outside=1; XY=0; break; + } + XY += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (Vars->Flag_mantid && Vars->Flag_OFF && Vars->OFF_polyidx >=0) XY=Vars->OFF_polyidx; + if (!flag_outside) XY += Vars->Coord_Min[i]; + } + + /* handle 'abs' and 'log' keywords */ + if (Vars->Coord_Type[i] & DEFS->COORD_ABS) XY=fabs(XY); + + if (Vars->Coord_Type[i] & DEFS->COORD_LOG) /* compute log of variable if requested */ + { if (XY > 0) XY = log(XY)/log(10); + else XY = -100; } + + Coord[i] = XY; Coord_Index[i] = 0; + if (i == 0) { pp = XY; Coord_Index[i] = 0; } + else { + /* check bounds for variables which have no automatic limits */ + if ((!Vars->Flag_Auto_Limits || !(Vars->Coord_Type[i] & DEFS->COORD_AUTO)) && Vars->Coord_Bin[i]>1) + { /* compute index in histograms for each variable to monitor */ + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + } + //if (0 > Coord_Index[i] || Coord_Index[i] >= Vars->Coord_Bin[i]) + // outsidebounds=1; + } /* else will get Index later from Buffer when Flag_Auto_Limits == 2 */ + } + + } /* end for i */ + While_End = 1; + }/* end else if Vars->Flag_Auto_Limits == 2 */ + + /* ====================================================================== */ + /* store n1d/2d neutron from Buffer (Auto_Limits == 2) or current neutron in while */ + if (Vars->Flag_Auto_Limits != 1) /* not when storing auto limits Buffer */ + { + /* apply per cm2 */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ( Vars->Coord_NumberNoPixel == 2 && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i][j] = Vars->Mon2D_N[i][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i][j] = Vars->Mon2D_p[i][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i][j] = Vars->Mon2D_p2[i][j] + p2; + } + } else { + outsidebounds=1; + } + } else { + /* 1D and n1D case : Vars->Flag_Multiple */ + /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + + for (i= 1; i <= Vars->Coord_Number; i++) { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + if (Vars->Mon2D_N) { + double p2 = pp*pp; + #pragma acc atomic + Vars->Mon2D_N[i-1][j] = Vars->Mon2D_N[i-1][j]+1; + #pragma acc atomic + Vars->Mon2D_p[i-1][j] = Vars->Mon2D_p[i-1][j]+pp; + #pragma acc atomic + Vars->Mon2D_p2[i-1][j] = Vars->Mon2D_p2[i-1][j] + p2; + } + } + } else { + outsidebounds=1; + break; + } + } + } + } /* end (Vars->Flag_Auto_Limits != 1) */ + + if (Vars->Flag_Auto_Limits != 2 && !outsidebounds) /* not when reading auto limits Buffer */ + { /* now store Coord into Buffer (no index needed) if necessary (list or auto limits) */ + if ((Vars->Buffer_Counter < Vars->Buffer_Block) && ((Vars->Flag_List) || (Vars->Flag_Auto_Limits == 1))) + { + for (i = 0; i <= Vars->Coord_Number; i++) + { + // This is is where the list is appended. How to make this "atomic"? + #pragma acc atomic write + Vars->Mon2D_Buffer[i + Vars->Buffer_Counter*(Vars->Coord_Number+1)] = Coord[i]; + } + #pragma acc atomic update + Vars->Buffer_Counter = Vars->Buffer_Counter + 1; + if (Vars->Flag_Verbose && (Vars->Buffer_Counter >= Vars->Buffer_Block) && (Vars->Flag_List == 1)) + printf("Monitor_nD: %s %li neutrons stored in List.\n", Vars->compcurname, Vars->Buffer_Counter); + } + } /* end (Vars->Flag_Auto_Limits != 2) */ + + } /* end while */ + #pragma acc atomic + Vars->Nsum = Vars->Nsum + 1; + #pragma acc atomic + Vars->psum = Vars->psum + pp; + #pragma acc atomic + Vars->p2sum = Vars->p2sum + pp*pp; + + /*determine return value: 1:neutron was in bounds and measured, -1: outside bounds, 0: outside bounds, should be absorbed.*/ + if(outsidebounds){ + if(Vars->Flag_Absorb){ + return 0; + }else{ + return -1; + } + } else { + /* For the OPENACC list buffer an atomic capture/update of the + updated Neutron_counter - updated below under list mode + Only need to be updated when inside bounds. */ + #pragma acc atomic update + Vars->Neutron_Counter++; + } + return 1; +} /* end Monitor_nD_Trace */ + +/* ========================================================================= */ +/* Monitor_nD_Save: this routine is used to save data files */ +/* ========================================================================= */ + +MCDETECTOR Monitor_nD_Save(MonitornD_Defines_type *DEFS, MonitornD_Variables_type *Vars) + { + char *fname; + long i,j; + double *p0m = NULL; + double *p1m = NULL; + double *p2m = NULL; + char Coord_X_Label[CHAR_BUF_LENGTH]; + double min1d, max1d; + double min2d, max2d; + char While_End = 0; + long While_Buffer = 0; + double XY=0, pp=0; + double Coord[MONnD_COORD_NMAX]; + long Coord_Index[MONnD_COORD_NMAX]; + char label[CHAR_BUF_LENGTH]; + + MCDETECTOR detector; + strcpy(detector.options,Vars->option); + if (Vars->Flag_Verbose && Vars->Flag_per_cm2) { + printf("Monitor_nD: %s: active flat detector area is %g [cm^2], total area is %g [cm^2]\n", + Vars->compcurname, (Vars->max_x-Vars->min_x) + *(Vars->max_y-Vars->min_y)*1E4, Vars->area); + printf("Monitor_nD: %s: beam solid angle is %g [st] (%g x %g [deg^2])\n", + Vars->compcurname, + 2*fabs(2*atan2(Vars->mean_dx,Vars->mean_p) + *sin(2*atan2(Vars->mean_dy,Vars->mean_p)/2)), + atan2(Vars->mean_dx,Vars->mean_p)*RAD2DEG, + atan2(Vars->mean_dy,Vars->mean_p)*RAD2DEG); + } + + /* check Buffer flush when end of simulation reached */ + if ((Vars->Buffer_Counter <= Vars->Buffer_Block) && Vars->Flag_Auto_Limits && Vars->Mon2D_Buffer && Vars->Buffer_Counter) + { + /* Get Auto Limits */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s getting %li Auto Limits from List (%li events).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + + for (i = 1; i <= Vars->Coord_Number; i++) + { + if ((Vars->Coord_Type[i] & DEFS->COORD_AUTO) && Vars->Coord_Bin[i] > 1) + { + Vars->Coord_Min[i] = FLT_MAX; + Vars->Coord_Max[i] = -FLT_MAX; + for (j = 0; j < Vars->Buffer_Counter; j++) + { + XY = Vars->Mon2D_Buffer[i+j*(Vars->Coord_Number+1)]; /* scanning variables in Buffer */ + if (XY < Vars->Coord_Min[i]) Vars->Coord_Min[i] = XY; + if (XY > Vars->Coord_Max[i]) Vars->Coord_Max[i] = XY; + } + if (Vars->Flag_Verbose) + printf(" %s: min=%g max=%g in %li bins\n", Vars->Coord_Var[i], Vars->Coord_Min[i], Vars->Coord_Max[i], Vars->Coord_Bin[i]); + } + } + Vars->Flag_Auto_Limits = 2; /* pass to 2nd auto limits step */ + Vars->Buffer_Block = Vars->Buffer_Counter; + + while (!While_End) + { /* we generate Coord[] and Coord_index[] from Buffer (auto limits) */ + /* simulation ended before Buffer was filled. Limits have to be computed, and stored events must be sent into histograms */ + + if (While_Buffer < Vars->Buffer_Block) + { + /* first while loops (While_Buffer) */ + Coord[0] = Vars->Mon2D_Buffer[While_Buffer*(Vars->Coord_Number+1)]; + + /* auto limits case : scan Buffer within limits and store in Mon2D */ + for (i = 1; i <= Vars->Coord_Number; i++) + { + /* scanning variables in Buffer */ + if (Vars->Coord_Bin[i] <= 1) Coord_Index[i] = 0; + else { + XY = (Vars->Coord_Max[i]-Vars->Coord_Min[i]); + Coord[i] = Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)]; + if (XY > 0) Coord_Index[i] = floor((Coord[i]-Vars->Coord_Min[i])*Vars->Coord_Bin[i]/XY); + else Coord_Index[i] = 0; + if (Vars->Flag_With_Borders) + { + if (Coord_Index[i] < 0) Coord_Index[i] = 0; + if (Coord_Index[i] >= Vars->Coord_Bin[i]) Coord_Index[i] = Vars->Coord_Bin[i] - 1; + } + } + } /* end for */ + + /* update the PixelID, we compute it from the previous variables index */ + for (i = 1; i <= Vars->Coord_Number; i++) { + char Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_PIXELID) { + char outsidebounds=0; + Coord_Index[i] = Coord[i] = 0; + for (j= 1; j < i; j++) { + /* not for 1D variables with Bin=1 such as PixelID, NCOUNT, Intensity */ + if (Vars->Coord_Bin[j] == 1) continue; + if (0 > Coord_Index[j] || Coord_Index[j] >= Vars->Coord_Bin[j]) { + outsidebounds=1; + Coord[i] = 0; + break; + } + Coord[i] += Coord_Index[j]*Vars->Coord_BinProd[j-1]; + } + if (!outsidebounds) { + Vars->Mon2D_Buffer[i+While_Buffer*(Vars->Coord_Number+1)] = Coord[i]; + } + } /* end if PixelID */ + } + While_Buffer++; + } /* end if in Buffer */ + else /* (While_Buffer >= Vars->Buffer_Block) && (Vars->Flag_Auto_Limits == 2) */ + { + Vars->Flag_Auto_Limits = 0; + While_End = 1; + if (Vars->Flag_Verbose) printf("Monitor_nD: %s flushed %li Auto Limits from List (%li).\n", Vars->compcurname, Vars->Coord_Number, Vars->Buffer_Counter); + } + + /* store n1d/2d section from Buffer */ + + pp = Coord[0]; + /* apply per cm2 or per st */ + if (Vars->Flag_per_cm2 && Vars->area != 0) + pp /= Vars->area; + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if (!Vars->Flag_Multiple && Vars->Coord_NumberNoPixel == 2) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + i = Coord_Index[1]; + j = Coord_Index[2]; + if (i >= 0 && i < Vars->Coord_Bin[1] && j >= 0 && j < Vars->Coord_Bin[2]) + { + if (Vars->Mon2D_N) { + Vars->Mon2D_N[i][j]++; + Vars->Mon2D_p[i][j] += pp; + Vars->Mon2D_p2[i][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) pp=0; + } + else + /* 1D and n1D case : Vars->Flag_Multiple */ + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors (intensity is not included) */ + for (i= 1; i <= Vars->Coord_Number; i++) + { + j = Coord_Index[i]; + if (j >= 0 && j < Vars->Coord_Bin[i]) + { + if (Vars->Flag_Multiple && Vars->Mon2D_N) { + Vars->Mon2D_N[i-1][j]++; + Vars->Mon2D_p[i-1][j] += pp; + Vars->Mon2D_p2[i-1][j] += pp*pp; + } + } else if (Vars->Flag_Absorb) { + pp=0; break; + } + } + } /* end store 2D/1D */ + + } /* end while */ + } /* end Force Get Limits */ + + /* write output files (sent to file as p[i*n + j] vectors) */ + if (Vars->Coord_Number == 0) + { + double Nsum; + double psum, p2sum; + Nsum = Vars->Nsum; + psum = Vars->psum; + p2sum= Vars->p2sum; + if (Vars->Flag_signal != DEFS->COORD_P && Nsum > 0) + { psum /=Nsum; p2sum /= Nsum*Nsum; } + /* DETECTOR_OUT_0D(Vars->Monitor_Label, Vars->Nsum, Vars->psum, Vars->p2sum); */ + detector = mcdetector_out_0D(Vars->Monitor_Label, Nsum, psum, p2sum, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + else + if (strlen(Vars->Mon_File) > 0) + { + fname = (char*)malloc(strlen(Vars->Mon_File)+10*Vars->Coord_Number); + if (Vars->Flag_List && Vars->Mon2D_Buffer) /* List: DETECTOR_OUT_2D */ + { + + if (Vars->Flag_List >= 2) Vars->Buffer_Size = Vars->Neutron_Counter; + if (Vars->Buffer_Size >= Vars->Neutron_Counter) + Vars->Buffer_Size = Vars->Neutron_Counter; + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) strcat(fname, "_list"); + + strcpy(Coord_X_Label,""); + for (i= 0; i <= Vars->Coord_Number; i++) + { + strcat(Coord_X_Label, Vars->Coord_Var[i]); + strcat(Coord_X_Label, " "); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i]); } + } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s List (%lix%li).\n", Vars->compcurname, fname,(long int)Vars->Neutron_Counter,Vars->Coord_Number); + + /* handle the type of list output */ + strcpy(label, Vars->Monitor_Label); + + detector = mcdetector_out_list( + label, "List of neutron events", Coord_X_Label, + -Vars->Buffer_Size, Vars->Coord_Number+1, + Vars->Mon2D_Buffer, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot, Vars->option,Vars->compcurindex); + } + if (Vars->Flag_Multiple) /* n1D: DETECTOR_OUT_1D */ + { + for (i= 0; i < Vars->Coord_Number; i++) + { + + strcpy(fname,Vars->Mon_File); + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[i+1]); } + sprintf(Coord_X_Label, "%s monitor", Vars->Coord_Label[i+1]); + strcpy(label, Coord_X_Label); + if (Vars->Coord_Bin[i+1] > 0) { /* 1D monitor */ + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 1D (%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[i+1]); + min1d = Vars->Coord_Min[i+1]; + max1d = Vars->Coord_Max[i+1]; + if (min1d == max1d) max1d = min1d+1e-6; + p1m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[i+1]*sizeof(double)); + if (p2m == NULL) /* use Raw Buffer line output */ + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for output. Using raw data.\n", Vars->compcurname); + if (p1m != NULL) free(p1m); + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],Vars->Mon2D_p[i],Vars->Mon2D_p2[i], + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } /* if (p2m == NULL) */ + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (j=0; j < Vars->Coord_Bin[i+1]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j] > 0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } /* if */ + + for (j=0; j < Vars->Coord_Bin[i+1]; j++) + { + p1m[j] = Vars->Mon2D_p[i][j]; + p2m[j] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && Vars->Mon2D_N[i][j] > 0) + { /* normalize mean signal to the number of events */ + p1m[j] /= Vars->Mon2D_N[i][j]; + p2m[j] /= Vars->Mon2D_N[i][j]*Vars->Mon2D_N[i][j]; + } + if (Vars->Flag_log != 0) + { + if ((p1m[j] > 0) && (p2m[j] > 0)) + { + p2m[j] /= p1m[j]*p1m[j]; + p1m[j] = log(p1m[j])/log(10); + } + else + { + p1m[j] = XY; + p2m[j] = 0; + } + } + } /* for */ + detector = mcdetector_out_1D( + label, + Vars->Coord_Label[i+1], + Vars->Coord_Label[0], + Vars->Coord_Var[i+1], + min1d, max1d, + Vars->Coord_Bin[i+1], + Vars->Mon2D_N[i],p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + + } /* else */ + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p1m != NULL) free(p1m); p1m=NULL; + if (p2m != NULL) free(p2m); p2m=NULL; + */ + } else { /* 0d monitor */ + detector = mcdetector_out_0D(label, Vars->Mon2D_p[i][0], Vars->Mon2D_p2[i][0], Vars->Mon2D_N[i][0], Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + + } /* for */ + } /* if 1D */ + else + if (Vars->Coord_NumberNoPixel == 2) /* 2D: DETECTOR_OUT_2D */ + { + strcpy(fname,Vars->Mon_File); + + p0m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p1m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + p2m = (double *)malloc(Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + if (p2m == NULL) + { + if (Vars->Flag_Verbose) printf("Monitor_nD: %s cannot allocate memory for 2D array (%zi). Skipping.\n", Vars->compcurname, 3*Vars->Coord_Bin[1]*Vars->Coord_Bin[2]*sizeof(double)); + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + */ + } + else + { + if (Vars->Flag_log != 0) + { + XY = FLT_MAX; + for (i= 0; i < Vars->Coord_Bin[1]; i++) + for (j= 0; j < Vars->Coord_Bin[2]; j++) /* search min of signal */ + if ((XY > Vars->Mon2D_p[i][j]) && (Vars->Mon2D_p[i][j]>0)) XY = Vars->Mon2D_p[i][j]; + if (XY <= 0) XY = -log(FLT_MAX)/log(10); else XY = log(XY)/log(10)-1; + } + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + for (j= 0; j < Vars->Coord_Bin[2]; j++) + { + long index; + index = j + i*Vars->Coord_Bin[2]; + p0m[index] = Vars->Mon2D_N[i][j]; + p1m[index] = Vars->Mon2D_p[i][j]; + p2m[index] = Vars->Mon2D_p2[i][j]; + if (Vars->Flag_signal != DEFS->COORD_P && p0m[index] > 0) + { + p1m[index] /= p0m[index]; + p2m[index] /= p0m[index]*p0m[index]; + } + + if (Vars->Flag_log != 0) + { + if ((p1m[index] > 0) && (p2m[index] > 0)) + { + p2m[index] /= (p1m[index]*p1m[index]); + p1m[index] = log(p1m[index])/log(10); + + } + else + { + p1m[index] = XY; + p2m[index] = 0; + } + } + } + } + if (strchr(Vars->Mon_File,'.') == NULL) + { strcat(fname, "."); strcat(fname, Vars->Coord_Var[1]); + strcat(fname, "_"); strcat(fname, Vars->Coord_Var[2]); } + if (Vars->Flag_Verbose) printf("Monitor_nD: %s write monitor file %s 2D (%lix%li).\n", Vars->compcurname, fname, Vars->Coord_Bin[1], Vars->Coord_Bin[2]); + + min1d = Vars->Coord_Min[1]; + max1d = Vars->Coord_Max[1]; + if (min1d == max1d) max1d = min1d+1e-6; + min2d = Vars->Coord_Min[2]; + max2d = Vars->Coord_Max[2]; + if (min2d == max2d) max2d = min2d+1e-6; + strcpy(label, Vars->Monitor_Label); + if (Vars->Coord_Bin[1]*Vars->Coord_Bin[2] > 1 + && Vars->Flag_signal == DEFS->COORD_P) + strcat(label, " per bin"); + if (Vars->Flag_List) { + detector = mcdetector_out_2D_list( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->option,Vars->compcurindex); + } else { + detector = mcdetector_out_2D( + label, + Vars->Coord_Label[1], + Vars->Coord_Label[2], + min1d, max1d, + min2d, max2d, + Vars->Coord_Bin[1], + Vars->Coord_Bin[2], + p0m,p1m,p2m, + fname, Vars->compcurname, Vars->compcurpos, Vars->compcurrot,Vars->compcurindex); + } + + /* comment out 'free memory' lines to avoid loosing arrays if + 'detector' structure is used by other instrument parts + if (p0m != NULL) free(p0m); + if (p1m != NULL) free(p1m); + if (p2m != NULL) free(p2m); + */ + } + } + free(fname); + } + return(detector); + } /* end Monitor_nD_Save */ + +/* ========================================================================= */ +/* Monitor_nD_Finally: this routine is used to free memory */ +/* ========================================================================= */ + +void Monitor_nD_Finally(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + int i; + + /* Now Free memory Mon2D.. */ + if ((Vars->Flag_Auto_Limits || Vars->Flag_List) && Vars->Coord_Number) + { /* Dim : (Vars->Coord_Number+1)*Vars->Buffer_Block matrix (for p, dp) */ + if (Vars->Mon2D_Buffer != NULL) free(Vars->Mon2D_Buffer); + } + + /* 1D and n1D case : Vars->Flag_Multiple */ + if (Vars->Flag_Multiple && Vars->Coord_Number) + { /* Dim : Vars->Coord_Number*Vars->Coord_Bin[i] vectors */ + for (i= 0; i < Vars->Coord_Number; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + + + /* 2D case : Vars->Coord_Number==2 and !Vars->Flag_Multiple and !Vars->Flag_List */ + if ((Vars->Coord_NumberNoPixel == 2) && !Vars->Flag_Multiple) + { /* Dim : Vars->Coord_Bin[1]*Vars->Coord_Bin[2] matrix */ + for (i= 0; i < Vars->Coord_Bin[1]; i++) + { + free(Vars->Mon2D_N[i]); + free(Vars->Mon2D_p[i]); + free(Vars->Mon2D_p2[i]); + } + free(Vars->Mon2D_N); + free(Vars->Mon2D_p); + free(Vars->Mon2D_p2); + } + } /* end Monitor_nD_Finally */ + +/* ========================================================================= */ +/* Monitor_nD_McDisplay: this routine is used to display component */ +/* ========================================================================= */ + +void Monitor_nD_McDisplay(MonitornD_Defines_type *DEFS, + MonitornD_Variables_type *Vars) + { + double radius, h; + double xmin; + double xmax; + double ymin; + double ymax; + double zmin; + double zmax; + int i; + double hdiv_min=-180, hdiv_max=180, vdiv_min=-90, vdiv_max=90; + char restricted = 0; + + radius = Vars->Sphere_Radius; + h = Vars->Cylinder_Height; + xmin = Vars->mxmin; + xmax = Vars->mxmax; + ymin = Vars->mymin; + ymax = Vars->mymax; + zmin = Vars->mzmin; + zmax = Vars->mzmax; + + /* determine if there are angular limits set at start (no auto) in coord_types + * cylinder/banana: look for hdiv + * sphere: look for angle, radius (->atan2(val,radius)), hdiv, vdiv + * this activates a 'restricted' flag, to draw a region as blades on cylinder/sphere + */ + for (i= 0; i <= Vars->Coord_Number; i++) + { + int Set_Vars_Coord_Type; + Set_Vars_Coord_Type = (Vars->Coord_Type[i] & (DEFS->COORD_LOG-1)); + if (Set_Vars_Coord_Type == DEFS->COORD_HDIV || Set_Vars_Coord_Type == DEFS->COORD_THETA) + { hdiv_min = Vars->Coord_Min[i]; hdiv_max = Vars->Coord_Max[i]; restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_VDIV || Set_Vars_Coord_Type == DEFS->COORD_PHI) + { vdiv_min = Vars->Coord_Min[i]; vdiv_max = Vars->Coord_Max[i];restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_ANGLE) + { hdiv_min = vdiv_min = Vars->Coord_Min[i]; + hdiv_max = vdiv_max = Vars->Coord_Max[i]; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_RADIUS) + { double angle; + angle = RAD2DEG*atan2(Vars->Coord_Max[i], radius); + hdiv_min = vdiv_min = angle; + hdiv_max = vdiv_max = angle; + restricted = 1; } + else if (Set_Vars_Coord_Type == DEFS->COORD_Y && abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE) + { + vdiv_min = atan2(ymin,radius)*RAD2DEG; + vdiv_max = atan2(ymax,radius)*RAD2DEG; + restricted = 1; + } + } + /* full sphere */ + if ((!restricted && (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE)) + || abs(Vars->Flag_Shape) == DEFS->SHAPE_PREVIOUS) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + mcdis_circle("xz",0,0,0,radius); + mcdis_circle("yz",0,0,0,radius); + } + /* banana/cylinder/sphere portion */ + else + if (restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA) + || (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE))) + { + int NH=24, NV=24; + int ih, iv; + double width, height; + int issphere; + issphere = (abs(Vars->Flag_Shape) == DEFS->SHAPE_SPHERE); + width = (hdiv_max-hdiv_min)/NH; + if (!issphere) { + NV=1; /* cylinder has vertical axis */ + } + height= (vdiv_max-vdiv_min)/NV; + + /* check width and height of elements (sphere) to make sure the nb + of plates remains limited */ + if (width < 10 && NH > 1) { width = 10; NH=(hdiv_max-hdiv_min)/width; width=(hdiv_max-hdiv_min)/NH; } + if (height < 10 && NV > 1) { height = 10; NV=(vdiv_max-vdiv_min)/height; height= (vdiv_max-vdiv_min)/NV; } + + mcdis_magnify("xyz"); + for(ih = 0; ih < NH; ih++) + for(iv = 0; iv < NV; iv++) + { + double theta0, phi0, theta1, phi1; /* angles in spherical coordinates */ + double x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3; /* vertices at plate edges */ + phi0 = (hdiv_min+ width*ih-90)*DEG2RAD; /* in xz plane */ + phi1 = (hdiv_min+ width*(ih+1)-90)*DEG2RAD; + if (issphere) + { + theta0= (vdiv_min+height* iv + 90) *DEG2RAD; /* in vertical plane */ + theta1= (vdiv_min+height*(iv+1) + 90)*DEG2RAD; + + y0 = -radius*cos(theta0); /* z with Z vertical */ + y1 = -radius*cos(theta1); + if (y0 < ymin) y0=ymin; + if (y0 > ymax) y0=ymax; + if (y1 < ymin) y1=ymin; + if (y1 > ymax) y1=ymax; + } else { + y0 = ymin; + y1 = ymax; + theta0=theta1=90*DEG2RAD; + } + + x0 = radius*sin(theta0)*cos(phi0); /* x with Z vertical */ + z0 =-radius*sin(theta0)*sin(phi0); /* y with Z vertical */ + x1 = radius*sin(theta1)*cos(phi0); + z1 =-radius*sin(theta1)*sin(phi0); + x2 = radius*sin(theta1)*cos(phi1); + z2 =-radius*sin(theta1)*sin(phi1); + x3 = radius*sin(theta0)*cos(phi1); + z3 =-radius*sin(theta0)*sin(phi1); + y2 = y1; y3 = y0; + + mcdis_multiline(5, + x0,y0,z0, + x1,y1,z1, + x2,y2,z2, + x3,y3,z3, + x0,y0,z0); + } + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dt, dy; + dt = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_BANANA_DET: %g, %g, %g, %g, %g, %li, %li, %llu\n", radius, + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* disk (circle) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_DISK) + { + mcdis_magnify(""); + mcdis_circle("xy",0,0,0,radius); + } + /* rectangle (square) */ + else + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_SQUARE) + { + mcdis_magnify("xy"); + mcdis_multiline(5, (double)xmin, (double)ymin, 0.0, + (double)xmax, (double)ymin, 0.0, + (double)xmax, (double)ymax, 0.0, + (double)xmin, (double)ymax, 0.0, + (double)xmin, (double)ymin, 0.0); + + if (Vars->Flag_mantid) { + /* First define the base pixel type */ + double dx, dy; + dx = (Vars->Coord_Max[1]-Vars->Coord_Min[1])/Vars->Coord_Bin[1]; + dy = (Vars->Coord_Max[2]-Vars->Coord_Min[2])/Vars->Coord_Bin[2]; + printf("MANTID_RECTANGULAR_DET: %g, %g, %g, %g, %li, %li, %llu\n", + Vars->Coord_Min[1],Vars->Coord_Max[1], Vars->Coord_Min[2],Vars->Coord_Max[2], Vars->Coord_Bin[1], Vars->Coord_Bin[2], (long long unsigned)Vars->Coord_Min[4]); + } + } + /* full cylinder/banana */ + else + if (!restricted && ((abs(Vars->Flag_Shape) == DEFS->SHAPE_CYLIND) || (abs(Vars->Flag_Shape) == DEFS->SHAPE_BANANA))) + { + mcdis_magnify("xyz"); + mcdis_circle("xz", 0, h/2.0, 0, radius); + mcdis_circle("xz", 0, -h/2.0, 0, radius); + mcdis_line(-radius, -h/2.0, 0, -radius, +h/2.0, 0); + mcdis_line(+radius, -h/2.0, 0, +radius, +h/2.0, 0); + mcdis_line(0, -h/2.0, -radius, 0, +h/2.0, -radius); + mcdis_line(0, -h/2.0, +radius, 0, +h/2.0, +radius); + } + else + /* box */ + if (abs(Vars->Flag_Shape) == DEFS->SHAPE_BOX) + { + mcdis_magnify("xyz"); + mcdis_multiline(5, xmin, ymin, zmin, + xmax, ymin, zmin, + xmax, ymax, zmin, + xmin, ymax, zmin, + xmin, ymin, zmin); + mcdis_multiline(5, xmin, ymin, zmax, + xmax, ymin, zmax, + xmax, ymax, zmax, + xmin, ymax, zmax, + xmin, ymin, zmax); + mcdis_line(xmin, ymin, zmin, xmin, ymin, zmax); + mcdis_line(xmax, ymin, zmin, xmax, ymin, zmax); + mcdis_line(xmin, ymax, zmin, xmin, ymax, zmax); + mcdis_line(xmax, ymax, zmin, xmax, ymax, zmax); + } + } /* end Monitor_nD_McDisplay */ + +/* end of monitor_nd-lib.c */ + + + + + + +/* ************************************************************************** */ +/* End of SHARE user declarations for all components */ +/* ************************************************************************** */ + + +/* ********************** component definition declarations. **************** */ + +/* component Origin=Progress_bar() [1] DECLARE */ +/* Parameter definition for component type 'Progress_bar' */ +struct _struct_Progress_bar_parameters { + /* Component type 'Progress_bar' setting parameters */ + char profile[16384]; + MCNUM percent; + MCNUM flag_save; + MCNUM minutes; + /* Component type 'Progress_bar' private parameters */ + double IntermediateCnts; + time_t StartTime; + time_t EndTime; + time_t CurrentTime; + char infostring[64]; +}; /* _struct_Progress_bar_parameters */ +typedef struct _struct_Progress_bar_parameters _class_Progress_bar_parameters; + +/* Parameters for component type 'Progress_bar' */ +struct _struct_Progress_bar { + char _name[256]; /* e.g. Origin */ + char _type[256]; /* Progress_bar */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Progress_bar_parameters _parameters; +}; +typedef struct _struct_Progress_bar _class_Progress_bar; +_class_Progress_bar _Origin_var; +#pragma acc declare create ( _Origin_var ) + +/* component vinROT2=Arm() [2] DECLARE */ +/* Parameter definition for component type 'Arm' */ +struct _struct_Arm_parameters { + char Arm_has_no_parameters; +}; /* _struct_Arm_parameters */ +typedef struct _struct_Arm_parameters _class_Arm_parameters; + +/* Parameters for component type 'Arm' */ +struct _struct_Arm { + char _name[256]; /* e.g. vinROT2 */ + char _type[256]; /* Arm */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Arm_parameters _parameters; +}; +typedef struct _struct_Arm _class_Arm; +_class_Arm _vinROT2_var; +#pragma acc declare create ( _vinROT2_var ) + +_class_Arm _vinROT1_var; +#pragma acc declare create ( _vinROT1_var ) + +/* component vin=MCPL_input_once() [4] DECLARE */ +/* Parameter definition for component type 'MCPL_input_once' */ +struct _struct_MCPL_input_once_parameters { + /* Component type 'MCPL_input_once' setting parameters */ + char filename[16384]; + MCNUM polarisationuse; + MCNUM Emin; + MCNUM Emax; + MCNUM v_smear; + MCNUM pos_smear; + MCNUM dir_smear; + int always_smear; + int preload; + int verbose; + /* Component type 'MCPL_input_once' private parameters */ + mcpl_file_t inputfile; + uint64_t nparticles; + uint64_t read_neutrons; + uint64_t used_neutrons; + uint64_t emitted_neutrons; + uint64_t current_index; + uint64_t maximum_index; + uint64_t first_particle; + int times_replayed; + mcpl_input_once_particle_t* particles; + double weight_scale; + char* resolved_filename; +}; /* _struct_MCPL_input_once_parameters */ +typedef struct _struct_MCPL_input_once_parameters _class_MCPL_input_once_parameters; + +/* Parameters for component type 'MCPL_input_once' */ +struct _struct_MCPL_input_once { + char _name[256]; /* e.g. vin */ + char _type[256]; /* MCPL_input_once */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_MCPL_input_once_parameters _parameters; +}; +typedef struct _struct_MCPL_input_once _class_MCPL_input_once; +_class_MCPL_input_once _vin_var; +#pragma acc declare create ( _vin_var ) + +/* component Sphere1=PSD_monitor_4PI() [5] DECLARE */ +/* Parameter definition for component type 'PSD_monitor_4PI' */ +struct _struct_PSD_monitor_4PI_parameters { + /* Component type 'PSD_monitor_4PI' setting parameters */ + int nx; + int ny; + char filename[16384]; + int nowritefile; + MCNUM radius; + int restore_neutron; + /* Component type 'PSD_monitor_4PI' private parameters */ + DArray2d PSD_N; + DArray2d PSD_p; + DArray2d PSD_p2; +}; /* _struct_PSD_monitor_4PI_parameters */ +typedef struct _struct_PSD_monitor_4PI_parameters _class_PSD_monitor_4PI_parameters; + +/* Parameters for component type 'PSD_monitor_4PI' */ +struct _struct_PSD_monitor_4PI { + char _name[256]; /* e.g. Sphere1 */ + char _type[256]; /* PSD_monitor_4PI */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_PSD_monitor_4PI_parameters _parameters; +}; +typedef struct _struct_PSD_monitor_4PI _class_PSD_monitor_4PI; +_class_PSD_monitor_4PI _Sphere1_var; +#pragma acc declare create ( _Sphere1_var ) + +/* component Source=ESS_butterfly() [6] DECLARE */ +/* Parameter definition for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly_parameters { + /* Component type 'ESS_butterfly' setting parameters */ + char sector[16384]; + int beamline; + MCNUM yheight; + MCNUM cold_frac; + int target_index; + MCNUM dist; + MCNUM focus_xw; + MCNUM focus_yh; + MCNUM c_performance; + MCNUM t_performance; + MCNUM Lmin; + MCNUM Lmax; + MCNUM tmax_multiplier; + int n_pulses; + MCNUM acc_power; + MCNUM tfocus_dist; + MCNUM tfocus_time; + MCNUM tfocus_width; + MCNUM target_tsplit; + /* Component type 'ESS_butterfly' private parameters */ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double * Beamlines; + double wfrac_cold; + double wfrac_thermal; + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + double cos_thermal; + double cos_cold; + double orientation_angle; + double cx; + double cz; + int jmax; + double dxC; + double dxT; +}; /* _struct_ESS_butterfly_parameters */ +typedef struct _struct_ESS_butterfly_parameters _class_ESS_butterfly_parameters; + +/* Parameters for component type 'ESS_butterfly' */ +struct _struct_ESS_butterfly { + char _name[256]; /* e.g. Source */ + char _type[256]; /* ESS_butterfly */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_ESS_butterfly_parameters _parameters; +}; +typedef struct _struct_ESS_butterfly _class_ESS_butterfly; +_class_ESS_butterfly _Source_var; +#pragma acc declare create ( _Source_var ) + +_class_Arm _optical_axis_var; +#pragma acc declare create ( _optical_axis_var ) + +_class_PSD_monitor_4PI _Sphere0_var; +#pragma acc declare create ( _Sphere0_var ) + +/* component Focus_cut=Shape() [9] DECLARE */ +/* Parameter definition for component type 'Shape' */ +struct _struct_Shape_parameters { + /* Component type 'Shape' setting parameters */ + char geometry[16384]; + MCNUM radius; + MCNUM xwidth; + MCNUM yheight; + MCNUM zdepth; + MCNUM thickness; + MCNUM nx; + MCNUM ny; + MCNUM nz; + int center; + /* Component type 'Shape' private parameters */ + off_struct offdata; +}; /* _struct_Shape_parameters */ +typedef struct _struct_Shape_parameters _class_Shape_parameters; + +/* Parameters for component type 'Shape' */ +struct _struct_Shape { + char _name[256]; /* e.g. Focus_cut */ + char _type[256]; /* Shape */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Shape_parameters _parameters; +}; +typedef struct _struct_Shape _class_Shape; +_class_Shape _Focus_cut_var; +#pragma acc declare create ( _Focus_cut_var ) + +/* component PSD_cut=PSD_monitor() [10] DECLARE */ +/* Parameter definition for component type 'PSD_monitor' */ +struct _struct_PSD_monitor_parameters { + /* Component type 'PSD_monitor' setting parameters */ + int nx; + int ny; + char filename[16384]; + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM xwidth; + MCNUM yheight; + int restore_neutron; + int nowritefile; + /* Component type 'PSD_monitor' private parameters */ + DArray2d PSD_N; + DArray2d PSD_p; + DArray2d PSD_p2; +}; /* _struct_PSD_monitor_parameters */ +typedef struct _struct_PSD_monitor_parameters _class_PSD_monitor_parameters; + +/* Parameters for component type 'PSD_monitor' */ +struct _struct_PSD_monitor { + char _name[256]; /* e.g. PSD_cut */ + char _type[256]; /* PSD_monitor */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_PSD_monitor_parameters _parameters; +}; +typedef struct _struct_PSD_monitor _class_PSD_monitor; +_class_PSD_monitor _PSD_cut_var; +#pragma acc declare create ( _PSD_cut_var ) + +_class_Shape _BackTrace_var; +#pragma acc declare create ( _BackTrace_var ) + +_class_PSD_monitor _PSD_Backtrace_var; +#pragma acc declare create ( _PSD_Backtrace_var ) + +_class_Arm _Start_of_bi_var; +#pragma acc declare create ( _Start_of_bi_var ) + +/* component bi=bi_spec_ellipse() [14] DECLARE */ +/* Parameter definition for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse_parameters { + /* Component type 'bi_spec_ellipse' setting parameters */ + MCNUM xheight; + MCNUM ywidth; + MCNUM zlength; + MCNUM n_mirror; + MCNUM tilt; + MCNUM n_pieces; + MCNUM angular_offset; + MCNUM m; + MCNUM R0_m; + MCNUM Qc_m; + MCNUM alpha_mirror_m; + MCNUM W_m; + MCNUM transmit; + MCNUM d_focus_1_x; + MCNUM d_focus_2_x; + MCNUM d_focus_1_y; + MCNUM d_focus_2_y; + MCNUM ell_l; + MCNUM ell_h; + MCNUM ell_w; + MCNUM ell_m; + MCNUM R0; + MCNUM Qc; + MCNUM alpha_mirror; + MCNUM W; + MCNUM cut; + MCNUM substrate; + char reflect_mirror[16384]; + char reflect[16384]; + /* Component type 'bi_spec_ellipse' private parameters */ + t_Table pTable; +}; /* _struct_bi_spec_ellipse_parameters */ +typedef struct _struct_bi_spec_ellipse_parameters _class_bi_spec_ellipse_parameters; + +/* Parameters for component type 'bi_spec_ellipse' */ +struct _struct_bi_spec_ellipse { + char _name[256]; /* e.g. bi */ + char _type[256]; /* bi_spec_ellipse */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_bi_spec_ellipse_parameters _parameters; +}; +typedef struct _struct_bi_spec_ellipse _class_bi_spec_ellipse; +_class_bi_spec_ellipse _bi_var; +#pragma acc declare create ( _bi_var ) + +_class_Arm _End_of_bi_var; +#pragma acc declare create ( _End_of_bi_var ) + +/* component NBOA_drawing_1_end=Guide_four_side() [16] DECLARE */ +/* Parameter definition for component type 'Guide_four_side' */ +struct _struct_Guide_four_side_parameters { + /* Component type 'Guide_four_side' setting parameters */ + char RIreflect[16384]; + char LIreflect[16384]; + char UIreflect[16384]; + char DIreflect[16384]; + char ROreflect[16384]; + char LOreflect[16384]; + char UOreflect[16384]; + char DOreflect[16384]; + MCNUM w1l; + MCNUM w2l; + MCNUM linwl; + MCNUM loutwl; + MCNUM w1r; + MCNUM w2r; + MCNUM linwr; + MCNUM loutwr; + MCNUM h1u; + MCNUM h2u; + MCNUM linhu; + MCNUM louthu; + MCNUM h1d; + MCNUM h2d; + MCNUM linhd; + MCNUM louthd; + MCNUM l; + MCNUM R0; + MCNUM Qcxl; + MCNUM Qcxr; + MCNUM Qcyu; + MCNUM Qcyd; + MCNUM alphaxl; + MCNUM alphaxr; + MCNUM alphayu; + MCNUM alphayd; + MCNUM Wxr; + MCNUM Wxl; + MCNUM Wyu; + MCNUM Wyd; + MCNUM mxr; + MCNUM mxl; + MCNUM myu; + MCNUM myd; + MCNUM QcxrOW; + MCNUM QcxlOW; + MCNUM QcyuOW; + MCNUM QcydOW; + MCNUM alphaxlOW; + MCNUM alphaxrOW; + MCNUM alphayuOW; + MCNUM alphaydOW; + MCNUM WxrOW; + MCNUM WxlOW; + MCNUM WyuOW; + MCNUM WydOW; + MCNUM mxrOW; + MCNUM mxlOW; + MCNUM myuOW; + MCNUM mydOW; + MCNUM rwallthick; + MCNUM lwallthick; + MCNUM uwallthick; + MCNUM dwallthick; + /* Component type 'Guide_four_side' private parameters */ + double w1rwt; + double w1lwt; + double h1uwt; + double h1dwt; + double w2rwt; + double w2lwt; + double h2uwt; + double h2dwt; + double pawr; + double pawl; + double pbwr; + double pbwl; + double pahu; + double pahd; + double pbhu; + double pbhd; + double awl; + double bwl; + double awr; + double bwr; + double ahu; + double bhu; + double ahd; + double bhd; + double awlwt; + double bwlwt; + double awrwt; + double bwrwt; + double ahuwt; + double bhuwt; + double ahdwt; + double bhdwt; + double pawrwt; + double pawlwt; + double pbwrwt; + double pbwlwt; + double pahuwt; + double pahdwt; + double pbhuwt; + double pbhdwt; + double a2wlwt; + double b2wlwt; + double a2wrwt; + double b2wrwt; + double a2huwt; + double b2huwt; + double a2hdwt; + double b2hdwt; + double a2wl; + double b2wl; + double a2wr; + double b2wr; + double a2hu; + double b2hu; + double a2hd; + double b2hd; + double mru1; + double mru2; + double nru1; + double nru2; + double mrd1; + double mrd2; + double nrd1; + double nrd2; + double mlu1; + double mlu2; + double nlu1; + double nlu2; + double mld1; + double mld2; + double nld1; + double nld2; + double z0wr; + double z0wl; + double z0hu; + double z0hd; + double p2parawr; + double p2parawl; + double p2parahu; + double p2parahd; + double p2parawrwt; + double p2parawlwt; + double p2parahuwt; + double p2parahdwt; + t_Table riTable; + t_Table liTable; + t_Table uiTable; + t_Table diTable; + t_Table roTable; + t_Table loTable; + t_Table uoTable; + t_Table doTable; +}; /* _struct_Guide_four_side_parameters */ +typedef struct _struct_Guide_four_side_parameters _class_Guide_four_side_parameters; + +/* Parameters for component type 'Guide_four_side' */ +struct _struct_Guide_four_side { + char _name[256]; /* e.g. NBOA_drawing_1_end */ + char _type[256]; /* Guide_four_side */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Guide_four_side_parameters _parameters; +}; +typedef struct _struct_Guide_four_side _class_Guide_four_side; +_class_Guide_four_side _NBOA_drawing_1_end_var; +#pragma acc declare create ( _NBOA_drawing_1_end_var ) + +_class_Guide_four_side _g1a2_var; +#pragma acc declare create ( _g1a2_var ) + +_class_Guide_four_side _g1a3_var; +#pragma acc declare create ( _g1a3_var ) + +_class_Guide_four_side _g1b1_var; +#pragma acc declare create ( _g1b1_var ) + +_class_Guide_four_side _g1c1_var; +#pragma acc declare create ( _g1c1_var ) + +_class_Arm _wfm_position_var; +#pragma acc declare create ( _wfm_position_var ) + +_class_Arm _wfm_1_position_var; +#pragma acc declare create ( _wfm_1_position_var ) + +/* component wfmc_1=MultiDiskChopper() [23] DECLARE */ +/* Parameter definition for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper_parameters { + /* Component type 'MultiDiskChopper' setting parameters */ + char slit_center[16384]; + char slit_width[16384]; + MCNUM nslits; + MCNUM delta_y; + MCNUM nu; + MCNUM nrev; + MCNUM ratio; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM phase; + MCNUM radius; + MCNUM equal; + MCNUM abs_out; + MCNUM verbose; + /* Component type 'MultiDiskChopper' private parameters */ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +}; /* _struct_MultiDiskChopper_parameters */ +typedef struct _struct_MultiDiskChopper_parameters _class_MultiDiskChopper_parameters; + +/* Parameters for component type 'MultiDiskChopper' */ +struct _struct_MultiDiskChopper { + char _name[256]; /* e.g. wfmc_1 */ + char _type[256]; /* MultiDiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_MultiDiskChopper_parameters _parameters; +}; +typedef struct _struct_MultiDiskChopper _class_MultiDiskChopper; +_class_MultiDiskChopper _wfmc_1_var; +#pragma acc declare create ( _wfmc_1_var ) + +/* component pinhole_1=Slit() [24] DECLARE */ +/* Parameter definition for component type 'Slit' */ +struct _struct_Slit_parameters { + /* Component type 'Slit' setting parameters */ + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM radius; + MCNUM xwidth; + MCNUM yheight; + /* Component type 'Slit' private parameters */ + char isradial; +}; /* _struct_Slit_parameters */ +typedef struct _struct_Slit_parameters _class_Slit_parameters; + +/* Parameters for component type 'Slit' */ +struct _struct_Slit { + char _name[256]; /* e.g. pinhole_1 */ + char _type[256]; /* Slit */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Slit_parameters _parameters; +}; +typedef struct _struct_Slit _class_Slit; +_class_Slit _pinhole_1_var; +#pragma acc declare create ( _pinhole_1_var ) + +_class_Arm _wfm_2_position_var; +#pragma acc declare create ( _wfm_2_position_var ) + +_class_MultiDiskChopper _wfmc_2_var; +#pragma acc declare create ( _wfmc_2_var ) + +_class_Guide_four_side _g2a1_var; +#pragma acc declare create ( _g2a1_var ) + +_class_Arm _monitor_1_position_var; +#pragma acc declare create ( _monitor_1_position_var ) + +_class_Guide_four_side _g2a2_var; +#pragma acc declare create ( _g2a2_var ) + +_class_Arm _fo1_position_var; +#pragma acc declare create ( _fo1_position_var ) + +_class_MultiDiskChopper _fo_chopper_1_var; +#pragma acc declare create ( _fo_chopper_1_var ) + +_class_Arm _bp1_position_var; +#pragma acc declare create ( _bp1_position_var ) + +/* component bp1_chopper=DiskChopper() [33] DECLARE */ +/* Parameter definition for component type 'DiskChopper' */ +struct _struct_DiskChopper_parameters { + /* Component type 'DiskChopper' setting parameters */ + MCNUM theta_0; + MCNUM radius; + MCNUM yheight; + MCNUM nu; + MCNUM nslit; + MCNUM jitter; + MCNUM delay; + MCNUM isfirst; + MCNUM n_pulse; + MCNUM abs_out; + MCNUM phase; + MCNUM xwidth; + MCNUM verbose; + /* Component type 'DiskChopper' private parameters */ + double Tg; + double To; + double delta_y; + double height; + double omega; +}; /* _struct_DiskChopper_parameters */ +typedef struct _struct_DiskChopper_parameters _class_DiskChopper_parameters; + +/* Parameters for component type 'DiskChopper' */ +struct _struct_DiskChopper { + char _name[256]; /* e.g. bp1_chopper */ + char _type[256]; /* DiskChopper */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_DiskChopper_parameters _parameters; +}; +typedef struct _struct_DiskChopper _class_DiskChopper; +_class_DiskChopper _bp1_chopper_var; +#pragma acc declare create ( _bp1_chopper_var ) + +_class_Guide_four_side _g2b1_var; +#pragma acc declare create ( _g2b1_var ) + +_class_Guide_four_side _g2b2_var; +#pragma acc declare create ( _g2b2_var ) + +_class_Guide_four_side _g2b3_var; +#pragma acc declare create ( _g2b3_var ) + +_class_Guide_four_side _g2b4_var; +#pragma acc declare create ( _g2b4_var ) + +_class_Arm _fo2_position_var; +#pragma acc declare create ( _fo2_position_var ) + +_class_MultiDiskChopper _fo_chopper_2_var; +#pragma acc declare create ( _fo_chopper_2_var ) + +_class_Arm _bp2_position_var; +#pragma acc declare create ( _bp2_position_var ) + +_class_DiskChopper _bp_chopper2_var; +#pragma acc declare create ( _bp_chopper2_var ) + +_class_Guide_four_side _g2c1_var; +#pragma acc declare create ( _g2c1_var ) + +_class_Arm _t0_start_position_var; +#pragma acc declare create ( _t0_start_position_var ) + +_class_DiskChopper _t0_chopper_alpha_var; +#pragma acc declare create ( _t0_chopper_alpha_var ) + +_class_Arm _t0_end_position_var; +#pragma acc declare create ( _t0_end_position_var ) + +_class_DiskChopper _t0_chopper_beta_var; +#pragma acc declare create ( _t0_chopper_beta_var ) + +_class_Guide_four_side _g3a1_var; +#pragma acc declare create ( _g3a1_var ) + +_class_Guide_four_side _g3a2_var; +#pragma acc declare create ( _g3a2_var ) + +_class_Arm _fo3_position_var; +#pragma acc declare create ( _fo3_position_var ) + +_class_MultiDiskChopper _fo_chopper_3_var; +#pragma acc declare create ( _fo_chopper_3_var ) + +_class_Guide_four_side _g3b1_var; +#pragma acc declare create ( _g3b1_var ) + +_class_Guide_four_side _g4a1_var; +#pragma acc declare create ( _g4a1_var ) + +_class_Arm _monitor_2_position_var; +#pragma acc declare create ( _monitor_2_position_var ) + +_class_Guide_four_side _g4a2_var; +#pragma acc declare create ( _g4a2_var ) + +_class_Guide_four_side _g4a3_var; +#pragma acc declare create ( _g4a3_var ) + +_class_Arm _fo4_position_var; +#pragma acc declare create ( _fo4_position_var ) + +_class_MultiDiskChopper _fo_chopper_4_var; +#pragma acc declare create ( _fo_chopper_4_var ) + +_class_Guide_four_side _g4b1_var; +#pragma acc declare create ( _g4b1_var ) + +_class_Guide_four_side _g4b2_var; +#pragma acc declare create ( _g4b2_var ) + +_class_Guide_four_side _g4b3_var; +#pragma acc declare create ( _g4b3_var ) + +_class_Guide_four_side _g4b4_var; +#pragma acc declare create ( _g4b4_var ) + +_class_Guide_four_side _g4b5_var; +#pragma acc declare create ( _g4b5_var ) + +_class_Guide_four_side _g4b6_var; +#pragma acc declare create ( _g4b6_var ) + +_class_Guide_four_side _g5a1_var; +#pragma acc declare create ( _g5a1_var ) + +_class_Arm _fo5_position_var; +#pragma acc declare create ( _fo5_position_var ) + +_class_MultiDiskChopper _fo_chopper_5_var; +#pragma acc declare create ( _fo_chopper_5_var ) + +_class_Guide_four_side _g5b1_var; +#pragma acc declare create ( _g5b1_var ) + +_class_Guide_four_side _g5b2_var; +#pragma acc declare create ( _g5b2_var ) + +_class_Guide_four_side _g5b3_var; +#pragma acc declare create ( _g5b3_var ) + +_class_Guide_four_side _g5b4_var; +#pragma acc declare create ( _g5b4_var ) + +_class_Guide_four_side _g5b5_var; +#pragma acc declare create ( _g5b5_var ) + +_class_Guide_four_side _g5b6_var; +#pragma acc declare create ( _g5b6_var ) + +_class_Guide_four_side _g6a1_var; +#pragma acc declare create ( _g6a1_var ) + +_class_Guide_four_side _g6a2_var; +#pragma acc declare create ( _g6a2_var ) + +_class_Guide_four_side _g6a3_var; +#pragma acc declare create ( _g6a3_var ) + +_class_Arm _guide_end_var; +#pragma acc declare create ( _guide_end_var ) + +_class_Arm _monitor_3_position_var; +#pragma acc declare create ( _monitor_3_position_var ) + +_class_Arm _start_backend_var; +#pragma acc declare create ( _start_backend_var ) + +_class_Arm _optical_axis_backend_var; +#pragma acc declare create ( _optical_axis_backend_var ) + +_class_Slit _pinhole_2_var; +#pragma acc declare create ( _pinhole_2_var ) + +/* component graph=Graphite_Diffuser() [81] DECLARE */ +/* Parameter definition for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser_parameters { + /* Component type 'Graphite_Diffuser' setting parameters */ + MCNUM xwidth; + MCNUM ywidth; + MCNUM thick; + MCNUM abs; +}; /* _struct_Graphite_Diffuser_parameters */ +typedef struct _struct_Graphite_Diffuser_parameters _class_Graphite_Diffuser_parameters; + +/* Parameters for component type 'Graphite_Diffuser' */ +struct _struct_Graphite_Diffuser { + char _name[256]; /* e.g. graph */ + char _type[256]; /* Graphite_Diffuser */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Graphite_Diffuser_parameters _parameters; +}; +typedef struct _struct_Graphite_Diffuser _class_Graphite_Diffuser; +_class_Graphite_Diffuser _graph_var; +#pragma acc declare create ( _graph_var ) + +_class_Arm _sample_monitor_arm_var; +#pragma acc declare create ( _sample_monitor_arm_var ) + +/* component sample_PSD=Monitor_nD() [83] DECLARE */ +/* Parameter definition for component type 'Monitor_nD' */ +struct _struct_Monitor_nD_parameters { + /* Component type 'Monitor_nD' setting parameters */ + char user1[16384]; + char user2[16384]; + char user3[16384]; + MCNUM xwidth; + MCNUM yheight; + MCNUM zdepth; + MCNUM xmin; + MCNUM xmax; + MCNUM ymin; + MCNUM ymax; + MCNUM zmin; + MCNUM zmax; + int bins; + MCNUM min; + MCNUM max; + int restore_neutron; + MCNUM radius; + char options[16384]; + char filename[16384]; + char geometry[16384]; + int nowritefile; + char username1[16384]; + char username2[16384]; + char username3[16384]; + int tsplit; + int adaptive_target; + /* Component type 'Monitor_nD' private parameters */ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +}; /* _struct_Monitor_nD_parameters */ +typedef struct _struct_Monitor_nD_parameters _class_Monitor_nD_parameters; + +/* Parameters for component type 'Monitor_nD' */ +struct _struct_Monitor_nD { + char _name[256]; /* e.g. sample_PSD */ + char _type[256]; /* Monitor_nD */ + long _index; /* e.g. 2 index in TRACE list */ + Coords _position_absolute; + Coords _position_relative; /* wrt PREVIOUS */ + Rotation _rotation_absolute; + Rotation _rotation_relative; /* wrt PREVIOUS */ + int _rotation_is_identity; + int _position_relative_is_zero; + _class_Monitor_nD_parameters _parameters; +}; +typedef struct _struct_Monitor_nD _class_Monitor_nD; +_class_Monitor_nD _sample_PSD_var; +#pragma acc declare create ( _sample_PSD_var ) + +_class_Monitor_nD _profile_x_var; +#pragma acc declare create ( _profile_x_var ) + +_class_Monitor_nD _profile_y_var; +#pragma acc declare create ( _profile_y_var ) + +_class_Monitor_nD _wavelength_var; +#pragma acc declare create ( _wavelength_var ) + +_class_Monitor_nD _tof_var; +#pragma acc declare create ( _tof_var ) + +_class_Monitor_nD _wavelength_tof_var; +#pragma acc declare create ( _wavelength_tof_var ) + +_class_Arm _sample_position_var; +#pragma acc declare create ( _sample_position_var ) + +int mcNUMCOMP = 89; + +/* User declarations from instrument definition. Can define functions. */ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap +char sector[]="S"; +int beamline=2; + double calcAlpha(double length, double radius) { + // calculate angle of arm after curved guide + return RAD2DEG * length/radius; + } + + double calcX(double length, double radius) { + // calculate position and angle of arm after curved guide + double alpha = DEG2RAD * calcAlpha(length, radius); + return radius*(1.0-cos(alpha)); + } + + double calcZ(double length, double radius) { + // calculate position and angle of arm after curved guide + double alpha = DEG2RAD * calcAlpha(length, radius); + return radius*sin(alpha); + } + + double XW, YH; + char options1[256],options2[256],options3[256],options4[256]; + char srcdef[128]; + double WidthC=0.072,WidthT=0.108; + double lambdamin, lambdamax; + double TCollmin; + double TCollmax; + #pragma acc declare create(TCollmin,TCollmax) + double EminTh=20, EmaxTh=100, EminC=0, EmaxC=20; + #pragma acc declare create(EminTh,EmaxTh,EminC,EmaxC) + /* 10 beamlines in sector N and E - plus one location added for drawing */ + double iBeamlinesN[] = { 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double iBeamlinesE[] = {-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + /* 11 beamlines in sector S and W - plus one location added for drawing */ + double iBeamlinesW[] = { 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double iBeamlinesS[] = {-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double* iBeamlines; + double ANGLE; + double DeltaX,DeltaZ; + char MCPLfile[128]; + int adaptive_N; +long total_arrived; +long total_N_sent; +long total_rays_sent; + +#undef compcurname +#undef compcurtype +#undef compcurindex +/* end of instrument 'ODIN_MCPL_baseline' and components DECLARE */ + +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' and components INITIALISE +***************************************************************************** */ + +double index_getdistance(int first_index, int second_index) +/* Calculate the distance two components from their indexes*/ +{ + return coords_len(coords_sub(POS_A_COMP_INDEX(first_index), POS_A_COMP_INDEX(second_index))); +} + +double getdistance(char* first_component, char* second_component) +/* Calculate the distance between two named components */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + return index_getdistance(first_index, second_index); +} + +double checked_setpos_getdistance(int current_index, char* first_component, char* second_component) +/* Calculate the distance between two named components at *_setpos() time, with component index checking */ +{ + int first_index = _getcomp_index(first_component); + int second_index = _getcomp_index(second_component); + if (first_index >= current_index || second_index >= current_index) { + printf("setpos_getdistance can only be used with the names of components before the current one!\n"); + return 0; + } + return index_getdistance(first_index, second_index); +} +#define setpos_getdistance(first, second) checked_setpos_getdistance(current_setpos_index, first, second) + +/* component Origin=Progress_bar() SETTING, POSITION/ROTATION */ +int _Origin_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Origin_setpos] component Origin=Progress_bar() SETTING [Progress_bar:0]"); + stracpy(_Origin_var._name, "Origin", 16384); + stracpy(_Origin_var._type, "Progress_bar", 16384); + _Origin_var._index=1; + int current_setpos_index = 1; + if("NULL" && strlen("NULL")) + stracpy(_Origin_var._parameters.profile, "NULL" ? "NULL" : "", 16384); + else + _Origin_var._parameters.profile[0]='\0'; + _Origin_var._parameters.percent = 10; + _Origin_var._parameters.flag_save = 0; + _Origin_var._parameters.minutes = 0; + + + /* component Origin=Progress_bar() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(_Origin_var._rotation_absolute, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_copy(_Origin_var._rotation_relative, _Origin_var._rotation_absolute); + _Origin_var._rotation_is_identity = rot_test_identity(_Origin_var._rotation_relative); + _Origin_var._position_absolute = coords_set( + 0, 0, 0); + tc1 = coords_neg(_Origin_var._position_absolute); + _Origin_var._position_relative = rot_apply(_Origin_var._rotation_absolute, tc1); + } /* Origin=Progress_bar() AT ROTATED */ + DEBUG_COMPONENT("Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute); + instrument->_position_absolute[1] = _Origin_var._position_absolute; + instrument->_position_relative[1] = _Origin_var._position_relative; + _Origin_var._position_relative_is_zero = coords_test_zero(_Origin_var._position_relative); + instrument->counter_N[1] = instrument->counter_P[1] = instrument->counter_P2[1] = 0; + instrument->counter_AbsorbProp[1]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0000_Origin", _Origin_var._position_absolute, _Origin_var._rotation_absolute, "Progress_bar"); + mccomp_param_nexus(nxhandle,"0000_Origin", "profile", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0000_Origin", "percent", "10", "10","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "flag_save", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0000_Origin", "minutes", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Origin_setpos */ + +/* component vinROT2=Arm() SETTING, POSITION/ROTATION */ +int _vinROT2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_vinROT2_setpos] component vinROT2=Arm() SETTING [Arm:0]"); + stracpy(_vinROT2_var._name, "vinROT2", 16384); + stracpy(_vinROT2_var._type, "Arm", 16384); + _vinROT2_var._index=2; + int current_setpos_index = 2; + /* component vinROT2=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (-90)*DEG2RAD, (0)*DEG2RAD); + rot_mul(tr1, _Origin_var._rotation_absolute, _vinROT2_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_vinROT2_var._rotation_absolute, tr1, _vinROT2_var._rotation_relative); + _vinROT2_var._rotation_is_identity = rot_test_identity(_vinROT2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Origin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _vinROT2_var._position_absolute = coords_add(_Origin_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _vinROT2_var._position_absolute); + _vinROT2_var._position_relative = rot_apply(_vinROT2_var._rotation_absolute, tc1); + } /* vinROT2=Arm() AT ROTATED */ + DEBUG_COMPONENT("vinROT2", _vinROT2_var._position_absolute, _vinROT2_var._rotation_absolute); + instrument->_position_absolute[2] = _vinROT2_var._position_absolute; + instrument->_position_relative[2] = _vinROT2_var._position_relative; + _vinROT2_var._position_relative_is_zero = coords_test_zero(_vinROT2_var._position_relative); + instrument->counter_N[2] = instrument->counter_P[2] = instrument->counter_P2[2] = 0; + instrument->counter_AbsorbProp[2]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0001_vinROT2", _vinROT2_var._position_absolute, _vinROT2_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _vinROT2_setpos */ + +/* component vinROT1=Arm() SETTING, POSITION/ROTATION */ +int _vinROT1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_vinROT1_setpos] component vinROT1=Arm() SETTING [Arm:0]"); + stracpy(_vinROT1_var._name, "vinROT1", 16384); + stracpy(_vinROT1_var._type, "Arm", 16384); + _vinROT1_var._index=3; + int current_setpos_index = 3; + /* component vinROT1=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (-90)*DEG2RAD, (0)*DEG2RAD, (0)*DEG2RAD); + rot_mul(tr1, _vinROT2_var._rotation_absolute, _vinROT1_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_vinROT1_var._rotation_absolute, tr1, _vinROT1_var._rotation_relative); + _vinROT1_var._rotation_is_identity = rot_test_identity(_vinROT1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_vinROT2_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _vinROT1_var._position_absolute = coords_add(_vinROT2_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _vinROT1_var._position_absolute); + _vinROT1_var._position_relative = rot_apply(_vinROT1_var._rotation_absolute, tc1); + } /* vinROT1=Arm() AT ROTATED */ + DEBUG_COMPONENT("vinROT1", _vinROT1_var._position_absolute, _vinROT1_var._rotation_absolute); + instrument->_position_absolute[3] = _vinROT1_var._position_absolute; + instrument->_position_relative[3] = _vinROT1_var._position_relative; + _vinROT1_var._position_relative_is_zero = coords_test_zero(_vinROT1_var._position_relative); + instrument->counter_N[3] = instrument->counter_P[3] = instrument->counter_P2[3] = 0; + instrument->counter_AbsorbProp[3]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0002_vinROT1", _vinROT1_var._position_absolute, _vinROT1_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _vinROT1_setpos */ + +/* component vin=MCPL_input_once() SETTING, POSITION/ROTATION */ +int _vin_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_vin_setpos] component vin=MCPL_input_once() SETTING [MCPL_input_once:0]"); + stracpy(_vin_var._name, "vin", 16384); + stracpy(_vin_var._type, "MCPL_input_once", 16384); + _vin_var._index=4; + int current_setpos_index = 4; + if(MCPLfile && strlen(MCPLfile)) + stracpy(_vin_var._parameters.filename, MCPLfile ? MCPLfile : "", 16384); + else + _vin_var._parameters.filename[0]='\0'; + _vin_var._parameters.polarisationuse = 1; + _vin_var._parameters.Emin = 0; + _vin_var._parameters.Emax = FLT_MAX; + _vin_var._parameters.v_smear = _instrument_var._parameters.v_smear; + _vin_var._parameters.pos_smear = _instrument_var._parameters.pos_smear; + _vin_var._parameters.dir_smear = _instrument_var._parameters.dir_smear; + _vin_var._parameters.always_smear = 0; + _vin_var._parameters.preload = 0; + _vin_var._parameters.verbose = 1; + + + /* component vin=MCPL_input_once() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _vinROT1_var._rotation_absolute, _vin_var._rotation_absolute); + rot_transpose(_Origin_var._rotation_absolute, tr1); + rot_mul(_vin_var._rotation_absolute, tr1, _vin_var._rotation_relative); + _vin_var._rotation_is_identity = rot_test_identity(_vin_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_vinROT1_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _vin_var._position_absolute = coords_add(_vinROT1_var._position_absolute, tc2); + tc1 = coords_sub(_Origin_var._position_absolute, _vin_var._position_absolute); + _vin_var._position_relative = rot_apply(_vin_var._rotation_absolute, tc1); + } /* vin=MCPL_input_once() AT ROTATED */ + DEBUG_COMPONENT("vin", _vin_var._position_absolute, _vin_var._rotation_absolute); + instrument->_position_absolute[4] = _vin_var._position_absolute; + instrument->_position_relative[4] = _vin_var._position_relative; + _vin_var._position_relative_is_zero = coords_test_zero(_vin_var._position_relative); + instrument->counter_N[4] = instrument->counter_P[4] = instrument->counter_P2[4] = 0; + instrument->counter_AbsorbProp[4]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0003_vin", _vin_var._position_absolute, _vin_var._rotation_absolute, "MCPL_input_once"); + mccomp_param_nexus(nxhandle,"0003_vin", "filename", 0, MCPLfile, "char*"); + mccomp_param_nexus(nxhandle,"0003_vin", "polarisationuse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "Emin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "Emax", "FLT_MAX", "FLT_MAX","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "v_smear", "0", "_instrument_var._parameters.v_smear","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "pos_smear", "0", "_instrument_var._parameters.pos_smear","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "dir_smear", "0", "_instrument_var._parameters.dir_smear","MCNUM"); + mccomp_param_nexus(nxhandle,"0003_vin", "always_smear", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0003_vin", "preload", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0003_vin", "verbose", "0", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _vin_setpos */ + +/* component Sphere1=PSD_monitor_4PI() SETTING, POSITION/ROTATION */ +int _Sphere1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Sphere1_setpos] component Sphere1=PSD_monitor_4PI() SETTING [PSD_monitor_4PI:0]"); + stracpy(_Sphere1_var._name, "Sphere1", 16384); + stracpy(_Sphere1_var._type, "PSD_monitor_4PI", 16384); + _Sphere1_var._index=5; + int current_setpos_index = 5; + _Sphere1_var._parameters.nx = 90; + _Sphere1_var._parameters.ny = 90; + if("nonrotated" && strlen("nonrotated")) + stracpy(_Sphere1_var._parameters.filename, "nonrotated" ? "nonrotated" : "", 16384); + else + _Sphere1_var._parameters.filename[0]='\0'; + _Sphere1_var._parameters.nowritefile = 0; + _Sphere1_var._parameters.radius = 2.4; + _Sphere1_var._parameters.restore_neutron = 1; + + + /* component Sphere1=PSD_monitor_4PI() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _vin_var._rotation_absolute, _Sphere1_var._rotation_absolute); + rot_transpose(_vin_var._rotation_absolute, tr1); + rot_mul(_Sphere1_var._rotation_absolute, tr1, _Sphere1_var._rotation_relative); + _Sphere1_var._rotation_is_identity = rot_test_identity(_Sphere1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_vin_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Sphere1_var._position_absolute = coords_add(_vin_var._position_absolute, tc2); + tc1 = coords_sub(_vin_var._position_absolute, _Sphere1_var._position_absolute); + _Sphere1_var._position_relative = rot_apply(_Sphere1_var._rotation_absolute, tc1); + } /* Sphere1=PSD_monitor_4PI() AT ROTATED */ + DEBUG_COMPONENT("Sphere1", _Sphere1_var._position_absolute, _Sphere1_var._rotation_absolute); + instrument->_position_absolute[5] = _Sphere1_var._position_absolute; + instrument->_position_relative[5] = _Sphere1_var._position_relative; + _Sphere1_var._position_relative_is_zero = coords_test_zero(_Sphere1_var._position_relative); + instrument->counter_N[5] = instrument->counter_P[5] = instrument->counter_P2[5] = 0; + instrument->counter_AbsorbProp[5]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0004_Sphere1", _Sphere1_var._position_absolute, _Sphere1_var._rotation_absolute, "PSD_monitor_4PI"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "nx", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "ny", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "filename", 0, "nonrotated", "char*"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "radius", "1", "2.4","MCNUM"); + mccomp_param_nexus(nxhandle,"0004_Sphere1", "restore_neutron", "0", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Sphere1_setpos */ + +/* component Source=ESS_butterfly() SETTING, POSITION/ROTATION */ +int _Source_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Source_setpos] component Source=ESS_butterfly() SETTING [ESS_butterfly:0]"); + stracpy(_Source_var._name, "Source", 16384); + stracpy(_Source_var._type, "ESS_butterfly", 16384); + _Source_var._index=6; + int current_setpos_index = 6; + if("S" && strlen("S")) + stracpy(_Source_var._parameters.sector, "S" ? "S" : "", 16384); + else + _Source_var._parameters.sector[0]='\0'; + _Source_var._parameters.beamline = 2; + _Source_var._parameters.yheight = 0.03; + _Source_var._parameters.cold_frac = 0.5; + _Source_var._parameters.target_index = 1; + _Source_var._parameters.dist = 0; + _Source_var._parameters.focus_xw = 0.0576862; + _Source_var._parameters.focus_yh = 0.0464308; + _Source_var._parameters.c_performance = 1; + _Source_var._parameters.t_performance = 1; + _Source_var._parameters.Lmin = _instrument_var._parameters.l_min; + _Source_var._parameters.Lmax = _instrument_var._parameters.l_max; + _Source_var._parameters.tmax_multiplier = 3; + _Source_var._parameters.n_pulses = _instrument_var._parameters.n_pulses; + _Source_var._parameters.acc_power = 2.0; + _Source_var._parameters.tfocus_dist = 0; + _Source_var._parameters.tfocus_time = 0; + _Source_var._parameters.tfocus_width = 0; + _Source_var._parameters.target_tsplit = 5; + + + /* component Source=ESS_butterfly() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(_Source_var._rotation_absolute, + (0)*DEG2RAD, (ANGLE)*DEG2RAD, (0)*DEG2RAD); + rot_transpose(_Sphere1_var._rotation_absolute, tr1); + rot_mul(_Source_var._rotation_absolute, tr1, _Source_var._rotation_relative); + _Source_var._rotation_is_identity = rot_test_identity(_Source_var._rotation_relative); + _Source_var._position_absolute = coords_set( + DeltaX, 0, DeltaZ); + tc1 = coords_sub(_Sphere1_var._position_absolute, _Source_var._position_absolute); + _Source_var._position_relative = rot_apply(_Source_var._rotation_absolute, tc1); + } /* Source=ESS_butterfly() AT ROTATED */ + DEBUG_COMPONENT("Source", _Source_var._position_absolute, _Source_var._rotation_absolute); + instrument->_position_absolute[6] = _Source_var._position_absolute; + instrument->_position_relative[6] = _Source_var._position_relative; + _Source_var._position_relative_is_zero = coords_test_zero(_Source_var._position_relative); + instrument->counter_N[6] = instrument->counter_P[6] = instrument->counter_P2[6] = 0; + instrument->counter_AbsorbProp[6]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0005_Source", _Source_var._position_absolute, _Source_var._rotation_absolute, "ESS_butterfly"); + mccomp_param_nexus(nxhandle,"0005_Source", "sector", "N", "S", "char*"); + mccomp_param_nexus(nxhandle,"0005_Source", "beamline", "1", "2","int"); + mccomp_param_nexus(nxhandle,"0005_Source", "yheight", "0.03", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "cold_frac", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "target_index", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0005_Source", "dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "focus_xw", "0", "0.0576862","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "focus_yh", "0", "0.0464308","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "c_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "t_performance", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "Lmin", "NONE", "_instrument_var._parameters.l_min","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "Lmax", "NONE", "_instrument_var._parameters.l_max","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "tmax_multiplier", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "n_pulses", "1", "_instrument_var._parameters.n_pulses","int"); + mccomp_param_nexus(nxhandle,"0005_Source", "acc_power", "5", "2.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "tfocus_dist", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "tfocus_time", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "tfocus_width", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0005_Source", "target_tsplit", "5", "5","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Source_setpos */ + +/* component optical_axis=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_setpos] component optical_axis=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_var._name, "optical_axis", 16384); + stracpy(_optical_axis_var._type, "Arm", 16384); + _optical_axis_var._index=7; + int current_setpos_index = 7; + /* component optical_axis=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Source_var._rotation_absolute, _optical_axis_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_optical_axis_var._rotation_absolute, tr1, _optical_axis_var._rotation_relative); + _optical_axis_var._rotation_is_identity = rot_test_identity(_optical_axis_var._rotation_relative); + tc1 = coords_set( + 0.026, 0, 0); + rot_transpose(_Source_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_var._position_absolute = coords_add(_Source_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _optical_axis_var._position_absolute); + _optical_axis_var._position_relative = rot_apply(_optical_axis_var._rotation_absolute, tc1); + } /* optical_axis=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute); + instrument->_position_absolute[7] = _optical_axis_var._position_absolute; + instrument->_position_relative[7] = _optical_axis_var._position_relative; + _optical_axis_var._position_relative_is_zero = coords_test_zero(_optical_axis_var._position_relative); + instrument->counter_N[7] = instrument->counter_P[7] = instrument->counter_P2[7] = 0; + instrument->counter_AbsorbProp[7]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0006_optical_axis", _optical_axis_var._position_absolute, _optical_axis_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_setpos */ + +/* component Sphere0=PSD_monitor_4PI() SETTING, POSITION/ROTATION */ +int _Sphere0_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Sphere0_setpos] component Sphere0=PSD_monitor_4PI() SETTING [PSD_monitor_4PI:0]"); + stracpy(_Sphere0_var._name, "Sphere0", 16384); + stracpy(_Sphere0_var._type, "PSD_monitor_4PI", 16384); + _Sphere0_var._index=8; + int current_setpos_index = 8; + _Sphere0_var._parameters.nx = 90; + _Sphere0_var._parameters.ny = 90; + if("rotated" && strlen("rotated")) + stracpy(_Sphere0_var._parameters.filename, "rotated" ? "rotated" : "", 16384); + else + _Sphere0_var._parameters.filename[0]='\0'; + _Sphere0_var._parameters.nowritefile = 0; + _Sphere0_var._parameters.radius = 2.2; + _Sphere0_var._parameters.restore_neutron = 1; + + + /* component Sphere0=PSD_monitor_4PI() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Source_var._rotation_absolute, _Sphere0_var._rotation_absolute); + rot_transpose(_Source_var._rotation_absolute, tr1); + rot_mul(_Sphere0_var._rotation_absolute, tr1, _Sphere0_var._rotation_relative); + _Sphere0_var._rotation_is_identity = rot_test_identity(_Sphere0_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Source_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Sphere0_var._position_absolute = coords_add(_Source_var._position_absolute, tc2); + tc1 = coords_sub(_Source_var._position_absolute, _Sphere0_var._position_absolute); + _Sphere0_var._position_relative = rot_apply(_Sphere0_var._rotation_absolute, tc1); + } /* Sphere0=PSD_monitor_4PI() AT ROTATED */ + DEBUG_COMPONENT("Sphere0", _Sphere0_var._position_absolute, _Sphere0_var._rotation_absolute); + instrument->_position_absolute[8] = _Sphere0_var._position_absolute; + instrument->_position_relative[8] = _Sphere0_var._position_relative; + _Sphere0_var._position_relative_is_zero = coords_test_zero(_Sphere0_var._position_relative); + instrument->counter_N[8] = instrument->counter_P[8] = instrument->counter_P2[8] = 0; + instrument->counter_AbsorbProp[8]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0007_Sphere0", _Sphere0_var._position_absolute, _Sphere0_var._rotation_absolute, "PSD_monitor_4PI"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "nx", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "ny", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "filename", 0, "rotated", "char*"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "radius", "1", "2.2","MCNUM"); + mccomp_param_nexus(nxhandle,"0007_Sphere0", "restore_neutron", "0", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Sphere0_setpos */ + +/* component Focus_cut=Shape() SETTING, POSITION/ROTATION */ +int _Focus_cut_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Focus_cut_setpos] component Focus_cut=Shape() SETTING [Shape:0]"); + stracpy(_Focus_cut_var._name, "Focus_cut", 16384); + stracpy(_Focus_cut_var._type, "Shape", 16384); + _Focus_cut_var._index=9; + int current_setpos_index = 9; + _Focus_cut_var._parameters.geometry[0]='\0'; + _Focus_cut_var._parameters.radius = 0; + _Focus_cut_var._parameters.xwidth = 0.01; + _Focus_cut_var._parameters.yheight = 0.01; + _Focus_cut_var._parameters.zdepth = 0; + _Focus_cut_var._parameters.thickness = 0; + _Focus_cut_var._parameters.nx = 0; + _Focus_cut_var._parameters.ny = 1; + _Focus_cut_var._parameters.nz = 0; + _Focus_cut_var._parameters.center = 1; + + + /* component Focus_cut=Shape() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Source_var._rotation_absolute, _Focus_cut_var._rotation_absolute); + rot_transpose(_Sphere0_var._rotation_absolute, tr1); + rot_mul(_Focus_cut_var._rotation_absolute, tr1, _Focus_cut_var._rotation_relative); + _Focus_cut_var._rotation_is_identity = rot_test_identity(_Focus_cut_var._rotation_relative); + tc1 = coords_set( + 0, 0, 2); + rot_transpose(_Source_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Focus_cut_var._position_absolute = coords_add(_Source_var._position_absolute, tc2); + tc1 = coords_sub(_Sphere0_var._position_absolute, _Focus_cut_var._position_absolute); + _Focus_cut_var._position_relative = rot_apply(_Focus_cut_var._rotation_absolute, tc1); + } /* Focus_cut=Shape() AT ROTATED */ + DEBUG_COMPONENT("Focus_cut", _Focus_cut_var._position_absolute, _Focus_cut_var._rotation_absolute); + instrument->_position_absolute[9] = _Focus_cut_var._position_absolute; + instrument->_position_relative[9] = _Focus_cut_var._position_relative; + _Focus_cut_var._position_relative_is_zero = coords_test_zero(_Focus_cut_var._position_relative); + instrument->counter_N[9] = instrument->counter_P[9] = instrument->counter_P2[9] = 0; + instrument->counter_AbsorbProp[9]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0008_Focus_cut", _Focus_cut_var._position_absolute, _Focus_cut_var._rotation_absolute, "Shape"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "geometry", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "xwidth", "0", "0.01","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "yheight", "0", "0.01","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "thickness", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "nx", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "ny", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "nz", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0008_Focus_cut", "center", "1", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Focus_cut_setpos */ + +/* component PSD_cut=PSD_monitor() SETTING, POSITION/ROTATION */ +int _PSD_cut_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_PSD_cut_setpos] component PSD_cut=PSD_monitor() SETTING [PSD_monitor:0]"); + stracpy(_PSD_cut_var._name, "PSD_cut", 16384); + stracpy(_PSD_cut_var._type, "PSD_monitor", 16384); + _PSD_cut_var._index=10; + int current_setpos_index = 10; + _PSD_cut_var._parameters.nx = 90; + _PSD_cut_var._parameters.ny = 90; + _PSD_cut_var._parameters.filename[0]='\0'; + _PSD_cut_var._parameters.xmin = -0.05; + _PSD_cut_var._parameters.xmax = 0.05; + _PSD_cut_var._parameters.ymin = -0.05; + _PSD_cut_var._parameters.ymax = 0.05; + _PSD_cut_var._parameters.xwidth = 0.01; + _PSD_cut_var._parameters.yheight = 0.01; + _PSD_cut_var._parameters.restore_neutron = 1; + _PSD_cut_var._parameters.nowritefile = 0; + + + /* component PSD_cut=PSD_monitor() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Focus_cut_var._rotation_absolute, _PSD_cut_var._rotation_absolute); + rot_transpose(_Focus_cut_var._rotation_absolute, tr1); + rot_mul(_PSD_cut_var._rotation_absolute, tr1, _PSD_cut_var._rotation_relative); + _PSD_cut_var._rotation_is_identity = rot_test_identity(_PSD_cut_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Focus_cut_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _PSD_cut_var._position_absolute = coords_add(_Focus_cut_var._position_absolute, tc2); + tc1 = coords_sub(_Focus_cut_var._position_absolute, _PSD_cut_var._position_absolute); + _PSD_cut_var._position_relative = rot_apply(_PSD_cut_var._rotation_absolute, tc1); + } /* PSD_cut=PSD_monitor() AT ROTATED */ + DEBUG_COMPONENT("PSD_cut", _PSD_cut_var._position_absolute, _PSD_cut_var._rotation_absolute); + instrument->_position_absolute[10] = _PSD_cut_var._position_absolute; + instrument->_position_relative[10] = _PSD_cut_var._position_relative; + _PSD_cut_var._position_relative_is_zero = coords_test_zero(_PSD_cut_var._position_relative); + instrument->counter_N[10] = instrument->counter_P[10] = instrument->counter_P2[10] = 0; + instrument->counter_AbsorbProp[10]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0009_PSD_cut", _PSD_cut_var._position_absolute, _PSD_cut_var._rotation_absolute, "PSD_monitor"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "nx", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "ny", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "filename", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "xmin", "-0.05", "-0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "xmax", "0.05", "0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "ymin", "-0.05", "-0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "ymax", "0.05", "0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "xwidth", "0", "0.01","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "yheight", "0", "0.01","MCNUM"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "restore_neutron", "0", "1","int"); + mccomp_param_nexus(nxhandle,"0009_PSD_cut", "nowritefile", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _PSD_cut_setpos */ + +/* component BackTrace=Shape() SETTING, POSITION/ROTATION */ +int _BackTrace_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_BackTrace_setpos] component BackTrace=Shape() SETTING [Shape:0]"); + stracpy(_BackTrace_var._name, "BackTrace", 16384); + stracpy(_BackTrace_var._type, "Shape", 16384); + _BackTrace_var._index=11; + int current_setpos_index = 11; + _BackTrace_var._parameters.geometry[0]='\0'; + _BackTrace_var._parameters.radius = 0; + _BackTrace_var._parameters.xwidth = 0.3; + _BackTrace_var._parameters.yheight = 0.3; + _BackTrace_var._parameters.zdepth = 0; + _BackTrace_var._parameters.thickness = 0; + _BackTrace_var._parameters.nx = 0; + _BackTrace_var._parameters.ny = 1; + _BackTrace_var._parameters.nz = 0; + _BackTrace_var._parameters.center = 1; + + + /* component BackTrace=Shape() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _Source_var._rotation_absolute, _BackTrace_var._rotation_absolute); + rot_transpose(_PSD_cut_var._rotation_absolute, tr1); + rot_mul(_BackTrace_var._rotation_absolute, tr1, _BackTrace_var._rotation_relative); + _BackTrace_var._rotation_is_identity = rot_test_identity(_BackTrace_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.08); + rot_transpose(_Source_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _BackTrace_var._position_absolute = coords_add(_Source_var._position_absolute, tc2); + tc1 = coords_sub(_PSD_cut_var._position_absolute, _BackTrace_var._position_absolute); + _BackTrace_var._position_relative = rot_apply(_BackTrace_var._rotation_absolute, tc1); + } /* BackTrace=Shape() AT ROTATED */ + DEBUG_COMPONENT("BackTrace", _BackTrace_var._position_absolute, _BackTrace_var._rotation_absolute); + instrument->_position_absolute[11] = _BackTrace_var._position_absolute; + instrument->_position_relative[11] = _BackTrace_var._position_relative; + _BackTrace_var._position_relative_is_zero = coords_test_zero(_BackTrace_var._position_relative); + instrument->counter_N[11] = instrument->counter_P[11] = instrument->counter_P2[11] = 0; + instrument->counter_AbsorbProp[11]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0010_BackTrace", _BackTrace_var._position_absolute, _BackTrace_var._rotation_absolute, "Shape"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "geometry", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "thickness", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "nx", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "ny", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "nz", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0010_BackTrace", "center", "1", "1","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _BackTrace_setpos */ + +/* component PSD_Backtrace=PSD_monitor() SETTING, POSITION/ROTATION */ +int _PSD_Backtrace_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_PSD_Backtrace_setpos] component PSD_Backtrace=PSD_monitor() SETTING [PSD_monitor:0]"); + stracpy(_PSD_Backtrace_var._name, "PSD_Backtrace", 16384); + stracpy(_PSD_Backtrace_var._type, "PSD_monitor", 16384); + _PSD_Backtrace_var._index=12; + int current_setpos_index = 12; + _PSD_Backtrace_var._parameters.nx = 90; + _PSD_Backtrace_var._parameters.ny = 90; + _PSD_Backtrace_var._parameters.filename[0]='\0'; + _PSD_Backtrace_var._parameters.xmin = -0.05; + _PSD_Backtrace_var._parameters.xmax = 0.05; + _PSD_Backtrace_var._parameters.ymin = -0.05; + _PSD_Backtrace_var._parameters.ymax = 0.05; + _PSD_Backtrace_var._parameters.xwidth = 0.3; + _PSD_Backtrace_var._parameters.yheight = 0.3; + _PSD_Backtrace_var._parameters.restore_neutron = 0; + _PSD_Backtrace_var._parameters.nowritefile = 0; + + + /* component PSD_Backtrace=PSD_monitor() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _BackTrace_var._rotation_absolute, _PSD_Backtrace_var._rotation_absolute); + rot_transpose(_BackTrace_var._rotation_absolute, tr1); + rot_mul(_PSD_Backtrace_var._rotation_absolute, tr1, _PSD_Backtrace_var._rotation_relative); + _PSD_Backtrace_var._rotation_is_identity = rot_test_identity(_PSD_Backtrace_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_BackTrace_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _PSD_Backtrace_var._position_absolute = coords_add(_BackTrace_var._position_absolute, tc2); + tc1 = coords_sub(_BackTrace_var._position_absolute, _PSD_Backtrace_var._position_absolute); + _PSD_Backtrace_var._position_relative = rot_apply(_PSD_Backtrace_var._rotation_absolute, tc1); + } /* PSD_Backtrace=PSD_monitor() AT ROTATED */ + DEBUG_COMPONENT("PSD_Backtrace", _PSD_Backtrace_var._position_absolute, _PSD_Backtrace_var._rotation_absolute); + instrument->_position_absolute[12] = _PSD_Backtrace_var._position_absolute; + instrument->_position_relative[12] = _PSD_Backtrace_var._position_relative; + _PSD_Backtrace_var._position_relative_is_zero = coords_test_zero(_PSD_Backtrace_var._position_relative); + instrument->counter_N[12] = instrument->counter_P[12] = instrument->counter_P2[12] = 0; + instrument->counter_AbsorbProp[12]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0011_PSD_Backtrace", _PSD_Backtrace_var._position_absolute, _PSD_Backtrace_var._rotation_absolute, "PSD_monitor"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "nx", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "ny", "90", "90","int"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "filename", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "xmin", "-0.05", "-0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "xmax", "0.05", "0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "ymin", "-0.05", "-0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "ymax", "0.05", "0.05","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0011_PSD_Backtrace", "nowritefile", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _PSD_Backtrace_setpos */ + +/* component Start_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _Start_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_Start_of_bi_setpos] component Start_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_Start_of_bi_var._name, "Start_of_bi", 16384); + stracpy(_Start_of_bi_var._type, "Arm", 16384); + _Start_of_bi_var._index=13; + int current_setpos_index = 13; + /* component Start_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _Start_of_bi_var._rotation_absolute); + rot_transpose(_PSD_Backtrace_var._rotation_absolute, tr1); + rot_mul(_Start_of_bi_var._rotation_absolute, tr1, _Start_of_bi_var._rotation_relative); + _Start_of_bi_var._rotation_is_identity = rot_test_identity(_Start_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 2.0306); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _Start_of_bi_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_PSD_Backtrace_var._position_absolute, _Start_of_bi_var._position_absolute); + _Start_of_bi_var._position_relative = rot_apply(_Start_of_bi_var._rotation_absolute, tc1); + } /* Start_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute); + instrument->_position_absolute[13] = _Start_of_bi_var._position_absolute; + instrument->_position_relative[13] = _Start_of_bi_var._position_relative; + _Start_of_bi_var._position_relative_is_zero = coords_test_zero(_Start_of_bi_var._position_relative); + instrument->counter_N[13] = instrument->counter_P[13] = instrument->counter_P2[13] = 0; + instrument->counter_AbsorbProp[13]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0012_Start_of_bi", _Start_of_bi_var._position_absolute, _Start_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _Start_of_bi_setpos */ + +/* component bi=bi_spec_ellipse() SETTING, POSITION/ROTATION */ +int _bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bi_setpos] component bi=bi_spec_ellipse() SETTING [bi_spec_ellipse:0]"); + stracpy(_bi_var._name, "bi", 16384); + stracpy(_bi_var._type, "bi_spec_ellipse", 16384); + _bi_var._index=14; + int current_setpos_index = 14; + _bi_var._parameters.xheight = 0.044795; + _bi_var._parameters.ywidth = 0.033273; + _bi_var._parameters.zlength = 0.3; + _bi_var._parameters.n_mirror = 0; + _bi_var._parameters.tilt = 0.7355449343006287; + _bi_var._parameters.n_pieces = 1; + _bi_var._parameters.angular_offset = 0.0274924630093546; + _bi_var._parameters.m = 4; + _bi_var._parameters.R0_m = 0.99; + _bi_var._parameters.Qc_m = 0.0217; + _bi_var._parameters.alpha_mirror_m = 2.5; + _bi_var._parameters.W_m = 0.015; + _bi_var._parameters.transmit = 1; + _bi_var._parameters.d_focus_1_x = 3.443249331959489; + _bi_var._parameters.d_focus_2_x = 4.946749331959489; + _bi_var._parameters.d_focus_1_y = 1.9037386467676676; + _bi_var._parameters.d_focus_2_y = 33.78623864676767; + _bi_var._parameters.ell_l = 0.31; + _bi_var._parameters.ell_h = 0.04381396598275876; + _bi_var._parameters.ell_w = 0.03326371014826339; + _bi_var._parameters.ell_m = 4; + _bi_var._parameters.R0 = 0.99; + _bi_var._parameters.Qc = 0.0217; + _bi_var._parameters.alpha_mirror = 2.5; + _bi_var._parameters.W = 0.0015; + _bi_var._parameters.cut = 3; + _bi_var._parameters.substrate = 0; + _bi_var._parameters.reflect_mirror[0]='\0'; + _bi_var._parameters.reflect[0]='\0'; + + + /* component bi=bi_spec_ellipse() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _Start_of_bi_var._rotation_absolute, _bi_var._rotation_absolute); + rot_transpose(_PSD_Backtrace_var._rotation_absolute, tr1); + rot_mul(_bi_var._rotation_absolute, tr1, _bi_var._rotation_relative); + _bi_var._rotation_is_identity = rot_test_identity(_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_Start_of_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bi_var._position_absolute = coords_add(_Start_of_bi_var._position_absolute, tc2); + tc1 = coords_sub(_PSD_Backtrace_var._position_absolute, _bi_var._position_absolute); + _bi_var._position_relative = rot_apply(_bi_var._rotation_absolute, tc1); + } /* bi=bi_spec_ellipse() AT ROTATED */ + DEBUG_COMPONENT("bi", _bi_var._position_absolute, _bi_var._rotation_absolute); + instrument->_position_absolute[14] = _bi_var._position_absolute; + instrument->_position_relative[14] = _bi_var._position_relative; + _bi_var._position_relative_is_zero = coords_test_zero(_bi_var._position_relative); + instrument->counter_N[14] = instrument->counter_P[14] = instrument->counter_P2[14] = 0; + instrument->counter_AbsorbProp[14]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0013_bi", _bi_var._position_absolute, _bi_var._rotation_absolute, "bi_spec_ellipse"); + mccomp_param_nexus(nxhandle,"0013_bi", "xheight", "NONE", "0.044795","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ywidth", "NONE", "0.033273","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "zlength", "NONE", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "n_mirror", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "tilt", "0.5", "0.7355449343006287","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "n_pieces", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "angular_offset", "0", "0.0274924630093546","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "R0_m", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "Qc_m", "0.021", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "alpha_mirror_m", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "W_m", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "transmit", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "d_focus_1_x", "2.5", "3.443249331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "d_focus_2_x", "5", "4.946749331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "d_focus_1_y", "2.5", "1.9037386467676676","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "d_focus_2_y", "5", "33.78623864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ell_l", "3", "0.31","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ell_h", "0", "0.04381396598275876","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ell_w", "0", "0.03326371014826339","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "ell_m", "2", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "Qc", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "alpha_mirror", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "W", "0.003", "0.0015","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "cut", "3", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "substrate", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0013_bi", "reflect_mirror", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0013_bi", "reflect", 0, 0, "char*"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bi_setpos */ + +/* component End_of_bi=Arm() SETTING, POSITION/ROTATION */ +int _End_of_bi_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_End_of_bi_setpos] component End_of_bi=Arm() SETTING [Arm:0]"); + stracpy(_End_of_bi_var._name, "End_of_bi", 16384); + stracpy(_End_of_bi_var._type, "Arm", 16384); + _End_of_bi_var._index=15; + int current_setpos_index = 15; + /* component End_of_bi=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (-180)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _End_of_bi_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_End_of_bi_var._rotation_absolute, tr1, _End_of_bi_var._rotation_relative); + _End_of_bi_var._rotation_is_identity = rot_test_identity(_End_of_bi_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _End_of_bi_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _End_of_bi_var._position_absolute); + _End_of_bi_var._position_relative = rot_apply(_End_of_bi_var._rotation_absolute, tc1); + } /* End_of_bi=Arm() AT ROTATED */ + DEBUG_COMPONENT("End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute); + instrument->_position_absolute[15] = _End_of_bi_var._position_absolute; + instrument->_position_relative[15] = _End_of_bi_var._position_relative; + _End_of_bi_var._position_relative_is_zero = coords_test_zero(_End_of_bi_var._position_relative); + instrument->counter_N[15] = instrument->counter_P[15] = instrument->counter_P2[15] = 0; + instrument->counter_AbsorbProp[15]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0014_End_of_bi", _End_of_bi_var._position_absolute, _End_of_bi_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _End_of_bi_setpos */ + +/* component NBOA_drawing_1_end=Guide_four_side() SETTING, POSITION/ROTATION */ +int _NBOA_drawing_1_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_NBOA_drawing_1_end_setpos] component NBOA_drawing_1_end=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_NBOA_drawing_1_end_var._name, "NBOA_drawing_1_end", 16384); + stracpy(_NBOA_drawing_1_end_var._type, "Guide_four_side", 16384); + _NBOA_drawing_1_end_var._index=16; + int current_setpos_index = 16; + _NBOA_drawing_1_end_var._parameters.RIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DIreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.ROreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.LOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.UOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.DOreflect[0]='\0'; + _NBOA_drawing_1_end_var._parameters.w1l = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2l = 0.002; + _NBOA_drawing_1_end_var._parameters.linwl = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwl = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.w1r = 0.022187; + _NBOA_drawing_1_end_var._parameters.w2r = 0.002; + _NBOA_drawing_1_end_var._parameters.linwr = 3.7532493319594886; + _NBOA_drawing_1_end_var._parameters.loutwr = 4.397849331959489; + _NBOA_drawing_1_end_var._parameters.h1u = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2u = 0.002; + _NBOA_drawing_1_end_var._parameters.linhu = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthu = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.h1d = 0.017858; + _NBOA_drawing_1_end_var._parameters.h2d = 0.002; + _NBOA_drawing_1_end_var._parameters.linhd = 2.213738646767668; + _NBOA_drawing_1_end_var._parameters.louthd = 33.23733864676767; + _NBOA_drawing_1_end_var._parameters.l = 0.5488999999999999; + _NBOA_drawing_1_end_var._parameters.R0 = 0.99; + _NBOA_drawing_1_end_var._parameters.Qcxl = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcxr = 0.0217; + _NBOA_drawing_1_end_var._parameters.Qcyu = 0.023; + _NBOA_drawing_1_end_var._parameters.Qcyd = 0.023; + _NBOA_drawing_1_end_var._parameters.alphaxl = 2.5; + _NBOA_drawing_1_end_var._parameters.alphaxr = 2.5; + _NBOA_drawing_1_end_var._parameters.alphayu = 1.8; + _NBOA_drawing_1_end_var._parameters.alphayd = 1.8; + _NBOA_drawing_1_end_var._parameters.Wxr = 0.015; + _NBOA_drawing_1_end_var._parameters.Wxl = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyu = 0.015; + _NBOA_drawing_1_end_var._parameters.Wyd = 0.015; + _NBOA_drawing_1_end_var._parameters.mxr = 4; + _NBOA_drawing_1_end_var._parameters.mxl = 4; + _NBOA_drawing_1_end_var._parameters.myu = 2; + _NBOA_drawing_1_end_var._parameters.myd = 2; + _NBOA_drawing_1_end_var._parameters.QcxrOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcxlOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcyuOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.QcydOW = 0.0217; + _NBOA_drawing_1_end_var._parameters.alphaxlOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaxrOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphayuOW = 6.07; + _NBOA_drawing_1_end_var._parameters.alphaydOW = 6.07; + _NBOA_drawing_1_end_var._parameters.WxrOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WxlOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WyuOW = 0.003; + _NBOA_drawing_1_end_var._parameters.WydOW = 0.003; + _NBOA_drawing_1_end_var._parameters.mxrOW = 0; + _NBOA_drawing_1_end_var._parameters.mxlOW = 0; + _NBOA_drawing_1_end_var._parameters.myuOW = 0; + _NBOA_drawing_1_end_var._parameters.mydOW = 0; + _NBOA_drawing_1_end_var._parameters.rwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.lwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.uwallthick = 0.001; + _NBOA_drawing_1_end_var._parameters.dwallthick = 0.001; + + + /* component NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _bi_var._rotation_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + rot_transpose(_bi_var._rotation_absolute, tr1); + rot_mul(_NBOA_drawing_1_end_var._rotation_absolute, tr1, _NBOA_drawing_1_end_var._rotation_relative); + _NBOA_drawing_1_end_var._rotation_is_identity = rot_test_identity(_NBOA_drawing_1_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.31000099999999997); + rot_transpose(_bi_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _NBOA_drawing_1_end_var._position_absolute = coords_add(_bi_var._position_absolute, tc2); + tc1 = coords_sub(_bi_var._position_absolute, _NBOA_drawing_1_end_var._position_absolute); + _NBOA_drawing_1_end_var._position_relative = rot_apply(_NBOA_drawing_1_end_var._rotation_absolute, tc1); + } /* NBOA_drawing_1_end=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute); + instrument->_position_absolute[16] = _NBOA_drawing_1_end_var._position_absolute; + instrument->_position_relative[16] = _NBOA_drawing_1_end_var._position_relative; + _NBOA_drawing_1_end_var._position_relative_is_zero = coords_test_zero(_NBOA_drawing_1_end_var._position_relative); + instrument->counter_N[16] = instrument->counter_P[16] = instrument->counter_P2[16] = 0; + instrument->counter_AbsorbProp[16]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0015_NBOA_drawing_1_end", _NBOA_drawing_1_end_var._position_absolute, _NBOA_drawing_1_end_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "w1l", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "linwl", "0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "loutwl", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "w1r", "0.002", "0.022187","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "linwr", "0.0", "3.7532493319594886","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "loutwr", "0", "4.397849331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "h1u", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "linhu", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "louthu", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "h1d", "0.002", "0.017858","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "linhd", "0.0", "2.213738646767668","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "louthd", "0", "33.23733864676767","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "l", "0", "0.5488999999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0015_NBOA_drawing_1_end", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _NBOA_drawing_1_end_setpos */ + +/* component g1a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a2_setpos] component g1a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a2_var._name, "g1a2", 16384); + stracpy(_g1a2_var._type, "Guide_four_side", 16384); + _g1a2_var._index=17; + int current_setpos_index = 17; + _g1a2_var._parameters.RIreflect[0]='\0'; + _g1a2_var._parameters.LIreflect[0]='\0'; + _g1a2_var._parameters.UIreflect[0]='\0'; + _g1a2_var._parameters.DIreflect[0]='\0'; + _g1a2_var._parameters.ROreflect[0]='\0'; + _g1a2_var._parameters.LOreflect[0]='\0'; + _g1a2_var._parameters.UOreflect[0]='\0'; + _g1a2_var._parameters.DOreflect[0]='\0'; + _g1a2_var._parameters.w1l = 0.022397711974319966; + _g1a2_var._parameters.w2l = 0.002; + _g1a2_var._parameters.linwl = 4.303349331959489; + _g1a2_var._parameters.loutwl = 3.3968493319594883; + _g1a2_var._parameters.w1r = 0.022397711974319966; + _g1a2_var._parameters.w2r = 0.002; + _g1a2_var._parameters.linwr = 4.303349331959489; + _g1a2_var._parameters.loutwr = 3.3968493319594883; + _g1a2_var._parameters.h1u = 0.019790525295492974; + _g1a2_var._parameters.h2u = 0.002; + _g1a2_var._parameters.linhu = 2.763788626121542; + _g1a2_var._parameters.louthu = 32.236388626121546; + _g1a2_var._parameters.h1d = 0.019790525295492974; + _g1a2_var._parameters.h2d = 0.002; + _g1a2_var._parameters.linhd = 2.763788626121542; + _g1a2_var._parameters.louthd = 32.236388626121546; + _g1a2_var._parameters.l = 0.9998; + _g1a2_var._parameters.R0 = 0.99; + _g1a2_var._parameters.Qcxl = 0.0217; + _g1a2_var._parameters.Qcxr = 0.0217; + _g1a2_var._parameters.Qcyu = 0.0217; + _g1a2_var._parameters.Qcyd = 0.0217; + _g1a2_var._parameters.alphaxl = 2.5; + _g1a2_var._parameters.alphaxr = 2.5; + _g1a2_var._parameters.alphayu = 2.5; + _g1a2_var._parameters.alphayd = 2.5; + _g1a2_var._parameters.Wxr = 0.015; + _g1a2_var._parameters.Wxl = 0.015; + _g1a2_var._parameters.Wyu = 0.015; + _g1a2_var._parameters.Wyd = 0.015; + _g1a2_var._parameters.mxr = 4; + _g1a2_var._parameters.mxl = 4; + _g1a2_var._parameters.myu = 4; + _g1a2_var._parameters.myd = 4; + _g1a2_var._parameters.QcxrOW = 0.0217; + _g1a2_var._parameters.QcxlOW = 0.0217; + _g1a2_var._parameters.QcyuOW = 0.0217; + _g1a2_var._parameters.QcydOW = 0.0217; + _g1a2_var._parameters.alphaxlOW = 6.07; + _g1a2_var._parameters.alphaxrOW = 6.07; + _g1a2_var._parameters.alphayuOW = 6.07; + _g1a2_var._parameters.alphaydOW = 6.07; + _g1a2_var._parameters.WxrOW = 0.003; + _g1a2_var._parameters.WxlOW = 0.003; + _g1a2_var._parameters.WyuOW = 0.003; + _g1a2_var._parameters.WydOW = 0.003; + _g1a2_var._parameters.mxrOW = 0; + _g1a2_var._parameters.mxlOW = 0; + _g1a2_var._parameters.myuOW = 0; + _g1a2_var._parameters.mydOW = 0; + _g1a2_var._parameters.rwallthick = 0.001; + _g1a2_var._parameters.lwallthick = 0.001; + _g1a2_var._parameters.uwallthick = 0.001; + _g1a2_var._parameters.dwallthick = 0.001; + + + /* component g1a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _NBOA_drawing_1_end_var._rotation_absolute, _g1a2_var._rotation_absolute); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + rot_mul(_g1a2_var._rotation_absolute, tr1, _g1a2_var._rotation_relative); + _g1a2_var._rotation_is_identity = rot_test_identity(_g1a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.548901); + rot_transpose(_NBOA_drawing_1_end_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a2_var._position_absolute = coords_add(_NBOA_drawing_1_end_var._position_absolute, tc2); + tc1 = coords_sub(_NBOA_drawing_1_end_var._position_absolute, _g1a2_var._position_absolute); + _g1a2_var._position_relative = rot_apply(_g1a2_var._rotation_absolute, tc1); + } /* g1a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute); + instrument->_position_absolute[17] = _g1a2_var._position_absolute; + instrument->_position_relative[17] = _g1a2_var._position_relative; + _g1a2_var._position_relative_is_zero = coords_test_zero(_g1a2_var._position_relative); + instrument->counter_N[17] = instrument->counter_P[17] = instrument->counter_P2[17] = 0; + instrument->counter_AbsorbProp[17]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0016_g1a2", _g1a2_var._position_absolute, _g1a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "w1l", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "linwl", "0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "loutwl", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "w1r", "0.002", "0.022397711974319966","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "linwr", "0.0", "4.303349331959489","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "loutwr", "0", "3.3968493319594883","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "h1u", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "linhu", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "louthu", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "h1d", "0.002", "0.019790525295492974","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "linhd", "0.0", "2.763788626121542","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "louthd", "0", "32.236388626121546","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "l", "0", "0.9998","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0016_g1a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a2_setpos */ + +/* component g1a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1a3_setpos] component g1a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1a3_var._name, "g1a3", 16384); + stracpy(_g1a3_var._type, "Guide_four_side", 16384); + _g1a3_var._index=18; + int current_setpos_index = 18; + _g1a3_var._parameters.RIreflect[0]='\0'; + _g1a3_var._parameters.LIreflect[0]='\0'; + _g1a3_var._parameters.UIreflect[0]='\0'; + _g1a3_var._parameters.DIreflect[0]='\0'; + _g1a3_var._parameters.ROreflect[0]='\0'; + _g1a3_var._parameters.LOreflect[0]='\0'; + _g1a3_var._parameters.UOreflect[0]='\0'; + _g1a3_var._parameters.DOreflect[0]='\0'; + _g1a3_var._parameters.w1l = 0.021853309009560024; + _g1a3_var._parameters.w2l = 0.002; + _g1a3_var._parameters.linwl = 5.3043493319594885; + _g1a3_var._parameters.loutwl = 1.8968293319594889; + _g1a3_var._parameters.w1r = 0.021853309009560024; + _g1a3_var._parameters.w2r = 0.002; + _g1a3_var._parameters.linwr = 5.3043493319594885; + _g1a3_var._parameters.loutwr = 1.8968293319594889; + _g1a3_var._parameters.h1u = 0.02274764602619812; + _g1a3_var._parameters.h2u = 0.002; + _g1a3_var._parameters.linhu = 3.7648386261215414; + _g1a3_var._parameters.louthu = 30.73631862612154; + _g1a3_var._parameters.h1d = 0.02274764602619812; + _g1a3_var._parameters.h2d = 0.002; + _g1a3_var._parameters.linhd = 3.7648386261215414; + _g1a3_var._parameters.louthd = 30.73631862612154; + _g1a3_var._parameters.l = 1.49882; + _g1a3_var._parameters.R0 = 0.99; + _g1a3_var._parameters.Qcxl = 0.0217; + _g1a3_var._parameters.Qcxr = 0.0217; + _g1a3_var._parameters.Qcyu = 0.0217; + _g1a3_var._parameters.Qcyd = 0.0217; + _g1a3_var._parameters.alphaxl = 2.5; + _g1a3_var._parameters.alphaxr = 2.5; + _g1a3_var._parameters.alphayu = 2.5; + _g1a3_var._parameters.alphayd = 2.5; + _g1a3_var._parameters.Wxr = 0.015; + _g1a3_var._parameters.Wxl = 0.015; + _g1a3_var._parameters.Wyu = 0.015; + _g1a3_var._parameters.Wyd = 0.015; + _g1a3_var._parameters.mxr = 4; + _g1a3_var._parameters.mxl = 4; + _g1a3_var._parameters.myu = 4; + _g1a3_var._parameters.myd = 4; + _g1a3_var._parameters.QcxrOW = 0.0217; + _g1a3_var._parameters.QcxlOW = 0.0217; + _g1a3_var._parameters.QcyuOW = 0.0217; + _g1a3_var._parameters.QcydOW = 0.0217; + _g1a3_var._parameters.alphaxlOW = 6.07; + _g1a3_var._parameters.alphaxrOW = 6.07; + _g1a3_var._parameters.alphayuOW = 6.07; + _g1a3_var._parameters.alphaydOW = 6.07; + _g1a3_var._parameters.WxrOW = 0.003; + _g1a3_var._parameters.WxlOW = 0.003; + _g1a3_var._parameters.WyuOW = 0.003; + _g1a3_var._parameters.WydOW = 0.003; + _g1a3_var._parameters.mxrOW = 0; + _g1a3_var._parameters.mxlOW = 0; + _g1a3_var._parameters.myuOW = 0; + _g1a3_var._parameters.mydOW = 0; + _g1a3_var._parameters.rwallthick = 0.001; + _g1a3_var._parameters.lwallthick = 0.001; + _g1a3_var._parameters.uwallthick = 0.001; + _g1a3_var._parameters.dwallthick = 0.001; + + + /* component g1a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _g1a2_var._rotation_absolute, _g1a3_var._rotation_absolute); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + rot_mul(_g1a3_var._rotation_absolute, tr1, _g1a3_var._rotation_relative); + _g1a3_var._rotation_is_identity = rot_test_identity(_g1a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.999801); + rot_transpose(_g1a2_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1a3_var._position_absolute = coords_add(_g1a2_var._position_absolute, tc2); + tc1 = coords_sub(_g1a2_var._position_absolute, _g1a3_var._position_absolute); + _g1a3_var._position_relative = rot_apply(_g1a3_var._rotation_absolute, tc1); + } /* g1a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute); + instrument->_position_absolute[18] = _g1a3_var._position_absolute; + instrument->_position_relative[18] = _g1a3_var._position_relative; + _g1a3_var._position_relative_is_zero = coords_test_zero(_g1a3_var._position_relative); + instrument->counter_N[18] = instrument->counter_P[18] = instrument->counter_P2[18] = 0; + instrument->counter_AbsorbProp[18]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0017_g1a3", _g1a3_var._position_absolute, _g1a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "w1l", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "linwl", "0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "loutwl", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "w1r", "0.002", "0.021853309009560024","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "linwr", "0.0", "5.3043493319594885","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "loutwr", "0", "1.8968293319594889","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "h1u", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "linhu", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "louthu", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "h1d", "0.002", "0.02274764602619812","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "linhd", "0.0", "3.7648386261215414","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "louthd", "0", "30.73631862612154","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "l", "0", "1.49882","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0017_g1a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1a3_setpos */ + +/* component g1b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1b1_setpos] component g1b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1b1_var._name, "g1b1", 16384); + stracpy(_g1b1_var._type, "Guide_four_side", 16384); + _g1b1_var._index=19; + int current_setpos_index = 19; + _g1b1_var._parameters.RIreflect[0]='\0'; + _g1b1_var._parameters.LIreflect[0]='\0'; + _g1b1_var._parameters.UIreflect[0]='\0'; + _g1b1_var._parameters.DIreflect[0]='\0'; + _g1b1_var._parameters.ROreflect[0]='\0'; + _g1b1_var._parameters.LOreflect[0]='\0'; + _g1b1_var._parameters.UOreflect[0]='\0'; + _g1b1_var._parameters.DOreflect[0]='\0'; + _g1b1_var._parameters.w1l = 0.017955; + _g1b1_var._parameters.w2l = 0.002; + _g1b1_var._parameters.linwl = 6.82655; + _g1b1_var._parameters.loutwl = 1.3934509999999998; + _g1b1_var._parameters.w1r = 0.017955; + _g1b1_var._parameters.w2r = 0.002; + _g1b1_var._parameters.linwr = 6.82655; + _g1b1_var._parameters.loutwr = 1.3934509999999998; + _g1b1_var._parameters.h1u = 0.026565; + _g1b1_var._parameters.h2u = 0.002; + _g1b1_var._parameters.linhu = 5.2842144; + _g1b1_var._parameters.louthu = 30.232929999999996; + _g1b1_var._parameters.h1d = 0.026565; + _g1b1_var._parameters.h2d = 0.002; + _g1b1_var._parameters.linhd = 5.2842144; + _g1b1_var._parameters.louthd = 30.232929999999996; + _g1b1_var._parameters.l = 0.48300000000000054; + _g1b1_var._parameters.R0 = 0.99; + _g1b1_var._parameters.Qcxl = 0.0217; + _g1b1_var._parameters.Qcxr = 0.0217; + _g1b1_var._parameters.Qcyu = 0.0221; + _g1b1_var._parameters.Qcyd = 0.0221; + _g1b1_var._parameters.alphaxl = 2.5; + _g1b1_var._parameters.alphaxr = 2.5; + _g1b1_var._parameters.alphayu = 1.75; + _g1b1_var._parameters.alphayd = 1.75; + _g1b1_var._parameters.Wxr = 0.015; + _g1b1_var._parameters.Wxl = 0.015; + _g1b1_var._parameters.Wyu = 0.015; + _g1b1_var._parameters.Wyd = 0.015; + _g1b1_var._parameters.mxr = 4; + _g1b1_var._parameters.mxl = 4; + _g1b1_var._parameters.myu = 2.5; + _g1b1_var._parameters.myd = 2.5; + _g1b1_var._parameters.QcxrOW = 0.0217; + _g1b1_var._parameters.QcxlOW = 0.0217; + _g1b1_var._parameters.QcyuOW = 0.0217; + _g1b1_var._parameters.QcydOW = 0.0217; + _g1b1_var._parameters.alphaxlOW = 6.07; + _g1b1_var._parameters.alphaxrOW = 6.07; + _g1b1_var._parameters.alphayuOW = 6.07; + _g1b1_var._parameters.alphaydOW = 6.07; + _g1b1_var._parameters.WxrOW = 0.003; + _g1b1_var._parameters.WxlOW = 0.003; + _g1b1_var._parameters.WyuOW = 0.003; + _g1b1_var._parameters.WydOW = 0.003; + _g1b1_var._parameters.mxrOW = 0; + _g1b1_var._parameters.mxlOW = 0; + _g1b1_var._parameters.myuOW = 0; + _g1b1_var._parameters.mydOW = 0; + _g1b1_var._parameters.rwallthick = 0.001; + _g1b1_var._parameters.lwallthick = 0.001; + _g1b1_var._parameters.uwallthick = 0.001; + _g1b1_var._parameters.dwallthick = 0.001; + + + /* component g1b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1b1_var._rotation_absolute); + rot_transpose(_g1a3_var._rotation_absolute, tr1); + rot_mul(_g1b1_var._rotation_absolute, tr1, _g1b1_var._rotation_relative); + _g1b1_var._rotation_is_identity = rot_test_identity(_g1b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.4109); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1a3_var._position_absolute, _g1b1_var._position_absolute); + _g1b1_var._position_relative = rot_apply(_g1b1_var._rotation_absolute, tc1); + } /* g1b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute); + instrument->_position_absolute[19] = _g1b1_var._position_absolute; + instrument->_position_relative[19] = _g1b1_var._position_relative; + _g1b1_var._position_relative_is_zero = coords_test_zero(_g1b1_var._position_relative); + instrument->counter_N[19] = instrument->counter_P[19] = instrument->counter_P2[19] = 0; + instrument->counter_AbsorbProp[19]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0018_g1b1", _g1b1_var._position_absolute, _g1b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "w1l", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "linwl", "0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "loutwl", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "w1r", "0.002", "0.017955","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "linwr", "0.0", "6.82655","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "loutwr", "0", "1.3934509999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "h1u", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "linhu", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "louthu", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "h1d", "0.002", "0.026565","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "linhd", "0.0", "5.2842144","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "louthd", "0", "30.232929999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "l", "0", "0.48300000000000054","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0018_g1b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1b1_setpos */ + +/* component g1c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g1c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g1c1_setpos] component g1c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g1c1_var._name, "g1c1", 16384); + stracpy(_g1c1_var._type, "Guide_four_side", 16384); + _g1c1_var._index=20; + int current_setpos_index = 20; + _g1c1_var._parameters.RIreflect[0]='\0'; + _g1c1_var._parameters.LIreflect[0]='\0'; + _g1c1_var._parameters.UIreflect[0]='\0'; + _g1c1_var._parameters.DIreflect[0]='\0'; + _g1c1_var._parameters.ROreflect[0]='\0'; + _g1c1_var._parameters.LOreflect[0]='\0'; + _g1c1_var._parameters.UOreflect[0]='\0'; + _g1c1_var._parameters.DOreflect[0]='\0'; + _g1c1_var._parameters.w1l = 0.015725; + _g1c1_var._parameters.w2l = 0.002; + _g1c1_var._parameters.linwl = 7.323650000000001; + _g1c1_var._parameters.loutwl = 0.5472510000000002; + _g1c1_var._parameters.w1r = 0.015725; + _g1c1_var._parameters.w2r = 0.002; + _g1c1_var._parameters.linwr = 7.323650000000001; + _g1c1_var._parameters.loutwr = 0.5472510000000002; + _g1c1_var._parameters.h1u = 0.02753; + _g1c1_var._parameters.h2u = 0.002; + _g1c1_var._parameters.linhu = 5.7813144; + _g1c1_var._parameters.louthu = 29.38673; + _g1c1_var._parameters.h1d = 0.02753; + _g1c1_var._parameters.h2d = 0.002; + _g1c1_var._parameters.linhd = 5.7813144; + _g1c1_var._parameters.louthd = 29.38673; + _g1c1_var._parameters.l = 0.8320999999999996; + _g1c1_var._parameters.R0 = 0.99; + _g1c1_var._parameters.Qcxl = 0.0217; + _g1c1_var._parameters.Qcxr = 0.0217; + _g1c1_var._parameters.Qcyu = 0.0221; + _g1c1_var._parameters.Qcyd = 0.0221; + _g1c1_var._parameters.alphaxl = 2.5; + _g1c1_var._parameters.alphaxr = 2.5; + _g1c1_var._parameters.alphayu = 1.75; + _g1c1_var._parameters.alphayd = 1.75; + _g1c1_var._parameters.Wxr = 0.015; + _g1c1_var._parameters.Wxl = 0.015; + _g1c1_var._parameters.Wyu = 0.015; + _g1c1_var._parameters.Wyd = 0.015; + _g1c1_var._parameters.mxr = 4; + _g1c1_var._parameters.mxl = 4; + _g1c1_var._parameters.myu = 2.5; + _g1c1_var._parameters.myd = 2.5; + _g1c1_var._parameters.QcxrOW = 0.0217; + _g1c1_var._parameters.QcxlOW = 0.0217; + _g1c1_var._parameters.QcyuOW = 0.0217; + _g1c1_var._parameters.QcydOW = 0.0217; + _g1c1_var._parameters.alphaxlOW = 6.07; + _g1c1_var._parameters.alphaxrOW = 6.07; + _g1c1_var._parameters.alphayuOW = 6.07; + _g1c1_var._parameters.alphaydOW = 6.07; + _g1c1_var._parameters.WxrOW = 0.003; + _g1c1_var._parameters.WxlOW = 0.003; + _g1c1_var._parameters.WyuOW = 0.003; + _g1c1_var._parameters.WydOW = 0.003; + _g1c1_var._parameters.mxrOW = 0; + _g1c1_var._parameters.mxlOW = 0; + _g1c1_var._parameters.myuOW = 0; + _g1c1_var._parameters.mydOW = 0; + _g1c1_var._parameters.rwallthick = 0.001; + _g1c1_var._parameters.lwallthick = 0.001; + _g1c1_var._parameters.uwallthick = 0.001; + _g1c1_var._parameters.dwallthick = 0.001; + + + /* component g1c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g1c1_var._rotation_absolute); + rot_transpose(_g1b1_var._rotation_absolute, tr1); + rot_mul(_g1c1_var._rotation_absolute, tr1, _g1c1_var._rotation_relative); + _g1c1_var._rotation_is_identity = rot_test_identity(_g1c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 5.908); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g1c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1b1_var._position_absolute, _g1c1_var._position_absolute); + _g1c1_var._position_relative = rot_apply(_g1c1_var._rotation_absolute, tc1); + } /* g1c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute); + instrument->_position_absolute[20] = _g1c1_var._position_absolute; + instrument->_position_relative[20] = _g1c1_var._position_relative; + _g1c1_var._position_relative_is_zero = coords_test_zero(_g1c1_var._position_relative); + instrument->counter_N[20] = instrument->counter_P[20] = instrument->counter_P2[20] = 0; + instrument->counter_AbsorbProp[20]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0019_g1c1", _g1c1_var._position_absolute, _g1c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "w1l", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "linwl", "0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "loutwl", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "w1r", "0.002", "0.015725","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "linwr", "0.0", "7.323650000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "loutwr", "0", "0.5472510000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "h1u", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "linhu", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "louthu", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "h1d", "0.002", "0.02753","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "linhd", "0.0", "5.7813144","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "louthd", "0", "29.38673","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "l", "0", "0.8320999999999996","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0019_g1c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g1c1_setpos */ + +/* component wfm_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_position_setpos] component wfm_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_position_var._name, "wfm_position", 16384); + stracpy(_wfm_position_var._type, "Arm", 16384); + _wfm_position_var._index=21; + int current_setpos_index = 21; + /* component wfm_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _wfm_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_position_var._rotation_absolute, tr1, _wfm_position_var._rotation_relative); + _wfm_position_var._rotation_is_identity = rot_test_identity(_wfm_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_position_var._position_absolute); + _wfm_position_var._position_relative = rot_apply(_wfm_position_var._rotation_absolute, tc1); + } /* wfm_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute); + instrument->_position_absolute[21] = _wfm_position_var._position_absolute; + instrument->_position_relative[21] = _wfm_position_var._position_relative; + _wfm_position_var._position_relative_is_zero = coords_test_zero(_wfm_position_var._position_relative); + instrument->counter_N[21] = instrument->counter_P[21] = instrument->counter_P2[21] = 0; + instrument->counter_AbsorbProp[21]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0020_wfm_position", _wfm_position_var._position_absolute, _wfm_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_position_setpos */ + +/* component wfm_1_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_1_position_setpos] component wfm_1_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_1_position_var._name, "wfm_1_position", 16384); + stracpy(_wfm_1_position_var._type, "Arm", 16384); + _wfm_1_position_var._index=22; + int current_setpos_index = 22; + /* component wfm_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_1_position_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfm_1_position_var._rotation_absolute, tr1, _wfm_1_position_var._rotation_relative); + _wfm_1_position_var._rotation_is_identity = rot_test_identity(_wfm_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, -0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_1_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfm_1_position_var._position_absolute); + _wfm_1_position_var._position_relative = rot_apply(_wfm_1_position_var._rotation_absolute, tc1); + } /* wfm_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute); + instrument->_position_absolute[22] = _wfm_1_position_var._position_absolute; + instrument->_position_relative[22] = _wfm_1_position_var._position_relative; + _wfm_1_position_var._position_relative_is_zero = coords_test_zero(_wfm_1_position_var._position_relative); + instrument->counter_N[22] = instrument->counter_P[22] = instrument->counter_P2[22] = 0; + instrument->counter_AbsorbProp[22]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0021_wfm_1_position", _wfm_1_position_var._position_absolute, _wfm_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_1_position_setpos */ + +/* component wfmc_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_1_setpos] component wfmc_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_1_var._name, "wfmc_1", 16384); + stracpy(_wfmc_1_var._type, "MultiDiskChopper", 16384); + _wfmc_1_var._index=23; + int current_setpos_index = 23; + if("5.62;-44.68;-91.85;-136.08;-177.55;143.56" && strlen("5.62;-44.68;-91.85;-136.08;-177.55;143.56")) + stracpy(_wfmc_1_var._parameters.slit_center, "5.62;-44.68;-91.85;-136.08;-177.55;143.56" ? "5.62;-44.68;-91.85;-136.08;-177.55;143.56" : "", 16384); + else + _wfmc_1_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_1_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_1_var._parameters.slit_width[0]='\0'; + _wfmc_1_var._parameters.nslits = 6; + _wfmc_1_var._parameters.delta_y = -0.31499999999999995; + _wfmc_1_var._parameters.nu = -56.0; + _wfmc_1_var._parameters.nrev = 0; + _wfmc_1_var._parameters.ratio = 1; + _wfmc_1_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_1; + _wfmc_1_var._parameters.delay = 0; + _wfmc_1_var._parameters.isfirst = 0; + _wfmc_1_var._parameters.phase = WFM1_phase; + _wfmc_1_var._parameters.radius = 0.35; + _wfmc_1_var._parameters.equal = 0; + _wfmc_1_var._parameters.abs_out = 0; + _wfmc_1_var._parameters.verbose = 0; + + + /* component wfmc_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_1_position_var._rotation_absolute, _wfmc_1_var._rotation_absolute); + rot_transpose(_g1c1_var._rotation_absolute, tr1); + rot_mul(_wfmc_1_var._rotation_absolute, tr1, _wfmc_1_var._rotation_relative); + _wfmc_1_var._rotation_is_identity = rot_test_identity(_wfmc_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_1_var._position_absolute = coords_add(_wfm_1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g1c1_var._position_absolute, _wfmc_1_var._position_absolute); + _wfmc_1_var._position_relative = rot_apply(_wfmc_1_var._rotation_absolute, tc1); + } /* wfmc_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute); + instrument->_position_absolute[23] = _wfmc_1_var._position_absolute; + instrument->_position_relative[23] = _wfmc_1_var._position_relative; + _wfmc_1_var._position_relative_is_zero = coords_test_zero(_wfmc_1_var._position_relative); + instrument->counter_N[23] = instrument->counter_P[23] = instrument->counter_P2[23] = 0; + instrument->counter_AbsorbProp[23]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0022_wfmc_1", _wfmc_1_var._position_absolute, _wfmc_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "slit_center", "0 180", "5.62;-44.68;-91.85;-136.08;-177.55;143.56", "char*"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "phase", "0", "WFM1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0022_wfmc_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_1_setpos */ + +/* component pinhole_1=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_1_setpos] component pinhole_1=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_1_var._name, "pinhole_1", 16384); + stracpy(_pinhole_1_var._type, "Slit", 16384); + _pinhole_1_var._index=24; + int current_setpos_index = 24; + _pinhole_1_var._parameters.xmin = UNSET; + _pinhole_1_var._parameters.xmax = UNSET; + _pinhole_1_var._parameters.ymin = UNSET; + _pinhole_1_var._parameters.ymax = UNSET; + _pinhole_1_var._parameters.radius = UNSET; + _pinhole_1_var._parameters.xwidth = 0.015; + _pinhole_1_var._parameters.yheight = 0.06; + + + /* component pinhole_1=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _pinhole_1_var._rotation_absolute); + rot_transpose(_wfmc_1_var._rotation_absolute, tr1); + rot_mul(_pinhole_1_var._rotation_absolute, tr1, _pinhole_1_var._rotation_relative); + _pinhole_1_var._rotation_is_identity = rot_test_identity(_pinhole_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_1_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_1_var._position_absolute, _pinhole_1_var._position_absolute); + _pinhole_1_var._position_relative = rot_apply(_pinhole_1_var._rotation_absolute, tc1); + } /* pinhole_1=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute); + instrument->_position_absolute[24] = _pinhole_1_var._position_absolute; + instrument->_position_relative[24] = _pinhole_1_var._position_relative; + _pinhole_1_var._position_relative_is_zero = coords_test_zero(_pinhole_1_var._position_relative); + instrument->counter_N[24] = instrument->counter_P[24] = instrument->counter_P2[24] = 0; + instrument->counter_AbsorbProp[24]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0023_pinhole_1", _pinhole_1_var._position_absolute, _pinhole_1_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "xwidth", "UNSET", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0023_pinhole_1", "yheight", "UNSET", "0.06","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_1_setpos */ + +/* component wfm_2_position=Arm() SETTING, POSITION/ROTATION */ +int _wfm_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfm_2_position_setpos] component wfm_2_position=Arm() SETTING [Arm:0]"); + stracpy(_wfm_2_position_var._name, "wfm_2_position", 16384); + stracpy(_wfm_2_position_var._type, "Arm", 16384); + _wfm_2_position_var._index=25; + int current_setpos_index = 25; + /* component wfm_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _wfm_position_var._rotation_absolute, _wfm_2_position_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfm_2_position_var._rotation_absolute, tr1, _wfm_2_position_var._rotation_relative); + _wfm_2_position_var._rotation_is_identity = rot_test_identity(_wfm_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0.5 * _instrument_var._parameters.wfm_delta); + rot_transpose(_wfm_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfm_2_position_var._position_absolute = coords_add(_wfm_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfm_2_position_var._position_absolute); + _wfm_2_position_var._position_relative = rot_apply(_wfm_2_position_var._rotation_absolute, tc1); + } /* wfm_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute); + instrument->_position_absolute[25] = _wfm_2_position_var._position_absolute; + instrument->_position_relative[25] = _wfm_2_position_var._position_relative; + _wfm_2_position_var._position_relative_is_zero = coords_test_zero(_wfm_2_position_var._position_relative); + instrument->counter_N[25] = instrument->counter_P[25] = instrument->counter_P2[25] = 0; + instrument->counter_AbsorbProp[25]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0024_wfm_2_position", _wfm_2_position_var._position_absolute, _wfm_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfm_2_position_setpos */ + +/* component wfmc_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _wfmc_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wfmc_2_setpos] component wfmc_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_wfmc_2_var._name, "wfmc_2", 16384); + stracpy(_wfmc_2_var._type, "MultiDiskChopper", 16384); + _wfmc_2_var._index=26; + int current_setpos_index = 26; + if("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" && strlen("-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028")) + stracpy(_wfmc_2_var._parameters.slit_center, "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" ? "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028" : "", 16384); + else + _wfmc_2_var._parameters.slit_center[0]='\0'; + if("5.7;9;12;14.9;17.5;20" && strlen("5.7;9;12;14.9;17.5;20")) + stracpy(_wfmc_2_var._parameters.slit_width, "5.7;9;12;14.9;17.5;20" ? "5.7;9;12;14.9;17.5;20" : "", 16384); + else + _wfmc_2_var._parameters.slit_width[0]='\0'; + _wfmc_2_var._parameters.nslits = 6; + _wfmc_2_var._parameters.delta_y = -0.31499999999999995; + _wfmc_2_var._parameters.nu = -56.0; + _wfmc_2_var._parameters.nrev = 0; + _wfmc_2_var._parameters.ratio = 1; + _wfmc_2_var._parameters.jitter = _instrument_var._parameters.jitter_wfmc_2; + _wfmc_2_var._parameters.delay = 0; + _wfmc_2_var._parameters.isfirst = 0; + _wfmc_2_var._parameters.phase = WFM2_phase; + _wfmc_2_var._parameters.radius = 0.35; + _wfmc_2_var._parameters.equal = 0; + _wfmc_2_var._parameters.abs_out = 0; + _wfmc_2_var._parameters.verbose = 0; + + + /* component wfmc_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _wfm_2_position_var._rotation_absolute, _wfmc_2_var._rotation_absolute); + rot_transpose(_pinhole_1_var._rotation_absolute, tr1); + rot_mul(_wfmc_2_var._rotation_absolute, tr1, _wfmc_2_var._rotation_relative); + _wfmc_2_var._rotation_is_identity = rot_test_identity(_wfmc_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_wfm_2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wfmc_2_var._position_absolute = coords_add(_wfm_2_position_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_1_var._position_absolute, _wfmc_2_var._position_absolute); + _wfmc_2_var._position_relative = rot_apply(_wfmc_2_var._rotation_absolute, tc1); + } /* wfmc_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute); + instrument->_position_absolute[26] = _wfmc_2_var._position_absolute; + instrument->_position_relative[26] = _wfmc_2_var._position_relative; + _wfmc_2_var._position_relative_is_zero = coords_test_zero(_wfmc_2_var._position_relative); + instrument->counter_N[26] = instrument->counter_P[26] = instrument->counter_P2[26] = 0; + instrument->counter_AbsorbProp[26]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0025_wfmc_2", _wfmc_2_var._position_absolute, _wfmc_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "slit_center", "0 180", "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", "char*"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "slit_width", "10 20", "5.7;9;12;14.9;17.5;20", "char*"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "delta_y", "-0.3", "-0.31499999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "nu", "0", "-56.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "jitter", "0", "_instrument_var._parameters.jitter_wfmc_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "phase", "0", "WFM2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "radius", "0.375", "0.35","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0025_wfmc_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wfmc_2_setpos */ + +/* component g2a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a1_setpos] component g2a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a1_var._name, "g2a1", 16384); + stracpy(_g2a1_var._type, "Guide_four_side", 16384); + _g2a1_var._index=27; + int current_setpos_index = 27; + _g2a1_var._parameters.RIreflect[0]='\0'; + _g2a1_var._parameters.LIreflect[0]='\0'; + _g2a1_var._parameters.UIreflect[0]='\0'; + _g2a1_var._parameters.DIreflect[0]='\0'; + _g2a1_var._parameters.ROreflect[0]='\0'; + _g2a1_var._parameters.LOreflect[0]='\0'; + _g2a1_var._parameters.UOreflect[0]='\0'; + _g2a1_var._parameters.DOreflect[0]='\0'; + _g2a1_var._parameters.w1l = 0.01121; + _g2a1_var._parameters.w2l = 0.002; + _g2a1_var._parameters.linwl = 0.25980000000000025; + _g2a1_var._parameters.loutwl = 12.040199999999999; + _g2a1_var._parameters.w1r = 0.01121; + _g2a1_var._parameters.w2r = 0.002; + _g2a1_var._parameters.linwr = 0.25980000000000025; + _g2a1_var._parameters.loutwr = 12.040199999999999; + _g2a1_var._parameters.h1u = 0.029825; + _g2a1_var._parameters.h2u = 0.002; + _g2a1_var._parameters.linhu = 7.2598; + _g2a1_var._parameters.louthu = 28.0402; + _g2a1_var._parameters.h1d = 0.029825; + _g2a1_var._parameters.h2d = 0.002; + _g2a1_var._parameters.linhd = 7.2598; + _g2a1_var._parameters.louthd = 28.0402; + _g2a1_var._parameters.l = 0.7000000000000002; + _g2a1_var._parameters.R0 = 0.99; + _g2a1_var._parameters.Qcxl = 0.023; + _g2a1_var._parameters.Qcxr = 0.023; + _g2a1_var._parameters.Qcyu = 0.0221; + _g2a1_var._parameters.Qcyd = 0.0221; + _g2a1_var._parameters.alphaxl = 1.8; + _g2a1_var._parameters.alphaxr = 1.8; + _g2a1_var._parameters.alphayu = 1.75; + _g2a1_var._parameters.alphayd = 1.75; + _g2a1_var._parameters.Wxr = 0.015; + _g2a1_var._parameters.Wxl = 0.015; + _g2a1_var._parameters.Wyu = 0.015; + _g2a1_var._parameters.Wyd = 0.015; + _g2a1_var._parameters.mxr = 2; + _g2a1_var._parameters.mxl = 2; + _g2a1_var._parameters.myu = 3; + _g2a1_var._parameters.myd = 3; + _g2a1_var._parameters.QcxrOW = 0.0217; + _g2a1_var._parameters.QcxlOW = 0.0217; + _g2a1_var._parameters.QcyuOW = 0.0217; + _g2a1_var._parameters.QcydOW = 0.0217; + _g2a1_var._parameters.alphaxlOW = 6.07; + _g2a1_var._parameters.alphaxrOW = 6.07; + _g2a1_var._parameters.alphayuOW = 6.07; + _g2a1_var._parameters.alphaydOW = 6.07; + _g2a1_var._parameters.WxrOW = 0.003; + _g2a1_var._parameters.WxlOW = 0.003; + _g2a1_var._parameters.WyuOW = 0.003; + _g2a1_var._parameters.WydOW = 0.003; + _g2a1_var._parameters.mxrOW = 0; + _g2a1_var._parameters.mxlOW = 0; + _g2a1_var._parameters.myuOW = 0; + _g2a1_var._parameters.mydOW = 0; + _g2a1_var._parameters.rwallthick = 0.001; + _g2a1_var._parameters.lwallthick = 0.001; + _g2a1_var._parameters.uwallthick = 0.001; + _g2a1_var._parameters.dwallthick = 0.001; + + + /* component g2a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a1_var._rotation_absolute); + rot_transpose(_wfmc_2_var._rotation_absolute, tr1); + rot_mul(_g2a1_var._rotation_absolute, tr1, _g2a1_var._rotation_relative); + _g2a1_var._rotation_is_identity = rot_test_identity(_g2a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.247800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_wfmc_2_var._position_absolute, _g2a1_var._position_absolute); + _g2a1_var._position_relative = rot_apply(_g2a1_var._rotation_absolute, tc1); + } /* g2a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute); + instrument->_position_absolute[27] = _g2a1_var._position_absolute; + instrument->_position_relative[27] = _g2a1_var._position_relative; + _g2a1_var._position_relative_is_zero = coords_test_zero(_g2a1_var._position_relative); + instrument->counter_N[27] = instrument->counter_P[27] = instrument->counter_P2[27] = 0; + instrument->counter_AbsorbProp[27]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0026_g2a1", _g2a1_var._position_absolute, _g2a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "w1l", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "linwl", "0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "loutwl", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "w1r", "0.002", "0.01121","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "linwr", "0.0", "0.25980000000000025","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "loutwr", "0", "12.040199999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "h1u", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "linhu", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "louthu", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "h1d", "0.002", "0.029825","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "linhd", "0.0", "7.2598","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "louthd", "0", "28.0402","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "l", "0", "0.7000000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0026_g2a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a1_setpos */ + +/* component monitor_1_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_1_position_setpos] component monitor_1_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_1_position_var._name, "monitor_1_position", 16384); + stracpy(_monitor_1_position_var._type, "Arm", 16384); + _monitor_1_position_var._index=28; + int current_setpos_index = 28; + /* component monitor_1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_1_position_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_monitor_1_position_var._rotation_absolute, tr1, _monitor_1_position_var._rotation_relative); + _monitor_1_position_var._rotation_is_identity = rot_test_identity(_monitor_1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.96); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _monitor_1_position_var._position_absolute); + _monitor_1_position_var._position_relative = rot_apply(_monitor_1_position_var._rotation_absolute, tc1); + } /* monitor_1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute); + instrument->_position_absolute[28] = _monitor_1_position_var._position_absolute; + instrument->_position_relative[28] = _monitor_1_position_var._position_relative; + _monitor_1_position_var._position_relative_is_zero = coords_test_zero(_monitor_1_position_var._position_relative); + instrument->counter_N[28] = instrument->counter_P[28] = instrument->counter_P2[28] = 0; + instrument->counter_AbsorbProp[28]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0027_monitor_1_position", _monitor_1_position_var._position_absolute, _monitor_1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_1_position_setpos */ + +/* component g2a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2a2_setpos] component g2a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2a2_var._name, "g2a2", 16384); + stracpy(_g2a2_var._type, "Guide_four_side", 16384); + _g2a2_var._index=29; + int current_setpos_index = 29; + _g2a2_var._parameters.RIreflect[0]='\0'; + _g2a2_var._parameters.LIreflect[0]='\0'; + _g2a2_var._parameters.UIreflect[0]='\0'; + _g2a2_var._parameters.DIreflect[0]='\0'; + _g2a2_var._parameters.ROreflect[0]='\0'; + _g2a2_var._parameters.LOreflect[0]='\0'; + _g2a2_var._parameters.UOreflect[0]='\0'; + _g2a2_var._parameters.DOreflect[0]='\0'; + _g2a2_var._parameters.w1l = 0.0212; + _g2a2_var._parameters.w2l = 0.002; + _g2a2_var._parameters.linwl = 0.9858000000000002; + _g2a2_var._parameters.loutwl = 11.6045; + _g2a2_var._parameters.w1r = 0.0212; + _g2a2_var._parameters.w2r = 0.002; + _g2a2_var._parameters.linwr = 0.9858000000000002; + _g2a2_var._parameters.loutwr = 11.6045; + _g2a2_var._parameters.h1u = 0.03088; + _g2a2_var._parameters.h2u = 0.002; + _g2a2_var._parameters.linhu = 7.9858; + _g2a2_var._parameters.louthu = 27.6045; + _g2a2_var._parameters.h1d = 0.03088; + _g2a2_var._parameters.h2d = 0.002; + _g2a2_var._parameters.linhd = 7.9858; + _g2a2_var._parameters.louthd = 27.6045; + _g2a2_var._parameters.l = 0.40969999999999995; + _g2a2_var._parameters.R0 = 0.99; + _g2a2_var._parameters.Qcxl = 0.0221; + _g2a2_var._parameters.Qcxr = 0.0221; + _g2a2_var._parameters.Qcyu = 0.0221; + _g2a2_var._parameters.Qcyd = 0.0221; + _g2a2_var._parameters.alphaxl = 1.75; + _g2a2_var._parameters.alphaxr = 1.75; + _g2a2_var._parameters.alphayu = 1.75; + _g2a2_var._parameters.alphayd = 1.75; + _g2a2_var._parameters.Wxr = 0.015; + _g2a2_var._parameters.Wxl = 0.015; + _g2a2_var._parameters.Wyu = 0.015; + _g2a2_var._parameters.Wyd = 0.015; + _g2a2_var._parameters.mxr = 3; + _g2a2_var._parameters.mxl = 3; + _g2a2_var._parameters.myu = 3; + _g2a2_var._parameters.myd = 3; + _g2a2_var._parameters.QcxrOW = 0.0217; + _g2a2_var._parameters.QcxlOW = 0.0217; + _g2a2_var._parameters.QcyuOW = 0.0217; + _g2a2_var._parameters.QcydOW = 0.0217; + _g2a2_var._parameters.alphaxlOW = 6.07; + _g2a2_var._parameters.alphaxrOW = 6.07; + _g2a2_var._parameters.alphayuOW = 6.07; + _g2a2_var._parameters.alphaydOW = 6.07; + _g2a2_var._parameters.WxrOW = 0.003; + _g2a2_var._parameters.WxlOW = 0.003; + _g2a2_var._parameters.WyuOW = 0.003; + _g2a2_var._parameters.WydOW = 0.003; + _g2a2_var._parameters.mxrOW = 0; + _g2a2_var._parameters.mxlOW = 0; + _g2a2_var._parameters.myuOW = 0; + _g2a2_var._parameters.mydOW = 0; + _g2a2_var._parameters.rwallthick = 0.001; + _g2a2_var._parameters.lwallthick = 0.001; + _g2a2_var._parameters.uwallthick = 0.001; + _g2a2_var._parameters.dwallthick = 0.001; + + + /* component g2a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2a2_var._rotation_absolute); + rot_transpose(_g2a1_var._rotation_absolute, tr1); + rot_mul(_g2a2_var._rotation_absolute, tr1, _g2a2_var._rotation_relative); + _g2a2_var._rotation_is_identity = rot_test_identity(_g2a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 7.973800000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a1_var._position_absolute, _g2a2_var._position_absolute); + _g2a2_var._position_relative = rot_apply(_g2a2_var._rotation_absolute, tc1); + } /* g2a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute); + instrument->_position_absolute[29] = _g2a2_var._position_absolute; + instrument->_position_relative[29] = _g2a2_var._position_relative; + _g2a2_var._position_relative_is_zero = coords_test_zero(_g2a2_var._position_relative); + instrument->counter_N[29] = instrument->counter_P[29] = instrument->counter_P2[29] = 0; + instrument->counter_AbsorbProp[29]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0028_g2a2", _g2a2_var._position_absolute, _g2a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "w1l", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "linwl", "0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "loutwl", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "w1r", "0.002", "0.0212","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "linwr", "0.0", "0.9858000000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "loutwr", "0", "11.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "h1u", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "linhu", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "louthu", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "h1d", "0.002", "0.03088","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "linhd", "0.0", "7.9858","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "louthd", "0", "27.6045","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "l", "0", "0.40969999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0028_g2a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2a2_setpos */ + +/* component fo1_position=Arm() SETTING, POSITION/ROTATION */ +int _fo1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo1_position_setpos] component fo1_position=Arm() SETTING [Arm:0]"); + stracpy(_fo1_position_var._name, "fo1_position", 16384); + stracpy(_fo1_position_var._type, "Arm", 16384); + _fo1_position_var._index=30; + int current_setpos_index = 30; + /* component fo1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo1_position_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo1_position_var._rotation_absolute, tr1, _fo1_position_var._rotation_relative); + _fo1_position_var._rotation_is_identity = rot_test_identity(_fo1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.392); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo1_position_var._position_absolute); + _fo1_position_var._position_relative = rot_apply(_fo1_position_var._rotation_absolute, tc1); + } /* fo1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute); + instrument->_position_absolute[30] = _fo1_position_var._position_absolute; + instrument->_position_relative[30] = _fo1_position_var._position_relative; + _fo1_position_var._position_relative_is_zero = coords_test_zero(_fo1_position_var._position_relative); + instrument->counter_N[30] = instrument->counter_P[30] = instrument->counter_P2[30] = 0; + instrument->counter_AbsorbProp[30]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0029_fo1_position", _fo1_position_var._position_absolute, _fo1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo1_position_setpos */ + +/* component fo_chopper_1=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_1_setpos] component fo_chopper_1=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_1_var._name, "fo_chopper_1", 16384); + stracpy(_fo_chopper_1_var._type, "MultiDiskChopper", 16384); + _fo_chopper_1_var._index=31; + int current_setpos_index = 31; + if("-146.745;166.555;122.775;81.715;43.215;5.525" && strlen("-146.745;166.555;122.775;81.715;43.215;5.525")) + stracpy(_fo_chopper_1_var._parameters.slit_center, "-146.745;166.555;122.775;81.715;43.215;5.525" ? "-146.745;166.555;122.775;81.715;43.215;5.525" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_center[0]='\0'; + if("11.06;13.06;14.94;16.71;18.36;16.72" && strlen("11.06;13.06;14.94;16.71;18.36;16.72")) + stracpy(_fo_chopper_1_var._parameters.slit_width, "11.06;13.06;14.94;16.71;18.36;16.72" ? "11.06;13.06;14.94;16.71;18.36;16.72" : "", 16384); + else + _fo_chopper_1_var._parameters.slit_width[0]='\0'; + _fo_chopper_1_var._parameters.nslits = 6; + _fo_chopper_1_var._parameters.delta_y = -0.4625; + _fo_chopper_1_var._parameters.nu = -42.0; + _fo_chopper_1_var._parameters.nrev = 0; + _fo_chopper_1_var._parameters.ratio = 1; + _fo_chopper_1_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_1; + _fo_chopper_1_var._parameters.delay = 0; + _fo_chopper_1_var._parameters.isfirst = 0; + _fo_chopper_1_var._parameters.phase = fo1_phase; + _fo_chopper_1_var._parameters.radius = 0.5; + _fo_chopper_1_var._parameters.equal = 0; + _fo_chopper_1_var._parameters.abs_out = 0; + _fo_chopper_1_var._parameters.verbose = 0; + + + /* component fo_chopper_1=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo1_position_var._rotation_absolute, _fo_chopper_1_var._rotation_absolute); + rot_transpose(_g2a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_1_var._rotation_absolute, tr1, _fo_chopper_1_var._rotation_relative); + _fo_chopper_1_var._rotation_is_identity = rot_test_identity(_fo_chopper_1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_1_var._position_absolute = coords_add(_fo1_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2a2_var._position_absolute, _fo_chopper_1_var._position_absolute); + _fo_chopper_1_var._position_relative = rot_apply(_fo_chopper_1_var._rotation_absolute, tc1); + } /* fo_chopper_1=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute); + instrument->_position_absolute[31] = _fo_chopper_1_var._position_absolute; + instrument->_position_relative[31] = _fo_chopper_1_var._position_relative; + _fo_chopper_1_var._position_relative_is_zero = coords_test_zero(_fo_chopper_1_var._position_relative); + instrument->counter_N[31] = instrument->counter_P[31] = instrument->counter_P2[31] = 0; + instrument->counter_AbsorbProp[31]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0030_fo_chopper_1", _fo_chopper_1_var._position_absolute, _fo_chopper_1_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "slit_center", "0 180", "-146.745;166.555;122.775;81.715;43.215;5.525", "char*"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "slit_width", "10 20", "11.06;13.06;14.94;16.71;18.36;16.72", "char*"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "delta_y", "-0.3", "-0.4625","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_1","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "phase", "0", "fo1_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0030_fo_chopper_1", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_1_setpos */ + +/* component bp1_position=Arm() SETTING, POSITION/ROTATION */ +int _bp1_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_position_setpos] component bp1_position=Arm() SETTING [Arm:0]"); + stracpy(_bp1_position_var._name, "bp1_position", 16384); + stracpy(_bp1_position_var._type, "Arm", 16384); + _bp1_position_var._index=32; + int current_setpos_index = 32; + /* component bp1_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp1_position_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_position_var._rotation_absolute, tr1, _bp1_position_var._rotation_relative); + _bp1_position_var._rotation_is_identity = rot_test_identity(_bp1_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.442); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_position_var._position_absolute); + _bp1_position_var._position_relative = rot_apply(_bp1_position_var._rotation_absolute, tc1); + } /* bp1_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute); + instrument->_position_absolute[32] = _bp1_position_var._position_absolute; + instrument->_position_relative[32] = _bp1_position_var._position_relative; + _bp1_position_var._position_relative_is_zero = coords_test_zero(_bp1_position_var._position_relative); + instrument->counter_N[32] = instrument->counter_P[32] = instrument->counter_P2[32] = 0; + instrument->counter_AbsorbProp[32]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0031_bp1_position", _bp1_position_var._position_absolute, _bp1_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_position_setpos */ + +/* component bp1_chopper=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp1_chopper_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp1_chopper_setpos] component bp1_chopper=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp1_chopper_var._name, "bp1_chopper", 16384); + stracpy(_bp1_chopper_var._type, "DiskChopper", 16384); + _bp1_chopper_var._index=33; + int current_setpos_index = 33; + _bp1_chopper_var._parameters.theta_0 = 46.71; + _bp1_chopper_var._parameters.radius = 0.5; + _bp1_chopper_var._parameters.yheight = 0.075; + _bp1_chopper_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp1_chopper_var._parameters.nslit = 1; + _bp1_chopper_var._parameters.jitter = _instrument_var._parameters.jitter_bp1; + _bp1_chopper_var._parameters.delay = 0; + _bp1_chopper_var._parameters.isfirst = 0; + _bp1_chopper_var._parameters.n_pulse = 1; + _bp1_chopper_var._parameters.abs_out = 1; + _bp1_chopper_var._parameters.phase = bp1_phase + ( 42.20500000000003 ); + _bp1_chopper_var._parameters.xwidth = 0; + _bp1_chopper_var._parameters.verbose = 0; + + + /* component bp1_chopper=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp1_position_var._rotation_absolute, _bp1_chopper_var._rotation_absolute); + rot_transpose(_fo_chopper_1_var._rotation_absolute, tr1); + rot_mul(_bp1_chopper_var._rotation_absolute, tr1, _bp1_chopper_var._rotation_relative); + _bp1_chopper_var._rotation_is_identity = rot_test_identity(_bp1_chopper_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp1_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp1_chopper_var._position_absolute = coords_add(_bp1_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_1_var._position_absolute, _bp1_chopper_var._position_absolute); + _bp1_chopper_var._position_relative = rot_apply(_bp1_chopper_var._rotation_absolute, tc1); + } /* bp1_chopper=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute); + instrument->_position_absolute[33] = _bp1_chopper_var._position_absolute; + instrument->_position_relative[33] = _bp1_chopper_var._position_relative; + _bp1_chopper_var._position_relative_is_zero = coords_test_zero(_bp1_chopper_var._position_relative); + instrument->counter_N[33] = instrument->counter_P[33] = instrument->counter_P2[33] = 0; + instrument->counter_AbsorbProp[33]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0032_bp1_chopper", _bp1_chopper_var._position_absolute, _bp1_chopper_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "theta_0", "0", "46.71","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "jitter", "0", "_instrument_var._parameters.jitter_bp1","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "phase", "0", "bp1_phase + ( 42.20500000000003 )","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0032_bp1_chopper", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp1_chopper_setpos */ + +/* component g2b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b1_setpos] component g2b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b1_var._name, "g2b1", 16384); + stracpy(_g2b1_var._type, "Guide_four_side", 16384); + _g2b1_var._index=34; + int current_setpos_index = 34; + _g2b1_var._parameters.RIreflect[0]='\0'; + _g2b1_var._parameters.LIreflect[0]='\0'; + _g2b1_var._parameters.UIreflect[0]='\0'; + _g2b1_var._parameters.DIreflect[0]='\0'; + _g2b1_var._parameters.ROreflect[0]='\0'; + _g2b1_var._parameters.LOreflect[0]='\0'; + _g2b1_var._parameters.UOreflect[0]='\0'; + _g2b1_var._parameters.DOreflect[0]='\0'; + _g2b1_var._parameters.w1l = 0.02521; + _g2b1_var._parameters.w2l = 0.002; + _g2b1_var._parameters.linwl = 1.4502500000000005; + _g2b1_var._parameters.loutwl = 11.14005; + _g2b1_var._parameters.w1r = 0.02521; + _g2b1_var._parameters.w2r = 0.002; + _g2b1_var._parameters.linwr = 1.4502500000000005; + _g2b1_var._parameters.loutwr = 11.14005; + _g2b1_var._parameters.h1u = 0.031505; + _g2b1_var._parameters.h2u = 0.002; + _g2b1_var._parameters.linhu = 8.45025; + _g2b1_var._parameters.louthu = 27.140050000000002; + _g2b1_var._parameters.h1d = 0.031505; + _g2b1_var._parameters.h2d = 0.002; + _g2b1_var._parameters.linhd = 8.45025; + _g2b1_var._parameters.louthd = 27.140050000000002; + _g2b1_var._parameters.l = 0.40969999999999906; + _g2b1_var._parameters.R0 = 0.99; + _g2b1_var._parameters.Qcxl = 0.0217; + _g2b1_var._parameters.Qcxr = 0.0217; + _g2b1_var._parameters.Qcyu = 0.023; + _g2b1_var._parameters.Qcyd = 0.023; + _g2b1_var._parameters.alphaxl = 2.5; + _g2b1_var._parameters.alphaxr = 2.5; + _g2b1_var._parameters.alphayu = 1.8; + _g2b1_var._parameters.alphayd = 1.8; + _g2b1_var._parameters.Wxr = 0.015; + _g2b1_var._parameters.Wxl = 0.015; + _g2b1_var._parameters.Wyu = 0.015; + _g2b1_var._parameters.Wyd = 0.015; + _g2b1_var._parameters.mxr = 4; + _g2b1_var._parameters.mxl = 4; + _g2b1_var._parameters.myu = 2; + _g2b1_var._parameters.myd = 2; + _g2b1_var._parameters.QcxrOW = 0.0217; + _g2b1_var._parameters.QcxlOW = 0.0217; + _g2b1_var._parameters.QcyuOW = 0.0217; + _g2b1_var._parameters.QcydOW = 0.0217; + _g2b1_var._parameters.alphaxlOW = 6.07; + _g2b1_var._parameters.alphaxrOW = 6.07; + _g2b1_var._parameters.alphayuOW = 6.07; + _g2b1_var._parameters.alphaydOW = 6.07; + _g2b1_var._parameters.WxrOW = 0.003; + _g2b1_var._parameters.WxlOW = 0.003; + _g2b1_var._parameters.WyuOW = 0.003; + _g2b1_var._parameters.WydOW = 0.003; + _g2b1_var._parameters.mxrOW = 0; + _g2b1_var._parameters.mxlOW = 0; + _g2b1_var._parameters.myuOW = 0; + _g2b1_var._parameters.mydOW = 0; + _g2b1_var._parameters.rwallthick = 0.001; + _g2b1_var._parameters.lwallthick = 0.001; + _g2b1_var._parameters.uwallthick = 0.001; + _g2b1_var._parameters.dwallthick = 0.001; + + + /* component g2b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b1_var._rotation_absolute); + rot_transpose(_bp1_chopper_var._rotation_absolute, tr1); + rot_mul(_g2b1_var._rotation_absolute, tr1, _g2b1_var._rotation_relative); + _g2b1_var._rotation_is_identity = rot_test_identity(_g2b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.446250000000001); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp1_chopper_var._position_absolute, _g2b1_var._position_absolute); + _g2b1_var._position_relative = rot_apply(_g2b1_var._rotation_absolute, tc1); + } /* g2b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute); + instrument->_position_absolute[34] = _g2b1_var._position_absolute; + instrument->_position_relative[34] = _g2b1_var._position_relative; + _g2b1_var._position_relative_is_zero = coords_test_zero(_g2b1_var._position_relative); + instrument->counter_N[34] = instrument->counter_P[34] = instrument->counter_P2[34] = 0; + instrument->counter_AbsorbProp[34]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0033_g2b1", _g2b1_var._position_absolute, _g2b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "w1l", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "linwl", "0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "loutwl", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "w1r", "0.002", "0.02521","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "linwr", "0.0", "1.4502500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "loutwr", "0", "11.14005","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "h1u", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "linhu", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "louthu", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "h1d", "0.002", "0.031505","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "linhd", "0.0", "8.45025","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "louthd", "0", "27.140050000000002","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0033_g2b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b1_setpos */ + +/* component g2b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b2_setpos] component g2b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b2_var._name, "g2b2", 16384); + stracpy(_g2b2_var._type, "Guide_four_side", 16384); + _g2b2_var._index=35; + int current_setpos_index = 35; + _g2b2_var._parameters.RIreflect[0]='\0'; + _g2b2_var._parameters.LIreflect[0]='\0'; + _g2b2_var._parameters.UIreflect[0]='\0'; + _g2b2_var._parameters.DIreflect[0]='\0'; + _g2b2_var._parameters.ROreflect[0]='\0'; + _g2b2_var._parameters.LOreflect[0]='\0'; + _g2b2_var._parameters.UOreflect[0]='\0'; + _g2b2_var._parameters.DOreflect[0]='\0'; + _g2b2_var._parameters.w1l = 0.02811; + _g2b2_var._parameters.w2l = 0.002; + _g2b2_var._parameters.linwl = 1.8707999999999991; + _g2b2_var._parameters.loutwl = 9.67745; + _g2b2_var._parameters.w1r = 0.02811; + _g2b2_var._parameters.w2r = 0.002; + _g2b2_var._parameters.linwr = 1.8707999999999991; + _g2b2_var._parameters.loutwr = 9.67745; + _g2b2_var._parameters.h1u = 0.03203; + _g2b2_var._parameters.h2u = 0.002; + _g2b2_var._parameters.linhu = 8.8708; + _g2b2_var._parameters.louthu = 25.67745; + _g2b2_var._parameters.h1d = 0.03203; + _g2b2_var._parameters.h2d = 0.002; + _g2b2_var._parameters.linhd = 8.8708; + _g2b2_var._parameters.louthd = 25.67745; + _g2b2_var._parameters.l = 1.4517500000000005; + _g2b2_var._parameters.R0 = 0.99; + _g2b2_var._parameters.Qcxl = 0.0217; + _g2b2_var._parameters.Qcxr = 0.0217; + _g2b2_var._parameters.Qcyu = 0.023; + _g2b2_var._parameters.Qcyd = 0.023; + _g2b2_var._parameters.alphaxl = 2.5; + _g2b2_var._parameters.alphaxr = 2.5; + _g2b2_var._parameters.alphayu = 1.8; + _g2b2_var._parameters.alphayd = 1.8; + _g2b2_var._parameters.Wxr = 0.015; + _g2b2_var._parameters.Wxl = 0.015; + _g2b2_var._parameters.Wyu = 0.015; + _g2b2_var._parameters.Wyd = 0.015; + _g2b2_var._parameters.mxr = 4; + _g2b2_var._parameters.mxl = 4; + _g2b2_var._parameters.myu = 2; + _g2b2_var._parameters.myd = 2; + _g2b2_var._parameters.QcxrOW = 0.0217; + _g2b2_var._parameters.QcxlOW = 0.0217; + _g2b2_var._parameters.QcyuOW = 0.0217; + _g2b2_var._parameters.QcydOW = 0.0217; + _g2b2_var._parameters.alphaxlOW = 6.07; + _g2b2_var._parameters.alphaxrOW = 6.07; + _g2b2_var._parameters.alphayuOW = 6.07; + _g2b2_var._parameters.alphaydOW = 6.07; + _g2b2_var._parameters.WxrOW = 0.003; + _g2b2_var._parameters.WxlOW = 0.003; + _g2b2_var._parameters.WyuOW = 0.003; + _g2b2_var._parameters.WydOW = 0.003; + _g2b2_var._parameters.mxrOW = 0; + _g2b2_var._parameters.mxlOW = 0; + _g2b2_var._parameters.myuOW = 0; + _g2b2_var._parameters.mydOW = 0; + _g2b2_var._parameters.rwallthick = 0.001; + _g2b2_var._parameters.lwallthick = 0.001; + _g2b2_var._parameters.uwallthick = 0.001; + _g2b2_var._parameters.dwallthick = 0.001; + + + /* component g2b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b2_var._rotation_absolute); + rot_transpose(_g2b1_var._rotation_absolute, tr1); + rot_mul(_g2b2_var._rotation_absolute, tr1, _g2b2_var._rotation_relative); + _g2b2_var._rotation_is_identity = rot_test_identity(_g2b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 8.8668); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b1_var._position_absolute, _g2b2_var._position_absolute); + _g2b2_var._position_relative = rot_apply(_g2b2_var._rotation_absolute, tc1); + } /* g2b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute); + instrument->_position_absolute[35] = _g2b2_var._position_absolute; + instrument->_position_relative[35] = _g2b2_var._position_relative; + _g2b2_var._position_relative_is_zero = coords_test_zero(_g2b2_var._position_relative); + instrument->counter_N[35] = instrument->counter_P[35] = instrument->counter_P2[35] = 0; + instrument->counter_AbsorbProp[35]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0034_g2b2", _g2b2_var._position_absolute, _g2b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "w1l", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "linwl", "0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "loutwl", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "w1r", "0.002", "0.02811","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "linwr", "0.0", "1.8707999999999991","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "loutwr", "0", "9.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "h1u", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "linhu", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "louthu", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "h1d", "0.002", "0.03203","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "linhd", "0.0", "8.8708","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "louthd", "0", "25.67745","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0034_g2b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b2_setpos */ + +/* component g2b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b3_setpos] component g2b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b3_var._name, "g2b3", 16384); + stracpy(_g2b3_var._type, "Guide_four_side", 16384); + _g2b3_var._index=36; + int current_setpos_index = 36; + _g2b3_var._parameters.RIreflect[0]='\0'; + _g2b3_var._parameters.LIreflect[0]='\0'; + _g2b3_var._parameters.UIreflect[0]='\0'; + _g2b3_var._parameters.DIreflect[0]='\0'; + _g2b3_var._parameters.ROreflect[0]='\0'; + _g2b3_var._parameters.LOreflect[0]='\0'; + _g2b3_var._parameters.UOreflect[0]='\0'; + _g2b3_var._parameters.DOreflect[0]='\0'; + _g2b3_var._parameters.w1l = 0.03493; + _g2b3_var._parameters.w2l = 0.002; + _g2b3_var._parameters.linwl = 3.3230500000000003; + _g2b3_var._parameters.loutwl = 8.2252; + _g2b3_var._parameters.w1r = 0.03493; + _g2b3_var._parameters.w2r = 0.002; + _g2b3_var._parameters.linwr = 3.3230500000000003; + _g2b3_var._parameters.loutwr = 8.2252; + _g2b3_var._parameters.h1u = 0.033615; + _g2b3_var._parameters.h2u = 0.002; + _g2b3_var._parameters.linhu = 10.32305; + _g2b3_var._parameters.louthu = 24.2252; + _g2b3_var._parameters.h1d = 0.033615; + _g2b3_var._parameters.h2d = 0.002; + _g2b3_var._parameters.linhd = 10.32305; + _g2b3_var._parameters.louthd = 24.2252; + _g2b3_var._parameters.l = 1.4517500000000005; + _g2b3_var._parameters.R0 = 0.99; + _g2b3_var._parameters.Qcxl = 0.0217; + _g2b3_var._parameters.Qcxr = 0.0217; + _g2b3_var._parameters.Qcyu = 0.023; + _g2b3_var._parameters.Qcyd = 0.023; + _g2b3_var._parameters.alphaxl = 2.5; + _g2b3_var._parameters.alphaxr = 2.5; + _g2b3_var._parameters.alphayu = 1.8; + _g2b3_var._parameters.alphayd = 1.8; + _g2b3_var._parameters.Wxr = 0.015; + _g2b3_var._parameters.Wxl = 0.015; + _g2b3_var._parameters.Wyu = 0.015; + _g2b3_var._parameters.Wyd = 0.015; + _g2b3_var._parameters.mxr = 4; + _g2b3_var._parameters.mxl = 4; + _g2b3_var._parameters.myu = 2; + _g2b3_var._parameters.myd = 2; + _g2b3_var._parameters.QcxrOW = 0.0217; + _g2b3_var._parameters.QcxlOW = 0.0217; + _g2b3_var._parameters.QcyuOW = 0.0217; + _g2b3_var._parameters.QcydOW = 0.0217; + _g2b3_var._parameters.alphaxlOW = 6.07; + _g2b3_var._parameters.alphaxrOW = 6.07; + _g2b3_var._parameters.alphayuOW = 6.07; + _g2b3_var._parameters.alphaydOW = 6.07; + _g2b3_var._parameters.WxrOW = 0.003; + _g2b3_var._parameters.WxlOW = 0.003; + _g2b3_var._parameters.WyuOW = 0.003; + _g2b3_var._parameters.WydOW = 0.003; + _g2b3_var._parameters.mxrOW = 0; + _g2b3_var._parameters.mxlOW = 0; + _g2b3_var._parameters.myuOW = 0; + _g2b3_var._parameters.mydOW = 0; + _g2b3_var._parameters.rwallthick = 0.001; + _g2b3_var._parameters.lwallthick = 0.001; + _g2b3_var._parameters.uwallthick = 0.001; + _g2b3_var._parameters.dwallthick = 0.001; + + + /* component g2b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b3_var._rotation_absolute); + rot_transpose(_g2b2_var._rotation_absolute, tr1); + rot_mul(_g2b3_var._rotation_absolute, tr1, _g2b3_var._rotation_relative); + _g2b3_var._rotation_is_identity = rot_test_identity(_g2b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 10.31905); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b2_var._position_absolute, _g2b3_var._position_absolute); + _g2b3_var._position_relative = rot_apply(_g2b3_var._rotation_absolute, tc1); + } /* g2b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute); + instrument->_position_absolute[36] = _g2b3_var._position_absolute; + instrument->_position_relative[36] = _g2b3_var._position_relative; + _g2b3_var._position_relative_is_zero = coords_test_zero(_g2b3_var._position_relative); + instrument->counter_N[36] = instrument->counter_P[36] = instrument->counter_P2[36] = 0; + instrument->counter_AbsorbProp[36]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0035_g2b3", _g2b3_var._position_absolute, _g2b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "w1l", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "linwl", "0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "loutwl", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "w1r", "0.002", "0.03493","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "linwr", "0.0", "3.3230500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "loutwr", "0", "8.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "h1u", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "linhu", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "louthu", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "h1d", "0.002", "0.033615","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "linhd", "0.0", "10.32305","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "louthd", "0", "24.2252","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "l", "0", "1.4517500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0035_g2b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b3_setpos */ + +/* component g2b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2b4_setpos] component g2b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2b4_var._name, "g2b4", 16384); + stracpy(_g2b4_var._type, "Guide_four_side", 16384); + _g2b4_var._index=37; + int current_setpos_index = 37; + _g2b4_var._parameters.RIreflect[0]='\0'; + _g2b4_var._parameters.LIreflect[0]='\0'; + _g2b4_var._parameters.UIreflect[0]='\0'; + _g2b4_var._parameters.DIreflect[0]='\0'; + _g2b4_var._parameters.ROreflect[0]='\0'; + _g2b4_var._parameters.LOreflect[0]='\0'; + _g2b4_var._parameters.UOreflect[0]='\0'; + _g2b4_var._parameters.DOreflect[0]='\0'; + _g2b4_var._parameters.w1l = 0.03862; + _g2b4_var._parameters.w2l = 0.002; + _g2b4_var._parameters.linwl = 4.7858; + _g2b4_var._parameters.loutwl = 7.804500000000001; + _g2b4_var._parameters.w1r = 0.03862; + _g2b4_var._parameters.w2r = 0.002; + _g2b4_var._parameters.linwr = 4.7858; + _g2b4_var._parameters.loutwr = 7.804500000000001; + _g2b4_var._parameters.h1u = 0.03488; + _g2b4_var._parameters.h2u = 0.002; + _g2b4_var._parameters.linhu = 11.7858; + _g2b4_var._parameters.louthu = 23.8045; + _g2b4_var._parameters.h1d = 0.03488; + _g2b4_var._parameters.h2d = 0.002; + _g2b4_var._parameters.linhd = 11.7858; + _g2b4_var._parameters.louthd = 23.8045; + _g2b4_var._parameters.l = 0.40969999999999906; + _g2b4_var._parameters.R0 = 0.99; + _g2b4_var._parameters.Qcxl = 0.0217; + _g2b4_var._parameters.Qcxr = 0.0217; + _g2b4_var._parameters.Qcyu = 0.023; + _g2b4_var._parameters.Qcyd = 0.023; + _g2b4_var._parameters.alphaxl = 2.5; + _g2b4_var._parameters.alphaxr = 2.5; + _g2b4_var._parameters.alphayu = 1.8; + _g2b4_var._parameters.alphayd = 1.8; + _g2b4_var._parameters.Wxr = 0.015; + _g2b4_var._parameters.Wxl = 0.015; + _g2b4_var._parameters.Wyu = 0.015; + _g2b4_var._parameters.Wyd = 0.015; + _g2b4_var._parameters.mxr = 4; + _g2b4_var._parameters.mxl = 4; + _g2b4_var._parameters.myu = 2; + _g2b4_var._parameters.myd = 2; + _g2b4_var._parameters.QcxrOW = 0.0217; + _g2b4_var._parameters.QcxlOW = 0.0217; + _g2b4_var._parameters.QcyuOW = 0.0217; + _g2b4_var._parameters.QcydOW = 0.0217; + _g2b4_var._parameters.alphaxlOW = 6.07; + _g2b4_var._parameters.alphaxrOW = 6.07; + _g2b4_var._parameters.alphayuOW = 6.07; + _g2b4_var._parameters.alphaydOW = 6.07; + _g2b4_var._parameters.WxrOW = 0.003; + _g2b4_var._parameters.WxlOW = 0.003; + _g2b4_var._parameters.WyuOW = 0.003; + _g2b4_var._parameters.WydOW = 0.003; + _g2b4_var._parameters.mxrOW = 0; + _g2b4_var._parameters.mxlOW = 0; + _g2b4_var._parameters.myuOW = 0; + _g2b4_var._parameters.mydOW = 0; + _g2b4_var._parameters.rwallthick = 0.001; + _g2b4_var._parameters.lwallthick = 0.001; + _g2b4_var._parameters.uwallthick = 0.001; + _g2b4_var._parameters.dwallthick = 0.001; + + + /* component g2b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2b4_var._rotation_absolute); + rot_transpose(_g2b3_var._rotation_absolute, tr1); + rot_mul(_g2b4_var._rotation_absolute, tr1, _g2b4_var._rotation_relative); + _g2b4_var._rotation_is_identity = rot_test_identity(_g2b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 11.7818); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b3_var._position_absolute, _g2b4_var._position_absolute); + _g2b4_var._position_relative = rot_apply(_g2b4_var._rotation_absolute, tc1); + } /* g2b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute); + instrument->_position_absolute[37] = _g2b4_var._position_absolute; + instrument->_position_relative[37] = _g2b4_var._position_relative; + _g2b4_var._position_relative_is_zero = coords_test_zero(_g2b4_var._position_relative); + instrument->counter_N[37] = instrument->counter_P[37] = instrument->counter_P2[37] = 0; + instrument->counter_AbsorbProp[37]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0036_g2b4", _g2b4_var._position_absolute, _g2b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "w1l", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "linwl", "0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "loutwl", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "w1r", "0.002", "0.03862","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "linwr", "0.0", "4.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "loutwr", "0", "7.804500000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "linhu", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "louthu", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "linhd", "0.0", "11.7858","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "louthd", "0", "23.8045","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "l", "0", "0.40969999999999906","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0036_g2b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2b4_setpos */ + +/* component fo2_position=Arm() SETTING, POSITION/ROTATION */ +int _fo2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo2_position_setpos] component fo2_position=Arm() SETTING [Arm:0]"); + stracpy(_fo2_position_var._name, "fo2_position", 16384); + stracpy(_fo2_position_var._type, "Arm", 16384); + _fo2_position_var._index=38; + int current_setpos_index = 38; + /* component fo2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo2_position_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo2_position_var._rotation_absolute, tr1, _fo2_position_var._rotation_relative); + _fo2_position_var._rotation_is_identity = rot_test_identity(_fo2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.2); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo2_position_var._position_absolute); + _fo2_position_var._position_relative = rot_apply(_fo2_position_var._rotation_absolute, tc1); + } /* fo2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute); + instrument->_position_absolute[38] = _fo2_position_var._position_absolute; + instrument->_position_relative[38] = _fo2_position_var._position_relative; + _fo2_position_var._position_relative_is_zero = coords_test_zero(_fo2_position_var._position_relative); + instrument->counter_N[38] = instrument->counter_P[38] = instrument->counter_P2[38] = 0; + instrument->counter_AbsorbProp[38]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0037_fo2_position", _fo2_position_var._position_absolute, _fo2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo2_position_setpos */ + +/* component fo_chopper_2=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_2_setpos] component fo_chopper_2=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_2_var._name, "fo_chopper_2", 16384); + stracpy(_fo_chopper_2_var._type, "MultiDiskChopper", 16384); + _fo_chopper_2_var._index=39; + int current_setpos_index = 39; + if("-127.07;165.08;101.46;41.97;-13.98;-67.15" && strlen("-127.07;165.08;101.46;41.97;-13.98;-67.15")) + stracpy(_fo_chopper_2_var._parameters.slit_center, "-127.07;165.08;101.46;41.97;-13.98;-67.15" ? "-127.07;165.08;101.46;41.97;-13.98;-67.15" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_center[0]='\0'; + if("32.9;33.54;34.15;34.37;34.89;34.31" && strlen("32.9;33.54;34.15;34.37;34.89;34.31")) + stracpy(_fo_chopper_2_var._parameters.slit_width, "32.9;33.54;34.15;34.37;34.89;34.31" ? "32.9;33.54;34.15;34.37;34.89;34.31" : "", 16384); + else + _fo_chopper_2_var._parameters.slit_width[0]='\0'; + _fo_chopper_2_var._parameters.nslits = 6; + _fo_chopper_2_var._parameters.delta_y = -0.46; + _fo_chopper_2_var._parameters.nu = -42.0; + _fo_chopper_2_var._parameters.nrev = 0; + _fo_chopper_2_var._parameters.ratio = 1; + _fo_chopper_2_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_2; + _fo_chopper_2_var._parameters.delay = 0; + _fo_chopper_2_var._parameters.isfirst = 0; + _fo_chopper_2_var._parameters.phase = fo2_phase; + _fo_chopper_2_var._parameters.radius = 0.5; + _fo_chopper_2_var._parameters.equal = 0; + _fo_chopper_2_var._parameters.abs_out = 0; + _fo_chopper_2_var._parameters.verbose = 0; + + + /* component fo_chopper_2=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo2_position_var._rotation_absolute, _fo_chopper_2_var._rotation_absolute); + rot_transpose(_g2b4_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_2_var._rotation_absolute, tr1, _fo_chopper_2_var._rotation_relative); + _fo_chopper_2_var._rotation_is_identity = rot_test_identity(_fo_chopper_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_2_var._position_absolute = coords_add(_fo2_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2b4_var._position_absolute, _fo_chopper_2_var._position_absolute); + _fo_chopper_2_var._position_relative = rot_apply(_fo_chopper_2_var._rotation_absolute, tc1); + } /* fo_chopper_2=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute); + instrument->_position_absolute[39] = _fo_chopper_2_var._position_absolute; + instrument->_position_relative[39] = _fo_chopper_2_var._position_relative; + _fo_chopper_2_var._position_relative_is_zero = coords_test_zero(_fo_chopper_2_var._position_relative); + instrument->counter_N[39] = instrument->counter_P[39] = instrument->counter_P2[39] = 0; + instrument->counter_AbsorbProp[39]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0038_fo_chopper_2", _fo_chopper_2_var._position_absolute, _fo_chopper_2_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "slit_center", "0 180", "-127.07;165.08;101.46;41.97;-13.98;-67.15", "char*"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "slit_width", "10 20", "32.9;33.54;34.15;34.37;34.89;34.31", "char*"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "delta_y", "-0.3", "-0.46","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "nu", "0", "-42.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_2","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "phase", "0", "fo2_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "radius", "0.375", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0038_fo_chopper_2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_2_setpos */ + +/* component bp2_position=Arm() SETTING, POSITION/ROTATION */ +int _bp2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp2_position_setpos] component bp2_position=Arm() SETTING [Arm:0]"); + stracpy(_bp2_position_var._name, "bp2_position", 16384); + stracpy(_bp2_position_var._type, "Arm", 16384); + _bp2_position_var._index=40; + int current_setpos_index = 40; + /* component bp2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _bp2_position_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp2_position_var._rotation_absolute, tr1, _bp2_position_var._rotation_relative); + _bp2_position_var._rotation_is_identity = rot_test_identity(_bp2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp2_position_var._position_absolute); + _bp2_position_var._position_relative = rot_apply(_bp2_position_var._rotation_absolute, tc1); + } /* bp2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute); + instrument->_position_absolute[40] = _bp2_position_var._position_absolute; + instrument->_position_relative[40] = _bp2_position_var._position_relative; + _bp2_position_var._position_relative_is_zero = coords_test_zero(_bp2_position_var._position_relative); + instrument->counter_N[40] = instrument->counter_P[40] = instrument->counter_P2[40] = 0; + instrument->counter_AbsorbProp[40]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0039_bp2_position", _bp2_position_var._position_absolute, _bp2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp2_position_setpos */ + +/* component bp_chopper2=DiskChopper() SETTING, POSITION/ROTATION */ +int _bp_chopper2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_bp_chopper2_setpos] component bp_chopper2=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_bp_chopper2_var._name, "bp_chopper2", 16384); + stracpy(_bp_chopper2_var._type, "DiskChopper", 16384); + _bp_chopper2_var._index=41; + int current_setpos_index = 41; + _bp_chopper2_var._parameters.theta_0 = 67.49; + _bp_chopper2_var._parameters.radius = 0.5; + _bp_chopper2_var._parameters.yheight = 0.08; + _bp_chopper2_var._parameters.nu = _instrument_var._parameters.bp_frequency; + _bp_chopper2_var._parameters.nslit = 1; + _bp_chopper2_var._parameters.jitter = _instrument_var._parameters.jitter_bp2; + _bp_chopper2_var._parameters.delay = 0; + _bp_chopper2_var._parameters.isfirst = 0; + _bp_chopper2_var._parameters.n_pulse = 1; + _bp_chopper2_var._parameters.abs_out = 1; + _bp_chopper2_var._parameters.phase = bp2_phase -141.795; + _bp_chopper2_var._parameters.xwidth = 0; + _bp_chopper2_var._parameters.verbose = 0; + + + /* component bp_chopper2=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _bp2_position_var._rotation_absolute, _bp_chopper2_var._rotation_absolute); + rot_transpose(_fo_chopper_2_var._rotation_absolute, tr1); + rot_mul(_bp_chopper2_var._rotation_absolute, tr1, _bp_chopper2_var._rotation_relative); + _bp_chopper2_var._rotation_is_identity = rot_test_identity(_bp_chopper2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_bp2_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _bp_chopper2_var._position_absolute = coords_add(_bp2_position_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_2_var._position_absolute, _bp_chopper2_var._position_absolute); + _bp_chopper2_var._position_relative = rot_apply(_bp_chopper2_var._rotation_absolute, tc1); + } /* bp_chopper2=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute); + instrument->_position_absolute[41] = _bp_chopper2_var._position_absolute; + instrument->_position_relative[41] = _bp_chopper2_var._position_relative; + _bp_chopper2_var._position_relative_is_zero = coords_test_zero(_bp_chopper2_var._position_relative); + instrument->counter_N[41] = instrument->counter_P[41] = instrument->counter_P2[41] = 0; + instrument->counter_AbsorbProp[41]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0040_bp_chopper2", _bp_chopper2_var._position_absolute, _bp_chopper2_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "theta_0", "0", "67.49","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "radius", "0.5", "0.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "yheight", "NONE", "0.08","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "nu", "NONE", "_instrument_var._parameters.bp_frequency","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "jitter", "0", "_instrument_var._parameters.jitter_bp2","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "phase", "0", "bp2_phase -141.795","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0040_bp_chopper2", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _bp_chopper2_setpos */ + +/* component g2c1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g2c1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g2c1_setpos] component g2c1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g2c1_var._name, "g2c1", 16384); + stracpy(_g2c1_var._type, "Guide_four_side", 16384); + _g2c1_var._index=42; + int current_setpos_index = 42; + _g2c1_var._parameters.RIreflect[0]='\0'; + _g2c1_var._parameters.LIreflect[0]='\0'; + _g2c1_var._parameters.UIreflect[0]='\0'; + _g2c1_var._parameters.DIreflect[0]='\0'; + _g2c1_var._parameters.ROreflect[0]='\0'; + _g2c1_var._parameters.LOreflect[0]='\0'; + _g2c1_var._parameters.UOreflect[0]='\0'; + _g2c1_var._parameters.DOreflect[0]='\0'; + _g2c1_var._parameters.w1l = 0.03929; + _g2c1_var._parameters.w2l = 0.002; + _g2c1_var._parameters.linwl = 5.250249999999999; + _g2c1_var._parameters.loutwl = 6.536899999999999; + _g2c1_var._parameters.w1r = 0.03929; + _g2c1_var._parameters.w2r = 0.002; + _g2c1_var._parameters.linwr = 5.250249999999999; + _g2c1_var._parameters.loutwr = 6.536899999999999; + _g2c1_var._parameters.h1u = 0.03488; + _g2c1_var._parameters.h2u = 0.002; + _g2c1_var._parameters.linhu = 12.25025; + _g2c1_var._parameters.louthu = 22.5369; + _g2c1_var._parameters.h1d = 0.03488; + _g2c1_var._parameters.h2d = 0.002; + _g2c1_var._parameters.linhd = 12.25025; + _g2c1_var._parameters.louthd = 22.5369; + _g2c1_var._parameters.l = 1.2128500000000013; + _g2c1_var._parameters.R0 = 0.99; + _g2c1_var._parameters.Qcxl = 0.0217; + _g2c1_var._parameters.Qcxr = 0.0217; + _g2c1_var._parameters.Qcyu = 0.023; + _g2c1_var._parameters.Qcyd = 0.023; + _g2c1_var._parameters.alphaxl = 2.5; + _g2c1_var._parameters.alphaxr = 2.5; + _g2c1_var._parameters.alphayu = 1.8; + _g2c1_var._parameters.alphayd = 1.8; + _g2c1_var._parameters.Wxr = 0.015; + _g2c1_var._parameters.Wxl = 0.015; + _g2c1_var._parameters.Wyu = 0.015; + _g2c1_var._parameters.Wyd = 0.015; + _g2c1_var._parameters.mxr = 3.5; + _g2c1_var._parameters.mxl = 3.5; + _g2c1_var._parameters.myu = 2; + _g2c1_var._parameters.myd = 2; + _g2c1_var._parameters.QcxrOW = 0.0217; + _g2c1_var._parameters.QcxlOW = 0.0217; + _g2c1_var._parameters.QcyuOW = 0.0217; + _g2c1_var._parameters.QcydOW = 0.0217; + _g2c1_var._parameters.alphaxlOW = 6.07; + _g2c1_var._parameters.alphaxrOW = 6.07; + _g2c1_var._parameters.alphayuOW = 6.07; + _g2c1_var._parameters.alphaydOW = 6.07; + _g2c1_var._parameters.WxrOW = 0.003; + _g2c1_var._parameters.WxlOW = 0.003; + _g2c1_var._parameters.WyuOW = 0.003; + _g2c1_var._parameters.WydOW = 0.003; + _g2c1_var._parameters.mxrOW = 0; + _g2c1_var._parameters.mxlOW = 0; + _g2c1_var._parameters.myuOW = 0; + _g2c1_var._parameters.mydOW = 0; + _g2c1_var._parameters.rwallthick = 0.001; + _g2c1_var._parameters.lwallthick = 0.001; + _g2c1_var._parameters.uwallthick = 0.001; + _g2c1_var._parameters.dwallthick = 0.001; + + + /* component g2c1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g2c1_var._rotation_absolute); + rot_transpose(_bp_chopper2_var._rotation_absolute, tr1); + rot_mul(_g2c1_var._rotation_absolute, tr1, _g2c1_var._rotation_relative); + _g2c1_var._rotation_is_identity = rot_test_identity(_g2c1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 12.254249999999999); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g2c1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_bp_chopper2_var._position_absolute, _g2c1_var._position_absolute); + _g2c1_var._position_relative = rot_apply(_g2c1_var._rotation_absolute, tc1); + } /* g2c1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute); + instrument->_position_absolute[42] = _g2c1_var._position_absolute; + instrument->_position_relative[42] = _g2c1_var._position_relative; + _g2c1_var._position_relative_is_zero = coords_test_zero(_g2c1_var._position_relative); + instrument->counter_N[42] = instrument->counter_P[42] = instrument->counter_P2[42] = 0; + instrument->counter_AbsorbProp[42]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0041_g2c1", _g2c1_var._position_absolute, _g2c1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "w1l", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "linwl", "0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "loutwl", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "w1r", "0.002", "0.03929","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "linwr", "0.0", "5.250249999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "loutwr", "0", "6.536899999999999","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "h1u", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "linhu", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "louthu", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "h1d", "0.002", "0.03488","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "linhd", "0.0", "12.25025","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "louthd", "0", "22.5369","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "l", "0", "1.2128500000000013","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0041_g2c1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g2c1_setpos */ + +/* component t0_start_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_start_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_start_position_setpos] component t0_start_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_start_position_var._name, "t0_start_position", 16384); + stracpy(_t0_start_position_var._type, "Arm", 16384); + _t0_start_position_var._index=43; + int current_setpos_index = 43; + /* component t0_start_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_start_position_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_start_position_var._rotation_absolute, tr1, _t0_start_position_var._rotation_relative); + _t0_start_position_var._rotation_is_identity = rot_test_identity(_t0_start_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.503); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_start_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_start_position_var._position_absolute); + _t0_start_position_var._position_relative = rot_apply(_t0_start_position_var._rotation_absolute, tc1); + } /* t0_start_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute); + instrument->_position_absolute[43] = _t0_start_position_var._position_absolute; + instrument->_position_relative[43] = _t0_start_position_var._position_relative; + _t0_start_position_var._position_relative_is_zero = coords_test_zero(_t0_start_position_var._position_relative); + instrument->counter_N[43] = instrument->counter_P[43] = instrument->counter_P2[43] = 0; + instrument->counter_AbsorbProp[43]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0042_t0_start_position", _t0_start_position_var._position_absolute, _t0_start_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_start_position_setpos */ + +/* component t0_chopper_alpha=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_alpha_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_alpha_setpos] component t0_chopper_alpha=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_alpha_var._name, "t0_chopper_alpha", 16384); + stracpy(_t0_chopper_alpha_var._type, "DiskChopper", 16384); + _t0_chopper_alpha_var._index=44; + int current_setpos_index = 44; + _t0_chopper_alpha_var._parameters.theta_0 = 294.74; + _t0_chopper_alpha_var._parameters.radius = 0.32; + _t0_chopper_alpha_var._parameters.yheight = 0.075; + _t0_chopper_alpha_var._parameters.nu = 28.0; + _t0_chopper_alpha_var._parameters.nslit = 1; + _t0_chopper_alpha_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_alpha_var._parameters.delay = 0; + _t0_chopper_alpha_var._parameters.isfirst = 0; + _t0_chopper_alpha_var._parameters.n_pulse = 1; + _t0_chopper_alpha_var._parameters.abs_out = 1; + _t0_chopper_alpha_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_alpha_var._parameters.xwidth = 0; + _t0_chopper_alpha_var._parameters.verbose = 0; + + + /* component t0_chopper_alpha=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_start_position_var._rotation_absolute, _t0_chopper_alpha_var._rotation_absolute); + rot_transpose(_g2c1_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_alpha_var._rotation_absolute, tr1, _t0_chopper_alpha_var._rotation_relative); + _t0_chopper_alpha_var._rotation_is_identity = rot_test_identity(_t0_chopper_alpha_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_start_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_alpha_var._position_absolute = coords_add(_t0_start_position_var._position_absolute, tc2); + tc1 = coords_sub(_g2c1_var._position_absolute, _t0_chopper_alpha_var._position_absolute); + _t0_chopper_alpha_var._position_relative = rot_apply(_t0_chopper_alpha_var._rotation_absolute, tc1); + } /* t0_chopper_alpha=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute); + instrument->_position_absolute[44] = _t0_chopper_alpha_var._position_absolute; + instrument->_position_relative[44] = _t0_chopper_alpha_var._position_relative; + _t0_chopper_alpha_var._position_relative_is_zero = coords_test_zero(_t0_chopper_alpha_var._position_relative); + instrument->counter_N[44] = instrument->counter_P[44] = instrument->counter_P2[44] = 0; + instrument->counter_AbsorbProp[44]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0043_t0_chopper_alpha", _t0_chopper_alpha_var._position_absolute, _t0_chopper_alpha_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0043_t0_chopper_alpha", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_alpha_setpos */ + +/* component t0_end_position=Arm() SETTING, POSITION/ROTATION */ +int _t0_end_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_end_position_setpos] component t0_end_position=Arm() SETTING [Arm:0]"); + stracpy(_t0_end_position_var._name, "t0_end_position", 16384); + stracpy(_t0_end_position_var._type, "Arm", 16384); + _t0_end_position_var._index=45; + int current_setpos_index = 45; + /* component t0_end_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _t0_end_position_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_end_position_var._rotation_absolute, tr1, _t0_end_position_var._rotation_relative); + _t0_end_position_var._rotation_is_identity = rot_test_identity(_t0_end_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.703); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_end_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_end_position_var._position_absolute); + _t0_end_position_var._position_relative = rot_apply(_t0_end_position_var._rotation_absolute, tc1); + } /* t0_end_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute); + instrument->_position_absolute[45] = _t0_end_position_var._position_absolute; + instrument->_position_relative[45] = _t0_end_position_var._position_relative; + _t0_end_position_var._position_relative_is_zero = coords_test_zero(_t0_end_position_var._position_relative); + instrument->counter_N[45] = instrument->counter_P[45] = instrument->counter_P2[45] = 0; + instrument->counter_AbsorbProp[45]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0044_t0_end_position", _t0_end_position_var._position_absolute, _t0_end_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_end_position_setpos */ + +/* component t0_chopper_beta=DiskChopper() SETTING, POSITION/ROTATION */ +int _t0_chopper_beta_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_t0_chopper_beta_setpos] component t0_chopper_beta=DiskChopper() SETTING [DiskChopper:0]"); + stracpy(_t0_chopper_beta_var._name, "t0_chopper_beta", 16384); + stracpy(_t0_chopper_beta_var._type, "DiskChopper", 16384); + _t0_chopper_beta_var._index=46; + int current_setpos_index = 46; + _t0_chopper_beta_var._parameters.theta_0 = 294.74; + _t0_chopper_beta_var._parameters.radius = 0.32; + _t0_chopper_beta_var._parameters.yheight = 0.075; + _t0_chopper_beta_var._parameters.nu = 28.0; + _t0_chopper_beta_var._parameters.nslit = 1; + _t0_chopper_beta_var._parameters.jitter = _instrument_var._parameters.jit_t0_sec; + _t0_chopper_beta_var._parameters.delay = 0; + _t0_chopper_beta_var._parameters.isfirst = 0; + _t0_chopper_beta_var._parameters.n_pulse = 1; + _t0_chopper_beta_var._parameters.abs_out = 1; + _t0_chopper_beta_var._parameters.phase = t0_phase + 179.34; + _t0_chopper_beta_var._parameters.xwidth = 0; + _t0_chopper_beta_var._parameters.verbose = 0; + + + /* component t0_chopper_beta=DiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _t0_end_position_var._rotation_absolute, _t0_chopper_beta_var._rotation_absolute); + rot_transpose(_t0_chopper_alpha_var._rotation_absolute, tr1); + rot_mul(_t0_chopper_beta_var._rotation_absolute, tr1, _t0_chopper_beta_var._rotation_relative); + _t0_chopper_beta_var._rotation_is_identity = rot_test_identity(_t0_chopper_beta_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_t0_end_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _t0_chopper_beta_var._position_absolute = coords_add(_t0_end_position_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_alpha_var._position_absolute, _t0_chopper_beta_var._position_absolute); + _t0_chopper_beta_var._position_relative = rot_apply(_t0_chopper_beta_var._rotation_absolute, tc1); + } /* t0_chopper_beta=DiskChopper() AT ROTATED */ + DEBUG_COMPONENT("t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute); + instrument->_position_absolute[46] = _t0_chopper_beta_var._position_absolute; + instrument->_position_relative[46] = _t0_chopper_beta_var._position_relative; + _t0_chopper_beta_var._position_relative_is_zero = coords_test_zero(_t0_chopper_beta_var._position_relative); + instrument->counter_N[46] = instrument->counter_P[46] = instrument->counter_P2[46] = 0; + instrument->counter_AbsorbProp[46]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0045_t0_chopper_beta", _t0_chopper_beta_var._position_absolute, _t0_chopper_beta_var._rotation_absolute, "DiskChopper"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "theta_0", "0", "294.74","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "radius", "0.5", "0.32","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "yheight", "NONE", "0.075","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "nu", "NONE", "28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "nslit", "3", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "jitter", "0", "_instrument_var._parameters.jit_t0_sec","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "n_pulse", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "abs_out", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "phase", "0", "t0_phase + 179.34","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "xwidth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0045_t0_chopper_beta", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _t0_chopper_beta_setpos */ + +/* component g3a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a1_setpos] component g3a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a1_var._name, "g3a1", 16384); + stracpy(_g3a1_var._type, "Guide_four_side", 16384); + _g3a1_var._index=47; + int current_setpos_index = 47; + _g3a1_var._parameters.RIreflect[0]='\0'; + _g3a1_var._parameters.LIreflect[0]='\0'; + _g3a1_var._parameters.UIreflect[0]='\0'; + _g3a1_var._parameters.DIreflect[0]='\0'; + _g3a1_var._parameters.ROreflect[0]='\0'; + _g3a1_var._parameters.LOreflect[0]='\0'; + _g3a1_var._parameters.UOreflect[0]='\0'; + _g3a1_var._parameters.DOreflect[0]='\0'; + _g3a1_var._parameters.w1l = 0.04004; + _g3a1_var._parameters.w2l = 0.04004; + _g3a1_var._parameters.linwl = 0; + _g3a1_var._parameters.loutwl = 0; + _g3a1_var._parameters.w1r = 0.04004; + _g3a1_var._parameters.w2r = 0.04004; + _g3a1_var._parameters.linwr = 0.0; + _g3a1_var._parameters.loutwr = 0; + _g3a1_var._parameters.h1u = 0.03611; + _g3a1_var._parameters.h2u = 0.002; + _g3a1_var._parameters.linhu = 13.7559; + _g3a1_var._parameters.louthu = 20.2631; + _g3a1_var._parameters.h1d = 0.03611; + _g3a1_var._parameters.h2d = 0.002; + _g3a1_var._parameters.linhd = 13.7559; + _g3a1_var._parameters.louthd = 20.2631; + _g3a1_var._parameters.l = 1.981; + _g3a1_var._parameters.R0 = 0.99; + _g3a1_var._parameters.Qcxl = 0.0217; + _g3a1_var._parameters.Qcxr = 0.0217; + _g3a1_var._parameters.Qcyu = 0.023; + _g3a1_var._parameters.Qcyd = 0.023; + _g3a1_var._parameters.alphaxl = 2.5; + _g3a1_var._parameters.alphaxr = 2.5; + _g3a1_var._parameters.alphayu = 1.8; + _g3a1_var._parameters.alphayd = 1.8; + _g3a1_var._parameters.Wxr = 0.015; + _g3a1_var._parameters.Wxl = 0.015; + _g3a1_var._parameters.Wyu = 0.015; + _g3a1_var._parameters.Wyd = 0.015; + _g3a1_var._parameters.mxr = 3.5; + _g3a1_var._parameters.mxl = 3.5; + _g3a1_var._parameters.myu = 2; + _g3a1_var._parameters.myd = 2; + _g3a1_var._parameters.QcxrOW = 0.0217; + _g3a1_var._parameters.QcxlOW = 0.0217; + _g3a1_var._parameters.QcyuOW = 0.0217; + _g3a1_var._parameters.QcydOW = 0.0217; + _g3a1_var._parameters.alphaxlOW = 6.07; + _g3a1_var._parameters.alphaxrOW = 6.07; + _g3a1_var._parameters.alphayuOW = 6.07; + _g3a1_var._parameters.alphaydOW = 6.07; + _g3a1_var._parameters.WxrOW = 0.003; + _g3a1_var._parameters.WxlOW = 0.003; + _g3a1_var._parameters.WyuOW = 0.003; + _g3a1_var._parameters.WydOW = 0.003; + _g3a1_var._parameters.mxrOW = 0; + _g3a1_var._parameters.mxlOW = 0; + _g3a1_var._parameters.myuOW = 0; + _g3a1_var._parameters.mydOW = 0; + _g3a1_var._parameters.rwallthick = 0.001; + _g3a1_var._parameters.lwallthick = 0.001; + _g3a1_var._parameters.uwallthick = 0.001; + _g3a1_var._parameters.dwallthick = 0.001; + + + /* component g3a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a1_var._rotation_absolute); + rot_transpose(_t0_chopper_beta_var._rotation_absolute, tr1); + rot_mul(_g3a1_var._rotation_absolute, tr1, _g3a1_var._rotation_relative); + _g3a1_var._rotation_is_identity = rot_test_identity(_g3a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 13.7379); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_t0_chopper_beta_var._position_absolute, _g3a1_var._position_absolute); + _g3a1_var._position_relative = rot_apply(_g3a1_var._rotation_absolute, tc1); + } /* g3a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute); + instrument->_position_absolute[47] = _g3a1_var._position_absolute; + instrument->_position_relative[47] = _g3a1_var._position_relative; + _g3a1_var._position_relative_is_zero = coords_test_zero(_g3a1_var._position_relative); + instrument->counter_N[47] = instrument->counter_P[47] = instrument->counter_P2[47] = 0; + instrument->counter_AbsorbProp[47]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0046_g3a1", _g3a1_var._position_absolute, _g3a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "h1u", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "linhu", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "louthu", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "h1d", "0.002", "0.03611","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "linhd", "0.0", "13.7559","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "louthd", "0", "20.2631","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "l", "0", "1.981","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0046_g3a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a1_setpos */ + +/* component g3a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3a2_setpos] component g3a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3a2_var._name, "g3a2", 16384); + stracpy(_g3a2_var._type, "Guide_four_side", 16384); + _g3a2_var._index=48; + int current_setpos_index = 48; + _g3a2_var._parameters.RIreflect[0]='\0'; + _g3a2_var._parameters.LIreflect[0]='\0'; + _g3a2_var._parameters.UIreflect[0]='\0'; + _g3a2_var._parameters.DIreflect[0]='\0'; + _g3a2_var._parameters.ROreflect[0]='\0'; + _g3a2_var._parameters.LOreflect[0]='\0'; + _g3a2_var._parameters.UOreflect[0]='\0'; + _g3a2_var._parameters.DOreflect[0]='\0'; + _g3a2_var._parameters.w1l = 0.04004; + _g3a2_var._parameters.w2l = 0.04004; + _g3a2_var._parameters.linwl = 0; + _g3a2_var._parameters.loutwl = 0; + _g3a2_var._parameters.w1r = 0.04004; + _g3a2_var._parameters.w2r = 0.04004; + _g3a2_var._parameters.linwr = 0.0; + _g3a2_var._parameters.loutwr = 0; + _g3a2_var._parameters.h1u = 0.03687; + _g3a2_var._parameters.h2u = 0.002; + _g3a2_var._parameters.linhu = 15.7409; + _g3a2_var._parameters.louthu = 19.0055; + _g3a2_var._parameters.h1d = 0.03687; + _g3a2_var._parameters.h2d = 0.002; + _g3a2_var._parameters.linhd = 15.7409; + _g3a2_var._parameters.louthd = 19.0055; + _g3a2_var._parameters.l = 1.2535999999999987; + _g3a2_var._parameters.R0 = 0.99; + _g3a2_var._parameters.Qcxl = 0.0221; + _g3a2_var._parameters.Qcxr = 0.0221; + _g3a2_var._parameters.Qcyu = 0.023; + _g3a2_var._parameters.Qcyd = 0.023; + _g3a2_var._parameters.alphaxl = 1.75; + _g3a2_var._parameters.alphaxr = 1.75; + _g3a2_var._parameters.alphayu = 1.8; + _g3a2_var._parameters.alphayd = 1.8; + _g3a2_var._parameters.Wxr = 0.015; + _g3a2_var._parameters.Wxl = 0.015; + _g3a2_var._parameters.Wyu = 0.015; + _g3a2_var._parameters.Wyd = 0.015; + _g3a2_var._parameters.mxr = 3; + _g3a2_var._parameters.mxl = 3; + _g3a2_var._parameters.myu = 2; + _g3a2_var._parameters.myd = 2; + _g3a2_var._parameters.QcxrOW = 0.0217; + _g3a2_var._parameters.QcxlOW = 0.0217; + _g3a2_var._parameters.QcyuOW = 0.0217; + _g3a2_var._parameters.QcydOW = 0.0217; + _g3a2_var._parameters.alphaxlOW = 6.07; + _g3a2_var._parameters.alphaxrOW = 6.07; + _g3a2_var._parameters.alphayuOW = 6.07; + _g3a2_var._parameters.alphaydOW = 6.07; + _g3a2_var._parameters.WxrOW = 0.003; + _g3a2_var._parameters.WxlOW = 0.003; + _g3a2_var._parameters.WyuOW = 0.003; + _g3a2_var._parameters.WydOW = 0.003; + _g3a2_var._parameters.mxrOW = 0; + _g3a2_var._parameters.mxlOW = 0; + _g3a2_var._parameters.myuOW = 0; + _g3a2_var._parameters.mydOW = 0; + _g3a2_var._parameters.rwallthick = 0.001; + _g3a2_var._parameters.lwallthick = 0.001; + _g3a2_var._parameters.uwallthick = 0.001; + _g3a2_var._parameters.dwallthick = 0.001; + + + /* component g3a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3a2_var._rotation_absolute); + rot_transpose(_g3a1_var._rotation_absolute, tr1); + rot_mul(_g3a2_var._rotation_absolute, tr1, _g3a2_var._rotation_relative); + _g3a2_var._rotation_is_identity = rot_test_identity(_g3a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 15.7229); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a1_var._position_absolute, _g3a2_var._position_absolute); + _g3a2_var._position_relative = rot_apply(_g3a2_var._rotation_absolute, tc1); + } /* g3a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute); + instrument->_position_absolute[48] = _g3a2_var._position_absolute; + instrument->_position_relative[48] = _g3a2_var._position_relative; + _g3a2_var._position_relative_is_zero = coords_test_zero(_g3a2_var._position_relative); + instrument->counter_N[48] = instrument->counter_P[48] = instrument->counter_P2[48] = 0; + instrument->counter_AbsorbProp[48]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0047_g3a2", _g3a2_var._position_absolute, _g3a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "h1u", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "linhu", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "louthu", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "h1d", "0.002", "0.03687","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "linhd", "0.0", "15.7409","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "louthd", "0", "19.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "l", "0", "1.2535999999999987","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0047_g3a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3a2_setpos */ + +/* component fo3_position=Arm() SETTING, POSITION/ROTATION */ +int _fo3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo3_position_setpos] component fo3_position=Arm() SETTING [Arm:0]"); + stracpy(_fo3_position_var._name, "fo3_position", 16384); + stracpy(_fo3_position_var._type, "Arm", 16384); + _fo3_position_var._index=49; + int current_setpos_index = 49; + /* component fo3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo3_position_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo3_position_var._rotation_absolute, tr1, _fo3_position_var._rotation_relative); + _fo3_position_var._rotation_is_identity = rot_test_identity(_fo3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9865); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo3_position_var._position_absolute); + _fo3_position_var._position_relative = rot_apply(_fo3_position_var._rotation_absolute, tc1); + } /* fo3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute); + instrument->_position_absolute[49] = _fo3_position_var._position_absolute; + instrument->_position_relative[49] = _fo3_position_var._position_relative; + _fo3_position_var._position_relative_is_zero = coords_test_zero(_fo3_position_var._position_relative); + instrument->counter_N[49] = instrument->counter_P[49] = instrument->counter_P2[49] = 0; + instrument->counter_AbsorbProp[49]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0048_fo3_position", _fo3_position_var._position_absolute, _fo3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo3_position_setpos */ + +/* component fo_chopper_3=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_3_setpos] component fo_chopper_3=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_3_var._name, "fo_chopper_3", 16384); + stracpy(_fo_chopper_3_var._type, "MultiDiskChopper", 16384); + _fo_chopper_3_var._index=50; + int current_setpos_index = 50; + if("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" && strlen("45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08")) + stracpy(_fo_chopper_3_var._parameters.slit_center, "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" ? "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_center[0]='\0'; + if("40.32;39.61;38.94;38.31;37.72;36.06" && strlen("40.32;39.61;38.94;38.31;37.72;36.06")) + stracpy(_fo_chopper_3_var._parameters.slit_width, "40.32;39.61;38.94;38.31;37.72;36.06" ? "40.32;39.61;38.94;38.31;37.72;36.06" : "", 16384); + else + _fo_chopper_3_var._parameters.slit_width[0]='\0'; + _fo_chopper_3_var._parameters.nslits = 6; + _fo_chopper_3_var._parameters.delta_y = -0.5575; + _fo_chopper_3_var._parameters.nu = -28.0; + _fo_chopper_3_var._parameters.nrev = 0; + _fo_chopper_3_var._parameters.ratio = 1; + _fo_chopper_3_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_3; + _fo_chopper_3_var._parameters.delay = 0; + _fo_chopper_3_var._parameters.isfirst = 0; + _fo_chopper_3_var._parameters.phase = fo3_phase; + _fo_chopper_3_var._parameters.radius = 0.6; + _fo_chopper_3_var._parameters.equal = 0; + _fo_chopper_3_var._parameters.abs_out = 0; + _fo_chopper_3_var._parameters.verbose = 0; + + + /* component fo_chopper_3=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo3_position_var._rotation_absolute, _fo_chopper_3_var._rotation_absolute); + rot_transpose(_g3a2_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_3_var._rotation_absolute, tr1, _fo_chopper_3_var._rotation_relative); + _fo_chopper_3_var._rotation_is_identity = rot_test_identity(_fo_chopper_3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo3_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_3_var._position_absolute = coords_add(_fo3_position_var._position_absolute, tc2); + tc1 = coords_sub(_g3a2_var._position_absolute, _fo_chopper_3_var._position_absolute); + _fo_chopper_3_var._position_relative = rot_apply(_fo_chopper_3_var._rotation_absolute, tc1); + } /* fo_chopper_3=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute); + instrument->_position_absolute[50] = _fo_chopper_3_var._position_absolute; + instrument->_position_relative[50] = _fo_chopper_3_var._position_relative; + _fo_chopper_3_var._position_relative_is_zero = coords_test_zero(_fo_chopper_3_var._position_relative); + instrument->counter_N[50] = instrument->counter_P[50] = instrument->counter_P2[50] = 0; + instrument->counter_AbsorbProp[50]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0049_fo_chopper_3", _fo_chopper_3_var._position_absolute, _fo_chopper_3_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "slit_center", "0 180", "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", "char*"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "slit_width", "10 20", "40.32;39.61;38.94;38.31;37.72;36.06", "char*"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "delta_y", "-0.3", "-0.5575","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "nu", "0", "-28.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_3","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "phase", "0", "fo3_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "radius", "0.375", "0.6","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0049_fo_chopper_3", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_3_setpos */ + +/* component g3b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g3b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g3b1_setpos] component g3b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g3b1_var._name, "g3b1", 16384); + stracpy(_g3b1_var._type, "Guide_four_side", 16384); + _g3b1_var._index=51; + int current_setpos_index = 51; + _g3b1_var._parameters.RIreflect[0]='\0'; + _g3b1_var._parameters.LIreflect[0]='\0'; + _g3b1_var._parameters.UIreflect[0]='\0'; + _g3b1_var._parameters.DIreflect[0]='\0'; + _g3b1_var._parameters.ROreflect[0]='\0'; + _g3b1_var._parameters.LOreflect[0]='\0'; + _g3b1_var._parameters.UOreflect[0]='\0'; + _g3b1_var._parameters.DOreflect[0]='\0'; + _g3b1_var._parameters.w1l = 0.04004; + _g3b1_var._parameters.w2l = 0.04004; + _g3b1_var._parameters.linwl = 0; + _g3b1_var._parameters.loutwl = 0; + _g3b1_var._parameters.w1r = 0.04004; + _g3b1_var._parameters.w2r = 0.04004; + _g3b1_var._parameters.linwr = 0.0; + _g3b1_var._parameters.loutwr = 0; + _g3b1_var._parameters.h1u = 0.03711; + _g3b1_var._parameters.h2u = 0.002; + _g3b1_var._parameters.linhu = 17.0055; + _g3b1_var._parameters.louthu = 18.038; + _g3b1_var._parameters.h1d = 0.03711; + _g3b1_var._parameters.h2d = 0.002; + _g3b1_var._parameters.linhd = 17.0055; + _g3b1_var._parameters.louthd = 18.038; + _g3b1_var._parameters.l = 0.9564999999999984; + _g3b1_var._parameters.R0 = 0.99; + _g3b1_var._parameters.Qcxl = 0.0221; + _g3b1_var._parameters.Qcxr = 0.0221; + _g3b1_var._parameters.Qcyu = 0.023; + _g3b1_var._parameters.Qcyd = 0.023; + _g3b1_var._parameters.alphaxl = 1.75; + _g3b1_var._parameters.alphaxr = 1.75; + _g3b1_var._parameters.alphayu = 1.8; + _g3b1_var._parameters.alphayd = 1.8; + _g3b1_var._parameters.Wxr = 0.015; + _g3b1_var._parameters.Wxl = 0.015; + _g3b1_var._parameters.Wyu = 0.015; + _g3b1_var._parameters.Wyd = 0.015; + _g3b1_var._parameters.mxr = 2.5; + _g3b1_var._parameters.mxl = 2.5; + _g3b1_var._parameters.myu = 2; + _g3b1_var._parameters.myd = 2; + _g3b1_var._parameters.QcxrOW = 0.0217; + _g3b1_var._parameters.QcxlOW = 0.0217; + _g3b1_var._parameters.QcyuOW = 0.0217; + _g3b1_var._parameters.QcydOW = 0.0217; + _g3b1_var._parameters.alphaxlOW = 6.07; + _g3b1_var._parameters.alphaxrOW = 6.07; + _g3b1_var._parameters.alphayuOW = 6.07; + _g3b1_var._parameters.alphaydOW = 6.07; + _g3b1_var._parameters.WxrOW = 0.003; + _g3b1_var._parameters.WxlOW = 0.003; + _g3b1_var._parameters.WyuOW = 0.003; + _g3b1_var._parameters.WydOW = 0.003; + _g3b1_var._parameters.mxrOW = 0; + _g3b1_var._parameters.mxlOW = 0; + _g3b1_var._parameters.myuOW = 0; + _g3b1_var._parameters.mydOW = 0; + _g3b1_var._parameters.rwallthick = 0.001; + _g3b1_var._parameters.lwallthick = 0.001; + _g3b1_var._parameters.uwallthick = 0.001; + _g3b1_var._parameters.dwallthick = 0.001; + + + /* component g3b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g3b1_var._rotation_absolute); + rot_transpose(_fo_chopper_3_var._rotation_absolute, tr1); + rot_mul(_g3b1_var._rotation_absolute, tr1, _g3b1_var._rotation_relative); + _g3b1_var._rotation_is_identity = rot_test_identity(_g3b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 16.9965); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g3b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_3_var._position_absolute, _g3b1_var._position_absolute); + _g3b1_var._position_relative = rot_apply(_g3b1_var._rotation_absolute, tc1); + } /* g3b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute); + instrument->_position_absolute[51] = _g3b1_var._position_absolute; + instrument->_position_relative[51] = _g3b1_var._position_relative; + _g3b1_var._position_relative_is_zero = coords_test_zero(_g3b1_var._position_relative); + instrument->counter_N[51] = instrument->counter_P[51] = instrument->counter_P2[51] = 0; + instrument->counter_AbsorbProp[51]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0050_g3b1", _g3b1_var._position_absolute, _g3b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "h1u", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "linhu", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "louthu", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "h1d", "0.002", "0.03711","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "linhd", "0.0", "17.0055","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "louthd", "0", "18.038","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "l", "0", "0.9564999999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0050_g3b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g3b1_setpos */ + +/* component g4a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a1_setpos] component g4a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a1_var._name, "g4a1", 16384); + stracpy(_g4a1_var._type, "Guide_four_side", 16384); + _g4a1_var._index=52; + int current_setpos_index = 52; + _g4a1_var._parameters.RIreflect[0]='\0'; + _g4a1_var._parameters.LIreflect[0]='\0'; + _g4a1_var._parameters.UIreflect[0]='\0'; + _g4a1_var._parameters.DIreflect[0]='\0'; + _g4a1_var._parameters.ROreflect[0]='\0'; + _g4a1_var._parameters.LOreflect[0]='\0'; + _g4a1_var._parameters.UOreflect[0]='\0'; + _g4a1_var._parameters.DOreflect[0]='\0'; + _g4a1_var._parameters.w1l = 0.04004; + _g4a1_var._parameters.w2l = 0.04004; + _g4a1_var._parameters.linwl = 0; + _g4a1_var._parameters.loutwl = 0; + _g4a1_var._parameters.w1r = 0.04004; + _g4a1_var._parameters.w2r = 0.04004; + _g4a1_var._parameters.linwr = 0.0; + _g4a1_var._parameters.loutwr = 0; + _g4a1_var._parameters.h1u = 0.037165; + _g4a1_var._parameters.h2u = 0.037165; + _g4a1_var._parameters.linhu = 0.0; + _g4a1_var._parameters.louthu = 0; + _g4a1_var._parameters.h1d = 0.037165; + _g4a1_var._parameters.h2d = 0.037165; + _g4a1_var._parameters.linhd = 0.0; + _g4a1_var._parameters.louthd = 0; + _g4a1_var._parameters.l = 1.2600000000000016; + _g4a1_var._parameters.R0 = 0.99; + _g4a1_var._parameters.Qcxl = 0.0221; + _g4a1_var._parameters.Qcxr = 0.0221; + _g4a1_var._parameters.Qcyu = 0.023; + _g4a1_var._parameters.Qcyd = 0.023; + _g4a1_var._parameters.alphaxl = 1.75; + _g4a1_var._parameters.alphaxr = 1.75; + _g4a1_var._parameters.alphayu = 1.8; + _g4a1_var._parameters.alphayd = 1.8; + _g4a1_var._parameters.Wxr = 0.015; + _g4a1_var._parameters.Wxl = 0.015; + _g4a1_var._parameters.Wyu = 0.015; + _g4a1_var._parameters.Wyd = 0.015; + _g4a1_var._parameters.mxr = 3; + _g4a1_var._parameters.mxl = 3; + _g4a1_var._parameters.myu = 2; + _g4a1_var._parameters.myd = 2; + _g4a1_var._parameters.QcxrOW = 0.0217; + _g4a1_var._parameters.QcxlOW = 0.0217; + _g4a1_var._parameters.QcyuOW = 0.0217; + _g4a1_var._parameters.QcydOW = 0.0217; + _g4a1_var._parameters.alphaxlOW = 6.07; + _g4a1_var._parameters.alphaxrOW = 6.07; + _g4a1_var._parameters.alphayuOW = 6.07; + _g4a1_var._parameters.alphaydOW = 6.07; + _g4a1_var._parameters.WxrOW = 0.003; + _g4a1_var._parameters.WxlOW = 0.003; + _g4a1_var._parameters.WyuOW = 0.003; + _g4a1_var._parameters.WydOW = 0.003; + _g4a1_var._parameters.mxrOW = 0; + _g4a1_var._parameters.mxlOW = 0; + _g4a1_var._parameters.myuOW = 0; + _g4a1_var._parameters.mydOW = 0; + _g4a1_var._parameters.rwallthick = 0.001; + _g4a1_var._parameters.lwallthick = 0.001; + _g4a1_var._parameters.uwallthick = 0.001; + _g4a1_var._parameters.dwallthick = 0.001; + + + /* component g4a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a1_var._rotation_absolute); + rot_transpose(_g3b1_var._rotation_absolute, tr1); + rot_mul(_g4a1_var._rotation_absolute, tr1, _g4a1_var._rotation_relative); + _g4a1_var._rotation_is_identity = rot_test_identity(_g4a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 17.964); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g3b1_var._position_absolute, _g4a1_var._position_absolute); + _g4a1_var._position_relative = rot_apply(_g4a1_var._rotation_absolute, tc1); + } /* g4a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute); + instrument->_position_absolute[52] = _g4a1_var._position_absolute; + instrument->_position_relative[52] = _g4a1_var._position_relative; + _g4a1_var._position_relative_is_zero = coords_test_zero(_g4a1_var._position_relative); + instrument->counter_N[52] = instrument->counter_P[52] = instrument->counter_P2[52] = 0; + instrument->counter_AbsorbProp[52]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0051_g4a1", _g4a1_var._position_absolute, _g4a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "l", "0", "1.2600000000000016","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0051_g4a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a1_setpos */ + +/* component monitor_2_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_2_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_2_position_setpos] component monitor_2_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_2_position_var._name, "monitor_2_position", 16384); + stracpy(_monitor_2_position_var._type, "Arm", 16384); + _monitor_2_position_var._index=53; + int current_setpos_index = 53; + /* component monitor_2_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_2_position_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_monitor_2_position_var._rotation_absolute, tr1, _monitor_2_position_var._rotation_relative); + _monitor_2_position_var._rotation_is_identity = rot_test_identity(_monitor_2_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.245); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_2_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _monitor_2_position_var._position_absolute); + _monitor_2_position_var._position_relative = rot_apply(_monitor_2_position_var._rotation_absolute, tc1); + } /* monitor_2_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute); + instrument->_position_absolute[53] = _monitor_2_position_var._position_absolute; + instrument->_position_relative[53] = _monitor_2_position_var._position_relative; + _monitor_2_position_var._position_relative_is_zero = coords_test_zero(_monitor_2_position_var._position_relative); + instrument->counter_N[53] = instrument->counter_P[53] = instrument->counter_P2[53] = 0; + instrument->counter_AbsorbProp[53]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0052_monitor_2_position", _monitor_2_position_var._position_absolute, _monitor_2_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_2_position_setpos */ + +/* component g4a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a2_setpos] component g4a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a2_var._name, "g4a2", 16384); + stracpy(_g4a2_var._type, "Guide_four_side", 16384); + _g4a2_var._index=54; + int current_setpos_index = 54; + _g4a2_var._parameters.RIreflect[0]='\0'; + _g4a2_var._parameters.LIreflect[0]='\0'; + _g4a2_var._parameters.UIreflect[0]='\0'; + _g4a2_var._parameters.DIreflect[0]='\0'; + _g4a2_var._parameters.ROreflect[0]='\0'; + _g4a2_var._parameters.LOreflect[0]='\0'; + _g4a2_var._parameters.UOreflect[0]='\0'; + _g4a2_var._parameters.DOreflect[0]='\0'; + _g4a2_var._parameters.w1l = 0.04004; + _g4a2_var._parameters.w2l = 0.04004; + _g4a2_var._parameters.linwl = 0; + _g4a2_var._parameters.loutwl = 0; + _g4a2_var._parameters.w1r = 0.04004; + _g4a2_var._parameters.w2r = 0.04004; + _g4a2_var._parameters.linwr = 0.0; + _g4a2_var._parameters.loutwr = 0; + _g4a2_var._parameters.h1u = 0.037165; + _g4a2_var._parameters.h2u = 0.037165; + _g4a2_var._parameters.linhu = 0.0; + _g4a2_var._parameters.louthu = 0; + _g4a2_var._parameters.h1d = 0.037165; + _g4a2_var._parameters.h2d = 0.037165; + _g4a2_var._parameters.linhd = 0.0; + _g4a2_var._parameters.louthd = 0; + _g4a2_var._parameters.l = 1.9997499999999988; + _g4a2_var._parameters.R0 = 0.99; + _g4a2_var._parameters.Qcxl = 0.0221; + _g4a2_var._parameters.Qcxr = 0.0221; + _g4a2_var._parameters.Qcyu = 0.023; + _g4a2_var._parameters.Qcyd = 0.023; + _g4a2_var._parameters.alphaxl = 1.75; + _g4a2_var._parameters.alphaxr = 1.75; + _g4a2_var._parameters.alphayu = 1.8; + _g4a2_var._parameters.alphayd = 1.8; + _g4a2_var._parameters.Wxr = 0.015; + _g4a2_var._parameters.Wxl = 0.015; + _g4a2_var._parameters.Wyu = 0.015; + _g4a2_var._parameters.Wyd = 0.015; + _g4a2_var._parameters.mxr = 2.5; + _g4a2_var._parameters.mxl = 2.5; + _g4a2_var._parameters.myu = 2; + _g4a2_var._parameters.myd = 2; + _g4a2_var._parameters.QcxrOW = 0.0217; + _g4a2_var._parameters.QcxlOW = 0.0217; + _g4a2_var._parameters.QcyuOW = 0.0217; + _g4a2_var._parameters.QcydOW = 0.0217; + _g4a2_var._parameters.alphaxlOW = 6.07; + _g4a2_var._parameters.alphaxrOW = 6.07; + _g4a2_var._parameters.alphayuOW = 6.07; + _g4a2_var._parameters.alphaydOW = 6.07; + _g4a2_var._parameters.WxrOW = 0.003; + _g4a2_var._parameters.WxlOW = 0.003; + _g4a2_var._parameters.WyuOW = 0.003; + _g4a2_var._parameters.WydOW = 0.003; + _g4a2_var._parameters.mxrOW = 0; + _g4a2_var._parameters.mxlOW = 0; + _g4a2_var._parameters.myuOW = 0; + _g4a2_var._parameters.mydOW = 0; + _g4a2_var._parameters.rwallthick = 0.001; + _g4a2_var._parameters.lwallthick = 0.001; + _g4a2_var._parameters.uwallthick = 0.001; + _g4a2_var._parameters.dwallthick = 0.001; + + + /* component g4a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a2_var._rotation_absolute); + rot_transpose(_g4a1_var._rotation_absolute, tr1); + rot_mul(_g4a2_var._rotation_absolute, tr1, _g4a2_var._rotation_relative); + _g4a2_var._rotation_is_identity = rot_test_identity(_g4a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 19.25); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a1_var._position_absolute, _g4a2_var._position_absolute); + _g4a2_var._position_relative = rot_apply(_g4a2_var._rotation_absolute, tc1); + } /* g4a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute); + instrument->_position_absolute[54] = _g4a2_var._position_absolute; + instrument->_position_relative[54] = _g4a2_var._position_relative; + _g4a2_var._position_relative_is_zero = coords_test_zero(_g4a2_var._position_relative); + instrument->counter_N[54] = instrument->counter_P[54] = instrument->counter_P2[54] = 0; + instrument->counter_AbsorbProp[54]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0053_g4a2", _g4a2_var._position_absolute, _g4a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0053_g4a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a2_setpos */ + +/* component g4a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4a3_setpos] component g4a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4a3_var._name, "g4a3", 16384); + stracpy(_g4a3_var._type, "Guide_four_side", 16384); + _g4a3_var._index=55; + int current_setpos_index = 55; + _g4a3_var._parameters.RIreflect[0]='\0'; + _g4a3_var._parameters.LIreflect[0]='\0'; + _g4a3_var._parameters.UIreflect[0]='\0'; + _g4a3_var._parameters.DIreflect[0]='\0'; + _g4a3_var._parameters.ROreflect[0]='\0'; + _g4a3_var._parameters.LOreflect[0]='\0'; + _g4a3_var._parameters.UOreflect[0]='\0'; + _g4a3_var._parameters.DOreflect[0]='\0'; + _g4a3_var._parameters.w1l = 0.04004; + _g4a3_var._parameters.w2l = 0.04004; + _g4a3_var._parameters.linwl = 0; + _g4a3_var._parameters.loutwl = 0; + _g4a3_var._parameters.w1r = 0.04004; + _g4a3_var._parameters.w2r = 0.04004; + _g4a3_var._parameters.linwr = 0.0; + _g4a3_var._parameters.loutwr = 0; + _g4a3_var._parameters.h1u = 0.037165; + _g4a3_var._parameters.h2u = 0.037165; + _g4a3_var._parameters.linhu = 0.0; + _g4a3_var._parameters.louthu = 0; + _g4a3_var._parameters.h1d = 0.037165; + _g4a3_var._parameters.h2d = 0.037165; + _g4a3_var._parameters.linhd = 0.0; + _g4a3_var._parameters.louthd = 0; + _g4a3_var._parameters.l = 2.4252499999999984; + _g4a3_var._parameters.R0 = 0.99; + _g4a3_var._parameters.Qcxl = 0.0221; + _g4a3_var._parameters.Qcxr = 0.0221; + _g4a3_var._parameters.Qcyu = 0.023; + _g4a3_var._parameters.Qcyd = 0.023; + _g4a3_var._parameters.alphaxl = 1.75; + _g4a3_var._parameters.alphaxr = 1.75; + _g4a3_var._parameters.alphayu = 1.8; + _g4a3_var._parameters.alphayd = 1.8; + _g4a3_var._parameters.Wxr = 0.015; + _g4a3_var._parameters.Wxl = 0.015; + _g4a3_var._parameters.Wyu = 0.015; + _g4a3_var._parameters.Wyd = 0.015; + _g4a3_var._parameters.mxr = 2.5; + _g4a3_var._parameters.mxl = 2.5; + _g4a3_var._parameters.myu = 2; + _g4a3_var._parameters.myd = 2; + _g4a3_var._parameters.QcxrOW = 0.0217; + _g4a3_var._parameters.QcxlOW = 0.0217; + _g4a3_var._parameters.QcyuOW = 0.0217; + _g4a3_var._parameters.QcydOW = 0.0217; + _g4a3_var._parameters.alphaxlOW = 6.07; + _g4a3_var._parameters.alphaxrOW = 6.07; + _g4a3_var._parameters.alphayuOW = 6.07; + _g4a3_var._parameters.alphaydOW = 6.07; + _g4a3_var._parameters.WxrOW = 0.003; + _g4a3_var._parameters.WxlOW = 0.003; + _g4a3_var._parameters.WyuOW = 0.003; + _g4a3_var._parameters.WydOW = 0.003; + _g4a3_var._parameters.mxrOW = 0; + _g4a3_var._parameters.mxlOW = 0; + _g4a3_var._parameters.myuOW = 0; + _g4a3_var._parameters.mydOW = 0; + _g4a3_var._parameters.rwallthick = 0.001; + _g4a3_var._parameters.lwallthick = 0.001; + _g4a3_var._parameters.uwallthick = 0.001; + _g4a3_var._parameters.dwallthick = 0.001; + + + /* component g4a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4a3_var._rotation_absolute); + rot_transpose(_g4a2_var._rotation_absolute, tr1); + rot_mul(_g4a3_var._rotation_absolute, tr1, _g4a3_var._rotation_relative); + _g4a3_var._rotation_is_identity = rot_test_identity(_g4a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 21.25025); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a2_var._position_absolute, _g4a3_var._position_absolute); + _g4a3_var._position_relative = rot_apply(_g4a3_var._rotation_absolute, tc1); + } /* g4a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute); + instrument->_position_absolute[55] = _g4a3_var._position_absolute; + instrument->_position_relative[55] = _g4a3_var._position_relative; + _g4a3_var._position_relative_is_zero = coords_test_zero(_g4a3_var._position_relative); + instrument->counter_N[55] = instrument->counter_P[55] = instrument->counter_P2[55] = 0; + instrument->counter_AbsorbProp[55]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0054_g4a3", _g4a3_var._position_absolute, _g4a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "l", "0", "2.4252499999999984","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0054_g4a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4a3_setpos */ + +/* component fo4_position=Arm() SETTING, POSITION/ROTATION */ +int _fo4_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo4_position_setpos] component fo4_position=Arm() SETTING [Arm:0]"); + stracpy(_fo4_position_var._name, "fo4_position", 16384); + stracpy(_fo4_position_var._type, "Arm", 16384); + _fo4_position_var._index=56; + int current_setpos_index = 56; + /* component fo4_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo4_position_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo4_position_var._rotation_absolute, tr1, _fo4_position_var._rotation_relative); + _fo4_position_var._rotation_is_identity = rot_test_identity(_fo4_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6855); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo4_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo4_position_var._position_absolute); + _fo4_position_var._position_relative = rot_apply(_fo4_position_var._rotation_absolute, tc1); + } /* fo4_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute); + instrument->_position_absolute[56] = _fo4_position_var._position_absolute; + instrument->_position_relative[56] = _fo4_position_var._position_relative; + _fo4_position_var._position_relative_is_zero = coords_test_zero(_fo4_position_var._position_relative); + instrument->counter_N[56] = instrument->counter_P[56] = instrument->counter_P2[56] = 0; + instrument->counter_AbsorbProp[56]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0055_fo4_position", _fo4_position_var._position_absolute, _fo4_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo4_position_setpos */ + +/* component fo_chopper_4=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_4_setpos] component fo_chopper_4=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_4_var._name, "fo_chopper_4", 16384); + stracpy(_fo_chopper_4_var._type, "MultiDiskChopper", 16384); + _fo_chopper_4_var._index=57; + int current_setpos_index = 57; + if("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" && strlen("50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998")) + stracpy(_fo_chopper_4_var._parameters.slit_center, "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" ? "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_center[0]='\0'; + if("32.98;31.82;30.74;29.27;28.77;26.76" && strlen("32.98;31.82;30.74;29.27;28.77;26.76")) + stracpy(_fo_chopper_4_var._parameters.slit_width, "32.98;31.82;30.74;29.27;28.77;26.76" ? "32.98;31.82;30.74;29.27;28.77;26.76" : "", 16384); + else + _fo_chopper_4_var._parameters.slit_width[0]='\0'; + _fo_chopper_4_var._parameters.nslits = 6; + _fo_chopper_4_var._parameters.delta_y = -0.7075; + _fo_chopper_4_var._parameters.nu = -14.0; + _fo_chopper_4_var._parameters.nrev = 0; + _fo_chopper_4_var._parameters.ratio = 1; + _fo_chopper_4_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_4; + _fo_chopper_4_var._parameters.delay = 0; + _fo_chopper_4_var._parameters.isfirst = 0; + _fo_chopper_4_var._parameters.phase = fo4_phase; + _fo_chopper_4_var._parameters.radius = 0.75; + _fo_chopper_4_var._parameters.equal = 0; + _fo_chopper_4_var._parameters.abs_out = 0; + _fo_chopper_4_var._parameters.verbose = 0; + + + /* component fo_chopper_4=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo4_position_var._rotation_absolute, _fo_chopper_4_var._rotation_absolute); + rot_transpose(_g4a3_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_4_var._rotation_absolute, tr1, _fo_chopper_4_var._rotation_relative); + _fo_chopper_4_var._rotation_is_identity = rot_test_identity(_fo_chopper_4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo4_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_4_var._position_absolute = coords_add(_fo4_position_var._position_absolute, tc2); + tc1 = coords_sub(_g4a3_var._position_absolute, _fo_chopper_4_var._position_absolute); + _fo_chopper_4_var._position_relative = rot_apply(_fo_chopper_4_var._rotation_absolute, tc1); + } /* fo_chopper_4=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute); + instrument->_position_absolute[57] = _fo_chopper_4_var._position_absolute; + instrument->_position_relative[57] = _fo_chopper_4_var._position_relative; + _fo_chopper_4_var._position_relative_is_zero = coords_test_zero(_fo_chopper_4_var._position_relative); + instrument->counter_N[57] = instrument->counter_P[57] = instrument->counter_P2[57] = 0; + instrument->counter_AbsorbProp[57]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0056_fo_chopper_4", _fo_chopper_4_var._position_absolute, _fo_chopper_4_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "slit_center", "0 180", "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "slit_width", "10 20", "32.98;31.82;30.74;29.27;28.77;26.76", "char*"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_4","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "phase", "0", "fo4_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0056_fo_chopper_4", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_4_setpos */ + +/* component g4b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b1_setpos] component g4b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b1_var._name, "g4b1", 16384); + stracpy(_g4b1_var._type, "Guide_four_side", 16384); + _g4b1_var._index=58; + int current_setpos_index = 58; + _g4b1_var._parameters.RIreflect[0]='\0'; + _g4b1_var._parameters.LIreflect[0]='\0'; + _g4b1_var._parameters.UIreflect[0]='\0'; + _g4b1_var._parameters.DIreflect[0]='\0'; + _g4b1_var._parameters.ROreflect[0]='\0'; + _g4b1_var._parameters.LOreflect[0]='\0'; + _g4b1_var._parameters.UOreflect[0]='\0'; + _g4b1_var._parameters.DOreflect[0]='\0'; + _g4b1_var._parameters.w1l = 0.04004; + _g4b1_var._parameters.w2l = 0.04004; + _g4b1_var._parameters.linwl = 0; + _g4b1_var._parameters.loutwl = 0; + _g4b1_var._parameters.w1r = 0.04004; + _g4b1_var._parameters.w2r = 0.04004; + _g4b1_var._parameters.linwr = 0.0; + _g4b1_var._parameters.loutwr = 0; + _g4b1_var._parameters.h1u = 0.037165; + _g4b1_var._parameters.h2u = 0.037165; + _g4b1_var._parameters.linhu = 0.0; + _g4b1_var._parameters.louthu = 0; + _g4b1_var._parameters.h1d = 0.037165; + _g4b1_var._parameters.h2d = 0.037165; + _g4b1_var._parameters.linhd = 0.0; + _g4b1_var._parameters.louthd = 0; + _g4b1_var._parameters.l = 0.5565999999999995; + _g4b1_var._parameters.R0 = 0.99; + _g4b1_var._parameters.Qcxl = 0.0221; + _g4b1_var._parameters.Qcxr = 0.0221; + _g4b1_var._parameters.Qcyu = 0.023; + _g4b1_var._parameters.Qcyd = 0.023; + _g4b1_var._parameters.alphaxl = 1.75; + _g4b1_var._parameters.alphaxr = 1.75; + _g4b1_var._parameters.alphayu = 1.8; + _g4b1_var._parameters.alphayd = 1.8; + _g4b1_var._parameters.Wxr = 0.015; + _g4b1_var._parameters.Wxl = 0.015; + _g4b1_var._parameters.Wyu = 0.015; + _g4b1_var._parameters.Wyd = 0.015; + _g4b1_var._parameters.mxr = 2.5; + _g4b1_var._parameters.mxl = 2.5; + _g4b1_var._parameters.myu = 2; + _g4b1_var._parameters.myd = 2; + _g4b1_var._parameters.QcxrOW = 0.0217; + _g4b1_var._parameters.QcxlOW = 0.0217; + _g4b1_var._parameters.QcyuOW = 0.0217; + _g4b1_var._parameters.QcydOW = 0.0217; + _g4b1_var._parameters.alphaxlOW = 6.07; + _g4b1_var._parameters.alphaxrOW = 6.07; + _g4b1_var._parameters.alphayuOW = 6.07; + _g4b1_var._parameters.alphaydOW = 6.07; + _g4b1_var._parameters.WxrOW = 0.003; + _g4b1_var._parameters.WxlOW = 0.003; + _g4b1_var._parameters.WyuOW = 0.003; + _g4b1_var._parameters.WydOW = 0.003; + _g4b1_var._parameters.mxrOW = 0; + _g4b1_var._parameters.mxlOW = 0; + _g4b1_var._parameters.myuOW = 0; + _g4b1_var._parameters.mydOW = 0; + _g4b1_var._parameters.rwallthick = 0.001; + _g4b1_var._parameters.lwallthick = 0.001; + _g4b1_var._parameters.uwallthick = 0.001; + _g4b1_var._parameters.dwallthick = 0.001; + + + /* component g4b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b1_var._rotation_absolute); + rot_transpose(_fo_chopper_4_var._rotation_absolute, tr1); + rot_mul(_g4b1_var._rotation_absolute, tr1, _g4b1_var._rotation_relative); + _g4b1_var._rotation_is_identity = rot_test_identity(_g4b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 23.6955); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_4_var._position_absolute, _g4b1_var._position_absolute); + _g4b1_var._position_relative = rot_apply(_g4b1_var._rotation_absolute, tc1); + } /* g4b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute); + instrument->_position_absolute[58] = _g4b1_var._position_absolute; + instrument->_position_relative[58] = _g4b1_var._position_relative; + _g4b1_var._position_relative_is_zero = coords_test_zero(_g4b1_var._position_relative); + instrument->counter_N[58] = instrument->counter_P[58] = instrument->counter_P2[58] = 0; + instrument->counter_AbsorbProp[58]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0057_g4b1", _g4b1_var._position_absolute, _g4b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "l", "0", "0.5565999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0057_g4b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b1_setpos */ + +/* component g4b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b2_setpos] component g4b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b2_var._name, "g4b2", 16384); + stracpy(_g4b2_var._type, "Guide_four_side", 16384); + _g4b2_var._index=59; + int current_setpos_index = 59; + _g4b2_var._parameters.RIreflect[0]='\0'; + _g4b2_var._parameters.LIreflect[0]='\0'; + _g4b2_var._parameters.UIreflect[0]='\0'; + _g4b2_var._parameters.DIreflect[0]='\0'; + _g4b2_var._parameters.ROreflect[0]='\0'; + _g4b2_var._parameters.LOreflect[0]='\0'; + _g4b2_var._parameters.UOreflect[0]='\0'; + _g4b2_var._parameters.DOreflect[0]='\0'; + _g4b2_var._parameters.w1l = 0.04004; + _g4b2_var._parameters.w2l = 0.04004; + _g4b2_var._parameters.linwl = 0; + _g4b2_var._parameters.loutwl = 0; + _g4b2_var._parameters.w1r = 0.04004; + _g4b2_var._parameters.w2r = 0.04004; + _g4b2_var._parameters.linwr = 0.0; + _g4b2_var._parameters.loutwr = 0; + _g4b2_var._parameters.h1u = 0.037165; + _g4b2_var._parameters.h2u = 0.037165; + _g4b2_var._parameters.linhu = 0.0; + _g4b2_var._parameters.louthu = 0; + _g4b2_var._parameters.h1d = 0.037165; + _g4b2_var._parameters.h2d = 0.037165; + _g4b2_var._parameters.linhd = 0.0; + _g4b2_var._parameters.louthd = 0; + _g4b2_var._parameters.l = 1.7800000000000011; + _g4b2_var._parameters.R0 = 0.99; + _g4b2_var._parameters.Qcxl = 0.0221; + _g4b2_var._parameters.Qcxr = 0.0221; + _g4b2_var._parameters.Qcyu = 0.023; + _g4b2_var._parameters.Qcyd = 0.023; + _g4b2_var._parameters.alphaxl = 1.75; + _g4b2_var._parameters.alphaxr = 1.75; + _g4b2_var._parameters.alphayu = 1.8; + _g4b2_var._parameters.alphayd = 1.8; + _g4b2_var._parameters.Wxr = 0.015; + _g4b2_var._parameters.Wxl = 0.015; + _g4b2_var._parameters.Wyu = 0.015; + _g4b2_var._parameters.Wyd = 0.015; + _g4b2_var._parameters.mxr = 3.0; + _g4b2_var._parameters.mxl = 3.0; + _g4b2_var._parameters.myu = 2; + _g4b2_var._parameters.myd = 2; + _g4b2_var._parameters.QcxrOW = 0.0217; + _g4b2_var._parameters.QcxlOW = 0.0217; + _g4b2_var._parameters.QcyuOW = 0.0217; + _g4b2_var._parameters.QcydOW = 0.0217; + _g4b2_var._parameters.alphaxlOW = 6.07; + _g4b2_var._parameters.alphaxrOW = 6.07; + _g4b2_var._parameters.alphayuOW = 6.07; + _g4b2_var._parameters.alphaydOW = 6.07; + _g4b2_var._parameters.WxrOW = 0.003; + _g4b2_var._parameters.WxlOW = 0.003; + _g4b2_var._parameters.WyuOW = 0.003; + _g4b2_var._parameters.WydOW = 0.003; + _g4b2_var._parameters.mxrOW = 0; + _g4b2_var._parameters.mxlOW = 0; + _g4b2_var._parameters.myuOW = 0; + _g4b2_var._parameters.mydOW = 0; + _g4b2_var._parameters.rwallthick = 0.001; + _g4b2_var._parameters.lwallthick = 0.001; + _g4b2_var._parameters.uwallthick = 0.001; + _g4b2_var._parameters.dwallthick = 0.001; + + + /* component g4b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b2_var._rotation_absolute); + rot_transpose(_g4b1_var._rotation_absolute, tr1); + rot_mul(_g4b2_var._rotation_absolute, tr1, _g4b2_var._rotation_relative); + _g4b2_var._rotation_is_identity = rot_test_identity(_g4b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 24.2561); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b1_var._position_absolute, _g4b2_var._position_absolute); + _g4b2_var._position_relative = rot_apply(_g4b2_var._rotation_absolute, tc1); + } /* g4b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute); + instrument->_position_absolute[59] = _g4b2_var._position_absolute; + instrument->_position_relative[59] = _g4b2_var._position_relative; + _g4b2_var._position_relative_is_zero = coords_test_zero(_g4b2_var._position_relative); + instrument->counter_N[59] = instrument->counter_P[59] = instrument->counter_P2[59] = 0; + instrument->counter_AbsorbProp[59]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0058_g4b2", _g4b2_var._position_absolute, _g4b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "l", "0", "1.7800000000000011","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0058_g4b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b2_setpos */ + +/* component g4b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b3_setpos] component g4b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b3_var._name, "g4b3", 16384); + stracpy(_g4b3_var._type, "Guide_four_side", 16384); + _g4b3_var._index=60; + int current_setpos_index = 60; + _g4b3_var._parameters.RIreflect[0]='\0'; + _g4b3_var._parameters.LIreflect[0]='\0'; + _g4b3_var._parameters.UIreflect[0]='\0'; + _g4b3_var._parameters.DIreflect[0]='\0'; + _g4b3_var._parameters.ROreflect[0]='\0'; + _g4b3_var._parameters.LOreflect[0]='\0'; + _g4b3_var._parameters.UOreflect[0]='\0'; + _g4b3_var._parameters.DOreflect[0]='\0'; + _g4b3_var._parameters.w1l = 0.04004; + _g4b3_var._parameters.w2l = 0.04004; + _g4b3_var._parameters.linwl = 0; + _g4b3_var._parameters.loutwl = 0; + _g4b3_var._parameters.w1r = 0.04004; + _g4b3_var._parameters.w2r = 0.04004; + _g4b3_var._parameters.linwr = 0.0; + _g4b3_var._parameters.loutwr = 0; + _g4b3_var._parameters.h1u = 0.037165; + _g4b3_var._parameters.h2u = 0.037165; + _g4b3_var._parameters.linhu = 0.0; + _g4b3_var._parameters.louthu = 0; + _g4b3_var._parameters.h1d = 0.037165; + _g4b3_var._parameters.h2d = 0.037165; + _g4b3_var._parameters.linhd = 0.0; + _g4b3_var._parameters.louthd = 0; + _g4b3_var._parameters.l = 2.1380000000000017; + _g4b3_var._parameters.R0 = 0.99; + _g4b3_var._parameters.Qcxl = 0.0217; + _g4b3_var._parameters.Qcxr = 0.0217; + _g4b3_var._parameters.Qcyu = 0.023; + _g4b3_var._parameters.Qcyd = 0.023; + _g4b3_var._parameters.alphaxl = 2.5; + _g4b3_var._parameters.alphaxr = 2.5; + _g4b3_var._parameters.alphayu = 1.8; + _g4b3_var._parameters.alphayd = 1.8; + _g4b3_var._parameters.Wxr = 0.015; + _g4b3_var._parameters.Wxl = 0.015; + _g4b3_var._parameters.Wyu = 0.015; + _g4b3_var._parameters.Wyd = 0.015; + _g4b3_var._parameters.mxr = 3.5; + _g4b3_var._parameters.mxl = 3.5; + _g4b3_var._parameters.myu = 2; + _g4b3_var._parameters.myd = 2; + _g4b3_var._parameters.QcxrOW = 0.0217; + _g4b3_var._parameters.QcxlOW = 0.0217; + _g4b3_var._parameters.QcyuOW = 0.0217; + _g4b3_var._parameters.QcydOW = 0.0217; + _g4b3_var._parameters.alphaxlOW = 6.07; + _g4b3_var._parameters.alphaxrOW = 6.07; + _g4b3_var._parameters.alphayuOW = 6.07; + _g4b3_var._parameters.alphaydOW = 6.07; + _g4b3_var._parameters.WxrOW = 0.003; + _g4b3_var._parameters.WxlOW = 0.003; + _g4b3_var._parameters.WyuOW = 0.003; + _g4b3_var._parameters.WydOW = 0.003; + _g4b3_var._parameters.mxrOW = 0; + _g4b3_var._parameters.mxlOW = 0; + _g4b3_var._parameters.myuOW = 0; + _g4b3_var._parameters.mydOW = 0; + _g4b3_var._parameters.rwallthick = 0.001; + _g4b3_var._parameters.lwallthick = 0.001; + _g4b3_var._parameters.uwallthick = 0.001; + _g4b3_var._parameters.dwallthick = 0.001; + + + /* component g4b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b3_var._rotation_absolute); + rot_transpose(_g4b2_var._rotation_absolute, tr1); + rot_mul(_g4b3_var._rotation_absolute, tr1, _g4b3_var._rotation_relative); + _g4b3_var._rotation_is_identity = rot_test_identity(_g4b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 26.0366); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b2_var._position_absolute, _g4b3_var._position_absolute); + _g4b3_var._position_relative = rot_apply(_g4b3_var._rotation_absolute, tc1); + } /* g4b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute); + instrument->_position_absolute[60] = _g4b3_var._position_absolute; + instrument->_position_relative[60] = _g4b3_var._position_relative; + _g4b3_var._position_relative_is_zero = coords_test_zero(_g4b3_var._position_relative); + instrument->counter_N[60] = instrument->counter_P[60] = instrument->counter_P2[60] = 0; + instrument->counter_AbsorbProp[60]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0059_g4b3", _g4b3_var._position_absolute, _g4b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "l", "0", "2.1380000000000017","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0059_g4b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b3_setpos */ + +/* component g4b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b4_setpos] component g4b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b4_var._name, "g4b4", 16384); + stracpy(_g4b4_var._type, "Guide_four_side", 16384); + _g4b4_var._index=61; + int current_setpos_index = 61; + _g4b4_var._parameters.RIreflect[0]='\0'; + _g4b4_var._parameters.LIreflect[0]='\0'; + _g4b4_var._parameters.UIreflect[0]='\0'; + _g4b4_var._parameters.DIreflect[0]='\0'; + _g4b4_var._parameters.ROreflect[0]='\0'; + _g4b4_var._parameters.LOreflect[0]='\0'; + _g4b4_var._parameters.UOreflect[0]='\0'; + _g4b4_var._parameters.DOreflect[0]='\0'; + _g4b4_var._parameters.w1l = 0.04004; + _g4b4_var._parameters.w2l = 0.04004; + _g4b4_var._parameters.linwl = 0; + _g4b4_var._parameters.loutwl = 0; + _g4b4_var._parameters.w1r = 0.04004; + _g4b4_var._parameters.w2r = 0.04004; + _g4b4_var._parameters.linwr = 0.0; + _g4b4_var._parameters.loutwr = 0; + _g4b4_var._parameters.h1u = 0.037165; + _g4b4_var._parameters.h2u = 0.037165; + _g4b4_var._parameters.linhu = 0.0; + _g4b4_var._parameters.louthu = 0; + _g4b4_var._parameters.h1d = 0.037165; + _g4b4_var._parameters.h2d = 0.037165; + _g4b4_var._parameters.linhd = 0.0; + _g4b4_var._parameters.louthd = 0; + _g4b4_var._parameters.l = 1.9997499999999988; + _g4b4_var._parameters.R0 = 0.99; + _g4b4_var._parameters.Qcxl = 0.0217; + _g4b4_var._parameters.Qcxr = 0.0217; + _g4b4_var._parameters.Qcyu = 0.023; + _g4b4_var._parameters.Qcyd = 0.023; + _g4b4_var._parameters.alphaxl = 2.5; + _g4b4_var._parameters.alphaxr = 2.5; + _g4b4_var._parameters.alphayu = 1.8; + _g4b4_var._parameters.alphayd = 1.8; + _g4b4_var._parameters.Wxr = 0.015; + _g4b4_var._parameters.Wxl = 0.015; + _g4b4_var._parameters.Wyu = 0.015; + _g4b4_var._parameters.Wyd = 0.015; + _g4b4_var._parameters.mxr = 3.5; + _g4b4_var._parameters.mxl = 3.5; + _g4b4_var._parameters.myu = 2; + _g4b4_var._parameters.myd = 2; + _g4b4_var._parameters.QcxrOW = 0.0217; + _g4b4_var._parameters.QcxlOW = 0.0217; + _g4b4_var._parameters.QcyuOW = 0.0217; + _g4b4_var._parameters.QcydOW = 0.0217; + _g4b4_var._parameters.alphaxlOW = 6.07; + _g4b4_var._parameters.alphaxrOW = 6.07; + _g4b4_var._parameters.alphayuOW = 6.07; + _g4b4_var._parameters.alphaydOW = 6.07; + _g4b4_var._parameters.WxrOW = 0.003; + _g4b4_var._parameters.WxlOW = 0.003; + _g4b4_var._parameters.WyuOW = 0.003; + _g4b4_var._parameters.WydOW = 0.003; + _g4b4_var._parameters.mxrOW = 0; + _g4b4_var._parameters.mxlOW = 0; + _g4b4_var._parameters.myuOW = 0; + _g4b4_var._parameters.mydOW = 0; + _g4b4_var._parameters.rwallthick = 0.001; + _g4b4_var._parameters.lwallthick = 0.001; + _g4b4_var._parameters.uwallthick = 0.001; + _g4b4_var._parameters.dwallthick = 0.001; + + + /* component g4b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b4_var._rotation_absolute); + rot_transpose(_g4b3_var._rotation_absolute, tr1); + rot_mul(_g4b4_var._rotation_absolute, tr1, _g4b4_var._rotation_relative); + _g4b4_var._rotation_is_identity = rot_test_identity(_g4b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 28.1786); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b3_var._position_absolute, _g4b4_var._position_absolute); + _g4b4_var._position_relative = rot_apply(_g4b4_var._rotation_absolute, tc1); + } /* g4b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute); + instrument->_position_absolute[61] = _g4b4_var._position_absolute; + instrument->_position_relative[61] = _g4b4_var._position_relative; + _g4b4_var._position_relative_is_zero = coords_test_zero(_g4b4_var._position_relative); + instrument->counter_N[61] = instrument->counter_P[61] = instrument->counter_P2[61] = 0; + instrument->counter_AbsorbProp[61]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0060_g4b4", _g4b4_var._position_absolute, _g4b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0060_g4b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b4_setpos */ + +/* component g4b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b5_setpos] component g4b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b5_var._name, "g4b5", 16384); + stracpy(_g4b5_var._type, "Guide_four_side", 16384); + _g4b5_var._index=62; + int current_setpos_index = 62; + _g4b5_var._parameters.RIreflect[0]='\0'; + _g4b5_var._parameters.LIreflect[0]='\0'; + _g4b5_var._parameters.UIreflect[0]='\0'; + _g4b5_var._parameters.DIreflect[0]='\0'; + _g4b5_var._parameters.ROreflect[0]='\0'; + _g4b5_var._parameters.LOreflect[0]='\0'; + _g4b5_var._parameters.UOreflect[0]='\0'; + _g4b5_var._parameters.DOreflect[0]='\0'; + _g4b5_var._parameters.w1l = 0.04004; + _g4b5_var._parameters.w2l = 0.04004; + _g4b5_var._parameters.linwl = 0; + _g4b5_var._parameters.loutwl = 0; + _g4b5_var._parameters.w1r = 0.04004; + _g4b5_var._parameters.w2r = 0.04004; + _g4b5_var._parameters.linwr = 0.0; + _g4b5_var._parameters.loutwr = 0; + _g4b5_var._parameters.h1u = 0.037165; + _g4b5_var._parameters.h2u = 0.037165; + _g4b5_var._parameters.linhu = 0.0; + _g4b5_var._parameters.louthu = 0; + _g4b5_var._parameters.h1d = 0.037165; + _g4b5_var._parameters.h2d = 0.037165; + _g4b5_var._parameters.linhd = 0.0; + _g4b5_var._parameters.louthd = 0; + _g4b5_var._parameters.l = 1.4049499999999995; + _g4b5_var._parameters.R0 = 0.99; + _g4b5_var._parameters.Qcxl = 0.0221; + _g4b5_var._parameters.Qcxr = 0.0221; + _g4b5_var._parameters.Qcyu = 0.023; + _g4b5_var._parameters.Qcyd = 0.023; + _g4b5_var._parameters.alphaxl = 1.75; + _g4b5_var._parameters.alphaxr = 1.75; + _g4b5_var._parameters.alphayu = 1.8; + _g4b5_var._parameters.alphayd = 1.8; + _g4b5_var._parameters.Wxr = 0.015; + _g4b5_var._parameters.Wxl = 0.015; + _g4b5_var._parameters.Wyu = 0.015; + _g4b5_var._parameters.Wyd = 0.015; + _g4b5_var._parameters.mxr = 3; + _g4b5_var._parameters.mxl = 3; + _g4b5_var._parameters.myu = 2; + _g4b5_var._parameters.myd = 2; + _g4b5_var._parameters.QcxrOW = 0.0217; + _g4b5_var._parameters.QcxlOW = 0.0217; + _g4b5_var._parameters.QcyuOW = 0.0217; + _g4b5_var._parameters.QcydOW = 0.0217; + _g4b5_var._parameters.alphaxlOW = 6.07; + _g4b5_var._parameters.alphaxrOW = 6.07; + _g4b5_var._parameters.alphayuOW = 6.07; + _g4b5_var._parameters.alphaydOW = 6.07; + _g4b5_var._parameters.WxrOW = 0.003; + _g4b5_var._parameters.WxlOW = 0.003; + _g4b5_var._parameters.WyuOW = 0.003; + _g4b5_var._parameters.WydOW = 0.003; + _g4b5_var._parameters.mxrOW = 0; + _g4b5_var._parameters.mxlOW = 0; + _g4b5_var._parameters.myuOW = 0; + _g4b5_var._parameters.mydOW = 0; + _g4b5_var._parameters.rwallthick = 0.001; + _g4b5_var._parameters.lwallthick = 0.001; + _g4b5_var._parameters.uwallthick = 0.001; + _g4b5_var._parameters.dwallthick = 0.001; + + + /* component g4b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b5_var._rotation_absolute); + rot_transpose(_g4b4_var._rotation_absolute, tr1); + rot_mul(_g4b5_var._rotation_absolute, tr1, _g4b5_var._rotation_relative); + _g4b5_var._rotation_is_identity = rot_test_identity(_g4b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 30.17885); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b4_var._position_absolute, _g4b5_var._position_absolute); + _g4b5_var._position_relative = rot_apply(_g4b5_var._rotation_absolute, tc1); + } /* g4b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute); + instrument->_position_absolute[62] = _g4b5_var._position_absolute; + instrument->_position_relative[62] = _g4b5_var._position_relative; + _g4b5_var._position_relative_is_zero = coords_test_zero(_g4b5_var._position_relative); + instrument->counter_N[62] = instrument->counter_P[62] = instrument->counter_P2[62] = 0; + instrument->counter_AbsorbProp[62]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0061_g4b5", _g4b5_var._position_absolute, _g4b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "l", "0", "1.4049499999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0061_g4b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b5_setpos */ + +/* component g4b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g4b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g4b6_setpos] component g4b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g4b6_var._name, "g4b6", 16384); + stracpy(_g4b6_var._type, "Guide_four_side", 16384); + _g4b6_var._index=63; + int current_setpos_index = 63; + _g4b6_var._parameters.RIreflect[0]='\0'; + _g4b6_var._parameters.LIreflect[0]='\0'; + _g4b6_var._parameters.UIreflect[0]='\0'; + _g4b6_var._parameters.DIreflect[0]='\0'; + _g4b6_var._parameters.ROreflect[0]='\0'; + _g4b6_var._parameters.LOreflect[0]='\0'; + _g4b6_var._parameters.UOreflect[0]='\0'; + _g4b6_var._parameters.DOreflect[0]='\0'; + _g4b6_var._parameters.w1l = 0.04004; + _g4b6_var._parameters.w2l = 0.04004; + _g4b6_var._parameters.linwl = 0; + _g4b6_var._parameters.loutwl = 0; + _g4b6_var._parameters.w1r = 0.04004; + _g4b6_var._parameters.w2r = 0.04004; + _g4b6_var._parameters.linwr = 0.0; + _g4b6_var._parameters.loutwr = 0; + _g4b6_var._parameters.h1u = 0.037165; + _g4b6_var._parameters.h2u = 0.037165; + _g4b6_var._parameters.linhu = 0.0; + _g4b6_var._parameters.louthu = 0; + _g4b6_var._parameters.h1d = 0.037165; + _g4b6_var._parameters.h2d = 0.037165; + _g4b6_var._parameters.linhd = 0.0; + _g4b6_var._parameters.louthd = 0; + _g4b6_var._parameters.l = 0.4106999999999985; + _g4b6_var._parameters.R0 = 0.99; + _g4b6_var._parameters.Qcxl = 0.0221; + _g4b6_var._parameters.Qcxr = 0.0221; + _g4b6_var._parameters.Qcyu = 0.023; + _g4b6_var._parameters.Qcyd = 0.023; + _g4b6_var._parameters.alphaxl = 1.75; + _g4b6_var._parameters.alphaxr = 1.75; + _g4b6_var._parameters.alphayu = 1.8; + _g4b6_var._parameters.alphayd = 1.8; + _g4b6_var._parameters.Wxr = 0.015; + _g4b6_var._parameters.Wxl = 0.015; + _g4b6_var._parameters.Wyu = 0.015; + _g4b6_var._parameters.Wyd = 0.015; + _g4b6_var._parameters.mxr = 3; + _g4b6_var._parameters.mxl = 3; + _g4b6_var._parameters.myu = 2; + _g4b6_var._parameters.myd = 2; + _g4b6_var._parameters.QcxrOW = 0.0217; + _g4b6_var._parameters.QcxlOW = 0.0217; + _g4b6_var._parameters.QcyuOW = 0.0217; + _g4b6_var._parameters.QcydOW = 0.0217; + _g4b6_var._parameters.alphaxlOW = 6.07; + _g4b6_var._parameters.alphaxrOW = 6.07; + _g4b6_var._parameters.alphayuOW = 6.07; + _g4b6_var._parameters.alphaydOW = 6.07; + _g4b6_var._parameters.WxrOW = 0.003; + _g4b6_var._parameters.WxlOW = 0.003; + _g4b6_var._parameters.WyuOW = 0.003; + _g4b6_var._parameters.WydOW = 0.003; + _g4b6_var._parameters.mxrOW = 0; + _g4b6_var._parameters.mxlOW = 0; + _g4b6_var._parameters.myuOW = 0; + _g4b6_var._parameters.mydOW = 0; + _g4b6_var._parameters.rwallthick = 0.001; + _g4b6_var._parameters.lwallthick = 0.001; + _g4b6_var._parameters.uwallthick = 0.001; + _g4b6_var._parameters.dwallthick = 0.001; + + + /* component g4b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g4b6_var._rotation_absolute); + rot_transpose(_g4b5_var._rotation_absolute, tr1); + rot_mul(_g4b6_var._rotation_absolute, tr1, _g4b6_var._rotation_relative); + _g4b6_var._rotation_is_identity = rot_test_identity(_g4b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 31.5893); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g4b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b5_var._position_absolute, _g4b6_var._position_absolute); + _g4b6_var._position_relative = rot_apply(_g4b6_var._rotation_absolute, tc1); + } /* g4b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute); + instrument->_position_absolute[63] = _g4b6_var._position_absolute; + instrument->_position_relative[63] = _g4b6_var._position_relative; + _g4b6_var._position_relative_is_zero = coords_test_zero(_g4b6_var._position_relative); + instrument->counter_N[63] = instrument->counter_P[63] = instrument->counter_P2[63] = 0; + instrument->counter_AbsorbProp[63]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0062_g4b6", _g4b6_var._position_absolute, _g4b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "h2u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "linhu", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "louthu", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "h2d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "linhd", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "louthd", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "l", "0", "0.4106999999999985","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mxr", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mxl", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0062_g4b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g4b6_setpos */ + +/* component g5a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5a1_setpos] component g5a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5a1_var._name, "g5a1", 16384); + stracpy(_g5a1_var._type, "Guide_four_side", 16384); + _g5a1_var._index=64; + int current_setpos_index = 64; + _g5a1_var._parameters.RIreflect[0]='\0'; + _g5a1_var._parameters.LIreflect[0]='\0'; + _g5a1_var._parameters.UIreflect[0]='\0'; + _g5a1_var._parameters.DIreflect[0]='\0'; + _g5a1_var._parameters.ROreflect[0]='\0'; + _g5a1_var._parameters.LOreflect[0]='\0'; + _g5a1_var._parameters.UOreflect[0]='\0'; + _g5a1_var._parameters.DOreflect[0]='\0'; + _g5a1_var._parameters.w1l = 0.04004; + _g5a1_var._parameters.w2l = 0.04004; + _g5a1_var._parameters.linwl = 0; + _g5a1_var._parameters.loutwl = 0; + _g5a1_var._parameters.w1r = 0.04004; + _g5a1_var._parameters.w2r = 0.04004; + _g5a1_var._parameters.linwr = 0.0; + _g5a1_var._parameters.loutwr = 0; + _g5a1_var._parameters.h1u = 0.037165; + _g5a1_var._parameters.h2u = 0.002; + _g5a1_var._parameters.linhu = 18.0; + _g5a1_var._parameters.louthu = 17.005499999999998; + _g5a1_var._parameters.h1d = 0.037165; + _g5a1_var._parameters.h2d = 0.002; + _g5a1_var._parameters.linhd = 18.0; + _g5a1_var._parameters.louthd = 17.005499999999998; + _g5a1_var._parameters.l = 0.9945000000000022; + _g5a1_var._parameters.R0 = 0.99; + _g5a1_var._parameters.Qcxl = 0.023; + _g5a1_var._parameters.Qcxr = 0.023; + _g5a1_var._parameters.Qcyu = 0.023; + _g5a1_var._parameters.Qcyd = 0.023; + _g5a1_var._parameters.alphaxl = 1.8; + _g5a1_var._parameters.alphaxr = 1.8; + _g5a1_var._parameters.alphayu = 1.8; + _g5a1_var._parameters.alphayd = 1.8; + _g5a1_var._parameters.Wxr = 0.015; + _g5a1_var._parameters.Wxl = 0.015; + _g5a1_var._parameters.Wyu = 0.015; + _g5a1_var._parameters.Wyd = 0.015; + _g5a1_var._parameters.mxr = 2; + _g5a1_var._parameters.mxl = 2; + _g5a1_var._parameters.myu = 2; + _g5a1_var._parameters.myd = 2; + _g5a1_var._parameters.QcxrOW = 0.0217; + _g5a1_var._parameters.QcxlOW = 0.0217; + _g5a1_var._parameters.QcyuOW = 0.0217; + _g5a1_var._parameters.QcydOW = 0.0217; + _g5a1_var._parameters.alphaxlOW = 6.07; + _g5a1_var._parameters.alphaxrOW = 6.07; + _g5a1_var._parameters.alphayuOW = 6.07; + _g5a1_var._parameters.alphaydOW = 6.07; + _g5a1_var._parameters.WxrOW = 0.003; + _g5a1_var._parameters.WxlOW = 0.003; + _g5a1_var._parameters.WyuOW = 0.003; + _g5a1_var._parameters.WydOW = 0.003; + _g5a1_var._parameters.mxrOW = 0; + _g5a1_var._parameters.mxlOW = 0; + _g5a1_var._parameters.myuOW = 0; + _g5a1_var._parameters.mydOW = 0; + _g5a1_var._parameters.rwallthick = 0.001; + _g5a1_var._parameters.lwallthick = 0.001; + _g5a1_var._parameters.uwallthick = 0.001; + _g5a1_var._parameters.dwallthick = 0.001; + + + /* component g5a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5a1_var._rotation_absolute); + rot_transpose(_g4b6_var._rotation_absolute, tr1); + rot_mul(_g5a1_var._rotation_absolute, tr1, _g5a1_var._rotation_relative); + _g5a1_var._rotation_is_identity = rot_test_identity(_g5a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 32.0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g4b6_var._position_absolute, _g5a1_var._position_absolute); + _g5a1_var._position_relative = rot_apply(_g5a1_var._rotation_absolute, tc1); + } /* g5a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute); + instrument->_position_absolute[64] = _g5a1_var._position_absolute; + instrument->_position_relative[64] = _g5a1_var._position_relative; + _g5a1_var._position_relative_is_zero = coords_test_zero(_g5a1_var._position_relative); + instrument->counter_N[64] = instrument->counter_P[64] = instrument->counter_P2[64] = 0; + instrument->counter_AbsorbProp[64]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0063_g5a1", _g5a1_var._position_absolute, _g5a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "h1u", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "linhu", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "louthu", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "h1d", "0.002", "0.037165","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "linhd", "0.0", "18.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "louthd", "0", "17.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "l", "0", "0.9945000000000022","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0063_g5a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5a1_setpos */ + +/* component fo5_position=Arm() SETTING, POSITION/ROTATION */ +int _fo5_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo5_position_setpos] component fo5_position=Arm() SETTING [Arm:0]"); + stracpy(_fo5_position_var._name, "fo5_position", 16384); + stracpy(_fo5_position_var._type, "Arm", 16384); + _fo5_position_var._index=65; + int current_setpos_index = 65; + /* component fo5_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _fo5_position_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo5_position_var._rotation_absolute, tr1, _fo5_position_var._rotation_relative); + _fo5_position_var._rotation_is_identity = rot_test_identity(_fo5_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.005); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo5_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo5_position_var._position_absolute); + _fo5_position_var._position_relative = rot_apply(_fo5_position_var._rotation_absolute, tc1); + } /* fo5_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute); + instrument->_position_absolute[65] = _fo5_position_var._position_absolute; + instrument->_position_relative[65] = _fo5_position_var._position_relative; + _fo5_position_var._position_relative_is_zero = coords_test_zero(_fo5_position_var._position_relative); + instrument->counter_N[65] = instrument->counter_P[65] = instrument->counter_P2[65] = 0; + instrument->counter_AbsorbProp[65]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0064_fo5_position", _fo5_position_var._position_absolute, _fo5_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo5_position_setpos */ + +/* component fo_chopper_5=MultiDiskChopper() SETTING, POSITION/ROTATION */ +int _fo_chopper_5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_fo_chopper_5_setpos] component fo_chopper_5=MultiDiskChopper() SETTING [MultiDiskChopper:0]"); + stracpy(_fo_chopper_5_var._name, "fo_chopper_5", 16384); + stracpy(_fo_chopper_5_var._type, "MultiDiskChopper", 16384); + _fo_chopper_5_var._index=66; + int current_setpos_index = 66; + if("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" && strlen("-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002")) + stracpy(_fo_chopper_5_var._parameters.slit_center, "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" ? "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_center[0]='\0'; + if("50.81;48.55;45.49;41.32;37.45;37.74" && strlen("50.81;48.55;45.49;41.32;37.45;37.74")) + stracpy(_fo_chopper_5_var._parameters.slit_width, "50.81;48.55;45.49;41.32;37.45;37.74" ? "50.81;48.55;45.49;41.32;37.45;37.74" : "", 16384); + else + _fo_chopper_5_var._parameters.slit_width[0]='\0'; + _fo_chopper_5_var._parameters.nslits = 6; + _fo_chopper_5_var._parameters.delta_y = -0.7075; + _fo_chopper_5_var._parameters.nu = -14.0; + _fo_chopper_5_var._parameters.nrev = 0; + _fo_chopper_5_var._parameters.ratio = 1; + _fo_chopper_5_var._parameters.jitter = _instrument_var._parameters.jitter_fo_chopper_5; + _fo_chopper_5_var._parameters.delay = 0; + _fo_chopper_5_var._parameters.isfirst = 0; + _fo_chopper_5_var._parameters.phase = fo5_phase; + _fo_chopper_5_var._parameters.radius = 0.75; + _fo_chopper_5_var._parameters.equal = 0; + _fo_chopper_5_var._parameters.abs_out = 0; + _fo_chopper_5_var._parameters.verbose = 0; + + + /* component fo_chopper_5=MultiDiskChopper() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0)*DEG2RAD, (0)*DEG2RAD, (180)*DEG2RAD); + rot_mul(tr1, _fo5_position_var._rotation_absolute, _fo_chopper_5_var._rotation_absolute); + rot_transpose(_g5a1_var._rotation_absolute, tr1); + rot_mul(_fo_chopper_5_var._rotation_absolute, tr1, _fo_chopper_5_var._rotation_relative); + _fo_chopper_5_var._rotation_is_identity = rot_test_identity(_fo_chopper_5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_fo5_position_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _fo_chopper_5_var._position_absolute = coords_add(_fo5_position_var._position_absolute, tc2); + tc1 = coords_sub(_g5a1_var._position_absolute, _fo_chopper_5_var._position_absolute); + _fo_chopper_5_var._position_relative = rot_apply(_fo_chopper_5_var._rotation_absolute, tc1); + } /* fo_chopper_5=MultiDiskChopper() AT ROTATED */ + DEBUG_COMPONENT("fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute); + instrument->_position_absolute[66] = _fo_chopper_5_var._position_absolute; + instrument->_position_relative[66] = _fo_chopper_5_var._position_relative; + _fo_chopper_5_var._position_relative_is_zero = coords_test_zero(_fo_chopper_5_var._position_relative); + instrument->counter_N[66] = instrument->counter_P[66] = instrument->counter_P2[66] = 0; + instrument->counter_AbsorbProp[66]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0065_fo_chopper_5", _fo_chopper_5_var._position_absolute, _fo_chopper_5_var._rotation_absolute, "MultiDiskChopper"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "slit_center", "0 180", "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", "char*"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "slit_width", "10 20", "50.81;48.55;45.49;41.32;37.45;37.74", "char*"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "nslits", "2", "6","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "delta_y", "-0.3", "-0.7075","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "nu", "0", "-14.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "nrev", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "ratio", "1", "1","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "jitter", "0", "_instrument_var._parameters.jitter_fo_chopper_5","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "delay", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "isfirst", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "phase", "0", "fo5_phase","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "radius", "0.375", "0.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "equal", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "abs_out", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0065_fo_chopper_5", "verbose", "0", "0","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _fo_chopper_5_setpos */ + +/* component g5b1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b1_setpos] component g5b1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b1_var._name, "g5b1", 16384); + stracpy(_g5b1_var._type, "Guide_four_side", 16384); + _g5b1_var._index=67; + int current_setpos_index = 67; + _g5b1_var._parameters.RIreflect[0]='\0'; + _g5b1_var._parameters.LIreflect[0]='\0'; + _g5b1_var._parameters.UIreflect[0]='\0'; + _g5b1_var._parameters.DIreflect[0]='\0'; + _g5b1_var._parameters.ROreflect[0]='\0'; + _g5b1_var._parameters.LOreflect[0]='\0'; + _g5b1_var._parameters.UOreflect[0]='\0'; + _g5b1_var._parameters.DOreflect[0]='\0'; + _g5b1_var._parameters.w1l = 0.04004; + _g5b1_var._parameters.w2l = 0.04004; + _g5b1_var._parameters.linwl = 0; + _g5b1_var._parameters.loutwl = 0; + _g5b1_var._parameters.w1r = 0.04004; + _g5b1_var._parameters.w2r = 0.04004; + _g5b1_var._parameters.linwr = 0.0; + _g5b1_var._parameters.loutwr = 0; + _g5b1_var._parameters.h1u = 0.037105; + _g5b1_var._parameters.h2u = 0.002; + _g5b1_var._parameters.linhu = 19.005499999999998; + _g5b1_var._parameters.louthu = 14.994750000000003; + _g5b1_var._parameters.h1d = 0.037105; + _g5b1_var._parameters.h2d = 0.002; + _g5b1_var._parameters.linhd = 19.005499999999998; + _g5b1_var._parameters.louthd = 14.994750000000003; + _g5b1_var._parameters.l = 1.9997499999999988; + _g5b1_var._parameters.R0 = 0.99; + _g5b1_var._parameters.Qcxl = 0.023; + _g5b1_var._parameters.Qcxr = 0.023; + _g5b1_var._parameters.Qcyu = 0.023; + _g5b1_var._parameters.Qcyd = 0.023; + _g5b1_var._parameters.alphaxl = 1.8; + _g5b1_var._parameters.alphaxr = 1.8; + _g5b1_var._parameters.alphayu = 1.8; + _g5b1_var._parameters.alphayd = 1.8; + _g5b1_var._parameters.Wxr = 0.015; + _g5b1_var._parameters.Wxl = 0.015; + _g5b1_var._parameters.Wyu = 0.015; + _g5b1_var._parameters.Wyd = 0.015; + _g5b1_var._parameters.mxr = 2; + _g5b1_var._parameters.mxl = 2; + _g5b1_var._parameters.myu = 2; + _g5b1_var._parameters.myd = 2; + _g5b1_var._parameters.QcxrOW = 0.0217; + _g5b1_var._parameters.QcxlOW = 0.0217; + _g5b1_var._parameters.QcyuOW = 0.0217; + _g5b1_var._parameters.QcydOW = 0.0217; + _g5b1_var._parameters.alphaxlOW = 6.07; + _g5b1_var._parameters.alphaxrOW = 6.07; + _g5b1_var._parameters.alphayuOW = 6.07; + _g5b1_var._parameters.alphaydOW = 6.07; + _g5b1_var._parameters.WxrOW = 0.003; + _g5b1_var._parameters.WxlOW = 0.003; + _g5b1_var._parameters.WyuOW = 0.003; + _g5b1_var._parameters.WydOW = 0.003; + _g5b1_var._parameters.mxrOW = 0; + _g5b1_var._parameters.mxlOW = 0; + _g5b1_var._parameters.myuOW = 0; + _g5b1_var._parameters.mydOW = 0; + _g5b1_var._parameters.rwallthick = 0.001; + _g5b1_var._parameters.lwallthick = 0.001; + _g5b1_var._parameters.uwallthick = 0.001; + _g5b1_var._parameters.dwallthick = 0.001; + + + /* component g5b1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b1_var._rotation_absolute); + rot_transpose(_fo_chopper_5_var._rotation_absolute, tr1); + rot_mul(_g5b1_var._rotation_absolute, tr1, _g5b1_var._rotation_relative); + _g5b1_var._rotation_is_identity = rot_test_identity(_g5b1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 33.015499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_fo_chopper_5_var._position_absolute, _g5b1_var._position_absolute); + _g5b1_var._position_relative = rot_apply(_g5b1_var._rotation_absolute, tc1); + } /* g5b1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute); + instrument->_position_absolute[67] = _g5b1_var._position_absolute; + instrument->_position_relative[67] = _g5b1_var._position_relative; + _g5b1_var._position_relative_is_zero = coords_test_zero(_g5b1_var._position_relative); + instrument->counter_N[67] = instrument->counter_P[67] = instrument->counter_P2[67] = 0; + instrument->counter_AbsorbProp[67]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0066_g5b1", _g5b1_var._position_absolute, _g5b1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "h1u", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "linhu", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "louthu", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "h1d", "0.002", "0.037105","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "linhd", "0.0", "19.005499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "louthd", "0", "14.994750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Qcxl", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Qcxr", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaxl", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaxr", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mxr", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mxl", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0066_g5b1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b1_setpos */ + +/* component g5b2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b2_setpos] component g5b2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b2_var._name, "g5b2", 16384); + stracpy(_g5b2_var._type, "Guide_four_side", 16384); + _g5b2_var._index=68; + int current_setpos_index = 68; + _g5b2_var._parameters.RIreflect[0]='\0'; + _g5b2_var._parameters.LIreflect[0]='\0'; + _g5b2_var._parameters.UIreflect[0]='\0'; + _g5b2_var._parameters.DIreflect[0]='\0'; + _g5b2_var._parameters.ROreflect[0]='\0'; + _g5b2_var._parameters.LOreflect[0]='\0'; + _g5b2_var._parameters.UOreflect[0]='\0'; + _g5b2_var._parameters.DOreflect[0]='\0'; + _g5b2_var._parameters.w1l = 0.04004; + _g5b2_var._parameters.w2l = 0.04004; + _g5b2_var._parameters.linwl = 0; + _g5b2_var._parameters.loutwl = 0; + _g5b2_var._parameters.w1r = 0.04004; + _g5b2_var._parameters.w2r = 0.04004; + _g5b2_var._parameters.linwr = 0.0; + _g5b2_var._parameters.loutwr = 0; + _g5b2_var._parameters.h1u = 0.036645; + _g5b2_var._parameters.h2u = 0.002; + _g5b2_var._parameters.linhu = 21.00575; + _g5b2_var._parameters.louthu = 12.994950000000003; + _g5b2_var._parameters.h1d = 0.036645; + _g5b2_var._parameters.h2d = 0.002; + _g5b2_var._parameters.linhd = 21.00575; + _g5b2_var._parameters.louthd = 12.994950000000003; + _g5b2_var._parameters.l = 1.999299999999998; + _g5b2_var._parameters.R0 = 0.99; + _g5b2_var._parameters.Qcxl = 0.0221; + _g5b2_var._parameters.Qcxr = 0.0221; + _g5b2_var._parameters.Qcyu = 0.023; + _g5b2_var._parameters.Qcyd = 0.023; + _g5b2_var._parameters.alphaxl = 1.75; + _g5b2_var._parameters.alphaxr = 1.75; + _g5b2_var._parameters.alphayu = 1.8; + _g5b2_var._parameters.alphayd = 1.8; + _g5b2_var._parameters.Wxr = 0.015; + _g5b2_var._parameters.Wxl = 0.015; + _g5b2_var._parameters.Wyu = 0.015; + _g5b2_var._parameters.Wyd = 0.015; + _g5b2_var._parameters.mxr = 2.5; + _g5b2_var._parameters.mxl = 2.5; + _g5b2_var._parameters.myu = 2; + _g5b2_var._parameters.myd = 2; + _g5b2_var._parameters.QcxrOW = 0.0217; + _g5b2_var._parameters.QcxlOW = 0.0217; + _g5b2_var._parameters.QcyuOW = 0.0217; + _g5b2_var._parameters.QcydOW = 0.0217; + _g5b2_var._parameters.alphaxlOW = 6.07; + _g5b2_var._parameters.alphaxrOW = 6.07; + _g5b2_var._parameters.alphayuOW = 6.07; + _g5b2_var._parameters.alphaydOW = 6.07; + _g5b2_var._parameters.WxrOW = 0.003; + _g5b2_var._parameters.WxlOW = 0.003; + _g5b2_var._parameters.WyuOW = 0.003; + _g5b2_var._parameters.WydOW = 0.003; + _g5b2_var._parameters.mxrOW = 0; + _g5b2_var._parameters.mxlOW = 0; + _g5b2_var._parameters.myuOW = 0; + _g5b2_var._parameters.mydOW = 0; + _g5b2_var._parameters.rwallthick = 0.001; + _g5b2_var._parameters.lwallthick = 0.001; + _g5b2_var._parameters.uwallthick = 0.001; + _g5b2_var._parameters.dwallthick = 0.001; + + + /* component g5b2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b2_var._rotation_absolute); + rot_transpose(_g5b1_var._rotation_absolute, tr1); + rot_mul(_g5b2_var._rotation_absolute, tr1, _g5b2_var._rotation_relative); + _g5b2_var._rotation_is_identity = rot_test_identity(_g5b2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 35.01575); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b1_var._position_absolute, _g5b2_var._position_absolute); + _g5b2_var._position_relative = rot_apply(_g5b2_var._rotation_absolute, tc1); + } /* g5b2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute); + instrument->_position_absolute[68] = _g5b2_var._position_absolute; + instrument->_position_relative[68] = _g5b2_var._position_relative; + _g5b2_var._position_relative_is_zero = coords_test_zero(_g5b2_var._position_relative); + instrument->counter_N[68] = instrument->counter_P[68] = instrument->counter_P2[68] = 0; + instrument->counter_AbsorbProp[68]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0067_g5b2", _g5b2_var._position_absolute, _g5b2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "h1u", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "linhu", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "louthu", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "h1d", "0.002", "0.036645","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "linhd", "0.0", "21.00575","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "louthd", "0", "12.994950000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "l", "0", "1.999299999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0067_g5b2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b2_setpos */ + +/* component g5b3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b3_setpos] component g5b3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b3_var._name, "g5b3", 16384); + stracpy(_g5b3_var._type, "Guide_four_side", 16384); + _g5b3_var._index=69; + int current_setpos_index = 69; + _g5b3_var._parameters.RIreflect[0]='\0'; + _g5b3_var._parameters.LIreflect[0]='\0'; + _g5b3_var._parameters.UIreflect[0]='\0'; + _g5b3_var._parameters.DIreflect[0]='\0'; + _g5b3_var._parameters.ROreflect[0]='\0'; + _g5b3_var._parameters.LOreflect[0]='\0'; + _g5b3_var._parameters.UOreflect[0]='\0'; + _g5b3_var._parameters.DOreflect[0]='\0'; + _g5b3_var._parameters.w1l = 0.04004; + _g5b3_var._parameters.w2l = 0.04004; + _g5b3_var._parameters.linwl = 0; + _g5b3_var._parameters.loutwl = 0; + _g5b3_var._parameters.w1r = 0.04004; + _g5b3_var._parameters.w2r = 0.04004; + _g5b3_var._parameters.linwr = 0.0; + _g5b3_var._parameters.loutwr = 0; + _g5b3_var._parameters.h1u = 0.035695; + _g5b3_var._parameters.h2u = 0.002; + _g5b3_var._parameters.linhu = 23.009500000000003; + _g5b3_var._parameters.louthu = 10.990749999999998; + _g5b3_var._parameters.h1d = 0.035695; + _g5b3_var._parameters.h2d = 0.002; + _g5b3_var._parameters.linhd = 23.009500000000003; + _g5b3_var._parameters.louthd = 10.990749999999998; + _g5b3_var._parameters.l = 1.9997499999999988; + _g5b3_var._parameters.R0 = 0.99; + _g5b3_var._parameters.Qcxl = 0.0221; + _g5b3_var._parameters.Qcxr = 0.0221; + _g5b3_var._parameters.Qcyu = 0.023; + _g5b3_var._parameters.Qcyd = 0.023; + _g5b3_var._parameters.alphaxl = 1.75; + _g5b3_var._parameters.alphaxr = 1.75; + _g5b3_var._parameters.alphayu = 1.8; + _g5b3_var._parameters.alphayd = 1.8; + _g5b3_var._parameters.Wxr = 0.015; + _g5b3_var._parameters.Wxl = 0.015; + _g5b3_var._parameters.Wyu = 0.015; + _g5b3_var._parameters.Wyd = 0.015; + _g5b3_var._parameters.mxr = 2.5; + _g5b3_var._parameters.mxl = 2.5; + _g5b3_var._parameters.myu = 2; + _g5b3_var._parameters.myd = 2; + _g5b3_var._parameters.QcxrOW = 0.0217; + _g5b3_var._parameters.QcxlOW = 0.0217; + _g5b3_var._parameters.QcyuOW = 0.0217; + _g5b3_var._parameters.QcydOW = 0.0217; + _g5b3_var._parameters.alphaxlOW = 6.07; + _g5b3_var._parameters.alphaxrOW = 6.07; + _g5b3_var._parameters.alphayuOW = 6.07; + _g5b3_var._parameters.alphaydOW = 6.07; + _g5b3_var._parameters.WxrOW = 0.003; + _g5b3_var._parameters.WxlOW = 0.003; + _g5b3_var._parameters.WyuOW = 0.003; + _g5b3_var._parameters.WydOW = 0.003; + _g5b3_var._parameters.mxrOW = 0; + _g5b3_var._parameters.mxlOW = 0; + _g5b3_var._parameters.myuOW = 0; + _g5b3_var._parameters.mydOW = 0; + _g5b3_var._parameters.rwallthick = 0.001; + _g5b3_var._parameters.lwallthick = 0.001; + _g5b3_var._parameters.uwallthick = 0.001; + _g5b3_var._parameters.dwallthick = 0.001; + + + /* component g5b3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b3_var._rotation_absolute); + rot_transpose(_g5b2_var._rotation_absolute, tr1); + rot_mul(_g5b3_var._rotation_absolute, tr1, _g5b3_var._rotation_relative); + _g5b3_var._rotation_is_identity = rot_test_identity(_g5b3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 37.0195); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b2_var._position_absolute, _g5b3_var._position_absolute); + _g5b3_var._position_relative = rot_apply(_g5b3_var._rotation_absolute, tc1); + } /* g5b3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute); + instrument->_position_absolute[69] = _g5b3_var._position_absolute; + instrument->_position_relative[69] = _g5b3_var._position_relative; + _g5b3_var._position_relative_is_zero = coords_test_zero(_g5b3_var._position_relative); + instrument->counter_N[69] = instrument->counter_P[69] = instrument->counter_P2[69] = 0; + instrument->counter_AbsorbProp[69]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0068_g5b3", _g5b3_var._position_absolute, _g5b3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "h1u", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "linhu", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "louthu", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "h1d", "0.002", "0.035695","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "linhd", "0.0", "23.009500000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "louthd", "0", "10.990749999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mxr", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mxl", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0068_g5b3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b3_setpos */ + +/* component g5b4=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b4_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b4_setpos] component g5b4=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b4_var._name, "g5b4", 16384); + stracpy(_g5b4_var._type, "Guide_four_side", 16384); + _g5b4_var._index=70; + int current_setpos_index = 70; + _g5b4_var._parameters.RIreflect[0]='\0'; + _g5b4_var._parameters.LIreflect[0]='\0'; + _g5b4_var._parameters.UIreflect[0]='\0'; + _g5b4_var._parameters.DIreflect[0]='\0'; + _g5b4_var._parameters.ROreflect[0]='\0'; + _g5b4_var._parameters.LOreflect[0]='\0'; + _g5b4_var._parameters.UOreflect[0]='\0'; + _g5b4_var._parameters.DOreflect[0]='\0'; + _g5b4_var._parameters.w1l = 0.04004; + _g5b4_var._parameters.w2l = 0.04004; + _g5b4_var._parameters.linwl = 0; + _g5b4_var._parameters.loutwl = 0; + _g5b4_var._parameters.w1r = 0.04004; + _g5b4_var._parameters.w2r = 0.04004; + _g5b4_var._parameters.linwr = 0.0; + _g5b4_var._parameters.loutwr = 0; + _g5b4_var._parameters.h1u = 0.03423; + _g5b4_var._parameters.h2u = 0.002; + _g5b4_var._parameters.linhu = 25.009749999999997; + _g5b4_var._parameters.louthu = 8.990499999999997; + _g5b4_var._parameters.h1d = 0.03423; + _g5b4_var._parameters.h2d = 0.002; + _g5b4_var._parameters.linhd = 25.009749999999997; + _g5b4_var._parameters.louthd = 8.990499999999997; + _g5b4_var._parameters.l = 1.999750000000006; + _g5b4_var._parameters.R0 = 0.99; + _g5b4_var._parameters.Qcxl = 0.0221; + _g5b4_var._parameters.Qcxr = 0.0221; + _g5b4_var._parameters.Qcyu = 0.023; + _g5b4_var._parameters.Qcyd = 0.023; + _g5b4_var._parameters.alphaxl = 1.75; + _g5b4_var._parameters.alphaxr = 1.75; + _g5b4_var._parameters.alphayu = 1.8; + _g5b4_var._parameters.alphayd = 1.8; + _g5b4_var._parameters.Wxr = 0.015; + _g5b4_var._parameters.Wxl = 0.015; + _g5b4_var._parameters.Wyu = 0.015; + _g5b4_var._parameters.Wyd = 0.015; + _g5b4_var._parameters.mxr = 3.0; + _g5b4_var._parameters.mxl = 3.0; + _g5b4_var._parameters.myu = 2; + _g5b4_var._parameters.myd = 2; + _g5b4_var._parameters.QcxrOW = 0.0217; + _g5b4_var._parameters.QcxlOW = 0.0217; + _g5b4_var._parameters.QcyuOW = 0.0217; + _g5b4_var._parameters.QcydOW = 0.0217; + _g5b4_var._parameters.alphaxlOW = 6.07; + _g5b4_var._parameters.alphaxrOW = 6.07; + _g5b4_var._parameters.alphayuOW = 6.07; + _g5b4_var._parameters.alphaydOW = 6.07; + _g5b4_var._parameters.WxrOW = 0.003; + _g5b4_var._parameters.WxlOW = 0.003; + _g5b4_var._parameters.WyuOW = 0.003; + _g5b4_var._parameters.WydOW = 0.003; + _g5b4_var._parameters.mxrOW = 0; + _g5b4_var._parameters.mxlOW = 0; + _g5b4_var._parameters.myuOW = 0; + _g5b4_var._parameters.mydOW = 0; + _g5b4_var._parameters.rwallthick = 0.001; + _g5b4_var._parameters.lwallthick = 0.001; + _g5b4_var._parameters.uwallthick = 0.001; + _g5b4_var._parameters.dwallthick = 0.001; + + + /* component g5b4=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b4_var._rotation_absolute); + rot_transpose(_g5b3_var._rotation_absolute, tr1); + rot_mul(_g5b4_var._rotation_absolute, tr1, _g5b4_var._rotation_relative); + _g5b4_var._rotation_is_identity = rot_test_identity(_g5b4_var._rotation_relative); + tc1 = coords_set( + 0, 0, 39.019749999999995); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b4_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b3_var._position_absolute, _g5b4_var._position_absolute); + _g5b4_var._position_relative = rot_apply(_g5b4_var._rotation_absolute, tc1); + } /* g5b4=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute); + instrument->_position_absolute[70] = _g5b4_var._position_absolute; + instrument->_position_relative[70] = _g5b4_var._position_relative; + _g5b4_var._position_relative_is_zero = coords_test_zero(_g5b4_var._position_relative); + instrument->counter_N[70] = instrument->counter_P[70] = instrument->counter_P2[70] = 0; + instrument->counter_AbsorbProp[70]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0069_g5b4", _g5b4_var._position_absolute, _g5b4_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "h1u", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "linhu", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "louthu", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "h1d", "0.002", "0.03423","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "linhd", "0.0", "25.009749999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "louthd", "0", "8.990499999999997","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "l", "0", "1.999750000000006","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Qcyu", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Qcyd", "0.0217", "0.023","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphayu", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphayd", "6.07", "1.8","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "myu", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "myd", "3.6", "2","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0069_g5b4", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b4_setpos */ + +/* component g5b5=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b5_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b5_setpos] component g5b5=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b5_var._name, "g5b5", 16384); + stracpy(_g5b5_var._type, "Guide_four_side", 16384); + _g5b5_var._index=71; + int current_setpos_index = 71; + _g5b5_var._parameters.RIreflect[0]='\0'; + _g5b5_var._parameters.LIreflect[0]='\0'; + _g5b5_var._parameters.UIreflect[0]='\0'; + _g5b5_var._parameters.DIreflect[0]='\0'; + _g5b5_var._parameters.ROreflect[0]='\0'; + _g5b5_var._parameters.LOreflect[0]='\0'; + _g5b5_var._parameters.UOreflect[0]='\0'; + _g5b5_var._parameters.DOreflect[0]='\0'; + _g5b5_var._parameters.w1l = 0.04004; + _g5b5_var._parameters.w2l = 0.04004; + _g5b5_var._parameters.linwl = 0; + _g5b5_var._parameters.loutwl = 0; + _g5b5_var._parameters.w1r = 0.04004; + _g5b5_var._parameters.w2r = 0.04004; + _g5b5_var._parameters.linwr = 0.0; + _g5b5_var._parameters.loutwr = 0; + _g5b5_var._parameters.h1u = 0.03217; + _g5b5_var._parameters.h2u = 0.002; + _g5b5_var._parameters.linhu = 27.0135; + _g5b5_var._parameters.louthu = 6.986750000000001; + _g5b5_var._parameters.h1d = 0.03217; + _g5b5_var._parameters.h2d = 0.002; + _g5b5_var._parameters.linhd = 27.0135; + _g5b5_var._parameters.louthd = 6.986750000000001; + _g5b5_var._parameters.l = 1.9997499999999988; + _g5b5_var._parameters.R0 = 0.99; + _g5b5_var._parameters.Qcxl = 0.0221; + _g5b5_var._parameters.Qcxr = 0.0221; + _g5b5_var._parameters.Qcyu = 0.0221; + _g5b5_var._parameters.Qcyd = 0.0221; + _g5b5_var._parameters.alphaxl = 1.75; + _g5b5_var._parameters.alphaxr = 1.75; + _g5b5_var._parameters.alphayu = 1.75; + _g5b5_var._parameters.alphayd = 1.75; + _g5b5_var._parameters.Wxr = 0.015; + _g5b5_var._parameters.Wxl = 0.015; + _g5b5_var._parameters.Wyu = 0.015; + _g5b5_var._parameters.Wyd = 0.015; + _g5b5_var._parameters.mxr = 3.0; + _g5b5_var._parameters.mxl = 3.0; + _g5b5_var._parameters.myu = 2.5; + _g5b5_var._parameters.myd = 2.5; + _g5b5_var._parameters.QcxrOW = 0.0217; + _g5b5_var._parameters.QcxlOW = 0.0217; + _g5b5_var._parameters.QcyuOW = 0.0217; + _g5b5_var._parameters.QcydOW = 0.0217; + _g5b5_var._parameters.alphaxlOW = 6.07; + _g5b5_var._parameters.alphaxrOW = 6.07; + _g5b5_var._parameters.alphayuOW = 6.07; + _g5b5_var._parameters.alphaydOW = 6.07; + _g5b5_var._parameters.WxrOW = 0.003; + _g5b5_var._parameters.WxlOW = 0.003; + _g5b5_var._parameters.WyuOW = 0.003; + _g5b5_var._parameters.WydOW = 0.003; + _g5b5_var._parameters.mxrOW = 0; + _g5b5_var._parameters.mxlOW = 0; + _g5b5_var._parameters.myuOW = 0; + _g5b5_var._parameters.mydOW = 0; + _g5b5_var._parameters.rwallthick = 0.001; + _g5b5_var._parameters.lwallthick = 0.001; + _g5b5_var._parameters.uwallthick = 0.001; + _g5b5_var._parameters.dwallthick = 0.001; + + + /* component g5b5=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b5_var._rotation_absolute); + rot_transpose(_g5b4_var._rotation_absolute, tr1); + rot_mul(_g5b5_var._rotation_absolute, tr1, _g5b5_var._rotation_relative); + _g5b5_var._rotation_is_identity = rot_test_identity(_g5b5_var._rotation_relative); + tc1 = coords_set( + 0, 0, 41.0235); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b5_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b4_var._position_absolute, _g5b5_var._position_absolute); + _g5b5_var._position_relative = rot_apply(_g5b5_var._rotation_absolute, tc1); + } /* g5b5=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute); + instrument->_position_absolute[71] = _g5b5_var._position_absolute; + instrument->_position_relative[71] = _g5b5_var._position_relative; + _g5b5_var._position_relative_is_zero = coords_test_zero(_g5b5_var._position_relative); + instrument->counter_N[71] = instrument->counter_P[71] = instrument->counter_P2[71] = 0; + instrument->counter_AbsorbProp[71]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0070_g5b5", _g5b5_var._position_absolute, _g5b5_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "h1u", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "linhu", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "louthu", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "h1d", "0.002", "0.03217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "linhd", "0.0", "27.0135","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "louthd", "0", "6.986750000000001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0070_g5b5", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b5_setpos */ + +/* component g5b6=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g5b6_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g5b6_setpos] component g5b6=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g5b6_var._name, "g5b6", 16384); + stracpy(_g5b6_var._type, "Guide_four_side", 16384); + _g5b6_var._index=72; + int current_setpos_index = 72; + _g5b6_var._parameters.RIreflect[0]='\0'; + _g5b6_var._parameters.LIreflect[0]='\0'; + _g5b6_var._parameters.UIreflect[0]='\0'; + _g5b6_var._parameters.DIreflect[0]='\0'; + _g5b6_var._parameters.ROreflect[0]='\0'; + _g5b6_var._parameters.LOreflect[0]='\0'; + _g5b6_var._parameters.UOreflect[0]='\0'; + _g5b6_var._parameters.DOreflect[0]='\0'; + _g5b6_var._parameters.w1l = 0.04004; + _g5b6_var._parameters.w2l = 0.04004; + _g5b6_var._parameters.linwl = 0; + _g5b6_var._parameters.loutwl = 0; + _g5b6_var._parameters.w1r = 0.04004; + _g5b6_var._parameters.w2r = 0.04004; + _g5b6_var._parameters.linwr = 0.0; + _g5b6_var._parameters.loutwr = 0; + _g5b6_var._parameters.h1u = 0.029395; + _g5b6_var._parameters.h2u = 0.002; + _g5b6_var._parameters.linhu = 29.01375; + _g5b6_var._parameters.louthu = 6.5; + _g5b6_var._parameters.h1d = 0.029395; + _g5b6_var._parameters.h2d = 0.002; + _g5b6_var._parameters.linhd = 29.01375; + _g5b6_var._parameters.louthd = 6.5; + _g5b6_var._parameters.l = 0.4862499999999983; + _g5b6_var._parameters.R0 = 0.99; + _g5b6_var._parameters.Qcxl = 0.0221; + _g5b6_var._parameters.Qcxr = 0.0221; + _g5b6_var._parameters.Qcyu = 0.0221; + _g5b6_var._parameters.Qcyd = 0.0221; + _g5b6_var._parameters.alphaxl = 1.75; + _g5b6_var._parameters.alphaxr = 1.75; + _g5b6_var._parameters.alphayu = 1.75; + _g5b6_var._parameters.alphayd = 1.75; + _g5b6_var._parameters.Wxr = 0.015; + _g5b6_var._parameters.Wxl = 0.015; + _g5b6_var._parameters.Wyu = 0.015; + _g5b6_var._parameters.Wyd = 0.015; + _g5b6_var._parameters.mxr = 3.0; + _g5b6_var._parameters.mxl = 3.0; + _g5b6_var._parameters.myu = 2.5; + _g5b6_var._parameters.myd = 2.5; + _g5b6_var._parameters.QcxrOW = 0.0217; + _g5b6_var._parameters.QcxlOW = 0.0217; + _g5b6_var._parameters.QcyuOW = 0.0217; + _g5b6_var._parameters.QcydOW = 0.0217; + _g5b6_var._parameters.alphaxlOW = 6.07; + _g5b6_var._parameters.alphaxrOW = 6.07; + _g5b6_var._parameters.alphayuOW = 6.07; + _g5b6_var._parameters.alphaydOW = 6.07; + _g5b6_var._parameters.WxrOW = 0.003; + _g5b6_var._parameters.WxlOW = 0.003; + _g5b6_var._parameters.WyuOW = 0.003; + _g5b6_var._parameters.WydOW = 0.003; + _g5b6_var._parameters.mxrOW = 0; + _g5b6_var._parameters.mxlOW = 0; + _g5b6_var._parameters.myuOW = 0; + _g5b6_var._parameters.mydOW = 0; + _g5b6_var._parameters.rwallthick = 0.001; + _g5b6_var._parameters.lwallthick = 0.001; + _g5b6_var._parameters.uwallthick = 0.001; + _g5b6_var._parameters.dwallthick = 0.001; + + + /* component g5b6=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g5b6_var._rotation_absolute); + rot_transpose(_g5b5_var._rotation_absolute, tr1); + rot_mul(_g5b6_var._rotation_absolute, tr1, _g5b6_var._rotation_relative); + _g5b6_var._rotation_is_identity = rot_test_identity(_g5b6_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.02375); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g5b6_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b5_var._position_absolute, _g5b6_var._position_absolute); + _g5b6_var._position_relative = rot_apply(_g5b6_var._rotation_absolute, tc1); + } /* g5b6=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute); + instrument->_position_absolute[72] = _g5b6_var._position_absolute; + instrument->_position_relative[72] = _g5b6_var._position_relative; + _g5b6_var._position_relative_is_zero = coords_test_zero(_g5b6_var._position_relative); + instrument->counter_N[72] = instrument->counter_P[72] = instrument->counter_P2[72] = 0; + instrument->counter_AbsorbProp[72]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0071_g5b6", _g5b6_var._position_absolute, _g5b6_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "w2l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "linwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "loutwl", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "w2r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "linwr", "0.0", "0.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "loutwr", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "h1u", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "linhu", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "louthu", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "h1d", "0.002", "0.029395","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "linhd", "0.0", "29.01375","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "louthd", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "l", "0", "0.4862499999999983","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Qcxl", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Qcxr", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaxl", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaxr", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mxr", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mxl", "3.6", "3.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0071_g5b6", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g5b6_setpos */ + +/* component g6a1=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a1_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a1_setpos] component g6a1=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a1_var._name, "g6a1", 16384); + stracpy(_g6a1_var._type, "Guide_four_side", 16384); + _g6a1_var._index=73; + int current_setpos_index = 73; + _g6a1_var._parameters.RIreflect[0]='\0'; + _g6a1_var._parameters.LIreflect[0]='\0'; + _g6a1_var._parameters.UIreflect[0]='\0'; + _g6a1_var._parameters.DIreflect[0]='\0'; + _g6a1_var._parameters.ROreflect[0]='\0'; + _g6a1_var._parameters.LOreflect[0]='\0'; + _g6a1_var._parameters.UOreflect[0]='\0'; + _g6a1_var._parameters.DOreflect[0]='\0'; + _g6a1_var._parameters.w1l = 0.04004; + _g6a1_var._parameters.w2l = 0.002; + _g6a1_var._parameters.linwl = 6.5; + _g6a1_var._parameters.loutwl = 4.9864999999999995; + _g6a1_var._parameters.w1r = 0.04004; + _g6a1_var._parameters.w2r = 0.002; + _g6a1_var._parameters.linwr = 6.5; + _g6a1_var._parameters.loutwr = 4.9864999999999995; + _g6a1_var._parameters.h1u = 0.02859; + _g6a1_var._parameters.h2u = 0.002; + _g6a1_var._parameters.linhu = 29.5; + _g6a1_var._parameters.louthu = 4.9864999999999995; + _g6a1_var._parameters.h1d = 0.02859; + _g6a1_var._parameters.h2d = 0.002; + _g6a1_var._parameters.linhd = 29.5; + _g6a1_var._parameters.louthd = 4.9864999999999995; + _g6a1_var._parameters.l = 1.5135000000000005; + _g6a1_var._parameters.R0 = 0.99; + _g6a1_var._parameters.Qcxl = 0.0217; + _g6a1_var._parameters.Qcxr = 0.0217; + _g6a1_var._parameters.Qcyu = 0.0221; + _g6a1_var._parameters.Qcyd = 0.0221; + _g6a1_var._parameters.alphaxl = 2.5; + _g6a1_var._parameters.alphaxr = 2.5; + _g6a1_var._parameters.alphayu = 1.75; + _g6a1_var._parameters.alphayd = 1.75; + _g6a1_var._parameters.Wxr = 0.015; + _g6a1_var._parameters.Wxl = 0.015; + _g6a1_var._parameters.Wyu = 0.015; + _g6a1_var._parameters.Wyd = 0.015; + _g6a1_var._parameters.mxr = 3.5; + _g6a1_var._parameters.mxl = 3.5; + _g6a1_var._parameters.myu = 2.5; + _g6a1_var._parameters.myd = 2.5; + _g6a1_var._parameters.QcxrOW = 0.0217; + _g6a1_var._parameters.QcxlOW = 0.0217; + _g6a1_var._parameters.QcyuOW = 0.0217; + _g6a1_var._parameters.QcydOW = 0.0217; + _g6a1_var._parameters.alphaxlOW = 6.07; + _g6a1_var._parameters.alphaxrOW = 6.07; + _g6a1_var._parameters.alphayuOW = 6.07; + _g6a1_var._parameters.alphaydOW = 6.07; + _g6a1_var._parameters.WxrOW = 0.003; + _g6a1_var._parameters.WxlOW = 0.003; + _g6a1_var._parameters.WyuOW = 0.003; + _g6a1_var._parameters.WydOW = 0.003; + _g6a1_var._parameters.mxrOW = 0; + _g6a1_var._parameters.mxlOW = 0; + _g6a1_var._parameters.myuOW = 0; + _g6a1_var._parameters.mydOW = 0; + _g6a1_var._parameters.rwallthick = 0.001; + _g6a1_var._parameters.lwallthick = 0.001; + _g6a1_var._parameters.uwallthick = 0.001; + _g6a1_var._parameters.dwallthick = 0.001; + + + /* component g6a1=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a1_var._rotation_absolute); + rot_transpose(_g5b6_var._rotation_absolute, tr1); + rot_mul(_g6a1_var._rotation_absolute, tr1, _g6a1_var._rotation_relative); + _g6a1_var._rotation_is_identity = rot_test_identity(_g6a1_var._rotation_relative); + tc1 = coords_set( + 0, 0, 43.51); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a1_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g5b6_var._position_absolute, _g6a1_var._position_absolute); + _g6a1_var._position_relative = rot_apply(_g6a1_var._rotation_absolute, tc1); + } /* g6a1=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute); + instrument->_position_absolute[73] = _g6a1_var._position_absolute; + instrument->_position_relative[73] = _g6a1_var._position_relative; + _g6a1_var._position_relative_is_zero = coords_test_zero(_g6a1_var._position_relative); + instrument->counter_N[73] = instrument->counter_P[73] = instrument->counter_P2[73] = 0; + instrument->counter_AbsorbProp[73]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0072_g6a1", _g6a1_var._position_absolute, _g6a1_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "w1l", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "linwl", "0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "loutwl", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "w1r", "0.002", "0.04004","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "linwr", "0.0", "6.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "loutwr", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "h1u", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "linhu", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "louthu", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "h1d", "0.002", "0.02859","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "linhd", "0.0", "29.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "louthd", "0", "4.9864999999999995","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "l", "0", "1.5135000000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mxr", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mxl", "3.6", "3.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "myu", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "myd", "3.6", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0072_g6a1", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a1_setpos */ + +/* component g6a2=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a2_setpos] component g6a2=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a2_var._name, "g6a2", 16384); + stracpy(_g6a2_var._type, "Guide_four_side", 16384); + _g6a2_var._index=74; + int current_setpos_index = 74; + _g6a2_var._parameters.RIreflect[0]='\0'; + _g6a2_var._parameters.LIreflect[0]='\0'; + _g6a2_var._parameters.UIreflect[0]='\0'; + _g6a2_var._parameters.DIreflect[0]='\0'; + _g6a2_var._parameters.ROreflect[0]='\0'; + _g6a2_var._parameters.LOreflect[0]='\0'; + _g6a2_var._parameters.UOreflect[0]='\0'; + _g6a2_var._parameters.DOreflect[0]='\0'; + _g6a2_var._parameters.w1l = 0.038935; + _g6a2_var._parameters.w2l = 0.002; + _g6a2_var._parameters.linwl = 8.017499999999998; + _g6a2_var._parameters.loutwl = 2.982750000000003; + _g6a2_var._parameters.w1r = 0.038935; + _g6a2_var._parameters.w2r = 0.002; + _g6a2_var._parameters.linwr = 8.017499999999998; + _g6a2_var._parameters.loutwr = 2.982750000000003; + _g6a2_var._parameters.h1u = 0.02567; + _g6a2_var._parameters.h2u = 0.002; + _g6a2_var._parameters.linhu = 31.0175; + _g6a2_var._parameters.louthu = 2.982750000000003; + _g6a2_var._parameters.h1d = 0.02567; + _g6a2_var._parameters.h2d = 0.002; + _g6a2_var._parameters.linhd = 31.0175; + _g6a2_var._parameters.louthd = 2.982750000000003; + _g6a2_var._parameters.l = 1.9997499999999988; + _g6a2_var._parameters.R0 = 0.99; + _g6a2_var._parameters.Qcxl = 0.0217; + _g6a2_var._parameters.Qcxr = 0.0217; + _g6a2_var._parameters.Qcyu = 0.0221; + _g6a2_var._parameters.Qcyd = 0.0221; + _g6a2_var._parameters.alphaxl = 2.5; + _g6a2_var._parameters.alphaxr = 2.5; + _g6a2_var._parameters.alphayu = 1.75; + _g6a2_var._parameters.alphayd = 1.75; + _g6a2_var._parameters.Wxr = 0.015; + _g6a2_var._parameters.Wxl = 0.015; + _g6a2_var._parameters.Wyu = 0.015; + _g6a2_var._parameters.Wyd = 0.015; + _g6a2_var._parameters.mxr = 4; + _g6a2_var._parameters.mxl = 4; + _g6a2_var._parameters.myu = 3; + _g6a2_var._parameters.myd = 3; + _g6a2_var._parameters.QcxrOW = 0.0217; + _g6a2_var._parameters.QcxlOW = 0.0217; + _g6a2_var._parameters.QcyuOW = 0.0217; + _g6a2_var._parameters.QcydOW = 0.0217; + _g6a2_var._parameters.alphaxlOW = 6.07; + _g6a2_var._parameters.alphaxrOW = 6.07; + _g6a2_var._parameters.alphayuOW = 6.07; + _g6a2_var._parameters.alphaydOW = 6.07; + _g6a2_var._parameters.WxrOW = 0.003; + _g6a2_var._parameters.WxlOW = 0.003; + _g6a2_var._parameters.WyuOW = 0.003; + _g6a2_var._parameters.WydOW = 0.003; + _g6a2_var._parameters.mxrOW = 0; + _g6a2_var._parameters.mxlOW = 0; + _g6a2_var._parameters.myuOW = 0; + _g6a2_var._parameters.mydOW = 0; + _g6a2_var._parameters.rwallthick = 0.001; + _g6a2_var._parameters.lwallthick = 0.001; + _g6a2_var._parameters.uwallthick = 0.001; + _g6a2_var._parameters.dwallthick = 0.001; + + + /* component g6a2=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a2_var._rotation_absolute); + rot_transpose(_g6a1_var._rotation_absolute, tr1); + rot_mul(_g6a2_var._rotation_absolute, tr1, _g6a2_var._rotation_relative); + _g6a2_var._rotation_is_identity = rot_test_identity(_g6a2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 45.027499999999996); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a2_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a1_var._position_absolute, _g6a2_var._position_absolute); + _g6a2_var._position_relative = rot_apply(_g6a2_var._rotation_absolute, tc1); + } /* g6a2=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute); + instrument->_position_absolute[74] = _g6a2_var._position_absolute; + instrument->_position_relative[74] = _g6a2_var._position_relative; + _g6a2_var._position_relative_is_zero = coords_test_zero(_g6a2_var._position_relative); + instrument->counter_N[74] = instrument->counter_P[74] = instrument->counter_P2[74] = 0; + instrument->counter_AbsorbProp[74]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0073_g6a2", _g6a2_var._position_absolute, _g6a2_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "w1l", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "linwl", "0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "loutwl", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "w1r", "0.002", "0.038935","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "linwr", "0.0", "8.017499999999998","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "loutwr", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "h1u", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "linhu", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "louthu", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "h1d", "0.002", "0.02567","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "linhd", "0.0", "31.0175","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "louthd", "0", "2.982750000000003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "l", "0", "1.9997499999999988","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Qcyu", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Qcyd", "0.0217", "0.0221","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphayu", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphayd", "6.07", "1.75","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "myu", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "myd", "3.6", "3","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0073_g6a2", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a2_setpos */ + +/* component g6a3=Guide_four_side() SETTING, POSITION/ROTATION */ +int _g6a3_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_g6a3_setpos] component g6a3=Guide_four_side() SETTING [Guide_four_side:0]"); + stracpy(_g6a3_var._name, "g6a3", 16384); + stracpy(_g6a3_var._type, "Guide_four_side", 16384); + _g6a3_var._index=75; + int current_setpos_index = 75; + _g6a3_var._parameters.RIreflect[0]='\0'; + _g6a3_var._parameters.LIreflect[0]='\0'; + _g6a3_var._parameters.UIreflect[0]='\0'; + _g6a3_var._parameters.DIreflect[0]='\0'; + _g6a3_var._parameters.ROreflect[0]='\0'; + _g6a3_var._parameters.LOreflect[0]='\0'; + _g6a3_var._parameters.UOreflect[0]='\0'; + _g6a3_var._parameters.DOreflect[0]='\0'; + _g6a3_var._parameters.w1l = 0.03367; + _g6a3_var._parameters.w2l = 0.002; + _g6a3_var._parameters.linwl = 10.01775; + _g6a3_var._parameters.loutwl = 1.0; + _g6a3_var._parameters.w1r = 0.03367; + _g6a3_var._parameters.w2r = 0.002; + _g6a3_var._parameters.linwr = 10.01775; + _g6a3_var._parameters.loutwr = 1.0; + _g6a3_var._parameters.h1u = 0.02049; + _g6a3_var._parameters.h2u = 0.002; + _g6a3_var._parameters.linhu = 33.01775; + _g6a3_var._parameters.louthu = 1.0; + _g6a3_var._parameters.h1d = 0.02049; + _g6a3_var._parameters.h2d = 0.002; + _g6a3_var._parameters.linhd = 33.01775; + _g6a3_var._parameters.louthd = 1.0; + _g6a3_var._parameters.l = 1.9822500000000005; + _g6a3_var._parameters.R0 = 0.99; + _g6a3_var._parameters.Qcxl = 0.0217; + _g6a3_var._parameters.Qcxr = 0.0217; + _g6a3_var._parameters.Qcyu = 0.0217; + _g6a3_var._parameters.Qcyd = 0.0217; + _g6a3_var._parameters.alphaxl = 2.5; + _g6a3_var._parameters.alphaxr = 2.5; + _g6a3_var._parameters.alphayu = 2.5; + _g6a3_var._parameters.alphayd = 2.5; + _g6a3_var._parameters.Wxr = 0.015; + _g6a3_var._parameters.Wxl = 0.015; + _g6a3_var._parameters.Wyu = 0.015; + _g6a3_var._parameters.Wyd = 0.015; + _g6a3_var._parameters.mxr = 4; + _g6a3_var._parameters.mxl = 4; + _g6a3_var._parameters.myu = 4; + _g6a3_var._parameters.myd = 4; + _g6a3_var._parameters.QcxrOW = 0.0217; + _g6a3_var._parameters.QcxlOW = 0.0217; + _g6a3_var._parameters.QcyuOW = 0.0217; + _g6a3_var._parameters.QcydOW = 0.0217; + _g6a3_var._parameters.alphaxlOW = 6.07; + _g6a3_var._parameters.alphaxrOW = 6.07; + _g6a3_var._parameters.alphayuOW = 6.07; + _g6a3_var._parameters.alphaydOW = 6.07; + _g6a3_var._parameters.WxrOW = 0.003; + _g6a3_var._parameters.WxlOW = 0.003; + _g6a3_var._parameters.WyuOW = 0.003; + _g6a3_var._parameters.WydOW = 0.003; + _g6a3_var._parameters.mxrOW = 0; + _g6a3_var._parameters.mxlOW = 0; + _g6a3_var._parameters.myuOW = 0; + _g6a3_var._parameters.mydOW = 0; + _g6a3_var._parameters.rwallthick = 0.001; + _g6a3_var._parameters.lwallthick = 0.001; + _g6a3_var._parameters.uwallthick = 0.001; + _g6a3_var._parameters.dwallthick = 0.001; + + + /* component g6a3=Guide_four_side() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _g6a3_var._rotation_absolute); + rot_transpose(_g6a2_var._rotation_absolute, tr1); + rot_mul(_g6a3_var._rotation_absolute, tr1, _g6a3_var._rotation_relative); + _g6a3_var._rotation_is_identity = rot_test_identity(_g6a3_var._rotation_relative); + tc1 = coords_set( + 0, 0, 47.02775); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _g6a3_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a2_var._position_absolute, _g6a3_var._position_absolute); + _g6a3_var._position_relative = rot_apply(_g6a3_var._rotation_absolute, tc1); + } /* g6a3=Guide_four_side() AT ROTATED */ + DEBUG_COMPONENT("g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute); + instrument->_position_absolute[75] = _g6a3_var._position_absolute; + instrument->_position_relative[75] = _g6a3_var._position_relative; + _g6a3_var._position_relative_is_zero = coords_test_zero(_g6a3_var._position_relative); + instrument->counter_N[75] = instrument->counter_P[75] = instrument->counter_P2[75] = 0; + instrument->counter_AbsorbProp[75]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0074_g6a3", _g6a3_var._position_absolute, _g6a3_var._rotation_absolute, "Guide_four_side"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "RIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "LIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "UIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "DIreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "ROreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "LOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "UOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "DOreflect", 0, 0, "char*"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "w1l", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "w2l", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "linwl", "0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "loutwl", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "w1r", "0.002", "0.03367","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "w2r", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "linwr", "0.0", "10.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "loutwr", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "h1u", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "h2u", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "linhu", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "louthu", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "h1d", "0.002", "0.02049","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "h2d", "0.002", "0.002","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "linhd", "0.0", "33.01775","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "louthd", "0", "1.0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "l", "0", "1.9822500000000005","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "R0", "0.99", "0.99","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Qcxl", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Qcxr", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Qcyu", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Qcyd", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaxl", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaxr", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphayu", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphayd", "6.07", "2.5","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Wxr", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Wxl", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Wyu", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "Wyd", "0.003", "0.015","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mxr", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mxl", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "myu", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "myd", "3.6", "4","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "QcxrOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "QcxlOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "QcyuOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "QcydOW", "0.0217", "0.0217","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaxlOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaxrOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphayuOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "alphaydOW", "6.07", "6.07","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "WxrOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "WxlOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "WyuOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "WydOW", "0.003", "0.003","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mxrOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mxlOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "myuOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "mydOW", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "rwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "lwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "uwallthick", "0.001", "0.001","MCNUM"); + mccomp_param_nexus(nxhandle,"0074_g6a3", "dwallthick", "0.001", "0.001","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _g6a3_setpos */ + +/* component guide_end=Arm() SETTING, POSITION/ROTATION */ +int _guide_end_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_guide_end_setpos] component guide_end=Arm() SETTING [Arm:0]"); + stracpy(_guide_end_var._name, "guide_end", 16384); + stracpy(_guide_end_var._type, "Arm", 16384); + _guide_end_var._index=76; + int current_setpos_index = 76; + /* component guide_end=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _guide_end_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_guide_end_var._rotation_absolute, tr1, _guide_end_var._rotation_relative); + _guide_end_var._rotation_is_identity = rot_test_identity(_guide_end_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _guide_end_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _guide_end_var._position_absolute); + _guide_end_var._position_relative = rot_apply(_guide_end_var._rotation_absolute, tc1); + } /* guide_end=Arm() AT ROTATED */ + DEBUG_COMPONENT("guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute); + instrument->_position_absolute[76] = _guide_end_var._position_absolute; + instrument->_position_relative[76] = _guide_end_var._position_relative; + _guide_end_var._position_relative_is_zero = coords_test_zero(_guide_end_var._position_relative); + instrument->counter_N[76] = instrument->counter_P[76] = instrument->counter_P2[76] = 0; + instrument->counter_AbsorbProp[76]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0075_guide_end", _guide_end_var._position_absolute, _guide_end_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _guide_end_setpos */ + +/* component monitor_3_position=Arm() SETTING, POSITION/ROTATION */ +int _monitor_3_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_monitor_3_position_setpos] component monitor_3_position=Arm() SETTING [Arm:0]"); + stracpy(_monitor_3_position_var._name, "monitor_3_position", 16384); + stracpy(_monitor_3_position_var._type, "Arm", 16384); + _monitor_3_position_var._index=77; + int current_setpos_index = 77; + /* component monitor_3_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _monitor_3_position_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_monitor_3_position_var._rotation_absolute, tr1, _monitor_3_position_var._rotation_relative); + _monitor_3_position_var._rotation_is_identity = rot_test_identity(_monitor_3_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 49.01); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _monitor_3_position_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _monitor_3_position_var._position_absolute); + _monitor_3_position_var._position_relative = rot_apply(_monitor_3_position_var._rotation_absolute, tc1); + } /* monitor_3_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute); + instrument->_position_absolute[77] = _monitor_3_position_var._position_absolute; + instrument->_position_relative[77] = _monitor_3_position_var._position_relative; + _monitor_3_position_var._position_relative_is_zero = coords_test_zero(_monitor_3_position_var._position_relative); + instrument->counter_N[77] = instrument->counter_P[77] = instrument->counter_P2[77] = 0; + instrument->counter_AbsorbProp[77]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0076_monitor_3_position", _monitor_3_position_var._position_absolute, _monitor_3_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _monitor_3_position_setpos */ + +/* component start_backend=Arm() SETTING, POSITION/ROTATION */ +int _start_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_start_backend_setpos] component start_backend=Arm() SETTING [Arm:0]"); + stracpy(_start_backend_var._name, "start_backend", 16384); + stracpy(_start_backend_var._type, "Arm", 16384); + _start_backend_var._index=78; + int current_setpos_index = 78; + /* component start_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_var._rotation_absolute, _start_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_start_backend_var._rotation_absolute, tr1, _start_backend_var._rotation_relative); + _start_backend_var._rotation_is_identity = rot_test_identity(_start_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_optical_axis_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _start_backend_var._position_absolute = coords_add(_optical_axis_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _start_backend_var._position_absolute); + _start_backend_var._position_relative = rot_apply(_start_backend_var._rotation_absolute, tc1); + } /* start_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute); + instrument->_position_absolute[78] = _start_backend_var._position_absolute; + instrument->_position_relative[78] = _start_backend_var._position_relative; + _start_backend_var._position_relative_is_zero = coords_test_zero(_start_backend_var._position_relative); + instrument->counter_N[78] = instrument->counter_P[78] = instrument->counter_P2[78] = 0; + instrument->counter_AbsorbProp[78]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0077_start_backend", _start_backend_var._position_absolute, _start_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _start_backend_setpos */ + +/* component optical_axis_backend=Arm() SETTING, POSITION/ROTATION */ +int _optical_axis_backend_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_optical_axis_backend_setpos] component optical_axis_backend=Arm() SETTING [Arm:0]"); + stracpy(_optical_axis_backend_var._name, "optical_axis_backend", 16384); + stracpy(_optical_axis_backend_var._type, "Arm", 16384); + _optical_axis_backend_var._index=79; + int current_setpos_index = 79; + /* component optical_axis_backend=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _start_backend_var._rotation_absolute, _optical_axis_backend_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_optical_axis_backend_var._rotation_absolute, tr1, _optical_axis_backend_var._rotation_relative); + _optical_axis_backend_var._rotation_is_identity = rot_test_identity(_optical_axis_backend_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_start_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _optical_axis_backend_var._position_absolute = coords_add(_start_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _optical_axis_backend_var._position_absolute); + _optical_axis_backend_var._position_relative = rot_apply(_optical_axis_backend_var._rotation_absolute, tc1); + } /* optical_axis_backend=Arm() AT ROTATED */ + DEBUG_COMPONENT("optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute); + instrument->_position_absolute[79] = _optical_axis_backend_var._position_absolute; + instrument->_position_relative[79] = _optical_axis_backend_var._position_relative; + _optical_axis_backend_var._position_relative_is_zero = coords_test_zero(_optical_axis_backend_var._position_relative); + instrument->counter_N[79] = instrument->counter_P[79] = instrument->counter_P2[79] = 0; + instrument->counter_AbsorbProp[79]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0078_optical_axis_backend", _optical_axis_backend_var._position_absolute, _optical_axis_backend_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _optical_axis_backend_setpos */ + +/* component pinhole_2=Slit() SETTING, POSITION/ROTATION */ +int _pinhole_2_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_pinhole_2_setpos] component pinhole_2=Slit() SETTING [Slit:0]"); + stracpy(_pinhole_2_var._name, "pinhole_2", 16384); + stracpy(_pinhole_2_var._type, "Slit", 16384); + _pinhole_2_var._index=80; + int current_setpos_index = 80; + _pinhole_2_var._parameters.xmin = UNSET; + _pinhole_2_var._parameters.xmax = UNSET; + _pinhole_2_var._parameters.ymin = UNSET; + _pinhole_2_var._parameters.ymax = UNSET; + _pinhole_2_var._parameters.radius = UNSET; + _pinhole_2_var._parameters.xwidth = 0.03; + _pinhole_2_var._parameters.yheight = 0.03; + + + /* component pinhole_2=Slit() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _pinhole_2_var._rotation_absolute); + rot_transpose(_g6a3_var._rotation_absolute, tr1); + rot_mul(_pinhole_2_var._rotation_absolute, tr1, _pinhole_2_var._rotation_relative); + _pinhole_2_var._rotation_is_identity = rot_test_identity(_pinhole_2_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _pinhole_2_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_g6a3_var._position_absolute, _pinhole_2_var._position_absolute); + _pinhole_2_var._position_relative = rot_apply(_pinhole_2_var._rotation_absolute, tc1); + } /* pinhole_2=Slit() AT ROTATED */ + DEBUG_COMPONENT("pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute); + instrument->_position_absolute[80] = _pinhole_2_var._position_absolute; + instrument->_position_relative[80] = _pinhole_2_var._position_relative; + _pinhole_2_var._position_relative_is_zero = coords_test_zero(_pinhole_2_var._position_relative); + instrument->counter_N[80] = instrument->counter_P[80] = instrument->counter_P2[80] = 0; + instrument->counter_AbsorbProp[80]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0079_pinhole_2", _pinhole_2_var._position_absolute, _pinhole_2_var._rotation_absolute, "Slit"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "xmin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "xmax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "ymin", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "ymax", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "radius", "UNSET", "UNSET","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "xwidth", "UNSET", "0.03","MCNUM"); + mccomp_param_nexus(nxhandle,"0079_pinhole_2", "yheight", "UNSET", "0.03","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _pinhole_2_setpos */ + +/* component graph=Graphite_Diffuser() SETTING, POSITION/ROTATION */ +int _graph_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_graph_setpos] component graph=Graphite_Diffuser() SETTING [Graphite_Diffuser:0]"); + stracpy(_graph_var._name, "graph", 16384); + stracpy(_graph_var._type, "Graphite_Diffuser", 16384); + _graph_var._index=81; + int current_setpos_index = 81; + _graph_var._parameters.xwidth = 0.1; + _graph_var._parameters.ywidth = 0.1; + _graph_var._parameters.thick = 0.2; + _graph_var._parameters.abs = 1; + + /* component graph=Graphite_Diffuser() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _graph_var._rotation_absolute); + rot_transpose(_pinhole_2_var._rotation_absolute, tr1); + rot_mul(_graph_var._rotation_absolute, tr1, _graph_var._rotation_relative); + _graph_var._rotation_is_identity = rot_test_identity(_graph_var._rotation_relative); + tc1 = coords_set( + 0, 0, 50.001); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _graph_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_pinhole_2_var._position_absolute, _graph_var._position_absolute); + _graph_var._position_relative = rot_apply(_graph_var._rotation_absolute, tc1); + } /* graph=Graphite_Diffuser() AT ROTATED */ + DEBUG_COMPONENT("graph", _graph_var._position_absolute, _graph_var._rotation_absolute); + instrument->_position_absolute[81] = _graph_var._position_absolute; + instrument->_position_relative[81] = _graph_var._position_relative; + _graph_var._position_relative_is_zero = coords_test_zero(_graph_var._position_relative); + instrument->counter_N[81] = instrument->counter_P[81] = instrument->counter_P2[81] = 0; + instrument->counter_AbsorbProp[81]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0080_graph", _graph_var._position_absolute, _graph_var._rotation_absolute, "Graphite_Diffuser"); + mccomp_param_nexus(nxhandle,"0080_graph", "xwidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0080_graph", "ywidth", "0.1", "0.1","MCNUM"); + mccomp_param_nexus(nxhandle,"0080_graph", "thick", "0.01", "0.2","MCNUM"); + mccomp_param_nexus(nxhandle,"0080_graph", "abs", "1", "1","MCNUM"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _graph_setpos */ + +/* component sample_monitor_arm=Arm() SETTING, POSITION/ROTATION */ +int _sample_monitor_arm_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_monitor_arm_setpos] component sample_monitor_arm=Arm() SETTING [Arm:0]"); + stracpy(_sample_monitor_arm_var._name, "sample_monitor_arm", 16384); + stracpy(_sample_monitor_arm_var._type, "Arm", 16384); + _sample_monitor_arm_var._index=82; + int current_setpos_index = 82; + /* component sample_monitor_arm=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_monitor_arm_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_monitor_arm_var._rotation_absolute, tr1, _sample_monitor_arm_var._rotation_relative); + _sample_monitor_arm_var._rotation_is_identity = rot_test_identity(_sample_monitor_arm_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_monitor_arm_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_monitor_arm_var._position_absolute); + _sample_monitor_arm_var._position_relative = rot_apply(_sample_monitor_arm_var._rotation_absolute, tc1); + } /* sample_monitor_arm=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute); + instrument->_position_absolute[82] = _sample_monitor_arm_var._position_absolute; + instrument->_position_relative[82] = _sample_monitor_arm_var._position_relative; + _sample_monitor_arm_var._position_relative_is_zero = coords_test_zero(_sample_monitor_arm_var._position_relative); + instrument->counter_N[82] = instrument->counter_P[82] = instrument->counter_P2[82] = 0; + instrument->counter_AbsorbProp[82]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0081_sample_monitor_arm", _sample_monitor_arm_var._position_absolute, _sample_monitor_arm_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_monitor_arm_setpos */ + +/* component sample_PSD=Monitor_nD() SETTING, POSITION/ROTATION */ +int _sample_PSD_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_PSD_setpos] component sample_PSD=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_sample_PSD_var._name, "sample_PSD", 16384); + stracpy(_sample_PSD_var._type, "Monitor_nD", 16384); + _sample_PSD_var._index=83; + int current_setpos_index = 83; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user1, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user2, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_sample_PSD_var._parameters.user3, "" ? "" : "", 16384); + else + _sample_PSD_var._parameters.user3[0]='\0'; + _sample_PSD_var._parameters.xwidth = 0.3; + _sample_PSD_var._parameters.yheight = 0.3; + _sample_PSD_var._parameters.zdepth = 0; + _sample_PSD_var._parameters.xmin = 0; + _sample_PSD_var._parameters.xmax = 0; + _sample_PSD_var._parameters.ymin = 0; + _sample_PSD_var._parameters.ymax = 0; + _sample_PSD_var._parameters.zmin = 0; + _sample_PSD_var._parameters.zmax = 0; + _sample_PSD_var._parameters.bins = 0; + _sample_PSD_var._parameters.min = -1e40; + _sample_PSD_var._parameters.max = 1e40; + _sample_PSD_var._parameters.restore_neutron = 0; + _sample_PSD_var._parameters.radius = 0; + if("x bins 300 y bins 300" && strlen("x bins 300 y bins 300")) + stracpy(_sample_PSD_var._parameters.options, "x bins 300 y bins 300" ? "x bins 300 y bins 300" : "", 16384); + else + _sample_PSD_var._parameters.options[0]='\0'; + if("image.dat" && strlen("image.dat")) + stracpy(_sample_PSD_var._parameters.filename, "image.dat" ? "image.dat" : "", 16384); + else + _sample_PSD_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.geometry[0]='\0'; + _sample_PSD_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_sample_PSD_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _sample_PSD_var._parameters.username3[0]='\0'; + _sample_PSD_var._parameters.tsplit = 0; + _sample_PSD_var._parameters.adaptive_target = 0; + + + /* component sample_PSD=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _sample_PSD_var._rotation_absolute); + rot_transpose(_graph_var._rotation_absolute, tr1); + rot_mul(_sample_PSD_var._rotation_absolute, tr1, _sample_PSD_var._rotation_relative); + _sample_PSD_var._rotation_is_identity = rot_test_identity(_sample_PSD_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_PSD_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_graph_var._position_absolute, _sample_PSD_var._position_absolute); + _sample_PSD_var._position_relative = rot_apply(_sample_PSD_var._rotation_absolute, tc1); + } /* sample_PSD=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute); + instrument->_position_absolute[83] = _sample_PSD_var._position_absolute; + instrument->_position_relative[83] = _sample_PSD_var._position_relative; + _sample_PSD_var._position_relative_is_zero = coords_test_zero(_sample_PSD_var._position_relative); + instrument->counter_N[83] = instrument->counter_P[83] = instrument->counter_P2[83] = 0; + instrument->counter_AbsorbProp[83]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0082_sample_PSD", _sample_PSD_var._position_absolute, _sample_PSD_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "options", "NULL", "x bins 300 y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "filename", "NULL", "image.dat", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0082_sample_PSD", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_PSD_setpos */ + +/* component profile_x=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_x_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_x_setpos] component profile_x=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_x_var._name, "profile_x", 16384); + stracpy(_profile_x_var._type, "Monitor_nD", 16384); + _profile_x_var._index=84; + int current_setpos_index = 84; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_x_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_x_var._parameters.user3[0]='\0'; + _profile_x_var._parameters.xwidth = 0.3; + _profile_x_var._parameters.yheight = 0.3; + _profile_x_var._parameters.zdepth = 0; + _profile_x_var._parameters.xmin = 0; + _profile_x_var._parameters.xmax = 0; + _profile_x_var._parameters.ymin = 0; + _profile_x_var._parameters.ymax = 0; + _profile_x_var._parameters.zmin = 0; + _profile_x_var._parameters.zmax = 0; + _profile_x_var._parameters.bins = 0; + _profile_x_var._parameters.min = -1e40; + _profile_x_var._parameters.max = 1e40; + _profile_x_var._parameters.restore_neutron = 0; + _profile_x_var._parameters.radius = 0; + if("x bins 300" && strlen("x bins 300")) + stracpy(_profile_x_var._parameters.options, "x bins 300" ? "x bins 300" : "", 16384); + else + _profile_x_var._parameters.options[0]='\0'; + if("profile_x.dat" && strlen("profile_x.dat")) + stracpy(_profile_x_var._parameters.filename, "profile_x.dat" ? "profile_x.dat" : "", 16384); + else + _profile_x_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.geometry[0]='\0'; + _profile_x_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_x_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_x_var._parameters.username3[0]='\0'; + _profile_x_var._parameters.tsplit = 0; + _profile_x_var._parameters.adaptive_target = 0; + + + /* component profile_x=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_x_var._rotation_absolute); + rot_transpose(_sample_PSD_var._rotation_absolute, tr1); + rot_mul(_profile_x_var._rotation_absolute, tr1, _profile_x_var._rotation_relative); + _profile_x_var._rotation_is_identity = rot_test_identity(_profile_x_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_x_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_sample_PSD_var._position_absolute, _profile_x_var._position_absolute); + _profile_x_var._position_relative = rot_apply(_profile_x_var._rotation_absolute, tc1); + } /* profile_x=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute); + instrument->_position_absolute[84] = _profile_x_var._position_absolute; + instrument->_position_relative[84] = _profile_x_var._position_relative; + _profile_x_var._position_relative_is_zero = coords_test_zero(_profile_x_var._position_relative); + instrument->counter_N[84] = instrument->counter_P[84] = instrument->counter_P2[84] = 0; + instrument->counter_AbsorbProp[84]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0083_profile_x", _profile_x_var._position_absolute, _profile_x_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "options", "NULL", "x bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "filename", "NULL", "profile_x.dat", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0083_profile_x", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_x_setpos */ + +/* component profile_y=Monitor_nD() SETTING, POSITION/ROTATION */ +int _profile_y_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_profile_y_setpos] component profile_y=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_profile_y_var._name, "profile_y", 16384); + stracpy(_profile_y_var._type, "Monitor_nD", 16384); + _profile_y_var._index=85; + int current_setpos_index = 85; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user1, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user2, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_profile_y_var._parameters.user3, "" ? "" : "", 16384); + else + _profile_y_var._parameters.user3[0]='\0'; + _profile_y_var._parameters.xwidth = 0.3; + _profile_y_var._parameters.yheight = 0.3; + _profile_y_var._parameters.zdepth = 0; + _profile_y_var._parameters.xmin = 0; + _profile_y_var._parameters.xmax = 0; + _profile_y_var._parameters.ymin = 0; + _profile_y_var._parameters.ymax = 0; + _profile_y_var._parameters.zmin = 0; + _profile_y_var._parameters.zmax = 0; + _profile_y_var._parameters.bins = 0; + _profile_y_var._parameters.min = -1e40; + _profile_y_var._parameters.max = 1e40; + _profile_y_var._parameters.restore_neutron = 0; + _profile_y_var._parameters.radius = 0; + if("y bins 300" && strlen("y bins 300")) + stracpy(_profile_y_var._parameters.options, "y bins 300" ? "y bins 300" : "", 16384); + else + _profile_y_var._parameters.options[0]='\0'; + if("profile_y.dat" && strlen("profile_y.dat")) + stracpy(_profile_y_var._parameters.filename, "profile_y.dat" ? "profile_y.dat" : "", 16384); + else + _profile_y_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.geometry[0]='\0'; + _profile_y_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_profile_y_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _profile_y_var._parameters.username3[0]='\0'; + _profile_y_var._parameters.tsplit = 0; + _profile_y_var._parameters.adaptive_target = 0; + + + /* component profile_y=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _profile_y_var._rotation_absolute); + rot_transpose(_profile_x_var._rotation_absolute, tr1); + rot_mul(_profile_y_var._rotation_absolute, tr1, _profile_y_var._rotation_relative); + _profile_y_var._rotation_is_identity = rot_test_identity(_profile_y_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _profile_y_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_x_var._position_absolute, _profile_y_var._position_absolute); + _profile_y_var._position_relative = rot_apply(_profile_y_var._rotation_absolute, tc1); + } /* profile_y=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute); + instrument->_position_absolute[85] = _profile_y_var._position_absolute; + instrument->_position_relative[85] = _profile_y_var._position_relative; + _profile_y_var._position_relative_is_zero = coords_test_zero(_profile_y_var._position_relative); + instrument->counter_N[85] = instrument->counter_P[85] = instrument->counter_P2[85] = 0; + instrument->counter_AbsorbProp[85]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0084_profile_y", _profile_y_var._position_absolute, _profile_y_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "options", "NULL", "y bins 300", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "filename", "NULL", "profile_y.dat", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0084_profile_y", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _profile_y_setpos */ + +/* component wavelength=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_setpos] component wavelength=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_var._name, "wavelength", 16384); + stracpy(_wavelength_var._type, "Monitor_nD", 16384); + _wavelength_var._index=86; + int current_setpos_index = 86; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_var._parameters.user3[0]='\0'; + _wavelength_var._parameters.xwidth = 0.3; + _wavelength_var._parameters.yheight = 0.3; + _wavelength_var._parameters.zdepth = 0; + _wavelength_var._parameters.xmin = 0; + _wavelength_var._parameters.xmax = 0; + _wavelength_var._parameters.ymin = 0; + _wavelength_var._parameters.ymax = 0; + _wavelength_var._parameters.zmin = 0; + _wavelength_var._parameters.zmax = 0; + _wavelength_var._parameters.bins = 0; + _wavelength_var._parameters.min = -1e40; + _wavelength_var._parameters.max = 1e40; + _wavelength_var._parameters.restore_neutron = 0; + _wavelength_var._parameters.radius = 0; + if("L bins 300 limits [0.5 10]" && strlen("L bins 300 limits [0.5 10]")) + stracpy(_wavelength_var._parameters.options, "L bins 300 limits [0.5 10]" ? "L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_var._parameters.options[0]='\0'; + if("wavelength.dat" && strlen("wavelength.dat")) + stracpy(_wavelength_var._parameters.filename, "wavelength.dat" ? "wavelength.dat" : "", 16384); + else + _wavelength_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.geometry[0]='\0'; + _wavelength_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_var._parameters.username3[0]='\0'; + _wavelength_var._parameters.tsplit = 0; + _wavelength_var._parameters.adaptive_target = 0; + + + /* component wavelength=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_var._rotation_absolute); + rot_transpose(_profile_y_var._rotation_absolute, tr1); + rot_mul(_wavelength_var._rotation_absolute, tr1, _wavelength_var._rotation_relative); + _wavelength_var._rotation_is_identity = rot_test_identity(_wavelength_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_profile_y_var._position_absolute, _wavelength_var._position_absolute); + _wavelength_var._position_relative = rot_apply(_wavelength_var._rotation_absolute, tc1); + } /* wavelength=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute); + instrument->_position_absolute[86] = _wavelength_var._position_absolute; + instrument->_position_relative[86] = _wavelength_var._position_relative; + _wavelength_var._position_relative_is_zero = coords_test_zero(_wavelength_var._position_relative); + instrument->counter_N[86] = instrument->counter_P[86] = instrument->counter_P2[86] = 0; + instrument->counter_AbsorbProp[86]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0085_wavelength", _wavelength_var._position_absolute, _wavelength_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "options", "NULL", "L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "filename", "NULL", "wavelength.dat", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0085_wavelength", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_setpos */ + +/* component tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_tof_setpos] component tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_tof_var._name, "tof", 16384); + stracpy(_tof_var._type, "Monitor_nD", 16384); + _tof_var._index=87; + int current_setpos_index = 87; + if("" && strlen("")) + stracpy(_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _tof_var._parameters.user3[0]='\0'; + _tof_var._parameters.xwidth = 0.3; + _tof_var._parameters.yheight = 0.3; + _tof_var._parameters.zdepth = 0; + _tof_var._parameters.xmin = 0; + _tof_var._parameters.xmax = 0; + _tof_var._parameters.ymin = 0; + _tof_var._parameters.ymax = 0; + _tof_var._parameters.zmin = 0; + _tof_var._parameters.zmax = 0; + _tof_var._parameters.bins = 0; + _tof_var._parameters.min = -1e40; + _tof_var._parameters.max = 1e40; + _tof_var._parameters.restore_neutron = 0; + _tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15]" && strlen("t bins 300 limits [0, 0.15]")) + stracpy(_tof_var._parameters.options, "t bins 300 limits [0, 0.15]" ? "t bins 300 limits [0, 0.15]" : "", 16384); + else + _tof_var._parameters.options[0]='\0'; + if("time.dat" && strlen("time.dat")) + stracpy(_tof_var._parameters.filename, "time.dat" ? "time.dat" : "", 16384); + else + _tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.geometry[0]='\0'; + _tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _tof_var._parameters.username3[0]='\0'; + _tof_var._parameters.tsplit = 0; + _tof_var._parameters.adaptive_target = 0; + + + /* component tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _tof_var._rotation_absolute); + rot_transpose(_wavelength_var._rotation_absolute, tr1); + rot_mul(_tof_var._rotation_absolute, tr1, _tof_var._rotation_relative); + _tof_var._rotation_is_identity = rot_test_identity(_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_var._position_absolute, _tof_var._position_absolute); + _tof_var._position_relative = rot_apply(_tof_var._rotation_absolute, tc1); + } /* tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("tof", _tof_var._position_absolute, _tof_var._rotation_absolute); + instrument->_position_absolute[87] = _tof_var._position_absolute; + instrument->_position_relative[87] = _tof_var._position_relative; + _tof_var._position_relative_is_zero = coords_test_zero(_tof_var._position_relative); + instrument->counter_N[87] = instrument->counter_P[87] = instrument->counter_P2[87] = 0; + instrument->counter_AbsorbProp[87]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0086_tof", _tof_var._position_absolute, _tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0086_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0086_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0086_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0086_tof", "options", "NULL", "t bins 300 limits [0, 0.15]", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "filename", "NULL", "time.dat", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0086_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0086_tof", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0086_tof", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _tof_setpos */ + +/* component wavelength_tof=Monitor_nD() SETTING, POSITION/ROTATION */ +int _wavelength_tof_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_wavelength_tof_setpos] component wavelength_tof=Monitor_nD() SETTING [Monitor_nD:0]"); + stracpy(_wavelength_tof_var._name, "wavelength_tof", 16384); + stracpy(_wavelength_tof_var._type, "Monitor_nD", 16384); + _wavelength_tof_var._index=88; + int current_setpos_index = 88; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user1, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user1[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user2, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user2[0]='\0'; + if("" && strlen("")) + stracpy(_wavelength_tof_var._parameters.user3, "" ? "" : "", 16384); + else + _wavelength_tof_var._parameters.user3[0]='\0'; + _wavelength_tof_var._parameters.xwidth = 0.3; + _wavelength_tof_var._parameters.yheight = 0.3; + _wavelength_tof_var._parameters.zdepth = 0; + _wavelength_tof_var._parameters.xmin = 0; + _wavelength_tof_var._parameters.xmax = 0; + _wavelength_tof_var._parameters.ymin = 0; + _wavelength_tof_var._parameters.ymax = 0; + _wavelength_tof_var._parameters.zmin = 0; + _wavelength_tof_var._parameters.zmax = 0; + _wavelength_tof_var._parameters.bins = 0; + _wavelength_tof_var._parameters.min = -1e40; + _wavelength_tof_var._parameters.max = 1e40; + _wavelength_tof_var._parameters.restore_neutron = 0; + _wavelength_tof_var._parameters.radius = 0; + if("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" && strlen("t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]")) + stracpy(_wavelength_tof_var._parameters.options, "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" ? "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" : "", 16384); + else + _wavelength_tof_var._parameters.options[0]='\0'; + if("wavelength_tof.dat" && strlen("wavelength_tof.dat")) + stracpy(_wavelength_tof_var._parameters.filename, "wavelength_tof.dat" ? "wavelength_tof.dat" : "", 16384); + else + _wavelength_tof_var._parameters.filename[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.geometry, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.geometry[0]='\0'; + _wavelength_tof_var._parameters.nowritefile = 0; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username1, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username1[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username2, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username2[0]='\0'; + if("NULL" && strlen("NULL")) + stracpy(_wavelength_tof_var._parameters.username3, "NULL" ? "NULL" : "", 16384); + else + _wavelength_tof_var._parameters.username3[0]='\0'; + _wavelength_tof_var._parameters.tsplit = 0; + _wavelength_tof_var._parameters.adaptive_target = 0; + + + /* component wavelength_tof=Monitor_nD() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _sample_monitor_arm_var._rotation_absolute, _wavelength_tof_var._rotation_absolute); + rot_transpose(_tof_var._rotation_absolute, tr1); + rot_mul(_wavelength_tof_var._rotation_absolute, tr1, _wavelength_tof_var._rotation_relative); + _wavelength_tof_var._rotation_is_identity = rot_test_identity(_wavelength_tof_var._rotation_relative); + tc1 = coords_set( + 0, 0, 0); + rot_transpose(_sample_monitor_arm_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _wavelength_tof_var._position_absolute = coords_add(_sample_monitor_arm_var._position_absolute, tc2); + tc1 = coords_sub(_tof_var._position_absolute, _wavelength_tof_var._position_absolute); + _wavelength_tof_var._position_relative = rot_apply(_wavelength_tof_var._rotation_absolute, tc1); + } /* wavelength_tof=Monitor_nD() AT ROTATED */ + DEBUG_COMPONENT("wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute); + instrument->_position_absolute[88] = _wavelength_tof_var._position_absolute; + instrument->_position_relative[88] = _wavelength_tof_var._position_relative; + _wavelength_tof_var._position_relative_is_zero = coords_test_zero(_wavelength_tof_var._position_relative); + instrument->counter_N[88] = instrument->counter_P[88] = instrument->counter_P2[88] = 0; + instrument->counter_AbsorbProp[88]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0087_wavelength_tof", _wavelength_tof_var._position_absolute, _wavelength_tof_var._rotation_absolute, "Monitor_nD"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "user1", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "user2", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "user3", "", "", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "xwidth", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "yheight", "0", "0.3","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "zdepth", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "xmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "xmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "ymin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "ymax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "zmin", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "zmax", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "bins", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "min", "-1e40", "-1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "max", "1e40", "1e40","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "restore_neutron", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "radius", "0", "0","MCNUM"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "options", "NULL", "t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "filename", "NULL", "wavelength_tof.dat", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "geometry", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "nowritefile", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "username1", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "username2", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "username3", "NULL", "NULL", "char*"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "tsplit", "0", "0","int"); + mccomp_param_nexus(nxhandle,"0087_wavelength_tof", "adaptive_target", "0", "0","int"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _wavelength_tof_setpos */ + +/* component sample_position=Arm() SETTING, POSITION/ROTATION */ +int _sample_position_setpos(void) +{ /* sets initial component parameters, position and rotation */ + SIG_MESSAGE("[_sample_position_setpos] component sample_position=Arm() SETTING [Arm:0]"); + stracpy(_sample_position_var._name, "sample_position", 16384); + stracpy(_sample_position_var._type, "Arm", 16384); + _sample_position_var._index=89; + int current_setpos_index = 89; + /* component sample_position=Arm() AT ROTATED */ + { + Coords tc1, tc2; + tc1 = coords_set(0,0,0); + tc2 = coords_set(0,0,0); + Rotation tr1; + rot_set_rotation(tr1,0,0,0); + rot_set_rotation(tr1, + (0.0)*DEG2RAD, (0.0)*DEG2RAD, (0.0)*DEG2RAD); + rot_mul(tr1, _optical_axis_backend_var._rotation_absolute, _sample_position_var._rotation_absolute); + rot_transpose(_wavelength_tof_var._rotation_absolute, tr1); + rot_mul(_sample_position_var._rotation_absolute, tr1, _sample_position_var._rotation_relative); + _sample_position_var._rotation_is_identity = rot_test_identity(_sample_position_var._rotation_relative); + tc1 = coords_set( + 0, 0, 60.5); + rot_transpose(_optical_axis_backend_var._rotation_absolute, tr1); + tc2 = rot_apply(tr1, tc1); + _sample_position_var._position_absolute = coords_add(_optical_axis_backend_var._position_absolute, tc2); + tc1 = coords_sub(_wavelength_tof_var._position_absolute, _sample_position_var._position_absolute); + _sample_position_var._position_relative = rot_apply(_sample_position_var._rotation_absolute, tc1); + } /* sample_position=Arm() AT ROTATED */ + DEBUG_COMPONENT("sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute); + instrument->_position_absolute[89] = _sample_position_var._position_absolute; + instrument->_position_relative[89] = _sample_position_var._position_relative; + _sample_position_var._position_relative_is_zero = coords_test_zero(_sample_position_var._position_relative); + instrument->counter_N[89] = instrument->counter_P[89] = instrument->counter_P2[89] = 0; + instrument->counter_AbsorbProp[89]= 0; + #ifdef USE_NEXUS + if(nxhandle) { + if ((!mcdotrace) && mcformat && strcasestr(mcformat, "NeXus")) { + MPI_MASTER( + mccomp_placement_type_nexus(nxhandle,"0088_sample_position", _sample_position_var._position_absolute, _sample_position_var._rotation_absolute, "Arm"); + ); + } + } else { + // fprintf(stderr,"NO NEXUS FILE"); + } + #endif + return(0); +} /* _sample_position_setpos */ + +_class_Progress_bar *class_Progress_bar_init(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_init] component Origin=Progress_bar() INITIALISE [Progress_bar:0]"); + + IntermediateCnts = 0; + StartTime = 0; + EndTime = 0; + CurrentTime = 0; + + fprintf (stdout, "[%s] Initialize\n", instrument_name); + if (percent * mcget_ncount () / 100 < 1e5) { + percent = 1e5 * 100.0 / mcget_ncount (); + } + #ifdef OPENACC + time (&StartTime); + #endif + + #ifdef USE_MPI + sprintf (infostring, "(%i MPI processes) ", mpi_node_count); + #else + sprintf (infostring, "(single process) "); + #endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_init */ + +_class_MCPL_input_once *class_MCPL_input_once_init(_class_MCPL_input_once *_comp +) { + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_init] component vin=MCPL_input_once() INITIALISE [MCPL_input_once:0]"); + + { + if (!filename || !filename[0]) { + fprintf (stderr, "ERROR(%s): Requires filename parameter.\n", NAME_CURRENT_COMP); + exit (-1); + } + char* fn_mcpl = mcpl_name_helper (filename, 'M'); + char* fn_mcplgz = mcpl_name_helper (filename, 'G'); + if (mcplinputonce_file_exist (fn_mcpl)) { + if (mcplinputonce_file_exist (fn_mcplgz)) { + fprintf (stderr, + "ERROR(%s): Can not resolve input file unambiguously" + " since both %s and %s exist.\n", + NAME_CURRENT_COMP, fn_mcpl, fn_mcplgz); + exit (-1); + } + resolved_filename = fn_mcpl; + free (fn_mcplgz); + } else { + resolved_filename = fn_mcplgz; + free (fn_mcpl); + } + } + + uint64_t particles_per_node; + uint64_t last_particle; + if (Emax < Emin) { + fprintf (stderr, "Error(%s): Nonsensical energy interval: E=[%g,%g]. Aborting.\n", NAME_CURRENT_COMP, Emin, Emax); + exit (-1); + } + inputfile = mcpl_open_file (resolved_filename); + double mcpl_ray_count = mcpl_hdr_stat_sum (inputfile, "initial_ray_count"); + if (mcpl_ray_count == -2.0) { + // legacy format without ray count: + weight_scale = 1.0; + } else if (!(mcpl_ray_count > 0.0)) { + fprintf (stderr, + "ERROR: Input MCPL file has invalid initial_ray_count" + " (%g). Unable to determine weight scale.\n", + mcpl_ray_count); + exit (1); + } else { + weight_scale = 1.0 / mcpl_ray_count; + } + if (!(nparticles = mcpl_hdr_nparticles (inputfile))) { + fprintf (stderr, "Error(%s): MCPL-file reports no present particles. Aborting.\n", NAME_CURRENT_COMP); + exit (-1); + } else { + MPI_MASTER (printf ("Message(%s): MCPL file (%s) produced with %s.\n", NAME_CURRENT_COMP, resolved_filename, mcpl_hdr_srcname (inputfile)); + printf ("Message(%s): MCPL file (%s) contains %lu particles.\n", NAME_CURRENT_COMP, resolved_filename, (long unsigned)nparticles);); + } + first_particle = 0; + last_particle = nparticles; + #if defined (USE_MPI) + // divy up the available particles between nodes + particles_per_node = last_particle / mpi_node_count; + // ensuring at least 1 particle per node (e.g., protecting against division by negative node count) + if (particles_per_node < 1) + particles_per_node = 1; + // each node has first index given by how many particles each should do + first_particle = particles_per_node * mpi_node_rank; + // the last worker keeps 'nparticles' as its last particle index, to ensure the full range is covered + if (mpi_node_rank != mpi_node_count - 1) + last_particle = first_particle + particles_per_node; + #endif + read_neutrons = 0; + used_neutrons = 0; + #ifdef OPENACC + preload = 1; + printf ("OpenACC, preload implicit:\n"); + #endif + // Move this node's pointer into the file to its first particle: + // in preparation for pre-loading or first pass through TRACE + mcpl_seek (inputfile, first_particle); + // Index will track how many particles this component has accessed + current_index = 0; + // Which we want to check against how large it can grow, to know if we've exhausted the available particles + maximum_index = last_particle - first_particle; + particles = NULL; + if (preload) { + printf ("Preload requested, loading MCPLfile particles (%lu, %lu) in INITIALIZE\n", (long unsigned)first_particle, (long unsigned)last_particle); + particles = (mcpl_input_once_particle_t*)calloc (last_particle - first_particle, sizeof (mcpl_input_once_particle_t)); + for (uint64_t loop = first_particle; loop < last_particle; loop++) { + const mcpl_particle_t* particle; + particle = mcpl_read (inputfile); + if (particle && particle->pdgcode == 2112) { + if (particle->ekin > Emin * 1e-9 && particle->ekin < Emax * 1e-9) { + mcpl_input_once_translator (polarisationuse, weight_scale, particle, particles + used_neutrons++); + } + read_neutrons++; + } + } + // keep track of how many particles are available to us in the `particles` array + maximum_index = used_neutrons; + printf ("Done reading MCPL file (%lu, %lu), found %lu neutrons (and kept %lu)\n", (long unsigned)first_particle, (long unsigned)last_particle, + (long unsigned)read_neutrons, (long unsigned)used_neutrons); + mcpl_close_file (inputfile); + } + // keep track of how many times we had to replay the same MCPL input + times_replayed = 0; + // and the total number of neutrons emitted by this component + emitted_neutrons = 0; + // Determine the total number of read (or to be read) neutrons + uint64_t total_index = maximum_index; + #if defined (USE_MPI) + // add up the read neutrons (or to be read neutrons) from each node + MPI_Reduce (&maximum_index, &total_index, 1, MPI_UINT64_T, MPI_SUM, 0, MPI_COMM_WORLD); + // tell all nodes the value, so they can set ncount for themselves + MPI_Bcast (&total_index, 1, MPI_UINT64_T, 0, MPI_COMM_WORLD); + #endif + mcset_ncount (total_index); // will be divided by mpi_node_count before starting the raytrace + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return(_comp); +} /* class_MCPL_input_once_init */ + +_class_PSD_monitor_4PI *class_PSD_monitor_4PI_init(_class_PSD_monitor_4PI *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_init] component Sphere1=PSD_monitor_4PI() INITIALISE [PSD_monitor_4PI:0]"); + + PSD_N = create_darr2d (nx, ny); + PSD_p = create_darr2d (nx, ny); + PSD_p2 = create_darr2d (nx, ny); + + // Use instance name for monitor output if no input was given + if (!strcmp (filename, "\0")) + sprintf (filename, "%s", NAME_CURRENT_COMP); + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_4PI_init */ + +_class_ESS_butterfly *class_ESS_butterfly_init(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define target_tsplit (_comp->_parameters.target_tsplit) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_init] component Source=ESS_butterfly() INITIALISE [ESS_butterfly:0]"); + + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef target_tsplit + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_init */ + +_class_Shape *class_Shape_init(_class_Shape *_comp +) { + #define geometry (_comp->_parameters.geometry) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define thickness (_comp->_parameters.thickness) + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define nz (_comp->_parameters.nz) + #define center (_comp->_parameters.center) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_Focus_cut_init] component Focus_cut=Shape() INITIALISE [Shape:0]"); + + if (geometry && strlen (geometry) && strcmp (geometry, "NULL") && strcmp (geometry, "0")) { + if (off_init (geometry, xwidth, yheight, zdepth, !center, &offdata)) { + thickness = 0; + } + } + #undef geometry + #undef radius + #undef xwidth + #undef yheight + #undef zdepth + #undef thickness + #undef nx + #undef ny + #undef nz + #undef center + #undef offdata + return(_comp); +} /* class_Shape_init */ + +_class_PSD_monitor *class_PSD_monitor_init(_class_PSD_monitor *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_init] component PSD_cut=PSD_monitor() INITIALISE [PSD_monitor:0]"); + + if (xwidth > 0) { + xmax = xwidth / 2; + xmin = -xmax; + } + if (yheight > 0) { + ymax = yheight / 2; + ymin = -ymax; + } + + if ((xmin >= xmax) || (ymin >= ymax)) { + printf ("PSD_monitor: %s: Null detection area !\n" + "ERROR (xwidth,yheight,xmin,xmax,ymin,ymax). Exiting", + NAME_CURRENT_COMP); + exit (0); + } + + PSD_N = create_darr2d (nx, ny); + PSD_p = create_darr2d (nx, ny); + PSD_p2 = create_darr2d (nx, ny); + + // Use instance name for monitor output if no input was given + if (!strcmp (filename, "\0")) + sprintf (filename, "%s", NAME_CURRENT_COMP); + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_init */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_init(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_init] component bi=bi_spec_ellipse() INITIALISE [bi_spec_ellipse:0]"); + + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return(_comp); +} /* class_bi_spec_ellipse_init */ + +_class_Guide_four_side *class_Guide_four_side_init(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_init] component NBOA_drawing_1_end=Guide_four_side() INITIALISE [Guide_four_side:0]"); + + + int i; + + if (RIreflect && strlen (RIreflect)) { + if (Table_Read (&riTable, RIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, RIreflect)); + } + + if (LIreflect && strlen (LIreflect)) { + if (Table_Read (&liTable, LIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LIreflect)); + } + + if (UIreflect && strlen (UIreflect)) { + if (Table_Read (&uiTable, UIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UIreflect)); + } + + if (DIreflect && strlen (DIreflect)) { + if (Table_Read (&diTable, DIreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton inner Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DIreflect)); + } + + if (ROreflect && strlen (ROreflect)) { + if (Table_Read (&roTable, ROreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "right outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, ROreflect)); + } + + if (LOreflect && strlen (LOreflect)) { + if (Table_Read (&loTable, LOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "left outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, LOreflect)); + } + + if (UOreflect && strlen (UOreflect)) { + if (Table_Read (&uoTable, UOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "top outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, UOreflect)); + } + + if (DOreflect && strlen (DOreflect)) { + if (Table_Read (&doTable, DOreflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit (fprintf (stderr, "botton outer Wall: %s: can not read file %s\n", NAME_CURRENT_COMP, DOreflect)); + } + + if (w1r < 0) + TEST_INPUT ("w1r", NAME_CURRENT_COMP); + + if (w1l < 0) + TEST_INPUT ("w1l", NAME_CURRENT_COMP); + + if (h1u < 0) + TEST_INPUT ("h1u", NAME_CURRENT_COMP); + + if (h1d < 0) + TEST_INPUT ("h1d", NAME_CURRENT_COMP); + + if (w2r < 0) + TEST_INPUT ("w2r", NAME_CURRENT_COMP); + + if (w2l < 0) + TEST_INPUT ("w2l", NAME_CURRENT_COMP); + + if (h2u < 0) + TEST_INPUT ("h2u", NAME_CURRENT_COMP); + + if (h2d < 0) + TEST_INPUT ("h2d", NAME_CURRENT_COMP); + + if (mxrOW != -1 && mxrOW < 0) + TEST_INPUT_1 ("mxrOW", NAME_CURRENT_COMP); + + if (mxlOW != -1 && mxlOW < 0) + TEST_INPUT_1 ("mxlOW", NAME_CURRENT_COMP); + + if (myuOW != -1 && myuOW < 0) + TEST_INPUT_1 ("myuOW", NAME_CURRENT_COMP); + + if (mydOW != -1 && mydOW < 0) + TEST_INPUT_1 ("mydOW", NAME_CURRENT_COMP); + + if (mxr < 0 && mxr != -1) + TEST_INPUT_1 ("mxr", NAME_CURRENT_COMP); + + if (mxl < 0 && mxl != -1) + TEST_INPUT_1 ("mxl", NAME_CURRENT_COMP); + + if (myu < 0 && myu != -1) + TEST_INPUT_1 ("myu", NAME_CURRENT_COMP); + + if (myd < 0 && myd != -1) + TEST_INPUT_1 ("myd", NAME_CURRENT_COMP); + + if (Qcxl < 0) + TEST_INPUT_2 ("Qcxl", NAME_CURRENT_COMP); + + if (Qcxr < 0) + TEST_INPUT_2 ("Qcxr", NAME_CURRENT_COMP); + + if (Qcyu < 0) + TEST_INPUT_2 ("Qcyu", NAME_CURRENT_COMP); + + if (Qcyd < 0) + TEST_INPUT_2 ("Qcyd", NAME_CURRENT_COMP); + + if (alphaxl < 0) + TEST_INPUT_2 ("alphaxl", NAME_CURRENT_COMP); + + if (alphaxr < 0) + TEST_INPUT_2 ("alphaxr", NAME_CURRENT_COMP); + + if (alphayu < 0) + TEST_INPUT_2 ("alphayu", NAME_CURRENT_COMP); + + if (alphayd < 0) + TEST_INPUT_2 ("alphayd", NAME_CURRENT_COMP); + + if (QcxlOW < 0) + TEST_INPUT_2 ("QcxlOW", NAME_CURRENT_COMP); + + if (QcxrOW < 0) + TEST_INPUT_2 ("QcxrOW", NAME_CURRENT_COMP); + + if (QcyuOW < 0) + TEST_INPUT_2 ("QcyuOW", NAME_CURRENT_COMP); + + if (QcydOW < 0) + TEST_INPUT_2 ("QcydOW", NAME_CURRENT_COMP); + + if (alphaxlOW < 0) + TEST_INPUT_2 ("alphaxlOW", NAME_CURRENT_COMP); + + if (alphaxrOW < 0) + TEST_INPUT_2 ("alphaxrOW", NAME_CURRENT_COMP); + + if (alphayuOW < 0) + TEST_INPUT_2 ("alphayuOW", NAME_CURRENT_COMP); + + if (alphaydOW < 0) + TEST_INPUT_2 ("alphaydOW", NAME_CURRENT_COMP); + + if (rwallthick < 0) + TEST_INPUT_2 ("rwallthick", NAME_CURRENT_COMP); + + if (lwallthick < 0) + TEST_INPUT_2 ("lwallthick", NAME_CURRENT_COMP); + + if (uwallthick < 0) + TEST_INPUT_2 ("uwallthick", NAME_CURRENT_COMP); + + if (dwallthick < 0) + TEST_INPUT_2 ("dwallthick", NAME_CURRENT_COMP); + + if (Wxr <= 0) + TEST_INPUT_3 ("Wxr", NAME_CURRENT_COMP); + + if (Wxl <= 0) + TEST_INPUT_3 ("Wxl", NAME_CURRENT_COMP); + + if (Wyu <= 0) + TEST_INPUT_3 ("Wyu", NAME_CURRENT_COMP); + + if (Wyd <= 0) + TEST_INPUT_3 ("Wyd", NAME_CURRENT_COMP); + + if (WxrOW <= 0) + TEST_INPUT_3 ("WxrOW", NAME_CURRENT_COMP); + + if (WxlOW <= 0) + TEST_INPUT_3 ("WxlOW", NAME_CURRENT_COMP); + + if (WyuOW <= 0) + TEST_INPUT_3 ("WyuOW", NAME_CURRENT_COMP); + + if (WydOW <= 0) + TEST_INPUT_3 ("WydOW", NAME_CURRENT_COMP); + + if (l <= 0) { + fprintf (stderr, "Component: %s (Guide_four_side) real guide length \n", NAME_CURRENT_COMP); + fprintf (stderr, " is <= ZERO ! \n"); + exit (-1); + } + + if (mcgravitation) + fprintf (stderr, + "WARNING: Guide_four_side: %s: " + "This component produces wrong results with gravitation !\n" + "Use Guide_gravity.\n", + NAME_CURRENT_COMP); + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + /* Calculation of curve-parameters for the right side wall - negative x-axis */ + + if (loutwr != 0 && linwr != 0) /* elliptic right side wall */ + { + ELLIPSE (w1r, l, linwr, loutwr, rwallthick, &awr, &bwr, &a2wr, &b2wr, &z0wr, &w2r, &awrwt, &a2wrwt, &bwrwt, &b2wrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr != 0) /* parabolic focusing right side wall */ + { + PARABEL_FOCUS (w1r, l, loutwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr != 0 && loutwr == 0) /* parabolic defocusing right side wall */ + { + PARABEL_DEFOCUS (w1r, l, linwr, rwallthick, &p2parawr, &w2r, &pbwr, &pawr, &p2parawrwt, &pbwrwt, &pawrwt, &w2rwt, &w1rwt); + } + + if (linwr == 0 && loutwr == 0) /* straight right side wall */ + { + LINEAR (w1r, w2r, l, rwallthick, &w1rwt, &w2rwt); + } + + /* Calculation of curve-parameters for the left side wall - positive x-axis - analog to right side*/ + + if ((linwl != 0) && (loutwl != 0)) /* elleptic left side wall */ + { + ELLIPSE (w1l, l, linwl, loutwl, lwallthick, &awl, &bwl, &a2wl, &b2wl, &z0wl, &w2l, &awlwt, &a2wlwt, &bwlwt, &b2wlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl != 0) /* parabolic focusing left side wall */ + { + PARABEL_FOCUS (w1l, l, loutwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl != 0 && loutwl == 0) /* parabolic defocusing left side wall */ + { + PARABEL_DEFOCUS (w1l, l, linwl, lwallthick, &p2parawl, &w2l, &pbwl, &pawl, &p2parawlwt, &pbwlwt, &pawlwt, &w2lwt, &w1lwt); + } + + if (linwl == 0 && loutwl == 0) /* straight left side wall */ + { + LINEAR (w1l, w2l, l, lwallthick, &w1lwt, &w2lwt); + } + + /* Calculation of curve-parameters for the top wall - positive y-axis - analog right wall*/ + + if (linhu != 0 && louthu != 0) /* elliptic top wall */ + { + ELLIPSE (h1u, l, linhu, louthu, uwallthick, &ahu, &bhu, &a2hu, &b2hu, &z0hu, &h2u, &ahuwt, &a2huwt, &bhuwt, &b2huwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu != 0) /* parabolic focusing top wall */ + { + PARABEL_FOCUS (h1u, l, louthu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu != 0 && louthu == 0) /* parabolic defocusing top wall */ + { + PARABEL_DEFOCUS (h1u, l, linhu, uwallthick, &p2parahu, &h2u, &pbhu, &pahu, &p2parahuwt, &pbhuwt, &pahuwt, &h2uwt, &h1uwt); + } + + if (linhu == 0 && louthu == 0) { + LINEAR (h1u, h2u, l, uwallthick, &h1uwt, &h2uwt); + } + + /* Calculation of curve-parameters for the bottom wall - negative y-axis - analog right wall */ + + if (linhd != 0 && louthd != 0) /* elliptic bottom wall */ + { + ELLIPSE (h1d, l, linhd, louthd, dwallthick, &ahd, &bhd, &a2hd, &b2hd, &z0hd, &h2d, &ahdwt, &a2hdwt, &bhdwt, &b2hdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd != 0) /* parabolic focusing bottom wall */ + { + PARABEL_FOCUS (h1d, l, louthd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd != 0 && louthd == 0) /* parabolic defocusing bottom wall */ + { + PARABEL_DEFOCUS (h1d, l, linhd, dwallthick, &p2parahd, &h2d, &pbhd, &pahd, &p2parahdwt, &pbhdwt, &pahdwt, &h2dwt, &h1dwt); + } + + if (linhd == 0 && louthd == 0) { + LINEAR (h1d, h2d, l, dwallthick, &h1dwt, &h2dwt); + } + + mru1 = (h1uwt - h1u) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right upper corner*/ + nru1 = h1u - mru1 * (-w1r); + + mrd1 = (-h1dwt + h1d) / (w1r - w1rwt); /* calculation for entrance and exit absorbing mask for the right lower corner*/ + nrd1 = -h1d - mrd1 * (-w1r); + + mlu1 = (h1uwt - h1u) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left upper corner*/ + nlu1 = h1u - mlu1 * w1l; + + mld1 = (-h1dwt + h1d) / (-w1l + w1lwt); /* calculation for entrance and exit absorbing mask for the left lower corner*/ + nld1 = -h1d - mld1 * w1l; + + mru2 = (h2u - h2uwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right upper corner*/ + nru2 = h2u - mru2 * (-w2r); + + mrd2 = (-h2d + h2dwt) / (-w2r + w2rwt); /* calculation for exit absorbing mask for the right lower corner*/ + nrd2 = -h2d - mrd2 * (-w2r); + + mlu2 = (h2u - h2uwt) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left upper corner*/ + nlu2 = h2u - mlu2 * w2l; + + mld2 = (h2dwt - h2d) / (w2l - w2lwt); /* calculation for exit absorbing mask for the left lower corner*/ + nld2 = -h2d - mld2 * w2l; + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_init */ + +_class_MultiDiskChopper *class_MultiDiskChopper_init(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_init] component wfmc_1=MultiDiskChopper() INITIALISE [MultiDiskChopper:0]"); + + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_init */ + +_class_Slit *class_Slit_init(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_init] component pinhole_1=Slit() INITIALISE [Slit:0]"); + + if (is_unset (radius)) { + isradial = 0; + if (all_set (3, xwidth, xmin, xmax)) { + slit_error_if (xwidth != xmax - xmin, "specifying xwidth, xmin and xmax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (xwidth) && any_unset (2, xmin, xmax), "specify either xwidth or xmin & xmax", NAME_CURRENT_COMP); + } + if (all_set (3, yheight, ymin, ymax)) { + slit_error_if (yheight != ymax - ymin, "specifying yheight, ymin and ymax requires consistent parameters", NAME_CURRENT_COMP); + } else { + slit_error_if (is_unset (yheight) && any_unset (2, ymin, ymax), "specify either yheight or ymin & ymax", NAME_CURRENT_COMP); + } + if (is_unset (xmin)) { // xmax also unset but xwidth *is* set + xmax = xwidth / 2; + xmin = -xmax; + } + if (is_unset (ymin)) { // ymax also unset but yheight *is* set + ymax = yheight / 2; + ymin = -ymax; + } + slit_warning_if (xmin == xmax || ymin == ymax, "Running with CLOSED rectangular slit - is this intentional?", NAME_CURRENT_COMP); + } else { + isradial = 1; + slit_error_if (any_set (6, xwidth, xmin, xmax, yheight, ymin, ymax), "specify radius OR width and height parameters", NAME_CURRENT_COMP); + slit_warning_if (radius == 0., "Running with CLOSED radial slit - is this intentional?", NAME_CURRENT_COMP); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_init */ + +_class_DiskChopper *class_DiskChopper_init(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_init] component bp1_chopper=DiskChopper() INITIALISE [DiskChopper:0]"); + + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_init */ + +_class_Monitor_nD *class_Monitor_nD_init(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_init] component sample_PSD=Monitor_nD() INITIALISE [Monitor_nD:0]"); + + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_init */ + + + +int init(void) { /* called by mccode_main for ODIN_MCPL_baseline:INITIALISE */ + DEBUG_INSTR(); + // Initialise rng + srandom(_hash(mcseed-1)); + + /* code_main/parseoptions/readparams sets instrument parameters value */ + stracpy(instrument->_name, "ODIN_MCPL_baseline", 256); + + /* Instrument 'ODIN_MCPL_baseline' INITIALISE */ + SIG_MESSAGE("[ODIN_MCPL_baseline] INITIALISE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) + #define target_tsplit (instrument->_parameters.target_tsplit) + #define filter (instrument->_parameters.filter) + #define repeat (instrument->_parameters.repeat) + #define v_smear (instrument->_parameters.v_smear) + #define pos_smear (instrument->_parameters.pos_smear) + #define dir_smear (instrument->_parameters.dir_smear) +{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + TCollmin=0; + TCollmax=0.06; + iBeamlines=iBeamlinesS; + DeltaX=0.0585; DeltaZ=-0.0925; + + ANGLE=iBeamlines[beamline-1]-90; + if (filter==0) + sprintf(MCPLfile,"%s%i.mcpl.gz",sector,beamline); + else + sprintf(MCPLfile,"%s%i_filtered.mcpl.gz",sector,beamline); + printf("MCPLfile is %s\n",MCPLfile); + +// Don't measure time on windows, CLOCK_REALTIME +// macro is unknown... +// It is indicated in this oagehttps://learn.microsoft.com/en-us/answers/questions/2147256/clock-realtime-is-undefined-in-visual-studio-but-c that it might work to add a high enough _POSIX_C_SOURCE define, i.e. +// #define _POSIX_C_SOURCE 199309L. + +#ifndef _MSC_EXTENSIONS +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +#endif +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + #undef target_tsplit + #undef filter + #undef repeat + #undef v_smear + #undef pos_smear + #undef dir_smear + _Origin_setpos(); /* type Progress_bar */ + _vinROT2_setpos(); /* type Arm */ + _vinROT1_setpos(); /* type Arm */ + _vin_setpos(); /* type MCPL_input_once */ + _Sphere1_setpos(); /* type PSD_monitor_4PI */ + _Source_setpos(); /* type ESS_butterfly */ + _optical_axis_setpos(); /* type Arm */ + _Sphere0_setpos(); /* type PSD_monitor_4PI */ + _Focus_cut_setpos(); /* type Shape */ + _PSD_cut_setpos(); /* type PSD_monitor */ + _BackTrace_setpos(); /* type Shape */ + _PSD_Backtrace_setpos(); /* type PSD_monitor */ + _Start_of_bi_setpos(); /* type Arm */ + _bi_setpos(); /* type bi_spec_ellipse */ + _End_of_bi_setpos(); /* type Arm */ + _NBOA_drawing_1_end_setpos(); /* type Guide_four_side */ + _g1a2_setpos(); /* type Guide_four_side */ + _g1a3_setpos(); /* type Guide_four_side */ + _g1b1_setpos(); /* type Guide_four_side */ + _g1c1_setpos(); /* type Guide_four_side */ + _wfm_position_setpos(); /* type Arm */ + _wfm_1_position_setpos(); /* type Arm */ + _wfmc_1_setpos(); /* type MultiDiskChopper */ + _pinhole_1_setpos(); /* type Slit */ + _wfm_2_position_setpos(); /* type Arm */ + _wfmc_2_setpos(); /* type MultiDiskChopper */ + _g2a1_setpos(); /* type Guide_four_side */ + _monitor_1_position_setpos(); /* type Arm */ + _g2a2_setpos(); /* type Guide_four_side */ + _fo1_position_setpos(); /* type Arm */ + _fo_chopper_1_setpos(); /* type MultiDiskChopper */ + _bp1_position_setpos(); /* type Arm */ + _bp1_chopper_setpos(); /* type DiskChopper */ + _g2b1_setpos(); /* type Guide_four_side */ + _g2b2_setpos(); /* type Guide_four_side */ + _g2b3_setpos(); /* type Guide_four_side */ + _g2b4_setpos(); /* type Guide_four_side */ + _fo2_position_setpos(); /* type Arm */ + _fo_chopper_2_setpos(); /* type MultiDiskChopper */ + _bp2_position_setpos(); /* type Arm */ + _bp_chopper2_setpos(); /* type DiskChopper */ + _g2c1_setpos(); /* type Guide_four_side */ + _t0_start_position_setpos(); /* type Arm */ + _t0_chopper_alpha_setpos(); /* type DiskChopper */ + _t0_end_position_setpos(); /* type Arm */ + _t0_chopper_beta_setpos(); /* type DiskChopper */ + _g3a1_setpos(); /* type Guide_four_side */ + _g3a2_setpos(); /* type Guide_four_side */ + _fo3_position_setpos(); /* type Arm */ + _fo_chopper_3_setpos(); /* type MultiDiskChopper */ + _g3b1_setpos(); /* type Guide_four_side */ + _g4a1_setpos(); /* type Guide_four_side */ + _monitor_2_position_setpos(); /* type Arm */ + _g4a2_setpos(); /* type Guide_four_side */ + _g4a3_setpos(); /* type Guide_four_side */ + _fo4_position_setpos(); /* type Arm */ + _fo_chopper_4_setpos(); /* type MultiDiskChopper */ + _g4b1_setpos(); /* type Guide_four_side */ + _g4b2_setpos(); /* type Guide_four_side */ + _g4b3_setpos(); /* type Guide_four_side */ + _g4b4_setpos(); /* type Guide_four_side */ + _g4b5_setpos(); /* type Guide_four_side */ + _g4b6_setpos(); /* type Guide_four_side */ + _g5a1_setpos(); /* type Guide_four_side */ + _fo5_position_setpos(); /* type Arm */ + _fo_chopper_5_setpos(); /* type MultiDiskChopper */ + _g5b1_setpos(); /* type Guide_four_side */ + _g5b2_setpos(); /* type Guide_four_side */ + _g5b3_setpos(); /* type Guide_four_side */ + _g5b4_setpos(); /* type Guide_four_side */ + _g5b5_setpos(); /* type Guide_four_side */ + _g5b6_setpos(); /* type Guide_four_side */ + _g6a1_setpos(); /* type Guide_four_side */ + _g6a2_setpos(); /* type Guide_four_side */ + _g6a3_setpos(); /* type Guide_four_side */ + _guide_end_setpos(); /* type Arm */ + _monitor_3_position_setpos(); /* type Arm */ + _start_backend_setpos(); /* type Arm */ + _optical_axis_backend_setpos(); /* type Arm */ + _pinhole_2_setpos(); /* type Slit */ + _graph_setpos(); /* type Graphite_Diffuser */ + _sample_monitor_arm_setpos(); /* type Arm */ + _sample_PSD_setpos(); /* type Monitor_nD */ + _profile_x_setpos(); /* type Monitor_nD */ + _profile_y_setpos(); /* type Monitor_nD */ + _wavelength_setpos(); /* type Monitor_nD */ + _tof_setpos(); /* type Monitor_nD */ + _wavelength_tof_setpos(); /* type Monitor_nD */ + _sample_position_setpos(); /* type Arm */ + + /* call iteratively all components INITIALISE */ + class_Progress_bar_init(&_Origin_var); + + + + class_MCPL_input_once_init(&_vin_var); + + class_PSD_monitor_4PI_init(&_Sphere1_var); + + class_ESS_butterfly_init(&_Source_var); + + + class_PSD_monitor_4PI_init(&_Sphere0_var); + + class_Shape_init(&_Focus_cut_var); + + class_PSD_monitor_init(&_PSD_cut_var); + + class_Shape_init(&_BackTrace_var); + + class_PSD_monitor_init(&_PSD_Backtrace_var); + + + class_bi_spec_ellipse_init(&_bi_var); + + + class_Guide_four_side_init(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_init(&_g1a2_var); + + class_Guide_four_side_init(&_g1a3_var); + + class_Guide_four_side_init(&_g1b1_var); + + class_Guide_four_side_init(&_g1c1_var); + + + + class_MultiDiskChopper_init(&_wfmc_1_var); + + class_Slit_init(&_pinhole_1_var); + + + class_MultiDiskChopper_init(&_wfmc_2_var); + + class_Guide_four_side_init(&_g2a1_var); + + + class_Guide_four_side_init(&_g2a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_1_var); + + + class_DiskChopper_init(&_bp1_chopper_var); + + class_Guide_four_side_init(&_g2b1_var); + + class_Guide_four_side_init(&_g2b2_var); + + class_Guide_four_side_init(&_g2b3_var); + + class_Guide_four_side_init(&_g2b4_var); + + + class_MultiDiskChopper_init(&_fo_chopper_2_var); + + + class_DiskChopper_init(&_bp_chopper2_var); + + class_Guide_four_side_init(&_g2c1_var); + + + class_DiskChopper_init(&_t0_chopper_alpha_var); + + + class_DiskChopper_init(&_t0_chopper_beta_var); + + class_Guide_four_side_init(&_g3a1_var); + + class_Guide_four_side_init(&_g3a2_var); + + + class_MultiDiskChopper_init(&_fo_chopper_3_var); + + class_Guide_four_side_init(&_g3b1_var); + + class_Guide_four_side_init(&_g4a1_var); + + + class_Guide_four_side_init(&_g4a2_var); + + class_Guide_four_side_init(&_g4a3_var); + + + class_MultiDiskChopper_init(&_fo_chopper_4_var); + + class_Guide_four_side_init(&_g4b1_var); + + class_Guide_four_side_init(&_g4b2_var); + + class_Guide_four_side_init(&_g4b3_var); + + class_Guide_four_side_init(&_g4b4_var); + + class_Guide_four_side_init(&_g4b5_var); + + class_Guide_four_side_init(&_g4b6_var); + + class_Guide_four_side_init(&_g5a1_var); + + + class_MultiDiskChopper_init(&_fo_chopper_5_var); + + class_Guide_four_side_init(&_g5b1_var); + + class_Guide_four_side_init(&_g5b2_var); + + class_Guide_four_side_init(&_g5b3_var); + + class_Guide_four_side_init(&_g5b4_var); + + class_Guide_four_side_init(&_g5b5_var); + + class_Guide_four_side_init(&_g5b6_var); + + class_Guide_four_side_init(&_g6a1_var); + + class_Guide_four_side_init(&_g6a2_var); + + class_Guide_four_side_init(&_g6a3_var); + + + + + + class_Slit_init(&_pinhole_2_var); + + + + class_Monitor_nD_init(&_sample_PSD_var); + + class_Monitor_nD_init(&_profile_x_var); + + class_Monitor_nD_init(&_profile_y_var); + + class_Monitor_nD_init(&_wavelength_var); + + class_Monitor_nD_init(&_tof_var); + + class_Monitor_nD_init(&_wavelength_tof_var); + + + if (mcdotrace) display(); + DEBUG_INSTR_END(); + +#ifdef OPENACC +#include +#pragma acc update device(_Origin_var) +#pragma acc update device(_vinROT2_var) +#pragma acc update device(_vinROT1_var) +#pragma acc update device(_vin_var) +#pragma acc update device(_Sphere1_var) +#pragma acc update device(_Source_var) +#pragma acc update device(_optical_axis_var) +#pragma acc update device(_Sphere0_var) +#pragma acc update device(_Focus_cut_var) +#pragma acc update device(_PSD_cut_var) +#pragma acc update device(_BackTrace_var) +#pragma acc update device(_PSD_Backtrace_var) +#pragma acc update device(_Start_of_bi_var) +#pragma acc update device(_bi_var) +#pragma acc update device(_End_of_bi_var) +#pragma acc update device(_NBOA_drawing_1_end_var) +#pragma acc update device(_g1a2_var) +#pragma acc update device(_g1a3_var) +#pragma acc update device(_g1b1_var) +#pragma acc update device(_g1c1_var) +#pragma acc update device(_wfm_position_var) +#pragma acc update device(_wfm_1_position_var) +#pragma acc update device(_wfmc_1_var) +#pragma acc update device(_pinhole_1_var) +#pragma acc update device(_wfm_2_position_var) +#pragma acc update device(_wfmc_2_var) +#pragma acc update device(_g2a1_var) +#pragma acc update device(_monitor_1_position_var) +#pragma acc update device(_g2a2_var) +#pragma acc update device(_fo1_position_var) +#pragma acc update device(_fo_chopper_1_var) +#pragma acc update device(_bp1_position_var) +#pragma acc update device(_bp1_chopper_var) +#pragma acc update device(_g2b1_var) +#pragma acc update device(_g2b2_var) +#pragma acc update device(_g2b3_var) +#pragma acc update device(_g2b4_var) +#pragma acc update device(_fo2_position_var) +#pragma acc update device(_fo_chopper_2_var) +#pragma acc update device(_bp2_position_var) +#pragma acc update device(_bp_chopper2_var) +#pragma acc update device(_g2c1_var) +#pragma acc update device(_t0_start_position_var) +#pragma acc update device(_t0_chopper_alpha_var) +#pragma acc update device(_t0_end_position_var) +#pragma acc update device(_t0_chopper_beta_var) +#pragma acc update device(_g3a1_var) +#pragma acc update device(_g3a2_var) +#pragma acc update device(_fo3_position_var) +#pragma acc update device(_fo_chopper_3_var) +#pragma acc update device(_g3b1_var) +#pragma acc update device(_g4a1_var) +#pragma acc update device(_monitor_2_position_var) +#pragma acc update device(_g4a2_var) +#pragma acc update device(_g4a3_var) +#pragma acc update device(_fo4_position_var) +#pragma acc update device(_fo_chopper_4_var) +#pragma acc update device(_g4b1_var) +#pragma acc update device(_g4b2_var) +#pragma acc update device(_g4b3_var) +#pragma acc update device(_g4b4_var) +#pragma acc update device(_g4b5_var) +#pragma acc update device(_g4b6_var) +#pragma acc update device(_g5a1_var) +#pragma acc update device(_fo5_position_var) +#pragma acc update device(_fo_chopper_5_var) +#pragma acc update device(_g5b1_var) +#pragma acc update device(_g5b2_var) +#pragma acc update device(_g5b3_var) +#pragma acc update device(_g5b4_var) +#pragma acc update device(_g5b5_var) +#pragma acc update device(_g5b6_var) +#pragma acc update device(_g6a1_var) +#pragma acc update device(_g6a2_var) +#pragma acc update device(_g6a3_var) +#pragma acc update device(_guide_end_var) +#pragma acc update device(_monitor_3_position_var) +#pragma acc update device(_start_backend_var) +#pragma acc update device(_optical_axis_backend_var) +#pragma acc update device(_pinhole_2_var) +#pragma acc update device(_graph_var) +#pragma acc update device(_sample_monitor_arm_var) +#pragma acc update device(_sample_PSD_var) +#pragma acc update device(_profile_x_var) +#pragma acc update device(_profile_y_var) +#pragma acc update device(_wavelength_var) +#pragma acc update device(_tof_var) +#pragma acc update device(_wavelength_tof_var) +#pragma acc update device(_sample_position_var) +#pragma acc update device(_instrument_var) +#endif + + return(0); +} /* init */ + +/******************************************************************************* +* components TRACE +*******************************************************************************/ + +#define x (_particle->x) +#define y (_particle->y) +#define z (_particle->z) +#define vx (_particle->vx) +#define vy (_particle->vy) +#define vz (_particle->vz) +#define t (_particle->t) +#define sx (_particle->sx) +#define sy (_particle->sy) +#define sz (_particle->sz) +#define p (_particle->p) +#define mcgravitation (_particle->mcgravitation) +#define mcMagnet (_particle->mcMagnet) +#define allow_backprop (_particle->allow_backprop) +#define _mctmp_a (_particle->_mctmp_a) +#define _mctmp_b (_particle->_mctmp_b) +#define _mctmp_c (_particle->_mctmp_c) +/* if on GPU, globally nullify sprintf,fprintf,printfs */ +/* (Similar defines are available in each comp trace but */ +/* those are not enough to handle external libs etc. ) */ +#ifdef OPENACC +#define fprintf(stderr,...) printf(__VA_ARGS__) +#define sprintf(string,...) printf(__VA_ARGS__) +#define exit(...) noprintf() +#define strcmp(a,b) str_comp(a,b) +#define strlen(a) str_len(a) +#endif +#define SCATTERED (_particle->_scattered) +#define RESTORE (_particle->_restore) +#define RESTORE_NEUTRON(_index, ...) _particle->_restore = _index; +#define ABSORB0 do { DEBUG_STATE(); DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; return; } while(0) +#define ABSORBED (_particle->_absorbed) +#define mcget_run_num() _particle->_uid +#define ABSORB ABSORB0 +#pragma acc routine +void class_Progress_bar_trace(_class_Progress_bar *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_trace] component Origin=Progress_bar() TRACE [Progress_bar:0]"); + + #ifndef OPENACC + double ncount; + ncount = mcget_run_num (); + if (!StartTime) { + time (&StartTime); /* compute starting time */ + IntermediateCnts = 1e3; + } + time_t NowTime; + time (&NowTime); + /* compute initial estimate of computation duration */ + if (!EndTime && ncount >= IntermediateCnts) { + CurrentTime = NowTime; + if (difftime (NowTime, StartTime) > 10 && ncount) { /* wait 10 sec before writing ETA */ + EndTime = StartTime + (time_t)(difftime (NowTime, StartTime) * (double)mcget_ncount () / ncount); + IntermediateCnts = 0; + MPI_MASTER (fprintf (stdout, "\nTrace ETA "); fprintf (stdout, "%s", infostring); + if (difftime (EndTime, StartTime) < 60.0) fprintf (stdout, "%g [s] ", difftime (EndTime, StartTime)); + else if (difftime (EndTime, StartTime) > 3600.0) fprintf (stdout, "%g [h] ", difftime (EndTime, StartTime) / 3600.0); + else fprintf (stdout, "%g [min] ", difftime (EndTime, StartTime) / 60.0); fprintf (stdout, "\n");); + } else + IntermediateCnts += 1e3; + fflush (stdout); + } + + /* display percentage when percent or minutes have reached step */ + if (EndTime && mcget_ncount () && ((minutes && difftime (NowTime, CurrentTime) > minutes * 60) || (percent && !minutes && ncount >= IntermediateCnts))) { + MPI_MASTER (fprintf (stdout, "%llu %%\n", (unsigned long long)(ncount * 100.0 / mcget_ncount ())); fflush (stdout);); + CurrentTime = NowTime; + + IntermediateCnts = ncount + percent * mcget_ncount () / 100; + /* check that next intermediate ncount check is a multiple of the desired percentage */ + IntermediateCnts = floor (IntermediateCnts * 100 / percent / mcget_ncount ()) * percent * mcget_ncount () / 100; + /* raise flag to indicate that we did something */ + SCATTER; + if (flag_save) + save (NULL); + } + #endif +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return; +} /* class_Progress_bar_trace */ + +#pragma acc routine +void class_MCPL_input_once_trace(_class_MCPL_input_once *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_trace] component vin=MCPL_input_once() TRACE [MCPL_input_once:0]"); + + mcpl_input_once_particle_t* ptr = NULL; + + if (current_index >= maximum_index) { + // go back to the start of this worker's particles, rather than accessing out-of-range data + #pragma acc atomic write + current_index = 0; + #ifndef OPENACC + if (!preload) { + // mcpl_seek is not available under openACC, and not used anyway + mcpl_seek (inputfile, first_particle); + } + #endif + times_replayed++; + } + #ifndef OPENACC + // preload can only ever be false if OPENACC is not define (in which case it is the likely code path) + if (!preload) { + ptr = (mcpl_input_once_particle_t*)calloc (1, sizeof (mcpl_input_once_particle_t)); + const mcpl_particle_t* particle; // = (mcpl_particle_t *) calloc(sizeof(mcpl_particle_t),1); + particle = mcpl_read (inputfile); + current_index++; // track how many particles have been accessed, to ensure we don't exceed our slice of the file + if (!particle || particle->pdgcode != 2112) { + ABSORB; + } + // keep track of how many neutrons have been read; but only on the first replay + if (!times_replayed) + read_neutrons++; + if (particle->ekin < Emin * 1e-9 || particle->ekin > Emax * 1e-9) { + ABSORB; + } + mcpl_input_once_translator (polarisationuse, weight_scale, particle, ptr); + // And how many of the read neutrons actually get used + if (!times_replayed) + used_neutrons++; + } else { + #endif + ptr = particles + (_particle->_uid % maximum_index); + #ifdef OPENACC + #pragma acc atomic + current_index++; // track how many particles have been accessed, to ensure we don't exceed our slice of the file + #else + } + #endif + // copy from the component particle struct to the particle ray struct: + if (ptr == NULL) { + fprintf (stderr, "ERROR (%s): component particle struct pointer not set! Crash before out-of-bounds memory access.\n", NAME_CURRENT_COMP); + exit (-1); + } + #pragma acc atomic + emitted_neutrons++; + // this could be done via memcpy if we ensure equal memory layout with the ray's struct + x = ptr->_x; + y = ptr->_y; + z = ptr->_z; + vx = ptr->_vx; + vy = ptr->_vy; + vz = ptr->_vz; + sx = ptr->_sx; + sy = ptr->_sy; + sz = ptr->_sz; + t = ptr->_t; + p = ptr->_p; + + // done with the mcpl_input_once_particle_t pointer -- free it if not pointing into the particles list + if (!preload && ptr != NULL) + free (ptr); + + if (always_smear || times_replayed) { + // fuzz the input + if (pos_smear) { + double tmpx, tmpy, tmpz; + randvec_target_circle (&tmpx, &tmpy, &tmpz, NULL, 0, 0, 1, 0); + NORM (tmpx, tmpy, tmpz); + x += tmpx * pos_smear * rand01 (); + y += tmpy * pos_smear * rand01 (); + z += tmpz * pos_smear * rand01 (); + } + if (v_smear) { + double fraction; + fraction = 1.0 + v_smear * randpm1 (); + vx *= fraction; + vy *= fraction; + vz *= fraction; + } + if (dir_smear) { + double vv, dx, dy, dz; + vv = sqrt (vx * vx + vy * vy + vz * vz); + dx = vx / vv; + dy = vy / vv; + dz = vz / vv; + randvec_target_circle (&dx, &dy, &dz, NULL, dx, dy, dz, sin (dir_smear * DEG2RAD)); + NORM (dx, dy, dz); + vx = dx * vv; + vy = dy * vv; + vz = dz * vv; + } + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + +if (_comp->_index == 4) { // EXTEND 'vin' + SCATTER; + if (!INSTRUMENT_GETPAR(filter)) { + p*=1.56e16; + p/=1e5; + z=z-0.137; + } +} + + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return; +} /* class_MCPL_input_once_trace */ + +#pragma acc routine +void class_PSD_monitor_4PI_trace(_class_PSD_monitor_4PI *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_trace] component Sphere1=PSD_monitor_4PI() TRACE [PSD_monitor_4PI:0]"); + + double t0, t1, phi, theta; + int i, j; + + if (sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, radius) && t1 > 0) { + if (t0 < 0) + t0 = t1; + /* t0 is now time of intersection with the sphere. */ + mcPROP_DT (t0); + phi = atan2 (x, z); + i = floor (nx * (phi / (2 * PI) + 0.5)); + if (i >= nx) + i = nx - 1; /* Special case for phi = PI. */ + else if (i < 0) + i = 0; + theta = asin (y / radius); + j = floor (ny * (theta + PI / 2) / PI + 0.5); + if (j >= ny) + j = ny - 1; /* Special case for y = radius. */ + else if (j < 0) + j = 0; + + double p2 = p * p; + #pragma acc atomic + PSD_N[i][j] = PSD_N[i][j] + 1; + + #pragma acc atomic + PSD_p[i][j] = PSD_p[i][j] + p; + + #pragma acc atomic + PSD_p2[i][j] = PSD_p2[i][j] + p2; + + SCATTER; + } + if (restore_neutron) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + +if (_comp->_index == 8) { // EXTEND 'Sphere0' + ALLOW_BACKPROP; +} + + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return; +} /* class_PSD_monitor_4PI_trace */ + +#pragma acc routine +void class_ESS_butterfly_trace(_class_ESS_butterfly *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define target_tsplit (_comp->_parameters.target_tsplit) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_trace] component Source=ESS_butterfly() TRACE [ESS_butterfly:0]"); + + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + + if (total_N_sent == 0) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } else { + long tmp = ceil(target_tsplit*total_N_sent/total_arrived); + #pragma acc atomic + adaptive_N = tmp; + if (adaptive_N > _particle->N_trains) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } + } + + for (train_index=0; train_index0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=_particle->p_last_time_manipulation; + + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef target_tsplit + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return; +} /* class_ESS_butterfly_trace */ + +#pragma acc routine +void class_Shape_trace(_class_Shape *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define geometry (_comp->_parameters.geometry) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define thickness (_comp->_parameters.thickness) + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define nz (_comp->_parameters.nz) + #define center (_comp->_parameters.center) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_Focus_cut_trace] component Focus_cut=Shape() TRACE [Shape:0]"); + + /* component Shape does nothing */ +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + +if (_comp->_index == 9) { // EXTEND 'Focus_cut' + double xtmp,ytmp,ztmp,vxtmp,vytmp,vztmp; + xtmp=x;ytmp=y;ztmp=z; + vxtmp=vx;vytmp=vy;vztmp=vz; + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + + if (fabs(x)>0.06 || fabs(y)>0.06) { + ABSORB; + } else { + x=xtmp;y=ytmp;z=ztmp; + vx=vxtmp;vy=vytmp;vz=vztmp; + } +} +if (_comp->_index == 11) { // EXTEND 'BackTrace' + /* Propagate back to a small rectangle in front of moderators */ + + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + if (!INSTRUMENT_GETPAR(filter)) { + /* Remove neutrons that are not from around the moderators */ + if (fabs(x)>0.12 || fabs(y)>0.03) { + ABSORB; + } + double myL = (2*PI/V2K)/sqrt(vx*vx + vy*vy + vz*vz); + if ( myL < INSTRUMENT_GETPAR(l_min) || myL > INSTRUMENT_GETPAR(l_max) ) { + ABSORB; + } + } + + int train_index; + double tZERO = t; + if (total_N_sent == 0) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } else { + long tmp = ceil(INSTRUMENT_GETPAR(target_tsplit)*total_N_sent/total_arrived); + #pragma acc atomic + adaptive_N = tmp; + if (adaptive_N > _particle->N_trains) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } + } + + for (train_index=0; train_indext_offset[train_index] = t; + _particle->p_trains[train_index] = p/adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=_particle->p_last_time_manipulation; + +} + + #undef geometry + #undef radius + #undef xwidth + #undef yheight + #undef zdepth + #undef thickness + #undef nx + #undef ny + #undef nz + #undef center + #undef offdata + return; +} /* class_Shape_trace */ + +#pragma acc routine +void class_PSD_monitor_trace(_class_PSD_monitor *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_trace] component PSD_cut=PSD_monitor() TRACE [PSD_monitor:0]"); + + PROP_Z0; + if (x > xmin && x < xmax && y > ymin && y < ymax) { + int i = floor ((x - xmin) * nx / (xmax - xmin)); + int j = floor ((y - ymin) * ny / (ymax - ymin)); + + double p2 = p * p; + #pragma acc atomic + PSD_N[i][j] = PSD_N[i][j] + 1; + + #pragma acc atomic + PSD_p[i][j] = PSD_p[i][j] + p; + + #pragma acc atomic + PSD_p2[i][j] = PSD_p2[i][j] + p2; + + SCATTER; + } + if (restore_neutron) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + +if (_comp->_index == 12) { // EXTEND 'PSD_Backtrace' + ALLOW_BACKPROP; +} + + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return; +} /* class_PSD_monitor_trace */ + +#pragma acc routine +void class_bi_spec_ellipse_trace(_class_bi_spec_ellipse *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_trace] component bi=bi_spec_ellipse() TRACE [bi_spec_ellipse:0]"); + + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xheight + #undef ywidth + #undef zlength + #undef n_mirror + #undef tilt + #undef n_pieces + #undef angular_offset + #undef m + #undef R0_m + #undef Qc_m + #undef alpha_mirror_m + #undef W_m + #undef transmit + #undef d_focus_1_x + #undef d_focus_2_x + #undef d_focus_1_y + #undef d_focus_2_y + #undef ell_l + #undef ell_h + #undef ell_w + #undef ell_m + #undef R0 + #undef Qc + #undef alpha_mirror + #undef W + #undef cut + #undef substrate + #undef reflect_mirror + #undef reflect + #undef pTable + return; +} /* class_bi_spec_ellipse_trace */ + +#pragma acc routine +void class_Guide_four_side_trace(_class_Guide_four_side *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_trace] component NBOA_drawing_1_end=Guide_four_side() TRACE [Guide_four_side:0]"); + + + int i; + + PROP_Z0; /* Propagate neutron to guide entrance. */ + /* time variables (INNER walls)*/ + double t1; + double t2w1r; + double t2w1l; + double t2h1u; + double t2h1d; + /* time variables (OUTER walls)*/ + double t2w1rwt; + double t2w1lwt; + double t2h1uwt; + double t2h1dwt; + + /* zcomponent of the intersection point of the neutron trajectory and the ellipse (INNER walls)*/ + double m; + double n; + /* component and length of the surfaces normal vector at the intersection point */ + double nz; + double nx; + double ny; + double n2; + /* prefactor to calculate the velocity vector after the interaction */ + double pf; + /* velocity vector components before the interaction*/ + double vxin; + double vyin; + double vzin; + /* q-vector for the interaction */ + double q; + /* limit variables to determine the interaction position given by the time relative to the guide walls*/ + double xlimitr; + double xlimitrwt; + double xlimitl; + double xlimitlwt; + double ylimitd; + double ylimitdwt; + double ylimitu; + double ylimituwt; + /* interaction position of the neutron given by the interaction time; crosscheck with limit variables*/ + double xtest; + double ytest; + + if (x <= -w1r && x >= -w1rwt && y <= mru1 * x + nru1 && y >= mrd1 * x + nrd1 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT entrance wall and the wall is not transparent*/ + ABSORB; + if (x >= w1l && x <= w1lwt && y <= mlu1 * x + nlu1 && y >= mld1 * x + nld1 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT entrance wall and the wall is not transparent*/ + ABSORB; + if (y <= -h1d && y >= -h1dwt && x <= (y - nld1) / mld1 && x >= (y - nrd1) / mrd1 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM entrance wall and the wall is not transparent*/ + ABSORB; + if (y >= h1u && y <= h1uwt && x <= (y - nlu1) / mlu1 && x >= (y - nru1) / mru1 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP entrance wall and the wall is not transparent*/ + ABSORB; + + do { /* start the propagation loop inside the guide */ + t1 = (l - z) / vz; /* needed time to pass the guide (or rest of the guide without any interaction)*/ + + if (loutwr == 0 && linwr == 0) { + TIME_LINEAR (t1, w1r, w2r, l, x, z, vx, vz, w1rwt, &t2w1r, &t2w1rwt); + } + + if (loutwr != 0 && linwr != 0) { + TIME_ELLIPSE (vx, vz, x, z, a2wr, b2wr, z0wr, t1, a2wrwt, b2wrwt, &t2w1r, &t2w1rwt); + } + + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) { + TIME_PARABEL (vx, vz, x, z, pawr, pbwr, t1, pawrwt, pbwrwt, &t2w1r, &t2w1rwt); + } + + if (loutwl == 0 && linwl == 0) { + TIME_LINEAR_1 (t1, w1l, w2l, l, x, z, vx, vz, w1lwt, &t2w1l, &t2w1lwt); + } + + if (loutwl != 0 && linwl != 0) { + TIME_ELLIPSE_1 (vx, vz, x, z, a2wl, b2wl, z0wl, t1, a2wlwt, b2wlwt, &t2w1l, &t2w1lwt); + } + + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) { + TIME_PARABEL_1 (vx, vz, x, z, pawl, pbwl, t1, pawlwt, pbwlwt, &t2w1l, &t2w1lwt); + } + + if (louthu == 0 && linhu == 0) { + TIME_LINEAR_1 (t1, h1u, h2u, l, y, z, vy, vz, h1uwt, &t2h1u, &t2h1uwt); + } + + if (louthu != 0 && linhu != 0) { + TIME_ELLIPSE_1 (vy, vz, y, z, a2hu, b2hu, z0hu, t1, a2huwt, b2huwt, &t2h1u, &t2h1uwt); + } + + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) { + TIME_PARABEL_1 (vy, vz, y, z, pahu, pbhu, t1, pahuwt, pbhuwt, &t2h1u, &t2h1uwt); + } + + if (louthd == 0 && linhd == 0) { + TIME_LINEAR (t1, h1d, h2d, l, y, z, vy, vz, h1dwt, &t2h1d, &t2h1dwt); + } + + if (louthd != 0 && linhd != 0) { + TIME_ELLIPSE (vy, vz, y, z, a2hd, b2hd, z0hd, t1, a2hdwt, b2hdwt, &t2h1d, &t2h1dwt); + } + + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) { + TIME_PARABEL (vy, vz, y, z, pahd, pbhd, t1, pahdwt, pbhdwt, &t2h1d, &t2h1dwt); + } + + /* TEST OF THE INNER INTERSECTION - TIMES */ + /* possible interactions outside the guide have to be eliminated*/ + + if (t2w1r < t1 + 2.0) { /* test of RIGHT INNER wall interaction time*/ + TEST_UP_DOWN (t2w1r, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1r = t1 + 2.0; + } + } + + if (t2w1l < t1 + 2.0) { /* test of LEFT INNER wall interaction time - analog to right wall*/ + TEST_UP_DOWN (t2w1l, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2d, h1d, h2u, h1u, bhd, z0hd, a2hd, bhu, z0hu, a2hu, pbhd, pahd, pbhu, pahu, &ylimitd, + &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1l = t1 + 2.0; + } + } + + if (t2h1u < t1 + 2.0) { /* test of TOP INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1u, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1u = t1 + 2.0; + } + } + + if (t2h1d < t1 + 2.0) { /* test of BOTTOM INNER wall interaction time - analog to right wall*/ + TEST_LEFT_RIGHT (t2h1d, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2r, w1r, w2l, w1l, bwr, z0wr, a2wr, bwl, z0wl, a2wl, pbwr, pawr, pbwl, pawl, + &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1d = t1 + 2.0; + } + } + + /* TEST OF THE OUTER INTERSECTION - TIMES */ + + if (t2w1rwt < t1 + 2.0) { /* test of RIGHT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1rwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1rwt = t1 + 2.0; + } + } + + if (t2w1lwt < t1 + 2.0) { /* test of LEFT OUTER wall interaction time - analog inner wall*/ + TEST_UP_DOWN (t2w1lwt, vz, z, vy, y, l, linhd, louthd, linhu, louthu, h2dwt, h1dwt, h2uwt, h1uwt, bhdwt, z0hd, a2hdwt, bhuwt, z0hu, a2huwt, pbhdwt, pahdwt, + pbhuwt, pahuwt, &ylimitd, &ylimitu, &ytest); + if (ytest < ylimitd || ytest > ylimitu) { + t2w1lwt = t1 + 2.0; + } + } + + if (t2h1uwt < t1 + 2.0) { /* test of TOP OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1uwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1uwt = t1 + 2.0; + } + } + + if (t2h1dwt < t1 + 2.0) { /* test of BOTTOM OUTER wall interaction time - analog inner wall*/ + TEST_LEFT_RIGHT (t2h1dwt, vz, z, vx, x, l, linwr, loutwr, linwl, loutwl, w2rwt, w1rwt, w2lwt, w1lwt, bwrwt, z0wr, a2wrwt, bwlwt, z0wl, a2wlwt, pbwrwt, + pawrwt, pbwlwt, pawlwt, &xlimitr, &xlimitl, &xtest); + if (xtest < xlimitr || xtest > xlimitl) { + t2h1dwt = t1 + 2.0; + } + } + + /* which wall is hit first? which geometry? */ + + if (t1 < t2w1r && t1 < t2w1l && t1 < t2h1u && t1 < t2h1d && t1 < t2w1rwt && t1 < t2w1lwt && t1 < t2h1uwt && t1 < t2h1dwt) { + i = 1; + } + + /* neutron interacts with the INNER elliptic right wall and this wall is NOT transparent*/ + + if (t2w1r > 0 && t2w1r < t1 && t2w1r < t2w1l && t2w1r < t2h1u && t2w1r < t2h1d && t2w1r < t2w1rwt && t2w1r < t2w1lwt && t2w1r < t2h1uwt && t2w1r < t2h1dwt) { + if (mxr == 0) + i = 18; + else { + if (mxr == -1) + i = 14; + else { + if ((linwr != 0) && (loutwr != 0)) + i = 2; /* the neutron will be reflected*/ + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 3; + else { + if (loutwr == 0 && linwr == 0) + i = 4; + } + } + } + } + } + + /* neutron interacts with the elliptic left INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1l > 0 && t2w1l < t1 && t2w1l < t2w1r && t2w1l < t2h1u && t2w1l < t2h1d && t2w1l < t2w1rwt && t2w1l < t2w1lwt && t2w1l < t2h1uwt && t2w1l < t2h1dwt) { + if (mxl == 0) + i = 19; + else { + if (mxl == -1) + i = 15; + else { + if ((linwl != 0) && (loutwl != 0)) + i = 5; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 6; + else { + if (loutwl == 0 && linwl == 0) + i = 7; + } + } + } + } + } + + /* neutron interacts with the elliptic top INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1u > 0 && t2h1u < t1 && t2h1u < t2w1r && t2h1u < t2w1l && t2h1u < t2h1d && t2h1u < t2w1rwt && t2h1u < t2w1lwt && t2h1u < t2h1uwt && t2h1u < t2h1dwt) { + if (myu == 0) + i = 20; + else { + if (myu == -1) + i = 16; + else { + if (louthu != 0 && linhu != 0) + i = 8; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 9; + else { + if (louthu == 0 && linhu == 0) + i = 10; + } + } + } + } + } + + /* neutron interacts with the elliptic down INNER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1d > 0 && t2h1d < t1 && t2h1d < t2w1r && t2h1d < t2w1l && t2h1d < t2h1u && t2h1d < t2w1rwt && t2h1d < t2w1lwt && t2h1d < t2h1uwt && t2h1d < t2h1dwt) { + if (myd == 0) + i = 21; + else { + if (myd == -1) + i = 17; + else { + if (louthd != 0 && linhd != 0) + i = 11; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 12; + else { + if (louthd == 0 && linhd == 0) + i = 13; + } + } + } + } + } + + /* EVERTHING AGAIN FOR THE OUTER WALLS */ + + /* neutron interacts with the elliptic right OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1rwt > 0 && t2w1rwt < t1 && t2w1rwt < t2w1r && t2w1rwt < t2w1l && t2w1rwt < t2h1u && t2w1rwt < t2h1d && t2w1rwt < t2w1lwt && t2w1rwt < t2h1uwt + && t2w1rwt < t2h1dwt) { + if (mxrOW == 0) + i = 34; + else { + if (mxrOW == -1) + i = 38; + else { + if (linwr != 0 && loutwr != 0) + i = 22; + else { + if ((loutwr != 0 && linwr == 0) || (loutwr == 0 && linwr != 0)) + i = 23; + else { + if (loutwr == 0 && linwr == 0) + i = 24; + } + } + } + } + } + + /* neutron interacts with the elliptic left OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2w1lwt > 0 && t2w1lwt < t1 && t2w1lwt < t2w1r && t2w1lwt < t2w1l && t2w1lwt < t2h1u && t2w1lwt < t2h1d && t2w1lwt < t2w1rwt && t2w1lwt < t2h1uwt + && t2w1lwt < t2h1dwt) { + if (mxlOW == 0) + i = 35; + else { + if (mxlOW == -1) + i = 39; + else { + if (linwl != 0 && loutwl != 0) + i = 25; + else { + if ((loutwl != 0 && linwl == 0) || (loutwl == 0 && linwl != 0)) + i = 26; + else { + if (loutwl == 0 && linwl == 0) + i = 27; + } + } + } + } + } + + /* neutron interacts with the elliptic top OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1uwt > 0 && t2h1uwt < t1 && t2h1uwt < t2w1r && t2h1uwt < t2w1l && t2h1uwt < t2h1u && t2h1uwt < t2h1d && t2h1uwt < t2w1rwt && t2h1uwt < t2w1lwt + && t2h1uwt < t2h1dwt) { + if (myuOW == 0) + i = 36; + else { + if (myuOW == -1) + i = 40; + else { + if (louthu != 0 && linhu != 0) + i = 28; + else { + if ((louthu != 0 && linhu == 0) || (louthu == 0 && linhu != 0)) + i = 29; + else { + if (louthu == 0 && linhu == 0) + i = 30; + } + } + } + } + } + + /* neutron interacts with the elliptic down OUTER wall - comments are analog to inner elliptic right wall*/ + + if (t2h1dwt > 0 && t2h1dwt < t1 && t2h1dwt < t2w1r && t2h1dwt < t2w1l && t2h1dwt < t2h1u && t2h1dwt < t2h1d && t2h1dwt < t2w1rwt && t2h1dwt < t2w1lwt + && t2h1dwt < t2h1uwt) { + if (mydOW == 0) + i = 37; + else { + if (mydOW == -1) + i = 41; + else { + if (louthd != 0 && linhd != 0) + i = 31; + else { + if ((louthd != 0 && linhd == 0) || (louthd == 0 && linhd != 0)) + i = 32; + else { + if (louthd == 0 && linhd == 0) + i = 33; + } + } + } + } + } + + switch (i) { /* the principal for the calculation is in every case the same: 1.) one needs the surface normal vector at the intersection point. 2.) + calculation of the velocity vector after the interaction by */ + /* vector subrtation (the basic idea and explanations can be found in the 'Mcstas component manual' in the section 'straight guide') */ + + case 1: /* no interaction, propagation to the end of the guide */ + PROP_DT (t1); + break; + + case 2: + PROP_DT (t2w1r); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = -x; /* surface normal vector components at the intersection point */ + nz = -x * x / ((a2wr / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 3: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawr; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 4: + PROP_DT (t2w1r); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = w2r - w1r; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 5: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -x * x / ((a2wl / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + SCATTER; + break; + + case 6: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -x; + nz = -0.5 / pawl; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 7: + PROP_DT (t2w1l); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = w2l - w1l; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 8: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hu / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 9: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahu; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 10: + PROP_DT (t2h1u); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = h2u - h1u; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 11: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -y * y / ((a2hd / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 12: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -y; + nz = -0.5 / pahd; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 13: + PROP_DT (t2h1d); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = h2d - h1d; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 14: /* transperent walls - no interaction */ + PROP_DT (t2w1r); + break; + + case 15: + PROP_DT (t2w1l); + break; + + case 16: + PROP_DT (t2h1u); + break; + + case 17: + PROP_DT (t2h1d); + break; + + case 18: /* absorbing walls - neutrons are absorbed at interaction point*/ + PROP_DT (t2w1r); + ABSORB; + break; + + case 19: + PROP_DT (t2w1l); + ABSORB; + break; + + case 20: + PROP_DT (t2h1u); + ABSORB; + break; + + case 21: + PROP_DT (t2h1d); + ABSORB; + break; + + /* OUTER WALLS - analog to inner walls, but sign of surface normal vector is changed */ + + case 22: + PROP_DT (t2w1rwt); /* propagation to interaction point */ + vxin = vx; /* saving the velocity vector before the interaction*/ + vyin = vy; + vzin = vz; + nx = x; /* surface normal vector components at the intersection point */ + nz = x * x / ((a2wrwt / (z + z0wr)) - (z0wr + z)); + n2 = sqrt (nx * nx + nz * nz); /* lenght of the surface normal */ + pf = 2.0 * (vx * nx + vz * nz) / n2; /* prefactor for the calculation of the velocity vector after the interaction */ + vx -= pf * nx / n2; /* velocity vector after the interaction*/ + vz -= pf * nz / n2; + q = V2Q + * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); /* calculation the q-vector to calculated the reflectivity*/ + break; + + case 23: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawrwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 24: + PROP_DT (t2w1rwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = -l; + nz = -(w2r - w1r); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 25: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = x * x / ((a2wlwt / (z + z0wl)) - (z0wl + z)); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 26: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = x; + nz = 0.5 / pawlwt; + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 27: + PROP_DT (t2w1lwt); + vxin = vx; + vyin = vy; + vzin = vz; + nx = l; + nz = -(w2l - w1l); + n2 = sqrt (nx * nx + nz * nz); + pf = 2.0 * (vx * nx + vz * nz) / n2; + vx -= pf * nx / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 28: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2huwt / (z + z0hu)) - (z0hu + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 29: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahuwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 30: + PROP_DT (t2h1uwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = l; + nz = -(h2u - h1u); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 31: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = y * y / ((a2hdwt / (z + z0hd)) - (z0hd + z)); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 32: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = y; + nz = 0.5 / pahdwt; + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 33: + PROP_DT (t2h1dwt); + vxin = vx; + vyin = vy; + vzin = vz; + ny = -l; + nz = -(h2d - h1d); + n2 = sqrt (ny * ny + nz * nz); + pf = 2.0 * (vy * ny + vz * nz) / n2; + vy -= pf * ny / n2; + vz -= pf * nz / n2; + q = V2Q * sqrt ((vxin - vx) * (vxin - vx) + (vyin - vy) * (vyin - vy) + (vzin - vz) * (vzin - vz)); + break; + + case 34: + PROP_DT (t2w1rwt); + ABSORB; + break; + + case 35: + PROP_DT (t2w1lwt); + ABSORB; + break; + + case 36: + PROP_DT (t2h1uwt); + ABSORB; + break; + + case 37: + PROP_DT (t2h1dwt); + ABSORB; + break; + + case 38: + PROP_DT (t2w1rwt); + break; + + case 39: + PROP_DT (t2w1lwt); + break; + + case 40: + PROP_DT (t2h1uwt); + break; + + case 41: + PROP_DT (t2h1dwt); + break; + } + + if (((i == 2) || (i == 3) || (i == 4))) { /* calculating the the probability that the neutron is reflected at the RIGHT INNER wall*/ + if (RIreflect && strlen (RIreflect)) { + p = Table_Value (riTable, q, 1); + } else { + if (mxr > 0 && q > Qcxr) { + double arg = (q - mxr * Qcxr) / Wxr; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxr * (q - Qcxr)); + } else + ABSORB; + } + } + } + + if (((i == 22) || (i == 23) || (i == 24))) { /* calculating the the probability that the neutron is reflected at the RIGHT OUTER wall*/ + if (ROreflect && strlen (ROreflect)) { + p = Table_Value (roTable, q, 1); + } else { + if (mxrOW > 0 && q > QcxrOW) { + double arg = (q - mxrOW * QcxrOW) / WxrOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxrOW * (q - QcxrOW)); + } else + ABSORB; + } + } + } + + if (((i == 5) || (i == 6) || (i == 7))) { /* calculating the the probability that the neutron is reflected at the LEFT INNER wall*/ + if (LIreflect && strlen (LIreflect)) { + p = Table_Value (liTable, q, 1); + } else { + if (mxl > 0 && q > Qcxl) { + double arg = (q - mxl * Qcxl) / Wxl; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxl * (q - Qcxl)); + } else + ABSORB; + } + } + } + + if (((i == 25) || (i == 26) || (i == 27))) { /* calculating the the probability that the neutron is reflected at the LEFT OUTER wall*/ + if (LOreflect && strlen (LOreflect)) { + p = Table_Value (loTable, q, 1); + } else { + if (mxlOW > 0 && q > QcxlOW) { + double arg = (q - mxlOW * QcxlOW) / WxlOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaxlOW * (q - QcxlOW)); + } else + ABSORB; + } + } + } + + if (((i == 8) || (i == 9) || (i == 10))) { /* calculating the the probability that the neutron is reflected at the TOP INNER wall*/ + if (UIreflect && strlen (UIreflect)) { + p = Table_Value (uiTable, q, 1); + } else { + if (myu > 0 && q > Qcyu) { + double arg = (q - myu * Qcyu) / Wyu; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayu * (q - Qcyu)); + } else + ABSORB; + } + } + } + + if (((i == 28) || (i == 29) || (i == 30))) { /* calculating the the probability that the neutron is reflected at the TOP OUTER wall*/ + if (UOreflect && strlen (UOreflect)) { + p = Table_Value (uoTable, q, 1); + } else { + if (myuOW > 0 && q > QcyuOW) { + double arg = (q - myuOW * QcyuOW) / WyuOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayuOW * (q - QcyuOW)); + } else + ABSORB; + } + } + } + + if (((i == 11) || (i == 12) || (i == 13))) { /* calculating the the probability that the neutron is reflected at the BOTTOM INNER wall*/ + if (DIreflect && strlen (DIreflect)) { + p = Table_Value (diTable, q, 1); + } else { + if (myd > 0 && q > Qcyd) { + double arg = (q - myd * Qcyd) / Wyd; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphayd * (q - Qcyd)); + } else + ABSORB; + } + } + } + + if (((i == 31) || (i == 32) || (i == 33))) { /* calculating the the probability that the neutron is reflected at the BOTTOM OUTER wall*/ + if (DOreflect && strlen (DOreflect)) { + p = Table_Value (doTable, q, 1); + } else { + if (mydOW > 0 && q > QcydOW) { + double arg = (q - mydOW * QcydOW) / WydOW; + if (arg < 10) { + p *= 0.5 * (1.0 - tanh (arg)) * (1.0 - alphaydOW * (q - QcydOW)); + } else + ABSORB; + } + } + } + + p *= R0; + SCATTER; + + } while (z < l); /* repeat the interaction loop untill the neutron pass the end of guide */ + + if (x <= -w2r && x >= -w2rwt && y <= mru2 * x + nru2 && y >= mrd2 * x + nrd2 && mxr != -1 + && mxrOW != -1) /* absorbing the neutron if it hit the RIGHT exit wall and the wall is not transparent*/ + ABSORB; + if (x >= w2l && x <= w2lwt && y <= mlu2 * x + nlu2 && y >= mld2 * x + nld2 && mxl != -1 + && mxlOW != -1) /* absorbing the neutron if it hit the LEFT exit wall and the wall is not transparent*/ + ABSORB; + if (y <= -h2d && y >= -h2dwt && x <= (y - nld2) / mld2 && x >= (y - nrd2) / mrd2 && myd != -1 + && mydOW != -1) /* absorbing the neutron if it hit the BOTTOM exit wall and the wall is not transparent*/ + ABSORB; + if (y >= h2u && y <= h2uwt && x <= (y - nlu2) / mlu2 && x >= (y - nru2) / mru2 && myu != -1 + && myuOW != -1) /* absorbing the neutron if it hit the TOP exit wall and the wall is not transparent*/ + ABSORB; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return; +} /* class_Guide_four_side_trace */ + +#pragma acc routine +void class_MultiDiskChopper_trace(_class_MultiDiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_trace] component wfmc_1=MultiDiskChopper() TRACE [MultiDiskChopper:0]"); + + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + int this_t_hit; + double this_train_t; + int all_dead = 1; + double p_total = 0; + for (train_index=0; train_indexp_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + this_t_hit = 0; + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + this_t_hit = 1; + + islit++; + } + if (this_t_hit == 0) _particle->p_trains[train_index] = 0; + else { + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + } + // if not a single t_offset made it through a slit, absorb this ray + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + } + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return; +} /* class_MultiDiskChopper_trace */ + +#pragma acc routine +void class_Slit_trace(_class_Slit *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_trace] component pinhole_1=Slit() TRACE [Slit:0]"); + + PROP_Z0; + if (!isradial ? (x < xmin || x > xmax || y < ymin || y > ymax) : (x * x + y * y > radius * radius)) + ABSORB; + else + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return; +} /* class_Slit_trace */ + +#pragma acc routine +void class_DiskChopper_trace(_class_DiskChopper *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_trace] component bp1_chopper=DiskChopper() TRACE [DiskChopper:0]"); + + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + double this_train_t; + int all_dead = 1; + + for (train_index=0; train_indexp_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + + /* does neutron hit outside slit? */ + if (fmod (toff + To / 2.0, Tg) > To) + _particle->p_trains[train_index] = 0; // T_ABSORB + else { + // T_TRANSMIT + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + + } + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + + } + SCATTER; +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return; +} /* class_DiskChopper_trace */ + +#pragma acc routine +void class_Graphite_Diffuser_trace(_class_Graphite_Diffuser *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_trace] component graph=Graphite_Diffuser() TRACE [Graphite_Diffuser:0]"); + + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || y_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return; +} /* class_Graphite_Diffuser_trace */ + +#pragma acc routine +void class_Monitor_nD_trace(_class_Monitor_nD *_comp + , _class_particle *_particle) { + ABSORBED=SCATTERED=RESTORE=0; + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_trace] component sample_PSD=Monitor_nD() TRACE [Monitor_nD:0]"); + + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + double *pp_array=malloc(sizeof(double)*_particle->N_trains); + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + int train_index; + double p_original = p; + double p_factor = p/_particle->p_last_time_manipulation; + + if (adaptive_target) { + #pragma acc atomic + total_N_sent += adaptive_N; + #pragma acc atomic + total_rays_sent++; + } + + if (tsplit==1) { + double t_original = t; + for (train_index=0; train_indexp_trains[train_index] > 0) { + p = p_factor*_particle->p_trains[train_index]; + t = t_original + _particle->t_offset[train_index]; + + pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + if (adaptive_target) total_arrived++; + + } else pp_array[train_index] = 0; + } + p = p_original; + t = t_original; + + int pp_total = 0; + for (train_index=0; train_index 0) { + SCATTER; + } + + } else { + + /* + // Now just use normal p + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + */ + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + } + if(pp_array) free(pp_array); + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +#ifndef NOABSORB_INF_NAN + /* Check for nan or inf particle parms */ + if(isnan(p + t + vx + vy + vz + x + y + z)) ABSORB; + if(isinf(fabs(p) + fabs(t) + fabs(vx) + fabs(vy) + fabs(vz) + fabs(x) + fabs(y) + fabs(z))) ABSORB; +#else + if(isnan(p) || isinf(p)) printf("NAN or INF found in p, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(t) || isinf(t)) printf("NAN or INF found in t, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vx) || isinf(vx)) printf("NAN or INF found in vx, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vy) || isinf(vy)) printf("NAN or INF found in vy, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(vz) || isinf(vz)) printf("NAN or INF found in vz, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(x) || isinf(x)) printf("NAN or INF found in x, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(y) || isinf(y)) printf("NAN or INF found in y, %s (particle %lld)\n",_comp->_name,_particle->_uid); + if(isnan(z) || isinf(z)) printf("NAN or INF found in z, %s (particle %lld)\n",_comp->_name,_particle->_uid); +#endif + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return; +} /* class_Monitor_nD_trace */ + +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' TRACE +***************************************************************************** */ + +#ifndef FUNNEL +#pragma acc routine +int raytrace(_class_particle* _particle) { /* single event propagation, called by mccode_main for ODIN_MCPL_baseline:TRACE */ + + /* init variables and counters for TRACE */ + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++;} while(0) + #define ABSORB ABSORB0 + DEBUG_ENTER(); + DEBUG_STATE(); + _particle->flag_nocoordschange=0; /* Init */ + _class_particle _particle_save=*_particle; + /* the main iteration loop for one incoming event */ + while (!ABSORBED) { /* iterate event until absorbed */ + /* send particle event to component instance, one after the other */ + /* begin component Origin=Progress_bar() [1] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Origin_var._rotation_is_identity) { + if(!_Origin_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 1) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Origin_var._name); + DEBUG_STATE(); + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Origin [1] */ + /* begin component vinROT2=Arm() [2] */ + if (!ABSORBED && _particle->_index == 2) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component vinROT2 [2] */ + /* begin component vinROT1=Arm() [3] */ + if (!ABSORBED && _particle->_index == 3) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component vinROT1 [3] */ + /* begin component vin=MCPL_input_once() [4] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_vin_var._rotation_is_identity) { + if(!_vin_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _vin_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_vin_var._position_relative, _vin_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 4) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_vin_var._name); + DEBUG_STATE(); + class_MCPL_input_once_trace(&_vin_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component vin [4] */ + /* begin component Sphere1=PSD_monitor_4PI() [5] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Sphere1_var._rotation_is_identity) { + if(!_Sphere1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Sphere1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Sphere1_var._position_relative, _Sphere1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 5) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Sphere1_var._name); + DEBUG_STATE(); + class_PSD_monitor_4PI_trace(&_Sphere1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Sphere1 [5] */ + /* begin component Source=ESS_butterfly() [6] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Source_var._rotation_is_identity) { + if(!_Source_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 6) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Source_var._name); + DEBUG_STATE(); + if ((( 0 == 1 ))) // conditional WHEN execution + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Source [6] */ + /* begin component optical_axis=Arm() [7] */ + if (!ABSORBED && _particle->_index == 7) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis [7] */ + /* begin component Sphere0=PSD_monitor_4PI() [8] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Sphere0_var._rotation_is_identity) { + if(!_Sphere0_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Sphere0_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Sphere0_var._position_relative, _Sphere0_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 8) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Sphere0_var._name); + DEBUG_STATE(); + class_PSD_monitor_4PI_trace(&_Sphere0_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Sphere0 [8] */ + /* begin component Focus_cut=Shape() [9] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_Focus_cut_var._rotation_is_identity) { + if(!_Focus_cut_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _Focus_cut_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_Focus_cut_var._position_relative, _Focus_cut_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 9) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_Focus_cut_var._name); + DEBUG_STATE(); + if ((( ! _instrument_var._parameters.filter ))) // conditional WHEN execution + class_Shape_trace(&_Focus_cut_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component Focus_cut [9] */ + /* begin component PSD_cut=PSD_monitor() [10] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_PSD_cut_var._rotation_is_identity) { + if(!_PSD_cut_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _PSD_cut_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_PSD_cut_var._position_relative, _PSD_cut_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 10) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_PSD_cut_var._name); + DEBUG_STATE(); + class_PSD_monitor_trace(&_PSD_cut_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component PSD_cut [10] */ + /* begin component BackTrace=Shape() [11] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_BackTrace_var._rotation_is_identity) { + if(!_BackTrace_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _BackTrace_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_BackTrace_var._position_relative, _BackTrace_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 11) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_BackTrace_var._name); + DEBUG_STATE(); + class_Shape_trace(&_BackTrace_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component BackTrace [11] */ + /* begin component PSD_Backtrace=PSD_monitor() [12] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_PSD_Backtrace_var._rotation_is_identity) { + if(!_PSD_Backtrace_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _PSD_Backtrace_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_PSD_Backtrace_var._position_relative, _PSD_Backtrace_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 12) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_PSD_Backtrace_var._name); + DEBUG_STATE(); + class_PSD_monitor_trace(&_PSD_Backtrace_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component PSD_Backtrace [12] */ + /* begin component Start_of_bi=Arm() [13] */ + if (!ABSORBED && _particle->_index == 13) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component Start_of_bi [13] */ + /* begin component bi=bi_spec_ellipse() [14] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bi_var._rotation_is_identity) { + if(!_bi_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 14) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bi_var._name); + DEBUG_STATE(); + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bi [14] */ + /* begin component End_of_bi=Arm() [15] */ + if (!ABSORBED && _particle->_index == 15) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component End_of_bi [15] */ + /* begin component NBOA_drawing_1_end=Guide_four_side() [16] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_NBOA_drawing_1_end_var._rotation_is_identity) { + if(!_NBOA_drawing_1_end_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 16) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_NBOA_drawing_1_end_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component NBOA_drawing_1_end [16] */ + /* begin component g1a2=Guide_four_side() [17] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a2_var._rotation_is_identity) { + if(!_g1a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 17) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a2 [17] */ + /* begin component g1a3=Guide_four_side() [18] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1a3_var._rotation_is_identity) { + if(!_g1a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 18) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1a3 [18] */ + /* begin component g1b1=Guide_four_side() [19] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1b1_var._rotation_is_identity) { + if(!_g1b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 19) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1b1 [19] */ + /* begin component g1c1=Guide_four_side() [20] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g1c1_var._rotation_is_identity) { + if(!_g1c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 20) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g1c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g1c1 [20] */ + /* begin component wfm_position=Arm() [21] */ + if (!ABSORBED && _particle->_index == 21) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_position [21] */ + /* begin component wfm_1_position=Arm() [22] */ + if (!ABSORBED && _particle->_index == 22) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_1_position [22] */ + /* begin component wfmc_1=MultiDiskChopper() [23] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_1_var._rotation_is_identity) { + if(!_wfmc_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 23) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_1 [23] */ + /* begin component pinhole_1=Slit() [24] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_1_var._rotation_is_identity) { + if(!_pinhole_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 24) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_1_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_1 [24] */ + /* begin component wfm_2_position=Arm() [25] */ + if (!ABSORBED && _particle->_index == 25) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component wfm_2_position [25] */ + /* begin component wfmc_2=MultiDiskChopper() [26] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wfmc_2_var._rotation_is_identity) { + if(!_wfmc_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 26) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wfmc_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wfmc_2 [26] */ + /* begin component g2a1=Guide_four_side() [27] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a1_var._rotation_is_identity) { + if(!_g2a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 27) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a1 [27] */ + /* begin component monitor_1_position=Arm() [28] */ + if (!ABSORBED && _particle->_index == 28) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_1_position [28] */ + /* begin component g2a2=Guide_four_side() [29] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2a2_var._rotation_is_identity) { + if(!_g2a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 29) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2a2 [29] */ + /* begin component fo1_position=Arm() [30] */ + if (!ABSORBED && _particle->_index == 30) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo1_position [30] */ + /* begin component fo_chopper_1=MultiDiskChopper() [31] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_1_var._rotation_is_identity) { + if(!_fo_chopper_1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 31) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_1_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_1 [31] */ + /* begin component bp1_position=Arm() [32] */ + if (!ABSORBED && _particle->_index == 32) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp1_position [32] */ + /* begin component bp1_chopper=DiskChopper() [33] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp1_chopper_var._rotation_is_identity) { + if(!_bp1_chopper_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 33) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp1_chopper_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp1_chopper [33] */ + /* begin component g2b1=Guide_four_side() [34] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b1_var._rotation_is_identity) { + if(!_g2b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 34) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b1 [34] */ + /* begin component g2b2=Guide_four_side() [35] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b2_var._rotation_is_identity) { + if(!_g2b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 35) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b2 [35] */ + /* begin component g2b3=Guide_four_side() [36] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b3_var._rotation_is_identity) { + if(!_g2b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 36) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b3 [36] */ + /* begin component g2b4=Guide_four_side() [37] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2b4_var._rotation_is_identity) { + if(!_g2b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 37) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2b4 [37] */ + /* begin component fo2_position=Arm() [38] */ + if (!ABSORBED && _particle->_index == 38) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo2_position [38] */ + /* begin component fo_chopper_2=MultiDiskChopper() [39] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_2_var._rotation_is_identity) { + if(!_fo_chopper_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 39) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_2 [39] */ + /* begin component bp2_position=Arm() [40] */ + if (!ABSORBED && _particle->_index == 40) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component bp2_position [40] */ + /* begin component bp_chopper2=DiskChopper() [41] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_bp_chopper2_var._rotation_is_identity) { + if(!_bp_chopper2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 41) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_bp_chopper2_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component bp_chopper2 [41] */ + /* begin component g2c1=Guide_four_side() [42] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g2c1_var._rotation_is_identity) { + if(!_g2c1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 42) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g2c1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g2c1 [42] */ + /* begin component t0_start_position=Arm() [43] */ + if (!ABSORBED && _particle->_index == 43) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_start_position [43] */ + /* begin component t0_chopper_alpha=DiskChopper() [44] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_alpha_var._rotation_is_identity) { + if(!_t0_chopper_alpha_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 44) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_alpha_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_alpha [44] */ + /* begin component t0_end_position=Arm() [45] */ + if (!ABSORBED && _particle->_index == 45) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component t0_end_position [45] */ + /* begin component t0_chopper_beta=DiskChopper() [46] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_t0_chopper_beta_var._rotation_is_identity) { + if(!_t0_chopper_beta_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 46) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_t0_chopper_beta_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN execution + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component t0_chopper_beta [46] */ + /* begin component g3a1=Guide_four_side() [47] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a1_var._rotation_is_identity) { + if(!_g3a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 47) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a1 [47] */ + /* begin component g3a2=Guide_four_side() [48] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3a2_var._rotation_is_identity) { + if(!_g3a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 48) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3a2 [48] */ + /* begin component fo3_position=Arm() [49] */ + if (!ABSORBED && _particle->_index == 49) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo3_position [49] */ + /* begin component fo_chopper_3=MultiDiskChopper() [50] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_3_var._rotation_is_identity) { + if(!_fo_chopper_3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 50) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_3_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_3 [50] */ + /* begin component g3b1=Guide_four_side() [51] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g3b1_var._rotation_is_identity) { + if(!_g3b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 51) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g3b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g3b1 [51] */ + /* begin component g4a1=Guide_four_side() [52] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a1_var._rotation_is_identity) { + if(!_g4a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 52) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a1 [52] */ + /* begin component monitor_2_position=Arm() [53] */ + if (!ABSORBED && _particle->_index == 53) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_2_position [53] */ + /* begin component g4a2=Guide_four_side() [54] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a2_var._rotation_is_identity) { + if(!_g4a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 54) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a2 [54] */ + /* begin component g4a3=Guide_four_side() [55] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4a3_var._rotation_is_identity) { + if(!_g4a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 55) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4a3 [55] */ + /* begin component fo4_position=Arm() [56] */ + if (!ABSORBED && _particle->_index == 56) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo4_position [56] */ + /* begin component fo_chopper_4=MultiDiskChopper() [57] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_4_var._rotation_is_identity) { + if(!_fo_chopper_4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 57) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_4_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_4 [57] */ + /* begin component g4b1=Guide_four_side() [58] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b1_var._rotation_is_identity) { + if(!_g4b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 58) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b1 [58] */ + /* begin component g4b2=Guide_four_side() [59] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b2_var._rotation_is_identity) { + if(!_g4b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 59) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b2 [59] */ + /* begin component g4b3=Guide_four_side() [60] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b3_var._rotation_is_identity) { + if(!_g4b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 60) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b3 [60] */ + /* begin component g4b4=Guide_four_side() [61] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b4_var._rotation_is_identity) { + if(!_g4b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 61) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b4 [61] */ + /* begin component g4b5=Guide_four_side() [62] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b5_var._rotation_is_identity) { + if(!_g4b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 62) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b5 [62] */ + /* begin component g4b6=Guide_four_side() [63] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g4b6_var._rotation_is_identity) { + if(!_g4b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 63) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g4b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g4b6 [63] */ + /* begin component g5a1=Guide_four_side() [64] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5a1_var._rotation_is_identity) { + if(!_g5a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 64) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5a1 [64] */ + /* begin component fo5_position=Arm() [65] */ + if (!ABSORBED && _particle->_index == 65) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component fo5_position [65] */ + /* begin component fo_chopper_5=MultiDiskChopper() [66] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_fo_chopper_5_var._rotation_is_identity) { + if(!_fo_chopper_5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 66) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_fo_chopper_5_var._name); + DEBUG_STATE(); + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN execution + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component fo_chopper_5 [66] */ + /* begin component g5b1=Guide_four_side() [67] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b1_var._rotation_is_identity) { + if(!_g5b1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 67) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b1 [67] */ + /* begin component g5b2=Guide_four_side() [68] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b2_var._rotation_is_identity) { + if(!_g5b2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 68) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b2 [68] */ + /* begin component g5b3=Guide_four_side() [69] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b3_var._rotation_is_identity) { + if(!_g5b3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 69) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b3 [69] */ + /* begin component g5b4=Guide_four_side() [70] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b4_var._rotation_is_identity) { + if(!_g5b4_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 70) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b4_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b4 [70] */ + /* begin component g5b5=Guide_four_side() [71] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b5_var._rotation_is_identity) { + if(!_g5b5_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 71) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b5_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b5 [71] */ + /* begin component g5b6=Guide_four_side() [72] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g5b6_var._rotation_is_identity) { + if(!_g5b6_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 72) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g5b6_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g5b6 [72] */ + /* begin component g6a1=Guide_four_side() [73] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a1_var._rotation_is_identity) { + if(!_g6a1_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 73) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a1_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a1 [73] */ + /* begin component g6a2=Guide_four_side() [74] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a2_var._rotation_is_identity) { + if(!_g6a2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 74) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a2_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a2 [74] */ + /* begin component g6a3=Guide_four_side() [75] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_g6a3_var._rotation_is_identity) { + if(!_g6a3_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 75) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_g6a3_var._name); + DEBUG_STATE(); + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component g6a3 [75] */ + /* begin component guide_end=Arm() [76] */ + if (!ABSORBED && _particle->_index == 76) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component guide_end [76] */ + /* begin component monitor_3_position=Arm() [77] */ + if (!ABSORBED && _particle->_index == 77) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component monitor_3_position [77] */ + /* begin component start_backend=Arm() [78] */ + if (!ABSORBED && _particle->_index == 78) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component start_backend [78] */ + /* begin component optical_axis_backend=Arm() [79] */ + if (!ABSORBED && _particle->_index == 79) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component optical_axis_backend [79] */ + /* begin component pinhole_2=Slit() [80] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_pinhole_2_var._rotation_is_identity) { + if(!_pinhole_2_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 80) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_pinhole_2_var._name); + DEBUG_STATE(); + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component pinhole_2 [80] */ + /* begin component graph=Graphite_Diffuser() [81] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_graph_var._rotation_is_identity) { + if(!_graph_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 81) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_graph_var._name); + DEBUG_STATE(); + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component graph [81] */ + /* begin component sample_monitor_arm=Arm() [82] */ + if (!ABSORBED && _particle->_index == 82) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_monitor_arm [82] */ + /* begin component sample_PSD=Monitor_nD() [83] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_sample_PSD_var._rotation_is_identity) { + if(!_sample_PSD_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 83) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_sample_PSD_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component sample_PSD [83] */ + /* begin component profile_x=Monitor_nD() [84] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_x_var._rotation_is_identity) { + if(!_profile_x_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 84) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_x_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_x [84] */ + /* begin component profile_y=Monitor_nD() [85] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_profile_y_var._rotation_is_identity) { + if(!_profile_y_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 85) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_profile_y_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component profile_y [85] */ + /* begin component wavelength=Monitor_nD() [86] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_var._rotation_is_identity) { + if(!_wavelength_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 86) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength [86] */ + /* begin component tof=Monitor_nD() [87] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_tof_var._rotation_is_identity) { + if(!_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 87) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component tof [87] */ + /* begin component wavelength_tof=Monitor_nD() [88] */ + if (!_particle->flag_nocoordschange) { // flag activated by JUMP to pass coords change + if (_wavelength_tof_var._rotation_is_identity) { + if(!_wavelength_tof_var._position_relative_is_zero) { + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + } + } else { + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + } + } + if (!ABSORBED && _particle->_index == 88) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle_save = *_particle; + DEBUG_COMP(_wavelength_tof_var._name); + DEBUG_STATE(); + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + if (!ABSORBED) { DEBUG_STATE(); } + } /* end component wavelength_tof [88] */ + /* begin component sample_position=Arm() [89] */ + if (!ABSORBED && _particle->_index == 89) { + _particle->flag_nocoordschange=0; /* Reset if we came here from a JUMP */ + _particle->_index++; + } /* end component sample_position [89] */ + if (_particle->_index > 89) + ABSORBED++; /* absorbed when passed all components */ + } /* while !ABSORBED */ + + DEBUG_LEAVE() + particle_restore(_particle, &_particle_save); + DEBUG_STATE() + // If TOF_TRAIN we need to nuke internal arrays! + #ifdef TOF_TRAIN + if (_particle->t_offset) free(_particle->t_offset); + if (_particle->p_trains) free(_particle->p_trains); + if (_particle->alive_trains) free(_particle->alive_trains); + #endif + + return(_particle->_index); +} /* raytrace */ + +/* loop to generate events and call raytrace() propagate them */ +void raytrace_all(unsigned long long ncount, unsigned long seed) { + + /* CPU-loop */ + unsigned long long loops; + loops = ceil((double)ncount/gpu_innerloop); + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #ifdef OPENACC + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around GPU kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + #endif + + /* if on GPU, re-nullify printf */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + + #pragma acc parallel loop num_gangs(numgangs) vector_length(vecsize) + for (unsigned long pidx=0 ; pidx < gpu_innerloop ; pidx++) { + _class_particle particleN = mcgenstate(); // initial particle + _class_particle* _particle = &particleN; + particleN._uid = pidx; + #ifdef USE_MPI + particleN._uid += mpi_node_rank * ncount; + #endif + + srandom(_hash((pidx+1)*(seed+1))); + + raytrace(_particle); + } /* inner for */ + seed = seed+gpu_innerloop; + } /* CPU for */ + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + MPI_MASTER( + printf("*** TRACE end *** \n"); + ); +} /* raytrace_all */ + +#endif //no-FUNNEL + +#ifdef FUNNEL +// Alternative raytrace algorithm which iterates all particles through +// one component at the time, can remove absorbs from the next loop and +// switch between cpu/gpu. +void raytrace_all_funnel(unsigned long long ncount, unsigned long seed) { + + // set up outer (CPU) loop / particle batches + unsigned long long loops; + + /* if on GPU, printf has been globally nullified, re-enable here */ + #ifdef OPENACC + #undef strlen + #undef strcmp + #undef exit + #undef printf + #undef sprintf + #undef fprintf + #endif + #ifdef OPENACC + loops = ceil((double)ncount/gpu_innerloop); + if (ncount>gpu_innerloop) { + printf("Defining %llu CPU loops around kernel and adjusting ncount\n",loops); + mcset_ncount(loops*gpu_innerloop); + } else { + #endif + loops=1; + gpu_innerloop = ncount; + #ifdef OPENACC + } + #endif + + // create particles struct and pointer arrays (same memory used by all batches) + _class_particle* particles = malloc(gpu_innerloop*sizeof(_class_particle)); + _class_particle* pbuffer = malloc(gpu_innerloop*sizeof(_class_particle)); + long livebatchsize = gpu_innerloop; + + #undef ABSORB0 + #undef ABSORB + #define ABSORB0 do { DEBUG_ABSORB(); MAGNET_OFF; ABSORBED++; } while(0) + #define ABSORB ABSORB0 + // outer loop / particle batches + for (unsigned long long cloop=0; cloop1) fprintf(stdout, "%d..", (int)cloop); fflush(stdout); + + // init particles + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + // generate particle state, set loop index and seed + particles[pidx] = mcgenstate(); + _class_particle* _particle = particles + pidx; + _particle->_uid = pidx; + #ifdef USE_MPI + _particle->_uid += mpi_node_rank * ncount; + #endif + srandom(_hash((pidx+1)*(seed+1))); // _particle->state usage built into srandom macro + } + + // iterate components + + #pragma acc parallel loop present(particles[0:livebatchsize]) + for (unsigned long pidx=0 ; pidx < livebatchsize ; pidx++) { + _class_particle* _particle = &particles[pidx]; + _class_particle _particle_save; + + // Origin + if (!ABSORBED && _particle->_index == 1) { +#ifndef MULTICORE + if (_Origin_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Origin_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Origin_var._position_relative, _Origin_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Progress_bar_trace(&_Origin_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // vinROT2 + if (!ABSORBED && _particle->_index == 2) { + _particle->_index++; + } + + // vinROT1 + if (!ABSORBED && _particle->_index == 3) { + _particle->_index++; + } + + // vin + if (!ABSORBED && _particle->_index == 4) { +#ifndef MULTICORE + if (_vin_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _vin_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_vin_var._position_relative, _vin_var._rotation_relative, _particle); + _particle_save = *_particle; + class_MCPL_input_once_trace(&_vin_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Sphere1 + if (!ABSORBED && _particle->_index == 5) { +#ifndef MULTICORE + if (_Sphere1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Sphere1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Sphere1_var._position_relative, _Sphere1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_PSD_monitor_4PI_trace(&_Sphere1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Source + if (!ABSORBED && _particle->_index == 6) { +#ifndef MULTICORE + if (_Source_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Source_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Source_var._position_relative, _Source_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( 0 == 1 ))) // conditional WHEN + class_ESS_butterfly_trace(&_Source_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // optical_axis + if (!ABSORBED && _particle->_index == 7) { + _particle->_index++; + } + + // Sphere0 + if (!ABSORBED && _particle->_index == 8) { +#ifndef MULTICORE + if (_Sphere0_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Sphere0_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Sphere0_var._position_relative, _Sphere0_var._rotation_relative, _particle); + _particle_save = *_particle; + class_PSD_monitor_4PI_trace(&_Sphere0_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Focus_cut + if (!ABSORBED && _particle->_index == 9) { +#ifndef MULTICORE + if (_Focus_cut_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _Focus_cut_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_Focus_cut_var._position_relative, _Focus_cut_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( ! _instrument_var._parameters.filter ))) // conditional WHEN + class_Shape_trace(&_Focus_cut_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // PSD_cut + if (!ABSORBED && _particle->_index == 10) { +#ifndef MULTICORE + if (_PSD_cut_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _PSD_cut_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_PSD_cut_var._position_relative, _PSD_cut_var._rotation_relative, _particle); + _particle_save = *_particle; + class_PSD_monitor_trace(&_PSD_cut_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // BackTrace + if (!ABSORBED && _particle->_index == 11) { +#ifndef MULTICORE + if (_BackTrace_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _BackTrace_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_BackTrace_var._position_relative, _BackTrace_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Shape_trace(&_BackTrace_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // PSD_Backtrace + if (!ABSORBED && _particle->_index == 12) { +#ifndef MULTICORE + if (_PSD_Backtrace_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _PSD_Backtrace_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_PSD_Backtrace_var._position_relative, _PSD_Backtrace_var._rotation_relative, _particle); + _particle_save = *_particle; + class_PSD_monitor_trace(&_PSD_Backtrace_var, _particle); /* contains EXTEND code */ + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // Start_of_bi + if (!ABSORBED && _particle->_index == 13) { + _particle->_index++; + } + + // bi + if (!ABSORBED && _particle->_index == 14) { +#ifndef MULTICORE + if (_bi_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bi_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bi_var._position_relative, _bi_var._rotation_relative, _particle); + _particle_save = *_particle; + class_bi_spec_ellipse_trace(&_bi_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // End_of_bi + if (!ABSORBED && _particle->_index == 15) { + _particle->_index++; + } + + // NBOA_drawing_1_end + if (!ABSORBED && _particle->_index == 16) { +#ifndef MULTICORE + if (_NBOA_drawing_1_end_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _NBOA_drawing_1_end_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_NBOA_drawing_1_end_var._position_relative, _NBOA_drawing_1_end_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_NBOA_drawing_1_end_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a2 + if (!ABSORBED && _particle->_index == 17) { +#ifndef MULTICORE + if (_g1a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a2_var._position_relative, _g1a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1a3 + if (!ABSORBED && _particle->_index == 18) { +#ifndef MULTICORE + if (_g1a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1a3_var._position_relative, _g1a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1b1 + if (!ABSORBED && _particle->_index == 19) { +#ifndef MULTICORE + if (_g1b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1b1_var._position_relative, _g1b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g1c1 + if (!ABSORBED && _particle->_index == 20) { +#ifndef MULTICORE + if (_g1c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g1c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g1c1_var._position_relative, _g1c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g1c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_position + if (!ABSORBED && _particle->_index == 21) { + _particle->_index++; + } + + // wfm_1_position + if (!ABSORBED && _particle->_index == 22) { + _particle->_index++; + } + + // wfmc_1 + if (!ABSORBED && _particle->_index == 23) { +#ifndef MULTICORE + if (_wfmc_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_1_var._position_relative, _wfmc_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // pinhole_1 + if (!ABSORBED && _particle->_index == 24) { +#ifndef MULTICORE + if (_pinhole_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_1_var._position_relative, _pinhole_1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wfm_2_position + if (!ABSORBED && _particle->_index == 25) { + _particle->_index++; + } + + // wfmc_2 + if (!ABSORBED && _particle->_index == 26) { +#ifndef MULTICORE + if (_wfmc_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wfmc_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wfmc_2_var._position_relative, _wfmc_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_wfmc_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2a1 + if (!ABSORBED && _particle->_index == 27) { +#ifndef MULTICORE + if (_g2a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a1_var._position_relative, _g2a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_1_position + if (!ABSORBED && _particle->_index == 28) { + _particle->_index++; + } + + // g2a2 + if (!ABSORBED && _particle->_index == 29) { +#ifndef MULTICORE + if (_g2a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2a2_var._position_relative, _g2a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo1_position + if (!ABSORBED && _particle->_index == 30) { + _particle->_index++; + } + + // fo_chopper_1 + if (!ABSORBED && _particle->_index == 31) { +#ifndef MULTICORE + if (_fo_chopper_1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_1_var._position_relative, _fo_chopper_1_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp1_position + if (!ABSORBED && _particle->_index == 32) { + _particle->_index++; + } + + // bp1_chopper + if (!ABSORBED && _particle->_index == 33) { +#ifndef MULTICORE + if (_bp1_chopper_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp1_chopper_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp1_chopper_var._position_relative, _bp1_chopper_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp1_chopper_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b1 + if (!ABSORBED && _particle->_index == 34) { +#ifndef MULTICORE + if (_g2b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b1_var._position_relative, _g2b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b2 + if (!ABSORBED && _particle->_index == 35) { +#ifndef MULTICORE + if (_g2b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b2_var._position_relative, _g2b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b3 + if (!ABSORBED && _particle->_index == 36) { +#ifndef MULTICORE + if (_g2b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b3_var._position_relative, _g2b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2b4 + if (!ABSORBED && _particle->_index == 37) { +#ifndef MULTICORE + if (_g2b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2b4_var._position_relative, _g2b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo2_position + if (!ABSORBED && _particle->_index == 38) { + _particle->_index++; + } + + // fo_chopper_2 + if (!ABSORBED && _particle->_index == 39) { +#ifndef MULTICORE + if (_fo_chopper_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_2_var._position_relative, _fo_chopper_2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // bp2_position + if (!ABSORBED && _particle->_index == 40) { + _particle->_index++; + } + + // bp_chopper2 + if (!ABSORBED && _particle->_index == 41) { +#ifndef MULTICORE + if (_bp_chopper2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _bp_chopper2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_bp_chopper2_var._position_relative, _bp_chopper2_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_bp_chopper2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g2c1 + if (!ABSORBED && _particle->_index == 42) { +#ifndef MULTICORE + if (_g2c1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g2c1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g2c1_var._position_relative, _g2c1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g2c1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_start_position + if (!ABSORBED && _particle->_index == 43) { + _particle->_index++; + } + + // t0_chopper_alpha + if (!ABSORBED && _particle->_index == 44) { +#ifndef MULTICORE + if (_t0_chopper_alpha_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_alpha_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_alpha_var._position_relative, _t0_chopper_alpha_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_alpha_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // t0_end_position + if (!ABSORBED && _particle->_index == 45) { + _particle->_index++; + } + + // t0_chopper_beta + if (!ABSORBED && _particle->_index == 46) { +#ifndef MULTICORE + if (_t0_chopper_beta_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _t0_chopper_beta_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_t0_chopper_beta_var._position_relative, _t0_chopper_beta_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers >= 1 ))) // conditional WHEN + class_DiskChopper_trace(&_t0_chopper_beta_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a1 + if (!ABSORBED && _particle->_index == 47) { +#ifndef MULTICORE + if (_g3a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a1_var._position_relative, _g3a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3a2 + if (!ABSORBED && _particle->_index == 48) { +#ifndef MULTICORE + if (_g3a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3a2_var._position_relative, _g3a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo3_position + if (!ABSORBED && _particle->_index == 49) { + _particle->_index++; + } + + // fo_chopper_3 + if (!ABSORBED && _particle->_index == 50) { +#ifndef MULTICORE + if (_fo_chopper_3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_3_var._position_relative, _fo_chopper_3_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g3b1 + if (!ABSORBED && _particle->_index == 51) { +#ifndef MULTICORE + if (_g3b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g3b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g3b1_var._position_relative, _g3b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g3b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a1 + if (!ABSORBED && _particle->_index == 52) { +#ifndef MULTICORE + if (_g4a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a1_var._position_relative, _g4a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // monitor_2_position + if (!ABSORBED && _particle->_index == 53) { + _particle->_index++; + } + + // g4a2 + if (!ABSORBED && _particle->_index == 54) { +#ifndef MULTICORE + if (_g4a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a2_var._position_relative, _g4a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4a3 + if (!ABSORBED && _particle->_index == 55) { +#ifndef MULTICORE + if (_g4a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4a3_var._position_relative, _g4a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo4_position + if (!ABSORBED && _particle->_index == 56) { + _particle->_index++; + } + + // fo_chopper_4 + if (!ABSORBED && _particle->_index == 57) { +#ifndef MULTICORE + if (_fo_chopper_4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_4_var._position_relative, _fo_chopper_4_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b1 + if (!ABSORBED && _particle->_index == 58) { +#ifndef MULTICORE + if (_g4b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b1_var._position_relative, _g4b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b2 + if (!ABSORBED && _particle->_index == 59) { +#ifndef MULTICORE + if (_g4b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b2_var._position_relative, _g4b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b3 + if (!ABSORBED && _particle->_index == 60) { +#ifndef MULTICORE + if (_g4b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b3_var._position_relative, _g4b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b4 + if (!ABSORBED && _particle->_index == 61) { +#ifndef MULTICORE + if (_g4b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b4_var._position_relative, _g4b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b5 + if (!ABSORBED && _particle->_index == 62) { +#ifndef MULTICORE + if (_g4b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b5_var._position_relative, _g4b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g4b6 + if (!ABSORBED && _particle->_index == 63) { +#ifndef MULTICORE + if (_g4b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g4b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g4b6_var._position_relative, _g4b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g4b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5a1 + if (!ABSORBED && _particle->_index == 64) { +#ifndef MULTICORE + if (_g5a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5a1_var._position_relative, _g5a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // fo5_position + if (!ABSORBED && _particle->_index == 65) { + _particle->_index++; + } + + // fo_chopper_5 + if (!ABSORBED && _particle->_index == 66) { +#ifndef MULTICORE + if (_fo_chopper_5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _fo_chopper_5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_fo_chopper_5_var._position_relative, _fo_chopper_5_var._rotation_relative, _particle); + _particle_save = *_particle; + if ((( _instrument_var._parameters.choppers == 2 ))) // conditional WHEN + class_MultiDiskChopper_trace(&_fo_chopper_5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b1 + if (!ABSORBED && _particle->_index == 67) { +#ifndef MULTICORE + if (_g5b1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b1_var._position_relative, _g5b1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b2 + if (!ABSORBED && _particle->_index == 68) { +#ifndef MULTICORE + if (_g5b2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b2_var._position_relative, _g5b2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b3 + if (!ABSORBED && _particle->_index == 69) { +#ifndef MULTICORE + if (_g5b3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b3_var._position_relative, _g5b3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b4 + if (!ABSORBED && _particle->_index == 70) { +#ifndef MULTICORE + if (_g5b4_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b4_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b4_var._position_relative, _g5b4_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b4_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b5 + if (!ABSORBED && _particle->_index == 71) { +#ifndef MULTICORE + if (_g5b5_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b5_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b5_var._position_relative, _g5b5_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b5_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g5b6 + if (!ABSORBED && _particle->_index == 72) { +#ifndef MULTICORE + if (_g5b6_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g5b6_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g5b6_var._position_relative, _g5b6_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g5b6_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a1 + if (!ABSORBED && _particle->_index == 73) { +#ifndef MULTICORE + if (_g6a1_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a1_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a1_var._position_relative, _g6a1_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a1_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a2 + if (!ABSORBED && _particle->_index == 74) { +#ifndef MULTICORE + if (_g6a2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a2_var._position_relative, _g6a2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // g6a3 + if (!ABSORBED && _particle->_index == 75) { +#ifndef MULTICORE + if (_g6a3_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _g6a3_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_g6a3_var._position_relative, _g6a3_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Guide_four_side_trace(&_g6a3_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // guide_end + if (!ABSORBED && _particle->_index == 76) { + _particle->_index++; + } + + // monitor_3_position + if (!ABSORBED && _particle->_index == 77) { + _particle->_index++; + } + + // start_backend + if (!ABSORBED && _particle->_index == 78) { + _particle->_index++; + } + + // optical_axis_backend + if (!ABSORBED && _particle->_index == 79) { + _particle->_index++; + } + + // pinhole_2 + if (!ABSORBED && _particle->_index == 80) { +#ifndef MULTICORE + if (_pinhole_2_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _pinhole_2_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_pinhole_2_var._position_relative, _pinhole_2_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Slit_trace(&_pinhole_2_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // graph + if (!ABSORBED && _particle->_index == 81) { +#ifndef MULTICORE + if (_graph_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _graph_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_graph_var._position_relative, _graph_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Graphite_Diffuser_trace(&_graph_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_monitor_arm + if (!ABSORBED && _particle->_index == 82) { + _particle->_index++; + } + + // sample_PSD + if (!ABSORBED && _particle->_index == 83) { +#ifndef MULTICORE + if (_sample_PSD_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _sample_PSD_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_sample_PSD_var._position_relative, _sample_PSD_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_sample_PSD_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_x + if (!ABSORBED && _particle->_index == 84) { +#ifndef MULTICORE + if (_profile_x_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_x_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_x_var._position_relative, _profile_x_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_x_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // profile_y + if (!ABSORBED && _particle->_index == 85) { +#ifndef MULTICORE + if (_profile_y_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _profile_y_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_profile_y_var._position_relative, _profile_y_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_profile_y_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength + if (!ABSORBED && _particle->_index == 86) { +#ifndef MULTICORE + if (_wavelength_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_var._position_relative, _wavelength_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // tof + if (!ABSORBED && _particle->_index == 87) { +#ifndef MULTICORE + if (_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_tof_var._position_relative, _tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // wavelength_tof + if (!ABSORBED && _particle->_index == 88) { +#ifndef MULTICORE + if (_wavelength_tof_var._rotation_is_identity) + coords_get(coords_add(coords_set(x,y,z), _wavelength_tof_var._position_relative),&x, &y, &z); + else +#endif + mccoordschange(_wavelength_tof_var._position_relative, _wavelength_tof_var._rotation_relative, _particle); + _particle_save = *_particle; + class_Monitor_nD_trace(&_wavelength_tof_var, _particle); + if (_particle->_restore) + particle_restore(_particle, &_particle_save); + _particle->_index++; + } + + // sample_position + if (!ABSORBED && _particle->_index == 89) { + _particle->_index++; + } + + } + + // jump to next viable seed + seed = seed + gpu_innerloop; + } // outer loop / particle batches + + free(particles); + free(pbuffer); + + printf("\n"); +} /* raytrace_all_funnel */ +#endif // FUNNEL + +#undef x +#undef y +#undef z +#undef vx +#undef vy +#undef vz +#undef t +#undef sx +#undef sy +#undef sz +#undef p +#undef mcgravitation +#undef mcMagnet +#undef allow_backprop +#undef _mctmp_a +#undef _mctmp_b +#undef _mctmp_c +#ifdef OPENACC +#undef strlen +#undef strcmp +#undef exit +#undef printf +#undef sprintf +#undef fprintf +#endif +#undef SCATTERED +#undef RESTORE +#undef RESTORE_NEUTRON +#undef STORE_NEUTRON +#undef ABSORBED +#undef ABSORB +#undef ABSORB0 +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' and components SAVE +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_save(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_save] component Origin=Progress_bar() SAVE [Progress_bar:0]"); + + MPI_MASTER (fprintf (stdout, "\nSave [%s]\n", instrument_name);); + if (profile && strlen (profile) && strcmp (profile, "NULL") && strcmp (profile, "0")) { + char filename[256]; + if (!strlen (profile) || !strcmp (profile, "NULL") || !strcmp (profile, "0")) + strcpy (filename, instrument_name); + else + strcpy (filename, profile); + DETECTOR_OUT_1D ("Intensity profiler", "Component index [1]", "Intensity", "prof", 1, mcNUMCOMP, mcNUMCOMP - 1, &(instrument->counter_N[1]), + &(instrument->counter_P[1]), &(instrument->counter_P2[1]), filename); + } + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_save */ + +_class_MCPL_input_once *class_MCPL_input_once_save(_class_MCPL_input_once *_comp +) { + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_save] component vin=MCPL_input_once() SAVE [MCPL_input_once:0]"); + + #ifndef OPENACC + if (!preload) + mcpl_close_file (inputfile); + #endif + if (particles != NULL) + free (particles); + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return(_comp); +} /* class_MCPL_input_once_save */ + +_class_PSD_monitor_4PI *class_PSD_monitor_4PI_save(_class_PSD_monitor_4PI *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_save] component Sphere1=PSD_monitor_4PI() SAVE [PSD_monitor_4PI:0]"); + + if (!nowritefile) { + DETECTOR_OUT_2D ("4PI PSD monitor", "Longitude [deg]", "Latitude [deg]", -180, 180, -90, 90, nx, ny, &PSD_N[0][0], &PSD_p[0][0], &PSD_p2[0][0], filename); + } + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_4PI_save */ + +_class_PSD_monitor *class_PSD_monitor_save(_class_PSD_monitor *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_save] component PSD_cut=PSD_monitor() SAVE [PSD_monitor:0]"); + + if (!nowritefile) { + DETECTOR_OUT_2D ("PSD monitor", "X position [cm]", "Y position [cm]", xmin * 100.0, xmax * 100.0, ymin * 100.0, ymax * 100.0, nx, ny, &PSD_N[0][0], + &PSD_p[0][0], &PSD_p2[0][0], filename); + } + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_save */ + +_class_Monitor_nD *class_Monitor_nD_save(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_save] component sample_PSD=Monitor_nD() SAVE [Monitor_nD:0]"); + + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_save */ + + + +int save(FILE *handle) { /* called by mccode_main for ODIN_MCPL_baseline:SAVE */ + if (!handle) siminfo_init(NULL); + + /* Instrument 'ODIN_MCPL_baseline' SAVE */ + SIG_MESSAGE("[ODIN_MCPL_baseline] SAVE [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) + #define target_tsplit (instrument->_parameters.target_tsplit) + #define filter (instrument->_parameters.filter) + #define repeat (instrument->_parameters.repeat) + #define v_smear (instrument->_parameters.v_smear) + #define pos_smear (instrument->_parameters.pos_smear) + #define dir_smear (instrument->_parameters.dir_smear) +{ + #ifndef _MSC_EXTENSIONS + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); + #endif +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + #undef target_tsplit + #undef filter + #undef repeat + #undef v_smear + #undef pos_smear + #undef dir_smear + /* call iteratively all components SAVE */ + class_Progress_bar_save(&_Origin_var); + + + + class_MCPL_input_once_save(&_vin_var); + + class_PSD_monitor_4PI_save(&_Sphere1_var); + + + + class_PSD_monitor_4PI_save(&_Sphere0_var); + + + class_PSD_monitor_save(&_PSD_cut_var); + + + class_PSD_monitor_save(&_PSD_Backtrace_var); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + class_Monitor_nD_save(&_sample_PSD_var); + + class_Monitor_nD_save(&_profile_x_var); + + class_Monitor_nD_save(&_profile_y_var); + + class_Monitor_nD_save(&_wavelength_var); + + class_Monitor_nD_save(&_tof_var); + + class_Monitor_nD_save(&_wavelength_tof_var); + + + if (!handle) siminfo_close(); + + return(0); +} /* save */ + +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' and components FINALLY +***************************************************************************** */ + +_class_Progress_bar *class_Progress_bar_finally(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_finally] component Origin=Progress_bar() FINALLY [Progress_bar:0]"); + + time_t NowTime; + time (&NowTime); + fprintf (stdout, "\nFinally [%s: %s]. Time: ", instrument_name, dirname ? dirname : "."); + if (difftime (NowTime, StartTime) < 60.0) + fprintf (stdout, "%g [s] ", difftime (NowTime, StartTime)); + else if (difftime (NowTime, StartTime) > 3600.0) + fprintf (stdout, "%g [h] ", difftime (NowTime, StartTime) / 3600.0); + else + fprintf (stdout, "%g [min] ", difftime (NowTime, StartTime) / 60.0); + fprintf (stdout, "\n"); + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_finally */ + +_class_MCPL_input_once *class_MCPL_input_once_finally(_class_MCPL_input_once *_comp +) { + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_finally] component vin=MCPL_input_once() FINALLY [MCPL_input_once:0]"); + + if (times_replayed && v_smear == 0 && pos_smear == 0 && dir_smear == 0) { + printf ("Warning (%s): Forced to replay particle list %d time(s) without smearing\n", NAME_CURRENT_COMP, times_replayed); + } + char mpi_nodes_message[256]; + mpi_nodes_message[0] = '\0'; + uint64_t requested_neutrons = (uint64_t)mcget_ncount (); + + #if defined (USE_MPI) + uint64_t accumulated[4], distributed[4]; + distributed[0] = used_neutrons; + distributed[1] = read_neutrons; + distributed[2] = emitted_neutrons; + distributed[3] = requested_neutrons; + MPI_Reduce (&distributed, &accumulated, 4, MPI_UINT64_T, MPI_SUM, 0, MPI_COMM_WORLD); + if (mpi_node_rank == 0) { + used_neutrons = accumulated[0]; + read_neutrons = accumulated[1]; + emitted_neutrons = accumulated[2]; + requested_neutrons = accumulated[3]; + sprintf (mpi_nodes_message, "he %d MPI node copies of t", mpi_node_count); + #endif + if (used_neutrons != read_neutrons) { + fprintf (stdout, "Message(%s): You have used %llu of %llu neutrons available in the MCPL file.\n", NAME_CURRENT_COMP, used_neutrons, read_neutrons); + } + if (requested_neutrons != used_neutrons) { + char bad_particle_message[512]; + bad_particle_message[0] = '\0'; + if (used_neutrons != nparticles) { + sprintf (bad_particle_message, " (of which %llu are neutrons within the requested energy interval)", used_neutrons); + } + fprintf (stderr, + "Warning (%s): You requested %llu neutrons from a file which contains %llu particles in general%s." + " T%shis component emitted %llu neutrons in total. Please examine the recorded intensities carefully.\n", + NAME_CURRENT_COMP, requested_neutrons, nparticles, bad_particle_message, mpi_nodes_message, emitted_neutrons); + } + #if defined (USE_MPI) + } + #endif + free (resolved_filename); + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return(_comp); +} /* class_MCPL_input_once_finally */ + +_class_PSD_monitor_4PI *class_PSD_monitor_4PI_finally(_class_PSD_monitor_4PI *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_finally] component Sphere1=PSD_monitor_4PI() FINALLY [PSD_monitor_4PI:0]"); + + destroy_darr2d (PSD_N); + destroy_darr2d (PSD_p); + destroy_darr2d (PSD_p2); + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_4PI_finally */ + +_class_PSD_monitor *class_PSD_monitor_finally(_class_PSD_monitor *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_finally] component PSD_cut=PSD_monitor() FINALLY [PSD_monitor:0]"); + + destroy_darr2d(PSD_N); + destroy_darr2d(PSD_p); + destroy_darr2d(PSD_p2); + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_finally */ + +_class_Guide_four_side *class_Guide_four_side_finally(_class_Guide_four_side *_comp +) { + #define RIreflect (_comp->_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_finally] component NBOA_drawing_1_end=Guide_four_side() FINALLY [Guide_four_side:0]"); + + + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_finally */ + +_class_MultiDiskChopper *class_MultiDiskChopper_finally(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_finally] component wfmc_1=MultiDiskChopper() FINALLY [MultiDiskChopper:0]"); + + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_finally */ + +_class_Monitor_nD *class_Monitor_nD_finally(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_finally] component sample_PSD=Monitor_nD() FINALLY [Monitor_nD:0]"); + + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_finally */ + + + +int finally(void) { /* called by mccode_main for ODIN_MCPL_baseline:FINALLY */ +#pragma acc update host(_Origin_var) +#pragma acc update host(_vinROT2_var) +#pragma acc update host(_vinROT1_var) +#pragma acc update host(_vin_var) +#pragma acc update host(_Sphere1_var) +#pragma acc update host(_Source_var) +#pragma acc update host(_optical_axis_var) +#pragma acc update host(_Sphere0_var) +#pragma acc update host(_Focus_cut_var) +#pragma acc update host(_PSD_cut_var) +#pragma acc update host(_BackTrace_var) +#pragma acc update host(_PSD_Backtrace_var) +#pragma acc update host(_Start_of_bi_var) +#pragma acc update host(_bi_var) +#pragma acc update host(_End_of_bi_var) +#pragma acc update host(_NBOA_drawing_1_end_var) +#pragma acc update host(_g1a2_var) +#pragma acc update host(_g1a3_var) +#pragma acc update host(_g1b1_var) +#pragma acc update host(_g1c1_var) +#pragma acc update host(_wfm_position_var) +#pragma acc update host(_wfm_1_position_var) +#pragma acc update host(_wfmc_1_var) +#pragma acc update host(_pinhole_1_var) +#pragma acc update host(_wfm_2_position_var) +#pragma acc update host(_wfmc_2_var) +#pragma acc update host(_g2a1_var) +#pragma acc update host(_monitor_1_position_var) +#pragma acc update host(_g2a2_var) +#pragma acc update host(_fo1_position_var) +#pragma acc update host(_fo_chopper_1_var) +#pragma acc update host(_bp1_position_var) +#pragma acc update host(_bp1_chopper_var) +#pragma acc update host(_g2b1_var) +#pragma acc update host(_g2b2_var) +#pragma acc update host(_g2b3_var) +#pragma acc update host(_g2b4_var) +#pragma acc update host(_fo2_position_var) +#pragma acc update host(_fo_chopper_2_var) +#pragma acc update host(_bp2_position_var) +#pragma acc update host(_bp_chopper2_var) +#pragma acc update host(_g2c1_var) +#pragma acc update host(_t0_start_position_var) +#pragma acc update host(_t0_chopper_alpha_var) +#pragma acc update host(_t0_end_position_var) +#pragma acc update host(_t0_chopper_beta_var) +#pragma acc update host(_g3a1_var) +#pragma acc update host(_g3a2_var) +#pragma acc update host(_fo3_position_var) +#pragma acc update host(_fo_chopper_3_var) +#pragma acc update host(_g3b1_var) +#pragma acc update host(_g4a1_var) +#pragma acc update host(_monitor_2_position_var) +#pragma acc update host(_g4a2_var) +#pragma acc update host(_g4a3_var) +#pragma acc update host(_fo4_position_var) +#pragma acc update host(_fo_chopper_4_var) +#pragma acc update host(_g4b1_var) +#pragma acc update host(_g4b2_var) +#pragma acc update host(_g4b3_var) +#pragma acc update host(_g4b4_var) +#pragma acc update host(_g4b5_var) +#pragma acc update host(_g4b6_var) +#pragma acc update host(_g5a1_var) +#pragma acc update host(_fo5_position_var) +#pragma acc update host(_fo_chopper_5_var) +#pragma acc update host(_g5b1_var) +#pragma acc update host(_g5b2_var) +#pragma acc update host(_g5b3_var) +#pragma acc update host(_g5b4_var) +#pragma acc update host(_g5b5_var) +#pragma acc update host(_g5b6_var) +#pragma acc update host(_g6a1_var) +#pragma acc update host(_g6a2_var) +#pragma acc update host(_g6a3_var) +#pragma acc update host(_guide_end_var) +#pragma acc update host(_monitor_3_position_var) +#pragma acc update host(_start_backend_var) +#pragma acc update host(_optical_axis_backend_var) +#pragma acc update host(_pinhole_2_var) +#pragma acc update host(_graph_var) +#pragma acc update host(_sample_monitor_arm_var) +#pragma acc update host(_sample_PSD_var) +#pragma acc update host(_profile_x_var) +#pragma acc update host(_profile_y_var) +#pragma acc update host(_wavelength_var) +#pragma acc update host(_tof_var) +#pragma acc update host(_wavelength_tof_var) +#pragma acc update host(_sample_position_var) +#pragma acc update host(_instrument_var) + + siminfo_init(NULL); + save(siminfo_file); /* save data when simulation ends */ + + /* Instrument 'ODIN_MCPL_baseline' FINALLY */ + SIG_MESSAGE("[ODIN_MCPL_baseline] FINALLY [(null):-1]"); + #define l_min (instrument->_parameters.l_min) + #define l_max (instrument->_parameters.l_max) + #define n_pulses (instrument->_parameters.n_pulses) + #define wfm_delta (instrument->_parameters.wfm_delta) + #define bp_frequency (instrument->_parameters.bp_frequency) + #define WFM1_phase_offset (instrument->_parameters.WFM1_phase_offset) + #define jitter_wfmc_1 (instrument->_parameters.jitter_wfmc_1) + #define WFM2_phase_offset (instrument->_parameters.WFM2_phase_offset) + #define jitter_wfmc_2 (instrument->_parameters.jitter_wfmc_2) + #define fo1_phase_offset (instrument->_parameters.fo1_phase_offset) + #define jitter_fo_chopper_1 (instrument->_parameters.jitter_fo_chopper_1) + #define bp1_phase_offset (instrument->_parameters.bp1_phase_offset) + #define jitter_bp1 (instrument->_parameters.jitter_bp1) + #define fo2_phase_offset (instrument->_parameters.fo2_phase_offset) + #define jitter_fo_chopper_2 (instrument->_parameters.jitter_fo_chopper_2) + #define bp2_phase_offset (instrument->_parameters.bp2_phase_offset) + #define jitter_bp2 (instrument->_parameters.jitter_bp2) + #define t0_phase_offset (instrument->_parameters.t0_phase_offset) + #define jit_t0_sec (instrument->_parameters.jit_t0_sec) + #define fo3_phase_offset (instrument->_parameters.fo3_phase_offset) + #define jitter_fo_chopper_3 (instrument->_parameters.jitter_fo_chopper_3) + #define fo4_phase_offset (instrument->_parameters.fo4_phase_offset) + #define jitter_fo_chopper_4 (instrument->_parameters.jitter_fo_chopper_4) + #define fo5_phase_offset (instrument->_parameters.fo5_phase_offset) + #define jitter_fo_chopper_5 (instrument->_parameters.jitter_fo_chopper_5) + #define choppers (instrument->_parameters.choppers) + #define target_tsplit (instrument->_parameters.target_tsplit) + #define filter (instrument->_parameters.filter) + #define repeat (instrument->_parameters.repeat) + #define v_smear (instrument->_parameters.v_smear) + #define pos_smear (instrument->_parameters.pos_smear) + #define dir_smear (instrument->_parameters.dir_smear) +{ +// Start of finally for generated ODIN +} + #undef l_min + #undef l_max + #undef n_pulses + #undef wfm_delta + #undef bp_frequency + #undef WFM1_phase_offset + #undef jitter_wfmc_1 + #undef WFM2_phase_offset + #undef jitter_wfmc_2 + #undef fo1_phase_offset + #undef jitter_fo_chopper_1 + #undef bp1_phase_offset + #undef jitter_bp1 + #undef fo2_phase_offset + #undef jitter_fo_chopper_2 + #undef bp2_phase_offset + #undef jitter_bp2 + #undef t0_phase_offset + #undef jit_t0_sec + #undef fo3_phase_offset + #undef jitter_fo_chopper_3 + #undef fo4_phase_offset + #undef jitter_fo_chopper_4 + #undef fo5_phase_offset + #undef jitter_fo_chopper_5 + #undef choppers + #undef target_tsplit + #undef filter + #undef repeat + #undef v_smear + #undef pos_smear + #undef dir_smear + /* call iteratively all components FINALLY */ + class_Progress_bar_finally(&_Origin_var); + + + + class_MCPL_input_once_finally(&_vin_var); + + class_PSD_monitor_4PI_finally(&_Sphere1_var); + + + + class_PSD_monitor_4PI_finally(&_Sphere0_var); + + + class_PSD_monitor_finally(&_PSD_cut_var); + + + class_PSD_monitor_finally(&_PSD_Backtrace_var); + + + + + class_Guide_four_side_finally(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_finally(&_g1a2_var); + + class_Guide_four_side_finally(&_g1a3_var); + + class_Guide_four_side_finally(&_g1b1_var); + + class_Guide_four_side_finally(&_g1c1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_1_var); + + + + class_MultiDiskChopper_finally(&_wfmc_2_var); + + class_Guide_four_side_finally(&_g2a1_var); + + + class_Guide_four_side_finally(&_g2a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_1_var); + + + + class_Guide_four_side_finally(&_g2b1_var); + + class_Guide_four_side_finally(&_g2b2_var); + + class_Guide_four_side_finally(&_g2b3_var); + + class_Guide_four_side_finally(&_g2b4_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_2_var); + + + + class_Guide_four_side_finally(&_g2c1_var); + + + + + + class_Guide_four_side_finally(&_g3a1_var); + + class_Guide_four_side_finally(&_g3a2_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_3_var); + + class_Guide_four_side_finally(&_g3b1_var); + + class_Guide_four_side_finally(&_g4a1_var); + + + class_Guide_four_side_finally(&_g4a2_var); + + class_Guide_four_side_finally(&_g4a3_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_4_var); + + class_Guide_four_side_finally(&_g4b1_var); + + class_Guide_four_side_finally(&_g4b2_var); + + class_Guide_four_side_finally(&_g4b3_var); + + class_Guide_four_side_finally(&_g4b4_var); + + class_Guide_four_side_finally(&_g4b5_var); + + class_Guide_four_side_finally(&_g4b6_var); + + class_Guide_four_side_finally(&_g5a1_var); + + + class_MultiDiskChopper_finally(&_fo_chopper_5_var); + + class_Guide_four_side_finally(&_g5b1_var); + + class_Guide_four_side_finally(&_g5b2_var); + + class_Guide_four_side_finally(&_g5b3_var); + + class_Guide_four_side_finally(&_g5b4_var); + + class_Guide_four_side_finally(&_g5b5_var); + + class_Guide_four_side_finally(&_g5b6_var); + + class_Guide_four_side_finally(&_g6a1_var); + + class_Guide_four_side_finally(&_g6a2_var); + + class_Guide_four_side_finally(&_g6a3_var); + + + + + + + + + class_Monitor_nD_finally(&_sample_PSD_var); + + class_Monitor_nD_finally(&_profile_x_var); + + class_Monitor_nD_finally(&_profile_y_var); + + class_Monitor_nD_finally(&_wavelength_var); + + class_Monitor_nD_finally(&_tof_var); + + class_Monitor_nD_finally(&_wavelength_tof_var); + + + siminfo_close(); + + return(0); +} /* finally */ + +/* ***************************************************************************** +* instrument 'ODIN_MCPL_baseline' and components DISPLAY +***************************************************************************** */ + + #define magnify mcdis_magnify + #define line mcdis_line + #define dashed_line mcdis_dashed_line + #define multiline mcdis_multiline + #define rectangle mcdis_rectangle + #define box mcdis_box + #define circle mcdis_circle + #define cylinder mcdis_cylinder + #define sphere mcdis_sphere + #define cone mcdis_cone + #define polygon mcdis_polygon + #define polyhedron mcdis_polyhedron +_class_Progress_bar *class_Progress_bar_display(_class_Progress_bar *_comp +) { + #define profile (_comp->_parameters.profile) + #define percent (_comp->_parameters.percent) + #define flag_save (_comp->_parameters.flag_save) + #define minutes (_comp->_parameters.minutes) + #define IntermediateCnts (_comp->_parameters.IntermediateCnts) + #define StartTime (_comp->_parameters.StartTime) + #define EndTime (_comp->_parameters.EndTime) + #define CurrentTime (_comp->_parameters.CurrentTime) + #define infostring (_comp->_parameters.infostring) + SIG_MESSAGE("[_Origin_display] component Origin=Progress_bar() DISPLAY [Progress_bar:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + #undef profile + #undef percent + #undef flag_save + #undef minutes + #undef IntermediateCnts + #undef StartTime + #undef EndTime + #undef CurrentTime + #undef infostring + return(_comp); +} /* class_Progress_bar_display */ + +_class_Arm *class_Arm_display(_class_Arm *_comp +) { + SIG_MESSAGE("[_vinROT2_display] component vinROT2=Arm() DISPLAY [Arm:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + /* A bit ugly; hard-coded dimensions. */ + + line (0, 0, 0, 0.2, 0, 0); + line (0, 0, 0, 0, 0.2, 0); + line (0, 0, 0, 0, 0, 0.2); + + cone (0.2, 0, 0, 0.01, 0.02, 1, 0, 0); + cone (0, 0.2, 0, 0.01, 0.02, 0, 1, 0); + cone (0, 0, 0.2, 0.01, 0.02, 0, 0, 1); + return(_comp); +} /* class_Arm_display */ + +_class_MCPL_input_once *class_MCPL_input_once_display(_class_MCPL_input_once *_comp +) { + #define filename (_comp->_parameters.filename) + #define polarisationuse (_comp->_parameters.polarisationuse) + #define Emin (_comp->_parameters.Emin) + #define Emax (_comp->_parameters.Emax) + #define v_smear (_comp->_parameters.v_smear) + #define pos_smear (_comp->_parameters.pos_smear) + #define dir_smear (_comp->_parameters.dir_smear) + #define always_smear (_comp->_parameters.always_smear) + #define preload (_comp->_parameters.preload) + #define verbose (_comp->_parameters.verbose) + #define inputfile (_comp->_parameters.inputfile) + #define nparticles (_comp->_parameters.nparticles) + #define read_neutrons (_comp->_parameters.read_neutrons) + #define used_neutrons (_comp->_parameters.used_neutrons) + #define emitted_neutrons (_comp->_parameters.emitted_neutrons) + #define current_index (_comp->_parameters.current_index) + #define maximum_index (_comp->_parameters.maximum_index) + #define first_particle (_comp->_parameters.first_particle) + #define times_replayed (_comp->_parameters.times_replayed) + #define particles (_comp->_parameters.particles) + #define weight_scale (_comp->_parameters.weight_scale) + #define resolved_filename (_comp->_parameters.resolved_filename) + SIG_MESSAGE("[_vin_display] component vin=MCPL_input_once() DISPLAY [MCPL_input_once:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + multiline (5, 0.2, 0.2, 0.0, -0.2, 0.2, 0.0, -0.2, -0.2, 0.0, 0.2, -0.2, 0.0, 0.2, 0.2, 0.0); + /*M*/ + multiline (5, -0.085, -0.085, 0.0, -0.085, 0.085, 0.0, -0.045, -0.085, 0.0, -0.005, 0.085, 0.0, -0.005, -0.085, 0.0); + /*I*/ + line (0.045, -0.085, 0, 0.045, 0.085, 0); + line (0.005, 0.085, 0, 0.085, 0.085, 0); + line (0.005, -0.085, 0, 0.085, -0.085, 0); + #undef filename + #undef polarisationuse + #undef Emin + #undef Emax + #undef v_smear + #undef pos_smear + #undef dir_smear + #undef always_smear + #undef preload + #undef verbose + #undef inputfile + #undef nparticles + #undef read_neutrons + #undef used_neutrons + #undef emitted_neutrons + #undef current_index + #undef maximum_index + #undef first_particle + #undef times_replayed + #undef particles + #undef weight_scale + #undef resolved_filename + return(_comp); +} /* class_MCPL_input_once_display */ + +_class_PSD_monitor_4PI *class_PSD_monitor_4PI_display(_class_PSD_monitor_4PI *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define nowritefile (_comp->_parameters.nowritefile) + #define radius (_comp->_parameters.radius) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_Sphere1_display] component Sphere1=PSD_monitor_4PI() DISPLAY [PSD_monitor_4PI:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + circle ("xy", 0, 0, 0, radius); + circle ("xz", 0, 0, 0, radius); + circle ("yz", 0, 0, 0, radius); + #undef nx + #undef ny + #undef filename + #undef nowritefile + #undef radius + #undef restore_neutron + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_4PI_display */ + +_class_ESS_butterfly *class_ESS_butterfly_display(_class_ESS_butterfly *_comp +) { + #define sector (_comp->_parameters.sector) + #define beamline (_comp->_parameters.beamline) + #define yheight (_comp->_parameters.yheight) + #define cold_frac (_comp->_parameters.cold_frac) + #define target_index (_comp->_parameters.target_index) + #define dist (_comp->_parameters.dist) + #define focus_xw (_comp->_parameters.focus_xw) + #define focus_yh (_comp->_parameters.focus_yh) + #define c_performance (_comp->_parameters.c_performance) + #define t_performance (_comp->_parameters.t_performance) + #define Lmin (_comp->_parameters.Lmin) + #define Lmax (_comp->_parameters.Lmax) + #define tmax_multiplier (_comp->_parameters.tmax_multiplier) + #define n_pulses (_comp->_parameters.n_pulses) + #define acc_power (_comp->_parameters.acc_power) + #define tfocus_dist (_comp->_parameters.tfocus_dist) + #define tfocus_time (_comp->_parameters.tfocus_time) + #define tfocus_width (_comp->_parameters.tfocus_width) + #define target_tsplit (_comp->_parameters.target_tsplit) + #define ColdWidths (_comp->_parameters.ColdWidths) + #define ThermalWidths (_comp->_parameters.ThermalWidths) + #define ColdScalars (_comp->_parameters.ColdScalars) + #define ThermalScalars (_comp->_parameters.ThermalScalars) + #define Beamlines (_comp->_parameters.Beamlines) + #define wfrac_cold (_comp->_parameters.wfrac_cold) + #define wfrac_thermal (_comp->_parameters.wfrac_thermal) + #define C1_x (_comp->_parameters.C1_x) + #define C1_z (_comp->_parameters.C1_z) + #define C2_x (_comp->_parameters.C2_x) + #define C2_z (_comp->_parameters.C2_z) + #define C3_x (_comp->_parameters.C3_x) + #define C3_z (_comp->_parameters.C3_z) + #define T1_x (_comp->_parameters.T1_x) + #define T1_z (_comp->_parameters.T1_z) + #define T2_x (_comp->_parameters.T2_x) + #define T2_z (_comp->_parameters.T2_z) + #define T3_x (_comp->_parameters.T3_x) + #define T3_z (_comp->_parameters.T3_z) + #define rC1_x (_comp->_parameters.rC1_x) + #define rC1_z (_comp->_parameters.rC1_z) + #define rC2_x (_comp->_parameters.rC2_x) + #define rC2_z (_comp->_parameters.rC2_z) + #define rC3_x (_comp->_parameters.rC3_x) + #define rC3_z (_comp->_parameters.rC3_z) + #define rT1_x (_comp->_parameters.rT1_x) + #define rT1_z (_comp->_parameters.rT1_z) + #define rT2_x (_comp->_parameters.rT2_x) + #define rT2_z (_comp->_parameters.rT2_z) + #define rT3_x (_comp->_parameters.rT3_x) + #define rT3_z (_comp->_parameters.rT3_z) + #define tx (_comp->_parameters.tx) + #define ty (_comp->_parameters.ty) + #define tz (_comp->_parameters.tz) + #define r11 (_comp->_parameters.r11) + #define r12 (_comp->_parameters.r12) + #define r21 (_comp->_parameters.r21) + #define r22 (_comp->_parameters.r22) + #define delta_y (_comp->_parameters.delta_y) + #define Mwidth_c (_comp->_parameters.Mwidth_c) + #define Mwidth_t (_comp->_parameters.Mwidth_t) + #define beamportangle (_comp->_parameters.beamportangle) + #define w_mult (_comp->_parameters.w_mult) + #define w_stat (_comp->_parameters.w_stat) + #define w_focus (_comp->_parameters.w_focus) + #define w_tfocus (_comp->_parameters.w_tfocus) + #define w_geom_c (_comp->_parameters.w_geom_c) + #define w_geom_t (_comp->_parameters.w_geom_t) + #define isleft (_comp->_parameters.isleft) + #define l_range (_comp->_parameters.l_range) + #define cos_thermal (_comp->_parameters.cos_thermal) + #define cos_cold (_comp->_parameters.cos_cold) + #define orientation_angle (_comp->_parameters.orientation_angle) + #define cx (_comp->_parameters.cx) + #define cz (_comp->_parameters.cz) + #define jmax (_comp->_parameters.jmax) + #define dxC (_comp->_parameters.dxC) + #define dxT (_comp->_parameters.dxT) + SIG_MESSAGE("[_Source_display] component Source=ESS_butterfly() DISPLAY [ESS_butterfly:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif + #undef sector + #undef beamline + #undef yheight + #undef cold_frac + #undef target_index + #undef dist + #undef focus_xw + #undef focus_yh + #undef c_performance + #undef t_performance + #undef Lmin + #undef Lmax + #undef tmax_multiplier + #undef n_pulses + #undef acc_power + #undef tfocus_dist + #undef tfocus_time + #undef tfocus_width + #undef target_tsplit + #undef ColdWidths + #undef ThermalWidths + #undef ColdScalars + #undef ThermalScalars + #undef Beamlines + #undef wfrac_cold + #undef wfrac_thermal + #undef C1_x + #undef C1_z + #undef C2_x + #undef C2_z + #undef C3_x + #undef C3_z + #undef T1_x + #undef T1_z + #undef T2_x + #undef T2_z + #undef T3_x + #undef T3_z + #undef rC1_x + #undef rC1_z + #undef rC2_x + #undef rC2_z + #undef rC3_x + #undef rC3_z + #undef rT1_x + #undef rT1_z + #undef rT2_x + #undef rT2_z + #undef rT3_x + #undef rT3_z + #undef tx + #undef ty + #undef tz + #undef r11 + #undef r12 + #undef r21 + #undef r22 + #undef delta_y + #undef Mwidth_c + #undef Mwidth_t + #undef beamportangle + #undef w_mult + #undef w_stat + #undef w_focus + #undef w_tfocus + #undef w_geom_c + #undef w_geom_t + #undef isleft + #undef l_range + #undef cos_thermal + #undef cos_cold + #undef orientation_angle + #undef cx + #undef cz + #undef jmax + #undef dxC + #undef dxT + return(_comp); +} /* class_ESS_butterfly_display */ + +_class_Shape *class_Shape_display(_class_Shape *_comp +) { + #define geometry (_comp->_parameters.geometry) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define thickness (_comp->_parameters.thickness) + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define nz (_comp->_parameters.nz) + #define center (_comp->_parameters.center) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_Focus_cut_display] component Focus_cut=Shape() DISPLAY [Shape:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + if (geometry && strlen (geometry) && strcmp (geometry, "NULL") && strcmp (geometry, "0")) { /* OFF file */ + off_display (offdata); + } else if (radius > 0 && yheight) { /* cylinder along y*/ + cylinder (0, 0, 0, radius, yheight, thickness, nx, ny, nz); + } else if (xwidth && yheight) { /* box/rectangle */ + box (0, 0, 0, xwidth, yheight, zdepth, thickness, nx, ny, nz); + } else if (radius > 0 && !yheight) { /* sphere */ + sphere (0, 0, 0, radius); + } + #undef geometry + #undef radius + #undef xwidth + #undef yheight + #undef zdepth + #undef thickness + #undef nx + #undef ny + #undef nz + #undef center + #undef offdata + return(_comp); +} /* class_Shape_display */ + +_class_PSD_monitor *class_PSD_monitor_display(_class_PSD_monitor *_comp +) { + #define nx (_comp->_parameters.nx) + #define ny (_comp->_parameters.ny) + #define filename (_comp->_parameters.filename) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define nowritefile (_comp->_parameters.nowritefile) + #define PSD_N (_comp->_parameters.PSD_N) + #define PSD_p (_comp->_parameters.PSD_p) + #define PSD_p2 (_comp->_parameters.PSD_p2) + SIG_MESSAGE("[_PSD_cut_display] component PSD_cut=PSD_monitor() DISPLAY [PSD_monitor:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + multiline (5, (double)xmin, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, + (double)ymin, 0.0); + #undef nx + #undef ny + #undef filename + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef xwidth + #undef yheight + #undef restore_neutron + #undef nowritefile + #undef PSD_N + #undef PSD_p + #undef PSD_p2 + return(_comp); +} /* class_PSD_monitor_display */ + +_class_bi_spec_ellipse *class_bi_spec_ellipse_display(_class_bi_spec_ellipse *_comp +) { + #define xheight (_comp->_parameters.xheight) + #define ywidth (_comp->_parameters.ywidth) + #define zlength (_comp->_parameters.zlength) + #define n_mirror (_comp->_parameters.n_mirror) + #define tilt (_comp->_parameters.tilt) + #define n_pieces (_comp->_parameters.n_pieces) + #define angular_offset (_comp->_parameters.angular_offset) + #define m (_comp->_parameters.m) + #define R0_m (_comp->_parameters.R0_m) + #define Qc_m (_comp->_parameters.Qc_m) + #define alpha_mirror_m (_comp->_parameters.alpha_mirror_m) + #define W_m (_comp->_parameters.W_m) + #define transmit (_comp->_parameters.transmit) + #define d_focus_1_x (_comp->_parameters.d_focus_1_x) + #define d_focus_2_x (_comp->_parameters.d_focus_2_x) + #define d_focus_1_y (_comp->_parameters.d_focus_1_y) + #define d_focus_2_y (_comp->_parameters.d_focus_2_y) + #define ell_l (_comp->_parameters.ell_l) + #define ell_h (_comp->_parameters.ell_h) + #define ell_w (_comp->_parameters.ell_w) + #define ell_m (_comp->_parameters.ell_m) + #define R0 (_comp->_parameters.R0) + #define Qc (_comp->_parameters.Qc) + #define alpha_mirror (_comp->_parameters.alpha_mirror) + #define W (_comp->_parameters.W) + #define cut (_comp->_parameters.cut) + #define substrate (_comp->_parameters.substrate) + #define reflect_mirror (_comp->_parameters.reflect_mirror) + #define reflect (_comp->_parameters.reflect) + #define pTable (_comp->_parameters.pTable) + SIG_MESSAGE("[_bi_display] component bi=bi_spec_ellipse() DISPLAY [bi_spec_ellipse:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i_parameters.RIreflect) + #define LIreflect (_comp->_parameters.LIreflect) + #define UIreflect (_comp->_parameters.UIreflect) + #define DIreflect (_comp->_parameters.DIreflect) + #define ROreflect (_comp->_parameters.ROreflect) + #define LOreflect (_comp->_parameters.LOreflect) + #define UOreflect (_comp->_parameters.UOreflect) + #define DOreflect (_comp->_parameters.DOreflect) + #define w1l (_comp->_parameters.w1l) + #define w2l (_comp->_parameters.w2l) + #define linwl (_comp->_parameters.linwl) + #define loutwl (_comp->_parameters.loutwl) + #define w1r (_comp->_parameters.w1r) + #define w2r (_comp->_parameters.w2r) + #define linwr (_comp->_parameters.linwr) + #define loutwr (_comp->_parameters.loutwr) + #define h1u (_comp->_parameters.h1u) + #define h2u (_comp->_parameters.h2u) + #define linhu (_comp->_parameters.linhu) + #define louthu (_comp->_parameters.louthu) + #define h1d (_comp->_parameters.h1d) + #define h2d (_comp->_parameters.h2d) + #define linhd (_comp->_parameters.linhd) + #define louthd (_comp->_parameters.louthd) + #define l (_comp->_parameters.l) + #define R0 (_comp->_parameters.R0) + #define Qcxl (_comp->_parameters.Qcxl) + #define Qcxr (_comp->_parameters.Qcxr) + #define Qcyu (_comp->_parameters.Qcyu) + #define Qcyd (_comp->_parameters.Qcyd) + #define alphaxl (_comp->_parameters.alphaxl) + #define alphaxr (_comp->_parameters.alphaxr) + #define alphayu (_comp->_parameters.alphayu) + #define alphayd (_comp->_parameters.alphayd) + #define Wxr (_comp->_parameters.Wxr) + #define Wxl (_comp->_parameters.Wxl) + #define Wyu (_comp->_parameters.Wyu) + #define Wyd (_comp->_parameters.Wyd) + #define mxr (_comp->_parameters.mxr) + #define mxl (_comp->_parameters.mxl) + #define myu (_comp->_parameters.myu) + #define myd (_comp->_parameters.myd) + #define QcxrOW (_comp->_parameters.QcxrOW) + #define QcxlOW (_comp->_parameters.QcxlOW) + #define QcyuOW (_comp->_parameters.QcyuOW) + #define QcydOW (_comp->_parameters.QcydOW) + #define alphaxlOW (_comp->_parameters.alphaxlOW) + #define alphaxrOW (_comp->_parameters.alphaxrOW) + #define alphayuOW (_comp->_parameters.alphayuOW) + #define alphaydOW (_comp->_parameters.alphaydOW) + #define WxrOW (_comp->_parameters.WxrOW) + #define WxlOW (_comp->_parameters.WxlOW) + #define WyuOW (_comp->_parameters.WyuOW) + #define WydOW (_comp->_parameters.WydOW) + #define mxrOW (_comp->_parameters.mxrOW) + #define mxlOW (_comp->_parameters.mxlOW) + #define myuOW (_comp->_parameters.myuOW) + #define mydOW (_comp->_parameters.mydOW) + #define rwallthick (_comp->_parameters.rwallthick) + #define lwallthick (_comp->_parameters.lwallthick) + #define uwallthick (_comp->_parameters.uwallthick) + #define dwallthick (_comp->_parameters.dwallthick) + #define w1rwt (_comp->_parameters.w1rwt) + #define w1lwt (_comp->_parameters.w1lwt) + #define h1uwt (_comp->_parameters.h1uwt) + #define h1dwt (_comp->_parameters.h1dwt) + #define w2rwt (_comp->_parameters.w2rwt) + #define w2lwt (_comp->_parameters.w2lwt) + #define h2uwt (_comp->_parameters.h2uwt) + #define h2dwt (_comp->_parameters.h2dwt) + #define pawr (_comp->_parameters.pawr) + #define pawl (_comp->_parameters.pawl) + #define pbwr (_comp->_parameters.pbwr) + #define pbwl (_comp->_parameters.pbwl) + #define pahu (_comp->_parameters.pahu) + #define pahd (_comp->_parameters.pahd) + #define pbhu (_comp->_parameters.pbhu) + #define pbhd (_comp->_parameters.pbhd) + #define awl (_comp->_parameters.awl) + #define bwl (_comp->_parameters.bwl) + #define awr (_comp->_parameters.awr) + #define bwr (_comp->_parameters.bwr) + #define ahu (_comp->_parameters.ahu) + #define bhu (_comp->_parameters.bhu) + #define ahd (_comp->_parameters.ahd) + #define bhd (_comp->_parameters.bhd) + #define awlwt (_comp->_parameters.awlwt) + #define bwlwt (_comp->_parameters.bwlwt) + #define awrwt (_comp->_parameters.awrwt) + #define bwrwt (_comp->_parameters.bwrwt) + #define ahuwt (_comp->_parameters.ahuwt) + #define bhuwt (_comp->_parameters.bhuwt) + #define ahdwt (_comp->_parameters.ahdwt) + #define bhdwt (_comp->_parameters.bhdwt) + #define pawrwt (_comp->_parameters.pawrwt) + #define pawlwt (_comp->_parameters.pawlwt) + #define pbwrwt (_comp->_parameters.pbwrwt) + #define pbwlwt (_comp->_parameters.pbwlwt) + #define pahuwt (_comp->_parameters.pahuwt) + #define pahdwt (_comp->_parameters.pahdwt) + #define pbhuwt (_comp->_parameters.pbhuwt) + #define pbhdwt (_comp->_parameters.pbhdwt) + #define a2wlwt (_comp->_parameters.a2wlwt) + #define b2wlwt (_comp->_parameters.b2wlwt) + #define a2wrwt (_comp->_parameters.a2wrwt) + #define b2wrwt (_comp->_parameters.b2wrwt) + #define a2huwt (_comp->_parameters.a2huwt) + #define b2huwt (_comp->_parameters.b2huwt) + #define a2hdwt (_comp->_parameters.a2hdwt) + #define b2hdwt (_comp->_parameters.b2hdwt) + #define a2wl (_comp->_parameters.a2wl) + #define b2wl (_comp->_parameters.b2wl) + #define a2wr (_comp->_parameters.a2wr) + #define b2wr (_comp->_parameters.b2wr) + #define a2hu (_comp->_parameters.a2hu) + #define b2hu (_comp->_parameters.b2hu) + #define a2hd (_comp->_parameters.a2hd) + #define b2hd (_comp->_parameters.b2hd) + #define mru1 (_comp->_parameters.mru1) + #define mru2 (_comp->_parameters.mru2) + #define nru1 (_comp->_parameters.nru1) + #define nru2 (_comp->_parameters.nru2) + #define mrd1 (_comp->_parameters.mrd1) + #define mrd2 (_comp->_parameters.mrd2) + #define nrd1 (_comp->_parameters.nrd1) + #define nrd2 (_comp->_parameters.nrd2) + #define mlu1 (_comp->_parameters.mlu1) + #define mlu2 (_comp->_parameters.mlu2) + #define nlu1 (_comp->_parameters.nlu1) + #define nlu2 (_comp->_parameters.nlu2) + #define mld1 (_comp->_parameters.mld1) + #define mld2 (_comp->_parameters.mld2) + #define nld1 (_comp->_parameters.nld1) + #define nld2 (_comp->_parameters.nld2) + #define z0wr (_comp->_parameters.z0wr) + #define z0wl (_comp->_parameters.z0wl) + #define z0hu (_comp->_parameters.z0hu) + #define z0hd (_comp->_parameters.z0hd) + #define p2parawr (_comp->_parameters.p2parawr) + #define p2parawl (_comp->_parameters.p2parawl) + #define p2parahu (_comp->_parameters.p2parahu) + #define p2parahd (_comp->_parameters.p2parahd) + #define p2parawrwt (_comp->_parameters.p2parawrwt) + #define p2parawlwt (_comp->_parameters.p2parawlwt) + #define p2parahuwt (_comp->_parameters.p2parahuwt) + #define p2parahdwt (_comp->_parameters.p2parahdwt) + #define riTable (_comp->_parameters.riTable) + #define liTable (_comp->_parameters.liTable) + #define uiTable (_comp->_parameters.uiTable) + #define diTable (_comp->_parameters.diTable) + #define roTable (_comp->_parameters.roTable) + #define loTable (_comp->_parameters.loTable) + #define uoTable (_comp->_parameters.uoTable) + #define doTable (_comp->_parameters.doTable) + SIG_MESSAGE("[_NBOA_drawing_1_end_display] component NBOA_drawing_1_end=Guide_four_side() DISPLAY [Guide_four_side:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int i, imax; + double x1, y1, Z, x2, y2, Z1, Z0wr, Z0wl, Z0hu, Z0hd, xwt, ywt, x1wt, y1wt; + double mr, ml, mu, md, nr1, nl1, nu1, nd1, nr2, nl2, nu2, nd2; + double lbwl, lbwr, lbhu, lbhd; /* length between focal points , needed for elliptic case */ + + double x11, y11, x21, y21, Z11, Z0wr1, Z0wl1, Z0hu1, Z0hd1, xwt1, ywt1, x1wt1, y1wt1; + double mr1, ml1, mu1, md1, nr11, nl11, nu11, nd11, nr21, nl21, nu21, nd21; + double lbwl1, lbwr1, lbhu1, lbhd1; + + double x12, y12, x22, y22, Z12, Z0wr2, Z0wl2, Z0hu2, Z0hd2, xwt2, ywt2, x1wt2, y1wt2; + double mr2, ml2, mu2, md2, nr12, nl12, nu12, nd12, nr22, nl22, nu22, nd22; + double lbwl2, lbwr2, lbhu2, lbhd2; + + magnify ("xy"); + + imax = 100; /* maximum points for every line in Z direction*/ + + lbwr = linwr + l + loutwr; + lbwl = linwl + l + loutwl; + lbhu = linhu + l + louthu; + lbhd = linhd + l + louthd; + + if (linwr == 0 && loutwr == 0) { + mr = (-w2r + w1r) / l; + nr1 = -w1r; + nr2 = -(w1rwt); + } + + if (linwl == 0 && loutwl == 0) { + ml = (w2l - w1l) / l; + nl1 = w1l; + nl2 = (w1lwt); + } + + if (linhu == 0 && louthu == 0) { + mu = (h2u - h1u) / l; + nu1 = h1u; + nu2 = (h1uwt); + } + + if (linhd == 0 && louthd == 0) { + md = (-h2d + h1d) / l; + nd1 = -h1d; + nd2 = -(h1dwt); + } + + Z0wr = (linwr - l - loutwr) / 2.0; + Z0wl = (linwl - l - loutwl) / 2.0; + Z0hu = lbhu / 2.0 - l - louthu; + Z0hd = lbhd / 2.0 - l - louthd; + + if (myd != -1) + line (w1l, -h1d, 0.0, -w1r, -h1d, 0.0); /* entrance window given by the INNER walls*/ + if (myu != -1) + line (w1l, h1u, 0.0, -w1r, h1u, 0.0); + if (mxl != -1) + line (w1l, -h1d, 0.0, w1l, h1u, 0.0); + if (mxr != -1) + line (-w1r, h1u, 0.0, -w1r, -h1d, 0.0); + + if (myd != -1) + line (w2l, -h2d, l, -w2r, -h2d, l); /* exit window given by the INNER walls*/ + if (myu != -1) + line (w2l, h2u, l, -w2r, h2u, l); + if (mxl != -1) + line (w2l, -h2d, l, w2l, h2u, l); + if (mxr != -1) + line (-w2r, -h2d, l, -w2r, h2u, l); + + if (mydOW != -1) + line ((w1lwt), -(h1dwt), 0.0, -(w1rwt), -(h1dwt), 0.0); /* entrance window given by the OUTER walls */ + if (myuOW != -1) + line ((w1lwt), (h1uwt), 0.0, -(w1rwt), (h1uwt), 0.0); + if (mxlOW != -1) + line ((w1lwt), -(h1dwt), 0.0, (w1lwt), (h1uwt), 0.0); + if (mxrOW != -1) + line (-(w1rwt), (h1uwt), 0.0, -(w1rwt), -(h1dwt), 0.0); + + if (mydOW != -1) + line ((w2lwt), -(h2dwt), l, -(w2rwt), -(h2dwt), l); /* exit windows given by the OUTER walls*/ + if (myuOW != -1) + line ((w2lwt), (h2uwt), l, -(w2rwt), (h2uwt), l); + if (mxlOW != -1) + line ((w2lwt), -(h2dwt), l, (w2lwt), (h2uwt), l); + if (mxrOW != -1) + line (-(w2rwt), -(h2dwt), l, -(w2rwt), (h2uwt), l); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, -h1d, 0.0, (w1lwt), -(h1dwt), 0.0); /* corner connection lines for the entrance windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w1l, h1u, 0.0, (w1lwt), (h1uwt), 0.0); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, -h1d, 0.0, -(w1rwt), -(h1dwt), 0.0); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w1r, h1u, 0.0, -(w1rwt), (h1uwt), 0.0); + + if ((myd != -1 && mydOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, -h2d, l, (w2lwt), -(h2dwt), l); /* corner connection lines for the exit windows*/ + if ((myu != -1 && myuOW != -1) || (mxl != -1 && mxlOW != -1)) + line (w2l, h2u, l, (w2lwt), (h2uwt), l); + if ((myd != -1 && mydOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, -h2d, l, -(w2rwt), -(h2dwt), l); + if ((myu != -1 && myuOW != -1) || (mxr != -1 && mxrOW != -1)) + line (-w2r, h2u, l, -(w2rwt), (h2uwt), l); + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxl != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhd == 0 && louthd == 0) { + y1 = md * Z + nd1; + y2 = md * Z1 + nd1; + } else { + if (linhd != 0 && louthd != 0) { + y1 = -bhd * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahd * ahd)); + y2 = -bhd * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahd * ahd)); + } else { + y1 = -sqrt ((Z - pbhd) / -pahd); + y2 = -sqrt ((Z1 - pbhd) / -pahd); + } + } + if (mxr != -1 || myd != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + x1 = mr * Z + nr1; + x2 = mr * Z1 + nr1; + } else { + if (linwr != 0 && loutwr != 0) { + x1 = -bwr * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awr * awr)); + x2 = -bwr * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awr * awr)); + } else { + x1 = -sqrt ((Z - pbwr) / -pawr); + x2 = -sqrt ((Z1 - pbwr) / -pawr); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxr != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the INNER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + x1 = ml * Z + nl1; + x2 = ml * Z1 + nl1; + } else { + if (linwl != 0 && loutwl != 0) { + x1 = bwl * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awl * awl)); + x2 = bwl * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awl * awl)); + } else { + x1 = sqrt ((Z - pbwl) / -pawl); + x2 = sqrt ((Z1 - pbwl) / -pawl); + } + } + if (linhu == 0 && louthu == 0) { + y1 = mu * Z + nu1; + y2 = mu * Z1 + nu1; + } else { + if (linhu != 0 && louthu != 0) { + y1 = bhu * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahu * ahu)); + y2 = bhu * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahu * ahu)); + } else { + y1 = sqrt ((Z - pbhu) / -pahu); + y2 = sqrt ((Z1 - pbhu) / -pahu); + } + } + if (mxl != -1 || myu != -1) + line ((double)x1, (double)y1, (double)Z, (double)x2, (double)y2, (double)Z1); + } /* END INNER LINES*/ + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxlOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT BOTTOM line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhd == 0 && louthd == 0) { + ywt = md * Z + nd2; + y1wt = md * Z1 + nd2; + } else { + if (linhd != 0 && louthd != 0) { + ywt = -bhdwt * sqrt (1 - ((Z0hd + Z) * (Z0hd + Z)) / (ahdwt * ahdwt)); + y1wt = -bhdwt * sqrt (1 - ((Z0hd + Z1) * (Z0hd + Z1)) / (ahdwt * ahdwt)); + } else { + ywt = -sqrt ((Z - pbhdwt) / -pahdwt); + y1wt = -sqrt ((Z1 - pbhdwt) / -pahdwt); + } + } + if (mxrOW != -1 || mydOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER RIGHT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwr == 0 && loutwr == 0) { + xwt = mr * Z + nr2; + x1wt = mr * Z1 + nr2; + } else { + if (linwr != 0 && loutwr != 0) { + xwt = -bwrwt * sqrt (1 - ((Z0wr + Z) * (Z0wr + Z)) / (awrwt * awrwt)); + x1wt = -bwrwt * sqrt (1 - ((Z0wr + Z1) * (Z0wr + Z1)) / (awrwt * awrwt)); + } else { + xwt = -sqrt ((Z - pbwrwt) / -pawrwt); + x1wt = -sqrt ((Z1 - pbwrwt) / -pawrwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxrOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + + for (i = 0; i < imax; i++) { /* calculation of the points for the OUTER LEFT TOP line */ + Z = i * l / imax; + Z1 = (i + 1) * l / imax; + if (linwl == 0 && loutwl == 0) { + xwt = ml * Z + nl2; + x1wt = ml * Z1 + nl2; + } else { + if (linwl != 0 && loutwl != 0) { + xwt = bwlwt * sqrt (1 - ((Z0wl + Z) * (Z0wl + Z)) / (awlwt * awlwt)); + x1wt = bwlwt * sqrt (1 - ((Z0wl + Z1) * (Z0wl + Z1)) / (awlwt * awlwt)); + } else { + xwt = sqrt ((Z - pbwlwt) / -pawlwt); + x1wt = sqrt ((Z1 - pbwlwt) / -pawlwt); + } + } + if (linhu == 0 && louthu == 0) { + ywt = mu * Z + nu2; + y1wt = mu * Z1 + nu2; + } else { + if (linhu != 0 && louthu != 0) { + ywt = bhuwt * sqrt (1 - ((Z0hu + Z) * (Z0hu + Z)) / (ahuwt * ahuwt)); + y1wt = bhuwt * sqrt (1 - ((Z0hu + Z1) * (Z0hu + Z1)) / (ahuwt * ahuwt)); + } else { + ywt = sqrt ((Z - pbhuwt) / -pahuwt); + y1wt = sqrt ((Z1 - pbhuwt) / -pahuwt); + } + } + if (mxlOW != -1 || myuOW != -1) + line ((double)xwt, (double)ywt, (double)Z, (double)x1wt, (double)y1wt, (double)Z1); + } + #undef RIreflect + #undef LIreflect + #undef UIreflect + #undef DIreflect + #undef ROreflect + #undef LOreflect + #undef UOreflect + #undef DOreflect + #undef w1l + #undef w2l + #undef linwl + #undef loutwl + #undef w1r + #undef w2r + #undef linwr + #undef loutwr + #undef h1u + #undef h2u + #undef linhu + #undef louthu + #undef h1d + #undef h2d + #undef linhd + #undef louthd + #undef l + #undef R0 + #undef Qcxl + #undef Qcxr + #undef Qcyu + #undef Qcyd + #undef alphaxl + #undef alphaxr + #undef alphayu + #undef alphayd + #undef Wxr + #undef Wxl + #undef Wyu + #undef Wyd + #undef mxr + #undef mxl + #undef myu + #undef myd + #undef QcxrOW + #undef QcxlOW + #undef QcyuOW + #undef QcydOW + #undef alphaxlOW + #undef alphaxrOW + #undef alphayuOW + #undef alphaydOW + #undef WxrOW + #undef WxlOW + #undef WyuOW + #undef WydOW + #undef mxrOW + #undef mxlOW + #undef myuOW + #undef mydOW + #undef rwallthick + #undef lwallthick + #undef uwallthick + #undef dwallthick + #undef w1rwt + #undef w1lwt + #undef h1uwt + #undef h1dwt + #undef w2rwt + #undef w2lwt + #undef h2uwt + #undef h2dwt + #undef pawr + #undef pawl + #undef pbwr + #undef pbwl + #undef pahu + #undef pahd + #undef pbhu + #undef pbhd + #undef awl + #undef bwl + #undef awr + #undef bwr + #undef ahu + #undef bhu + #undef ahd + #undef bhd + #undef awlwt + #undef bwlwt + #undef awrwt + #undef bwrwt + #undef ahuwt + #undef bhuwt + #undef ahdwt + #undef bhdwt + #undef pawrwt + #undef pawlwt + #undef pbwrwt + #undef pbwlwt + #undef pahuwt + #undef pahdwt + #undef pbhuwt + #undef pbhdwt + #undef a2wlwt + #undef b2wlwt + #undef a2wrwt + #undef b2wrwt + #undef a2huwt + #undef b2huwt + #undef a2hdwt + #undef b2hdwt + #undef a2wl + #undef b2wl + #undef a2wr + #undef b2wr + #undef a2hu + #undef b2hu + #undef a2hd + #undef b2hd + #undef mru1 + #undef mru2 + #undef nru1 + #undef nru2 + #undef mrd1 + #undef mrd2 + #undef nrd1 + #undef nrd2 + #undef mlu1 + #undef mlu2 + #undef nlu1 + #undef nlu2 + #undef mld1 + #undef mld2 + #undef nld1 + #undef nld2 + #undef z0wr + #undef z0wl + #undef z0hu + #undef z0hd + #undef p2parawr + #undef p2parawl + #undef p2parahu + #undef p2parahd + #undef p2parawrwt + #undef p2parawlwt + #undef p2parahuwt + #undef p2parahdwt + #undef riTable + #undef liTable + #undef uiTable + #undef diTable + #undef roTable + #undef loTable + #undef uoTable + #undef doTable + return(_comp); +} /* class_Guide_four_side_display */ + +_class_MultiDiskChopper *class_MultiDiskChopper_display(_class_MultiDiskChopper *_comp +) { + #define slit_center (_comp->_parameters.slit_center) + #define slit_width (_comp->_parameters.slit_width) + #define nslits (_comp->_parameters.nslits) + #define delta_y (_comp->_parameters.delta_y) + #define nu (_comp->_parameters.nu) + #define nrev (_comp->_parameters.nrev) + #define ratio (_comp->_parameters.ratio) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define phase (_comp->_parameters.phase) + #define radius (_comp->_parameters.radius) + #define equal (_comp->_parameters.equal) + #define abs_out (_comp->_parameters.abs_out) + #define verbose (_comp->_parameters.verbose) + #define T (_comp->_parameters.T) + #define To (_comp->_parameters.To) + #define omega (_comp->_parameters.omega) + #define dslit_center (_comp->_parameters.dslit_center) + #define dhslit_width (_comp->_parameters.dhslit_width) + #define t0 (_comp->_parameters.t0) + #define t1 (_comp->_parameters.t1) + SIG_MESSAGE("[_wfmc_1_display] component wfmc_1=MultiDiskChopper() DISPLAY [MultiDiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } + #undef slit_center + #undef slit_width + #undef nslits + #undef delta_y + #undef nu + #undef nrev + #undef ratio + #undef jitter + #undef delay + #undef isfirst + #undef phase + #undef radius + #undef equal + #undef abs_out + #undef verbose + #undef T + #undef To + #undef omega + #undef dslit_center + #undef dhslit_width + #undef t0 + #undef t1 + return(_comp); +} /* class_MultiDiskChopper_display */ + +_class_Slit *class_Slit_display(_class_Slit *_comp +) { + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define radius (_comp->_parameters.radius) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define isradial (_comp->_parameters.isradial) + SIG_MESSAGE("[_pinhole_1_display] component pinhole_1=Slit() DISPLAY [Slit:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + if (is_unset (radius)) { + double xw, yh; + xw = (xmax - xmin) / 2.0; + yh = (ymax - ymin) / 2.0; + multiline (3, xmin - xw, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, ymax + yh, 0.0); + multiline (3, xmax + xw, (double)ymax, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmax, ymax + yh, 0.0); + multiline (3, xmin - xw, (double)ymin, 0.0, (double)xmin, (double)ymin, 0.0, (double)xmin, ymin - yh, 0.0); + multiline (3, xmax + xw, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, ymin - yh, 0.0); + } else { + circle ("xy", 0, 0, 0, radius); + } + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef radius + #undef xwidth + #undef yheight + #undef isradial + return(_comp); +} /* class_Slit_display */ + +_class_DiskChopper *class_DiskChopper_display(_class_DiskChopper *_comp +) { + #define theta_0 (_comp->_parameters.theta_0) + #define radius (_comp->_parameters.radius) + #define yheight (_comp->_parameters.yheight) + #define nu (_comp->_parameters.nu) + #define nslit (_comp->_parameters.nslit) + #define jitter (_comp->_parameters.jitter) + #define delay (_comp->_parameters.delay) + #define isfirst (_comp->_parameters.isfirst) + #define n_pulse (_comp->_parameters.n_pulse) + #define abs_out (_comp->_parameters.abs_out) + #define phase (_comp->_parameters.phase) + #define xwidth (_comp->_parameters.xwidth) + #define verbose (_comp->_parameters.verbose) + #define Tg (_comp->_parameters.Tg) + #define To (_comp->_parameters.To) + #define delta_y (_comp->_parameters.delta_y) + #define height (_comp->_parameters.height) + #define omega (_comp->_parameters.omega) + SIG_MESSAGE("[_bp1_chopper_display] component bp1_chopper=DiskChopper() DISPLAY [DiskChopper:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } + #undef theta_0 + #undef radius + #undef yheight + #undef nu + #undef nslit + #undef jitter + #undef delay + #undef isfirst + #undef n_pulse + #undef abs_out + #undef phase + #undef xwidth + #undef verbose + #undef Tg + #undef To + #undef delta_y + #undef height + #undef omega + return(_comp); +} /* class_DiskChopper_display */ + +_class_Graphite_Diffuser *class_Graphite_Diffuser_display(_class_Graphite_Diffuser *_comp +) { + #define xwidth (_comp->_parameters.xwidth) + #define ywidth (_comp->_parameters.ywidth) + #define thick (_comp->_parameters.thick) + #define abs (_comp->_parameters.abs) + SIG_MESSAGE("[_graph_display] component graph=Graphite_Diffuser() DISPLAY [Graphite_Diffuser:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + magnify("xy"); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)-ywidth/2, 0.0, + (double)xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)ywidth/2, 0.0, + (double)-xwidth/2, (double)-ywidth/2, 0.0); + multiline(5, (double)-xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)-ywidth/2, (double)thick, + (double)xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)ywidth/2, (double)thick, + (double)-xwidth/2, (double)-ywidth/2, (double)thick); + line(-xwidth/2, -ywidth/2, 0.0, -xwidth/2, -ywidth/2, thick); + line(xwidth/2, -ywidth/2, 0.0, xwidth/2, -ywidth/2, thick); + line(-xwidth/2, ywidth/2, 0.0, -xwidth/2, ywidth/2, thick); + line(xwidth/2, ywidth/2, 0.0, xwidth/2, ywidth/2, thick); + #undef xwidth + #undef ywidth + #undef thick + #undef abs + return(_comp); +} /* class_Graphite_Diffuser_display */ + +_class_Monitor_nD *class_Monitor_nD_display(_class_Monitor_nD *_comp +) { + #define user1 (_comp->_parameters.user1) + #define user2 (_comp->_parameters.user2) + #define user3 (_comp->_parameters.user3) + #define xwidth (_comp->_parameters.xwidth) + #define yheight (_comp->_parameters.yheight) + #define zdepth (_comp->_parameters.zdepth) + #define xmin (_comp->_parameters.xmin) + #define xmax (_comp->_parameters.xmax) + #define ymin (_comp->_parameters.ymin) + #define ymax (_comp->_parameters.ymax) + #define zmin (_comp->_parameters.zmin) + #define zmax (_comp->_parameters.zmax) + #define bins (_comp->_parameters.bins) + #define min (_comp->_parameters.min) + #define max (_comp->_parameters.max) + #define restore_neutron (_comp->_parameters.restore_neutron) + #define radius (_comp->_parameters.radius) + #define options (_comp->_parameters.options) + #define filename (_comp->_parameters.filename) + #define geometry (_comp->_parameters.geometry) + #define nowritefile (_comp->_parameters.nowritefile) + #define username1 (_comp->_parameters.username1) + #define username2 (_comp->_parameters.username2) + #define username3 (_comp->_parameters.username3) + #define tsplit (_comp->_parameters.tsplit) + #define adaptive_target (_comp->_parameters.adaptive_target) + #define DEFS (_comp->_parameters.DEFS) + #define Vars (_comp->_parameters.Vars) + #define detector (_comp->_parameters.detector) + #define offdata (_comp->_parameters.offdata) + SIG_MESSAGE("[_sample_PSD_display] component sample_PSD=Monitor_nD() DISPLAY [Monitor_nD:0]"); + + printf("MCDISPLAY: component %s\n", _comp->_name); + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } + #undef user1 + #undef user2 + #undef user3 + #undef xwidth + #undef yheight + #undef zdepth + #undef xmin + #undef xmax + #undef ymin + #undef ymax + #undef zmin + #undef zmax + #undef bins + #undef min + #undef max + #undef restore_neutron + #undef radius + #undef options + #undef filename + #undef geometry + #undef nowritefile + #undef username1 + #undef username2 + #undef username3 + #undef tsplit + #undef adaptive_target + #undef DEFS + #undef Vars + #undef detector + #undef offdata + return(_comp); +} /* class_Monitor_nD_display */ + + + #undef magnify + #undef line + #undef dashed_line + #undef multiline + #undef rectangle + #undef box + #undef circle + #undef cylinder + #undef sphere + +int display(void) { /* called by mccode_main for ODIN_MCPL_baseline:DISPLAY */ + printf("MCDISPLAY: start\n"); + + /* call iteratively all components DISPLAY */ + class_Progress_bar_display(&_Origin_var); + + class_Arm_display(&_vinROT2_var); + + class_Arm_display(&_vinROT1_var); + + class_MCPL_input_once_display(&_vin_var); + + class_PSD_monitor_4PI_display(&_Sphere1_var); + + class_ESS_butterfly_display(&_Source_var); + + class_Arm_display(&_optical_axis_var); + + class_PSD_monitor_4PI_display(&_Sphere0_var); + + class_Shape_display(&_Focus_cut_var); + + class_PSD_monitor_display(&_PSD_cut_var); + + class_Shape_display(&_BackTrace_var); + + class_PSD_monitor_display(&_PSD_Backtrace_var); + + class_Arm_display(&_Start_of_bi_var); + + class_bi_spec_ellipse_display(&_bi_var); + + class_Arm_display(&_End_of_bi_var); + + class_Guide_four_side_display(&_NBOA_drawing_1_end_var); + + class_Guide_four_side_display(&_g1a2_var); + + class_Guide_four_side_display(&_g1a3_var); + + class_Guide_four_side_display(&_g1b1_var); + + class_Guide_four_side_display(&_g1c1_var); + + class_Arm_display(&_wfm_position_var); + + class_Arm_display(&_wfm_1_position_var); + + class_MultiDiskChopper_display(&_wfmc_1_var); + + class_Slit_display(&_pinhole_1_var); + + class_Arm_display(&_wfm_2_position_var); + + class_MultiDiskChopper_display(&_wfmc_2_var); + + class_Guide_four_side_display(&_g2a1_var); + + class_Arm_display(&_monitor_1_position_var); + + class_Guide_four_side_display(&_g2a2_var); + + class_Arm_display(&_fo1_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_1_var); + + class_Arm_display(&_bp1_position_var); + + class_DiskChopper_display(&_bp1_chopper_var); + + class_Guide_four_side_display(&_g2b1_var); + + class_Guide_four_side_display(&_g2b2_var); + + class_Guide_four_side_display(&_g2b3_var); + + class_Guide_four_side_display(&_g2b4_var); + + class_Arm_display(&_fo2_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_2_var); + + class_Arm_display(&_bp2_position_var); + + class_DiskChopper_display(&_bp_chopper2_var); + + class_Guide_four_side_display(&_g2c1_var); + + class_Arm_display(&_t0_start_position_var); + + class_DiskChopper_display(&_t0_chopper_alpha_var); + + class_Arm_display(&_t0_end_position_var); + + class_DiskChopper_display(&_t0_chopper_beta_var); + + class_Guide_four_side_display(&_g3a1_var); + + class_Guide_four_side_display(&_g3a2_var); + + class_Arm_display(&_fo3_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_3_var); + + class_Guide_four_side_display(&_g3b1_var); + + class_Guide_four_side_display(&_g4a1_var); + + class_Arm_display(&_monitor_2_position_var); + + class_Guide_four_side_display(&_g4a2_var); + + class_Guide_four_side_display(&_g4a3_var); + + class_Arm_display(&_fo4_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_4_var); + + class_Guide_four_side_display(&_g4b1_var); + + class_Guide_four_side_display(&_g4b2_var); + + class_Guide_four_side_display(&_g4b3_var); + + class_Guide_four_side_display(&_g4b4_var); + + class_Guide_four_side_display(&_g4b5_var); + + class_Guide_four_side_display(&_g4b6_var); + + class_Guide_four_side_display(&_g5a1_var); + + class_Arm_display(&_fo5_position_var); + + class_MultiDiskChopper_display(&_fo_chopper_5_var); + + class_Guide_four_side_display(&_g5b1_var); + + class_Guide_four_side_display(&_g5b2_var); + + class_Guide_four_side_display(&_g5b3_var); + + class_Guide_four_side_display(&_g5b4_var); + + class_Guide_four_side_display(&_g5b5_var); + + class_Guide_four_side_display(&_g5b6_var); + + class_Guide_four_side_display(&_g6a1_var); + + class_Guide_four_side_display(&_g6a2_var); + + class_Guide_four_side_display(&_g6a3_var); + + class_Arm_display(&_guide_end_var); + + class_Arm_display(&_monitor_3_position_var); + + class_Arm_display(&_start_backend_var); + + class_Arm_display(&_optical_axis_backend_var); + + class_Slit_display(&_pinhole_2_var); + + class_Graphite_Diffuser_display(&_graph_var); + + class_Arm_display(&_sample_monitor_arm_var); + + class_Monitor_nD_display(&_sample_PSD_var); + + class_Monitor_nD_display(&_profile_x_var); + + class_Monitor_nD_display(&_profile_y_var); + + class_Monitor_nD_display(&_wavelength_var); + + class_Monitor_nD_display(&_tof_var); + + class_Monitor_nD_display(&_wavelength_tof_var); + + class_Arm_display(&_sample_position_var); + + printf("MCDISPLAY: end\n"); + + return(0); +} /* display */ + +void* _getvar_parameters(char* compname) +/* enables settings parameters based use of the GETPAR macro */ +{ + #ifdef OPENACC + #define strcmp(a,b) str_comp(a,b) + #endif + if (!strcmp(compname, "Origin")) return (void *) &(_Origin_var._parameters); + if (!strcmp(compname, "vinROT2")) return (void *) &(_vinROT2_var._parameters); + if (!strcmp(compname, "vinROT1")) return (void *) &(_vinROT1_var._parameters); + if (!strcmp(compname, "vin")) return (void *) &(_vin_var._parameters); + if (!strcmp(compname, "Sphere1")) return (void *) &(_Sphere1_var._parameters); + if (!strcmp(compname, "Source")) return (void *) &(_Source_var._parameters); + if (!strcmp(compname, "optical_axis")) return (void *) &(_optical_axis_var._parameters); + if (!strcmp(compname, "Sphere0")) return (void *) &(_Sphere0_var._parameters); + if (!strcmp(compname, "Focus_cut")) return (void *) &(_Focus_cut_var._parameters); + if (!strcmp(compname, "PSD_cut")) return (void *) &(_PSD_cut_var._parameters); + if (!strcmp(compname, "BackTrace")) return (void *) &(_BackTrace_var._parameters); + if (!strcmp(compname, "PSD_Backtrace")) return (void *) &(_PSD_Backtrace_var._parameters); + if (!strcmp(compname, "Start_of_bi")) return (void *) &(_Start_of_bi_var._parameters); + if (!strcmp(compname, "bi")) return (void *) &(_bi_var._parameters); + if (!strcmp(compname, "End_of_bi")) return (void *) &(_End_of_bi_var._parameters); + if (!strcmp(compname, "NBOA_drawing_1_end")) return (void *) &(_NBOA_drawing_1_end_var._parameters); + if (!strcmp(compname, "g1a2")) return (void *) &(_g1a2_var._parameters); + if (!strcmp(compname, "g1a3")) return (void *) &(_g1a3_var._parameters); + if (!strcmp(compname, "g1b1")) return (void *) &(_g1b1_var._parameters); + if (!strcmp(compname, "g1c1")) return (void *) &(_g1c1_var._parameters); + if (!strcmp(compname, "wfm_position")) return (void *) &(_wfm_position_var._parameters); + if (!strcmp(compname, "wfm_1_position")) return (void *) &(_wfm_1_position_var._parameters); + if (!strcmp(compname, "wfmc_1")) return (void *) &(_wfmc_1_var._parameters); + if (!strcmp(compname, "pinhole_1")) return (void *) &(_pinhole_1_var._parameters); + if (!strcmp(compname, "wfm_2_position")) return (void *) &(_wfm_2_position_var._parameters); + if (!strcmp(compname, "wfmc_2")) return (void *) &(_wfmc_2_var._parameters); + if (!strcmp(compname, "g2a1")) return (void *) &(_g2a1_var._parameters); + if (!strcmp(compname, "monitor_1_position")) return (void *) &(_monitor_1_position_var._parameters); + if (!strcmp(compname, "g2a2")) return (void *) &(_g2a2_var._parameters); + if (!strcmp(compname, "fo1_position")) return (void *) &(_fo1_position_var._parameters); + if (!strcmp(compname, "fo_chopper_1")) return (void *) &(_fo_chopper_1_var._parameters); + if (!strcmp(compname, "bp1_position")) return (void *) &(_bp1_position_var._parameters); + if (!strcmp(compname, "bp1_chopper")) return (void *) &(_bp1_chopper_var._parameters); + if (!strcmp(compname, "g2b1")) return (void *) &(_g2b1_var._parameters); + if (!strcmp(compname, "g2b2")) return (void *) &(_g2b2_var._parameters); + if (!strcmp(compname, "g2b3")) return (void *) &(_g2b3_var._parameters); + if (!strcmp(compname, "g2b4")) return (void *) &(_g2b4_var._parameters); + if (!strcmp(compname, "fo2_position")) return (void *) &(_fo2_position_var._parameters); + if (!strcmp(compname, "fo_chopper_2")) return (void *) &(_fo_chopper_2_var._parameters); + if (!strcmp(compname, "bp2_position")) return (void *) &(_bp2_position_var._parameters); + if (!strcmp(compname, "bp_chopper2")) return (void *) &(_bp_chopper2_var._parameters); + if (!strcmp(compname, "g2c1")) return (void *) &(_g2c1_var._parameters); + if (!strcmp(compname, "t0_start_position")) return (void *) &(_t0_start_position_var._parameters); + if (!strcmp(compname, "t0_chopper_alpha")) return (void *) &(_t0_chopper_alpha_var._parameters); + if (!strcmp(compname, "t0_end_position")) return (void *) &(_t0_end_position_var._parameters); + if (!strcmp(compname, "t0_chopper_beta")) return (void *) &(_t0_chopper_beta_var._parameters); + if (!strcmp(compname, "g3a1")) return (void *) &(_g3a1_var._parameters); + if (!strcmp(compname, "g3a2")) return (void *) &(_g3a2_var._parameters); + if (!strcmp(compname, "fo3_position")) return (void *) &(_fo3_position_var._parameters); + if (!strcmp(compname, "fo_chopper_3")) return (void *) &(_fo_chopper_3_var._parameters); + if (!strcmp(compname, "g3b1")) return (void *) &(_g3b1_var._parameters); + if (!strcmp(compname, "g4a1")) return (void *) &(_g4a1_var._parameters); + if (!strcmp(compname, "monitor_2_position")) return (void *) &(_monitor_2_position_var._parameters); + if (!strcmp(compname, "g4a2")) return (void *) &(_g4a2_var._parameters); + if (!strcmp(compname, "g4a3")) return (void *) &(_g4a3_var._parameters); + if (!strcmp(compname, "fo4_position")) return (void *) &(_fo4_position_var._parameters); + if (!strcmp(compname, "fo_chopper_4")) return (void *) &(_fo_chopper_4_var._parameters); + if (!strcmp(compname, "g4b1")) return (void *) &(_g4b1_var._parameters); + if (!strcmp(compname, "g4b2")) return (void *) &(_g4b2_var._parameters); + if (!strcmp(compname, "g4b3")) return (void *) &(_g4b3_var._parameters); + if (!strcmp(compname, "g4b4")) return (void *) &(_g4b4_var._parameters); + if (!strcmp(compname, "g4b5")) return (void *) &(_g4b5_var._parameters); + if (!strcmp(compname, "g4b6")) return (void *) &(_g4b6_var._parameters); + if (!strcmp(compname, "g5a1")) return (void *) &(_g5a1_var._parameters); + if (!strcmp(compname, "fo5_position")) return (void *) &(_fo5_position_var._parameters); + if (!strcmp(compname, "fo_chopper_5")) return (void *) &(_fo_chopper_5_var._parameters); + if (!strcmp(compname, "g5b1")) return (void *) &(_g5b1_var._parameters); + if (!strcmp(compname, "g5b2")) return (void *) &(_g5b2_var._parameters); + if (!strcmp(compname, "g5b3")) return (void *) &(_g5b3_var._parameters); + if (!strcmp(compname, "g5b4")) return (void *) &(_g5b4_var._parameters); + if (!strcmp(compname, "g5b5")) return (void *) &(_g5b5_var._parameters); + if (!strcmp(compname, "g5b6")) return (void *) &(_g5b6_var._parameters); + if (!strcmp(compname, "g6a1")) return (void *) &(_g6a1_var._parameters); + if (!strcmp(compname, "g6a2")) return (void *) &(_g6a2_var._parameters); + if (!strcmp(compname, "g6a3")) return (void *) &(_g6a3_var._parameters); + if (!strcmp(compname, "guide_end")) return (void *) &(_guide_end_var._parameters); + if (!strcmp(compname, "monitor_3_position")) return (void *) &(_monitor_3_position_var._parameters); + if (!strcmp(compname, "start_backend")) return (void *) &(_start_backend_var._parameters); + if (!strcmp(compname, "optical_axis_backend")) return (void *) &(_optical_axis_backend_var._parameters); + if (!strcmp(compname, "pinhole_2")) return (void *) &(_pinhole_2_var._parameters); + if (!strcmp(compname, "graph")) return (void *) &(_graph_var._parameters); + if (!strcmp(compname, "sample_monitor_arm")) return (void *) &(_sample_monitor_arm_var._parameters); + if (!strcmp(compname, "sample_PSD")) return (void *) &(_sample_PSD_var._parameters); + if (!strcmp(compname, "profile_x")) return (void *) &(_profile_x_var._parameters); + if (!strcmp(compname, "profile_y")) return (void *) &(_profile_y_var._parameters); + if (!strcmp(compname, "wavelength")) return (void *) &(_wavelength_var._parameters); + if (!strcmp(compname, "tof")) return (void *) &(_tof_var._parameters); + if (!strcmp(compname, "wavelength_tof")) return (void *) &(_wavelength_tof_var._parameters); + if (!strcmp(compname, "sample_position")) return (void *) &(_sample_position_var._parameters); + return 0; +} + +void* _get_particle_var(char *token, _class_particle *p) +/* enables setpars based use of GET_PARTICLE_DVAR macro and similar */ +{ + return 0; +} + +int _getcomp_index(char* compname) +/* Enables retrieving the component position & rotation when the index is not known. + * Component indexing into MACROS, e.g., POS_A_COMP_INDEX, are 1-based! */ +{ + if (!strcmp(compname, "Origin")) return 1; + if (!strcmp(compname, "vinROT2")) return 2; + if (!strcmp(compname, "vinROT1")) return 3; + if (!strcmp(compname, "vin")) return 4; + if (!strcmp(compname, "Sphere1")) return 5; + if (!strcmp(compname, "Source")) return 6; + if (!strcmp(compname, "optical_axis")) return 7; + if (!strcmp(compname, "Sphere0")) return 8; + if (!strcmp(compname, "Focus_cut")) return 9; + if (!strcmp(compname, "PSD_cut")) return 10; + if (!strcmp(compname, "BackTrace")) return 11; + if (!strcmp(compname, "PSD_Backtrace")) return 12; + if (!strcmp(compname, "Start_of_bi")) return 13; + if (!strcmp(compname, "bi")) return 14; + if (!strcmp(compname, "End_of_bi")) return 15; + if (!strcmp(compname, "NBOA_drawing_1_end")) return 16; + if (!strcmp(compname, "g1a2")) return 17; + if (!strcmp(compname, "g1a3")) return 18; + if (!strcmp(compname, "g1b1")) return 19; + if (!strcmp(compname, "g1c1")) return 20; + if (!strcmp(compname, "wfm_position")) return 21; + if (!strcmp(compname, "wfm_1_position")) return 22; + if (!strcmp(compname, "wfmc_1")) return 23; + if (!strcmp(compname, "pinhole_1")) return 24; + if (!strcmp(compname, "wfm_2_position")) return 25; + if (!strcmp(compname, "wfmc_2")) return 26; + if (!strcmp(compname, "g2a1")) return 27; + if (!strcmp(compname, "monitor_1_position")) return 28; + if (!strcmp(compname, "g2a2")) return 29; + if (!strcmp(compname, "fo1_position")) return 30; + if (!strcmp(compname, "fo_chopper_1")) return 31; + if (!strcmp(compname, "bp1_position")) return 32; + if (!strcmp(compname, "bp1_chopper")) return 33; + if (!strcmp(compname, "g2b1")) return 34; + if (!strcmp(compname, "g2b2")) return 35; + if (!strcmp(compname, "g2b3")) return 36; + if (!strcmp(compname, "g2b4")) return 37; + if (!strcmp(compname, "fo2_position")) return 38; + if (!strcmp(compname, "fo_chopper_2")) return 39; + if (!strcmp(compname, "bp2_position")) return 40; + if (!strcmp(compname, "bp_chopper2")) return 41; + if (!strcmp(compname, "g2c1")) return 42; + if (!strcmp(compname, "t0_start_position")) return 43; + if (!strcmp(compname, "t0_chopper_alpha")) return 44; + if (!strcmp(compname, "t0_end_position")) return 45; + if (!strcmp(compname, "t0_chopper_beta")) return 46; + if (!strcmp(compname, "g3a1")) return 47; + if (!strcmp(compname, "g3a2")) return 48; + if (!strcmp(compname, "fo3_position")) return 49; + if (!strcmp(compname, "fo_chopper_3")) return 50; + if (!strcmp(compname, "g3b1")) return 51; + if (!strcmp(compname, "g4a1")) return 52; + if (!strcmp(compname, "monitor_2_position")) return 53; + if (!strcmp(compname, "g4a2")) return 54; + if (!strcmp(compname, "g4a3")) return 55; + if (!strcmp(compname, "fo4_position")) return 56; + if (!strcmp(compname, "fo_chopper_4")) return 57; + if (!strcmp(compname, "g4b1")) return 58; + if (!strcmp(compname, "g4b2")) return 59; + if (!strcmp(compname, "g4b3")) return 60; + if (!strcmp(compname, "g4b4")) return 61; + if (!strcmp(compname, "g4b5")) return 62; + if (!strcmp(compname, "g4b6")) return 63; + if (!strcmp(compname, "g5a1")) return 64; + if (!strcmp(compname, "fo5_position")) return 65; + if (!strcmp(compname, "fo_chopper_5")) return 66; + if (!strcmp(compname, "g5b1")) return 67; + if (!strcmp(compname, "g5b2")) return 68; + if (!strcmp(compname, "g5b3")) return 69; + if (!strcmp(compname, "g5b4")) return 70; + if (!strcmp(compname, "g5b5")) return 71; + if (!strcmp(compname, "g5b6")) return 72; + if (!strcmp(compname, "g6a1")) return 73; + if (!strcmp(compname, "g6a2")) return 74; + if (!strcmp(compname, "g6a3")) return 75; + if (!strcmp(compname, "guide_end")) return 76; + if (!strcmp(compname, "monitor_3_position")) return 77; + if (!strcmp(compname, "start_backend")) return 78; + if (!strcmp(compname, "optical_axis_backend")) return 79; + if (!strcmp(compname, "pinhole_2")) return 80; + if (!strcmp(compname, "graph")) return 81; + if (!strcmp(compname, "sample_monitor_arm")) return 82; + if (!strcmp(compname, "sample_PSD")) return 83; + if (!strcmp(compname, "profile_x")) return 84; + if (!strcmp(compname, "profile_y")) return 85; + if (!strcmp(compname, "wavelength")) return 86; + if (!strcmp(compname, "tof")) return 87; + if (!strcmp(compname, "wavelength_tof")) return 88; + if (!strcmp(compname, "sample_position")) return 89; + return -1; +} + +/* embedding file "metadata-r.c" */ + +/** --- Contents of metadata-r.c ---------------------------------------------------------------------------------- */ +// Created by Gregory Tucker, Data Management Software Centre, European Spallation Source ERIC on 07/07/23. +#ifndef MCCODE_NAME +#include "metadata-r.h" +#endif + +char * metadata_table_key_component(char* key){ + if (strlen(key) == 0) return NULL; + char sep[2] = ":\0"; // matches any number of repeated colons + // look for the separator in the provided key; strtok is allowed to modify the string, so copy it + char * tok = malloc((strlen(key) + 1) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) -- but we need to move the pointer + char * comp = malloc((1 + strlen(pch)) * sizeof(char)); + if (!comp) { + fprintf(stderr,"Error allocating comp\n"); + exit(-1); + } + strcpy(comp, pch); + if (tok) free(tok); + return comp; +} +char * metadata_table_key_literal(char * key){ + if (strlen(key) == 0) return NULL; + char sep[3] = ":\0"; + char * tok = malloc((strlen(key) + 1 ) * sizeof(char)); + if (!tok) { + fprintf(stderr,"Error allocating token\n"); + exit(-1); + } + strcpy(tok, key); + char * pch = strtok(tok, sep); // this *is* the component name (if provided) + if (pch) pch = strtok(NULL, sep); // either NULL or the literal name + char * name = NULL; + if (pch) { + name = malloc((1 + strlen(pch)) * sizeof(char)); + if (!name) { + fprintf(stderr,"Error allocating name\n"); + exit(-1); + } + strcpy(name, pch); + } + if (tok) free(tok); + return name; +} +int metadata_table_defined(int no, metadata_table_t * tab, char * key){ + if (strlen(key) == 0){ + /* This is 0 instead of `no` independent of any wildcard-matching logic + * because a caller _already_ knows `no` and can verify + * that `key` is not "" at call-time. So returning `no` is useless. + */ + return 0; + } + char * comp = metadata_table_key_component(key); + char * name = metadata_table_key_literal(key); + // look through the table for the matching component and literal names + int number = 0; + for (int i=0; i 1) { + MPI_MASTER( + printf("Simulation '%s' (%s): running on %i nodes (master is '%s', MPI version %i.%i).\n", + instrument_name, instrument_source, mpi_node_count, mpi_node_name, MPI_VERSION, MPI_SUBVERSION); + ); + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per noe */ + } +#endif /* USE_MPI */ + +#ifdef OPENACC +#ifdef USE_MPI + int num_devices = acc_get_num_devices(acc_device_nvidia); + if(num_devices>0){ + int my_device = mpi_node_rank % num_devices; + acc_set_device_num( my_device, acc_device_nvidia ); + printf("Have found %d GPU devices on rank %d. Will use device %d.\n", num_devices, mpi_node_rank, my_device); + }else{ + printf("There was an issue probing acc_get_num_devices, fallback to host\n"); + acc_set_device_type( acc_device_host ); + } +#endif +#endif + + /* *** parse options ******************************************************* */ + SIG_MESSAGE("[" __FILE__ "] main START"); + mcformat = getenv(FLAVOR_UPPER "_FORMAT") ? + getenv(FLAVOR_UPPER "_FORMAT") : FLAVOR_UPPER; + instrument_exe = argv[0]; /* store the executable path */ + /* read simulation parameters and options */ + mcparseoptions(argc, argv); /* sets output dir and format */ + + +#ifdef USE_MPI + if (mpi_node_count > 1) { + /* share the same seed, then adapt random seed for each node */ + MPI_Bcast(&mcseed, 1, MPI_LONG, 0, MPI_COMM_WORLD); /* root sends its seed to slaves */ + mcseed += mpi_node_rank; /* make sure we use different seeds per node */ + } +#endif + + +/* *** install sig handler, but only once !! after parameters parsing ******* */ +#ifndef NOSIGNALS +#ifdef SIGQUIT + if (signal( SIGQUIT ,sighandler) == SIG_IGN) + signal( SIGQUIT,SIG_IGN); /* quit (ASCII FS) */ +#endif +#ifdef SIGABRT + if (signal( SIGABRT ,sighandler) == SIG_IGN) + signal( SIGABRT,SIG_IGN); /* used by abort, replace SIGIOT in the future */ +#endif +#ifdef SIGTERM + if (signal( SIGTERM ,sighandler) == SIG_IGN) + signal( SIGTERM,SIG_IGN); /* software termination signal from kill */ +#endif +#ifdef SIGUSR1 + if (signal( SIGUSR1 ,sighandler) == SIG_IGN) + signal( SIGUSR1,SIG_IGN); /* display simulation status */ +#endif +#ifdef SIGUSR2 + if (signal( SIGUSR2 ,sighandler) == SIG_IGN) + signal( SIGUSR2,SIG_IGN); +#endif +#ifdef SIGHUP + if (signal( SIGHUP ,sighandler) == SIG_IGN) + signal( SIGHUP,SIG_IGN); +#endif +#ifdef SIGILL + if (signal( SIGILL ,sighandler) == SIG_IGN) + signal( SIGILL,SIG_IGN); /* illegal instruction (not reset when caught) */ +#endif +#ifdef SIGFPE + if (signal( SIGFPE ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* floating point exception */ +#endif +#ifdef SIGBUS + if (signal( SIGBUS ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* bus error */ +#endif +#ifdef SIGSEGV + if (signal( SIGSEGV ,sighandler) == SIG_IGN) + signal( SIGSEGV,SIG_IGN); /* segmentation violation */ +#endif +#endif /* !NOSIGNALS */ + + + // init executed by master/host + siminfo_init(NULL); /* open SIM */ + SIG_MESSAGE("[" __FILE__ "] main INITIALISE"); + init(); + + +#ifndef NOSIGNALS +#ifdef SIGINT + if (signal( SIGINT ,sighandler) == SIG_IGN) + signal( SIGINT,SIG_IGN); /* interrupt (rubout) only after INIT */ +#endif +#endif /* !NOSIGNALS */ + +/* ================ main particle generation/propagation loop ================ */ +#ifdef USE_MPI + /* sliced Ncount on each MPI node */ + mcncount = mpi_node_count > 1 ? + floor(mcncount / mpi_node_count) : + mcncount; /* number of rays per node */ +#endif + +// MT specific init, note that per-ray init is empty +#if RNG_ALG == 2 + mt_srandom(mcseed); +#endif + + +// main raytrace work loop +#ifndef FUNNEL + // legacy version + raytrace_all(mcncount, mcseed); +#else + MPI_MASTER( + // "funneled" version in which propagation is more parallelizable + printf("\nNOTE: CPU COMPONENT grammar activated:\n 1) \"FUNNEL\" raytrace algorithm enabled.\n 2) Any SPLIT's are dynamically allocated based on available buffer size. \n"); + ); + raytrace_all_funnel(mcncount, mcseed); +#endif + + +#ifdef USE_MPI + /* merge run_num from MPI nodes */ + if (mpi_node_count > 1) { + double mcrun_num_double = (double)mcrun_num; + mc_MPI_Sum(&mcrun_num_double, 1); + mcrun_num = (unsigned long long)mcrun_num_double; + } +#endif + + + // save/finally executed by master node/thread/host + finally(); + + +#ifdef USE_MPI + MPI_Finalize(); +#endif /* USE_MPI */ + + + return 0; +} /* mccode_main */ +/* End of file "mccode_main.c". */ + +/* end of generated C code ./ODIN_MCPL_TOF_train4.c */ diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/mccode.dat b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/mccode.dat new file mode 100644 index 0000000000..64de17763c --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/mccode.dat @@ -0,0 +1,16 @@ +# Instrument-source: 'ODIN_MCPL_TOF_train4.instr' +# Date: Sun Mar 01 17 38 2026 +# Ncount: 1000000 +# Numpoints: 2 +# Param: filter = 0 +# type: multiarray_1d(2) +# title: Scan of filter +# xlabel: 'filter' +# ylabel: 'Intensity' +# xvars: filter +# yvars: (Sphere1_I,Sphere1_ERR) (Sphere0_I,Sphere0_ERR) (PSD_cut_I,PSD_cut_ERR) (PSD_Backtrace_I,PSD_Backtrace_ERR) (sample_PSD_I,sample_PSD_ERR) (profile_x_I,profile_x_ERR) (profile_y_I,profile_y_ERR) (wavelength_I,wavelength_ERR) (tof_I,tof_ERR) (wavelength_tof_I,wavelength_tof_ERR) +# xlimits: 0 1 +# filename: mccode.dat +# variables: filter Sphere1_I Sphere1_ERR Sphere0_I Sphere0_ERR PSD_cut_I PSD_cut_ERR PSD_Backtrace_I PSD_Backtrace_ERR sample_PSD_I sample_PSD_ERR profile_x_I profile_x_ERR profile_y_I profile_y_ERR wavelength_I wavelength_ERR tof_I tof_ERR wavelength_tof_I wavelength_tof_ERR +0 1846120000000000.0 14568900000000.0 1846120000000000.0 14568900000000.0 271826000000.0 26657100000.0 367836000000000.0 1965900000000.0 2409320000.0 81757600.0 2409320000.0 81757600.0 2409320000.0 81757600.0 2409320000.0 81757600.0 2409320000.0 81757600.0 2409320000.0 81757600.0 +1 10833000000000.0 327214000000.0 5470790000000.0 238132000000.0 85094100000.0 2191340000.0 368338000000000.0 1965960000000.0 2525720000.0 92818100.0 2525720000.0 92818100.0 2525720000.0 92818100.0 2525720000.0 92818100.0 2525720000.0 92818100.0 2525720000.0 92818100.0 diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/mccode.sim b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/mccode.sim new file mode 100644 index 0000000000..cf3d00c96d --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Filterscan/mccode.sim @@ -0,0 +1,27 @@ +begin instrument: + Creator: mcstas 3.99.99 + Source: ODIN_MCPL_TOF_train4.instr + Parameters: filter + Trace_enabled: no + Default_main: yes + Embedded_runtime: yes +end instrument + +begin simulation +Date: Sun Mar 01 17 38 2026 +Ncount: 1000000 +Numpoints: 2 +Param: filter = 0, filter = 1 +end simulation + +begin data +type: multiarray_1d(2) +title: Scan of filter +xvars: filter +yvars: (Sphere1_I,Sphere1_ERR (Sphere0_I,Sphere0_ERR (PSD_cut_I,PSD_cut_ERR (PSD_Backtrace_I,PSD_Backtrace_ERR (sample_PSD_I,sample_PSD_ERR (profile_x_I,profile_x_ERR (profile_y_I,profile_y_ERR (wavelength_I,wavelength_ERR (tof_I,tof_ERR (wavelength_tof_I,wavelength_tof_ERR +xlabel: 'filter' +ylabel: 'Intensity' +xlimits: 0 1 +filename: mccode.dat +variables: filterSphere1_I Sphere1_ERR Sphere0_I Sphere0_ERR PSD_cut_I PSD_cut_ERR PSD_Backtrace_I PSD_Backtrace_ERR sample_PSD_I sample_PSD_ERR profile_x_I profile_x_ERR profile_y_I profile_y_ERR wavelength_I wavelength_ERR tof_I tof_ERR wavelength_tof_I wavelength_tof_ERR +end data diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Graphite_Diffuser.comp new file mode 100644 index 0000000000..ea21aa714e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Graphite_Diffuser.comp @@ -0,0 +1,115 @@ +/******************************************************************************* +* +* McStas, version 1.2 released February 2000 +* Maintained by Kristian Nielsen and Kim Lefmann, +* Risoe National Laboratory, Roskilde, Denmark +* +* %IDENTIFICATION +* +* Written by: Manuel Morgano +* Date: 18 Febrauary 2015 +* Version: $Revision: 1.1.1.1 $ +* Origin: PSI +* +* Graphite diffuser +* +* %DESCRIPTION +* +* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics +* +* The formula has only been verified for a diffuser thickness of 1 and 2 cm. +* No absorption is take into account. +* +* %PARAMETERS +* +* INPUT PARAMETERS: +* +* xwidth: (m) Size of diffuser +* ywidth: (m) Size of diffuser +* thick: (m) Thickness of diffuser +* abs (1) 0 = no absorption, 1 = absorption +* %LINKS +* %END +* +*******************************************************************************/ + +DEFINE COMPONENT Graphite_Diffuser +DEFINITION PARAMETERS () +SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) +OUTPUT PARAMETERS () +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) +SHARE +%{ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} +%} +INITIALIZE +%{ +%} +TRACE +%{ + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi +* Date: 14th Feb 2000. +* Origin: ILL +* Release: McStas 1.6 +* Version: $Revision$ +* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi +* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) +* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster +* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) +* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) +* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) +* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) +* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) +* +* This component is a general Monitor that can output 0/1/2D signals +* (Intensity or signal vs. [something] and vs. [something] ...) +* +* %Description +* This component is a general Monitor that can output 0/1/2D signals +* It can produce many 1D signals (one for any variable specified in +* option list), or a single 2D output (two variables correlation). +* Also, an additional 'list' of neutron events can be produced. +* By default, monitor is square (in x/y plane). A disk shape is also possible +* The 'cylinder' and 'banana' option will change that for a banana shape +* The 'sphere' option simulates spherical detector. The 'box' is a box. +* The cylinder, sphere and banana should be centered on the scattering point. +* The monitored flux may be per monitor unit area, and weighted by +* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. +* In normal configuration, the Monitor_nD measures the current parameters +* of the neutron that is beeing detected. But a PreMonitor_nD component can +* be used in order to study correlations between a neutron being detected in +* a Monitor_nD place, and given parameters that are monitored elsewhere +* (at PreMonitor_nD). +* The monitor can also act as a 3He gas detector, taking into account the +* detection efficiency. +* +* The 'bins' and 'limits' modifiers are to be used after each variable, +* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 +* limits=[-5 5]) When placed after all variables, these two latter modifiers +* apply to the signal (e.g. intensity). Unknown keywords are ignored. +* If no limits are specified for a given observable, reasonable defaults will be +* applied. Note that these implicit limits are even applied in list mode. +* +* Implicit limits for typical variables: +* (consult monitor_nd-lib.c if you don't find your variable here) +* x, y, z: Derived from detection-object geometry +* k: [0 10] Angs-1 +* v: [0 1e6] m/s +* t: [0 1] s +* p: [0 FLT_MAX] in intensity-units +* vx, vy: [-1000 1000] m/s +* vz: [0 10000] m/s +* kx, ky: [-1 1] Angs-1 +* kz: [-10 10] Angs-1 +* energy, omega: [0 100] meV +* lambda,wavelength: [0 100] Angs +* sx, sy, sz: [-1 1] in polarisation-units +* angle: [-50 50] deg +* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg +* longitude, lattitude: [-180 180] deg +* neutron: [0 simulaton_ncount] +* id, pixel id: [0 FLT_MAX] +* uservars u1,u2,u3: [-1e10 1e10] +* +* In the case of multiple components at the same position, the 'parallel' +* keyword must be used in each instance instead of defining a GROUP. +* +* Possible options are +* Variables to record: +* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm +* vx vy vz v [m/s] Velocity on x,y,z and norm +* x y z radius [m] Distance, Position and norm +* xy, yz, xz [m] Radial position in xy, yz and xz plane +* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane +* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane +* t time [s] Time of Flight +* energy omega [meV] energy of neutron +* lambda wavelength [Angs] wavelength of neutron +* sx sy sz [1] Spin +* vdiv ydiv dy [deg] vertical divergence (y) +* hdiv divergence xdiv [deg] horizontal divergence (x) +* angle [deg] divergence from direction +* theta longitude [deg] longitude (x/z) for sphere and cylinder +* phi lattitude [deg] lattitude (y/z) for sphere and cylinder +* +* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} +* user2 user3 to be assigned in an other component (see below) +* +* p intensity flux [n/s or n/cm^2/s] +* ncounts n neutron [1] neutron ID, i.e current event index +* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. +* +* Other options keywords are: +* abs Will monitor the abs of the following variable or of the signal (if used after all variables) +* auto Automatically set detector limits for one/all +* all {limits|bins|auto} To set all limits or bins values or auto mode +* binary {float|double} with 'source' option, saves in compact files +* bins=[bins=20] Number of bins in the detector along dimension +* borders To also count off-limits neutrons (X < min or X > max) +* capture weight by lambda/lambda(2200m/s) capture flux +* file=string Detector image file name. default is component name, plus date and variable extension. +* incoming Monitor incoming beam in non flat det +* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) +* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events +* log Will monitor the log of the following variable or of the signal (if used after all variables) +* min=[min_value] Same as limits, but only sets the min or max +* max=[max_value] +* multiple Create multiple independant 1D monitors files +* no or not Revert next option +* outgoing Monitor outgoing beam (default) +* parallel Use this option when the next component is at the same position (parallel components) +* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. +* per steradian Displays beam solid angle in steradian +* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. +* signal=[var] Will monitor [var] instead of usual intensity +* slit or absorb Absorb neutrons that are out detector +* source The monitor will save neutron states +* inactivate To inactivate detector (0D detector) +* verbose To display additional informations +* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) +* +* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) +* box Box of size xwidth, yheight, zdepth. +* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). +* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). +* disk Disk flat xy monitor. diameter is xwidth. +* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). +* square Square flat xy monitor (xwidth, yheight). +* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. +* +* EXAMPLES: +*
    +*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, +*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with +*   borders, file = mon1"); +* will monitor neutron angle from [z] axis, between -5 +* and 5 degrees, in 10 bins, into "mon1.A" output 1D file +* +*
  • options = "sphere theta phi outgoing" +* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" +* +*
  • options = "banana, theta limits=[10,130], bins=120, y" +* a theta/height banana detector +* +*
  • options = "angle radius all auto" +* is a 2D monitor with automatic limits +* +*
  • options = "list=1000 kx ky kz energy" +* records 1000 neutron event in a file +* +*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" +* makes 4 output 1D files and produces a complete list for all neutrons +* and monitor log(abs(tof)) within automatic limits (for t) +* +*
  • options = "theta y, sphere, pixel min=100" +* a 4pi detector which outputs an event list with pixelID from the actual +* detector surface, starting from index 100. +* +*
+* To dynamically define a number of bins, or limits: +* Use in DECLARE: char op[256]; +* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); +* Use in TRACE: Monitor_nD(... options=op ...) +* +* How to monitor any instrument/component variable into a Monitor_nD +* Suppose you want to monitor a variable 'age' which you assign somwhere in +* the instrument: +* COMPONENT MyMonitor = Monitor_nD( +* xwidth = 0.1, yheight = 0.1, +* user1="age", username1="Age of the Captain [years]", +* options="user1, auto") +* AT ... +* +* See also the example in PreMonitor_nD to +* monitor neutron parameters cross-correlations. +* +* %BUGS +* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI +* as each process may use different limits. +* +* %Parameters +* INPUT PARAMETERS: +* +* xwidth: [m] Width of detector. +* yheight: [m] Height of detector. +* zdepth: [m] Thickness of detector (z). +* radius: [m] Radius of sphere/banana shape monitor +* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). +* +* Optional input parameters (override xwidth yheight zdepth): +* xmin: [m] Lower x bound of opening +* xmax: [m] Upper x bound of opening +* ymin: [m] Lower y bound of opening +* ymax: [m] Upper y bound of opening +* zmin: [m] Lower z bound of opening +* zmax: [m] Upper z bound of opening +* filename: [str] Output file name (overrides file=XX option). +* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins +* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits +* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits +* user1: [str] Variable name of USERVAR to be monitored by user1. +* user2: [str] Variable name of USERVAR to be monitored by user2. +* user3: [str] Variable name of USERVAR to be monitored by user3. +* username1: [str] Name assigned to User1 +* username2: [str] Name assigned to User2 +* username3: [str] Name assigned to User3 +* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. +* geometry: [str] Name of an OFF file to specify a complex geometry detector +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* DEFS: [struct] structure containing Monitor_nD Defines +* Vars: [struct] structure containing Monitor_nD variables +* +* %Link +* PreMonitor_nD +* +* %End +******************************************************************************/ +DEFINE COMPONENT Monitor_nD + +SETTING PARAMETERS ( + string user1="", string user2="", string user3="", + xwidth=0, yheight=0, zdepth=0, + xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, + int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, + string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, + string username1="NULL", string username2="NULL", string username3="NULL", + int tsplit=0, int adaptive_target=0 +) +/* these are protected C variables */ + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + %include "monitor_nd-lib" + %include "read_table-lib" + %include "interoff-lib" +%} + +DECLARE +%{ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +%} + +INITIALIZE +%{ + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif +%} + +TRACE +%{ + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + double *pp_array=malloc(sizeof(double)*_particle->N_trains); + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + int train_index; + double p_original = p; + double p_factor = p/_particle->p_last_time_manipulation; + + if (adaptive_target) { + #pragma acc atomic + total_N_sent += adaptive_N; + #pragma acc atomic + total_rays_sent++; + } + + if (tsplit==1) { + double t_original = t; + for (train_index=0; train_indexp_trains[train_index] > 0) { + p = p_factor*_particle->p_trains[train_index]; + t = t_original + _particle->t_offset[train_index]; + + pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + if (adaptive_target) total_arrived++; + + } else pp_array[train_index] = 0; + } + p = p_original; + t = t_original; + + int pp_total = 0; + for (train_index=0; train_index 0) { + SCATTER; + } + + } else { + + /* + // Now just use normal p + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + */ + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + } + if(pp_array) free(pp_array); + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } +%} + +FINALLY +%{ + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); +%} + +MCDISPLAY +%{ + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp new file mode 100644 index 0000000000..0ed57d7e3b --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp @@ -0,0 +1,361 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2015, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: MultiDiskChopper +* +* %I +* Written by: Markus Appel +* Date: 2015-10-19 +* Origin: ILL / FAU Erlangen-Nuernberg +* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), +* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disk chopper with a freely configurable slit pattern. For simple applications, +* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. +* If the chopper slit pattern should be dynamically configurable or a complicated pattern +* is to be used as first chopper on a continuous source, use this component. +* +* Width and position of the slits is defined as a list in string parameters so +* they can easily be taken from instrument parameters. +* The chopper axis is located on the y axis as defined by the parameter delta_y. +* When the chopper is the first chopper after a continuous (i.e. time-independent) +* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. +* +* +* Examples (see parameter definitions for details): +* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, delay=0.02) +* +* First chopper on a continuous source, creating pulse trains for one additional revolution +* before and after the revolution at t=0: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) +* +* %P +* INPUT PARAMETERS: +* +* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" +* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) +* nslits: [] Number of slits to read from slit_width and slit_center +* radius: [m] Outer radius of the disk +* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. +* nu: [Hz] Rotation speed of the disk, the sign determines the direction. +* +* Optional parameters: +* verbose: [0/1] Set to 1 to display more information during the simulation. +* phase: [deg] Phase angle located on top of the disk at t=delay (see below). +* delay: [s] Time delay of the chopper clock. +* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. +* jitter: [s] Jitter in the time phase. +* abs_out: If 1, absorb all neutrons outside the disk diameter. +* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events +* will be shifted in time to pass the component (with adapted weight). +* +* Additional parameters when isfirst=1 (that have no effect for isfirst=0): +* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. +* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). +* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT MultiDiskChopper + +SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) + + +DECLARE +%{ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +%} + +INITIALIZE +%{ + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + %} + +TRACE +%{ + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/_particle->p_last_time_manipulation; + _particle->p_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + int this_t_hit; + double this_train_t; + int all_dead = 1; + double p_total = 0; + for (train_index=0; train_indexp_trains[train_index] == 0) continue; + all_dead = 0; + + this_train_t = t + _particle->t_offset[train_index]; + // where does the neutron hit the disk ? + phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); + + // does the neutron hit one of the slits ? + islit = 0; + this_t_hit = 0; + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) + this_t_hit = 1; + + islit++; + } + if (this_t_hit == 0) _particle->p_trains[train_index] = 0; + else { + one_did_hit = 1; + _particle->p_trains[train_index] *= weight_update; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + } + // if not a single t_offset made it through a slit, absorb this ray + if (!one_did_hit || all_dead) ABSORB; + + p = _particle->p_last_time_manipulation; + } + } +%} + +FINALLY +%{ + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); +%} + +MCDISPLAY +%{ + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr new file mode 100644 index 0000000000..ce5c514233 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr @@ -0,0 +1,1192 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN_MCPL_baseline +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* Example: -y Detector: tof_I=9.16671e+08 +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN_MCPL_baseline ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2, // 0: no choppers 1: BP 2: WFM +target_tsplit = 3, int filter=1, +int repeat=1,v_smear=0.1,pos_smear=0.01,dir_smear=0.01 +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap +char sector[]="S"; +int beamline=2; + double calcAlpha(double length, double radius) { + // calculate angle of arm after curved guide + return RAD2DEG * length/radius; + } + + double calcX(double length, double radius) { + // calculate position and angle of arm after curved guide + double alpha = DEG2RAD * calcAlpha(length, radius); + return radius*(1.0-cos(alpha)); + } + + double calcZ(double length, double radius) { + // calculate position and angle of arm after curved guide + double alpha = DEG2RAD * calcAlpha(length, radius); + return radius*sin(alpha); + } + + double XW, YH; + char options1[256],options2[256],options3[256],options4[256]; + char srcdef[128]; + double WidthC=0.072,WidthT=0.108; + double lambdamin, lambdamax; + double TCollmin; + double TCollmax; + #pragma acc declare create(TCollmin,TCollmax) + double EminTh=20, EmaxTh=100, EminC=0, EmaxC=20; + #pragma acc declare create(EminTh,EmaxTh,EminC,EmaxC) + /* 10 beamlines in sector N and E - plus one location added for drawing */ + double iBeamlinesN[] = { 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double iBeamlinesE[] = {-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + /* 11 beamlines in sector S and W - plus one location added for drawing */ + double iBeamlinesW[] = { 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double iBeamlinesS[] = {-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double* iBeamlines; + double ANGLE; + double DeltaX,DeltaZ; + char MCPLfile[128]; + int adaptive_N; +long total_arrived; +long total_N_sent; +long total_rays_sent; +%} + +USERVARS +%{ +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + TCollmin=0; + TCollmax=0.06; + iBeamlines=iBeamlinesS; + DeltaX=0.0585; DeltaZ=-0.0925; + + ANGLE=iBeamlines[beamline-1]-90; + if (filter==0) + sprintf(MCPLfile,"%s%i.mcpl.gz",sector,beamline); + else + sprintf(MCPLfile,"%s%i_filtered.mcpl.gz",sector,beamline); + printf("MCPLfile is %s\n",MCPLfile); + +// Don't measure time on windows, CLOCK_REALTIME +// macro is unknown... +// It is indicated in this oagehttps://learn.microsoft.com/en-us/answers/questions/2147256/clock-realtime-is-undefined-in-visual-studio-but-c that it might work to add a high enough _POSIX_C_SOURCE define, i.e. +// #define _POSIX_C_SOURCE 199309L. + +#ifndef _MSC_EXTENSIONS +MPI_MASTER( +struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +#endif +%} + +TRACE + +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE + +/* read neutrons from an mcpl file*/ + +COMPONENT vinROT2 = Arm() +AT(0,0,0) RELATIVE PREVIOUS + ROTATED (0,-90,0) RELATIVE PREVIOUS + +COMPONENT vinROT1 = Arm() +AT(0,0,0) RELATIVE PREVIOUS + ROTATED (-90,0,0) RELATIVE PREVIOUS + +COMPONENT vin = MCPL_input_once(filename=MCPLfile,verbose=1,v_smear=v_smear,pos_smear=pos_smear,dir_smear=dir_smear) +//COMPONENT vin = MCPL_input(filename=MCPLfile,verbose=1,repeat_count=repeat,v_smear=v_smear,pos_smear=pos_smear,dir_smear=dir_smear) +AT(0,0,0) RELATIVE PREVIOUS +EXTEND %{ + SCATTER; + if (!INSTRUMENT_GETPAR(filter)) { + p*=1.56e16; + p/=1e5; + z=z-0.137; + } +%} + +COMPONENT Sphere1 = PSD_monitor_4PI(filename="nonrotated", radius=2.4,restore_neutron=1) +AT (0,0,0) RELATIVE PREVIOUS + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0) +WHEN (0==1) AT (DeltaX,0,DeltaZ) ABSOLUTE +ROTATED (0, ANGLE, 0) ABSOLUTE + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Source + +COMPONENT Sphere0 = PSD_monitor_4PI(filename="rotated", radius=2.2,restore_neutron=1) +AT (0,0,0) RELATIVE Source +EXTEND %{ + ALLOW_BACKPROP; +%} + +COMPONENT Focus_cut=Shape(xwidth=0.01,yheight=0.01) +WHEN (!filter) AT(0,0,2) RELATIVE Source +EXTEND %{ + double xtmp,ytmp,ztmp,vxtmp,vytmp,vztmp; + xtmp=x;ytmp=y;ztmp=z; + vxtmp=vx;vytmp=vy;vztmp=vz; + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + + if (fabs(x)>0.06 || fabs(y)>0.06) { + ABSORB; + } else { + x=xtmp;y=ytmp;z=ztmp; + vx=vxtmp;vy=vytmp;vz=vztmp; + } +%} + +COMPONENT PSD_cut=PSD_monitor(xwidth=0.01,yheight=0.01, restore_neutron=1) +AT(0,0,0) RELATIVE Focus_cut + +COMPONENT BackTrace = Shape(xwidth=0.3,yheight=0.3) +AT (0,0,0.08) RELATIVE Source +EXTEND %{ + /* Propagate back to a small rectangle in front of moderators */ + + ALLOW_BACKPROP; + PROP_Z0; + SCATTER; + if (!INSTRUMENT_GETPAR(filter)) { + /* Remove neutrons that are not from around the moderators */ + if (fabs(x)>0.12 || fabs(y)>0.03) { + ABSORB; + } + double myL = (2*PI/V2K)/sqrt(vx*vx + vy*vy + vz*vz); + if ( myL < INSTRUMENT_GETPAR(l_min) || myL > INSTRUMENT_GETPAR(l_max) ) { + ABSORB; + } + } + + int train_index; + double tZERO = t; + if (total_N_sent == 0) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } else { + long tmp = ceil(INSTRUMENT_GETPAR(target_tsplit)*total_N_sent/total_arrived); + #pragma acc atomic + adaptive_N = tmp; + if (adaptive_N > _particle->N_trains) { + #pragma acc atomic + adaptive_N = _particle->N_trains; + } + } + + for (train_index=0; train_indext_offset[train_index] = t; + _particle->p_trains[train_index] = p/adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=_particle->p_last_time_manipulation; + +%} + +COMPONENT PSD_Backtrace=PSD_monitor(xwidth=0.3,yheight=0.3) +AT(0,0,0) RELATIVE BackTrace +EXTEND %{ + ALLOW_BACKPROP; +%} + + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + + COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + + COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]" + ) + AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + #ifndef _MSC_EXTENSIONS + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); + #endif +%} + +FINALLY +%{ +// Start of finally for generated ODIN +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/bi_spec_ellipse.comp new file mode 100644 index 0000000000..c24fb3cdea --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/bi_spec_ellipse.comp @@ -0,0 +1,794 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2011, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Bi-spectral extracion system +* +* %I +* Written by: Manuel Morgano +* Date: April 2015 +* Version: $Revision: 2.3 $ +* Origin: PSI +* Release: McStas 1.12c +* +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* +* %D +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* The supermirror number can be automatically calculated (setting the number to 0) or given +* Each mirror can be split in submirror pieces, each of them offseted by a constant angle +* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. +* The feeder's shape is calculated by the distance between the guide entrance and the first focus, +* the distance between the exit and the second focus, the length of the coated part and the opening +* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. +* User can specify different shapes for the horizontal and the vertical ellipse. +* Setting the m-coating to 0 means absorbing, -1 means transparent. +* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn +* but it's transparent. +* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. +* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. +* +* +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %P +* INPUT PARAMETERS: +* +* xheight: (m) height of mirror stack +* ywidth: (m) width of mirror plate +* zlength: (m) length of the mirror +* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) +* n_pieces (1) number of straight section per mirror +* tilt (degrees) angle between the mirrors and the horizontal direction +* angular_offset (degrees) angle between subsequent sub-mirrors +* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. +* R0_m: (1) Low-angle reflectivity +* Qc_m: (AA-1) Critical scattering vector +* alpha_mirror_m: (AA) Slope of reflectivity +* W_m: (AA-1) Width of supermirror cut-off +* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. +* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. +* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. +* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. +* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. +* ell_l: (m) length of the coated part of the ellipse +* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors +* ell_w: (m) width of the ellipse entrance +* ell_m: (1) m-value of the coating of the ellipse +* R0: (1) Low-angle reflectivity +* Qc: (AA-1) Critical scattering vector +* alpha_mirror: (AA) Slope of reflectivity +* W: (AA-1) Width of supermirror cut-off +* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* cut: (1) cutoff for lowest reflectivity consideration. +* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file +* +* %D +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT bi_spec_ellipse +DEFINITION PARAMETERS () + SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) +OUTPUT PARAMETERS (pTable) +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) + +SHARE +%{ +%include "read_table-lib" +%} + +DECLARE +%{ + t_Table pTable; + +%} + +INITIALIZE +%{ + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + +%} + +TRACE +%{ + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +%} + +MCDISPLAY +%{ + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i Date: Sun, 1 Mar 2026 19:18:36 +0100 Subject: [PATCH 36/75] Changes for GLOBAL tof-train on CPU, particle-embedded on GPU --- common/lib/share/mccode_main.c | 9 ++++++++ mccode/nlib/share/mcstas-r.c | 5 +++-- mccode/src/cogen.c.in | 38 +++++++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/common/lib/share/mccode_main.c b/common/lib/share/mccode_main.c index d40a112a1d..6835f9956e 100644 --- a/common/lib/share/mccode_main.c +++ b/common/lib/share/mccode_main.c @@ -154,6 +154,15 @@ int mccode_main(int argc, char *argv[]) mt_srandom(mcseed); #endif +#ifndef OPENACC +#ifdef TOF_TRAIN + N_trains=NTOF; /* initialised like e.g. ncount, seed from cmdline */ + t_offset=malloc(NTOF*sizeof(double)); + p_trains=malloc(NTOF*sizeof(double)); + alive_trains=malloc(NTOF*sizeof(int)); +#endif /* TOF_TRAIN */ +#endif /* NOT OPENACC */ + // main raytrace work loop #ifndef FUNNEL diff --git a/mccode/nlib/share/mcstas-r.c b/mccode/nlib/share/mcstas-r.c index 8567a93342..789a93525b 100644 --- a/mccode/nlib/share/mcstas-r.c +++ b/mccode/nlib/share/mcstas-r.c @@ -81,13 +81,14 @@ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, d // what about mcneutron._logic ? mcneutron._logic.dummy=1; // init uservars via cogen'd-function - + #ifdef OPENACC #ifdef TOF_TRAIN mcneutron.N_trains=NTOF; mcneutron.t_offset=malloc(NTOF*sizeof(double)); mcneutron.p_trains=malloc(NTOF*sizeof(double)); mcneutron.alive_trains=malloc(NTOF*sizeof(int)); - #endif + #endif /* TOF_TRAIN */ + #endif /* OPENACC */ particle_uservar_init(&mcneutron); diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index dace5da66a..8d100b9c5d 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1624,6 +1624,17 @@ void def_trace_section(struct instr_def *instr) for(i=0; i%s)", statepars_all[i], statepars_all[i]); + // Defines for _particle-carried TOF-train arrays in case of OPENACC + cout("#ifdef TOF_TRAIN"); + cout("#ifdef OPENACC"); + cout("#define N_trains=_particle->N_trains"); + cout("#define t_offset=_particle->t_offset"); + cout("#define p_trains=_particle->p_trains"); + cout("#define alive_trains=_particle->alive_trains"); + cout("#define p_last_time_manipulation;"); + cout("#endif /* OPENACC */"); + cout("#endif /* TOF_TRAIN */"); + cout("/* if on GPU, globally nullify sprintf,fprintf,printfs */"); cout("/* (Similar defines are available in each comp trace but */"); cout("/* those are not enough to handle external libs etc. ) */"); @@ -1677,6 +1688,16 @@ void undef_trace_section(struct instr_def *instr) for(i = 0; i < NUM_STATE_PARS; i++) coutf("#undef %s", statepars_all[i]); + // Undefines for _particle-carried TOF-train arrays in case of OPENACC + cout("#ifdef OPENACC"); + cout("#ifdef TOF_TRAIN"); + cout("#undef"); + cout("#undef t_offset"); + cout("#undef p_trains"); + cout("#undef alive_trains"); + cout("#endif /* TOF_TRAIN */"); + cout("#endif /* OPENACC */"); + cout("#ifdef OPENACC"); cout("#undef strlen"); cout("#undef strcmp"); @@ -1995,12 +2016,14 @@ int cogen_raytrace(struct instr_def *instr) /* Debugging (final state). */ cout(" DEBUG_STATE()"); - cout(" // If TOF_TRAIN we need to nuke internal arrays!"); + cout(" // If OPENACC/TOF_TRAIN we need to nuke internal arrays!"); + cout(" #ifdef OPENACC"); cout(" #ifdef TOF_TRAIN"); cout(" if (_particle->t_offset) free(_particle->t_offset);"); cout(" if (_particle->p_trains) free(_particle->p_trains);"); cout(" if (_particle->alive_trains) free(_particle->alive_trains);"); cout(" #endif"); + cout(" #endif"); cout(""); cout(" return(_particle->_index);"); coutf("} /* raytrace */"); @@ -2416,6 +2439,17 @@ cogen_header(struct instr_def *instr, char *output_name) cout("#endif"); cout(""); + cout("#ifndef OPENACC"); + cout("#ifdef TOF_TRAIN"); + cout("int N_trains; /* initialised like e.g. ncount, seed from cmdline */"); + cout("double *t_offset;"); + cout("double *p_trains;"); + cout("int *alive_trains;"); + cout("double p_last_time_manipulation;"); + cout("#endif /* TOF_TRAIN */"); + cout("#endif /* NOT OPENACC */"); + cout(""); + /* the max number of user variables*/ cout("#ifndef MC_NUSERVAR"); cout("#define MC_NUSERVAR 10"); @@ -2469,6 +2503,7 @@ cogen_header(struct instr_def *instr, char *output_name) //cout(" randstate_t randstate[RANDSTATE_LEN]"); cout(" randstate_t randstate[7];"); // for the KISS generator cout(" double t, p; /* time, event weight */"); + cout(" #ifdef OPENACC"); cout(" #ifdef TOF_TRAIN"); cout(" int N_trains; /* initialised like e.g. ncount, seed from cmdline */"); cout(" double *t_offset;"); @@ -2480,6 +2515,7 @@ cogen_header(struct instr_def *instr, char *output_name) cout(" #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains)"); cout(" int Ntof_init; /* 0/1 - set to 1 once \"times are filled in\" */"); cout(" #endif /* TOF_TRAIN */"); + cout(" #endif /* OPENACC */"); cout(" long long _uid; /* Unique event ID */"); cout(" long _index; /* component index where to send this event */"); /* these are needed for SCATTERED, ABSORB and RESTORE macros */ From 1a0625748740fa05ea3aa85292386d4db748c07c Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 19:19:08 +0100 Subject: [PATCH 37/75] Prototype-adaptation consequence-edits for global/particle tof-trains --- .../Prototypes/ODIN_TOF_train4/DiskChopper.comp | 16 ++++++++-------- .../ODIN_TOF_train4/ESS_butterfly.comp | 14 +++++++------- .../Prototypes/ODIN_TOF_train4/Monitor_nD.comp | 12 ++++++------ .../ODIN_TOF_train4/MultiDiskChopper.comp | 16 ++++++++-------- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp index 12de0104fb..b0f56a144b 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp @@ -170,8 +170,8 @@ TRACE } else { // Check whether each t_offset carried by the ray make it through - double weight_update = p/_particle->p_last_time_manipulation; - _particle->p_last_time_manipulation = 0; + double weight_update = p/p_last_time_manipulation; + p_last_time_manipulation = 0; int train_index; int one_did_hit = 0; @@ -180,26 +180,26 @@ TRACE for (train_index=0; train_indexp_trains[train_index] == 0) continue; + if (p_trains[train_index] == 0) continue; all_dead = 0; - this_train_t = t + _particle->t_offset[train_index]; + this_train_t = t + t_offset[train_index]; toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); /* does neutron hit outside slit? */ if (fmod (toff + To / 2.0, Tg) > To) - _particle->p_trains[train_index] = 0; // T_ABSORB + p_trains[train_index] = 0; // T_ABSORB else { // T_TRANSMIT one_did_hit = 1; - _particle->p_trains[train_index] *= weight_update; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + p_trains[train_index] *= weight_update; + p_last_time_manipulation += p_trains[train_index]; } } if (!one_did_hit || all_dead) ABSORB; - p = _particle->p_last_time_manipulation; + p = p_last_time_manipulation; } SCATTER; diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp index 860cae79b5..df15dff950 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp @@ -552,14 +552,14 @@ TRACE if (total_N_sent == 0) { #pragma acc atomic - adaptive_N = _particle->N_trains; + adaptive_N = N_trains; } else { long tmp = ceil(target_tsplit*total_N_sent/total_arrived); #pragma acc atomic adaptive_N = tmp; - if (adaptive_N > _particle->N_trains) { + if (adaptive_N > N_trains) { #pragma acc atomic - adaptive_N = _particle->N_trains; + adaptive_N = N_trains; } } @@ -602,13 +602,13 @@ TRACE // Generate ray as normal with its associated p and t // Save these to t_offset and p_train - _particle->t_offset[train_index] = t; - _particle->p_trains[train_index] = p/adaptive_N; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + t_offset[train_index] = t; + p_trains[train_index] = p/adaptive_N; + p_last_time_manipulation += p_trains[train_index]; } // Set base particle t and p, now p will be decoupled from the source intensity. t=0; - p=_particle->p_last_time_manipulation; + p=p_last_time_manipulation; SCATTER; %} diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp index 1ddf35bf8c..0dbdf8d585 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp @@ -424,7 +424,7 @@ TRACE #define thread_offdata offdata #endif - double *pp_array=malloc(sizeof(double)*_particle->N_trains); + double *pp_array=malloc(sizeof(double)*N_trains); /* this is done automatically STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); @@ -571,7 +571,7 @@ TRACE int train_index; double p_original = p; - double p_factor = p/_particle->p_last_time_manipulation; + double p_factor = p/p_last_time_manipulation; if (adaptive_target) { #pragma acc atomic @@ -584,9 +584,9 @@ TRACE double t_original = t; for (train_index=0; train_indexp_trains[train_index] > 0) { - p = p_factor*_particle->p_trains[train_index]; - t = t_original + _particle->t_offset[train_index]; + if (p_trains[train_index] > 0) { + p = p_factor*p_trains[train_index]; + t = t_original + t_offset[train_index]; pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); @@ -613,7 +613,7 @@ TRACE // Now just use normal p double total_p = 0; for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + if (alive_trains[train_index]) total_p += p_original*p_trains[train_index]; } p = total_p; diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp index 0ed57d7e3b..5d89e7f6dc 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp @@ -281,8 +281,8 @@ TRACE } else { // Check whether each t_offset carried by the ray make it through - double weight_update = p/_particle->p_last_time_manipulation; - _particle->p_last_time_manipulation = 0; + double weight_update = p/p_last_time_manipulation; + p_last_time_manipulation = 0; int train_index; int one_did_hit = 0; @@ -292,10 +292,10 @@ TRACE double p_total = 0; for (train_index=0; train_indexp_trains[train_index] == 0) continue; + if (p_trains[train_index] == 0) continue; all_dead = 0; - this_train_t = t + _particle->t_offset[train_index]; + this_train_t = t + t_offset[train_index]; // where does the neutron hit the disk ? phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); @@ -308,17 +308,17 @@ TRACE islit++; } - if (this_t_hit == 0) _particle->p_trains[train_index] = 0; + if (this_t_hit == 0) p_trains[train_index] = 0; else { one_did_hit = 1; - _particle->p_trains[train_index] *= weight_update; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + p_trains[train_index] *= weight_update; + p_last_time_manipulation += p_trains[train_index]; } } // if not a single t_offset made it through a slit, absorb this ray if (!one_did_hit || all_dead) ABSORB; - p = _particle->p_last_time_manipulation; + p = p_last_time_manipulation; } } %} From b80c1d8de83da83da40ba0bcb81f93b5246687e8 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 19:20:26 +0100 Subject: [PATCH 38/75] Retiring train2 / incompatible with latest cogen edits --- .../examples/Prototypes/ODIN_TOF_train2.tgz | Bin 0 -> 36280 bytes .../ODIN_TOF_train2/DiskChopper.comp | 218 ---- .../ODIN_TOF_train2/ESS_butterfly.comp | 615 ---------- .../ODIN_TOF_train2/Graphite_Diffuser.comp | 115 -- .../ODIN_TOF_train2/Monitor_nD.comp | 668 ----------- .../ODIN_TOF_train2/MultiDiskChopper.comp | 351 ------ .../ODIN_TOF_train2/ODIN_TOF_train2.instr | 1018 ----------------- .../ODIN_TOF_train2/bi_spec_ellipse.comp | 794 ------------- 8 files changed, 3779 deletions(-) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2.tgz delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Graphite_Diffuser.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Monitor_nD.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train2/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2.tgz b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..50cacf6c921371afca9c5c77fca5c230dcf74e90 GIT binary patch literal 36280 zcmV)QK(xOfiwFQxgQRHy1MIzPa~sE!D0p@wHa5ijWg~9f{aoT)nE-`HcY`4K5adgd zl*KVc@{p8dkFEyM1R7*p02-&eK?1b>Klb~6+x@yfaPv{GZZ!CiWshgZIL9K;U6qxU zm6es1m6dtCcW~4>KYrawV?P{u^}qcNAIEW8&8DEg>n-~0cx(JueuUd}n@(eW-Dx<& zao64T*55?)_dq89nIx$n11jSn4dR<{FbGDycrub)(@tB_90&daSRlEgJuIud(K;@o%=)n!@p1c=$Kr{Pw2r|NJK(|N83J z{Vc)%#M|y!>L(R33MOeBjYRCvs=!~}aC9lge)qF~89*uZ*^S1tIJ~?{g}b@gs(LW} zD`ICb5cDt+agYS@b_RKwN2AMNl!(LG=<;G#5qrUC=*OR};s>K7 z4bw>~4*f|0|3LZca8wcB#la}L7z7pZI`&81fRNt>o{vVsDBTj7$v`ik9nhZ-aR^UG z;$pTXPLOfL2hBOcAN9n3asjWuAB3aN7f@5|`Dw5vb|#m=Zq>73oCd=SsD*unx5v=a zaI}TpBJj|z(Cvz0)C*!ijp7QG2YOtGNf?b7p}ocB#Z8!A34fACLq83>qI(sE-9SWr z(T$?G7mffak<1c6rov?-LIfa=2Yxr`2|tC_2EnyIO2zV94fl1_og_dg4dje~EQ?++ z1|r}v!>A`g7Yh%fF0>wvYJ~531kVTXMqC6w5IRo9k!Xq}9F76?NfHPgH~eq+`0dH@ z(f-l7IEyAR;N8xSM~UILmyeb!2n%Q(w40T~VK{0#H5b14)3)bSdSQ~by^6&Si$C3H z(ChSpQvpJ=B4$?svLO6$8kIhFx--2Y;DUe6uJBixdiLVt<#$0e4AOY^qJHrb`+60K zOZf;u$H2(IS-ph6cT?za8i^E24SXMnD&!-vk#)2>gO@fF%&& zU=ZEZ6ainwFpWZ-iZHJ=>HMBQ#?JNQXea_d9)vJ;UcL5!-IDNfR77o@gBK(}MnRH@ zo}c;xSuDVo0Td7h(PKeHdqLHH6Y=V^pBK~@5a7t}$R#seQX za|W0s;_dFy39?UjGN369gQSZgIbUgp_4H8Gu+<&xFJLwqq>>HC005Zl+K)p5rFq^U z^60~&X0~K*hfQRA~RGM_AK!dabQo;|{ zc~*l}0^SaY6@chNi3Il}hS7~iNYaboDuhA8hdkM!8E7TjS=XB7(DVh4$z()K_F_l8 zIo*HVUcO4x@m9SK{W3f?>?SypQG8iH*?XPT-w_{m(x`*Hr~90AzJIgRVG&Uq_xj5( zKf0e@)cu#l<-G;{xB^*z8;w#RvLd!cTj+x!{cl40)$6f84&u(?zhqJL2*nz)Xfg(A z7b7NDP!`50f%ag1>|O=k&p3^sU3@r-Qc32Xz?mI_2m-kVtxA>!=>+UYyzbNDqCvqx z$5C(6Wk!Hb@Myz#zuSe5r8F0D+WpEQ%x`Rs$52P2$*dt~i8Izy%H~0)YpU zVAR#}S)r;%zrtd05sLnJ43ilt%*$keJ;SyXX1MwgE#L=?0Evjk|2D2&<>`|gY~Baj7XCJ2Z;!2 zKT*-HPB~b;Jq7Af^hERs0SmW;^!b3V`IQApbEj4Fb1;seUM`?e}EfEoYb6} zB~rC4&;zg52LNca02&)0w0{wSV(N+EP$>f%04#4^82;e*mn1k%!-VChM7oE|5~vfP zSx;hQ=k$t6AjT1_;V3s~`5MCj;F8BoBxiiRBF3OlhK5f`%+N5tcjHm zEA()sxl*pcP6+2V(sCp&!)vB1^6Dk-LQuUxbb(`o+8;x!CQbPy%Xs-w1cDkej9_l2 ztY9fgB;2xB>Dg z{e!nBu2by=BEO-&_vMh<8DX7gf(RX+Y3!%L-N=XaDYnJ zpO}pR$cXEp3N6}tGgG>%SAmSYl%m7}i34VIvNNflD~0@_yaxQ!VBG_$$GQjVqA%*K zSMDhGtw{BsNt&Q|m%B?`PUV2WCJIJl9KpD$uJSZul4@>3vkb~We=v+-pb%CUR&Z>K zWR_NSa7Psmq=K(Cfa@^0F$*k@I<2qP&YGo#Q7lRPO%h~Sn5sMR&}jE49#BAxUw#Ng zFh!=qR@6QTiX#(OgKH>TW&K!gE=ao2W-mqrc~^!510ppEF93Vs-3S=+M(x6^0YpUs zv|82$koxl*6e1g<5G%x#I)pn$Y@aqSpq?aX4=}(J+7JOzXr(opAqphc!g*X0iEWB} zNaQAj?PYfWr2$@Vf~qpC9x&oTKnn;poC5R74I6Ly_UB8;_d77)z3Nre1-4JGq8@cx zDhPV{)|-drf~J;niptLSDl|o5=mGR{MpdY1)P!YQrGPH_wzEVZV=%Kh5pg#WGjL{@`X;n{q%>O520n zVlLz4{u104>;vX8*(0rHtThOms8R^v1i*}#?a$SGh-G#69i$Qcz zAHw<^#C1lxirr7@EYgyK1B2z4XUdk+3trTBc&&J`d%U;*a=!G7I=#Rp;kz(>1Bf7= zb)F&5PT-$|(HJyjGby)lGehENOMFby_>(aUlWxY!%nBD-L3+&qA5>h@n0ZiXur=`> zDBojMp3Np`OM|Mr)Ow#y%up*clLXwY5IoTfHwe~)d~t<_uy*Czbp78z0j4QY=A zEQSV)3>wBz!bJ;OLSv>FQs?07x)=grZTHM{&<32Kq{UUkN1e^@DzQteTq1%Y8pNe` zt(RIDvvf|G#O7>ytDD@#D%OIhHh7kN7{bOYgk5x(x|rSXy%Y{wW(q-{%LV^2(9;6w zXj}%MJ3AKng?Jl|!r^3SNq@9wvyMuY{AocYP@37-e$0(T6w&l6YYN^y$c^^82Nd;_+*6|f{Mu2NNPC$H|V>4uk5N(z~ z4H{-v=XATg?sik!%WUI(E;$u8zn4W7mPeSoBf?%9`t2@~6@=~U*=9eeZRLC$y3Xt> zTjve2{=!Nrj7LX}br4JH?#X@KP>u_5bb<>ED3n7|SS@7{A++;w1f9clPTn1!?RWOx zo$j0;93Rz4g91j4Zm6ZV9~7E9-7btf&sBPhD%jf(P=3@IPX?evWrfWVZz`cv{MK+w zO*k~0U4e!zSR4iFu2c$}Pnk%$5j|0xc$}WtLrtn17!cU!qFwq@+|u68K*6FYbtRN@ ztU101l&MWN0#lu88@oYaRnnqxCD>p3$|sferKP?7*9S-Y)=5+Lz;Een|NQ*m=sR(; zbGq|(|9t=SOq4*FBYxK56YgI00hF6NHOe0;EeTxJGrZq+Dm35luQ_D0kC-Y@D*@vho*3;7ftZs ziGGv?w#21&@WCPU;NvIJ7C!^EVec+r^DbcbE@1mEn$2Igskj8u3;TU2>TWpO8p=;} zfN1^Zuc*V6eu5X`rx)w+&-3T1X(-kgrM`cWlne$xeX2_QUQjDo_=#+8QPJ(CC)hZY zkZlU_>yr654q)puvU-VyKVeCHFMIS#GGcP{@l*R}(Eui_2+>%lKWiTU*`PnoHTtv8 zMb^1Ui;J|l$OaeLgd#+^d?WkVNR=C@awAo4q{@v{xsfV2QsqXf+(?xhsd6LLg^hfm zp14iM(_LGuweW9)QFI#~|Ms{8uIKP?mvMKU4gT$L&o*XSXA@AgifnZH>yV*F4#%C+n)ejKgNlm46ww>&QP6H~7-bHKsdt_Te{m zY9m)pA-s7<=eWr)?c8Q2GVzyLx&?+9Xf9&Dut51JHIrCc8DqaW;eJjze%8 zjV3?etTi_`Tk5;ha`kt2eQjNTcf1Y#z13={?_RTE%C|iEz3MK&YM-&%bQ+$)%5yYU z>uVa?`o>1n!m43f*)T1-n~uiBHD$ck#=3c~da)3z4+<;Qcf@MlqSd;F)`Iz`v0C@! z_YEl1+O%lp>DD()kGu`nJa0J-Rkz`65^Wb?NAn-JuGw@9b}d(9x8}H-X5N~nfz#OB z(AasK8arpBVQ9A2G~WRw{k_rB*m+H74m-)=Hmd=Gtqs||R&8Tlu|f+FSFFeqS5QOiW3aM7jS!-?<4Qdv#eTmpcLnE-^ZEE1_EqBu()^Ig4 zn;Qm6*U=q;@zZ5I&oSSfOo^;0c?5e?oD;Mb!rFxdHh&xthxlg=)=|OB=>z{{TaZM+Ml7fe z{v&_29{mT}c=ju*s=J4vkS>uz%1y4CwJF)Qp4ux&QY;ldy6&fi!;E!;lZjbBC|6$uZq< zJJapV&s+PamwoGH-!`&u8=1G~S;*&E$mdze=UK?-S;*%SGEkr@#)C;B;wYuFKHCL~ z3{pUqTCJApVw~$^oat&qlW}NG1oa<uH?pYMkq9oa=0y>ur3Vg`e6l)0zDv z1IBf&U+~k*{PePKJ^O7h7^Hs3hWwVcb)D|~qttq&4)WNzW3eu6GBXd*QkZ!_yGI+P zn@*a4cGJOKUj_^HjDX=r3^!WIAn4oB2b~ywaJHAsqi&SgbIE$Drk&MB6o={%siXS_ z%(si4A-K`68oRSTB$Oxp=wyeMxNkE&*tN&7dut&NJ4@ew39>aS2U%hr937k=>>M8a zixgV?e+2{GqB<7?gDm5FjMD>#h#il}^%tcWPa)f0YYfE6BqnFNW%Ro8V{-mt%Pk6? zOYbr$lEB_Q=vmG$UE_(RO>7Dk>Qts-IsqB^R)4MW zR7}~C?h{Ek$~_~#z}>mB&%9VuyLKaq749M{h}$I>SGkr~rY*Jz21)SXy7KX_njT-k zP>6Su#&pu1#?sxnvV62$R(&0tRWrqrxUv_x8W@PIvZX)AMZ9hDQ&nSzlE=j$Dn{j^pSj`I8N*$}2+D z?RU~U1cnej??-{%3B^+L9op7qh!wGWg;-X-HQ03Iku^#X46@@oa&71Xb7FXnu+Mc=k{UdG?ot{Es9d>-910XVQLYS&`@~4>@N}gJBZ-_XcBmT;r_i?20utm z-G8VM-v3Jo|3?zSe}YZ?{-b2%{$HE;e;*?9>+Rte?ckZY`cjKX(q0gQczl*@i8D5c zK4X{Fk-TzOfoVl|2~c_*Rm6viI75%={imp1h@+ji`<>l)r>FZz=N)wEtFXkCoeHL5 zTB^EbWtO$A!r~?Iq4?z&<23&QB(o^rfuwQxj>NMtgDJXlCaMn^v|WU2xA81ofV?hM zk)SGsV_|RLAEk>i`BJ>^FD7G}(iSGV zgLBeHp|0G|e*^aEL$FUDh&_6WzHA>#md9Vr?(_p5zPP(P??!mB5;&|s8Ss5r?f+|e zv(v#GOwDXxjFT$5)RW(`{DE(3|8pevPfw3eMOEwr;?M^6Rjw}dnd|m~e!?;?uejp< zYCbQ=d-37WoUYhjxZ;~{#8YxshnGLg#Wjk1i8znWshkw_@)xXZ6h$ZLB$JEM$?;id zhtTO99PRD@P@;b`cs{pVD_3NV`Hol(#1SY7l;kZNduU(*s=g%Rl5hbe%7lVlh`r3`sg(zu8=^wE22zfu zyDEl7!IhhZcWu~oko9nXb~zuxp}lww%2Y0rge($v)#dTbvN!b8IGmaYAz=avJO>f7 zqusFJh+UWFeo~TJ(`xaqDRw<5S4Ac3o`N0%d`LO(K@D?HPo>`s?qxVimv)`e=k7iR zLXo{fr4>bv>#m~CDxPBpR+U2ydD7r(&%E~R*Pf~EncALtt!sOxwtn3(wHu~(!@SnD z8>Y5;eQq#6H<&9|9rDqUwa*Ra=C#56++eO8dB}rD)i#)$*9P-*gZX*Gyw=%{b&s72(A|UNsqy82**cU132&F*!mz^1*IUlSf}>3! zEcM-?;Oop(UitsPCd{ch_iY+Tn^*op?Go2nxKDcS)LP~I#z2WU>rx4>EY_71>!-ck z*ka}#$?eRQp)F-=fEP0Gpp1h6+7*_p@|~hBlvGRhbTyQCoP5Z?caU=!{PawZ%t` zO2Ix$I-J3*M76bwN~@fcA9(JXOILD2vWr|>U$&|@x9KVR$)TT6eb~h%dPGsGN@ae@ z-f)5sXjDdTBug%Xj zqVJQ*J6Yxa0JPAOdaU&s^+2>~r(~|7vE$x!w=ErwbDl`O>3Q2Y2xnfRtK9kN&ThuF zS4`94m>O07f;m^)sZ+UitODqH)VQ*UL%_=?H zS@Uz{x)N6g{_vvb+a*)B3dx@!r+=uxKR;TkN-kIl-L#gjVPiI=U~h4Gf$8PA%sMmq zdpv{(tCqVb0&maMfT$|CFIE>6^;NorJ=>&xFk9L(35lOYy)Kqt#gX5mxO~e(Zq#T= zB!%KRR3_b^$`8t`YJ~7}E6d%ga<{VFZMNLhL6f6|C&3j!lcjEDsar0UgQZ7Y8`gz2 z;%(bcG$$G7`qg+~zZwtgSK~qbYUKNcMdtdpsB0Mm9a~_L_1Yy6a-hljAvKf#sWY@&-d*+m8v zr~);hf}{3L(pkN&Agn3?^+H<-tx!PcX}`*j-K4GetL$Ho1A5!9(qa(f4i8N(z3FOi z`n)$=?aiL|ZdZG^s%c&!NUsP-&*g%=szp1J6&D4ztI$4OMj)cSxQY^q1O#B80gktN za!@zx&NV#x-h03Lnb5vQm^w8(l!#uoGQ zMF*pQgxx_S)vs?AKU;5T z7tl+$vB9$-<#u3;a23k$GWJ22oV8WE2;#ZDs@h1YSARcIJO+MLG&iEZ>_KRbSRx@!VX=(c4=b=RVuLAvx1 zNQKf2DM!J#DnyVd6TswusAoh>i+n~$S$#mubGW-k`e;tzRR>oTL)SW=3P$~4&`U`}D1DPwg!pD$QFFH?M=Tjl-Ks(rl)diOlHIWoH=E#1p?YZkmd z-T(VLjIFUPryC!f_-bykh>-jVxMa60a_hhsZEko=N{4{zauCG~g86Zs)UsQPq-G0R zJ-sx2>TR=CC=?A;q~uo3hC)&8$AuYE; zT0i}Z->D=jt`el{R?xOuL1QZZ;}z+7*sp)Wz-fIV$o|pZ(!X_rl|T6>pa17A%G13t z`3#!o806&FNC9+r{-1{1bQ`(+KVHLK`z!y?AMyE9<^L(|mURxG=6yMUPQxS$#1Tm( zSVj*0i-?pGkY1-z@;Myzg0GniC_gcDI-pE4ptsQ2BtcCx80fS=*qf^BRNYN0*U!P> zp{R@3JMYAPJU}c))uTxek1m23Go`#zc{QviMd?(g{t<4?-6&(|@wx0nB@bp>*@}RU zA^I?G6s8VPKsCUVt8fsG#~{k%(Ul+fQmFaQ*qvBM_)gMj%uCWu6o1Ax0rdBN0_&N0 z6Ts@7itnLu7>m+RJ_a?W=IvnAP~|kbfHrP|nJ5i0*9jLh8I158Y=B8ZVDt7Fy$1+A z&R+zL2N*N38;vN!DrKEXKw$@7LQF>-z+dY1lx3kS)041 z;RMy9sZSt5WwL93cY6Hp1Xvk^>m8^}5d6x<$_^$y8~H;Hu9)ow-uk6>31w7#xGo15 z2X*Hn;E;`=F7?AWNp(wjdQ15s!qFrGj$>6p#W=Q;@o=UXj-x1JO`C9iS4>HAv{TM& zl$-`bM3WmEhr6>vA}2Bd3MV@W{3OI6_!!Rdvx+=xhdk94YcgMr>H!6fhyRm1g~=f^ z;}^ccN9Hs#9tl!QL4Y4rkaz_(=0V^LznG$74Qf3&F8M{T_BfYwFHwDvaSivlO(CTxWMlc~K>HWc4!T>^Z-Q z1au^#2*f;GG&5ZGpYohu0D3)i0Y<7~a(?i0Vo90qhK z?bJZO!m1s%g|wHQZFj?2mJc};;Iiv%d-zNa2syBmvQBzo@qLI=B~c-K4^LGZ(#WJRoCY|G)$hcEDz57)X^006+>i zY67ToJqp?H%iWf#$V-C32jK9)tKg}}6J#5HrZB-(3!~=pV9S!TY93+5(iGE%xD7;I zEx(9ZGLaHLaH5C_ng`Ve?WI$$$TcgM$WL!4hhZE?m=`OVbgxVf3=R?7laod*RiO-X zE2SsK)}bXQ(!%zIQxiLwXl}&OS-BDN6;SEaaMAHO=Im&)RbWT@_~w>I;#74%83!o% z4Gm>xpYRg%wO~F19e=u~?ve0vc087oI~x}KI*2bKG*xBWb?OvI_skO5%EyaRBG{?3 zdMevZpd##YqdY6;y7duw6k(rSaqb6nA+%RC(4DOQv3MbQ$14D(zbn_6cl_Brcso=s z*URxz7h3yVyEnVx(ee2{D4iqDDTVn~WQveNy@QhC-YrXJ(Jp|T%m{ysWpn6e35jbNm|59@PTOqViC$j@dagH z&|W{vny$&-3zUF5 zZNLXE1~pqemb_K$|8tk70xS~)l8tm4mY=Xf#YWH50W$i=s1%bIUF2JhFa7!{E|#p#maKf_sWl9weMajH?h#dAqhqaM-}5Gu?_4o^l=9nixNGmhz16`E{jzm z-L$bf;f{y$H3wdt90=5r=o}hoR+pZF1RM&LxHR3u`Bqe2u_as`$xQ7-zxhU#h+(UO z&XxFASv*A#J9TdJ_T-@RcIOOOMU745J| zxg-PGeEZpDd69=cp|@QoywI&uWc(`0^OgGj<+zIvJEuo5LAEsB{TNsfH{ht*It%Uz zDx}mHxk1%!ZnI0L+V1<^bVBAEw66?tQ2@yqjFS-eHz@yfC`#QMo?@B1VP7&F5{x4E zOW`c)g+Nxw?rQbkGJ&n##iIO~W6xGBtbgQ^##pqdo(L@i$bJW*zC@Sjy zdIu$5%3j=04qfsNnpFS2(Inr2)waEasQGNKZd>Bb&f#lTcIg4mZ0r5qGutY-aAr#< zjX%}ImR-#wKtbb_0sf?3=5#^w#DFs`*<;VWuD>v2(O1aWK{f+6c4tW+*1( z+T9Ex-FXNG2nzL1j;lXkn2(%BHZF^95As^k3&=(VPU{bbLX(hw`qt&7GDyHe^k7g{B*c%nPaH)KMB;K%1(@u`k zBCAd?u=}yhwQX!nu)iN7A3dc#MR{HnQUde=T6AaFQ&6j+OzPe#0aKUdUg~~yKIw7D z%n5j&9~8WzjqXHPX&cc%O72c%HZIi-X;2+~8ReF2LF+CQw15LitP)WLHVY2y74RYK z3fxa+^!+aAQ<(3QzIl#%#KUX+x?ph8^_<;l$@)PDP-rT_Jiv-NCA5TQjiY5z8iu1u zLLI2OpR&VEQ12K@M-HXKLs{a@)T+Hd%dD?Zsw(7;&7;|eS?Y3QUoM)F4;dFnj>~;m zg!f|+&S3#177Vx^6~%p=TCnEadFx)+m12o@p_7Nk3xhMsX&N;)=X&p(1c`~(cG+dY@x z`1ZPTb32dVKU+DscGsHo7Ir$bMK)gez}+e<=0AATNP(jUya@vY7Bu+uE3}xmq-rZ_ zakF}r(8Gf) zye&hI;_@L0F`+-Okg89{a$xt-hWUU^!lI_1IbKgZdtO@$=Km#L3o9&NE4=*8aY1EH zewrPi`uA5Dz2Y0B<15?VHw6sQEqz9RtrxI4=xYNZF@K0{DwXX7=AnOyYa$egG6!}v zmnc9S6g@dTKI#06qpf@D(*H}dZ2)L1KKn|q&;e`3oJP^{FdYr6qI~Q-e=bb#xi_fK zPMIV#{a^;Vf^}OoquwG0#R$;xrGf&vP#zN7`aSV5;+~>R;kRgmmiiXx7=V`SLt5U>z=b+h27r)p zYU1}#x(n*|g?a%>&G{S(IodDm+~rD=bu zNg`ECHOaI?3ho;DP-jVz3sip;tK557{!@SCshOn&U|DT}fp3Y;fv&j8U{Js)@(VLG z$_ymF#mRbnm!9C=j@_%E`x&-2+||S< zPw)|JusXf4*SS(7&5zMdrIX@Qe4>OoJtP=1$`_S|S=8yF^&D0GC-~tOzs}7^0{4Wc z_QNigkS$4i9t7J|*+P-J$RO?h;9d-d=)U_g+ZM0Gz;L{@UL?J56#vjgNhOQFwW`3X zNe1yko_Q{LW))o!EX=CXU{ZYu1C_0*$9hr`a=5L|c!zzPpTmk$!eWK2DA2-y%PZxD zL$ByMwjd_pG6yiMHui}iZp^a!2~9A)+oSxz8Fhu;m-$+A21PeR0ZSyAN55*0vTG9G zJn-(4qz%o|>=c6LpQtu~{Ll!6EL7GFJ#UA8&z_`M0`Sz1I^-vYXHYO7>CDe+wXYA3b`B5uh7;Mw27x~kld;mD?9(dN;Nu{7eo!{rmTdvIOWV(N>C~~y zq>lB*&AdSq>->Ez6=|38)?R}`bi)|0g_V}4Gth1wYkR7X)TJqKRqVz7jdo81980h~ z(~7~dds*TB$x^tjJk@vuR(evBF{U1jdfNCVmmMV#ISqA&aew-hw@kp3=e)vfXDj=7 zf1F@EFWL*K2*9#GVxZ$fYuBBcG#v_hsWdn;_>6$U0J^N*4KQAFA|DzpmZ+B@rqox8 z0s7Mdfbj5MfWQ9xzG;@f|Miuxe$nUd`(JKrz2W8Vf4L2(_1FEcKjQOez5nHG{K@Wr z-Fx*be-lez|9VRoo;K;qlXU@%@V9Sz{iaJiMqWrl38@&ZBNuG34_Wrg^!F2eb zUDNy|nGDs+sePw)TiPQZeL)9)7r?%_c=>Ao@c6@v`o&A@_6&OL^Tn@OG!Zxch+HD6 zP6jqq-+6WXet*7tCLp+vzIw2xT%zh=?gg+<=D*;Dky3=4qni*bjDqPHcA5b*fk?(c z7&8Cj`CZiQPRNnkj?kxX0~tTygu{bl+-{nNFMM$o2mSW)Rho{It$O_u>P#+B{MU!D zqwEFMUT|H1+uen)b=b^Kf~3CQbe3Pn0Uvo?Oz=QUd>5u~CKoU2{!4j}CyLp>-oD{> z84T&Nd5G7>(FOhsuHDUFyptCfT>IWozsOJ9x|>#^5tI&I>YCuPq|>tT3+0Pz87JYh z{qwWT-b1-<5B;=zCEZGs1mv9Mt{*A8K#8Ix`k!&&$UKPq_Q^=GvFZT8q~OGOXAjtz zPR(Fo@M_-(r6E3m9>mJO7@eTCKeBWTKQ|+vxyvSwj}CtXsX7R*k%LuEj&M{!G087U z&A!2w5r~cw_>mP>yds51&Q+v5Itau8h2qe+)JRBhupbhBG9orD z576};JeCjB5ZFE=V6A&!7|s*-ZiJhm~O@Z$?hY z0iE{&!8FB*Cn4(tc(sF`TqJa^mvW;3&nu&g1+(4U zG6sygh{eY?GGs2Ea<)-D=Yvta+{HU5SYjradsyY)MX2f?B*xs80BUphyg7ocQ!)%~Xa{N*NlDbhFCpgmVMm%GCT zJC=Y5Hki@D4(KvHJC!qEOIv(hN^`xu-GP^1!aMK3XagcSHgs>4j3}{T2(NUZ3q~?8 z9PKD&)HRNRqdRB1Ca+GEjz`cf7*>5&X|598cX`OZJ0$zI!{!HVLB5hJr#fQ5xH!t& zna2HFb16$T$9_C3^mN5s2~&5#H2caDuylh;5(D&vAz>G$>TafFvNus2-h#}PT9jga zIfea{nN{CK)HmED*^2J8?b&ze^?h@`0Q-ksU&!2CD89R(#JDzdfOKzKp`OSwKuPtx zuOLWnYP;sHfook%V4}}mKd8f^pe*BNV#v7umFsEcdRDogJdCvYd@^PEY zsPb4HeKyIOBkKcd@SjB880&cNqVk<6Nb0xjM?ppx%RRB!Nnh(Fv@}aV5AfTkMshbI zY*h6!DZQQ_iW7d@K97x+eIqR2A-CWsYB|{DE z;07IqF3_YPo#^BiQ(F~`nrZJkx3ukFIy)<0=e*bJ16-b^Ft=_(Y3FAg1+_-0LkB=& z1Y3}~=j<4Lx!5xrevXX0&FYu?F>_1g&MWz;z~PhT!PGh>nySkcxcaEIQ5_{{IG(Ak z9JNqXP3D|1=j75|?vxxG7nK$1(OBeCStO=xFU#}Ghq_qu=h>y&aBwP3)tJ-*q`zf_ zl~?6`Nj`$4)>$(n%4Z4J=IuMxRr;Ul@aK5ffAj6rZQRxk8vn9}OdUuN!E5w1&xE>M6! zy1Po3R5S;VCprd^<>zJbvXVimR6at0;%I^xLBSdlJHxlIO-9z|e`q0JEmXgVB9l3x*FL;9W9Dy+7KW zWG?+9>DllT8{*P4I%fBX@jKb8N7^8N7sWWFC}Qb^Yia(w8^ zFta&75Ph6J^us|KZT0>5D*PY7Shaq<{BnPYr`*9nyvE0PR<8X-+%?!!z78(X55uWh zo+6n8`mK8X=H{lR;2j(uN+72Jc@=C)>I=7q-X`yZI3ZQ_zpL26|D9bs$S6Sw@4v1H zZ_{cU6coSL3wnHbAB{PdF8m@Yz%Ixi2XYIC+sLp8po2&85+Gh0IEe#EMOws2iPk~1 zCcO|3e4LuwsG$eSJh&!a&Dt5q3LM(6Wd8F0WYpzLX$WAgOb!L;zuWf{J~Nr`Z3Dpl z^JJi)4I;KZgqI@>R)r_B>f%)zp*+8crUboNh@681cNUB-aCn6UL0ToMPVU{$Mf{;^TOg6KB-jT5EHo`H3Ob8pW_$0BdJ*iLg9?rN+$HnBYE) zy;T6c0|~6SUtZH7hQKcT5&VyXdHHy#s?`w<+<;R~6UMy*FKElV!UHv>_;i}QS0*X$ z5}mqR_x9vaUodNr zh6m}qkEQv~*X@%CPlS^Ykdw|PE8W?EoZnYyP*#{{R#a!n7TmoeiwY5$ohY~zLso#2 zF&d=u**Wwn^!1pM@iO@)EIa}^Pxy)uO)5N;mPv4AUapb{Giz9fT?r>} zL1`0Rq&~&nhT4AI(}eAgBXfw_?t``H6~ z92txk9|TANCNr9_Uro@0YGgS=H&Y21j3O*^@I>fD6yq%jba??0KeM?v(Xk+X-RecA zF`gs7-47C5OjeFnY{j}Hl#yx82;p{??y;a0fwwO%US=>y&%APOU}=&NU;CJI2YIRS z29_EMN6yT4m+KanL3Yi={#Gn~0XuIwF9spTrCh=EL?{wu3UoW-I|XUXNLLJJPnA*l zu2fcFosrOBwOPS|2vnd)+#QyJ%Pp4ExESFYchw881tQUQ9e~9+v_DpxqWP)JeoxZ* zQN}ri$*P4B~7v|1ccm&9($N-cc_@J zR~>{GwJut7&_k>jjaEPwf}mp8D!pVN`;ylPrz+e6r8W+)RgNIdZq?}GCyeH*tS3<8 zGkU%V*ZG8YjHK$K?+8B%);|dlI_Q4I4?YR}F{U4{56?SqcYgSU-PYq)MWKdet^tp0 zbcm_Cs3+n-3fA?lY|wi48H#`A;@FBtT%RbZ~j3V7lK+X>uj;C!I3)b<8N;8ew=d?SSADi)1ozUNQqh1CNsI-J6uAnawv zV2QF<0Goq!n7EaRSD7>jet@Kde?GA*tjvHQj{sywG|RCzkuK640av+j@iMW3G88tw z1N3K-lTx3}D>+V52pwl}b3|Xz*a~fN+5&PxBoDxvnjR-oD^R-!oLzDu`t0?30Lmdcs(Y#geRINfQ6 zV+vPOQu+1i^FSjaM2Wol@I$Mr^#&jRbd3$95DT&G`ka+1cwrg{xK0mgp7PX)Vr-f zd<4C$a|H6~QwIb@QhNtAl%)9C{l)vG@v8;UqkkI~K-Qf61Qib!TDW_o<1#CPx(T_j z@f(|EPVTs=yQ6x7Iq!rR)w{!g^{UcqGwL?&!33SRsD`D; zU%;L8`d|-x0vpyef<3^H@7AJ=ER25;&`p0_9V&wKtQF>i*-8x$g*Zu~iV|=l!Kr%= zE5mTqrm%@CO6=FrnKY4@lD4Cy`7zN^iE>+YQyLC2@y!KEKL&0D^0Uov77T7gQJ! zYKgqbGscZbKZKqdV4$o6-;Bg&5LCPy8TW3Ov$~VAWoA{v(5CT+9~jh3##wgogcZ%W&q|&z|aC zIKT!k z&Dwax^W!ybmT1I@CYCt}1Dpd>!A62J7Z49hAi91gg9Yv#i$8NSTbfe8=FCP(g~aR7 z1hYB*Oy;R!+Ep;4Da>P@%UV8;gkhVWlSR^ zvUbpdU4kfS&}KiOTgBCN=oRpVG1}@>K~(l%Jw#mzB%p1%hDtSFTS(-cMxEwIH-Tn+ z)J{j4CUVutGm3R7GM~vR3QQa*F3o*196Xx44M2_wm@fcJK(xOp4z9y!k_=`%Uy6)L z3TNi+_DA64Pj@uN@2%a`B*CjoS{+f)=<;iUEz$B2EE;)PphhiG#3t51Pxx!-Ev#sPz3XjH{paTPv zpjET|v4I1A0cy}E?u;_nsS^0wSc)@s9lGxu#FPrhU~MKB9?q%9Z1+}LP{|mkpe^aN zsIIQuf{?%+NsRXM`fVM=P~BP_@i?jY^9tV3Nz`qi9U=977>262OljJMbi70rMHXRO zxf5sIkRI=a z)5UG+V1sgCTWO}LbyP(&O)iXhzlpBQLGf_hqt;2Q<>|(5@rQhTf$(1xA0C*_un5J zzdN&YrW#wgfLYY{G5ggqUm#vl7RVLrx-lLA&}5m>dDzL}kM-l%uZ^o0uAO?XvH!!) z+mplnGqtmLF&WUGLHP3R4CJk7TSo#V?TJn474?-T{wZf6UJC^X-vq;Cyv_frN!%98 zX7{I7GtO?FF^(&vc?CH#2TLl@71p!bNIn+>VXn?o_oisA;Wdl)_8)IQ$p``JbfnrW zf`eLXQw9x4@VpvRfg*|(K9pES9BMnu>J$+a6-18ryhur55kRsqPd(iHD@|irn0%G; zt}_=sIoq>@CC+hNg3FAT+PmQKFcM^$My>M^eH=Omd!K6QRcCy)T#So4VU`9BIRrp= zx8Z!M$Wibd80lq$o6p7Ta`2^$GV5PaLripaX$@~g!NT~Il$aHR zCY_wj`bM?`C{$j(b9^j0$#};@uYk{Mkf|_PP}EqN9Y}#h_xJZ zBphgf4~G+#mKcc0u=;Xepx_yBSWS@$FhEaubWJUniD=lJ9N9#P_B7?<4oVw_I<8fw zaohv|wXAM{{2Ygd4>|S-_X+zV$w|o5=qZDWPVmK-p$x#hP^+-#C+gfXt8p)w;*d#M zRcFbBT8ow6SuIjlra7LO+T6g_?spt+LEa>#!@9&!@+WXC*r>Z zY67e~b~W8NN|LI5AkWP|d-d+SGj&`|$INQqh;#OG0(vuD)PiS2>!cGj+Q|synRKYY z%YN$ki00ng6O5JwiUXY_fsg?alaTiWDh(!UA~Ui?<;3<-D2^YIzf3PbA5{1Vt@ba? zM~{%7H$2$6!mK*X0X_#t{5(S3t@5IDTP_M8AwMRH1WUBK?d+n)Xi2#PC7l1*KsZZf zK3a<6!CMZM8Psz6P%Nl*Rvba))|AXfsXxU#5lWTNb-fbQ6bZfR(H{t-6%8)_o4g0!z!V-#X^c?#|)v zyThIH{k^$mb8r9k8KXPtriLN-_k;qrjZl$6ke2`59)~PqACBY;0O)zf3;ba?Lht;? zsWvi%&8WBZbuTW|3o`H;xBtTUHA_OJ*p<4W$+=52FaMx{50-=#jYh7V_>~t=_=W{= zw}WA8@U#Mp$=@^i`&RzG<=^sF9clgW6kk@|U=6>*d;W$6ax=w_yHhcJ(W)w@xHBD4 ztCV^!A1m(F#jzoaeKVjftvL%^%ZNoU8tMfAODXJO+gU1O03UYdqf5qdBwa^$EthG$ zBlpE|e$L+LC_m4_QFnlD56f96zU9n241U!~vE})9l+%TeQQ-|<^U8z~lH4}h>&SW5 zNoSxS;#}R%yw(m>Tma`H71-SazT7=OKGl*0A47v3o|pKw=cfz84AJH@9gaWlLZ3UY z-o5S|?jL=3{)Vo_0)Xy#CQ9U*fr6_$iTNnCICzC!jf5;Twmeq{v8bKSP4td4wGKpN|0=Bj zu$8jbx9^DL@oSDCuv9^Z?}H|9Ry31ZTOd$De-iX6ZI2nLlRHX^`o4mwuCgXA*R*k0T`RL+FG!Nb>=qAJ}PF*E|+ zbA6%w8}Dj7YtdLHp+@5DLG3dq%%gBuizqdpU2;p0ZRDZ7LUGJ(Jg_739y0|N=u?8_ zTM!}3Y~$-vPyi(%RY1tV@*ZX(N?Jd{m+Ld<8qZ8G)TK~iaV^UR3>Opvp)X4MSy}MY z?r>~91+<*yg|A3%V-gwtP;3cY8C`FqyuA<=&!FNJpyCy_=PgFXD?-J45GoCWN}~Xk zMqzu6#i%rjP-)~)LB?XYxm=U;gRo!#4DriGD(1SU))G1Ju4$ijioPEX_*bVp0PS0c z6A&pV6Y7T)sq$CnGDv|1Md=&6Ohptm`VBT<<x>el4=)7?JyA& zzF5G959wXPfmb8)Wd`LZ8ldNVmE9pibQ}2`3}#f|2F)vIV5H-q9tiwJaddbH?6eeS zti1eK&2#Aj4)q=}R&r)|f9P0wUt_Gie}l2|7K~LRKUVY8c)=8IJYuY*=xF?*W7YT? zW7YUK7^_BRtZ3~^d<>6#8)RH^0zQudT?!i}Lu#S}9TjU&$}a(i^Os*laTzwu-c^Dv zxMtw%tJLRCm~`mKX(}%T*_eUq$X4+y^sDjZma8TXM(7ui^4XF(_?L&)+ARQMg-=N> zC8ysWS}kfa011U<$wrd0BWT(wisVseTbSUOHJ$TlF6){uEwRa#UMi@Q35jN+i>lIu zsd7WmmFlZ9ix7@zRr@Auj|k|rG%YJHNJ&_}?o{Kuyu^)?=g9jHs6GxxmS=jRFVLUw71@51^z#U zeINkYOFPG}UoRC4)qPCGxg~zYb4$D)k*2|LtTvI9{DEzQ8dK#mRo#<-YgAdsk5@OQ zIKF{Q?LfZ9bmk0$^wcC_%|s#vl#%*oE}~h0;v86=T;Om9YZoji(s)od?6YVK-6d(q zW>ySspYp8E^z<1BKtNRs9R6g24(_oNo+OvN=&a6hwHJFr3rY@7!SbR@^x+KkJ7Lw2ilb6 z$J+%(<;5CVco!4ycHV}gkJe9l_=c(3Gw~9YE!7rH>RCnrsfT96Sp3ql%tDqXijG&W zL(~yXS=K|@uD})qcEOM30-$jt@q#|$%7dHMAqoitLT3a^Z8xyOOIp-@t9+CI*?DTb z#Jm^4siyoPM!--#yNc(KU#YEVv4dvHRq?}*JR(2*2=s?q3#)OlRVugAS;>q-&K%AJ zG+1fBcRBC1d%%!anI&2V)GB};4g&ogI&XK*&i7C0X2Swql$}4w9ySg;qo@~j_>K*d zCMU}7611qDa{`dOhm|y6N)L`Sy5zu-$`_+HFM2a#SVl9ZAFSy3GtuRn5P0K-0$^q` zIwYcWK`}mcunM|Mr&uRu_tOGVeW%ziZ_@y(rAw0g_+33y=1;Sr98%243x41r6kBR_NtR=~fs9aYtRh$`?r;rCq59u2#1&p2%2zqjL_t#-U!* z(E`n>Q=W4931mjpno+D*S;rUY6`ig~DGV_5c}9i=l2@col&d8Fni|r;DtE3ujN9Ye z_XUakXXnSK`<~T5;6L~d>y-&g0E;6H7D>#xZvNg1Yn@}0 z#6zTs9w3^y#LzN+gxXhHBgl%P{M|t-cIlhcffYK%+(gib`nQk-j{5&M*@3W36Zy3^ zyOY&T+nZUc0)*>~qroifQS8hN_!?er(p493a|_^9-P|@;Zws?ZpIr4QLagb*8Sa|O z7@-!`nA+K!os<2}+27yoobJ<__n`872WQ{Iz`>A7kN+u!zM@MD@KuhH-o(`@8M=Q- zdUk{*=%zl26pAQf54WjAF@ouO40#$}%R6AWy|@lyIzFH~c{hICQwiir1ZZ;Z93CEj z=)Bt5{T`!jtEX1vZB3;VGgqVztE;yZz_;dL7wfo5#};%SC=a^TiyIJ%$)t<^g8j)r z0yQHjLvKHL3`|WTf+n!_*k=CH6fq~*L#3}zG0TK{#CrP7lu|nU%#@m$)1E>uu_4g#zS`-a&)&gfc&15P)A_Vq8^)k=3&Yb#3>@LlE{4pSiDgj^KYh zclGtGJE)<`{3d$HXS)g(JG5rEvJV~0SI0jP@_0e*4!q&@BT(*}mU+fhtr=C$zMt9e zXY=oG?f1CZD}Px>)wL$-t-cP0mX*8ut@r;+3l^t`uL*L}Je0E@&51COdagf`eX0EK zqKw$4N3;373D`7F#;sv=%`1|*Hpm(ZBPZ>W+Vc2d#+F^nt{m3bwsBYbGfLup83~ZC z(FA>y$Q})_i7lWhC%kweC_NQu!!J$pA@z|fCiYi(8RClO4^Uf~DXZ>NJHWdU+PV=} zH{!@fY=C6hk#XO2mcyqxn1a>ybbCQNs07n(*b(0FknwwTbOT$3FeznCv^%`PnQf0| zLT*s77pwzFV&$nty2IW%zAqEapj`IedzMb~E2#~`kuaQGl!gVgwj@Y~FB&)>GEbU0 zPT?Cx(U>BE$eXTnobzX(P2r-?pWOD$E#{L&G}@e_k=x1<$)<%Q&ph3JE0MmmgMSDk zx$~UlZb~YBAa7$yB1`n)^d6xYMrni-eSw0Q>FnaJ7IaiwM|S6xkvK>vF}hn@iKp3x z{#i(7U9$i_K;?vPVpMN-ndd`Wwj`n~VF8_y&U3QW!dl5y`|}7HTP#%{D^v3l_3O&e zhfM$rokvLsy`#<7y_ea4Rf$WW)awx40ni;mF60z_0t06DL|rHz?#q+FdUk*C*wveo zjyyuQ%C7ZAN-|QCwM)=x)D|vZ2GdAZ$-8g=G)zGLO%z=m}ROJY+cft_exoF%ey473O+>*C{z09%rE7`Iu@8BZoBZ^ z6yHsY-(911<$A%(1Yaf#Ud|BeYynhESa-ePWr8o01ut(A>g@ukw+MB?%LHF03tpyz zL_+4>uPRN8nbB{8h7Ll)vPaJ8r(`G5oPtmPH2Vo_wawX*VQ~|f(fM9C-o0nK*GsYQz> z-@RzNWzJ5fijO;#FX3ZBzOPT)R>9PUOH1dIub4zk5&JQz#8gi-`80;B7Km|C^=(y; zGK`s?JtWl_Wp@u4gM;u31`q@V=_%?0#>h^422d&GL>>Wb)B$G(Z;GL zv(xE>lTf`gRvFX27Ux2956*vA)<`^mEVp7RH|z}JFM)8MpQv$oB-=eP!(k1C}Pj2RLk1=W$}<9>(IBU2s!IeOL}M6IiwVdtP;?r zM3qVi24L8g!Q&*1)BVh`t@w@Swl+r_hF(M=+Dk?m%2YJnwY`}MZ;~Y=t!z+=AYZvF zoMY~6=e=|gAm26X&Zf2Zpjdz~6qr*dJd3A9VJ@ejnY!zCs$nyYv4!t(KF||L3i(yMN{X`y)QTYyQ7$PCf_A zlLtbC($n=YDO^0kaM+k?&WdjL7WfZi25`8E?CRuMa@)I5<9{XLbs|x16HyZ4_VnBaEaZ6ZCBm^1j60#n^oF`SqY& zjs7Pv)1J!VcXD<>&8YcBL66AoQsyYzKifS$IML|P&4$al!ZI&aA^<@d^i`jlC0Bkt zRt{&%pC3r6Gn|hx+_TO`go`I8BO$*t(rU>0493h(x1(E5?a)Uq4TmSXLyUlN6!DVG z4s(EaO8KX)^hheAlMbH1iA(N`>4cvWMim785HA2>#3hLghVpq(DMDHXIFqHaA)HK6 z=z-KmOD+{e3-ieCSw*0|*XpVKP$-LoqwmisFvSt&i2S;r`qF%Gia9~eMGlaIGEpkZ zg|RDC34$!B+=^lwBmS(O)`#cb*+5gjuhjo$s9QXJO8TQ*bMZR~eV>I0|wj z^_@RS5}4oY6kIZXh!tHV2``6!C4WI~)!Kld!tg4ZR^LuQY{&ANG$z?jBN_WDrAT~q zcK~DaDUVfPZyBDC4Dm_Y1Ks7CTND8%OdA0zK=+@uMFbOgyA}H5p`nC+13z%C_)>Wr zbXL&vOI*AxPIr#>=sx&1osqq;che=PRng=HaFJSTI-u$)7w~I2aN(M(b|IG*X(6=X8(Mle(?tSz1O~;u1Z7Qsx;HBUf&|| z-?ypn?>!odL$B>N*PD*#G;407x!!8j-@|}DsjnV#Fh%wW!)$wl$v`I53o;>rf+=kl z;SE5;aq(794gkvc}u1S+&1Pyv*NlsF)aG0vqdAIa^SFVCSUvSNr~nf(E!{ow#f zzAR2XFx&GddVJgOSI^0O_XHTAedw*0oLY0!*;v&jo`Vo^yp7hHx8`9#pd;dNdPwU7 zpaoR!#pG{&5nTDWAJVx2F5<}V1$;X$QJKH!O-v_E9Nu#{4mqr{TF2BKK^36C8x#P9 z^^m+v^eTW^Hiq0!Vq+MFJEqpE8B6hmqtD0yzL+==cI6lnQ-!9ax0GtQi+;t_28TCA z+xmCj>CWD2P7XRWpNxcC1*#(Luq_oX+xEN9XKtk9pR=8#Gj0usDfLGsYL(dUvhCx8 z>uH@V*iW8Z$Okj^;Cc#E>G|i?63Pf7NqH5&UY4IH;YdBfuNVC1vdr~n?duuTvkGCg z3x0XqzP?4ERSPOtE`Z9-QAHLYizhcp7B#`^T-tPFl?4ye50mg=HZ?^znQ@8;Maaw2 z3SIM4o>QXP8-6_*x5uj>14>oR>o81C1Jv2IrUMciEh8C$ffdHl4NQ^E&COP&r0dmj zp@oi$kNoOiOV(pPSm7tDutuy7Mg*Z%E`O4GmCP5SRg#)`&q-)FfE&43fheOc_R{wG zYRRp}G8h`a5?qL>2pr6(3fw0M#$9m__wV$)g_e%KAlw`ce>&g>WbFz8J)!ju1hKmR6-4 zdx+v!x%!K%Kcu$R#Nx&u(DuTn=j*~m{2KP6y#1%v$vvr2WaZz~#y$2Q_})vv%fuo|2+8bAMhXk{=Xjv612rr z`4wyYU+~|5$rbru%=7=&jfOQ$wj0!7@wpC0sJUT*^Z#f4|M-9Z>+1ja6*~FXXVE7= z|4;nsn*fyMxc>Fzz`gU|b#n8+(Q0^q6VtEU*TT<#^7#+s9-^ya+ikTx&)r;e*K4ho zyVhzrYwl9BB@Pc>?VRquIe5QcoBC-==K*umwY~HAot^jJN8bMT$@%y3-6bD#xn{LAWFMs;ldWT3LLOeA%AgtffrM8^B(lR_}oWVI{=mr(@Dyv znL`W=e~nQ?zKerVbb*m0UdJe(xF>WFL(#j@sr*Kt63H%}b>ncHR+J$P6X!ss@hrWH zFex1#cyU21Ly59YV+d~p52@z&67edCQ$F$vM|jG#iLfy{>2N%VW_U4)U4fze{seaG zXsbRO`vbOBiZf31w}+0xZ~YMvnwrG(8cZ(|_0t=4(%!{u1+t3=CU=U+&3`WN?4SoP z!+zNHWzI_bwCsdCE4yiciSJZ5%?Vm#%WG~mJ@gSb=YX&e_8f2BIxX8jI}>|v&vvQp zqqFnVcW=?r;q2gie@lT4dL2X3gb{uE^n^|siLPk+Pp%^L1~NGHFwaHE=Qkyn_FrXz z_PVD}WncG93HX_VhjDN*Ra-GYf+NA~bMBTc*fol3HI4dJ_Q`6yI-}s0fXAJK_GZmp zUvIg=b7$l3n$B;idSBhSj4OkV%6T+ z=~JAKQFo>*zE)4`W3K&2-aq9ZV9Q+3=V;MnZI7d2E`w8bp z+yQjE9amTRXL^cN_=Re%#tnH7Xvn*xA#YJbp50JCy0=46q_~-W)RB-1du6}2o4gp` z+awezZW3M;w1mZF1JtE^Ne4yl?NSl_?AO^Y-PD9<`-P-+4uHD<@+TBgAWt(i?-(>UNCYyIR*|eKfDJ_Ir z0cgqn${*tjVAjR_qAf~GB)mCuV@;}dhXmL1n^LPa zsQCR7+?L-^u|?G$BERRPH)R6F+IL9rjO^AG7R&BA$z9xtx3Cd!Q6rYb$xH2mHu6%t zKxP*-R4lXe61$+eyu>#0x}X(XUgxECVOI*Nl@Z2wcEz*1a&L2aNp0kGVONZt&PnM4 z&^ak>WOM;!OGf7R8Z5T+p zGRy&p(ents7B2m<1HBaXum^pV(hZ>7J)Ohr0tt|$&_GnSNgkgLK z=ukviK-K=6^p2&>R6na zTTHf>Y^KXE2=-fq*JuIO+e8*a^Y0PUqE6X&$F zq@pv1!vKQ@i!|9bH;}r6sQVcc7vSsC?&0z7_np)Iox}5kxBD0~Dk<|lS?e+$Fl-#f zrR7Z3Wh=l0#%3t(|8Q{LdA)OR`0jK+dyh&^jT>O_4h3NV;wH89n%3Rt^7{yXtfKSf zro{I3!QsAG?GqWs!Kk#1bvw|bQCdr<>2gIZ-zY5T!c4yiX{!4OWM$CsQXjxSt8Mlv zs)j~gmhA&6lAzRwpYpDYbjw^a?!at01ME-Y=n}mXI~RUjDlhGvi;@h&Sf=|+hwsk! z?TX|T?hiVccOI(m#6wl9=6LI>=IQ?7&iTRnec6r;KpGs|Xte8GOmH>s4`!t$k*K>s z%V*0K3L=5lHoW#+S;{0?c3>;ejRrl?^L@y zlE-tA2|*^Bf|?fZfpZuB1myDBnA{00$LJR?nH8F zYoobAC|ylxusql1uMLS2y#&reuLhg5uH2pthcLS86#`;7y+Sxpk7XvHzG;0bz**CQ z;VtB}X>9S@-@7x}5wAgSXFdIs8Ih_p5Atutll+sayR{AVn(E_k@j*4@68|bRkbys_ zM){R$6JHIf7K)1@)qsgIq|zwmhg8zbGaw$enm)G{vfHKWd-pLI40X$OH(P5k*qiI? zhS`7%U_xiPK=WDySY+K|k&Q-%+44XQt=G&d z`1&g|;+kf}wJamTC#&#)s1*Y&lHhUN`-EyItfW~?_{ z{n}#3IhckU3xHbeI0uut5jJ+48ynt#4tB(emtjW~e^~~+aPMY7y!p~JOt)SGJ*JuC zv<9e$O(T9cEKcLcJ*7&W+wt<*l8Y;VXOi`He-RdXY*AHl=vK9d7Cv5 zF0fg$xCv|7%%rLrX41733vDz!OEp2}{LjNdo6g1q7zhsp$59fJ^UVAPqxJu{ckSJ2 z9LfIv3!h@*v&jMi#JqSI;d2yANqp9Eypj{&-95WH2qB3Cfec7ywDJAyx2pP8Ju|?7 zP~wMlY#3&`t6$YszpAe3uGTUVahH*)07I1Y+9RXLi;qzhi+^;G(ZOK)+jHSaMW@Da zFguZs)Qm~W-C@n;J3Ag35k-<*|Is| z5$M9$z5U_vRY5P4bi76Oq}|!eP0CnW-ow{0kH*73b@DMZ7u^@kRe^kGIf&}Z>a$=7 z!K7cp6dUn`mx(7TZVg7<$R?0ZzziX9GmLWxP}*&~HDH{eU3aTI8Km=SRo7*Ayyl<9 zIG)Wo-WC|gTZ3`D)KR$bx~nvfi=t8~9MJC}AR*SDHiGf0wEzqsZZsQ}$M=XtToSKz(j7we=;*;I=|Lza-M5RCzIy6hAdC>9Od9F*Ao6M&2kM@h{VXXR^65> zoaZE4X{JNAT7&BvVT|n>4~=nr&3FDvzH2r7HTjO#CKq#D6RaUG6B#R@CyO=;>eWU7 zIHX<&tpwj5sGvsJZbFZ_VH?m1Sjp|M8hT+u*I+PMz3uw+i4OKQz8(bn3#wbEYj3IM z3F@9vHi4I>Y7>>hWt%E$s^)a?>n@b74KXqoAoJM>UIh+8eWZ|55E}e+h@4jL3-cvo>|_v zR!U29uJS*4Ay?#XH3;FBscsk(oo;~lnCuKK?VXa}5}qPEm!57|V=B8T^2g*S<>K<# zh*HXKWU0z;3DbD?1#-2vmgV?qy7F-{)!F!Dk*L5!tF&*^wRou6s5Mx}TJDEdwccph z>KAi!7D{9{ETnRC4)SU~XCTOJ>)%k7Xt)NmaHgR=jAue!jG7c~!)EHwpHZ6idKTXT zaK{Q4JNml$f}-#FmO$j((X4tPQ5bVjX1<7+$ZeQIX6C%%*Ig!E+?vR4u}2__G~7X% z414HYj6nib)R)R1*ePzS7G~p+U=Sc+!0vdUFBiCA+vnJT828s%_2Q0!f!G519N{(u%6X*1hAmi z0AwAa3(>8?6t1@e7wir6D}q7RuG9fIB$2xBRabj0o1d@ zbnY3_k&v6i^sHVXE2V|6R}NJcX#k*FRu_kA5ln~94_eD%dUFGm&b!ovih}8e8@tDQ zb15*-+M8BNODL{d(*ZlR#TTOiwRz0H$mJs#oPM1LrEvL(WcccHoQ@HdNivH?rAKsZ zP3mF())HB%GBIH(^C(5?xn7f@Q~y(ymA+WC5nc`~Yq`9{jtTgvWSB_!h6@FgEt`~3 zHdvgQh$*q7c4u5PHN6(-*uZvBCn8O?4UO*8#j{erro(2X4%Oaq+(xVF2iYfOqC=L? z%w%%AKl-Dy6D~Q3H~bg{C$U2 zMx=^i4PlbhtYLLqRWQ0NlwMb{r(#%T9y6>ei&i|L9~$x7Y^>vAUpB@W9PHa3<)nLk z(FjAYcwUwfrq^JW$ig~Ii+UFH7khDXHBt`%pz}Xm;swEHE$0U9N&~<;h5`UQuX}AU z#;ZQA-C}@10>TFBDscx}%Lj1@)yEJ`5Yi*-lb;8H)EU6z`{? z`1(31-p`EU{RJX;l|%TRbG2cK;D(-MdagFnX6IA2VM}0{g-unFLkGKtbq180!KXV@ zJtmL6)$$l7Su4{dy9gdw%{E+&8NBqY-+60DMS?RsffTiMYeLsQ-2q%f)Z$8au*S0a za$CDq^@5C?@UWWsew+aFw_)aTv-#{wEHfR}H+7*{olVB=%h4 z$H;_tf@Krg^Q-k{xF&E4G6AO$fQkvYhQFX)$CD$NSm1+Ib= zaMeijk>;F*_$tVZuYz=Z6+Ae;+I-3)cC9lrXT3))a$hNLL~Ydo1|W0mnZgxPIpw8Z^-rdZEl)oSs_3t2zk z;cHgiMl<8^g&*}w`*JLlqWNWvo?8u@tt<;o z7vUe`_R+pQvHoNnd*ry|uDNo2T$z`T+@{9Gm&|M4ZRgQD-Wu;)EFbX|Z(D2|ts1Pl zYP`KnZ{yL9QHu>r-^UJJ&#pwdoh5Xp4zw}O-N)sFu-#~41Qhqs16FHr4?P%_URVtq z{Ou?-G=plh&XXly!Kzi8ZaZk=>wQ6pCTQT2@4ium3ZTC}*rG8RTE=9!1!FSIY)ppf z#$@>5#v~8E7HeYhS*YiCfOCeU7u;$9$}xGGVOnflbtU zJz#9%xj2>$dlkpSA#5#R2FlNNHBkf@3ncS17Vs>-`BZiMdL9aprug=KCX^OFu!S4e zTYUUcm$XtMwpC1Zt5xHZmU9A8Vw{j9#dsn~=}TWI02NnrTN!!cVa?{iV{ch_xGK+w zq`_IDiQ~v*TEhwn^!Te6DTE9|B6Ip9I9davbM`U1Js zZ^U?jM`wu)Y}i!}KJLuyZ`S!bqyNQ?w2vd54I0$5`2fszQ`QTf0nRpVriJAg7x0~? zLTdxZL{82j&9G%Lh{YUfr5avohAo>_IGdyvD@Ha1LBc%kYrT{8v26>q$XmOVXTnUY zCG}MiB7U>whlXRCP_IUcjrd;l3~kcN;T?NXtL2A`f0Bd@HznzCW(w;};rK4nv0p?; z*21t;Smz2ywGg=oq_LjSF^aJ7BG=Rc6K9X!(su3F)%%244)Su>=WVd6ui*%yiH&D{8YC) z3>wG@+0+mXyx40v?wSlx*{=}^w>0uND>3n=$7#3sTY9CkxLo=DjHIk$(>CTp*_*O4 zmmk}g%bJnlqROTfbTR2(Bhl~idob&t91PCSZ>HqgWhJ`S9_F-%`{khb8~yU^!mEpS z4M?lNluk-KQKQ+NT&46`9p7bKMKk9lsJ=cv0BS!<+M|O4B+B7V{)1tE)V=C=o(!(K z7yas47Y`N??d{NZ?6Q05hs-pl!zHJkCv)d?Fq%4kt>#4f@(H9W!v6&WooFQ_b*w61 zPsUg++CzO=jdi+>YyE^CZKbkN#>z%(RyMj%Wv!aB!_t;l)g)ZAt}hKc3QjR#b$S>stsjd3eJH~jY#NQ`M`(`yhr9rwOmZF==&byMub+iR4w zWQgwB-lQa3qKz_%vE%(;4)NrlTt3H-cfkWlzMLaox_|x=FS%knN3207y?poL)&9$u z|45w4bUqjXi74$rCd_vD>L8!#{O|br@3C`5s=e`5@+|Z<|7y$5e|KFkXf)LM?_nbd z@%(qst396o{zv?6`~3HOX*;LCV+84+eEK_NdJfz_9?`+*-wrA`F`yYknDNvaXxTKH z&iYrB_Ujk1bJ2h7j&AxxP&|{1?r5yfK;H*>FvNr1L%8)ze=-F+Po2LUK{dpsSM{C0 zu*1+_A0y?XKAlAVRGqW#R$Z@01t)7ZGgWhXpri)SWaxSj8(oC{fS>Vr)*Fy$@}wC& z9lkqqXws8zaL)VvGdk9mjzoX(Qk*xJeJkxq93$I<^rwBNdovqfbtwz8ZcKVna4+p%2c8SA{ zprF$TT7|8gbw@Ki`)G(P{QAa}epTs>#SbXox$1X8@pn(B;|V~3i?VYqlR~kOpyJ9D z(2=9*b$5a~NOpthl)p}$>1Fr2?+m8A!B7t@>@0q4F5V>T)&WYyz|`G%`+P8&&crEM zWjtJZQFhd0Iuj_*FG^g295)QAfh%zs0DmrM) zODaPJV3Z&ih~@KPUkC!+-qK7aWLgvnz{vfxDv2+V@^&zb@M(Vl6erGEAApRUUL*L| z9Y$gpuEu8|JAu;qWPAlvZ}xr+BQU(Vf-Xkj4h#a!_|Ey){^(*_asTafr;^dJ!bgC! z3Xljvj0yfQnY%qyD{$>am912CA7>#va~UcLVLjq`f{X#dAU z0Q|>K>5=S>r@*8|)S9`RnR|TRK~m9EPaTs~be&0gjguTw%3dU*IZSAa6qyK-n* zBH>6MDz3R*%B&GsKWGaS^qf?pM9UZ8&a&eo(~ZW!9>d}IegCXT#mEtZVnoeNIe4@h zHF(PSTNI8m6i2;q*1wqa`_p1BNBY1Lrh39l`NBlb*(9>QQ0~=9--qOL4*m`sq>tg_)ihNi~?sy2w0^1NP z;_ZoPu`1%NVmFQ-dN;EQbSh+#6l5{Ld@!_7M(!1u{-T88xt2^QTB^=>ctqsP`PaLG zkS<_57eJmA|BXX0XYW(pA8#*l%qKSh9Y+XuMR_39B>WXpU**FGv&+f&=HikuN*Nd$ zfK>O44mR#%FNx6+(vt~^r#N|XT7i>zj4_zf6B-Ff`Rytgz)5=Rk(>+sf{#6g59}I7 zi^#=QY}Wd%L2yy+NIDYZ5UJc^EMu!$ne~!owJ}J%DP_P01YJnXkT9w+Ii#{lB2d*| zZ%}3RNco=OVUA3A$kN}l(zR$!D_o`*GXzDaB@I+dB}TVfc~o0tmTx@AGtKY~=eL>I zo6c+?`BZirTmo^zi>NJNhnBTHH zWH+BbIQ;I#t3&3Rj&-z1@Z!yjpI$K-<`jx~$2mTH^XA2?@2&fCT-1o@u`uJ%fv&}2 z=uk(fVdx|V0n=S|yfP~J4xL7e8oWbmzhzrDck0zzqx@Dp#brP>W^6*RjebIq=drwbOBlx^Sisp_>zP@3gxJLSH7K>Z=>?%n@a_^OS_xV*llfe^RPEN|l1F zvh&S1*a#SUb*G5VYLYw!qH%Hrg%-XM1k0+afP{8$|M}<$ zX21!~1zn>e`n*4g#%T`5J^vOI_nQ1*W#25v!RfU(7QB){+EH%_VUB)I?(Y;1e!xPZ> zNPT!B%?tQ($*$oF*K_EuND6FyLQCJH{&XsTgYuA9MsMKUIX~w~O(meX9$|$cmVME^ zy2AGS0{@3#M4jOeoE$K-&rU|=InF`VsEGf#Lea$upHqjNQ+M3e=m&h^uP*&KrOz(i zIi=5@i+6e+efsq2(tVFUef-oFnDZajlRI9uIsXyyAD9eqL2gcOVc`>Xfhmy7D6{?% zQR6_TB2S?vB^gm3Oi$43Fc_Vjj&DY1Q&tn5CW_qvI`GRGz_9SR3?@nctWOS| z-uSjJykX}zfLBFXILjHU>Kdqufuh6`MWHFU7BWq>(W*>fBx)F4HfC3;B}s1qK?Bsu zEo&T1h3m=qS7Bz2N6I~D>=i5%&|6{9IUkPUTa{MAmC*L!S*<;&RItm{Oq1U`x}wzE zg+a+ynLF73MLhs*s`pea%B3{m=Gr(8zkiPL(y1RvkX_CBqrJURwdvm6 z5y$p$P_2uMYi)y&ttT)BwaryrcgHe>&NF}olpd+@n5+lf!-_LjfKGyAuMj^%Aw0$V zitG(^B1hN4HX95FU^F=IyXQ3TRbEo;TANfozm-}TGgNw$@pP*FVg+~isz{cS>+J6v zpNFQ)byF(obfYJ&6r>62T6SDPfJP9V-+Uv6_~i^|=DVs-M0S1QO1l?BrWfk&)@Q&mG_zLC^ZZg}bMoEz_9)j523BN_)o zUAU{<)r$Y|cDw)acINPX`X8_33OR_%4a5r7d$_~k`VNEYnx*qOQsI!R!jeMUQHxLC zO=g8cr2tP$m;#fQ@S{SFFVW|2P^}erMA8)rL7=Tlu@jWojgm|b4~ifcpjus3Elr?w zD*o>li#ME3Dla9;tbi*QKpWLVjUf&cXY%$I@s0i;;_tr~)ZIkFJ)W?r!9(w|-}`NfQW!hX?$oIxsv$c5axj%@?5>~Gwb)%? zkyBsaEow*n2Aa^aZSy^acvOw&&(xiYMgpdZ=BZA8Lo zPt5N-N#6Y7FSM*cBsyRe(C4lE*mVlGcX)YMbatFmdIq0NBZJ-pQ$PzuYcy!Jm5WKy z$7sNLx+w9f%Y))7j>oECr=!+b)e@<7)!-AQIkgdO#CRcdXvZ?rX+`WL$g8i4^~6vU zm5P_GN{|huI!fyj`lJN^D}|s0V^M;dlfDt7vohSuabCPa57XguatOYC@#Y8Tf1SgZ zFJHVqK6J7;9FgJ93k6Y|X9QBnoAy-)K!^aCP*-Cb7b;L&p+-a=koW};>#pZ%7FM7_ zkyIs>l=I9nWfmpJ5oiaQIs^EX!f#9^&t)Nril>*>wi^ke*5q49-sYGOf~2k?xmxt* zn9qU)a9ZY6DQsr7MMwG+3al}y;=(*;GK1Z`(|!XCjTi{{i9K-Hy`_~$j7u4uEp3ym zi~UndRMYOgjsOFmRRdHT>OP57{v8sy3`ML*5^y&GXd4kM{1C$#?49a+OurkEczWu(Fs zu`r7wh}3K%XVk$PQ_}$=4c+n?w`{?Jz3yHJ03=;3X)KZZMF2yX9=CJk^IPEdyAp_7 zWvs`LltMuHLRbVI@Py-Cqn;uxW^-I;U`Eb`i@7Sl4z`#$;@U zM)q+RKr&cE(HAaHG$$-c0*V7<4yc6^{-<7WD~S|K@(>sz?@ezw7^Rx3GL$a0=g}Nx zJWEbQQ{4)EwWTW>XNk!EAxA`@+cNEe!(T|f?CLUhf5fYaDRv@;=J$s#bnef?)FX^x>9zK)YvV!WRy*c zCGn-z)u{j8Ox~$x!`pdBrbi@ZOSXd6j1@Bpg_&2}Wg;p?){Xje?ov$5J*|6O(^T$X zoLzQjaXAetb_)NmulpGFNU|D)`32al*CN7!8@{3((9yHO=%z0^n?~h>f|Iytg1gEg zG{w(b`4NY_5dquCcpebCM-sZ5>^irB?wTr3w-~xd`V&0_61v-U6#sXYl3oPeZSv}? zVm&d`6m+-C*3dmN&^=PnJp$++3Fr=&ek7s$MzH-Ko51#HA#A7NXG>ZLeGYD?b^`(DMoeoO%)Sb;v-LoN?1o|n$j;Ue39_eU zUJTh|i+=^yf>fYx9y6fMZr(|Bus%$W)x`cO(XnZ(1=G##I85hHQZuB$^tCEt!*p{y z4%7LQ)C@70uKC<9J~78~n?Ub4mNqQ&>0#+4n2sJ0Oh+Yaii0R8U>ue3zXH?o6if05 zpm0Al&3L?4RJtj>e543^@J&wUZsE|+WG@h%%rMlpG$qY_bQ zgEU2neR2gd8$N8QDx|hdyoXWoapApKc8gqT5*$c=Q@NY5ea~=f z2dG_4?vhT3RrtT!p+4BzF>7YOc53EFdMJ+kvqLJa_?%thzXa>?r8y*RQFvCMNomn3 zS-*Bv%%2LEEA+-wxlCO$m-xq)0PRvb+bqR2=YzhwE_M3z>q5mY76xC26P3jD+p(j7 zIIW~gQ5s~|ylHh09@&#TqD6l$5%E_sVL6N$5{f9NpV`_2J7fjcND%>q3Qn#Vu-FJ! zAO$uiB5)VxC0^9r0$XSA>UZ<;+4xFDhGNe_Crk&YgCX{$vTQ3Rh)wHoR4H5r7G!yQ z3e0G=g%I49-=L9)H@)AYGQR&#FGx`_-QLXjCDfZe7!yD@_K&`&)eCKyD0bPzx>^RZ zDgd&O)7OGm+w)j1mQ2o& z-=ncLAEwT@*Snca`e$W52m97|DMdsf^-{Oe)KJ{0+ef^ZxA>4nDhm-b1s&EGz+MQ& zaY~#NZAYQF?E@-~!&e8+Pv1FjexNs&-r$>OKZ33D?ctlZhlj7|zA#yioqb4(zon!4 z80j3$I_ixB>2?)iuLm=+zNngVFjGQ~-eHyT=ZktqZ7U(7#pBy|Py^1!JRp!{&Dpr} z{u19J62X0ajFozSDUAh1`fS{v%B64RSB&jo5nVw?N+l3~W23FRTkl7LFYjgufzmfn z$m9IN?R#e8m49hI4f;|xCSME5Zyc(XzhB(dUB;NJ^+K-h5|p8ay-&BX26kt!f2~;liieYlGc9vEatgJ`}$SVIw%Cd^|-KRz>S@!;>Ybsl@`4cAp zhrFtKJnmz@UHuxR=-2JXkvw=9$r@24_YNYtPYlV%AtbpK0VG<#W(gb7@kD=`e%&|@ z;^R}W4-f?LpfM1-j@?-*da(l?_8yh*qw>9n@?A^!RyNkX_XuaOqZy3uU1Zv(gkP$9 z#&j?4cXQcIRbQuLqr;|;W^ER=`+1nP>*K3T?^-?rtdA04B^?-Ft;AeLj-*8J4kVgq z{xOBb7!Z31$HvD8ydFIpkKpPNTzztm4J8}DN(#p<%f={!Y<#pzzXYqa@+dhUCFf^g zmgW`%%Qa-Dj=O`@6cJ%rqc{VFbiE#Sdwuh=DU{1hA7)Uf_YWU;4EPv!49Mq{BwGFQ ze{P|~e0)>s@lB;90m(!U`}Tj%mZ4h?r8N=S^7rO%$^S87LAj4MGAOq^I7m$%?Kai% zybtiA`XBMC`g$*`Z{v0Kd%m!KKX+JeJ03BN4AotdzUpXs&r-J}%Wdlw>Mg>H`v8oG ze~lF*ysr9zQ77`X==+19JmDRy0snRW_VeK5OH zur(y6z|w`}=djBJCHRy#nK1U3wOz!c{q<;nC57LHJ4Gz9zj6;`hHZPph}fI5o4@Xo z`(xgC$$cCzy=XIR&dso8@4cuwG*6ge53tYg9}shrQt@T`{B9xgBzMoPe(x85lG|Pg z3jduj%a&|Wo5d`%sAD>&(hGh>v-+7;VG z?UwW|2JCUMjak%_3BIGbyPK1zBtAJq#{Bx+DLZp@5vhwiy1>&ACuKUo5}6Vy%Omh4 zIHBGqaRK5<7Azza`wp5}Ba5vLM2t5`Gi`La-PtgujlRuW!u(JFIiLCVNU zBqd)iDaU6lJB-wPuVUYbp0P~$nzDig5GQ;}@pCrmzCSU$ zHI&5-ehwtvP{%&f4|VdSOv;|{10CtcR398kKhIC*;sS?E5>pqa>SFHV@rW{+OztWQ zb5C8}=_}Up@jHT~n&@hn|OMO)6G5 z>tMIonD2UOfHyngFy)jvLyeBO%bTO=cm<6($kwOQBp+J)kdk3yE9F10HjEBdrE|G*mlqr9_cJ zIfVhrI~uKBi8|_DR8IncqVZrnYxmi{DWcpH4nbj$WXC;{0K~i6XR?jl}rXjL-WdlvoSZxTH35Y z`wYzli3Hn6Hrq4GinYy!W_xohdEn-~**?;2A1!A4D244K!-J9H!6*~kN8Z9By_6!o zOhpnWE91h|jI7O#B-_^{ms_bTDaq*sVzBTIUmfKC=kf3H@A2>P?^FHze^c2>%K&Bq E0H>dwaR2}S literal 0 HcmV?d00001 diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp deleted file mode 100644 index 9055e1ac2e..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/DiskChopper.comp +++ /dev/null @@ -1,218 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: DiskChopper -* -* %I -* Written by: Peter Willendrup -* Date: March 9 2006 -* Origin: Risoe -* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by -* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) -* -* %D -* Models a disc chopper with nslit identical slits, which are symmetrically distributed -* on the disc. At time t=0, the centre of the first slit opening will be situated at the -* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. -* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z -* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see -* related bug on GitHub) -* -* For more complicated gemometries, see component manual example of DiskChopper GROUPing. -* -* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. -* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the -* chopper timing and phasing (thus conserving your simulated statistics). -* -* The isfirst parameter is ONLY relevant for use in continuous source settings. -* -* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper -* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) -* -* NOTA BENE wrt. GROUPing and isfirst: -* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need -* to set up -* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening -* that spans the full angular extent of the openings of the subsequent GROUP -* 2) Add your DiskChopper GROUP setting isfirst=0 -* -* %P -* INPUT PARAMETERS: -* -* theta_0: [deg] Angular width of the slits. -* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. -* radius: [m] Radius of the disc -* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) -* nslit: [1] Number of slits, regularly arranged around the disk -* -* Optional parameters: -* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) -* n_pulse: [1] Number of pulses (Only if isfirst) -* jitter: [s] Jitter in the time phase -* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? -* delay: [s] Time 'delay' -* phase: [deg] Angular 'delay' (overrides delay) -* xwidth: [m] Horizontal slit width opening at beam center -* verbose: [1] Set to 1 to display Disk chopper configuration -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT DiskChopper - - - -SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) - - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -DECLARE -%{ - double Tg; - double To; - double delta_y; - double height; - double omega; -%} - -INITIALIZE -%{ - /* If slit height 'unset', assume full opening */ - if (yheight == 0) { - height = radius; - } else { - height = yheight; - } - delta_y = radius - height / 2; /* radius at beam center */ - omega = 2.0 * PI * nu; /* rad/s */ - if (xwidth && !theta_0 && radius) - theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); - - if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { - fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); - exit (-1); - } - if (nslit * theta_0 >= 360) { - fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); - exit (-1); - } - if (yheight && yheight > radius) { - fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); - exit (-1); - } - if (isfirst && n_pulse <= 0) { - fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); - exit (-1); - } - if (!omega) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - if (!abs_out) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); - } - - theta_0 *= DEG2RAD; - - /* Calulate delay from phase and vice versa */ - if (phase) { - if (delay) { - fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); - } - phase *= DEG2RAD; - /* 'Delay' should always be a delay, taking rotation direction into account: */ - delay = phase / fabs (omega); - } else { - phase = delay * omega; /* rad */ - } - - /* Time from opening of slit to next opening of slit */ - Tg = 2.0 * PI / fabs (omega) / nslit; - - /* How long can neutrons pass the Chopper at a single point */ - To = theta_0 / fabs (omega); - - if (!xwidth) - xwidth = 2 * delta_y * sin (theta_0 / 2); - - if (verbose && nu) { - printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); - printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); - } -%} - -TRACE -%{ - double toff; - double yprime; - PROP_Z0; - yprime = y + delta_y; - - /* Is neutron outside the vertical slit range and should we absorb? */ - if (abs_out && (x * x + yprime * yprime) > radius * radius) { - ABSORB; - } - /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ - if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { - ABSORB; - } - - if (isfirst) { - /* all events are put in the transmitted time frame */ - t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); - /* correction: chopper slits transmission opening/full disk */ - p *= nslit * theta_0 / 2.0 / PI; - } else { - - // Check whether each t_offset carried by the ray make it through - int train_index; - int one_did_hit = 0; - double this_train_t; - int all_dead = 1; - for (train_index=0; train_index<_particle->N_trains; train_index++) { - - if (_particle->alive_trains[train_index] == 0) continue; - all_dead = 0; - - this_train_t = t + _particle->t_offset[train_index]; - toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); - - /* does neutron hit outside slit? */ - if (fmod (toff + To / 2.0, Tg) > To) - _particle->alive_trains[train_index] = 0; - else one_did_hit = 1; - } - if (!one_did_hit || all_dead) ABSORB; - - } - SCATTER; -%} - -MCDISPLAY -%{ - - int j; - /* Arrays for storing geometry of slit/beamstop */ - - circle ("xy", 0, -delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslit; j++) { - /* Angular start/end of slit */ - double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; - double tmax = tmin + theta_0; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); - line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, - 0); - line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp deleted file mode 100644 index 6df88c7321..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ESS_butterfly.comp +++ /dev/null @@ -1,615 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright 1997-2016, All rights reserved -* DTU Physics, Kongens Lyngby, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: ESS_butterfly -* -* %I -* -* Written by: Peter Willendrup and Esben Klinkby -* Date: August-September 2016 -* Origin: DTU -* -* ESS butterfly moderator, 2016 revision -* -* %D -* ESS butterfly moderator with automatic choice of coordinate system, with origin -* placed at relevant "Moderator Focus Coordinate System" depending on sector location. -* -* To select beamport N 5 simply use -* -* COMPONENT Source = ESS_butterfly(sector="N",beamline=5,Lmin=0.1,Lmax=20,dist=2, -* cold_frac=0.5, yheight=0.03,focus_xw=0.1, focus_yh=0.1) -* -* Geometry -* The geometry corresponds correctly to the latest release of the butterfly moderator, -* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. -* A set of official release documents are available with this component, see the benchmarking -* website mentioned below. -* -* Brilliances, geometry adapted from earlier BF2 design -* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, -* are released as an updated component library for McStas 2.3, as well as a stand alone archive for -* use with earlier versions of McStas. -* -* The following features are worth highlighting: -*
    -*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. -* As a result, the spatial variation of the brightness across the moderator face should be considered to -* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to -* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness -* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. -*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. -* To accommodate the influence of the changed geometry, this scaling factor has been applied independently -* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the -* spectrally-integrated 6cm width data shown in [1],Figure 3. -*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance -* have been implemented. For now, we recommend to keep these at their default value of 1.0. -*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This -* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, -* which has been derived from current MCNP butterfly 1 model. -*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, -* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. -* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree -* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees -* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- -* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. -*
-* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be -* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. -* -*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance -* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation -* across sectors and potentially also performance losses due to engineering reality. -* -* Engineering reality -* An ad-hoc method for future implementation of "engineering reality" is included, use the -* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. -* -* References: -*

    -*
  1. Release document "Update to ESS Moderators, latest version" -*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" -*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures -*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. -*
  5. Source code for ESS_butterfly.comp at GitHub. -*
-* %P -* Input parameters: -* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" -* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector -* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m -* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator -* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 -* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 -* Lmin: [AA] Minimum wavelength simulated -* Lmax: [AA] Maximum wavelength simulated -* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. -* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index -* focus_xw: [m] Width of focusing rectangle -* focus_yh: [m] Height of focusing rectangle -* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. -* acc_power: [MW] Accelerator power in MW -* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. -* tfocus_dist: [m] Position of time focusing window along z axis -* tfocus_time: [s] Time position of time focusing window -* tfocus_width: [s] Time width of time focusing window -* -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT ESS_butterfly - -SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, - int target_index=0, dist=0, focus_xw=0, focus_yh=0, - c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, - acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0) - -DEPENDENCY " -DTOF_TRAIN " - -SHARE %{ - %include "ESS_butterfly-lib" - %include "ESS_butterfly-geometry.c" - - int nearest_angle(double angle) { - int AngleList[] = {5, 15, 25, 35, 45, 55}; - double diff = 180; - int jmin=0; - int j; - for (j=0; j<6; j++) { - if (fabs(AngleList[j]-angle) < diff) { - diff = fabs(AngleList[j]-angle); - jmin = j; - } - } - return AngleList[jmin]; - } - double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; - double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; - double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; - double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; - double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; - double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; - double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; - double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; - double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; - double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; - double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; - double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; - double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; - double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; - double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; - double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; - double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; - double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; -%} - -DECLARE -%{ - double* ColdWidths; - double* ThermalWidths; - double ColdScalars[11]; - double ThermalScalars[11]; - double *Beamlines; - double wfrac_cold; - double wfrac_thermal; - /* 'Corner' parametrization, i.e. where are the limits of the moderators */ - double C1_x; - double C1_z; - double C2_x; - double C2_z; - double C3_x; - double C3_z; - double T1_x; - double T1_z; - double T2_x; - double T2_z; - double T3_x; - double T3_z; - /* - plus rotated versions of the same... */ - double rC1_x; - double rC1_z; - double rC2_x; - double rC2_z; - double rC3_x; - double rC3_z; - double rT1_x; - double rT1_z; - double rT2_x; - double rT2_z; - double rT3_x; - double rT3_z; - double tx; - double ty; - double tz; - double r11; - double r12; - double r21; - double r22; - double delta_y; - double Mwidth_c; - double Mwidth_t; - double beamportangle; - double w_mult; - double w_stat; - double w_focus; - double w_tfocus; - double w_geom_c; - double w_geom_t; - int isleft; - double l_range; - - double cos_thermal; - double cos_cold; - - double orientation_angle; - /* Centering-parameters, which sector are we in? */ - double cx; - double cz; - int jmax; - double dxC; - double dxT; -%} - -INITIALIZE -%{ - - - int sign_bl_angle; - - /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ - double oversampT=1.1; - double oversampC=1.0; - - - /* variables needed to correct for the emission surface angle */ - double internal_angle; - double cos_beamport_angle, sin_beamport_angle; - - if (beamline<4) { - wfrac_cold=1.0; - wfrac_thermal=(1-0.072); - } else { - wfrac_cold=1.0; - wfrac_thermal=1.0; - } - - /* Centering-parameters, which sector are we in? */ - if (strcasestr(sector,"N")) { - cx = 0.117; cz=0.0; sign_bl_angle=1; - orientation_angle = BeamlinesN[beamline-1]; - Beamlines = BeamlinesN; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsN[j]; - ThermalScalars[j] = ThermalScalarsN[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else if (strcasestr(sector,"W")) { - cx = 0.0; cz=0.0; sign_bl_angle=-1; - orientation_angle = BeamlinesW[beamline-1]; - Beamlines = BeamlinesW; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsW[j]; - ThermalScalars[j] = ThermalScalarsW[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"S")) { - cx = 0.0; cz=-0.185; sign_bl_angle=1; - orientation_angle = BeamlinesS[beamline-1]; - Beamlines = BeamlinesS; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsS[j]; - ThermalScalars[j] = ThermalScalarsS[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"E")) { - cx = 0.117; cz=-0.185; sign_bl_angle=-1; - orientation_angle = BeamlinesE[beamline-1]; - Beamlines = BeamlinesE; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsE[j]; - ThermalScalars[j] = ThermalScalarsE[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else { - fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); - exit(-1); - } - if (beamline > jmax || beamline <= 0 ) { - fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); - exit(-1); - } - - printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); - if (c_performance <= 0) { - fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); - exit(-1); - } - if (t_performance <= 0) { - fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); - exit(-1); - } - if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { - fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", - NAME_CURRENT_COMP); - exit(-1); - } - /* Figure out where to aim */ - if (target_index && !dist) - { - Coords ToTarget; - ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); - ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); - coords_get(ToTarget, &tx, &ty, &tz); - dist=sqrt(tx*tx+ty*ty+tz*tz); - } else if (!target_index && !dist) { - fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); - exit(-1); - } else { - tx=0; ty=0; tz=dist; - } - printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); - if (target_index) { - printf(" ( from target_index %i -> distance %g )\n", target_index, dist); - } else { - printf(" ( from dist parameter -> distance %g )\n", dist); - } - printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); - - /* Calculate orientation matrix for the display and calculations */ - r11 = cos(DEG2RAD*orientation_angle); - r12 = -sin(DEG2RAD*orientation_angle); - r21 = sin(DEG2RAD*orientation_angle); - r22 = cos(DEG2RAD*orientation_angle); - - /* Rotated corrdinates of the emission areas */ - rC1_x = r11*C1_z + r12*C1_x; - rC1_z = r21*C1_z + r22*C1_x; - rC2_x = r11*C2_z + r12*C2_x; - rC2_z = r21*C2_z + r22*C2_x; - rC3_x = r11*C3_z + r12*C3_x; - rC3_z = r21*C3_z + r22*C3_x; - rT1_x = r11*T1_z + r12*T1_x; - rT1_z = r21*T1_z + r22*T1_x; - rT2_x = r11*T2_z + r12*T2_x; - rT2_z = r21*T2_z + r22*T2_x; - rT3_x = r11*T3_z + r12*T3_x; - rT3_z = r21*T3_z + r22*T3_x; - /* Moderator half-height */ - delta_y = yheight/2.0; - /* Other moderator parms */ - /* "Measured" moderator widths in cm scale */ - Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; - Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; - - if (tfocus_width && tfocus_time && tfocus_dist) { - printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { - printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); - } else { - fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", - NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - exit(-1); - } - - l_range = Lmax-Lmin; - /* Weight multipliers */ - w_mult=acc_power/5; - w_stat=1.0/mcget_ncount(); - w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ - w_geom_t = 0.108*yheight*1.0e4; - w_mult *= l_range; /* wavelength range correction */ - n_pulses=(double)floor(n_pulses); - if (n_pulses == 0) n_pulses=1; - - dxC=dxCold[beamline-1]; - dxT=dxThermal[beamline-1]; -%} - -TRACE -%{ - double xtmp; - int iscold; - double x0,z0; - int surf_sign; - double cos_factor; - double w_geom; - double xf, yf, zf; - double dx,dy,dz; - double k,v,r,lambda; - double dt=0; - double modX,modY; - - /* Cold or thermal event? */ - p=1; - xtmp = rand01(); - y = randpm1()*delta_y; - modY=y; - if (rand01() < cold_frac) { - iscold=1; - if (rand01() < wfrac_cold) { // "Broad face" - x = rC1_x + (rC2_x - rC1_x)*xtmp; - z = rC1_z + (rC2_z - rC1_z)*xtmp; - x0 = C1_x + (C2_x - C1_x)*xtmp; - z0 = C1_z + (C2_z - C1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_cold; - } else { - x = rC1_x + (rC3_x - rC1_x)*xtmp; - z = rC1_z + (rC3_z - rC1_z)*xtmp; - x0 = C1_x + (C3_x - C1_x)*xtmp; - z0 = C1_z + (C3_z - C1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)-dxC); - w_geom=w_geom_c; - } else { - iscold=0; - if (rand01() < wfrac_thermal) { // "Broad face" - x = rT1_x + (rT2_x - rT1_x)*xtmp; - z = rT1_z + (rT2_z - rT1_z)*xtmp; - x0 = T1_x + (T2_x - T1_x)*xtmp; - z0 = T1_z + (T2_z - T1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } else { - x = rT1_x + (rT3_x - rT1_x)*xtmp; - z = rT1_z + (rT3_z - rT1_z)*xtmp; - x0 = T1_x + (T3_x - T1_x)*xtmp; - z0 = T1_z + (T3_z - T1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)+dxT); - w_geom=w_geom_t; - } - - SCATTER; - /* Where are we going? */ - randvec_target_rect_real(&xf, &yf, &zf, NULL, - tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); - - w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); - - dx = xf-x; - dy = yf-y; - dz = zf-z; - r = sqrt(dx*dx+dy*dy+dz*dz); - - lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ - - k = 2*PI/lambda; - v = K2V*k; - - vz = v*dz/r; - vy = v*dy/r; - vx = v*dx/r; - - int train_index; - for (train_index=0; train_index<_particle->N_trains; train_index++) { - - /* Are we using time focusing? */ - if (tfocus_width>0) { - dt = tfocus_dist/vz; - t = tfocus_time-dt; /* Set time to hit time window center */ - t += randpm1()*tfocus_width/2.0; - if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ - if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; - w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); - } else { - /* Simple, random wavelength @ random time */ - t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; - w_tfocus=1; - } - - if (iscold) { //case: cold moderator - /* Apply simple engineering reality correction */ - ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= c_performance; - p *= ColdScalars[beamline-1]; - } else { //case: thermal moderator - ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= t_performance; - p *= ThermalScalars[beamline-1]; - } - p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; - t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ - p*=cos_factor; - /* Correct weight for sampling of cold vs. thermal events. */ - if (iscold) { - p /= cold_frac; - } else { - p /= (1-cold_frac); - } - - // Generate ray as normal with its associated p and t - // Save these to t_offset and p_train - - _particle->t_offset[train_index] = t; - _particle->p_trains[train_index] = p/_particle->N_trains; - _particle->alive_trains[train_index] = 1; - - } - // Set base particle t and p, now p will be decoupled from the source intensity. - t=0; - p=1; - - SCATTER; -%} - -MCDISPLAY -%{ - #ifndef OPENACC - magnify(""); - butterfly_geometry(delta_y, jmax, cx, cz, - orientation_angle, Beamlines, tx,ty,tz, - rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, - rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, - r11, r12, r21, r22, focus_xw, focus_yh); - #endif -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Graphite_Diffuser.comp deleted file mode 100644 index ea21aa714e..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/Graphite_Diffuser.comp +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************* -* -* McStas, version 1.2 released February 2000 -* Maintained by Kristian Nielsen and Kim Lefmann, -* Risoe National Laboratory, Roskilde, Denmark -* -* %IDENTIFICATION -* -* Written by: Manuel Morgano -* Date: 18 Febrauary 2015 -* Version: $Revision: 1.1.1.1 $ -* Origin: PSI -* -* Graphite diffuser -* -* %DESCRIPTION -* -* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics -* -* The formula has only been verified for a diffuser thickness of 1 and 2 cm. -* No absorption is take into account. -* -* %PARAMETERS -* -* INPUT PARAMETERS: -* -* xwidth: (m) Size of diffuser -* ywidth: (m) Size of diffuser -* thick: (m) Thickness of diffuser -* abs (1) 0 = no absorption, 1 = absorption -* %LINKS -* %END -* -*******************************************************************************/ - -DEFINE COMPONENT Graphite_Diffuser -DEFINITION PARAMETERS () -SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) -OUTPUT PARAMETERS () -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) -SHARE -%{ - double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ -{ - double rand1, rand2; - rand1 = rand01();// / ((double) RAND_MAX); - if(rand1 < 1e-100) rand1 = 1e-100; - rand1 = -2 * log(rand1); - rand2 = (rand01()) * 6.2831853071795864769252866; - - return (sigma * sqrt(rand1) * cos(rand2)) + mu; -} -%} -INITIALIZE -%{ -%} -TRACE -%{ - - double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; - double dt; - PROP_Z0; - if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi -* Date: 14th Feb 2000. -* Origin: ILL -* Release: McStas 1.6 -* Version: $Revision$ -* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi -* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) -* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster -* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) -* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) -* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) -* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) -* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) -* -* This component is a general Monitor that can output 0/1/2D signals -* (Intensity or signal vs. [something] and vs. [something] ...) -* -* %Description -* This component is a general Monitor that can output 0/1/2D signals -* It can produce many 1D signals (one for any variable specified in -* option list), or a single 2D output (two variables correlation). -* Also, an additional 'list' of neutron events can be produced. -* By default, monitor is square (in x/y plane). A disk shape is also possible -* The 'cylinder' and 'banana' option will change that for a banana shape -* The 'sphere' option simulates spherical detector. The 'box' is a box. -* The cylinder, sphere and banana should be centered on the scattering point. -* The monitored flux may be per monitor unit area, and weighted by -* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. -* In normal configuration, the Monitor_nD measures the current parameters -* of the neutron that is beeing detected. But a PreMonitor_nD component can -* be used in order to study correlations between a neutron being detected in -* a Monitor_nD place, and given parameters that are monitored elsewhere -* (at PreMonitor_nD). -* The monitor can also act as a 3He gas detector, taking into account the -* detection efficiency. -* -* The 'bins' and 'limits' modifiers are to be used after each variable, -* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 -* limits=[-5 5]) When placed after all variables, these two latter modifiers -* apply to the signal (e.g. intensity). Unknown keywords are ignored. -* If no limits are specified for a given observable, reasonable defaults will be -* applied. Note that these implicit limits are even applied in list mode. -* -* Implicit limits for typical variables: -* (consult monitor_nd-lib.c if you don't find your variable here) -* x, y, z: Derived from detection-object geometry -* k: [0 10] Angs-1 -* v: [0 1e6] m/s -* t: [0 1] s -* p: [0 FLT_MAX] in intensity-units -* vx, vy: [-1000 1000] m/s -* vz: [0 10000] m/s -* kx, ky: [-1 1] Angs-1 -* kz: [-10 10] Angs-1 -* energy, omega: [0 100] meV -* lambda,wavelength: [0 100] Angs -* sx, sy, sz: [-1 1] in polarisation-units -* angle: [-50 50] deg -* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg -* longitude, lattitude: [-180 180] deg -* neutron: [0 simulaton_ncount] -* id, pixel id: [0 FLT_MAX] -* uservars u1,u2,u3: [-1e10 1e10] -* -* In the case of multiple components at the same position, the 'parallel' -* keyword must be used in each instance instead of defining a GROUP. -* -* Possible options are -* Variables to record: -* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm -* vx vy vz v [m/s] Velocity on x,y,z and norm -* x y z radius [m] Distance, Position and norm -* xy, yz, xz [m] Radial position in xy, yz and xz plane -* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane -* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane -* t time [s] Time of Flight -* energy omega [meV] energy of neutron -* lambda wavelength [Angs] wavelength of neutron -* sx sy sz [1] Spin -* vdiv ydiv dy [deg] vertical divergence (y) -* hdiv divergence xdiv [deg] horizontal divergence (x) -* angle [deg] divergence from direction -* theta longitude [deg] longitude (x/z) for sphere and cylinder -* phi lattitude [deg] lattitude (y/z) for sphere and cylinder -* -* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} -* user2 user3 to be assigned in an other component (see below) -* -* p intensity flux [n/s or n/cm^2/s] -* ncounts n neutron [1] neutron ID, i.e current event index -* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. -* -* Other options keywords are: -* abs Will monitor the abs of the following variable or of the signal (if used after all variables) -* auto Automatically set detector limits for one/all -* all {limits|bins|auto} To set all limits or bins values or auto mode -* binary {float|double} with 'source' option, saves in compact files -* bins=[bins=20] Number of bins in the detector along dimension -* borders To also count off-limits neutrons (X < min or X > max) -* capture weight by lambda/lambda(2200m/s) capture flux -* file=string Detector image file name. default is component name, plus date and variable extension. -* incoming Monitor incoming beam in non flat det -* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) -* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events -* log Will monitor the log of the following variable or of the signal (if used after all variables) -* min=[min_value] Same as limits, but only sets the min or max -* max=[max_value] -* multiple Create multiple independant 1D monitors files -* no or not Revert next option -* outgoing Monitor outgoing beam (default) -* parallel Use this option when the next component is at the same position (parallel components) -* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. -* per steradian Displays beam solid angle in steradian -* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. -* signal=[var] Will monitor [var] instead of usual intensity -* slit or absorb Absorb neutrons that are out detector -* source The monitor will save neutron states -* inactivate To inactivate detector (0D detector) -* verbose To display additional informations -* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) -* -* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) -* box Box of size xwidth, yheight, zdepth. -* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). -* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). -* disk Disk flat xy monitor. diameter is xwidth. -* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). -* square Square flat xy monitor (xwidth, yheight). -* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. -* -* EXAMPLES: -*
    -*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, -*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with -*   borders, file = mon1"); -* will monitor neutron angle from [z] axis, between -5 -* and 5 degrees, in 10 bins, into "mon1.A" output 1D file -* -*
  • options = "sphere theta phi outgoing" -* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" -* -*
  • options = "banana, theta limits=[10,130], bins=120, y" -* a theta/height banana detector -* -*
  • options = "angle radius all auto" -* is a 2D monitor with automatic limits -* -*
  • options = "list=1000 kx ky kz energy" -* records 1000 neutron event in a file -* -*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" -* makes 4 output 1D files and produces a complete list for all neutrons -* and monitor log(abs(tof)) within automatic limits (for t) -* -*
  • options = "theta y, sphere, pixel min=100" -* a 4pi detector which outputs an event list with pixelID from the actual -* detector surface, starting from index 100. -* -*
-* To dynamically define a number of bins, or limits: -* Use in DECLARE: char op[256]; -* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); -* Use in TRACE: Monitor_nD(... options=op ...) -* -* How to monitor any instrument/component variable into a Monitor_nD -* Suppose you want to monitor a variable 'age' which you assign somwhere in -* the instrument: -* COMPONENT MyMonitor = Monitor_nD( -* xwidth = 0.1, yheight = 0.1, -* user1="age", username1="Age of the Captain [years]", -* options="user1, auto") -* AT ... -* -* See also the example in PreMonitor_nD to -* monitor neutron parameters cross-correlations. -* -* %BUGS -* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI -* as each process may use different limits. -* -* %Parameters -* INPUT PARAMETERS: -* -* xwidth: [m] Width of detector. -* yheight: [m] Height of detector. -* zdepth: [m] Thickness of detector (z). -* radius: [m] Radius of sphere/banana shape monitor -* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). -* -* Optional input parameters (override xwidth yheight zdepth): -* xmin: [m] Lower x bound of opening -* xmax: [m] Upper x bound of opening -* ymin: [m] Lower y bound of opening -* ymax: [m] Upper y bound of opening -* zmin: [m] Lower z bound of opening -* zmax: [m] Upper z bound of opening -* filename: [str] Output file name (overrides file=XX option). -* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins -* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits -* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits -* user1: [str] Variable name of USERVAR to be monitored by user1. -* user2: [str] Variable name of USERVAR to be monitored by user2. -* user3: [str] Variable name of USERVAR to be monitored by user3. -* username1: [str] Name assigned to User1 -* username2: [str] Name assigned to User2 -* username3: [str] Name assigned to User3 -* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. -* geometry: [str] Name of an OFF file to specify a complex geometry detector -* nowritefile: [1] If set, monitor will skip writing to disk -* -* CALCULATED PARAMETERS: -* -* DEFS: [struct] structure containing Monitor_nD Defines -* Vars: [struct] structure containing Monitor_nD variables -* -* %Link -* PreMonitor_nD -* -* %End -******************************************************************************/ -DEFINE COMPONENT Monitor_nD - -SETTING PARAMETERS ( - string user1="", string user2="", string user3="", - xwidth=0, yheight=0, zdepth=0, - xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, - int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, - string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, - string username1="NULL", string username2="NULL", string username3="NULL", - tsplit=0 -) -/* these are protected C variables */ - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -SHARE -%{ - %include "monitor_nd-lib" - %include "read_table-lib" - %include "interoff-lib" -%} - -DECLARE -%{ - MonitornD_Defines_type DEFS; - MonitornD_Variables_type Vars; - MCDETECTOR detector; - off_struct offdata; -%} - -INITIALIZE -%{ - char tmp[CHAR_BUF_LENGTH]; - strcpy (Vars.compcurname, NAME_CURRENT_COMP); - Vars.compcurindex = INDEX_CURRENT_COMP; - if (options != NULL) - strncpy (Vars.option, options, CHAR_BUF_LENGTH); - else { - strcpy (Vars.option, "x y"); - printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); - } - Vars.compcurpos = POS_A_CURRENT_COMP; - - if (strstr (Vars.option, "source")) - strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); - - if (bins) { - sprintf (tmp, " all bins=%ld ", (long)bins); - strcat (Vars.option, tmp); - } - if (min > -FLT_MAX && max < FLT_MAX) { - sprintf (tmp, " all limits=[%g %g]", min, max); - strcat (Vars.option, tmp); - } else if (min > -FLT_MAX) { - sprintf (tmp, " all min=%g", min); - strcat (Vars.option, tmp); - } else if (max < FLT_MAX) { - sprintf (tmp, " all max=%g", max); - strcat (Vars.option, tmp); - } - - /* transfer, "zero", and check username- and user variable strings to Vars struct*/ - strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); - strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); - strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); - if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { - strncpy (Vars.UserVariable1, user1, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable1, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); - } - } - if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { - strncpy (Vars.UserVariable2, user2, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable2, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); - } - } - if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { - strncpy (Vars.UserVariable3, user3, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable3, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); - } - } - - /*sanitize parameters set for curved shapes*/ - if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { - /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ - if (!radius) { - if (xwidth) { - radius = xwidth / 2.0; - } else { - radius = zdepth / 2.0; - } - } else { - xwidth = 2 * radius; - } - if (!yheight) { - /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ - yheight = 2 * radius; - } - } else if (radius) { - /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values - (xwidth etc. They are used inside monitor_nd-lib.*/ - xwidth = zdepth = 2 * radius; - if (yheight) { - /*a height is given (and no shape explitly set - assume cylinder*/ - strcat (Vars.option, " banana"); - } else { - strcat (Vars.option, " sphere"); - yheight = 2 * radius; - } - } - - int offflag = 0; - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - #ifndef USE_OFF - fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); - exit (-1); - #else - if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { - printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" - " Defaulting to normal Monitor dimensions.\n", - NAME_CURRENT_COMP, geometry); - strcpy (geometry, ""); - } else { - offflag = 1; - } - #endif - } - - if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) - exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); - - Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); - - if (Vars.Flag_OFF) { - offdata.mantidflag = Vars.Flag_mantid; - offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; - } - - if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) - strncpy (Vars.Mon_File, filename, 128); - - /* check if user given filename with ext will be used more than once */ - if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { - char* XY; - XY = strrchr (Vars.Mon_File, '.'); - *XY = '_'; - } - - if (restore_neutron) - Vars.Flag_parallel = 1; - detector.m = 0; - - #ifdef USE_MPI - MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) - printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" - "WARNING this may create incorrect distributions (but integrated flux will be right).\n", - NAME_CURRENT_COMP);); - #else - #ifdef OPENACC - if (strstr (Vars.option, "auto")) - printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" - "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", - NAME_CURRENT_COMP); - #endif - #endif -%} - -TRACE -%{ - double transmit_he3 = 1.0; - double multiplier_capture = 1.0; - double t0 = 0; - double t1 = 0; - int pp; - int intersect = 0; - char Flag_Restore = 0; - - #ifdef OPENACC - #ifdef USE_OFF - off_struct thread_offdata = offdata; - #endif - #else - #define thread_offdata offdata - #endif - - /* this is done automatically - STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - */ - #ifdef USE_OFF - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - /* determine intersections with object */ - intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); - if (Vars.Flag_mantid) { - if (intersect) { - Vars.OFF_polyidx = thread_offdata.nextintersect; - } else { - Vars.OFF_polyidx = -1; - } - } - } else - #endif - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ - { - // propagate to xy plane and find intersection - // make sure the event is recoverable afterwards - t0 = t; - ALLOW_BACKPROP; - PROP_Z0; - if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful - { - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { - // square xy - intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); - } else { - // disk xy - intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); - } - } else { - intersect = 0; - } - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ - { - intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); - /* intersect = (intersect && t0 > 0); */ - } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ - { - intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ - { - intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ - { - intersect = 1; - } - - if (intersect) { - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) - || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { - /* check if we have to remove the top/bottom with BANANA shape */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { - if (intersect == 1) { // Entered and left through sides - if (t0 < 0 && t1 > 0) { - t0 = t; /* neutron was already inside ! */ - } - if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ - t1 = t; - } - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - intersect = 0; - Flag_Restore = 1; - } - } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - intersect = 0; - Flag_Restore = 1; - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit - intersect = 0; - Flag_Restore = 1; - } else { - printf ("Cylinder_intersect returned unexpected value %i\n", intersect); - } - } else { - // All other shapes than the BANANA - if (t0 < 0 && t1 > 0) - t0 = t; /* neutron was already inside ! */ - if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ - t1 = t; - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) - PROP_DT (t1); /* t1 outgoing beam */ - else - PROP_DT (t0); /* t0 incoming beam */ - } - - /* Final test if we are on lid / bottom of banana/sphere */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { - if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { - intersect = 0; - Flag_Restore = 1; - } - } - } - } - - if (intersect) { - /* Now get the data to monitor: current or keep from PreMonitor */ - /* if (Vars.Flag_UsePreMonitor != 1)*/ - /* {*/ - /* Vars.cp = p;*/ - /* Vars.cx = x;*/ - /* Vars.cvx = vx;*/ - /* Vars.csx = sx;*/ - /* Vars.cy = y;*/ - /* Vars.cvy = vy;*/ - /* Vars.csy = sy;*/ - /* Vars.cz = z;*/ - /* Vars.cvz = vz;*/ - /* Vars.csz = sz;*/ - /* Vars.ct = t;*/ - /* }*/ - - if ((Vars.He3_pressure > 0) && (t1 != t0) - && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { - transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); - /* will monitor the absorbed part */ - p = p * (1 - transmit_he3); - } - - if (Vars.Flag_capture) { - multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); - if (multiplier_capture != 0) - multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ - p = p * multiplier_capture / 1.7985; - } - - - int train_index; - double p_original = p; - - if (tsplit==1) { - double pp_array[_particle->N_trains]; - double t_original = t; - for (train_index=0; train_index<_particle->N_trains; train_index++) { - - if (_particle->alive_trains[train_index] == 1) { - p = p_original*_particle->p_trains[train_index]; - t = t_original + _particle->t_offset[train_index]; - - pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); - - } else pp_array[train_index] = 0; - } - p = p_original; - t = t_original; - - int pp_total = 0; - for (train_index=0; train_index<_particle->N_trains; train_index++) { - pp_total += pp_array[train_index]; - } - if (pp_total == 0.0) { - //ABSORB; - } else if (pp_total > 0) { - SCATTER; - } - } else { - - double total_p = 0; - for (train_index=0; train_index<_particle->N_trains; train_index++) { - if (_particle->alive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; - } - - p = total_p; - - pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); - if (pp == 0.0) { - ABSORB; - } else if (pp == 1) { - SCATTER; - } - - p = p_original; - } - - - /*set weight to undetected part if capture and/or he3_pressure*/ - if (Vars.He3_pressure > 0) { - /* after monitor, only remains 1-p_detect */ - p = p * transmit_he3 / (1.0 - transmit_he3); - } - - if (Vars.Flag_capture) { - p = p / multiplier_capture * 1.7985; - } - - if (Vars.Flag_parallel) /* back to neutron state before detection */ - Flag_Restore = 1; - } /* end if intersection */ - else { - if (Vars.Flag_Absorb && !Vars.Flag_parallel) { - // restore neutron ray before absorbing for correct mcdisplay - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - ABSORB; - } else - Flag_Restore = 1; /* no intersection, back to previous state */ - } - - if (Flag_Restore) { - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - } -%} - -SAVE -%{ - if (!nowritefile) { - /* save results, but do not free pointers */ - detector = Monitor_nD_Save (&DEFS, &Vars); - } -%} - -FINALLY -%{ - /* free pointers */ - Monitor_nD_Finally (&DEFS, &Vars); -%} - -MCDISPLAY -%{ - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - off_display (offdata); - } else { - Monitor_nD_McDisplay (&DEFS, &Vars); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp deleted file mode 100644 index 2bf64d7efc..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/MultiDiskChopper.comp +++ /dev/null @@ -1,351 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2015, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: MultiDiskChopper -* -* %I -* Written by: Markus Appel -* Date: 2015-10-19 -* Origin: ILL / FAU Erlangen-Nuernberg -* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), -* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by -* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) -* -* %D -* Models a disk chopper with a freely configurable slit pattern. For simple applications, -* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. -* If the chopper slit pattern should be dynamically configurable or a complicated pattern -* is to be used as first chopper on a continuous source, use this component. -* -* Width and position of the slits is defined as a list in string parameters so -* they can easily be taken from instrument parameters. -* The chopper axis is located on the y axis as defined by the parameter delta_y. -* When the chopper is the first chopper after a continuous (i.e. time-independent) -* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. -* -* -* Examples (see parameter definitions for details): -* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, delay=0.02) -* -* First chopper on a continuous source, creating pulse trains for one additional revolution -* before and after the revolution at t=0: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) -* -* %P -* INPUT PARAMETERS: -* -* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" -* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) -* nslits: [] Number of slits to read from slit_width and slit_center -* radius: [m] Outer radius of the disk -* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. -* nu: [Hz] Rotation speed of the disk, the sign determines the direction. -* -* Optional parameters: -* verbose: [0/1] Set to 1 to display more information during the simulation. -* phase: [deg] Phase angle located on top of the disk at t=delay (see below). -* delay: [s] Time delay of the chopper clock. -* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. -* jitter: [s] Jitter in the time phase. -* abs_out: If 1, absorb all neutrons outside the disk diameter. -* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events -* will be shifted in time to pass the component (with adapted weight). -* -* Additional parameters when isfirst=1 (that have no effect for isfirst=0): -* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. -* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). -* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT MultiDiskChopper - -SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) - - -DECLARE -%{ - double T; - double To; - double omega; - double* dslit_center; - double* dhslit_width; - double* t0; - double* t1; -%} - -INITIALIZE -%{ - char* pch; - int i; - double sense; - - phase = remainder (phase, 360.0) * DEG2RAD; - omega = 2.0 * PI * nu; /* rad/s */ - sense = (omega < 0) ? -1 : 1; - - if (isfirst && (nrev - floor (nrev) != 0)) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) - exit (-1); - } - - if (!omega) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - - if (nslits <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) - } - - // Read slits in array - dslit_center = malloc (nslits * sizeof (*dslit_center)); - pch = strtok (slit_center, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dslit_center[i] = atof (pch); - pch = strtok (NULL, ";_, "); - - if ((dslit_center[i] < 0)) { - while (dslit_center[i] < 0) { - dslit_center[i] += 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - if ((dslit_center[i] >= 360.0)) { - while (dslit_center[i] >= 360.0) { - dslit_center[i] -= 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - dslit_center[i] *= DEG2RAD; - } - - // dhslit_width: HALF slit width - dhslit_width = malloc (nslits * sizeof (*dhslit_width)); - pch = strtok (slit_width, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dhslit_width[i] = 0.5 * atof (pch); - pch = strtok (NULL, ";_, "); - if (dhslit_width[i] <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) - exit (-1); - } - dhslit_width[i] *= DEG2RAD; - } - - /* Calculate delay from phase and vice versa */ - if (phase) { - if (delay) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) - } - phase -= delay * omega; - delay = -phase / omega; - } else { - phase = delay * omega; - } - - /* Time for 1 revolution */ - T = 2.0 * PI / fabs (omega); - - // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE - - /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ - - // generate times t1: duration of slit openings (or their cumulative sum if !equal) - // dhslit_width is already in rad - t1 = malloc (nslits * sizeof (*t1)); - t1[0] = 2.0 * dhslit_width[0] / fabs (omega); - To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit - - for (i = 1; i < nslits; i++) { - t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); - To += (2.0 * dhslit_width[i] / fabs (omega)); - } - - // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) - t0 = malloc (nslits * sizeof (*t0)); - t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); - - for (i = 1; i < nslits; i++) { - t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); - } - - MPI_MASTER (if (verbose) { - printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); - printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); - printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); - - if (isfirst && equal) - printf (" --- first chopper distributing events equally on all slits\n"); - - if (isfirst && !equal) - printf (" --- first chopper distributing events proportional to slit size\n"); - - if (isfirst) - printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); - - printf (" --- Slit center [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", dslit_center[i] * RAD2DEG); - printf ("\n"); - printf (" --- Slit width [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); - printf ("\n"); - - // dump internal arrays for debugging - if (verbose == 2) { - printf (" --- Internal arrays:\n"); - printf (" --- i t0 t1 dslit_center dhslit_width\n"); - for (i = 0; i < nslits; i++) { - printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); - } - } - }) - %} - -TRACE -%{ - double phi; - double xprime, yprime; - double toff; - int irev, islit; - - // Propagate into the chopper disk plane - PROP_Z0; - - if (delta_y > 0) { - // 'anormal' case, chopper above guide - // mirror coordinate system - xprime = -x; - yprime = -y + delta_y; - } else { - // 'normal' case, chopper below guide - xprime = x; - yprime = y - delta_y; - } - - // Is neutron transmitted/absorbed outside the disk diameter ? - if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) - if (abs_out) { - ABSORB; - } else { - SCATTER; - } - else { - if (isfirst) { - irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); - - if (equal) { - // Distribute neutrons equally over slits - t = rand01 () * nslits; - islit = (t == nslits) ? nslits - 1 : floor (t); - t = (t - islit) * t1[islit]; - - p *= t1[islit] / T * nslits; - } else { - // Distribute neutrons proportional to slit size - t = rand01 () * To; - islit = 0; - while (t1[islit] < t) - islit++; - - /* weight correction: chopper slits transmission opening time per full revolution time */ - p *= To / T; - } - - // offset time stamp according to slit phase, neutron position and jitter - t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); - - } else { - - // Check whether each t_offset carried by the ray make it through - int train_index; - int one_did_hit = 0; - int this_t_hit; - double this_train_t; - int all_dead = 1; - for (train_index=0; train_index<_particle->N_trains; train_index++) { - - if (_particle->alive_trains[train_index] == 0) continue; - all_dead = 0; - - this_train_t = t + _particle->t_offset[train_index]; - // where does the neutron hit the disk ? - phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); - - // does the neutron hit one of the slits ? - islit = 0; - this_t_hit = 0; - while (islit < nslits && !this_t_hit) { - if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) - this_t_hit = 1; - - islit++; - } - if (this_t_hit == 0) _particle->alive_trains[train_index] = 0; - else one_did_hit = 1; - } - // if not a single t_offset made it through a slit, absorb this ray - if (!one_did_hit || all_dead) ABSORB; - } - } -%} - -FINALLY -%{ - // clean up - if (dslit_center) - free (dslit_center); - - if (dhslit_width) - free (dhslit_width); - - if (t0) - free (t0); - - if (t1) - free (t1); -%} - -MCDISPLAY -%{ - int j; - - // the disk - circle ("xy", 0, delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslits; j++) { - /* Angular start/end of slit */ - double tmin = dslit_center[j] - dhslit_width[j] + phase; - double tmax = tmin + 2.0 * dhslit_width[j]; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); - line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr deleted file mode 100644 index edda6118e2..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/ODIN_TOF_train2.instr +++ /dev/null @@ -1,1018 +0,0 @@ -/******************************************************************************** -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* This file was written by McStasScript, which is a -* python based McStas instrument generator written by -* Mads Bertelsen in 2019 while employed at the -* European Spallation Source Data Management and -* Software Centre -* -* Instrument: ODIN_TOF_train2 -* -* %Identification -* Written by: Python McStas Instrument Generator -* Date: 13:25:52 on February 25, 2026 -* Origin: ESS DMSC -* %INSTRUMENT_SITE: Generated_instruments -* -* !!Please write a short instrument description (1 line) here!! -* -* %Description -* Please write a longer instrument description here! -* -* %Example: -y --tof-trains=1 Detector: tof_I=9.16671e+08 -* %Example: -y --tof-trains=10 Detector: tof_I=9.16671e+08 -* %Example: -y --tof-trains=100 Detector: tof_I=9.16671e+08 -* -* %Parameters -* l_min: [unit] Minimum simulated wavelength [AA] -* l_max: [unit] Maximum simulated wavelength [AA] -* n_pulses: [unit] Number of simulated pulses -* wfm_delta: [unit] Distance between WFM choppers [m] -* bp_frequency: [unit] Frequency of bandpass choppers [Hz] -* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] -* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. -* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] -* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. -* fo1_phase_offset: [unit] Offset of fo1 phase [deg] -* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. -* bp1_phase_offset: [unit] Offset of bp1 phase [deg] -* jitter_bp1: [unit] Jitter of bp1 chopper -* fo2_phase_offset: [unit] Offset of fo2 phase [deg] -* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. -* bp2_phase_offset: [unit] Offset of bp2 phase [deg] -* jitter_bp2: [unit] Jitter of bp2 chopper -* t0_phase_offset: [unit] Offset of t0 phase [deg] -* jit_t0_sec: [unit] Jitter of t0 chopper -* fo3_phase_offset: [unit] Offset of fo3 phase [deg] -* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. -* fo4_phase_offset: [unit] Offset of fo4 phase [deg] -* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. -* fo5_phase_offset: [unit] Offset of fo5 phase [deg] -* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. -* -* %Link -* -* %End -********************************************************************************/ - -DEFINE INSTRUMENT ODIN_TOF_train2 ( -l_min = 1.0, // Minimum simulated wavelength [AA] -l_max = 11.0, // Maximum simulated wavelength [AA] -int n_pulses = 1, // Number of simulated pulses -wfm_delta = 0.3, // Distance between WFM choppers [m] -bp_frequency = 7, // Frequency of bandpass choppers [Hz] -WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] -jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. -WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] -jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. -fo1_phase_offset = 0, // Offset of fo1 phase [deg] -jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. -bp1_phase_offset = 0, // Offset of bp1 phase [deg] -jitter_bp1 = 0, // Jitter of bp1 chopper -fo2_phase_offset = 0, // Offset of fo2 phase [deg] -jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. -bp2_phase_offset = 0, // Offset of bp2 phase [deg] -jitter_bp2 = 0, // Jitter of bp2 chopper -t0_phase_offset = 0, // Offset of t0 phase [deg] -jit_t0_sec = 0, // Jitter of t0 chopper -fo3_phase_offset = 0, // Offset of fo3 phase [deg] -jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. -fo4_phase_offset = 0, // Offset of fo4 phase [deg] -jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. -fo5_phase_offset = 0, // Offset of fo5 phase [deg] -jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. -int choppers=2 // 0: no choppers 1: BP 2: WFM -) - -DECLARE -%{ -double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap -double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap -double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap -double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap -double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap -double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap -double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap -double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap -double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap -double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap -%} - - -INITIALIZE -%{ -// Start of initialize for generated ODIN -WFM1_phase = WFM1_phase_offset; -WFM1_phase += 97.55; -WFM2_phase = WFM2_phase_offset; -WFM2_phase += -5.88015; -fo1_phase = fo1_phase_offset; -fo1_phase += -65.625; -bp1_phase = bp1_phase_offset; -bp1_phase += -11.475; -fo2_phase = fo2_phase_offset; -fo2_phase += -20.5; -bp2_phase = bp2_phase_offset; -bp2_phase += 185.195; -t0_phase = t0_phase_offset; -fo3_phase = fo3_phase_offset; -fo3_phase += 137.47; -fo4_phase = fo4_phase_offset; -fo4_phase += 111.700; -fo5_phase = fo5_phase_offset; -fo5_phase += -81.105; - - -MPI_MASTER( -struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "w"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); -); -%} - -TRACE - -COMPONENT Origin = Progress_bar() -AT (0, 0, 0) ABSOLUTE - -COMPONENT optical_axis = Arm() -AT (0.026, 0, 0) RELATIVE Origin - -COMPONENT Source = ESS_butterfly( - sector = "S", beamline = 2, - yheight = 0.03, cold_frac = 0.5, - target_index = 1, focus_xw = 0.0576862, - focus_yh = 0.0464308, c_performance = 1, - t_performance = 1, Lmin = l_min, - Lmax = l_max, n_pulses = n_pulses, - acc_power = 2.0) -AT (0, 0, 0) RELATIVE Origin - -COMPONENT Start_of_bi = Arm() -AT (0, 0, 2.0306) RELATIVE optical_axis - -COMPONENT bi = bi_spec_ellipse( - xheight = 0.044795, ywidth = 0.033273, - zlength = 0.3, n_mirror = 0, - tilt = 0.7355449343006287, n_pieces = 1, - angular_offset = 0.0274924630093546, m = 4, - Qc_m = 0.0217, alpha_mirror_m = 2.5, - W_m = 0.015, d_focus_1_x = 3.443249331959489, - d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, - d_focus_2_y = 33.78623864676767, ell_l = 0.31, - ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, - ell_m = 4, R0 = 0.99, - Qc = 0.0217, alpha_mirror = 2.5, - W = 0.0015, cut = 3, - substrate = 0) -AT (0, 0, 0) RELATIVE Start_of_bi -ROTATED (0, 0, 180) RELATIVE Start_of_bi - -COMPONENT End_of_bi = Arm() -AT (0, 0, 0.31) RELATIVE bi -ROTATED (0, 0, -180) RELATIVE bi - -COMPONENT NBOA_drawing_1_end = Guide_four_side( - w1l = 0.022187, linwl = 3.7532493319594886, - loutwl = 4.397849331959489, w1r = 0.022187, - linwr = 3.7532493319594886, loutwr = 4.397849331959489, - h1u = 0.017858, linhu = 2.213738646767668, - louthu = 33.23733864676767, h1d = 0.017858, - linhd = 2.213738646767668, louthd = 33.23733864676767, - l = 0.5488999999999999, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 0.31000099999999997) RELATIVE bi - -COMPONENT g1a2 = Guide_four_side( - w1l = 0.022397711974319966, linwl = 4.303349331959489, - loutwl = 3.3968493319594883, w1r = 0.022397711974319966, - linwr = 4.303349331959489, loutwr = 3.3968493319594883, - h1u = 0.019790525295492974, linhu = 2.763788626121542, - louthu = 32.236388626121546, h1d = 0.019790525295492974, - linhd = 2.763788626121542, louthd = 32.236388626121546, - l = 0.9998, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end - -COMPONENT g1a3 = Guide_four_side( - w1l = 0.021853309009560024, linwl = 5.3043493319594885, - loutwl = 1.8968293319594889, w1r = 0.021853309009560024, - linwr = 5.3043493319594885, loutwr = 1.8968293319594889, - h1u = 0.02274764602619812, linhu = 3.7648386261215414, - louthu = 30.73631862612154, h1d = 0.02274764602619812, - linhd = 3.7648386261215414, louthd = 30.73631862612154, - l = 1.49882, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 0.999801) RELATIVE g1a2 - -COMPONENT g1b1 = Guide_four_side( - w1l = 0.017955, linwl = 6.82655, - loutwl = 1.3934509999999998, w1r = 0.017955, - linwr = 6.82655, loutwr = 1.3934509999999998, - h1u = 0.026565, linhu = 5.2842144, - louthu = 30.232929999999996, h1d = 0.026565, - linhd = 5.2842144, louthd = 30.232929999999996, - l = 0.48300000000000054, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2.5, - myd = 2.5) -AT (0, 0, 5.4109) RELATIVE optical_axis - -COMPONENT g1c1 = Guide_four_side( - w1l = 0.015725, linwl = 7.323650000000001, - loutwl = 0.5472510000000002, w1r = 0.015725, - linwr = 7.323650000000001, loutwr = 0.5472510000000002, - h1u = 0.02753, linhu = 5.7813144, - louthu = 29.38673, h1d = 0.02753, - linhd = 5.7813144, louthd = 29.38673, - l = 0.8320999999999996, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2.5, - myd = 2.5) -AT (0, 0, 5.908) RELATIVE optical_axis - -COMPONENT wfm_position = Arm() -AT (0, 0, 7.0) RELATIVE optical_axis - -COMPONENT wfm_1_position = Arm() -AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position - -COMPONENT wfmc_1 = MultiDiskChopper( - slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", - nslits = 6, delta_y = -0.31499999999999995, - nu = -56.0, jitter = jitter_wfmc_1, - phase = WFM1_phase, radius = 0.35) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE wfm_1_position -ROTATED (0, 0, 180) RELATIVE wfm_1_position - - -COMPONENT pinhole_1 = Slit( - xwidth = 0.015, yheight = 0.06) -AT (0, 0, 0) RELATIVE wfm_position - -COMPONENT wfm_2_position = Arm() -AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position - -COMPONENT wfmc_2 = MultiDiskChopper( - slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", - nslits = 6, delta_y = -0.31499999999999995, - nu = -56.0, jitter = jitter_wfmc_2, - phase = WFM2_phase, radius = 0.35) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE wfm_2_position -ROTATED (0, 0, 180) RELATIVE wfm_2_position - -COMPONENT g2a1 = Guide_four_side( - w1l = 0.01121, linwl = 0.25980000000000025, - loutwl = 12.040199999999999, w1r = 0.01121, - linwr = 0.25980000000000025, loutwr = 12.040199999999999, - h1u = 0.029825, linhu = 7.2598, - louthu = 28.0402, h1d = 0.029825, - linhd = 7.2598, louthd = 28.0402, - l = 0.7000000000000002, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 3, - myd = 3) -AT (0, 0, 7.247800000000001) RELATIVE optical_axis - -COMPONENT monitor_1_position = Arm() -AT (0, 0, 7.96) RELATIVE optical_axis - -COMPONENT g2a2 = Guide_four_side( - w1l = 0.0212, linwl = 0.9858000000000002, - loutwl = 11.6045, w1r = 0.0212, - linwr = 0.9858000000000002, loutwr = 11.6045, - h1u = 0.03088, linhu = 7.9858, - louthu = 27.6045, h1d = 0.03088, - linhd = 7.9858, louthd = 27.6045, - l = 0.40969999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 3, - myd = 3) -AT (0, 0, 7.973800000000001) RELATIVE optical_axis - -COMPONENT fo1_position = Arm() -AT (0, 0, 8.392) RELATIVE optical_axis - -COMPONENT fo_chopper_1 = MultiDiskChopper( - slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", - nslits = 6, delta_y = -0.4625, - nu = -42.0, jitter = jitter_fo_chopper_1, - phase = fo1_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo1_position -ROTATED (0, 0, 180) RELATIVE fo1_position - -COMPONENT bp1_position = Arm() -AT (0, 0, 8.442) RELATIVE optical_axis - -COMPONENT bp1_chopper = DiskChopper( - theta_0 = 46.71, radius = 0.5, - yheight = 0.075, nu = bp_frequency, - nslit = 1, jitter = jitter_bp1, - phase = bp1_phase + (42.20500000000003)) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp1_position -ROTATED (0, 0, 180) RELATIVE bp1_position - -COMPONENT g2b1 = Guide_four_side( - w1l = 0.02521, linwl = 1.4502500000000005, - loutwl = 11.14005, w1r = 0.02521, - linwr = 1.4502500000000005, loutwr = 11.14005, - h1u = 0.031505, linhu = 8.45025, - louthu = 27.140050000000002, h1d = 0.031505, - linhd = 8.45025, louthd = 27.140050000000002, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.446250000000001) RELATIVE optical_axis - -COMPONENT g2b2 = Guide_four_side( - w1l = 0.02811, linwl = 1.8707999999999991, - loutwl = 9.67745, w1r = 0.02811, - linwr = 1.8707999999999991, loutwr = 9.67745, - h1u = 0.03203, linhu = 8.8708, - louthu = 25.67745, h1d = 0.03203, - linhd = 8.8708, louthd = 25.67745, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.8668) RELATIVE optical_axis - -COMPONENT g2b3 = Guide_four_side( - w1l = 0.03493, linwl = 3.3230500000000003, - loutwl = 8.2252, w1r = 0.03493, - linwr = 3.3230500000000003, loutwr = 8.2252, - h1u = 0.033615, linhu = 10.32305, - louthu = 24.2252, h1d = 0.033615, - linhd = 10.32305, louthd = 24.2252, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 10.31905) RELATIVE optical_axis - -COMPONENT g2b4 = Guide_four_side( - w1l = 0.03862, linwl = 4.7858, - loutwl = 7.804500000000001, w1r = 0.03862, - linwr = 4.7858, loutwr = 7.804500000000001, - h1u = 0.03488, linhu = 11.7858, - louthu = 23.8045, h1d = 0.03488, - linhd = 11.7858, louthd = 23.8045, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 11.7818) RELATIVE optical_axis - -COMPONENT fo2_position = Arm() -AT (0, 0, 12.2) RELATIVE optical_axis - -COMPONENT fo_chopper_2 = MultiDiskChopper( - slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", - nslits = 6, delta_y = -0.46, - nu = -42.0, jitter = jitter_fo_chopper_2, - phase = fo2_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo2_position -ROTATED (0, 0, 180) RELATIVE fo2_position - -COMPONENT bp2_position = Arm() -AT (0, 0, 12.25) RELATIVE optical_axis - -COMPONENT bp_chopper2 = DiskChopper( - theta_0 = 67.49, radius = 0.5, - yheight = 0.08, nu = bp_frequency, - nslit = 1, jitter = jitter_bp2, - phase = bp2_phase -141.795) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp2_position -ROTATED (0, 0, 180) RELATIVE bp2_position - -COMPONENT g2c1 = Guide_four_side( - w1l = 0.03929, linwl = 5.250249999999999, - loutwl = 6.536899999999999, w1r = 0.03929, - linwr = 5.250249999999999, loutwr = 6.536899999999999, - h1u = 0.03488, linhu = 12.25025, - louthu = 22.5369, h1d = 0.03488, - linhd = 12.25025, louthd = 22.5369, - l = 1.2128500000000013, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 12.254249999999999) RELATIVE optical_axis - -COMPONENT t0_start_position = Arm() -AT (0, 0, 13.503) RELATIVE optical_axis - -COMPONENT t0_chopper_alpha = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_start_position -ROTATED (0, 0, 180) RELATIVE t0_start_position - -COMPONENT t0_end_position = Arm() -AT (0, 0, 13.703) RELATIVE optical_axis - -COMPONENT t0_chopper_beta = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_end_position -ROTATED (0, 0, 180) RELATIVE t0_end_position - -COMPONENT g3a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03611, linhu = 13.7559, - louthu = 20.2631, h1d = 0.03611, - linhd = 13.7559, louthd = 20.2631, - l = 1.981, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 13.7379) RELATIVE optical_axis - -COMPONENT g3a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03687, linhu = 15.7409, - louthu = 19.0055, h1d = 0.03687, - linhd = 15.7409, louthd = 19.0055, - l = 1.2535999999999987, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 15.7229) RELATIVE optical_axis - -COMPONENT fo3_position = Arm() -AT (0, 0, 16.9865) RELATIVE optical_axis - -COMPONENT fo_chopper_3 = MultiDiskChopper( - slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", - nslits = 6, delta_y = -0.5575, - nu = -28.0, jitter = jitter_fo_chopper_3, - phase = fo3_phase, radius = 0.6) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo3_position -ROTATED (0, 0, 180) RELATIVE fo3_position - -COMPONENT g3b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03711, linhu = 17.0055, - louthu = 18.038, h1d = 0.03711, - linhd = 17.0055, louthd = 18.038, - l = 0.9564999999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 16.9965) RELATIVE optical_axis - -COMPONENT g4a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.2600000000000016, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 17.964) RELATIVE optical_axis - -COMPONENT monitor_2_position = Arm() -AT (0, 0, 19.245) RELATIVE optical_axis - -COMPONENT g4a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 19.25) RELATIVE optical_axis - -COMPONENT g4a3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.4252499999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 21.25025) RELATIVE optical_axis - -COMPONENT fo4_position = Arm() -AT (0, 0, 23.6855) RELATIVE optical_axis - -COMPONENT fo_chopper_4 = MultiDiskChopper( - slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_4, - phase = fo4_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo4_position -ROTATED (0, 0, 180) RELATIVE fo4_position - -COMPONENT g4b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.5565999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 23.6955) RELATIVE optical_axis - -COMPONENT g4b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.7800000000000011, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 24.2561) RELATIVE optical_axis - -COMPONENT g4b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.1380000000000017, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 26.0366) RELATIVE optical_axis - -COMPONENT g4b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 28.1786) RELATIVE optical_axis - -COMPONENT g4b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.4049499999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 30.17885) RELATIVE optical_axis - -COMPONENT g4b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.4106999999999985, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 31.5893) RELATIVE optical_axis - -COMPONENT g5a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, linhu = 18.0, - louthu = 17.005499999999998, h1d = 0.037165, - linhd = 18.0, louthd = 17.005499999999998, - l = 0.9945000000000022, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 32.0) RELATIVE optical_axis - -COMPONENT fo5_position = Arm() -AT (0, 0, 33.005) RELATIVE optical_axis - -COMPONENT fo_chopper_5 = MultiDiskChopper( - slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_5, - phase = fo5_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo5_position -ROTATED (0, 0, 180) RELATIVE fo5_position - -COMPONENT g5b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037105, linhu = 19.005499999999998, - louthu = 14.994750000000003, h1d = 0.037105, - linhd = 19.005499999999998, louthd = 14.994750000000003, - l = 1.9997499999999988, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 33.015499999999996) RELATIVE optical_axis - -COMPONENT g5b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.036645, linhu = 21.00575, - louthu = 12.994950000000003, h1d = 0.036645, - linhd = 21.00575, louthd = 12.994950000000003, - l = 1.999299999999998, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 35.01575) RELATIVE optical_axis - -COMPONENT g5b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.035695, linhu = 23.009500000000003, - louthu = 10.990749999999998, h1d = 0.035695, - linhd = 23.009500000000003, louthd = 10.990749999999998, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 37.0195) RELATIVE optical_axis - -COMPONENT g5b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03423, linhu = 25.009749999999997, - louthu = 8.990499999999997, h1d = 0.03423, - linhd = 25.009749999999997, louthd = 8.990499999999997, - l = 1.999750000000006, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 39.019749999999995) RELATIVE optical_axis - -COMPONENT g5b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03217, linhu = 27.0135, - louthu = 6.986750000000001, h1d = 0.03217, - linhd = 27.0135, louthd = 6.986750000000001, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 41.0235) RELATIVE optical_axis - -COMPONENT g5b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.029395, linhu = 29.01375, - louthu = 6.5, h1d = 0.029395, - linhd = 29.01375, louthd = 6.5, - l = 0.4862499999999983, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.02375) RELATIVE optical_axis - -COMPONENT g6a1 = Guide_four_side( - w1l = 0.04004, linwl = 6.5, - loutwl = 4.9864999999999995, w1r = 0.04004, - linwr = 6.5, loutwr = 4.9864999999999995, - h1u = 0.02859, linhu = 29.5, - louthu = 4.9864999999999995, h1d = 0.02859, - linhd = 29.5, louthd = 4.9864999999999995, - l = 1.5135000000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.51) RELATIVE optical_axis - -COMPONENT g6a2 = Guide_four_side( - w1l = 0.038935, linwl = 8.017499999999998, - loutwl = 2.982750000000003, w1r = 0.038935, - linwr = 8.017499999999998, loutwr = 2.982750000000003, - h1u = 0.02567, linhu = 31.0175, - louthu = 2.982750000000003, h1d = 0.02567, - linhd = 31.0175, louthd = 2.982750000000003, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 3, - myd = 3) -AT (0, 0, 45.027499999999996) RELATIVE optical_axis - -COMPONENT g6a3 = Guide_four_side( - w1l = 0.03367, linwl = 10.01775, - loutwl = 1.0, w1r = 0.03367, - linwr = 10.01775, loutwr = 1.0, - h1u = 0.02049, linhu = 33.01775, - louthu = 1.0, h1d = 0.02049, - linhd = 33.01775, louthd = 1.0, - l = 1.9822500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 47.02775) RELATIVE optical_axis - -COMPONENT guide_end = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT monitor_3_position = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT start_backend = Arm() -AT (0, 0, 0) RELATIVE optical_axis - -COMPONENT optical_axis_backend = Arm() -AT (0, 0, 0) RELATIVE start_backend - -COMPONENT pinhole_2 = Slit( - xwidth = 0.03, yheight = 0.03) -AT (0, 0, 50) RELATIVE optical_axis_backend - -COMPONENT graph = Graphite_Diffuser( - xwidth = 0.1, ywidth = 0.1, - thick = 0.2) -AT (0, 0, 50.001) RELATIVE optical_axis_backend - -COMPONENT sample_monitor_arm = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - - COMPONENT sample_PSD = Monitor_nD( - filename="image.dat", xwidth=0.3, yheight=0.3, - options="x bins 300 y bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT profile_x = Monitor_nD( - filename="profile_x.dat", xwidth=0.3, yheight=0.3, - options="x bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT profile_y = Monitor_nD( - filename="profile_y.dat", xwidth=0.3, yheight=0.3, - options="y bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT wavelength = Monitor_nD( - filename="wavelength.dat", xwidth=0.3, yheight=0.3, - options="L bins 300 limits [0.5 10]" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT tof = Monitor_nD( - filename="time.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15]", - tsplit=1 - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT wavelength_tof = Monitor_nD( - filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", - tsplit=1 - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT sample_position = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -SAVE -%{ - - MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "a"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); - ); -%} - -FINALLY -%{ -// Start of finally for generated ODIN -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/bi_spec_ellipse.comp deleted file mode 100644 index c24fb3cdea..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train2/bi_spec_ellipse.comp +++ /dev/null @@ -1,794 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2011, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: Bi-spectral extracion system -* -* %I -* Written by: Manuel Morgano -* Date: April 2015 -* Version: $Revision: 2.3 $ -* Origin: PSI -* Release: McStas 1.12c -* -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* -* %D -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* The supermirror number can be automatically calculated (setting the number to 0) or given -* Each mirror can be split in submirror pieces, each of them offseted by a constant angle -* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. -* The feeder's shape is calculated by the distance between the guide entrance and the first focus, -* the distance between the exit and the second focus, the length of the coated part and the opening -* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. -* User can specify different shapes for the horizontal and the vertical ellipse. -* Setting the m-coating to 0 means absorbing, -1 means transparent. -* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn -* but it's transparent. -* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. -* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. -* -* -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %P -* INPUT PARAMETERS: -* -* xheight: (m) height of mirror stack -* ywidth: (m) width of mirror plate -* zlength: (m) length of the mirror -* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) -* n_pieces (1) number of straight section per mirror -* tilt (degrees) angle between the mirrors and the horizontal direction -* angular_offset (degrees) angle between subsequent sub-mirrors -* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. -* R0_m: (1) Low-angle reflectivity -* Qc_m: (AA-1) Critical scattering vector -* alpha_mirror_m: (AA) Slope of reflectivity -* W_m: (AA-1) Width of supermirror cut-off -* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. -* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. -* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. -* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. -* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. -* ell_l: (m) length of the coated part of the ellipse -* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors -* ell_w: (m) width of the ellipse entrance -* ell_m: (1) m-value of the coating of the ellipse -* R0: (1) Low-angle reflectivity -* Qc: (AA-1) Critical scattering vector -* alpha_mirror: (AA) Slope of reflectivity -* W: (AA-1) Width of supermirror cut-off -* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* cut: (1) cutoff for lowest reflectivity consideration. -* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file -* -* %D -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT bi_spec_ellipse -DEFINITION PARAMETERS () - SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) -OUTPUT PARAMETERS (pTable) -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) - -SHARE -%{ -%include "read_table-lib" -%} - -DECLARE -%{ - t_Table pTable; - -%} - -INITIALIZE -%{ - - if (reflect && strlen(reflect)) { - if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); - } - if (n_mirror==1) - exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); - - -%} - -TRACE -%{ - - double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; - double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; - double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; - double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; - char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; - int i=1,j=1; - PROP_Z0; - if(n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ - mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ - l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ - for(i=floor(n_pieces*0.5);i>0;i--) - sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ - sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ - alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ - l_acc=0; /* keeps track of the neutron z position */ - h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ - - if (substrate==1) { - sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ - sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ - sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ - } - - - - if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ - ell_h=2*sec_pos; - if ((ell_h==0)&&(alpha<0)) - ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); - - /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ - f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - z0_x=f_x-d_focus_1_x; - b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); - a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); - - /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ - f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); - z0_y=f_y-d_focus_1_y; - b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); - a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); - for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ - for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ - int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ - int_t=(int_z-z)/vz; /* time for intersection */ - int_x=x+vx*int_t; /* x of intersection */ - int_y=y+vy*int_t; /* y of intersection */ - is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ - is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); - is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - - /******************************** INTERSECTION WITH X ELLIPSE **********************************/ - if((xdelta>0)&&(ell_m!=-1)) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - - - xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ - xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); - xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); - - if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ - if (xell_int_x>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - - PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - - continue; - } - } - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ - if((ydelta>0)&&(ell_m!=-1)) { - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - - yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ - yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); - yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); - - if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ - if (yell_int_y>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - continue; - } - } - - - /******************************** INTERSECTION WITH MIRROR STACK **********************************/ - - if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ - if(m == 0) - ABSORB; - if (reflect_mirror && strlen(reflect_mirror)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { /* reflectivity for the q of the neutorn */ - arg_stack = ((q-m*Qc_m)/W_m); - if(arg_stack < cut) - weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ - else - - { - i++; - j=0; - if (substrate==1) { - eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); - if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) - (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); - } - p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ - sec_pos=sec_pos-mirror_gap; - intersect=1; - continue; - } - weight *= R0_m; - } - else { /* q <= Qc */ - weight *= R0_m; - } - rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ - - if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ - - PROP_DT(int_t); /* propagation to the intersection */ - - SCATTER; - r=-gamma-2*alpha; /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - } - else if (!transmit) - ABSORB; - else { - p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); - intersect=1; - } - } - sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ - } - l_acc=l_acc+l_section; /* keeps track of the neutron z position */ - sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ - alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ - h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ - if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ - PROP_DT(l_section/vz); - intersect=0; /* restores the check of the intersection to 0 */ - } - } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ - Dt=(zlength-z)/vz; - if (Dt>0) - PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ - do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ - - xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ - yell_intersect=0; - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - } - - - if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - } - - if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - - if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ - - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ - - if(xell_int_z0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - continue; - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - if(ydelta>0) { - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); - if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - } - } - - if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - continue; - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - if(xdelta>0) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); - if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - } - - } - - - } - - - - - } - }/*end of check of deltas*/ - - - } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ - r=(ell_l-z)/vz; /**/ - - /*PROP_DT((ell_l-z)/vz);*/ - PROP_DT(r); - -// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); - ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); - ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); -// printf("length = %f \n",ell_l); -// printf("ell_exit_x= %f\n",ell_exit_x); -// printf("ell_exit_y = %f\n",ell_exit_y); - if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) - ABSORB; - -%} - -MCDISPLAY -%{ - double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; - int i,j,n_seg; - magnify("xy"); - if (n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ - draw_mirror_gap=xheight/(n_mirror-1); - draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ - - for(i=floor(n_pieces*0.5);i>0;i--) - draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ - draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; - draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; - if ((ell_h==0)&&(draw_alpha>=0)) - ell_h=2*draw_sec_pos; - if ((ell_h==0)&&(draw_alpha<0)) - ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); - - - for (i=1; i<=n_pieces; i++) { - for(j=1; j<=n_mirror; j++) { - multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, - (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); - draw_sec_pos=draw_sec_pos-draw_mirror_gap; - - } - draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ - draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); - draw_alpha=draw_alpha-angular_offset*DEG2RAD; - } - - n_seg=1000; - - draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - draw_z0_x=draw_f_x-d_focus_1_x; - draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); - draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); - - for (i=1;i Date: Sun, 1 Mar 2026 19:21:20 +0100 Subject: [PATCH 39/75] Adaptation of MCPL_TOF_train to global/particle tof train --- .../ODIN_MCPL_TOF_train4/DiskChopper.comp | 16 ++++++++-------- .../ODIN_MCPL_TOF_train4/ESS_butterfly.comp | 14 +++++++------- .../ODIN_MCPL_TOF_train4/Monitor_nD.comp | 12 ++++++------ .../ODIN_MCPL_TOF_train4/MultiDiskChopper.comp | 16 ++++++++-------- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp index 12de0104fb..b0f56a144b 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp @@ -170,8 +170,8 @@ TRACE } else { // Check whether each t_offset carried by the ray make it through - double weight_update = p/_particle->p_last_time_manipulation; - _particle->p_last_time_manipulation = 0; + double weight_update = p/p_last_time_manipulation; + p_last_time_manipulation = 0; int train_index; int one_did_hit = 0; @@ -180,26 +180,26 @@ TRACE for (train_index=0; train_indexp_trains[train_index] == 0) continue; + if (p_trains[train_index] == 0) continue; all_dead = 0; - this_train_t = t + _particle->t_offset[train_index]; + this_train_t = t + t_offset[train_index]; toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); /* does neutron hit outside slit? */ if (fmod (toff + To / 2.0, Tg) > To) - _particle->p_trains[train_index] = 0; // T_ABSORB + p_trains[train_index] = 0; // T_ABSORB else { // T_TRANSMIT one_did_hit = 1; - _particle->p_trains[train_index] *= weight_update; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + p_trains[train_index] *= weight_update; + p_last_time_manipulation += p_trains[train_index]; } } if (!one_did_hit || all_dead) ABSORB; - p = _particle->p_last_time_manipulation; + p = p_last_time_manipulation; } SCATTER; diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp index 860cae79b5..df15dff950 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp @@ -552,14 +552,14 @@ TRACE if (total_N_sent == 0) { #pragma acc atomic - adaptive_N = _particle->N_trains; + adaptive_N = N_trains; } else { long tmp = ceil(target_tsplit*total_N_sent/total_arrived); #pragma acc atomic adaptive_N = tmp; - if (adaptive_N > _particle->N_trains) { + if (adaptive_N > N_trains) { #pragma acc atomic - adaptive_N = _particle->N_trains; + adaptive_N = N_trains; } } @@ -602,13 +602,13 @@ TRACE // Generate ray as normal with its associated p and t // Save these to t_offset and p_train - _particle->t_offset[train_index] = t; - _particle->p_trains[train_index] = p/adaptive_N; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + t_offset[train_index] = t; + p_trains[train_index] = p/adaptive_N; + p_last_time_manipulation += p_trains[train_index]; } // Set base particle t and p, now p will be decoupled from the source intensity. t=0; - p=_particle->p_last_time_manipulation; + p=p_last_time_manipulation; SCATTER; %} diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp index 1ddf35bf8c..0dbdf8d585 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp @@ -424,7 +424,7 @@ TRACE #define thread_offdata offdata #endif - double *pp_array=malloc(sizeof(double)*_particle->N_trains); + double *pp_array=malloc(sizeof(double)*N_trains); /* this is done automatically STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); @@ -571,7 +571,7 @@ TRACE int train_index; double p_original = p; - double p_factor = p/_particle->p_last_time_manipulation; + double p_factor = p/p_last_time_manipulation; if (adaptive_target) { #pragma acc atomic @@ -584,9 +584,9 @@ TRACE double t_original = t; for (train_index=0; train_indexp_trains[train_index] > 0) { - p = p_factor*_particle->p_trains[train_index]; - t = t_original + _particle->t_offset[train_index]; + if (p_trains[train_index] > 0) { + p = p_factor*p_trains[train_index]; + t = t_original + t_offset[train_index]; pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); @@ -613,7 +613,7 @@ TRACE // Now just use normal p double total_p = 0; for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + if (alive_trains[train_index]) total_p += p_original*p_trains[train_index]; } p = total_p; diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp index 0ed57d7e3b..5d89e7f6dc 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp @@ -281,8 +281,8 @@ TRACE } else { // Check whether each t_offset carried by the ray make it through - double weight_update = p/_particle->p_last_time_manipulation; - _particle->p_last_time_manipulation = 0; + double weight_update = p/p_last_time_manipulation; + p_last_time_manipulation = 0; int train_index; int one_did_hit = 0; @@ -292,10 +292,10 @@ TRACE double p_total = 0; for (train_index=0; train_indexp_trains[train_index] == 0) continue; + if (p_trains[train_index] == 0) continue; all_dead = 0; - this_train_t = t + _particle->t_offset[train_index]; + this_train_t = t + t_offset[train_index]; // where does the neutron hit the disk ? phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); @@ -308,17 +308,17 @@ TRACE islit++; } - if (this_t_hit == 0) _particle->p_trains[train_index] = 0; + if (this_t_hit == 0) p_trains[train_index] = 0; else { one_did_hit = 1; - _particle->p_trains[train_index] *= weight_update; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + p_trains[train_index] *= weight_update; + p_last_time_manipulation += p_trains[train_index]; } } // if not a single t_offset made it through a slit, absorb this ray if (!one_did_hit || all_dead) ABSORB; - p = _particle->p_last_time_manipulation; + p = p_last_time_manipulation; } } %} From b80b01d75f9e3437d3e9589d7f4f92ab7eba6fba Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 19:28:01 +0100 Subject: [PATCH 40/75] Adaptation for global / particle tof trains --- .../ODIN_MCPL_TOF_train4.instr | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr index ce5c514233..36529ec751 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr @@ -307,14 +307,14 @@ EXTEND %{ double tZERO = t; if (total_N_sent == 0) { #pragma acc atomic - adaptive_N = _particle->N_trains; + adaptive_N = N_trains; } else { long tmp = ceil(INSTRUMENT_GETPAR(target_tsplit)*total_N_sent/total_arrived); #pragma acc atomic adaptive_N = tmp; - if (adaptive_N > _particle->N_trains) { + if (adaptive_N > N_trains) { #pragma acc atomic - adaptive_N = _particle->N_trains; + adaptive_N = N_trains; } } @@ -325,13 +325,13 @@ EXTEND %{ // Generate ray as normal with its associated p and t // Save these to t_offset and p_train - _particle->t_offset[train_index] = t; - _particle->p_trains[train_index] = p/adaptive_N; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + t_offset[train_index] = t; + p_trains[train_index] = p/adaptive_N; + p_last_time_manipulation += p_trains[train_index]; } // Set base particle t and p, now p will be decoupled from the source intensity. t=0; - p=_particle->p_last_time_manipulation; + p=p_last_time_manipulation; %} From 9f38c961559e000d8015503c78854ba18894ba7d Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 21:06:31 +0100 Subject: [PATCH 41/75] Fix define syntax errs --- mccode/src/cogen.c.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 8d100b9c5d..44d465404f 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1627,11 +1627,11 @@ void def_trace_section(struct instr_def *instr) // Defines for _particle-carried TOF-train arrays in case of OPENACC cout("#ifdef TOF_TRAIN"); cout("#ifdef OPENACC"); - cout("#define N_trains=_particle->N_trains"); - cout("#define t_offset=_particle->t_offset"); - cout("#define p_trains=_particle->p_trains"); - cout("#define alive_trains=_particle->alive_trains"); - cout("#define p_last_time_manipulation;"); + cout("#define N_trains _particle->N_trains"); + cout("#define t_offset _particle->t_offset"); + cout("#define p_trains _particle->p_trains"); + cout("#define alive_trains _particle->alive_trains"); + cout("#define p_last_time_manipulation _particle->p_last_time_manipulation;"); cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); From b10f17276425c11ffb465c7ad3949b1fecdc08fe Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 21:20:56 +0100 Subject: [PATCH 42/75] Cogen fixes OPENACC --- mccode/src/cogen.c.in | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 44d465404f..8e0d632794 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1691,7 +1691,6 @@ void undef_trace_section(struct instr_def *instr) // Undefines for _particle-carried TOF-train arrays in case of OPENACC cout("#ifdef OPENACC"); cout("#ifdef TOF_TRAIN"); - cout("#undef"); cout("#undef t_offset"); cout("#undef p_trains"); cout("#undef alive_trains"); @@ -2019,9 +2018,9 @@ int cogen_raytrace(struct instr_def *instr) cout(" // If OPENACC/TOF_TRAIN we need to nuke internal arrays!"); cout(" #ifdef OPENACC"); cout(" #ifdef TOF_TRAIN"); - cout(" if (_particle->t_offset) free(_particle->t_offset);"); - cout(" if (_particle->p_trains) free(_particle->p_trains);"); - cout(" if (_particle->alive_trains) free(_particle->alive_trains);"); + cout(" if (t_offset) free(t_offset);"); + cout(" if (p_trains) free(p_trains);"); + cout(" if (alive_trains) free(alive_trains);"); cout(" #endif"); cout(" #endif"); cout(""); From 4df27fdff5846731cb0bff598713b755770e1771 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 21:22:34 +0100 Subject: [PATCH 43/75] Further cogen fixes (and var name change due to clash with p define) --- mccode/src/cogen.c.in | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 8e0d632794..c36e5156b6 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1631,7 +1631,7 @@ void def_trace_section(struct instr_def *instr) cout("#define t_offset _particle->t_offset"); cout("#define p_trains _particle->p_trains"); cout("#define alive_trains _particle->alive_trains"); - cout("#define p_last_time_manipulation _particle->p_last_time_manipulation;"); + cout("#define P_last_time_manipulation _particle->P_last_time_manipulation;"); cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); @@ -1694,6 +1694,7 @@ void undef_trace_section(struct instr_def *instr) cout("#undef t_offset"); cout("#undef p_trains"); cout("#undef alive_trains"); + cout("#undef P_last_time_manipulation"); cout("#endif /* TOF_TRAIN */"); cout("#endif /* OPENACC */"); @@ -2444,7 +2445,7 @@ cogen_header(struct instr_def *instr, char *output_name) cout("double *t_offset;"); cout("double *p_trains;"); cout("int *alive_trains;"); - cout("double p_last_time_manipulation;"); + cout("double P_last_time_manipulation;"); cout("#endif /* TOF_TRAIN */"); cout("#endif /* NOT OPENACC */"); cout(""); @@ -2508,7 +2509,7 @@ cogen_header(struct instr_def *instr, char *output_name) cout(" double *t_offset;"); cout(" double *p_trains;"); cout(" int *alive_trains;"); - cout(" double p_last_time_manipulation;"); + cout(" double P_last_time_manipulation;"); cout(" #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains)"); cout(" #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains)"); cout(" #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains)"); From 1a0e88729bdbd372778efba1bd04b1136b682c3d Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 21:26:28 +0100 Subject: [PATCH 44/75] Fixes toward OPENACC support --- .../Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp | 8 ++++---- .../Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp | 4 ++-- .../Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp | 2 +- .../Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp | 8 ++++---- .../ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr | 8 ++++---- .../Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr | 2 +- .../examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp | 8 ++++---- .../Prototypes/ODIN_TOF_train4/ESS_butterfly.comp | 4 ++-- .../examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp | 2 +- .../Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp | 8 ++++---- 10 files changed, 27 insertions(+), 27 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp index b0f56a144b..7c9b1ece3c 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp @@ -170,8 +170,8 @@ TRACE } else { // Check whether each t_offset carried by the ray make it through - double weight_update = p/p_last_time_manipulation; - p_last_time_manipulation = 0; + double weight_update = p/P_last_time_manipulation; + P_last_time_manipulation = 0; int train_index; int one_did_hit = 0; @@ -193,13 +193,13 @@ TRACE // T_TRANSMIT one_did_hit = 1; p_trains[train_index] *= weight_update; - p_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation += p_trains[train_index]; } } if (!one_did_hit || all_dead) ABSORB; - p = p_last_time_manipulation; + p = P_last_time_manipulation; } SCATTER; diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp index df15dff950..753b007ee9 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp @@ -604,11 +604,11 @@ TRACE t_offset[train_index] = t; p_trains[train_index] = p/adaptive_N; - p_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation += p_trains[train_index]; } // Set base particle t and p, now p will be decoupled from the source intensity. t=0; - p=p_last_time_manipulation; + p=P_last_time_manipulation; SCATTER; %} diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp index 0dbdf8d585..cc08e3102f 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Monitor_nD.comp @@ -571,7 +571,7 @@ TRACE int train_index; double p_original = p; - double p_factor = p/p_last_time_manipulation; + double p_factor = p/P_last_time_manipulation; if (adaptive_target) { #pragma acc atomic diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp index 5d89e7f6dc..3b16879282 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp @@ -281,8 +281,8 @@ TRACE } else { // Check whether each t_offset carried by the ray make it through - double weight_update = p/p_last_time_manipulation; - p_last_time_manipulation = 0; + double weight_update = p/P_last_time_manipulation; + P_last_time_manipulation = 0; int train_index; int one_did_hit = 0; @@ -312,13 +312,13 @@ TRACE else { one_did_hit = 1; p_trains[train_index] *= weight_update; - p_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation += p_trains[train_index]; } } // if not a single t_offset made it through a slit, absorb this ray if (!one_did_hit || all_dead) ABSORB; - p = p_last_time_manipulation; + p = P_last_time_manipulation; } } %} diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr index 36529ec751..69bcb73b33 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr @@ -228,8 +228,8 @@ COMPONENT vinROT1 = Arm() AT(0,0,0) RELATIVE PREVIOUS ROTATED (-90,0,0) RELATIVE PREVIOUS -COMPONENT vin = MCPL_input_once(filename=MCPLfile,verbose=1,v_smear=v_smear,pos_smear=pos_smear,dir_smear=dir_smear) -//COMPONENT vin = MCPL_input(filename=MCPLfile,verbose=1,repeat_count=repeat,v_smear=v_smear,pos_smear=pos_smear,dir_smear=dir_smear) + //COMPONENT vin = MCPL_input_once(filename=MCPLfile,verbose=1,v_smear=v_smear,pos_smear=pos_smear,dir_smear=dir_smear) +COMPONENT vin = MCPL_input(filename=MCPLfile,verbose=1,repeat_count=repeat,v_smear=v_smear,pos_smear=pos_smear,dir_smear=dir_smear) AT(0,0,0) RELATIVE PREVIOUS EXTEND %{ SCATTER; @@ -327,11 +327,11 @@ EXTEND %{ t_offset[train_index] = t; p_trains[train_index] = p/adaptive_N; - p_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation += p_trains[train_index]; } // Set base particle t and p, now p will be decoupled from the source intensity. t=0; - p=p_last_time_manipulation; + p=P_last_time_manipulation; %} diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr index 57bc7ce3b3..4134b50fe1 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr @@ -111,7 +111,7 @@ USERVARS %{ double *t_offset; double *p_trains; -double p_last_time_manipulation; +double P_last_time_manipulation; //int allocated; int adaptive_N; long total_arrived; diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp index b0f56a144b..7c9b1ece3c 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp @@ -170,8 +170,8 @@ TRACE } else { // Check whether each t_offset carried by the ray make it through - double weight_update = p/p_last_time_manipulation; - p_last_time_manipulation = 0; + double weight_update = p/P_last_time_manipulation; + P_last_time_manipulation = 0; int train_index; int one_did_hit = 0; @@ -193,13 +193,13 @@ TRACE // T_TRANSMIT one_did_hit = 1; p_trains[train_index] *= weight_update; - p_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation += p_trains[train_index]; } } if (!one_did_hit || all_dead) ABSORB; - p = p_last_time_manipulation; + p = P_last_time_manipulation; } SCATTER; diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp index df15dff950..753b007ee9 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp @@ -604,11 +604,11 @@ TRACE t_offset[train_index] = t; p_trains[train_index] = p/adaptive_N; - p_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation += p_trains[train_index]; } // Set base particle t and p, now p will be decoupled from the source intensity. t=0; - p=p_last_time_manipulation; + p=P_last_time_manipulation; SCATTER; %} diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp index 0dbdf8d585..cc08e3102f 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp @@ -571,7 +571,7 @@ TRACE int train_index; double p_original = p; - double p_factor = p/p_last_time_manipulation; + double p_factor = p/P_last_time_manipulation; if (adaptive_target) { #pragma acc atomic diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp index 5d89e7f6dc..3b16879282 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp @@ -281,8 +281,8 @@ TRACE } else { // Check whether each t_offset carried by the ray make it through - double weight_update = p/p_last_time_manipulation; - p_last_time_manipulation = 0; + double weight_update = p/P_last_time_manipulation; + P_last_time_manipulation = 0; int train_index; int one_did_hit = 0; @@ -312,13 +312,13 @@ TRACE else { one_did_hit = 1; p_trains[train_index] *= weight_update; - p_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation += p_trains[train_index]; } } // if not a single t_offset made it through a slit, absorb this ray if (!one_did_hit || all_dead) ABSORB; - p = p_last_time_manipulation; + p = P_last_time_manipulation; } } %} From 4ae3c77db74e6b68fe830974029823425ef49344 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Sun, 1 Mar 2026 21:42:17 +0100 Subject: [PATCH 45/75] Consequence editswq> --- .../examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp | 2 +- .../examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp | 2 +- .../Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp | 2 +- .../examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp | 2 +- .../examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp | 2 +- .../examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp index 7c9b1ece3c..a31f69b9f9 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/DiskChopper.comp @@ -193,7 +193,7 @@ TRACE // T_TRANSMIT one_did_hit = 1; p_trains[train_index] *= weight_update; - P_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; } } diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp index 753b007ee9..ff901c45ab 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp @@ -604,7 +604,7 @@ TRACE t_offset[train_index] = t; p_trains[train_index] = p/adaptive_N; - P_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; } // Set base particle t and p, now p will be decoupled from the source intensity. t=0; diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp index 3b16879282..82b28b3944 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/MultiDiskChopper.comp @@ -312,7 +312,7 @@ TRACE else { one_did_hit = 1; p_trains[train_index] *= weight_update; - P_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; } } // if not a single t_offset made it through a slit, absorb this ray diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp index 7c9b1ece3c..a31f69b9f9 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp @@ -193,7 +193,7 @@ TRACE // T_TRANSMIT one_did_hit = 1; p_trains[train_index] *= weight_update; - P_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; } } diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp index 753b007ee9..ff901c45ab 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp @@ -604,7 +604,7 @@ TRACE t_offset[train_index] = t; p_trains[train_index] = p/adaptive_N; - P_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; } // Set base particle t and p, now p will be decoupled from the source intensity. t=0; diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp index 3b16879282..82b28b3944 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp @@ -312,7 +312,7 @@ TRACE else { one_did_hit = 1; p_trains[train_index] *= weight_update; - P_last_time_manipulation += p_trains[train_index]; + P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; } } // if not a single t_offset made it through a slit, absorb this ray From 0bd90b87dee05f4c46177ab636650a2b7e0ded69 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Tue, 3 Mar 2026 11:09:20 +0100 Subject: [PATCH 46/75] Fix and protect OPENACC / TOF_TRAIN defines by () brackets --- mccode/src/cogen.c.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index c36e5156b6..8a4489e0dd 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1627,11 +1627,11 @@ void def_trace_section(struct instr_def *instr) // Defines for _particle-carried TOF-train arrays in case of OPENACC cout("#ifdef TOF_TRAIN"); cout("#ifdef OPENACC"); - cout("#define N_trains _particle->N_trains"); - cout("#define t_offset _particle->t_offset"); - cout("#define p_trains _particle->p_trains"); - cout("#define alive_trains _particle->alive_trains"); - cout("#define P_last_time_manipulation _particle->P_last_time_manipulation;"); + cout("#define N_trains (_particle->N_trains)"); + cout("#define t_offset (_particle->t_offset)"); + cout("#define p_trains (_particle->p_trains)"); + cout("#define alive_trains (_particle->alive_trains)"); + cout("#define P_last_time_manipulation (_particle->P_last_time_manipulation)"); cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); From 3aaa7dd5ced827ae70feae64027640c75fc3dd5e Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Tue, 3 Mar 2026 11:26:14 +0100 Subject: [PATCH 47/75] Partial GPU support --- .../ODIN_TOF_train4/ESS_butterfly.comp | 17 +++++++++-------- .../ODIN_TOF_train4/ODIN_TOF_train4.instr | 4 +++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp index ff901c45ab..d9cc0210c9 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp @@ -549,19 +549,20 @@ TRACE vx = v*dx/r; int train_index; + + long tmp; if (total_N_sent == 0) { - #pragma acc atomic - adaptive_N = N_trains; + tmp = N_trains; } else { - long tmp = ceil(target_tsplit*total_N_sent/total_arrived); - #pragma acc atomic - adaptive_N = tmp; - if (adaptive_N > N_trains) { - #pragma acc atomic - adaptive_N = N_trains; + tmp = ceil(target_tsplit*total_N_sent/total_arrived); + if (tmp > N_trains) { + tmp = N_trains; } } + + #pragma acc atomic write + adaptive_N = tmp; for (train_index=0; train_index Date: Tue, 3 Mar 2026 16:51:26 +0100 Subject: [PATCH 48/75] Temporarily disable adaptive sampling on GPU --- .../examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp index d9cc0210c9..e3ac8596ab 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp @@ -551,7 +551,9 @@ TRACE int train_index; long tmp; - + + // temporarily disable any attempt at adaptive sampling on GPU + #ifndef OPENACC if (total_N_sent == 0) { tmp = N_trains; } else { @@ -563,6 +565,7 @@ TRACE #pragma acc atomic write adaptive_N = tmp; + #endif for (train_index=0; train_index Date: Tue, 3 Mar 2026 18:54:11 +0100 Subject: [PATCH 49/75] Allow Monitor_nD to run on GPU --- .../ODIN_TOF_train4/Monitor_nD.comp | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp index cc08e3102f..133605d761 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp @@ -424,8 +424,9 @@ TRACE #define thread_offdata offdata #endif - double *pp_array=malloc(sizeof(double)*N_trains); - + //double *pp_array=malloc(sizeof(double)*N_trains); + double pp_this; + double pp_total=0; /* this is done automatically STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); */ @@ -582,25 +583,26 @@ TRACE if (tsplit==1) { double t_original = t; - for (train_index=0; train_index 0) { + for (train_index=0; train_index 0) { p = p_factor*p_trains[train_index]; t = t_original + t_offset[train_index]; - - pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); - - if (adaptive_target) total_arrived++; - - } else pp_array[train_index] = 0; - } + + //pp_array[train_index] + pp_this = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + if (adaptive_target) total_arrived++; + + } else pp_this = 0;//pp_array[train_index] = 0; + pp_total+=pp_this; + } p = p_original; t = t_original; - int pp_total = 0; - for (train_index=0; train_index 0) { @@ -626,7 +628,7 @@ TRACE SCATTER; } } - if(pp_array) free(pp_array); + // if(pp_array) free(pp_array); /*set weight to undetected part if capture and/or he3_pressure*/ if (Vars.He3_pressure > 0) { From 2d39e3ca581ae38860923236733707b96c576881 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Tue, 3 Mar 2026 19:44:22 +0100 Subject: [PATCH 50/75] Prototype 4 functional on GPU --- mccode/nlib/share/mcstas-r.c | 6 +++--- mccode/src/cogen.c.in | 27 ++++++++++++++++----------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/mccode/nlib/share/mcstas-r.c b/mccode/nlib/share/mcstas-r.c index 789a93525b..a0e68666dd 100644 --- a/mccode/nlib/share/mcstas-r.c +++ b/mccode/nlib/share/mcstas-r.c @@ -84,9 +84,9 @@ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, d #ifdef OPENACC #ifdef TOF_TRAIN mcneutron.N_trains=NTOF; - mcneutron.t_offset=malloc(NTOF*sizeof(double)); - mcneutron.p_trains=malloc(NTOF*sizeof(double)); - mcneutron.alive_trains=malloc(NTOF*sizeof(int)); + //mcneutron.t_offset=malloc(NTOF*sizeof(double)); + //mcneutron.p_trains=malloc(NTOF*sizeof(double)); + //mcneutron.alive_trains=malloc(NTOF*sizeof(int)); #endif /* TOF_TRAIN */ #endif /* OPENACC */ diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 8a4489e0dd..26e5f95b13 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2019,9 +2019,9 @@ int cogen_raytrace(struct instr_def *instr) cout(" // If OPENACC/TOF_TRAIN we need to nuke internal arrays!"); cout(" #ifdef OPENACC"); cout(" #ifdef TOF_TRAIN"); - cout(" if (t_offset) free(t_offset);"); - cout(" if (p_trains) free(p_trains);"); - cout(" if (alive_trains) free(alive_trains);"); + cout(" //if (t_offset) free(t_offset);"); + cout(" //if (p_trains) free(p_trains);"); + cout(" //if (alive_trains) free(alive_trains);"); cout(" #endif"); cout(" #endif"); cout(""); @@ -2439,15 +2439,20 @@ cogen_header(struct instr_def *instr, char *output_name) cout("#endif"); cout(""); + cout("#ifdef TOF_TRAIN"); cout("#ifndef OPENACC"); - cout("#ifdef TOF_TRAIN"); cout("int N_trains; /* initialised like e.g. ncount, seed from cmdline */"); cout("double *t_offset;"); cout("double *p_trains;"); cout("int *alive_trains;"); cout("double P_last_time_manipulation;"); + cout("#else /* is OPENACC */"); + cout("#ifndef NTOF_GPU"); + cout("#define NTOF_GPU 100"); + cout("#endif"); + cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); - cout("#endif /* NOT OPENACC */"); + cout(""); /* the max number of user variables*/ @@ -2506,13 +2511,13 @@ cogen_header(struct instr_def *instr, char *output_name) cout(" #ifdef OPENACC"); cout(" #ifdef TOF_TRAIN"); cout(" int N_trains; /* initialised like e.g. ncount, seed from cmdline */"); - cout(" double *t_offset;"); - cout(" double *p_trains;"); - cout(" int *alive_trains;"); + cout(" double t_offset[NTOF_GPU];"); + cout(" double p_trains[NTOF_GPU];"); + cout(" int alive_trains[NTOF_GPU];"); cout(" double P_last_time_manipulation;"); - cout(" #pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains)"); - cout(" #pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains)"); - cout(" #pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains)"); + cout(" //#pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains)"); + cout(" //#pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains)"); + cout(" //#pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains)"); cout(" int Ntof_init; /* 0/1 - set to 1 once \"times are filled in\" */"); cout(" #endif /* TOF_TRAIN */"); cout(" #endif /* OPENACC */"); From 2412fa8d5a54bdc2a7c6b8dde25ea2618e0a35e5 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Wed, 4 Mar 2026 13:53:37 +0100 Subject: [PATCH 51/75] Back to updating adaptively on GPU --- .../examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp | 3 --- 1 file changed, 3 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp index e3ac8596ab..c7b3dba981 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp @@ -552,8 +552,6 @@ TRACE long tmp; - // temporarily disable any attempt at adaptive sampling on GPU - #ifndef OPENACC if (total_N_sent == 0) { tmp = N_trains; } else { @@ -565,7 +563,6 @@ TRACE #pragma acc atomic write adaptive_N = tmp; - #endif for (train_index=0; train_index Date: Wed, 4 Mar 2026 13:54:44 +0100 Subject: [PATCH 52/75] Update for adaptive runs on GPU --- mccode/nlib/share/mcstas-r.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/mccode/nlib/share/mcstas-r.c b/mccode/nlib/share/mcstas-r.c index a0e68666dd..3118c672f3 100644 --- a/mccode/nlib/share/mcstas-r.c +++ b/mccode/nlib/share/mcstas-r.c @@ -83,10 +83,7 @@ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, d // init uservars via cogen'd-function #ifdef OPENACC #ifdef TOF_TRAIN - mcneutron.N_trains=NTOF; - //mcneutron.t_offset=malloc(NTOF*sizeof(double)); - //mcneutron.p_trains=malloc(NTOF*sizeof(double)); - //mcneutron.alive_trains=malloc(NTOF*sizeof(int)); + mcneutron.N_trains=NTOF_GPU; #endif /* TOF_TRAIN */ #endif /* OPENACC */ From 3e86530fe55c0481d908534b3cbef3ca3a74e9f8 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Wed, 4 Mar 2026 13:56:54 +0100 Subject: [PATCH 53/75] Update comps for MCPL testcase --- .../ODIN_MCPL_TOF_train4/ESS_butterfly.comp | 19 +++++----- .../ODIN_MCPL_TOF_train4/Monitor_nD.comp | 36 ++++++++++--------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp index ff901c45ab..c7b3dba981 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ESS_butterfly.comp @@ -549,19 +549,20 @@ TRACE vx = v*dx/r; int train_index; - + + long tmp; + if (total_N_sent == 0) { - #pragma acc atomic - adaptive_N = N_trains; + tmp = N_trains; } else { - long tmp = ceil(target_tsplit*total_N_sent/total_arrived); - #pragma acc atomic - adaptive_N = tmp; - if (adaptive_N > N_trains) { - #pragma acc atomic - adaptive_N = N_trains; + tmp = ceil(target_tsplit*total_N_sent/total_arrived); + if (tmp > N_trains) { + tmp = N_trains; } } + + #pragma acc atomic write + adaptive_N = tmp; for (train_index=0; train_index 0) { + for (train_index=0; train_index 0) { p = p_factor*p_trains[train_index]; t = t_original + t_offset[train_index]; - - pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); - - if (adaptive_target) total_arrived++; - - } else pp_array[train_index] = 0; - } + + //pp_array[train_index] + pp_this = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + if (adaptive_target) total_arrived++; + + } else pp_this = 0;//pp_array[train_index] = 0; + pp_total+=pp_this; + } p = p_original; t = t_original; - int pp_total = 0; - for (train_index=0; train_index 0) { @@ -626,7 +628,7 @@ TRACE SCATTER; } } - if(pp_array) free(pp_array); + // if(pp_array) free(pp_array); /*set weight to undetected part if capture and/or he3_pressure*/ if (Vars.He3_pressure > 0) { From e48502693572db3c6abda53d2ec00a32aa34f098 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Wed, 4 Mar 2026 14:43:37 +0100 Subject: [PATCH 54/75] Add 'adaptive_N' component for use with MCPL input (provides same adaptation-logic as ESS_butterfly) --- .../ODIN_MCPL_TOF_train4/Adaptme.comp | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Adaptme.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Adaptme.comp b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Adaptme.comp new file mode 100644 index 0000000000..8229a8e8d5 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/Adaptme.comp @@ -0,0 +1,104 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Adaptme +* +* %Identification +* +* Written by: Kim Lefmann and Kristian Nielsen +* Date: September 1997 +* Version: $Revision$ +* Release: McStas 1.6 +* Origin: Risoe +* +* Adaptme/optical bench +* +* %Description +* An arm does not actually do anything, it is just there to set +* up a new coordinate system. +* +* Example: Adaptme() +* +* %Parameters +* Input parameters: +* +* (none) +* +* %End +*******************************************************************************/ + +DEFINE COMPONENT Adaptme + +SETTING PARAMETERS () + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ +SHARE +%{ +int adaptive_N; +long total_arrived; +long total_N_sent; +long total_rays_sent; +#pragma acc declare create(total_arrived,total_N_sent,total_rays_sent) +%} + +USERVARS +%{ +%} + +DECLARE +%{ +%} + +INITIALIZE +%{ +adaptive_N=NTOF; +total_arrived=0; +total_N_sent=0; +total_rays_sent=0; +#pragma acc update device(adaptive_N,total_arrived,total_N_sent,total_rays_sent) +%} + +TRACE +%{ + int train_index; + double tZERO = t; + + long tmp; + if (total_N_sent == 0) { + tmp = N_trains; + } else { + tmp = ceil(INSTRUMENT_GETPAR(target_tsplit)*total_N_sent/total_arrived); + if (tmp > N_trains) { + tmp = N_trains; + } + } + #pragma acc atomic write + adaptive_N=tmp; +%} + +SAVE +%{ +%} + +FINALLY +%{ +%} + +MCDISPLAY +%{ + /* A bit ugly; hard-coded dimensions. */ + + line (0, 0, 0, 0.2, 0, 0); + line (0, 0, 0, 0, 0.2, 0); + line (0, 0, 0, 0, 0, 0.2); + + cone (0.2, 0, 0, 0.01, 0.02, 1, 0, 0); + cone (0, 0.2, 0, 0.01, 0.02, 0, 1, 0); + cone (0, 0, 0.2, 0.01, 0.02, 0, 0, 1); +%} + +END From 1f9008e061b4bc2359df654b61fc36cdb3e9d573 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Wed, 4 Mar 2026 14:44:37 +0100 Subject: [PATCH 55/75] Functional MCPL / TOF_train model also on GPU --- .../ODIN_MCPL_TOF_train4.instr | 51 +++++++------------ 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr index 69bcb73b33..5af8c9d722 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_MCPL_TOF_train4/ODIN_MCPL_TOF_train4.instr @@ -140,10 +140,7 @@ int beamline=2; double ANGLE; double DeltaX,DeltaZ; char MCPLfile[128]; - int adaptive_N; -long total_arrived; -long total_N_sent; -long total_rays_sent; + %} USERVARS @@ -240,10 +237,14 @@ EXTEND %{ } %} +COMPONENT Adapter = Adaptme() +AT (0,0,0) RELATIVE vin + + COMPONENT Sphere1 = PSD_monitor_4PI(filename="nonrotated", radius=2.4,restore_neutron=1) AT (0,0,0) RELATIVE PREVIOUS -COMPONENT Source = ESS_butterfly( + COMPONENT Source = ESS_butterfly( sector = "S", beamline = 2, yheight = 0.03, cold_frac = 0.5, target_index = 1, focus_xw = 0.0576862, @@ -302,38 +303,24 @@ EXTEND %{ ABSORB; } } - int train_index; double tZERO = t; - if (total_N_sent == 0) { - #pragma acc atomic - adaptive_N = N_trains; - } else { - long tmp = ceil(INSTRUMENT_GETPAR(target_tsplit)*total_N_sent/total_arrived); - #pragma acc atomic - adaptive_N = tmp; - if (adaptive_N > N_trains) { - #pragma acc atomic - adaptive_N = N_trains; - } - } - for (train_index=0; train_index Date: Wed, 4 Mar 2026 14:45:38 +0100 Subject: [PATCH 56/75] Make adaptive_N and friends part of global init --- mccode/src/cogen.c.in | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 26e5f95b13..e3ac309379 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1491,6 +1491,20 @@ int cogen_section(struct instr_def *instr, char *section, char *section_lower, cout(" /* code_main/parseoptions/readparams " "sets instrument parameters value */"); coutf(" stracpy(instrument->_name, \"%s\", 256);", instr->name); + cout(""); + cout("/* Global counters for TOF_TRAIN mode */"); + cout("#ifdef TOF_TRAIN"); + cout("#ifndef OPENACC"); + cout("adaptive_N=NTOF;"); + cout("#else"); + cout("adaptive_N=NTOF_GPU;"); + cout("total_arrived=0;"); + cout("total_N_sent=0;"); + cout("total_rays_sent=0;"); + cout("#pragma acc update device(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); + cout("#endif"); + cout("#endif"); + cout(""); } else if (!strcmp(section, "SAVE")) coutf(" if (!handle) siminfo_init(NULL);"); @@ -2450,6 +2464,11 @@ cogen_header(struct instr_def *instr, char *output_name) cout("#ifndef NTOF_GPU"); cout("#define NTOF_GPU 100"); cout("#endif"); + cout("int adaptive_N;"); + cout("long total_arrived;"); + cout("long total_N_sent;"); + cout("long total_rays_sent;"); + cout("#pragma acc declare create(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); From 93ed269a99f56d7bf50d8c193f45928a3baed21e Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Wed, 4 Mar 2026 14:46:32 +0100 Subject: [PATCH 57/75] Adapt TOF_train4 model to new, global adaptive_N counters --- .../Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr index d6ad5727f3..5592e5e835 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr @@ -103,11 +103,13 @@ double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap -int adaptive_N; +/*int adaptive_N; long total_arrived; long total_N_sent; long total_rays_sent; #pragma acc declare create(adaptive_N,total_arrived,total_N_sent,total_rays_sent) +NOW IN COGEN +*/ %} USERVARS @@ -137,13 +139,14 @@ fo4_phase = fo4_phase_offset; fo4_phase += 111.700; fo5_phase = fo5_phase_offset; fo5_phase += -81.105; - +/* adaptive_N=NTOF; total_arrived=0; total_N_sent=0; total_rays_sent=0; #pragma acc update device(adaptive_N,total_arrived,total_N_sent,total_rays_sent) - +NOW IN COGEN +*/ // Don't measure time on windows, CLOCK_REALTIME // macro is unknown... // It is indicated in this oagehttps://learn.microsoft.com/en-us/answers/questions/2147256/clock-realtime-is-undefined-in-visual-studio-but-c that it might work to add a high enough _POSIX_C_SOURCE define, i.e. From 1cbdc3285e2855caa76a7b2f0c34ede00d271d36 Mon Sep 17 00:00:00 2001 From: mads-bertelsen Date: Thu, 5 Mar 2026 08:36:32 +0100 Subject: [PATCH 58/75] New version of TOF optimization. Now sorts the arrays of times and weights so the first chunk have weights > 0, thus shortening subsequent loops. This gives an additional performance boost. Makros exists for components that want to be gates depending on time (choppers) and want to read times (monitors). Within these makros TRAIN_GATE and TRAIN_READ, the makro T_ABSORB() has to be used instead of ABSORB, otherwise almost everything is normal, the particle t can be read as normal, though not updated. --- .../ODIN_TOF_train5/DiskChopper.comp | 205 ++++ .../ODIN_TOF_train5/ESS_butterfly-lib.c | 402 +++++++ .../ODIN_TOF_train5/ESS_butterfly-lib.h | 97 ++ .../ODIN_TOF_train5/ESS_butterfly.comp | 692 +++++++++++ .../ODIN_TOF_train5/Monitor_nD.comp | 665 +++++++++++ .../ODIN_TOF_train5/MultiDiskChopper.comp | 338 ++++++ .../Prototypes/ODIN_TOF_train5/ODIN.instr | 1056 +++++++++++++++++ .../ODIN_TOF_train5/TOF_monitor.comp | 158 +++ 8 files changed, 3613 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train5/DiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ESS_butterfly-lib.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ESS_butterfly-lib.h create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ESS_butterfly.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train5/Monitor_nD.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train5/MultiDiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ODIN.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train5/TOF_monitor.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/DiskChopper.comp new file mode 100644 index 0000000000..c2adffc4fe --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/DiskChopper.comp @@ -0,0 +1,205 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: DiskChopper +* +* %I +* Written by: Peter Willendrup +* Date: March 9 2006 +* Origin: Risoe +* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disc chopper with nslit identical slits, which are symmetrically distributed +* on the disc. At time t=0, the centre of the first slit opening will be situated at the +* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. +* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z +* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see +* related bug on GitHub) +* +* For more complicated gemometries, see component manual example of DiskChopper GROUPing. +* +* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. +* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the +* chopper timing and phasing (thus conserving your simulated statistics). +* +* The isfirst parameter is ONLY relevant for use in continuous source settings. +* +* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper +* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) +* +* NOTA BENE wrt. GROUPing and isfirst: +* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need +* to set up +* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening +* that spans the full angular extent of the openings of the subsequent GROUP +* 2) Add your DiskChopper GROUP setting isfirst=0 +* +* %P +* INPUT PARAMETERS: +* +* theta_0: [deg] Angular width of the slits. +* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. +* radius: [m] Radius of the disc +* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) +* nslit: [1] Number of slits, regularly arranged around the disk +* +* Optional parameters: +* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) +* n_pulse: [1] Number of pulses (Only if isfirst) +* jitter: [s] Jitter in the time phase +* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? +* delay: [s] Time 'delay' +* phase: [deg] Angular 'delay' (overrides delay) +* xwidth: [m] Horizontal slit width opening at beam center +* verbose: [1] Set to 1 to display Disk chopper configuration +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT DiskChopper + + + +SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +DECLARE +%{ + double Tg; + double To; + double delta_y; + double height; + double omega; +%} + +INITIALIZE +%{ + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } +%} + +TRACE +%{ + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + TRAIN_GATE( + toff = fabs (t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); + if (fmod (toff + To / 2.0, Tg) > To) { + T_ABSORB(); + } + ); + + } + SCATTER; +%} + +MCDISPLAY +%{ + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ESS_butterfly-lib.c new file mode 100644 index 0000000000..e100c9f9a4 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ESS_butterfly-lib.c @@ -0,0 +1,402 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.c +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#error McStas : please import this library with %include "ESS_butterfly-lib" +#endif + +#ifdef OPENACC +#define exit(...) noprintf() +#endif + +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ + if(lambda<=0)return 0; + double par0=8.44e13/25.; + double par1=2.5; + double par2=2.2; + + double par3=-13.-.5*(theta-5); + double par4=2.53; + double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); + + double par6; + if(theta==5)par6=5.73745e+015/25.; + else if(theta==15)par6=5.88284e+015/25.; + else if(theta==25)par6=6.09573e+015/25.; + else if(theta==35)par6=6.29116e+015/25.; + else if(theta==45)par6=6.03436e+015/25.; + else if(theta==55)par6=6.02045e+015/25.; + double par7=0.788956+0.00854184*(theta-5.)/10.; + double par8=0.0461868-0.0016464*(theta-5.)/10.; + double par9=0.325; + + double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); + double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); + return para_part+SD_part; + +} +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ + if(lambda<=0)return 0; + double i=(theta-5.)/10.; + double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; + double par2=6.24806e+012-8.84602e+010*i; + double par3=-0.31107+0.0221138*i; + double aOlsqr=949./(325*lambda*lambda); + return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); + +} + + +/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ + + double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); + if(y0 < -height/2. || y0 > height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} /* end of ESS_2015_Schoenfeldt_cold */ + + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(timeGeometry +* The geometry corresponds correctly to the latest release of the butterfly moderator, +* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. +* A set of official release documents are available with this component, see the benchmarking +* website mentioned below. +* +* Brilliances, geometry adapted from earlier BF2 design +* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, +* are released as an updated component library for McStas 2.3, as well as a stand alone archive for +* use with earlier versions of McStas. +* +* The following features are worth highlighting: +*
    +*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. +* As a result, the spatial variation of the brightness across the moderator face should be considered to +* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to +* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness +* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. +*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. +* To accommodate the influence of the changed geometry, this scaling factor has been applied independently +* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the +* spectrally-integrated 6cm width data shown in [1],Figure 3. +*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance +* have been implemented. For now, we recommend to keep these at their default value of 1.0. +*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This +* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, +* which has been derived from current MCNP butterfly 1 model. +*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, +* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. +* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree +* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees +* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- +* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. +*
+* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be +* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. +* +*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance +* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation +* across sectors and potentially also performance losses due to engineering reality. +* +* Engineering reality +* An ad-hoc method for future implementation of "engineering reality" is included, use the +* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. +* +* References: +*

    +*
  1. Release document "Update to ESS Moderators, latest version" +*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" +*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures +*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. +*
  5. Source code for ESS_butterfly.comp at GitHub. +*
+* %P +* Input parameters: +* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" +* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector +* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m +* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator +* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 +* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 +* Lmin: [AA] Minimum wavelength simulated +* Lmax: [AA] Maximum wavelength simulated +* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. +* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index +* focus_xw: [m] Width of focusing rectangle +* focus_yh: [m] Height of focusing rectangle +* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. +* acc_power: [MW] Accelerator power in MW +* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. +* tfocus_dist: [m] Position of time focusing window along z axis +* tfocus_time: [s] Time position of time focusing window +* tfocus_width: [s] Time width of time focusing window +* +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT ESS_butterfly + +SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, + int target_index=0, dist=0, focus_xw=0, focus_yh=0, + c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, + acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) + + +SHARE %{ + %include "ESS_butterfly-lib" + %include "ESS_butterfly-geometry.c" + + int nearest_angle(double angle) { + int AngleList[] = {5, 15, 25, 35, 45, 55}; + double diff = 180; + int jmin=0; + int j; + for (j=0; j<6; j++) { + if (fabs(AngleList[j]-angle) < diff) { + diff = fabs(AngleList[j]-angle); + jmin = j; + } + } + return AngleList[jmin]; + } + double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; + double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; + double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; + double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; + double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; + double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; + double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; + double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; + double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; + double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; + double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; + double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; + double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; + +// Defines to make it easier to write code using multiple time sampling +#define T_ABSORB() do { WT_absorb_ = 1; } while (0) +#define T_TRANSMIT() do { WT_absorb_ = 0; } while (0) + +#define TRAIN_GATE(BODY_CODE) \ +do { \ + double weight_update = p/_particle->p_last_time_manipulation; \ + _particle->p_last_time_manipulation = 0; \ + double t_original = t; \ + int train_index; \ + for (train_index=0; train_index<_particle->N_active; ) { \ + /* Expose readable names to BODY_CODE */ \ + t = t_original + _particle->t_offset[train_index]; \ + \ + int WT_absorb_ = 0; \ + \ + BODY_CODE \ + \ + if (WT_absorb_) { \ + /* swap-with-last-active */ \ + _particle->p_trains[train_index] = _particle->p_trains[_particle->N_active - 1]; \ + _particle->t_offset[train_index] = _particle->t_offset[_particle->N_active - 1]; \ + _particle->N_active--; \ + } else { \ + _particle->p_trains[train_index] *= weight_update; \ + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; \ + train_index++; \ + } \ + } \ + if (!_particle->N_active) ABSORB; \ + p = _particle->p_last_time_manipulation; \ + t = t_original; \ +} while (0) + +#define TRAIN_READ(BODY_CODE) \ +do { \ + int train_index; \ + double p_original = p; \ + double t_original = t; \ + double p_factor = p/_particle->p_last_time_manipulation; \ + for (train_index=0; train_index<_particle->N_active; train_index++) { \ + /* Expose readable names to BODY_CODE */ \ + p = p_factor*_particle->p_trains[train_index]; \ + t = t_original + _particle->t_offset[train_index]; \ + \ + BODY_CODE \ + \ + } \ + p = p_original; \ + t = t_original; \ +} while (0) + +%} + +DECLARE +%{ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double *Beamlines; + double wfrac_cold; + double wfrac_thermal; + /* 'Corner' parametrization, i.e. where are the limits of the moderators */ + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + /* - plus rotated versions of the same... */ + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + + double cos_thermal; + double cos_cold; + + double orientation_angle; + /* Centering-parameters, which sector are we in? */ + double cx; + double cz; + int jmax; + double dxC; + double dxT; +%} + +INITIALIZE +%{ + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; +%} + +TRACE +%{ + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + + if (_particle->total_N_sent == 0) _particle->adaptive_N = N_trains; + else { + + _particle->adaptive_N = ceil(target_tsplit*_particle->total_N_sent/_particle->total_arrived); + + if (_particle->adaptive_N > N_trains) _particle->adaptive_N = N_trains; + } + + // Part of weight calculation that is not t dependant + if (iscold) { + ESS_2015_Schoenfeldt_cold_no_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { + ESS_2015_Schoenfeldt_thermal_no_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + p*=cos_factor; + p*=w_stat*w_focus*w_geom*w_mult; + + // Base weight to reuse for each new sampling of p,t + double base_p = p; + + for (train_index=0; train_index<_particle->adaptive_N; train_index++) { + + p = base_p; + + /* Are we using time focusing? */ + if (tfocus_width>0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold_only_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal_only_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + } + p*=w_tfocus; // time focus correction + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/_particle->adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p + // Time offsets needed for realistic t + t=0; + // p contains the full weight of the ray + p =_particle->p_last_time_manipulation; + // N_active are times with p > 0, starts with all of them, gradually decrease + _particle->N_active = _particle->adaptive_N; + + SCATTER; +%} + +MCDISPLAY +%{ + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/Monitor_nD.comp new file mode 100644 index 0000000000..a4a4be5f9f --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/Monitor_nD.comp @@ -0,0 +1,665 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Monitor_nD +* +* %Identification +* Written by: Emmanuel Farhi +* Date: 14th Feb 2000. +* Origin: ILL +* Release: McStas 1.6 +* Version: $Revision$ +* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi +* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) +* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster +* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) +* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) +* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) +* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) +* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) +* +* This component is a general Monitor that can output 0/1/2D signals +* (Intensity or signal vs. [something] and vs. [something] ...) +* +* %Description +* This component is a general Monitor that can output 0/1/2D signals +* It can produce many 1D signals (one for any variable specified in +* option list), or a single 2D output (two variables correlation). +* Also, an additional 'list' of neutron events can be produced. +* By default, monitor is square (in x/y plane). A disk shape is also possible +* The 'cylinder' and 'banana' option will change that for a banana shape +* The 'sphere' option simulates spherical detector. The 'box' is a box. +* The cylinder, sphere and banana should be centered on the scattering point. +* The monitored flux may be per monitor unit area, and weighted by +* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. +* In normal configuration, the Monitor_nD measures the current parameters +* of the neutron that is beeing detected. But a PreMonitor_nD component can +* be used in order to study correlations between a neutron being detected in +* a Monitor_nD place, and given parameters that are monitored elsewhere +* (at PreMonitor_nD). +* The monitor can also act as a 3He gas detector, taking into account the +* detection efficiency. +* +* The 'bins' and 'limits' modifiers are to be used after each variable, +* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 +* limits=[-5 5]) When placed after all variables, these two latter modifiers +* apply to the signal (e.g. intensity). Unknown keywords are ignored. +* If no limits are specified for a given observable, reasonable defaults will be +* applied. Note that these implicit limits are even applied in list mode. +* +* Implicit limits for typical variables: +* (consult monitor_nd-lib.c if you don't find your variable here) +* x, y, z: Derived from detection-object geometry +* k: [0 10] Angs-1 +* v: [0 1e6] m/s +* t: [0 1] s +* p: [0 FLT_MAX] in intensity-units +* vx, vy: [-1000 1000] m/s +* vz: [0 10000] m/s +* kx, ky: [-1 1] Angs-1 +* kz: [-10 10] Angs-1 +* energy, omega: [0 100] meV +* lambda,wavelength: [0 100] Angs +* sx, sy, sz: [-1 1] in polarisation-units +* angle: [-50 50] deg +* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg +* longitude, lattitude: [-180 180] deg +* neutron: [0 simulaton_ncount] +* id, pixel id: [0 FLT_MAX] +* uservars u1,u2,u3: [-1e10 1e10] +* +* In the case of multiple components at the same position, the 'parallel' +* keyword must be used in each instance instead of defining a GROUP. +* +* Possible options are +* Variables to record: +* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm +* vx vy vz v [m/s] Velocity on x,y,z and norm +* x y z radius [m] Distance, Position and norm +* xy, yz, xz [m] Radial position in xy, yz and xz plane +* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane +* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane +* t time [s] Time of Flight +* energy omega [meV] energy of neutron +* lambda wavelength [Angs] wavelength of neutron +* sx sy sz [1] Spin +* vdiv ydiv dy [deg] vertical divergence (y) +* hdiv divergence xdiv [deg] horizontal divergence (x) +* angle [deg] divergence from direction +* theta longitude [deg] longitude (x/z) for sphere and cylinder +* phi lattitude [deg] lattitude (y/z) for sphere and cylinder +* +* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} +* user2 user3 to be assigned in an other component (see below) +* +* p intensity flux [n/s or n/cm^2/s] +* ncounts n neutron [1] neutron ID, i.e current event index +* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. +* +* Other options keywords are: +* abs Will monitor the abs of the following variable or of the signal (if used after all variables) +* auto Automatically set detector limits for one/all +* all {limits|bins|auto} To set all limits or bins values or auto mode +* binary {float|double} with 'source' option, saves in compact files +* bins=[bins=20] Number of bins in the detector along dimension +* borders To also count off-limits neutrons (X < min or X > max) +* capture weight by lambda/lambda(2200m/s) capture flux +* file=string Detector image file name. default is component name, plus date and variable extension. +* incoming Monitor incoming beam in non flat det +* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) +* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events +* log Will monitor the log of the following variable or of the signal (if used after all variables) +* min=[min_value] Same as limits, but only sets the min or max +* max=[max_value] +* multiple Create multiple independant 1D monitors files +* no or not Revert next option +* outgoing Monitor outgoing beam (default) +* parallel Use this option when the next component is at the same position (parallel components) +* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. +* per steradian Displays beam solid angle in steradian +* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. +* signal=[var] Will monitor [var] instead of usual intensity +* slit or absorb Absorb neutrons that are out detector +* source The monitor will save neutron states +* inactivate To inactivate detector (0D detector) +* verbose To display additional informations +* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) +* +* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) +* box Box of size xwidth, yheight, zdepth. +* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). +* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). +* disk Disk flat xy monitor. diameter is xwidth. +* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). +* square Square flat xy monitor (xwidth, yheight). +* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. +* +* EXAMPLES: +*
    +*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, +*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with +*   borders, file = mon1"); +* will monitor neutron angle from [z] axis, between -5 +* and 5 degrees, in 10 bins, into "mon1.A" output 1D file +* +*
  • options = "sphere theta phi outgoing" +* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" +* +*
  • options = "banana, theta limits=[10,130], bins=120, y" +* a theta/height banana detector +* +*
  • options = "angle radius all auto" +* is a 2D monitor with automatic limits +* +*
  • options = "list=1000 kx ky kz energy" +* records 1000 neutron event in a file +* +*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" +* makes 4 output 1D files and produces a complete list for all neutrons +* and monitor log(abs(tof)) within automatic limits (for t) +* +*
  • options = "theta y, sphere, pixel min=100" +* a 4pi detector which outputs an event list with pixelID from the actual +* detector surface, starting from index 100. +* +*
+* To dynamically define a number of bins, or limits: +* Use in DECLARE: char op[256]; +* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); +* Use in TRACE: Monitor_nD(... options=op ...) +* +* How to monitor any instrument/component variable into a Monitor_nD +* Suppose you want to monitor a variable 'age' which you assign somwhere in +* the instrument: +* COMPONENT MyMonitor = Monitor_nD( +* xwidth = 0.1, yheight = 0.1, +* user1="age", username1="Age of the Captain [years]", +* options="user1, auto") +* AT ... +* +* See also the example in PreMonitor_nD to +* monitor neutron parameters cross-correlations. +* +* %BUGS +* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI +* as each process may use different limits. +* +* %Parameters +* INPUT PARAMETERS: +* +* xwidth: [m] Width of detector. +* yheight: [m] Height of detector. +* zdepth: [m] Thickness of detector (z). +* radius: [m] Radius of sphere/banana shape monitor +* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). +* +* Optional input parameters (override xwidth yheight zdepth): +* xmin: [m] Lower x bound of opening +* xmax: [m] Upper x bound of opening +* ymin: [m] Lower y bound of opening +* ymax: [m] Upper y bound of opening +* zmin: [m] Lower z bound of opening +* zmax: [m] Upper z bound of opening +* filename: [str] Output file name (overrides file=XX option). +* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins +* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits +* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits +* user1: [str] Variable name of USERVAR to be monitored by user1. +* user2: [str] Variable name of USERVAR to be monitored by user2. +* user3: [str] Variable name of USERVAR to be monitored by user3. +* username1: [str] Name assigned to User1 +* username2: [str] Name assigned to User2 +* username3: [str] Name assigned to User3 +* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. +* geometry: [str] Name of an OFF file to specify a complex geometry detector +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* DEFS: [struct] structure containing Monitor_nD Defines +* Vars: [struct] structure containing Monitor_nD variables +* +* %Link +* PreMonitor_nD +* +* %End +******************************************************************************/ +DEFINE COMPONENT Monitor_nD + +SETTING PARAMETERS ( + string user1="", string user2="", string user3="", + xwidth=0, yheight=0, zdepth=0, + xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, + int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, + string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, + string username1="NULL", string username2="NULL", string username3="NULL", + int tsplit=0, int adaptive_target=0 +) +/* these are protected C variables */ + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + %include "monitor_nd-lib" + %include "read_table-lib" + %include "interoff-lib" +%} + +DECLARE +%{ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +%} + +INITIALIZE +%{ + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif +%} + +TRACE +%{ + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + if (adaptive_target) { + _particle->total_N_sent += _particle->adaptive_N; + _particle->total_rays_sent++; + } + + /* + int train_index; + double p_original = p; + double p_factor = p/_particle->p_last_time_manipulation; + double t_original = t; + */ + + int pp_all_zero = 1; + + if (tsplit==1) { + + TRAIN_READ( + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp) pp_all_zero = 0; + if (adaptive_target) _particle->total_arrived++; + ); + + if (pp_all_zero) ABSORB; else SCATTER; + + } else { + + /* + // Now just use normal p + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + */ + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + } + + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } +%} + +FINALLY +%{ + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); +%} + +MCDISPLAY +%{ + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/MultiDiskChopper.comp new file mode 100644 index 0000000000..c111063527 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/MultiDiskChopper.comp @@ -0,0 +1,338 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2015, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: MultiDiskChopper +* +* %I +* Written by: Markus Appel +* Date: 2015-10-19 +* Origin: ILL / FAU Erlangen-Nuernberg +* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), +* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disk chopper with a freely configurable slit pattern. For simple applications, +* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. +* If the chopper slit pattern should be dynamically configurable or a complicated pattern +* is to be used as first chopper on a continuous source, use this component. +* +* Width and position of the slits is defined as a list in string parameters so +* they can easily be taken from instrument parameters. +* The chopper axis is located on the y axis as defined by the parameter delta_y. +* When the chopper is the first chopper after a continuous (i.e. time-independent) +* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. +* +* +* Examples (see parameter definitions for details): +* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, delay=0.02) +* +* First chopper on a continuous source, creating pulse trains for one additional revolution +* before and after the revolution at t=0: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) +* +* %P +* INPUT PARAMETERS: +* +* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" +* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) +* nslits: [] Number of slits to read from slit_width and slit_center +* radius: [m] Outer radius of the disk +* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. +* nu: [Hz] Rotation speed of the disk, the sign determines the direction. +* +* Optional parameters: +* verbose: [0/1] Set to 1 to display more information during the simulation. +* phase: [deg] Phase angle located on top of the disk at t=delay (see below). +* delay: [s] Time delay of the chopper clock. +* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. +* jitter: [s] Jitter in the time phase. +* abs_out: If 1, absorb all neutrons outside the disk diameter. +* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events +* will be shifted in time to pass the component (with adapted weight). +* +* Additional parameters when isfirst=1 (that have no effect for isfirst=0): +* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. +* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). +* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT MultiDiskChopper + +SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) + + +DECLARE +%{ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +%} + +INITIALIZE +%{ + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + %} + +TRACE +%{ + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + int this_t_hit; + TRAIN_GATE( + phi = atan2 (xprime, yprime) + omega * (t - delay - (jitter ? jitter * randnorm () : 0)); + + this_t_hit = 0; + islit = 0; + // does the neutron hit one of the slits ? + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) { + this_t_hit = 1; + } + islit++; + } + if (this_t_hit == 0) T_ABSORB(); + ); + + } + } +%} + +FINALLY +%{ + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); +%} + +MCDISPLAY +%{ + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ODIN.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ODIN.instr new file mode 100644 index 0000000000..af12f01dc5 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/ODIN.instr @@ -0,0 +1,1056 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2, // 0: no choppers 1: BP 2: WFM +int N_trains_par = 200, +target_tsplit = 5, +int mono_chopper=0, +mono_duty=0.03 +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap + +int allocated; +%} + +USERVARS +%{ +double *t_offset; +double *p_trains; +double p_last_time_manipulation; +int adaptive_N; +int N_active; +long total_arrived; +long total_N_sent; +long total_rays_sent; +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + +allocated = 0; + +#define N_trains INSTRUMENT_GETPAR(N_trains_par) + +MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE + +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE +EXTEND %{ + + if (allocated == 0) { + t_offset = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + p_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + adaptive_N=INSTRUMENT_GETPAR(N_trains_par); + total_arrived=0; + total_N_sent=0; + total_rays_sent=0; + allocated = 1; + } +%} + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Origin + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0, + target_tsplit=target_tsplit) +AT (0, 0, 0) RELATIVE Origin + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT monochromating_chopper = DiskChopper( + theta_0 = mono_duty*120, // 6 = 5 % opening time * 120 deg + radius = 0.5, + yheight = 0.03, nu = 14*8.0, + nslit = 3, jitter = 0, + phase = 0) +WHEN(mono_chopper>=1) +AT (0, 0, 1E-6) RELATIVE pinhole_2 +ROTATED (0, 0, 0) RELATIVE pinhole_2 + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 500 limits [0, 0.15]", + tsplit=1, adaptive_target=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", + tsplit=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +if (allocated == 1) { + free(_particle->t_offset); + free(_particle->p_trains); +} +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/TOF_monitor.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/TOF_monitor.comp new file mode 100644 index 0000000000..22309966ad --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train5/TOF_monitor.comp @@ -0,0 +1,158 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: TOF_monitor +* +* %I +* Written by: KN, M. Hagen +* Date: August 1998 +* Origin: Risoe +* +* Rectangular Time-of-flight monitor. +* +* %D +* +* %P +* INPUT PARAMETERS: +* +* xmin: [m] Lower x bound of detector opening +* xmax: [m] Upper x bound of detector opening +* ymin: [m] Lower y bound of detector opening +* ymax: [m] Upper y bound of detector opening +* xwidth: [m] Width of detector. Overrides xmin, xmax +* yheight: [m] Height of detector. Overrides ymin, ymax +* nt: [1] Number of time bins +* dt: [mu-s] Length of each time bin +* tmin: [mu-s] Lower time limit +* tmax: [mu-s] Upper time limit +* filename: [string] Name of file in which to store the detector image +* restore_neutron: [1] If set, the monitor does not influence the neutron state +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* TOF_N: [] Array of neutron counts +* TOF_p: [] Array of neutron weight counts +* TOF_p2: [] Array of second moments +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT TOF_monitor +SETTING PARAMETERS (int nt=20, string filename=0, xmin=-0.05, xmax=0.05, ymin=-0.05, ymax=0.05, + xwidth=0, yheight=0, tmin=0, tmax=0, dt=1.0, int restore_neutron=0, int nowritefile=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + + void save_ray(double p, int i, long *TOF_N, double *TOF_p, double *TOF_p2) { + double p2 = p * p; + #pragma acc atomic + TOF_N[i] = TOF_N[i] + 1; + #pragma acc atomic + TOF_p[i] = TOF_p[i] + p; + #pragma acc atomic + TOF_p2[i] = TOF_p2[i] + p2; + }; + +%} + +DECLARE +%{ + DArray1d TOF_N; + DArray1d TOF_p; + DArray1d TOF_p2; + double t_min; + double t_max; + double delta_t; +%} + + + + + +INITIALIZE +%{ + if (xwidth > 0) { + xmax = xwidth / 2; + xmin = -xmax; + } + if (yheight > 0) { + ymax = yheight / 2; + ymin = -ymax; + } + + if ((xmin >= xmax) || (ymin >= ymax)) { + printf ("TOF_monitor: %s: Null detection area !\n" + "ERROR (xwidth,yheight,xmin,xmax,ymin,ymax). Exiting", + NAME_CURRENT_COMP); + exit (0); + } + + TOF_N = create_darr1d (nt); + TOF_p = create_darr1d (nt); + TOF_p2 = create_darr1d (nt); + + if (tmax != 0) { + t_max = tmax; + t_min = tmin; + delta_t = (t_max - t_min) / nt; + } else { + delta_t = dt; + t_min = 0; + t_max = nt * dt + tmin; + } + + // Use instance name for monitor output if no input was given + if (!strcmp (filename, "\0")) + sprintf (filename, "%s", NAME_CURRENT_COMP); +%} + +TRACE +%{ + int i; + + PROP_Z0; + if (x > xmin && x < xmax && y > ymin && y < ymax) { + TRAIN_READ( + i = floor ((1E6 * t - t_min) / delta_t); /* Bin number */ + if (i >= 0 && i < nt) { + save_ray(p, i, TOF_N, TOF_p, TOF_p2); + SCATTER; + } + ); + } + if (restore_neutron) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + DETECTOR_OUT_1D ("Time-of-flight monitor", "Time-of-flight [\\gms]", "Intensity", "t", t_min, t_max, nt, &TOF_N[0], &TOF_p[0], &TOF_p2[0], filename); + } +%} + +FINALLY +%{ + destroy_darr1d (TOF_N); + destroy_darr1d (TOF_p); + destroy_darr1d (TOF_p2); +%} + +MCDISPLAY +%{ + + multiline (5, (double)xmin, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, + (double)ymin, 0.0); +%} + +END From cb0de678e4de3c590f81b7273617fee65220cdfb Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 10:12:21 +0100 Subject: [PATCH 59/75] Add runtime-warning and reset to ensure NTOF <= NTOF_GPU --- common/lib/share/mccode-r.c | 7 +++++++ mccode/nlib/share/mcstas-r.c | 4 +--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 4182cc0261..5d98dbad3f 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -4817,6 +4817,13 @@ mcparseoptions(int argc, char *argv[]) #ifdef TOF_TRAIN else if(!strncmp("--tof-trains=", argv[i], 13)) { NTOF=atoi(&argv[i][13]); + #ifdef OPENACC + if (NTOF>NTOF_GPU) { + fprintf(stderr,"WARNING: Requested --tof=train=%d value is larger than compiled-in (NTOF_GPU=%d) value.\n",NTOF,NTOF_GPU); + fprintf(stderr,"... hence resetting to --tof=train=%d. Recompile with -DNTOF_GPU set to higher value to increase.\n",NTOF_GPU); + NTOF=NTOF_GPU; + } + #endif } #endif #ifdef USE_NEXUS diff --git a/mccode/nlib/share/mcstas-r.c b/mccode/nlib/share/mcstas-r.c index 3118c672f3..2aaceb186b 100644 --- a/mccode/nlib/share/mcstas-r.c +++ b/mccode/nlib/share/mcstas-r.c @@ -81,11 +81,9 @@ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, d // what about mcneutron._logic ? mcneutron._logic.dummy=1; // init uservars via cogen'd-function - #ifdef OPENACC #ifdef TOF_TRAIN - mcneutron.N_trains=NTOF_GPU; + mcneutron.N_trains=NTOF; #endif /* TOF_TRAIN */ - #endif /* OPENACC */ particle_uservar_init(&mcneutron); From 7e8f3e1e9f106c9b04ba1820ad7df624db8f8708 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 10:22:54 +0100 Subject: [PATCH 60/75] Clean unused size-pragma's --- mccode/src/cogen.c.in | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index e3ac309379..a8d5d09323 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2534,10 +2534,6 @@ cogen_header(struct instr_def *instr, char *output_name) cout(" double p_trains[NTOF_GPU];"); cout(" int alive_trains[NTOF_GPU];"); cout(" double P_last_time_manipulation;"); - cout(" //#pragma acc shape(t_offset[0:N_trains]) init_needed(N_trains)"); - cout(" //#pragma acc shape(p_trains[0:N_trains]) init_needed(N_trains)"); - cout(" //#pragma acc shape(alive_trains[0:N_trains]) init_needed(N_trains)"); - cout(" int Ntof_init; /* 0/1 - set to 1 once \"times are filled in\" */"); cout(" #endif /* TOF_TRAIN */"); cout(" #endif /* OPENACC */"); cout(" long long _uid; /* Unique event ID */"); From 84c02d97f84a18a132cbe1121a9e71bb95587ba1 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 10:41:40 +0100 Subject: [PATCH 61/75] Ensure NTOF is global also on GPU (remains untouched) --- mccode/src/cogen.c.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index a8d5d09323..8c9b9d3493 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1497,11 +1497,11 @@ int cogen_section(struct instr_def *instr, char *section, char *section_lower, cout("#ifndef OPENACC"); cout("adaptive_N=NTOF;"); cout("#else"); - cout("adaptive_N=NTOF_GPU;"); + cout("adaptive_N=NTOF;"); cout("total_arrived=0;"); cout("total_N_sent=0;"); cout("total_rays_sent=0;"); - cout("#pragma acc update device(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); + cout("#pragma acc update device(NTOF,adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); cout("#endif"); cout("#endif"); cout(""); @@ -2468,7 +2468,7 @@ cogen_header(struct instr_def *instr, char *output_name) cout("long total_arrived;"); cout("long total_N_sent;"); cout("long total_rays_sent;"); - cout("#pragma acc declare create(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); + cout("#pragma acc declare create(NTOF,adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); From c8fcac2e44ca95c811e1084458fb49398f75aace Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 12:41:08 +0100 Subject: [PATCH 62/75] Update init of NTOF --- common/lib/share/mccode-r.c | 1 + mccode/src/cogen.c.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 5d98dbad3f..ca46c19525 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -61,6 +61,7 @@ static long mcstartdate = 0; /* start simulation time */ static int mcdisable_output_files = 0; /* --no-output-files */ mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ +#pragma acc declare create ( NTOF ) /* When -DTOF_TRAIN is defined, the default NTOF becomes 10, defined below in the mcparseoptions function body.*/ diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 8c9b9d3493..59a5494630 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -1501,7 +1501,7 @@ int cogen_section(struct instr_def *instr, char *section, char *section_lower, cout("total_arrived=0;"); cout("total_N_sent=0;"); cout("total_rays_sent=0;"); - cout("#pragma acc update device(NTOF,adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); + cout("#pragma acc update device(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); cout("#endif"); cout("#endif"); cout(""); From 7198d448ed3e9c71de87eded4326d7ef0514992c Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 12:48:45 +0100 Subject: [PATCH 63/75] NTOF is declared earlier / elsewhere for GPU use --- mccode/src/cogen.c.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 59a5494630..e6ce94ef3d 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2468,7 +2468,7 @@ cogen_header(struct instr_def *instr, char *output_name) cout("long total_arrived;"); cout("long total_N_sent;"); cout("long total_rays_sent;"); - cout("#pragma acc declare create(NTOF,adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); + cout("#pragma acc declare create(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); From 96ce1101beb7353938ee9f9401c7f7bc6a32e4a0 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 13:08:50 +0100 Subject: [PATCH 64/75] Update NTOF via mccode-r.c` --- common/lib/share/mccode-r.c | 1 + 1 file changed, 1 insertion(+) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index ca46c19525..551d560173 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -4824,6 +4824,7 @@ mcparseoptions(int argc, char *argv[]) fprintf(stderr,"... hence resetting to --tof=train=%d. Recompile with -DNTOF_GPU set to higher value to increase.\n",NTOF_GPU); NTOF=NTOF_GPU; } + #pragma acc update device(NTOF) #endif } #endif From f8834cf1f4ebf810deccb1fce45ab86562f2dccb Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 13:34:10 +0100 Subject: [PATCH 65/75] N_trains is global on CPU, not part of particle --- mccode/nlib/share/mcstas-r.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mccode/nlib/share/mcstas-r.c b/mccode/nlib/share/mcstas-r.c index 2aaceb186b..6dc7ababb2 100644 --- a/mccode/nlib/share/mcstas-r.c +++ b/mccode/nlib/share/mcstas-r.c @@ -82,7 +82,9 @@ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, d mcneutron._logic.dummy=1; // init uservars via cogen'd-function #ifdef TOF_TRAIN + #ifdef OPENACC mcneutron.N_trains=NTOF; + #endif /* OPENACC */ #endif /* TOF_TRAIN */ particle_uservar_init(&mcneutron); From 0ee69a120dad471693180034291654144214cb19 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 13:43:52 +0100 Subject: [PATCH 66/75] Repair global var section for TOF_TRAIN --- mccode/src/cogen.c.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index e6ce94ef3d..79b6afb02c 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2463,13 +2463,12 @@ cogen_header(struct instr_def *instr, char *output_name) cout("#else /* is OPENACC */"); cout("#ifndef NTOF_GPU"); cout("#define NTOF_GPU 100"); - cout("#endif"); + cout("#endif /* OPENACC, now common: */"); cout("int adaptive_N;"); cout("long total_arrived;"); cout("long total_N_sent;"); cout("long total_rays_sent;"); cout("#pragma acc declare create(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); - cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); cout(""); From 40d76f60ccb420b2f1b2f579255c1e747609dd9e Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 13:49:25 +0100 Subject: [PATCH 67/75] More logical structure like this --- mccode/src/cogen.c.in | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 79b6afb02c..c4fd18db06 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2453,22 +2453,25 @@ cogen_header(struct instr_def *instr, char *output_name) cout("#endif"); cout(""); - cout("#ifdef TOF_TRAIN"); + cout("#ifdef TOF_TRAIN"); + cout("/* Global counters, CPU/GPU alike: */"); + cout("int adaptive_N;"); + cout("long total_arrived;"); + cout("long total_N_sent;"); + cout("long total_rays_sent;"); + cout("/* ON CPU, these are also global: */"); cout("#ifndef OPENACC"); cout("int N_trains; /* initialised like e.g. ncount, seed from cmdline */"); cout("double *t_offset;"); cout("double *p_trains;"); cout("int *alive_trains;"); cout("double P_last_time_manipulation;"); + cout("/* ON GPU, control NTOF size via a define: */"); cout("#else /* is OPENACC */"); cout("#ifndef NTOF_GPU"); cout("#define NTOF_GPU 100"); - cout("#endif /* OPENACC, now common: */"); - cout("int adaptive_N;"); - cout("long total_arrived;"); - cout("long total_N_sent;"); - cout("long total_rays_sent;"); cout("#pragma acc declare create(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); + cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); cout(""); From d84f9780209759928bcc7ce8b7459c9eb7ff35fc Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 13:51:19 +0100 Subject: [PATCH 68/75] Repair --- mccode/src/cogen.c.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index c4fd18db06..066dad8b50 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2469,7 +2469,8 @@ cogen_header(struct instr_def *instr, char *output_name) cout("/* ON GPU, control NTOF size via a define: */"); cout("#else /* is OPENACC */"); cout("#ifndef NTOF_GPU"); - cout("#define NTOF_GPU 100"); + cout("#define NTOF_GPU 100 /* Default NTOF on GPU is 100*/"); + cout("#endif"); cout("#pragma acc declare create(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); cout("#endif /* OPENACC */"); cout("#endif /* TOF_TRAIN */"); From 5d87dc1e5dbfb8eacb4ad149eb37e6f486265d19 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Mon, 9 Mar 2026 14:18:19 +0100 Subject: [PATCH 69/75] Functional on CPU and GPU with current cogen state --- .../ODIN_TOF_train6/DiskChopper.comp | 230 ++++ .../ODIN_TOF_train6/ESS_butterfly-lib.c | 402 +++++++ .../ODIN_TOF_train6/ESS_butterfly-lib.h | 97 ++ .../ODIN_TOF_train6/ESS_butterfly.comp | 629 ++++++++++ .../ODIN_TOF_train6/Graphite_Diffuser.comp | 115 ++ .../ODIN_TOF_train6/Monitor_nD.comp | 683 +++++++++++ .../ODIN_TOF_train6/MultiDiskChopper.comp | 361 ++++++ .../ODIN_TOF_train6/ODIN_TOF_train6.instr | 1024 +++++++++++++++++ .../ODIN_TOF_train6/bi_spec_ellipse.comp | 794 +++++++++++++ 9 files changed, 4335 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/DiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.h create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Graphite_Diffuser.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Monitor_nD.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/MultiDiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ODIN_TOF_train6.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/DiskChopper.comp new file mode 100644 index 0000000000..a31f69b9f9 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/DiskChopper.comp @@ -0,0 +1,230 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: DiskChopper +* +* %I +* Written by: Peter Willendrup +* Date: March 9 2006 +* Origin: Risoe +* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disc chopper with nslit identical slits, which are symmetrically distributed +* on the disc. At time t=0, the centre of the first slit opening will be situated at the +* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. +* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z +* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see +* related bug on GitHub) +* +* For more complicated gemometries, see component manual example of DiskChopper GROUPing. +* +* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. +* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the +* chopper timing and phasing (thus conserving your simulated statistics). +* +* The isfirst parameter is ONLY relevant for use in continuous source settings. +* +* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper +* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) +* +* NOTA BENE wrt. GROUPing and isfirst: +* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need +* to set up +* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening +* that spans the full angular extent of the openings of the subsequent GROUP +* 2) Add your DiskChopper GROUP setting isfirst=0 +* +* %P +* INPUT PARAMETERS: +* +* theta_0: [deg] Angular width of the slits. +* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. +* radius: [m] Radius of the disc +* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) +* nslit: [1] Number of slits, regularly arranged around the disk +* +* Optional parameters: +* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) +* n_pulse: [1] Number of pulses (Only if isfirst) +* jitter: [s] Jitter in the time phase +* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? +* delay: [s] Time 'delay' +* phase: [deg] Angular 'delay' (overrides delay) +* xwidth: [m] Horizontal slit width opening at beam center +* verbose: [1] Set to 1 to display Disk chopper configuration +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT DiskChopper + + + +SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +DECLARE +%{ + double Tg; + double To; + double delta_y; + double height; + double omega; +%} + +INITIALIZE +%{ + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } +%} + +TRACE +%{ + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/P_last_time_manipulation; + P_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + double this_train_t; + int all_dead = 1; + + for (train_index=0; train_index To) + p_trains[train_index] = 0; // T_ABSORB + else { + // T_TRANSMIT + one_did_hit = 1; + p_trains[train_index] *= weight_update; + P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; + } + + } + if (!one_did_hit || all_dead) ABSORB; + + p = P_last_time_manipulation; + + } + SCATTER; +%} + +MCDISPLAY +%{ + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.c new file mode 100644 index 0000000000..e100c9f9a4 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.c @@ -0,0 +1,402 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.c +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#error McStas : please import this library with %include "ESS_butterfly-lib" +#endif + +#ifdef OPENACC +#define exit(...) noprintf() +#endif + +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ + if(lambda<=0)return 0; + double par0=8.44e13/25.; + double par1=2.5; + double par2=2.2; + + double par3=-13.-.5*(theta-5); + double par4=2.53; + double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); + + double par6; + if(theta==5)par6=5.73745e+015/25.; + else if(theta==15)par6=5.88284e+015/25.; + else if(theta==25)par6=6.09573e+015/25.; + else if(theta==35)par6=6.29116e+015/25.; + else if(theta==45)par6=6.03436e+015/25.; + else if(theta==55)par6=6.02045e+015/25.; + double par7=0.788956+0.00854184*(theta-5.)/10.; + double par8=0.0461868-0.0016464*(theta-5.)/10.; + double par9=0.325; + + double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); + double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); + return para_part+SD_part; + +} +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ + if(lambda<=0)return 0; + double i=(theta-5.)/10.; + double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; + double par2=6.24806e+012-8.84602e+010*i; + double par3=-0.31107+0.0221138*i; + double aOlsqr=949./(325*lambda*lambda); + return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); + +} + + +/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ + + double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); + if(y0 < -height/2. || y0 > height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} /* end of ESS_2015_Schoenfeldt_cold */ + + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(timeGeometry +* The geometry corresponds correctly to the latest release of the butterfly moderator, +* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. +* A set of official release documents are available with this component, see the benchmarking +* website mentioned below. +* +* Brilliances, geometry adapted from earlier BF2 design +* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, +* are released as an updated component library for McStas 2.3, as well as a stand alone archive for +* use with earlier versions of McStas. +* +* The following features are worth highlighting: +*
    +*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. +* As a result, the spatial variation of the brightness across the moderator face should be considered to +* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to +* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness +* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. +*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. +* To accommodate the influence of the changed geometry, this scaling factor has been applied independently +* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the +* spectrally-integrated 6cm width data shown in [1],Figure 3. +*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance +* have been implemented. For now, we recommend to keep these at their default value of 1.0. +*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This +* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, +* which has been derived from current MCNP butterfly 1 model. +*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, +* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. +* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree +* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees +* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- +* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. +*
+* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be +* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. +* +*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance +* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation +* across sectors and potentially also performance losses due to engineering reality. +* +* Engineering reality +* An ad-hoc method for future implementation of "engineering reality" is included, use the +* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. +* +* References: +*

    +*
  1. Release document "Update to ESS Moderators, latest version" +*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" +*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures +*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. +*
  5. Source code for ESS_butterfly.comp at GitHub. +*
+* %P +* Input parameters: +* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" +* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector +* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m +* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator +* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 +* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 +* Lmin: [AA] Minimum wavelength simulated +* Lmax: [AA] Maximum wavelength simulated +* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. +* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index +* focus_xw: [m] Width of focusing rectangle +* focus_yh: [m] Height of focusing rectangle +* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. +* acc_power: [MW] Accelerator power in MW +* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. +* tfocus_dist: [m] Position of time focusing window along z axis +* tfocus_time: [s] Time position of time focusing window +* tfocus_width: [s] Time width of time focusing window +* +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT ESS_butterfly + +SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, + int target_index=0, dist=0, focus_xw=0, focus_yh=0, + c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, + acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) + +DEPENDENCY " -DTOF_TRAIN " + +SHARE %{ + %include "ESS_butterfly-lib" + %include "ESS_butterfly-geometry.c" + + int nearest_angle(double angle) { + int AngleList[] = {5, 15, 25, 35, 45, 55}; + double diff = 180; + int jmin=0; + int j; + for (j=0; j<6; j++) { + if (fabs(AngleList[j]-angle) < diff) { + diff = fabs(AngleList[j]-angle); + jmin = j; + } + } + return AngleList[jmin]; + } + double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; + double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; + double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; + double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; + double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; + double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; + double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; + double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; + double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; + double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; + double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; + double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; + double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; +%} + +DECLARE +%{ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double *Beamlines; + double wfrac_cold; + double wfrac_thermal; + /* 'Corner' parametrization, i.e. where are the limits of the moderators */ + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + /* - plus rotated versions of the same... */ + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + + double cos_thermal; + double cos_cold; + + double orientation_angle; + /* Centering-parameters, which sector are we in? */ + double cx; + double cz; + int jmax; + double dxC; + double dxT; +%} + +INITIALIZE +%{ + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; +%} + +TRACE +%{ + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + + long tmp; + + if (total_N_sent == 0) { + tmp = N_trains; + } else { + tmp = ceil(target_tsplit*total_N_sent/total_arrived); + if (tmp > N_trains) { + tmp = N_trains; + } + } + + #pragma acc atomic write + adaptive_N = tmp; + + for (train_index=0; train_index0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + w_tfocus=1; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { //case: thermal moderator + ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + p*=cos_factor; + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + t_offset[train_index] = t; + p_trains[train_index] = p/adaptive_N; + P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; + } + // Set base particle t and p, now p will be decoupled from the source intensity. + t=0; + p=P_last_time_manipulation; + + SCATTER; +%} + +MCDISPLAY +%{ + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Graphite_Diffuser.comp new file mode 100644 index 0000000000..ea21aa714e --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Graphite_Diffuser.comp @@ -0,0 +1,115 @@ +/******************************************************************************* +* +* McStas, version 1.2 released February 2000 +* Maintained by Kristian Nielsen and Kim Lefmann, +* Risoe National Laboratory, Roskilde, Denmark +* +* %IDENTIFICATION +* +* Written by: Manuel Morgano +* Date: 18 Febrauary 2015 +* Version: $Revision: 1.1.1.1 $ +* Origin: PSI +* +* Graphite diffuser +* +* %DESCRIPTION +* +* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics +* +* The formula has only been verified for a diffuser thickness of 1 and 2 cm. +* No absorption is take into account. +* +* %PARAMETERS +* +* INPUT PARAMETERS: +* +* xwidth: (m) Size of diffuser +* ywidth: (m) Size of diffuser +* thick: (m) Thickness of diffuser +* abs (1) 0 = no absorption, 1 = absorption +* %LINKS +* %END +* +*******************************************************************************/ + +DEFINE COMPONENT Graphite_Diffuser +DEFINITION PARAMETERS () +SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) +OUTPUT PARAMETERS () +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) +SHARE +%{ + double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ +{ + double rand1, rand2; + rand1 = rand01();// / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand01()) * 6.2831853071795864769252866; + + return (sigma * sqrt(rand1) * cos(rand2)) + mu; +} +%} +INITIALIZE +%{ +%} +TRACE +%{ + + double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; + double dt; + PROP_Z0; + if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi +* Date: 14th Feb 2000. +* Origin: ILL +* Release: McStas 1.6 +* Version: $Revision$ +* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi +* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) +* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster +* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) +* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) +* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) +* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) +* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) +* +* This component is a general Monitor that can output 0/1/2D signals +* (Intensity or signal vs. [something] and vs. [something] ...) +* +* %Description +* This component is a general Monitor that can output 0/1/2D signals +* It can produce many 1D signals (one for any variable specified in +* option list), or a single 2D output (two variables correlation). +* Also, an additional 'list' of neutron events can be produced. +* By default, monitor is square (in x/y plane). A disk shape is also possible +* The 'cylinder' and 'banana' option will change that for a banana shape +* The 'sphere' option simulates spherical detector. The 'box' is a box. +* The cylinder, sphere and banana should be centered on the scattering point. +* The monitored flux may be per monitor unit area, and weighted by +* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. +* In normal configuration, the Monitor_nD measures the current parameters +* of the neutron that is beeing detected. But a PreMonitor_nD component can +* be used in order to study correlations between a neutron being detected in +* a Monitor_nD place, and given parameters that are monitored elsewhere +* (at PreMonitor_nD). +* The monitor can also act as a 3He gas detector, taking into account the +* detection efficiency. +* +* The 'bins' and 'limits' modifiers are to be used after each variable, +* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 +* limits=[-5 5]) When placed after all variables, these two latter modifiers +* apply to the signal (e.g. intensity). Unknown keywords are ignored. +* If no limits are specified for a given observable, reasonable defaults will be +* applied. Note that these implicit limits are even applied in list mode. +* +* Implicit limits for typical variables: +* (consult monitor_nd-lib.c if you don't find your variable here) +* x, y, z: Derived from detection-object geometry +* k: [0 10] Angs-1 +* v: [0 1e6] m/s +* t: [0 1] s +* p: [0 FLT_MAX] in intensity-units +* vx, vy: [-1000 1000] m/s +* vz: [0 10000] m/s +* kx, ky: [-1 1] Angs-1 +* kz: [-10 10] Angs-1 +* energy, omega: [0 100] meV +* lambda,wavelength: [0 100] Angs +* sx, sy, sz: [-1 1] in polarisation-units +* angle: [-50 50] deg +* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg +* longitude, lattitude: [-180 180] deg +* neutron: [0 simulaton_ncount] +* id, pixel id: [0 FLT_MAX] +* uservars u1,u2,u3: [-1e10 1e10] +* +* In the case of multiple components at the same position, the 'parallel' +* keyword must be used in each instance instead of defining a GROUP. +* +* Possible options are +* Variables to record: +* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm +* vx vy vz v [m/s] Velocity on x,y,z and norm +* x y z radius [m] Distance, Position and norm +* xy, yz, xz [m] Radial position in xy, yz and xz plane +* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane +* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane +* t time [s] Time of Flight +* energy omega [meV] energy of neutron +* lambda wavelength [Angs] wavelength of neutron +* sx sy sz [1] Spin +* vdiv ydiv dy [deg] vertical divergence (y) +* hdiv divergence xdiv [deg] horizontal divergence (x) +* angle [deg] divergence from direction +* theta longitude [deg] longitude (x/z) for sphere and cylinder +* phi lattitude [deg] lattitude (y/z) for sphere and cylinder +* +* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} +* user2 user3 to be assigned in an other component (see below) +* +* p intensity flux [n/s or n/cm^2/s] +* ncounts n neutron [1] neutron ID, i.e current event index +* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. +* +* Other options keywords are: +* abs Will monitor the abs of the following variable or of the signal (if used after all variables) +* auto Automatically set detector limits for one/all +* all {limits|bins|auto} To set all limits or bins values or auto mode +* binary {float|double} with 'source' option, saves in compact files +* bins=[bins=20] Number of bins in the detector along dimension +* borders To also count off-limits neutrons (X < min or X > max) +* capture weight by lambda/lambda(2200m/s) capture flux +* file=string Detector image file name. default is component name, plus date and variable extension. +* incoming Monitor incoming beam in non flat det +* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) +* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events +* log Will monitor the log of the following variable or of the signal (if used after all variables) +* min=[min_value] Same as limits, but only sets the min or max +* max=[max_value] +* multiple Create multiple independant 1D monitors files +* no or not Revert next option +* outgoing Monitor outgoing beam (default) +* parallel Use this option when the next component is at the same position (parallel components) +* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. +* per steradian Displays beam solid angle in steradian +* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. +* signal=[var] Will monitor [var] instead of usual intensity +* slit or absorb Absorb neutrons that are out detector +* source The monitor will save neutron states +* inactivate To inactivate detector (0D detector) +* verbose To display additional informations +* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) +* +* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) +* box Box of size xwidth, yheight, zdepth. +* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). +* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). +* disk Disk flat xy monitor. diameter is xwidth. +* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). +* square Square flat xy monitor (xwidth, yheight). +* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. +* +* EXAMPLES: +*
    +*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, +*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with +*   borders, file = mon1"); +* will monitor neutron angle from [z] axis, between -5 +* and 5 degrees, in 10 bins, into "mon1.A" output 1D file +* +*
  • options = "sphere theta phi outgoing" +* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" +* +*
  • options = "banana, theta limits=[10,130], bins=120, y" +* a theta/height banana detector +* +*
  • options = "angle radius all auto" +* is a 2D monitor with automatic limits +* +*
  • options = "list=1000 kx ky kz energy" +* records 1000 neutron event in a file +* +*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" +* makes 4 output 1D files and produces a complete list for all neutrons +* and monitor log(abs(tof)) within automatic limits (for t) +* +*
  • options = "theta y, sphere, pixel min=100" +* a 4pi detector which outputs an event list with pixelID from the actual +* detector surface, starting from index 100. +* +*
+* To dynamically define a number of bins, or limits: +* Use in DECLARE: char op[256]; +* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); +* Use in TRACE: Monitor_nD(... options=op ...) +* +* How to monitor any instrument/component variable into a Monitor_nD +* Suppose you want to monitor a variable 'age' which you assign somwhere in +* the instrument: +* COMPONENT MyMonitor = Monitor_nD( +* xwidth = 0.1, yheight = 0.1, +* user1="age", username1="Age of the Captain [years]", +* options="user1, auto") +* AT ... +* +* See also the example in PreMonitor_nD to +* monitor neutron parameters cross-correlations. +* +* %BUGS +* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI +* as each process may use different limits. +* +* %Parameters +* INPUT PARAMETERS: +* +* xwidth: [m] Width of detector. +* yheight: [m] Height of detector. +* zdepth: [m] Thickness of detector (z). +* radius: [m] Radius of sphere/banana shape monitor +* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). +* +* Optional input parameters (override xwidth yheight zdepth): +* xmin: [m] Lower x bound of opening +* xmax: [m] Upper x bound of opening +* ymin: [m] Lower y bound of opening +* ymax: [m] Upper y bound of opening +* zmin: [m] Lower z bound of opening +* zmax: [m] Upper z bound of opening +* filename: [str] Output file name (overrides file=XX option). +* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins +* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits +* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits +* user1: [str] Variable name of USERVAR to be monitored by user1. +* user2: [str] Variable name of USERVAR to be monitored by user2. +* user3: [str] Variable name of USERVAR to be monitored by user3. +* username1: [str] Name assigned to User1 +* username2: [str] Name assigned to User2 +* username3: [str] Name assigned to User3 +* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. +* geometry: [str] Name of an OFF file to specify a complex geometry detector +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* DEFS: [struct] structure containing Monitor_nD Defines +* Vars: [struct] structure containing Monitor_nD variables +* +* %Link +* PreMonitor_nD +* +* %End +******************************************************************************/ +DEFINE COMPONENT Monitor_nD + +SETTING PARAMETERS ( + string user1="", string user2="", string user3="", + xwidth=0, yheight=0, zdepth=0, + xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, + int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, + string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, + string username1="NULL", string username2="NULL", string username3="NULL", + int tsplit=0, int adaptive_target=0 +) +/* these are protected C variables */ + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + %include "monitor_nd-lib" + %include "read_table-lib" + %include "interoff-lib" +%} + +DECLARE +%{ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +%} + +INITIALIZE +%{ + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif +%} + +TRACE +%{ + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + //double *pp_array=malloc(sizeof(double)*N_trains); + double pp_this; + double pp_total=0; + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + int train_index; + double p_original = p; + double p_factor = p/P_last_time_manipulation; + + if (adaptive_target) { + #pragma acc atomic + total_N_sent += adaptive_N; + #pragma acc atomic + total_rays_sent++; + } + + if (tsplit==1) { + double t_original = t; + for (train_index=0; train_index 0) { + p = p_factor*p_trains[train_index]; + t = t_original + t_offset[train_index]; + + //pp_array[train_index] + pp_this = Monitor_nD_Trace (&DEFS, &Vars, _particle); + + if (adaptive_target) total_arrived++; + + } else pp_this = 0;//pp_array[train_index] = 0; + pp_total+=pp_this; + } + p = p_original; + t = t_original; + + //int pp_total = 0; + //for (train_index=0; train_index 0) { + SCATTER; + } + + } else { + + /* + // Now just use normal p + double total_p = 0; + for (train_index=0; train_index 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } +%} + +FINALLY +%{ + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); +%} + +MCDISPLAY +%{ + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/MultiDiskChopper.comp new file mode 100644 index 0000000000..82b28b3944 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/MultiDiskChopper.comp @@ -0,0 +1,361 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2015, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: MultiDiskChopper +* +* %I +* Written by: Markus Appel +* Date: 2015-10-19 +* Origin: ILL / FAU Erlangen-Nuernberg +* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), +* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disk chopper with a freely configurable slit pattern. For simple applications, +* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. +* If the chopper slit pattern should be dynamically configurable or a complicated pattern +* is to be used as first chopper on a continuous source, use this component. +* +* Width and position of the slits is defined as a list in string parameters so +* they can easily be taken from instrument parameters. +* The chopper axis is located on the y axis as defined by the parameter delta_y. +* When the chopper is the first chopper after a continuous (i.e. time-independent) +* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. +* +* +* Examples (see parameter definitions for details): +* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, delay=0.02) +* +* First chopper on a continuous source, creating pulse trains for one additional revolution +* before and after the revolution at t=0: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) +* +* %P +* INPUT PARAMETERS: +* +* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" +* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) +* nslits: [] Number of slits to read from slit_width and slit_center +* radius: [m] Outer radius of the disk +* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. +* nu: [Hz] Rotation speed of the disk, the sign determines the direction. +* +* Optional parameters: +* verbose: [0/1] Set to 1 to display more information during the simulation. +* phase: [deg] Phase angle located on top of the disk at t=delay (see below). +* delay: [s] Time delay of the chopper clock. +* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. +* jitter: [s] Jitter in the time phase. +* abs_out: If 1, absorb all neutrons outside the disk diameter. +* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events +* will be shifted in time to pass the component (with adapted weight). +* +* Additional parameters when isfirst=1 (that have no effect for isfirst=0): +* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. +* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). +* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT MultiDiskChopper + +SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) + + +DECLARE +%{ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +%} + +INITIALIZE +%{ + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + %} + +TRACE +%{ + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + // Check whether each t_offset carried by the ray make it through + double weight_update = p/P_last_time_manipulation; + P_last_time_manipulation = 0; + + int train_index; + int one_did_hit = 0; + int this_t_hit; + double this_train_t; + int all_dead = 1; + double p_total = 0; + for (train_index=0; train_index=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15]", + tsplit=1, adaptive_target=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", + tsplit=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + #ifndef _MSC_EXTENSIONS + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); + #endif +%} + +FINALLY +%{ +%} + + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/bi_spec_ellipse.comp new file mode 100644 index 0000000000..c24fb3cdea --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/bi_spec_ellipse.comp @@ -0,0 +1,794 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2011, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Bi-spectral extracion system +* +* %I +* Written by: Manuel Morgano +* Date: April 2015 +* Version: $Revision: 2.3 $ +* Origin: PSI +* Release: McStas 1.12c +* +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* +* %D +* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. +* The supermirror number can be automatically calculated (setting the number to 0) or given +* Each mirror can be split in submirror pieces, each of them offseted by a constant angle +* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. +* The feeder's shape is calculated by the distance between the guide entrance and the first focus, +* the distance between the exit and the second focus, the length of the coated part and the opening +* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. +* User can specify different shapes for the horizontal and the vertical ellipse. +* Setting the m-coating to 0 means absorbing, -1 means transparent. +* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn +* but it's transparent. +* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. +* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. +* +* +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %P +* INPUT PARAMETERS: +* +* xheight: (m) height of mirror stack +* ywidth: (m) width of mirror plate +* zlength: (m) length of the mirror +* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) +* n_pieces (1) number of straight section per mirror +* tilt (degrees) angle between the mirrors and the horizontal direction +* angular_offset (degrees) angle between subsequent sub-mirrors +* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. +* R0_m: (1) Low-angle reflectivity +* Qc_m: (AA-1) Critical scattering vector +* alpha_mirror_m: (AA) Slope of reflectivity +* W_m: (AA-1) Width of supermirror cut-off +* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. +* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. +* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. +* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. +* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. +* ell_l: (m) length of the coated part of the ellipse +* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors +* ell_w: (m) width of the ellipse entrance +* ell_m: (1) m-value of the coating of the ellipse +* R0: (1) Low-angle reflectivity +* Qc: (AA-1) Critical scattering vector +* alpha_mirror: (AA) Slope of reflectivity +* W: (AA-1) Width of supermirror cut-off +* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] +* cut: (1) cutoff for lowest reflectivity consideration. +* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file +* +* %D +* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT bi_spec_ellipse +DEFINITION PARAMETERS () + SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) +OUTPUT PARAMETERS (pTable) +//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) + +SHARE +%{ +%include "read_table-lib" +%} + +DECLARE +%{ + t_Table pTable; + +%} + +INITIALIZE +%{ + + if (reflect && strlen(reflect)) { + if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ + exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); + } + if (n_mirror==1) + exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); + + +%} + +TRACE +%{ + + double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; + double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; + double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; + double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; + char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; + int i=1,j=1; + PROP_Z0; + if(n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ + mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ + l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ + for(i=floor(n_pieces*0.5);i>0;i--) + sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ + sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ + alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ + l_acc=0; /* keeps track of the neutron z position */ + h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ + + if (substrate==1) { + sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ + sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ + sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ + } + + + + if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ + ell_h=2*sec_pos; + if ((ell_h==0)&&(alpha<0)) + ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); + + /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ + f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + z0_x=f_x-d_focus_1_x; + b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); + a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); + + /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ + f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); + z0_y=f_y-d_focus_1_y; + b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); + a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); + for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ + for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ + int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ + int_t=(int_z-z)/vz; /* time for intersection */ + int_x=x+vx*int_t; /* x of intersection */ + int_y=y+vy*int_t; /* y of intersection */ + is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ + is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); + is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + + /******************************** INTERSECTION WITH X ELLIPSE **********************************/ + if((xdelta>0)&&(ell_m!=-1)) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + + + xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ + xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); + xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); + + if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ + if (xell_int_x>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + + PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + + continue; + } + } + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ + if((ydelta>0)&&(ell_m!=-1)) { + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + + yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ + yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); + yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); + + if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ + if (yell_int_y>0) + m_ell=-m_ell; + + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + continue; + } + } + + + /******************************** INTERSECTION WITH MIRROR STACK **********************************/ + + if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ + if(m == 0) + ABSORB; + if (reflect_mirror && strlen(reflect_mirror)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { /* reflectivity for the q of the neutorn */ + arg_stack = ((q-m*Qc_m)/W_m); + if(arg_stack < cut) + weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ + else + + { + i++; + j=0; + if (substrate==1) { + eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); + if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) + (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); + } + p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ + sec_pos=sec_pos-mirror_gap; + intersect=1; + continue; + } + weight *= R0_m; + } + else { /* q <= Qc */ + weight *= R0_m; + } + rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ + + if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ + + PROP_DT(int_t); /* propagation to the intersection */ + + SCATTER; + r=-gamma-2*alpha; /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ + intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ + } + else if (!transmit) + ABSORB; + else { + p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); + PROP_DT((l_section)/vz); + intersect=1; + } + } + sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ + } + l_acc=l_acc+l_section; /* keeps track of the neutron z position */ + sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ + alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ + h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ + if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ + PROP_DT(l_section/vz); + intersect=0; /* restores the check of the intersection to 0 */ + } + } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ + Dt=(zlength-z)/vz; + if (Dt>0) + PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ + do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ + + xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ + yell_intersect=0; + + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + + if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + } + + + if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + } + + if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ + + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); + + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); + if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ + PROP_DT(xell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + } + + if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ + + PROP_DT(yell_int_t); /* propagation to the intersection */ + + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma-2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ + + if(xell_int_z0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + + } + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vx=tan(r)*vz; + continue; + + c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; + c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; + c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; + ydelta=c2y*c2y-(4*c1y*c3y); + if(ydelta>0) { + yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ + if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ + yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); + yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ + yell_int_x=x+vx*yell_int_t; /* x of intersection */ + yell_int_y=y+vy*yell_int_t; /* y of intersection */ + yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); + if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + } + + } + } + + if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { + PROP_DT(yell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); + if (yell_int_y>0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + vy=tan(r)*vz; + + continue; + c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; + c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; + c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; + xdelta=c2x*c2x-(4*c1x*c3x); + if(xdelta>0) { + xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ + if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ + xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); + xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ + xell_int_x=x+vx*xell_int_t; /* x of intersection */ + xell_int_y=y+vy*xell_int_t; /* y of intersection */ + xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); + if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { + PROP_DT(xell_int_t); /* propagation to the intersection */ + V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ + lambda=(2*PI/V2K)/V; /* calculation of lambda */ + gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ + m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); + if (xell_int_x<0) + m_ell=-m_ell; + q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ + if(ell_m == 0) + ABSORB; + if (reflect && strlen(reflect)) + weight = Table_Value(pTable, q, 1); + else if(q > Qc) { + double arg = (q-ell_m*Qc)/W; + if(arg < 10) + weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); + else + ABSORB; /* Cutoff ~ 1E-10 */ + weight *= R0; + } + else { /* q <= Qc */ + weight *= R0; + } + + p *= weight*R0; + SCATTER; + r=-gamma+2*atan(m_ell); /* reflection angle */ + vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ + } + + } + + + } + + + + + } + }/*end of check of deltas*/ + + + } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ + r=(ell_l-z)/vz; /**/ + + /*PROP_DT((ell_l-z)/vz);*/ + PROP_DT(r); + +// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); + ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); + ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); +// printf("length = %f \n",ell_l); +// printf("ell_exit_x= %f\n",ell_exit_x); +// printf("ell_exit_y = %f\n",ell_exit_y); + if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) + ABSORB; + +%} + +MCDISPLAY +%{ + double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; + int i,j,n_seg; + magnify("xy"); + if (n_mirror==0) + n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ + draw_mirror_gap=xheight/(n_mirror-1); + draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ + + for(i=floor(n_pieces*0.5);i>0;i--) + draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ + draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ + draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; + draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; + if ((ell_h==0)&&(draw_alpha>=0)) + ell_h=2*draw_sec_pos; + if ((ell_h==0)&&(draw_alpha<0)) + ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); + + + for (i=1; i<=n_pieces; i++) { + for(j=1; j<=n_mirror; j++) { + multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, + (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), + (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); + draw_sec_pos=draw_sec_pos-draw_mirror_gap; + + } + draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ + draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); + draw_alpha=draw_alpha-angular_offset*DEG2RAD; + } + + n_seg=1000; + + draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); + draw_z0_x=draw_f_x-d_focus_1_x; + draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); + draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); + + for (i=1;i Date: Tue, 10 Mar 2026 17:20:21 +0100 Subject: [PATCH 70/75] Functional NTOF solution for GPU - with dynamic allocation --- common/lib/share/mccode-r.c | 9 +-------- mccode/nlib/share/mcstas-r.c | 3 +++ mccode/src/cogen.c.in | 24 ++++++++++++++---------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 551d560173..3e96ee03e2 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -61,7 +61,6 @@ static long mcstartdate = 0; /* start simulation time */ static int mcdisable_output_files = 0; /* --no-output-files */ mcstatic int mcgravitation = 0; /* use gravitation flag, for PROP macros */ mcstatic int NTOF = 0; /* Number of TOF "sub-particles" in a TOF_TRAIN */ -#pragma acc declare create ( NTOF ) /* When -DTOF_TRAIN is defined, the default NTOF becomes 10, defined below in the mcparseoptions function body.*/ @@ -4709,6 +4708,7 @@ mcparseoptions(int argc, char *argv[]) #ifdef TOF_TRAIN NTOF=100; /* Default to 100 TOF "sub-particles" in a TOF_TRAIN */ + #pragma acc update device(NTOF) #endif /* Add one to numipar to avoid allocating zero size memory block. */ @@ -4818,14 +4818,7 @@ mcparseoptions(int argc, char *argv[]) #ifdef TOF_TRAIN else if(!strncmp("--tof-trains=", argv[i], 13)) { NTOF=atoi(&argv[i][13]); - #ifdef OPENACC - if (NTOF>NTOF_GPU) { - fprintf(stderr,"WARNING: Requested --tof=train=%d value is larger than compiled-in (NTOF_GPU=%d) value.\n",NTOF,NTOF_GPU); - fprintf(stderr,"... hence resetting to --tof=train=%d. Recompile with -DNTOF_GPU set to higher value to increase.\n",NTOF_GPU); - NTOF=NTOF_GPU; - } #pragma acc update device(NTOF) - #endif } #endif #ifdef USE_NEXUS diff --git a/mccode/nlib/share/mcstas-r.c b/mccode/nlib/share/mcstas-r.c index 6dc7ababb2..bdace7a6ab 100644 --- a/mccode/nlib/share/mcstas-r.c +++ b/mccode/nlib/share/mcstas-r.c @@ -84,6 +84,9 @@ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, d #ifdef TOF_TRAIN #ifdef OPENACC mcneutron.N_trains=NTOF; + mcneutron.t_offset=malloc(NTOF*sizeof(double)); + mcneutron.p_trains=malloc(NTOF*sizeof(double)); + mcneutron.alive_trains=malloc(NTOF*sizeof(int)); #endif /* OPENACC */ #endif /* TOF_TRAIN */ diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 066dad8b50..43524743c6 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2100,6 +2100,14 @@ int cogen_raytrace(struct instr_def *instr) coutf(" srandom(_hash((pidx+1)*(seed+1)));"); coutf(""); coutf(" raytrace(_particle);"); + cout(" // If OPENACC/TOF_TRAIN we need to nuke internal arrays!"); + cout(" #ifdef OPENACC"); + cout(" #ifdef TOF_TRAIN"); + cout(" if (t_offset) free(t_offset);"); + cout(" if (p_trains) free(p_trains);"); + cout(" if (alive_trains) free(alive_trains);"); + cout(" #endif"); + cout(" #endif"); coutf(" } /* inner for */"); coutf(" seed = seed+gpu_innerloop;"); coutf(" } /* CPU for */"); @@ -2454,7 +2462,8 @@ cogen_header(struct instr_def *instr, char *output_name) cout(""); cout("#ifdef TOF_TRAIN"); - cout("/* Global counters, CPU/GPU alike: */"); + cout("/* Global sizes, counters, CPU/GPU alike: */"); + cout("int NTOF;"); cout("int adaptive_N;"); cout("long total_arrived;"); cout("long total_N_sent;"); @@ -2466,13 +2475,8 @@ cogen_header(struct instr_def *instr, char *output_name) cout("double *p_trains;"); cout("int *alive_trains;"); cout("double P_last_time_manipulation;"); - cout("/* ON GPU, control NTOF size via a define: */"); - cout("#else /* is OPENACC */"); - cout("#ifndef NTOF_GPU"); - cout("#define NTOF_GPU 100 /* Default NTOF on GPU is 100*/"); cout("#endif"); - cout("#pragma acc declare create(adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); - cout("#endif /* OPENACC */"); + cout("#pragma acc declare create(NTOF,adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); cout("#endif /* TOF_TRAIN */"); cout(""); @@ -2533,9 +2537,9 @@ cogen_header(struct instr_def *instr, char *output_name) cout(" #ifdef OPENACC"); cout(" #ifdef TOF_TRAIN"); cout(" int N_trains; /* initialised like e.g. ncount, seed from cmdline */"); - cout(" double t_offset[NTOF_GPU];"); - cout(" double p_trains[NTOF_GPU];"); - cout(" int alive_trains[NTOF_GPU];"); + cout(" double *t_offset;"); + cout(" double *p_trains;"); + cout(" int *alive_trains;"); cout(" double P_last_time_manipulation;"); cout(" #endif /* TOF_TRAIN */"); cout(" #endif /* OPENACC */"); From 3a0e7a2268923066afbc1040006bef56ac645e64 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Wed, 11 Mar 2026 09:51:47 +0100 Subject: [PATCH 71/75] Disable CPU-loops around GPU innerloop in case of OPENACC and TOF_TRAIN --- mccode/src/cogen.c.in | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 43524743c6..090b4b6479 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2063,20 +2063,26 @@ int cogen_raytrace(struct instr_def *instr) coutf(""); coutf(" #ifdef OPENACC"); coutf(" if (ncount>gpu_innerloop) {"); - coutf(" printf(\"Defining %%llu CPU loops around GPU kernel and adjusting ncount\\n\",loops);"); - coutf(" mcset_ncount(loops*gpu_innerloop);"); + coutf(" #ifndef TOF_TRAIN"); + coutf(" printf(\"Defining %%llu CPU loops around GPU kernel and adjusting ncount\\n\",loops);"); + coutf(" mcset_ncount(loops*gpu_innerloop);"); + coutf(" #else"); + coutf(" fprintf(stderr, \"You requested -n=\%llu on GPU with TOF_TRAIN, sorry maximum is \%llu (gpu_innerloop) - EXIT!\n\", mcget_ncount(), gpu_innerloop);"); + coutf(" #endif"); coutf(" } else {"); coutf(" #endif"); coutf(" loops=1;"); coutf(" gpu_innerloop = ncount;"); coutf(" #ifdef OPENACC"); coutf(" }"); - coutf(" #endif"); + coutf(" #endif"); coutf(""); + coutf(" #ifndef TOF_TRAIN"); coutf(" for (unsigned long long cloop=0; cloop1) fprintf(stdout, \"%%d..\", (int)cloop); fflush(stdout);"); coutf(" #endif"); + coutf(" #endif"); coutf(""); coutf(" /* if on GPU, re-nullify printf */"); cout(" #ifdef OPENACC"); @@ -2110,7 +2116,9 @@ int cogen_raytrace(struct instr_def *instr) cout(" #endif"); coutf(" } /* inner for */"); coutf(" seed = seed+gpu_innerloop;"); + coutf(" #ifndef TOF_TRAIN"); coutf(" } /* CPU for */"); + coutf(" #endif"); coutf(" /* if on GPU, printf has been globally nullified, re-enable here */"); cout(" #ifdef OPENACC"); cout(" #undef strlen"); From f597db88718516130a28d6ddea90c94c83249b33 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Wed, 11 Mar 2026 09:56:00 +0100 Subject: [PATCH 72/75] Fix quoting --- mccode/src/cogen.c.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 090b4b6479..8bdbe5c548 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2067,7 +2067,7 @@ int cogen_raytrace(struct instr_def *instr) coutf(" printf(\"Defining %%llu CPU loops around GPU kernel and adjusting ncount\\n\",loops);"); coutf(" mcset_ncount(loops*gpu_innerloop);"); coutf(" #else"); - coutf(" fprintf(stderr, \"You requested -n=\%llu on GPU with TOF_TRAIN, sorry maximum is \%llu (gpu_innerloop) - EXIT!\n\", mcget_ncount(), gpu_innerloop);"); + coutf(" fprintf(stderr, \"You requested -n=\%llu on GPU with TOF_TRAIN, sorry maximum is \%llu (gpu_innerloop) - EXIT!\\n\", mcget_ncount(), gpu_innerloop);"); coutf(" #endif"); coutf(" } else {"); coutf(" #endif"); From ba03c1c8945ce1a0274b20328a48d44bc3e8d843 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Thu, 12 Mar 2026 13:54:01 +0100 Subject: [PATCH 73/75] This should allow running NTOF on GPU with either: * dynamic array allocation -DOPENACC -DTOF_TRAIN * static array allocation -DOPENACC -DTOF_TRAIN -DNTOF_GPU_STATIC=number --- common/lib/share/mccode-r.c | 6 +++ common/lib/share/mccode-r.h.in | 4 ++ mccode/nlib/share/mcstas-r.c | 2 + mccode/src/cogen.c.in | 39 +++++++++++++++---- .../ODIN_TOF_train6/ODIN_TOF_train6.instr | 2 + 5 files changed, 46 insertions(+), 7 deletions(-) diff --git a/common/lib/share/mccode-r.c b/common/lib/share/mccode-r.c index 3e96ee03e2..cf30dee596 100644 --- a/common/lib/share/mccode-r.c +++ b/common/lib/share/mccode-r.c @@ -4818,6 +4818,12 @@ mcparseoptions(int argc, char *argv[]) #ifdef TOF_TRAIN else if(!strncmp("--tof-trains=", argv[i], 13)) { NTOF=atoi(&argv[i][13]); + #ifdef NTOF_GPU_STATIC + if (NTOF>NTOF_GPU_STATIC) { + fprintf(stderr, "WARNING: Instrument was compiled with -DNTOF_GPU_STATIC=%i, reducing to --tof-trains=%i\n"); + NTOF=NTOF_GPU_STATIC; + } + #endif #pragma acc update device(NTOF) } #endif diff --git a/common/lib/share/mccode-r.h.in b/common/lib/share/mccode-r.h.in index 1f0552a07b..b5c6e510f6 100644 --- a/common/lib/share/mccode-r.h.in +++ b/common/lib/share/mccode-r.h.in @@ -57,6 +57,10 @@ #include #else #include +/* Clear NTOF_GPU_STATIC is not OPENACC */ +#ifdef NTOF_GPU_STATIC +#undef NTOF_GPU_STATIC +#endif #endif #pragma acc routine int noprintf(); diff --git a/mccode/nlib/share/mcstas-r.c b/mccode/nlib/share/mcstas-r.c index bdace7a6ab..f5d780b60f 100644 --- a/mccode/nlib/share/mcstas-r.c +++ b/mccode/nlib/share/mcstas-r.c @@ -83,10 +83,12 @@ _class_particle mcsetstate(double x, double y, double z, double vx, double vy, d // init uservars via cogen'd-function #ifdef TOF_TRAIN #ifdef OPENACC + #ifndef NTOF_GPU_STATIC mcneutron.N_trains=NTOF; mcneutron.t_offset=malloc(NTOF*sizeof(double)); mcneutron.p_trains=malloc(NTOF*sizeof(double)); mcneutron.alive_trains=malloc(NTOF*sizeof(int)); +#endif /* NTOF_GPU_STATIC */ #endif /* OPENACC */ #endif /* TOF_TRAIN */ diff --git a/mccode/src/cogen.c.in b/mccode/src/cogen.c.in index 8bdbe5c548..5edb8951a2 100644 --- a/mccode/src/cogen.c.in +++ b/mccode/src/cogen.c.in @@ -2033,9 +2033,11 @@ int cogen_raytrace(struct instr_def *instr) cout(" // If OPENACC/TOF_TRAIN we need to nuke internal arrays!"); cout(" #ifdef OPENACC"); cout(" #ifdef TOF_TRAIN"); - cout(" //if (t_offset) free(t_offset);"); - cout(" //if (p_trains) free(p_trains);"); - cout(" //if (alive_trains) free(alive_trains);"); + cout(" #ifndef NTOF_GPU_STATIC"); + cout(" if (t_offset) free(t_offset);"); + cout(" if (p_trains) free(p_trains);"); + cout(" if (alive_trains) free(alive_trains);"); + cout(" #endif"); cout(" #endif"); cout(" #endif"); cout(""); @@ -2067,13 +2069,18 @@ int cogen_raytrace(struct instr_def *instr) coutf(" printf(\"Defining %%llu CPU loops around GPU kernel and adjusting ncount\\n\",loops);"); coutf(" mcset_ncount(loops*gpu_innerloop);"); coutf(" #else"); - coutf(" fprintf(stderr, \"You requested -n=\%llu on GPU with TOF_TRAIN, sorry maximum is \%llu (gpu_innerloop) - EXIT!\\n\", mcget_ncount(), gpu_innerloop);"); + coutf(" #ifdef NTOF_GPU_STATIC"); + coutf(" printf(\"Defining %%llu CPU loops around GPU kernel and adjusting ncount\\n\",loops);"); + coutf(" mcset_ncount(loops*gpu_innerloop);"); + coutf(" #else"); + coutf(" fprintf(stderr, \"You requested -n=\%llu on GPU with TOF_TRAIN, sorry maximum is \%llu (gpu_innerloop) - EXIT!\\n\", mcget_ncount(), gpu_innerloop);"); + coutf(" #endif"); coutf(" #endif"); coutf(" } else {"); - coutf(" #endif"); + coutf(" #endif"); coutf(" loops=1;"); coutf(" gpu_innerloop = ncount;"); - coutf(" #ifdef OPENACC"); + coutf(" #ifdef OPENACC"); coutf(" }"); coutf(" #endif"); coutf(""); @@ -2083,6 +2090,12 @@ int cogen_raytrace(struct instr_def *instr) coutf(" if (loops>1) fprintf(stdout, \"%%d..\", (int)cloop); fflush(stdout);"); coutf(" #endif"); coutf(" #endif"); + coutf(" #ifdef NTOF_GPU_STATIC"); + coutf(" for (unsigned long long cloop=0; cloop1) fprintf(stdout, \"%%d..\", (int)cloop); fflush(stdout);"); + coutf(" #endif"); + coutf(" #endif"); coutf(""); coutf(" /* if on GPU, re-nullify printf */"); cout(" #ifdef OPENACC"); @@ -2106,19 +2119,25 @@ int cogen_raytrace(struct instr_def *instr) coutf(" srandom(_hash((pidx+1)*(seed+1)));"); coutf(""); coutf(" raytrace(_particle);"); - cout(" // If OPENACC/TOF_TRAIN we need to nuke internal arrays!"); + cout(" // If OPENACC/TOF_TRAIN we need to nuke internal arrays"); + cout(" // ... but not if we are using NTOF_GPU_STATIC "); cout(" #ifdef OPENACC"); + cout(" #ifndef NTOF_GPU_STATIC"); cout(" #ifdef TOF_TRAIN"); cout(" if (t_offset) free(t_offset);"); cout(" if (p_trains) free(p_trains);"); cout(" if (alive_trains) free(alive_trains);"); cout(" #endif"); cout(" #endif"); + cout(" #endif"); coutf(" } /* inner for */"); coutf(" seed = seed+gpu_innerloop;"); coutf(" #ifndef TOF_TRAIN"); coutf(" } /* CPU for */"); coutf(" #endif"); + coutf(" #ifdef NTOF_GPU_STATIC"); + coutf(" } /* CPU for */"); + coutf(" #endif"); coutf(" /* if on GPU, printf has been globally nullified, re-enable here */"); cout(" #ifdef OPENACC"); cout(" #undef strlen"); @@ -2479,9 +2498,15 @@ cogen_header(struct instr_def *instr, char *output_name) cout("/* ON CPU, these are also global: */"); cout("#ifndef OPENACC"); cout("int N_trains; /* initialised like e.g. ncount, seed from cmdline */"); + cout("#ifndef NTOF_GPU_STATIC"); cout("double *t_offset;"); cout("double *p_trains;"); cout("int *alive_trains;"); + cout("#else"); + cout("double t_offset[NTOF_GPU_STATIC];"); + cout("double p_trains[NTOF_GPU_STATIC];"); + cout("int alive_trains[NTOF_GPU_STATIC];"); + cout("#endif"); cout("double P_last_time_manipulation;"); cout("#endif"); cout("#pragma acc declare create(NTOF,adaptive_N,total_arrived,total_N_sent,total_rays_sent)"); diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ODIN_TOF_train6.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ODIN_TOF_train6.instr index 68abc1964e..d04cfaddff 100644 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ODIN_TOF_train6.instr +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ODIN_TOF_train6.instr @@ -1012,6 +1012,8 @@ SAVE fprintf(f, "%.9f\n", wall_time); fclose(f); + + printf("Final value of adaptive_N=%i\n",adaptive_N); ); #endif %} From a247ebb2f6f88f470e2aa20866011be8ba2f2d27 Mon Sep 17 00:00:00 2001 From: mads-bertelsen Date: Mon, 27 Apr 2026 08:32:44 +0200 Subject: [PATCH 74/75] Prototype of how makros could make it easier to modify components to run with trains --- .../Prototypes/ODIN_TOF_train7/CSPEC.instr | 1549 +++++++++++++++++ .../ODIN_TOF_train7/DiskChopper.comp | 206 +++ .../ODIN_TOF_train7/ESS_butterfly-lib.c | 402 +++++ .../ODIN_TOF_train7/ESS_butterfly-lib.h | 97 ++ .../ODIN_TOF_train7/ESS_butterfly.comp | 693 ++++++++ .../ODIN_TOF_train7/Monitor_nD.comp | 665 +++++++ .../ODIN_TOF_train7/MultiDiskChopper.comp | 338 ++++ .../Prototypes/ODIN_TOF_train7/ODIN_wfm.instr | 1057 +++++++++++ .../ODIN_TOF_train7/TOFLambda_monitor.comp | 156 ++ .../ODIN_TOF_train7/TOF_monitor.comp | 158 ++ 10 files changed, 5321 insertions(+) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/CSPEC.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/DiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ESS_butterfly-lib.c create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ESS_butterfly-lib.h create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ESS_butterfly.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/Monitor_nD.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/MultiDiskChopper.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ODIN_wfm.instr create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/TOFLambda_monitor.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train7/TOF_monitor.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/CSPEC.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/CSPEC.instr new file mode 100644 index 0000000000..a6eb1e58a2 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/CSPEC.instr @@ -0,0 +1,1549 @@ +/******************************************************************** +* +* Instrument: ESS CSPEC +* +* %Identification +* Written by: P. P. Deen +* Date: 26th March 2020 +* Origin: ESS +* +* %INSTRUMENT_SITE: ESS +* Vertical bender is not 3D but 2D and therefore m values on the side of the guides are equal for lefty and right - use the highest value. +************************************************************************/ + + DEFINE INSTRUMENT CSPEC(lambda_min=3, dist_focus=1.9, AC_Power=2, + move_x=0.0163, +move_y=0.000, +phi_x=0.0, +phi_y=-0.5, +phi_z=0.0, +ROC_H=4000, +ROC_V=1600, +gap=0.001, +L=26, +m_insert_t=3.5, +m_insert_b=3.5, +m_insert_r=3.5, +m_insert_l=3.5, +W_par=0.003, +R0_par=0.99, +Qcrit=0.0217, +alpha_par=6.07, +gravity=-9.81, +height=0.1, +h1_in=0.055, +theta_BW1 = 40.7, +theta_BW2 = 41.9, +theta_BW3 = 193.0, +theta_PS = 24.23, +theta_RRM = 4.45, +theta_M = 4.45, +Freq_BW1=14.0, +Freq_BW2=14.0, +Freq_BW3=14.0, +Freq_M=168.0, +Distance_BW1 = 13.7236, +Distance_BW2 = 20.4766 , +Distance_BW3 = 104.52, +Distance_PS1 = 105.7046, +Distance_PS2 = 105.7106, +Distance_RRM = 105.67, +Distance_M1 = 158.55, +Distance_M2 =158.556, +Source_Offset = 0.0014, +dist_m=0.03, +dist=0.1, +int N_trains_par = 200, +target_tsplit = 5 +) + + +DECLARE %{ + double BW1_Delay, BW2_Delay, BW3_Delay, PS1_Delay , PS2_Delay , RRM_Delay , M1_Delay, M2_Delay ; + double v0; + double Freq_PS; + + double curve_ang_V_w03_01_012,curve_ang_H_w03_01_012; /* angle for calculation in radian */ + double dx_v_w03_01_012, dy_v_w03_01_012, dz_v_w03_01_012, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + + double curve_ang_V_w03_01_02,curve_ang_H_w03_01_02; /* angle for calculation in radian */ + double dx_v_w03_01_02, dy_v_w03_01_02, dz_v_w03_01_02, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + + double curve_ang_V_w03_01_03,curve_ang_H_w03_01_03; /* angle for calculation in radian */ + double dx_v_w03_01_03, dy_v_w03_01_03, dz_v_w03_01_03, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_02_01,curve_ang_H_w03_02_01; /* angle for calculation in radian */ + double dx_v_w03_02_01, dy_v_w03_02_01, dz_v_w03_02_01, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_03_01,curve_ang_H_w03_03_01; /* angle for calculation in radian */ + double dx_v_w03_03_01, dy_v_w03_03_01, dz_v_w03_03_01, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_03_02,curve_ang_H_w03_03_02; /* angle for calculation in radian */ + double dx_v_w03_03_02, dy_v_w03_03_02, dz_v_w03_03_02, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_04_01,curve_ang_H_w03_04_01; /* angle for calculation in radian */ + double dx_v_w03_04_01, dy_v_w03_04_01, dz_v_w03_04_01, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_04_02,curve_ang_H_w03_04_02; /* angle for calculation in radian */ + double dx_v_w03_04_02, dy_v_w03_04_02, dz_v_w03_04_02, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_01,curve_ang_H_w03_05_01; /* angle for calculation in radian */ + double dx_v_w03_05_01, dy_v_w03_05_01, dz_v_w03_05_01, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_01_a,curve_ang_H_w03_05_01_a; /* angle for calculation in radian */ + double dx_v_w03_05_01_a, dy_v_w03_05_01_a, dz_v_w03_05_01_a, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_02,curve_ang_H_w03_05_02; /* angle for calculation in radian */ + double dx_v_w03_05_02, dy_v_w03_05_02, dz_v_w03_05_02, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_03,curve_ang_H_w03_05_03; /* angle for calculation in radian */ + double dx_v_w03_05_03, dy_v_w03_05_03, dz_v_w03_05_03, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_04, curve_ang_H_w03_05_04; /* angle for calculation in radian */ + double dx_v_w03_05_04, dy_v_w03_05_04, dz_v_w03_05_04, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_05, curve_ang_H_w03_05_05; /* angle for calculation in radian */ + double dx_v_w03_05_05, dy_v_w03_05_05, dz_v_w03_05_05, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_05_a,curve_ang_H_w03_05_05_a; /* angle for calculation in radian */ + double dx_v_w03_05_05_a, dy_v_w03_05_05_a, dz_v_w03_05_05_a, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + + double curve_ang_V_w03_05_06, curve_ang_H_w03_05_06; /* angle for calculation in radian */ + double dx_v_w03_05_06, dy_v_w03_05_06, dz_v_w03_05_06, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_07, curve_ang_H_w03_05_07; /* angle for calculation in radian */ + double dx_v_w03_05_07, dy_v_w03_05_07, dz_v_w03_05_07, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_08, curve_ang_H_w03_05_08; /* angle for calculation in radian */ + double dx_v_w03_05_08, dy_v_w03_05_08, dz_v_w03_05_08, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_09, curve_ang_H_w03_05_09; /* angle for calculation in radian */ + double dx_v_w03_05_09, dy_v_w03_05_09, dz_v_w03_05_09, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_05_10, curve_ang_H_w03_05_10; /* angle for calculation in radian */ + double dx_v_w03_05_10, dy_v_w03_05_10, dz_v_w03_05_10, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_011, curve_ang_H_w03_06_011; /* angle for calculation in radian */ + double dx_v_w03_06_011, dy_v_w03_06_011, dz_v_w03_06_011, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_012, curve_ang_H_w03_06_012; /* angle for calculation in radian */ + double dx_v_w03_06_012, dy_v_w03_06_012, dz_v_w03_06_012, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_02, curve_ang_H_w03_06_02; /* angle for calculation in radian */ + double dx_v_w03_06_02, dy_v_w03_06_02, dz_v_w03_06_02, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_03, curve_ang_H_w03_06_03; /* angle for calculation in radian */ + double dx_v_w03_06_03, dy_v_w03_06_03, dz_v_w03_06_03, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_04, curve_ang_H_w03_06_04; /* angle for calculation in radian */ + double dx_v_w03_06_04, dy_v_w03_06_04, dz_v_w03_06_04, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_05, curve_ang_H_w03_06_05; /* angle for calculation in radian */ + double dx_v_w03_06_05, dy_v_w03_06_05, dz_v_w03_06_05, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_06, curve_ang_H_w03_06_06; /* angle for calculation in radian */ + double dx_v_w03_06_06, dy_v_w03_06_06, dz_v_w03_06_06, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_07, curve_ang_H_w03_06_07; /* angle for calculation in radian */ + double dx_v_w03_06_07, dy_v_w03_06_07, dz_v_w03_06_07, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_08, curve_ang_H_w03_06_08; /* angle for calculation in radian */ + double dx_v_w03_06_08, dy_v_w03_06_08, dz_v_w03_06_08, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_09, curve_ang_H_w03_06_09; /* angle for calculation in radian */ + double dx_v_w03_06_09, dy_v_w03_06_09, dz_v_w03_06_09, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_10, curve_ang_H_w03_06_10; /* angle for calculation in radian */ + double dx_v_w03_06_10, dy_v_w03_06_10, dz_v_w03_06_10, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double curve_ang_V_w03_06_11, curve_ang_H_w03_06_11; /* angle for calculation in radian */ + double dx_v_w03_06_11, dy_v_w03_06_11, dz_v_w03_06_11, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + + double curve_ang_V_w03_06_12, curve_ang_H_w03_06_12; /* angle for calculation in radian */ + double dx_v_w03_06_12, dy_v_w03_06_12, dz_v_w03_06_12, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + + double curve_ang_V_w03_06_13, curve_ang_H_w03_06_13; /* angle for calculation in radian */ + double dx_v_w03_06_13, dy_v_w03_06_13, dz_v_w03_06_13, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + + double curve_ang_V_w03_06_14, curve_ang_H_w03_06_14; /* angle for calculation in radian */ + double dx_v_w03_06_14, dy_v_w03_06_14, dz_v_w03_06_14, dtrans; /* to calculate exit position */ + double sign; /* sign of radius in Bender */ + + double smallaxis_from_guide_elliptical_LEFT; + double smallaxis_from_guide_elliptical_TOP; + double largeaxis_from_guide_elliptical_LEFT; + double largeaxis_from_guide_elliptical_TOP; + + int allocated; + +%} + +USERVARS +%{ +double *t_offset; +double *p_trains; +double p_last_time_manipulation; +//int allocated; +int adaptive_N; +int N_active; +long total_arrived; +long total_N_sent; +long total_rays_sent; +%} + +INITIALIZE %{ + v0 =3956.035/lambda_min; + Freq_PS=Freq_M/2; + BW1_Delay = Source_Offset+Distance_BW1/v0; + BW2_Delay = Source_Offset+Distance_BW2/v0; + BW3_Delay = Source_Offset+Distance_BW3/v0; + PS1_Delay = Source_Offset+Distance_PS1/v0; + PS2_Delay = Source_Offset+Distance_PS2/v0; + RRM_Delay = Source_Offset+Distance_RRM/v0; + M1_Delay = Source_Offset+Distance_M1/v0; + M2_Delay = Source_Offset+Distance_M2/v0; + + curve_ang_V_w03_01_012 = (0.4995+0.001)/ROC_V; + curve_ang_H_w03_01_012 = (0.4995+0.001)/ROC_H; + dx_v_w03_01_012 = 0; + dz_v_w03_01_012 = ROC_V * sin(curve_ang_V_w03_01_012); + dy_v_w03_01_012 = ROC_V * (1- cos(curve_ang_V_w03_01_012)); + + + curve_ang_V_w03_01_02 = (0.999+0.001)/ROC_V; + dx_v_w03_01_02 = 0; + dz_v_w03_01_02 = ROC_V * sin(curve_ang_V_w03_01_02); + dy_v_w03_01_02 = ROC_V * (1- cos(curve_ang_V_w03_01_02)); + curve_ang_H_w03_01_02 = (0.999+0.001)/ROC_H; + + + curve_ang_V_w03_01_03 = (1.480+0.002)/ROC_V; + dx_v_w03_01_03 = 0; + dz_v_w03_01_03 = ROC_V * sin(curve_ang_V_w03_01_03); + dy_v_w03_01_03 = ROC_V * (1- cos(curve_ang_V_w03_01_03)); + curve_ang_H_w03_01_03 = (1.480+0.002)/ROC_H; + + + curve_ang_V_w03_02_01 = (0.516+0.025)/ROC_V; + dx_v_w03_02_01 = 0; + dz_v_w03_02_01 = ROC_V * sin(curve_ang_V_w03_02_01); + dy_v_w03_02_01 = ROC_V * (1- cos(curve_ang_V_w03_02_01)); + curve_ang_H_w03_02_01 = (0.516+0.025)/ROC_H; + + + curve_ang_V_w03_03_01 = (1.9412+0.001)/ROC_V; + dx_v_w03_03_01 = 0; + dz_v_w03_03_01 = ROC_V * sin(curve_ang_V_w03_03_01); + dy_v_w03_03_01 = ROC_V * (1- cos(curve_ang_V_w03_03_01)); + curve_ang_H_w03_03_01 = (1.9412+0.001)/ROC_H; + + curve_ang_V_w03_03_02 = (1.9412+0.012)/ROC_V; + dx_v_w03_03_02 = 0; + dz_v_w03_03_02 = ROC_V * sin(curve_ang_V_w03_03_02); + dy_v_w03_03_02 = ROC_V * (1- cos(curve_ang_V_w03_03_02)); + curve_ang_H_w03_03_02 = (1.9412+0.012)/ROC_H; + + curve_ang_V_w03_04_01 = (1.9412+0.001)/ROC_V; + dx_v_w03_04_01 = 0; + dz_v_w03_04_01 = ROC_V * sin(curve_ang_V_w03_03_01); + dy_v_w03_04_01 = ROC_V * (1- cos(curve_ang_V_w03_03_01)); + curve_ang_H_w03_04_01 = (1.9412+0.001)/ROC_H; + + curve_ang_V_w03_04_02 = (1.9412+0.012)/ROC_V; + dx_v_w03_04_02 = 0; + dz_v_w03_04_02 = ROC_V * sin(curve_ang_V_w03_04_02); + dy_v_w03_04_02 = ROC_V * (1- cos(curve_ang_V_w03_04_02)); + curve_ang_H_w03_04_02 = (1.9412+0.012)/ROC_H; + + + curve_ang_V_w03_05_01 = (1.2+0.03)/ROC_V; + dx_v_w03_05_01 = 0; + dz_v_w03_05_01 = ROC_V * sin(curve_ang_V_w03_05_01); + dy_v_w03_05_01 = ROC_V * (1- cos(curve_ang_V_w03_05_01)); + curve_ang_H_w03_05_01 = (1.2+0.03)/ROC_H; + + curve_ang_V_w03_05_02 = (0.8+0.002)/ROC_V; + dx_v_w03_05_02 = 0; + dz_v_w03_05_02 = ROC_V * sin(curve_ang_V_w03_05_02); + dy_v_w03_05_02 = ROC_V * (1- cos(curve_ang_V_w03_05_02)); + curve_ang_H_w03_05_02 = (0.8+0.002)/ROC_H; + + curve_ang_V_w03_05_03 = ( 1.9435 +0.001)/ROC_V; + dx_v_w03_05_03 = 0; + dz_v_w03_05_03 = ROC_V * sin(curve_ang_V_w03_05_03); + dy_v_w03_05_03 = ROC_V * (1- cos(curve_ang_V_w03_05_03)); + curve_ang_H_w03_05_03 = ( 1.9435 +0.001)/ROC_H; + + curve_ang_V_w03_05_04 = (1.9435 +0.002)/ROC_V; + dx_v_w03_05_04 = 0; + dz_v_w03_05_04 = ROC_V * sin(curve_ang_V_w03_05_04); + dy_v_w03_05_04 = ROC_V * (1- cos(curve_ang_V_w03_05_04)); + curve_ang_H_w03_05_04 = (1.9435 +0.002)/ROC_H; + + + curve_ang_V_w03_05_05 = (0.8+0.03)/ROC_V; + dx_v_w03_05_05 = 0; + dz_v_w03_05_05 = ROC_V * sin(curve_ang_V_w03_05_05); + dy_v_w03_05_05 = ROC_V * (1- cos(curve_ang_V_w03_05_05)); + curve_ang_H_w03_05_05 = (0.8+0.03)/ROC_H; + + + curve_ang_V_w03_05_06 = (0.8+0.002)/ROC_V; + dx_v_w03_05_06 = 0; + dz_v_w03_05_06 = ROC_V * sin(curve_ang_V_w03_05_06); + dy_v_w03_05_06 = ROC_V * (1- cos(curve_ang_V_w03_05_06)); + curve_ang_H_w03_05_06 = (0.8+0.002)/ROC_H; + + curve_ang_V_w03_05_07 = ( 1.4531 +0.001)/ROC_V; + dx_v_w03_05_07 = 0; + dz_v_w03_05_07 = ROC_V * sin(curve_ang_V_w03_05_07); + dy_v_w03_05_07 = ROC_V * (1- cos(curve_ang_V_w03_05_07)); + curve_ang_H_w03_05_07 = ( 1.4531 +0.001)/ROC_H; + + + curve_ang_V_w03_05_08 = ( 1.4531 +0.003)/ROC_V; + dx_v_w03_05_08 = 0; + dz_v_w03_05_08 = ROC_V * sin(curve_ang_V_w03_05_08); + dy_v_w03_05_08 = ROC_V * (1- cos(curve_ang_V_w03_05_08)); + curve_ang_H_w03_05_08 = ( 1.4531 +0.003)/ROC_H; + + curve_ang_V_w03_05_09 = ( 2.040+0.001)/ROC_V; + dx_v_w03_05_09 = 0; + dz_v_w03_05_09 = ROC_V * sin(curve_ang_V_w03_05_09); + dy_v_w03_05_09 = ROC_V * (1- cos(curve_ang_V_w03_05_09)); + curve_ang_H_w03_05_09 = ( 2.040+0.001)/ROC_H; + + curve_ang_V_w03_05_10 = ( 1.65 +0.04)/ROC_V; + dx_v_w03_05_10 = 0; + dz_v_w03_05_10 = ROC_V * sin(curve_ang_V_w03_05_10); + dy_v_w03_05_10 = ROC_V * (1- cos(curve_ang_V_w03_05_10)); + curve_ang_H_w03_05_10 = ( 1.65 +0.04)/ROC_H; + + curve_ang_V_w03_06_011 = ( 0.4903)/ROC_V; + dx_v_w03_06_011 = 0; + dz_v_w03_06_011 = ROC_V * sin(curve_ang_V_w03_06_011); + dy_v_w03_06_011 = ROC_V * (1- cos(curve_ang_V_w03_06_011)); + curve_ang_H_w03_06_011 = ( 0.4906)/ROC_H; + + curve_ang_V_w03_06_012 = ( 1.982+0.001)/ROC_V; + dx_v_w03_06_012 = 0; + dz_v_w03_06_012 = ROC_V * sin(curve_ang_V_w03_06_012); + dy_v_w03_06_012 = ROC_V * (1- cos(curve_ang_V_w03_06_012)); + curve_ang_H_w03_06_012 = ( 1.982+0.001)/ROC_H; + + curve_ang_V_w03_06_02 = ( 2+0.002)/ROC_V; + dx_v_w03_06_02 = 0; + dz_v_w03_06_02 = ROC_V * sin(curve_ang_V_w03_06_02); + dy_v_w03_06_02 = ROC_V * (1- cos(curve_ang_V_w03_06_02)); + curve_ang_H_w03_06_02 = ( 2+0.002)/ROC_H; + + + curve_ang_V_w03_06_03 = ( 2+0.001)/ROC_V; + dx_v_w03_06_03 = 0; + dz_v_w03_06_03 = ROC_V * sin(curve_ang_V_w03_06_03); + dy_v_w03_06_03 = ROC_V * (1- cos(curve_ang_V_w03_06_03)); + curve_ang_H_w03_06_03 = ( 2+0.001)/ROC_H; + + curve_ang_V_w03_06_04 = ( 2+0.002)/ROC_V; + dx_v_w03_06_04 = 0; + dz_v_w03_06_04 = ROC_V * sin(curve_ang_V_w03_06_04); + dy_v_w03_06_04 = ROC_V * (1- cos(curve_ang_V_w03_06_04)); + curve_ang_H_w03_06_04 = ( 2+0.002)/ROC_H; + + curve_ang_V_w03_06_05 = ( 2+0.001)/ROC_V; + dx_v_w03_06_05 = 0; + dz_v_w03_06_05 = ROC_V * sin(curve_ang_V_w03_06_05); + dy_v_w03_06_05 = ROC_V * (1- cos(curve_ang_V_w03_06_05)); + curve_ang_H_w03_06_05 = ( 2+0.001)/ROC_H; + + curve_ang_V_w03_06_06 = ( 2+0.002)/ROC_V; + dx_v_w03_06_06 = 0; + dz_v_w03_06_06 = ROC_V * sin(curve_ang_V_w03_06_06); + dy_v_w03_06_06 = ROC_V * (1- cos(curve_ang_V_w03_06_06)); + curve_ang_H_w03_06_06 = ( 2+0.002)/ROC_H; + + curve_ang_V_w03_06_07 = ( 2+0.001)/ROC_V; + dx_v_w03_06_07 = 0; + dz_v_w03_06_07 = ROC_V * sin(curve_ang_V_w03_06_07); + dy_v_w03_06_07 = ROC_V * (1- cos(curve_ang_V_w03_06_07)); + curve_ang_H_w03_06_07 = ( 2+0.001)/ROC_H; + + curve_ang_V_w03_06_08 = ( 2+0.002)/ROC_V; + dx_v_w03_06_08 = 0; + dz_v_w03_06_08 = ROC_V * sin(curve_ang_V_w03_06_08); + dy_v_w03_06_08 = ROC_V * (1- cos(curve_ang_V_w03_06_08)); + curve_ang_H_w03_06_08 = ( 2+0.002)/ROC_H; + + curve_ang_V_w03_06_09 = ( 2+0.001)/ROC_V; + dx_v_w03_06_09 = 0; + dz_v_w03_06_09 = ROC_V * sin(curve_ang_V_w03_06_09); + dy_v_w03_06_09 = ROC_V * (1- cos(curve_ang_V_w03_06_09)); + curve_ang_H_w03_06_09 = ( 2+0.001)/ROC_H; + + curve_ang_V_w03_06_10 = ( 2+0.002)/ROC_V; + dx_v_w03_06_10 = 0; + dz_v_w03_06_10 = ROC_V * sin(curve_ang_V_w03_06_10); + dy_v_w03_06_10 = ROC_V * (1- cos(curve_ang_V_w03_06_10)); + curve_ang_H_w03_06_10 = ( 2+0.002)/ROC_H; + + + curve_ang_V_w03_06_11 = ( 2+0.001)/ROC_V; + dx_v_w03_06_11 = 0; + dz_v_w03_06_11 = ROC_V * sin(curve_ang_V_w03_06_11); + dy_v_w03_06_11 = ROC_V * (1- cos(curve_ang_V_w03_06_11)); + curve_ang_H_w03_06_11 = ( 2+0.001)/ROC_H; + + curve_ang_V_w03_06_12 = ( 2+0.002)/ROC_V; + dx_v_w03_06_12 = 0; + dz_v_w03_06_12 = ROC_V * sin(curve_ang_V_w03_06_12); + dy_v_w03_06_12 = ROC_V * (1- cos(curve_ang_V_w03_06_12)); + curve_ang_H_w03_06_12 = ( 2+0.002)/ROC_H; + + curve_ang_V_w03_06_13 = ( 2+0.001)/ROC_V; + dx_v_w03_06_13 = 0; + dz_v_w03_06_13 = ROC_V * sin(curve_ang_V_w03_06_13); + dy_v_w03_06_13 = ROC_V * (1- cos(curve_ang_V_w03_06_13)); + curve_ang_H_w03_06_13 = ( 2+0.001)/ROC_H; + + curve_ang_V_w03_06_14 = ( 2+0.001)/ROC_V; + dx_v_w03_06_14 = 0; + dz_v_w03_06_14 = ROC_V * sin(curve_ang_V_w03_06_14); + dy_v_w03_06_14 = ROC_V * (1- cos(curve_ang_V_w03_06_14)); + curve_ang_H_w03_06_14 = ( 2+0.001)/ROC_H; + + allocated = 0; + + #define N_trains INSTRUMENT_GETPAR(N_trains_par) + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); + +%} + + +TRACE + + /*------------------*/ + /* SOURCE */ + /*------------------*/ + + COMPONENT Origin = Arm() + AT (0, 0, 0) ABSOLUTE + EXTEND %{ + + if (allocated == 0) { + t_offset = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + p_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + adaptive_N=INSTRUMENT_GETPAR(N_trains_par); + total_arrived=0; + total_N_sent=0; + total_rays_sent=0; + allocated = 1; + } + %} + + + COMPONENT ESS_Source = ESS_butterfly(sector="W",beamline=3,Lmin=2,Lmax=20,dist=1.9,cold_frac=1.0, yheight=0.03,focus_xw=0.1, focus_yh=0.1,acc_power=AC_Power, target_tsplit=target_tsplit) + AT (0, 0, 0.0) RELATIVE ABSOLUTE + + COMPONENT Instrument_Direction = Arm() + AT (move_x,move_y,1.90424) RELATIVE ESS_Source + ROTATED (phi_x,phi_y,phi_z) RELATIVE ESS_Source + + /* COMPONENT Div_Mon_Source= Divergence_monitor(nh=20, nv=20, filename="Div_Mon_Source.pos",xwidth=0.04,yheight=0.02,maxdiv_h=2, maxdiv_v=2,restore_neutron=1) + AT (0,0,0) RELATIVE Instrument_Direction + ROTATED (0,0,0) RELATIVE Instrument_Direction*/ + + + COMPONENT Mon_LambdaX_In = Monitor_nD( + options="x , lambda limits=[1 25]", bins=100, + xwidth=1.1*0.07, yheight=1.1*0.055, restore_neutron=1) + AT ( 0 , 0 , 0 ) RELATIVE PREVIOUS + + COMPONENT Mon_LambdaY_In = Monitor_nD( + options="y , lambda limits=[1 25]", bins=100, + xwidth=1.1*0.07, yheight=1.1*0.055, restore_neutron=1) + AT ( 0 , 0 , 0 ) RELATIVE PREVIOUS + + COMPONENT Mon_LambdaDX_In = COPY(PREVIOUS) + (options="dx limits=[-6 6], lambda limits=[1 25]") + AT ( 0 , 0 , 0 ) RELATIVE PREVIOUS + + COMPONENT Mon_LambdaDY_In = COPY(PREVIOUS) + (options="dy limits=[-6 6], lambda limits=[1 25]") + AT ( 0 , 0 , 0 ) RELATIVE PREVIOUS + + COMPONENT Al_Window1=Al_window(thickness=0.0015) + AT (move_x,move_y,1.9025) RELATIVE ESS_Source + ROTATED (phi_x,phi_y,phi_z) RELATIVE ESS_Source + + + +COMPONENT Guide_benderw03_01_011 = Guide_gravity(R0 = R0_par,alpha = alpha_par, W = W_par, w1 = 0.045, h1 = 0.043, w2 =0.053, h2 = 0.047,l=0.4995, mtop=4,mbottom=3.5,mleft =3,mright=3.5) +AT (0,0,0) RELATIVE Instrument_Direction +COMPONENT Arm1a = Arm() + AT ( 0 , 0, 0.4995+1e-06) RELATIVE PREVIOUS + ROTATED (-0.009,-0.004,0) RELATIVE Instrument_Direction + COMPONENT Guide_benderw03_01_012 = Guide_gravity(R0 = R0_par,alpha = alpha_par, W = W_par, w1 = 0.053, h1 = 0.047, w2 =0.0617, h2 = 0.051,l=0.4995, mtop=4,mbottom=3.5,mleft =3,mright=3.5) +AT (0, 0, 1e-06) RELATIVE Arm1a + +COMPONENT Arm1b = Arm() +AT ( dx_v_w03_01_012 , -dy_v_w03_01_012 , dz_v_w03_01_012+1e-06) RELATIVE Guide_benderw03_01_012 +ROTATED (curve_ang_V_w03_01_012*RAD2DEG,curve_ang_H_w03_01_012*RAD2DEG , 0) RELATIVE PREVIOUS + +COMPONENT Guide_benderw03_01_02 = Guide_gravity(R0 = R0_par,alpha = alpha_par, W = W_par, w1 = 0.0617, h1 = 0.051, w2 =0.07, h2 = 0.055,l=0.999, mtop=4,mbottom=3.5,mleft =3,mright=3.5) +AT (0, 0, 1e-06) RELATIVE PREVIOUS +COMPONENT Armc = Arm() +AT ( dx_v_w03_01_02 , -dy_v_w03_01_02 , dz_v_w03_01_02+1e-06) RELATIVE Guide_benderw03_01_02 +ROTATED (curve_ang_V_w03_01_02*RAD2DEG,curve_ang_H_w03_01_02*RAD2DEG , 0) RELATIVE PREVIOUS + +/*COMPONENT Al_Window2=Al_window(thickness=0.002) + AT (0, 0, 1e-06) RELATIVE PREVIOUS*/ +COMPONENT Guide_benderw03_01_03 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.480, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) +AT ( 0 , 0 , 1e-06 ) RELATIVE PREVIOUS + + + + COMPONENT Arm2_GapBeforeBBG = Arm() + AT ( dx_v_w03_01_03 , -dy_v_w03_01_03 , dz_v_w03_01_03+1e-06) RELATIVE Guide_benderw03_01_03 + ROTATED (curve_ang_V_w03_01_03*RAD2DEG,curve_ang_H_w03_01_03*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT GuideBBG_benderw03_02_01 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=0.516, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm3_GapAfterBBG = Arm() + AT ( dx_v_w03_02_01 , -dy_v_w03_02_01 , dz_v_w03_02_01) RELATIVE GuideBBG_benderw03_02_01 + ROTATED (curve_ang_V_w03_02_01*RAD2DEG,curve_ang_H_w03_02_01*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_03_01 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.9462, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0.0 , 0.0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm4 = Arm() + AT ( dx_v_w03_03_01 , -dy_v_w03_03_01 , dz_v_w03_03_01) RELATIVE Guide_benderw03_03_01 + ROTATED (curve_ang_V_w03_03_01*RAD2DEG,curve_ang_H_w03_03_01*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_03_02 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.9462, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm5 = Arm() + AT ( dx_v_w03_03_02 , -dy_v_w03_03_02 , dz_v_w03_03_02) RELATIVE Guide_benderw03_03_02 + ROTATED (curve_ang_V_w03_03_02*RAD2DEG,curve_ang_H_w03_03_02*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_04_01 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.9462, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm6 = Arm() + AT ( dx_v_w03_04_01 , -dy_v_w03_04_01 , dz_v_w03_04_01) RELATIVE Guide_benderw03_04_01 + ROTATED (curve_ang_V_w03_04_01*RAD2DEG,curve_ang_H_w03_04_01*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_04_02 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.9462, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm7 = Arm() + AT ( dx_v_w03_04_02 , -dy_v_w03_04_02 , dz_v_w03_04_02) RELATIVE Guide_benderw03_04_02 + ROTATED (curve_ang_V_w03_04_02*RAD2DEG,curve_ang_H_w03_04_02*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_05_01 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.2, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + /************************************** BW 1 *******/ + /************************************** BW 1 *******/ + + COMPONENT BW_1 = DiskChopper( + theta_0 =theta_BW1, radius = 0.35, yheight = h1_in, nu=Freq_BW1, nslit = 1, + delay = BW1_Delay, verbose = 1) + AT ( dx_v_w03_05_01_a , -dy_v_w03_05_01_a , dz_v_w03_05_01_a) RELATIVE Guide_benderw03_05_01 + ROTATED (curve_ang_V_w03_05_01_a*RAD2DEG,curve_ang_H_w03_05_01_a*RAD2DEG , 0) RELATIVE Guide_benderw03_05_01 + + COMPONENT Lambda_BW1 = L_monitor( + nL = 1000, filename = "Lambda_BW1", Lmin=0.5, Lmax=100, + restore_neutron = 1) + AT (0, 0, 0.001) RELATIVE PREVIOUS + /************************************** BW 1 *******/ + /************************************** BW 1 *******/ + + COMPONENT Arm8 = Arm() + AT ( dx_v_w03_05_01 , -dy_v_w03_05_01 , dz_v_w03_05_01) RELATIVE Guide_benderw03_05_01 + ROTATED (curve_ang_V_w03_05_01*RAD2DEG,curve_ang_H_w03_05_01*RAD2DEG , 0) RELATIVE Guide_benderw03_05_01 + + COMPONENT Guide_benderw03_05_02 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=0.8, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm9 = Arm() + AT ( dx_v_w03_05_02 , -dy_v_w03_05_02 , dz_v_w03_05_02) RELATIVE Guide_benderw03_05_02 + ROTATED (curve_ang_V_w03_05_02*RAD2DEG,curve_ang_H_w03_05_02*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_05_03 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.9435, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm10 = Arm() + AT ( dx_v_w03_05_03 , -dy_v_w03_05_03 , dz_v_w03_05_03) RELATIVE Guide_benderw03_05_03 + ROTATED (curve_ang_V_w03_05_03*RAD2DEG,curve_ang_H_w03_05_03*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_05_04 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.9435, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm11 = Arm() + AT ( dx_v_w03_05_04 , -dy_v_w03_05_04 , dz_v_w03_05_04) RELATIVE Guide_benderw03_05_04 + ROTATED (curve_ang_V_w03_05_04*RAD2DEG,curve_ang_H_w03_05_04*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_05_05 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=0.8, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + /************************************** BW 2 *******/ + /************************************** BW 2 *******/ + + COMPONENT BW_2 = DiskChopper( + theta_0 =theta_BW2, radius = 0.35, yheight = h1_in, nu=Freq_BW2, nslit = 1, + delay = BW2_Delay, verbose = 1) + AT ( dx_v_w03_05_05_a , -dy_v_w03_05_05_a , dz_v_w03_05_05_a) RELATIVE Guide_benderw03_05_05 + ROTATED (curve_ang_V_w03_05_05_a*RAD2DEG,curve_ang_H_w03_05_05_a*RAD2DEG , 0) RELATIVE Guide_benderw03_05_05 + + COMPONENT Lambda_BW2 = L_monitor( + nL = 1000, filename = "Lambda_BW2", Lmin=0.5, Lmax=100, + restore_neutron = 1) + AT (0, 0, 0.001) RELATIVE PREVIOUS + /************************************** BW 2 *******/ + /************************************** BW 2 *******/ + + COMPONENT Arm12 = Arm() + AT ( dx_v_w03_05_05 , -dy_v_w03_05_05 , dz_v_w03_05_05) RELATIVE Guide_benderw03_05_05 + ROTATED (curve_ang_V_w03_05_05*RAD2DEG,curve_ang_H_w03_05_05*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_05_06 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=0.8, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm13 = Arm() + AT ( dx_v_w03_05_06 , -dy_v_w03_05_06 , dz_v_w03_05_06) RELATIVE Guide_benderw03_05_06 + ROTATED (curve_ang_V_w03_05_06*RAD2DEG,curve_ang_H_w03_05_06*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_05_07 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.453, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm14 = Arm() + AT ( dx_v_w03_05_07 , -dy_v_w03_05_07 , dz_v_w03_05_07) RELATIVE Guide_benderw03_05_07 + ROTATED (curve_ang_V_w03_05_07*RAD2DEG,curve_ang_H_w03_05_07*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_05_08 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.453, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm15 = Arm() + AT ( dx_v_w03_05_08 , -dy_v_w03_05_08 , dz_v_w03_05_08) RELATIVE Guide_benderw03_05_08 + ROTATED (curve_ang_V_w03_05_08*RAD2DEG,curve_ang_H_w03_05_08*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_05_09 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.040, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm16 = Arm() + AT ( dx_v_w03_05_09 , -dy_v_w03_05_09 , dz_v_w03_05_09) RELATIVE Guide_benderw03_05_09 + ROTATED (curve_ang_V_w03_05_09*RAD2DEG,curve_ang_H_w03_05_09*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_05_10 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.65, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm17 = Arm() + AT ( dx_v_w03_05_10 , -dy_v_w03_05_10 , dz_v_w03_05_10) RELATIVE Guide_benderw03_05_10 + ROTATED (curve_ang_V_w03_05_10*RAD2DEG,curve_ang_H_w03_05_10*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_06_011 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=0.4906, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm18 = Arm() + AT ( dx_v_w03_06_011 , -dy_v_w03_06_011 , dz_v_w03_06_011) RELATIVE Guide_benderw03_06_011 + ROTATED (curve_ang_V_w03_06_011*RAD2DEG,curve_ang_H_w03_06_011*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_012 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=1.982, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm19 = Arm() + AT ( dx_v_w03_06_012 , -dy_v_w03_06_012 , dz_v_w03_06_012) RELATIVE Guide_benderw03_06_012 + ROTATED (-curve_ang_V_w03_06_12*RAD2DEG,curve_ang_H_w03_06_12*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_06_02 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.5, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm20 = Arm() + AT ( dx_v_w03_06_02 , -dy_v_w03_06_02 , dz_v_w03_06_02) RELATIVE Guide_benderw03_06_02 + ROTATED (-curve_ang_V_w03_06_02*RAD2DEG,curve_ang_H_w03_06_02*RAD2DEG , 0) RELATIVE PREVIOUS + + COMPONENT Guide_benderw03_06_03 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 ,0.001 ) RELATIVE PREVIOUS + + COMPONENT Arm21 = Arm() + AT ( dx_v_w03_06_03 , -dy_v_w03_06_03 , dz_v_w03_06_03) RELATIVE Guide_benderw03_06_03 + ROTATED (-curve_ang_V_w03_06_02*RAD2DEG,curve_ang_H_w03_06_02*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_04 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm22 = Arm() + AT ( dx_v_w03_06_04 , -dy_v_w03_06_04 , dz_v_w03_06_04) RELATIVE Guide_benderw03_06_04 + ROTATED (-curve_ang_V_w03_06_04*RAD2DEG,curve_ang_H_w03_06_04*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_05 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm23 = Arm() + AT ( dx_v_w03_06_05 , -dy_v_w03_06_05 , dz_v_w03_06_05) RELATIVE Guide_benderw03_06_05 + ROTATED (-curve_ang_V_w03_06_05*RAD2DEG,curve_ang_H_w03_06_05*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_06 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm24 = Arm() + AT ( dx_v_w03_06_06 , -dy_v_w03_06_06 , dz_v_w03_06_06) RELATIVE Guide_benderw03_06_06 + ROTATED (-curve_ang_V_w03_06_06*RAD2DEG,curve_ang_H_w03_06_06*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_07 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm25 = Arm() + AT ( dx_v_w03_06_07 , -dy_v_w03_06_07 , dz_v_w03_06_07) RELATIVE Guide_benderw03_06_07 + ROTATED (-curve_ang_V_w03_06_07*RAD2DEG,curve_ang_H_w03_06_07*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_08 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm26 = Arm() + AT ( dx_v_w03_06_08 , -dy_v_w03_06_08 , dz_v_w03_06_08) RELATIVE Guide_benderw03_06_08 + ROTATED (-curve_ang_V_w03_06_08*RAD2DEG,curve_ang_H_w03_06_08*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_09 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm27 = Arm() + AT ( dx_v_w03_06_09 , -dy_v_w03_06_09 , dz_v_w03_06_09) RELATIVE Guide_benderw03_06_09 + ROTATED (-curve_ang_V_w03_06_09*RAD2DEG,curve_ang_H_w03_06_09*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_10 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm28 = Arm() + AT ( dx_v_w03_06_10 , -dy_v_w03_06_10 , dz_v_w03_06_10) RELATIVE Guide_benderw03_06_10 + ROTATED (-curve_ang_V_w03_06_10*RAD2DEG,curve_ang_H_w03_06_10*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_11 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm29 = Arm() + AT ( dx_v_w03_06_11 , -dy_v_w03_06_11 , dz_v_w03_06_11) RELATIVE Guide_benderw03_06_11 + ROTATED (-curve_ang_V_w03_06_11*RAD2DEG,curve_ang_H_w03_06_11*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_12 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm30 = Arm() + AT ( dx_v_w03_06_12 , -dy_v_w03_06_12 , dz_v_w03_06_12) RELATIVE Guide_benderw03_06_12 + ROTATED (-curve_ang_V_w03_06_12*RAD2DEG,curve_ang_H_w03_06_12*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Guide_benderw03_06_13 = Vertical_Bender ( + radius = -ROC_V, xwidth=0.07, yheight=0.055, length=2.0, + nchan = 1, d=0, diststep1=0.020, diststep2=0.002, + rTopPar={0.99, 0.0219, 6.07, 3.0, 0.001}, + rBottomPar={0.99, 0.0219, 6.07, 3.5, 0.001}, + rSidesPar={0.99, 0.0219, 6.07, 3.0, 0.001}) + AT ( 0 , 0 , 1e-6 ) RELATIVE PREVIOUS + + COMPONENT Arm31 = Arm() + AT (dx_v_w03_06_13 , -dy_v_w03_06_13 , dz_v_w03_06_13) RELATIVE Guide_benderw03_06_13 + ROTATED (-curve_ang_V_w03_06_13*RAD2DEG,curve_ang_H_w03_06_13*RAD2DEG , 0) RELATIVE PREVIOUS + + + /***********************************************************************************/ + /***********************************************************************************/ + /***********************************************************************************/ + /***********************************************************************************/ + + COMPONENT Guide_w03_06_14 = Guide_gravity(w1=0.07, w2=0.08411, h1 = 0.055, h2 = 0.06837, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0,0,1e-06) RELATIVE PREVIOUS + ROTATED (curve_ang_V_w03_06_14*RAD2DEG*0.135,curve_ang_H_w03_06_14*RAD2DEG , 0) RELATIVE PREVIOUS + + + COMPONENT Arm32 = Arm() + AT (0 , 0 , 2+0.002) RELATIVE Guide_w03_06_14 + + COMPONENT Guide_w03_06_15 = Guide_gravity(w1=0.08412, w2=0.09663, h1 = 0.06838, h2 = 0.08073, l=2.4, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm33 = Arm() + AT (0 , 0 , 2.4+0.001) RELATIVE Guide_w03_06_15 + + + COMPONENT Guide_w03_06_16 = Guide_gravity(w1=0.09664, w2=0.10594, h1 = 0.08073, h2 = 0.0906, l=2.4, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm34 = Arm() + AT (0 , 0 , 2.4+0.002) RELATIVE Guide_w03_06_16 + + COMPONENT Guide_w03_06_17 = Guide_gravity(w1=0.10594, w2=0.11077, h1 = 0.09061, h2 = 0.09620, l=1.6, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm35 = Arm() + AT (0 , 0 , 1.6+0.001) RELATIVE Guide_w03_06_17 + + COMPONENT Guide_w03_06_18 = Guide_gravity(w1=0.11077, w2=0.11466, h1 = 0.0962, h2 = 0.10115, l=1.6, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm36 = Arm() + AT (0 , 0 , 1.6+0.002) RELATIVE Guide_w03_06_18 + + COMPONENT Guide_w03_06_19 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.10116, h2 = 0.10658, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm37 = Arm() + AT (0 , 0 , 2.0+0.001) RELATIVE Guide_w03_06_19 + + + COMPONENT Guide_w03_06_20 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.10659, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm38 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_20 + + COMPONENT Guide_w03_06_21 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm39 = Arm() + AT (0 , 0 , 2.0+0.001) RELATIVE Guide_w03_06_21 + + COMPONENT Guide_w03_06_22 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm40 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_22 + + COMPONENT Guide_w03_06_23 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm41 = Arm() + AT (0 , 0 , 2.0+0.001) RELATIVE Guide_w03_06_23 + + COMPONENT Guide_w03_06_24 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm42 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_24 + + COMPONENT Guide_w03_06_25 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm43 = Arm() + AT (0 , 0 , 2.0+0.001) RELATIVE Guide_w03_06_25 + + COMPONENT Guide_w03_06_26 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm44 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_26 + + COMPONENT Guide_w03_06_27 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm45 = Arm() + AT (0 , 0 , 2.0+0.001) RELATIVE Guide_w03_06_27 + + COMPONENT Guide_w03_06_28 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm46 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_28 + + COMPONENT Guide_w03_06_29 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm47 = Arm() + AT (0 , 0 , 2.0+0.001) RELATIVE Guide_w03_06_29 + + COMPONENT Guide_w03_06_30 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm48 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_30 + + COMPONENT Guide_w03_06_31 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm49 = Arm() + AT (0 , 0 , 2.0+0.001) RELATIVE Guide_w03_06_31 + + COMPONENT Guide_w03_06_32 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm50 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_32 + + COMPONENT Guide_w03_06_331 = Guide_gravity(w1=0.11466, w2=0.11466, h1 = 0.11128, h2 = 0.11128, l=1.0624, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2, mbottom=2, mleft=2, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm51 = Arm() + AT (0 , 0 , 1.0624+1e-06) RELATIVE Guide_w03_06_331 + + COMPONENT Guide_w03_06_332 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.11128, h2 = 0.10915, l=0.9376, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm52 = Arm() + AT (0 , 0 , 0.9376+0.001) RELATIVE Guide_w03_06_332 + + COMPONENT Guide_w03_06_34 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.10915, h2 = 0.10412, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm53 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_34 + + COMPONENT Guide_w03_06_35 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.10412, h2 = 0.09830, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm54 = Arm() + AT (0 , 0 , 2.0+0.001) RELATIVE Guide_w03_06_35 + + COMPONENT Guide_w03_06_36 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.09830, h2 = 0.09155, l=2.0, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm55 = Arm() + AT (0 , 0 , 2.0+0.002) RELATIVE Guide_w03_06_36 + + COMPONENT Guide_w03_06_37 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.09155, h2 = 0.08521, l=1.6269, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm56 = Arm() + AT (0 , 0 ,1.6269+0.001) RELATIVE Guide_w03_06_37 + + + COMPONENT Guide_w03_06_38 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.08521, h2 = 0.07792, l=1.6269, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm57 = Arm() + AT (0 , 0 ,1.6269+0.002) RELATIVE Guide_w03_06_38 + + COMPONENT Guide_w03_06_39 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.07792, h2 = 0.07390, l=0.8, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + + + /************************************** BW 3 *******/ + /************************************** BW 3 *******/ + + COMPONENT BW_3 = DiskChopper( + theta_0 =theta_BW3, radius = 0.35, yheight = 0.07390, nu=Freq_BW3, nslit = 1, + delay = BW3_Delay, verbose = 1) + AT (0 , 0 ,0.8+0.015) RELATIVE Guide_w03_06_39 + + COMPONENT Lambda_BW3 = L_monitor( + nL = 1000, filename = "Lambda_BW3", Lmin=0.5, Lmax=100, + restore_neutron = 1) + AT (0, 0, 0.001) RELATIVE PREVIOUS + /************************************** BW 3 *******/ + /************************************** BW 3 *******/ + + + + COMPONENT Arm58 = Arm() + AT (0 , 0 ,0.8+0.03) RELATIVE Guide_w03_06_39 + + COMPONENT Guide_w03_06_40 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.07389, h2 = 0.07389, l=0.5, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.0, mright=2.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm59 = Arm() + AT (0 , 0, 0.5+0.01) RELATIVE Guide_w03_06_40 + + + COMPONENT Guide_w03_07_01 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.07389, h2 = 0.07389, l=0.5001+0.1, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + + + /***********************************************************************************PS CHOPPER GAP SEE EXTRA 0.1 FOR EXTRA GUIDE PIECE */ + /***********************************************************************************/ + + + COMPONENT PS1 = DiskChopper( + theta_0 =theta_PS, radius = 0.35, yheight = 0.07389, nu=Freq_PS, nslit = 3, + delay = PS1_Delay, verbose = 1) + AT (0,0,0.5001+0.1+0.02) RELATIVE Guide_w03_07_01 + + COMPONENT TOF_PS = TOF_monitor( + nt = 1000, filename = "TOF_PS", tmin=252.78*(lambda_min-1)*Distance_PS1, tmax=252.78*(lambda_min+1)*Distance_PS1, + restore_neutron = 1) + AT (0, 0, 0.000000001) RELATIVE PREVIOUS + + COMPONENT PS2 = DiskChopper( + theta_0 =theta_PS, radius = 0.35, yheight = 0.07389, nu=-Freq_PS, nslit = 3, + delay = PS2_Delay, verbose = 1) + AT (0,0,0.006) RELATIVE PREVIOUS + + + COMPONENT Lambda_PS = L_monitor( + nL = 1000, filename = "Lambda_PS", Lmin=lambda_min-0.8, Lmax=lambda_min+0.8, + restore_neutron = 1) + AT (0, 0, 0.001) RELATIVE PREVIOUS + + + COMPONENT Arm60 = Arm() + AT (0 , 0, 0.5001+0.1+0.1165) RELATIVE Guide_w03_07_01 + + /***********************************************************************************/ + COMPONENT Guide_w03_08_01 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.07389, h2 = 0.07389, l=2.5, + R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.0, mright=2.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm61 = Arm() + AT (0 , 0, 2.5+0.001) RELATIVE Guide_w03_08_01 + + + COMPONENT Guide_w03_08_02 = Guide_gravity(w1=0.11466, w2=0.11466, h1 =0.07389, h2 = 0.07389, l=2.5, R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.0, mright=2.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm62 = Arm() + AT (0 , 0, 2.5+0.002) RELATIVE Guide_w03_08_02 + + COMPONENT Guide_w03_08_03 = Guide_gravity(w1=0.11466, w2=0.11436, h1 =0.07389, h2 = 0.07389, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.0, mbottom=3.0, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm63 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_03 + + COMPONENT Guide_w03_08_04 = Guide_gravity(w1=0.11436, w2=0.11407, h1 =0.07389, h2 = 0.07389, l=2.0,R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.0, mbottom=3.0, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm64 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_04 + + COMPONENT Guide_w03_08_05 = Guide_gravity(w1=0.11407, w2=0.11359, h1 =0.07389, h2 = 0.07389, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.0, mbottom=3.0, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm65 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_05 + + COMPONENT Guide_w03_08_06 = Guide_gravity(w1=0.11359, w2=0.11290, h1 =0.07389, h2 = 0.07389, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.0, mbottom=3.0, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm66 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_06 + + COMPONENT Guide_w03_08_07 = Guide_gravity(w1=0.1129, w2=0.11202, h1 =0.07389, h2 = 0.07389, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.0, mbottom=3.0, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm67 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_07 + + COMPONENT Guide_w03_08_08 = Guide_gravity(w1=0.11202, w2=0.11092, h1 =0.07389, h2 = 0.07389, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.0, mbottom=3.0, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm68 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_08 + + COMPONENT Guide_w03_08_09 = Guide_gravity(w1=0.11096, w2=0.10962, h1 =0.07389, h2 = 0.07389, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.0, mbottom=3.0, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm69 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_09 + + COMPONENT Guide_w03_08_10 = Guide_gravity(w1=0.10962, w2=0.10809, h1 =0.07389, h2 = 0.07382, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm70 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_10 + + COMPONENT Guide_w03_08_11 = Guide_gravity(w1=0.10809, w2=0.10633, h1 =0.07382, h2 = 0.07360, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.0, mbottom=3.0, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm71 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_11 + + COMPONENT Guide_w03_08_12 = Guide_gravity(w1=0.10633, w2=0.10434, h1 =0.0736, h2 = 0.07323, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=2.0, mright=2, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm72 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_12 + + COMPONENT Guide_w03_08_13 = Guide_gravity(w1=0.10433, w2=0.10208, h1 =0.07323, h2 = 0.07271, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=2.0, mright=2.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm73 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_13 + + COMPONENT Guide_w03_08_14 = Guide_gravity(w1=0.10208, w2=0.09956, h1 =0.07271, h2 = 0.07204, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.0, mright=2.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm74 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_14 + + COMPONENT Guide_w03_08_15 = Guide_gravity(w1=0.09955, w2=0.09673, h1 =0.07204, h2 = 0.07121, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=2.5, mbottom=2.5, mleft=2.0, mright=2.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm75 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_15 + + COMPONENT Guide_w03_08_16 = Guide_gravity(w1=0.09673, w2=0.09359, h1 =0.07121, h2 = 0.07022, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm76 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_16 + + COMPONENT Guide_w03_08_17 = Guide_gravity(w1=0.09359, w2=0.09009, h1 =0.07022, h2 = 0.06906, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm77 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_17 + + COMPONENT Guide_w03_08_18 = Guide_gravity(w1=0.09009, w2=0.08620, h1 =0.06906, h2 = 0.06772, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=2.5, mright=2.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm78 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_18 + + COMPONENT Guide_w03_08_19 = Guide_gravity(w1=0.08620, w2=0.08185, h1 =0.06772, h2 = 0.06619, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.0, mright=3.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm79 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_19 + + COMPONENT Guide_w03_08_20 = Guide_gravity(w1=0.08185, w2=0.07697, h1 =0.06619, h2 = 0.06446, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.0, mright=3.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm80 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_20 + + COMPONENT Guide_w03_08_21 = Guide_gravity(w1=0.07696, w2=0.07144, h1 =0.06446, h2 = 0.06250, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.0, mright=3.0, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm81 =Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_21 + + COMPONENT Guide_w03_08_22 = Guide_gravity(w1=0.07144, w2=0.06512, h1 =0.06250, h2 = 0.06031, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.5, mright=3.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm82 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_22 + + COMPONENT Guide_w03_08_23 = Guide_gravity(w1=0.06511, w2=0.05772, h1 =0.06031, h2 = 0.05784, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.5, mright=3.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm83 = Arm() + AT (0 , 0, 2.0+0.001) RELATIVE Guide_w03_08_23 + + COMPONENT Guide_w03_08_24 = Guide_gravity(w1=0.05772, w2=0.04878, h1 =0.05784, h2 = 0.05507, l=2.0, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.5, mright=3.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm84 = Arm() + AT (0 , 0, 2.0+0.002) RELATIVE Guide_w03_08_24 + + COMPONENT Guide_w03_08_25 = Guide_gravity(w1=0.04877, w2=0.03988, h1 =0.05507, h2 = 0.05262, l=1.5894, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.5, mright=3.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm85 = Arm() + AT (0 , 0, 1.5894+0.001) RELATIVE Guide_w03_08_25 + + COMPONENT Guide_w03_08_26 = Guide_gravity(w1=0.03988, w2=0.02782, h1 =0.05262, h2 = 0.04991, l=1.5894, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.5, mright=3.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + COMPONENT Arm86 = Arm() + AT (0 , 0, 1.5894+0.003) RELATIVE Guide_w03_08_26 + + COMPONENT Guide_w03_09_01 = Guide_gravity(w1=0.02779, w2=0.02258, h1 =0.04991, h2 = 0.04900, l=0.6-0.1, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.5, mright=3.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + + + COMPONENT Arm87_WindowPreMChopper = Arm() + AT (0 , 0, 0.51+1e-6) RELATIVE Guide_w03_09_01 + + + + /***********************************************************************************end of guide before M chopper*/ + /***********************************************************************************/ + + /***********************************************************************************M CHOPPER GAP NOTE REMOVAL OF 0.1 M ON LAST GUIDE PIECE*/ + /***********************************************************************************/ + + + COMPONENT M1 = DiskChopper( + theta_0 =theta_M, radius = 0.35, yheight = 0.04900, nu=Freq_M, nslit = 1, + delay = M1_Delay, verbose = 1) + AT (0,0,0.02) RELATIVE Arm87_WindowPreMChopper + + COMPONENT TOF_M = TOF_monitor( + nt = 1000, filename = "TOF_M", tmin=252.78*(lambda_min-0.2)*Distance_M1, tmax=252.78*(lambda_min+0.2)*Distance_M1, + restore_neutron = 1) + AT (0, 0, 0.000000001) RELATIVE PREVIOUS + + COMPONENT M2 = DiskChopper( + theta_0 =theta_M, radius = 0.35, yheight = 0.04900, nu=-Freq_M, nslit = 1, + delay = M2_Delay, verbose = 1) + AT (0,0,0.006) RELATIVE PREVIOUS + + + COMPONENT Lambda_M = L_monitor( + nL = 1000, filename = "Lambda_M", Lmin=lambda_min-0.8, Lmax=lambda_min+0.8, + restore_neutron = 1) + AT (0, 0, 0.001) RELATIVE PREVIOUS + + + + + + + /***********************************************************************************start of guide after M chopper*/ + + + COMPONENT Arm88_WindowPostMChopper = Arm() + AT (0,0, dist_m) RELATIVE Arm87_WindowPreMChopper + + COMPONENT Arm89_Windows_Monitor = Arm() + + AT (0,0,0.0001) RELATIVE PREVIOUS + + + /***********************************************************************************/ + /***********************************************************************************/ + /***********************************************************************************/ + /***********************************************************************************/ + + COMPONENT Guide_final_straight = Guide_gravity(w1=0.02258, w2=0.02258, h1 =0.049, h2 = 0.049, l=0.30, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.5, mright=3.5, W=0.003) + AT (0, 0, 1e-06) RELATIVE PREVIOUS + + + COMPONENT Arm91_Windows_Monitor = Arm() + + AT (0,0,0.3+0.03) RELATIVE PREVIOUS + + + COMPONENT Guide_Final = Guide_gravity(w1=0.02258, w2=0.0203, h1 =0.0490, h2 = 0.0450, + l=0.914, R0=0.99, Qc=0.0219, alpha=6.07, mtop=3.5, mbottom=3.5, mleft=3.5, mright=3.5, W=0.003) + AT (0.0,0.0,1e-06) RELATIVE Arm91_Windows_Monitor + + + /* COMPONENT Guide_final1 = Elliptic_guide_gravity(l=0.914, linxw=250,linyh=0.14+0.914,loutxw=1.0,loutyh=0.14, + xwidth=0.02258,yheight=0.049, R0=0.99,Qc=0.022519,alpha=6.07,mright=4,mleft=4,mtop=5.5, mbottom=5.5 ,W=0.003) + AT (0.0, 0.0,0.00001) RELATIVE Arm91_Windows_Monitor */ + + + + + COMPONENT EndOfGuide = Arm() + AT (0,0, 0.914+0.0001) RELATIVE PREVIOUS + + COMPONENT Arm_Sample = Arm() + AT (0,0, 0.2) RELATIVE EndOfGuide + + /* COMPONENT End_Guide_Slit = Slit( + xwidth = Slit_Width, yheight = Slit_Height) + AT (0,0,1e-06) RELATIVE Arm_Sample*/ + + COMPONENT PSD_Out=PSD_monitor(xmin=-0.01, xmax=0.01, ymin=-0.03, ymax=0.03,nx=110, ny=110, filename="PSD_AtSample.psd") + AT (0,0,1e-06) RELATIVE Arm_Sample + + COMPONENT Lambda_Sample = L_monitor( + nL = 1000, filename = "Lambda_Sample", Lmin=lambda_min-1.2, Lmax=lambda_min+1.2, + restore_neutron = 1) + AT (0, 0, 0.000000001) RELATIVE PREVIOUS + + + COMPONENT PSD_Out_small=PSD_monitor(xmin=-0.005, xmax=0.005, ymin=-0.005, ymax=0.005,nx=110, ny=110, filename="PSD_AtSample_small.psd") + AT (0,0,1e-06) RELATIVE PREVIOUS + + COMPONENT PSD_Out_bck=PSD_monitor(xmin=-0.01, xmax=-0.005, ymin=0.005, ymax=0.01,nx=110, ny=110, filename="PSD_AtSample_bck.psd") + AT (0,0,1e-06) RELATIVE PREVIOUS + + COMPONENT Div_Mon_Sample= Divergence_monitor(nh=50, nv=50, filename="Div_Mon_Sample.pos",xwidth=0.1,yheight=0.1,maxdiv_h=5, maxdiv_v=5,restore_neutron=1) + AT (0,0,1e-06) RELATIVE PREVIOUS + + + COMPONENT Hdiv_lambda_end = Monitor_nD(xmin=-0.05, xmax=0.05, ymin=-0.05, ymax=0.05, + filename="Hdivx_lambda_end.dat", + options= "lambda bins=19 limits=[2 20]; hdiv bins=80 limits[-4.0 4.0]") + AT (0,0,0.00000001) RELATIVE PREVIOUS + + + COMPONENT Vdiv_lambda_end = Monitor_nD(xmin=-0.05, xmax=0.05, ymin=-0.05, ymax=0.05, + filename="Vdivy_lambda_end.dat", + options= " lambda bins=19 limits=[2 20] ; vdiv bins=80 limits[-4.0 4.0] ") + AT (0,0,0.00000001) RELATIVE PREVIOUS + + + + + COMPONENT HPSD_lambda_end = Monitor_nD(xmin=-0.05, xmax=0.05, ymin=-0.05, ymax=0.05, + filename="height_lambda_end.dat", + options= " lambda bins=19 limits=[2 20] ; y bins=80 limits[-4.0 4.0] ") + AT (0,0,0.00000001) RELATIVE PREVIOUS + + COMPONENT WPSD_lambda_end = Monitor_nD(xmin=-0.05, xmax=0.05, ymin=-0.05, ymax=0.05, + filename="width_lambda_end.dat", + options= " lambda bins=19 limits=[2 20] ; x bins=80 limits[-4.0 4.0] ") + AT (0,0,0.00000001) RELATIVE PREVIOUS + + + + COMPONENT Lambda_Sample_Single = L_monitor( + nL = 1000, filename = "Lambda_Sample_Single", Lmin=lambda_min-0.1, Lmax=lambda_min+0.1, + restore_neutron = 1) + AT (0, 0, 0.00000001) RELATIVE PREVIOUS + + COMPONENT TOF_Sample = TOF_monitor( + nt = 1000, filename = "TOF_Sample", tmin=252.78*(lambda_min)*(160.0514)-0.5*1e6/Freq_M, tmax=252.78*(lambda_min)*(160.0514)+0.5*1e6/Freq_M, + restore_neutron = 1) + AT (0, 0, 0.00000001) RELATIVE PREVIOUS + + COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 500 limits [0, 0.4]", + tsplit=1, adaptive_target=1) + AT (0, 0, 0.00000001) RELATIVE PREVIOUS + + COMPONENT TOF_Sample_AllLambda = TOF_monitor( + nt = 5000, filename = "TOF_Sample_AllLambda", tmin=252.78*(lambda_min-1.5)*(160.0514), tmax=252.78*(lambda_min+1.5)*(160.0514), + restore_neutron = 1) + AT (0, 0, 0.00000001) RELATIVE PREVIOUS + + COMPONENT TOF_Sample_AllLambda_zoom = TOF_monitor( + nt = 200, filename = "TOF_Sample_AllLambda_zoom", tmin=110600, tmax=111000, + restore_neutron = 1) + AT (0, 0, 0.00000001) RELATIVE PREVIOUS + + + COMPONENT Sample= Incoherent(radius=0.02,focus_r=0.02, pack=1, target_index=1) + AT (0, 0, 0.00000001) RELATIVE PREVIOUS + + + COMPONENT TOF_Detector = TOF_monitor( + nt = 1000, filename = "TOF_Detector", tmin=252.78*(lambda_min)*(163.5)-0.5*1e6/Freq_M, tmax=252.78*(lambda_min)*(163.5)+0.5*1e6/Freq_M, + restore_neutron = 1) + AT (0, 0, 3.5) RELATIVE PREVIOUS + + + + COMPONENT det_NDmonitor = Monitor_nD(xmin=-0.1, xmax=0.1, ymin=-0.1, ymax=0.1, + filename="det_NDmonitor.dat", + options= "x bins=100 ybins=100") + AT (0,0,0.00000001) RELATIVE PREVIOUS + + + + SAVE + %{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); + %} + + + FINALLY + %{ + if (allocated == 1) { + free(_particle->t_offset); + free(_particle->p_trains); + } + %} + + +END \ No newline at end of file diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/DiskChopper.comp new file mode 100644 index 0000000000..57bf394ec8 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/DiskChopper.comp @@ -0,0 +1,206 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: DiskChopper +* +* %I +* Written by: Peter Willendrup +* Date: March 9 2006 +* Origin: Risoe +* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disc chopper with nslit identical slits, which are symmetrically distributed +* on the disc. At time t=0, the centre of the first slit opening will be situated at the +* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. +* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z +* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see +* related bug on GitHub) +* +* For more complicated gemometries, see component manual example of DiskChopper GROUPing. +* +* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. +* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the +* chopper timing and phasing (thus conserving your simulated statistics). +* +* The isfirst parameter is ONLY relevant for use in continuous source settings. +* +* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper +* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) +* +* NOTA BENE wrt. GROUPing and isfirst: +* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need +* to set up +* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening +* that spans the full angular extent of the openings of the subsequent GROUP +* 2) Add your DiskChopper GROUP setting isfirst=0 +* +* %P +* INPUT PARAMETERS: +* +* theta_0: [deg] Angular width of the slits. +* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. +* radius: [m] Radius of the disc +* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) +* nslit: [1] Number of slits, regularly arranged around the disk +* +* Optional parameters: +* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) +* n_pulse: [1] Number of pulses (Only if isfirst) +* jitter: [s] Jitter in the time phase +* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? +* delay: [s] Time 'delay' +* phase: [deg] Angular 'delay' (overrides delay) +* xwidth: [m] Horizontal slit width opening at beam center +* verbose: [1] Set to 1 to display Disk chopper configuration +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT DiskChopper + + + +SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +DECLARE +%{ + double Tg; + double To; + double delta_y; + double height; + double omega; +%} + +INITIALIZE +%{ + /* If slit height 'unset', assume full opening */ + if (yheight == 0) { + height = radius; + } else { + height = yheight; + } + delta_y = radius - height / 2; /* radius at beam center */ + omega = 2.0 * PI * nu; /* rad/s */ + if (xwidth && !theta_0 && radius) + theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); + + if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { + fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); + exit (-1); + } + if (nslit * theta_0 >= 360) { + fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); + exit (-1); + } + if (yheight && yheight > radius) { + fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); + exit (-1); + } + if (isfirst && n_pulse <= 0) { + fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); + exit (-1); + } + if (!omega) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + if (!abs_out) { + fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); + } + + theta_0 *= DEG2RAD; + + /* Calulate delay from phase and vice versa */ + if (phase) { + if (delay) { + fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); + } + phase *= DEG2RAD; + /* 'Delay' should always be a delay, taking rotation direction into account: */ + delay = phase / fabs (omega); + } else { + phase = delay * omega; /* rad */ + } + + /* Time from opening of slit to next opening of slit */ + Tg = 2.0 * PI / fabs (omega) / nslit; + + /* How long can neutrons pass the Chopper at a single point */ + To = theta_0 / fabs (omega); + + if (!xwidth) + xwidth = 2 * delta_y * sin (theta_0 / 2); + + if (verbose && nu) { + printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); + printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); + } +%} + +TRACE +%{ + double toff; + double yprime; + PROP_Z0; + yprime = y + delta_y; + + /* Is neutron outside the vertical slit range and should we absorb? */ + if (abs_out && (x * x + yprime * yprime) > radius * radius) { + ABSORB; + } + /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ + if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { + ABSORB; + } + + if (isfirst) { + /* all events are put in the transmitted time frame */ + t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); + /* correction: chopper slits transmission opening/full disk */ + p *= nslit * theta_0 / 2.0 / PI; + } else { + + double jitter_value = (jitter ? jitter * randnorm () : 0); + TRAIN_GATE( + toff = fabs (t - atan2 (x, yprime) / omega - delay - jitter_value); + if (fmod (toff + To / 2.0, Tg) > To) { + T_ABSORB(); + } + ); + + } + SCATTER; +%} + +MCDISPLAY +%{ + + int j; + /* Arrays for storing geometry of slit/beamstop */ + + circle ("xy", 0, -delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslit; j++) { + /* Angular start/end of slit */ + double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; + double tmax = tmin + theta_0; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); + line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, + 0); + line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ESS_butterfly-lib.c new file mode 100644 index 0000000000..e100c9f9a4 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ESS_butterfly-lib.c @@ -0,0 +1,402 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2013, All rights reserved +* DTU Physics, Lyngby, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Library: share/ESS_butterfly-lib.c +* +* %Identification +* Written by: PW +* Date: Nov 7, 2013 +* Origin: DTU Physics +* Release: McStas 2.1 +* Version: 0.1 +* +* This file is to be imported by the ESS_moderator_long component +* It defines a set of brilliance definitions (used via function pointer) for +* easier use of the component. +* +* Usage: within SHARE +* %include "ESS_butterfly-lib" +* +*******************************************************************************/ + +#ifndef ESS_BUTTERFLY_LIB_H +#error McStas : please import this library with %include "ESS_butterfly-lib" +#endif + +#ifdef OPENACC +#define exit(...) noprintf() +#endif + +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ + if(lambda<=0)return 0; + double par0=8.44e13/25.; + double par1=2.5; + double par2=2.2; + + double par3=-13.-.5*(theta-5); + double par4=2.53; + double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); + + double par6; + if(theta==5)par6=5.73745e+015/25.; + else if(theta==15)par6=5.88284e+015/25.; + else if(theta==25)par6=6.09573e+015/25.; + else if(theta==35)par6=6.29116e+015/25.; + else if(theta==45)par6=6.03436e+015/25.; + else if(theta==55)par6=6.02045e+015/25.; + double par7=0.788956+0.00854184*(theta-5.)/10.; + double par8=0.0461868-0.0016464*(theta-5.)/10.; + double par9=0.325; + + double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); + double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); + return para_part+SD_part; + +} +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ + if(lambda<=0)return 0; + double i=(theta-5.)/10.; + double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; + double par2=6.24806e+012-8.84602e+010*i; + double par3=-0.31107+0.0221138*i; + double aOlsqr=949./(325*lambda*lambda); + return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); + +} + + +/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ + + double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); + if(y0 < -height/2. || y0 > height/2. )return 0; + double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); + double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); + double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; + return tmp; +} /* end of ESS_2014_Schoenfeldt_cold_y0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ + double normalization=1; + if(x0<-width||x0>width)return 0; + return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); +} /* end of ESS_2014_Schoenfeldt_cold_x0 */ + +/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ + +double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ + // Kept for reference only... + /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; + long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); + if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope + return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity + *(0.84199+0.00307022*height) // asumetry + *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope +} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_t == 0.03) || (height_t == 0.06)) { + *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (6.2e14/9.0e14); + *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); + } +} /* end of ESS_2015_Schoenfeldt_thermal */ + +/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} + + +/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ +/* Parametrization including moderator height for the "pancake" moderator */ +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + if ((height_c == 0.03) || (height_c == 0.06)) { + *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); + } else { + printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); + exit(-1); + } + + if (height_c == 0.03) { + // 3cm case + *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } else { + // 6cm case + // Downscale brightness by factor from + // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 + *p *= (10.1e14/16.0e14); + *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); + } +} /* end of ESS_2015_Schoenfeldt_cold */ + +#pragma acc routine seq +void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) +{ + /* Troels Schoenfeldt function for timestructure */ + *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); +} /* end of ESS_2015_Schoenfeldt_cold */ + + +/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_y0(double y0){ + double par3=30; + double par4=.35; + double cosh_ish=exp(-par4*y0)+exp(par4*y0); + double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); + return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); + +} /* end of ESS_2015_Schoenfeldt_cold_y0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_y0(double y0){ + if(y0<-3./2.+0.105){ + return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); + } else if(y0>3./2.-0.105){ + return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); + } + return 1.005; +} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ + +/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ + // GEOMETRY / SAMPLING SPACE + double i=(theta-5.)/10.; + double par0=0.0146115+0.00797729*i-0.00279541*i*i; + double par1=0.980886; + if(i==1)par1=0.974217; + if(i==2)par1=0.981462; + if(i==3)par1=1.01466; + if(i==4)par1=1.11707; + if(i==5)par1=1.16057; + + double par2=-4-.75*i; + if(i==0)par2=-20; + double par3=-14.9402-0.178369*i+0.0367007*i*i; + if(i==0)par3*=0.95; + double par4=-15; + if(i==3)par4=-3.5; + if(i==5)par4=-1.9; + double par5=-7.07979+0.0835695*i-0.0546662*i*i; + if(i==5)par5*=0.85; + + //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); + //if(i==4) width=width+0.3; + //if(i==5) width=width-0.7; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par5-par3)/width; + //printf("Cold x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); + + /* if (x0<=par5 && x0>=par3) */ + /* return 1; */ + /* else */ + /* return 0; */ + + + double line=par0*(x0+12)+par1; + double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); + + return line*CutLeftCutRight; +} /* end of ESS_2015_Schoenfeldt_cold_x0 */ + +/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ + double i=(theta-5.)/10.; + double par0=-5.54775+0.492804*i; + double par1=-0.265929-0.711477*i; + if(theta==55)par1=-2.55; + + double par2=0.821885+0.00914832*i; + double par3=1.31108-0.00698647*i; + if(theta==55)par3=1.23; + double par4=-.035; + double par5=-0.0817358+0.00807125*i; + + double par6=-8; + double par7=-7.15; + if(theta==45)par7=-8.2; + if(theta==55)par7=-7.7; + + double par8=-8; + double par9=7.15; + if(theta==45)par9=7.5; + if(theta==55)par9=8.2; + + /* Rescaling to achieve a BF1 model */ + double tmp=(par9-par7)/width; + //printf("Thermal x0 in BF1 units: %g,",x0); + x0=x0*tmp-7.16; + //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); + + /* if (x0<=par9 && x0>=par7) */ + /* return 1; */ + /* else */ + /* return 0; */ + + double soften1=1./(1+exp(8.*(x0-par0))); + double soften2=1./(1+exp(8.*(x0-par1))); + double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); + double line1=par4*(x0-par0)+par2; + double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; + double line3=par5*(x0-par1)+par3; + double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); + + + return CutLeftCutRight*( + (line1)*soften1 + +line2*soften2*(1-soften1) + +line3*(1-soften2) + ); +} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ + +/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Y */ + +/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Y */ + +/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ + /* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ + +/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ + if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); + return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); +/* Placeholder - we assume that this distribution is flat for now */ + return 1; +} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ + + +/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ +#pragma acc routine seq +double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ + if(time<0)return 0; + double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); + if(timeGeometry +* The geometry corresponds correctly to the latest release of the butterfly moderator, +* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. +* A set of official release documents are available with this component, see the benchmarking +* website mentioned below. +* +* Brilliances, geometry adapted from earlier BF2 design +* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, +* are released as an updated component library for McStas 2.3, as well as a stand alone archive for +* use with earlier versions of McStas. +* +* The following features are worth highlighting: +*
    +*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. +* As a result, the spatial variation of the brightness across the moderator face should be considered to +* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to +* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness +* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. +*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. +* To accommodate the influence of the changed geometry, this scaling factor has been applied independently +* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the +* spectrally-integrated 6cm width data shown in [1],Figure 3. +*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance +* have been implemented. For now, we recommend to keep these at their default value of 1.0. +*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This +* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, +* which has been derived from current MCNP butterfly 1 model. +*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, +* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. +* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree +* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees +* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- +* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. +*
+* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be +* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. +* +*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance +* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation +* across sectors and potentially also performance losses due to engineering reality. +* +* Engineering reality +* An ad-hoc method for future implementation of "engineering reality" is included, use the +* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. +* +* References: +*

    +*
  1. Release document "Update to ESS Moderators, latest version" +*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" +*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures +*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. +*
  5. Source code for ESS_butterfly.comp at GitHub. +*
+* %P +* Input parameters: +* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" +* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector +* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m +* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator +* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 +* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 +* Lmin: [AA] Minimum wavelength simulated +* Lmax: [AA] Maximum wavelength simulated +* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. +* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index +* focus_xw: [m] Width of focusing rectangle +* focus_yh: [m] Height of focusing rectangle +* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. +* acc_power: [MW] Accelerator power in MW +* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. +* tfocus_dist: [m] Position of time focusing window along z axis +* tfocus_time: [s] Time position of time focusing window +* tfocus_width: [s] Time width of time focusing window +* +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT ESS_butterfly + +SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, + int target_index=0, dist=0, focus_xw=0, focus_yh=0, + c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, + acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) + + +SHARE %{ + %include "ESS_butterfly-lib" + %include "ESS_butterfly-geometry.c" + + int nearest_angle(double angle) { + int AngleList[] = {5, 15, 25, 35, 45, 55}; + double diff = 180; + int jmin=0; + int j; + for (j=0; j<6; j++) { + if (fabs(AngleList[j]-angle) < diff) { + diff = fabs(AngleList[j]-angle); + jmin = j; + } + } + return AngleList[jmin]; + } + double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; + double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; + double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; + double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; + double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; + double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; + double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; + double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; + double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; + double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; + double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; + double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; + double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; + double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; + double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; + double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; + double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; + +// Defines to make it easier to write code using multiple time sampling +#define T_ABSORB() do { WT_absorb_ = 1; } while (0) +#define T_TRANSMIT() do { WT_absorb_ = 0; } while (0) + +#define TRAIN_GATE(BODY_CODE) \ +do { \ + double weight_update = p/_particle->p_last_time_manipulation; \ + _particle->p_last_time_manipulation = 0; \ + double t_original = t; \ + int train_index; \ + for (train_index=0; train_index<_particle->N_active; ) { \ + /* Expose readable names to BODY_CODE */ \ + t = t_original + _particle->t_offset[train_index]; \ + \ + int WT_absorb_ = 0; \ + \ + BODY_CODE \ + \ + if (WT_absorb_) { \ + /* swap-with-last-active */ \ + _particle->p_trains[train_index] = _particle->p_trains[_particle->N_active - 1]; \ + _particle->t_offset[train_index] = _particle->t_offset[_particle->N_active - 1]; \ + _particle->N_active--; \ + } else { \ + _particle->p_trains[train_index] *= weight_update; \ + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; \ + train_index++; \ + } \ + } \ + if (!_particle->N_active) ABSORB; \ + p = _particle->p_last_time_manipulation; \ + t = t_original; \ +} while (0) + +#define TRAIN_READ(BODY_CODE) \ +do { \ + int train_index; \ + double p_original = p; \ + double t_original = t; \ + double p_factor = p/_particle->p_last_time_manipulation; \ + for (train_index=0; train_index<_particle->N_active; train_index++) { \ + /* Expose readable names to BODY_CODE */ \ + p = p_factor*_particle->p_trains[train_index]; \ + t = t_original + _particle->t_offset[train_index]; \ + \ + BODY_CODE \ + \ + } \ + p = p_original; \ + t = t_original; \ +} while (0) + +%} + +DECLARE +%{ + double* ColdWidths; + double* ThermalWidths; + double ColdScalars[11]; + double ThermalScalars[11]; + double *Beamlines; + double wfrac_cold; + double wfrac_thermal; + /* 'Corner' parametrization, i.e. where are the limits of the moderators */ + double C1_x; + double C1_z; + double C2_x; + double C2_z; + double C3_x; + double C3_z; + double T1_x; + double T1_z; + double T2_x; + double T2_z; + double T3_x; + double T3_z; + /* - plus rotated versions of the same... */ + double rC1_x; + double rC1_z; + double rC2_x; + double rC2_z; + double rC3_x; + double rC3_z; + double rT1_x; + double rT1_z; + double rT2_x; + double rT2_z; + double rT3_x; + double rT3_z; + double tx; + double ty; + double tz; + double r11; + double r12; + double r21; + double r22; + double delta_y; + double Mwidth_c; + double Mwidth_t; + double beamportangle; + double w_mult; + double w_stat; + double w_focus; + double w_tfocus; + double w_geom_c; + double w_geom_t; + int isleft; + double l_range; + + double cos_thermal; + double cos_cold; + + double orientation_angle; + /* Centering-parameters, which sector are we in? */ + double cx; + double cz; + int jmax; + double dxC; + double dxT; +%} + +INITIALIZE +%{ + + + int sign_bl_angle; + + /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ + double oversampT=1.1; + double oversampC=1.0; + + + /* variables needed to correct for the emission surface angle */ + double internal_angle; + double cos_beamport_angle, sin_beamport_angle; + + if (beamline<4) { + wfrac_cold=1.0; + wfrac_thermal=(1-0.072); + } else { + wfrac_cold=1.0; + wfrac_thermal=1.0; + } + + /* Centering-parameters, which sector are we in? */ + if (strcasestr(sector,"N")) { + cx = 0.117; cz=0.0; sign_bl_angle=1; + orientation_angle = BeamlinesN[beamline-1]; + Beamlines = BeamlinesN; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsN[j]; + ThermalScalars[j] = ThermalScalarsN[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else if (strcasestr(sector,"W")) { + cx = 0.0; cz=0.0; sign_bl_angle=-1; + orientation_angle = BeamlinesW[beamline-1]; + Beamlines = BeamlinesW; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsW[j]; + ThermalScalars[j] = ThermalScalarsW[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"S")) { + cx = 0.0; cz=-0.185; sign_bl_angle=1; + orientation_angle = BeamlinesS[beamline-1]; + Beamlines = BeamlinesS; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); + ColdWidths = ColdWidthSW; + ThermalWidths = ThermalWidthSW; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsS[j]; + ThermalScalars[j] = ThermalScalarsS[j]; + } + jmax=11; + T1_x=0; + T1_z=0; + T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=-1; + } else if (strcasestr(sector,"E")) { + cx = 0.117; cz=-0.185; sign_bl_angle=-1; + orientation_angle = BeamlinesE[beamline-1]; + Beamlines = BeamlinesE; + internal_angle=90-fabs(orientation_angle); + beamportangle=nearest_angle(fabs(internal_angle)); + /* Direction-cosines for use with e.g. Brilliance_monitor */ + cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); + sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); + /* correction for projection along the beam / projection on the z=0 plane */ + cos_thermal=cos_beamport_angle; + cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); + ColdWidths = ColdWidthNE; + ThermalWidths = ThermalWidthNE; + int j; + for (j=0;j<11;j++){ + ColdScalars[j] = ColdScalarsE[j]; + ThermalScalars[j] = ThermalScalarsE[j]; + } + jmax=10; + T1_x=0; + T1_z=0; + T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; + T2_z=0; + T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); + T3_z=0; + C1_x=0; + C1_z=0; + C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); + C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); + C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; + C3_z=0; + isleft=1; + } else { + fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); + exit(-1); + } + if (beamline > jmax || beamline <= 0 ) { + fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); + exit(-1); + } + + printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); + if (c_performance <= 0) { + fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); + exit(-1); + } + if (t_performance <= 0) { + fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); + exit(-1); + } + if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { + fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", + NAME_CURRENT_COMP); + exit(-1); + } + /* Figure out where to aim */ + if (target_index && !dist) + { + Coords ToTarget; + ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); + ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); + coords_get(ToTarget, &tx, &ty, &tz); + dist=sqrt(tx*tx+ty*ty+tz*tz); + } else if (!target_index && !dist) { + fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); + exit(-1); + } else { + tx=0; ty=0; tz=dist; + } + printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); + if (target_index) { + printf(" ( from target_index %i -> distance %g )\n", target_index, dist); + } else { + printf(" ( from dist parameter -> distance %g )\n", dist); + } + printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); + + /* Calculate orientation matrix for the display and calculations */ + r11 = cos(DEG2RAD*orientation_angle); + r12 = -sin(DEG2RAD*orientation_angle); + r21 = sin(DEG2RAD*orientation_angle); + r22 = cos(DEG2RAD*orientation_angle); + + /* Rotated corrdinates of the emission areas */ + rC1_x = r11*C1_z + r12*C1_x; + rC1_z = r21*C1_z + r22*C1_x; + rC2_x = r11*C2_z + r12*C2_x; + rC2_z = r21*C2_z + r22*C2_x; + rC3_x = r11*C3_z + r12*C3_x; + rC3_z = r21*C3_z + r22*C3_x; + rT1_x = r11*T1_z + r12*T1_x; + rT1_z = r21*T1_z + r22*T1_x; + rT2_x = r11*T2_z + r12*T2_x; + rT2_z = r21*T2_z + r22*T2_x; + rT3_x = r11*T3_z + r12*T3_x; + rT3_z = r21*T3_z + r22*T3_x; + /* Moderator half-height */ + delta_y = yheight/2.0; + /* Other moderator parms */ + /* "Measured" moderator widths in cm scale */ + Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; + Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; + + if (tfocus_width && tfocus_time && tfocus_dist) { + printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { + printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); + } else { + fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", + NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); + exit(-1); + } + + l_range = Lmax-Lmin; + /* Weight multipliers */ + w_mult=acc_power/5; + w_stat=1.0/mcget_ncount(); + w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ + w_geom_t = 0.108*yheight*1.0e4; + w_mult *= l_range; /* wavelength range correction */ + n_pulses=(double)floor(n_pulses); + if (n_pulses == 0) n_pulses=1; + + dxC=dxCold[beamline-1]; + dxT=dxThermal[beamline-1]; +%} + +TRACE +%{ + double xtmp; + int iscold; + double x0,z0; + int surf_sign; + double cos_factor; + double w_geom; + double xf, yf, zf; + double dx,dy,dz; + double k,v,r,lambda; + double dt=0; + double modX,modY; + + /* Cold or thermal event? */ + p=1; + xtmp = rand01(); + y = randpm1()*delta_y; + modY=y; + if (rand01() < cold_frac) { + iscold=1; + if (rand01() < wfrac_cold) { // "Broad face" + x = rC1_x + (rC2_x - rC1_x)*xtmp; + z = rC1_z + (rC2_z - rC1_z)*xtmp; + x0 = C1_x + (C2_x - C1_x)*xtmp; + z0 = C1_z + (C2_z - C1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_cold; + } else { + x = rC1_x + (rC3_x - rC1_x)*xtmp; + z = rC1_z + (rC3_z - rC1_z)*xtmp; + x0 = C1_x + (C3_x - C1_x)*xtmp; + z0 = C1_z + (C3_z - C1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)-dxC); + w_geom=w_geom_c; + } else { + iscold=0; + if (rand01() < wfrac_thermal) { // "Broad face" + x = rT1_x + (rT2_x - rT1_x)*xtmp; + z = rT1_z + (rT2_z - rT1_z)*xtmp; + x0 = T1_x + (T2_x - T1_x)*xtmp; + z0 = T1_z + (T2_z - T1_z)*xtmp; + surf_sign=1; + cos_factor=cos_thermal; + } else { + x = rT1_x + (rT3_x - rT1_x)*xtmp; + z = rT1_z + (rT3_z - rT1_z)*xtmp; + x0 = T1_x + (T3_x - T1_x)*xtmp; + z0 = T1_z + (T3_z - T1_z)*xtmp; + surf_sign=-1; + cos_factor=cos_thermal; + } + modX=((-1.0*isleft*x0)+dxT); + w_geom=w_geom_t; + } + + SCATTER; + /* Where are we going? */ + randvec_target_rect_real(&xf, &yf, &zf, NULL, + tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); + + w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); + + dx = xf-x; + dy = yf-y; + dz = zf-z; + r = sqrt(dx*dx+dy*dy+dz*dz); + + lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ + + k = 2*PI/lambda; + v = K2V*k; + + vz = v*dz/r; + vy = v*dy/r; + vx = v*dx/r; + + int train_index; + + if (_particle->total_N_sent == 0) _particle->adaptive_N = N_trains; + else { + + _particle->adaptive_N = ceil(target_tsplit*_particle->total_N_sent/_particle->total_arrived); + + if (_particle->adaptive_N > N_trains) _particle->adaptive_N = N_trains; + } + + // Part of weight calculation that is not t dependant + if (iscold) { + ESS_2015_Schoenfeldt_cold_no_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= c_performance; + p *= ColdScalars[beamline-1]; + } else { + ESS_2015_Schoenfeldt_thermal_no_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= t_performance; + p *= ThermalScalars[beamline-1]; + } + /* Correct weight for sampling of cold vs. thermal events. */ + if (iscold) { + p /= cold_frac; + } else { + p /= (1-cold_frac); + } + p*=cos_factor; + p*=w_stat*w_focus*w_geom*w_mult; + + // Base weight to reuse for each new sampling of p,t + double base_p = p; + + for (train_index=0; train_index<_particle->adaptive_N; train_index++) { + + p = base_p; + + /* Are we using time focusing? */ + if (tfocus_width>0) { + dt = tfocus_dist/vz; + t = tfocus_time-dt; /* Set time to hit time window center */ + t += randpm1()*tfocus_width/2.0; + if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ + if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; + p*=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); // time focus correction + } else { + /* Simple, random wavelength @ random time */ + t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; + } + + if (iscold) { //case: cold moderator + /* Apply simple engineering reality correction */ + //ESS_2015_Schoenfeldt_cold_only_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= tmax_multiplier*ESS_2015_Schoenfeldt_cold_timedist(t, lambda, 3, ESS_SOURCE_DURATION); + } else { //case: thermal moderator + //ESS_2015_Schoenfeldt_thermal_only_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); + p *= tmax_multiplier*ESS_2015_Schoenfeldt_thermal_timedist(t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); + } + + t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ + + // Generate ray as normal with its associated p and t + // Save these to t_offset and p_train + + _particle->t_offset[train_index] = t; + _particle->p_trains[train_index] = p/_particle->adaptive_N; + _particle->p_last_time_manipulation += _particle->p_trains[train_index]; + } + // Set base particle t and p + // Time offsets needed for realistic t + t=0; + // p contains the full weight of the ray + p =_particle->p_last_time_manipulation; + // N_active are times with p > 0, starts with all of them, gradually decrease + _particle->N_active = _particle->adaptive_N; + + SCATTER; +%} + +MCDISPLAY +%{ + #ifndef OPENACC + magnify(""); + butterfly_geometry(delta_y, jmax, cx, cz, + orientation_angle, Beamlines, tx,ty,tz, + rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, + rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, + r11, r12, r21, r22, focus_xw, focus_yh); + #endif +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/Monitor_nD.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/Monitor_nD.comp new file mode 100644 index 0000000000..b069696b5f --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/Monitor_nD.comp @@ -0,0 +1,665 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: Monitor_nD +* +* %Identification +* Written by: Emmanuel Farhi +* Date: 14th Feb 2000. +* Origin: ILL +* Release: McStas 1.6 +* Version: $Revision$ +* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi +* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) +* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster +* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) +* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) +* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) +* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) +* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) +* +* This component is a general Monitor that can output 0/1/2D signals +* (Intensity or signal vs. [something] and vs. [something] ...) +* +* %Description +* This component is a general Monitor that can output 0/1/2D signals +* It can produce many 1D signals (one for any variable specified in +* option list), or a single 2D output (two variables correlation). +* Also, an additional 'list' of neutron events can be produced. +* By default, monitor is square (in x/y plane). A disk shape is also possible +* The 'cylinder' and 'banana' option will change that for a banana shape +* The 'sphere' option simulates spherical detector. The 'box' is a box. +* The cylinder, sphere and banana should be centered on the scattering point. +* The monitored flux may be per monitor unit area, and weighted by +* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. +* In normal configuration, the Monitor_nD measures the current parameters +* of the neutron that is beeing detected. But a PreMonitor_nD component can +* be used in order to study correlations between a neutron being detected in +* a Monitor_nD place, and given parameters that are monitored elsewhere +* (at PreMonitor_nD). +* The monitor can also act as a 3He gas detector, taking into account the +* detection efficiency. +* +* The 'bins' and 'limits' modifiers are to be used after each variable, +* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 +* limits=[-5 5]) When placed after all variables, these two latter modifiers +* apply to the signal (e.g. intensity). Unknown keywords are ignored. +* If no limits are specified for a given observable, reasonable defaults will be +* applied. Note that these implicit limits are even applied in list mode. +* +* Implicit limits for typical variables: +* (consult monitor_nd-lib.c if you don't find your variable here) +* x, y, z: Derived from detection-object geometry +* k: [0 10] Angs-1 +* v: [0 1e6] m/s +* t: [0 1] s +* p: [0 FLT_MAX] in intensity-units +* vx, vy: [-1000 1000] m/s +* vz: [0 10000] m/s +* kx, ky: [-1 1] Angs-1 +* kz: [-10 10] Angs-1 +* energy, omega: [0 100] meV +* lambda,wavelength: [0 100] Angs +* sx, sy, sz: [-1 1] in polarisation-units +* angle: [-50 50] deg +* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg +* longitude, lattitude: [-180 180] deg +* neutron: [0 simulaton_ncount] +* id, pixel id: [0 FLT_MAX] +* uservars u1,u2,u3: [-1e10 1e10] +* +* In the case of multiple components at the same position, the 'parallel' +* keyword must be used in each instance instead of defining a GROUP. +* +* Possible options are +* Variables to record: +* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm +* vx vy vz v [m/s] Velocity on x,y,z and norm +* x y z radius [m] Distance, Position and norm +* xy, yz, xz [m] Radial position in xy, yz and xz plane +* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane +* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane +* t time [s] Time of Flight +* energy omega [meV] energy of neutron +* lambda wavelength [Angs] wavelength of neutron +* sx sy sz [1] Spin +* vdiv ydiv dy [deg] vertical divergence (y) +* hdiv divergence xdiv [deg] horizontal divergence (x) +* angle [deg] divergence from direction +* theta longitude [deg] longitude (x/z) for sphere and cylinder +* phi lattitude [deg] lattitude (y/z) for sphere and cylinder +* +* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} +* user2 user3 to be assigned in an other component (see below) +* +* p intensity flux [n/s or n/cm^2/s] +* ncounts n neutron [1] neutron ID, i.e current event index +* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. +* +* Other options keywords are: +* abs Will monitor the abs of the following variable or of the signal (if used after all variables) +* auto Automatically set detector limits for one/all +* all {limits|bins|auto} To set all limits or bins values or auto mode +* binary {float|double} with 'source' option, saves in compact files +* bins=[bins=20] Number of bins in the detector along dimension +* borders To also count off-limits neutrons (X < min or X > max) +* capture weight by lambda/lambda(2200m/s) capture flux +* file=string Detector image file name. default is component name, plus date and variable extension. +* incoming Monitor incoming beam in non flat det +* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) +* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events +* log Will monitor the log of the following variable or of the signal (if used after all variables) +* min=[min_value] Same as limits, but only sets the min or max +* max=[max_value] +* multiple Create multiple independant 1D monitors files +* no or not Revert next option +* outgoing Monitor outgoing beam (default) +* parallel Use this option when the next component is at the same position (parallel components) +* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. +* per steradian Displays beam solid angle in steradian +* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. +* signal=[var] Will monitor [var] instead of usual intensity +* slit or absorb Absorb neutrons that are out detector +* source The monitor will save neutron states +* inactivate To inactivate detector (0D detector) +* verbose To display additional informations +* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) +* +* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) +* box Box of size xwidth, yheight, zdepth. +* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). +* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). +* disk Disk flat xy monitor. diameter is xwidth. +* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). +* square Square flat xy monitor (xwidth, yheight). +* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. +* +* EXAMPLES: +*
    +*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, +*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with +*   borders, file = mon1"); +* will monitor neutron angle from [z] axis, between -5 +* and 5 degrees, in 10 bins, into "mon1.A" output 1D file +* +*
  • options = "sphere theta phi outgoing" +* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" +* +*
  • options = "banana, theta limits=[10,130], bins=120, y" +* a theta/height banana detector +* +*
  • options = "angle radius all auto" +* is a 2D monitor with automatic limits +* +*
  • options = "list=1000 kx ky kz energy" +* records 1000 neutron event in a file +* +*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" +* makes 4 output 1D files and produces a complete list for all neutrons +* and monitor log(abs(tof)) within automatic limits (for t) +* +*
  • options = "theta y, sphere, pixel min=100" +* a 4pi detector which outputs an event list with pixelID from the actual +* detector surface, starting from index 100. +* +*
+* To dynamically define a number of bins, or limits: +* Use in DECLARE: char op[256]; +* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); +* Use in TRACE: Monitor_nD(... options=op ...) +* +* How to monitor any instrument/component variable into a Monitor_nD +* Suppose you want to monitor a variable 'age' which you assign somwhere in +* the instrument: +* COMPONENT MyMonitor = Monitor_nD( +* xwidth = 0.1, yheight = 0.1, +* user1="age", username1="Age of the Captain [years]", +* options="user1, auto") +* AT ... +* +* See also the example in PreMonitor_nD to +* monitor neutron parameters cross-correlations. +* +* %BUGS +* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI +* as each process may use different limits. +* +* %Parameters +* INPUT PARAMETERS: +* +* xwidth: [m] Width of detector. +* yheight: [m] Height of detector. +* zdepth: [m] Thickness of detector (z). +* radius: [m] Radius of sphere/banana shape monitor +* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). +* +* Optional input parameters (override xwidth yheight zdepth): +* xmin: [m] Lower x bound of opening +* xmax: [m] Upper x bound of opening +* ymin: [m] Lower y bound of opening +* ymax: [m] Upper y bound of opening +* zmin: [m] Lower z bound of opening +* zmax: [m] Upper z bound of opening +* filename: [str] Output file name (overrides file=XX option). +* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins +* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits +* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits +* user1: [str] Variable name of USERVAR to be monitored by user1. +* user2: [str] Variable name of USERVAR to be monitored by user2. +* user3: [str] Variable name of USERVAR to be monitored by user3. +* username1: [str] Name assigned to User1 +* username2: [str] Name assigned to User2 +* username3: [str] Name assigned to User3 +* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. +* geometry: [str] Name of an OFF file to specify a complex geometry detector +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* DEFS: [struct] structure containing Monitor_nD Defines +* Vars: [struct] structure containing Monitor_nD variables +* +* %Link +* PreMonitor_nD +* +* %End +******************************************************************************/ +DEFINE COMPONENT Monitor_nD + +SETTING PARAMETERS ( + string user1="", string user2="", string user3="", + xwidth=0, yheight=0, zdepth=0, + xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, + int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, + string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, + string username1="NULL", string username2="NULL", string username3="NULL", + int tsplit=0, int adaptive_target=0 +) +/* these are protected C variables */ + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + %include "monitor_nd-lib" + %include "read_table-lib" + %include "interoff-lib" +%} + +DECLARE +%{ + MonitornD_Defines_type DEFS; + MonitornD_Variables_type Vars; + MCDETECTOR detector; + off_struct offdata; +%} + +INITIALIZE +%{ + char tmp[CHAR_BUF_LENGTH]; + strcpy (Vars.compcurname, NAME_CURRENT_COMP); + Vars.compcurindex = INDEX_CURRENT_COMP; + if (options != NULL) + strncpy (Vars.option, options, CHAR_BUF_LENGTH); + else { + strcpy (Vars.option, "x y"); + printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); + } + Vars.compcurpos = POS_A_CURRENT_COMP; + + if (strstr (Vars.option, "source")) + strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); + + if (bins) { + sprintf (tmp, " all bins=%ld ", (long)bins); + strcat (Vars.option, tmp); + } + if (min > -FLT_MAX && max < FLT_MAX) { + sprintf (tmp, " all limits=[%g %g]", min, max); + strcat (Vars.option, tmp); + } else if (min > -FLT_MAX) { + sprintf (tmp, " all min=%g", min); + strcat (Vars.option, tmp); + } else if (max < FLT_MAX) { + sprintf (tmp, " all max=%g", max); + strcat (Vars.option, tmp); + } + + /* transfer, "zero", and check username- and user variable strings to Vars struct*/ + strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); + strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); + strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); + if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { + strncpy (Vars.UserVariable1, user1, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable1, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); + } + } + if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { + strncpy (Vars.UserVariable2, user2, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable2, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); + } + } + if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { + strncpy (Vars.UserVariable3, user3, 128); + int fail; + _class_particle testparticle; + particle_getvar (&testparticle, Vars.UserVariable3, &fail); + if (fail) { + fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); + } + } + + /*sanitize parameters set for curved shapes*/ + if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { + /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ + if (!radius) { + if (xwidth) { + radius = xwidth / 2.0; + } else { + radius = zdepth / 2.0; + } + } else { + xwidth = 2 * radius; + } + if (!yheight) { + /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ + yheight = 2 * radius; + } + } else if (radius) { + /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values + (xwidth etc. They are used inside monitor_nd-lib.*/ + xwidth = zdepth = 2 * radius; + if (yheight) { + /*a height is given (and no shape explitly set - assume cylinder*/ + strcat (Vars.option, " banana"); + } else { + strcat (Vars.option, " sphere"); + yheight = 2 * radius; + } + } + + int offflag = 0; + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + #ifndef USE_OFF + fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); + exit (-1); + #else + if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { + printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" + " Defaulting to normal Monitor dimensions.\n", + NAME_CURRENT_COMP, geometry); + strcpy (geometry, ""); + } else { + offflag = 1; + } + #endif + } + + if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) + exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); + + Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag, 0); + + if (Vars.Flag_OFF) { + offdata.mantidflag = Vars.Flag_mantid; + offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; + } + + if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) + strncpy (Vars.Mon_File, filename, 128); + + /* check if user given filename with ext will be used more than once */ + if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { + char* XY; + XY = strrchr (Vars.Mon_File, '.'); + *XY = '_'; + } + + if (restore_neutron) + Vars.Flag_parallel = 1; + detector.m = 0; + + #ifdef USE_MPI + MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) + printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" + "WARNING this may create incorrect distributions (but integrated flux will be right).\n", + NAME_CURRENT_COMP);); + #else + #ifdef OPENACC + if (strstr (Vars.option, "auto")) + printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" + "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", + NAME_CURRENT_COMP); + #endif + #endif +%} + +TRACE +%{ + double transmit_he3 = 1.0; + double multiplier_capture = 1.0; + double t0 = 0; + double t1 = 0; + int pp; + int intersect = 0; + char Flag_Restore = 0; + + #ifdef OPENACC + #ifdef USE_OFF + off_struct thread_offdata = offdata; + #endif + #else + #define thread_offdata offdata + #endif + + /* this is done automatically + STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + */ + #ifdef USE_OFF + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + /* determine intersections with object */ + intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); + if (Vars.Flag_mantid) { + if (intersect) { + Vars.OFF_polyidx = thread_offdata.nextintersect; + } else { + Vars.OFF_polyidx = -1; + } + } + } else + #endif + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ + { + // propagate to xy plane and find intersection + // make sure the event is recoverable afterwards + t0 = t; + ALLOW_BACKPROP; + PROP_Z0; + if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful + { + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { + // square xy + intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); + } else { + // disk xy + intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); + } + } else { + intersect = 0; + } + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ + { + intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); + /* intersect = (intersect && t0 > 0); */ + } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ + { + intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ + { + intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); + } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ + { + intersect = 1; + } + + if (intersect) { + if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) + || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { + /* check if we have to remove the top/bottom with BANANA shape */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { + if (intersect == 1) { // Entered and left through sides + if (t0 < 0 && t1 > 0) { + t0 = t; /* neutron was already inside ! */ + } + if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ + t1 = t; + } + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + PROP_DT (t1); /* t1 outgoing beam */ + } else { + intersect = 0; + Flag_Restore = 1; + } + } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom + if ((Vars.Flag_Shape < 0) && (t1 > 0)) { + intersect = 0; + Flag_Restore = 1; + } else { + PROP_DT (t0); /* t0 incoming beam */ + } + } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit + intersect = 0; + Flag_Restore = 1; + } else { + printf ("Cylinder_intersect returned unexpected value %i\n", intersect); + } + } else { + // All other shapes than the BANANA + if (t0 < 0 && t1 > 0) + t0 = t; /* neutron was already inside ! */ + if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ + t1 = t; + /* t0 is now time of incoming intersection with the detection area */ + if ((Vars.Flag_Shape < 0) && (t1 > 0)) + PROP_DT (t1); /* t1 outgoing beam */ + else + PROP_DT (t0); /* t0 incoming beam */ + } + + /* Final test if we are on lid / bottom of banana/sphere */ + if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { + if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { + intersect = 0; + Flag_Restore = 1; + } + } + } + } + + if (intersect) { + /* Now get the data to monitor: current or keep from PreMonitor */ + /* if (Vars.Flag_UsePreMonitor != 1)*/ + /* {*/ + /* Vars.cp = p;*/ + /* Vars.cx = x;*/ + /* Vars.cvx = vx;*/ + /* Vars.csx = sx;*/ + /* Vars.cy = y;*/ + /* Vars.cvy = vy;*/ + /* Vars.csy = sy;*/ + /* Vars.cz = z;*/ + /* Vars.cvz = vz;*/ + /* Vars.csz = sz;*/ + /* Vars.ct = t;*/ + /* }*/ + + if ((Vars.He3_pressure > 0) && (t1 != t0) + && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { + transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); + /* will monitor the absorbed part */ + p = p * (1 - transmit_he3); + } + + if (Vars.Flag_capture) { + multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); + if (multiplier_capture != 0) + multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ + p = p * multiplier_capture / 1.7985; + } + + + if (adaptive_target) { + _particle->total_N_sent += _particle->adaptive_N; + _particle->total_rays_sent++; + } + + /* + int train_index; + double p_original = p; + double p_factor = p/_particle->p_last_time_manipulation; + double t_original = t; + */ + + int pp_all_zero = 1; + + if (tsplit==1) { + + TRAIN_READ( + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp) pp_all_zero = 0; + if (adaptive_target) _particle->total_arrived++; + ); + + if (pp_all_zero) ABSORB; else SCATTER; + + } else { + + /* + // Now just use normal p + double total_p = 0; + for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; + } + + p = total_p; + */ + + pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); + if (pp == 0.0) { + ABSORB; + } else if (pp == 1) { + SCATTER; + } + } + + + /*set weight to undetected part if capture and/or he3_pressure*/ + if (Vars.He3_pressure > 0) { + /* after monitor, only remains 1-p_detect */ + p = p * transmit_he3 / (1.0 - transmit_he3); + } + + if (Vars.Flag_capture) { + p = p / multiplier_capture * 1.7985; + } + + if (Vars.Flag_parallel) /* back to neutron state before detection */ + Flag_Restore = 1; + } /* end if intersection */ + else { + if (Vars.Flag_Absorb && !Vars.Flag_parallel) { + // restore neutron ray before absorbing for correct mcdisplay + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + ABSORB; + } else + Flag_Restore = 1; /* no intersection, back to previous state */ + } + + if (Flag_Restore) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + /* save results, but do not free pointers */ + detector = Monitor_nD_Save (&DEFS, &Vars); + } +%} + +FINALLY +%{ + /* free pointers */ + Monitor_nD_Finally (&DEFS, &Vars); +%} + +MCDISPLAY +%{ + if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { + off_display (offdata); + } else { + Monitor_nD_McDisplay (&DEFS, &Vars); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/MultiDiskChopper.comp new file mode 100644 index 0000000000..c111063527 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/MultiDiskChopper.comp @@ -0,0 +1,338 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2015, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: MultiDiskChopper +* +* %I +* Written by: Markus Appel +* Date: 2015-10-19 +* Origin: ILL / FAU Erlangen-Nuernberg +* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), +* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by +* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) +* +* %D +* Models a disk chopper with a freely configurable slit pattern. For simple applications, +* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. +* If the chopper slit pattern should be dynamically configurable or a complicated pattern +* is to be used as first chopper on a continuous source, use this component. +* +* Width and position of the slits is defined as a list in string parameters so +* they can easily be taken from instrument parameters. +* The chopper axis is located on the y axis as defined by the parameter delta_y. +* When the chopper is the first chopper after a continuous (i.e. time-independent) +* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. +* +* +* Examples (see parameter definitions for details): +* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, delay=0.02) +* +* First chopper on a continuous source, creating pulse trains for one additional revolution +* before and after the revolution at t=0: +* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, +* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) +* +* %P +* INPUT PARAMETERS: +* +* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" +* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) +* nslits: [] Number of slits to read from slit_width and slit_center +* radius: [m] Outer radius of the disk +* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. +* nu: [Hz] Rotation speed of the disk, the sign determines the direction. +* +* Optional parameters: +* verbose: [0/1] Set to 1 to display more information during the simulation. +* phase: [deg] Phase angle located on top of the disk at t=delay (see below). +* delay: [s] Time delay of the chopper clock. +* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. +* jitter: [s] Jitter in the time phase. +* abs_out: If 1, absorb all neutrons outside the disk diameter. +* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events +* will be shifted in time to pass the component (with adapted weight). +* +* Additional parameters when isfirst=1 (that have no effect for isfirst=0): +* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. +* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). +* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. +* +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT MultiDiskChopper + +SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) + + +DECLARE +%{ + double T; + double To; + double omega; + double* dslit_center; + double* dhslit_width; + double* t0; + double* t1; +%} + +INITIALIZE +%{ + char* pch; + int i; + double sense; + + phase = remainder (phase, 360.0) * DEG2RAD; + omega = 2.0 * PI * nu; /* rad/s */ + sense = (omega < 0) ? -1 : 1; + + if (isfirst && (nrev - floor (nrev) != 0)) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) + exit (-1); + } + + if (!omega) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) + omega = 1e-15; /* We should actually use machine epsilon here... */ + } + + if (nslits <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) + } + + // Read slits in array + dslit_center = malloc (nslits * sizeof (*dslit_center)); + pch = strtok (slit_center, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dslit_center[i] = atof (pch); + pch = strtok (NULL, ";_, "); + + if ((dslit_center[i] < 0)) { + while (dslit_center[i] < 0) { + dslit_center[i] += 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + if ((dslit_center[i] >= 360.0)) { + while (dslit_center[i] >= 360.0) { + dslit_center[i] -= 360.0; + } + + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) + } + + dslit_center[i] *= DEG2RAD; + } + + // dhslit_width: HALF slit width + dhslit_width = malloc (nslits * sizeof (*dhslit_width)); + pch = strtok (slit_width, ";_, "); + for (i = 0; i < nslits; i++) { + if (pch == NULL) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) + exit (-1); + } + dhslit_width[i] = 0.5 * atof (pch); + pch = strtok (NULL, ";_, "); + if (dhslit_width[i] <= 0) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) + exit (-1); + } + dhslit_width[i] *= DEG2RAD; + } + + /* Calculate delay from phase and vice versa */ + if (phase) { + if (delay) { + MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) + } + phase -= delay * omega; + delay = -phase / omega; + } else { + phase = delay * omega; + } + + /* Time for 1 revolution */ + T = 2.0 * PI / fabs (omega); + + // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE + + /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ + + // generate times t1: duration of slit openings (or their cumulative sum if !equal) + // dhslit_width is already in rad + t1 = malloc (nslits * sizeof (*t1)); + t1[0] = 2.0 * dhslit_width[0] / fabs (omega); + To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit + + for (i = 1; i < nslits; i++) { + t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); + To += (2.0 * dhslit_width[i] / fabs (omega)); + } + + // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) + t0 = malloc (nslits * sizeof (*t0)); + t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); + + for (i = 1; i < nslits; i++) { + t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); + } + + MPI_MASTER (if (verbose) { + printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); + printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); + printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); + + if (isfirst && equal) + printf (" --- first chopper distributing events equally on all slits\n"); + + if (isfirst && !equal) + printf (" --- first chopper distributing events proportional to slit size\n"); + + if (isfirst) + printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); + + printf (" --- Slit center [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", dslit_center[i] * RAD2DEG); + printf ("\n"); + printf (" --- Slit width [deg]:"); + for (i = 0; i < nslits; i++) + printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); + printf ("\n"); + + // dump internal arrays for debugging + if (verbose == 2) { + printf (" --- Internal arrays:\n"); + printf (" --- i t0 t1 dslit_center dhslit_width\n"); + for (i = 0; i < nslits; i++) { + printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); + } + } + }) + %} + +TRACE +%{ + double phi; + double xprime, yprime; + double toff; + int irev, islit; + + // Propagate into the chopper disk plane + PROP_Z0; + + if (delta_y > 0) { + // 'anormal' case, chopper above guide + // mirror coordinate system + xprime = -x; + yprime = -y + delta_y; + } else { + // 'normal' case, chopper below guide + xprime = x; + yprime = y - delta_y; + } + + // Is neutron transmitted/absorbed outside the disk diameter ? + if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) + if (abs_out) { + ABSORB; + } else { + SCATTER; + } + else { + if (isfirst) { + irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); + + if (equal) { + // Distribute neutrons equally over slits + t = rand01 () * nslits; + islit = (t == nslits) ? nslits - 1 : floor (t); + t = (t - islit) * t1[islit]; + + p *= t1[islit] / T * nslits; + } else { + // Distribute neutrons proportional to slit size + t = rand01 () * To; + islit = 0; + while (t1[islit] < t) + islit++; + + /* weight correction: chopper slits transmission opening time per full revolution time */ + p *= To / T; + } + + // offset time stamp according to slit phase, neutron position and jitter + t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); + + } else { + + int this_t_hit; + TRAIN_GATE( + phi = atan2 (xprime, yprime) + omega * (t - delay - (jitter ? jitter * randnorm () : 0)); + + this_t_hit = 0; + islit = 0; + // does the neutron hit one of the slits ? + while (islit < nslits && !this_t_hit) { + if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) { + this_t_hit = 1; + } + islit++; + } + if (this_t_hit == 0) T_ABSORB(); + ); + + } + } +%} + +FINALLY +%{ + // clean up + if (dslit_center) + free (dslit_center); + + if (dhslit_width) + free (dhslit_width); + + if (t0) + free (t0); + + if (t1) + free (t1); +%} + +MCDISPLAY +%{ + int j; + + // the disk + circle ("xy", 0, delta_y, 0, radius); + + /* Drawing the slit(s) */ + for (j = 0; j < nslits; j++) { + /* Angular start/end of slit */ + double tmin = dslit_center[j] - dhslit_width[j] + phase; + double tmax = tmin + 2.0 * dhslit_width[j]; + /* Draw lines for each slit. */ + + line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); + line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); + } +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ODIN_wfm.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ODIN_wfm.instr new file mode 100644 index 0000000000..519b7925e8 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/ODIN_wfm.instr @@ -0,0 +1,1057 @@ +/******************************************************************************** +* +* McStas, neutron ray-tracing package +* Copyright (C) 1997-2008, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* This file was written by McStasScript, which is a +* python based McStas instrument generator written by +* Mads Bertelsen in 2019 while employed at the +* European Spallation Source Data Management and +* Software Centre +* +* Instrument: ODIN +* +* %Identification +* Written by: Python McStas Instrument Generator +* Date: 13:25:52 on February 25, 2026 +* Origin: ESS DMSC +* %INSTRUMENT_SITE: Generated_instruments +* +* !!Please write a short instrument description (1 line) here!! +* +* %Description +* Please write a longer instrument description here! +* +* +* %Parameters +* l_min: [unit] Minimum simulated wavelength [AA] +* l_max: [unit] Maximum simulated wavelength [AA] +* n_pulses: [unit] Number of simulated pulses +* wfm_delta: [unit] Distance between WFM choppers [m] +* bp_frequency: [unit] Frequency of bandpass choppers [Hz] +* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] +* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. +* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] +* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. +* fo1_phase_offset: [unit] Offset of fo1 phase [deg] +* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. +* bp1_phase_offset: [unit] Offset of bp1 phase [deg] +* jitter_bp1: [unit] Jitter of bp1 chopper +* fo2_phase_offset: [unit] Offset of fo2 phase [deg] +* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. +* bp2_phase_offset: [unit] Offset of bp2 phase [deg] +* jitter_bp2: [unit] Jitter of bp2 chopper +* t0_phase_offset: [unit] Offset of t0 phase [deg] +* jit_t0_sec: [unit] Jitter of t0 chopper +* fo3_phase_offset: [unit] Offset of fo3 phase [deg] +* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. +* fo4_phase_offset: [unit] Offset of fo4 phase [deg] +* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. +* fo5_phase_offset: [unit] Offset of fo5 phase [deg] +* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. +* +* %Link +* +* %End +********************************************************************************/ + +DEFINE INSTRUMENT ODIN ( +l_min = 1.0, // Minimum simulated wavelength [AA] +l_max = 11.0, // Maximum simulated wavelength [AA] +int n_pulses = 1, // Number of simulated pulses +wfm_delta = 0.3, // Distance between WFM choppers [m] +bp_frequency = 7, // Frequency of bandpass choppers [Hz] +WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] +jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. +WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] +jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. +fo1_phase_offset = 0, // Offset of fo1 phase [deg] +jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. +bp1_phase_offset = 0, // Offset of bp1 phase [deg] +jitter_bp1 = 0, // Jitter of bp1 chopper +fo2_phase_offset = 0, // Offset of fo2 phase [deg] +jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. +bp2_phase_offset = 0, // Offset of bp2 phase [deg] +jitter_bp2 = 0, // Jitter of bp2 chopper +t0_phase_offset = 0, // Offset of t0 phase [deg] +jit_t0_sec = 0, // Jitter of t0 chopper +fo3_phase_offset = 0, // Offset of fo3 phase [deg] +jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. +fo4_phase_offset = 0, // Offset of fo4 phase [deg] +jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. +fo5_phase_offset = 0, // Offset of fo5 phase [deg] +jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. +int choppers=2, // 0: no choppers 1: BP 2: WFM +int N_trains_par = 10, +target_tsplit = 3, +int mono_chopper=0, +mono_duty=0.03 +) + +DECLARE +%{ +double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap +double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap +double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap +double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap +double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap +double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap +double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap +double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap +double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap +double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap + +int allocated; +%} + +USERVARS +%{ +double *t_offset; +double *p_trains; +double p_last_time_manipulation; +//int allocated; +int adaptive_N; +int N_active; +long total_arrived; +long total_N_sent; +long total_rays_sent; +%} + + +INITIALIZE +%{ +// Start of initialize for generated ODIN +WFM1_phase = WFM1_phase_offset; +WFM1_phase += 97.55; +WFM2_phase = WFM2_phase_offset; +WFM2_phase += -5.88015; +fo1_phase = fo1_phase_offset; +fo1_phase += -65.625; +bp1_phase = bp1_phase_offset; +bp1_phase += -11.475; +fo2_phase = fo2_phase_offset; +fo2_phase += -20.5; +bp2_phase = bp2_phase_offset; +bp2_phase += 185.195; +t0_phase = t0_phase_offset; +fo3_phase = fo3_phase_offset; +fo3_phase += 137.47; +fo4_phase = fo4_phase_offset; +fo4_phase += 111.700; +fo5_phase = fo5_phase_offset; +fo5_phase += -81.105; + +allocated = 0; + +#define N_trains INSTRUMENT_GETPAR(N_trains_par) + +MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "w"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); +); +%} + +TRACE +SEARCH "/Users/madsbertelsen/McStas/ESS/ODIN/gitlab/odin/odin_sim/required_mcstas_components" +COMPONENT Origin = Progress_bar() +AT (0, 0, 0) ABSOLUTE +EXTEND %{ + + if (allocated == 0) { + t_offset = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + p_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); + adaptive_N=INSTRUMENT_GETPAR(N_trains_par); + total_arrived=0; + total_N_sent=0; + total_rays_sent=0; + allocated = 1; + } +%} + +COMPONENT optical_axis = Arm() +AT (0.026, 0, 0) RELATIVE Origin + +COMPONENT Source = ESS_butterfly( + sector = "S", beamline = 2, + yheight = 0.03, cold_frac = 0.5, + target_index = 1, focus_xw = 0.0576862, + focus_yh = 0.0464308, c_performance = 1, + t_performance = 1, Lmin = l_min, + Lmax = l_max, n_pulses = n_pulses, + acc_power = 2.0, + target_tsplit=target_tsplit) +AT (0, 0, 0) RELATIVE Origin + +COMPONENT Start_of_bi = Arm() +AT (0, 0, 2.0306) RELATIVE optical_axis + +COMPONENT bi = bi_spec_ellipse( + xheight = 0.044795, ywidth = 0.033273, + zlength = 0.3, n_mirror = 0, + tilt = 0.7355449343006287, n_pieces = 1, + angular_offset = 0.0274924630093546, m = 4, + Qc_m = 0.0217, alpha_mirror_m = 2.5, + W_m = 0.015, d_focus_1_x = 3.443249331959489, + d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, + d_focus_2_y = 33.78623864676767, ell_l = 0.31, + ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, + ell_m = 4, R0 = 0.99, + Qc = 0.0217, alpha_mirror = 2.5, + W = 0.0015, cut = 3, + substrate = 0) +AT (0, 0, 0) RELATIVE Start_of_bi +ROTATED (0, 0, 180) RELATIVE Start_of_bi + +COMPONENT End_of_bi = Arm() +AT (0, 0, 0.31) RELATIVE bi +ROTATED (0, 0, -180) RELATIVE bi + +COMPONENT NBOA_drawing_1_end = Guide_four_side( + w1l = 0.022187, linwl = 3.7532493319594886, + loutwl = 4.397849331959489, w1r = 0.022187, + linwr = 3.7532493319594886, loutwr = 4.397849331959489, + h1u = 0.017858, linhu = 2.213738646767668, + louthu = 33.23733864676767, h1d = 0.017858, + linhd = 2.213738646767668, louthd = 33.23733864676767, + l = 0.5488999999999999, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 0.31000099999999997) RELATIVE bi + +COMPONENT g1a2 = Guide_four_side( + w1l = 0.022397711974319966, linwl = 4.303349331959489, + loutwl = 3.3968493319594883, w1r = 0.022397711974319966, + linwr = 4.303349331959489, loutwr = 3.3968493319594883, + h1u = 0.019790525295492974, linhu = 2.763788626121542, + louthu = 32.236388626121546, h1d = 0.019790525295492974, + linhd = 2.763788626121542, louthd = 32.236388626121546, + l = 0.9998, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end + +COMPONENT g1a3 = Guide_four_side( + w1l = 0.021853309009560024, linwl = 5.3043493319594885, + loutwl = 1.8968293319594889, w1r = 0.021853309009560024, + linwr = 5.3043493319594885, loutwr = 1.8968293319594889, + h1u = 0.02274764602619812, linhu = 3.7648386261215414, + louthu = 30.73631862612154, h1d = 0.02274764602619812, + linhd = 3.7648386261215414, louthd = 30.73631862612154, + l = 1.49882, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 0.999801) RELATIVE g1a2 + +COMPONENT g1b1 = Guide_four_side( + w1l = 0.017955, linwl = 6.82655, + loutwl = 1.3934509999999998, w1r = 0.017955, + linwr = 6.82655, loutwr = 1.3934509999999998, + h1u = 0.026565, linhu = 5.2842144, + louthu = 30.232929999999996, h1d = 0.026565, + linhd = 5.2842144, louthd = 30.232929999999996, + l = 0.48300000000000054, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.4109) RELATIVE optical_axis + +COMPONENT g1c1 = Guide_four_side( + w1l = 0.015725, linwl = 7.323650000000001, + loutwl = 0.5472510000000002, w1r = 0.015725, + linwr = 7.323650000000001, loutwr = 0.5472510000000002, + h1u = 0.02753, linhu = 5.7813144, + louthu = 29.38673, h1d = 0.02753, + linhd = 5.7813144, louthd = 29.38673, + l = 0.8320999999999996, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2.5, + myd = 2.5) +AT (0, 0, 5.908) RELATIVE optical_axis + +COMPONENT wfm_position = Arm() +AT (0, 0, 7.0) RELATIVE optical_axis + +COMPONENT wfm_1_position = Arm() +AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_1 = MultiDiskChopper( + slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_1, + phase = WFM1_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_1_position +ROTATED (0, 0, 180) RELATIVE wfm_1_position + + +COMPONENT pinhole_1 = Slit( + xwidth = 0.015, yheight = 0.06) +AT (0, 0, 0) RELATIVE wfm_position + +COMPONENT wfm_2_position = Arm() +AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position + +COMPONENT wfmc_2 = MultiDiskChopper( + slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", + nslits = 6, delta_y = -0.31499999999999995, + nu = -56.0, jitter = jitter_wfmc_2, + phase = WFM2_phase, radius = 0.35) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE wfm_2_position +ROTATED (0, 0, 180) RELATIVE wfm_2_position + +COMPONENT g2a1 = Guide_four_side( + w1l = 0.01121, linwl = 0.25980000000000025, + loutwl = 12.040199999999999, w1r = 0.01121, + linwr = 0.25980000000000025, loutwr = 12.040199999999999, + h1u = 0.029825, linhu = 7.2598, + louthu = 28.0402, h1d = 0.029825, + linhd = 7.2598, louthd = 28.0402, + l = 0.7000000000000002, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 3, + myd = 3) +AT (0, 0, 7.247800000000001) RELATIVE optical_axis + +COMPONENT monitor_1_position = Arm() +AT (0, 0, 7.96) RELATIVE optical_axis + +COMPONENT g2a2 = Guide_four_side( + w1l = 0.0212, linwl = 0.9858000000000002, + loutwl = 11.6045, w1r = 0.0212, + linwr = 0.9858000000000002, loutwr = 11.6045, + h1u = 0.03088, linhu = 7.9858, + louthu = 27.6045, h1d = 0.03088, + linhd = 7.9858, louthd = 27.6045, + l = 0.40969999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 3, + myd = 3) +AT (0, 0, 7.973800000000001) RELATIVE optical_axis + +COMPONENT fo1_position = Arm() +AT (0, 0, 8.392) RELATIVE optical_axis + +COMPONENT fo_chopper_1 = MultiDiskChopper( + slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", + nslits = 6, delta_y = -0.4625, + nu = -42.0, jitter = jitter_fo_chopper_1, + phase = fo1_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo1_position +ROTATED (0, 0, 180) RELATIVE fo1_position + +COMPONENT bp1_position = Arm() +AT (0, 0, 8.442) RELATIVE optical_axis + +COMPONENT bp1_chopper = DiskChopper( + theta_0 = 46.71, radius = 0.5, + yheight = 0.075, nu = bp_frequency, + nslit = 1, jitter = jitter_bp1, + phase = bp1_phase + (42.20500000000003)) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp1_position +ROTATED (0, 0, 180) RELATIVE bp1_position + +COMPONENT g2b1 = Guide_four_side( + w1l = 0.02521, linwl = 1.4502500000000005, + loutwl = 11.14005, w1r = 0.02521, + linwr = 1.4502500000000005, loutwr = 11.14005, + h1u = 0.031505, linhu = 8.45025, + louthu = 27.140050000000002, h1d = 0.031505, + linhd = 8.45025, louthd = 27.140050000000002, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.446250000000001) RELATIVE optical_axis + +COMPONENT g2b2 = Guide_four_side( + w1l = 0.02811, linwl = 1.8707999999999991, + loutwl = 9.67745, w1r = 0.02811, + linwr = 1.8707999999999991, loutwr = 9.67745, + h1u = 0.03203, linhu = 8.8708, + louthu = 25.67745, h1d = 0.03203, + linhd = 8.8708, louthd = 25.67745, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 8.8668) RELATIVE optical_axis + +COMPONENT g2b3 = Guide_four_side( + w1l = 0.03493, linwl = 3.3230500000000003, + loutwl = 8.2252, w1r = 0.03493, + linwr = 3.3230500000000003, loutwr = 8.2252, + h1u = 0.033615, linhu = 10.32305, + louthu = 24.2252, h1d = 0.033615, + linhd = 10.32305, louthd = 24.2252, + l = 1.4517500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 10.31905) RELATIVE optical_axis + +COMPONENT g2b4 = Guide_four_side( + w1l = 0.03862, linwl = 4.7858, + loutwl = 7.804500000000001, w1r = 0.03862, + linwr = 4.7858, loutwr = 7.804500000000001, + h1u = 0.03488, linhu = 11.7858, + louthu = 23.8045, h1d = 0.03488, + linhd = 11.7858, louthd = 23.8045, + l = 0.40969999999999906, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 2, + myd = 2) +AT (0, 0, 11.7818) RELATIVE optical_axis + +COMPONENT fo2_position = Arm() +AT (0, 0, 12.2) RELATIVE optical_axis + +COMPONENT fo_chopper_2 = MultiDiskChopper( + slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", + nslits = 6, delta_y = -0.46, + nu = -42.0, jitter = jitter_fo_chopper_2, + phase = fo2_phase, radius = 0.5) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo2_position +ROTATED (0, 0, 180) RELATIVE fo2_position + +COMPONENT bp2_position = Arm() +AT (0, 0, 12.25) RELATIVE optical_axis + +COMPONENT bp_chopper2 = DiskChopper( + theta_0 = 67.49, radius = 0.5, + yheight = 0.08, nu = bp_frequency, + nslit = 1, jitter = jitter_bp2, + phase = bp2_phase -141.795) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE bp2_position +ROTATED (0, 0, 180) RELATIVE bp2_position + +COMPONENT g2c1 = Guide_four_side( + w1l = 0.03929, linwl = 5.250249999999999, + loutwl = 6.536899999999999, w1r = 0.03929, + linwr = 5.250249999999999, loutwr = 6.536899999999999, + h1u = 0.03488, linhu = 12.25025, + louthu = 22.5369, h1d = 0.03488, + linhd = 12.25025, louthd = 22.5369, + l = 1.2128500000000013, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 12.254249999999999) RELATIVE optical_axis + +COMPONENT t0_start_position = Arm() +AT (0, 0, 13.503) RELATIVE optical_axis + +COMPONENT t0_chopper_alpha = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_start_position +ROTATED (0, 0, 180) RELATIVE t0_start_position + +COMPONENT t0_end_position = Arm() +AT (0, 0, 13.703) RELATIVE optical_axis + +COMPONENT t0_chopper_beta = DiskChopper( + theta_0 = 294.74, radius = 0.32, + yheight = 0.075, nu = 28.0, + nslit = 1, jitter = jit_t0_sec, + phase = t0_phase + 179.34) +WHEN(choppers>=1) +AT (0, 0, 0) RELATIVE t0_end_position +ROTATED (0, 0, 180) RELATIVE t0_end_position + +COMPONENT g3a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03611, linhu = 13.7559, + louthu = 20.2631, h1d = 0.03611, + linhd = 13.7559, louthd = 20.2631, + l = 1.981, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 13.7379) RELATIVE optical_axis + +COMPONENT g3a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03687, linhu = 15.7409, + louthu = 19.0055, h1d = 0.03687, + linhd = 15.7409, louthd = 19.0055, + l = 1.2535999999999987, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 15.7229) RELATIVE optical_axis + +COMPONENT fo3_position = Arm() +AT (0, 0, 16.9865) RELATIVE optical_axis + +COMPONENT fo_chopper_3 = MultiDiskChopper( + slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", + nslits = 6, delta_y = -0.5575, + nu = -28.0, jitter = jitter_fo_chopper_3, + phase = fo3_phase, radius = 0.6) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo3_position +ROTATED (0, 0, 180) RELATIVE fo3_position + +COMPONENT g3b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03711, linhu = 17.0055, + louthu = 18.038, h1d = 0.03711, + linhd = 17.0055, louthd = 18.038, + l = 0.9564999999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 16.9965) RELATIVE optical_axis + +COMPONENT g4a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.2600000000000016, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 17.964) RELATIVE optical_axis + +COMPONENT monitor_2_position = Arm() +AT (0, 0, 19.245) RELATIVE optical_axis + +COMPONENT g4a2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 19.25) RELATIVE optical_axis + +COMPONENT g4a3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.4252499999999984, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 21.25025) RELATIVE optical_axis + +COMPONENT fo4_position = Arm() +AT (0, 0, 23.6855) RELATIVE optical_axis + +COMPONENT fo_chopper_4 = MultiDiskChopper( + slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_4, + phase = fo4_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo4_position +ROTATED (0, 0, 180) RELATIVE fo4_position + +COMPONENT g4b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.5565999999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 23.6955) RELATIVE optical_axis + +COMPONENT g4b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.7800000000000011, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 24.2561) RELATIVE optical_axis + +COMPONENT g4b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 2.1380000000000017, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 26.0366) RELATIVE optical_axis + +COMPONENT g4b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2, + myd = 2) +AT (0, 0, 28.1786) RELATIVE optical_axis + +COMPONENT g4b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 1.4049499999999995, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 30.17885) RELATIVE optical_axis + +COMPONENT g4b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, h2u = 0.037165, + h1d = 0.037165, h2d = 0.037165, + l = 0.4106999999999985, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3, + mxl = 3, myu = 2, + myd = 2) +AT (0, 0, 31.5893) RELATIVE optical_axis + +COMPONENT g5a1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037165, linhu = 18.0, + louthu = 17.005499999999998, h1d = 0.037165, + linhd = 18.0, louthd = 17.005499999999998, + l = 0.9945000000000022, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 32.0) RELATIVE optical_axis + +COMPONENT fo5_position = Arm() +AT (0, 0, 33.005) RELATIVE optical_axis + +COMPONENT fo_chopper_5 = MultiDiskChopper( + slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", + nslits = 6, delta_y = -0.7075, + nu = -14.0, jitter = jitter_fo_chopper_5, + phase = fo5_phase, radius = 0.75) +WHEN(choppers==2) +AT (0, 0, 0) RELATIVE fo5_position +ROTATED (0, 0, 180) RELATIVE fo5_position + +COMPONENT g5b1 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.037105, linhu = 19.005499999999998, + louthu = 14.994750000000003, h1d = 0.037105, + linhd = 19.005499999999998, louthd = 14.994750000000003, + l = 1.9997499999999988, Qcxl = 0.023, + Qcxr = 0.023, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.8, + alphaxr = 1.8, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2, + mxl = 2, myu = 2, + myd = 2) +AT (0, 0, 33.015499999999996) RELATIVE optical_axis + +COMPONENT g5b2 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.036645, linhu = 21.00575, + louthu = 12.994950000000003, h1d = 0.036645, + linhd = 21.00575, louthd = 12.994950000000003, + l = 1.999299999999998, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 35.01575) RELATIVE optical_axis + +COMPONENT g5b3 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.035695, linhu = 23.009500000000003, + louthu = 10.990749999999998, h1d = 0.035695, + linhd = 23.009500000000003, louthd = 10.990749999999998, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 2.5, + mxl = 2.5, myu = 2, + myd = 2) +AT (0, 0, 37.0195) RELATIVE optical_axis + +COMPONENT g5b4 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03423, linhu = 25.009749999999997, + louthu = 8.990499999999997, h1d = 0.03423, + linhd = 25.009749999999997, louthd = 8.990499999999997, + l = 1.999750000000006, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.023, + Qcyd = 0.023, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.8, + alphayd = 1.8, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2, + myd = 2) +AT (0, 0, 39.019749999999995) RELATIVE optical_axis + +COMPONENT g5b5 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.03217, linhu = 27.0135, + louthu = 6.986750000000001, h1d = 0.03217, + linhd = 27.0135, louthd = 6.986750000000001, + l = 1.9997499999999988, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 41.0235) RELATIVE optical_axis + +COMPONENT g5b6 = Guide_four_side( + w1l = 0.04004, w2l = 0.04004, + w1r = 0.04004, w2r = 0.04004, + h1u = 0.029395, linhu = 29.01375, + louthu = 6.5, h1d = 0.029395, + linhd = 29.01375, louthd = 6.5, + l = 0.4862499999999983, Qcxl = 0.0221, + Qcxr = 0.0221, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 1.75, + alphaxr = 1.75, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.0, + mxl = 3.0, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.02375) RELATIVE optical_axis + +COMPONENT g6a1 = Guide_four_side( + w1l = 0.04004, linwl = 6.5, + loutwl = 4.9864999999999995, w1r = 0.04004, + linwr = 6.5, loutwr = 4.9864999999999995, + h1u = 0.02859, linhu = 29.5, + louthu = 4.9864999999999995, h1d = 0.02859, + linhd = 29.5, louthd = 4.9864999999999995, + l = 1.5135000000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 3.5, + mxl = 3.5, myu = 2.5, + myd = 2.5) +AT (0, 0, 43.51) RELATIVE optical_axis + +COMPONENT g6a2 = Guide_four_side( + w1l = 0.038935, linwl = 8.017499999999998, + loutwl = 2.982750000000003, w1r = 0.038935, + linwr = 8.017499999999998, loutwr = 2.982750000000003, + h1u = 0.02567, linhu = 31.0175, + louthu = 2.982750000000003, h1d = 0.02567, + linhd = 31.0175, louthd = 2.982750000000003, + l = 1.9997499999999988, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0221, + Qcyd = 0.0221, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 1.75, + alphayd = 1.75, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 3, + myd = 3) +AT (0, 0, 45.027499999999996) RELATIVE optical_axis + +COMPONENT g6a3 = Guide_four_side( + w1l = 0.03367, linwl = 10.01775, + loutwl = 1.0, w1r = 0.03367, + linwr = 10.01775, loutwr = 1.0, + h1u = 0.02049, linhu = 33.01775, + louthu = 1.0, h1d = 0.02049, + linhd = 33.01775, louthd = 1.0, + l = 1.9822500000000005, Qcxl = 0.0217, + Qcxr = 0.0217, Qcyu = 0.0217, + Qcyd = 0.0217, alphaxl = 2.5, + alphaxr = 2.5, alphayu = 2.5, + alphayd = 2.5, Wxr = 0.015, + Wxl = 0.015, Wyu = 0.015, + Wyd = 0.015, mxr = 4, + mxl = 4, myu = 4, + myd = 4) +AT (0, 0, 47.02775) RELATIVE optical_axis + +COMPONENT guide_end = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT monitor_3_position = Arm() +AT (0, 0, 49.01) RELATIVE optical_axis + +COMPONENT start_backend = Arm() +AT (0, 0, 0) RELATIVE optical_axis + +COMPONENT optical_axis_backend = Arm() +AT (0, 0, 0) RELATIVE start_backend + +COMPONENT pinhole_2 = Slit( + xwidth = 0.03, yheight = 0.03) +AT (0, 0, 50) RELATIVE optical_axis_backend + +COMPONENT monochromating_chopper = DiskChopper( + theta_0 = mono_duty*120, // 6 = 5 % opening time * 120 deg + radius = 0.5, + yheight = 0.03, nu = 14*8.0, + nslit = 3, jitter = 0, + phase = 0) +WHEN(mono_chopper>=1) +AT (0, 0, 1E-6) RELATIVE pinhole_2 +ROTATED (0, 0, 0) RELATIVE pinhole_2 + +COMPONENT graph = Graphite_Diffuser( + xwidth = 0.1, ywidth = 0.1, + thick = 0.2) +AT (0, 0, 50.001) RELATIVE optical_axis_backend + +COMPONENT sample_monitor_arm = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +COMPONENT sample_PSD = Monitor_nD( + filename="image.dat", xwidth=0.3, yheight=0.3, + options="x bins 300 y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_x = Monitor_nD( + filename="profile_x.dat", xwidth=0.3, yheight=0.3, + options="x bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT profile_y = Monitor_nD( + filename="profile_y.dat", xwidth=0.3, yheight=0.3, + options="y bins 300") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength = Monitor_nD( + filename="wavelength.dat", xwidth=0.3, yheight=0.3, + options="L bins 300 limits [0.5 10]") +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT tof = Monitor_nD( + filename="time.dat", xwidth=0.3, yheight=0.3, + options="t bins 500 limits [0, 0.15]", + tsplit=1, adaptive_target=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT wavelength_tof = Monitor_nD( + filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, + options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", + tsplit=1) +AT (0, 0, 0) RELATIVE sample_monitor_arm + +COMPONENT sample_position = Arm() +AT (0, 0, 60.5) RELATIVE optical_axis_backend + +SAVE +%{ + + MPI_MASTER( + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { + perror("clock_gettime"); + exit(EXIT_FAILURE); + } + + double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; + + FILE *f = fopen("time_spent.txt", "a"); + if (!f) { + perror("fopen"); + exit(EXIT_FAILURE); + } + + fprintf(f, "%.9f\n", wall_time); + fclose(f); + ); +%} + +FINALLY +%{ +if (allocated == 1) { + free(_particle->t_offset); + free(_particle->p_trains); +} +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/TOFLambda_monitor.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/TOFLambda_monitor.comp new file mode 100644 index 0000000000..52f8f0ae07 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/TOFLambda_monitor.comp @@ -0,0 +1,156 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* %I +* Written by: KL +* Date: September 28, 2001 +* Origin: Risoe +* +* Time-of-flight/wavelength monitor. +* +* %D +* 2D detector for intensity as a function of both time-of-flight +* and wavelength. +* +* %P +* INPUT PARAMETERS: +* +* xmin: [m] Lower x bound of detector opening +* xmax: [m] Upper x bound of detector opening +* ymin: [m] Lower y bound of detector opening +* ymax: [m] Upper y bound of detector opening +* xwidth: [m] Width/diameter of detector (x). Overrides xmin, xmax +* yheight: [m] Height of detector (y). Overrides ymin, ymax +* nL: [1] Number of bins in wavelength +* nt: [1] Number of bins in TOF +* tmin: [us] Minimum time +* tmax: [us] Maximum time +* Lmin: [AA] Minimum wavelength detected +* Lmax: [AA] Maximum wavelength detected +* filename: [string] Name of file in which to store the detector image +* restore_neutron: [1] If set, the monitor does not influence the neutron state +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* Div_N: [] Array of neutron counts +* Div_p: [] Array of neutron weight counts +* Div_p2: [] Array of second moments +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT TOFLambda_monitor + + + +SETTING PARAMETERS ( int nowritefile=0, + int nL=20, int nt=128, tmin, tmax, string filename=0, + xmin=-0.05, xmax=0.05, ymin=-0.05, ymax=0.05, + xwidth=0, yheight=0, Lmin, Lmax, + int restore_neutron=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + + SHARE + %{ + + void save_ray_TOFLambda(double p, int i, int j, double **TOFL_N, double **TOFL_p, double **TOFL_p2) { + double p2 = p * p; + #pragma acc atomic + TOFL_N[j][i] = TOFL_N[j][i] + 1; + #pragma acc atomic + TOFL_p[j][i] = TOFL_p[j][i] + p; + #pragma acc atomic + TOFL_p2[j][i] = TOFL_p2[j][i] + p2; + } + + %} + +DECLARE +%{ + DArray2d TOFL_N; + DArray2d TOFL_p; + DArray2d TOFL_p2; + double tt_0; + double tt_1; +%} + +INITIALIZE +%{ + if (xwidth > 0) { + xmax = xwidth / 2; + xmin = -xmax; + } + if (yheight > 0) { + ymax = yheight / 2; + ymin = -ymax; + } + + if ((xmin >= xmax) || (ymin >= ymax)) { + printf ("TOFlambda_monitor: %s: Null detection area !\n" + "ERROR (xwidth,yheight,xmin,xmax,ymin,ymax). Exiting", + NAME_CURRENT_COMP); + exit (0); + } + + TOFL_N = create_darr2d (nt, nL); + TOFL_p = create_darr2d (nt, nL); + TOFL_p2 = create_darr2d (nt, nL); + tt_0 = tmin * 1e-6; + tt_1 = tmax * 1e-6; + + // Use instance name for monitor output if no input was given + if (!strcmp (filename, "\0")) + sprintf (filename, "%s", NAME_CURRENT_COMP); +%} + +TRACE +%{ + int i, j; + double div; + double lambda; + + PROP_Z0; + lambda = (2 * PI / V2K) / sqrt (vx * vx + vy * vy + vz * vz); + if (x > xmin && x < xmax && y > ymin && y < ymax && lambda > Lmin && lambda < Lmax) { + TRAIN_READ( + if (t < tt_1 && t > tt_0) { + i = floor ((lambda - Lmin) * nL / (Lmax - Lmin)); + j = floor ((t - tt_0) * nt / (tt_1 - tt_0)); + save_ray_TOFLambda(p, i, j, TOFL_N, TOFL_p, TOFL_p2); + } + ); + } + if (restore_neutron) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + DETECTOR_OUT_2D ("TOF-wavelength monitor", "Time-of-flight [\\gms]", "Wavelength [AA]", tmin, tmax, Lmin, Lmax, nt, nL, &TOFL_N[0][0], &TOFL_p[0][0], + &TOFL_p2[0][0], filename); + } +%} + +FINALLY +%{ + destroy_darr2d (TOFL_N); + destroy_darr2d (TOFL_p); + destroy_darr2d (TOFL_p2); +%} + +MCDISPLAY +%{ + multiline (5, (double)xmin, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, + (double)ymin, 0.0); +%} + +END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/TOF_monitor.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/TOF_monitor.comp new file mode 100644 index 0000000000..ede24cd9e0 --- /dev/null +++ b/mcstas-comps/examples/Prototypes/ODIN_TOF_train7/TOF_monitor.comp @@ -0,0 +1,158 @@ +/******************************************************************************* +* +* McStas, neutron ray-tracing package +* Copyright 1997-2002, All rights reserved +* Risoe National Laboratory, Roskilde, Denmark +* Institut Laue Langevin, Grenoble, France +* +* Component: TOF_monitor +* +* %I +* Written by: KN, M. Hagen +* Date: August 1998 +* Origin: Risoe +* +* Rectangular Time-of-flight monitor. +* +* %D +* +* %P +* INPUT PARAMETERS: +* +* xmin: [m] Lower x bound of detector opening +* xmax: [m] Upper x bound of detector opening +* ymin: [m] Lower y bound of detector opening +* ymax: [m] Upper y bound of detector opening +* xwidth: [m] Width of detector. Overrides xmin, xmax +* yheight: [m] Height of detector. Overrides ymin, ymax +* nt: [1] Number of time bins +* dt: [mu-s] Length of each time bin +* tmin: [mu-s] Lower time limit +* tmax: [mu-s] Upper time limit +* filename: [string] Name of file in which to store the detector image +* restore_neutron: [1] If set, the monitor does not influence the neutron state +* nowritefile: [1] If set, monitor will skip writing to disk +* +* CALCULATED PARAMETERS: +* +* TOF_N: [] Array of neutron counts +* TOF_p: [] Array of neutron weight counts +* TOF_p2: [] Array of second moments +* +* %E +*******************************************************************************/ + +DEFINE COMPONENT TOF_monitor +SETTING PARAMETERS (int nt=20, string filename=0, xmin=-0.05, xmax=0.05, ymin=-0.05, ymax=0.05, + xwidth=0, yheight=0, tmin=0, tmax=0, dt=1.0, int restore_neutron=0, int nowritefile=0) + + +/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ + +SHARE +%{ + + void save_ray(double p, int i, double *TOF_N, double *TOF_p, double *TOF_p2) { + double p2 = p * p; + #pragma acc atomic + TOF_N[i] = TOF_N[i] + 1; + #pragma acc atomic + TOF_p[i] = TOF_p[i] + p; + #pragma acc atomic + TOF_p2[i] = TOF_p2[i] + p2; + }; + +%} + +DECLARE +%{ + DArray1d TOF_N; + DArray1d TOF_p; + DArray1d TOF_p2; + double t_min; + double t_max; + double delta_t; +%} + + + + + +INITIALIZE +%{ + if (xwidth > 0) { + xmax = xwidth / 2; + xmin = -xmax; + } + if (yheight > 0) { + ymax = yheight / 2; + ymin = -ymax; + } + + if ((xmin >= xmax) || (ymin >= ymax)) { + printf ("TOF_monitor: %s: Null detection area !\n" + "ERROR (xwidth,yheight,xmin,xmax,ymin,ymax). Exiting", + NAME_CURRENT_COMP); + exit (0); + } + + TOF_N = create_darr1d (nt); + TOF_p = create_darr1d (nt); + TOF_p2 = create_darr1d (nt); + + if (tmax != 0) { + t_max = tmax; + t_min = tmin; + delta_t = (t_max - t_min) / nt; + } else { + delta_t = dt; + t_min = 0; + t_max = nt * dt + tmin; + } + + // Use instance name for monitor output if no input was given + if (!strcmp (filename, "\0")) + sprintf (filename, "%s", NAME_CURRENT_COMP); +%} + +TRACE +%{ + int i; + + PROP_Z0; + if (x > xmin && x < xmax && y > ymin && y < ymax) { + TRAIN_READ( + i = floor ((1E6 * t - t_min) / delta_t); /* Bin number */ + if (i >= 0 && i < nt) { + save_ray(p, i, TOF_N, TOF_p, TOF_p2); + SCATTER; + } + ); + } + if (restore_neutron) { + RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); + } +%} + +SAVE +%{ + if (!nowritefile) { + DETECTOR_OUT_1D ("Time-of-flight monitor", "Time-of-flight [\\gms]", "Intensity", "t", t_min, t_max, nt, &TOF_N[0], &TOF_p[0], &TOF_p2[0], filename); + } +%} + +FINALLY +%{ + destroy_darr1d (TOF_N); + destroy_darr1d (TOF_p); + destroy_darr1d (TOF_p2); +%} + +MCDISPLAY +%{ + + multiline (5, (double)xmin, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, + (double)ymin, 0.0); +%} + +END From c0fe0258388f635729205a52a797d761d1b56b70 Mon Sep 17 00:00:00 2001 From: Peter Willendrup Date: Fri, 1 May 2026 13:11:24 +0200 Subject: [PATCH 75/75] Retire older Rrototypes that do not currently compile. (Leave in place .tgz archives) --- .../examples/Prototypes/ODIN_TOF_train.tgz | Bin 0 -> 36145 bytes .../ODIN_TOF_train/DiskChopper.comp | 218 ---- .../ODIN_TOF_train/ESS_butterfly.comp | 614 ---------- .../ODIN_TOF_train/Graphite_Diffuser.comp | 115 -- .../Prototypes/ODIN_TOF_train/Monitor_nD.comp | 668 ----------- .../ODIN_TOF_train/MultiDiskChopper.comp | 351 ------ .../ODIN_TOF_train/ODIN_TOF_train.instr | 1030 ---------------- .../ODIN_TOF_train/bi_spec_ellipse.comp | 794 ------------- .../examples/Prototypes/ODIN_TOF_train3.tgz | Bin 0 -> 41406 bytes .../ODIN_TOF_train3/DiskChopper.comp | 230 ---- .../ODIN_TOF_train3/ESS_butterfly-lib.c | 402 ------- .../ODIN_TOF_train3/ESS_butterfly-lib.h | 97 -- .../ODIN_TOF_train3/ESS_butterfly.comp | 635 ---------- .../ODIN_TOF_train3/Graphite_Diffuser.comp | 115 -- .../ODIN_TOF_train3/Monitor_nD.comp | 678 ----------- .../ODIN_TOF_train3/MultiDiskChopper.comp | 361 ------ .../ODIN_TOF_train3/ODIN_TOF_train3.instr | 1047 ----------------- .../ODIN_TOF_train3/bi_spec_ellipse.comp | 794 ------------- .../examples/Prototypes/ODIN_TOF_train4.tgz | Bin 0 -> 41470 bytes .../ODIN_TOF_train4/DiskChopper.comp | 230 ---- .../ODIN_TOF_train4/ESS_butterfly-lib.c | 402 ------- .../ODIN_TOF_train4/ESS_butterfly-lib.h | 97 -- .../ODIN_TOF_train4/ESS_butterfly.comp | 629 ---------- .../ODIN_TOF_train4/Graphite_Diffuser.comp | 115 -- .../ODIN_TOF_train4/Monitor_nD.comp | 683 ----------- .../ODIN_TOF_train4/MultiDiskChopper.comp | 361 ------ .../ODIN_TOF_train4/ODIN_TOF_train4.instr | 1040 ---------------- .../ODIN_TOF_train4/bi_spec_ellipse.comp | 794 ------------- .../examples/Prototypes/ODIN_TOF_train6.tgz | Bin 0 -> 41376 bytes .../ODIN_TOF_train6/DiskChopper.comp | 230 ---- .../ODIN_TOF_train6/ESS_butterfly-lib.c | 402 ------- .../ODIN_TOF_train6/ESS_butterfly-lib.h | 97 -- .../ODIN_TOF_train6/ESS_butterfly.comp | 629 ---------- .../ODIN_TOF_train6/Graphite_Diffuser.comp | 115 -- .../ODIN_TOF_train6/Monitor_nD.comp | 683 ----------- .../ODIN_TOF_train6/MultiDiskChopper.comp | 361 ------ .../ODIN_TOF_train6/ODIN_TOF_train6.instr | 1026 ---------------- .../ODIN_TOF_train6/bi_spec_ellipse.comp | 794 ------------- 38 files changed, 16837 deletions(-) create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train.tgz delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/DiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/ESS_butterfly.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/Graphite_Diffuser.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/Monitor_nD.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/MultiDiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train/bi_spec_ellipse.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3.tgz delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/DiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.c delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.h delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Graphite_Diffuser.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Monitor_nD.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/MultiDiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train3/bi_spec_ellipse.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4.tgz delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/DiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.c delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.h delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Graphite_Diffuser.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Monitor_nD.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ODIN_TOF_train4.instr delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train4/bi_spec_ellipse.comp create mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6.tgz delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/DiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.c delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.h delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Graphite_Diffuser.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Monitor_nD.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/MultiDiskChopper.comp delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ODIN_TOF_train6.instr delete mode 100644 mcstas-comps/examples/Prototypes/ODIN_TOF_train6/bi_spec_ellipse.comp diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train.tgz b/mcstas-comps/examples/Prototypes/ODIN_TOF_train.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e0919965d0067ef2a16a48627575e3cd5dce78ee GIT binary patch literal 36145 zcmV)aK&rnViwFS0iS%gz1MGcyf7?c~;QniUiniW5B4r)`cuS_UvLq*dv1N}W$C>B# z@&}QigqYU=pd@ON@4j{P1rVet$H`<4&O|1G?&|95>guZM>gu;guTFaBZ(sJ3$PXvg z|Mh!(9LH%j8iM|9w&-8StMk9|Bix4DYPe3_X?VhMo37LRU!w85V3YaGoS1(QKEpDmSxV#DDYIIPbCc!+3rV|nQi!$(6Kb%~O zncx5HUj|T0eGaFyMHF6MCBp4=T4fKWe@PsSMuHy3A`0Rlx()_bm80|b;@#CE4*Sr` z57WtIFp0(M#pLp0Q4&YNWb8+ut>UjHaS|r;M7;Lr0sMjT*WsijzKep%^kNj0#LLK^ z^aDcv5SV^C2`0&&NX-U%`Q#P-^C1f1=|o&C_QX469PvSOj_@Y~aU5U3>mNqpc`_aQN!Sh0#P%Bv_vN%dkAYAc$Qc3I7K300M8IK&QICT@79LIe(E4;zA$-rL@O%Vs z#6{o(p`%2ch=z#6@eEL($AQ3c!~YK7zIpfdecNV_&ZVaVZ}G=m;1YIBO8|_kIE$PNpJ(QX?Q@ z%(V7n8Xa03_fp1e5+1&PG5Npx*=+aR~f^aDXKc;b1hqsVD-zh+rCpI2B=DYts1xe}dVG@G7+umcI!=vSB>|D+*xgkDv-b z?O%o00ak!Ea2gOMtemA0)&yAzC|*zpVH%Ho;LHVJ5{oy7C-0Db`tuP@X&5A349WRI zGpwhFqJpg+V1EI#`6!WWI0FE{T-SaS5-82{1|h#6P2nGWYDC%)5j zhwu(?fT;v6UHL#o924N7C;^owSt!sTt$>v9!*!liV3mNkBVq+0`dA{t{fJ<6rxPUU zMQ|0uAmKxvY|sp}lJ2Z)&2nh^0>@-NAtrlvAih66e%al=N|M=LwF><*JT>meIFi%o zvik1mWn6tveAG*(J>)&z=eYO7_Xj-|5tZ3sxc&U2`{`NLe@h)O-CuX%sy|u|g~w&p_Hmh{+X{g)xeuJy;+6S3&0sVxMu1N6Xv25E--nJRG#7E) z20=d}fd+*vio_sR0~C}E;@ESpIEGQc1r93$fk*RT(%14?p{ho|#A0w2ivDZ{lNl+@ z%VdB(!?qM=xcU$+;0KK42)R3nLZCg(eS8zfLalW|L#c>Y3BK_MKZAO~6!0&jK+9%Y zRMjAi7G)q-a2b)zYWBxaY5>J({=>|=nf&gITY4E@f}j#LHLgf)lwx8yM+t@kFp}Nj zB?l;eq1Of}LV(PE1o~v;k5L7K^`{4nNRt2ui3n*wQPP3=#ViID&}Smxy&F)1aPH%% z2NR;==OCD2W56w-3c;5!0Qnf751FzNx0BE!T8XF+Ae=!Bc z)Dz>eQU){tSl;?D{K4-pNpPBmG0RVh^Z=J7P$xjMo=3>e$rY18%%-r0quik7YX$>= zOCB?koEfG?yT{PKKZLD3TBvWX!v2-jpCEz-Rw@zwc|=Ilf_7mEa%^No0zj{jN=*$> zKHcE(hp4y=LaD+5jY8m1sqG?7CUa8m3qj?wB6dFP(8Ha^PO$`*5YBC+gG8aO4+NTwnv zSXqK-w7~wdE*48QgN7rkVnlN=&Tg)PNmeDe0rDvQgUu7yDGvgYb)*>sbzok`QWB2? ze-azU)yohJKkHibcmfTh_N}`pwSdbg9Ee8AZIrx5sn#gf8>L1=aBDPIpal?A1773i zN^gg!RFfAp5e$cD?MRrgrp&>-&?Gh_k1PQPsPz50F$6$HTnA-n(bk)p(q+90q~xU( zB^F2=Fr$;5N&Q?YSRQp+ zUoFd;rG-%}N&L-YWLTK02hrGQ_b47vK+K+h2t;s;Oogo|I|+&-6PJT)C|hRzSQ-~3 zUC7vr5J9%ea9}{B#^D8E54<}ChP+W$m^FZ?D1cVWx&Tst*+3z(AqtT~OsPX?F=G2< zynuQVqd&j^kI5hcqR>ifG(!|ftcCNq#1h*C`H;v>2;0l<2ucII!5md(SUq6GgMbzg zYB&MrlLi}`e8vH=tjP0FmShCxz_cX)pu>1*yCz zd-iOqjj-QG$e(6xcCpP>u|H_+YF7?OO6hx$CgwIy?k~Y@g&nYr$q{KaGp#|`M3q7S zCjd?yn*50G_^aZ({rsK+B;ah=xXKTDn%hr&V)L3ETi>oLY-iyt3 z7|(G=5+@^S;}J`Z60c`qMPNgS)|1|I|kd&&y+7^ z5In0M@LKWg@a@s@^X1ads`LVvgzv)Sdq4#7tnv(b@(%vIn#@2$Hj{D>jTsV0d*Wl9 zM4yaXm~=B%W_Gy94$^A@_@LsFM9hOqgRO`kf${@Z<=Jh5-o))Q`0sd|XuJJk8=6z3 zga+Le&1q`0_V>_s-AcuEaBadbZk{6*(2)K}z+!B$NTFdIC0sP8C3I$rF?9~UHpLhK zYrkizgErt8B`vNRKI&|KUx{5>>2v&5Tx|p{2o(l&(Gr6G8<%0hZ=t&NAbS?wXg9D5FLc9ql;dnl_q(AzzSx2Qx z{%uYrP@30NO8n?DNP6fixHW?U(v-yxJ!en8@;QQNC#N*bq>>=hV-nnw+49t7wN&b> zY=@3vQUTkdcYMd}5#XAR6A&L~*bEsWM4u&4gNB*aIo&R=yZwZ0nSGqk1*gRB_o67n z@(6QxLfA`3zuiUhg0O!*-RuWtRxY=p>nyI)b-pLoUs)-E@#v|s4kAh2BWc%-<+uPx z$GE_NLOCXd)lwD_LN^OX&^}D>-TT*P$GxNXrw8Y+-kwxQg91jK-cU<#J}5K~`h6I8 zo~!g0Rj@Z7p!}pan~y+;N(-A4HY%Z0{MK+wML0B@U4f1*SR4iFu2c$}PnbxV5q+nO zc$}WtLrtn17!a^?(Jy@|?#Q+?P_QUUT?yqJYtHTgWona;z*MK&#&3{Ym9!{a368hE z@=j%SYwPIv<*SopYo{r_;kR{me187w6b)DiC5a#=X(_``E?*Qb9GA_1L#4C@&i|sY9wJF-)-jXztc6g8G zX<;y(PLj3%!34fkGRZT;&p(qUfi@0Dg`1w;=;`fYN!NQMZbE}H( zZ#}}sp@eKxh+ntN-zWh4W@7ac3xC3r_+Iwth2*yQX~e` zEE_G$M$59%vTU?08!gL5%d*k3Y_!acmbuY#wo%k>XfZn>dbWbHR}!sCy+L2vm74sw zDgSNBf7_XVTbXiL&u&MmI#yGSN}b9!E1qoBlXca&Sm3Zt$g%X-s$O z?89&BR6A2nA>3KhId1YxJJ+dn8md>G{#I|S>**P(j6CT&m3FHQXgeTy-HPKlo#3hC z5Zqd=!OuIDMyJzK-<_7Lzq`$PQ-627w*KB~)zo*dQ8VRRp8Q^RS73F_SaqD5XRz`d zja9R*p*7p>hJ{tlw9+;$x*bPj;+isEtKBruRWDXz^+92!`i@vNEm}1-v=+=ijaAc= z-`h~8)v;*h>DJq(M_$`C&s$DS)vY-lqU{RoX#NA&H5!h=uH|a%>W-^v=G8R~oLZ-? zvGY0_JEvVUG^;nvcR)#hueCIGUc*_!PI9=-YJgy?ExXsMw3~_*T7bA>ofaV5?5OXx zX1$@mJFc$lwHo@l+foR^_l`oURdMQ#PTruV5j&QMwQCxIw%5_Xn=Q9v5UaTwnNHgv z={mY2Fn+p>=Q-xP)6r#|nv**R(ujRv#9E%325p?2hGOl8Ccon~3}P)q$y%#v5NJF4 zx#yblZc8BsLaN;`-l+)$i zX46p4t?Rmu)2?R`9NglZptTUzE+nw|#{qGO|I}d}6}+5o_)oe8Nd#=ff?DH$mkJ+U_tVPZ%e>sxx`g%c2G#u@D*j6k z<<0{>ukMPS!)Y`@Uy*cfMd2NJ0YO=>1Qpx?i`bb@F=F93g{^0|Zz6ex??Xda7bn$U)x9p^+|C!k8D zQb~0&%JebHbTZ2HGRkx_%JehJbTrEJG|F@}%JenLbT-QLHabtkPwbb;!v2v0H)d~QxC{Qv{Ab0CD~^; zJ+%5#Sg289W>#3S{RvXhOR69jI-8W#qLk#~w zYrbrp%X%kJZs%hp9lG1TP4Qsg9>e~fg*;f6zWowpYg!Jn#Cmn|>ipHg>sS9Hg%bE;(M1&Bi&BiIknNN;Uf_5hQN-LfhF19zMR>7$76s3Cs#8-5 z{=Dl}Z0=Ie58=79uaT|F5HctdgY6y+tO%FB3AfUIG=&OvD%CJ;b4+}zzt(svrtHZW zi8!2Oo)KT5b*`K+&+5u*HWNd;vot-fJD!4bEPC_Ij z(N5$rNEaUEHo1Fr{GE4ta3q^vW}_}V+N5T6SMfM@`)P529+nlOZ55 zgcx2w3G7ZNmRj!6zAi(oh~3M@vh3Bt=*S{#lpq*n%LT!2Q_2t&Nc#>}d&ho$28$Cq z$CPi()}DU;B%9JU%+H^crz@jNQPHf$qe`{JmD3Mb=C1jEr@zCB+%2aj=dPA! zyQyB<)1aDJMF@}q3d?x60P-OPxA;)NMGZ|uKD4@VXmtY>mu|tx9o^L7t{KOrcCch| z7x{uXAj<&Qqw*I5#Tk(c6iHLoq~XFF!A(*7kZB@Fe5!SyrJ0n(E2QIxCF$s_l8xm} zgyV;la1^Vh3H_xD@n%>50Z`_a;2lYfpq*mgk$-SmyTa5$^Llp z_!XsNN<5Y~kdJ38f_m_67uXn67pY3LRPCYuxFBCVOxhjh5C7;h#VRpFKzfpZ!M!{|+MfUrhoZue9IuW$;F7>hY#R`1n6U z_+Lo~{|Suv;|Iye)G(DEO=(Fq0}PcWDrCk9-qW};*1@lPdF}hBG1*8 zU|P|E0hAsmCGnvo&M++c_%Ui1;^g4XaqsZ`>FM#wc@N|EN-S|@r-IusDU{u!a?9FY zVey>!Q2g?XiHv^+l35hjAZenyr{YPN!W82*W7UTg+AhMi+jtVLKwg(BNl+!iF}FAH zN9kfrz61~Ti}{SEw1tUo`AJw3m!s*0KeE>qsjfj+o?MplmAE`iC4L&=rB$SqT0aPB zB!4sJEplzDB_4`=_tunT}c&M!#T-=P**YL zzXAJX6YP@>vBz-G=iS$m0*4LfBR=%1gM6)!b=sJNshRGJ ziA2S?c?wRJKk!ZE|4zj5>FL{3Q5MI5IJAL%m8%PVmb$&7pRkO}bF6rXn)l1`@OwBm zyDN66t@!2}@t7jg;pN}u;yR56u{fWeQ#mQ<lD7u!^9Vav&vDx#cn8TAt%#atZT zfdGd&d5eF5A2AR?hOzUxVwJT>6mCn4(p|AzfP&+aFn^0;)eKcZ+$Mw@W-SI~V}^)3 zEg4g+B0Hrp7X^8g#vU42fXdH_xFlQvi6Wt37vfOzWol&sXND*ju7Q-H>7hzgk#nwQ z<$)S@9i+q9pIk1dY3QzAgHo0ABq580Lv=ztwd{@kBnod$8jvss1)ehn*(q&Ua73<4 zb3ZOft!X#kYKmMB%9T;cx~HIr05>V;ZPYOL^i;;ppe@6xxOC`@-goyg+llNIDy=AT zTz40BR`C=&u&V-UD3S(Wd*-!gzxGUR&(!wJYhBwjwe{vMzo zxxrk8>QIc1tbJ}UH?Ixm=LT~X$U_l4sHV`e`pWwwQTOayxY{ zXixbX;DyXCD3cw4c7-L&d~j$FWqRt^kw5_+7m-Aqf51Y8UzKcp=o!d(JpCOfFonh_ zl=9RutBsNkH3e>Y&CO8eafURH@1f1f+jE(oAVr^CB$ro%dlkO^bbNvGgbu(hQ?Zmo zK9=N56x^fbRZv35@to3ZNL8WRbwmN|s#FJxs4YCkH|fVKbjC-y+Tw#oCCAQ^0cS8P zQEe@w(kkcV2cEm;WR;wd93t1%C#tHAeR_&lT{p! zKnpFX$6B9J4@8$NC3Dt{1NUwZyE4!?6NxmqJ@1+T;nYhEl{-H@I8251irZv7qefM{ zU?$Y|)+yaNRsoDW>!H8ZDueQh6LeV*nVdGHVM#3Dzq_IJaBy21EJ_1ASo3q~x)ha0 z{`g|x+a(kB3dx@!r++HJpTAnFN+u%-9jBI|VKa85U~h4Gf$8PA%sLDCdp3p#yH>a- z0`D%=fT${H7pqf<`Y2t@k!{jHm@aL(gv8%PwJNq>L{oo2$@jK}G}LHGB!%KBR3_b^ z%nypYYJ~7}C(GTba(A-aUAo+@gDyu2PlC&VCQIGPQg>V`151y%cB~6)#JhH!Xht$F z^{cjFziONHtF}?UYT15ak)^(^>RQS{#~xT@y>0=79IWK*rQ5xAie;FPQU)^XckK|} z6kR00IBWPt`AY9$nR7+jbICI2`J_Epq&=4`bDmFH1y6#@fhJ4c$x?S*Y9-5TM%Emr zF+Hno*t6PZJ*#chv)a8qTR9mv=9s4-sB<|c(TnHV;lcU&@u^xc^%;hnKwM5?-Ime~ z+2=X{u3_U9SDYTE?J0bNLiZb#y5HQvpOg2mU&A{82v>SzMCTjXc@7k)0yUt5qwFRb ztlm`+b`^kXuCIhvD4_H0u*`woq^%Fj9AA$EdN(Z7Vi2K)hc1`F?e5_A>0q%tSUerv z?GEl#)4W2EUJ*{7$_05>i*_U{E(+{dAv;~B86sO;rGi8P04Ps%qAqYk2g7 z_v7woLi-w#yN2egw8&jA_~%0Yyyc&_{8KKMlm?z%3HX$Di>znlY%xEdop9dxIQ5iI zO>fEG9PrrZD68M9&9khj@Z2%St_SENvvjuV^_^m3>kX;?gJd5YJPQ(T2ke5YP=1$L z4f+(Jt=dHpPwl1DMuIFcCAkR0XMonhi?g?^BKv(k{CXU^;I;$iu-x9?96O)3f9wydZQSaefJ7dC;EE5eX+lvb-m1evB%ll&j` zjEHHG&nPCl8??NHyK6*_<^*19a2YXlt>Omz9%q#?nPfEL2k1ZLB;r9{&aow(7C(p| z=6mg(^{=MEWEhMF38@8zZ<3M_-^@yC!j?qFph#O3z@s|rLrELX%a8g?c^OLSP4^P3 zh@{396|H8dyQe%~sWC0&;i;;kc*Ec_>=QnHdtnLX=eLa~9p z+hvn&SFRDeyt?hO5w&ZdX@cH8%~(XnB+??iShZ%s%hTh(ygxoU{Oi7)ZoFIKtGUG@ zLh>izlD1K#y}+kyZrBc`oj-LVh_V5}{J4%QX?r5B*n(D1FHN6n*VqTSqJfGO+_JGE z6xAMWJpx_tyI_KB6W~P;g3?}6;}raXXBPc9p7ulXRPyx*2~|78Y`h6&EJPPhZ#o>} zMgk>;<8=k$_b`i8*dGPu=c>p@Yq7!T15iHfVzP3aEjFv_<%-a^s(_TZ4pvlid3gjD zL7V|W%+4lMT_F)JQFhoF=c>G*G}F`hY-H!el9oJfxlUrtgt#TxKx9kL)}7GseRFv9 z>g?U?gTIpT`(NP@cb>)DcgH6OhlgnF`IsSlQP|$5;n2BNdMdX{L0X2qsaz6${O^u8 z+LpI(P52P)R)C(B$g*Vol*qIxk)cO_@q3NFgW_3Y@l6_UiS*eL>G$*(zf(z6Q6)&% zEuj~+gl<#(JZM8A$nnY1)<62blz+8P=Kh~ID0Gj)_%rCBGZ3a<y+J&b=S|U*RMrYygYa>j-wG` zF)5$SgJ^OQM0ium3w5uC)ubq#%Bz2bTXEY(Og+AI`%uAy*;ceNpks~ z6n^$GsWCNgC!>Zcr_&2)<0e>$!Wi#5;bP_nBitez;Uytp;(f-z0z!}PFM`Gc%o*69 zPAJ1F-8vJ4S`WO0m`*r>ztsNemW95&ok~*& ztnAv~oxXkl4p%CGpLGUXZD?6F=V&acExnjB(cp#YCC6rM;;<}t%9F(GqfKxVt zQZ)>tIMFTP#xC6t5l-e);5gPTRE}f&G9JDuhVv-OT+=39-xX7mV(?U48(mI=DWWOD zjnmy(DUoA&0SaGs68Le5N$@e9<7bt5)=qhs>krw6-nFYV_4LRiF$T+fI^a=`)#kYnbL`Lg;tl+w2O+)diST-Cqz& zED>IA#Oajml6aHMCf41FcyyuCU=YfcAquXiBXXQkCSS}>&sSFvS0r@bk18Rl^QR$= z4fiVm%GyH1r7>7H2vTZMnol?e9LSp#+3 zO`tODa-%#em%8;4cobp3yW+baFuKrQ(Li^y`p4phckX*fp$3b0PGUUF?>&7T(4kP*IOr7h1@36R- zVrqQ8N{quj!(f1j{Y?5~wri?qQrna(6mcQ7Mwyc@;@)(g=uE{GL54 za}Ni>DalJ4?7ka6nA*6aOKXxFx{E0s(v=vA6veY>ir!uBfaFWkTQE+yA_tl{ay4ut z<^mtn?O=6a^hr!v)3j8Z=v6?uM(O4&qlrllR*BL9RtP24oeyMsXt7|j;>VOF$?BL4 zg`pu(6>udTBctMU8R5RCUWzUQ^w^T9GTmQC)% zkP+Niop8tf`icWD-n|m2BhhX((5xzh2nje8DsX8!p!2OLyJAncI?0)`L%;b(6o_HV zf_9(yS5Z91;5)Uu^XA>F-kXCnU=>l2F`q&OeTwZYhwTZB1HFmx^lRD%vkW8_pd}s4 zNq0#Gvia_l%i^lweL`=)NO)nyrAUQbQcx`Q`^#|`9}Z4WV1n#vyoV96AR6GP**YtZ z5Gth97`Z{&ZR~Tjr!x2beljQb4fLZm1SeK%F%$DSr(CN^h;ORP$=5dg= zCr{vUFqzITujDm2->&C_41220VVe*iL);kjlPUK=mP-?c0+$R$bdL*JK+miRE6`~> zLPIa7kS?=~%+oH59kuEG>(*}|rJhD-s62IHkxERu-mnl5H+9e)oo9FfAIPxE4%anXSVfz{mixsuAJF2 zl;ck|v1Ql4*1WdJ!1LOvG=NSIn%%0`SzxyG|FZ5Azv1a~b))Eny-L^e>YT?bk0BDz zJ+Sk6EN366V;g~VWaAUK4*LP6ZuZToTY78r1J(R3q%c#EkvKRxk~kP|0~x~Xy%~%7 ztg@aVWY7=60Aaykca5GY_zl8CN8eisS0fXDK93U{QS!r7777 zTD{tRqJ0m_FXUs85=Ly|9hh`mtMrng{b+S4xr%5y`jZ9ABo0)CE?lYzA&EDbX*v{A zdSulO26jJ^cWoOV6WI4-^JwIOISdO6$7qE#TKt9eWlf%K1nDFE7qK~2l91YsdkmiWn*XIiEeW98$AgyT{dd9a>(zY?j2NL}8CtzsZ?z#NN z2isL#-1!v#vz2qpy4IYxvePLO*#zhVcdJ`5|Heim<&+w+5e5jXXz=k@Xff+a)n3&6 zX4f_5^HTb>41`~3>x>+U!8D%S#v&J&JNxqn_^|BsH!u=bHT}f#2I9%nND!t|bdgZk_( zlVqVEEI?PV4w9zSTf`tA0ouN_5YP=|;V*Div%pI-y^8g=k=m;P6{^a6dZvg(%scj}NK2HOiz3l0 z+m+r~%zyN)l$E<+>aeS}fNMRyM-vV813E7t3PoJp*^#?PC)O0qpg|UqT^6`;~oMxz4TZDsLsEyXlxm($8eDdnWYisH;4EYV`(>&hse@ zbGT?P6$uzCrshN}DZ_xg)AP|NWdx+oR;iOKQzX=q4-4obk4sQ3(5_+C@cVt5_LrI@ zQngf*Ob4W()ySJVTZ&wu`lDFo-ox^r_!CdfEF}Po$^-_!B{m1TqLIO%fKlWZW@wZd zNPLTv_4sZ*!V@5eS3&UpDJ5;QNI|Z-3c_nU|jAyIHPiD3nt!C)0P;g4l)_NCH1uR0`vZGsVhO-gN9Ry*7;ZelB&3Z#tC3%R(F~nF z;!1iNZPC7bb#n0fHJ^hbhuA3aCt^NRN|U`s#cF#LWHt?oM#Zw--gasGxh|bJcA3Pn z-ngkZ=vQ4nwWTueGTu5=P>6mQ;o-5u_U!^xTF0_U^**}v|LuyS$iLAsX@Fw^)?`{H zIF~PL**{xawsmhc9*&jaljMP^29tsIxXHCfNkP7rI>op@f6BTe;K@^7R`%1CeLPQ2 zFrMZaKq@1!?2j1fJkdH{ry~7@f?g`Mjl4V)pfG?g>KFse-yF+_Ms+3XrHCn&lzf2x zZ4N+qcrUGhiqW&O@)vij*WSrc~Z$U*X?o^tfJ9 z4b=}`y#4Wbxq2#BxR0@Vu)JKN7Gcf>a7^a^;DM3C6pf>s5GzcA+ZkAz0W*P!XFwQo z|Kk4LwBMgoAhn&mPoD-dalkQW4#$+Lt{fU!eT2j=`cF z1m!_+U47F(gs)XFX6Hd%Z8n_k=TX30UKexR&=TK;$@lY%XI1~XJjXMQIKJLK;dU8} z>2!LC=gct#{tJ%XEg!s-2NzuX+|V#DPTM-0R-zG<0bc5u;I^dGwuuYngKMcE;j`oO zvy>U4!nVhL(!Y{nrEv^$&I;F`D!)L15-9qgap1^3h<5vYqS#n<0ANzyVmz}4Y)rdm zFfe$uZ-UYgA3zTx6<>@&&^jJj28N%Tkx!jv6K_vm{}rU_D7Z!rR@ZfelN^dkeu*pg z3AU6#OdXAaPJpW9bX|wSN$YNpGe3*p5_9+2to%_N}pJ>J@PGV%rgtp9VEw(Sh%WcE?Qc^N0DJC9PhKW2GIi~=0 zHVJ~;1Sg(^tT*75F+IPCXWL4I_KTt1pi> zse?@Td8tE8WjRTb68k^8n4xQTG8YAZbQxTLlHFJ5n}*AWo9v}XpJ0RbT-jXa3>z3P z0TFDppp6~SWd`;w&wMOx^>Hc9_40HF9)1beo`2B}L<(%^-zXVTU>^}4>B10a&RYgqtK=-kG)|`wYE4Z_Wo`|FGi=sgn!&XBU(h*B%d$?hPv;6a@w-slNUQ zg5;*IYt9%8Jb_g5RY)=lB}=xJw>Y zxvh>do8;J$^#L{bPoi%8c5J(-t56gq^;`BM=du?oJTX5=U+X2bG)q7m#O+ffnG+E< zs(P7}QO^&>%K{MG_CXDah4=2&!?95e1!JMUK3Ai%IZCRkBFr-h;^FvMp)+#&KXlmg zj=C@)c}!4cbX$9_g^R4iG<~q;Uc|om91DT}TE|!<>Y1(bFF>BuU({m#%o41YUO81b zXloUjwNG4bf-07_BbK*RwDMODR(?RI*Tg3Cbq4Y=YszZ}(hg5f$7NGDcaB)eP(wSq z!9bx4bScOnI%#5RuYyrCZL4!nZv)6+XBF$5je6Z6m-y8e#TKyYn0l503;@0 zf-F7f!05}>k}Mcv-B(v*R9+TD8L`X zU1dlrx`StPorB1V^RjqZ$)LmvD98&sIiJcXf!Ubida5KLo=P#aQ6vhMQu@MkFr2>C z=V#@^R5aEu%Aq~IkC?hQc9UqIDkO#z!pLZVFN}l9M!~@Ue^Uqy$`Yu=(mxZjvYI8oIGhDIX^@@d zN(Lcwd}~L7QJl$mIsn8F%cmR_1}uZ39OcUS)DBjANZ7}UppRd-HjLDGB!$-M)U_rG zLgs_l5zTQjC6}B^SgRC(s@~$_fPkf7iSk#AmiUdq5cP)|>xv>Tq25}f**3{S--G{Yc_;7>hk|pZ>1H(zO z`G5Ip_TJ>^>xF;Z6aUd{HsEC@{=;efC;sCP`TVKkKUD08_a}?}Ftb92eo)}UP^Ov9 z#DVDT^syg~lIh;ikFLW11B_J}M%&Mi$GFQKjKoWPjC_G@z)0JxP7xRxsM+#~_MHRsG*8ckut_&<=7+5W>eVOTz0| zZG*1j4+g=2H}9u2&ZP^#hzei@`LjTpaA-z`c>o>UikATK(7?MWkW{4gjFf1dL~A|> zal^-{xU~vKpe%!H;L)suS){5{`4TBg0yYMIQKThW52qVh23W@>;6R>Xznvx9{lAEc;MAo#S z#ApYjc#7j;Cpp_efIB$4nT&igvz^45QZv3-;6AiJA0=jb13}`y&CzNv0IS?q7kpR^ zH`3XTrTNdt?c*u#2*)8HCxcCP`il|8!SB$Z>@d&lsLqlvxPL_+6(TYRQE(}StN_I` zbV%!(D#!(}!x!Y9!5pC&ZNbSGcVL$8@OZ*Eoo-s zC~c+}iBEaAp|&3lIKLJr-?aq;#h^{pO)IHQUXG(PYnB-EO~Eps+u*vfTDC?nIF5kkwBjh_t5ls(+Jz_?8aH;H_ET;=W<+5Tfya5^Ve)4%Ty_ty5!Quwk zgS!odal~X?oF{TPghf&-N}F@Pcm5CdL)P65;8kgzODt%Y_C(5~UtbsCx?jf8fsD6|%q4BF3p(qVGI z9xq3z{Kz^yy`|gSYCrh#ll@w&t+JZDGS#|^QWF8|STe|6eyYxKeVb^Z%|%Xm9I>IpI!Y{Rp*@XOSDwgtvV$0pWQt- z8~JKD&=fb~C=0^8DBM=>itKtf%CORqB``d`DvUr|0;XRS7Hfe?a45m(kI5h+Wajg+ zwzdNC5%jX&3CO2UJrEFa zoI2;QGY%(RN}IT&#C`>XNn?pAX*)`qza=^H{g zPWB{Jw<4*~Z>dItnq(=(DYaBjBUE&AKN$awmpkxTBqWAX%6f|f;{GDI_ zf*SKL2>(|hG-aWHtPPd1giJz7hCJee6qL~LG)}Y-e;^;wSN3;O>S5t8CTfk4&0zu~=mb+h(qWhW+o#bmr;L zk?LJI#?v-fP)tCKRFo|sQr;eXh3BtebstbdMRXh~zN6C+vApgBKOs!^@p7B+QH~;A zf}&nSG{`4_xKBK$RxoL1A)$am){woP-ULzgJ%tchtmxmW3!>&T9fz;6L?yPULB~n= zBTJ+%YvWU%A1}#Rq7f&WSneQ9a1Klbh6LYSKs+dc==!M}EYNn$|18aH=}P^YGaDrp z60b)S%;xwrc~1?~u7p>h!aU|l&fX5moIrL3%)bR-{;dS2o+_Pr>2pZ;<(LBMvM@X~ zIbF+Xx&(1rL2|dEk<#Lq>%UhQ!YL1& zx-pHANc%x^tOQZepp8ADTgBCN?B(!WG3yhhHNVJ!^fkM_RNG3=l@$~|07O8$zo(P) zvAth3STWrYBPl`W+F~saL2iWCI3cn?ruIuc!Ug9@|4>Y$Vj*)dF-KS|f3|fwlft9+ zeb9peiP5Xs{aC{RzW_Dp6L&^A>{JPSZ9K)Px(=Q94I;V<$6#$H7jDj}$L#l3T2R3_ zrl2huw5X1*+<}llizGt-dG)ReVyJ2@j<}ta|9Js#Xea6}(1DQpJPbosT&6VbTsmH& ziXw}!uUrjrL8nj)7214Tn~K&{k(l^iHeFP0O22u|M~PzNZpUeYjF?Pk)r)BYI#>zK zZXi9L3#WtIGS&v=z`oK<6KkuAW|~|W@q7~zY=CSSX;tij;HY6 zogV-A>h1e8`_5G33l}hphCbeY^_CA1?wi( z`LCM9U9oMfKed|ib?7PQxN@48kRvm&qyk-HJ*$i4b1@O-?lN_6^41z&v&gppc=t(W z2vEBttCVM*x#+vIBTHD~9LFWN$apE+1-FNhAlo!*y^k2<(0g_CsghjvW>?$!xTqaw z>Cliv0Cab2&Zm+b1W028I!j>y-mvpYgdn!Rzwx>QhJLg;r%h%v9RyN+ctcJ z(ZR8(XP6`AL<77z9II=Ifrt!iDD46T&w#^ficEk3M#5v1YOzQ}!|r6rCJJQJ6!SYM zeHd!HR=LK}2moqX-2nMH3k@G~?h)=2_C=DDkf+g84i$aD7axW)0JB1^#6h5_bIV(e z2f-~4nUqykmQ1L%Sob@tMasHqj%TKJH?X(+J*QicCrRmYGc?SA6d%1t^V7av$Q%jX z!vofMLZdL9m4MgSIjSbglS}dBQq7Ym;dV)k#u(o;0^I}t!sB8JE*+?l_o`V!6%T>Q z5$R56CXfQ8Gaj@d--Zk;nJlb?8dbAKSkWfPoFc6#1FW+-UT7SolBnbatL%VLzaz&M zi?V|cwAnEyDL;%YU3Vxmp#Vr71D3KnDp$#P zw4Jp?{O3STfVIY|=||HzF54UO-29Ul@4q`!+tswqtn5advzK$wo9UnyJR4g(ouJXq zCm_#cKm{K5Q`<*0_ujn2Y)POv&`uHv84xisMNgp8U~WxhMwY0&vm+Gp^G9S4)635X zl|DkN{aee~Bjo3M9_&nERvnfAp93R)o*?d4c~Q74=B1C2ACpCbC0f-Ec2Q%rrNV(? zzW>-jI7{Sxw3NkzO%8Q4s1@{~SWxS%ID#syDPBwx{}vau?T@#gR7=2e+w5k7iA^z5 z6%`V(Wu=S=C%8&jyrZ)ksClC%3=@qm5xpH_;9`an(%~g;nOzWNc}j+A__sMV*g2M4 zW3jG{MShJnZRFOtTi3>2evLJ4&!Rk=bIm?B@H`GAE{&Jc~}nU=+ya1xH^ zV|jj#{B8HQ53uO=a2+7C5*6OuQJR=wvM(b6`t-w*@Nd5i36k#F87%acH;*HX#rw14 z(;p8`<*tC>e{dQQMf>rzNuxbhxEq!TtC+q-_`)>dMcko=RythGl&njQr zpnMI*Za^-&o)u>C3(Nw(uC`u#z>WRhQD55 zTj%^aJa~Qh{`JB6@zK(qVXj(^JocBJ*gQ+!!=gF1eN_xueDWM+z;cc*0f zqE%JA;?8tHty1c_e5|-v7srMy_DzAdwB|H$EhARFsHqnKETOcAU1zI^34A!1j}93} zQyDsXXoXDUak($f^KuddUJ5M4YSpsnY}yLBQ?>a=d$c);q|ML(&6~hyQ1h=N+8wq9#utEP_lK za(9$u6q}BPOH3rxw#i9>;zAvKjTJe70T2u-MeIZXYYsYAz>VZ0)!1L%JXB7ly}`}b z=b|jb88I~i9(jGH;v3gBp7v;LlTagZwo&`c3Ck#~YZ0a9lS^*tp^a?XD-_4v#)ch{ zN17?Iz>qFjz5@}m%|5<9B?V9tQYC~8tmt7DqNMdBe7QdJUE`_gg}M|fEUx9*fZ>8d zAoN8+KPw7;+8@uXr+}8Tz48^wZM;NAKNNccS4P)s7x!19;u%!D98|pA_Po`oczLLJ z8=+D&sMK;$spYm;Ta8LB50zR56=W<9o69u0JP0cWz!1M^q++IfYAuli@0#{mrx^O- zh=29^BhbEeW&x3aGNFD*kt%=nE`tPEP!ztg%alZ3qu*cy*8REkb4}i*4}QegM?Q&* zds6KJsU5~*&Ib$F@gbv2IPvO~VwpktnT{}WzRckeA%=~74n_+qaD(m@bTHC(&;SJf zsysS81ojOTW~{vISS@qu3J&!iFjjJAcz@_vd0%6!ynn!0c`L@MmL03*X}n?z*B&rd zQgqb*(6Oq0jj^iz1IDVB8Y^1+Vjt5Z-vz0VoPhVEK$pUX$&niCL`V7BlZs1#;r!(n zkza-#v+GK*2iFXIb(i|w3*#PbIo--bK{jTfIgX>wJ>s|m&hB)qp|HvZ+N zwGIowT;aE*mQv8~0KFC!nTv!nw4^gh*%>tL+lu5?XIGfym=%5f(bBDJy0pY5U3x30 zPAVmu$u6o&6Q(K*L078o$_s^XM9VrhSw}=br=@FIML|l!@^PmMpXDWPlsre#e?awF zFtH-jW1ULJ?Cs>?Y3X!ns#bR;MZ#F(O5?81$@rN8e>E8fDqe_&SBLP>4mpN)&~;H9 z8;McFjGhW-2$DX{w*}d?@)Qnb2Fe^Dll{`f*AWld-dXuOZSwn8kPIKJEAV+1i99iM zBBQ3uD&MS{OPZ=Hj1e`T_VXBKMIAN6_BR_am0So++u_K+RCjt|ceP*5lJn|WN~Wua z%hKL@lNR{@6%K&_-_QR#1!W@kXJiUtTF95!yr92m$0TXkpjv{eKQx)EkJn=tWK^7ID@qd78L0` zC>r)zWkUB!+OeAzQ`;vzt5ZFF0s;_F)dGhsdJ5veMv5QA~-8tsKTy-rUD>f>H^zP5BGhk5o`S zS*R!ZtB?xcVrDHo)>MUc>+uq+ONRlo!#!>fO;+3Uad0u^D2RfJtXs(_3Nwq|t2`s@ zh%jjMUJ*BbgZ?gHw;$J(w4`sgsdk{DTKavZ8#*M@a#)zv3Zd!*ZB@76i2`sh!z)CM^ zQTL6CQ37O_sqq}|y#P)%WeiutFE*;1BYL z&BESfItY4v#s*1~5oPNHEo$d{0Z2B&O1dv)1V=Kx629KBMmG5BIE0O%NB3G_VyxO}8YRJ>9(94%HtS}6so;rS&Es{7&yHXEat!`mH zk(v5N`y6O*tDKu88Y4~g0MW!HhL-swlwE0!AS;UUcMrYTg>MoER_FxpCW1!P-&_(n z>i^%Q2f}hqWY^lXC99jZjajM!gzL?wqeVENG@2>!6+GOetFAP2bKsQSjG3#=!nD#S zS3OD=YkF{oR#Op^)uI|xIs5+L-Er^iFYgadk7>=@sQl5ZvmapKV8~>||1G7yqC*St zRgRH1;;M8Rx_?P}_7qFdNqrJ2lu^VUZc~YJ1k>>tiZr~IXTZ?BxDF!PKAKOH=8D8&b@h&N`Boh4Vik>aY(e*d?m@SD zaRWjzp7$|ca5x`Hpk@SR>g|okz|3^2OFXx~uRw`^zb&3=mHReOura(p~;ejhvC$+&eXwB-l)x)98|rwpiYH zK{g`oyYG*Yw8*b~J|M%Pc2iu!2ozhG#0B+er_%wQXjcuVt-YXA+Bit2(^`k z^6EaebG;j(ts8N5BaUpu21uSAnfFcKa`-p{Q?R<8?5}7Cm0&szJHZnkGJlWGZeXhr z=1N(U?G8_HrrV>LkQo&01?vEkSXpY3?r?OD?~6n;D3?C>o~G0CN@~M!Bn&5$rC|lF zEeVq1iyF>{)RRVrQ}{&DbViv#2PsTiR^Z8^IjXFy-a$6Z9*|d=4 zS*F`>CDNC6@DE`mcbSvij-=8DiZ+%cvP2(F?+J=wltwtwS15?7&aUoiPDizO->dach>l97_EU4l-dOt@?ryhgH2(S677&R)HKdy*D9Uos1q zJq#-~N(@~FZo*Uo#4hN>GDju%bbc`qp`U|b#xm7Pwk~PSwo=;N@;(l%f{#%HN|pY5 z>X(XPoe8`mZa??kExxKQ*HeBPSfZMa5HB!T#X=Xj}A4i2*t7O(1VQ)1qUBT!@$N5J(H1 zqGh9HIbOQ9O+Rwo-amRj;3Y19gXRj?cx&1>9nC@0%O(DR`fF5`4 zB`dcjPhA_d{Fa0;AMdURD?^$XSG^+n=J7HB%6%)Asgl!LRaQ~td9=lsdf9h^J<_*- z&3aS1e8L~mY^UqBXwl@e7hSi=x09*jvmV`-@KN3O^=aRFo7li;y?pdrZw^yreaQV` z3TI6yjn=LOVwP8ZU)7^)#Y}fLxnGR#aFeYnGG#8}vUb7GBfOd+vkk5ru`dvl`qe6! zmQ(Lhw!ef_x+{2**CVx)(@Ula4VFVCf6GwGZZp8A-F$SZm0yK5p9~J{E2bGsz^YYq z0ii{PRHcj|uCFFj1hMMLd+79il2E-jQ+K2NCLV=0Hoo4js9S#eP`<>Q+OP+Rv;@K( zeWZy0Kn8nc#=xS!~FvD;ty|$XD(PUmzQx5_|R zuy?9cz6=ZZH~k}3d<8B3A(#3+;FG!kFa5JZS#^GM8|&}?Yc;)AGkgDEv)=m8{eOSN z=WE~pho|$mzWfHj!eLS00@(hC-vTJMeR8iVEs5Dz7 zS9qh5k0F!tK0cG7O6KLE6b=R+Qq3R4;zbZ8C~fF+2+wgl2ph9gk7uLl0yn1E6$Isv z=h1W)_!Dt90};x>6K9<0^#~nBZ~O@mnwmuaF{YQA4wD;n(jB5(S$6T2$(<$A0)XGI zzwhuJ_f_`Nz!Kl7UT*0d4r_Z}V-IFHlz$mqM03oF?lnr#O%E?CR2Lo|pPh-LH)n^` z_Q~1#>H9ahCZ4@IKi*SdgF(+wG-gB}KYmAdAQD;eSVnv`Ma9wJG%#1eq3Zx|fi2P{ zJC7gBzNRmW%fQ29&~)K?EUl)f2`dvs;3 zF0L*@(TOTQynLf>Lys~05oRQs^@bE+Iq5HS#h2=dbPEq=ejHmhzrVw(0L|^umC4ek z*7e_V)HPJbGJLHvUrqtl_~Pvzpxf`cy2^j^b=**eU#Qk9+>p0HL*AN(yj2Z(c0ryRn9@ zaugO&OT6_8Q@x65YDOYSFzU zxbqwFRyN|TYQz#aS)rZNMpkI&i0qt(@#VTO?Mg1SQnGk$ zS3J8b_coUm)J9C_cEyP4jF8R&oe|PTMCU-ZM08d_=hCQl4~=T;X;ibhtA2lT^?RDD zuWznyH`lnoxyC)sHP$z0iDeX0N-lIgs^aXS|4a)D&@f)S6R;@5Jf-5wosP~!lxvvb zOXbKC=mC;mdLv-SQIDYCUCG-INwCN!$WrP$@^W834?ae(WDF*lKeNDjYruIA1gC|@ zGBgwx4+Ew}!ZI*xc4vUW%M?BW=+wx_^9c-48csrdpcBG-J#lpN2|UX zSpC7k8moadHU)-mLz#&4%;Nf8wZFKppQt^deVRVI_VyC{PpvF(G=Tu4Gt6nufk}8c zdxW_)D7UjRt4XQZO3ksQ6@A}+|FkPQtxBV@zm=LvODlBhJya?;D($x8LOpxRWY=8# zEmmqaDoqdS*fS%$aN2LN4(L|(7PaG9?PRetZ?TT&RHzltY9(94yoDNWyHRmFP{(5M z%u=<#W%F)!xv}3Oyjlye-rur0G`nQjZ?Ot=wBg_(SjX z_~7;Vt2f7ZbRaHrxP-N73lk-pMuqKE)om-z5JU6|$3ML~@4Y;D_4@tkaeC`b&XF6K zSUrlxgVBg9$u+3~Pv!Rs{@4|6Q0_=Ae8U0(;z8uD*tw**HdoUm%B0)jo7^2`w-o8KT;ngYt@*o;3ic}o0si<;#{QBVh z)sM%LhBg4{Q|+Q-vUf2@#b-EL6t?KHGTIv3KHDx)oFsY_F|wz$mAXg30jsM&9Sy*w z@<|J=G@t~CVqol^%8&_$+;G~T$GzJduGDBX+f4+;j~9GJfm3hRYv>*C_wec}OpGxh z>|6x7^h~^Flax$TDDj%@O|m;nwjHUyLK(jguqnrR7c>84_-7rZaCHGz>Rp6sN>g0` zRdbpa0DEL?FjV^@#Cg~61*1_o1IFJHw>CxV^;V}*5({&8gHx+{ts0npb7-;jhI;2Yy7D=t=4vH zoo1uc_F9cLK%>7A`CchWIF9lB z0+torPp4SAd?vJ5ZtL{zIVHT7#oYF)f)=kGPX;R)7AayuSZ<-5ZXyl&A-XQYv z4onyzjI8L2@8;nkfDxHTJ&a2SuD)?cl02S^Ob8<6W<>nZYS{eH#=#s-=Lx;7S8APB zJH-n(Ze#=6B1lm_BnA}a0@@N+?p$(dtKDc5N>_6lEYG$1t1U62m%v#bytFy%${pBn z2&1b(E+B?8$b|#-SY`t19qUs9&bl2L-a<~hjVxaKOMf9d;??NwVxWIABT{wdLH@0H zl7CWlx6)RxsXqP|A5=pw@vlMy8Tf;0lwYYf@zt1Wp|}`R4VWlnDveTpOeMW61LA(N z>2qr(yIs1zcOQenP`6yS)2hQ@cbZMZY`_IDq0?NTd94O4(zIBlT}v@r7N}voWvGVl za)8>5*J*W}hS%^q4Uo40+h)QR$Q@u}ujzVjqwb}c5IC#WteLk>n+unK+8mjMYH{Q; zP{ookBJGE;p?t0RP)o#37}0votb(t~ z9pLUp6C*+lH#UH8>K5O$8#X(_`~%MM%-fXgTY_rXF$b*S#~i2@KYFn4w?H6)!svF| zu4mX0gln_ju4&$I>nVOjHKSQ`^=peAmtY!h%mHe#;}T5fMzC@_?Y8&t!HzibQtXK0 zFU^1#?s^7vL4j--rfXI}k7;B$tp@60!-(Iu#c5pKaF?oYv(!>`o28nKX2bANqvEye zo?Fkdk5}_RR;iCI&KQ7U8UrE4D_HJw-hhE{ z?^WNWzHDH$D$a&L+;w2ez!1B7o7aM9H=lvX`>d3!4{tp_Wal(GHAZ35lg{a`*hYWr zez{(+G~4^-4y=-m{jytYRvh^0w#f18)@zkU6K`$7s>&dTnyvlLzU#sJ3j7O2_dN$Q znoY1A8ri@wgfUsBWmI%fQ`*#y!Fn4tmO4CCAYRodNm9blaLe$%bk#h{$$R9x43;Efr5Bsp1J)YLzQ2{0!0)`) zczUhz)LK*1D@`rEKzQ|*H74!`%Y{l3zIMrIRXUq^Vu2m+b1Fz`il;BfI{mRpxdPH z-rAL?-t^33Q}^-~8@of+lB4&vQ!CB`795-2>zA8UNqe7VcF%~_>zj-if>FT@U6CFu zy3f6bn*lgTZo048T{7fvqNE*ssHiV!H!DkAXxpNxweK$qFdCj?X&<#>hPKbU?kd{a zlvz*PRLPX&ywCsOHSC4lt<)Rv$e`QEh)%bT&n(&5NUh#E^;5!=tJ~7kZ8+AF-RAlk z`AM~Gd2B=}RX4I!)lUi2Z1oj#)p?NR_|NIe$H~;R#%B|W3Osb*>f3fxJk)MEEsL-z z_d}=BY_-zMFV?nMXsNnkAywPvAkV4U3u*D~Xt)Ne*i1upES_oTX4Ir`TWO~L z*JqS=v$=_H0l4EH7d!g8?G446S4#;*n>*SS4L)Wqxq^_F!cjXTxiraA-n{i0}9uC0(6KfZ+WmIVC&uoJ}Z0UhE zgK%()+3ag+WmS z#g>l<#@>C-!ZD(98O&-?=@FdtO6p<#&Kg;%Dp|r()=>+o=Xz~RJFWe*%E}sV+OU@c z+gdL#kuY_8R5qAMc$kQS$<|FuXd5ifjese!LsVEZHN6h3vGufrdMVOW+tBDfT|F!1 zi70DU>bUi%!fkabwfg3ha)}`8XXbM8G(CdJ;2zSp9!lDaAo*vdtWAx3>6$8R3%%NX z+X`T*0|9P4`{$MsX6kj6dTnG>Q`(^{qcGyI(MgFYr{Xnht}UXP%J^gvCF@ucN>))4 zs?&D=O@tDVqSo3dKB0D>d;Yf$tBgqHVQs)9aZ>iaq6Fm37Rpsw#Tn zY1A4<{I**Uaj~x(;|(0_Uwf37-RrAH7^vcTn~X4>30flyn=mb!n`nQTGphG%>UB`i z?GJA8g5XPS=hpYjEl}1m6aduorne8qc%_DWw-_L>q{7!xtnSx3m8QF2YooIr{?_1o z3&^pLK?TjVI((ziGR}6A!t1p7T1tzrRIyGyI&r|B-16! z>iPOr{dd=|zI@7}?%K4>oQFjc{Zmg_m}s4iCK?RjpLxl&!|-4VyZ^icSR?n9@h5CIP(*Mv!)3pQI9JlrF;Y>nHyw=<(*0X-!ZtQ22=|Cd<*Hn%-N4THgJZ@Bn1|Fom$;CVSKl%oCbF?w#L(e7-r(RA7PL)<>v zxA*_sd-kukjjZ=q@mHuh+pa8RY|9u(z&VEo+U1ncEYNfxr^^wx3~Ky}WE+cZzQ6su z_s(0AjcrUf>EZ-ikC{7nX71eA+?iqXPs*`Jjyv5o=Vkj<^YW3~RJr)_dDYr>J$lDq zV!g%u9)Do9#k#dsrK>*F-~K|Y@o4+3*@k7kjt#n;U5R{qke7t1)#Li zo`@imUGz($X4FY~eO`Uh4givgBn!#I}g3e)+Ph4_ciP2$Dt#c~BZn za4@aj5 zMMYoo4B}Ewu=-2dK1wyof|T*J7CE^&BxNAQ)(u%f!6CcG9wORGoSGh|BXTPm$Y)*$ zPxuTM#m*pv*_(fWDh%YiAO$?BRqwy78}b6Fw7#360X;g4Wzf1^I;;K;LPqVQk=-%c)byUgM=fAO>+1m8xiE zukq3(6`f29i)B6A07jyD+Lv0B^|@^eG|O8%mu4CZ&6eyu6d_XIds%NNirE9ab_;C8 zJJvF^Nvp2jX$!Sp)*BlA;H2jsDiazGxlJ>08D>(SqpXNp}>`TeMj46wuZ>VnTNb-TmuU8ID?#1M5n+iN)M zn%qWVzeFV5+{oiafw7eycusOLQj54;_2&zMGKwwQmn!!r%& z0L`TNVrpOGzW?=V)lTK*3rJOhzZo5!t0f*eZ=gJk2Z$E!p*{~|nQmpQU(l0^*JFxAebn~$nWxFoKpiX6I84`&+w1>_1M=$AD#^k~p|0B<~eV@Zrh1sLO2 ze6_|eFCa0d9VJ6xJI&f-samz_)x%XW6R)pQ_M9$yWPS6TY>qTqh>cwwzCXrekgN?$ zKe`4FSNY#Lz9#tZA75jY_AMd}I;iElle5Fq(|_a+sOm(00Ff4*PKDWy&yF_!+oz|0 z`5*HH(@IWP*=h}X!$+2Ze&X$I8-I6qcImh3vwQsP?gHUOo^+jykF&i0?| z>RM{}z-Nq#BA_zFuqod=CH|HnsBs!P3QNk<;BXQCSFm@ub0l`rW!Wpy}XxiRj657da z5D)E67>veo2$`b^Rmbj!V@%3qV#1+^Hu6LY5_`}GMthCt07IWeod`Ms*>0dp zCZnVuCJD0U8g++nw|aQ~^4Y)+u9HDb>Vge;kAe@O4ZS(QgQNyykUgxD?+(uo-yVa^ zy`cM(vv)sT+UnseddifNSJbmkuY^Arct{}>E0BRy=|ZUpX_iQ&y435TC50MTJYkIz z;@RH1jaWzw%QSodt*-~Nurxx;MrHLZjjJ1Z$Q4?(6!}d$*#Ee zw}WZF*wFy<--}r<|l{zjII}0B069(Z% zb=|4&y@&rE?VjO5+j-;@^J4GP3p<@FA|dbEyYW7F{qXJz6357!_Z5it2yfn<|M>3e zpHO$(LS1zFy3DAu;@iLdW={|FyYzKA)o%~P9qO-^_1D;D;Z_ z(If!XV1%R0SdPWBn|^G(o*E!{lN%IVacfm7a%5Kgd=LQf1B^!OYB3-0s?5B z`mR&OC2o7JOtFdXDt~Wx+u!y{--p3^Iz1)%0BAugw~;JbAa-tpNi-O<Ir4sqwGy{AvnF8I> zgKPdE6%Qs;7)qNTTnBjsHA%_E%bU_>67|Isyu4;VHzk%YZBA0irzOH{*X-qeb8?SB z%NkUcxd19FjxsU^GJ9|nXAuLu!cwbhxQy|z_JdA<5i$uxyP<%%Nm)Y?@;tRbSKT6a zLScx~5MT|PLl<~}Qnc%B` zJKAHQ5-f!k05Zbu_6fpnsq_ois}iQANtI;Feh*wLB(3lo$nG|5eE?QQRcw!%m#$MQ z$E6}3gVuJG+}eWIU>jjJ5)0fy=Q82#o1>G9cc+K{U;@1t-1MVP>b#hy%w^ESKxRA# z)oFOPkcX1BYmZX-s7muY=0_x3W5&hu6`;CuMibRln@2oil69qqS{1~y5au@C${=P{ zgc_9EQp=Pf54-qPCjad0i{#ddm|ge+WzQ@+pBDz=Iy_(*|4-)3-F0|>9`OIvYX0`_ zZr1-(^Xt$4pWoy2r2ZeFmBc|>2Ks8D0yYddtc?`CIk8>&QN5{mK$x9)R zl%AHG=crYKA`^^9gI+*+z>J6Q7Mf*Fv(g@2no`QT9pzep{B%@|vjq;ZS9eTqM%^j`6+MBJ<#^5mphs zX(I-b0}MlS9w1Uq&z_*R zuHiYl1@z0c5^M3%V8|MnSD2$_!?43w0~0jR2_D9a1P`_$(Ai(|$gqyqVYUQ^!>b-a z*2_v*0}b?&JmxJ%lQs@J-HVoTF_56B*(s&VGeN9SBKZvJy7K_PXiw_4#E;~WBrOT5QO8| zJ&K<5s8f1k=h*fYjj^j5MW^`cflm)`_idFV%_d2C66~)lzUmDx8Rou+*LVDyULX!Y zVB8-++X>HFL*8!@^Lv6WcwFz%@_iB~vy zEGfW=J!S|@$O)+laQDy=`Z-&7y5yTVLA(3R>Urf-x2_4VMpAN2!}vf zvvnC$)bgyiT2@mB$yNmncc!`!n;~XY*7%Uf#(@B;zm8F4wMh83$;Gdj2QU3jD_yeI zqQZH4HbRhf8r(qClab_eyxAOR1xC{%<^MGsp-*>%qfk){wGZ>-rJQZ#d)Y3SMW_O@L(bIgD&y>y0ovrGw_cMEoG4i6% z0IJquO<(IB=&z>HSDCjdyro`h*6H^a@S*PEzYH~jSd*{U(DC9}ahzb#0wg&~uy#06 z1_Q`c0rD@J)xs!;;bnlH<|ShtRItO>Fr2$%Fv(xUAla`*2(8?Wu3u36;?eP&QyCRu zjjpILo0Yl0K}pQ%_zjwe;wanSe1nyMt`|>AY$hDj5R9vHDAf6e0rW&wK@%?72NbMY zLEZ@(2a4Tm3{$m100m6El8HqTJS;z(Lb50hR786wBj7)=_u?(*?O!La$oxhvn*bA# zuM>&}J%g6Jdh^ryIgEfS919X7n&Q!P~9t#_z1mw#mx)2xz(=W3WJ^LDN71ueI+NY`8`favMVJwaO{ZLMV3?{ z0mZdQSLkBdH$kt5^?46}Y>pi+aB$!Z_f_AU;usW_O7)u_vMwEPhZ>|q&2e9)8~DMy zfNrkoJD?}m^xdlAla^24b^5N+bDzHJ_$?8b>Nm!ldmXi@ev|4qm<;p+Yf4)b;Tv&* zDUix2v%E>Eav)P<7A%nvkMN@83cU_d|LS@$?za;S6PYH>JODTprUBjlE5&`tpcf1Z zQuJO$dY8AYFzO0MUvW5tXEXW0*IgbwP%4SI3d88tbj_^Y3?@m~4#}a@8cagw4eN|S zUu9+CDA!0;VjvI$K}pdFY(71&*FvU58m+EOB@<04hbD+_K8S~sh4D@wz7iqd}cy1E~g%h=>%r19TPi72(U6S=0y+{E@T z$qrys=ZT0|FQ~wHs2m6UMy_H&B(voMey)jw(c>EUd4LJys}H?dRf*z67#siIM>X%K4j z2^xW#<|-~q!7`Z4Qwj?RJrdy=UJrVYR-Cc|j2I@N@uMnKZTO9zh_f1{LuQ*r-Kd2T zUqQ!+<|V-{rOB3Ge_2?VW~j8{L6S(nm{Y6tN@OY3?88Il^N?_L*;EL+*yt%Lg$1N+ z@P>1k(g>{cn{QaRyoT%2Tz(>5=zJ;y;Gnu9W2K31aUOxtX9f5!9}WAn$~}N$W%9D` zIy^&p#_&PKBZFWfFjVFnaXsON=l;&A@*Zy4#~;Um2)TCd%lFmNzx_(^Z+~+Nzt{iv zn>EG}P^a=!85`cTn{wfZ?$Uqd$pP-*W%n1p~;0>KF z)X-_Bq0{1qPPK+k&4x~)p;N7)Q)=i`Yv|O)6qpn%mr`Bss4jQdI-;59CvzVL#G08u zaCvgQnN!)!3;?t&{b4iHMFt`TxS$laK@8XS?dYH>g}xnaZUVE@#%kK?qLY;TqLPVn zHiD8IwI};m1i@axjRrzN;I368zr~b5M~=&Bsp9Y$$W6u6OQlVc8T&KYhZ#dFm=h`Xl5D`gKgf#PAt49YU*oU&0t*Sr1z6*BQiS87kkjIo+I0T>_zUO>8u=CE!QEP<0?I9%9v|leDvsbQ^rJyI>`B(ez_VMZI$-9eVdl84DMaxYbhRthIQplV3RTGpDreFfD$~1P$fGrav zEDvye$4A`dI9-Gks89q|E(B%2wpE!WPI08P15X`+`c*)0nn<4VLUM=~m$q+K5?HOu zw+z3vG#>%CaupX31dB@ zNeRtp5_ShIoKF*gxEoSmM5R;(69!8vb24Y9zO=;_8S}9jQnSyx0P?{a0zPwjqB&u3 z5)d4~b3iP(_(!c!E9X+o$pM%QXY)hK5P5G}-Kbw^s`5~}!j`9HbBbokiKx&m)6YI< zCm)*~FycWfy*puRbg;1~MX5~9SE{f^eW=?$YQ;Nz3JoU|csxJD;PBgvAJ4yKJ3mNN z=geIgneW8RBb&&eH7$;q$oPm;7#d()9u7mp`3NHBZ!NW*1p~!B)IofM3-vzI=Re|GJ-T&rRS6ttJyw9l(r%UGZ64b?>dK{y|A?&oi<`2cuk_B+IhNO9E<@6_N;BpFVoO`aY# zF_W`7QZkm+AY^79O4Fv{|2T5NwC42K~`Jrb{` zb^e3#kVQD?hA%4zWb`QNk3-hj)GMEaI*F4ec;o`AruaSKUs;tmCB-&Xo(ELjQ?9zJ z>@v4f-6d2#-E7r8mEY(g;HtZcBm3K&3woC7Zh{v-W#f&4CRBH`Y^l1ZN_9_#>Yjq? zo-)-PF6${*-B(iE|FMeNp3YR;sr$7lEmVI~rnjet`kSt#x2NSoP{34GnI%r;3+nA+ zq-2pUE@|JaAn3WNCN-7L{*cP9%?Faot{^U;vTO5)q_P)fo~^QHCjT6*28D{cdaWty z+QWOU9W1Y=XD~5uxpu7TYN+YzaaK*&-xOvjP}7$}#8lJORci_60|KP;r` z30*Hc4WRjm^m(m8JIuZaiYf zx>Qo-SY|2Bb(W&4^GRL}-6m~=V-^dY&%=paHvBftC?FkHUZe;KQc)|d9zi1qoJJ(; zw{j7GWfhjA5kpQ8S@NAJJ+MI@&@~EJ0BHqRJx#G#Nv}W%TA#4MU42hF!7*BaT$|5# z595)c*mBSaNpv02_FuxXEvq0leLEn72RgjG1EI`Fv4twQ$-hA&cgL*{sfX*|X@OM4 zcOg@L39+&VV*=>G;raJ8dm#-IK`yIUSM!vtGALO{=}W0s>+@L77z*X5RIHvvvtndO zBuo_Yl^DW;NeNM^k@`l4mzc~|GNDb*Ru^V2Gg-?h`#2q2-SMivI-a_Wn!8Q zKqX)-3N_>WSurLx7oIDEp|sdS6@Ie6AgT^70Febx<&x);wkuwf$+k?Gt{#(X8DY80 z6|q>XEw71+w_UCf&}+U@t{ zJ(sOCGz2xu`ib54G&n#611c z-D*!6@5Ehgg^^3IdvU*;+n`WnCi zzglRm<+FnISt?k02gX+q>RgJC6h!bwT$|VYV?qkprI4EP*&4A`&)Cwh4CzcrI%KCe`IUa6D^z=`N-SN~fk4_$L8 zt%}g*_p7gx|9!%Otj{(w$eJGOc(z7Q1sK4+HA*`jt4v+Qv`-_O!4dkW9*@8SE+ zdVinIvS+jGk8hSe#!qZoU>mv(CU@umWU-4+6;~Ws60yKWt^AL?erQv2A?3U^CiZ42NwG$2tPMK5C=!m-wbu^uh;QXAq zL+bRb<#`pNb8?Zm=bq)YG5?${l&`&U7uq7~hfc$@Er+qhl8%Qb9y;p0D9=bp{Lf=@ zd@cl$|KaRrOB9ftYQ&Pl#>pe-s3I~0sI;CU3mRqdGFND4W^UvMfq{5t1GNpNYH7l1 zCWg{vE7$@FQ{t9o*)5P}BBM4#%3$?C^X?0vY_zJ&S-TyfR6@;>WK^?Oty0v4khjYn zwJ3#iQ{>Max+p}oJP=T%b5#Zb!m;<4X6%;xNt6u?RSG0h< zs5rSt`2!xU4aKdZ1L~?xxDu>LXgN-V{Em97!gUV*60{;&j4;(Xel^tsqJ4~K9Kk>! zs4RD(NJYg(`ZJ643ySm?Dw5bOuaPI!JE7dkC%#Ht&ZjOHCjX?!e#wI`rDiC|K6?bF z&=a#{pSmi8fFWsR#@U#wWOY|7&^$vk2O>xIsY&)4WI@{MLXy3Dls|Cu(PW=WvQKA| zeOf^FsiMJD&|ta{*{A-@BK?9Q{e_AoN*2aNO%k#+H}Yg(BELOW the beam axis. -* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z -* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see -* related bug on GitHub) -* -* For more complicated gemometries, see component manual example of DiskChopper GROUPing. -* -* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. -* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the -* chopper timing and phasing (thus conserving your simulated statistics). -* -* The isfirst parameter is ONLY relevant for use in continuous source settings. -* -* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper -* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) -* -* NOTA BENE wrt. GROUPing and isfirst: -* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need -* to set up -* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening -* that spans the full angular extent of the openings of the subsequent GROUP -* 2) Add your DiskChopper GROUP setting isfirst=0 -* -* %P -* INPUT PARAMETERS: -* -* theta_0: [deg] Angular width of the slits. -* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. -* radius: [m] Radius of the disc -* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) -* nslit: [1] Number of slits, regularly arranged around the disk -* -* Optional parameters: -* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) -* n_pulse: [1] Number of pulses (Only if isfirst) -* jitter: [s] Jitter in the time phase -* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? -* delay: [s] Time 'delay' -* phase: [deg] Angular 'delay' (overrides delay) -* xwidth: [m] Horizontal slit width opening at beam center -* verbose: [1] Set to 1 to display Disk chopper configuration -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT DiskChopper - - - -SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) - - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -DECLARE -%{ - double Tg; - double To; - double delta_y; - double height; - double omega; -%} - -INITIALIZE -%{ - /* If slit height 'unset', assume full opening */ - if (yheight == 0) { - height = radius; - } else { - height = yheight; - } - delta_y = radius - height / 2; /* radius at beam center */ - omega = 2.0 * PI * nu; /* rad/s */ - if (xwidth && !theta_0 && radius) - theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); - - if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { - fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); - exit (-1); - } - if (nslit * theta_0 >= 360) { - fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); - exit (-1); - } - if (yheight && yheight > radius) { - fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); - exit (-1); - } - if (isfirst && n_pulse <= 0) { - fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); - exit (-1); - } - if (!omega) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - if (!abs_out) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); - } - - theta_0 *= DEG2RAD; - - /* Calulate delay from phase and vice versa */ - if (phase) { - if (delay) { - fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); - } - phase *= DEG2RAD; - /* 'Delay' should always be a delay, taking rotation direction into account: */ - delay = phase / fabs (omega); - } else { - phase = delay * omega; /* rad */ - } - - /* Time from opening of slit to next opening of slit */ - Tg = 2.0 * PI / fabs (omega) / nslit; - - /* How long can neutrons pass the Chopper at a single point */ - To = theta_0 / fabs (omega); - - if (!xwidth) - xwidth = 2 * delta_y * sin (theta_0 / 2); - - if (verbose && nu) { - printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); - printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); - } -%} - -TRACE -%{ - double toff; - double yprime; - PROP_Z0; - yprime = y + delta_y; - - /* Is neutron outside the vertical slit range and should we absorb? */ - if (abs_out && (x * x + yprime * yprime) > radius * radius) { - ABSORB; - } - /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ - if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { - ABSORB; - } - - if (isfirst) { - /* all events are put in the transmitted time frame */ - t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); - /* correction: chopper slits transmission opening/full disk */ - p *= nslit * theta_0 / 2.0 / PI; - } else { - - // Check whether each t_offset carried by the ray make it through - int train_index; - int one_did_hit = 0; - double this_train_t; - int all_dead = 1; - for (train_index=0; train_indexalive_trains[train_index] == 0) continue; - all_dead = 0; - - this_train_t = t + _particle->t_offset[train_index]; - toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); - - /* does neutron hit outside slit? */ - if (fmod (toff + To / 2.0, Tg) > To) - _particle->alive_trains[train_index] = 0; - else one_did_hit = 1; - } - if (!one_did_hit || all_dead) ABSORB; - - } - SCATTER; -%} - -MCDISPLAY -%{ - - int j; - /* Arrays for storing geometry of slit/beamstop */ - - circle ("xy", 0, -delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslit; j++) { - /* Angular start/end of slit */ - double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; - double tmax = tmin + theta_0; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); - line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, - 0); - line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ESS_butterfly.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ESS_butterfly.comp deleted file mode 100644 index e627ce669d..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ESS_butterfly.comp +++ /dev/null @@ -1,614 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright 1997-2016, All rights reserved -* DTU Physics, Kongens Lyngby, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: ESS_butterfly -* -* %I -* -* Written by: Peter Willendrup and Esben Klinkby -* Date: August-September 2016 -* Origin: DTU -* -* ESS butterfly moderator, 2016 revision -* -* %D -* ESS butterfly moderator with automatic choice of coordinate system, with origin -* placed at relevant "Moderator Focus Coordinate System" depending on sector location. -* -* To select beamport N 5 simply use -* -* COMPONENT Source = ESS_butterfly(sector="N",beamline=5,Lmin=0.1,Lmax=20,dist=2, -* cold_frac=0.5, yheight=0.03,focus_xw=0.1, focus_yh=0.1) -* -* Geometry -* The geometry corresponds correctly to the latest release of the butterfly moderator, -* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. -* A set of official release documents are available with this component, see the benchmarking -* website mentioned below. -* -* Brilliances, geometry adapted from earlier BF2 design -* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, -* are released as an updated component library for McStas 2.3, as well as a stand alone archive for -* use with earlier versions of McStas. -* -* The following features are worth highlighting: -*
    -*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. -* As a result, the spatial variation of the brightness across the moderator face should be considered to -* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to -* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness -* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. -*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. -* To accommodate the influence of the changed geometry, this scaling factor has been applied independently -* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the -* spectrally-integrated 6cm width data shown in [1],Figure 3. -*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance -* have been implemented. For now, we recommend to keep these at their default value of 1.0. -*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This -* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, -* which has been derived from current MCNP butterfly 1 model. -*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, -* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. -* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree -* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees -* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- -* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. -*
-* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be -* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. -* -*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance -* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation -* across sectors and potentially also performance losses due to engineering reality. -* -* Engineering reality -* An ad-hoc method for future implementation of "engineering reality" is included, use the -* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. -* -* References: -*

    -*
  1. Release document "Update to ESS Moderators, latest version" -*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" -*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures -*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. -*
  5. Source code for ESS_butterfly.comp at GitHub. -*
-* %P -* Input parameters: -* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" -* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector -* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m -* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator -* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 -* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 -* Lmin: [AA] Minimum wavelength simulated -* Lmax: [AA] Maximum wavelength simulated -* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. -* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index -* focus_xw: [m] Width of focusing rectangle -* focus_yh: [m] Height of focusing rectangle -* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. -* acc_power: [MW] Accelerator power in MW -* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. -* tfocus_dist: [m] Position of time focusing window along z axis -* tfocus_time: [s] Time position of time focusing window -* tfocus_width: [s] Time width of time focusing window -* -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT ESS_butterfly - -SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, - int target_index=0, dist=0, focus_xw=0, focus_yh=0, - c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, - acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0) - - -SHARE %{ - %include "ESS_butterfly-lib" - %include "ESS_butterfly-geometry.c" - - int nearest_angle(double angle) { - int AngleList[] = {5, 15, 25, 35, 45, 55}; - double diff = 180; - int jmin=0; - int j; - for (j=0; j<6; j++) { - if (fabs(AngleList[j]-angle) < diff) { - diff = fabs(AngleList[j]-angle); - jmin = j; - } - } - return AngleList[jmin]; - } - double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; - double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; - double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; - double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; - double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; - double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; - double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; - double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; - double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; - double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; - double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; - double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; - double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; - double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; - double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; - double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; - double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; - double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; -%} - -DECLARE -%{ - double* ColdWidths; - double* ThermalWidths; - double ColdScalars[11]; - double ThermalScalars[11]; - double *Beamlines; - double wfrac_cold; - double wfrac_thermal; - /* 'Corner' parametrization, i.e. where are the limits of the moderators */ - double C1_x; - double C1_z; - double C2_x; - double C2_z; - double C3_x; - double C3_z; - double T1_x; - double T1_z; - double T2_x; - double T2_z; - double T3_x; - double T3_z; - /* - plus rotated versions of the same... */ - double rC1_x; - double rC1_z; - double rC2_x; - double rC2_z; - double rC3_x; - double rC3_z; - double rT1_x; - double rT1_z; - double rT2_x; - double rT2_z; - double rT3_x; - double rT3_z; - double tx; - double ty; - double tz; - double r11; - double r12; - double r21; - double r22; - double delta_y; - double Mwidth_c; - double Mwidth_t; - double beamportangle; - double w_mult; - double w_stat; - double w_focus; - double w_tfocus; - double w_geom_c; - double w_geom_t; - int isleft; - double l_range; - - double cos_thermal; - double cos_cold; - - double orientation_angle; - /* Centering-parameters, which sector are we in? */ - double cx; - double cz; - int jmax; - double dxC; - double dxT; -%} - -INITIALIZE -%{ - - - int sign_bl_angle; - - /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ - double oversampT=1.1; - double oversampC=1.0; - - - /* variables needed to correct for the emission surface angle */ - double internal_angle; - double cos_beamport_angle, sin_beamport_angle; - - if (beamline<4) { - wfrac_cold=1.0; - wfrac_thermal=(1-0.072); - } else { - wfrac_cold=1.0; - wfrac_thermal=1.0; - } - - /* Centering-parameters, which sector are we in? */ - if (strcasestr(sector,"N")) { - cx = 0.117; cz=0.0; sign_bl_angle=1; - orientation_angle = BeamlinesN[beamline-1]; - Beamlines = BeamlinesN; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsN[j]; - ThermalScalars[j] = ThermalScalarsN[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else if (strcasestr(sector,"W")) { - cx = 0.0; cz=0.0; sign_bl_angle=-1; - orientation_angle = BeamlinesW[beamline-1]; - Beamlines = BeamlinesW; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsW[j]; - ThermalScalars[j] = ThermalScalarsW[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"S")) { - cx = 0.0; cz=-0.185; sign_bl_angle=1; - orientation_angle = BeamlinesS[beamline-1]; - Beamlines = BeamlinesS; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsS[j]; - ThermalScalars[j] = ThermalScalarsS[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"E")) { - cx = 0.117; cz=-0.185; sign_bl_angle=-1; - orientation_angle = BeamlinesE[beamline-1]; - Beamlines = BeamlinesE; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsE[j]; - ThermalScalars[j] = ThermalScalarsE[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else { - fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); - exit(-1); - } - if (beamline > jmax || beamline <= 0 ) { - fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); - exit(-1); - } - - printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); - if (c_performance <= 0) { - fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); - exit(-1); - } - if (t_performance <= 0) { - fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); - exit(-1); - } - if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { - fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", - NAME_CURRENT_COMP); - exit(-1); - } - /* Figure out where to aim */ - if (target_index && !dist) - { - Coords ToTarget; - ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); - ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); - coords_get(ToTarget, &tx, &ty, &tz); - dist=sqrt(tx*tx+ty*ty+tz*tz); - } else if (!target_index && !dist) { - fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); - exit(-1); - } else { - tx=0; ty=0; tz=dist; - } - printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); - if (target_index) { - printf(" ( from target_index %i -> distance %g )\n", target_index, dist); - } else { - printf(" ( from dist parameter -> distance %g )\n", dist); - } - printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); - - /* Calculate orientation matrix for the display and calculations */ - r11 = cos(DEG2RAD*orientation_angle); - r12 = -sin(DEG2RAD*orientation_angle); - r21 = sin(DEG2RAD*orientation_angle); - r22 = cos(DEG2RAD*orientation_angle); - - /* Rotated corrdinates of the emission areas */ - rC1_x = r11*C1_z + r12*C1_x; - rC1_z = r21*C1_z + r22*C1_x; - rC2_x = r11*C2_z + r12*C2_x; - rC2_z = r21*C2_z + r22*C2_x; - rC3_x = r11*C3_z + r12*C3_x; - rC3_z = r21*C3_z + r22*C3_x; - rT1_x = r11*T1_z + r12*T1_x; - rT1_z = r21*T1_z + r22*T1_x; - rT2_x = r11*T2_z + r12*T2_x; - rT2_z = r21*T2_z + r22*T2_x; - rT3_x = r11*T3_z + r12*T3_x; - rT3_z = r21*T3_z + r22*T3_x; - /* Moderator half-height */ - delta_y = yheight/2.0; - /* Other moderator parms */ - /* "Measured" moderator widths in cm scale */ - Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; - Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; - - if (tfocus_width && tfocus_time && tfocus_dist) { - printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { - printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); - } else { - fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", - NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - exit(-1); - } - - l_range = Lmax-Lmin; - /* Weight multipliers */ - w_mult=acc_power/5; - w_stat=1.0/mcget_ncount(); - w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ - w_geom_t = 0.108*yheight*1.0e4; - w_mult *= l_range; /* wavelength range correction */ - n_pulses=(double)floor(n_pulses); - if (n_pulses == 0) n_pulses=1; - - dxC=dxCold[beamline-1]; - dxT=dxThermal[beamline-1]; -%} - -TRACE -%{ - double xtmp; - int iscold; - double x0,z0; - int surf_sign; - double cos_factor; - double w_geom; - double xf, yf, zf; - double dx,dy,dz; - double k,v,r,lambda; - double dt=0; - double modX,modY; - - /* Cold or thermal event? */ - p=1; - xtmp = rand01(); - y = randpm1()*delta_y; - modY=y; - if (rand01() < cold_frac) { - iscold=1; - if (rand01() < wfrac_cold) { // "Broad face" - x = rC1_x + (rC2_x - rC1_x)*xtmp; - z = rC1_z + (rC2_z - rC1_z)*xtmp; - x0 = C1_x + (C2_x - C1_x)*xtmp; - z0 = C1_z + (C2_z - C1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_cold; - } else { - x = rC1_x + (rC3_x - rC1_x)*xtmp; - z = rC1_z + (rC3_z - rC1_z)*xtmp; - x0 = C1_x + (C3_x - C1_x)*xtmp; - z0 = C1_z + (C3_z - C1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)-dxC); - w_geom=w_geom_c; - } else { - iscold=0; - if (rand01() < wfrac_thermal) { // "Broad face" - x = rT1_x + (rT2_x - rT1_x)*xtmp; - z = rT1_z + (rT2_z - rT1_z)*xtmp; - x0 = T1_x + (T2_x - T1_x)*xtmp; - z0 = T1_z + (T2_z - T1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } else { - x = rT1_x + (rT3_x - rT1_x)*xtmp; - z = rT1_z + (rT3_z - rT1_z)*xtmp; - x0 = T1_x + (T3_x - T1_x)*xtmp; - z0 = T1_z + (T3_z - T1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)+dxT); - w_geom=w_geom_t; - } - - SCATTER; - /* Where are we going? */ - randvec_target_rect_real(&xf, &yf, &zf, NULL, - tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); - - w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); - - dx = xf-x; - dy = yf-y; - dz = zf-z; - r = sqrt(dx*dx+dy*dy+dz*dz); - - lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ - - k = 2*PI/lambda; - v = K2V*k; - - vz = v*dz/r; - vy = v*dy/r; - vx = v*dx/r; - - int train_index; - for (train_index=0; train_index0) { - dt = tfocus_dist/vz; - t = tfocus_time-dt; /* Set time to hit time window center */ - t += randpm1()*tfocus_width/2.0; - if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ - if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; - w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); - } else { - /* Simple, random wavelength @ random time */ - t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; - w_tfocus=1; - } - - if (iscold) { //case: cold moderator - /* Apply simple engineering reality correction */ - ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= c_performance; - p *= ColdScalars[beamline-1]; - } else { //case: thermal moderator - ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= t_performance; - p *= ThermalScalars[beamline-1]; - } - p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; - t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ - p*=cos_factor; - /* Correct weight for sampling of cold vs. thermal events. */ - if (iscold) { - p /= cold_frac; - } else { - p /= (1-cold_frac); - } - - // Generate ray as normal with its associated p and t - // Save these to t_offset and p_train - - _particle->t_offset[train_index] = t; - _particle->p_trains[train_index] = p/N_trains; - _particle->alive_trains[train_index] = 1; - - } - // Set base particle t and p, now p will be decoupled from the source intensity. - t=0; - p=1; - - SCATTER; -%} - -MCDISPLAY -%{ - #ifndef OPENACC - magnify(""); - butterfly_geometry(delta_y, jmax, cx, cz, - orientation_angle, Beamlines, tx,ty,tz, - rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, - rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, - r11, r12, r21, r22, focus_xw, focus_yh); - #endif -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/Graphite_Diffuser.comp deleted file mode 100644 index ea21aa714e..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/Graphite_Diffuser.comp +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************* -* -* McStas, version 1.2 released February 2000 -* Maintained by Kristian Nielsen and Kim Lefmann, -* Risoe National Laboratory, Roskilde, Denmark -* -* %IDENTIFICATION -* -* Written by: Manuel Morgano -* Date: 18 Febrauary 2015 -* Version: $Revision: 1.1.1.1 $ -* Origin: PSI -* -* Graphite diffuser -* -* %DESCRIPTION -* -* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics -* -* The formula has only been verified for a diffuser thickness of 1 and 2 cm. -* No absorption is take into account. -* -* %PARAMETERS -* -* INPUT PARAMETERS: -* -* xwidth: (m) Size of diffuser -* ywidth: (m) Size of diffuser -* thick: (m) Thickness of diffuser -* abs (1) 0 = no absorption, 1 = absorption -* %LINKS -* %END -* -*******************************************************************************/ - -DEFINE COMPONENT Graphite_Diffuser -DEFINITION PARAMETERS () -SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) -OUTPUT PARAMETERS () -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) -SHARE -%{ - double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ -{ - double rand1, rand2; - rand1 = rand01();// / ((double) RAND_MAX); - if(rand1 < 1e-100) rand1 = 1e-100; - rand1 = -2 * log(rand1); - rand2 = (rand01()) * 6.2831853071795864769252866; - - return (sigma * sqrt(rand1) * cos(rand2)) + mu; -} -%} -INITIALIZE -%{ -%} -TRACE -%{ - - double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; - double dt; - PROP_Z0; - if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi -* Date: 14th Feb 2000. -* Origin: ILL -* Release: McStas 1.6 -* Version: $Revision$ -* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi -* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) -* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster -* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) -* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) -* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) -* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) -* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) -* -* This component is a general Monitor that can output 0/1/2D signals -* (Intensity or signal vs. [something] and vs. [something] ...) -* -* %Description -* This component is a general Monitor that can output 0/1/2D signals -* It can produce many 1D signals (one for any variable specified in -* option list), or a single 2D output (two variables correlation). -* Also, an additional 'list' of neutron events can be produced. -* By default, monitor is square (in x/y plane). A disk shape is also possible -* The 'cylinder' and 'banana' option will change that for a banana shape -* The 'sphere' option simulates spherical detector. The 'box' is a box. -* The cylinder, sphere and banana should be centered on the scattering point. -* The monitored flux may be per monitor unit area, and weighted by -* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. -* In normal configuration, the Monitor_nD measures the current parameters -* of the neutron that is beeing detected. But a PreMonitor_nD component can -* be used in order to study correlations between a neutron being detected in -* a Monitor_nD place, and given parameters that are monitored elsewhere -* (at PreMonitor_nD). -* The monitor can also act as a 3He gas detector, taking into account the -* detection efficiency. -* -* The 'bins' and 'limits' modifiers are to be used after each variable, -* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 -* limits=[-5 5]) When placed after all variables, these two latter modifiers -* apply to the signal (e.g. intensity). Unknown keywords are ignored. -* If no limits are specified for a given observable, reasonable defaults will be -* applied. Note that these implicit limits are even applied in list mode. -* -* Implicit limits for typical variables: -* (consult monitor_nd-lib.c if you don't find your variable here) -* x, y, z: Derived from detection-object geometry -* k: [0 10] Angs-1 -* v: [0 1e6] m/s -* t: [0 1] s -* p: [0 FLT_MAX] in intensity-units -* vx, vy: [-1000 1000] m/s -* vz: [0 10000] m/s -* kx, ky: [-1 1] Angs-1 -* kz: [-10 10] Angs-1 -* energy, omega: [0 100] meV -* lambda,wavelength: [0 100] Angs -* sx, sy, sz: [-1 1] in polarisation-units -* angle: [-50 50] deg -* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg -* longitude, lattitude: [-180 180] deg -* neutron: [0 simulaton_ncount] -* id, pixel id: [0 FLT_MAX] -* uservars u1,u2,u3: [-1e10 1e10] -* -* In the case of multiple components at the same position, the 'parallel' -* keyword must be used in each instance instead of defining a GROUP. -* -* Possible options are -* Variables to record: -* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm -* vx vy vz v [m/s] Velocity on x,y,z and norm -* x y z radius [m] Distance, Position and norm -* xy, yz, xz [m] Radial position in xy, yz and xz plane -* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane -* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane -* t time [s] Time of Flight -* energy omega [meV] energy of neutron -* lambda wavelength [Angs] wavelength of neutron -* sx sy sz [1] Spin -* vdiv ydiv dy [deg] vertical divergence (y) -* hdiv divergence xdiv [deg] horizontal divergence (x) -* angle [deg] divergence from direction -* theta longitude [deg] longitude (x/z) for sphere and cylinder -* phi lattitude [deg] lattitude (y/z) for sphere and cylinder -* -* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} -* user2 user3 to be assigned in an other component (see below) -* -* p intensity flux [n/s or n/cm^2/s] -* ncounts n neutron [1] neutron ID, i.e current event index -* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. -* -* Other options keywords are: -* abs Will monitor the abs of the following variable or of the signal (if used after all variables) -* auto Automatically set detector limits for one/all -* all {limits|bins|auto} To set all limits or bins values or auto mode -* binary {float|double} with 'source' option, saves in compact files -* bins=[bins=20] Number of bins in the detector along dimension -* borders To also count off-limits neutrons (X < min or X > max) -* capture weight by lambda/lambda(2200m/s) capture flux -* file=string Detector image file name. default is component name, plus date and variable extension. -* incoming Monitor incoming beam in non flat det -* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) -* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events -* log Will monitor the log of the following variable or of the signal (if used after all variables) -* min=[min_value] Same as limits, but only sets the min or max -* max=[max_value] -* multiple Create multiple independant 1D monitors files -* no or not Revert next option -* outgoing Monitor outgoing beam (default) -* parallel Use this option when the next component is at the same position (parallel components) -* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. -* per steradian Displays beam solid angle in steradian -* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. -* signal=[var] Will monitor [var] instead of usual intensity -* slit or absorb Absorb neutrons that are out detector -* source The monitor will save neutron states -* inactivate To inactivate detector (0D detector) -* verbose To display additional informations -* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) -* -* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) -* box Box of size xwidth, yheight, zdepth. -* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). -* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). -* disk Disk flat xy monitor. diameter is xwidth. -* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). -* square Square flat xy monitor (xwidth, yheight). -* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. -* -* EXAMPLES: -*
    -*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, -*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with -*   borders, file = mon1"); -* will monitor neutron angle from [z] axis, between -5 -* and 5 degrees, in 10 bins, into "mon1.A" output 1D file -* -*
  • options = "sphere theta phi outgoing" -* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" -* -*
  • options = "banana, theta limits=[10,130], bins=120, y" -* a theta/height banana detector -* -*
  • options = "angle radius all auto" -* is a 2D monitor with automatic limits -* -*
  • options = "list=1000 kx ky kz energy" -* records 1000 neutron event in a file -* -*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" -* makes 4 output 1D files and produces a complete list for all neutrons -* and monitor log(abs(tof)) within automatic limits (for t) -* -*
  • options = "theta y, sphere, pixel min=100" -* a 4pi detector which outputs an event list with pixelID from the actual -* detector surface, starting from index 100. -* -*
-* To dynamically define a number of bins, or limits: -* Use in DECLARE: char op[256]; -* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); -* Use in TRACE: Monitor_nD(... options=op ...) -* -* How to monitor any instrument/component variable into a Monitor_nD -* Suppose you want to monitor a variable 'age' which you assign somwhere in -* the instrument: -* COMPONENT MyMonitor = Monitor_nD( -* xwidth = 0.1, yheight = 0.1, -* user1="age", username1="Age of the Captain [years]", -* options="user1, auto") -* AT ... -* -* See also the example in PreMonitor_nD to -* monitor neutron parameters cross-correlations. -* -* %BUGS -* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI -* as each process may use different limits. -* -* %Parameters -* INPUT PARAMETERS: -* -* xwidth: [m] Width of detector. -* yheight: [m] Height of detector. -* zdepth: [m] Thickness of detector (z). -* radius: [m] Radius of sphere/banana shape monitor -* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). -* -* Optional input parameters (override xwidth yheight zdepth): -* xmin: [m] Lower x bound of opening -* xmax: [m] Upper x bound of opening -* ymin: [m] Lower y bound of opening -* ymax: [m] Upper y bound of opening -* zmin: [m] Lower z bound of opening -* zmax: [m] Upper z bound of opening -* filename: [str] Output file name (overrides file=XX option). -* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins -* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits -* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits -* user1: [str] Variable name of USERVAR to be monitored by user1. -* user2: [str] Variable name of USERVAR to be monitored by user2. -* user3: [str] Variable name of USERVAR to be monitored by user3. -* username1: [str] Name assigned to User1 -* username2: [str] Name assigned to User2 -* username3: [str] Name assigned to User3 -* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. -* geometry: [str] Name of an OFF file to specify a complex geometry detector -* nowritefile: [1] If set, monitor will skip writing to disk -* -* CALCULATED PARAMETERS: -* -* DEFS: [struct] structure containing Monitor_nD Defines -* Vars: [struct] structure containing Monitor_nD variables -* -* %Link -* PreMonitor_nD -* -* %End -******************************************************************************/ -DEFINE COMPONENT Monitor_nD - -SETTING PARAMETERS ( - string user1="", string user2="", string user3="", - xwidth=0, yheight=0, zdepth=0, - xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, - int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, - string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, - string username1="NULL", string username2="NULL", string username3="NULL", - tsplit=0 -) -/* these are protected C variables */ - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -SHARE -%{ - %include "monitor_nd-lib" - %include "read_table-lib" - %include "interoff-lib" -%} - -DECLARE -%{ - MonitornD_Defines_type DEFS; - MonitornD_Variables_type Vars; - MCDETECTOR detector; - off_struct offdata; -%} - -INITIALIZE -%{ - char tmp[CHAR_BUF_LENGTH]; - strcpy (Vars.compcurname, NAME_CURRENT_COMP); - Vars.compcurindex = INDEX_CURRENT_COMP; - if (options != NULL) - strncpy (Vars.option, options, CHAR_BUF_LENGTH); - else { - strcpy (Vars.option, "x y"); - printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); - } - Vars.compcurpos = POS_A_CURRENT_COMP; - - if (strstr (Vars.option, "source")) - strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); - - if (bins) { - sprintf (tmp, " all bins=%ld ", (long)bins); - strcat (Vars.option, tmp); - } - if (min > -FLT_MAX && max < FLT_MAX) { - sprintf (tmp, " all limits=[%g %g]", min, max); - strcat (Vars.option, tmp); - } else if (min > -FLT_MAX) { - sprintf (tmp, " all min=%g", min); - strcat (Vars.option, tmp); - } else if (max < FLT_MAX) { - sprintf (tmp, " all max=%g", max); - strcat (Vars.option, tmp); - } - - /* transfer, "zero", and check username- and user variable strings to Vars struct*/ - strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); - strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); - strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); - if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { - strncpy (Vars.UserVariable1, user1, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable1, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); - } - } - if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { - strncpy (Vars.UserVariable2, user2, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable2, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); - } - } - if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { - strncpy (Vars.UserVariable3, user3, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable3, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); - } - } - - /*sanitize parameters set for curved shapes*/ - if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { - /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ - if (!radius) { - if (xwidth) { - radius = xwidth / 2.0; - } else { - radius = zdepth / 2.0; - } - } else { - xwidth = 2 * radius; - } - if (!yheight) { - /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ - yheight = 2 * radius; - } - } else if (radius) { - /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values - (xwidth etc. They are used inside monitor_nd-lib.*/ - xwidth = zdepth = 2 * radius; - if (yheight) { - /*a height is given (and no shape explitly set - assume cylinder*/ - strcat (Vars.option, " banana"); - } else { - strcat (Vars.option, " sphere"); - yheight = 2 * radius; - } - } - - int offflag = 0; - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - #ifndef USE_OFF - fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); - exit (-1); - #else - if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { - printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" - " Defaulting to normal Monitor dimensions.\n", - NAME_CURRENT_COMP, geometry); - strcpy (geometry, ""); - } else { - offflag = 1; - } - #endif - } - - if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) - exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); - - Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); - - if (Vars.Flag_OFF) { - offdata.mantidflag = Vars.Flag_mantid; - offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; - } - - if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) - strncpy (Vars.Mon_File, filename, 128); - - /* check if user given filename with ext will be used more than once */ - if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { - char* XY; - XY = strrchr (Vars.Mon_File, '.'); - *XY = '_'; - } - - if (restore_neutron) - Vars.Flag_parallel = 1; - detector.m = 0; - - #ifdef USE_MPI - MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) - printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" - "WARNING this may create incorrect distributions (but integrated flux will be right).\n", - NAME_CURRENT_COMP);); - #else - #ifdef OPENACC - if (strstr (Vars.option, "auto")) - printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" - "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", - NAME_CURRENT_COMP); - #endif - #endif -%} - -TRACE -%{ - double transmit_he3 = 1.0; - double multiplier_capture = 1.0; - double t0 = 0; - double t1 = 0; - int pp; - int intersect = 0; - char Flag_Restore = 0; - - #ifdef OPENACC - #ifdef USE_OFF - off_struct thread_offdata = offdata; - #endif - #else - #define thread_offdata offdata - #endif - - /* this is done automatically - STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - */ - #ifdef USE_OFF - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - /* determine intersections with object */ - intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); - if (Vars.Flag_mantid) { - if (intersect) { - Vars.OFF_polyidx = thread_offdata.nextintersect; - } else { - Vars.OFF_polyidx = -1; - } - } - } else - #endif - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ - { - // propagate to xy plane and find intersection - // make sure the event is recoverable afterwards - t0 = t; - ALLOW_BACKPROP; - PROP_Z0; - if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful - { - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { - // square xy - intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); - } else { - // disk xy - intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); - } - } else { - intersect = 0; - } - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ - { - intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); - /* intersect = (intersect && t0 > 0); */ - } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ - { - intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ - { - intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ - { - intersect = 1; - } - - if (intersect) { - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) - || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { - /* check if we have to remove the top/bottom with BANANA shape */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { - if (intersect == 1) { // Entered and left through sides - if (t0 < 0 && t1 > 0) { - t0 = t; /* neutron was already inside ! */ - } - if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ - t1 = t; - } - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - intersect = 0; - Flag_Restore = 1; - } - } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - intersect = 0; - Flag_Restore = 1; - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit - intersect = 0; - Flag_Restore = 1; - } else { - printf ("Cylinder_intersect returned unexpected value %i\n", intersect); - } - } else { - // All other shapes than the BANANA - if (t0 < 0 && t1 > 0) - t0 = t; /* neutron was already inside ! */ - if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ - t1 = t; - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) - PROP_DT (t1); /* t1 outgoing beam */ - else - PROP_DT (t0); /* t0 incoming beam */ - } - - /* Final test if we are on lid / bottom of banana/sphere */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { - if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { - intersect = 0; - Flag_Restore = 1; - } - } - } - } - - if (intersect) { - /* Now get the data to monitor: current or keep from PreMonitor */ - /* if (Vars.Flag_UsePreMonitor != 1)*/ - /* {*/ - /* Vars.cp = p;*/ - /* Vars.cx = x;*/ - /* Vars.cvx = vx;*/ - /* Vars.csx = sx;*/ - /* Vars.cy = y;*/ - /* Vars.cvy = vy;*/ - /* Vars.csy = sy;*/ - /* Vars.cz = z;*/ - /* Vars.cvz = vz;*/ - /* Vars.csz = sz;*/ - /* Vars.ct = t;*/ - /* }*/ - - if ((Vars.He3_pressure > 0) && (t1 != t0) - && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { - transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); - /* will monitor the absorbed part */ - p = p * (1 - transmit_he3); - } - - if (Vars.Flag_capture) { - multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); - if (multiplier_capture != 0) - multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ - p = p * multiplier_capture / 1.7985; - } - - - int train_index; - double p_original = p; - - if (tsplit==1) { - double pp_array[N_trains]; - double t_original = t; - for (train_index=0; train_indexalive_trains[train_index] == 1) { - p = p_original*_particle->p_trains[train_index]; - t = t_original + _particle->t_offset[train_index]; - - pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); - - } else pp_array[train_index] = 0; - } - p = p_original; - t = t_original; - - int pp_total = 0; - for (train_index=0; train_index 0) { - SCATTER; - } - } else { - - double total_p = 0; - for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; - } - - p = total_p; - - pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); - if (pp == 0.0) { - ABSORB; - } else if (pp == 1) { - SCATTER; - } - - p = p_original; - } - - - /*set weight to undetected part if capture and/or he3_pressure*/ - if (Vars.He3_pressure > 0) { - /* after monitor, only remains 1-p_detect */ - p = p * transmit_he3 / (1.0 - transmit_he3); - } - - if (Vars.Flag_capture) { - p = p / multiplier_capture * 1.7985; - } - - if (Vars.Flag_parallel) /* back to neutron state before detection */ - Flag_Restore = 1; - } /* end if intersection */ - else { - if (Vars.Flag_Absorb && !Vars.Flag_parallel) { - // restore neutron ray before absorbing for correct mcdisplay - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - ABSORB; - } else - Flag_Restore = 1; /* no intersection, back to previous state */ - } - - if (Flag_Restore) { - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - } -%} - -SAVE -%{ - if (!nowritefile) { - /* save results, but do not free pointers */ - detector = Monitor_nD_Save (&DEFS, &Vars); - } -%} - -FINALLY -%{ - /* free pointers */ - Monitor_nD_Finally (&DEFS, &Vars); -%} - -MCDISPLAY -%{ - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - off_display (offdata); - } else { - Monitor_nD_McDisplay (&DEFS, &Vars); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/MultiDiskChopper.comp deleted file mode 100644 index bb64311496..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/MultiDiskChopper.comp +++ /dev/null @@ -1,351 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2015, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: MultiDiskChopper -* -* %I -* Written by: Markus Appel -* Date: 2015-10-19 -* Origin: ILL / FAU Erlangen-Nuernberg -* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), -* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by -* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) -* -* %D -* Models a disk chopper with a freely configurable slit pattern. For simple applications, -* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. -* If the chopper slit pattern should be dynamically configurable or a complicated pattern -* is to be used as first chopper on a continuous source, use this component. -* -* Width and position of the slits is defined as a list in string parameters so -* they can easily be taken from instrument parameters. -* The chopper axis is located on the y axis as defined by the parameter delta_y. -* When the chopper is the first chopper after a continuous (i.e. time-independent) -* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. -* -* -* Examples (see parameter definitions for details): -* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, delay=0.02) -* -* First chopper on a continuous source, creating pulse trains for one additional revolution -* before and after the revolution at t=0: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) -* -* %P -* INPUT PARAMETERS: -* -* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" -* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) -* nslits: [] Number of slits to read from slit_width and slit_center -* radius: [m] Outer radius of the disk -* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. -* nu: [Hz] Rotation speed of the disk, the sign determines the direction. -* -* Optional parameters: -* verbose: [0/1] Set to 1 to display more information during the simulation. -* phase: [deg] Phase angle located on top of the disk at t=delay (see below). -* delay: [s] Time delay of the chopper clock. -* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. -* jitter: [s] Jitter in the time phase. -* abs_out: If 1, absorb all neutrons outside the disk diameter. -* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events -* will be shifted in time to pass the component (with adapted weight). -* -* Additional parameters when isfirst=1 (that have no effect for isfirst=0): -* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. -* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). -* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT MultiDiskChopper - -SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) - - -DECLARE -%{ - double T; - double To; - double omega; - double* dslit_center; - double* dhslit_width; - double* t0; - double* t1; -%} - -INITIALIZE -%{ - char* pch; - int i; - double sense; - - phase = remainder (phase, 360.0) * DEG2RAD; - omega = 2.0 * PI * nu; /* rad/s */ - sense = (omega < 0) ? -1 : 1; - - if (isfirst && (nrev - floor (nrev) != 0)) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) - exit (-1); - } - - if (!omega) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - - if (nslits <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) - } - - // Read slits in array - dslit_center = malloc (nslits * sizeof (*dslit_center)); - pch = strtok (slit_center, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dslit_center[i] = atof (pch); - pch = strtok (NULL, ";_, "); - - if ((dslit_center[i] < 0)) { - while (dslit_center[i] < 0) { - dslit_center[i] += 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - if ((dslit_center[i] >= 360.0)) { - while (dslit_center[i] >= 360.0) { - dslit_center[i] -= 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - dslit_center[i] *= DEG2RAD; - } - - // dhslit_width: HALF slit width - dhslit_width = malloc (nslits * sizeof (*dhslit_width)); - pch = strtok (slit_width, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dhslit_width[i] = 0.5 * atof (pch); - pch = strtok (NULL, ";_, "); - if (dhslit_width[i] <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) - exit (-1); - } - dhslit_width[i] *= DEG2RAD; - } - - /* Calculate delay from phase and vice versa */ - if (phase) { - if (delay) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) - } - phase -= delay * omega; - delay = -phase / omega; - } else { - phase = delay * omega; - } - - /* Time for 1 revolution */ - T = 2.0 * PI / fabs (omega); - - // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE - - /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ - - // generate times t1: duration of slit openings (or their cumulative sum if !equal) - // dhslit_width is already in rad - t1 = malloc (nslits * sizeof (*t1)); - t1[0] = 2.0 * dhslit_width[0] / fabs (omega); - To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit - - for (i = 1; i < nslits; i++) { - t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); - To += (2.0 * dhslit_width[i] / fabs (omega)); - } - - // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) - t0 = malloc (nslits * sizeof (*t0)); - t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); - - for (i = 1; i < nslits; i++) { - t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); - } - - MPI_MASTER (if (verbose) { - printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); - printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); - printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); - - if (isfirst && equal) - printf (" --- first chopper distributing events equally on all slits\n"); - - if (isfirst && !equal) - printf (" --- first chopper distributing events proportional to slit size\n"); - - if (isfirst) - printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); - - printf (" --- Slit center [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", dslit_center[i] * RAD2DEG); - printf ("\n"); - printf (" --- Slit width [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); - printf ("\n"); - - // dump internal arrays for debugging - if (verbose == 2) { - printf (" --- Internal arrays:\n"); - printf (" --- i t0 t1 dslit_center dhslit_width\n"); - for (i = 0; i < nslits; i++) { - printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); - } - } - }) - %} - -TRACE -%{ - double phi; - double xprime, yprime; - double toff; - int irev, islit; - - // Propagate into the chopper disk plane - PROP_Z0; - - if (delta_y > 0) { - // 'anormal' case, chopper above guide - // mirror coordinate system - xprime = -x; - yprime = -y + delta_y; - } else { - // 'normal' case, chopper below guide - xprime = x; - yprime = y - delta_y; - } - - // Is neutron transmitted/absorbed outside the disk diameter ? - if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) - if (abs_out) { - ABSORB; - } else { - SCATTER; - } - else { - if (isfirst) { - irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); - - if (equal) { - // Distribute neutrons equally over slits - t = rand01 () * nslits; - islit = (t == nslits) ? nslits - 1 : floor (t); - t = (t - islit) * t1[islit]; - - p *= t1[islit] / T * nslits; - } else { - // Distribute neutrons proportional to slit size - t = rand01 () * To; - islit = 0; - while (t1[islit] < t) - islit++; - - /* weight correction: chopper slits transmission opening time per full revolution time */ - p *= To / T; - } - - // offset time stamp according to slit phase, neutron position and jitter - t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); - - } else { - - // Check whether each t_offset carried by the ray make it through - int train_index; - int one_did_hit = 0; - int this_t_hit; - double this_train_t; - int all_dead = 1; - for (train_index=0; train_indexalive_trains[train_index] == 0) continue; - all_dead = 0; - - this_train_t = t + _particle->t_offset[train_index]; - // where does the neutron hit the disk ? - phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); - - // does the neutron hit one of the slits ? - islit = 0; - this_t_hit = 0; - while (islit < nslits && !this_t_hit) { - if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) - this_t_hit = 1; - - islit++; - } - if (this_t_hit == 0) _particle->alive_trains[train_index] = 0; - else one_did_hit = 1; - } - // if not a single t_offset made it through a slit, absorb this ray - if (!one_did_hit || all_dead) ABSORB; - } - } -%} - -FINALLY -%{ - // clean up - if (dslit_center) - free (dslit_center); - - if (dhslit_width) - free (dhslit_width); - - if (t0) - free (t0); - - if (t1) - free (t1); -%} - -MCDISPLAY -%{ - int j; - - // the disk - circle ("xy", 0, delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslits; j++) { - /* Angular start/end of slit */ - double tmin = dslit_center[j] - dhslit_width[j] + phase; - double tmax = tmin + 2.0 * dhslit_width[j]; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); - line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr deleted file mode 100644 index c9e234c57a..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/ODIN_TOF_train.instr +++ /dev/null @@ -1,1030 +0,0 @@ -/******************************************************************************** -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* This file was written by McStasScript, which is a -* python based McStas instrument generator written by -* Mads Bertelsen in 2019 while employed at the -* European Spallation Source Data Management and -* Software Centre -* -* Instrument: ODIN_TOF_train -* -* %Identification -* Written by: Python McStas Instrument Generator -* Date: 13:25:52 on February 25, 2026 -* Origin: ESS DMSC -* %INSTRUMENT_SITE: Generated_instruments -* -* !!Please write a short instrument description (1 line) here!! -* -* %Description -* Please write a longer instrument description here! -* -* %Example: -y Detector: tof_I=9.16671e+08 -* -* %Parameters -* l_min: [unit] Minimum simulated wavelength [AA] -* l_max: [unit] Maximum simulated wavelength [AA] -* n_pulses: [unit] Number of simulated pulses -* wfm_delta: [unit] Distance between WFM choppers [m] -* bp_frequency: [unit] Frequency of bandpass choppers [Hz] -* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] -* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. -* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] -* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. -* fo1_phase_offset: [unit] Offset of fo1 phase [deg] -* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. -* bp1_phase_offset: [unit] Offset of bp1 phase [deg] -* jitter_bp1: [unit] Jitter of bp1 chopper -* fo2_phase_offset: [unit] Offset of fo2 phase [deg] -* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. -* bp2_phase_offset: [unit] Offset of bp2 phase [deg] -* jitter_bp2: [unit] Jitter of bp2 chopper -* t0_phase_offset: [unit] Offset of t0 phase [deg] -* jit_t0_sec: [unit] Jitter of t0 chopper -* fo3_phase_offset: [unit] Offset of fo3 phase [deg] -* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. -* fo4_phase_offset: [unit] Offset of fo4 phase [deg] -* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. -* fo5_phase_offset: [unit] Offset of fo5 phase [deg] -* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. -* -* %Link -* -* %End -********************************************************************************/ - -DEFINE INSTRUMENT ODIN_TOF_train ( -l_min = 1.0, // Minimum simulated wavelength [AA] -l_max = 11.0, // Maximum simulated wavelength [AA] -int n_pulses = 1, // Number of simulated pulses -wfm_delta = 0.3, // Distance between WFM choppers [m] -bp_frequency = 7, // Frequency of bandpass choppers [Hz] -WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] -jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. -WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] -jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. -fo1_phase_offset = 0, // Offset of fo1 phase [deg] -jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. -bp1_phase_offset = 0, // Offset of bp1 phase [deg] -jitter_bp1 = 0, // Jitter of bp1 chopper -fo2_phase_offset = 0, // Offset of fo2 phase [deg] -jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. -bp2_phase_offset = 0, // Offset of bp2 phase [deg] -jitter_bp2 = 0, // Jitter of bp2 chopper -t0_phase_offset = 0, // Offset of t0 phase [deg] -jit_t0_sec = 0, // Jitter of t0 chopper -fo3_phase_offset = 0, // Offset of fo3 phase [deg] -jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. -fo4_phase_offset = 0, // Offset of fo4 phase [deg] -jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. -fo5_phase_offset = 0, // Offset of fo5 phase [deg] -jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. -int choppers=2, // 0: no choppers 1: BP 2: WFM -int N_trains_par = 10 -) - -DECLARE -%{ -double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap -double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap -double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap -double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap -double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap -double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap -double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap -double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap -double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap -double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap -%} - -USERVARS -%{ -double *t_offset; -double *p_trains; -int *alive_trains; -%} - - -INITIALIZE -%{ -// Start of initialize for generated ODIN -WFM1_phase = WFM1_phase_offset; -WFM1_phase += 97.55; -WFM2_phase = WFM2_phase_offset; -WFM2_phase += -5.88015; -fo1_phase = fo1_phase_offset; -fo1_phase += -65.625; -bp1_phase = bp1_phase_offset; -bp1_phase += -11.475; -fo2_phase = fo2_phase_offset; -fo2_phase += -20.5; -bp2_phase = bp2_phase_offset; -bp2_phase += 185.195; -t0_phase = t0_phase_offset; -fo3_phase = fo3_phase_offset; -fo3_phase += 137.47; -fo4_phase = fo4_phase_offset; -fo4_phase += 111.700; -fo5_phase = fo5_phase_offset; -fo5_phase += -81.105; - -#define N_trains INSTRUMENT_GETPAR(N_trains_par) - -MPI_MASTER( -struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "w"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); -); -%} - -TRACE - -COMPONENT Origin = Progress_bar() -AT (0, 0, 0) ABSOLUTE -EXTEND %{ - t_offset = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); - p_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); - alive_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(int)); -%} - -COMPONENT optical_axis = Arm() -AT (0.026, 0, 0) RELATIVE Origin - -COMPONENT Source = ESS_butterfly( - sector = "S", beamline = 2, - yheight = 0.03, cold_frac = 0.5, - target_index = 1, focus_xw = 0.0576862, - focus_yh = 0.0464308, c_performance = 1, - t_performance = 1, Lmin = l_min, - Lmax = l_max, n_pulses = n_pulses, - acc_power = 2.0) -AT (0, 0, 0) RELATIVE Origin - -COMPONENT Start_of_bi = Arm() -AT (0, 0, 2.0306) RELATIVE optical_axis - -COMPONENT bi = bi_spec_ellipse( - xheight = 0.044795, ywidth = 0.033273, - zlength = 0.3, n_mirror = 0, - tilt = 0.7355449343006287, n_pieces = 1, - angular_offset = 0.0274924630093546, m = 4, - Qc_m = 0.0217, alpha_mirror_m = 2.5, - W_m = 0.015, d_focus_1_x = 3.443249331959489, - d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, - d_focus_2_y = 33.78623864676767, ell_l = 0.31, - ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, - ell_m = 4, R0 = 0.99, - Qc = 0.0217, alpha_mirror = 2.5, - W = 0.0015, cut = 3, - substrate = 0) -AT (0, 0, 0) RELATIVE Start_of_bi -ROTATED (0, 0, 180) RELATIVE Start_of_bi - -COMPONENT End_of_bi = Arm() -AT (0, 0, 0.31) RELATIVE bi -ROTATED (0, 0, -180) RELATIVE bi - -COMPONENT NBOA_drawing_1_end = Guide_four_side( - w1l = 0.022187, linwl = 3.7532493319594886, - loutwl = 4.397849331959489, w1r = 0.022187, - linwr = 3.7532493319594886, loutwr = 4.397849331959489, - h1u = 0.017858, linhu = 2.213738646767668, - louthu = 33.23733864676767, h1d = 0.017858, - linhd = 2.213738646767668, louthd = 33.23733864676767, - l = 0.5488999999999999, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 0.31000099999999997) RELATIVE bi - -COMPONENT g1a2 = Guide_four_side( - w1l = 0.022397711974319966, linwl = 4.303349331959489, - loutwl = 3.3968493319594883, w1r = 0.022397711974319966, - linwr = 4.303349331959489, loutwr = 3.3968493319594883, - h1u = 0.019790525295492974, linhu = 2.763788626121542, - louthu = 32.236388626121546, h1d = 0.019790525295492974, - linhd = 2.763788626121542, louthd = 32.236388626121546, - l = 0.9998, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end - -COMPONENT g1a3 = Guide_four_side( - w1l = 0.021853309009560024, linwl = 5.3043493319594885, - loutwl = 1.8968293319594889, w1r = 0.021853309009560024, - linwr = 5.3043493319594885, loutwr = 1.8968293319594889, - h1u = 0.02274764602619812, linhu = 3.7648386261215414, - louthu = 30.73631862612154, h1d = 0.02274764602619812, - linhd = 3.7648386261215414, louthd = 30.73631862612154, - l = 1.49882, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 0.999801) RELATIVE g1a2 - -COMPONENT g1b1 = Guide_four_side( - w1l = 0.017955, linwl = 6.82655, - loutwl = 1.3934509999999998, w1r = 0.017955, - linwr = 6.82655, loutwr = 1.3934509999999998, - h1u = 0.026565, linhu = 5.2842144, - louthu = 30.232929999999996, h1d = 0.026565, - linhd = 5.2842144, louthd = 30.232929999999996, - l = 0.48300000000000054, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2.5, - myd = 2.5) -AT (0, 0, 5.4109) RELATIVE optical_axis - -COMPONENT g1c1 = Guide_four_side( - w1l = 0.015725, linwl = 7.323650000000001, - loutwl = 0.5472510000000002, w1r = 0.015725, - linwr = 7.323650000000001, loutwr = 0.5472510000000002, - h1u = 0.02753, linhu = 5.7813144, - louthu = 29.38673, h1d = 0.02753, - linhd = 5.7813144, louthd = 29.38673, - l = 0.8320999999999996, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2.5, - myd = 2.5) -AT (0, 0, 5.908) RELATIVE optical_axis - -COMPONENT wfm_position = Arm() -AT (0, 0, 7.0) RELATIVE optical_axis - -COMPONENT wfm_1_position = Arm() -AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position - -COMPONENT wfmc_1 = MultiDiskChopper( - slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", - nslits = 6, delta_y = -0.31499999999999995, - nu = -56.0, jitter = jitter_wfmc_1, - phase = WFM1_phase, radius = 0.35) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE wfm_1_position -ROTATED (0, 0, 180) RELATIVE wfm_1_position - - -COMPONENT pinhole_1 = Slit( - xwidth = 0.015, yheight = 0.06) -AT (0, 0, 0) RELATIVE wfm_position - -COMPONENT wfm_2_position = Arm() -AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position - -COMPONENT wfmc_2 = MultiDiskChopper( - slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", - nslits = 6, delta_y = -0.31499999999999995, - nu = -56.0, jitter = jitter_wfmc_2, - phase = WFM2_phase, radius = 0.35) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE wfm_2_position -ROTATED (0, 0, 180) RELATIVE wfm_2_position - -COMPONENT g2a1 = Guide_four_side( - w1l = 0.01121, linwl = 0.25980000000000025, - loutwl = 12.040199999999999, w1r = 0.01121, - linwr = 0.25980000000000025, loutwr = 12.040199999999999, - h1u = 0.029825, linhu = 7.2598, - louthu = 28.0402, h1d = 0.029825, - linhd = 7.2598, louthd = 28.0402, - l = 0.7000000000000002, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 3, - myd = 3) -AT (0, 0, 7.247800000000001) RELATIVE optical_axis - -COMPONENT monitor_1_position = Arm() -AT (0, 0, 7.96) RELATIVE optical_axis - -COMPONENT g2a2 = Guide_four_side( - w1l = 0.0212, linwl = 0.9858000000000002, - loutwl = 11.6045, w1r = 0.0212, - linwr = 0.9858000000000002, loutwr = 11.6045, - h1u = 0.03088, linhu = 7.9858, - louthu = 27.6045, h1d = 0.03088, - linhd = 7.9858, louthd = 27.6045, - l = 0.40969999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 3, - myd = 3) -AT (0, 0, 7.973800000000001) RELATIVE optical_axis - -COMPONENT fo1_position = Arm() -AT (0, 0, 8.392) RELATIVE optical_axis - -COMPONENT fo_chopper_1 = MultiDiskChopper( - slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", - nslits = 6, delta_y = -0.4625, - nu = -42.0, jitter = jitter_fo_chopper_1, - phase = fo1_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo1_position -ROTATED (0, 0, 180) RELATIVE fo1_position - -COMPONENT bp1_position = Arm() -AT (0, 0, 8.442) RELATIVE optical_axis - -COMPONENT bp1_chopper = DiskChopper( - theta_0 = 46.71, radius = 0.5, - yheight = 0.075, nu = bp_frequency, - nslit = 1, jitter = jitter_bp1, - phase = bp1_phase + (42.20500000000003)) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp1_position -ROTATED (0, 0, 180) RELATIVE bp1_position - -COMPONENT g2b1 = Guide_four_side( - w1l = 0.02521, linwl = 1.4502500000000005, - loutwl = 11.14005, w1r = 0.02521, - linwr = 1.4502500000000005, loutwr = 11.14005, - h1u = 0.031505, linhu = 8.45025, - louthu = 27.140050000000002, h1d = 0.031505, - linhd = 8.45025, louthd = 27.140050000000002, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.446250000000001) RELATIVE optical_axis - -COMPONENT g2b2 = Guide_four_side( - w1l = 0.02811, linwl = 1.8707999999999991, - loutwl = 9.67745, w1r = 0.02811, - linwr = 1.8707999999999991, loutwr = 9.67745, - h1u = 0.03203, linhu = 8.8708, - louthu = 25.67745, h1d = 0.03203, - linhd = 8.8708, louthd = 25.67745, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.8668) RELATIVE optical_axis - -COMPONENT g2b3 = Guide_four_side( - w1l = 0.03493, linwl = 3.3230500000000003, - loutwl = 8.2252, w1r = 0.03493, - linwr = 3.3230500000000003, loutwr = 8.2252, - h1u = 0.033615, linhu = 10.32305, - louthu = 24.2252, h1d = 0.033615, - linhd = 10.32305, louthd = 24.2252, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 10.31905) RELATIVE optical_axis - -COMPONENT g2b4 = Guide_four_side( - w1l = 0.03862, linwl = 4.7858, - loutwl = 7.804500000000001, w1r = 0.03862, - linwr = 4.7858, loutwr = 7.804500000000001, - h1u = 0.03488, linhu = 11.7858, - louthu = 23.8045, h1d = 0.03488, - linhd = 11.7858, louthd = 23.8045, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 11.7818) RELATIVE optical_axis - -COMPONENT fo2_position = Arm() -AT (0, 0, 12.2) RELATIVE optical_axis - -COMPONENT fo_chopper_2 = MultiDiskChopper( - slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", - nslits = 6, delta_y = -0.46, - nu = -42.0, jitter = jitter_fo_chopper_2, - phase = fo2_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo2_position -ROTATED (0, 0, 180) RELATIVE fo2_position - -COMPONENT bp2_position = Arm() -AT (0, 0, 12.25) RELATIVE optical_axis - -COMPONENT bp_chopper2 = DiskChopper( - theta_0 = 67.49, radius = 0.5, - yheight = 0.08, nu = bp_frequency, - nslit = 1, jitter = jitter_bp2, - phase = bp2_phase -141.795) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp2_position -ROTATED (0, 0, 180) RELATIVE bp2_position - -COMPONENT g2c1 = Guide_four_side( - w1l = 0.03929, linwl = 5.250249999999999, - loutwl = 6.536899999999999, w1r = 0.03929, - linwr = 5.250249999999999, loutwr = 6.536899999999999, - h1u = 0.03488, linhu = 12.25025, - louthu = 22.5369, h1d = 0.03488, - linhd = 12.25025, louthd = 22.5369, - l = 1.2128500000000013, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 12.254249999999999) RELATIVE optical_axis - -COMPONENT t0_start_position = Arm() -AT (0, 0, 13.503) RELATIVE optical_axis - -COMPONENT t0_chopper_alpha = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_start_position -ROTATED (0, 0, 180) RELATIVE t0_start_position - -COMPONENT t0_end_position = Arm() -AT (0, 0, 13.703) RELATIVE optical_axis - -COMPONENT t0_chopper_beta = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_end_position -ROTATED (0, 0, 180) RELATIVE t0_end_position - -COMPONENT g3a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03611, linhu = 13.7559, - louthu = 20.2631, h1d = 0.03611, - linhd = 13.7559, louthd = 20.2631, - l = 1.981, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 13.7379) RELATIVE optical_axis - -COMPONENT g3a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03687, linhu = 15.7409, - louthu = 19.0055, h1d = 0.03687, - linhd = 15.7409, louthd = 19.0055, - l = 1.2535999999999987, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 15.7229) RELATIVE optical_axis - -COMPONENT fo3_position = Arm() -AT (0, 0, 16.9865) RELATIVE optical_axis - -COMPONENT fo_chopper_3 = MultiDiskChopper( - slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", - nslits = 6, delta_y = -0.5575, - nu = -28.0, jitter = jitter_fo_chopper_3, - phase = fo3_phase, radius = 0.6) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo3_position -ROTATED (0, 0, 180) RELATIVE fo3_position - -COMPONENT g3b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03711, linhu = 17.0055, - louthu = 18.038, h1d = 0.03711, - linhd = 17.0055, louthd = 18.038, - l = 0.9564999999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 16.9965) RELATIVE optical_axis - -COMPONENT g4a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.2600000000000016, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 17.964) RELATIVE optical_axis - -COMPONENT monitor_2_position = Arm() -AT (0, 0, 19.245) RELATIVE optical_axis - -COMPONENT g4a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 19.25) RELATIVE optical_axis - -COMPONENT g4a3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.4252499999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 21.25025) RELATIVE optical_axis - -COMPONENT fo4_position = Arm() -AT (0, 0, 23.6855) RELATIVE optical_axis - -COMPONENT fo_chopper_4 = MultiDiskChopper( - slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_4, - phase = fo4_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo4_position -ROTATED (0, 0, 180) RELATIVE fo4_position - -COMPONENT g4b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.5565999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 23.6955) RELATIVE optical_axis - -COMPONENT g4b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.7800000000000011, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 24.2561) RELATIVE optical_axis - -COMPONENT g4b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.1380000000000017, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 26.0366) RELATIVE optical_axis - -COMPONENT g4b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 28.1786) RELATIVE optical_axis - -COMPONENT g4b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.4049499999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 30.17885) RELATIVE optical_axis - -COMPONENT g4b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.4106999999999985, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 31.5893) RELATIVE optical_axis - -COMPONENT g5a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, linhu = 18.0, - louthu = 17.005499999999998, h1d = 0.037165, - linhd = 18.0, louthd = 17.005499999999998, - l = 0.9945000000000022, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 32.0) RELATIVE optical_axis - -COMPONENT fo5_position = Arm() -AT (0, 0, 33.005) RELATIVE optical_axis - -COMPONENT fo_chopper_5 = MultiDiskChopper( - slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_5, - phase = fo5_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo5_position -ROTATED (0, 0, 180) RELATIVE fo5_position - -COMPONENT g5b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037105, linhu = 19.005499999999998, - louthu = 14.994750000000003, h1d = 0.037105, - linhd = 19.005499999999998, louthd = 14.994750000000003, - l = 1.9997499999999988, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 33.015499999999996) RELATIVE optical_axis - -COMPONENT g5b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.036645, linhu = 21.00575, - louthu = 12.994950000000003, h1d = 0.036645, - linhd = 21.00575, louthd = 12.994950000000003, - l = 1.999299999999998, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 35.01575) RELATIVE optical_axis - -COMPONENT g5b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.035695, linhu = 23.009500000000003, - louthu = 10.990749999999998, h1d = 0.035695, - linhd = 23.009500000000003, louthd = 10.990749999999998, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 37.0195) RELATIVE optical_axis - -COMPONENT g5b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03423, linhu = 25.009749999999997, - louthu = 8.990499999999997, h1d = 0.03423, - linhd = 25.009749999999997, louthd = 8.990499999999997, - l = 1.999750000000006, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 39.019749999999995) RELATIVE optical_axis - -COMPONENT g5b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03217, linhu = 27.0135, - louthu = 6.986750000000001, h1d = 0.03217, - linhd = 27.0135, louthd = 6.986750000000001, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 41.0235) RELATIVE optical_axis - -COMPONENT g5b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.029395, linhu = 29.01375, - louthu = 6.5, h1d = 0.029395, - linhd = 29.01375, louthd = 6.5, - l = 0.4862499999999983, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.02375) RELATIVE optical_axis - -COMPONENT g6a1 = Guide_four_side( - w1l = 0.04004, linwl = 6.5, - loutwl = 4.9864999999999995, w1r = 0.04004, - linwr = 6.5, loutwr = 4.9864999999999995, - h1u = 0.02859, linhu = 29.5, - louthu = 4.9864999999999995, h1d = 0.02859, - linhd = 29.5, louthd = 4.9864999999999995, - l = 1.5135000000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.51) RELATIVE optical_axis - -COMPONENT g6a2 = Guide_four_side( - w1l = 0.038935, linwl = 8.017499999999998, - loutwl = 2.982750000000003, w1r = 0.038935, - linwr = 8.017499999999998, loutwr = 2.982750000000003, - h1u = 0.02567, linhu = 31.0175, - louthu = 2.982750000000003, h1d = 0.02567, - linhd = 31.0175, louthd = 2.982750000000003, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 3, - myd = 3) -AT (0, 0, 45.027499999999996) RELATIVE optical_axis - -COMPONENT g6a3 = Guide_four_side( - w1l = 0.03367, linwl = 10.01775, - loutwl = 1.0, w1r = 0.03367, - linwr = 10.01775, loutwr = 1.0, - h1u = 0.02049, linhu = 33.01775, - louthu = 1.0, h1d = 0.02049, - linhd = 33.01775, louthd = 1.0, - l = 1.9822500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 47.02775) RELATIVE optical_axis - -COMPONENT guide_end = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT monitor_3_position = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT start_backend = Arm() -AT (0, 0, 0) RELATIVE optical_axis - -COMPONENT optical_axis_backend = Arm() -AT (0, 0, 0) RELATIVE start_backend - -COMPONENT pinhole_2 = Slit( - xwidth = 0.03, yheight = 0.03) -AT (0, 0, 50) RELATIVE optical_axis_backend - -COMPONENT graph = Graphite_Diffuser( - xwidth = 0.1, ywidth = 0.1, - thick = 0.2) -AT (0, 0, 50.001) RELATIVE optical_axis_backend - -COMPONENT sample_monitor_arm = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - - COMPONENT sample_PSD = Monitor_nD( - filename="image.dat", xwidth=0.3, yheight=0.3, - options="x bins 300 y bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT profile_x = Monitor_nD( - filename="profile_x.dat", xwidth=0.3, yheight=0.3, - options="x bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT profile_y = Monitor_nD( - filename="profile_y.dat", xwidth=0.3, yheight=0.3, - options="y bins 300" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT wavelength = Monitor_nD( - filename="wavelength.dat", xwidth=0.3, yheight=0.3, - options="L bins 300 limits [0.5 10]" - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT tof = Monitor_nD( - filename="time.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15]", - tsplit=1 - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - - COMPONENT wavelength_tof = Monitor_nD( - filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", - tsplit=1 - ) - AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT sample_position = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -SAVE -%{ - - MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "a"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); - ); -%} - -FINALLY -%{ -// Start of finally for generated ODIN -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train/bi_spec_ellipse.comp deleted file mode 100644 index c24fb3cdea..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train/bi_spec_ellipse.comp +++ /dev/null @@ -1,794 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2011, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: Bi-spectral extracion system -* -* %I -* Written by: Manuel Morgano -* Date: April 2015 -* Version: $Revision: 2.3 $ -* Origin: PSI -* Release: McStas 1.12c -* -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* -* %D -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* The supermirror number can be automatically calculated (setting the number to 0) or given -* Each mirror can be split in submirror pieces, each of them offseted by a constant angle -* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. -* The feeder's shape is calculated by the distance between the guide entrance and the first focus, -* the distance between the exit and the second focus, the length of the coated part and the opening -* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. -* User can specify different shapes for the horizontal and the vertical ellipse. -* Setting the m-coating to 0 means absorbing, -1 means transparent. -* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn -* but it's transparent. -* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. -* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. -* -* -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %P -* INPUT PARAMETERS: -* -* xheight: (m) height of mirror stack -* ywidth: (m) width of mirror plate -* zlength: (m) length of the mirror -* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) -* n_pieces (1) number of straight section per mirror -* tilt (degrees) angle between the mirrors and the horizontal direction -* angular_offset (degrees) angle between subsequent sub-mirrors -* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. -* R0_m: (1) Low-angle reflectivity -* Qc_m: (AA-1) Critical scattering vector -* alpha_mirror_m: (AA) Slope of reflectivity -* W_m: (AA-1) Width of supermirror cut-off -* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. -* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. -* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. -* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. -* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. -* ell_l: (m) length of the coated part of the ellipse -* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors -* ell_w: (m) width of the ellipse entrance -* ell_m: (1) m-value of the coating of the ellipse -* R0: (1) Low-angle reflectivity -* Qc: (AA-1) Critical scattering vector -* alpha_mirror: (AA) Slope of reflectivity -* W: (AA-1) Width of supermirror cut-off -* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* cut: (1) cutoff for lowest reflectivity consideration. -* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file -* -* %D -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT bi_spec_ellipse -DEFINITION PARAMETERS () - SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) -OUTPUT PARAMETERS (pTable) -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) - -SHARE -%{ -%include "read_table-lib" -%} - -DECLARE -%{ - t_Table pTable; - -%} - -INITIALIZE -%{ - - if (reflect && strlen(reflect)) { - if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); - } - if (n_mirror==1) - exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); - - -%} - -TRACE -%{ - - double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; - double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; - double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; - double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; - char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; - int i=1,j=1; - PROP_Z0; - if(n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ - mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ - l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ - for(i=floor(n_pieces*0.5);i>0;i--) - sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ - sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ - alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ - l_acc=0; /* keeps track of the neutron z position */ - h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ - - if (substrate==1) { - sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ - sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ - sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ - } - - - - if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ - ell_h=2*sec_pos; - if ((ell_h==0)&&(alpha<0)) - ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); - - /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ - f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - z0_x=f_x-d_focus_1_x; - b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); - a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); - - /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ - f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); - z0_y=f_y-d_focus_1_y; - b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); - a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); - for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ - for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ - int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ - int_t=(int_z-z)/vz; /* time for intersection */ - int_x=x+vx*int_t; /* x of intersection */ - int_y=y+vy*int_t; /* y of intersection */ - is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ - is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); - is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - - /******************************** INTERSECTION WITH X ELLIPSE **********************************/ - if((xdelta>0)&&(ell_m!=-1)) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - - - xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ - xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); - xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); - - if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ - if (xell_int_x>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - - PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - - continue; - } - } - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ - if((ydelta>0)&&(ell_m!=-1)) { - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - - yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ - yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); - yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); - - if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ - if (yell_int_y>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - continue; - } - } - - - /******************************** INTERSECTION WITH MIRROR STACK **********************************/ - - if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ - if(m == 0) - ABSORB; - if (reflect_mirror && strlen(reflect_mirror)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { /* reflectivity for the q of the neutorn */ - arg_stack = ((q-m*Qc_m)/W_m); - if(arg_stack < cut) - weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ - else - - { - i++; - j=0; - if (substrate==1) { - eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); - if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) - (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); - } - p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ - sec_pos=sec_pos-mirror_gap; - intersect=1; - continue; - } - weight *= R0_m; - } - else { /* q <= Qc */ - weight *= R0_m; - } - rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ - - if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ - - PROP_DT(int_t); /* propagation to the intersection */ - - SCATTER; - r=-gamma-2*alpha; /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - } - else if (!transmit) - ABSORB; - else { - p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); - intersect=1; - } - } - sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ - } - l_acc=l_acc+l_section; /* keeps track of the neutron z position */ - sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ - alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ - h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ - if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ - PROP_DT(l_section/vz); - intersect=0; /* restores the check of the intersection to 0 */ - } - } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ - Dt=(zlength-z)/vz; - if (Dt>0) - PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ - do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ - - xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ - yell_intersect=0; - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - } - - - if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - } - - if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - - if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ - - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ - - if(xell_int_z0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - continue; - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - if(ydelta>0) { - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); - if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - } - } - - if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - continue; - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - if(xdelta>0) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); - if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - } - - } - - - } - - - - - } - }/*end of check of deltas*/ - - - } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ - r=(ell_l-z)/vz; /**/ - - /*PROP_DT((ell_l-z)/vz);*/ - PROP_DT(r); - -// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); - ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); - ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); -// printf("length = %f \n",ell_l); -// printf("ell_exit_x= %f\n",ell_exit_x); -// printf("ell_exit_y = %f\n",ell_exit_y); - if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) - ABSORB; - -%} - -MCDISPLAY -%{ - double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; - int i,j,n_seg; - magnify("xy"); - if (n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ - draw_mirror_gap=xheight/(n_mirror-1); - draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ - - for(i=floor(n_pieces*0.5);i>0;i--) - draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ - draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; - draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; - if ((ell_h==0)&&(draw_alpha>=0)) - ell_h=2*draw_sec_pos; - if ((ell_h==0)&&(draw_alpha<0)) - ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); - - - for (i=1; i<=n_pieces; i++) { - for(j=1; j<=n_mirror; j++) { - multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, - (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); - draw_sec_pos=draw_sec_pos-draw_mirror_gap; - - } - draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ - draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); - draw_alpha=draw_alpha-angular_offset*DEG2RAD; - } - - n_seg=1000; - - draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - draw_z0_x=draw_f_x-d_focus_1_x; - draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); - draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); - - for (i=1;i0YP6&vnLv5mh-GRAy~(?@``+!EjdY1*5Y z=Z~;uP-9y@k_?#B{O@nR>^I3Wfh28n&a2NUv8CPF+1c6I+1c5d*n1_GdNV zuUIUZuj_+-%o8nEq9};cR?)F{_HbU_A2U4_5Jmagv7VG!=*bG=M)){yH32#Sd{XjxL5l zRlJJ*aW5d`cY)`laWGD|L}oJ3%V!7l&)YbJr( zuEQjZ#*EP3;_~7qOs|ALO{0;YhCR`{io#wXqJii|QQQy5fRspP2_RGDvJoKy5GO;w z7xaanLTkg|+8?K4`L%}oD(X!WAe07jMnINDKbQa!aF}7#lc0x%hfxn&kH&Sv_dJ5< zLwF-D0v`w+r{YMoL=uiBfci8E1dbd2w|o5hftCHcbvKlU;NvS=T!S)l6JhR#SV)5(;^lCu;I8joDz|HSIEkVxbb7)-xLPyVn#KQA$E6PLQ(NwQ>f2#3g0A= z==s2^eev>@E7I8{Fu-Ai#10HkiU>r5LD&oZp+>3?Js!cdNQ55;!oT*zp$~J187I98 zv0HNHQ~^l9T?od#E1ZphEpcoAi}{gx~VGyzKmfSg*X*qUTf0%eSd*`zFH?6IUc^42F#!ITZFu!&70cfQAla~^oLLd zp!Tl9>i{c28#oP!tg5ruL5wp#!GU3TayDIIl_8K2*aPWHyR^J zFM_KO1_>YXWP@g)m278SYnDUP7dR%9hk`~G>ue?eT{U(k;$kmYyLI0Ygr zVq3I@J{Zz}5z;STP5em^cMtz3i=sy;)`>-v2}rvbF}Z@WFh&Wq2kT?+D(HQ{X$0-! z!*P^KGWP|}><~l{$TetHvMfj^U_at@pB5Jl3I;lk`qLgW0(62$8@~I!9&{|FxrpP| z4|*{PG$>?IBmuD+prC9K$DVV=5sU&Za99xtJe&sOo|exFRW$lYli0_|z;VZ|Y)1eIv2aYbsQ6cd9fN-z|FvFr{n zIY99Xy*5Y@0%Z1M&?jSmgen-UKV4u%nglpVL`eIIk`Bx-W-+LPJ`)4)-GCB=b00@N z7!wsg1i=Iw18xCT2)=|dkbU5T9E14-+(6=_?$j-js%3#5c(pzNK%)iF*Z`sZiwG1` zPmD%N8PEV=dF#RO2Yaus$$IJc3OV{sW?GhLBa zFL4)w>II?;92?aC99p$#$|qUI%a0-u)R18eb2DWHOGzUC7KnpVOh0+s!YOe^G8I9= z$`ZuG8TOZTu|%pFG#q&qBc8(M?B*&M=T(9mAdk{NczfbHwSGXdjx=MS4$R9$O5#!A zj}ybVdKrS@XI+aPkD+1IzI7L+7H}DdebK7At*Y0mHe1!TR<+d<+#1alXaNLOpVzpl z(%a!F)#L?D1cL$Yb|g$#Q>L)J&?Gh_k1YWQsPz1)*$9A)xDIO2qOCVGrE7W>$jD16 zN-U5#U`8i9llr+*$REmUz&}maJ&<~=d!R1*yuo_qj$+@cRR5Wz35s{QyTs*G4hU?b zU^FHXjGO8zPa`I&<|Z`DpbYefqX-5HVfA1I$F@jjX;lYzRN+u6_*w(F4uc!B!1Acm z`fBa0Sy~vylEmLML578?x)YC#c8}r#1;pgV+du@j$W+*h+9yGAWa3(I4P|SrAIr@J zNf+Ae#fTv9%5Y#nq$c47U=O?-0Yl!XU6?h1s3?F|%enwke}02PWJ45Ug_u%@aL0)4 z)8+-#lLYMn26#dnA|MK_v_>;Tfy7!kk4qx4O_2|Y+=Q^b><*zc!0S&@Rfg3AMmz{; z0ilLdU_QBF<1OF*dly4Ku%YIj6dyn%OT9u0j-qh{?0!Y|g#?uyT2;09JX#|i zuZT(sAa)5=rxz$d8Y9^9^l?qOZoKa8!q>*dFuG`rV0{ka1|wa=?k5cvX-UC>!SahU zWlQM?&l@|uRy^N5-rIjMU;252Uf`1OLzw;uh#;N~o*~ap;LpK$0vfWJlv}u&A#t=N z-X&@L-k60+H)CaHg^R2py=H(9DlTcvJg79-y7(C=-)B{x%_e9~Tt0*U_Lqsa%Ws#V zIYmln&|T1+rZ#JTk8Rhj*IftKCj8q3PGRC1^+S7(*o#dTn3;!I~MtccpZ+z(R5@LLvyJn)6ogazy7gkDPJi2PEgIH2`PwwkR za$JC;6I@_Gp&XIIYAK5dp_7Lr=p3ed^5*btzq|M5bm#ow_^3`A6fkOZLoL02tI*u( z^HHS?05mOavWrQ6zlja|waH^8DspfgJ(x-`{LO@0qQfg+gQ#}vo;JbmhXA3 z_olt&B}pW?G4ImEE%l=*9yigCvcQ(O)DAv41iat97aj3WpfT*&1#H;`?AZlu+C{7N zahr-u5dCm4fTHe(v#p{0M#qNMZ~ls!OX)XwA%1(l4u4ixRnt&xAW8%OA}JXRetTb& z_&ujqu<#Sv+@hk}OHZ(IC?VSv;^UI}8warA8C$)?!tb#pzL!0EDcLVMdiTEbPtgR{ zs|wLvr+?Nw{%3>!X|2&e>s(}=i?q2&n~Q94kxeKZ8C~()8pSBcfj=={_QgEuCu|v9q!rY zI{n;qbO#F?J)@qqgILwzo=6ixpE5O&3ih>O@40YHtU-$)hkbbTWj6d(=*Z`dD3mx zH`*J3wgZybtvimh8LT=E!EH8M{Cul#`c=AXuD-IL!ppiFzyqLrsx-!MJ$HeB<(?KD;0rn5=3U4R|Uf8e@S z%Q4usU5(wE<7%3DYnld5b8|yu=WS~2oQnd2bA>pW?N(DwVXNZB!}Cq1_-t{ zWcS+jjdjHeZ9rVHP8*P2-&Eh5>uW9j-EnnYuietm-L^syzHcg|+I45GwOKT%S;Y1w zVjE43z=pS}fv>mSO@mm|)yQma7$jXscLc^ym+?Hue0Mf=8K>zK&VejqZyB++r>4OM zPEJFyjg}_A!G?BC*?ptTUzE+nw|#{qGO z|E$3}DtI}4;6K?GBoVL?3u=@9k-yrH{s-E4_7N5P-9u1Fmq;PyCM#xbO17=1_6m{| zONDo?`+ni@4w|A-Ol{HvwwQow_f&bGyArgd3&CPe4d4To`rm#g?yfc zd@dma1!`h4oF*cUQaa(Y9iPYy1yrfm>zOXbxjx3ZPR6-j#<_0BxqimEj>fs3#<{M> zxxU7^&c?ak#^+i1sr@pY**`L1T-W*qKfTOPFZUV9(uW2*a?ae<*tw-wk zj!ili>(bUT^8oFGnFq9Iv{Ab0ruk<#UEK9$uu#tk7;eOHqm>MUfen4wjnVUFd&xZN zMTtF^tfy+)S#3mdsE&@hx^KXIyXX&s+xwcaHtVB7dA^UXb!dP4KEs1OdklMb7V@yO z^zD}*TeEVICDy^w!TG_?;lck%p~e4KFwhyQdoeV~GQP(+Jz$8~-H051QHt>tvaPhn zESyYZa-myBUn@T*moK*0qTpH1bSjeI&pU42<}USo7oI!Y8rg>QDT5*j?A?RDY zYkOtdVvAsy1P`t&AAi*J_zZ?ZypuGh^X)X2PR`Zkqvf*dL+@5}V6}7I_BOB@nwhq< z4AOBKxj8n6dX}X?yAbdKCd|7`Ic*cMhNQFU)X1JO*F>3%XCy}_YsjIBS$Jhx4M?^} zel-BE27^t=AmbR1STt-KH{tFm8izJuAF|jGIz}PJN+G282*;V2eM$G3k=$A5q6c=qVHl<5!f98Sz+qfP6e#ARj^1bvIg{qduNJR6?Hp zEg}D%BxIv8f&EN6C@m}U;s)l~CH`LlkUP3(m;YzHT(yv?sz$5#4B6{Ah(2RS)v>&2SA}UsHwaLA996~JsyIVG>HVjuU5KNd*ZbYw zH>aojN9SF1GHAO9*KXrkxBz)wswzQM3CF_Tz#pZHG5J!w{RyCiO<8AnGWKLIX-&^tBcj76zsKd*D%EdK``-wP@&Z(Rf z^zs+1Y!o{u=_b>Q(#i2zcZbmF9vtoM|5BpA89Z0**2+~`W4l}?Y( zbET`gU|FdUgbh3>sW(;eU3!auX87k$79`K!g&^D z3f;pSaOxcrKA zMt|=**rs9&TTZ@GF6I>6sF(UE=92IZ1USseTl@q3h>i%-ubnR%t1w2QbX%QO@5-GL z6dYBB`CAr?W~lP&Ha^`jYtc&^Lq^~cPCLuc_Cl&M@K30WlUsw?A} zWpCuCad>Ouf`kbu@EkhGj&Z|+BX(Vy`$GBT-tR;pS$}Q{zUc)l~xovu3JH!RjgtMD$1dTJZbQ?XI^{uYtPj7Ol{A+ z*0nuTTfc6a+D%itXn~>_z|kfUmipdE@Fiv{ul#>t6Xw*NPi-1Vn^*opof6ksxKCPj>g{rV zW1vKwb(I8H7VDyk_0wK%Y%%kO5z=RvT3tY6jf=nwz7{(;R7@eu6ef$LBI$ zL54nsNY1YYpH%pI(dYu@3EhaBr((5$d@RZ5D7Zz-tDp#vqbbGRkg7tb5c;YKxB=m4bbibU1@qiE3*Nl~y??-}2lwSFPlPWEZ)PzGBsAZPQcq zlS4nD#;Au&^q68(mCF2*z2O8O(6qgZ6af_|AFPqt5u233Bv6doHY?dId(SZp*V)Ly z(3puzN4wEkdN#t(Yx8rB=v!p+PF8s^1TD0r9&3F@JrEt*DVfV>?6`Nk+mVjOIZvei z?Rm#I2xnfRtK9kN&ThuFSKOwf2{o$x1#_;pw@&rWu?nE)Sr_fCRvDC69I?xK$mFyk z4XR=W|J@C&hyB}Xe^%|=&YB;p*VVW>^hXzc-!7T5RY?8>IsHo&{`_jGD!C9PbiZ1< zhE3Rzg1yD%1*VtdGV9Fb@5u-rR4jK-1m2mc0Z~Z^1Kd$vjYV79bn5)%Iu zjfPl$8ApDfqVX*YxlyAfkrawms7$&+jUSXNYJ~7}C(GTba(A-aUAEkV`2TPB*HmnP4#5=a1XihTD^{e^7el;J~ujYgL)y($`i_Gvc*XgJeXrvK~NWR zOsW^pv)!HZ^Ziq`VCp*zH-Wf}VBMC|4cX^90IuQ9E3PCaaCca{E~YMNIF(ksI8s$7sOTC^isaZzBq3hmQn z+#%YFtJsi8Kmhgu;CPjjgN9jmuHn&7-p`c}g!VNecMZ)qXpy^~@z0t3dCNa<`KMei zDK0#l5-dHwi=jQj-Y}@WNMXx4>>hO!3_`&xz4ex2_lDO&_XvO=ag=$w0w8A#j3WNG zs75acho#JY^U8vz8*|V7m?Hk+1#503hq%?y3ys>tkpHM$-W%dX#yGiQMbNSwaNs#< z>HgjdWpA7=HJXycXWQ@}es+roYXe(#E-)>$2zR8ynrVnC}d zYONCqj!vB|*+NEJ^YeM(EX)+)Pz*G+5iqwvVvfkY!z)a|miT*hM4vZEyl_l#hdx^3 zt({@x`c5sC)*CV~^wVu@@GMBV9U#qBD8I{KDm}UfqS{3etG2>!BSH2ar5_Q7&jGES zmuJVPFEcwe>jSO-gdq}Dz6GcjO;Zev&0%0fe;WH{|E3|o$W4R_PRg_6H>bNMf{kul zR#exxIvJ!(4}nyuC?Vx2nqQR&5@jMH{crV*h-s0}Y=0^bXn78I*C;lc6ZG`5=-NOx zo-Ll6CV-VjdXfVLzIEuB% zI?U3Or6;z!B#XSWq$~RHfatf2$;wH-*rZV`tbs(?>KNviMzISEXgE=75{SZ2wF0nU zY_M<85tQ^oRS>dcRSM2L;ZU&`6y-gdPKI_!I%zjU2ZwQjfk>AGn`0)O2cQY%?7a*c zqF(Rr9h{vU?)*x|sQ(NH=m{c@Pxg;?c6ZVE;$sN=S!sEh_)Et+>Z({rC26T)Cy%P= z;eU60@ICKNVchxX^bqzvsVqyzh$@*Hs$_VfzxcgL-(e$IWkE+f&?@aOtF+&yzxbU> z;+9c@blobRYEXXm9DSPH6P^=TV=0{;$_4F89LZ1ME2` zpzVH*6kzw~|7v=k*UIJp@|sTb@BCkX#^;;L|5e&8>l|RMPvrnR4U;GkMrzGg14{KU}dz%t3eUPEJ`CxBuY40YNs>`l#eYVM|$>+9g~P&CA= zoi}1X9wHXw+R-$K#}`42nUY?rygF8sqI4=#e+jqlZj>?gz+CpRk_WS`Y-K>e5S%GRX7YM6Ifc}@s%Igi0*qvBM_)pSk!i(rl6o0@r0rXFP0!ya&F#u&G z6+c1aFcziXd<<$%&D+7~p~`7=0d3p_Gf^60t|KmHGMM3s_z;r>!CvbF`VkR&oWBej z4=`qEFB(&XWy(60fPM|UgqV&wfrnJXDa%SvrYDlQlyLR8>1cwcVkcFuD)SW9{VDFi zZ+!v@n_0W|52wd(PJop$xaNV%1jDavtn6U&v#~$o;HueP;QfDUmrzDMj_Y!A0npwq z0uI><+TS3IlT^2aejJn^CLB*A;5b%pRE%>w85d`Y;y9`@*1QSVdBv0@ms{n=O3A4( zL_9gPa=1$?BzhtfAaSyzz)wO&Kd8vlcF1F0u`csfsUA?$2>3raR+$`9Gk)P4 zd}K~DR)DK|~w7A}^uELn^GfP4H$aQv?ls{!+XI3av&aU&DNI*v- zia^f8MKi-?PfE|}2bWMFz_a?Q$@#<2i6v#aGrGNit`2xH+QT^7d8t;4{eB1=WTy`L z9#-wL>7ujjY`YuIvV6#)K$l%-+rwvaK}x15~}t4p%8 zSL%xMx5P41W_uHe)@*HiZD&~_&E&MO&Ldqcxk@1TLwt>Hr@HfH45Um203d}MHUX5m z9$7Gbxj!@&c}Xz%030586+HQPifqHr6ehT8Vbp9MY*}(v%Ok8^Wr7b-j&IL!y%&ka?+@!DwJWarS!xo zTeRdvTG&2!>S6~IO^!J_GdDtBLn@sjE;>HPoE}fN3amx%e!QcRI91(GCIJe5LqnO_ zE4;*fO_+~F$Di-38)dwl9Z%%s&ZY&p4&sXl4N}>5odyNcKC=Y2^7f>ZD0b?+zRGqL zs0iEKD9_5dZoLB@Mc5}-ocjfxiR~2)bSJBSEM7?7@d`lcFUxi29e*|t-VT+`^>Vz_ zgVsLOKbhV1==gjel+H2dl*4>WGDT3KUc}>|QWp)l?=syW`N*Q9dHhtiwIL= za4JFe?hb=KBK8~UlliWxo=I&}u295<)EY%jzeu{#G%eyK_`tLQu?S_N_=2*pX#YQD z{MKaehs-2(Qmja%eu_twTkt0}30{vlW0BhM@Y&5L2SrVzK}3m!0Hwe)d8x3Qs)$p@ITZW@bl-VKl=OLGx*TZY$i=XYn4{Au zst$}kPAEvCmTF_Y3aIln%6w-uG0DLyQ3AjUp`^AT?f(5B+#Sr-6wBJtm$Q!m3J|s7vQwu|H%1;gOCue5ueQ+$$*ba<7YutMcV$kXI(!j=Y=JgrC*OpICB3_Uh&WiVmftx7c4 z{z!6h1*xS**|ZeYW)+oDN2;1mmFbSUCyVfo(bbJ+>L`7c z%9B!ruBXj*tIDDTUr0fYU*!@F!e*&3POCV#93;;p>qj&SE-hzD;Bu?indeug%l7ls z$^3GQBQN%@{1{gI-j#9~4J{m!V4QG#L0%F&z#bzXcaX6t(W9zpV%Yn#s0evs1FIA6 z=$=z|;Kj*-KplyWje%wj=`&2gp-_oS(|x?}Ma>mk!qqVi)jssQ??j0hwkGK8iGP*F zQ}n=5=h&}L4!W;*&VW@!NxFCo<>M`u^BlG%(Czys#>?*6J(#sYVgXv!uG^GLHjvGC zo?Vs~-PIxVw#$SUI#`R0hc)@YQ@=kScky=T^av)%md1M!0}J8?95q{K!Hr>slo}&9 zsJX3ecJ5Z&eZQAZ$$W$Ml@TrqAUT6c65{>_<)02pt9!#!EOSfrbB05LQRIFhoJGB` zs9IKtG#cU*H#ySCgO`6|e}?>Q%^m17E=y5QBVD1D7X)ajVi)8H4=^>*uPu$!2qd=k z8v3x^g+Ek^96Uml1=}J7US`Pf-K5Y!DiN>_IrSOmi_f9cu0KXUE0E?%kljxn!Q)^Y zO)sxx8m#Z{=Yt%3s$*fB5br`f`1I3=dmzhY2}6F0h9bJhr97bL)`S&kv>oC`ub_}F zGmp$_hsBQabojXR1*Fu|=nR!8$s_xI0itKh_Qa7mdH}2h*;;gR@k5{QBncqMFVEM z&UnqMccQYT!N!qK08&?;^-(AZ>5`euq*sy5A%LqtU!9UT!H()jC{3}AaM!ENC))O) z>_R@eD52{l=D?+F&C*JS`$wxo=~YbA(I3xPCb3^Sbm3CDGD*B)o2GpdrA1bqU|{!Y zcN)f)jS2SmBjlr}w5KS~i$c`!{2^L&XV_CvtD#Kl-YWr9m*rmSzH{E|amdUGc%B~= z4Ay|&QCNu_#E_D^Q<;rVbwe6d$Dc>JC0o$C3k5CUKoYA&RDsQc1A7I02)hFJeHm|o z6!a;~_esZ~Kt1B&H9jsFT)c$B-mhf+paUp0m0%ulMV%5_LbJxvvM7zh@id_h)ZF*k z;U=i}45cH7(&3>j@n))G@6R&pE0n4UxnuKa_FT0#gXIkDJ;TIV-e0_ z0VNg;xE>W-yrT4#yYB48VNqJJ=G+^9L)VpRSFKhv`z#FLKxTgYH=c~%D~kdCPTnh9 z0scb6IW;t%;(yTjb!A_W#o!SvL>??i_cRSXIUMa&GOeHRmntbY_ce?&AP=tE{;H;7ucikQ?$Q3=mk*;M1?rV&0Oft*FJ#-q)DV zOX+G22sdX>#Mmh)y;XcD+}ulhk!q$0rmZ{^18gbf={~J;9?56xb#Jgdr%x|t81DYP zXz?oYRnRJypr1gFp5dZ49Zjq#T)g7*N!-Qs@)E{GkD{E_sAqddwJPf2K^ESYp+|A~ zkc61fA6Q7$Cu2FV`)I>_z$Rf))6X2QFP^Q|*Mj-K#A{)dC7)c`_P$%d5WUW4^sn^-HU|T3ASC7wu}!72oxnWwFL6zT0#W9`j^+}DiiDyk zr^hGV|8cZ+Plf+@VYUqbZN+ET?-e>=t(wy)Iv%E@VO5lmedo`G={@%b_1Rk{$xJ_( zfv#ZP8_%e>h(R#|bbM(cpc}};pW&)zftO@DNc6FhI;#N{s=;S^s7oz6$P?d7f|btx z8=)64-jzA9Mx#`U9URV z(jzU=HO$2sXi6v#iEaI!co=b~o1FX>ZO~HR0v!X;l6^?a+Znh}r^WyfGEPnW{$6)M z-Jw%2K&d&OLm@}|g?(JO&MoXJA0=eF>6k~-&SbEAF7)cCtE{eCy}?Ks^3JEe6|$A_ z1WXiDbKIrO#(=ET)8R0)3CLV>Qg;g@B-ES@3+N*6bxidp(-=mzpF}wN#T# zJEY*Qkq>p26uCh4N3qJihvh%@$DW#5N&uGC78v-J*c|AJn+yg8j3U13VI)Kn?R9`=-^i0SLxyXUE}_TcVI^T2N0;K+ARSL6{mv+qC1`RQR3yU zq%6MC@#I1GQ;1KVJmJtXb629DJi$k>o$L0)e)mf86+cF&m~M(sw+*uVkYLE@f>ajf zY`2fLdfZr;(vvQogA&vyPZSzo?fN7FoWB~q;HnQ9v!v@ouuT;$tf|)w&h8>^27yOD zb>C>)nry%s9J;X|N%tScz;v-vEe79PRbbgBi+mx|u1cn@pbvzFSxs7OY7gPyvNiWv zQ7b|Y_w^a~wD0pmL{Umu+>w<12?)4MM-I!KeI$uH!>octGhA;s zDOGt!U!wPAjQ zl3{V}FS(kA06+4y{K#Sr`cHvfmE}jvw2|Mp1sIk95^5(V@}a}?IglQ79%^;|_uutg zGgoqHy5a5Thh1P3Qu(EG?^g#$JBNpSca5x!!@wVl=|pLw_PHPLh2kK05>qyMt9_PW zm$skl(y3#YNgeBrn|XuA>iL^?DtbBNt^F^B=!G#}2`nw&&S0P5SQ~xqoFI*=6|ool zH`>t;a4dnMLu)U`L+7o_Z`Ri3H?wuYtH07GmCRa=VBFVcOu2w7VUJ;UJJ}id+xxtY z2cE3*TD_gE>|;z0g0Wh(t5i|dWq-s_$J*CUP<3g974%Z+!elxd1BC%}SvziE4E#hs zH2VRfUWS-b^D74E-xdIbho1!a@$Wl?fBq+b{|_%K>x-(jVR%vReQ_K2-~U^~t3bK? zf9`s-_4ob1KjZUF-TzZ}|C*n=`?q)gMx0#DlCTG@9L~m<7qc(E>vtGl#C|;663LYx z2SpP>Uirg|Lg7H(G0WZmJ9(>b{T)TuqFu$ye@*M!pM^O*Jq;*u_Lig=h(|Q zw=jYuwMj0jgOG#t^R2Lu0vVX?5u&T3FLe1#Pk9dGU6E8?r^35ksENR8WyNT=uOF4j z_4PXRVShU2*cEhg1waL-Q#bOlxtDLyi1X_3*Y4rL%kGa${~3^-OwxTzWouxvvLZHQhTscT z_aZN^z+;1U1c3i!l5;rGdc9r-tx(2UEt@)%*uNb4xOW$z6sA}q3I4GpRe;6OLh#fZ zZ`qYpQf!W%p*NX9>Qg3{a8Tk`&pS>z4(KkZ9fT4zN2jw zdGN@SVSLQfW~b&h>$Q5TQlhqNt#Y>78bWGjpS95K)LCn9IPE6hkXm;t!R@33U)Ngh z#<~VoFE?DLUY=`oeVaQ-#X6l<8J~4p^>(wp)(TdEZmLHz(5@=!>Y^JP-p1N}MLk(` zz3yzb+RgilHg!>N({7HyfLo|EgAAw|36)Y}^yo2~U#AgQy_T5~tn zasU0++jzs4riXnL*eFr4kt=A(mr)F_qQRUAR&oQmW-%zf>Z z%jF9H%&~t;P({7iG%xsASn|DYZ&hMV zUHSM~lTd}RSuhX9+(f)*Dw@paoq76aXX+a8mP7o~tZml4c54H_yOnTt1NdXzY096K zu;xP1mS-MR!aO(+S#@oL;d!-<`o`M2ozxXrTpVz@{hQ) zxwctvlz>y@klQ0~kA+k5>J_dd|B;~!E65I#kT{;rG7l{mqQUkwuX!kQB)d2;pEIoX zgvNJisUcTU_`e*@wRw>`bA)xEtOLblV=bzSK?p)vAaYTnaNG4TwkkwKansCE5}o54 z5hs}mgcbs{^LNP&I|g=~Io)W`<-#3V2}lJax4za~tH@~3{Ld;%2ht9n{dh}ujZDe3@IqMnk{G_`Hd!>`{`X#J+CNyEZIW=SU=)cU0Mt7 zKoL%$bXL8F*u1Vi-sNixMtZ+t}+0}f(16^4y#))6+J)k?QNj&%of z`PO+}qoTk6e(Sv8O7`TH-!qjfCDJ7-x6Z1XGkSVd0AfvsEVSoTrogIQ;Gyh)`#ARh z`lIzAPJh(MG#cWkV8UD+2XsfUhthjEgM9(d3mT#qOwsSYgVD+jkxul%W2qI0!N|WY zIaOK(VYFJ_+9qhuluQyMdb_ZuZ@6vL@Z62f_PVF!D@Jl&+ibhI+&dnxuWNN@eZyS~ zYM>3ua^J^ z7i7F+8W^ux2d1Wx;jfw5Lp$#L`ZpMb<3GPgRi|vGyk-*w-EP9J3QITV^Z?iK+5|}B z(yp(!);B!@UPcDi^NP!h;6*y(N1CpMzL zlsX78t`dU0Et*R@gA6s#71}6A>lr#+1IE1+Qy!AYt+1C(E+Fp0E+Yh7CQHaEs@qLU zhdff`)Y( zU|bcOjkN}%Zgsl^d+oqoYi!mX_(zUEK z`|sKPiHt%2=JWeoUw7o=4-SBx|*9j7Jztk7jkk-f&{ z8yNY~t9mM=h|X{i1z*?&9{@Om$Qxt^+BMF3t5e(8f^00@SQv zuUhk>5~ED!y9rO5_10WZuyB1d52Dqnwd*({bojZ^Y^`s$cw|~YsC6%o4uNVRIvcVH zsd_2xb%$=NJ)SLw^CmX7+t6^B$0H zo7|nJ0qTtM9aALXZk^7pQvq;5S9d)RK~?sw${FL7CK>CsOgfmVOgDp|=_so8x6X6)oo(Uu&Rge2 zhl;2kLK(~3$$A>dM1lE2jxMxhlL(b)^3bJ2deoZ7P+eN=1hmLh{Vj;;`+S2IN$N+4VtCV9YqwDn zuWfo8&RUV+g{kDNw>G^^oKvm~XE^+)+#U`yYrcYQZJ16~qf34LIE-$8|3!Jg6 zkK>X7yxgJ&_*(<^dH5d+d|Tq@=u#=^8C#+bmMd~h^z&8fl6(xSj9Zf>%Gn}K^U5=? z95MjY90CYFLI_Xq|IX%=5K(K8kKL0n1(_RX3KM2MO^P2Fe7Bp zQFK+mzX|eY3HBJ4{dTCF$4C)6YdEDCbjc9puDbB~RQ{CY!Yx}VQ>WH+%6k9S!1ql@ z|F&)eP|Z!JmOcKsr{-TbjWR?1u<4}CzMKa#gO$A4{OQXA;`67EwmK`t4uckDt@fFT zq&E+gTxb}KFZC8eX_)}wdH!mltvdSCP7@SrXOsNNLDg6T{dIlAWpC`vZM{{mzPawX z?0LQ?b#~C^a_jZ=W~IA{UX1{P>Qf68{nd?5<}mz4?)jkgV*-#*yxs~P7pV&y^H z_6aFM8t#`!lE0AW97pmTZUvpS4R-U-@*HqjYu($(@Z5&C*7CAEhZkSlZO7)hW_{Cj zHl6!;ZnM78-rSV6sx`V<(EgUV@4>Pz&wo~(T+9kud2(S1rW6$cPnlH|g1XVQEW5oimV^oi?(Z>Dpe>|tzZ0FGmb zCqJ3^vG_5#fwJN!Km+Jg`pq9x%K*dg{|4MXqCoK%GoaE1G;tHmL}^4QQZeq_9*!c~ z9x+}JtTa6x*p_^7$DGuGA|c`KNM?|hNl0Q0Iz1wnTh4iJ<>>^tGSNFit&1HQz?O0Y z>a>eGu#n8TZlwn?NmF4IIY}~w1m*0%Rw@8WKA}?+(jG*``_s8|bz3?kGv)%t{Yzgw zzj*O-|M2+j^Tx#sD|I6SN=&MgfeqDnULOCvKVQA7f(>B+B_DG& zihgj30S`@HXwJ#`KbSDQ6yd6W6JmuiC=fx9Q>g;9WCDbt@c)>rk_65fN zMo2mvyvYNb1XQOAUuYUW_r+Bl3_8nKX*x-^8jVY+Grd6Z-x&3Jzy-B_aNT&_+l8-< z5C|D0jrEqZ{2~rG<;leq6Pk!0!t}@K#q);$LgsM?m6h@<<3chFIVtjGFp7vZ(0dzG zAe#iYBY%uZEo5R*92Pq{@eilRZ%zPj4ly;KGaG-pcHa0wQJ!9)5Bdp>D9JI7piJ)d7HsC2-0k8&lR47?=b*h0+ioKo4S-Ulx<#>U^{^G4Qz=c?*5$%kk0S zuOL;2!8LL)?!A!$;kbZel3x;rsPnj6VM!;(7R1s|)x>Ruz zBU2-^r^FS$SiT4^mksAjNy(%nvkR;YW1b=ubljKGOM}}KC!U0?6ELX&#?y<0^17tl zD8Tc|m|~0BZf)|F$T% z3w$VThxE?FEH@ntD$0p*fXp)9D=aZn_{E`DWm;es#h43wIFJB1%`n!`;KeBiF*PZQ zdNQ@WN@S0pS31S0EGJ1)<(ShQuX1uw8BayYA6^C*04qS$zo2CIRDS!xd~$nxDJn0? z;P}v8(>0koyL3E;Zo#nXTs0<@{HKz~+qvUq z-*z~}vd$oIC09wpE9#D`?8LMDPJ_%biR7d+daW><~T8pjuVXs;ib&A_9v#V z&Sb7G&Rwmh*2)dRD!@tEScDwwlbU$z63qN7Ti6t1q{$A9mtuEAdIjwq`w$83T**Q8!50 zNi12nGKKX&U8yR=I*D|}F**aIB%_SJ&L%tcNYZ=GgI~X&84S_WQl+I)717s*i#CL( z(pcm3EWa``3vyqpPc{cOxd!kY;BfcEBKTd(^Ce!>_;H7#*vqs^n6r~&P|Ny&8vG|w zHzCG(?}CXr@q&ngq<+hO*m*nW(^D2FY1VoPEzJ_p1M)UgBe{&&HmZ7=lv!^diMy$62#;2u~MhW>HpYaD@t|FfH=!JjDVCY z_vJO`BKKjMO>F*2#6CNZIf4ILY0M?+xl~D?fjp_dsKxrZC0H%Ja;k9BzC~o#;rr#K zOvTc6#@Z#7t@bM?t9?YL@5xR3hLm;rm^I~l2hvVYo6XBh-CWsYB|{DE@CFmbU7$%p zCQ+1IOl?&#YNoyG+|ur4GTE)lb(_z6`hb+TQkW|iTC$Sg;wY#!N~KBwB*w4>nS0KO zaW5BV#)Y3_lWwi@`FU))B}(Ti`Kch`C(VOfE4Rh1O0JEok6Ig50t5}mGqqKsJ``2c zxg?x(a_PQwnkiEglogrLvM8lyk(jcxY@S~}G{q)=0Jz+6kOP2jOlko#-==gMSJ^iy zMhSjC+_NHFvn#Qc9tG2# z%9NyN4xUU?y-729{w!WrGAOl@I29!wJC9^$rpbu%x;02btV%KTpiE>~O6dzPVB_?? zN@%AZX0q{BP!4VBlqYy2@KM>`8l;?4x+>X4x|Wz%%(x#7kaQVIi_wd}MxHd~bpDxX z(jJ~AjaSgQ9BD-<(!^46LbQTpXsmgBwUlQvz0zmoJIiM~ga3a~sxy>dP>ENZTxzn# z)8MnymI3$n^MXamJ!Hu5?d*e;Piz$R0WrjKl`|0no8t0;vg|yv6C^$;y%%Lm@3I5| z+A)_S6`#-x5b#H5uMf^CrPh4vFM9eJNx$aneNnnE!Fj%xp1|J+rs-OGc#^IsauLvJ zN9XciE$IYUoQcY02u{+7Oq`bi9kI-mLeBkNt0l_%!aP~O;mTtvePhli zTFVK_PbbTg<+arQ>glm+nQT@?E2s^j==}miwNb?7^SB|Ih1a9AXBc@!nT+|M`Uf&wAVQoV@>!+jRc+|M@dM-<1E4 z^8N9?G2b6EDISmlOuJKz{BW2?TLVA73ja4SR(%jJzt|t4mqRcVukbPYN@zbJcP+gV zuYwEo!*S}Cr%=X0W2@1)xw)w;cn61v5=cImm|I`BbBX=0Q|K#x{a@_bLq;h=c>h&Z zc$-$+pf~#ce$Z#rA?I7 zx{`F-5Andysk_ZOdLYe%YXN#<-SSyo53Fb;0fQCh9X7jym z0=WO04i&Uv#I~pK61b^KC-QWjI-_iBuoPWHw*ae~u=;T?Rn>d2dBG?)gW>d6h<6j|8{Kg0?ahtWdxlhR7Q<=-texp4!twx?8Z%#G zg8OjxRs!@6B(UOsc`bt&0=w|X@V_dVLVP?_*P4_DZonz08ROm)qA%HHFb-lEHN_0% zoj~48(-f@)PQz_@dvYi+MPBJZ-@HNIqvzr}sf%|BD!Er6Q{J;-H}?z^u1ROMAnC>7 zM9$T(g4F@Pp2Sgq+Cx+NcqUw3K$I{IH2H_Xb4?s=3x+X3KRCh&G^Yd|{Mea3cS(*_-UKuRVNjt9=yPzu8p1h|5utHiG~#2~^Kfx@|u^Um|;R`a)^SKT5M^i4m*| zP)~+bodOGuEpISnXX(149X4=eLOe_ekOE9*Ji>T6MGLx-x z-T_0GClK*7n|l#6A;}7HLW-LAgvm0O!?lu(05tDwk<49u0p2S*cvZ&yZ zk1kLrB%+|pT>_GiJuOI>CCW)yqD9AVM^UQpAO@W3a|lC}+KmB=ps*yLU0D(N7$quQ z!>S7!Oel7ct4;1wvk8eMO|mTngxrT7n}C<%vhKJqZ|8*UM%<6aD4+07@j#SOV3PJKZ3vI?)hlnUK)Y z-JnA(EY)&E3n27^OPstw*!U6?GeIZeN0sJFRov3w8T_RxFjr&+JaL5W1nxC(KG0Wc zd&5DmZdFXmH$qshV$rxeCb{t*z3}>=MTfVrCkXqQF@SedVsnrVQ@1+xs?#RH50G^5 z=RLbZ^OB{GfMmc!%dt9`#b$EKqBMhtk;OF=DYpu4* zYCQ3UnfQhXSkHPsS2ei>fdKL#hoy3+J)4B8Bu;ml;R4hYQ&RbL>hoYDB1DP2Iq^fQ zs`Uotg;m)KN@Z8SRnp2#i*+8i+bqBOe~m;{FsjQ+TG_h@|{>D^W!-hp1$Jp%dkz6$~(slS05N>cpO z{oVV$`OyOC(ch*8kToYiLB)fG7Vh5YxYQ`9CA@EP0UUl)*7!}V&drm|JQ>_BFnSfPK5R|$ugCCc(7L$Vcn?Pv^JL3-8-^TBMTj%RgvHjFgjQ{oc|PTg}^8HMA{wLhG~4oiyt zIyw_45>wK4lr%pkIx10at8PleAx6GPMDgcsezc`^g#62+A&iIY2`fEOtX==58VPEW zr4(n>Qaz1O(JlO-|NqEOscIg`MctRu@zl5Ne6M$u+@^$RLEC z8epKa(_hbdZ+FzV&=Wq=;X-%T=NyF~o5zWf9T&7oD;hcIDeZ)Kg9Ch2lO5I$R;6FW zb1|Zgp7=$)5O^9R!K%IL{D*hM=&rC}FKlmfB{b}R2k#F+2eO|%)w^(nx2>?C7=sw8 ztG$58SbOjl-oJy@oqQn3aHRN-Zo?pH>ay7oCi`f>ER$bTSvj5jZ)RjO2+Lr66RO7XkMBZs-&8BWO zfo6QvPRE%ha@EK)j&&(ApUEl;OdKdK&3!T)Jf6D^LOvD1p8()GjHbzO#`C4fn51xK z-tN2uPJVw+WBlIQO-+-j9cfBIqsz~+@}9On`72G@28ND^ipmNK-_t7i*w!x^EL?pw zCFovbqU9mTjqn;LL>@?FztkgKa`yBO#Wcznwg3}zg~_sKhvNYnIZ5}BAeui0T^NuA zt(u*8O&stGP=nrcXOzKCmB81=Qk<#l(0%V99-#5WU~MKB9?q%9Z1+}LP{|mkpe^aN zs;(~Gfsnu*NsRXM#$5x%P{Udr@i?jY^Ag_BNz`4S9bxr-D2A%IOljJMbi70rMHXRO zxfy==Oy+LU(lf{zl##@vq61Q{`nCXI_I1s$x4+wK_i zG=yZ~Rku)44s0vUG_{VZXr{@95%0Irl}RYxtAANH=oq8$Ls#c${f6DLBpIj@b8YFV z&O4uCX68XK#}#@ANL%;C+Q~ur(;d-R%Tt*m;`5sv-s&P$b*}$Pm=$1c34CFmGM%;wNvjk z_J6@x_4{XPXYqVGq<@Cti`TQ)XkJB*%)ychbd~k24wBDZE^k|I2l{hUwAS#NMSJ^qckg9{2z5GA zYZbvkt+geCMkIJ%EnJ6Ctn#76GU8C*Syrcrpr{~nyyrzq3X1@eg?Z}X=3i+V%R=bJ zI)2r^}YPlE}b;2wS8gdAL z?rzh0UzMZaIWW@81~;FJH{{?;8D-YLqK260>e3?Kh=(nk1(Qw@y*+DT1V-}JMp9x{ z44QOuGLLI>Cfl|w@ND)>$XcE~rsa#(i$_ZH3@S9!$Ou7~;S9jMP^+@jD(c)+ zhm1EkWKvc&STdp3GJ}1kighCwDRqTV?#AhWpZm|&?l&B6L*69bLIiMQ2BdiBwbtKn z+l9=P;4QphPrKR*~=;D&2&)@o{g-N zPS9wlV~}Ukp#m>^s^cS?d#_J0S{5h{bdm%@riXdp(0c-vhJH901ToLn5y$#KR8DLU zh2r=j`Ctn2^Hzlq(Q5zFeDo0c`H=@ZSD00YIl$+@h#x42omF0x?#e~sL*&Oq5n+ke zu$^7h7%eGxAgm9ZY#^Mm)k{Wk;Vp+sj%zu6C>GQ@D~_OYYf5J0)W5|=ZTa2pd({%K z+%lV)U}BSxR9(45ELkB#!ZEHA7Vqe&7HZz83ByDy;{?1Nq2pqX64Kx$Zkb&WWqC`A zYWTMWHP|>-SYviy8?)jX_q0)12$k%?a7t&Yw%Z%oy6R&8 zAJY&RC19mQ#k9&gOURjr^ibQ_9C?oszx8wk&qz=q3)+04rH@ zT6HOFt@{v81eTWhV|2`?-JQeTH-|gt`+IZC=HC9RGe&pXOASMq1e$o~(Pz&N%l~eV zLsqd5NAei}^gQDQ{xBS)cmCs48yUiA++X^-7Z)1yA&e}y|HAl1OVneE634pXa@Bs| z?Agb}(!ao>pKn`FkdR-^t&1{99fKB&{Ew;>(&Ftl?L9 z&)={>Zl>6Am#U^OT2(!Ib9iVvpjIjMTs~IZtBYep7W-yETUv7#xRw!%UNqGU+1Hdp zUv^~2^nG90uU!Thcdm@Fo!HNh?w`kz^eWx8ys2gI?9U4Ub@rnU0QD>!_lD>Zv7Ghq zTh6@0xM+YNv^@U~jZiV4u)-U>yq1YDB^hzN*OgPSo6bOY#A&>pd98h`xByO5DzLi; zEW3Mte5!>EK86OnJZ14~-%l4rprU+&}u^{71UT3;=qQnJAIh z2FkSFH0D#*;w79WEU8s1 za!CeZReAYV%$D;ZFwFd?7%x|TLPvYjAKe6YIa5nSM5eLQ3IJOvYgPQ7ATJ+t1c5Cv zkmKa|thVFR^_AHhR#p5}q-asmAu==Am*XA`+g4;G?@b>O=<@$JE<5^?JGRZrV zbPsA@<)h7`a9@ikP@i3LOOI{jp}j&$&22oeBl31O#he)6dCT%0h>&GA|Me(dgc6=A zR%l>37PEY%4FSTJOE=xg&Q32>vrw0DEu#kv7Zif^K$P^evf!t^(ZqTRXgSLZUy(>J zi|-9&u_bWPbiIx8_Ci!VgNj#xidWd4w-^<#2o>)^s5A{K%>q=Kh3z#LqtYxwrI|wo z8H+vYa!t+;!h!)X#4j7EnCqTeOXR@2rhQ(52Yxu@U)|mi6muQjK%}5&s2@_K%3obr zoq+{K={vhjRTMS)9X6oa!&nsf^PZ4gZ~d6`&C;`^yd^cVXOxv?%6AUfCL$eAI3{mI zZqA?=MMHF|ud$~@h#n;$g5it`+@R$JZI5(P)CYmTD8v#EfeGIA(Hbi+KUVWxx`0Ey zM~s!68Qz~dR^HbbEAKBDD{sMAHS=RNKaCem;pQX8N{Wu=pE_2}uQ685zhJDInX#g^ zFYz&Q_Fa(i)(QBi3Un!Km~5z37|!2+7sX}RW_w==Htw2%Z&awy-7x9W zY1FN}FJxl|sv{fBuYAh*%Db_;I2fbLK+4BX#wS3YXKRlE3?qL_YAN{x_tBtHmtj>X zFikedm>pczJQL~^v?EO1)VfaNlnMHmDJ`+dmR>5TlZlpR0?(?_gsJjS(3KjMa6oK= zBU;mL%i382IxVfv%0W^RmTyAU`I;|rqvSbq3q{*ym zR)j<;iYcbG72etksr*zmKarNMyN z;S**LO;+3Tv2zizgG5O=-7RDkg_%X~MV1jZL>M%>2gHrvp}h;(?Pt32vaq3BvIpFf z%fpPm&*=LdeZQmca@>r?gQ)ll9^uqdd@T98KJv$D*p~xsO7i3Ff}--yjV!zyMRC9T zIvl^Ve#&#XnsDD|LTM^9t1X(;vy1>z56yMJ$b2qI+6fFjX&KQ>3USLHYwW#}Axi0~-^VE2ODN%q^P5DC%j-h&X z70)5RQeV+x2hEff@yo9~BES3!^oLptt8uXkm0RhqWJV!pDQ5y2th7tKocG#uV8pA; z5-kI26+q_)fi4i;*E?tD`=@m2VSz5nej#KJn}pqQ)DOCR{RT;s6J_@aTGY-tH%#97 zN}4aFb4MCoa!gU>rcs|4y%{kq16|V(R&@NC=dLK@UJ?K1zodK ztP`_mYJsS}S8SKJX#myIl}mAXpSsT^F5heF4KeD}KS23PA5Ft!&@TanIXcc$ZU96h z_wijh7%auN{fg(!nB&>s{Ci`%&V(>Zz-8<_POqby_ccCUga@-!>- z@}=}R41>6j?A)B{(mTNr9&qQ22N2j1{dujy!k=F}-qx%>n&BWlek)~l@J zi}Z?4SELjM82UUTLjuVwQYXq)lK+|-(!eTru6+#YoeA(1`k5NCHRw|GVr!Sf+{mTASU;>Za|@EL8!*btlnq7WOG3 zXa;;8?>*_N3%9uiaB6ODo2$2lS*1^|dKA;w^xzD4O=XNJjA~5%?8lvx{qEU+zu7t6 zr#0_E<@XNGeu9C6A(NK@ZYe4j-DiNWa*XsQu7L-i6aSL*>~PBLq6M8u-Ml% zyOn+DSiU^|g^4r@(&j08id1{gFuy>B{ z%S1CMm%S37rPKUMYQu0O3?~=BVF9fz36kN9CeDY2o{yr!bN`&q?m4q|#e*M3yA7L?2G? zF^XZ7MmW(ID2SQPF79eUN40ficU~EZgLE3BC$^Q7oW1Lxg=E$>3*ZA(PUt2E{AO=@ zKD1>^BFYjL&>87GCtEG7m0YzykC3s&QuVPiH7`-Wt_*$H1hCL~l!VYb+I-zlGW$oB zY6eQZ3eg<^-4WzMPJt;fmS$fxgyP|WJPB-M_Xm$%y(#U=BXq0mT3@6jBPCh81f520 z;qqlL!)T4X`}R-H4i1lxvO?!`X5qYrVWCEeuFJqp7-fLi1&vtd7Uh->Jq9B5Ll8_@ zrdn~>C9Qd{lr^`!Ndl|jQ`CSmrT>}vrF>W?0&_}j7rwj2celmwuF<-3z2IenFOvl? zX9#t+04nA(yk77!!I#N`mv;#DZUNLggu38mf-jQ=FH=DxA@lB|N;0}z0tFa~*;CVn#JNA-Q*pjC*AkDueA%t12CPodfOtyK<6F^~c z#XMCCT5HHEiabx2I0;)ehnqC*Pr4DMrSOL|*`HW1WDxU*=au99S-IOAFa(%fE0eJ+ zjZ%NuJ?bVX&$3y%tXyw}l`x9~)mvTNrj%W>Re6J?9y$ zR1>+gd)-Kxle5vELROd?PE2-q9rST9^Q!A2Y%Ck*6GbQ0W9m+p2*j7_;Hpcl%5;BU zai}Hr7&!GM#JRgv}ls4lruu;409HBY=fChmDs2(QF=bq zHGV^{Hgr#tJ~tB_I-QFZ$7iBaBYuihYJL??1VAF6qR}4`U(EAzS+~4ukL*L{fD{Lm zoKFJ5r&4ACCQ6_ozr+|A>Gvonbi0Zr`YuwY|;aAw%|| z16L7p*2$f8L9ugaDHK`np-Y)6l@biVs3(KxNf@X5nX_r}g@@BN^BUe=L?PNRM;Xdg zHQlvQoe6J}g(IzOP>LX5xhtF=@NDO2=>N)hJ_yUR2SSw66ZSDFU_8Ze=$LBIif;HC_zz=7aJZ45C_1%2 z7Dpk96V9{oQ#cZb!2ouV`zQo?e*o^b}6`@?6{wFZgqRQcTa&|z?sQE=fugJGn=BV30+dVxv(df|i zmCL!pGA~&o06`h_S09ZgSAINEUWMw?29Q!|5a_koOLR6WR30!H4LKK*R!1I&FlKhT zCEaprhrV)YI6ToCVFZ+;h*c8yiUhn<%0F+V$5Ii!bnpyLTyt+sFZ`4+swAkwc*_eT zZb@V?l+%Ms5z;cioh+3N;bn?K52WH z%!>hIe2!u%S>2T#uO!=>-IL`Y7$g!N3LuHmZoa?$tEzs_3@{)mYbR1-X{M*Uy1Tl% zUR~W?w$Q1s^_2h6Q6|Ul{&GeKlf0ulLLc{MKc76DB*CazmSdzKe(gY3=%r< zPJ1Sd!D9^%sk@lB?PC7>59j7MAR%na^Q< zv&ip)3N|gvEc4;zxLc0zf-Gsa7Aj2NOqZ3nH^8=Md@npuHBJh4_Su3?VkBb~&t?>1 z$w1!xct%=nnJ@aFyWO%Htq?EFn?O?l@BfnSEr8v(%k;-VuNS=oJ>cJ(T`0CdX9p{% zz_J&u(}Q=1wCNu$%Hg2E^1rg|5bw?^TB1CAZz+Hkbp7E$nv_uFUmT2J5_O@Mv|e=@ zuHEq6T3`oFzft#sdeiZpM!gOi6%?WcI;+6?#GIBKB)dJEUYsHZj*V|xc~Zg5lRqGV zVudY!>paKAiBtXv|CiYXuzXI(Fl1`W^EfE&fA2jeb&f6I-$->GkoSNZiW7$NDVWBIJ*RG zI%Y0~Vfe#K81Xhefj55R7$J%p&vT3Bs#m@k zjf(~Fmb-3Wmw*QpDw5V=m})Mlvz}iAj*XrngJEES>**a#k!G_Qlnb)lJ_=gssPzx_ z>7NBHnXR6&loH5@(r7{uf@1MUu2=E-h}Z#s6h{ZFjJnugw9iWgyD}@L z@feH;AI`6gU~4Q!VnK6Kz+24GFz#MXhJ&c^V#!ZXA`jgN6#0T*wuC&CtX)frWD@i@ zvHM44d&Gj-%B3`Q=YnQacSVm#Vv=vGCcc#ev6;S_Wz&- zuX%v9)r$&HRF5uH@AiJ~UWS?j=gsswqJ5xN;Z4!9LBv&n0vcrs3ZxIX`v`@1*x%Xj zBa0maNe>q{3#OW#;K9JRxHbH{SvZ-}jnd!FP8yQxGH#vwQhfIeG|?W%;g0dq*Jq-2peyw8()v6 z5k{Z0crVC*bOX{FZPl}Duy2{rK4TX>9bz=t+wKGqO;w`529KAY4iE5#Uth2nE3Yhhs=%(_Zxi206B}{S1ul#@@2c4Qz z*Suv%XJ^*o+p{-R_q((6(+_WPq37)Q{OF|s8}>U2rE}KMufBRuUPi(zn*Q^vDXxa9 zHudqG^C9!!6l~(ZMY?7CtFL%p4^<9$jlsji4)Lmpo++J5=(z(6?3ZKhD>XdR-jAen`cY|@KAC4AXnO$7NEU(G=^zBwbyXw-S zwh8>AmW1AcV)L+<0v&Se_;NSn%iV}CcRjvblj^+9ReBq%^wwADnN|9mtMoTk>94QS z*Q*pKnOlPKlcas*AGHFY#9>@kTZKF^Z+1LG8G}eRvu|SFSV9)r$iL}?Z_dH7Bo$l3 z!6pBu8+BaDzL|sT{2K}eR4fbsPH=C!01iv9;ob)CmIYSx?gZyfuf$ndiLR4YQeB*5D}J3)i_Wj(+&Z-@sn{}@@!GC9dRI197w6Q9Pp5W8 z@#z?sP5~X`(uzl?K-PG4oI|JL$lZV=cRh|=ow~fu)p;AL^VV1A>DBq0tMfNh=dZ6$ zY14LXd&HDZLQvClLxEHL-Rx_yjek*Ux z;)KRve1}36zuIWjY$&Hs*SHR#f5k#|zgl;oj6N&lf?WTKWkA>S0;WQ~beZ?{k zE=1<_xfYkP`d27nH~gyIgfiOXiiyrvUY|E{@uz=9cy0i#Zsqma5f@?lS1bY@4KTJs zp9FC^q<_VZHtechgJ$O?A@U>1#Ia#QOlX>T=ewix_Xnp1U4np|P)GjptAgmLG9Y|B zLDO2y<>`|>sOe`s!y7*q-kf~@<}aPoql1(48$X=C?^lb z#SO}ZqrV-WcfLJ1KKXEZq%Mr$bMOxOMl%q{WL{m|l5(=gpC|ZI!oZX!weZ{HlOwA% zAlzMtlfny{yU>TpqPkcvUX-mDcQ53{1YZrbn0?+(DyI(aUDH5*Qf^@YK)tC6wQ9};ru9n z^tbb)cZU`*gdFdLHuf6c7fN**Q;xz05-8z4?$d!-vJ&^p2m;y}4BIHCSYvww09LQT zIomZok+DuQP4Z5WtWOAAMQtmrQ-C2>u^eLO4rXJ4@@mbg3$&jeogADWe>~!Yqyyl- z>o)p-I~O;o;SEL+OrE(2tABC!qD-64(Q%90B+Gf@zSbI;m%Ztz54K~M)a|MdIk*-l zt{Vc2bujJS%sb0FR>%+PjXHv2$q~B>w&vA67gr&A9Ux?kG9il<%LB+nnsvf#Z?eH5 z#|bm6$-pk_2D5mCJl!6^rn@BDc#OJgD&L)Gyv4|O9Uf7r0kL*2hUPd>SqEbk>KXuj z+;lKh`eKMvz1Imxqv18oyS%m3@$Gp*(--TLdCJ+^dR4a>Gz?m}vu8S>JVBbJ zLt=ntsetm&ouyaHvIB{Zv2lY%0OAmk)kc6wB<~rwZHZv-Vw*8uTfvVGD4){j0V}eph@;h#qDZCe5UgF zZhaCJ*+jph8A!mNM5XMLs1rYpsT8t{F_nOcGN#-p1ICooi4!2M>Z?8nE6MHB?mC+Y z42C+e?PlP?U^nY^MQlI?FriH`Ht^2 zec-nMTPMN*_zn=UQ@0)4_Z))=fwJ7XtG?ECDog;?DKZXKqsSysL6R^cjcv$~f0lG8 zIbs$<)IKv(!OxFOh@K=w&m=^ce9fB94U_CGMvd+UYQ#WSx7Gye_Ujmzqo~mby74r+ zY4|!h!u$iuanx6X_a&eza!diM=rIMVMvo52{QwvesFQZHVLOT(fw|VbhAU~q_6&MN zHKXp@^0P*c37Co+Q-EsZn1IQs5sd3*qv8B9$Pp)=L5|4&Oai>H*ApOySo@0T>Q&HV z{1~OVpdR{){Wdg8W5pG9iSjy0C5r1LRrl+@q9ecRG(5-l;^gDF4)7}Rqq8#xKoO0C zV9-h&fM8ufUp4IqNi#d)IJQYRj=hyY4NS_Rghv;t)QGVlO`UxFs%O`l84Qt2ySIsm z{J_zOD5$z1Dtw7mTPG)EqLAB`UmcyC2#_MDBqT*xDS&js0&P#Hs{oYv7+pEdDliu? zmNaU@QaUk-Vv3k#DM3OF*U?lHB+fq$1vP7p3I{Jiy}baDRN;dVy}kwG^+v1G1S#paDz;m% z*5K6+$lq*xZq={j-Pu@F801hgXf<251K+Fg7qYgT8eSeT!F*_B1Hn*>$ug~=vg_&k zeG}0?!I7x=b&L{V>vHgJteQinq=USy?u!GsFm|8*eDtm$7v|c|DtppI_Ii^tmRHB{ zHO!;wC?q7GL3h!8p}8uM?hN-)eO-H23?Z2GYlvbens74FM8&Sbh%4R%+zE)m2Wp0K z_Cb}lTXqcy$7|K?s-6w7Ybj3SKSel>NjT0U5RS72;W(+IaOre6NgNwlr4TqE z-+j=8G<=#Gj8m<7VEE`pvl2NrF<~Kb(m-j-OcIhVbD9lDQ)U7JWk{R`7I$=kLq(Lt z;bk;&!;1)M6V!|!Q_*!zVdHKgYc%_Q$t{5=mNkx)HI9%qu9P&cDIgp#(8k2hATGpx zjB73Rh*M*;;Tt4m5TjkK*F4{_)*OQX6Qwo!hUtebpAr#VhmlIW1EwxGJekC9#Q)H;qU>CW9q zcg?`vlJ01Ics0c}z#4KgfiXhJvPdJZUJX3ZL+W*qO7PbK5fu2X24KwgTcDkQmE7{H zzT+ok4Tc}qTeeHT(ZLQ-NPa-6lbl{{YEQNqS^(u9rPAx-4S<#a>hY$0%Te6JTb zMoxX5<$A-2d0v(gLogzqqivaEMH_%SxEO$gWSf1Buc0A*6DIW-Oo4ri*1F=zg}ODI zYT*V}0Y<~AY1)TdjN$e*ZmUhlt&W-XxHWPboO6@^!SQuLZdW}Yl2mj380)k>Ow)L$ zZ%FTy@&@x{#dYp!`!!8uH(2=?|D;knKUS=iiYs0!${WlyUVH^#t!-sFewnU(oJ@6X ze6ny(5%*jz!bk&S|_1IaYaI+v`#@z&D9AAN}KZ67d0xX z!6G`*P#KM8d|8c{6n0<|_3xih8ufY>-vUs_1{XW}y7dJ`*KrMos8dIy>HtU4h=U62 zi-?KRia2;-oi^OMt#KE-#)=!{;qfXJbxs?GR-}h@v=I7c)IS6@p5tH-KF9>b$EvIF3M=M z!HfKXr3@j(&cZz?%5t^t2j>2k%6eAU5vT>V05oeKU5IuKrf|LG*et6xgKP|-)?}v8%=t)Hz?}a)pXr6B%@JxSJSh4g^Zkre!X$1vTy@X zs(Ev9s8*@zfPAmHUQKW8prz|5RpGi|y5R}Racr(t%(G(C$Z0UeO=~(}r#AJ)Xwcdm z&A+JgM=&_ux*n9G^G5`uuRh1&C{~#Svzk>p1jm%54wi4O;gzD0#w>XmAxItDX=vK1 z`=#MZsk2CMDDj7H1}4g6)W7z*bF7rwKCFGab~4 zI8`=m@DWc|!cW;gK>PWl^A8*Gc(3x4?77l>IM z8yoRzWY(FUyJ=YgEOkJ@ouj|z6*Ci`XU1p6qw3raWjqQa4*jOVqH0yA?%FzwsteSb0P$8&)4CNzE8myIBRJ%h1y6BKDLG zD=(vlRTPne$9H|jejC9yF7|a}oWa5V*rS|uudf4E!8DZLrw1yYfVOrF)Xn(P- zx|=n14-|C$2bXw(@fpjxUaJy-vW}qupq|&A78v7I7uRkvKp>&Qd&pK>ZnIjqTW$lL z?eN=$=K#>r!k~isS{>f^1LbTdF1${QcMUDxP0`}(+i3A_W-Z=b!GbqAgdaFp1A_$z za+b-t+CZCKpQ?e$fq4;ash-)H952kYE`XS^_uY4^QuPhRZ_V^|7fG-!iaz> zRRgWNy@jZrYTppw?Vn`4CTs8QLchCA8F27sb6`S^(!x3zw(}3 zzuJAuqV8JP%$)5aiN5G53lpuGX`;aZe$FCO55t2gY=5}}=#u+Ncq3|?2G9eZThA1( z;B8uv{*MYxTMuZf*})&fnS_?OThA2h>1|pq{(M!|-|z4>s&>%GIDGzRJbYfwYkI#6 z`Ip`H1T_o>uaQys)j!+OtKoh*EtI11#~3}k>NlEM7Md>o-^A@BeS2*ENjdh&ai_cH z%JFg4ynN&~RW80{S+%!akKS>%*l)3Z#5e4=cx-J|>8hK?+sU*Wk527cZCJW4B6K^u z68UzP(3v{G#yEEumk<0_(7*^N-9rz$TA+LA!KifnsvqdPqtMXws*SpyEx84&R&CfV zuYue9JReO^&nDk}P=yAdzutR9W70Q_N&gXyNk6kO>8Bf${*xP%dhj({6N}G6Iln!e zi&~hYYtC;Y4m$;uHrtbsGO1U;$Jy>;ISo&lbS(dgP1Jhb)5yZHaV!IK701CLY_1>% zDzBYtA^>P4kSwo}fMd|jmn!48^H2ac#ohOrv^4*TEnL6e)W;uXNi!v4Tf|g1n>BsX z>Xbl`G)hQ<(r6+H>5slp03xntH#5@2)0)kmqwTVAa8+I(l0YYk29Be~(*h$T(9ySE zqySO`k%XhugQB7@c?EGRCz#u$l(6xfcc-k6$bLnNC8i3)jLhskQYd$ZV;mZJvxgO(1u-<(8paf z`x|wAozeZnjkJp+olP~UXY&E5g~jR?tBD01@ay1)^o zwRqo@svqw9|J(>FWiQu?GZ-)c(+ReB; z&Ki!pCOs7PTSUUGjXcf@jP3Ne==Oe2Z&VhStDc?_lu>Qk!Cc6DQx4{GW9M=iGtytx z*tCi+XWeTA`W^lqF2c^?a4@);lV?|}(KgO7rxV`sqGft>%*v~)PYpE2`@tvn+jtXH#qo9httWi89Yl&3t&YB-A9qLNVmesUOuVsUiv})I8i>c|+5V5X z#$oX*5m0Xs7hkaJ5ms;8+Smbw$D0ZSJs*#(L1~wCGoFoL`No`b9V6YD9>+3 zG4Hckd85s4ciL>Y)Mmw{G5p$?9dEYDbhk}cwBbRw+sKAyxZ%dQBsm8{}LDs=63=4Sk3ykO}th^Q%*8sSbui`!$_{wf{IeK@P|4-jb z|NQgY{KW2%-8XLDsf>mf)vE{BfgWnlv+!?F59n{rVejbBtod%uvhe^JyXMt=#{!F> z?gsy5)gGaL8-H$4MTMqZ;|1t2)+CRo`wlgNj3^9vqBD7A4ND zSqR$tZP?d}9G-u$-d{!YVGn9Ki6)m9QQ0~SC*$tyXD!?DWWE?KZWh)__a=m2lgsdS zI4OfI5Kg8bF3Q%oGrYfv8htXnn005-OKX1BorP%=fwFyl+y~(>9DuB(XoZsXX@-#$ z6YB!XzW)RXhro|tTJNT}cxy3s2h!LjO)vG9L+U9g72P>xW*EchSV;XC&gKC6C8`Nj z=lRuePRfV{e-~5h0v^WK(;2e;iwHN+(~Vi(_1YLlxK~Vkg^ZEZC4kpku!p%1y z&OvYa_T-1o$?-RxKg-+vQoa$|jlyT&e>i<})H(cc3aZlg?~KB+Z!m-nKL{&s{=b2d z3xZLvZ+=LFBtKfVw+_hr?>`-#rU9T2mM_chm#j0Uso}+z;Sy$|HD@=i zff4}f?Eba-|RN)Z>r;QWp#Ut)-rS z(4POUJu^kQvq&cOw4_g{TBoGw#opc}GVvrm*J6wzU7$*bGcEO$f|`u7c&!{xDqs_% zkghYFEUXWcA>Q()Wg`UAyf89;>dr^u04n~qm0v{HA&yoOSNN!=DN6)ZR1~%U8 zJ7>MCX*d~#qdp82-mr%%KNK1l%*Kd{@KBFpYb_YaGaG}&u>z761BHZqGMumDT|l3N z!j-Kq$eU^<_)-#|yPz{h-Q_q%#&h)IIaGp1vE@|al&OD{Pd@;HR(G9a`gh&?4I|%~ zOgoF;H3Bvc|L-3Kn`mG<8AZQy6l|t~KL8SRQ9+ljRzRu0PRNRlG7eobeSjm7wOEB9 z))o0mbuxcpMj7}xHR=79vc1B!xu|kSWzh;-iwG}?h^QtS7S+l|OA`G{DZP}Xm$A~a zA2jkCUGjC8`;qWX2+-@XCVnIBdmGGkMI$UKrM zm7imqZD-|RW^6+ojLBe7w;z&f&*v8|dQJyc!iKG0;Y<=n*MHitll3R=|BGGsTt&?eF|JkxPk`2bIc^J!?kBQIQcWSw*`rX=p7 zvUNJ0|2!P^!w35W-w40fOY56qh1sc47jpriXKWtL7vY#Y24lX!x82E2II`YOXP4c{ zRQd%EuEBOix1g`P`u^t>n!z5Os%!m^<}!SLcAVlWw5zt$ql%L)Td1a4JrMDr5g_V; zYjrUqqxUmD&Tp=P|FH|eyTH@B6N@H2tpZwuFa-61x%0k0eDYc>V8TY;$<6p8oLN1{ ze-T>Uo5gh8r81)k5=Xt85iNQZ=D1D>wW1f2msw14SrK4d4sSzr&>nSrR~CoM0n*Z{ zHJsq(=KKr0bG~ean49@E#}->RV{XePuOlKX=^$v4)FRF^<{kRAhcOeiQ zCQ{H5$fpGnFrgch2gBJMeSe^zm!XQ4#c|YYodCuV9FGX%P2l53q*f)bGbb3N)8Qb3 zUJeE!VwPcYP99EzGo20Zr;`PGH+kD{!xMF}>&Ch&iE6tQ7I>t%$KcrcreVd^dJrZ57doAHFNgy7lSt6bV$E(Bl zTjC>Yxl_jHJN`@`unj<9jIX~(nt1pA!@2eT;Pl|_(fQHo*-QGwvGEd!w1`qOms4|3 zpLdXzVd|x&vNF`EoYy$XAt%Qo0nK4Xlcn(7kWpf|V6%*zvrCY3WZjIx%)vYcawy0- zDOic*FF>7T%SNJ`Oo2Q`qv>7PFH$vp#Go41a#hb9^_aC)2wMYu-$o)R6hFJ(c<30H_QyzX64a zCiJ}5MPms$=q;2XG*T2VA8S?=%3&?Jvk?dj>_e=IPaV}`QN<@gZo2-^yIE8KsZfMN z;MD-}!O%h-xp&<$uVFNhoC#S=)%tb{hT+2c$1erOU5eIe0r*MrM;v-SdtXX?e7eFh zpWT4!I6-BX)dx(CtG|rvi*op3aW$LXTwZB}QU-zsMXF1t*!`LPitGu@}1{+rWwBD{8kft*O?6J3fJ{WQ z4965aqSP>}P|RD_+0ps=@w@Mg^ri4rvk{SFp~j&NsKsGu6C%Vgv=f7X`NnOhj6%MR zXAhK7g12c)PT7>r?RvEqls~brxI06P89>zrtnFx{1LM^;#wzwTg0D16ZI}LDL3?O; z_+QpE(Xck(DWtcHw~Dt3CM`gcvjlqwPdI^06(IScT`T6l|8Q<9!dBt>ybG#jF~7fm zhG*B9qfm~@_vPDV`8F!w-j^5Uxm}(+G(OL+)J=M*X}{D}c9 zi>{V2Nca^6UhgCC1dRj5?ga*2TOfeCOuVvSvk3?&Rvum3z!xdDSwt|;7r=jJItMZpX$mDN@rd$p-eDn)or~$sq(9eMBJ)JC z1b{;;NHFX_wQYENfBOCV&fh70pwW8`>0Q3|!r@3T`uzfD@Fh@x3&__?hezKzrw50{ zB5e(Td2ATHnywkQo53Ur`yn}WdehsGdBX-bps%vJaF%PNDqA2L27(f6WR<4qwNPj- zjaFd-BTz-?yfgbkEOB@%04hbD+_K8SRJfi^e`03VbRyh?%3i@bL3=9<+k?>*{)*a4 zxaXxcd|hh|D-}e!m}&g)o@^*#yD%)7B6AP%Uz7vTqIT0JN8&ok4%}QT#{qwlTXL|G z@%o{CC9@62h?k&AlSNUgR$p5VZ^Uo{)w76P`E}aw<8GffG;<&rsQ`%Y1!yv3^}HB%DFU@@M~7aDmmnj_XJ z2#kvT9ER7VhqKiQS~cK{RQG1<6gxJDgIZnGsMa(Hwej)q_~Sa;n4&3jRn1iO?bRmW|n zR;C#$z1eg=mwvH=y+5YFaIj_$4wTPB!qsI{D(G~hC#@EQ3F4X~uE3N=V4Z*Z6C0M- z@LXKWPoxW-FGTl_Sq;l6TTEB@2j@BY)-Tf*Oqe>!cO@j(=Bz*eZ; zqdiSs-_uleNz(ZoiEt=Y(Xv9{QHsxhnJo&1N&&u>Fb8HW;japHzC^$Gy=twv$Fgq7 z2n=mgjy=$a%Re?iUKT%l+H?;+|sa#o`{xjMhr_K^tN4MQV6N6^vx= z8DkgfkB}?q*D(bXYtN!xpk`I>i_i|GR?+U&!E|QUp~@}W%e~uWi9o1Q%S5YGiKrdz z-A3^e(W(-0Ew?~AM<;sKW*!Hi2Vi`Z^txSxG6DM;^h#FqCi3F7%Dk`{t&AzDjdk$Xx;2T<2z!EJm3h4JO|Fv%wZtwB&zG&@P z7xWE&YZ4jc9+(1>AsVAWtF1blWH?3x&XHBI-?Bcau3|Y_6U=3k)w`>~xMs7}h zL>n<)$rAdp4s==-dkOI3PsRA6ps_~9>lQWej#3-BbqP2r!M{quE5TTlpyecQ*ywBw zx3a9`cj#d{dP5GuPsitfw*F=votzxMKRdFrI2@7S289A^&1+Ip$eZ?68de5hykY+PUXUCRvU1*Pobc7CY4>N&l=Cr67Qwo z07D~q6gXnws(VW-j~JIS?62(;Z;ScLIjZXSt2R>x9HRv&HbgqHRQ*e8fmd3A*x+Vr z$dWbWDh7AS8*-Is$ntf1fmd1qYKSELg4u#tF`9;a3hEW9%;PqFB#j2Cl6Luq%dmID zOvq8h#pI0Ef4UQ6c*+#>gQg4@m@F1%RRockP2`L^JXbAU=$0*5u-Dy7rT}plOBzY! zJ~G7+rpN6P>HHR`{k{b3Rv7CsO-g7+x8Z2o!}T-)h`S+S62Cv*|LFXsxc^b93MLGe zRhDGV%r5G3Os#8KqF^#MLu&SM7eF#tL%?S)Pc$bCP6C1hcn*k#68-JM+mxWX?qd&ecnxBsbSWW>&3u2+^VyCT2I2BCFl zS8El(-4$jp7TLSLDpi7Npn_ryKDILsmt)CV{{utuhAl|{Kg&L<*fku06nvH1)@e<{ zOzu}JuTbx^?;0C z3@0}sLpF`duR@)~MH9U2165P}eanBvRo;jc+empHP<4;E>aL2*(n@ugQ1yJPRrg5# zMh^j3-OV<#e|u{|uTtGj@ZwL!_@bZ*)!nRHs_v0e-6Ns8N1(b#Om&AxH{z=MPHOuP zyQuBaO0}JaUt7{b^*3UAdt|7;(N21MR7nK|OjXrc}H% zWjcC7WjZPuQyf@1DaKI={|RL}o?}fJrYJm2o7QN&Rur-__pDJrnMPfER;eFLr>1X8 zrPi3o_9}IhNu^d(@e5I@323TDy}O?G_W1Pl`%~-e{NT-BGO2n(*NZO$Xg(r+U2ED8 z<1%Szvf3*=JJwtg5zPFtuFW&Q!l?K-^Ipxn zS*bJ*4kChhI8?`US`K7r?ES*2+|Ag(*LaREv@XVXNhZV^{4eQHAMWj`HM5`EHT9An zio<`*kV+#yXP@XVL3;Yq9D+6=ye`nBG~kqsw>=T_C&J|lz3H4UQ3rr#ZGz!LeR#91@6MU#D|()(AL?za&JCr?(DIrQVQqRYDiOF0g6WZf!H8XQr$y)NsDXvW-`n85dDC{jODqxh9iDf(h zm4LA*)R^;U$C%Vac&-SB(qao$_(>~cQw#Qdp(V$FHzv1*ON!4)pj9Q_X)_46>4>FhFNWhvf6z`>>&$c={QX;hHbYNmX6cMSOdE^*S|I_f5pSe zSoT-RH7dnT4etbK5zL8h@KQN_mU2c_t5vS4J$`)J(}kzSqrEmqrfm*P+px&>kg&9! zqtbF4BGK@1lr{cL3`sH&DvhFmFxdWhJk&_6drc=Hos%@tMUE-4sgUrI^Kp8Vn5W;n zTkR?1ow%zlHFC*ZX2F!lUu0Rm#8HLEL+vAB}5w(>YjD=Su3 zxC3O9|088th5PPPBb5w$f7dmYN3r=6CjYN_(e!xS$MSLIYm_2iA3u)d$-_vth$4A# z5XnPgNOle($!!QAk@7W5*ocfL`j5%io#P-rKLPs$K@d+G10mbkU8HI+W}w5XXW{!S zd>!WqnH1|@q}nYJn6m!h39*^B4hTy;~$*Tq!Hu=%rDn?>yYKFr$f z^{Y&KEuR&v&r-okIxxQ4sB7yAGV*laui2l6+XKo*rl1D;emOmJ(}4l}E%c!+NgRy|^skn)iL{s8qO6@AkDN~$0$l#umc zI0$(dUaBe*S4JM7jy%@Z=@h#zr zc(%Wu?XM*B+wr7`HTGBTiOjIaJ}@G-Q+D_5F1g=k$4l<>*z_XJu%&K>t=sn^=Fl=> zhCRVKzrR7uNlL@lo%8z$ktewa9`*aM_>8X+r%z_J@JYeXVP9`Oi4nC+T7Ee z4kgl|#LX(L8}fcxXgD^Qi9jQZ-f-3{m9ipdWF@kaFPDVlYppnp)bdruOo(1_wq?Yd^{ymHAk}MNYosOn)yQ{ ztBIU88BasJE3y1jc>+DTr2B)$-OI^v5EWi5qZh*TG_MM+6?1uOx62dvwW|}mqfun3 zGXO}|$F5JDue>->*mSwr_@-Z>n9s#VFXd9iqy%0V_aQE{tNipM{`K?UGTnfv(VKeQ zGaH!kGQ{*Yi&n0_2{640C|y&U@tfXcLO_wPqzVWaCHWM;LXj2TrD$ol3e7tk6Cl*JfeXeuxkDwLFYJ{oI+h;2b z2>cjnyn$WOKxMfLMQWH{rL(e1C#6a!QtkOxT(#cdMQL->DY)Qz{+(?prjZ?XiyONTf iZXgB=@95oO{=c4oo`0Tyo`1g7pZ^a_Ckb=_$N~VekF$*c literal 0 HcmV?d00001 diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/DiskChopper.comp deleted file mode 100644 index 4723e5b3aa..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/DiskChopper.comp +++ /dev/null @@ -1,230 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: DiskChopper -* -* %I -* Written by: Peter Willendrup -* Date: March 9 2006 -* Origin: Risoe -* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by -* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) -* -* %D -* Models a disc chopper with nslit identical slits, which are symmetrically distributed -* on the disc. At time t=0, the centre of the first slit opening will be situated at the -* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. -* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z -* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see -* related bug on GitHub) -* -* For more complicated gemometries, see component manual example of DiskChopper GROUPing. -* -* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. -* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the -* chopper timing and phasing (thus conserving your simulated statistics). -* -* The isfirst parameter is ONLY relevant for use in continuous source settings. -* -* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper -* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) -* -* NOTA BENE wrt. GROUPing and isfirst: -* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need -* to set up -* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening -* that spans the full angular extent of the openings of the subsequent GROUP -* 2) Add your DiskChopper GROUP setting isfirst=0 -* -* %P -* INPUT PARAMETERS: -* -* theta_0: [deg] Angular width of the slits. -* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. -* radius: [m] Radius of the disc -* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) -* nslit: [1] Number of slits, regularly arranged around the disk -* -* Optional parameters: -* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) -* n_pulse: [1] Number of pulses (Only if isfirst) -* jitter: [s] Jitter in the time phase -* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? -* delay: [s] Time 'delay' -* phase: [deg] Angular 'delay' (overrides delay) -* xwidth: [m] Horizontal slit width opening at beam center -* verbose: [1] Set to 1 to display Disk chopper configuration -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT DiskChopper - - - -SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) - - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -DECLARE -%{ - double Tg; - double To; - double delta_y; - double height; - double omega; -%} - -INITIALIZE -%{ - /* If slit height 'unset', assume full opening */ - if (yheight == 0) { - height = radius; - } else { - height = yheight; - } - delta_y = radius - height / 2; /* radius at beam center */ - omega = 2.0 * PI * nu; /* rad/s */ - if (xwidth && !theta_0 && radius) - theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); - - if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { - fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); - exit (-1); - } - if (nslit * theta_0 >= 360) { - fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); - exit (-1); - } - if (yheight && yheight > radius) { - fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); - exit (-1); - } - if (isfirst && n_pulse <= 0) { - fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); - exit (-1); - } - if (!omega) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - if (!abs_out) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); - } - - theta_0 *= DEG2RAD; - - /* Calulate delay from phase and vice versa */ - if (phase) { - if (delay) { - fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); - } - phase *= DEG2RAD; - /* 'Delay' should always be a delay, taking rotation direction into account: */ - delay = phase / fabs (omega); - } else { - phase = delay * omega; /* rad */ - } - - /* Time from opening of slit to next opening of slit */ - Tg = 2.0 * PI / fabs (omega) / nslit; - - /* How long can neutrons pass the Chopper at a single point */ - To = theta_0 / fabs (omega); - - if (!xwidth) - xwidth = 2 * delta_y * sin (theta_0 / 2); - - if (verbose && nu) { - printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); - printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); - } -%} - -TRACE -%{ - double toff; - double yprime; - PROP_Z0; - yprime = y + delta_y; - - /* Is neutron outside the vertical slit range and should we absorb? */ - if (abs_out && (x * x + yprime * yprime) > radius * radius) { - ABSORB; - } - /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ - if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { - ABSORB; - } - - if (isfirst) { - /* all events are put in the transmitted time frame */ - t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); - /* correction: chopper slits transmission opening/full disk */ - p *= nslit * theta_0 / 2.0 / PI; - } else { - - // Check whether each t_offset carried by the ray make it through - double weight_update = p/_particle->p_last_time_manipulation; - _particle->p_last_time_manipulation = 0; - - int train_index; - int one_did_hit = 0; - double this_train_t; - int all_dead = 1; - - for (train_index=0; train_index<_particle->adaptive_N; train_index++) { - - if (_particle->p_trains[train_index] == 0) continue; - all_dead = 0; - - this_train_t = t + _particle->t_offset[train_index]; - toff = fabs (this_train_t - atan2 (x, yprime) / omega - delay - (jitter ? jitter * randnorm () : 0)); - - /* does neutron hit outside slit? */ - if (fmod (toff + To / 2.0, Tg) > To) - _particle->p_trains[train_index] = 0; // T_ABSORB - else { - // T_TRANSMIT - one_did_hit = 1; - _particle->p_trains[train_index] *= weight_update; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; - } - - } - if (!one_did_hit || all_dead) ABSORB; - - p = _particle->p_last_time_manipulation; - - } - SCATTER; -%} - -MCDISPLAY -%{ - - int j; - /* Arrays for storing geometry of slit/beamstop */ - - circle ("xy", 0, -delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslit; j++) { - /* Angular start/end of slit */ - double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; - double tmax = tmin + theta_0; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); - line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, - 0); - line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.c deleted file mode 100644 index e100c9f9a4..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ESS_butterfly-lib.c +++ /dev/null @@ -1,402 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright 1997-2013, All rights reserved -* DTU Physics, Lyngby, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Library: share/ESS_butterfly-lib.c -* -* %Identification -* Written by: PW -* Date: Nov 7, 2013 -* Origin: DTU Physics -* Release: McStas 2.1 -* Version: 0.1 -* -* This file is to be imported by the ESS_moderator_long component -* It defines a set of brilliance definitions (used via function pointer) for -* easier use of the component. -* -* Usage: within SHARE -* %include "ESS_butterfly-lib" -* -*******************************************************************************/ - -#ifndef ESS_BUTTERFLY_LIB_H -#error McStas : please import this library with %include "ESS_butterfly-lib" -#endif - -#ifdef OPENACC -#define exit(...) noprintf() -#endif - -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ - if(lambda<=0)return 0; - double par0=8.44e13/25.; - double par1=2.5; - double par2=2.2; - - double par3=-13.-.5*(theta-5); - double par4=2.53; - double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); - - double par6; - if(theta==5)par6=5.73745e+015/25.; - else if(theta==15)par6=5.88284e+015/25.; - else if(theta==25)par6=6.09573e+015/25.; - else if(theta==35)par6=6.29116e+015/25.; - else if(theta==45)par6=6.03436e+015/25.; - else if(theta==55)par6=6.02045e+015/25.; - double par7=0.788956+0.00854184*(theta-5.)/10.; - double par8=0.0461868-0.0016464*(theta-5.)/10.; - double par9=0.325; - - double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); - double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); - return para_part+SD_part; - -} -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ - if(lambda<=0)return 0; - double i=(theta-5.)/10.; - double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; - double par2=6.24806e+012-8.84602e+010*i; - double par3=-0.31107+0.0221138*i; - double aOlsqr=949./(325*lambda*lambda); - return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); - -} - - -/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ - - double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); - if(y0 < -height/2. || y0 > height/2. )return 0; - double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); - double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); - double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; - return tmp; -} /* end of ESS_2014_Schoenfeldt_cold_y0 */ - -/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ - -/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ - double normalization=1; - if(x0<-width||x0>width)return 0; - return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); -} /* end of ESS_2014_Schoenfeldt_cold_x0 */ - -/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ - -double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ - // Kept for reference only... - /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; - long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); - if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity - *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope - return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity - *(0.84199+0.00307022*height) // asumetry - *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope -} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_t == 0.03) || (height_t == 0.06)) { - *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (6.2e14/9.0e14); - *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } -} /* end of ESS_2015_Schoenfeldt_thermal */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_t == 0.03) || (height_t == 0.06)) { - *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (6.2e14/9.0e14); - *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } -} /* end of ESS_2015_Schoenfeldt_thermal */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); -} - - -/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ -/* Parametrization including moderator height for the "pancake" moderator */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_c == 0.03) || (height_c == 0.06)) { - *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (10.1e14/16.0e14); - *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } -} /* end of ESS_2015_Schoenfeldt_cold */ - -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_c == 0.03) || (height_c == 0.06)) { - *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (10.1e14/16.0e14); - *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } -} /* end of ESS_2015_Schoenfeldt_cold */ - -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); -} /* end of ESS_2015_Schoenfeldt_cold */ - - -/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_y0(double y0){ - double par3=30; - double par4=.35; - double cosh_ish=exp(-par4*y0)+exp(par4*y0); - double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); - return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); - -} /* end of ESS_2015_Schoenfeldt_cold_y0 */ - -/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_y0(double y0){ - if(y0<-3./2.+0.105){ - return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); - } else if(y0>3./2.-0.105){ - return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); - } - return 1.005; -} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ - -/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ - // GEOMETRY / SAMPLING SPACE - double i=(theta-5.)/10.; - double par0=0.0146115+0.00797729*i-0.00279541*i*i; - double par1=0.980886; - if(i==1)par1=0.974217; - if(i==2)par1=0.981462; - if(i==3)par1=1.01466; - if(i==4)par1=1.11707; - if(i==5)par1=1.16057; - - double par2=-4-.75*i; - if(i==0)par2=-20; - double par3=-14.9402-0.178369*i+0.0367007*i*i; - if(i==0)par3*=0.95; - double par4=-15; - if(i==3)par4=-3.5; - if(i==5)par4=-1.9; - double par5=-7.07979+0.0835695*i-0.0546662*i*i; - if(i==5)par5*=0.85; - - //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); - //if(i==4) width=width+0.3; - //if(i==5) width=width-0.7; - - /* Rescaling to achieve a BF1 model */ - double tmp=(par5-par3)/width; - //printf("Cold x0 in BF1 units: %g,",x0); - x0=x0*tmp-7.16; - //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); - - /* if (x0<=par5 && x0>=par3) */ - /* return 1; */ - /* else */ - /* return 0; */ - - - double line=par0*(x0+12)+par1; - double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); - - return line*CutLeftCutRight; -} /* end of ESS_2015_Schoenfeldt_cold_x0 */ - -/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ - double i=(theta-5.)/10.; - double par0=-5.54775+0.492804*i; - double par1=-0.265929-0.711477*i; - if(theta==55)par1=-2.55; - - double par2=0.821885+0.00914832*i; - double par3=1.31108-0.00698647*i; - if(theta==55)par3=1.23; - double par4=-.035; - double par5=-0.0817358+0.00807125*i; - - double par6=-8; - double par7=-7.15; - if(theta==45)par7=-8.2; - if(theta==55)par7=-7.7; - - double par8=-8; - double par9=7.15; - if(theta==45)par9=7.5; - if(theta==55)par9=8.2; - - /* Rescaling to achieve a BF1 model */ - double tmp=(par9-par7)/width; - //printf("Thermal x0 in BF1 units: %g,",x0); - x0=x0*tmp-7.16; - //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); - - /* if (x0<=par9 && x0>=par7) */ - /* return 1; */ - /* else */ - /* return 0; */ - - double soften1=1./(1+exp(8.*(x0-par0))); - double soften2=1./(1+exp(8.*(x0-par1))); - double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); - double line1=par4*(x0-par0)+par2; - double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; - double line3=par5*(x0-par1)+par3; - double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); - - - return CutLeftCutRight*( - (line1)*soften1 - +line2*soften2*(1-soften1) - +line3*(1-soften2) - ); -} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ - -/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_cold_Y */ - -/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_thermal_Y */ - -/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ - -/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ - if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); - return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); -/* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ - - -/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ - if(time<0)return 0; - double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); - if(timeGeometry -* The geometry corresponds correctly to the latest release of the butterfly moderator, -* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. -* A set of official release documents are available with this component, see the benchmarking -* website mentioned below. -* -* Brilliances, geometry adapted from earlier BF2 design -* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, -* are released as an updated component library for McStas 2.3, as well as a stand alone archive for -* use with earlier versions of McStas. -* -* The following features are worth highlighting: -*
    -*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. -* As a result, the spatial variation of the brightness across the moderator face should be considered to -* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to -* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness -* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. -*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. -* To accommodate the influence of the changed geometry, this scaling factor has been applied independently -* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the -* spectrally-integrated 6cm width data shown in [1],Figure 3. -*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance -* have been implemented. For now, we recommend to keep these at their default value of 1.0. -*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This -* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, -* which has been derived from current MCNP butterfly 1 model. -*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, -* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. -* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree -* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees -* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- -* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. -*
-* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be -* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. -* -*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance -* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation -* across sectors and potentially also performance losses due to engineering reality. -* -* Engineering reality -* An ad-hoc method for future implementation of "engineering reality" is included, use the -* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. -* -* References: -*

    -*
  1. Release document "Update to ESS Moderators, latest version" -*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" -*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures -*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. -*
  5. Source code for ESS_butterfly.comp at GitHub. -*
-* %P -* Input parameters: -* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" -* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector -* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m -* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator -* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 -* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 -* Lmin: [AA] Minimum wavelength simulated -* Lmax: [AA] Maximum wavelength simulated -* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. -* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index -* focus_xw: [m] Width of focusing rectangle -* focus_yh: [m] Height of focusing rectangle -* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. -* acc_power: [MW] Accelerator power in MW -* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. -* tfocus_dist: [m] Position of time focusing window along z axis -* tfocus_time: [s] Time position of time focusing window -* tfocus_width: [s] Time width of time focusing window -* -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT ESS_butterfly - -SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, - int target_index=0, dist=0, focus_xw=0, focus_yh=0, - c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, - acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) - - -SHARE %{ - %include "ESS_butterfly-lib" - %include "ESS_butterfly-geometry.c" - - int nearest_angle(double angle) { - int AngleList[] = {5, 15, 25, 35, 45, 55}; - double diff = 180; - int jmin=0; - int j; - for (j=0; j<6; j++) { - if (fabs(AngleList[j]-angle) < diff) { - diff = fabs(AngleList[j]-angle); - jmin = j; - } - } - return AngleList[jmin]; - } - double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; - double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; - double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; - double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; - double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; - double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; - double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; - double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; - double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; - double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; - double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; - double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; - double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; - double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; - double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; - double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; - double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; - double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; -%} - -DECLARE -%{ - double* ColdWidths; - double* ThermalWidths; - double ColdScalars[11]; - double ThermalScalars[11]; - double *Beamlines; - double wfrac_cold; - double wfrac_thermal; - /* 'Corner' parametrization, i.e. where are the limits of the moderators */ - double C1_x; - double C1_z; - double C2_x; - double C2_z; - double C3_x; - double C3_z; - double T1_x; - double T1_z; - double T2_x; - double T2_z; - double T3_x; - double T3_z; - /* - plus rotated versions of the same... */ - double rC1_x; - double rC1_z; - double rC2_x; - double rC2_z; - double rC3_x; - double rC3_z; - double rT1_x; - double rT1_z; - double rT2_x; - double rT2_z; - double rT3_x; - double rT3_z; - double tx; - double ty; - double tz; - double r11; - double r12; - double r21; - double r22; - double delta_y; - double Mwidth_c; - double Mwidth_t; - double beamportangle; - double w_mult; - double w_stat; - double w_focus; - double w_tfocus; - double w_geom_c; - double w_geom_t; - int isleft; - double l_range; - - double cos_thermal; - double cos_cold; - - double orientation_angle; - /* Centering-parameters, which sector are we in? */ - double cx; - double cz; - int jmax; - double dxC; - double dxT; -%} - -INITIALIZE -%{ - - - int sign_bl_angle; - - /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ - double oversampT=1.1; - double oversampC=1.0; - - - /* variables needed to correct for the emission surface angle */ - double internal_angle; - double cos_beamport_angle, sin_beamport_angle; - - if (beamline<4) { - wfrac_cold=1.0; - wfrac_thermal=(1-0.072); - } else { - wfrac_cold=1.0; - wfrac_thermal=1.0; - } - - /* Centering-parameters, which sector are we in? */ - if (strcasestr(sector,"N")) { - cx = 0.117; cz=0.0; sign_bl_angle=1; - orientation_angle = BeamlinesN[beamline-1]; - Beamlines = BeamlinesN; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsN[j]; - ThermalScalars[j] = ThermalScalarsN[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else if (strcasestr(sector,"W")) { - cx = 0.0; cz=0.0; sign_bl_angle=-1; - orientation_angle = BeamlinesW[beamline-1]; - Beamlines = BeamlinesW; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsW[j]; - ThermalScalars[j] = ThermalScalarsW[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"S")) { - cx = 0.0; cz=-0.185; sign_bl_angle=1; - orientation_angle = BeamlinesS[beamline-1]; - Beamlines = BeamlinesS; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsS[j]; - ThermalScalars[j] = ThermalScalarsS[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"E")) { - cx = 0.117; cz=-0.185; sign_bl_angle=-1; - orientation_angle = BeamlinesE[beamline-1]; - Beamlines = BeamlinesE; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsE[j]; - ThermalScalars[j] = ThermalScalarsE[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else { - fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); - exit(-1); - } - if (beamline > jmax || beamline <= 0 ) { - fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); - exit(-1); - } - - printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); - if (c_performance <= 0) { - fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); - exit(-1); - } - if (t_performance <= 0) { - fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); - exit(-1); - } - if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { - fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", - NAME_CURRENT_COMP); - exit(-1); - } - /* Figure out where to aim */ - if (target_index && !dist) - { - Coords ToTarget; - ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); - ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); - coords_get(ToTarget, &tx, &ty, &tz); - dist=sqrt(tx*tx+ty*ty+tz*tz); - } else if (!target_index && !dist) { - fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); - exit(-1); - } else { - tx=0; ty=0; tz=dist; - } - printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); - if (target_index) { - printf(" ( from target_index %i -> distance %g )\n", target_index, dist); - } else { - printf(" ( from dist parameter -> distance %g )\n", dist); - } - printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); - - /* Calculate orientation matrix for the display and calculations */ - r11 = cos(DEG2RAD*orientation_angle); - r12 = -sin(DEG2RAD*orientation_angle); - r21 = sin(DEG2RAD*orientation_angle); - r22 = cos(DEG2RAD*orientation_angle); - - /* Rotated corrdinates of the emission areas */ - rC1_x = r11*C1_z + r12*C1_x; - rC1_z = r21*C1_z + r22*C1_x; - rC2_x = r11*C2_z + r12*C2_x; - rC2_z = r21*C2_z + r22*C2_x; - rC3_x = r11*C3_z + r12*C3_x; - rC3_z = r21*C3_z + r22*C3_x; - rT1_x = r11*T1_z + r12*T1_x; - rT1_z = r21*T1_z + r22*T1_x; - rT2_x = r11*T2_z + r12*T2_x; - rT2_z = r21*T2_z + r22*T2_x; - rT3_x = r11*T3_z + r12*T3_x; - rT3_z = r21*T3_z + r22*T3_x; - /* Moderator half-height */ - delta_y = yheight/2.0; - /* Other moderator parms */ - /* "Measured" moderator widths in cm scale */ - Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; - Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; - - if (tfocus_width && tfocus_time && tfocus_dist) { - printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { - printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); - } else { - fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", - NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - exit(-1); - } - - l_range = Lmax-Lmin; - /* Weight multipliers */ - w_mult=acc_power/5; - w_stat=1.0/mcget_ncount(); - w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ - w_geom_t = 0.108*yheight*1.0e4; - w_mult *= l_range; /* wavelength range correction */ - n_pulses=(double)floor(n_pulses); - if (n_pulses == 0) n_pulses=1; - - dxC=dxCold[beamline-1]; - dxT=dxThermal[beamline-1]; -%} - -TRACE -%{ - double xtmp; - int iscold; - double x0,z0; - int surf_sign; - double cos_factor; - double w_geom; - double xf, yf, zf; - double dx,dy,dz; - double k,v,r,lambda; - double dt=0; - double modX,modY; - - /* Cold or thermal event? */ - p=1; - xtmp = rand01(); - y = randpm1()*delta_y; - modY=y; - if (rand01() < cold_frac) { - iscold=1; - if (rand01() < wfrac_cold) { // "Broad face" - x = rC1_x + (rC2_x - rC1_x)*xtmp; - z = rC1_z + (rC2_z - rC1_z)*xtmp; - x0 = C1_x + (C2_x - C1_x)*xtmp; - z0 = C1_z + (C2_z - C1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_cold; - } else { - x = rC1_x + (rC3_x - rC1_x)*xtmp; - z = rC1_z + (rC3_z - rC1_z)*xtmp; - x0 = C1_x + (C3_x - C1_x)*xtmp; - z0 = C1_z + (C3_z - C1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)-dxC); - w_geom=w_geom_c; - } else { - iscold=0; - if (rand01() < wfrac_thermal) { // "Broad face" - x = rT1_x + (rT2_x - rT1_x)*xtmp; - z = rT1_z + (rT2_z - rT1_z)*xtmp; - x0 = T1_x + (T2_x - T1_x)*xtmp; - z0 = T1_z + (T2_z - T1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } else { - x = rT1_x + (rT3_x - rT1_x)*xtmp; - z = rT1_z + (rT3_z - rT1_z)*xtmp; - x0 = T1_x + (T3_x - T1_x)*xtmp; - z0 = T1_z + (T3_z - T1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)+dxT); - w_geom=w_geom_t; - } - - SCATTER; - /* Where are we going? */ - randvec_target_rect_real(&xf, &yf, &zf, NULL, - tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); - - w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); - - dx = xf-x; - dy = yf-y; - dz = zf-z; - r = sqrt(dx*dx+dy*dy+dz*dz); - - lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ - - k = 2*PI/lambda; - v = K2V*k; - - vz = v*dz/r; - vy = v*dy/r; - vx = v*dx/r; - - int train_index; - - if (_particle->total_N_sent == 0) _particle->adaptive_N = N_trains; - else { - - _particle->adaptive_N = ceil(target_tsplit*_particle->total_N_sent/_particle->total_arrived); - - if (_particle->adaptive_N > N_trains) _particle->adaptive_N = N_trains; - } - - // Part of weight calculation that is not t dependant - if (iscold) { - ESS_2015_Schoenfeldt_cold_no_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= c_performance; - p *= ColdScalars[beamline-1]; - } else { - ESS_2015_Schoenfeldt_thermal_no_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= t_performance; - p *= ThermalScalars[beamline-1]; - } - /* Correct weight for sampling of cold vs. thermal events. */ - if (iscold) { - p /= cold_frac; - } else { - p /= (1-cold_frac); - } - p*=cos_factor; - p*=w_stat*w_focus*w_geom*w_mult; - - // Base weight to reuse for each new sampling of p,t - double base_p = p; - - for (train_index=0; train_index<_particle->adaptive_N; train_index++) { - - p = base_p; - - /* Are we using time focusing? */ - if (tfocus_width>0) { - dt = tfocus_dist/vz; - t = tfocus_time-dt; /* Set time to hit time window center */ - t += randpm1()*tfocus_width/2.0; - if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ - if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; - w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); - } else { - /* Simple, random wavelength @ random time */ - t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; - w_tfocus=1; - } - - if (iscold) { //case: cold moderator - /* Apply simple engineering reality correction */ - ESS_2015_Schoenfeldt_cold_only_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - } else { //case: thermal moderator - ESS_2015_Schoenfeldt_thermal_only_t(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - } - p*=w_tfocus; // time focus correction - t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ - - // Generate ray as normal with its associated p and t - // Save these to t_offset and p_train - - _particle->t_offset[train_index] = t; - _particle->p_trains[train_index] = p/_particle->adaptive_N; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; - } - // Set base particle t and p, now p will be decoupled from the source intensity. - t=0; - p=_particle->p_last_time_manipulation; - - SCATTER; -%} - -MCDISPLAY -%{ - #ifndef OPENACC - magnify(""); - butterfly_geometry(delta_y, jmax, cx, cz, - orientation_angle, Beamlines, tx,ty,tz, - rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, - rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, - r11, r12, r21, r22, focus_xw, focus_yh); - #endif -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Graphite_Diffuser.comp deleted file mode 100644 index ea21aa714e..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/Graphite_Diffuser.comp +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************* -* -* McStas, version 1.2 released February 2000 -* Maintained by Kristian Nielsen and Kim Lefmann, -* Risoe National Laboratory, Roskilde, Denmark -* -* %IDENTIFICATION -* -* Written by: Manuel Morgano -* Date: 18 Febrauary 2015 -* Version: $Revision: 1.1.1.1 $ -* Origin: PSI -* -* Graphite diffuser -* -* %DESCRIPTION -* -* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics -* -* The formula has only been verified for a diffuser thickness of 1 and 2 cm. -* No absorption is take into account. -* -* %PARAMETERS -* -* INPUT PARAMETERS: -* -* xwidth: (m) Size of diffuser -* ywidth: (m) Size of diffuser -* thick: (m) Thickness of diffuser -* abs (1) 0 = no absorption, 1 = absorption -* %LINKS -* %END -* -*******************************************************************************/ - -DEFINE COMPONENT Graphite_Diffuser -DEFINITION PARAMETERS () -SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) -OUTPUT PARAMETERS () -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) -SHARE -%{ - double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ -{ - double rand1, rand2; - rand1 = rand01();// / ((double) RAND_MAX); - if(rand1 < 1e-100) rand1 = 1e-100; - rand1 = -2 * log(rand1); - rand2 = (rand01()) * 6.2831853071795864769252866; - - return (sigma * sqrt(rand1) * cos(rand2)) + mu; -} -%} -INITIALIZE -%{ -%} -TRACE -%{ - - double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; - double dt; - PROP_Z0; - if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi -* Date: 14th Feb 2000. -* Origin: ILL -* Release: McStas 1.6 -* Version: $Revision$ -* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi -* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) -* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster -* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) -* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) -* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) -* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) -* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) -* -* This component is a general Monitor that can output 0/1/2D signals -* (Intensity or signal vs. [something] and vs. [something] ...) -* -* %Description -* This component is a general Monitor that can output 0/1/2D signals -* It can produce many 1D signals (one for any variable specified in -* option list), or a single 2D output (two variables correlation). -* Also, an additional 'list' of neutron events can be produced. -* By default, monitor is square (in x/y plane). A disk shape is also possible -* The 'cylinder' and 'banana' option will change that for a banana shape -* The 'sphere' option simulates spherical detector. The 'box' is a box. -* The cylinder, sphere and banana should be centered on the scattering point. -* The monitored flux may be per monitor unit area, and weighted by -* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. -* In normal configuration, the Monitor_nD measures the current parameters -* of the neutron that is beeing detected. But a PreMonitor_nD component can -* be used in order to study correlations between a neutron being detected in -* a Monitor_nD place, and given parameters that are monitored elsewhere -* (at PreMonitor_nD). -* The monitor can also act as a 3He gas detector, taking into account the -* detection efficiency. -* -* The 'bins' and 'limits' modifiers are to be used after each variable, -* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 -* limits=[-5 5]) When placed after all variables, these two latter modifiers -* apply to the signal (e.g. intensity). Unknown keywords are ignored. -* If no limits are specified for a given observable, reasonable defaults will be -* applied. Note that these implicit limits are even applied in list mode. -* -* Implicit limits for typical variables: -* (consult monitor_nd-lib.c if you don't find your variable here) -* x, y, z: Derived from detection-object geometry -* k: [0 10] Angs-1 -* v: [0 1e6] m/s -* t: [0 1] s -* p: [0 FLT_MAX] in intensity-units -* vx, vy: [-1000 1000] m/s -* vz: [0 10000] m/s -* kx, ky: [-1 1] Angs-1 -* kz: [-10 10] Angs-1 -* energy, omega: [0 100] meV -* lambda,wavelength: [0 100] Angs -* sx, sy, sz: [-1 1] in polarisation-units -* angle: [-50 50] deg -* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg -* longitude, lattitude: [-180 180] deg -* neutron: [0 simulaton_ncount] -* id, pixel id: [0 FLT_MAX] -* uservars u1,u2,u3: [-1e10 1e10] -* -* In the case of multiple components at the same position, the 'parallel' -* keyword must be used in each instance instead of defining a GROUP. -* -* Possible options are -* Variables to record: -* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm -* vx vy vz v [m/s] Velocity on x,y,z and norm -* x y z radius [m] Distance, Position and norm -* xy, yz, xz [m] Radial position in xy, yz and xz plane -* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane -* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane -* t time [s] Time of Flight -* energy omega [meV] energy of neutron -* lambda wavelength [Angs] wavelength of neutron -* sx sy sz [1] Spin -* vdiv ydiv dy [deg] vertical divergence (y) -* hdiv divergence xdiv [deg] horizontal divergence (x) -* angle [deg] divergence from direction -* theta longitude [deg] longitude (x/z) for sphere and cylinder -* phi lattitude [deg] lattitude (y/z) for sphere and cylinder -* -* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} -* user2 user3 to be assigned in an other component (see below) -* -* p intensity flux [n/s or n/cm^2/s] -* ncounts n neutron [1] neutron ID, i.e current event index -* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. -* -* Other options keywords are: -* abs Will monitor the abs of the following variable or of the signal (if used after all variables) -* auto Automatically set detector limits for one/all -* all {limits|bins|auto} To set all limits or bins values or auto mode -* binary {float|double} with 'source' option, saves in compact files -* bins=[bins=20] Number of bins in the detector along dimension -* borders To also count off-limits neutrons (X < min or X > max) -* capture weight by lambda/lambda(2200m/s) capture flux -* file=string Detector image file name. default is component name, plus date and variable extension. -* incoming Monitor incoming beam in non flat det -* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) -* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events -* log Will monitor the log of the following variable or of the signal (if used after all variables) -* min=[min_value] Same as limits, but only sets the min or max -* max=[max_value] -* multiple Create multiple independant 1D monitors files -* no or not Revert next option -* outgoing Monitor outgoing beam (default) -* parallel Use this option when the next component is at the same position (parallel components) -* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. -* per steradian Displays beam solid angle in steradian -* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. -* signal=[var] Will monitor [var] instead of usual intensity -* slit or absorb Absorb neutrons that are out detector -* source The monitor will save neutron states -* inactivate To inactivate detector (0D detector) -* verbose To display additional informations -* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) -* -* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) -* box Box of size xwidth, yheight, zdepth. -* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). -* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). -* disk Disk flat xy monitor. diameter is xwidth. -* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). -* square Square flat xy monitor (xwidth, yheight). -* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. -* -* EXAMPLES: -*
    -*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, -*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with -*   borders, file = mon1"); -* will monitor neutron angle from [z] axis, between -5 -* and 5 degrees, in 10 bins, into "mon1.A" output 1D file -* -*
  • options = "sphere theta phi outgoing" -* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" -* -*
  • options = "banana, theta limits=[10,130], bins=120, y" -* a theta/height banana detector -* -*
  • options = "angle radius all auto" -* is a 2D monitor with automatic limits -* -*
  • options = "list=1000 kx ky kz energy" -* records 1000 neutron event in a file -* -*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" -* makes 4 output 1D files and produces a complete list for all neutrons -* and monitor log(abs(tof)) within automatic limits (for t) -* -*
  • options = "theta y, sphere, pixel min=100" -* a 4pi detector which outputs an event list with pixelID from the actual -* detector surface, starting from index 100. -* -*
-* To dynamically define a number of bins, or limits: -* Use in DECLARE: char op[256]; -* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); -* Use in TRACE: Monitor_nD(... options=op ...) -* -* How to monitor any instrument/component variable into a Monitor_nD -* Suppose you want to monitor a variable 'age' which you assign somwhere in -* the instrument: -* COMPONENT MyMonitor = Monitor_nD( -* xwidth = 0.1, yheight = 0.1, -* user1="age", username1="Age of the Captain [years]", -* options="user1, auto") -* AT ... -* -* See also the example in PreMonitor_nD to -* monitor neutron parameters cross-correlations. -* -* %BUGS -* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI -* as each process may use different limits. -* -* %Parameters -* INPUT PARAMETERS: -* -* xwidth: [m] Width of detector. -* yheight: [m] Height of detector. -* zdepth: [m] Thickness of detector (z). -* radius: [m] Radius of sphere/banana shape monitor -* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). -* -* Optional input parameters (override xwidth yheight zdepth): -* xmin: [m] Lower x bound of opening -* xmax: [m] Upper x bound of opening -* ymin: [m] Lower y bound of opening -* ymax: [m] Upper y bound of opening -* zmin: [m] Lower z bound of opening -* zmax: [m] Upper z bound of opening -* filename: [str] Output file name (overrides file=XX option). -* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins -* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits -* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits -* user1: [str] Variable name of USERVAR to be monitored by user1. -* user2: [str] Variable name of USERVAR to be monitored by user2. -* user3: [str] Variable name of USERVAR to be monitored by user3. -* username1: [str] Name assigned to User1 -* username2: [str] Name assigned to User2 -* username3: [str] Name assigned to User3 -* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. -* geometry: [str] Name of an OFF file to specify a complex geometry detector -* nowritefile: [1] If set, monitor will skip writing to disk -* -* CALCULATED PARAMETERS: -* -* DEFS: [struct] structure containing Monitor_nD Defines -* Vars: [struct] structure containing Monitor_nD variables -* -* %Link -* PreMonitor_nD -* -* %End -******************************************************************************/ -DEFINE COMPONENT Monitor_nD - -SETTING PARAMETERS ( - string user1="", string user2="", string user3="", - xwidth=0, yheight=0, zdepth=0, - xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, - int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, - string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, - string username1="NULL", string username2="NULL", string username3="NULL", - int tsplit=0, int adaptive_target=0 -) -/* these are protected C variables */ - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -SHARE -%{ - %include "monitor_nd-lib" - %include "read_table-lib" - %include "interoff-lib" -%} - -DECLARE -%{ - MonitornD_Defines_type DEFS; - MonitornD_Variables_type Vars; - MCDETECTOR detector; - off_struct offdata; -%} - -INITIALIZE -%{ - char tmp[CHAR_BUF_LENGTH]; - strcpy (Vars.compcurname, NAME_CURRENT_COMP); - Vars.compcurindex = INDEX_CURRENT_COMP; - if (options != NULL) - strncpy (Vars.option, options, CHAR_BUF_LENGTH); - else { - strcpy (Vars.option, "x y"); - printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); - } - Vars.compcurpos = POS_A_CURRENT_COMP; - - if (strstr (Vars.option, "source")) - strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); - - if (bins) { - sprintf (tmp, " all bins=%ld ", (long)bins); - strcat (Vars.option, tmp); - } - if (min > -FLT_MAX && max < FLT_MAX) { - sprintf (tmp, " all limits=[%g %g]", min, max); - strcat (Vars.option, tmp); - } else if (min > -FLT_MAX) { - sprintf (tmp, " all min=%g", min); - strcat (Vars.option, tmp); - } else if (max < FLT_MAX) { - sprintf (tmp, " all max=%g", max); - strcat (Vars.option, tmp); - } - - /* transfer, "zero", and check username- and user variable strings to Vars struct*/ - strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); - strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); - strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); - if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { - strncpy (Vars.UserVariable1, user1, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable1, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); - } - } - if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { - strncpy (Vars.UserVariable2, user2, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable2, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); - } - } - if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { - strncpy (Vars.UserVariable3, user3, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable3, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); - } - } - - /*sanitize parameters set for curved shapes*/ - if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { - /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ - if (!radius) { - if (xwidth) { - radius = xwidth / 2.0; - } else { - radius = zdepth / 2.0; - } - } else { - xwidth = 2 * radius; - } - if (!yheight) { - /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ - yheight = 2 * radius; - } - } else if (radius) { - /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values - (xwidth etc. They are used inside monitor_nd-lib.*/ - xwidth = zdepth = 2 * radius; - if (yheight) { - /*a height is given (and no shape explitly set - assume cylinder*/ - strcat (Vars.option, " banana"); - } else { - strcat (Vars.option, " sphere"); - yheight = 2 * radius; - } - } - - int offflag = 0; - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - #ifndef USE_OFF - fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); - exit (-1); - #else - if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { - printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" - " Defaulting to normal Monitor dimensions.\n", - NAME_CURRENT_COMP, geometry); - strcpy (geometry, ""); - } else { - offflag = 1; - } - #endif - } - - if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) - exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); - - Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); - - if (Vars.Flag_OFF) { - offdata.mantidflag = Vars.Flag_mantid; - offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; - } - - if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) - strncpy (Vars.Mon_File, filename, 128); - - /* check if user given filename with ext will be used more than once */ - if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { - char* XY; - XY = strrchr (Vars.Mon_File, '.'); - *XY = '_'; - } - - if (restore_neutron) - Vars.Flag_parallel = 1; - detector.m = 0; - - #ifdef USE_MPI - MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) - printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" - "WARNING this may create incorrect distributions (but integrated flux will be right).\n", - NAME_CURRENT_COMP);); - #else - #ifdef OPENACC - if (strstr (Vars.option, "auto")) - printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" - "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", - NAME_CURRENT_COMP); - #endif - #endif -%} - -TRACE -%{ - double transmit_he3 = 1.0; - double multiplier_capture = 1.0; - double t0 = 0; - double t1 = 0; - int pp; - int intersect = 0; - char Flag_Restore = 0; - - #ifdef OPENACC - #ifdef USE_OFF - off_struct thread_offdata = offdata; - #endif - #else - #define thread_offdata offdata - #endif - - /* this is done automatically - STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - */ - #ifdef USE_OFF - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - /* determine intersections with object */ - intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); - if (Vars.Flag_mantid) { - if (intersect) { - Vars.OFF_polyidx = thread_offdata.nextintersect; - } else { - Vars.OFF_polyidx = -1; - } - } - } else - #endif - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ - { - // propagate to xy plane and find intersection - // make sure the event is recoverable afterwards - t0 = t; - ALLOW_BACKPROP; - PROP_Z0; - if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful - { - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { - // square xy - intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); - } else { - // disk xy - intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); - } - } else { - intersect = 0; - } - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ - { - intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); - /* intersect = (intersect && t0 > 0); */ - } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ - { - intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ - { - intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ - { - intersect = 1; - } - - if (intersect) { - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) - || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { - /* check if we have to remove the top/bottom with BANANA shape */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { - if (intersect == 1) { // Entered and left through sides - if (t0 < 0 && t1 > 0) { - t0 = t; /* neutron was already inside ! */ - } - if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ - t1 = t; - } - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - intersect = 0; - Flag_Restore = 1; - } - } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - intersect = 0; - Flag_Restore = 1; - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit - intersect = 0; - Flag_Restore = 1; - } else { - printf ("Cylinder_intersect returned unexpected value %i\n", intersect); - } - } else { - // All other shapes than the BANANA - if (t0 < 0 && t1 > 0) - t0 = t; /* neutron was already inside ! */ - if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ - t1 = t; - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) - PROP_DT (t1); /* t1 outgoing beam */ - else - PROP_DT (t0); /* t0 incoming beam */ - } - - /* Final test if we are on lid / bottom of banana/sphere */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { - if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { - intersect = 0; - Flag_Restore = 1; - } - } - } - } - - if (intersect) { - /* Now get the data to monitor: current or keep from PreMonitor */ - /* if (Vars.Flag_UsePreMonitor != 1)*/ - /* {*/ - /* Vars.cp = p;*/ - /* Vars.cx = x;*/ - /* Vars.cvx = vx;*/ - /* Vars.csx = sx;*/ - /* Vars.cy = y;*/ - /* Vars.cvy = vy;*/ - /* Vars.csy = sy;*/ - /* Vars.cz = z;*/ - /* Vars.cvz = vz;*/ - /* Vars.csz = sz;*/ - /* Vars.ct = t;*/ - /* }*/ - - if ((Vars.He3_pressure > 0) && (t1 != t0) - && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { - transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); - /* will monitor the absorbed part */ - p = p * (1 - transmit_he3); - } - - if (Vars.Flag_capture) { - multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); - if (multiplier_capture != 0) - multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ - p = p * multiplier_capture / 1.7985; - } - - - int train_index; - double p_original = p; - double p_factor = p/_particle->p_last_time_manipulation; - - if (adaptive_target) { - _particle->total_N_sent += _particle->adaptive_N; - _particle->total_rays_sent++; - } - - if (tsplit==1) { - double pp_array[N_trains]; - double t_original = t; - for (train_index=0; train_index<_particle->adaptive_N; train_index++) { - - if (_particle->p_trains[train_index] > 0) { - p = p_factor*_particle->p_trains[train_index]; - t = t_original + _particle->t_offset[train_index]; - - pp_array[train_index] = Monitor_nD_Trace (&DEFS, &Vars, _particle); - - if (adaptive_target) _particle->total_arrived++; - - } else pp_array[train_index] = 0; - } - p = p_original; - t = t_original; - - int pp_total = 0; - for (train_index=0; train_index<_particle->adaptive_N; train_index++) { - pp_total += pp_array[train_index]; - } - if (pp_total == 0.0) { - //ABSORB; - } else if (pp_total > 0) { - SCATTER; - } - - } else { - - /* - // Now just use normal p - double total_p = 0; - for (train_index=0; train_indexalive_trains[train_index]) total_p += p_original*_particle->p_trains[train_index]; - } - - p = total_p; - */ - - pp = Monitor_nD_Trace (&DEFS, &Vars, _particle); - if (pp == 0.0) { - ABSORB; - } else if (pp == 1) { - SCATTER; - } - } - - - /*set weight to undetected part if capture and/or he3_pressure*/ - if (Vars.He3_pressure > 0) { - /* after monitor, only remains 1-p_detect */ - p = p * transmit_he3 / (1.0 - transmit_he3); - } - - if (Vars.Flag_capture) { - p = p / multiplier_capture * 1.7985; - } - - if (Vars.Flag_parallel) /* back to neutron state before detection */ - Flag_Restore = 1; - } /* end if intersection */ - else { - if (Vars.Flag_Absorb && !Vars.Flag_parallel) { - // restore neutron ray before absorbing for correct mcdisplay - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - ABSORB; - } else - Flag_Restore = 1; /* no intersection, back to previous state */ - } - - if (Flag_Restore) { - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - } -%} - -SAVE -%{ - if (!nowritefile) { - /* save results, but do not free pointers */ - detector = Monitor_nD_Save (&DEFS, &Vars); - } -%} - -FINALLY -%{ - /* free pointers */ - Monitor_nD_Finally (&DEFS, &Vars); -%} - -MCDISPLAY -%{ - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - off_display (offdata); - } else { - Monitor_nD_McDisplay (&DEFS, &Vars); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/MultiDiskChopper.comp deleted file mode 100644 index 9e89806628..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/MultiDiskChopper.comp +++ /dev/null @@ -1,361 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2015, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: MultiDiskChopper -* -* %I -* Written by: Markus Appel -* Date: 2015-10-19 -* Origin: ILL / FAU Erlangen-Nuernberg -* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), -* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by -* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) -* -* %D -* Models a disk chopper with a freely configurable slit pattern. For simple applications, -* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. -* If the chopper slit pattern should be dynamically configurable or a complicated pattern -* is to be used as first chopper on a continuous source, use this component. -* -* Width and position of the slits is defined as a list in string parameters so -* they can easily be taken from instrument parameters. -* The chopper axis is located on the y axis as defined by the parameter delta_y. -* When the chopper is the first chopper after a continuous (i.e. time-independent) -* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. -* -* -* Examples (see parameter definitions for details): -* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, delay=0.02) -* -* First chopper on a continuous source, creating pulse trains for one additional revolution -* before and after the revolution at t=0: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) -* -* %P -* INPUT PARAMETERS: -* -* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" -* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) -* nslits: [] Number of slits to read from slit_width and slit_center -* radius: [m] Outer radius of the disk -* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. -* nu: [Hz] Rotation speed of the disk, the sign determines the direction. -* -* Optional parameters: -* verbose: [0/1] Set to 1 to display more information during the simulation. -* phase: [deg] Phase angle located on top of the disk at t=delay (see below). -* delay: [s] Time delay of the chopper clock. -* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. -* jitter: [s] Jitter in the time phase. -* abs_out: If 1, absorb all neutrons outside the disk diameter. -* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events -* will be shifted in time to pass the component (with adapted weight). -* -* Additional parameters when isfirst=1 (that have no effect for isfirst=0): -* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. -* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). -* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT MultiDiskChopper - -SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) - - -DECLARE -%{ - double T; - double To; - double omega; - double* dslit_center; - double* dhslit_width; - double* t0; - double* t1; -%} - -INITIALIZE -%{ - char* pch; - int i; - double sense; - - phase = remainder (phase, 360.0) * DEG2RAD; - omega = 2.0 * PI * nu; /* rad/s */ - sense = (omega < 0) ? -1 : 1; - - if (isfirst && (nrev - floor (nrev) != 0)) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) - exit (-1); - } - - if (!omega) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - - if (nslits <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) - } - - // Read slits in array - dslit_center = malloc (nslits * sizeof (*dslit_center)); - pch = strtok (slit_center, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dslit_center[i] = atof (pch); - pch = strtok (NULL, ";_, "); - - if ((dslit_center[i] < 0)) { - while (dslit_center[i] < 0) { - dslit_center[i] += 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - if ((dslit_center[i] >= 360.0)) { - while (dslit_center[i] >= 360.0) { - dslit_center[i] -= 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - dslit_center[i] *= DEG2RAD; - } - - // dhslit_width: HALF slit width - dhslit_width = malloc (nslits * sizeof (*dhslit_width)); - pch = strtok (slit_width, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dhslit_width[i] = 0.5 * atof (pch); - pch = strtok (NULL, ";_, "); - if (dhslit_width[i] <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) - exit (-1); - } - dhslit_width[i] *= DEG2RAD; - } - - /* Calculate delay from phase and vice versa */ - if (phase) { - if (delay) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) - } - phase -= delay * omega; - delay = -phase / omega; - } else { - phase = delay * omega; - } - - /* Time for 1 revolution */ - T = 2.0 * PI / fabs (omega); - - // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE - - /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ - - // generate times t1: duration of slit openings (or their cumulative sum if !equal) - // dhslit_width is already in rad - t1 = malloc (nslits * sizeof (*t1)); - t1[0] = 2.0 * dhslit_width[0] / fabs (omega); - To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit - - for (i = 1; i < nslits; i++) { - t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); - To += (2.0 * dhslit_width[i] / fabs (omega)); - } - - // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) - t0 = malloc (nslits * sizeof (*t0)); - t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); - - for (i = 1; i < nslits; i++) { - t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); - } - - MPI_MASTER (if (verbose) { - printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); - printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); - printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); - - if (isfirst && equal) - printf (" --- first chopper distributing events equally on all slits\n"); - - if (isfirst && !equal) - printf (" --- first chopper distributing events proportional to slit size\n"); - - if (isfirst) - printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); - - printf (" --- Slit center [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", dslit_center[i] * RAD2DEG); - printf ("\n"); - printf (" --- Slit width [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); - printf ("\n"); - - // dump internal arrays for debugging - if (verbose == 2) { - printf (" --- Internal arrays:\n"); - printf (" --- i t0 t1 dslit_center dhslit_width\n"); - for (i = 0; i < nslits; i++) { - printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); - } - } - }) - %} - -TRACE -%{ - double phi; - double xprime, yprime; - double toff; - int irev, islit; - - // Propagate into the chopper disk plane - PROP_Z0; - - if (delta_y > 0) { - // 'anormal' case, chopper above guide - // mirror coordinate system - xprime = -x; - yprime = -y + delta_y; - } else { - // 'normal' case, chopper below guide - xprime = x; - yprime = y - delta_y; - } - - // Is neutron transmitted/absorbed outside the disk diameter ? - if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) - if (abs_out) { - ABSORB; - } else { - SCATTER; - } - else { - if (isfirst) { - irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); - - if (equal) { - // Distribute neutrons equally over slits - t = rand01 () * nslits; - islit = (t == nslits) ? nslits - 1 : floor (t); - t = (t - islit) * t1[islit]; - - p *= t1[islit] / T * nslits; - } else { - // Distribute neutrons proportional to slit size - t = rand01 () * To; - islit = 0; - while (t1[islit] < t) - islit++; - - /* weight correction: chopper slits transmission opening time per full revolution time */ - p *= To / T; - } - - // offset time stamp according to slit phase, neutron position and jitter - t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); - - } else { - - // Check whether each t_offset carried by the ray make it through - double weight_update = p/_particle->p_last_time_manipulation; - _particle->p_last_time_manipulation = 0; - - int train_index; - int one_did_hit = 0; - int this_t_hit; - double this_train_t; - int all_dead = 1; - double p_total = 0; - for (train_index=0; train_index<_particle->adaptive_N; train_index++) { - - if (_particle->p_trains[train_index] == 0) continue; - all_dead = 0; - - this_train_t = t + _particle->t_offset[train_index]; - // where does the neutron hit the disk ? - phi = atan2 (xprime, yprime) + omega * (this_train_t - delay - (jitter ? jitter * randnorm () : 0)); - - // does the neutron hit one of the slits ? - islit = 0; - this_t_hit = 0; - while (islit < nslits && !this_t_hit) { - if (fabs (remainder (phi - dslit_center[islit], 2 * PI)) < dhslit_width[islit]) - this_t_hit = 1; - - islit++; - } - if (this_t_hit == 0) _particle->p_trains[train_index] = 0; - else { - one_did_hit = 1; - _particle->p_trains[train_index] *= weight_update; - _particle->p_last_time_manipulation += _particle->p_trains[train_index]; - } - } - // if not a single t_offset made it through a slit, absorb this ray - if (!one_did_hit || all_dead) ABSORB; - - p = _particle->p_last_time_manipulation; - } - } -%} - -FINALLY -%{ - // clean up - if (dslit_center) - free (dslit_center); - - if (dhslit_width) - free (dhslit_width); - - if (t0) - free (t0); - - if (t1) - free (t1); -%} - -MCDISPLAY -%{ - int j; - - // the disk - circle ("xy", 0, delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslits; j++) { - /* Angular start/end of slit */ - double tmin = dslit_center[j] - dhslit_width[j] + phase; - double tmax = tmin + 2.0 * dhslit_width[j]; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) + delta_y, 0, 0, delta_y, 0); - line (radius * sin (tmax), radius * cos (tmax) + delta_y, 0, 0, delta_y, 0); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr deleted file mode 100644 index 4134b50fe1..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/ODIN_TOF_train3.instr +++ /dev/null @@ -1,1047 +0,0 @@ -/******************************************************************************** -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* This file was written by McStasScript, which is a -* python based McStas instrument generator written by -* Mads Bertelsen in 2019 while employed at the -* European Spallation Source Data Management and -* Software Centre -* -* Instrument: ODIN_TOF_train3 -* -* %Identification -* Written by: Python McStas Instrument Generator -* Date: 13:25:52 on February 25, 2026 -* Origin: ESS DMSC -* %INSTRUMENT_SITE: Generated_instruments -* -* !!Please write a short instrument description (1 line) here!! -* -* %Description -* Please write a longer instrument description here! -* -* %Example: N_trains_par=1 Detector: tof_I=9.16671e+08 -* %Example: N_trains_par=10 Detector: tof_I=9.16671e+08 -* %Example: N_trains_par=100 Detector: tof_I=9.16671e+08 -* -* %Parameters -* l_min: [unit] Minimum simulated wavelength [AA] -* l_max: [unit] Maximum simulated wavelength [AA] -* n_pulses: [unit] Number of simulated pulses -* wfm_delta: [unit] Distance between WFM choppers [m] -* bp_frequency: [unit] Frequency of bandpass choppers [Hz] -* WFM1_phase_offset: [unit] Offset of WFM1 phase [deg] -* jitter_wfmc_1: [unit] Jitter of wfmc_1 chopper. -* WFM2_phase_offset: [unit] Offset of WFM2 phase [deg] -* jitter_wfmc_2: [unit] Jitter of wfmc_2 chopper. -* fo1_phase_offset: [unit] Offset of fo1 phase [deg] -* jitter_fo_chopper_1: [unit] Jitter of fo_chopper_1 chopper. -* bp1_phase_offset: [unit] Offset of bp1 phase [deg] -* jitter_bp1: [unit] Jitter of bp1 chopper -* fo2_phase_offset: [unit] Offset of fo2 phase [deg] -* jitter_fo_chopper_2: [unit] Jitter of fo_chopper_2 chopper. -* bp2_phase_offset: [unit] Offset of bp2 phase [deg] -* jitter_bp2: [unit] Jitter of bp2 chopper -* t0_phase_offset: [unit] Offset of t0 phase [deg] -* jit_t0_sec: [unit] Jitter of t0 chopper -* fo3_phase_offset: [unit] Offset of fo3 phase [deg] -* jitter_fo_chopper_3: [unit] Jitter of fo_chopper_3 chopper. -* fo4_phase_offset: [unit] Offset of fo4 phase [deg] -* jitter_fo_chopper_4: [unit] Jitter of fo_chopper_4 chopper. -* fo5_phase_offset: [unit] Offset of fo5 phase [deg] -* jitter_fo_chopper_5: [unit] Jitter of fo_chopper_5 chopper. -* -* %Link -* -* %End -********************************************************************************/ - -DEFINE INSTRUMENT ODIN_TOF_train3 ( -l_min = 1.0, // Minimum simulated wavelength [AA] -l_max = 11.0, // Maximum simulated wavelength [AA] -int n_pulses = 1, // Number of simulated pulses -wfm_delta = 0.3, // Distance between WFM choppers [m] -bp_frequency = 7, // Frequency of bandpass choppers [Hz] -WFM1_phase_offset = 0, // Offset of WFM1 phase [deg] -jitter_wfmc_1 = 0, // Jitter of wfmc_1 chopper. -WFM2_phase_offset = 0, // Offset of WFM2 phase [deg] -jitter_wfmc_2 = 0, // Jitter of wfmc_2 chopper. -fo1_phase_offset = 0, // Offset of fo1 phase [deg] -jitter_fo_chopper_1 = 0, // Jitter of fo_chopper_1 chopper. -bp1_phase_offset = 0, // Offset of bp1 phase [deg] -jitter_bp1 = 0, // Jitter of bp1 chopper -fo2_phase_offset = 0, // Offset of fo2 phase [deg] -jitter_fo_chopper_2 = 0, // Jitter of fo_chopper_2 chopper. -bp2_phase_offset = 0, // Offset of bp2 phase [deg] -jitter_bp2 = 0, // Jitter of bp2 chopper -t0_phase_offset = 0, // Offset of t0 phase [deg] -jit_t0_sec = 0, // Jitter of t0 chopper -fo3_phase_offset = 0, // Offset of fo3 phase [deg] -jitter_fo_chopper_3 = 0, // Jitter of fo_chopper_3 chopper. -fo4_phase_offset = 0, // Offset of fo4 phase [deg] -jitter_fo_chopper_4 = 0, // Jitter of fo_chopper_4 chopper. -fo5_phase_offset = 0, // Offset of fo5 phase [deg] -jitter_fo_chopper_5 = 0, // Jitter of fo_chopper_5 chopper. -int choppers=2, // 0: no choppers 1: BP 2: WFM -int N_trains_par = 100, -target_tsplit = 3 -) - -DECLARE -%{ -double WFM1_phase = 0; // Phase of WFM1 chopper at t=0 center for smallest gap -double WFM2_phase = 0; // Phase of WFM2 chopper at t=0 center for smallest gap -double fo1_phase = 0; // Phase of fo1 chopper at t=0 center for smallest gap -double bp1_phase = 0; // Phase of bp1 chopper at t=0 center of gap -double fo2_phase = 0; // Phase of fo2 chopper at t=0 center for smallest gap -double bp2_phase = 0; // Phase of bp2 chopper at t=0 center of gap -double t0_phase = 0; // Phase of t0 chopper at t=0 center of gap -double fo3_phase = 0; // Phase of fo3 chopper at t=0 center for smallest gap -double fo4_phase = 0; // Phase of fo4 chopper at t=0 center for smallest gap -double fo5_phase = 0; // Phase of fo5 chopper at t=0 center for smallest gap - -int allocated; -%} - -USERVARS -%{ -double *t_offset; -double *p_trains; -double P_last_time_manipulation; -//int allocated; -int adaptive_N; -long total_arrived; -long total_N_sent; -long total_rays_sent; -%} - - -INITIALIZE -%{ -// Start of initialize for generated ODIN -WFM1_phase = WFM1_phase_offset; -WFM1_phase += 97.55; -WFM2_phase = WFM2_phase_offset; -WFM2_phase += -5.88015; -fo1_phase = fo1_phase_offset; -fo1_phase += -65.625; -bp1_phase = bp1_phase_offset; -bp1_phase += -11.475; -fo2_phase = fo2_phase_offset; -fo2_phase += -20.5; -bp2_phase = bp2_phase_offset; -bp2_phase += 185.195; -t0_phase = t0_phase_offset; -fo3_phase = fo3_phase_offset; -fo3_phase += 137.47; -fo4_phase = fo4_phase_offset; -fo4_phase += 111.700; -fo5_phase = fo5_phase_offset; -fo5_phase += -81.105; - -allocated = 0; - -#define N_trains INSTRUMENT_GETPAR(N_trains_par) - -MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "w"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); -); -%} - -TRACE - -COMPONENT Origin = Progress_bar() -AT (0, 0, 0) ABSOLUTE -EXTEND %{ - - if (allocated == 0) { - t_offset = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); - p_trains = malloc(INSTRUMENT_GETPAR(N_trains_par)*sizeof(double)); - adaptive_N=INSTRUMENT_GETPAR(N_trains_par); - total_arrived=0; - total_N_sent=0; - total_rays_sent=0; - allocated = 1; - } -%} - -COMPONENT optical_axis = Arm() -AT (0.026, 0, 0) RELATIVE Origin - -COMPONENT Source = ESS_butterfly( - sector = "S", beamline = 2, - yheight = 0.03, cold_frac = 0.5, - target_index = 1, focus_xw = 0.0576862, - focus_yh = 0.0464308, c_performance = 1, - t_performance = 1, Lmin = l_min, - Lmax = l_max, n_pulses = n_pulses, - acc_power = 2.0, - target_tsplit=target_tsplit) -AT (0, 0, 0) RELATIVE Origin - -COMPONENT Start_of_bi = Arm() -AT (0, 0, 2.0306) RELATIVE optical_axis - -COMPONENT bi = bi_spec_ellipse( - xheight = 0.044795, ywidth = 0.033273, - zlength = 0.3, n_mirror = 0, - tilt = 0.7355449343006287, n_pieces = 1, - angular_offset = 0.0274924630093546, m = 4, - Qc_m = 0.0217, alpha_mirror_m = 2.5, - W_m = 0.015, d_focus_1_x = 3.443249331959489, - d_focus_2_x = 4.946749331959489, d_focus_1_y = 1.9037386467676676, - d_focus_2_y = 33.78623864676767, ell_l = 0.31, - ell_h = 0.04381396598275876, ell_w = 0.03326371014826339, - ell_m = 4, R0 = 0.99, - Qc = 0.0217, alpha_mirror = 2.5, - W = 0.0015, cut = 3, - substrate = 0) -AT (0, 0, 0) RELATIVE Start_of_bi -ROTATED (0, 0, 180) RELATIVE Start_of_bi - -COMPONENT End_of_bi = Arm() -AT (0, 0, 0.31) RELATIVE bi -ROTATED (0, 0, -180) RELATIVE bi - -COMPONENT NBOA_drawing_1_end = Guide_four_side( - w1l = 0.022187, linwl = 3.7532493319594886, - loutwl = 4.397849331959489, w1r = 0.022187, - linwr = 3.7532493319594886, loutwr = 4.397849331959489, - h1u = 0.017858, linhu = 2.213738646767668, - louthu = 33.23733864676767, h1d = 0.017858, - linhd = 2.213738646767668, louthd = 33.23733864676767, - l = 0.5488999999999999, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 0.31000099999999997) RELATIVE bi - -COMPONENT g1a2 = Guide_four_side( - w1l = 0.022397711974319966, linwl = 4.303349331959489, - loutwl = 3.3968493319594883, w1r = 0.022397711974319966, - linwr = 4.303349331959489, loutwr = 3.3968493319594883, - h1u = 0.019790525295492974, linhu = 2.763788626121542, - louthu = 32.236388626121546, h1d = 0.019790525295492974, - linhd = 2.763788626121542, louthd = 32.236388626121546, - l = 0.9998, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 0.548901) RELATIVE NBOA_drawing_1_end - -COMPONENT g1a3 = Guide_four_side( - w1l = 0.021853309009560024, linwl = 5.3043493319594885, - loutwl = 1.8968293319594889, w1r = 0.021853309009560024, - linwr = 5.3043493319594885, loutwr = 1.8968293319594889, - h1u = 0.02274764602619812, linhu = 3.7648386261215414, - louthu = 30.73631862612154, h1d = 0.02274764602619812, - linhd = 3.7648386261215414, louthd = 30.73631862612154, - l = 1.49882, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 0.999801) RELATIVE g1a2 - -COMPONENT g1b1 = Guide_four_side( - w1l = 0.017955, linwl = 6.82655, - loutwl = 1.3934509999999998, w1r = 0.017955, - linwr = 6.82655, loutwr = 1.3934509999999998, - h1u = 0.026565, linhu = 5.2842144, - louthu = 30.232929999999996, h1d = 0.026565, - linhd = 5.2842144, louthd = 30.232929999999996, - l = 0.48300000000000054, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2.5, - myd = 2.5) -AT (0, 0, 5.4109) RELATIVE optical_axis - -COMPONENT g1c1 = Guide_four_side( - w1l = 0.015725, linwl = 7.323650000000001, - loutwl = 0.5472510000000002, w1r = 0.015725, - linwr = 7.323650000000001, loutwr = 0.5472510000000002, - h1u = 0.02753, linhu = 5.7813144, - louthu = 29.38673, h1d = 0.02753, - linhd = 5.7813144, louthd = 29.38673, - l = 0.8320999999999996, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2.5, - myd = 2.5) -AT (0, 0, 5.908) RELATIVE optical_axis - -COMPONENT wfm_position = Arm() -AT (0, 0, 7.0) RELATIVE optical_axis - -COMPONENT wfm_1_position = Arm() -AT (0, 0, -0.5*wfm_delta) RELATIVE wfm_position - -COMPONENT wfmc_1 = MultiDiskChopper( - slit_center = "5.62;-44.68;-91.85;-136.08;-177.55;143.56", slit_width = "5.7;9;12;14.9;17.5;20", - nslits = 6, delta_y = -0.31499999999999995, - nu = -56.0, jitter = jitter_wfmc_1, - phase = WFM1_phase, radius = 0.35) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE wfm_1_position -ROTATED (0, 0, 180) RELATIVE wfm_1_position - - -COMPONENT pinhole_1 = Slit( - xwidth = 0.015, yheight = 0.06) -AT (0, 0, 0) RELATIVE wfm_position - -COMPONENT wfm_2_position = Arm() -AT (0, 0, 0.5*wfm_delta) RELATIVE wfm_position - -COMPONENT wfmc_2 = MultiDiskChopper( - slit_center = "-103.55000000000001;-157.09;152.71;105.64;61.50000000000001;20.110000000000028", slit_width = "5.7;9;12;14.9;17.5;20", - nslits = 6, delta_y = -0.31499999999999995, - nu = -56.0, jitter = jitter_wfmc_2, - phase = WFM2_phase, radius = 0.35) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE wfm_2_position -ROTATED (0, 0, 180) RELATIVE wfm_2_position - -COMPONENT g2a1 = Guide_four_side( - w1l = 0.01121, linwl = 0.25980000000000025, - loutwl = 12.040199999999999, w1r = 0.01121, - linwr = 0.25980000000000025, loutwr = 12.040199999999999, - h1u = 0.029825, linhu = 7.2598, - louthu = 28.0402, h1d = 0.029825, - linhd = 7.2598, louthd = 28.0402, - l = 0.7000000000000002, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 3, - myd = 3) -AT (0, 0, 7.247800000000001) RELATIVE optical_axis - -COMPONENT monitor_1_position = Arm() -AT (0, 0, 7.96) RELATIVE optical_axis - -COMPONENT g2a2 = Guide_four_side( - w1l = 0.0212, linwl = 0.9858000000000002, - loutwl = 11.6045, w1r = 0.0212, - linwr = 0.9858000000000002, loutwr = 11.6045, - h1u = 0.03088, linhu = 7.9858, - louthu = 27.6045, h1d = 0.03088, - linhd = 7.9858, louthd = 27.6045, - l = 0.40969999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 3, - myd = 3) -AT (0, 0, 7.973800000000001) RELATIVE optical_axis - -COMPONENT fo1_position = Arm() -AT (0, 0, 8.392) RELATIVE optical_axis - -COMPONENT fo_chopper_1 = MultiDiskChopper( - slit_center = "-146.745;166.555;122.775;81.715;43.215;5.525", slit_width = "11.06;13.06;14.94;16.71;18.36;16.72", - nslits = 6, delta_y = -0.4625, - nu = -42.0, jitter = jitter_fo_chopper_1, - phase = fo1_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo1_position -ROTATED (0, 0, 180) RELATIVE fo1_position - -COMPONENT bp1_position = Arm() -AT (0, 0, 8.442) RELATIVE optical_axis - -COMPONENT bp1_chopper = DiskChopper( - theta_0 = 46.71, radius = 0.5, - yheight = 0.075, nu = bp_frequency, - nslit = 1, jitter = jitter_bp1, - phase = bp1_phase + (42.20500000000003)) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp1_position -ROTATED (0, 0, 180) RELATIVE bp1_position - -COMPONENT g2b1 = Guide_four_side( - w1l = 0.02521, linwl = 1.4502500000000005, - loutwl = 11.14005, w1r = 0.02521, - linwr = 1.4502500000000005, loutwr = 11.14005, - h1u = 0.031505, linhu = 8.45025, - louthu = 27.140050000000002, h1d = 0.031505, - linhd = 8.45025, louthd = 27.140050000000002, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.446250000000001) RELATIVE optical_axis - -COMPONENT g2b2 = Guide_four_side( - w1l = 0.02811, linwl = 1.8707999999999991, - loutwl = 9.67745, w1r = 0.02811, - linwr = 1.8707999999999991, loutwr = 9.67745, - h1u = 0.03203, linhu = 8.8708, - louthu = 25.67745, h1d = 0.03203, - linhd = 8.8708, louthd = 25.67745, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.8668) RELATIVE optical_axis - -COMPONENT g2b3 = Guide_four_side( - w1l = 0.03493, linwl = 3.3230500000000003, - loutwl = 8.2252, w1r = 0.03493, - linwr = 3.3230500000000003, loutwr = 8.2252, - h1u = 0.033615, linhu = 10.32305, - louthu = 24.2252, h1d = 0.033615, - linhd = 10.32305, louthd = 24.2252, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 10.31905) RELATIVE optical_axis - -COMPONENT g2b4 = Guide_four_side( - w1l = 0.03862, linwl = 4.7858, - loutwl = 7.804500000000001, w1r = 0.03862, - linwr = 4.7858, loutwr = 7.804500000000001, - h1u = 0.03488, linhu = 11.7858, - louthu = 23.8045, h1d = 0.03488, - linhd = 11.7858, louthd = 23.8045, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 11.7818) RELATIVE optical_axis - -COMPONENT fo2_position = Arm() -AT (0, 0, 12.2) RELATIVE optical_axis - -COMPONENT fo_chopper_2 = MultiDiskChopper( - slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", - nslits = 6, delta_y = -0.46, - nu = -42.0, jitter = jitter_fo_chopper_2, - phase = fo2_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo2_position -ROTATED (0, 0, 180) RELATIVE fo2_position - -COMPONENT bp2_position = Arm() -AT (0, 0, 12.25) RELATIVE optical_axis - -COMPONENT bp_chopper2 = DiskChopper( - theta_0 = 67.49, radius = 0.5, - yheight = 0.08, nu = bp_frequency, - nslit = 1, jitter = jitter_bp2, - phase = bp2_phase -141.795) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp2_position -ROTATED (0, 0, 180) RELATIVE bp2_position - -COMPONENT g2c1 = Guide_four_side( - w1l = 0.03929, linwl = 5.250249999999999, - loutwl = 6.536899999999999, w1r = 0.03929, - linwr = 5.250249999999999, loutwr = 6.536899999999999, - h1u = 0.03488, linhu = 12.25025, - louthu = 22.5369, h1d = 0.03488, - linhd = 12.25025, louthd = 22.5369, - l = 1.2128500000000013, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 12.254249999999999) RELATIVE optical_axis - -COMPONENT t0_start_position = Arm() -AT (0, 0, 13.503) RELATIVE optical_axis - -COMPONENT t0_chopper_alpha = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_start_position -ROTATED (0, 0, 180) RELATIVE t0_start_position - -COMPONENT t0_end_position = Arm() -AT (0, 0, 13.703) RELATIVE optical_axis - -COMPONENT t0_chopper_beta = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_end_position -ROTATED (0, 0, 180) RELATIVE t0_end_position - -COMPONENT g3a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03611, linhu = 13.7559, - louthu = 20.2631, h1d = 0.03611, - linhd = 13.7559, louthd = 20.2631, - l = 1.981, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 13.7379) RELATIVE optical_axis - -COMPONENT g3a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03687, linhu = 15.7409, - louthu = 19.0055, h1d = 0.03687, - linhd = 15.7409, louthd = 19.0055, - l = 1.2535999999999987, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 15.7229) RELATIVE optical_axis - -COMPONENT fo3_position = Arm() -AT (0, 0, 16.9865) RELATIVE optical_axis - -COMPONENT fo_chopper_3 = MultiDiskChopper( - slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", - nslits = 6, delta_y = -0.5575, - nu = -28.0, jitter = jitter_fo_chopper_3, - phase = fo3_phase, radius = 0.6) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo3_position -ROTATED (0, 0, 180) RELATIVE fo3_position - -COMPONENT g3b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03711, linhu = 17.0055, - louthu = 18.038, h1d = 0.03711, - linhd = 17.0055, louthd = 18.038, - l = 0.9564999999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 16.9965) RELATIVE optical_axis - -COMPONENT g4a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.2600000000000016, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 17.964) RELATIVE optical_axis - -COMPONENT monitor_2_position = Arm() -AT (0, 0, 19.245) RELATIVE optical_axis - -COMPONENT g4a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 19.25) RELATIVE optical_axis - -COMPONENT g4a3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.4252499999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 21.25025) RELATIVE optical_axis - -COMPONENT fo4_position = Arm() -AT (0, 0, 23.6855) RELATIVE optical_axis - -COMPONENT fo_chopper_4 = MultiDiskChopper( - slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_4, - phase = fo4_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo4_position -ROTATED (0, 0, 180) RELATIVE fo4_position - -COMPONENT g4b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.5565999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 23.6955) RELATIVE optical_axis - -COMPONENT g4b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.7800000000000011, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 24.2561) RELATIVE optical_axis - -COMPONENT g4b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.1380000000000017, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 26.0366) RELATIVE optical_axis - -COMPONENT g4b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 28.1786) RELATIVE optical_axis - -COMPONENT g4b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.4049499999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 30.17885) RELATIVE optical_axis - -COMPONENT g4b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.4106999999999985, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 31.5893) RELATIVE optical_axis - -COMPONENT g5a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, linhu = 18.0, - louthu = 17.005499999999998, h1d = 0.037165, - linhd = 18.0, louthd = 17.005499999999998, - l = 0.9945000000000022, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 32.0) RELATIVE optical_axis - -COMPONENT fo5_position = Arm() -AT (0, 0, 33.005) RELATIVE optical_axis - -COMPONENT fo_chopper_5 = MultiDiskChopper( - slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_5, - phase = fo5_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo5_position -ROTATED (0, 0, 180) RELATIVE fo5_position - -COMPONENT g5b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037105, linhu = 19.005499999999998, - louthu = 14.994750000000003, h1d = 0.037105, - linhd = 19.005499999999998, louthd = 14.994750000000003, - l = 1.9997499999999988, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 33.015499999999996) RELATIVE optical_axis - -COMPONENT g5b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.036645, linhu = 21.00575, - louthu = 12.994950000000003, h1d = 0.036645, - linhd = 21.00575, louthd = 12.994950000000003, - l = 1.999299999999998, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 35.01575) RELATIVE optical_axis - -COMPONENT g5b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.035695, linhu = 23.009500000000003, - louthu = 10.990749999999998, h1d = 0.035695, - linhd = 23.009500000000003, louthd = 10.990749999999998, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 37.0195) RELATIVE optical_axis - -COMPONENT g5b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03423, linhu = 25.009749999999997, - louthu = 8.990499999999997, h1d = 0.03423, - linhd = 25.009749999999997, louthd = 8.990499999999997, - l = 1.999750000000006, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 39.019749999999995) RELATIVE optical_axis - -COMPONENT g5b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03217, linhu = 27.0135, - louthu = 6.986750000000001, h1d = 0.03217, - linhd = 27.0135, louthd = 6.986750000000001, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 41.0235) RELATIVE optical_axis - -COMPONENT g5b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.029395, linhu = 29.01375, - louthu = 6.5, h1d = 0.029395, - linhd = 29.01375, louthd = 6.5, - l = 0.4862499999999983, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.02375) RELATIVE optical_axis - -COMPONENT g6a1 = Guide_four_side( - w1l = 0.04004, linwl = 6.5, - loutwl = 4.9864999999999995, w1r = 0.04004, - linwr = 6.5, loutwr = 4.9864999999999995, - h1u = 0.02859, linhu = 29.5, - louthu = 4.9864999999999995, h1d = 0.02859, - linhd = 29.5, louthd = 4.9864999999999995, - l = 1.5135000000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.51) RELATIVE optical_axis - -COMPONENT g6a2 = Guide_four_side( - w1l = 0.038935, linwl = 8.017499999999998, - loutwl = 2.982750000000003, w1r = 0.038935, - linwr = 8.017499999999998, loutwr = 2.982750000000003, - h1u = 0.02567, linhu = 31.0175, - louthu = 2.982750000000003, h1d = 0.02567, - linhd = 31.0175, louthd = 2.982750000000003, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 3, - myd = 3) -AT (0, 0, 45.027499999999996) RELATIVE optical_axis - -COMPONENT g6a3 = Guide_four_side( - w1l = 0.03367, linwl = 10.01775, - loutwl = 1.0, w1r = 0.03367, - linwr = 10.01775, loutwr = 1.0, - h1u = 0.02049, linhu = 33.01775, - louthu = 1.0, h1d = 0.02049, - linhd = 33.01775, louthd = 1.0, - l = 1.9822500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 47.02775) RELATIVE optical_axis - -COMPONENT guide_end = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT monitor_3_position = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT start_backend = Arm() -AT (0, 0, 0) RELATIVE optical_axis - -COMPONENT optical_axis_backend = Arm() -AT (0, 0, 0) RELATIVE start_backend - -COMPONENT pinhole_2 = Slit( - xwidth = 0.03, yheight = 0.03) -AT (0, 0, 50) RELATIVE optical_axis_backend - -COMPONENT graph = Graphite_Diffuser( - xwidth = 0.1, ywidth = 0.1, - thick = 0.2) -AT (0, 0, 50.001) RELATIVE optical_axis_backend - -COMPONENT sample_monitor_arm = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -COMPONENT sample_PSD = Monitor_nD( - filename="image.dat", xwidth=0.3, yheight=0.3, - options="x bins 300 y bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT profile_x = Monitor_nD( - filename="profile_x.dat", xwidth=0.3, yheight=0.3, - options="x bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT profile_y = Monitor_nD( - filename="profile_y.dat", xwidth=0.3, yheight=0.3, - options="y bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT wavelength = Monitor_nD( - filename="wavelength.dat", xwidth=0.3, yheight=0.3, - options="L bins 300 limits [0.5 10]") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT tof = Monitor_nD( - filename="time.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15]", - tsplit=1, adaptive_target=1) -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT wavelength_tof = Monitor_nD( - filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", - tsplit=1) -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT sample_position = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -SAVE -%{ - - MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "a"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); - ); -%} - -FINALLY -%{ -if (allocated == 1) { - free(_particle->t_offset); - free(_particle->p_trains); -} -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/bi_spec_ellipse.comp deleted file mode 100644 index c24fb3cdea..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train3/bi_spec_ellipse.comp +++ /dev/null @@ -1,794 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2011, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: Bi-spectral extracion system -* -* %I -* Written by: Manuel Morgano -* Date: April 2015 -* Version: $Revision: 2.3 $ -* Origin: PSI -* Release: McStas 1.12c -* -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* -* %D -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* The supermirror number can be automatically calculated (setting the number to 0) or given -* Each mirror can be split in submirror pieces, each of them offseted by a constant angle -* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. -* The feeder's shape is calculated by the distance between the guide entrance and the first focus, -* the distance between the exit and the second focus, the length of the coated part and the opening -* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. -* User can specify different shapes for the horizontal and the vertical ellipse. -* Setting the m-coating to 0 means absorbing, -1 means transparent. -* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn -* but it's transparent. -* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. -* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. -* -* -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %P -* INPUT PARAMETERS: -* -* xheight: (m) height of mirror stack -* ywidth: (m) width of mirror plate -* zlength: (m) length of the mirror -* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) -* n_pieces (1) number of straight section per mirror -* tilt (degrees) angle between the mirrors and the horizontal direction -* angular_offset (degrees) angle between subsequent sub-mirrors -* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. -* R0_m: (1) Low-angle reflectivity -* Qc_m: (AA-1) Critical scattering vector -* alpha_mirror_m: (AA) Slope of reflectivity -* W_m: (AA-1) Width of supermirror cut-off -* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. -* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. -* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. -* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. -* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. -* ell_l: (m) length of the coated part of the ellipse -* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors -* ell_w: (m) width of the ellipse entrance -* ell_m: (1) m-value of the coating of the ellipse -* R0: (1) Low-angle reflectivity -* Qc: (AA-1) Critical scattering vector -* alpha_mirror: (AA) Slope of reflectivity -* W: (AA-1) Width of supermirror cut-off -* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* cut: (1) cutoff for lowest reflectivity consideration. -* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file -* -* %D -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT bi_spec_ellipse -DEFINITION PARAMETERS () - SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) -OUTPUT PARAMETERS (pTable) -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) - -SHARE -%{ -%include "read_table-lib" -%} - -DECLARE -%{ - t_Table pTable; - -%} - -INITIALIZE -%{ - - if (reflect && strlen(reflect)) { - if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); - } - if (n_mirror==1) - exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); - - -%} - -TRACE -%{ - - double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; - double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; - double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; - double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; - char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; - int i=1,j=1; - PROP_Z0; - if(n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ - mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ - l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ - for(i=floor(n_pieces*0.5);i>0;i--) - sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ - sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ - alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ - l_acc=0; /* keeps track of the neutron z position */ - h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ - - if (substrate==1) { - sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ - sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ - sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ - } - - - - if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ - ell_h=2*sec_pos; - if ((ell_h==0)&&(alpha<0)) - ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); - - /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ - f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - z0_x=f_x-d_focus_1_x; - b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); - a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); - - /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ - f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); - z0_y=f_y-d_focus_1_y; - b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); - a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); - for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ - for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ - int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ - int_t=(int_z-z)/vz; /* time for intersection */ - int_x=x+vx*int_t; /* x of intersection */ - int_y=y+vy*int_t; /* y of intersection */ - is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ - is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); - is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - - /******************************** INTERSECTION WITH X ELLIPSE **********************************/ - if((xdelta>0)&&(ell_m!=-1)) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - - - xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ - xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); - xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); - - if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ - if (xell_int_x>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - - PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - - continue; - } - } - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ - if((ydelta>0)&&(ell_m!=-1)) { - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - - yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ - yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); - yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); - - if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ - if (yell_int_y>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - continue; - } - } - - - /******************************** INTERSECTION WITH MIRROR STACK **********************************/ - - if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ - if(m == 0) - ABSORB; - if (reflect_mirror && strlen(reflect_mirror)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { /* reflectivity for the q of the neutorn */ - arg_stack = ((q-m*Qc_m)/W_m); - if(arg_stack < cut) - weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ - else - - { - i++; - j=0; - if (substrate==1) { - eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); - if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) - (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); - } - p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ - sec_pos=sec_pos-mirror_gap; - intersect=1; - continue; - } - weight *= R0_m; - } - else { /* q <= Qc */ - weight *= R0_m; - } - rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ - - if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ - - PROP_DT(int_t); /* propagation to the intersection */ - - SCATTER; - r=-gamma-2*alpha; /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - } - else if (!transmit) - ABSORB; - else { - p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); - intersect=1; - } - } - sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ - } - l_acc=l_acc+l_section; /* keeps track of the neutron z position */ - sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ - alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ - h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ - if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ - PROP_DT(l_section/vz); - intersect=0; /* restores the check of the intersection to 0 */ - } - } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ - Dt=(zlength-z)/vz; - if (Dt>0) - PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ - do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ - - xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ - yell_intersect=0; - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - } - - - if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - } - - if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - - if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ - - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ - - if(xell_int_z0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - continue; - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - if(ydelta>0) { - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); - if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - } - } - - if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - continue; - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - if(xdelta>0) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); - if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - } - - } - - - } - - - - - } - }/*end of check of deltas*/ - - - } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ - r=(ell_l-z)/vz; /**/ - - /*PROP_DT((ell_l-z)/vz);*/ - PROP_DT(r); - -// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); - ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); - ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); -// printf("length = %f \n",ell_l); -// printf("ell_exit_x= %f\n",ell_exit_x); -// printf("ell_exit_y = %f\n",ell_exit_y); - if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) - ABSORB; - -%} - -MCDISPLAY -%{ - double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; - int i,j,n_seg; - magnify("xy"); - if (n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ - draw_mirror_gap=xheight/(n_mirror-1); - draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ - - for(i=floor(n_pieces*0.5);i>0;i--) - draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ - draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; - draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; - if ((ell_h==0)&&(draw_alpha>=0)) - ell_h=2*draw_sec_pos; - if ((ell_h==0)&&(draw_alpha<0)) - ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); - - - for (i=1; i<=n_pieces; i++) { - for(j=1; j<=n_mirror; j++) { - multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, - (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); - draw_sec_pos=draw_sec_pos-draw_mirror_gap; - - } - draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ - draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); - draw_alpha=draw_alpha-angular_offset*DEG2RAD; - } - - n_seg=1000; - - draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - draw_z0_x=draw_f_x-d_focus_1_x; - draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); - draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); - - for (i=1;i>)==nGP6o~hxmSjCh%Ch{3((Bkx>r=<^v7M$p zxw-n$5@oZIL@i0#lDGNpcOH0=q8#VZHfL|O+gKuj!C){L3N*wf_IA7G!St_+z2Q*M!$ibE62vz_->PzO@mic- z&y%nRt^5>?uYz$Rj_2d6%Xw8C1mlq(zqg7XjgvG?r>Qvhrvdx}y9-!H(FQUIDw+&VxxBj4q)T_7&c~f}V!s9qbl?hjxW-SB#>55c_EqSE)SE z<0eePXv_#5EH5u^!}MDC(=;0SY1k9J>nQ96A{vNZ6vh2;3`mJ&o&YjcE*lXd0C6(( zdqH3LDYP~WZv1g7R$pqkFQVQw0YYgY=LBR`^n(cy0f!kzJqdbPco_Ad^=Motd@mw+ zK7=>oGVp=WaVkzkOC;fF0;o@uK;XFHfBUaqp1wLcJh>3((KH6UJK6ClG5pTz$!Zm0 z0j+~ht9m>N#~r8c!WVzm@tkTuOwx{5wb)_#rxy+T-2reaKxkFP{5n7ugda|`I>1hM zXSW1g@UQtb{whr|?Y@ ziJlLv+857XxFVfT0s|aINbJGzq=-N?7=*phA8Mrf(BlzIi$wTwAp9FY9QrVKm~qnU z5W6L3P8EOz+=XD=yT;iF=mPZH;4%q;Ul0zk1R@*^quaV7;PV)!QHWC!=CvlB-}fij zxj`I_MBvB65T?%a7ap)%5?+mqsEu>*lH|uYND|TaQ(qv91=uox0>U7AEU1WF2{W1Q zgIHV%tH_twc}WtOA3%(;m`(sb{4#Zi;brUt8Ux^e*@jndR<6C4760OXQLuA}J?c?U>7 zPC|GGIKWhbmacuEB9000P@IBFlg<@rkXArS_~ANF>aa?{+aa+65Pc+(;C{p~y3rU( zdKp}YFi7~2CmS>atzh?uj4I4qtRuuhVq0(`Z1y3{Q=E365kG zUo}n-UL=jz#7EsU>LTyyJ}2Fue%$M_h^SBcgVkqm-FHtL{xjn8{*r!NgDk&`#wie4 z5!<3I^udt+i;#Z)V&YGNxO@EHSrk1&u}&IQD`oj$jmUfy0VG;NdhF_q2RgsH)MgvKU;3qCc6yWJU_} zG8tgcuq}ldu0BKy_yHq1MD9-G5NJO(P_|1h&|$A38ER$qiyAgDxBjVn?crI;8@QG%fWjAeIt z$pMOA>a{_N5FoQ3gFYGiBUHg){pkWD(j>q^B0}0vlyqQzF^fSR^qClV?-rCGoclQH z!I-G{J_sh*7;p=yLhvPwf$RexI7)k(-_$~y=D@KNd#*+$_-k+CNKcF ziQ`pL*h5Gh7>|I;^31V1ar4rGb#)LF2XqT2C$3})E0Q3r})YK5= z(=85vh>A-;lqww1C)hUtpD zdWE|XR4))+;Mk!4=g_J}Q$EQuUVapTpoR=%n42jpSV|K4GawF1G5zFC3#Y_6$y5Xd zD@za$=h$D?#S*Dz&~W5cjCcy0v)k)noL32Mfjmn8;O&X))cOI*I?{}RIxsI2DTzmc zKTZte>SYLqpLH#IJcfo*`_^5QTEJBt_C>4ewyIvM+H6%fTGdudaBDPIpal?AeO}|H zN^gg!RFfAp5ex>n+mSF~O_{>>LX+5#JhlWJpwjcFW+MPH;wGp;i?-g(l&#Mc1W@%v*OA>$61Q`~l>RvoD+C7Q~6cCeVZvqj_kg2d0wNHZL$i%ha2Fli0KbD&d zk}kB_ixENImEpjENKL{^z#e!v0*1U*yD)12QBeS`mURK7{^ACO$c8Ay3NfV);f@j8 zr_BqfCkfgE4Df_DL_ic;X^m!x0*SS79+yO7n<5_)xd~x=*&RY@fY+a*stl_KjCc^x z0zwU^z81etzLK|6)-NCKu1a^)@P7ehcKy~ar)dw3QMV1t5G z-jO|f8tF~gA0y4Z z6aqK_aN^M9M|?+L72nloA1Ocr&Nf|WIY|mNPBmbW6gTX=8?Vu_HJ~LmQP}w6It~UO z#pWhVrZ^*slM%JikflbI*E85fU_;FVDL#NkmU@L097W>@*!`O93kfPaw5n?Hd9pz| zUJ;cNKEoJm(|Fn2hp&yxVRYFT!TKD;4Mw_#-A@`U(vpG$gVkr} z%9hd(o;LP)t$4cs>frF%V(F(1dVx#A4`KQvAcA-{c!oSVg@2C56VQ;&q};*H42h#1 z@is~0cg8GCx*01oYg}Xv=`{y@P;p6P=0T;w*2T|2`97=iY&Jn_;_5m4ceqNlU463( z%_&ksgYJ^%G__g#`_y*bdfjz!ZNe{Zks%e(koHKxVq~z$pkWLpT(qDiG-iqsbq>C6 ziV*5uko z)={aFKP#vNO7lIHQa`>5(k|KxW@b=8nzGoT=WNMWHb)TcWR!-PR28)K7zZ=jwye9X zmP&n<_n{-0RKT`q9bYqN1h}T-1jNTVHbaI8(PjzMpkZcpPPfbJZZD<1%r4I7l2c{# zds)&&mSb$%q)Us@@J@#w0t4q{2&1G%po z$#DUWPH=$%g>pm+tEDU=giaogpmUh+>FeY3!|uWBv%QO>S0{DSpny@MTWaa$8-?ax zuLtAKbCuqr3ik31lpl8|(;?_kSz&X+n@Z>uzct)a7Y@y4SD;}F7Ds`)E0x0LQzlYw zL{HTw9;YYvP?PEw1_buGXqUbcceJ-NP_QUUT?yp^Yfe4_%G4$sfvHZljoqNIDrr%; z5*)64<&(!c}r;J0#qcyV!b@`E_tJKKACcyV}kE=nNG5kKqj33o60 z0Lsms8s(3aRs^o<8Q$+WRhn=3*Bmn0M@&_yl@WH>Oqzdy!l_Eqrkdx?PLq@g&00_# zKx)S9w5k@DKzr6`n_o0ih?qn^O#pVd4dpjFQM7*ZS5#_BzrhRf z+tW?>XMJ5Y4aEkcH1IEzlEL7&cQuLMQ)&eZKa$NYE4sV#2pfkIvP~gAteAh}0QN#- ztCv{#9hSuRvPaJ)XC^0a-*x^an!uG+A)1@?XT#$^TlA;3L4P*6$R-zQbCEU|+2SJG zP=pAVZ{!dgsc|DUZluPI)VPrvH&Ww9YTQVT8>w+4HEyJ~w2?Q|6Su{9x*HqyHvVlg zif+^6-yV0s^&I}~GVZRk#lIcy+4d&=+;(&a3mZMBp2~^GD zWHr^QZ&2CIx+fd;WL@=_aoDcA@-M@79r;J%247ma#&oC7-+WQ0wsPeZ!rS+Bj+^}4 z&TZGXTdG%{{_yw)pvWy|umFR^Oer ztG~OO8=LyO<8A5h?RHar_gYO;zU|5HHFpVChm6&>)AS5ho};na+|bZAx3*dqR!!5& zmTA%5b~GlgDdV-bHqCR@i=|k-QCO+IBUYOhtu{5ZHq1Yb)ut!EZ$X*%wnZyXx4vb1 zsyoQK$DVzgY#NIGsZBI>uEu5T&Vp}aue#dJW#M*|E&Gx22V9U|ZJ=c_X+X^ud zQd=$aebaUBA5z70+pZ@6HcU>9U~{u&o_l)enj39Hxvl1=8B#NJKsjCB-P|;kb2oHd z$JyG*BiNteoS?N3)-EKl`Qv~%#6KIbjtX8*ANVKRf+PYqVnJ>4ANi~O$$y}YCm&E% z-9H9}bcGaBZn9$5rexQ8YOf$ku~c~Ly6=__U+!f^>k`((TihCSag(s{P@YoY^F~Fi z?MLw#?Ml)R7Ke9aF$BfF9@O!)EM~($`ICjCkWbBXr?If>G2L*xv)#tvkkWt{6~oa<+t>u8+oX`Jh7oa<|x>uj9sZG4f1pV}|ex&0#p#&xY<@YBou^s;X~ z`)xlMrheCk{F3&0-QMD()Ow^&_So8Eu`ca8GY`;on0Y|kNgJixZkm5~+r?d91`G9! zfZ;|AH(JRs7}(H<-58y6c2~@!UX<8#$$F}$oz+GZhw4wliL>U9-qNbhky~JMsApLUw08k7V8Xo1l+!j5Ye+iVPL1pt z3r&={ct&z`vW6V0n1xrC)qrFNYB1P@3^I;!mPMPl@gVMwqH&01B-)7r2I;_~ z!X_&Rhd+2{dk3=VMKWdY?&bVZAKY_0$JO^a_iV{PhoLF|5PH#idg+az{6{Uoqpj&<>U?SCB7=1M&=j zJ*s^sP@EBkK#?>xO&TuzAh;Q7?=wvViBGlevow>Ec!_j;vmhOvWwNpM5aIYHBOJwY z>GG262a$xi{L*%1pm89;KQZ+_hK3RAT{;yp+flZZz25eB!s_# zP5j{}$;iXMH}U^7MC8}o!!O&xGjk237Lla=AO`XHB-s(?Y!H3IKCEMT2d@g#iY^zR z^f;-CH&t)T=4o@z+=;K#qi7Pu5%)+!(bIZysYg>iIGvY(> z`|rk!{wYXiQN9OB;{hItCt(It^zBSkA2MjW2-j}oNw@@gU8*WURSCz!-oQUf7i03J z7yv*_Cp4ukOmxdn!m79$MwkB3URR{L23>h_RV`NHiZGSU z_kV!P#v z@4gd{$$K4M{!1>dQQS|&MRY;sq@b6-U}dAQI!QN~UY1T@op<*Lo$k@e!Qn3@`Zt5; zy4_m2Dr+ou#A+apKuMTPhV#dSSA~@b`3_^JgI-thQH=#Xah!K8m>{yaNFab8?3N z06(H5f^>Q3JIE@+ktofo^Xgr>Q-Xq{sxbeS#j+Wy9KMaaH_Tde;KpbYcUm%LSVeY9 zVJ=GY+KoLlumIJb5phYl01{3)S}=H&eF>_Y&yug zyg#{G4C&BWz6NC~7fC`E3H$0cd1l!g`Dq-^OvsQh0R^6;3fbXrSa8IyOLIRdNv)|; zylaYG56ab0$@)k^4*@=;ocExHxu<8+ZwB`=9JWil&ggS@A0wm4UZK*8BFA+rsI!W7 z>_A01)Q~3)zV^&(&wlNh+McQHnb*3uXKL%$O;fvRYB$YmUAt*&tJfC>^9zHya@8Rp z9a;OrU~XO;%r6Y)%8`dWcvNkJxp{3czc83zG|g*W+hDFrTC0&TkBqh_h~);L2j%L9u??%Z)8&UX$F;+#%Xgwgz}1 zBN58L2%ueI$r@iW+CiC~xuPUcfG1@n5yvX9P~lfq8y|WGG9GV=Cn-#!5elUubKI=H%6d3}uj^Pa%?vtHDPVzFsuCM0rA&O?wVUzaze6;Tu0x&YP5FgDf-EwpHO4e!zFr5VXI1Ie#zc&f)8lgUPX$43X~5v z$n1zs$~Y4!#%-IGY?i&}7>4U?5s{MJjZ#!$guijMS>d+ru_I9G6*VE`Lu(@StM3dm`}8Tn&h- zg8O21V^LqFOW3nb+6S|xEt8P=muNJ^>hn1A`xK~eRmhDREs3O1tV3ne4Ql+LTu~#0 zpF3IZPL;cpQ^)0FD$aqw`E<+80gpni>%ivfslihoUL?~nNzO8gp@LnS-)eu=w|35`Ng@1 zUzDx%BP?^FNP8h!=AxLi7mBnOl4UN6Nvq&Va0Sq0sXJNfj!P|NnTL_JfN4z6nh)$* z^I<(}KB#BSkM?ZoWOy*gtb?E~ZOanKUvKJd={{0{j-+xSE|7zsprFc;J zqfyusw{e&T@QUIOLnGZ2(Gha8tjNkVyo`spqQVp8{HY&(B|-JJShFU}7C>otZD*_G3c&xd?9w^&3-{sdgIyE3^$;`>Cmyz{2B zPIU*0VkN=+xJl~S9aK`c1+AW5nm&z=*%1|r1}ai=Yi8f1sJ8M5l-nPIF>+0SSug~} z1f{mg+XXLa`biS?LNd*A?ueAConxrtl)^cp&8iy>26%Ep5%YKnTY0qdNIidREimX~ z0V>ubSuDxFn>4JI2{3(h+Qk5@#E4yBj&LIF+fa7tt94Nb9^e79Ao_qSMzNz9U||n$ zEHds@ilRH=n4Xsujysx8hIZ^QX~n?f=5c}%BUc1(jwhXE_`pkBokUx}%l(6+^V8$K zU&$Wuk8ps8@#59#;mO|qKJI^g3@|<~t*+8|>2Nb$6>g>^H_Lp^UKKt3?~czN7f-Z} zM-?65fa;mbva}zp(r&Lxdtdq&zc=YS=;BqD@3aZ1l8RrYEf4*R->D>O?GmKxR?)Cr zMN2aN;}t2n*sp(J7`Xuvsge%4~PBWYvuyV zPYj(7D3c86B{VioP~!@QI_(ekrsg^|ciYPKb98(x8sf#?YjGG45sPu{WE#Zd%OJ)~ zDbH124Xa5}I+Lk?gj;vF${2clA^T9tgV|QLBA{c4J`59usRI;H4e<0j9EOt#2(Ng2 z?Z^ETYW^p7C)N?ZlQf#JY`%@+_t++Y{>e{3u!|o9SjJNE6EqHEQToltpvKg^9gG^P zoJE(=#%(Ycr4i;j;bJC(5gvODF-Zt)V&0>(0HMeEi=goUV+Qu3F-2IVtTPEHuE0x( z>6iofOZ}FzEc9f05}8W{7Zsb1CTJpdQst^KPhn-5qIxj%2_&cvcI_X|UcEjAR>t6Z zM=BEpzp}BigGtZF{)mGsW_y8`e5qYR88rZ|%fZEA-M&g2g>UeYIgN}1f?Sso;2RYrUO^2x zTxphA{(uZEl*+#>JVVY4zbqt2cl@Yc%smM!cBB<^A@sL8l zhds~}dh@ypV|d6c1??l(*FcF%K8b442)dJf|OkehXcI zk*b=UAN-tHQl>j17iB!p#M_S^#?j47wNmW&L)dvbbN>j~K9d7N{^}%o7Cz%?r-`9k#)N(czD=%yTpfT()%`i4#1i4fgE*anT@r87#(i0vrGQ`16G$dmfMe@by^qjhaxFV%|KdOYJ&No9E$#odsaST{?WUeuei+pnW z`ofA$xkIlE5*!^FDD+MU&}Fa6(AeJiYKmTlnQR@@a24}WV3wLh&wXF$V3!o{n&%=2 zeo)TW#2Uu79F2VV0$(Y?1MHoEwrkxra^ng>DumEU2*=7SVhY0ZUfPptzEC} ztSY3LoEFx3q>Ck22?T$LuhF+mcfO2)RH*;}q;R7qfGXFcko~^gc9@F1Bp7@E4iCHv zp89HvY{SnKCb(*0)Lb5HS#n;>Bdl1OLf83!8GjN=INVkOhwwaJ0OA!7S-(x{~>lwoeA^u$m)wB$ru*gkdYVh?v=5yrYpgQ{7J{0SbOYLz&qpyuy4fn2$impYE$`BfOlw zn#jqW4GVq~#Fr78Y_jb-4GN@tZV7DV(nTo|?9^F(mF*@_5q7yzo|OyTdJ8;?uurc! z_XBzi+AA99PFDX|ypX)(6@b#;mFvtq{(KR<9V(aW<#?$Ft-Y^*G`r!+tBXTWI>($- z3iGYV6d{Fr5s!mPT{7Ul%XDMp2#4NzQ>M;Mz&R`~BMgntsl?cYGYtBO*l(my=DVhP zCbdnuLJ=2IYZN*8GU-Osw1}7B1Jee?B9w{ZOUk~WoqUv4S(CjVGLzIvu_BTBF&XK8Ab zK}WA3qC`S~Qec_9G}uj5#3|z(3jPVY?;;~g`n<`&+`&O`sxoPV-FIW(QHN2Kv?jf! zTukABQevc16i?y^?U&pE$(N+Jpzm#64m5G(a@a=91wMw*!Ro;1X>wIp&?Kea3vifqvCWK;=z_)imn2* zNs{Pd2!Xq7R$OjJwHCsHEybAVz-KD93=X)d@ z=~O5`VTFo~o~OzAge?s!c~X%km>6rL8G3Bm%3#2_Ta{?8{b{kt7Yq*fh9l4DqeAMV z);q113Q|jrvS}%(%_=IRj#M?BD$^ZxPZr@FqpKUu)KU5>l_#YL{mYu|R+U8wzL0_( zzse;Vgw0A}Fh+4}Bp-_oS)1{m5Ma>mE!qsQ$Y9IRDccMfLTN8A?!oSMmF&?w4^NW|KN8Oiu=fEnW zB>gyra^w`Nc@EnV=-YW4<1v1A4`ywUSb$cwei6g4F5c{&oxlXy(RdGHU_sn~qh{+YxfZC9Qe)%>HMh0P9-L~s@AuLvnQzd( zGQvdxBxf*5Lfqe={L_&qb#HizWv+sK&TvRDirmkHv#b{uRm%#IMnjz8CPx~1(8E9W z=g802+<`vhvJ~|+(iK{HL4cMjc0shJMB?8tV&mD8<_BnLg_s4i+4y1V!WcQON@HiMp)2nNl2Iu?x`5?!h>iE+p z#M=-L()={y9>{W8!jLnPp@{BrDG%tWHDLuBZHKtgD=4JPEF!bsVX>o*bw8|p0V(w~ zI!7f+^2kY47f;Z=;D!~WCxc}ZJrwJxujNow)ctS|C7#J%e4HG*W$?7p&~k1Dx5``}=3MRdDIdmd*;_)Wnuu|623fA_LEBr``fOebVe! zz0L!(rT^!3pZE=Ll&g%QW40>Y$kaKHmtHL-p8Lek7qOguNsjjjq$3-fz)jc-C>*nI zZqm|Qn;)p=myp6tK}KTly%Uu!2{w*=0+71$ ztWPG<#@(5p%%$gy3>1#5Ki`j#IKhtUM<`8Ro4D)M<`ZpuPFAH=ER)#z6uNMwoM0s0uuap>e$pbVPB5_hvCOq?Y)r7fA0Zz-raeV@ zQ4~@F^dVYw=h#zFtD#Kl-YWr9m*rmSzIEQ|amdUGc%B~=ypfGAHdtvF(LhS>Ph~bP z)eUJ-9e*C>R%}7*E)}$Z14*nBQ3W;&4(t{1A?ym=cV%?-F6dL3?~}f0j(WtyYkXKT zxaeulZlz@XpaUp0m0%uVMV%5_LbJxvvM7zh@id_h)ZBO3;U=i}45cH7(&3>j@n))G z@6R&pE0n4UxnuKa_FT0#gXIkF)YH5V-YT30VS3UxE>W-yrT4#yYB4m zKv7z<=G=S9Ue}dsSFKhv`z*YrO=f=l8&5{>l*IslC-0Q40Dqz3oEjQW@jvMNrm`={ zV(AD{67G_ciA8Qo3FP!Y$YnF+c)JZxsXv zH}}$Bq?##$X)Djf06R)~x=*WIMDodI-5abf=+ny?hP!_+TD*#U6|{;a=tq#FXSk?M zM-wa54zKup5_dVhx`Hv$qbO%J>e-&|Kd_LhPsVa!_tA#= zfK9@(rk^-oUp!f_Zv>0~60e0-makP_{ua2Px*$Kz4p9C30Y9nB?*2M0w@&t9E&|J%{lJ$1+bnb|e~ zv^AfdhS%tTwQ5eI=y;fphE-8M_FX&|ruW<%)MsZ*lDU2`2VKFs9GX#Y5rbj`==jn? zKsS(wKgU(g0x!vQl;~q4byfo^RD;j-P?uVEkSD&E1S_5Y7c6nyF6uk5-P`8s0aOdLYgje>UXP~zl_rT)E!8B`4k@^6VfjUYNB7-#aPU1xideYe z_~;Qnf{k0ZANIS~ii7wuy1#T&e7bAU;)eu71`DIIFgv?_w94Za!jztL>BN(uK6<3k z_@Y~e1m%&m$P`}(Ap@0kX9#www1pq_k73xI!3`dad*SVqU2E3B5ObilekA>P6erTv zLnYO}x2nMUOQ!Wg?pv4KS3ze63!R!Yz0@AUie+mOv&L0~9B$AverDh2rGX-kum(RX zRJ2&(@=6Wjm@T@FEz$|NOdbsDmVLH}TfD5MLsM1n8!54HM)9HdWxfxcLD9`nz!Gle z(Fe^pc1>cIW%r6CG2{fNRpdWaSePC$>y``Xw z%3z~K(a7)HatBKQ!L;uYxxV4C8i)cq#nJcO^qbB!YZCy^LGwK&dCws@o ze3OYRg2TWci|IsZjrJKG?_1&^cWP2LI;L&+w@cg4%^hyXE|WUe8#nU?4a)b}luS^KVBFUxN4eN4am~55Gn4GMcX@jZJXz;;bvIktpV9U35P7a(2dKgv%l?R= z4t}j2mg>@AD(I!sTgl8d#(VAIxU8KlFer5*9~#}AsFxw8)Y6Ip`m+Ln@bIGmKPM}S{dm43l50N>iY9`*@`o3N!hyVFmb?FV`bOXS zJBe;YyNZ|pn%1>H3v+mS7EpBD9Z4}*He7i6GiSEl!7y#qCb_5%LXO1Ex57fY@o%=Ko-lbIibcytq98PG0MtdIo%T#;(U(l8udJoUy~b|sbhmcvZwt!I$>l&&Ehl=#)tj#G{U zx(jMYnw$8s)7h$TYy@tz;kD}7S8m6vx3Z5sctk0LGf$hHn%k_`>a9wN+OD$K|a zW_zO*tOMOtk7P7WRnpZ(x3;{kjr)pvvgl^r*>1I)_Z4mGqTaUaZr)dP!$56rH193i zGDSTn*DXVecE_o=x3;!ho9meFe5Z( zt?V$IA9OLsLkIb&Q7XCXID*JI70Gv);MOab%N72aV+&u_j&7~GO}p*})U6`3lq>iS zxPo{D`>cwU%j?*oih8kaUhuK7Z&pfDvd2k-G>c$qs^J-i5t&L5` z!ynFK;U@WryROql4)Z+MZEodC`LBk_KjY5!#&*3?0#1=bZjZb@7EZ;hSGbP+Bjb}* zkR2o;aXg!49$GF$gY9Wv^HAnUc5z@nXISkKjql1zL$0Fme>s{Piz0RI20$4nD79c>z|8Sv0MDhuPA&h*+YTjKH&CWS|IM_L)2eB#GsD#W2| z>uS#E=}`fQH5m)go>Q3u>vn;Mvj6PU*#GN~)`K|xlSZb|5I+SI=HfV@JAyrw-orWU z3wU185Itjxe)k=WR&I!NG=CmTtw0P${;cFwX%&RgYIz&mpgB{cS#zW z?pP@qMw37o@$xm%AS~|TCM@ma+LFeya2Dkn<6JAm`Qa-cq686z$)KBwIH}z$r3ZA$f9}Atj$Ph&#@-JL8mb_ z1eK4B0Vt5J<5Ye{pPhRP&bZ(&3-M1CCoYZ`ptEVCgU&^mvxSo1T#~tY93&L5j3bNk z+*D;(Pl8*-$r@-3(}qWDt5sOv$6}A7-~{8U*luhz5Ou5DCD>~R?nYy~?!X^8>KTeG zRjG+0Re^sLslOI|isW1&z;92;b;nUR{ae!g&zE$6i;%xX$X_Hva0~YDFGT)Fs1i9d zEuSl9w&tI~8EA0g057q*2Z<+ncosd%i!o&*Se^Lep8q~reV7$zIh#?y{C{)i$}Ca6 z!X>Kr2}@M=a8r`!-&YZ*?tanKS^1i3xH^8ge*smd$$M9a-Z!^;x=!82<k=vES41dFju;;*zO?BtnUi>c-5P&%tL(^qFi$}DgaCQ`OuF{d3}(N9w4?q(A=p> zGkq1$8qMpPdcSVH&v=@+bvljY7Rn{{#T*962dZtnckrMwU4E#%%rNoS4{Xsvy>U;P zJ5QO+>*x#8Dw~^0nwE~!l73d`vZcsgi;g^6=v9SJ4pXdoNFqF?8tpDc*Ot=G(^| z&hU_OW7Bn8bi&r&ZnwSdN=P1qUVFQ>;TAcTxlnC;%h}r6+*Pa42kGQaW`LQrhbtU3+^%NhD-QC64dGT*k5BKx{J0 zRAi*Eaz$MkV`yq@7)Xcy1q7Sf_pQu(K)S6$V4zz(>WuOpvx>m%i{~#~nn}Zjds~wZ zt`aSF6>R9huXf)kdp1nwa7=KfV@eGGeO;~2)EYE%Iy0vN;DD~~W*&m7>{*pF#wkrQ z)@zw`Fjbju20_zNRO@HXQ}mr};jPe_^Q=QfR1cwyTCqulN;G-s z(jmR;kqf1pVW|CSdK?T=_;W_SgRp8^9=RT!loM{~GGUh94fUeMzP7ep##SpixDQm9 zmOBA0GgW^JV){PcpkGLID2X?=y)9>>Nbtf`@-|!B-ZsuD*M;(y6v()g zLs_rhYVEEpNJWqkp1ZZhB7fW6*lK!3{=hD|1GD$|=JwX+#?q#+tk*1%fgm~;L?hn{ z*mB#=))qUnJ8jp~Lb^bXZ+2>1c_?j^j+ThcINrm{t-4o?D^+YSP-Uy2jqT3zCh*a+48z+m_gCe-*K3Q7VZBAO&0!Wh}9_ z>PlQW<#KN4L501-!fw9s{laon)obU3<(7J}UCu*9S?P9cf$FfI`$8#?M&FZ*9e$TM zeyn1X))~_$ER~&;e!sub>IYYs)6pf)Sk}jJ$pBt%Q3L#~0sB1s4+Xw0@pE*kl=O@( zQ3uNvIVSq~I(11thE>L`$r9ykk*0a&nO6_leJ}UZTE6=H`qyvN7!S3M{Q4I;Qy0?a zQx@iLfRY-OZ;P0QLJwxk3tUB9?;9{9WYAG`RlmOp@@5J4DJ=W#P&tp0B6QYpN-^k? zA;?{I;q$TlDanOfwo;}}t?88Y{;h%Un~wf%-3FkV+fFTe{Bcjszit|3hWcUCNtt~) z4`c=_d9nH9mj%Stz)=9bIe*qPgU>t20(({tJLniT=J-rm}9wlc2hpbxa$8{3=gpv~nr z>zmD1vyD#dE?H{H`ycaaG^-MLeY;!*6?}7JqlGtG9Y?7{c2DenD*tiN0;mlv(18Aw z?TYzA762|Q6&f0E8#=#zu-#WP&Zmf#2XWg+qzGxaUm{8VLY{LR$#b|BbT+ow%|FX? zz+tUTZ!5!dTi!;?%kmsvd~LTKo9CMKZP(d$?&G=b`c`{;Th^-9=w?CtTjIV4%ep-O zS#@$TD`@4(g(a9$R0KR_R#6E4>L?_CfBvdZKK_pt3%rg|J-$X8_s9S79M5g$aIa?o#0dy87Q6Nry83gv&zl>;=oL9wJl)Mi?|NP>ZK>I4L z&5oTXRmK6zhyJ0s#BVeQ=|Dg)DdGJ#rM$Ny0TKT28+}|TSFFmmQ98X2hv8%*o(J*x z+K>BbxvJ8nQleGR#S_e(Kqj}_D1Hy^1E8P$Wa7u-$KV#qik|=tpik*He@ra{48Q*y zaQlb?#b3^WN|(^YZ7>(55ur%MxN`?MifDVpctNnz^mJfb^1&T*QU{8Jgu5e|L0Tpu zi81K(h+J+t=e?Du6X423?+CRn_GAEC$_=Q~F6zKSGUvLL9>gR~g;C@r$rMSHv;SJD z04Vu{PEAOA5EVmE=g!q_>5R;n3l#S+eev}2+4IBWS8tv+E}vQ1(=lT+22>h|c{CNb z{+Lo?Qk@KJsJ{37)z62E)vGGl5C%~4F;}DL2Ui$G(d32ZoSgrS3ByYfuKKqjRv3c< z5%f5fDnLsnKo|=DkNI1oUT;c?bU|)kV(f2(q_e@BJg`YXb*k`%rr}dxT*twnvwEGT zlVqpSxPm&NpL&z$C%VYCKknEv6B=3aQ5o;Dd5c^ zrWSK%<4@Pl8$T$@(+l)LKcNvNImQu`3I1>_$n#s$Y1QNft*Z!JCR6D7;l+6-VysHr zJMz=swM;9TU=%DXU2~-3LYETE-tE7~fur#77`J&kR&1;~05GuxPI+Ww%9;WLlVGP% z8sY=!L9Fu2ViH`Pk5(oIzAz(ip$~m|b#nYGNY!C*gB*-|Z=^stE})p?mxLkeJnq)m z$heXnr|wnxoU7|}T!+$$Zh%TJ^Nn_z1^GkWayHkboizC?HQ_Kjp1iu)6VDG%4#jPp z)-^v7fpt=76zY_8zD>67fwCBp^OuA>e;>H0HY&fUH9-zzgbv|bmY8UDJ zYO;_We8*0OF0*@M^7HWC{O3A=JS6}fI_CQQ~mkFmEQ9f-6}Rj<&sny4Ix~ zur zU7WZ2YS;QQww(7an3xkUh$u+vx9o?Vw{tN)WpR>b zt(VZ!ECD?rZ! zs-(|Ap44B|V*T6_td?FmRXAziGBWFw0P<3%Vre^L?TX4)`<0W`enO}3$xZv3ly&)- zHRXE;(oRpC&C5&OTsvSTLk;cl78Au?qDes}QIuOuZB;O8roHRj(e7n3*{#ZTo6mas zfRwjVm@5`qv6A27D5y0`rC$If#;^rhc+QD&ua;-Vg`Z=SZmsh9d2G2QO6My1sUYDe z&4ZbhFJq>XYvbyp)<%_7LBsJ(ZI!4GMb&g63Fm@bx-Xq(%G3m9MP{@tN~u{SrtB=6 z7grBWvB@6*E;k(H0H7O_T7b;ADc#0Z_D#wWNot)nvvVt@ZoaC|8)q`*xLLSWx{1YP zeJTr|y2+xm^y$2MnH+RhiaV)Tnf!BhsyS^)ByOaA70C`c)zGDZMA`R7gh(-oBV3w6 zw`S0oY`LP-7d)ZWSZ(tn#uEL@v@RZsg?VwDCyWm zBojJKMwHjBK@wtJilGN(BEwQjUw8%^r|(rlJM}P=jjw`oXh)|}!5e{}l0iFw70`_TYNmyxs>z4&Y7NmEYepOPl+BU#dTtz5{FR+J)5tQ03iD@caMI>wi! zJdM}f1Sy}`DCz@Z zh~+w`6a;?5bpVCZMPz3>T%O*Ga-Da1{sWbmN0DBS=mm)9lk=BH7nE6RG4&TceQ44z zD*ScReF@I3g|dwu9TmK zKHlS8Pz!moYF{l;))(f<`VChJOF{m~ZRm)_vDq8Jq2u1Ig z0LvuT`igMxMUs+s-2)8scNt*T%ziMspVorm!v`c5TcFkgV6Zk ztGWMt#Q$fr-E3~;{eRqM`)~iBKjZUF`Tr>2AMYFU{V|i`0V%+=JH^NkhiSAk@Z;<7 ze*yzo z%d25@34^cVz%YP~GC7oBuCxJYZFFX~*xM$6`_Ji6K^sPFdkU|Bo2qmoPv@y~%C-i} z+hsH(=&eHJ92~gwU}Ay86!r-6#*afEIE#@h?wg0zU-eQ|y$8D+jAAnwPG>^Aok-v4 zhFfoMZ?)brqlVGKp|JaK4687_K3} zH5^?fex)G>5xxu*&V8)^e2#ty{&bj{=?w%){y9afO$k_K)|ex^j01F}U^@oQf1(?- zjvfI?2*^oiqqW|ANGYq=Xi(OeXVz3_=`5gkO%^pGGCR?5DTb^7B@;Z5&^48l6JUog z$UN7FH5Rbb6=^BqGe5*@13ZE+1V?&;9kL-DufjqBdKTO&@foPZhB4j95&?J$d zAkEGZY~GQiL9EF)W#JLXdBXcznpEhNAn#bnG*=}LX4a?yn=}~@4dzsInSvsQd$4ie zkNZL<8bT1ZU?3kvm8~Uv$j^S1X3Y{KSQnt445>N=78+aLV93tWbwxXD;K+n{m=GWZ zn9O*D@qCIFbR)|Vx|vGAU;yiq92*gF;Ay-AhAvMa;^#K^BJA`w2+)f}wR)LpjOU1N z_k+Y1ll3aR3G73AMj4sbj1bxvFR^vo>h29_oX@ih#H@R66AKf+Su zCz{#rbKT=I$gaTv)PoRh_{I@$?J^uEa$XF>QJBJy5ewaz?WCOBlgQ@}(jX^Yt4I*6 zjKX)Vx(4fvga)h48V&?{nGSH##?5jmxY}Vkjf)Ykao7FuMj#R$*8y0JL+5R+C0g&w z?Dr;}U%7R(;%ebjr875llLV18r0HR>N6aRZ;T(HF^M~bhDX3r7&D}|mA+N{p$IldwdKj^9qA zRNp}iIMwG6hA6cg0~SGHNj|%>BJwdxRJw*$7c`hq>?l{8+@Q7J{H+*E+pqAp4TnP*s3#d$$8hZ43nH^Ld(Pw_0@h8+_Bo zB&hKoJ)eZ@yhF22Qp3EmH~c8rd?!HYp!*#^cqj13gnqm@zUaQ(`{f;WTaR0fqCX%6 zz~crTqG~SciTIC#b#o^hw4S|(;_taQwxSVvf5#xQ=;0cCHJ5&K3K)P2enwv9yJ@%n zjl48v3LpR|kw9Y!R8Q`7gQ)66L!f0sLPvLl4zaLQ%MmSr&=0O~@&aMwD@@D;orE7% znlDu`qkre{FI9oLA}ipDBWx#duYvP{zEay;4tjN~Vp6^l!g3Xh#@#W=jd$pU*9R>+ zoWY(T>}SRR-c5eQ=Fn*={V(!oFP*cFK6n zCe~1f!lrkK{%mqmYTpbc$4LsI<1{4;#xH0uhqgFxFu97P>KYS0SN$I zO3@9|a--xL1P3aSuBFKV#DG`tGr%-CBrJe?XgBccCJRlGMnbz$6uK9dytI+~ zWZfizJzfk^`H^*addrg!tNq~TclK+ow#sTe@r9ZAh6q^CdcIIKnSnq6d62_WIn$m` zLRAu{JI!zbYKkeT{5th{un`fWMBbeEp;gs-gYv?vYz3vVtIt$*5=MDan(9^^lKD^X zo*73DH5|AVH{vJ{!n`QW8h2$relW_g(vT%E*w7Q%r9fK%reBoi_X3mPP=e7vuH8La zpGSJP6^OT>mvv7-KE3OLfJo}Ep@xza|8jr#es6xT0DAOq(*nqvlb@jC!9ojnZ**L0 z6x0&lH@O53zb$M0CRS(%-f>fR#|@bOfSVXMdZYjA!6cF8S#Bpn`2|A2Y4NH-~ggfc=(E;`ZHmqp`dw>z_H`r5o0^=V9l*0g5hpHewYmNC}zE;O0 zK0F&n8t^IcsRXC)xvY)Cap%S#PGN^7#eN-~i4%z_X*)`qzaly+QEsblO2Z*WzDz{% z=S_aJrFDe-%cCKThwKR}JyEP(|D_rUYLcZCXVg+XjZo1o{Gk8;$WP^6G$e*n*i+nzB$p)`rShLJ&3SC*gt=l+f@tRy-H~8Vn;p{hiOi zKFE0hf@_VP=+#yiR2UFyiM+`*!Hviugq|8;ptIAzp7YM`sBxhue5AvL?yS!_3PCoH z6C*n=X_Hnoa?n%S3GoI8_^2j3tR1XMzlf(|L>oQvi+CpRghzr^d)37c?}*V|VaZqlF;Z810gnnsoC%O!tzdGSg@ghMSwnUl-3D>vHMx*jtmx0sUWl@4 zI??wqG?u8umNn=k?Yw1))M0Hr;`#A{HcK?(L=(##)Vl_iuZPwRx+%syD1qquY%@~L zLrqr)Fvr$qZ@wzm@Y>q!ieHOOnOuMSMoTijh6=x`0J0x=g*%dH<2EhE8 z1g4%Uoq6H254%g?6I}o$_#_zj@z$Jspt_!9W+-f6DV9yT0PQS5RYEyES}S-oO|PPR zIZc-!PAf_7Ry0yt{9^sr3A^2B3moq9+1N8nb9T^zU4kfS&}KiOTgBCNjoWT6n^OH9IfB5Tb3jPRbrtnJ=J;VQ_Rdf2V5`Ac&CGg7yt zJ@K8otNW>b%2|llf&s#J!6=#R^1o^lcf_jM{i)TAgX(3Bfz>JX&S3S=*Hz;cP@H*eqaepoa49zml-d$cfsRfB*-d_ zTK6sbICPH=-qq9V?&Ny47#DTIEDaiR2!QTx(|K2wqu@C((yInHpNlu-;7b{0*1w{L znCR-#BHoCHEt>_CP7%EWYheUN^3_ICVpa^AbaFC}YjY;swk+^$_DslHo;{}Ji`C0V zODm!Zcr|;(lk)i(omlu3c7TbO>!#&Ht>)Uvt(@^cazKIGUl+$Zdd zBqt$Hqo)iiG}FikL6_kSz`RhavLh_&+*F5*H#lTcRy9~Mq1G~oeWi+ZBNr)kg;4Is z>42a6&(`kO9BxD2B;G*;aAO9fcKww zJb4nXR>g3H{!K&BJ>Xw>T+YCy3pG33drPR|B|teMooHelDL^{oMJuvxNVk&l+zP1D zFl&V6ZGy}xvWhamI-gD^s0G?VbPAkR)?ib=CdU?wvVjk@*%6)W@*y#Wx6xRr!vyOt zI*A|xomo8e(BHR;=t5+}?5qMpKv(>Mwgh;vXM()!`x836e>)FQ9bGk*6**T43eVY9 zr4EX{3nVhp_#AfqWOYG!DiRKW)IMODT}S;o9Sv9WI}!gGP!nL?v#aUFQIgc`19@)# z$@AAgoU7w%I%Zb;Mx3)(Q_!2~q8>aOStp&K(N4!8&!j^IUiMVSM>O|do?^5tP#owa z34}}!^T46^1S$>va4-mBo~#6y)cP3Lm1?{*}e(A@cJh4|c9F zs}2i*FMtu>Qw}?;yeQq3i^7Ma-|G z7Zr6741#A(a?2W3xkeUpZ;_t{MqLrLDD@xgM~iw=5d6vczu3&_VeDEJhd_|OP6y7QJ1j1 zFNftRSj{ho)l{%(>C3`9VFQ3Xe**w`g6CT0y$6){tn$qVly9Qg4ah{-wcIRzhgpCz zQv$wetQSJQGZ&$fJs3{uOx1RKBU@Kp9R70}0;2@1l&F|iS!W43^N=2D8=E8Vi6kj# zqPW?mX>4zVrG7m#+hEILH;!)OFb%MhHK$dVvevry;Y46*nLkFyeA?eT-hX|(cX4>I zuxuV2zBp%er@hoLgh`-@_alAw?6Car4me~L`*0+m0YJ|)Uf_?zF?#2Jnrb6M7>)ZY zU-#ldV=;u0<@R3~zi5SeOi|)kH(agS54`+?CO%jZRx~2Ha^hEBJmDJ_z}*gpEyB|Z zEGB=?O$XE}rJl>j zihFf&Y{+8Y3}{Ph&H~pmV%dwPdLjFoQs~Q$?3lg~4EwdK0OQV;F}4%?`O*FJIFeqa z`<6Gg44(aYA)wBG)B&KLgyY^2Jt9`K{(Y;NcNiB95QLT&-=PsI<`Y(UgBRj55vC*~ zjt{zW3U<>u=#DszcQdcGZxt87X-Wn54}fL&FJ7H#A%l;h!7fi({Mz@^B@w7-Uz(04 zZ}*|k-RG}gbdL{Dez^FN?mq*7-efLHA_|p zSB5MhRq5cS-Q-f^B(-Y7m7pY1_kt5e4qyNTgZdKN7ht0Y9V_7(bD3)FE^i(xXCflu zx$HAhlb((kH3M%1KUJ=e_cfk1cC3=TBT4t5_EkRGJPP-_@13Yh8y#o=l%I3cw#fwnFQ^g7mEXQJ&ue2dR_;Tr{d*0dUg=!Y+GOlIx zfZ>8dupWq#epVLzv^SbqPXR4wb?GY->1FY~fh=|eE}E{lRo-2Sif2&q3Q+M1+w+#A z;uWFdJqVSiL8V!MO0%%N=5kb;MW{4$s32ppM_sPT#X(py0EYNwBNcPqQ)`JFc-OSg zOYp!Chy1JC8-ilq#jrFX#wtib&rm<4NR_|3usQ<^iqdy>nW`vi^gC=owTB@r@aH`t zx!(9O>6@h|NqI+VWKSq7%ardNuuVido^VXwh}@h(FN%ifR9|CHi4Z+X-Uq`u6}Uyq z3)&v(q^J)9e_4nn9s(1*>w`5`UVf|=xpWDKdY>>>a%Omc>R5SSW30TtV640)W7W)$ z)#5Z>GKHI;Fji7@H2>7GYJQEeYW@Xd)y#|)t$m4)k+biDjJHm}M^&IpVZ&r&O>_*b zV(m$}EWmL7{<|nH!#3OdO0aR)41A+PeeQ-ymrkQ*^1hIb8K{nIFu(RG<16pR>f&gO zE(0kaI~kt4#lP$ecP$v^D&jg-Tr3q8zp`a@@D&c_G1V^-{-Ilep1aw+jot1;6BrM;As`E8p z;zr4HA}JCk5?2~`b%n;y4fxS`5GYq78eZ+) zLx<<+^%0Du<%AuI89n9c5TretZ*$t$$_qLa_bGR`O!i9?UpqtOduN4qwaM>W{xf{% zuEbYeB=W@2sdT8WsZhjfE@`SR*^H?9v|Ge5OX{c@w)?OFQ?Zv|YdaYFR~+7pyQ@uZ zmYi45GBRB~T$J|Ko2wGLTCdL!yRTlnSSc2&hjARmJK|S7(!`q+X&Q_sY7}_03#FvjBxausXTK z7Y)`fSWu+#plsM@*%rD-(vB^#nDrp#S)J+W6A*xasuno>$;6{PVE;TxE_nx99r0=h z_k z_K#FhJ(;T~#jB9=>|$muJ=Ro(b?fm0t4o6cv%^Qs9-6GSGqMNF$mL;9-{RCnr zsfT96Sp3ql%tDqXiauE{LevpWS=K|@uD})q_Rf#x0-$jt@q+H-%DJ1?A&M3QLT3z1 zZ7;AQk6P4ysoa+U*+ptR!;~n%siyof2FFl6yN(x-U#qWav4dvHiumPM9+6*u1^Pp+ zrPa7th03jU*D|A!vy?Ld4OZGEUe0^%IWXc?W`&jkwF;o~gFqLE?#sRNi^DUz^sq!1 zWxo)zhfTunIO+#ozJ7zG$%(T21TAXkoEs+Zd?n47(zzpzt~jQsa?_|Uir$PEmVvJ6 z2P-=MT=e*o1YU-r*r=IgABiYkQutRL$AYfeDb|VEGqpfe-z&DuyEK4m>B^Yt!|rJqd0SD;@43JY{xq}%|AM(*heIm{&J5fvkSc;qA?(hE@rU!p%K z5Ei#_{l^RRDmF0dl}LVB5=L3ZTO8sHSk?}y)wz!Y+ zf_(d)B8~0&#jCT!?#bcni?dfJrNvW{s)`Fym5~|XKll!dp$UcnD=#5M;&_3Ef3!B- z;Fu`!2nnu7pQHlK78$ofZCWk%U@cVs?xKmj^j+$}@}FW(ENDdiTSx*&{r|h{C|h=q z{6e1HChMl{oibGc!gVLna31z4glPtR9WPbss!R9K1#oI^ZV#>ZoLP-hE~yk}*!18W zw`64uZj3ro{rtzh)5Grhf4$y2JER5mLFEsQ&VPb|gCUbQ4Q3Q_i!MvRS2;#{huFYV z)ro&aN_>PRC_(_qD~e=d54WjAv8m}=4tY4<$h&8_cex2-I-8)ofVY0!mwR89FPfZt z$H%YUbf53-|AbNA)l)0tyQWf#8BTaT{akmjiw(2@U<S^8LYMU}_Q(G=Z(hHuINeh&jO?sm;I)vzw?#ya||_Qfh-RH>Kw0D5;PO z2@^TG%kVh=uQLo)Al3zagDnHXr|;CrIqk{2XC^s^&BO(bF023+%NrBRgGhV&;~|n3 z`IYY_>e++3w*Tuf2>XZ6+~<2I z@IRir`dZjM)KF!~L&x&@t6vCtycl;6-thVpP#&0;dB)VN8CA}{ zpWE-}i|_C3_qdZRe_lt`bt>wuzJ`TnoBR5$jSDMF7N>`=33Adrl(RmW6Ja3rT>nJ& zrSgA>GGf~`&Cd2VV7oh6&PLGtTXrqGa#&;A!7cBP8&dhz*d;Ml#-<&aU}52UGA~Al+Tk4l2QP3wMk+OJv+29aX_rAxtV`6J-x? zj%M4VnUEV4>;>xpl300ak?wGCf$z&iGboq6Z=a>p;!0}6a3l;T7ad{=tt|1BUW8Hs~*8l#)H zmGGQh_n(AhGd2t015{4vCPouySA9MaW-}$q5*E-I>AWCYEv%JXwLhOAV~eHgr^?j4 zME$xl^kEagLg$ktgx=BS>wc8kKdAIKQ0hg9z6R*)AQy6qdVzsD`=TKf4-e!qVt&!{C;pzF&@vD=p(D|HMxM*Qms!^g} zG;kA!Fd%k83z@m1xufHnfe3vc1QV92R*-i|Yu+nm%`LB!z$*9{HK0uCe`S6t2ib|h zgjKtR?`HUJR{ZV;tt&T6UMBc5S@Lp@Q0GgaVxq*GB`*_vnJjsEhfwd9K)pk#OI{}U zGFkF66(kZe?>?w(Ic7%x7&LY86P7)4PCq6)iRKi1`pxVotkpJWsD{NslxpqzhT9f= zDJ9#(ib}}kqFaW88Eib2g7_!zXM0D#5Rj0=?F2I0o)#UL5Nd*nj|ilNPTAU{sgX#KiFtg+h=C%Xwz%aWSYw|B%1oXILFIj~xc`9Yo z;#(5Je674LtjKI))bPq=_{Ss!6mwTBQl+4^hODB<^JsxGPv{*k10oZ2gQAEeBg^!_o4{i~6WA-jbS3q;t%r(}@to^%tGX6qecC71hHB}@=O z_14#SDXo}nUS3Y=xUyk&C}MYxmhVSjmh0{jB{dVvlikUU;UjC1BpoaFWJwd8hS5TI zY5F@^T>Wh{)GoJN2TL^7A~yB9I$qR1WYYoEvRLK}tS%j1EG5O0D$jfP!GYJ{eF zXLkvvG6$eS7NM?p^f}HW;$KBbMICycB^WUxl7mmb7?6hDXna|ML(*ssSm4>hzR0#d z2uoZTT-X#&0_hPCoyqHI(JWIbXJ^n^?_>?iR%z9hxfmOj6-p3@>cns86^HIk(r0G^ zBcyXf(il!u8pe;&NS(M9rho(_SP%?}OBOl3teac6$8zbkkh7ce0m_>AR0_aHie)~B zwVA}$h)CYmSqK+~Ls^YfNj(r;R0&$-5(HmT>`}(V!h!iI6G}EJ=&T~ca-#d$Sm$7% zwGSFq!W?#k4Y~zx7Fo;Rbcu>#+1@zHqg-aI?2^g;j)`z~Z# zUj|#W{6SmU<*ERj^8R3pwcmTsd91BF#A*j;Hd(qyMcVlX1cd1p!$EepMzyTnY!(k0 z{tunOijcDo>ZCi1osUbQ$Z8H<@KkA;U;suv8Hi89I6KT7MT;*yi?-R@aQ89_(f&Bf zP^PNsu5IW{c$0V>X=Q^_1o_Hc;q-;)dp}E$3Uc>xaxC0m_6}6>CA9cEq2$9p`TUPR#Qx+Oc(;2H4hHD^_Z8AW-k<-`X}2+z zNGAWIx6yL`&j0vleE!h|;{Ec#7fBG1Z_I-S8#wAI6N}a3eoa zbZUPrPC^s`oM+>wa3qd{0qpt4RjcNwWrM`<5l06g>yKU>f#P)Z>V%%zDI8yNipG~w zeC3ZZl9o)+xJAhO5_=b8GcM*=gmQKIpTJCuDu?6g`4Kgv<`)IMBHvn>qwes0|Lo{g zqeItMt`-W*ykv<01ZB`)eR`Q(`|(716{<@cKuWdhqt{|D(b=eQ!N+7Y;q1B|*W(Q(k!Emh22(<+N5Q>a@JzPL{H-@G?bV1X7*O zxl|B6{UbiIqJw^SHd6URSDEY|{`HtHCOM=Wp^y8solRa&l3>)L$Uah#bxTP;_3jdN z2MJwx$37Fr;9~_ZsXLvv+WlA91F(eNIlM@d9^~a44}*+UTj~)xd^WrbXQUA6Lh3Squ z76{uT_m>ITBV&F3x+JJ_+e82G{1yKey)H%k>nrt582lf-*3G;i9i|28E-l>LA@V=A zXzU+7nu-Ij<%ZR;;#I=3>xb2vzx@#=G_zee5SM9+*gVX(IFx?HqSLpogzC@9z=bye z4d=xxyx#{Xf6W)nM}!Ill*vpOjgTi~(sJ>`NsAD*Ejrml57J3tf}iE4SgtqAQ^%}0 z%ML*sUkb%uC;5;}ph)t73LrP6#1VrD-g7F;kEMy(k^6ykv*rM=%c4ID&??IsTXvKEnp%QuU-qhz{7FCK%9g50m%pG7GSwI zp`iNH{zV6EIGr2fbTaPr`r-)WRAqjnHxt_N6W6<5UJb;x+DeY8gPd7dT_$$l(CLMe1r&dP}LMyBOb1ZHVh_agXB% z?`UVY5aWXtT2F?<6#%POKIzuLJoNZp(J0xkLUTV>0qRu;Kx((=R7a!MXj3%>ajvt?Nq$H zYu(%-&=P|xDyKjd%~3_cKo&1<;w)-`Z;R4q7zM$21pY7yBWBZ6c#|2&2vO8|Sz2}1 ze3kpf=+TF7nXA@S0eC>Jq-h3 zI{y@}{*_~o#RivnQUDoI7>)=+Eua5M>Qypdj8;j?&PS1iNL=7Yp>Dv+Xo$U8>!gr# zOOt#WkHL`b!Suq4hsJ6o7MNoJzQvpam!0#`;4I3$n9CcK$g4I4MLri69VHJnYiExl z{RqaJIQ^rFJz~Z6>ZNq`-WBbx-WNUUk&vwSLezahYzkp1^6m{{(Le~HgiBT_MjlT3 zt62TT)z_)bnpoWU8f`CZI$0MM;$!%@;{Kn#XYQLfC@1ZH-? z?LG{Sn*g;BNKY1deC26fI?R1D0EPN`B&-Cvhd{|b0T^_7Ad-42^;0(`96cYVFvBlZ z{s&?F7ua=|3EaMT5}%2>iUXVb?gN@I-yi(gKG^@R{ghLY|>inJA z_&>7G|6rfReGTnd@==#PqAUDUp73gKZxe;&BVKA|c6r%TafZpNi{YlYsK}mECzd~e zZVUD$D@F*Ubzv3!)R|&%c{BTKGmDq6;%p^xg&)l_6%U(PUEyXt=sCFpEj)OXm&y*< znNHDBpRd$MZ5r#Lo{hUOsM})f!7Tou2T#(vA_j;1XjxeS=?Y!l?c?snxIa4U4|_0C z<6*Cj*MMNkjhx*X)sVC}mw~~6?90w@5hN!D3JDqSgIL15fIbO@3wy1aC>WF!lK8w2 zI%Cvbj8kO1L^oc-JYW=COeIeJ^zZu9kAR@XLzkHTU5|dn%(qA5_Uw0!fR)q#`$xel z8o+I?-#H3aQ^6kq30zcMT@R=Ik~qH^lNBpv9EKR9yHz1;wg^G$5-RzX+5}7Te0H&> z41AoH__(!fFR8ejl8Es`D{Ltuf+QlMit1QYDOx>Aj4!43T-Tn*YU^=`TPc^rQnrwcyCrrb`lwuj4dXE^UH?6c?W1PKQ2P#nqB#E?U_tz`~>^#dJ89W z%|67z*bIg?*+{jQ>#HyFH>LOoa3v|D>%Z;SS@$RI|BHPuQ(nCXwz1s*SF5=R|DRW> zgwOuJ-{R-7{eS5Gd4LBn_a?8rfR*|xFW_czU-$3|I+pJZ5BJ_`U!NS}ad$Gf0BQE*D6qokDF!QtX@EIDs9~B2I{&2?zJw(XtYWI}bbtg$g4q+fJ6}4b$SIX(WTytk~zs7?CoR97NO zQtGJqYu@DP)ygKJNP3g-BBdoPE*qdBtwbFZSvjOM{PEZJkXAMcMHUSyttBjOhBT|J z0za!Hp|_#hwBJpE4y8H1{MGpKSK`ZGjxXP)x?pva!OA9sJOQ?veG~J>8oJ6#{!OX=BnQWuRBZ_d z*ZiAOYx`7uH3#SX8!FbQ+B*C@!M(9rs=b7JTfAFWSj@W)7)fZzC^iG8*+CK*TiG#S@Y3qf z!qMSs-?TpqfwASev_ER;CLx$*xMD#5;sN;^&sMM)SgzTMg#d@UgM`>pHH7dP+cZehaYY7xnxtR;q^Ost0xWqKwOH{ub+iN*C0q9gnpW z@11#zbv!(HkmXA)E=u`ZsNvSbvfF?3Pl8lj`oJRbddhNslTJ?eDhAKvXZ>WyzP0rJ7SH-Bv(?d=?#?7!X1(xvO&$(X0? zE0^){J{_ikYUtRbOkyG{?k^=gQiOdg4W=c$Qv~DGdZodrbTgPGhnBa{P`}@h>;qm^v!{e+;&>|DNQ(_6|KZYkcv#HJ%M5Duu zi}*5UBOC9dp610JTjgPs#zwe*4zu(zE_;9pm()+5-IN-~) zKa4ACTAtmI2Dv3akMK(Yj}bPghu`lX>^X%qqWr7=DEES{$$~MAX64y@_M+&#xP771 z$bNIiZbgy(qh4mxGZ^)>pF4vu@P9lDiIdHm6RpDe z3mtzy8K2_;yY^{klFMgzPMn;~=a8psLk>Qi?D2|puo>6WoNjm8nOv$`<%(BTHIMcV zc24#`?#XsI0O>Pt*_(Pm22*tf$BSba8Ey=s!x(Q+D`r{#IXwMSbZAfVY|fI; z2f~ggd%no+bM+C*0CQ?zjbZiTQ0PR9rT4b1Z?PFzhDQ{xz-Qa11A88*u7_u&stf?1 zHx7nspAIN4u-zXH2UkErS!d4i9R#&TsLn;mDe%3T4@0?=J__k%7y(|8u*qV8fewZO zM9mMwAZYl2>q^zD*9cdGepmW3vg*7YGgE+^YC*#bs!*ljhXK$QW_${u@ZY-aOIgGP zP;{P6HcT%(B8X3_kPCeWVxehw+c;l-IS70Y`s0HXZ3OiO6jvoYDiM?$LAAz9Fc1+r zdm0tL=GUuG4E}@vEf`qD_scaPIb8<23J7iw1+s9|_*K!NUw8dRHEh(qT382Y^zv3? zyXx26iW}77gWr%<1wNc3$_P|$Gzc{d5M$6H3J_Mh*JO6V)9LjoaA6dnbfaN95i*j? z9=*dO>AR|!TVGU=(c0dqw~$~FBMd^ag_7Nb4f*i9cRTIgqyu9493}|E23pP!*MnXk zX5@O(#@m5`s&Cz)M33hp5dwp`9TGj%LQW5LoXp|)dPZ-9vfrrHEn2vBCmc|gAWhOC z2|$xnKw0O)y_Qs3tA};!(#17RmgjQ%s>>eHOQ0+dUUJI1aC;mM_2{CP3P`}|rNV)F zf}=v$8|bwB;Ze~QSnN(iLWlH7P5;=ssRh-l1iftxTKO^oB%PJz>K-JklfDQj<<@y zV5)1b+o%OF*^O$|5F1bdENGhwG_CnSB2`8rb>AYkI8Z})NvMYIQh;*8Yt$N*&cdcb0Vw(-vJ`_s;=jTfoBmRP?lfy&D$!c!URxGk#VSuB9lNBNy3cOHz7m$TGOHC zi0cp{do4%>Uq3P-2AU89n-F2~H7cANCfQqz8vPa2hzIOJB?sybs~8Vts4)b(2^ihf zLr#vc{(y2k^VZ^h38;n~Q@|Q}Oo7Vi(F3_(1BL|Zq}!;wo*_qIuGOIKYua!Fiyl$U zsQRvc&B!qU(@0gzCP>R1+l5KMn;oD)lu82zR`%##0KkcajE1tz20Xh`S6-2?(N~ zH`f_N-h2$A*xjad%)5i>FK@)Q0J=QD;&01sftK?E-ObHX5R|L+W~l*EGHjMyzgn)q zSGPufZ#VGEVf95(R8W%vt4n_dNz){d|o8reWF)MK(tOQ`GyT)%H1 z`bRhurLc-Y31S-%zFV90P$=oB$BVis;X2v1Fn6E+vUix%`+zNPkv(Z6d$~y&E6Xu_ z1?y-$>=TlYVYukNV6FlO?Ye3M9Hndj2qqr+zE&w1ZswP z4ndW6n{EXNCummPGA{<@yh_=1*%Pn+-y$5(CLHe(2*=xiaJvE;YV#FNbCRqy(IHuFKy|e+Ms~HQ)^U7Icm7Jc zYt;M=>5lfP7gJmvtRZhLFjmCcI?^bpmTLj%A=N5KCHU)s2&#q6I$+EVo1mS5mD~)= zp%*4(4Msawo32m4(ZLQ-NPa>(XqldZU*2ax%OD&duT}Cgh?Lqsj%Zq4J;3$kZs50L~ zOw=~SAuDs*@T)H4E^b9sx5y)qO&aQ;N`^diEk+=LYU+kwUtZUvTbwHdfzZ=hch46@H5#A~hY5A2gP$>GgYP=^UjdY#2;8%(fQC=2FFcU2Iw7IuVDe zZD@3#E?$-L92#4dI&6Q-achmTAFRJ969`$pGLyw^eDp`X6{xLkirQ0|bm1$+EXT%5 zyjq1h)ALttD}bdA2)On5*Q{Y?>h;8WZFp2w+M$9+VZ>qBuvk>3>{Wf2v#6>vJ_U=C zbr^?|RTPJ6)ZIS_Qvy`@wYB0C{8jGxhfb@ENEOo>!Xl|y)9N+nL-C}@1LWK{Itv3Bex#~9kIy&3o zw-29dfQ}{x6;zk%@L^ap&UWI$%d~jk(&GITExx*m7VodE#rq3b0fHfY-ta1i@B`Os z&0@hdy~^}jt)tD(muk)Cz_JQks-lJtb`7gcQK|=D?@IL;KlWDhV_0O3wHDcV@Wf)a z=3>m?g=c-wT2m?t^y~tX)mE(qUHy6|a06D0JKezs+vdw{?MB%P)}(}|mCO&L1X#Z{ zvzF`iua^=wT*{60d?he_D}3w!#p(0Pffq8H^^e1eJy-ZK*3x%^WeeH!%hh_gq2d&* zr8tG4sF;9j_z9X-OpVAmZ`dsP0q9HYnFp$rZ*yoL)T&CO95mo>5R|RptE6&;{?U5V zhZzA?ssdVf(*t6!H9=3R!S8Chwp_WYRhV++1}l`Sz*4S)6y>Ux<|EBG3-zmDZT%`p z*RO&n*RSrsWKnmmGBanhNTRQL$-+WwthLZ!0>5OD$;0qq3AnH+^?<`>lv)tE&g&<*5B{+)yr`LU@>x9l!0XD|D`?!4&Hfwc^fZ`r{(A8?(Lk~u!7nZ{sKOKdJW>BtId9maX ztV+4=HiJ4I?+ZdSK?9e3_q8%~0R8pBBN~&TWlV;TU`&Q<8|GoW zr?9br7^ptG)kFbcB#^AnNWin`=4+Mln|UaJo8syFwY0SGi7ni)+Tin#vZRp`v8`gN z8;uHIw44$M5~GA9C`J=WNPqN=0uXT(x3MNoJgwOrcNt;#r`4>G zK#w22NC9LBA_<4ngQ23Yc?WSLCz#)$>!S=x)})N5waCfMp(z6?*0*E@1&7qEJ4Dz? z9GA!GsM>}Gl9eBWCwzg2Viyp?;>$lk6$bKMlLDU9s`nbcB`=Ul{aTC$cyyMiz@}Z* z;PcMR{(6<~Gx~qHnf7s}*HaCu>-hl8byL;>&j42&H`Bsmj0*ToQ=xT%W1=Rfkb2m# z2*e_ev{ntR)We2NDx6GGn-wz~0wZCb_KnVDeQDPME%MebrI~Q8-ID662ob;D@Iyl} zb?8?u#YVgpn4wErxq8PAYBl_j(N7YPp{67pPE28y2^`-=IQBt=WG@Ukg;g$aRBaaT zo6_{dUH@MiL8YAKT5tyg24H%%O)b>ws=yWBud-WaUF=+~X7M6Q0A;Ahuky=ebp?LU zUB#l3O2AkS+1a(24T}vJ!oc#3Fnr#Cuup`)Q_w=)^X_}#^J~5CFsLCVtS5$O;>BIV zao1#k!hVBDxTTTD>jD!eJx)8_U(!3Zj?0xlUlWwoY}&yR1dmy2G4qc)u8Qf1z)l-FSKNtpRBrm{Kaxwwle( zJQ-tO=*sj(UDRdn)y;?ZEn1^*(FT3H zAKv)wZzi?h;+~m88+7f!%6ln&zcd2aX< z?r}IWB?9UVDuIhgkFfaI*2)1GOtzPg#V+_bqjHu^2_NwNC`rCuB0ARMImbI6_b_FX z<1EV8;y8B3mW4T6?w7S?McS4HX;EZilzZlGSu1->NA=-B`CD{H*T~^wWpQyF`o%K2 ze7}FVb8zsZqqA=99qwlT+j;Guf7bhn<$K?brCq^vPgf6Z13kq-;Nag{wMKs{p7@TD zlwMG)IWAu0;#Pu6=s94ed6nA#IF-j3;HsZ%R288sSD5$wb}$5P+nZb`#|*{J&X&Lt z_K2hZekDKKkDQ-43;#K9yT`N6wCIfb*Ru)8fJrC9MD*Rk=-jyi4iEYvlu|!$##hmV zRPNlHJSOU@l{^Zt-5CxYdNFk-ebAh5`aM?dXfPf3ox=`FnaogyPiRX>puJ%o%e4Bqax_({m~d$cG3BMg1MDwAa8*B z$0K0AFP-lOC0rOVj3Ka88V!tW8ck>YODg;AJ|=RXV06RCIgMUAZ#$#w{t!g_ytpC#40fswtV1yw&`q-aL0nSV3e~+LW;-gpgo&SY*BEQm0=lwB4J_0?UGllvB zxnK&rUY8n9_H1Ul=5#?F7{HJL^`L2V&@uw^0@E{JgTRo9csgKEbw&;?dXmP@S-;<- zwAMJX-6wCwIl1UtWk({7bQj8>_MOi4Y<$_FI>QJa4!bh5bZ&}r88c2oeOYHVMlp^# z9YI$c0qng__rj5IB|wqhbuhvtL-LKt{Zw@NSQ;~dUck6S?k8yIG=fp#C}$nai#a+U zA_>30HmzTlx?}ML+Q;O4pkj4Sr{f7ITjxdRN*0A?p+L!%B><75=~ZWf0$!p)Amz_f zXL`}O>SKmJHel!nHr9)$&Bljh{5t@N2$;}~kIx2^=}e>;D`Il_Mb%MJ(3LhJ--MKIWZRMf4&Af0gNFy zX_?C|$ay1DL)?9sN`gT;9h^ll%CoaRVpd>sN{K!R&UiAo8;@oHS@r#3cSUptt}>;k%9a`OV?v+V$ zS7RGA&6$$91cHS5@g=iR3K=~TPi{aV3wd3u;sI1UoZl^ z{nIQaBwAz%K*;@Gnb?;oc{7+r__jX)h!dHTJ>Z=H>1;B-grzsT z9m5O^uP*_`XdVH905N`c{<$+cpO)O8oX%7dI(GO7EE@Sx5Hfawc-h{Z?30&?{Bk_I zT-+(cQp&kjLOH)E)5(Rg>~Sf{<3z4Fw^F1@xm0(D*jeDbVl3$!-oIpLd9#W{vWU*& z<`r26H?L?Cw#gUR2Ou!P*WV*e9KQc>;=JEE+IhPNmelb}dL^;(5{NX9QZth=Ymcux zC@L`Z(lJE^>P*QiT;xzvVv&Gmu%OLSWN9dnSN#Icb@}*R3^bjsff~g>`0PT}O zXIOUr(VvVZesIALL8Kv{UCq9ZDs9z-ZsA~jTN2%yutg1pF$bb5yt4yT28G{%LPQIC z+U;Q6Cvwmm%BqQ@M{l~$lK4{8!&WlKLl71?hFBAy+GfP6iBF2$xc<<+o|OQpP(?zJ z%>ePi)IuAX!_K8_VR)uF6S9`F^F8L*oH_seoDjwRCYysz|^GrE4aR@hc9Lq6G~=l2&D)F4T@B!M_J7Kh$S&Qf_pM1@e&tLMhkFa zk1+yMazbkYl7G8O4d5WX%|OnD{(`SPr61Tmj23~5i`aGhw*kOKy(8{OghQY*i**@W z)XJ(Ctg5Yp#D`J@-GEdVVl%{yN{kPwY7z)^_2+98SzQvolq{Mt583)HYhAO}w8mw5 zu|kk_THHX5RO;yVD32-|tnz!W@wHa?J=eEc*!Nx80P>|o8+-)dq%WehfGOg=)T#~5 zX&EJ!&Q&TQ49lEk zL#Bo~xqQ}fj`vPZ_78usp38YrGot6h%tH%Mi__2|M5t+KB_;vOUADX;3i%c#>qQCP zqOI|wEt^}_a-~-MB;MjKshTr@$|kJkvDtz7YFTp?dmF)9nx&Rce=ndvG(GaK=$h(S zOYYe7e#u_RKEa{|NP3mv=-?ABAX^1UzGzkQ*>@jKY(?0~U7d75wajO?w~z4*i9HL& zsCZYrnHO)O;>}%gR-C%UsaL$pXS2tD**T)Ui*I2$53j)_e=z~c-ku?}(r|G4g52c0 zdv6Y8L10?5HZ|smHk(;0LS(UXu>TJ#l|`&n9hLz zOo}hwO5XnM^d*_!sAUsi0`l#Yb`%Z)bL}@Dj*egjv~exy9_91RZ01)nI8DL0`?R3B z_v8mFI@ciirUT?%%5q>TRM$A}zMVShJ-~*uCKtUxvD~-W1w?&DLb(;&Ybt689zkb- zu*Kg<{=JibaY=P1=WVi$T9u}TC)d$==L$g$+aU1~`mim{3;1%uKEo&6L8GUlD3EoV zA_GSK=~R9P;UPa6xq)lv?2H#Roq*=Lq$>=u?eos%C64DK{2PK1)x$5iIACS>+N0te z*Pt3y#J^l3>*9dV2q9;Lj=Ktdfj{`ILtjqmcZZ&w((kT|Pr4rc_UX4v&prC><8R%8 zIsan4x#L}%^Dhzqg2g~D$js@G8op5X&b!`gHii* zd_C$-SxUbV-o0=CgPxx;daoe8>#yDZV5k`Vc1|+*0;s<^ zh^i|Oou5w1Ix(BLb zASkg#(P)ZZ3zeqYXjLXK0yTs#2eYljl7zPapi$JxEo&T1xvR=kSi zw71-#bv7KsU)5Rx_nw=B*Olg=R6>-il_vjg>5dY%bAy5{GPe-_c|8G5>Nf=&5!Xo$ z;QGoq4&)cTHIAK(w~uN2>^@jCUVtu*W_hhzed~C#6N3>nKPA0aza95_7`4!IE;_?A zZ374vpd1^2o+@i3tvh_?3x+bby{4KpjK#X&&;>)K@om{yF4&W{?d3Jfo3dF_Gc}Q% z%`V5&86yutbHq9ofl;+z`u!`?!^Q3d?Hb5Usyn-Ph8^3}LA}m1sV5)O>rMpW0U*2}-U*6Un{+|BJ zYq^3CqHqJYLj4|YF?D^5sp^`fvl$ZMP^-j>!q`!YPd`s)xm+m+Zwpugix%)#i3VSw z-`hdClHU?VR}=(>wyMNdP+$)VvN*iR17Cn{byT-BfWoQxx1Ez8Vh|Pjr|2h8dqRpb zB%-6W5FN!39i<~WVu+4xL`Q(=h#@*6L`MwKQ2|R}Q5;-EW4WcV+#+@qnwJ+VtOg{| zEFTnPagOFlqgem|%+fzZGku6bq&Ojz!VZXGx9JRCwY1Q823uRe?ATh3x1@3)#oj z7?nBrqBT6C3PCb=g0U<0N68iR>)3)x^k>$}QMXEWdFY2xt0-FRY&@~sF!koG`PR+6 zKp;%5d7@XQM%0S7ZlZXNXi<&0mYXA;qaD3!36BHN128^%^tx5j&+`BIPfk5e6nw=C z=C$(Bz36v;nIacP1lmZQI-(l_@fU-s6k~V&q^w1BfkjTZzFRbo_yaVd<=E!0l*Xfa zJb$g8l(Z&bhG^dE@~_g$~@YDXuU!1=?dj|*m?~nJKbsUaJaA&!k=*??V zQplV3O$(F|pd0JlEx@T217P+C4EnopH++ zEZD2gxln+lizSUDG9QIv2+QMUj&yzl)P7e0cB_o_m?ot(qnrM4+{OJg1xUIfVG+OI z-~QCy&dd(#azd?ZI;vtaHbZOnaTh=`SVO@VE>AQkEKUM~19%RI zg#!K~EV!jai6wPN86xjZcQ_cOnyNCCE*0}=jxw4hC!*D6DE#hwOq@gQ$2XT$rSQ5@f6iTsiM6L?k86g?{fo1U&MeNSLBvks-_=zgqaKM@12aDd zoApXWIB>&Pv;#7FHW*#^1+r;YepTuuZkphwd#IY??;H6muJT5t*ha?lfU0{WRd-We z*EXuVhRVw=R^2208$AS4b+`K{{%tJy3e?RCl{=t-41>b&r(l9)ao} z3Dq4w`jJ%K@1?f?cptSrTBx?u^s_B3RDUC(w?~%x8{JE9k4mYafT@}`^ODNf)Z5ic ziFZ1^rKUYV&~qauHI2@`N@ZvJfuynig??Z}*Rm-W@r|Cp&Ncx|XV^ zbiMdC0P_*?eXVh?AD2l3o7G<69S-)6h+^iCB~R|{nt5W+Oq>S`wsBAP3zL$EZG}h`y#GgZr6O~C>u{kF@B_@5|L>GH${%!z672Pzih55 zxV9|(3ZvrV%zH8K7PZniIEV=1;n1AWX(f<>b@mIFa%au)y~cYppm#C8OEMwW;eTs~ z`e19z?3w-Cs+ce7p*Zr#4ym-_bGC{85~Rns<`A?6;dPD{r3I&8ecMtoe=1xq*Bwvg zHg&;##2>Z=Xt&aO%vQ{Be$}6@3a$S9Dp#_bg~^xUL z2!p+O$pnm&GBJ+_pb{_0Zz;oc zg=~w3>GGJ|j1`ucYduVzakqOt zne=-_y$1W%d?`UhA@x$W($Y}WsK-aNn6>DTMJfvxGzA&f7mB@LisO_xDY}kAQQNO5 zIQ9;Aop;|mCx4+6ODA~p>@CS{XaK!24+tb)(;Js=FYpwR2=41+tkms= zG!_)--nc)NTi?pB7`wqDx&%Z@ArL>Y(bVYH_mSY?-8Dj>^aEt_xW4fEo|!oEFU_Yx zU-HJ}v5@S&L$$IGi@Um8Gv;cukgK}{Ty5wilL; z)5q8YyR-MdR&0O8!^uSPSIIpp!%Z#k1ZWY$iEi;yy?o|+MU~5Csi{4FeA?56r^Tba zR!63-4oq9I$@P%1w0lRTWmZI@;m6^+@n>pEl7UcZ6a|DK&d1}WMrz+{JnGXuNh27>kl#g7_)1$;Z{odVbPZ{qdU2Un6OZGMkK6(62mc@H4OFVt6c32+d+v9-N-d;qB$+GwFyQlIfHh;q8|23<+9*_H&KdyX@ zQsnF7$B{gF7|8}vBo7WEc}NV&y+cScD*{Ngd|fAOM8^~T*W~NH;~>5~0s90&5KkHd zq5IgGrD`vBpu?+Y;rlFnA0T`;lD(yS%iafsGuY7#M)oc;ZBxQ8RX=007w@~d=%k9T z)3K3Z(`U1G9kKiSFl#s0uhu$i`K(}lkqTDQf$_~soy+i%lnCB|)aIFgOle|F5qk>9 z#+RpfJ$p8um8)mv>Z@~XDBk!@k~uyyZ;aO9jn7u;AHgauJ#)@y&iOkqOEZfV%MEy^ zj=O`>6cJ%rqqqVEcfA^Rx_xul6xwB`4>Ks#`NQWM1HObC1F{*#iB=!}&n)Da&nK0h zPbwt=NFsXL)BhQphdy#Bt%=Z<-|v4){o z4^Tf+(WlL?qzbY?30V$Cg3y=YrK%!vW#j?s$YULyPOp)gK7Wle{YlXrgq=Ra}J7xGjimhrv%EOx}98SLPsC340niM1`RiP|pcTMXFi zd=smvHxoRgxxJl{SrT9LkTAbJbBfMfeTdYDJNkgx5GO@SV2MPDkYx%yshkkDiCqAD zk_`*a#Jv&?>?^E=FaZEGQW{iK67oCE@s* zRfn0Hzbe@eqSveverE+D;$Dj7QBujbZ+7>O-yiJ!C^CFX_S2hmZrkRzhN5`D^FY!A zmG+UosLYeHD0{;bI?{uwP8>;J&)ReG0jEp?Qy)&%hq;UC5oIx1+*J_fp89mBKQY9| zpG2nRNVgoRmLt`&{1EA8BCkcp(*ScN7Jn{|U?k_1Kj^Y^J{p`wxfk>3g)%+uRH2o8 zChOcUdEz!po!A);BgfnUK(aoTK5@D*aiX&6GO_thPobF2#AYugDPmFr&#ZiiGnUGa zU-8fHe_Ja9BBM9+am()Dn#mB;`>cAoI1^xc7f`yUbmKS8hiEM-);BA$TWrp^JvG7i z%W#;IWzImO6n9yZnvQpHdCf$UI$pK3Y(SJJ7m0gmF0btJJY6VXFRzDyi@~U$3yV%B zCs<;h_oJvD=1jh*qE(RiUs1^Mr4Us8)zxiGq>!9JV&3#7m+WB9G!a`s`NwH81u5&d zc@I1bb0fJ3td7SnP|FHciwUcRJ=7*!$`wdh60axOa%p_pg+Y^D2mGWsam*S zgLclw1PGH>Q0XLMd?}C%3IqDXb}sQKncy*#HQZ|Oil%A{J}FkDw4B@k`5n#Hw$wS~ zOVEmRGs;w#{c{Zl6n?B{vV$GfL1VcqMQV`Vq_?n1FQrLuttN@x$`KW{dZ&~-{lqhc zOUcru)Z)JyvfnWArPd4;*~e30Dm^hy_EEu9P%t#DEXa*{pQ?rXHE8G1On^v`ePok8 zgRDr~e9&ZX9wifQKA7wyP4>}ZvX4^8J~A{IDH@E{BKyc&*rb=zq_BELOW the beam axis. -* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z -* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see -* related bug on GitHub) -* -* For more complicated gemometries, see component manual example of DiskChopper GROUPing. -* -* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. -* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the -* chopper timing and phasing (thus conserving your simulated statistics). -* -* The isfirst parameter is ONLY relevant for use in continuous source settings. -* -* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper -* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) -* -* NOTA BENE wrt. GROUPing and isfirst: -* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need -* to set up -* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening -* that spans the full angular extent of the openings of the subsequent GROUP -* 2) Add your DiskChopper GROUP setting isfirst=0 -* -* %P -* INPUT PARAMETERS: -* -* theta_0: [deg] Angular width of the slits. -* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. -* radius: [m] Radius of the disc -* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) -* nslit: [1] Number of slits, regularly arranged around the disk -* -* Optional parameters: -* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) -* n_pulse: [1] Number of pulses (Only if isfirst) -* jitter: [s] Jitter in the time phase -* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? -* delay: [s] Time 'delay' -* phase: [deg] Angular 'delay' (overrides delay) -* xwidth: [m] Horizontal slit width opening at beam center -* verbose: [1] Set to 1 to display Disk chopper configuration -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT DiskChopper - - - -SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) - - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -DECLARE -%{ - double Tg; - double To; - double delta_y; - double height; - double omega; -%} - -INITIALIZE -%{ - /* If slit height 'unset', assume full opening */ - if (yheight == 0) { - height = radius; - } else { - height = yheight; - } - delta_y = radius - height / 2; /* radius at beam center */ - omega = 2.0 * PI * nu; /* rad/s */ - if (xwidth && !theta_0 && radius) - theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); - - if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { - fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); - exit (-1); - } - if (nslit * theta_0 >= 360) { - fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); - exit (-1); - } - if (yheight && yheight > radius) { - fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); - exit (-1); - } - if (isfirst && n_pulse <= 0) { - fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); - exit (-1); - } - if (!omega) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - if (!abs_out) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); - } - - theta_0 *= DEG2RAD; - - /* Calulate delay from phase and vice versa */ - if (phase) { - if (delay) { - fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); - } - phase *= DEG2RAD; - /* 'Delay' should always be a delay, taking rotation direction into account: */ - delay = phase / fabs (omega); - } else { - phase = delay * omega; /* rad */ - } - - /* Time from opening of slit to next opening of slit */ - Tg = 2.0 * PI / fabs (omega) / nslit; - - /* How long can neutrons pass the Chopper at a single point */ - To = theta_0 / fabs (omega); - - if (!xwidth) - xwidth = 2 * delta_y * sin (theta_0 / 2); - - if (verbose && nu) { - printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); - printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); - } -%} - -TRACE -%{ - double toff; - double yprime; - PROP_Z0; - yprime = y + delta_y; - - /* Is neutron outside the vertical slit range and should we absorb? */ - if (abs_out && (x * x + yprime * yprime) > radius * radius) { - ABSORB; - } - /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ - if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { - ABSORB; - } - - if (isfirst) { - /* all events are put in the transmitted time frame */ - t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); - /* correction: chopper slits transmission opening/full disk */ - p *= nslit * theta_0 / 2.0 / PI; - } else { - - // Check whether each t_offset carried by the ray make it through - double weight_update = p/P_last_time_manipulation; - P_last_time_manipulation = 0; - - int train_index; - int one_did_hit = 0; - double this_train_t; - int all_dead = 1; - - for (train_index=0; train_index To) - p_trains[train_index] = 0; // T_ABSORB - else { - // T_TRANSMIT - one_did_hit = 1; - p_trains[train_index] *= weight_update; - P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; - } - - } - if (!one_did_hit || all_dead) ABSORB; - - p = P_last_time_manipulation; - - } - SCATTER; -%} - -MCDISPLAY -%{ - - int j; - /* Arrays for storing geometry of slit/beamstop */ - - circle ("xy", 0, -delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslit; j++) { - /* Angular start/end of slit */ - double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; - double tmax = tmin + theta_0; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); - line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, - 0); - line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.c deleted file mode 100644 index e100c9f9a4..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/ESS_butterfly-lib.c +++ /dev/null @@ -1,402 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright 1997-2013, All rights reserved -* DTU Physics, Lyngby, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Library: share/ESS_butterfly-lib.c -* -* %Identification -* Written by: PW -* Date: Nov 7, 2013 -* Origin: DTU Physics -* Release: McStas 2.1 -* Version: 0.1 -* -* This file is to be imported by the ESS_moderator_long component -* It defines a set of brilliance definitions (used via function pointer) for -* easier use of the component. -* -* Usage: within SHARE -* %include "ESS_butterfly-lib" -* -*******************************************************************************/ - -#ifndef ESS_BUTTERFLY_LIB_H -#error McStas : please import this library with %include "ESS_butterfly-lib" -#endif - -#ifdef OPENACC -#define exit(...) noprintf() -#endif - -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ - if(lambda<=0)return 0; - double par0=8.44e13/25.; - double par1=2.5; - double par2=2.2; - - double par3=-13.-.5*(theta-5); - double par4=2.53; - double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); - - double par6; - if(theta==5)par6=5.73745e+015/25.; - else if(theta==15)par6=5.88284e+015/25.; - else if(theta==25)par6=6.09573e+015/25.; - else if(theta==35)par6=6.29116e+015/25.; - else if(theta==45)par6=6.03436e+015/25.; - else if(theta==55)par6=6.02045e+015/25.; - double par7=0.788956+0.00854184*(theta-5.)/10.; - double par8=0.0461868-0.0016464*(theta-5.)/10.; - double par9=0.325; - - double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); - double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); - return para_part+SD_part; - -} -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ - if(lambda<=0)return 0; - double i=(theta-5.)/10.; - double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; - double par2=6.24806e+012-8.84602e+010*i; - double par3=-0.31107+0.0221138*i; - double aOlsqr=949./(325*lambda*lambda); - return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); - -} - - -/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ - - double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); - if(y0 < -height/2. || y0 > height/2. )return 0; - double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); - double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); - double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; - return tmp; -} /* end of ESS_2014_Schoenfeldt_cold_y0 */ - -/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ - -/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ - double normalization=1; - if(x0<-width||x0>width)return 0; - return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); -} /* end of ESS_2014_Schoenfeldt_cold_x0 */ - -/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ - -double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ - // Kept for reference only... - /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; - long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); - if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity - *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope - return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity - *(0.84199+0.00307022*height) // asumetry - *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope -} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_t == 0.03) || (height_t == 0.06)) { - *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (6.2e14/9.0e14); - *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } -} /* end of ESS_2015_Schoenfeldt_thermal */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_t == 0.03) || (height_t == 0.06)) { - *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (6.2e14/9.0e14); - *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } -} /* end of ESS_2015_Schoenfeldt_thermal */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); -} - - -/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ -/* Parametrization including moderator height for the "pancake" moderator */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_c == 0.03) || (height_c == 0.06)) { - *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (10.1e14/16.0e14); - *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } -} /* end of ESS_2015_Schoenfeldt_cold */ - -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_c == 0.03) || (height_c == 0.06)) { - *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (10.1e14/16.0e14); - *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } -} /* end of ESS_2015_Schoenfeldt_cold */ - -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); -} /* end of ESS_2015_Schoenfeldt_cold */ - - -/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_y0(double y0){ - double par3=30; - double par4=.35; - double cosh_ish=exp(-par4*y0)+exp(par4*y0); - double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); - return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); - -} /* end of ESS_2015_Schoenfeldt_cold_y0 */ - -/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_y0(double y0){ - if(y0<-3./2.+0.105){ - return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); - } else if(y0>3./2.-0.105){ - return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); - } - return 1.005; -} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ - -/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ - // GEOMETRY / SAMPLING SPACE - double i=(theta-5.)/10.; - double par0=0.0146115+0.00797729*i-0.00279541*i*i; - double par1=0.980886; - if(i==1)par1=0.974217; - if(i==2)par1=0.981462; - if(i==3)par1=1.01466; - if(i==4)par1=1.11707; - if(i==5)par1=1.16057; - - double par2=-4-.75*i; - if(i==0)par2=-20; - double par3=-14.9402-0.178369*i+0.0367007*i*i; - if(i==0)par3*=0.95; - double par4=-15; - if(i==3)par4=-3.5; - if(i==5)par4=-1.9; - double par5=-7.07979+0.0835695*i-0.0546662*i*i; - if(i==5)par5*=0.85; - - //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); - //if(i==4) width=width+0.3; - //if(i==5) width=width-0.7; - - /* Rescaling to achieve a BF1 model */ - double tmp=(par5-par3)/width; - //printf("Cold x0 in BF1 units: %g,",x0); - x0=x0*tmp-7.16; - //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); - - /* if (x0<=par5 && x0>=par3) */ - /* return 1; */ - /* else */ - /* return 0; */ - - - double line=par0*(x0+12)+par1; - double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); - - return line*CutLeftCutRight; -} /* end of ESS_2015_Schoenfeldt_cold_x0 */ - -/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ - double i=(theta-5.)/10.; - double par0=-5.54775+0.492804*i; - double par1=-0.265929-0.711477*i; - if(theta==55)par1=-2.55; - - double par2=0.821885+0.00914832*i; - double par3=1.31108-0.00698647*i; - if(theta==55)par3=1.23; - double par4=-.035; - double par5=-0.0817358+0.00807125*i; - - double par6=-8; - double par7=-7.15; - if(theta==45)par7=-8.2; - if(theta==55)par7=-7.7; - - double par8=-8; - double par9=7.15; - if(theta==45)par9=7.5; - if(theta==55)par9=8.2; - - /* Rescaling to achieve a BF1 model */ - double tmp=(par9-par7)/width; - //printf("Thermal x0 in BF1 units: %g,",x0); - x0=x0*tmp-7.16; - //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); - - /* if (x0<=par9 && x0>=par7) */ - /* return 1; */ - /* else */ - /* return 0; */ - - double soften1=1./(1+exp(8.*(x0-par0))); - double soften2=1./(1+exp(8.*(x0-par1))); - double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); - double line1=par4*(x0-par0)+par2; - double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; - double line3=par5*(x0-par1)+par3; - double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); - - - return CutLeftCutRight*( - (line1)*soften1 - +line2*soften2*(1-soften1) - +line3*(1-soften2) - ); -} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ - -/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_cold_Y */ - -/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_thermal_Y */ - -/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ - -/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ - if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); - return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); -/* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ - - -/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ - if(time<0)return 0; - double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); - if(timeGeometry -* The geometry corresponds correctly to the latest release of the butterfly moderator, -* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. -* A set of official release documents are available with this component, see the benchmarking -* website mentioned below. -* -* Brilliances, geometry adapted from earlier BF2 design -* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, -* are released as an updated component library for McStas 2.3, as well as a stand alone archive for -* use with earlier versions of McStas. -* -* The following features are worth highlighting: -*
    -*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. -* As a result, the spatial variation of the brightness across the moderator face should be considered to -* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to -* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness -* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. -*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. -* To accommodate the influence of the changed geometry, this scaling factor has been applied independently -* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the -* spectrally-integrated 6cm width data shown in [1],Figure 3. -*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance -* have been implemented. For now, we recommend to keep these at their default value of 1.0. -*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This -* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, -* which has been derived from current MCNP butterfly 1 model. -*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, -* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. -* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree -* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees -* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- -* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. -*
-* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be -* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. -* -*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance -* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation -* across sectors and potentially also performance losses due to engineering reality. -* -* Engineering reality -* An ad-hoc method for future implementation of "engineering reality" is included, use the -* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. -* -* References: -*

    -*
  1. Release document "Update to ESS Moderators, latest version" -*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" -*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures -*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. -*
  5. Source code for ESS_butterfly.comp at GitHub. -*
-* %P -* Input parameters: -* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" -* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector -* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m -* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator -* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 -* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 -* Lmin: [AA] Minimum wavelength simulated -* Lmax: [AA] Maximum wavelength simulated -* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. -* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index -* focus_xw: [m] Width of focusing rectangle -* focus_yh: [m] Height of focusing rectangle -* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. -* acc_power: [MW] Accelerator power in MW -* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. -* tfocus_dist: [m] Position of time focusing window along z axis -* tfocus_time: [s] Time position of time focusing window -* tfocus_width: [s] Time width of time focusing window -* -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT ESS_butterfly - -SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, - int target_index=0, dist=0, focus_xw=0, focus_yh=0, - c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, - acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) - -DEPENDENCY " -DTOF_TRAIN " - -SHARE %{ - %include "ESS_butterfly-lib" - %include "ESS_butterfly-geometry.c" - - int nearest_angle(double angle) { - int AngleList[] = {5, 15, 25, 35, 45, 55}; - double diff = 180; - int jmin=0; - int j; - for (j=0; j<6; j++) { - if (fabs(AngleList[j]-angle) < diff) { - diff = fabs(AngleList[j]-angle); - jmin = j; - } - } - return AngleList[jmin]; - } - double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; - double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; - double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; - double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; - double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; - double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; - double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; - double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; - double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; - double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; - double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; - double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; - double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; - double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; - double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; - double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; - double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; - double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; -%} - -DECLARE -%{ - double* ColdWidths; - double* ThermalWidths; - double ColdScalars[11]; - double ThermalScalars[11]; - double *Beamlines; - double wfrac_cold; - double wfrac_thermal; - /* 'Corner' parametrization, i.e. where are the limits of the moderators */ - double C1_x; - double C1_z; - double C2_x; - double C2_z; - double C3_x; - double C3_z; - double T1_x; - double T1_z; - double T2_x; - double T2_z; - double T3_x; - double T3_z; - /* - plus rotated versions of the same... */ - double rC1_x; - double rC1_z; - double rC2_x; - double rC2_z; - double rC3_x; - double rC3_z; - double rT1_x; - double rT1_z; - double rT2_x; - double rT2_z; - double rT3_x; - double rT3_z; - double tx; - double ty; - double tz; - double r11; - double r12; - double r21; - double r22; - double delta_y; - double Mwidth_c; - double Mwidth_t; - double beamportangle; - double w_mult; - double w_stat; - double w_focus; - double w_tfocus; - double w_geom_c; - double w_geom_t; - int isleft; - double l_range; - - double cos_thermal; - double cos_cold; - - double orientation_angle; - /* Centering-parameters, which sector are we in? */ - double cx; - double cz; - int jmax; - double dxC; - double dxT; -%} - -INITIALIZE -%{ - - - int sign_bl_angle; - - /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ - double oversampT=1.1; - double oversampC=1.0; - - - /* variables needed to correct for the emission surface angle */ - double internal_angle; - double cos_beamport_angle, sin_beamport_angle; - - if (beamline<4) { - wfrac_cold=1.0; - wfrac_thermal=(1-0.072); - } else { - wfrac_cold=1.0; - wfrac_thermal=1.0; - } - - /* Centering-parameters, which sector are we in? */ - if (strcasestr(sector,"N")) { - cx = 0.117; cz=0.0; sign_bl_angle=1; - orientation_angle = BeamlinesN[beamline-1]; - Beamlines = BeamlinesN; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsN[j]; - ThermalScalars[j] = ThermalScalarsN[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else if (strcasestr(sector,"W")) { - cx = 0.0; cz=0.0; sign_bl_angle=-1; - orientation_angle = BeamlinesW[beamline-1]; - Beamlines = BeamlinesW; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsW[j]; - ThermalScalars[j] = ThermalScalarsW[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"S")) { - cx = 0.0; cz=-0.185; sign_bl_angle=1; - orientation_angle = BeamlinesS[beamline-1]; - Beamlines = BeamlinesS; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsS[j]; - ThermalScalars[j] = ThermalScalarsS[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"E")) { - cx = 0.117; cz=-0.185; sign_bl_angle=-1; - orientation_angle = BeamlinesE[beamline-1]; - Beamlines = BeamlinesE; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsE[j]; - ThermalScalars[j] = ThermalScalarsE[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else { - fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); - exit(-1); - } - if (beamline > jmax || beamline <= 0 ) { - fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); - exit(-1); - } - - printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); - if (c_performance <= 0) { - fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); - exit(-1); - } - if (t_performance <= 0) { - fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); - exit(-1); - } - if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { - fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", - NAME_CURRENT_COMP); - exit(-1); - } - /* Figure out where to aim */ - if (target_index && !dist) - { - Coords ToTarget; - ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); - ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); - coords_get(ToTarget, &tx, &ty, &tz); - dist=sqrt(tx*tx+ty*ty+tz*tz); - } else if (!target_index && !dist) { - fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); - exit(-1); - } else { - tx=0; ty=0; tz=dist; - } - printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); - if (target_index) { - printf(" ( from target_index %i -> distance %g )\n", target_index, dist); - } else { - printf(" ( from dist parameter -> distance %g )\n", dist); - } - printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); - - /* Calculate orientation matrix for the display and calculations */ - r11 = cos(DEG2RAD*orientation_angle); - r12 = -sin(DEG2RAD*orientation_angle); - r21 = sin(DEG2RAD*orientation_angle); - r22 = cos(DEG2RAD*orientation_angle); - - /* Rotated corrdinates of the emission areas */ - rC1_x = r11*C1_z + r12*C1_x; - rC1_z = r21*C1_z + r22*C1_x; - rC2_x = r11*C2_z + r12*C2_x; - rC2_z = r21*C2_z + r22*C2_x; - rC3_x = r11*C3_z + r12*C3_x; - rC3_z = r21*C3_z + r22*C3_x; - rT1_x = r11*T1_z + r12*T1_x; - rT1_z = r21*T1_z + r22*T1_x; - rT2_x = r11*T2_z + r12*T2_x; - rT2_z = r21*T2_z + r22*T2_x; - rT3_x = r11*T3_z + r12*T3_x; - rT3_z = r21*T3_z + r22*T3_x; - /* Moderator half-height */ - delta_y = yheight/2.0; - /* Other moderator parms */ - /* "Measured" moderator widths in cm scale */ - Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; - Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; - - if (tfocus_width && tfocus_time && tfocus_dist) { - printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { - printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); - } else { - fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", - NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - exit(-1); - } - - l_range = Lmax-Lmin; - /* Weight multipliers */ - w_mult=acc_power/5; - w_stat=1.0/mcget_ncount(); - w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ - w_geom_t = 0.108*yheight*1.0e4; - w_mult *= l_range; /* wavelength range correction */ - n_pulses=(double)floor(n_pulses); - if (n_pulses == 0) n_pulses=1; - - dxC=dxCold[beamline-1]; - dxT=dxThermal[beamline-1]; -%} - -TRACE -%{ - double xtmp; - int iscold; - double x0,z0; - int surf_sign; - double cos_factor; - double w_geom; - double xf, yf, zf; - double dx,dy,dz; - double k,v,r,lambda; - double dt=0; - double modX,modY; - - /* Cold or thermal event? */ - p=1; - xtmp = rand01(); - y = randpm1()*delta_y; - modY=y; - if (rand01() < cold_frac) { - iscold=1; - if (rand01() < wfrac_cold) { // "Broad face" - x = rC1_x + (rC2_x - rC1_x)*xtmp; - z = rC1_z + (rC2_z - rC1_z)*xtmp; - x0 = C1_x + (C2_x - C1_x)*xtmp; - z0 = C1_z + (C2_z - C1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_cold; - } else { - x = rC1_x + (rC3_x - rC1_x)*xtmp; - z = rC1_z + (rC3_z - rC1_z)*xtmp; - x0 = C1_x + (C3_x - C1_x)*xtmp; - z0 = C1_z + (C3_z - C1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)-dxC); - w_geom=w_geom_c; - } else { - iscold=0; - if (rand01() < wfrac_thermal) { // "Broad face" - x = rT1_x + (rT2_x - rT1_x)*xtmp; - z = rT1_z + (rT2_z - rT1_z)*xtmp; - x0 = T1_x + (T2_x - T1_x)*xtmp; - z0 = T1_z + (T2_z - T1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } else { - x = rT1_x + (rT3_x - rT1_x)*xtmp; - z = rT1_z + (rT3_z - rT1_z)*xtmp; - x0 = T1_x + (T3_x - T1_x)*xtmp; - z0 = T1_z + (T3_z - T1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)+dxT); - w_geom=w_geom_t; - } - - SCATTER; - /* Where are we going? */ - randvec_target_rect_real(&xf, &yf, &zf, NULL, - tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); - - w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); - - dx = xf-x; - dy = yf-y; - dz = zf-z; - r = sqrt(dx*dx+dy*dy+dz*dz); - - lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ - - k = 2*PI/lambda; - v = K2V*k; - - vz = v*dz/r; - vy = v*dy/r; - vx = v*dx/r; - - int train_index; - - long tmp; - - if (total_N_sent == 0) { - tmp = N_trains; - } else { - tmp = ceil(target_tsplit*total_N_sent/total_arrived); - if (tmp > N_trains) { - tmp = N_trains; - } - } - - #pragma acc atomic write - adaptive_N = tmp; - - for (train_index=0; train_index0) { - dt = tfocus_dist/vz; - t = tfocus_time-dt; /* Set time to hit time window center */ - t += randpm1()*tfocus_width/2.0; - if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ - if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; - w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); - } else { - /* Simple, random wavelength @ random time */ - t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; - w_tfocus=1; - } - - if (iscold) { //case: cold moderator - /* Apply simple engineering reality correction */ - ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= c_performance; - p *= ColdScalars[beamline-1]; - } else { //case: thermal moderator - ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= t_performance; - p *= ThermalScalars[beamline-1]; - } - p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; - t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ - p*=cos_factor; - /* Correct weight for sampling of cold vs. thermal events. */ - if (iscold) { - p /= cold_frac; - } else { - p /= (1-cold_frac); - } - - // Generate ray as normal with its associated p and t - // Save these to t_offset and p_train - - t_offset[train_index] = t; - p_trains[train_index] = p/adaptive_N; - P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; - } - // Set base particle t and p, now p will be decoupled from the source intensity. - t=0; - p=P_last_time_manipulation; - - SCATTER; -%} - -MCDISPLAY -%{ - #ifndef OPENACC - magnify(""); - butterfly_geometry(delta_y, jmax, cx, cz, - orientation_angle, Beamlines, tx,ty,tz, - rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, - rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, - r11, r12, r21, r22, focus_xw, focus_yh); - #endif -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Graphite_Diffuser.comp deleted file mode 100644 index ea21aa714e..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/Graphite_Diffuser.comp +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************* -* -* McStas, version 1.2 released February 2000 -* Maintained by Kristian Nielsen and Kim Lefmann, -* Risoe National Laboratory, Roskilde, Denmark -* -* %IDENTIFICATION -* -* Written by: Manuel Morgano -* Date: 18 Febrauary 2015 -* Version: $Revision: 1.1.1.1 $ -* Origin: PSI -* -* Graphite diffuser -* -* %DESCRIPTION -* -* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics -* -* The formula has only been verified for a diffuser thickness of 1 and 2 cm. -* No absorption is take into account. -* -* %PARAMETERS -* -* INPUT PARAMETERS: -* -* xwidth: (m) Size of diffuser -* ywidth: (m) Size of diffuser -* thick: (m) Thickness of diffuser -* abs (1) 0 = no absorption, 1 = absorption -* %LINKS -* %END -* -*******************************************************************************/ - -DEFINE COMPONENT Graphite_Diffuser -DEFINITION PARAMETERS () -SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) -OUTPUT PARAMETERS () -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) -SHARE -%{ - double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ -{ - double rand1, rand2; - rand1 = rand01();// / ((double) RAND_MAX); - if(rand1 < 1e-100) rand1 = 1e-100; - rand1 = -2 * log(rand1); - rand2 = (rand01()) * 6.2831853071795864769252866; - - return (sigma * sqrt(rand1) * cos(rand2)) + mu; -} -%} -INITIALIZE -%{ -%} -TRACE -%{ - - double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; - double dt; - PROP_Z0; - if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi -* Date: 14th Feb 2000. -* Origin: ILL -* Release: McStas 1.6 -* Version: $Revision$ -* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi -* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) -* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster -* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) -* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) -* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) -* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) -* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) -* -* This component is a general Monitor that can output 0/1/2D signals -* (Intensity or signal vs. [something] and vs. [something] ...) -* -* %Description -* This component is a general Monitor that can output 0/1/2D signals -* It can produce many 1D signals (one for any variable specified in -* option list), or a single 2D output (two variables correlation). -* Also, an additional 'list' of neutron events can be produced. -* By default, monitor is square (in x/y plane). A disk shape is also possible -* The 'cylinder' and 'banana' option will change that for a banana shape -* The 'sphere' option simulates spherical detector. The 'box' is a box. -* The cylinder, sphere and banana should be centered on the scattering point. -* The monitored flux may be per monitor unit area, and weighted by -* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. -* In normal configuration, the Monitor_nD measures the current parameters -* of the neutron that is beeing detected. But a PreMonitor_nD component can -* be used in order to study correlations between a neutron being detected in -* a Monitor_nD place, and given parameters that are monitored elsewhere -* (at PreMonitor_nD). -* The monitor can also act as a 3He gas detector, taking into account the -* detection efficiency. -* -* The 'bins' and 'limits' modifiers are to be used after each variable, -* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 -* limits=[-5 5]) When placed after all variables, these two latter modifiers -* apply to the signal (e.g. intensity). Unknown keywords are ignored. -* If no limits are specified for a given observable, reasonable defaults will be -* applied. Note that these implicit limits are even applied in list mode. -* -* Implicit limits for typical variables: -* (consult monitor_nd-lib.c if you don't find your variable here) -* x, y, z: Derived from detection-object geometry -* k: [0 10] Angs-1 -* v: [0 1e6] m/s -* t: [0 1] s -* p: [0 FLT_MAX] in intensity-units -* vx, vy: [-1000 1000] m/s -* vz: [0 10000] m/s -* kx, ky: [-1 1] Angs-1 -* kz: [-10 10] Angs-1 -* energy, omega: [0 100] meV -* lambda,wavelength: [0 100] Angs -* sx, sy, sz: [-1 1] in polarisation-units -* angle: [-50 50] deg -* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg -* longitude, lattitude: [-180 180] deg -* neutron: [0 simulaton_ncount] -* id, pixel id: [0 FLT_MAX] -* uservars u1,u2,u3: [-1e10 1e10] -* -* In the case of multiple components at the same position, the 'parallel' -* keyword must be used in each instance instead of defining a GROUP. -* -* Possible options are -* Variables to record: -* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm -* vx vy vz v [m/s] Velocity on x,y,z and norm -* x y z radius [m] Distance, Position and norm -* xy, yz, xz [m] Radial position in xy, yz and xz plane -* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane -* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane -* t time [s] Time of Flight -* energy omega [meV] energy of neutron -* lambda wavelength [Angs] wavelength of neutron -* sx sy sz [1] Spin -* vdiv ydiv dy [deg] vertical divergence (y) -* hdiv divergence xdiv [deg] horizontal divergence (x) -* angle [deg] divergence from direction -* theta longitude [deg] longitude (x/z) for sphere and cylinder -* phi lattitude [deg] lattitude (y/z) for sphere and cylinder -* -* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} -* user2 user3 to be assigned in an other component (see below) -* -* p intensity flux [n/s or n/cm^2/s] -* ncounts n neutron [1] neutron ID, i.e current event index -* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. -* -* Other options keywords are: -* abs Will monitor the abs of the following variable or of the signal (if used after all variables) -* auto Automatically set detector limits for one/all -* all {limits|bins|auto} To set all limits or bins values or auto mode -* binary {float|double} with 'source' option, saves in compact files -* bins=[bins=20] Number of bins in the detector along dimension -* borders To also count off-limits neutrons (X < min or X > max) -* capture weight by lambda/lambda(2200m/s) capture flux -* file=string Detector image file name. default is component name, plus date and variable extension. -* incoming Monitor incoming beam in non flat det -* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) -* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events -* log Will monitor the log of the following variable or of the signal (if used after all variables) -* min=[min_value] Same as limits, but only sets the min or max -* max=[max_value] -* multiple Create multiple independant 1D monitors files -* no or not Revert next option -* outgoing Monitor outgoing beam (default) -* parallel Use this option when the next component is at the same position (parallel components) -* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. -* per steradian Displays beam solid angle in steradian -* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. -* signal=[var] Will monitor [var] instead of usual intensity -* slit or absorb Absorb neutrons that are out detector -* source The monitor will save neutron states -* inactivate To inactivate detector (0D detector) -* verbose To display additional informations -* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) -* -* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) -* box Box of size xwidth, yheight, zdepth. -* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). -* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). -* disk Disk flat xy monitor. diameter is xwidth. -* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). -* square Square flat xy monitor (xwidth, yheight). -* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. -* -* EXAMPLES: -*
    -*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, -*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with -*   borders, file = mon1"); -* will monitor neutron angle from [z] axis, between -5 -* and 5 degrees, in 10 bins, into "mon1.A" output 1D file -* -*
  • options = "sphere theta phi outgoing" -* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" -* -*
  • options = "banana, theta limits=[10,130], bins=120, y" -* a theta/height banana detector -* -*
  • options = "angle radius all auto" -* is a 2D monitor with automatic limits -* -*
  • options = "list=1000 kx ky kz energy" -* records 1000 neutron event in a file -* -*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" -* makes 4 output 1D files and produces a complete list for all neutrons -* and monitor log(abs(tof)) within automatic limits (for t) -* -*
  • options = "theta y, sphere, pixel min=100" -* a 4pi detector which outputs an event list with pixelID from the actual -* detector surface, starting from index 100. -* -*
-* To dynamically define a number of bins, or limits: -* Use in DECLARE: char op[256]; -* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); -* Use in TRACE: Monitor_nD(... options=op ...) -* -* How to monitor any instrument/component variable into a Monitor_nD -* Suppose you want to monitor a variable 'age' which you assign somwhere in -* the instrument: -* COMPONENT MyMonitor = Monitor_nD( -* xwidth = 0.1, yheight = 0.1, -* user1="age", username1="Age of the Captain [years]", -* options="user1, auto") -* AT ... -* -* See also the example in PreMonitor_nD to -* monitor neutron parameters cross-correlations. -* -* %BUGS -* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI -* as each process may use different limits. -* -* %Parameters -* INPUT PARAMETERS: -* -* xwidth: [m] Width of detector. -* yheight: [m] Height of detector. -* zdepth: [m] Thickness of detector (z). -* radius: [m] Radius of sphere/banana shape monitor -* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). -* -* Optional input parameters (override xwidth yheight zdepth): -* xmin: [m] Lower x bound of opening -* xmax: [m] Upper x bound of opening -* ymin: [m] Lower y bound of opening -* ymax: [m] Upper y bound of opening -* zmin: [m] Lower z bound of opening -* zmax: [m] Upper z bound of opening -* filename: [str] Output file name (overrides file=XX option). -* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins -* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits -* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits -* user1: [str] Variable name of USERVAR to be monitored by user1. -* user2: [str] Variable name of USERVAR to be monitored by user2. -* user3: [str] Variable name of USERVAR to be monitored by user3. -* username1: [str] Name assigned to User1 -* username2: [str] Name assigned to User2 -* username3: [str] Name assigned to User3 -* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. -* geometry: [str] Name of an OFF file to specify a complex geometry detector -* nowritefile: [1] If set, monitor will skip writing to disk -* -* CALCULATED PARAMETERS: -* -* DEFS: [struct] structure containing Monitor_nD Defines -* Vars: [struct] structure containing Monitor_nD variables -* -* %Link -* PreMonitor_nD -* -* %End -******************************************************************************/ -DEFINE COMPONENT Monitor_nD - -SETTING PARAMETERS ( - string user1="", string user2="", string user3="", - xwidth=0, yheight=0, zdepth=0, - xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, - int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, - string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, - string username1="NULL", string username2="NULL", string username3="NULL", - int tsplit=0, int adaptive_target=0 -) -/* these are protected C variables */ - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -SHARE -%{ - %include "monitor_nd-lib" - %include "read_table-lib" - %include "interoff-lib" -%} - -DECLARE -%{ - MonitornD_Defines_type DEFS; - MonitornD_Variables_type Vars; - MCDETECTOR detector; - off_struct offdata; -%} - -INITIALIZE -%{ - char tmp[CHAR_BUF_LENGTH]; - strcpy (Vars.compcurname, NAME_CURRENT_COMP); - Vars.compcurindex = INDEX_CURRENT_COMP; - if (options != NULL) - strncpy (Vars.option, options, CHAR_BUF_LENGTH); - else { - strcpy (Vars.option, "x y"); - printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); - } - Vars.compcurpos = POS_A_CURRENT_COMP; - - if (strstr (Vars.option, "source")) - strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); - - if (bins) { - sprintf (tmp, " all bins=%ld ", (long)bins); - strcat (Vars.option, tmp); - } - if (min > -FLT_MAX && max < FLT_MAX) { - sprintf (tmp, " all limits=[%g %g]", min, max); - strcat (Vars.option, tmp); - } else if (min > -FLT_MAX) { - sprintf (tmp, " all min=%g", min); - strcat (Vars.option, tmp); - } else if (max < FLT_MAX) { - sprintf (tmp, " all max=%g", max); - strcat (Vars.option, tmp); - } - - /* transfer, "zero", and check username- and user variable strings to Vars struct*/ - strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); - strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); - strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); - if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { - strncpy (Vars.UserVariable1, user1, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable1, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); - } - } - if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { - strncpy (Vars.UserVariable2, user2, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable2, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); - } - } - if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { - strncpy (Vars.UserVariable3, user3, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable3, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); - } - } - - /*sanitize parameters set for curved shapes*/ - if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { - /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ - if (!radius) { - if (xwidth) { - radius = xwidth / 2.0; - } else { - radius = zdepth / 2.0; - } - } else { - xwidth = 2 * radius; - } - if (!yheight) { - /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ - yheight = 2 * radius; - } - } else if (radius) { - /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values - (xwidth etc. They are used inside monitor_nd-lib.*/ - xwidth = zdepth = 2 * radius; - if (yheight) { - /*a height is given (and no shape explitly set - assume cylinder*/ - strcat (Vars.option, " banana"); - } else { - strcat (Vars.option, " sphere"); - yheight = 2 * radius; - } - } - - int offflag = 0; - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - #ifndef USE_OFF - fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); - exit (-1); - #else - if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { - printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" - " Defaulting to normal Monitor dimensions.\n", - NAME_CURRENT_COMP, geometry); - strcpy (geometry, ""); - } else { - offflag = 1; - } - #endif - } - - if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) - exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); - - Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); - - if (Vars.Flag_OFF) { - offdata.mantidflag = Vars.Flag_mantid; - offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; - } - - if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) - strncpy (Vars.Mon_File, filename, 128); - - /* check if user given filename with ext will be used more than once */ - if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { - char* XY; - XY = strrchr (Vars.Mon_File, '.'); - *XY = '_'; - } - - if (restore_neutron) - Vars.Flag_parallel = 1; - detector.m = 0; - - #ifdef USE_MPI - MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) - printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" - "WARNING this may create incorrect distributions (but integrated flux will be right).\n", - NAME_CURRENT_COMP);); - #else - #ifdef OPENACC - if (strstr (Vars.option, "auto")) - printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" - "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", - NAME_CURRENT_COMP); - #endif - #endif -%} - -TRACE -%{ - double transmit_he3 = 1.0; - double multiplier_capture = 1.0; - double t0 = 0; - double t1 = 0; - int pp; - int intersect = 0; - char Flag_Restore = 0; - - #ifdef OPENACC - #ifdef USE_OFF - off_struct thread_offdata = offdata; - #endif - #else - #define thread_offdata offdata - #endif - - //double *pp_array=malloc(sizeof(double)*N_trains); - double pp_this; - double pp_total=0; - /* this is done automatically - STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - */ - #ifdef USE_OFF - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - /* determine intersections with object */ - intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); - if (Vars.Flag_mantid) { - if (intersect) { - Vars.OFF_polyidx = thread_offdata.nextintersect; - } else { - Vars.OFF_polyidx = -1; - } - } - } else - #endif - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ - { - // propagate to xy plane and find intersection - // make sure the event is recoverable afterwards - t0 = t; - ALLOW_BACKPROP; - PROP_Z0; - if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful - { - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { - // square xy - intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); - } else { - // disk xy - intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); - } - } else { - intersect = 0; - } - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ - { - intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); - /* intersect = (intersect && t0 > 0); */ - } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ - { - intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ - { - intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ - { - intersect = 1; - } - - if (intersect) { - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) - || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { - /* check if we have to remove the top/bottom with BANANA shape */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { - if (intersect == 1) { // Entered and left through sides - if (t0 < 0 && t1 > 0) { - t0 = t; /* neutron was already inside ! */ - } - if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ - t1 = t; - } - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - intersect = 0; - Flag_Restore = 1; - } - } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - intersect = 0; - Flag_Restore = 1; - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit - intersect = 0; - Flag_Restore = 1; - } else { - printf ("Cylinder_intersect returned unexpected value %i\n", intersect); - } - } else { - // All other shapes than the BANANA - if (t0 < 0 && t1 > 0) - t0 = t; /* neutron was already inside ! */ - if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ - t1 = t; - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) - PROP_DT (t1); /* t1 outgoing beam */ - else - PROP_DT (t0); /* t0 incoming beam */ - } - - /* Final test if we are on lid / bottom of banana/sphere */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { - if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { - intersect = 0; - Flag_Restore = 1; - } - } - } - } - - if (intersect) { - /* Now get the data to monitor: current or keep from PreMonitor */ - /* if (Vars.Flag_UsePreMonitor != 1)*/ - /* {*/ - /* Vars.cp = p;*/ - /* Vars.cx = x;*/ - /* Vars.cvx = vx;*/ - /* Vars.csx = sx;*/ - /* Vars.cy = y;*/ - /* Vars.cvy = vy;*/ - /* Vars.csy = sy;*/ - /* Vars.cz = z;*/ - /* Vars.cvz = vz;*/ - /* Vars.csz = sz;*/ - /* Vars.ct = t;*/ - /* }*/ - - if ((Vars.He3_pressure > 0) && (t1 != t0) - && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { - transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); - /* will monitor the absorbed part */ - p = p * (1 - transmit_he3); - } - - if (Vars.Flag_capture) { - multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); - if (multiplier_capture != 0) - multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ - p = p * multiplier_capture / 1.7985; - } - - - int train_index; - double p_original = p; - double p_factor = p/P_last_time_manipulation; - - if (adaptive_target) { - #pragma acc atomic - total_N_sent += adaptive_N; - #pragma acc atomic - total_rays_sent++; - } - - if (tsplit==1) { - double t_original = t; - for (train_index=0; train_index 0) { - p = p_factor*p_trains[train_index]; - t = t_original + t_offset[train_index]; - - //pp_array[train_index] - pp_this = Monitor_nD_Trace (&DEFS, &Vars, _particle); - - if (adaptive_target) total_arrived++; - - } else pp_this = 0;//pp_array[train_index] = 0; - pp_total+=pp_this; - } - p = p_original; - t = t_original; - - //int pp_total = 0; - //for (train_index=0; train_index 0) { - SCATTER; - } - - } else { - - /* - // Now just use normal p - double total_p = 0; - for (train_index=0; train_index 0) { - /* after monitor, only remains 1-p_detect */ - p = p * transmit_he3 / (1.0 - transmit_he3); - } - - if (Vars.Flag_capture) { - p = p / multiplier_capture * 1.7985; - } - - if (Vars.Flag_parallel) /* back to neutron state before detection */ - Flag_Restore = 1; - } /* end if intersection */ - else { - if (Vars.Flag_Absorb && !Vars.Flag_parallel) { - // restore neutron ray before absorbing for correct mcdisplay - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - ABSORB; - } else - Flag_Restore = 1; /* no intersection, back to previous state */ - } - - if (Flag_Restore) { - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - } -%} - -SAVE -%{ - if (!nowritefile) { - /* save results, but do not free pointers */ - detector = Monitor_nD_Save (&DEFS, &Vars); - } -%} - -FINALLY -%{ - /* free pointers */ - Monitor_nD_Finally (&DEFS, &Vars); -%} - -MCDISPLAY -%{ - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - off_display (offdata); - } else { - Monitor_nD_McDisplay (&DEFS, &Vars); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp deleted file mode 100644 index 82b28b3944..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/MultiDiskChopper.comp +++ /dev/null @@ -1,361 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2015, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: MultiDiskChopper -* -* %I -* Written by: Markus Appel -* Date: 2015-10-19 -* Origin: ILL / FAU Erlangen-Nuernberg -* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), -* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by -* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) -* -* %D -* Models a disk chopper with a freely configurable slit pattern. For simple applications, -* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. -* If the chopper slit pattern should be dynamically configurable or a complicated pattern -* is to be used as first chopper on a continuous source, use this component. -* -* Width and position of the slits is defined as a list in string parameters so -* they can easily be taken from instrument parameters. -* The chopper axis is located on the y axis as defined by the parameter delta_y. -* When the chopper is the first chopper after a continuous (i.e. time-independent) -* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. -* -* -* Examples (see parameter definitions for details): -* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, delay=0.02) -* -* First chopper on a continuous source, creating pulse trains for one additional revolution -* before and after the revolution at t=0: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) -* -* %P -* INPUT PARAMETERS: -* -* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" -* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) -* nslits: [] Number of slits to read from slit_width and slit_center -* radius: [m] Outer radius of the disk -* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. -* nu: [Hz] Rotation speed of the disk, the sign determines the direction. -* -* Optional parameters: -* verbose: [0/1] Set to 1 to display more information during the simulation. -* phase: [deg] Phase angle located on top of the disk at t=delay (see below). -* delay: [s] Time delay of the chopper clock. -* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. -* jitter: [s] Jitter in the time phase. -* abs_out: If 1, absorb all neutrons outside the disk diameter. -* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events -* will be shifted in time to pass the component (with adapted weight). -* -* Additional parameters when isfirst=1 (that have no effect for isfirst=0): -* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. -* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). -* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT MultiDiskChopper - -SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) - - -DECLARE -%{ - double T; - double To; - double omega; - double* dslit_center; - double* dhslit_width; - double* t0; - double* t1; -%} - -INITIALIZE -%{ - char* pch; - int i; - double sense; - - phase = remainder (phase, 360.0) * DEG2RAD; - omega = 2.0 * PI * nu; /* rad/s */ - sense = (omega < 0) ? -1 : 1; - - if (isfirst && (nrev - floor (nrev) != 0)) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) - exit (-1); - } - - if (!omega) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - - if (nslits <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) - } - - // Read slits in array - dslit_center = malloc (nslits * sizeof (*dslit_center)); - pch = strtok (slit_center, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dslit_center[i] = atof (pch); - pch = strtok (NULL, ";_, "); - - if ((dslit_center[i] < 0)) { - while (dslit_center[i] < 0) { - dslit_center[i] += 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - if ((dslit_center[i] >= 360.0)) { - while (dslit_center[i] >= 360.0) { - dslit_center[i] -= 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - dslit_center[i] *= DEG2RAD; - } - - // dhslit_width: HALF slit width - dhslit_width = malloc (nslits * sizeof (*dhslit_width)); - pch = strtok (slit_width, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dhslit_width[i] = 0.5 * atof (pch); - pch = strtok (NULL, ";_, "); - if (dhslit_width[i] <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) - exit (-1); - } - dhslit_width[i] *= DEG2RAD; - } - - /* Calculate delay from phase and vice versa */ - if (phase) { - if (delay) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) - } - phase -= delay * omega; - delay = -phase / omega; - } else { - phase = delay * omega; - } - - /* Time for 1 revolution */ - T = 2.0 * PI / fabs (omega); - - // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE - - /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ - - // generate times t1: duration of slit openings (or their cumulative sum if !equal) - // dhslit_width is already in rad - t1 = malloc (nslits * sizeof (*t1)); - t1[0] = 2.0 * dhslit_width[0] / fabs (omega); - To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit - - for (i = 1; i < nslits; i++) { - t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); - To += (2.0 * dhslit_width[i] / fabs (omega)); - } - - // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) - t0 = malloc (nslits * sizeof (*t0)); - t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); - - for (i = 1; i < nslits; i++) { - t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); - } - - MPI_MASTER (if (verbose) { - printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); - printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); - printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); - - if (isfirst && equal) - printf (" --- first chopper distributing events equally on all slits\n"); - - if (isfirst && !equal) - printf (" --- first chopper distributing events proportional to slit size\n"); - - if (isfirst) - printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); - - printf (" --- Slit center [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", dslit_center[i] * RAD2DEG); - printf ("\n"); - printf (" --- Slit width [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); - printf ("\n"); - - // dump internal arrays for debugging - if (verbose == 2) { - printf (" --- Internal arrays:\n"); - printf (" --- i t0 t1 dslit_center dhslit_width\n"); - for (i = 0; i < nslits; i++) { - printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); - } - } - }) - %} - -TRACE -%{ - double phi; - double xprime, yprime; - double toff; - int irev, islit; - - // Propagate into the chopper disk plane - PROP_Z0; - - if (delta_y > 0) { - // 'anormal' case, chopper above guide - // mirror coordinate system - xprime = -x; - yprime = -y + delta_y; - } else { - // 'normal' case, chopper below guide - xprime = x; - yprime = y - delta_y; - } - - // Is neutron transmitted/absorbed outside the disk diameter ? - if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) - if (abs_out) { - ABSORB; - } else { - SCATTER; - } - else { - if (isfirst) { - irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); - - if (equal) { - // Distribute neutrons equally over slits - t = rand01 () * nslits; - islit = (t == nslits) ? nslits - 1 : floor (t); - t = (t - islit) * t1[islit]; - - p *= t1[islit] / T * nslits; - } else { - // Distribute neutrons proportional to slit size - t = rand01 () * To; - islit = 0; - while (t1[islit] < t) - islit++; - - /* weight correction: chopper slits transmission opening time per full revolution time */ - p *= To / T; - } - - // offset time stamp according to slit phase, neutron position and jitter - t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); - - } else { - - // Check whether each t_offset carried by the ray make it through - double weight_update = p/P_last_time_manipulation; - P_last_time_manipulation = 0; - - int train_index; - int one_did_hit = 0; - int this_t_hit; - double this_train_t; - int all_dead = 1; - double p_total = 0; - for (train_index=0; train_index=1) -AT (0, 0, 0) RELATIVE bp1_position -ROTATED (0, 0, 180) RELATIVE bp1_position - -COMPONENT g2b1 = Guide_four_side( - w1l = 0.02521, linwl = 1.4502500000000005, - loutwl = 11.14005, w1r = 0.02521, - linwr = 1.4502500000000005, loutwr = 11.14005, - h1u = 0.031505, linhu = 8.45025, - louthu = 27.140050000000002, h1d = 0.031505, - linhd = 8.45025, louthd = 27.140050000000002, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.446250000000001) RELATIVE optical_axis - -COMPONENT g2b2 = Guide_four_side( - w1l = 0.02811, linwl = 1.8707999999999991, - loutwl = 9.67745, w1r = 0.02811, - linwr = 1.8707999999999991, loutwr = 9.67745, - h1u = 0.03203, linhu = 8.8708, - louthu = 25.67745, h1d = 0.03203, - linhd = 8.8708, louthd = 25.67745, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.8668) RELATIVE optical_axis - -COMPONENT g2b3 = Guide_four_side( - w1l = 0.03493, linwl = 3.3230500000000003, - loutwl = 8.2252, w1r = 0.03493, - linwr = 3.3230500000000003, loutwr = 8.2252, - h1u = 0.033615, linhu = 10.32305, - louthu = 24.2252, h1d = 0.033615, - linhd = 10.32305, louthd = 24.2252, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 10.31905) RELATIVE optical_axis - -COMPONENT g2b4 = Guide_four_side( - w1l = 0.03862, linwl = 4.7858, - loutwl = 7.804500000000001, w1r = 0.03862, - linwr = 4.7858, loutwr = 7.804500000000001, - h1u = 0.03488, linhu = 11.7858, - louthu = 23.8045, h1d = 0.03488, - linhd = 11.7858, louthd = 23.8045, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 11.7818) RELATIVE optical_axis - -COMPONENT fo2_position = Arm() -AT (0, 0, 12.2) RELATIVE optical_axis - -COMPONENT fo_chopper_2 = MultiDiskChopper( - slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", - nslits = 6, delta_y = -0.46, - nu = -42.0, jitter = jitter_fo_chopper_2, - phase = fo2_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo2_position -ROTATED (0, 0, 180) RELATIVE fo2_position - -COMPONENT bp2_position = Arm() -AT (0, 0, 12.25) RELATIVE optical_axis - -COMPONENT bp_chopper2 = DiskChopper( - theta_0 = 67.49, radius = 0.5, - yheight = 0.08, nu = bp_frequency, - nslit = 1, jitter = jitter_bp2, - phase = bp2_phase -141.795) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp2_position -ROTATED (0, 0, 180) RELATIVE bp2_position - -COMPONENT g2c1 = Guide_four_side( - w1l = 0.03929, linwl = 5.250249999999999, - loutwl = 6.536899999999999, w1r = 0.03929, - linwr = 5.250249999999999, loutwr = 6.536899999999999, - h1u = 0.03488, linhu = 12.25025, - louthu = 22.5369, h1d = 0.03488, - linhd = 12.25025, louthd = 22.5369, - l = 1.2128500000000013, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 12.254249999999999) RELATIVE optical_axis - -COMPONENT t0_start_position = Arm() -AT (0, 0, 13.503) RELATIVE optical_axis - -COMPONENT t0_chopper_alpha = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_start_position -ROTATED (0, 0, 180) RELATIVE t0_start_position - -COMPONENT t0_end_position = Arm() -AT (0, 0, 13.703) RELATIVE optical_axis - -COMPONENT t0_chopper_beta = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_end_position -ROTATED (0, 0, 180) RELATIVE t0_end_position - -COMPONENT g3a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03611, linhu = 13.7559, - louthu = 20.2631, h1d = 0.03611, - linhd = 13.7559, louthd = 20.2631, - l = 1.981, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 13.7379) RELATIVE optical_axis - -COMPONENT g3a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03687, linhu = 15.7409, - louthu = 19.0055, h1d = 0.03687, - linhd = 15.7409, louthd = 19.0055, - l = 1.2535999999999987, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 15.7229) RELATIVE optical_axis - -COMPONENT fo3_position = Arm() -AT (0, 0, 16.9865) RELATIVE optical_axis - -COMPONENT fo_chopper_3 = MultiDiskChopper( - slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", - nslits = 6, delta_y = -0.5575, - nu = -28.0, jitter = jitter_fo_chopper_3, - phase = fo3_phase, radius = 0.6) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo3_position -ROTATED (0, 0, 180) RELATIVE fo3_position - -COMPONENT g3b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03711, linhu = 17.0055, - louthu = 18.038, h1d = 0.03711, - linhd = 17.0055, louthd = 18.038, - l = 0.9564999999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 16.9965) RELATIVE optical_axis - -COMPONENT g4a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.2600000000000016, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 17.964) RELATIVE optical_axis - -COMPONENT monitor_2_position = Arm() -AT (0, 0, 19.245) RELATIVE optical_axis - -COMPONENT g4a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 19.25) RELATIVE optical_axis - -COMPONENT g4a3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.4252499999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 21.25025) RELATIVE optical_axis - -COMPONENT fo4_position = Arm() -AT (0, 0, 23.6855) RELATIVE optical_axis - -COMPONENT fo_chopper_4 = MultiDiskChopper( - slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_4, - phase = fo4_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo4_position -ROTATED (0, 0, 180) RELATIVE fo4_position - -COMPONENT g4b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.5565999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 23.6955) RELATIVE optical_axis - -COMPONENT g4b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.7800000000000011, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 24.2561) RELATIVE optical_axis - -COMPONENT g4b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.1380000000000017, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 26.0366) RELATIVE optical_axis - -COMPONENT g4b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 28.1786) RELATIVE optical_axis - -COMPONENT g4b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.4049499999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 30.17885) RELATIVE optical_axis - -COMPONENT g4b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.4106999999999985, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 31.5893) RELATIVE optical_axis - -COMPONENT g5a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, linhu = 18.0, - louthu = 17.005499999999998, h1d = 0.037165, - linhd = 18.0, louthd = 17.005499999999998, - l = 0.9945000000000022, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 32.0) RELATIVE optical_axis - -COMPONENT fo5_position = Arm() -AT (0, 0, 33.005) RELATIVE optical_axis - -COMPONENT fo_chopper_5 = MultiDiskChopper( - slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_5, - phase = fo5_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo5_position -ROTATED (0, 0, 180) RELATIVE fo5_position - -COMPONENT g5b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037105, linhu = 19.005499999999998, - louthu = 14.994750000000003, h1d = 0.037105, - linhd = 19.005499999999998, louthd = 14.994750000000003, - l = 1.9997499999999988, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 33.015499999999996) RELATIVE optical_axis - -COMPONENT g5b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.036645, linhu = 21.00575, - louthu = 12.994950000000003, h1d = 0.036645, - linhd = 21.00575, louthd = 12.994950000000003, - l = 1.999299999999998, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 35.01575) RELATIVE optical_axis - -COMPONENT g5b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.035695, linhu = 23.009500000000003, - louthu = 10.990749999999998, h1d = 0.035695, - linhd = 23.009500000000003, louthd = 10.990749999999998, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 37.0195) RELATIVE optical_axis - -COMPONENT g5b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03423, linhu = 25.009749999999997, - louthu = 8.990499999999997, h1d = 0.03423, - linhd = 25.009749999999997, louthd = 8.990499999999997, - l = 1.999750000000006, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 39.019749999999995) RELATIVE optical_axis - -COMPONENT g5b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03217, linhu = 27.0135, - louthu = 6.986750000000001, h1d = 0.03217, - linhd = 27.0135, louthd = 6.986750000000001, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 41.0235) RELATIVE optical_axis - -COMPONENT g5b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.029395, linhu = 29.01375, - louthu = 6.5, h1d = 0.029395, - linhd = 29.01375, louthd = 6.5, - l = 0.4862499999999983, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.02375) RELATIVE optical_axis - -COMPONENT g6a1 = Guide_four_side( - w1l = 0.04004, linwl = 6.5, - loutwl = 4.9864999999999995, w1r = 0.04004, - linwr = 6.5, loutwr = 4.9864999999999995, - h1u = 0.02859, linhu = 29.5, - louthu = 4.9864999999999995, h1d = 0.02859, - linhd = 29.5, louthd = 4.9864999999999995, - l = 1.5135000000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.51) RELATIVE optical_axis - -COMPONENT g6a2 = Guide_four_side( - w1l = 0.038935, linwl = 8.017499999999998, - loutwl = 2.982750000000003, w1r = 0.038935, - linwr = 8.017499999999998, loutwr = 2.982750000000003, - h1u = 0.02567, linhu = 31.0175, - louthu = 2.982750000000003, h1d = 0.02567, - linhd = 31.0175, louthd = 2.982750000000003, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 3, - myd = 3) -AT (0, 0, 45.027499999999996) RELATIVE optical_axis - -COMPONENT g6a3 = Guide_four_side( - w1l = 0.03367, linwl = 10.01775, - loutwl = 1.0, w1r = 0.03367, - linwr = 10.01775, loutwr = 1.0, - h1u = 0.02049, linhu = 33.01775, - louthu = 1.0, h1d = 0.02049, - linhd = 33.01775, louthd = 1.0, - l = 1.9822500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 47.02775) RELATIVE optical_axis - -COMPONENT guide_end = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT monitor_3_position = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT start_backend = Arm() -AT (0, 0, 0) RELATIVE optical_axis - -COMPONENT optical_axis_backend = Arm() -AT (0, 0, 0) RELATIVE start_backend - -COMPONENT pinhole_2 = Slit( - xwidth = 0.03, yheight = 0.03) -AT (0, 0, 50) RELATIVE optical_axis_backend - -COMPONENT graph = Graphite_Diffuser( - xwidth = 0.1, ywidth = 0.1, - thick = 0.2) -AT (0, 0, 50.001) RELATIVE optical_axis_backend - -COMPONENT sample_monitor_arm = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -COMPONENT sample_PSD = Monitor_nD( - filename="image.dat", xwidth=0.3, yheight=0.3, - options="x bins 300 y bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT profile_x = Monitor_nD( - filename="profile_x.dat", xwidth=0.3, yheight=0.3, - options="x bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT profile_y = Monitor_nD( - filename="profile_y.dat", xwidth=0.3, yheight=0.3, - options="y bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT wavelength = Monitor_nD( - filename="wavelength.dat", xwidth=0.3, yheight=0.3, - options="L bins 300 limits [0.5 10]") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT tof = Monitor_nD( - filename="time.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15]", - tsplit=1, adaptive_target=1) -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT wavelength_tof = Monitor_nD( - filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", - tsplit=1) -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT sample_position = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -SAVE -%{ - #ifndef _MSC_EXTENSIONS - MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "a"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); - ); - #endif -%} - -FINALLY -%{ -%} - - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/bi_spec_ellipse.comp deleted file mode 100644 index c24fb3cdea..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train4/bi_spec_ellipse.comp +++ /dev/null @@ -1,794 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2011, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: Bi-spectral extracion system -* -* %I -* Written by: Manuel Morgano -* Date: April 2015 -* Version: $Revision: 2.3 $ -* Origin: PSI -* Release: McStas 1.12c -* -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* -* %D -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* The supermirror number can be automatically calculated (setting the number to 0) or given -* Each mirror can be split in submirror pieces, each of them offseted by a constant angle -* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. -* The feeder's shape is calculated by the distance between the guide entrance and the first focus, -* the distance between the exit and the second focus, the length of the coated part and the opening -* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. -* User can specify different shapes for the horizontal and the vertical ellipse. -* Setting the m-coating to 0 means absorbing, -1 means transparent. -* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn -* but it's transparent. -* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. -* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. -* -* -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %P -* INPUT PARAMETERS: -* -* xheight: (m) height of mirror stack -* ywidth: (m) width of mirror plate -* zlength: (m) length of the mirror -* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) -* n_pieces (1) number of straight section per mirror -* tilt (degrees) angle between the mirrors and the horizontal direction -* angular_offset (degrees) angle between subsequent sub-mirrors -* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. -* R0_m: (1) Low-angle reflectivity -* Qc_m: (AA-1) Critical scattering vector -* alpha_mirror_m: (AA) Slope of reflectivity -* W_m: (AA-1) Width of supermirror cut-off -* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. -* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. -* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. -* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. -* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. -* ell_l: (m) length of the coated part of the ellipse -* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors -* ell_w: (m) width of the ellipse entrance -* ell_m: (1) m-value of the coating of the ellipse -* R0: (1) Low-angle reflectivity -* Qc: (AA-1) Critical scattering vector -* alpha_mirror: (AA) Slope of reflectivity -* W: (AA-1) Width of supermirror cut-off -* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* cut: (1) cutoff for lowest reflectivity consideration. -* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file -* -* %D -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT bi_spec_ellipse -DEFINITION PARAMETERS () - SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) -OUTPUT PARAMETERS (pTable) -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) - -SHARE -%{ -%include "read_table-lib" -%} - -DECLARE -%{ - t_Table pTable; - -%} - -INITIALIZE -%{ - - if (reflect && strlen(reflect)) { - if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); - } - if (n_mirror==1) - exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); - - -%} - -TRACE -%{ - - double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; - double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; - double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; - double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; - char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; - int i=1,j=1; - PROP_Z0; - if(n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ - mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ - l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ - for(i=floor(n_pieces*0.5);i>0;i--) - sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ - sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ - alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ - l_acc=0; /* keeps track of the neutron z position */ - h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ - - if (substrate==1) { - sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ - sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ - sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ - } - - - - if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ - ell_h=2*sec_pos; - if ((ell_h==0)&&(alpha<0)) - ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); - - /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ - f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - z0_x=f_x-d_focus_1_x; - b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); - a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); - - /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ - f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); - z0_y=f_y-d_focus_1_y; - b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); - a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); - for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ - for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ - int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ - int_t=(int_z-z)/vz; /* time for intersection */ - int_x=x+vx*int_t; /* x of intersection */ - int_y=y+vy*int_t; /* y of intersection */ - is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ - is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); - is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - - /******************************** INTERSECTION WITH X ELLIPSE **********************************/ - if((xdelta>0)&&(ell_m!=-1)) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - - - xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ - xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); - xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); - - if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ - if (xell_int_x>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - - PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - - continue; - } - } - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ - if((ydelta>0)&&(ell_m!=-1)) { - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - - yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ - yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); - yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); - - if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ - if (yell_int_y>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - continue; - } - } - - - /******************************** INTERSECTION WITH MIRROR STACK **********************************/ - - if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ - if(m == 0) - ABSORB; - if (reflect_mirror && strlen(reflect_mirror)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { /* reflectivity for the q of the neutorn */ - arg_stack = ((q-m*Qc_m)/W_m); - if(arg_stack < cut) - weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ - else - - { - i++; - j=0; - if (substrate==1) { - eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); - if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) - (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); - } - p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ - sec_pos=sec_pos-mirror_gap; - intersect=1; - continue; - } - weight *= R0_m; - } - else { /* q <= Qc */ - weight *= R0_m; - } - rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ - - if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ - - PROP_DT(int_t); /* propagation to the intersection */ - - SCATTER; - r=-gamma-2*alpha; /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - } - else if (!transmit) - ABSORB; - else { - p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); - intersect=1; - } - } - sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ - } - l_acc=l_acc+l_section; /* keeps track of the neutron z position */ - sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ - alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ - h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ - if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ - PROP_DT(l_section/vz); - intersect=0; /* restores the check of the intersection to 0 */ - } - } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ - Dt=(zlength-z)/vz; - if (Dt>0) - PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ - do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ - - xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ - yell_intersect=0; - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - } - - - if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - } - - if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - - if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ - - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ - - if(xell_int_z0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - continue; - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - if(ydelta>0) { - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); - if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - } - } - - if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - continue; - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - if(xdelta>0) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); - if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - } - - } - - - } - - - - - } - }/*end of check of deltas*/ - - - } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ - r=(ell_l-z)/vz; /**/ - - /*PROP_DT((ell_l-z)/vz);*/ - PROP_DT(r); - -// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); - ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); - ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); -// printf("length = %f \n",ell_l); -// printf("ell_exit_x= %f\n",ell_exit_x); -// printf("ell_exit_y = %f\n",ell_exit_y); - if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) - ABSORB; - -%} - -MCDISPLAY -%{ - double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; - int i,j,n_seg; - magnify("xy"); - if (n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ - draw_mirror_gap=xheight/(n_mirror-1); - draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ - - for(i=floor(n_pieces*0.5);i>0;i--) - draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ - draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; - draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; - if ((ell_h==0)&&(draw_alpha>=0)) - ell_h=2*draw_sec_pos; - if ((ell_h==0)&&(draw_alpha<0)) - ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); - - - for (i=1; i<=n_pieces; i++) { - for(j=1; j<=n_mirror; j++) { - multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, - (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); - draw_sec_pos=draw_sec_pos-draw_mirror_gap; - - } - draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ - draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); - draw_alpha=draw_alpha-angular_offset*DEG2RAD; - } - - n_seg=1000; - - draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - draw_z0_x=draw_f_x-d_focus_1_x; - draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); - draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); - - for (i=1;i>)==nGP6o~hxmSjCh%Ch{3((Bkx>r=<^v7M$p zxw-n$5@oZIL@i0#lDGNpcOH0=q8#VZHfL|O+gKuj!C){L32`2+OW z+}Kz){+nLA)y|H;=fcDP5YCr3{qfKL=i}d~eBI9q{7<~>ou__M72{x<#?e^B{=5eK z)eFa0V&eDS`&R*!QlI^3GLOTn>r}Yg+wGbM)4wYAhC@LQ6A=eV5Z?rStIEN}YjJu# zPr@Fw@>4Xv3dV^zo{z6C=T&hKj7NU_-YR}HPSP-)rsCM22JjD*zX``x@k1Ppqsw7X z6)$3c+zSZ#ec<_M9E{T)k(mti^2rhXc@u~5bSy6CJK_`>N4(LTBm8k+9443W`ln$y zet!uy#ets&J7RBo1?*Nk4<>0ax`bNTS9tphdK!**uv-Kk+7-H8F^c*@?59y&rSd?J zn=lEZF(Y)ayu7##(`(^R(`e+UVNdj~qp%lhUNXcbvKlU;J6ebE^F?NjqNEVu$6QUNr1?2f(QSp;Z<0>i}60emKqQ06X2C z-4bxYzvkEYt4uw6dim^!AQ}Z}Jb&7_e1?6!4#bsw1fXMJWZCp1F%w1@=&Y&h->r$pr5HL`LdZv7beH-!PaoKsC?i2eQNP*nWq6zcPw!Z%4I zdOomfUp#-|igZ2+3~(4Bu?NGGA_CE15cWcUsFCVJk4G>q65+>z@NfKZ=)>G$#!0V3 z?3SE4RR9uj7lLu`8fPP*3(#+a%OnJTK{&t?h;T5BZtIGG&tsTIAx=e@*P3*G-=ART z25~eJfgcY;m^#m2c))H+cr`AfHqOCIk{{zBNkrdIeSs_%V9Njs2!rUcpdxZ5%w)O` zVsRy`B41+XB}rg@05Qg5Isy3b%hVl)m$46M41oV-8(zIx#qzfSNH(k|U_}8e{UKBV zsJ-j(Ccp~N22KMatLp4c5aWzba9|jooK4qQWe6lhb{GVHIt3;p9B*N2U5jfV!4Sy+ z?{^UWr_&)4>*+9jhL!U)!kQo}0mVz|AWY+-51cs%OcL>O|Kt?er#Btal!igl#gLrO zHN$#(DC*ei9`+Y7n+{XSh7$k)%yr|(A%W67ZxHf(aRh(xsS#-dkV_)Dj;2H89U%EQ z3E>^!089GPSeRwqXGRgJT>YiIFeC( z)i^zPku+WtA9d5Hi@c}%oOFNsaj(lFqCV*lR-e6f-#u;k&xp(WOZssQvivR@r$A&y zY>T$g2SfTVLi+iOi9ZSA?(u(TQS=DKI_@!r)8e8*!9d4Rf7)Y4fKKpe!*{>egN~&%7jfMB zK`$nO28Aq&Bp_A;6qGIE*bA;Wf>FQ)4l4qIhtpu()ACuNsz$%cVsIIX{$v7^87a)m zWPm-xwiIT#`VcMP2aMzpxjT(Rpgqlfd=n-@t#v{}sf(i&-}wFCK)qlJ_*ZeDWiu_R zY7mC=8W1bEib-Z|_C`>u55;Ky!_2xJ|KW^VeGy)Ppb||ru1IZ^Vq!2w35EhNmfhhc z2Pl52*9Ivf7tEcWw12h+%=1NbPEDlYv{s&GJ~5I9t7yGWDql$85YP`|2+wKr?@aILjguEI_T=Qh%EEUv;ErYrL5 z74AY%y+Cwjxz3NHYfNz`RVPBpwC+ zI5CW?mmwH_*0t#I7#c?HTX#`v0atO@7ps(P(zvsK+_Ra-5=tO^`A+apm>+NOI%LnfWRgS zMq?7exT&u4G-8r!ZbGvR%0PcOieR7+Ru5KiY>Q-;R&{Vk6%M6>uQh<1Ft{}fERQ;^ zuh!0*rG-%}N&HO{WLTK0d-2F<_b47vKun&!2}CeMrovX#J_(8=6W4+pC|hIwSZ*#z zy3l4XMg)0Rh64j4H3=^Pd*Iy&81h!_!mI&AMFF&0)&-FIiyIUo8=?>^#FRROJ4S4u zHZP!_BxnyXz!TaK0a0kBHJTv`B-X-tToQ?GihM}qCWP%}cL=2cUVnQiF7!bos-dzGWcoP;?G(Nv37A62mA9Z@3;~h!8YhM9;aM<%4GL0u zNA~P#q&H!IjF3Oe?b*dDSH=F|W>=eXKvGKEgWO`S;^h7u+?MPE7BM*>t!AP%2%D%< z2;c<3i9?eg@g03td{>`+qyPyx+jODjBq`K5)qq7(+_3X*yhh8`fR@xmVdIPII2e2s zo0~A1;*2CtM$|?_mKs%F&tMmU4K)v>_y8JN>J?IO6pbTb_iM5*B&h7rs;b53$p-0o zMN~=vu`8%Ly+i@h7{QjOk88?J<7ICjzBVq0(Pd)<>vIq{80i{zKWVT?O9~DQR-c_K zTS`B8+Suc@;_3dYgTrTwrJpwF1uh9cgz1lf2;$k`8S>;5{y7>?Ktnc@atAjvB#w5( z+a!(O8M83yW~|JtagjBo*BtOc#U+iI2bBg}7e52#`>e{d*#xbLtLO0F;VRK~_01|Y zr$`A6x=WhV)MoAPQ`>dxb=SeQ3BR~ShEza9+9Lsrk-;K^hB1_I(SnxHm?=ioIrzFM zMgUmbJu@A&0VgPFanUaj9MFr5464T~H>mIa}W9Cik(5wcx1@ zo+Tefu<;6E7u};SX7_u~goBouLeLj-!T%KKX#sRJE(6fLJ&XK8ybQhLsnQtI(ayP&SAQzuaD0Uy9ck&_AZWIozzK#0!EE)sil{16qLF;$^fM%ZC9Y5oBUrz%OCYMwVcO;RQ_Ye8`U zsTs4=s#;tE?OCI3e$hxFViNf@0oZA$RYpRd9-bT=p6vfBRz>Xq{RuA4_Kr@(DiHC< zy|Y8{6SWap%@Dda3@=yjd9AmtJpjk_lY90q&FNA2Y1~0^K zPdDM8^>x)W6dQ=rz`smN27}+;)g*pTsTC~zNH({u=QSQ6jM9zBd+eYiYo}QC>$&+rozSZ6Wv>g!AZryR5?O@$;2yV04;^*7-*7kN=eRtZf z{_bvWZ0hfhx23c+pLqpr#+G<%?HBBp9 zrbTz#(U`cVjMv`UG|yEpmSXirVWs+xSZ!Lg+SJh6F#j}Go1Xl>1!daX7Ogzp`j+XD zx8<7WZKtW~Hl1yv?Go&0{sY&wT8_c4?P}~c99PrK+t4&{n%i3%J8xTK=WI0%%{E%* zJD{Y$H`^LJujMRYCpp|^H9)YvCA-(IZ*3}8XanMkb=rXJ=C=CY+}vpC?~beMdhM2e z?zR=oZM8J{9j|2&Ya2>7+nWY~Ek{51TvOg{E5txZ zZMDqzP1m`9NEOd*yPEvlFgZ1X&CQm1?&+axZnO>Mwwjw}NX^gz<#c&>bJI}H-OzO% zXKN#mV1I^lg4RMd~6;epK$%aju(juAgzPqj9dMajvUzuCH;fvvIDs@kJJXYQIe9_Kyr0*R_7ZPcQS+%f9vO zxBXz4`du6HOWNmkdy9`!>ybLyV{4Day0q)eJV4W7<^gRdZIo`iY5v)57k7ObEYvds zh8r>5XeGm7U_&2vV|2>dT``Y(QDV;}>#3S{RvS?qs#B$|?i(=QKDvtF&c9|1(fZU- z9{r=&9h&C8&+uT+9>d<9g*@ymefuTI)~p<4iFI^xbaAwIeDvQ^Xz~9Q4D^%gUJebi zjPEO)9xz1giA27@D8+aR*#=x=F;1p2dDpF?8aj4w_18%eBi7g<5vDY>}HwY@TJu|+UUf(O@?k3VR7dd)5E2kf>%pLRnPJf3Lxl_wb&We_1l}s<~Y0${6 zA_T|)g=M@`0{M`ETmDqQWerV3-nY83Z*>C|mrlvZ9o^J^#f;-ZJ6N(@LB1dk$TI-; zsP>saaYhsZMbgwXX}Iu%;AW`3&omJvKGnL<(o9O?CDQTDf^>A2$;R44gyWlxa1_g> z3II;D@n&UpCldM6iP?;0n+i05RSD!UpjuSB>VHl<5!f98Sz+q zfP6e(A|FB3b+=ldqduNLR6?HrEg}D%BxIv8f&EN6D6J~;;s)l)75-lVkUP33SN~_c zTD6d=sz$5#4B z@rR!zBM<-H#Q)C_kza2QzibE3%r%f&M3VM{7{ud~WJjE{LG%gxu#V*&yedp9x?F(L zEP#-=v;o=~^-R$euFIW$+P4Jk5GkF6&CB&^?@!eiG`+AN>okPalGP z`atZ_b@W;1Sh76+Vs@t=@bKyV-FZF6o0h;~gXxej$ZCgR%e|cr=3r`O`(nIS(Z`+~ zndJ|BQ~y6>ad>w2>P*zcAs`NIU|;3xLZ5|hFX<;N1;inSJL@nKWy;CQn!2<0{CfEqWKdr*AiHQjJ9 z7k30wX~~#j71=3; zxhTnNH}=rL0#tiO#3kVZNR$Z$yAZpbFH$QHI5$Lva1Ep!P4`t$i-J2iOE2HB=^*R! z{^V*gq(f)<8kDJABneq0?5o@4nPqR}r*SwlAw$9h6nKs*WQV_D!4bPI&Hbb#wWdn( zt|@jsC|5%z>mvm{1o)70-h&$Eo}Nj+8QjZo*e>llqtD%ajEo|Cg-R=m9M`R&&MMZi z0~O^^L!LDF+B2^``?Y6kd#1K$UhCSPsjXi(P3@+s-88Rt?WU=%USAl@FAV0&Rfl|Z zWbF%sxp{3czc839M;`LvQMC=`=C#56!eD;UG_Q4SgSmPQqhx}tUHij9jjxhO4+wVE zf$H*xNyB5O0(AEvd1`z)V789rK*HPAmoTib^7U6U!Qp5V2upo$B=~+al~?{hunBYO z&c`+lq|Gb;piYVFEZrxqJN0%szcElE&bnoSD~ojp#rkP4H@290O>#SPhiFIH8sLSD zL?{CzfOdr?YkbLQ2W5KZijqJ9o|KV99IL=WgD3prSF{_QL z4K)L9am~$9=5dZRk3T}2lUElqltG3*g-9;01|L=UdeP_-zD5JLU7~f5v0G%5xAEa`9tvl7+T8Y-=F zPQKx}Yi?o53CS*U9ew+%(b}b_=qHDMLXA-mm*_EtttyrIC40jOKA>rP6)6HLP(Iio zvm-Vs<4m9!w{2FkS@xb|7_PIGgP}1Km5z3!v-E6)pV#IW8qpWbYs0#*M!aMDiRL8ZLcf|1>{s() z{c1j_U(I~Ku*gE+mUS&-pkoUxvR}RB+V3Njj@{6oiTb z&?vN(&S79TOfB@`0!0{@lM-8*?+`yxsyq_!Y3GEw1 z?gpA~&?0v;=bv-=bH+bs{8KKM6f&Mo2?T?W!jPGiN)KDkVfUn)V0?;>WfSFP>V$*N zCyVA9dff}cVJUOhykY}v@DD$xxPE0LY_Rq-4cuJHUTl>4_k%!u|1pXEtC5eF;z8w) zMqy9f#$g)3D~dl1jdV{$N65*tB2ULG8jx|x{CsMvWuEgr@fA6Kd(7iPHTxG=vt zdghou_0cM5X{n8yJ2h>sH?-O5r@PqTd605DuoJot<#!qLp+`RHs$B%JZYvKq614YJ zvYIe_3TW*;KYw-hJfk&QA87q2jO3=m!b7!anqvH3j#eT1)7Uq}bUI&|=IX)`OymYztaEeh@#5hTA>wT}Q!q5Dfb%DMF?1 z(y9>OO{z*nRYh(KmEA)DkLs8hRc$I*eAHWrT2alq8B|#*CdIX^Xf?szO2*cgd1Ieb zFI;N)Ab5;zT4wlF(sdzR;C&>Lg}*^6rAw)lJEdPF6q^((9p0o?TV^}NE{#)^H5 z3wpPn+XI?SpkBnv4Qm#>I6M5W*BC-%S57xRAM(}QVi6(v6L87y%H$4-?-Skf&YR9U z)g35`l?3zSCaGt4P)Xeuw0e4J`ZPLbM^q>ps7T4JnSGO@+R7tPZhr{I$Tb0G!4MP^ zl-ee57rdnDCrQ)`$u!HkBT}k%j-iTE3g?J6t8O$H;K>O^%;P0&< zs929=u_XU)(y&%0!1U2+7Xz>oBX)r~!iltRL)oRT)!T}z}i&v+ICwu$*xc~Jr!1%nhx=Q1v!_9P6xS5jNEb}>gRrK(`J3f0{Jkd5D zRdj#@s%I+8(tfZ?yS*yyed%BP-lXrKi&t5`(?_a6FW?R{cfQ}*hFiaGt4p2Zfz|-q+7)~Z2yyEe- zANNzJ`JdRGSV#Cy(rCi6`8JB*W19f_CqDtfE`AJP8B4`a&^U}m={FyP8dLLjFlwlB z7F|Lcx4~SLMwsh_icPw>kf1u)wSPE!_4*W88H4K` zsZ0?3%ErnLCOsefBMz>Z?FC-)rFIEr)Bw0H2N#ER|1#i^ji5IS!Z=BFOL$mI`60sb zGy;y}HB-enwv+L2rWlT+C}T~VaDCTIN%E^xzG{@5217)X*BXbrvqB;#G64!FI|=+G z#31+>&hfp9JZpzM)fMY9UybSk1&xRQllO$lAv5O}zQIT4G%^kda$QD%Z&Z+Y1vTVw zrCDP617c{KUL}f}K^tQ$A4i!IWk^zH8x0eNX+{;*F&H9OM%d=0A}^tdptkSFLkj&K z_CQbQ&FdGUe>KxQzsKB%%n!JX|z0Ty~f8oPGfMEp!1! zs%mn6@N;5GneK>Ol<_j9kO0nM$Vdv@8L8HK`UA75yR-IjU%UP8VITYZk z>+E{?Ob!V7tCQqe_>8BWCWdYq6Z#$aHn|3JbpR$+_veHXON18>;&cjjNxVrL16D?f zc$847-w)-=5C=EWkc?pz$rq#3bLtA>ij?yGs1lMo-wbIa*I{_aF<{w|xyCpy^2zDz z3oAC|4!tr+aCBs#&^sYOm%S=OV|(MPDS8=ZvUO0yRm?|$S!xnJ_kE#*T~fSjo{J#( zK{;O&YZ%*dH1gpKe5C{ruy+F5u65VQjVl0=7Y%`?YrAW8#rZp86)Cg34Mc0UcD=T< zs*q-KT3F|iE|y#+5d0y&M&B~s`7#Dlr2+tu!i|~$s$7pk_WN?%VJh;HVDJGrJn$-b z>Z>WT4L?(u;HrgDb9u03$$2f0uwrQnVME*oqOP7_L@b#|i61yo#1zeBYD@CWDOcs1 zl}qHO_f?}Xjw8&Al}vlrCI<$Gi0#Wsqn4^rhPjo}6GQ3Hk`rlR`_!q6Jxnw==IE^4 z2)PERbZWTh_#AU~Jl!dD3I>CC9suC7o|k7Q)l&6wwpjj*yTofRxWhwE$}G9KE3AL z59l#yuV|ns9dg>a+^@uZ;s0|MrmOeTtY8oZi;Xq9zX_}w-GWDI&N=vK`%Vdab<0|uX*fXo0rKwQ{ z9le5x5(xoHfo1a2U^i6}r;Kwb_$TPTi;O7g^Ckmx2M58a%A^f;-;I4o9Y#^on)H@( zF@*z4iIGZCJc%Q;UvdW|Uy|N}zPEKb(8Q6;VH+_Q_!vS5s{^Bt6N-eUrP^4p0?PPD znXil{COKFIN(WdWlvFt%XzQWHf{BWsP~;=4W755ahCo%om2`xRiqmC?2U~h6x(d)H zNum>$`9+3*D|oi#$!`|5iqUu~%=AX9QAv5A(70c*6dz7K$&sF-On1~hS%i0tu5L6_N9n6no|Gc=FKf12RTd@qLJD&H zDwk*wHYUafcS$FSP>u9a6< zXyK3q9BJf15C7Po zBR^Yn2l|Z5QqCq zZ$mst^V5iXAj@S5L(WKsBD%+=JfNr6gcWGC9pXl>ppY)Jh|GG2#g01G{jl-{q}0>s z9F-`^BPUT^JVEz@8&-^-43IxBor6I*uuYt3tm3_P!$dJE|ENwZt^ zIuFd2{-4)<;y1iet}=>_*{XCSQ|CNhdbN;v?h`v-#B%l}Io>0Xj%;iKH(@WJaLm5B zNlR~SexRCPLJBhl8Hv4<1BrvNHqb_xtv4evoz(AV25#z{CSjHu?4NWRL}wrB(X|F71%5|uvfr`uq$ximC@C^pig1GPx_)c>JbmG@nOl} zqNh2#m6G*?4xrFff_Z=ybxLRn%^F9`qBIJ}(}X%ubKhl$o1oq^l#U!qhljGno2iPu zKg+DIP^u>6j?JUlhgs@!V_zJbMGa4U014IwOY;Wv+$NSnfdW=JQ=-H76bg9yi>LU{Dp>dYG^#g|Df}m%Dy0r z!6R6RJXnzKX&QRQSt;q*n7!c${^%Vrv~Kr8e&fsP%CYMrg8yvg+}d4h&Rg2)%of== z-2->4teF4gO(VsL8uBI#5LnXSs>3R(aw_s1i00}6)RS+25 z+)I0rYNiOLtvnM0>?q~wKCN;Q$tRn2Z?L+cPcLT}?*6@K@hb9F&?=UoA3=_u;i5Jj zO{`EmyyEjo+~xG@3dTf_qMX&JXM2{*YC#W=vha2cJ&MbRB*cXNz(T4%8Owp)M;qn? zHVMm`e&Tq2@npTe5iI^oycSkjzE*kpTi}A~g8Vc)K=tnj7`@^Pqmygf-Zujb(LH-k zf2|j=IT&aIAu)f5Z7P-R6y~9Sg=-=dh%yIuG?yqI927l0dv)6VZ%14A)E)n4X4?SJ z)_isvUZVrnsyU6K<6$})Rz>;Pckx`9-g9qIpPeyD=K8@LbOq~jXhyw742lt;<4X$x z-9R4x99K09yd=|6qK}Q#Sq-RA4L;LDU254up7>r8taScgu*7k@sPE8EZnj(oGSY9h zOP9-f;z)b6VMY7$NY1_6x}(OtW8ZYNM5#&sh*sH-w9aBoqwl4xtiV=>O|>Ol>*+mi z(NI4ik9bikVh3lu#ZLyZSxx zFyc^BEK+0qs&0!Tb!)NcjXaYa@fBPdhc8?SG9})~1ER4#+?Ckc@Dvw(TQ+m>+6HkKr=#fI> zi*6Yblt zl~n)UssigTnbr%rZ(VX<1)UizbZXM{QhNw1maR$58dni=xIxeOnSGy^28ukw8vLwK z(PD+mD>aB?w&*&xNGISjc`&S7_SqtC@v@o@O;x>bq{PA*#fRRP`95?8MK?nMOSqXw zA2i?CHHlf4-7AvBkQ1C*%}y4+&Pcbjai9yqfW*s8=1i5ZdQl01e&9Lwfu#}jmVz!S zgN+tNBfoFU9V`I^)4oUK`i949APVRh)9Ur_zw7B_uBg(Cn%sl6bvc>Ns9zkN>>VHT zO(wDk4g-HIrW2(#+GljUZ;6B4sY%)Bn6};DE^R+Iceow9OzK!~+{_y^EHB=>QsIOd zZ|y57L@$i-R#<6uHV2*Fu{Pz}kw6+iE8-ybZ?#h%;8+5sgw{z8P|Vwm->hwhm5dwj zze@j6GC?(habKGpWS!U5-E3ulM%Tkb|u>3~Z z-=F_UpZxtlypXG}Le_@iWxe;sZQOtVZv(FaH=z&v(=i8yppz?5A#k-q4`DwE z1J2o?oYAwF&0Z%k!aH;m3D%kOAJN4RC>M@re_Z)TKz1@o_Z=0Ioyp1?-H;iAFI3%&yu4(M4cd3i|G^~Zn1S_ry$tH5 z45nB%b*#8Epk1a|AqoDuBGrneVK};Y>W#PTN-Fa$hndh@&mi?FT|+o1@vEmDryK`# z7u1e4H}PYqvsK^N2;64FYt^%_+>TdoWgmI)h*Ah=o;Eu*w^^^%Ta^;EU2B!I)iw}P zGyANCZl}&hd&_Az@rKlq$!MCYq^pZ=ZFyT8_Z9VI(apNE-D)@QE85gWy=~Xsyszknf!f??-dnU~ zih542TZRAsR%^rE+Q<XTz z5RYJ=Rk3n;9XnJ}FSgAKJ{FdIuiIOfSW{O%eAXnCK}43#L$NRs@0p4wy>Vxe{@Izj z0lei9zcg#xb+6sp!tZV+T;Brz*mRomXCS7Rr5Eh7B_$A!RJ&dgi5mDSUca%iuKtRMvW&)w90qy)I^+9p_Fr8g#jEM^*w- z!N_fHG&d?T2&D#f@^3L zQwd<~J3mRLc<4X4AmESX!D<#q;Dl=zY z%^5vCDgd!2V*%Q8DpO$HF7QzHpM4tpfBn&V5T}3A$TS+_r(nWd90znqu!qunIEQ@! z&kGu&XH3!WzJt-q4UvxK&ts_-h{4F8m7FTAf-qVwZ(|!YXUZ6dVS8Oz)3@9MrVBDT0S%1TtOHZi$ne+9?4ccZe*GJa!ttNq zqpDLjQ(m(Pf^IiqSB0gU3wnU-cx?itacS2#TbtV+0WTv1>v_e8CT6i?7U20VNkh{e zD<#8d5(pz+z9t%k#Xa1FrF~pm(pVPGqFiH~YlS#Jd}Ub_S9Fs-A2gEf2)K<9e6*ER z#Q;wO$(#NnjxYd{Etl?DHg2M@e}DK%$%+*tj4BiTHNQoXaVhf;()@$IdBP;NikOg< z*%G~c3G*PegILOExmcF+=`Z@*ujQ40Dc2u`1D#94KDvzhY5wV^zD!iX6Ss$LdVV-J()I*f}iFCpMygDL)8eTqOi~TeOf_0vT$NE3{FL)-!at28??t z<~1XcTVXGoT%_5hT}BAFOqP&SRJWUy^K_)TQE5~~VW3={yG4z)842w<)&w}{G^U22 z@{utB1=4k#%CG3Nb8o>J7yM-*{;A@`#qk1kHf?m!xd?N%Q1Y8gGB=NdgaVdvWKo`* zs_g1XaEmxu1C3$Y@Mvwd3hVn=>`@e)U|bd3jg1DPZgsl^d+os8Xl&OV_#;O>Ly@H_ zHBqE0@Q)((*P>66oGS$Q?FqT=IO?WsO7i^sD&o}LFPb_lUsDZN#}D@}pvp9P@9NO|=2lPFsk^v*x|zsLw)_YtBXmU@1Qz`jIKG5Ax9i#P$c8J2h#h zui{ywd0kWQ*RA&%PZPIJr;*%3xum|B!vOg}wT<@<9yF%Q50#f0CjRu@Bx4`h%5kJ$=7|r zJp8CHK%uPv)YIiZY&sU5IFq+n@qzOXhp%29UYz|Z8sdEK<>@ho4n04``|j3!`?$jy z9#U>>x^9b3*xK9ewzpjg$z#xKZ?`twBF8cps%>vMTU(pEinYQ{$1ST@?G4Xu+pj$R zY71KP>{m^G$aT?xR!pi>9pGBV%viMTWzCOZ?{wjxUy5`SKfkrLnqgb z`u2w7Ase^1nwvlhq)T(N4YVCnG`U^Dx^m3a?Hw^axXbc;uwQQl)#5tx1P{Dn(1X}EB2Ytq40 zqQ$O)4ITK^?i*##hRGa`3C?s(sR5v`tJRrWgJw===2QS2(AC|{Lr|4Ht8&ITrAfwm zEt3wWD$~s%XgZ2&{mglazOya76*_aCb*PByA(XMaovf#Ul?=}=#70wLeXdgFy;^&d7HVR!z$z*Q1ki!VO&}%+kA|UbNWP)|SiIY9$Bvf$Gw7 zC!l4f>Tf|z-{%{&Oj3V>D26w!jdmL)@y52dP~MUP8JBV> z>(yJW-IWEY2ol0`x3*a1Z@U{?O|Qrw*d=#h_8#Bd-rC$)+7y=cnguctMCXENrH#_j60sS_dw983_lj|)itPoeY!$Sz-C5oQzFT$&zMABYvGGcGr5_|2hBK9mwCD8z+fJ>r`CDvA5 zi7TgE&h0#?uvb{v%@@93SZ=C%?VPaOQZKg4d59=0-Ht6#9rklyDCN=UdvdYE?-Iw4 zRcz8aWBP=pvUAe!_cvPo;OcTZy2KgF`Zz8bz{@RafWI|hpNIdUz_%rSjxLpwp0OqB zV7Vg4L_c4rF3HER%D6RIqMR+#G_O4K>LI)D<$hYrSD#=1`i&anq1KUK{~~AVLfU-F z!u$tiv1&cY-L#ECD1z#jXT5v`K*syK_1_aW$?UmO!?U&XcA zvGb(LI6(Q(KNOevjpiU72yoJ_>?ARb@) zaX&3rRhm>vv;= zC7;l#326_aVhHNoxw@*rzP-l9H;=eKK^?(a%{otnYvbPUk8zB%fNE(|hXZ2YeaLSX*DJC=#KZNOz)61s~ z|C!9=4k|0DqbY2Ss^$fj;ObG@>NOID#_4AC3iieoH#7n!KQO6@klS3Ozr(IL}0kRcU)i ze%ia1X+;x^f@P&^j#OOeQi9pL{r5O<6doSqHc!Wjja3H#CYHb{k8Dg?Q(#~c>=a5v zd;mR&Reo7af~)h<%EZ7IX5=mOp)apaj(-KIIt*@*gK_VT6bQ!!6qEdtFhrfl-5MJi zSF+>Oy(*t`b)AmuP&&~KQ0Zm9(N41n#-U3UCowWLLVHSF;fvMF@M_g?zLbMBwzA1vA7mvIu#dHc6Rxn1BxX*;BM9%i}eV4zY?j00qrF=SzhnZhp) z=PJ_zvna+~*u#MYz-flDh6XRrI54V7QPh*E?NuUs{JhX9MrAokk}8L)?s%2cqsn+H zO8)RFxCAA;r}Enm7L(iCOHp}62FHi?T-lsS_bgZ3I3R)z=akq3beX=+=d42QBAs7N z7P5oy*s0KEc5h669^RY(TnCV+#8$mqB_m24&Ku^<1XFM&i^9}$w@_0LUyzJW^$7W_a2j2q_5+$ZN z&f~U5PuJizwWXQYu&*ouOE;(_F+fik5_VxGvll8R`_cF;m^6-h3i~NDE3+@_IGFN9 zlTGKV=e*q$jDn66)95(Sco1I6Tx)+~`sz&P>f+qhN{s7(&mi4fRW;3JVkjlm?@vK3 zxe4W^$~Em;iK&_B3+bmDuqdd^2xel4(yThK-c@gA)th)mGw@jBU+&ATtIQ<)dzpvXfY{Zfy$df4WvxhIJC@ieq#JMoC5)w4F_M z>XD@Pf(O5TKQ|bnr=?0uqbj1W4Hs<)Po=TO=UIMbWR~QCvZSqZkUtLVbOvM&;os&2u+m zo=Om(j*pc(O-}z$9k!xW=M0FmoWlr6xpH4#b1rfprrE^iA4Tl5^OzI(ua(AJqMl2Y z^cl#L`iokupId^}(krJ5C+%BCW}Om1UdmJ~ZD*`qQQ2z0a1nfhd8wOg2dreMp&j00qPR;mDaa&>a*L_03P#Pecbz-hy-X&%Rk?2SSx+C3 z@>U9S#X>7q@>?7QwMMD*3xLEJwjc}7IWg|l^31sKb8OPBRX#tDEw@DJTqQphB>bd# zFthSy%v5r1Tz%BqsFEsZIG(Ak67`{|nl2>aT#!rmrPEBAnxL%6jFv?yHH*ZQon`al z>Y*t%`2)b^hJzdcbYoHrkoh*H+qlZUNjV}(t+Qr!Zl%=CSM_=0Or{(+3%5!)v6!q+ zW#LmdS#*{@omVfDgU(8EClxD`f6h)drwxh3jkK>K*&(MIx-^g|``(BUDJF4*OEc)! z3>uRyS9JQKXC~K1cHK1T=RPoE2bhw`PDd1u$7nr@hGAb@1GMpLOm{Bvkz8FLcjO+% zAh;Z>r#df)((3T`+SW4*&&tT*9y-H}O9%i!fRZtG?=rk&LBk+^5y){TVrz}^p zi*zk9ub6Q^8X)O1k`|*Ee~mn8%IW-5(xiPPOB%103pvt?QlyEM;)G}g$`aHt(|b{_^DfVSpc3;a((4hu0P%cs{_^O8GHWfS{-UQ3P5MQJ zzizrO!Fj$`9>Kp4Ow+aUktAJ@q`=lGLKpI1t>^?;oQcY0^G(u-%#l|C9f!=7^3%}A zdz=euAx~EAt0l_%!aP~O;VNM%Xk*U(S<4Bvk0;BL<+X(U>glm+nQT@?tDOy@==~C4 zndDku5$?T6Qqrz_fMNbF1I(J)4@URXS}=V0fW%@8)cZS=*kAg|`~SR*#vx`98XtT$ z_n(jW|7^CK&5gYOkGtXi?f>&P#L1(#I8 zV66HeUVU~rLNAA4C|=-W^p((lLheR-EnWnd=!fIfEl;70gT_vyaeI4PSMZLGk0p?N zE-|;hY3CCAUuV!){QAGxwTFySgz({us_?e0wn5$W`~9HL&KnV(9VU41kEnq8(I!Dv z-DjO#heZG#bj6SWF=_Z|97rnCnogT2sj?;Mv>)PupHp|6b@V`51lI!e#NH%U;Lv_~ zHH=Ly^RW7>UaG41V0VL2YzD*WOo+D==^Nc} z>+S8W);oq&Zx+L91FXI26~giWmKrl(V}ko|_ErM)jwG<+et9i}7y`TW$MC-@nL>O# zRM*;>25!J9ry1kk6QVEKRWJ@>7&XNVH3YbZ zqpQTPG{hjnmx02$kM*C=(GS6&4pTF|fgs60r)ae)0jta!b7YrsfQ}Sw$DsL7bc5E> zBOnO@Iq7V))|(G0W%U{j${O>`n(8c_1@x}TqDDk!CmJrrkQJb0f(H`1rgCxu?C=Gd z=lZZ_qqj|+YrrgBX0;B+w z8ILfYPtk&IWH~}NQwbOhU|o`9BO(qwjd#G%i@>26hSZe%4 zGuwTxdt3(DH5h<;5TXs=IO45chT}xei(xnlQ}{7rp&PTElyiF$`TRi|s^`s z-lX#@w~kg^EqtnU=7w&PAd-eOJq-4U*<>=DV-INlu$(Rh^{cwMI|(x6_4xfbx*d!6 z!Tc83gS!odam1uw?KqN{u_v(>nk*`K1`~=MNt0{`0U`IH$0p#V zxU4(w%iB32yAk)J@fyfN5LE11r z*b{{P%oxDCDX}?7hpAhgdev!@;0H)L_~#wFLi3WPj(}vqL(8!`kuLHg!IKu{!pFl7cZl}_2l|HOt$52E@=m-l&p^VGlNO0TTm&VAn;GyY@S?b} zk1yW>JCe8D&%rS2kt(^Q{!Glpoibcm^`-ycLC7?yic{qXnFjzIIKKm?xyvFT0ia7M zx?x&wlw5=0Kqb<(G&z76@alaAm?npWWl`#0Xg2`u243A{p()ZxXg7*N_rj8wHgcb= zn5zey!D3S&b*YFcaSp0qa@M7pf*R5C|X-a#$*7+Ve@M zO5${<87@FgF(s8>r#=rhB0`kNn-f2@s#UhM5 zXTwMXJ|#Yt;M6^rwNW_k-1x&O?69QRucI?@A~7XxM@jQnL`NmcZPiU_IK;@8i75WO z$&a?Qj*x$OG=%YxJz=FMinZ&%R3kx6vXtVCTB@fJD!PRq^#33Esl1DZ#89fdt-Jw; zG@yWj22F^6@$27FWBwiCe-J`b77EDPP#H@Iq9*+$T#$ki8s5f==i*<3VdSU3^BLF& zIS)W^t+5lm+UkM|141p4H@POb5gCNgQv(cicKX+I-q{^BF7$+tbhyx+^*Ki&$mVfk zWXC0K(uzh7dP+MX-rxWq)ntdYgH`Dl@l=dxqbGh5&jgP-@*F>(1GmdK=m#h;cY7{D8?X0>S`|_GS(h^h4=4ZbtfMPG8`$squVe@n!0Q@ zgvmZyY!g1pP^3$c*K>#)@-c@q0kW$VOm4G~P(UGT$d04iAa1-S7ZQsV{TbQ|QC3YS z`W}YH5|!Ap2A!mxw=9u5tc^!JKVHygiAJ1gVwr<_*P!zC(7Hi4#h3>r5M7^bMyi>p zfCThenAy^l`ZZ@ZN-88?mnN9a@#m<|!q%K=R~47jlya)#3}tJFWKJNv0_M*Em_L)i z)KjH1FMRf4cL{u=3!ns_1miy5nsX0S*OSZ)g$*plvPl=9odu{$D5pnj1&^lbRdg?> z=@P_gCCS~2MoNoctp7S;w;OGN!(BcbduD0Q4qC8F5G4)T>?d@qxVnzK0=_UtTXkKR z%l=;vQC9*9Xj`tMQjOPE5_zYUHJiHC1e)EFMe*%D;Fq$UAInS3OW0Jy|dAsu#IQiW@jq!VHH#JSBcBCl`|d{3+3V_UyyuyFO!l%RW!iI#^TH^Lj75P2Yx{Zfx`$vMzJ6w@eQ z*aA$<6(-A`9gYWR6m+mEZo6a5(-4w{SKUHIIk2lV)6_buqM0TaM!erfS0dI*k9S04El*{N zh|h0wc&m$0)rI~mVOD^(B@Cu`3-k2s@aLmfug|TO!m@=6m_-A>2in#vzCgaFERbu~ zb#pubpvf|)^RUz7UmLGpyfB_`xOVEj#^Em*tN!p@?JS;7hxBI{K6^QTNzQ*p>Xx)8 zzEgK~Kh;k;3-MYoK=>{gC6itLS54xMST(ypwVH8Iy^L{O8O^K6kvUjWfv&Qi)j{&P ztL0tG?LdESi`E)mvuJPs_U@gG5TQ;-YONwTsI|6a(1--jtA*A!(A{l1@2YYXJO@U4)!^oH@rE3HDWlB#SJV&_ zU0qtl8}YDZvtZIGqIX~|jKD~~+DJ;wib0c3PUdlK&Scw`1)j~G30cdt$FzL0diiK+ zMN|Q=W{-GMJ|CkK3!lOcuyU|!_z1nj6S0wFj)VhE@ZoSmp))YfLmDuwf!r4;cm^C+ zQ)B`R@FoO08kfsNH0(}}Y@$SansRXmr42(J*DBLEZUTT>RyRO?PC~X7jUhfK<<21_Q?TIR5?RIzU4BBibn%H22} z@N@s!+WnftZOEI%JBR>o%zzYcz1HTtUAvIE61;;K>?t^RG^qlwv2j#QlqXl>$(5QX zPr}uz7>>}tX$ZOp{0ooE8Mt(zW`}!k301rVC`Y6dO^hQ2NN2ogMYav;Rx+Mj0aY4i zjj+5;kU2$GQ3hD&)5!$2Ks$&|fwRgQZ0gtK*kVyO@PRfvqLW=dB&P5-8VhxpVBJM0 z5k#Ofi-#Wi`&JQMh-{dhRX_;nia*en01x&|ke7XbLWlQn=K-pttERFd=PE(rIlHRV zL9us%L?#-a!>*sKE(lLW!U2%l2Q0Jes9&d};c9*-;y(jw0<3#>HN7}WlA3)W&&@x1 z{`!Y=bzDuy%xd3=bM|TqdNWcA}Fv=OC(KOexco~kv(R3v5Pm;au`o!Na?T*?5|;Pn zusj8;`Q@;h3KlJWS$HRG0FdWz002+$T&ukIfbyPIzWIRiO%%HUndrKfo5k-i3ovF% zz&DNcLdbXKB2=;m!zrDq+HP-T>#B>xe@;VSlz^2I71Ju~EFote(nD=ybL2gdBn3?r zH@h^A?TxV1uV-c(Y+3Ba(QO>20ami+wCYmUTK7Jj2rMo0$LN?(`+LXxuaEaG4i6TV z&4a@i=Zx;Oml}pJ2{iG3q|crmmjB%Whpb{Bj^r}{=y}Eq{Bbx&@BB|wZDa_eaew9O zUR-D_hA^_+{tM$5tx%6CN*wEkt5y4fmw(X22P?vgMkH5G{K|_be8U2`+rh9!cv^wQ zRZ#DA{Z!{Pm0O@!`o27eCVdX8_Qf%teX3Hc+PZrZJzg7RNQQ%khr71Iqou;V+q@yE3wX zG7LQK2poUDrwmPwO`Gb_T;Eg4VM(o8kxMcNtIDf0F<;Gxz%cWlV!T}Y2_5Z8e{>Vr zsF|6mw#L=Pj#uAVOBz{MVy+5lVQfSfPRCSj_U3HUtP?F5Ps`J3GBl%|czqwTvDx zTu=zs15wh?%7UNvMic8PpyjMCeMKU@EWS68#g4#5)AhE>yGv2=3@Tm$DqdlG-f~pD zB2>Hwq0%&{Gz(B^7Pi-1j!Lr#m1YhVWGwcm%Qd+;2ulXQ5Wj4sVy=5?Es+E7n)Z1K z9{Ayqe|399P|Uj+mL|kl1u5tm>W37m@>dsDXJA25`pzy>6-AAHhYhIqFoXsEyeA~r z8$Tv}v-Bh>??{d831wxO@|^>=iAcv2j>#L5n=|M|(GZ>LYwRfzqDRU5U^u4&w`h4m z+asM6^+Dh-3$esQV1jpju*S;EkJTcVF5yt`6UIu;4DU}JEAMNJmG>8nmA7Q9n)$I> zoW@J0aPt$!N{Wu=pE_2}uQ685zhJDInX#g^FYz&Q_Fa(i)(QBi3Un!Km~5z37|!2+7sX}RW_w==Htw2%Z&awy-7x9WY1B;K7qT$})sYS6*FI%@<=t3a9F5Us zAmw8x;}amyv$e+nhLN9Z z@EpB9f|0bGutPDUr#u~kv`6!8PWxJUL5Jc#m&n1DW-M+>i&H9xlbGu|+{@0cE7VnTu!^pb!XFCztr5 z!P*52iZmXS4f`zHLib48u>}^h9;7_0Gd+C*0uWHu0*61Dc$5e1pC`#B??9^~UhUwX z(1MbKQ?R_~k>9oW50`9fjF)h#;Vst|X)>#t6(LcIVv1>Pg}1gsDnFJJluF>Tn6;hsE%&euynyRpFJzijSX)s`R_=wp|I9eAW>3IcS{*XVP?^L znPr3x5eAL!5pm;pXzv1c`9=Z5l$_| z$C9t>BY&KReL2vkBtPCQC@SyV$in+k6!*I?!|_||r#zRd3HMzll%_JX+M-E4%LpL# z&}K0^2@J4f2g&z z8W*cjxwYr1?@hccjr3#}rj=8udldn-Rk@&^7&F zMaQ3u9$%8c%PId#TUE^(yQ5BE6>56)A-QhCa{8kU;W^)QNJH}4^S%9_Fv`1nYDIk4R7x>pO6ssKd`GdL>kf9YfffL4LH7aWx!sFfkhsaThklBK z=}-bSBPc_@KX?pGO(KFOu=Utx{?ZIFC)gvk8JJ;q6ZMEU0drGIZ4l=eA zB1d-_9_RmchM@|?x}a~cWkC4!of~PBLq6MAu-K6{yH9@TSU!LC3n7me!`X;MZMM6u+VICU%$0+VP(nU^zb!7PMU{u)+ci!45XgxpUA#c z{tr<`Y`dn}+1>_hcPGo)D7xVl$y`@t4TX`DMo(?ld@y6nu4PvaYiv8X<^2~*;zJpM zkgo3p1D(A=pmjH~1vGjNIO3_Gv}mAeKQl?M)JLwE*k9${h%1^uL~UiROvaDxGyz6v z>qcDNh$9=Z0g~BB#+%dGH6Q0-3f>E(yGz!gbD^D%b9S$z=eVJ$m<+AtfvvgWqNo^R8gyH0(LoA`SB|$QL(Zu@O-Kaga`9bn~_n zp0n%zlaOr2W&wPF$_d@XXyWXu&nLocrbJo70y-m|7i6o2wUVp$=M!XXu~hw3nVOfV zUsr}cYyw#5e3FFFJKB8Rk23oQmHq}wy$I3Q0DT?gLQYXHFi>Y-G=$>efjnkxWcLT3 zx_VP`m`~8HvTJ>jl8lsO?GkhvwS~)fI8kcL;UK%LHF0 zOJ1geL_+4>2bC?y%;+D3rVf6>vPaJ8$7CnboPtlknf-*d+U5+^usDcPtzF-6+k!8p zWP4aq3AtQ!%WyD*ji*u&|K$B_@8}l-5^}hmKxW(1q5~5`O)&8hfwa&mTYI!T$4k4p z=|`bW{b%ndOrY~mXs&dF+4^oUUEd96mb}5-cEBANW>;fP{>6)c9(U{|tFR?crEFS! zOG22hmDhz8nN5ruUYQL4n1q00?utdK6tvcmRTOz1t#IDAY}zsD=c|9$fWh&+D3_9zbtU=i-t-3N7W23S{2?9}__zk_{(7j3e>`Y*U zbZ$r*!--16_%Rx(6Su+?kbndWf+2CqBBz&ibL;k4E}a%~c2hn;Srea10r*I<%;&H+ zlh_&&$-6oW;lgkztC1?H2ZD<#L5p01;7f`<%9vOiaVZp8&7ljPDlHQXz^Eq!@ktnGhnb^j@r7s6HhUZHUPd9>A4eI= zR5jhT4V?*Z5|1OTY*30IU%4xszVLkSXX#Nv&VJVYS8G2-aTQ@GFhK>!D(y$)3yHIm z)6Ad?yUxZgql;uj$~nTwNE8c;7e^<1$H%`iBG6y~TniNKp<({zp)KSv{o}m^@T^}& zek|E1^%+}^h5O6ifhxX)7Jny{eAp+S|M7>|pIig)b`QeA0Db?yLK?{X^FKQ6Hl`BE zR%$)%>((TgKcoQ__d&@(%Q<4aD__%e#G z{4qw-k_j5O2zg&(?_zAm#r%p;u1^0Gm}ybva6COfqGr_mqM%pgTPt(a9iH!>9i3`) z==#dlLSdPgED?a94En22FOzFOo+z(Eb!h`gsaAdTTI?k{8x=12n2d&;3rQ0r4?`F; zJKd6QIkiJyxilP}=#4M}%1Oj(#Q$sWTf5UZl7^qJ@GB-hPj&$TVs2cF@i~emXZ5Un zSxL4xyC=&*fFu$GG9Zc3Zrx32CIQIXK^8Reg6 z>9N#}Ui$J3k+^2*onH8p!&@am!NpTvc;lAr3|{55Rw?SVyx>ljvaj$mMPUR|ozA&b z5Iy}PKC+^Nes?xf`9oKk?7#i%5nW93mU4tX?9X;Kc{xdfQHvt`NI}*uCHd65OVk}C zbm1NQOc;ZY6}+VGWZH7`*>@j~?Ri3&+uKLSJI8xA%*34;ZgJ`rFZ2Ae3~BBC*twcc zVSS6p@0yeFu8LzZEx^Z-Sl; zmWhf8bq;sl?$V)uv=hMy6XjnxZXa`J! z*dDpROvoM?>+_c-L6zGc`iJK)__yd~DdJyWsBgmH|LC=@=LP97El781;rbSl|FK15 z|LDVYbDg^eYyfzI7#3e@+H2ya8x9 zFJ9sOK0x_vzFgAggSCi6PN;TcZ_-<-LTyKke96x%8 zJG+G#AFR-NG90b|SVi1nTk5)Wez+o@xs$fxj&|N2iPmtMW}Q)vS|##3YjyC!^?aLl z5;B<+`5;mcuII3nwtg+-kVgcf#LL^( z^(_J|F{q+)3RKY?RTKx- zxnGPPefXBSY+V+B2johc)?u0|KB%)nSOJcW-W-czV1>)^4J?sHqfsm7biHj9v@lTT zpW@ZOa_q6#;1W*?AR`LH5kaWs^FK?yO6H5vDoNS-D3TC~3;Zb54Okfsu{UcS7jkZC zl279?7_vQ>o?G$ISdGL2b1cBOm~-Hwb2b{BM!9Emd4m#p)rO$R=fa|+`|m2 z!FUs=e^jvtthipil&;>nqTSWIqDMUvlJ!oAx+{oHAuL7Sok1)b2qBbk$tuOj!%2S? ztG~GVI<;97iyL2~?S)Mz>%u~O2p?D6|Fd^=)CSQ48p7!?qKgF1@9kq)?*DNsAZTO$ zAGaDj`G0FP-&{vnzsdu`+cFy|Dee-I38PO?F#|7b5@+z)hq=-Fwh)07^ zZ1;Pt%I@(8=lyv!9dx0UgJ^Vi5-|^tF1A0KVy?=WP{I!I3gBxz1pecsKN?f+=+_g} z6RFb&gOf=IuW>~`NZXLF=ff0c__@me zAdLS4yY4c9+h>pBGf`J@U~@lwKojQm!B6dj{U6$Y$*M!3DenmFR^_929}ZvbwRb-p z3V$K59D4^-SPyIclAl$lNK*j4KHU4;hrPG2eoBL+Upj8E49NR;pY{&Z0MH93)OA6* zI}*oaQCaNIVI`_`VC?3k61_dWqFqqAQ$yxer-!@t7nDaDuqsd7g6X6V-!iYx-^XH}`2*;- zU|+Iggg{ysR>4o5DF&A}v%fX7c=;;MRuWhE(JWK(u$k2ruE&F(lPl1|gGYI(?0}u= z6dm>XQhn5>u^#H_xC?{2DaIbm;tzW8B&{oAaJY|_l@*Y#(AC{O>Yk7LqtpJd2NN|O z_S$$22&UY~*_}}hNsDtC7!1h1=nNM@a$=y6knuiktt z+g#r`3RY9W9{>qlR9s#Sr~Q&RzZsJiD`gyp7^AyYA#1h>LFy7J`IXuPOY&@XzNQR( zn3njswQMh`xSNuQ@k1+YDI$U-BBF}wSX3!mJxPo&rS@Fcp2uqIafn+fm%~!Hx^rg~ zfDQVynnrkUR!nvh8J3Q-0vYLqvqAIAhQE0SXfQu5LgboV`DyK$OlkZW`|NrPCv(j{ z#KG7MhBnzqwU_IwFY-5~_y=$$DWmJZ?bliNC+`1?eJ@j9y?eH?-2Ydr2JkQz|5fqA zC;#8?@$=CBKXm`x!vmOml~-QCN_~|VaI?6tJ9q^h%lC$ddvCO_PY&^@I~iPp*pM6P z=w5?Lm(lEej7iDSl_q_ACPSr)O~DjS1|DLq)0;X!^d~bB@-`Tu_ppJmq51yB^orVk zdvtvG;SC07AMGFSJy&4+y|zK=RCM&a@7|L`mGFw8KhyIuo?tM2>S3P4fr#JAxwQY1 zcW}S{yYJ*!cTEZS8iR+9RZP{L4v^qTFnc0*=X0kNIi=EUd|DDGOIohZDF57n$L;-A zqwH3zHMhT2sV}ctxkuGibrTskhi#eH5A?*Jbuz!{0AnrC@qE*{mWrqI&z+s0MGcXJ zPt=f^_mPjYEp{XW{K)ssPPxU!DU2$m4Ii{yTBQD^$iZ4wZ5K z+3TNSwO?>;Oxn=hZrjyW{*Rtw74br~Ru&C;Yc%97X~(YEn#spq*-MZ z_*o?hy$#i-{cZ|$D9!QZuf~_Z5?}sueEBxj1*@A3RyG+dZ!)l(3|BW9u52<~-eky| zR4EM|B>_m}KJbqT1vYXqCbWGgmnG&c?rAOJ39!}do0vD&&{bCQZ%XwiIXKp&YD+k{ z=HHZB+o$5IIXLIvP_ahU*5Tg??v2e-?IqmX;@!H!V&0wL-06*Y3mfqkHNrSfoNK4F z5$D<|JUgYKbes&H$-V$)$hTt^ANJ2wKu^BMU4wAsw%8mhpmsWok zjt*D*ru|t6j4jWl{ZUId3BfGG6$A1Y56Itmwt~gLf{lTNi-Cpf0>dM;G8y=h4EyDI zVQD1*Xt4Mv@=O7ya~a~91B9gx-}Fc|$y$pgA(or`{Z`9q)XHJl%vwt#A!e=jP^lD_ z>-CBY^*HUv1t))tm8xO6>Omb&;&JK6-(nq5kb)Yuh5uRUzUN^Ix)Z%=fzr`vr&>Egh;uIBU-ux{NwCF@%&QEz;MS$YrNz4~kWaBt_}c>m2_mTm^`PR2a1T)B*o z_vyq3R739*rMnW>=8rpP{qx!Ea{7FGd)V(xM&*kE0GN(XXLx3LyFV&jO}9Iv=?yUX zZIR4jJeqEMZcy{W>UMWH?*3ZBb1&Gp(qLM`i!U&ks#h9}O4ozwRcBb5&aQfcap~l0 zR_cn3N+1?4$X9tYp3oHponFuBIOp)p>5u3l#rFGmNBe(ozmgGIGW4$K49a~Pk_y_2 zmvb8pztT7;n|QDGo1<6ly}uvty*=80_x31jvWUp+giltcr9UW@9+D^?bkc|2OkdiOb%MLV+72DHZhS< zr{&o-sX1Hn^9a8b@T^;ddiZ+(V9zO>5-4)* zc6EpBC)G2#z?O7SCf~}P0?_ZvjZ?ZnQg@fiox-T6{oE;hf&b&FGMsGI9J>@AO6d6e z$@mOUfwfOMlUzQ#bL`|~(t$kPZE^77c#l`4)3IaTIGsYRW%Ry4t9?B zKkmtPH~{I`ZP`0dKn7EFPsFn$7#Z$fp;r^H`6^~vk~BP`QgmqJ>~zv06|@{e390d@ zT-;#AiLLzkji?mXs`V;@5|5*E@i?dkKDy|;ZI}`aks~V(>jTKdGv`3qqhyyti34G5 zlF?b@Mx^=(WjbAeJ%-hbL!o0AmU7mzzQtx>86Ht)0sCs74D5NJx*i_nsWJe3-Z&Vl zeKMfnwRV3v99#kgWt}<4cM#MXp$guYQ{a0wABJ)(4QXi!j{q-7*re9NKnFtsqUMKT z5Hx(ib*1XnYlN#ozbg&ytU46NbZH=`TF~%*!j4%kv7D{##HsrTIyxVE_CLIvVXD~syx7~7nyc+cSFe6u! zHeO*1RDI(PC3-v;i4Yjf&5-D!7IJ#1<75uUS2KDWl>J7nZqdSxJK=z`1Zk2ENdTIp z0?In)?v6`1*kfG0=n<*n|j+uTkOLFv;Fx)ab9EMmz-$DmhShSjC_fLyaNOO~B};9&&Po z^#_#WnYR}2OF%W`m;%<&V+vG8j~>W<45k5f(rwgT&yXW9*J@DrHEp9tJDu?X99pB8Uw+il{f&! zx`4ha><3A6eZuivn{YgLBY|48DTf|BxJac=Tqx4yek4e z>;`^0tUfD>s>&dTnzd%5>3Z-P;r{|INI z6jpKPTiC8)$$hElQy!Ko0PG#9K)Bej>f}2 zA^8Y~i|z~NszAE4+(*@A{aG-DVA3xkiaXJSw-!y5+zQON;Z4AufEYrcW|-#?RB5;A zR)BDVX4Nh8Vo=VjlwFrS@#_CA!trdv@g9J1ybTD)OPz%?ud_&I4feOuW08^{`F-_NBb@W`^p)3U}>vc}hv#;Q%27j(BupS`7$C#ZTx*aTjhu;Bw@B1i9*TM}mjfy42=T-;bC`990# ziWv)nb!H5~sMv>=W6u?xeQV=p08Wx?k2SuBhV)ICOS;pbzxeTjF@rQ?=kW;t%Hk{0J&<$v%(F38<-5W*wV-7v;F-2k64-WgibJEgwG zJVkZRJ>9UvM0Q=&kMU2c#rd&erBvPUQdQq#rt#_v_-bV%%kk@U<>O+iviVtuqXG@B zlD>7@NQe%j<+z*X%wN|smFV^NHl&Ee8L z&4jucwJ6-0P1N5$q13C@b$kmz9V=Yy=If|5UDaWr3@j( zU59&65anXs56t}ymGyO9N1zr|YM@z%=t6WWu!O74zy*5){fc0aHA_`c9Fm&4@0A-( z-!F$j(+{8k{`PD5yWXJB?g~YHeKnnXhIFv$-PQDUy+T$=OTS(@RqJpAP^x8jajF)n z>45y8v0P2B-$6^~C^gZzV7g&SusAlCD(35A(<*5(#Z`McV5c_tW;AGR9`i49{s;!A zU*$n5oIfHMzWW@9V_0Pp%wksQ5gc2RdRV`)gjcFcj9JP$N|1W4S7+L(|F!Z;Uu@b4 zF9)`@oL?eh0zNBiEF?TP6x&gE} zPw0n+{nl%nxY(D?@fr^Hho0r6dwtOi16Dk5of)Q+MoV~M6_!PH9qli6e08;^9)N<* ze{hQz7@xJB8#GHbP}VUN0MzrU*92p{?Bm`o1_&fn_yE~z({GfkZqu)$vmJi>@VN%) zXkt)7b*T;?hBf1CCoa59i}x)p-cQlutD9)?{@Pl+zkmg=atPmZt=23ST+^#euhlx* z?0l)#Yz{1|u%#+$=wR2d$`qw~@b#`#kMUz~H9v+$)>vziodu69W@|3S44!+|_pCLg zqCn3sAX#nITF}+6cLFzHwYbwAY_M&<+}3WCy_DtL7L z>h4Pxb=N90b2f`4`l^>KEVRa23k@dlOBR_t3=fvD`}IzsPwp$_ji{`ezyNq|b**rP zVAY27e^qF@JfN-O*8UjIB(%i+>RPd$!K&TjFIQ##cBijic5C%Dr!V}1r!S}kjo_P* zf9uS6wyV-dd;e=u)o5hNbT#LN~K3 zk#DaPI#UJM80YTe_CeUJ)iDB!d+0$|t8ouK7?oaF4r}~$6dIaAxnAYPl1H#A<+|Gp z>Ug{_2+;%$T=L!5%FqGy*9Q-1Ooo;*89sn98Ln+ihUvy+_~^zY555+AV)0d|*LQ$x zk%c+>_WHKsuv0*>)t-d3mU{Iqu67^mF+8oMV}*}wqE@Q`BMZ;Pxvbf{I37-6V*xQx zeRivf0>DThS)Y-BXVJ~qD&sfvPyjc@)Aws>Y2hPVxM8)y=O1NBBPC*6#Z)&M6~1UW zB@iS=2}w|lCX$f;=oZ@SCPW>jK9_O->>8uwfC1MI33Z z8d|A`4VzRrnWQ!=W;O&y!aVI8oyq#rt_51;tzAkp;aa;T)m0H9e!by`hGOc_uUd+Y zcq1@Fm$Y*Ajvdr$_#va8Bp^dgNjRLC!YUIuzKd||g9yo97;*}$T;QnMEZ#Sz>HE9> zzchkMIm@-+4h9Us^lF=0sMS@0E52W4x6HcOxmwNQMU)~bm&xi1{GPjtMJ1Jh zu^h6qYcU%Z8!&`{sbh^K$cWND%D}TNwD684Di@A{Zrd-VB$L{5_R%E!SvuO>TO*)qd z^hf+VnDyJcgVWQiDS38Ti>`HtIog5ICk%iO7(_wQS@M&F_h`gS+G@!Q`_ z{<+0HGle$j+JTwf;ot(d3;qc-2Xf@+yQ6V7K3&pH%ssI|2WKfA#Ow3i@MqlPaAZmZ z)EjyosC3Kxf$&~N`-;I*w+a;o7EuM3<^KlO|Avw;X zd@YV+XKY!Rv*m7CTUMlPS&$Y*CPukq?v}N(w{%n=?v=kqcXW*$E>;#7`Y!7{dp*GH z;Mbku6=lKF3*>F<`vC$n4+s$bVmV-5@4wwSIQYrYX|VR*?q>hnY1<#{$4(tu-Hv56 z!Awe*_iY26utDJ9-&(ase=DB&jzNlEP^&pE-jU)~f=cK)U;ufp`#(@ntk2Z8rBRk2$bvC68iPcZNfUUQC@yAC%JTevef<98AZ3 z=PhNVhxL8XIT=&3`Kag|j;Fs4hP{5#+3k-mI+I^nHOx;xm|e}F0`P-_&giUvJs1^1 z1@4c=zzvJe>j|bUqJg{u>K~7QuRV8u7?f~fz%Yiut!OkbvS~D(^)IOG_xqU0dxC)j zBj+S~?!4)YuKGienv=86XbdlRJG1_CX9xJw(18(#@aSWIG6gu#o&PGy2ndqNOXG@O(E*w}rsur^UMzFm zbih{Wj2v3@Bvl4K#|^aFv9#j@{LHVRCM}S8Z$wj!?;9R zC1~g*f>GfpXPwauvn~yhgx_D8)-OukvG@Y*W8OQ^UOFe!@dWgkv!Zh;i$b$dpybLD zfXLDGvNJ*1DbXO1^5>~DJ?~uhG5H-EF!Tc(>&4S1<3qBm9e_jxOz6hPr-R9KCbD-G zF}e7n>L`PCB@p^!_$X@86RCL%%m6AxW@pU*sOq3d$00%^m|pVS^rcJ#Q}5**uu<9b zi|~*WW1;@%E1(m=7=n{Vuk3=HHzGB}-G`|p7^Ks|X#}G@J?$fA1tzDInv&p*CxhGZ zXa>@j>9A;N>IQ(=$ka=5EfuJ#OsR$i_ zS%O-?mQRO$!3gkTO|zJgXptoVA@_S_Vqc=<^?szrgq7* zMqtXJ4U^MrQn3=vUw}G`j*CP$8UuL@hvS=mFHg#)*RP3RU5#y2I=y$M^?P#Dt-s=_-v zKxI()6(~fspr_pqhEyU4y{3efIC^wc>jZ?)MLldKb2J2Dfn$g@@u_V_teW_w$c^g{ z-K$v%kP1~K1lbG_A51N@k$Ky>kSz>PHD^NBQg&Wr>dKk(&(Ar*UGmOh4){s_XPkPu zdY@~2d^*QDpIm|JI6`Gtv}C zV-nAC@np0BC-xX4FeN9nCLsB@tJDAv(%TH=T<9&ga@&n4R6BLF9T z5v2u85$~l|ZD>x*D6w=JPzhmh3WPvs+*DbE{ge)QX?PTik$Da|Te^gta_2J1}1@Yp!B%BX~=*)bi=? zIrN97NB$LEQypu`&2Zi?*(=#6ShN61uM!*`e8L4}s{qLttx7)o?!&RI2s^pU;|{2n z`Rw-g5gyO5XQ3DsZ;RLS;&oKKzAes*Q@1$vikJCp_UJD=hqNv5JuK(p6`17DCLr0{ zGlW(e4o;qtA9;80)qyMsOl#Jr#vIXRGfPE?EOrj||3Rg)$W?N(%g&$vgoA*oS5NZj zWGBv(BN**NXf*dH0kEis3Yu`eFrER z_#(OKl{0=i1O789K6@j1`}fo5WPYQTO@Il=_fvA#zXi;-Uwt?{gcZ=nwV->H&o{G~ z-^AcF1>?rfg67_nAFSwHf#jPGkasD|fvHekZJDo8_t?E?*hegOJo-i^%)7} zM(kXvfE;)PodLoYeo{#Wv2u4&7 zzu@A4mECKPigR3pYETjXa)GRi13o2$oDw>2EA$2a;I|HaIicSjdU8U)yDmQIdi2|; z-!47(=(mr*bqD7Bi}mJ~cWutUMEnaD1HB+Kr}JOSxFD)0oy+3^SzWon+e#+>*g7mJxcKd^& zV)WZN$>0m1{^pRc7k2l4^bU7+^FYBcDp<#s(aUtrxZMmUNx#=8hfa5V-51`l(<{(d zMO(Pa8L8?XsE&c4#1=)PDS9nbnrfp}nZO9t5V{=9wh~Jc-U5I|Q75;oaWLgBC*xm) znKd3M_n@&?uuah3a)Z|Ca14J{YX#iaZ4O>mnuAgaQLa{+{JW()O4!Z~3bx4HLj33T z1T?AN6vsncCpmztOXE0@U-Ygsb~4^RX2i4mV9j^|x-^>QwQBXf25<843);WWn;NuPujMZ z*C=nwW=YM|L~=U27*A)6JOs@V>r@0r)qd^wFG&vIJbh#A)a8O;Log%fjg7I&n`=SA_AXh_k zQM)goSzWy36>_pdX~FVA#Us|isp_FI--zoeH@x(B&W-o5?CgEM5`%-O&fS)7EBSwU z+ns-TTXXn(@-MID3OOGC*t3BPJW0% zROp|gpFr&iDaw$Dj@CkS6hm~Bj_8OXI{trnj?*70RS*d{}9deAqJ5GX;2C~AcozhGkDR`Lf;u|Z2_}m zYc=W)(Md{vQO!gp8$n5q+LQAOf)KCZ3j<*wNY|=WKO>aDoL-mn{B|yPJ>R~*&2Jf| zp3iTQ%xErTAD3fP=HQFg@Q5k|$=nLYuGAkTSJ1Cx3ntN@Su01~D&6LxA4aXBK&;d8 z#BRgXo44j$*Yg5_Ftz51UYQzEE84n_;x(d0HR4)sj&zQ8^r9s^4nPmU_~_BgR!Kk0 z|K~qB^)ylN1uvM_%0u_O-~DxpTo@5(BX#PCZV1Gm52jL#-S(5R7SRP3IpO+t(KzA{ z(1ey_o4-&RkLvOKrFv4*nt&Oid8^C6NGp#EXYHO4HN0pM2^u|AHE{b-M0zlH;*1*yU(6R<}fH-8J})+?>XUHe$SyIgDc&=(Hxb65!RJlJ&+w6P=2;ty+)+ zr9MjQ5^z$0f2CYdfVn6@&q>~h*;yHG=1?9YS zOq+R0aip{ZPsQlV6nbMKc`h4CbUeMaraeetwWi)C{5HdU5X5y2$knVj!+aLRfYU0c za$&QoEjZGrkYj^MWf$f(;~DJXt@ayWXv9FMpNN6;&Nb~kVqD6gw{%RhFZNf-QO&qt zw1hI?Sv^3pp`H^<2(5G-af~6tOUiB8b## zB4^a@vFYiITee`qUUtre0wi55X(W;PC=^3j9@lfE^J}2?+XAp#Wvs_EDWw@*_lM&y z?x!h0(hUiV`2GI&NAIus?T8pEhS1UsYA*Td2hPI!6?;Km7#R0m`8Jz(JVO;O?ON5rzzRV z=hi70@gSAn?-!;6(0LJAR3cv@^yRk&QddpeXV!d9ZlU3Zf(+#sJ=po-=-uHDA~0Wf zb;;g^RryBkJc^BskGO@MQyUqdaSMY1?hjE!oaR1*i1}OBoHP)iq=&jQIRkLH&$N0k z3Q%tQQ`0JlgTYcS99IuTztbH;>&`7#N`Sj_ES}Gc?|fIP0L?%H`51icXB@7?lC%5= zrs9>@kp6#;yH|26H~}g6Dzu!#3d2n1Hz#XQ^lyao8TWqv)?E%jRu+FR@u_%U&@Yc( z?Hq%aBEL;qf`GQX0wXFT<5-lSSd3c4UEfMWSMmy6OvL)2#fa)Jfbl!Tan`HO1f8@>g8tjYzSL zjOPJW_eiSlrn;_eRCf)Pms_m5NBTE<2&C$6_fh=YS_*oR>TZKqe@fOH15K&!cH3HY zkBsUbDb+m!)jblbJACvbsk+}uZU5;mYJ0R$ZKvsHTUx08MnZ3oEcG|KlinVcQb7Sz zHErf4m9MF{tCbS(bb3oodw`(lMoelNoqd(c&h`UIWj7GlP}$l3A*t+Xl^3h*vCY36 z8$qg~ZeBA*ojtsj+QH^(daNh*SE(JFv07@nc^p^M`J2=VDQfyg9kJDP^Ej@i^Eas# zVrsgkbG!M(8q3^8^^WV(hGf1zT{@{uM~|pXM+Iw%11l%RI4a;jrA)_5EU6#ymDxsiU=2YO@r-5|x^OrfSr8*Yn=&A0ECt zbdHX9Uj20~RZr=9@ofO+BjWp7<6b{5lLj`cJ;&=2>>Uxs%pXdg+}Snr$ex)v4;F0W zj_emEC57|G8873zD)2eMe&q|B3va@N6FgY5H@@~oT)W(^`OHx^o{VDrNJk|i(*|ye z9J_r1JR5%5Tvc#wS@;D;#mAZVV%{xkrEzc&5yZoxIib@^AOq{{7cS+_n&W$kS5iRl zVtkimLaf98)(-W-)|S~b`=wPeU(!Qy^Q9vA4 zQluyevTaUU-GfG6NE*?sKa+^~E19qyMhpo-l+o{O>46AYp=+eD0MZKD7fi9ZlU{)k z*qn&KU09d+q2lJ)K6^)>&Bu4+3l$lPm;)qC2PcCeVp3VQB@@J^WjKly&I5C@y%$QE z(P9f#aGQUFL>^vse~pTG{+$j;Q8S(H%=jhL$sUXepa(mLKho}nHcS+`+{LQOW+L54)aL?Pd)C9If~5~YmPvoT&`Ggr-owj^6!o4G7x zE!pG}XN!n_EnyJ`d-IYB7$s$59uGhzU?K`N=KQ&1Oll%LR|P|{*g_M2(p7M@&3DH2V-zaMtyG{^cOLMN7v@#NVXuvLE8JN~q{_m-XuljX?Sfui_bI;xKl z&hD(GP8>+Ls|b7Dor(QLHI&_%VsdnbRmPt$!i>6BLPU$lukWA%^u|0Oka$gRT)H{O zQ$!-TuaB`(H|Nq=P@sF`{#0&#E5Bmw28-wd5GjQ~{KQ66qg&rcf`@n42!YZMkjdlv z!s~lx;>f==p9X!&8UPbTtIa~LZWE9nD%9%M4zpSjWp(!*vHNU@ zrQ#}nYKDGZN(+?5s8K$hwH|lsVPYYLZwj@5QaD(kCz&$ zeXsGTPxmB^xX7_3HdRtSayd^A67%$}yVV{u-buRJQX`k_Z5Dj;@S7})_gI#A`d00* z+{?Ge0j<5gvSfGVAvRZ1_EsKdYh}UCigbXi@_(dkt4QB{YNV27@85M#m--AbLy@R5`V-htHS znSV@aVoVWx49CWor+7ViHlCELC*|s^b8INy_+64YJ}_^L*5Hj#R_PzXDlI*6&L__K z4Va~w#fs$yyi>>BL1~JJu&hyBfr7hU4m;hxIcy5;GSi0{6zcrp(~SXN!i@phjN(MA z5C3Nta?GcbN>3-1k^m$TJ?`oMjLkzIIF!~zXv^<+KPCVBgau{3*vO#F^57t~c(mJ8 z$MZhILG|C`sQPAy)gR)x`aKV<-_ISEc^HovMuuvXr0+Uf-m}yz$ubXhg!%#1i~A@T zkAIH(aqTtL#sae}ld5PuimH)NHZqwsbwfPWeO{(;*Z|g1IT-My(qV&Js&?2#ZN)>q zySM5QYlM`K1n_&PAF1fm=2ub$S)hb02O~k~%kWZFk+?E)4|U|Bj!vi8bs1*bDb?yX zb1MbgLt+9fok@NRw@grhulbS*V}DuKMLgMGPxe=m`Q7oRh$Z${=8?>>hrTc(c2f54 z$6YeN&xx1JmvQJtn_+WqhAlhyqSnwnVTL`zJ-@$0%t=bem)-OG0Fft|dtUW>zxb2P z!-b&m?+LSP$rZKhm}U3#`F@dR*<*Nqe-Gbp-23}vmOYte-@aLPA3w2efn~W3rf=u} zEh9eswp~zZt<fiKndTP;&Cl@BjQK?)gHVYQ!?WSD(d>I5dMDoU}yF7$vc` z#Whje1$~PFd!27$74>FNhN1JzLdUVgLIhexc*n)4%##Hr zBPUUme7PhXU$W{jQ}Y)k`$6=QRl@JAKt$Y2u{=sD`R3K`{?Yq`ou5R8Psx6Ilg>@s z+}2PO4|pC(dZ5xi(ifF^QWj-zctS^dFx818>Fa5GEfS{Bh_-GT9zLo-Av@Q$aorHuEgRm#Sx6;jPeIvbk0VD(TG7bZ?rHeDt*zv(FyvzgfJr6fg6 zO5mB54{^p)`SC0M`TcKeWk6)~Wbm-$>an}%=3N})x(_07ge+h68|d-IldHvs=vCrjfoVJGf2#v-sF-U%$X)) z3n>3EO{O4a{WkA_XJKw67lGCB*ad1?p=vQP`7TupcWcnj*_Z%f(h4e_M2s&5azSB0f7s3?9wiezX0nD`4PMYxZNVqSijau^X!GOY#^-OlKqdI6Tccn-T(wp=aHtD4_>8;fyv0FK! zqE_#ea;Kkorf?})x|CY{H$(OtCce~~p(6Wu3QVOZ#>qY^mvr=O>vul48u1M$o!hycO@ E0AMqk761SM literal 0 HcmV?d00001 diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/DiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/DiskChopper.comp deleted file mode 100644 index a31f69b9f9..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/DiskChopper.comp +++ /dev/null @@ -1,230 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2008, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: DiskChopper -* -* %I -* Written by: Peter Willendrup -* Date: March 9 2006 -* Origin: Risoe -* Based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by -* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) -* -* %D -* Models a disc chopper with nslit identical slits, which are symmetrically distributed -* on the disc. At time t=0, the centre of the first slit opening will be situated at the -* vertical axis when phase=0, assuming the chopper centre of rotation is placed BELOW the beam axis. -* If you want to place the chopper ABOVE the beam axis, please use a 180 degree rotation around Z -* (otherwise unexpected beam splitting can occur in combination with the isfirst=1 setting, see -* related bug on GitHub) -* -* For more complicated gemometries, see component manual example of DiskChopper GROUPing. -* -* If the chopper is the 1st chopper of a continuous source instrument, you should use the "isfirst" parameter. -* This parameter SETS the neutron time to match the passage of the chooper slit(s), taking into account the -* chopper timing and phasing (thus conserving your simulated statistics). -* -* The isfirst parameter is ONLY relevant for use in continuous source settings. -* -* Example: DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=1) First chopper -* DiskChopper(radius=0.2, theta_0=10, nu=41.7, nslit=3, delay=0, isfirst=0) -* -* NOTA BENE wrt. GROUPing and isfirst: -* When setting up a GROUP of DiskChoppers for a steady-state / reactor source, you will need -* to set up -* 1) An initial chopper with isfirst=1, NOT part of the GROUP - and using a "big" chopper opening -* that spans the full angular extent of the openings of the subsequent GROUP -* 2) Add your DiskChopper GROUP setting isfirst=0 -* -* %P -* INPUT PARAMETERS: -* -* theta_0: [deg] Angular width of the slits. -* yheight: [m] Slit height (if = 0, equal to radius). Auto centering of beam at half height. -* radius: [m] Radius of the disc -* nu: [Hz] Frequency of the Chopper, omega=2*PI*nu (algebraic sign defines the direction of rotation) -* nslit: [1] Number of slits, regularly arranged around the disk -* -* Optional parameters: -* isfirst: [0/1] Set it to 1 for the first chopper position in a cw source (it then spreads the neutron time distribution) -* n_pulse: [1] Number of pulses (Only if isfirst) -* jitter: [s] Jitter in the time phase -* abs_out: [0/1] Absorb neutrons hitting outside of chopper radius? -* delay: [s] Time 'delay' -* phase: [deg] Angular 'delay' (overrides delay) -* xwidth: [m] Horizontal slit width opening at beam center -* verbose: [1] Set to 1 to display Disk chopper configuration -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT DiskChopper - - - -SETTING PARAMETERS (theta_0=0, radius=0.5, yheight, nu, nslit=3, jitter=0, delay=0, isfirst=0, n_pulse=1, abs_out=1, phase=0, xwidth=0, verbose=0) - - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -DECLARE -%{ - double Tg; - double To; - double delta_y; - double height; - double omega; -%} - -INITIALIZE -%{ - /* If slit height 'unset', assume full opening */ - if (yheight == 0) { - height = radius; - } else { - height = yheight; - } - delta_y = radius - height / 2; /* radius at beam center */ - omega = 2.0 * PI * nu; /* rad/s */ - if (xwidth && !theta_0 && radius) - theta_0 = 2 * RAD2DEG * asin (xwidth / 2 / delta_y); - - if (nslit <= 0 || theta_0 <= 0 || radius <= 0) { - fprintf (stderr, "DiskChopper: %s: nslit, theta_0 and radius must be > 0\n", NAME_CURRENT_COMP); - exit (-1); - } - if (nslit * theta_0 >= 360) { - fprintf (stderr, "DiskChopper: %s: nslit * theta_0 exceeds 2PI\n", NAME_CURRENT_COMP); - exit (-1); - } - if (yheight && yheight > radius) { - fprintf (stderr, "DiskChopper: %s: yheight must be < radius\n", NAME_CURRENT_COMP); - exit (-1); - } - if (isfirst && n_pulse <= 0) { - fprintf (stderr, "DiskChopper: %s: wrong First chopper pulse number (n_pulse=%g)\n", NAME_CURRENT_COMP, n_pulse); - exit (-1); - } - if (!omega) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP); - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - if (!abs_out) { - fprintf (stderr, "DiskChopper: %s WARNING: chopper will NOT absorb neutrons outside radius %g [m]\n", NAME_CURRENT_COMP, radius); - } - - theta_0 *= DEG2RAD; - - /* Calulate delay from phase and vice versa */ - if (phase) { - if (delay) { - fprintf (stderr, "DiskChopper: %s WARNING: delay AND phase specified. Using phase setting\n", NAME_CURRENT_COMP); - } - phase *= DEG2RAD; - /* 'Delay' should always be a delay, taking rotation direction into account: */ - delay = phase / fabs (omega); - } else { - phase = delay * omega; /* rad */ - } - - /* Time from opening of slit to next opening of slit */ - Tg = 2.0 * PI / fabs (omega) / nslit; - - /* How long can neutrons pass the Chopper at a single point */ - To = theta_0 / fabs (omega); - - if (!xwidth) - xwidth = 2 * delta_y * sin (theta_0 / 2); - - if (verbose && nu) { - printf ("DiskChopper: %s: frequency=%g [Hz] %g [rpm], time frame=%g [s] phase=%g [deg]\n", NAME_CURRENT_COMP, nu, nu * 60, Tg, phase * RAD2DEG); - printf (" %g slits, angle=%g [deg] height=%g [m], width=%g [m] at radius=%g [m]\n", nslit, theta_0 * RAD2DEG, height, xwidth, delta_y); - } -%} - -TRACE -%{ - double toff; - double yprime; - PROP_Z0; - yprime = y + delta_y; - - /* Is neutron outside the vertical slit range and should we absorb? */ - if (abs_out && (x * x + yprime * yprime) > radius * radius) { - ABSORB; - } - /* Does neutron hit inner solid part of chopper in case of yheight!=radius? */ - if ((x * x + yprime * yprime) < (radius - height) * (radius - height)) { - ABSORB; - } - - if (isfirst) { - /* all events are put in the transmitted time frame */ - t = atan2 (x, yprime) / omega + To * randpm1 () / 2.0 + delay + (jitter ? jitter * randnorm () : 0) + (n_pulse > 1 ? floor (n_pulse * rand01 ()) * Tg : 0); - /* correction: chopper slits transmission opening/full disk */ - p *= nslit * theta_0 / 2.0 / PI; - } else { - - // Check whether each t_offset carried by the ray make it through - double weight_update = p/P_last_time_manipulation; - P_last_time_manipulation = 0; - - int train_index; - int one_did_hit = 0; - double this_train_t; - int all_dead = 1; - - for (train_index=0; train_index To) - p_trains[train_index] = 0; // T_ABSORB - else { - // T_TRANSMIT - one_did_hit = 1; - p_trains[train_index] *= weight_update; - P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; - } - - } - if (!one_did_hit || all_dead) ABSORB; - - p = P_last_time_manipulation; - - } - SCATTER; -%} - -MCDISPLAY -%{ - - int j; - /* Arrays for storing geometry of slit/beamstop */ - - circle ("xy", 0, -delta_y, 0, radius); - - /* Drawing the slit(s) */ - for (j = 0; j < nslit; j++) { - /* Angular start/end of slit */ - double tmin = j * (2.0 * PI / nslit) - theta_0 / 2.0 + phase; - double tmax = tmin + theta_0; - /* Draw lines for each slit. */ - - line (radius * sin (tmin), radius * cos (tmin) - delta_y, 0, (radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0); - line ((radius - height) * sin (tmin), (radius - height) * cos (tmin) - delta_y, 0, (radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, - 0); - line ((radius - height) * sin (tmax), (radius - height) * cos (tmax) - delta_y, 0, radius * sin (tmax), radius * cos (tmax) - delta_y, 0); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.c b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.c deleted file mode 100644 index e100c9f9a4..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/ESS_butterfly-lib.c +++ /dev/null @@ -1,402 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright 1997-2013, All rights reserved -* DTU Physics, Lyngby, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Library: share/ESS_butterfly-lib.c -* -* %Identification -* Written by: PW -* Date: Nov 7, 2013 -* Origin: DTU Physics -* Release: McStas 2.1 -* Version: 0.1 -* -* This file is to be imported by the ESS_moderator_long component -* It defines a set of brilliance definitions (used via function pointer) for -* easier use of the component. -* -* Usage: within SHARE -* %include "ESS_butterfly-lib" -* -*******************************************************************************/ - -#ifndef ESS_BUTTERFLY_LIB_H -#error McStas : please import this library with %include "ESS_butterfly-lib" -#endif - -#ifdef OPENACC -#define exit(...) noprintf() -#endif - -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_spectrum(double lambda,double theta){ - if(lambda<=0)return 0; - double par0=8.44e13/25.; - double par1=2.5; - double par2=2.2; - - double par3=-13.-.5*(theta-5); - double par4=2.53; - double par5=-0.0478073-0.160*exp(-0.45186*(theta-5.)/10.); - - double par6; - if(theta==5)par6=5.73745e+015/25.; - else if(theta==15)par6=5.88284e+015/25.; - else if(theta==25)par6=6.09573e+015/25.; - else if(theta==35)par6=6.29116e+015/25.; - else if(theta==45)par6=6.03436e+015/25.; - else if(theta==55)par6=6.02045e+015/25.; - double par7=0.788956+0.00854184*(theta-5.)/10.; - double par8=0.0461868-0.0016464*(theta-5.)/10.; - double par9=0.325; - - double SD_part=par0/((1+exp(par1*(lambda-par2)))*lambda); - double para_part=pow((1+exp(par3*(lambda-par4))),par5)*(par6*(exp(-par7*(lambda))+par8*exp(-par9*(lambda)))); - return para_part+SD_part; - -} -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_spectrum(double lambda, double theta){ - if(lambda<=0)return 0; - double i=(theta-5.)/10.; - double par0=4.2906e+013-9.2758e+011*i+8.02603e+011*i*i-1.29523e+011*i*i*i; - double par2=6.24806e+012-8.84602e+010*i; - double par3=-0.31107+0.0221138*i; - double aOlsqr=949./(325*lambda*lambda); - return par0*2.*aOlsqr*aOlsqr/lambda*pow(lambda,-par3)*exp(-aOlsqr)+par2/((1+exp(2.5*(lambda-0.88)))*lambda); - -} - - -/* This is ESS_2014_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_cold_y0(double y0,double height){ - - double one_over_integral_y0_of_height= height/((0.36434*height*height+2.53796*height-0.107774)); - if(y0 < -height/2. || y0 > height/2. )return 0; - double cosh_ish=(exp(-7e-1/sqrt(height)*(y0-height/2.))+exp(-7e-1/20.*height+7e-1/sqrt(height)*(y0+height/2.))); - double sinh_ish=(exp(50/sqrt(height)*(y0-height/2.))-1)*(exp(-50/sqrt(height)*(y0+height/2.))-1); - double tmp=one_over_integral_y0_of_height*cosh_ish*sinh_ish; - return tmp; -} /* end of ESS_2014_Schoenfeldt_cold_y0 */ - -/* This is ESS_2014_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_thermal_y0(double y0,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2014_Schoenfeldt_thermal_y0 */ - -/* This is ESS_2014_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2014_Schoenfeldt_cold_x0(double x0,double height, double width){ - double normalization=1; - if(x0<-width||x0>width)return 0; - return normalization*(0.008*x0+1)*(exp(height/2.*(x0-width/2))-1)*(exp(-height/2.*(x0+width/2))-1); -} /* end of ESS_2014_Schoenfeldt_cold_x0 */ - -/* This is ESS_2014_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2014 Schoenfeldt cold moderator */ - -double ESS_2014_Schoenfeldt_thermal_x0(double x0,double height, double width){ - // Kept for reference only... - /* if(x0>-width&&x0-23./2.&&x0<23./2.)return 0; - long double cosh_ish=fmin(0.0524986*fabs(x0)-1.84817-0.0189762*height+(-1.49712e+002*exp(-4.06814e-001*height))*exp(-4.48657e-001*fabs(x0)),0); - if(x0<0)return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity - *cosh_ish*(exp(7.*(x0+23./2.))-1); // slope - return (-1.73518e-003*height*height+2.10277e-002*height+7.65692e-001) // intensity - *(0.84199+0.00307022*height) // asumetry - *cosh_ish*(exp(-7.*(x0-23./2.))-1); // slope -} /* end of ESS_2014_Schoenfeldt_thermal_x0 */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_t == 0.03) || (height_t == 0.06)) { - *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (6.2e14/9.0e14); - *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } -} /* end of ESS_2015_Schoenfeldt_thermal */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_t == 0.03) || (height_t == 0.06)) { - *p = ESS_2015_Schoenfeldt_thermal_spectrum(lambda, beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_thermal_y0(100*Y) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (6.2e14/9.0e14); - *p *= ESS_2014_Schoenfeldt_thermal_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_thermal_x0(100*X, beamportangle, Mwidth_t); - } -} /* end of ESS_2015_Schoenfeldt_thermal */ - -/* This is the thermal moderator with 2015 updates, fits from Troels Schoenfeldt */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_thermal_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_thermal_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); -} - - -/* This is the cold moderator with 2015 updates, fits from Troels Schoenfeldt */ -/* Parametrization including moderator height for the "pancake" moderator */ -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_c == 0.03) || (height_c == 0.06)) { - *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (10.1e14/16.0e14); - *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } -} /* end of ESS_2015_Schoenfeldt_cold */ - -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold_no_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - if ((height_c == 0.03) || (height_c == 0.06)) { - *p = ESS_2015_Schoenfeldt_cold_spectrum(lambda,beamportangle); - } else { - printf("Sorry! Moderator height must be either %g or %g m\n",0.03,0.06); - exit(-1); - } - - if (height_c == 0.03) { - // 3cm case - *p *= ESS_2015_Schoenfeldt_cold_y0(100*Y) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } else { - // 6cm case - // Downscale brightness by factor from - // "New ESS Moderator Baseline", Ken Andersen, 9/4/2015 - *p *= (10.1e14/16.0e14); - *p *= ESS_2014_Schoenfeldt_cold_y0(100*Y, 100*height_c) * ESS_2015_Schoenfeldt_cold_x0(100*X, beamportangle, Mwidth_c); - } -} /* end of ESS_2015_Schoenfeldt_cold */ - -#pragma acc routine seq -void ESS_2015_Schoenfeldt_cold_only_t(double *t, double *p, double lambda, double tfocus_w, double tfocus_t, double tfocus_dt, double height_t, double Mwidth_t, double height_c, double Mwidth_c, double tmultiplier, double beamportangle, double X, double Y) -{ - /* Troels Schoenfeldt function for timestructure */ - *p *= tmultiplier*ESS_2015_Schoenfeldt_cold_timedist(*t, lambda, 3 /* cm height */, ESS_SOURCE_DURATION); -} /* end of ESS_2015_Schoenfeldt_cold */ - - -/* This is ESS_2015_Schoenfeldt_cold_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_y0(double y0){ - double par3=30; - double par4=.35; - double cosh_ish=exp(-par4*y0)+exp(par4*y0); - double sinh_ish=pow(1+exp(par3*(y0-3./2.)),-1)*pow(1+exp(-par3*(y0+3./2.)),-1); - return 1./2.*(double)((double)cosh_ish*(double)sinh_ish); - -} /* end of ESS_2015_Schoenfeldt_cold_y0 */ - -/* This is ESS_2015_Schoenfeldt_thermal_y0 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_y0(double y0){ - if(y0<-3./2.+0.105){ - return 1.005*exp(-pow((y0+3./2.-0.105)/0.372,2)); - } else if(y0>3./2.-0.105){ - return 1.005*exp(-pow((y0-3./2.+0.105)/0.372,2)); - } - return 1.005; -} /* end of ESS_2015_Schoenfeldt_thermal_y0 */ - -/* This is ESS_2015_Schoenfeldt_cold_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_x0(double x0,double theta, double width){ - // GEOMETRY / SAMPLING SPACE - double i=(theta-5.)/10.; - double par0=0.0146115+0.00797729*i-0.00279541*i*i; - double par1=0.980886; - if(i==1)par1=0.974217; - if(i==2)par1=0.981462; - if(i==3)par1=1.01466; - if(i==4)par1=1.11707; - if(i==5)par1=1.16057; - - double par2=-4-.75*i; - if(i==0)par2=-20; - double par3=-14.9402-0.178369*i+0.0367007*i*i; - if(i==0)par3*=0.95; - double par4=-15; - if(i==3)par4=-3.5; - if(i==5)par4=-1.9; - double par5=-7.07979+0.0835695*i-0.0546662*i*i; - if(i==5)par5*=0.85; - - //printf("Angle %g, width is %g\n",theta,width,cos(theta*DEG2RAD)*width); - //if(i==4) width=width+0.3; - //if(i==5) width=width-0.7; - - /* Rescaling to achieve a BF1 model */ - double tmp=(par5-par3)/width; - //printf("Cold x0 in BF1 units: %g,",x0); - x0=x0*tmp-7.16; - //printf("x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par5-par3); - - /* if (x0<=par5 && x0>=par3) */ - /* return 1; */ - /* else */ - /* return 0; */ - - - double line=par0*(x0+12)+par1; - double CutLeftCutRight=1./((1+exp(par2*(x0-par3)))*(1+exp(-par4*(x0-par5)))); - - return line*CutLeftCutRight; -} /* end of ESS_2015_Schoenfeldt_cold_x0 */ - -/* This is ESS_2015_Schoenfeldt_thermal_x0 - horizontal intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_x0(double x0,double theta, double width){ - double i=(theta-5.)/10.; - double par0=-5.54775+0.492804*i; - double par1=-0.265929-0.711477*i; - if(theta==55)par1=-2.55; - - double par2=0.821885+0.00914832*i; - double par3=1.31108-0.00698647*i; - if(theta==55)par3=1.23; - double par4=-.035; - double par5=-0.0817358+0.00807125*i; - - double par6=-8; - double par7=-7.15; - if(theta==45)par7=-8.2; - if(theta==55)par7=-7.7; - - double par8=-8; - double par9=7.15; - if(theta==45)par9=7.5; - if(theta==55)par9=8.2; - - /* Rescaling to achieve a BF1 model */ - double tmp=(par9-par7)/width; - //printf("Thermal x0 in BF1 units: %g,",x0); - x0=x0*tmp-7.16; - //printf(" x0 in BF2 units: %g, moderator width is %g from %g\n",x0,width,par9-par7); - - /* if (x0<=par9 && x0>=par7) */ - /* return 1; */ - /* else */ - /* return 0; */ - - double soften1=1./(1+exp(8.*(x0-par0))); - double soften2=1./(1+exp(8.*(x0-par1))); - double CutLeftCutRight=1./((1+exp(par6*(x0-par7)))*(1+exp(-par8*(x0-par9)))); - double line1=par4*(x0-par0)+par2; - double line2=(par2-par3)/(par0-par1)*(x0-par0)+par2; - double line3=par5*(x0-par1)+par3; - double add45degbumb=1.2*exp(-(x0+7.55)*(x0+7.55)/.35/.35); - - - return CutLeftCutRight*( - (line1)*soften1 - +line2*soften2*(1-soften1) - +line3*(1-soften2) - ); -} /* end of ESS_2015_Schoenfeldt_thermal_x0 */ - -/* This is ESS_2015_Schoenfeldt_cold_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_Y(double Y,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_cold_Y */ - -/* This is ESS_2015_Schoenfeldt_thermal_Y - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_Y(double Y,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_thermal_Y */ - -/* This is ESS_2015_Schoenfeldt_cold_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_Theta120(double Theta120,double height){ - /* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_cold_Theta120 */ - -/* This is ESS_2015_Schoenfeldt_thermal_Theta120 - vertical intensity distribution for the 2015 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_thermal_Theta120(double beamportangle,int isleft){ - if(!isleft)return cos((beamportangle-30)*DEG2RAD)/cos(30*DEG2RAD); - return cos((90-beamportangle)*DEG2RAD)/cos(30*DEG2RAD); -/* Placeholder - we assume that this distribution is flat for now */ - return 1; -} /* end of ESS_2015_Schoenfeldt_thermal_Theta120 */ - - -/* This is ESS_2015_Schoenfeldt_cold_timedist time-distribution of the 2014 Schoenfeldt cold moderator */ -#pragma acc routine seq -double ESS_2015_Schoenfeldt_cold_timedist(double time,double lambda,double height, double pulselength){ - if(time<0)return 0; - double tau=3.00094e-004*(4.15681e-003*lambda*lambda+2.96212e-001*exp(-1.78408e-001*height)+7.77496e-001)*exp(-6.63537e+001*pow(fmax(1e-13,lambda+.9),-8.64455e+000)); - if(timeGeometry -* The geometry corresponds correctly to the latest release of the butterfly moderator, -* including changes warranted by the ESS CCB in July 2016, the so called BF1 type moderator. -* A set of official release documents are available with this component, see the benchmarking -* website mentioned below. -* -* Brilliances, geometry adapted from earlier BF2 design -* The geometry and brightness data implemented in the McStas ESS source component ESS_butterfly.comp, -* are released as an updated component library for McStas 2.3, as well as a stand alone archive for -* use with earlier versions of McStas. -* -* The following features are worth highlighting: -*
    -*
  • The brightness data are still based on last years MCNP calculations, based on the Butterfly 2 geometry. -* As a result, the spatial variation of the brightness across the moderator face should be considered to -* have an uncertainty of the order of 10%. Detailed information on the reasoning behind the change to -* the Butterfly 1 geometry can be found in [1] and detailed information on horizontal spatial brightness -* variation can be found in [2]. The spectral shape has been checked and has not changed significantly. -*
  • A scaling factor has been introduced to in order to account for the decrease in brightness since 2015. -* To accommodate the influence of the changed geometry, this scaling factor has been applied independently -* for the cold and thermal contributions and is beamline dependent. It is adjusted to agree with the -* spectrally-integrated 6cm width data shown in [1],Figure 3. -*
  • To allow future user adjustments of brilliance, the scalar parameters c_performance and t_performance -* have been implemented. For now, we recommend to keep these at their default value of 1.0. -*
  • The geometry has been updated to correspond within about 2 mm to the geometry described in [1]. This -* has been done by ensuring that the position and apparent width of the moderators correspond to [1],Figure 2, -* which has been derived from current MCNP butterfly 1 model. -*
  • The beamport is now defined directly by its sector and number (e.g. 'W' and '5'), rather than giving the angle, -* as before. [1],Figure 5 shows the geometry of the moderator2, beamport insert and beamline axis for beamline W5. -* Since the underlying data is still from last years MCNP run, when the brightness was calculated at 10-degree -* intervals, this means that the spectral curve for the nearest beamport on the grid 5,15,25,35,45,55 degrees -* is used. The use of this grid has no effect on the accuracy of the geometry or brilliance because of the above- -* mentioned beamline-dependent adjustments to the brilliance and geometry. See the website [3] for details. -*
-* As before, the beamports all originate at the focal point of the sector. The beamline will in almost all cases be -* horizontally tilted in order to view the cold or thermal moderator, which should be done using an Arm component. -* -*

We expect to release an MCNP-event-based source model later in 2016, and possibly also new set of brilliance -* functions for ESS_butterfly.comp. These are expected to include more realistic brilliances in terms of variation -* across sectors and potentially also performance losses due to engineering reality. -* -* Engineering reality -* An ad-hoc method for future implementation of "engineering reality" is included, use the -* "c_performance/t_performance" parameters to down-scale performance uniformly across all wavelengths. -* -* References: -*

    -*
  1. Release document "Update to ESS Moderators, latest version" -*
  2. Release document "Description and performance of the new baseline ESS moderators, latest version" -*
  3. http://essbutterfly.mcstas.org/ benchmarking website with comparative McStas-MCNP figures -*
  4. html-based, interactive 3D model of moderators and monolith, as seen from beamline N4. -*
  5. Source code for ESS_butterfly.comp at GitHub. -*
-* %P -* Input parameters: -* sector: [str] Defines the 'sector' of your instrument position. Valid values are "N","S","E" and "W" -* beamline: [1] Defines the 'beamline number' of your instrument position. Valid values are 1..10 or 1..11 depending on sector -* yheight: [m] Defines the moderator height. Valid values are 0.03 m and 0.06 m -* cold_frac: [1] Defines the statistical fraction of events emitted from the cold part of the moderator -* c_performance: [1] Cold brilliance scalar performance multiplicator c_performance > 0 -* t_performance: [1] Thermal brilliance scalar performance multiplicator t_performance > 0 -* Lmin: [AA] Minimum wavelength simulated -* Lmax: [AA] Maximum wavelength simulated -* target_index: [1] Relative index of component to focus at, e.g. next is +1 this is used to compute 'dist' automatically. -* dist: [m] Distance from origin to focusing rectangle; at (0,0,dist) - alternatively use target_index -* focus_xw: [m] Width of focusing rectangle -* focus_yh: [m] Height of focusing rectangle -* tmax_multiplier: [1] Defined maximum emission time at moderator, tmax= tmax_multiplier * ESS_PULSE_DURATION. -* acc_power: [MW] Accelerator power in MW -* n_pulses: [1] Number of pulses simulated. 0 and 1 creates one pulse. -* tfocus_dist: [m] Position of time focusing window along z axis -* tfocus_time: [s] Time position of time focusing window -* tfocus_width: [s] Time width of time focusing window -* -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT ESS_butterfly - -SETTING PARAMETERS (string sector="N",int beamline=1, yheight=0.03, cold_frac=0.5, - int target_index=0, dist=0, focus_xw=0, focus_yh=0, - c_performance=1, t_performance=1, Lmin, Lmax, tmax_multiplier=3, int n_pulses=1, - acc_power=5,tfocus_dist=0,tfocus_time=0,tfocus_width=0, target_tsplit=5) - -DEPENDENCY " -DTOF_TRAIN " - -SHARE %{ - %include "ESS_butterfly-lib" - %include "ESS_butterfly-geometry.c" - - int nearest_angle(double angle) { - int AngleList[] = {5, 15, 25, 35, 45, 55}; - double diff = 180; - int jmin=0; - int j; - for (j=0; j<6; j++) { - if (fabs(AngleList[j]-angle) < diff) { - diff = fabs(AngleList[j]-angle); - jmin = j; - } - } - return AngleList[jmin]; - } - double BeamlinesN[]={ 30.0, 36.0, 42.0, 48.0, 54.0, 60.0, 66.0, 72.0, 78.0, 84.0, 90.0}; - double BeamlinesE[]={-30.0, -36.0, -42.0, -48.0, -54.0, -60.0, -66.0, -72.0, -78.0, -84.0, -90.0}; - double BeamlinesW[]={ 150.0, 144.7, 138.0, 132.7, 126.0, 120.7, 114.0, 108.7, 102.0, 96.7, 90.0, 84.0}; - double BeamlinesS[]={-150.0, -144.7, -138.0, -132.7, -126.0, -120.7, -114.0, -108.7, -102.0, -96.7, -90.0, -84.0}; - double ColdWidthNE[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.7e-2, 8.6e-2, 8.3e-2}; - double ThermalWidthNE[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 10e-2, 10.3e-2, 10.5e-2}; - double ColdWidthSW[]={7e-2, 7.45e-2, 8.3e-2, 8.6e-2, 8.7e-2, 8.8e-2, 8.8e-2, 8.8e-2, 8.6e-2, 8.4e-2, 6.9e-2}; - double ThermalWidthSW[]={5.4e-2, 6.2e-2, 7.2e-2, 8.2e-2, 8.5e-2, 9.1e-2, 9.6e-2, 9.95e-2, 10.25e-2, 10.45e-2, 10.5e-2}; - double ColdScalarsN[]={9.8788e-01, 1.0009e+00, 9.9335e-01, 9.5997e-01, 9.0717e-01, 9.1646e-01, 9.1028e-01, 9.1773e-01, 9.2537e-01, 9.1727e-01, -1}; - double ColdScalarsE[]={9.9032e-01, 1.0020e+00, 9.9647e-01, 9.6885e-01, 9.0713e-01, 9.1787e-01, 9.1190e-01, 9.2113e-01, 9.2786e-01, 9.2146e-01, -1}; - double ColdScalarsW[]={9.9017e-01, 1.0069e+00, 9.9366e-01, 9.7144e-01, 9.0624e-01, 8.9379e-01, 9.1022e-01, 9.2847e-01, 9.2812e-01, 9.2703e-01, 8.3098e-01}; - double ColdScalarsS[]={8.6550e-01, 1.0071e+00, 9.9401e-01, 9.6243e-01, 9.0398e-01, 8.9299e-01, 9.0830e-01, 9.2450e-01, 9.2270e-01, 9.2373e-01, 8.2508e-01}; - double ThermalScalarsN[]={8.6782e-01, 7.8627e-01, 7.6528e-01, 7.9469e-01, 7.3645e-01, 7.3012e-01, 7.2755e-01, 7.1750e-01, 7.1973e-01, 7.0459e-01, -1}; - double ThermalScalarsE[]={8.6838e-01, 7.8295e-01, 7.6719e-01, 7.9431e-01, 7.3989e-01, 7.3107e-01, 7.2811e-01, 7.2201e-01, 7.2097e-01, 7.0307e-01, -1}; - double ThermalScalarsW[]={8.7232e-01, 8.0007e-01, 7.6853e-01, 8.0251e-01, 7.3728e-01, 7.3761e-01, 7.2808e-01, 7.2151e-01, 7.1797e-01, 6.9857e-01, 6.9610e-01}; - double ThermalScalarsS[]={8.6910e-01, 7.9964e-01, 7.6365e-01, 7.9922e-01, 7.3479e-01, 7.3836e-01, 7.2773e-01, 7.2202e-01, 7.1667e-01, 7.0149e-01, 7.0084e-01}; - double dxCold[]={-0.01, -0.01, -0.002, 0.004, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; - double dxThermal[]={0.002, 0.003, 0.002, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007}; -%} - -DECLARE -%{ - double* ColdWidths; - double* ThermalWidths; - double ColdScalars[11]; - double ThermalScalars[11]; - double *Beamlines; - double wfrac_cold; - double wfrac_thermal; - /* 'Corner' parametrization, i.e. where are the limits of the moderators */ - double C1_x; - double C1_z; - double C2_x; - double C2_z; - double C3_x; - double C3_z; - double T1_x; - double T1_z; - double T2_x; - double T2_z; - double T3_x; - double T3_z; - /* - plus rotated versions of the same... */ - double rC1_x; - double rC1_z; - double rC2_x; - double rC2_z; - double rC3_x; - double rC3_z; - double rT1_x; - double rT1_z; - double rT2_x; - double rT2_z; - double rT3_x; - double rT3_z; - double tx; - double ty; - double tz; - double r11; - double r12; - double r21; - double r22; - double delta_y; - double Mwidth_c; - double Mwidth_t; - double beamportangle; - double w_mult; - double w_stat; - double w_focus; - double w_tfocus; - double w_geom_c; - double w_geom_t; - int isleft; - double l_range; - - double cos_thermal; - double cos_cold; - - double orientation_angle; - /* Centering-parameters, which sector are we in? */ - double cx; - double cz; - int jmax; - double dxC; - double dxT; -%} - -INITIALIZE -%{ - - - int sign_bl_angle; - - /* Oversampling for widths plus fraction of moderator surface "not around the corner" */ - double oversampT=1.1; - double oversampC=1.0; - - - /* variables needed to correct for the emission surface angle */ - double internal_angle; - double cos_beamport_angle, sin_beamport_angle; - - if (beamline<4) { - wfrac_cold=1.0; - wfrac_thermal=(1-0.072); - } else { - wfrac_cold=1.0; - wfrac_thermal=1.0; - } - - /* Centering-parameters, which sector are we in? */ - if (strcasestr(sector,"N")) { - cx = 0.117; cz=0.0; sign_bl_angle=1; - orientation_angle = BeamlinesN[beamline-1]; - Beamlines = BeamlinesN; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsN[j]; - ThermalScalars[j] = ThermalScalarsN[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else if (strcasestr(sector,"W")) { - cx = 0.0; cz=0.0; sign_bl_angle=-1; - orientation_angle = BeamlinesW[beamline-1]; - Beamlines = BeamlinesW; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsW[j]; - ThermalScalars[j] = ThermalScalarsW[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"S")) { - cx = 0.0; cz=-0.185; sign_bl_angle=1; - orientation_angle = BeamlinesS[beamline-1]; - Beamlines = BeamlinesS; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - //printf("cosines are %g %g internal angle %g\n",cos_thermal,cos_cold,fabs(internal_angle)); - ColdWidths = ColdWidthSW; - ThermalWidths = ThermalWidthSW; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsS[j]; - ThermalScalars[j] = ThermalScalarsS[j]; - } - jmax=11; - T1_x=0; - T1_z=0; - T2_x=wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=-((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=-(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=-1; - } else if (strcasestr(sector,"E")) { - cx = 0.117; cz=-0.185; sign_bl_angle=-1; - orientation_angle = BeamlinesE[beamline-1]; - Beamlines = BeamlinesE; - internal_angle=90-fabs(orientation_angle); - beamportangle=nearest_angle(fabs(internal_angle)); - /* Direction-cosines for use with e.g. Brilliance_monitor */ - cos_beamport_angle=cos(fabs(internal_angle)*DEG2RAD); - sin_beamport_angle=sin(fabs(internal_angle)*DEG2RAD); - /* correction for projection along the beam / projection on the z=0 plane */ - cos_thermal=cos_beamport_angle; - cos_cold=cos((fabs(internal_angle)-24.24)*DEG2RAD); - ColdWidths = ColdWidthNE; - ThermalWidths = ThermalWidthNE; - int j; - for (j=0;j<11;j++){ - ColdScalars[j] = ColdScalarsE[j]; - ThermalScalars[j] = ThermalScalarsE[j]; - } - jmax=10; - T1_x=0; - T1_z=0; - T2_x=-wfrac_thermal*oversampT*ThermalWidths[beamline-1]/cos_thermal; - T2_z=0; - T3_x=((1-wfrac_thermal)*oversampT*ThermalWidths[beamline-1]/cos_thermal); - T3_z=0; - C1_x=0; - C1_z=0; - C2_x=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*cos(24.24*DEG2RAD); - C2_z=(wfrac_cold*oversampC*ColdWidths[beamline-1]/cos_cold)*sin(24.24*DEG2RAD); - C3_x=-(1-wfrac_cold)*oversampC*ColdWidths[beamline-1]/cos_thermal; - C3_z=0; - isleft=1; - } else { - fprintf(stderr,"%s: Sector %s is undefined, please use N, W, S or E!\n", NAME_CURRENT_COMP,sector); - exit(-1); - } - if (beamline > jmax || beamline <= 0 ) { - fprintf(stderr,"%s: beamline no %i is undefined in sector %s, please use 1 <= beamline <= %i\n", NAME_CURRENT_COMP, beamline, sector, jmax); - exit(-1); - } - - printf("%s: Setting up for sector %s, beamline %i, global orientation angle is %g, internal angle %g\n", NAME_CURRENT_COMP, sector,beamline,orientation_angle,beamportangle); - if (c_performance <= 0) { - fprintf(stderr,"%s: Cold performance scalar of %g is not allowed. Please select 0 < c_performance\n", NAME_CURRENT_COMP, c_performance); - exit(-1); - } - if (t_performance <= 0) { - fprintf(stderr,"%s: Thermal performance scalar of %g is not allowed. Please select 0 < t_performance\n", NAME_CURRENT_COMP, t_performance); - exit(-1); - } - if (Lmin>=Lmax || Lmin <= 0 || Lmax < 0) { - fprintf(stderr,"%s: Unmeaningful definition of wavelength range!\nPlease select Lmin, Lmax > 0 and Lmax > Lmin.\n ERROR - Exiting\n", - NAME_CURRENT_COMP); - exit(-1); - } - /* Figure out where to aim */ - if (target_index && !dist) - { - Coords ToTarget; - ToTarget = coords_sub(POS_A_COMP_INDEX(INDEX_CURRENT_COMP+target_index),POS_A_CURRENT_COMP); - ToTarget = rot_apply(ROT_A_CURRENT_COMP, ToTarget); - coords_get(ToTarget, &tx, &ty, &tz); - dist=sqrt(tx*tx+ty*ty+tz*tz); - } else if (!target_index && !dist) { - fprintf(stderr,"%s: Please choose to set either the dist parameter or specify a target_index.\nExit\n", NAME_CURRENT_COMP); - exit(-1); - } else { - tx=0; ty=0; tz=dist; - } - printf("%s: Focusing at rectagle sized %g x %g \n - positioned at location (x,y,z)=(%g m, %g m, %g m) \n", NAME_CURRENT_COMP, focus_xw, focus_yh, tx, ty, tz); - if (target_index) { - printf(" ( from target_index %i -> distance %g )\n", target_index, dist); - } else { - printf(" ( from dist parameter -> distance %g )\n", dist); - } - printf("%s: Cold and Thermal brilliance performance multiplicators are c_performance=%g and t_performance=%g\n", NAME_CURRENT_COMP, c_performance, t_performance); - - /* Calculate orientation matrix for the display and calculations */ - r11 = cos(DEG2RAD*orientation_angle); - r12 = -sin(DEG2RAD*orientation_angle); - r21 = sin(DEG2RAD*orientation_angle); - r22 = cos(DEG2RAD*orientation_angle); - - /* Rotated corrdinates of the emission areas */ - rC1_x = r11*C1_z + r12*C1_x; - rC1_z = r21*C1_z + r22*C1_x; - rC2_x = r11*C2_z + r12*C2_x; - rC2_z = r21*C2_z + r22*C2_x; - rC3_x = r11*C3_z + r12*C3_x; - rC3_z = r21*C3_z + r22*C3_x; - rT1_x = r11*T1_z + r12*T1_x; - rT1_z = r21*T1_z + r22*T1_x; - rT2_x = r11*T2_z + r12*T2_x; - rT2_z = r21*T2_z + r22*T2_x; - rT3_x = r11*T3_z + r12*T3_x; - rT3_z = r21*T3_z + r22*T3_x; - /* Moderator half-height */ - delta_y = yheight/2.0; - /* Other moderator parms */ - /* "Measured" moderator widths in cm scale */ - Mwidth_c=100.0*ColdWidths[beamline-1]/cos_cold; - Mwidth_t=(100.0*ThermalWidths[beamline-1]+0.7)/cos_thermal; - - if (tfocus_width && tfocus_time && tfocus_dist) { - printf("%s: Using time focusing: Directing neutrons to this time-window:\n tfocus_width (%g s) wide at tfocus_time (%g s), tfocus_dist (%g m) downstream\n",NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - } else if (!tfocus_width && !tfocus_time && !tfocus_dist) { - printf("%s: NOT using time focusing\n",NAME_CURRENT_COMP); - } else { - fprintf(stderr,"%s: Unmeaningful combination tfocus_width (%g s), tfocus_time (%g s) and tfocus_dist (%g m): \n All must be either==0 (no time focusing) or !=0 (time focusing)\n ERROR - Exiting\n", - NAME_CURRENT_COMP, tfocus_width, tfocus_time, tfocus_dist); - exit(-1); - } - - l_range = Lmax-Lmin; - /* Weight multipliers */ - w_mult=acc_power/5; - w_stat=1.0/mcget_ncount(); - w_geom_c = 0.072*yheight*1.0e4; /* source area correction */ - w_geom_t = 0.108*yheight*1.0e4; - w_mult *= l_range; /* wavelength range correction */ - n_pulses=(double)floor(n_pulses); - if (n_pulses == 0) n_pulses=1; - - dxC=dxCold[beamline-1]; - dxT=dxThermal[beamline-1]; -%} - -TRACE -%{ - double xtmp; - int iscold; - double x0,z0; - int surf_sign; - double cos_factor; - double w_geom; - double xf, yf, zf; - double dx,dy,dz; - double k,v,r,lambda; - double dt=0; - double modX,modY; - - /* Cold or thermal event? */ - p=1; - xtmp = rand01(); - y = randpm1()*delta_y; - modY=y; - if (rand01() < cold_frac) { - iscold=1; - if (rand01() < wfrac_cold) { // "Broad face" - x = rC1_x + (rC2_x - rC1_x)*xtmp; - z = rC1_z + (rC2_z - rC1_z)*xtmp; - x0 = C1_x + (C2_x - C1_x)*xtmp; - z0 = C1_z + (C2_z - C1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_cold; - } else { - x = rC1_x + (rC3_x - rC1_x)*xtmp; - z = rC1_z + (rC3_z - rC1_z)*xtmp; - x0 = C1_x + (C3_x - C1_x)*xtmp; - z0 = C1_z + (C3_z - C1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)-dxC); - w_geom=w_geom_c; - } else { - iscold=0; - if (rand01() < wfrac_thermal) { // "Broad face" - x = rT1_x + (rT2_x - rT1_x)*xtmp; - z = rT1_z + (rT2_z - rT1_z)*xtmp; - x0 = T1_x + (T2_x - T1_x)*xtmp; - z0 = T1_z + (T2_z - T1_z)*xtmp; - surf_sign=1; - cos_factor=cos_thermal; - } else { - x = rT1_x + (rT3_x - rT1_x)*xtmp; - z = rT1_z + (rT3_z - rT1_z)*xtmp; - x0 = T1_x + (T3_x - T1_x)*xtmp; - z0 = T1_z + (T3_z - T1_z)*xtmp; - surf_sign=-1; - cos_factor=cos_thermal; - } - modX=((-1.0*isleft*x0)+dxT); - w_geom=w_geom_t; - } - - SCATTER; - /* Where are we going? */ - randvec_target_rect_real(&xf, &yf, &zf, NULL, - tx, ty, tz, focus_xw, focus_yh, ROT_A_CURRENT_COMP, x, y, z, 0); - - w_focus=focus_xw*focus_yh/(tx*tx+ty*ty+tz*tz); - - dx = xf-x; - dy = yf-y; - dz = zf-z; - r = sqrt(dx*dx+dy*dy+dz*dz); - - lambda = Lmin+l_range*rand01(); /* Choose from uniform distribution */ - - k = 2*PI/lambda; - v = K2V*k; - - vz = v*dz/r; - vy = v*dy/r; - vx = v*dx/r; - - int train_index; - - long tmp; - - if (total_N_sent == 0) { - tmp = N_trains; - } else { - tmp = ceil(target_tsplit*total_N_sent/total_arrived); - if (tmp > N_trains) { - tmp = N_trains; - } - } - - #pragma acc atomic write - adaptive_N = tmp; - - for (train_index=0; train_index0) { - dt = tfocus_dist/vz; - t = tfocus_time-dt; /* Set time to hit time window center */ - t += randpm1()*tfocus_width/2.0; - if (t<0) ABSORB; /* Kill neutron if outside pulse duration */ - if (t>tmax_multiplier*ESS_SOURCE_DURATION) ABSORB; - w_tfocus=tfocus_width/(tmax_multiplier*ESS_SOURCE_DURATION); - } else { - /* Simple, random wavelength @ random time */ - t = rand01()*tmax_multiplier*ESS_SOURCE_DURATION; - w_tfocus=1; - } - - if (iscold) { //case: cold moderator - /* Apply simple engineering reality correction */ - ESS_2015_Schoenfeldt_cold(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= c_performance; - p *= ColdScalars[beamline-1]; - } else { //case: thermal moderator - ESS_2015_Schoenfeldt_thermal(&t, &p, lambda, tfocus_width, tfocus_time, dt, yheight, Mwidth_t, yheight, Mwidth_c, tmax_multiplier, beamportangle, modX, modY); - p *= t_performance; - p *= ThermalScalars[beamline-1]; - } - p*=w_stat*w_focus*w_geom*w_mult*w_tfocus; - t+=(double)floor((n_pulses)*rand01())/ESS_SOURCE_FREQUENCY; /* Select a random pulse */ - p*=cos_factor; - /* Correct weight for sampling of cold vs. thermal events. */ - if (iscold) { - p /= cold_frac; - } else { - p /= (1-cold_frac); - } - - // Generate ray as normal with its associated p and t - // Save these to t_offset and p_train - - t_offset[train_index] = t; - p_trains[train_index] = p/adaptive_N; - P_last_time_manipulation = P_last_time_manipulation + p_trains[train_index]; - } - // Set base particle t and p, now p will be decoupled from the source intensity. - t=0; - p=P_last_time_manipulation; - - SCATTER; -%} - -MCDISPLAY -%{ - #ifndef OPENACC - magnify(""); - butterfly_geometry(delta_y, jmax, cx, cz, - orientation_angle, Beamlines, tx,ty,tz, - rC1_x,rC1_z,rC2_x,rC2_z,rC3_x,rC3_z, - rT1_x,rT1_z,rT2_x,rT2_z,rT3_x,rT3_z, - r11, r12, r21, r22, focus_xw, focus_yh); - #endif -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Graphite_Diffuser.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Graphite_Diffuser.comp deleted file mode 100644 index ea21aa714e..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/Graphite_Diffuser.comp +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************* -* -* McStas, version 1.2 released February 2000 -* Maintained by Kristian Nielsen and Kim Lefmann, -* Risoe National Laboratory, Roskilde, Denmark -* -* %IDENTIFICATION -* -* Written by: Manuel Morgano -* Date: 18 Febrauary 2015 -* Version: $Revision: 1.1.1.1 $ -* Origin: PSI -* -* Graphite diffuser -* -* %DESCRIPTION -* -* This graphite diffuser scatters nuetrons to remove sharp features given by neutron optics -* -* The formula has only been verified for a diffuser thickness of 1 and 2 cm. -* No absorption is take into account. -* -* %PARAMETERS -* -* INPUT PARAMETERS: -* -* xwidth: (m) Size of diffuser -* ywidth: (m) Size of diffuser -* thick: (m) Thickness of diffuser -* abs (1) 0 = no absorption, 1 = absorption -* %LINKS -* %END -* -*******************************************************************************/ - -DEFINE COMPONENT Graphite_Diffuser -DEFINITION PARAMETERS () -SETTING PARAMETERS (xwidth=0.1, ywidth=0.1, thick=0.01, abs=1) -OUTPUT PARAMETERS () -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) -SHARE -%{ - double GaussianNumber( double mu, double sigma, _class_particle* _particle) /* Box-Muller transform to generate a normally distributed number with std dev sigma e mean mu*/ -{ - double rand1, rand2; - rand1 = rand01();// / ((double) RAND_MAX); - if(rand1 < 1e-100) rand1 = 1e-100; - rand1 = -2 * log(rand1); - rand2 = (rand01()) * 6.2831853071795864769252866; - - return (sigma * sqrt(rand1) * cos(rand2)) + mu; -} -%} -INITIALIZE -%{ -%} -TRACE -%{ - - double L2,V2,V,theta,std,alpha,r,T,eff_thick,b,g,k,new_V2,ratio; - double dt; - PROP_Z0; - if (x>-xwidth/2 || x-ywidth/2 || yEmmanuel Farhi -* Date: 14th Feb 2000. -* Origin: ILL -* Release: McStas 1.6 -* Version: $Revision$ -* Modified by: EF, 29th Feb 2000 : added more options, monitor shape, theta, phi -* Modified by: EF, 01st Feb 2001 : PreMonitor for correlation studies (0.13.6) -* Modified by: EF, 5th Apr 2001 : use global functions (0.14) compile faster -* Modified by: EF, 23th Jul 2001 : log of signal, init arrays to 0, box (0.15) -* Modified by: EF, 04th Sep 2001 : log/abs of variables (0.16) -* Modified by: EF, 24th Oct 2001 : capture flux [p*lambda/1.7985] (0.16.3) -* Modified by: EF, 27th Aug 2002 : monitor a variable in place of I (0.16.5) -* Modified by: EF, 25th Oct 2002 : banana, and auto for each variable (0.16.5) -* -* This component is a general Monitor that can output 0/1/2D signals -* (Intensity or signal vs. [something] and vs. [something] ...) -* -* %Description -* This component is a general Monitor that can output 0/1/2D signals -* It can produce many 1D signals (one for any variable specified in -* option list), or a single 2D output (two variables correlation). -* Also, an additional 'list' of neutron events can be produced. -* By default, monitor is square (in x/y plane). A disk shape is also possible -* The 'cylinder' and 'banana' option will change that for a banana shape -* The 'sphere' option simulates spherical detector. The 'box' is a box. -* The cylinder, sphere and banana should be centered on the scattering point. -* The monitored flux may be per monitor unit area, and weighted by -* a lambda/lambda(2200m/s) factor to obtain standard integrated capture flux. -* In normal configuration, the Monitor_nD measures the current parameters -* of the neutron that is beeing detected. But a PreMonitor_nD component can -* be used in order to study correlations between a neutron being detected in -* a Monitor_nD place, and given parameters that are monitored elsewhere -* (at PreMonitor_nD). -* The monitor can also act as a 3He gas detector, taking into account the -* detection efficiency. -* -* The 'bins' and 'limits' modifiers are to be used after each variable, -* and 'auto','log' and 'abs' come before it. (eg: auto abs log hdiv bins=10 -* limits=[-5 5]) When placed after all variables, these two latter modifiers -* apply to the signal (e.g. intensity). Unknown keywords are ignored. -* If no limits are specified for a given observable, reasonable defaults will be -* applied. Note that these implicit limits are even applied in list mode. -* -* Implicit limits for typical variables: -* (consult monitor_nd-lib.c if you don't find your variable here) -* x, y, z: Derived from detection-object geometry -* k: [0 10] Angs-1 -* v: [0 1e6] m/s -* t: [0 1] s -* p: [0 FLT_MAX] in intensity-units -* vx, vy: [-1000 1000] m/s -* vz: [0 10000] m/s -* kx, ky: [-1 1] Angs-1 -* kz: [-10 10] Angs-1 -* energy, omega: [0 100] meV -* lambda,wavelength: [0 100] Angs -* sx, sy, sz: [-1 1] in polarisation-units -* angle: [-50 50] deg -* divergence, vdiv, hdiv, xdiv, ydiv: [-5 5] deg -* longitude, lattitude: [-180 180] deg -* neutron: [0 simulaton_ncount] -* id, pixel id: [0 FLT_MAX] -* uservars u1,u2,u3: [-1e10 1e10] -* -* In the case of multiple components at the same position, the 'parallel' -* keyword must be used in each instance instead of defining a GROUP. -* -* Possible options are -* Variables to record: -* kx ky kz k wavevector [Angs-1] Wavevector on x,y,z and norm -* vx vy vz v [m/s] Velocity on x,y,z and norm -* x y z radius [m] Distance, Position and norm -* xy, yz, xz [m] Radial position in xy, yz and xz plane -* kxy kyz kxz [Angs-1] Radial wavevector in xy, yz and xz plane -* vxy vyz vxz [m/s] Radial velocity in xy, yz and xz plane -* t time [s] Time of Flight -* energy omega [meV] energy of neutron -* lambda wavelength [Angs] wavelength of neutron -* sx sy sz [1] Spin -* vdiv ydiv dy [deg] vertical divergence (y) -* hdiv divergence xdiv [deg] horizontal divergence (x) -* angle [deg] divergence from direction -* theta longitude [deg] longitude (x/z) for sphere and cylinder -* phi lattitude [deg] lattitude (y/z) for sphere and cylinder -* -* user user1 will monitor the [Mon_Name]_Vars.UserVariable{1|2|3} -* user2 user3 to be assigned in an other component (see below) -* -* p intensity flux [n/s or n/cm^2/s] -* ncounts n neutron [1] neutron ID, i.e current event index -* pixel id [1] pixelID in histogram made of preceeding vars, e.g. 'theta y'. To set an offset PixelID use the 'min=value' keyword. Sets event mode. -* -* Other options keywords are: -* abs Will monitor the abs of the following variable or of the signal (if used after all variables) -* auto Automatically set detector limits for one/all -* all {limits|bins|auto} To set all limits or bins values or auto mode -* binary {float|double} with 'source' option, saves in compact files -* bins=[bins=20] Number of bins in the detector along dimension -* borders To also count off-limits neutrons (X < min or X > max) -* capture weight by lambda/lambda(2200m/s) capture flux -* file=string Detector image file name. default is component name, plus date and variable extension. -* incoming Monitor incoming beam in non flat det -* limits=[min max] Lower/Upper limits for axes (see up for the variable unit) -* list=[counts=1000] or all For a long file of neutron characteristics with [counts] or all events -* log Will monitor the log of the following variable or of the signal (if used after all variables) -* min=[min_value] Same as limits, but only sets the min or max -* max=[max_value] -* multiple Create multiple independant 1D monitors files -* no or not Revert next option -* outgoing Monitor outgoing beam (default) -* parallel Use this option when the next component is at the same position (parallel components) -* per cm2 Intensity will be per cm^2 (detector area). Displays beam section. -* per steradian Displays beam solid angle in steradian -* premonitor Will monitor neutron parameters stored previously with PreMonitor_nD. -* signal=[var] Will monitor [var] instead of usual intensity -* slit or absorb Absorb neutrons that are out detector -* source The monitor will save neutron states -* inactivate To inactivate detector (0D detector) -* verbose To display additional informations -* 3He_pressure=[3 in bars] The 3He gas pressure in detector. 3He_pressure=0 is perfect detector (default) -* -* Detector shape options (specified as xwidth,yheight,zdepth or x/y/z/min/max) -* box Box of size xwidth, yheight, zdepth. -* cylinder To get a cylindrical monitor (diameter is xwidth or set radius, height is yheight). -* banana Same as cylinder, without top/bottom, on restricted angular area; use theta variable with limits to define arc. (diameter is xwidth or set radius, height is yheight). -* disk Disk flat xy monitor. diameter is xwidth. -* sphere To get a spherical monitor (e.g. a 4PI) (diameter is xwidth or set radius). -* square Square flat xy monitor (xwidth, yheight). -* previous The monitor uses PREVIOUS component as detector surface. Or use 'geometry' parameter to specify any PLY/OFF geometry file. -* -* EXAMPLES: -*
    -*
  • MyMon = Monitor_nD(xwidth = 0.1, yheight = 0.1, zdepth = 0, -*   options = "intensity per cm2 angle,limits=[-5 5] bins=10,with -*   borders, file = mon1"); -* will monitor neutron angle from [z] axis, between -5 -* and 5 degrees, in 10 bins, into "mon1.A" output 1D file -* -*
  • options = "sphere theta phi outgoing" -* for a sphere PSD detector (out beam) and saves into file "MyMon_[Date_ID].th_ph" -* -*
  • options = "banana, theta limits=[10,130], bins=120, y" -* a theta/height banana detector -* -*
  • options = "angle radius all auto" -* is a 2D monitor with automatic limits -* -*
  • options = "list=1000 kx ky kz energy" -* records 1000 neutron event in a file -* -*
  • options = "multiple kx ky kz, auto abs log t, and list all neutrons" -* makes 4 output 1D files and produces a complete list for all neutrons -* and monitor log(abs(tof)) within automatic limits (for t) -* -*
  • options = "theta y, sphere, pixel min=100" -* a 4pi detector which outputs an event list with pixelID from the actual -* detector surface, starting from index 100. -* -*
-* To dynamically define a number of bins, or limits: -* Use in DECLARE: char op[256]; -* Use in INITIALIZE: sprintf(op, "lambda limits=[%g %g], bins=%i", lmin, lmax, lbin); -* Use in TRACE: Monitor_nD(... options=op ...) -* -* How to monitor any instrument/component variable into a Monitor_nD -* Suppose you want to monitor a variable 'age' which you assign somwhere in -* the instrument: -* COMPONENT MyMonitor = Monitor_nD( -* xwidth = 0.1, yheight = 0.1, -* user1="age", username1="Age of the Captain [years]", -* options="user1, auto") -* AT ... -* -* See also the example in PreMonitor_nD to -* monitor neutron parameters cross-correlations. -* -* %BUGS -* The 'auto' option for guessing optimal variable bounds should NOT be used with MPI -* as each process may use different limits. -* -* %Parameters -* INPUT PARAMETERS: -* -* xwidth: [m] Width of detector. -* yheight: [m] Height of detector. -* zdepth: [m] Thickness of detector (z). -* radius: [m] Radius of sphere/banana shape monitor -* options: [str] String that specifies the configuration of the monitor. The general syntax is "[x] options..." (see Descr.). -* -* Optional input parameters (override xwidth yheight zdepth): -* xmin: [m] Lower x bound of opening -* xmax: [m] Upper x bound of opening -* ymin: [m] Lower y bound of opening -* ymax: [m] Upper y bound of opening -* zmin: [m] Lower z bound of opening -* zmax: [m] Upper z bound of opening -* filename: [str] Output file name (overrides file=XX option). -* bins: [1] Number of bins to force for all variables. Use 'bins' keyword in 'options' for heterogeneous bins -* min: [u] Minimum range value to force for all variables. Use 'min' or 'limits' keyword in 'options' for other limits -* max: [u] Maximum range value to force for all variables. Use 'max' or 'limits' keyword in 'options' for other limits -* user1: [str] Variable name of USERVAR to be monitored by user1. -* user2: [str] Variable name of USERVAR to be monitored by user2. -* user3: [str] Variable name of USERVAR to be monitored by user3. -* username1: [str] Name assigned to User1 -* username2: [str] Name assigned to User2 -* username3: [str] Name assigned to User3 -* restore_neutron: [0|1] If set, the monitor does not influence the neutron state. Equivalent to setting the 'parallel' option. -* geometry: [str] Name of an OFF file to specify a complex geometry detector -* nowritefile: [1] If set, monitor will skip writing to disk -* -* CALCULATED PARAMETERS: -* -* DEFS: [struct] structure containing Monitor_nD Defines -* Vars: [struct] structure containing Monitor_nD variables -* -* %Link -* PreMonitor_nD -* -* %End -******************************************************************************/ -DEFINE COMPONENT Monitor_nD - -SETTING PARAMETERS ( - string user1="", string user2="", string user3="", - xwidth=0, yheight=0, zdepth=0, - xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0, - int bins=0, min=-1e40, max=1e40, int restore_neutron=0, radius=0, - string options="NULL", string filename="NULL",string geometry="NULL", int nowritefile=0, - string username1="NULL", string username2="NULL", string username3="NULL", - int tsplit=0, int adaptive_target=0 -) -/* these are protected C variables */ - -/* Neutron parameters: (x,y,z,vx,vy,vz,t,sx,sy,sz,p) */ - -SHARE -%{ - %include "monitor_nd-lib" - %include "read_table-lib" - %include "interoff-lib" -%} - -DECLARE -%{ - MonitornD_Defines_type DEFS; - MonitornD_Variables_type Vars; - MCDETECTOR detector; - off_struct offdata; -%} - -INITIALIZE -%{ - char tmp[CHAR_BUF_LENGTH]; - strcpy (Vars.compcurname, NAME_CURRENT_COMP); - Vars.compcurindex = INDEX_CURRENT_COMP; - if (options != NULL) - strncpy (Vars.option, options, CHAR_BUF_LENGTH); - else { - strcpy (Vars.option, "x y"); - printf ("Monitor_nD: %s has no option specified. Setting to PSD ('x y') monitor.\n", NAME_CURRENT_COMP); - } - Vars.compcurpos = POS_A_CURRENT_COMP; - - if (strstr (Vars.option, "source")) - strcat (Vars.option, " list, x y z vx vy vz t sx sy sz "); - - if (bins) { - sprintf (tmp, " all bins=%ld ", (long)bins); - strcat (Vars.option, tmp); - } - if (min > -FLT_MAX && max < FLT_MAX) { - sprintf (tmp, " all limits=[%g %g]", min, max); - strcat (Vars.option, tmp); - } else if (min > -FLT_MAX) { - sprintf (tmp, " all min=%g", min); - strcat (Vars.option, tmp); - } else if (max < FLT_MAX) { - sprintf (tmp, " all max=%g", max); - strcat (Vars.option, tmp); - } - - /* transfer, "zero", and check username- and user variable strings to Vars struct*/ - strncpy (Vars.UserName1, username1&& strlen (username1) && strcmp (username1, "0") && strcmp (username1, "NULL") ? username1 : "", 128); - strncpy (Vars.UserName2, username2&& strlen (username2) && strcmp (username2, "0") && strcmp (username2, "NULL") ? username2 : "", 128); - strncpy (Vars.UserName3, username3&& strlen (username3) && strcmp (username3, "0") && strcmp (username3, "NULL") ? username3 : "", 128); - if (user1 && strlen (user1) && strcmp (user1, "0") && strcmp (user1, "NULL")) { - strncpy (Vars.UserVariable1, user1, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable1, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user1=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user1); - } - } - if (user2 && strlen (user2) && strcmp (user2, "0") && strcmp (user2, "NULL")) { - strncpy (Vars.UserVariable2, user2, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable2, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user2=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user2); - } - } - if (user3 && strlen (user3) && strcmp (user3, "0") && strcmp (user3, "NULL")) { - strncpy (Vars.UserVariable3, user3, 128); - int fail; - _class_particle testparticle; - particle_getvar (&testparticle, Vars.UserVariable3, &fail); - if (fail) { - fprintf (stderr, "Warning (%s): user3=%s is unknown. The signal will not be resolved - this is likely not what you intended.\n", NAME_CURRENT_COMP, user3); - } - } - - /*sanitize parameters set for curved shapes*/ - if (strstr (Vars.option, "cylinder") || strstr (Vars.option, "banana") || strstr (Vars.option, "sphere")) { - /*this _is_ an explicit curved shape. Should have a radius. Inherit from xwidth or zdepth (diameters), x has precedence.*/ - if (!radius) { - if (xwidth) { - radius = xwidth / 2.0; - } else { - radius = zdepth / 2.0; - } - } else { - xwidth = 2 * radius; - } - if (!yheight) { - /*if not set - use the diameter as height for the curved object. This will likely only happen for spheres*/ - yheight = 2 * radius; - } - } else if (radius) { - /*radius is set - this must be a curved shape. Infer shape from yheight, and set remaining values - (xwidth etc. They are used inside monitor_nd-lib.*/ - xwidth = zdepth = 2 * radius; - if (yheight) { - /*a height is given (and no shape explitly set - assume cylinder*/ - strcat (Vars.option, " banana"); - } else { - strcat (Vars.option, " sphere"); - yheight = 2 * radius; - } - } - - int offflag = 0; - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - #ifndef USE_OFF - fprintf (stderr, "Error: You are attempting to use an OFF geometry without -DUSE_OFF. You will need to recompile with that define set!\n"); - exit (-1); - #else - if (!off_init (geometry, xwidth, yheight, zdepth, 1, &offdata)) { - printf ("Monitor_nD: %s could not initiate the OFF geometry %s. \n" - " Defaulting to normal Monitor dimensions.\n", - NAME_CURRENT_COMP, geometry); - strcpy (geometry, ""); - } else { - offflag = 1; - } - #endif - } - - if (!radius && !xwidth && !yheight && !zdepth && !xmin && !xmax && !ymin && !ymax && !strstr (Vars.option, "previous") && (!geometry || !strlen (geometry))) - exit (printf ("Monitor_nD: %s has no dimension specified. Aborting (radius, xwidth, yheight, zdepth, previous, geometry).\n", NAME_CURRENT_COMP)); - - Monitor_nD_Init (&DEFS, &Vars, xwidth, yheight, zdepth, xmin, xmax, ymin, ymax, zmin, zmax, offflag); - - if (Vars.Flag_OFF) { - offdata.mantidflag = Vars.Flag_mantid; - offdata.mantidoffset = Vars.Coord_Min[Vars.Coord_Number - 1]; - } - - if (filename && strlen (filename) && strcmp (filename, "NULL") && strcmp (filename, "0")) - strncpy (Vars.Mon_File, filename, 128); - - /* check if user given filename with ext will be used more than once */ - if (((Vars.Flag_Multiple && Vars.Coord_Number > 1) || Vars.Flag_List) && strchr (Vars.Mon_File, '.')) { - char* XY; - XY = strrchr (Vars.Mon_File, '.'); - *XY = '_'; - } - - if (restore_neutron) - Vars.Flag_parallel = 1; - detector.m = 0; - - #ifdef USE_MPI - MPI_MASTER (if (strstr (Vars.option, "auto") && mpi_node_count > 1) - printf ("Monitor_nD: %s is using automatic limits option 'auto' together with MPI.\n" - "WARNING this may create incorrect distributions (but integrated flux will be right).\n", - NAME_CURRENT_COMP);); - #else - #ifdef OPENACC - if (strstr (Vars.option, "auto")) - printf ("Monitor_nD: %s is requesting automatic limits option 'auto' together with OpenACC.\n" - "WARNING this feature is NOT supported using OpenACC and has been disabled!\n", - NAME_CURRENT_COMP); - #endif - #endif -%} - -TRACE -%{ - double transmit_he3 = 1.0; - double multiplier_capture = 1.0; - double t0 = 0; - double t1 = 0; - int pp; - int intersect = 0; - char Flag_Restore = 0; - - #ifdef OPENACC - #ifdef USE_OFF - off_struct thread_offdata = offdata; - #endif - #else - #define thread_offdata offdata - #endif - - //double *pp_array=malloc(sizeof(double)*N_trains); - double pp_this; - double pp_total=0; - /* this is done automatically - STORE_NEUTRON(INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - */ - #ifdef USE_OFF - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - /* determine intersections with object */ - intersect = off_intersect_all (&t0, &t1, NULL, NULL, x, y, z, vx, vy, vz, 0, 0, 0, &thread_offdata); - if (Vars.Flag_mantid) { - if (intersect) { - Vars.OFF_polyidx = thread_offdata.nextintersect; - } else { - Vars.OFF_polyidx = -1; - } - } - } else - #endif - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_DISK)) /* square xy or disk xy */ - { - // propagate to xy plane and find intersection - // make sure the event is recoverable afterwards - t0 = t; - ALLOW_BACKPROP; - PROP_Z0; - if ((t >= t0) && (z == 0.0)) // forward propagation to xy plane was successful - { - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SQUARE) { - // square xy - intersect = (x >= Vars.mxmin && x <= Vars.mxmax && y >= Vars.mymin && y <= Vars.mymax); - } else { - // disk xy - intersect = (SQR (x) + SQR (y)) <= SQR (Vars.Sphere_Radius); - } - } else { - intersect = 0; - } - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) /* sphere */ - { - intersect = sphere_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius); - /* intersect = (intersect && t0 > 0); */ - } else if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA)) /* cylinder */ - { - intersect = cylinder_intersect (&t0, &t1, x, y, z, vx, vy, vz, Vars.Sphere_Radius, Vars.Cylinder_Height); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) /* box */ - { - intersect = box_intersect (&t0, &t1, x, y, z, vx, vy, vz, fabs (Vars.mxmax - Vars.mxmin), fabs (Vars.mymax - Vars.mymin), fabs (Vars.mzmax - Vars.mzmin)); - } else if (abs (Vars.Flag_Shape) == DEFS.SHAPE_PREVIOUS) /* previous comp */ - { - intersect = 1; - } - - if (intersect) { - if ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX) - || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) || (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL"))) { - /* check if we have to remove the top/bottom with BANANA shape */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA) { - if (intersect == 1) { // Entered and left through sides - if (t0 < 0 && t1 > 0) { - t0 = t; /* neutron was already inside ! */ - } - if (t1 < 0 && t0 > 0) { /* neutron exit before entering !! */ - t1 = t; - } - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 3 || intersect == 5) { // Entered from top or bottom, left through side - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - PROP_DT (t1); /* t1 outgoing beam */ - } else { - intersect = 0; - Flag_Restore = 1; - } - } else if (intersect == 9 || intersect == 17) { // Entered through side, left from top or bottom - if ((Vars.Flag_Shape < 0) && (t1 > 0)) { - intersect = 0; - Flag_Restore = 1; - } else { - PROP_DT (t0); /* t0 incoming beam */ - } - } else if (intersect == 13 || intersect == 19) { // Went through top/bottom on entry and exit - intersect = 0; - Flag_Restore = 1; - } else { - printf ("Cylinder_intersect returned unexpected value %i\n", intersect); - } - } else { - // All other shapes than the BANANA - if (t0 < 0 && t1 > 0) - t0 = t; /* neutron was already inside ! */ - if (t1 < 0 && t0 > 0) /* neutron exit before entering !! */ - t1 = t; - /* t0 is now time of incoming intersection with the detection area */ - if ((Vars.Flag_Shape < 0) && (t1 > 0)) - PROP_DT (t1); /* t1 outgoing beam */ - else - PROP_DT (t0); /* t0 incoming beam */ - } - - /* Final test if we are on lid / bottom of banana/sphere */ - if (abs (Vars.Flag_Shape) == DEFS.SHAPE_BANANA || abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) { - if (Vars.Cylinder_Height && fabs (y) >= Vars.Cylinder_Height / 2 - FLT_EPSILON) { - intersect = 0; - Flag_Restore = 1; - } - } - } - } - - if (intersect) { - /* Now get the data to monitor: current or keep from PreMonitor */ - /* if (Vars.Flag_UsePreMonitor != 1)*/ - /* {*/ - /* Vars.cp = p;*/ - /* Vars.cx = x;*/ - /* Vars.cvx = vx;*/ - /* Vars.csx = sx;*/ - /* Vars.cy = y;*/ - /* Vars.cvy = vy;*/ - /* Vars.csy = sy;*/ - /* Vars.cz = z;*/ - /* Vars.cvz = vz;*/ - /* Vars.csz = sz;*/ - /* Vars.ct = t;*/ - /* }*/ - - if ((Vars.He3_pressure > 0) && (t1 != t0) - && ((abs (Vars.Flag_Shape) == DEFS.SHAPE_SPHERE) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_CYLIND) || (abs (Vars.Flag_Shape) == DEFS.SHAPE_BOX))) { - transmit_he3 = exp (-7.417 * Vars.He3_pressure * fabs (t1 - t0) * 2 * PI * K2V); - /* will monitor the absorbed part */ - p = p * (1 - transmit_he3); - } - - if (Vars.Flag_capture) { - multiplier_capture = V2K * sqrt (vx * vx + vy * vy + vz * vz); - if (multiplier_capture != 0) - multiplier_capture = 2 * PI / multiplier_capture; /* lambda. lambda(2200 m/2) = 1.7985 Angs */ - p = p * multiplier_capture / 1.7985; - } - - - int train_index; - double p_original = p; - double p_factor = p/P_last_time_manipulation; - - if (adaptive_target) { - #pragma acc atomic - total_N_sent += adaptive_N; - #pragma acc atomic - total_rays_sent++; - } - - if (tsplit==1) { - double t_original = t; - for (train_index=0; train_index 0) { - p = p_factor*p_trains[train_index]; - t = t_original + t_offset[train_index]; - - //pp_array[train_index] - pp_this = Monitor_nD_Trace (&DEFS, &Vars, _particle); - - if (adaptive_target) total_arrived++; - - } else pp_this = 0;//pp_array[train_index] = 0; - pp_total+=pp_this; - } - p = p_original; - t = t_original; - - //int pp_total = 0; - //for (train_index=0; train_index 0) { - SCATTER; - } - - } else { - - /* - // Now just use normal p - double total_p = 0; - for (train_index=0; train_index 0) { - /* after monitor, only remains 1-p_detect */ - p = p * transmit_he3 / (1.0 - transmit_he3); - } - - if (Vars.Flag_capture) { - p = p / multiplier_capture * 1.7985; - } - - if (Vars.Flag_parallel) /* back to neutron state before detection */ - Flag_Restore = 1; - } /* end if intersection */ - else { - if (Vars.Flag_Absorb && !Vars.Flag_parallel) { - // restore neutron ray before absorbing for correct mcdisplay - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - ABSORB; - } else - Flag_Restore = 1; /* no intersection, back to previous state */ - } - - if (Flag_Restore) { - RESTORE_NEUTRON (INDEX_CURRENT_COMP, x, y, z, vx, vy, vz, t, sx, sy, sz, p); - } -%} - -SAVE -%{ - if (!nowritefile) { - /* save results, but do not free pointers */ - detector = Monitor_nD_Save (&DEFS, &Vars); - } -%} - -FINALLY -%{ - /* free pointers */ - Monitor_nD_Finally (&DEFS, &Vars); -%} - -MCDISPLAY -%{ - if (geometry && strlen (geometry) && strcmp (geometry, "0") && strcmp (geometry, "NULL")) { - off_display (offdata); - } else { - Monitor_nD_McDisplay (&DEFS, &Vars); - } -%} - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/MultiDiskChopper.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/MultiDiskChopper.comp deleted file mode 100644 index 82b28b3944..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/MultiDiskChopper.comp +++ /dev/null @@ -1,361 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2015, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: MultiDiskChopper -* -* %I -* Written by: Markus Appel -* Date: 2015-10-19 -* Origin: ILL / FAU Erlangen-Nuernberg -* Based on DiskChopper (Revision 1.18) by Peter Willendrup (2006), -* which in turn is based on Chopper (Philipp Bernhardt), Jitter and beamstop from work by -* Kaspar Hewitt Klenoe (jan 2006), adjustments by Rob Bewey (march 2006) -* -* %D -* Models a disk chopper with a freely configurable slit pattern. For simple applications, -* use the DiskChopper component and see the component manual example of DiskChopper GROUPing. -* If the chopper slit pattern should be dynamically configurable or a complicated pattern -* is to be used as first chopper on a continuous source, use this component. -* -* Width and position of the slits is defined as a list in string parameters so -* they can easily be taken from instrument parameters. -* The chopper axis is located on the y axis as defined by the parameter delta_y. -* When the chopper is the first chopper after a continuous (i.e. time-independent) -* source, the parameter isfirst should be set to 1 to increase Monte-Carlo efficiency. -* -* -* Examples (see parameter definitions for details): -* Two opposite slits with 10 and 20deg opening, with the 20deg slit in the beam at t=0.02: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, delay=0.02) -* -* First chopper on a continuous source, creating pulse trains for one additional revolution -* before and after the revolution at t=0: -* MultiDiskChopper(radius=0.2, slit_center="0;180", slit_width="10;20", delta_y=-0.1, -* nu=302, nslits=2, phase=180, isfirst=1, nrev=1) -* -* %P -* INPUT PARAMETERS: -* -* slit_width: [string] (deg) Angular width of the slits, given as list in a string separated by space ' ', comma ',', underscore '_' or semicolon ';'. Example: "0;20;90;135;270" -* slit_center: [string] (deg) Angular position of the slits (similar to slit_width) -* nslits: [] Number of slits to read from slit_width and slit_center -* radius: [m] Outer radius of the disk -* delta_y: [m] y-position of the chopper rotation axis. If the chopper is located above the guide (delta_y>0), the coordinate system will be mirrored such that the created pulse pattern in time is the same as for delta_y<0. A warning will be printed in this case. -* nu: [Hz] Rotation speed of the disk, the sign determines the direction. -* -* Optional parameters: -* verbose: [0/1] Set to 1 to display more information during the simulation. -* phase: [deg] Phase angle located on top of the disk at t=delay (see below). -* delay: [s] Time delay of the chopper clock. -* NOTE: In contrast to the DiskChopper component, the effect of phase and delay are cumulative, and both can be specified. -* jitter: [s] Jitter in the time phase. -* abs_out: If 1, absorb all neutrons outside the disk diameter. -* isfirst: [0/1] Set to 1 for the first chopper after a continuous source. The neutron events -* will be shifted in time to pass the component (with adapted weight). -* -* Additional parameters when isfirst=1 (that have no effect for isfirst=0): -* equal: [0/1] When isfirst=1: If 0, the neutron events will be distributed between different slits proportional to the slit size. If 1, the events will be distributed such that each slit transmits the same number of events. This parameter can be used to achieve comparable simulation statistics over different pulses when simulating small and large slits together. -* nrev: [ ] When isfirst=1: Number of *additional* disk revolutions before *and* after the one around t=delay to distribute events on. If set to 2 for example, there will be 2 leading, 1 central, and 2 trailing revolutions of the disk (2*nrev+1 in total). -* ratio: [ ] When isfirst=1: Spacing of the additional revolutions from the parameter nrev from the central revolution. -* -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT MultiDiskChopper - -SETTING PARAMETERS (string slit_center="0 180", string slit_width="10 20", nslits=2, delta_y=-0.3, nu=0, nrev=0, ratio=1, jitter=0, delay=0, isfirst=0, phase=0, radius = 0.375, equal=0, abs_out=0, verbose=0) - - -DECLARE -%{ - double T; - double To; - double omega; - double* dslit_center; - double* dhslit_width; - double* t0; - double* t1; -%} - -INITIALIZE -%{ - char* pch; - int i; - double sense; - - phase = remainder (phase, 360.0) * DEG2RAD; - omega = 2.0 * PI * nu; /* rad/s */ - sense = (omega < 0) ? -1 : 1; - - if (isfirst && (nrev - floor (nrev) != 0)) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: wrong First chopper revolution number, must be integer (nrev=%g)\n", NAME_CURRENT_COMP, nrev);) - exit (-1); - } - - if (!omega) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: chopper frequency is 0!\n", NAME_CURRENT_COMP);) - omega = 1e-15; /* We should actually use machine epsilon here... */ - } - - if (nslits <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: nslits must be > 0\n", NAME_CURRENT_COMP); exit (-1);) - } - - // Read slits in array - dslit_center = malloc (nslits * sizeof (*dslit_center)); - pch = strtok (slit_center, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_center: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dslit_center[i] = atof (pch); - pch = strtok (NULL, ";_, "); - - if ((dslit_center[i] < 0)) { - while (dslit_center[i] < 0) { - dslit_center[i] += 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - if ((dslit_center[i] >= 360.0)) { - while (dslit_center[i] >= 360.0) { - dslit_center[i] -= 360.0; - } - - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: WARNING: Slit center No. %d moved to %f\n", NAME_CURRENT_COMP, i + 1, dslit_center[i]);) - } - - dslit_center[i] *= DEG2RAD; - } - - // dhslit_width: HALF slit width - dhslit_width = malloc (nslits * sizeof (*dhslit_width)); - pch = strtok (slit_width, ";_, "); - for (i = 0; i < nslits; i++) { - if (pch == NULL) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Cannot parse slit_width: Not enough values?\n", NAME_CURRENT_COMP);) - exit (-1); - } - dhslit_width[i] = 0.5 * atof (pch); - pch = strtok (NULL, ";_, "); - if (dhslit_width[i] <= 0) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s: Slit no %d has nonpositive width! \n", NAME_CURRENT_COMP, i + 1);) - exit (-1); - } - dhslit_width[i] *= DEG2RAD; - } - - /* Calculate delay from phase and vice versa */ - if (phase) { - if (delay) { - MPI_MASTER (fprintf (stderr, "MultiDiskChopper: %s WARNING: delay AND phase specified. Adding them up.\n", NAME_CURRENT_COMP);) - } - phase -= delay * omega; - delay = -phase / omega; - } else { - phase = delay * omega; - } - - /* Time for 1 revolution */ - T = 2.0 * PI / fabs (omega); - - // calculate arrays of times t0 and t1 which allow for easy randomization in TRACE - - /* To: How long can neutrons pass the Chopper at a single point during one revolution through any slit */ - - // generate times t1: duration of slit openings (or their cumulative sum if !equal) - // dhslit_width is already in rad - t1 = malloc (nslits * sizeof (*t1)); - t1[0] = 2.0 * dhslit_width[0] / fabs (omega); - To = t1[0]; // To: Cumulated opening time in a single point during one revolution through any slit - - for (i = 1; i < nslits; i++) { - t1[i] = (equal ? 0 : t1[i - 1]) + (2.0 * dhslit_width[i] / fabs (omega)); - To += (2.0 * dhslit_width[i] / fabs (omega)); - } - - // generate times t0 = time when slit i starts opening (at top of the disk) (minus t1[i-1] if !equal) - t0 = malloc (nslits * sizeof (*t0)); - t0[0] = (sense * remainder (dslit_center[0] - phase, 2 * PI) - dhslit_width[0]) / fabs (omega); - - for (i = 1; i < nslits; i++) { - t0[i] = (sense * remainder (dslit_center[i] - phase, 2 * PI) - dhslit_width[i]) / fabs (omega) - (equal ? 0 : t1[i - 1]); - } - - MPI_MASTER (if (verbose) { - printf ("MultiDiskChopper: %s: \n", NAME_CURRENT_COMP); - printf (" --- frequency=%g [Hz] %g [rpm], delay=%g [s], phase=%g [deg]\n", nu, nu * 60, delay, phase * RAD2DEG); - printf (" --- vertical axis offset=%g [m] To=%g [s], T=%g [s]\n", delta_y, To, T); - - if (isfirst && equal) - printf (" --- first chopper distributing events equally on all slits\n"); - - if (isfirst && !equal) - printf (" --- first chopper distributing events proportional to slit size\n"); - - if (isfirst) - printf (" --- adding +-%g disk revolutions at ratio %g\n", nrev, ratio); - - printf (" --- Slit center [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", dslit_center[i] * RAD2DEG); - printf ("\n"); - printf (" --- Slit width [deg]:"); - for (i = 0; i < nslits; i++) - printf (" %6.2f", 2.0 * dhslit_width[i] * RAD2DEG); - printf ("\n"); - - // dump internal arrays for debugging - if (verbose == 2) { - printf (" --- Internal arrays:\n"); - printf (" --- i t0 t1 dslit_center dhslit_width\n"); - for (i = 0; i < nslits; i++) { - printf (" --- %02d %+.4e %+.4e %+.4e %+.4e\n", i, t0[i], t1[i], dslit_center[i], dhslit_width[i]); - } - } - }) - %} - -TRACE -%{ - double phi; - double xprime, yprime; - double toff; - int irev, islit; - - // Propagate into the chopper disk plane - PROP_Z0; - - if (delta_y > 0) { - // 'anormal' case, chopper above guide - // mirror coordinate system - xprime = -x; - yprime = -y + delta_y; - } else { - // 'normal' case, chopper below guide - xprime = x; - yprime = y - delta_y; - } - - // Is neutron transmitted/absorbed outside the disk diameter ? - if ((SQR (xprime) + SQR (yprime)) > SQR (radius)) - if (abs_out) { - ABSORB; - } else { - SCATTER; - } - else { - if (isfirst) { - irev = (nrev > 0 ? ratio * (floor ((2 * nrev + 1) * rand01 ()) - nrev) : 0); - - if (equal) { - // Distribute neutrons equally over slits - t = rand01 () * nslits; - islit = (t == nslits) ? nslits - 1 : floor (t); - t = (t - islit) * t1[islit]; - - p *= t1[islit] / T * nslits; - } else { - // Distribute neutrons proportional to slit size - t = rand01 () * To; - islit = 0; - while (t1[islit] < t) - islit++; - - /* weight correction: chopper slits transmission opening time per full revolution time */ - p *= To / T; - } - - // offset time stamp according to slit phase, neutron position and jitter - t += t0[islit] - atan2 (xprime, yprime) / omega + irev * T + (jitter ? jitter * randnorm () : 0); - - } else { - - // Check whether each t_offset carried by the ray make it through - double weight_update = p/P_last_time_manipulation; - P_last_time_manipulation = 0; - - int train_index; - int one_did_hit = 0; - int this_t_hit; - double this_train_t; - int all_dead = 1; - double p_total = 0; - for (train_index=0; train_index=1) -AT (0, 0, 0) RELATIVE bp1_position -ROTATED (0, 0, 180) RELATIVE bp1_position - -COMPONENT g2b1 = Guide_four_side( - w1l = 0.02521, linwl = 1.4502500000000005, - loutwl = 11.14005, w1r = 0.02521, - linwr = 1.4502500000000005, loutwr = 11.14005, - h1u = 0.031505, linhu = 8.45025, - louthu = 27.140050000000002, h1d = 0.031505, - linhd = 8.45025, louthd = 27.140050000000002, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.446250000000001) RELATIVE optical_axis - -COMPONENT g2b2 = Guide_four_side( - w1l = 0.02811, linwl = 1.8707999999999991, - loutwl = 9.67745, w1r = 0.02811, - linwr = 1.8707999999999991, loutwr = 9.67745, - h1u = 0.03203, linhu = 8.8708, - louthu = 25.67745, h1d = 0.03203, - linhd = 8.8708, louthd = 25.67745, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 8.8668) RELATIVE optical_axis - -COMPONENT g2b3 = Guide_four_side( - w1l = 0.03493, linwl = 3.3230500000000003, - loutwl = 8.2252, w1r = 0.03493, - linwr = 3.3230500000000003, loutwr = 8.2252, - h1u = 0.033615, linhu = 10.32305, - louthu = 24.2252, h1d = 0.033615, - linhd = 10.32305, louthd = 24.2252, - l = 1.4517500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 10.31905) RELATIVE optical_axis - -COMPONENT g2b4 = Guide_four_side( - w1l = 0.03862, linwl = 4.7858, - loutwl = 7.804500000000001, w1r = 0.03862, - linwr = 4.7858, loutwr = 7.804500000000001, - h1u = 0.03488, linhu = 11.7858, - louthu = 23.8045, h1d = 0.03488, - linhd = 11.7858, louthd = 23.8045, - l = 0.40969999999999906, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 2, - myd = 2) -AT (0, 0, 11.7818) RELATIVE optical_axis - -COMPONENT fo2_position = Arm() -AT (0, 0, 12.2) RELATIVE optical_axis - -COMPONENT fo_chopper_2 = MultiDiskChopper( - slit_center = "-127.07;165.08;101.46;41.97;-13.98;-67.15", slit_width = "32.9;33.54;34.15;34.37;34.89;34.31", - nslits = 6, delta_y = -0.46, - nu = -42.0, jitter = jitter_fo_chopper_2, - phase = fo2_phase, radius = 0.5) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo2_position -ROTATED (0, 0, 180) RELATIVE fo2_position - -COMPONENT bp2_position = Arm() -AT (0, 0, 12.25) RELATIVE optical_axis - -COMPONENT bp_chopper2 = DiskChopper( - theta_0 = 67.49, radius = 0.5, - yheight = 0.08, nu = bp_frequency, - nslit = 1, jitter = jitter_bp2, - phase = bp2_phase -141.795) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE bp2_position -ROTATED (0, 0, 180) RELATIVE bp2_position - -COMPONENT g2c1 = Guide_four_side( - w1l = 0.03929, linwl = 5.250249999999999, - loutwl = 6.536899999999999, w1r = 0.03929, - linwr = 5.250249999999999, loutwr = 6.536899999999999, - h1u = 0.03488, linhu = 12.25025, - louthu = 22.5369, h1d = 0.03488, - linhd = 12.25025, louthd = 22.5369, - l = 1.2128500000000013, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 12.254249999999999) RELATIVE optical_axis - -COMPONENT t0_start_position = Arm() -AT (0, 0, 13.503) RELATIVE optical_axis - -COMPONENT t0_chopper_alpha = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_start_position -ROTATED (0, 0, 180) RELATIVE t0_start_position - -COMPONENT t0_end_position = Arm() -AT (0, 0, 13.703) RELATIVE optical_axis - -COMPONENT t0_chopper_beta = DiskChopper( - theta_0 = 294.74, radius = 0.32, - yheight = 0.075, nu = 28.0, - nslit = 1, jitter = jit_t0_sec, - phase = t0_phase + 179.34) -WHEN(choppers>=1) -AT (0, 0, 0) RELATIVE t0_end_position -ROTATED (0, 0, 180) RELATIVE t0_end_position - -COMPONENT g3a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03611, linhu = 13.7559, - louthu = 20.2631, h1d = 0.03611, - linhd = 13.7559, louthd = 20.2631, - l = 1.981, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 13.7379) RELATIVE optical_axis - -COMPONENT g3a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03687, linhu = 15.7409, - louthu = 19.0055, h1d = 0.03687, - linhd = 15.7409, louthd = 19.0055, - l = 1.2535999999999987, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 15.7229) RELATIVE optical_axis - -COMPONENT fo3_position = Arm() -AT (0, 0, 16.9865) RELATIVE optical_axis - -COMPONENT fo_chopper_3 = MultiDiskChopper( - slit_center = "45.00000000000001;-18.050000000000004;-77.18;-132.62;175.39;126.08", slit_width = "40.32;39.61;38.94;38.31;37.72;36.06", - nslits = 6, delta_y = -0.5575, - nu = -28.0, jitter = jitter_fo_chopper_3, - phase = fo3_phase, radius = 0.6) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo3_position -ROTATED (0, 0, 180) RELATIVE fo3_position - -COMPONENT g3b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03711, linhu = 17.0055, - louthu = 18.038, h1d = 0.03711, - linhd = 17.0055, louthd = 18.038, - l = 0.9564999999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 16.9965) RELATIVE optical_axis - -COMPONENT g4a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.2600000000000016, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 17.964) RELATIVE optical_axis - -COMPONENT monitor_2_position = Arm() -AT (0, 0, 19.245) RELATIVE optical_axis - -COMPONENT g4a2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 19.25) RELATIVE optical_axis - -COMPONENT g4a3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.4252499999999984, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 21.25025) RELATIVE optical_axis - -COMPONENT fo4_position = Arm() -AT (0, 0, 23.6855) RELATIVE optical_axis - -COMPONENT fo_chopper_4 = MultiDiskChopper( - slit_center = "50.529999999999994;6.590000000000015;-34.62000000000002;-73.26000000000003;-109.49;-144.01999999999998", slit_width = "32.98;31.82;30.74;29.27;28.77;26.76", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_4, - phase = fo4_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo4_position -ROTATED (0, 0, 180) RELATIVE fo4_position - -COMPONENT g4b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.5565999999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 23.6955) RELATIVE optical_axis - -COMPONENT g4b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.7800000000000011, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 24.2561) RELATIVE optical_axis - -COMPONENT g4b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 2.1380000000000017, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 26.0366) RELATIVE optical_axis - -COMPONENT g4b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2, - myd = 2) -AT (0, 0, 28.1786) RELATIVE optical_axis - -COMPONENT g4b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 1.4049499999999995, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 30.17885) RELATIVE optical_axis - -COMPONENT g4b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, h2u = 0.037165, - h1d = 0.037165, h2d = 0.037165, - l = 0.4106999999999985, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3, - mxl = 3, myu = 2, - myd = 2) -AT (0, 0, 31.5893) RELATIVE optical_axis - -COMPONENT g5a1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037165, linhu = 18.0, - louthu = 17.005499999999998, h1d = 0.037165, - linhd = 18.0, louthd = 17.005499999999998, - l = 0.9945000000000022, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 32.0) RELATIVE optical_axis - -COMPONENT fo5_position = Arm() -AT (0, 0, 33.005) RELATIVE optical_axis - -COMPONENT fo_chopper_5 = MultiDiskChopper( - slit_center = "-163.045;135.725;78.78500000000001;24.70500000000002;-25.574999999999992;-74.86500000000002", slit_width = "50.81;48.55;45.49;41.32;37.45;37.74", - nslits = 6, delta_y = -0.7075, - nu = -14.0, jitter = jitter_fo_chopper_5, - phase = fo5_phase, radius = 0.75) -WHEN(choppers==2) -AT (0, 0, 0) RELATIVE fo5_position -ROTATED (0, 0, 180) RELATIVE fo5_position - -COMPONENT g5b1 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.037105, linhu = 19.005499999999998, - louthu = 14.994750000000003, h1d = 0.037105, - linhd = 19.005499999999998, louthd = 14.994750000000003, - l = 1.9997499999999988, Qcxl = 0.023, - Qcxr = 0.023, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.8, - alphaxr = 1.8, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2, - mxl = 2, myu = 2, - myd = 2) -AT (0, 0, 33.015499999999996) RELATIVE optical_axis - -COMPONENT g5b2 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.036645, linhu = 21.00575, - louthu = 12.994950000000003, h1d = 0.036645, - linhd = 21.00575, louthd = 12.994950000000003, - l = 1.999299999999998, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 35.01575) RELATIVE optical_axis - -COMPONENT g5b3 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.035695, linhu = 23.009500000000003, - louthu = 10.990749999999998, h1d = 0.035695, - linhd = 23.009500000000003, louthd = 10.990749999999998, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 2.5, - mxl = 2.5, myu = 2, - myd = 2) -AT (0, 0, 37.0195) RELATIVE optical_axis - -COMPONENT g5b4 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03423, linhu = 25.009749999999997, - louthu = 8.990499999999997, h1d = 0.03423, - linhd = 25.009749999999997, louthd = 8.990499999999997, - l = 1.999750000000006, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.023, - Qcyd = 0.023, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.8, - alphayd = 1.8, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2, - myd = 2) -AT (0, 0, 39.019749999999995) RELATIVE optical_axis - -COMPONENT g5b5 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.03217, linhu = 27.0135, - louthu = 6.986750000000001, h1d = 0.03217, - linhd = 27.0135, louthd = 6.986750000000001, - l = 1.9997499999999988, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 41.0235) RELATIVE optical_axis - -COMPONENT g5b6 = Guide_four_side( - w1l = 0.04004, w2l = 0.04004, - w1r = 0.04004, w2r = 0.04004, - h1u = 0.029395, linhu = 29.01375, - louthu = 6.5, h1d = 0.029395, - linhd = 29.01375, louthd = 6.5, - l = 0.4862499999999983, Qcxl = 0.0221, - Qcxr = 0.0221, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 1.75, - alphaxr = 1.75, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.0, - mxl = 3.0, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.02375) RELATIVE optical_axis - -COMPONENT g6a1 = Guide_four_side( - w1l = 0.04004, linwl = 6.5, - loutwl = 4.9864999999999995, w1r = 0.04004, - linwr = 6.5, loutwr = 4.9864999999999995, - h1u = 0.02859, linhu = 29.5, - louthu = 4.9864999999999995, h1d = 0.02859, - linhd = 29.5, louthd = 4.9864999999999995, - l = 1.5135000000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 3.5, - mxl = 3.5, myu = 2.5, - myd = 2.5) -AT (0, 0, 43.51) RELATIVE optical_axis - -COMPONENT g6a2 = Guide_four_side( - w1l = 0.038935, linwl = 8.017499999999998, - loutwl = 2.982750000000003, w1r = 0.038935, - linwr = 8.017499999999998, loutwr = 2.982750000000003, - h1u = 0.02567, linhu = 31.0175, - louthu = 2.982750000000003, h1d = 0.02567, - linhd = 31.0175, louthd = 2.982750000000003, - l = 1.9997499999999988, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0221, - Qcyd = 0.0221, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 1.75, - alphayd = 1.75, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 3, - myd = 3) -AT (0, 0, 45.027499999999996) RELATIVE optical_axis - -COMPONENT g6a3 = Guide_four_side( - w1l = 0.03367, linwl = 10.01775, - loutwl = 1.0, w1r = 0.03367, - linwr = 10.01775, loutwr = 1.0, - h1u = 0.02049, linhu = 33.01775, - louthu = 1.0, h1d = 0.02049, - linhd = 33.01775, louthd = 1.0, - l = 1.9822500000000005, Qcxl = 0.0217, - Qcxr = 0.0217, Qcyu = 0.0217, - Qcyd = 0.0217, alphaxl = 2.5, - alphaxr = 2.5, alphayu = 2.5, - alphayd = 2.5, Wxr = 0.015, - Wxl = 0.015, Wyu = 0.015, - Wyd = 0.015, mxr = 4, - mxl = 4, myu = 4, - myd = 4) -AT (0, 0, 47.02775) RELATIVE optical_axis - -COMPONENT guide_end = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT monitor_3_position = Arm() -AT (0, 0, 49.01) RELATIVE optical_axis - -COMPONENT start_backend = Arm() -AT (0, 0, 0) RELATIVE optical_axis - -COMPONENT optical_axis_backend = Arm() -AT (0, 0, 0) RELATIVE start_backend - -COMPONENT pinhole_2 = Slit( - xwidth = 0.03, yheight = 0.03) -AT (0, 0, 50) RELATIVE optical_axis_backend - -COMPONENT graph = Graphite_Diffuser( - xwidth = 0.1, ywidth = 0.1, - thick = 0.2) -AT (0, 0, 50.001) RELATIVE optical_axis_backend - -COMPONENT sample_monitor_arm = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -COMPONENT sample_PSD = Monitor_nD( - filename="image.dat", xwidth=0.3, yheight=0.3, - options="x bins 300 y bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT profile_x = Monitor_nD( - filename="profile_x.dat", xwidth=0.3, yheight=0.3, - options="x bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT profile_y = Monitor_nD( - filename="profile_y.dat", xwidth=0.3, yheight=0.3, - options="y bins 300") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT wavelength = Monitor_nD( - filename="wavelength.dat", xwidth=0.3, yheight=0.3, - options="L bins 300 limits [0.5 10]") -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT tof = Monitor_nD( - filename="time.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15]", - tsplit=1, adaptive_target=1) -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT wavelength_tof = Monitor_nD( - filename="wavelength_tof.dat", xwidth=0.3, yheight=0.3, - options="t bins 300 limits [0, 0.15] L bins 300 limits [0.5 10]", - tsplit=1) -AT (0, 0, 0) RELATIVE sample_monitor_arm - -COMPONENT sample_position = Arm() -AT (0, 0, 60.5) RELATIVE optical_axis_backend - -SAVE -%{ - #ifndef _MSC_EXTENSIONS - MPI_MASTER( - struct timespec ts; - - if (clock_gettime(CLOCK_REALTIME, &ts) != 0) { - perror("clock_gettime"); - exit(EXIT_FAILURE); - } - - double wall_time = ts.tv_sec + ts.tv_nsec * 1e-9; - - FILE *f = fopen("time_spent.txt", "a"); - if (!f) { - perror("fopen"); - exit(EXIT_FAILURE); - } - - fprintf(f, "%.9f\n", wall_time); - fclose(f); - - printf("Final value of adaptive_N=%i\n",adaptive_N); - ); - #endif -%} - -FINALLY -%{ -%} - - -END diff --git a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/bi_spec_ellipse.comp b/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/bi_spec_ellipse.comp deleted file mode 100644 index c24fb3cdea..0000000000 --- a/mcstas-comps/examples/Prototypes/ODIN_TOF_train6/bi_spec_ellipse.comp +++ /dev/null @@ -1,794 +0,0 @@ -/******************************************************************************* -* -* McStas, neutron ray-tracing package -* Copyright (C) 1997-2011, All rights reserved -* Risoe National Laboratory, Roskilde, Denmark -* Institut Laue Langevin, Grenoble, France -* -* Component: Bi-spectral extracion system -* -* %I -* Written by: Manuel Morgano -* Date: April 2015 -* Version: $Revision: 2.3 $ -* Origin: PSI -* Release: McStas 1.12c -* -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* -* %D -* Bi-spectral extraction system consisting of a stack of supermirror and an elliptical feeder. -* The supermirror number can be automatically calculated (setting the number to 0) or given -* Each mirror can be split in submirror pieces, each of them offseted by a constant angle -* Putting the m-coting to 0 means absorbing, putting it to -1 means transparent. -* The feeder's shape is calculated by the distance between the guide entrance and the first focus, -* the distance between the exit and the second focus, the length of the coated part and the opening -* at the entrance. The opening can be calculated automatically and will be equal to the height of the mirror stack. -* User can specify different shapes for the horizontal and the vertical ellipse. -* Setting the m-coating to 0 means absorbing, -1 means transparent. -* If the mirrors are present (m value different than -1), the top part of the ellipse on top of the mirrors is drawn -* but it's transparent. -* In the part of the component common to the ellipses and to the mirrors, only one reflection per submirror is considered. -* Reflectivity is either defined by an analytical model or from a two-columns file with q [Angs-1] as first and R [0-1] as second. -* -* -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %P -* INPUT PARAMETERS: -* -* xheight: (m) height of mirror stack -* ywidth: (m) width of mirror plate -* zlength: (m) length of the mirror -* n_mirror (1) number of mirrors in the ensamble (0 means automatic calculation, 1 is not allowed) -* n_pieces (1) number of straight section per mirror -* tilt (degrees) angle between the mirrors and the horizontal direction -* angular_offset (degrees) angle between subsequent sub-mirrors -* m: (1) m-value of material. Zero means completely absorbing, -1 means transparent. -* R0_m: (1) Low-angle reflectivity -* Qc_m: (AA-1) Critical scattering vector -* alpha_mirror_m: (AA) Slope of reflectivity -* W_m: (AA-1) Width of supermirror cut-off -* reflect_mirror: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* transmit:(1) When true, non reflected neutrons are transmitted through the mirror, instead of being absorbed. -* d_focus_1_x:(m) distance from the horizontal ellipse entrance to the 1st focus. -* d_focus_2_x:(m) distance from the horizontal ellipse exit to the 2nd focus. -* d_focus_1_y:(m) distance from the vertical ellipse entrance to the 1st focus. -* d_focus_2_y:(m) distance from the vertical ellipse exit to the 2nd focus. -* ell_l: (m) length of the coated part of the ellipse -* ell_h: (m) height of the ellipse entrance, 0 will allow auto-calculation of the height to just accommodate the mirrors -* ell_w: (m) width of the ellipse entrance -* ell_m: (1) m-value of the coating of the ellipse -* R0: (1) Low-angle reflectivity -* Qc: (AA-1) Critical scattering vector -* alpha_mirror: (AA) Slope of reflectivity -* W: (AA-1) Width of supermirror cut-off -* reflect: (str) Name of relfectivity file. Format [q(Angs-1) R(0-1)] -* cut: (1) cutoff for lowest reflectivity consideration. -* substrate: (1) if 0 the substrate is transparent, if 1 absorption and incoherent scattering of the substrate is considered. To change the parameters, modify the component file -* -* %D -* Example: bi_spec_ellipse(xheight = 0.1, ywidth = 0.1, zlength = 1, n_mirror = 3,tilt = 5, n_pieces = 1, angular_offset = 0, m = 10,transmit = 1, d_focus_1_x = 2, d_focus_2_x = 0.5,d_focus_1_y = 2, d_focus_2_y = 0.5, ell_l = 2, ell_h = 0.2,ell_w = 0.2, ell_m = -1) -* -* %E -*******************************************************************************/ - -DEFINE COMPONENT bi_spec_ellipse -DEFINITION PARAMETERS () - SETTING PARAMETERS (xheight, ywidth, zlength, n_mirror=0, tilt=0.5, n_pieces=1, angular_offset=0, m=2,R0_m=0.99,Qc_m=0.021,alpha_mirror_m=6.07,W_m=0.003, transmit=1,d_focus_1_x=2.5,d_focus_2_x=5,d_focus_1_y=2.5,d_focus_2_y=5,ell_l=3,ell_h=0,ell_w=0,ell_m=2,R0=0.99,Qc=0.0217,alpha_mirror=6.07,W=0.003,cut=3,substrate=0, string reflect_mirror=0, string reflect=0) -OUTPUT PARAMETERS (pTable) -//STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) - -SHARE -%{ -%include "read_table-lib" -%} - -DECLARE -%{ - t_Table pTable; - -%} - -INITIALIZE -%{ - - if (reflect && strlen(reflect)) { - if (Table_Read(&pTable, reflect, 1) <= 0) /* read 1st block data from file into pTable */ - exit(fprintf(stderr,"Mirror: %s: can not read file %s\n", NAME_CURRENT_COMP, reflect)); - } - if (n_mirror==1) - exit(fprintf(stderr,"Please, use simple mirror instead of component: %s \n", NAME_CURRENT_COMP)); - - -%} - -TRACE -%{ - - double Dt, q=0, weight=1, alpha=0,int_x=0,int_y=0,int_z=0,int_t=0,arg_stack=0; - double mirror_gap=1, l_acc=0, l_section=0,h_section=0,sec_pos=0,h_acc=0,sub_thickness=0,sub_abs=0,sub_incoherent=0,eff_thickness=0; - double l_central=0, gamma=0,V=0,lambda=0,r=0,rand_n,xell_int_t=0,yell_int_t=0,m_ell=0; - double f_x=0,f_y=0,z0_x=0,z0_y=0,a_x=0,b_x=0,a_y=0,b_y=0,c1x=0,c2x=0,c3x=0,c1y=0,c2y=0,c3y=0,xell_int_x=0,xell_int_y=0,xell_int_z=0,yell_int_x=0,yell_int_y=0,yell_int_z=0, xdelta=0,ydelta=0,ell_exit_x=0,ell_exit_y=0; - char intersect=0,is_within_bounds=0,xell_intersect=0,yell_intersect=0; - int i=1,j=1; - PROP_Z0; - if(n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatic calulation of number of mirror needed to cover the full height*/ - mirror_gap=xheight/(n_mirror-1); /* calculation of the gaps between mirrors */ - l_section=zlength/n_pieces; /* calculation of the length of each submirror (projected onto the horizontal */ - for(i=floor(n_pieces*0.5);i>0;i--) - sec_pos=sec_pos+l_section*tan((i*angular_offset+tilt)*DEG2RAD); /* start of calculation of the upper mirror upper position */ - sec_pos=sec_pos+0.5*l_section*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - sec_pos=sec_pos+(n_mirror-1)*mirror_gap/2; /* end of calculation of the upper mirror upper position */ - alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; /* tilt of the leftmost submirror */ - l_acc=0; /* keeps track of the neutron z position */ - h_section=l_section*tan(alpha); /* height of the submirror projected on the vertical axis */ - - if (substrate==1) { - sub_thickness=0.02; /* substrate thickness in meters, 0.000525m is the typical silicon wafer thickness */ - sub_abs=0.239; /* substrate absorption cross section (1/m) for 1 AA neutrons */ - sub_incoherent=0; /* substrate incoherent scattering cross section (1/m) */ - } - - - - if ((ell_h==0)&&(alpha>=0)) /* calculation of the ellipse opening if not given by the user */ - ell_h=2*sec_pos; - if ((ell_h==0)&&(alpha<0)) - ell_h=-2*(sec_pos-(n_mirror-1)*mirror_gap); - - /* calculations of the parameters of ellipses in the x direction. Equation is (z-z0)^2/a^2+x^2/b^2=1 */ - f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - z0_x=f_x-d_focus_1_x; - b_x=sqrt((-(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4.0)+sqrt((f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)*(f_x*f_x-z0_x*z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*f_x*f_x/4))/2); - a_x=sqrt(z0_x*z0_x*b_x*b_x/(b_x*b_x-ell_h*ell_h/4)); - - /* same for the ellipse in the y direction. Equation is (z-z0)^2/a^2+y^2/b^2=1 */ - f_y=0.5*(ell_l+d_focus_1_y+d_focus_2_y); - z0_y=f_y-d_focus_1_y; - b_y=sqrt((-(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+sqrt((f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)*(f_y*f_y-z0_y*z0_y-ell_w*ell_w/4)+4*ell_w*ell_w*f_y*f_y/4))/2); - a_y=sqrt(z0_y*z0_y*b_y*b_y/(b_y*b_y-ell_w*ell_w/4)); - for (i=1; i<=n_pieces; i++) { /* cycle trough submirrors */ - for(j=1; j<=n_mirror; j++) { /* cycle through mirrors */ - int_z=((sec_pos-x)/((vx/vz)+tan(alpha)))+l_acc; /* calculation of the point of intersection in the z axis between neutron and submirror */ - int_t=(int_z-z)/vz; /* time for intersection */ - int_x=x+vx*int_t; /* x of intersection */ - int_y=y+vy*int_t; /* y of intersection */ - is_within_bounds=(((int_y<=ywidth/2)&&(int_y>=-ywidth/2))||((int_y>=ywidth/2)&&(int_y<=-ywidth/2))); /* checks if the intersection is within the phisical size of the submirror for x,y and z */ - is_within_bounds=is_within_bounds && (((int_x<=sec_pos)&&(int_x>=sec_pos-h_section))||((int_x>=sec_pos)&&(int_x<=sec_pos-h_section))); - is_within_bounds=is_within_bounds && ((int_z<=l_acc+l_section)&&(int_z>=l_acc)&&(int_z>z)); - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; /* useful for the intersection with the ellipse */ - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * l_acc / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * l_acc * l_acc / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * l_acc * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - - /******************************** INTERSECTION WITH X ELLIPSE **********************************/ - if((xdelta>0)&&(ell_m!=-1)) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse in x*/ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - - - xell_intersect=((xell_int_z<=l_acc+l_section)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); /* conditions for having a valid intersection */ - xell_intersect=xell_intersect && (((xell_int_y<=ell_w/2)&&(xell_int_y>=-ell_w/2))||((xell_int_y>=ell_w/2)&&(xell_int_y<=-ell_w/2))); - xell_intersect=xell_intersect && (((xell_int_x<=ell_h/2)&&(xell_int_x>=-ell_h/2))||((xell_int_x>=ell_h/2)&&(xell_int_x<=-ell_h/2))); - - if(((xell_intersect)&&(xell_int_x<0)&&(m!=-1))||((xell_intersect)&&(m==-1))) { /* to be executed only if there is an intersection, but not in the first top part of the ellipse */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); /* inclination of the ellipse at the intersection */ - if (xell_int_x>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = .5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - - PROP_DT((l_section-xell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - - continue; - } - } - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * l_acc / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * l_acc * l_acc / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * l_acc * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - /******************************** INTERSECTION WITH Y ELLIPSE **********************************/ - if((ydelta>0)&&(ell_m!=-1)) { - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - - yell_intersect=((yell_int_z<=l_acc+l_section)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); /* conditions for having a valid intersection */ - yell_intersect=yell_intersect && (((yell_int_y<=ell_w/2)&&(yell_int_y>=-ell_w/2))||((yell_int_y>=ell_w/2)&&(yell_int_y<=-ell_w/2))); - yell_intersect=yell_intersect && (((yell_int_x<=ell_h/2)&&(yell_int_x>=-ell_h/2))||((yell_int_x>=ell_h/2)&&(yell_int_x<=-ell_h/2))); - - if((yell_intersect)&&(ell_m!=-1)) { /* to be executed only if there is an intersection*/ - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* inclination of the ellipse at the intersection */ - if (yell_int_y>0) - m_ell=-m_ell; - - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - PROP_DT((l_section-yell_int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - continue; - } - } - - - /******************************** INTERSECTION WITH MIRROR STACK **********************************/ - - if((is_within_bounds)&&(m!=-1)) { /* code to be executed if the neutron hits the submirror */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - q=fabs(4*PI*sin(-alpha-gamma)/lambda); /* calculation of neutron q */ - if(m == 0) - ABSORB; - if (reflect_mirror && strlen(reflect_mirror)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { /* reflectivity for the q of the neutorn */ - arg_stack = ((q-m*Qc_m)/W_m); - if(arg_stack < cut) - weight = 0.5*(1.0-tanh(arg_stack))*(1.0-alpha_mirror_m*(q-Qc_m)); /* weight if the mirror has a reflectivity for the q of the neutorn > 1e-cut*/ - else - - { - i++; - j=0; - if (substrate==1) { - eff_thickness=sub_thickness/fabs(sin(-alpha-gamma)); - if (eff_thickness>(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))) - (eff_thickness=(sqrt(sub_thickness*sub_thickness+zlength*zlength/(cos(alpha)*cos(alpha))))); - } - p*=exp(-(eff_thickness)*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); /* transmit if the mirror has a reflectivity for the q of the neutorn < 1e-cut */ - sec_pos=sec_pos-mirror_gap; - intersect=1; - continue; - } - weight *= R0_m; - } - else { /* q <= Qc */ - weight *= R0_m; - } - rand_n = rand01(); /* casting of random number for possibility of inter-mirror propagation */ - - if ((rand_n <= weight)) { /* if the neutron is lucky, it will interact with the mirror check the ARG part*/ - - PROP_DT(int_t); /* propagation to the intersection */ - - SCATTER; - r=-gamma-2*alpha; /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - PROP_DT((l_section-int_z+l_acc)/vz); /* propagation to the next submirror section */ - intersect=1; /* keeps track that an intersection has happened in this group of submirrors */ - } - else if (!transmit) - ABSORB; - else { - p*=exp(-(sub_thickness/cos(alpha+gamma))*(sub_abs*lambda+sub_incoherent)); - PROP_DT((l_section)/vz); - intersect=1; - } - } - sec_pos=sec_pos-mirror_gap; /* x- position of next submirror */ - } - l_acc=l_acc+l_section; /* keeps track of the neutron z position */ - sec_pos=sec_pos+n_mirror*mirror_gap-h_section; /* x- position of next submirror (1st of the next section) */ - alpha=alpha-angular_offset*DEG2RAD; /* tilt of next submirror (1st of the next section) */ - h_section=l_section*tan(alpha); /* x- height of next submirror (1st of the next section) */ - if(!intersect) { /* if in the past section no intersections occurred, propagate the neutron for the full length*/ - PROP_DT(l_section/vz); - intersect=0; /* restores the check of the intersection to 0 */ - } - } /* END OF THE PART COMMON BETWEEN THE MIRRORS AND THE ELLIPSES*/ - Dt=(zlength-z)/vz; - if (Dt>0) - PROP_DT(Dt); /* just in case, propagate the neutron to the end of the mirror stack */ - do { /* this do-while cycle ends when the neutron does not intersect the ellipses anymore */ - - xell_intersect=0; /* recalculate all the intersection with the ellipse with the new posisionts and velocities */ - yell_intersect=0; - - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * x * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - - if((xdelta>0)&&(ydelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the x ellipse ...*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - if((xell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - } - - - if((ydelta>0)&&(xdelta<0)&&(ell_m!=-1)) { /* if the neutron has only intersections with the y ellipse ...*/ - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((yell_intersect)&&(ell_m!=-1)) { /* ... and it's a valid one, then propagate to intersection and reflect */ - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - } - - if((xdelta>0)&&(ydelta>0)&&(ell_m!=-1)) { /* if the neutron can have intersection with both ellipses*/ - - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)); - - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /* intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_z>z)); - if((xell_intersect)&&(!yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the x one, the propagate and reflect */ - PROP_DT(xell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - } - - if((!xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the valid intersection is only with the y one, the propagate and reflect */ - - PROP_DT(yell_int_t); /* propagation to the intersection */ - - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); /* angle at intersection */ - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(-m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma-2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - if((xell_intersect)&&(yell_intersect)&&(ell_m!=-1)) { /* if the neutron intesect both ellipses at valid places */ - - if(xell_int_z0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - - } - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vx=tan(r)*vz; - continue; - - c1y=a_y * a_y * vy * vy / (vz * vz) + b_y * b_y; - c2y=2 * a_y * a_y * y * vy / vz - 2 * vy * vy * a_y * a_y * z / (vz * vz) - 2 * b_y * b_y * z0_y; - c3y=a_y * a_y * y * y + vy * vy * a_y * a_y * z * z / (vz * vz) + b_y * b_y * z0_y * z0_y - b_y * b_y * a_y * a_y - 2 * a_y * a_y * y * z * vy / vz; - ydelta=c2y*c2y-(4*c1y*c3y); - if(ydelta>0) { - yell_int_z=(-c2y+sqrt(ydelta))/(2*c1y); /*intersection with the ellipse */ - if((-c2y-sqrt(ydelta))/(2*c1y) > yell_int_z) /* most poitive intersection with ellipse */ - yell_int_z=(-c2y-sqrt(ydelta))/(2*c1y); - yell_int_t=(yell_int_z-z)/vz; /* time for intersection */ - yell_int_x=x+vx*yell_int_t; /* x of intersection */ - yell_int_y=y+vy*yell_int_t; /* y of intersection */ - yell_intersect=((yell_int_z<=ell_l)&&(yell_int_z>=l_acc)&&(yell_int_t>0)); - if((yell_intersect)&&(yell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - } - - } - } - - if((xell_int_z>yell_int_z)&&(ell_m!=-1)) { - PROP_DT(yell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vy/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_y*(yell_int_z-z0_y)/(a_y*a_y*sqrt(1-(yell_int_z-z0_y)*(yell_int_z-z0_y)/(a_y*a_y))); - if (yell_int_y>0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vy*vy+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - vy=tan(r)*vz; - - continue; - c1x=a_x * a_x * vx * vx / (vz * vz) + b_x * b_x; - c2x=2 * a_x * a_x * x * vx / vz - 2 * vx * vx * a_x * a_x * z / (vz * vz) - 2 * b_x * b_x * z0_x; - c3x=a_x * a_x * x * x + vx * vx * a_x * a_x * z * z / (vz * vz) + b_x * b_x * z0_x * z0_x - b_x * b_x * a_x * a_x - 2 * a_x * a_x * y * z * vx / vz; - xdelta=c2x*c2x-(4*c1x*c3x); - if(xdelta>0) { - xell_int_z=(-c2x+sqrt(xdelta))/(2*c1x); /*intersection with the ellipse */ - if((-c2x-sqrt(xdelta))/(2*c1x) > xell_int_z) /* most poitive intersection with ellipse */ - xell_int_z=(-c2x-sqrt(xdelta))/(2*c1x); - xell_int_t=(xell_int_z-z)/vz; /* time for intersection */ - xell_int_x=x+vx*xell_int_t; /* x of intersection */ - xell_int_y=y+vy*xell_int_t; /* y of intersection */ - xell_intersect=((xell_int_z<=ell_l)&&(xell_int_z>=l_acc)&&(xell_int_z>z)&&(xell_int_t>0)); - if((xell_intersect)&&(xell_int_z>z)&&(ell_m!=-1)) { - PROP_DT(xell_int_t); /* propagation to the intersection */ - V=sqrt(vx*vx+vy*vy+vz*vz); /* calculation of neutron velocity */ - lambda=(2*PI/V2K)/V; /* calculation of lambda */ - gamma=atan(vx/vz); /* angle between the direction of the neutron and the horizontal*/ - m_ell=b_x*(xell_int_z-z0_x)/(a_x*a_x*sqrt(1-(xell_int_z-z0_x)*(xell_int_z-z0_x)/(a_x*a_x))); - if (xell_int_x<0) - m_ell=-m_ell; - q=fabs(4*PI*sin(atan(m_ell)-gamma)/lambda); /* calculation of neutron q */ - if(ell_m == 0) - ABSORB; - if (reflect && strlen(reflect)) - weight = Table_Value(pTable, q, 1); - else if(q > Qc) { - double arg = (q-ell_m*Qc)/W; - if(arg < 10) - weight = 0.5*(1.0-tanh(arg))*(1.0-alpha_mirror*(q-Qc)); - else - ABSORB; /* Cutoff ~ 1E-10 */ - weight *= R0; - } - else { /* q <= Qc */ - weight *= R0; - } - - p *= weight*R0; - SCATTER; - r=-gamma+2*atan(m_ell); /* reflection angle */ - vz=sqrt((vx*vx+vz*vz)/(1+tan(r)*tan(r))); /* new directions */ - } - - } - - - } - - - - - } - }/*end of check of deltas*/ - - - } while(((xell_intersect)||(yell_intersect))&&((xdelta>0)||(ydelta>0))); /*end*/ - r=(ell_l-z)/vz; /**/ - - /*PROP_DT((ell_l-z)/vz);*/ - PROP_DT(r); - -// printf("dt = %f , x = %f , y = %f , z = %f\n",r,x,y,z); - ell_exit_x= b_x * sqrt(fabs(1-(ell_l-z0_x)*(ell_l-z0_x)/(a_x*a_x))); - ell_exit_y= b_y * sqrt(fabs(1-(ell_l-z0_y)*(ell_l-z0_y)/(a_y*a_y))); -// printf("length = %f \n",ell_l); -// printf("ell_exit_x= %f\n",ell_exit_x); -// printf("ell_exit_y = %f\n",ell_exit_y); - if((x>ell_exit_x)||(x<-ell_exit_x)||(y>ell_exit_y)||(y<-ell_exit_y)) - ABSORB; - -%} - -MCDISPLAY -%{ - double draw_mirror_gap, draw_l_section=0,draw_h_acc=0,draw_alpha=0,draw_l_acc=0,draw_l_central=0,draw_sec_pos=0,draw_f_x,draw_z0_x,draw_a_x,draw_b_x,draw_x1=0, draw_z0,draw_z1=0,draw_x2=0,draw_z2=0,draw_ell_exit_x=0,draw_ell_exit_y=0,draw_f_y,draw_z0_y,draw_a_y,draw_b_y,draw_y1=0,draw_y2=0; - int i,j,n_seg; - magnify("xy"); - if (n_mirror==0) - n_mirror=ceil(xheight/(zlength*tan(tilt*DEG2RAD))); /* automatically calculate the number of mirrors to cover the full height */ - draw_mirror_gap=xheight/(n_mirror-1); - draw_l_central=zlength/n_pieces; /* calculation of the length of the central part of the mirror */ - - for(i=floor(n_pieces*0.5);i>0;i--) - draw_h_acc=draw_h_acc+draw_l_central*tan((i*angular_offset+tilt)*DEG2RAD); /* calculation of the central mirror upper position */ - draw_h_acc=draw_h_acc+0.5*draw_l_central*tan(tilt*DEG2RAD)*((int)n_pieces % 2); /* in case of n_pieces odd, add half of the central section's height */ - draw_sec_pos=draw_h_acc+(n_mirror-1)*draw_mirror_gap/2; - draw_alpha=(tilt+angular_offset*floor(n_pieces/2))*DEG2RAD; - if ((ell_h==0)&&(draw_alpha>=0)) - ell_h=2*draw_sec_pos; - if ((ell_h==0)&&(draw_alpha<0)) - ell_h=-2*(draw_sec_pos-(n_mirror-1)*draw_mirror_gap); - - - for (i=1; i<=n_pieces; i++) { - for(j=1; j<=n_mirror; j++) { - multiline(5, (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc, - (double)draw_sec_pos,(double)ywidth/2,(double)draw_l_acc, - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)(draw_sec_pos-draw_l_central*tan(draw_alpha)),(double)(-ywidth/2),(double)(draw_l_acc+draw_l_central), - (double)draw_sec_pos,(double)(-ywidth/2),(double)draw_l_acc); - draw_sec_pos=draw_sec_pos-draw_mirror_gap; - - } - draw_l_acc=draw_l_acc+draw_l_central; /* keeps track of the drawing z position */ - draw_sec_pos=draw_sec_pos+n_mirror*draw_mirror_gap-draw_l_central*tan(draw_alpha); - draw_alpha=draw_alpha-angular_offset*DEG2RAD; - } - - n_seg=1000; - - draw_f_x=0.5*(ell_l+d_focus_1_x+d_focus_2_x); - draw_z0_x=draw_f_x-d_focus_1_x; - draw_b_x=sqrt((-(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+sqrt((draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)*(draw_f_x*draw_f_x-draw_z0_x*draw_z0_x-ell_h*ell_h/4)+4*ell_h*ell_h*draw_f_x*draw_f_x/4))/2); - draw_a_x=sqrt(draw_z0_x*draw_z0_x*draw_b_x*draw_b_x/(draw_b_x*draw_b_x-ell_h*ell_h/4)); - - for (i=1;i